<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>118550</bug_id>
          
          <creation_ts>2013-07-10 23:44:24 -0700</creation_ts>
          <short_desc>ANGLE should be updated</short_desc>
          <delta_ts>2013-07-23 15:34:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>ANGLE</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>907531</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-10 23:44:24 -0700</bug_when>
    <thetext>I have a working build of WebGL on Windows that uses most of ANGLE, so we should included the additional parts of ANGLE.  Before we do this, we may as well update to the latest revision.  

Blink is currently using r2184 of ANGLE.  We&apos;re currently using r1987.  I suggest we update to the latest revision of ANGLE, r2249.

Our current differences from the ANGLE repository are that we used Bison 2.4.2 instead of Bison 2.3 to generate glslang_tab and ExpressionParser cpp and h files, we put #if defined(_MSC_VER) around #pragma warning(disable: 4718) in DependencyGraph.cpp, and we include khrplatform.h instead of KHR/khrplatform.h in ShaderLang.h.  The current revision of ANGLE used Bison 2.4.2 to generate the files, so we won&apos;t need to rerun Bison.  We may as well keep the other two changes for now.

Updating to the latest revision moves DetectRecursion.cpp and DetectRecursion.h to DetectCallDepth.cpp and DetectCallDepth.h and adds builtin_symbol_table.cpp and builtin_symbol_table.h, so I&apos;ve tried to do that by hand with all build systems.  &quot;DetectRecursion&quot; was also in Source\WebCore\WebCore.order, and I&apos;m not sure what that is, so I may have broken whatever that is (Stephanie - you added that).  I would not be surprised if this first patch breaks build systems, but that&apos;s what the EWS system is for.  I don&apos;t want to land a patch that breaks anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907535</commentid>
    <comment_count>1</comment_count>
      <attachid>206429</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-11 00:16:29 -0700</bug_when>
    <thetext>Created attachment 206429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907536</commentid>
    <comment_count>2</comment_count>
      <attachid>206429</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-07-11 00:28:27 -0700</bug_when>
    <thetext>Comment on attachment 206429
Patch

Attachment 206429 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/931496</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907537</commentid>
    <comment_count>3</comment_count>
      <attachid>206429</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-07-11 00:39:58 -0700</bug_when>
    <thetext>Comment on attachment 206429
Patch

Attachment 206429 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1026461</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907543</commentid>
    <comment_count>4</comment_count>
      <attachid>206429</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-07-11 00:54:28 -0700</bug_when>
    <thetext>Comment on attachment 206429
Patch

Attachment 206429 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1058082</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908046</commentid>
    <comment_count>5</comment_count>
      <attachid>206566</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-12 12:38:11 -0700</bug_when>
    <thetext>Created attachment 206566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908057</commentid>
    <comment_count>6</comment_count>
      <attachid>206566</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-07-12 13:16:45 -0700</bug_when>
    <thetext>Comment on attachment 206566
Patch

Attachment 206566 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1067030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908058</commentid>
    <comment_count>7</comment_count>
      <attachid>206566</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-07-12 13:23:19 -0700</bug_when>
    <thetext>Comment on attachment 206566
Patch

Attachment 206566 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1067031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908093</commentid>
    <comment_count>8</comment_count>
      <attachid>206579</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-12 16:30:32 -0700</bug_when>
    <thetext>Created attachment 206579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908096</commentid>
    <comment_count>9</comment_count>
      <attachid>206579</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-07-12 16:35:56 -0700</bug_when>
    <thetext>Comment on attachment 206579
Patch

Attachment 206579 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1064222</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908122</commentid>
    <comment_count>10</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-07-12 20:31:01 -0700</bug_when>
    <thetext>The build error on GTK+ is due to the combination of the bitfields with the enum. I haven&apos;t yet determined if this is a bug in gcc yet, but I did confirm that making the enums members sans bitfields fixed the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908199</commentid>
    <comment_count>11</comment_count>
      <attachid>206620</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-13 15:28:52 -0700</bug_when>
    <thetext>Created attachment 206620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908201</commentid>
    <comment_count>12</comment_count>
      <attachid>206620</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-07-13 15:32:02 -0700</bug_when>
    <thetext>Comment on attachment 206620
Patch

Attachment 206620 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/970772</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908203</commentid>
    <comment_count>13</comment_count>
      <attachid>206620</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-07-13 15:33:53 -0700</bug_when>
    <thetext>Comment on attachment 206620
Patch

Attachment 206620 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1045681</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908204</commentid>
    <comment_count>14</comment_count>
      <attachid>206620</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-07-13 15:35:15 -0700</bug_when>
    <thetext>Comment on attachment 206620
Patch

Attachment 206620 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1066395</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908205</commentid>
    <comment_count>15</comment_count>
      <attachid>206620</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-07-13 15:36:27 -0700</bug_when>
    <thetext>Comment on attachment 206620
Patch

Attachment 206620 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1069137</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908206</commentid>
    <comment_count>16</comment_count>
      <attachid>206622</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-13 15:44:08 -0700</bug_when>
    <thetext>Created attachment 206622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908207</commentid>
    <comment_count>17</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-13 16:21:07 -0700</bug_when>
    <thetext>This is the workaround I did for getting Types.h to compile with GCC:

+#ifdef __GNUC__
+    TBasicType type;
+    TPrecision precision;
+    TQualifier qualifier;
+#else
     TBasicType type      : 6;
     TPrecision precision;
     TQualifier qualifier : 7;
+#endif

Running webgl tests on Mac doesn&apos;t add any failures with this patch, and running Safari with this patch seems to render webgl fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908495</commentid>
    <comment_count>18</comment_count>
      <attachid>206622</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-07-15 13:25:27 -0700</bug_when>
    <thetext>Comment on attachment 206622
Patch

We explicitly use the older Bison so that we don&apos;t commit code with a license that is incompatible with WebKit&apos;s terms. You&apos;ll need to regenerate the files with the older Bison.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908496</commentid>
    <comment_count>19</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-07-15 13:31:26 -0700</bug_when>
    <thetext>i.e. use Bison 2.3, not 2.4x

Otherwise it all looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908499</commentid>
    <comment_count>20</comment_count>
      <attachid>206683</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-15 13:40:28 -0700</bug_when>
    <thetext>Created attachment 206683
changes I made to ANGLE before running bison</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908569</commentid>
    <comment_count>21</comment_count>
      <attachid>206700</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-15 16:31:03 -0700</bug_when>
    <thetext>Created attachment 206700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908572</commentid>
    <comment_count>22</comment_count>
      <attachid>206700</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-07-15 16:35:49 -0700</bug_when>
    <thetext>Comment on attachment 206700
Patch

Attachment 206700 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1067846</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908573</commentid>
    <comment_count>23</comment_count>
      <attachid>206700</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-07-15 16:36:54 -0700</bug_when>
    <thetext>Comment on attachment 206700
Patch

Attachment 206700 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1071599</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908575</commentid>
    <comment_count>24</comment_count>
      <attachid>206700</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-07-15 16:40:47 -0700</bug_when>
    <thetext>Comment on attachment 206700
Patch

Attachment 206700 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1073307</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908587</commentid>
    <comment_count>25</comment_count>
      <attachid>206700</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-07-15 16:54:34 -0700</bug_when>
    <thetext>Comment on attachment 206700
Patch

Attachment 206700 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1071600</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908591</commentid>
    <comment_count>26</comment_count>
      <attachid>206705</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-15 17:07:07 -0700</bug_when>
    <thetext>Created attachment 206705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908617</commentid>
    <comment_count>27</comment_count>
      <attachid>206713</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-15 18:19:13 -0700</bug_when>
    <thetext>Created attachment 206713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909052</commentid>
    <comment_count>28</comment_count>
      <attachid>206713</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-07-16 16:03:48 -0700</bug_when>
    <thetext>Comment on attachment 206713
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909155</commentid>
    <comment_count>29</comment_count>
      <attachid>206713</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-16 22:33:00 -0700</bug_when>
    <thetext>Comment on attachment 206713
Patch

Clearing flags on attachment: 206713

Committed r152755: &lt;http://trac.webkit.org/changeset/152755&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909156</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-16 22:33:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910492</commentid>
    <comment_count>31</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-07-20 15:25:36 -0700</bug_when>
    <thetext>Rolled out in https://trac.webkit.org/r152946</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910859</commentid>
    <comment_count>32</comment_count>
      <attachid>207292</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-22 16:36:38 -0700</bug_when>
    <thetext>Created attachment 207292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910860</commentid>
    <comment_count>33</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-22 16:41:11 -0700</bug_when>
    <thetext>This time I ran leaks tests and it doesn&apos;t add 4 million leaks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910861</commentid>
    <comment_count>34</comment_count>
      <attachid>207292</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-07-22 16:41:26 -0700</bug_when>
    <thetext>Comment on attachment 207292
Patch

Attachment 207292 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1092434</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910866</commentid>
    <comment_count>35</comment_count>
      <attachid>207292</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-07-22 16:47:01 -0700</bug_when>
    <thetext>Comment on attachment 207292
Patch

Attachment 207292 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1082683</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910867</commentid>
    <comment_count>36</comment_count>
      <attachid>207292</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-07-22 16:47:07 -0700</bug_when>
    <thetext>Comment on attachment 207292
Patch

Attachment 207292 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1172159</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910868</commentid>
    <comment_count>37</comment_count>
      <attachid>207292</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-07-22 16:47:56 -0700</bug_when>
    <thetext>Comment on attachment 207292
Patch

Attachment 207292 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1177257</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910870</commentid>
    <comment_count>38</comment_count>
      <attachid>207292</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-07-22 16:53:09 -0700</bug_when>
    <thetext>Comment on attachment 207292
Patch

Attachment 207292 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1092437</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910873</commentid>
    <comment_count>39</comment_count>
      <attachid>207292</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-07-22 17:01:51 -0700</bug_when>
    <thetext>Comment on attachment 207292
Patch

Attachment 207292 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1082681</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910880</commentid>
    <comment_count>40</comment_count>
      <attachid>207296</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-22 17:19:49 -0700</bug_when>
    <thetext>Created attachment 207296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910882</commentid>
    <comment_count>41</comment_count>
      <attachid>207296</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-07-22 17:33:02 -0700</bug_when>
    <thetext>Comment on attachment 207296
Patch

Attachment 207296 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1135460</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910885</commentid>
    <comment_count>42</comment_count>
      <attachid>207296</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-07-22 17:37:17 -0700</bug_when>
    <thetext>Comment on attachment 207296
Patch

Attachment 207296 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1137488</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910886</commentid>
    <comment_count>43</comment_count>
      <attachid>207296</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-07-22 17:42:37 -0700</bug_when>
    <thetext>Comment on attachment 207296
Patch

Attachment 207296 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1137489</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910887</commentid>
    <comment_count>44</comment_count>
      <attachid>207298</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-22 17:45:42 -0700</bug_when>
    <thetext>Created attachment 207298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910891</commentid>
    <comment_count>45</comment_count>
      <attachid>207298</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-07-22 17:58:48 -0700</bug_when>
    <thetext>Comment on attachment 207298
Patch

Attachment 207298 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1184016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911083</commentid>
    <comment_count>46</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-23 10:45:59 -0700</bug_when>
    <thetext>I&apos;m pretty sure my patch didn&apos;t break the GTK build because the error has nothing to do with ANGLE and GTK-WK2 built successfully.  I also ran leak tests locally with this patch and it does not add 4 million leaks like the last one did.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911087</commentid>
    <comment_count>47</comment_count>
      <attachid>207338</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-23 11:05:21 -0700</bug_when>
    <thetext>Created attachment 207338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911093</commentid>
    <comment_count>48</comment_count>
      <attachid>207338</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-07-23 11:20:08 -0700</bug_when>
    <thetext>Comment on attachment 207338
Patch

Attachment 207338 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1119317</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911111</commentid>
    <comment_count>49</comment_count>
      <attachid>207338</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-07-23 11:59:11 -0700</bug_when>
    <thetext>Comment on attachment 207338
Patch

Attachment 207338 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/1183293</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911125</commentid>
    <comment_count>50</comment_count>
      <attachid>207343</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-23 13:14:21 -0700</bug_when>
    <thetext>Created attachment 207343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911142</commentid>
    <comment_count>51</comment_count>
      <attachid>207343</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-07-23 14:44:58 -0700</bug_when>
    <thetext>Comment on attachment 207343
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911144</commentid>
    <comment_count>52</comment_count>
      <attachid>207343</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-23 15:12:56 -0700</bug_when>
    <thetext>Comment on attachment 207343
Patch

Rejecting attachment 207343 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 207343, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
/git.webkit.org/WebKit
   576a5fb..9ce069c  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 153061 = 576a5fb847db0f1a9dd8fb3db2d257c8f2d817c5
r153062 = 9ce069c97e2f045384ba83f8d8c96113820779de
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://webkit-queues.appspot.com/results/1158437</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911150</commentid>
    <comment_count>53</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-07-23 15:34:27 -0700</bug_when>
    <thetext>r153064</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206429</attachid>
            <date>2013-07-11 00:16:29 -0700</date>
            <delta_ts>2013-07-12 12:38:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118550-20130711001415.patch</filename>
            <type>text/plain</type>
            <size>754688</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjU2MCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI1MiBAQAorMjAxMy0wNy0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFOR0xFIGZyb20gcjE5ODcgdG8gcjIyNDkgd2hpbGUg
a2VlcGluZyB0aGVzZSB0d28gcHJldmlvdXMgY2hhbmdlczoKKyAgICAgICAgS2VlcGluZyAjaWYg
ZGVmaW5lZChfTVNDX1ZFUikgYXJvdW5kICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzE4KSBp
biBEZXBlbmRlbmN5R3JhcGguY3BwLgorICAgICAgICBLZWVwaW5nIGluY2x1ZGUga2hycGxhdGZv
cm0uaCBpbnN0ZWFkIG9mIEtIUi9raHJwbGF0Zm9ybS5oIGluIFNoYWRlckxhbmcuaC4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NTUwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBTkdMRS5wbGlz
dDogVXBkYXRlZCByZXZpc2lvbiBvZiBBTkdMRSB0byAyMjQ5LgorICAgICAgICAqIEFOR0xFLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgICAgIFJlbmFtZWQgRGV0ZWN0UmVjdXJzaW9uIHRv
IERldGVjdENhbGxEZXB0aCBhbmQgYWRkZWQgYnVpbHRpbl9zeW1ib2xfdGFibGUuCisgICAgICAg
ICogaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaDoKKyAgICAgICAgKiBzcmMvY29tbW9uL3Zl
cnNpb24uaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQmFzZVR5cGVzLmg6CisgICAgICAgIChn
ZXRRdWFsaWZpZXJTdHJpbmcpOgorICAgICAgICAqIHNyYy9jb21waWxlci9Db21tb24uaDoKKyAg
ICAgICAgKiBzcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwOgorICAgICAgICAoVENvbXBpbGVyOjpU
Q29tcGlsZXIpOgorICAgICAgICAoVENvbXBpbGVyOjpJbml0KToKKyAgICAgICAgKFRDb21waWxl
cjo6Y29tcGlsZSk6CisgICAgICAgIChUQ29tcGlsZXI6OmRldGVjdENhbGxEZXB0aCk6CisgICAg
ICAgIChUQ29tcGlsZXI6OmVuZm9yY2VUaW1pbmdSZXN0cmljdGlvbnMpOgorICAgICAgICAoVENv
bXBpbGVyOjpsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5KToKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvQ29uc3RhbnRVbmlvbi5oOgorICAgICAgICAoQ29uc3RhbnRVbmlvbjo6Q29uc3RhbnRVbmlv
bik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHA6IEFkZGVkLgor
ICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZSk6Cisg
ICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSk6CisgICAgICAg
IChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6YWRkQ2FsbGVlKToKKyAgICAgICAgKERl
dGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpkZXRlY3RDYWxsRGVwdGgpOgorICAgICAgICAo
RGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OnJlc2V0KToKKyAgICAgICAgKERldGVjdENh
bGxEZXB0aDo6RGV0ZWN0Q2FsbERlcHRoKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6fkRl
dGVjdENhbGxEZXB0aCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OnZpc2l0QWdncmVnYXRl
KToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6Y2hlY2tFeGNlZWRzTWF4RGVwdGgpOgorICAg
ICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpyZXNldEZ1bmN0aW9uTm9kZXMpOgorICAgICAgICAoRGV0
ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbik6CisgICAgICAgIChEZXRl
Y3RDYWxsRGVwdGg6OmRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6
OmZpbmRGdW5jdGlvbkJ5TmFtZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVjdENhbGxE
ZXB0aC5oOiBBZGRlZC4KKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6Z2V0SW5mb1NpbmspOgor
ICAgICAgICAqIHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwOgorICAgICAgICAoVERpYWdub3N0aWNzOjp3
cml0ZUluZm8pOgorICAgICAgICAqIHNyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcDoKKyAg
ICAgICAgKEZvckxvb3BVbnJvbGw6OmV2YWx1YXRlSW50Q29uc3RhbnQpOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9JbmZvU2luay5jcHA6CisgICAgICAgIChUSW5mb1NpbmtCYXNlOjpwcmVmaXgp
OgorICAgICAgICAoVEluZm9TaW5rQmFzZTo6bG9jYXRpb24pOgorICAgICAgICAoVEluZm9TaW5r
QmFzZTo6bWVzc2FnZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0luZm9TaW5rLmg6CisgICAg
ICAgICogc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwOgorICAgICAgICAoVEJ1aWx0SW5zOjpp
bml0aWFsaXplKToKKyAgICAgICAgKElkZW50aWZ5QnVpbHRJbnMpOgorICAgICAgICAoSW5pdEV4
dGVuc2lvbkJlaGF2aW9yKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNw
cDoKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZFN5bWJvbCk6CisgICAgICAgIChUSW50ZXJt
ZWRpYXRlOjphZGRCaW5hcnlNYXRoKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZEFzc2ln
bik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRJbmRleCk6CisgICAgICAgIChUSW50ZXJt
ZWRpYXRlOjphZGRVbmFyeU1hdGgpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6c2V0QWdncmVn
YXRlT3BlcmF0b3IpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQ29udmVyc2lvbik6Cisg
ICAgICAgIChUSW50ZXJtZWRpYXRlOjpncm93QWdncmVnYXRlKToKKyAgICAgICAgKFRJbnRlcm1l
ZGlhdGU6Om1ha2VBZ2dyZWdhdGUpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0
aW9uKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZENvbW1hKToKKyAgICAgICAgKFRJbnRl
cm1lZGlhdGU6OmFkZENvbnN0YW50VW5pb24pOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRk
U3dpenpsZSk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRMb29wKToKKyAgICAgICAgKFRJ
bnRlcm1lZGlhdGU6OmFkZEJyYW5jaCk6CisgICAgICAgIChUSW50ZXJtVW5hcnk6OnByb21vdGUp
OgorICAgICAgICAoVEludGVybUJpbmFyeTo6cHJvbW90ZSk6CisgICAgICAgIChDb21wYXJlU3Ry
dWN0KToKKyAgICAgICAgKENvbXBhcmVTdHJ1Y3R1cmUpOgorICAgICAgICAoVEludGVybUNvbnN0
YW50VW5pb246OmZvbGQpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6cHJvbW90ZUNvbnN0YW50
VW5pb24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRHTFNMLmNwcDoKKyAgICAgICAg
KFRPdXRwdXRHTFNMOjp2aXNpdFN5bWJvbCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1
dEdMU0wuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwOgorICAg
ICAgICAoVE91dHB1dEdMU0xCYXNlOjp3cml0ZVZhcmlhYmxlVHlwZSk6CisgICAgICAgIChUT3V0
cHV0R0xTTEJhc2U6OndyaXRlQ29uc3RhbnRVbmlvbik6CisgICAgICAgIChUT3V0cHV0R0xTTEJh
c2U6OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRBZ2dyZWdh
dGUpOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNlOjpnZXRUeXBlTmFtZSk6CisgICAgICAgIChU
T3V0cHV0R0xTTEJhc2U6Omhhc2hGdW5jdGlvbk5hbWUpOgorICAgICAgICAoVE91dHB1dEdMU0xC
YXNlOjpzdHJ1Y3REZWNsYXJlZCk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OmRlY2xhcmVT
dHJ1Y3QpOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5oOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcDoKKyAgICAgICAgKHNoOjpPdXRwdXRITFNM
OjpPdXRwdXRITFNMKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjpoZWFkZXIpOgorICAgICAg
ICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0U3ltYm9sKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNM
Ojp2aXNpdEJpbmFyeSk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUp
OgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0U2VsZWN0aW9uKToKKyAgICAgICAgKHNo
OjpPdXRwdXRITFNMOjp2aXNpdExvb3ApOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmhhbmRs
ZUV4Y2Vzc2l2ZUxvb3ApOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnR5cGVTdHJpbmcpOgor
ICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmluaXRpYWxpemVyKToKKyAgICAgICAgKHNoOjpPdXRw
dXRITFNMOjphZGRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6d3JpdGVD
b25zdGFudFVuaW9uKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjpkZWNvcmF0ZUZpZWxkKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0SExTTC5oOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9QYXJzZUhlbHBlci5jcHA6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpwYXJzZVZlY3Rv
ckZpZWxkcyk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpwYXJzZU1hdHJpeEZpZWxkcyk6Cisg
ICAgICAgIChUUGFyc2VDb250ZXh0OjplcnJvcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp3
YXJuaW5nKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFzc2lnbkVycm9yKToKKyAgICAgICAg
KFRQYXJzZUNvbnRleHQ6OnVuYXJ5T3BFcnJvcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpi
aW5hcnlPcEVycm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnByZWNpc2lvbkVycm9yQ2hl
Y2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjpnbG9iYWxFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6OnJlc2VydmVkRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpjb25zdHJ1
Y3RvckVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6dm9pZEVycm9yQ2hlY2sp
OgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2spOgorICAgICAgICAoVFBh
cnNlQ29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6
c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpwYXJh
bWV0ZXJTYW1wbGVyRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpjb250YWlu
c1NhbXBsZXIpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjayk6
CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJheVF1YWxpZmllckVycm9yQ2hlY2spOgorICAg
ICAgICAoVFBhcnNlQ29udGV4dDo6YXJyYXlUeXBlRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFy
c2VDb250ZXh0OjphcnJheUVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6bm9u
SW5pdENvbnN0RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpub25Jbml0RXJy
b3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpwYXJhbUVycm9yQ2hlY2spOgorICAg
ICAgICAoVFBhcnNlQ29udGV4dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFy
c2VDb250ZXh0OjpmaW5kRnVuY3Rpb24pOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6aXNWYXJp
YWJsZUJ1aWx0SW4pOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVy
KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0cnVjdG9yKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0SW4pOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6
Y29uc3RydWN0U3RydWN0KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVjdG9y
Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdE1hdHJpeE5vZGUpOgorICAg
ICAgICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUpOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6YWRkQ29uc3RTdHJ1Y3QpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6ZW50ZXJT
dHJ1Y3REZWNsYXJhdGlvbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1Y3ROZXN0aW5n
RXJyb3JDaGVjayk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmg6CisgICAg
ICAgIChUUGFyc2VDb250ZXh0OjpUUGFyc2VDb250ZXh0KToKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6OnByYWdtYSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHA6CisgICAg
ICAgIChUUG9vbEFsbG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9T
aEhhbmRsZS5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcDoKKyAgICAg
ICAgKFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMpOgorICAgICAgICAqIHNyYy9jb21waWxlci9TeW1i
b2xUYWJsZS5jcHA6CisgICAgICAgIChUVHlwZTo6VFR5cGUpOgorICAgICAgICAoVFR5cGU6OmJ1
aWxkTWFuZ2xlZE5hbWUpOgorICAgICAgICAoVFR5cGU6OmdldE9iamVjdFNpemUpOgorICAgICAg
ICAoVFN0cnVjdHVyZTo6Y29udGFpbnNBcnJheXMpOgorICAgICAgICAoVFN0cnVjdHVyZTo6YnVp
bGRNYW5nbGVkTmFtZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpjYWxjdWxhdGVPYmplY3RTaXpl
KToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmNhbGN1bGF0ZURlZXBlc3ROZXN0aW5nKToKKyAgICAg
ICAgKFRTeW1ib2xUYWJsZUxldmVsOjpyZWxhdGVUb0V4dGVuc2lvbik6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1N5bWJvbFRhYmxlLmg6CisgICAgICAgIChUU3ltYm9sOjpyZWxhdGVUb0V4dGVu
c2lvbik6CisgICAgICAgIChUU3ltYm9sOjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoVFZhcmlh
YmxlOjpUVmFyaWFibGUpOgorICAgICAgICAoVFZhcmlhYmxlOjpzZXRRdWFsaWZpZXIpOgorICAg
ICAgICAoVFZhcmlhYmxlOjpzaGFyZUNvbnN0UG9pbnRlcik6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL1R5cGVzLmg6CisgICAgICAgIChURmllbGQ6OlRGaWVsZCk6CisgICAgICAgIChURmllbGQ6
OnR5cGUpOgorICAgICAgICAoVEZpZWxkOjpuYW1lKToKKyAgICAgICAgKE5ld1Bvb2xURmllbGRM
aXN0KToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OlRTdHJ1Y3R1cmUpOgorICAgICAgICAoVFN0cnVj
dHVyZTo6bmFtZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpmaWVsZHMpOgorICAgICAgICAoVFN0
cnVjdHVyZTo6bWFuZ2xlZE5hbWUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6b2JqZWN0U2l6ZSk6
CisgICAgICAgIChUU3RydWN0dXJlOjpkZWVwZXN0TmVzdGluZyk6CisgICAgICAgIChUVHlwZTo6
VFR5cGUpOgorICAgICAgICAoVFR5cGU6OmNsZWFyQXJyYXluZXNzKToKKyAgICAgICAgKFRUeXBl
OjpnZXRTdHJ1Y3QpOgorICAgICAgICAoVFR5cGU6OnNldFN0cnVjdCk6CisgICAgICAgIChUVHlw
ZTo6Z2V0TWFuZ2xlZE5hbWUpOgorICAgICAgICAoVFR5cGU6OmdldERlZXBlc3RTdHJ1Y3ROZXN0
aW5nKToKKyAgICAgICAgKFRUeXBlOjppc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMpOgorICAg
ICAgICAoVFB1YmxpY1R5cGU6OnNldEJhc2ljKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVmFy
aWFibGVJbmZvLmNwcDoKKyAgICAgICAgKGdldFVzZXJEZWZpbmVkVmFyaWFibGVJbmZvKToKKyAg
ICAgICAgKiBzcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKGJ1aWx0aW4xKToKKyAgICAgICAgKGJ1aWx0aW4yKToKKyAgICAgICAgKGJ1aWx0aW4z
KToKKyAgICAgICAgKEluc2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24pOgorICAgICAgICAoSW5z
ZXJ0QnVpbHRJbkZ1bmN0aW9uc1ZlcnRleCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2J1aWx0
aW5fc3ltYm9sX3RhYmxlLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5n
Lmw6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmcueToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvZ2xzbGFuZ19sZXguY3BwOgorICAgICAgICAoeXlfZ2V0X3ByZXZpb3VzX3N0YXRlKToK
KyAgICAgICAgKHl5X3RyeV9OVUxfdHJhbnMpOgorICAgICAgICAoeXlnZXRfbGxvYyk6CisgICAg
ICAgICh5eXNldF9sbG9jKToKKyAgICAgICAgKHN0cmluZ19pbnB1dCk6CisgICAgICAgIChjaGVj
a190eXBlKToKKyAgICAgICAgKHJlc2VydmVkX3dvcmQpOgorICAgICAgICAoZ2xzbGFuZ19zY2Fu
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwOgorICAgICAgICAoeXlz
eW50YXhfZXJyb3IpOgorICAgICAgICAoeXllcnJvcik6CisgICAgICAgIChnbHNsYW5nX3BhcnNl
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaDoKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvaW50ZXJtT3V0LmNwcDoKKyAgICAgICAgKFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0
VW5hcnkpOgorICAgICAgICAoVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUpOgorICAg
ICAgICAoVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uKToKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmg6CisgICAgICAgIChUSW50ZXJtTm9kZTo6VEludGVy
bU5vZGUpOgorICAgICAgICAoVEludGVybU5vZGU6On5USW50ZXJtTm9kZSk6CisgICAgICAgIChU
SW50ZXJtTm9kZTo6Z2V0TGluZSk6CisgICAgICAgIChUSW50ZXJtTm9kZTo6c2V0TGluZSk6Cisg
ICAgICAgIChUSW50ZXJtTm9kZTo6Z2V0QXNMb29wTm9kZSk6CisgICAgICAgIChUSW50ZXJtQ29u
c3RhbnRVbmlvbjo6Z2V0SUNvbnN0KToKKyAgICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjpn
ZXRGQ29uc3QpOgorICAgICAgICAoVEludGVybUNvbnN0YW50VW5pb246OmdldEJDb25zdCk6Cisg
ICAgICAgIChUSW50ZXJtQWdncmVnYXRlOjpUSW50ZXJtQWdncmVnYXRlKToKKyAgICAgICAgKFRJ
bnRlcm1UcmF2ZXJzZXI6OlRJbnRlcm1UcmF2ZXJzZXIpOgorICAgICAgICAoVEludGVybVRyYXZl
cnNlcjo6Z2V0TWF4RGVwdGgpOgorICAgICAgICAoVEludGVybVRyYXZlcnNlcjo6aW5jcmVtZW50
RGVwdGgpOgorICAgICAgICAqIHNyYy9jb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9wYXJzZUNvbnN0LmNwcDoKKyAgICAgICAgKFRDb25zdFRyYXZl
cnNlcjo6dmlzaXRTeW1ib2wpOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdEJpbmFy
eSk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0VW5hcnkpOgorICAgICAgICAoVENv
bnN0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6
OnZpc2l0U2VsZWN0aW9uKToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFu
dFVuaW9uKToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRMb29wKToKKyAgICAgICAg
KFRDb25zdFRyYXZlcnNlcjo6dmlzaXRCcmFuY2gpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6
cGFyc2VDb25zdFRyZWUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhw
cmVzc2lvblBhcnNlci5jcHA6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3RpbWluZy9SZXN0cmlj
dFZlcnRleFNoYWRlclRpbWluZy5jcHA6CisgICAgICAgIChSZXN0cmljdFZlcnRleFNoYWRlclRp
bWluZzo6dmlzaXRTeW1ib2wpOgorICAgICAgICAgICAgVXBkYXRlZCBBTkdMRSB0byByMjI0OS4K
KwogMjAxMy0wNi0xNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
U29ydCBhbGwgdGhlIFhjb2RlIHByb2plY3QgZmlsZXMKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL0FOR0xFLnBsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L0FOR0xFLnBsaXN0CShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9BTkdMRS5wbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQAogCQk8a2V5Pk9w
ZW5Tb3VyY2VXZWJzaXRlVVJMPC9rZXk+CiAJCTxzdHJpbmc+aHR0cDovL2NvZGUuZ29vZ2xlLmNv
bS9wL2FuZ2xlcHJvamVjdC88L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlU0NNPC9rZXk+Ci0J
CTxzdHJpbmc+c3ZuIGNvIC1yMTY0MSBodHRwOi8vYW5nbGVwcm9qZWN0Lmdvb2dsZWNvZGUuY29t
L3N2bi90cnVuay88L3N0cmluZz4KKwkJPHN0cmluZz5zdm4gY28gLXIyMjQ5IGh0dHA6Ly9hbmds
ZXByb2plY3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLzwvc3RyaW5nPgogCQk8a2V5Pk9wZW5T
b3VyY2VJbXBvcnREYXRlPC9rZXk+CiAJCTxzdHJpbmc+MjAxMy0wMS0wNDwvc3RyaW5nPgogCQk8
a2V5Pk9wZW5Tb3VyY2VMaWNlbnNlPC9rZXk+CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9H
TlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAgbGliQU5H
TEVfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0tIUi9r
aHJwbGF0Zm9ybS5oIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2FuZ2xl
dXRpbHMuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBl
cy5oIFwKKwlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1i
b2xfdGFibGUuY3BwIFwKKwlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVp
bHRpbl9zeW1ib2xfdGFibGUuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggXAogCVNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuR0xTTC5jcHAgXApAQCAtMzksMTAgKzQx
LDEwIEBAIGxpYkFOR0xFX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5oIFwKIAlTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0
cHV0LmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBo
L0RlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBcCisJU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAgXAorCVNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguaCBcCiAJU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwIFwKIAlTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oIFwKLQlTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmNwcCBcCi0J
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oIFwK
IAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwIFwK
IAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuaCBcCiAJ
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpcmVjdGl2ZUhhbmRsZXIuY3Bw
IFwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1RhcmdldC5wcmkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTUyMzIzKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAt
MTgsNiArMTgsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAKIEhFQURFUlMgKz0gXAogICAgIHNyYy9j
b21waWxlci9CYXNlVHlwZXMuaCBcCisgICAgc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3Rh
YmxlLmggXAogICAgIHNyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIFwKICAg
ICBzcmMvY29tcGlsZXIvQ29tbW9uLmggXAogICAgIHNyYy9jb21waWxlci9Db25zdGFudFVuaW9u
LmggXApAQCAtMjUsOCArMjYsOCBAQCBIRUFERVJTICs9IFwKICAgICBzcmMvY29tcGlsZXIvZGVw
Z3JhcGgvRGVwZW5kZW5jeUdyYXBoLmggXAogICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9EZXBl
bmRlbmN5R3JhcGhCdWlsZGVyLmggXAogICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRl
bmN5R3JhcGhPdXRwdXQuaCBcCisgICAgc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oIFwK
ICAgICBzcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oIFwKLSAgICBzcmMvY29tcGls
ZXIvRGV0ZWN0UmVjdXJzaW9uLmggXAogICAgIHNyYy9jb21waWxlci9EaWFnbm9zdGljcy5oIFwK
ICAgICBzcmMvY29tcGlsZXIvRGlyZWN0aXZlSGFuZGxlci5oIFwKICAgICBzcmMvY29tcGlsZXIv
RXh0ZW5zaW9uQmVoYXZpb3IuaCBcCkBAIC04NCw2ICs4NSw3IEBAIEhFQURFUlMgKz0gXAogICAg
IHNyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaAogCiBTT1VSQ0VT
ICs9IFwKKyAgICBzcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwIFwKICAgICBz
cmMvY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIFwKICAgICBzcmMvY29tcGls
ZXIvQ29kZUdlbkdMU0wuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwIFwKQEAg
LTkyLDggKzk0LDggQEAgU09VUkNFUyArPSBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0Rl
cGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVw
ZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVu
ZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBcCisgICAgc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0
aC5jcHAgXAogICAgIHNyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNwcCBcCi0gICAg
c3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAgXAogICAgIHNyYy9jb21waWxlci9EaWFn
bm9zdGljcy5jcHAgXAogICAgIHNyYy9jb21waWxlci9EaXJlY3RpdmVIYW5kbGVyLmNwcCBcCiAg
ICAgc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwIFwKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAsMTAgKzEwLDEyIEBACiAJ
CTMxMkJEQjBDMTVGRUNBQzkwMDk3RUJDNyAvKiBBTkdMRS5wbGlzdCBpbiBDb3B5RmlsZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyQkRCMDkxNUZFQzkxRTAwOTdFQkM3
IC8qIEFOR0xFLnBsaXN0ICovOyB9OwogCQkzMTJCREIwRTE1RkVDQUU1MDA5N0VCQzcgLyogQU5H
TEUudHh0IGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTJCREIwQTE1RkVDQTNBMDA5N0VCQzcgLyogQU5HTEUudHh0ICovOyB9OwogCQk0OTk1MUMwMzE0
QjdBQUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDIxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0
aF9saW1pdHMuaCAqLzsgfTsKKwkJNDk5NTFDMDkxNEI3QUFENTAwNjBFOTZFIC8qIGJ1aWx0aW5f
c3ltYm9sX3RhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5OTUxQzA1MTRCN0FBRDUwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRv
ci5jcHAgKi87IH07CisJCTQ5OTUxQzBBMTRCN0FBRDYwMDYwRTk2RSAvKiBidWlsdGluX3N5bWJv
bF90YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDk5NTFDMDYxNEI3QUFENjAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggKi87
IH07CiAJCTQ5OTUxQzA5MTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1
MUMwNTE0QjdBQUQ3MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovOyB9
OwogCQk0OTk1MUMwQTE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA2
MTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovOyB9OwotCQk0
OTk1MUMwQjE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA3MTRCN0FBRDgwMDYw
RTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uY3BwICovOyB9OwotCQk0OTk1MUMwQzE0QjdBQUQ4MDA2
MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJz
aW9uLmggKi87IH07CisJCTQ5OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVw
dGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5
NTFDMDcxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAgKi87IH07CisJCTQ5
OTUxQzBDMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA4MTRCN0FBRDgwMDYwRTk2
RSAvKiBEZXRlY3RDYWxsRGVwdGguaCAqLzsgfTsKIAkJOTBEOUIxMDIxMkUxMURDQjAwMkQ0MjU1
IC8qIENvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkwRDlCMEY5MTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAgKi87IH07CiAJ
CTkwRDlCMTAzMTJFMTFEQ0IwMDJENDI1NSAvKiBFeHRlbnNpb25CZWhhdmlvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBEOUIwRkExMkUxMURDQjAw
MkQ0MjU1IC8qIEV4dGVuc2lvbkJlaGF2aW9yLmggKi87IH07CiAJCTkwRDlCMTA0MTJFMTFEQ0Iw
MDJENDI1NSAvKiBnbHNsYW5nX2xleC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjBGQjEyRTExRENCMDAyRDQyNTUgLyogZ2xzbGFuZ19sZXgu
Y3BwICovOyB9OwpAQCAtMTM4LDEwICsxNDAsMTIgQEAKIAkJMzEyQkRCMEExNUZFQ0EzQTAwOTdF
QkM3IC8qIEFOR0xFLnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBTkdMRS50eHQ7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0M0EzRTE1MTJFQ0Y2Q0MwMDA0RjlENyAvKiBpT1Mu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gaU9TLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTk1MUMwMjE0QjdBQUIzMDA2MEU5NkUgLyog
bGVuZ3RoX2xpbWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBsZW5ndGhf
bGltaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5OTUxQzA1MTRCN0FBRDUw
MDYwRTk2RSAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ5OTUxQzA2MTRCN0FBRDYwMDYwRTk2RSAvKiBidWlsdGluX3N5
bWJvbF90YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTk1MUMwNTE0
QjdBQUQ3MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyog
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDk5NTFDMDcxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXRlY3RSZWN1cnNpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0
ZWN0UmVjdXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldGVjdFJl
Y3Vyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTk1MUMwNzE0QjdBQUQ4
MDA2MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERldGVjdENhbGxEZXB0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ5OTUxQzA4MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV0ZWN0Q2FsbERlcHRoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM1MTIwOEM2OEIwMDFDODczRSAvKiBBTkdMRS54
Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBBTkdMRS54Y2NvbmZpZzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QzU5QzYxMjA4QzY4QjAwMUM4NzNFIC8q
IEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QzU5QzcxMjA4QzY4QjAwMUM4
NzNFIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0zOTEsNiArMzk1LDggQEAKIAkJCQlGQjM5RDI0NDEyMDBGMzVBMDAwODhFNjkgLyogcHJlcHJv
Y2Vzc29yICovLAogCQkJCUEyNjU2ODM0MTU5QzIzRTEwMDM5ODUzOSAvKiB0aW1pbmcgKi8sCiAJ
CQkJRkIzOUQyMjExMjAwRjM1QTAwMDg4RTY5IC8qIEJhc2VUeXBlcy5oICovLAorCQkJCTQ5OTUx
QzA1MTRCN0FBRDUwMDYwRTk2RSAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgKi8sCisJCQkJ
NDk5NTFDMDYxNEI3QUFENjAwNjBFOTZFIC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmggKi8sCiAJ
CQkJNDk5NTFDMDUxNEI3QUFENzAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNw
cCAqLywKIAkJCQk0OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3IuaCAqLywKIAkJCQlGQjM5RDIyMjEyMDBGMzVBMDAwODhFNjkgLyogQ29kZUdlbkdMU0wu
Y3BwICovLApAQCAtMzk5LDggKzQwNSw4IEBACiAJCQkJRkIzOUQyMjUxMjAwRjM1QTAwMDg4RTY5
IC8qIENvbnN0YW50VW5pb24uaCAqLywKIAkJCQlGQjM5RDIyNjEyMDBGMzVBMDAwODhFNjkgLyog
ZGVidWcuY3BwICovLAogCQkJCUZCMzlEMjI3MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5oICov
LAotCQkJCTQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uY3BwICov
LAotCQkJCTQ5OTUxQzA4MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLywK
KwkJCQk0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRoLmNwcCAqLywK
KwkJCQk0OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRoLmggKi8sCiAJ
CQkJQTI2NTY3QjAxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmNwcCAqLywKIAkJCQlB
MjY1NjdCMTE1OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25vc3RpY3MuaCAqLywKIAkJCQlBMjY1NjdC
MjE1OUMyMUIxMDAzOTg1MzkgLyogRGlyZWN0aXZlSGFuZGxlci5jcHAgKi8sCkBAIC01MjYsMTEg
KzUzMiwxMiBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAogCQkJCUEwOEMzQ0REMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJheUJvdW5kc0NsYW1wZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ5OTUxQzBBMTRCN0FBRDYwMDYwRTk2RSAvKiBidWlsdGluX3N5
bWJvbF90YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5NTFDMEExNEI3QUFEODAwNjBFOTZF
IC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1Njgz
QTE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMjY1NjgzQzE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY4M0UxNTlDMjNFMTAwMzk4NTM5IC8qIERlcGVuZGVuY3lH
cmFwaE91dHB1dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk5NTFDMEMxNEI3QUFEODAwNjBFOTZF
IC8qIERldGVjdFJlY3Vyc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDk5NTFDMEMxNEI3QUFE
ODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY3
QkMxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MjY0RjhBRDE2OTc0REVEMDA2RkFBNUEgLyogRGlhZ25vc3RpY3NCYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMjY1NjdCRTE1OUMyMUIxMDAzOTg1MzkgLyogRGlyZWN0aXZlSGFuZGxlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC02MjcsNiArNjM0LDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQlBMDhDM0NEQzE2RDZDQjYxMDAzRjBCODMgLyog
QXJyYXlCb3VuZHNDbGFtcGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5OTUxQzA5MTRCN0FB
RDUwMDYwRTk2RSAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OTk1MUMwOTE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQyNzExMjAwRjM1QTAwMDg4RTY5IC8qIENvZGVHZW5H
TFNMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkwRDlCMTAyMTJFMTFEQ0IwMDJENDI1NSAvKiBD
b21waWxlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTYzNSw3ICs2NDMsNyBAQAogCQkJCUEyNjU2
ODNCMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUEyNjU2ODNEMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhP
dXRwdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NTY4M0YxNTlDMjNFMTAwMzk4NTM5IC8q
IERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ5OTUxQzBC
MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDk5NTFDMEIxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBMjY1NjdCQjE1OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25vc3RpY3MuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NEY4QUMxNjk3NERFRDAwNkZBQTVBIC8qIERpYWdub3N0
aWNzQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1NjdCRDE1OUMyMUIxMDAzOTg1Mzkg
LyogRGlyZWN0aXZlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkocmV2
aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5H
L1NoYWRlckxhbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSwxMyBAQCB0eXBlZGVm
IGVudW0gewogICAvLyB2ZWMyMzQsIG9yIG1hdDIzNCB0eXBlLiBUaGUgU2hBcnJheUluZGV4Q2xh
bXBpbmdTdHJhdGVneSBlbnVtLAogICAvLyBzcGVjaWZpZWQgaW4gdGhlIFNoQnVpbHRJblJlc291
cmNlcyB3aGVuIGNvbnN0cnVjdGluZyB0aGUKICAgLy8gY29tcGlsZXIsIHNlbGVjdHMgdGhlIHN0
cmF0ZWd5IGZvciB0aGUgY2xhbXBpbmcgaW1wbGVtZW50YXRpb24uCi0gIFNIX0NMQU1QX0lORElS
RUNUX0FSUkFZX0JPVU5EUyA9IDB4MTAwMAorICBTSF9DTEFNUF9JTkRJUkVDVF9BUlJBWV9CT1VO
RFMgPSAweDEwMDAsCisKKyAgLy8gVGhpcyBmbGFnIGxpbWl0cyB0aGUgY29tcGxleGl0eSBvZiBh
biBleHByZXNzaW9uLgorICBTSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkgPSAweDIwMDAs
CisKKyAgLy8gVGhpcyBmbGFnIGxpbWl0cyB0aGUgZGVwdGggb2YgdGhlIGNhbGwgc3RhY2suCisg
IFNIX0xJTUlUX0NBTExfU1RBQ0tfREVQVEggPSAweDQwMDAsCiB9IFNoQ29tcGlsZU9wdGlvbnM7
CiAKIC8vIERlZmluZXMgYWx0ZXJuYXRlIHN0cmF0ZWdpZXMgZm9yIGltcGxlbWVudGluZyBhcnJh
eSBpbmRleCBjbGFtcGluZy4KQEAgLTIwOSw2ICsyMTUsNyBAQCB0eXBlZGVmIHN0cnVjdAogICAg
IGludCBPRVNfRUdMX2ltYWdlX2V4dGVybmFsOwogICAgIGludCBBUkJfdGV4dHVyZV9yZWN0YW5n
bGU7CiAgICAgaW50IEVYVF9kcmF3X2J1ZmZlcnM7CisgICAgaW50IEVYVF9mcmFnX2RlcHRoOwog
CiAgICAgLy8gU2V0IHRvIDEgaWYgaGlnaHAgcHJlY2lzaW9uIGlzIHN1cHBvcnRlZCBpbiB0aGUg
ZnJhZ21lbnQgbGFuZ3VhZ2UuCiAgICAgLy8gRGVmYXVsdCBpcyAwLgpAQCAtMjIyLDYgKzIyOSwx
MiBAQCB0eXBlZGVmIHN0cnVjdAogICAgIC8vIFNlbGVjdHMgYSBzdHJhdGVneSB0byB1c2Ugd2hl
biBpbXBsZW1lbnRpbmcgYXJyYXkgaW5kZXggY2xhbXBpbmcuCiAgICAgLy8gRGVmYXVsdCBpcyBT
SF9DTEFNUF9XSVRIX0NMQU1QX0lOVFJJTlNJQy4KICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0
cmF0ZWd5IEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5OworCisgICAgLy8gVGhlIG1heGltdW0g
Y29tcGxleGl0eSBhbiBleHByZXNzaW9uIGNhbiBiZS4KKyAgICBpbnQgTWF4RXhwcmVzc2lvbkNv
bXBsZXhpdHk7CisKKyAgICAvLyBUaGUgbWF4aW11bSBkZXB0aCBhIGNhbGwgc3RhY2sgY2FuIGJl
LgorICAgIGludCBNYXhDYWxsU3RhY2tEZXB0aDsKIH0gU2hCdWlsdEluUmVzb3VyY2VzOwogCiAv
LwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgJ
KHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24v
dmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogI2RlZmluZSBNQUpPUl9W
RVJTSU9OIDEKICNkZWZpbmUgTUlOT1JfVkVSU0lPTiAwCiAjZGVmaW5lIEJVSUxEX1ZFUlNJT04g
MAotI2RlZmluZSBCVUlMRF9SRVZJU0lPTiAxOTg3CisjZGVmaW5lIEJVSUxEX1JFVklTSU9OIDIy
NDkKIAogI2RlZmluZSBTVFJJTkdJRlkoeCkgI3gKICNkZWZpbmUgTUFDUk9fU1RSSU5HSUZZKHgp
IFNUUklOR0lGWSh4KQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0Jhc2VUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9CYXNlVHlwZXMuaAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCwx
MCArOTAsNiBAQCBlbnVtIFRRdWFsaWZpZXIKICAgICBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAg
ICAvLyB2ZXJ0ZXggc2hhZGVycyBvbmx5ICByZWFkL3dyaXRlCiAgICAgRXZxVW5pZm9ybSwgICAg
ICAgLy8gUmVhZG9ubHksIHZlcnRleCBhbmQgZnJhZ21lbnQKIAotICAgIC8vIHBhY2svdW5wYWNr
IGlucHV0IGFuZCBvdXRwdXQKLSAgICBFdnFJbnB1dCwKLSAgICBFdnFPdXRwdXQsCi0KICAgICAv
LyBwYXJhbWV0ZXJzCiAgICAgRXZxSW4sCiAgICAgRXZxT3V0LApAQCAtMTEyLDYgKzEwOCw3IEBA
IGVudW0gVFF1YWxpZmllcgogICAgIC8vIGJ1aWx0LWlucyB3cml0dGVuIGJ5IGZyYWdtZW50IHNo
YWRlcgogICAgIEV2cUZyYWdDb2xvciwKICAgICBFdnFGcmFnRGF0YSwKKyAgICBFdnFGcmFnRGVw
dGgsCiAKICAgICAvLyBlbmQgb2YgbGlzdAogICAgIEV2cUxhc3QKQEAgLTEzNywxNCArMTM0LDEz
IEBAIGlubGluZSBjb25zdCBjaGFyKiBnZXRRdWFsaWZpZXJTdHJpbmcoVFEKICAgICBjYXNlIEV2
cUluOiAgICAgICAgICAgICByZXR1cm4gImluIjsgICAgICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBFdnFPdXQ6ICAgICAgICAgICAgcmV0dXJuICJvdXQiOyAgICAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgRXZxSW5PdXQ6ICAgICAgICAgIHJldHVybiAiaW5vdXQiOyAgICAgICAgICBicmVhazsK
LSAgICBjYXNlIEV2cUlucHV0OiAgICAgICAgICByZXR1cm4gImlucHV0IjsgICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFdnFPdXRwdXQ6ICAgICAgICAgcmV0dXJuICJvdXRwdXQiOyAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRXZxUG9zaXRpb246ICAgICAgIHJldHVybiAiUG9zaXRpb24iOyAg
ICAgICBicmVhazsKICAgICBjYXNlIEV2cVBvaW50U2l6ZTogICAgICByZXR1cm4gIlBvaW50U2l6
ZSI7ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcmFnQ29vcmQ6ICAgICAgcmV0dXJuICJGcmFn
Q29vcmQiOyAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6ICAgIHJldHVybiAi
RnJvbnRGYWNpbmciOyAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb2xvcjogICAgICByZXR1
cm4gIkZyYWdDb2xvciI7ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcmFnRGF0YTogICAgICAg
cmV0dXJuICJGcmFnRGF0YSI7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdnFGcmFnRGVwdGg6ICAg
ICAgcmV0dXJuICJGcmFnRGVwdGgiOyAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogICAgICAgICAg
ICAgICAgcmV0dXJuICJ1bmtub3duIHF1YWxpZmllciI7CiAgICAgfQogfQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21tb24uaAkocmV2aXNpb24gMTUy
MzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNCwyNCArMTQsMTIgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL1Bv
b2xBbGxvYy5oIgogCi0vLyBXZSBuZWVkIHR3byBwaWVjZXMgb2YgaW5mb3JtYXRpb24gdG8gcmVw
b3J0IGVycm9ycy93YXJuaW5ncyAtIHN0cmluZyBhbmQKLS8vIGxpbmUgbnVtYmVyLiBXZSBlbmNv
ZGUgdGhlc2UgaW50byBhIHNpbmdsZSBpbnQgc28gdGhhdCBpdCBjYW4gYmUgZWFzaWx5Ci0vLyBp
bmNyZW1lbnRlZC9kZWNyZW1lbnRlZCBieSBsZXhlci4gVGhlIHJpZ2h0IFNPVVJDRV9MT0NfTElO
RV9TSVpFIGJpdHMgc3RvcmUKLS8vIGxpbmUgbnVtYmVyIHdoaWxlIHRoZSByZXN0IHN0b3JlIHRo
ZSBzdHJpbmcgbnVtYmVyLiBTaW5jZSB0aGUgc2hhZGVycyBhcmUKLS8vIHVzdWFsbHkgc21hbGws
IHdlIHNob3VsZCBub3QgcnVuIG91dCBvZiBtZW1vcnkuIFNPVVJDRV9MT0NfTElORV9TSVpFCi0v
LyBjYW4gYmUgaW5jcmVhc2VkIHRvIGFsbGV2aWF0ZSB0aGlzIGlzc3VlLgotdHlwZWRlZiBpbnQg
VFNvdXJjZUxvYzsKLWNvbnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfU0laRSA9IDE2
OyAgLy8gaW4gYml0cy4KLWNvbnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfTUFTSyA9
ICgxIDw8IFNPVVJDRV9MT0NfTElORV9TSVpFKSAtIDE7Ci0KLWlubGluZSBUU291cmNlTG9jIEVu
Y29kZVNvdXJjZUxvYyhpbnQgc3RyaW5nLCBpbnQgbGluZSkgewotICAgIHJldHVybiAoc3RyaW5n
IDw8IFNPVVJDRV9MT0NfTElORV9TSVpFKSB8IChsaW5lICYgU09VUkNFX0xPQ19MSU5FX01BU0sp
OwotfQotCi1pbmxpbmUgdm9pZCBEZWNvZGVTb3VyY2VMb2MoVFNvdXJjZUxvYyBsb2MsIGludCog
c3RyaW5nLCBpbnQqIGxpbmUpIHsKLSAgICBpZiAoc3RyaW5nKSAqc3RyaW5nID0gbG9jID4+IFNP
VVJDRV9MT0NfTElORV9TSVpFOwotICAgIGlmIChsaW5lKSAqbGluZSA9IGxvYyAmIFNPVVJDRV9M
T0NfTElORV9NQVNLOwotfQorc3RydWN0IFRTb3VyY2VMb2MgeworICAgIGludCBmaXJzdF9maWxl
OworICAgIGludCBmaXJzdF9saW5lOworICAgIGludCBsYXN0X2ZpbGU7CisgICAgaW50IGxhc3Rf
bGluZTsKK307CiAKIC8vCiAvLyBQdXQgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSBpbiBiYXNl
IGNsYXNzZXMgdG8gbWFrZSB0aGVtIHVzZSB0aGlzIHNjaGVtZS4KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkocmV2aXNpb24g
MTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDkgQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCiAvLwogCisjaW5jbHVkZSAiY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUu
aCIKICNpbmNsdWRlICJjb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIgotI2luY2x1
ZGUgImNvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0RldGVj
dENhbGxEZXB0aC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0Zvckxvb3BVbnJvbGwuaCIKICNpbmNs
dWRlICJjb21waWxlci9Jbml0aWFsaXplLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6
ZVBhcnNlQ29udGV4dC5oIgpAQCAtNjIsMTEgKzYzLDI2IEBAIGJvb2wgSW5pdGlhbGl6ZVN5bWJv
bFRhYmxlKAogCiAgICAgICAgIGlmIChQYVBhcnNlU3RyaW5ncygxLCAmYnVpbHRJblNoYWRlcnMs
ICZidWlsdEluTGVuZ3RocywgJnBhcnNlQ29udGV4dCkgIT0gMCkKICAgICAgICAgewotICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5hYmxl
IHRvIHBhcnNlIGJ1aWx0LWlucyIpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgo
RVByZWZpeEludGVybmFsRXJyb3IpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiVW5h
YmxlIHRvIHBhcnNlIGJ1aWx0LWlucyI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICB9CiAKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgU0hfRlJBR01F
TlRfU0hBREVSOgorICAgICAgICBJbnNlcnRCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNl
cywgJnN5bWJvbFRhYmxlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNIX1ZFUlRFWF9T
SEFERVI6CisgICAgICAgIEluc2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24ocmVzb3VyY2VzLCAm
c3ltYm9sVGFibGUpOworICAgICAgICBJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KHJlc291
cmNlcywgJnN5bWJvbFRhYmxlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OiBhc3Nl
cnQoZmFsc2UgJiYgIkxhbmd1YWdlIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICB9CisKICAgICBJZGVu
dGlmeUJ1aWx0SW5zKHR5cGUsIHNwZWMsIHJlc291cmNlcywgc3ltYm9sVGFibGUpOwogCiAgICAg
cmV0dXJuIHRydWU7CkBAIC0xMDMsNiArMTE5LDkgQEAgVFNoSGFuZGxlQmFzZTo6flRTaEhhbmRs
ZUJhc2UoKSB7CiBUQ29tcGlsZXI6OlRDb21waWxlcihTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFk
ZXJTcGVjIHNwZWMpCiAgICAgOiBzaGFkZXJUeXBlKHR5cGUpLAogICAgICAgc2hhZGVyU3BlYyhz
cGVjKSwKKyAgICAgIG1heFVuaWZvcm1WZWN0b3JzKDApLAorICAgICAgbWF4RXhwcmVzc2lvbkNv
bXBsZXhpdHkoMCksCisgICAgICBtYXhDYWxsU3RhY2tEZXB0aCgwKSwKICAgICAgIGZyYWdtZW50
UHJlY2lzaW9uSGlnaChmYWxzZSksCiAgICAgICBjbGFtcGluZ1N0cmF0ZWd5KFNIX0NMQU1QX1dJ
VEhfQ0xBTVBfSU5UUklOU0lDKSwKICAgICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKHR5cGUp
CkBAIC0xMjEsMTEgKzE0MCwxNCBAQCBib29sIFRDb21waWxlcjo6SW5pdChjb25zdCBTaEJ1aWx0
SW5SZXNvCiAgICAgbWF4VW5pZm9ybVZlY3RvcnMgPSAoc2hhZGVyVHlwZSA9PSBTSF9WRVJURVhf
U0hBREVSKSA/CiAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA6CiAg
ICAgICAgIHJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzOworICAgIG1heEV4cHJl
c3Npb25Db21wbGV4aXR5ID0gcmVzb3VyY2VzLk1heEV4cHJlc3Npb25Db21wbGV4aXR5OworICAg
IG1heENhbGxTdGFja0RlcHRoID0gcmVzb3VyY2VzLk1heENhbGxTdGFja0RlcHRoOwogICAgIFRT
Y29wZWRQb29sQWxsb2NhdG9yIHNjb3BlZEFsbG9jKCZhbGxvY2F0b3IsIGZhbHNlKTsKIAogICAg
IC8vIEdlbmVyYXRlIGJ1aWx0LWluIHN5bWJvbCB0YWJsZS4KICAgICBpZiAoIUluaXRCdWlsdElu
U3ltYm9sVGFibGUocmVzb3VyY2VzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgSW5p
dEV4dGVuc2lvbkJlaGF2aW9yKHJlc291cmNlcywgZXh0ZW5zaW9uQmVoYXZpb3IpOwogICAgIGZy
YWdtZW50UHJlY2lzaW9uSGlnaCA9IHJlc291cmNlcy5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPT0g
MTsKIApAQCAtMTcwLDggKzE5MiwxMCBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBj
aGFyKiBjb25zCiAgICAgLy8gV2UgcHJlc2VydmUgc3ltYm9scyBhdCB0aGUgYnVpbHQtaW4gbGV2
ZWwgZnJvbSBjb21waWxlLXRvLWNvbXBpbGUuCiAgICAgLy8gU3RhcnQgcHVzaGluZyB0aGUgdXNl
ci1kZWZpbmVkIHN5bWJvbHMgYXQgZ2xvYmFsIGxldmVsLgogICAgIHN5bWJvbFRhYmxlLnB1c2go
KTsKLSAgICBpZiAoIXN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSkKLSAgICAgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiV3Jvbmcgc3ltYm9sIHRhYmxl
IGxldmVsIik7CisgICAgaWYgKCFzeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkpIHsKKyAgICAg
ICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEludGVybmFsRXJyb3IpOworICAgICAgICBp
bmZvU2luay5pbmZvIDw8ICJXcm9uZyBzeW1ib2wgdGFibGUgbGV2ZWwiOworICAgIH0KIAogICAg
IC8vIFBhcnNlIHNoYWRlci4KICAgICBib29sIHN1Y2Nlc3MgPQpAQCAtMTgyLDcgKzIwNiw3IEBA
IGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAgICAgc3VjY2Vz
cyA9IGludGVybWVkaWF0ZS5wb3N0UHJvY2Vzcyhyb290KTsKIAogICAgICAgICBpZiAoc3VjY2Vz
cykKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBkZXRlY3RSZWN1cnNpb24ocm9vdCk7CisgICAgICAg
ICAgICBzdWNjZXNzID0gZGV0ZWN0Q2FsbERlcHRoKHJvb3QsIGluZm9TaW5rLCAoY29tcGlsZU9w
dGlvbnMgJiBTSF9MSU1JVF9DQUxMX1NUQUNLX0RFUFRIKSAhPSAwKTsKIAogICAgICAgICBpZiAo
c3VjY2VzcyAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9WQUxJREFURV9MT09QX0lOREVYSU5HKSkK
ICAgICAgICAgICAgIHN1Y2Nlc3MgPSB2YWxpZGF0ZUxpbWl0YXRpb25zKHJvb3QpOwpAQCAtMjA1
LDYgKzIyOSwxMCBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAg
ICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX0NMQU1QX0lORElSRUNU
X0FSUkFZX0JPVU5EUykpCiAgICAgICAgICAgICBhcnJheUJvdW5kc0NsYW1wZXIuTWFya0luZGly
ZWN0QXJyYXlCb3VuZHNGb3JDbGFtcGluZyhyb290KTsKIAorICAgICAgICAvLyBEaXNhbGxvdyBl
eHByZXNzaW9ucyBkZWVtZWQgdG9vIGNvbXBsZXguCisgICAgICAgIGlmIChzdWNjZXNzICYmIChj
b21waWxlT3B0aW9ucyAmIFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSkpCisgICAgICAg
ICAgICBzdWNjZXNzID0gbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShyb290KTsKKwogICAgICAg
ICAvLyBDYWxsIG1hcExvbmdWYXJpYWJsZU5hbWVzKCkgYmVmb3JlIGNvbGxlY3RBdHRyaWJzVW5p
Zm9ybXMoKSBzbyBpbgogICAgICAgICAvLyBjb2xsZWN0QXR0cmlic1VuaWZvcm1zKCkgd2UgYWxy
ZWFkeSBoYXZlIHRoZSBtYXBwZWQgc3ltYm9sIG5hbWVzIGFuZAogICAgICAgICAvLyB3ZSBjb3Vs
ZCBjb21wb3NpdGUgbWFwcGVkIGFuZCBvcmlnaW5hbCB2YXJpYWJsZSBuYW1lcy4KQEAgLTIxNyw3
ICsyNDUsOCBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAg
ICAgICAgICBpZiAoY29tcGlsZU9wdGlvbnMgJiBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJ
T05TKSB7CiAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGVuZm9yY2VQYWNraW5nUmVzdHJpY3Rp
b25zKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsICJ0b28gbWFueSB1bmlmb3Jt
cyIpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJy
b3IpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJ0b28gbWFueSB1bmlm
b3JtcyI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0y
NjMsMTggKzI5MiwyNCBAQCB2b2lkIFRDb21waWxlcjo6Y2xlYXJSZXN1bHRzKCkKICAgICBuYW1l
TWFwLmNsZWFyKCk7CiB9CiAKLWJvb2wgVENvbXBpbGVyOjpkZXRlY3RSZWN1cnNpb24oVEludGVy
bU5vZGUqIHJvb3QpCitib29sIFRDb21waWxlcjo6ZGV0ZWN0Q2FsbERlcHRoKFRJbnRlcm1Ob2Rl
KiByb290LCBUSW5mb1NpbmsmIGluZm9TaW5rLCBib29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgpCiB7
Ci0gICAgRGV0ZWN0UmVjdXJzaW9uIGRldGVjdDsKKyAgICBEZXRlY3RDYWxsRGVwdGggZGV0ZWN0
KGluZm9TaW5rLCBsaW1pdENhbGxTdGFja0RlcHRoLCBtYXhDYWxsU3RhY2tEZXB0aCk7CiAgICAg
cm9vdC0+dHJhdmVyc2UoJmRldGVjdCk7Ci0gICAgc3dpdGNoIChkZXRlY3QuZGV0ZWN0UmVjdXJz
aW9uKCkpIHsKLSAgICAgICAgY2FzZSBEZXRlY3RSZWN1cnNpb246OmtFcnJvck5vbmU6CisgICAg
c3dpdGNoIChkZXRlY3QuZGV0ZWN0Q2FsbERlcHRoKCkpIHsKKyAgICAgICAgY2FzZSBEZXRlY3RD
YWxsRGVwdGg6OmtFcnJvck5vbmU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
Y2FzZSBEZXRlY3RSZWN1cnNpb246OmtFcnJvck1pc3NpbmdNYWluOgotICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwgIk1pc3NpbmcgbWFpbigpIik7CisgICAg
ICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JNaXNzaW5nTWFpbjoKKyAgICAgICAgICAg
IGluZm9TaW5rLmluZm8ucHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICBpbmZvU2lu
ay5pbmZvIDw8ICJNaXNzaW5nIG1haW4oKSI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIGNhc2UgRGV0ZWN0UmVjdXJzaW9uOjprRXJyb3JSZWN1cnNpb246Ci0gICAgICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiRnVuY3Rpb24gcmVjdXJzaW9u
IGRldGVjdGVkIik7CisgICAgICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JSZWN1cnNp
b246CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVkIjsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6
OmtFcnJvck1heERlcHRoRXhjZWVkZWQ6CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZp
eChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24g
Y2FsbCBzdGFjayB0b28gZGVlcCI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwpAQCAtMzIwLDYgKzM1NSwyOCBA
QCBib29sIFRDb21waWxlcjo6ZW5mb3JjZVRpbWluZ1Jlc3RyaWN0aW9uCiAgICAgfQogfQogCiti
b29sIFRDb21waWxlcjo6bGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9v
dCkKK3sKKyAgICBUSW50ZXJtVHJhdmVyc2VyIHRyYXZlcnNlcjsKKyAgICByb290LT50cmF2ZXJz
ZSgmdHJhdmVyc2VyKTsKKyAgICBURGVwZW5kZW5jeUdyYXBoIGdyYXBoKHJvb3QpOworCisgICAg
Zm9yIChURnVuY3Rpb25DYWxsVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZ3JhcGguYmVn
aW5Vc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbHMoKTsKKyAgICAgICAgIGl0ZXIgIT0gZ3JhcGguZW5k
VXNlckRlZmluZWRGdW5jdGlvbkNhbGxzKCk7CisgICAgICAgICArK2l0ZXIpCisgICAgeworICAg
ICAgICBUR3JhcGhGdW5jdGlvbkNhbGwqIHNhbXBsZXJTeW1ib2wgPSAqaXRlcjsKKyAgICAgICAg
VERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciBncmFwaFRyYXZlcnNlcjsKKyAgICAgICAgc2FtcGxl
clN5bWJvbC0+dHJhdmVyc2UoJmdyYXBoVHJhdmVyc2VyKTsKKyAgICB9CisKKyAgICBpZiAodHJh
dmVyc2VyLmdldE1heERlcHRoKCkgPiBtYXhFeHByZXNzaW9uQ29tcGxleGl0eSkgeworICAgICAg
ICBpbmZvU2luay5pbmZvIDw8ICJFeHByZXNzaW9uIHRvbyBjb21wbGV4LiI7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgVENvbXBpbGVy
OjplbmZvcmNlRnJhZ21lbnRTaGFkZXJUaW1pbmdSZXN0cmljdGlvbnMoY29uc3QgVERlcGVuZGVu
Y3lHcmFwaCYgZ3JhcGgpCiB7CiAgICAgUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZyByZXN0
cmljdG9yKGluZm9TaW5rLmluZm8pOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0NvbnN0YW50VW5pb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oCShyZXZpc2lvbiAxNTIzMjMpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KIC8vCkBAIC0xNCw2ICsxNCw3IEBAIHB1YmxpYzoKICAgICBDb25zdGFudFVuaW9uKCkK
ICAgICB7CiAgICAgICAgIGlDb25zdCA9IDA7CisgICAgICAgIHR5cGUgPSBFYnRWb2lkOwogICAg
IH0KIAogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikg
ICAgICAgIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVj
dENhbGxEZXB0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE4NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgImNv
bXBpbGVyL0RldGVjdENhbGxEZXB0aC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgi
CisKK0RldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0
cmluZyYgZm5hbWUpCisgICAgOiBuYW1lKGZuYW1lKSwKKyAgICAgIHZpc2l0KFByZVZpc2l0KQor
eworfQorCitjb25zdCBUU3RyaW5nJiBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6Z2V0
TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK3ZvaWQgRGV0ZWN0Q2FsbERl
cHRoOjpGdW5jdGlvbk5vZGU6OmFkZENhbGxlZSgKKyAgICBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0
aW9uTm9kZSogY2FsbGVlKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5z
aXplKCk7ICsraSkgeworICAgICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Cit9CisK
K2ludCBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6ZGV0ZWN0Q2FsbERlcHRoKERldGVj
dENhbGxEZXB0aCogZGV0ZWN0Q2FsbERlcHRoLCBpbnQgZGVwdGgpCit7CisgICAgQVNTRVJUKHZp
c2l0ID09IFByZVZpc2l0KTsKKyAgICBBU1NFUlQoZGV0ZWN0Q2FsbERlcHRoKTsKKworICAgIGlu
dCBtYXhEZXB0aCA9IGRlcHRoOworICAgIHZpc2l0ID0gSW5WaXNpdDsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNhbGxlZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgc3dpdGNoIChjYWxs
ZWVzW2ldLT52aXNpdCkgeworICAgICAgICAgICAgY2FzZSBJblZpc2l0OgorICAgICAgICAgICAg
ICAgIC8vIGN5Y2xlIGRldGVjdGVkLCBpLmUuLCByZWN1cnNpb24gZGV0ZWN0ZWQuCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGtJbmZpbml0ZUNhbGxEZXB0aDsKKyAgICAgICAgICAgIGNhc2UgUG9z
dFZpc2l0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQcmVWaXNp
dDogeworICAgICAgICAgICAgICAgIC8vIENoZWNrIGJlZm9yZSB3ZSByZWN1cnNlIHNvIHdlIGRv
bid0IGdvIHRvbyBkZXB0aAorICAgICAgICAgICAgICAgIGlmIChkZXRlY3RDYWxsRGVwdGgtPmNo
ZWNrRXhjZWVkc01heERlcHRoKGRlcHRoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRl
cHRoOworICAgICAgICAgICAgICAgIGludCBjYWxsRGVwdGggPSBjYWxsZWVzW2ldLT5kZXRlY3RD
YWxsRGVwdGgoZGV0ZWN0Q2FsbERlcHRoLCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAgIC8v
IENoZWNrIGFmdGVyIHdlIHJlY3Vyc2Ugc28gd2UgY2FuIGV4aXQgaW1tZWRpYXRlbHkgYW5kIHBy
b3ZpZGUgaW5mby4KKyAgICAgICAgICAgICAgICBpZiAoZGV0ZWN0Q2FsbERlcHRoLT5jaGVja0V4
Y2VlZHNNYXhEZXB0aChjYWxsRGVwdGgpKSB7CisgICAgICAgICAgICAgICAgICAgIGRldGVjdENh
bGxEZXB0aC0+Z2V0SW5mb1NpbmsoKS5pbmZvIDw8ICI8LSIgPDwgY2FsbGVlc1tpXS0+Z2V0TmFt
ZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbERlcHRoOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBtYXhEZXB0aCA9IHN0ZDo6bWF4KGNhbGxEZXB0aCwgbWF4
RGVwdGgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHZpc2l0ID0gUG9zdFZpc2l0OworICAg
IHJldHVybiBtYXhEZXB0aDsKK30KKwordm9pZCBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9k
ZTo6cmVzZXQoKQoreworICAgIHZpc2l0ID0gUHJlVmlzaXQ7Cit9CisKK0RldGVjdENhbGxEZXB0
aDo6RGV0ZWN0Q2FsbERlcHRoKFRJbmZvU2luayYgaW5mb1NpbmssIGJvb2wgbGltaXRDYWxsU3Rh
Y2tEZXB0aCwgaW50IG1heENhbGxTdGFja0RlcHRoKQorICAgIDogVEludGVybVRyYXZlcnNlcih0
cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpLAorICAgICAgY3VycmVudEZ1bmN0aW9uKE5VTEwpLAor
ICAgICAgaW5mb1NpbmsoaW5mb1NpbmspLAorICAgICAgbWF4RGVwdGgobGltaXRDYWxsU3RhY2tE
ZXB0aCA/IG1heENhbGxTdGFja0RlcHRoIDogRnVuY3Rpb25Ob2RlOjprSW5maW5pdGVDYWxsRGVw
dGgpCit7Cit9CisKK0RldGVjdENhbGxEZXB0aDo6fkRldGVjdENhbGxEZXB0aCgpCit7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRl
bGV0ZSBmdW5jdGlvbnNbaV07Cit9CisKK2Jvb2wgRGV0ZWN0Q2FsbERlcHRoOjp2aXNpdEFnZ3Jl
Z2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSogbm9kZSkKK3sKKyAgICBzd2l0Y2gg
KG5vZGUtPmdldE9wKCkpCisgICAgeworICAgICAgICBjYXNlIEVPcFByb3RvdHlwZToKKyAgICAg
ICAgICAgIC8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgorICAgICAgICAgICAgLy8gRG9uJ3QgYWRk
IEZ1bmN0aW9uTm9kZSBoZXJlIGJlY2F1c2Ugbm9kZS0+Z2V0TmFtZSgpIGlzIHRoZQorICAgICAg
ICAgICAgLy8gdW5tYW5nbGVkIGZ1bmN0aW9uIG5hbWUuCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BGdW5jdGlvbjogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5p
dGlvbi4KKyAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAg
ICAgIGN1cnJlbnRGdW5jdGlvbiA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkp
OworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RnVuY3Rpb24gPT0gTlVMTCkgeworICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24gPSBuZXcgRnVuY3Rpb25Ob2RlKG5vZGUtPmdl
dE5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoX2JhY2soY3VycmVu
dEZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKHZp
c2l0ID09IFBvc3RWaXNpdCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9IE5V
TEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEVPcEZ1bmN0aW9uQ2FsbDogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gY2FsbC4K
KyAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIEZ1
bmN0aW9uTm9kZSogZnVuYyA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOwor
ICAgICAgICAgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAg
ZnVuYyA9IG5ldyBGdW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb25zLnB1c2hfYmFjayhmdW5jKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKGN1cnJlbnRGdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudEZ1bmN0aW9uLT5hZGRDYWxsZWUoZnVuYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIERldGVjdENhbGxEZXB0aDo6Y2hl
Y2tFeGNlZWRzTWF4RGVwdGgoaW50IGRlcHRoKQoreworICAgIHJldHVybiBkZXB0aCA+PSBtYXhE
ZXB0aDsKK30KKwordm9pZCBEZXRlY3RDYWxsRGVwdGg6OnJlc2V0RnVuY3Rpb25Ob2RlcygpCit7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgZnVuY3Rpb25zW2ldLT5yZXNldCgpOworICAgIH0KK30KKworRGV0ZWN0Q2FsbERlcHRo
OjpFcnJvckNvZGUgRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbihG
dW5jdGlvbk5vZGUqIGZ1bmMpCit7CisgICAgY3VycmVudEZ1bmN0aW9uID0gTlVMTDsKKyAgICBy
ZXNldEZ1bmN0aW9uTm9kZXMoKTsKKworICAgIGludCBtYXhDYWxsRGVwdGggPSBmdW5jLT5kZXRl
Y3RDYWxsRGVwdGgodGhpcywgMSk7CisKKyAgICBpZiAobWF4Q2FsbERlcHRoID09IEZ1bmN0aW9u
Tm9kZTo6a0luZmluaXRlQ2FsbERlcHRoKQorICAgICAgICByZXR1cm4ga0Vycm9yUmVjdXJzaW9u
OworCisgICAgaWYgKG1heENhbGxEZXB0aCA+PSBtYXhEZXB0aCkKKyAgICAgICAgcmV0dXJuIGtF
cnJvck1heERlcHRoRXhjZWVkZWQ7CisKKyAgICByZXR1cm4ga0Vycm9yTm9uZTsKK30KKworRGV0
ZWN0Q2FsbERlcHRoOjpFcnJvckNvZGUgRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGgo
KQoreworICAgIGlmIChtYXhEZXB0aCAhPSBGdW5jdGlvbk5vZGU6OmtJbmZpbml0ZUNhbGxEZXB0
aCkgeworICAgICAgICAvLyBDaGVjayBhbGwgZnVuY3Rpb25zIGJlY2F1c2UgdGhlIGRyaXZlciBt
YXkgZmFpbCBvbiB0aGVtCisgICAgICAgIC8vIFRPRE86IEJlZm9yZSBkZXRlY3RpbmdSZWN1cnNp
b24sIHN0cmlwIHVudXNlZCBmdW5jdGlvbnMuCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZnVuY3Rpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBFcnJvckNvZGUgZXJyb3Ig
PSBkZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbihmdW5jdGlvbnNbaV0pOworICAgICAgICAgICAg
aWYgKGVycm9yICE9IGtFcnJvck5vbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwor
ICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgRnVuY3Rpb25Ob2RlKiBtYWluID0gZmlu
ZEZ1bmN0aW9uQnlOYW1lKCJtYWluKCIpOworICAgICAgICBpZiAobWFpbiA9PSBOVUxMKQorICAg
ICAgICAgICAgcmV0dXJuIGtFcnJvck1pc3NpbmdNYWluOworCisgICAgICAgIHJldHVybiBkZXRl
Y3RDYWxsRGVwdGhGb3JGdW5jdGlvbihtYWluKTsKKyAgICB9CisKKyAgICByZXR1cm4ga0Vycm9y
Tm9uZTsKK30KKworRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGUqIERldGVjdENhbGxEZXB0
aDo6ZmluZEZ1bmN0aW9uQnlOYW1lKAorICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUpCit7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
aWYgKGZ1bmN0aW9uc1tpXS0+Z2V0TmFtZSgpID09IG5hbWUpCisgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb25zW2ldOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKwoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxE
ZXB0aC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIwor
KgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENh
bGxEZXB0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKyNpZm5kZWYgQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXworI2RlZmluZSBDT01Q
SUxFUl9ERVRFQ1RfUkVDVVJTSU9OX0hfCisKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcu
aCIKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0
ZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1ZhcmlhYmxlSW5mby5oIgorCitjbGFzcyBUSW5mb1Np
bms7CisKKy8vIFRyYXZlcnNlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBkZXRlY3QgZnVuY3Rpb24g
cmVjdXJzaW9uLgorY2xhc3MgRGV0ZWN0Q2FsbERlcHRoIDogcHVibGljIFRJbnRlcm1UcmF2ZXJz
ZXIgeworcHVibGljOgorICAgIGVudW0gRXJyb3JDb2RlIHsKKyAgICAgICAga0Vycm9yTWlzc2lu
Z01haW4sCisgICAgICAgIGtFcnJvclJlY3Vyc2lvbiwKKyAgICAgICAga0Vycm9yTWF4RGVwdGhF
eGNlZWRlZCwKKyAgICAgICAga0Vycm9yTm9uZQorICAgIH07CisKKyAgICBEZXRlY3RDYWxsRGVw
dGgoVEluZm9TaW5rJiBpbmZvU3luYywgYm9vbCBsaW1pdENhbGxTdGFja0RlcHRoLCBpbnQgbWF4
Q2FsbFN0YWNrRGVwdGgpOworICAgIH5EZXRlY3RDYWxsRGVwdGgoKTsKKworICAgIHZpcnR1YWwg
Ym9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopOworCisgICAgYm9v
bCBjaGVja0V4Y2VlZHNNYXhEZXB0aChpbnQgZGVwdGgpOworCisgICAgRXJyb3JDb2RlIGRldGVj
dENhbGxEZXB0aCgpOworCitwcml2YXRlOgorICAgIGNsYXNzIEZ1bmN0aW9uTm9kZSB7CisgICAg
cHVibGljOgorICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtJbmZpbml0ZUNhbGxEZXB0aCA9IElO
VF9NQVg7CisKKyAgICAgICAgRnVuY3Rpb25Ob2RlKGNvbnN0IFRTdHJpbmcmIGZuYW1lKTsKKwor
ICAgICAgICBjb25zdCBUU3RyaW5nJiBnZXROYW1lKCkgY29uc3Q7CisKKyAgICAgICAgLy8gSWYg
YSBmdW5jdGlvbiBpcyBhbHJlYWR5IGluIHRoZSBjYWxsZWUgbGlzdCwgdGhpcyBiZWNvbWVzIGEg
bm8tb3AuCisgICAgICAgIHZvaWQgYWRkQ2FsbGVlKEZ1bmN0aW9uTm9kZSogY2FsbGVlKTsKKwor
ICAgICAgICAvLyBSZXR1cm5zIGtJbmlmaW5pdHlDYWxsRGVwdGggaWYgcmVjdXJzaXZlIGZ1bmN0
aW9uIGNhbGxzIGFyZSBkZXRlY3RlZC4KKyAgICAgICAgaW50IGRldGVjdENhbGxEZXB0aChEZXRl
Y3RDYWxsRGVwdGgqIGRldGVjdENhbGxEZXB0aCwgaW50IGRlcHRoKTsKKworICAgICAgICAvLyBS
ZXNldCBzdGF0ZS4KKyAgICAgICAgdm9pZCByZXNldCgpOworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgLy8gbWFuZ2xlZCBmdW5jdGlvbiBuYW1lIGlzIHVuaXF1ZS4KKyAgICAgICAgVFN0cmluZyBu
YW1lOworCisgICAgICAgIC8vIGZ1bmN0aW9ucyB0aGF0IGFyZSBkaXJlY3RseSBjYWxsZWQgYnkg
dGhpcyBmdW5jdGlvbi4KKyAgICAgICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBjYWxsZWVzOwor
CisgICAgICAgIFZpc2l0IHZpc2l0OworICAgIH07CisKKyAgICBFcnJvckNvZGUgZGV0ZWN0Q2Fs
bERlcHRoRm9yRnVuY3Rpb24oRnVuY3Rpb25Ob2RlKiBmdW5jKTsKKyAgICBGdW5jdGlvbk5vZGUq
IGZpbmRGdW5jdGlvbkJ5TmFtZShjb25zdCBUU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIHJlc2V0
RnVuY3Rpb25Ob2RlcygpOworCisgICAgVEluZm9TaW5rJiBnZXRJbmZvU2luaygpIHsgcmV0dXJu
IGluZm9TaW5rOyB9CisKKyAgICBUVmVjdG9yPEZ1bmN0aW9uTm9kZSo+IGZ1bmN0aW9uczsKKyAg
ICBGdW5jdGlvbk5vZGUqIGN1cnJlbnRGdW5jdGlvbjsKKyAgICBUSW5mb1NpbmsmIGluZm9TaW5r
OworICAgIGludCBtYXhEZXB0aDsKKworICAgIERldGVjdENhbGxEZXB0aChjb25zdCBEZXRlY3RD
YWxsRGVwdGgmKTsKKyAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBEZXRlY3RDYWxsRGVwdGgmKTsK
K307CisKKyNlbmRpZiAgLy8gQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENh
bGxEZXB0aC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMK
KyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAJ
KHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9EZXRlY3RSZWN1cnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyNSArMCwwIEBACi0v
LwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgi
Ci0KLURldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0
cmluZyYgZm5hbWUpCi0gICAgOiBuYW1lKGZuYW1lKSwKLSAgICAgIHZpc2l0KFByZVZpc2l0KQot
ewotfQotCi1jb25zdCBUU3RyaW5nJiBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6Z2V0
TmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KLXZvaWQgRGV0ZWN0UmVjdXJz
aW9uOjpGdW5jdGlvbk5vZGU6OmFkZENhbGxlZSgKLSAgICBEZXRlY3RSZWN1cnNpb246OkZ1bmN0
aW9uTm9kZSogY2FsbGVlKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5z
aXplKCk7ICsraSkgewotICAgICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Ci19Ci0K
LWJvb2wgRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGU6OmRldGVjdFJlY3Vyc2lvbigpCi17
Ci0gICAgQVNTRVJUKHZpc2l0ID09IFByZVZpc2l0KTsKLSAgICB2aXNpdCA9IEluVmlzaXQ7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IHN3aXRjaCAoY2FsbGVlc1tpXS0+dmlzaXQpIHsKLSAgICAgICAgICAgIGNhc2UgSW5WaXNpdDoK
LSAgICAgICAgICAgICAgICAvLyBjeWNsZSBkZXRlY3RlZCwgaS5lLiwgcmVjdXJzaW9uIGRldGVj
dGVkLgotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgY2FzZSBQb3N0
VmlzaXQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFByZVZpc2l0
OiB7Ci0gICAgICAgICAgICAgICAgYm9vbCByZWN1cnNpb24gPSBjYWxsZWVzW2ldLT5kZXRlY3RS
ZWN1cnNpb24oKTsKLSAgICAgICAgICAgICAgICBpZiAocmVjdXJzaW9uKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICB2aXNpdCA9IFBv
c3RWaXNpdDsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RGV0ZWN0
UmVjdXJzaW9uKCkKLSAgICA6IGN1cnJlbnRGdW5jdGlvbihOVUxMKQotewotfQotCi1EZXRlY3RS
ZWN1cnNpb246On5EZXRlY3RSZWN1cnNpb24oKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZnVuY3Rpb25zLnNpemUoKTsgKytpKQotICAgICAgICBkZWxldGUgZnVuY3Rpb25zW2ldOwot
fQotCi1ib29sIERldGVjdFJlY3Vyc2lvbjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1BZ2dyZWdhdGUqIG5vZGUpCi17Ci0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQotICAg
IHsKLSAgICAgICAgY2FzZSBFT3BQcm90b3R5cGU6Ci0gICAgICAgICAgICAvLyBGdW5jdGlvbiBk
ZWNsYXJhdGlvbi4KLSAgICAgICAgICAgIC8vIERvbid0IGFkZCBGdW5jdGlvbk5vZGUgaGVyZSBi
ZWNhdXNlIG5vZGUtPmdldE5hbWUoKSBpcyB0aGUKLSAgICAgICAgICAgIC8vIHVubWFuZ2xlZCBm
dW5jdGlvbiBuYW1lLgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wRnVuY3Rp
b246IHsKLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCi0gICAgICAgICAgICBp
ZiAodmlzaXQgPT0gUHJlVmlzaXQpIHsKLSAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24g
PSBmaW5kRnVuY3Rpb25CeU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICBp
ZiAoY3VycmVudEZ1bmN0aW9uID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgY3VycmVu
dEZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uTm9kZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbnMucHVzaF9iYWNrKGN1cnJlbnRGdW5jdGlvbik7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBFT3BGdW5jdGlvbkNhbGw6IHsKLSAgICAgICAgICAgIC8vIEZ1bmN0aW9u
IGNhbGwuCi0gICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpIHsKLSAgICAgICAgICAg
ICAgICBBU1NFUlQoY3VycmVudEZ1bmN0aW9uICE9IE5VTEwpOwotICAgICAgICAgICAgICAgIEZ1
bmN0aW9uTm9kZSogZnVuYyA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOwot
ICAgICAgICAgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAg
ZnVuYyA9IG5ldyBGdW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb25zLnB1c2hfYmFjayhmdW5jKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uLT5hZGRDYWxsZWUoZnVuYyk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1EZXRlY3RSZWN1
cnNpb246OkVycm9yQ29kZSBEZXRlY3RSZWN1cnNpb246OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0g
ICAgRnVuY3Rpb25Ob2RlKiBtYWluID0gZmluZEZ1bmN0aW9uQnlOYW1lKCJtYWluKCIpOwotICAg
IGlmIChtYWluID09IE5VTEwpCi0gICAgICAgIHJldHVybiBrRXJyb3JNaXNzaW5nTWFpbjsKLSAg
ICBpZiAobWFpbi0+ZGV0ZWN0UmVjdXJzaW9uKCkpCi0gICAgICAgIHJldHVybiBrRXJyb3JSZWN1
cnNpb247Ci0gICAgcmV0dXJuIGtFcnJvck5vbmU7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RnVu
Y3Rpb25Ob2RlKiBEZXRlY3RSZWN1cnNpb246OmZpbmRGdW5jdGlvbkJ5TmFtZSgKLSAgICBjb25z
dCBUU3RyaW5nJiBuYW1lKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25z
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbnNbaV0tPmdldE5hbWUoKSA9PSBu
YW1lKQotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uc1tpXTsKLSAgICB9Ci0gICAgcmV0dXJu
IE5VTEw7Ci19Ci0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9E
ZXRlY3RSZWN1cnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2MCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIENP
TVBJTEVSX0RFVEVDVF9SRUNVUlNJT05fSF8KLSNkZWZpbmUgQ09NUElMRVJfREVURUNUX1JFQ1VS
U0lPTl9IXwotCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLSNpbmNsdWRlICJj
b21waWxlci9pbnRlcm1lZGlhdGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9WYXJpYWJsZUluZm8u
aCIKLQotLy8gVHJhdmVyc2VzIGludGVybWVkaWF0ZSB0cmVlIHRvIGRldGVjdCBmdW5jdGlvbiBy
ZWN1cnNpb24uCi1jbGFzcyBEZXRlY3RSZWN1cnNpb24gOiBwdWJsaWMgVEludGVybVRyYXZlcnNl
ciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBFcnJvckNvZGUgewotICAgICAgICBrRXJyb3JNaXNzaW5n
TWFpbiwKLSAgICAgICAga0Vycm9yUmVjdXJzaW9uLAotICAgICAgICBrRXJyb3JOb25lCi0gICAg
fTsKLQotICAgIERldGVjdFJlY3Vyc2lvbigpOwotICAgIH5EZXRlY3RSZWN1cnNpb24oKTsKLQot
ICAgIHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSop
OwotCi0gICAgRXJyb3JDb2RlIGRldGVjdFJlY3Vyc2lvbigpOwotCi1wcml2YXRlOgotICAgIGNs
YXNzIEZ1bmN0aW9uTm9kZSB7Ci0gICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoY29u
c3QgVFN0cmluZyYgZm5hbWUpOwotCi0gICAgICAgIGNvbnN0IFRTdHJpbmcmIGdldE5hbWUoKSBj
b25zdDsKLQotICAgICAgICAvLyBJZiBhIGZ1bmN0aW9uIGlzIGFscmVhZHkgaW4gdGhlIGNhbGxl
ZSBsaXN0LCB0aGlzIGJlY29tZXMgYSBuby1vcC4KLSAgICAgICAgdm9pZCBhZGRDYWxsZWUoRnVu
Y3Rpb25Ob2RlKiBjYWxsZWUpOwotCi0gICAgICAgIC8vIFJldHVybiB0cnVlIGlmIHJlY3Vyc2l2
ZSBmdW5jdGlvbiBjYWxscyBhcmUgZGV0ZWN0ZWQuCi0gICAgICAgIGJvb2wgZGV0ZWN0UmVjdXJz
aW9uKCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICAvLyBtYW5nbGVkIGZ1bmN0aW9uIG5hbWUg
aXMgdW5pcXVlLgotICAgICAgICBUU3RyaW5nIG5hbWU7Ci0KLSAgICAgICAgLy8gZnVuY3Rpb25z
IHRoYXQgYXJlIGRpcmVjdGx5IGNhbGxlZCBieSB0aGlzIGZ1bmN0aW9uLgotICAgICAgICBUVmVj
dG9yPEZ1bmN0aW9uTm9kZSo+IGNhbGxlZXM7Ci0KLSAgICAgICAgVmlzaXQgdmlzaXQ7Ci0gICAg
fTsKLQotICAgIEZ1bmN0aW9uTm9kZSogZmluZEZ1bmN0aW9uQnlOYW1lKGNvbnN0IFRTdHJpbmcm
IG5hbWUpOwotCi0gICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBmdW5jdGlvbnM7Ci0gICAgRnVu
Y3Rpb25Ob2RlKiBjdXJyZW50RnVuY3Rpb247Ci19OwotCi0jZW5kaWYgIC8vIENPTVBJTEVSX0RF
VEVDVF9SRUNVUlNJT05fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9EaWFnbm9zdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcAkocmV2aXNpb24gMTUyMzIzKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFREaWFnbm9zdGljczo6d3JpdGVJbmZvKFNl
dmVyaXR5IHNlCiAgICAgVEluZm9TaW5rQmFzZSYgc2luayA9IG1JbmZvU2luay5pbmZvOwogICAg
IC8qIFZDKysgZm9ybWF0OiBmaWxlKGxpbmVudW0pIDogZXJyb3IgIzogJ3Rva2VuJyA6IGV4dHJh
aW5mbyAqLwogICAgIHNpbmsucHJlZml4KHByZWZpeCk7Ci0gICAgc2luay5sb2NhdGlvbihFbmNv
ZGVTb3VyY2VMb2MobG9jLmZpbGUsIGxvYy5saW5lKSk7CisgICAgc2luay5sb2NhdGlvbihsb2Mu
ZmlsZSwgbG9jLmxpbmUpOwogICAgIHNpbmsgPDwgIiciIDw8IHRva2VuIDw8ICAiJyA6ICIgPDwg
cmVhc29uIDw8ICIgIiA8PCBleHRyYSA8PCAiXG4iOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCShy
ZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
Rm9yTG9vcFVucm9sbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTIxMCw2ICsyMTAsNiBAQCBpbnQgRm9y
TG9vcFVucm9sbDo6Z2V0TG9vcEluY3JlbWVudChUSW50CiBpbnQgRm9yTG9vcFVucm9sbDo6ZXZh
bHVhdGVJbnRDb25zdGFudChUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsKICAgICBBU1NF
UlQoKG5vZGUgIT0gTlVMTCkgJiYgKG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCkgIT0gTlVM
TCkpOwotICAgIHJldHVybiBub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3Qo
KTsKKyAgICByZXR1cm4gbm9kZS0+Z2V0SUNvbnN0KDApOwogfQogCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHJldmlzaW9u
IDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2lu
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBACiAKICNpbmNsdWRlICJjb21waWxl
ci9JbmZvU2luay5oIgogCi12b2lkIFRJbmZvU2lua0Jhc2U6OnByZWZpeChUUHJlZml4VHlwZSBt
ZXNzYWdlKSB7Ci0gICAgc3dpdGNoKG1lc3NhZ2UpIHsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6cHJl
Zml4KFRQcmVmaXhUeXBlIHApIHsKKyAgICBzd2l0Y2gocCkgewogICAgICAgICBjYXNlIEVQcmVm
aXhOb25lOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRVByZWZpeFdhcm5pbmc6
CkBAIC0zMSwyOSArMzEsMjQgQEAgdm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoVFByZWZpeFR5
cGUgbQogICAgIH0KIH0KIAotdm9pZCBUSW5mb1NpbmtCYXNlOjpsb2NhdGlvbihUU291cmNlTG9j
IGxvYykgewotICAgIGludCBzdHJpbmcgPSAwLCBsaW5lID0gMDsKLSAgICBEZWNvZGVTb3VyY2VM
b2MobG9jLCAmc3RyaW5nLCAmbGluZSk7Ci0KK3ZvaWQgVEluZm9TaW5rQmFzZTo6bG9jYXRpb24o
aW50IGZpbGUsIGludCBsaW5lKSB7CiAgICAgVFBlcnNpc3RTdHJpbmdTdHJlYW0gc3RyZWFtOwog
ICAgIGlmIChsaW5lKQotICAgICAgICBzdHJlYW0gPDwgc3RyaW5nIDw8ICI6IiA8PCBsaW5lOwor
ICAgICAgICBzdHJlYW0gPDwgZmlsZSA8PCAiOiIgPDwgbGluZTsKICAgICBlbHNlCi0gICAgICAg
IHN0cmVhbSA8PCBzdHJpbmcgPDwgIjo/ICI7CisgICAgICAgIHN0cmVhbSA8PCBmaWxlIDw8ICI6
PyAiOwogICAgIHN0cmVhbSA8PCAiOiAiOwogCiAgICAgc2luay5hcHBlbmQoc3RyZWFtLnN0cigp
KTsKIH0KIAotdm9pZCBUSW5mb1NpbmtCYXNlOjptZXNzYWdlKFRQcmVmaXhUeXBlIG1lc3NhZ2Us
IGNvbnN0IGNoYXIqIHMpIHsKLSAgICBwcmVmaXgobWVzc2FnZSk7Ci0gICAgc2luay5hcHBlbmQo
cyk7Ci0gICAgc2luay5hcHBlbmQoIlxuIik7Cit2b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9u
KGNvbnN0IFRTb3VyY2VMb2MmIGxvYykgeworICAgIGxvY2F0aW9uKGxvYy5maXJzdF9maWxlLCBs
b2MuZmlyc3RfbGluZSk7CiB9CiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4
VHlwZSBtZXNzYWdlLCBjb25zdCBjaGFyKiBzLCBUU291cmNlTG9jIGxvYykgewotICAgIHByZWZp
eChtZXNzYWdlKTsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBwLCBj
b25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0IGNoYXIqIG0pIHsKKyAgICBwcmVmaXgocCk7CiAg
ICAgbG9jYXRpb24obG9jKTsKLSAgICBzaW5rLmFwcGVuZChzKTsKKyAgICBzaW5rLmFwcGVuZCht
KTsKICAgICBzaW5rLmFwcGVuZCgiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9JbmZvU2luay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5oCShyZXZpc2lvbiAxNTIzMjMpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuaAkod29ya2luZyBj
b3B5KQpAQCAtOTYsMTAgKzk2LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBUUGVyc2lzdFN0cmlu
ZyYgc3RyKCkgY29uc3QgeyByZXR1cm4gc2luazsgfQogICAgIGNvbnN0IGNoYXIqIGNfc3RyKCkg
Y29uc3QgeyByZXR1cm4gc2luay5jX3N0cigpOyB9CiAKLSAgICB2b2lkIHByZWZpeChUUHJlZml4
VHlwZSBtZXNzYWdlKTsKLSAgICB2b2lkIGxvY2F0aW9uKFRTb3VyY2VMb2MgbG9jKTsKLSAgICB2
b2lkIG1lc3NhZ2UoVFByZWZpeFR5cGUgbWVzc2FnZSwgY29uc3QgY2hhciogcyk7Ci0gICAgdm9p
ZCBtZXNzYWdlKFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMsIFRTb3VyY2VMb2Mg
bG9jKTsKKyAgICB2b2lkIHByZWZpeChUUHJlZml4VHlwZSBwKTsKKyAgICB2b2lkIGxvY2F0aW9u
KGludCBmaWxlLCBpbnQgbGluZSk7CisgICAgdm9pZCBsb2NhdGlvbihjb25zdCBUU291cmNlTG9j
JiBsb2MpOworICAgIHZvaWQgbWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291cmNlTG9j
JiBsb2MsIGNvbnN0IGNoYXIqIG0pOwogCiBwcml2YXRlOgogICAgIFRQZXJzaXN0U3RyaW5nIHNp
bms7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0luaXRpYWxpemUuY3BwCShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2LDM3
MyArMTYsNiBAQAogCiAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC8vCi0vLyBQcm90b3R5cGVzIGZv
ciBidWlsdC1pbiBmdW5jdGlvbnMgc2VlbiBieSBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hh
ZGVycy4KLS8vCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLXN0YXRpYyBUU3RyaW5nIEJ1aWx0SW5G
dW5jdGlvbnNDb21tb24oY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCi17Ci0g
ICAgVFN0cmluZyBzOwotCi0gICAgLy8KLSAgICAvLyBBbmdsZSBhbmQgVHJpZ29ub21ldHJpYyBG
dW5jdGlvbnMuCi0gICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCByYWRpYW5zKGZs
b2F0IGRlZ3JlZXMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICByYWRpYW5zKHZl
YzIgIGRlZ3JlZXMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICByYWRpYW5zKHZl
YzMgIGRlZ3JlZXMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByYWRpYW5zKHZl
YzQgIGRlZ3JlZXMpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRlZ3JlZXMo
ZmxvYXQgcmFkaWFucyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGRlZ3JlZXMo
dmVjMiAgcmFkaWFucyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGRlZ3JlZXMo
dmVjMyAgcmFkaWFucyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGRlZ3JlZXMo
dmVjNCAgcmFkaWFucyk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc2luKGZs
b2F0IGFuZ2xlKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2luKHZlYzIgIGFu
Z2xlKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc2luKHZlYzMgIGFuZ2xlKTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc2luKHZlYzQgIGFuZ2xlKTsiKSk7Ci0K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBjb3MoZmxvYXQgYW5nbGUpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBjb3ModmVjMiAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMzICBjb3ModmVjMyAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICBjb3ModmVjNCAgYW5nbGUpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImZsb2F0IHRhbihmbG9hdCBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IHRhbih2ZWMyICBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHRhbih2
ZWMzICBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHRhbih2ZWM0ICBh
bmdsZSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYXNpbihmbG9hdCB4KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgYXNpbih2ZWMyICB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgYXNpbih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgYXNpbih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJmbG9hdCBhY29zKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBh
Y29zKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhY29zKHZlYzMg
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhY29zKHZlYzQgIHgpOyIpKTsK
LQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGF0YW4oZmxvYXQgeSwgZmxvYXQgeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeSwgdmVjMiAgeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGF0YW4odmVjMyAgeSwgdmVjMyAgeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGF0YW4odmVjNCAgeSwgdmVjNCAgeCk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYXRhbihmbG9hdCB5X292ZXJfeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeV9vdmVyX3gpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhdGFuKHZlYzMgIHlfb3Zlcl94KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgYXRhbih2ZWM0ICB5X292ZXJfeCk7IikpOwotCi0g
ICAgLy8KLSAgICAvLyBFeHBvbmVudGlhbCBGdW5jdGlvbnMuCi0gICAgLy8KLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJmbG9hdCBwb3coZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzIgIHBvdyh2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMyAgcG93KHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0ICBwb3codmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQo
VFN0cmluZygiZmxvYXQgZXhwKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMyICBleHAodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGV4cCh2
ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZXhwKHZlYzQgIHgpOyIp
KTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxvZyhmbG9hdCB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMiAgbG9nKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMzICBsb2codmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgIGxvZyh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBleHAy
KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAyKHZlYzIgIHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBleHAyKHZlYzMgIHgpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBleHAyKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IGxvZzIoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzIgIGxvZzIodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMg
IGxvZzIodmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZzIodmVj
NCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc3FydChmbG9hdCB4KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc3FydCh2ZWMyICB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgc3FydCh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgc3FydCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJmbG9hdCBpbnZlcnNlc3FydChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMiAgaW52ZXJzZXNxcnQodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzMgIGludmVyc2VzcXJ0KHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0
ICBpbnZlcnNlc3FydCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICAvLwotICAgIC8vIENvbW1vbiBGdW5j
dGlvbnMuCi0gICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhYnMoZmxvYXQgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGFicyh2ZWMyICB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgYWJzKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0ICBhYnModmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygi
ZmxvYXQgc2lnbihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2ln
bih2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc2lnbih2ZWMzICB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc2lnbih2ZWM0ICB4KTsiKSk7Ci0K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBmbG9vcihmbG9hdCB4KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMiAgZmxvb3IodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzMgIGZsb29yKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0ICBmbG9vcih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBj
ZWlsKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBjZWlsKHZlYzIg
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBjZWlsKHZlYzMgIHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBjZWlsKHZlYzQgIHgpOyIpKTsKLQotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImZsb2F0IGZyYWN0KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMyICBmcmFjdCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgZnJhY3QodmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGZy
YWN0KHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG1vZChmbG9h
dCB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbW9kKHZlYzIg
IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtb2QodmVjMyAg
eCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2ZWM0ICB4
LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbW9kKHZlYzIgIHgs
IHZlYzIgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtb2QodmVjMyAgeCwg
dmVjMyAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2ZWM0ICB4LCB2
ZWM0ICB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtaW4oZmxvYXQgeCwg
ZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1pbih2ZWMyICB4LCBm
bG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIGZs
b2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4odmVjNCAgeCwgZmxv
YXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1pbih2ZWMyICB4LCB2ZWMy
ICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIHZlYzMg
IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4odmVjNCAgeCwgdmVjNCAg
eSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbWF4KGZsb2F0IHgsIGZsb2F0
IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgZmxvYXQg
eSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1heCh2ZWMzICB4LCBmbG9hdCB5
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWF4KHZlYzQgIHgsIGZsb2F0IHkp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgdmVjMiAgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1heCh2ZWMzICB4LCB2ZWMzICB5KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWF4KHZlYzQgIHgsIHZlYzQgIHkpOyIp
KTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGNsYW1wKGZsb2F0IHgsIGZsb2F0IG1p
blZhbCwgZmxvYXQgbWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2xh
bXAodmVjMiAgeCwgZmxvYXQgbWluVmFsLCBmbG9hdCBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMzICBjbGFtcCh2ZWMzICB4LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZh
bCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIGZsb2F0
IG1pblZhbCwgZmxvYXQgbWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAg
Y2xhbXAodmVjMiAgeCwgdmVjMiAgbWluVmFsLCB2ZWMyICBtYXhWYWwpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMzICBjbGFtcCh2ZWMzICB4LCB2ZWMzICBtaW5WYWwsIHZlYzMgIG1h
eFZhbCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIHZl
YzQgIG1pblZhbCwgdmVjNCAgbWF4VmFsKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJm
bG9hdCBtaXgoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgYSk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzIgIG1peCh2ZWMyICB4LCB2ZWMyICB5LCBmbG9hdCBhKTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMyAgbWl4KHZlYzMgIHgsIHZlYzMgIHksIGZsb2F0IGEpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwgdmVjNCAgeSwgZmxvYXQg
YSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1peCh2ZWMyICB4LCB2ZWMyICB5
LCB2ZWMyICBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWl4KHZlYzMgIHgs
IHZlYzMgIHksIHZlYzMgIGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaXgo
dmVjNCAgeCwgdmVjNCAgeSwgdmVjNCAgYSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygi
ZmxvYXQgc3RlcChmbG9hdCBlZGdlLCBmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiAgc3RlcCh2ZWMyICBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMyAgc3RlcCh2ZWMzICBlZGdlLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgc3RlcCh2ZWM0ICBlZGdlLCB2ZWM0ICB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMiAgc3RlcChmbG9hdCBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMyAgc3RlcChmbG9hdCBlZGdlLCB2ZWMzICB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCAgc3RlcChmbG9hdCBlZGdlLCB2ZWM0ICB4KTsiKSk7Ci0K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9h
dCBlZGdlMSwgZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNtb290
aHN0ZXAodmVjMiAgZWRnZTAsIHZlYzIgIGVkZ2UxLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMyAgc21vb3Roc3RlcCh2ZWMzICBlZGdlMCwgdmVjMyAgZWRnZTEsIHZl
YzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKHZlYzQg
IGVkZ2UwLCB2ZWM0ICBlZGdlMSwgdmVjNCAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzIgIHNtb290aHN0ZXAoZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCB2ZWMyICB4KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxv
YXQgZWRnZTEsIHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9v
dGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgdmVjNCAgeCk7IikpOwotCi0gICAgLy8K
LSAgICAvLyBHZW9tZXRyaWMgRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiZmxvYXQgbGVuZ3RoKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCBsZW5ndGgodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0
aCh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKHZlYzQg
IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKGZsb2F0IHAw
LCBmbG9hdCBwMSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZl
YzIgIHAwLCB2ZWMyICBwMSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3Rh
bmNlKHZlYzMgIHAwLCB2ZWMzICBwMSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0
IGRpc3RhbmNlKHZlYzQgIHAwLCB2ZWM0ICBwMSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiZmxvYXQgZG90KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJmbG9hdCBkb3QodmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImZsb2F0IGRvdCh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
ZmxvYXQgZG90KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzMgY3Jvc3ModmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJm
bG9hdCBub3JtYWxpemUoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IG5vcm1hbGl6ZSh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbm9y
bWFsaXplKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBub3JtYWxp
emUodmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZmFjZWZvcndh
cmQoZmxvYXQgTiwgZmxvYXQgSSwgZmxvYXQgTnJlZik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzIgIGZhY2Vmb3J3YXJkKHZlYzIgIE4sIHZlYzIgIEksIHZlYzIgIE5yZWYpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBmYWNlZm9yd2FyZCh2ZWMzICBOLCB2ZWMzICBJ
LCB2ZWMzICBOcmVmKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZmFjZWZvcndh
cmQodmVjNCAgTiwgdmVjNCAgSSwgdmVjNCAgTnJlZik7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0
cmluZygiZmxvYXQgcmVmbGVjdChmbG9hdCBJLCBmbG9hdCBOKTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMiAgcmVmbGVjdCh2ZWMyICBJLCB2ZWMyICBOKTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMyAgcmVmbGVjdCh2ZWMzICBJLCB2ZWMzICBOKTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjNCAgcmVmbGVjdCh2ZWM0ICBJLCB2ZWM0ICBOKTsiKSk7Ci0KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCByZWZyYWN0KGZsb2F0IEksIGZsb2F0IE4sIGZsb2F0
IGV0YSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHJlZnJhY3QodmVjMiAgSSwg
dmVjMiAgTiwgZmxvYXQgZXRhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcmVm
cmFjdCh2ZWMzICBJLCB2ZWMzICBOLCBmbG9hdCBldGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICByZWZyYWN0KHZlYzQgIEksIHZlYzQgIE4sIGZsb2F0IGV0YSk7IikpOwotCi0g
ICAgLy8KLSAgICAvLyBNYXRyaXggRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0
cmluZygibWF0MiBtYXRyaXhDb21wTXVsdChtYXQyIHgsIG1hdDIgeSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoIm1hdDMgbWF0cml4Q29tcE11bHQobWF0MyB4LCBtYXQzIHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJtYXQ0IG1hdHJpeENvbXBNdWx0KG1hdDQgeCwgbWF0NCB5KTsi
KSk7Ci0KLSAgICAvLwotICAgIC8vIFZlY3RvciByZWxhdGlvbmFsIGZ1bmN0aW9ucy4KLSAgICAv
LwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGxlc3NUaGFuKHZlYzIgeCwgdmVjMiB5KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbGVzc1RoYW4odmVjMyB4LCB2ZWMzIHkp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbih2ZWM0IHgsIHZlYzQg
eSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbGVzc1RoYW4oaXZlYzIgeCwg
aXZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuKGl2ZWMz
IHgsIGl2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbihp
dmVjNCB4LCBpdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNz
VGhhbkVxdWFsKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZl
YzMgbGVzc1RoYW5FcXVhbCh2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJ2ZWM0IGxlc3NUaGFuRXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImJ2ZWMyIGxlc3NUaGFuRXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuRXF1YWwoaXZlYzMgeCwgaXZlYzMg
eSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NUaGFuRXF1YWwoaXZlYzQg
eCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRo
YW4odmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVh
dGVyVGhhbih2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0
IGdyZWF0ZXJUaGFuKHZlYzQgeCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJidmVjMiBncmVhdGVyVGhhbihpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygiYnZlYzMgZ3JlYXRlclRoYW4oaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFuKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsK
LQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGdyZWF0ZXJUaGFuRXF1YWwodmVjMiB4LCB2
ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbkVxdWFs
KHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRl
clRoYW5FcXVhbCh2ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygi
YnZlYzIgZ3JlYXRlclRoYW5FcXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygiYnZlYzMgZ3JlYXRlclRoYW5FcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVhbChpdmVjNCB4LCBp
dmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBlcXVhbCh2ZWMyIHgs
IHZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKHZlYzMgeCwg
dmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwodmVjNCB4LCB2
ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGVxdWFsKGl2ZWMyIHgs
IGl2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBlcXVhbChpdmVjMyB4
LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwoaXZlYzQg
eCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZXF1YWwoYnZl
YzIgeCwgYnZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKGJ2
ZWMzIHgsIGJ2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBlcXVhbChi
dmVjNCB4LCBidmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBub3RF
cXVhbCh2ZWMyIHgsIHZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5v
dEVxdWFsKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQg
bm90RXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWMyIG5vdEVxdWFsKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJidmVjMyBub3RFcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzQgbm90RXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBl
bmQoVFN0cmluZygiYnZlYzIgbm90RXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5vdEVxdWFsKGJ2ZWMzIHgsIGJ2ZWMzIHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBub3RFcXVhbChidmVjNCB4LCBidmVjNCB5KTsiKSk7
Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFueShidmVjMiB4KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygiYm9vbCBhbnkoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJvb2wgYW55KGJ2ZWM0IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wg
YWxsKGJ2ZWMyIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFsbChidmVjMyB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYm9vbCBhbGwoYnZlYzQgeCk7IikpOwotCi0g
ICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbm90KGJ2ZWMyIHgpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJidmVjMyBub3QoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImJ2ZWM0IG5vdChidmVjNCB4KTsiKSk7Ci0KLSAgICAvLwotICAgIC8vIFRleHR1cmUgRnVuY3Rp
b25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkQoc2FtcGxl
cjJEIHNhbXBsZXIsIHZlYzIgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0
IHRleHR1cmUyRFByb2ooc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlcjJEIHNhbXBsZXIsIHZl
YzQgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmVDdWJlKHNh
bXBsZXJDdWJlIHNhbXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLQotICAgIGlmIChyZXNvdXJjZXMu
T0VTX0VHTF9pbWFnZV9leHRlcm5hbCkgewotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0
IHRleHR1cmUyRChzYW1wbGVyRXh0ZXJuYWxPRVMgc2FtcGxlciwgdmVjMiBjb29yZCk7IikpOwot
ICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlckV4dGVy
bmFsT0VTIHNhbXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXJFeHRlcm5hbE9FUyBzYW1wbGVyLCB2ZWM0IGNv
b3JkKTsiKSk7Ci0gICAgfQotCi0gICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5n
bGUpIHsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRSZWN0KHNhbXBs
ZXIyRFJlY3Qgc2FtcGxlciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0IHRleHR1cmUyRFJlY3RQcm9qKHNhbXBsZXIyRFJlY3Qgc2FtcGxlciwgdmVjMyBj
b29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFJlY3RQ
cm9qKHNhbXBsZXIyRFJlY3Qgc2FtcGxlciwgdmVjNCBjb29yZCk7IikpOwotICAgIH0KLQotICAg
IC8vCi0gICAgLy8gTm9pc2UgZnVuY3Rpb25zLgotICAgIC8vCi0gICAgLy9zLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBub2lzZTEoZmxvYXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygi
ZmxvYXQgbm9pc2UxKHZlYzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoImZsb2F0
IG5vaXNlMSh2ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lz
ZTEodmVjNCAgeCk7IikpOwotCi0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMihm
bG9hdCB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWMyICB4
KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWMzICB4KTsiKSk7
Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWM0ICB4KTsiKSk7Ci0KLSAg
ICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKGZsb2F0IHgpOyIpKTsKLSAgICAvL3Mu
YXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKHZlYzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5k
KFRTdHJpbmcoInZlYzMgbm9pc2UzKHZlYzMgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJp
bmcoInZlYzMgbm9pc2UzKHZlYzQgIHgpOyIpKTsKLQotICAgIC8vcy5hcHBlbmQoVFN0cmluZygi
dmVjNCBub2lzZTQoZmxvYXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBu
b2lzZTQodmVjMiAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQo
dmVjMyAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjNCAg
eCk7IikpOwotCi0gICAgcmV0dXJuIHM7Ci19Ci0KLS8vPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8K
LS8vIFByb3RvdHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9ucyBzZWVuIGJ5IHZlcnRleCBzaGFk
ZXJzIG9ubHkuCi0vLwotLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBCdWls
dEluRnVuY3Rpb25zVmVydGV4KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQot
ewotICAgIFRTdHJpbmcgczsKLQotICAgIC8vCi0gICAgLy8gR2VvbWV0cmljIEZ1bmN0aW9ucy4K
LSAgICAvLwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBmdHJhbnNmb3JtKCk7IikpOwot
Ci0gICAgLy8KLSAgICAvLyBUZXh0dXJlIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzQgdGV4dHVyZTJETG9kKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMyIGNvb3Jk
LCBmbG9hdCBsb2QpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFBy
b2pMb2Qoc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0IGxvZCk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgc2FtcGxl
ciwgdmVjNCBjb29yZCwgZmxvYXQgbG9kKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
NCB0ZXh0dXJlQ3ViZUxvZChzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBs
b2QpOyIpKTsKLQotICAgIHJldHVybiBzOwotfQotCi0vLz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8v
CiAvLyBQcm90b3R5cGVzIGZvciBidWlsdC1pbiBmdW5jdGlvbnMgc2VlbiBieSBmcmFnbWVudCBz
aGFkZXJzIG9ubHkuCiAvLwogLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC01MDAsMTUgKzEzMywx
MiBAQCB2b2lkIFRCdWlsdEluczo6aW5pdGlhbGl6ZShTaFNoYWRlclR5cGUKICAgICBzd2l0Y2gg
KHR5cGUpIHsKICAgICBjYXNlIFNIX0ZSQUdNRU5UX1NIQURFUjoKICAgICAgICAgYnVpbHRJblN0
cmluZ3MucHVzaF9iYWNrKERlZmF1bHRQcmVjaXNpb25GcmFnbWVudCgpKTsKLSAgICAgICAgYnVp
bHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1aWx0SW5GdW5jdGlvbnNDb21tb24ocmVzb3VyY2VzKSk7
CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zRnJhZ21l
bnQocmVzb3VyY2VzKSk7CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhTdGFuZGFy
ZFVuaWZvcm1zKCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU0hfVkVSVEVYX1NIQURF
UjoKICAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKERlZmF1bHRQcmVjaXNpb25WZXJ0
ZXgoKSk7Ci0gICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25z
Q29tbW9uKHJlc291cmNlcykpOwotICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVp
bHRJbkZ1bmN0aW9uc1ZlcnRleChyZXNvdXJjZXMpKTsKICAgICAgICAgYnVpbHRJblN0cmluZ3Mu
cHVzaF9iYWNrKFN0YW5kYXJkVW5pZm9ybXMoKSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC01Mzks
NiArMTY5LDEwIEBAIHZvaWQgSWRlbnRpZnlCdWlsdElucyhTaFNoYWRlclR5cGUgdHlwZSwKICAg
ICAgICAgaWYgKHNwZWMgIT0gU0hfQ1NTX1NIQURFUlNfU1BFQykgewogICAgICAgICAgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnQ29s
b3IiKSwgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJh
Z0NvbG9yLCAgIDQpKSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFy
aWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdEYXRhW2dsX01heERyYXdCdWZmZXJzXSIpLCBU
VHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFGcmFnRGF0YSwgICAgNCkpKTsKKyAgICAgICAg
ICAgIGlmIChyZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGgpIHsKKyAgICAgICAgICAgICAgICBzeW1i
b2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdEZXB0
aEVYVCIpLCAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCByZXNvdXJjZXMuRnJhZ21lbnRQcmVj
aXNpb25IaWdoID8gRWJwSGlnaCA6IEVicE1lZGl1bSwgRXZxRnJhZ0RlcHRoLCAxKSkpOworICAg
ICAgICAgICAgICAgIHN5bWJvbFRhYmxlLnJlbGF0ZVRvRXh0ZW5zaW9uKCJnbF9GcmFnRGVwdGhF
WFQiLCAiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29s
VFN0cmluZygiY3NzX01peENvbG9yIiksICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0
LCBFYnBNZWRpdW0sIEV2cUdsb2JhbCwgICAgICA0KSkpOwogICAgICAgICAgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJjc3NfQ29sb3JNYXRyaXgi
KSwgICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxR2xvYmFsLCAg
ICAgIDQsIHRydWUpKSk7CkBAIC02NTYsNCArMjkwLDYgQEAgdm9pZCBJbml0RXh0ZW5zaW9uQmVo
YXZpb3IoY29uc3QgU2hCdWlsdAogICAgICAgICBleHRCZWhhdmlvclsiR0xfQVJCX3RleHR1cmVf
cmVjdGFuZ2xlIl0gPSBFQmhVbmRlZmluZWQ7CiAgICAgaWYgKHJlc291cmNlcy5FWFRfZHJhd19i
dWZmZXJzKQogICAgICAgICBleHRCZWhhdmlvclsiR0xfRVhUX2RyYXdfYnVmZmVycyJdID0gRUJo
VW5kZWZpbmVkOworICAgIGlmIChyZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGgpCisgICAgICAgIGV4
dEJlaGF2aW9yWyJHTF9FWFRfZnJhZ19kZXB0aCJdID0gRUJoVW5kZWZpbmVkOwogfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0ludGVybWVk
aWF0ZS5jcHAJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xMzEsNyArMTMxLDcg
QEAgY29uc3QgY2hhciogZ2V0T3BlcmF0b3JTdHJpbmcoVE9wZXJhdG9yCiAvLwogLy8gUmV0dXJu
cyB0aGUgYWRkZWQgbm9kZS4KIC8vCi1USW50ZXJtU3ltYm9sKiBUSW50ZXJtZWRpYXRlOjphZGRT
eW1ib2woaW50IGlkLCBjb25zdCBUU3RyaW5nJiBuYW1lLCBjb25zdCBUVHlwZSYgdHlwZSwgVFNv
dXJjZUxvYyBsaW5lKQorVEludGVybVN5bWJvbCogVEludGVybWVkaWF0ZTo6YWRkU3ltYm9sKGlu
dCBpZCwgY29uc3QgVFN0cmluZyYgbmFtZSwgY29uc3QgVFR5cGUmIHR5cGUsIGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVN5bWJvbCogbm9kZSA9IG5ldyBUSW50ZXJtU3lt
Ym9sKGlkLCBuYW1lLCB0eXBlKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtMTQ0LDcg
KzE0NCw3IEBAIFRJbnRlcm1TeW1ib2wqIFRJbnRlcm1lZGlhdGU6OmFkZFN5bWJvbCgKIC8vCiAv
LyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0
ZTo6YWRkQmluYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVy
bVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYyBsaW5lLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxl
KQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYXRoKFRPcGVyYXRvciBv
cCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQogewogICAgIHN3aXRjaCAob3Ap
IHsKICAgICAgICAgY2FzZSBFT3BFcXVhbDoKQEAgLTIwMCw4ICsyMDAsNiBAQCBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hCiAgICAgLy8gb25lIGFuZCBwcm9tb3RlIGl0
IHRvIHRoZSByaWdodCB0eXBlLgogICAgIC8vCiAgICAgVEludGVybUJpbmFyeSogbm9kZSA9IG5l
dyBUSW50ZXJtQmluYXJ5KG9wKTsKLSAgICBpZiAobGluZSA9PSAwKQotICAgICAgICBsaW5lID0g
cmlnaHQtPmdldExpbmUoKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAgbm9kZS0+
c2V0TGVmdChsZWZ0KTsKQEAgLTIzMCwxNSArMjI4LDEzIEBAIFRJbnRlcm1UeXBlZCogVEludGVy
bWVkaWF0ZTo6YWRkQmluYXJ5TWEKIC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8K
LVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKFRPcGVyYXRvciBvcCwgVElu
dGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jIGxpbmUpCitU
SW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEFzc2lnbihUT3BlcmF0b3Igb3AsIFRJbnRl
cm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSkKIHsKICAgICAvLwogICAgIC8vIExpa2UgYWRkaW5nIGJpbmFyeSBtYXRoLCBleGNlcHQgdGhl
IGNvbnZlcnNpb24gY2FuIG9ubHkgZ28KICAgICAvLyBmcm9tIHJpZ2h0IHRvIGxlZnQuCiAgICAg
Ly8KICAgICBUSW50ZXJtQmluYXJ5KiBub2RlID0gbmV3IFRJbnRlcm1CaW5hcnkob3ApOwotICAg
IGlmIChsaW5lID09IDApCi0gICAgICAgIGxpbmUgPSBsZWZ0LT5nZXRMaW5lKCk7CiAgICAgbm9k
ZS0+c2V0TGluZShsaW5lKTsKIAogICAgIFRJbnRlcm1UeXBlZCogY2hpbGQgPSBhZGRDb252ZXJz
aW9uKG9wLCBsZWZ0LT5nZXRUeXBlKCksIHJpZ2h0KTsKQEAgLTI2MCwxMSArMjU2LDkgQEAgVElu
dGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRBc3NpZ24oVAogLy8gUmV0dXJucyB0aGUgYWRk
ZWQgbm9kZS4KIC8vIFRoZSBjYWxsZXIgc2hvdWxkIHNldCB0aGUgdHlwZSBvZiB0aGUgcmV0dXJu
ZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KFRPcGVy
YXRvciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBUU291cmNl
TG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KFRPcGVyYXRv
ciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBjb25zdCBUU291
cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRlcm1CaW5hcnkqIG5vZGUgPSBuZXcgVEludGVybUJp
bmFyeShvcCk7Ci0gICAgaWYgKGxpbmUgPT0gMCkKLSAgICAgICAgbGluZSA9IGluZGV4LT5nZXRM
aW5lKCk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKICAgICBub2RlLT5zZXRMZWZ0KGJhc2Up
OwogICAgIG5vZGUtPnNldFJpZ2h0KGluZGV4KTsKQEAgLTI3OSwxMyArMjczLDEzIEBAIFRJbnRl
cm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkSW5kZXgoVE8KIC8vCiAvLyBSZXR1cm5zIHRoZSBh
ZGRlZCBub2RlLgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkVW5hcnlNYXRo
KFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIGNoaWxkTm9kZSwgVFNvdXJjZUxvYyBsaW5lLCBU
U3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjph
ZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtTm9kZSogY2hpbGROb2RlLCBjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQogewogICAgIFRJbnRl
cm1VbmFyeSogbm9kZTsKICAgICBUSW50ZXJtVHlwZWQqIGNoaWxkID0gY2hpbGROb2RlLT5nZXRB
c1R5cGVkKCk7CiAKICAgICBpZiAoY2hpbGQgPT0gMCkgewotICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJCYWQgdHlwZSBpbiBBZGRVbmFyeU1hdGgi
LCBsaW5lKTsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVy
cm9yLCBsaW5lLCAiQmFkIHR5cGUgaW4gQWRkVW5hcnlNYXRoIik7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIApAQCAtMzQ4LDggKzM0Miw2IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0
ZTo6YWRkVW5hcnlNYXQKICAgICAvLyBNYWtlIGEgbmV3IG5vZGUgZm9yIHRoZSBvcGVyYXRvci4K
ICAgICAvLwogICAgIG5vZGUgPSBuZXcgVEludGVybVVuYXJ5KG9wKTsKLSAgICBpZiAobGluZSA9
PSAwKQotICAgICAgICBsaW5lID0gY2hpbGQtPmdldExpbmUoKTsKICAgICBub2RlLT5zZXRMaW5l
KGxpbmUpOwogICAgIG5vZGUtPnNldE9wZXJhbmQoY2hpbGQpOwogCkBAIC0zNzYsNyArMzY4LDcg
QEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdAogLy8gUmV0dXJucyBh
biBhZ2dyZWdhdGUgbm9kZSwgd2hpY2ggY291bGQgYmUgdGhlIG9uZSBwYXNzZWQgaW4gaWYKIC8v
IGl0IHdhcyBhbHJlYWR5IGFuIGFnZ3JlZ2F0ZSBidXQgbm8gb3BlcmF0b3Igd2FzIHNldC4KIC8v
Ci1USW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcihU
SW50ZXJtTm9kZSogbm9kZSwgVE9wZXJhdG9yIG9wLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJt
QWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9k
ZSogbm9kZSwgVE9wZXJhdG9yIG9wLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIFRJ
bnRlcm1BZ2dyZWdhdGUqIGFnZ05vZGU7CiAKQEAgLTM5MSw4ICszODMsNiBAQCBUSW50ZXJtQWdn
cmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyCiAgICAgICAgICAgICAvLwogICAgICAgICAg
ICAgYWdnTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKCk7CiAgICAgICAgICAgICBhZ2dOb2Rl
LT5nZXRTZXF1ZW5jZSgpLnB1c2hfYmFjayhub2RlKTsKLSAgICAgICAgICAgIGlmIChsaW5lID09
IDApCi0gICAgICAgICAgICAgICAgbGluZSA9IG5vZGUtPmdldExpbmUoKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZQogICAgICAgICBhZ2dOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoKTsKQEAg
LTQwMSw4ICszOTEsNyBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dy
CiAgICAgLy8gU2V0IHRoZSBvcGVyYXRvci4KICAgICAvLwogICAgIGFnZ05vZGUtPnNldE9wKG9w
KTsKLSAgICBpZiAobGluZSAhPSAwKQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOwor
ICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1cm4gYWdnTm9kZTsKIH0KQEAg
LTQ5MSw3ICs0ODAsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNp
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OiAgIG5ld09wID0gRU9wQ29udkludFRv
RmxvYXQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOiAgbmV3T3Ag
PSBFT3BDb252Qm9vbFRvRmxvYXQ7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlvbiBub2RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFkIHByb21vdGlvbiBub2RlIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC01MDAsNyArNDg5LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRp
YXRlOjphZGRDb252ZXJzaQogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDogICBuZXdP
cCA9IEVPcENvbnZJbnRUb0Jvb2w7ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0RmxvYXQ6IG5ld09wID0gRU9wQ29udkZsb2F0VG9Cb29sOyBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gbm9kZSIsIG5vZGUt
PmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3Nh
Z2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJhZCBwcm9tb3Rpb24g
bm9kZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTA5LDEyICs0OTgsMTIgQEAgVEludGVy
bVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb252ZXJzaQogICAgICAgICAgICAgICAgICAgICBj
YXNlIEVidEJvb2w6ICAgbmV3T3AgPSBFT3BDb252Qm9vbFRvSW50OyAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6ICBuZXdPcCA9IEVPcENvbnZGbG9hdFRvSW50OyBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJhZCBwcm9t
b3Rpb24gbm9kZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUo
KSwgIkJhZCBwcm9tb3Rpb24gbm9kZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsICJCYWQgcHJvbW90aW9uIHR5cGUiLCBub2RlLT5nZXRMaW5lKCkpOwor
ICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFkIHByb21vdGlvbiB0eXBlIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIApAQCAtNTM0LDcgKzUyMyw3IEBAIFRJbnRlcm1UeXBl
ZCogVEludGVybWVkaWF0ZTo6YWRkQ29udmVyc2kKIC8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBh
Z2dyZWdhdGUsIHVubGVzcyAwIHdhcyBwYXNzZWQgaW4gZm9yCiAvLyBib3RoIGV4aXN0aW5nIG5v
ZGVzLgogLy8KLVRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2dyZWdhdGUo
VEludGVybU5vZGUqIGxlZnQsIFRJbnRlcm1Ob2RlKiByaWdodCwgVFNvdXJjZUxvYyBsaW5lKQor
VEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9k
ZSogbGVmdCwgVEludGVybU5vZGUqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewog
ICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQgPT0gMCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01
NTEsOCArNTQwLDcgQEAgVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jvd0FnZwog
ICAgIGlmIChyaWdodCkKICAgICAgICAgYWdnTm9kZS0+Z2V0U2VxdWVuY2UoKS5wdXNoX2JhY2so
cmlnaHQpOwogCi0gICAgaWYgKGxpbmUgIT0gMCkKLSAgICAgICAgYWdnTm9kZS0+c2V0TGluZShs
aW5lKTsKKyAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAgcmV0dXJuIGFnZ05vZGU7
CiB9CkBAIC01NjIsMTggKzU1MCwxNCBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRl
Ojpncm93QWdnCiAvLwogLy8gUmV0dXJucyBhbiBhZ2dyZWdhdGUsIHVubGVzcyAwIHdhcyBwYXNz
ZWQgaW4gZm9yIHRoZSBleGlzdGluZyBub2RlLgogLy8KLVRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRl
cm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUqIG5vZGUsIFRTb3VyY2VMb2MgbGlu
ZSkKK1RJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUoVEludGVy
bU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgaWYgKG5vZGUgPT0g
MCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBUSW50ZXJtQWdncmVnYXRlKiBhZ2dOb2RlID0g
bmV3IFRJbnRlcm1BZ2dyZWdhdGU7CiAgICAgYWdnTm9kZS0+Z2V0U2VxdWVuY2UoKS5wdXNoX2Jh
Y2sobm9kZSk7Ci0KLSAgICBpZiAobGluZSAhPSAwKQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5l
KGxpbmUpOwotICAgIGVsc2UKLSAgICAgICAgYWdnTm9kZS0+c2V0TGluZShub2RlLT5nZXRMaW5l
KCkpOworICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1cm4gYWdnTm9kZTsK
IH0KQEAgLTU4NSw3ICs1NjksNyBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpt
YWtlQWdnCiAvLwogLy8gUmV0dXJucyB0aGUgc2VsZWN0aW9uIG5vZGUgY3JlYXRlZC4KIC8vCi1U
SW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29u
ZCwgVEludGVybU5vZGVQYWlyIG5vZGVQYWlyLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtTm9k
ZSogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVy
bU5vZGVQYWlyIG5vZGVQYWlyLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIC8vCiAg
ICAgLy8gRm9yIGNvbXBpbGUgdGltZSBjb25zdGFudCBzZWxlY3Rpb25zLCBwcnVuZSB0aGUgY29k
ZSBhbmQKQEAgLTU5Myw3ICs1NzcsNyBAQCBUSW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRk
U2VsZWN0aW9uCiAgICAgLy8KIAogICAgIGlmIChjb25kLT5nZXRBc1R5cGVkKCkgJiYgY29uZC0+
Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgewotICAgICAgICBpZiAoY29uZC0+
Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KS0+Z2V0QkNvbnN0KCkgPT0gdHJ1ZSkKKyAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRV
bmlvbigpLT5nZXRCQ29uc3QoMCkgPT0gdHJ1ZSkKICAgICAgICAgICAgIHJldHVybiBub2RlUGFp
ci5ub2RlMSA/IHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKG5vZGVQYWlyLm5vZGUxLCBFT3BTZXF1ZW5j
ZSwgbm9kZVBhaXIubm9kZTEtPmdldExpbmUoKSkgOiBOVUxMOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICByZXR1cm4gbm9kZVBhaXIubm9kZTIgPyBzZXRBZ2dyZWdhdGVPcGVyYXRvcihub2Rl
UGFpci5ub2RlMiwgRU9wU2VxdWVuY2UsIG5vZGVQYWlyLm5vZGUyLT5nZXRMaW5lKCkpIDogTlVM
TDsKQEAgLTYwNiw3ICs1OTAsNyBAQCBUSW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkU2Vs
ZWN0aW9uCiB9CiAKIAotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb21tYShUSW50
ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MgbGluZSkKK1RJ
bnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQ29tbWEoVEludGVybVR5cGVkKiBsZWZ0LCBU
SW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGlmIChs
ZWZ0LT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYgcmlnaHQtPmdldFR5
cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewogICAgICAgICByZXR1cm4gcmlnaHQ7
CkBAIC02MjYsNyArNjEwLDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb21t
YShUSQogLy8KIC8vIFJldHVybnMgdGhlIHNlbGVjdGlvbiBub2RlIGNyZWF0ZWQsIG9yIDAgaWYg
b25lIGNvdWxkIG5vdCBiZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFNl
bGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50
ZXJtVHlwZWQqIGZhbHNlQmxvY2ssIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVElu
dGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVk
KiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCogZmFsc2VCbG9jaywgY29uc3QgVFNvdXJjZUxvYyYg
bGluZSkKIHsKICAgICAvLwogICAgIC8vIEdldCBjb21wYXRpYmxlIHR5cGVzLgpAQCAtNjQ3LDcg
KzYzMSw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW8KICAgICAv
LwogCiAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRVbmlvbigpICYmIHRydWVCbG9jay0+Z2V0
QXNDb25zdGFudFVuaW9uKCkgJiYgZmFsc2VCbG9jay0+Z2V0QXNDb25zdGFudFVuaW9uKCkpIHsK
LSAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9p
bnRlcigpLT5nZXRCQ29uc3QoKSkKKyAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRVbmlv
bigpLT5nZXRCQ29uc3QoMCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZUJsb2NrOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gZmFsc2VCbG9jazsKQEAgLTY2OSw3ICs2NTMsNyBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvCiAvLyBSZXR1cm5zIHRo
ZSBjb25zdGFudCB1bmlvbiBub2RlIGNyZWF0ZWQuCiAvLwogCi1USW50ZXJtQ29uc3RhbnRVbmlv
biogVEludGVybWVkaWF0ZTo6YWRkQ29uc3RhbnRVbmlvbihDb25zdGFudFVuaW9uKiB1bmlvbkFy
cmF5UG9pbnRlciwgY29uc3QgVFR5cGUmIHQsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1Db25z
dGFudFVuaW9uKiBUSW50ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24q
IHVuaW9uQXJyYXlQb2ludGVyLCBjb25zdCBUVHlwZSYgdCwgY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSkKIHsKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSA9IG5ldyBUSW50ZXJtQ29uc3Rh
bnRVbmlvbih1bmlvbkFycmF5UG9pbnRlciwgdCk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsK
QEAgLTY3Nyw3ICs2NjEsNyBAQCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogVEludGVybWVkaWF0ZTo6
YWRkCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6
YWRkU3dpenpsZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRl
cm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU3dpenpsZShUVmVjdG9yRmllbGRzJiBmaWVsZHMs
IGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAKICAgICBUSW50ZXJtQWdncmVnYXRlKiBub2Rl
ID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOwpAQCAtNzAwLDcgKzY4NCw3IEBA
IFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU3dpenpsZSgKIC8vCiAvLyBDcmVhdGUg
bG9vcCBub2Rlcy4KIC8vCi1USW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkTG9vcChUTG9v
cFR5cGUgdHlwZSwgVEludGVybU5vZGUqIGluaXQsIFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVy
bVR5cGVkKiBleHByLCBUSW50ZXJtTm9kZSogYm9keSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVy
bU5vZGUqIFRJbnRlcm1lZGlhdGU6OmFkZExvb3AoVExvb3BUeXBlIHR5cGUsIFRJbnRlcm1Ob2Rl
KiBpbml0LCBUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogZXhwciwgVEludGVybU5v
ZGUqIGJvZHksIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybU5vZGUqIG5v
ZGUgPSBuZXcgVEludGVybUxvb3AodHlwZSwgaW5pdCwgY29uZCwgZXhwciwgYm9keSk7CiAgICAg
bm9kZS0+c2V0TGluZShsaW5lKTsKQEAgLTcxMSwxMiArNjk1LDEyIEBAIFRJbnRlcm1Ob2RlKiBU
SW50ZXJtZWRpYXRlOjphZGRMb29wKFRMb28KIC8vCiAvLyBBZGQgYnJhbmNoZXMuCiAvLwotVElu
dGVybUJyYW5jaCogVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVyYXRvciBicmFuY2hPcCwg
VFNvdXJjZUxvYyBsaW5lKQorVEludGVybUJyYW5jaCogVEludGVybWVkaWF0ZTo6YWRkQnJhbmNo
KFRPcGVyYXRvciBicmFuY2hPcCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICByZXR1
cm4gYWRkQnJhbmNoKGJyYW5jaE9wLCAwLCBsaW5lKTsKIH0KIAotVEludGVybUJyYW5jaCogVElu
dGVybWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVyYXRvciBicmFuY2hPcCwgVEludGVybVR5cGVkKiBl
eHByZXNzaW9uLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRl
OjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBUSW50ZXJtVHlwZWQqIGV4cHJlc3Npb24s
IGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybUJyYW5jaCogbm9kZSA9IG5l
dyBUSW50ZXJtQnJhbmNoKGJyYW5jaE9wLCBleHByZXNzaW9uKTsKICAgICBub2RlLT5zZXRMaW5l
KGxpbmUpOwpAQCAtODQ2LDYgKzgzMCw3IEBAIGJvb2wgVEludGVybVVuYXJ5Ojpwcm9tb3RlKFRJ
bmZvU2luayYpCiAgICAgfQogCiAgICAgc2V0VHlwZShvcGVyYW5kLT5nZXRUeXBlKCkpOworICAg
IHR5cGUuc2V0UXVhbGlmaWVyKEV2cVRlbXBvcmFyeSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTg2MCw3ICs4NDUsNyBAQCBib29sIFRJbnRlcm1CaW5hcnk6OnByb21vdGUoVEluZm9TaW5r
JiBpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBvbmx5IGhhbmRsZXMgc2NhbGFycywgdmVjdG9y
cywgYW5kIG1hdHJpY2VzLgogICAgIGlmIChsZWZ0LT5pc0FycmF5KCkgfHwgcmlnaHQtPmlzQXJy
YXkoKSkgewotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsICJJbnZhbGlkIG9wZXJhdGlvbiBmb3IgYXJyYXlzIiwgZ2V0TGluZSgpKTsKKyAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJJ
bnZhbGlkIG9wZXJhdGlvbiBmb3IgYXJyYXlzIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTk2NSw3ICs5NTAsNyBAQCBib29sIFRJbnRlcm1CaW5hcnk6OnByb21vdGUoVElu
Zm9TaW5rJiBpCiAgICAgICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBo
aWdoZXJQcmVjaXNpb24sIEV2cVRlbXBvcmFyeSwgc2l6ZSwgZmFsc2UpKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIk1pc3NpbmcgZWxzZXMiLCBnZXRMaW5l
KCkpOworICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgZ2V0TGluZSgpLCAiTWlzc2luZyBlbHNlcyIpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTk0LDcg
Kzk3OSw3IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKICAgICAg
ICAgICAgICAgICAgICAgc2V0VHlwZShUVHlwZShiYXNpY1R5cGUsIGhpZ2hlclByZWNpc2lvbiwg
RXZxVGVtcG9yYXJ5LCBzaXplLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhJbnRlcm5hbEVycm9yLCAiTWlzc2luZyBlbHNlcyIsIGdldExpbmUoKSk7CisgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5l
KCksICJNaXNzaW5nIGVsc2VzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDM0LDIzICsxMDE5LDIyIEBAIGJv
b2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKIAogYm9vbCBDb21wYXJlU3Ry
dWN0KGNvbnN0IFRUeXBlJiBsZWZ0Tm9kZVR5cGUsIENvbnN0YW50VW5pb24qIHJpZ2h0VW5pb25B
cnJheSwgQ29uc3RhbnRVbmlvbiogbGVmdFVuaW9uQXJyYXkpCiB7Ci0gICAgY29uc3QgVFR5cGVM
aXN0KiBmaWVsZHMgPSBsZWZ0Tm9kZVR5cGUuZ2V0U3RydWN0KCk7CisgICAgY29uc3QgVEZpZWxk
TGlzdCYgZmllbGRzID0gbGVmdE5vZGVUeXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKIAotICAg
IHNpemVfdCBzdHJ1Y3RTaXplID0gZmllbGRzLT5zaXplKCk7Ci0gICAgaW50IGluZGV4ID0gMDsK
KyAgICBzaXplX3Qgc3RydWN0U2l6ZSA9IGZpZWxkcy5zaXplKCk7CisgICAgc2l6ZV90IGluZGV4
ID0gMDsKIAogICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgc3RydWN0U2l6ZTsgaisrKSB7Ci0g
ICAgICAgIGludCBzaXplID0gKCpmaWVsZHMpW2pdLnR5cGUtPmdldE9iamVjdFNpemUoKTsKLSAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIGlmICgo
KmZpZWxkcylbal0udHlwZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFDb21wYXJlU3RydWN0dXJlKCooKmZpZWxkcylbal0udHlwZSwgJnJpZ2h0
VW5pb25BcnJheVtpbmRleF0sICZsZWZ0VW5pb25BcnJheVtpbmRleF0pKQorICAgICAgICBzaXpl
X3Qgc2l6ZSA9IGZpZWxkc1tqXS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZmllbGRz
W2pdLT50eXBlKCktPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgeworICAgICAgICAgICAg
ICAgIGlmICghQ29tcGFyZVN0cnVjdHVyZSgqKGZpZWxkc1tqXS0+dHlwZSgpKSwgJnJpZ2h0VW5p
b25BcnJheVtpbmRleF0sICZsZWZ0VW5pb25BcnJheVtpbmRleF0pKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IGlmIChsZWZ0VW5pb25BcnJheVtpbmRleF0gIT0gcmlnaHRVbmlvbkFycmF5W2luZGV4XSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGluZGV4Kys7
CiAgICAgICAgICAgICB9Ci0KICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTEwNjIsMTAgKzEwNDYsMTAgQEAgYm9vbCBDb21wYXJlU3RydWN0dXJlKGNvbnN0IFRUeXBlJiBs
ZWZ0TgogICAgICAgICBUVHlwZSB0eXBlV2l0aG91dEFycmF5bmVzcyA9IGxlZnROb2RlVHlwZTsK
ICAgICAgICAgdHlwZVdpdGhvdXRBcnJheW5lc3MuY2xlYXJBcnJheW5lc3MoKTsKIAotICAgICAg
ICBpbnQgYXJyYXlTaXplID0gbGVmdE5vZGVUeXBlLmdldEFycmF5U2l6ZSgpOworICAgICAgICBz
aXplX3QgYXJyYXlTaXplID0gbGVmdE5vZGVUeXBlLmdldEFycmF5U2l6ZSgpOwogCi0gICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpIHsKLSAgICAgICAgICAgIGludCBv
ZmZzZXQgPSB0eXBlV2l0aG91dEFycmF5bmVzcy5nZXRPYmplY3RTaXplKCkgKiBpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKSB7CisgICAgICAgICAgICBz
aXplX3Qgb2Zmc2V0ID0gdHlwZVdpdGhvdXRBcnJheW5lc3MuZ2V0T2JqZWN0U2l6ZSgpICogaTsK
ICAgICAgICAgICAgIGlmICghQ29tcGFyZVN0cnVjdCh0eXBlV2l0aG91dEFycmF5bmVzcywgJnJp
Z2h0VW5pb25BcnJheVtvZmZzZXRdLCAmbGVmdFVuaW9uQXJyYXlbb2Zmc2V0XSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMDg1LDcgKzEwNjksNyBAQCBi
b29sIENvbXBhcmVTdHJ1Y3R1cmUoY29uc3QgVFR5cGUmIGxlZnROCiBUSW50ZXJtVHlwZWQqIFRJ
bnRlcm1Db25zdGFudFVuaW9uOjpmb2xkKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBjb25z
dGFudE5vZGUsIFRJbmZvU2luayYgaW5mb1NpbmspCiB7CiAgICAgQ29uc3RhbnRVbmlvbiAqdW5p
b25BcnJheSA9IGdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0gICAgaW50IG9iamVjdFNpemUgPSBn
ZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgIHNpemVfdCBvYmplY3RTaXplID0gZ2V0VHlw
ZSgpLmdldE9iamVjdFNpemUoKTsKIAogICAgIGlmIChjb25zdGFudE5vZGUpIHsgIC8vIGJpbmFy
eSBvcGVyYXRpb25zCiAgICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2RlID0gY29uc3Rh
bnROb2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTEwOTUsMTMgKzEwNzksMTMgQEAgVElu
dGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAvLyBmb3IgYSBj
YXNlIGxpa2UgZmxvYXQgZiA9IDEuMiArIHZlYzQoMiwzLDQsNSk7CiAgICAgICAgIGlmIChjb25z
dGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkgPT0gMSAmJiBvYmplY3RTaXplID4g
MSkgewogICAgICAgICAgICAgcmlnaHRVbmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2Jq
ZWN0U2l6ZV07Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7ICsr
aSkKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgKytpKQog
ICAgICAgICAgICAgICAgIHJpZ2h0VW5pb25BcnJheVtpXSA9ICpub2RlLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpOwogICAgICAgICAgICAgcmV0dXJuVHlwZSA9IGdldFR5cGUoKTsKICAgICAgICAg
fSBlbHNlIGlmIChjb25zdGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkgPiAxICYm
IG9iamVjdFNpemUgPT0gMSkgewogICAgICAgICAgICAgLy8gZm9yIGEgY2FzZSBsaWtlIGZsb2F0
IGYgPSB2ZWM0KDIsMyw0LDUpICsgMS4yOwogICAgICAgICAgICAgdW5pb25BcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uW2NvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKV07Ci0g
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdl
dE9iamVjdFNpemUoKTsgKytpKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b25zdGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7ICsraSkKICAgICAgICAgICAg
ICAgICB1bmlvbkFycmF5W2ldID0gKmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAgICAgICAgICAg
ICByZXR1cm5UeXBlID0gbm9kZS0+Z2V0VHlwZSgpOwogICAgICAgICAgICAgb2JqZWN0U2l6ZSA9
IGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKQEAgLTExMTUsMTQgKzEw
OTksMTQgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAg
ICAgICAgY2FzZSBFT3BBZGQ6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBN
U1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RT
aXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Jq
ZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0g
PSB1bmlvbkFycmF5W2ldICsgcmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRU9wU3ViOgogICAgICAg
ICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07
CiAgICAgICAgICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldID0gdW5pb25BcnJheVtpXSAtIHJpZ2h0VW5p
b25BcnJheVtpXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMTMyLDEzICsxMTE2LDEzIEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246
OmZvbGQKICAgICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6CiAgICAgICAgICAg
ICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAg
ICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAg
ICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldICogcmlnaHRVbmlvbkFy
cmF5W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXg6CiAgICAgICAgICAgICAgICAgaWYgKGdl
dFR5cGUoKS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCB8fCBub2RlLT5nZXRCYXNpY1R5cGUo
KSAhPSBFYnRGbG9hdCkgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3Nh
Z2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBkb25l
IGZvciBtYXRyaXggbXVsdGlwbHkiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNv
bnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCBtdWx0aXBseSIpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCkBAIC0xMTU3LDExICsxMTQxLDExIEBAIFRJbnRl
cm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgIGNhc2UgRU9w
RGl2OgogICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25b
b2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAg
ICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsr
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5
cGUoKSkgewogICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICBpZiAo
cmlnaHRVbmlvbkFycmF5W2ldID09IDAuMGYpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhXYXJuaW5nLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVy
aW5nIGNvbnN0YW50IGZvbGRpbmciLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsIGdldExpbmUoKSwgIkRpdmlkZSBi
eSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIik7CiAgICAgICAgICAgICAgICAg
ICAgIHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCh1bmlvbkFycmF5W2ldLmdldEZDb25zdCgp
IDwgMCA/IC1GTFRfTUFYIDogRkxUX01BWCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCh1bmlvbkFycmF5W2ld
LmdldEZDb25zdCgpIC8gcmlnaHRVbmlvbkFycmF5W2ldLmdldEZDb25zdCgpKTsKQEAgLTExNjks
MTMgKzExNTMsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAog
CiAgICAgICAgICAgICBjYXNlIEVidEludDoKICAgICAgICAgICAgICAgICBpZiAocmlnaHRVbmlv
bkFycmF5W2ldID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhXYXJuaW5nLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50
IGZvbGRpbmciLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsIGdldExpbmUoKSwgIkRpdmlkZSBieSB6ZXJvIGVycm9y
IGR1cmluZyBjb25zdGFudCBmb2xkaW5nIik7CiAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25z
dEFycmF5W2ldLnNldElDb25zdChJTlRfTUFYKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0KHVuaW9uQXJyYXlb
aV0uZ2V0SUNvbnN0KCkgLyByaWdodFVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDb25zdGFudCBmb2xk
aW5nIGNhbm5vdCBiZSBkb25lIGZvciBcIi9cIiIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCks
ICJDb25zdGFudCBmb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciBcIi9cIiIpOwogICAgICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICB9CkBAIC0xMTg0LDcgKzExNjgsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25z
dGFudFVuaW9uOjpmb2xkCiAKICAgICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNWZWN0b3I6
CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KSB7
Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCB0aW1l
cyB2ZWN0b3IiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50IEZvbGRp
bmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCB0aW1lcyB2ZWN0b3IiKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRl
bXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bZ2V0Tm9taW5hbFNpemUoKV07CkBAIC0x
MjA1LDcgKzExODksNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xk
CiAKICAgICAgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6CiAgICAgICAgICAgICAg
ICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCkgewotICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJD
b25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciB2ZWN0b3IgdGltZXMgbWF0cml4Iiwg
Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBi
ZSBkb25lIGZvciB2ZWN0b3IgdGltZXMgbWF0cml4Iik7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTIyMyw3ICsxMjA3LDcgQEAgVEludGVy
bVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BM
b2dpY2FsQW5kOiAvLyB0aGlzIGNvZGUgaXMgd3JpdHRlbiBmb3IgcG9zc2libGUgZnV0dXJlIHVz
ZSwgd2lsbCBub3QgZ2V0IGV4ZWN1dGVkIGN1cnJlbnRseQogICAgICAgICAgICAgICAgIHRlbXBD
b25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAg
ICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgIHRl
bXBDb25zdEFycmF5W2ldID0gdW5pb25BcnJheVtpXSAmJiByaWdodFVuaW9uQXJyYXlbaV07CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTIzMSw3ICsxMjE1
LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAg
ICAgY2FzZSBFT3BMb2dpY2FsT3I6IC8vIHRoaXMgY29kZSBpcyB3cml0dGVuIGZvciBwb3NzaWJs
ZSBmdXR1cmUgdXNlLCB3aWxsIG5vdCBnZXQgZXhlY3V0ZWQgY3VycmVudGx5CiAgICAgICAgICAg
ICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAg
ICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAg
ICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldIHx8IHJpZ2h0VW5pb25B
cnJheVtpXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MjM5LDcgKzEyMjMsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xk
CiAgICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxYb3I6CiAgICAgICAgICAgICAgICAgdGVtcENv
bnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAg
ICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgc3dp
dGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9v
bDogdGVtcENvbnN0QXJyYXlbaV0uc2V0QkNvbnN0KCh1bmlvbkFycmF5W2ldID09IHJpZ2h0VW5p
b25BcnJheVtpXSkgPyBmYWxzZSA6IHRydWUpOyBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6
IGFzc2VydChmYWxzZSAmJiAiRGVmYXVsdCBtaXNzaW5nIik7CkBAIC0xMjg1LDcgKzEyNjksNyBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICAg
ICAgICAgIGlmICghQ29tcGFyZVN0cnVjdHVyZShub2RlLT5nZXRUeXBlKCksIG5vZGUtPmdldFVu
aW9uQXJyYXlQb2ludGVyKCksIHVuaW9uQXJyYXkpKQogICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgeworICAgICAg
ICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaW9uQXJyYXlbaV0gIT0gcmlnaHRVbmlvbkFy
cmF5W2ldKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgIC8vIGJyZWFrIG91dCBvZiBm
b3IgbG9vcApAQCAtMTMxMSw3ICsxMjk1LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3Rh
bnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgICAgICAgICBpZiAoQ29tcGFyZVN0cnVjdHVyZShu
b2RlLT5nZXRUeXBlKCksIG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCksIHVuaW9uQXJyYXkp
KQogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG9iamVjdFNpemU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG9iamVjdFNpemU7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVu
aW9uQXJyYXlbaV0gPT0gcmlnaHRVbmlvbkFycmF5W2ldKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsgIC8vIGJyZWFrIG91dCBvZiBmb3IgbG9vcApAQCAtMTMzMyw3ICsxMzE3LDcgQEAg
VEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgICAg
IHJldHVybiB0ZW1wTm9kZTsKIAogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJJbnZhbGlkIG9w
ZXJhdG9yIGZvciBjb25zdGFudCBmb2xkaW5nIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwg
IkludmFsaWQgb3BlcmF0b3IgZm9yIGNvbnN0YW50IGZvbGRpbmciKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICB0ZW1wTm9kZSA9IG5ldyBUSW50ZXJtQ29u
c3RhbnRVbmlvbih0ZW1wQ29uc3RBcnJheSwgcmV0dXJuVHlwZSk7CkBAIC0xMzQ2LDE0ICsxMzMw
LDE0IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAg
Ly8KICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5ld05vZGUgPSAwOwogICAgICAgICBD
b25zdGFudFVuaW9uKiB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNp
emVdOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgeworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewogICAgICAgICAg
ICAgc3dpdGNoKG9wKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBFT3BOZWdhdGl2ZToKICAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6IHRlbXBDb25zdEFycmF5W2ldLnNldEZD
b25zdCgtdW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSk7IGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBFYnRJbnQ6ICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0KC11bmlv
bkFycmF5W2ldLmdldElDb25zdCgpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8g
Y29uc3RhbnQiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkg
b3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTM2MSw3ICsxMzQ1LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJt
Q29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUo
KS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29s
OiAgdGVtcENvbnN0QXJyYXlbaV0uc2V0QkNvbnN0KCF1bmlvbkFycmF5W2ldLmdldEJDb25zdCgp
KTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiLCBnZXRMaW5lKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQg
aW50byBjb25zdGFudCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM3
Nyw2NSArMTM2MSw2NCBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xk
CiAKIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6cHJvbW90ZUNvbnN0YW50VW5pb24oVEJh
c2ljVHlwZSBwcm9tb3RlVG8sIFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2RlKQogewotICAgIENv
bnN0YW50VW5pb24gKnJpZ2h0VW5pb25BcnJheSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVy
KCk7Ci0gICAgaW50IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAg
IHNpemVfdCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKIAogICAgIENv
bnN0YW50VW5pb24gKmxlZnRVbmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bc2l6ZV07CiAK
LSAgICBmb3IgKGludCBpPTA7IGkgPCBzaXplOyBpKyspIHsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7IGkrKykgewogCiAgICAgICAgIHN3aXRjaCAocHJvbW90ZVRvKSB7CiAgICAg
ICAgICAgICBjYXNlIEVidEZsb2F0OgogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0
VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50
OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0
YXRpY19jYXN0PGZsb2F0PihyaWdodFVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNfY2Fz
dDxmbG9hdD4obm9kZS0+Z2V0SUNvbnN0KGkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAgICAg
ICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihy
aWdodFVuaW9uQXJyYXlbaV0uZ2V0QkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4obm9kZS0+Z2V0
QkNvbnN0KGkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlv
bkFycmF5W2ldID0gcmlnaHRVbmlvbkFycmF5W2ldOworICAgICAgICAgICAgICAgICAgICAgICAg
bGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRG
Q29uc3QoaSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5t
ZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQ2Fubm90IHByb21vdGUiLCBub2RlLT5nZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJDYW5ub3QgcHJvbW90ZSIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAgICAgICAg
ICAgICAgc3dpdGNoIChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5p
b25BcnJheVtpXSA9IHJpZ2h0VW5pb25BcnJheVtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmdldElD
b25zdChpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFy
cmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRC
Q29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0
SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0QkNvbnN0KGkpKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0
aWNfY2FzdDxpbnQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGlu
dD4obm9kZS0+Z2V0RkNvbnN0KGkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNhbm5vdCBwcm9tb3Rl
Iiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQ2Fubm90
IHByb21vdGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9v
bDoKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUo
KSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChyaWdodFVuaW9uQXJyYXlbaV0uZ2V0
SUNvbnN0KCkgIT0gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtp
XS5zZXRCQ29uc3Qobm9kZS0+Z2V0SUNvbnN0KGkpICE9IDApOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldID0gcmlnaHRVbmlvbkFycmF5W2ldOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUt
PmdldEJDb25zdChpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRV
bmlvbkFycmF5W2ldLnNldEJDb25zdChyaWdodFVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgIT0g
MC4wZik7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29u
c3Qobm9kZS0+Z2V0RkNvbnN0KGkpICE9IDAuMGYpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDYW5ub3Qg
cHJvbW90ZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZv
U2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwg
IkNhbm5vdCBwcm9tb3RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRl
cm5hbEVycm9yLCAiSW5jb3JyZWN0IGRhdGEgdHlwZSBmb3VuZCIsIG5vZGUtPmdldExpbmUoKSk7
CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVy
cm9yLCBub2RlLT5nZXRMaW5lKCksICJJbmNvcnJlY3QgZGF0YSB0eXBlIGZvdW5kIik7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmNwcAkocmV2aXNpb24g
MTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdM
U0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwzICsxOSwxNyBAQCBib29sIFRPdXRwdXRHTFNM
Ojp3cml0ZVZhcmlhYmxlUHJlY2lzaW9uCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCit2b2lk
IFRPdXRwdXRHTFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKiBub2RlKQoreworICAgIFRJ
bmZvU2lua0Jhc2UmIG91dCA9IG9ialNpbmsoKTsKKworICAgIGlmIChub2RlLT5nZXRTeW1ib2wo
KSA9PSAiZ2xfRnJhZ0RlcHRoRVhUIikKKyAgICB7CisgICAgICAgIG91dCA8PCAiZ2xfRnJhZ0Rl
cHRoIjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgVE91dHB1dEdMU0xCYXNlOjp2
aXNpdFN5bWJvbChub2RlKTsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmgJKHJldmlzaW9uIDE1MjMyMykKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBib29sIHdyaXRlVmFyaWFibGVQcmVjaXNpb24oVFByZWNpc2lvbik7CisgICAgdmlydHVh
bCB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqIG5vZGUpOwogfTsKIAogI2VuZGlmICAv
LyBDUk9TU0NPTVBJTEVSR0xTTF9PVVRQVVRHTFNMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAJKHJl
dmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9P
dXRwdXRHTFNMQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDI1ICs3OSw5IEBAIHZvaWQg
VE91dHB1dEdMU0xCYXNlOjp3cml0ZVZhcmlhYmxlVHlwZSgKICAgICBpZiAoKHF1YWxpZmllciAh
PSBFdnFUZW1wb3JhcnkpICYmIChxdWFsaWZpZXIgIT0gRXZxR2xvYmFsKSkKICAgICAgICAgb3V0
IDw8IHR5cGUuZ2V0UXVhbGlmaWVyU3RyaW5nKCkgPDwgIiAiOwogICAgIC8vIERlY2xhcmUgdGhl
IHN0cnVjdCBpZiB3ZSBoYXZlIG5vdCBkb25lIHNvIGFscmVhZHkuCi0gICAgaWYgKCh0eXBlLmdl
dEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgJiYKLSAgICAgICAgKG1EZWNsYXJlZFN0cnVjdHMu
ZmluZCh0eXBlLmdldFR5cGVOYW1lKCkpID09IG1EZWNsYXJlZFN0cnVjdHMuZW5kKCkpKQorICAg
IGlmICgodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpICYmICFzdHJ1Y3REZWNsYXJl
ZCh0eXBlLmdldFN0cnVjdCgpKSkKICAgICB7Ci0gICAgICAgIG91dCA8PCAic3RydWN0ICIgPDwg
aGFzaE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKSA8PCAie1xuIjsKLSAgICAgICAgY29uc3QgVFR5
cGVMaXN0KiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOwotICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlICE9IE5VTEwpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVy
ZS0+c2l6ZSgpOyArK2kpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVs
ZFR5cGUgPSAoKnN0cnVjdHVyZSlbaV0udHlwZTsKLSAgICAgICAgICAgIEFTU0VSVChmaWVsZFR5
cGUgIT0gTlVMTCk7Ci0gICAgICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVs
ZFR5cGUtPmdldFByZWNpc2lvbigpKSkKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiAiOwotICAg
ICAgICAgICAgb3V0IDw8IGdldFR5cGVOYW1lKCpmaWVsZFR5cGUpIDw8ICIgIiA8PCBoYXNoTmFt
ZShmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpKTsKLSAgICAgICAgICAgIGlmIChmaWVsZFR5cGUt
PmlzQXJyYXkoKSkKLSAgICAgICAgICAgICAgICBvdXQgPDwgYXJyYXlCcmFja2V0cygqZmllbGRU
eXBlKTsKLSAgICAgICAgICAgIG91dCA8PCAiO1xuIjsKLSAgICAgICAgfQotICAgICAgICBvdXQg
PDwgIn0iOwotICAgICAgICBtRGVjbGFyZWRTdHJ1Y3RzLmluc2VydCh0eXBlLmdldFR5cGVOYW1l
KCkpOworICAgICAgICBkZWNsYXJlU3RydWN0KHR5cGUuZ2V0U3RydWN0KCkpOwogICAgIH0KICAg
ICBlbHNlCiAgICAgewpAQCAtMTM4LDI0ICsxMjIsMjUgQEAgY29uc3QgQ29uc3RhbnRVbmlvbiog
VE91dHB1dEdMU0xCYXNlOjp3cgogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0
U3RydWN0KQogICAgIHsKLSAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5cGUuZ2V0VHlwZU5hbWUo
KSkgPDwgIigiOwotICAgICAgICBjb25zdCBUVHlwZUxpc3QqIHN0cnVjdHVyZSA9IHR5cGUuZ2V0
U3RydWN0KCk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gTlVMTCk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkKKyAgICAgICAgY29u
c3QgVFN0cnVjdHVyZSogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgb3V0
IDw8IGhhc2hOYW1lKHN0cnVjdHVyZS0+bmFtZSgpKSA8PCAiKCI7CisKKyAgICAgICAgY29uc3Qg
VEZpZWxkTGlzdCYgZmllbGRzID0gc3RydWN0dXJlLT5maWVsZHMoKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUgPSAoKnN0cnVjdHVyZSlbaV0udHlwZTsKKyAgICAg
ICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUgPSBmaWVsZHNbaV0tPnR5cGUoKTsKICAgICAg
ICAgICAgIEFTU0VSVChmaWVsZFR5cGUgIT0gTlVMTCk7CiAgICAgICAgICAgICBwQ29uc3RVbmlv
biA9IHdyaXRlQ29uc3RhbnRVbmlvbigqZmllbGRUeXBlLCBwQ29uc3RVbmlvbik7Ci0gICAgICAg
ICAgICBpZiAoaSAhPSBzdHJ1Y3R1cmUtPnNpemUoKSAtIDEpIG91dCA8PCAiLCAiOworICAgICAg
ICAgICAgaWYgKGkgIT0gZmllbGRzLnNpemUoKSAtIDEpIG91dCA8PCAiLCAiOwogICAgICAgICB9
CiAgICAgICAgIG91dCA8PCAiKSI7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGlu
dCBzaXplID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIHNpemVfdCBzaXplID0gdHlw
ZS5nZXRPYmplY3RTaXplKCk7CiAgICAgICAgIGJvb2wgd3JpdGVUeXBlID0gc2l6ZSA+IDE7CiAg
ICAgICAgIGlmICh3cml0ZVR5cGUpIG91dCA8PCBnZXRUeXBlTmFtZSh0eXBlKSA8PCAiKCI7Ci0g
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpLCArK3BDb25zdFVuaW9uKQorICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSwgKytwQ29uc3RVbmlvbikKICAg
ICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChwQ29uc3RVbmlvbi0+Z2V0VHlwZSgpKQogICAg
ICAgICAgICAgewpAQCAtMjYwLDEyICsyNDUsMTggQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZp
c2l0QmluYXJ5KFZpc2l0CiAgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6CiAgICAg
ICAgICAgICBpZiAodmlzaXQgPT0gSW5WaXNpdCkKICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAvLyBIZXJlIHdlIGFyZSB3cml0aW5nIG91dCAiZm9vLmJhciIsIHdoZXJlICJmb28iIGlz
IHN0cnVjdAorICAgICAgICAgICAgICAgIC8vIGFuZCAiYmFyIiBpcyBmaWVsZC4gSW4gQVNULCBp
dCBpcyByZXByZXNlbnRlZCBhcyBhIGJpbmFyeQorICAgICAgICAgICAgICAgIC8vIG5vZGUsIHdo
ZXJlIGxlZnQgY2hpbGQgcmVwcmVzZW50cyAiZm9vIiBhbmQgcmlnaHQgY2hpbGQgImJhciIuCisg
ICAgICAgICAgICAgICAgLy8gVGhlIG5vZGUgaXRzZWxmIHJlcHJlc2VudHMgIi4iLiBUaGUgc3Ry
dWN0IGZpZWxkICJiYXIiIGlzCisgICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgc3RvcmVkIGFz
IGFuIGluZGV4IGludG8gVFN0cnVjdHVyZTo6ZmllbGRzLgogICAgICAgICAgICAgICAgIG91dCA8
PCAiLiI7Ci0gICAgICAgICAgICAgICAgLy8gVE9ETyhhbG9rcCk6IEFTU0VSVAotICAgICAgICAg
ICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gbm9kZS0+Z2V0VHlwZSgpLmdldEZpZWxkTmFtZSgp
OworICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPmdl
dExlZnQoKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOworICAgICAgICAgICAgICAgIGNvbnN0IFRJ
bnRlcm1Db25zdGFudFVuaW9uKiBpbmRleCA9IG5vZGUtPmdldFJpZ2h0KCktPmdldEFzQ29uc3Rh
bnRVbmlvbigpOworICAgICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQgPSBzdHJ1Y3R1
cmUtPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOwogCi0gICAgICAgICAgICAgICAgY29u
c3QgVFR5cGUmIHN0cnVjdFR5cGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3RUeXBlLmdldFR5
cGVOYW1lKCkpKQorICAgICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gZmllbGQtPm5h
bWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1
Y3R1cmUtPm5hbWUoKSkpCiAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZSA9IGhhc2hOYW1l
KGZpZWxkTmFtZSk7CiAKICAgICAgICAgICAgICAgICBvdXQgPDwgZmllbGROYW1lOwpAQCAtNTk2
LDcgKzU4Nyw3IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSYgdHlwZSA9IG5vZGUtPmdl
dFR5cGUoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBF
YnRTdHJ1Y3QpOwotICAgICAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0eXBlLmdldFR5cGVO
YW1lKCkpIDw8ICIoIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRT
dHJ1Y3QoKS0+bmFtZSgpKSA8PCAiKCI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNl
IGlmICh2aXNpdCA9PSBJblZpc2l0KQogICAgICAgICAgICAgewpAQCAtNzY1LDcgKzc1Niw3IEBA
IFRTdHJpbmcgVE91dHB1dEdMU0xCYXNlOjpnZXRUeXBlTmFtZShjb24KICAgICBlbHNlCiAgICAg
ewogICAgICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCi0gICAgICAg
ICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKTsKKyAgICAgICAgICAgIG91
dCA8PCBoYXNoTmFtZSh0eXBlLmdldFN0cnVjdCgpLT5uYW1lKCkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBvdXQgPDwgdHlwZS5nZXRCYXNpY1N0cmluZygpOwogICAgIH0KQEAgLTc5OCwz
ICs3ODksMjkgQEAgVFN0cmluZyBUT3V0cHV0R0xTTEJhc2U6Omhhc2hGdW5jdGlvbk5hbQogICAg
ICAgICByZXR1cm4gbmFtZTsKICAgICByZXR1cm4gaGFzaE5hbWUobmFtZSk7CiB9CisKK2Jvb2wg
VE91dHB1dEdMU0xCYXNlOjpzdHJ1Y3REZWNsYXJlZChjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EZWNsYXJlZFN0cnVjdHMuZmluZChzdHJ1Y3R1cmUt
Pm5hbWUoKSkgIT0gbURlY2xhcmVkU3RydWN0cy5lbmQoKTsKK30KKwordm9pZCBUT3V0cHV0R0xT
TEJhc2U6OmRlY2xhcmVTdHJ1Y3QoY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAg
IFRJbmZvU2lua0Jhc2UmIG91dCA9IG9ialNpbmsoKTsKKworICAgIG91dCA8PCAic3RydWN0ICIg
PDwgaGFzaE5hbWUoc3RydWN0dXJlLT5uYW1lKCkpIDw8ICJ7XG4iOworICAgIGNvbnN0IFRGaWVs
ZExpc3QmIGZpZWxkcyA9IHN0cnVjdHVyZS0+ZmllbGRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBjb25zdCBURmllbGQq
IGZpZWxkID0gZmllbGRzW2ldOworICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihm
aWVsZC0+dHlwZSgpLT5nZXRQcmVjaXNpb24oKSkpCisgICAgICAgICAgICBvdXQgPDwgIiAiOwor
ICAgICAgICBvdXQgPDwgZ2V0VHlwZU5hbWUoKmZpZWxkLT50eXBlKCkpIDw8ICIgIiA8PCBoYXNo
TmFtZShmaWVsZC0+bmFtZSgpKTsKKyAgICAgICAgaWYgKGZpZWxkLT50eXBlKCktPmlzQXJyYXko
KSkKKyAgICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZC0+dHlwZSgpKTsKKyAg
ICAgICAgb3V0IDw8ICI7XG4iOworICAgIH0KKyAgICBvdXQgPDwgIn0iOworCisgICAgbURlY2xh
cmVkU3RydWN0cy5pbnNlcnQoc3RydWN0dXJlLT5uYW1lKCkpOworfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgJ
KHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9PdXRwdXRHTFNMQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw5IEBAIHByb3Rl
Y3RlZDoKICAgICBUU3RyaW5nIGhhc2hGdW5jdGlvbk5hbWUoY29uc3QgVFN0cmluZyYgbWFuZ2xl
ZF9uYW1lKTsKIAogcHJpdmF0ZToKKyAgICBib29sIHN0cnVjdERlY2xhcmVkKGNvbnN0IFRTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3Q7CisgICAgdm9pZCBkZWNsYXJlU3RydWN0KGNvbnN0IFRT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSk7CisKICAgICBUSW5mb1NpbmtCYXNlJiBtT2JqU2luazsKICAg
ICBib29sIG1EZWNsYXJpbmdWYXJpYWJsZXM7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAJKHJldmlzaW9uIDE1MjMy
MykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBPdXRwdXRITFNMOjpPdXRwdXRITFNM
KFRQYXJzZUNvbnRleHQgJmNvCiAgICAgbVVzZXNQb2ludENvb3JkID0gZmFsc2U7CiAgICAgbVVz
ZXNGcm9udEZhY2luZyA9IGZhbHNlOwogICAgIG1Vc2VzUG9pbnRTaXplID0gZmFsc2U7CisgICAg
bVVzZXNGcmFnRGVwdGggPSBmYWxzZTsKICAgICBtVXNlc1hvciA9IGZhbHNlOwogICAgIG1Vc2Vz
TW9kMSA9IGZhbHNlOwogICAgIG1Vc2VzTW9kMnYgPSBmYWxzZTsKQEAgLTE4OSw2ICsxOTAsMTEg
QEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoKQogICAgICAgICBvdXQgPDwgIlxuIgogICAgICAg
ICAgICAgICAgInN0YXRpYyBmbG9hdDQgZ2xfQ29sb3JbMV0gPSB7ZmxvYXQ0KDAsIDAsIDAsIDAp
fTtcbiI7CiAKKyAgICAgICAgaWYgKG1Vc2VzRnJhZ0RlcHRoKQorICAgICAgICB7CisgICAgICAg
ICAgICBvdXQgPDwgInN0YXRpYyBmbG9hdCBnbF9EZXB0aCA9IDAuMDtcbiI7CisgICAgICAgIH0K
KwogICAgICAgICBpZiAobVVzZXNGcmFnQ29vcmQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG91
dCA8PCAic3RhdGljIGZsb2F0NCBnbF9GcmFnQ29vcmQgPSBmbG9hdDQoMCwgMCwgMCwgMCk7XG4i
OwpAQCAtNTA5LDYgKzUxNSwxMSBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcigpCiAgICAgICAg
IG91dCA8PCAiI2RlZmluZSBHTF9VU0VTX1BPSU5UX1NJWkVcbiI7CiAgICAgfQogCisgICAgaWYg
KG1Vc2VzRnJhZ0RlcHRoKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNf
RlJBR19ERVBUSFxuIjsKKyAgICB9CisKICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQogICAgIHsK
ICAgICAgICAgb3V0IDw8ICJzdHJ1Y3QgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnNcbiIKQEAgLTg0
Myw2ICs4NTQsMTEgQEAgdm9pZCBPdXRwdXRITFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYgog
ICAgICAgICBtVXNlc1BvaW50U2l6ZSA9IHRydWU7CiAgICAgICAgIG91dCA8PCBuYW1lOwogICAg
IH0KKyAgICBlbHNlIGlmIChuYW1lID09ICJnbF9GcmFnRGVwdGhFWFQiKQorICAgIHsKKyAgICAg
ICAgbVVzZXNGcmFnRGVwdGggPSB0cnVlOworICAgICAgICBvdXQgPDwgImdsX0RlcHRoIjsKKyAg
ICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBub2Rl
LT5nZXRRdWFsaWZpZXIoKTsKQEAgLTk1Miw3ICs5NjgsMTAgQEAgYm9vbCBPdXRwdXRITFNMOjp2
aXNpdEJpbmFyeShWaXNpdCB2aXNpdAogICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoK
ICAgICAgICAgaWYgKHZpc2l0ID09IEluVmlzaXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91
dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKG5vZGUtPmdldFR5cGUoKS5nZXRGaWVsZE5hbWUoKSwg
bm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Cisg
ICAgICAgICAgICBjb25zdCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogaW5kZXggPSBub2RlLT5nZXRS
aWdodCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZCog
ZmllbGQgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOworICAgICAg
ICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGQtPm5hbWUoKSwgbm9kZS0+Z2V0
TGVmdCgpLT5nZXRUeXBlKCkpOwogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KQEAgLTk3NCw3ICs5OTMsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0
IHZpc2l0CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBpID0gZWxlbWVudC0+Z2V0VW5p
b25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpID0gZWxlbWVudC0+Z2V0SUNvbnN0KDApOwogCiAgICAgICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGkpCiAgICAgICAgICAgICAgICAgICAgICAgICB7CkBAIC0xMDIxLDE4ICsxMDQw
LDE4IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQKICAgICAgICAg
ICAgICAgICBvdXQgPDwgIiEoIjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29uc3Qg
VFR5cGVMaXN0ICpmaWVsZHMgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1Y3Qo
KTsKKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IG5vZGUtPmdldExlZnQo
KS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKIAotICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmaWVsZHMtPnNpemUoKTsgaSsrKQorICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqZmllbGRzKVtpXS50eXBlOwor
ICAgICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CiAKICAgICAg
ICAgICAgICAgICBub2RlLT5nZXRMZWZ0KCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAg
ICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCks
IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpKSArICIgPT0gIjsKKyAgICAgICAgICAgICAgICBv
dXQgPDwgIi4iICsgZGVjb3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCBub2RlLT5nZXRMZWZ0KCkt
PmdldFR5cGUoKSkgKyAiID09ICI7CiAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0UmlnaHQoKS0+
dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmll
bGQoZmllbGRUeXBlLT5nZXRGaWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkp
OworICAgICAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1l
KCksIG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpKTsKIAotICAgICAgICAgICAgICAgIGlmIChp
IDwgZmllbGRzLT5zaXplKCkgLSAxKQorICAgICAgICAgICAgICAgIGlmIChpIDwgZmllbGRzLnNp
emUoKSAtIDEpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
IiAmJiAiOwogICAgICAgICAgICAgICAgIH0KQEAgLTEyMzgsNyArMTI1Nyw3IEBAIGJvb2wgT3V0
cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKG1JbnNpZGVGdW5jdGlvbikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRw
dXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0
TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICAg
ICAgb3V0IDw8ICJ7XG4iOwogCiAgICAgICAgICAgICAgICAgbVNjb3BlRGVwdGgrKzsKQEAgLTEy
NTUsNyArMTI3NCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkK
IAogICAgICAgICAgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHNpdCA9IG5vZGUt
PmdldFNlcXVlbmNlKCkuYmVnaW4oKTsgc2l0ICE9IG5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7
IHNpdCsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3Rp
dmUoKCpzaXQpLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3Rp
dmUoKCpzaXQpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAKICAgICAgICAgICAgICAgICB0cmF2
ZXJzZVN0YXRlbWVudHMoKnNpdCk7CiAKQEAgLTEyNjQsNyArMTI4Myw3IEBAIGJvb2wgT3V0cHV0
SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKIAogICAgICAgICAgICAgaWYgKG1JbnNpZGVG
dW5jdGlvbikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0
aXZlKG5vZGUtPmdldEVuZExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVj
dGl2ZShub2RlLT5nZXRMaW5lKCkubGFzdF9saW5lKTsKICAgICAgICAgICAgICAgICBvdXQgPDwg
In1cbiI7CiAKICAgICAgICAgICAgICAgICBtU2NvcGVEZXB0aC0tOwpAQCAtMTI4Myw3ICsxMzAy
LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgp
KQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RydWN0b3Io
dmFyaWFibGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0
VHlwZU5hbWUoKSksIE5VTEwpOworICAgICAgICAgICAgICAgICAgICBhZGRDb25zdHJ1Y3Rvcih2
YXJpYWJsZS0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3QodmFyaWFibGUtPmdldFR5cGUoKS5nZXRT
dHJ1Y3QoKS0+bmFtZSgpKSwgTlVMTCk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgaWYgKCF2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCkgfHwgdmFyaWFibGUtPmdldEFz
U3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKSAhPSAiIikgICAvLyBWYXJpYWJsZSBkZWNsYXJhdGlv
bgpAQCAtMTQwMSw3ICsxNDIwLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShW
aXNpdCB2aQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJv
bC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBhZGRDb25zdHJ1Y3RvcihzeW1ib2wtPmdldFR5cGUoKSwgc2NvcGVk
U3RydWN0KHN5bWJvbC0+Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpLCBOVUxMKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZENvbnN0cnVjdG9yKHN5bWJvbC0+Z2V0VHlwZSgpLCBzY29wZWRT
dHJ1Y3Qoc3ltYm9sLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPm5hbWUoKSksIE5VTEwpOwogICAg
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8IGFyZ3VtZW50
U3RyaW5nKHN5bWJvbCk7CkBAIC0xNjUwLDggKzE2NjksOCBAQCBib29sIE91dHB1dEhMU0w6OnZp
c2l0QWdncmVnYXRlKFZpc2l0IHZpCiAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJtYXQ0
KCIsICIsICIsICIpIik7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RT
dHJ1Y3Q6Ci0gICAgICAgIGFkZENvbnN0cnVjdG9yKG5vZGUtPmdldFR5cGUoKSwgc2NvcGVkU3Ry
dWN0KG5vZGUtPmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkp
OwotICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlw
ZSgpLmdldFR5cGVOYW1lKCkpICsgIl9jdG9yKCIsICIsICIsICIpIik7CisgICAgICAgIGFkZENv
bnN0cnVjdG9yKG5vZGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5vZGUtPmdldFR5cGUoKS5n
ZXRTdHJ1Y3QoKS0+bmFtZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgICAgICBvdXRw
dXRUcmlwbGV0KHZpc2l0LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgp
LT5uYW1lKCkpICsgIl9jdG9yKCIsICIsICIsICIpIik7CiAgICAgICAgIGJyZWFrOwogICAgICAg
Y2FzZSBFT3BMZXNzVGhhbjogICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgPCAi
LCAiKSIpOyAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFu
OiAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiA+ICIsICIpIik7ICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTE3NDEsNyArMTc2MCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRT
ZWxlY3Rpb24oVmlzaXQgdmkKIAogICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAgICAgIAotICAg
ICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIG91dHB1
dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQg
PDwgIntcbiI7CiAKICAgICAgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQpAQCAtMTc0OSwy
MCArMTc2OCwyMCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpCiAg
ICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOwor
ICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsK
ICAgICAgICAgb3V0IDw8ICI7XG59XG4iOwogCiAgICAgICAgIGlmIChub2RlLT5nZXRGYWxzZUJs
b2NrKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG91dCA8PCAiZWxzZVxuIjsKIAotICAgICAg
ICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUo
KSk7CisgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2so
KS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwogCi0g
ICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0
TGluZSgpKTsKKyAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VC
bG9jaygpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRl
bWVudHMobm9kZS0+Z2V0RmFsc2VCbG9jaygpKTsKIAotICAgICAgICAgICAgb3V0cHV0TGluZURp
cmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7CisgICAgICAgICAgICBv
dXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0
X2xpbmUpOwogICAgICAgICAgICAgb3V0IDw8ICI7XG59XG4iOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTc5NSw3ICsxODE0LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQgdmlz
aXQsCiAgICAgewogICAgICAgICBvdXQgPDwgIntkb1xuIjsKIAotICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUo
bm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQgPDwgIntcbiI7CiAgICAg
fQogICAgIGVsc2UKQEAgLTE4MjMsNyArMTg0Miw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRM
b29wKFZpc2l0IHZpc2l0LAogCiAgICAgICAgIG91dCA8PCAiKVxuIjsKICAgICAgICAgCi0gICAg
ICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgb3V0cHV0
TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8
PCAie1xuIjsKICAgICB9CiAKQEAgLTE4MzIsMTIgKzE4NTEsMTIgQEAgYm9vbCBPdXRwdXRITFNM
Ojp2aXNpdExvb3AoVmlzaXQgdmlzaXQsCiAgICAgICAgIHRyYXZlcnNlU3RhdGVtZW50cyhub2Rl
LT5nZXRCb2R5KCkpOwogICAgIH0KIAotICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0
TGluZSgpKTsKKyAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9s
aW5lKTsKICAgICBvdXQgPDwgIjt9XG4iOwogCiAgICAgaWYgKG5vZGUtPmdldFR5cGUoKSA9PSBF
TG9vcERvV2hpbGUpCiAgICAgewotICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdl
dENvbmRpdGlvbigpLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5v
ZGUtPmdldENvbmRpdGlvbigpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8
PCAid2hpbGUoXG4iOwogCiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0
aGlzKTsKQEAgLTE5NzcsNyArMTk5Niw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNz
aXZlTG9vcChUSW4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFz
aWNUeXBlKCkgPT0gRWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAg
ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZXggPSBzeW1ib2w7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCA9IGNvbnN0
YW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpWzBdLmdldElDb25zdCgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluaXRpYWwgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDApOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQpAQCAtMTk5OSw3ICsyMDE4LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3Np
dmVMb29wKFRJbgogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkg
PT0gRWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICBjb21wYXJhdG9yID0gdGVzdC0+Z2V0T3AoKTsK
LSAgICAgICAgICAgICAgICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50
ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgbGltaXQgPSBjb25zdGFu
dC0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMjAyMCw3ICsyMDM5LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3Np
dmVMb29wKFRJbgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+
Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09
IDEpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSBj
b25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaW50IHZhbHVlID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG9wKQogICAgICAgICAgICAgICAgICAgICB7CkBAIC0yMTA5
LDcgKzIxMjgsNyBAQCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAg
ICAgICAgICAgICAgICAgb3V0IDw8IGluY3JlbWVudDsKICAgICAgICAgICAgICAgICBvdXQgPDwg
IilcbiI7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVj
dGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3Rp
dmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAi
e1xuIjsKIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRCb2R5KCkpCkBAIC0yMTE3LDcg
KzIxMzYsNyBAQCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmdldEJvZHkoKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5n
ZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0
TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAiO31cbiI7CiAKICAg
ICAgICAgICAgICAgICBpZiAoIWZpcnN0TG9vcEZyYWdtZW50KQpAQCAtMjIxMywyMiArMjIzMiwy
MyBAQCBUU3RyaW5nIE91dHB1dEhMU0w6OnR5cGVTdHJpbmcoY29uc3QgVFR5CiB7CiAgICAgaWYg
KHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsKLSAgICAgICAgaWYgKHR5
cGUuZ2V0VHlwZU5hbWUoKSAhPSAiIikKKyAgICAgICAgY29uc3QgVFN0cmluZyYgdHlwZU5hbWUg
PSB0eXBlLmdldFN0cnVjdCgpLT5uYW1lKCk7CisgICAgICAgIGlmICh0eXBlTmFtZSAhPSAiIikK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlLmdldFR5cGVO
YW1lKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlTmFtZSk7CiAgICAg
ICAgIH0KICAgICAgICAgZWxzZSAgIC8vIE5hbWVsZXNzIHN0cnVjdHVyZSwgZGVmaW5lIGluIHBs
YWNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlTGlzdCAmZmllbGRzID0gKnR5
cGUuZ2V0U3RydWN0KCk7CisgICAgICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSB0
eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKIAogICAgICAgICAgICAgVFN0cmluZyBzdHJpbmcg
PSAic3RydWN0XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmll
bGRzW2ldLnR5cGU7CisgICAgICAgICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCA9IGZpZWxk
c1tpXTsKIAotICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3RyaW5nKGZp
ZWxkKSArICIgIiArIGRlY29yYXRlKGZpZWxkLmdldEZpZWxkTmFtZSgpKSArIGFycmF5U3RyaW5n
KGZpZWxkKSArICI7XG4iOworICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBl
U3RyaW5nKCpmaWVsZC0+dHlwZSgpKSArICIgIiArIGRlY29yYXRlKGZpZWxkLT5uYW1lKCkpICsg
YXJyYXlTdHJpbmcoKmZpZWxkLT50eXBlKCkpICsgIjtcbiI7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIHN0cmluZyArPSAifSAiOwpAQCAtMjMwNCwxMSArMjMyNCwxMiBAQCBUU3RyaW5n
IE91dHB1dEhMU0w6OmluaXRpYWxpemVyKGNvbnN0IFRUCiB7CiAgICAgVFN0cmluZyBzdHJpbmc7
CiAKLSAgICBmb3IgKGludCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCB0eXBlLmdldE9iamVj
dFNpemUoKTsgY29tcG9uZW50KyspCisgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNp
emUoKTsKKyAgICBmb3IgKHNpemVfdCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCBzaXplOyBj
b21wb25lbnQrKykKICAgICB7CiAgICAgICAgIHN0cmluZyArPSAiMCI7CiAKLSAgICAgICAgaWYg
KGNvbXBvbmVudCA8IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpIC0gMSkKKyAgICAgICAgaWYgKGNvbXBv
bmVudCArIDEgPCBzaXplKQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJpbmcgKz0gIiwgIjsK
ICAgICAgICAgfQpAQCAtMjM0NywxMyArMjM2OCwxMyBAQCB2b2lkIE91dHB1dEhMU0w6OmFkZENv
bnN0cnVjdG9yKGNvbnN0IFRUCiAgICAgICAgIHN0cnVjdHVyZSArPSAic3RydWN0ICIgKyBkZWNv
cmF0ZShuYW1lKSArICJcbiIKICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCi0gICAgICAg
IGNvbnN0IFRUeXBlTGlzdCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0KCk7CisgICAgICAgIGNv
bnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRzW2ldLnR5
cGU7CisgICAgICAgICAgICBjb25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ldOwogCi0gICAg
ICAgICAgICBzdHJ1Y3R1cmUgKz0gIiAgICAiICsgdHlwZVN0cmluZyhmaWVsZCkgKyAiICIgKyBk
ZWNvcmF0ZUZpZWxkKGZpZWxkLmdldEZpZWxkTmFtZSgpLCB0eXBlKSArIGFycmF5U3RyaW5nKGZp
ZWxkKSArICI7XG4iOworICAgICAgICAgICAgc3RydWN0dXJlICs9ICIgICAgIiArIHR5cGVTdHJp
bmcoKmZpZWxkLT50eXBlKCkpICsgIiAiICsgZGVjb3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCB0
eXBlKSArIGFycmF5U3RyaW5nKCpmaWVsZC0+dHlwZSgpKSArICI7XG4iOwogICAgICAgICB9CiAK
ICAgICAgICAgc3RydWN0dXJlICs9ICJ9O1xuIjsKQEAgLTIzNjUsNyArMjM4Niw3IEBAIHZvaWQg
T3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFQKIAogICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAgICAg
ICAgICAgY3RvclBhcmFtZXRlcnMucHVzaF9iYWNrKCpmaWVsZHNbaV0udHlwZSk7CisgICAgICAg
ICAgICBjdG9yUGFyYW1ldGVycy5wdXNoX2JhY2soKmZpZWxkc1tpXS0+dHlwZSgpKTsKICAgICAg
ICAgfQogICAgIH0KICAgICBlbHNlIGlmIChwYXJhbWV0ZXJzKQpAQCAtMjQ1OCwyNyArMjQ3OSwz
MCBAQCB2b2lkIE91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAgICAgfQogICAg
IGVsc2UKICAgICB7Ci0gICAgICAgIGludCByZW1haW5pbmdDb21wb25lbnRzID0gY3RvclR5cGUu
Z2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICBpbnQgcGFyYW1ldGVySW5kZXggPSAwOworICAgICAg
ICBzaXplX3QgcmVtYWluaW5nQ29tcG9uZW50cyA9IGN0b3JUeXBlLmdldE9iamVjdFNpemUoKTsK
KyAgICAgICAgc2l6ZV90IHBhcmFtZXRlckluZGV4ID0gMDsKIAogICAgICAgICB3aGlsZSAocmVt
YWluaW5nQ29tcG9uZW50cyA+IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRUeXBl
ICZwYXJhbWV0ZXIgPSBjdG9yUGFyYW1ldGVyc1twYXJhbWV0ZXJJbmRleF07Ci0gICAgICAgICAg
ICBib29sIG1vcmVQYXJhbWV0ZXJzID0gcGFyYW1ldGVySW5kZXggPCAoaW50KWN0b3JQYXJhbWV0
ZXJzLnNpemUoKSAtIDE7CisgICAgICAgICAgICBjb25zdCBzaXplX3QgcGFyYW1ldGVyU2l6ZSA9
IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICBib29sIG1vcmVQYXJhbWV0
ZXJzID0gcGFyYW1ldGVySW5kZXggKyAxIDwgY3RvclBhcmFtZXRlcnMuc2l6ZSgpOwogCiAgICAg
ICAgICAgICBjb25zdHJ1Y3RvciArPSAieCIgKyBzdHIocGFyYW1ldGVySW5kZXgpOwogCiAgICAg
ICAgICAgICBpZiAocGFyYW1ldGVyLmlzU2NhbGFyKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgcmVtYWluaW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgp
OworICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJlbWFpbmluZ0NvbXBv
bmVudHMpOworICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVy
U2l6ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5pc1Zl
Y3RvcigpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmdDb21w
b25lbnRzID09IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCkgfHwgbW9yZVBhcmFtZXRlcnMpCisg
ICAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPT0gcGFyYW1ldGVyU2l6ZSB8
fCBtb3JlUGFyYW1ldGVycykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyLmdldE9iamVjdFNpemUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtZXRlclNpemUgPD0gcmVtYWluaW5nQ29tcG9uZW50
cyk7CisgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVy
U2l6ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVtYWlu
aW5nQ29tcG9uZW50cyA8IHBhcmFtZXRlci5nZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBh
cmFtZXRlci5nZXROb21pbmFsU2l6ZSgpKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAocmVtYWluaW5nQ29tcG9uZW50cykKICAgICAgICAgICAgICAgICAg
ICAgewpAQCAtMjQ5NSw5ICsyNTE5LDEwIEBAIHZvaWQgT3V0cHV0SExTTDo6YWRkQ29uc3RydWN0
b3IoY29uc3QgVFQKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRl
ci5pc01hdHJpeCgpIHx8IHBhcmFtZXRlci5nZXRTdHJ1Y3QoKSkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQocmVtYWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXIuZ2V0
T2JqZWN0U2l6ZSgpIHx8IG1vcmVQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
cmVtYWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXJTaXplIHx8IG1vcmVQYXJhbWV0ZXJzKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQocGFyYW1ldGVyU2l6ZSA8PSByZW1haW5pbmdDb21wb25l
bnRzKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25l
bnRzIC09IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICAgICAgcmVtYWlu
aW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXJTaXplOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogCkBAIC0yNTM0LDE3ICsyNTU5LDE3IEBAIGNvbnN0IENv
bnN0YW50VW5pb24gKk91dHB1dEhMU0w6OndyaXRlQ28KIAogICAgIGlmICh0eXBlLmdldEJhc2lj
VHlwZSgpID09IEVidFN0cnVjdCkKICAgICB7Ci0gICAgICAgIG91dCA8PCBzdHJ1Y3RMb29rdXAo
dHlwZS5nZXRUeXBlTmFtZSgpKSArICJfY3RvcigiOworICAgICAgICBvdXQgPDwgc3RydWN0TG9v
a3VwKHR5cGUuZ2V0U3RydWN0KCktPm5hbWUoKSkgKyAiX2N0b3IoIjsKICAgICAgICAgCi0gICAg
ICAgIGNvbnN0IFRUeXBlTGlzdCAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAg
ICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7
CiAKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgaSsr
KQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAg
ICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqc3RydWN0dXJl
KVtpXS50eXBlOworICAgICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9IGZpZWxkc1tp
XS0+dHlwZSgpOwogCiAgICAgICAgICAgICBjb25zdFVuaW9uID0gd3JpdGVDb25zdGFudFVuaW9u
KCpmaWVsZFR5cGUsIGNvbnN0VW5pb24pOwogCi0gICAgICAgICAgICBpZiAoaSAhPSBzdHJ1Y3R1
cmUtPnNpemUoKSAtIDEpCisgICAgICAgICAgICBpZiAoaSAhPSBmaWVsZHMuc2l6ZSgpIC0gMSkK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKICAgICAgICAgICAg
IH0KQEAgLTI1NTQsNyArMjU3OSw3IEBAIGNvbnN0IENvbnN0YW50VW5pb24gKk91dHB1dEhMU0w6
OndyaXRlQ28KICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW50IHNpemUgPSB0eXBl
LmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNp
emUoKTsKICAgICAgICAgYm9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAgICAgCiAgICAg
ICAgIGlmICh3cml0ZVR5cGUpCkBAIC0yNTYyLDcgKzI1ODcsNyBAQCBjb25zdCBDb25zdGFudFVu
aW9uICpPdXRwdXRITFNMOjp3cml0ZUNvCiAgICAgICAgICAgICBvdXQgPDwgdHlwZVN0cmluZyh0
eXBlKSA8PCAiKCI7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNp
emU7IGkrKywgY29uc3RVbmlvbisrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emU7IGkrKywgY29uc3RVbmlvbisrKQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKGNv
bnN0VW5pb24tPmdldFR5cGUoKSkKICAgICAgICAgICAgIHsKQEAgLTI2NTUsNyArMjY4MCw3IEBA
IFRTdHJpbmcgT3V0cHV0SExTTDo6ZGVjb3JhdGVVbmlmb3JtKGNvbnMKIAogVFN0cmluZyBPdXRw
dXRITFNMOjpkZWNvcmF0ZUZpZWxkKGNvbnN0IFRTdHJpbmcgJnN0cmluZywgY29uc3QgVFR5cGUg
JnN0cnVjdHVyZSkKIHsKLSAgICBpZiAoc3RydWN0dXJlLmdldFR5cGVOYW1lKCkuY29tcGFyZSgw
LCAzLCAiZ2xfIikgIT0gMCkKKyAgICBpZiAoc3RydWN0dXJlLmdldFN0cnVjdCgpLT5uYW1lKCku
Y29tcGFyZSgwLCAzLCAiZ2xfIikgIT0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBkZWNvcmF0
ZShzdHJpbmcpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9PdXRwdXRITFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAkod29ya2luZyBjb3B5KQpA
QCAtOTcsNiArOTcsNyBAQCBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJz
CiAgICAgYm9vbCBtVXNlc1BvaW50Q29vcmQ7CiAgICAgYm9vbCBtVXNlc0Zyb250RmFjaW5nOwog
ICAgIGJvb2wgbVVzZXNQb2ludFNpemU7CisgICAgYm9vbCBtVXNlc0ZyYWdEZXB0aDsKICAgICBi
b29sIG1Vc2VzWG9yOwogICAgIGJvb2wgbVVzZXNNb2QxOwogICAgIGJvb2wgbVVzZXNNb2QydjsK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bh
cnNlSGVscGVyLmNwcAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjIsNyArMjIs
NyBAQAogLy8gTG9vayBhdCBhICcuJyBmaWVsZCBzZWxlY3RvciBzdHJpbmcgYW5kIGNoYW5nZSBp
dCBpbnRvIG9mZnNldHMKIC8vIGZvciBhIHZlY3Rvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6
OnBhcnNlVmVjdG9yRmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCB2ZWNTaXpl
LCBUVmVjdG9yRmllbGRzJiBmaWVsZHMsIGludCBsaW5lKQorYm9vbCBUUGFyc2VDb250ZXh0Ojpw
YXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgdmVjU2l6ZSwg
VFZlY3RvckZpZWxkcyYgZmllbGRzLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGZp
ZWxkcy5udW0gPSAoaW50KSBjb21wU3RyaW5nLnNpemUoKTsKICAgICBpZiAoZmllbGRzLm51bSA+
IDQpIHsKQEAgLTExNSw3ICsxMTUsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9y
RmllbGRzKGNvCiAvLyBMb29rIGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0cmluZyBhbmQgY2hh
bmdlIGl0IGludG8gb2Zmc2V0cwogLy8gZm9yIGEgbWF0cml4LgogLy8KLWJvb2wgVFBhcnNlQ29u
dGV4dDo6cGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IG1h
dFNpemUsIFRNYXRyaXhGaWVsZHMmIGZpZWxkcywgaW50IGxpbmUpCitib29sIFRQYXJzZUNvbnRl
eHQ6OnBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCBtYXRT
aXplLCBUTWF0cml4RmllbGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAg
ICAgZmllbGRzLndob2xlUm93ID0gZmFsc2U7CiAgICAgZmllbGRzLndob2xlQ29sID0gZmFsc2U7
CkBAIC0xNzUsMjIgKzE3NSwyNCBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnJlY292ZXIoKQogLy8K
IC8vIFVzZWQgYnkgZmxleC9iaXNvbiB0byBvdXRwdXQgYWxsIHN5bnRheCBhbmQgcGFyc2luZyBl
cnJvcnMuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0OjplcnJvcihUU291cmNlTG9jIGxvYywKK3Zv
aWQgVFBhcnNlQ29udGV4dDo6ZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLCAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvKQogewogICAg
IHBwOjpTb3VyY2VMb2NhdGlvbiBzcmNMb2M7Ci0gICAgRGVjb2RlU291cmNlTG9jKGxvYywgJnNy
Y0xvYy5maWxlLCAmc3JjTG9jLmxpbmUpOworICAgIHNyY0xvYy5maWxlID0gbG9jLmZpcnN0X2Zp
bGU7CisgICAgc3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKICAgICBkaWFnbm9zdGljcy53
cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpFUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3JjTG9jLCByZWFzb24sIHRva2VuLCBleHRyYUluZm8pOwogCiB9CiAKLXZvaWQgVFBhcnNl
Q29udGV4dDo6d2FybmluZyhUU291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29udGV4dDo6d2Fy
bmluZyhjb25zdCBUU291cmNlTG9jJiBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBleHRyYUluZm8pIHsKICAgICBwcDo6U291cmNlTG9jYXRp
b24gc3JjTG9jOwotICAgIERlY29kZVNvdXJjZUxvYyhsb2MsICZzcmNMb2MuZmlsZSwgJnNyY0xv
Yy5saW5lKTsKKyAgICBzcmNMb2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOworICAgIHNyY0xvYy5s
aW5lID0gbG9jLmZpcnN0X2xpbmU7CiAgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFn
bm9zdGljczo6V0FSTklORywKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFz
b24sIHRva2VuLCBleHRyYUluZm8pOwogfQpAQCAtMjAzLDcgKzIwNSw3IEBAIHZvaWQgVFBhcnNl
Q29udGV4dDo6dHJhY2UoY29uc3QgY2hhciogc3QKIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2Ug
Zm9yIGFsbCBwbGFjZXMgYXNzaWdubWVudHMgZG9uJ3Qgd29yay4KIC8vCi12b2lkIFRQYXJzZUNv
bnRleHQ6OmFzc2lnbkVycm9yKGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0
LCBUU3RyaW5nIHJpZ2h0KQordm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcihjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJp
Z2h0KQogewogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRy
YUluZm9TdHJlYW0gPDwgImNhbm5vdCBjb252ZXJ0IGZyb20gJyIgPDwgcmlnaHQgPDwgIicgdG8g
JyIgPDwgbGVmdCA8PCAiJyI7CkBAIC0yMTQsNyArMjE2LDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0
Ojphc3NpZ25FcnJvcihpbnQgbGluZQogLy8KIC8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxs
IHBsYWNlcyB1bmFyeSBvcGVyYXRpb25zIGRvbid0IHdvcmsuCiAvLwotdm9pZCBUUGFyc2VDb250
ZXh0Ojp1bmFyeU9wRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJh
bmQpCit2b2lkIFRQYXJzZUNvbnRleHQ6OnVuYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKQogewogICAgIHN0ZDo6c3RyaW5n
c3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJh
dGlvbiAnIiA8PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhbiBvcGVyYW5kIG9mIHR5cGUg
IiA8PCBvcGVyYW5kIApAQCAtMjI2LDcgKzIyOCw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dW5h
cnlPcEVycm9yKGludCBsaW4KIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBiaW5h
cnkgb3BlcmF0aW9ucyBkb24ndCB3b3JrLgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6YmluYXJ5
T3BFcnJvcihpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyBy
aWdodCkKK3ZvaWQgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewog
ICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJl
YW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhIGxl
ZnQtaGFuZCBvcGVyYW5kIG9mIHR5cGUgJyIgPDwgbGVmdCAKQEAgLTIzNSw3ICsyMzcsNyBAQCB2
b2lkIFRQYXJzZUNvbnRleHQ6OmJpbmFyeU9wRXJyb3IoaW50IGxpCiAgICAgZXJyb3IobGluZSwg
IiB3cm9uZyBvcGVyYW5kIHR5cGVzICIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7IAogfQogCi1i
b29sIFRQYXJzZUNvbnRleHQ6OnByZWNpc2lvbkVycm9yQ2hlY2soaW50IGxpbmUsIFRQcmVjaXNp
b24gcHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5cGUpeworYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVj
aXNpb25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lz
aW9uLCBUQmFzaWNUeXBlIHR5cGUpewogICAgIGlmICghY2hlY2tzUHJlY2lzaW9uRXJyb3JzKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgc3dpdGNoKCB0eXBlICl7CkBAIC0yNjMsNyArMjY1
LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKAogLy8KIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6
bFZhbHVlRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRlcm1UeXBlZCog
bm9kZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKiBub2RlKQogewogICAgIFRJ
bnRlcm1TeW1ib2wqIHN5bU5vZGUgPSBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsKICAgICBUSW50
ZXJtQmluYXJ5KiBiaW5hcnlOb2RlID0gbm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7CkBAIC0yODYs
NyArMjg4LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGludAogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVy
YXRvciBwID0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuYmVnaW4oKTsgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgIT0gYWdnck5vZGUtPmdldFNlcXVl
bmNlKCkuZW5kKCk7IHArKykgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSAoKnAp
LT5nZXRBc1R5cGVkKCktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpLT5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gKCpwKS0+
Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOwogICAgICAg
ICAgICAgICAgICAgICBvZmZzZXRbdmFsdWVdKys7ICAgICAKICAgICAgICAgICAgICAgICAgICAg
aWYgKG9mZnNldFt2YWx1ZV0gPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihs
aW5lLCAiIGwtdmFsdWUgb2Ygc3dpenpsZSBjYW5ub3QgaGF2ZSBkdXBsaWNhdGUgY29tcG9uZW50
cyIsIG9wKTsKQEAgLTMxNyw3ICszMTksNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVy
cm9yQ2hlY2soaW50CiAgICAgY2FzZSBFdnFBdHRyaWJ1dGU6ICAgICAgbWVzc2FnZSA9ICJjYW4n
dCBtb2RpZnkgYW4gYXR0cmlidXRlIjsgICBicmVhazsKICAgICBjYXNlIEV2cVVuaWZvcm06ICAg
ICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHVuaWZvcm0iOyAgICAgIGJyZWFrOwogICAg
IGNhc2UgRXZxVmFyeWluZ0luOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGEgdmFyeWlu
ZyI7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFJbnB1dDogICAgICAgICAgbWVzc2FnZSA9ICJj
YW4ndCBtb2RpZnkgYW4gaW5wdXQiOyAgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb29y
ZDogICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBnbF9GcmFnQ29vcmQiOyAgIGJyZWFrOwog
ICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6ICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX0Zy
b250RmFjaW5nIjsgYnJlYWs7CiAgICAgY2FzZSBFdnFQb2ludENvb3JkOiAgICAgbWVzc2FnZSA9
ICJjYW4ndCBtb2RpZnkgZ2xfUG9pbnRDb29yZCI7ICBicmVhazsKQEAgLTQwOSw3ICs0MTAsNyBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OmludGVnZXJFcnJvckNoZWNrKFRJCiAvLwogLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpnbG9i
YWxFcnJvckNoZWNrKGludCBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pCiti
b29sIFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2VuKQogewogICAgIGlmIChnbG9iYWwpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyOCw3ICs0MjksNyBAQCBib29sIFRQYXJzZUNvbnRl
eHQ6Omdsb2JhbEVycm9yQ2hlY2soaW50CiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdh
cyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JDaGVjayhp
bnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6
cmVzZXJ2ZWRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcm
IGlkZW50aWZpZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc2VydmVkRXJyTXNnID0g
InJlc2VydmVkIGJ1aWx0LWluIG5hbWUiOwogICAgIGlmICghc3ltYm9sVGFibGUuYXRCdWlsdElu
TGV2ZWwoKSkgewpAQCAtNDY2LDcgKzQ2Nyw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2
ZWRFcnJvckNoZWNrKGkKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9y
IGluIGNvbnN0cnVjdGlvbi4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJy
b3JDaGVjayhpbnQgbGluZSwgVEludGVybU5vZGUqIG5vZGUsIFRGdW5jdGlvbiYgZnVuY3Rpb24s
IFRPcGVyYXRvciBvcCwgVFR5cGUqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVj
dG9yRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogbm9kZSwg
VEZ1bmN0aW9uJiBmdW5jdGlvbiwgVE9wZXJhdG9yIG9wLCBUVHlwZSogdHlwZSkKIHsKICAgICAq
dHlwZSA9IGZ1bmN0aW9uLmdldFJldHVyblR5cGUoKTsKIApAQCAtNDg3LDcgKzQ4OCw3IEBAIGJv
b2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWMKICAgICAvLyBhZ2FpbiwgdGhl
cmUgaXMgYW4gZXh0cmEgYXJndW1lbnQsIHNvICdvdmVyZnVsbCcgd2lsbCBiZWNvbWUgdHJ1ZS4K
ICAgICAvLwogCi0gICAgaW50IHNpemUgPSAwOworICAgIHNpemVfdCBzaXplID0gMDsKICAgICBi
b29sIGNvbnN0VHlwZSA9IHRydWU7CiAgICAgYm9vbCBmdWxsID0gZmFsc2U7CiAgICAgYm9vbCBv
dmVyRnVsbCA9IGZhbHNlOwpAQCAtNTM0LDcgKzUzNSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
Y29uc3RydWN0b3JFcnJvckNoZWMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAot
ICAgIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXkoKSAmJiBp
bnQodHlwZS0+Z2V0U3RydWN0KCktPnNpemUoKSkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgp
KSB7CisgICAgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgp
ICYmIGludCh0eXBlLT5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCkuc2l6ZSgpKSAhPSBmdW5jdGlvbi5n
ZXRQYXJhbUNvdW50KCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgIk51bWJlciBvZiBjb25zdHJ1
Y3RvciBwYXJhbWV0ZXJzIGRvZXMgbm90IG1hdGNoIHRoZSBudW1iZXIgb2Ygc3RydWN0dXJlIGZp
ZWxkcyIsICJjb25zdHJ1Y3RvciIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC01
NjgsNyArNTY5LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlYwog
Ly8KIC8vIHJldHVybnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCiAvLwotYm9vbCBUUGFyc2VD
b250ZXh0Ojp2b2lkRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmll
ciwgY29uc3QgVFB1YmxpY1R5cGUmIHB1YlR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFRQdWJsaWNUeXBlJiBwdWJUeXBlKQogewogICAgIGlmIChwdWJUeXBlLnR5cGUg
PT0gRWJ0Vm9pZCkgewogICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAn
dm9pZCciLCBpZGVudGlmaWVyLmNfc3RyKCkpOwpAQCAtNTgyLDcgKzU4Myw3IEBAIGJvb2wgVFBh
cnNlQ29udGV4dDo6dm9pZEVycm9yQ2hlY2soaW50IGwKIC8vCiAvLyByZXR1cm5zIHRydWUgaW4g
Y2FzZSBvZiBhbiBlcnJvcgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2so
aW50IGxpbmUsIGNvbnN0IFRJbnRlcm1UeXBlZCogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6
Ym9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEludGVybVR5cGVk
KiB0eXBlKQogewogICAgIGlmICh0eXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRCb29sIHx8IHR5
cGUtPmlzQXJyYXkoKSB8fCB0eXBlLT5pc01hdHJpeCgpIHx8IHR5cGUtPmlzVmVjdG9yKCkpIHsK
ICAgICAgICAgZXJyb3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3RlZCIsICIiKTsK
QEAgLTU5Niw3ICs1OTcsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGlu
dCBsCiAvLwogLy8gcmV0dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1ib29sIFRQ
YXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYg
cFR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSkKIHsKICAgICBpZiAocFR5cGUudHlw
ZSAhPSBFYnRCb29sIHx8IHBUeXBlLmFycmF5IHx8IHBUeXBlLm1hdHJpeCB8fCAocFR5cGUuc2l6
ZSA+IDEpKSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJib29sZWFuIGV4cHJlc3Npb24gZXhwZWN0
ZWQiLCAiIik7CkBAIC02MDYsNyArNjA3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJy
b3JDaGVjayhpbnQgbAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0
OjpzYW1wbGVyRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBj
b25zdCBjaGFyKiByZWFzb24pCitib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3Qg
Y2hhciogcmVhc29uKQogewogICAgIGlmIChwVHlwZS50eXBlID09IEVidFN0cnVjdCkgewogICAg
ICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpwVHlwZS51c2VyRGVmKSkgewpAQCAtNjI1LDcgKzYy
Niw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2soaW4KICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0UXVhbGlmaWVyRXJyb3JD
aGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQorYm9vbCBUUGFyc2VDb250
ZXh0OjpzdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNv
bnN0IFRQdWJsaWNUeXBlJiBwVHlwZSkKIHsKICAgICBpZiAoKHBUeXBlLnF1YWxpZmllciA9PSBF
dnFWYXJ5aW5nSW4gfHwgcFR5cGUucXVhbGlmaWVyID09IEV2cVZhcnlpbmdPdXQgfHwgcFR5cGUu
cXVhbGlmaWVyID09IEV2cUF0dHJpYnV0ZSkgJiYKICAgICAgICAgcFR5cGUudHlwZSA9PSBFYnRT
dHJ1Y3QpIHsKQEAgLTY0MCw3ICs2NDEsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1
YWxpZmllckVycm9yCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6
OnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmll
ciwgY29uc3QgVFR5cGUmIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBs
ZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVy
LCBjb25zdCBUVHlwZSYgdHlwZSkKIHsKICAgICBpZiAoKHF1YWxpZmllciA9PSBFdnFPdXQgfHwg
cXVhbGlmaWVyID09IEV2cUluT3V0KSAmJiAKICAgICAgICAgICAgICB0eXBlLmdldEJhc2ljVHlw
ZSgpICE9IEVidFN0cnVjdCAmJiBJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpIHsKQEAg
LTY1Nyw5ICs2NTgsOSBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxlcihUVHlw
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0g
RWJ0U3RydWN0KSB7Ci0gICAgICAgIFRUeXBlTGlzdCYgc3RydWN0dXJlID0gKnR5cGUuZ2V0U3Ry
dWN0KCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3RydWN0dXJlLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpzdHJ1Y3R1cmVb
aV0udHlwZSkpCisgICAgICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHR5cGUuZ2V0U3Ry
dWN0KCktPmZpZWxkcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZp
ZWxkcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxlcigqZmll
bGRzW2ldLT50eXBlKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgfQpAQCAtNjcyLDcgKzY3Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29udGFpbnNT
YW1wbGVyKFRUeXAKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgog
Ly8KLWJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjayhpbnQgbGluZSwgVElu
dGVybVR5cGVkKiBleHByLCBpbnQmIHNpemUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6
ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybVR5cGVkKiBleHByLCBp
bnQmIHNpemUpCiB7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIGNvbnN0YW50ID0gZXhwci0+
Z2V0QXNDb25zdGFudFVuaW9uKCk7CiAgICAgaWYgKGNvbnN0YW50ID09IDAgfHwgY29uc3RhbnQt
PmdldEJhc2ljVHlwZSgpICE9IEVidEludCkgewpAQCAtNjgwLDcgKzY4MSw3IEBAIGJvb2wgVFBh
cnNlQ29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjaygKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgc2l6ZSA9IGNvbnN0YW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJ
Q29uc3QoKTsKKyAgICBzaXplID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgIGlmIChz
aXplIDw9IDApIHsKICAgICAgICAgZXJyb3IobGluZSwgImFycmF5IHNpemUgbXVzdCBiZSBhIHBv
c2l0aXZlIGludGVnZXIiLCAiIik7CkBAIC02OTYsNyArNjk3LDcgQEAgYm9vbCBUUGFyc2VDb250
ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBp
cyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JD
aGVjayhpbnQgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJy
YXlRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBl
IHR5cGUpCiB7CiAgICAgaWYgKCh0eXBlLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpIHx8ICh0
eXBlLnF1YWxpZmllciA9PSBFdnFDb25zdCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgImNhbm5v
dCBkZWNsYXJlIGFycmF5cyBvZiB0aGlzIHF1YWxpZmllciIsIFRUeXBlKHR5cGUpLmdldENvbXBs
ZXRlU3RyaW5nKCkuY19zdHIoKSk7CkBAIC03MTEsNyArNzEyLDcgQEAgYm9vbCBUUGFyc2VDb250
ZXh0OjphcnJheVF1YWxpZmllckVycm9yQwogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBp
cyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2so
aW50IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlw
ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKIHsK
ICAgICAvLwogICAgIC8vIENhbiB0aGUgdHlwZSBiZSBhbiBhcnJheT8KQEAgLTczMiw3ICs3MzMs
NyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soCiAvLwogLy8gUmV0
dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6
OmFycmF5RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5
cGUgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBU
UHVibGljVHlwZSB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICAvLwogICAgIC8v
IERvbid0IGNoZWNrIGZvciByZXNlcnZlZCB3b3JkIHVzZSB1bnRpbCBhZnRlciB3ZSBrbm93IGl0
J3Mgbm90IGluIHRoZSBzeW1ib2wgdGFibGUsCkBAIC03NzcsMTYgKzc3OCw2IEBAIGJvb2wgVFBh
cnNlQ29udGV4dDo6YXJyYXlFcnJvckNoZWNrKGludAogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAotICAgICAgICBUVHlwZSogdCA9IHZhcmlhYmxlLT5nZXRBcnJheUluZm9y
bWF0aW9uVHlwZSgpOwotICAgICAgICB3aGlsZSAodCAhPSAwKSB7Ci0gICAgICAgICAgICBpZiAo
dC0+Z2V0TWF4QXJyYXlTaXplKCkgPiB0eXBlLmFycmF5U2l6ZSkgewotICAgICAgICAgICAgICAg
IGVycm9yKGxpbmUsICJoaWdoZXIgaW5kZXggdmFsdWUgYWxyZWFkeSB1c2VkIGZvciB0aGUgYXJy
YXkiLCBpZGVudGlmaWVyLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdC0+c2V0QXJyYXlTaXplKHR5cGUuYXJyYXlTaXpl
KTsKLSAgICAgICAgICAgIHQgPSB0LT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpOwotICAgICAg
ICB9Ci0KICAgICAgICAgaWYgKHR5cGUuYXJyYXlTaXplKQogICAgICAgICAgICAgdmFyaWFibGUt
PmdldFR5cGUoKS5zZXRBcnJheVNpemUodHlwZS5hcnJheVNpemUpOwogICAgIH0gCkBAIC03OTcs
NTYgKzc4OCwxMiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayhpbnQKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlTZXRNYXhTaXpl
KFRJbnRlcm1TeW1ib2wgKm5vZGUsIFRUeXBlKiB0eXBlLCBpbnQgc2l6ZSwgYm9vbCB1cGRhdGVG
bGFnLCBUU291cmNlTG9jIGxpbmUpCi17Ci0gICAgYm9vbCBidWlsdEluID0gZmFsc2U7Ci0gICAg
VFN5bWJvbCogc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZChub2RlLT5nZXRTeW1ib2woKSwgJmJ1
aWx0SW4pOwotICAgIGlmIChzeW1ib2wgPT0gMCkgewotICAgICAgICBlcnJvcihsaW5lLCAiIHVu
ZGVjbGFyZWQgaWRlbnRpZmllciIsIG5vZGUtPmdldFN5bWJvbCgpLmNfc3RyKCkpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19j
YXN0PFRWYXJpYWJsZSo+KHN5bWJvbCk7Ci0KLSAgICB0eXBlLT5zZXRBcnJheUluZm9ybWF0aW9u
VHlwZSh2YXJpYWJsZS0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSk7Ci0gICAgdmFyaWFibGUt
PnVwZGF0ZUFycmF5SW5mb3JtYXRpb25UeXBlKHR5cGUpOwotCi0gICAgLy8gc3BlY2lhbCBjYXNp
bmcgdG8gdGVzdCBpbmRleCB2YWx1ZSBvZiBnbF9GcmFnRGF0YS4gSWYgdGhlIGFjY2Vzc2VkIGlu
ZGV4IGlzID49IGdsX01heERyYXdCdWZmZXJzCi0gICAgLy8gaXRzIGFuIGVycm9yCi0gICAgaWYg
KG5vZGUtPmdldFN5bWJvbCgpID09ICJnbF9GcmFnRGF0YSIpIHsKLSAgICAgICAgVFN5bWJvbCog
ZnJhZ0RhdGEgPSBzeW1ib2xUYWJsZS5maW5kKCJnbF9NYXhEcmF3QnVmZmVycyIsICZidWlsdElu
KTsKLSAgICAgICAgQVNTRVJUKGZyYWdEYXRhKTsKLQotICAgICAgICBpbnQgZnJhZ0RhdGFWYWx1
ZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KGZyYWdEYXRhKS0+Z2V0Q29uc3RQb2ludGVyKClb
MF0uZ2V0SUNvbnN0KCk7Ci0gICAgICAgIGlmIChmcmFnRGF0YVZhbHVlIDw9IHNpemUpIHsKLSAg
ICAgICAgICAgIGVycm9yKGxpbmUsICIiLCAiWyIsICJnbF9GcmFnRGF0YSBjYW4gb25seSBoYXZl
IGEgbWF4IGFycmF5IHNpemUgb2YgdXAgdG8gZ2xfTWF4RHJhd0J1ZmZlcnMiKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gd2UgZG9udCB3YW50
IHRvIHVwZGF0ZSB0aGUgbWF4QXJyYXlTaXplIHdoZW4gdGhpcyBmbGFnIGlzIG5vdCBzZXQsIHdl
IGp1c3Qgd2FudCB0byBpbmNsdWRlIHRoaXMgCi0gICAgLy8gbm9kZSB0eXBlIGluIHRoZSBjaGFp
biBvZiBub2RlIHR5cGVzIHNvIHRoYXQgaXRzIHVwZGF0ZWQgd2hlbiBhIGhpZ2hlciBtYXhBcnJh
eVNpemUgY29tZXMgaW4uCi0gICAgaWYgKCF1cGRhdGVGbGFnKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBzaXplKys7Ci0gICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRNYXhBcnJheVNp
emUoc2l6ZSk7Ci0gICAgdHlwZS0+c2V0TWF4QXJyYXlTaXplKHNpemUpOwotICAgIFRUeXBlKiB0
dCA9IHR5cGU7Ci0KLSAgICB3aGlsZSh0dC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSAhPSAw
KSB7Ci0gICAgICAgIHR0ID0gdHQtPmdldEFycmF5SW5mb3JtYXRpb25UeXBlKCk7Ci0gICAgICAg
IHR0LT5zZXRNYXhBcnJheVNpemUoc2l6ZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCiAvLwogLy8gRW5mb3JjZSBub24taW5pdGlhbGl6ZXIgdHlwZS9xdWFsaWZpZXIgcnVsZXMu
CiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQ
YXJzZUNvbnRleHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlk
ZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KQorYm9vbCBUUGFyc2VDb250
ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJp
bmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KQogewogICAgIGlm
ICh0eXBlLnF1YWxpZmllciA9PSBFdnFDb25zdCkKICAgICB7CkBAIC04NzgsNyArODI1LDcgQEAg
Ym9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZQogLy8KIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojpub25J
bml0RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUm
IHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBU
UHVibGljVHlwZSYgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCiB7CiAgICAgaWYgKHJlc2Vy
dmVkRXJyb3JDaGVjayhsaW5lLCBpZGVudGlmaWVyKSkKICAgICAgICAgcmVjb3ZlcigpOwpAQCAt
ODk4LDcgKzg0NSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6bm9uSW5pdEVycm9yQ2hlY2soaW4K
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNo
ZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxp
ZmllciwgVFR5cGUqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBw
YXJhbVF1YWxpZmllciwgVFR5cGUqIHR5cGUpCiB7ICAgIAogICAgIGlmIChxdWFsaWZpZXIgIT0g
RXZxQ29uc3QgJiYgcXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgewogICAgICAgICBlcnJvcihs
aW5lLCAicXVhbGlmaWVyIG5vdCBhbGxvd2VkIG9uIGZ1bmN0aW9uIHBhcmFtZXRlciIsIGdldFF1
YWxpZmllclN0cmluZyhxdWFsaWZpZXIpKTsKQEAgLTkxNyw3ICs4NjQsNyBAQCBib29sIFRQYXJz
ZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayhpbnQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgVFBhcnNlQ29udGV4dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0
cmluZyYgZXh0ZW5zaW9uKQorYm9vbCBUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAg
ICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZp
b3IoKTsKICAgICBURXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBleHRC
ZWhhdmlvci5maW5kKGV4dGVuc2lvbi5jX3N0cigpKTsKQEAgLTk0NSwyMCArODkyLDYgQEAgYm9v
bCBUUGFyc2VDb250ZXh0OjpzdXBwb3J0c0V4dGVuc2lvbihjbwogICAgIHJldHVybiAoaXRlciAh
PSBleHRiZWhhdmlvci5lbmQoKSk7CiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6aGFuZGxlRXh0
ZW5zaW9uRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBleHROYW1lLCBjb25zdCBjaGFy
KiBiZWhhdmlvcikKLXsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwotICAgIERlY29kZVNv
dXJjZUxvYyhsaW5lLCAmbG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGlyZWN0aXZlSGFuZGxl
ci5oYW5kbGVFeHRlbnNpb24obG9jLCBleHROYW1lLCBiZWhhdmlvcik7Ci19Ci0KLXZvaWQgVFBh
cnNlQ29udGV4dDo6aGFuZGxlUHJhZ21hRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBjaGFyKiB2YWx1ZSkKLXsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwot
ICAgIERlY29kZVNvdXJjZUxvYyhsaW5lLCAmbG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGly
ZWN0aXZlSGFuZGxlci5oYW5kbGVQcmFnbWEobG9jLCBuYW1lLCB2YWx1ZSk7Ci19Ci0KIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwogLy8KIC8vIE5vbi1FcnJvcnMuCkBAIC05NzAsNyArOTAzLDcg
QEAgdm9pZCBUUGFyc2VDb250ZXh0OjpoYW5kbGVQcmFnbWFEaXJlY3RpdgogLy8KIC8vIFJldHVy
biB0aGUgZnVuY3Rpb24gc3ltYm9sIGlmIGZvdW5kLCBvdGhlcndpc2UgMC4KIC8vCi1jb25zdCBU
RnVuY3Rpb24qIFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9u
KiBjYWxsLCBib29sICpidWlsdEluKQorY29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0Ojpm
aW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBib29s
ICpidWlsdEluKQogewogICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hl
Y2sgd2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgogICAgIC8vIGhpZGRlbiBieSBh
IHZhcmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgpAQCAtOTkyLDExICs5MjUsMzIgQEAg
Y29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuYwogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBURnVuY3Rpb24qPihzeW1ib2wpOwogfQogCitib29sIFRQYXJzZUNvbnRl
eHQ6OmlzVmFyaWFibGVCdWlsdEluKGNvbnN0IFRWYXJpYWJsZSogdmFyKQoreworICAgIGJvb2wg
YnVpbHRJbiA9IGZhbHNlOworICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8g
Y2hlY2sgd2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgorICAgIC8vIGhpZGRlbiBi
eSBhIHZhcmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgorICAgIGNvbnN0IFRTeW1ib2wq
IHN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQodmFyLT5nZXROYW1lKCksICZidWlsdEluKTsKKyAg
ICBpZiAoc3ltYm9sID09IDApIHsKKyAgICAgICAgc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZCh2
YXItPmdldE1hbmdsZWROYW1lKCksICZidWlsdEluKTsKKyAgICB9CisKKyAgICBpZiAoc3ltYm9s
ID09IDApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghc3ltYm9s
LT5pc1ZhcmlhYmxlKCkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiBidWlsdEluOworfQorCiAvLwogLy8gSW5pdGlhbGl6ZXJzIHNob3cgdXAgaW4gc2V2ZXJh
bCBwbGFjZXMgaW4gdGhlIGdyYW1tYXIuICBIYXZlIG9uZSBzZXQgb2YKIC8vIGNvZGUgdG8gaGFu
ZGxlIHRoZW0gaGVyZS4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXpl
cihUU291cmNlTG9jIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlw
ZSwgCitib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbml0aWFs
aXplciwgVEludGVybU5vZGUqJiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUqIHZhcmlhYmxlKQogewog
ICAgIFRUeXBlIHR5cGUgPSBUVHlwZShwVHlwZSk7CkBAIC0xMDQ4LDEzICsxMDAyLDcgQEAgYm9v
bCBUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIoVAogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50
VW5pb24oKSkgeyAKLSAgICAgICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB2YXJp
YWJsZS0+Z2V0Q29uc3RQb2ludGVyKCk7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlLmdldE9iamVj
dFNpemUoKSA9PSAxICYmIHR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7Ci0gICAg
ICAgICAgICAgICAgKnVuaW9uQXJyYXkgPSAoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlv
bigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKVswXTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgdmFyaWFibGUtPnNoYXJlQ29uc3RQb2ludGVyKGluaXRpYWxpemVyLT5n
ZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSk7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICB2YXJpYWJsZS0+c2hhcmVDb25zdFBvaW50ZXIoaW5pdGlhbGl6ZXIt
PmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKTsKICAgICAgICAg
fSBlbHNlIGlmIChpbml0aWFsaXplci0+Z2V0QXNTeW1ib2xOb2RlKCkpIHsKICAgICAgICAgICAg
IGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQoaW5pdGlhbGl6ZXItPmdl
dEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKSk7CiAgICAgICAgICAgICBjb25zdCBUVmFyaWFi
bGUqIHRWYXIgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOwpAQCAtMTEw
OCwxNiArMTA1NiwxNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QoVElu
CiAvLwogLy8gUmV0dXJucyAwIGZvciBhbiBlcnJvciBvciB0aGUgY29uc3RydWN0ZWQgbm9kZSAo
YWdncmVnYXRlIG9yIHR5cGVkKSBmb3Igbm8gZXJyb3IuCiAvLwotVEludGVybVR5cGVkKiBUUGFy
c2VDb250ZXh0OjphZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFR5cGUq
IHR5cGUsIFRPcGVyYXRvciBvcCwgVEZ1bmN0aW9uKiBmbkNhbGwsIFRTb3VyY2VMb2MgbGluZSkK
K1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUq
IG5vZGUsIGNvbnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRGdW5jdGlvbiogZm5DYWxs
LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGlmIChub2RlID09IDApCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgVEludGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUgPSBub2RlLT5nZXRB
c0FnZ3JlZ2F0ZSgpOwogICAgIAotICAgIFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVy
VHlwZXM7CisgICAgVEZpZWxkTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyRmllbGRzOwogICAg
IGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgIG1lbWJlclR5cGVzID0gdHlw
ZS0+Z2V0U3RydWN0KCktPmJlZ2luKCk7CisgICAgICAgIG1lbWJlckZpZWxkcyA9IHR5cGUtPmdl
dFN0cnVjdCgpLT5maWVsZHMoKS5iZWdpbigpOwogICAgIAogICAgIFRUeXBlIGVsZW1lbnRUeXBl
ID0gKnR5cGU7CiAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKQEAgLTExMzksNyArMTA4Nyw3IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5
cGUtPmlzQXJyYXkoKSkKICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9k
ZSwgJmVsZW1lbnRUeXBlLCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKICAgICAgICAgZWxz
ZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0KQotICAgICAgICAgICAgbmV3Tm9kZSA9IGNv
bnN0cnVjdFN0cnVjdChub2RlLCAoKm1lbWJlclR5cGVzKS50eXBlLCAxLCBub2RlLT5nZXRMaW5l
KCksIGZhbHNlKTsKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwg
KCptZW1iZXJGaWVsZHMpLT50eXBlKCksIDEsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBv
cCwgbm9kZSwgbm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7CiAKQEAgLTExNzAsNyArMTExOCw3IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5
cGUtPmlzQXJyYXkoKSkKICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAs
ICZlbGVtZW50VHlwZSwgcGFyYW1Db3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRydWUpOwogICAg
ICAgICBlbHNlIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgICAgICBuZXdO
b2RlID0gY29uc3RydWN0U3RydWN0KCpwLCAobWVtYmVyVHlwZXNbcGFyYW1Db3VudF0pLnR5cGUs
IHBhcmFtQ291bnQrMSwgbm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG5ld05v
ZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsIG1lbWJlckZpZWxkc1twYXJhbUNvdW50XS0+dHlwZSgp
LCBwYXJhbUNvdW50KzEsIG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCAqcCwgbm9kZS0+
Z2V0TGluZSgpLCB0cnVlKTsKICAgICAgICAgCkBAIC0xMjE2LDcgKzExNjQsNyBAQCBUSW50ZXJt
VHlwZWQqIFRQYXJzZUNvbnRleHQ6OmZvbGRDb25zdENvCiAvLwogLy8gUmV0dXJucyAwIGZvciBh
biBlcnJvciBvciB0aGUgY29uc3RydWN0ZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJz
ZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBv
cCwgVEludGVybU5vZGUqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSwgYm9vbCBzdWJzZXQpCitUSW50
ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5
cGUsIFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUsIGJvb2wgc3Vic2V0KQogewogICAgIFRJbnRlcm1UeXBlZCogbmV3Tm9kZTsKICAgICBUT3Bl
cmF0b3IgYmFzaWNPcDsKQEAgLTEyNzgsNyArMTIyNiw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNl
Q29udGV4dDo6Y29uc3RydWN0QnUKIC8vCiAvLyBSZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9yIHRo
ZSBpbnB1dCBub2RlIGl0c2VsZiBpZiB0aGUgZXhwZWN0ZWQgYW5kIHRoZSBnaXZlbiBwYXJhbWV0
ZXIgdHlwZXMgbWF0Y2guCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1
Y3RTdHJ1Y3QoVEludGVybU5vZGUqIG5vZGUsIFRUeXBlKiB0eXBlLCBpbnQgcGFyYW1Db3VudCwg
VFNvdXJjZUxvYyBsaW5lLCBib29sIHN1YnNldCkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4
dDo6Y29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiBub2RlLCBUVHlwZSogdHlwZSwgaW50IHBh
cmFtQ291bnQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQogewogICAgIGlm
ICgqdHlwZSA9PSBub2RlLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKSkgewogICAgICAgICBpZiAo
c3Vic2V0KQpAQCAtMTMwNSw3ICsxMjUzLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0
Ojpjb25zdHJ1Y3RTdAogLy8gbm9kZSBvciBpdCBjb3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRy
ZWUgcmVwcmVzZW50YXRpb24gb2YgYWNjZXNzaW5nIGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVj
dHVyZSBvciBjb2x1bW4gb2YgCiAvLyBhIGNvbnN0YW50IG1hdHJpeC4KIC8vCi1USW50ZXJtVHlw
ZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVs
ZHMsIFRJbnRlcm1UeXBlZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBU
UGFyc2VDb250ZXh0OjphZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBU
SW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVy
bVR5cGVkKiB0eXBlZE5vZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFu
dE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTEzMTMsNyArMTI2MSw2IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVu
aW9uICp1bmlvbkFycmF5OwogICAgIGlmICh0ZW1wQ29uc3RhbnROb2RlKSB7CiAgICAgICAgIHVu
aW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAg
ICAgICBBU1NFUlQodW5pb25BcnJheSk7CiAKICAgICAgICAgaWYgKCF1bmlvbkFycmF5KSB7CiAg
ICAgICAgICAgICByZXR1cm4gbm9kZTsKQEAgLTEzMjgsNyArMTI3NSw3IEBAIFRJbnRlcm1UeXBl
ZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bZmllbGRzLm51bV07CiAKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGZpZWxkcy5udW07IGkrKykgewotICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0g
Pj0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSkgeworICAgICAgICBpZiAoZmllbGRz
Lm9mZnNldHNbaV0gPj0gbm9kZS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkpIHsKICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAgIGV4
dHJhSW5mb1N0cmVhbSA8PCAidmVjdG9yIGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIg
PDwgZmllbGRzLm9mZnNldHNbaV0gPDwgIiciOwogICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0
cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwpAQCAtMTM1MCw3ICsxMjk3LDcgQEAgVElu
dGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFZlYwogLy8gdG8gdGhlIGZ1bmN0aW9u
IGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChtWzBdIHdoZXJlIG0gaXMgYSBjb25zdGFu
dCBtYXRyaXgpdGhhdCByZXByZXNlbnRzIGEgCiAvLyBjb25zdGFudCBtYXRyaXggb3IgaXQgY291
bGQgYmUgdGhlIHRyZWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnN0YW50IG1hdHJpeCAocy5t
MVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RNYXRyaXhOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVk
KiBub2RlLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFk
ZENvbnN0TWF0cml4Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNv
dXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZTsKICAgICBUSW50
ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRV
bmlvbigpOwpAQCAtMTM4NSw3ICsxMzMyLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0
OjphZGRDb25zdE1hdAogLy8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJv
bCBub2RlIChhWzBdIHdoZXJlIGEgaXMgYSBjb25zdGFudCBhcnJheSl0aGF0IHJlcHJlc2VudHMg
YSAKIC8vIGNvbnN0YW50IGFycmF5IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0
aW9uIG9mIHRoZSBjb25zdGFudCBhcnJheSAocy5hMVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQg
c3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJh
eU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJ
bnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBU
SW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVy
bVR5cGVkKiB0eXBlZE5vZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFu
dE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTE0MDEsOSArMTM0OCw4IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnIKICAgICAgICAgaW5kZXgg
PSAwOwogICAgIH0KIAotICAgIGludCBhcnJheUVsZW1lbnRTaXplID0gYXJyYXlFbGVtZW50VHlw
ZS5nZXRPYmplY3RTaXplKCk7Ci0KICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgeworICAgICAg
ICAgc2l6ZV90IGFycmF5RWxlbWVudFNpemUgPSBhcnJheUVsZW1lbnRUeXBlLmdldE9iamVjdFNp
emUoKTsKICAgICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnRO
b2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwogICAgICAgICAgdHlwZWROb2RlID0gaW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24oJnVuaW9uQXJyYXlbYXJyYXlFbGVtZW50U2l6ZSAqIGlu
ZGV4XSwgdGVtcENvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsKICAgICB9IGVsc2UgewpA
QCAtMTQyMiwyMiArMTM2OCwyMSBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENv
bnN0QXJyCiAvLyBJZiB0aGVyZSBpcyBhbiBlbWJlZGRlZC9uZXN0ZWQgc3RydWN0LCBpdCBhcHBy
b3ByaWF0ZWx5IGNhbGxzIGFkZENvbnN0U3RydWN0TmVzdGVkIG9yIGFkZENvbnN0U3RydWN0RnJv
bUFnZ3IKIC8vIGZ1bmN0aW9uIGFuZCByZXR1cm5zIHRoZSBwYXJzZS10cmVlIHdpdGggdGhlIHZh
bHVlcyBvZiB0aGUgZW1iZWRkZWQvbmVzdGVkIHN0cnVjdC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQ
YXJzZUNvbnRleHQ6OmFkZENvbnN0U3RydWN0KFRTdHJpbmcmIGlkZW50aWZpZXIsIFRJbnRlcm1U
eXBlZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0
OjphZGRDb25zdFN0cnVjdChUU3RyaW5nJiBpZGVudGlmaWVyLCBUSW50ZXJtVHlwZWQqIG5vZGUs
IGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7Ci0gICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMg
PSBub2RlLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgVEludGVybVR5cGVkICp0eXBlZE5v
ZGU7Ci0gICAgaW50IGluc3RhbmNlU2l6ZSA9IDA7Ci0gICAgdW5zaWduZWQgaW50IGluZGV4ID0g
MDsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdl
dEFzQ29uc3RhbnRVbmlvbigpOworICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IG5vZGUt
PmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICBmb3IgKCBpbmRleCA9IDA7
IGluZGV4IDwgZmllbGRzLT5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKCgqZmllbGRz
KVtpbmRleF0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gaWRlbnRpZmllcikgeworICAgIHNpemVf
dCBpbnN0YW5jZVNpemUgPSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBm
aWVsZHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChmaWVsZHNbaW5kZXhdLT5uYW1l
KCkgPT0gaWRlbnRpZmllcikgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0gKCpmaWVsZHMpW2luZGV4XS50eXBlLT5nZXRP
YmplY3RTaXplKCk7CisgICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0gZmllbGRzW2luZGV4XS0+
dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBUSW50ZXJt
VHlwZWQqIHR5cGVkTm9kZSA9IDA7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25z
dGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKICAgICBpZiAodGVtcENvbnN0
YW50Tm9kZSkgewogICAgICAgICAgQ29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHRlbXBDb25z
dGFudE5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAKQEAgLTE0NTIsNyArMTM5Nyw3IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RTdHIKICAgICByZXR1cm4gdHlw
ZWROb2RlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24o
aW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCitib29sIFRQYXJzZUNvbnRleHQ6
OmVudGVyU3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0
cmluZyYgaWRlbnRpZmllcikKIHsKICAgICArK3N0cnVjdE5lc3RpbmdMZXZlbDsKIApAQCAtMTQ3
OCwyMSArMTQyMywyMSBAQCBjb25zdCBpbnQga1dlYkdMTWF4U3RydWN0TmVzdGluZyA9IDQ7CiAK
IH0gIC8vIG5hbWVzcGFjZQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJv
ckNoZWNrKFRTb3VyY2VMb2MgbGluZSwgY29uc3QgVFR5cGUmIGZpZWxkVHlwZSkKK2Jvb2wgVFBh
cnNlQ29udGV4dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgY29uc3QgVEZpZWxkJiBmaWVsZCkKIHsKICAgICBpZiAoIWlzV2ViR0xCYXNlZFNwZWMoc2hh
ZGVyU3BlYykpIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChmaWVs
ZFR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7CisgICAgaWYgKGZpZWxkLnR5cGUo
KS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKICAgICAvLyBXZSdyZSBhbHJlYWR5IGluc2lkZSBhIHN0cnVjdHVyZSBkZWZpbml0
aW9uIGF0IHRoaXMgcG9pbnQsIHNvIGFkZAogICAgIC8vIG9uZSB0byB0aGUgZmllbGQncyBzdHJ1
Y3QgbmVzdGluZy4KLSAgICBpZiAoMSArIGZpZWxkVHlwZS5nZXREZWVwZXN0U3RydWN0TmVzdGlu
ZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgeworICAgIGlmICgxICsgZmllbGQudHlwZSgp
LT5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgewog
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJh
SW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGRUeXBlLmdl
dFR5cGVOYW1lKCkgCisgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0
cnVjdCB0eXBlICIgPDwgZmllbGQubmFtZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
IGV4Y2VlZHMgbWF4aW11bSBzdHJ1Y3QgbmVzdGluZyBvZiAiIDw8IGtXZWJHTE1heFN0cnVjdE5l
c3Rpbmc7CiAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5z
dHIoKTsKICAgICAgICAgZXJyb3IobGluZSwgIiIsICIiLCBleHRyYUluZm8uY19zdHIoKSk7Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VI
ZWxwZXIuaAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL1BhcnNlSGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMyw4IEBA
IHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKICAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zKG9wdGlv
bnMpLAogICAgICAgICAgICAgc291cmNlUGF0aChzb3VyY2VQYXRoKSwKICAgICAgICAgICAgIHRy
ZWVSb290KDApLAotICAgICAgICAgICAgbGV4QWZ0ZXJUeXBlKGZhbHNlKSwKICAgICAgICAgICAg
IGxvb3BOZXN0aW5nTGV2ZWwoMCksCiAgICAgICAgICAgICBzdHJ1Y3ROZXN0aW5nTGV2ZWwoMCks
Ci0gICAgICAgICAgICBpblR5cGVQYXJlbihmYWxzZSksCiAgICAgICAgICAgICBjdXJyZW50RnVu
Y3Rpb25UeXBlKE5VTEwpLAogICAgICAgICAgICAgZnVuY3Rpb25SZXR1cm5zVmFsdWUoZmFsc2Up
LAogICAgICAgICAgICAgY2hlY2tzUHJlY2lzaW9uRXJyb3JzKGNoZWNrc1ByZWNFcnJvcnMpLApA
QCAtNTEsMTYgKzQ5LDEzIEBAIHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKICAgICBpbnQgY29tcGls
ZU9wdGlvbnM7CiAgICAgY29uc3QgY2hhciogc291cmNlUGF0aDsgICAgICAvLyBQYXRoIG9mIHNv
dXJjZSBmaWxlIG9yIE5VTEwuCiAgICAgVEludGVybU5vZGUqIHRyZWVSb290OyAgICAgICAvLyBy
b290IG9mIHBhcnNlIHRyZWUgYmVpbmcgY3JlYXRlZAotICAgIGJvb2wgbGV4QWZ0ZXJUeXBlOyAg
ICAgICAgICAgLy8gdHJ1ZSBpZiB3ZSd2ZSByZWNvZ25pemVkIGEgdHlwZSwgc28gY2FuIG9ubHkg
YmUgbG9va2luZyBmb3IgYW4gaWRlbnRpZmllcgogICAgIGludCBsb29wTmVzdGluZ0xldmVsOyAg
ICAgICAgLy8gMCBpZiBvdXRzaWRlIGFsbCBsb29wcwogICAgIGludCBzdHJ1Y3ROZXN0aW5nTGV2
ZWw7ICAgICAgLy8gaW5jcmVtZW50ZWQgd2hpbGUgcGFyc2luZyBhIHN0cnVjdCBkZWNsYXJhdGlv
bgotICAgIGJvb2wgaW5UeXBlUGFyZW47ICAgICAgICAgICAgLy8gdHJ1ZSBpZiBpbiBwYXJlbnRo
ZXNlcywgbG9va2luZyBvbmx5IGZvciBhbiBpZGVudGlmaWVyCiAgICAgY29uc3QgVFR5cGUqIGN1
cnJlbnRGdW5jdGlvblR5cGU7ICAvLyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRo
YXQncyBjdXJyZW50bHkgYmVpbmcgcGFyc2VkCiAgICAgYm9vbCBmdW5jdGlvblJldHVybnNWYWx1
ZTsgICAvLyB0cnVlIGlmIGEgbm9uLXZvaWQgZnVuY3Rpb24gaGFzIGEgcmV0dXJuCiAgICAgYm9v
bCBjaGVja3NQcmVjaXNpb25FcnJvcnM7ICAvLyB0cnVlIGlmIGFuIGVycm9yIHdpbGwgYmUgZ2Vu
ZXJhdGVkIHdoZW4gYSB2YXJpYWJsZSBpcyBkZWNsYXJlZCB3aXRob3V0IHByZWNpc2lvbiwgZXhw
bGljaXQgb3IgaW1wbGljaXQuCiAgICAgYm9vbCBmcmFnbWVudFByZWNpc2lvbkhpZ2g7ICAvLyB0
cnVlIGlmIGhpZ2hwIHByZWNpc2lvbiBpcyBzdXBwb3J0ZWQgaW4gdGhlIGZyYWdtZW50IGxhbmd1
YWdlLgogICAgIFRTdHJpbmcgSGFzaEVyck1zZzsKLSAgICBib29sIEFmdGVyRU9GOwogICAgIFRE
aWFnbm9zdGljcyBkaWFnbm9zdGljczsKICAgICBURGlyZWN0aXZlSGFuZGxlciBkaXJlY3RpdmVI
YW5kbGVyOwogICAgIHBwOjpQcmVwcm9jZXNzb3IgcHJlcHJvY2Vzc29yOwpAQCAtNjgsNzEgKzYz
LDY4IEBAIHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKIAogICAgIGludCBudW1FcnJvcnMoKSBjb25z
dCB7IHJldHVybiBkaWFnbm9zdGljcy5udW1FcnJvcnMoKTsgfQogICAgIFRJbmZvU2luayYgaW5m
b1NpbmsoKSB7IHJldHVybiBkaWFnbm9zdGljcy5pbmZvU2luaygpOyB9Ci0gICAgdm9pZCBlcnJv
cihUU291cmNlTG9jIGxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwK
KyAgICB2b2lkIGVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywgY29uc3QgY2hhciAqcmVhc29u
LCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5m
bz0iIik7Ci0gICAgdm9pZCB3YXJuaW5nKFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyKiByZWFz
b24sIGNvbnN0IGNoYXIqIHRva2VuLAorICAgIHZvaWQgd2FybmluZyhjb25zdCBUU291cmNlTG9j
JiBsb2MsIGNvbnN0IGNoYXIqIHJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCiAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5mbz0iIik7CiAgICAgdm9pZCB0cmFjZShjb25zdCBj
aGFyKiBzdHIpOwogICAgIHZvaWQgcmVjb3ZlcigpOwogCi0gICAgYm9vbCBwYXJzZVZlY3RvckZp
ZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBpbnQgbGlu
ZSk7Ci0gICAgYm9vbCBwYXJzZU1hdHJpeEZpZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IG1hdFNp
emUsIFRNYXRyaXhGaWVsZHMmLCBpbnQgbGluZSk7CisgICAgYm9vbCBwYXJzZVZlY3RvckZpZWxk
cyhjb25zdCBUU3RyaW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291
cmNlTG9jJiBsaW5lKTsKKyAgICBib29sIHBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcm
LCBpbnQgbWF0U2l6ZSwgVE1hdHJpeEZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpOwog
Ci0gICAgYm9vbCByZXNlcnZlZEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlk
ZW50aWZpZXIpOwotICAgIHZvaWQgYXNzaWduRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9w
LCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOwotICAgIHZvaWQgdW5hcnlPcEVycm9yKGlu
dCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKTsKLSAgICB2b2lkIGJpbmFy
eU9wRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcg
cmlnaHQpOwotICAgIGJvb2wgcHJlY2lzaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgVFByZWNpc2lv
biBwcmVjaXNpb24sIFRCYXNpY1R5cGUgdHlwZSk7Ci0gICAgYm9vbCBsVmFsdWVFcnJvckNoZWNr
KGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CisgICAgYm9vbCByZXNl
cnZlZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRl
bnRpZmllcik7CisgICAgdm9pZCBhc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBj
b25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKKyAgICB2b2lkIHVu
YXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmlu
ZyBvcGVyYW5kKTsKKyAgICB2b2lkIGJpbmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7CisgICAgYm9v
bCBwcmVjaXNpb25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24g
cHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5cGUpOworICAgIGJvb2wgbFZhbHVlRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CiAg
ICAgYm9vbCBjb25zdEVycm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlKTsKICAgICBib29sIGlu
dGVnZXJFcnJvckNoZWNrKFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgY2hhciogdG9rZW4pOwot
ICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhpbnQgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNo
YXIqIHRva2VuKTsKLSAgICBib29sIGNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQgbGluZSwgVElu
dGVybU5vZGUqLCBURnVuY3Rpb24mLCBUT3BlcmF0b3IsIFRUeXBlKik7Ci0gICAgYm9vbCBhcnJh
eVNpemVFcnJvckNoZWNrKGludCBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7
Ci0gICAgYm9vbCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIFRQdWJsaWNUeXBl
IHR5cGUpOwotICAgIGJvb2wgYXJyYXlUeXBlRXJyb3JDaGVjayhpbnQgbGluZSwgVFB1YmxpY1R5
cGUgdHlwZSk7Ci0gICAgYm9vbCBhcnJheUVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlk
ZW50aWZpZXIsIFRQdWJsaWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKLSAgICBi
b29sIHZvaWRFcnJvckNoZWNrKGludCwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRQdWJsaWNUeXBl
Jik7Ci0gICAgYm9vbCBib29sRXJyb3JDaGVjayhpbnQsIGNvbnN0IFRJbnRlcm1UeXBlZCopOwot
ICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soaW50LCBjb25zdCBUUHVibGljVHlwZSYpOwotICAgIGJv
b2wgc2FtcGxlckVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwg
Y29uc3QgY2hhciogcmVhc29uKTsKLSAgICBib29sIHN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
aW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSk7Ci0gICAgYm9vbCBwYXJhbWV0ZXJT
YW1wbGVyRXJyb3JDaGVjayhpbnQgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRU
eXBlJiB0eXBlKTsKLSAgICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRT
dHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KTsKLSAgICBi
b29sIG5vbkluaXRFcnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVi
bGljVHlwZSYgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOwotICAgIGJvb2wgcGFyYW1FcnJv
ckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1
YWxpZmllciwgVFR5cGUqIHR5cGUpOwotICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQg
bGluZSwgY29uc3QgVFN0cmluZyYpOworICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pOworICAgIGJv
b2wgY29uc3RydWN0b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1O
b2RlKiwgVEZ1bmN0aW9uJiwgVE9wZXJhdG9yLCBUVHlwZSopOworICAgIGJvb2wgYXJyYXlTaXpl
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGlu
dCYgc2l6ZSk7CisgICAgYm9vbCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBhcnJheVR5cGVFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOworICAgIGJvb2wg
YXJyYXlFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZp
ZXIsIFRQdWJsaWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHZv
aWRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFB1
YmxpY1R5cGUmKTsKKyAgICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBj
b25zdCBUSW50ZXJtVHlwZWQqKTsKKyAgICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmLCBjb25zdCBUUHVibGljVHlwZSYpOworICAgIGJvb2wgc2FtcGxlckVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBj
aGFyKiByZWFzb24pOworICAgIGJvb2wgc3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpOworICAgIGJvb2wgcGFy
YW1ldGVyU2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmll
ciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlJiB0eXBlKTsKKyAgICBib29sIG5vbkluaXRDb25zdEVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1
YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpOworICAgIGJvb2wgbm9uSW5pdEVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUm
IHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHBhcmFtRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBw
YXJhbVF1YWxpZmllciwgVFR5cGUqIHR5cGUpOworICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJik7CiAKKyAgICBjb25zdCBU
UHJhZ21hJiBwcmFnbWEoKSBjb25zdCB7IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLnByYWdtYSgp
OyB9CiAgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBleHRlbnNpb25CZWhhdmlvcigpIGNv
bnN0IHsgcmV0dXJuIGRpcmVjdGl2ZUhhbmRsZXIuZXh0ZW5zaW9uQmVoYXZpb3IoKTsgfQogICAg
IGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9uKTsKLSAgICB2b2lk
IGhhbmRsZUV4dGVuc2lvbkRpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogZXh0TmFtZSwg
Y29uc3QgY2hhciogYmVoYXZpb3IpOwotCi0gICAgY29uc3QgVFByYWdtYSYgcHJhZ21hKCkgY29u
c3QgeyByZXR1cm4gZGlyZWN0aXZlSGFuZGxlci5wcmFnbWEoKTsgfQotICAgIHZvaWQgaGFuZGxl
UHJhZ21hRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2
YWx1ZSk7CiAKICAgICBib29sIGNvbnRhaW5zU2FtcGxlcihUVHlwZSYgdHlwZSk7CiAgICAgYm9v
bCBhcmVBbGxDaGlsZENvbnN0KFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlKTsKLSAgICBjb25z
dCBURnVuY3Rpb24qIGZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBi
b29sICpidWlsdEluID0gMCk7Ci0gICAgYm9vbCBleGVjdXRlSW5pdGlhbGl6ZXIoVFNvdXJjZUxv
YyBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsCisgICAgY29u
c3QgVEZ1bmN0aW9uKiBmaW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0
aW9uKiBwZm5DYWxsLCBib29sICpidWlsdEluID0gMCk7CisgICAgYm9vbCBpc1ZhcmlhYmxlQnVp
bHRJbihjb25zdCBUVmFyaWFibGUqIHBWYXIpOworICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxpemVy
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
JiBwVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluaXRp
YWxpemVyLCBUSW50ZXJtTm9kZSomIGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFyaWFibGUgPSAw
KTsKLSAgICBib29sIGFycmF5U2V0TWF4U2l6ZShUSW50ZXJtU3ltYm9sKiwgVFR5cGUqLCBpbnQs
IGJvb2wsIFRTb3VyY2VMb2MpOwogCi0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdHJ1Y3RvcihU
SW50ZXJtTm9kZSosIGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBURnVuY3Rpb24qLCBUU291cmNl
TG9jKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0cnVjdG9yKFRJbnRlcm1Ob2RlKiwgY29u
c3QgVFR5cGUqLCBUT3BlcmF0b3IsIFRGdW5jdGlvbiosIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAg
ICBUSW50ZXJtVHlwZWQqIGZvbGRDb25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUqIGFn
Z3JOb2RlLCBjb25zdCBUVHlwZSYgdHlwZSk7Ci0gICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RT
dHJ1Y3QoVEludGVybU5vZGUqLCBUVHlwZSosIGludCwgVFNvdXJjZUxvYywgYm9vbCBzdWJzZXQp
OwotICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSosIFRPcGVy
YXRvciwgVEludGVybU5vZGUqLCBUU291cmNlTG9jLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVy
bVR5cGVkKiBhZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCos
IFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhOb2RlKGludCAs
IFRJbnRlcm1UeXBlZCosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RB
cnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSk7
Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJbnRlcm1UeXBl
ZCosIFRTb3VyY2VMb2MpOworICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0U3RydWN0KFRJbnRl
cm1Ob2RlKiwgVFR5cGUqLCBpbnQsIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7Cisg
ICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9y
LCBUSW50ZXJtTm9kZSosIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7CisgICAgVElu
dGVybVR5cGVkKiBhZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBl
ZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0TWF0cml4
Tm9kZShpbnQgLCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVy
bVR5cGVkKiBhZGRDb25zdEFycmF5Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwg
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSk7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVj
dChUU3RyaW5nJiAsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKIAogICAgIC8v
IFBlcmZvcm1zIGFuIGVycm9yIGNoZWNrIGZvciBlbWJlZGRlZCBzdHJ1Y3QgZGVjbGFyYXRpb25z
LgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbiBlcnJvciB3YXMgcmFpc2VkIGR1ZSB0byB0aGUg
ZGVjbGFyYXRpb24gb2YKICAgICAvLyB0aGlzIHN0cnVjdC4KLSAgICBib29sIGVudGVyU3RydWN0
RGVjbGFyYXRpb24oVFNvdXJjZUxvYyBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsK
KyAgICBib29sIGVudGVyU3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Y29uc3QgVFN0cmluZyYgaWRlbnRpZmllcik7CiAgICAgdm9pZCBleGl0U3RydWN0RGVjbGFyYXRp
b24oKTsKIAotICAgIGJvb2wgc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soVFNvdXJjZUxvYyBsaW5l
LCBjb25zdCBUVHlwZSYgZmllbGRUeXBlKTsKKyAgICBib29sIHN0cnVjdE5lc3RpbmdFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQpOwogfTsKIAog
aW50IFBhUGFyc2VTdHJpbmdzKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5n
W10sIGNvbnN0IGludCBsZW5ndGhbXSwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Qb29sQWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuY3BwCShyZXZpc2lvbiAxNTIzMjMpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI4LDI0ICsyMjgsMjcgQEAgdm9pZCBUUG9vbEFsbG9jYXRvcjo6cG9wQWxs
KCkKIAogdm9pZCogVFBvb2xBbGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBudW1CeXRlcykKIHsK
KyAgICAvLworICAgIC8vIEp1c3Qga2VlcCBzb21lIGludGVyZXN0aW5nIHN0YXRpc3RpY3MuCisg
ICAgLy8KKyAgICArK251bUNhbGxzOworICAgIHRvdGFsQnl0ZXMgKz0gbnVtQnl0ZXM7CisKICAg
ICAvLyBJZiB3ZSBhcmUgdXNpbmcgZ3VhcmQgYmxvY2tzLCBhbGwgYWxsb2NhdGlvbnMgYXJlIGJy
YWNrZXRlZCBieQogICAgIC8vIHRoZW06IFtndWFyZGJsb2NrXVthbGxvY2F0aW9uXVtndWFyZGJs
b2NrXS4gIG51bUJ5dGVzIGlzIGhvdwogICAgIC8vIG11Y2ggbWVtb3J5IHRoZSBjYWxsZXIgYXNr
ZWQgZm9yLiAgYWxsb2NhdGlvblNpemUgaXMgdGhlIHRvdGFsCiAgICAgLy8gc2l6ZSBpbmNsdWRp
bmcgZ3VhcmQgYmxvY2tzLiAgSW4gcmVsZWFzZSBidWlsZCwKICAgICAvLyBndWFyZEJsb2NrU2l6
ZT0wIGFuZCB0aGlzIGFsbCBnZXRzIG9wdGltaXplZCBhd2F5LgogICAgIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZSA9IFRBbGxvY2F0aW9uOjphbGxvY2F0aW9uU2l6ZShudW1CeXRlcyk7Ci0gICAgCi0g
ICAgLy8KLSAgICAvLyBKdXN0IGtlZXAgc29tZSBpbnRlcmVzdGluZyBzdGF0aXN0aWNzLgotICAg
IC8vCi0gICAgKytudW1DYWxsczsKLSAgICB0b3RhbEJ5dGVzICs9IG51bUJ5dGVzOworICAgIC8v
IERldGVjdCBpbnRlZ2VyIG92ZXJmbG93LgorICAgIGlmIChhbGxvY2F0aW9uU2l6ZSA8IG51bUJ5
dGVzKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vCiAgICAgLy8gRG8gdGhlIGFsbG9jYXRp
b24sIG1vc3QgbGlrZWx5IGNhc2UgZmlyc3QsIGZvciBlZmZpY2llbmN5LgogICAgIC8vIFRoaXMg
c3RlcCBjb3VsZCBiZSBtb3ZlZCB0byBiZSBpbmxpbmUgc29tZXRpbWUuCiAgICAgLy8KLSAgICBp
ZiAoY3VycmVudFBhZ2VPZmZzZXQgKyBhbGxvY2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSkgeworICAg
IGlmIChhbGxvY2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSAtIGN1cnJlbnRQYWdlT2Zmc2V0KSB7CiAg
ICAgICAgIC8vCiAgICAgICAgIC8vIFNhZmUgdG8gYWxsb2NhdGUgZnJvbSBjdXJyZW50UGFnZU9m
ZnNldC4KICAgICAgICAgLy8KQEAgLTI1NiwxMiArMjU5LDE2IEBAIHZvaWQqIFRQb29sQWxsb2Nh
dG9yOjphbGxvY2F0ZShzaXplX3QgbnUKICAgICAgICAgcmV0dXJuIGluaXRpYWxpemVBbGxvY2F0
aW9uKGluVXNlTGlzdCwgbWVtb3J5LCBudW1CeXRlcyk7CiAgICAgfQogCi0gICAgaWYgKGFsbG9j
YXRpb25TaXplICsgaGVhZGVyU2tpcCA+IHBhZ2VTaXplKSB7CisgICAgaWYgKGFsbG9jYXRpb25T
aXplID4gcGFnZVNpemUgLSBoZWFkZXJTa2lwKSB7CiAgICAgICAgIC8vCiAgICAgICAgIC8vIERv
IGEgbXVsdGktcGFnZSBhbGxvY2F0aW9uLiAgRG9uJ3QgbWl4IHRoZXNlIHdpdGggdGhlIG90aGVy
cy4KICAgICAgICAgLy8gVGhlIE9TIGlzIGVmZmljaWVudCBhbmQgYWxsb2NhdGluZyBhbmQgZnJl
ZS1pbmcgbXVsdGlwbGUgcGFnZXMuCiAgICAgICAgIC8vCiAgICAgICAgIHNpemVfdCBudW1CeXRl
c1RvQWxsb2MgPSBhbGxvY2F0aW9uU2l6ZSArIGhlYWRlclNraXA7CisgICAgICAgIC8vIERldGVj
dCBpbnRlZ2VyIG92ZXJmbG93LgorICAgICAgICBpZiAobnVtQnl0ZXNUb0FsbG9jIDwgYWxsb2Nh
dGlvblNpemUpCisgICAgICAgICAgICByZXR1cm4gMDsKKwogICAgICAgICB0SGVhZGVyKiBtZW1v
cnkgPSByZWludGVycHJldF9jYXN0PHRIZWFkZXIqPig6Om5ldyBjaGFyW251bUJ5dGVzVG9BbGxv
Y10pOwogICAgICAgICBpZiAobWVtb3J5ID09IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5o
CShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvU2hIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtODEsOCArODEsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCBJbml0QnVpbHRJblN5bWJvbFRhYmxlKGNvbnN0IFNoQnVpbHRJblJlc291cmNl
cyYgcmVzb3VyY2VzKTsKICAgICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgZnJvbSB0aGUgcHJldmlv
dXMgY29tcGlsYXRpb24uCiAgICAgdm9pZCBjbGVhclJlc3VsdHMoKTsKLSAgICAvLyBSZXR1cm4g
dHJ1ZSBpZiBmdW5jdGlvbiByZWN1cnNpb24gaXMgZGV0ZWN0ZWQuCi0gICAgYm9vbCBkZXRlY3RS
ZWN1cnNpb24oVEludGVybU5vZGUqIHJvb3QpOworICAgIC8vIFJldHVybiB0cnVlIGlmIGZ1bmN0
aW9uIHJlY3Vyc2lvbiBpcyBkZXRlY3RlZCBvciBjYWxsIGRlcHRoIGV4Y2VlZGVkLgorICAgIGJv
b2wgZGV0ZWN0Q2FsbERlcHRoKFRJbnRlcm1Ob2RlKiByb290LCBUSW5mb1NpbmsmIGluZm9TaW5r
LCBib29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgpOwogICAgIC8vIFJld3JpdGVzIGEgc2hhZGVyJ3Mg
aW50ZXJtZWRpYXRlIHRyZWUgYWNjb3JkaW5nIHRvIHRoZSBDU1MgU2hhZGVycyBzcGVjLgogICAg
IHZvaWQgcmV3cml0ZUNTU1NoYWRlcihUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBnaXZlbiBzaGFkZXIgZG9lcyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtCkBA
IC0xMDQsNiArMTA0LDggQEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUg
c2hhZGVyIGRvZXMgbm90IHVzZSBzYW1wbGVyIGRlcGVuZGVudCB2YWx1ZXMgdG8gYWZmZWN0IGNv
bnRyb2wgCiAgICAgLy8gZmxvdyBvciBpbiBvcGVyYXRpb25zIHdob3NlIHRpbWUgY2FuIGRlcGVu
ZCBvbiB0aGUgaW5wdXQgdmFsdWVzLgogICAgIGJvb2wgZW5mb3JjZUZyYWdtZW50U2hhZGVyVGlt
aW5nUmVzdHJpY3Rpb25zKGNvbnN0IFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKTsKKyAgICAvLyBS
ZXR1cm4gdHJ1ZSBpZiB0aGUgbWF4aW11bSBleHByZXNzaW9uIGNvbXBsZXhpdHkgYmVsb3cgdGhl
IGxpbWl0LgorICAgIGJvb2wgbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSog
cm9vdCk7CiAgICAgLy8gR2V0IGJ1aWx0LWluIGV4dGVuc2lvbnMgd2l0aCBkZWZhdWx0IGJlaGF2
aW9yLgogICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZ2V0RXh0ZW5zaW9uQmVoYXZpb3Io
KSBjb25zdDsKIApAQCAtMTE2LDYgKzExOCw4IEBAIHByaXZhdGU6CiAgICAgU2hTaGFkZXJTcGVj
IHNoYWRlclNwZWM7CiAKICAgICBpbnQgbWF4VW5pZm9ybVZlY3RvcnM7CisgICAgaW50IG1heEV4
cHJlc3Npb25Db21wbGV4aXR5OworICAgIGludCBtYXhDYWxsU3RhY2tEZXB0aDsKIAogICAgIC8v
IEJ1aWx0LWluIHN5bWJvbCB0YWJsZSBmb3IgdGhlIGdpdmVuIGxhbmd1YWdlLCBzcGVjLCBhbmQg
cmVzb3VyY2VzLgogICAgIC8vIEl0IGlzIHByZXNlcnZlZCBmcm9tIGNvbXBpbGUtdG8tY29tcGls
ZS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
U2hhZGVyTGFuZy5jcHAJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYg
KzEyNiw3IEBAIHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXMKICAgICBy
ZXNvdXJjZXMtPk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgPSAwOwogICAgIHJlc291cmNlcy0+QVJC
X3RleHR1cmVfcmVjdGFuZ2xlID0gMDsKICAgICByZXNvdXJjZXMtPkVYVF9kcmF3X2J1ZmZlcnMg
PSAwOworICAgIHJlc291cmNlcy0+RVhUX2ZyYWdfZGVwdGggPSAwOwogCiAgICAgLy8gRGlzYWJs
ZSBoaWdocCBwcmVjaXNpb24gaW4gZnJhZ21lbnQgc2hhZGVyIGJ5IGRlZmF1bHQuCiAgICAgcmVz
b3VyY2VzLT5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPSAwOwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lv
biAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9s
VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw0OCArMTcsMzQgQEAKIAogI2luY2x1ZGUg
PHN0ZGlvLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xl
dXRpbHMuaCIKKyNpbmNsdWRlIDxjbGltaXRzPgogCiBUVHlwZTo6VFR5cGUoY29uc3QgVFB1Ymxp
Y1R5cGUgJnApIDoKLSAgICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lzaW9uKHAucHJlY2lz
aW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBtYXRyaXgocC5tYXRy
aXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwKLSAgICAgICAgICAg
IG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVyZSgwKSwg
c3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwg
bWFuZ2xlZCgwKSwgdHlwZU5hbWUoMCkKKyAgICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lz
aW9uKHAucHJlY2lzaW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBt
YXRyaXgocC5tYXRyaXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwg
c3RydWN0dXJlKDApCiB7Ci0gICAgaWYgKHAudXNlckRlZikgeworICAgIGlmIChwLnVzZXJEZWYp
CiAgICAgICAgIHN0cnVjdHVyZSA9IHAudXNlckRlZi0+Z2V0U3RydWN0KCk7Ci0gICAgICAgIHR5
cGVOYW1lID0gTmV3UG9vbFRTdHJpbmcocC51c2VyRGVmLT5nZXRUeXBlTmFtZSgpLmNfc3RyKCkp
OwotICAgICAgICBjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsKLSAgICB9CiB9CiAKIC8v
CiAvLyBSZWN1cnNpdmVseSBnZW5lcmF0ZSBtYW5nbGVkIG5hbWVzLgogLy8KLXZvaWQgVFR5cGU6
OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYgbWFuZ2xlZE5hbWUpCitUU3RyaW5nIFRUeXBlOjpi
dWlsZE1hbmdsZWROYW1lKCkgY29uc3QKIHsKKyAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAg
IGlmIChpc01hdHJpeCgpKQogICAgICAgICBtYW5nbGVkTmFtZSArPSAnbSc7CiAgICAgZWxzZSBp
ZiAoaXNWZWN0b3IoKSkKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ3YnOwogCiAgICAgc3dpdGNo
ICh0eXBlKSB7Ci0gICAgY2FzZSBFYnRGbG9hdDogICAgICAgICAgICAgIG1hbmdsZWROYW1lICs9
ICdmJzsgICAgICBicmVhazsKLSAgICBjYXNlIEVidEludDogICAgICAgICAgICAgICAgbWFuZ2xl
ZE5hbWUgKz0gJ2knOyAgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0Qm9vbDogICAgICAgICAgICAg
ICBtYW5nbGVkTmFtZSArPSAnYic7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRTYW1wbGVyMkQ6
ICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJzMiI7ICAgICBicmVhazsKLSAgICBjYXNlIEVidFNh
bXBsZXJDdWJlOiAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInNDIjsgICAgIGJyZWFrOwotICAgIGNh
c2UgRWJ0U3RydWN0OgotICAgICAgICBtYW5nbGVkTmFtZSArPSAic3RydWN0LSI7Ci0gICAgICAg
IGlmICh0eXBlTmFtZSkKLSAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICp0eXBlTmFtZTsKLSAg
ICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBt
YW5nbGVkTmFtZSArPSAnLSc7Ci0gICAgICAgICAgICAgICAgKCpzdHJ1Y3R1cmUpW2ldLnR5cGUt
PmJ1aWxkTWFuZ2xlZE5hbWUobWFuZ2xlZE5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRGbG9hdDogICAgICAg
bWFuZ2xlZE5hbWUgKz0gJ2YnOyAgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0SW50OiAgICAgICAg
IG1hbmdsZWROYW1lICs9ICdpJzsgICAgICBicmVhazsKKyAgICBjYXNlIEVidEJvb2w6ICAgICAg
ICBtYW5nbGVkTmFtZSArPSAnYic7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRTYW1wbGVyMkQ6
ICAgbWFuZ2xlZE5hbWUgKz0gInMyIjsgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0U2FtcGxlckN1
YmU6IG1hbmdsZWROYW1lICs9ICJzQyI7ICAgICBicmVhazsKKyAgICBjYXNlIEVidFN0cnVjdDog
ICAgICBtYW5nbGVkTmFtZSArPSBzdHJ1Y3R1cmUtPm1hbmdsZWROYW1lKCk7IGJyZWFrOworICAg
IGRlZmF1bHQ6ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIG1hbmdsZWROYW1lICs9
IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIGdldE5vbWluYWxTaXplKCkpOwpAQCAtNjksNTMgKzU1
LDcyIEBAIHZvaWQgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYgbWEKICAgICAgICAg
bWFuZ2xlZE5hbWUgKz0gYnVmOwogICAgICAgICBtYW5nbGVkTmFtZSArPSAnXSc7CiAgICAgfQor
ICAgIHJldHVybiBtYW5nbGVkTmFtZTsKIH0KIAotaW50IFRUeXBlOjpnZXRTdHJ1Y3RTaXplKCkg
Y29uc3QKK3NpemVfdCBUVHlwZTo6Z2V0T2JqZWN0U2l6ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFn
ZXRTdHJ1Y3QoKSkgewotICAgICAgICBhc3NlcnQoZmFsc2UgJiYgIk5vdCBhIHN0cnVjdCIpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7CiAKLSAg
ICBpZiAoc3RydWN0dXJlU2l6ZSA9PSAwKQotICAgICAgICBmb3IgKFRUeXBlTGlzdDo6Y29uc3Rf
aXRlcmF0b3IgdGwgPSBnZXRTdHJ1Y3QoKS0+YmVnaW4oKTsgdGwgIT0gZ2V0U3RydWN0KCktPmVu
ZCgpOyB0bCsrKQotICAgICAgICAgICAgc3RydWN0dXJlU2l6ZSArPSAoKCp0bCkudHlwZSktPmdl
dE9iamVjdFNpemUoKTsKKyAgICBpZiAoZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQorICAg
ICAgICB0b3RhbFNpemUgPSBzdHJ1Y3R1cmUtPm9iamVjdFNpemUoKTsKKyAgICBlbHNlIGlmICht
YXRyaXgpCisgICAgICAgIHRvdGFsU2l6ZSA9IHNpemUgKiBzaXplOworICAgIGVsc2UKKyAgICAg
ICAgdG90YWxTaXplID0gc2l6ZTsKKworICAgIGlmIChpc0FycmF5KCkpIHsKKyAgICAgICAgc2l6
ZV90IGFycmF5U2l6ZSA9IGdldEFycmF5U2l6ZSgpOworICAgICAgICBpZiAoYXJyYXlTaXplID4g
SU5UX01BWCAvIHRvdGFsU2l6ZSkKKyAgICAgICAgICAgIHRvdGFsU2l6ZSA9IElOVF9NQVg7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRvdGFsU2l6ZSAqPSBhcnJheVNpemU7CisgICAgfQog
Ci0gICAgcmV0dXJuIHN0cnVjdHVyZVNpemU7CisgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAot
dm9pZCBUVHlwZTo6Y29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkKK2Jvb2wgVFN0cnVjdHVy
ZTo6Y29udGFpbnNBcnJheXMoKSBjb25zdAogewotICAgIGlmICghZ2V0U3RydWN0KCkpIHsKLSAg
ICAgICAgcmV0dXJuOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZpZWxkcy0+c2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqbUZpZWxkcylbaV0t
PnR5cGUoKTsKKyAgICAgICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJheSgpIHx8IGZpZWxkVHlwZS0+
aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQogCi0gICAgaW50IG1heE5lc3RpbmcgPSAwOwot
ICAgIGZvciAoVFR5cGVMaXN0Ojpjb25zdF9pdGVyYXRvciB0bCA9IGdldFN0cnVjdCgpLT5iZWdp
bigpOyB0bCAhPSBnZXRTdHJ1Y3QoKS0+ZW5kKCk7ICsrdGwpIHsKLSAgICAgICAgbWF4TmVzdGlu
ZyA9IHN0ZDo6bWF4KG1heE5lc3RpbmcsICgoKnRsKS50eXBlKS0+Z2V0RGVlcGVzdFN0cnVjdE5l
c3RpbmcoKSk7CitUU3RyaW5nIFRTdHJ1Y3R1cmU6OmJ1aWxkTWFuZ2xlZE5hbWUoKSBjb25zdAor
eworICAgIFRTdHJpbmcgbWFuZ2xlZE5hbWUoInN0cnVjdC0iKTsKKyAgICBtYW5nbGVkTmFtZSAr
PSAqbU5hbWU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsr
aSkgeworICAgICAgICBtYW5nbGVkTmFtZSArPSAnLSc7CisgICAgICAgIG1hbmdsZWROYW1lICs9
ICgqbUZpZWxkcylbaV0tPnR5cGUoKS0+Z2V0TWFuZ2xlZE5hbWUoKTsKICAgICB9Ci0KLSAgICBk
ZWVwZXN0U3RydWN0TmVzdGluZyA9IDEgKyBtYXhOZXN0aW5nOworICAgIHJldHVybiBtYW5nbGVk
TmFtZTsKIH0KIAotYm9vbCBUVHlwZTo6aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkgY29u
c3QKK3NpemVfdCBUU3RydWN0dXJlOjpjYWxjdWxhdGVPYmplY3RTaXplKCkgY29uc3QKIHsKLSAg
ICBpZiAoIXN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzaXpl
X3Qgc2l6ZSA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7
ICsraSkgeworICAgICAgICBzaXplX3QgZmllbGRTaXplID0gKCptRmllbGRzKVtpXS0+dHlwZSgp
LT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIGlmIChmaWVsZFNpemUgPiBJTlRfTUFYIC0gc2l6
ZSkKKyAgICAgICAgICAgIHNpemUgPSBJTlRfTUFYOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBzaXplICs9IGZpZWxkU2l6ZTsKICAgICB9CisgICAgcmV0dXJuIHNpemU7Cit9CiAKLSAgICBm
b3IgKFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyID0gc3RydWN0dXJlLT5iZWdpbigp
OyBtZW1iZXIgIT0gc3RydWN0dXJlLT5lbmQoKTsgbWVtYmVyKyspCi0gICAgewotICAgICAgICBp
ZiAobWVtYmVyLT50eXBlLT5pc0FycmF5KCkgfHwKLSAgICAgICAgICAgIG1lbWJlci0+dHlwZS0+
aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9CitpbnQgVFN0cnVjdHVyZTo6Y2FsY3VsYXRlRGVlcGVzdE5l
c3RpbmcoKSBjb25zdAoreworICAgIGludCBtYXhOZXN0aW5nID0gMDsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1GaWVsZHMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIG1heE5lc3Rpbmcg
PSBzdGQ6Om1heChtYXhOZXN0aW5nLCAoKm1GaWVsZHMpW2ldLT50eXBlKCktPmdldERlZXBlc3RT
dHJ1Y3ROZXN0aW5nKCkpOwogICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
MSArIG1heE5lc3Rpbmc7CiB9CiAKIC8vCkBAIC0xOTYsODQgKzIwMSw4IEBAIHZvaWQgVFN5bWJv
bFRhYmxlTGV2ZWw6OnJlbGF0ZVRvT3BlcmF0b3IKIHZvaWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJl
bGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFRTdHJpbmcmIGV4dCkKIHsK
ICAgICBmb3IgKHRMZXZlbDo6aXRlcmF0b3IgaXQgPSBsZXZlbC5iZWdpbigpOyBpdCAhPSBsZXZl
bC5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoaXQtPnNlY29uZC0+aXNGdW5jdGlvbigpKSB7
Ci0gICAgICAgICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9u
Kj4oaXQtPnNlY29uZCk7Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSBu
YW1lKQotICAgICAgICAgICAgICAgIGZ1bmN0aW9uLT5yZWxhdGVUb0V4dGVuc2lvbihleHQpOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi1UU3ltYm9sOjpUU3ltYm9sKGNvbnN0IFRTeW1ib2wmIGNv
cHlPZikKLXsKLSAgICBuYW1lID0gTmV3UG9vbFRTdHJpbmcoY29weU9mLm5hbWUtPmNfc3RyKCkp
OwotICAgIHVuaXF1ZUlkID0gY29weU9mLnVuaXF1ZUlkOwotfQotCi1UVmFyaWFibGU6OlRWYXJp
YWJsZShjb25zdCBUVmFyaWFibGUmIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpIDog
VFN5bWJvbChjb3B5T2YpCi17Ci0gICAgdHlwZS5jb3B5VHlwZShjb3B5T2YudHlwZSwgcmVtYXBw
ZXIpOwotICAgIHVzZXJUeXBlID0gY29weU9mLnVzZXJUeXBlOwotICAgIC8vIGZvciBidWlsdElu
IHN5bWJvbCB0YWJsZSBsZXZlbCwgdW5pb25BcnJheSBhbmQgYXJyYXlJbmZvcm1hdGlvbiBwb2lu
dGVycyBzaG91bGQgYmUgTlVMTAotICAgIGFzc2VydChjb3B5T2YuYXJyYXlJbmZvcm1hdGlvblR5
cGUgPT0gMCk7Ci0gICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOwotCi0gICAgaWYgKGNvcHlP
Zi51bmlvbkFycmF5KSB7Ci0gICAgICAgIGFzc2VydCghY29weU9mLnR5cGUuZ2V0U3RydWN0KCkp
OwotICAgICAgICBhc3NlcnQoY29weU9mLnR5cGUuZ2V0T2JqZWN0U2l6ZSgpID09IDEpOwotICAg
ICAgICB1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgIHVuaW9uQXJy
YXlbMF0gPSBjb3B5T2YudW5pb25BcnJheVswXTsKLSAgICB9IGVsc2UKLSAgICAgICAgdW5pb25B
cnJheSA9IDA7Ci19Ci0KLVRWYXJpYWJsZSogVFZhcmlhYmxlOjpjbG9uZShUU3RydWN0dXJlTWFw
JiByZW1hcHBlcikKLXsKLSAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZSgq
dGhpcywgcmVtYXBwZXIpOwotCi0gICAgcmV0dXJuIHZhcmlhYmxlOwotfQotCi1URnVuY3Rpb246
OlRGdW5jdGlvbihjb25zdCBURnVuY3Rpb24mIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBw
ZXIpIDogVFN5bWJvbChjb3B5T2YpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBjb3B5T2YucGFyYW1ldGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBUUGFyYW1ldGVyIHBh
cmFtOwotICAgICAgICBwYXJhbWV0ZXJzLnB1c2hfYmFjayhwYXJhbSk7Ci0gICAgICAgIHBhcmFt
ZXRlcnMuYmFjaygpLmNvcHlQYXJhbShjb3B5T2YucGFyYW1ldGVyc1tpXSwgcmVtYXBwZXIpOwot
ICAgIH0KLQotICAgIHJldHVyblR5cGUuY29weVR5cGUoY29weU9mLnJldHVyblR5cGUsIHJlbWFw
cGVyKTsKLSAgICBtYW5nbGVkTmFtZSA9IGNvcHlPZi5tYW5nbGVkTmFtZTsKLSAgICBvcCA9IGNv
cHlPZi5vcDsKLSAgICBkZWZpbmVkID0gY29weU9mLmRlZmluZWQ7Ci19Ci0KLVRGdW5jdGlvbiog
VEZ1bmN0aW9uOjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLXsKLSAgICBURnVuY3Rp
b24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgcmV0
dXJuIGZ1bmN0aW9uOwotfQotCi1UU3ltYm9sVGFibGVMZXZlbCogVFN5bWJvbFRhYmxlTGV2ZWw6
OmNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQotewotICAgIFRTeW1ib2xUYWJsZUxldmVs
ICpzeW1UYWJsZUxldmVsID0gbmV3IFRTeW1ib2xUYWJsZUxldmVsKCk7Ci0gICAgdExldmVsOjpp
dGVyYXRvciBpdGVyOwotICAgIGZvciAoaXRlciA9IGxldmVsLmJlZ2luKCk7IGl0ZXIgIT0gbGV2
ZWwuZW5kKCk7ICsraXRlcikgewotICAgICAgICBzeW1UYWJsZUxldmVsLT5pbnNlcnQoKml0ZXIt
PnNlY29uZC0+Y2xvbmUocmVtYXBwZXIpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3ltVGFibGVM
ZXZlbDsKLX0KLQotdm9pZCBUU3ltYm9sVGFibGU6OmNvcHlUYWJsZShjb25zdCBUU3ltYm9sVGFi
bGUmIGNvcHlPZikKLXsKLSAgICBUU3RydWN0dXJlTWFwIHJlbWFwcGVyOwotICAgIHVuaXF1ZUlk
ID0gY29weU9mLnVuaXF1ZUlkOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29w
eU9mLnRhYmxlLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHRhYmxlLnB1c2hfYmFjayhjb3B5T2Yu
dGFibGVbaV0tPmNsb25lKHJlbWFwcGVyKSk7Ci0gICAgfQotICAgIGZvciggdW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgY29weU9mLnByZWNpc2lvblN0YWNrLnNpemUoKTsgaSsrKSB7Ci0gICAgICAg
IHByZWNpc2lvblN0YWNrLnB1c2hfYmFjayggY29weU9mLnByZWNpc2lvblN0YWNrW2ldICk7Cisg
ICAgICAgIFRTeW1ib2wqIHN5bWJvbCA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGlmIChzeW1ib2wt
PmdldE5hbWUoKSA9PSBuYW1lKQorICAgICAgICAgICAgc3ltYm9sLT5yZWxhdGVUb0V4dGVuc2lv
bihleHQpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKKyNpbmNsdWRlICJj
b21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCiAKQEAgLTQ5LDEzICs1MCwxNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZvaWQgc2V0VW5pcXVlSWQoaW50IGlkKSB7IHVuaXF1ZUlkID0gaWQ7IH0KICAgICBp
bnQgZ2V0VW5pcXVlSWQoKSBjb25zdCB7IHJldHVybiB1bmlxdWVJZDsgfQotICAgIHZpcnR1YWwg
dm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0ID0gMDsJCi0gICAgVFN5bWJvbChj
b25zdCBUU3ltYm9sJik7Ci0gICAgdmlydHVhbCBUU3ltYm9sKiBjbG9uZShUU3RydWN0dXJlTWFw
JiByZW1hcHBlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1Np
bmspIGNvbnN0ID0gMDsKKyAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcm
IGV4dCkgeyBleHRlbnNpb24gPSBleHQ7IH0KKyAgICBjb25zdCBUU3RyaW5nJiBnZXRFeHRlbnNp
b24oKSBjb25zdCB7IHJldHVybiBleHRlbnNpb247IH0KKworcHJpdmF0ZToKKyAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oVFN5bWJvbCk7CiAKLXByb3RlY3RlZDoKICAgICBjb25zdCBUU3Ry
aW5nICpuYW1lOwogICAgIHVuc2lnbmVkIGludCB1bmlxdWVJZDsgICAgICAvLyBGb3IgcmVhbCBj
b21wYXJpbmcgZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbgorICAgIFRTdHJpbmcgZXh0ZW5zaW9uOwog
fTsKIAogLy8KQEAgLTcwLDE1ICs3NCwxMyBAQCBwcm90ZWN0ZWQ6CiAvLwogY2xhc3MgVFZhcmlh
YmxlIDogcHVibGljIFRTeW1ib2wgewogcHVibGljOgotICAgIFRWYXJpYWJsZShjb25zdCBUU3Ry
aW5nICpuYW1lLCBjb25zdCBUVHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5h
bWUpLCB0eXBlKHQpLCB1c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCksIGFycmF5SW5mb3JtYXRp
b25UeXBlKDApIHsgfQorICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpuYW1lLCBjb25zdCBU
VHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUpLCB0eXBlKHQpLCB1c2Vy
VHlwZSh1VCksIHVuaW9uQXJyYXkoMCkgeyB9CiAgICAgdmlydHVhbCB+VFZhcmlhYmxlKCkgeyB9
CiAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9ICAg
IAogICAgIFRUeXBlJiBnZXRUeXBlKCkgeyByZXR1cm4gdHlwZTsgfSAgICAKICAgICBjb25zdCBU
VHlwZSYgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KICAgICBib29sIGlzVXNlclR5
cGUoKSBjb25zdCB7IHJldHVybiB1c2VyVHlwZTsgfQogICAgIHZvaWQgc2V0UXVhbGlmaWVyKFRR
dWFsaWZpZXIgcXVhbGlmaWVyKSB7IHR5cGUuc2V0UXVhbGlmaWVyKHF1YWxpZmllcik7IH0KLSAg
ICB2b2lkIHVwZGF0ZUFycmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlICp0KSB7IGFycmF5SW5mb3Jt
YXRpb25UeXBlID0gdDsgfQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpIHsg
cmV0dXJuIGFycmF5SW5mb3JtYXRpb25UeXBlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChU
SW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKIApAQCAtMTAwLDE2ICsxMDIsMTUgQEAgcHVibGlj
OgogICAgICAgICBkZWxldGVbXSB1bmlvbkFycmF5OwogICAgICAgICB1bmlvbkFycmF5ID0gY29u
c3RBcnJheTsgIAogICAgIH0KLSAgICBUVmFyaWFibGUoY29uc3QgVFZhcmlhYmxlJiwgVFN0cnVj
dHVyZU1hcCYgcmVtYXBwZXIpOyAvLyBjb3B5IGNvbnN0cnVjdG9yCi0gICAgdmlydHVhbCBUVmFy
aWFibGUqIGNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKIAotcHJvdGVjdGVkOgorcHJp
dmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFZhcmlhYmxlKTsKKwogICAgIFRU
eXBlIHR5cGU7CiAgICAgYm9vbCB1c2VyVHlwZTsKICAgICAvLyB3ZSBhcmUgYXNzdW1pbmcgdGhh
dCBQb29sIEFsbG9jYXRvciB3aWxsIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgdG8gdW5pb25B
cnJheQogICAgIC8vIHdoZW4gdGhpcyBvYmplY3QgaXMgZGVzdHJveWVkCiAgICAgQ29uc3RhbnRV
bmlvbiAqdW5pb25BcnJheTsKLSAgICBUVHlwZSAqYXJyYXlJbmZvcm1hdGlvblR5cGU7ICAvLyB0
aGlzIGlzIHVzZWQgZm9yIHVwZGF0aW5nIG1heEFycmF5U2l6ZSBpbiBhbGwgdGhlIHJlZmVyZW5j
ZXMgdG8gYSBnaXZlbiBzeW1ib2wKIH07CiAKIC8vCkBAIC0xMTksMTEgKzEyMCw2IEBAIHByb3Rl
Y3RlZDoKIHN0cnVjdCBUUGFyYW1ldGVyIHsKICAgICBUU3RyaW5nICpuYW1lOwogICAgIFRUeXBl
KiB0eXBlOwotICAgIHZvaWQgY29weVBhcmFtKGNvbnN0IFRQYXJhbWV0ZXImIHBhcmFtLCBUU3Ry
dWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIG5hbWUgPSBOZXdQb29sVFN0cmlu
ZyhwYXJhbS5uYW1lLT5jX3N0cigpKTsKLSAgICAgICAgdHlwZSA9IHBhcmFtLnR5cGUtPmNsb25l
KHJlbWFwcGVyKTsKLSAgICB9CiB9OwogCiAvLwpAQCAtMTYzLDkgKzE1OSw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbGF0ZVRvT3BlcmF0b3IoVE9wZXJhdG9yIG8pIHsgb3AgPSBvOyB9CiAgICAg
VE9wZXJhdG9yIGdldEJ1aWx0SW5PcCgpIGNvbnN0IHsgcmV0dXJuIG9wOyB9CiAKLSAgICB2b2lk
IHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBleHRlbnNpb24gPSBleHQ7
IH0KLSAgICBjb25zdCBUU3RyaW5nJiBnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBleHRl
bnNpb247IH0KLQogICAgIHZvaWQgc2V0RGVmaW5lZCgpIHsgZGVmaW5lZCA9IHRydWU7IH0KICAg
ICBib29sIGlzRGVmaW5lZCgpIHsgcmV0dXJuIGRlZmluZWQ7IH0KIApAQCAtMTczLDE2ICsxNjYs
MTUgQEAgcHVibGljOgogICAgIGNvbnN0IFRQYXJhbWV0ZXImIGdldFBhcmFtKHNpemVfdCBpKSBj
b25zdCB7IHJldHVybiBwYXJhbWV0ZXJzW2ldOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChU
SW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKLSAgICBURnVuY3Rpb24oY29uc3QgVEZ1bmN0aW9u
JiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpOwotICAgIHZpcnR1YWwgVEZ1bmN0aW9uKiBjbG9u
ZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcik7CiAKLXByb3RlY3RlZDoKK3ByaXZhdGU6CisgICAg
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRGdW5jdGlvbik7CisKICAgICB0eXBlZGVmIFRWZWN0
b3I8VFBhcmFtZXRlcj4gVFBhcmFtTGlzdDsKICAgICBUUGFyYW1MaXN0IHBhcmFtZXRlcnM7CiAg
ICAgVFR5cGUgcmV0dXJuVHlwZTsKICAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAgIFRPcGVy
YXRvciBvcDsKLSAgICBUU3RyaW5nIGV4dGVuc2lvbjsKICAgICBib29sIGRlZmluZWQ7CiB9Owog
CkBAIC0yMzEsNyArMjIzLDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVsYXRlVG9PcGVyYXRvcihj
b25zdCBjaGFyKiBuYW1lLCBUT3BlcmF0b3Igb3ApOwogICAgIHZvaWQgcmVsYXRlVG9FeHRlbnNp
b24oY29uc3QgY2hhciogbmFtZSwgY29uc3QgVFN0cmluZyYgZXh0KTsKICAgICB2b2lkIGR1bXAo
VEluZm9TaW5rICZpbmZvU2luaykgY29uc3Q7Ci0gICAgVFN5bWJvbFRhYmxlTGV2ZWwqIGNsb25l
KFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKIAogcHJvdGVjdGVkOgogICAgIHRMZXZlbCBsZXZl
bDsKQEAgLTMyMSw3ICszMTIsNiBAQCBwdWJsaWM6CiAgICAgfQogICAgIGludCBnZXRNYXhTeW1i
b2xJZCgpIHsgcmV0dXJuIHVuaXF1ZUlkOyB9CiAgICAgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5m
b1NpbmspIGNvbnN0OwotICAgIHZvaWQgY29weVRhYmxlKGNvbnN0IFRTeW1ib2xUYWJsZSYgY29w
eU9mKTsKIAogICAgIGJvb2wgc2V0RGVmYXVsdFByZWNpc2lvbiggY29uc3QgVFB1YmxpY1R5cGUm
IHR5cGUsIFRQcmVjaXNpb24gcHJlYyApewogICAgICAgICBpZiAoSXNTYW1wbGVyKHR5cGUudHlw
ZSkpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMu
aAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1R5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcsMzAgKzcsODUgQEAKICNpZm5kZWYgX1RZ
UEVTX0lOQ0xVREVECiAjZGVmaW5lIF9UWVBFU19JTkNMVURFRAogCisjaW5jbHVkZSAiY29tbW9u
L2FuZ2xldXRpbHMuaCIKKwogI2luY2x1ZGUgImNvbXBpbGVyL0Jhc2VUeXBlcy5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL0NvbW1vbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL2RlYnVnLmgiCiAKLWNs
YXNzIFRUeXBlOwogc3RydWN0IFRQdWJsaWNUeXBlOworY2xhc3MgVFR5cGU7CiAKLS8vCi0vLyBO
ZWVkIHRvIGhhdmUgYXNzb2NpYXRpb24gb2YgbGluZSBudW1iZXJzIHRvIHR5cGVzIGluIGEgbGlz
dCBmb3IgYnVpbGRpbmcgc3RydWN0cy4KLS8vCi1zdHJ1Y3QgVFR5cGVMaW5lIHsKLSAgICBUVHlw
ZSogdHlwZTsKLSAgICBpbnQgbGluZTsKK2NsYXNzIFRGaWVsZAoreworcHVibGljOgorICAgIFBP
T0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcik7CisgICAgVEZpZWxk
KFRUeXBlKiB0eXBlLCBUU3RyaW5nKiBuYW1lKSA6IG1UeXBlKHR5cGUpLCBtTmFtZShuYW1lKSB7
fQorCisgICAgLy8gVE9ETyhhbG9rcCk6IFdlIHNob3VsZCBvbmx5IHJldHVybiBjb25zdCB0eXBl
LgorICAgIC8vIEZpeCBpdCBieSB0d2Vha2luZyBncmFtbWFyLgorICAgIFRUeXBlKiB0eXBlKCkg
eyByZXR1cm4gbVR5cGU7IH0KKyAgICBjb25zdCBUVHlwZSogdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1UeXBlOyB9CisKKyAgICBjb25zdCBUU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1O
YW1lOyB9CisKK3ByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRGaWVsZCk7
CisgICAgVFR5cGUqIG1UeXBlOworICAgIFRTdHJpbmcqIG1OYW1lOwogfTsKLXR5cGVkZWYgVFZl
Y3RvcjxUVHlwZUxpbmU+IFRUeXBlTGlzdDsKIAotaW5saW5lIFRUeXBlTGlzdCogTmV3UG9vbFRU
eXBlTGlzdCgpCit0eXBlZGVmIFRWZWN0b3I8VEZpZWxkKj4gVEZpZWxkTGlzdDsKK2lubGluZSBU
RmllbGRMaXN0KiBOZXdQb29sVEZpZWxkTGlzdCgpCiB7Ci0gICAgdm9pZCogbWVtb3J5ID0gR2xv
YmFsUG9vbEFsbG9jYXRvci5hbGxvY2F0ZShzaXplb2YoVFR5cGVMaXN0KSk7Ci0gICAgcmV0dXJu
IG5ldyhtZW1vcnkpIFRUeXBlTGlzdDsKKyAgICB2b2lkKiBtZW1vcnkgPSBHbG9iYWxQb29sQWxs
b2NhdG9yLmFsbG9jYXRlKHNpemVvZihURmllbGRMaXN0KSk7CisgICAgcmV0dXJuIG5ldyhtZW1v
cnkpIFRGaWVsZExpc3Q7CiB9CiAKLXR5cGVkZWYgVE1hcDxUVHlwZUxpc3QqLCBUVHlwZUxpc3Qq
PiBUU3RydWN0dXJlTWFwOwotdHlwZWRlZiBUTWFwPFRUeXBlTGlzdCosIFRUeXBlTGlzdCo+Ojpp
dGVyYXRvciBUU3RydWN0dXJlTWFwSXRlcmF0b3I7CitjbGFzcyBUU3RydWN0dXJlCit7CitwdWJs
aWM6CisgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKTsK
KyAgICBUU3RydWN0dXJlKFRTdHJpbmcqIG5hbWUsIFRGaWVsZExpc3QqIGZpZWxkcykKKyAgICAg
ICAgOiBtTmFtZShuYW1lKSwKKyAgICAgICAgICBtRmllbGRzKGZpZWxkcyksCisgICAgICAgICAg
bU9iamVjdFNpemUoMCksCisgICAgICAgICAgbURlZXBlc3ROZXN0aW5nKDApIHsKKyAgICB9CisK
KyAgICBjb25zdCBUU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1OYW1lOyB9CisgICAg
Y29uc3QgVEZpZWxkTGlzdCYgZmllbGRzKCkgY29uc3QgeyByZXR1cm4gKm1GaWVsZHM7IH0KKwor
ICAgIGNvbnN0IFRTdHJpbmcmIG1hbmdsZWROYW1lKCkgY29uc3QgeworICAgICAgICBpZiAobU1h
bmdsZWROYW1lLmVtcHR5KCkpCisgICAgICAgICAgICBtTWFuZ2xlZE5hbWUgPSBidWlsZE1hbmds
ZWROYW1lKCk7CisgICAgICAgIHJldHVybiBtTWFuZ2xlZE5hbWU7CisgICAgfQorICAgIHNpemVf
dCBvYmplY3RTaXplKCkgY29uc3QgeworICAgICAgICBpZiAobU9iamVjdFNpemUgPT0gMCkKKyAg
ICAgICAgICAgIG1PYmplY3RTaXplID0gY2FsY3VsYXRlT2JqZWN0U2l6ZSgpOworICAgICAgICBy
ZXR1cm4gbU9iamVjdFNpemU7CisgICAgfTsKKyAgICBpbnQgZGVlcGVzdE5lc3RpbmcoKSBjb25z
dCB7CisgICAgICAgIGlmIChtRGVlcGVzdE5lc3RpbmcgPT0gMCkKKyAgICAgICAgICAgIG1EZWVw
ZXN0TmVzdGluZyA9IGNhbGN1bGF0ZURlZXBlc3ROZXN0aW5nKCk7CisgICAgICAgIHJldHVybiBt
RGVlcGVzdE5lc3Rpbmc7CisgICAgfQorICAgIGJvb2wgY29udGFpbnNBcnJheXMoKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFN0cnVjdHVyZSk7Cisg
ICAgVFN0cmluZyBidWlsZE1hbmdsZWROYW1lKCkgY29uc3Q7CisgICAgc2l6ZV90IGNhbGN1bGF0
ZU9iamVjdFNpemUoKSBjb25zdDsKKyAgICBpbnQgY2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBj
b25zdDsKKworICAgIFRTdHJpbmcqIG1OYW1lOworICAgIFRGaWVsZExpc3QqIG1GaWVsZHM7CisK
KyAgICBtdXRhYmxlIFRTdHJpbmcgbU1hbmdsZWROYW1lOworICAgIG11dGFibGUgc2l6ZV90IG1P
YmplY3RTaXplOworICAgIG11dGFibGUgaW50IG1EZWVwZXN0TmVzdGluZzsKK307CiAKIC8vCiAv
LyBCYXNlIGNsYXNzIGZvciB0aGluZ3MgdGhhdCBoYXZlIGEgdHlwZS4KQEAgLTQxLDY5ICs5Niwx
MyBAQCBwdWJsaWM6CiAgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxs
b2NhdG9yKQogICAgIFRUeXBlKCkge30KICAgICBUVHlwZShUQmFzaWNUeXBlIHQsIFRQcmVjaXNp
b24gcCwgVFF1YWxpZmllciBxID0gRXZxVGVtcG9yYXJ5LCBpbnQgcyA9IDEsIGJvb2wgbSA9IGZh
bHNlLCBib29sIGEgPSBmYWxzZSkgOgotICAgICAgICAgICAgdHlwZSh0KSwgcHJlY2lzaW9uKHAp
LCBxdWFsaWZpZXIocSksIHNpemUocyksIG1hdHJpeChtKSwgYXJyYXkoYSksIGFycmF5U2l6ZSgw
KSwKLSAgICAgICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCks
IHN0cnVjdHVyZSgwKSwgc3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCks
IGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKSwgdHlwZU5hbWUoMCkKKyAgICAgICAgICAgIHR5cGUo
dCksIHByZWNpc2lvbihwKSwgcXVhbGlmaWVyKHEpLCBzaXplKHMpLCBtYXRyaXgobSksIGFycmF5
KGEpLCBhcnJheVNpemUoMCksIHN0cnVjdHVyZSgwKQogICAgIHsKICAgICB9CiAgICAgZXhwbGlj
aXQgVFR5cGUoY29uc3QgVFB1YmxpY1R5cGUgJnApOwotICAgIFRUeXBlKFRUeXBlTGlzdCogdXNl
ckRlZiwgY29uc3QgVFN0cmluZyYgbiwgVFByZWNpc2lvbiBwID0gRWJwVW5kZWZpbmVkKSA6Ci0g
ICAgICAgICAgICB0eXBlKEVidFN0cnVjdCksIHByZWNpc2lvbihwKSwgcXVhbGlmaWVyKEV2cVRl
bXBvcmFyeSksIHNpemUoMSksIG1hdHJpeChmYWxzZSksIGFycmF5KGZhbHNlKSwgYXJyYXlTaXpl
KDApLAotICAgICAgICAgICAgbWF4QXJyYXlTaXplKDApLCBhcnJheUluZm9ybWF0aW9uVHlwZSgw
KSwgc3RydWN0dXJlKHVzZXJEZWYpLCBzdHJ1Y3R1cmVTaXplKDApLCBkZWVwZXN0U3RydWN0TmVz
dGluZygwKSwgZmllbGROYW1lKDApLCBtYW5nbGVkKDApCisgICAgVFR5cGUoVFN0cnVjdHVyZSog
dXNlckRlZiwgVFByZWNpc2lvbiBwID0gRWJwVW5kZWZpbmVkKSA6CisgICAgICAgICAgICB0eXBl
KEVidFN0cnVjdCksIHByZWNpc2lvbihwKSwgcXVhbGlmaWVyKEV2cVRlbXBvcmFyeSksIHNpemUo
MSksIG1hdHJpeChmYWxzZSksIGFycmF5KGZhbHNlKSwgYXJyYXlTaXplKDApLCBzdHJ1Y3R1cmUo
dXNlckRlZikKICAgICB7Ci0gICAgICAgIHR5cGVOYW1lID0gTmV3UG9vbFRTdHJpbmcobi5jX3N0
cigpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvcHlUeXBlKGNvbnN0IFRUeXBlJiBjb3B5T2YsIFRT
dHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQotICAgIHsKLSAgICAgICAgdHlwZSA9IGNvcHlPZi50eXBl
OwotICAgICAgICBwcmVjaXNpb24gPSBjb3B5T2YucHJlY2lzaW9uOwotICAgICAgICBxdWFsaWZp
ZXIgPSBjb3B5T2YucXVhbGlmaWVyOwotICAgICAgICBzaXplID0gY29weU9mLnNpemU7Ci0gICAg
ICAgIG1hdHJpeCA9IGNvcHlPZi5tYXRyaXg7Ci0gICAgICAgIGFycmF5ID0gY29weU9mLmFycmF5
OwotICAgICAgICBhcnJheVNpemUgPSBjb3B5T2YuYXJyYXlTaXplOwotCi0gICAgICAgIFRTdHJ1
Y3R1cmVNYXBJdGVyYXRvciBpdGVyOwotICAgICAgICBpZiAoY29weU9mLnN0cnVjdHVyZSkgewot
ICAgICAgICAgICAgaWYgKChpdGVyID0gcmVtYXBwZXIuZmluZChzdHJ1Y3R1cmUpKSA9PSByZW1h
cHBlci5lbmQoKSkgewotICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgbmV3IHN0cnVjdHVy
ZSBoZXJlCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlID0gTmV3UG9vbFRUeXBlTGlzdCgpOwot
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29weU9mLnN0cnVj
dHVyZS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVM
aW5lOwotICAgICAgICAgICAgICAgICAgICB0eXBlTGluZS5saW5lID0gKCpjb3B5T2Yuc3RydWN0
dXJlKVtpXS5saW5lOwotICAgICAgICAgICAgICAgICAgICB0eXBlTGluZS50eXBlID0gKCpjb3B5
T2Yuc3RydWN0dXJlKVtpXS50eXBlLT5jbG9uZShyZW1hcHBlcik7Ci0gICAgICAgICAgICAgICAg
ICAgIHN0cnVjdHVyZS0+cHVzaF9iYWNrKHR5cGVMaW5lKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IGl0ZXItPnNl
Y29uZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzdHJ1Y3R1
cmUgPSAwOwotCi0gICAgICAgIGZpZWxkTmFtZSA9IDA7Ci0gICAgICAgIGlmIChjb3B5T2YuZmll
bGROYW1lKQotICAgICAgICAgICAgZmllbGROYW1lID0gTmV3UG9vbFRTdHJpbmcoY29weU9mLmZp
ZWxkTmFtZS0+Y19zdHIoKSk7Ci0gICAgICAgIHR5cGVOYW1lID0gMDsKLSAgICAgICAgaWYgKGNv
cHlPZi50eXBlTmFtZSkKLSAgICAgICAgICAgIHR5cGVOYW1lID0gTmV3UG9vbFRTdHJpbmcoY29w
eU9mLnR5cGVOYW1lLT5jX3N0cigpKTsKLQotICAgICAgICBtYW5nbGVkID0gMDsKLSAgICAgICAg
aWYgKGNvcHlPZi5tYW5nbGVkKQotICAgICAgICAgICAgbWFuZ2xlZCA9IE5ld1Bvb2xUU3RyaW5n
KGNvcHlPZi5tYW5nbGVkLT5jX3N0cigpKTsKLQotICAgICAgICBzdHJ1Y3R1cmVTaXplID0gY29w
eU9mLnN0cnVjdHVyZVNpemU7Ci0gICAgICAgIG1heEFycmF5U2l6ZSA9IGNvcHlPZi5tYXhBcnJh
eVNpemU7Ci0gICAgICAgIGRlZXBlc3RTdHJ1Y3ROZXN0aW5nID0gY29weU9mLmRlZXBlc3RTdHJ1
Y3ROZXN0aW5nOwotICAgICAgICBhc3NlcnQoY29weU9mLmFycmF5SW5mb3JtYXRpb25UeXBlID09
IDApOwotICAgICAgICBhcnJheUluZm9ybWF0aW9uVHlwZSA9IDA7IC8vIGFycmF5SW5mb3JtYXRp
b25UeXBlIHNob3VsZCBub3QgYmUgc2V0IGZvciBidWlsdEluIHN5bWJvbCB0YWJsZSBsZXZlbAot
ICAgIH0KLQotICAgIFRUeXBlKiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7
Ci0gICAgICAgIFRUeXBlICpuZXdUeXBlID0gbmV3IFRUeXBlKCk7Ci0gICAgICAgIG5ld1R5cGUt
PmNvcHlUeXBlKCp0aGlzLCByZW1hcHBlcik7Ci0KLSAgICAgICAgcmV0dXJuIG5ld1R5cGU7CiAg
ICAgfQogCiAgICAgVEJhc2ljVHlwZSBnZXRCYXNpY1R5cGUoKSBjb25zdCB7IHJldHVybiB0eXBl
OyB9CkBAIC0xMTksMjIgKzExOCw3IEBAIHB1YmxpYzoKICAgICBpbnQgZ2V0Tm9taW5hbFNpemUo
KSBjb25zdCB7IHJldHVybiBzaXplOyB9CiAgICAgdm9pZCBzZXROb21pbmFsU2l6ZShpbnQgcykg
eyBzaXplID0gczsgfQogICAgIC8vIEZ1bGwgc2l6ZSBvZiBzaW5nbGUgaW5zdGFuY2Ugb2YgdHlw
ZQotICAgIGludCBnZXRPYmplY3RTaXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGludCB0b3Rh
bFNpemU7Ci0KLSAgICAgICAgaWYgKGdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkKLSAgICAg
ICAgICAgIHRvdGFsU2l6ZSA9IGdldFN0cnVjdFNpemUoKTsKLSAgICAgICAgZWxzZSBpZiAobWF0
cml4KQotICAgICAgICAgICAgdG90YWxTaXplID0gc2l6ZSAqIHNpemU7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHRvdGFsU2l6ZSA9IHNpemU7Ci0KLSAgICAgICAgaWYgKGlzQXJyYXkoKSkK
LSAgICAgICAgICAgIHRvdGFsU2l6ZSAqPSBzdGQ6Om1heChnZXRBcnJheVNpemUoKSwgZ2V0TWF4
QXJyYXlTaXplKCkpOwotCi0gICAgICAgIHJldHVybiB0b3RhbFNpemU7Ci0gICAgfQorICAgIHNp
emVfdCBnZXRPYmplY3RTaXplKCkgY29uc3Q7CiAKICAgICBib29sIGlzTWF0cml4KCkgY29uc3Qg
eyByZXR1cm4gbWF0cml4ID8gdHJ1ZSA6IGZhbHNlOyB9CiAgICAgdm9pZCBzZXRNYXRyaXgoYm9v
bCBtKSB7IG1hdHJpeCA9IG07IH0KQEAgLTE0Miw0NyArMTI2LDIwIEBAIHB1YmxpYzoKICAgICBi
b29sIGlzQXJyYXkoKSBjb25zdCAgeyByZXR1cm4gYXJyYXkgPyB0cnVlIDogZmFsc2U7IH0KICAg
ICBpbnQgZ2V0QXJyYXlTaXplKCkgY29uc3QgeyByZXR1cm4gYXJyYXlTaXplOyB9CiAgICAgdm9p
ZCBzZXRBcnJheVNpemUoaW50IHMpIHsgYXJyYXkgPSB0cnVlOyBhcnJheVNpemUgPSBzOyB9Ci0g
ICAgaW50IGdldE1heEFycmF5U2l6ZSAoKSBjb25zdCB7IHJldHVybiBtYXhBcnJheVNpemU7IH0K
LSAgICB2b2lkIHNldE1heEFycmF5U2l6ZSAoaW50IHMpIHsgbWF4QXJyYXlTaXplID0gczsgfQot
ICAgIHZvaWQgY2xlYXJBcnJheW5lc3MoKSB7IGFycmF5ID0gZmFsc2U7IGFycmF5U2l6ZSA9IDA7
IG1heEFycmF5U2l6ZSA9IDA7IH0KLSAgICB2b2lkIHNldEFycmF5SW5mb3JtYXRpb25UeXBlKFRU
eXBlKiB0KSB7IGFycmF5SW5mb3JtYXRpb25UeXBlID0gdDsgfQotICAgIFRUeXBlKiBnZXRBcnJh
eUluZm9ybWF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGFycmF5SW5mb3JtYXRpb25UeXBlOyB9
CisgICAgdm9pZCBjbGVhckFycmF5bmVzcygpIHsgYXJyYXkgPSBmYWxzZTsgYXJyYXlTaXplID0g
MDsgfQogCiAgICAgYm9vbCBpc1ZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIHNpemUgPiAxICYmICFt
YXRyaXg7IH0KICAgICBib29sIGlzU2NhbGFyKCkgY29uc3QgeyByZXR1cm4gc2l6ZSA9PSAxICYm
ICFtYXRyaXggJiYgIXN0cnVjdHVyZTsgfQogCi0gICAgVFR5cGVMaXN0KiBnZXRTdHJ1Y3QoKSBj
b25zdCB7IHJldHVybiBzdHJ1Y3R1cmU7IH0KLSAgICB2b2lkIHNldFN0cnVjdChUVHlwZUxpc3Qq
IHMpIHsgc3RydWN0dXJlID0gczsgY29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCk7IH0KLQot
ICAgIGNvbnN0IFRTdHJpbmcmIGdldFR5cGVOYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGFz
c2VydCh0eXBlTmFtZSk7Ci0gICAgICAgIHJldHVybiAqdHlwZU5hbWU7Ci0gICAgfQotICAgIHZv
aWQgc2V0VHlwZU5hbWUoY29uc3QgVFN0cmluZyYgbikKLSAgICB7Ci0gICAgICAgIHR5cGVOYW1l
ID0gTmV3UG9vbFRTdHJpbmcobi5jX3N0cigpKTsKLSAgICB9Ci0KLSAgICBib29sIGlzRmllbGQo
KSBjb25zdCB7IHJldHVybiBmaWVsZE5hbWUgIT0gMDsgfQotICAgIGNvbnN0IFRTdHJpbmcmIGdl
dEZpZWxkTmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBhc3NlcnQoZmllbGROYW1lKTsKLSAg
ICAgICAgcmV0dXJuICpmaWVsZE5hbWU7Ci0gICAgfQotICAgIHZvaWQgc2V0RmllbGROYW1lKGNv
bnN0IFRTdHJpbmcmIG4pCi0gICAgewotICAgICAgICBmaWVsZE5hbWUgPSBOZXdQb29sVFN0cmlu
ZyhuLmNfc3RyKCkpOwotICAgIH0KKyAgICBUU3RydWN0dXJlKiBnZXRTdHJ1Y3QoKSBjb25zdCB7
IHJldHVybiBzdHJ1Y3R1cmU7IH0KKyAgICB2b2lkIHNldFN0cnVjdChUU3RydWN0dXJlKiBzKSB7
IHN0cnVjdHVyZSA9IHM7IH0KIAotICAgIFRTdHJpbmcmIGdldE1hbmdsZWROYW1lKCkgewotICAg
ICAgICBpZiAoIW1hbmdsZWQpIHsKLSAgICAgICAgICAgIG1hbmdsZWQgPSBOZXdQb29sVFN0cmlu
ZygiIik7Ci0gICAgICAgICAgICBidWlsZE1hbmdsZWROYW1lKCptYW5nbGVkKTsKLSAgICAgICAg
ICAgICptYW5nbGVkICs9ICc7JyA7CisgICAgY29uc3QgVFN0cmluZyYgZ2V0TWFuZ2xlZE5hbWUo
KSBjb25zdCB7CisgICAgICAgIGlmIChtYW5nbGVkLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIG1h
bmdsZWQgPSBidWlsZE1hbmdsZWROYW1lKCk7CisgICAgICAgICAgICBtYW5nbGVkICs9ICc7JzsK
ICAgICAgICAgfQotCi0gICAgICAgIHJldHVybiAqbWFuZ2xlZDsKKyAgICAgICAgcmV0dXJuIG1h
bmdsZWQ7CiAgICAgfQogCiAgICAgYm9vbCBzYW1lRWxlbWVudFR5cGUoY29uc3QgVFR5cGUmIHJp
Z2h0KSBjb25zdCB7CkBAIC0yMzAsMTQgKzE4NywxNiBAQCBwdWJsaWM6CiAgICAgLy8gRm9yIHR5
cGUgIm5lc3RpbmcyIiwgdGhpcyBtZXRob2Qgd291bGQgcmV0dXJuIDIgLS0gdGhlIG51bWJlcgog
ICAgIC8vIG9mIHN0cnVjdHVyZXMgdGhyb3VnaCB3aGljaCBpbmRpcmVjdGlvbiBtdXN0IG9jY3Vy
IHRvIHJlYWNoIHRoZQogICAgIC8vIGRlZXBlc3QgZmllbGQgKG5lc3RpbmcyLmZpZWxkMS5wb3Np
dGlvbikuCi0gICAgaW50IGdldERlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkgY29uc3QgeyByZXR1cm4g
ZGVlcGVzdFN0cnVjdE5lc3Rpbmc7IH0KKyAgICBpbnQgZ2V0RGVlcGVzdFN0cnVjdE5lc3Rpbmco
KSBjb25zdCB7CisgICAgICAgIHJldHVybiBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmRlZXBlc3RO
ZXN0aW5nKCkgOiAwOworICAgIH0KIAotICAgIGJvb2wgaXNTdHJ1Y3R1cmVDb250YWluaW5nQXJy
YXlzKCkgY29uc3Q7CisgICAgYm9vbCBpc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSBjb25z
dCB7CisgICAgICAgIHJldHVybiBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmNvbnRhaW5zQXJyYXlz
KCkgOiBmYWxzZTsKKyAgICB9CiAKLXByb3RlY3RlZDoKLSAgICB2b2lkIGJ1aWxkTWFuZ2xlZE5h
bWUoVFN0cmluZyYpOwotICAgIGludCBnZXRTdHJ1Y3RTaXplKCkgY29uc3Q7Ci0gICAgdm9pZCBj
b21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsKK3ByaXZhdGU6CisgICAgVFN0cmluZyBidWls
ZE1hbmdsZWROYW1lKCkgY29uc3Q7CiAKICAgICBUQmFzaWNUeXBlIHR5cGUgICAgICA6IDY7CiAg
ICAgVFByZWNpc2lvbiBwcmVjaXNpb247CkBAIC0yNDYsMTYgKzIwNSwxMCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdW5zaWduZWQgaW50IG1hdHJpeCAgOiAxOwogICAgIHVuc2lnbmVkIGludCBhcnJheSAg
IDogMTsKICAgICBpbnQgYXJyYXlTaXplOwotICAgIGludCBtYXhBcnJheVNpemU7Ci0gICAgVFR5
cGUqIGFycmF5SW5mb3JtYXRpb25UeXBlOwogCi0gICAgVFR5cGVMaXN0KiBzdHJ1Y3R1cmU7ICAg
ICAgLy8gMCB1bmxlc3MgdGhpcyBpcyBhIHN0cnVjdAotICAgIG11dGFibGUgaW50IHN0cnVjdHVy
ZVNpemU7Ci0gICAgaW50IGRlZXBlc3RTdHJ1Y3ROZXN0aW5nOwotCi0gICAgVFN0cmluZyAqZmll
bGROYW1lOyAgICAgICAgIC8vIGZvciBzdHJ1Y3R1cmUgZmllbGQgbmFtZXMKLSAgICBUU3RyaW5n
ICptYW5nbGVkOwotICAgIFRTdHJpbmcgKnR5cGVOYW1lOyAgICAgICAgICAvLyBmb3Igc3RydWN0
dXJlIGZpZWxkIHR5cGUgbmFtZQorICAgIFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsgICAgICAvLyAw
IHVubGVzcyB0aGlzIGlzIGEgc3RydWN0CisKKyAgICBtdXRhYmxlIFRTdHJpbmcgbWFuZ2xlZDsK
IH07CiAKIC8vCkBAIC0yNzcsOSArMjMwLDkgQEAgc3RydWN0IFRQdWJsaWNUeXBlCiAgICAgYm9v
bCBhcnJheTsKICAgICBpbnQgYXJyYXlTaXplOwogICAgIFRUeXBlKiB1c2VyRGVmOwotICAgIGlu
dCBsaW5lOworICAgIFRTb3VyY2VMb2MgbGluZTsKIAotICAgIHZvaWQgc2V0QmFzaWMoVEJhc2lj
VHlwZSBidCwgVFF1YWxpZmllciBxLCBpbnQgbG4gPSAwKQorICAgIHZvaWQgc2V0QmFzaWMoVEJh
c2ljVHlwZSBidCwgVFF1YWxpZmllciBxLCBjb25zdCBUU291cmNlTG9jJiBsbikKICAgICB7CiAg
ICAgICAgIHR5cGUgPSBidDsKICAgICAgICAgcXVhbGlmaWVyID0gcTsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3Bw
CShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvVmFyaWFibGVJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDEyICsxMzEsMTMgQEAg
dm9pZCBnZXRVc2VyRGVmaW5lZFZhcmlhYmxlSW5mbyhjb25zdCBUVAogewogICAgIEFTU0VSVCh0
eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCk7CiAKLSAgICBjb25zdCBUVHlwZUxpc3Qq
IHN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdHJ1Y3R1cmUtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5
cGUgPSAoKnN0cnVjdHVyZSlbaV0udHlwZTsKLSAgICAgICAgZ2V0VmFyaWFibGVJbmZvKCpmaWVs
ZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lICsgIi4iICsgZmllbGRUeXBlLT5n
ZXRGaWVsZE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgKyAiLiIg
KyBUSW50ZXJtVHJhdmVyc2VyOjpoYXNoKGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCksIGhhc2hG
dW5jdGlvbiksCisgICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3Qo
KS0+ZmllbGRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgY29uc3QgVFR5cGUmIGZpZWxkVHlwZSA9ICooZmllbGRzW2ldLT50eXBl
KCkpOworICAgICAgICBjb25zdCBUU3RyaW5nJiBmaWVsZE5hbWUgPSBmaWVsZHNbaV0tPm5hbWUo
KTsKKyAgICAgICAgZ2V0VmFyaWFibGVJbmZvKGZpZWxkVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5hbWUgKyAiLiIgKyBmaWVsZE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBt
YXBwZWROYW1lICsgIi4iICsgVEludGVybVRyYXZlcnNlcjo6aGFzaChmaWVsZE5hbWUsIGhhc2hG
dW5jdGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvTGlzdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGhhc2hGdW5jdGlvbik7CiAgICAgfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xf
dGFibGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDI4OSBAQAorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQg
YnkgZ2VuZXJhdGVfYnVpbHRpbl9zeW1ib2xfdGFibGUucHkuCisvLyAgICAgICAgICAgICAgICAg
KiBETyBOT1QgSEFORCBNT0RJRlkgKgorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorI2luY2x1ZGUgImNvbXBpbGVyL2J1aWx0
aW5fc3ltYm9sX3RhYmxlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvU3ltYm9sVGFibGUuaCIKKwor
c3RhdGljIHZvaWQgYnVpbHRpbjEoVFN5bWJvbFRhYmxlKiB0LCBUVHlwZSogcnZhbHVlLCBjb25z
dCBjaGFyKiBuYW1lLCBUVHlwZSogcHR5cGUxLCBjb25zdCBjaGFyKiBwbmFtZTEpCit7CisgIFRG
dW5jdGlvbiogZiA9IG5ldyBURnVuY3Rpb24obmV3IFRTdHJpbmcobmFtZSksICpydmFsdWUpOwor
ICBUUGFyYW1ldGVyIHBhcmFtID0ge25ldyBUU3RyaW5nKHBuYW1lMSksIHB0eXBlMX07CisgIGYt
PmFkZFBhcmFtZXRlcihwYXJhbSk7CisgIHQtPmluc2VydCgqZik7Cit9CisKK3N0YXRpYyB2b2lk
IGJ1aWx0aW4yKFRTeW1ib2xUYWJsZSogdCwgVFR5cGUqIHJ2YWx1ZSwgY29uc3QgY2hhciogbmFt
ZSwgVFR5cGUqIHB0eXBlMSwgY29uc3QgY2hhciogcG5hbWUxLCBUVHlwZSogcHR5cGUyLCBjb25z
dCBjaGFyKiBwbmFtZTIpCit7CisgIFRGdW5jdGlvbiogZiA9IG5ldyBURnVuY3Rpb24obmV3IFRT
dHJpbmcobmFtZSksICpydmFsdWUpOworICBUUGFyYW1ldGVyIHBhcmFtMSA9IHtuZXcgVFN0cmlu
ZyhwbmFtZTEpLCBwdHlwZTF9OworICBmLT5hZGRQYXJhbWV0ZXIocGFyYW0xKTsKKyAgVFBhcmFt
ZXRlciBwYXJhbTIgPSB7bmV3IFRTdHJpbmcocG5hbWUyKSwgcHR5cGUyfTsKKyAgZi0+YWRkUGFy
YW1ldGVyKHBhcmFtMik7CisgIHQtPmluc2VydCgqZik7Cit9CisKK3N0YXRpYyB2b2lkIGJ1aWx0
aW4zKFRTeW1ib2xUYWJsZSogdCwgVFR5cGUqIHJ2YWx1ZSwgY29uc3QgY2hhciogbmFtZSwgVFR5
cGUqIHB0eXBlMSwgY29uc3QgY2hhciogcG5hbWUxLCBUVHlwZSogcHR5cGUyLCBjb25zdCBjaGFy
KiBwbmFtZTIsIFRUeXBlKiBwdHlwZTMsIGNvbnN0IGNoYXIqIHBuYW1lMykKK3sKKyAgVEZ1bmN0
aW9uKiBmID0gbmV3IFRGdW5jdGlvbihuZXcgVFN0cmluZyhuYW1lKSwgKnJ2YWx1ZSk7CisgIFRQ
YXJhbWV0ZXIgcGFyYW0xID0ge25ldyBUU3RyaW5nKHBuYW1lMSksIHB0eXBlMX07CisgIGYtPmFk
ZFBhcmFtZXRlcihwYXJhbTEpOworICBUUGFyYW1ldGVyIHBhcmFtMiA9IHtuZXcgVFN0cmluZyhw
bmFtZTIpLCBwdHlwZTJ9OworICBmLT5hZGRQYXJhbWV0ZXIocGFyYW0yKTsKKyAgVFBhcmFtZXRl
ciBwYXJhbTMgPSB7bmV3IFRTdHJpbmcocG5hbWUzKSwgcHR5cGUzfTsKKyAgZi0+YWRkUGFyYW1l
dGVyKHBhcmFtMyk7CisgIHQtPmluc2VydCgqZik7Cit9CisKK3ZvaWQgSW5zZXJ0QnVpbHRJbkZ1
bmN0aW9uc0NvbW1vbihjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcywgVFN5bWJv
bFRhYmxlKiB0KSB7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZGVn
cmVlcyIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicmFkaWFucyIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJkZWdyZWVzIik7Cisg
ICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIpOworICAgIGJ1
aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJkZWdyZWVzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAiZGVncmVlcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIik7CisgICAgYnVpbHRpbjEodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgImRlZ3JlZXMiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicmFkaWFucyIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJkZWdyZWVzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2lu
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInNpbiIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJh
bmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJzaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAic2luIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImNvcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJj
b3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY29zIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
ImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImNvcyIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOwor
ICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJ0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAidGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
InRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0YW4iLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYXNpbiIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7Cisg
ICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgImFzaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJhc2luIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYXNpbiIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFjb3MiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOwor
ICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJhY29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAiYWNvcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImFjb3Mi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhdGFuIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhdGFuIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJhdGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
eCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJhdGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIp
OworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhdGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInlfb3Zlcl94Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgImF0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieV9vdmVyX3giKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5X292ZXJfeCIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJhdGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgInlfb3Zlcl94Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInBv
dyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicG93Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJwb3ciLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInBvdyIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZXhwIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXhwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAiZXhwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZXhwIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibG9nIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAibG9nIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAibG9nIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibG9nIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZXhwMiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgImV4cDIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJleHAyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZXhwMiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZzIiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJsb2cyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAibG9nMiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxvZzIiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzcXJ0IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAic3FydCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgInNxcnQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJzcXJ0Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiaW52ZXJzZXNxcnQiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
eCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJpbnZlcnNlc3FydCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7Cisg
ICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgImludmVyc2VzcXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWls
dGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBm
YWxzZSwgZmFsc2UpLCAiaW52ZXJzZXNxcnQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJhYnMiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhYnMiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJhYnMiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJhYnMiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJzaWduIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic2lnbiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInNpZ24iLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJzaWduIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAiZmxvb3IiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJmbG9vciIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImZsb29yIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZmxvb3IiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4x
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJjZWlsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiY2Vp
bCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNlaWwiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIp
OworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJjZWlsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAiZnJhY3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJm
cmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImZyYWN0IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
IngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZnJhY3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgIm1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
Im1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibW9k
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtb2QiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1pbiIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWluIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1pbiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
InkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWluIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIp
OworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7Cisg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1pbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBi
dWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm1h
eCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibWF4Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgIm1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAiY2xhbXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFs
Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWlu
VmFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIm1heFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgIm1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAiY2xhbXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFs
Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWlu
VmFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIm1heFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgIm1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAibWl4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhIik7CisgICAgYnVp
bHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYSIpOwor
ICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJtaXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImEiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibWl4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgInkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAiYSIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJtaXgiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
eCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgImEiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibWl4Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJhIik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
InN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAiZWRnZSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
InN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAiZWRnZSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
InN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAiZWRnZSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
InN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBm
YWxzZSwgZmFsc2UpLCAiZWRnZSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
InN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAiZWRnZSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
InN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAiZWRnZSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
InN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAiZWRnZSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
InNtb290aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOwor
ICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
ImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAic21vb3Roc3RlcCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJlZGdlMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjMo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgInNtb290aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAieCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2Uw
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAic21v
b3Roc3RlcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJlZGdlMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgInNtb290aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRn
ZTEiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJsZW5ndGgiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
eCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJsZW5ndGgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1
aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJsZW5ndGgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJsZW5ndGgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJkaXN0YW5j
ZSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJwMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJwMSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJkaXN0
YW5jZSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJwMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJwMSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJk
aXN0YW5jZSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJwMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJwMSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJkaXN0YW5jZSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJwMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJwMSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJkb3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImRvdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZG90
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJkb3QiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNyb3NzIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJub3JtYWxpemUiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJub3JtYWxpemUiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIp
OworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJub3JtYWxpemUiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1
aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJub3JtYWxpemUiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4zKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJmYWNlZm9yd2FyZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJOIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiTnJlZiIp
OworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJmYWNlZm9yd2FyZCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJOIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
IkkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAiTnJlZiIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJmYWNlZm9yd2FyZCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJOIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiTnJlZiIpOworICAgIGJ1aWx0aW4zKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJmYWNlZm9yd2FyZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJOIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiTnJlZiIpOwor
ICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJyZWZsZWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiTiIpOwor
ICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJyZWZsZWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiTiIpOwor
ICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJyZWZsZWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiTiIpOwor
ICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJyZWZsZWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiTiIpOwor
ICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJyZWZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJldGEiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmVmcmFjdCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJJIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgIk4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAiZXRhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJlZnJhY3Qi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAiSSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJOIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV0YSIpOworICAgIGJ1aWx0aW4zKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJyZWZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJldGEiKTsKKyAgICBi
dWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCB0cnVlLCBmYWxzZSksICJtYXRyaXhDb21wTXVsdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIHRydWUsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCB0cnVlLCBmYWxzZSksICJ5Iik7Cisg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgdHJ1ZSwgZmFsc2UpLCAibWF0cml4Q29tcE11bHQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCB0cnVlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgdHJ1ZSwgZmFsc2UpLCAieSIp
OworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIHRydWUsIGZhbHNlKSwgIm1hdHJpeENvbXBNdWx0IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgdHJ1ZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIHRydWUsIGZhbHNlKSwg
InkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
InkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
InkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
InkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbiIsIG5ldyBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIp
OworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuIiwgbmV3IFRUeXBlKEVidEludCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVi
dEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7Cisg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBi
dWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIs
IGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOwor
ICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5
Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbkVxdWFsIiwgbmV3IFRUeXBl
KEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iiwg
bmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW5FcXVhbCIsIG5ldyBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuRXF1YWwiLCBuZXcgVFR5
cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngi
LCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbiIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbiIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbiIs
IG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuIiwg
bmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW4iLCBu
ZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbkVxdWFs
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJU
aGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAi
Z3JlYXRlclRoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJncmVhdGVyVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0
SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJlcXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBi
dWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJlcXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWls
dGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJlcXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJlcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgImVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZXF1
YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJlcXVhbCIsIG5l
dyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgIngiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4
IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVxdWFsIiwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBUVHlwZShFYnRJ
bnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
eSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBl
KEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7
CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0
SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAg
YnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWls
dGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJhbnkiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYW55
IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFueSIsIG5ldyBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJhbGwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAiYWxsIiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFsbCIsIG5ldyBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJub3QiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAibm90IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm5vdCIsIG5l
dyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJEIiwgbmV3IFRUeXBlKEVi
dFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJz
YW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgImNvb3JkIik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUy
RFByb2oiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJELCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAidGV4dHVyZTJEUHJvaiIsIG5ldyBUVHlwZShFYnRTYW1wbGVyMkQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJj
b29yZCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlQ3ViZSIsIG5ldyBUVHlwZShF
YnRTYW1wbGVyQ3ViZSwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgImNvb3JkIik7CisgICAgaWYgKHJlc291cmNlcy5PRVNfRUdMX2lt
YWdlX2V4dGVybmFsKSB7CisgICAgICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkQiLCBu
ZXcgVFR5cGUoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAgICB9CisgICAg
aWYgKHJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsKSB7CisgICAgICAgIGJ1aWx0aW4y
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ0ZXh0dXJlMkRQcm9qIiwgbmV3IFRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9F
UywgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgImNvb3JkIik7CisgICAgfQorICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9l
eHRlcm5hbCkgeworICAgICAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJEUHJvaiIsIG5l
dyBUVHlwZShFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIH0KKyAgICBp
ZiAocmVzb3VyY2VzLkFSQl90ZXh0dXJlX3JlY3RhbmdsZSkgeworICAgICAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAidGV4dHVyZTJEUmVjdCIsIG5ldyBUVHlwZShFYnRTYW1wbGVyMkRSZWN0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
Y29vcmQiKTsKKyAgICB9CisgICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUp
IHsKKyAgICAgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFJlY3RQcm9qIiwgbmV3IFRU
eXBlKEVidFNhbXBsZXIyRFJlY3QsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIH0KKyAgICBpZiAocmVzb3Vy
Y2VzLkFSQl90ZXh0dXJlX3JlY3RhbmdsZSkgeworICAgICAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAi
dGV4dHVyZTJEUmVjdFByb2oiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJEUmVjdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImNvb3Jk
Iik7CisgICAgfQorfQorCit2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnNWZXJ0ZXgoY29uc3Qg
U2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsIFRTeW1ib2xUYWJsZSogdCkgeworICAgIGJ1
aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRMb2QiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJELCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAiY29vcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAibG9kIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUy
RFByb2pMb2QiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJELCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibG9k
Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFByb2pMb2QiLCBuZXcgVFR5cGUo
RWJ0U2FtcGxlcjJELCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
InNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibG9kIik7CisgICAgYnVpbHRpbjModCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgInRleHR1cmVDdWJlTG9kIiwgbmV3IFRUeXBlKEVidFNhbXBsZXJDdWJlLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY29v
cmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAibG9kIik7Cit9CisKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHAKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIworKgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJv
bF90YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisjaWZuZGVmIF9CVUlMVElOX1NZTUJPTF9UQUJMRV9JTkNMVURFRF8KKyNkZWZpbmUgX0JV
SUxUSU5fU1lNQk9MX1RBQkxFX0lOQ0xVREVEXworCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJM
YW5nLmgiCisKK2NsYXNzIFRTeW1ib2xUYWJsZTsKKworZXh0ZXJuIHZvaWQgSW5zZXJ0QnVpbHRJ
bkZ1bmN0aW9uc0NvbW1vbihjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcywgVFN5
bWJvbFRhYmxlKiB0KTsKK2V4dGVybiB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnNWZXJ0ZXgo
Y29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsIFRTeW1ib2xUYWJsZSogdCk7CisK
KyNlbmRpZiAvLyBfQlVJTFRJTl9TWU1CT0xfVEFCTEVfSU5DTFVERURfCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1i
b2xfdGFibGUuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMj
CisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcubAkocmV2aXNpb24gMTUyMzIzKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcubAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNyArNDcsMTAgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIExF
WEVSIChnbHNsYQogI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MTAyKQogI2VuZGlmCiAKLSNk
ZWZpbmUgWVlfVVNFUl9BQ1RJT04geXlsdmFsLT5sZXgubGluZSA9IHl5bGluZW5vOworI2RlZmlu
ZSBZWV9VU0VSX0FDVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB5
eWxsb2MtPmZpcnN0X2ZpbGUgPSB5eWxsb2MtPmxhc3RfZmlsZSA9IHl5Y29sdW1uOyBcCisgICAg
eXlsbG9jLT5maXJzdF9saW5lID0geXlsbG9jLT5sYXN0X2xpbmUgPSB5eWxpbmVubzsKKwogI2Rl
ZmluZSBZWV9JTlBVVChidWYsIHJlc3VsdCwgbWF4X3NpemUpIFwKICAgICByZXN1bHQgPSBzdHJp
bmdfaW5wdXQoYnVmLCBtYXhfc2l6ZSwgeXlzY2FubmVyKTsKIApAQCAtNTcsMTAgKzYwLDggQEAg
c3RhdGljIGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2NhbgogJX0KIAogJW9wdGlvbiBu
b3l5d3JhcCBub3VucHV0IG5ldmVyLWludGVyYWN0aXZlCi0lb3B0aW9uIHl5bGluZW5vIHJlZW50
cmFudCBiaXNvbi1icmlkZ2UKLSVvcHRpb24gc3RhY2sKKyVvcHRpb24geXlsaW5lbm8gcmVlbnRy
YW50IGJpc29uLWJyaWRnZSBiaXNvbi1sb2NhdGlvbnMKICVvcHRpb24gZXh0cmEtdHlwZT0iVFBh
cnNlQ29udGV4dCoiCi0leCBDT01NRU5UIEZJRUxEUwogCiBEICAgICAgICAgICBbMC05XQogTCAg
ICAgICAgICAgW2EtekEtWl9dCkBAIC03MCw3MyArNzEsNjAgQEAgTyAgICAgICAgICAgWzAtN10K
IAogJSUKIAotJXsKLSAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0ID0geXlleHRyYTsKLSV9Ci0K
LSAgICAvKiBTaW5nbGUtbGluZSBjb21tZW50cyAqLwotIi8vIlteXG5dKiA7CisiaW52YXJpYW50
IiAgICB7IHJldHVybiBJTlZBUklBTlQ7IH0KKyJoaWdocCIgICAgICAgIHsgcmV0dXJuIEhJR0hf
UFJFQ0lTSU9OOyB9CisibWVkaXVtcCIgICAgICB7IHJldHVybiBNRURJVU1fUFJFQ0lTSU9OOyB9
CisibG93cCIgICAgICAgICB7IHJldHVybiBMT1dfUFJFQ0lTSU9OOyB9CisicHJlY2lzaW9uIiAg
ICB7IHJldHVybiBQUkVDSVNJT047IH0KKworImF0dHJpYnV0ZSIgICAgeyByZXR1cm4gQVRUUklC
VVRFOyB9CisiY29uc3QiICAgICAgICB7IHJldHVybiBDT05TVF9RVUFMOyB9CisidW5pZm9ybSIg
ICAgICB7IHJldHVybiBVTklGT1JNOyB9CisidmFyeWluZyIgICAgICB7IHJldHVybiBWQVJZSU5H
OyB9CisKKyJicmVhayIgICAgICAgIHsgcmV0dXJuIEJSRUFLOyB9CisiY29udGludWUiICAgICB7
IHJldHVybiBDT05USU5VRTsgfQorImRvIiAgICAgICAgICAgeyByZXR1cm4gRE87IH0KKyJmb3Ii
ICAgICAgICAgIHsgcmV0dXJuIEZPUjsgfQorIndoaWxlIiAgICAgICAgeyByZXR1cm4gV0hJTEU7
IH0KKworImlmIiAgICAgICAgICAgeyByZXR1cm4gSUY7IH0KKyJlbHNlIiAgICAgICAgIHsgcmV0
dXJuIEVMU0U7IH0KKworImluIiAgICAgICAgICAgeyByZXR1cm4gSU5fUVVBTDsgfQorIm91dCIg
ICAgICAgICAgeyByZXR1cm4gT1VUX1FVQUw7IH0KKyJpbm91dCIgICAgICAgIHsgcmV0dXJuIElO
T1VUX1FVQUw7IH0KKworImZsb2F0IiAgICAgICAgeyByZXR1cm4gRkxPQVRfVFlQRTsgfQorImlu
dCIgICAgICAgICAgeyByZXR1cm4gSU5UX1RZUEU7IH0KKyJ2b2lkIiAgICAgICAgIHsgcmV0dXJu
IFZPSURfVFlQRTsgfQorImJvb2wiICAgICAgICAgeyByZXR1cm4gQk9PTF9UWVBFOyB9CisidHJ1
ZSIgICAgICAgICB7IHl5bHZhbC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuIEJPT0xDT05TVEFOVDsg
fQorImZhbHNlIiAgICAgICAgeyB5eWx2YWwtPmxleC5iID0gZmFsc2U7IHJldHVybiBCT09MQ09O
U1RBTlQ7IH0KKworImRpc2NhcmQiICAgICAgeyByZXR1cm4gRElTQ0FSRDsgfQorInJldHVybiIg
ICAgICAgeyByZXR1cm4gUkVUVVJOOyB9CisKKyJtYXQyIiAgICAgICAgIHsgcmV0dXJuIE1BVFJJ
WDI7IH0KKyJtYXQzIiAgICAgICAgIHsgcmV0dXJuIE1BVFJJWDM7IH0KKyJtYXQ0IiAgICAgICAg
IHsgcmV0dXJuIE1BVFJJWDQ7IH0KKworInZlYzIiICAgICAgICAgeyByZXR1cm4gVkVDMjsgfQor
InZlYzMiICAgICAgICAgeyByZXR1cm4gVkVDMzsgfQorInZlYzQiICAgICAgICAgeyByZXR1cm4g
VkVDNDsgfQorIml2ZWMyIiAgICAgICAgeyByZXR1cm4gSVZFQzI7IH0KKyJpdmVjMyIgICAgICAg
IHsgcmV0dXJuIElWRUMzOyB9CisiaXZlYzQiICAgICAgICB7IHJldHVybiBJVkVDNDsgfQorImJ2
ZWMyIiAgICAgICAgeyByZXR1cm4gQlZFQzI7IH0KKyJidmVjMyIgICAgICAgIHsgcmV0dXJuIEJW
RUMzOyB9CisiYnZlYzQiICAgICAgICB7IHJldHVybiBCVkVDNDsgfQorCisic2FtcGxlcjJEIiAg
ICAgICAgICB7IHJldHVybiBTQU1QTEVSMkQ7IH0KKyJzYW1wbGVyQ3ViZSIgICAgICAgIHsgcmV0
dXJuIFNBTVBMRVJDVUJFOyB9Cisic2FtcGxlckV4dGVybmFsT0VTIiB7IHJldHVybiBTQU1QTEVS
X0VYVEVSTkFMX09FUzsgfQorInNhbXBsZXIyRFJlY3QiICAgICAgeyByZXR1cm4gU0FNUExFUjJE
UkVDVDsgfQogCi0gICAgLyogTXVsdGktbGluZSBjb21tZW50cyAqLwotIi8qIiAgICAgICAgICAg
eyB5eV9wdXNoX3N0YXRlKENPTU1FTlQsIHl5c2Nhbm5lcik7IH0KLTxDT01NRU5UPi4gfAotPENP
TU1FTlQ+XG4gOwotPENPTU1FTlQ+IiovIiAgeyB5eV9wb3Bfc3RhdGUoeXlzY2FubmVyKTsgfQot
Ci0iaW52YXJpYW50IiAgICB7IHJldHVybihJTlZBUklBTlQpOyB9Ci0iaGlnaHAiICAgICAgICB7
IHJldHVybihISUdIX1BSRUNJU0lPTik7IH0KLSJtZWRpdW1wIiAgICAgIHsgcmV0dXJuKE1FRElV
TV9QUkVDSVNJT04pOyB9Ci0ibG93cCIgICAgICAgICB7IHJldHVybihMT1dfUFJFQ0lTSU9OKTsg
fQotInByZWNpc2lvbiIgICAgeyByZXR1cm4oUFJFQ0lTSU9OKTsgfQotCi0iYXR0cmlidXRlIiAg
ICB7IHJldHVybihBVFRSSUJVVEUpOyB9Ci0iY29uc3QiICAgICAgICB7IHJldHVybihDT05TVF9R
VUFMKTsgfQotInVuaWZvcm0iICAgICAgeyByZXR1cm4oVU5JRk9STSk7IH0KLSJ2YXJ5aW5nIiAg
ICAgIHsgcmV0dXJuKFZBUllJTkcpOyB9Ci0KLSJicmVhayIgICAgICAgIHsgcmV0dXJuKEJSRUFL
KTsgfQotImNvbnRpbnVlIiAgICAgeyByZXR1cm4oQ09OVElOVUUpOyB9Ci0iZG8iICAgICAgICAg
ICB7IHJldHVybihETyk7IH0KLSJmb3IiICAgICAgICAgIHsgcmV0dXJuKEZPUik7IH0KLSJ3aGls
ZSIgICAgICAgIHsgcmV0dXJuKFdISUxFKTsgfQotCi0iaWYiICAgICAgICAgICB7IHJldHVybihJ
Rik7IH0KLSJlbHNlIiAgICAgICAgIHsgcmV0dXJuKEVMU0UpOyB9Ci0KLSJpbiIgICAgICAgICAg
IHsgcmV0dXJuKElOX1FVQUwpOyB9Ci0ib3V0IiAgICAgICAgICB7IHJldHVybihPVVRfUVVBTCk7
IH0KLSJpbm91dCIgICAgICAgIHsgcmV0dXJuKElOT1VUX1FVQUwpOyB9Ci0KLSJmbG9hdCIgICAg
ICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEZMT0FUX1RZUEUpOyB9
Ci0iaW50IiAgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihJ
TlRfVFlQRSk7IH0KLSJ2b2lkIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuKFZPSURfVFlQRSk7IH0KLSJib29sIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0
ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEJPT0xfVFlQRSk7IH0KLSJ0cnVlIiAgICAgICAgIHsgeXls
dmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4oQk9PTENPTlNUQU5UKTsgfQotImZhbHNlIiAgICAg
ICAgeyB5eWx2YWwtPmxleC5iID0gZmFsc2U7IHJldHVybihCT09MQ09OU1RBTlQpOyB9Ci0KLSJk
aXNjYXJkIiAgICAgIHsgcmV0dXJuKERJU0NBUkQpOyB9Ci0icmV0dXJuIiAgICAgICB7IHJldHVy
bihSRVRVUk4pOyB9Ci0KLSJtYXQyIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
dHJ1ZTsgcmV0dXJuKE1BVFJJWDIpOyB9Ci0ibWF0MyIgICAgICAgICB7IGNvbnRleHQtPmxleEFm
dGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVgzKTsgfQotIm1hdDQiICAgICAgICAgeyBjb250
ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYNCk7IH0KLQotInZlYzIiICAg
ICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzIpOyB9Ci0i
dmVjMyIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVD
Myk7IH0KLSJ2ZWM0IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuIChWRUM0KTsgfQotIml2ZWMyIiAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0
cnVlOyByZXR1cm4gKElWRUMyKTsgfQotIml2ZWMzIiAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRl
clR5cGUgPSB0cnVlOyByZXR1cm4gKElWRUMzKTsgfQotIml2ZWM0IiAgICAgICAgeyBjb250ZXh0
LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKElWRUM0KTsgfQotImJ2ZWMyIiAgICAgICAg
eyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKEJWRUMyKTsgfQotImJ2ZWMz
IiAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKEJWRUMzKTsg
fQotImJ2ZWM0IiAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4g
KEJWRUM0KTsgfQotCi0ic2FtcGxlcjJEIiAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9
IHRydWU7IHJldHVybiBTQU1QTEVSMkQ7IH0KLSJzYW1wbGVyQ3ViZSIgICAgIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJDVUJFOyB9Ci0ic2FtcGxlckV4dGVy
bmFsT0VTIiB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSX0VY
VEVSTkFMX09FUzsgfQotInNhbXBsZXIyRFJlY3QiIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
dHJ1ZTsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KLQotInN0cnVjdCIgICAgICAgeyBjb250ZXh0
LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oU1RSVUNUKTsgfQorInN0cnVjdCIgICAgICAg
eyByZXR1cm4gU1RSVUNUOyB9CiAKICJhc20iICAgICAgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dv
cmQoeXlzY2FubmVyKTsgfQogCkBAIC0xODMsMTMgKzE3MSwxMSBAQCBPICAgICAgICAgICBbMC03
XQogImZ2ZWMzIiAgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAi
ZnZlYzQiICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAotInNh
bXBsZXIxRCIgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Ci0ic2FtcGxl
cjNEIiAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KLQotInNhbXBsZXIx
RFNoYWRvdyIgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Ci0ic2FtcGxlcjJE
U2hhZG93IiB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KLQotInNhbXBsZXIz
RFJlY3QiIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQorInNhbXBsZXIxRCIg
ICAgICAgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQorInNhbXBsZXIz
RCIgICAgICAgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQorInNhbXBs
ZXIxRFNoYWRvdyIgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQorInNh
bXBsZXIyRFNoYWRvdyIgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQor
InNhbXBsZXIzRFJlY3QiICAgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsg
fQogInNhbXBsZXIyRFJlY3RTaGFkb3ciIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVy
KTsgfQogCiAic2l6ZW9mIiAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7
IH0KQEAgLTIwMyw3MiArMTg5LDY0IEBAIE8gICAgICAgICAgIFswLTddCiAgICByZXR1cm4gY2hl
Y2tfdHlwZSh5eXNjYW5uZXIpOwogfQogCi0wW3hYXXtIfSsgICAgICAgICB7IHl5bHZhbC0+bGV4
LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENP
TlNUQU5UKTsgfQotMHtPfSsgICAgICAgICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nh
c3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KLTB7
RH0rICAgICAgICAgICAgIHsgY29udGV4dC0+ZXJyb3IoeXlsaW5lbm8sICJJbnZhbGlkIE9jdGFs
IG51bWJlci4iLCB5eXRleHQpOyBjb250ZXh0LT5yZWNvdmVyKCk7IHJldHVybiAwO30KLXtEfSsg
ICAgICAgICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5
dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Ci0KLXtEfSt7RX0gICAgICAgICAg
IHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsg
cmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Ci17RH0rIi4ie0R9Kih7RX0pPyB7IHl5bHZhbC0+bGV4
LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENP
TlNUQU5UKTsgfQotIi4ie0R9Kyh7RX0pPyAgICAgeyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KLQot
Iis9IiAgICAgICAgICAgIHsgIHJldHVybihBRERfQVNTSUdOKTsgfQotIi09IiAgICAgICAgICAg
IHsgIHJldHVybihTVUJfQVNTSUdOKTsgfQotIio9IiAgICAgICAgICAgIHsgIHJldHVybihNVUxf
QVNTSUdOKTsgfQotIi89IiAgICAgICAgICAgIHsgIHJldHVybihESVZfQVNTSUdOKTsgfQotIiU9
IiAgICAgICAgICAgIHsgIHJldHVybihNT0RfQVNTSUdOKTsgfQotIjw8PSIgICAgICAgICAgIHsg
IHJldHVybihMRUZUX0FTU0lHTik7IH0KLSI+Pj0iICAgICAgICAgICB7ICByZXR1cm4oUklHSFRf
QVNTSUdOKTsgfQotIiY9IiAgICAgICAgICAgIHsgIHJldHVybihBTkRfQVNTSUdOKTsgfQotIl49
IiAgICAgICAgICAgIHsgIHJldHVybihYT1JfQVNTSUdOKTsgfQotInw9IiAgICAgICAgICAgIHsg
IHJldHVybihPUl9BU1NJR04pOyB9Ci0KLSIrKyIgICAgICAgICAgICB7ICByZXR1cm4oSU5DX09Q
KTsgfQotIi0tIiAgICAgICAgICAgIHsgIHJldHVybihERUNfT1ApOyB9Ci0iJiYiICAgICAgICAg
ICAgeyAgcmV0dXJuKEFORF9PUCk7IH0KLSJ8fCIgICAgICAgICAgICB7ICByZXR1cm4oT1JfT1Ap
OyB9Ci0iXl4iICAgICAgICAgICAgeyAgcmV0dXJuKFhPUl9PUCk7IH0KLSI8PSIgICAgICAgICAg
ICB7ICByZXR1cm4oTEVfT1ApOyB9Ci0iPj0iICAgICAgICAgICAgeyAgcmV0dXJuKEdFX09QKTsg
fQotIj09IiAgICAgICAgICAgIHsgIHJldHVybihFUV9PUCk7IH0KLSIhPSIgICAgICAgICAgICB7
ICByZXR1cm4oTkVfT1ApOyB9Ci0iPDwiICAgICAgICAgICAgeyAgcmV0dXJuKExFRlRfT1ApOyB9
Ci0iPj4iICAgICAgICAgICAgeyAgcmV0dXJuKFJJR0hUX09QKTsgfQotIjsiICAgICAgICAgICAg
IHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihTRU1JQ09MT04pOyB9Ci0o
InsifCI8JSIpICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJuKExF
RlRfQlJBQ0UpOyB9Ci0oIn0ifCIlPiIpICAgICAgeyByZXR1cm4oUklHSFRfQlJBQ0UpOyB9Ci0i
LCIgICAgICAgICB7IGlmIChjb250ZXh0LT5pblR5cGVQYXJlbikgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gZmFsc2U7IHJldHVybihDT01NQSk7IH0KLSI6IiAgICAgICAgIHsgcmV0dXJuKENPTE9O
KTsgfQotIj0iICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJu
KEVRVUFMKTsgfQotIigiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsg
Y29udGV4dC0+aW5UeXBlUGFyZW4gPSB0cnVlOyByZXR1cm4oTEVGVF9QQVJFTik7IH0KLSIpIiAg
ICAgICAgIHsgY29udGV4dC0+aW5UeXBlUGFyZW4gPSBmYWxzZTsgcmV0dXJuKFJJR0hUX1BBUkVO
KTsgfQotKCJbInwiPDoiKSAgICAgIHsgcmV0dXJuKExFRlRfQlJBQ0tFVCk7IH0KLSgiXSJ8Ijo+
IikgICAgICB7IHJldHVybihSSUdIVF9CUkFDS0VUKTsgfQotIi4iICAgICAgICAgeyBCRUdJTihG
SUVMRFMpOyAgcmV0dXJuKERPVCk7IH0KLSIhIiAgICAgICAgIHsgcmV0dXJuKEJBTkcpOyB9Ci0i
LSIgICAgICAgICB7IHJldHVybihEQVNIKTsgfQotIn4iICAgICAgICAgeyByZXR1cm4oVElMREUp
OyB9Ci0iKyIgICAgICAgICB7IHJldHVybihQTFVTKTsgfQotIioiICAgICAgICAgeyByZXR1cm4o
U1RBUik7IH0KLSIvIiAgICAgICAgIHsgcmV0dXJuKFNMQVNIKTsgfQotIiUiICAgICAgICAgeyBy
ZXR1cm4oUEVSQ0VOVCk7IH0KLSI8IiAgICAgICAgIHsgcmV0dXJuKExFRlRfQU5HTEUpOyB9Ci0i
PiIgICAgICAgICB7IHJldHVybihSSUdIVF9BTkdMRSk7IH0KLSJ8IiAgICAgICAgIHsgcmV0dXJu
KFZFUlRJQ0FMX0JBUik7IH0KLSJeIiAgICAgICAgIHsgcmV0dXJuKENBUkVUKTsgfQotIiYiICAg
ICAgICAgeyByZXR1cm4oQU1QRVJTQU5EKTsgfQotIj8iICAgICAgICAgeyByZXR1cm4oUVVFU1RJ
T04pOyB9Ci0KLTxGSUVMRFM+e0x9KHtMfXx7RH0pKiB7IAotICAgIEJFR0lOKElOSVRJQUwpOwot
ICAgIHl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5nKHl5dGV4dCk7IAotICAgIHJl
dHVybiBGSUVMRF9TRUxFQ1RJT047Ci19Ci08RklFTERTPlsgXHRcdlxmXHJdIHt9Ci0KLVsgXHRc
dlxuXGZccl0gICB7ICB9Ci08Kj48PEVPRj4+ICAgICAgeyBjb250ZXh0LT5BZnRlckVPRiA9IHRy
dWU7IHl5dGVybWluYXRlKCk7IH0KLTwqPi4gICAgICAgICAgICB7IGNvbnRleHQtPndhcm5pbmco
eXlsaW5lbm8sICJVbmtub3duIGNoYXIiLCB5eXRleHQsICIiKTsgcmV0dXJuIDA7IH0KKzBbeFhd
e0h9KyAgICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5
dGV4dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0KKzB7T30rICAgICAgICAgICAgIHsg
eXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyBy
ZXR1cm4gSU5UQ09OU1RBTlQ7IH0KK3tEfSsgICAgICAgICAgICAgIHsgeXlsdmFsLT5sZXguaSA9
IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09OU1RB
TlQ7IH0KKwore0R9K3tFfSAgICAgICAgICAgeyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4gRkxPQVRDT05TVEFOVDsgfQore0R9KyIu
IntEfSooe0V9KT8geyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90
KHl5dGV4dCkpOyByZXR1cm4gRkxPQVRDT05TVEFOVDsgfQorIi4ie0R9Kyh7RX0pPyAgICAgeyB5
eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1
cm4gRkxPQVRDT05TVEFOVDsgfQorCisiKz0iICAgICAgICAgICAgeyByZXR1cm4gQUREX0FTU0lH
TjsgfQorIi09IiAgICAgICAgICAgIHsgcmV0dXJuIFNVQl9BU1NJR047IH0KKyIqPSIgICAgICAg
ICAgICB7IHJldHVybiBNVUxfQVNTSUdOOyB9CisiLz0iICAgICAgICAgICAgeyByZXR1cm4gRElW
X0FTU0lHTjsgfQorIiU9IiAgICAgICAgICAgIHsgcmV0dXJuIE1PRF9BU1NJR047IH0KKyI8PD0i
ICAgICAgICAgICB7IHJldHVybiBMRUZUX0FTU0lHTjsgfQorIj4+PSIgICAgICAgICAgIHsgcmV0
dXJuIFJJR0hUX0FTU0lHTjsgfQorIiY9IiAgICAgICAgICAgIHsgcmV0dXJuIEFORF9BU1NJR047
IH0KKyJePSIgICAgICAgICAgICB7IHJldHVybiBYT1JfQVNTSUdOOyB9CisifD0iICAgICAgICAg
ICAgeyByZXR1cm4gT1JfQVNTSUdOOyB9CisKKyIrKyIgICAgICAgICAgICB7IHJldHVybiBJTkNf
T1A7IH0KKyItLSIgICAgICAgICAgICB7IHJldHVybiBERUNfT1A7IH0KKyImJiIgICAgICAgICAg
ICB7IHJldHVybiBBTkRfT1A7IH0KKyJ8fCIgICAgICAgICAgICB7IHJldHVybiBPUl9PUDsgfQor
Il5eIiAgICAgICAgICAgIHsgcmV0dXJuIFhPUl9PUDsgfQorIjw9IiAgICAgICAgICAgIHsgcmV0
dXJuIExFX09QOyB9CisiPj0iICAgICAgICAgICAgeyByZXR1cm4gR0VfT1A7IH0KKyI9PSIgICAg
ICAgICAgICB7IHJldHVybiBFUV9PUDsgfQorIiE9IiAgICAgICAgICAgIHsgcmV0dXJuIE5FX09Q
OyB9CisiPDwiICAgICAgICAgICAgeyByZXR1cm4gTEVGVF9PUDsgfQorIj4+IiAgICAgICAgICAg
IHsgcmV0dXJuIFJJR0hUX09QOyB9CisiOyIgICAgICAgICAgICAgeyByZXR1cm4gU0VNSUNPTE9O
OyB9CisoInsifCI8JSIpICAgICAgeyByZXR1cm4gTEVGVF9CUkFDRTsgfQorKCJ9InwiJT4iKSAg
ICAgIHsgcmV0dXJuIFJJR0hUX0JSQUNFOyB9CisiLCIgICAgICAgICB7IHJldHVybiBDT01NQTsg
fQorIjoiICAgICAgICAgeyByZXR1cm4gQ09MT047IH0KKyI9IiAgICAgICAgIHsgcmV0dXJuIEVR
VUFMOyB9CisiKCIgICAgICAgICB7IHJldHVybiBMRUZUX1BBUkVOOyB9CisiKSIgICAgICAgICB7
IHJldHVybiBSSUdIVF9QQVJFTjsgfQorKCJbInwiPDoiKSAgeyByZXR1cm4gTEVGVF9CUkFDS0VU
OyB9CisoIl0ifCI6PiIpICB7IHJldHVybiBSSUdIVF9CUkFDS0VUOyB9CisiLiIgICAgICAgICB7
IHJldHVybiBET1Q7IH0KKyIhIiAgICAgICAgIHsgcmV0dXJuIEJBTkc7IH0KKyItIiAgICAgICAg
IHsgcmV0dXJuIERBU0g7IH0KKyJ+IiAgICAgICAgIHsgcmV0dXJuIFRJTERFOyB9CisiKyIgICAg
ICAgICB7IHJldHVybiBQTFVTOyB9CisiKiIgICAgICAgICB7IHJldHVybiBTVEFSOyB9CisiLyIg
ICAgICAgICB7IHJldHVybiBTTEFTSDsgfQorIiUiICAgICAgICAgeyByZXR1cm4gUEVSQ0VOVDsg
fQorIjwiICAgICAgICAgeyByZXR1cm4gTEVGVF9BTkdMRTsgfQorIj4iICAgICAgICAgeyByZXR1
cm4gUklHSFRfQU5HTEU7IH0KKyJ8IiAgICAgICAgIHsgcmV0dXJuIFZFUlRJQ0FMX0JBUjsgfQor
Il4iICAgICAgICAgeyByZXR1cm4gQ0FSRVQ7IH0KKyImIiAgICAgICAgIHsgcmV0dXJuIEFNUEVS
U0FORDsgfQorIj8iICAgICAgICAgeyByZXR1cm4gUVVFU1RJT047IH0KKworWyBcdFx2XG5cZlxy
XSB7IH0KKzw8RU9GPj4gICAgeyB5eXRlcm1pbmF0ZSgpOyB9CisuICAgICAgICAgIHsgYXNzZXJ0
KGZhbHNlKTsgcmV0dXJuIDA7IH0KIAogJSUKIApAQCAtMjc4LDcgKzI1Niw4IEBAIHl5X3NpemVf
dCBzdHJpbmdfaW5wdXQoY2hhciogYnVmLCB5eV9zaXoKICAgICB5eV9zaXplX3QgbGVuID0gdG9r
ZW4udHlwZSA9PSBwcDo6VG9rZW46OkxBU1QgPyAwIDogdG9rZW4udGV4dC5zaXplKCk7CiAgICAg
aWYgKGxlbiA8IG1heF9zaXplKQogICAgICAgICBtZW1jcHkoYnVmLCB0b2tlbi50ZXh0LmNfc3Ry
KCksIGxlbik7Ci0gICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJjZUxvYyh0b2tlbi5sb2NhdGlv
bi5maWxlLCB0b2tlbi5sb2NhdGlvbi5saW5lKSwgeXlzY2FubmVyKTsKKyAgICB5eXNldF9jb2x1
bW4odG9rZW4ubG9jYXRpb24uZmlsZSwgeXlzY2FubmVyKTsKKyAgICB5eXNldF9saW5lbm8odG9r
ZW4ubG9jYXRpb24ubGluZSwgeXlzY2FubmVyKTsKIAogICAgIGlmIChsZW4gPj0gbWF4X3NpemUp
CiAgICAgICAgIFlZX0ZBVEFMX0VSUk9SKCJJbnB1dCBidWZmZXIgb3ZlcmZsb3ciKTsKQEAgLTI5
MiwxMiArMjcxLDEwIEBAIGludCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAg
IAogICAgIGludCB0b2tlbiA9IElERU5USUZJRVI7CiAgICAgVFN5bWJvbCogc3ltYm9sID0geXll
eHRyYS0+c3ltYm9sVGFibGUuZmluZCh5eXRleHQpOwotICAgIGlmICh5eWV4dHJhLT5sZXhBZnRl
clR5cGUgPT0gZmFsc2UgJiYgc3ltYm9sICYmIHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7CisgICAg
aWYgKHN5bWJvbCAmJiBzeW1ib2wtPmlzVmFyaWFibGUoKSkgewogICAgICAgICBUVmFyaWFibGUq
IHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oc3ltYm9sKTsKLSAgICAgICAgaWYg
KHZhcmlhYmxlLT5pc1VzZXJUeXBlKCkpIHsKLSAgICAgICAgICAgIHl5ZXh0cmEtPmxleEFmdGVy
VHlwZSA9IHRydWU7CisgICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKQogICAgICAg
ICAgICAgdG9rZW4gPSBUWVBFX05BTUU7Ci0gICAgICAgIH0KICAgICB9CiAgICAgeXlsdmFsLT5s
ZXguc3ltYm9sID0gc3ltYm9sOwogICAgIHJldHVybiB0b2tlbjsKQEAgLTMwNiwyMiArMjgzLDEx
IEBAIGludCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogaW50IHJlc2VydmVkX3dv
cmQoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3Ry
dWN0IHl5Z3V0c190KikgeXlzY2FubmVyOwogCi0gICAgeXlleHRyYS0+ZXJyb3IoeXlsaW5lbm8s
ICJJbGxlZ2FsIHVzZSBvZiByZXNlcnZlZCB3b3JkIiwgeXl0ZXh0LCAiIik7CisgICAgeXlleHRy
YS0+ZXJyb3IoKnl5bGxvYywgIklsbGVnYWwgdXNlIG9mIHJlc2VydmVkIHdvcmQiLCB5eXRleHQs
ICIiKTsKICAgICB5eWV4dHJhLT5yZWNvdmVyKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
eXllcnJvcihUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pIHsKLSAg
ICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSBjb250ZXh0LT5zY2Fu
bmVyOwotCi0gICAgaWYgKGNvbnRleHQtPkFmdGVyRU9GKSB7Ci0gICAgICAgIGNvbnRleHQtPmVy
cm9yKHl5bGluZW5vLCByZWFzb24sICJ1bmV4cGVjdGVkIEVPRiIpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGNvbnRleHQtPmVycm9yKHl5bGluZW5vLCByZWFzb24sIHl5dGV4dCk7Ci0gICAgfQot
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLX0KLQogaW50IGdsc2xhbmdfaW5pdGlhbGl6ZShUUGFy
c2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlzY2FuX3Qgc2Nhbm5lciA9IE5VTEw7CiAgICAg
aWYgKHl5bGV4X2luaXRfZXh0cmEoY29udGV4dCwgJnNjYW5uZXIpKQpAQCAtMzQ0LDggKzMxMCw4
IEBAIGludCBnbHNsYW5nX2ZpbmFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnQKIGludCBnbHNsYW5n
X3NjYW4oc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50
IGxlbmd0aFtdLAogICAgICAgICAgICAgICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAg
ICAgeXlyZXN0YXJ0KE5VTEwsIGNvbnRleHQtPnNjYW5uZXIpOwotICAgIHl5c2V0X2xpbmVubyhF
bmNvZGVTb3VyY2VMb2MoMCwgMSksIGNvbnRleHQtPnNjYW5uZXIpOwotICAgIGNvbnRleHQtPkFm
dGVyRU9GID0gZmFsc2U7CisgICAgeXlzZXRfY29sdW1uKDAsIGNvbnRleHQtPnNjYW5uZXIpOwor
ICAgIHl5c2V0X2xpbmVubygxLCBjb250ZXh0LT5zY2FubmVyKTsKIAogICAgIC8vIEluaXRpYWxp
emUgcHJlcHJvY2Vzc29yLgogICAgIGlmICghY29udGV4dC0+cHJlcHJvY2Vzc29yLmluaXQoY291
bnQsIHN0cmluZywgbGVuZ3RoKSkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9nbHNsYW5nLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL2dsc2xhbmcueQkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcueQkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIC8qCiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTM5
LDcgKzM5LDYgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbAogI2lu
Y2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgogCiAjZGVmaW5lIFlZRU5BQkxFX05MUyAwCi0j
ZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCiAKICNkZWZpbmUgWVlMRVhfUEFSQU0gY29udGV4
dC0+c2Nhbm5lcgogJX0KQEAgLTQ3LDEwICs0NiwxNSBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdM
U0wgRVMgUEFSU0VSIChnbHNsCiAlZXhwZWN0IDEgLyogT25lIHNoaWZ0IHJlZHVjZSBjb25mbGlj
dCBiZWNhdXNlIG9mIGlmIHwgZWxzZSAqLwogJXB1cmUtcGFyc2VyCiAlcGFyc2UtcGFyYW0ge1RQ
YXJzZUNvbnRleHQqIGNvbnRleHR9CislbG9jYXRpb25zCisKKyVjb2RlIHJlcXVpcmVzIHsKKyNk
ZWZpbmUgWVlMVFlQRSBUU291cmNlTG9jCisjZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQgMQor
fQogCiAldW5pb24gewogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAg
ICAgICAgdW5pb24gewogICAgICAgICAgICAgVFN0cmluZyAqc3RyaW5nOwogICAgICAgICAgICAg
ZmxvYXQgZjsKQEAgLTYwLDcgKzY0LDYgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBB
UlNFUiAoZ2xzbAogICAgICAgICBUU3ltYm9sKiBzeW1ib2w7CiAgICAgfSBsZXg7CiAgICAgc3Ry
dWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAgICBUT3BlcmF0b3Igb3A7CiAg
ICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwpAQCAt
NzQsMjMgKzc3LDMxIEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wK
ICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyOwogICAgICAgICAgICAgVEZ1bmN0aW9u
KiBmdW5jdGlvbjsKICAgICAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW07Ci0gICAgICAgICAgICBU
VHlwZUxpbmUgdHlwZUxpbmU7Ci0gICAgICAgICAgICBUVHlwZUxpc3QqIHR5cGVMaXN0OworICAg
ICAgICAgICAgVEZpZWxkKiBmaWVsZDsKKyAgICAgICAgICAgIFRGaWVsZExpc3QqIGZpZWxkTGlz
dDsKICAgICAgICAgfTsKICAgICB9IGludGVybTsKIH0KIAogJXsKLWV4dGVybiBpbnQgeXlsZXgo
WVlTVFlQRSogeXlsdmFsX3BhcmFtLCB2b2lkKiB5eXNjYW5uZXIpOwotZXh0ZXJuIHZvaWQgeXll
cnJvcihUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOworZXh0ZXJu
IGludCB5eWxleChZWVNUWVBFKiB5eWx2YWwsIFlZTFRZUEUqIHl5bGxvYywgdm9pZCogeXlzY2Fu
bmVyKTsKK3N0YXRpYyB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOwogCi0jZGVmaW5lIEZSQUdfVkVSVF9PTkxZ
KFMsIEwpIHsgIFwKLSAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9GUkFHTUVOVF9T
SEFERVIgJiYgIFwKLSAgICAgICAgY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hB
REVSKSB7ICBcCi0gICAgICAgIGNvbnRleHQtPmVycm9yKEwsICIgc3VwcG9ydGVkIGluIHZlcnRl
eC9mcmFnbWVudCBzaGFkZXJzIG9ubHkgIiwgUyk7ICBcCi0gICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsgIFwKLSAgICB9ICBcCi19CisjZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJo
cywgTikgICAgICAgICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGlmIChZWUlEKE4pKSB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChDdXJy
ZW50KS5maXJzdF9maWxlID0gWVlSSFNMT0MoUmhzLCAxKS5maXJzdF9maWxlOyAgXAorICAgICAg
ICAoQ3VycmVudCkuZmlyc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMSkuZmlyc3RfbGluZTsgIFwK
KyAgICAgICAgKEN1cnJlbnQpLmxhc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgTikubGFzdF9maWxl
OyAgICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIE4pLmxh
c3RfbGluZTsgICAgXAorICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9maWxl
ID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2ZpbGU7ICAgXAorICAgICAgICAoQ3VycmVudCkuZmly
c3RfbGluZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9saW5lOyAgIFwKKyAgICAgICAgKEN1cnJl
bnQpLmxhc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9maWxlOyAgICBcCisgICAgICAg
IChDdXJyZW50KS5sYXN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsgICAgXAor
ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgfSB3aGlsZSAoMCkKIAogI2RlZmluZSBWRVJURVhfT05MWShTLCBMKSB7ICBcCiAg
ICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgIT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXApAQCAt
MTE2LDcgKzEyNyw2IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGUK
ICV0b2tlbiA8bGV4PiBTQU1QTEVSMkQgU0FNUExFUkNVQkUgU0FNUExFUl9FWFRFUk5BTF9PRVMg
U0FNUExFUjJEUkVDVAogCiAldG9rZW4gPGxleD4gSURFTlRJRklFUiBUWVBFX05BTUUgRkxPQVRD
T05TVEFOVCBJTlRDT05TVEFOVCBCT09MQ09OU1RBTlQKLSV0b2tlbiA8bGV4PiBGSUVMRF9TRUxF
Q1RJT04KICV0b2tlbiA8bGV4PiBMRUZUX09QIFJJR0hUX09QCiAldG9rZW4gPGxleD4gSU5DX09Q
IERFQ19PUCBMRV9PUCBHRV9PUCBFUV9PUCBORV9PUAogJXRva2VuIDxsZXg+IEFORF9PUCBPUl9P
UCBYT1JfT1AgTVVMX0FTU0lHTiBESVZfQVNTSUdOIEFERF9BU1NJR04KQEAgLTEyNyw2ICsxMzcs
NyBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRlCiAldG9rZW4gPGxl
eD4gQ09NTUEgQ09MT04gRVFVQUwgU0VNSUNPTE9OIEJBTkcgREFTSCBUSUxERSBQTFVTIFNUQVIg
U0xBU0ggUEVSQ0VOVAogJXRva2VuIDxsZXg+IExFRlRfQU5HTEUgUklHSFRfQU5HTEUgVkVSVElD
QUxfQkFSIENBUkVUIEFNUEVSU0FORCBRVUVTVElPTgogCisldHlwZSA8bGV4PiBpZGVudGlmaWVy
CiAldHlwZSA8aW50ZXJtPiBhc3NpZ25tZW50X29wZXJhdG9yIHVuYXJ5X29wZXJhdG9yCiAldHlw
ZSA8aW50ZXJtLmludGVybVR5cGVkTm9kZT4gdmFyaWFibGVfaWRlbnRpZmllciBwcmltYXJ5X2V4
cHJlc3Npb24gcG9zdGZpeF9leHByZXNzaW9uCiAldHlwZSA8aW50ZXJtLmludGVybVR5cGVkTm9k
ZT4gZXhwcmVzc2lvbiBpbnRlZ2VyX2V4cHJlc3Npb24gYXNzaWdubWVudF9leHByZXNzaW9uCkBA
IC0xNTQsOCArMTY1LDggQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBjb250
ZQogJXR5cGUgPGludGVybS50eXBlPiB0eXBlX3F1YWxpZmllciBmdWxseV9zcGVjaWZpZWRfdHlw
ZSB0eXBlX3NwZWNpZmllcgogJXR5cGUgPGludGVybS50eXBlPiB0eXBlX3NwZWNpZmllcl9ub19w
cmVjIHR5cGVfc3BlY2lmaWVyX25vbmFycmF5CiAldHlwZSA8aW50ZXJtLnR5cGU+IHN0cnVjdF9z
cGVjaWZpZXIKLSV0eXBlIDxpbnRlcm0udHlwZUxpbmU+IHN0cnVjdF9kZWNsYXJhdG9yCi0ldHlw
ZSA8aW50ZXJtLnR5cGVMaXN0PiBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IHN0cnVjdF9kZWNsYXJh
dGlvbiBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdAorJXR5cGUgPGludGVybS5maWVsZD4gc3RydWN0
X2RlY2xhcmF0b3IKKyV0eXBlIDxpbnRlcm0uZmllbGRMaXN0PiBzdHJ1Y3RfZGVjbGFyYXRvcl9s
aXN0IHN0cnVjdF9kZWNsYXJhdGlvbiBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdAogJXR5cGUgPGlu
dGVybS5mdW5jdGlvbj4gZnVuY3Rpb25faGVhZGVyIGZ1bmN0aW9uX2RlY2xhcmF0b3IgZnVuY3Rp
b25faWRlbnRpZmllcgogJXR5cGUgPGludGVybS5mdW5jdGlvbj4gZnVuY3Rpb25faGVhZGVyX3dp
dGhfcGFyYW1ldGVycyBmdW5jdGlvbl9jYWxsX2hlYWRlcgogJXR5cGUgPGludGVybT4gZnVuY3Rp
b25fY2FsbF9oZWFkZXJfd2l0aF9wYXJhbWV0ZXJzIGZ1bmN0aW9uX2NhbGxfaGVhZGVyX25vX3Bh
cmFtZXRlcnMgZnVuY3Rpb25fY2FsbF9nZW5lcmljIGZ1bmN0aW9uX3Byb3RvdHlwZQpAQCAtMTY0
LDEzICsxNzUsMTcgQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBjb250ZQog
JXN0YXJ0IHRyYW5zbGF0aW9uX3VuaXQKICUlCiAKK2lkZW50aWZpZXIKKyAgICA6IElERU5USUZJ
RVIKKyAgICB8IFRZUEVfTkFNRQorCiB2YXJpYWJsZV9pZGVudGlmaWVyCiAgICAgOiBJREVOVElG
SUVSIHsKICAgICAgICAgLy8gVGhlIHN5bWJvbCB0YWJsZSBzZWFyY2ggd2FzIGRvbmUgaW4gdGhl
IGxleGljYWwgcGhhc2UKICAgICAgICAgY29uc3QgVFN5bWJvbCogc3ltYm9sID0gJDEuc3ltYm9s
OwogICAgICAgICBjb25zdCBUVmFyaWFibGUqIHZhcmlhYmxlOwogICAgICAgICBpZiAoc3ltYm9s
ID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1bmRlY2xhcmVk
IGlkZW50aWZpZXIiLCAkMS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoQDEsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIiLCAkMS5zdHJpbmctPmNfc3RyKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgVFR5cGUgdHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgICAgIFRWYXJpYWJsZSogZmFrZVZhcmlh
YmxlID0gbmV3IFRWYXJpYWJsZSgkMS5zdHJpbmcsIHR5cGUpOwpAQCAtMTc5LDEwICsxOTQsMTcg
QEAgdmFyaWFibGVfaWRlbnRpZmllcgogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8g
VGhpcyBpZGVudGlmaWVyIGNhbiBvbmx5IGJlIGEgdmFyaWFibGUgdHlwZSBzeW1ib2wKICAgICAg
ICAgICAgIGlmICghIHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoJDEubGluZSwgInZhcmlhYmxlIGV4cGVjdGVkIiwgJDEuc3RyaW5nLT5jX3N0
cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgInZhcmlhYmxlIGV4cGVj
dGVkIiwgJDEuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHZhcmlhYmxlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3ltYm9sKTsKKworICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmlzVmFyaWFibGVCdWlsdEluKHZhcmlhYmxlKSAmJiAKKyAgICAgICAgICAgICAgICAhdmFyaWFi
bGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkgJiYKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5l
eHRlbnNpb25FcnJvckNoZWNrKEAxLCB2YXJpYWJsZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlICQxLnN0cmluZywgaXQncyB1c2VkIGJ5IGVycm9y
IHJlY292ZXJ5LCBhbmQgdGhlIHBvb2wKQEAgLTE5MSwxMSArMjEzLDEyIEBAIHZhcmlhYmxlX2lk
ZW50aWZpZXIKICAgICAgICAgaWYgKHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkg
PT0gRXZxQ29uc3QgKSB7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0g
dmFyaWFibGUtPmdldENvbnN0UG9pbnRlcigpOwogICAgICAgICAgICAgVFR5cGUgdCh2YXJpYWJs
ZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwgJDEubGluZSk7CisgICAgICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsIEAx
KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlLT5nZXRUeXBlKCksICQxLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMSk7CiAgICAg
fQogICAgIDsKIApAQCAtMjA5LDIyICsyMzIsMjIgQEAgcHJpbWFyeV9leHByZXNzaW9uCiAgICAg
ICAgIC8vIGNoZWNrIGZvciBvdmVyZmxvdyBmb3IgY29uc3RhbnRzCiAgICAgICAgIC8vCiAgICAg
ICAgIGlmIChhYnMoJDEuaSkgPj0gKDEgPDwgMTYpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigkMS5saW5lLCAiIGludGVnZXIgY29uc3RhbnQgb3ZlcmZsb3ciLCAiIik7CisgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcihAMSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93IiwgIiIp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIENv
bnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAg
dW5pb25BcnJheS0+c2V0SUNvbnN0KCQxLmkpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksIEAxKTsKICAgICB9CiAgICAgfCBGTE9BVENPTlNUQU5UIHsKICAg
ICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwog
ICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoJDEuZik7Ci0gICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAxKTsKICAgICB9CiAgICAgfCBCT09MQ09O
U1RBTlQgewogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdCgkMS5iKTsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDEubGluZSk7CisgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAxKTsKICAgICB9CiAgICAg
fCBMRUZUX1BBUkVOIGV4cHJlc3Npb24gUklHSFRfUEFSRU4gewogICAgICAgICAkJCA9ICQyOwpA
QCAtMjM4LDEwMSArMjYxLDk3IEBAIHBvc3RmaXhfZXhwcmVzc2lvbgogICAgIHwgcG9zdGZpeF9l
eHByZXNzaW9uIExFRlRfQlJBQ0tFVCBpbnRlZ2VyX2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7
CiAgICAgICAgIGlmICghJDEtPmlzQXJyYXkoKSAmJiAhJDEtPmlzTWF0cml4KCkgJiYgISQxLT5p
c1ZlY3RvcigpKSB7CiAgICAgICAgICAgICBpZiAoJDEtPmdldEFzU3ltYm9sTm9kZSgpKQotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90
IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICQxLT5nZXRBc1N5bWJvbE5vZGUo
KS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDIsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9y
ICIsICQxLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBsZWZ0
IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgImV4cHJl
c3Npb24iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiBsZWZ0IG9mICdb
JyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgImV4cHJlc3Npb24i
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICBp
ZiAoJDEtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCAmJiAkMy0+Z2V0UXVh
bGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAgIGlmICgkMS0+aXNBcnJheSgpKSB7
IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIGFycmF5cwotICAgICAgICAgICAgICAgICQkID0gY29u
dGV4dC0+YWRkQ29uc3RBcnJheU5vZGUoJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgJDEsICQyLmxpbmUpOwotICAgICAgICAgICAg
fSBlbHNlIGlmICgkMS0+aXNWZWN0b3IoKSkgeyAgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVj
dG9ycwotICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAg
ICAgIGZpZWxkcy5udW0gPSAxOwotICAgICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzWzBdID0g
JDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29u
c3QoKTsgLy8gbmVlZCB0byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRz
IGludGVnZXIgYXJyYXkKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0VmVj
dG9yTm9kZShmaWVsZHMsICQxLCAkMi5saW5lKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEt
PmlzTWF0cml4KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKLSAgICAgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0TWF0cml4Tm9kZSgkMy0+Z2V0QXNDb25zdGFu
dFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpLCAkMSwgJDIubGlu
ZSk7CisgICAgICAgIGlmICgkMy0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAg
ICAgICAgIGludCBpbmRleCA9ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDAp
OworICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nc3RyZWFtIGluZm9TdHJlYW07CisgICAgICAgICAgICAgICAgaW5mb1N0cmVhbSA8PCBpbmRl
eDsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBpbmZvID0gaW5mb1N0cmVhbS5zdHIoKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMywgIm5lZ2F0aXZlIGluZGV4IiwgaW5m
by5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAg
ICAgICAgICAgaW5kZXggPSAwOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgKCQzLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewotICAgICAgICAg
ICAgICAgIGlmICgoJDEtPmlzVmVjdG9yKCkgfHwgJDEtPmlzTWF0cml4KCkpICYmICQxLT5nZXRU
eXBlKCkuZ2V0Tm9taW5hbFNpemUoKSA8PSAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVu
aW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpICYmICEkMS0+aXNBcnJheSgpICkgewotICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAg
ICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiZmllbGQgc2VsZWN0aW9uIG91dCBv
ZiByYW5nZSAnIiA8PCAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2lu
dGVyKCktPmdldElDb25zdCgpIDw8ICInIjsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgPT0gMCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldE1heEFy
cmF5U2l6ZSgpIDw9ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50
ZXIoKS0+Z2V0SUNvbnN0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgkMS0+Z2V0QXNTeW1ib2xOb2RlKCksICQxLT5nZXRU
eXBlUG9pbnRlcigpLCAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2lu
dGVyKCktPmdldElDb25zdCgpLCB0cnVlLCAkMi5saW5lKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlTZXRNYXhTaXplKCQxLT5nZXRBc1N5bWJvbE5vZGUoKSwgJDEtPmdldFR5cGVQ
b2ludGVyKCksIDAsIGZhbHNlLCAkMi5saW5lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAkMy0+Z2V0QXNDb25zdGFu
dFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpID49ICQxLT5nZXRU
eXBlKCkuZ2V0QXJyYXlTaXplKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBvdXQgb2YgcmFuZ2UgJyIgPDwgJDMt
PmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3Qo
KSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJ
bmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQx
LCAkMywgJDIubGluZSk7CisgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUoKS5nZXRRdWFsaWZp
ZXIoKSA9PSBFdnFDb25zdCkgeworICAgICAgICAgICAgICAgIGlmICgkMS0+aXNBcnJheSgpKSB7
IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIGFycmF5cworICAgICAgICAgICAgICAgICAgICAkJCA9
IGNvbnRleHQtPmFkZENvbnN0QXJyYXlOb2RlKGluZGV4LCAkMSwgQDIpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkpIHsgIC8vIGNvbnN0YW50IGZvbGRpbmcgZm9y
IHZlY3RvcnMKKyAgICAgICAgICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7CisgICAg
ICAgICAgICAgICAgICAgIGZpZWxkcy5udW0gPSAxOworICAgICAgICAgICAgICAgICAgICBmaWVs
ZHMub2Zmc2V0c1swXSA9IGluZGV4OyAvLyBuZWVkIHRvIGRvIGl0IHRoaXMgd2F5IGJlY2F1c2Ug
di54eSBzZW5kcyBmaWVsZHMgaW50ZWdlciBhcnJheQorICAgICAgICAgICAgICAgICAgICAkJCA9
IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVsZHMsICQxLCBAMik7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICgkMS0+aXNNYXRyaXgoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZv
ciBtYXRyaWNlcworICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0TWF0
cml4Tm9kZShpbmRleCwgJDEsIEAyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIGlmICgkMS0+aXNBcnJheSgpICYmICQxLT5nZXRUeXBl
KCkuZ2V0QXJyYXlTaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigkMi5saW5lLCAiIiwgIlsiLCAiYXJyYXkgbXVzdCBiZSByZWRlY2xhcmVkIHdpdGggYSBz
aXplIGJlZm9yZSBiZWluZyBpbmRleGVkIHdpdGggYSB2YXJpYWJsZSIpOworICAgICAgICAgICAg
ICAgIGlmICgkMS0+aXNBcnJheSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+
PSAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CisgICAgICAgICAgICAgICAgICAg
ICAgICBleHRyYUluZm9TdHJlYW0gPDwgImFycmF5IGluZGV4IG91dCBvZiByYW5nZSAnIiA8PCBp
bmRleCA8PCAiJyI7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUlu
Zm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMiwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAg
aW5kZXggPSAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKCQxLT5pc1ZlY3RvcigpIHx8ICQx
LT5pc01hdHJpeCgpKSAmJiAkMS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gaW5kZXgp
IHsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFt
OworICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxkIHNlbGVjdGlv
biBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICAgICAgICAgICAgICBz
dGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgICAg
ICAgICAgaW5kZXggPSAgJDEtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIC0gMTsKICAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRJbmRleChFT3BJbmRleEluZGlyZWN0LCAkMSwgJDMsICQyLmxpbmUpOworICAgICAgICAg
ICAgICAgICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+
c2V0SUNvbnN0KGluZGV4KTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgJDEsICQzLCBAMik7CiAgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRJbmRleChFT3BJbmRleEluZGlyZWN0LCAkMSwgJDMsIEAyKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoJCQgPT0gMCkgewogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNv
bnN0KDAuMGYpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxQ29uc3Qp
LCAkMi5saW5lKTsKKyAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUNvbnN0
KSwgQDIpOwogICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc0FycmF5KCkpIHsKICAgICAgICAgICAg
IGlmICgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQotICAgICAgICAgICAgICAgICQkLT5zZXRU
eXBlKFRUeXBlKCQxLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCksICQxLT5nZXRUeXBlKCkuZ2V0VHlw
ZU5hbWUoKSkpOworICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRUeXBl
KCkuZ2V0U3RydWN0KCkpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAkJC0+
c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwgRXZx
VGVtcG9yYXJ5LCAkMS0+Z2V0Tm9taW5hbFNpemUoKSwgJDEtPmlzTWF0cml4KCkpKTsKIAogICAg
ICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCiAg
ICAgICAgICAgICAgICAgJCQtPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFDb25z
dCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkgJiYgJDEtPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBl
KCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCwgJDEtPmdl
dE5vbWluYWxTaXplKCkpKTsKLSAgICAgICAgZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpCi0gICAg
ICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVj
aXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAkMS0+Z2V0Tm9taW5hbFNpemUoKSkpOwotICAgICAgICBl
bHNlIGlmICgkMS0+aXNWZWN0b3IoKSAmJiAkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09
IEV2cUNvbnN0KQotICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlw
ZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0KSk7Ci0gICAgICAgIGVsc2UgaWYgKCQx
LT5pc1ZlY3RvcigpKQotICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2lj
VHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSkpOwotICAgICAgICBlbHNl
CisgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsKKyAgICAgICAgICAgIFRRdWFs
aWZpZXIgcXVhbGlmaWVyID0gJDEtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25z
dCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5OworICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5
cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIHF1YWxpZmllciwgJDEt
PmdldE5vbWluYWxTaXplKCkpKTsKKyAgICAgICAgfSBlbHNlIGlmICgkMS0+aXNWZWN0b3IoKSkg
eworICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSAkMS0+Z2V0VHlwZSgpLmdldFF1
YWxpZmllcigpID09IEV2cUNvbnN0ID8gRXZxQ29uc3QgOiBFdnFUZW1wb3Jhcnk7CisgICAgICAg
ICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNp
b24oKSwgcXVhbGlmaWVyKSk7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAkJC0+c2V0
VHlwZSgkMS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgfQogICAgIH0KICAgICB8IGZ1bmN0aW9uX2Nh
bGwgewogICAgICAgICAkJCA9ICQxOwogICAgIH0KLSAgICB8IHBvc3RmaXhfZXhwcmVzc2lvbiBE
T1QgRklFTERfU0VMRUNUSU9OIHsKKyAgICB8IHBvc3RmaXhfZXhwcmVzc2lvbiBET1QgaWRlbnRp
ZmllciB7CiAgICAgICAgIGlmICgkMS0+aXNBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigkMy5saW5lLCAiY2Fubm90IGFwcGx5IGRvdCBvcGVyYXRvciB0byBhbiBhcnJheSIs
ICIuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMywgImNhbm5vdCBhcHBseSBkb3Qg
b3BlcmF0b3IgdG8gYW4gYXJyYXkiLCAiLiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCQxLT5pc1ZlY3RvcigpKSB7CiAgICAgICAg
ICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKLSAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBh
cnNlVmVjdG9yRmllbGRzKCokMy5zdHJpbmcsICQxLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMs
ICQzLmxpbmUpKSB7CisgICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJzZVZlY3RvckZpZWxk
cygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCBAMykpIHsKICAgICAg
ICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKICAgICAgICAgICAgICAgICBmaWVsZHMub2Zmc2V0
c1swXSA9IDA7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBF
dnFDb25zdCkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3IgZmllbGRzCi0gICAgICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwgJDMu
bGluZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUo
ZmllbGRzLCAkMSwgQDMpOwogICAgICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgJCQg
PSAkMTsKQEAgLTM0MSwxMyArMzYwLDEzIEBAIHBvc3RmaXhfZXhwcmVzc2lvbgogICAgICAgICAg
ICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQ
cmVjaXNpb24oKSwgRXZxQ29uc3QsIChpbnQpICgqJDMuc3RyaW5nKS5zaXplKCkpKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgVFN0cmluZyB2ZWN0b3JTdHJpbmcgPSAq
JDMuc3RyaW5nOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVsZHMsICQzLmxpbmUpOwotICAgICAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcFZlY3RvclN3aXp6bGUs
ICQxLCBpbmRleCwgJDIubGluZSk7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRl
eCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxlKGZpZWxkcywgQDMpOworICAgICAg
ICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcFZlY3RvclN3
aXp6bGUsICQxLCBpbmRleCwgQDIpOwogICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBl
KCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnksIChp
bnQpIHZlY3RvclN0cmluZy5zaXplKCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNl
IGlmICgkMS0+aXNNYXRyaXgoKSkgewogICAgICAgICAgICAgVE1hdHJpeEZpZWxkcyBmaWVsZHM7
Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJzZU1hdHJpeEZpZWxkcygqJDMuc3RyaW5n
LCAkMS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAkMy5saW5lKSkgeworICAgICAgICAgICAg
aWYgKCEgY29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKiQzLnN0cmluZywgJDEtPmdldE5vbWlu
YWxTaXplKCksIGZpZWxkcywgQDMpKSB7CiAgICAgICAgICAgICAgICAgZmllbGRzLndob2xlUm93
ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLndob2xlQ29sID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgZmllbGRzLnJvdyA9IDA7CkBAIC0zNTYsODQgKzM3NSw3OCBAQCBwb3N0Zml4
X2V4cHJlc3Npb24KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGZpZWxkcy53aG9s
ZVJvdyB8fCBmaWVsZHMud2hvbGVDb2wpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigkMi5saW5lLCAiIG5vbi1zY2FsYXIgZmllbGRzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiLCAiLiIp
OworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiIG5vbi1zY2FsYXIgZmllbGRz
IG5vdCBpbXBsZW1lbnRlZCB5ZXQiLCAiLiIpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0
KDApOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAkMy5saW5lKTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgJDEsIGluZGV4LCAkMi5s
aW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgQDMpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwgaW5kZXgsIEAyKTsKICAg
ICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5n
ZXRQcmVjaXNpb24oKSxFdnFUZW1wb3JhcnksICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJy
YXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5z
ZXRJQ29uc3QoZmllbGRzLmNvbCAqICQxLT5nZXROb21pbmFsU2l6ZSgpICsgZmllbGRzLnJvdyk7
Ci0gICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZp
bmVkLCBFdnFDb25zdCksICQzLmxpbmUpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwgaW5kZXgsICQyLmxpbmUp
OworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCBAMyk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCBpbmRleCwgQDIpOwogICAgICAg
ICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFBy
ZWNpc2lvbigpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmdldEJh
c2ljVHlwZSgpID09IEVidFN0cnVjdCkgewogICAgICAgICAgICAgYm9vbCBmaWVsZEZvdW5kID0g
ZmFsc2U7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZUxpc3QqIGZpZWxkcyA9ICQxLT5nZXRUeXBl
KCkuZ2V0U3RydWN0KCk7Ci0gICAgICAgICAgICBpZiAoZmllbGRzID09IDApIHsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAic3RydWN0dXJlIGhhcyBubyBmaWVsZHMi
LCAiSW50ZXJuYWwgRXJyb3IiKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGk7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8
IGZpZWxkcy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCgqZmllbGRz
KVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSAqJDMuc3RyaW5nKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBjb25zdCBURmllbGRMaXN0
JiBmaWVsZHMgPSAkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGZpZWxkcy5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChmaWVsZHNbaV0tPm5hbWUoKSA9PSAq
JDMuc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGZpZWxkRm91bmQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgaWYgKGZpZWxkRm91bmQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBl
KCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICQkID0gY29udGV4dC0+YWRkQ29uc3RTdHJ1Y3QoKiQzLnN0cmluZywgJDEsICQyLmxpbmUpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJCQgPSAkMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKCoo
KmZpZWxkcylbaV0udHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhbmdl
IHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0eXBlLCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBm
aWVsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIHRoZSBzdHJ1Y3R1cmUgZGVm
aW5pdGlvbiBpcyBzaGFyZWQgYmV0d2VlbiB2YXJpb3VzIHN0cnVjdHVyZXMuCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJCQtPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFD
b25zdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRJQ29uc3QoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQq
IGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgKigqZmllbGRzKVtpXS50eXBlLCAkMy5saW5lKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0U3RydWN0
LCAkMSwgaW5kZXgsICQyLmxpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgJCQtPnNldFR5
cGUoKigqZmllbGRzKVtpXS50eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChm
aWVsZEZvdW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlm
aWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5h
ZGRDb25zdFN0cnVjdCgqJDMuc3RyaW5nLCAkMSwgQDIpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoJCQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OworICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICQk
LT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBjaGFuZ2UgdGhlIHF1YWxpZmllciBvZiB0aGUgcmV0dXJuIHR5cGUsIG5vdCBvZiB0aGUgc3Ry
dWN0dXJlIGZpZWxkCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyB0aGUgc3RydWN0dXJl
IGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1Y3R1cmVzLgorICAgICAg
ICAgICAgICAgICAgICAgICAgJCQtPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFD
b25zdCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIG5vIHN1Y2ggZmll
bGQgaW4gc3RydWN0dXJlIiwgJDMuc3RyaW5nLT5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAkJCA9ICQxOworICAg
ICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bMV07CisgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdChpKTsK
KyAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksICpmaWVsZHNbaV0tPnR5cGUoKSwg
QDMpOworICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJ
bmRleChFT3BJbmRleERpcmVjdFN0cnVjdCwgJDEsIGluZGV4LCBAMik7CisgICAgICAgICAgICAg
ICAgICAgICQkLT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihA
MiwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICQkID0g
JDE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigkMi5saW5lLCAiIGZpZWxkIHNlbGVjdGlvbiByZXF1aXJlcyBzdHJ1Y3R1cmUsIHZl
Y3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRlIiwgJDMuc3RyaW5nLT5jX3N0cigpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiIGZpZWxkIHNlbGVjdGlvbiByZXF1aXJl
cyBzdHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRlIiwgJDMuc3Ry
aW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlICQzLnN0cmlu
ZywgaXQncyBmcm9tIHRoZSBwb29sCiAgICAgfQogICAgIHwgcG9zdGZpeF9leHByZXNzaW9uIElO
Q19PUCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCQyLmxpbmUsICIr
KyIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soQDIsICIrKyIs
ICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RJbmNyZW1lbnQsICQxLCAkMi5s
aW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVtZW50LCAkMSwgQDIsIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnVuYXJ5T3BFcnJvcigkMi5saW5lLCAiKysiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDIsICIrKyIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
ICQkID0gJDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBwb3N0Zml4X2V4cHJlc3Npb24gREVD
X09QIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soJDIubGluZSwgIi0t
IiwgJDEpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjayhAMiwgIi0tIiwg
JDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdERlY3JlbWVudCwgJDEsICQyLmxp
bmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNyZW1lbnQsICQxLCBAMiwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+
dW5hcnlPcEVycm9yKCQyLmxpbmUsICItLSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihAMiwgIi0tIiwgJDEtPmdldENvbXBsZXRl
U3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAg
JCQgPSAkMTsKICAgICAgICAgfQpAQCAtNDYxLDE4ICs0NzQsMTggQEAgZnVuY3Rpb25fY2FsbAog
ICAgICAgICAgICAgLy8gVGhlaXIgcGFyYW1ldGVycyB3aWxsIGJlIHZlcmlmaWVkIGFsZ29yaXRo
bWljYWxseS4KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQs
IEVicFVuZGVmaW5lZCk7ICAvLyB1c2UgdGhpcyB0byBnZXQgdGhlIHR5cGUgYmFjawotICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVjaygkMS5saW5lLCAkMS5pbnRl
cm1Ob2RlLCAqZm5DYWxsLCBvcCwgJnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+
Y29uc3RydWN0b3JFcnJvckNoZWNrKEAxLCAkMS5pbnRlcm1Ob2RlLCAqZm5DYWxsLCBvcCwgJnR5
cGUpKSB7CiAgICAgICAgICAgICAgICAgJCQgPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEl0J3MgYSBjb25zdHJ1Y3Rvciwg
b2YgdHlwZSAndHlwZScuCiAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAkJCA9
IGNvbnRleHQtPmFkZENvbnN0cnVjdG9yKCQxLmludGVybU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxs
LCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0cnVjdG9y
KCQxLmludGVybU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxsLCBAMSk7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFn
Z3JlZ2F0ZU9wZXJhdG9yKDAsIG9wLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwgQDEpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgJCQtPnNldFR5cGUodHlwZSk7CiAgICAgICAgIH0gZWxz
ZSB7CkBAIC00ODEsMTMgKzQ5NCwxMyBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAgICAgICAvLwog
ICAgICAgICAgICAgY29uc3QgVEZ1bmN0aW9uKiBmbkNhbmRpZGF0ZTsKICAgICAgICAgICAgIGJv
b2wgYnVpbHRJbjsKLSAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0
aW9uKCQxLmxpbmUsIGZuQ2FsbCwgJmJ1aWx0SW4pOworICAgICAgICAgICAgZm5DYW5kaWRhdGUg
PSBjb250ZXh0LT5maW5kRnVuY3Rpb24oQDEsIGZuQ2FsbCwgJmJ1aWx0SW4pOwogICAgICAgICAg
ICAgaWYgKGZuQ2FuZGlkYXRlKSB7CiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAg
ICAvLyBBIGRlY2xhcmVkIGZ1bmN0aW9uLgogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAg
ICAgICAgaWYgKGJ1aWx0SW4gJiYgIWZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKS5lbXB0eSgp
ICYmCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmV4dGVuc2lvbkVycm9yQ2hlY2soJDEu
bGluZSwgZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgeworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKEAxLCBmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5z
aW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3AgPSBmbkNhbmRpZGF0ZS0+Z2V0QnVpbHRJ
bk9wKCk7CkBAIC00OTksNyArNTEyLDcgQEAgZnVuY3Rpb25fY2FsbAogICAgICAgICAgICAgICAg
ICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRyZWF0IGl0IGxpa2UgYSBi
dWlsdC1pbiB1bmFyeSBvcGVyYXRvci4KICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1h
dGgob3AsICQxLmludGVybU5vZGUsIDAsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChv
cCwgJDEuaW50ZXJtTm9kZSwgQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgkJCA9PSAwKSAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImJ1aWx0IGluIHVuYXJ5IG9wZXJhdG9yIGZ1bmN0
aW9uLiAgVHlwZTogIiA8PCBzdGF0aWNfY2FzdDxUSW50ZXJtVHlwZWQqPigkMS5pbnRlcm1Ob2Rl
KS0+Z2V0Q29tcGxldGVTdHJpbmcoKTsKQEAgLTUwOCwxMiArNTIxLDEyIEBAIGZ1bmN0aW9uX2Nh
bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZWUVSUk9SOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3Io
JDEuaW50ZXJtQWdncmVnYXRlLCBvcCwgJDEubGluZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigkMS5pbnRl
cm1BZ2dyZWdhdGUsIG9wLCBAMSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgcmVhbCBmdW5j
dGlvbiBjYWxsCiAKLSAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBFT3BGdW5jdGlvbkNh
bGwsICQxLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigkMS5pbnRlcm1BZ2dyZWdhdGUsIEVPcEZ1bmN0aW9u
Q2FsbCwgQDEpOwogICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShmbkNhbmRpZGF0ZS0+
Z2V0UmV0dXJuVHlwZSgpKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGhvdyB3
ZSBrbm93IHdoZXRoZXIgdGhlIGdpdmVuIGZ1bmN0aW9uIGlzIGEgYnVpbHRJbiBmdW5jdGlvbiBv
ciBhIHVzZXIgZGVmaW5lZCBmdW5jdGlvbgpAQCAtNTQwLDcgKzU1Myw3IEBAIGZ1bmN0aW9uX2Nh
bGwKICAgICAgICAgICAgICAgICAvLyBQdXQgb24gYSBkdW1teSBub2RlIGZvciBlcnJvciByZWNv
dmVyeQogICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoMC4w
Zik7Ci0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3Rh
bnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFDb25z
dCksICQxLmxpbmUpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01NTMsNyArNTY2LDcgQEAgZnVuY3Rpb25fY2Fs
bF9vcl9tZXRob2QKICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCBwb3N0Zml4X2V4cHJl
c3Npb24gRE9UIGZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyB7Ci0gICAgICAgIGNvbnRleHQtPmVycm9y
KCQzLmxpbmUsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkIiwgIiIpOworICAgICAgICBjb250
ZXh0LT5lcnJvcihAMywgIm1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQiLCAiIik7CiAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgJCQgPSAkMzsKICAgICB9CkBAIC01NjIsMTEg
KzU3NSw5IEBAIGZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9kCiBmdW5jdGlvbl9jYWxsX2dlbmVyaWMK
ICAgICA6IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVycyBSSUdIVF9QQVJFTiB7
CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICQkLmxpbmUgPSAkMi5saW5lOwogICAgIH0KICAg
ICB8IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX25vX3BhcmFtZXRlcnMgUklHSFRfUEFSRU4gewogICAg
ICAgICAkJCA9ICQxOwotICAgICAgICAkJC5saW5lID0gJDIubGluZTsKICAgICB9CiAgICAgOwog
CkBAIC01OTIsNyArNjAzLDcgQEAgZnVuY3Rpb25fY2FsbF9oZWFkZXJfd2l0aF9wYXJhbWV0ZXJz
CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgkMy0+Z2V0VHlwZSgp
KSB9OwogICAgICAgICAkMS5mdW5jdGlvbi0+YWRkUGFyYW1ldGVyKHBhcmFtKTsKICAgICAgICAg
JCQuZnVuY3Rpb24gPSAkMS5mdW5jdGlvbjsKLSAgICAgICAgJCQuaW50ZXJtTm9kZSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsICQzLCAkMi5saW5l
KTsKKyAgICAgICAgJCQuaW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdn
cmVnYXRlKCQxLmludGVybU5vZGUsICQzLCBAMik7CiAgICAgfQogICAgIDsKIApAQCAtNjE3LDM5
ICs2MjgsMzkgQEAgZnVuY3Rpb25faWRlbnRpZmllcgogICAgICAgICAgICAgY2FzZSBFYnRGbG9h
dDoKICAgICAgICAgICAgICAgICBpZiAoJDEubWF0cml4KSB7CiAgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCgkMS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQyOyAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BD
b25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBF
T3BDb25zdHJ1Y3RNYXQyOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogb3Ag
PSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDog
b3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2goJDEuc2l6
ZSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0g
RU9wQ29uc3RydWN0VmVjMjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjMzsg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjNDsgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0VmVjMjsgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0VmVjMzsgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0VmVjNDsgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAgICAgICAgICAgICAgc3dp
dGNoKCQxLnNpemUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEludDsgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjMiIsICQxLmxp
bmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWMyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IDM6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjMyIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0
cnVjdElWZWMzOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJpdmVjNCIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWM0OyBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0SW50OyAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdElWZWMzOyBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0SVZlYzQ7IGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
RWJ0Qm9vbDoKICAgICAgICAgICAgICAgICBzd2l0Y2goJDEuc2l6ZSkgewotICAgICAgICAgICAg
ICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0g
RU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjogICAgICAg
RlJBR19WRVJUX09OTFkoImJ2ZWMyIiwgJDEubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzI7
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgRlJBR19WRVJUX09OTFkoImJ2
ZWMzIiwgJDEubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7IGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgNDogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWM0IiwgJDEubGluZSk7IG9w
ID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTogb3Ag
PSBFT3BDb25zdHJ1Y3RCb29sOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyOiBvcCA9
IEVPcENvbnN0cnVjdEJWZWMyOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0g
RU9wQ29uc3RydWN0QlZlYzM7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNDogb3AgPSBF
T3BDb25zdHJ1Y3RCVmVjNDsgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAob3AgPT0gRU9wTnVsbCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCQxLmxpbmUsICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3Ry
aW5nKCQxLnR5cGUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImNhbm5v
dCBjb25zdHJ1Y3QgdGhpcyB0eXBlIiwgZ2V0QmFzaWNTdHJpbmcoJDEudHlwZSkpOwogICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAkMS50eXBlID0g
RWJ0RmxvYXQ7CiAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RGbG9hdDsKQEAgLTY2
MSwxNCArNjcyLDcgQEAgZnVuY3Rpb25faWRlbnRpZmllcgogICAgICAgICAkJCA9IGZ1bmN0aW9u
OwogICAgIH0KICAgICB8IElERU5USUZJRVIgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2
ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5zdHJpbmcpKQotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7Ci0g
ICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCQxLnN0cmluZywgdHlw
ZSk7Ci0gICAgICAgICQkID0gZnVuY3Rpb247Ci0gICAgfQotICAgIHwgRklFTERfU0VMRUNUSU9O
IHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMS5saW5lLCAqJDEu
c3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMSwgKiQx
LnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRUeXBl
IHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlv
biA9IG5ldyBURnVuY3Rpb24oJDEuc3RyaW5nLCB0eXBlKTsKQEAgLTY4MSwyOCArNjg1LDI4IEBA
IHVuYXJ5X2V4cHJlc3Npb24KICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCBJTkNfT1Ag
dW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNr
KCQxLmxpbmUsICIrKyIsICQyKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hl
Y2soQDEsICIrKyIsICQyKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFByZUluY3JlbWVu
dCwgJDIsICQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFByZUluY3JlbWVudCwgJDIsIEAxLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDEubGluZSwgIisrIiwgJDItPmdldENvbXBsZXRlU3Ry
aW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKEAxLCAiKysiLCAkMi0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAkJCA9ICQyOwogICAgICAgICB9CiAgICAgfQogICAgIHwgREVDX09QIHVuYXJ5
X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygkMS5s
aW5lLCAiLS0iLCAkMikpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKEAx
LCAiLS0iLCAkMikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVEZWNyZW1lbnQsICQy
LCAkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVEZWNyZW1lbnQsICQyLCBAMSwgY29udGV4
dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29u
dGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsICItLSIsICQyLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihAMSwgIi0tIiwgJDItPmdldENv
bXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgJCQgPSAkMjsKICAgICAgICAgfQogICAgIH0KICAgICB8IHVuYXJ5X29wZXJhdG9yIHVu
YXJ5X2V4cHJlc3Npb24gewogICAgICAgICBpZiAoJDEub3AgIT0gRU9wTnVsbCkgewotICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCQxLm9wLCAkMiwg
JDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCQxLm9wLCAkMiwgQDEsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogZXJyb3JPcCA9ICIiOwogICAgICAgICAgICAgICAgIHN3aXRjaCgkMS5vcCkgewpA
QCAtNzEwLDcgKzcxNCw3IEBAIHVuYXJ5X2V4cHJlc3Npb24KICAgICAgICAgICAgICAgICBjYXNl
IEVPcExvZ2ljYWxOb3Q6IGVycm9yT3AgPSAiISI7IGJyZWFrOwogICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjb250ZXh0
LT51bmFyeU9wRXJyb3IoJDEubGluZSwgZXJyb3JPcCwgJDItPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihAMSwgZXJyb3JPcCwgJDIt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICAgICAkJCA9ICQyOwogICAgICAgICAgICAgfQpAQCAtNzIxLDI4ICs3
MjUsMjYgQEAgdW5hcnlfZXhwcmVzc2lvbgogLy8gR3JhbW1hciBOb3RlOiAgTm8gdHJhZGl0aW9u
YWwgc3R5bGUgdHlwZSBjYXN0cy4KIAogdW5hcnlfb3BlcmF0b3IKLSAgICA6IFBMVVMgIHsgJCQu
bGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTnVsbDsgfQotICAgIHwgREFTSCAgeyAkJC5saW5l
ID0gJDEubGluZTsgJCQub3AgPSBFT3BOZWdhdGl2ZTsgfQotICAgIHwgQkFORyAgeyAkJC5saW5l
ID0gJDEubGluZTsgJCQub3AgPSBFT3BMb2dpY2FsTm90OyB9CisgICAgOiBQTFVTICB7ICQkLm9w
ID0gRU9wTnVsbDsgfQorICAgIHwgREFTSCAgeyAkJC5vcCA9IEVPcE5lZ2F0aXZlOyB9CisgICAg
fCBCQU5HICB7ICQkLm9wID0gRU9wTG9naWNhbE5vdDsgfQogICAgIDsKIC8vIEdyYW1tYXIgTm90
ZTogIE5vICcqJyBvciAnJicgdW5hcnkgb3BzLiAgUG9pbnRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQu
CiAKIG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24KICAgICA6IHVuYXJ5X2V4cHJlc3Npb24geyAk
JCA9ICQxOyB9CiAgICAgfCBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIFNUQVIgdW5hcnlfZXhw
cmVzc2lvbiB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIqIiwgJDIubGluZSk7Ci0gICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAkMSwgJDMs
ICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BNdWwsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIioiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cihAMiwgIioiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5n
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAk
MTsKICAgICAgICAgfQogICAgIH0KICAgICB8IG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24gU0xB
U0ggdW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIvIiwgJDIubGlu
ZSk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9w
RGl2LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BEaXYsICQxLCAkMywgQDIs
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIi8iLCAkMS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcihAMiwgIi8iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENv
bXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpAQCAtNzUyLDE3ICs3NTQsMTcgQEAgbXVsdGlwbGlj
YXRpdmVfZXhwcmVzc2lvbgogYWRkaXRpdmVfZXhwcmVzc2lvbgogICAgIDogbXVsdGlwbGljYXRp
dmVfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGFkZGl0aXZlX2V4cHJlc3Npb24gUExV
UyBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5h
cnlNYXRoKEVPcEFkZCwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAg
ICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5s
aW5lLCAiKyIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiKyIsICQxLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAg
fQogICAgIHwgYWRkaXRpdmVfZXhwcmVzc2lvbiBEQVNIIG11bHRpcGxpY2F0aXZlX2V4cHJlc3Np
b24gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVP
cFN1YiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wU3ViLCAkMSwgJDMsIEAy
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICItIiwgJDEtPmdldENvbXBsZXRl
U3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmJpbmFyeU9wRXJyb3IoQDIsICItIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTc3Niw0MyArNzc4LDQzIEBAIHNoaWZ0X2V4
cHJlc3Npb24KIHJlbGF0aW9uYWxfZXhwcmVzc2lvbgogICAgIDogc2hpZnRfZXhwcmVzc2lvbiB7
ICQkID0gJDE7IH0KICAgICB8IHJlbGF0aW9uYWxfZXhwcmVzc2lvbiBMRUZUX0FOR0xFIHNoaWZ0
X2V4cHJlc3Npb24gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5h
cnlNYXRoKEVPcExlc3NUaGFuLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BM
ZXNzVGhhbiwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAo
JCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAi
PCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiPCIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFs
c2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
JDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29u
c3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Npb24g
UklHSFRfQU5HTEUgc2hpZnRfZXhwcmVzc2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuLCAkMSwgJDMsICQyLmxpbmUs
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgJDEsICQzLCBAMiwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiPiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9y
KEAyLCAiPiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1
bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAg
fCByZWxhdGlvbmFsX2V4cHJlc3Npb24gTEVfT1Agc2hpZnRfZXhwcmVzc2lvbiAgewotICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1
YWwsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1YWwsICQx
LCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIjw9IiwgJDEtPmdl
dENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICI8PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7
CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7
CiAgICAgICAgIH0KICAgICB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Npb24gR0VfT1Agc2hp
ZnRfZXhwcmVzc2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
aW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuRXF1YWwsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5h
cnlNYXRoKEVPcEdyZWF0ZXJUaGFuRXF1YWwsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoJDIubGluZSwgIj49IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIs
ICI+PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVu
aW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlv
bkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgOwpA
QCAtODIwLDIzICs4MjIsMjMgQEAgcmVsYXRpb25hbF9leHByZXNzaW9uCiBlcXVhbGl0eV9leHBy
ZXNzaW9uCiAgICAgOiByZWxhdGlvbmFsX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBl
cXVhbGl0eV9leHByZXNzaW9uIEVRX09QIHJlbGF0aW9uYWxfZXhwcmVzc2lvbiAgewotICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVxdWFsLCAkMSwg
JDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BFcXVhbCwgJDEsICQzLCBAMiwgY29udGV4
dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiPT0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmco
KSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5
T3BFcnJvcihAMiwgIj09IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0
ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
IENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAg
ICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMi5saW5lKTsKKyAgICAgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAyKTsKICAgICAgICAgfQogICAg
IH0KICAgICB8IGVxdWFsaXR5X2V4cHJlc3Npb24gTkVfT1AgcmVsYXRpb25hbF9leHByZXNzaW9u
IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BO
b3RFcXVhbCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTm90RXF1YWwsICQx
LCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIiE9IiwgJDEtPmdl
dENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIhPSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7
CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7
CiAgICAgICAgIH0KICAgICB9CiAgICAgOwpAQCAtODU2LDEzICs4NTgsMTMgQEAgaW5jbHVzaXZl
X29yX2V4cHJlc3Npb24KIGxvZ2ljYWxfYW5kX2V4cHJlc3Npb24KICAgICA6IGluY2x1c2l2ZV9v
cl9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbG9naWNhbF9hbmRfZXhwcmVzc2lvbiBB
TkRfT1AgaW5jbHVzaXZlX29yX2V4cHJlc3Npb24gewotICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICQxLCAkMywgJDIubGluZSwg
Y29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoJDIubGluZSwgIiYmIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3Io
QDIsICImJiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1
bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAg
OwpAQCAtODcwLDEzICs4NzIsMTMgQEAgbG9naWNhbF9hbmRfZXhwcmVzc2lvbgogbG9naWNhbF94
b3JfZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF9hbmRfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0K
ICAgICB8IGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24gWE9SX09QIGxvZ2ljYWxfYW5kX2V4cHJlc3Np
b24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChF
T3BMb2dpY2FsWG9yLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2Fs
WG9yLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICJeXiIs
ICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiXl4iLCAkMS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNl
KTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQy
LmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3Rh
bnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0
KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg4NCwxMyArODg2LDEzIEBAIGxv
Z2ljYWxfeG9yX2V4cHJlc3Npb24KIGxvZ2ljYWxfb3JfZXhwcmVzc2lvbgogICAgIDogbG9naWNh
bF94b3JfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxvZ2ljYWxfb3JfZXhwcmVzc2lv
biBPUl9PUCBsb2dpY2FsX3hvcl9leHByZXNzaW9uICB7Ci0gICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAkMSwgJDMsICQyLmxpbmUs
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsT3IsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoJDIubGluZSwgInx8IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3Io
QDIsICJ8fCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1
bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAg
OwpAQCAtODk4LDE1ICs5MDAsMTUgQEAgbG9naWNhbF9vcl9leHByZXNzaW9uCiBjb25kaXRpb25h
bF9leHByZXNzaW9uCiAgICAgOiBsb2dpY2FsX29yX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAg
ICAgfCBsb2dpY2FsX29yX2V4cHJlc3Npb24gUVVFU1RJT04gZXhwcmVzc2lvbiBDT0xPTiBhc3Np
Z25tZW50X2V4cHJlc3Npb24gewotICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygk
Mi5saW5lLCAkMSkpCisgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKEAyLCAkMSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCQxLCAkMywgJDUsICQyLmxpbmUpOworICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oJDEsICQzLCAkNSwgQDIp
OwogICAgICAgICBpZiAoJDMtPmdldFR5cGUoKSAhPSAkNS0+Z2V0VHlwZSgpKQogICAgICAgICAg
ICAgJCQgPSAwOwogCiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI6IiwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCksICQ1
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJy
b3IoQDIsICI6IiwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCksICQ1LT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0g
JDU7CiAgICAgICAgIH0KQEAgLTkxNiwxMSArOTE4LDExIEBAIGNvbmRpdGlvbmFsX2V4cHJlc3Np
b24KIGFzc2lnbm1lbnRfZXhwcmVzc2lvbgogICAgIDogY29uZGl0aW9uYWxfZXhwcmVzc2lvbiB7
ICQkID0gJDE7IH0KICAgICB8IHVuYXJ5X2V4cHJlc3Npb24gYXNzaWdubWVudF9vcGVyYXRvciBh
c3NpZ25tZW50X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JD
aGVjaygkMi5saW5lLCAiYXNzaWduIiwgJDEpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVl
RXJyb3JDaGVjayhAMiwgImFzc2lnbiIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWduKCQyLm9w
LCAkMSwgJDMsICQyLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRBc3NpZ24oJDIub3AsICQxLCAkMywgQDIpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAg
ICAgICAgICAgY29udGV4dC0+YXNzaWduRXJyb3IoJDIubGluZSwgImFzc2lnbiIsICQxLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5hc3NpZ25FcnJvcihAMiwgImFzc2lnbiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CkBAIC05MjgsMTEgKzkzMCwxMSBA
QCBhc3NpZ25tZW50X2V4cHJlc3Npb24KICAgICA7CiAKIGFzc2lnbm1lbnRfb3BlcmF0b3IKLSAg
ICA6IEVRVUFMICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQu
bGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wQXNzaWduOyB9Ci0gICAgfCBNVUxfQVNTSUdOICAg
eyBGUkFHX1ZFUlRfT05MWSgiKj0iLCAkMS5saW5lKTsgICAgICQkLmxpbmUgPSAkMS5saW5lOyAk
JC5vcCA9IEVPcE11bEFzc2lnbjsgfQotICAgIHwgRElWX0FTU0lHTiAgIHsgRlJBR19WRVJUX09O
TFkoIi89IiwgJDEubGluZSk7ICAgICAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BEaXZB
c3NpZ247IH0KLSAgICB8IEFERF9BU1NJR04gICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wQWRkQXNzaWduOyB9Ci0gICAg
fCBTVUJfQVNTSUdOICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLmxp
bmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcFN1YkFzc2lnbjsgfQorICAgIDogRVFVQUwgICAgICAg
IHsgJCQub3AgPSBFT3BBc3NpZ247IH0KKyAgICB8IE1VTF9BU1NJR04gICB7ICQkLm9wID0gRU9w
TXVsQXNzaWduOyB9CisgICAgfCBESVZfQVNTSUdOICAgeyAkJC5vcCA9IEVPcERpdkFzc2lnbjsg
fQorICAgIHwgQUREX0FTU0lHTiAgIHsgJCQub3AgPSBFT3BBZGRBc3NpZ247IH0KKyAgICB8IFNV
Ql9BU1NJR04gICB7ICQkLm9wID0gRU9wU3ViQXNzaWduOyB9CiAgICAgOwogCiBleHByZXNzaW9u
CkBAIC05NDAsOSArOTQyLDkgQEAgZXhwcmVzc2lvbgogICAgICAgICAkJCA9ICQxOwogICAgIH0K
ICAgICB8IGV4cHJlc3Npb24gQ09NTUEgYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29tbWEoJDEsICQzLCAkMi5saW5lKTsKKyAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29tbWEoJDEsICQzLCBAMik7CiAg
ICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9y
KCQyLmxpbmUsICIsIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIsIiwgJDEt
PmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDM7CiAgICAgICAgIH0K
QEAgLTk3MCwxMyArOTcyLDEzIEBAIGRlY2xhcmF0aW9uCiAgICAgICAgICAgICBjb25zdCBUUGFy
YW1ldGVyICZwYXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOwogICAgICAgICAgICAgaWYgKHBh
cmFtLm5hbWUgIT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUVmFyaWFibGUg
KnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlwZSk7CisgICAg
ICAgICAgICAgICAgVFZhcmlhYmxlIHZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJhbS50eXBlKTsK
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLT5nZXROYW1lKCks
IHZhcmlhYmxlLT5nZXRUeXBlKCksICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAg
ICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5
cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUuZ2V0VW5pcXVlSWQo
KSwgdmFyaWFibGUuZ2V0TmFtZSgpLCB2YXJpYWJsZS5nZXRUeXBlKCksIEAxKSwgQDEpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3Rv
dHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUs
ICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCBAMSksIEAxKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTk5MiwxMSArOTk0LDExIEBAIGRlY2xhcmF0aW9u
CiAgICAgfQogICAgIHwgUFJFQ0lTSU9OIHByZWNpc2lvbl9xdWFsaWZpZXIgdHlwZV9zcGVjaWZp
ZXJfbm9fcHJlYyBTRU1JQ09MT04gewogICAgICAgICBpZiAoKCQyID09IEVicEhpZ2gpICYmIChj
b250ZXh0LT5zaGFkZXJUeXBlID09IFNIX0ZSQUdNRU5UX1NIQURFUikgJiYgIWNvbnRleHQtPmZy
YWdtZW50UHJlY2lzaW9uSGlnaCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGlu
ZSwgInByZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGZyYWdtZW50IHNoYWRlciIsICJoaWdo
cCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJwcmVjaXNpb24gaXMgbm90IHN1
cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWNvbnRleHQtPnN5bWJvbFRh
YmxlLnNldERlZmF1bHRQcmVjaXNpb24oICQzLCAkMiApKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigkMS5saW5lLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0IHByZWNp
c2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmluZygkMy50eXBlKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcihAMSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBmb3IgZGVmYXVsdCBwcmVj
aXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlwZSkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgICQkID0gMDsKQEAgLTEwMTYs
MTIgKzEwMTgsMTIgQEAgZnVuY3Rpb25fcHJvdG90eXBlCiAgICAgICAgIFRGdW5jdGlvbiogcHJl
dkRlYyA9IHN0YXRpY19jYXN0PFRGdW5jdGlvbio+KGNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmQo
JDEtPmdldE1hbmdsZWROYW1lKCkpKTsKICAgICAgICAgaWYgKHByZXZEZWMpIHsKICAgICAgICAg
ICAgIGlmIChwcmV2RGVjLT5nZXRSZXR1cm5UeXBlKCkgIT0gJDEtPmdldFJldHVyblR5cGUoKSkg
ewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJvdmVybG9hZGVkIGZ1
bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUiLCAkMS0+Z2V0UmV0dXJuVHlw
ZSgpLmdldEJhc2ljU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAy
LCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBlIiwg
JDEtPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHByZXZEZWMtPmdldFBhcmFtQ291bnQoKTsgKytpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKHByZXZEZWMtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllcigpICE9ICQx
LT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXIoKSkgewotICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZl
IHRoZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgJDEtPmdldFBhcmFtKGkpLnR5cGUtPmdl
dFF1YWxpZmllclN0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDIsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1
YWxpZmllcnMiLCAkMS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOwog
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQpAQCAtMTAzMyw3ICsxMDM1LDYgQEAgZnVuY3Rpb25fcHJvdG90eXBl
CiAgICAgICAgIC8vIGJlaW5nIHJlZGVjbGFyZWQuICBTbywgcGFzcyBiYWNrIHVwIHRoaXMgZGVj
bGFyYXRpb24sIG5vdCB0aGUgb25lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgIC8vCiAg
ICAgICAgICQkLmZ1bmN0aW9uID0gJDE7Ci0gICAgICAgICQkLmxpbmUgPSAkMi5saW5lOwogCiAg
ICAgICAgIC8vIFdlJ3JlIGF0IHRoZSBpbm5lciBzY29wZSBsZXZlbCBvZiB0aGUgZnVuY3Rpb24n
cyBhcmd1bWVudHMgYW5kIGJvZHkgc3RhdGVtZW50LgogICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0
aW9uIHByb3RvdHlwZSB0byB0aGUgc3Vycm91bmRpbmcgc2NvcGUgaW5zdGVhZC4KQEAgLTEwNjks
NyArMTA3MCw3IEBAIGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMKICAgICAgICAgICAg
IC8vCiAgICAgICAgICAgICAvLyBUaGlzIHBhcmFtZXRlciA+IGZpcnN0IGlzIHZvaWQKICAgICAg
ICAgICAgIC8vCi0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiY2Fubm90IGJl
IGFuIGFyZ3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7CisgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcihAMiwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2Vw
dCBmb3IgJyh2b2lkKSciLCAidm9pZCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgZGVsZXRlICQzLnBhcmFtLnR5cGU7CiAgICAgICAgIH0gZWxzZSB7CkBA
IC0xMDgzLDExICsxMDg0LDExIEBAIGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMKIGZ1
bmN0aW9uX2hlYWRlcgogICAgIDogZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBMRUZU
X1BBUkVOIHsKICAgICAgICAgaWYgKCQxLnF1YWxpZmllciAhPSBFdnFHbG9iYWwgJiYgJDEucXVh
bGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIu
bGluZSwgIm5vIHF1YWxpZmllcnMgYWxsb3dlZCBmb3IgZnVuY3Rpb24gcmV0dXJuIiwgZ2V0UXVh
bGlmaWVyU3RyaW5nKCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDIsICJubyBxdWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxp
ZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgfQogICAgICAgICAvLyBtYWtlIHN1cmUgYSBzYW1wbGVyIGlzIG5vdCBpbnZv
bHZlZCBhcyB3ZWxsLi4uCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJv
ckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmll
ckVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAog
ICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9uIGFzIGEgcHJvdG90eXBlIGFmdGVyIHBhcnNpbmcg
aXQgKHdlIGRvIG5vdCBzdXBwb3J0IHJlY3Vyc2lvbikKQEAgLTExMDIsMzMgKzExMDMsMzEgQEAg
ZnVuY3Rpb25faGVhZGVyCiAKIHBhcmFtZXRlcl9kZWNsYXJhdG9yCiAgICAgLy8gVHlwZSArIG5h
bWUKLSAgICA6IHR5cGVfc3BlY2lmaWVyIElERU5USUZJRVIgeworICAgIDogdHlwZV9zcGVjaWZp
ZXIgaWRlbnRpZmllciB7CiAgICAgICAgIGlmICgkMS50eXBlID09IEVidFZvaWQpIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lk
JyIsICQyLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwg
ImlsbGVnYWwgdXNlIG9mIHR5cGUgJ3ZvaWQnIiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICBpZiAoY29udGV4
dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcpKQorICAgICAgICBpZiAo
Y29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHskMi5zdHJp
bmcsIG5ldyBUVHlwZSgkMSl9OwotICAgICAgICAkJC5saW5lID0gJDIubGluZTsKICAgICAgICAg
JCQucGFyYW0gPSBwYXJhbTsKICAgICB9Ci0gICAgfCB0eXBlX3NwZWNpZmllciBJREVOVElGSUVS
IExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgeworICAgIHwg
dHlwZV9zcGVjaWZpZXIgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lv
biBSSUdIVF9CUkFDS0VUIHsKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gbWFrZSBhbiBh
cnJheSBvdXQgb2YgdGhpcyB0eXBlCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJv
ckNoZWNrKCQzLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9y
Q2hlY2soQDMsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAg
ICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcpKQor
ICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBpbnQgc2l6ZTsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDMubGluZSwgJDQsIHNpemUp
KQorICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhAMywgJDQsIHNpemUp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAkMS5zZXRBcnJheSh0
cnVlLCBzaXplKTsKIAogICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZSgkMSk7CiAgICAg
ICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7ICQyLnN0cmluZywgdHlwZSB9OwotICAgICAgICAkJC5s
aW5lID0gJDIubGluZTsKICAgICAgICAgJCQucGFyYW0gPSBwYXJhbTsKICAgICB9CiAgICAgOwpA
QCAtMTE0NCwxNCArMTE0MywxNCBAQCBwYXJhbWV0ZXJfZGVjbGFyYXRpb24KICAgICAvLwogICAg
IDogdHlwZV9xdWFsaWZpZXIgcGFyYW1ldGVyX3F1YWxpZmllciBwYXJhbWV0ZXJfZGVjbGFyYXRv
ciB7CiAgICAgICAgICQkID0gJDM7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hl
Y2soJDMubGluZSwgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0udHlwZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soQDMsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFt
LnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgIH0KICAgICB8IHBh
cmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX2RlY2xhcmF0b3IgewogICAgICAgICAkJCA9ICQy
OwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soJDIubGlu
ZSwgJDEsICokMi5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNh
bXBsZXJFcnJvckNoZWNrKEAyLCAkMSwgKiQyLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCQy
LmxpbmUsIEV2cVRlbXBvcmFyeSwgJDEsICQkLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29u
dGV4dC0+cGFyYW1FcnJvckNoZWNrKEAyLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9CiAgICAgLy8KQEAgLTEx
NTksMTQgKzExNTgsMTQgQEAgcGFyYW1ldGVyX2RlY2xhcmF0aW9uCiAgICAgLy8KICAgICB8IHR5
cGVfcXVhbGlmaWVyIHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX3R5cGVfc3BlY2lmaWVy
IHsKICAgICAgICAgJCQgPSAkMzsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVj
aygkMy5saW5lLCAkMS5xdWFsaWZpZXIsICQyLCAkJC5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYg
KGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMywgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0u
dHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQogICAgIHwgcGFy
YW1ldGVyX3F1YWxpZmllciBwYXJhbWV0ZXJfdHlwZV9zcGVjaWZpZXIgewogICAgICAgICAkJCA9
ICQyOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soJDIu
bGluZSwgJDEsICokMi5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRl
clNhbXBsZXJFcnJvckNoZWNrKEAyLCAkMSwgKiQyLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNr
KCQyLmxpbmUsIEV2cVRlbXBvcmFyeSwgJDEsICQkLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAo
Y29udGV4dC0+cGFyYW1FcnJvckNoZWNrKEAyLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50
eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9CiAgICAgOwpAQCAt
MTE5Nyw4MyArMTE5Niw4MyBAQCBpbml0X2RlY2xhcmF0b3JfbGlzdAogICAgIDogc2luZ2xlX2Rl
Y2xhcmF0aW9uIHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBpbml0X2RlY2xhcmF0
b3JfbGlzdCBDT01NQSBJREVOVElGSUVSIHsKKyAgICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENP
TU1BIGlkZW50aWZpZXIgewogICAgICAgICBpZiAoJDEudHlwZS50eXBlID09IEVidEludmFyaWFu
dCAmJiAhJDMuc3ltYm9sKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigk
My5saW5lLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICQz
LnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMywgInVuZGVj
bGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMy5zdHJpbmctPmNfc3Ry
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAKLSAgICAg
ICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCgwLCAqJDMuc3RyaW5nLCBUVHlwZSgkMS50eXBlKSwgJDMubGluZSk7Ci0gICAgICAgICQkLmlu
dGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmlu
dGVybU5vZGUsIHN5bWJvbCwgJDMubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJv
bCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQzLnN0cmluZywgVFR5cGUo
JDEudHlwZSksIEAzKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgc3ltYm9sLCBAMyk7CiAgICAg
ICAgIAotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMy5s
aW5lLCAkJC50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soQDMsICQkLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0g
ICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCQzLmxpbmUsICokMy5z
dHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25z
dEVycm9yQ2hlY2soQDMsICokMy5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsK
LSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJp
bmcsICQkLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJv
ckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChzeW1ib2wgJiYgdmFyaWFibGUpCiAgICAg
ICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKICAgICB9Ci0g
ICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBS
SUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soJDMubGluZSwgJDEudHlwZSkpCisgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01N
QSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKKyAgICAgICAgaWYgKGNv
bnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29u
c3RFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQorICAgICAg
ICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywgJDEu
dHlwZSwgdHJ1ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAg
JCQgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkNC5s
aW5lLCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDQubGlu
ZSwgJDEudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEA0
LCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDQsICQxLnR5
cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICQxLnR5cGUuc2V0QXJyYXkodHJ1ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUq
IHZhcmlhYmxlOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygkNC5s
aW5lLCAqJDMuc3RyaW5nLCAkMS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlFcnJvckNoZWNrKEA0LCAqJDMuc3RyaW5nLCAkMS50eXBlLCB2YXJpYWJsZSkp
CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgfQot
ICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQg
Y29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQt
PnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDMubGluZSwgJDEudHlwZSkpCisgICAgfCBpbml0
X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBjb25zdGFudF9l
eHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgeworICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVh
bGlmaWVyRXJyb3JDaGVjayhAMywgJDEudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soJDMu
bGluZSwgKiQzLnN0cmluZywgJDEudHlwZSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5u
b25Jbml0Q29uc3RFcnJvckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAkMS50eXBlLCB0cnVlKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAkJCA9ICQxOwogCi0gICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQ0LmxpbmUsICQxLnR5cGUpIHx8
IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygkNC5saW5lLCAkMS50eXBlKSkKKyAg
ICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDQsICQxLnR5cGUpIHx8IGNv
bnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhANCwgJDEudHlwZSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNp
emU7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygkNC5saW5l
LCAkNSwgc2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVj
ayhANCwgJDUsIHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICQxLnR5cGUuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAgICAgICAgICBUVmFy
aWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9y
Q2hlY2soJDQubGluZSwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQorICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhANCwgKiQzLnN0cmluZywgJDEudHlwZSwg
dmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgIFRUeXBlIHR5cGUgPSBUVHlwZSgkMS50eXBlKTsKICAgICAgICAgICAgIHR5cGUuc2V0QXJy
YXlTaXplKHNpemUpOwotICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpIDogMCwg
KiQzLnN0cmluZywgdHlwZSwgJDMubGluZSksICQzLmxpbmUpOworICAgICAgICAgICAgJCQuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50
ZXJtTm9kZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlh
YmxlLT5nZXRVbmlxdWVJZCgpIDogMCwgKiQzLnN0cmluZywgdHlwZSwgQDMpLCBAMyk7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBJREVOVElGSUVS
IEVRVUFMIGluaXRpYWxpemVyIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmll
ckVycm9yQ2hlY2soJDMubGluZSwgJDEudHlwZSkpCisgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlz
dCBDT01NQSBpZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVyIHsKKyAgICAgICAgaWYgKGNvbnRl
eHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQkID0gJDE7CiAKICAgICAgICAgVEludGVy
bU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxp
emVyKCQzLmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsICQ1LCBpbnRlcm1Ob2RlKSkgeworICAg
ICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcihAMywgKiQzLnN0cmluZywgJDEu
dHlwZSwgJDUsIGludGVybU5vZGUpKSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8g
YnVpbGQgdGhlIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICAgICAgICAgLy8KICAg
ICAgICAgICAgIGlmIChpbnRlcm1Ob2RlKQotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCBpbnRlcm1O
b2RlLCAkNC5saW5lKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgaW50ZXJtTm9kZSwgQDQpOwog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9ICQx
LmludGVybUFnZ3JlZ2F0ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTEyODYsNzkgKzEyODUsNzkg
QEAgaW5pdF9kZWNsYXJhdG9yX2xpc3QKIHNpbmdsZV9kZWNsYXJhdGlvbgogICAgIDogZnVsbHlf
c3BlY2lmaWVkX3R5cGUgewogICAgICAgICAkJC50eXBlID0gJDE7Ci0gICAgICAgICQkLmludGVy
bUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsIFRUeXBlKCQxKSwgJDEubGluZSksICQxLmxp
bmUpOworICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
bWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlw
ZSgkMSksIEAxKSwgQDEpOwogICAgIH0KLSAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIElERU5U
SUZJRVIgewotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIFRUeXBlKCQxKSwgJDIubGluZSk7Ci0gICAg
ICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVn
YXRlKHN5bWJvbCwgJDIubGluZSk7CisgICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlm
aWVyIHsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkMSksIEAyKTsKKyAgICAgICAgJCQu
aW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3lt
Ym9sLCBAMik7CiAgICAgICAgIAotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVy
RXJyb3JDaGVjaygkMi5saW5lLCAkJC50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVj
dFF1YWxpZmllckVycm9yQ2hlY2soQDIsICQkLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNr
KCQyLmxpbmUsICokMi5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soQDIsICokMi5zdHJpbmcsICQkLnR5cGUsIGZhbHNl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgJCQudHlwZSA9ICQxOwogCiAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwot
ICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmlu
ZywgJCQudHlwZSwgdmFyaWFibGUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9y
Q2hlY2soQDIsICokMi5zdHJpbmcsICQkLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAg
ICAgICAgIHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgIH0KLSAg
ICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIElERU5USUZJRVIgTEVGVF9CUkFDS0VUIFJJR0hUX0JS
QUNLRVQgewotICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAidW5zaXplZCBhcnJheSBk
ZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIsICQyLnN0cmluZy0+Y19zdHIoKSk7CisgICAgfCBm
dWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VU
IHsKKyAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJ1bnNpemVkIGFycmF5IGRlY2xhcmF0aW9u
cyBub3Qgc3VwcG9ydGVkIiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEpLCAkMi5saW5lKTsK
LSAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VB
Z2dyZWdhdGUoc3ltYm9sLCAkMi5saW5lKTsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9s
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgk
MSksIEAyKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgICQkLnR5cGUgPSAkMTsKICAg
ICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBj
b25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgeworICAgIHwgZnVsbHlfc3BlY2lmaWVk
X3R5cGUgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9C
UkFDS0VUIHsKICAgICAgICAgVFR5cGUgdHlwZSA9IFRUeXBlKCQxKTsKICAgICAgICAgaW50IHNp
emU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQyLmxpbmUsICQ0
LCBzaXplKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDIsICQ0
LCBzaXplKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgdHlwZS5z
ZXRBcnJheVNpemUoc2l6ZSk7Ci0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgdHlwZSwgJDIubGluZSk7
Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtl
QWdncmVnYXRlKHN5bWJvbCwgJDIubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJv
bCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgdHlwZSwg
QDIpOworICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
bWFrZUFnZ3JlZ2F0ZShzeW1ib2wsIEAyKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250ZXh0
LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJy
b3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nLCAkMSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nLCAkMSwgdHJ1ZSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgJCQudHlwZSA9ICQxOwog
Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQzLmxpbmUsICQxKSB8
fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDMubGluZSwgJDEpKQorICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjayhAMywgJDEpIHx8IGNvbnRleHQtPmFy
cmF5UXVhbGlmaWVyRXJyb3JDaGVjayhAMywgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDMubGluZSwgJDQsIHNpemUpKQor
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQ0LCBzaXpl
KSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgICAgICQx
LnNldEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9
IDA7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCQzLmxpbmUsICok
Mi5zdHJpbmcsICQxLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlF
cnJvckNoZWNrKEAzLCAqJDIuc3RyaW5nLCAkMSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wp
CiAgICAgICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVS
IEVRVUFMIGluaXRpYWxpemVyIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmll
ckVycm9yQ2hlY2soJDIubGluZSwgJDEpKQorICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRl
bnRpZmllciBFUVVBTCBpbml0aWFsaXplciB7CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAKICAgICAgICAgJCQudHlwZSA9ICQxOwogCiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRl
cm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMi5saW5l
LCAqJDIuc3RyaW5nLCAkMSwgJDQsIGludGVybU5vZGUpKSB7CisgICAgICAgIGlmICghY29udGV4
dC0+ZXhlY3V0ZUluaXRpYWxpemVyKEAyLCAqJDIuc3RyaW5nLCAkMSwgJDQsIGludGVybU5vZGUp
KSB7CiAgICAgICAgIC8vCiAgICAgICAgIC8vIEJ1aWxkIGludGVybWVkaWF0ZSByZXByZXNlbnRh
dGlvbgogICAgICAgICAvLwogICAgICAgICAgICAgaWYoaW50ZXJtTm9kZSkKLSAgICAgICAgICAg
ICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3Jl
Z2F0ZShpbnRlcm1Ob2RlLCAkMy5saW5lKTsKKyAgICAgICAgICAgICAgICAkJC5pbnRlcm1BZ2dy
ZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCBA
Myk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRl
ID0gMDsKICAgICAgICAgfSBlbHNlIHsKQEAgLTEzNjcsMTE4ICsxMzY2LDUwIEBAIHNpbmdsZV9k
ZWNsYXJhdGlvbgogICAgICAgICB9CiAgICAgfQogICAgIHwgSU5WQVJJQU5UIElERU5USUZJRVIg
ewotICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgJDEubGluZSk7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAg
ICAgIFZFUlRFWF9PTkxZKCJpbnZhcmlhbnQgZGVjbGFyYXRpb24iLCBAMSk7CisgICAgICAgIGlm
IChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICAkJC50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52
YXJpYW50VmFyeWluZ091dCwgJDIubGluZSk7CisgICAgICAgICQkLnR5cGUuc2V0QmFzaWMoRWJ0
SW52YXJpYW50LCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCBAMik7CiAgICAgICAgIGlmICghJDIu
c3ltYm9sKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAi
dW5kZWNsYXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICQyLnN0cmluZy0+
Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInVuZGVjbGFyZWQgaWRl
bnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAk
JC5pbnRlcm1BZ2dyZWdhdGUgPSAwOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAg
ewotICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkJC50eXBlKSwgJDIubGluZSk7Ci0g
ICAgICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFr
ZUFnZ3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgICAgICAgICAgVEludGVybVN5bWJvbCAq
c3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBU
VHlwZSgkJC50eXBlKSwgQDIpOworICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgIH0K
ICAgICB9Ci0KLS8vCi0vLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBsYW5ndWFn
ZXMuCi0vLwotLy8gICAgfCBidWZmZXJfc3BlY2lmaWVyIHsKLS8vICAgICAgICAkJC5pbnRlcm1B
Z2dyZWdhdGUgPSAwOwotLy8gICAgfQogICAgIDsKIAotLy8gR3JhbW1hciBOb3RlOiAgTm8gJ2Vu
dW0nLCBvciAndHlwZWRlZicuCi0KLS8vCi0vLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3Vu
cGFjayBsYW5ndWFnZXMuCi0vLwotLy8ldHlwZSA8aW50ZXJtPiBidWZmZXJfZGVjbGFyYXRpb24K
LS8vJXR5cGUgPGludGVybS50eXBlPiBidWZmZXJfc3BlY2lmaWVyIGlucHV0X29yX291dHB1dCBi
dWZmZXJfZGVjbGFyYXRpb25fbGlzdAotLy9idWZmZXJfc3BlY2lmaWVyCi0vLyAgICA6IGlucHV0
X29yX291dHB1dCBMRUZUX0JSQUNFIGJ1ZmZlcl9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNF
IHsKLS8vICAgIH0KLS8vICAgIDsKLS8vCi0vL2lucHV0X29yX291dHB1dAotLy8gICAgOiBJTlBV
VCB7Ci0vLyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soJDEubGluZSwgY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW5wdXQiKSkKLS8vICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwotLy8gICAgICAgIFVOUEFDS19PTkxZKCJpbnB1dCIsICQx
LmxpbmUpOwotLy8gICAgICAgICQkLnF1YWxpZmllciA9IEV2cUlucHV0OwotLy8gICAgfQotLy8g
ICAgfCBPVVRQVVQgewotLy8gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQx
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgIm91dHB1dCIpKQot
Ly8gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgUEFDS19PTkxZKCJv
dXRwdXQiLCAkMS5saW5lKTsKLS8vICAgICAgICAkJC5xdWFsaWZpZXIgPSBFdnFPdXRwdXQ7Ci0v
LyAgICB9Ci0vLyAgICA7Ci0KLS8vCi0vLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFj
ayBsYW5ndWFnZXMuCi0vLwotLy9idWZmZXJfZGVjbGFyYXRpb25fbGlzdAotLy8gICAgOiBidWZm
ZXJfZGVjbGFyYXRpb24gewotLy8gICAgfQotLy8gICAgfCBidWZmZXJfZGVjbGFyYXRpb25fbGlz
dCBidWZmZXJfZGVjbGFyYXRpb24gewotLy8gICAgfQotLy8gICAgOwotCi0vLwotLy8gSW5wdXQv
b3V0cHV0IHNlbWFudGljczoKLS8vICAgZmxvYXQgbXVzdCBiZSAxNiBvciAzMiBiaXRzCi0vLyAg
IGZsb2F0IGFsaWdubWVudCByZXN0cmljdGlvbnM/Ci0vLyAgIGNoZWNrIGZvciBvbmx5IG9uZSBp
bnB1dCBhbmQgb25seSBvbmUgb3V0cHV0Ci0vLyAgIHN1bSBvZiBiaXRmaWVsZHMgaGFzIHRvIGJl
IG11bHRpcGxlIG9mIDMyCi0vLwotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUgcGFjay91
bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vYnVmZmVyX2RlY2xhcmF0aW9uCi0vLyAgICA6IHR5cGVf
c3BlY2lmaWVyIElERU5USUZJRVIgQ09MT04gY29uc3RhbnRfZXhwcmVzc2lvbiBTRU1JQ09MT04g
ewotLy8gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDIubGluZSwgKiQy
LnN0cmluZywgY29udGV4dCkpCi0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLS8v
ICAgICAgICAkJC52YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJDIuc3RyaW5nLCAkMSk7Ci0vLyAg
ICAgICAgaWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCokJC52YXJpYWJsZSkpIHsK
LS8vICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInJlZGVmaW5pdGlvbiIsICQk
LnZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7Ci0vLyAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLS8vICAgICAgICAgICAgLy8gZG9uJ3QgaGF2ZSB0byBkZWxldGUgJCQudmFyaWFi
bGUsIHRoZSBwb29sIHBvcCB3aWxsIHRha2UgY2FyZSBvZiBpdAotLy8gICAgICAgIH0KLS8vICAg
IH0KLS8vICAgIDsKLQogZnVsbHlfc3BlY2lmaWVkX3R5cGUKICAgICA6IHR5cGVfc3BlY2lmaWVy
IHsKICAgICAgICAgJCQgPSAkMTsKIAogICAgICAgICBpZiAoJDEuYXJyYXkpIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNz
IGFycmF5Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIm5vdCBzdXBwb3J0ZWQi
LCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICQxLnNldEFycmF5KGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KICAgICB8
IHR5cGVfcXVhbGlmaWVyIHR5cGVfc3BlY2lmaWVyICB7CiAgICAgICAgIGlmICgkMi5hcnJheSkg
ewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm5vdCBzdXBwb3J0ZWQiLCAi
Zmlyc3QtY2xhc3MgYXJyYXkiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAibm90
IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgJDIuc2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKCQxLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgJiYKICAgICAgICAgICAg
ICgkMi50eXBlID09IEVidEJvb2wgfHwgJDIudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVh
bGlmaWVyU3RyaW5nKCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDIsICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlm
aWVyKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCgkMS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ0luIHx8ICQxLnF1YWxpZmllciA9PSBF
dnFWYXJ5aW5nT3V0KSAmJgogICAgICAgICAgICAgKCQyLnR5cGUgPT0gRWJ0Qm9vbCB8fCAkMi50
eXBlID09IEVidEludCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJj
YW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgImNhbm5vdCBiZSBib29sIG9yIGludCIs
IGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQyOwpAQCAtMTQ4OCwzNCArMTQx
OSwzNCBAQCBmdWxseV9zcGVjaWZpZWRfdHlwZQogCiB0eXBlX3F1YWxpZmllcgogICAgIDogQ09O
U1RfUVVBTCB7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCAkMS5saW5l
KTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQ29uc3QsIEAxKTsKICAgICB9CiAg
ICAgfCBBVFRSSUJVVEUgewotICAgICAgICBWRVJURVhfT05MWSgiYXR0cmlidXRlIiwgJDEubGlu
ZSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQorICAgICAgICBW
RVJURVhfT05MWSgiYXR0cmlidXRlIiwgQDEpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFs
RXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0
cmlidXRlIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkLnNl
dEJhc2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJh
c2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgQDEpOwogICAgIH0KICAgICB8IFZBUllJTkcgewot
ICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ2YXJ5aW5nIikpCisgICAgICAgIGlmIChjb250
ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCksICJ2YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0LCAkMS5saW5lKTsKKyAgICAg
ICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsIEAxKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCAkMS5s
aW5lKTsKKyAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgQDEp
OwogICAgIH0KICAgICB8IElOVkFSSUFOVCBWQVJZSU5HIHsKLSAgICAgICAgaWYgKGNvbnRleHQt
Pmdsb2JhbEVycm9yQ2hlY2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2Jh
bEVycm9yQ2hlY2soQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImlu
dmFyaWFudCB2YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAkMS5saW5l
KTsKKyAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdP
dXQsIEAxKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwg
RXZxSW52YXJpYW50VmFyeWluZ0luLCAkMS5saW5lKTsKKyAgICAgICAgICAgICQkLnNldEJhc2lj
KEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdJbiwgQDEpOwogICAgIH0KICAgICB8IFVOSUZP
Uk0gewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ1bmlmb3JtIikpCisgICAgICAgIGlm
IChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCksICJ1bmlmb3JtIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVVuaWZvcm0sICQxLmxpbmUpOworICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlmb3JtLCBAMSk7CiAgICAgfQogICAgIDsK
IApAQCAtMTUyNSw3ICsxNDU2LDcgQEAgdHlwZV9zcGVjaWZpZXIKIAogICAgICAgICBpZiAoJCQu
cHJlY2lzaW9uID09IEVicFVuZGVmaW5lZCkgewogICAgICAgICAgICAgJCQucHJlY2lzaW9uID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigkMS50eXBlKTsKLSAgICAg
ICAgICAgIGlmIChjb250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKCQxLmxpbmUsICQkLnByZWNp
c2lvbiwgJDEudHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5wcmVjaXNpb25FcnJv
ckNoZWNrKEAxLCAkJC5wcmVjaXNpb24sICQxLnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNTU1LDExICsx
NDg2LDExIEBAIHR5cGVfc3BlY2lmaWVyX25vX3ByZWMKICAgICB8IHR5cGVfc3BlY2lmaWVyX25v
bmFycmF5IExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewog
ICAgICAgICAkJCA9ICQxOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNo
ZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hl
Y2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJh
eVNpemVFcnJvckNoZWNrKCQyLmxpbmUsICQzLCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250
ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKEAyLCAkMywgc2l6ZSkpCiAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7
CiAgICAgICAgIH0KQEAgLTE1NjksMTE4ICsxNTAwLDEwNSBAQCB0eXBlX3NwZWNpZmllcl9ub19w
cmVjCiB0eXBlX3NwZWNpZmllcl9ub25hcnJheQogICAgIDogVk9JRF9UWVBFIHsKICAgICAgICAg
VFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8g
RXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBx
dWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgQDEpOwog
ICAgIH0KICAgICB8IEZMT0FUX1RZUEUgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBJTlRfVFlQ
RSB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBx
dWFsLCBAMSk7CiAgICAgfQogICAgIHwgQk9PTF9UWVBFIHsKICAgICAgICAgVFF1YWxpZmllciBx
dWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDog
RXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAkMS5saW5l
KTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgIH0KLS8vICAg
IHwgVU5TSUdORUQgSU5UX1RZUEUgewotLy8gICAgICAgIFBBQ0tfVU5QQUNLX09OTFkoInVuc2ln
bmVkIiwgJDEubGluZSk7Ci0vLyAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotLy8g
ICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7Ci0vLyAgICB9CiAgICAg
fCBWRUMyIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVi
dEZsb2F0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAg
ICAgfCBWRUMzIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAk
JC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2lj
KEVidEZsb2F0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICB9
CiAgICAgfCBWRUM0IHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJh
c2ljKEVidEZsb2F0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAg
ICB9CiAgICAgfCBCVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNl
dEJhc2ljKEVidEJvb2wsIHF1YWwsIEAxKTsKICAgICAgICAgJCQuc2V0QWdncmVnYXRlKDIpOwog
ICAgIH0KICAgICB8IEJWRUMzIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5Owot
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMyk7
CiAgICAgfQogICAgIHwgQlZFQzQgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAk
JC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0
KTsKICAgICB9CiAgICAgfCBJVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAg
JCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgy
KTsKICAgICB9CiAgICAgfCBJVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAg
JCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgz
KTsKICAgICB9CiAgICAgfCBJVkVDNCB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAg
JCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0
KTsKICAgICB9CiAgICAgfCBNQVRSSVgyIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDIi
LCAkMS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAk
JC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2lj
KEVidEZsb2F0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyLCB0cnVlKTsK
ICAgICB9CiAgICAgfCBNQVRSSVgzIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDMiLCAk
MS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVi
dEZsb2F0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzLCB0cnVlKTsKICAg
ICB9CiAgICAgfCBNQVRSSVg0IHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDQiLCAkMS5s
aW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRC
YXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZs
b2F0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0LCB0cnVlKTsKICAgICB9
CiAgICAgfCBTQU1QTEVSMkQgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEIiwg
JDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0U2FtcGxlcjJELCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0U2FtcGxlcjJELCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUkNVQkUgewot
ICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckN1YmUiLCAkMS5saW5lKTsKICAgICAgICAg
VFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8g
RXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVy
Q3ViZSwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXJDdWJl
LCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUl9FWFRFUk5BTF9PRVMgewogICAgICAg
ICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVy
bmFsIikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1bnN1cHBvcnRl
ZCB0eXBlIiwgInNhbXBsZXJFeHRlcm5hbE9FUyIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoQDEsICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXJFeHRlcm5hbE9FUyIpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJzYW1wbGVyRXh0ZXJuYWxPRVMiLCAkMS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBx
dWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDog
RXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMs
IHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxP
RVMsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBTQU1QTEVSMkRSRUNUIHsKICAgICAgICAgaWYg
KCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIikp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1bnN1cHBvcnRlZCB0eXBl
IiwgInNhbXBsZXIyRFJlY3QiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5z
dXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXIyRFJl
Y3QiLCAkMS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyMkRSZWN0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAg
JCQuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IHN0
cnVjdF9zcGVjaWZpZXIgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic3RydWN0IiwgJDEubGlu
ZSk7CiAgICAgICAgICQkID0gJDE7CiAgICAgICAgICQkLnF1YWxpZmllciA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAg
ICB9CkBAIC0xNjkxLDI5ICsxNjA5LDI5IEBAIHR5cGVfc3BlY2lmaWVyX25vbmFycmF5CiAgICAg
ICAgIC8vCiAgICAgICAgIFRUeXBlJiBzdHJ1Y3R1cmUgPSBzdGF0aWNfY2FzdDxUVmFyaWFibGUq
PigkMS5zeW1ib2wpLT5nZXRUeXBlKCk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnVzZXJEZWYg
PSAmc3RydWN0dXJlOwogICAgIH0KICAgICA7CiAKIHN0cnVjdF9zcGVjaWZpZXIKLSAgICA6IFNU
UlVDVCBJREVOVElGSUVSIExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNs
YXJhdGlvbigkMi5saW5lLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVj
dF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJl
c2VydmVkRXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nKSkKKyAgICA6IFNUUlVDVCBpZGVu
dGlmaWVyIExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihA
MiwgKiQyLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25f
bGlzdCBSSUdIVF9CUkFDRSB7CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hl
Y2soQDIsICokMi5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0g
ICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUoJDUsICokMi5zdHJpbmcpOworICAg
ICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKG5ldyBUU3RydWN0dXJlKCQyLnN0cmlu
ZywgJDUpKTsKICAgICAgICAgVFZhcmlhYmxlKiB1c2VyVHlwZURlZiA9IG5ldyBUVmFyaWFibGUo
JDIuc3RyaW5nLCAqc3RydWN0dXJlLCB0cnVlKTsKICAgICAgICAgaWYgKCEgY29udGV4dC0+c3lt
Ym9sVGFibGUuaW5zZXJ0KCp1c2VyVHlwZURlZikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCQyLmxpbmUsICJyZWRlZmluaXRpb24iLCAkMi5zdHJpbmctPmNfc3RyKCksICJzdHJ1Y3Qi
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAicmVkZWZpbml0aW9uIiwgJDIuc3Ry
aW5nLT5jX3N0cigpLCAic3RydWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIH0KLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3Jhcnks
ICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwg
QDEpOwogICAgICAgICAkJC51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5l
eGl0U3RydWN0RGVjbGFyYXRpb24oKTsKICAgICB9Ci0gICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSB7
IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCQyLmxpbmUsICokMi5zdHJpbmcp
KSBjb250ZXh0LT5yZWNvdmVyKCk7IH0gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJB
Q0UgewotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCQ0LCBUU3RyaW5nKCIi
KSk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAkMS5saW5l
KTsKKyAgICB8IFNUUlVDVCBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVj
bGFyYXRpb24oQDIsICokMi5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IH0gc3RydWN0X2Rl
Y2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0UgeworICAgICAgICBUVHlwZSogc3RydWN0dXJlID0g
bmV3IFRUeXBlKG5ldyBUU3RydWN0dXJlKE5ld1Bvb2xUU3RyaW5nKCIiKSwgJDQpKTsKKyAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksIEAxKTsKICAgICAgICAgJCQu
dXNlckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0
aW9uKCk7CiAgICAgfQpAQCAtMTcyNSwxNCArMTY0MywxNSBAQCBzdHJ1Y3RfZGVjbGFyYXRpb25f
bGlzdAogICAgIH0KICAgICB8IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IHN0cnVjdF9kZWNsYXJh
dGlvbiB7CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgJDItPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBq
ID0gMDsgaiA8ICQkLT5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIGlmICgoKiQkKVtq
XS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSAoKiQyKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSkg
ewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoKiQyKVtpXS5saW5lLCAiZHVw
bGljYXRlIGZpZWxkIG5hbWUgaW4gc3RydWN0dXJlOiIsICJzdHJ1Y3QiLCAoKiQyKVtpXS50eXBl
LT5nZXRGaWVsZE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCAkMi0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQgPSAoKiQyKVtp
XTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgJCQtPnNpemUoKTsgKytqKSB7
CisgICAgICAgICAgICAgICAgaWYgKCgqJCQpW2pdLT5uYW1lKCkgPT0gZmllbGQtPm5hbWUoKSkg
eworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgImR1cGxpY2F0ZSBmaWVs
ZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3RydWN0IiwgZmllbGQtPm5hbWUoKS5jX3N0cigpKTsK
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICQkLT5wdXNoX2JhY2soKCokMilbaV0pOwor
ICAgICAgICAgICAgJCQtPnB1c2hfYmFjayhmaWVsZCk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
OwpAQCAtMTc0MSwxNCArMTY2MCwxNCBAQCBzdHJ1Y3RfZGVjbGFyYXRpb24KICAgICA6IHR5cGVf
c3BlY2lmaWVyIHN0cnVjdF9kZWNsYXJhdG9yX2xpc3QgU0VNSUNPTE9OIHsKICAgICAgICAgJCQg
PSAkMjsKIAotICAgICAgICBpZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2soJDEubGluZSwgKCok
MilbMF0udHlwZS0+Z2V0RmllbGROYW1lKCksICQxKSkgeworICAgICAgICBpZiAoY29udGV4dC0+
dm9pZEVycm9yQ2hlY2soQDEsICgqJDIpWzBdLT5uYW1lKCksICQxKSkgewogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgJCQtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAg
ICAgLy8gQ2FyZWZ1bCBub3QgdG8gcmVwbGFjZSBhbHJlYWR5IGtub3duIGFzcGVjdHMgb2YgdHlw
ZSwgbGlrZSBhcnJheS1uZXNzCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgVFR5cGUqIHR5
cGUgPSAoKiQkKVtpXS50eXBlOworICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKiQkKVtpXS0+
dHlwZSgpOwogICAgICAgICAgICAgdHlwZS0+c2V0QmFzaWNUeXBlKCQxLnR5cGUpOwogICAgICAg
ICAgICAgdHlwZS0+c2V0Tm9taW5hbFNpemUoJDEuc2l6ZSk7CiAgICAgICAgICAgICB0eXBlLT5z
ZXRNYXRyaXgoJDEubWF0cml4KTsKQEAgLTE3NTYsMjYgKzE2NzUsMjMgQEAgc3RydWN0X2RlY2xh
cmF0aW9uCiAKICAgICAgICAgICAgIC8vIGRvbid0IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAg
ICAgICAgICAgIGlmICh0eXBlLT5pc0FycmF5KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMS5saW5lLCAkMSkpCisgICAgICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDEsICQxKSkKICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KCQxLmFycmF5KQogICAgICAgICAgICAgICAgIHR5cGUtPnNldEFycmF5U2l6ZSgkMS5hcnJheVNp
emUpOwotICAgICAgICAgICAgaWYgKCQxLnVzZXJEZWYpIHsKKyAgICAgICAgICAgIGlmICgkMS51
c2VyRGVmKQogICAgICAgICAgICAgICAgIHR5cGUtPnNldFN0cnVjdCgkMS51c2VyRGVmLT5nZXRT
dHJ1Y3QoKSk7Ci0gICAgICAgICAgICAgICAgdHlwZS0+c2V0VHlwZU5hbWUoJDEudXNlckRlZi0+
Z2V0VHlwZU5hbWUoKSk7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChjb250ZXh0
LT5zdHJ1Y3ROZXN0aW5nRXJyb3JDaGVjaygkMS5saW5lLCAqdHlwZSkpIHsKKyAgICAgICAgICAg
IGlmIChjb250ZXh0LT5zdHJ1Y3ROZXN0aW5nRXJyb3JDaGVjayhAMSwgKigqJCQpW2ldKSkKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CiAgICAgOwogCiBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0CiAgICAgOiBzdHJ1Y3Rf
ZGVjbGFyYXRvciB7Ci0gICAgICAgICQkID0gTmV3UG9vbFRUeXBlTGlzdCgpOworICAgICAgICAk
JCA9IE5ld1Bvb2xURmllbGRMaXN0KCk7CiAgICAgICAgICQkLT5wdXNoX2JhY2soJDEpOwogICAg
IH0KICAgICB8IHN0cnVjdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgc3RydWN0X2RlY2xhcmF0b3Ig
ewpAQCAtMTc4NCwyNiArMTcwMCwyNCBAQCBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0CiAgICAgOwog
CiBzdHJ1Y3RfZGVjbGFyYXRvcgotICAgIDogSURFTlRJRklFUiB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDEubGluZSwgKiQxLnN0cmluZykpCisgICAgOiBpZGVu
dGlmaWVyIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMSwgKiQx
LnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgJCQu
dHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICAkJC5saW5l
ID0gJDEubGluZTsKLSAgICAgICAgJCQudHlwZS0+c2V0RmllbGROYW1lKCokMS5zdHJpbmcpOwor
ICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwor
ICAgICAgICAkJCA9IG5ldyBURmllbGQodHlwZSwgJDEuc3RyaW5nKTsKICAgICB9Ci0gICAgfCBJ
REVOVElGSUVSIExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQg
ewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5z
dHJpbmcpKQorICAgIHwgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lv
biBSSUdIVF9CUkFDS0VUIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVj
ayhAMSwgKiQxLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAg
ICAgICAgJCQudHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAg
ICAkJC5saW5lID0gJDEubGluZTsKLSAgICAgICAgJCQudHlwZS0+c2V0RmllbGROYW1lKCokMS5z
dHJpbmcpOwotCi0gICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlT
aXplRXJyb3JDaGVjaygkMi5saW5lLCAkMywgc2l6ZSkpCisgICAgICAgIFRUeXBlKiB0eXBlID0g
bmV3IFRUeXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CisgICAgICAgIGludCBzaXplID0gMDsK
KyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQzLCBzaXplKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQudHlwZS0+c2V0QXJy
YXlTaXplKHNpemUpOworICAgICAgICB0eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7CisKKyAgICAg
ICAgJCQgPSBuZXcgVEZpZWxkKHR5cGUsICQxLnN0cmluZyk7CiAgICAgfQogICAgIDsKIApAQCAt
MTgzNSw3ICsxNzQ5LDcgQEAgY29tcG91bmRfc3RhdGVtZW50CiAgICAgfCBMRUZUX0JSQUNFIHsg
Y29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9IHN0YXRlbWVudF9saXN0IHsgY29udGV4dC0+
c3ltYm9sVGFibGUucG9wKCk7IH0gUklHSFRfQlJBQ0UgewogICAgICAgICBpZiAoJDMgIT0gMCkg
ewogICAgICAgICAgICAgJDMtPnNldE9wKEVPcFNlcXVlbmNlKTsKLSAgICAgICAgICAgICQzLT5z
ZXRFbmRMaW5lKCQ1LmxpbmUpOworICAgICAgICAgICAgJDMtPnNldExpbmUoQCQpOwogICAgICAg
ICB9CiAgICAgICAgICQkID0gJDM7CiAgICAgfQpAQCAtMTg1OSw3ICsxNzczLDcgQEAgY29tcG91
bmRfc3RhdGVtZW50X25vX25ld19zY29wZQogICAgIHwgTEVGVF9CUkFDRSBzdGF0ZW1lbnRfbGlz
dCBSSUdIVF9CUkFDRSB7CiAgICAgICAgIGlmICgkMikgewogICAgICAgICAgICAgJDItPnNldE9w
KEVPcFNlcXVlbmNlKTsKLSAgICAgICAgICAgICQyLT5zZXRFbmRMaW5lKCQzLmxpbmUpOworICAg
ICAgICAgICAgJDItPnNldExpbmUoQCQpOwogICAgICAgICB9CiAgICAgICAgICQkID0gJDI7CiAg
ICAgfQpAQCAtMTg2NywxMCArMTc4MSwxMCBAQCBjb21wb3VuZF9zdGF0ZW1lbnRfbm9fbmV3X3Nj
b3BlCiAKIHN0YXRlbWVudF9saXN0CiAgICAgOiBzdGF0ZW1lbnQgewotICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKCQxLCAwKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMSwgQCQpOwogICAgIH0KICAgICB8
IHN0YXRlbWVudF9saXN0IHN0YXRlbWVudCB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCAwKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMSwgJDIsIEAkKTsKICAgICB9CiAgICAgOwogCkBA
IC0xODgxLDkgKzE3OTUsOSBAQCBleHByZXNzaW9uX3N0YXRlbWVudAogCiBzZWxlY3Rpb25fc3Rh
dGVtZW50CiAgICAgOiBJRiBMRUZUX1BBUkVOIGV4cHJlc3Npb24gUklHSFRfUEFSRU4gc2VsZWN0
aW9uX3Jlc3Rfc3RhdGVtZW50IHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNr
KCQxLmxpbmUsICQzKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKEAxLCAk
MykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigkMywgJDUsICQxLmxpbmUpOworICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oJDMsICQ1LCBAMSk7CiAgICAg
fQogICAgIDsKIApAQCAtMTkwNywxNCArMTgyMSwxNCBAQCBjb25kaXRpb24KICAgICAgICAgaWYg
KGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCQxLT5nZXRMaW5lKCksICQxKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJ
REVOVElGSUVSIEVRVUFMIGluaXRpYWxpemVyIHsKKyAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBl
IGlkZW50aWZpZXIgRVFVQUwgaW5pdGlhbGl6ZXIgewogICAgICAgICBUSW50ZXJtTm9kZSogaW50
ZXJtTm9kZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
JDIubGluZSwgJDEpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JD
aGVjayhAMiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBp
ZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soJDIubGluZSwgJDEpKQorICAgICAgICBpZiAoY29u
dGV4dC0+Ym9vbEVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKIAotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMi5saW5l
LCAqJDIuc3RyaW5nLCAkMSwgJDQsIGludGVybU5vZGUpKQorICAgICAgICBpZiAoIWNvbnRleHQt
PmV4ZWN1dGVJbml0aWFsaXplcihAMiwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkK
ICAgICAgICAgICAgICQkID0gJDQ7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwpAQCAtMTkyNiwxOSArMTg0MCwxOSBAQCBjb25kaXRpb24KIGl0ZXJhdGlv
bl9zdGF0ZW1lbnQKICAgICA6IFdISUxFIExFRlRfUEFSRU4geyBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5wdXNoKCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgfSBjb25kaXRpb24gUklHSFRf
UEFSRU4gc3RhdGVtZW50X25vX25ld19zY29wZSB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRh
YmxlLnBvcCgpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVM
b29wV2hpbGUsIDAsICQ0LCAwLCAkNiwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BXaGlsZSwgMCwgJDQsIDAsICQ2LCBAMSk7CiAgICAg
ICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAgfCBETyB7ICsrY29u
dGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgfSBzdGF0ZW1lbnRfd2l0aF9zY29wZSBXSElMRSBMRUZU
X1BBUkVOIGV4cHJlc3Npb24gUklHSFRfUEFSRU4gU0VNSUNPTE9OIHsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmJvb2xFcnJvckNoZWNrKCQ4LmxpbmUsICQ2KSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PmJvb2xFcnJvckNoZWNrKEA4LCAkNikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hp
bGUsIDAsICQ2LCAwLCAkMywgJDQubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZExvb3AoRUxvb3BEb1doaWxlLCAwLCAkNiwgMCwgJDMsIEA0KTsKICAgICAgICAg
LS1jb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOwogICAgIH0KICAgICB8IEZPUiBMRUZUX1BBUkVO
IHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2
ZWw7IH0gZm9yX2luaXRfc3RhdGVtZW50IGZvcl9yZXN0X3N0YXRlbWVudCBSSUdIVF9QQVJFTiBz
dGF0ZW1lbnRfbm9fbmV3X3Njb3BlIHsKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9w
KCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BGb3Is
ICQ0LCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCQ1Lm5vZGUxKSwgcmVpbnRlcnBy
ZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigkNS5ub2RlMiksICQ3LCAkMS5saW5lKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcEZvciwgJDQsIHJlaW50ZXJw
cmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oJDUubm9kZTEpLCByZWludGVycHJldF9jYXN0PFRJbnRl
cm1UeXBlZCo+KCQ1Lm5vZGUyKSwgJDcsIEAxKTsKICAgICAgICAgLS1jb250ZXh0LT5sb29wTmVz
dGluZ0xldmVsOwogICAgIH0KICAgICA7CkBAIC0xOTc1LDM5ICsxODg5LDM5IEBAIGZvcl9yZXN0
X3N0YXRlbWVudAoganVtcF9zdGF0ZW1lbnQKICAgICA6IENPTlRJTlVFIFNFTUlDT0xPTiB7CiAg
ICAgICAgIGlmIChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9IDApIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJjb250aW51ZSBzdGF0ZW1lbnQgb25seSBhbGxvd2Vk
IGluIGxvb3BzIiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJjb250aW51
ZSBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgJDEubGluZSk7CisgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgQDEpOwogICAgIH0KICAg
ICB8IEJSRUFLIFNFTUlDT0xPTiB7CiAgICAgICAgIGlmIChjb250ZXh0LT5sb29wTmVzdGluZ0xl
dmVsIDw9IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJicmVhayBz
dGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDEsICJicmVhayBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgJDEubGluZSk7Cisg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgQDEp
OwogICAgIH0KICAgICB8IFJFVFVSTiBTRU1JQ09MT04gewotICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAkMS5saW5lKTsKKyAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgQDEpOwogICAgICAg
ICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0
Vm9pZCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIm5vbi12b2lkIGZ1
bmN0aW9uIG11c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEgdmFsdWUiLCAi
cmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgfCBSRVRVUk4gZXhwcmVzc2lvbiBTRU1JQ09MT04gewotICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAkMiwgJDEubGluZSk7Cisg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICQy
LCBAMSk7CiAgICAgICAgIGNvbnRleHQtPmZ1bmN0aW9uUmV0dXJuc1ZhbHVlID0gdHJ1ZTsKICAg
ICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpID09
IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ2b2lkIGZ1
bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKEAxLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiLCAi
cmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoKihjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlKSAhPSAkMi0+Z2V0VHlwZSgpKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiZnVuY3Rpb24gcmV0dXJuIGlz
IG5vdCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKEAxLCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4i
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgIH0KICAg
ICB8IERJU0NBUkQgU0VNSUNPTE9OIHsKLSAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgJDEu
bGluZSk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BL
aWxsLCAkMS5saW5lKTsKKyAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgQDEpOworICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgQDEpOwogICAg
IH0KICAgICA7CiAKQEAgLTIwMTksNyArMTkzMyw3IEBAIHRyYW5zbGF0aW9uX3VuaXQKICAgICAg
ICAgY29udGV4dC0+dHJlZVJvb3QgPSAkJDsKICAgICB9CiAgICAgfCB0cmFuc2xhdGlvbl91bml0
IGV4dGVybmFsX2RlY2xhcmF0aW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZSgkMSwgJDIsIDApOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLCAkMiwgQCQpOwogICAgICAgICBjb250ZXh0LT50cmVl
Um9vdCA9ICQkOwogICAgIH0KICAgICA7CkBAIC0yMDQxLDcgKzE5NTUsNyBAQCBmdW5jdGlvbl9k
ZWZpbml0aW9uCiAgICAgICAgIAogICAgICAgICBpZiAoYnVpbHRJbikKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImJ1aWx0LWluIGZ1bmN0aW9ucyBjYW5u
b3QgYmUgcmVkZWZpbmVkIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAxLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRl
ZmluZWQiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjA1NSw3ICsxOTY5LDcgQEAg
ZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIFRoZW4g
dGhpcyBmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHkuCiAgICAgICAgICAgICAvLwotICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9k
eSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcihAMSwgImZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1bmN0aW9uLT5nZXROYW1l
KCkuY19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0K
ICAgICAgICAgcHJldkRlYy0+c2V0RGVmaW5lZCgpOwpAQCAtMjA2NSwxMSArMTk3OSwxMSBAQCBm
dW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0
TmFtZSgpID09ICJtYWluIikgewogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nZXRQYXJhbUNv
dW50KCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1
bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgp
LmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiZnVuY3Rpb24g
Y2Fubm90IHRha2UgYW55IHBhcmFtZXRlcihzKSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIo
KSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNUeXBlKCkg
IT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICIi
LCBmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCksICJtYWluIGZ1bmN0
aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKEAxLCAiIiwgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpLCAi
bWFpbiBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIwOTcsNyAr
MjAxMSw3IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgICAgICAgICAvLyBJbnNlcnQg
dGhlIHBhcmFtZXRlcnMgd2l0aCBuYW1lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgICAg
ICAgICAgLy8KICAgICAgICAgICAgICAgICBpZiAoISBjb250ZXh0LT5zeW1ib2xUYWJsZS5pbnNl
cnQoKnZhcmlhYmxlKSkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5s
aW5lLCAicmVkZWZpbml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJyZWRlZmluaXRpb24iLCB2YXJpYWJs
ZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsKICAgICAgICAgICAg
ICAgICB9CkBAIC0yMTA4LDE0ICsyMDIyLDE1IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAg
ICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdh
dGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFt
Tm9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5nZXRUeXBlKCksICQxLmxpbmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+
Z2V0TmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBAMSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJh
bU5vZGVzLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlw
ZSwgJDEubGluZSksICQxLmxpbmUpOworICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgQDEpLCBAMSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3Jl
Z2F0ZU9wZXJhdG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsICQxLmxpbmUpOworICAgICAg
ICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2Rlcywg
RU9wUGFyYW1ldGVycywgQDEpOwogICAgICAgICAkMS5pbnRlcm1BZ2dyZWdhdGUgPSBwYXJhbU5v
ZGVzOwogICAgICAgICBjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsID0gMDsKICAgICB9CkBAIC0y
MTIzLDEyICsyMDM4LDEyIEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgLy8/PyBDaGVj
ayB0aGF0IGFsbCBwYXRocyByZXR1cm4gYSB2YWx1ZSBpZiByZXR1cm4gdHlwZSAhPSB2b2lkID8K
ICAgICAgICAgLy8gICBNYXkgYmUgYmVzdCBkb25lIGFzIHBvc3QgcHJvY2VzcyBwaGFzZSBvbiBp
bnRlcm1lZGlhdGUgY29kZQogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlw
ZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCAmJiAhIGNvbnRleHQtPmZ1bmN0aW9uUmV0dXJu
c1ZhbHVlKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiZnVuY3Rpb24g
ZG9lcyBub3QgcmV0dXJuIGEgdmFsdWU6IiwgIiIsICQxLmZ1bmN0aW9uLT5nZXROYW1lKCkuY19z
dHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIGRvZXMgbm90
IHJldHVybiBhIHZhbHVlOiIsICIiLCAkMS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybUFn
Z3JlZ2F0ZSwgJDMsIDApOwotICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVn
YXRlT3BlcmF0b3IoJCQsIEVPcEZ1bmN0aW9uLCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1BZ2dyZWdhdGUsICQzLCBA
JCk7CisgICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigk
JCwgRU9wRnVuY3Rpb24sIEAxKTsKICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldE5h
bWUoJDEuZnVuY3Rpb24tPmdldE1hbmdsZWROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICQkLT5n
ZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRUeXBlKCQxLmZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkpOwog
CkBAIC0yMTM3LDE1ICsyMDUyLDE3IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgJCQt
PmdldEFzQWdncmVnYXRlKCktPnNldE9wdGltaXplKGNvbnRleHQtPnByYWdtYSgpLm9wdGltaXpl
KTsKICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnByYWdt
YSgpLmRlYnVnKTsKIAotICAgICAgICBpZiAoJDMgJiYgJDMtPmdldEFzQWdncmVnYXRlKCkpCi0g
ICAgICAgICAgICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RW5kTGluZSgkMy0+Z2V0QXNBZ2dy
ZWdhdGUoKS0+Z2V0RW5kTGluZSgpKTsKLQogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5w
b3AoKTsKICAgICB9CiAgICAgOwogCiAlJQogCit2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9j
LCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pIHsKKyAgICBjb250
ZXh0LT5lcnJvcigqeXlsbG9jLCByZWFzb24sICIiKTsKKyAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Cit9CisKIGludCBnbHNsYW5nX3BhcnNlKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICBy
ZXR1cm4geXlwYXJzZShjb250ZXh0KTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAkocmV2aXNpb24gMTUyMzIz
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzg0LDggKzM4NCw4IEBAIHN0YXRpYyB2b2lkIHl5X2ZhdGFs
X2Vycm9yICh5eWNvbnN0IGNoYXIKIAkqeXlfY3AgPSAnXDAnOyBcCiAJeXlnLT55eV9jX2J1Zl9w
ID0geXlfY3A7CiAKLSNkZWZpbmUgWVlfTlVNX1JVTEVTIDE1NQotI2RlZmluZSBZWV9FTkRfT0Zf
QlVGRkVSIDE1NgorI2RlZmluZSBZWV9OVU1fUlVMRVMgMTQ3CisjZGVmaW5lIFlZX0VORF9PRl9C
VUZGRVIgMTQ4CiAvKiBUaGlzIHN0cnVjdCBpcyBub3QgdXNlZCBpbiB0aGlzIHNjYW5uZXIsCiAg
ICBidXQgaXRzIHByZXNlbmNlIGlzIG5lY2Vzc2FyeS4gKi8KIHN0cnVjdCB5eV90cmFuc19pbmZv
CkBAIC0zOTMsNTggKzM5Myw1NyBAQCBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwogCWZsZXhfaW50MzJf
dCB5eV92ZXJpZnk7CiAJZmxleF9pbnQzMl90IHl5X254dDsKIAl9Owotc3RhdGljIHl5Y29uc3Qg
ZmxleF9pbnQxNl90IHl5X2FjY2VwdFs0NTldID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZf
dCB5eV9hY2NlcHRbNDQzXSA9CiAgICAgeyAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgIDAsICAg
IDAsICAgIDAsICAgIDAsICAxNTYsICAxNTQsICAxNTMsICAxNTMsCi0gICAgICAxMzgsICAxNDQs
ICAxNDksICAxMzMsICAxMzQsICAxNDIsICAxNDEsICAxMzAsICAxMzksICAxMzcsCi0gICAgICAx
NDMsICAxMDIsICAxMDIsICAxMzEsICAxMjcsICAxNDUsICAxMzIsICAxNDYsICAxNTAsICAgOTgs
Ci0gICAgICAxMzUsICAxMzYsICAxNDgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAxMjgsICAxNDcsICAx
MjksICAxNDAsICAgIDMsICAgIDQsICAgIDMsCi0gICAgICAxNTIsICAxNTUsICAxNTEsICAxMjQs
ICAxMTAsICAxMjksICAxMTgsICAxMTMsICAxMDgsICAxMTYsCi0gICAgICAxMDYsICAxMTcsICAx
MDcsICAxMDUsICAgIDIsICAgIDEsICAxMDksICAxMDQsICAxMDAsICAxMDEsCi0gICAgICAgIDAs
ICAgIDAsICAxMDIsICAxMzYsICAxMjgsICAxMzUsICAxMjUsICAxMjEsICAxMjMsICAxMjIsCi0g
ICAgICAxMjYsICAgOTgsICAxMTQsICAxMjAsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsCi0KLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAxNywgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICAyMCwgICAyMiwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgIDExNSwgIDExOSwgICAgNSwKLSAg
ICAgIDE1MSwgICAgMCwgICAgMSwgIDEwNCwgICAgMCwgICAgMCwgIDEwMywgICA5OSwgIDExMSwg
IDExMiwKLSAgICAgICA1MCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICAxOCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICAyNiwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAyMywgICA5OCwgICA5OCwKLQotICAgICAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAg
ICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LAotICAgICAgIDk4LCAgICAwLCAgMTA1LCAgICAwLCAgMTA0LCAgIDk4LCAgIDI4LCAgIDk4
LCAgIDk4LCAgIDk1LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDIxLCAgIDUzLCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDY5LCAgIDk4LCAgIDk4
LCAgIDU4LCAgIDczLCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDcwLCAgICA5LCAgIDMzLCAgIDM0LCAgIDM1LAotICAgICAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDU2LCAgIDI5LCAgIDk4LCAgIDk4
LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDM2LCAgIDM3LCAgIDM4LCAgIDI3LCAg
IDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDE1LCAgIDQyLCAgIDQzLCAgIDQ0LCAgIDUxLCAgIDEy
LCAgIDk4LCAgIDk4LCAgIDk4LAotCi0gICAgICAgOTgsICAgODIsICAgODMsICAgODQsICAgOTgs
ICAgMzAsICAgNzQsICAgMjUsICAgODUsICAgODYsCi0gICAgICAgODcsICAgIDcsICAgNzksICAg
ODAsICAgODEsICAgOTgsICAgMjQsICAgNzcsICAgOTgsICAgOTgsCi0gICAgICAgMzksICAgNDAs
ICAgNDEsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAg
OTgsICAgOTgsICAgNzEsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
Ci0gICAgICAgOTgsICAgNTIsICAgOTgsICAgOTcsICAgOTgsICAgOTgsICAgMTksICAgOTgsICAg
OTgsICAgOTgsCi0gICAgICAgOTgsICAgNzIsICAgNjYsICAgNjEsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgNzgsCi0gICAgICAgNTcsICAgOTgsICAgNjQsICAgMzIsICAgOTgsICAg
OTQsICAgNjUsICAgNDksICAgNzYsICAgNTksCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNjAsICAgMzEsCi0gICAgICAgOTgsICAgOTgsICAg
OTgsICAgIDgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNTQsCi0gICAgICAgMTMs
ICAgOTgsICAgMTQsICAgOTgsICAgOTgsICAgMTYsICAgNjcsICAgOTgsICAgOTgsICAgOTgsCi0K
LSAgICAgICA2MiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA1NSwgICA3
NSwgICA2MywKLSAgICAgICAxMSwgICA2OCwgICAgNiwgICA5NiwgICAxMCwgICA4OCwgICA0NSwg
ICA4OSwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA0NiwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA0OCwgICA5OCwKLSAgICAgICA5MiwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5MCwgICA5OCwgICA5MSwgICA5OCwKLSAgICAgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA0NywgICA5MywgICAgMAorICAgICAgICAwLCAgICAw
LCAgMTQ4LCAgMTQ2LCAgMTQ1LCAgMTQ1LCAgMTMyLCAgMTM4LCAgMTQzLCAgMTI3LAorICAgICAg
MTI4LCAgMTM2LCAgMTM1LCAgMTI0LCAgMTMzLCAgMTMxLCAgMTM3LCAgIDk2LCAgIDk2LCAgMTI1
LAorICAgICAgMTIxLCAgMTM5LCAgMTI2LCAgMTQwLCAgMTQ0LCAgIDkzLCAgMTI5LCAgMTMwLCAg
MTQyLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgMTIyLAorICAgICAgMTQxLCAgMTIzLCAgMTM0LCAgMTE4
LCAgMTA0LCAgMTIzLCAgMTEyLCAgMTA3LCAgMTAyLCAgMTEwLAorICAgICAgMTAwLCAgMTExLCAg
MTAxLCAgIDk5LCAgMTAzLCAgIDk4LCAgIDk1LCAgIDk2LCAgICAwLCAgICAwLAorICAgICAgMTMw
LCAgMTIyLCAgMTI5LCAgMTE5LCAgMTE1LCAgMTE3LCAgMTE2LCAgMTIwLCAgIDkzLCAgMTA4LAor
ICAgICAgMTE0LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLAorICAgICAgIDkzLCAgIDEyLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLAorCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
MTUsICAgMTcsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAxMDksICAxMTMsICAgIDAsICAgOTgsICAgIDAsICAgIDAsCisg
ICAgICAgOTcsICAgOTQsICAxMDUsICAxMDYsICAgNDUsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgMTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgMjEsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgMTgsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisKKyAg
ICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICAgMCwgICA5OSwgICAgMCwgICA5OCwg
ICA5MywKKyAgICAgICAyMywgICA5MywgICA5MywgICA5MCwgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywKKyAgICAgICA5MywgICAxNiwgICA0OCwgICA5MywgICA5MywgICA5Mywg
ICA2NCwgICA5MywgICA5MywgICA1MywKKyAgICAgICA2OCwgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICA2NSwKKyAgICAgICAgNCwgICAyOCwgICAyOSwg
ICAzMCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAg
ICA1MSwgICAyNCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICAzMSwgICAz
MiwKKyAgICAgICAzMywgICAyMiwgICA5MywgICA5MywgICA5MywgICAxMCwgICAzNywgICAzOCwg
ICAzOSwgICA0NiwKKyAgICAgICAgNywgICA5MywgICA5MywgICA5MywgICA5MywgICA3NywgICA3
OCwgICA3OSwgICA5MywgICAyNSwKKyAgICAgICA2OSwgICAyMCwgICA4MCwgICA4MSwgICA4Miwg
ICAgMiwgICA3NCwgICA3NSwgICA3NiwgICA5MywKKworICAgICAgIDE5LCAgIDcyLCAgIDkzLCAg
IDkzLCAgIDM0LCAgIDM1LCAgIDM2LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDY2LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDQ3LCAgIDkzLCAgIDkyLCAgIDkzLCAgIDkz
LAorICAgICAgIDE0LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDY3LCAgIDYxLCAgIDU2LCAg
IDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDczLCAgIDUyLCAgIDkzLCAgIDU5
LCAgIDI3LCAgIDkzLCAgIDg5LAorICAgICAgIDYwLCAgIDQ0LCAgIDcxLCAgIDU0LCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDU1LCAgIDI2
LCAgIDkzLCAgIDkzLCAgIDkzLCAgICAzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAg
IDkzLCAgIDQ5LCAgICA4LCAgIDkzLCAgICA5LCAgIDkzLCAgIDkzLCAgIDExLAorICAgICAgIDYy
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDU3LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAor
ICAgICAgIDkzLCAgIDUwLCAgIDcwLCAgIDU4LCAgICA2LCAgIDYzLCAgICAxLCAgIDkxLCAgICA1
LCAgIDgzLAorCisgICAgICAgNDAsICAgODQsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNDEsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgNDMsICAgOTMs
ICAgODcsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgODUsICAgOTMsICAg
ODYsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNDIsCisgICAgICAgODgs
ICAgIDAKICAgICB9IDsKIAogc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0g
PQpAQCAtNDgxLDIxMiArNDgwLDE5OCBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlf
ZWNbMjU2XSA9CiAKIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9tZXRhWzY4XSA9CiAg
ICAgeyAgIDAsCi0gICAgICAgIDEsICAgIDEsICAgIDIsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsCi0gICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMsICAg
IDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsCi0gICAgICAgIDMsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDMsICAgIDMsICAgIDMsCi0gICAgICAgIDMsICAgIDQsICAg
IDQsICAgIDQsICAgIDQsICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAgIDMsCi0gICAgICAgIDMs
ICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsCi0g
ICAgICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQs
ICAgIDQsCi0gICAgICAgIDQsICAgIDQsICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAgIDEKKyAg
ICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwKKyAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMiwgICAgMiwgICAgMiwgICAg
MiwgICAgMiwgICAgMiwKKyAgICAgICAgMiwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMiwgICAgMiwgICAgMiwKKyAgICAgICAgMiwgICAgMywgICAgMywgICAgMywgICAg
MywgICAgMywgICAgMSwgICAgMSwgICAgMSwgICAgMiwKKyAgICAgICAgMiwgICAgMiwgICAgMiwg
ICAgMiwgICAgMiwgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAg
MywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKKyAgICAg
ICAgMywgICAgMywgICAgMywgICAgMSwgICAgMSwgICAgMSwgICAgMQogICAgIH0gOwogCi1zdGF0
aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYmFzZVs0NjRdID0KK3N0YXRpYyB5eWNvbnN0IGZs
ZXhfaW50MTZfdCB5eV9iYXNlWzQ0NV0gPQogICAgIHsgICAwLAotICAgICAgICAwLCAgICAwLCAg
IDY1LCAgIDY2LCAgIDc1LCAgICAwLCAgNjgwLCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjU0
LCAgIDQ1LCAgMTM3LCAgNjgxLCAgNjgxLCAgNjUzLCAgMTM0LCAgNjgxLCAgMTMzLCAgMTMxLAot
ICAgICAgMTQ2LCAgMTU5LCAgMTY4LCAgNjUxLCAgNjgxLCAgMTg2LCAgNjUxLCAgIDQ3LCAgNjgx
LCAgICAwLAotICAgICAgNjgxLCAgNjgxLCAgMTI4LCAgMTAwLCAgMTEwLCAgMTUyLCAgMTU2LCAg
MTQ2LCAgMTY2LCAgNjIyLAotICAgICAgMTczLCAgMTA5LCAgNjIxLCAgMTI2LCAgMTc3LCAgNjE1
LCAgMTc4LCAgNjI4LCAgMTg3LCAgMTg0LAotICAgICAgMTQxLCAgMTk3LCAgNjI0LCAgNjgxLCAg
MTU3LCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjU2LAotICAgICAgNjgxLCAgNjgxLCAgICAw
LCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjgxLCAg
NjgxLCAgNjgxLCAgMjM2LCAgNjgxLCAgICAwLCAgNjgxLCAgMjQzLCAgMjczLCAgMjgyLAotICAg
ICAgMzA0LCAgICAwLCAgMzE0LCAgNjgxLCAgNjgxLCAgNjgxLCAgNjQ0LCAgNjgxLCAgNjgxLCAg
NjgxLAotICAgICAgNjQzLCAgICAwLCAgNjgxLCAgNjgxLCAgNjE2LCAgNjA5LCAgNjEyLCAgNjIw
LCAgNjE5LCAgNjA2LAotCi0gICAgICA2MjEsICA2MDgsICA2MTQsICA2MDIsICA1OTksICA2MTIs
ICA1OTksICA1OTYsICA1OTYsICA2MDIsCi0gICAgICA1OTAsICAxODksICA1OTUsICA2MDUsICA1
OTEsICA1OTcsICA2MDAsICA2MDEsICAgIDAsICAyMTYsCi0gICAgICA2MDAsICAxODgsICA1ODYs
ICA1OTksICA1OTAsICA1OTIsICA1ODIsICA1OTYsICA1OTMsICA1OTUsCi0gICAgICA1NzgsICA1
ODMsICA1ODAsICA1NjksICAxODMsICA1NzcsICA1ODIsICA1NzgsICA1ODAsICA1NjksCi0gICAg
ICA1NzIsICAyMjAsICA1NzcsICA1NjksICA1ODEsICAxNzYsICA1NzQsICA2ODEsICA2ODEsICA2
ODEsCi0gICAgICAgIDAsICAzMzEsICAgIDAsICAzNDQsICAzNjEsICAyOTAsICAzNzQsICAgIDAs
ICA2ODEsICA2ODEsCi0gICAgICAgIDAsICA1NjYsICA1NzAsICA1NzksICA1NzYsICA1NjAsICA1
NjAsICAyMTUsICA1NzUsICA1NzIsCi0gICAgICA1NzIsICA1NzAsICA1NjcsICA1NTksICA1NjUs
ICA1NTIsICA1NjMsICA1NDksICA1NjUsICAgIDAsCi0gICAgICA1NjIsICA1NTAsICA1NTcsICA1
NTQsICA1NTgsICA1NTEsICA1NDAsICA1MzksICA1NTIsICA1NTUsCi0gICAgICA1NTIsICA1NDcs
ICA1MzgsICAyNjAsICA1NDMsICA1NDYsICA1MzcsICA1MzQsICA1MzgsICA1NDQsCi0KLSAgICAg
IDUzNSwgIDUyNiwgIDUyOSwgIDUyNywgIDUzNywgIDUyMywgIDUyMSwgIDUzNCwgIDUyMCwgIDUy
MiwKLSAgICAgIDUxOSwgIDUzMCwgIDUyOSwgIDI4MywgIDUyNCwgIDUxOSwgIDUwOCwgIDI2NCwg
IDUyNiwgIDUyOCwKLSAgICAgIDUxNywgIDM4MSwgIDM4OCwgIDM5NSwgIDQwMiwgIDUxOCwgICAg
MCwgIDUxNiwgIDMyMCwgICAgMCwKLSAgICAgIDUwOCwgIDUwNiwgIDUxNCwgIDUwMywgIDUyMCwg
IDUwOSwgIDMzNiwgICAgMCwgICAgMCwgIDUwMywKLSAgICAgIDUxMywgIDUxMywgICAgMCwgIDQ5
OCwgIDM0OSwgICAgMCwgICAgMCwgIDUwMCwgIDM2NiwgIDUwMSwKLSAgICAgIDQ5NSwgIDQ5NCwg
IDQ5NSwgIDQ5NCwgIDQwNywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAgICAgIDQ5
MCwgIDQ5MSwgIDQ5NiwgIDQ4NywgIDUwMCwgIDQ5NSwgIDQ5NCwgIDQ4NiwgIDQ5MCwgIDQ4MiwK
LSAgICAgIDQ4NSwgIDQ4OSwgIDQ5NCwgIDQ4MCwgIDQ5MiwgIDQ4MywgICAgMCwgICAgMCwgIDQ4
OSwgIDQ3OCwKLSAgICAgIDQ3OCwgIDQ4MywgIDQ4MiwgIDQ3OSwgICAgMCwgICAgMCwgICAgMCwg
ICAgMCwgIDQ2OSwgIDQ4MSwKLSAgICAgIDQ4MywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAg
MCwgICAgMCwgIDQ3MSwgIDQ3MiwgIDQ2NiwKLQotICAgICAgNDc2LCAgICAwLCAgICAwLCAgICAw
LCAgNDY3LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLAotICAgICAgICAwLCAgICAwLCAg
ICAwLCAgICAwLCAgICAwLCAgNDc0LCAgICAwLCAgICAwLCAgNDcyLCAgNDY4LAotICAgICAgICAw
LCAgICAwLCAgICAwLCAgNDY0LCAgNDYwLCAgNDY1LCAgNDU1LCAgNDY4LCAgNDU0LCAgNDY3LAot
ICAgICAgNDU2LCAgNDYzLCAgICAwLCAgNDYxLCAgNDYzLCAgNDQ3LCAgNDQ5LCAgNDU1LCAgNDYx
LCAgNDU2LAotICAgICAgNDQ0LCAgICAwLCAgNDQ2LCAgICAwLCAgNDQ1LCAgNDQ4LCAgICAwLCAg
NDM3LCAgNDM2LCAgNDM2LAotICAgICAgNDQ5LCAgICAwLCAgNDUxLCAgICAwLCAgNDUwLCAgNDQ5
LCAgNDM0LCAgNDQ3LCAgNDM0LCAgICAwLAotICAgICAgICAwLCAgNDM3LCAgICAwLCAgICAwLCAg
NDI5LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLAotICAgICAgNDI2LCAgNDM3LCAgNDMw
LCAgNDM2LCAgNDMzLCAgNDI4LCAgNDIwLCAgNDMyLCAgICAwLCAgICAwLAotICAgICAgNDI1LCAg
NDMyLCAgNDIxLCAgICAwLCAgNDMwLCAgNDI3LCAgNDE3LCAgNDExLCAgNDI1LCAgICAwLAotICAg
ICAgICAwLCAgNDI1LCAgICAwLCAgNDIzLCAgNDIyLCAgICAwLCAgICAwLCAgNDIxLCAgNDA3LCAg
NDE5LAotCi0gICAgICAgIDAsICA0MTAsICA0MzEsICA0MzAsICA0MjksICA0MDAsICAzOTYsICAg
IDAsICAgIDAsICAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0MjEs
ICAyNTAsICA0MjEsICA0MTEsICAzODQsCi0gICAgICAzOTIsICAzOTQsICAzOTAsICAzOTIsICAz
OTEsICAzOTAsICAzOTMsICAzOTAsICAzOTEsICAzODgsCi0gICAgICAgIDAsICAzMzIsICAzNDMs
ICAzMTcsICAzMjksICAzMTMsICAzMTcsICAzMDQsICAzMjEsICAyOTEsCi0gICAgICAgIDAsICAz
MDIsICAyODAsICAyNzEsICAyNTUsICAyNjIsICAgIDAsICAyNTYsICAgIDAsICAyMzIsCi0gICAg
ICAyMDYsICAyMTIsICAxNDgsICAxNTksICAxMTMsICAgIDAsICAgIDAsICA2ODEsICA0NDIsICA0
NDQsCi0gICAgICA0NDYsICA0NTAsICAxNjEKKyAgICAgICAgMCwgICAgMCwgIDU4NywgIDU4OCwg
IDU4OCwgIDU4OCwgIDU2MSwgICA0MywgICA2NCwgIDU4OCwKKyAgICAgIDU4OCwgIDU2MCwgICA2
MSwgIDU4OCwgICA2MCwgICA1OCwgIDU1OSwgICA3NywgICA4NiwgIDU1NywKKyAgICAgIDU4OCwg
IDEwNCwgIDU1NywgICA1NSwgIDU4OCwgICAgMCwgIDU4OCwgIDU4OCwgICA3NSwgICAyNiwKKyAg
ICAgICA1NywgICA4MiwgICA4MywgICA3MywgICA5MywgIDUyOCwgICA5NywgICA5NSwgIDUyNywg
ICA0NCwKKyAgICAgICA3MSwgIDUyMSwgIDEwNCwgIDUzNCwgIDExMCwgIDExNiwgICAzNSwgIDEx
MSwgIDUzMCwgIDU4OCwKKyAgICAgIDExNCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwg
IDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwKKyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDE2NSwgIDU4
OCwgIDE3MiwgIDIwMiwgIDIxMSwgIDIzMywgICAgMCwKKyAgICAgIDU4OCwgIDU4OCwgIDU4OCwg
IDU1MSwgIDU4OCwgIDU4OCwgIDU4OCwgIDU1MCwgICAgMCwgIDU4OCwKKyAgICAgIDU4OCwgIDUy
MywgIDUxNiwgIDUxOSwgIDUyNywgIDUyNiwgIDUxMywgIDUyOCwgIDUxNSwgIDUyMSwKKyAgICAg
IDUwOSwgIDUwNiwgIDUxOSwgIDUwNiwgIDUwMywgIDUwMywgIDUwOSwgIDQ5NywgIDEwOCwgIDUw
MiwKKworICAgICAgNTEyLCAgNDk4LCAgNTA0LCAgNTA3LCAgNTA4LCAgICAwLCAgMTQ1LCAgNTA3
LCAgMTEzLCAgNDkzLAorICAgICAgNTA2LCAgNDk3LCAgNDk5LCAgNDg5LCAgNTAzLCAgNTAwLCAg
NTAyLCAgNDg1LCAgNDkwLCAgNDg3LAorICAgICAgNDc2LCAgMTU3LCAgNDg0LCAgNDg5LCAgNDg1
LCAgNDg3LCAgNDc2LCAgNDc5LCAgMTE4LCAgNDg0LAorICAgICAgNDc2LCAgNDg4LCAgIDcwLCAg
NDgxLCAgNTg4LCAgNTg4LCAgMjQ2LCAgMjUzLCAgMjcwLCAgMjE5LAorICAgICAgMjgzLCAgICAw
LCAgNTg4LCAgNTg4LCAgICAwLCAgNDczLCAgNDc3LCAgNDg2LCAgNDgzLCAgNDY3LAorICAgICAg
NDY3LCAgMTE5LCAgNDgyLCAgNDc5LCAgNDc5LCAgNDc3LCAgNDc0LCAgNDY2LCAgNDcyLCAgNDU5
LAorICAgICAgNDcwLCAgNDU2LCAgNDcyLCAgICAwLCAgNDY5LCAgNDU3LCAgNDY0LCAgNDYxLCAg
NDY1LCAgNDU4LAorICAgICAgNDQ3LCAgNDQ2LCAgNDU5LCAgNDYyLCAgNDU5LCAgNDU0LCAgNDQ1
LCAgMTg4LCAgNDUwLCAgNDUzLAorICAgICAgNDQ0LCAgNDQxLCAgNDQ1LCAgNDUxLCAgNDQyLCAg
NDMzLCAgNDM2LCAgNDM0LCAgNDQ0LCAgNDMwLAorICAgICAgNDI4LCAgNDQxLCAgNDI3LCAgNDI5
LCAgNDI2LCAgNDM3LCAgNDM2LCAgMTI0LCAgNDMxLCAgNDI2LAorCisgICAgICA0MTUsICAyNTgs
ICA0MzMsICA0MzUsICA0MjQsICAyOTAsICAyOTcsICAzMDQsICAzMTEsICA0MjUsCisgICAgICAg
IDAsICA0MjMsICAyNzUsICAgIDAsICA0MTUsICA0MTMsICA0MjEsICA0MTAsICA0MjcsICA0MTYs
CisgICAgICAzMTYsICAgIDAsICAgIDAsICA0MTAsICA0MjAsICA0MjAsICAgIDAsICA0MDUsICAz
MTksICAgIDAsCisgICAgICAgIDAsICA0MDcsICAzMjIsICA0MDgsICA0MDIsICA0MDEsICA0MDIs
ICA0MDEsICAzMjUsICAgIDAsCisgICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzOTcsICAz
OTgsICA0MDMsICAzOTQsICA0MDcsICA0MDIsCisgICAgICA0MDEsICAzOTMsICAzOTcsICAzODks
ICAzOTIsICAzOTYsICA0MDEsICAzODcsICAzOTksICAzOTAsCisgICAgICAgIDAsICAgIDAsICAz
OTYsICAzODUsICAzODUsICAzOTAsICAzODksICAzODYsICAgIDAsICAgIDAsCisgICAgICAgIDAs
ICAgIDAsICAzNzYsICAzODgsICAzOTAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsCisg
ICAgICAgIDAsICAzNzgsICAzNzksICAzNzMsICAzODMsICAgIDAsICAgIDAsICAgIDAsICAzNzQs
ICAgIDAsCisgICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAg
IDAsICAgIDAsICAzODEsCisKKyAgICAgICAgMCwgICAgMCwgIDM3OSwgIDM3NSwgICAgMCwgICAg
MCwgICAgMCwgIDM3MSwgIDM2NywgIDM3MiwKKyAgICAgIDM2MiwgIDM3NSwgIDM2MSwgIDM3NCwg
IDM2MywgIDM3MCwgICAgMCwgIDM2OCwgIDM3MCwgIDM1NCwKKyAgICAgIDM1NiwgIDM2MiwgIDM2
OCwgIDM2MywgIDM1MSwgICAgMCwgIDM1MywgICAgMCwgIDM1MiwgIDM1NSwKKyAgICAgICAgMCwg
IDM0NCwgIDM0MywgIDM0MywgIDM1NiwgICAgMCwgIDM1OCwgICAgMCwgIDM1NywgIDM1NiwKKyAg
ICAgIDM0MSwgIDM1NCwgIDM0MSwgICAgMCwgICAgMCwgIDM0NCwgICAgMCwgICAgMCwgIDMzNiwg
ICAgMCwKKyAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDMzMywgIDM0NCwgIDMzNywgIDM0
MywgIDM0MCwgIDMzNSwKKyAgICAgIDMyNywgIDMzOSwgICAgMCwgICAgMCwgIDMzMiwgIDMzOSwg
IDMyOCwgICAgMCwgIDMzNywgIDMzNCwKKyAgICAgIDMyNCwgIDMyOSwgIDMzMiwgICAgMCwgICAg
MCwgIDMzMiwgICAgMCwgIDMzMCwgIDMyOSwgICAgMCwKKyAgICAgICAgMCwgIDMyOCwgIDMxNCwg
IDMyNiwgICAgMCwgIDMxNywgIDMzOCwgIDMzNywgIDMzNiwgIDMwNywKKyAgICAgIDMwMywgICAg
MCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDMyOCwKKworICAg
ICAgMTY2LCAgMzI1LCAgMzE2LCAgMjk5LCAgMzA4LCAgMzEwLCAgMzA2LCAgMzA4LCAgMzA3LCAg
MzA2LAorICAgICAgMzA5LCAgMzA2LCAgMjU2LCAgMjUzLCAgICAwLCAgMjI4LCAgMjM4LCAgMjIy
LCAgMjM1LCAgMjAzLAorICAgICAgMjA3LCAgMjA0LCAgMjEyLCAgMTkxLCAgICAwLCAgMjAxLCAg
MTY1LCAgMTY3LCAgMTUzLCAgMTYxLAorICAgICAgICAwLCAgMTcwLCAgICAwLCAgMTc1LCAgMTUx
LCAgMTQxLCAgMTAwLCAgMTE0LCAgIDU5LCAgICAwLAorICAgICAgICAwLCAgNTg4LCAgMzU5LCAg
MTEzCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9kZWZbNDY0XSA9
CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfZGVmWzQ0NV0gPQogICAgIHsgICAwLAot
ICAgICAgNDU4LCAgICAxLCAgNDU5LCAgNDU5LCAgNDU4LCAgICA1LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDYwLAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAg
NDYwLCAgNDYwLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAg
ICAgNDU4LCAgNDU4LCAgNDYxLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDYyLCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDYzLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDYwLCAgNDU4LCAgNDU4LCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAg
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NjEsICA0NTgsICA0NjIsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NjMsICA0NTgsICA0NTgsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
Ci0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsCi0KLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwK
LSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAgICAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAot
ICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAg
ICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAg
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICAgIDAsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgKKyAgICAgIDQ0Miwg
ICAgMSwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAg
ICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0NCwKKyAgICAg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0
MiwKKyAgICAgIDQ0MiwgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywKKworICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LAorICAgICAgNDQyLCAgNDQ0LCAgNDQyLCAgNDQyLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAor
CisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisg
ICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAg
ICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywKKworICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAg
NDQzLCAgICAwLCAgNDQyLCAgNDQyCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50
MTZfdCB5eV9ueHRbNzQ5XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0WzY1
Nl0gPQogICAgIHsgICAwLAotICAgICAgICA4LCAgICA5LCAgIDEwLCAgIDExLCAgIDEyLCAgIDEz
LCAgIDE0LCAgIDE1LCAgIDE2LCAgIDE3LAotICAgICAgIDE4LCAgIDE5LCAgIDIwLCAgIDIxLCAg
IDIyLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLAotICAgICAgIDIzLCAgIDI0LCAgIDI1
LCAgIDI2LCAgIDI3LCAgIDI4LCAgIDI5LCAgIDMwLCAgIDMwLCAgIDMwLAotICAgICAgIDMwLCAg
IDMwLCAgIDMwLCAgIDMwLCAgIDMwLCAgIDMwLCAgIDMxLCAgIDMyLCAgIDMzLCAgIDM0LAotICAg
ICAgIDM1LCAgIDM2LCAgIDM3LCAgIDM4LCAgIDM5LCAgIDQwLCAgIDQxLCAgIDQyLCAgIDMwLCAg
IDQzLAotICAgICAgIDQ0LCAgIDQ1LCAgIDQ2LCAgIDQ3LCAgIDQ4LCAgIDQ5LCAgIDUwLCAgIDUx
LCAgIDUyLCAgIDUzLAotICAgICAgIDMwLCAgIDMwLCAgIDMwLCAgIDU0LCAgIDU1LCAgIDU2LCAg
IDU3LCAgIDU5LCAgIDU5LCAgIDY1LAotICAgICAgIDY2LCAgIDkwLCAgIDkxLCAgIDYwLCAgIDYw
LCAgICA4LCAgIDYxLCAgIDYyLCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4LCAg
ICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4
LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAotCi0gICAg
ICAgIDgsICAgIDgsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAg
NjMsCi0gICAgICAgNjMsICAgIDgsICAgIDgsICAgIDgsICAgNjMsICAgNjMsICAgNjMsICAgNjMs
ICAgNjMsICAgNjMsCi0gICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAg
NjMsICAgNjMsICAgNjMsICAgNjMsCi0gICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMs
ICAgNjMsICAgNjMsICAgNjMsICAgIDgsICAgIDgsCi0gICAgICAgIDgsICAgIDgsICAgNjcsICAg
NzAsICAgNzIsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsCi0gICAgICAgNzQsICAgNzQs
ICAgOTMsICAxMTksICAgNzUsICAgOTUsICAgOTYsICAgNzMsICAgNzEsICAgNzYsCi0gICAgICAx
MjAsICAgNjgsICAgOTcsICAxNTgsICAgOTgsICAxMjMsICAgOTQsICAxMjEsICAgOTksICAxMjQs
Ci0gICAgICAgNzcsICAgNzgsICA0NTcsICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAg
NzksICAgODAsCi0gICAgICAgNzgsICAxNDgsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMs
ICAgODMsICAgODMsICAgODEsCi0gICAgICAgODUsICAxMDAsICAxNDIsICA0NTYsICAgODIsICAx
MDcsICAxNDMsICAxMDgsICAgODEsICAxMDMsCi0KLSAgICAgIDQ1NSwgIDEwMSwgICA4MSwgIDEw
NCwgIDEwMiwgIDExMCwgIDEwOSwgICA4NiwgIDEwNSwgICA4NywKLSAgICAgICA4OCwgICA4MSwg
IDExNiwgIDExMSwgIDEwNiwgIDExMiwgIDEyNSwgIDEyOCwgIDExMywgICA4MiwKLSAgICAgIDEx
NywgIDE0OSwgIDIwNiwgIDIxOSwgIDExNCwgIDIyMCwgIDEzMiwgIDEzOCwgIDE3OCwgIDEyNiwK
LSAgICAgIDEzOSwgIDExOCwgIDEyOSwgIDEzMywgIDEzNCwgIDEzMCwgIDE0NCwgIDIwNywgIDE0
MCwgIDE5MiwKLSAgICAgIDE0NSwgIDE3OSwgIDQ1NCwgIDEzNSwgIDEzNiwgIDE0MSwgIDEzNywg
IDE5MywgIDQ1MywgIDE0NiwKLSAgICAgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3
NCwgICA3NCwgIDE1NCwgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwg
IDQ1MiwgIDE4NiwgIDE1MiwgIDIxNCwgIDE4NywgIDE4OCwKLSAgICAgIDIzMiwgIDIzMywgIDE4
OSwgIDE1NSwgIDE5MCwgIDIxNSwgIDI1OCwgIDI1OSwgIDI2MCwgIDE1MiwKLSAgICAgIDI4NSwg
IDI4NiwgIDI4NywgIDQyMiwgIDQyMywgICA3OCwgIDE1NSwgICA3OSwgICA3OSwgICA3OSwKLSAg
ICAgICA3OSwgICA3OSwgICA3OSwgICA4MCwgICA3OCwgIDQ1MSwgICA4MCwgICA4MCwgICA4MCwg
ICA4MCwKLQotICAgICAgIDgwLCAgIDgwLCAgIDgwLCAgIDgxLCAgMTU3LCAgMTU3LCAgMTU3LCAg
MTU3LCAgMTU3LCAgMTU3LAotICAgICAgMTU3LCAgNDUwLCAgIDgxLCAgMTU2LCAgNDQ5LCAgMTU2
LCAgIDgxLCAgNDQ4LCAgMTU3LCAgMTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAg
MTU3LCAgIDgxLCAgIDc4LCAgMjgwLCAgIDgzLCAgIDgzLAotICAgICAgIDgzLCAgIDgzLCAgIDgz
LCAgIDgzLCAgIDgzLCAgMjgxLCAgMjkzLCAgMjk0LCAgMjk1LCAgNDQ3LAotICAgICAgMjIyLCAg
NDQ2LCAgMjIyLCAgNDQ1LCAgIDgxLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLAotICAg
ICAgMjIzLCAgMjIzLCAgMzAyLCAgMzAzLCAgMzA0LCAgNDQ0LCAgNDQzLCAgIDgxLCAgMTU0LCAg
MTU0LAotICAgICAgMTU0LCAgMTU0LCAgMTU0LCAgMTU0LCAgMTU0LCAgMzA5LCAgMzEwLCAgMzEx
LCAgNDQyLCAgNDQxLAotICAgICAgMjI0LCAgNDQwLCAgMjI0LCAgNDM5LCAgMTU1LCAgMjI1LCAg
MjI1LCAgMjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMzEzLCAgMzE0LCAgMzE1
LCAgNDM4LCAgNDM3LCAgMTU1LCAgMTU3LCAgMTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAg
MTU3LCAgMTU3LCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLAotCi0gICAgICAyMjMsICAy
MjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjUsCi0gICAg
ICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAy
MjUsCi0gICAgICAyMjUsICAyMjUsICAyMjUsICAzMjEsICAzMjIsICAzMjMsICA0MDMsICA0MDQs
ICA0MDUsICA0MzYsCi0gICAgICA0MzUsICA0MzQsICA0MzMsICA0MzIsICA0MzEsICA0MzAsICA0
MjksICA0MjgsICA0MjcsICA0MDYsCi0gICAgICA0MjYsICA0MDcsICAgNTgsICAgNTgsICAgNTgs
ICAgNTgsICAgOTIsICAgOTIsICAxNTEsICAxNTEsCi0gICAgICAxNTMsICA0MjUsICAxNTMsICAx
NTMsICA0MjQsICA0MjEsICA0MjAsICA0MTksICA0MTgsICA0MTcsCi0gICAgICA0MTYsICA0MTUs
ICA0MTQsICA0MTMsICA0MTIsICA0MTEsICA0MTAsICA0MDksICA0MDgsICA0MDIsCi0gICAgICA0
MDEsICA0MDAsICAzOTksICAzOTgsICAzOTcsICAzOTYsICAzOTUsICAzOTQsICAzOTMsICAzOTIs
Ci0gICAgICAzOTEsICAzOTAsICAzODksICAzODgsICAzODcsICAzODYsICAzODUsICAzODQsICAz
ODMsICAzODIsCi0gICAgICAzODEsICAzODAsICAzNzksICAzNzgsICAzNzcsICAzNzYsICAzNzUs
ICAzNzQsICAzNzMsICAzNzIsCi0KLSAgICAgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2Nywg
IDM2NiwgIDM2NSwgIDM2NCwgIDM2MywgIDM2MiwKLSAgICAgIDM2MSwgIDM2MCwgIDM1OSwgIDM1
OCwgIDM1NywgIDM1NiwgIDM1NSwgIDM1NCwgIDM1MywgIDM1MiwKLSAgICAgIDM1MSwgIDM1MCwg
IDM0OSwgIDM0OCwgIDM0NywgIDM0NiwgIDM0NSwgIDM0NCwgIDM0MywgIDM0MiwKLSAgICAgIDM0
MSwgIDM0MCwgIDMzOSwgIDMzOCwgIDMzNywgIDMzNiwgIDMzNSwgIDMzNCwgIDMzMywgIDMzMiwK
LSAgICAgIDMzMSwgIDMzMCwgIDMyOSwgIDMyOCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMy
MCwgIDMxOSwKLSAgICAgIDMxOCwgIDMxNywgIDMxNiwgIDMxMiwgIDMwOCwgIDMwNywgIDMwNiwg
IDMwNSwgIDMwMSwgIDMwMCwKLSAgICAgIDI5OSwgIDI5OCwgIDI5NywgIDI5NiwgIDI5MiwgIDI5
MSwgIDI5MCwgIDI4OSwgIDI4OCwgIDI4NCwKLSAgICAgIDI4MywgIDI4MiwgIDI3OSwgIDI3OCwg
IDI3NywgIDI3NiwgIDI3NSwgIDI3NCwgIDI3MywgIDI3MiwKLSAgICAgIDI3MSwgIDI3MCwgIDI2
OSwgIDI2OCwgIDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2MiwKLSAgICAgIDI2MSwg
IDI1NywgIDI1NiwgIDI1NSwgIDI1NCwgIDI1MywgIDI1MiwgIDI1MSwgIDI1MCwgIDI0OSwKLQot
ICAgICAgMjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAgMjQ0LCAgMjQzLCAgMjQyLCAgMjQxLCAgMjQw
LCAgMjM5LAotICAgICAgMjM4LCAgMjM3LCAgMjM2LCAgMjM1LCAgMjM0LCAgMjMxLCAgMjMwLCAg
MjI5LCAgMjI4LCAgMjI3LAotICAgICAgMjI2LCAgMjIxLCAgMjE4LCAgMjE3LCAgMjE2LCAgMjEz
LCAgMjEyLCAgMjExLCAgMjEwLCAgMjA5LAotICAgICAgMjA4LCAgMjA1LCAgMjA0LCAgMjAzLCAg
MjAyLCAgMjAxLCAgMjAwLCAgMTk5LCAgMTk4LCAgMTk3LAotICAgICAgMTk2LCAgMTk1LCAgMTk0
LCAgMTkxLCAgMTg1LCAgMTg0LCAgMTgzLCAgMTgyLCAgMTgxLCAgMTgwLAotICAgICAgMTc3LCAg
MTc2LCAgMTc1LCAgMTc0LCAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LAotICAg
ICAgMTY3LCAgMTY2LCAgMTY1LCAgMTY0LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAg
MTUwLAotICAgICAgMTQ3LCAgMTMxLCAgMTI3LCAgMTIyLCAgMTE1LCAgIDg5LCAgIDg0LCAgIDY5
LCAgIDY0LCAgNDU4LAotICAgICAgICA3LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotCi0gICAgICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAg
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0
NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0
NTgsICA0NTgKKyAgICAgICAgNCwgICAgNSwgICAgNiwgICAgNywgICAgOCwgICAgOSwgICAxMCwg
ICAxMSwgICAxMiwgICAxMywKKyAgICAgICAxNCwgICAxNSwgICAxNiwgICAxNywgICAxOCwgICAx
OSwgICAxOSwgICAxOSwgICAxOSwgICAxOSwKKyAgICAgICAxOSwgICAyMCwgICAyMSwgICAyMiwg
ICAyMywgICAyNCwgICAyNSwgICAyNiwgICAyNiwgICAyNiwKKyAgICAgICAyNiwgICAyNiwgICAy
NiwgICAyNiwgICAyNiwgICAyNiwgICAyNywgICAyOCwgICAyOSwgICAzMCwKKyAgICAgICAzMSwg
ICAzMiwgICAzMywgICAzNCwgICAzNSwgICAzNiwgICAzNywgICAzOCwgICAyNiwgICAzOSwKKyAg
ICAgICA0MCwgICA0MSwgICA0MiwgICA0MywgICA0NCwgICA0NSwgICA0NiwgICA0NywgICA0OCwg
ICA0OSwKKyAgICAgICAyNiwgICAyNiwgICAyNiwgICA1MCwgICA1MSwgICA1MiwgICA1MywgICA1
NSwgICA1NiwgICA1NywKKyAgICAgICA2MCwgICA2MiwgICA2NCwgICA2NCwgICA2NCwgICA2NCwg
ICA2NCwgICA2NCwgICA2NCwgICA3NywKKyAgICAgICA3OCwgICA4MiwgICA4MywgIDExMCwgICA2
MywgICA2MSwgIDEyOSwgIDExMSwgICA1OCwgICA2NiwKKyAgICAgIDEzMCwgICA2NywgICA2Nywg
ICA2NywgICA2NywgICA2NywgICA2NywgICA2OCwgICA2NiwgICA4MCwKKworICAgICAgIDY4LCAg
IDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY5LCAgIDcyLCAgIDg0LAorICAg
ICAgMTEyLCAgIDg1LCAgIDcwLCAgIDgxLCAgMTQyLCAgIDg2LCAgIDY5LCAgMjAzLCAgNDQxLCAg
MjA0LAorICAgICAgIDY5LCAgIDg3LCAgIDk0LCAgMTEzLCAgIDk1LCAgIDczLCAgIDkwLCAgIDc0
LCAgIDc1LCAgIDY5LAorICAgICAgIDkxLCAgIDg4LCAgIDk3LCAgIDk2LCAgIDg5LCAgIDkyLCAg
MTAzLCAgIDcwLCAgMTM1LCAgMTA2LAorICAgICAgIDk4LCAgIDkzLCAgIDk5LCAgMTE1LCAgMTA0
LCAgMTAwLCAgMTA3LCAgMTYyLCAgNDQwLCAgMTE5LAorICAgICAgMTMxLCAgMTAxLCAgNDM5LCAg
MTA4LCAgMTMyLCAgMTA1LCAgMTIwLCAgMTIxLCAgMTE2LCAgMTI1LAorICAgICAgMTYzLCAgMTE3
LCAgMTI2LCAgMTMzLCAgMTc2LCAgMTk4LCAgMTIyLCAgMTIzLCAgMjY0LCAgMTI0LAorICAgICAg
MTI3LCAgNDM4LCAgMTc3LCAgMTk5LCAgMjE2LCAgMjE3LCAgMjY1LCAgMTI4LCAgMTM2LCAgIDY0
LAorICAgICAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgMTM4LCAgMTM4LCAg
MTM4LCAgMTM4LAorICAgICAgMTM4LCAgMTM4LCAgMTM4LCAgNDM3LCAgMTcwLCAgMTM3LCAgMTkw
LCAgMTcxLCAgMTcyLCAgNDA2LAorCisgICAgICA0MDcsICAxNzMsICAxMzksICAxNzQsICAyNDIs
ICAyNDMsICAyNDQsICA0MzYsICAxMzcsICA0MzUsCisgICAgICA0MzQsICAxOTEsICA0MzMsICA0
MzIsICAgNjYsICAxMzksICAgNjcsICAgNjcsICAgNjcsICAgNjcsCisgICAgICAgNjcsICAgNjcs
ICAgNjgsICAgNjYsICA0MzEsICAgNjgsICAgNjgsICAgNjgsICAgNjgsICAgNjgsCisgICAgICAg
NjgsICAgNjgsICAgNjksICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEs
CisgICAgICA0MzAsICAgNjksICAxNDAsICA0MjksICAxNDAsICAgNjksICA0MjgsICAxNDEsICAx
NDEsICAxNDEsCisgICAgICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAgNjksICAyMDYsICA0Mjcs
ICAyMDYsICA0MjYsICA0MjUsCisgICAgICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAy
MDcsICAyMDcsICAxMzgsICAxMzgsICAxMzgsCisgICAgICAxMzgsICAxMzgsICAxMzgsICAxMzgs
ICAyNjksICAyNzAsICAyNzEsICA0MjQsICA0MjMsICAyMDgsCisgICAgICA0MjIsICAyMDgsICA0
MjEsICAxMzksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksCisgICAgICAyMDks
ICAyNzcsICAyNzgsICAyNzksICA0MjAsICA0MTksICAxMzksICAxNDEsICAxNDEsICAxNDEsCisK
KyAgICAgIDE0MSwgIDE0MSwgIDE0MSwgIDE0MSwgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIw
NywgIDIwNywKKyAgICAgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywg
IDIwNywgIDIwOSwgIDIwOSwKKyAgICAgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIw
OSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwKKyAgICAgIDIwOSwgIDIwOSwgIDI4NiwgIDI4Nywg
IDI4OCwgIDI5MywgIDI5NCwgIDI5NSwgIDI5NywgIDI5OCwKKyAgICAgIDI5OSwgIDMwNSwgIDMw
NiwgIDMwNywgIDM4NywgIDM4OCwgIDM4OSwgIDQxOCwgIDQxNywgIDQxNiwKKyAgICAgIDQxNSwg
IDQxNCwgIDQxMywgIDQxMiwgIDQxMSwgIDQxMCwgIDQwOSwgIDM5MCwgIDQwOCwgIDM5MSwKKyAg
ICAgICA3OSwgICA3OSwgIDQwNSwgIDQwNCwgIDQwMywgIDQwMiwgIDQwMSwgIDQwMCwgIDM5OSwg
IDM5OCwKKyAgICAgIDM5NywgIDM5NiwgIDM5NSwgIDM5NCwgIDM5MywgIDM5MiwgIDM4NiwgIDM4
NSwgIDM4NCwgIDM4MywKKyAgICAgIDM4MiwgIDM4MSwgIDM4MCwgIDM3OSwgIDM3OCwgIDM3Nywg
IDM3NiwgIDM3NSwgIDM3NCwgIDM3MywKKyAgICAgIDM3MiwgIDM3MSwgIDM3MCwgIDM2OSwgIDM2
OCwgIDM2NywgIDM2NiwgIDM2NSwgIDM2NCwgIDM2MywKKworICAgICAgMzYyLCAgMzYxLCAgMzYw
LCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LCAgMzU0LCAgMzUzLAorICAgICAgMzUyLCAg
MzUxLCAgMzUwLCAgMzQ5LCAgMzQ4LCAgMzQ3LCAgMzQ2LCAgMzQ1LCAgMzQ0LCAgMzQzLAorICAg
ICAgMzQyLCAgMzQxLCAgMzQwLCAgMzM5LCAgMzM4LCAgMzM3LCAgMzM2LCAgMzM1LCAgMzM0LCAg
MzMzLAorICAgICAgMzMyLCAgMzMxLCAgMzMwLCAgMzI5LCAgMzI4LCAgMzI3LCAgMzI2LCAgMzI1
LCAgMzI0LCAgMzIzLAorICAgICAgMzIyLCAgMzIxLCAgMzIwLCAgMzE5LCAgMzE4LCAgMzE3LCAg
MzE2LCAgMzE1LCAgMzE0LCAgMzEzLAorICAgICAgMzEyLCAgMzExLCAgMzEwLCAgMzA5LCAgMzA4
LCAgMzA0LCAgMzAzLCAgMzAyLCAgMzAxLCAgMzAwLAorICAgICAgMjk2LCAgMjkyLCAgMjkxLCAg
MjkwLCAgMjg5LCAgMjg1LCAgMjg0LCAgMjgzLCAgMjgyLCAgMjgxLAorICAgICAgMjgwLCAgMjc2
LCAgMjc1LCAgMjc0LCAgMjczLCAgMjcyLCAgMjY4LCAgMjY3LCAgMjY2LCAgMjYzLAorICAgICAg
MjYyLCAgMjYxLCAgMjYwLCAgMjU5LCAgMjU4LCAgMjU3LCAgMjU2LCAgMjU1LCAgMjU0LCAgMjUz
LAorICAgICAgMjUyLCAgMjUxLCAgMjUwLCAgMjQ5LCAgMjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAg
MjQxLCAgMjQwLAorCisgICAgICAyMzksICAyMzgsICAyMzcsICAyMzYsICAyMzUsICAyMzQsICAy
MzMsICAyMzIsICAyMzEsICAyMzAsCisgICAgICAyMjksICAyMjgsICAyMjcsICAyMjYsICAyMjUs
ICAyMjQsICAyMjMsICAyMjIsICAyMjEsICAyMjAsCisgICAgICAyMTksICAyMTgsICAyMTUsICAy
MTQsICAyMTMsICAyMTIsICAyMTEsICAyMTAsICAyMDUsICAyMDIsCisgICAgICAyMDEsICAyMDAs
ICAxOTcsICAxOTYsICAxOTUsICAxOTQsICAxOTMsICAxOTIsICAxODksICAxODgsCisgICAgICAx
ODcsICAxODYsICAxODUsICAxODQsICAxODMsICAxODIsICAxODEsICAxODAsICAxNzksICAxNzgs
CisgICAgICAxNzUsICAxNjksICAxNjgsICAxNjcsICAxNjYsICAxNjUsICAxNjQsICAxNjEsICAx
NjAsICAxNTksCisgICAgICAxNTgsICAxNTcsICAxNTYsICAxNTUsICAxNTQsICAxNTMsICAxNTIs
ICAxNTEsICAxNTAsICAxNDksCisgICAgICAxNDgsICAxNDcsICAxNDYsICAxNDUsICAxNDQsICAx
NDMsICAxMzQsICAxMTgsICAxMTQsICAxMDksCisgICAgICAxMDIsICAgNzYsICAgNzEsICAgNjUs
ICAgNTksICAgNTQsICA0NDIsICAgIDMsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisKKyAgICAgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwK
KyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MgogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlf
Y2hrWzc0OV0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1s2NTZdID0KICAg
ICB7ICAgMCwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKQEAgLTY5NCw5NSArNjc5LDg1IEBAIHN0YXRpYyB5
eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9jaGtbNzQ5XQogICAgICAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAogICAgICAgICAxLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAogICAgICAg
ICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAx
LAotICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAzLCAg
ICA0LCAgIDEyLAotICAgICAgIDEyLCAgIDI4LCAgIDI4LCAgICAzLCAgICA0LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotCi0gICAgICAgIDUsICAgIDUs
ICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsCi0gICAgICAg
IDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUs
Ci0gICAgICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAg
IDUsICAgIDUsCi0gICAgICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUs
ICAgIDUsICAgIDUsICAgIDUsCi0gICAgICAgIDUsICAgIDUsICAgMTMsICAgMTcsICAgMTksICAg
MjAsICAgMjAsICAgMjAsICAgMjAsICAgMjAsCi0gICAgICAgMjAsICAgMjAsICAgMzMsICAgNDIs
ICAgMjEsICAgMzQsICAgMzQsICAgMTksICAgMTcsICAgMjEsCi0gICAgICAgNDIsICAgMTMsICAg
MzUsICA0NjMsICAgMzUsICAgNDQsICAgMzMsICAgNDIsICAgMzUsICAgNDQsCi0gICAgICAgMjEs
ICAgMjIsICA0NTUsICAgMjIsICAgMjIsICAgMjIsICAgMjIsICAgMjIsICAgMjIsICAgMjIsCi0g
ICAgICAgMjMsICAgNTUsICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAgMjMs
ICAgMjIsCi0gICAgICAgMjYsICAgMzYsICAgNTEsICA0NTQsICAgMjIsICAgMzgsICAgNTEsICAg
MzgsICAgMjMsICAgMzcsCi0KLSAgICAgIDQ1MywgICAzNiwgICAyMiwgICAzNywgICAzNiwgICAz
OSwgICAzOCwgICAyNiwgICAzNywgICAyNiwKLSAgICAgICAyNiwgICAyMywgICA0MSwgICAzOSwg
ICAzNywgICAzOSwgICA0NSwgICA0NywgICAzOSwgICAyMiwKLSAgICAgICA0MSwgICA1NSwgIDEz
NSwgIDE0NiwgICAzOSwgIDE0NiwgICA0OSwgICA1MCwgIDExMiwgICA0NSwKLSAgICAgICA1MCwg
ICA0MSwgICA0NywgICA0OSwgICA0OSwgICA0NywgICA1MiwgIDEzNSwgICA1MCwgIDEyMiwKLSAg
ICAgICA1MiwgIDExMiwgIDQ1MiwgICA0OSwgICA0OSwgICA1MCwgICA0OSwgIDEyMiwgIDQ1MSwg
ICA1MiwKLSAgICAgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3
OCwgICA3OCwgICA3OCwKLSAgICAgICA3OCwgICA3OCwgICA3OCwgICA3OCwgIDQ1MCwgIDEyMCwg
ICA3NCwgIDE0MiwgIDEyMCwgIDEyMCwKLSAgICAgIDE2OCwgIDE2OCwgIDEyMCwgICA3OCwgIDEy
MCwgIDE0MiwgIDE5NCwgIDE5NCwgIDE5NCwgICA3NCwKLSAgICAgIDIxOCwgIDIxOCwgIDIxOCwg
IDQxNywgIDQxNywgICA3OSwgICA3OCwgICA3OSwgICA3OSwgICA3OSwKLSAgICAgICA3OSwgICA3
OSwgICA3OSwgICA3OSwgICA4MCwgIDQ0OCwgICA4MCwgICA4MCwgICA4MCwgICA4MCwKLQotICAg
ICAgIDgwLCAgIDgwLCAgIDgwLCAgIDc5LCAgMTU2LCAgMTU2LCAgMTU2LCAgMTU2LCAgMTU2LCAg
MTU2LAotICAgICAgMTU2LCAgNDQ2LCAgIDgwLCAgIDgxLCAgNDQ1LCAgIDgxLCAgIDc5LCAgNDQ0
LCAgIDgxLCAgIDgxLAotICAgICAgIDgxLCAgIDgxLCAgIDgxLCAgIDgxLCAgIDgxLCAgIDgwLCAg
IDgzLCAgMjE0LCAgIDgzLCAgIDgzLAotICAgICAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgz
LCAgMjE0LCAgMjI5LCAgMjI5LCAgMjI5LCAgNDQzLAotICAgICAgMTUyLCAgNDQyLCAgMTUyLCAg
NDQwLCAgIDgzLCAgMTUyLCAgMTUyLCAgMTUyLCAgMTUyLCAgMTUyLAotICAgICAgMTUyLCAgMTUy
LCAgMjM3LCAgMjM3LCAgMjM3LCAgNDM5LCAgNDM4LCAgIDgzLCAgMTU0LCAgMTU0LAotICAgICAg
MTU0LCAgMTU0LCAgMTU0LCAgMTU0LCAgMTU0LCAgMjQ1LCAgMjQ1LCAgMjQ1LCAgNDM3LCAgNDM2
LAotICAgICAgMTU1LCAgNDM1LCAgMTU1LCAgNDM0LCAgMTU0LCAgMTU1LCAgMTU1LCAgMTU1LCAg
MTU1LCAgMTU1LAotICAgICAgMTU1LCAgMTU1LCAgMjQ5LCAgMjQ5LCAgMjQ5LCAgNDMzLCAgNDMy
LCAgMTU0LCAgMTU3LCAgMTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAg
MjIyLCAgMjIyLCAgMjIyLCAgMjIyLCAgMjIyLAotCi0gICAgICAyMjIsICAyMjIsICAyMjMsICAy
MjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjQsCi0gICAgICAyMjQsICAyMjQs
ICAyMjQsICAyMjQsICAyMjQsICAyMjQsICAyMjUsICAyMjUsICAyMjUsICAyMjUsCi0gICAgICAy
MjUsICAyMjUsICAyMjUsICAyNTUsICAyNTUsICAyNTUsICAzODgsICAzODgsICAzODgsICA0MzAs
Ci0gICAgICA0MjksICA0MjgsICA0MjcsICA0MjYsICA0MjUsICA0MjQsICA0MjMsICA0MjIsICA0
MjEsICAzODgsCi0gICAgICA0MjAsICAzODgsICA0NTksICA0NTksICA0NTksICA0NTksICA0NjAs
ICA0NjAsICA0NjEsICA0NjEsCi0gICAgICA0NjIsICA0MTksICA0NjIsICA0NjIsICA0MTgsICA0
MTYsICA0MDcsICA0MDYsICA0MDUsICA0MDQsCi0gICAgICA0MDMsICA0MDIsICA0MDAsICAzOTks
ICAzOTgsICAzOTUsICAzOTQsICAzOTIsICAzODksICAzODcsCi0gICAgICAzODYsICAzODUsICAz
ODMsICAzODIsICAzODEsICAzNzgsICAzNzcsICAzNzYsICAzNzUsICAzNzQsCi0gICAgICAzNzMs
ICAzNzIsICAzNzEsICAzNjUsICAzNjIsICAzNTksICAzNTgsICAzNTcsICAzNTYsICAzNTUsCi0g
ICAgICAzNTMsICAzNTEsICAzNTAsICAzNDksICAzNDgsICAzNDYsICAzNDUsICAzNDMsICAzNDEs
ICAzNDAsCi0KLSAgICAgIDMzOSwgIDMzOCwgIDMzNywgIDMzNiwgIDMzNSwgIDMzNCwgIDMzMiwg
IDMzMSwgIDMzMCwgIDMyOSwKLSAgICAgIDMyOCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMy
MCwgIDMxOSwgIDMxNiwgIDMwNSwgIDMwMSwKLSAgICAgIDMwMCwgIDI5OSwgIDI5OCwgIDI5MSwg
IDI5MCwgIDI4OSwgIDI4NCwgIDI4MywgIDI4MiwgIDI4MSwKLSAgICAgIDI4MCwgIDI3OSwgIDI3
NiwgIDI3NSwgIDI3NCwgIDI3MywgIDI3MiwgIDI3MSwgIDI3MCwgIDI2OSwKLSAgICAgIDI2OCwg
IDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2MiwgIDI2MSwgIDI1NCwgIDI1MywKLSAg
ICAgIDI1MiwgIDI1MSwgIDI1MCwgIDI0OCwgIDI0NCwgIDI0MiwgIDI0MSwgIDI0MCwgIDIzNiwg
IDIzNSwKLSAgICAgIDIzNCwgIDIzMywgIDIzMiwgIDIzMSwgIDIyOCwgIDIyNiwgIDIyMSwgIDIy
MCwgIDIxOSwgIDIxNywKLSAgICAgIDIxNiwgIDIxNSwgIDIxMywgIDIxMiwgIDIxMSwgIDIxMCwg
IDIwOSwgIDIwOCwgIDIwNywgIDIwNiwKLSAgICAgIDIwNSwgIDIwNCwgIDIwMywgIDIwMiwgIDIw
MSwgIDIwMCwgIDE5OSwgIDE5OCwgIDE5NywgIDE5NiwKLSAgICAgIDE5NSwgIDE5MywgIDE5Miwg
IDE5MSwgIDE5MCwgIDE4OSwgIDE4OCwgIDE4NywgIDE4NiwgIDE4NSwKLQotICAgICAgMTg0LCAg
MTgzLCAgMTgyLCAgMTgxLCAgMTc5LCAgMTc4LCAgMTc3LCAgMTc2LCAgMTc1LCAgMTc0LAotICAg
ICAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY3LCAgMTY2LCAgMTY1LCAgMTY0LCAg
MTYzLAotICAgICAgMTYyLCAgMTQ3LCAgMTQ1LCAgMTQ0LCAgMTQzLCAgMTQxLCAgMTQwLCAgMTM5
LCAgMTM4LCAgMTM3LAotICAgICAgMTM2LCAgMTM0LCAgMTMzLCAgMTMyLCAgMTMxLCAgMTMwLCAg
MTI5LCAgMTI4LCAgMTI3LCAgMTI2LAotICAgICAgMTI1LCAgMTI0LCAgMTIzLCAgMTIxLCAgMTE4
LCAgMTE3LCAgMTE2LCAgMTE1LCAgMTE0LCAgMTEzLAotICAgICAgMTExLCAgMTEwLCAgMTA5LCAg
MTA4LCAgMTA3LCAgMTA2LCAgMTA1LCAgMTA0LCAgMTAzLCAgMTAyLAotICAgICAgMTAxLCAgMTAw
LCAgIDk5LCAgIDk4LCAgIDk3LCAgIDk2LCAgIDk1LCAgIDkxLCAgIDg3LCAgIDYwLAotICAgICAg
IDUzLCAgIDQ4LCAgIDQ2LCAgIDQzLCAgIDQwLCAgIDI3LCAgIDI0LCAgIDE2LCAgIDExLCAgICA3
LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LAotCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgs
Ci0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgKKyAg
ICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgOCwgICAgOCwg
ICAgOSwKKyAgICAgICAxMywgICAxNSwgICAxNiwgICAxNiwgICAxNiwgICAxNiwgICAxNiwgICAx
NiwgICAxNiwgICAyNCwKKyAgICAgICAyNCwgICAzMCwgICAzMCwgICA0MCwgICAxNSwgICAxMywg
ICA0NywgICA0MCwgICAgOSwgICAxOCwKKyAgICAgICA0NywgICAxOCwgICAxOCwgICAxOCwgICAx
OCwgICAxOCwgICAxOCwgICAxOCwgICAxOSwgICAyOSwKKworICAgICAgIDE5LCAgIDE5LCAgIDE5
LCAgIDE5LCAgIDE5LCAgIDE5LCAgIDE5LCAgIDE4LCAgIDIyLCAgIDMxLAorICAgICAgIDQxLCAg
IDMxLCAgIDE4LCAgIDI5LCAgNDQ0LCAgIDMxLCAgIDE5LCAgMTMzLCAgNDM5LCAgMTMzLAorICAg
ICAgIDE4LCAgIDMyLCAgIDM0LCAgIDQxLCAgIDM0LCAgIDIyLCAgIDMzLCAgIDIyLCAgIDIyLCAg
IDE5LAorICAgICAgIDMzLCAgIDMyLCAgIDM1LCAgIDM0LCAgIDMyLCAgIDMzLCAgIDM3LCAgIDE4
LCAgIDUxLCAgIDM4LAorICAgICAgIDM1LCAgIDMzLCAgIDM1LCAgIDQzLCAgIDM3LCAgIDM1LCAg
IDM4LCAgIDk5LCAgNDM4LCAgIDQ1LAorICAgICAgIDQ4LCAgIDM1LCAgNDM3LCAgIDM4LCAgIDQ4
LCAgIDM3LCAgIDQ1LCAgIDQ1LCAgIDQzLCAgIDQ2LAorICAgICAgIDk5LCAgIDQzLCAgIDQ2LCAg
IDQ4LCAgMTA5LCAgMTI5LCAgIDQ1LCAgIDQ1LCAgMTk4LCAgIDQ1LAorICAgICAgIDQ2LCAgNDM2
LCAgMTA5LCAgMTI5LCAgMTUyLCAgMTUyLCAgMTk4LCAgIDQ2LCAgIDUxLCAgIDY0LAorICAgICAg
IDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgIDY2LCAgIDY2LCAgIDY2LCAgIDY2
LAorICAgICAgIDY2LCAgIDY2LCAgIDY2LCAgNDM1LCAgMTA3LCAgIDY0LCAgMTIyLCAgMTA3LCAg
MTA3LCAgNDAxLAorCisgICAgICA0MDEsICAxMDcsICAgNjYsICAxMDcsICAxNzgsICAxNzgsICAx
NzgsICA0MzQsICAgNjQsICA0MzIsCisgICAgICA0MzAsICAxMjIsICA0MjksICA0MjgsICAgNjcs
ICAgNjYsICAgNjcsICAgNjcsICAgNjcsICAgNjcsCisgICAgICAgNjcsICAgNjcsICAgNjcsICAg
NjgsICA0MjcsICAgNjgsICAgNjgsICAgNjgsICAgNjgsICAgNjgsCisgICAgICAgNjgsICAgNjgs
ICAgNjcsICAxNDAsICAxNDAsICAxNDAsICAxNDAsICAxNDAsICAxNDAsICAxNDAsCisgICAgICA0
MjYsICAgNjgsICAgNjksICA0MjQsICAgNjksICAgNjcsICA0MjMsICAgNjksICAgNjksICAgNjks
CisgICAgICAgNjksICAgNjksICAgNjksICAgNjksICAgNjgsICAxMzcsICA0MjIsICAxMzcsICA0
MjEsICA0MjAsCisgICAgICAxMzcsICAxMzcsICAxMzcsICAxMzcsICAxMzcsICAxMzcsICAxMzcs
ICAxMzgsICAxMzgsICAxMzgsCisgICAgICAxMzgsICAxMzgsICAxMzgsICAxMzgsICAyMDIsICAy
MDIsICAyMDIsICA0MTksICA0MTgsICAxMzksCisgICAgICA0MTcsICAxMzksICA0MTYsICAxMzgs
ICAxMzksICAxMzksICAxMzksICAxMzksICAxMzksICAxMzksCisgICAgICAxMzksICAyMTMsICAy
MTMsICAyMTMsICA0MTQsICA0MTMsICAxMzgsICAxNDEsICAxNDEsICAxNDEsCisKKyAgICAgIDE0
MSwgIDE0MSwgIDE0MSwgIDE0MSwgIDIwNiwgIDIwNiwgIDIwNiwgIDIwNiwgIDIwNiwgIDIwNiwK
KyAgICAgIDIwNiwgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIw
OCwgIDIwOCwKKyAgICAgIDIwOCwgIDIwOCwgIDIwOCwgIDIwOCwgIDIwOCwgIDIwOSwgIDIwOSwg
IDIwOSwgIDIwOSwgIDIwOSwKKyAgICAgIDIwOSwgIDIwOSwgIDIyMSwgIDIyMSwgIDIyMSwgIDIy
OSwgIDIyOSwgIDIyOSwgIDIzMywgIDIzMywKKyAgICAgIDIzMywgIDIzOSwgIDIzOSwgIDIzOSwg
IDM3MiwgIDM3MiwgIDM3MiwgIDQxMiwgIDQxMSwgIDQxMCwKKyAgICAgIDQwOSwgIDQwOCwgIDQw
NywgIDQwNiwgIDQwNSwgIDQwNCwgIDQwMywgIDM3MiwgIDQwMiwgIDM3MiwKKyAgICAgIDQ0Mywg
IDQ0MywgIDQwMCwgIDM5MSwgIDM5MCwgIDM4OSwgIDM4OCwgIDM4NywgIDM4NiwgIDM4NCwKKyAg
ICAgIDM4MywgIDM4MiwgIDM3OSwgIDM3OCwgIDM3NiwgIDM3MywgIDM3MSwgIDM3MCwgIDM2OSwg
IDM2NywKKyAgICAgIDM2NiwgIDM2NSwgIDM2MiwgIDM2MSwgIDM2MCwgIDM1OSwgIDM1OCwgIDM1
NywgIDM1NiwgIDM1NSwKKyAgICAgIDM0OSwgIDM0NiwgIDM0MywgIDM0MiwgIDM0MSwgIDM0MCwg
IDMzOSwgIDMzNywgIDMzNSwgIDMzNCwKKworICAgICAgMzMzLCAgMzMyLCAgMzMwLCAgMzI5LCAg
MzI3LCAgMzI1LCAgMzI0LCAgMzIzLCAgMzIyLCAgMzIxLAorICAgICAgMzIwLCAgMzE5LCAgMzE4
LCAgMzE2LCAgMzE1LCAgMzE0LCAgMzEzLCAgMzEyLCAgMzExLCAgMzEwLAorICAgICAgMzA5LCAg
MzA4LCAgMzA0LCAgMzAzLCAgMzAwLCAgMjg5LCAgMjg1LCAgMjg0LCAgMjgzLCAgMjgyLAorICAg
ICAgMjc1LCAgMjc0LCAgMjczLCAgMjY4LCAgMjY3LCAgMjY2LCAgMjY1LCAgMjY0LCAgMjYzLCAg
MjYwLAorICAgICAgMjU5LCAgMjU4LCAgMjU3LCAgMjU2LCAgMjU1LCAgMjU0LCAgMjUzLCAgMjUy
LCAgMjUxLCAgMjUwLAorICAgICAgMjQ5LCAgMjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAgMjM4LCAg
MjM3LCAgMjM2LCAgMjM1LCAgMjM0LAorICAgICAgMjMyLCAgMjI4LCAgMjI2LCAgMjI1LCAgMjI0
LCAgMjIwLCAgMjE5LCAgMjE4LCAgMjE3LCAgMjE2LAorICAgICAgMjE1LCAgMjEyLCAgMjEwLCAg
MjA1LCAgMjA0LCAgMjAzLCAgMjAxLCAgMjAwLCAgMTk5LCAgMTk3LAorICAgICAgMTk2LCAgMTk1
LCAgMTk0LCAgMTkzLCAgMTkyLCAgMTkxLCAgMTkwLCAgMTg5LCAgMTg4LCAgMTg3LAorICAgICAg
MTg2LCAgMTg1LCAgMTg0LCAgMTgzLCAgMTgyLCAgMTgxLCAgMTgwLCAgMTc5LCAgMTc3LCAgMTc2
LAorCisgICAgICAxNzUsICAxNzQsICAxNzMsICAxNzIsICAxNzEsICAxNzAsICAxNjksICAxNjgs
ICAxNjcsICAxNjYsCisgICAgICAxNjUsICAxNjMsICAxNjIsICAxNjEsICAxNjAsICAxNTksICAx
NTgsICAxNTcsICAxNTYsICAxNTUsCisgICAgICAxNTQsICAxNTMsICAxNTEsICAxNTAsICAxNDks
ICAxNDgsICAxNDcsICAxNDYsICAxMzQsICAxMzIsCisgICAgICAxMzEsICAxMzAsICAxMjgsICAx
MjcsICAxMjYsICAxMjUsICAxMjQsICAxMjMsICAxMjEsICAxMjAsCisgICAgICAxMTksICAxMTgs
ICAxMTcsICAxMTYsICAxMTUsICAxMTQsICAxMTMsICAxMTIsICAxMTEsICAxMTAsCisgICAgICAx
MDgsICAxMDUsICAxMDQsICAxMDMsICAxMDIsICAxMDEsICAxMDAsICAgOTgsICAgOTcsICAgOTYs
CisgICAgICAgOTUsICAgOTQsICAgOTMsICAgOTIsICAgOTEsICAgOTAsICAgODksICAgODgsICAg
ODcsICAgODYsCisgICAgICAgODUsICAgODQsICAgODMsICAgODIsICAgNzgsICAgNzQsICAgNDks
ICAgNDQsICAgNDIsICAgMzksCisgICAgICAgMzYsICAgMjMsICAgMjAsICAgMTcsICAgMTIsICAg
IDcsICAgIDMsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisKKyAgICAgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwK
KyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MgogICAgIH0gOwogCiAvKiBUYWJsZSBvZiBib29sZWFucywgdHJ1ZSBpZiBydWxlIGNvdWxk
IG1hdGNoIGVvbC4gKi8KLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9ydWxlX2Nhbl9t
YXRjaF9lb2xbMTU2XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfcnVsZV9jYW5f
bWF0Y2hfZW9sWzE0OF0gPQogICAgIHsgICAwLAotMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAgICAgfTsKKyAgICAwLCAwLCAwLCAwLCAwLCAxLCAw
LCAwLCAgICAgfTsKIAogLyogVGhlIGludGVudCBiZWhpbmQgdGhpcyBkZWZpbml0aW9uIGlzIHRo
YXQgaXQnbGwgY2F0Y2gKICAqIGFueSB1c2VzIG9mIFJFSkVDVCB3aGljaCBmbGV4IG1pc3NlZC4K
QEAgLTgxNyw3ICs3OTIsMTAgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIExFWEVSIChn
bHNsYQogI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MTAyKQogI2VuZGlmCiAKLSNkZWZpbmUg
WVlfVVNFUl9BQ1RJT04geXlsdmFsLT5sZXgubGluZSA9IHl5bGluZW5vOworI2RlZmluZSBZWV9V
U0VSX0FDVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB5eWxsb2Mt
PmZpcnN0X2ZpbGUgPSB5eWxsb2MtPmxhc3RfZmlsZSA9IHl5Y29sdW1uOyBcCisgICAgeXlsbG9j
LT5maXJzdF9saW5lID0geXlsbG9jLT5sYXN0X2xpbmUgPSB5eWxpbmVubzsKKwogI2RlZmluZSBZ
WV9JTlBVVChidWYsIHJlc3VsdCwgbWF4X3NpemUpIFwKICAgICByZXN1bHQgPSBzdHJpbmdfaW5w
dXQoYnVmLCBtYXhfc2l6ZSwgeXlzY2FubmVyKTsKIApAQCAtODI2LDggKzgwNCw2IEBAIHN0YXRp
YyBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIKIHN0YXRpYyBpbnQgcmVzZXJ2ZWRf
d29yZCh5eXNjYW5fdCB5eXNjYW5uZXIpOwogCiAjZGVmaW5lIElOSVRJQUwgMAotI2RlZmluZSBD
T01NRU5UIDEKLSNkZWZpbmUgRklFTERTIDIKIAogI2RlZmluZSBZWV9FWFRSQV9UWVBFIFRQYXJz
ZUNvbnRleHQqCiAKQEAgLTg2NSw2ICs4NDEsOCBAQCBzdHJ1Y3QgeXlndXRzX3QKIAogICAgIFlZ
U1RZUEUgKiB5eWx2YWxfcjsKIAorICAgIFlZTFRZUEUgKiB5eWxsb2NfcjsKKwogICAgIH07IC8q
IGVuZCBzdHJ1Y3QgeXlndXRzX3QgKi8KIAogc3RhdGljIGludCB5eV9pbml0X2dsb2JhbHMgKHl5
c2Nhbl90IHl5c2Nhbm5lciApOwpAQCAtODczLDYgKzg1MSw4IEBAIHN0YXRpYyBpbnQgeXlfaW5p
dF9nbG9iYWxzICh5eXNjYW5fdCB5eXMKICAgICAgKiBmcm9tIGJpc29uIG91dHB1dCBpbiBzZWN0
aW9uIDEuKi8KICAgICAjICAgIGRlZmluZSB5eWx2YWwgeXlnLT55eWx2YWxfcgogICAgIAorICAg
ICMgICAgZGVmaW5lIHl5bGxvYyB5eWctPnl5bGxvY19yCisgICAgCiBpbnQgeXlsZXhfaW5pdCAo
eXlzY2FuX3QqIHNjYW5uZXIpOwogCiBpbnQgeXlsZXhfaW5pdF9leHRyYSAoWVlfRVhUUkFfVFlQ
RSB1c2VyX2RlZmluZWQseXlzY2FuX3QqIHNjYW5uZXIpOwpAQCAtOTEwLDYgKzg5MCwxMCBAQCBZ
WVNUWVBFICogeXlnZXRfbHZhbCAoeXlzY2FuX3QgeXlzY2FubmVyCiAKIHZvaWQgeXlzZXRfbHZh
bCAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyICk7CiAKKyAgICAg
ICBZWUxUWVBFICp5eWdldF9sbG9jICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAgICAKKyAgICAg
ICAgdm9pZCB5eXNldF9sbG9jIChZWUxUWVBFICogeXlsbG9jX3BhcmFtICx5eXNjYW5fdCB5eXNj
YW5uZXIgKTsKKyAgICAKIC8qIE1hY3JvcyBhZnRlciB0aGlzIHBvaW50IGNhbiBhbGwgYmUgb3Zl
cnJpZGRlbiBieSB1c2VyIGRlZmluaXRpb25zIGluCiAgKiBzZWN0aW9uIDEuCiAgKi8KQEAgLTk0
MCwxMiArOTI0LDYgQEAgc3RhdGljIGludCBpbnB1dCAoeXlzY2FuX3QgeXlzY2FubmVyICk7CiAK
ICNlbmRpZgogCi0gICAgc3RhdGljIHZvaWQgeXlfcHVzaF9zdGF0ZSAoaW50IG5ld19zdGF0ZSAs
eXlzY2FuX3QgeXlzY2FubmVyKTsKLSAgICAKLSAgICBzdGF0aWMgdm9pZCB5eV9wb3Bfc3RhdGUg
KHl5c2Nhbl90IHl5c2Nhbm5lciApOwotICAgIAotICAgIHN0YXRpYyBpbnQgeXlfdG9wX3N0YXRl
ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKLSAgICAKIC8qIEFtb3VudCBvZiBzdHVmZiB0byBzbHVy
cCB1cCB3aXRoIGVhY2ggcmVhZC4gKi8KICNpZm5kZWYgWVlfUkVBRF9CVUZfU0laRQogI2RlZmlu
ZSBZWV9SRUFEX0JVRl9TSVpFIDgxOTIKQEAgLTEwMjIsMTAgKzEwMDAsMTAgQEAgc3RhdGljIGlu
dCBpbnB1dCAoeXlzY2FuX3QgeXlzY2FubmVyICk7CiAjZGVmaW5lIFlZX0RFQ0xfSVNfT1VSUyAx
CiAKIGV4dGVybiBpbnQgeXlsZXggXAotICAgICAgICAgICAgICAgKFlZU1RZUEUgKiB5eWx2YWxf
cGFyYW0gLHl5c2Nhbl90IHl5c2Nhbm5lcik7CisgICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5
bHZhbF9wYXJhbSxZWUxUWVBFICogeXlsbG9jX3BhcmFtICx5eXNjYW5fdCB5eXNjYW5uZXIpOwog
CiAjZGVmaW5lIFlZX0RFQ0wgaW50IHl5bGV4IFwKLSAgICAgICAgICAgICAgIChZWVNUWVBFICog
eXlsdmFsX3BhcmFtICwgeXlzY2FuX3QgeXlzY2FubmVyKQorICAgICAgICAgICAgICAgKFlZU1RZ
UEUgKiB5eWx2YWxfcGFyYW0sIFlZTFRZUEUgKiB5eWxsb2NfcGFyYW0gLCB5eXNjYW5fdCB5eXNj
YW5uZXIpCiAjZW5kaWYgLyogIVlZX0RFQ0wgKi8KIAogLyogQ29kZSBleGVjdXRlZCBhdCB0aGUg
YmVnaW5uaW5nIG9mIGVhY2ggcnVsZSwgYWZ0ZXIgeXl0ZXh0IGFuZCB5eWxlbmcKQEAgLTEwNTIs
MTIgKzEwMzAsMTAgQEAgWVlfREVDTAogCXJlZ2lzdGVyIGludCB5eV9hY3Q7CiAgICAgc3RydWN0
IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOwogCi0gICAgVFBh
cnNlQ29udGV4dCogY29udGV4dCA9IHl5ZXh0cmE7Ci0KLSAgICAvKiBTaW5nbGUtbGluZSBjb21t
ZW50cyAqLwotCiAgICAgeXlsdmFsID0geXlsdmFsX3BhcmFtOwogCisgICAgeXlsbG9jID0geXls
bG9jX3BhcmFtOworCiAJaWYgKCAheXlnLT55eV9pbml0ICkKIAkJewogCQl5eWctPnl5X2luaXQg
PSAxOwpAQCAtMTEwOSwxMyArMTA4NSwxMyBAQCB5eV9tYXRjaDoKIAkJCXdoaWxlICggeXlfY2hr
W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkK
IAkJCQl7CiAJCQkJeXlfY3VycmVudF9zdGF0ZSA9IChpbnQpIHl5X2RlZlt5eV9jdXJyZW50X3N0
YXRlXTsKLQkJCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gNDU5ICkKKwkJCQlpZiAoIHl5X2N1
cnJlbnRfc3RhdGUgPj0gNDQzICkKIAkJCQkJeXlfYyA9IHl5X21ldGFbKHVuc2lnbmVkIGludCkg
eXlfY107CiAJCQkJfQogCQkJeXlfY3VycmVudF9zdGF0ZSA9IHl5X254dFt5eV9iYXNlW3l5X2N1
cnJlbnRfc3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlfY107CiAJCQkrK3l5X2NwOwogCQkJfQot
CQl3aGlsZSAoIHl5X2N1cnJlbnRfc3RhdGUgIT0gNDU4ICk7CisJCXdoaWxlICggeXlfY3VycmVu
dF9zdGF0ZSAhPSA0NDIgKTsKIAkJeXlfY3AgPSB5eWctPnl5X2xhc3RfYWNjZXB0aW5nX2Nwb3M7
CiAJCXl5X2N1cnJlbnRfc3RhdGUgPSB5eWctPnl5X2xhc3RfYWNjZXB0aW5nX3N0YXRlOwogCkBA
IC0xMTQ5LDE5OCArMTEyNSwxOTkgQEAgZG9fYWN0aW9uOgkvKiBUaGlzIGxhYmVsIGlzIHVzZWQg
b25seSB0bwogCiBjYXNlIDE6CiBZWV9SVUxFX1NFVFVQCi07Cit7IHJldHVybiBJTlZBUklBTlQ7
IH0KIAlZWV9CUkVBSwotLyogTXVsdGktbGluZSBjb21tZW50cyAqLwogY2FzZSAyOgogWVlfUlVM
RV9TRVRVUAoteyB5eV9wdXNoX3N0YXRlKENPTU1FTlQsIHl5c2Nhbm5lcik7IH0KK3sgcmV0dXJu
IEhJR0hfUFJFQ0lTSU9OOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzoKK1lZX1JVTEVfU0VUVVAKK3sg
cmV0dXJuIE1FRElVTV9QUkVDSVNJT047IH0KKwlZWV9CUkVBSwogY2FzZSA0OgotLyogcnVsZSA0
IGNhbiBtYXRjaCBlb2wgKi8KIFlZX1JVTEVfU0VUVVAKLTsKK3sgcmV0dXJuIExPV19QUkVDSVNJ
T047IH0KIAlZWV9CUkVBSwogY2FzZSA1OgogWVlfUlVMRV9TRVRVUAoteyB5eV9wb3Bfc3RhdGUo
eXlzY2FubmVyKTsgfQoreyByZXR1cm4gUFJFQ0lTSU9OOyB9CiAJWVlfQlJFQUsKIGNhc2UgNjoK
IFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKElOVkFSSUFOVCk7IH0KK3sgcmV0dXJuIEFUVFJJQlVU
RTsgfQogCVlZX0JSRUFLCiBjYXNlIDc6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihISUdIX1BS
RUNJU0lPTik7IH0KK3sgcmV0dXJuIENPTlNUX1FVQUw7IH0KIAlZWV9CUkVBSwogY2FzZSA4Ogog
WVlfUlVMRV9TRVRVUAoteyByZXR1cm4oTUVESVVNX1BSRUNJU0lPTik7IH0KK3sgcmV0dXJuIFVO
SUZPUk07IH0KIAlZWV9CUkVBSwogY2FzZSA5OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oTE9X
X1BSRUNJU0lPTik7IH0KK3sgcmV0dXJuIFZBUllJTkc7IH0KIAlZWV9CUkVBSwogY2FzZSAxMDoK
IFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFBSRUNJU0lPTik7IH0KK3sgcmV0dXJuIEJSRUFLOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTE6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihBVFRSSUJVVEUp
OyB9Cit7IHJldHVybiBDT05USU5VRTsgfQogCVlZX0JSRUFLCiBjYXNlIDEyOgogWVlfUlVMRV9T
RVRVUAoteyByZXR1cm4oQ09OU1RfUVVBTCk7IH0KK3sgcmV0dXJuIERPOyB9CiAJWVlfQlJFQUsK
IGNhc2UgMTM6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihVTklGT1JNKTsgfQoreyByZXR1cm4g
Rk9SOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQ6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihWQVJZ
SU5HKTsgfQoreyByZXR1cm4gV0hJTEU7IH0KIAlZWV9CUkVBSwogY2FzZSAxNToKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKEJSRUFLKTsgfQoreyByZXR1cm4gSUY7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxNjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKENPTlRJTlVFKTsgfQoreyByZXR1cm4gRUxT
RTsgfQogCVlZX0JSRUFLCiBjYXNlIDE3OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oRE8pOyB9
Cit7IHJldHVybiBJTl9RVUFMOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTg6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybihGT1IpOyB9Cit7IHJldHVybiBPVVRfUVVBTDsgfQogCVlZX0JSRUFLCiBjYXNl
IDE5OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oV0hJTEUpOyB9Cit7IHJldHVybiBJTk9VVF9R
VUFMOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjA6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihJRik7
IH0KK3sgcmV0dXJuIEZMT0FUX1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAyMToKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKEVMU0UpOyB9Cit7IHJldHVybiBJTlRfVFlQRTsgfQogCVlZX0JSRUFL
CiBjYXNlIDIyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSU5fUVVBTCk7IH0KK3sgcmV0dXJu
IFZPSURfVFlQRTsgfQogCVlZX0JSRUFLCiBjYXNlIDIzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1
cm4oT1VUX1FVQUwpOyB9Cit7IHJldHVybiBCT09MX1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAy
NDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKElOT1VUX1FVQUwpOyB9Cit7IHl5bHZhbC0+bGV4
LmIgPSB0cnVlOyAgcmV0dXJuIEJPT0xDT05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDI1Ogog
WVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oRkxP
QVRfVFlQRSk7IH0KK3sgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyByZXR1cm4gQk9PTENPTlNUQU5U
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMjY6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFm
dGVyVHlwZSA9IHRydWU7IHJldHVybihJTlRfVFlQRSk7IH0KK3sgcmV0dXJuIERJU0NBUkQ7IH0K
IAlZWV9CUkVBSwogY2FzZSAyNzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuKFZPSURfVFlQRSk7IH0KK3sgcmV0dXJuIFJFVFVSTjsgfQogCVlZ
X0JSRUFLCiBjYXNlIDI4OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4oQk9PTF9UWVBFKTsgfQoreyByZXR1cm4gTUFUUklYMjsgfQogCVlZX0JS
RUFLCiBjYXNlIDI5OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5iID0gdHJ1ZTsgIHJl
dHVybihCT09MQ09OU1RBTlQpOyB9Cit7IHJldHVybiBNQVRSSVgzOyB9CiAJWVlfQlJFQUsKIGNh
c2UgMzA6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmIgPSBmYWxzZTsgcmV0dXJuKEJP
T0xDT05TVEFOVCk7IH0KK3sgcmV0dXJuIE1BVFJJWDQ7IH0KIAlZWV9CUkVBSwogY2FzZSAzMToK
IFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKERJU0NBUkQpOyB9Cit7IHJldHVybiBWRUMyOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMzI6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihSRVRVUk4pOyB9Cit7
IHJldHVybiBWRUMzOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzM6CiBZWV9SVUxFX1NFVFVQCi17IGNv
bnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVgyKTsgfQoreyByZXR1cm4g
VkVDNDsgfQogCVlZX0JSRUFLCiBjYXNlIDM0OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5s
ZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMyk7IH0KK3sgcmV0dXJuIElWRUMyOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMzU6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVy
VHlwZSA9IHRydWU7IHJldHVybihNQVRSSVg0KTsgfQoreyByZXR1cm4gSVZFQzM7IH0KIAlZWV9C
UkVBSwogY2FzZSAzNjoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
dHJ1ZTsgcmV0dXJuIChWRUMyKTsgfQoreyByZXR1cm4gSVZFQzQ7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAzNzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuIChWRUMzKTsgfQoreyByZXR1cm4gQlZFQzI7IH0KIAlZWV9CUkVBSwogY2FzZSAzODoKIFlZ
X1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChWRUM0
KTsgfQoreyByZXR1cm4gQlZFQzM7IH0KIAlZWV9CUkVBSwogY2FzZSAzOToKIFlZX1JVTEVfU0VU
VVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMik7IH0KK3sg
cmV0dXJuIEJWRUM0OyB9CiAJWVlfQlJFQUsKIGNhc2UgNDA6CiBZWV9SVUxFX1NFVFVQCi17IGNv
bnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzMpOyB9Cit7IHJldHVybiBT
QU1QTEVSMkQ7IH0KIAlZWV9CUkVBSwogY2FzZSA0MToKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDNCk7IH0KK3sgcmV0dXJuIFNBTVBM
RVJDVUJFOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDI6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoQlZFQzIpOyB9Cit7IHJldHVybiBTQU1QTEVS
X0VYVEVSTkFMX09FUzsgfQogCVlZX0JSRUFLCiBjYXNlIDQzOgogWVlfUlVMRV9TRVRVUAoteyBj
b250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKEJWRUMzKTsgfQoreyByZXR1cm4g
U0FNUExFUjJEUkVDVDsgfQogCVlZX0JSRUFLCiBjYXNlIDQ0OgogWVlfUlVMRV9TRVRVUAoteyBj
b250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKEJWRUM0KTsgfQoreyByZXR1cm4g
U1RSVUNUOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDU6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSMkQ7IH0KK3sgcmV0dXJuIHJlc2Vy
dmVkX3dvcmQoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDQ2OgogWVlfUlVMRV9TRVRV
UAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUkNVQkU7IH0K
K3sgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDQ3
OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4g
U0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KK3sgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVy
KTsgfQogCVlZX0JSRUFLCiBjYXNlIDQ4OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEUkVDVDsgfQoreyByZXR1cm4gcmVzZXJ2
ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDk6CiBZWV9SVUxFX1NFVFVQ
Ci17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihTVFJVQ1QpOyB9Cit7IHJl
dHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA1MDoKIFlZ
X1JVTEVfU0VUVVAKQEAgLTE1MTYsMjY2ICsxNDkzLDIyOCBAQCBZWV9SVUxFX1NFVFVQCiAJWVlf
QlJFQUsKIGNhc2UgOTM6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5
c2Nhbm5lcik7IH0KK3sKKyAgIHl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5nKHl5
dGV4dCk7IAorICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKK30KIAlZWV9CUkVBSwog
Y2FzZSA5NDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVy
KTsgfQoreyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAw
LCAwKSk7IHJldHVybiBJTlRDT05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDk1OgogWVlfUlVM
RV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7IHl5bHZhbC0+
bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElO
VENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgOTY6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
biByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KK3sgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19j
YXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0KIAlZ
WV9CUkVBSwogY2FzZSA5NzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIHJlc2VydmVkX3dvcmQo
eXlzY2FubmVyKTsgfQoreyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2Zf
ZG90KHl5dGV4dCkpOyByZXR1cm4gRkxPQVRDT05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDk4
OgogWVlfUlVMRV9TRVRVUAotewotICAgeXlsdmFsLT5sZXguc3RyaW5nID0gTmV3UG9vbFRTdHJp
bmcoeXl0ZXh0KTsgCi0gICByZXR1cm4gY2hlY2tfdHlwZSh5eXNjYW5uZXIpOwotfQoreyB5eWx2
YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4g
RkxPQVRDT05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDk5OgogWVlfUlVMRV9TRVRVUAoteyB5
eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJl
dHVybihJTlRDT05TVEFOVCk7IH0KK3sgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0
PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwog
Y2FzZSAxMDA6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxp
bnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQoreyByZXR1
cm4gQUREX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEwMToKIFlZX1JVTEVfU0VUVVAKLXsg
Y29udGV4dC0+ZXJyb3IoeXlsaW5lbm8sICJJbnZhbGlkIE9jdGFsIG51bWJlci4iLCB5eXRleHQp
OyBjb250ZXh0LT5yZWNvdmVyKCk7IHJldHVybiAwO30KK3sgcmV0dXJuIFNVQl9BU1NJR047IH0K
IAlZWV9CUkVBSwogY2FzZSAxMDI6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmkgPSBz
dGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5U
KTsgfQoreyByZXR1cm4gTVVMX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEwMzoKIFlZX1JV
TEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5
eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Cit7IHJldHVybiBESVZfQVNTSUdOOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTA0OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5mID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4oRkxPQVRDT05TVEFO
VCk7IH0KK3sgcmV0dXJuIE1PRF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDU6CiBZWV9S
VUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3Qo
eXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQoreyByZXR1cm4gTEVGVF9BU1NJR047
IH0KIAlZWV9CUkVBSwogY2FzZSAxMDY6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oQUREX0FT
U0lHTik7IH0KK3sgcmV0dXJuIFJJR0hUX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEwNzoK
IFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihTVUJfQVNTSUdOKTsgfQoreyByZXR1cm4gQU5EX0FT
U0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEwODoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihN
VUxfQVNTSUdOKTsgfQoreyByZXR1cm4gWE9SX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEw
OToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihESVZfQVNTSUdOKTsgfQoreyByZXR1cm4gT1Jf
QVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTEwOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJu
KE1PRF9BU1NJR04pOyB9Cit7IHJldHVybiBJTkNfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTE6
CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTEVGVF9BU1NJR04pOyB9Cit7IHJldHVybiBERUNf
T1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTI6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oUklH
SFRfQVNTSUdOKTsgfQoreyByZXR1cm4gQU5EX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTEzOgog
WVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEFORF9BU1NJR04pOyB9Cit7IHJldHVybiBPUl9PUDsg
fQogCVlZX0JSRUFLCiBjYXNlIDExNDoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihYT1JfQVNT
SUdOKTsgfQoreyByZXR1cm4gWE9SX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTE1OgogWVlfUlVM
RV9TRVRVUAoteyAgcmV0dXJuKE9SX0FTU0lHTik7IH0KK3sgcmV0dXJuIExFX09QOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMTE2OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKElOQ19PUCk7IH0KK3sg
cmV0dXJuIEdFX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTE3OgogWVlfUlVMRV9TRVRVUAoteyAg
cmV0dXJuKERFQ19PUCk7IH0KK3sgcmV0dXJuIEVRX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTE4
OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEFORF9PUCk7IH0KK3sgcmV0dXJuIE5FX09QOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTE5OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKE9SX09QKTsg
fQoreyByZXR1cm4gTEVGVF9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDEyMDoKIFlZX1JVTEVfU0VU
VVAKLXsgIHJldHVybihYT1JfT1ApOyB9Cit7IHJldHVybiBSSUdIVF9PUDsgfQogCVlZX0JSRUFL
CiBjYXNlIDEyMToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihMRV9PUCk7IH0KK3sgcmV0dXJu
IFNFTUlDT0xPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEyMjoKIFlZX1JVTEVfU0VUVVAKLXsgIHJl
dHVybihHRV9PUCk7IH0KK3sgcmV0dXJuIExFRlRfQlJBQ0U7IH0KIAlZWV9CUkVBSwogY2FzZSAx
MjM6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oRVFfT1ApOyB9Cit7IHJldHVybiBSSUdIVF9C
UkFDRTsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNDoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihO
RV9PUCk7IH0KK3sgcmV0dXJuIENPTU1BOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI1OgogWVlfUlVM
RV9TRVRVUAoteyAgcmV0dXJuKExFRlRfT1ApOyB9Cit7IHJldHVybiBDT0xPTjsgfQogCVlZX0JS
RUFLCiBjYXNlIDEyNjoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihSSUdIVF9PUCk7IH0KK3sg
cmV0dXJuIEVRVUFMOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI3OgogWVlfUlVMRV9TRVRVUAoteyBj
b250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJuKFNFTUlDT0xPTik7IH0KK3sgcmV0
dXJuIExFRlRfUEFSRU47IH0KIAlZWV9CUkVBSwogY2FzZSAxMjg6CiBZWV9SVUxFX1NFVFVQCi17
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oTEVGVF9CUkFDRSk7IH0KK3sg
cmV0dXJuIFJJR0hUX1BBUkVOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI5OgogWVlfUlVMRV9TRVRV
UAoteyByZXR1cm4oUklHSFRfQlJBQ0UpOyB9Cit7IHJldHVybiBMRUZUX0JSQUNLRVQ7IH0KIAlZ
WV9CUkVBSwogY2FzZSAxMzA6CiBZWV9SVUxFX1NFVFVQCi17IGlmIChjb250ZXh0LT5pblR5cGVQ
YXJlbikgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihDT01NQSk7IH0KK3sg
cmV0dXJuIFJJR0hUX0JSQUNLRVQ7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzE6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybihDT0xPTik7IH0KK3sgcmV0dXJuIERPVDsgfQogCVlZX0JSRUFLCiBjYXNl
IDEzMjoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJl
dHVybihFUVVBTCk7IH0KK3sgcmV0dXJuIEJBTkc7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzM6CiBZ
WV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyBjb250ZXh0LT5p
blR5cGVQYXJlbiA9IHRydWU7IHJldHVybihMRUZUX1BBUkVOKTsgfQoreyByZXR1cm4gREFTSDsg
fQogCVlZX0JSRUFLCiBjYXNlIDEzNDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+aW5UeXBl
UGFyZW4gPSBmYWxzZTsgcmV0dXJuKFJJR0hUX1BBUkVOKTsgfQoreyByZXR1cm4gVElMREU7IH0K
IAlZWV9CUkVBSwogY2FzZSAxMzU6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihMRUZUX0JSQUNL
RVQpOyB9Cit7IHJldHVybiBQTFVTOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM2OgogWVlfUlVMRV9T
RVRVUAoteyByZXR1cm4oUklHSFRfQlJBQ0tFVCk7IH0KK3sgcmV0dXJuIFNUQVI7IH0KIAlZWV9C
UkVBSwogY2FzZSAxMzc6CiBZWV9SVUxFX1NFVFVQCi17IEJFR0lOKEZJRUxEUyk7ICByZXR1cm4o
RE9UKTsgfQoreyByZXR1cm4gU0xBU0g7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzg6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybihCQU5HKTsgfQoreyByZXR1cm4gUEVSQ0VOVDsgfQogCVlZX0JSRUFL
CiBjYXNlIDEzOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKERBU0gpOyB9Cit7IHJldHVybiBM
RUZUX0FOR0xFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1
cm4oVElMREUpOyB9Cit7IHJldHVybiBSSUdIVF9BTkdMRTsgfQogCVlZX0JSRUFLCiBjYXNlIDE0
MToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFBMVVMpOyB9Cit7IHJldHVybiBWRVJUSUNBTF9C
QVI7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDI6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihTVEFS
KTsgfQoreyByZXR1cm4gQ0FSRVQ7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDM6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybihTTEFTSCk7IH0KK3sgcmV0dXJuIEFNUEVSU0FORDsgfQogCVlZX0JSRUFL
CiBjYXNlIDE0NDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFBFUkNFTlQpOyB9Cit7IHJldHVy
biBRVUVTVElPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDE0NToKKy8qIHJ1bGUgMTQ1IGNhbiBtYXRj
aCBlb2wgKi8KIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKExFRlRfQU5HTEUpOyB9Ci0JWVlfQlJF
QUsKLWNhc2UgMTQ2OgotWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUklHSFRfQU5HTEUpOyB9Ci0J
WVlfQlJFQUsKLWNhc2UgMTQ3OgotWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oVkVSVElDQUxfQkFS
KTsgfQotCVlZX0JSRUFLCi1jYXNlIDE0ODoKLVlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKENBUkVU
KTsgfQotCVlZX0JSRUFLCi1jYXNlIDE0OToKLVlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKEFNUEVS
U0FORCk7IH0KLQlZWV9CUkVBSwotY2FzZSAxNTA6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihR
VUVTVElPTik7IH0KLQlZWV9CUkVBSwotY2FzZSAxNTE6Ci1ZWV9SVUxFX1NFVFVQCi17IAotICAg
IEJFR0lOKElOSVRJQUwpOwotICAgIHl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5n
KHl5dGV4dCk7IAotICAgIHJldHVybiBGSUVMRF9TRUxFQ1RJT047Ci19Ci0JWVlfQlJFQUsKLWNh
c2UgMTUyOgotWVlfUlVMRV9TRVRVUAote30KLQlZWV9CUkVBSwotY2FzZSAxNTM6Ci0vKiBydWxl
IDE1MyBjYW4gbWF0Y2ggZW9sICovCi1ZWV9SVUxFX1NFVFVQCi17ICB9Cit7IH0KIAlZWV9CUkVB
SwogY2FzZSBZWV9TVEFURV9FT0YoSU5JVElBTCk6Ci1jYXNlIFlZX1NUQVRFX0VPRihDT01NRU5U
KToKLWNhc2UgWVlfU1RBVEVfRU9GKEZJRUxEUyk6Ci17IGNvbnRleHQtPkFmdGVyRU9GID0gdHJ1
ZTsgeXl0ZXJtaW5hdGUoKTsgfQoreyB5eXRlcm1pbmF0ZSgpOyB9CiAJWVlfQlJFQUsKLWNhc2Ug
MTU0OgorY2FzZSAxNDY6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPndhcm5pbmcoeXlsaW5l
bm8sICJVbmtub3duIGNoYXIiLCB5eXRleHQsICIiKTsgcmV0dXJuIDA7IH0KK3sgYXNzZXJ0KGZh
bHNlKTsgcmV0dXJuIDA7IH0KIAlZWV9CUkVBSwotY2FzZSAxNTU6CitjYXNlIDE0NzoKIFlZX1JV
TEVfU0VUVVAKIEVDSE87CiAJWVlfQlJFQUsKQEAgLTIwNzEsNyArMjAxMCw3IEBAIHN0YXRpYyBp
bnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdAogCQl3aGlsZSAoIHl5X2Noa1t5eV9iYXNl
W3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQl7CiAJ
CQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJ
aWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ1OSApCisJCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUg
Pj0gNDQzICkKIAkJCQl5eV9jID0geXlfbWV0YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJCX0K
IAkJeXlfY3VycmVudF9zdGF0ZSA9IHl5X254dFt5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsg
KHVuc2lnbmVkIGludCkgeXlfY107CkBAIC0yMTAwLDExICsyMDM5LDExIEBAIHN0YXRpYyBpbnQg
eXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdAogCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlf
Y3VycmVudF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJewogCQl5eV9j
dXJyZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQlpZiAoIHl5
X2N1cnJlbnRfc3RhdGUgPj0gNDU5ICkKKwkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ0MyAp
CiAJCQl5eV9jID0geXlfbWV0YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJfQogCXl5X2N1cnJl
bnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBp
bnQpIHl5X2NdOwotCXl5X2lzX2phbSA9ICh5eV9jdXJyZW50X3N0YXRlID09IDQ1OCk7CisJeXlf
aXNfamFtID0gKHl5X2N1cnJlbnRfc3RhdGUgPT0gNDQyKTsKIAogCXJldHVybiB5eV9pc19qYW0g
PyAwIDogeXlfY3VycmVudF9zdGF0ZTsKIH0KQEAgLTI1NDgsNDYgKzI0ODcsNiBAQCBZWV9CVUZG
RVJfU1RBVEUgeXlfc2Nhbl9ieXRlcyAgKHl5Y29uc3QKIAlyZXR1cm4gYjsKIH0KIAotICAgIHN0
YXRpYyB2b2lkIHl5X3B1c2hfc3RhdGUgKGludCAgbmV3X3N0YXRlICwgeXlzY2FuX3QgeXlzY2Fu
bmVyKQotewotICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5
c2Nhbm5lcjsKLQlpZiAoIHl5Zy0+eXlfc3RhcnRfc3RhY2tfcHRyID49IHl5Zy0+eXlfc3RhcnRf
c3RhY2tfZGVwdGggKQotCQl7Ci0JCXl5X3NpemVfdCBuZXdfc2l6ZTsKLQotCQl5eWctPnl5X3N0
YXJ0X3N0YWNrX2RlcHRoICs9IFlZX1NUQVJUX1NUQUNLX0lOQ1I7Ci0JCW5ld19zaXplID0geXln
LT55eV9zdGFydF9zdGFja19kZXB0aCAqIHNpemVvZiggaW50ICk7Ci0KLQkJaWYgKCAhIHl5Zy0+
eXlfc3RhcnRfc3RhY2sgKQotCQkJeXlnLT55eV9zdGFydF9zdGFjayA9IChpbnQgKikgeXlhbGxv
YyhuZXdfc2l6ZSAseXlzY2FubmVyICk7Ci0KLQkJZWxzZQotCQkJeXlnLT55eV9zdGFydF9zdGFj
ayA9IChpbnQgKikgeXlyZWFsbG9jKCh2b2lkICopIHl5Zy0+eXlfc3RhcnRfc3RhY2ssbmV3X3Np
emUgLHl5c2Nhbm5lciApOwotCi0JCWlmICggISB5eWctPnl5X3N0YXJ0X3N0YWNrICkKLQkJCVlZ
X0ZBVEFMX0VSUk9SKCAib3V0IG9mIG1lbW9yeSBleHBhbmRpbmcgc3RhcnQtY29uZGl0aW9uIHN0
YWNrIiApOwotCQl9Ci0KLQl5eWctPnl5X3N0YXJ0X3N0YWNrW3l5Zy0+eXlfc3RhcnRfc3RhY2tf
cHRyKytdID0gWVlfU1RBUlQ7Ci0KLQlCRUdJTihuZXdfc3RhdGUpOwotfQotCi0gICAgc3RhdGlj
IHZvaWQgeXlfcG9wX3N0YXRlICAoeXlzY2FuX3QgeXlzY2FubmVyKQotewotICAgIHN0cnVjdCB5
eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKLQlpZiAoIC0teXln
LT55eV9zdGFydF9zdGFja19wdHIgPCAwICkKLQkJWVlfRkFUQUxfRVJST1IoICJzdGFydC1jb25k
aXRpb24gc3RhY2sgdW5kZXJmbG93IiApOwotCi0JQkVHSU4oeXlnLT55eV9zdGFydF9zdGFja1t5
eWctPnl5X3N0YXJ0X3N0YWNrX3B0cl0pOwotfQotCi0gICAgc3RhdGljIGludCB5eV90b3Bfc3Rh
dGUgICh5eXNjYW5fdCB5eXNjYW5uZXIpCi17Ci0gICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0g
KHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOwotCXJldHVybiB5eWctPnl5X3N0YXJ0X3N0YWNr
W3l5Zy0+eXlfc3RhcnRfc3RhY2tfcHRyIC0gMV07Ci19Ci0KICNpZm5kZWYgWVlfRVhJVF9GQUlM
VVJFCiAjZGVmaW5lIFlZX0VYSVRfRkFJTFVSRSAyCiAjZW5kaWYKQEAgLTI3NzMsNiArMjY3Miwx
OCBAQCB2b2lkIHl5c2V0X2x2YWwgKFlZU1RZUEUgKiAgeXlsdmFsX3BhcmFtCiAgICAgeXlsdmFs
ID0geXlsdmFsX3BhcmFtOwogfQogCitZWUxUWVBFICp5eWdldF9sbG9jICAoeXlzY2FuX3QgeXlz
Y2FubmVyKQoreworICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3Qq
KXl5c2Nhbm5lcjsKKyAgICByZXR1cm4geXlsbG9jOworfQorICAgIAordm9pZCB5eXNldF9sbG9j
IChZWUxUWVBFICogIHl5bGxvY19wYXJhbSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKK3sKKyAgICBz
dHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisgICAg
eXlsbG9jID0geXlsbG9jX3BhcmFtOworfQorICAgIAogLyogVXNlci12aXNpYmxlIEFQSSAqLwog
CiAvKiB5eWxleF9pbml0IGlzIHNwZWNpYWwgYmVjYXVzZSBpdCBjcmVhdGVzIHRoZSBzY2FubmVy
IGl0c2VsZiwgc28gaXQgaXMKQEAgLTI5NTQsNyArMjg2NSw4IEBAIHl5X3NpemVfdCBzdHJpbmdf
aW5wdXQoY2hhciogYnVmLCB5eV9zaXoKICAgICB5eV9zaXplX3QgbGVuID0gdG9rZW4udHlwZSA9
PSBwcDo6VG9rZW46OkxBU1QgPyAwIDogdG9rZW4udGV4dC5zaXplKCk7CiAgICAgaWYgKGxlbiA8
IG1heF9zaXplKQogICAgICAgICBtZW1jcHkoYnVmLCB0b2tlbi50ZXh0LmNfc3RyKCksIGxlbik7
Ci0gICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJjZUxvYyh0b2tlbi5sb2NhdGlvbi5maWxlLCB0
b2tlbi5sb2NhdGlvbi5saW5lKSx5eXNjYW5uZXIpOworICAgIHl5c2V0X2NvbHVtbih0b2tlbi5s
b2NhdGlvbi5maWxlLHl5c2Nhbm5lcik7CisgICAgeXlzZXRfbGluZW5vKHRva2VuLmxvY2F0aW9u
LmxpbmUseXlzY2FubmVyKTsKIAogICAgIGlmIChsZW4gPj0gbWF4X3NpemUpCiAgICAgICAgIFlZ
X0ZBVEFMX0VSUk9SKCJJbnB1dCBidWZmZXIgb3ZlcmZsb3ciKTsKQEAgLTI5NjgsMTIgKzI4ODAs
MTAgQEAgaW50IGNoZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgCiAgICAgaW50
IHRva2VuID0gSURFTlRJRklFUjsKICAgICBUU3ltYm9sKiBzeW1ib2wgPSB5eWV4dHJhLT5zeW1i
b2xUYWJsZS5maW5kKHl5dGV4dCk7Ci0gICAgaWYgKHl5ZXh0cmEtPmxleEFmdGVyVHlwZSA9PSBm
YWxzZSAmJiBzeW1ib2wgJiYgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKKyAgICBpZiAoc3ltYm9s
ICYmIHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7CiAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUg
PSBzdGF0aWNfY2FzdDxUVmFyaWFibGUqPihzeW1ib2wpOwotICAgICAgICBpZiAodmFyaWFibGUt
PmlzVXNlclR5cGUoKSkgewotICAgICAgICAgICAgeXlleHRyYS0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsKKyAgICAgICAgaWYgKHZhcmlhYmxlLT5pc1VzZXJUeXBlKCkpCiAgICAgICAgICAgICB0b2tl
biA9IFRZUEVfTkFNRTsKLSAgICAgICAgfQogICAgIH0KICAgICB5eWx2YWwtPmxleC5zeW1ib2wg
PSBzeW1ib2w7CiAgICAgcmV0dXJuIHRva2VuOwpAQCAtMjk4MiwyMiArMjg5MiwxMSBAQCBpbnQg
Y2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKIGludCByZXNlcnZlZF93b3JkKHl5c2Nh
bl90IHl5c2Nhbm5lcikgewogICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1
dHNfdCopIHl5c2Nhbm5lcjsKIAotICAgIHl5ZXh0cmEtPmVycm9yKHl5bGluZW5vLCAiSWxsZWdh
bCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwgIiIpOworICAgIHl5ZXh0cmEtPmVycm9y
KCp5eWxsb2MsICJJbGxlZ2FsIHVzZSBvZiByZXNlcnZlZCB3b3JkIiwgeXl0ZXh0LCAiIik7CiAg
ICAgeXlleHRyYS0+cmVjb3ZlcigpOwogICAgIHJldHVybiAwOwogfQogCi12b2lkIHl5ZXJyb3Io
VFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKSB7Ci0gICAgc3RydWN0
IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgY29udGV4dC0+c2Nhbm5lcjsKLQot
ICAgIGlmIChjb250ZXh0LT5BZnRlckVPRikgewotICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxp
bmVubywgcmVhc29uLCAidW5leHBlY3RlZCBFT0YiKTsKLSAgICB9IGVsc2UgewotICAgICAgICBj
b250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29uLCB5eXRleHQpOwotICAgIH0KLSAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci19Ci0KIGludCBnbHNsYW5nX2luaXRpYWxpemUoVFBhcnNlQ29udGV4
dCogY29udGV4dCkgewogICAgIHl5c2Nhbl90IHNjYW5uZXIgPSBOVUxMOwogICAgIGlmICh5eWxl
eF9pbml0X2V4dHJhKGNvbnRleHQsJnNjYW5uZXIpKQpAQCAtMzAyMCw4ICsyOTE5LDggQEAgaW50
IGdsc2xhbmdfZmluYWxpemUoVFBhcnNlQ29udGV4dCogY29udAogaW50IGdsc2xhbmdfc2Nhbihz
aXplX3QgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3Ro
W10sCiAgICAgICAgICAgICAgICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICB5eXJl
c3RhcnQoTlVMTCxjb250ZXh0LT5zY2FubmVyKTsKLSAgICB5eXNldF9saW5lbm8oRW5jb2RlU291
cmNlTG9jKDAsIDEpLGNvbnRleHQtPnNjYW5uZXIpOwotICAgIGNvbnRleHQtPkFmdGVyRU9GID0g
ZmFsc2U7CisgICAgeXlzZXRfY29sdW1uKDAsY29udGV4dC0+c2Nhbm5lcik7CisgICAgeXlzZXRf
bGluZW5vKDEsY29udGV4dC0+c2Nhbm5lcik7CiAKICAgICAvLyBJbml0aWFsaXplIHByZXByb2Nl
c3Nvci4KICAgICBpZiAoIWNvbnRleHQtPnByZXByb2Nlc3Nvci5pbml0KGNvdW50LCBzdHJpbmcs
IGxlbmd0aCkpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xz
bGFuZ190YWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9nbHNsYW5nX3RhYi5jcHAJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsMjQgKzEsMjEgQEAKLS8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAy
LjMuICAqLworLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuNy4gICovCiAK
LS8qIFNrZWxldG9uIGltcGxlbWVudGF0aW9uIGZvciBCaXNvbidzIFlhY2MtbGlrZSBwYXJzZXJz
IGluIEMKLQotICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LCAxOTkwLCAyMDAwLCAyMDAxLCAy
MDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2Ci0gICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4KLQotICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy8qIEJpc29uIGltcGxlbWVudGF0aW9uIGZvciBZYWNj
LWxpa2UgcGFyc2VycyBpbiBDCisgICAKKyAgICAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OS0x
OTkwLCAyMDAwLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAKKyAgIFRo
aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgYW55IGxhdGVyIHZl
cnNpb24uCi0KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9u
IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICAgCiAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAgICBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCisgICAKICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICBh
bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQotICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKyAgIGFsb25nIHdpdGggdGhpcyBw
cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K
IAogLyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSBjcmVhdGUgYSBsYXJnZXIgd29y
ayB0aGF0IGNvbnRhaW5zCiAgICBwYXJ0IG9yIGFsbCBvZiB0aGUgQmlzb24gcGFyc2VyIHNrZWxl
dG9uIGFuZCBkaXN0cmlidXRlIHRoYXQgd29yawpAQCAtMjksNyArMjYsNyBAQAogICAgc3BlY2lh
bCBleGNlcHRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNrZWxldG9uIGFuZCB0aGUgcmVzdWx0
aW5nCiAgICBCaXNvbiBvdXRwdXQgZmlsZXMgdG8gYmUgbGljZW5zZWQgdW5kZXIgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYwogICAgTGljZW5zZSB3aXRob3V0IHRoaXMgc3BlY2lhbCBleGNlcHRpb24u
Ci0KKyAgIAogICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMgYWRkZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiBpbgogICAgdmVyc2lvbiAyLjIgb2YgQmlzb24uICAqLwogCkBA
IC00Nyw3ICs0NCw3IEBACiAjZGVmaW5lIFlZQklTT04gMQogCiAvKiBCaXNvbiB2ZXJzaW9uLiAg
Ki8KLSNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjMiCisjZGVmaW5lIFlZQklTT05fVkVSU0lP
TiAiMi43IgogCiAvKiBTa2VsZXRvbiBuYW1lLiAgKi8KICNkZWZpbmUgWVlTS0VMRVRPTl9OQU1F
ICJ5YWNjLmMiCkBAIC01NSw4ICs1Miw4MSBAQAogLyogUHVyZSBwYXJzZXJzLiAgKi8KICNkZWZp
bmUgWVlQVVJFIDEKIAotLyogVXNpbmcgbG9jYXRpb25zLiAgKi8KLSNkZWZpbmUgWVlMU1BfTkVF
REVEIDAKKy8qIFB1c2ggcGFyc2Vycy4gICovCisjZGVmaW5lIFlZUFVTSCAwCisKKy8qIFB1bGwg
cGFyc2Vycy4gICovCisjZGVmaW5lIFlZUFVMTCAxCisKKworCisKKy8qIENvcHkgdGhlIGZpcnN0
IHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLworCisKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZV9wYXJzZXIuc2guIERP
IE5PVCBFRElUIQorCisvLyBJZ25vcmUgZXJyb3JzIGluIGF1dG8tZ2VuZXJhdGVkIGNvZGUuCisj
aWYgZGVmaW5lZChfX0dOVUNfXykKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1
bnVzZWQtZnVuY3Rpb24iCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2Vk
LXZhcmlhYmxlIgorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3N3aXRjaC1lbnVt
IgorI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDY1
KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxODkpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTogNDUwNSkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzAxKQorI2VuZGlmCisKKyNpbmNs
dWRlICJjb21waWxlci9TeW1ib2xUYWJsZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlSGVs
cGVyLmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisKKyNkZWZpbmUgWVlFTkFC
TEVfTkxTIDAKKworI2RlZmluZSBZWUxFWF9QQVJBTSBjb250ZXh0LT5zY2FubmVyCisKKworCisj
IGlmbmRlZiBZWV9OVUxMCisjICBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIDIwMTEwM0wgPD0g
X19jcGx1c3BsdXMKKyMgICBkZWZpbmUgWVlfTlVMTCBudWxscHRyCisjICBlbHNlCisjICAgZGVm
aW5lIFlZX05VTEwgMAorIyAgZW5kaWYKKyMgZW5kaWYKKworLyogRW5hYmxpbmcgdmVyYm9zZSBl
cnJvciBtZXNzYWdlcy4gICovCisjaWZkZWYgWVlFUlJPUl9WRVJCT1NFCisjIHVuZGVmIFlZRVJS
T1JfVkVSQk9TRQorIyBkZWZpbmUgWVlFUlJPUl9WRVJCT1NFIDEKKyNlbHNlCisjIGRlZmluZSBZ
WUVSUk9SX1ZFUkJPU0UgMAorI2VuZGlmCisKKy8qIEluIGEgZnV0dXJlIHJlbGVhc2Ugb2YgQmlz
b24sIHRoaXMgc2VjdGlvbiB3aWxsIGJlIHJlcGxhY2VkCisgICBieSAjaW5jbHVkZSAiZ2xzbGFu
Z190YWIuaCIuICAqLworI2lmbmRlZiBZWV9ZWV9HTFNMQU5HX1RBQl9IX0lOQ0xVREVECisjIGRl
ZmluZSBZWV9ZWV9HTFNMQU5HX1RBQl9IX0lOQ0xVREVECisvKiBFbmFibGluZyB0cmFjZXMuICAq
LworI2lmbmRlZiBZWURFQlVHCisjIGRlZmluZSBZWURFQlVHIDAKKyNlbmRpZgorI2lmIFlZREVC
VUcKK2V4dGVybiBpbnQgeXlkZWJ1ZzsKKyNlbmRpZgorLyogIiVjb2RlIHJlcXVpcmVzIiBibG9j
a3MuICAqLworCisKKyNkZWZpbmUgWVlMVFlQRSBUU291cmNlTG9jCisjZGVmaW5lIFlZTFRZUEVf
SVNfREVDTEFSRUQgMQorCiAKIAogCkBAIC0xMTMsMjA5ICsxODMsNjEgQEAKICAgICAgRkxPQVRD
T05TVEFOVCA9IDMwMiwKICAgICAgSU5UQ09OU1RBTlQgPSAzMDMsCiAgICAgIEJPT0xDT05TVEFO
VCA9IDMwNCwKLSAgICAgRklFTERfU0VMRUNUSU9OID0gMzA1LAotICAgICBMRUZUX09QID0gMzA2
LAotICAgICBSSUdIVF9PUCA9IDMwNywKLSAgICAgSU5DX09QID0gMzA4LAotICAgICBERUNfT1Ag
PSAzMDksCi0gICAgIExFX09QID0gMzEwLAotICAgICBHRV9PUCA9IDMxMSwKLSAgICAgRVFfT1Ag
PSAzMTIsCi0gICAgIE5FX09QID0gMzEzLAotICAgICBBTkRfT1AgPSAzMTQsCi0gICAgIE9SX09Q
ID0gMzE1LAotICAgICBYT1JfT1AgPSAzMTYsCi0gICAgIE1VTF9BU1NJR04gPSAzMTcsCi0gICAg
IERJVl9BU1NJR04gPSAzMTgsCi0gICAgIEFERF9BU1NJR04gPSAzMTksCi0gICAgIE1PRF9BU1NJ
R04gPSAzMjAsCi0gICAgIExFRlRfQVNTSUdOID0gMzIxLAotICAgICBSSUdIVF9BU1NJR04gPSAz
MjIsCi0gICAgIEFORF9BU1NJR04gPSAzMjMsCi0gICAgIFhPUl9BU1NJR04gPSAzMjQsCi0gICAg
IE9SX0FTU0lHTiA9IDMyNSwKLSAgICAgU1VCX0FTU0lHTiA9IDMyNiwKLSAgICAgTEVGVF9QQVJF
TiA9IDMyNywKLSAgICAgUklHSFRfUEFSRU4gPSAzMjgsCi0gICAgIExFRlRfQlJBQ0tFVCA9IDMy
OSwKLSAgICAgUklHSFRfQlJBQ0tFVCA9IDMzMCwKLSAgICAgTEVGVF9CUkFDRSA9IDMzMSwKLSAg
ICAgUklHSFRfQlJBQ0UgPSAzMzIsCi0gICAgIERPVCA9IDMzMywKLSAgICAgQ09NTUEgPSAzMzQs
Ci0gICAgIENPTE9OID0gMzM1LAotICAgICBFUVVBTCA9IDMzNiwKLSAgICAgU0VNSUNPTE9OID0g
MzM3LAotICAgICBCQU5HID0gMzM4LAotICAgICBEQVNIID0gMzM5LAotICAgICBUSUxERSA9IDM0
MCwKLSAgICAgUExVUyA9IDM0MSwKLSAgICAgU1RBUiA9IDM0MiwKLSAgICAgU0xBU0ggPSAzNDMs
Ci0gICAgIFBFUkNFTlQgPSAzNDQsCi0gICAgIExFRlRfQU5HTEUgPSAzNDUsCi0gICAgIFJJR0hU
X0FOR0xFID0gMzQ2LAotICAgICBWRVJUSUNBTF9CQVIgPSAzNDcsCi0gICAgIENBUkVUID0gMzQ4
LAotICAgICBBTVBFUlNBTkQgPSAzNDksCi0gICAgIFFVRVNUSU9OID0gMzUwCisgICAgIExFRlRf
T1AgPSAzMDUsCisgICAgIFJJR0hUX09QID0gMzA2LAorICAgICBJTkNfT1AgPSAzMDcsCisgICAg
IERFQ19PUCA9IDMwOCwKKyAgICAgTEVfT1AgPSAzMDksCisgICAgIEdFX09QID0gMzEwLAorICAg
ICBFUV9PUCA9IDMxMSwKKyAgICAgTkVfT1AgPSAzMTIsCisgICAgIEFORF9PUCA9IDMxMywKKyAg
ICAgT1JfT1AgPSAzMTQsCisgICAgIFhPUl9PUCA9IDMxNSwKKyAgICAgTVVMX0FTU0lHTiA9IDMx
NiwKKyAgICAgRElWX0FTU0lHTiA9IDMxNywKKyAgICAgQUREX0FTU0lHTiA9IDMxOCwKKyAgICAg
TU9EX0FTU0lHTiA9IDMxOSwKKyAgICAgTEVGVF9BU1NJR04gPSAzMjAsCisgICAgIFJJR0hUX0FT
U0lHTiA9IDMyMSwKKyAgICAgQU5EX0FTU0lHTiA9IDMyMiwKKyAgICAgWE9SX0FTU0lHTiA9IDMy
MywKKyAgICAgT1JfQVNTSUdOID0gMzI0LAorICAgICBTVUJfQVNTSUdOID0gMzI1LAorICAgICBM
RUZUX1BBUkVOID0gMzI2LAorICAgICBSSUdIVF9QQVJFTiA9IDMyNywKKyAgICAgTEVGVF9CUkFD
S0VUID0gMzI4LAorICAgICBSSUdIVF9CUkFDS0VUID0gMzI5LAorICAgICBMRUZUX0JSQUNFID0g
MzMwLAorICAgICBSSUdIVF9CUkFDRSA9IDMzMSwKKyAgICAgRE9UID0gMzMyLAorICAgICBDT01N
QSA9IDMzMywKKyAgICAgQ09MT04gPSAzMzQsCisgICAgIEVRVUFMID0gMzM1LAorICAgICBTRU1J
Q09MT04gPSAzMzYsCisgICAgIEJBTkcgPSAzMzcsCisgICAgIERBU0ggPSAzMzgsCisgICAgIFRJ
TERFID0gMzM5LAorICAgICBQTFVTID0gMzQwLAorICAgICBTVEFSID0gMzQxLAorICAgICBTTEFT
SCA9IDM0MiwKKyAgICAgUEVSQ0VOVCA9IDM0MywKKyAgICAgTEVGVF9BTkdMRSA9IDM0NCwKKyAg
ICAgUklHSFRfQU5HTEUgPSAzNDUsCisgICAgIFZFUlRJQ0FMX0JBUiA9IDM0NiwKKyAgICAgQ0FS
RVQgPSAzNDcsCisgICAgIEFNUEVSU0FORCA9IDM0OCwKKyAgICAgUVVFU1RJT04gPSAzNDkKICAg
IH07CiAjZW5kaWYKLS8qIFRva2Vucy4gICovCi0jZGVmaW5lIElOVkFSSUFOVCAyNTgKLSNkZWZp
bmUgSElHSF9QUkVDSVNJT04gMjU5Ci0jZGVmaW5lIE1FRElVTV9QUkVDSVNJT04gMjYwCi0jZGVm
aW5lIExPV19QUkVDSVNJT04gMjYxCi0jZGVmaW5lIFBSRUNJU0lPTiAyNjIKLSNkZWZpbmUgQVRU
UklCVVRFIDI2MwotI2RlZmluZSBDT05TVF9RVUFMIDI2NAotI2RlZmluZSBCT09MX1RZUEUgMjY1
Ci0jZGVmaW5lIEZMT0FUX1RZUEUgMjY2Ci0jZGVmaW5lIElOVF9UWVBFIDI2NwotI2RlZmluZSBC
UkVBSyAyNjgKLSNkZWZpbmUgQ09OVElOVUUgMjY5Ci0jZGVmaW5lIERPIDI3MAotI2RlZmluZSBF
TFNFIDI3MQotI2RlZmluZSBGT1IgMjcyCi0jZGVmaW5lIElGIDI3MwotI2RlZmluZSBESVNDQVJE
IDI3NAotI2RlZmluZSBSRVRVUk4gMjc1Ci0jZGVmaW5lIEJWRUMyIDI3NgotI2RlZmluZSBCVkVD
MyAyNzcKLSNkZWZpbmUgQlZFQzQgMjc4Ci0jZGVmaW5lIElWRUMyIDI3OQotI2RlZmluZSBJVkVD
MyAyODAKLSNkZWZpbmUgSVZFQzQgMjgxCi0jZGVmaW5lIFZFQzIgMjgyCi0jZGVmaW5lIFZFQzMg
MjgzCi0jZGVmaW5lIFZFQzQgMjg0Ci0jZGVmaW5lIE1BVFJJWDIgMjg1Ci0jZGVmaW5lIE1BVFJJ
WDMgMjg2Ci0jZGVmaW5lIE1BVFJJWDQgMjg3Ci0jZGVmaW5lIElOX1FVQUwgMjg4Ci0jZGVmaW5l
IE9VVF9RVUFMIDI4OQotI2RlZmluZSBJTk9VVF9RVUFMIDI5MAotI2RlZmluZSBVTklGT1JNIDI5
MQotI2RlZmluZSBWQVJZSU5HIDI5MgotI2RlZmluZSBTVFJVQ1QgMjkzCi0jZGVmaW5lIFZPSURf
VFlQRSAyOTQKLSNkZWZpbmUgV0hJTEUgMjk1Ci0jZGVmaW5lIFNBTVBMRVIyRCAyOTYKLSNkZWZp
bmUgU0FNUExFUkNVQkUgMjk3Ci0jZGVmaW5lIFNBTVBMRVJfRVhURVJOQUxfT0VTIDI5OAotI2Rl
ZmluZSBTQU1QTEVSMkRSRUNUIDI5OQotI2RlZmluZSBJREVOVElGSUVSIDMwMAotI2RlZmluZSBU
WVBFX05BTUUgMzAxCi0jZGVmaW5lIEZMT0FUQ09OU1RBTlQgMzAyCi0jZGVmaW5lIElOVENPTlNU
QU5UIDMwMwotI2RlZmluZSBCT09MQ09OU1RBTlQgMzA0Ci0jZGVmaW5lIEZJRUxEX1NFTEVDVElP
TiAzMDUKLSNkZWZpbmUgTEVGVF9PUCAzMDYKLSNkZWZpbmUgUklHSFRfT1AgMzA3Ci0jZGVmaW5l
IElOQ19PUCAzMDgKLSNkZWZpbmUgREVDX09QIDMwOQotI2RlZmluZSBMRV9PUCAzMTAKLSNkZWZp
bmUgR0VfT1AgMzExCi0jZGVmaW5lIEVRX09QIDMxMgotI2RlZmluZSBORV9PUCAzMTMKLSNkZWZp
bmUgQU5EX09QIDMxNAotI2RlZmluZSBPUl9PUCAzMTUKLSNkZWZpbmUgWE9SX09QIDMxNgotI2Rl
ZmluZSBNVUxfQVNTSUdOIDMxNwotI2RlZmluZSBESVZfQVNTSUdOIDMxOAotI2RlZmluZSBBRERf
QVNTSUdOIDMxOQotI2RlZmluZSBNT0RfQVNTSUdOIDMyMAotI2RlZmluZSBMRUZUX0FTU0lHTiAz
MjEKLSNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMgotI2RlZmluZSBBTkRfQVNTSUdOIDMyMwotI2Rl
ZmluZSBYT1JfQVNTSUdOIDMyNAotI2RlZmluZSBPUl9BU1NJR04gMzI1Ci0jZGVmaW5lIFNVQl9B
U1NJR04gMzI2Ci0jZGVmaW5lIExFRlRfUEFSRU4gMzI3Ci0jZGVmaW5lIFJJR0hUX1BBUkVOIDMy
OAotI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI5Ci0jZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzMwCi0j
ZGVmaW5lIExFRlRfQlJBQ0UgMzMxCi0jZGVmaW5lIFJJR0hUX0JSQUNFIDMzMgotI2RlZmluZSBE
T1QgMzMzCi0jZGVmaW5lIENPTU1BIDMzNAotI2RlZmluZSBDT0xPTiAzMzUKLSNkZWZpbmUgRVFV
QUwgMzM2Ci0jZGVmaW5lIFNFTUlDT0xPTiAzMzcKLSNkZWZpbmUgQkFORyAzMzgKLSNkZWZpbmUg
REFTSCAzMzkKLSNkZWZpbmUgVElMREUgMzQwCi0jZGVmaW5lIFBMVVMgMzQxCi0jZGVmaW5lIFNU
QVIgMzQyCi0jZGVmaW5lIFNMQVNIIDM0MwotI2RlZmluZSBQRVJDRU5UIDM0NAotI2RlZmluZSBM
RUZUX0FOR0xFIDM0NQotI2RlZmluZSBSSUdIVF9BTkdMRSAzNDYKLSNkZWZpbmUgVkVSVElDQUxf
QkFSIDM0NwotI2RlZmluZSBDQVJFVCAzNDgKLSNkZWZpbmUgQU1QRVJTQU5EIDM0OQotI2RlZmlu
ZSBRVUVTVElPTiAzNTAKLQotCi0KLQotLyogQ29weSB0aGUgZmlyc3QgcGFydCBvZiB1c2VyIGRl
Y2xhcmF0aW9ucy4gICovCi0KLQotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gVGhpcyBmaWxlIGlz
IGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCi0KLS8v
IElnbm9yZSBlcnJvcnMgaW4gYXV0by1nZW5lcmF0ZWQgY29kZS4KLSNpZiBkZWZpbmVkKF9fR05V
Q19fKQotI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIK
LSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtdmFyaWFibGUiCi0jcHJh
Z21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc3dpdGNoLWVudW0iCi0jZWxpZiBkZWZpbmVk
KF9NU0NfVkVSKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQwNjUpCi0jcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZTogNDE4OSkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTA1KQotI3ByYWdt
YSB3YXJuaW5nKGRpc2FibGU6IDQ3MDEpCi0jZW5kaWYKLQotI2luY2x1ZGUgImNvbXBpbGVyL1N5
bWJvbFRhYmxlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKLSNpbmNsdWRl
ICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKLQotI2RlZmluZSBZWUVOQUJMRV9OTFMgMAotI2RlZmlu
ZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQotCi0jZGVmaW5lIFlZTEVYX1BBUkFNIGNvbnRleHQtPnNj
YW5uZXIKLQotCi0vKiBFbmFibGluZyB0cmFjZXMuICAqLwotI2lmbmRlZiBZWURFQlVHCi0jIGRl
ZmluZSBZWURFQlVHIDAKLSNlbmRpZgotCi0vKiBFbmFibGluZyB2ZXJib3NlIGVycm9yIG1lc3Nh
Z2VzLiAgKi8KLSNpZmRlZiBZWUVSUk9SX1ZFUkJPU0UKLSMgdW5kZWYgWVlFUlJPUl9WRVJCT1NF
Ci0jIGRlZmluZSBZWUVSUk9SX1ZFUkJPU0UgMQotI2Vsc2UKLSMgZGVmaW5lIFlZRVJST1JfVkVS
Qk9TRSAwCi0jZW5kaWYKIAotLyogRW5hYmxpbmcgdGhlIHRva2VuIHRhYmxlLiAgKi8KLSNpZm5k
ZWYgWVlUT0tFTl9UQUJMRQotIyBkZWZpbmUgWVlUT0tFTl9UQUJMRSAwCi0jZW5kaWYKIAogI2lm
ICEgZGVmaW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZWVNUWVBFX0lTX0RFQ0xBUkVECiB0eXBl
ZGVmIHVuaW9uIFlZU1RZUEUKLQogeworCisKICAgICBzdHJ1Y3QgewotICAgICAgICBUU291cmNl
TG9jIGxpbmU7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0cmluZzsK
ICAgICAgICAgICAgIGZsb2F0IGY7CkBAIC0zMjUsNyArMjQ3LDYgQEAgdHlwZWRlZiB1bmlvbiBZ
WVNUWVBFCiAgICAgICAgIFRTeW1ib2wqIHN5bWJvbDsKICAgICB9IGxleDsKICAgICBzdHJ1Y3Qg
ewotICAgICAgICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAgIFRPcGVyYXRvciBvcDsKICAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7CkBAIC0zMzks
MzQgKzI2MCw3MCBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAgICAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbGlmaWVyOwogICAgICAgICAgICAgVEZ1bmN0aW9uKiBmdW5jdGlvbjsKICAgICAgICAg
ICAgIFRQYXJhbWV0ZXIgcGFyYW07Ci0gICAgICAgICAgICBUVHlwZUxpbmUgdHlwZUxpbmU7Ci0g
ICAgICAgICAgICBUVHlwZUxpc3QqIHR5cGVMaXN0OworICAgICAgICAgICAgVEZpZWxkKiBmaWVs
ZDsKKyAgICAgICAgICAgIFRGaWVsZExpc3QqIGZpZWxkTGlzdDsKICAgICAgICAgfTsKICAgICB9
IGludGVybTsKLX0KLS8qIExpbmUgMTkzIG9mIHlhY2MuYy4gICovCiAKLQlZWVNUWVBFOworCisK
K30gWVlTVFlQRTsKKyMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCiAjIGRlZmluZSB5eXN0
eXBlIFlZU1RZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCiAjIGRlZmlu
ZSBZWVNUWVBFX0lTX0RFQ0xBUkVEIDEKLSMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCiAj
ZW5kaWYKIAorI2lmICEgZGVmaW5lZCBZWUxUWVBFICYmICEgZGVmaW5lZCBZWUxUWVBFX0lTX0RF
Q0xBUkVECit0eXBlZGVmIHN0cnVjdCBZWUxUWVBFCit7CisgIGludCBmaXJzdF9saW5lOworICBp
bnQgZmlyc3RfY29sdW1uOworICBpbnQgbGFzdF9saW5lOworICBpbnQgbGFzdF9jb2x1bW47Cit9
IFlZTFRZUEU7CisjIGRlZmluZSB5eWx0eXBlIFlZTFRZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwg
YmUgd2l0aGRyYXduICovCisjIGRlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKKyMgZGVmaW5l
IFlZTFRZUEVfSVNfVFJJVklBTCAxCisjZW5kaWYKKworCisjaWZkZWYgWVlQQVJTRV9QQVJBTQor
I2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cworaW50IHl5cGFyc2Ug
KHZvaWQgKllZUEFSU0VfUEFSQU0pOworI2Vsc2UKK2ludCB5eXBhcnNlICgpOworI2VuZGlmCisj
ZWxzZSAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KKyNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmlu
ZWQgX19jcGx1c3BsdXMKK2ludCB5eXBhcnNlIChUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKKyNl
bHNlCitpbnQgeXlwYXJzZSAoKTsKKyNlbmRpZgorI2VuZGlmIC8qICEgWVlQQVJTRV9QQVJBTSAq
LwogCisjZW5kaWYgLyogIVlZX1lZX0dMU0xBTkdfVEFCX0hfSU5DTFVERUQgICovCiAKIC8qIENv
cHkgdGhlIHNlY29uZCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8KIAogCi1leHRlcm4g
aW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbF9wYXJhbSwgdm9pZCogeXlzY2FubmVyKTsKLWV4dGVy
biB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29u
KTsKK2V4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBZWUxUWVBFKiB5eWxsb2MsIHZv
aWQqIHl5c2Nhbm5lcik7CitzdGF0aWMgdm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxvYywgVFBh
cnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKTsKIAotI2RlZmluZSBGUkFH
X1ZFUlRfT05MWShTLCBMKSB7ICBcCi0gICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgIT0gU0hf
RlJBR01FTlRfU0hBREVSICYmICBcCi0gICAgICAgIGNvbnRleHQtPnNoYWRlclR5cGUgIT0gU0hf
VkVSVEVYX1NIQURFUikgeyAgXAotICAgICAgICBjb250ZXh0LT5lcnJvcihMLCAiIHN1cHBvcnRl
ZCBpbiB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVycyBvbmx5ICIsIFMpOyAgXAotICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7ICBcCi0gICAgfSAgXAotfQorI2RlZmluZSBZWUxMT0NfREVGQVVMVChD
dXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBpZiAo
WVlJRChOKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMSkuZmlyc3RfZmlsZTsg
IFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDEpLmZpcnN0
X2xpbmU7ICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIE4p
Lmxhc3RfZmlsZTsgICAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0gWVlSSFNMT0Mo
UmhzLCBOKS5sYXN0X2xpbmU7ICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBlbHNlIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoQ3VycmVudCku
Zmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9maWxlOyAgIFwKKyAgICAgICAgKEN1
cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsgICBcCisgICAg
ICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfZmlsZTsgICAg
XAorICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2xp
bmU7ICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgVkVSVEVYX09OTFkoUywg
TCkgeyAgXAogICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX1ZFUlRFWF9TSEFERVIp
IHsgIFwKQEAgLTM4Myw4ICszNDAsNiBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRl
eHQqIGNvbnRlCiB9CiAKIAotLyogTGluZSAyMTYgb2YgeWFjYy5jLiAgKi8KLQogCiAjaWZkZWYg
c2hvcnQKICMgdW5kZWYgc2hvcnQKQEAgLTQzNywzNiArMzkyLDM2IEBAIHR5cGVkZWYgc2hvcnQg
aW50IHl5dHlwZV9pbnQxNjsKICMgaWYgZGVmaW5lZCBZWUVOQUJMRV9OTFMgJiYgWVlFTkFCTEVf
TkxTCiAjICBpZiBFTkFCTEVfTkxTCiAjICAgaW5jbHVkZSA8bGliaW50bC5oPiAvKiBJTkZSSU5H
RVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0jICAgZGVmaW5lIFlZXyhtc2dpZCkgZGdldHRleHQg
KCJiaXNvbi1ydW50aW1lIiwgbXNnaWQpCisjICAgZGVmaW5lIFlZXyhNc2dpZCkgZGdldHRleHQg
KCJiaXNvbi1ydW50aW1lIiwgTXNnaWQpCiAjICBlbmRpZgogIyBlbmRpZgogIyBpZm5kZWYgWVlf
Ci0jICBkZWZpbmUgWVlfKG1zZ2lkKSBtc2dpZAorIyAgZGVmaW5lIFlZXyhNc2dpZCkgTXNnaWQK
ICMgZW5kaWYKICNlbmRpZgogCiAvKiBTdXBwcmVzcyB1bnVzZWQtdmFyaWFibGUgd2FybmluZ3Mg
YnkgInVzaW5nIiBFLiAgKi8KICNpZiAhIGRlZmluZWQgbGludCB8fCBkZWZpbmVkIF9fR05VQ19f
Ci0jIGRlZmluZSBZWVVTRShlKSAoKHZvaWQpIChlKSkKKyMgZGVmaW5lIFlZVVNFKEUpICgodm9p
ZCkgKEUpKQogI2Vsc2UKLSMgZGVmaW5lIFlZVVNFKGUpIC8qIGVtcHR5ICovCisjIGRlZmluZSBZ
WVVTRShFKSAvKiBlbXB0eSAqLwogI2VuZGlmCiAKIC8qIElkZW50aXR5IGZ1bmN0aW9uLCB1c2Vk
IHRvIHN1cHByZXNzIHdhcm5pbmdzIGFib3V0IGNvbnN0YW50IGNvbmRpdGlvbnMuICAqLwogI2lm
bmRlZiBsaW50Ci0jIGRlZmluZSBZWUlEKG4pIChuKQorIyBkZWZpbmUgWVlJRChOKSAoTikKICNl
bHNlCiAjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAg
ICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIGlu
dAotWVlJRCAoaW50IGkpCitZWUlEIChpbnQgeXlpKQogI2Vsc2UKIHN0YXRpYyBpbnQKLVlZSUQg
KGkpCi0gICAgaW50IGk7CitZWUlEICh5eWkpCisgICAgaW50IHl5aTsKICNlbmRpZgogewotICBy
ZXR1cm4gaTsKKyAgcmV0dXJuIHl5aTsKIH0KICNlbmRpZgogCkBAIC00ODcsMTEgKzQ0MiwxMiBA
QCBZWUlEIChpKQogIyAgICBkZWZpbmUgYWxsb2NhIF9hbGxvY2EKICMgICBlbHNlCiAjICAgIGRl
ZmluZSBZWVNUQUNLX0FMTE9DIGFsbG9jYQotIyAgICBpZiAhIGRlZmluZWQgX0FMTE9DQV9IICYm
ICEgZGVmaW5lZCBfU1RETElCX0ggJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5
OV9fRlVOQ19fIFwKKyMgICAgaWYgISBkZWZpbmVkIF9BTExPQ0FfSCAmJiAhIGRlZmluZWQgRVhJ
VF9TVUNDRVNTICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBc
CiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKICMgICAg
IGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0j
ICAgICBpZm5kZWYgX1NURExJQl9ICi0jICAgICAgZGVmaW5lIF9TVERMSUJfSCAxCisgICAgICAv
KiBVc2UgRVhJVF9TVUNDRVNTIGFzIGEgd2l0bmVzcyBmb3Igc3RkbGliLmguICAqLworIyAgICAg
aWZuZGVmIEVYSVRfU1VDQ0VTUworIyAgICAgIGRlZmluZSBFWElUX1NVQ0NFU1MgMAogIyAgICAg
ZW5kaWYKICMgICAgZW5kaWYKICMgICBlbmRpZgpAQCAtNTE0LDI0ICs0NzAsMjQgQEAgWVlJRCAo
aSkKICMgIGlmbmRlZiBZWVNUQUNLX0FMTE9DX01BWElNVU0KICMgICBkZWZpbmUgWVlTVEFDS19B
TExPQ19NQVhJTVVNIFlZU0laRV9NQVhJTVVNCiAjICBlbmRpZgotIyAgaWYgKGRlZmluZWQgX19j
cGx1c3BsdXMgJiYgISBkZWZpbmVkIF9TVERMSUJfSCBcCisjICBpZiAoZGVmaW5lZCBfX2NwbHVz
cGx1cyAmJiAhIGRlZmluZWQgRVhJVF9TVUNDRVNTIFwKICAgICAgICAmJiAhICgoZGVmaW5lZCBZ
WU1BTExPQyB8fCBkZWZpbmVkIG1hbGxvYykgXAogCSAgICAgJiYgKGRlZmluZWQgWVlGUkVFIHx8
IGRlZmluZWQgZnJlZSkpKQogIyAgIGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJTkZSSU5HRVMgT04g
VVNFUiBOQU1FIFNQQUNFICovCi0jICAgaWZuZGVmIF9TVERMSUJfSAotIyAgICBkZWZpbmUgX1NU
RExJQl9IIDEKKyMgICBpZm5kZWYgRVhJVF9TVUNDRVNTCisjICAgIGRlZmluZSBFWElUX1NVQ0NF
U1MgMAogIyAgIGVuZGlmCiAjICBlbmRpZgogIyAgaWZuZGVmIFlZTUFMTE9DCiAjICAgZGVmaW5l
IFlZTUFMTE9DIG1hbGxvYwotIyAgIGlmICEgZGVmaW5lZCBtYWxsb2MgJiYgISBkZWZpbmVkIF9T
VERMSUJfSCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAor
IyAgIGlmICEgZGVmaW5lZCBtYWxsb2MgJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VTUyAmJiAoZGVm
aW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVk
IF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiB2b2lkICptYWxsb2MgKFlZU0laRV9U
KTsgLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwogIyAgIGVuZGlmCiAjICBlbmRp
ZgogIyAgaWZuZGVmIFlZRlJFRQogIyAgIGRlZmluZSBZWUZSRUUgZnJlZQotIyAgIGlmICEgZGVm
aW5lZCBmcmVlICYmICEgZGVmaW5lZCBfU1RETElCX0ggJiYgKGRlZmluZWQgX19TVERDX18gfHwg
ZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyMgICBpZiAhIGRlZmluZWQgZnJlZSAmJiAhIGRlZmlu
ZWQgRVhJVF9TVUNDRVNTICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZV
TkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikK
IHZvaWQgZnJlZSAodm9pZCAqKTsgLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwog
IyAgIGVuZGlmCkBAIC01NDIsMTQgKzQ5OCwxNiBAQCB2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElO
RlJJTkdFUyBPTiBVU0VSCiAKICNpZiAoISBkZWZpbmVkIHl5b3ZlcmZsb3cgXAogICAgICAmJiAo
ISBkZWZpbmVkIF9fY3BsdXNwbHVzIFwKLQkgfHwgKGRlZmluZWQgWVlTVFlQRV9JU19UUklWSUFM
ICYmIFlZU1RZUEVfSVNfVFJJVklBTCkpKQorCSB8fCAoZGVmaW5lZCBZWUxUWVBFX0lTX1RSSVZJ
QUwgJiYgWVlMVFlQRV9JU19UUklWSUFMIFwKKwkgICAgICYmIGRlZmluZWQgWVlTVFlQRV9JU19U
UklWSUFMICYmIFlZU1RZUEVfSVNfVFJJVklBTCkpKQogCiAvKiBBIHR5cGUgdGhhdCBpcyBwcm9w
ZXJseSBhbGlnbmVkIGZvciBhbnkgc3RhY2sgbWVtYmVyLiAgKi8KIHVuaW9uIHl5YWxsb2MKIHsK
LSAgeXl0eXBlX2ludDE2IHl5c3M7Ci0gIFlZU1RZUEUgeXl2czsKLSAgfTsKKyAgeXl0eXBlX2lu
dDE2IHl5c3NfYWxsb2M7CisgIFlZU1RZUEUgeXl2c19hbGxvYzsKKyAgWVlMVFlQRSB5eWxzX2Fs
bG9jOworfTsKIAogLyogVGhlIHNpemUgb2YgdGhlIG1heGltdW0gZ2FwIGJldHdlZW4gb25lIGFs
aWduZWQgc3RhY2sgYW5kIHRoZSBuZXh0LiAgKi8KICMgZGVmaW5lIFlZU1RBQ0tfR0FQX01BWElN
VU0gKHNpemVvZiAodW5pb24geXlhbGxvYykgLSAxKQpAQCAtNTU3LDM4ICs1MTUsMjIgQEAgdW5p
b24geXlhbGxvYwogLyogVGhlIHNpemUgb2YgYW4gYXJyYXkgbGFyZ2UgdG8gZW5vdWdoIHRvIGhv
bGQgYWxsIHN0YWNrcywgZWFjaCB3aXRoCiAgICBOIGVsZW1lbnRzLiAgKi8KICMgZGVmaW5lIFlZ
U1RBQ0tfQllURVMoTikgXAotICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNp
emVvZiAoWVlTVFlQRSkpIFwKLSAgICAgICsgWVlTVEFDS19HQVBfTUFYSU1VTSkKKyAgICAgKChO
KSAqIChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUpICsgc2l6ZW9mIChZ
WUxUWVBFKSkgXAorICAgICAgKyAyICogWVlTVEFDS19HQVBfTUFYSU1VTSkKIAotLyogQ29weSBD
T1VOVCBvYmplY3RzIGZyb20gRlJPTSB0byBUTy4gIFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9u
IGRvCi0gICBub3Qgb3ZlcmxhcC4gICovCi0jIGlmbmRlZiBZWUNPUFkKLSMgIGlmIGRlZmluZWQg
X19HTlVDX18gJiYgMSA8IF9fR05VQ19fCi0jICAgZGVmaW5lIFlZQ09QWShUbywgRnJvbSwgQ291
bnQpIFwKLSAgICAgIF9fYnVpbHRpbl9tZW1jcHkgKFRvLCBGcm9tLCAoQ291bnQpICogc2l6ZW9m
ICgqKEZyb20pKSkKLSMgIGVsc2UKLSMgICBkZWZpbmUgWVlDT1BZKFRvLCBGcm9tLCBDb3VudCkJ
CVwKLSAgICAgIGRvCQkJCQlcCi0JewkJCQkJXAotCSAgWVlTSVpFX1QgeXlpOwkJCQlcCi0JICBm
b3IgKHl5aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5aSsrKQlcCi0JICAgIChUbylbeXlpXSA9IChG
cm9tKVt5eWldOwkJXAotCX0JCQkJCVwKLSAgICAgIHdoaWxlIChZWUlEICgwKSkKLSMgIGVuZGlm
Ci0jIGVuZGlmCisjIGRlZmluZSBZWUNPUFlfTkVFREVEIDEKIAogLyogUmVsb2NhdGUgU1RBQ0sg
ZnJvbSBpdHMgb2xkIGxvY2F0aW9uIHRvIHRoZSBuZXcgb25lLiAgVGhlCiAgICBsb2NhbCB2YXJp
YWJsZXMgWVlTSVpFIGFuZCBZWVNUQUNLU0laRSBnaXZlIHRoZSBvbGQgYW5kIG5ldyBudW1iZXIg
b2YKICAgIGVsZW1lbnRzIGluIHRoZSBzdGFjaywgYW5kIFlZUFRSIGdpdmVzIHRoZSBuZXcgbG9j
YXRpb24gb2YgdGhlCiAgICBzdGFjay4gIEFkdmFuY2UgWVlQVFIgdG8gYSBwcm9wZXJseSBhbGln
bmVkIGxvY2F0aW9uIGZvciB0aGUgbmV4dAogICAgc3RhY2suICAqLwotIyBkZWZpbmUgWVlTVEFD
S19SRUxPQ0FURShTdGFjaykJCQkJCVwKKyMgZGVmaW5lIFlZU1RBQ0tfUkVMT0NBVEUoU3RhY2tf
YWxsb2MsIFN0YWNrKQkJCQlcCiAgICAgZG8JCQkJCQkJCQlcCiAgICAgICB7CQkJCQkJCQkJXAog
CVlZU0laRV9UIHl5bmV3Ynl0ZXM7CQkJCQkJXAotCVlZQ09QWSAoJnl5cHRyLT5TdGFjaywgU3Rh
Y2ssIHl5c2l6ZSk7CQkJCVwKLQlTdGFjayA9ICZ5eXB0ci0+U3RhY2s7CQkJCQkJXAorCVlZQ09Q
WSAoJnl5cHRyLT5TdGFja19hbGxvYywgU3RhY2ssIHl5c2l6ZSk7CQkJXAorCVN0YWNrID0gJnl5
cHRyLT5TdGFja19hbGxvYzsJCQkJCVwKIAl5eW5ld2J5dGVzID0geXlzdGFja3NpemUgKiBzaXpl
b2YgKCpTdGFjaykgKyBZWVNUQUNLX0dBUF9NQVhJTVVNOyBcCiAJeXlwdHIgKz0geXluZXdieXRl
cyAvIHNpemVvZiAoKnl5cHRyKTsJCQkJXAogICAgICAgfQkJCQkJCQkJCVwKQEAgLTU5NiwyMyAr
NTM4LDQzIEBAIHVuaW9uIHl5YWxsb2MKIAogI2VuZGlmCiAKKyNpZiBkZWZpbmVkIFlZQ09QWV9O
RUVERUQgJiYgWVlDT1BZX05FRURFRAorLyogQ29weSBDT1VOVCBvYmplY3RzIGZyb20gU1JDIHRv
IERTVC4gIFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRvCisgICBub3Qgb3ZlcmxhcC4gICov
CisjIGlmbmRlZiBZWUNPUFkKKyMgIGlmIGRlZmluZWQgX19HTlVDX18gJiYgMSA8IF9fR05VQ19f
CisjICAgZGVmaW5lIFlZQ09QWShEc3QsIFNyYywgQ291bnQpIFwKKyAgICAgIF9fYnVpbHRpbl9t
ZW1jcHkgKERzdCwgU3JjLCAoQ291bnQpICogc2l6ZW9mICgqKFNyYykpKQorIyAgZWxzZQorIyAg
IGRlZmluZSBZWUNPUFkoRHN0LCBTcmMsIENvdW50KSAgICAgICAgICAgICAgXAorICAgICAgZG8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIFlZU0laRV9UIHl5
aTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGZvciAoeXlpID0gMDsgeXlp
IDwgKENvdW50KTsgeXlpKyspICAgXAorICAgICAgICAgICAgKERzdClbeXlpXSA9IChTcmMpW3l5
aV07ICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgd2hpbGUgKFlZSUQgKDApKQorIyAgZW5kaWYKKyMgZW5kaWYKKyNl
bmRpZiAvKiAhWVlDT1BZX05FRURFRCAqLworCiAvKiBZWUZJTkFMIC0tIFN0YXRlIG51bWJlciBv
ZiB0aGUgdGVybWluYXRpb24gc3RhdGUuICAqLwotI2RlZmluZSBZWUZJTkFMICA3MQorI2RlZmlu
ZSBZWUZJTkFMICA3NAogLyogWVlMQVNUIC0tIExhc3QgaW5kZXggaW4gWVlUQUJMRS4gICovCi0j
ZGVmaW5lIFlZTEFTVCAgIDE0MTYKKyNkZWZpbmUgWVlMQVNUICAgMTQ5MAogCiAvKiBZWU5UT0tF
TlMgLS0gTnVtYmVyIG9mIHRlcm1pbmFscy4gICovCi0jZGVmaW5lIFlZTlRPS0VOUyAgOTYKKyNk
ZWZpbmUgWVlOVE9LRU5TICA5NQogLyogWVlOTlRTIC0tIE51bWJlciBvZiBub250ZXJtaW5hbHMu
ICAqLwotI2RlZmluZSBZWU5OVFMgIDgzCisjZGVmaW5lIFlZTk5UUyAgODQKIC8qIFlZTlJVTEVT
IC0tIE51bWJlciBvZiBydWxlcy4gICovCi0jZGVmaW5lIFlZTlJVTEVTICAyMDEKKyNkZWZpbmUg
WVlOUlVMRVMgIDIwMgogLyogWVlOUlVMRVMgLS0gTnVtYmVyIG9mIHN0YXRlcy4gICovCi0jZGVm
aW5lIFlZTlNUQVRFUyAgMzA0CisjZGVmaW5lIFlZTlNUQVRFUyAgMzA3CiAKIC8qIFlZVFJBTlNM
QVRFKFlZTEVYKSAtLSBCaXNvbiBzeW1ib2wgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gWVlMRVgu
ICAqLwogI2RlZmluZSBZWVVOREVGVE9LICAyCi0jZGVmaW5lIFlZTUFYVVRPSyAgIDM1MAorI2Rl
ZmluZSBZWU1BWFVUT0sgICAzNDkKIAogI2RlZmluZSBZWVRSQU5TTEFURShZWVgpCQkJCQkJXAog
ICAoKHVuc2lnbmVkIGludCkgKFlZWCkgPD0gWVlNQVhVVE9LID8geXl0cmFuc2xhdGVbWVlYXSA6
IFlZVU5ERUZUT0spCkBAIC02NTQsOCArNjE2LDcgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50
OCB5eXRyYW5zbGF0ZVtdCiAgICAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAg
IDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwKICAgICAgIDY1LCAgICA2NiwgICAgNjcs
ICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMsICAgIDc0LAogICAgICAg
NzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLCAgICA4
MywgICAgODQsCi0gICAgICA4NSwgICAgODYsICAgIDg3LCAgICA4OCwgICAgODksICAgIDkwLCAg
ICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwKLSAgICAgIDk1CisgICAgICA4NSwgICAgODYsICAg
IDg3LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NAogfTsK
IAogI2lmIFlZREVCVUcKQEAgLTY2MywxMTkgKzYyNCwxMjAgQEAgc3RhdGljIGNvbnN0IHl5dHlw
ZV91aW50OCB5eXRyYW5zbGF0ZVtdCiAgICBZWVJIUy4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBl
X3VpbnQxNiB5eXByaHNbXSA9CiB7Ci0gICAgICAgMCwgICAgIDAsICAgICAzLCAgICAgNSwgICAg
IDcsICAgICA5LCAgICAxMSwgICAgMTMsICAgIDE3LCAgICAxOSwKLSAgICAgIDI0LCAgICAyNiwg
ICAgMzAsICAgIDMzLCAgICAzNiwgICAgMzgsICAgIDQwLCAgICA0MiwgICAgNDYsICAgIDQ5LAot
ICAgICAgNTIsICAgIDU1LCAgICA1NywgICAgNjAsICAgIDY0LCAgICA2NywgICAgNjksICAgIDcx
LCAgICA3MywgICAgNzUsCi0gICAgICA3OCwgICAgODEsICAgIDg0LCAgICA4NiwgICAgODgsICAg
IDkwLCAgICA5MiwgICAgOTYsICAgMTAwLCAgIDEwMiwKLSAgICAgMTA2LCAgIDExMCwgICAxMTIs
ICAgMTE0LCAgIDExOCwgICAxMjIsICAgMTI2LCAgIDEzMCwgICAxMzIsICAgMTM2LAotICAgICAx
NDAsICAgMTQyLCAgIDE0NCwgICAxNDYsICAgMTQ4LCAgIDE1MiwgICAxNTQsICAgMTU4LCAgIDE2
MCwgICAxNjQsCi0gICAgIDE2NiwgICAxNzIsICAgMTc0LCAgIDE3OCwgICAxODAsICAgMTgyLCAg
IDE4NCwgICAxODYsICAgMTg4LCAgIDE5MCwKLSAgICAgMTk0LCAgIDE5NiwgICAxOTksICAgMjAy
LCAgIDIwNywgICAyMTAsICAgMjEyLCAgIDIxNCwgICAyMTcsICAgMjIxLAotICAgICAyMjUsICAg
MjI4LCAgIDIzNCwgICAyMzgsICAgMjQxLCAgIDI0NSwgICAyNDgsICAgMjQ5LCAgIDI1MSwgICAy
NTMsCi0gICAgIDI1NSwgICAyNTcsICAgMjU5LCAgIDI2MywgICAyNjksICAgMjc2LCAgIDI4Miwg
ICAyODQsICAgMjg3LCAgIDI5MiwKLSAgICAgMjk4LCAgIDMwMywgICAzMDYsICAgMzA4LCAgIDMx
MSwgICAzMTMsICAgMzE1LCAgIDMxNywgICAzMjAsICAgMzIyLAotICAgICAzMjQsICAgMzI3LCAg
IDMyOSwgICAzMzEsICAgMzMzLCAgIDMzNSwgICAzNDAsICAgMzQyLCAgIDM0NCwgICAzNDYsCisg
ICAgICAgMCwgICAgIDAsICAgICAzLCAgICAgNSwgICAgIDcsICAgICA5LCAgICAxMSwgICAgMTMs
ICAgIDE1LCAgICAxNywKKyAgICAgIDIxLCAgICAyMywgICAgMjgsICAgIDMwLCAgICAzNCwgICAg
MzcsICAgIDQwLCAgICA0MiwgICAgNDQsICAgIDQ2LAorICAgICAgNTAsICAgIDUzLCAgICA1Niwg
ICAgNTksICAgIDYxLCAgICA2NCwgICAgNjgsICAgIDcxLCAgICA3MywgICAgNzUsCisgICAgICA3
NywgICAgODAsICAgIDgzLCAgICA4NiwgICAgODgsICAgIDkwLCAgICA5MiwgICAgOTQsICAgIDk4
LCAgIDEwMiwKKyAgICAgMTA0LCAgIDEwOCwgICAxMTIsICAgMTE0LCAgIDExNiwgICAxMjAsICAg
MTI0LCAgIDEyOCwgICAxMzIsICAgMTM0LAorICAgICAxMzgsICAgMTQyLCAgIDE0NCwgICAxNDYs
ICAgMTQ4LCAgIDE1MCwgICAxNTQsICAgMTU2LCAgIDE2MCwgICAxNjIsCisgICAgIDE2NiwgICAx
NjgsICAgMTc0LCAgIDE3NiwgICAxODAsICAgMTgyLCAgIDE4NCwgICAxODYsICAgMTg4LCAgIDE5
MCwKKyAgICAgMTkyLCAgIDE5NiwgICAxOTgsICAgMjAxLCAgIDIwNCwgICAyMDksICAgMjEyLCAg
IDIxNCwgICAyMTYsICAgMjE5LAorICAgICAyMjMsICAgMjI3LCAgIDIzMCwgICAyMzYsICAgMjQw
LCAgIDI0MywgICAyNDcsICAgMjUwLCAgIDI1MSwgICAyNTMsCisgICAgIDI1NSwgICAyNTcsICAg
MjU5LCAgIDI2MSwgICAyNjUsICAgMjcxLCAgIDI3OCwgICAyODQsICAgMjg2LCAgIDI4OSwKKyAg
ICAgMjk0LCAgIDMwMCwgICAzMDUsICAgMzA4LCAgIDMxMCwgICAzMTMsICAgMzE1LCAgIDMxNywg
ICAzMTksICAgMzIyLAorICAgICAzMjQsICAgMzI2LCAgIDMyOSwgICAzMzEsICAgMzMzLCAgIDMz
NSwgICAzMzcsICAgMzQyLCAgIDM0NCwgICAzNDYsCiAgICAgIDM0OCwgICAzNTAsICAgMzUyLCAg
IDM1NCwgICAzNTYsICAgMzU4LCAgIDM2MCwgICAzNjIsICAgMzY0LCAgIDM2NiwKLSAgICAgMzY4
LCAgIDM3MCwgICAzNzIsICAgMzc0LCAgIDM3NiwgICAzNzgsICAgMzgwLCAgIDM4MiwgICAzODQs
ICAgMzg1LAotICAgICAzOTIsICAgMzkzLCAgIDM5OSwgICA0MDEsICAgNDA0LCAgIDQwOCwgICA0
MTAsICAgNDE0LCAgIDQxNiwgICA0MjEsCi0gICAgIDQyMywgICA0MjUsICAgNDI3LCAgIDQyOSwg
ICA0MzEsICAgNDMzLCAgIDQzNSwgICA0MzcsICAgNDM5LCAgIDQ0MiwKLSAgICAgNDQzLCAgIDQ0
NCwgICA0NTAsICAgNDUyLCAgIDQ1NCwgICA0NTUsICAgNDU4LCAgIDQ1OSwgICA0NjIsICAgNDY1
LAotICAgICA0NjksICAgNDcxLCAgIDQ3NCwgICA0NzYsICAgNDc5LCAgIDQ4NSwgICA0ODksICAg
NDkxLCAgIDQ5MywgICA0OTgsCi0gICAgIDQ5OSwgICA1MDYsICAgNTA3LCAgIDUxNiwgICA1MTcs
ICAgNTI1LCAgIDUyNywgICA1MjksICAgNTMxLCAgIDUzMiwKLSAgICAgNTM1LCAgIDUzOSwgICA1
NDIsICAgNTQ1LCAgIDU0OCwgICA1NTIsICAgNTU1LCAgIDU1NywgICA1NjAsICAgNTYyLAotICAg
ICA1NjQsICAgNTY1CisgICAgIDM2OCwgICAzNzAsICAgMzcyLCAgIDM3NCwgICAzNzYsICAgMzc4
LCAgIDM4MCwgICAzODIsICAgMzg0LCAgIDM4NiwKKyAgICAgMzg3LCAgIDM5NCwgICAzOTUsICAg
NDAxLCAgIDQwMywgICA0MDYsICAgNDEwLCAgIDQxMiwgICA0MTYsICAgNDE4LAorICAgICA0MjMs
ICAgNDI1LCAgIDQyNywgICA0MjksICAgNDMxLCAgIDQzMywgICA0MzUsICAgNDM3LCAgIDQzOSwg
ICA0NDEsCisgICAgIDQ0NCwgICA0NDUsICAgNDQ2LCAgIDQ1MiwgICA0NTQsICAgNDU2LCAgIDQ1
NywgICA0NjAsICAgNDYxLCAgIDQ2NCwKKyAgICAgNDY3LCAgIDQ3MSwgICA0NzMsICAgNDc2LCAg
IDQ3OCwgICA0ODEsICAgNDg3LCAgIDQ5MSwgICA0OTMsICAgNDk1LAorICAgICA1MDAsICAgNTAx
LCAgIDUwOCwgICA1MDksICAgNTE4LCAgIDUxOSwgICA1MjcsICAgNTI5LCAgIDUzMSwgICA1MzMs
CisgICAgIDUzNCwgICA1MzcsICAgNTQxLCAgIDU0NCwgICA1NDcsICAgNTUwLCAgIDU1NCwgICA1
NTcsICAgNTU5LCAgIDU2MiwKKyAgICAgNTY0LCAgIDU2NiwgICA1NjcKIH07CiAKIC8qIFlZUkhT
IC0tIEEgYC0xJy1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgcnVsZXMnIFJIUy4gICovCiBzdGF0aWMg
Y29uc3QgeXl0eXBlX2ludDE2IHl5cmhzW10gPQogewotICAgICAxNzUsICAgICAwLCAgICAtMSwg
ICAgNDUsICAgIC0xLCAgICA5NywgICAgLTEsICAgIDQ4LCAgICAtMSwgICAgNDcsCi0gICAgICAt
MSwgICAgNDksICAgIC0xLCAgICA3MiwgICAxMjQsICAgIDczLCAgICAtMSwgICAgOTgsICAgIC0x
LCAgICA5OSwKLSAgICAgIDc0LCAgIDEwMCwgICAgNzUsICAgIC0xLCAgIDEwMSwgICAgLTEsICAg
IDk5LCAgICA3OCwgICAgNTAsICAgIC0xLAotICAgICAgOTksICAgIDUzLCAgICAtMSwgICAgOTks
ICAgIDU0LCAgICAtMSwgICAxMjQsICAgIC0xLCAgIDEwMiwgICAgLTEsCi0gICAgIDEwMywgICAg
LTEsICAgIDk5LCAgICA3OCwgICAxMDMsICAgIC0xLCAgIDEwNSwgICAgNzMsICAgIC0xLCAgIDEw
NCwKLSAgICAgIDczLCAgICAtMSwgICAxMDYsICAgIDM5LCAgICAtMSwgICAxMDYsICAgIC0xLCAg
IDEwNiwgICAxMjIsICAgIC0xLAotICAgICAxMDUsICAgIDc5LCAgIDEyMiwgICAgLTEsICAgMTA3
LCAgICA3MiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAgNDUsCi0gICAgICAtMSwgICAgNTAsICAg
IC0xLCAgICA5OSwgICAgLTEsICAgIDUzLCAgIDEwOCwgICAgLTEsICAgIDU0LCAgIDEwOCwKLSAg
ICAgIC0xLCAgIDEwOSwgICAxMDgsICAgIC0xLCAgICA4NiwgICAgLTEsICAgIDg0LCAgICAtMSwg
ICAgODMsICAgIC0xLAotICAgICAxMDgsICAgIC0xLCAgIDExMCwgICAgODcsICAgMTA4LCAgICAt
MSwgICAxMTAsICAgIDg4LCAgIDEwOCwgICAgLTEsCi0gICAgIDExMCwgICAgLTEsICAgMTExLCAg
ICA4NiwgICAxMTAsICAgIC0xLCAgIDExMSwgICAgODQsICAgMTEwLCAgICAtMSwKLSAgICAgMTEx
LCAgICAtMSwgICAxMTIsICAgIC0xLCAgIDExMywgICAgOTAsICAgMTEyLCAgICAtMSwgICAxMTMs
ICAgIDkxLAotICAgICAxMTIsICAgIC0xLCAgIDExMywgICAgNTUsICAgMTEyLCAgICAtMSwgICAx
MTMsICAgIDU2LCAgIDExMiwgICAgLTEsCi0gICAgIDExMywgICAgLTEsICAgMTE0LCAgICA1Nywg
ICAxMTMsICAgIC0xLCAgIDExNCwgICAgNTgsICAgMTEzLCAgICAtMSwKLSAgICAgMTE0LCAgICAt
MSwgICAxMTUsICAgIC0xLCAgIDExNiwgICAgLTEsICAgMTE3LCAgICAtMSwgICAxMTgsICAgIDU5
LAotICAgICAxMTcsICAgIC0xLCAgIDExOCwgICAgLTEsICAgMTE5LCAgICA2MSwgICAxMTgsICAg
IC0xLCAgIDExOSwgICAgLTEsCi0gICAgIDEyMCwgICAgNjAsICAgMTE5LCAgICAtMSwgICAxMjAs
ICAgIC0xLCAgIDEyMCwgICAgOTUsICAgMTI0LCAgICA4MCwKLSAgICAgMTIyLCAgICAtMSwgICAx
MjEsICAgIC0xLCAgIDEwOCwgICAxMjMsICAgMTIyLCAgICAtMSwgICAgODEsICAgIC0xLAotICAg
ICAgNjIsICAgIC0xLCAgICA2MywgICAgLTEsICAgIDY0LCAgICAtMSwgICAgNzEsICAgIC0xLCAg
IDEyMiwgICAgLTEsCi0gICAgIDEyNCwgICAgNzksICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0x
LCAgIDEyNywgICAgODIsICAgIC0xLCAgIDEzNSwKLSAgICAgIDgyLCAgICAtMSwgICAgIDcsICAg
MTQwLCAgIDE0MSwgICAgODIsICAgIC0xLCAgIDEyOCwgICAgNzMsICAgIC0xLAotICAgICAxMzAs
ICAgIC0xLCAgIDEyOSwgICAgLTEsICAgMTMwLCAgIDEzMiwgICAgLTEsICAgMTI5LCAgICA3OSwg
ICAxMzIsCi0gICAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3MiwgICAgLTEsICAgMTM5LCAgICA0
NSwgICAgLTEsICAgMTM5LCAgICA0NSwKLSAgICAgIDc0LCAgIDEyNSwgICAgNzUsICAgIC0xLCAg
IDEzOCwgICAxMzMsICAgMTMxLCAgICAtMSwgICAxMzMsICAgMTMxLAotICAgICAgLTEsICAgMTM4
LCAgIDEzMywgICAxMzQsICAgIC0xLCAgIDEzMywgICAxMzQsICAgIC0xLCAgICAtMSwgICAgMzMs
Ci0gICAgICAtMSwgICAgMzQsICAgIC0xLCAgICAzNSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAx
MzYsICAgIC0xLCAgIDEzNSwKLSAgICAgIDc5LCAgICA0NSwgICAgLTEsICAgMTM1LCAgICA3OSwg
ICAgNDUsICAgIDc0LCAgICA3NSwgICAgLTEsICAgMTM1LAotICAgICAgNzksICAgIDQ1LCAgICA3
NCwgICAxMjUsICAgIDc1LCAgICAtMSwgICAxMzUsICAgIDc5LCAgICA0NSwgICAgODEsCi0gICAg
IDE1MCwgICAgLTEsICAgMTM3LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICAtMSwgICAxMzcsICAg
IDQ1LCAgICA3NCwKLSAgICAgIDc1LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3NCwgICAxMjUs
ICAgIDc1LCAgICAtMSwgICAxMzcsICAgIDQ1LAotICAgICAgODEsICAgMTUwLCAgICAtMSwgICAg
IDMsICAgIDQ1LCAgICAtMSwgICAxMzksICAgIC0xLCAgIDEzOCwgICAxMzksCi0gICAgICAtMSwg
ICAgIDksICAgIC0xLCAgICAgOCwgICAgLTEsICAgIDM3LCAgICAtMSwgICAgIDMsICAgIDM3LCAg
ICAtMSwKLSAgICAgIDM2LCAgICAtMSwgICAxNDEsICAgIC0xLCAgIDE0MCwgICAxNDEsICAgIC0x
LCAgICAgNCwgICAgLTEsICAgICA1LAotICAgICAgLTEsICAgICA2LCAgICAtMSwgICAxNDIsICAg
IC0xLCAgIDE0MiwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsCi0gICAgICAzOSwgICAgLTEs
ICAgIDExLCAgICAtMSwgICAgMTIsICAgIC0xLCAgICAxMCwgICAgLTEsICAgIDI3LCAgICAtMSwK
LSAgICAgIDI4LCAgICAtMSwgICAgMjksICAgIC0xLCAgICAyMSwgICAgLTEsICAgIDIyLCAgICAt
MSwgICAgMjMsICAgIC0xLAotICAgICAgMjQsICAgIC0xLCAgICAyNSwgICAgLTEsICAgIDI2LCAg
ICAtMSwgICAgMzAsICAgIC0xLCAgICAzMSwgICAgLTEsCi0gICAgICAzMiwgICAgLTEsICAgIDQx
LCAgICAtMSwgICAgNDIsICAgIC0xLCAgICA0MywgICAgLTEsICAgIDQ0LCAgICAtMSwKLSAgICAg
MTQzLCAgICAtMSwgICAgNDYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDQ1LCAgICA3NiwgICAx
NDQsICAgMTQ2LAotICAgICAgNzcsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDc2LCAgIDE0NSwg
ICAxNDYsICAgIDc3LCAgICAtMSwgICAxNDcsCi0gICAgICAtMSwgICAxNDYsICAgMTQ3LCAgICAt
MSwgICAxMzksICAgMTQ4LCAgICA4MiwgICAgLTEsICAgMTQ5LCAgICAtMSwKLSAgICAgMTQ4LCAg
ICA3OSwgICAxNDksICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDQ1LCAgICA3NCwgICAxMjUsICAg
IDc1LAotICAgICAgLTEsICAgMTIyLCAgICAtMSwgICAxMjYsICAgIC0xLCAgIDE1NCwgICAgLTEs
ICAgMTUzLCAgICAtMSwgICAxNTEsCi0gICAgICAtMSwgICAxNjMsICAgIC0xLCAgIDE2NCwgICAg
LTEsICAgMTY3LCAgICAtMSwgICAxNzQsICAgIC0xLCAgICA3NiwKLSAgICAgIDc3LCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA3NiwgICAxNTUsICAgMTYyLCAgIDE1NiwgICAgNzcsICAgIC0xLAot
ICAgICAxNjEsICAgIC0xLCAgIDE1MywgICAgLTEsICAgIC0xLCAgIDE1OSwgICAxNjEsICAgIC0x
LCAgICAtMSwgICAxNjAsCi0gICAgIDE1MywgICAgLTEsICAgIDc2LCAgICA3NywgICAgLTEsICAg
IDc2LCAgIDE2MiwgICAgNzcsICAgIC0xLCAgIDE1MiwKLSAgICAgIC0xLCAgIDE2MiwgICAxNTIs
ICAgIC0xLCAgICA4MiwgICAgLTEsICAgMTI0LCAgICA4MiwgICAgLTEsICAgIDE4LAotICAgICAg
NzIsICAgMTI0LCAgICA3MywgICAxNjUsICAgIC0xLCAgIDE1OCwgICAgMTYsICAgMTU4LCAgICAt
MSwgICAxNTgsCi0gICAgICAtMSwgICAxMjQsICAgIC0xLCAgIDEzNywgICAgNDUsICAgIDgxLCAg
IDE1MCwgICAgLTEsICAgIC0xLCAgICA0MCwKLSAgICAgIDcyLCAgIDE2OCwgICAxNjYsICAgIDcz
LCAgIDE1NywgICAgLTEsICAgIC0xLCAgICAxNSwgICAxNjksICAgMTU4LAotICAgICAgNDAsICAg
IDcyLCAgIDEyNCwgICAgNzMsICAgIDgyLCAgICAtMSwgICAgLTEsICAgIDE3LCAgICA3MiwgICAx
NzAsCi0gICAgIDE3MSwgICAxNzMsICAgIDczLCAgIDE1NywgICAgLTEsICAgMTYzLCAgICAtMSwg
ICAxNTEsICAgIC0xLCAgIDE2NiwKLSAgICAgIC0xLCAgICAtMSwgICAxNzIsICAgIDgyLCAgICAt
MSwgICAxNzIsICAgIDgyLCAgIDEyNCwgICAgLTEsICAgIDE0LAotICAgICAgODIsICAgIC0xLCAg
ICAxMywgICAgODIsICAgIC0xLCAgICAyMCwgICAgODIsICAgIC0xLCAgICAyMCwgICAxMjQsCi0g
ICAgICA4MiwgICAgLTEsICAgIDE5LCAgICA4MiwgICAgLTEsICAgMTc2LCAgICAtMSwgICAxNzUs
ICAgMTc2LCAgICAtMSwKLSAgICAgMTc3LCAgICAtMSwgICAxMjYsICAgIC0xLCAgICAtMSwgICAx
MjcsICAgMTc4LCAgIDE2MSwgICAgLTEKKyAgICAgMTc1LCAgICAgMCwgICAgLTEsICAgIDQ1LCAg
ICAtMSwgICAgNDYsICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDk3LAorICAgICAgLTEsICAgIDQ4
LCAgICAtMSwgICAgNDcsICAgIC0xLCAgICA0OSwgICAgLTEsICAgIDcxLCAgIDEyNCwgICAgNzIs
CisgICAgICAtMSwgICAgOTgsICAgIC0xLCAgICA5OSwgICAgNzMsICAgMTAwLCAgICA3NCwgICAg
LTEsICAgMTAxLCAgICAtMSwKKyAgICAgIDk5LCAgICA3NywgICAgOTYsICAgIC0xLCAgICA5OSwg
ICAgNTIsICAgIC0xLCAgICA5OSwgICAgNTMsICAgIC0xLAorICAgICAxMjQsICAgIC0xLCAgIDEw
MiwgICAgLTEsICAgMTAzLCAgICAtMSwgICAgOTksICAgIDc3LCAgIDEwMywgICAgLTEsCisgICAg
IDEwNSwgICAgNzIsICAgIC0xLCAgIDEwNCwgICAgNzIsICAgIC0xLCAgIDEwNiwgICAgMzksICAg
IC0xLCAgIDEwNiwKKyAgICAgIC0xLCAgIDEwNiwgICAxMjIsICAgIC0xLCAgIDEwNSwgICAgNzgs
ICAgMTIyLCAgICAtMSwgICAxMDcsICAgIDcxLAorICAgICAgLTEsICAgMTQyLCAgICAtMSwgICAg
NDUsICAgIC0xLCAgICA5OSwgICAgLTEsICAgIDUyLCAgIDEwOCwgICAgLTEsCisgICAgICA1Mywg
ICAxMDgsICAgIC0xLCAgIDEwOSwgICAxMDgsICAgIC0xLCAgICA4NSwgICAgLTEsICAgIDgzLCAg
ICAtMSwKKyAgICAgIDgyLCAgICAtMSwgICAxMDgsICAgIC0xLCAgIDExMCwgICAgODYsICAgMTA4
LCAgICAtMSwgICAxMTAsICAgIDg3LAorICAgICAxMDgsICAgIC0xLCAgIDExMCwgICAgLTEsICAg
MTExLCAgICA4NSwgICAxMTAsICAgIC0xLCAgIDExMSwgICAgODMsCisgICAgIDExMCwgICAgLTEs
ICAgMTExLCAgICAtMSwgICAxMTIsICAgIC0xLCAgIDExMywgICAgODksICAgMTEyLCAgICAtMSwK
KyAgICAgMTEzLCAgICA5MCwgICAxMTIsICAgIC0xLCAgIDExMywgICAgNTQsICAgMTEyLCAgICAt
MSwgICAxMTMsICAgIDU1LAorICAgICAxMTIsICAgIC0xLCAgIDExMywgICAgLTEsICAgMTE0LCAg
ICA1NiwgICAxMTMsICAgIC0xLCAgIDExNCwgICAgNTcsCisgICAgIDExMywgICAgLTEsICAgMTE0
LCAgICAtMSwgICAxMTUsICAgIC0xLCAgIDExNiwgICAgLTEsICAgMTE3LCAgICAtMSwKKyAgICAg
MTE4LCAgICA1OCwgICAxMTcsICAgIC0xLCAgIDExOCwgICAgLTEsICAgMTE5LCAgICA2MCwgICAx
MTgsICAgIC0xLAorICAgICAxMTksICAgIC0xLCAgIDEyMCwgICAgNTksICAgMTE5LCAgICAtMSwg
ICAxMjAsICAgIC0xLCAgIDEyMCwgICAgOTQsCisgICAgIDEyNCwgICAgNzksICAgMTIyLCAgICAt
MSwgICAxMjEsICAgIC0xLCAgIDEwOCwgICAxMjMsICAgMTIyLCAgICAtMSwKKyAgICAgIDgwLCAg
ICAtMSwgICAgNjEsICAgIC0xLCAgICA2MiwgICAgLTEsICAgIDYzLCAgICAtMSwgICAgNzAsICAg
IC0xLAorICAgICAxMjIsICAgIC0xLCAgIDEyNCwgICAgNzgsICAgMTIyLCAgICAtMSwgICAxMjEs
ICAgIC0xLCAgIDEyNywgICAgODEsCisgICAgICAtMSwgICAxMzUsICAgIDgxLCAgICAtMSwgICAg
IDcsICAgMTQwLCAgIDE0MSwgICAgODEsICAgIC0xLCAgIDEyOCwKKyAgICAgIDcyLCAgICAtMSwg
ICAxMzAsICAgIC0xLCAgIDEyOSwgICAgLTEsICAgMTMwLCAgIDEzMiwgICAgLTEsICAgMTI5LAor
ICAgICAgNzgsICAgMTMyLCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3MSwgICAgLTEsICAgMTM5
LCAgICA5NiwgICAgLTEsCisgICAgIDEzOSwgICAgOTYsICAgIDczLCAgIDEyNSwgICAgNzQsICAg
IC0xLCAgIDEzOCwgICAxMzMsICAgMTMxLCAgICAtMSwKKyAgICAgMTMzLCAgIDEzMSwgICAgLTEs
ICAgMTM4LCAgIDEzMywgICAxMzQsICAgIC0xLCAgIDEzMywgICAxMzQsICAgIC0xLAorICAgICAg
LTEsICAgIDMzLCAgICAtMSwgICAgMzQsICAgIC0xLCAgICAzNSwgICAgLTEsICAgMTM5LCAgICAt
MSwgICAxMzYsCisgICAgICAtMSwgICAxMzUsICAgIDc4LCAgICA5NiwgICAgLTEsICAgMTM1LCAg
ICA3OCwgICAgOTYsICAgIDczLCAgICA3NCwKKyAgICAgIC0xLCAgIDEzNSwgICAgNzgsICAgIDk2
LCAgICA3MywgICAxMjUsICAgIDc0LCAgICAtMSwgICAxMzUsICAgIDc4LAorICAgICAgOTYsICAg
IDgwLCAgIDE1MCwgICAgLTEsICAgMTM3LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICAtMSwgICAx
MzcsCisgICAgICA5NiwgICAgNzMsICAgIDc0LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICA3Mywg
ICAxMjUsICAgIDc0LCAgICAtMSwKKyAgICAgMTM3LCAgICA5NiwgICAgODAsICAgMTUwLCAgICAt
MSwgICAgIDMsICAgIDQ1LCAgICAtMSwgICAxMzksICAgIC0xLAorICAgICAxMzgsICAgMTM5LCAg
ICAtMSwgICAgIDksICAgIC0xLCAgICAgOCwgICAgLTEsICAgIDM3LCAgICAtMSwgICAgIDMsCisg
ICAgICAzNywgICAgLTEsICAgIDM2LCAgICAtMSwgICAxNDEsICAgIC0xLCAgIDE0MCwgICAxNDEs
ICAgIC0xLCAgICAgNCwKKyAgICAgIC0xLCAgICAgNSwgICAgLTEsICAgICA2LCAgICAtMSwgICAx
NDIsICAgIC0xLCAgIDE0MiwgICAgNzMsICAgMTI1LAorICAgICAgNzQsICAgIC0xLCAgICAzOSwg
ICAgLTEsICAgIDExLCAgICAtMSwgICAgMTIsICAgIC0xLCAgICAxMCwgICAgLTEsCisgICAgICAy
NywgICAgLTEsICAgIDI4LCAgICAtMSwgICAgMjksICAgIC0xLCAgICAyMSwgICAgLTEsICAgIDIy
LCAgICAtMSwKKyAgICAgIDIzLCAgICAtMSwgICAgMjQsICAgIC0xLCAgICAyNSwgICAgLTEsICAg
IDI2LCAgICAtMSwgICAgMzAsICAgIC0xLAorICAgICAgMzEsICAgIC0xLCAgICAzMiwgICAgLTEs
ICAgIDQxLCAgICAtMSwgICAgNDIsICAgIC0xLCAgICA0MywgICAgLTEsCisgICAgICA0NCwgICAg
LTEsICAgMTQzLCAgICAtMSwgICAgNDYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDk2LCAgICA3
NSwKKyAgICAgMTQ0LCAgIDE0NiwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDc1LCAg
IDE0NSwgICAxNDYsICAgIDc2LAorICAgICAgLTEsICAgMTQ3LCAgICAtMSwgICAxNDYsICAgMTQ3
LCAgICAtMSwgICAxMzksICAgMTQ4LCAgICA4MSwgICAgLTEsCisgICAgIDE0OSwgICAgLTEsICAg
MTQ4LCAgICA3OCwgICAxNDksICAgIC0xLCAgICA5NiwgICAgLTEsICAgIDk2LCAgICA3MywKKyAg
ICAgMTI1LCAgICA3NCwgICAgLTEsICAgMTIyLCAgICAtMSwgICAxMjYsICAgIC0xLCAgIDE1NCwg
ICAgLTEsICAgMTUzLAorICAgICAgLTEsICAgMTUxLCAgICAtMSwgICAxNjMsICAgIC0xLCAgIDE2
NCwgICAgLTEsICAgMTY3LCAgICAtMSwgICAxNzQsCisgICAgICAtMSwgICAgNzUsICAgIDc2LCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICA3NSwgICAxNTUsICAgMTYyLCAgIDE1NiwKKyAgICAgIDc2
LCAgICAtMSwgICAxNjEsICAgIC0xLCAgIDE1MywgICAgLTEsICAgIC0xLCAgIDE1OSwgICAxNjEs
ICAgIC0xLAorICAgICAgLTEsICAgMTYwLCAgIDE1MywgICAgLTEsICAgIDc1LCAgICA3NiwgICAg
LTEsICAgIDc1LCAgIDE2MiwgICAgNzYsCisgICAgICAtMSwgICAxNTIsICAgIC0xLCAgIDE2Miwg
ICAxNTIsICAgIC0xLCAgICA4MSwgICAgLTEsICAgMTI0LCAgICA4MSwKKyAgICAgIC0xLCAgICAx
OCwgICAgNzEsICAgMTI0LCAgICA3MiwgICAxNjUsICAgIC0xLCAgIDE1OCwgICAgMTYsICAgMTU4
LAorICAgICAgLTEsICAgMTU4LCAgICAtMSwgICAxMjQsICAgIC0xLCAgIDEzNywgICAgOTYsICAg
IDgwLCAgIDE1MCwgICAgLTEsCisgICAgICAtMSwgICAgNDAsICAgIDcxLCAgIDE2OCwgICAxNjYs
ICAgIDcyLCAgIDE1NywgICAgLTEsICAgIC0xLCAgICAxNSwKKyAgICAgMTY5LCAgIDE1OCwgICAg
NDAsICAgIDcxLCAgIDEyNCwgICAgNzIsICAgIDgxLCAgICAtMSwgICAgLTEsICAgIDE3LAorICAg
ICAgNzEsICAgMTcwLCAgIDE3MSwgICAxNzMsICAgIDcyLCAgIDE1NywgICAgLTEsICAgMTYzLCAg
ICAtMSwgICAxNTEsCisgICAgICAtMSwgICAxNjYsICAgIC0xLCAgICAtMSwgICAxNzIsICAgIDgx
LCAgICAtMSwgICAxNzIsICAgIDgxLCAgIDEyNCwKKyAgICAgIC0xLCAgICAxNCwgICAgODEsICAg
IC0xLCAgICAxMywgICAgODEsICAgIC0xLCAgICAyMCwgICAgODEsICAgIC0xLAorICAgICAgMjAs
ICAgMTI0LCAgICA4MSwgICAgLTEsICAgIDE5LCAgICA4MSwgICAgLTEsICAgMTc2LCAgICAtMSwg
ICAxNzUsCisgICAgIDE3NiwgICAgLTEsICAgMTc3LCAgICAtMSwgICAxMjYsICAgIC0xLCAgICAt
MSwgICAxMjcsICAgMTc4LCAgIDE2MSwKKyAgICAgIC0xCiB9OwogCiAvKiBZWVJMSU5FW1lZTl0g
LS0gc291cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8KIHN0
YXRpYyBjb25zdCB5eXR5cGVfdWludDE2IHl5cmxpbmVbXSA9CiB7Ci0gICAgICAgMCwgICAxNjgs
ICAgMTY4LCAgIDIwMywgICAyMDYsICAgMjE5LCAgIDIyNCwgICAyMjksICAgMjM1LCAgIDIzOCwK
LSAgICAgMzE3LCAgIDMyMCwgICA0MjEsICAgNDMxLCAgIDQ0NCwgICA0NTIsICAgNTUyLCAgIDU1
NSwgICA1NjMsICAgNTY3LAotICAgICA1NzQsICAgNTc4LCAgIDU4NSwgICA1OTEsICAgNjAwLCAg
IDYwOCwgICA2NjMsICAgNjcwLCAgIDY4MCwgICA2ODMsCi0gICAgIDY5MywgICA3MDMsICAgNzI0
LCAgIDcyNSwgICA3MjYsICAgNzMxLCAgIDczMiwgICA3NDEsICAgNzUzLCAgIDc1NCwKLSAgICAg
NzYyLCAgIDc3MywgICA3NzcsICAgNzc4LCAgIDc4OCwgICA3OTgsICAgODA4LCAgIDgyMSwgICA4
MjIsICAgODMyLAotICAgICA4NDUsICAgODQ5LCAgIDg1MywgICA4NTcsICAgODU4LCAgIDg3MSwg
ICA4NzIsICAgODg1LCAgIDg4NiwgICA4OTksCi0gICAgIDkwMCwgICA5MTcsICAgOTE4LCAgIDkz
MSwgICA5MzIsICAgOTMzLCAgIDkzNCwgICA5MzUsICAgOTM5LCAgIDk0MiwKLSAgICAgOTUzLCAg
IDk2MSwgICA5ODgsICAgOTkzLCAgMTAwNywgIDEwNDUsICAxMDQ4LCAgMTA1NSwgIDEwNjMsICAx
MDg0LAotICAgIDExMDUsICAxMTE2LCAgMTE0NSwgIDExNTAsICAxMTYwLCAgMTE2NSwgIDExNzUs
ICAxMTc4LCAgMTE4MSwgIDExODQsCi0gICAgMTE5MCwgIDExOTcsICAxMjAwLCAgMTIyMiwgIDEy
NDAsICAxMjY0LCAgMTI4NywgIDEyOTEsICAxMzA5LCAgMTMxNywKLSAgICAxMzQ5LCAgMTM2OSwg
IDE0NTgsICAxNDY3LCAgMTQ5MCwgIDE0OTMsICAxNDk5LCAgMTUwNywgIDE1MTUsICAxNTIzLAot
ICAgIDE1MzMsICAxNTQwLCAgMTU0MywgIDE1NDYsICAxNTUyLCAgMTU1NSwgIDE1NzAsICAxNTc0
LCAgMTU3OCwgIDE1ODIsCi0gICAgMTU5MSwgIDE1OTYsICAxNjAxLCAgMTYwNiwgIDE2MTEsICAx
NjE2LCAgMTYyMSwgIDE2MjYsICAxNjMxLCAgMTYzNiwKLSAgICAxNjQyLCAgMTY0OCwgIDE2NTQs
ICAxNjU5LCAgMTY2NCwgIDE2NzMsICAxNjgyLCAgMTY4NywgIDE3MDAsICAxNzAwLAotICAgIDE3
MTQsICAxNzE0LCAgMTcyMywgIDE3MjYsICAxNzQxLCAgMTc3NywgIDE3ODEsICAxNzg3LCAgMTc5
NSwgIDE4MTEsCi0gICAgMTgxNSwgIDE4MTksICAxODIwLCAgMTgyNiwgIDE4MjcsICAxODI4LCAg
MTgyOSwgIDE4MzAsICAxODM0LCAgMTgzNSwKLSAgICAxODM1LCAgMTgzNSwgIDE4NDUsICAxODQ2
LCAgMTg1MCwgIDE4NTAsICAxODUxLCAgMTg1MSwgIDE4NTYsICAxODU5LAotICAgIDE4NjksICAx
ODcyLCAgMTg3OCwgIDE4NzksICAxODgzLCAgMTg5MSwgIDE4OTUsICAxOTA1LCAgMTkxMCwgIDE5
MjcsCi0gICAgMTkyNywgIDE5MzIsICAxOTMyLCAgMTkzOSwgIDE5MzksICAxOTQ3LCAgMTk1MCwg
IDE5NTYsICAxOTU5LCAgMTk2NSwKLSAgICAxOTY5LCAgMTk3NiwgIDE5ODMsICAxOTkwLCAgMTk5
NywgIDIwMDgsICAyMDE3LCAgMjAyMSwgIDIwMjgsICAyMDMxLAotICAgIDIwMzcsICAyMDM3Cisg
ICAgICAgMCwgICAxNzksICAgMTc5LCAgIDE4MCwgICAxODMsICAgMjI2LCAgIDIyOSwgICAyNDIs
ICAgMjQ3LCAgIDI1MiwKKyAgICAgMjU4LCAgIDI2MSwgICAzMzYsICAgMzM5LCAgIDQzNCwgICA0
NDQsICAgNDU3LCAgIDQ2NSwgICA1NjUsICAgNTY4LAorICAgICA1NzYsICAgNTc5LCAgIDU4NSwg
ICA1ODksICAgNTk2LCAgIDYwMiwgICA2MTEsICAgNjE5LCAgIDY3NCwgICA2ODQsCisgICAgIDY4
NywgICA2OTcsICAgNzA3LCAgIDcyOCwgICA3MjksICAgNzMwLCAgIDczNSwgICA3MzYsICAgNzQ0
LCAgIDc1NSwKKyAgICAgNzU2LCAgIDc2NCwgICA3NzUsICAgNzc5LCAgIDc4MCwgICA3OTAsICAg
ODAwLCAgIDgxMCwgICA4MjMsICAgODI0LAorICAgICA4MzQsICAgODQ3LCAgIDg1MSwgICA4NTUs
ICAgODU5LCAgIDg2MCwgICA4NzMsICAgODc0LCAgIDg4NywgICA4ODgsCisgICAgIDkwMSwgICA5
MDIsICAgOTE5LCAgIDkyMCwgICA5MzMsICAgOTM0LCAgIDkzNSwgICA5MzYsICAgOTM3LCAgIDk0
MSwKKyAgICAgOTQ0LCAgIDk1NSwgICA5NjMsICAgOTkwLCAgIDk5NSwgIDEwMDksICAxMDQ2LCAg
MTA0OSwgIDEwNTYsICAxMDY0LAorICAgIDEwODUsICAxMTA2LCAgMTExNiwgIDExNDQsICAxMTQ5
LCAgMTE1OSwgIDExNjQsICAxMTc0LCAgMTE3NywgIDExODAsCisgICAgMTE4MywgIDExODksICAx
MTk2LCAgMTE5OSwgIDEyMjEsICAxMjM5LCAgMTI2MywgIDEyODYsICAxMjkwLCAgMTMwOCwKKyAg
ICAxMzE2LCAgMTM0OCwgIDEzNjgsICAxMzg5LCAgMTM5OCwgIDE0MjEsICAxNDI0LCAgMTQzMCwg
IDE0MzgsICAxNDQ2LAorICAgIDE0NTQsICAxNDY0LCAgMTQ3MSwgIDE0NzQsICAxNDc3LCAgMTQ4
MywgIDE0ODYsICAxNTAxLCAgMTUwNSwgIDE1MDksCisgICAgMTUxMywgIDE1MTcsICAxNTIyLCAg
MTUyNywgIDE1MzIsICAxNTM3LCAgMTU0MiwgIDE1NDcsICAxNTUyLCAgMTU1NywKKyAgICAxNTYy
LCAgMTU2NywgIDE1NzIsICAxNTc3LCAgMTU4MSwgIDE1ODUsICAxNTkzLCAgMTYwMSwgIDE2MDUs
ICAxNjE4LAorICAgIDE2MTgsICAxNjMyLCAgMTYzMiwgIDE2NDEsICAxNjQ0LCAgMTY2MCwgIDE2
OTMsICAxNjk3LCAgMTcwMywgIDE3MTAsCisgICAgMTcyNSwgIDE3MjksICAxNzMzLCAgMTczNCwg
IDE3NDAsICAxNzQxLCAgMTc0MiwgIDE3NDMsICAxNzQ0LCAgMTc0OCwKKyAgICAxNzQ5LCAgMTc0
OSwgIDE3NDksICAxNzU5LCAgMTc2MCwgIDE3NjQsICAxNzY0LCAgMTc2NSwgIDE3NjUsICAxNzcw
LAorICAgIDE3NzMsICAxNzgzLCAgMTc4NiwgIDE3OTIsICAxNzkzLCAgMTc5NywgIDE4MDUsICAx
ODA5LCAgMTgxOSwgIDE4MjQsCisgICAgMTg0MSwgIDE4NDEsICAxODQ2LCAgMTg0NiwgIDE4NTMs
ICAxODUzLCAgMTg2MSwgIDE4NjQsICAxODcwLCAgMTg3MywKKyAgICAxODc5LCAgMTg4MywgIDE4
OTAsICAxODk3LCAgMTkwNCwgIDE5MTEsICAxOTIyLCAgMTkzMSwgIDE5MzUsICAxOTQyLAorICAg
IDE5NDUsICAxOTUxLCAgMTk1MQogfTsKICNlbmRpZgogCi0jaWYgWVlERUJVRyB8fCBZWUVSUk9S
X1ZFUkJPU0UgfHwgWVlUT0tFTl9UQUJMRQorI2lmIFlZREVCVUcgfHwgWVlFUlJPUl9WRVJCT1NF
IHx8IDAKIC8qIFlZVE5BTUVbU1lNQk9MLU5VTV0gLS0gU3RyaW5nIG5hbWUgb2YgdGhlIHN5bWJv
bCBTWU1CT0wtTlVNLgogICAgRmlyc3QsIHRoZSB0ZXJtaW5hbHMsIHRoZW4sIHN0YXJ0aW5nIGF0
IFlZTlRPS0VOUywgbm9udGVybWluYWxzLiAgKi8KIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCB5
eXRuYW1lW10gPQpAQCAtNzg4LDE1ICs3NTAsMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0
IHl5dG5hbWVbXSA9CiAgICJNQVRSSVgzIiwgIk1BVFJJWDQiLCAiSU5fUVVBTCIsICJPVVRfUVVB
TCIsICJJTk9VVF9RVUFMIiwgIlVOSUZPUk0iLAogICAiVkFSWUlORyIsICJTVFJVQ1QiLCAiVk9J
RF9UWVBFIiwgIldISUxFIiwgIlNBTVBMRVIyRCIsICJTQU1QTEVSQ1VCRSIsCiAgICJTQU1QTEVS
X0VYVEVSTkFMX09FUyIsICJTQU1QTEVSMkRSRUNUIiwgIklERU5USUZJRVIiLCAiVFlQRV9OQU1F
IiwKLSAgIkZMT0FUQ09OU1RBTlQiLCAiSU5UQ09OU1RBTlQiLCAiQk9PTENPTlNUQU5UIiwgIkZJ
RUxEX1NFTEVDVElPTiIsCi0gICJMRUZUX09QIiwgIlJJR0hUX09QIiwgIklOQ19PUCIsICJERUNf
T1AiLCAiTEVfT1AiLCAiR0VfT1AiLCAiRVFfT1AiLAotICAiTkVfT1AiLCAiQU5EX09QIiwgIk9S
X09QIiwgIlhPUl9PUCIsICJNVUxfQVNTSUdOIiwgIkRJVl9BU1NJR04iLAotICAiQUREX0FTU0lH
TiIsICJNT0RfQVNTSUdOIiwgIkxFRlRfQVNTSUdOIiwgIlJJR0hUX0FTU0lHTiIsICJBTkRfQVNT
SUdOIiwKLSAgIlhPUl9BU1NJR04iLCAiT1JfQVNTSUdOIiwgIlNVQl9BU1NJR04iLCAiTEVGVF9Q
QVJFTiIsICJSSUdIVF9QQVJFTiIsCi0gICJMRUZUX0JSQUNLRVQiLCAiUklHSFRfQlJBQ0tFVCIs
ICJMRUZUX0JSQUNFIiwgIlJJR0hUX0JSQUNFIiwgIkRPVCIsCi0gICJDT01NQSIsICJDT0xPTiIs
ICJFUVVBTCIsICJTRU1JQ09MT04iLCAiQkFORyIsICJEQVNIIiwgIlRJTERFIiwgIlBMVVMiLAot
ICAiU1RBUiIsICJTTEFTSCIsICJQRVJDRU5UIiwgIkxFRlRfQU5HTEUiLCAiUklHSFRfQU5HTEUi
LCAiVkVSVElDQUxfQkFSIiwKLSAgIkNBUkVUIiwgIkFNUEVSU0FORCIsICJRVUVTVElPTiIsICIk
YWNjZXB0IiwgInZhcmlhYmxlX2lkZW50aWZpZXIiLAorICAiRkxPQVRDT05TVEFOVCIsICJJTlRD
T05TVEFOVCIsICJCT09MQ09OU1RBTlQiLCAiTEVGVF9PUCIsICJSSUdIVF9PUCIsCisgICJJTkNf
T1AiLCAiREVDX09QIiwgIkxFX09QIiwgIkdFX09QIiwgIkVRX09QIiwgIk5FX09QIiwgIkFORF9P
UCIsCisgICJPUl9PUCIsICJYT1JfT1AiLCAiTVVMX0FTU0lHTiIsICJESVZfQVNTSUdOIiwgIkFE
RF9BU1NJR04iLAorICAiTU9EX0FTU0lHTiIsICJMRUZUX0FTU0lHTiIsICJSSUdIVF9BU1NJR04i
LCAiQU5EX0FTU0lHTiIsICJYT1JfQVNTSUdOIiwKKyAgIk9SX0FTU0lHTiIsICJTVUJfQVNTSUdO
IiwgIkxFRlRfUEFSRU4iLCAiUklHSFRfUEFSRU4iLCAiTEVGVF9CUkFDS0VUIiwKKyAgIlJJR0hU
X0JSQUNLRVQiLCAiTEVGVF9CUkFDRSIsICJSSUdIVF9CUkFDRSIsICJET1QiLCAiQ09NTUEiLCAi
Q09MT04iLAorICAiRVFVQUwiLCAiU0VNSUNPTE9OIiwgIkJBTkciLCAiREFTSCIsICJUSUxERSIs
ICJQTFVTIiwgIlNUQVIiLCAiU0xBU0giLAorICAiUEVSQ0VOVCIsICJMRUZUX0FOR0xFIiwgIlJJ
R0hUX0FOR0xFIiwgIlZFUlRJQ0FMX0JBUiIsICJDQVJFVCIsCisgICJBTVBFUlNBTkQiLCAiUVVF
U1RJT04iLCAiJGFjY2VwdCIsICJpZGVudGlmaWVyIiwgInZhcmlhYmxlX2lkZW50aWZpZXIiLAog
ICAicHJpbWFyeV9leHByZXNzaW9uIiwgInBvc3RmaXhfZXhwcmVzc2lvbiIsICJpbnRlZ2VyX2V4
cHJlc3Npb24iLAogICAiZnVuY3Rpb25fY2FsbCIsICJmdW5jdGlvbl9jYWxsX29yX21ldGhvZCIs
ICJmdW5jdGlvbl9jYWxsX2dlbmVyaWMiLAogICAiZnVuY3Rpb25fY2FsbF9oZWFkZXJfbm9fcGFy
YW1ldGVycyIsCkBAIC04MTUsMTYgKzc3NywxNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qg
eXl0bmFtZVtdID0KICAgImluaXRfZGVjbGFyYXRvcl9saXN0IiwgInNpbmdsZV9kZWNsYXJhdGlv
biIsICJmdWxseV9zcGVjaWZpZWRfdHlwZSIsCiAgICJ0eXBlX3F1YWxpZmllciIsICJ0eXBlX3Nw
ZWNpZmllciIsICJwcmVjaXNpb25fcXVhbGlmaWVyIiwKICAgInR5cGVfc3BlY2lmaWVyX25vX3By
ZWMiLCAidHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkiLCAic3RydWN0X3NwZWNpZmllciIsCi0gICJA
MSIsICJAMiIsICJzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCIsICJzdHJ1Y3RfZGVjbGFyYXRpb24i
LAorICAiJEAxIiwgIiRAMiIsICJzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCIsICJzdHJ1Y3RfZGVj
bGFyYXRpb24iLAogICAic3RydWN0X2RlY2xhcmF0b3JfbGlzdCIsICJzdHJ1Y3RfZGVjbGFyYXRv
ciIsICJpbml0aWFsaXplciIsCiAgICJkZWNsYXJhdGlvbl9zdGF0ZW1lbnQiLCAic3RhdGVtZW50
IiwgInNpbXBsZV9zdGF0ZW1lbnQiLAotICAiY29tcG91bmRfc3RhdGVtZW50IiwgIkAzIiwgIkA0
IiwgInN0YXRlbWVudF9ub19uZXdfc2NvcGUiLAotICAic3RhdGVtZW50X3dpdGhfc2NvcGUiLCAi
QDUiLCAiQDYiLCAiY29tcG91bmRfc3RhdGVtZW50X25vX25ld19zY29wZSIsCisgICJjb21wb3Vu
ZF9zdGF0ZW1lbnQiLCAiJEAzIiwgIiRANCIsICJzdGF0ZW1lbnRfbm9fbmV3X3Njb3BlIiwKKyAg
InN0YXRlbWVudF93aXRoX3Njb3BlIiwgIiRANSIsICIkQDYiLCAiY29tcG91bmRfc3RhdGVtZW50
X25vX25ld19zY29wZSIsCiAgICJzdGF0ZW1lbnRfbGlzdCIsICJleHByZXNzaW9uX3N0YXRlbWVu
dCIsICJzZWxlY3Rpb25fc3RhdGVtZW50IiwKLSAgInNlbGVjdGlvbl9yZXN0X3N0YXRlbWVudCIs
ICJjb25kaXRpb24iLCAiaXRlcmF0aW9uX3N0YXRlbWVudCIsICJANyIsCi0gICJAOCIsICJAOSIs
ICJmb3JfaW5pdF9zdGF0ZW1lbnQiLCAiY29uZGl0aW9ub3B0IiwgImZvcl9yZXN0X3N0YXRlbWVu
dCIsCisgICJzZWxlY3Rpb25fcmVzdF9zdGF0ZW1lbnQiLCAiY29uZGl0aW9uIiwgIml0ZXJhdGlv
bl9zdGF0ZW1lbnQiLCAiJEA3IiwKKyAgIiRAOCIsICIkQDkiLCAiZm9yX2luaXRfc3RhdGVtZW50
IiwgImNvbmRpdGlvbm9wdCIsICJmb3JfcmVzdF9zdGF0ZW1lbnQiLAogICAianVtcF9zdGF0ZW1l
bnQiLCAidHJhbnNsYXRpb25fdW5pdCIsICJleHRlcm5hbF9kZWNsYXJhdGlvbiIsCi0gICJmdW5j
dGlvbl9kZWZpbml0aW9uIiwgIkAxMCIsIDAKKyAgImZ1bmN0aW9uX2RlZmluaXRpb24iLCAiJEAx
MCIsIFlZX05VTEwKIH07CiAjZW5kaWYKIApAQCAtODQyLDQ2MSArODA0LDQ4MiBAQCBzdGF0aWMg
Y29uc3QgeXl0eXBlX3VpbnQxNiB5eXRva251bVtdID0KICAgICAgMzE1LCAgIDMxNiwgICAzMTcs
ICAgMzE4LCAgIDMxOSwgICAzMjAsICAgMzIxLCAgIDMyMiwgICAzMjMsICAgMzI0LAogICAgICAz
MjUsICAgMzI2LCAgIDMyNywgICAzMjgsICAgMzI5LCAgIDMzMCwgICAzMzEsICAgMzMyLCAgIDMz
MywgICAzMzQsCiAgICAgIDMzNSwgICAzMzYsICAgMzM3LCAgIDMzOCwgICAzMzksICAgMzQwLCAg
IDM0MSwgICAzNDIsICAgMzQzLCAgIDM0NCwKLSAgICAgMzQ1LCAgIDM0NiwgICAzNDcsICAgMzQ4
LCAgIDM0OSwgICAzNTAKKyAgICAgMzQ1LCAgIDM0NiwgICAzNDcsICAgMzQ4LCAgIDM0OQogfTsK
ICMgZW5kaWYKIAogLyogWVlSMVtZWU5dIC0tIFN5bWJvbCBudW1iZXIgb2Ygc3ltYm9sIHRoYXQg
cnVsZSBZWU4gZGVyaXZlcy4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjFbXSA9
CiB7Ci0gICAgICAgMCwgICAgOTYsICAgIDk3LCAgICA5OCwgICAgOTgsICAgIDk4LCAgICA5OCwg
ICAgOTgsICAgIDk5LCAgICA5OSwKLSAgICAgIDk5LCAgICA5OSwgICAgOTksICAgIDk5LCAgIDEw
MCwgICAxMDEsICAgMTAyLCAgIDEwMiwgICAxMDMsICAgMTAzLAotICAgICAxMDQsICAgMTA0LCAg
IDEwNSwgICAxMDUsICAgMTA2LCAgIDEwNywgICAxMDcsICAgMTA3LCAgIDEwOCwgICAxMDgsCi0g
ICAgIDEwOCwgICAxMDgsICAgMTA5LCAgIDEwOSwgICAxMDksICAgMTEwLCAgIDExMCwgICAxMTAs
ICAgMTExLCAgIDExMSwKLSAgICAgMTExLCAgIDExMiwgICAxMTMsICAgMTEzLCAgIDExMywgICAx
MTMsICAgMTEzLCAgIDExNCwgICAxMTQsICAgMTE0LAotICAgICAxMTUsICAgMTE2LCAgIDExNywg
ICAxMTgsICAgMTE4LCAgIDExOSwgICAxMTksICAgMTIwLCAgIDEyMCwgICAxMjEsCi0gICAgIDEy
MSwgICAxMjIsICAgMTIyLCAgIDEyMywgICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTI0
LCAgIDEyNCwKLSAgICAgMTI1LCAgIDEyNiwgICAxMjYsICAgMTI2LCAgIDEyNywgICAxMjgsICAg
MTI4LCAgIDEyOSwgICAxMjksICAgMTMwLAotICAgICAxMzEsICAgMTMxLCAgIDEzMiwgICAxMzIs
ICAgMTMyLCAgIDEzMiwgICAxMzMsICAgMTMzLCAgIDEzMywgICAxMzMsCi0gICAgIDEzNCwgICAx
MzUsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM1LCAgIDEzNiwgICAxMzYsICAgMTM2LCAgIDEz
NiwKLSAgICAgMTM2LCAgIDEzNiwgICAxMzcsICAgMTM3LCAgIDEzOCwgICAxMzgsICAgMTM4LCAg
IDEzOCwgICAxMzgsICAgMTM5LAotICAgICAxMzksICAgMTQwLCAgIDE0MCwgICAxNDAsICAgMTQx
LCAgIDE0MSwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsCisgICAgICAgMCwgICAgOTUsICAg
IDk2LCAgICA5NiwgICAgOTcsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk4LCAgICA5OCwKKyAg
ICAgIDk5LCAgICA5OSwgICAgOTksICAgIDk5LCAgICA5OSwgICAgOTksICAgMTAwLCAgIDEwMSwg
ICAxMDIsICAgMTAyLAorICAgICAxMDMsICAgMTAzLCAgIDEwNCwgICAxMDQsICAgMTA1LCAgIDEw
NSwgICAxMDYsICAgMTA3LCAgIDEwNywgICAxMDgsCisgICAgIDEwOCwgICAxMDgsICAgMTA4LCAg
IDEwOSwgICAxMDksICAgMTA5LCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMSwKKyAgICAgMTEx
LCAgIDExMSwgICAxMTIsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTQs
ICAgMTE0LAorICAgICAxMTQsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgIDExOCwgICAx
MTksICAgMTE5LCAgIDEyMCwgICAxMjAsCisgICAgIDEyMSwgICAxMjEsICAgMTIyLCAgIDEyMiwg
ICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTIzLCAgIDEyNCwKKyAgICAgMTI0LCAgIDEy
NSwgICAxMjYsICAgMTI2LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOCwgICAxMjksICAgMTI5
LAorICAgICAxMzAsICAgMTMxLCAgIDEzMSwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzIsICAg
MTMzLCAgIDEzMywgICAxMzMsCisgICAgIDEzMywgICAxMzQsICAgMTM1LCAgIDEzNSwgICAxMzUs
ICAgMTM1LCAgIDEzNSwgICAxMzYsICAgMTM2LCAgIDEzNiwKKyAgICAgMTM2LCAgIDEzNiwgICAx
MzYsICAgMTM3LCAgIDEzNywgICAxMzgsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM4LAorICAg
ICAxMzksICAgMTM5LCAgIDE0MCwgICAxNDAsICAgMTQwLCAgIDE0MSwgICAxNDEsICAgMTQyLCAg
IDE0MiwgICAxNDIsCiAgICAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQy
LCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwKLSAgICAgMTQyLCAgIDE0MiwgICAxNDIsICAg
MTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDQsICAgMTQzLAotICAgICAxNDUs
ICAgMTQzLCAgIDE0NiwgICAxNDYsICAgMTQ3LCAgIDE0OCwgICAxNDgsICAgMTQ5LCAgIDE0OSwg
ICAxNTAsCi0gICAgIDE1MSwgICAxNTIsICAgMTUyLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1
MywgICAxNTMsICAgMTU0LCAgIDE1NSwKLSAgICAgMTU2LCAgIDE1NCwgICAxNTcsICAgMTU3LCAg
IDE1OSwgICAxNTgsICAgMTYwLCAgIDE1OCwgICAxNjEsICAgMTYxLAotICAgICAxNjIsICAgMTYy
LCAgIDE2MywgICAxNjMsICAgMTY0LCAgIDE2NSwgICAxNjUsICAgMTY2LCAgIDE2NiwgICAxNjgs
Ci0gICAgIDE2NywgICAxNjksICAgMTY3LCAgIDE3MCwgICAxNjcsICAgMTcxLCAgIDE3MSwgICAx
NzIsICAgMTcyLCAgIDE3MywKLSAgICAgMTczLCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwg
ICAxNzQsICAgMTc1LCAgIDE3NSwgICAxNzYsICAgMTc2LAotICAgICAxNzgsICAgMTc3CisgICAg
IDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAg
MTQyLCAgIDE0NCwKKyAgICAgMTQzLCAgIDE0NSwgICAxNDMsICAgMTQ2LCAgIDE0NiwgICAxNDcs
ICAgMTQ4LCAgIDE0OCwgICAxNDksICAgMTQ5LAorICAgICAxNTAsICAgMTUxLCAgIDE1MiwgICAx
NTIsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1MywgICAxNTQsCisgICAgIDE1NSwg
ICAxNTYsICAgMTU0LCAgIDE1NywgICAxNTcsICAgMTU5LCAgIDE1OCwgICAxNjAsICAgMTU4LCAg
IDE2MSwKKyAgICAgMTYxLCAgIDE2MiwgICAxNjIsICAgMTYzLCAgIDE2MywgICAxNjQsICAgMTY1
LCAgIDE2NSwgICAxNjYsICAgMTY2LAorICAgICAxNjgsICAgMTY3LCAgIDE2OSwgICAxNjcsICAg
MTcwLCAgIDE2NywgICAxNzEsICAgMTcxLCAgIDE3MiwgICAxNzIsCisgICAgIDE3MywgICAxNzMs
ICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzUsICAgMTc1LCAgIDE3NiwK
KyAgICAgMTc2LCAgIDE3OCwgICAxNzcKIH07CiAKIC8qIFlZUjJbWVlOXSAtLSBOdW1iZXIgb2Yg
c3ltYm9scyBjb21wb3NpbmcgcmlnaHQgaGFuZCBzaWRlIG9mIHJ1bGUgWVlOLiAgKi8KIHN0YXRp
YyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0KIHsKLSAgICAgICAwLCAgICAgMiwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDEsICAgICA0LAotICAgICAg
IDEsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAg
MiwgICAgIDIsCi0gICAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDIsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwKLSAgICAgICAyLCAgICAgMiwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAgIDEsICAgICAzLAotICAgICAgIDMsICAg
ICAxLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAxLCAgICAgMywgICAg
IDMsCi0gICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywg
ICAgIDEsICAgICAzLCAgICAgMSwKLSAgICAgICA1LCAgICAgMSwgICAgIDMsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLAotICAgICAgIDEsICAgICAyLCAg
ICAgMiwgICAgIDQsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDMsCi0g
ICAgICAgMiwgICAgIDUsICAgICAzLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMCwgICAgIDEs
ICAgICAxLCAgICAgMSwKLSAgICAgICAxLCAgICAgMSwgICAgIDMsICAgICA1LCAgICAgNiwgICAg
IDUsICAgICAxLCAgICAgMiwgICAgIDQsICAgICA1LAotICAgICAgIDQsICAgICAyLCAgICAgMSwg
ICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsCi0gICAgICAg
MiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICA0LCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwKKyAgICAgICAwLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAzLAorICAgICAgIDEsICAgICA0LCAgICAgMSwgICAgIDMs
ICAgICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsCisgICAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAg
MSwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMywgICAgIDMsICAgICAxLAorICAgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDEsICAgICAz
LCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDMsCisgICAgICAgMywgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywKKyAg
ICAgICAxLCAgICAgNSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAxLAorICAgICAgIDMsICAgICAxLCAgICAgMiwgICAgIDIsICAgICA0LCAgICAg
MiwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDMsCisgICAgICAgMywgICAgIDIsICAgICA1LCAg
ICAgMywgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDAsICAgICAxLCAgICAgMSwKKyAgICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgNSwgICAgIDYsICAgICA1LCAgICAgMSwgICAgIDIs
ICAgICA0LAorICAgICAgIDUsICAgICA0LCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMiwgICAgIDEsCisgICAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgNCwgICAgIDEsICAgICAxLCAgICAgMSwKICAgICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LAotICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMCwgICAgIDYsCi0gICAgICAgMCwgICAgIDUsICAgICAxLCAgICAgMiwgICAgIDMs
ICAgICAxLCAgICAgMywgICAgIDEsICAgICA0LCAgICAgMSwKLSAgICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAwLAotICAg
ICAgIDAsICAgICA1LCAgICAgMSwgICAgIDEsICAgICAwLCAgICAgMiwgICAgIDAsICAgICAyLCAg
ICAgMiwgICAgIDMsCi0gICAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDUsICAgICAz
LCAgICAgMSwgICAgIDEsICAgICA0LCAgICAgMCwKLSAgICAgICA2LCAgICAgMCwgICAgIDgsICAg
ICAwLCAgICAgNywgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDAsICAgICAyLAotICAgICAgIDMs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwg
ICAgIDEsCi0gICAgICAgMCwgICAgIDMKKyAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAwLAorICAgICAgIDYsICAgICAw
LCAgICAgNSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDQs
CisgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMiwKKyAgICAgICAwLCAgICAgMCwgICAgIDUsICAgICAxLCAgICAgMSwg
ICAgIDAsICAgICAyLCAgICAgMCwgICAgIDIsICAgICAyLAorICAgICAgIDMsICAgICAxLCAgICAg
MiwgICAgIDEsICAgICAyLCAgICAgNSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDQsCisgICAg
ICAgMCwgICAgIDYsICAgICAwLCAgICAgOCwgICAgIDAsICAgICA3LCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMCwKKyAgICAgICAyLCAgICAgMywgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDMs
ICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLAorICAgICAgIDEsICAgICAwLCAgICAgMwogfTsK
IAotLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0gLS0gRGVmYXVsdCBydWxlIHRvIHJlZHVjZSB3aXRo
IGluIHN0YXRlCi0gICBTVEFURS1OVU0gd2hlbiBZWVRBQkxFIGRvZXNuJ3Qgc3BlY2lmeSBzb21l
dGhpbmcgZWxzZSB0byBkby4gIFplcm8KKy8qIFlZREVGQUNUW1NUQVRFLU5BTUVdIC0tIERlZmF1
bHQgcmVkdWN0aW9uIG51bWJlciBpbiBzdGF0ZSBTVEFURS1OVU0uCisgICBQZXJmb3JtZWQgd2hl
biBZWVRBQkxFIGRvZXNuJ3Qgc3BlY2lmeSBzb21ldGhpbmcgZWxzZSB0byBkby4gIFplcm8KICAg
IG1lYW5zIHRoZSBkZWZhdWx0IGlzIGFuIGVycm9yLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVf
dWludDggeXlkZWZhY3RbXSA9CiB7Ci0gICAgICAgMCwgICAgIDAsICAgMTExLCAgIDExMiwgICAx
MTMsICAgICAwLCAgIDEwNSwgICAxMDQsICAgMTE5LCAgIDExNywKLSAgICAgMTE4LCAgIDEyMywg
ICAxMjQsICAgMTI1LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyMCwgICAxMjEsICAgMTIyLAot
ICAgICAxMjksICAgMTMwLCAgIDEzMSwgICAxMDgsICAgMTA2LCAgICAgMCwgICAxMTYsICAgMTMy
LCAgIDEzMywgICAxMzQsCi0gICAgIDEzNSwgICAxMzcsICAgMTk5LCAgIDIwMCwgICAgIDAsICAg
IDc2LCAgICA4NiwgICAgIDAsICAgIDkxLCAgICA5NiwKLSAgICAgICAwLCAgIDEwMiwgICAgIDAs
ICAgMTA5LCAgIDExNCwgICAxMzYsICAgICAwLCAgIDE5NiwgICAxOTgsICAgMTA3LAotICAgICAx
MDEsICAgICAwLCAgICAgMCwgICAxNDAsICAgIDcxLCAgICAgMCwgICAgNzQsICAgIDg2LCAgICAg
MCwgICAgODcsCi0gICAgICA4OCwgICAgODksICAgIDc3LCAgICAgMCwgICAgODYsICAgICAwLCAg
ICA3MiwgICAgOTcsICAgMTAzLCAgIDExMCwKLSAgICAgICAwLCAgICAgMSwgICAxOTcsICAgICAw
LCAgIDEzOCwgICAgIDAsICAgICAwLCAgIDIwMSwgICAgNzgsICAgIDgzLAotICAgICAgODUsICAg
IDkwLCAgICAgMCwgICAgOTIsICAgIDc5LCAgICAgMCwgICAgIDAsICAgICAyLCAgICAgNSwgICAg
IDQsCi0gICAgICAgNiwgICAgMjcsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDM0LCAgICAzMywg
ICAgMzIsICAgICAzLCAgICAgOCwKLSAgICAgIDI4LCAgICAxMCwgICAgMTUsICAgIDE2LCAgICAg
MCwgICAgIDAsICAgIDIxLCAgICAgMCwgICAgMzUsICAgICAwLAotICAgICAgMzgsICAgIDQxLCAg
ICA0MiwgICAgNDcsICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NSwgICAgNTcsCi0g
ICAgICA1OSwgICAgNzAsICAgICAwLCAgICAyNSwgICAgNzMsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMTQyLCAgICAgMCwKLSAgICAgICAwLCAgIDE4MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgIDE1OSwgICAxNjgsICAgMTcyLAotICAgICAgMzUsICAgIDYxLCAgICA2OCwg
ICAgIDAsICAgMTUwLCAgICAgMCwgICAxMTQsICAgMTUzLCAgIDE3MCwgICAxNTIsCi0gICAgIDE1
MSwgICAgIDAsICAgMTU0LCAgIDE1NSwgICAxNTYsICAgMTU3LCAgICA4MCwgICAgODIsICAgIDg0
LCAgICAgMCwKLSAgICAgICAwLCAgICA5OCwgICAgIDAsICAgMTQ5LCAgIDEwMCwgICAgMjksICAg
IDMwLCAgICAgMCwgICAgMTIsICAgIDEzLAotICAgICAgIDAsICAgICAwLCAgICAxOSwgICAgMTgs
ICAgICAwLCAgICAyMCwgICAgMjIsICAgIDI0LCAgICAzMSwgICAgIDAsCi0gICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMTE1LCAgICAgMCwgICAxNDcsICAgICAwLCAg
IDE0NSwgICAxNDEsICAgMTQzLAotICAgICAxOTIsICAgMTkxLCAgIDE2NiwgICAxODMsICAgICAw
LCAgIDE5NSwgICAxOTMsICAgICAwLCAgIDE3OSwgICAxNTgsCi0gICAgICAgMCwgICAgNjQsICAg
IDY1LCAgICA2NiwgICAgNjcsICAgIDYzLCAgICAgMCwgICAgIDAsICAgMTczLCAgIDE2OSwKLSAg
ICAgMTcxLCAgICAgMCwgICAgOTMsICAgICAwLCAgICA5NSwgICAgOTksICAgICA3LCAgICAgMCwg
ICAgMTQsICAgIDI2LAotICAgICAgMTEsICAgIDE3LCAgICAyMywgICAgMzYsICAgIDM3LCAgICA0
MCwgICAgMzksICAgIDQ1LCAgICA0NiwgICAgNDMsCi0gICAgICA0NCwgICAgNDgsICAgIDQ5LCAg
ICA1NCwgICAgNTYsICAgIDU4LCAgICAgMCwgICAxMzksICAgICAwLCAgICAgMCwKLSAgICAgMTQ0
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTk0LCAgICAgMCwgICAxNjAs
ICAgIDYyLAotICAgICAgNjksICAgICAwLCAgICA5NCwgICAgIDksICAgICAwLCAgICAgMCwgICAx
NDYsICAgICAwLCAgIDE2NSwgICAxNjcsCi0gICAgIDE4NiwgICAxODUsICAgMTg4LCAgIDE2Niwg
ICAxNzcsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDgxLCAgICA2MCwKLSAgICAgMTQ4LCAgICAg
MCwgICAxODcsICAgICAwLCAgICAgMCwgICAxNzYsICAgMTc0LCAgICAgMCwgICAgIDAsICAgMTYx
LAotICAgICAgIDAsICAgMTg5LCAgICAgMCwgICAxNjYsICAgICAwLCAgIDE2MywgICAxODAsICAg
MTYyLCAgICAgMCwgICAxOTAsCi0gICAgIDE4NCwgICAxNzUsICAgMTc4LCAgIDE4MgorICAgICAg
IDAsICAgICAwLCAgIDExMiwgICAxMTMsICAgMTE0LCAgICAgMCwgICAxMDYsICAgMTA1LCAgIDEy
MCwgICAxMTgsCisgICAgIDExOSwgICAxMjQsICAgMTI1LCAgIDEyNiwgICAxMjcsICAgMTI4LCAg
IDEyOSwgICAxMjEsICAgMTIyLCAgIDEyMywKKyAgICAgMTMwLCAgIDEzMSwgICAxMzIsICAgMTA5
LCAgIDEwNywgICAgIDAsICAgMTE3LCAgIDEzMywgICAxMzQsICAgMTM1LAorICAgICAxMzYsICAg
MTM4LCAgIDIwMCwgICAyMDEsICAgICAwLCAgICA3NywgICAgODcsICAgICAwLCAgICA5MiwgICAg
OTcsCisgICAgICAgMCwgICAxMDMsICAgICAwLCAgIDExMCwgICAxMTUsICAgMTM3LCAgICAgMCwg
ICAxOTcsICAgMTk5LCAgIDEwOCwKKyAgICAgMTAyLCAgICAgMCwgICAgIDIsICAgICAzLCAgIDE0
MSwgICAgIDAsICAgIDcyLCAgICAgMCwgICAgNzUsICAgIDg3LAorICAgICAgIDAsICAgIDg4LCAg
ICA4OSwgICAgOTAsICAgIDc4LCAgICAgMCwgICAgODcsICAgICAwLCAgICA3MywgICAgIDIsCisg
ICAgICA5OCwgICAxMDQsICAgMTExLCAgICAgMCwgICAgIDEsICAgMTk4LCAgICAgMCwgICAgIDAs
ICAgMTM5LCAgICAgMCwKKyAgICAgMjAyLCAgICA3OSwgICAgODQsICAgIDg2LCAgICA5MSwgICAg
IDAsICAgIDkzLCAgICA4MCwgICAgIDAsICAgICAwLAorICAgICAgIDQsICAgICA3LCAgICAgNiwg
ICAgIDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDM1LCAgICAzNCwgICAgMzMsCisgICAgICAg
NSwgICAgMTAsICAgIDI5LCAgICAxMiwgICAgMTcsICAgIDE4LCAgICAgMCwgICAgIDAsICAgIDIz
LCAgICAgMCwKKyAgICAgIDM2LCAgICAgMCwgICAgMzksICAgIDQyLCAgICA0MywgICAgNDgsICAg
IDUxLCAgICA1MiwgICAgNTMsICAgIDU0LAorICAgICAgNTYsICAgIDU4LCAgICA2MCwgICAgNzEs
ICAgICAwLCAgICAyNywgICAgNzQsICAgICAwLCAgICAgMCwgICAxNDMsCisgICAgICAgMCwgICAg
IDAsICAgICAwLCAgIDE4MiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE2
MCwKKyAgICAgMTY5LCAgIDE3MywgICAgMzYsICAgIDYyLCAgICA2OSwgICAgIDAsICAgMTUxLCAg
ICAgMCwgICAxMTUsICAgMTU0LAorICAgICAxNzEsICAgMTUzLCAgIDE1MiwgICAgIDAsICAgMTU1
LCAgIDE1NiwgICAxNTcsICAgMTU4LCAgICA4MSwgICAgODMsCisgICAgICA4NSwgICAgIDAsICAg
ICAwLCAgICA5OSwgICAgIDAsICAgMTUwLCAgIDEwMSwgICAgMzAsICAgIDMxLCAgICAgMCwKKyAg
ICAgIDE0LCAgICAxNSwgICAgIDAsICAgICAwLCAgICAyMSwgICAgMjAsICAgICAwLCAgICAyMiwg
ICAgMjQsICAgIDI2LAorICAgICAgMzIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTE2LCAgIDE0OCwgICAgIDAsICAgMTQ2LCAgIDE0MiwKKyAgICAgMTQ0
LCAgICAgMCwgICAxOTMsICAgMTkyLCAgIDE2NywgICAxODQsICAgICAwLCAgIDE5NiwgICAxOTQs
ICAgICAwLAorICAgICAxODAsICAgMTU5LCAgICAgMCwgICAgNjUsICAgIDY2LCAgICA2NywgICAg
NjgsICAgIDY0LCAgICAgMCwgICAgIDAsCisgICAgIDE3NCwgICAxNzAsICAgMTcyLCAgICAgMCwg
ICAgOTQsICAgICAwLCAgICA5NiwgICAxMDAsICAgICA5LCAgICAgMCwKKyAgICAgIDE2LCAgICAg
MiwgICAgIDMsICAgIDEzLCAgICAxOSwgICAgMjUsICAgIDM3LCAgICAzOCwgICAgNDEsICAgIDQw
LAorICAgICAgNDYsICAgIDQ3LCAgICA0NCwgICAgNDUsICAgIDQ5LCAgICA1MCwgICAgNTUsICAg
IDU3LCAgICA1OSwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgMTQ1LCAgIDE0MCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE5NSwKKyAgICAgICAwLCAgIDE2MSwgICAg
NjMsICAgIDcwLCAgICAgMCwgICAgOTUsICAgIDExLCAgICAgMCwgICAgIDAsICAgMTQ3LAorICAg
ICAgIDAsICAgMTY2LCAgIDE2OCwgICAxODcsICAgMTg2LCAgIDE4OSwgICAxNjcsICAgMTc4LCAg
ICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgODIsICAgIDYxLCAgIDE0OSwgICAgIDAsICAgMTg4
LCAgICAgMCwgICAgIDAsICAgMTc3LCAgIDE3NSwKKyAgICAgICAwLCAgICAgMCwgICAxNjIsICAg
ICAwLCAgIDE5MCwgICAgIDAsICAgMTY3LCAgICAgMCwgICAxNjQsICAgMTgxLAorICAgICAxNjMs
ICAgICAwLCAgIDE5MSwgICAxODUsICAgMTc2LCAgIDE3OSwgICAxODMKIH07CiAKIC8qIFlZREVG
R09UT1tOVEVSTS1OVU1dLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlkZWZnb3Rv
W10gPQogewotICAgICAgLTEsICAgIDk4LCAgICA5OSwgICAxMDAsICAgMjI3LCAgIDEwMSwgICAx
MDIsICAgMTAzLCAgIDEwNCwgICAxMDUsCi0gICAgIDEwNiwgICAxMDcsICAgMTQwLCAgIDEwOSwg
ICAxMTAsICAgMTExLCAgIDExMiwgICAxMTMsICAgMTE0LCAgIDExNSwKLSAgICAgMTE2LCAgIDEx
NywgICAxMTgsICAgMTE5LCAgIDEyMCwgICAxNDEsICAgMTQyLCAgIDIxNiwgICAxNDMsICAgMTIy
LAotICAgICAxNDQsICAgMTQ1LCAgICAzNCwgICAgMzUsICAgIDM2LCAgICA3OSwgICAgNjIsICAg
IDYzLCAgICA4MCwgICAgMzcsCi0gICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIs
ICAgIDQzLCAgIDEyMywgICAgNDUsICAgMTI1LCAgICA3NSwKLSAgICAgMTI3LCAgIDEyOCwgICAx
OTYsICAgMTk3LCAgIDE2NCwgICAxNDcsICAgMTQ4LCAgIDE0OSwgICAxNTAsICAgMjEwLAotICAg
ICAyNzcsICAgMjk2LCAgIDI1MSwgICAyNTIsICAgMjUzLCAgIDI5NywgICAxNTEsICAgMTUyLCAg
IDE1MywgICAyODYsCi0gICAgIDI3NiwgICAxNTQsICAgMjU3LCAgIDIwMiwgICAyNTQsICAgMjcy
LCAgIDI4MywgICAyODQsICAgMTU1LCAgICA0NiwKLSAgICAgIDQ3LCAgICA0OCwgICAgNTUKKyAg
ICAgIC0xLCAgIDE5NiwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAyMjksICAgMTAzLCAgIDEwNCwg
ICAxMDUsICAgMTA2LAorICAgICAxMDcsICAgMTA4LCAgIDEwOSwgICAxNDIsICAgMTExLCAgIDEx
MiwgICAxMTMsICAgMTE0LCAgIDExNSwgICAxMTYsCisgICAgIDExNywgICAxMTgsICAgMTE5LCAg
IDEyMCwgICAxMjEsICAgMTIyLCAgIDE0MywgICAxNDQsICAgMjE4LCAgIDE0NSwKKyAgICAgMTI0
LCAgIDE0NiwgICAxNDcsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDgyLCAgICA2NCwgICAgNjUs
ICAgIDgzLAorICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAg
NDMsICAgMTI1LCAgICA0NSwgICAxMzAsCisgICAgICA3NywgICAxMjgsICAgMTI5LCAgIDE5Nywg
ICAxOTgsICAgMTY2LCAgIDE0OSwgICAxNTAsICAgMTUxLCAgIDE1MiwKKyAgICAgMjEyLCAgIDI4
MCwgICAyOTksICAgMjU0LCAgIDI1NSwgICAyNTYsICAgMzAwLCAgIDE1MywgICAxNTQsICAgMTU1
LAorICAgICAyODksICAgMjc5LCAgIDE1NiwgICAyNjAsICAgMjA0LCAgIDI1NywgICAyNzUsICAg
Mjg2LCAgIDI4NywgICAxNTcsCisgICAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA1NwogfTsKIAog
LyogWVlQQUNUW1NUQVRFLU5VTV0gLS0gSW5kZXggaW4gWVlUQUJMRSBvZiB0aGUgcG9ydGlvbiBk
ZXNjcmliaW5nCiAgICBTVEFURS1OVU0uICAqLwotI2RlZmluZSBZWVBBQ1RfTklORiAtMjY2Cisj
ZGVmaW5lIFlZUEFDVF9OSU5GIC0yNjEKIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlwYWN0
W10gPQogewotICAgIDEyNTMsICAgLTIwLCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDE0OCwgIC0y
NjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2Niwg
IC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2
NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAtMzksICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2
LAotICAgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAtMTgsICAgIC0yLCAgICAgNiwgICAgMjEsICAg
LTYxLCAgLTI2NiwgICAgNTEsCi0gICAgMTI5NiwgIC0yNjYsICAxMzcwLCAgLTI2NiwgICAgMjUs
ICAtMjY2LCAgMTIwOSwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgMTM3MCwgICAg
NDIsICAtMjY2LCAgLTI2NiwgICAgNTAsICAtMjY2LCAgICA3MSwgICAgOTUsICAtMjY2LAotICAg
IC0yNjYsICAtMjY2LCAgLTI2NiwgIDEyOTYsICAgMTIzLCAgIDEwNSwgIC0yNjYsICAgICA5LCAg
LTI2NiwgIC0yNjYsCi0gICAgIDk3NCwgIC0yNjYsICAtMjY2LCAgICA4MSwgIC0yNjYsICAxMjk2
LCAgIDI5MCwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIDEyNSwgIDEyOTYsICAg
LTEzLCAgLTI2NiwgICA3NzYsICAgOTc0LCAgICA5OSwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYs
ICAtMjY2LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2Niwg
IC0yNjYsCi0gICAgICAzNSwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxMDAsICAgIC02LCAgMTA0
MCwgICAxMDQsICAtMjY2LCAgIDk3NCwKLSAgICAgIDM2LCAgIC02NCwgIC0yNjYsICAgLTIxLCAg
IDEwMiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxMTMsICAgMTE3LAotICAgICAtNTEsICAtMjY2
LCAgIDEwOCwgIC0yNjYsICAtMjY2LCAgMTI5NiwgICAxMjksICAxMTA5LCAgLTI2NiwgICAgOTcs
Ci0gICAgIDEwMywgIC0yNjYsICAgMTEyLCAgIDExNCwgICAxMDYsICAgODQyLCAgIDExNSwgICAx
MTYsICAtMjY2LCAgLTI2NiwKLSAgICAgIDM5LCAgLTI2NiwgIC0yNjYsICAgLTQzLCAgLTI2Niwg
ICAtMTgsICAgIDQ3LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgMzc0LCAgLTI2
NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxMTgsICAtMjY2LCAgLTI2NiwgICA5MDgsCi0gICAg
IDk3NCwgIC0yNjYsICAgMTIwLCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAgMTksICAt
MjY2LCAgLTI2NiwKLSAgICAgOTc0LCAgMTMzMywgIC0yNjYsICAtMjY2LCAgIDk3NCwgICAxMTks
ICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgOTc0LAotICAgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5
NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsCi0gICAgIDk3NCwg
ICA5NzQsICAgOTc0LCAgLTI2NiwgIDExNTIsICAgMTIyLCAgIC0yOSwgIC0yNjYsICAtMjY2LCAg
LTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgICAxMjEsICAtMjY2LCAgIDk3NCwgIC0yNjYsICAtMjY2
LCAgICAgNSwgIC0yNjYsICAtMjY2LAotICAgICA0NTgsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAt
MjY2LCAgLTI2NiwgICA5NzQsICAgOTc0LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICA5NzQs
ICAtMjY2LCAgIDEzNywgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxMzgsICAgMTExLCAgLTI2NiwK
LSAgICAgMTQyLCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAgMzYsICAgIDM2LCAgLTI2
NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgLTIxLCAgIC0yMSwgIC0yNjYsICAgMTEzLCAg
IDExNywgICAgODIsICAtMjY2LCAgIDk3NCwgICAxMjksCi0gICAgLTI2NiwgICAxNzUsICAgIDUw
LCAgIDYyNiwgICA3MTAsICAgIDM4LCAgLTI2NiwgICAxOTcsICAgNDU4LCAgLTI2NiwKLSAgICAt
MjY2LCAgIDE0MSwgIC0yNjYsICAtMjY2LCAgIDk3NCwgICAxNTUsICAtMjY2LCAgIDE0NSwgIC0y
NjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2LCAgIDE5NywgICAxMjEsICAgMTExLCAgIDE4Niwg
ICAxNTksICAgMTYwLCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICA5NzQsICAtMjY2LCAgIDE2
NiwgICAxNzYsICAgMjM2LCAgLTI2NiwgICAxNzQsICAgNTQyLCAgLTI2NiwKLSAgICAgIDQzLCAg
IDk3NCwgICA1NDIsICAgMTIxLCAgIDk3NCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxNzcsICAg
MTExLAotICAgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYKKyAgICAxMzI3LCAgIC0yMCwgIC0y
NjEsICAtMjYxLCAgLTI2MSwgICAxMTMsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAg
IC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAg
LTI2MSwgIC0yNjEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgLTE5
LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAg
LTYxLCAgIC00MCwgICAtMjgsICAgIDc1LCAgICAtNywgIC0yNjEsICAgIDI0LAorICAgIDEzNzAs
ICAtMjYxLCAgMTQ0NCwgIC0yNjEsICAgLTExLCAgLTI2MSwgIDEyODMsICAtMjYxLCAgLTI2MSwg
IC0yNjEsCisgICAgLTI2MSwgIDE0NDQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgICA2LCAgLTI2
MSwgICAgNTQsICAtMjYxLCAgICA4OCwKKyAgICAgIDYyLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAg
LTI2MSwgIDEzNzAsICAgIDU5LCAgICA5MSwgIC0yNjEsICAgIDM2LAorICAgICAtNTAsICAtMjYx
LCAgLTI2MSwgIDEwNTEsICAtMjYxLCAgLTI2MSwgICAgNjMsICAxMzcwLCAgLTI2MSwgICAyOTMs
CisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAgOTEsICAxMzcwLCAgIC0xMiwgIC0y
NjEsICAgODU2LCAgMTA1MSwKKyAgICAgIDc3LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgMTA1MSwg
IDEwNTEsICAxMDUxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgIC0x
NCwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAgODQsICAgLTQ0LCAgMTExNiwgICAgOTUsCisgICAg
LTI2MSwgIDEwNTEsICAgIDUzLCAgICAgMywgIC0yNjEsICAgLTM2LCAgICA4OSwgIC0yNjEsICAt
MjYxLCAgLTI2MSwKKyAgICAgMTA0LCAgIDEwNywgICAtNDUsICAtMjYxLCAgICA5NiwgIC0yNjEs
ICAtMjYxLCAgICA5MSwgIDExODQsICAtMjYxLAorICAgIDEzNzAsICAgIDkyLCAgICA5MywgIC0y
NjEsICAgIDk4LCAgIDEwMSwgICAgOTQsICAgOTIxLCAgIDEwNSwgICAxMDIsCisgICAgLTI2MSwg
IC0yNjEsICAgIDcyLCAgLTI2MSwgIC0yNjEsICAgICA5LCAgLTI2MSwgICAtNjEsICAgIDQyLCAg
LTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgMzc2LCAgLTI2MSwgIC0yNjEsICAtMjYx
LCAgLTI2MSwgICAxMDYsICAtMjYxLAorICAgIC0yNjEsICAgOTg2LCAgMTA1MSwgIC0yNjEsICAg
MTAzLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAtNDEsCisgICAgLTI2MSwgIC0yNjEs
ICAxMDUxLCAgMTQwNywgIC0yNjEsICAtMjYxLCAgMTA1MSwgICAxMTAsICAtMjYxLCAgLTI2MSwK
KyAgICAtMjYxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1
MSwgIDEwNTEsICAxMDUxLAorICAgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAg
LTI2MSwgICAxMDksICAgIDIzLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgIDEyMjcsICAtMjYx
LCAgLTI2MSwgICAxMTEsICAtMjYxLCAgMTA1MSwgIC0yNjEsICAtMjYxLCAgICAyNSwKKyAgICAt
MjYxLCAgLTI2MSwgICA0NTksICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEw
NTEsICAxMDUxLAorICAgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAtMjYxLCAgIDExNCwg
IC0yNjEsICAtMjYxLCAgLTI2MSwgICAxMTUsCisgICAgIDExMiwgICAgNzcsICAgMTE2LCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgIDUzLCAgICA1MywKKyAgICAtMjYxLCAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgIC0zNiwgICAtMzYsICAtMjYxLCAgIDEwNCwgICAxMDcsICAg
IDc2LAorICAgIDEwNTEsICAgIDkxLCAgLTI2MSwgIC0yNjEsICAgMTQ1LCAgICA1NCwgICA2MjUs
ICAgNzA4LCAgICAtNiwgIC0yNjEsCisgICAgIDc5MSwgICA0NTksICAtMjYxLCAgLTI2MSwgICAx
MTcsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAgMTIwLCAgLTI2MSwKKyAgICAgMTI0LCAgLTI2MSwg
IC0yNjEsICAtMjYxLCAgLTI2MSwgICA3OTEsICAgMTExLCAgIDExMiwgICAgOTEsICAgMTI1LAor
ICAgICAxMjIsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgLTI2MSwgICAxMTgsICAgMTI4
LCAgIDE4MCwgIC0yNjEsCisgICAgIDEyNiwgICA1NDIsICAtMjYxLCAgICAtNSwgIDEwNTEsICAg
NTQyLCAgIDExMSwgIDEwNTEsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgIDEyMywgICAxMTIs
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxCiB9OwogCiAvKiBZWVBHT1RPW05URVJNLU5VTV0u
ICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXBnb3RvW10gPQogewotICAgIC0yNjYs
ICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgIDg1LCAgLTI2Niwg
IC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAgLTQ0LCAgLTI2NiwgICAtMTUsICAtMjY2LCAgIC01
NSwgICAtMTksICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgICA3MiwgICAgNzAsICAgIDczLCAg
LTI2NiwgICAtNjYsICAgLTgzLCAgLTI2NiwgICAtOTIsICAgLTczLAotICAgICAgMTMsICAgIDE0
LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDE4MCwgICAyMDYsICAgMjAxLCAgIDE4NCwgIC0yNjYs
Ci0gICAgLTI2NiwgIC0yNDEsICAgLTI1LCAgIC0zMCwgICAyNjIsICAgIC00LCAgICAgMCwgIC0y
NjYsICAtMjY2LCAgLTI2NiwKLSAgICAgMTQzLCAgLTEyMiwgIC0yNjYsICAgIDIyLCAgLTE0NSwg
ICAgMTYsICAtMTQ0LCAgLTIyNiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgLTE3LCAgLTI2
NSwgIC0yNjYsICAtMjY2LCAgIC01NCwgICAgNjMsICAgIDIwLCAgLTI2NiwgIC0yNjYsCi0gICAg
ICAgNCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAt
MjY2LCAgLTI2NiwKLSAgICAgMjMxLCAgLTI2NiwgIC0yNjYKKyAgICAtMjYxLCAgIC0yNCwgIC0y
NjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAgMzQsICAtMjYxLAorICAg
IC0yNjEsICAtMjYxLCAgLTI2MSwgICAgMzIsICAtMjYxLCAgIC0zMywgIC0yNjEsICAgLTI3LCAg
IC0yNiwgIC0yNjEsCisgICAgLTI2MSwgIC0yNjEsICAgIDE0LCAgICAxNiwgICAgMTgsICAtMjYx
LCAgIC02NiwgICAtODcsICAtMjYxLCAgIC05MiwKKyAgICAgLTg1LCAgICAxMSwgICAgMTIsICAt
MjYxLCAgLTI2MSwgIC0yNjEsICAgMTQxLCAgIDE1MCwgICAxNjEsICAgMTQzLAorICAgIC0yNjEs
ICAtMjYxLCAgLTIzMSwgICAgIDUsICAgLTMwLCAgIDIyNCwgICAtMTgsICAgICAwLCAgLTI2MSwg
IC0yNjEsCisgICAgLTI2MSwgICAxMDAsICAtMTE5LCAgLTI2MSwgICAtMTcsICAtMTU2LCAgIC0y
NSwgIC0xNDUsICAtMjQzLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgICAtNjQsICAtMjYwLCAg
LTI2MSwgIC0yNjEsICAgLTUyLCAgICAyMSwgICAtMjIsICAtMjYxLAorICAgIC0yNjEsICAgLTM5
LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEs
CisgICAgLTI2MSwgICAxOTEsICAtMjYxLCAgLTI2MQogfTsKIAogLyogWVlUQUJMRVtZWVBBQ1Rb
U1RBVEUtTlVNXV0uICBXaGF0IHRvIGRvIGluIHN0YXRlIFNUQVRFLU5VTS4gIElmCiAgICBwb3Np
dGl2ZSwgc2hpZnQgdGhhdCB0b2tlbi4gIElmIG5lZ2F0aXZlLCByZWR1Y2UgdGhlIHJ1bGUgd2hp
Y2gKLSAgIG51bWJlciBpcyB0aGUgb3Bwb3NpdGUuICBJZiB6ZXJvLCBkbyB3aGF0IFlZREVGQUNU
IHNheXMuCi0gICBJZiBZWVRBQkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCi0jZGVmaW5lIFlZ
VEFCTEVfTklORiAtMTY1CisgICBudW1iZXIgaXMgdGhlIG9wcG9zaXRlLiAgSWYgWVlUQUJMRV9O
SU5GLCBzeW50YXggZXJyb3IuICAqLworI2RlZmluZSBZWVRBQkxFX05JTkYgLTE2Ngogc3RhdGlj
IGNvbnN0IHl5dHlwZV9pbnQxNiB5eXRhYmxlW10gPQogewotICAgICAgNDQsICAgIDc3LCAgIDE2
NywgICAxNjMsICAgMTIxLCAgIDE5OSwgICAgNTIsICAgMjIwLCAgIDI4NSwgICAxOTEsCi0gICAg
ICA2OCwgICAgNjQsICAgMTYyLCAgICAzMiwgICAgMzMsICAgMjI0LCAgIDI3NSwgICAgNDksICAg
IDY1LCAgIDEyMSwKLSAgICAgMTgxLCAgICA2NiwgICAxODIsICAgMTc2LCAgICA1OCwgICAgNTAs
ICAgMTA4LCAgIDI2OSwgICAzMDEsICAgICA2LAotICAgICAgIDcsICAgMjc1LCAgICA2NCwgICAg
ODEsICAgMTgzLCAgIDE4NCwgICAyMTcsICAgIDUzLCAgICA2OSwgICAyMTgsCi0gICAgICA0NCwg
ICAxMDgsICAgIDQ0LCAgIDIwNywgICAxOTIsICAgMTI2LCAgICA0NCwgICAgNzMsICAgMTY1LCAg
IDE2NiwKLSAgICAgMjQ5LCAgICA0NCwgICAgODEsICAgMjUwLCAgICA1OSwgICAgNjAsICAgIDYx
LCAgICAyMywgICAgMjQsICAgIDMyLAotICAgICAgMzMsICAgMTU5LCAgIDI5NSwgICAgNDQsICAg
IDU0LCAgIDE3OCwgICAyOTUsICAgMTczLCAgIDE2MCwgICAxODUsCi0gICAgIDE4NiwgICAgNTYs
ICAgMTk5LCAgIDE3NCwgICAgNTgsICAgIDQ0LCAgIDE0NiwgICAxNjMsICAgMjI4LCAgICAgNiwK
LSAgICAgICA3LCAgICA4NCwgICAgNDQsICAgIDg1LCAgIDIxNywgICAgNTcsICAgMjIzLCAgIDI1
NiwgICAxNjgsICAgMTY5LAotICAgICAgODYsICAgMjMyLCAgIDIyNiwgICAxMjEsICAgLTc1LCAg
IDEyNiwgICAgNjcsICAgMTI2LCAgIDIxNywgICAgNzAsCi0gICAgIDI0NiwgICAyMTEsICAgMjEy
LCAgIDIxMywgICAgNTksICAgIDYwLCAgICA2MSwgICAgMjMsICAgIDI0LCAgIDE3MCwKLSAgICAg
MjE0LCAgIDI3MywgICAyNTUsICAgMTcxLCAgIDIyMCwgICAxMDgsICAgMjk4LCAgIDIxNywgICAg
NzQsICAgLTI1LAotICAgICAyMTUsICAgIDcwLCAgIDIxNywgICAxNzksICAgMTgwLCAgICA0NCwg
ICAgNzYsICAgIDQ0LCAgIDIzNywgICAyMzgsCi0gICAgIDIzOSwgICAyNDAsICAgIDQ5LCAgIDI1
OSwgICAyNjAsICAgMjMzLCAgIDIzNCwgICAxMDgsICAgMTA4LCAgIDEwOCwKLSAgICAgMTA4LCAg
IDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAyNjEsICAg
MzAyLAotICAgICAgODMsICAgMTQ2LCAgICAgMiwgICAgIDMsICAgICA0LCAgIDEyMSwgICAgNTks
ICAgIDYwLCAgICA2MSwgICAxODcsCi0gICAgIDE4OCwgICAyMTcsICAgMjY0LCAgIDEyNCwgICAx
MjYsICAgMjc0LCAgIDIzNSwgICAyMzYsICAgMjQxLCAgIDI0MiwKLSAgICAgMTU2LCAgIC0yNiwg
ICAxODksICAgMTcyLCAgIDE5NSwgICAyNjUsICAgMTc3LCAgIDEwOCwgICAxOTAsICAgMjAwLAot
ICAgICAyNzQsICAgMjc5LCAgIDEyMSwgICAxOTMsICAgMjAzLCAgIDIwMSwgICAyMDQsICAgMjA4
LCAgIDIwNSwgICAyOTAsCi0gICAgIDIxNywgIC0xMTYsICAgMjIxLCAgIDIwOSwgICAgNDQsICAg
MjI1LCAgIDI0OCwgIC0xNjQsICAgMjY4LCAgIDI5OSwKLSAgICAgIDU4LCAgICAgMiwgICAgIDMs
ICAgICA0LCAgIDEwOCwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAotICAgICAx
NDYsICAgMTYzLCAgIDI2MiwgICAyNjMsICAgLTI3LCAgIDI2NywgICAyNzgsICAgMjgxLCAgICAx
MSwgICAgMTIsCi0gICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKLSAgICAgMjgwLCAgIDI4NywgICAyODgsICAgIDIz
LCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDI4OSwgICAgMjcsICAgIDI4LAotICAgICAgMjksICAg
IDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgIDI5MSwgICAy
OTIsCi0gICAgICA5MiwgICAgOTMsICAgMjkzLCAgIDE0NiwgICAxNDYsICAgMjk0LCAgIDIzMSwg
ICAxNDYsICAgMTQ2LCAgIDMwMywKLSAgICAgMjQ0LCAgIDI0MywgICAxNTcsICAgIDc4LCAgIDI0
NSwgICAgODIsICAgMTU4LCAgICA1MSwgICAxOTQsICAgIDk0LAotICAgICAyNzAsICAgMjY2LCAg
IDE0NiwgICAyNTgsICAgMjcxLCAgIDMwMCwgICAyODIsICAgIDcyLCAgICAgMCwgICAgIDAsCi0g
ICAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMTQ2LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAxNDYsICAgICAxLCAgICAgMiwgICAg
IDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LAotICAgICAgIDgsICAgICA5LCAgICAxMCwg
ICAxMjksICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLCAgIDEzMywgICAxMzQsCi0gICAgIDEz
NSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4
LCAgICAxOSwKLSAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAotICAgICAxMzYsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsCi0gICAgICA5MSwgICAg
IDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKKyAgICAgIDQ0LCAgICA1NSwgICAxNjUsICAgMTY0LCAgIDE2OSwgICAgODAsICAgMjI2LCAg
IDEyMywgICAyMjIsICAgMjAwLAorICAgICAgNzEsICAgIDMyLCAgICAzMywgICAyNzIsICAgMTkz
LCAgICA3MCwgICAyODgsICAgIDQ5LCAgIDE4NSwgICAxODYsCisgICAgICA1NiwgICAxNzgsICAg
MTIzLCAgICA4OCwgICAgNzIsICAgIDUwLCAgICA1MiwgICAgNTMsICAgMTc1LCAgIDI3OCwKKyAg
ICAgIDg5LCAgIDIyOCwgICAgNTgsICAgIDc2LCAgIDE3NiwgICAgODQsICAgMzA0LCAgIDIxOSwg
ICAxNzAsICAgMTcxLAorICAgICAgNDQsICAgIDY2LCAgICA0NCwgICAgODYsICAgMjc4LCAgIDIw
OSwgICAgNDQsICAgMTI3LCAgIDI5OCwgICAxOTQsCisgICAgICA1OSwgICAgNDQsICAgMjk4LCAg
IDE4NywgICAxODgsICAgIDg0LCAgICA1NCwgICAgMzIsICAgIDMzLCAgIDE3MiwKKyAgICAgMTU4
LCAgIDE2MSwgICAgNzMsICAgMTczLCAgICA2NiwgICAgNDQsICAgMjc2LCAgIDMwMSwgICAxNjIs
ICAgIDY5LAorICAgICAgNTMsICAgIDY3LCAgIDIxOSwgICAyMTksICAgIDY4LCAgIDE2NSwgICAy
MjUsICAgIDQ0LCAgICA2MCwgICAxNDgsCisgICAgIDIzMCwgICAgNzgsICAgMjAwLCAgICAgNiwg
ICAgIDcsICAgIDQ0LCAgIDE4MywgICAyMTksICAgMTg0LCAgIDIzNSwKKyAgICAgMjIwLCAgICA2
MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAxMjMsICAgICA2LCAgICAgNywgICAxMjcsICAgIDQ5
LAorICAgICAxMjcsICAgMjUxLCAgIDI0OSwgICAyMTksICAgMjUyLCAgIDExMCwgICAyNTksICAg
IDg3LCAgICA2MSwgICAgNjIsCisgICAgICA2MywgICAgMjMsICAgIDI0LCAgIC0yNywgICAyNTgs
ICAgIDczLCAgIDIyMiwgICAgIDIsICAgICAzLCAgICAgNCwKKyAgICAgMTEwLCAgICA2MSwgICAg
NjIsICAgIDYzLCAgICAyMywgICAgMjQsICAgMTY3LCAgIDE2OCwgICAgNDQsICAgIDc5LAorICAg
ICAgNDQsICAgMjYyLCAgIDI2MywgICAyMTMsICAgMjE0LCAgIDIxNSwgICAgNTIsICAgIDUzLCAg
IDI2NCwgICAxODEsCisgICAgIDE4MiwgICAzMDUsICAgMjE2LCAgIDE4MCwgICAxMjYsICAgMTg5
LCAgIDE5MCwgICAtNzYsICAgLTI4LCAgIDIzMywKKyAgICAgMjM4LCAgIDIzOSwgICAyMTcsICAg
MTQ4LCAgIDIxOSwgICAyNjcsICAgMTc0LCAgIDEyMywgICAyNDAsICAgMjQxLAorICAgICAyNDIs
ICAgMjQzLCAgIDE5MSwgICAyNDQsICAgMjQ1LCAgIDI2OCwgICAxNzksICAgMTkyLCAgIDI3Nywg
ICAyMDUsCisgICAgIDE5NSwgICAxMjcsICAgMjA2LCAgIDIwMiwgICAyMDMsICAgMjA3LCAgIDIx
MCwgICAyMjcsICAgMjExLCAgIDIyMywKKyAgICAgMjgyLCAgLTExNywgICAyNTAsICAgMjc3LCAg
IDEyMywgICAyNzAsICAtMTY1LCAgLTEzOCwgICAyNjUsICAgMjY2LAorICAgICAyMTksICAgMjgx
LCAgIDI5MywgICAxMTAsICAgMjgzLCAgIDI4NCwgICAyOTYsICAgMjkxLCAgIDI5MiwgICAyOTQs
CisgICAgIDI5NSwgICAgNDQsICAgMzAyLCAgIDI3MSwgICAzMDYsICAgMjQ2LCAgIDI5NywgICAy
MzQsICAgMjQ3LCAgICA4MSwKKyAgICAgMTY1LCAgIDI0OCwgICAxNDgsICAgMjM2LCAgIDIzNywg
ICAxMTAsICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTEwLAorICAgICAxMTAsICAgMTEwLCAgIDEx
MCwgICAxMTAsICAgMTEwLCAgIDExMCwgICAxNTksICAgIDg1LCAgIDE2MCwgICAgNTEsCisgICAg
IDIwMSwgICAzMDMsICAgMjczLCAgIDI2MSwgICAyNjksICAgMjc0LCAgIDI4NSwgICAgNzUsICAg
ICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICA5NCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAxMzcsICAgMTM4LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwg
ICAgIDAsICAgMTM5LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDEsICAgICAyLCAg
ICAgMywKLSAgICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEw
LCAgIDEyOSwgICAxMzAsICAgMTMxLAotICAgICAgIDAsICAgMTMyLCAgIDEzMywgICAxMzQsICAg
MTM1LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCi0gICAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwK
LSAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAy
OSwgICAgMzAsICAgIDg3LAotICAgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAg
ICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAyOTAsICAgMTEwLCAgIDE0OCwgICAxNDgsICAgICAwLCAgICAgMCwKKyAgICAg
MTQ4LCAgIDE0OCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0OCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgMTEwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAg
IDE0OCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDgsICAgICAxLCAgICAgMiwgICAgIDMsICAg
ICA0LAorICAgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEs
ICAgMTMyLCAgIDEzMywgICAgIDAsCisgICAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAg
MTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwKKyAgICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLAor
ICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICA5MCwgICAgMzEsCisgICAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAg
IDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAg
MCwgICAgIDAsCi0gICAgIDEzNywgICAyMTksICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwKLSAgICAgIDk3LCAgICAgMSwgICAgIDIsICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LAotICAgICAgMTAsICAg
MTI5LCAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LCAgIDEzNSwgICAg
MTEsCi0gICAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwKLSAgICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzYsICAgIDI3LAotICAgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsCi0g
ICAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwgICAg
IDAsICAgICAwLCAgICAgMCwgICAxMzksICAgMTQwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgMTQxLCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAgIDEsCisgICAgICAg
MiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEw
LCAgIDEzMSwKKyAgICAgMTMyLCAgIDEzMywgICAgIDAsICAgMTM0LCAgIDEzNSwgICAxMzYsICAg
MTM3LCAgICAxMSwgICAgMTIsICAgIDEzLAorICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCisgICAgICAgMCwgICAg
IDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEzOCwgICAgMjcsICAgIDI4LCAgICAy
OSwKKyAgICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5MiwgICAgOTMsICAgICAwLCAg
ICAgMCwgICAgOTQsICAgIDk1LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwKKyAg
ICAgICAwLCAgIDEzOSwgICAyMjEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwg
ICAgOTcsICAgIDk4LAorICAgICAgIDAsICAgIDk5LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsCisgICAgICAgOSwgICAgMTAsICAgMTMxLCAg
IDEzMiwgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywKKyAgICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
ICAgIDIwLAorICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwgICAxMzgsCisgICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwg
ICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwKKyAgICAgICAwLCAgICA5
NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCi0gICAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzcs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgMTM5LCAgICA5NSwgICAg
OTYsICAgICAwLCAgICA5NywgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LAotICAg
ICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEyOSwgICAxMzAsICAgMTMxLCAg
ICAgMCwgICAxMzIsCi0gICAgIDEzMywgICAxMzQsICAgMTM1LCAgICAxMSwgICAgMTIsICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKKyAgICAgIDk2LCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDEzOSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAxNDEs
ICAgIDk3LCAgICA5OCwgICAgIDAsICAgIDk5LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwg
ICAgIDUsCisgICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMxLCAgIDEz
MiwgICAxMzMsICAgICAwLCAgIDEzNCwKKyAgICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAogICAgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQs
Ci0gICAgICAyNSwgICAgMjYsICAgMTM2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
ODcsICAgIDMxLCAgICA4OCwKLSAgICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwg
ICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgMjUsICAgIDI2LCAgIDEz
OCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsCisgICAg
ICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA3NiwgICAgIDAsCi0gICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAg
ICAgMSwKLSAgICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4
LCAgICAgOSwgICAgMTAsICAgMTI5LAotICAgICAxMzAsICAgMTMxLCAgICAgMCwgICAxMzIsICAg
MTMzLCAgIDEzNCwgICAxMzUsICAgIDExLCAgICAxMiwgICAgMTMsCi0gICAgICAxNCwgICAgMTUs
ICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwK
LSAgICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM2LCAgICAy
NywgICAgMjgsICAgIDI5LAotICAgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAg
ICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsCi0gICAgICA5MywgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
OTQsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgIDEzOSwgICAgOTUsCi0gICAgICA5NiwgICAgIDAsICAgIDk3LCAgICAg
MSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKLSAgICAgICA4LCAg
ICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLAotICAgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYs
ICAgIDE3LCAgICAxOCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgICAwLCAgICAyNywg
ICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLAot
ICAgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgNzksICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMTQxLCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAgIDEsICAgICAyLAorICAgICAg
IDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEz
MSwgICAxMzIsCisgICAgIDEzMywgICAgIDAsICAgMTM0LCAgIDEzNSwgICAxMzYsICAgMTM3LCAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwKKyAgICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEzOCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAg
MzAsCisgICAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwg
ICAgOTQsICAgIDk1LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsCisg
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgOTcs
ICAgIDk4LCAgICAgMCwKKyAgICAgIDk5LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAg
IDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LAorICAgICAgMTAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsCisgICAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIw
LCAgICAyMSwKKyAgICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgIDAsICAgIDI3LAorICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAs
ICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsCisgICAgICA5NCwgICAg
OTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDk2LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsCisgICAgICA5NywgICAgOTgsICAg
ICAwLCAgICA5OSwgICAgNjAsICAgICAyLCAgICAgMywgICAgIDQsICAgICAwLCAgICAgNiwKKyAg
ICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAx
NCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCisgICAgICAxOSwgICAgMjAsICAgIDIxLCAg
ICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwKKyAgICAgIDI2
LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEs
ICAgIDkyLAorICAgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAg
MCwgICAgOTQsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAw
LAotICAgICAgIDAsICAgICAwLCAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAg
IDExLCAgICAxMiwgICAgMTMsCisgICAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDk3LCAgICA5OCwgICAgIDAsICAgIDk5LCAgICAxMSwgICAgMTIsICAgIDEzLAogICAg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAg
ICAyMiwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2
LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICA4NywgICAgMzEsICAg
IDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLAotICAgICAgOTMs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDk0LCAgICAgMCwKLSAgICAgICAwLCAgIDE2MSwgICAgIDgsICAgICA5LCAg
ICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk1LAotICAgICAgOTYsICAgICAw
LCAgICA5NywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcs
Ci0gICAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKLSAgICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LAotICAgICAgODksICAgIDkwLCAgICA5
MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAg
ICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAg
IDk0LCAgICA5NSwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksCi0gICAgICAxMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAyMDYsICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAg
ICAxMSwKLSAgICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLAotICAgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsCi0gICAgICAyOCwgICAgMjks
ICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwK
LSAgICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsCisgICAgIDE2MywgICAgIDgsICAgICA5
LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk3LCAgICA5OCwKKyAgICAg
ICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAg
MTcsICAgIDE4LAorICAgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsCisgICAgICAyNiwgICAgIDAsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5MiwKKyAgICAgIDkzLCAg
ICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICA5NCwgICAgIDAsICAgICAwLCAgIDIyMiwgICAg
IDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICA5NSwg
ICAgOTYsICAgICAwLCAgICA5NywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAot
ICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAw
LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywKLSAgICAgIDMxLCAgICA4OCwgICAgODks
ICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLAorICAgICAg
IDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAx
MCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgMjA4LCAgICA5NywgICAgOTgsICAgICAwLCAg
ICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAorICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAg
MjksCisgICAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwg
ICAgIDAsICAgIDk0LCAgICA5NSwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAgMCwgICAgIDAsCi0g
ICAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTUs
ICAgIDk2LCAgICAgMCwKLSAgICAgIDk3LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAg
MTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAsICAgIDIxLCAgICAyMiwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAxNzUsCi0gICAgICAg
MCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5
LCAgICA5MCwKLSAgICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsCisgICAgIDIyNCwgICAg
IDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk3LCAgICA5
OCwKKyAgICAgICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAg
ICAxNiwgICAgMTcsICAgIDE4LAorICAgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsCisgICAgICAyNiwgICAgIDAsICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5MiwKKyAg
ICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDk0LCAg
ICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwKLSAgICAgICA5
LCAgICAxMCwgICAgIDAsICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAgMCwgICAgIDAs
ICAgICAwLAotICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAg
MTcsICAgIDE4LCAgICAxOSwgICAgMjAsCi0gICAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwKLSAgICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAyLCAgICAgMywgICAgIDQsICAgICAw
LAotICAgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKLSAgICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgMTk4LCAgICAgMCwgICAgIDAsICAgICAwLAotICAg
ICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgICAwLCAg
ICAzMSwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA3MSwKLSAgICAgICAwLCAgICAgMCwgICAgIDEsICAg
ICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LAotICAgICAgIDks
ICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAyNDcsCi0gICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAx
NywgICAgMTgsICAgIDE5LCAgICAyMCwKLSAgICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLAotICAgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsICAgICAwLCAgICAzMSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQs
CisgICAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAg
IDksICAgIDEwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk3LCAgICA5OCwg
ICAgIDAsICAgIDk5LCAgICAxMSwgICAgMTIsICAgIDEzLAorICAgICAgMTQsICAgIDE1LCAgICAx
NiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCisgICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgMTc3LCAgICAgMCwgICAgMjcsICAg
IDI4LCAgICAyOSwKKyAgICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5MiwgICAgOTMs
ICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAyLCAg
ICAgMywKKyAgICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEw
LCAgICAgMCwgICAgOTcsICAgIDk4LAorICAgICAgIDAsICAgIDk5LCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCisgICAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwK
KyAgICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAy
OSwgICAgMzAsICAgICAwLAorICAgICAgMzEsICAgICAyLCAgICAgMywgICAgIDQsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsCisgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwKKyAgICAg
IDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLAorICAgICAxOTksICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwg
ICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsCisgICAgICAyOSwgICAgMzAsICAgICAwLCAgICAz
MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDc0LCAgICAgMCwgICAgIDAsICAgICAxLCAgICAgMiwgICAgIDMsICAg
ICA0LAogICAgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
MTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwKKyAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgMjUzLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAog
ICAgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgMjMsCiAgICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAg
IDI4LCAgICAyOSwgICAgMzAsICAgICAwLCAgICAzMSwKLSAgICAgICAyLCAgICAgMywgICAgIDQs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLAotICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAx
MiwgICAgMTMsCi0gICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LAotICAgICAgMzAsICAg
ICAwLCAgICAzMSwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAxNiwKLSAgICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAy
MSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgIDI1LCAg
ICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgIDIyOSwgICAgMzEsCi0g
ICAgICAgOCwgICAgIDksICAgIDEwLCAgIDIzMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAg
IDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsCisgICAgICAx
MywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIx
LCAgICAyMiwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAg
IDI2LCAgICAgMCwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEs
ICAgICAyLCAgICAgMywgICAgIDQsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgOCwgICAg
IDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKICAgICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAg
ICAxNywgICAgMTgsICAgIDE5LAogICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsCi0gICAgICAgMCwgICAgMjcsICAg
IDI4LCAgICAyOSwgICAgMzAsICAgICAwLCAgICAzMQorICAgICAgIDAsICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICA4LCAgICAgOSwgICAgMTAsCisgICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEx
LCAgICAxMiwKKyAgICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsCisgICAgICAyOSwgICAg
MzAsICAgMjMxLCAgIDIzMiwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAg
MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAg
ICAxMywgICAgMTQsICAgIDE1LAorICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIw
LCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAg
IDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwKKyAg
ICAgIDMxCiB9OwogCisjZGVmaW5lIHl5cGFjdF92YWx1ZV9pc19kZWZhdWx0KFl5c3RhdGUpIFwK
KyAgKCEhKChZeXN0YXRlKSA9PSAoLTI2MSkpKQorCisjZGVmaW5lIHl5dGFibGVfdmFsdWVfaXNf
ZXJyb3IoWXl0YWJsZV92YWx1ZSkgXAorICBZWUlEICgwKQorCiBzdGF0aWMgY29uc3QgeXl0eXBl
X2ludDE2IHl5Y2hlY2tbXSA9CiB7Ci0gICAgICAgMCwgICAgNTUsICAgIDk0LCAgICA4NiwgICAg
NzAsICAgMTI3LCAgICA0NSwgICAxNTEsICAgMjczLCAgICA2MCwKLSAgICAgIDQwLCAgICAzNiwg
ICAgODUsICAgICAwLCAgICAgMCwgICAxNjAsICAgMjU3LCAgICAzNywgICAgNzksICAgIDg1LAot
ICAgICAgODQsICAgIDgyLCAgICA4NiwgICAxMDYsICAgICAzLCAgICA0NSwgICAgNzAsICAgMjUz
LCAgIDI5MywgICAgIDgsCi0gICAgICAgOSwgICAyNzIsICAgIDU3LCAgICA2MywgICAgNTUsICAg
IDU2LCAgICA3OSwgICAgNzYsICAgIDQyLCAgICA4MiwKLSAgICAgIDQwLCAgICA4NSwgICAgNDIs
ICAgMTM1LCAgICA5NSwgICAgNzUsICAgIDQ2LCAgICA1MSwgICAgOTIsICAgIDkzLAotICAgICAg
NzksICAgIDUxLCAgICA4MiwgICAgODIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAz
NywgICAgNDYsCi0gICAgICA0NiwgICAgNzQsICAgMjg4LCAgICA2MywgICAgODIsICAgMTA5LCAg
IDI5MiwgICAgNzMsICAgIDgxLCAgICA5MCwKLSAgICAgIDkxLCAgICA3MywgICAxOTQsICAgIDc5
LCAgICAgMywgICAgNzUsICAgIDc2LCAgIDE2MCwgICAxNzAsICAgICA4LAotICAgICAgIDksICAg
IDcyLCAgICA4MiwgICAgNzQsICAgIDc5LCAgICA3OSwgICAxNTksICAgIDgyLCAgICA1MywgICAg
NTQsCi0gICAgICA4MSwgICAxNzQsICAgIDczLCAgIDE1OSwgICAgNzMsICAgMTI1LCAgICA0NSwg
ICAxMjcsICAgIDc5LCAgICA3NCwKLSAgICAgMTkyLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICAz
MywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDc0LAotICAgICAgNzEsICAgIDczLCAg
IDIwNCwgICAgNzgsICAgMjU4LCAgIDE1OSwgICAgNzMsICAgIDc5LCAgICA3NiwgICAgNzIsCi0g
ICAgICA4MSwgICAgNzQsICAgIDc5LCAgICA4NywgICAgODgsICAgMTI1LCAgICA3NiwgICAxMjcs
ICAgMTgzLCAgIDE4NCwKLSAgICAgMTg1LCAgIDE4NiwgICAgMzcsICAgMjE2LCAgIDIxNywgICAx
NzksICAgMTgwLCAgIDE4MSwgICAxODIsICAgMTgzLAotICAgICAxODQsICAgMTg1LCAgIDE4Niwg
ICAxODcsICAgMTg4LCAgIDE4OSwgICAxOTAsICAgMTkxLCAgIDIyMSwgICAyOTQsCi0gICAgICA0
NSwgICAxNTEsICAgICA0LCAgICAgNSwgICAgIDYsICAgMjIxLCAgICAzMywgICAgMzQsICAgIDM1
LCAgICA1NywKLSAgICAgIDU4LCAgICA3OSwgICAgODAsICAgIDgyLCAgIDE5NCwgICAyNTcsICAg
MTgxLCAgIDE4MiwgICAxODcsICAgMTg4LAotICAgICAgNDUsICAgIDcyLCAgICA1OSwgICAgNzMs
ICAgIDQ1LCAgIDI0OCwgICAgNzIsICAgMjIxLCAgICA2MSwgICAgODIsCi0gICAgIDI3MiwgICAy
NjQsICAgMjQ4LCAgICA3NSwgICAgNzIsICAgIDgyLCAgICA3MiwgICAgNzIsICAgIDgyLCAgIDI4
MSwKLSAgICAgIDc5LCAgICA3MiwgICAgNzQsICAgIDc3LCAgIDE5NCwgICAgNzUsICAgIDc0LCAg
ICA3NiwgICAyNTIsICAgMjkxLAotICAgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgMjQ4
LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsCi0gICAgIDIxMCwgICAyOTQsICAg
IDc1LCAgICA3NSwgICAgNzIsICAgIDQwLCAgICA3NSwgICAgNzIsICAgIDIxLCAgICAyMiwKLSAg
ICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwg
ICAgMzEsICAgIDMyLAotICAgICAgNzUsICAgIDQ1LCAgICA3MywgICAgMzYsICAgIDM3LCAgICAz
OCwgICAgMzksICAgIDc3LCAgICA0MSwgICAgNDIsCi0gICAgICA0MywgICAgNDQsICAgIDQ1LCAg
ICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDgyLCAgICA3MywKLSAgICAgIDUz
LCAgICA1NCwgICAgMTYsICAgMjUzLCAgIDI1NCwgICAgODEsICAgMTcxLCAgIDI1NywgICAyNTgs
ICAgIDgyLAotICAgICAxOTAsICAgMTg5LCAgICA4MiwgICAgNTcsICAgMTkxLCAgICA2NCwgICAg
ODIsICAgICA1LCAgIDEyNSwgICAgNzIsCi0gICAgIDI1NCwgICAyNDksICAgMjcyLCAgIDIxMCwg
ICAyNTQsICAgMjkyLCAgIDI3MiwgICAgNDYsICAgIC0xLCAgICAtMSwKLSAgICAgIDgzLCAgICA4
NCwgICAgLTEsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyODgsICAgIC0x
LAotICAgICAgLTEsICAgIC0xLCAgIDI5MiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwKLSAgICAgIDIwLCAgICAyMSwgICAg
MjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAotICAg
ICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAg
ICAzOCwgICAgMzksCi0gICAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1
LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwKLSAgICAgIDUwLCAgICAtMSwgICAgLTEsICAg
IDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgIDAs
ICAgIDI1LCAgICA4OSwgICAgODgsICAgIDk2LCAgICA1NywgICAxNjIsICAgIDczLCAgIDE1Mywg
ICAxMjgsCisgICAgICA0MCwgICAgIDAsICAgICAwLCAgIDI1NiwgICAgNTksICAgIDM5LCAgIDI3
NiwgICAgMzcsICAgIDU0LCAgICA1NSwKKyAgICAgIDgxLCAgIDEwOCwgICAgODgsICAgIDczLCAg
ICA0MiwgICAgNDUsICAgIDQ1LCAgICA0NiwgICAgNzIsICAgMjYwLAorICAgICAgODAsICAgIDcy
LCAgICA3MiwgICAgNTEsICAgIDc4LCAgICA2NSwgICAyOTYsICAgIDc4LCAgICA1MiwgICAgNTMs
CisgICAgICA0MCwgICAgMzYsICAgIDQyLCAgICA2NywgICAyNzUsICAgMTM3LCAgICA0NiwgICAg
NzcsICAgMjkxLCAgICA5NCwKKyAgICAgIDc4LCAgICA1MSwgICAyOTUsICAgIDg5LCAgICA5MCwg
ICAgODUsICAgIDc1LCAgICA0NiwgICAgNDYsICAgIDczLAorICAgICAgODQsICAgIDczLCAgICA3
MywgICAgNzcsICAgIDU5LCAgICA2NSwgICAgNzIsICAgIDcyLCAgICA4MCwgICAgNDUsCisgICAg
ICA0NiwgICAgNzgsICAgIDc4LCAgICA3OCwgICAgODEsICAgMTYyLCAgIDE2MSwgICAgNzcsICAg
ICAzLCAgICA3OSwKKyAgICAgMTcyLCAgICA3NSwgICAyMDEsICAgICA4LCAgICAgOSwgICAgODUs
ICAgIDgzLCAgICA3OCwgICAgODUsICAgMTc2LAorICAgICAgODEsICAgICAzLCAgICAzMywgICAg
MzQsICAgIDM1LCAgIDE2MSwgICAgIDgsICAgICA5LCAgIDEyOCwgICAgMzcsCisgICAgIDEzMCwg
ICAgNzgsICAgMTk0LCAgICA3OCwgICAgODEsICAgIDczLCAgICA4MSwgICAgNzEsICAgIDMzLCAg
ICAzNCwKKyAgICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDcxLCAgIDIwNiwgICAgNzMsICAgMjYx
LCAgICAgNCwgICAgIDUsICAgICA2LAorICAgICAgODgsICAgIDMzLCAgICAzNCwgICAgMzUsICAg
IDM2LCAgICAzNywgICAgOTQsICAgIDk1LCAgIDEyOCwgICAgNzUsCisgICAgIDEzMCwgICAyMTgs
ICAgMjE5LCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA0NSwgICAgNDYsICAgMjIzLCAgICA4NiwK
KyAgICAgIDg3LCAgIDI5NywgICAgNzAsICAgMTExLCAgICA4MSwgICAgNTYsICAgIDU3LCAgICA3
MiwgICAgNzEsICAgMTczLAorICAgICAxODMsICAgMTg0LCAgICA4MCwgICAxNTMsICAgIDc4LCAg
ICA3OSwgICAgNzIsICAgMjIzLCAgIDE4NSwgICAxODYsCisgICAgIDE4NywgICAxODgsICAgIDU4
LCAgIDE4OSwgICAxOTAsICAgMjUwLCAgICA3MSwgICAgNjAsICAgMjYwLCAgICA3MSwKKyAgICAg
IDc0LCAgIDIwMSwgICAgNzEsICAgIDgxLCAgICA4MSwgICAgODEsICAgIDcxLCAgICA3NCwgICAg
NzYsICAgIDczLAorICAgICAyNjcsICAgIDcxLCAgICA3MywgICAyNzUsICAgMjUwLCAgICA0MCwg
ICAgNzUsICAgIDcxLCAgICA3NCwgICAgNzQsCisgICAgICA3OCwgICAgNzQsICAgMjg0LCAgIDE2
MSwgICAgNzQsICAgIDcxLCAgICAxNiwgICAgNzIsICAgIDc2LCAgICA4MSwKKyAgICAgIDcyLCAg
IDIwMSwgICAyOTQsICAgMjU1LCAgICA4MSwgICAxOTEsICAgIDgwLCAgIDE3MywgICAxOTIsICAg
IDU5LAorICAgICAyOTcsICAgMTkzLCAgIDIxMiwgICAxODEsICAgMTgyLCAgIDE4MywgICAxODQs
ICAgMTg1LCAgIDE4NiwgICAxODcsCisgICAgIDE4OCwgICAxODksICAgMTkwLCAgIDE5MSwgICAx
OTIsICAgMTkzLCAgICA4NSwgICAgNjYsICAgIDg1LCAgICAgNSwKKyAgICAgMTMwLCAgIDI5NSwg
ICAyNTcsICAgMjEyLCAgIDI1MSwgICAyNTcsICAgMjc1LCAgICA0NiwgICAgLTEsICAgIC0xLAog
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA3NiwgICAgNzcsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgODIs
ICAgIDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAgMywgICAgIDQsICAgICA1LAotICAgICAg
IDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAx
NCwgICAgMTUsCi0gICAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAg
ICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwKLSAgICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgMzYsICAg
IDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAg
NDUsCi0gICAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwg
ICAgNTMsICAgIDU0LCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDI3
OCwgICAyMjMsICAgMjU2LCAgIDI1NywgICAgLTEsICAgIC0xLAorICAgICAyNjAsICAgMjYxLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisg
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMjc1LCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAyNTAsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgMjkxLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgIDI5NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsCisgICAgICAg
NywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1
LCAgICAtMSwKKyAgICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAorICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsCisgICAgICAzNywgICAg
MzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0
NiwKKyAgICAgIDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLCAg
ICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAg
ICAgIDc2LCAgICA3NywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4Mywg
ICAgODQsICAgIC0xLAotICAgICAgODYsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAg
NywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsCi0gICAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwgICAgLTEsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwKLSAgICAgIDIy
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDMxLAotICAgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAg
MzgsICAgIDM5LCAgICA0MCwgICAgNDEsCi0gICAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwg
ICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwKLSAgICAgIC0xLCAgICA1
MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA3NSwgICAgNzYsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEs
ICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAgMywKKyAgICAgICA0LCAgICAgNSwgICAg
IDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLAorICAg
ICAgMTQsICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAg
ICAyMiwgICAgMjMsCisgICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMzYsICAg
IDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLAorICAgICAgNDQs
ICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLCAgICA1Miwg
ICAgNTMsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIDc1
LCAgICA3NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMs
CisgICAgICAtMSwgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAg
IDgsICAgICA5LCAgICAxMCwKKyAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwg
ICAgLTEsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLAorICAgICAgMjEsICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCisgICAg
ICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAg
IDM5LCAgICA0MCwKKyAgICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYs
ICAgIDQ3LCAgICA0OCwgICAgNDksICAgIC0xLAorICAgICAgLTEsICAgIDUyLCAgICA1MywgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKLSAgICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3NiwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgODIsICAgIDgzLCAgICA4NCwgICAgLTEsICAg
IDg2LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsCisgICAgICA3MSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgNzUsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
KyAgICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgIDMsICAgICA0LCAgICAg
NSwgICAgIDYsICAgICA3LAogICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAg
ICAxMywgICAgMTQsICAgIDE1LCAgICAtMSwgICAgMTcsCiAgICAgICAxOCwgICAgMTksICAgIDIw
LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywKICAgICAg
IDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MzYsICAgIDM3LAogICAgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0Mywg
ICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsCi0gICAgICA0OCwgICAgNDksICAgIDUwLCAgICAt
MSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIDQ4LCAg
ICA0OSwgICAgLTEsICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
NzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgICAzLAot
ICAgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgMTMsCi0gICAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywKLSAgICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAotICAgICAg
LTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0
MiwgICAgNDMsCi0gICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywKLSAgICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MiwgICAg
LTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDgyLCAgICA4MywKLSAgICAgIDg0LCAgICAtMSwgICAgODYsICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LAotICAgICAgMTAsICAgIDExLCAg
ICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0g
ICAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcs
ICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LAotICAgICAgLTEsICAgIDQxLCAgICA0Miwg
ICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksCi0gICAgICA1
MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA3NSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEs
ICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAgMywgICAgIDQsCisgICAgICAgNSwgICAg
IDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAx
NCwKKyAgICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAg
ICAyMiwgICAgMjMsICAgIDI0LAorICAgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgMzYsICAg
IDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwKKyAg
ICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLCAgICA1Miwg
ICAgNTMsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMs
ICAgIC0xLAorICAgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAg
IDgsICAgICA5LCAgICAxMCwgICAgMTEsCisgICAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwKKyAgICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMx
LAorICAgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAg
IDM5LCAgICAtMSwgICAgNDEsCisgICAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYs
ICAgIDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwKKyAgICAgIDUyLCAgICA1MywgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgNzEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MSwKKyAgICAgIDgyLCAgICA4MywgICAgLTEsICAg
IDg1LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEsICAgICA4LAorICAgICAgIDks
ICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LAorICAgICAgMzksICAgIC0x
LCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgs
CisgICAgICA0OSwgICAgLTEsICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICA3
MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCi0gICAg
ICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAg
IDIyLCAgICAyMywKKyAgICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
ODIsICAgIDgzLCAgICAtMSwgICAgODUsICAgIDIxLCAgICAyMiwgICAgMjMsCiAgICAgICAyNCwg
ICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAg
ICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0x
LCAgICA0MSwgICAgNDIsICAgIDQzLAotICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAg
IDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsCi0gICAgICA1NCwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
LSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgNzIsICAgIC0xLAotICAgICAgLTEsICAgIDc1LCAgICAxMCwgICAgMTEsICAgIDEyLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODMsCi0gICAgICA4NCwgICAgLTEsICAgIDg2
LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywKLSAgICAg
IDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLAotICAgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0Mywg
ICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsCi0gICAgICA0OCwgICAgNDksICAgIDUwLCAgICAt
MSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIDQ0LCAg
ICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAg
IDUzLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
NzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwKLSAgICAgIDEyLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgIDIxLAot
ICAgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgMzEsCi0gICAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwKLSAgICAgIDQyLCAgICA0MywgICAgNDQs
ICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLAotICAgICAg
LTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgNzEsICAgIC0xLCAgICAtMSwKKyAgICAgIDc0LCAgICAxMCwgICAgMTEsICAgIDEy
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLAorICAgICAgLTEsICAg
IDg1LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAg
MjgsCisgICAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAzOCwKKyAgICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0
MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAorICAgICAgNDksICAgIC0xLCAg
ICAtMSwgICAgNTIsICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAg
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKLSAgICAgIDcyLCAgICAtMSwgICAgLTEsICAgIDc1LCAgICAxMCwgICAg
MTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIDgzLCAgICA4NCwg
ICAgLTEsICAgIDg2LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsCi0gICAgICAy
NiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0x
LCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAg
IDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAotICAgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDks
ICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsCisgICAgICAtMSwgICAg
LTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAt
MSwKKyAgICAgIC0xLCAgICAtMSwgICAgODEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAg
ICAyMSwgICAgMjIsICAgIDIzLAorICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKKyAg
ICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwg
ICAgNTIsICAgIDUzLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDEw
LCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MywgICAgODQs
ICAgIC0xLAotICAgICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAg
MjYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwKLSAgICAgIC0xLCAgICA0
MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5
LAotICAgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAgICAtMSwKKyAgICAgIDc0LCAgICAxMCwgICAg
MTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLAorICAg
ICAgLTEsICAgIDg1LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAg
ICAyNywgICAgMjgsCisgICAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwKKyAgICAgIDM5LCAgICAtMSwgICAgNDEsICAg
IDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAorICAgICAgNDks
ICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgNzIsICAgICA0LCAg
ICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLAotICAgICAgMTEsICAgIDEy
LCAgICAtMSwgICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEs
Ci0gICAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwKLSAgICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLAotICAgICAgNDEsICAgIDQyLCAgICA0
MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEsCi0gICAg
ICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMs
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LAotICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
MzEsICAgIDMyLCAgICAtMSwgICAgNzcsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAzOCwg
ICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LCAg
ICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgICAwLAotICAgICAgLTEsICAgIC0xLCAgICAgMywgICAgIDQsICAg
ICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCi0gICAgICAxMSwgICAgMTIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3NywK
LSAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLAotICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsCi0gICAgICA0MSwgICAgNDIsICAgIDQz
LCAgICA0NCwgICAgLTEsICAgIDQ2LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwKKyAgICAg
IC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAg
MTIsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAgICAtMSwg
ICAgODUsICAgIDIxLCAgICAyMiwgICAgMjMsCisgICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKKyAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAg
IDQzLAorICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEs
ICAgIC0xLCAgICA1MiwgICAgNTMsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MSwgICAgIDQsICAgICA1LAor
ICAgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0x
LCAgICA4MiwgICAgODMsCisgICAgICAtMSwgICAgODUsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwKKyAgICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAg
LTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0
NCwgICAgLTEsCisgICAgICA0NiwgICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLAorICAgICAgMjMsICAg
IDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAg
MzIsCisgICAgICA3NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwg
ICAgLTEsICAgIDQxLCAgICA0MiwKKyAgICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgIDAsICAgIC0xLCAgICAtMSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsCiAg
ICAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAg
MjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgNzYsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCiAgICAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAzNiwKICAgICAgIDM3LCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAg
IDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LAotICAgICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCi0gICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAy
MywKLSAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICAzMSwgICAgMzIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4
LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsCi0gICAgICA0NCwgICAgLTEsICAg
IDQ2LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwg
ICAgMjUsICAgIDI2LAotICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAz
MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgMzgsICAgIDM5LCAg
ICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwKLSAgICAgIDEw
LCAgICAxMSwgICAgMTIsICAgIDUwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAorICAgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAg
IDksICAgIDEwLCAgICAxMSwgICAgMTIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAg
IC0xLCAgICA0MSwgICAgNDIsCisgICAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIDEwLCAgICAxMSwgICAg
MTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAg
ICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksCiAgICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwKLSAgICAgIC0xLCAgICA0MSwgICAgNDIsICAg
IDQzLCAgICA0NCwgICAgLTEsICAgIDQ2CisgICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0Mywg
ICAgNDQsICAgIC0xLCAgICA0NiwgICAgMTAsICAgIDExLCAgICAxMiwKKyAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIy
LAorICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAg
IDMwLCAgICAzMSwgICAgMzIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwKKyAgICAgIDQzLCAgICA0NCwgICAg
NDUsICAgIDQ2LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAg
ICAyNCwgICAgMjUsCisgICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMx
LCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMzgsICAg
IDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLAorICAgICAgNDYK
IH07CiAKIC8qIFlZU1RPU1tTVEFURS1OVU1dIC0tIFRoZSAoaW50ZXJuYWwgbnVtYmVyIG9mIHRo
ZSkgYWNjZXNzaW5nCkBAIC0xMzA4LDMyICsxMjkxLDMyIEBAIHN0YXRpYyBjb25zdCB5eXR5cGVf
dWludDggeXlzdG9zW10gPQogICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzYsICAgIDM3LCAg
ICAzOCwgICAgMzksICAgIDQxLCAgICA0MiwgICAgNDMsCiAgICAgICA0NCwgICAgNDYsICAgMTI2
LCAgIDEyNywgICAxMjgsICAgMTI5LCAgIDEzMCwgICAxMzUsICAgMTM2LCAgIDEzNywKICAgICAg
MTM4LCAgIDEzOSwgICAxNDAsICAgMTQxLCAgIDE0MiwgICAxNDMsICAgMTc1LCAgIDE3NiwgICAx
NzcsICAgIDM3LAotICAgICAgNDUsICAgMTQwLCAgICA0NSwgICAgNzYsICAgIDgyLCAgIDE3OCwg
ICAgNzMsICAgIDc5LCAgICAgMywgICAgMzMsCi0gICAgICAzNCwgICAgMzUsICAgMTMyLCAgIDEz
MywgICAxMzgsICAgIDc5LCAgICA4MiwgICAgNDUsICAgMTM5LCAgIDE0MSwKLSAgICAgIDc0LCAg
ICAgMCwgICAxNzYsICAgMTQxLCAgICA3NiwgICAxNDUsICAgIDc2LCAgIDE2MSwgICAxMzIsICAg
MTMxLAotICAgICAxMzQsICAgMTM5LCAgIDEzMywgICAgNDUsICAgIDcyLCAgICA3NCwgICAgODEs
ICAgIDQ1LCAgICA0NywgICAgNDgsCi0gICAgICA0OSwgICAgNTAsICAgIDUzLCAgICA1NCwgICAg
NzIsICAgIDgzLCAgICA4NCwgICAgODYsICAgIDk3LCAgICA5OCwKLSAgICAgIDk5LCAgIDEwMSwg
ICAxMDIsICAgMTAzLCAgIDEwNCwgICAxMDUsICAgMTA2LCAgIDEwNywgICAxMDgsICAgMTA5LAot
ICAgICAxMTAsICAgMTExLCAgIDExMiwgICAxMTMsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3
LCAgIDExOCwgICAxMTksCi0gICAgIDEyMCwgICAxMjEsICAgMTI1LCAgIDE0MiwgICAgODIsICAg
MTQ0LCAgIDEzOSwgICAxNDYsICAgMTQ3LCAgICAxMywKLSAgICAgIDE0LCAgICAxNSwgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDQwLCAgICA3NiwgICAgNzcsICAgIDgyLAotICAgICAx
MDgsICAgMTIxLCAgIDEyMiwgICAxMjQsICAgMTI2LCAgIDEyNywgICAxNDIsICAgMTUxLCAgIDE1
MiwgICAxNTMsCi0gICAgIDE1NCwgICAxNjIsICAgMTYzLCAgIDE2NCwgICAxNjcsICAgMTc0LCAg
ICA0NSwgICAxMzEsICAgMTM0LCAgICA3NCwKLSAgICAgIDgxLCAgICA3NSwgICAxMjUsICAgMTIy
LCAgIDE1MCwgICAxMDgsICAgMTA4LCAgIDEyNCwgICAgNTMsICAgIDU0LAotICAgICAgNzQsICAg
IDc4LCAgICA3MywgICAgNzMsICAgIDc5LCAgICAzOSwgICAxMjIsICAgIDcyLCAgIDEwOCwgICAg
ODcsCi0gICAgICA4OCwgICAgODQsICAgIDg2LCAgICA1NSwgICAgNTYsICAgIDkwLCAgICA5MSwg
ICAgNTcsICAgIDU4LCAgICA1OSwKLSAgICAgIDYxLCAgICA2MCwgICAgOTUsICAgIDc1LCAgIDE0
NiwgICAgNDUsICAgMTQ4LCAgIDE0OSwgICAgNzcsICAgMTQ3LAotICAgICAgODIsICAgIDgyLCAg
IDE2OSwgICAgNzIsICAgIDcyLCAgICA4MiwgICAgODIsICAgMTI0LCAgICA3MiwgICAgNzcsCi0g
ICAgIDE1NSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNzEsICAgIDgxLCAgIDEyMywgICAgNzks
ICAgIDgyLCAgICA3NywKLSAgICAgMTUyLCAgICA3NCwgICAgNzUsICAgMTI1LCAgIDE1MCwgICAg
NzUsICAgIDczLCAgIDEwMCwgICAxMjQsICAgIDQ1LAotICAgICAgNTAsICAgMTAzLCAgIDEyMiwg
ICAxMDgsICAgMTA4LCAgIDExMCwgICAxMTAsICAgMTEyLCAgIDExMiwgICAxMTIsCi0gICAgIDEx
MiwgICAxMTMsICAgMTEzLCAgIDExNywgICAxMTgsICAgMTE5LCAgIDEyNCwgICAgNzcsICAgIDc0
LCAgICA3OSwKLSAgICAgIDgyLCAgIDE1OCwgICAxNTksICAgMTYwLCAgIDE3MCwgICAxMjQsICAg
IDgyLCAgIDE2OCwgICAxNjIsICAgMTIyLAotICAgICAxMjIsICAgMTI1LCAgICA3NSwgICAgNzUs
ICAgIDgwLCAgIDEyNSwgICAxNDksICAgIDQwLCAgIDE2MSwgICAxNTMsCi0gICAgIDE1MSwgICAx
NjMsICAgMTcxLCAgICA3MywgICAxMjQsICAgMTM3LCAgIDE2NiwgICAxNTYsICAgIDc1LCAgIDEy
MiwKLSAgICAgIDc1LCAgICA3MiwgICAxNjYsICAgMTcyLCAgIDE3MywgICAxNTgsICAgMTY1LCAg
ICA0NSwgICAgNzMsICAgIDc3LAotICAgICAxMjQsICAgIDgyLCAgICA3MywgICAgMTYsICAgIDgx
LCAgIDE1MywgICAxNTcsICAgMTYxLCAgICA3MywgICAxMjQsCi0gICAgIDE1NywgICAxNTgsICAg
MTUwLCAgICA4MgorICAgICAgNDUsICAgMTQwLCAgICA0NSwgICAgNDYsICAgIDc1LCAgICA5Niwg
ICAgODEsICAgMTc4LCAgICA3MiwgICAgNzgsCisgICAgICAgMywgICAgMzMsICAgIDM0LCAgICAz
NSwgICAxMzIsICAgMTMzLCAgIDEzOCwgICAgNzgsICAgIDgxLCAgICA0NSwKKyAgICAgIDk2LCAg
IDEzOSwgICAxNDEsICAgIDczLCAgICAgMCwgICAxNzYsICAgMTQxLCAgIDE0NSwgICAgNzUsICAg
IDc1LAorICAgICAxNjEsICAgMTMyLCAgIDEzMSwgICAxMzQsICAgMTM5LCAgIDEzMywgICAgOTYs
ICAgIDcxLCAgICA3MywgICAgODAsCisgICAgICA0NSwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAg
NTIsICAgIDUzLCAgICA3MSwgICAgODIsICAgIDgzLCAgICA4NSwKKyAgICAgIDk3LCAgICA5OCwg
ICAgOTksICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMTA0LCAgIDEwNSwgICAxMDYsICAgMTA3LAor
ICAgICAxMDgsICAgMTA5LCAgIDExMCwgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTQsICAgMTE1
LCAgIDExNiwgICAxMTcsCisgICAgIDExOCwgICAxMTksICAgMTIwLCAgIDEyMSwgICAxMjUsICAg
MTQyLCAgICA4MSwgICAxMzksICAgMTQ2LCAgIDE0NywKKyAgICAgMTQ0LCAgICAxMywgICAgMTQs
ICAgIDE1LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgNDAsICAgIDc1LAorICAgICAg
NzYsICAgIDgxLCAgIDEwOCwgICAxMjEsICAgMTIyLCAgIDEyNCwgICAxMjYsICAgMTI3LCAgIDE0
MiwgICAxNTEsCisgICAgIDE1MiwgICAxNTMsICAgMTU0LCAgIDE2MiwgICAxNjMsICAgMTY0LCAg
IDE2NywgICAxNzQsICAgIDk2LCAgIDEzMSwKKyAgICAgMTM0LCAgICA3MywgICAgODAsICAgIDc0
LCAgIDEyNSwgICAxMjIsICAgMTUwLCAgIDEwOCwgICAxMDgsICAgMTI0LAorICAgICAgNTIsICAg
IDUzLCAgICA3MywgICAgNzcsICAgIDcyLCAgICA3MiwgICAgNzgsICAgIDM5LCAgIDEyMiwgICAg
NzEsCisgICAgIDEwOCwgICAgODYsICAgIDg3LCAgICA4MywgICAgODUsICAgIDU0LCAgICA1NSwg
ICAgODksICAgIDkwLCAgICA1NiwKKyAgICAgIDU3LCAgICA1OCwgICAgNjAsICAgIDU5LCAgICA5
NCwgICAgNzQsICAgIDk2LCAgIDE0OCwgICAxNDksICAgIDc2LAorICAgICAxNDcsICAgMTQ2LCAg
ICA4MSwgICAgODEsICAgMTY5LCAgICA3MSwgICAgNzEsICAgIDgxLCAgICA4MSwgICAxMjQsCisg
ICAgICA3MSwgICAgNzYsICAgMTU1LCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA3MCwgICAgODAs
ICAgMTIzLCAgICA3OCwKKyAgICAgIDgxLCAgICA3NiwgICAxNTIsICAgIDczLCAgICA3NCwgICAx
MjUsICAgMTUwLCAgICA3NCwgICAgNzIsICAgMTAwLAorICAgICAxMjQsICAgIDQ1LCAgICA0Niwg
ICAgOTYsICAgMTAzLCAgIDEyMiwgICAxMDgsICAgMTA4LCAgIDExMCwgICAxMTAsCisgICAgIDEx
MiwgICAxMTIsICAgMTEyLCAgIDExMiwgICAxMTMsICAgMTEzLCAgIDExNywgICAxMTgsICAgMTE5
LCAgIDEyNCwKKyAgICAgIDczLCAgICA3OCwgICAgODEsICAgIDc2LCAgIDE1OCwgICAxNTksICAg
MTYwLCAgIDE3MCwgICAxMjQsICAgIDgxLAorICAgICAxNjgsICAgMTYyLCAgIDEyMiwgICAxMjIs
ICAgMTI1LCAgICA3NCwgICAgNzQsICAgIDc5LCAgIDEyNSwgICAxNDksCisgICAgICA0MCwgICAx
NjEsICAgMTUzLCAgIDE1MSwgICAxNjMsICAgMTcxLCAgICA3MiwgICAxMjQsICAgMTM3LCAgIDE2
NiwKKyAgICAgMTU2LCAgICA3NCwgICAxMjIsICAgIDc0LCAgICA3MSwgICAxNjYsICAgMTcyLCAg
IDE3MywgICAxNTgsICAgMTY1LAorICAgICAgOTYsICAgIDcyLCAgICA3NiwgICAxMjQsICAgIDgx
LCAgICA3MiwgICAgMTYsICAgIDgwLCAgIDE1MywgICAxNTcsCisgICAgIDE2MSwgICAgNzIsICAg
MTI0LCAgIDE1NywgICAxNTgsICAgMTUwLCAgICA4MQogfTsKIAogI2RlZmluZSB5eWVycm9rCQko
eXllcnJzdGF0dXMgPSAwKQpAQCAtMTM0OCwzMCArMTMzMSwzOSBAQCBzdGF0aWMgY29uc3QgeXl0
eXBlX3VpbnQ4IHl5c3Rvc1tdID0KIAogLyogTGlrZSBZWUVSUk9SIGV4Y2VwdCBkbyBjYWxsIHl5
ZXJyb3IuICBUaGlzIHJlbWFpbnMgaGVyZSB0ZW1wb3JhcmlseQogICAgdG8gZWFzZSB0aGUgdHJh
bnNpdGlvbiB0byB0aGUgbmV3IG1lYW5pbmcgb2YgWVlFUlJPUiwgZm9yIEdDQy4KLSAgIE9uY2Ug
R0NDIHZlcnNpb24gMiBoYXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdvLiAgKi8K
KyAgIE9uY2UgR0NDIHZlcnNpb24gMiBoYXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2Fu
IGdvLiAgSG93ZXZlciwKKyAgIFlZRkFJTCBhcHBlYXJzIHRvIGJlIGluIHVzZS4gIE5ldmVydGhl
bGVzcywgaXQgaXMgZm9ybWFsbHkgZGVwcmVjYXRlZAorICAgaW4gQmlzb24gMi40LjIncyBORVdT
IGVudHJ5LCB3aGVyZSBhIHBsYW4gdG8gcGhhc2UgaXQgb3V0IGlzCisgICBkaXNjdXNzZWQuICAq
LwogCiAjZGVmaW5lIFlZRkFJTAkJZ290byB5eWVycmxhYgorI2lmIGRlZmluZWQgWVlGQUlMCisg
IC8qIFRoaXMgaXMgaGVyZSB0byBzdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBHQ0MgY3BwJ3MK
KyAgICAgLVd1bnVzZWQtbWFjcm9zLiAgTm9ybWFsbHkgd2UgZG9uJ3Qgd29ycnkgYWJvdXQgdGhh
dCB3YXJuaW5nLCBidXQKKyAgICAgc29tZSB1c2VycyBkbywgYW5kIHdlIHdhbnQgdG8gbWFrZSBp
dCBlYXN5IGZvciB1c2VycyB0byByZW1vdmUKKyAgICAgWVlGQUlMIHVzZXMsIHdoaWNoIHdpbGwg
cHJvZHVjZSB3YXJuaW5ncyBmcm9tIEJpc29uIDIuNS4gICovCisjZW5kaWYKIAogI2RlZmluZSBZ
WVJFQ09WRVJJTkcoKSAgKCEheXllcnJzdGF0dXMpCiAKLSNkZWZpbmUgWVlCQUNLVVAoVG9rZW4s
IFZhbHVlKQkJCQkJXAotZG8JCQkJCQkJCVwKLSAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZICYmIHl5
bGVuID09IDEpCQkJCVwKLSAgICB7CQkJCQkJCQlcCi0gICAgICB5eWNoYXIgPSAoVG9rZW4pOwkJ
CQkJCVwKLSAgICAgIHl5bHZhbCA9IChWYWx1ZSk7CQkJCQkJXAotICAgICAgeXl0b2tlbiA9IFlZ
VFJBTlNMQVRFICh5eWNoYXIpOwkJCQlcCi0gICAgICBZWVBPUFNUQUNLICgxKTsJCQkJCQlcCi0g
ICAgICBnb3RvIHl5YmFja3VwOwkJCQkJCVwKLSAgICB9CQkJCQkJCQlcCi0gIGVsc2UJCQkJCQkJ
CVwKLSAgICB7CQkJCQkJCQlcCi0gICAgICB5eWVycm9yIChjb250ZXh0LCBZWV8oInN5bnRheCBl
cnJvcjogY2Fubm90IGJhY2sgdXAiKSk7IFwKKyNkZWZpbmUgWVlCQUNLVVAoVG9rZW4sIFZhbHVl
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkbyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBpZiAoeXlj
aGFyID09IFlZRU1QVFkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICB5eWNoYXIgPSAoVG9rZW4pOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgeXlsdmFsID0gKFZhbHVlKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB5eXN0YXRlID0g
Knl5c3NwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
Z290byB5eWJhY2t1cDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHl5ZXJyb3IgKCZ5eWxsb2Ms
IGNvbnRleHQsIFlZXygic3ludGF4IGVycm9yOiBjYW5ub3QgYmFjayB1cCIpKTsgXAogICAgICAg
WVlFUlJPUjsJCQkJCQkJXAogICAgIH0JCQkJCQkJCVwKIHdoaWxlIChZWUlEICgwKSkKIAotCisv
KiBFcnJvciB0b2tlbiBudW1iZXIgKi8KICNkZWZpbmUgWVlURVJST1IJMQogI2RlZmluZSBZWUVS
UkNPREUJMjU2CiAKQEAgLTEzODAsMjcgKzEzNzIsMjggQEAgd2hpbGUgKFlZSUQgKDApKQogICAg
SWYgTiBpcyAwLCB0aGVuIHNldCBDVVJSRU5UIHRvIHRoZSBlbXB0eSBsb2NhdGlvbiB3aGljaCBl
bmRzCiAgICB0aGUgcHJldmlvdXMgc3ltYm9sOiBSSFNbMF0gKGFsd2F5cyBkZWZpbmVkKS4gICov
CiAKLSNkZWZpbmUgWVlSSFNMT0MoUmhzLCBLKSAoKFJocylbS10pCiAjaWZuZGVmIFlZTExPQ19E
RUZBVUxUCi0jIGRlZmluZSBZWUxMT0NfREVGQVVMVChDdXJyZW50LCBSaHMsIE4pCQkJCVwKLSAg
ICBkbwkJCQkJCQkJCVwKLSAgICAgIGlmIChZWUlEIChOKSkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotCXsJCQkJCQkJCVwKLQkgIChDdXJyZW50
KS5maXJzdF9saW5lICAgPSBZWVJIU0xPQyAoUmhzLCAxKS5maXJzdF9saW5lOwlcCi0JICAoQ3Vy
cmVudCkuZmlyc3RfY29sdW1uID0gWVlSSFNMT0MgKFJocywgMSkuZmlyc3RfY29sdW1uOwlcCi0J
ICAoQ3VycmVudCkubGFzdF9saW5lICAgID0gWVlSSFNMT0MgKFJocywgTikubGFzdF9saW5lOwkJ
XAotCSAgKEN1cnJlbnQpLmxhc3RfY29sdW1uICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfY29s
dW1uOwlcCi0JfQkJCQkJCQkJXAotICAgICAgZWxzZQkJCQkJCQkJXAotCXsJCQkJCQkJCVwKLQkg
IChDdXJyZW50KS5maXJzdF9saW5lICAgPSAoQ3VycmVudCkubGFzdF9saW5lICAgPQkJXAotCSAg
ICBZWVJIU0xPQyAoUmhzLCAwKS5sYXN0X2xpbmU7CQkJCVwKLQkgIChDdXJyZW50KS5maXJzdF9j
b2x1bW4gPSAoQ3VycmVudCkubGFzdF9jb2x1bW4gPQkJXAotCSAgICBZWVJIU0xPQyAoUmhzLCAw
KS5sYXN0X2NvbHVtbjsJCQkJXAotCX0JCQkJCQkJCVwKKyMgZGVmaW5lIFlZTExPQ19ERUZBVUxU
KEN1cnJlbnQsIFJocywgTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBk
byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgIGlmIChZWUlEIChOKSkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gWVlSSFNMT0MgKFJocywgMSkuZmlyc3RfbGluZTsg
ICAgICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0gWVlSSFNMT0MgKFJo
cywgMSkuZmlyc3RfY29sdW1uOyAgICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkubGFzdF9saW5l
ICAgID0gWVlSSFNMT0MgKFJocywgTikubGFzdF9saW5lOyAgICAgICAgIFwKKyAgICAgICAgICAo
Q3VycmVudCkubGFzdF9jb2x1bW4gID0gWVlSSFNMT0MgKFJocywgTikubGFzdF9jb2x1bW47ICAg
ICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gKEN1cnJlbnQpLmxhc3RfbGlu
ZSAgID0gICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFlZUkhTTE9DIChSaHMsIDApLmxhc3Rf
bGluZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoQ3VycmVu
dCkuZmlyc3RfY29sdW1uID0gKEN1cnJlbnQpLmxhc3RfY29sdW1uID0gICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIFlZUkhTTE9DIChSaHMsIDApLmxhc3RfY29sdW1uOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB3aGlsZSAoWVlJRCAoMCkp
CiAjZW5kaWYKIAorI2RlZmluZSBZWVJIU0xPQyhSaHMsIEspICgoUmhzKVtLXSkKKwogCiAvKiBZ
WV9MT0NBVElPTl9QUklOVCAtLSBQcmludCB0aGUgbG9jYXRpb24gb24gdGhlIHN0cmVhbS4KICAg
IFRoaXMgbWFjcm8gd2FzIG5vdCBtYW5kYXRlZCBvcmlnaW5hbGx5OiBkZWZpbmUgb25seSBpZiB3
ZSBrbm93CkBAIC0xNDA4LDEwICsxNDAxLDQ2IEBAIHdoaWxlIChZWUlEICgwKSkKIAogI2lmbmRl
ZiBZWV9MT0NBVElPTl9QUklOVAogIyBpZiBkZWZpbmVkIFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZ
WUxUWVBFX0lTX1RSSVZJQUwKLSMgIGRlZmluZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2Mp
CQkJXAotICAgICBmcHJpbnRmIChGaWxlLCAiJWQuJWQtJWQuJWQiLAkJCVwKLQkgICAgICAoTG9j
KS5maXJzdF9saW5lLCAoTG9jKS5maXJzdF9jb2x1bW4sCVwKLQkgICAgICAoTG9jKS5sYXN0X2xp
bmUsICAoTG9jKS5sYXN0X2NvbHVtbikKKworLyogUHJpbnQgKllZTE9DUCBvbiBZWU8uICBQcml2
YXRlLCBkbyBub3QgcmVseSBvbiBpdHMgZXhpc3RlbmNlLiAqLworCitfX2F0dHJpYnV0ZV9fKChf
X3VudXNlZF9fKSkKKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5D
X18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCitz
dGF0aWMgdW5zaWduZWQKK3l5X2xvY2F0aW9uX3ByaW50XyAoRklMRSAqeXlvLCBZWUxUWVBFIGNv
bnN0ICogY29uc3QgeXlsb2NwKQorI2Vsc2UKK3N0YXRpYyB1bnNpZ25lZAoreXlfbG9jYXRpb25f
cHJpbnRfICh5eW8sIHl5bG9jcCkKKyAgICBGSUxFICp5eW87CisgICAgWVlMVFlQRSBjb25zdCAq
IGNvbnN0IHl5bG9jcDsKKyNlbmRpZgoreworICB1bnNpZ25lZCByZXMgPSAwOworICBpbnQgZW5k
X2NvbCA9IDAgIT0geXlsb2NwLT5sYXN0X2NvbHVtbiA/IHl5bG9jcC0+bGFzdF9jb2x1bW4gLSAx
IDogMDsKKyAgaWYgKDAgPD0geXlsb2NwLT5maXJzdF9saW5lKQorICAgIHsKKyAgICAgIHJlcyAr
PSBmcHJpbnRmICh5eW8sICIlZCIsIHl5bG9jcC0+Zmlyc3RfbGluZSk7CisgICAgICBpZiAoMCA8
PSB5eWxvY3AtPmZpcnN0X2NvbHVtbikKKyAgICAgICAgcmVzICs9IGZwcmludGYgKHl5bywgIi4l
ZCIsIHl5bG9jcC0+Zmlyc3RfY29sdW1uKTsKKyAgICB9CisgIGlmICgwIDw9IHl5bG9jcC0+bGFz
dF9saW5lKQorICAgIHsKKyAgICAgIGlmICh5eWxvY3AtPmZpcnN0X2xpbmUgPCB5eWxvY3AtPmxh
c3RfbGluZSkKKyAgICAgICAgeworICAgICAgICAgIHJlcyArPSBmcHJpbnRmICh5eW8sICItJWQi
LCB5eWxvY3AtPmxhc3RfbGluZSk7CisgICAgICAgICAgaWYgKDAgPD0gZW5kX2NvbCkKKyAgICAg
ICAgICAgIHJlcyArPSBmcHJpbnRmICh5eW8sICIuJWQiLCBlbmRfY29sKTsKKyAgICAgICAgfQor
ICAgICAgZWxzZSBpZiAoMCA8PSBlbmRfY29sICYmIHl5bG9jcC0+Zmlyc3RfY29sdW1uIDwgZW5k
X2NvbCkKKyAgICAgICAgcmVzICs9IGZwcmludGYgKHl5bywgIi0lZCIsIGVuZF9jb2wpOworICAg
IH0KKyAgcmV0dXJuIHJlczsKKyB9CisKKyMgIGRlZmluZSBZWV9MT0NBVElPTl9QUklOVChGaWxl
LCBMb2MpICAgICAgICAgIFwKKyAgeXlfbG9jYXRpb25fcHJpbnRfIChGaWxlLCAmKExvYykpCisK
ICMgZWxzZQogIyAgZGVmaW5lIFlZX0xPQ0FUSU9OX1BSSU5UKEZpbGUsIExvYykgKCh2b2lkKSAw
KQogIyBlbmRpZgpAQCAtMTQxOSwxMSArMTQ0OCwxMCBAQCB3aGlsZSAoWVlJRCAoMCkpCiAKIAog
LyogWVlMRVggLS0gY2FsbGluZyBgeXlsZXgnIHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50cy4gICov
Ci0KICNpZmRlZiBZWUxFWF9QQVJBTQotIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWwsIFlZ
TEVYX1BBUkFNKQorIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2MsIFlZTEVY
X1BBUkFNKQogI2Vsc2UKLSMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsKQorIyBkZWZpbmUg
WVlMRVggeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2MpCiAjZW5kaWYKIAogLyogRW5hYmxlIGRlYnVn
Z2luZyBpZiByZXF1ZXN0ZWQuICAqLwpAQCAtMTQ0Niw3ICsxNDc0LDcgQEAgZG8gewkJCQkJCQkJ
CSAgXAogICAgIHsJCQkJCQkJCQkgIFwKICAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiJXMgIiwg
VGl0bGUpOwkJCQkJICBcCiAgICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwJCQkJCQkgIFwK
LQkJICBUeXBlLCBWYWx1ZSwgY29udGV4dCk7IFwKKwkJICBUeXBlLCBWYWx1ZSwgTG9jYXRpb24s
IGNvbnRleHQpOyBcCiAgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7CQkJCQkJICBcCiAg
ICAgfQkJCQkJCQkJCSAgXAogfSB3aGlsZSAoWVlJRCAoMCkpCkBAIC0xNDYwLDE4ICsxNDg4LDIy
IEBAIGRvIHsJCQkJCQkJCQkgIFwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9f
Qzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01T
Q19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ZhbHVlX3ByaW50IChGSUxFICp5eW91dHB1
dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBUUGFyc2VDb250
ZXh0KiBjb250ZXh0KQoreXlfc3ltYm9sX3ZhbHVlX3ByaW50IChGSUxFICp5eW91dHB1dCwgaW50
IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBZWUxUWVBFIGNvbnN0ICog
Y29uc3QgeXlsb2NhdGlvbnAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiAjZWxzZQogc3RhdGlj
IHZvaWQKLXl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAs
IGNvbnRleHQpCit5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFs
dWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICAgICBGSUxFICp5eW91dHB1dDsKICAgICBpbnQg
eXl0eXBlOwogICAgIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKKyAgICBZWUxUWVBF
IGNvbnN0ICogY29uc3QgeXlsb2NhdGlvbnA7CiAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dDsK
ICNlbmRpZgogeworICBGSUxFICp5eW8gPSB5eW91dHB1dDsKKyAgWVlVU0UgKHl5byk7CiAgIGlm
ICgheXl2YWx1ZXApCiAgICAgcmV0dXJuOworICBZWVVTRSAoeXlsb2NhdGlvbnApOwogICBZWVVT
RSAoY29udGV4dCk7CiAjIGlmZGVmIFlZUFJJTlQKICAgaWYgKHl5dHlwZSA8IFlZTlRPS0VOUykK
QEAgLTE0ODIsNyArMTUxNCw3IEBAIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5
dHlwZSwKICAgc3dpdGNoICh5eXR5cGUpCiAgICAgewogICAgICAgZGVmYXVsdDoKLQlicmVhazsK
KyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0xNDk0LDEzICsxNTI2LDE0IEBAIHl5X3N5
bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwKICNpZiAoZGVmaW5lZCBfX1NURENf
XyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVz
IHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ByaW50IChGSUxF
ICp5eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBU
UGFyc2VDb250ZXh0KiBjb250ZXh0KQoreXlfc3ltYm9sX3ByaW50IChGSUxFICp5eW91dHB1dCwg
aW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBZWUxUWVBFIGNvbnN0
ICogY29uc3QgeXlsb2NhdGlvbnAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiAjZWxzZQogc3Rh
dGljIHZvaWQKLXl5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIGNv
bnRleHQpCit5eV9zeW1ib2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxv
Y2F0aW9ucCwgY29udGV4dCkKICAgICBGSUxFICp5eW91dHB1dDsKICAgICBpbnQgeXl0eXBlOwog
ICAgIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKKyAgICBZWUxUWVBFIGNvbnN0ICog
Y29uc3QgeXlsb2NhdGlvbnA7CiAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dDsKICNlbmRpZgog
ewpAQCAtMTUwOSw3ICsxNTQyLDkgQEAgeXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBl
LCB5eXZhbAogICBlbHNlCiAgICAgWVlGUFJJTlRGICh5eW91dHB1dCwgIm50ZXJtICVzICgiLCB5
eXRuYW1lW3l5dHlwZV0pOwogCi0gIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5
dHlwZSwgeXl2YWx1ZXAsIGNvbnRleHQpOworICBZWV9MT0NBVElPTl9QUklOVCAoeXlvdXRwdXQs
ICp5eWxvY2F0aW9ucCk7CisgIFlZRlBSSU5URiAoeXlvdXRwdXQsICI6ICIpOworICB5eV9zeW1i
b2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwg
Y29udGV4dCk7CiAgIFlZRlBSSU5URiAoeXlvdXRwdXQsICIpIik7CiB9CiAKQEAgLTE1MjEsMTcg
KzE1NTYsMjAgQEAgeXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbAogI2lm
IChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRl
ZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9z
dGFja19wcmludCAoeXl0eXBlX2ludDE2ICpib3R0b20sIHl5dHlwZV9pbnQxNiAqdG9wKQoreXlf
c3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqeXlib3R0b20sIHl5dHlwZV9pbnQxNiAqeXl0b3Ap
CiAjZWxzZQogc3RhdGljIHZvaWQKLXl5X3N0YWNrX3ByaW50IChib3R0b20sIHRvcCkKLSAgICB5
eXR5cGVfaW50MTYgKmJvdHRvbTsKLSAgICB5eXR5cGVfaW50MTYgKnRvcDsKK3l5X3N0YWNrX3By
aW50ICh5eWJvdHRvbSwgeXl0b3ApCisgICAgeXl0eXBlX2ludDE2ICp5eWJvdHRvbTsKKyAgICB5
eXR5cGVfaW50MTYgKnl5dG9wOwogI2VuZGlmCiB7CiAgIFlZRlBSSU5URiAoc3RkZXJyLCAiU3Rh
Y2sgbm93Iik7Ci0gIGZvciAoOyBib3R0b20gPD0gdG9wOyArK2JvdHRvbSkKLSAgICBZWUZQUklO
VEYgKHN0ZGVyciwgIiAlZCIsICpib3R0b20pOworICBmb3IgKDsgeXlib3R0b20gPD0geXl0b3A7
IHl5Ym90dG9tKyspCisgICAgeworICAgICAgaW50IHl5Ym90ID0gKnl5Ym90dG9tOworICAgICAg
WVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCB5eWJvdCk7CisgICAgfQogICBZWUZQUklOVEYgKHN0
ZGVyciwgIlxuIik7CiB9CiAKQEAgLTE1NDksMTEgKzE1ODcsMTIgQEAgZG8gewkJCQkJCQkJXAog
I2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8
IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15
eV9yZWR1Y2VfcHJpbnQgKFlZU1RZUEUgKnl5dnNwLCBpbnQgeXlydWxlLCBUUGFyc2VDb250ZXh0
KiBjb250ZXh0KQoreXlfcmVkdWNlX3ByaW50IChZWVNUWVBFICp5eXZzcCwgWVlMVFlQRSAqeXls
c3AsIGludCB5eXJ1bGUsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiAjZWxzZQogc3RhdGljIHZv
aWQKLXl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5cnVsZSwgY29udGV4dCkKK3l5X3JlZHVjZV9w
cmludCAoeXl2c3AsIHl5bHNwLCB5eXJ1bGUsIGNvbnRleHQpCiAgICAgWVlTVFlQRSAqeXl2c3A7
CisgICAgWVlMVFlQRSAqeXlsc3A7CiAgICAgaW50IHl5cnVsZTsKICAgICBUUGFyc2VDb250ZXh0
KiBjb250ZXh0OwogI2VuZGlmCkBAIC0xNTY2LDE4ICsxNjA1LDE4IEBAIHl5X3JlZHVjZV9wcmlu
dCAoeXl2c3AsIHl5cnVsZSwgY29udGV4dCkKICAgLyogVGhlIHN5bWJvbHMgYmVpbmcgcmVkdWNl
ZC4gICovCiAgIGZvciAoeXlpID0gMDsgeXlpIDwgeXlucmhzOyB5eWkrKykKICAgICB7Ci0gICAg
ICBmcHJpbnRmIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKKyAgICAgIFlZRlBSSU5U
RiAoc3RkZXJyLCAiICAgJCVkID0gIiwgeXlpICsgMSk7CiAgICAgICB5eV9zeW1ib2xfcHJpbnQg
KHN0ZGVyciwgeXlyaHNbeXlwcmhzW3l5cnVsZV0gKyB5eWldLAogCQkgICAgICAgJih5eXZzcFso
eXlpICsgMSkgLSAoeXlucmhzKV0pCi0JCSAgICAgICAJCSAgICAgICAsIGNvbnRleHQpOwotICAg
ICAgZnByaW50ZiAoc3RkZXJyLCAiXG4iKTsKKwkJICAgICAgICwgJih5eWxzcFsoeXlpICsgMSkg
LSAoeXlucmhzKV0pCQkgICAgICAgLCBjb250ZXh0KTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJy
LCAiXG4iKTsKICAgICB9CiB9CiAKICMgZGVmaW5lIFlZX1JFRFVDRV9QUklOVChSdWxlKQkJXAog
ZG8gewkJCQkJXAogICBpZiAoeXlkZWJ1ZykJCQkJXAotICAgIHl5X3JlZHVjZV9wcmludCAoeXl2
c3AsIFJ1bGUsIGNvbnRleHQpOyBcCisgICAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlsc3As
IFJ1bGUsIGNvbnRleHQpOyBcCiB9IHdoaWxlIChZWUlEICgwKSkKIAogLyogTm9uemVybyBtZWFu
cyBwcmludCBwYXJzZSB0cmFjZS4gIEl0IGlzIGxlZnQgdW5pbml0aWFsaXplZCBzbyB0aGF0CkBA
IC0xNjA3LDcgKzE2NDYsNiBAQCBpbnQgeXlkZWJ1ZzsKICMgZGVmaW5lIFlZTUFYREVQVEggMTAw
MDAKICNlbmRpZgogCi0MCiAKICNpZiBZWUVSUk9SX1ZFUkJPU0UKIApAQCAtMTcxMCwxMTUgKzE3
NDgsMTQ1IEBAIHl5dG5hbWVyciAoY2hhciAqeXlyZXMsIGNvbnN0IGNoYXIgKnl5c3QKIH0KICMg
ZW5kaWYKIAotLyogQ29weSBpbnRvIFlZUkVTVUxUIGFuIGVycm9yIG1lc3NhZ2UgYWJvdXQgdGhl
IHVuZXhwZWN0ZWQgdG9rZW4KLSAgIFlZQ0hBUiB3aGlsZSBpbiBzdGF0ZSBZWVNUQVRFLiAgUmV0
dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkLAotICAgaW5jbHVkaW5nIHRoZSB0ZXJtaW5h
dGluZyBudWxsIGJ5dGUuICBJZiBZWVJFU1VMVCBpcyBudWxsLCBkbyBub3QKLSAgIGNvcHkgYW55
dGhpbmc7IGp1c3QgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3b3VsZCBiZQotICAg
Y29waWVkLiAgQXMgYSBzcGVjaWFsIGNhc2UsIHJldHVybiAwIGlmIGFuIG9yZGluYXJ5ICJzeW50
YXggZXJyb3IiCi0gICBtZXNzYWdlIHdpbGwgZG8uICBSZXR1cm4gWVlTSVpFX01BWElNVU0gaWYg
b3ZlcmZsb3cgb2NjdXJzIGR1cmluZwotICAgc2l6ZSBjYWxjdWxhdGlvbi4gICovCi1zdGF0aWMg
WVlTSVpFX1QKLXl5c3ludGF4X2Vycm9yIChjaGFyICp5eXJlc3VsdCwgaW50IHl5c3RhdGUsIGlu
dCB5eWNoYXIpCisvKiBDb3B5IGludG8gKllZTVNHLCB3aGljaCBpcyBvZiBzaXplICpZWU1TR19B
TExPQywgYW4gZXJyb3IgbWVzc2FnZQorICAgYWJvdXQgdGhlIHVuZXhwZWN0ZWQgdG9rZW4gWVlU
T0tFTiBmb3IgdGhlIHN0YXRlIHN0YWNrIHdob3NlIHRvcCBpcworICAgWVlTU1AuCisKKyAgIFJl
dHVybiAwIGlmICpZWU1TRyB3YXMgc3VjY2Vzc2Z1bGx5IHdyaXR0ZW4uICBSZXR1cm4gMSBpZiAq
WVlNU0cgaXMKKyAgIG5vdCBsYXJnZSBlbm91Z2ggdG8gaG9sZCB0aGUgbWVzc2FnZS4gIEluIHRo
YXQgY2FzZSwgYWxzbyBzZXQKKyAgICpZWU1TR19BTExPQyB0byB0aGUgcmVxdWlyZWQgbnVtYmVy
IG9mIGJ5dGVzLiAgUmV0dXJuIDIgaWYgdGhlCisgICByZXF1aXJlZCBudW1iZXIgb2YgYnl0ZXMg
aXMgdG9vIGxhcmdlIHRvIHN0b3JlLiAgKi8KK3N0YXRpYyBpbnQKK3l5c3ludGF4X2Vycm9yIChZ
WVNJWkVfVCAqeXltc2dfYWxsb2MsIGNoYXIgKip5eW1zZywKKyAgICAgICAgICAgICAgICB5eXR5
cGVfaW50MTYgKnl5c3NwLCBpbnQgeXl0b2tlbikKIHsKLSAgaW50IHl5biA9IHl5cGFjdFt5eXN0
YXRlXTsKLQotICBpZiAoISAoWVlQQUNUX05JTkYgPCB5eW4gJiYgeXluIDw9IFlZTEFTVCkpCi0g
ICAgcmV0dXJuIDA7Ci0gIGVsc2UKLSAgICB7Ci0gICAgICBpbnQgeXl0eXBlID0gWVlUUkFOU0xB
VEUgKHl5Y2hhcik7Ci0gICAgICBZWVNJWkVfVCB5eXNpemUwID0geXl0bmFtZXJyICgwLCB5eXRu
YW1lW3l5dHlwZV0pOwotICAgICAgWVlTSVpFX1QgeXlzaXplID0geXlzaXplMDsKLSAgICAgIFlZ
U0laRV9UIHl5c2l6ZTE7Ci0gICAgICBpbnQgeXlzaXplX292ZXJmbG93ID0gMDsKLSAgICAgIGVu
dW0geyBZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNID0gNSB9OwotICAgICAgY2hhciBjb25z
dCAqeXlhcmdbWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTV07Ci0gICAgICBpbnQgeXl4Owot
Ci0jIGlmIDAKLSAgICAgIC8qIFRoaXMgaXMgc28geGdldHRleHQgc2VlcyB0aGUgdHJhbnNsYXRh
YmxlIGZvcm1hdHMgdGhhdCBhcmUKLQkgY29uc3RydWN0ZWQgb24gdGhlIGZseS4gICovCi0gICAg
ICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcyIpOwotICAgICAgWVlfKCJzeW50YXgg
ZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyIpOwotICAgICAgWVlfKCJzeW50YXgg
ZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyIpOwotICAgICAgWVlfKCJz
eW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyBvciAlcyIpOwot
ICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAl
cyBvciAlcyBvciAlcyIpOwotIyBlbmRpZgotICAgICAgY2hhciAqeXlmbXQ7Ci0gICAgICBjaGFy
IGNvbnN0ICp5eWY7Ci0gICAgICBzdGF0aWMgY2hhciBjb25zdCB5eXVuZXhwZWN0ZWRbXSA9ICJz
eW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMiOwotICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXll
eHBlY3RpbmdbXSA9ICIsIGV4cGVjdGluZyAlcyI7Ci0gICAgICBzdGF0aWMgY2hhciBjb25zdCB5
eW9yW10gPSAiIG9yICVzIjsKLSAgICAgIGNoYXIgeXlmb3JtYXRbc2l6ZW9mIHl5dW5leHBlY3Rl
ZAotCQkgICAgKyBzaXplb2YgeXlleHBlY3RpbmcgLSAxCi0JCSAgICArICgoWVlFUlJPUl9WRVJC
T1NFX0FSR1NfTUFYSU1VTSAtIDIpCi0JCSAgICAgICAqIChzaXplb2YgeXlvciAtIDEpKV07Ci0g
ICAgICBjaGFyIGNvbnN0ICp5eXByZWZpeCA9IHl5ZXhwZWN0aW5nOwotCi0gICAgICAvKiBTdGFy
dCBZWVggYXQgLVlZTiBpZiBuZWdhdGl2ZSB0byBhdm9pZCBuZWdhdGl2ZSBpbmRleGVzIGluCi0J
IFlZQ0hFQ0suICAqLwotICAgICAgaW50IHl5eGJlZ2luID0geXluIDwgMCA/IC15eW4gOiAwOwot
Ci0gICAgICAvKiBTdGF5IHdpdGhpbiBib3VuZHMgb2YgYm90aCB5eWNoZWNrIGFuZCB5eXRuYW1l
LiAgKi8KLSAgICAgIGludCB5eWNoZWNrbGltID0gWVlMQVNUIC0geXluICsgMTsKLSAgICAgIGlu
dCB5eXhlbmQgPSB5eWNoZWNrbGltIDwgWVlOVE9LRU5TID8geXljaGVja2xpbSA6IFlZTlRPS0VO
UzsKLSAgICAgIGludCB5eWNvdW50ID0gMTsKLQotICAgICAgeXlhcmdbMF0gPSB5eXRuYW1lW3l5
dHlwZV07Ci0gICAgICB5eWZtdCA9IHl5c3RwY3B5ICh5eWZvcm1hdCwgeXl1bmV4cGVjdGVkKTsK
LQotICAgICAgZm9yICh5eXggPSB5eXhiZWdpbjsgeXl4IDwgeXl4ZW5kOyArK3l5eCkKLQlpZiAo
eXljaGVja1t5eXggKyB5eW5dID09IHl5eCAmJiB5eXggIT0gWVlURVJST1IpCi0JICB7Ci0JICAg
IGlmICh5eWNvdW50ID09IFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0pCi0JICAgICAgewot
CQl5eWNvdW50ID0gMTsKLQkJeXlzaXplID0geXlzaXplMDsKLQkJeXlmb3JtYXRbc2l6ZW9mIHl5
dW5leHBlY3RlZCAtIDFdID0gJ1wwJzsKLQkJYnJlYWs7Ci0JICAgICAgfQotCSAgICB5eWFyZ1t5
eWNvdW50KytdID0geXl0bmFtZVt5eXhdOwotCSAgICB5eXNpemUxID0geXlzaXplICsgeXl0bmFt
ZXJyICgwLCB5eXRuYW1lW3l5eF0pOwotCSAgICB5eXNpemVfb3ZlcmZsb3cgfD0gKHl5c2l6ZTEg
PCB5eXNpemUpOwotCSAgICB5eXNpemUgPSB5eXNpemUxOwotCSAgICB5eWZtdCA9IHl5c3RwY3B5
ICh5eWZtdCwgeXlwcmVmaXgpOwotCSAgICB5eXByZWZpeCA9IHl5b3I7Ci0JICB9Ci0KLSAgICAg
IHl5ZiA9IFlZXyh5eWZvcm1hdCk7Ci0gICAgICB5eXNpemUxID0geXlzaXplICsgeXlzdHJsZW4g
KHl5Zik7Ci0gICAgICB5eXNpemVfb3ZlcmZsb3cgfD0gKHl5c2l6ZTEgPCB5eXNpemUpOwotICAg
ICAgeXlzaXplID0geXlzaXplMTsKKyAgWVlTSVpFX1QgeXlzaXplMCA9IHl5dG5hbWVyciAoWVlf
TlVMTCwgeXl0bmFtZVt5eXRva2VuXSk7CisgIFlZU0laRV9UIHl5c2l6ZSA9IHl5c2l6ZTA7Cisg
IGVudW0geyBZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNID0gNSB9OworICAvKiBJbnRlcm5h
dGlvbmFsaXplZCBmb3JtYXQgc3RyaW5nLiAqLworICBjb25zdCBjaGFyICp5eWZvcm1hdCA9IFlZ
X05VTEw7CisgIC8qIEFyZ3VtZW50cyBvZiB5eWZvcm1hdC4gKi8KKyAgY2hhciBjb25zdCAqeXlh
cmdbWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTV07CisgIC8qIE51bWJlciBvZiByZXBvcnRl
ZCB0b2tlbnMgKG9uZSBmb3IgdGhlICJ1bmV4cGVjdGVkIiwgb25lIHBlcgorICAgICAiZXhwZWN0
ZWQiKS4gKi8KKyAgaW50IHl5Y291bnQgPSAwOworCisgIC8qIFRoZXJlIGFyZSBtYW55IHBvc3Np
YmlsaXRpZXMgaGVyZSB0byBjb25zaWRlcjoKKyAgICAgLSBBc3N1bWUgWVlGQUlMIGlzIG5vdCB1
c2VkLiAgSXQncyB0b28gZmxhd2VkIHRvIGNvbnNpZGVyLiAgU2VlCisgICAgICAgPGh0dHA6Ly9s
aXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9iaXNvbi1wYXRjaGVzLzIwMDktMTIvbXNnMDAwMjQu
aHRtbD4KKyAgICAgICBmb3IgZGV0YWlscy4gIFlZRVJST1IgaXMgZmluZSBhcyBpdCBkb2VzIG5v
dCBpbnZva2UgdGhpcworICAgICAgIGZ1bmN0aW9uLgorICAgICAtIElmIHRoaXMgc3RhdGUgaXMg
YSBjb25zaXN0ZW50IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbiwgdGhlbgorICAgICAgIHRo
ZSBvbmx5IHdheSB0aGlzIGZ1bmN0aW9uIHdhcyBpbnZva2VkIGlzIGlmIHRoZSBkZWZhdWx0IGFj
dGlvbgorICAgICAgIGlzIGFuIGVycm9yIGFjdGlvbi4gIEluIHRoYXQgY2FzZSwgZG9uJ3QgY2hl
Y2sgZm9yIGV4cGVjdGVkCisgICAgICAgdG9rZW5zIGJlY2F1c2UgdGhlcmUgYXJlIG5vbmUuCisg
ICAgIC0gVGhlIG9ubHkgd2F5IHRoZXJlIGNhbiBiZSBubyBsb29rYWhlYWQgcHJlc2VudCAoaW4g
eXljaGFyKSBpcyBpZgorICAgICAgIHRoaXMgc3RhdGUgaXMgYSBjb25zaXN0ZW50IHN0YXRlIHdp
dGggYSBkZWZhdWx0IGFjdGlvbi4gIFRodXMsCisgICAgICAgZGV0ZWN0aW5nIHRoZSBhYnNlbmNl
IG9mIGEgbG9va2FoZWFkIGlzIHN1ZmZpY2llbnQgdG8gZGV0ZXJtaW5lCisgICAgICAgdGhhdCB0
aGVyZSBpcyBubyB1bmV4cGVjdGVkIG9yIGV4cGVjdGVkIHRva2VuIHRvIHJlcG9ydC4gIEluIHRo
YXQKKyAgICAgICBjYXNlLCBqdXN0IHJlcG9ydCBhIHNpbXBsZSAic3ludGF4IGVycm9yIi4KKyAg
ICAgLSBEb24ndCBhc3N1bWUgdGhlcmUgaXNuJ3QgYSBsb29rYWhlYWQganVzdCBiZWNhdXNlIHRo
aXMgc3RhdGUgaXMgYQorICAgICAgIGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIGRlZmF1bHQgYWN0
aW9uLiAgVGhlcmUgbWlnaHQgaGF2ZSBiZWVuIGEKKyAgICAgICBwcmV2aW91cyBpbmNvbnNpc3Rl
bnQgc3RhdGUsIGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIG5vbi1kZWZhdWx0CisgICAgICAgYWN0
aW9uLCBvciB1c2VyIHNlbWFudGljIGFjdGlvbiB0aGF0IG1hbmlwdWxhdGVkIHl5Y2hhci4KKyAg
ICAgLSBPZiBjb3Vyc2UsIHRoZSBleHBlY3RlZCB0b2tlbiBsaXN0IGRlcGVuZHMgb24gc3RhdGVz
IHRvIGhhdmUKKyAgICAgICBjb3JyZWN0IGxvb2thaGVhZCBpbmZvcm1hdGlvbiwgYW5kIGl0IGRl
cGVuZHMgb24gdGhlIHBhcnNlciBub3QKKyAgICAgICB0byBwZXJmb3JtIGV4dHJhIHJlZHVjdGlv
bnMgYWZ0ZXIgZmV0Y2hpbmcgYSBsb29rYWhlYWQgZnJvbSB0aGUKKyAgICAgICBzY2FubmVyIGFu
ZCBiZWZvcmUgZGV0ZWN0aW5nIGEgc3ludGF4IGVycm9yLiAgVGh1cywgc3RhdGUgbWVyZ2luZwor
ICAgICAgIChmcm9tIExBTFIgb3IgSUVMUikgYW5kIGRlZmF1bHQgcmVkdWN0aW9ucyBjb3JydXB0
IHRoZSBleHBlY3RlZAorICAgICAgIHRva2VuIGxpc3QuICBIb3dldmVyLCB0aGUgbGlzdCBpcyBj
b3JyZWN0IGZvciBjYW5vbmljYWwgTFIgd2l0aAorICAgICAgIG9uZSBleGNlcHRpb246IGl0IHdp
bGwgc3RpbGwgY29udGFpbiBhbnkgdG9rZW4gdGhhdCB3aWxsIG5vdCBiZQorICAgICAgIGFjY2Vw
dGVkIGR1ZSB0byBhbiBlcnJvciBhY3Rpb24gaW4gYSBsYXRlciBzdGF0ZS4KKyAgKi8KKyAgaWYg
KHl5dG9rZW4gIT0gWVlFTVBUWSkKKyAgICB7CisgICAgICBpbnQgeXluID0geXlwYWN0Wyp5eXNz
cF07CisgICAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5eXRva2VuXTsKKyAgICAgIGlm
ICgheXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCisgICAgICAgIHsKKyAgICAgICAgICAv
KiBTdGFydCBZWVggYXQgLVlZTiBpZiBuZWdhdGl2ZSB0byBhdm9pZCBuZWdhdGl2ZSBpbmRleGVz
IGluCisgICAgICAgICAgICAgWVlDSEVDSy4gIEluIG90aGVyIHdvcmRzLCBza2lwIHRoZSBmaXJz
dCAtWVlOIGFjdGlvbnMgZm9yCisgICAgICAgICAgICAgdGhpcyBzdGF0ZSBiZWNhdXNlIHRoZXkg
YXJlIGRlZmF1bHQgYWN0aW9ucy4gICovCisgICAgICAgICAgaW50IHl5eGJlZ2luID0geXluIDwg
MCA/IC15eW4gOiAwOworICAgICAgICAgIC8qIFN0YXkgd2l0aGluIGJvdW5kcyBvZiBib3RoIHl5
Y2hlY2sgYW5kIHl5dG5hbWUuICAqLworICAgICAgICAgIGludCB5eWNoZWNrbGltID0gWVlMQVNU
IC0geXluICsgMTsKKyAgICAgICAgICBpbnQgeXl4ZW5kID0geXljaGVja2xpbSA8IFlZTlRPS0VO
UyA/IHl5Y2hlY2tsaW0gOiBZWU5UT0tFTlM7CisgICAgICAgICAgaW50IHl5eDsKKworICAgICAg
ICAgIGZvciAoeXl4ID0geXl4YmVnaW47IHl5eCA8IHl5eGVuZDsgKyt5eXgpCisgICAgICAgICAg
ICBpZiAoeXljaGVja1t5eXggKyB5eW5dID09IHl5eCAmJiB5eXggIT0gWVlURVJST1IKKyAgICAg
ICAgICAgICAgICAmJiAheXl0YWJsZV92YWx1ZV9pc19lcnJvciAoeXl0YWJsZVt5eXggKyB5eW5d
KSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh5eWNvdW50ID09IFlZRVJS
T1JfVkVSQk9TRV9BUkdTX01BWElNVU0pCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHl5Y291bnQgPSAxOworICAgICAgICAgICAgICAgICAgICB5eXNpemUgPSB5eXNp
emUwOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5eXhdOworICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIFlZU0laRV9UIHl5c2l6ZTEgPSB5eXNpemUgKyB5
eXRuYW1lcnIgKFlZX05VTEwsIHl5dG5hbWVbeXl4XSk7CisgICAgICAgICAgICAgICAgICBpZiAo
ISAoeXlzaXplIDw9IHl5c2l6ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAmJiB5eXNpemUx
IDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAy
OworICAgICAgICAgICAgICAgICAgeXlzaXplID0geXlzaXplMTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAotICAgICAgaWYgKHl5c2l6ZV9v
dmVyZmxvdykKLQlyZXR1cm4gWVlTSVpFX01BWElNVU07CisgIHN3aXRjaCAoeXljb3VudCkKKyAg
ICB7CisjIGRlZmluZSBZWUNBU0VfKE4sIFMpICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
IGNhc2UgTjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB5eWZvcm1h
dCA9IFM7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBicmVhaworICAgICAgWVlDQVNF
XygwLCBZWV8oInN5bnRheCBlcnJvciIpKTsKKyAgICAgIFlZQ0FTRV8oMSwgWVlfKCJzeW50YXgg
ZXJyb3IsIHVuZXhwZWN0ZWQgJXMiKSk7CisgICAgICBZWUNBU0VfKDIsIFlZXygic3ludGF4IGVy
cm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMiKSk7CisgICAgICBZWUNBU0VfKDMsIFlZ
Xygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMiKSk7Cisg
ICAgICBZWUNBU0VfKDQsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3Rp
bmcgJXMgb3IgJXMgb3IgJXMiKSk7CisgICAgICBZWUNBU0VfKDUsIFlZXygic3ludGF4IGVycm9y
LCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMgb3IgJXMiKSk7CisjIHVu
ZGVmIFlZQ0FTRV8KKyAgICB9CiAKLSAgICAgIGlmICh5eXJlc3VsdCkKLQl7Ci0JICAvKiBBdm9p
ZCBzcHJpbnRmLCBhcyB0aGF0IGluZnJpbmdlcyBvbiB0aGUgdXNlcidzIG5hbWUgc3BhY2UuCi0J
ICAgICBEb24ndCBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvciBldmVuIGlmIHRoZSB0cmFuc2xhdGlv
bgotCSAgICAgcHJvZHVjZWQgYSBzdHJpbmcgd2l0aCB0aGUgd3JvbmcgbnVtYmVyIG9mICIlcyJz
LiAgKi8KLQkgIGNoYXIgKnl5cCA9IHl5cmVzdWx0OwotCSAgaW50IHl5aSA9IDA7Ci0JICB3aGls
ZSAoKCp5eXAgPSAqeXlmKSAhPSAnXDAnKQotCSAgICB7Ci0JICAgICAgaWYgKCp5eXAgPT0gJyUn
ICYmIHl5ZlsxXSA9PSAncycgJiYgeXlpIDwgeXljb3VudCkKLQkJewotCQkgIHl5cCArPSB5eXRu
YW1lcnIgKHl5cCwgeXlhcmdbeXlpKytdKTsKLQkJICB5eWYgKz0gMjsKLQkJfQotCSAgICAgIGVs
c2UKLQkJewotCQkgIHl5cCsrOwotCQkgIHl5ZisrOwotCQl9Ci0JICAgIH0KLQl9Ci0gICAgICBy
ZXR1cm4geXlzaXplOworICB7CisgICAgWVlTSVpFX1QgeXlzaXplMSA9IHl5c2l6ZSArIHl5c3Ry
bGVuICh5eWZvcm1hdCk7CisgICAgaWYgKCEgKHl5c2l6ZSA8PSB5eXNpemUxICYmIHl5c2l6ZTEg
PD0gWVlTVEFDS19BTExPQ19NQVhJTVVNKSkKKyAgICAgIHJldHVybiAyOworICAgIHl5c2l6ZSA9
IHl5c2l6ZTE7CisgIH0KKworICBpZiAoKnl5bXNnX2FsbG9jIDwgeXlzaXplKQorICAgIHsKKyAg
ICAgICp5eW1zZ19hbGxvYyA9IDIgKiB5eXNpemU7CisgICAgICBpZiAoISAoeXlzaXplIDw9ICp5
eW1zZ19hbGxvYworICAgICAgICAgICAgICYmICp5eW1zZ19hbGxvYyA8PSBZWVNUQUNLX0FMTE9D
X01BWElNVU0pKQorICAgICAgICAqeXltc2dfYWxsb2MgPSBZWVNUQUNLX0FMTE9DX01BWElNVU07
CisgICAgICByZXR1cm4gMTsKICAgICB9CisKKyAgLyogQXZvaWQgc3ByaW50ZiwgYXMgdGhhdCBp
bmZyaW5nZXMgb24gdGhlIHVzZXIncyBuYW1lIHNwYWNlLgorICAgICBEb24ndCBoYXZlIHVuZGVm
aW5lZCBiZWhhdmlvciBldmVuIGlmIHRoZSB0cmFuc2xhdGlvbgorICAgICBwcm9kdWNlZCBhIHN0
cmluZyB3aXRoIHRoZSB3cm9uZyBudW1iZXIgb2YgIiVzInMuICAqLworICB7CisgICAgY2hhciAq
eXlwID0gKnl5bXNnOworICAgIGludCB5eWkgPSAwOworICAgIHdoaWxlICgoKnl5cCA9ICp5eWZv
cm1hdCkgIT0gJ1wwJykKKyAgICAgIGlmICgqeXlwID09ICclJyAmJiB5eWZvcm1hdFsxXSA9PSAn
cycgJiYgeXlpIDwgeXljb3VudCkKKyAgICAgICAgeworICAgICAgICAgIHl5cCArPSB5eXRuYW1l
cnIgKHl5cCwgeXlhcmdbeXlpKytdKTsKKyAgICAgICAgICB5eWZvcm1hdCArPSAyOworICAgICAg
ICB9CisgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICB5eXArKzsKKyAgICAgICAgICB5
eWZvcm1hdCsrOworICAgICAgICB9CisgIH0KKyAgcmV0dXJuIDA7CiB9CiAjZW5kaWYgLyogWVlF
UlJPUl9WRVJCT1NFICovCi0MCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0uCiB8IFJlbGVhc2UgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHRvIHRoaXMg
c3ltYm9sLiAgfApAQCAtMTgyOCwxNyArMTg5NiwxOSBAQCB5eXN5bnRheF9lcnJvciAoY2hhciAq
eXlyZXN1bHQsIGludCB5eXN0CiAjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5
OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0Nf
VkVSKQogc3RhdGljIHZvaWQKLXl5ZGVzdHJ1Y3QgKGNvbnN0IGNoYXIgKnl5bXNnLCBpbnQgeXl0
eXBlLCBZWVNUWVBFICp5eXZhbHVlcCwgVFBhcnNlQ29udGV4dCogY29udGV4dCkKK3l5ZGVzdHJ1
Y3QgKGNvbnN0IGNoYXIgKnl5bXNnLCBpbnQgeXl0eXBlLCBZWVNUWVBFICp5eXZhbHVlcCwgWVlM
VFlQRSAqeXlsb2NhdGlvbnAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiAjZWxzZQogc3RhdGlj
IHZvaWQKLXl5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVwLCBjb250ZXh0KQoreXlk
ZXN0cnVjdCAoeXltc2csIHl5dHlwZSwgeXl2YWx1ZXAsIHl5bG9jYXRpb25wLCBjb250ZXh0KQog
ICAgIGNvbnN0IGNoYXIgKnl5bXNnOwogICAgIGludCB5eXR5cGU7CiAgICAgWVlTVFlQRSAqeXl2
YWx1ZXA7CisgICAgWVlMVFlQRSAqeXlsb2NhdGlvbnA7CiAgICAgVFBhcnNlQ29udGV4dCogY29u
dGV4dDsKICNlbmRpZgogewogICBZWVVTRSAoeXl2YWx1ZXApOworICBZWVVTRSAoeXlsb2NhdGlv
bnApOwogICBZWVVTRSAoY29udGV4dCk7CiAKICAgaWYgKCF5eW1zZykKQEAgLTE4NDksMjggKzE5
MTksOSBAQCB5eWRlc3RydWN0ICh5eW1zZywgeXl0eXBlLCB5eXZhbHVlcCwgY29uCiAgICAgewog
CiAgICAgICBkZWZhdWx0OgotCWJyZWFrOworICAgICAgICBicmVhazsKICAgICB9CiB9Ci0MCi0K
LS8qIFByZXZlbnQgd2FybmluZ3MgZnJvbSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCi0KLSNp
ZmRlZiBZWVBBUlNFX1BBUkFNCi0jaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3Bs
dXNwbHVzCi1pbnQgeXlwYXJzZSAodm9pZCAqWVlQQVJTRV9QQVJBTSk7Ci0jZWxzZQotaW50IHl5
cGFyc2UgKCk7Ci0jZW5kaWYKLSNlbHNlIC8qICEgWVlQQVJTRV9QQVJBTSAqLwotI2lmIGRlZmlu
ZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cwotaW50IHl5cGFyc2UgKFRQYXJzZUNv
bnRleHQqIGNvbnRleHQpOwotI2Vsc2UKLWludCB5eXBhcnNlICgpOwotI2VuZGlmCi0jZW5kaWYg
LyogISBZWVBBUlNFX1BBUkFNICovCi0KLQogCiAKIApAQCAtMTkwMSw3NyArMTk1MiwxMTMgQEAg
eXlwYXJzZSAoY29udGV4dCkKICNlbmRpZgogI2VuZGlmCiB7Ci0gIC8qIFRoZSBsb29rLWFoZWFk
IHN5bWJvbC4gICovCisvKiBUaGUgbG9va2FoZWFkIHN5bWJvbC4gICovCiBpbnQgeXljaGFyOwog
Ci0vKiBUaGUgc2VtYW50aWMgdmFsdWUgb2YgdGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KLVlZ
U1RZUEUgeXlsdmFsOwotCi0vKiBOdW1iZXIgb2Ygc3ludGF4IGVycm9ycyBzbyBmYXIuICAqLwot
aW50IHl5bmVycnM7CiAKLSAgaW50IHl5c3RhdGU7Ci0gIGludCB5eW47Ci0gIGludCB5eXJlc3Vs
dDsKLSAgLyogTnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMg
ZW5hYmxlZC4gICovCi0gIGludCB5eWVycnN0YXR1czsKLSAgLyogTG9vay1haGVhZCB0b2tlbiBh
cyBhbiBpbnRlcm5hbCAodHJhbnNsYXRlZCkgdG9rZW4gbnVtYmVyLiAgKi8KLSAgaW50IHl5dG9r
ZW4gPSAwOwotI2lmIFlZRVJST1JfVkVSQk9TRQotICAvKiBCdWZmZXIgZm9yIGVycm9yIG1lc3Nh
Z2VzLCBhbmQgaXRzIGFsbG9jYXRlZCBzaXplLiAgKi8KLSAgY2hhciB5eW1zZ2J1ZlsxMjhdOwot
ICBjaGFyICp5eW1zZyA9IHl5bXNnYnVmOwotICBZWVNJWkVfVCB5eW1zZ19hbGxvYyA9IHNpemVv
ZiB5eW1zZ2J1ZjsKKyNpZiBkZWZpbmVkIF9fR05VQ19fICYmIDQwNyA8PSBfX0dOVUNfXyAqIDEw
MCArIF9fR05VQ19NSU5PUl9fCisvKiBTdXBwcmVzcyBhbiBpbmNvcnJlY3QgZGlhZ25vc3RpYyBh
Ym91dCB5eWx2YWwgYmVpbmcgdW5pbml0aWFsaXplZC4gICovCisjIGRlZmluZSBZWV9JR05PUkVf
TUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTiBcCisgICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGlj
IHB1c2giKSBcCisgICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3VuaW5p
dGlhbGl6ZWRcIiIpXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdt
YXliZS11bmluaXRpYWxpemVkXCIiKQorIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElB
TElaRURfRU5EIFwKKyAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMgcG9wIikKKyNlbHNlCisv
KiBEZWZhdWx0IHZhbHVlIHVzZWQgZm9yIGluaXRpYWxpemF0aW9uLCBmb3IgcGFjaWZ5aW5nIG9s
ZGVyIEdDQ3MKKyAgIG9yIG5vbi1HQ0MgY29tcGlsZXJzLiAgKi8KK3N0YXRpYyBZWVNUWVBFIHl5
dmFsX2RlZmF1bHQ7CisjIGRlZmluZSBZWV9JTklUSUFMX1ZBTFVFKFZhbHVlKSA9IFZhbHVlCiAj
ZW5kaWYKK3N0YXRpYyBZWUxUWVBFIHl5bG9jX2RlZmF1bHQKKyMgaWYgZGVmaW5lZCBZWUxUWVBF
X0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFMCisgID0geyAxLCAxLCAxLCAxIH0KKyMg
ZW5kaWYKKzsKKyNpZm5kZWYgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfQkVHSU4KKyMg
ZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOCisjIGRlZmluZSBZWV9J
R05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9FTkQKKyNlbmRpZgorI2lmbmRlZiBZWV9JTklUSUFM
X1ZBTFVFCisjIGRlZmluZSBZWV9JTklUSUFMX1ZBTFVFKFZhbHVlKSAvKiBOb3RoaW5nLiAqLwor
I2VuZGlmCisKKy8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBvZiB0aGUgbG9va2FoZWFkIHN5bWJvbC4g
ICovCitZWVNUWVBFIHl5bHZhbCBZWV9JTklUSUFMX1ZBTFVFKHl5dmFsX2RlZmF1bHQpOworCisv
KiBMb2NhdGlvbiBkYXRhIGZvciB0aGUgbG9va2FoZWFkIHN5bWJvbC4gICovCitZWUxUWVBFIHl5
bGxvYyA9IHl5bG9jX2RlZmF1bHQ7CiAKLSAgLyogVGhyZWUgc3RhY2tzIGFuZCB0aGVpciB0b29s
czoKLSAgICAgYHl5c3MnOiByZWxhdGVkIHRvIHN0YXRlcywKLSAgICAgYHl5dnMnOiByZWxhdGVk
IHRvIHNlbWFudGljIHZhbHVlcywKLSAgICAgYHl5bHMnOiByZWxhdGVkIHRvIGxvY2F0aW9ucy4K
IAotICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFs
bG93IHl5b3ZlcmZsb3cKLSAgICAgdG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCisg
ICAgLyogTnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KKyAgICBpbnQgeXluZXJy
czsKIAotICAvKiBUaGUgc3RhdGUgc3RhY2suICAqLwotICB5eXR5cGVfaW50MTYgeXlzc2FbWVlJ
TklUREVQVEhdOwotICB5eXR5cGVfaW50MTYgKnl5c3MgPSB5eXNzYTsKLSAgeXl0eXBlX2ludDE2
ICp5eXNzcDsKKyAgICBpbnQgeXlzdGF0ZTsKKyAgICAvKiBOdW1iZXIgb2YgdG9rZW5zIHRvIHNo
aWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFibGVkLiAgKi8KKyAgICBpbnQgeXllcnJzdGF0
dXM7CiAKLSAgLyogVGhlIHNlbWFudGljIHZhbHVlIHN0YWNrLiAgKi8KLSAgWVlTVFlQRSB5eXZz
YVtZWUlOSVRERVBUSF07Ci0gIFlZU1RZUEUgKnl5dnMgPSB5eXZzYTsKLSAgWVlTVFlQRSAqeXl2
c3A7CisgICAgLyogVGhlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6CisgICAgICAgYHl5c3MnOiBy
ZWxhdGVkIHRvIHN0YXRlcy4KKyAgICAgICBgeXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFs
dWVzLgorICAgICAgIGB5eWxzJzogcmVsYXRlZCB0byBsb2NhdGlvbnMuCiAKKyAgICAgICBSZWZl
ciB0byB0aGUgc3RhY2tzIHRocm91Z2ggc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3Zl
cmZsb3cKKyAgICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8KKworICAgIC8q
IFRoZSBzdGF0ZSBzdGFjay4gICovCisgICAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRI
XTsKKyAgICB5eXR5cGVfaW50MTYgKnl5c3M7CisgICAgeXl0eXBlX2ludDE2ICp5eXNzcDsKKwor
ICAgIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCisgICAgWVlTVFlQRSB5eXZzYVtZ
WUlOSVRERVBUSF07CisgICAgWVlTVFlQRSAqeXl2czsKKyAgICBZWVNUWVBFICp5eXZzcDsKIAor
ICAgIC8qIFRoZSBsb2NhdGlvbiBzdGFjay4gICovCisgICAgWVlMVFlQRSB5eWxzYVtZWUlOSVRE
RVBUSF07CisgICAgWVlMVFlQRSAqeXlsczsKKyAgICBZWUxUWVBFICp5eWxzcDsKIAotI2RlZmlu
ZSBZWVBPUFNUQUNLKE4pICAgKHl5dnNwIC09IChOKSwgeXlzc3AgLT0gKE4pKQorICAgIC8qIFRo
ZSBsb2NhdGlvbnMgd2hlcmUgdGhlIGVycm9yIHN0YXJ0ZWQgYW5kIGVuZGVkLiAgKi8KKyAgICBZ
WUxUWVBFIHl5ZXJyb3JfcmFuZ2VbM107CiAKLSAgWVlTSVpFX1QgeXlzdGFja3NpemUgPSBZWUlO
SVRERVBUSDsKKyAgICBZWVNJWkVfVCB5eXN0YWNrc2l6ZTsKIAorICBpbnQgeXluOworICBpbnQg
eXlyZXN1bHQ7CisgIC8qIExvb2thaGVhZCB0b2tlbiBhcyBhbiBpbnRlcm5hbCAodHJhbnNsYXRl
ZCkgdG9rZW4gbnVtYmVyLiAgKi8KKyAgaW50IHl5dG9rZW4gPSAwOwogICAvKiBUaGUgdmFyaWFi
bGVzIHVzZWQgdG8gcmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQog
ICAgICBhY3Rpb24gcm91dGluZXMuICAqLwogICBZWVNUWVBFIHl5dmFsOworICBZWUxUWVBFIHl5
bG9jOworCisjaWYgWVlFUlJPUl9WRVJCT1NFCisgIC8qIEJ1ZmZlciBmb3IgZXJyb3IgbWVzc2Fn
ZXMsIGFuZCBpdHMgYWxsb2NhdGVkIHNpemUuICAqLworICBjaGFyIHl5bXNnYnVmWzEyOF07Cisg
IGNoYXIgKnl5bXNnID0geXltc2didWY7CisgIFlZU0laRV9UIHl5bXNnX2FsbG9jID0gc2l6ZW9m
IHl5bXNnYnVmOworI2VuZGlmCiAKKyNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAo
TiksIHl5c3NwIC09IChOKSwgeXlsc3AgLT0gKE4pKQogCiAgIC8qIFRoZSBudW1iZXIgb2Ygc3lt
Ym9scyBvbiB0aGUgUkhTIG9mIHRoZSByZWR1Y2VkIHJ1bGUuCiAgICAgIEtlZXAgdG8gemVybyB3
aGVuIG5vIHN5bWJvbCBzaG91bGQgYmUgcG9wcGVkLiAgKi8KICAgaW50IHl5bGVuID0gMDsKIAor
ICB5eXNzcCA9IHl5c3MgPSB5eXNzYTsKKyAgeXl2c3AgPSB5eXZzID0geXl2c2E7CisgIHl5bHNw
ID0geXlscyA9IHl5bHNhOworICB5eXN0YWNrc2l6ZSA9IFlZSU5JVERFUFRIOworCiAgIFlZRFBS
SU5URiAoKHN0ZGVyciwgIlN0YXJ0aW5nIHBhcnNlXG4iKSk7CiAKICAgeXlzdGF0ZSA9IDA7CiAg
IHl5ZXJyc3RhdHVzID0gMDsKICAgeXluZXJycyA9IDA7Ci0gIHl5Y2hhciA9IFlZRU1QVFk7CQkv
KiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLwotCi0gIC8qIEluaXRpYWxpemUgc3RhY2sg
cG9pbnRlcnMuCi0gICAgIFdhc3RlIG9uZSBlbGVtZW50IG9mIHZhbHVlIGFuZCBsb2NhdGlvbiBz
dGFjawotICAgICBzbyB0aGF0IHRoZXkgc3RheSBvbiB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgc3Rh
dGUgc3RhY2suCi0gICAgIFRoZSB3YXN0ZWQgZWxlbWVudHMgYXJlIG5ldmVyIGluaXRpYWxpemVk
LiAgKi8KLQotICB5eXNzcCA9IHl5c3M7Ci0gIHl5dnNwID0geXl2czsKLQorICB5eWNoYXIgPSBZ
WUVNUFRZOyAvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLworICB5eWxzcFswXSA9IHl5
bGxvYzsKICAgZ290byB5eXNldHN0YXRlOwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KQEAgLTE5OTcsNyArMjA4NCw3IEBA
IGludCB5eW5lcnJzOwogCSAgIG1lbW9yeS4gICovCiAJWVlTVFlQRSAqeXl2czEgPSB5eXZzOwog
CXl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOwotCisJWVlMVFlQRSAqeXlsczEgPSB5eWxzOwog
CiAJLyogRWFjaCBzdGFjayBwb2ludGVyIGFkZHJlc3MgaXMgZm9sbG93ZWQgYnkgdGhlIHNpemUg
b2YgdGhlCiAJICAgZGF0YSBpbiB1c2UgaW4gdGhhdCBzdGFjaywgaW4gYnl0ZXMuICBUaGlzIHVz
ZWQgdG8gYmUgYQpAQCAtMjAwNiw5ICsyMDkzLDEwIEBAIGludCB5eW5lcnJzOwogCXl5b3ZlcmZs
b3cgKFlZXygibWVtb3J5IGV4aGF1c3RlZCIpLAogCQkgICAgJnl5c3MxLCB5eXNpemUgKiBzaXpl
b2YgKCp5eXNzcCksCiAJCSAgICAmeXl2czEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5dnNwKSwKLQor
CQkgICAgJnl5bHMxLCB5eXNpemUgKiBzaXplb2YgKCp5eWxzcCksCiAJCSAgICAmeXlzdGFja3Np
emUpOwogCisJeXlscyA9IHl5bHMxOwogCXl5c3MgPSB5eXNzMTsKIAl5eXZzID0geXl2czE7CiAg
ICAgICB9CkBAIC0yMDI5LDkgKzIxMTcsOSBAQCBpbnQgeXluZXJyczsKIAkgICh1bmlvbiB5eWFs
bG9jICopIFlZU1RBQ0tfQUxMT0MgKFlZU1RBQ0tfQllURVMgKHl5c3RhY2tzaXplKSk7CiAJaWYg
KCEgeXlwdHIpCiAJICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwotCVlZU1RBQ0tfUkVMT0NBVEUgKHl5
c3MpOwotCVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnMpOwotCisJWVlTVEFDS19SRUxPQ0FURSAoeXlz
c19hbGxvYywgeXlzcyk7CisJWVlTVEFDS19SRUxPQ0FURSAoeXl2c19hbGxvYywgeXl2cyk7CisJ
WVlTVEFDS19SRUxPQ0FURSAoeXlsc19hbGxvYywgeXlscyk7CiAjICB1bmRlZiBZWVNUQUNLX1JF
TE9DQVRFCiAJaWYgKHl5c3MxICE9IHl5c3NhKQogCSAgWVlTVEFDS19GUkVFICh5eXNzMSk7CkBA
IC0yMDQxLDcgKzIxMjksNyBAQCBpbnQgeXluZXJyczsKIAogICAgICAgeXlzc3AgPSB5eXNzICsg
eXlzaXplIC0gMTsKICAgICAgIHl5dnNwID0geXl2cyArIHl5c2l6ZSAtIDE7Ci0KKyAgICAgIHl5
bHNwID0geXlscyArIHl5c2l6ZSAtIDE7CiAKICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0
YWNrIHNpemUgaW5jcmVhc2VkIHRvICVsdVxuIiwKIAkJICAodW5zaWduZWQgbG9uZyBpbnQpIHl5
c3RhY2tzaXplKSk7CkBAIC0yMDUyLDYgKzIxNDAsOSBAQCBpbnQgeXluZXJyczsKIAogICBZWURQ
UklOVEYgKChzdGRlcnIsICJFbnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlzdGF0ZSkpOwogCisgIGlm
ICh5eXN0YXRlID09IFlZRklOQUwpCisgICAgWVlBQ0NFUFQ7CisKICAgZ290byB5eWJhY2t1cDsK
IAogLyotLS0tLS0tLS0tLS4KQEAgLTIwNjAsMTYgKzIxNTEsMTYgQEAgaW50IHl5bmVycnM7CiB5
eWJhY2t1cDoKIAogICAvKiBEbyBhcHByb3ByaWF0ZSBwcm9jZXNzaW5nIGdpdmVuIHRoZSBjdXJy
ZW50IHN0YXRlLiAgUmVhZCBhCi0gICAgIGxvb2stYWhlYWQgdG9rZW4gaWYgd2UgbmVlZCBvbmUg
YW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLworICAgICBsb29rYWhlYWQgdG9rZW4gaWYg
d2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLwogCi0gIC8qIEZpcnN0
IHRyeSB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rLWFoZWFk
IHRva2VuLiAgKi8KKyAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGhvdXQg
cmVmZXJlbmNlIHRvIGxvb2thaGVhZCB0b2tlbi4gICovCiAgIHl5biA9IHl5cGFjdFt5eXN0YXRl
XTsKLSAgaWYgKHl5biA9PSBZWVBBQ1RfTklORikKKyAgaWYgKHl5cGFjdF92YWx1ZV9pc19kZWZh
dWx0ICh5eW4pKQogICAgIGdvdG8geXlkZWZhdWx0OwogCi0gIC8qIE5vdCBrbm93biA9PiBnZXQg
YSBsb29rLWFoZWFkIHRva2VuIGlmIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLworICAvKiBO
b3Qga25vd24gPT4gZ2V0IGEgbG9va2FoZWFkIHRva2VuIGlmIGRvbid0IGFscmVhZHkgaGF2ZSBv
bmUuICAqLwogCi0gIC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRiBvciBhIHZh
bGlkIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KKyAgLyogWVlDSEFSIGlzIGVpdGhlciBZWUVNUFRZ
IG9yIFlZRU9GIG9yIGEgdmFsaWQgbG9va2FoZWFkIHN5bWJvbC4gICovCiAgIGlmICh5eWNoYXIg
PT0gWVlFTVBUWSkKICAgICB7CiAgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJSZWFkaW5nIGEg
dG9rZW46ICIpKTsKQEAgLTIwOTUsMzAgKzIxODYsMjggQEAgeXliYWNrdXA6CiAgIHl5biA9IHl5
dGFibGVbeXluXTsKICAgaWYgKHl5biA8PSAwKQogICAgIHsKLSAgICAgIGlmICh5eW4gPT0gMCB8
fCB5eW4gPT0gWVlUQUJMRV9OSU5GKQotCWdvdG8geXllcnJsYWI7CisgICAgICBpZiAoeXl0YWJs
ZV92YWx1ZV9pc19lcnJvciAoeXluKSkKKyAgICAgICAgZ290byB5eWVycmxhYjsKICAgICAgIHl5
biA9IC15eW47CiAgICAgICBnb3RvIHl5cmVkdWNlOwogICAgIH0KIAotICBpZiAoeXluID09IFlZ
RklOQUwpCi0gICAgWVlBQ0NFUFQ7Ci0KICAgLyogQ291bnQgdG9rZW5zIHNoaWZ0ZWQgc2luY2Ug
ZXJyb3I7IGFmdGVyIHRocmVlLCB0dXJuIG9mZiBlcnJvcgogICAgICBzdGF0dXMuICAqLwogICBp
ZiAoeXllcnJzdGF0dXMpCiAgICAgeXllcnJzdGF0dXMtLTsKIAotICAvKiBTaGlmdCB0aGUgbG9v
ay1haGVhZCB0b2tlbi4gICovCisgIC8qIFNoaWZ0IHRoZSBsb29rYWhlYWQgdG9rZW4uICAqLwog
ICBZWV9TWU1CT0xfUFJJTlQgKCJTaGlmdGluZyIsIHl5dG9rZW4sICZ5eWx2YWwsICZ5eWxsb2Mp
OwogCi0gIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4gdW5sZXNzIGl0IGlzIGVvZi4gICov
Ci0gIGlmICh5eWNoYXIgIT0gWVlFT0YpCi0gICAgeXljaGFyID0gWVlFTVBUWTsKKyAgLyogRGlz
Y2FyZCB0aGUgc2hpZnRlZCB0b2tlbi4gICovCisgIHl5Y2hhciA9IFlZRU1QVFk7CiAKICAgeXlz
dGF0ZSA9IHl5bjsKKyAgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfQkVHSU4KICAgKisr
eXl2c3AgPSB5eWx2YWw7Ci0KKyAgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECisg
ICorK3l5bHNwID0geXlsbG9jOwogICBnb3RvIHl5bmV3c3RhdGU7CiAKIApAQCAtMjE0OSwxOCAr
MjIzOCwxOSBAQCB5eXJlZHVjZToKICAgICAgR0NDIHdhcm5pbmcgdGhhdCBZWVZBTCBtYXkgYmUg
dXNlZCB1bmluaXRpYWxpemVkLiAgKi8KICAgeXl2YWwgPSB5eXZzcFsxLXl5bGVuXTsKIAotCisg
IC8qIERlZmF1bHQgbG9jYXRpb24uICAqLworICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWxz
cCAtIHl5bGVuKSwgeXlsZW4pOwogICBZWV9SRURVQ0VfUFJJTlQgKHl5bik7CiAgIHN3aXRjaCAo
eXluKQogICAgIHsKLSAgICAgICAgY2FzZSAyOgorICAgICAgICBjYXNlIDQ6CiAKICAgICB7CiAg
ICAgICAgIC8vIFRoZSBzeW1ib2wgdGFibGUgc2VhcmNoIHdhcyBkb25lIGluIHRoZSBsZXhpY2Fs
IHBoYXNlCiAgICAgICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9ICh5eXZzcFsoMSkgLSAoMSld
LmxleCkuc3ltYm9sOwogICAgICAgICBjb25zdCBUVmFyaWFibGUqIHZhcmlhYmxlOwogICAgICAg
ICBpZiAoc3ltYm9sID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciIsICh5eXZzcFsoMSkg
LSAoMSldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eWxzcFsoMSkgLSAoMSldKSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciIsICh5eXZzcFsoMSkg
LSAoMSldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCk7CiAg
ICAgICAgICAgICBUVmFyaWFibGUqIGZha2VWYXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5zdHJpbmcsIHR5cGUpOwpAQCAtMjE2OSwxMCArMjI1OSwxNyBAQCB5
eXJlZHVjZToKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoaXMgaWRlbnRpZmll
ciBjYW4gb25seSBiZSBhIHZhcmlhYmxlIHR5cGUgc3ltYm9sCiAgICAgICAgICAgICBpZiAoISBz
eW1ib2wtPmlzVmFyaWFibGUoKSkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgInZhcmlhYmxlIGV4cGVjdGVkIiwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgInZhcmlhYmxlIGV4cGVjdGVkIiwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgdmFyaWFibGUgPSBzdGF0
aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOworCisgICAgICAgICAgICBpZiAoY29u
dGV4dC0+aXNWYXJpYWJsZUJ1aWx0SW4odmFyaWFibGUpICYmIAorICAgICAgICAgICAgICAgICF2
YXJpYWJsZS0+Z2V0RXh0ZW5zaW9uKCkuZW1wdHkoKSAmJgorICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmV4dGVuc2lvbkVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCB2YXJpYWJsZS0+Z2V0
RXh0ZW5zaW9uKCkpKSB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlICQxLnN0cmlu
ZywgaXQncyB1c2VkIGJ5IGVycm9yIHJlY292ZXJ5LCBhbmQgdGhlIHBvb2wKQEAgLTIxODEsMjIg
KzIyNzgsMjMgQEAgeXlyZWR1Y2U6CiAgICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdl
dFF1YWxpZmllcigpID09IEV2cUNvbnN0ICkgewogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiog
Y29uc3RBcnJheSA9IHZhcmlhYmxlLT5nZXRDb25zdFBvaW50ZXIoKTsKICAgICAgICAgICAgIFRU
eXBlIHQodmFyaWFibGUtPmdldFR5cGUoKSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbihj
b25zdEFycmF5LCB0LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJp
YWJsZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LmxpbmUpOwotICAgIDt9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eWxzcFsoMSkgLSAoMSldKSk7
CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzoKKyAgY2FzZSA1OgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBj
YXNlIDQ6CisgIGNhc2UgNjoKIAogICAgIHsKICAgICAgICAgLy8KQEAgLTIyMDQsMTU1ICsyMzAy
LDE1MSBAQCB5eXJlZHVjZToKICAgICAgICAgLy8gY2hlY2sgZm9yIG92ZXJmbG93IGZvciBjb25z
dGFudHMKICAgICAgICAgLy8KICAgICAgICAgaWYgKGFicygoeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LmkpID49ICgxIDw8IDE2KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lLCAiIGludGVnZXIgY29uc3RhbnQgb3ZlcmZsb3ciLCAiIik7Cisg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICIgaW50ZWdlciBj
b25zdGFudCBvdmVyZmxvdyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgfQogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0
YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgoeXl2c3BbKDEpIC0g
KDEpXS5sZXgpLmkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmUpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVi
dEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNToKKyAgY2FzZSA3OgogCiAgICAgewogICAgICAgICBD
b25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAg
IHVuaW9uQXJyYXktPnNldEZDb25zdCgoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmYpOwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFDb25zdCksICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgO30KKyAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVhazsKIAot
ICBjYXNlIDY6CisgIGNhc2UgODoKIAogICAgIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5p
b25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRC
Q29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5iKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxz
cFsoMSkgLSAoMSldKSk7CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzoKKyAgY2FzZSA5
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAotICBjYXNlIDg6CisgIGNhc2UgMTA6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgOToKKyAg
Y2FzZSAxMToKIAogICAgIHsKICAgICAgICAgaWYgKCEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpICYmICEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSAmJiAhKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkpIHsKICAgICAgICAgICAgIGlmICgoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCkpCi0g
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5l
LCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAi
LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xO
b2RlKCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMikgLSAoNCldKSwgIiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJh
eSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0g
KDQpXS5sZXgpLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJp
eCwgb3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5bHNwWygyKSAtICg0KV0pLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFy
cmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAiZXhwcmVzc2lvbiIpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2
cUNvbnN0ICYmICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRR
dWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkpIHsgLy8gY29uc3RhbnQgZm9s
ZGluZyBmb3IgYXJyYXlzCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RBcnJheU5vZGUoKHl5dnNwWygzKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3Rv
cigpKSB7ICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCi0gICAgICAgICAgICAgICAg
VFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7Ci0g
ICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCktPmdldElDb25zdCgpOyAvLyBuZWVkIHRvIGRvIGl0IHRoaXMgd2F5IGJlY2F1c2Ug
di54eSBzZW5kcyBmaWVsZHMgaW50ZWdlciBhcnJheQotICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVs
ZHMsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIp
IC0gKDQpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSkgeyAvLyBjb25zdGFudCBm
b2xkaW5nIGZvciBtYXRyaWNlcwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0TWF0cml4Tm9kZSgoeXl2c3BbKDMpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9u
QXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgaWYg
KCh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRRdWFsaWZpZXIo
KSA9PSBFdnFDb25zdCkgeworICAgICAgICAgICAgaW50IGluZGV4ID0gKHl5dnNwWygzKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRJQ29u
c3QoMCk7CisgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmdzdHJlYW0gaW5mb1N0cmVhbTsKKyAgICAgICAgICAgICAgICBpbmZvU3RyZWFtIDw8
IGluZGV4OworICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGluZm8gPSBpbmZvU3RyZWFtLnN0
cigpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMykgLSAoNCldKSwg
Im5lZ2F0aXZlIGluZGV4IiwgaW5mby5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgaW5kZXggPSAwOwogICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewotICAgICAg
ICAgICAgICAgIGlmICgoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmlzVmVjdG9yKCkgfHwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmlzTWF0cml4KCkpICYmICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSA8PSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2lu
dGVyKCktPmdldElDb25zdCgpICYmICEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+aXNBcnJheSgpICkgewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVh
bSA8PCAiZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8PCAoeXl2c3BbKDMpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9u
QXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpIDw8ICInIjsKLSAgICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIi
LCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSA9PSAwKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0TWF4QXJyYXlTaXplKCkgPD0gKHl5dnNwWygzKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTZXRNYXhTaXplKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc1N5bWJvbE5vZGUoKSwgKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGVQb2ludGVyKCksICh5eXZzcFso
MykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+
Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCksIHRydWUsICh5eXZzcFsoMikgLSAo
NCldLmxleCkubGluZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6
ZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xO
b2RlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBl
UG9pbnRlcigpLCAwLCBmYWxzZSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25z
dGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpID49ICh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJyYXlT
aXplKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBl
eHRyYUluZm9TdHJlYW07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3Ry
ZWFtIDw8ICJhcnJheSBpbmRleCBvdXQgb2YgcmFuZ2UgJyIgPDwgKHl5dnNwWygzKSAtICg0KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCld
LmxleCkubGluZSwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9w
SW5kZXhEaXJlY3QsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0
KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7
CisgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5pc0FycmF5KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgYXJyYXlzCisgICAg
ICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmFkZENvbnN0QXJyYXlOb2RlKGluZGV4LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICg0KV0pKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3Rvcigp
KSB7ICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAgICAgICAgICAg
IFRWZWN0b3JGaWVsZHMgZmllbGRzOworICAgICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0g
MTsKKyAgICAgICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVl
ZCB0byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJy
YXkKKyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgKHl5dnNwWygxKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoNCldKSk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
aXNNYXRyaXgoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBtYXRyaWNlcworICAgICAgICAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRD
b25zdE1hdHJpeE5vZGUoaW5kZXgsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDQpXSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSA9PSAwKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGlu
ZSwgIiIsICJbIiwgImFycmF5IG11c3QgYmUgcmVkZWNsYXJlZCB3aXRoIGEgc2l6ZSBiZWZvcmUg
YmVpbmcgaW5kZXhlZCB3aXRoIGEgdmFyaWFibGUiKTsKKyAgICAgICAgICAgICAgICBpZiAoKHl5
dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAg
ICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBvdXQgb2YgcmFu
Z2UgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0KV0pLCAiIiwgIlsiLCBleHRyYUlu
Zm8uY19zdHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgLSAxOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkgfHwgKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpICYmICh5eXZzcFsoMSkg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUo
KSA8PSBpbmRleCkgeworICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRy
YUluZm9TdHJlYW07CisgICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiZmll
bGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8PCBpbmRleCA8PCAiJyI7CisgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0KV0pLCAi
IiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAgKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIC0g
MTsKICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJ
bmRpcmVjdCwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5s
ZXgpLmxpbmUpOworICAgICAgICAgICAgICAgICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KS0+c2V0SUNvbnN0KGluZGV4KTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJl
Y3QsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICg0KV0pKTsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRl
eEluZGlyZWN0LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoNCld
KSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9PSAwKSB7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENv
bnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoMC4wZik7
Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwg
RWJwSGlnaCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOworICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gs
IEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICg0KV0pKTsKICAgICAgICAgfSBlbHNlIGlmICgoeXl2
c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7CiAgICAg
ICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGUoKS5nZXRTdHJ1Y3QoKSkKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpKSk7CisgICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3Ry
dWN0KCkpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCksICh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSk7CiAK
ICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQogICAgICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVh
bGlmaWVyKEV2cUNvbnN0KTsKLSAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNv
bnN0KQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBl
KFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNp
Y1R5cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFBy
ZWNpc2lvbigpLCBFdnFDb25zdCwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldE5vbWluYWxTaXplKCkpKTsKLSAgICAgICAgZWxzZSBpZiAoKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpCi0gICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBv
cmFyeSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWlu
YWxTaXplKCkpKTsKLSAgICAgICAgZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCks
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24o
KSwgRXZxQ29uc3QpKTsKLSAgICAgICAgZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSkpOwotICAg
ICAgICBlbHNlCisgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpIHsKKyAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bGlmaWVyID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5
cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5
OworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRU
eXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5
cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNp
c2lvbigpLCBxdWFsaWZpZXIsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXROb21pbmFsU2l6ZSgpKSk7CisgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkpIHsKKyAgICAgICAgICAg
IFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0
IDogRXZxVGVtcG9yYXJ5OworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldFByZWNpc2lvbigpLCBxdWFsaWZpZXIpKTsKKyAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpKTsKLSAgICA7fQor
ICAgICAgICB9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTA6CisgIGNhc2UgMTI6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMTE6CisgIGNhc2UgMTM6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUsICJjYW5u
b3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eWxzcFsoMykgLSAoMyldKSwgImNhbm5vdCBhcHBseSBkb3Qgb3BlcmF0
b3IgdG8gYW4gYXJyYXkiLCAiLiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5pc1ZlY3RvcigpKSB7CiAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxk
czsKLSAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBhcnNlVmVjdG9yRmllbGRzKCooeXl2c3Bb
KDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgKHl5dnNwWygzKSAtICgzKV0ubGV4
KS5saW5lKSkgeworICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VWZWN0b3JGaWVsZHMo
Kih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAoeXlsc3BbKDMpIC0g
KDMpXSkpKSB7CiAgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CiAgICAgICAgICAgICAg
ICAgZmllbGRzLm9mZnNldHNbMF0gPSAwOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9yIGZpZWxkcwotICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0
VmVjdG9yTm9kZShmaWVsZHMsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShm
aWVsZHMsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3Bb
KDMpIC0gKDMpXSkpOwogICAgICAgICAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtMjM2MSwxMyArMjQ1
NSwxMyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCwgKGludCkgKCooeXl2c3Bb
KDMpIC0gKDMpXS5sZXgpLnN0cmluZykuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIFRTdHJpbmcgdmVjdG9yU3RyaW5nID0gKih5eXZzcFsoMykgLSAoMyld
LmxleCkuc3RyaW5nOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVsZHMsICh5eXZzcFsoMykgLSAoMyldLmxl
eCkubGluZSk7Ci0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcFZlY3RvclN3aXp6bGUsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5dnNwWygyKSAt
ICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmllbGRzLCAoeXlsc3BbKDMpIC0gKDMp
XSkpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BWZWN0b3JTd2l6emxlLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eWxzcFsoMikgLSAoMyld
KSk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRU
eXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRC
YXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnksIChpbnQpIHZlY3RvclN0cmluZy5zaXplKCkpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSkgewogICAgICAgICAgICAgVE1hdHJpeEZp
ZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJzZU1hdHJpeEZpZWxk
cygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsICh5eXZzcFsoMykg
LSAoMyldLmxleCkubGluZSkpIHsKKyAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBhcnNlTWF0
cml4RmllbGRzKCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgKHl5
bHNwWygzKSAtICgzKV0pKSkgewogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9sZVJvdyA9IGZh
bHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9sZUNvbCA9IGZhbHNlOwogICAgICAgICAg
ICAgICAgIGZpZWxkcy5yb3cgPSAwOwpAQCAtMjM3NiwxMDggKzI0NzAsMTAyIEBAIHl5cmVkdWNl
OgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZmllbGRzLndob2xlUm93IHx8IGZp
ZWxkcy53aG9sZUNvbCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MikgLSAoMyldLmxleCkubGluZSwgIiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1wbGVtZW50ZWQg
eWV0IiwgIi4iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0g
KDMpXSksICIgbm9uLXNjYWxhciBmaWVsZHMgbm90IGltcGxlbWVudGVkIHlldCIsICIuIik7CiAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIENvbnN0
YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAg
ICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoMCk7Ci0gICAgICAgICAgICAgICAgVEludGVybVR5
cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMykg
LSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eXZz
cFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBp
bmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMykgLSAoMyld
KSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eWxzcFsoMikgLSAoMyldKSk7
CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBl
KFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNp
Y1R5cGUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFBy
ZWNpc2lvbigpLEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdChmaWVsZHMuY29sICog
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXpl
KCkgKyBmaWVsZHMucm93KTsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUo
RWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5s
aW5lKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5dnNwWygyKSAtICgzKV0u
bGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCkpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7CiAgICAg
ICAgICAgICBib29sIGZpZWxkRm91bmQgPSBmYWxzZTsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBl
TGlzdCogZmllbGRzID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKLSAgICAgICAgICAgIGlmIChmaWVsZHMgPT0gMCkgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSwgInN0cnVjdHVyZSBoYXMgbm8gZmllbGRzIiwgIkludGVybmFsIEVycm9yIik7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgaTsKLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZmllbGRzLT5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKCpmaWVsZHMpW2ldLnR5cGUtPmdldEZpZWxk
TmFtZSgpID09ICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZykgewotICAgICAgICAgICAg
ICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3QgVEZpZWxkTGlz
dCYgZmllbGRzID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
aTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoZmllbGRzW2ldLT5uYW1lKCkgPT0gKih5eXZzcFsoMykgLSAoMyld
LmxleCkuc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGZpZWxkRm91bmQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgaWYgKGZpZWxkRm91bmQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVy
KCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0KCooeXl2c3BbKDMpIC0g
KDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoKigqZmllbGRzKVtpXS50
eXBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFuZ2UgdGhlIHF1YWxpZmll
ciBvZiB0aGUgcmV0dXJuIHR5cGUsIG5vdCBvZiB0aGUgc3RydWN0dXJlIGZpZWxkCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gYXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHNo
YXJlZCBiZXR3ZWVuIHZhcmlvdXMgc3RydWN0dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGVQb2ludGVyKCktPnNl
dFF1YWxpZmllcihFdnFDb25zdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudFVu
aW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgKigqZmllbGRzKVtpXS50eXBlLCAoeXl2c3BbKDMpIC0gKDMpXS5s
ZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0
U3RydWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgs
ICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoKigqZmllbGRzKVtpXS50eXBl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RTdHJ1
Y3QoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0eXBl
LCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBmaWVsZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
YXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHZhcmlvdXMgc3Ry
dWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiBubyBz
dWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICh5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5j
X3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgQ29u
c3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOworICAgICAgICAg
ICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7CisgICAgICAgICAgICAgICAgICAg
IFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCAqZmllbGRzW2ldLT50eXBlKCksICh5eWxzcFsoMykgLSAoMyldKSk7
CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdFN0cnVjdCwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4LCAoeXlsc3BbKDIpIC0g
KDMpXSkpOworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPnNldFR5cGUoKmZpZWxkc1tpXS0+dHlwZSgpKTsKICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFso
MikgLSAoMyldKSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICh5eXZzcFsoMykgLSAo
MyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIp
IC0gKDMpXS5sZXgpLmxpbmUsICIgZmllbGQgc2VsZWN0aW9uIHJlcXVpcmVzIHN0cnVjdHVyZSwg
dmVjdG9yLCBvciBtYXRyaXggb24gbGVmdCBoYW5kIHNpZGUiLCAoeXl2c3BbKDMpIC0gKDMpXS5s
ZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3Bb
KDIpIC0gKDMpXSksICIgZmllbGQgc2VsZWN0aW9uIHJlcXVpcmVzIHN0cnVjdHVyZSwgdmVjdG9y
LCBvciBtYXRyaXggb24gbGVmdCBoYW5kIHNpZGUiLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0
cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgICAgICAvLyBkb24ndCBkZWxl
dGUgJDMuc3RyaW5nLCBpdCdzIGZyb20gdGhlIHBvb2wKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDEyOgorICBjYXNlIDE0OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4
dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICIrKyIsICh5
eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAiKysiLCAoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdEluY3JlbWVudCwgKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMildLmxl
eCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBv
c3RJbmNyZW1lbnQsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXlsc3BbKDIpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT51bmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAiKysiLCAoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAi
KysiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCi0gIGNhc2UgMTM6CisgIGNhc2UgMTU6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5sVmFsdWVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIi0tIiwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29u
dGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICItLSIsICh5eXZzcFso
MSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0RGVjcmVtZW50LCAoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgyKV0ubGV4
KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9z
dERlY3JlbWVudCwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eWxzcFsoMikgLSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnVuYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFso
MSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICIt
LSIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxNDoKKyAgY2FzZSAxNjoKIAogICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQt
PmludGVnZXJFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAiW10iKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNToK
KyAgY2FzZSAxNzoKIAogICAgIHsKICAgICAgICAgVEZ1bmN0aW9uKiBmbkNhbGwgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0pLmZ1bmN0aW9uOwpAQCAtMjQ5MSwxOCArMjU3OSwxOCBAQCB5eXJl
ZHVjZToKICAgICAgICAgICAgIC8vIFRoZWlyIHBhcmFtZXRlcnMgd2lsbCBiZSB2ZXJpZmllZCBh
bGdvcml0aG1pY2FsbHkuCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgVFR5cGUgdHlwZShF
YnRWb2lkLCBFYnBVbmRlZmluZWQpOyAgLy8gdXNlIHRoaXMgdG8gZ2V0IHRoZSB0eXBlIGJhY2sK
LSAgICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1Y3RvckVycm9yQ2hlY2soKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5v
ZGUsICpmbkNhbGwsIG9wLCAmdHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5jb25z
dHJ1Y3RvckVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0pLmludGVybU5vZGUsICpmbkNhbGwsIG9wLCAmdHlwZSkpIHsKICAgICAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEl0J3MgYSBjb25zdHJ1
Y3Rvciwgb2YgdHlwZSAndHlwZScuCiAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3Rv
cigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxs
LCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0cnVjdG9yKCh5eXZz
cFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgJnR5cGUsIG9wLCBmbkNhbGwsICh5eWxz
cFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoMCwgb3AsICh5
eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0
ZU9wZXJhdG9yKDAsIG9wLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKHR5cGUpOwog
ICAgICAgICB9IGVsc2UgewpAQCAtMjUxMSwxMyArMjU5OSwxMyBAQCB5eXJlZHVjZToKICAgICAg
ICAgICAgIC8vCiAgICAgICAgICAgICBjb25zdCBURnVuY3Rpb24qIGZuQ2FuZGlkYXRlOwogICAg
ICAgICAgICAgYm9vbCBidWlsdEluOwotICAgICAgICAgICAgZm5DYW5kaWRhdGUgPSBjb250ZXh0
LT5maW5kRnVuY3Rpb24oKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCBmbkNhbGwsICZi
dWlsdEluKTsKKyAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9u
KCh5eWxzcFsoMSkgLSAoMSldKSwgZm5DYWxsLCAmYnVpbHRJbik7CiAgICAgICAgICAgICBpZiAo
Zm5DYW5kaWRhdGUpIHsKICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEEg
ZGVjbGFyZWQgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICBp
ZiAoYnVpbHRJbiAmJiAhZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkgJiYKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjaygoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmxpbmUsIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjaygoeXlsc3BbKDEp
IC0gKDEpXSksIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBvcCA9IGZuQ2FuZGlkYXRlLT5nZXRCdWlsdEluT3AoKTsKQEAgLTI1MjksNyArMjYxNyw3
IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFRyZWF0IGl0IGxpa2UgYSBidWlsdC1pbiB1bmFyeSBvcGVyYXRvci4KICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlN
YXRoKG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsIDAsIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgob3AsICh5
eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5bHNwWygxKSAtICgxKV0pLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApICB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYnVpbHQgaW4gdW5hcnkgb3BlcmF0b3Ig
ZnVuY3Rpb24uICBUeXBlOiAiIDw8IHN0YXRpY19jYXN0PFRJbnRlcm1UeXBlZCo+KCh5eXZzcFso
MSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCk7CkBAIC0y
NTM4LDEyICsyNjI2LDEyIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFlZRVJST1I7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIG9wLCAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCBvcCwgKHl5
bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSByZWFsIGZ1bmN0aW9u
IGNhbGwKIAotICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIEVPcEZ1bmN0aW9uQ2FsbCwgKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0
ZU9wZXJhdG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCBFT3BG
dW5jdGlvbkNhbGwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShmbkNhbmRpZGF0ZS0+Z2V0UmV0
dXJuVHlwZSgpKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGhvdyB3ZSBrbm93
IHdoZXRoZXIgdGhlIGdpdmVuIGZ1bmN0aW9uIGlzIGEgYnVpbHRJbiBmdW5jdGlvbiBvciBhIHVz
ZXIgZGVmaW5lZCBmdW5jdGlvbgpAQCAtMjU3MCw5MCArMjY1OCw4OCBAQCB5eXJlZHVjZToKICAg
ICAgICAgICAgICAgICAvLyBQdXQgb24gYSBkdW1teSBub2RlIGZvciBlcnJvciByZWNvdmVyeQog
ICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRV
bmlvblsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoMC4wZik7Ci0g
ICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUp
OworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgZGVsZXRlIGZuQ2FsbDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBj
YXNlIDE2OgorICBjYXNlIDE4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxNzoKKyAgY2FzZSAxOToKIAogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtKS5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIs
ICIiKTsKKyAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAibWV0aG9k
cyBhcmUgbm90IHN1cHBvcnRlZCIsICIiKTsKICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODoKKyAgY2FzZSAyMDoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk6CisgIGNhc2UgMjE6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKTsK
LSAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGlu
ZTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDIwOgorICBjYXNlIDIyOgog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAo
MildLmludGVybS5mdW5jdGlvbik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUg
PSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjE6CisgIGNhc2UgMjM6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsKICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtTm9k
ZSA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjoKKyAgY2FzZSAy
NDoKIAogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgMCwgbmV3IFRUeXBlKCh5
eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpIH07CiAg
ICAgICAgICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbiktPmFkZFBhcmFtZXRlcihw
YXJhbSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmZ1bmN0aW9uKTsKICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtTm9kZSA9
ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjM6CisgIGNhc2UgMjU6CiAKICAgICB7CiAgICAgICAg
IFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpKSB9OwogICAgICAgICAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0pLmZ1bmN0aW9uLT5hZGRQYXJhbWV0ZXIocGFyYW0pOwogICAgICAgICAoeXl2
YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rpb247
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVybU5vZGUsICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMp
XS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0pLmludGVybU5vZGUsICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOworICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDI0
OgorICBjYXNlIDI2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9
ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbik7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyNToKKyAgY2FzZSAyNzoKIAogICAgIHsKICAgICAgICAgLy8KQEAg
LTI2NjcsMzkgKzI3NTMsMzkgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjYXNlIEVidEZsb2F0
OgogICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubWF0
cml4KSB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCgoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0udHlwZSkuc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0TWF0NDsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9w
Q29uc3RydWN0TWF0MjsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0g
RU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IG9w
ID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKCh5eXZzcFso
MSkgLSAoMSldLmludGVybS50eXBlKS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
MTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RG
bG9hdDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RWZWMyOyAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3AgPSBFT3BDb25zdHJ1Y3RWZWMzOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgNDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1
Y3RWZWM0OyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogb3AgPSBFT3BDb25z
dHJ1Y3RGbG9hdDsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BD
b25zdHJ1Y3RWZWMyOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBF
T3BDb25zdHJ1Y3RWZWMzOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogb3Ag
PSBFT3BDb25zdHJ1Y3RWZWM0OyAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEVi
dEludDoKICAgICAgICAgICAgICAgICBzd2l0Y2goKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5
cGUpLnNpemUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEludDsgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjMiIsICh5eXZzcFso
MSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzMi
LCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0
SVZlYzM7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgRlJBR19WRVJUX09O
TFkoIml2ZWM0IiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVP
cENvbnN0cnVjdElWZWM0OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9w
Q29uc3RydWN0SW50OyAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BD
b25zdHJ1Y3RJVmVjMjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENv
bnN0cnVjdElWZWMzOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29u
c3RydWN0SVZlYzQ7IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKICAgICAgICAgICAgICAgICBzd2l0Y2go
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUpIHsKLSAgICAgICAgICAgICAgICBj
YXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENv
bnN0cnVjdEJvb2w7ICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgIEZSQUdf
VkVSVF9PTkxZKCJidmVjMiIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsg
b3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiAg
ICAgICBGUkFHX1ZFUlRfT05MWSgiYnZlYzMiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlw
ZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7IGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgNDogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWM0IiwgKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWM0OyBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdEJWZWMzOyBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6IGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9wID09IEVPcE51bGwpIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlw
ZSkubGluZSwgImNhbm5vdCBjb25zdHJ1Y3QgdGhpcyB0eXBlIiwgZ2V0QmFzaWNTdHJpbmcoKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKTsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlw
ZSIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBlKSk7
CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBlID0gRWJ0RmxvYXQ7CiAgICAgICAgICAg
ICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RGbG9hdDsKQEAgLTI3MDksNzEgKzI3OTUsNjAgQEAgeXly
ZWR1Y2U6CiAgICAgICAgIFRUeXBlIHR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUp
KTsKICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oJnRlbXBTdHJp
bmcsIHR5cGUsIG9wKTsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBmdW5jdGlv
bjsKLSAgICA7fQotICAgIGJyZWFrOwotCi0gIGNhc2UgMjY6Ci0KLSAgICB7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5l
LCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpKQotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7Ci0g
ICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCh5eXZzcFsoMSkgLSAo
MSldLmxleCkuc3RyaW5nLCB0eXBlKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikg
PSBmdW5jdGlvbjsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDI3OgorICBj
YXNlIDI4OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNr
KCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3Ry
aW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXlsc3BbKDEp
IC0gKDEpXSksICooeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZykpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZp
bmVkKTsKICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5zdHJpbmcsIHR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1
bmN0aW9uKSA9IGZ1bmN0aW9uOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
Mjg6CisgIGNhc2UgMjk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjk6CisgIGNhc2UgMzA6CiAKICAgICB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMild
LmxleCkubGluZSwgIisrIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0g
KDIpXSksICIrKyIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQ
cmVJbmNyZW1lbnQsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFVuYXJ5TWF0aChFT3BQcmVJbmNyZW1lbnQsICh5eXZzcFsoMikgLSAoMildLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDEpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5s
aW5lLCAiKysiLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5
bHNwWygxKSAtICgyKV0pLCAiKysiLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzA6CisgIGNhc2UgMzE6CiAKICAgICB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMildLmxl
eCkubGluZSwgIi0tIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkp
KQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDIp
XSksICItLSIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVE
ZWNyZW1lbnQsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2
c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFVuYXJ5TWF0aChFT3BQcmVEZWNyZW1lbnQsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXlsc3BbKDEpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsK
ICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5l
LCAiLS0iLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5bHNw
WygxKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzE6CisgIGNhc2UgMzI6CiAKICAgICB7CiAgICAg
ICAgIGlmICgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLm9wICE9IEVPcE51bGwpIHsKLSAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRVbmFyeU1hdGgoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5vcCwgKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMSkgLSAoMildLmludGVy
bSkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLm9wLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CiAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsK
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlcnJvck9wID0gIiI7CiAgICAgICAgICAgICAg
ICAgc3dpdGNoKCh5eXZzcFsoMSkgLSAoMildLmludGVybSkub3ApIHsKQEAgLTI3ODEsMzU3ICsy
ODU2LDM1NSBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxOb3Q6
IGVycm9yT3AgPSAiISI7IGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3Io
KHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5saW5lLCBlcnJvck9wLCAoeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAg
ICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgZXJyb3JP
cCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDIp
IC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQotICAgIGJyZWFrOwotCi0g
IGNhc2UgMzI6Ci0KLSAgICB7ICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTnVsbDsgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAzMzoKIAotICAgIHsgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BOZWdhdGl2ZTsg
O30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTnVsbDsgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMzQ6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTG9naWNhbE5vdDsgO30KKyAgICB7
ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTmVnYXRpdmU7IH0KICAgICBicmVhazsKIAogICBjYXNl
IDM1OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0p
Lm9wID0gRU9wTG9naWNhbE5vdDsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMzY6CiAKKyAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOyB9CisgICAgYnJlYWs7CisKKyAgY2FzZSAzNzoKKwogICAgIHsK
LSAgICAgICAgRlJBR19WRVJUX09OTFkoIioiLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUp
OwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BNdWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE11bCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIioiLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwg
KHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0g
KDMpXSksICIqIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzNzoKKyAgY2FzZSAzODoKIAogICAgIHsKLSAgICAg
ICAgRlJBR19WRVJUX09OTFkoIi8iLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BEaXYsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcERpdiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3Bb
KDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5h
cnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIi8iLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSks
ICIvIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAzODoKKyAgY2FzZSAzOToKIAotICAgIHsgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMzk6CisgIGNhc2UgNDA6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEFkZCwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUs
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wQWRkLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgz
KV0ubGV4KS5saW5lLCAiKyIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5i
aW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIisiLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDQwOgor
ICBjYXNlIDQxOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BTdWIsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcFN1YiwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCku
bGluZSwgIi0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BF
cnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICItIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAg
ICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0MToKKyAgY2FzZSA0
MjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDI6CisgIGNhc2UgNDM6CiAKLSAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsK
IAotICBjYXNlIDQzOgorICBjYXNlIDQ0OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChF
T3BMZXNzVGhhbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMp
XS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wTGVzc1RoYW4sICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgz
KV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICI8IiwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiPCIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAg
ICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25z
dCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
KHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCi0gIGNhc2UgNDQ6CisgIGNhc2UgNDU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRo
KEVPcEdyZWF0ZXJUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BHcmVhdGVyVGhhbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3Bb
KDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5h
cnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIj4iLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSks
ICI+IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsx
XTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
Q29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA0NToKKyAgY2FzZSA0NjoKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJp
bmFyeU1hdGgoRU9wTGVzc1RoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAg
aWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIjw9Iiwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNw
WygyKSAtICgzKV0pLCAiPD0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNl
KTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwor
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDQ2OgorICBjYXNlIDQ3OgogCiAgICAg
ewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgz
KV0ubGV4KS5saW5lLCAiPj0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICI+PSIsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9u
ICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgz
KV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDc6
CisgIGNhc2UgNDg6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDQ4OgorICBjYXNlIDQ5OgogCiAg
ICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BFcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1YWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAg
IGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAg
Y29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICI9PSIs
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxz
cFsoMikgLSAoMyldKSwgIj09IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxz
ZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsK
KyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0OToKKyAgY2FzZSA1MDoKIAogICAg
IHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTm90RXF1YWwsICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5vdEVxdWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAg
ICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAi
IT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigo
eXlsc3BbKDIpIC0gKDMpXSksICIhPSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0g
bmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3Qo
ZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAg
fQotICAgIDt9Ci0gICAgYnJlYWs7Ci0KLSAgY2FzZSA1MDoKLQotICAgIHsgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNTE6CiAKLSAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsK
IAogICBjYXNlIDUyOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1MzoKIAotICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgNTQ6CiAKKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CisgICAgYnJlYWs7CisK
KyAgY2FzZSA1NToKKwogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbEFuZCwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUs
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbEFu
ZCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRl
eHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFso
MikgLSAoMyldLmxleCkubGluZSwgIiYmIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiJiYiLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5n
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3Rh
bnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAg
dW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2
c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFso
MikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBj
YXNlIDU1OgorICBjYXNlIDU2OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1NjoKKyAgY2FzZSA1
NzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbFhvciwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbFhvciwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSwgIl5eIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiXl4iLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyld
KSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDU3Ogor
ICBjYXNlIDU4OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1ODoKKyAgY2FzZSA1OToKIAogICAg
IHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFi
bGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsT3IsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAg
ICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUs
ICJ8fCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9y
KCh5eWxzcFsoMikgLSAoMyldKSwgInx8IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25z
dChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAg
ICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1OToKKyAgY2FzZSA2MDoK
IAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjA6CisgIGNhc2UgNjE6CiAKICAgICB7Ci0gICAgICAg
aWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSwg
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgIGlmIChj
b250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAo
NSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKIAotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAo
NSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oKHl5dnNwWygxKSAtICg1KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNw
WygyKSAtICg1KV0pKTsKICAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkgIT0gKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldFR5cGUoKSkKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IDA7CiAKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFso
MikgLSAoNSldLmxleCkubGluZSwgIjoiLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDUpXSksICI6IiwgKHl5dnNwWygzKSAt
ICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZz
cFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA2MToKKyAgY2FzZSA2MjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjI6CisgIGNhc2UgNjM6
CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eXZzcFso
MikgLSAoMyldLmludGVybSkubGluZSwgImFzc2lnbiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hl
Y2soKHl5bHNwWygyKSAtICgzKV0pLCAiYXNzaWduIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQXNzaWduKCh5eXZzcFsoMikgLSAoMyldLmludGVybSkub3AsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEFzc2lnbigoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0pLm9wLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YXNzaWduRXJy
b3IoKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtKS5saW5lLCAiYXNzaWduIiwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwg
ImFzc2lnbiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9Ci0gICAg
YnJlYWs7Ci0KLSAgY2FzZSA2MzoKLQotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5l
OyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFzc2lnbjsgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSA2NDoKIAotICAgIHsgRlJBR19WRVJUX09OTFkoIio9IiwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lKTsgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTXVsQXNzaWduOyA7fQorICAgIHsg
KHl5dmFsLmludGVybSkub3AgPSBFT3BBc3NpZ247IH0KICAgICBicmVhazsKIAogICBjYXNlIDY1
OgogCi0gICAgeyBGUkFHX1ZFUlRfT05MWSgiLz0iLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmUpOyAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGlu
ZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BEaXZBc3NpZ247IDt9CisgICAgeyAoeXl2YWwuaW50
ZXJtKS5vcCA9IEVPcE11bEFzc2lnbjsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjY6CiAKLSAg
ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybSkubGlu
ZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BB
ZGRBc3NpZ247IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcERpdkFzc2lnbjsgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgNjc6CiAKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCku
bGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BTdWJBc3NpZ247IDt9CisgICAgeyAoeXl2YWwu
aW50ZXJtKS5vcCA9IEVPcEFkZEFzc2lnbjsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjg6CiAK
KyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wU3ViQXNzaWduOyB9CisgICAgYnJlYWs7CisK
KyAgY2FzZSA2OToKKwogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2OToKKyAgY2FzZSA3MDoKIAogICAgIHsKLSAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbW1hKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgz
KV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5
eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIsIiwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA3MDoKKyAgY2FzZSA3MToKIAogICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQtPmNv
bnN0RXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzE6CisgIGNhc2UgNzI6
CiAKICAgICB7CiAgICAgICAgIFRGdW5jdGlvbiAmZnVuY3Rpb24gPSAqKCh5eXZzcFsoMSkgLSAo
MildLmludGVybSkuZnVuY3Rpb24pOwpAQCAtMzE0NSwxMyArMzIxOCwxMyBAQCB5eXJlZHVjZToK
ICAgICAgICAgICAgIGNvbnN0IFRQYXJhbWV0ZXIgJnBhcmFtID0gZnVuY3Rpb24uZ2V0UGFyYW0o
aSk7CiAgICAgICAgICAgICBpZiAocGFyYW0ubmFtZSAhPSAwKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIFRWYXJpYWJsZSAqdmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKHBhcmFtLm5h
bWUsICpwYXJhbS50eXBlKTsKKyAgICAgICAgICAgICAgICBUVmFyaWFibGUgdmFyaWFibGUocGFy
YW0ubmFtZSwgKnBhcmFtLnR5cGUpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3RvdHlw
ZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQo
KSwgdmFyaWFibGUtPmdldE5hbWUoKSwgdmFyaWFibGUtPmdldFR5cGUoKSwgKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtKS5saW5lKSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5saW5lKTsKKyAg
ICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3Jl
Z2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUu
Z2V0VW5pcXVlSWQoKSwgdmFyaWFibGUuZ2V0TmFtZSgpLCB2YXJpYWJsZS5nZXRUeXBlKCksICh5
eWxzcFsoMSkgLSAoMildKSksICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcHJvdG90eXBl
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtKS5saW5lKSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5saW5lKTsKKyAg
ICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3Jl
Z2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpw
YXJhbS50eXBlLCAoeXlsc3BbKDEpIC0gKDIpXSkpLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIApAQCAtMzE1OSwzNCArMzIzMiwzNCBAQCB5
eXJlZHVjZToKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHByb3RvdHlwZTsK
IAogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAotICBjYXNlIDcyOgorICBjYXNlIDczOgogCiAgICAgewogICAgICAgICBpZiAo
KHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUpCiAgICAgICAgICAgICAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZS0+c2V0T3AoRU9wRGVjbGFy
YXRpb24pOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGU7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA3MzoKKyAgY2FzZSA3NDoKIAogICAgIHsKICAgICAgICAgaWYgKCgoeXl2c3Bb
KDIpIC0gKDQpXS5pbnRlcm0ucHJlY2lzaW9uKSA9PSBFYnBIaWdoKSAmJiAoY29udGV4dC0+c2hh
ZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIpICYmICFjb250ZXh0LT5mcmFnbWVudFByZWNp
c2lvbkhpZ2gpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoNCld
LmxleCkubGluZSwgInByZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGZyYWdtZW50IHNoYWRl
ciIsICJoaWdocCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICg0
KV0pLCAicHJlY2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVyIiwgImhp
Z2hwIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCFjb250ZXh0LT5zeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKCAoeXl2c3Bb
KDMpIC0gKDQpXS5pbnRlcm0udHlwZSksICh5eXZzcFsoMikgLSAoNCldLmludGVybS5wcmVjaXNp
b24pICkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoNCldLmxl
eCkubGluZSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBmb3IgZGVmYXVsdCBwcmVjaXNpb24gcXVh
bGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLnR5cGUpLnR5
cGUpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoNCldKSwgImls
bGVnYWwgdHlwZSBhcmd1bWVudCBmb3IgZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0
QmFzaWNTdHJpbmcoKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLnR5cGUpLnR5cGUpKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gMDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNl
IDc0OgorICBjYXNlIDc1OgogCiAgICAgewogICAgICAgICAvLwpAQCAtMzIwMCwxMiArMzI3Mywx
MiBAQCB5eXJlZHVjZToKICAgICAgICAgVEZ1bmN0aW9uKiBwcmV2RGVjID0gc3RhdGljX2Nhc3Q8
VEZ1bmN0aW9uKj4oY29udGV4dC0+c3ltYm9sVGFibGUuZmluZCgoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0uZnVuY3Rpb24pLT5nZXRNYW5nbGVkTmFtZSgpKSk7CiAgICAgICAgIGlmIChwcmV2RGVj
KSB7CiAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UmV0dXJuVHlwZSgpICE9ICh5eXZzcFso
MSkgLSAoMildLmludGVybS5mdW5jdGlvbiktPmdldFJldHVyblR5cGUoKSkgewotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIm92ZXJs
b2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSByZXR1cm4gdHlwZSIsICh5eXZzcFso
MSkgLSAoMildLmludGVybS5mdW5jdGlvbiktPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmlu
ZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSks
ICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUiLCAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFz
aWNTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmV2RGVjLT5nZXRQ
YXJhbUNvdW50KCk7ICsraSkgewogICAgICAgICAgICAgICAgIGlmIChwcmV2RGVjLT5nZXRQYXJh
bShpKS50eXBlLT5nZXRRdWFsaWZpZXIoKSAhPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVu
Y3Rpb24pLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXIoKSkgewotICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJvdmVy
bG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMi
LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRQYXJhbShpKS50eXBlLT5n
ZXRRdWFsaWZpZXJTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eWxzcFsoMikgLSAoMildKSwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUg
c2FtZSBwYXJhbWV0ZXIgcXVhbGlmaWVycyIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5j
dGlvbiktPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllclN0cmluZygpKTsKICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KQEAgLTMyMTcsMjkgKzMyOTAsMjggQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8vIGJl
aW5nIHJlZGVjbGFyZWQuICBTbywgcGFzcyBiYWNrIHVwIHRoaXMgZGVjbGFyYXRpb24sIG5vdCB0
aGUgb25lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgIC8vCiAgICAgICAgICh5eXZhbC5p
bnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsK
IAogICAgICAgICAvLyBXZSdyZSBhdCB0aGUgaW5uZXIgc2NvcGUgbGV2ZWwgb2YgdGhlIGZ1bmN0
aW9uJ3MgYXJndW1lbnRzIGFuZCBib2R5IHN0YXRlbWVudC4KICAgICAgICAgLy8gQWRkIHRoZSBm
dW5jdGlvbiBwcm90b3R5cGUgdG8gdGhlIHN1cnJvdW5kaW5nIHNjb3BlIGluc3RlYWQuCiAgICAg
ICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLmdldE91dGVyTGV2ZWwoKS0+aW5zZXJ0KCooeXl2YWwu
aW50ZXJtKS5mdW5jdGlvbik7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3
NToKKyAgY2FzZSA3NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCi0gIGNhc2UgNzY6CisgIGNhc2UgNzc6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsK
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDc3OgorICBjYXNlIDc4OgogCiAg
ICAgewogICAgICAgICAvLyBBZGQgdGhlIHBhcmFtZXRlcgpAQCAtMzI0OCwxMCArMzMyMCwxMCBA
QCB5eXJlZHVjZToKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlv
biktPmFkZFBhcmFtZXRlcigoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgZGVsZXRlICh5eXZzcFsoMikgLSAoMildLmludGVybSkucGFy
YW0udHlwZTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDc4OgorICBjYXNl
IDc5OgogCiAgICAgewogICAgICAgICAvLwpAQCAtMzI2Miw3ICszMzM0LDcgQEAgeXlyZWR1Y2U6
CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhpcyBwYXJhbWV0ZXIgPiBmaXJzdCBp
cyB2b2lkCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lLCAiY2Fubm90IGJlIGFuIGFyZ3VtZW50IHR5cGUgZXhjZXB0
IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbKDIpIC0gKDMpXSksICJjYW5ub3QgYmUgYW4gYXJndW1lbnQgdHlwZSBleGNlcHQgZm9yICco
dm9pZCknIiwgInZvaWQiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgIGRlbGV0ZSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pLnBhcmFtLnR5cGU7CiAgICAg
ICAgIH0gZWxzZSB7CkBAIC0zMjcwLDE4ICszMzQyLDE4IEBAIHl5cmVkdWNlOgogICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uZnVu
Y3Rpb24pOwogICAgICAgICAgICAgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmZ1bmN0aW9uKS0+
YWRkUGFyYW1ldGVyKCh5eXZzcFsoMykgLSAoMyldLmludGVybSkucGFyYW0pOwogICAgICAgICB9
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3OToKKyAgY2FzZSA4MDoKIAog
ICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5xdWFsaWZp
ZXIgIT0gRXZxR2xvYmFsICYmICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5xdWFsaWZp
ZXIgIT0gRXZxVGVtcG9yYXJ5KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDIpIC0gKDMpXS5sZXgpLmxpbmUsICJubyBxdWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9u
IHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlw
ZSkucXVhbGlmaWVyKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0g
KDMpXSksICJubyBxdWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1
YWxpZmllclN0cmluZygoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgLy8g
bWFrZSBzdXJlIGEgc2FtcGxlciBpcyBub3QgaW52b2x2ZWQgYXMgd2VsbC4uLgotICAgICAgICBp
ZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDMpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMyldKSwgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKIAogICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9uIGFzIGEgcHJvdG90eXBlIGFmdGVy
IHBhcnNpbmcgaXQgKHdlIGRvIG5vdCBzdXBwb3J0IHJlY3Vyc2lvbikKQEAgLTMyOTEsNzAzICsz
MzYzLDY5MyBAQCB5eXJlZHVjZToKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBm
dW5jdGlvbjsKICAgICAgICAgCiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsK
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDgwOgorICBjYXNlIDgxOgogCiAg
ICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0g
RWJ0Vm9pZCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5saW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCAoeXl2c3BbKDIpIC0gKDIp
XS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbKDIpIC0gKDIpXSksICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsICh5eXZzcFsoMikg
LSAoMildLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgfQotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNr
KCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3Ry
aW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXlsc3BbKDIp
IC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZykpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7KHl5dnNwWygy
KSAtICgyKV0ubGV4KS5zdHJpbmcsIG5ldyBUVHlwZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
dHlwZSkpfTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMild
LmxleCkubGluZTsKICAgICAgICAgKHl5dmFsLmludGVybSkucGFyYW0gPSBwYXJhbTsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDgxOgorICBjYXNlIDgyOgogCiAgICAgewog
ICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBtYWtlIGFuIGFycmF5IG91dCBvZiB0aGlzIHR5
cGUKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5dnNwWygzKSAt
ICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQorICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5
eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3Bb
KDIpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZykpCisg
ICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0p
LCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogCiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoNCkg
LSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDQpIC0g
KDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKS5zZXRB
cnJheSh0cnVlLCBzaXplKTsKIAogICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZSgoeXl2
c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpOwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0g
eyAoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgdHlwZSB9OwotICAgICAgICAoeXl2YWwu
aW50ZXJtKS5saW5lID0gKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lOwogICAgICAgICAoeXl2
YWwuaW50ZXJtKS5wYXJhbSA9IHBhcmFtOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0g
IGNhc2UgODI6CisgIGNhc2UgODM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0g
KHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJy
b3JDaGVjaygoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pLmxpbmUsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFsoMikgLSAoMyldLmludGVybS5xdWFsaWZp
ZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBh
cmFtRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFsoMikgLSAoMyldLmludGVybS5xdWFsaWZpZXIpLCAo
eXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDgzOgorICBjYXNlIDg0Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVy
bSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjaygoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0pLmxpbmUsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFs
aWZpZXIpLCAqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAgICAg
aWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMild
KSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICooeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmlu
dGVybSkubGluZSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlm
aWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5w
YXJhbUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCBFdnFUZW1wb3JhcnksICh5eXZzcFso
MSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDg0OgorICBjYXNlIDg1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5w
YXJhbUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKS5saW5lLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0u
cXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0ucXVhbGlm
aWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4NToKKyAgY2Fz
ZSA4NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hl
Y2soKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0udHlwZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjaygoeXlsc3BbKDIp
IC0gKDIpXSksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAqKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0pLmxpbmUsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29u
dGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgRXZxVGVtcG9yYXJ5LCAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0u
dHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA4NjoKKyAgY2FzZSA4NzoKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW47Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA4NzoKKyAgY2FzZSA4ODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5xdWFsaWZpZXIpID0gRXZxSW47Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA4ODoKKyAgY2FzZSA4OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZp
ZXIpID0gRXZxT3V0OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgODk6Cisg
IGNhc2UgOTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2
cUluT3V0OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTA6CisgIGNhc2Ug
OTE6CiAKICAgICB7CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkpIH07CiAgICAgICAgICh5eXZhbC5pbnRlcm0p
LnBhcmFtID0gcGFyYW07Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5MToK
KyAgY2FzZSA5MjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTI6
CisgIGNhc2UgOTM6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0pLnR5cGUudHlwZSA9PSBFYnRJbnZhcmlhbnQgJiYgISh5eXZzcFsoMykgLSAoMyldLmxleCku
c3ltYm9sKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDMp
IC0gKDMpXS5sZXgpLmxpbmUsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52
YXJpYW50IiwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAidW5kZWNsYXJlZCBpZGVu
dGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICh5eXZzcFsoMykgLSAoMyldLmxleCkuc3Ry
aW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
fQogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0pLnR5cGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUp
OwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVybU5v
ZGUsIHN5bWJvbCwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgVEludGVy
bVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5
dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bSkudHlwZSksICh5eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmlu
dGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZz
cFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgc3ltYm9sLCAoeXlsc3BbKDMpIC0gKDMp
XSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAoeXl2YWwuaW50ZXJtKS50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygz
KSAtICgzKV0pLCAoeXl2YWwuaW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmlu
ZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9u
SW5pdENvbnN0RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSksICooeXl2c3BbKDMpIC0gKDMp
XS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwot
ICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0u
bGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0p
LnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNr
KCh5eWxzcFsoMykgLSAoMyldKSwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2
YWwuaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIGlmIChzeW1ib2wgJiYgdmFyaWFibGUpCiAgICAgICAgICAgICBzeW1ib2wt
PnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDkzOgorICBjYXNlIDk0OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4
dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUs
ICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAt
ICg1KV0uaW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAot
ICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0g
KDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygx
KSAtICg1KV0uaW50ZXJtKS50eXBlLCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbklu
aXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAqKHl5dnNwWygzKSAtICg1KV0u
bGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgdHJ1ZSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAo
eXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5
cGVFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1
KV0uaW50ZXJtKS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5
dnNwWyg0KSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUp
KQorICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0g
KDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJyYXlR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0u
aW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUuc2V0QXJy
YXkodHJ1ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlOwotICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDUpXS5sZXgpLmxpbmUs
ICooeXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJt
KS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNo
ZWNrKCh5eWxzcFsoNCkgLSAoNSldKSwgKih5eXZzcFsoMykgLSAoNSldLmxleCkuc3RyaW5nLCAo
eXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDk0OgorICBjYXNlIDk1OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4
dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDYpXS5sZXgpLmxpbmUs
ICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNildKSwgKHl5dnNwWygxKSAt
ICg2KV0uaW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAot
ICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0g
KDYpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgKHl5dnNwWygx
KSAtICg2KV0uaW50ZXJtKS50eXBlLCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbklu
aXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg2KV0pLCAqKHl5dnNwWygzKSAtICg2KV0u
bGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSwgdHJ1ZSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAo
eXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5
cGVFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNildLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg2
KV0uaW50ZXJtKS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5
dnNwWyg0KSAtICg2KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUp
KQorICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0g
KDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJyYXlR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKHl5dnNwWygxKSAtICg2KV0u
aW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNildLmxleCkubGluZSwgKHl5dnNwWyg1
KSAtICg2KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQorICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAoeXl2c3Bb
KDUpIC0gKDYpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dnNwWygxKSAtICg2KV0uaW50
ZXJtKS50eXBlLnNldEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2
YXJpYWJsZSA9IDA7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5
eXZzcFsoNCkgLSAoNildLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5n
LCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAqKHl5dnNw
WygzKSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSwg
dmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgIFRUeXBlIHR5cGUgPSBUVHlwZSgoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpOwog
ICAgICAgICAgICAgdHlwZS5zZXRBcnJheVNpemUoc2l6ZSk7Ci0gICAgICAgICAgICAoeXl2YWwu
aW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3Jl
Z2F0ZSgoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLmludGVybU5vZGUsIGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAs
ICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5dnNwWygzKSAtICg2KV0u
bGV4KS5saW5lKSwgKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93
QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoNildLmludGVybSkuaW50ZXJtTm9kZSwgY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgp
IDogMCwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCB0eXBlLCAoeXlsc3BbKDMpIC0g
KDYpXSkpLCAoeXlsc3BbKDMpIC0gKDYpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA5NToKKyAgY2FzZSA5NjoKIAogICAgIHsKLSAgICAgICAgaWYg
KGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4
KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29u
dGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5eXZz
cFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0p
OwogCiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRl
eHQtPmV4ZWN1dGVJbml0aWFsaXplcigoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2
c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBl
LCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkp
IHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWygzKSAt
ICg1KV0pLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSld
LmludGVybSkudHlwZSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IGludGVybU5vZGUpKSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gYnVpbGQgdGhl
IGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICAgICAgICAgLy8KICAgICAgICAgICAg
IGlmIChpbnRlcm1Ob2RlKQotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0pLmludGVybU5vZGUsIGludGVybU5vZGUsICh5eXZzcFsoNCkgLSAoNSldLmxleCkubGlu
ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoNSldLmludGVybSkuaW50ZXJt
Tm9kZSwgaW50ZXJtTm9kZSwgKHl5bHNwWyg0KSAtICg1KV0pKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAoeXl2c3Bb
KDEpIC0gKDUpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0p
LmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDk2OgorICBjYXNlIDk3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpOwotICAgICAgICAoeXl2
YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFn
Z3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlw
ZSkubGluZSksICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsKLSAgICA7fQor
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIi
LCBUVHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkpLCAoeXlsc3BbKDEpIC0gKDEp
XSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDk3
OgorICBjYXNlIDk4OgogCiAgICAgewotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDIpXS5sZXgp
LnN0cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpKSwgKHl5dnNwWygy
KSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXl2c3Bb
KDIpIC0gKDIpXS5sZXgpLmxpbmUpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDIpXS5sZXgp
LnN0cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpKSwgKHl5bHNwWygy
KSAtICgyKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3BbKDIpIC0gKDIp
XSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAoeXl2YWwuaW50ZXJtKS50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygy
KSAtICgyKV0pLCAoeXl2YWwuaW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmlu
ZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9u
SW5pdENvbnN0RXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIp
XS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpOwogCiAgICAgICAgIFRW
YXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9y
Q2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4
KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgKih5eXZzcFsoMikg
LSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1i
b2wpCiAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsK
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDk4OgorICBjYXNlIDk5OgogCiAg
ICAgewotICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUs
ICJ1bnNpemVkIGFycmF5IGRlY2xhcmF0aW9ucyBub3Qgc3VwcG9ydGVkIiwgKHl5dnNwWygyKSAt
ICg0KV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbKDIpIC0gKDQpXSksICJ1bnNpemVkIGFycmF5IGRlY2xhcmF0aW9ucyBub3Qgc3VwcG9ydGVk
IiwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJp
bmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSksICh5eXZzcFsoMikgLSAo
NCldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAt
ICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJp
bmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSksICh5eWxzcFsoMikgLSAo
NCldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5bHNwWygyKSAtICg0KV0pKTsK
ICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50
eXBlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDk5OgorICBjYXNlIDEw
MDoKIAogICAgIHsKICAgICAgICAgVFR5cGUgdHlwZSA9IFRUeXBlKCh5eXZzcFsoMSkgLSAoNSld
LmludGVybS50eXBlKSk7CiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFso
NCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAoeXl2c3BbKDQp
IC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwotICAgICAg
ICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KDAsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5dnNwWygyKSAtICg1
KV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXl2c3BbKDIpIC0g
KDUpXS5sZXgpLmxpbmUpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmlu
ZywgdHlwZSwgKHl5bHNwWygyKSAtICg1KV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9s
LCAoeXlsc3BbKDIpIC0gKDUpXSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0
cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2
c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0
UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSld
LmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAg
ICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0u
bGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAo
NSldLmludGVybS50eXBlKSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29u
c3RFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKih5eXZzcFsoMikgLSAoNSldLmxleCku
c3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSksIHRydWUpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAo
eXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFy
cmF5VHlwZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEp
IC0gKDUpXS5pbnRlcm0udHlwZSkpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVj
aygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50
eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eWxzcFso
MykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSB8fCBjb250ZXh0LT5h
cnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0g
KDUpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2
c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCisgICAgICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5
eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAo
NSldLmludGVybS50eXBlKS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgICAgIFRWYXJp
YWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JD
aGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgp
LnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLCB2YXJpYWJsZSkpCisgICAg
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwg
Kih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0u
dHlwZSksIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgICAgIHN5bWJv
bC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgICAgICB9Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDA6CisgIGNhc2UgMTAxOgogCiAgICAgewotICAg
ICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0g
KDQpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCisgICAgICAg
IGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNCld
KSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKIAogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLnR5cGUpOwogCiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwot
ICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigoeXl2c3BbKDIpIC0gKDQp
XS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbKDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgaW50ZXJtTm9kZSkpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlh
bGl6ZXIoKHl5bHNwWygyKSAtICg0KV0pLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcs
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CiAgICAgICAgIC8vCiAgICAgICAgIC8v
IEJ1aWxkIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICAgICAvLwogICAgICAgICAg
ICAgaWYoaW50ZXJtTm9kZSkKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1B
Z2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2Rl
LCAoeXl2c3BbKDMpIC0gKDQpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVn
YXRlKGludGVybU5vZGUsICh5eWxzcFsoMykgLSAoNCldKSk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0KLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDEwMToKKyAgY2FzZSAxMDI6CiAKICAgICB7Ci0g
ICAgICAgIFZFUlRFWF9PTkxZKCJpbnZhcmlhbnQgZGVjbGFyYXRpb24iLCAoeXl2c3BbKDEpIC0g
KDIpXS5sZXgpLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygo
eXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgIFZFUlRFWF9PTkxZKCJpbnZh
cmlhbnQgZGVjbGFyYXRpb24iLCAoeXlsc3BbKDEpIC0gKDIpXSkpOworICAgICAgICBpZiAoY29u
dGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUuc2V0QmFz
aWMoRWJ0SW52YXJpYW50LCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXl2c3BbKDIpIC0gKDIp
XS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlLnNldEJhc2ljKEVidElu
dmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgKHl5bHNwWygyKSAtICgyKV0pKTsKICAg
ICAgICAgaWYgKCEoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN5bWJvbCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAidW5k
ZWNsYXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICh5eXZzcFsoMikgLSAo
MildLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMikgLSAoMildKSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZh
cmlhbnQiLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQog
ICAgICAgICB7Ci0gICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZywg
VFR5cGUoKHl5dmFsLmludGVybSkudHlwZSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7
Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eXZzcFsoMikgLSAoMildLmxleCku
bGluZSk7CisgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZywgVFR5
cGUoKHl5dmFsLmludGVybSkudHlwZSksICh5eWxzcFsoMikgLSAoMildKSk7CisgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
bWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eWxzcFsoMikgLSAoMildKSk7CiAgICAgICAgIH0KLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDEwMjoKKyAgY2FzZSAxMDM6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0udHlwZSk7CiAKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5h
cnJheSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLnR5cGUpLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7Cisg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJub3Qgc3VwcG9y
dGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXko
ZmFsc2UpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
MDM6CisgIGNhc2UgMTA0OgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtLnR5cGUpLmFycmF5KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDIpIC0gKDIpXS5pbnRlcm0udHlwZSkubGluZSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xh
c3MgYXJyYXkiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMild
KSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMildLmludGVybS50
eXBlKS5zZXRBcnJheShmYWxzZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoKHl5dnNwWygx
KSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgJiYKICAgICAg
ICAgICAgICgoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9PSBFYnRCb29sIHx8
ICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS50eXBlID09IEVidEludCkpIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS5saW5l
LCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZzcFsoMSkg
LSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMikgLSAoMildKSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxp
ZmllclN0cmluZygoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCgo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8
fCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyID09IEV2cVZhcnlpbmdP
dXQpICYmCiAgICAgICAgICAgICAoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUg
PT0gRWJ0Qm9vbCB8fCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9PSBFYnRJ
bnQpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5pbnRl
cm0udHlwZSkubGluZSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmlu
ZygoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJjYW5ub3QgYmUgYm9vbCBvciBp
bnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1
YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlw
ZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlmaWVyID0gKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcjsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAotICBjYXNlIDEwNDoKKyAgY2FzZSAxMDU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQ29uc3QsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRWb2lkLCBFdnFDb25zdCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxMDU6CisgIGNhc2UgMTA2OgogCiAgICAgewotICAgICAgICBWRVJURVhfT05M
WSgiYXR0cmlidXRlIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgaWYg
KGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJhdHRyaWJ1dGUiKSkKKyAgICAg
ICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAg
IGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwgY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0cmlidXRlIikpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFz
aWMoRWJ0Vm9pZCwgRXZxQXR0cmlidXRlLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwot
ICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZx
QXR0cmlidXRlLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVhazsKIAotICBj
YXNlIDEwNjoKKyAgY2FzZSAxMDc6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9i
YWxFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQorICAgICAgICBpZiAoY29udGV4dC0+
Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSwgInZhcnlpbmciKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gU0hfVkVSVEVYX1NIQURF
UikKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZx
VmFyeWluZ091dCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ091dCwgKHl5bHNw
WygxKSAtICgxKV0pKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nSW4sICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7Ci0gICAgO30KKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFz
aWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAg
ICBicmVhazsKIAotICBjYXNlIDEwNzoKKyAgY2FzZSAxMDg6CiAKICAgICB7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwg
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmci
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgy
KV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFy
eWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29u
dGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJURVhfU0hBREVSKQotICAgICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAo
eXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXlsc3BbKDEp
IC0gKDIpXSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdJbiwgKHl5dnNwWygxKSAtICgy
KV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nSW4sICh5eWxzcFsoMSkgLSAoMild
KSk7CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTA4OgorICBjYXNlIDEwOToKIAogICAg
IHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ1bmlm
b3JtIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eWxzcFsoMSkg
LSAoMSldKSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVVuaWZvcm0sICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRWb2lkLCBFdnFVbmlmb3JtLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDEwOToKKyAgY2FzZSAxMTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSk7CiAKICAgICAgICAg
aWYgKCh5eXZhbC5pbnRlcm0udHlwZSkucHJlY2lzaW9uID09IEVicFVuZGVmaW5lZCkgewogICAg
ICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24gPSBjb250ZXh0LT5zeW1ib2xU
YWJsZS5nZXREZWZhdWx0UHJlY2lzaW9uKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50
eXBlKTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKCh5eXZz
cFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lLCAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNp
c2lvbiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKSB7CisgICAgICAgICAg
ICBpZiAoY29udGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksICh5
eXZhbC5pbnRlcm0udHlwZSkucHJlY2lzaW9uLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlw
ZSkudHlwZSkpIHsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDEx
MDoKKyAgY2FzZSAxMTE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAo
eXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkucHJlY2lzaW9uID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnByZWNpc2lvbik7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTE6CisgIGNhc2UgMTEyOgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBIaWdoOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTEyOgorICBjYXNlIDExMzoKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwTWVkaXVtOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTEzOgorICBjYXNlIDExNDoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwTG93OwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTE0OgorICBjYXNlIDExNToKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDExNToKKyAgY2FzZSAxMTY6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
dHlwZSk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5dnNw
WygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQor
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQp
XSksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0gICAg
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQp
XS5sZXgpLmxpbmUsICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBz
aXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxz
cFsoMikgLSAoNCldKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAgICAgIH0KLSAg
ICA7fQotICAgIGJyZWFrOwotCi0gIGNhc2UgMTE2OgotCi0gICAgewotICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0Vm9pZCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDExNzoKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVi
dEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgKHl5bHNwWygx
KSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMTg6CiAKICAgICB7CiAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7
Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwg
cXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
MTk6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXl2c3BbKDEpIC0g
KDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDEyMDoKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFs
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTIxOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQs
IHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIpOworICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDEyMjoKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFs
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMjM6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXl2
c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEFnZ3JlZ2F0ZSgyKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxMjQ6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXl2c3BbKDEp
IC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3Jl
Z2F0ZSgzKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVi
dEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QWdncmVnYXRlKDIpOworICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyNToK
IAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQp
OwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwg
cXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRBZ2dyZWdhdGUoMyk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI2OgogCiAgICAg
ewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKLSAgICA7
fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5
eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVn
YXRlKDQpOworICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyNzoKIAogICAgIHsKICAgICAg
ICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
ID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7Ci0gICAgO30KKyAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIpOwor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyODoKIAogICAgIHsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidEludCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOworICAgIH0KICAg
ICBicmVhazsKIAogICBjYXNlIDEyOToKIAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFko
Im1hdDIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
RmxvYXQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIsIHRydWUpOwotICAgIDt9CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEp
XSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzA6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJtYXQzIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzLCB0cnVlKTsKLSAgICA7fQorICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEp
IC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyLCB0
cnVlKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzE6CiAKICAgICB7Ci0gICAgICAg
IEZSQUdfVkVSVF9PTkxZKCJtYXQ0IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUp
OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0LCB0cnVlKTsKLSAg
ICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFs
LCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFn
Z3JlZ2F0ZSgzLCB0cnVlKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzI6CiAKICAg
ICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyMkQiLCAoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlcjJELCBxdWFsLCAoeXl2c3Bb
KDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQsIHRydWUpOworICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDEzMzoKIAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNh
bXBsZXJDdWJlIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFNhbXBsZXJDdWJlLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAg
IDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlcjJELCBx
dWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEz
NDoKIAogICAgIHsKKyAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXJDdWJlLCBxdWFsLCAoeXlsc3Bb
KDEpIC0gKDEpXSkpOworICAgIH0KKyAgICBicmVhazsKKworICBjYXNlIDEzNToKKworICAgIHsK
ICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX0VHTF9pbWFn
ZV9leHRlcm5hbCIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0g
KDEpXS5sZXgpLmxpbmUsICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXJFeHRlcm5hbE9FUyIp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAidW5zdXBw
b3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckV4
dGVybmFsT0VTIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFNhbXBsZXJFeHRlcm5hbE9FUywgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5l
KTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBs
ZXJFeHRlcm5hbE9FUywgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxMzU6CisgIGNhc2UgMTM2OgogCiAgICAgewogICAgICAgICBpZiAoIWNv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfdGV4dHVyZV9yZWN0YW5nbGUiKSkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAi
dW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CisgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXIy
RFJlY3QiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAg
ICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEUmVjdCIsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyMkRSZWN0LCBxdWFsLCAoeXl2c3Bb
KDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsK
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzY6CisgIGNhc2UgMTM3OgogCiAgICAgewot
ICAgICAgICBGUkFHX1ZFUlRfT05MWSgic3RydWN0IiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LnR5cGUpLmxpbmUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLnR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnF1YWxpZmll
ciA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDEzNzoKKyAg
Y2FzZSAxMzg6CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC0zOTk2LDg1ICs0MDU4LDg2IEBAIHl5
cmVkdWNlOgogICAgICAgICAvLwogICAgICAgICBUVHlwZSYgc3RydWN0dXJlID0gc3RhdGljX2Nh
c3Q8VFZhcmlhYmxlKj4oKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zeW1ib2wpLT5nZXRUeXBlKCk7
CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCku
bGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBx
dWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnVz
ZXJEZWYgPSAmc3RydWN0dXJlOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTM4OgorICBjYXNlIDEzOToKIAotICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFy
YXRpb24oKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgzKV0ubGV4
KS5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IDt9CisgICAgeyBpZiAoY29udGV4dC0+ZW50
ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXlsc3BbKDIpIC0gKDMpXSksICooeXl2c3BbKDIpIC0gKDMp
XS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTM5OgorICBjYXNlIDE0MDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2Vy
dmVkRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0g
KDYpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hl
Y2soKHl5bHNwWygyKSAtICg2KV0pLCAqKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRUeXBlKiBzdHJ1Y3R1
cmUgPSBuZXcgVFR5cGUoKHl5dnNwWyg1KSAtICg2KV0uaW50ZXJtLnR5cGVMaXN0KSwgKih5eXZz
cFsoMikgLSAoNildLmxleCkuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5l
dyBUVHlwZShuZXcgVFN0cnVjdHVyZSgoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmluZywgKHl5
dnNwWyg1KSAtICg2KV0uaW50ZXJtLmZpZWxkTGlzdCkpKTsKICAgICAgICAgVFZhcmlhYmxlKiB1
c2VyVHlwZURlZiA9IG5ldyBUVmFyaWFibGUoKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcs
ICpzdHJ1Y3R1cmUsIHRydWUpOwogICAgICAgICBpZiAoISBjb250ZXh0LT5zeW1ib2xUYWJsZS5p
bnNlcnQoKnVzZXJUeXBlRGVmKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNw
WygyKSAtICg2KV0ubGV4KS5saW5lLCAicmVkZWZpbml0aW9uIiwgKHl5dnNwWygyKSAtICg2KV0u
bGV4KS5zdHJpbmctPmNfc3RyKCksICJzdHJ1Y3QiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMikgLSAoNildKSwgInJlZGVmaW5pdGlvbiIsICh5eXZzcFsoMikgLSAoNild
LmxleCkuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg2KV0ubGV4KS5saW5lKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBv
cmFyeSwgKHl5bHNwWygxKSAtICg2KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS51
c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5leGl0U3RydWN0RGVjbGFyYXRp
b24oKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE0MDoKKyAgY2FzZSAx
NDE6CiAKLSAgICB7IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eXZzcFso
MikgLSAoMildLmxleCkubGluZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkgY29u
dGV4dC0+cmVjb3ZlcigpOyA7fQorICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFy
YXRpb24oKHl5bHNwWygyKSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcp
KSBjb250ZXh0LT5yZWNvdmVyKCk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDE0MToKKyAgY2Fz
ZSAxNDI6CiAKICAgICB7Ci0gICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUoKHl5
dnNwWyg0KSAtICg1KV0uaW50ZXJtLnR5cGVMaXN0KSwgVFN0cmluZygiIikpOwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAoeXl2
c3BbKDEpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3
IFRUeXBlKG5ldyBUU3RydWN0dXJlKE5ld1Bvb2xUU3RyaW5nKCIiKSwgKHl5dnNwWyg0KSAtICg1
KV0uaW50ZXJtLmZpZWxkTGlzdCkpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5bHNwWygxKSAtICg1KV0pKTsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250
ZXh0LT5leGl0U3RydWN0RGVjbGFyYXRpb24oKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAotICBjYXNlIDE0MjoKKyAgY2FzZSAxNDM6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZUxpc3QpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGVMaXN0KTsKLSAgICA7
fQorICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uZmllbGRMaXN0KTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDM6CisgIGNh
c2UgMTQ0OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9ICh5eXZz
cFsoMSkgLSAoMildLmludGVybS50eXBlTGlzdCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KS0+c2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgKHl5dmFsLmlu
dGVybS50eXBlTGlzdCktPnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCgqKHl5
dmFsLmludGVybS50eXBlTGlzdCkpW2pdLnR5cGUtPmdldEZpZWxkTmFtZSgpID09ICgqKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKCooeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0udHlwZUxpc3QpKVtpXS5saW5lLCAiZHVwbGljYXRlIGZpZWxkIG5hbWUgaW4gc3RydWN0
dXJlOiIsICJzdHJ1Y3QiLCAoKih5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCkpW2ld
LnR5cGUtPmdldEZpZWxkTmFtZSgpLmNfc3RyKCkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmZp
ZWxkTGlzdCkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZmllbGRMaXN0KTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uZmllbGRMaXN0
KS0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQgPSAoKih5eXZzcFso
MikgLSAoMildLmludGVybS5maWVsZExpc3QpKVtpXTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgKHl5dmFsLmludGVybS5maWVsZExpc3QpLT5zaXplKCk7ICsraikgeworICAg
ICAgICAgICAgICAgIGlmICgoKih5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSlbal0tPm5hbWUoKSA9
PSBmaWVsZC0+bmFtZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMikgLSAoMildKSwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAi
c3RydWN0IiwgZmllbGQtPm5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5wdXNoX2JhY2soKCooeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0udHlwZUxpc3QpKVtpXSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmZp
ZWxkTGlzdCktPnB1c2hfYmFjayhmaWVsZCk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAotICBjYXNlIDE0NDoKKyAgY2FzZSAxNDU6CiAKICAgICB7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZUxpc3QpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnR5cGVMaXN0
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpID0gKHl5dnNwWygyKSAtICgzKV0u
aW50ZXJtLmZpZWxkTGlzdCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNoZWNr
KCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5saW5lLCAoKih5eXZzcFsoMikgLSAoMyld
LmludGVybS50eXBlTGlzdCkpWzBdLnR5cGUtPmdldEZpZWxkTmFtZSgpLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkpKSB7CisgICAgICAgIGlmIChjb250ZXh0LT52b2lkRXJyb3JDaGVj
aygoeXlsc3BbKDEpIC0gKDMpXSksICgqKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmZpZWxkTGlz
dCkpWzBdLT5uYW1lKCksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpIHsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8ICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5zaXplKCk7ICsraSkg
eworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICh5eXZhbC5pbnRlcm0uZmll
bGRMaXN0KS0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBD
YXJlZnVsIG5vdCB0byByZXBsYWNlIGFscmVhZHkga25vd24gYXNwZWN0cyBvZiB0eXBlLCBsaWtl
IGFycmF5LW5lc3MKICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICBUVHlwZSogdHlwZSA9ICgq
KHl5dmFsLmludGVybS50eXBlTGlzdCkpW2ldLnR5cGU7CisgICAgICAgICAgICBUVHlwZSogdHlw
ZSA9ICgqKHl5dmFsLmludGVybS5maWVsZExpc3QpKVtpXS0+dHlwZSgpOwogICAgICAgICAgICAg
dHlwZS0+c2V0QmFzaWNUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS50eXBlKTsK
ICAgICAgICAgICAgIHR5cGUtPnNldE5vbWluYWxTaXplKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKS5zaXplKTsKICAgICAgICAgICAgIHR5cGUtPnNldE1hdHJpeCgoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkubWF0cml4KTsKQEAgLTQwODIsNDM3ICs0MTQ1LDQzMiBAQCB5eXJl
ZHVjZToKIAogICAgICAgICAgICAgLy8gZG9uJ3QgYWxsb3cgYXJyYXlzIG9mIGFycmF5cwogICAg
ICAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgICAgIGlmIChjb250
ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5s
aW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICAgICAgICAgIGlm
IChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMyldKSwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAo
MyldLmludGVybS50eXBlKS5hcnJheSkKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRBcnJheVNp
emUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLmFycmF5U2l6ZSk7Ci0gICAgICAgICAg
ICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnVzZXJEZWYpIHsKKyAgICAgICAg
ICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkudXNlckRlZikKICAgICAgICAg
ICAgICAgICB0eXBlLT5zZXRTdHJ1Y3QoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnVz
ZXJEZWYtPmdldFN0cnVjdCgpKTsKLSAgICAgICAgICAgICAgICB0eXBlLT5zZXRUeXBlTmFtZSgo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkudXNlckRlZi0+Z2V0VHlwZU5hbWUoKSk7Ci0g
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3ROZXN0aW5nRXJy
b3JDaGVjaygoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubGluZSwgKnR5cGUpKSB7Cisg
ICAgICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soKHl5bHNwWygx
KSAtICgzKV0pLCAqKCooeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkpW2ldKSkKICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE0NToKKyAgY2FzZSAxNDY6CiAKICAgICB7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpID0gTmV3UG9vbFRUeXBlTGlzdCgpOwot
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+cHVzaF9iYWNrKCh5eXZzcFsoMSkgLSAo
MSldLmludGVybS50eXBlTGluZSkpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmll
bGRMaXN0KSA9IE5ld1Bvb2xURmllbGRMaXN0KCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmll
bGRMaXN0KS0+cHVzaF9iYWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5maWVsZCkpOworICAg
IH0KICAgICBicmVhazsKIAotICBjYXNlIDE0NjoKKyAgY2FzZSAxNDc6CiAKICAgICB7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5wdXNoX2JhY2soKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLnR5cGVMaW5lKSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExp
c3QpLT5wdXNoX2JhY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmZpZWxkKSk7CisgICAgfQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ3OgorICBjYXNlIDE0ODoKIAogICAgIHsKLSAgICAgICAg
aWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmUsICooeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0
LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCAqKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJw
VW5kZWZpbmVkKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSkubGluZSA9ICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSku
dHlwZS0+c2V0RmllbGROYW1lKCooeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZyk7Ci0gICAg
O30KKyAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVk
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5eXZz
cFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
NDg6CisgIGNhc2UgMTQ5OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRF
cnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoNCldLmxleCkubGluZSwgKih5eXZzcFsoMSkgLSAoNCld
LmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygo
eXlsc3BbKDEpIC0gKDQpXSksICooeXl2c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZykpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
TGluZSkudHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGVMaW5lKS5saW5lID0gKHl5dnNwWygxKSAtICg0KV0ubGV4KS5saW5l
OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlLT5zZXRGaWVsZE5hbWUoKih5
eXZzcFsoMSkgLSAoNCldLmxleCkuc3RyaW5nKTsKLQotICAgICAgICBpbnQgc2l6ZTsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4
KS5saW5lLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkp
CisgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRUeXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7
CisgICAgICAgIGludCBzaXplID0gMDsKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVy
cm9yQ2hlY2soKHl5bHNwWygzKSAtICg0KV0pLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLnR5cGUtPnNldEFycmF5U2l6ZShzaXplKTsK
LSAgICA7fQotICAgIGJyZWFrOworICAgICAgICB0eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7CiAK
LSAgY2FzZSAxNDk6Ci0KLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgICAgICAoeXl2
YWwuaW50ZXJtLmZpZWxkKSA9IG5ldyBURmllbGQodHlwZSwgKHl5dnNwWygxKSAtICg0KV0ubGV4
KS5zdHJpbmcpOworICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE1MDoKIAotICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1O
b2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxNTE6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBi
cmVhazsKIAogICBjYXNlIDE1MjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtQWdncmVn
YXRlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTUzOgogCi0gICAgeyAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQor
ICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1Ob2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTU0OgogCi0gICAgeyAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5v
ZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1Ob2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTU1OgogCi0g
ICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybU5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MTU2OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMTU3OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTU4OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3Jl
Z2F0ZSkgPSAwOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTU5
OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IDt9CisgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAwOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjA6
CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyA7fQorICAgIHsgY29udGV4dC0+
c3ltYm9sVGFibGUucHVzaCgpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjE6CiAKKyAgICB7
IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyB9CisgICAgYnJlYWs7CisKKyAgY2FzZSAxNjI6
CisKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtQWdn
cmVnYXRlKSAhPSAwKSB7CiAgICAgICAgICAgICAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50
ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAgICAgKHl5dnNwWygz
KSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldEVuZExpbmUoKHl5dnNwWyg1KSAt
ICg1KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZzcFsoMykgLSAoNSldLmludGVybS5p
bnRlcm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykpOwogICAgICAgICB9CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9ICh5eXZzcFsoMykgLSAoNSldLmludGVybS5p
bnRlcm1BZ2dyZWdhdGUpOwotICAgIDt9Ci0gICAgYnJlYWs7Ci0KLSAgY2FzZSAxNjI6Ci0KLSAg
ICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtTm9kZSk7IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTYzOgogCi0gICAg
eyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybU5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY0
OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IDt9CisgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUp
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjU6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRh
YmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtLmludGVybU5vZGUpOyA7fQorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgp
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjY6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRh
YmxlLnB1c2goKTsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUp
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjc6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRh
YmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtLmludGVybU5vZGUpOyA7fQorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgp
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjg6CiAKLSAgICB7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAwOwotICAgIDt9CisgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmlu
dGVybS5pbnRlcm1Ob2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY5OgogCiAgICAgewot
ICAgICAgICBpZiAoKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkpIHsK
LSAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5z
ZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtQWdncmVnYXRlKS0+c2V0RW5kTGluZSgoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUp
OwotICAgICAgICB9Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3Bb
KDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKTsKLSAgICA7fQorICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
NzA6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1Ob2RlKSwgMCk7Ci0gICAgO30KKyAgICAgICAgaWYgKCh5eXZzcFsoMikgLSAoMyld
LmludGVybS5pbnRlcm1BZ2dyZWdhdGUpKSB7CisgICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOworICAgICAgICAg
ICAgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldExpbmUoKHl5
bG9jKSk7CisgICAgICAgIH0KKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5
eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOworICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDE3MToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1B
Z2dyZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygx
KSAtICgyKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSksICh5eXZzcFsoMikgLSAoMildLmludGVy
bS5pbnRlcm1Ob2RlKSwgMCk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1B
Z2dyZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsb2MpKTsKKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxNzI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAwOyA7
fQorICAgIHsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmlu
dGVybUFnZ3JlZ2F0ZSksICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5
bG9jKSk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTczOgogCi0gICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gc3RhdGljX2Nhc3Q8VEludGVybU5vZGUqPigoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gMDsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTc0OgogCisgICAgeyAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gc3RhdGljX2Nhc3Q8VEludGVybU5vZGUqPigoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7IH0KKyAgICBicmVhazsKKwor
ICBjYXNlIDE3NToKKwogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNr
KCh5eXZzcFsoMSkgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5
bHNwWygxKSAtICg1KV0pLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5eXZz
cFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDUpIC0gKDUpXS5p
bnRlcm0ubm9kZVBhaXIpLCAoeXl2c3BbKDEpIC0gKDUpXS5sZXgpLmxpbmUpOwotICAgIDt9Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU2VsZWN0aW9uKCh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0ubm9kZVBhaXIpLCAoeXlsc3BbKDEpIC0gKDUpXSkpOwor
ICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE3NToKKyAgY2FzZSAxNzY6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybU5vZGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2Rl
MiA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAotICBjYXNlIDE3NjoKKyAgY2FzZSAxNzc6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybU5vZGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMiA9IDA7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzc6CisgIGNhc2UgMTc4Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgaWYgKGNvbnRleHQt
PmJvb2xFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRMaW5lKCksICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDE3ODoKKyAgY2FzZSAxNzk6CiAKICAgICB7CiAgICAgICAgIFRJbnRlcm1O
b2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJy
b3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKCh5eWxzcFsoMikgLSAoNCldKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJv
b2xFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5
eWxzcFsoMikgLSAoNCldKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1
dGVJbml0aWFsaXplcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0g
KDQpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3Bb
KDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpCisgICAgICAg
IGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eWxzcFsoMikgLSAoNCldKSwgKih5
eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlw
ZSksICh5eXZzcFsoNCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2Rl
KSkKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFso
NCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IDA7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAotICBjYXNlIDE3OToKKyAgY2FzZSAxODA6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxl
LnB1c2goKTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyA7fQorICAgIHsgY29udGV4dC0+
c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0KICAgICBi
cmVhazsKIAotICBjYXNlIDE4MDoKKyAgY2FzZSAxODE6CiAKICAgICB7CiAgICAgICAgIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLnBvcCgpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BXaGlsZSwgMCwgKHl5dnNwWyg0
KSAtICg2KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIDAsICh5eXZzcFsoNikgLSAoNildLmlu
dGVybS5pbnRlcm1Ob2RlKSwgKHl5dnNwWygxKSAtICg2KV0ubGV4KS5saW5lKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29w
KEVMb29wV2hpbGUsIDAsICh5eXZzcFsoNCkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAwLCAoeXl2c3BbKDYpIC0gKDYpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoMSkgLSAo
NildKSk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAotICBjYXNlIDE4MToKKyAgY2FzZSAxODI6CiAKLSAgICB7ICsrY29u
dGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KKyAgICB7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdM
ZXZlbDsgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTgyOgorICBjYXNlIDE4MzoKIAogICAgIHsK
LSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eXZzcFsoOCkgLSAoOCldLmxl
eCkubGluZSwgKHl5dnNwWyg2KSAtICg4KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAg
ICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWyg4KSAtICg4KV0pLCAoeXl2
c3BbKDYpIC0gKDgpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRG9XaGlsZSwgMCwgKHl5dnNwWyg2KSAt
ICg4KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIDAsICh5eXZzcFsoMykgLSAoOCldLmludGVy
bS5pbnRlcm1Ob2RlKSwgKHl5dnNwWyg0KSAtICg4KV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVM
b29wRG9XaGlsZSwgMCwgKHl5dnNwWyg2KSAtICg4KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IDAsICh5eXZzcFsoMykgLSAoOCldLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bHNwWyg0KSAtICg4
KV0pKTsKICAgICAgICAgLS1jb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTgzOgorICBjYXNlIDE4NDoKIAotICAgIHsgY29udGV4
dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IDt9Cisg
ICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdM
ZXZlbDsgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg0OgorICBjYXNlIDE4NToKIAogICAgIHsK
ICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcEZvciwg
KHl5dnNwWyg0KSAtICg3KV0uaW50ZXJtLmludGVybU5vZGUpLCByZWludGVycHJldF9jYXN0PFRJ
bnRlcm1UeXBlZCo+KCh5eXZzcFsoNSkgLSAoNyldLmludGVybS5ub2RlUGFpcikubm9kZTEpLCBy
ZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCh5eXZzcFsoNSkgLSAoNyldLmludGVybS5u
b2RlUGFpcikubm9kZTIpLCAoeXl2c3BbKDcpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5
eXZzcFsoMSkgLSAoNyldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcEZvciwgKHl5dnNwWyg0
KSAtICg3KV0uaW50ZXJtLmludGVybU5vZGUpLCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBl
ZCo+KCh5eXZzcFsoNSkgLSAoNyldLmludGVybS5ub2RlUGFpcikubm9kZTEpLCByZWludGVycHJl
dF9jYXN0PFRJbnRlcm1UeXBlZCo+KCh5eXZzcFsoNSkgLSAoNyldLmludGVybS5ub2RlUGFpciku
bm9kZTIpLCAoeXl2c3BbKDcpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoMSkg
LSAoNyldKSk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE4NToKKyAgY2FzZSAxODY6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODY6
CisgIGNhc2UgMTg3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTg3OgorICBjYXNlIDE4ODoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
ODg6CisgIGNhc2UgMTg5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg5Ogor
ICBjYXNlIDE5MDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9k
ZTEgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAg
KHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTIgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMTkwOgorICBjYXNlIDE5MToKIAogICAgIHsKICAgICAgICAgKHl5dmFs
LmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTIgPSAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAotICBjYXNlIDE5MToKKyAgY2FzZSAxOTI6CiAKICAgICB7CiAgICAgICAgIGlm
IChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgImNvbnRpbnVlIHN0YXRlbWVudCBv
bmx5IGFsbG93ZWQgaW4gbG9vcHMiLCAiIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXlsc3BbKDEpIC0gKDIpXSksICJjb250aW51ZSBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxv
b3BzIiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQnJhbmNoKEVPcENvbnRpbnVlLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUpOwotICAg
IDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQnJhbmNoKEVPcENvbnRpbnVlLCAoeXlsc3BbKDEpIC0gKDIpXSkpOworICAgIH0K
ICAgICBicmVhazsKIAotICBjYXNlIDE5MjoKKyAgY2FzZSAxOTM6CiAKICAgICB7CiAgICAgICAg
IGlmIChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9IDApIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgImJyZWFrIHN0YXRlbWVudCBv
bmx5IGFsbG93ZWQgaW4gbG9vcHMiLCAiIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXlsc3BbKDEpIC0gKDIpXSksICJicmVhayBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3Bz
IiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QnJhbmNoKEVPcEJyZWFrLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUpOwotICAgIDt9Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQnJhbmNoKEVPcEJyZWFrLCAoeXlsc3BbKDEpIC0gKDIpXSkpOworICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDE5MzoKKyAgY2FzZSAxOTQ6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJl
dHVybiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJu
LCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0
aW9uVHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAibm9uLXZvaWQgZnVuY3Rpb24g
bXVzdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMSkgLSAoMildKSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEg
dmFsdWUiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE5NDoKKyAgY2FzZSAx
OTU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgKHl5dnNwWygyKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMSkgLSAoMyldLmxleCkubGluZSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QnJhbmNoKEVPcFJldHVybiwgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eWxzcFsoMSkgLSAoMyldKSk7CiAgICAgICAgIGNvbnRleHQtPmZ1bmN0aW9uUmV0dXJu
c1ZhbHVlID0gdHJ1ZTsKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUt
PmdldEJhc2ljVHlwZSgpID09IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eXZzcFsoMSkgLSAoMyldLmxleCkubGluZSwgInZvaWQgZnVuY3Rpb24gY2Fubm90IHJldHVy
biBhIHZhbHVlIiwgInJldHVybiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WygxKSAtICgzKV0pLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0
dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoKihjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlKSAhPSAoeXl2c3BbKDIpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXl2c3BbKDEpIC0gKDMpXS5sZXgpLmxpbmUsICJmdW5jdGlvbiByZXR1cm4gaXMg
bm90IG1hdGNoaW5nIHR5cGU6IiwgInJldHVybiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5bHNwWygxKSAtICgzKV0pLCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0
eXBlOiIsICJyZXR1cm4iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk1OgorICBjYXNlIDE5
NjoKIAogICAgIHsKLSAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgKHl5dnNwWygxKSAtICgy
KV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgKHl5dnNwWygxKSAtICgyKV0ubGV4
KS5saW5lKTsKLSAgICA7fQorICAgICAgICBGUkFHX09OTFkoImRpc2NhcmQiLCAoeXlsc3BbKDEp
IC0gKDIpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BLaWxsLCAoeXlsc3BbKDEpIC0gKDIpXSkpOworICAg
IH0KICAgICBicmVhazsKIAotICBjYXNlIDE5NjoKKyAgY2FzZSAxOTc6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtTm9kZSk7CiAgICAgICAgIGNvbnRleHQtPnRyZWVSb290ID0gKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE5NzoKKyAg
Y2FzZSAxOTg6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKSwgMCk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5
eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bG9jKSk7CiAgICAgICAgIGNv
bnRleHQtPnRyZWVSb290ID0gKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAotICBjYXNlIDE5ODoKKyAgY2FzZSAxOTk6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTk6Cisg
IGNhc2UgMjAwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMjAwOgorICBjYXNlIDIwMToKIAogICAgIHsKICAgICAgICAgVEZ1
bmN0aW9uKiBmdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuZnVuY3Rpb247CkBA
IC00NTIxLDcgKzQ1NzksNyBAQCB5eXJlZHVjZToKICAgICAgICAgCiAgICAgICAgIGlmIChidWls
dEluKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0pLmxpbmUsICJidWlsdC1pbiBmdW5jdGlvbnMgY2Fubm90IGJlIHJlZGVmaW5l
ZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJidWlsdC1pbiBmdW5jdGlvbnMgY2Fubm90IGJlIHJl
ZGVmaW5lZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NTM1LDcgKzQ1OTMsNyBA
QCB5eXJlZHVjZToKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBUaGVuIHRoaXMgZnVu
Y3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5LgogICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgImZ1bmN0aW9uIGFs
cmVhZHkgaGFzIGEgYm9keSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJmdW5jdGlvbiBhbHJlYWR5
IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIHByZXZEZWMtPnNldERlZmlu
ZWQoKTsKQEAgLTQ1NDUsMTEgKzQ2MDMsMTEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8vCiAgICAg
ICAgIGlmIChmdW5jdGlvbi0+Z2V0TmFtZSgpID09ICJtYWluIikgewogICAgICAgICAgICAgaWYg
KGZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCAiZnVuY3Rpb24gY2Fubm90
IHRha2UgYW55IHBhcmFtZXRlcihzKSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiZnVuY3Rp
b24gY2Fubm90IHRha2UgYW55IHBhcmFtZXRlcihzKSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19z
dHIoKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNUeXBl
KCkgIT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MSkgLSAoMSldLmludGVybSkubGluZSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0
QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiIiwgZnVu
Y3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpLCAibWFpbiBmdW5jdGlvbiBj
YW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ1NzcsNyArNDYzNSw3IEBAIHl5cmVk
dWNlOgogICAgICAgICAgICAgICAgIC8vIEluc2VydCB0aGUgcGFyYW1ldGVycyB3aXRoIG5hbWUg
aW4gdGhlIHN5bWJvbCB0YWJsZS4KICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAg
IGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgqdmFyaWFibGUpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGlu
ZSwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgInJlZGVmaW5p
dGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHZhcmlhYmxl
OwogICAgICAgICAgICAgICAgIH0KQEAgLTQ1ODgsMzEgKzQ2NDYsMzIgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdn
cmVnYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbU5vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJp
YWJsZS0+Z2V0VHlwZSgpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXROYW1l
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoeXlsc3BbKDEpIC0gKDEpXSkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGlu
ZSksICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgcGFy
YW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHBhcmFtTm9kZXMs
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAoeXls
c3BbKDEpIC0gKDEpXSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRv
cihwYXJhbU5vZGVzLCBFT3BQYXJhbWV0ZXJzLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxp
bmUpOworICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3Io
cGFyYW1Ob2RlcywgRU9wUGFyYW1ldGVycywgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAg
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBwYXJhbU5vZGVzOwog
ICAgICAgICBjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsID0gMDsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAotICBjYXNlIDIwMToKKyAgY2FzZSAyMDI6CiAKICAgICB7CiAgICAgICAgIC8v
Pz8gQ2hlY2sgdGhhdCBhbGwgcGF0aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0dXJuIHR5cGUgIT0g
dm9pZCA/CiAgICAgICAgIC8vICAgTWF5IGJlIGJlc3QgZG9uZSBhcyBwb3N0IHByb2Nlc3MgcGhh
c2Ugb24gaW50ZXJtZWRpYXRlIGNvZGUKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5j
dGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQgJiYgISBjb250ZXh0LT5mdW5jdGlv
blJldHVybnNWYWx1ZSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtKS5saW5lLCAiZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWU6Iiwg
IiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigp
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgImZ1bmN0
aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlOiIsICIiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0pLmZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybU5vZGUpLCAwKTsKLSAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3Jl
Z2F0ZU9wZXJhdG9yKCh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSksIEVPcEZ1bmN0aW9uLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsICh5eXZzcFsoMykgLSAoMyldLmludGVybS5p
bnRlcm1Ob2RlKSwgKHl5bG9jKSk7CisgICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRB
Z2dyZWdhdGVPcGVyYXRvcigoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLCBFT3BGdW5jdGlvbiwg
KHl5bHNwWygxKSAtICgzKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+
Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0TmFtZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0
aW9uLT5nZXRNYW5nbGVkTmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybSkuZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKSk7CiAKQEAgLTQ2MjEsMTggKzQ2ODAsMjUg
QEAgeXlyZWR1Y2U6CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdn
cmVnYXRlKCktPnNldE9wdGltaXplKGNvbnRleHQtPnByYWdtYSgpLm9wdGltaXplKTsKICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RGVidWco
Y29udGV4dC0+cHJhZ21hKCkuZGVidWcpOwogCi0gICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtTm9kZSkgJiYgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5v
ZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpKQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RW5kTGluZSgoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPmdldEVuZExpbmUoKSk7Ci0KICAgICAg
ICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKIAotLyogTGluZSAxMjY3IG9mIHlhY2MuYy4gICovCiAKICAgICAgIGRlZmF1bHQ6IGJyZWFr
OwogICAgIH0KKyAgLyogVXNlciBzZW1hbnRpYyBhY3Rpb25zIHNvbWV0aW1lcyBhbHRlciB5eWNo
YXIsIGFuZCB0aGF0IHJlcXVpcmVzCisgICAgIHRoYXQgeXl0b2tlbiBiZSB1cGRhdGVkIHdpdGgg
dGhlIG5ldyB0cmFuc2xhdGlvbi4gIFdlIHRha2UgdGhlCisgICAgIGFwcHJvYWNoIG9mIHRyYW5z
bGF0aW5nIGltbWVkaWF0ZWx5IGJlZm9yZSBldmVyeSB1c2Ugb2YgeXl0b2tlbi4KKyAgICAgT25l
IGFsdGVybmF0aXZlIGlzIHRyYW5zbGF0aW5nIGhlcmUgYWZ0ZXIgZXZlcnkgc2VtYW50aWMgYWN0
aW9uLAorICAgICBidXQgdGhhdCB0cmFuc2xhdGlvbiB3b3VsZCBiZSBtaXNzZWQgaWYgdGhlIHNl
bWFudGljIGFjdGlvbiBpbnZva2VzCisgICAgIFlZQUJPUlQsIFlZQUNDRVBULCBvciBZWUVSUk9S
IGltbWVkaWF0ZWx5IGFmdGVyIGFsdGVyaW5nIHl5Y2hhciBvcgorICAgICBpZiBpdCBpbnZva2Vz
IFlZQkFDS1VQLiAgSW4gdGhlIGNhc2Ugb2YgWVlBQk9SVCBvciBZWUFDQ0VQVCwgYW4KKyAgICAg
aW5jb3JyZWN0IGRlc3RydWN0b3IgbWlnaHQgdGhlbiBiZSBpbnZva2VkIGltbWVkaWF0ZWx5LiAg
SW4gdGhlCisgICAgIGNhc2Ugb2YgWVlFUlJPUiBvciBZWUJBQ0tVUCwgc3Vic2VxdWVudCBwYXJz
ZXIgYWN0aW9ucyBtaWdodCBsZWFkCisgICAgIHRvIGFuIGluY29ycmVjdCBkZXN0cnVjdG9yIGNh
bGwgb3IgdmVyYm9zZSBzeW50YXggZXJyb3IgbWVzc2FnZQorICAgICBiZWZvcmUgdGhlIGxvb2th
aGVhZCBpcyB0cmFuc2xhdGVkLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5UICgiLT4gJCQgPSIsIHl5
cjFbeXluXSwgJnl5dmFsLCAmeXlsb2MpOwogCiAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKQEAgLTQ2
NDAsNyArNDcwNiw3IEBAIHl5cmVkdWNlOgogICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3Ap
OwogCiAgICorK3l5dnNwID0geXl2YWw7Ci0KKyAgKisreXlsc3AgPSB5eWxvYzsKIAogICAvKiBO
b3cgYHNoaWZ0JyB0aGUgcmVzdWx0IG9mIHRoZSByZWR1Y3Rpb24uICBEZXRlcm1pbmUgd2hhdCBz
dGF0ZQogICAgICB0aGF0IGdvZXMgdG8sIGJhc2VkIG9uIHRoZSBzdGF0ZSB3ZSBwb3BwZWQgYmFj
ayB0byBhbmQgdGhlIHJ1bGUKQEAgLTQ2NjEsNTIgKzQ3MjcsNTUgQEAgeXlyZWR1Y2U6CiB8IHl5
ZXJybGFiIC0tIGhlcmUgb24gZGV0ZWN0aW5nIGVycm9yIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0qLwogeXllcnJsYWI6CisgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxh
dGVzdCBsb29rYWhlYWQgdHJhbnNsYXRpb24uICBTZWUgY29tbWVudHMgYXQKKyAgICAgdXNlciBz
ZW1hbnRpYyBhY3Rpb25zIGZvciB3aHkgdGhpcyBpcyBuZWNlc3NhcnkuICAqLworICB5eXRva2Vu
ID0geXljaGFyID09IFlZRU1QVFkgPyBZWUVNUFRZIDogWVlUUkFOU0xBVEUgKHl5Y2hhcik7CisK
ICAgLyogSWYgbm90IGFscmVhZHkgcmVjb3ZlcmluZyBmcm9tIGFuIGVycm9yLCByZXBvcnQgdGhp
cyBlcnJvci4gICovCiAgIGlmICgheXllcnJzdGF0dXMpCiAgICAgewogICAgICAgKyt5eW5lcnJz
OwogI2lmICEgWVlFUlJPUl9WRVJCT1NFCi0gICAgICB5eWVycm9yIChjb250ZXh0LCBZWV8oInN5
bnRheCBlcnJvciIpKTsKKyAgICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIFlZXygic3lu
dGF4IGVycm9yIikpOwogI2Vsc2UKKyMgZGVmaW5lIFlZU1lOVEFYX0VSUk9SIHl5c3ludGF4X2Vy
cm9yICgmeXltc2dfYWxsb2MsICZ5eW1zZywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHl5c3NwLCB5eXRva2VuKQogICAgICAgewotCVlZU0laRV9UIHl5c2l6ZSA9
IHl5c3ludGF4X2Vycm9yICgwLCB5eXN0YXRlLCB5eWNoYXIpOwotCWlmICh5eW1zZ19hbGxvYyA8
IHl5c2l6ZSAmJiB5eW1zZ19hbGxvYyA8IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkKLQkgIHsKLQkg
ICAgWVlTSVpFX1QgeXlhbGxvYyA9IDIgKiB5eXNpemU7Ci0JICAgIGlmICghICh5eXNpemUgPD0g
eXlhbGxvYyAmJiB5eWFsbG9jIDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCi0JICAgICAgeXlh
bGxvYyA9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTTsKLQkgICAgaWYgKHl5bXNnICE9IHl5bXNnYnVm
KQotCSAgICAgIFlZU1RBQ0tfRlJFRSAoeXltc2cpOwotCSAgICB5eW1zZyA9IChjaGFyICopIFlZ
U1RBQ0tfQUxMT0MgKHl5YWxsb2MpOwotCSAgICBpZiAoeXltc2cpCi0JICAgICAgeXltc2dfYWxs
b2MgPSB5eWFsbG9jOwotCSAgICBlbHNlCi0JICAgICAgewotCQl5eW1zZyA9IHl5bXNnYnVmOwot
CQl5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1ZjsKLQkgICAgICB9Ci0JICB9Ci0KLQlpZiAo
MCA8IHl5c2l6ZSAmJiB5eXNpemUgPD0geXltc2dfYWxsb2MpCi0JICB7Ci0JICAgICh2b2lkKSB5
eXN5bnRheF9lcnJvciAoeXltc2csIHl5c3RhdGUsIHl5Y2hhcik7Ci0JICAgIHl5ZXJyb3IgKGNv
bnRleHQsIHl5bXNnKTsKLQkgIH0KLQllbHNlCi0JICB7Ci0JICAgIHl5ZXJyb3IgKGNvbnRleHQs
IFlZXygic3ludGF4IGVycm9yIikpOwotCSAgICBpZiAoeXlzaXplICE9IDApCi0JICAgICAgZ290
byB5eWV4aGF1c3RlZGxhYjsKLQkgIH0KKyAgICAgICAgY2hhciBjb25zdCAqeXltc2dwID0gWVlf
KCJzeW50YXggZXJyb3IiKTsKKyAgICAgICAgaW50IHl5c3ludGF4X2Vycm9yX3N0YXR1czsKKyAg
ICAgICAgeXlzeW50YXhfZXJyb3Jfc3RhdHVzID0gWVlTWU5UQVhfRVJST1I7CisgICAgICAgIGlm
ICh5eXN5bnRheF9lcnJvcl9zdGF0dXMgPT0gMCkKKyAgICAgICAgICB5eW1zZ3AgPSB5eW1zZzsK
KyAgICAgICAgZWxzZSBpZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDEpCisgICAgICAgICAg
eworICAgICAgICAgICAgaWYgKHl5bXNnICE9IHl5bXNnYnVmKQorICAgICAgICAgICAgICBZWVNU
QUNLX0ZSRUUgKHl5bXNnKTsKKyAgICAgICAgICAgIHl5bXNnID0gKGNoYXIgKikgWVlTVEFDS19B
TExPQyAoeXltc2dfYWxsb2MpOworICAgICAgICAgICAgaWYgKCF5eW1zZykKKyAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHl5bXNnID0geXltc2didWY7CisgICAgICAgICAgICAgICAg
eXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7CisgICAgICAgICAgICAgICAgeXlzeW50YXhf
ZXJyb3Jfc3RhdHVzID0gMjsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeXlzeW50YXhfZXJyb3Jfc3RhdHVzID0gWVlT
WU5UQVhfRVJST1I7CisgICAgICAgICAgICAgICAgeXltc2dwID0geXltc2c7CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIHl5
bXNncCk7CisgICAgICAgIGlmICh5eXN5bnRheF9lcnJvcl9zdGF0dXMgPT0gMikKKyAgICAgICAg
ICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwogICAgICAgfQorIyB1bmRlZiBZWVNZTlRBWF9FUlJPUgog
I2VuZGlmCiAgICAgfQogCi0KKyAgeXllcnJvcl9yYW5nZVsxXSA9IHl5bGxvYzsKIAogICBpZiAo
eXllcnJzdGF0dXMgPT0gMykKICAgICB7Ci0gICAgICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBmYWls
ZWQgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tlbiBhZnRlciBhbgorICAgICAgLyogSWYganVzdCB0
cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBhbgogCSBlcnJv
ciwgZGlzY2FyZCBpdC4gICovCiAKICAgICAgIGlmICh5eWNoYXIgPD0gWVlFT0YpCkBAIC00NzE4
LDEyICs0Nzg3LDEyIEBAIHl5ZXJybGFiOgogICAgICAgZWxzZQogCXsKIAkgIHl5ZGVzdHJ1Y3Qg
KCJFcnJvcjogZGlzY2FyZGluZyIsCi0JCSAgICAgIHl5dG9rZW4sICZ5eWx2YWwsIGNvbnRleHQp
OworCQkgICAgICB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jLCBjb250ZXh0KTsKIAkgIHl5Y2hh
ciA9IFlZRU1QVFk7CiAJfQogICAgIH0KIAotICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxv
b2stYWhlYWQgdG9rZW4gYWZ0ZXIgc2hpZnRpbmcgdGhlIGVycm9yCisgIC8qIEVsc2Ugd2lsbCB0
cnkgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgogICAg
ICB0b2tlbi4gICovCiAgIGdvdG8geXllcnJsYWIxOwogCkBAIC00NzM5LDYgKzQ4MDgsNyBAQCB5
eWVycm9ybGFiOgogICBpZiAoLypDT05TVENPTkQqLyAwKQogICAgICBnb3RvIHl5ZXJyb3JsYWI7
CiAKKyAgeXllcnJvcl9yYW5nZVsxXSA9IHl5bHNwWzEteXlsZW5dOwogICAvKiBEbyBub3QgcmVj
bGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCiAgICAg
IHRoaXMgWVlFUlJPUi4gICovCiAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKQEAgLTQ3NTcsNyArNDgy
Nyw3IEBAIHl5ZXJybGFiMToKICAgZm9yICg7OykKICAgICB7CiAgICAgICB5eW4gPSB5eXBhY3Rb
eXlzdGF0ZV07Ci0gICAgICBpZiAoeXluICE9IFlZUEFDVF9OSU5GKQorICAgICAgaWYgKCF5eXBh
Y3RfdmFsdWVfaXNfZGVmYXVsdCAoeXluKSkKIAl7CiAJICB5eW4gKz0gWVlURVJST1I7CiAJICBp
ZiAoMCA8PSB5eW4gJiYgeXluIDw9IFlZTEFTVCAmJiB5eWNoZWNrW3l5bl0gPT0gWVlURVJST1Ip
CkBAIC00NzcyLDE5ICs0ODQyLDIzIEBAIHl5ZXJybGFiMToKICAgICAgIGlmICh5eXNzcCA9PSB5
eXNzKQogCVlZQUJPUlQ7CiAKLQorICAgICAgeXllcnJvcl9yYW5nZVsxXSA9ICp5eWxzcDsKICAg
ICAgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogcG9wcGluZyIsCi0JCSAgeXlzdG9zW3l5c3RhdGVdLCB5
eXZzcCwgY29udGV4dCk7CisJCSAgeXlzdG9zW3l5c3RhdGVdLCB5eXZzcCwgeXlsc3AsIGNvbnRl
eHQpOwogICAgICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgICB5eXN0YXRlID0gKnl5c3NwOwogICAg
ICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKICAgICB9CiAKLSAgaWYgKHl5biA9PSBZ
WUZJTkFMKQotICAgIFlZQUNDRVBUOwotCisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVE
X0JFR0lOCiAgICorK3l5dnNwID0geXlsdmFsOworICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFM
SVpFRF9FTkQKIAorICB5eWVycm9yX3JhbmdlWzJdID0geXlsbG9jOworICAvKiBVc2luZyBZWUxM
T0MgaXMgdGVtcHRpbmcsIGJ1dCB3b3VsZCBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mCisgICAgIHRo
ZSBsb29rYWhlYWQuICBZWUxPQyBpcyBhdmFpbGFibGUgdGhvdWdoLiAgKi8KKyAgWVlMTE9DX0RF
RkFVTFQgKHl5bG9jLCB5eWVycm9yX3JhbmdlLCAyKTsKKyAgKisreXlsc3AgPSB5eWxvYzsKIAog
ICAvKiBTaGlmdCB0aGUgZXJyb3IgdG9rZW4uICAqLwogICBZWV9TWU1CT0xfUFJJTlQgKCJTaGlm
dGluZyIsIHl5c3Rvc1t5eW5dLCB5eXZzcCwgeXlsc3ApOwpAQCAtNDgwNywyMCArNDg4MSwyNSBA
QCB5eWFib3J0bGFiOgogICB5eXJlc3VsdCA9IDE7CiAgIGdvdG8geXlyZXR1cm47CiAKLSNpZm5k
ZWYgeXlvdmVyZmxvdworI2lmICFkZWZpbmVkIHl5b3ZlcmZsb3cgfHwgWVlFUlJPUl9WRVJCT1NF
CiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCiB8
IHl5ZXhoYXVzdGVkbGFiIC0tIG1lbW9yeSBleGhhdXN0aW9uIGNvbWVzIGhlcmUuICB8CiBgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiB5eWV4aGF1
c3RlZGxhYjoKLSAgeXllcnJvciAoY29udGV4dCwgWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOwor
ICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSk7CiAg
IHl5cmVzdWx0ID0gMjsKICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KICNlbmRpZgogCiB5eXJldHVy
bjoKLSAgaWYgKHl5Y2hhciAhPSBZWUVPRiAmJiB5eWNoYXIgIT0gWVlFTVBUWSkKLSAgICAgeXlk
ZXN0cnVjdCAoIkNsZWFudXA6IGRpc2NhcmRpbmcgbG9va2FoZWFkIiwKLQkJIHl5dG9rZW4sICZ5
eWx2YWwsIGNvbnRleHQpOworICBpZiAoeXljaGFyICE9IFlZRU1QVFkpCisgICAgeworICAgICAg
LyogTWFrZSBzdXJlIHdlIGhhdmUgbGF0ZXN0IGxvb2thaGVhZCB0cmFuc2xhdGlvbi4gIFNlZSBj
b21tZW50cyBhdAorICAgICAgICAgdXNlciBzZW1hbnRpYyBhY3Rpb25zIGZvciB3aHkgdGhpcyBp
cyBuZWNlc3NhcnkuICAqLworICAgICAgeXl0b2tlbiA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOwor
ICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IGRpc2NhcmRpbmcgbG9va2FoZWFkIiwKKyAgICAg
ICAgICAgICAgICAgIHl5dG9rZW4sICZ5eWx2YWwsICZ5eWxsb2MsIGNvbnRleHQpOworICAgIH0K
ICAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hpY2ggYWN0aW9u
IHRyaWdnZXJlZAogICAgICB0aGlzIFlZQUJPUlQgb3IgWVlBQ0NFUFQuICAqLwogICBZWVBPUFNU
QUNLICh5eWxlbik7CkBAIC00ODI4LDcgKzQ5MDcsNyBAQCB5eXJldHVybjoKICAgd2hpbGUgKHl5
c3NwICE9IHl5c3MpCiAgICAgewogICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IHBvcHBpbmci
LAotCQkgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwgY29udGV4dCk7CisJCSAgeXlzdG9zWyp5eXNz
cF0sIHl5dnNwLCB5eWxzcCwgY29udGV4dCk7CiAgICAgICBZWVBPUFNUQUNLICgxKTsKICAgICB9
CiAjaWZuZGVmIHl5b3ZlcmZsb3cKQEAgLTQ4NDcsNyArNDkyNiwxMSBAQCB5eXJldHVybjoKIAog
CiAKK3ZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IGNoYXIqIHJlYXNvbikgeworICAgIGNvbnRleHQtPmVycm9yKCp5eWxsb2MsIHJlYXNv
biwgIiIpOworICAgIGNvbnRleHQtPnJlY292ZXIoKTsKK30KKwogaW50IGdsc2xhbmdfcGFyc2Uo
VFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHJldHVybiB5eXBhcnNlKGNvbnRleHQpOwog
fQotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190
YWIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
Z2xzbGFuZ190YWIuaAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMjQgKzEs
MjEgQEAKLS8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjMuICAqLworLyog
QSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuNy4gICovCiAKLS8qIFNrZWxldG9u
IGludGVyZmFjZSBmb3IgQmlzb24ncyBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCi0KLSAgIENvcHly
aWdodCAoQykgMTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwg
MjAwNSwgMjAwNgotICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0KLSAgIFRoaXMg
cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig
bW9kaWZ5CisvKiBCaXNvbiBpbnRlcmZhY2UgZm9yIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKKyAg
IAorICAgICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LTE5OTAsIDIwMDAtMjAxMiBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIAorICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m
dHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5Ci0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv
ciAoYXQgeW91ciBvcHRpb24pCi0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLQorICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK
KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgICAKICAgIFRoaXMgcHJv
Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAog
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0KKyAgIAogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gICBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuICAqLworICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8
aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAvKiBBcyBhIHNwZWNpYWwgZXhj
ZXB0aW9uLCB5b3UgbWF5IGNyZWF0ZSBhIGxhcmdlciB3b3JrIHRoYXQgY29udGFpbnMKICAgIHBh
cnQgb3IgYWxsIG9mIHRoZSBCaXNvbiBwYXJzZXIgc2tlbGV0b24gYW5kIGRpc3RyaWJ1dGUgdGhh
dCB3b3JrCkBAIC0yOSwxMCArMjYsMjggQEAKICAgIHNwZWNpYWwgZXhjZXB0aW9uLCB3aGljaCB3
aWxsIGNhdXNlIHRoZSBza2VsZXRvbiBhbmQgdGhlIHJlc3VsdGluZwogICAgQmlzb24gb3V0cHV0
IGZpbGVzIHRvIGJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKICAgIExp
Y2Vuc2Ugd2l0aG91dCB0aGlzIHNwZWNpYWwgZXhjZXB0aW9uLgotCisgICAKICAgIFRoaXMgc3Bl
Y2lhbCBleGNlcHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24g
aW4KICAgIHZlcnNpb24gMi4yIG9mIEJpc29uLiAgKi8KIAorI2lmbmRlZiBZWV9ZWV9HTFNMQU5H
X1RBQl9IX0lOQ0xVREVECisjIGRlZmluZSBZWV9ZWV9HTFNMQU5HX1RBQl9IX0lOQ0xVREVECisv
KiBFbmFibGluZyB0cmFjZXMuICAqLworI2lmbmRlZiBZWURFQlVHCisjIGRlZmluZSBZWURFQlVH
IDAKKyNlbmRpZgorI2lmIFlZREVCVUcKK2V4dGVybiBpbnQgeXlkZWJ1ZzsKKyNlbmRpZgorLyog
IiVjb2RlIHJlcXVpcmVzIiBibG9ja3MuICAqLworCisKKyNkZWZpbmUgWVlMVFlQRSBUU291cmNl
TG9jCisjZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQgMQorCisKKworCiAvKiBUb2tlbnMuICAq
LwogI2lmbmRlZiBZWVRPS0VOVFlQRQogIyBkZWZpbmUgWVlUT0tFTlRZUEUKQEAgLTg2LDE1OCAr
MTAxLDYxIEBACiAgICAgIEZMT0FUQ09OU1RBTlQgPSAzMDIsCiAgICAgIElOVENPTlNUQU5UID0g
MzAzLAogICAgICBCT09MQ09OU1RBTlQgPSAzMDQsCi0gICAgIEZJRUxEX1NFTEVDVElPTiA9IDMw
NSwKLSAgICAgTEVGVF9PUCA9IDMwNiwKLSAgICAgUklHSFRfT1AgPSAzMDcsCi0gICAgIElOQ19P
UCA9IDMwOCwKLSAgICAgREVDX09QID0gMzA5LAotICAgICBMRV9PUCA9IDMxMCwKLSAgICAgR0Vf
T1AgPSAzMTEsCi0gICAgIEVRX09QID0gMzEyLAotICAgICBORV9PUCA9IDMxMywKLSAgICAgQU5E
X09QID0gMzE0LAotICAgICBPUl9PUCA9IDMxNSwKLSAgICAgWE9SX09QID0gMzE2LAotICAgICBN
VUxfQVNTSUdOID0gMzE3LAotICAgICBESVZfQVNTSUdOID0gMzE4LAotICAgICBBRERfQVNTSUdO
ID0gMzE5LAotICAgICBNT0RfQVNTSUdOID0gMzIwLAotICAgICBMRUZUX0FTU0lHTiA9IDMyMSwK
LSAgICAgUklHSFRfQVNTSUdOID0gMzIyLAotICAgICBBTkRfQVNTSUdOID0gMzIzLAotICAgICBY
T1JfQVNTSUdOID0gMzI0LAotICAgICBPUl9BU1NJR04gPSAzMjUsCi0gICAgIFNVQl9BU1NJR04g
PSAzMjYsCi0gICAgIExFRlRfUEFSRU4gPSAzMjcsCi0gICAgIFJJR0hUX1BBUkVOID0gMzI4LAot
ICAgICBMRUZUX0JSQUNLRVQgPSAzMjksCi0gICAgIFJJR0hUX0JSQUNLRVQgPSAzMzAsCi0gICAg
IExFRlRfQlJBQ0UgPSAzMzEsCi0gICAgIFJJR0hUX0JSQUNFID0gMzMyLAotICAgICBET1QgPSAz
MzMsCi0gICAgIENPTU1BID0gMzM0LAotICAgICBDT0xPTiA9IDMzNSwKLSAgICAgRVFVQUwgPSAz
MzYsCi0gICAgIFNFTUlDT0xPTiA9IDMzNywKLSAgICAgQkFORyA9IDMzOCwKLSAgICAgREFTSCA9
IDMzOSwKLSAgICAgVElMREUgPSAzNDAsCi0gICAgIFBMVVMgPSAzNDEsCi0gICAgIFNUQVIgPSAz
NDIsCi0gICAgIFNMQVNIID0gMzQzLAotICAgICBQRVJDRU5UID0gMzQ0LAotICAgICBMRUZUX0FO
R0xFID0gMzQ1LAotICAgICBSSUdIVF9BTkdMRSA9IDM0NiwKLSAgICAgVkVSVElDQUxfQkFSID0g
MzQ3LAotICAgICBDQVJFVCA9IDM0OCwKLSAgICAgQU1QRVJTQU5EID0gMzQ5LAotICAgICBRVUVT
VElPTiA9IDM1MAorICAgICBMRUZUX09QID0gMzA1LAorICAgICBSSUdIVF9PUCA9IDMwNiwKKyAg
ICAgSU5DX09QID0gMzA3LAorICAgICBERUNfT1AgPSAzMDgsCisgICAgIExFX09QID0gMzA5LAor
ICAgICBHRV9PUCA9IDMxMCwKKyAgICAgRVFfT1AgPSAzMTEsCisgICAgIE5FX09QID0gMzEyLAor
ICAgICBBTkRfT1AgPSAzMTMsCisgICAgIE9SX09QID0gMzE0LAorICAgICBYT1JfT1AgPSAzMTUs
CisgICAgIE1VTF9BU1NJR04gPSAzMTYsCisgICAgIERJVl9BU1NJR04gPSAzMTcsCisgICAgIEFE
RF9BU1NJR04gPSAzMTgsCisgICAgIE1PRF9BU1NJR04gPSAzMTksCisgICAgIExFRlRfQVNTSUdO
ID0gMzIwLAorICAgICBSSUdIVF9BU1NJR04gPSAzMjEsCisgICAgIEFORF9BU1NJR04gPSAzMjIs
CisgICAgIFhPUl9BU1NJR04gPSAzMjMsCisgICAgIE9SX0FTU0lHTiA9IDMyNCwKKyAgICAgU1VC
X0FTU0lHTiA9IDMyNSwKKyAgICAgTEVGVF9QQVJFTiA9IDMyNiwKKyAgICAgUklHSFRfUEFSRU4g
PSAzMjcsCisgICAgIExFRlRfQlJBQ0tFVCA9IDMyOCwKKyAgICAgUklHSFRfQlJBQ0tFVCA9IDMy
OSwKKyAgICAgTEVGVF9CUkFDRSA9IDMzMCwKKyAgICAgUklHSFRfQlJBQ0UgPSAzMzEsCisgICAg
IERPVCA9IDMzMiwKKyAgICAgQ09NTUEgPSAzMzMsCisgICAgIENPTE9OID0gMzM0LAorICAgICBF
UVVBTCA9IDMzNSwKKyAgICAgU0VNSUNPTE9OID0gMzM2LAorICAgICBCQU5HID0gMzM3LAorICAg
ICBEQVNIID0gMzM4LAorICAgICBUSUxERSA9IDMzOSwKKyAgICAgUExVUyA9IDM0MCwKKyAgICAg
U1RBUiA9IDM0MSwKKyAgICAgU0xBU0ggPSAzNDIsCisgICAgIFBFUkNFTlQgPSAzNDMsCisgICAg
IExFRlRfQU5HTEUgPSAzNDQsCisgICAgIFJJR0hUX0FOR0xFID0gMzQ1LAorICAgICBWRVJUSUNB
TF9CQVIgPSAzNDYsCisgICAgIENBUkVUID0gMzQ3LAorICAgICBBTVBFUlNBTkQgPSAzNDgsCisg
ICAgIFFVRVNUSU9OID0gMzQ5CiAgICB9OwogI2VuZGlmCi0vKiBUb2tlbnMuICAqLwotI2RlZmlu
ZSBJTlZBUklBTlQgMjU4Ci0jZGVmaW5lIEhJR0hfUFJFQ0lTSU9OIDI1OQotI2RlZmluZSBNRURJ
VU1fUFJFQ0lTSU9OIDI2MAotI2RlZmluZSBMT1dfUFJFQ0lTSU9OIDI2MQotI2RlZmluZSBQUkVD
SVNJT04gMjYyCi0jZGVmaW5lIEFUVFJJQlVURSAyNjMKLSNkZWZpbmUgQ09OU1RfUVVBTCAyNjQK
LSNkZWZpbmUgQk9PTF9UWVBFIDI2NQotI2RlZmluZSBGTE9BVF9UWVBFIDI2NgotI2RlZmluZSBJ
TlRfVFlQRSAyNjcKLSNkZWZpbmUgQlJFQUsgMjY4Ci0jZGVmaW5lIENPTlRJTlVFIDI2OQotI2Rl
ZmluZSBETyAyNzAKLSNkZWZpbmUgRUxTRSAyNzEKLSNkZWZpbmUgRk9SIDI3MgotI2RlZmluZSBJ
RiAyNzMKLSNkZWZpbmUgRElTQ0FSRCAyNzQKLSNkZWZpbmUgUkVUVVJOIDI3NQotI2RlZmluZSBC
VkVDMiAyNzYKLSNkZWZpbmUgQlZFQzMgMjc3Ci0jZGVmaW5lIEJWRUM0IDI3OAotI2RlZmluZSBJ
VkVDMiAyNzkKLSNkZWZpbmUgSVZFQzMgMjgwCi0jZGVmaW5lIElWRUM0IDI4MQotI2RlZmluZSBW
RUMyIDI4MgotI2RlZmluZSBWRUMzIDI4MwotI2RlZmluZSBWRUM0IDI4NAotI2RlZmluZSBNQVRS
SVgyIDI4NQotI2RlZmluZSBNQVRSSVgzIDI4NgotI2RlZmluZSBNQVRSSVg0IDI4NwotI2RlZmlu
ZSBJTl9RVUFMIDI4OAotI2RlZmluZSBPVVRfUVVBTCAyODkKLSNkZWZpbmUgSU5PVVRfUVVBTCAy
OTAKLSNkZWZpbmUgVU5JRk9STSAyOTEKLSNkZWZpbmUgVkFSWUlORyAyOTIKLSNkZWZpbmUgU1RS
VUNUIDI5MwotI2RlZmluZSBWT0lEX1RZUEUgMjk0Ci0jZGVmaW5lIFdISUxFIDI5NQotI2RlZmlu
ZSBTQU1QTEVSMkQgMjk2Ci0jZGVmaW5lIFNBTVBMRVJDVUJFIDI5NwotI2RlZmluZSBTQU1QTEVS
X0VYVEVSTkFMX09FUyAyOTgKLSNkZWZpbmUgU0FNUExFUjJEUkVDVCAyOTkKLSNkZWZpbmUgSURF
TlRJRklFUiAzMDAKLSNkZWZpbmUgVFlQRV9OQU1FIDMwMQotI2RlZmluZSBGTE9BVENPTlNUQU5U
IDMwMgotI2RlZmluZSBJTlRDT05TVEFOVCAzMDMKLSNkZWZpbmUgQk9PTENPTlNUQU5UIDMwNAot
I2RlZmluZSBGSUVMRF9TRUxFQ1RJT04gMzA1Ci0jZGVmaW5lIExFRlRfT1AgMzA2Ci0jZGVmaW5l
IFJJR0hUX09QIDMwNwotI2RlZmluZSBJTkNfT1AgMzA4Ci0jZGVmaW5lIERFQ19PUCAzMDkKLSNk
ZWZpbmUgTEVfT1AgMzEwCi0jZGVmaW5lIEdFX09QIDMxMQotI2RlZmluZSBFUV9PUCAzMTIKLSNk
ZWZpbmUgTkVfT1AgMzEzCi0jZGVmaW5lIEFORF9PUCAzMTQKLSNkZWZpbmUgT1JfT1AgMzE1Ci0j
ZGVmaW5lIFhPUl9PUCAzMTYKLSNkZWZpbmUgTVVMX0FTU0lHTiAzMTcKLSNkZWZpbmUgRElWX0FT
U0lHTiAzMTgKLSNkZWZpbmUgQUREX0FTU0lHTiAzMTkKLSNkZWZpbmUgTU9EX0FTU0lHTiAzMjAK
LSNkZWZpbmUgTEVGVF9BU1NJR04gMzIxCi0jZGVmaW5lIFJJR0hUX0FTU0lHTiAzMjIKLSNkZWZp
bmUgQU5EX0FTU0lHTiAzMjMKLSNkZWZpbmUgWE9SX0FTU0lHTiAzMjQKLSNkZWZpbmUgT1JfQVNT
SUdOIDMyNQotI2RlZmluZSBTVUJfQVNTSUdOIDMyNgotI2RlZmluZSBMRUZUX1BBUkVOIDMyNwot
I2RlZmluZSBSSUdIVF9QQVJFTiAzMjgKLSNkZWZpbmUgTEVGVF9CUkFDS0VUIDMyOQotI2RlZmlu
ZSBSSUdIVF9CUkFDS0VUIDMzMAotI2RlZmluZSBMRUZUX0JSQUNFIDMzMQotI2RlZmluZSBSSUdI
VF9CUkFDRSAzMzIKLSNkZWZpbmUgRE9UIDMzMwotI2RlZmluZSBDT01NQSAzMzQKLSNkZWZpbmUg
Q09MT04gMzM1Ci0jZGVmaW5lIEVRVUFMIDMzNgotI2RlZmluZSBTRU1JQ09MT04gMzM3Ci0jZGVm
aW5lIEJBTkcgMzM4Ci0jZGVmaW5lIERBU0ggMzM5Ci0jZGVmaW5lIFRJTERFIDM0MAotI2RlZmlu
ZSBQTFVTIDM0MQotI2RlZmluZSBTVEFSIDM0MgotI2RlZmluZSBTTEFTSCAzNDMKLSNkZWZpbmUg
UEVSQ0VOVCAzNDQKLSNkZWZpbmUgTEVGVF9BTkdMRSAzNDUKLSNkZWZpbmUgUklHSFRfQU5HTEUg
MzQ2Ci0jZGVmaW5lIFZFUlRJQ0FMX0JBUiAzNDcKLSNkZWZpbmUgQ0FSRVQgMzQ4Ci0jZGVmaW5l
IEFNUEVSU0FORCAzNDkKLSNkZWZpbmUgUVVFU1RJT04gMzUwCi0KLQogCiAKICNpZiAhIGRlZmlu
ZWQgWVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQRV9JU19ERUNMQVJFRAogdHlwZWRlZiB1bmlv
biBZWVNUWVBFCi0KIHsKKworCiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5l
OwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUU3RyaW5nICpzdHJpbmc7CiAgICAgICAg
ICAgICBmbG9hdCBmOwpAQCAtMjQ3LDcgKzE2NSw2IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQog
ICAgICAgICBUU3ltYm9sKiBzeW1ib2w7CiAgICAgfSBsZXg7CiAgICAgc3RydWN0IHsKLSAgICAg
ICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAgICBUT3BlcmF0b3Igb3A7CiAgICAgICAgIHVuaW9u
IHsKICAgICAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwpAQCAtMjYxLDE4ICsxNzgs
NDUgQEAgdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxp
ZmllcjsKICAgICAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAgICAgICBUUGFy
YW1ldGVyIHBhcmFtOwotICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVMaW5lOwotICAgICAgICAg
ICAgVFR5cGVMaXN0KiB0eXBlTGlzdDsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7CisgICAg
ICAgICAgICBURmllbGRMaXN0KiBmaWVsZExpc3Q7CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07
Ci19Ci0vKiBMaW5lIDE1Mjkgb2YgeWFjYy5jLiAgKi8KIAotCVlZU1RZUEU7CisKKworfSBZWVNU
WVBFOworIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKICMgZGVmaW5lIHl5c3R5cGUgWVlT
VFlQRSAvKiBvYnNvbGVzY2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KICMgZGVmaW5lIFlZU1RZ
UEVfSVNfREVDTEFSRUQgMQotIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKICNlbmRpZgog
CisjaWYgISBkZWZpbmVkIFlZTFRZUEUgJiYgISBkZWZpbmVkIFlZTFRZUEVfSVNfREVDTEFSRUQK
K3R5cGVkZWYgc3RydWN0IFlZTFRZUEUKK3sKKyAgaW50IGZpcnN0X2xpbmU7CisgIGludCBmaXJz
dF9jb2x1bW47CisgIGludCBsYXN0X2xpbmU7CisgIGludCBsYXN0X2NvbHVtbjsKK30gWVlMVFlQ
RTsKKyMgZGVmaW5lIHl5bHR5cGUgWVlMVFlQRSAvKiBvYnNvbGVzY2VudDsgd2lsbCBiZSB3aXRo
ZHJhd24gKi8KKyMgZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQgMQorIyBkZWZpbmUgWVlMVFlQ
RV9JU19UUklWSUFMIDEKKyNlbmRpZgogCiAKKyNpZmRlZiBZWVBBUlNFX1BBUkFNCisjaWYgZGVm
aW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCitpbnQgeXlwYXJzZSAodm9pZCAq
WVlQQVJTRV9QQVJBTSk7CisjZWxzZQoraW50IHl5cGFyc2UgKCk7CisjZW5kaWYKKyNlbHNlIC8q
ICEgWVlQQVJTRV9QQVJBTSAqLworI2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2Nw
bHVzcGx1cworaW50IHl5cGFyc2UgKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpOworI2Vsc2UKK2lu
dCB5eXBhcnNlICgpOworI2VuZGlmCisjZW5kaWYgLyogISBZWVBBUlNFX1BBUkFNICovCisKKyNl
bmRpZiAvKiAhWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRCAgKi8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwCShyZXZp
c2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50
ZXJtT3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDcgKzE4OSw5IEBAIGJvb2wgVE91dHB1
dFRyYXZlcnNlcjo6dmlzaXRVbmFyeShWaXNpdAogICAgICAgICBjYXNlIEVPcEFueTogICAgICAg
ICAgICBvdXQgPDwgImFueSI7ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
RU9wQWxsOiAgICAgICAgICAgIG91dCA8PCAiYWxsIjsgICAgICAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICBkZWZhdWx0OiBvdXQubWVzc2FnZShFUHJlZml4RXJyb3IsICJCYWQgdW5hcnkg
b3AiKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIG91dC5wcmVmaXgoRVByZWZpeEVy
cm9yKTsKKyAgICAgICAgICAgIG91dCA8PCAiQmFkIHVuYXJ5IG9wIjsKICAgICB9CiAKICAgICBv
dXQgPDwgIiAoIiA8PCBub2RlLT5nZXRDb21wbGV0ZVN0cmluZygpIDw8ICIpIjsKQEAgLTIwNCw3
ICsyMDYsOCBAQCBib29sIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpCiAgICAg
VEluZm9TaW5rQmFzZSYgb3V0ID0gc2luazsKIAogICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVP
cE51bGwpIHsKLSAgICAgICAgb3V0Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCAibm9kZSBpcyBzdGls
bCBFT3BOdWxsISIpOworICAgICAgICBvdXQucHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAg
IG91dCA8PCAibm9kZSBpcyBzdGlsbCBFT3BOdWxsISI7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApAQCAtMjYzLDcgKzI2Niw5IEBAIGJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRB
Z2dyZWdhdGUoVmkKIAogICAgICAgICBjYXNlIEVPcERlY2xhcmF0aW9uOiAgIG91dCA8PCAiRGVj
bGFyYXRpb246ICI7ICAgYnJlYWs7CiAKLSAgICAgICAgZGVmYXVsdDogb3V0Lm1lc3NhZ2UoRVBy
ZWZpeEVycm9yLCAiQmFkIGFnZ3JlZ2F0aW9uIG9wIik7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBvdXQucHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICBvdXQgPDwgIkJh
ZCBhZ2dyZWdhdGlvbiBvcCI7CiAgICAgfQogCiAgICAgaWYgKG5vZGUtPmdldE9wKCkgIT0gRU9w
U2VxdWVuY2UgJiYgbm9kZS0+Z2V0T3AoKSAhPSBFT3BQYXJhbWV0ZXJzKQpAQCAtMzExLDkgKzMx
Niw5IEBAIHZvaWQgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW8KIHsKICAgICBU
SW5mb1NpbmtCYXNlJiBvdXQgPSBzaW5rOwogCi0gICAgaW50IHNpemUgPSBub2RlLT5nZXRUeXBl
KCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgIHNpemVfdCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdl
dE9iamVjdFNpemUoKTsKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgT3V0cHV0VHJl
ZVRleHQob3V0LCBub2RlLCBkZXB0aCk7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VW5pb25B
cnJheVBvaW50ZXIoKVtpXS5nZXRUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoK
QEAgLTMzNCw3ICszMzksNyBAQCB2b2lkIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRV
bmlvCiAgICAgICAgICAgICAgICAgb3V0IDw8ICIgKGNvbnN0IGludClcbiI7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIG91dC5t
ZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5rbm93biBjb25zdGFudCIsIG5vZGUtPmdl
dExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsIG5vZGUtPmdldExpbmUoKSwgIlVua25vd24gY29uc3RhbnQiKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9pbnRlcm1lZGlhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgJKHJldmlzaW9uIDE1MjMyMykK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1lZGlhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDIt
MjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCiAvLwpAQCAtMTgsNiArMTgsNyBAQAogCiAjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJM
YW5nLmgiCiAKKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSAiY29tcGlsZXIvQ29tbW9u
LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvVHlwZXMuaCIKICNpbmNsdWRlICJjb21waWxlci9Db25z
dGFudFVuaW9uLmgiCkBAIC0yMDYsMTAgKzIwNywxNiBAQCBjbGFzcyBUSW50ZXJtTm9kZSB7CiBw
dWJsaWM6CiAgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9y
KQogCi0gICAgVEludGVybU5vZGUoKSA6IGxpbmUoMCkge30KKyAgICBUSW50ZXJtTm9kZSgpIHsK
KyAgICAgICAgLy8gVE9ETzogTW92ZSB0aGlzIHRvIFRTb3VyY2VMb2MgY29uc3RydWN0b3IKKyAg
ICAgICAgLy8gYWZ0ZXIgZ2V0dGluZyByaWQgb2YgVFB1YmxpY1R5cGUuCisgICAgICAgIGxpbmUu
Zmlyc3RfZmlsZSA9IGxpbmUubGFzdF9maWxlID0gMDsKKyAgICAgICAgbGluZS5maXJzdF9saW5l
ID0gbGluZS5sYXN0X2xpbmUgPSAwOworICAgIH0KKyAgICB2aXJ0dWFsIH5USW50ZXJtTm9kZSgp
IHsgfQogCi0gICAgVFNvdXJjZUxvYyBnZXRMaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZTsgfQot
ICAgIHZvaWQgc2V0TGluZShUU291cmNlTG9jIGwpIHsgbGluZSA9IGw7IH0KKyAgICBjb25zdCBU
U291cmNlTG9jJiBnZXRMaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZTsgfQorICAgIHZvaWQgc2V0
TGluZShjb25zdCBUU291cmNlTG9jJiBsKSB7IGxpbmUgPSBsOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciopID0gMDsKICAgICB2aXJ0dWFsIFRJbnRlcm1U
eXBlZCogZ2V0QXNUeXBlZCgpIHsgcmV0dXJuIDA7IH0KQEAgLTIyMCw3ICsyMjcsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBUSW50ZXJtU2VsZWN0aW9uKiBnZXRBc1NlbGVjdGlvbk5vZGUoKSB7
IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBUSW50ZXJtU3ltYm9sKiBnZXRBc1N5bWJvbE5vZGUo
KSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBUSW50ZXJtTG9vcCogZ2V0QXNMb29wTm9kZSgp
IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIH5USW50ZXJtTm9kZSgpIHsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgVFNvdXJjZUxvYyBsaW5lOwpAQCAtMzU4LDcgKzM2NCwxMCBAQCBwdWJsaWM6CiAg
ICAgVEludGVybUNvbnN0YW50VW5pb24oQ29uc3RhbnRVbmlvbiAqdW5pb25Qb2ludGVyLCBjb25z
dCBUVHlwZSYgdCkgOiBUSW50ZXJtVHlwZWQodCksIHVuaW9uQXJyYXlQb2ludGVyKHVuaW9uUG9p
bnRlcikgeyB9CiAKICAgICBDb25zdGFudFVuaW9uKiBnZXRVbmlvbkFycmF5UG9pbnRlcigpIGNv
bnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVyOyB9Ci0gICAgdm9pZCBzZXRVbmlvbkFycmF5
UG9pbnRlcihDb25zdGFudFVuaW9uICpjKSB7IHVuaW9uQXJyYXlQb2ludGVyID0gYzsgfQorICAg
IAorICAgIGludCBnZXRJQ29uc3QoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5
UG9pbnRlciA/IHVuaW9uQXJyYXlQb2ludGVyW2luZGV4XS5nZXRJQ29uc3QoKSA6IDA7IH0KKyAg
ICBmbG9hdCBnZXRGQ29uc3QoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9p
bnRlciA/IHVuaW9uQXJyYXlQb2ludGVyW2luZGV4XS5nZXRGQ29uc3QoKSA6IDAuMGY7IH0KKyAg
ICBib29sIGdldEJDb25zdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2lu
dGVyID8gdW5pb25BcnJheVBvaW50ZXJbaW5kZXhdLmdldEJDb25zdCgpIDogZmFsc2U7IH0KIAog
ICAgIHZpcnR1YWwgVEludGVybUNvbnN0YW50VW5pb24qIGdldEFzQ29uc3RhbnRVbmlvbigpICB7
IHJldHVybiB0aGlzOyB9CiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJz
ZXIqKTsKQEAgLTQ0Nyw3ICs0NTYsNyBAQCB0eXBlZGVmIFRWZWN0b3I8aW50PiBUUXVhbGlmaWVy
TGlzdDsKIC8vCiBjbGFzcyBUSW50ZXJtQWdncmVnYXRlIDogcHVibGljIFRJbnRlcm1PcGVyYXRv
ciB7CiBwdWJsaWM6Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSgpIDogVEludGVybU9wZXJhdG9yKEVP
cE51bGwpLCB1c2VyRGVmaW5lZChmYWxzZSksIGVuZExpbmUoMCksIHVzZUVtdWxhdGVkRnVuY3Rp
b24oZmFsc2UpIHsgfQorICAgIFRJbnRlcm1BZ2dyZWdhdGUoKSA6IFRJbnRlcm1PcGVyYXRvcihF
T3BOdWxsKSwgdXNlckRlZmluZWQoZmFsc2UpLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKGZhbHNlKSB7
IH0KICAgICBUSW50ZXJtQWdncmVnYXRlKFRPcGVyYXRvciBvKSA6IFRJbnRlcm1PcGVyYXRvcihv
KSwgdXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSkgeyB9CiAgICAgflRJbnRlcm1BZ2dyZWdhdGUo
KSB7IH0KIApAQCAtNDY3LDkgKzQ3Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlYnVnKGJv
b2wgZCkgeyBkZWJ1ZyA9IGQ7IH0KICAgICBib29sIGdldERlYnVnKCkgeyByZXR1cm4gZGVidWc7
IH0KIAotICAgIHZvaWQgc2V0RW5kTGluZShUU291cmNlTG9jIGxpbmUpIHsgZW5kTGluZSA9IGxp
bmU7IH0KLSAgICBUU291cmNlTG9jIGdldEVuZExpbmUoKSBjb25zdCB7IHJldHVybiBlbmRMaW5l
OyB9Ci0KICAgICB2b2lkIHNldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSB7IHVzZUVtdWxhdGVkRnVu
Y3Rpb24gPSB0cnVlOyB9CiAgICAgYm9vbCBnZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkgeyByZXR1
cm4gdXNlRW11bGF0ZWRGdW5jdGlvbjsgfQogCkBAIC00ODIsNyArNDg4LDYgQEAgcHJvdGVjdGVk
OgogCiAgICAgYm9vbCBvcHRpbWl6ZTsKICAgICBib29sIGRlYnVnOwotICAgIFRTb3VyY2VMb2Mg
ZW5kTGluZTsKIAogICAgIC8vIElmIHNldCB0byB0cnVlLCByZXBsYWNlIHRoZSBidWlsdC1pbiBm
dW5jdGlvbiBjYWxsIHdpdGggYW4gZW11bGF0ZWQgb25lCiAgICAgLy8gdG8gd29yayBhcm91bmQg
ZHJpdmVyIGJ1Z3MuCkBAIC01MzgsNyArNTQzLDggQEAgcHVibGljOgogICAgICAgICAgICAgaW5W
aXNpdChpblZpc2l0KSwKICAgICAgICAgICAgIHBvc3RWaXNpdChwb3N0VmlzaXQpLAogICAgICAg
ICAgICAgcmlnaHRUb0xlZnQocmlnaHRUb0xlZnQpLAotICAgICAgICAgICAgZGVwdGgoMCkge30K
KyAgICAgICAgICAgIGRlcHRoKDApLAorICAgICAgICAgICAgbWF4RGVwdGgoMCkge30KICAgICB2
aXJ0dWFsIH5USW50ZXJtVHJhdmVyc2VyKCkge307CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRT
eW1ib2woVEludGVybVN5bWJvbCopIHt9CkBAIC01NTAsNyArNTU2LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wKikge3JldHVy
biB0cnVlO30KICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRl
cm1CcmFuY2gqKSB7cmV0dXJuIHRydWU7fQogCi0gICAgdm9pZCBpbmNyZW1lbnREZXB0aCgpIHtk
ZXB0aCsrO30KKyAgICBpbnQgZ2V0TWF4RGVwdGgoKSBjb25zdCB7cmV0dXJuIG1heERlcHRoO30K
KyAgICB2b2lkIGluY3JlbWVudERlcHRoKCkge2RlcHRoKys7IG1heERlcHRoID0gc3RkOjptYXgo
bWF4RGVwdGgsIGRlcHRoKTsgfQogICAgIHZvaWQgZGVjcmVtZW50RGVwdGgoKSB7ZGVwdGgtLTt9
CiAKICAgICAvLyBSZXR1cm4gdGhlIG9yaWdpbmFsIG5hbWUgaWYgaGFzaCBmdW5jdGlvbiBwb2lu
dGVyIGlzIE5VTEw7CkBAIC01NjQsNiArNTcxLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAg
ICAgaW50IGRlcHRoOworICAgIGludCBtYXhEZXB0aDsKIH07CiAKICNlbmRpZiAvLyBfX0lOVEVS
TUVESUFURV9ICkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvbG9j
YWxpbnRlcm1lZGlhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaAkocmV2aXNpb24gMTUyMzIzKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDM0ICsyNSwzMyBAQCBwdWJsaWM6CiAgICAgUE9PTF9BTExPQ0FU
T1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKQogCiAgICAgVEludGVybWVkaWF0ZShU
SW5mb1NpbmsmIGkpIDogaW5mb1NpbmsoaSkgeyB9Ci0gICAgVEludGVybVN5bWJvbCogYWRkU3lt
Ym9sKGludCBJZCwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRUeXBlJiwgVFNvdXJjZUxvYyk7Cisg
ICAgVEludGVybVN5bWJvbCogYWRkU3ltYm9sKGludCBJZCwgY29uc3QgVFN0cmluZyYsIGNvbnN0
IFRUeXBlJiwgY29uc3QgVFNvdXJjZUxvYyYpOwogICAgIFRJbnRlcm1UeXBlZCogYWRkQ29udmVy
c2lvbihUT3BlcmF0b3IsIGNvbnN0IFRUeXBlJiwgVEludGVybVR5cGVkKik7Ci0gICAgVEludGVy
bVR5cGVkKiBhZGRCaW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBU
SW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jLCBUU3ltYm9sVGFibGUmKTsKLSAgICBUSW50
ZXJtVHlwZWQqIGFkZEFzc2lnbihUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVElu
dGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRJbmRl
eChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogYmFzZSwgVEludGVybVR5cGVkKiBpbmRleCwg
VFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9w
LCBUSW50ZXJtTm9kZSogY2hpbGQsIFRTb3VyY2VMb2MsIFRTeW1ib2xUYWJsZSYpOwotICAgIFRJ
bnRlcm1BZ2dyZWdhdGUqIGdyb3dBZ2dyZWdhdGUoVEludGVybU5vZGUqIGxlZnQsIFRJbnRlcm1O
b2RlKiByaWdodCwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSogbWFrZUFnZ3Jl
Z2F0ZShUSW50ZXJtTm9kZSogbm9kZSwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybUFnZ3JlZ2F0
ZSogc2V0QWdncmVnYXRlT3BlcmF0b3IoVEludGVybU5vZGUqLCBUT3BlcmF0b3IsIFRTb3VyY2VM
b2MpOwotICAgIFRJbnRlcm1Ob2RlKiAgYWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwg
VEludGVybU5vZGVQYWlyIGNvZGUsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRk
U2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiB0cnVlQmxvY2ssIFRJ
bnRlcm1UeXBlZCogZmFsc2VCbG9jaywgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBh
ZGRDb21tYShUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VM
b2MpOwotICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiBhZGRDb25zdGFudFVuaW9uKENvbnN0YW50
VW5pb24qLCBjb25zdCBUVHlwZSYsIFRTb3VyY2VMb2MpOworICAgIFRJbnRlcm1UeXBlZCogYWRk
QmluYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVk
KiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYsIFRTeW1ib2xUYWJsZSYpOworICAgIFRJbnRlcm1U
eXBlZCogYWRkQXNzaWduKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJt
VHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRJ
bmRleChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogYmFzZSwgVEludGVybVR5cGVkKiBpbmRl
eCwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkVW5hcnlNYXRoKFRP
cGVyYXRvciBvcCwgVEludGVybU5vZGUqIGNoaWxkLCBjb25zdCBUU291cmNlTG9jJiwgVFN5bWJv
bFRhYmxlJik7CisgICAgVEludGVybUFnZ3JlZ2F0ZSogZ3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9k
ZSogbGVmdCwgVEludGVybU5vZGUqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVElu
dGVybUFnZ3JlZ2F0ZSogbWFrZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFNv
dXJjZUxvYyYpOworICAgIFRJbnRlcm1BZ2dyZWdhdGUqIHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKFRJ
bnRlcm1Ob2RlKiwgVE9wZXJhdG9yLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybU5v
ZGUqICBhZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBhaXIgY29k
ZSwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkU2VsZWN0aW9uKFRJ
bnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCog
ZmFsc2VCbG9jaywgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQ29t
bWEoVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNl
TG9jJik7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIGFkZENvbnN0YW50VW5pb24oQ29uc3Rh
bnRVbmlvbiosIGNvbnN0IFRUeXBlJiwgY29uc3QgVFNvdXJjZUxvYyYpOwogICAgIFRJbnRlcm1U
eXBlZCogcHJvbW90ZUNvbnN0YW50VW5pb24oVEJhc2ljVHlwZSwgVEludGVybUNvbnN0YW50VW5p
b24qKSA7Ci0gICAgYm9vbCBwYXJzZUNvbnN0VHJlZShUU291cmNlTG9jLCBUSW50ZXJtTm9kZSos
IENvbnN0YW50VW5pb24qLCBUT3BlcmF0b3IsIFRTeW1ib2xUYWJsZSYsIFRUeXBlLCBib29sIHNp
bmdsZUNvbnN0YW50UGFyYW0gPSBmYWxzZSk7ICAgICAgICAKLSAgICBUSW50ZXJtTm9kZSogYWRk
TG9vcChUTG9vcFR5cGUsIFRJbnRlcm1Ob2RlKiwgVEludGVybVR5cGVkKiwgVEludGVybVR5cGVk
KiwgVEludGVybU5vZGUqLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtQnJhbmNoKiBhZGRCcmFu
Y2goVE9wZXJhdG9yLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtQnJhbmNoKiBhZGRCcmFuY2go
VE9wZXJhdG9yLCBUSW50ZXJtVHlwZWQqLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQq
IGFkZFN3aXp6bGUoVFZlY3RvckZpZWxkcyYsIFRTb3VyY2VMb2MpOworICAgIGJvb2wgcGFyc2VD
b25zdFRyZWUoY29uc3QgVFNvdXJjZUxvYyYsIFRJbnRlcm1Ob2RlKiwgQ29uc3RhbnRVbmlvbios
IFRPcGVyYXRvciwgVFN5bWJvbFRhYmxlJiwgVFR5cGUsIGJvb2wgc2luZ2xlQ29uc3RhbnRQYXJh
bSA9IGZhbHNlKTsgICAgICAgIAorICAgIFRJbnRlcm1Ob2RlKiBhZGRMb29wKFRMb29wVHlwZSwg
VEludGVybU5vZGUqLCBUSW50ZXJtVHlwZWQqLCBUSW50ZXJtVHlwZWQqLCBUSW50ZXJtTm9kZSos
IGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtQnJhbmNoKiBhZGRCcmFuY2goVE9wZXJh
dG9yLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRP
cGVyYXRvciwgVEludGVybVR5cGVkKiwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1U
eXBlZCogYWRkU3dpenpsZShUVmVjdG9yRmllbGRzJiwgY29uc3QgVFNvdXJjZUxvYyYpOwogICAg
IGJvb2wgcG9zdFByb2Nlc3MoVEludGVybU5vZGUqKTsKLQl2b2lkIHJlbW92ZShUSW50ZXJtTm9k
ZSopOworICAgIHZvaWQgcmVtb3ZlKFRJbnRlcm1Ob2RlKik7CiAgICAgdm9pZCBvdXRwdXRUcmVl
KFRJbnRlcm1Ob2RlKik7Ci0gICAgCi1wcm90ZWN0ZWQ6Ci0gICAgVEluZm9TaW5rJiBpbmZvU2lu
azsKIAogcHJpdmF0ZToKICAgICB2b2lkIG9wZXJhdG9yPShUSW50ZXJtZWRpYXRlJik7IC8vIHBy
ZXZlbnQgYXNzaWdubWVudHMKKworICAgIFRJbmZvU2luayYgaW5mb1Npbms7CiB9OwogCiAjZW5k
aWYgLy8gX0xPQ0FMX0lOVEVSTUVESUFURV9JTkNMVURFRF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wYXJzZUNvbnN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHAJKHJldmlzaW9u
IDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wYXJzZUNv
bnN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTYgKzM4LDE2IEBAIHByb3RlY3RlZDoKICAg
ICBib29sIHZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AqKTsKICAgICBib29sIHZp
c2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKik7CiAKLSAgICBpbnQgaW5kZXg7
CisgICAgc2l6ZV90IGluZGV4OwogICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXk7CiAgICAg
VFR5cGUgdHlwZTsKICAgICBUT3BlcmF0b3IgY29uc3RydWN0b3JUeXBlOwogICAgIGJvb2wgc2lu
Z2xlQ29uc3RhbnRQYXJhbTsKICAgICBUSW5mb1NpbmsmIGluZm9TaW5rOwogICAgIFRTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGU7Ci0gICAgaW50IHNpemU7IC8vIHNpemUgb2YgdGhlIGNvbnN0cnVj
dG9yICggNCBmb3IgdmVjNCkKKyAgICBzaXplX3Qgc2l6ZTsgLy8gc2l6ZSBvZiB0aGUgY29uc3Ry
dWN0b3IgKCA0IGZvciB2ZWM0KQogICAgIGJvb2wgaXNNYXRyaXg7Ci0gICAgaW50IG1hdHJpeFNp
emU7IC8vIGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4IChub21pbmFsIHNpemUgYW5kIG5vdCB0aGUg
aW5zdGFuY2Ugc2l6ZSkKKyAgICBzaXplX3QgbWF0cml4U2l6ZTsgLy8gZGltZW5zaW9uIG9mIHRo
ZSBtYXRyaXggKG5vbWluYWwgc2l6ZSBhbmQgbm90IHRoZSBpbnN0YW5jZSBzaXplKQogfTsKIAog
Ly8KQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVjdGVkOgogCiB2b2lkIFRDb25zdFRyYXZlcnNlcjo6
dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCogbm9kZSkKIHsKLSAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJTeW1ib2wgTm9kZSBmb3VuZCBpbiBjb25zdGFu
dCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJTeW1ib2wgTm9kZSBm
b3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOwogICAgIHJldHVybjsKIAogfQpAQCAtNzQs
MTIgKzc0LDEyIEBAIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdEJpbmFyeShWaXNpdAogICAg
ICAgICBUU3RyaW5nIGJ1ZjsKICAgICAgICAgYnVmLmFwcGVuZCgiJ2NvbnN0cnVjdG9yJyA6IGFz
c2lnbmluZyBub24tY29uc3RhbnQgdG8gIik7CiAgICAgICAgIGJ1Zi5hcHBlbmQodHlwZS5nZXRD
b21wbGV0ZVN0cmluZygpKTsKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhF
cnJvciwgYnVmLmNfc3RyKCksIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4RXJyb3IsIG5vZGUtPmdldExpbmUoKSwgYnVmLmNfc3RyKCkpOwog
ICAgICAgICBlcnJvciA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsgIAogICAgIH0KIAot
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmluYXJ5IE5v
ZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5lKCkpOworICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5l
KCksICJCaW5hcnkgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOwogICAgIAog
ICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBUQ29uc3RUcmF2ZXJz
ZXI6OnZpc2l0VW5hcnkoVmlzaXQgdgogICAgIFRTdHJpbmcgYnVmOwogICAgIGJ1Zi5hcHBlbmQo
Iidjb25zdHJ1Y3RvcicgOiBhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvICIpOwogICAgIGJ1Zi5h
cHBlbmQodHlwZS5nZXRDb21wbGV0ZVN0cmluZygpKTsKLSAgICBpbmZvU2luay5pbmZvLm1lc3Nh
Z2UoRVByZWZpeEVycm9yLCBidWYuY19zdHIoKSwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZv
U2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBub2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0
cigpKTsKICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOyAgCiB9CkBAIC0xMDAs
NyArMTAwLDcgQEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpcwogICAg
ICAgICBUU3RyaW5nIGJ1ZjsKICAgICAgICAgYnVmLmFwcGVuZCgiJ2NvbnN0cnVjdG9yJyA6IGFz
c2lnbmluZyBub24tY29uc3RhbnQgdG8gIik7CiAgICAgICAgIGJ1Zi5hcHBlbmQodHlwZS5nZXRD
b21wbGV0ZVN0cmluZygpKTsKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhF
cnJvciwgYnVmLmNfc3RyKCksIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4RXJyb3IsIG5vZGUtPmdldExpbmUoKSwgYnVmLmNfc3RyKCkpOwog
ICAgICAgICBlcnJvciA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsgIAogICAgIH0KQEAg
LTE0NCwyNCArMTQ0LDMxIEBAIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShW
aXMKIAogYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpc2l0LCBU
SW50ZXJtU2VsZWN0aW9uKiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4SW50ZXJuYWxFcnJvciwgIlNlbGVjdGlvbiBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0
cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVBy
ZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIlNlbGVjdGlvbiBOb2RlIGZvdW5k
IGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgZXJyb3IgPSB0cnVlOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAogdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbihU
SW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsKKyAgICBpZiAoIW5vZGUtPmdldFVuaW9uQXJy
YXlQb2ludGVyKCkpCisgICAgeworICAgICAgICAvLyBUaGUgY29uc3RhbnQgd2FzIG5vdCBpbml0
aWFsaXplZCwgdGhpcyBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gbG9nZ2VkCisgICAgICAgIGFz
c2VydChpbmZvU2luay5pbmZvLnNpemUoKSAhPSAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIENvbnN0YW50VW5pb24qIGxlZnRVbmlvbkFycmF5ID0gdW5pb25BcnJheTsKLSAgICBp
bnQgaW5zdGFuY2VTaXplID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90IGluc3Rh
bmNlU2l6ZSA9IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwogCiAgICAgaWYgKGluZGV4ID49IGluc3Rh
bmNlU2l6ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFzaW5nbGVDb25zdGFudFBhcmFt
KSB7Ci0gICAgICAgIGludCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsK
KyAgICAgICAgc2l6ZV90IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwog
ICAgIAogICAgICAgICBDb25zdGFudFVuaW9uICpyaWdodFVuaW9uQXJyYXkgPSBub2RlLT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpOwotICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzaXplOyBpKysp
IHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAg
ICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaW5kZXhdID0gcmlnaHRVbmlvbkFycmF5W2ldOwpA
QCAtMTY5LDExICsxNzYsMTEgQEAgdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRV
bmlvbgogICAgICAgICAgICAgKGluZGV4KSsrOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgaW50IHRvdGFsU2l6ZSA9IGluZGV4ICsgc2l6ZTsKKyAgICAgICAgc2l6ZV90IHRvdGFs
U2l6ZSA9IGluZGV4ICsgc2l6ZTsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqcmlnaHRVbmlvbkFy
cmF5ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKICAgICAgICAgaWYgKCFpc01hdHJp
eCkgewotICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKLSAgICAgICAgICAgIGZvciAoaW50IGkg
PSBpbmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBzaXplX3QgY291bnQg
PSAwOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGluZGV4OyBpIDwgdG90YWxTaXplOyBp
KyspIHsKICAgICAgICAgICAgICAgICBpZiAoaSA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMTg1LDkgKzE5Miw5IEBAIHZvaWQgVENvbnN0VHJhdmVy
c2VyOjp2aXNpdENvbnN0YW50VW5pb24KICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsgIC8vIGZvciBtYXRyaXggY29uc3RydWN0b3Jz
Ci0gICAgICAgICAgICBpbnQgY291bnQgPSAwOwotICAgICAgICAgICAgaW50IGVsZW1lbnQgPSBp
bmRleDsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSBpbmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsr
KSB7CisgICAgICAgICAgICBzaXplX3QgY291bnQgPSAwOworICAgICAgICAgICAgc2l6ZV90IGVs
ZW1lbnQgPSBpbmRleDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBpbmRleDsgaSA8IHRv
dGFsU2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYgKGkgPj0gaW5zdGFuY2VTaXplKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQg
LSBpID09IDAgfHwgKGkgLSBlbGVtZW50KSAlIChtYXRyaXhTaXplICsgMSkgPT0gMCApCkBAIC0y
MDYsMTQgKzIxMywxNCBAQCB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9u
CiAKIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1M
b29wKiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxF
cnJvciwgIkxvb3AgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdl
dExpbmUoKSk7CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCBub2RlLT5nZXRMaW5lKCksICJMb29wIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0
b3IiKTsKICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFRD
b25zdFRyYXZlcnNlcjo6dmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqIG5v
ZGUpCiB7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAi
QnJhbmNoIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5l
KCkpOworICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9k
ZS0+Z2V0TGluZSgpLCAiQnJhbmNoIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3Ii
KTsKICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjIzLDcgKzIz
MCw3IEBAIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdEJyYW5jaChWaXNpdAogLy8gSW5kaXZp
ZHVhbCBmdW5jdGlvbnMgY2FuIGJlIGluaXRpYWxpemVkIHRvIDAgdG8gc2tpcCBwcm9jZXNzaW5n
IG9mIHRoYXQKIC8vIHR5cGUgb2Ygbm9kZS4gIEl0J3MgY2hpbGRyZW4gd2lsbCBzdGlsbCBiZSBw
cm9jZXNzZWQuCiAvLwotYm9vbCBUSW50ZXJtZWRpYXRlOjpwYXJzZUNvbnN0VHJlZShUU291cmNl
TG9jIGxpbmUsIFRJbnRlcm1Ob2RlKiByb290LCBDb25zdGFudFVuaW9uKiB1bmlvbkFycmF5LCBU
T3BlcmF0b3IgY29uc3RydWN0b3JUeXBlLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlLCBUVHlw
ZSB0LCBib29sIHNpbmdsZUNvbnN0YW50UGFyYW0pCitib29sIFRJbnRlcm1lZGlhdGU6OnBhcnNl
Q29uc3RUcmVlKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1Ob2RlKiByb290LCBDb25z
dGFudFVuaW9uKiB1bmlvbkFycmF5LCBUT3BlcmF0b3IgY29uc3RydWN0b3JUeXBlLCBUU3ltYm9s
VGFibGUmIHN5bWJvbFRhYmxlLCBUVHlwZSB0LCBib29sIHNpbmdsZUNvbnN0YW50UGFyYW0pCiB7
CiAgICAgaWYgKHJvb3QgPT0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwCShyZXZpc2lvbiAxNTIzMjMpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJl
c3Npb25QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI0ICsxLDIyIEBACi0vKiBBIEJp
c29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24gMi4zLiAgKi8KKy8qIEEgQmlzb24gcGFyc2Vy
LCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjQuMi4gICovCiAKIC8qIFNrZWxldG9uIGltcGxlbWVudGF0
aW9uIGZvciBCaXNvbidzIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKLQotICAgQ29weXJpZ2h0IChD
KSAxOTg0LCAxOTg5LCAxOTkwLCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2Ci0gICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLQotICAgVGhpcyBwcm9ncmFt
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK
KyAgIAorICAgICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LTE5OTAsIDIwMDAtMjAwNiwgMjAw
OS0yMDEwIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4KKyAgIAorICAgVGhpcyBw
cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt
b2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICBhbnkgbGF0ZXIgdmVyc2lv
bi4KLQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv
ZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgICAKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KKyAgIAogICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25n
IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0g
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuICAqLworICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy
YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAv
KiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IGNyZWF0ZSBhIGxhcmdlciB3b3JrIHRo
YXQgY29udGFpbnMKICAgIHBhcnQgb3IgYWxsIG9mIHRoZSBCaXNvbiBwYXJzZXIgc2tlbGV0b24g
YW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCkBAIC0yOSw3ICsyNyw3IEBACiAgICBzcGVjaWFsIGV4
Y2VwdGlvbiwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcK
ICAgIEJpc29uIG91dHB1dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVy
YWwgUHVibGljCiAgICBMaWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2VwdGlvbi4KLQor
ICAgCiAgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uIGluCiAgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4gICovCiAKQEAgLTQ3
LDcgKzQ1LDcgQEAKICNkZWZpbmUgWVlCSVNPTiAxCiAKIC8qIEJpc29uIHZlcnNpb24uICAqLwot
I2RlZmluZSBZWUJJU09OX1ZFUlNJT04gIjIuMyIKKyNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIy
LjQuMiIKIAogLyogU2tlbGV0b24gbmFtZS4gICovCiAjZGVmaW5lIFlZU0tFTEVUT05fTkFNRSAi
eWFjYy5jIgpAQCAtNTUsNTAgKzUzLDIzIEBACiAvKiBQdXJlIHBhcnNlcnMuICAqLwogI2RlZmlu
ZSBZWVBVUkUgMQogCisvKiBQdXNoIHBhcnNlcnMuICAqLworI2RlZmluZSBZWVBVU0ggMAorCisv
KiBQdWxsIHBhcnNlcnMuICAqLworI2RlZmluZSBZWVBVTEwgMQorCiAvKiBVc2luZyBsb2NhdGlv
bnMuICAqLwogI2RlZmluZSBZWUxTUF9ORUVERUQgMAogCiAvKiBTdWJzdGl0dXRlIHRoZSB2YXJp
YWJsZSBhbmQgZnVuY3Rpb24gbmFtZXMuICAqLwotI2RlZmluZSB5eXBhcnNlIHBwcGFyc2UKLSNk
ZWZpbmUgeXlsZXggICBwcGxleAotI2RlZmluZSB5eWVycm9yIHBwZXJyb3IKLSNkZWZpbmUgeXls
dmFsICBwcGx2YWwKLSNkZWZpbmUgeXljaGFyICBwcGNoYXIKLSNkZWZpbmUgeXlkZWJ1ZyBwcGRl
YnVnCi0jZGVmaW5lIHl5bmVycnMgcHBuZXJycwotCi0KLS8qIFRva2Vucy4gICovCi0jaWZuZGVm
IFlZVE9LRU5UWVBFCi0jIGRlZmluZSBZWVRPS0VOVFlQRQotICAgLyogUHV0IHRoZSB0b2tlbnMg
aW50byB0aGUgc3ltYm9sIHRhYmxlLCBzbyB0aGF0IEdEQiBhbmQgb3RoZXIgZGVidWdnZXJzCi0g
ICAgICBrbm93IGFib3V0IHRoZW0uICAqLwotICAgZW51bSB5eXRva2VudHlwZSB7Ci0gICAgIFRP
S19DT05TVF9JTlQgPSAyNTgsCi0gICAgIFRPS19PUF9PUiA9IDI1OSwKLSAgICAgVE9LX09QX0FO
RCA9IDI2MCwKLSAgICAgVE9LX09QX05FID0gMjYxLAotICAgICBUT0tfT1BfRVEgPSAyNjIsCi0g
ICAgIFRPS19PUF9HRSA9IDI2MywKLSAgICAgVE9LX09QX0xFID0gMjY0LAotICAgICBUT0tfT1Bf
UklHSFQgPSAyNjUsCi0gICAgIFRPS19PUF9MRUZUID0gMjY2LAotICAgICBUT0tfVU5BUlkgPSAy
NjcKLSAgIH07Ci0jZW5kaWYKLS8qIFRva2Vucy4gICovCi0jZGVmaW5lIFRPS19DT05TVF9JTlQg
MjU4Ci0jZGVmaW5lIFRPS19PUF9PUiAyNTkKLSNkZWZpbmUgVE9LX09QX0FORCAyNjAKLSNkZWZp
bmUgVE9LX09QX05FIDI2MQotI2RlZmluZSBUT0tfT1BfRVEgMjYyCi0jZGVmaW5lIFRPS19PUF9H
RSAyNjMKLSNkZWZpbmUgVE9LX09QX0xFIDI2NAotI2RlZmluZSBUT0tfT1BfUklHSFQgMjY1Ci0j
ZGVmaW5lIFRPS19PUF9MRUZUIDI2NgotI2RlZmluZSBUT0tfVU5BUlkgMjY3Ci0KLQorI2RlZmlu
ZSB5eXBhcnNlICAgICAgICAgcHBwYXJzZQorI2RlZmluZSB5eWxleCAgICAgICAgICAgcHBsZXgK
KyNkZWZpbmUgeXllcnJvciAgICAgICAgIHBwZXJyb3IKKyNkZWZpbmUgeXlsdmFsICAgICAgICAg
IHBwbHZhbAorI2RlZmluZSB5eWNoYXIgICAgICAgICAgcHBjaGFyCisjZGVmaW5lIHl5ZGVidWcg
ICAgICAgICBwcGRlYnVnCisjZGVmaW5lIHl5bmVycnMgICAgICAgICBwcG5lcnJzCiAKIAogLyog
Q29weSB0aGUgZmlyc3QgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCkBAIC0xNTgsNiAr
MTI5LDcgQEAgc3RhdGljIGludCB5eWxleChZWVNUWVBFKiBsdmFscCwgQ29udGV4dAogc3RhdGlj
IHZvaWQgeXllcnJvcihDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOwogCiAK
KwogLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KICNpZm5kZWYgWVlERUJVRwogIyBkZWZpbmUgWVlE
RUJVRyAwCkBAIC0xNzYsMjAgKzE0OCwzOSBAQCBzdGF0aWMgdm9pZCB5eWVycm9yKENvbnRleHQq
IGNvbnRleHQsIGNvCiAjIGRlZmluZSBZWVRPS0VOX1RBQkxFIDAKICNlbmRpZgogCisKKy8qIFRv
a2Vucy4gICovCisjaWZuZGVmIFlZVE9LRU5UWVBFCisjIGRlZmluZSBZWVRPS0VOVFlQRQorICAg
LyogUHV0IHRoZSB0b2tlbnMgaW50byB0aGUgc3ltYm9sIHRhYmxlLCBzbyB0aGF0IEdEQiBhbmQg
b3RoZXIgZGVidWdnZXJzCisgICAgICBrbm93IGFib3V0IHRoZW0uICAqLworICAgZW51bSB5eXRv
a2VudHlwZSB7CisgICAgIFRPS19DT05TVF9JTlQgPSAyNTgsCisgICAgIFRPS19PUF9PUiA9IDI1
OSwKKyAgICAgVE9LX09QX0FORCA9IDI2MCwKKyAgICAgVE9LX09QX05FID0gMjYxLAorICAgICBU
T0tfT1BfRVEgPSAyNjIsCisgICAgIFRPS19PUF9HRSA9IDI2MywKKyAgICAgVE9LX09QX0xFID0g
MjY0LAorICAgICBUT0tfT1BfUklHSFQgPSAyNjUsCisgICAgIFRPS19PUF9MRUZUID0gMjY2LAor
ICAgICBUT0tfVU5BUlkgPSAyNjcKKyAgIH07CisjZW5kaWYKKworCisKICNpZiAhIGRlZmluZWQg
WVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQRV9JU19ERUNMQVJFRAogdHlwZWRlZiBpbnQgWVlT
VFlQRTsKKyMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCiAjIGRlZmluZSB5eXN0eXBlIFlZ
U1RZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCiAjIGRlZmluZSBZWVNU
WVBFX0lTX0RFQ0xBUkVEIDEKLSMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCiAjZW5kaWYK
IAogCi0KIC8qIENvcHkgdGhlIHNlY29uZCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8K
IAogCi0vKiBMaW5lIDIxNiBvZiB5YWNjLmMuICAqLwotCiAKICNpZmRlZiBzaG9ydAogIyB1bmRl
ZiBzaG9ydApAQCAtMjY0LDE0ICsyNTUsMTQgQEAgdHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2lu
dDE2OwogI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAg
ICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyBp
bnQKLVlZSUQgKGludCBpKQorWVlJRCAoaW50IHl5aSkKICNlbHNlCiBzdGF0aWMgaW50Ci1ZWUlE
IChpKQotICAgIGludCBpOworWVlJRCAoeXlpKQorICAgIGludCB5eWk7CiAjZW5kaWYKIHsKLSAg
cmV0dXJuIGk7CisgIHJldHVybiB5eWk7CiB9CiAjZW5kaWYKIApAQCAtMzUyLDkgKzM0Myw5IEBA
IHZvaWQgZnJlZSAodm9pZCAqKTsgLyogSU5GUklOR0VTIE9OIFVTRVIKIC8qIEEgdHlwZSB0aGF0
IGlzIHByb3Blcmx5IGFsaWduZWQgZm9yIGFueSBzdGFjayBtZW1iZXIuICAqLwogdW5pb24geXlh
bGxvYwogewotICB5eXR5cGVfaW50MTYgeXlzczsKLSAgWVlTVFlQRSB5eXZzOwotICB9OworICB5
eXR5cGVfaW50MTYgeXlzc19hbGxvYzsKKyAgWVlTVFlQRSB5eXZzX2FsbG9jOworfTsKIAogLyog
VGhlIHNpemUgb2YgdGhlIG1heGltdW0gZ2FwIGJldHdlZW4gb25lIGFsaWduZWQgc3RhY2sgYW5k
IHRoZSBuZXh0LiAgKi8KICMgZGVmaW5lIFlZU1RBQ0tfR0FQX01BWElNVU0gKHNpemVvZiAodW5p
b24geXlhbGxvYykgLSAxKQpAQCAtMzg4LDEyICszNzksMTIgQEAgdW5pb24geXlhbGxvYwogICAg
ZWxlbWVudHMgaW4gdGhlIHN0YWNrLCBhbmQgWVlQVFIgZ2l2ZXMgdGhlIG5ldyBsb2NhdGlvbiBv
ZiB0aGUKICAgIHN0YWNrLiAgQWR2YW5jZSBZWVBUUiB0byBhIHByb3Blcmx5IGFsaWduZWQgbG9j
YXRpb24gZm9yIHRoZSBuZXh0CiAgICBzdGFjay4gICovCi0jIGRlZmluZSBZWVNUQUNLX1JFTE9D
QVRFKFN0YWNrKQkJCQkJXAorIyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FURShTdGFja19hbGxvYywg
U3RhY2spCQkJCVwKICAgICBkbwkJCQkJCQkJCVwKICAgICAgIHsJCQkJCQkJCQlcCiAJWVlTSVpF
X1QgeXluZXdieXRlczsJCQkJCQlcCi0JWVlDT1BZICgmeXlwdHItPlN0YWNrLCBTdGFjaywgeXlz
aXplKTsJCQkJXAotCVN0YWNrID0gJnl5cHRyLT5TdGFjazsJCQkJCQlcCisJWVlDT1BZICgmeXlw
dHItPlN0YWNrX2FsbG9jLCBTdGFjaywgeXlzaXplKTsJCQlcCisJU3RhY2sgPSAmeXlwdHItPlN0
YWNrX2FsbG9jOwkJCQkJXAogCXl5bmV3Ynl0ZXMgPSB5eXN0YWNrc2l6ZSAqIHNpemVvZiAoKlN0
YWNrKSArIFlZU1RBQ0tfR0FQX01BWElNVU07IFwKIAl5eXB0ciArPSB5eW5ld2J5dGVzIC8gc2l6
ZW9mICgqeXlwdHIpOwkJCQlcCiAgICAgICB9CQkJCQkJCQkJXApAQCAtNDgyLDkgKzQ3Myw5IEBA
IHN0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5eXJoc1tdID0KIC8qIFlZUkxJTkVbWVlOXSAtLSBz
b3VyY2UgbGluZSB3aGVyZSBydWxlIG51bWJlciBZWU4gd2FzIGRlZmluZWQuICAqLwogc3RhdGlj
IGNvbnN0IHl5dHlwZV91aW50OCB5eXJsaW5lW10gPQogewotICAgICAgIDAsICAgIDkxLCAgICA5
MSwgICAgOTgsICAgIDk5LCAgIDEwMiwgICAxMDUsICAgMTA4LCAgIDExMSwgICAxMTQsCi0gICAg
IDExNywgICAxMjAsICAgMTIzLCAgIDEyNiwgICAxMjksICAgMTMyLCAgIDEzNSwgICAxMzgsICAg
MTQxLCAgIDE0NCwKLSAgICAgMTU3LCAgIDE3MCwgICAxNzMsICAgMTc2LCAgIDE3OSwgICAxODIs
ICAgMTg1CisgICAgICAgMCwgICAgOTAsICAgIDkwLCAgICA5NywgICAgOTgsICAgMTAxLCAgIDEw
NCwgICAxMDcsICAgMTEwLCAgIDExMywKKyAgICAgMTE2LCAgIDExOSwgICAxMjIsICAgMTI1LCAg
IDEyOCwgICAxMzEsICAgMTM0LCAgIDEzNywgICAxNDAsICAgMTQzLAorICAgICAxNTYsICAgMTY5
LCAgIDE3MiwgICAxNzUsICAgMTc4LCAgIDE4MSwgICAxODQKIH07CiAjZW5kaWYKIApAQCAtNjM5
LDkgKzYzMCwxOCBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KIAogLyog
TGlrZSBZWUVSUk9SIGV4Y2VwdCBkbyBjYWxsIHl5ZXJyb3IuICBUaGlzIHJlbWFpbnMgaGVyZSB0
ZW1wb3JhcmlseQogICAgdG8gZWFzZSB0aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3IG1lYW5pbmcg
b2YgWVlFUlJPUiwgZm9yIEdDQy4KLSAgIE9uY2UgR0NDIHZlcnNpb24gMiBoYXMgc3VwcGxhbnRl
ZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdvLiAgKi8KKyAgIE9uY2UgR0NDIHZlcnNpb24gMiBoYXMg
c3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdvLiAgSG93ZXZlciwKKyAgIFlZRkFJTCBh
cHBlYXJzIHRvIGJlIGluIHVzZS4gIE5ldmVydGhlbGVzcywgaXQgaXMgZm9ybWFsbHkgZGVwcmVj
YXRlZAorICAgaW4gQmlzb24gMi40LjIncyBORVdTIGVudHJ5LCB3aGVyZSBhIHBsYW4gdG8gcGhh
c2UgaXQgb3V0IGlzCisgICBkaXNjdXNzZWQuICAqLwogCiAjZGVmaW5lIFlZRkFJTAkJZ290byB5
eWVycmxhYgorI2lmIGRlZmluZWQgWVlGQUlMCisgIC8qIFRoaXMgaXMgaGVyZSB0byBzdXBwcmVz
cyB3YXJuaW5ncyBmcm9tIHRoZSBHQ0MgY3BwJ3MKKyAgICAgLVd1bnVzZWQtbWFjcm9zLiAgTm9y
bWFsbHkgd2UgZG9uJ3Qgd29ycnkgYWJvdXQgdGhhdCB3YXJuaW5nLCBidXQKKyAgICAgc29tZSB1
c2VycyBkbywgYW5kIHdlIHdhbnQgdG8gbWFrZSBpdCBlYXN5IGZvciB1c2VycyB0byByZW1vdmUK
KyAgICAgWVlGQUlMIHVzZXMsIHdoaWNoIHdpbGwgcHJvZHVjZSB3YXJuaW5ncyBmcm9tIEJpc29u
IDIuNS4gICovCisjZW5kaWYKIAogI2RlZmluZSBZWVJFQ09WRVJJTkcoKSAgKCEheXllcnJzdGF0
dXMpCiAKQEAgLTgxMiwxNyArODEyLDIwIEBAIHl5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5
dHlwZSwgeXl2YWwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5D
X18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBz
dGF0aWMgdm9pZAoteXlfc3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqYm90dG9tLCB5eXR5cGVf
aW50MTYgKnRvcCkKK3l5X3N0YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKnl5Ym90dG9tLCB5eXR5
cGVfaW50MTYgKnl5dG9wKQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zdGFja19wcmludCAoYm90
dG9tLCB0b3ApCi0gICAgeXl0eXBlX2ludDE2ICpib3R0b207Ci0gICAgeXl0eXBlX2ludDE2ICp0
b3A7Cit5eV9zdGFja19wcmludCAoeXlib3R0b20sIHl5dG9wKQorICAgIHl5dHlwZV9pbnQxNiAq
eXlib3R0b207CisgICAgeXl0eXBlX2ludDE2ICp5eXRvcDsKICNlbmRpZgogewogICBZWUZQUklO
VEYgKHN0ZGVyciwgIlN0YWNrIG5vdyIpOwotICBmb3IgKDsgYm90dG9tIDw9IHRvcDsgKytib3R0
b20pCi0gICAgWVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCAqYm90dG9tKTsKKyAgZm9yICg7IHl5
Ym90dG9tIDw9IHl5dG9wOyB5eWJvdHRvbSsrKQorICAgIHsKKyAgICAgIGludCB5eWJvdCA9ICp5
eWJvdHRvbTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgeXlib3QpOworICAgIH0K
ICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwogfQogCkBAIC04NTcsMTEgKzg2MCwxMSBAQCB5
eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eXJ1bGUsIGNvbnRleHQpCiAgIC8qIFRoZSBzeW1ib2xz
IGJlaW5nIHJlZHVjZWQuICAqLwogICBmb3IgKHl5aSA9IDA7IHl5aSA8IHl5bnJoczsgeXlpKysp
CiAgICAgewotICAgICAgZnByaW50ZiAoc3RkZXJyLCAiICAgJCVkID0gIiwgeXlpICsgMSk7Cisg
ICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOwogICAgICAgeXlf
c3ltYm9sX3ByaW50IChzdGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVdICsgeXlpXSwKIAkJICAg
ICAgICYoeXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQogCQkgICAgICAgCQkgICAgICAgLCBj
b250ZXh0KTsKLSAgICAgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7CisgICAgICBZWUZQUklOVEYg
KHN0ZGVyciwgIlxuIik7CiAgICAgfQogfQogCkBAIC0xMTQzLDEwICsxMTQ2LDggQEAgeXlkZXN0
cnVjdCAoeXltc2csIHl5dHlwZSwgeXl2YWx1ZXAsIGNvbgogCWJyZWFrOwogICAgIH0KIH0KLQwK
IAogLyogUHJldmVudCB3YXJuaW5ncyBmcm9tIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KLQog
I2lmZGVmIFlZUEFSU0VfUEFSQU0KICNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19j
cGx1c3BsdXMKIGludCB5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFNKTsKQEAgLTExNjUsMTAg
KzExNjYsOSBAQCBpbnQgeXlwYXJzZSAoKTsKIAogCiAKLQotLyotLS0tLS0tLS0tLgotfCB5eXBh
cnNlLiAgfAotYC0tLS0tLS0tLS0qLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5
eXBhcnNlIG9yIHl5cHVzaF9wYXJzZS4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K
IAogI2lmZGVmIFlZUEFSU0VfUEFSQU0KICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVk
IF9fQzk5X19GVU5DX18gXApAQCAtMTE5MiwyMiArMTE5Miw0NiBAQCB5eXBhcnNlIChjb250ZXh0
KQogI2VuZGlmCiAjZW5kaWYKIHsKLSAgLyogVGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KKy8q
IFRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KIGludCB5eWNoYXI7CiAKLS8qIFRoZSBzZW1hbnRp
YyB2YWx1ZSBvZiB0aGUgbG9vay1haGVhZCBzeW1ib2wuICAqLworLyogVGhlIHNlbWFudGljIHZh
bHVlIG9mIHRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KIFlZU1RZUEUgeXlsdmFsOwogCi0vKiBO
dW1iZXIgb2Ygc3ludGF4IGVycm9ycyBzbyBmYXIuICAqLwotaW50IHl5bmVycnM7CisgICAgLyog
TnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KKyAgICBpbnQgeXluZXJyczsKKwor
ICAgIGludCB5eXN0YXRlOworICAgIC8qIE51bWJlciBvZiB0b2tlbnMgdG8gc2hpZnQgYmVmb3Jl
IGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLworICAgIGludCB5eWVycnN0YXR1czsKKworICAg
IC8qIFRoZSBzdGFja3MgYW5kIHRoZWlyIHRvb2xzOgorICAgICAgIGB5eXNzJzogcmVsYXRlZCB0
byBzdGF0ZXMuCisgICAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcy4KKwor
ICAgICAgIFJlZmVyIHRvIHRoZSBzdGFja3MgdGhydSBzZXBhcmF0ZSBwb2ludGVycywgdG8gYWxs
b3cgeXlvdmVyZmxvdworICAgICAgIHRvIHJlYWxsb2NhdGUgdGhlbSBlbHNld2hlcmUuICAqLwor
CisgICAgLyogVGhlIHN0YXRlIHN0YWNrLiAgKi8KKyAgICB5eXR5cGVfaW50MTYgeXlzc2FbWVlJ
TklUREVQVEhdOworICAgIHl5dHlwZV9pbnQxNiAqeXlzczsKKyAgICB5eXR5cGVfaW50MTYgKnl5
c3NwOworCisgICAgLyogVGhlIHNlbWFudGljIHZhbHVlIHN0YWNrLiAgKi8KKyAgICBZWVNUWVBF
IHl5dnNhW1lZSU5JVERFUFRIXTsKKyAgICBZWVNUWVBFICp5eXZzOworICAgIFlZU1RZUEUgKnl5
dnNwOworCisgICAgWVlTSVpFX1QgeXlzdGFja3NpemU7CiAKLSAgaW50IHl5c3RhdGU7CiAgIGlu
dCB5eW47CiAgIGludCB5eXJlc3VsdDsKLSAgLyogTnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBi
ZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4gICovCi0gIGludCB5eWVycnN0YXR1czsKLSAg
LyogTG9vay1haGVhZCB0b2tlbiBhcyBhbiBpbnRlcm5hbCAodHJhbnNsYXRlZCkgdG9rZW4gbnVt
YmVyLiAgKi8KLSAgaW50IHl5dG9rZW4gPSAwOworICAvKiBMb29rYWhlYWQgdG9rZW4gYXMgYW4g
aW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4gICovCisgIGludCB5eXRva2VuOwor
ICAvKiBUaGUgdmFyaWFibGVzIHVzZWQgdG8gcmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2Nh
dGlvbiBmcm9tIHRoZQorICAgICBhY3Rpb24gcm91dGluZXMuICAqLworICBZWVNUWVBFIHl5dmFs
OworCiAjaWYgWVlFUlJPUl9WRVJCT1NFCiAgIC8qIEJ1ZmZlciBmb3IgZXJyb3IgbWVzc2FnZXMs
IGFuZCBpdHMgYWxsb2NhdGVkIHNpemUuICAqLwogICBjaGFyIHl5bXNnYnVmWzEyOF07CkBAIC0x
MjE1LDUxICsxMjM5LDI4IEBAIGludCB5eW5lcnJzOwogICBZWVNJWkVfVCB5eW1zZ19hbGxvYyA9
IHNpemVvZiB5eW1zZ2J1ZjsKICNlbmRpZgogCi0gIC8qIFRocmVlIHN0YWNrcyBhbmQgdGhlaXIg
dG9vbHM6Ci0gICAgIGB5eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMsCi0gICAgIGB5eXZzJzogcmVs
YXRlZCB0byBzZW1hbnRpYyB2YWx1ZXMsCi0gICAgIGB5eWxzJzogcmVsYXRlZCB0byBsb2NhdGlv
bnMuCi0KLSAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0aHJ1IHNlcGFyYXRlIHBvaW50ZXJzLCB0
byBhbGxvdyB5eW92ZXJmbG93Ci0gICAgIHRvIHJlYWxsb2NhdGUgdGhlbSBlbHNld2hlcmUuICAq
LwotCi0gIC8qIFRoZSBzdGF0ZSBzdGFjay4gICovCi0gIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlO
SVRERVBUSF07Ci0gIHl5dHlwZV9pbnQxNiAqeXlzcyA9IHl5c3NhOwotICB5eXR5cGVfaW50MTYg
Knl5c3NwOwotCi0gIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCi0gIFlZU1RZUEUg
eXl2c2FbWVlJTklUREVQVEhdOwotICBZWVNUWVBFICp5eXZzID0geXl2c2E7Ci0gIFlZU1RZUEUg
Knl5dnNwOwotCi0KLQogI2RlZmluZSBZWVBPUFNUQUNLKE4pICAgKHl5dnNwIC09IChOKSwgeXlz
c3AgLT0gKE4pKQogCi0gIFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7Ci0KLSAg
LyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1ZSBhbmQgbG9jYXRp
b24gZnJvbSB0aGUKLSAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KLSAgWVlTVFlQRSB5eXZhbDsK
LQotCiAgIC8qIFRoZSBudW1iZXIgb2Ygc3ltYm9scyBvbiB0aGUgUkhTIG9mIHRoZSByZWR1Y2Vk
IHJ1bGUuCiAgICAgIEtlZXAgdG8gemVybyB3aGVuIG5vIHN5bWJvbCBzaG91bGQgYmUgcG9wcGVk
LiAgKi8KICAgaW50IHl5bGVuID0gMDsKIAorICB5eXRva2VuID0gMDsKKyAgeXlzcyA9IHl5c3Nh
OworICB5eXZzID0geXl2c2E7CisgIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7CisKICAgWVlE
UFJJTlRGICgoc3RkZXJyLCAiU3RhcnRpbmcgcGFyc2VcbiIpKTsKIAogICB5eXN0YXRlID0gMDsK
ICAgeXllcnJzdGF0dXMgPSAwOwogICB5eW5lcnJzID0gMDsKLSAgeXljaGFyID0gWVlFTVBUWTsJ
CS8qIENhdXNlIGEgdG9rZW4gdG8gYmUgcmVhZC4gICovCisgIHl5Y2hhciA9IFlZRU1QVFk7IC8q
IENhdXNlIGEgdG9rZW4gdG8gYmUgcmVhZC4gICovCiAKICAgLyogSW5pdGlhbGl6ZSBzdGFjayBw
b2ludGVycy4KICAgICAgV2FzdGUgb25lIGVsZW1lbnQgb2YgdmFsdWUgYW5kIGxvY2F0aW9uIHN0
YWNrCiAgICAgIHNvIHRoYXQgdGhleSBzdGF5IG9uIHRoZSBzYW1lIGxldmVsIGFzIHRoZSBzdGF0
ZSBzdGFjay4KICAgICAgVGhlIHdhc3RlZCBlbGVtZW50cyBhcmUgbmV2ZXIgaW5pdGlhbGl6ZWQu
ICAqLwotCiAgIHl5c3NwID0geXlzczsKICAgeXl2c3AgPSB5eXZzOwogCkBAIC0xMjg5LDcgKzEy
OTAsNiBAQCBpbnQgeXluZXJyczsKIAlZWVNUWVBFICp5eXZzMSA9IHl5dnM7CiAJeXl0eXBlX2lu
dDE2ICp5eXNzMSA9IHl5c3M7CiAKLQogCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlz
IGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQogCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQgc3Rh
Y2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKIAkgICBjb25kaXRpb25hbCBhcm91bmQg
anVzdCB0aGUgdHdvIGV4dHJhIGFyZ3MsIGJ1dCB0aGF0IG1pZ2h0CkBAIC0xMjk3LDcgKzEyOTcs
NiBAQCBpbnQgeXluZXJyczsKIAl5eW92ZXJmbG93IChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwK
IAkJICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9mICgqeXlzc3ApLAogCQkgICAgJnl5dnMxLCB5
eXNpemUgKiBzaXplb2YgKCp5eXZzcCksCi0KIAkJICAgICZ5eXN0YWNrc2l6ZSk7CiAKIAl5eXNz
ID0geXlzczE7CkBAIC0xMzIwLDkgKzEzMTksOCBAQCBpbnQgeXluZXJyczsKIAkgICh1bmlvbiB5
eWFsbG9jICopIFlZU1RBQ0tfQUxMT0MgKFlZU1RBQ0tfQllURVMgKHl5c3RhY2tzaXplKSk7CiAJ
aWYgKCEgeXlwdHIpCiAJICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwotCVlZU1RBQ0tfUkVMT0NBVEUg
KHl5c3MpOwotCVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnMpOwotCisJWVlTVEFDS19SRUxPQ0FURSAo
eXlzc19hbGxvYywgeXlzcyk7CisJWVlTVEFDS19SRUxPQ0FURSAoeXl2c19hbGxvYywgeXl2cyk7
CiAjICB1bmRlZiBZWVNUQUNLX1JFTE9DQVRFCiAJaWYgKHl5c3MxICE9IHl5c3NhKQogCSAgWVlT
VEFDS19GUkVFICh5eXNzMSk7CkBAIC0xMzMzLDcgKzEzMzEsNiBAQCBpbnQgeXluZXJyczsKICAg
ICAgIHl5c3NwID0geXlzcyArIHl5c2l6ZSAtIDE7CiAgICAgICB5eXZzcCA9IHl5dnMgKyB5eXNp
emUgLSAxOwogCi0KICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YWNrIHNpemUgaW5jcmVh
c2VkIHRvICVsdVxuIiwKIAkJICAodW5zaWduZWQgbG9uZyBpbnQpIHl5c3RhY2tzaXplKSk7CiAK
QEAgLTEzNDMsNiArMTM0MCw5IEBAIGludCB5eW5lcnJzOwogCiAgIFlZRFBSSU5URiAoKHN0ZGVy
ciwgIkVudGVyaW5nIHN0YXRlICVkXG4iLCB5eXN0YXRlKSk7CiAKKyAgaWYgKHl5c3RhdGUgPT0g
WVlGSU5BTCkKKyAgICBZWUFDQ0VQVDsKKwogICBnb3RvIHl5YmFja3VwOwogCiAvKi0tLS0tLS0t
LS0tLgpAQCAtMTM1MSwxNiArMTM1MSwxNiBAQCBpbnQgeXluZXJyczsKIHl5YmFja3VwOgogCiAg
IC8qIERvIGFwcHJvcHJpYXRlIHByb2Nlc3NpbmcgZ2l2ZW4gdGhlIGN1cnJlbnQgc3RhdGUuICBS
ZWFkIGEKLSAgICAgbG9vay1haGVhZCB0b2tlbiBpZiB3ZSBuZWVkIG9uZSBhbmQgZG9uJ3QgYWxy
ZWFkeSBoYXZlIG9uZS4gICovCisgICAgIGxvb2thaGVhZCB0b2tlbiBpZiB3ZSBuZWVkIG9uZSBh
bmQgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCiAKLSAgLyogRmlyc3QgdHJ5IHRvIGRlY2lk
ZSB3aGF0IHRvIGRvIHdpdGhvdXQgcmVmZXJlbmNlIHRvIGxvb2stYWhlYWQgdG9rZW4uICAqLwor
ICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91dCByZWZlcmVuY2UgdG8g
bG9va2FoZWFkIHRva2VuLiAgKi8KICAgeXluID0geXlwYWN0W3l5c3RhdGVdOwogICBpZiAoeXlu
ID09IFlZUEFDVF9OSU5GKQogICAgIGdvdG8geXlkZWZhdWx0OwogCi0gIC8qIE5vdCBrbm93biA9
PiBnZXQgYSBsb29rLWFoZWFkIHRva2VuIGlmIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLwor
ICAvKiBOb3Qga25vd24gPT4gZ2V0IGEgbG9va2FoZWFkIHRva2VuIGlmIGRvbid0IGFscmVhZHkg
aGF2ZSBvbmUuICAqLwogCi0gIC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRiBv
ciBhIHZhbGlkIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KKyAgLyogWVlDSEFSIGlzIGVpdGhlciBZ
WUVNUFRZIG9yIFlZRU9GIG9yIGEgdmFsaWQgbG9va2FoZWFkIHN5bWJvbC4gICovCiAgIGlmICh5
eWNoYXIgPT0gWVlFTVBUWSkKICAgICB7CiAgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJSZWFk
aW5nIGEgdG9rZW46ICIpKTsKQEAgLTEzOTIsMjAgKzEzOTIsMTYgQEAgeXliYWNrdXA6CiAgICAg
ICBnb3RvIHl5cmVkdWNlOwogICAgIH0KIAotICBpZiAoeXluID09IFlZRklOQUwpCi0gICAgWVlB
Q0NFUFQ7Ci0KICAgLyogQ291bnQgdG9rZW5zIHNoaWZ0ZWQgc2luY2UgZXJyb3I7IGFmdGVyIHRo
cmVlLCB0dXJuIG9mZiBlcnJvcgogICAgICBzdGF0dXMuICAqLwogICBpZiAoeXllcnJzdGF0dXMp
CiAgICAgeXllcnJzdGF0dXMtLTsKIAotICAvKiBTaGlmdCB0aGUgbG9vay1haGVhZCB0b2tlbi4g
ICovCisgIC8qIFNoaWZ0IHRoZSBsb29rYWhlYWQgdG9rZW4uICAqLwogICBZWV9TWU1CT0xfUFJJ
TlQgKCJTaGlmdGluZyIsIHl5dG9rZW4sICZ5eWx2YWwsICZ5eWxsb2MpOwogCi0gIC8qIERpc2Nh
cmQgdGhlIHNoaWZ0ZWQgdG9rZW4gdW5sZXNzIGl0IGlzIGVvZi4gICovCi0gIGlmICh5eWNoYXIg
IT0gWVlFT0YpCi0gICAgeXljaGFyID0gWVlFTVBUWTsKKyAgLyogRGlzY2FyZCB0aGUgc2hpZnRl
ZCB0b2tlbi4gICovCisgIHl5Y2hhciA9IFlZRU1QVFk7CiAKICAgeXlzdGF0ZSA9IHl5bjsKICAg
KisreXl2c3AgPSB5eWx2YWw7CkBAIC0xNDQ5LDExMiArMTQ0NSwxMTIgQEAgeXlyZWR1Y2U6CiAg
ICAgewogICAgICAgICAqKGNvbnRleHQtPnJlc3VsdCkgPSBzdGF0aWNfY2FzdDxpbnQ+KCh5eXZz
cFsoMSkgLSAoMSldKSk7CiAgICAgICAgIFlZQUNDRVBUOwotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgNDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkg
LSAoMyldKSB8fCAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSA1OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgz
KV0pICYmICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkg
fCAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSA3OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIF4gKHl5
dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgODoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAmICh5eXZzcFso
MykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDk6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgIT0gKHl5dnNwWygzKSAt
ICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTA6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPT0gKHl5dnNwWygzKSAtICgz
KV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTE6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPj0gKHl5dnNwWygzKSAtICgzKV0p
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPD0gKHl5dnNwWygzKSAtICgzKV0pOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTM6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNDoKIAogICAgIHsKICAgICAgICAgKHl5
dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA8ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE1OgogCiAgICAgewogICAgICAgICAoeXl2YWwp
ID0gKHl5dnNwWygxKSAtICgzKV0pID4+ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDE2OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0g
KHl5dnNwWygxKSAtICgzKV0pIDw8ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDE3OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5
dnNwWygxKSAtICgzKV0pIC0gKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3Bb
KDEpIC0gKDMpXSkgKyAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxOToKQEAgLTE1NzEsNyArMTU2Nyw3IEBAIHl5cmVkdWNlOgogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAlICh5
eXZzcFsoMykgLSAoMyldKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMjA6CkBAIC0xNTg4LDUzICsxNTg0LDUyIEBAIHl5cmVkdWNlOgogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAvICh5eXZz
cFsoMykgLSAoMyldKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMjE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkg
KiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAyMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICEgKHl5dnNwWygyKSAtICgyKV0pOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjM6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbCkgPSB+ICh5eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDI0OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gLSAoeXl2c3BbKDIp
IC0gKDIpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNToKIAogICAg
IHsKICAgICAgICAgKHl5dmFsKSA9ICsgKHl5dnNwWygyKSAtICgyKV0pOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAo
eXl2c3BbKDIpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKIAotLyogTGlu
ZSAxMjY3IG9mIHlhY2MuYy4gICovCiAKICAgICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgIH0KQEAg
LTE2NDYsNyArMTY0MSw2IEBAIHl5cmVkdWNlOgogCiAgICorK3l5dnNwID0geXl2YWw7CiAKLQog
ICAvKiBOb3cgYHNoaWZ0JyB0aGUgcmVzdWx0IG9mIHRoZSByZWR1Y3Rpb24uICBEZXRlcm1pbmUg
d2hhdCBzdGF0ZQogICAgICB0aGF0IGdvZXMgdG8sIGJhc2VkIG9uIHRoZSBzdGF0ZSB3ZSBwb3Bw
ZWQgYmFjayB0byBhbmQgdGhlIHJ1bGUKICAgICAgbnVtYmVyIHJlZHVjZWQgYnkuICAqLwpAQCAt
MTcxMSw3ICsxNzA1LDcgQEAgeXllcnJsYWI6CiAKICAgaWYgKHl5ZXJyc3RhdHVzID09IDMpCiAg
ICAgewotICAgICAgLyogSWYganVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2stYWhl
YWQgdG9rZW4gYWZ0ZXIgYW4KKyAgICAgIC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byBy
ZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIgYW4KIAkgZXJyb3IsIGRpc2NhcmQgaXQuICAqLwog
CiAgICAgICBpZiAoeXljaGFyIDw9IFlZRU9GKQpAQCAtMTcyOCw3ICsxNzIyLDcgQEAgeXllcnJs
YWI6CiAJfQogICAgIH0KIAotICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2stYWhlYWQg
dG9rZW4gYWZ0ZXIgc2hpZnRpbmcgdGhlIGVycm9yCisgIC8qIEVsc2Ugd2lsbCB0cnkgdG8gcmV1
c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgogICAgICB0b2tlbi4g
ICovCiAgIGdvdG8geXllcnJsYWIxOwogCkBAIC0xNzg1LDkgKzE3NzksNiBAQCB5eWVycmxhYjE6
CiAgICAgICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwogICAgIH0KIAotICBpZiAoeXlu
ID09IFlZRklOQUwpCi0gICAgWVlBQ0NFUFQ7Ci0KICAgKisreXl2c3AgPSB5eWx2YWw7CiAKIApA
QCAtMTgxMiw3ICsxODAzLDcgQEAgeXlhYm9ydGxhYjoKICAgeXlyZXN1bHQgPSAxOwogICBnb3Rv
IHl5cmV0dXJuOwogCi0jaWZuZGVmIHl5b3ZlcmZsb3cKKyNpZiAhZGVmaW5lZCh5eW92ZXJmbG93
KSB8fCBZWUVSUk9SX1ZFUkJPU0UKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS4KIHwgeXlleGhhdXN0ZWRsYWIgLS0gbWVtb3J5IGV4aGF1c3Rpb24g
Y29tZXMgaGVyZS4gIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8KQEAgLTE4MjMsNyArMTgxNCw3IEBAIHl5ZXhoYXVzdGVkbGFiOgogI2VuZGlm
CiAKIHl5cmV0dXJuOgotICBpZiAoeXljaGFyICE9IFlZRU9GICYmIHl5Y2hhciAhPSBZWUVNUFRZ
KQorICBpZiAoeXljaGFyICE9IFlZRU1QVFkpCiAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBk
aXNjYXJkaW5nIGxvb2thaGVhZCIsCiAJCSB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKICAg
LyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hpY2ggYWN0aW9uIHRy
aWdnZXJlZApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RpbWlu
Zy9SZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RpbWluZy9SZXN0cmljdFZlcnRleFNoYWRlclRp
bWluZy5jcHAJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBAIHZvaWQgUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmc6
OnZpc2l0U3kKIHsKICAgICBpZiAoSXNTYW1wbGVyKG5vZGUtPmdldEJhc2ljVHlwZSgpKSkgewog
ICAgICAgICArK21OdW1FcnJvcnM7Ci0gICAgICAgIG1TaW5rLnByZWZpeChFUHJlZml4RXJyb3Ip
OwotICAgICAgICBtU2luay5sb2NhdGlvbihub2RlLT5nZXRMaW5lKCkpOwotICAgICAgICBtU2lu
ayA8PCAiU2FtcGxlcnMgYXJlIG5vdCBwZXJtaXR0ZWQgaW4gdmVydGV4IHNoYWRlcnMuXG4iOwor
ICAgICAgICBtU2luay5tZXNzYWdlKEVQcmVmaXhFcnJvciwKKyAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5nZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgIlNhbXBsZXJzIGFyZSBu
b3QgcGVybWl0dGVkIGluIHZlcnRleCBzaGFkZXJzIik7CiAgICAgfQogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTUyNTYwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDctMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBBTkdMRSB0byByMjI0OS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODU1MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6IFJlbmFtZWQgRGV0ZWN0UmVjdXJzaW9uIHRvIERldGVjdENhbGxEZXB0aCBhbmQg
YWRkZWQgYnVpbHRpbl9zeW1ib2xfdGFibGUuCisKIDIwMTMtMDctMTAgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSYW5nZS5nZXRDbGllbnRSZWN0cygpIG5vdCB3b3Jr
aW5nIGNvcnJlY3RseSBmb3IgcGFydGlhbGx5IGNvbnRhaW5lZCB2ZXJ0aWNhbGx5IHN0eWxlZCB0
ZXh0IG5vZGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTUyMzIzKQorKysg
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI4NjMsNiAr
Mjg2Myw3IEBAIGlmIChXVEZfVVNFXzNEX0dSQVBISUNTKQogICAgIGVuZGlmICgpCiAKICAgICBs
aXN0KEFQUEVORCBBTkdMRVN1cHBvcnRfU09VUkNFUworICAgICAgICAke1RISVJEUEFSVFlfRElS
fS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwCiAgICAgICAgICR7
VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRv
ci5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0NvZGVH
ZW5HTFNMLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIv
Q29tcGlsZXIuY3BwCkBAIC0yODczLDggKzI4NzQsOCBAQCBpZiAoV1RGX1VTRV8zRF9HUkFQSElD
UykKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBo
L0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FO
R0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwCiAgICAg
ICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRl
bmN5R3JhcGhUcmF2ZXJzZS5jcHAKKyAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3Jj
L2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0v
QU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwCi0gICAgICAgICR7VEhJ
UkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwCiAgICAg
ICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNw
cAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1Npbmsu
Y3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFs
aXplLmNwcAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206566</attachid>
            <date>2013-07-12 12:38:11 -0700</date>
            <delta_ts>2013-07-12 16:30:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118550-20130712123554.patch</filename>
            <type>text/plain</type>
            <size>1894245</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI1NCBAQAorMjAxMy0wNy0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFOR0xFIGZyb20gcjE5ODcgdG8gcjI0MjYgd2hpbGUg
a2VlcGluZyB0aGVzZSB0d28gcHJldmlvdXMgY2hhbmdlczoKKyAgICAgICAgS2VlcGluZyAjaWYg
ZGVmaW5lZChfTVNDX1ZFUikgYXJvdW5kICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzE4KSBp
biBEZXBlbmRlbmN5R3JhcGguY3BwLgorICAgICAgICBLZWVwaW5nIGluY2x1ZGUga2hycGxhdGZv
cm0uaCBpbnN0ZWFkIG9mIEtIUi9raHJwbGF0Zm9ybS5oIGluIFNoYWRlckxhbmcuaC4KKyAgICAg
ICAgQWRkZWQgc3RhdGljX2Nhc3RzIGluIEludGVybWVkaWF0ZS5jcHAgdG8gZml4IGNvbXBpbGlu
ZyBvbiBNYWMuCisgICAgICAgIEFkZGVkIHN0YXRpY19jYXN0cyBpbiBUeXBlcy5oIHRvIGZpeCBj
b21waWxpbmcgZm9yIEdUSy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE4NTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBBTkdMRS5wbGlzdDogVXBkYXRlZCByZXZpc2lvbiBvZiBBTkdMRSB0byAy
NDI2LgorICAgICAgICAqIEFOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgICAgIFJl
bmFtZWQgRGV0ZWN0UmVjdXJzaW9uIHRvIERldGVjdENhbGxEZXB0aCBhbmQgYWRkZWQgYnVpbHRp
bl9zeW1ib2xfdGFibGUuCisgICAgICAgICogaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaDoK
KyAgICAgICAgKiBzcmMvY29tbW9uL3ZlcnNpb24uaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
QmFzZVR5cGVzLmg6CisgICAgICAgIChnZXRRdWFsaWZpZXJTdHJpbmcpOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9Db21tb24uaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29tcGlsZXIuY3Bw
OgorICAgICAgICAoVENvbXBpbGVyOjpUQ29tcGlsZXIpOgorICAgICAgICAoVENvbXBpbGVyOjpJ
bml0KToKKyAgICAgICAgKFRDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChUQ29tcGlsZXI6
OmRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChUQ29tcGlsZXI6OmVuZm9yY2VUaW1pbmdSZXN0
cmljdGlvbnMpOgorICAgICAgICAoVENvbXBpbGVyOjpsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oOgorICAgICAgICAoQ29u
c3RhbnRVbmlvbjo6Q29uc3RhbnRVbmlvbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVj
dENhbGxEZXB0aC5jcHA6IEFkZGVkLgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlv
bk5vZGU6OkZ1bmN0aW9uTm9kZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9u
Tm9kZTo6Z2V0TmFtZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6
YWRkQ2FsbGVlKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpkZXRl
Y3RDYWxsRGVwdGgpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OnJl
c2V0KToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RGV0ZWN0Q2FsbERlcHRoKToKKyAgICAg
ICAgKERldGVjdENhbGxEZXB0aDo6fkRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChEZXRlY3RD
YWxsRGVwdGg6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6Y2hl
Y2tFeGNlZWRzTWF4RGVwdGgpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpyZXNldEZ1bmN0
aW9uTm9kZXMpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGhGb3JG
dW5jdGlvbik6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmRldGVjdENhbGxEZXB0aCk6Cisg
ICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmZpbmRGdW5jdGlvbkJ5TmFtZSk6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oOiBBZGRlZC4KKyAgICAgICAgKERldGVjdENh
bGxEZXB0aDo6Z2V0SW5mb1NpbmspOgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRlY3RSZWN1
cnNpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNp
b24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwOgor
ICAgICAgICAoVERpYWdub3N0aWNzOjp3cml0ZUluZm8pOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9Gb3JMb29wVW5yb2xsLmNwcDoKKyAgICAgICAgKEZvckxvb3BVbnJvbGw6OmV2YWx1YXRlSW50
Q29uc3RhbnQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9JbmZvU2luay5jcHA6CisgICAgICAg
IChUSW5mb1NpbmtCYXNlOjpwcmVmaXgpOgorICAgICAgICAoVEluZm9TaW5rQmFzZTo6bG9jYXRp
b24pOgorICAgICAgICAoVEluZm9TaW5rQmFzZTo6bWVzc2FnZSk6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL0luZm9TaW5rLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3Bw
OgorICAgICAgICAoVEJ1aWx0SW5zOjppbml0aWFsaXplKToKKyAgICAgICAgKElkZW50aWZ5QnVp
bHRJbnMpOgorICAgICAgICAoSW5pdEV4dGVuc2lvbkJlaGF2aW9yKToKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcDogQWRkZWQgc3RhdGljX2Nhc3RzIHRvIGZpeCBidWls
ZCBlcnJvcnMgb24gTWFjLgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkU3ltYm9sKToKKyAg
ICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hdGgpOgorICAgICAgICAoVEludGVybWVk
aWF0ZTo6YWRkQXNzaWduKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KToKKyAg
ICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0aCk6CisgICAgICAgIChUSW50ZXJtZWRp
YXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRD
b252ZXJzaW9uKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2dyZWdhdGUpOgorICAg
ICAgICAoVEludGVybWVkaWF0ZTo6bWFrZUFnZ3JlZ2F0ZSk6CisgICAgICAgIChUSW50ZXJtZWRp
YXRlOjphZGRTZWxlY3Rpb24pOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQ29tbWEpOgor
ICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQ29uc3RhbnRVbmlvbik6CisgICAgICAgIChUSW50
ZXJtZWRpYXRlOjphZGRTd2l6emxlKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZExvb3Ap
OgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKToKKyAgICAgICAgKFRJbnRlcm1V
bmFyeTo6cHJvbW90ZSk6CisgICAgICAgIChUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKToKKyAgICAg
ICAgKENvbXBhcmVTdHJ1Y3QpOgorICAgICAgICAoQ29tcGFyZVN0cnVjdHVyZSk6CisgICAgICAg
IChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjpw
cm9tb3RlQ29uc3RhbnRVbmlvbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0wu
Y3BwOgorICAgICAgICAoVE91dHB1dEdMU0w6OnZpc2l0U3ltYm9sKToKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvT3V0cHV0R0xTTC5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRHTFNM
QmFzZS5jcHA6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OndyaXRlVmFyaWFibGVUeXBlKToK
KyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6d3JpdGVDb25zdGFudFVuaW9uKToKKyAgICAgICAg
KFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCaW5hcnkpOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNl
Ojp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OmdldFR5cGVOYW1l
KToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6aGFzaEZ1bmN0aW9uTmFtZSk6CisgICAgICAg
IChUT3V0cHV0R0xTTEJhc2U6OnN0cnVjdERlY2xhcmVkKToKKyAgICAgICAgKFRPdXRwdXRHTFNM
QmFzZTo6ZGVjbGFyZVN0cnVjdCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0xC
YXNlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwOgorICAgICAgICAo
c2g6Ok91dHB1dEhMU0w6Ok91dHB1dEhMU0wpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6Omhl
YWRlcik6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRTeW1ib2wpOgorICAgICAgICAo
c2g6Ok91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp2
aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24p
OgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0TG9vcCk6CisgICAgICAgIChzaDo6T3V0
cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcCk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6
dHlwZVN0cmluZyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6aW5pdGlhbGl6ZXIpOgorICAg
ICAgICAoc2g6Ok91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKToKKyAgICAgICAgKHNoOjpPdXRw
dXRITFNMOjp3cml0ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmRl
Y29yYXRlRmllbGQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNMLmg6CisgICAg
ICAgICogc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcDoKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6OnBhcnNlVmVjdG9yRmllbGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0
cml4RmllbGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmVycm9yKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6Ondhcm5pbmcpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YXNzaWduRXJy
b3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6OmJpbmFyeU9wRXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cHJl
Y2lzaW9uRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNo
ZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2spOgorICAgICAg
ICAoVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp2
b2lkRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayk6
CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJyb3JDaGVjayk6CisgICAgICAgIChU
UGFyc2VDb250ZXh0OjpzdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmNvbnRhaW5zU2FtcGxlcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJheVNp
emVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJy
b3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKToK
KyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFy
c2VDb250ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6Om5vbkluaXRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJy
b3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKToK
KyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbik6CisgICAgICAgIChUUGFyc2VD
b250ZXh0Ojppc1ZhcmlhYmxlQnVpbHRJbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpleGVj
dXRlSW5pdGlhbGl6ZXIpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3Ip
OgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0QnVpbHRJbik6CisgICAgICAgIChU
UGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6
YWRkQ29uc3RWZWN0b3JOb2RlKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0
cml4Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdEFycmF5Tm9kZSk6Cisg
ICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdCk6CisgICAgICAgIChUUGFyc2VD
b250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6
OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvUGFyc2VI
ZWxwZXIuaDoKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OlRQYXJzZUNvbnRleHQpOgorICAgICAg
ICAoVFBhcnNlQ29udGV4dDo6cHJhZ21hKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvUG9vbEFs
bG9jLmNwcDoKKyAgICAgICAgKFRQb29sQWxsb2NhdG9yOjphbGxvY2F0ZSk6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL1NoSGFuZGxlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1NoYWRlckxh
bmcuY3BwOgorICAgICAgICAoU2hJbml0QnVpbHRJblJlc291cmNlcyk6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKFRUeXBlOjpUVHlwZSk6CisgICAg
ICAgIChUVHlwZTo6YnVpbGRNYW5nbGVkTmFtZSk6CisgICAgICAgIChUVHlwZTo6Z2V0T2JqZWN0
U2l6ZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpjb250YWluc0FycmF5cyk6CisgICAgICAgIChU
U3RydWN0dXJlOjpidWlsZE1hbmdsZWROYW1lKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmNhbGN1
bGF0ZU9iamVjdFNpemUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6Y2FsY3VsYXRlRGVlcGVzdE5l
c3RpbmcpOgorICAgICAgICAoVFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvRXh0ZW5zaW9uKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKFRTeW1ib2w6
OnJlbGF0ZVRvRXh0ZW5zaW9uKToKKyAgICAgICAgKFRTeW1ib2w6OmdldEV4dGVuc2lvbik6Cisg
ICAgICAgIChUVmFyaWFibGU6OlRWYXJpYWJsZSk6CisgICAgICAgIChUVmFyaWFibGU6OnNldFF1
YWxpZmllcik6CisgICAgICAgIChUVmFyaWFibGU6OnNoYXJlQ29uc3RQb2ludGVyKToKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvVHlwZXMuaDogQWRkZWQgc3RhdGljX2Nhc3RzIGZyb20gYml0Zmll
bGRzIHRvIGZpeCBjb21waWxpbmcgZm9yIEdUSy4KKyAgICAgICAgKFRGaWVsZDo6VEZpZWxkKToK
KyAgICAgICAgKFRGaWVsZDo6dHlwZSk6CisgICAgICAgIChURmllbGQ6Om5hbWUpOgorICAgICAg
ICAoTmV3UG9vbFRGaWVsZExpc3QpOgorICAgICAgICAoVFN0cnVjdHVyZTo6VFN0cnVjdHVyZSk6
CisgICAgICAgIChUU3RydWN0dXJlOjpuYW1lKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmZpZWxk
cyk6CisgICAgICAgIChUU3RydWN0dXJlOjptYW5nbGVkTmFtZSk6CisgICAgICAgIChUU3RydWN0
dXJlOjpvYmplY3RTaXplKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmRlZXBlc3ROZXN0aW5nKToK
KyAgICAgICAgKFRUeXBlOjpUVHlwZSk6CisgICAgICAgIChUVHlwZTo6Y2xlYXJBcnJheW5lc3Mp
OgorICAgICAgICAoVFR5cGU6OmdldFN0cnVjdCk6CisgICAgICAgIChUVHlwZTo6c2V0U3RydWN0
KToKKyAgICAgICAgKFRUeXBlOjpnZXRNYW5nbGVkTmFtZSk6CisgICAgICAgIChUVHlwZTo6Z2V0
RGVlcGVzdFN0cnVjdE5lc3RpbmcpOgorICAgICAgICAoVFR5cGU6OmlzU3RydWN0dXJlQ29udGFp
bmluZ0FycmF5cyk6CisgICAgICAgIChUUHVibGljVHlwZTo6c2V0QmFzaWMpOgorICAgICAgICAq
IHNyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwOgorICAgICAgICAoZ2V0VXNlckRlZmluZWRW
YXJpYWJsZUluZm8pOgorICAgICAgICAqIHNyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJs
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoYnVpbHRpbjEpOgorICAgICAgICAoYnVpbHRpbjIpOgor
ICAgICAgICAoYnVpbHRpbjMpOgorICAgICAgICAoSW5zZXJ0QnVpbHRJbkZ1bmN0aW9uc0NvbW1v
bik6CisgICAgICAgIChJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KToKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaDogQWRkZWQuCisgICAgICAgICogc3Jj
L2NvbXBpbGVyL2dsc2xhbmcubDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy55Ogor
ICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHA6CisgICAgICAgICh5eV9nZXRf
cHJldmlvdXNfc3RhdGUpOgorICAgICAgICAoeXlfdHJ5X05VTF90cmFucyk6CisgICAgICAgICh5
eWdldF9sbG9jKToKKyAgICAgICAgKHl5c2V0X2xsb2MpOgorICAgICAgICAoc3RyaW5nX2lucHV0
KToKKyAgICAgICAgKGNoZWNrX3R5cGUpOgorICAgICAgICAocmVzZXJ2ZWRfd29yZCk6CisgICAg
ICAgIChnbHNsYW5nX3NjYW4pOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5j
cHA6CisgICAgICAgICh5eXN5bnRheF9lcnJvcik6CisgICAgICAgICh5eWVycm9yKToKKyAgICAg
ICAgKGdsc2xhbmdfcGFyc2UpOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5o
OgorICAgICAgICAqIHNyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwOgorICAgICAgICAoVE91dHB1
dFRyYXZlcnNlcjo6dmlzaXRVbmFyeSk6CisgICAgICAgIChUT3V0cHV0VHJhdmVyc2VyOjp2aXNp
dEFnZ3JlZ2F0ZSk6CisgICAgICAgIChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5p
b24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9pbnRlcm1lZGlhdGUuaDoKKyAgICAgICAgKFRJ
bnRlcm1Ob2RlOjpUSW50ZXJtTm9kZSk6CisgICAgICAgIChUSW50ZXJtTm9kZTo6flRJbnRlcm1O
b2RlKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRMaW5lKToKKyAgICAgICAgKFRJbnRlcm1O
b2RlOjpzZXRMaW5lKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRBc0xvb3BOb2RlKToKKyAg
ICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjpnZXRJQ29uc3QpOgorICAgICAgICAoVEludGVy
bUNvbnN0YW50VW5pb246OmdldEZDb25zdCk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlv
bjo6Z2V0QkNvbnN0KToKKyAgICAgICAgKFRJbnRlcm1BZ2dyZWdhdGU6OlRJbnRlcm1BZ2dyZWdh
dGUpOgorICAgICAgICAoVEludGVybVRyYXZlcnNlcjo6VEludGVybVRyYXZlcnNlcik6CisgICAg
ICAgIChUSW50ZXJtVHJhdmVyc2VyOjpnZXRNYXhEZXB0aCk6CisgICAgICAgIChUSW50ZXJtVHJh
dmVyc2VyOjppbmNyZW1lbnREZXB0aCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2xvY2FsaW50
ZXJtZWRpYXRlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwOgorICAg
ICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdFN5bWJvbCk6CisgICAgICAgIChUQ29uc3RUcmF2
ZXJzZXI6OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRVbmFy
eSk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAg
KFRDb25zdFRyYXZlcnNlcjo6dmlzaXRTZWxlY3Rpb24pOgorICAgICAgICAoVENvbnN0VHJhdmVy
c2VyOjp2aXNpdENvbnN0YW50VW5pb24pOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNp
dExvb3ApOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdEJyYW5jaCk6CisgICAgICAg
IChUSW50ZXJtZWRpYXRlOjpwYXJzZUNvbnN0VHJlZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcDoKKyAgICAgICAgKFJlc3Ry
aWN0VmVydGV4U2hhZGVyVGltaW5nOjp2aXNpdFN5bWJvbCk6CisgICAgICAgICAgICBVcGRhdGVk
IEFOR0xFIHRvIHIyNDI2LgorCiAyMDEzLTA2LTE3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBTb3J0IGFsbCB0aGUgWGNvZGUgcHJvamVjdCBmaWxlcwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUucGxpc3QKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvQU5HTEUucGxpc3QJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC02LDEzICs2
LDEzIEBACiAJCTxrZXk+T3BlblNvdXJjZVByb2plY3Q8L2tleT4KIAkJPHN0cmluZz5BTkdMRTwv
c3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VWZXJzaW9uPC9rZXk+Ci0JCTxzdHJpbmc+cjE2NDE8
L3N0cmluZz4KKwkJPHN0cmluZz5yMjQyNjwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VXZWJz
aXRlVVJMPC9rZXk+CiAJCTxzdHJpbmc+aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xlcHJv
amVjdC88L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlU0NNPC9rZXk+Ci0JCTxzdHJpbmc+c3Zu
IGNvIC1yMTY0MSBodHRwOi8vYW5nbGVwcm9qZWN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay88
L3N0cmluZz4KKwkJPHN0cmluZz5zdm4gY28gLXIyNDI2IGh0dHA6Ly9hbmdsZXByb2plY3QuZ29v
Z2xlY29kZS5jb20vc3ZuL3RydW5rLzwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VJbXBvcnRE
YXRlPC9rZXk+Ci0JCTxzdHJpbmc+MjAxMy0wMS0wNDwvc3RyaW5nPgorCQk8c3RyaW5nPjIwMTMt
MDYtMTM8L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlTGljZW5zZTwva2V5PgogCQk8c3RyaW5n
PkJTRDwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VMaWNlbnNlRmlsZTwva2V5PgpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDE1MjU5NSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw2ICsyNCw4IEBAIGxpYkFOR0xFX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvaW5jbHVkZS9LSFIva2hycGxhdGZvcm0uaCBcCiAJU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9CYXNlVHlwZXMuaCBcCisJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcCBcCisJU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmggXAogCVNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgXAog
CVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVs
YXRvci5oIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkdM
U0wuY3BwIFwKQEAgLTM5LDEwICs0MSwxMCBAQCBsaWJBTkdMRV9sYV9TT1VSQ0VTID0gXAogCVNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3Jh
cGhPdXRwdXQuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdy
YXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAgXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgXAorCVNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwIFwK
KwlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgg
XAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51
aXR5LmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERp
c2NvbnRpbnVpdHkuaCBcCi0JU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Rl
dGVjdFJlY3Vyc2lvbi5jcHAgXAotCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9EZXRlY3RSZWN1cnNpb24uaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0RpYWdub3N0aWNzLmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0RpYWdub3N0aWNzLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9EaXJlY3RpdmVIYW5kbGVyLmNwcCBcCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9U
YXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1RhcmdldC5w
cmkJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1RhcmdldC5w
cmkJKHdvcmtpbmcgY29weSkKQEAgLTE4LDYgKzE4LDcgQEAgSU5DTFVERVBBVEggKz0gXAogCiBI
RUFERVJTICs9IFwKICAgICBzcmMvY29tcGlsZXIvQmFzZVR5cGVzLmggXAorICAgIHNyYy9jb21w
aWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5oIFwKICAgICBzcmMvY29tcGlsZXIvQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3IuaCBcCiAgICAgc3JjL2NvbXBpbGVyL0NvbW1vbi5oIFwKICAgICBzcmMv
Y29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oIFwKQEAgLTI1LDggKzI2LDggQEAgSEVBREVSUyArPSBc
CiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oIFwKICAgICBzcmMv
Y29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIFwKICAgICBzcmMvY29t
cGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggXAorICAgIHNyYy9jb21waWxl
ci9EZXRlY3RDYWxsRGVwdGguaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVp
dHkuaCBcCi0gICAgc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oIFwKICAgICBzcmMvY29t
cGlsZXIvRGlhZ25vc3RpY3MuaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RpcmVjdGl2ZUhhbmRsZXIu
aCBcCiAgICAgc3JjL2NvbXBpbGVyL0V4dGVuc2lvbkJlaGF2aW9yLmggXApAQCAtODQsNiArODUs
NyBAQCBIRUFERVJTICs9IFwKICAgICBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3Vu
ZHNDbGFtcGVyLmgKIAogU09VUkNFUyArPSBcCisgICAgc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3lt
Ym9sX3RhYmxlLmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
LmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0NvZGVHZW5HTFNMLmNwcCBcCiAgICAgc3JjL2NvbXBp
bGVyL0NvbXBpbGVyLmNwcCBcCkBAIC05Miw4ICs5NCw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHNy
Yy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCBcCiAgICAgc3Jj
L2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAgXAogICAgIHNyYy9j
b21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgXAorICAgIHNyYy9j
b21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwIFwKICAgICBzcmMvY29tcGlsZXIvRGV0ZWN0RGlz
Y29udGludWl0eS5jcHAgXAotICAgIHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwIFwK
ICAgICBzcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvRGly
ZWN0aXZlSGFuZGxlci5jcHAgXAogICAgIHNyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcCBc
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEyLDggKzEyLDkgQEAKIAkJNDk5NTFDMDMxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9s
aW1pdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
OTUxQzAyMTRCN0FBQjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRzLmggKi87IH07CiAJCTQ5OTUx
QzA5MTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwNTE0QjdBQUQ3
MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovOyB9OwogCQk0OTk1MUMw
QTE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA2MTRCN0FBRDgwMDYw
RTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovOyB9OwotCQk0OTk1MUMwQjE0QjdB
QUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRl
Y3RSZWN1cnNpb24uY3BwICovOyB9OwotCQk0OTk1MUMwQzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0
ZWN0UmVjdXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmggKi87IH07
CisJCTQ5OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDcxNEI3QUFE
ODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAgKi87IH07CisJCTQ5OTUxQzBDMTRCN0FB
RDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA4MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RD
YWxsRGVwdGguaCAqLzsgfTsKKwkJNUNDRUI4QjYxNzkwOEVFQzAwRkQ5NDk2IC8qIGJ1aWx0aW5f
c3ltYm9sX3RhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDQ0VCOEI0MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5j
cHAgKi87IH07CiAJCTkwRDlCMTAyMTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjBGOTEyRTEx
RENCMDAyRDQyNTUgLyogQ29tcGlsZXIuY3BwICovOyB9OwogCQk5MEQ5QjEwMzEyRTExRENCMDAy
RDQyNTUgLyogRXh0ZW5zaW9uQmVoYXZpb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMEZBMTJFMTFEQ0IwMDJENDI1NSAvKiBFeHRlbnNpb25C
ZWhhdmlvci5oICovOyB9OwogCQk5MEQ5QjEwNDEyRTExRENCMDAyRDQyNTUgLyogZ2xzbGFuZ19s
ZXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBE
OUIwRkIxMkUxMURDQjAwMkQ0MjU1IC8qIGdsc2xhbmdfbGV4LmNwcCAqLzsgfTsKQEAgLTE0MCw4
ICsxNDEsMTAgQEAKIAkJNDk5NTFDMDIxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbGVuZ3RoX2xpbWl0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTk1MUMwNTE0QjdBQUQ3MDA2MEU5NkUgLyogQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDk5NTFDMDcxNEI3QUFEODAw
NjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEZXRlY3RSZWN1cnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldGVjdFJlY3Vyc2lvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2Fs
bERlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERldGVjdENh
bGxEZXB0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5OTUxQzA4MTRCN0FB
RDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGV0ZWN0Q2FsbERlcHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDQ0VCOEI0MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBidWlsdGluX3N5bWJvbF90YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDQ0VCOEI1MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJv
bF90YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBidWlsdGluX3N5bWJvbF90YWJsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNTEyMDhDNjhCMDAxQzg3M0UgLyogQU5HTEUu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQU5HTEUueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM2MTIwOEM2OEIwMDFDODczRSAv
KiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM3MTIwOEM2OEIwMDFD
ODczRSAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzkwLDYgKzM5Myw4IEBACiAJCQkJQTI2NTY4MkMxNTlDMjNFMTAwMzk4NTM5IC8qIGRlcGdy
YXBoICovLAogCQkJCUZCMzlEMjQ0MTIwMEYzNUEwMDA4OEU2OSAvKiBwcmVwcm9jZXNzb3IgKi8s
CiAJCQkJQTI2NTY4MzQxNTlDMjNFMTAwMzk4NTM5IC8qIHRpbWluZyAqLywKKwkJCQk1Q0NFQjhC
NDE3OTA4RTNBMDBGRDk0OTYgLyogYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwICovLAorCQkJCTVD
Q0VCOEI1MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5oICovLAogCQkJ
CUZCMzlEMjIxMTIwMEYzNUEwMDA4OEU2OSAvKiBCYXNlVHlwZXMuaCAqLywKIAkJCQk0OTk1MUMw
NTE0QjdBQUQ3MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovLAogCQkJ
CTQ5OTUxQzA2MTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICov
LApAQCAtMzk5LDggKzQwNCw4IEBACiAJCQkJRkIzOUQyMjUxMjAwRjM1QTAwMDg4RTY5IC8qIENv
bnN0YW50VW5pb24uaCAqLywKIAkJCQlGQjM5RDIyNjEyMDBGMzVBMDAwODhFNjkgLyogZGVidWcu
Y3BwICovLAogCQkJCUZCMzlEMjI3MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5oICovLAotCQkJ
CTQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uY3BwICovLAotCQkJ
CTQ5OTUxQzA4MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLywKKwkJCQk0
OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRoLmNwcCAqLywKKwkJCQk0
OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRoLmggKi8sCiAJCQkJQTI2
NTY3QjAxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmNwcCAqLywKIAkJCQlBMjY1NjdC
MTE1OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25vc3RpY3MuaCAqLywKIAkJCQlBMjY1NjdCMjE1OUMy
MUIxMDAzOTg1MzkgLyogRGlyZWN0aXZlSGFuZGxlci5jcHAgKi8sCkBAIC01MzAsNyArNTM1LDcg
QEAKIAkJCQlBMjY1NjgzQTE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMjY1NjgzQzE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdy
YXBoQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY4M0UxNTlDMjNFMTAwMzk4NTM5
IC8qIERlcGVuZGVuY3lHcmFwaE91dHB1dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk5NTFDMEMx
NEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDk5NTFDMEMxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTI2NTY3QkMxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMjY0RjhBRDE2OTc0REVEMDA2RkFBNUEgLyogRGlhZ25vc3RpY3NCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1NjdCRTE1OUMyMUIxMDAzOTg1MzkgLyogRGlyZWN0
aXZlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC02MzUsNyArNjQwLDcgQEAKIAkJCQlBMjY1
NjgzQjE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBMjY1NjgzRDE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBo
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2ODNGMTU5QzIzRTEwMDM5ODUzOSAv
KiBEZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0OTk1MUMw
QjE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTQ5OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTI2NTY3QkIxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRGOEFDMTY5NzRERUQwMDZGQUE1QSAvKiBEaWFnbm9z
dGljc0Jhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NTY3QkQxNTlDMjFCMTAwMzk4NTM5
IC8qIERpcmVjdGl2ZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC02NzAsNiArNjc1LDcg
QEAKIAkJCQlBMjY1Njg0MDE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RGcmFnbWVudFNoYWRl
clRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1Njg0MjE1OUMyM0UxMDAzOTg1Mzkg
LyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTBE
OUIxMDkxMkUxMURDQjAwMkQ0MjU1IC8qIFNlYXJjaFN5bWJvbC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1Q0NFQjhCNjE3OTA4RUVDMDBGRDk0OTYgLyogYnVpbHRpbl9zeW1ib2xfdGFibGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQyQTgxMjAwRjM1QTAwMDg4RTY5IC8qIFNoYWRlckxh
bmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQyQUExMjAwRjM1QTAwMDg4RTY5IC8qIFN5
bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRGOEMxMTY5NzRERUQwMDZGQUE1
QSAvKiBUb2tlbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkocmV2aXNpb24gMTUy
NTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxh
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSwxMyBAQCB0eXBlZGVmIGVudW0gewog
ICAvLyB2ZWMyMzQsIG9yIG1hdDIzNCB0eXBlLiBUaGUgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJh
dGVneSBlbnVtLAogICAvLyBzcGVjaWZpZWQgaW4gdGhlIFNoQnVpbHRJblJlc291cmNlcyB3aGVu
IGNvbnN0cnVjdGluZyB0aGUKICAgLy8gY29tcGlsZXIsIHNlbGVjdHMgdGhlIHN0cmF0ZWd5IGZv
ciB0aGUgY2xhbXBpbmcgaW1wbGVtZW50YXRpb24uCi0gIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZ
X0JPVU5EUyA9IDB4MTAwMAorICBTSF9DTEFNUF9JTkRJUkVDVF9BUlJBWV9CT1VORFMgPSAweDEw
MDAsCisKKyAgLy8gVGhpcyBmbGFnIGxpbWl0cyB0aGUgY29tcGxleGl0eSBvZiBhbiBleHByZXNz
aW9uLgorICBTSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkgPSAweDIwMDAsCisKKyAgLy8g
VGhpcyBmbGFnIGxpbWl0cyB0aGUgZGVwdGggb2YgdGhlIGNhbGwgc3RhY2suCisgIFNIX0xJTUlU
X0NBTExfU1RBQ0tfREVQVEggPSAweDQwMDAsCiB9IFNoQ29tcGlsZU9wdGlvbnM7CiAKIC8vIERl
ZmluZXMgYWx0ZXJuYXRlIHN0cmF0ZWdpZXMgZm9yIGltcGxlbWVudGluZyBhcnJheSBpbmRleCBj
bGFtcGluZy4KQEAgLTIwOSw2ICsyMTUsNyBAQCB0eXBlZGVmIHN0cnVjdAogICAgIGludCBPRVNf
RUdMX2ltYWdlX2V4dGVybmFsOwogICAgIGludCBBUkJfdGV4dHVyZV9yZWN0YW5nbGU7CiAgICAg
aW50IEVYVF9kcmF3X2J1ZmZlcnM7CisgICAgaW50IEVYVF9mcmFnX2RlcHRoOwogCiAgICAgLy8g
U2V0IHRvIDEgaWYgaGlnaHAgcHJlY2lzaW9uIGlzIHN1cHBvcnRlZCBpbiB0aGUgZnJhZ21lbnQg
bGFuZ3VhZ2UuCiAgICAgLy8gRGVmYXVsdCBpcyAwLgpAQCAtMjIyLDYgKzIyOSwxMiBAQCB0eXBl
ZGVmIHN0cnVjdAogICAgIC8vIFNlbGVjdHMgYSBzdHJhdGVneSB0byB1c2Ugd2hlbiBpbXBsZW1l
bnRpbmcgYXJyYXkgaW5kZXggY2xhbXBpbmcuCiAgICAgLy8gRGVmYXVsdCBpcyBTSF9DTEFNUF9X
SVRIX0NMQU1QX0lOVFJJTlNJQy4KICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IEFy
cmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5OworCisgICAgLy8gVGhlIG1heGltdW0gY29tcGxleGl0
eSBhbiBleHByZXNzaW9uIGNhbiBiZS4KKyAgICBpbnQgTWF4RXhwcmVzc2lvbkNvbXBsZXhpdHk7
CisKKyAgICAvLyBUaGUgbWF4aW11bSBkZXB0aCBhIGNhbGwgc3RhY2sgY2FuIGJlLgorICAgIGlu
dCBNYXhDYWxsU3RhY2tEZXB0aDsKIH0gU2hCdWlsdEluUmVzb3VyY2VzOwogCiAvLwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgJKHJldmlzaW9u
IDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdmVyc2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogI2RlZmluZSBNQUpPUl9WRVJTSU9OIDEK
ICNkZWZpbmUgTUlOT1JfVkVSU0lPTiAwCiAjZGVmaW5lIEJVSUxEX1ZFUlNJT04gMAotI2RlZmlu
ZSBCVUlMRF9SRVZJU0lPTiAxOTg3CisjZGVmaW5lIEJVSUxEX1JFVklTSU9OIDIyNDkKIAogI2Rl
ZmluZSBTVFJJTkdJRlkoeCkgI3gKICNkZWZpbmUgTUFDUk9fU1RSSU5HSUZZKHgpIFNUUklOR0lG
WSh4KQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9C
YXNlVHlwZXMuaAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCwxMCArOTAsNiBA
QCBlbnVtIFRRdWFsaWZpZXIKICAgICBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAgICAvLyB2ZXJ0
ZXggc2hhZGVycyBvbmx5ICByZWFkL3dyaXRlCiAgICAgRXZxVW5pZm9ybSwgICAgICAgLy8gUmVh
ZG9ubHksIHZlcnRleCBhbmQgZnJhZ21lbnQKIAotICAgIC8vIHBhY2svdW5wYWNrIGlucHV0IGFu
ZCBvdXRwdXQKLSAgICBFdnFJbnB1dCwKLSAgICBFdnFPdXRwdXQsCi0KICAgICAvLyBwYXJhbWV0
ZXJzCiAgICAgRXZxSW4sCiAgICAgRXZxT3V0LApAQCAtMTEyLDYgKzEwOCw3IEBAIGVudW0gVFF1
YWxpZmllcgogICAgIC8vIGJ1aWx0LWlucyB3cml0dGVuIGJ5IGZyYWdtZW50IHNoYWRlcgogICAg
IEV2cUZyYWdDb2xvciwKICAgICBFdnFGcmFnRGF0YSwKKyAgICBFdnFGcmFnRGVwdGgsCiAKICAg
ICAvLyBlbmQgb2YgbGlzdAogICAgIEV2cUxhc3QKQEAgLTEzNywxNCArMTM0LDEzIEBAIGlubGlu
ZSBjb25zdCBjaGFyKiBnZXRRdWFsaWZpZXJTdHJpbmcoVFEKICAgICBjYXNlIEV2cUluOiAgICAg
ICAgICAgICByZXR1cm4gImluIjsgICAgICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFPdXQ6
ICAgICAgICAgICAgcmV0dXJuICJvdXQiOyAgICAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZx
SW5PdXQ6ICAgICAgICAgIHJldHVybiAiaW5vdXQiOyAgICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV2cUlucHV0OiAgICAgICAgICByZXR1cm4gImlucHV0IjsgICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBFdnFPdXRwdXQ6ICAgICAgICAgcmV0dXJuICJvdXRwdXQiOyAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRXZxUG9zaXRpb246ICAgICAgIHJldHVybiAiUG9zaXRpb24iOyAgICAgICBicmVh
azsKICAgICBjYXNlIEV2cVBvaW50U2l6ZTogICAgICByZXR1cm4gIlBvaW50U2l6ZSI7ICAgICAg
YnJlYWs7CiAgICAgY2FzZSBFdnFGcmFnQ29vcmQ6ICAgICAgcmV0dXJuICJGcmFnQ29vcmQiOyAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6ICAgIHJldHVybiAiRnJvbnRGYWNp
bmciOyAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb2xvcjogICAgICByZXR1cm4gIkZyYWdD
b2xvciI7ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcmFnRGF0YTogICAgICAgcmV0dXJuICJG
cmFnRGF0YSI7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdnFGcmFnRGVwdGg6ICAgICAgcmV0dXJu
ICJGcmFnRGVwdGgiOyAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgcmV0
dXJuICJ1bmtub3duIHF1YWxpZmllciI7CiAgICAgfQogfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21tb24uaAkocmV2aXNpb24gMTUyNTk1KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNCwyNCArMTQsMTIgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL1Bvb2xBbGxvYy5o
IgogCi0vLyBXZSBuZWVkIHR3byBwaWVjZXMgb2YgaW5mb3JtYXRpb24gdG8gcmVwb3J0IGVycm9y
cy93YXJuaW5ncyAtIHN0cmluZyBhbmQKLS8vIGxpbmUgbnVtYmVyLiBXZSBlbmNvZGUgdGhlc2Ug
aW50byBhIHNpbmdsZSBpbnQgc28gdGhhdCBpdCBjYW4gYmUgZWFzaWx5Ci0vLyBpbmNyZW1lbnRl
ZC9kZWNyZW1lbnRlZCBieSBsZXhlci4gVGhlIHJpZ2h0IFNPVVJDRV9MT0NfTElORV9TSVpFIGJp
dHMgc3RvcmUKLS8vIGxpbmUgbnVtYmVyIHdoaWxlIHRoZSByZXN0IHN0b3JlIHRoZSBzdHJpbmcg
bnVtYmVyLiBTaW5jZSB0aGUgc2hhZGVycyBhcmUKLS8vIHVzdWFsbHkgc21hbGwsIHdlIHNob3Vs
ZCBub3QgcnVuIG91dCBvZiBtZW1vcnkuIFNPVVJDRV9MT0NfTElORV9TSVpFCi0vLyBjYW4gYmUg
aW5jcmVhc2VkIHRvIGFsbGV2aWF0ZSB0aGlzIGlzc3VlLgotdHlwZWRlZiBpbnQgVFNvdXJjZUxv
YzsKLWNvbnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfU0laRSA9IDE2OyAgLy8gaW4g
Yml0cy4KLWNvbnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfTUFTSyA9ICgxIDw8IFNP
VVJDRV9MT0NfTElORV9TSVpFKSAtIDE7Ci0KLWlubGluZSBUU291cmNlTG9jIEVuY29kZVNvdXJj
ZUxvYyhpbnQgc3RyaW5nLCBpbnQgbGluZSkgewotICAgIHJldHVybiAoc3RyaW5nIDw8IFNPVVJD
RV9MT0NfTElORV9TSVpFKSB8IChsaW5lICYgU09VUkNFX0xPQ19MSU5FX01BU0spOwotfQotCi1p
bmxpbmUgdm9pZCBEZWNvZGVTb3VyY2VMb2MoVFNvdXJjZUxvYyBsb2MsIGludCogc3RyaW5nLCBp
bnQqIGxpbmUpIHsKLSAgICBpZiAoc3RyaW5nKSAqc3RyaW5nID0gbG9jID4+IFNPVVJDRV9MT0Nf
TElORV9TSVpFOwotICAgIGlmIChsaW5lKSAqbGluZSA9IGxvYyAmIFNPVVJDRV9MT0NfTElORV9N
QVNLOwotfQorc3RydWN0IFRTb3VyY2VMb2MgeworICAgIGludCBmaXJzdF9maWxlOworICAgIGlu
dCBmaXJzdF9saW5lOworICAgIGludCBsYXN0X2ZpbGU7CisgICAgaW50IGxhc3RfbGluZTsKK307
CiAKIC8vCiAvLyBQdXQgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSBpbiBiYXNlIGNsYXNzZXMg
dG8gbWFrZSB0aGVtIHVzZSB0aGlzIHNjaGVtZS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9Db21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkocmV2aXNpb24gMTUyNTk1KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNCw4ICs0LDkgQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CiAvLwogCisjaW5jbHVkZSAiY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaCIKICNpbmNs
dWRlICJjb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIgotI2luY2x1ZGUgImNvbXBp
bGVyL0RldGVjdFJlY3Vyc2lvbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0RldGVjdENhbGxEZXB0
aC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0Zvckxvb3BVbnJvbGwuaCIKICNpbmNsdWRlICJjb21w
aWxlci9Jbml0aWFsaXplLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29u
dGV4dC5oIgpAQCAtNjIsMTEgKzYzLDI2IEBAIGJvb2wgSW5pdGlhbGl6ZVN5bWJvbFRhYmxlKAog
CiAgICAgICAgIGlmIChQYVBhcnNlU3RyaW5ncygxLCAmYnVpbHRJblNoYWRlcnMsICZidWlsdElu
TGVuZ3RocywgJnBhcnNlQ29udGV4dCkgIT0gMCkKICAgICAgICAgewotICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5hYmxlIHRvIHBhcnNl
IGJ1aWx0LWlucyIpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeElu
dGVybmFsRXJyb3IpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiVW5hYmxlIHRvIHBh
cnNlIGJ1aWx0LWlucyI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICB9CiAKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgU0hfRlJBR01FTlRfU0hBREVS
OgorICAgICAgICBJbnNlcnRCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNlcywgJnN5bWJv
bFRhYmxlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNIX1ZFUlRFWF9TSEFERVI6Cisg
ICAgICAgIEluc2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24ocmVzb3VyY2VzLCAmc3ltYm9sVGFi
bGUpOworICAgICAgICBJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KHJlc291cmNlcywgJnN5
bWJvbFRhYmxlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2Ug
JiYgIkxhbmd1YWdlIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICB9CisKICAgICBJZGVudGlmeUJ1aWx0
SW5zKHR5cGUsIHNwZWMsIHJlc291cmNlcywgc3ltYm9sVGFibGUpOwogCiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xMDMsNiArMTE5LDkgQEAgVFNoSGFuZGxlQmFzZTo6flRTaEhhbmRsZUJhc2UoKSB7
CiBUQ29tcGlsZXI6OlRDb21waWxlcihTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNw
ZWMpCiAgICAgOiBzaGFkZXJUeXBlKHR5cGUpLAogICAgICAgc2hhZGVyU3BlYyhzcGVjKSwKKyAg
ICAgIG1heFVuaWZvcm1WZWN0b3JzKDApLAorICAgICAgbWF4RXhwcmVzc2lvbkNvbXBsZXhpdHko
MCksCisgICAgICBtYXhDYWxsU3RhY2tEZXB0aCgwKSwKICAgICAgIGZyYWdtZW50UHJlY2lzaW9u
SGlnaChmYWxzZSksCiAgICAgICBjbGFtcGluZ1N0cmF0ZWd5KFNIX0NMQU1QX1dJVEhfQ0xBTVBf
SU5UUklOU0lDKSwKICAgICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKHR5cGUpCkBAIC0xMjEs
MTEgKzE0MCwxNCBAQCBib29sIFRDb21waWxlcjo6SW5pdChjb25zdCBTaEJ1aWx0SW5SZXNvCiAg
ICAgbWF4VW5pZm9ybVZlY3RvcnMgPSAoc2hhZGVyVHlwZSA9PSBTSF9WRVJURVhfU0hBREVSKSA/
CiAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA6CiAgICAgICAgIHJl
c291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzOworICAgIG1heEV4cHJlc3Npb25Db21w
bGV4aXR5ID0gcmVzb3VyY2VzLk1heEV4cHJlc3Npb25Db21wbGV4aXR5OworICAgIG1heENhbGxT
dGFja0RlcHRoID0gcmVzb3VyY2VzLk1heENhbGxTdGFja0RlcHRoOwogICAgIFRTY29wZWRQb29s
QWxsb2NhdG9yIHNjb3BlZEFsbG9jKCZhbGxvY2F0b3IsIGZhbHNlKTsKIAogICAgIC8vIEdlbmVy
YXRlIGJ1aWx0LWluIHN5bWJvbCB0YWJsZS4KICAgICBpZiAoIUluaXRCdWlsdEluU3ltYm9sVGFi
bGUocmVzb3VyY2VzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgSW5pdEV4dGVuc2lv
bkJlaGF2aW9yKHJlc291cmNlcywgZXh0ZW5zaW9uQmVoYXZpb3IpOwogICAgIGZyYWdtZW50UHJl
Y2lzaW9uSGlnaCA9IHJlc291cmNlcy5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPT0gMTsKIApAQCAt
MTcwLDggKzE5MiwxMCBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25z
CiAgICAgLy8gV2UgcHJlc2VydmUgc3ltYm9scyBhdCB0aGUgYnVpbHQtaW4gbGV2ZWwgZnJvbSBj
b21waWxlLXRvLWNvbXBpbGUuCiAgICAgLy8gU3RhcnQgcHVzaGluZyB0aGUgdXNlci1kZWZpbmVk
IHN5bWJvbHMgYXQgZ2xvYmFsIGxldmVsLgogICAgIHN5bWJvbFRhYmxlLnB1c2goKTsKLSAgICBp
ZiAoIXN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSkKLSAgICAgICAgaW5mb1NpbmsuaW5mby5t
ZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiV3Jvbmcgc3ltYm9sIHRhYmxlIGxldmVsIik7
CisgICAgaWYgKCFzeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkpIHsKKyAgICAgICAgaW5mb1Np
bmsuaW5mby5wcmVmaXgoRVByZWZpeEludGVybmFsRXJyb3IpOworICAgICAgICBpbmZvU2luay5p
bmZvIDw8ICJXcm9uZyBzeW1ib2wgdGFibGUgbGV2ZWwiOworICAgIH0KIAogICAgIC8vIFBhcnNl
IHNoYWRlci4KICAgICBib29sIHN1Y2Nlc3MgPQpAQCAtMTgyLDcgKzIwNiw3IEBAIGJvb2wgVENv
bXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAgICAgc3VjY2VzcyA9IGludGVy
bWVkaWF0ZS5wb3N0UHJvY2Vzcyhyb290KTsKIAogICAgICAgICBpZiAoc3VjY2VzcykKLSAgICAg
ICAgICAgIHN1Y2Nlc3MgPSBkZXRlY3RSZWN1cnNpb24ocm9vdCk7CisgICAgICAgICAgICBzdWNj
ZXNzID0gZGV0ZWN0Q2FsbERlcHRoKHJvb3QsIGluZm9TaW5rLCAoY29tcGlsZU9wdGlvbnMgJiBT
SF9MSU1JVF9DQUxMX1NUQUNLX0RFUFRIKSAhPSAwKTsKIAogICAgICAgICBpZiAoc3VjY2VzcyAm
JiAoY29tcGlsZU9wdGlvbnMgJiBTSF9WQUxJREFURV9MT09QX0lOREVYSU5HKSkKICAgICAgICAg
ICAgIHN1Y2Nlc3MgPSB2YWxpZGF0ZUxpbWl0YXRpb25zKHJvb3QpOwpAQCAtMjA1LDYgKzIyOSwx
MCBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgIGlm
IChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JP
VU5EUykpCiAgICAgICAgICAgICBhcnJheUJvdW5kc0NsYW1wZXIuTWFya0luZGlyZWN0QXJyYXlC
b3VuZHNGb3JDbGFtcGluZyhyb290KTsKIAorICAgICAgICAvLyBEaXNhbGxvdyBleHByZXNzaW9u
cyBkZWVtZWQgdG9vIGNvbXBsZXguCisgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0
aW9ucyAmIFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSkpCisgICAgICAgICAgICBzdWNj
ZXNzID0gbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShyb290KTsKKwogICAgICAgICAvLyBDYWxs
IG1hcExvbmdWYXJpYWJsZU5hbWVzKCkgYmVmb3JlIGNvbGxlY3RBdHRyaWJzVW5pZm9ybXMoKSBz
byBpbgogICAgICAgICAvLyBjb2xsZWN0QXR0cmlic1VuaWZvcm1zKCkgd2UgYWxyZWFkeSBoYXZl
IHRoZSBtYXBwZWQgc3ltYm9sIG5hbWVzIGFuZAogICAgICAgICAvLyB3ZSBjb3VsZCBjb21wb3Np
dGUgbWFwcGVkIGFuZCBvcmlnaW5hbCB2YXJpYWJsZSBuYW1lcy4KQEAgLTIxNyw3ICsyNDUsOCBA
QCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgICAgICBp
ZiAoY29tcGlsZU9wdGlvbnMgJiBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05TKSB7CiAg
ICAgICAgICAgICAgICAgc3VjY2VzcyA9IGVuZm9yY2VQYWNraW5nUmVzdHJpY3Rpb25zKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsICJ0b28gbWFueSB1bmlmb3JtcyIpOworICAg
ICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAg
ICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJ0b28gbWFueSB1bmlmb3JtcyI7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNjMsMTggKzI5
MiwyNCBAQCB2b2lkIFRDb21waWxlcjo6Y2xlYXJSZXN1bHRzKCkKICAgICBuYW1lTWFwLmNsZWFy
KCk7CiB9CiAKLWJvb2wgVENvbXBpbGVyOjpkZXRlY3RSZWN1cnNpb24oVEludGVybU5vZGUqIHJv
b3QpCitib29sIFRDb21waWxlcjo6ZGV0ZWN0Q2FsbERlcHRoKFRJbnRlcm1Ob2RlKiByb290LCBU
SW5mb1NpbmsmIGluZm9TaW5rLCBib29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgpCiB7Ci0gICAgRGV0
ZWN0UmVjdXJzaW9uIGRldGVjdDsKKyAgICBEZXRlY3RDYWxsRGVwdGggZGV0ZWN0KGluZm9TaW5r
LCBsaW1pdENhbGxTdGFja0RlcHRoLCBtYXhDYWxsU3RhY2tEZXB0aCk7CiAgICAgcm9vdC0+dHJh
dmVyc2UoJmRldGVjdCk7Ci0gICAgc3dpdGNoIChkZXRlY3QuZGV0ZWN0UmVjdXJzaW9uKCkpIHsK
LSAgICAgICAgY2FzZSBEZXRlY3RSZWN1cnNpb246OmtFcnJvck5vbmU6CisgICAgc3dpdGNoIChk
ZXRlY3QuZGV0ZWN0Q2FsbERlcHRoKCkpIHsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6
OmtFcnJvck5vbmU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBEZXRl
Y3RSZWN1cnNpb246OmtFcnJvck1pc3NpbmdNYWluOgotICAgICAgICAgICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhFcnJvciwgIk1pc3NpbmcgbWFpbigpIik7CisgICAgICAgIGNhc2Ug
RGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JNaXNzaW5nTWFpbjoKKyAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ucHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8
ICJNaXNzaW5nIG1haW4oKSI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNh
c2UgRGV0ZWN0UmVjdXJzaW9uOjprRXJyb3JSZWN1cnNpb246Ci0gICAgICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVk
Iik7CisgICAgICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JSZWN1cnNpb246CisgICAg
ICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAg
aW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVkIjsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvck1h
eERlcHRoRXhjZWVkZWQ6CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4
RXJyb3IpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24gY2FsbCBzdGFj
ayB0b28gZGVlcCI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwpAQCAtMzIwLDYgKzM1NSwyOCBAQCBib29sIFRD
b21waWxlcjo6ZW5mb3JjZVRpbWluZ1Jlc3RyaWN0aW9uCiAgICAgfQogfQogCitib29sIFRDb21w
aWxlcjo6bGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCkKK3sKKyAg
ICBUSW50ZXJtVHJhdmVyc2VyIHRyYXZlcnNlcjsKKyAgICByb290LT50cmF2ZXJzZSgmdHJhdmVy
c2VyKTsKKyAgICBURGVwZW5kZW5jeUdyYXBoIGdyYXBoKHJvb3QpOworCisgICAgZm9yIChURnVu
Y3Rpb25DYWxsVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZ3JhcGguYmVnaW5Vc2VyRGVm
aW5lZEZ1bmN0aW9uQ2FsbHMoKTsKKyAgICAgICAgIGl0ZXIgIT0gZ3JhcGguZW5kVXNlckRlZmlu
ZWRGdW5jdGlvbkNhbGxzKCk7CisgICAgICAgICArK2l0ZXIpCisgICAgeworICAgICAgICBUR3Jh
cGhGdW5jdGlvbkNhbGwqIHNhbXBsZXJTeW1ib2wgPSAqaXRlcjsKKyAgICAgICAgVERlcGVuZGVu
Y3lHcmFwaFRyYXZlcnNlciBncmFwaFRyYXZlcnNlcjsKKyAgICAgICAgc2FtcGxlclN5bWJvbC0+
dHJhdmVyc2UoJmdyYXBoVHJhdmVyc2VyKTsKKyAgICB9CisKKyAgICBpZiAodHJhdmVyc2VyLmdl
dE1heERlcHRoKCkgPiBtYXhFeHByZXNzaW9uQ29tcGxleGl0eSkgeworICAgICAgICBpbmZvU2lu
ay5pbmZvIDw8ICJFeHByZXNzaW9uIHRvbyBjb21wbGV4LiI7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgVENvbXBpbGVyOjplbmZvcmNl
RnJhZ21lbnRTaGFkZXJUaW1pbmdSZXN0cmljdGlvbnMoY29uc3QgVERlcGVuZGVuY3lHcmFwaCYg
Z3JhcGgpCiB7CiAgICAgUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZyByZXN0cmljdG9yKGlu
Zm9TaW5rLmluZm8pOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0NvbnN0YW50VW5pb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oCShyZXZpc2lvbiAxNTI1OTUpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQg
KGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8v
CkBAIC0xNCw2ICsxNCw3IEBAIHB1YmxpYzoKICAgICBDb25zdGFudFVuaW9uKCkKICAgICB7CiAg
ICAgICAgIGlDb25zdCA9IDA7CisgICAgICAgIHR5cGUgPSBFYnRWb2lkOwogICAgIH0KIAogICAg
IFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikgICAgICAgIApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0RldGVjdENhbGxEZXB0aC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE4NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL0Rl
dGVjdENhbGxEZXB0aC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCisKK0RldGVj
dENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5h
bWUpCisgICAgOiBuYW1lKGZuYW1lKSwKKyAgICAgIHZpc2l0KFByZVZpc2l0KQoreworfQorCitj
b25zdCBUU3RyaW5nJiBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK3ZvaWQgRGV0ZWN0Q2FsbERlcHRoOjpGdW5j
dGlvbk5vZGU6OmFkZENhbGxlZSgKKyAgICBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZSog
Y2FsbGVlKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsr
aSkgeworICAgICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCisgICAgICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Cit9CisKK2ludCBEZXRl
Y3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6ZGV0ZWN0Q2FsbERlcHRoKERldGVjdENhbGxEZXB0
aCogZGV0ZWN0Q2FsbERlcHRoLCBpbnQgZGVwdGgpCit7CisgICAgQVNTRVJUKHZpc2l0ID09IFBy
ZVZpc2l0KTsKKyAgICBBU1NFUlQoZGV0ZWN0Q2FsbERlcHRoKTsKKworICAgIGludCBtYXhEZXB0
aCA9IGRlcHRoOworICAgIHZpc2l0ID0gSW5WaXNpdDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNhbGxlZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgc3dpdGNoIChjYWxsZWVzW2ldLT52
aXNpdCkgeworICAgICAgICAgICAgY2FzZSBJblZpc2l0OgorICAgICAgICAgICAgICAgIC8vIGN5
Y2xlIGRldGVjdGVkLCBpLmUuLCByZWN1cnNpb24gZGV0ZWN0ZWQuCisgICAgICAgICAgICAgICAg
cmV0dXJuIGtJbmZpbml0ZUNhbGxEZXB0aDsKKyAgICAgICAgICAgIGNhc2UgUG9zdFZpc2l0Ogor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQcmVWaXNpdDogeworICAg
ICAgICAgICAgICAgIC8vIENoZWNrIGJlZm9yZSB3ZSByZWN1cnNlIHNvIHdlIGRvbid0IGdvIHRv
byBkZXB0aAorICAgICAgICAgICAgICAgIGlmIChkZXRlY3RDYWxsRGVwdGgtPmNoZWNrRXhjZWVk
c01heERlcHRoKGRlcHRoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlcHRoOworICAg
ICAgICAgICAgICAgIGludCBjYWxsRGVwdGggPSBjYWxsZWVzW2ldLT5kZXRlY3RDYWxsRGVwdGgo
ZGV0ZWN0Q2FsbERlcHRoLCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIGFm
dGVyIHdlIHJlY3Vyc2Ugc28gd2UgY2FuIGV4aXQgaW1tZWRpYXRlbHkgYW5kIHByb3ZpZGUgaW5m
by4KKyAgICAgICAgICAgICAgICBpZiAoZGV0ZWN0Q2FsbERlcHRoLT5jaGVja0V4Y2VlZHNNYXhE
ZXB0aChjYWxsRGVwdGgpKSB7CisgICAgICAgICAgICAgICAgICAgIGRldGVjdENhbGxEZXB0aC0+
Z2V0SW5mb1NpbmsoKS5pbmZvIDw8ICI8LSIgPDwgY2FsbGVlc1tpXS0+Z2V0TmFtZSgpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbERlcHRoOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBtYXhEZXB0aCA9IHN0ZDo6bWF4KGNhbGxEZXB0aCwgbWF4RGVwdGgpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIHZpc2l0ID0gUG9zdFZpc2l0OworICAgIHJldHVybiBt
YXhEZXB0aDsKK30KKwordm9pZCBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6cmVzZXQo
KQoreworICAgIHZpc2l0ID0gUHJlVmlzaXQ7Cit9CisKK0RldGVjdENhbGxEZXB0aDo6RGV0ZWN0
Q2FsbERlcHRoKFRJbmZvU2luayYgaW5mb1NpbmssIGJvb2wgbGltaXRDYWxsU3RhY2tEZXB0aCwg
aW50IG1heENhbGxTdGFja0RlcHRoKQorICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxz
ZSwgdHJ1ZSwgZmFsc2UpLAorICAgICAgY3VycmVudEZ1bmN0aW9uKE5VTEwpLAorICAgICAgaW5m
b1NpbmsoaW5mb1NpbmspLAorICAgICAgbWF4RGVwdGgobGltaXRDYWxsU3RhY2tEZXB0aCA/IG1h
eENhbGxTdGFja0RlcHRoIDogRnVuY3Rpb25Ob2RlOjprSW5maW5pdGVDYWxsRGVwdGgpCit7Cit9
CisKK0RldGVjdENhbGxEZXB0aDo6fkRldGVjdENhbGxEZXB0aCgpCit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRlbGV0ZSBmdW5j
dGlvbnNbaV07Cit9CisKK2Jvb2wgRGV0ZWN0Q2FsbERlcHRoOjp2aXNpdEFnZ3JlZ2F0ZShWaXNp
dCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSogbm9kZSkKK3sKKyAgICBzd2l0Y2ggKG5vZGUtPmdl
dE9wKCkpCisgICAgeworICAgICAgICBjYXNlIEVPcFByb3RvdHlwZToKKyAgICAgICAgICAgIC8v
IEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgorICAgICAgICAgICAgLy8gRG9uJ3QgYWRkIEZ1bmN0aW9u
Tm9kZSBoZXJlIGJlY2F1c2Ugbm9kZS0+Z2V0TmFtZSgpIGlzIHRoZQorICAgICAgICAgICAgLy8g
dW5tYW5nbGVkIGZ1bmN0aW9uIG5hbWUuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFT3BGdW5jdGlvbjogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KKyAg
ICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIGN1cnJl
bnRGdW5jdGlvbiA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAg
ICAgICAgICAgIGlmIChjdXJyZW50RnVuY3Rpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50RnVuY3Rpb24gPSBuZXcgRnVuY3Rpb25Ob2RlKG5vZGUtPmdldE5hbWUoKSk7
CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoX2JhY2soY3VycmVudEZ1bmN0aW9u
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKHZpc2l0ID09IFBv
c3RWaXNpdCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9IE5VTEw7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEVP
cEZ1bmN0aW9uQ2FsbDogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gY2FsbC4KKyAgICAgICAg
ICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIEZ1bmN0aW9uTm9k
ZSogZnVuYyA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAg
ICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG5l
dyBGdW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb25zLnB1c2hfYmFjayhmdW5jKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKGN1cnJlbnRGdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0
aW9uLT5hZGRDYWxsZWUoZnVuYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIERldGVjdENhbGxEZXB0aDo6Y2hlY2tFeGNlZWRz
TWF4RGVwdGgoaW50IGRlcHRoKQoreworICAgIHJldHVybiBkZXB0aCA+PSBtYXhEZXB0aDsKK30K
Kwordm9pZCBEZXRlY3RDYWxsRGVwdGg6OnJlc2V0RnVuY3Rpb25Ob2RlcygpCit7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZnVu
Y3Rpb25zW2ldLT5yZXNldCgpOworICAgIH0KK30KKworRGV0ZWN0Q2FsbERlcHRoOjpFcnJvckNv
ZGUgRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbihGdW5jdGlvbk5v
ZGUqIGZ1bmMpCit7CisgICAgY3VycmVudEZ1bmN0aW9uID0gTlVMTDsKKyAgICByZXNldEZ1bmN0
aW9uTm9kZXMoKTsKKworICAgIGludCBtYXhDYWxsRGVwdGggPSBmdW5jLT5kZXRlY3RDYWxsRGVw
dGgodGhpcywgMSk7CisKKyAgICBpZiAobWF4Q2FsbERlcHRoID09IEZ1bmN0aW9uTm9kZTo6a0lu
ZmluaXRlQ2FsbERlcHRoKQorICAgICAgICByZXR1cm4ga0Vycm9yUmVjdXJzaW9uOworCisgICAg
aWYgKG1heENhbGxEZXB0aCA+PSBtYXhEZXB0aCkKKyAgICAgICAgcmV0dXJuIGtFcnJvck1heERl
cHRoRXhjZWVkZWQ7CisKKyAgICByZXR1cm4ga0Vycm9yTm9uZTsKK30KKworRGV0ZWN0Q2FsbERl
cHRoOjpFcnJvckNvZGUgRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGgoKQoreworICAg
IGlmIChtYXhEZXB0aCAhPSBGdW5jdGlvbk5vZGU6OmtJbmZpbml0ZUNhbGxEZXB0aCkgeworICAg
ICAgICAvLyBDaGVjayBhbGwgZnVuY3Rpb25zIGJlY2F1c2UgdGhlIGRyaXZlciBtYXkgZmFpbCBv
biB0aGVtCisgICAgICAgIC8vIFRPRE86IEJlZm9yZSBkZXRlY3RpbmdSZWN1cnNpb24sIHN0cmlw
IHVudXNlZCBmdW5jdGlvbnMuCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rp
b25zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBFcnJvckNvZGUgZXJyb3IgPSBkZXRlY3RD
YWxsRGVwdGhGb3JGdW5jdGlvbihmdW5jdGlvbnNbaV0pOworICAgICAgICAgICAgaWYgKGVycm9y
ICE9IGtFcnJvck5vbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgRnVuY3Rpb25Ob2RlKiBtYWluID0gZmluZEZ1bmN0aW9u
QnlOYW1lKCJtYWluKCIpOworICAgICAgICBpZiAobWFpbiA9PSBOVUxMKQorICAgICAgICAgICAg
cmV0dXJuIGtFcnJvck1pc3NpbmdNYWluOworCisgICAgICAgIHJldHVybiBkZXRlY3RDYWxsRGVw
dGhGb3JGdW5jdGlvbihtYWluKTsKKyAgICB9CisKKyAgICByZXR1cm4ga0Vycm9yTm9uZTsKK30K
KworRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGUqIERldGVjdENhbGxEZXB0aDo6ZmluZEZ1
bmN0aW9uQnlOYW1lKAorICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUpCit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGZ1bmN0
aW9uc1tpXS0+Z2V0TmFtZSgpID09IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25z
W2ldOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIworKgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNp
Zm5kZWYgQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXworI2RlZmluZSBDT01QSUxFUl9ERVRF
Q1RfUkVDVVJTSU9OX0hfCisKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKworI2lu
Y2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5oIgorI2lu
Y2x1ZGUgImNvbXBpbGVyL1ZhcmlhYmxlSW5mby5oIgorCitjbGFzcyBUSW5mb1Npbms7CisKKy8v
IFRyYXZlcnNlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBkZXRlY3QgZnVuY3Rpb24gcmVjdXJzaW9u
LgorY2xhc3MgRGV0ZWN0Q2FsbERlcHRoIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIgeworcHVi
bGljOgorICAgIGVudW0gRXJyb3JDb2RlIHsKKyAgICAgICAga0Vycm9yTWlzc2luZ01haW4sCisg
ICAgICAgIGtFcnJvclJlY3Vyc2lvbiwKKyAgICAgICAga0Vycm9yTWF4RGVwdGhFeGNlZWRlZCwK
KyAgICAgICAga0Vycm9yTm9uZQorICAgIH07CisKKyAgICBEZXRlY3RDYWxsRGVwdGgoVEluZm9T
aW5rJiBpbmZvU3luYywgYm9vbCBsaW1pdENhbGxTdGFja0RlcHRoLCBpbnQgbWF4Q2FsbFN0YWNr
RGVwdGgpOworICAgIH5EZXRlY3RDYWxsRGVwdGgoKTsKKworICAgIHZpcnR1YWwgYm9vbCB2aXNp
dEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopOworCisgICAgYm9vbCBjaGVja0V4
Y2VlZHNNYXhEZXB0aChpbnQgZGVwdGgpOworCisgICAgRXJyb3JDb2RlIGRldGVjdENhbGxEZXB0
aCgpOworCitwcml2YXRlOgorICAgIGNsYXNzIEZ1bmN0aW9uTm9kZSB7CisgICAgcHVibGljOgor
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtJbmZpbml0ZUNhbGxEZXB0aCA9IElOVF9NQVg7CisK
KyAgICAgICAgRnVuY3Rpb25Ob2RlKGNvbnN0IFRTdHJpbmcmIGZuYW1lKTsKKworICAgICAgICBj
b25zdCBUU3RyaW5nJiBnZXROYW1lKCkgY29uc3Q7CisKKyAgICAgICAgLy8gSWYgYSBmdW5jdGlv
biBpcyBhbHJlYWR5IGluIHRoZSBjYWxsZWUgbGlzdCwgdGhpcyBiZWNvbWVzIGEgbm8tb3AuCisg
ICAgICAgIHZvaWQgYWRkQ2FsbGVlKEZ1bmN0aW9uTm9kZSogY2FsbGVlKTsKKworICAgICAgICAv
LyBSZXR1cm5zIGtJbmlmaW5pdHlDYWxsRGVwdGggaWYgcmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGxz
IGFyZSBkZXRlY3RlZC4KKyAgICAgICAgaW50IGRldGVjdENhbGxEZXB0aChEZXRlY3RDYWxsRGVw
dGgqIGRldGVjdENhbGxEZXB0aCwgaW50IGRlcHRoKTsKKworICAgICAgICAvLyBSZXNldCBzdGF0
ZS4KKyAgICAgICAgdm9pZCByZXNldCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgLy8gbWFu
Z2xlZCBmdW5jdGlvbiBuYW1lIGlzIHVuaXF1ZS4KKyAgICAgICAgVFN0cmluZyBuYW1lOworCisg
ICAgICAgIC8vIGZ1bmN0aW9ucyB0aGF0IGFyZSBkaXJlY3RseSBjYWxsZWQgYnkgdGhpcyBmdW5j
dGlvbi4KKyAgICAgICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBjYWxsZWVzOworCisgICAgICAg
IFZpc2l0IHZpc2l0OworICAgIH07CisKKyAgICBFcnJvckNvZGUgZGV0ZWN0Q2FsbERlcHRoRm9y
RnVuY3Rpb24oRnVuY3Rpb25Ob2RlKiBmdW5jKTsKKyAgICBGdW5jdGlvbk5vZGUqIGZpbmRGdW5j
dGlvbkJ5TmFtZShjb25zdCBUU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIHJlc2V0RnVuY3Rpb25O
b2RlcygpOworCisgICAgVEluZm9TaW5rJiBnZXRJbmZvU2luaygpIHsgcmV0dXJuIGluZm9TaW5r
OyB9CisKKyAgICBUVmVjdG9yPEZ1bmN0aW9uTm9kZSo+IGZ1bmN0aW9uczsKKyAgICBGdW5jdGlv
bk5vZGUqIGN1cnJlbnRGdW5jdGlvbjsKKyAgICBUSW5mb1NpbmsmIGluZm9TaW5rOworICAgIGlu
dCBtYXhEZXB0aDsKKworICAgIERldGVjdENhbGxEZXB0aChjb25zdCBEZXRlY3RDYWxsRGVwdGgm
KTsKKyAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBEZXRlY3RDYWxsRGVwdGgmKTsKK307CisKKyNl
bmRpZiAgLy8gQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5o
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAJKHJldmlzaW9u
IDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RS
ZWN1cnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyNSArMCwwIEBACi0vLwotLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotCi0jaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgiCi0KLURldGVj
dFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5h
bWUpCi0gICAgOiBuYW1lKGZuYW1lKSwKLSAgICAgIHZpc2l0KFByZVZpc2l0KQotewotfQotCi1j
b25zdCBUU3RyaW5nJiBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KLXZvaWQgRGV0ZWN0UmVjdXJzaW9uOjpGdW5j
dGlvbk5vZGU6OmFkZENhbGxlZSgKLSAgICBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZSog
Y2FsbGVlKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsr
aSkgewotICAgICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Ci19Ci0KLWJvb2wgRGV0
ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGU6OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgQVNT
RVJUKHZpc2l0ID09IFByZVZpc2l0KTsKLSAgICB2aXNpdCA9IEluVmlzaXQ7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN3aXRjaCAo
Y2FsbGVlc1tpXS0+dmlzaXQpIHsKLSAgICAgICAgICAgIGNhc2UgSW5WaXNpdDoKLSAgICAgICAg
ICAgICAgICAvLyBjeWNsZSBkZXRlY3RlZCwgaS5lLiwgcmVjdXJzaW9uIGRldGVjdGVkLgotICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgY2FzZSBQb3N0VmlzaXQ6Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFByZVZpc2l0OiB7Ci0gICAg
ICAgICAgICAgICAgYm9vbCByZWN1cnNpb24gPSBjYWxsZWVzW2ldLT5kZXRlY3RSZWN1cnNpb24o
KTsKLSAgICAgICAgICAgICAgICBpZiAocmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICB2aXNpdCA9IFBvc3RWaXNpdDsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RGV0ZWN0UmVjdXJzaW9u
KCkKLSAgICA6IGN1cnJlbnRGdW5jdGlvbihOVUxMKQotewotfQotCi1EZXRlY3RSZWN1cnNpb246
On5EZXRlY3RSZWN1cnNpb24oKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rp
b25zLnNpemUoKTsgKytpKQotICAgICAgICBkZWxldGUgZnVuY3Rpb25zW2ldOwotfQotCi1ib29s
IERldGVjdFJlY3Vyc2lvbjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dy
ZWdhdGUqIG5vZGUpCi17Ci0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQotICAgIHsKLSAgICAg
ICAgY2FzZSBFT3BQcm90b3R5cGU6Ci0gICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWNsYXJhdGlv
bi4KLSAgICAgICAgICAgIC8vIERvbid0IGFkZCBGdW5jdGlvbk5vZGUgaGVyZSBiZWNhdXNlIG5v
ZGUtPmdldE5hbWUoKSBpcyB0aGUKLSAgICAgICAgICAgIC8vIHVubWFuZ2xlZCBmdW5jdGlvbiBu
YW1lLgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wRnVuY3Rpb246IHsKLSAg
ICAgICAgICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCi0gICAgICAgICAgICBpZiAodmlzaXQg
PT0gUHJlVmlzaXQpIHsKLSAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24gPSBmaW5kRnVu
Y3Rpb25CeU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVu
dEZ1bmN0aW9uID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9u
ID0gbmV3IEZ1bmN0aW9uTm9kZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbnMucHVzaF9iYWNrKGN1cnJlbnRGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBFT3BGdW5jdGlvbkNhbGw6IHsKLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGNhbGwuCi0g
ICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpIHsKLSAgICAgICAgICAgICAgICBBU1NF
UlQoY3VycmVudEZ1bmN0aW9uICE9IE5VTEwpOwotICAgICAgICAgICAgICAgIEZ1bmN0aW9uTm9k
ZSogZnVuYyA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAg
ICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG5l
dyBGdW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb25zLnB1c2hfYmFjayhmdW5jKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgY3VycmVudEZ1bmN0aW9uLT5hZGRDYWxsZWUoZnVuYyk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1EZXRlY3RSZWN1cnNpb246OkVy
cm9yQ29kZSBEZXRlY3RSZWN1cnNpb246OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgRnVuY3Rp
b25Ob2RlKiBtYWluID0gZmluZEZ1bmN0aW9uQnlOYW1lKCJtYWluKCIpOwotICAgIGlmIChtYWlu
ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBrRXJyb3JNaXNzaW5nTWFpbjsKLSAgICBpZiAobWFp
bi0+ZGV0ZWN0UmVjdXJzaW9uKCkpCi0gICAgICAgIHJldHVybiBrRXJyb3JSZWN1cnNpb247Ci0g
ICAgcmV0dXJuIGtFcnJvck5vbmU7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2Rl
KiBEZXRlY3RSZWN1cnNpb246OmZpbmRGdW5jdGlvbkJ5TmFtZSgKLSAgICBjb25zdCBUU3RyaW5n
JiBuYW1lKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbnNbaV0tPmdldE5hbWUoKSA9PSBuYW1lKQotICAg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uc1tpXTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19
Ci0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1
cnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvRGV0ZWN0UmVjdXJzaW9uLmgJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2MCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIENPTVBJTEVSX0RF
VEVDVF9SRUNVUlNJT05fSF8KLSNkZWZpbmUgQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwot
Ci0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLSNpbmNsdWRlICJjb21waWxlci9p
bnRlcm1lZGlhdGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9WYXJpYWJsZUluZm8uaCIKLQotLy8g
VHJhdmVyc2VzIGludGVybWVkaWF0ZSB0cmVlIHRvIGRldGVjdCBmdW5jdGlvbiByZWN1cnNpb24u
Ci1jbGFzcyBEZXRlY3RSZWN1cnNpb24gOiBwdWJsaWMgVEludGVybVRyYXZlcnNlciB7Ci1wdWJs
aWM6Ci0gICAgZW51bSBFcnJvckNvZGUgewotICAgICAgICBrRXJyb3JNaXNzaW5nTWFpbiwKLSAg
ICAgICAga0Vycm9yUmVjdXJzaW9uLAotICAgICAgICBrRXJyb3JOb25lCi0gICAgfTsKLQotICAg
IERldGVjdFJlY3Vyc2lvbigpOwotICAgIH5EZXRlY3RSZWN1cnNpb24oKTsKLQotICAgIHZpcnR1
YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopOwotCi0gICAg
RXJyb3JDb2RlIGRldGVjdFJlY3Vyc2lvbigpOwotCi1wcml2YXRlOgotICAgIGNsYXNzIEZ1bmN0
aW9uTm9kZSB7Ci0gICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmlu
ZyYgZm5hbWUpOwotCi0gICAgICAgIGNvbnN0IFRTdHJpbmcmIGdldE5hbWUoKSBjb25zdDsKLQot
ICAgICAgICAvLyBJZiBhIGZ1bmN0aW9uIGlzIGFscmVhZHkgaW4gdGhlIGNhbGxlZSBsaXN0LCB0
aGlzIGJlY29tZXMgYSBuby1vcC4KLSAgICAgICAgdm9pZCBhZGRDYWxsZWUoRnVuY3Rpb25Ob2Rl
KiBjYWxsZWUpOwotCi0gICAgICAgIC8vIFJldHVybiB0cnVlIGlmIHJlY3Vyc2l2ZSBmdW5jdGlv
biBjYWxscyBhcmUgZGV0ZWN0ZWQuCi0gICAgICAgIGJvb2wgZGV0ZWN0UmVjdXJzaW9uKCk7Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICAvLyBtYW5nbGVkIGZ1bmN0aW9uIG5hbWUgaXMgdW5pcXVl
LgotICAgICAgICBUU3RyaW5nIG5hbWU7Ci0KLSAgICAgICAgLy8gZnVuY3Rpb25zIHRoYXQgYXJl
IGRpcmVjdGx5IGNhbGxlZCBieSB0aGlzIGZ1bmN0aW9uLgotICAgICAgICBUVmVjdG9yPEZ1bmN0
aW9uTm9kZSo+IGNhbGxlZXM7Ci0KLSAgICAgICAgVmlzaXQgdmlzaXQ7Ci0gICAgfTsKLQotICAg
IEZ1bmN0aW9uTm9kZSogZmluZEZ1bmN0aW9uQnlOYW1lKGNvbnN0IFRTdHJpbmcmIG5hbWUpOwot
Ci0gICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBmdW5jdGlvbnM7Ci0gICAgRnVuY3Rpb25Ob2Rl
KiBjdXJyZW50RnVuY3Rpb247Ci19OwotCi0jZW5kaWYgIC8vIENPTVBJTEVSX0RFVEVDVF9SRUNV
UlNJT05fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFn
bm9zdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0RpYWdub3N0aWNzLmNwcAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNyArNDYsNyBAQCB2b2lkIFREaWFnbm9zdGljczo6d3JpdGVJbmZvKFNldmVyaXR5IHNl
CiAgICAgVEluZm9TaW5rQmFzZSYgc2luayA9IG1JbmZvU2luay5pbmZvOwogICAgIC8qIFZDKysg
Zm9ybWF0OiBmaWxlKGxpbmVudW0pIDogZXJyb3IgIzogJ3Rva2VuJyA6IGV4dHJhaW5mbyAqLwog
ICAgIHNpbmsucHJlZml4KHByZWZpeCk7Ci0gICAgc2luay5sb2NhdGlvbihFbmNvZGVTb3VyY2VM
b2MobG9jLmZpbGUsIGxvYy5saW5lKSk7CisgICAgc2luay5sb2NhdGlvbihsb2MuZmlsZSwgbG9j
LmxpbmUpOwogICAgIHNpbmsgPDwgIiciIDw8IHRva2VuIDw8ICAiJyA6ICIgPDwgcmVhc29uIDw8
ICIgIiA8PCBleHRyYSA8PCAiXG4iOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCShyZXZpc2lvbiAx
NTI1OTUpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRm9yTG9vcFVu
cm9sbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTIxMCw2ICsyMTAsNiBAQCBpbnQgRm9yTG9vcFVucm9s
bDo6Z2V0TG9vcEluY3JlbWVudChUSW50CiBpbnQgRm9yTG9vcFVucm9sbDo6ZXZhbHVhdGVJbnRD
b25zdGFudChUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsKICAgICBBU1NFUlQoKG5vZGUg
IT0gTlVMTCkgJiYgKG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCkgIT0gTlVMTCkpOwotICAg
IHJldHVybiBub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAgICBy
ZXR1cm4gbm9kZS0+Z2V0SUNvbnN0KDApOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHJldmlzaW9uIDE1MjU5NSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBACiAKICNpbmNsdWRlICJjb21waWxlci9JbmZvU2lu
ay5oIgogCi12b2lkIFRJbmZvU2lua0Jhc2U6OnByZWZpeChUUHJlZml4VHlwZSBtZXNzYWdlKSB7
Ci0gICAgc3dpdGNoKG1lc3NhZ2UpIHsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6cHJlZml4KFRQcmVm
aXhUeXBlIHApIHsKKyAgICBzd2l0Y2gocCkgewogICAgICAgICBjYXNlIEVQcmVmaXhOb25lOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRVByZWZpeFdhcm5pbmc6CkBAIC0zMSwy
OSArMzEsMjQgQEAgdm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoVFByZWZpeFR5cGUgbQogICAg
IH0KIH0KIAotdm9pZCBUSW5mb1NpbmtCYXNlOjpsb2NhdGlvbihUU291cmNlTG9jIGxvYykgewot
ICAgIGludCBzdHJpbmcgPSAwLCBsaW5lID0gMDsKLSAgICBEZWNvZGVTb3VyY2VMb2MobG9jLCAm
c3RyaW5nLCAmbGluZSk7Ci0KK3ZvaWQgVEluZm9TaW5rQmFzZTo6bG9jYXRpb24oaW50IGZpbGUs
IGludCBsaW5lKSB7CiAgICAgVFBlcnNpc3RTdHJpbmdTdHJlYW0gc3RyZWFtOwogICAgIGlmIChs
aW5lKQotICAgICAgICBzdHJlYW0gPDwgc3RyaW5nIDw8ICI6IiA8PCBsaW5lOworICAgICAgICBz
dHJlYW0gPDwgZmlsZSA8PCAiOiIgPDwgbGluZTsKICAgICBlbHNlCi0gICAgICAgIHN0cmVhbSA8
PCBzdHJpbmcgPDwgIjo/ICI7CisgICAgICAgIHN0cmVhbSA8PCBmaWxlIDw8ICI6PyAiOwogICAg
IHN0cmVhbSA8PCAiOiAiOwogCiAgICAgc2luay5hcHBlbmQoc3RyZWFtLnN0cigpKTsKIH0KIAot
dm9pZCBUSW5mb1NpbmtCYXNlOjptZXNzYWdlKFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNo
YXIqIHMpIHsKLSAgICBwcmVmaXgobWVzc2FnZSk7Ci0gICAgc2luay5hcHBlbmQocyk7Ci0gICAg
c2luay5hcHBlbmQoIlxuIik7Cit2b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9uKGNvbnN0IFRT
b3VyY2VMb2MmIGxvYykgeworICAgIGxvY2F0aW9uKGxvYy5maXJzdF9maWxlLCBsb2MuZmlyc3Rf
bGluZSk7CiB9CiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBtZXNz
YWdlLCBjb25zdCBjaGFyKiBzLCBUU291cmNlTG9jIGxvYykgewotICAgIHByZWZpeChtZXNzYWdl
KTsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291
cmNlTG9jJiBsb2MsIGNvbnN0IGNoYXIqIG0pIHsKKyAgICBwcmVmaXgocCk7CiAgICAgbG9jYXRp
b24obG9jKTsKLSAgICBzaW5rLmFwcGVuZChzKTsKKyAgICBzaW5rLmFwcGVuZChtKTsKICAgICBz
aW5rLmFwcGVuZCgiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9JbmZvU2luay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9JbmZvU2luay5oCShyZXZpc2lvbiAxNTI1OTUpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuaAkod29ya2luZyBjb3B5KQpAQCAt
OTYsMTAgKzk2LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBUUGVyc2lzdFN0cmluZyYgc3RyKCkg
Y29uc3QgeyByZXR1cm4gc2luazsgfQogICAgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29uc3QgeyBy
ZXR1cm4gc2luay5jX3N0cigpOyB9CiAKLSAgICB2b2lkIHByZWZpeChUUHJlZml4VHlwZSBtZXNz
YWdlKTsKLSAgICB2b2lkIGxvY2F0aW9uKFRTb3VyY2VMb2MgbG9jKTsKLSAgICB2b2lkIG1lc3Nh
Z2UoVFByZWZpeFR5cGUgbWVzc2FnZSwgY29uc3QgY2hhciogcyk7Ci0gICAgdm9pZCBtZXNzYWdl
KFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMsIFRTb3VyY2VMb2MgbG9jKTsKKyAg
ICB2b2lkIHByZWZpeChUUHJlZml4VHlwZSBwKTsKKyAgICB2b2lkIGxvY2F0aW9uKGludCBmaWxl
LCBpbnQgbGluZSk7CisgICAgdm9pZCBsb2NhdGlvbihjb25zdCBUU291cmNlTG9jJiBsb2MpOwor
ICAgIHZvaWQgbWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291cmNlTG9jJiBsb2MsIGNv
bnN0IGNoYXIqIG0pOwogCiBwcml2YXRlOgogICAgIFRQZXJzaXN0U3RyaW5nIHNpbms7CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxp
emUuY3BwCShyZXZpc2lvbiAxNTI1OTUpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2LDM3MyArMTYsNiBA
QAogCiAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC8vCi0vLyBQcm90b3R5cGVzIGZvciBidWlsdC1p
biBmdW5jdGlvbnMgc2VlbiBieSBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycy4KLS8v
Ci0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLXN0YXRpYyBUU3RyaW5nIEJ1aWx0SW5GdW5jdGlvbnND
b21tb24oY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCi17Ci0gICAgVFN0cmlu
ZyBzOwotCi0gICAgLy8KLSAgICAvLyBBbmdsZSBhbmQgVHJpZ29ub21ldHJpYyBGdW5jdGlvbnMu
Ci0gICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCByYWRpYW5zKGZsb2F0IGRlZ3Jl
ZXMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICByYWRpYW5zKHZlYzIgIGRlZ3Jl
ZXMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICByYWRpYW5zKHZlYzMgIGRlZ3Jl
ZXMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByYWRpYW5zKHZlYzQgIGRlZ3Jl
ZXMpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRlZ3JlZXMoZmxvYXQgcmFk
aWFucyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGRlZ3JlZXModmVjMiAgcmFk
aWFucyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGRlZ3JlZXModmVjMyAgcmFk
aWFucyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGRlZ3JlZXModmVjNCAgcmFk
aWFucyk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc2luKGZsb2F0IGFuZ2xl
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2luKHZlYzIgIGFuZ2xlKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc2luKHZlYzMgIGFuZ2xlKTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCAgc2luKHZlYzQgIGFuZ2xlKTsiKSk7Ci0KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJmbG9hdCBjb3MoZmxvYXQgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMyICBjb3ModmVjMiAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMzICBjb3ModmVjMyAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0
ICBjb3ModmVjNCAgYW5nbGUpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHRh
bihmbG9hdCBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHRhbih2ZWMy
ICBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHRhbih2ZWMzICBhbmds
ZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHRhbih2ZWM0ICBhbmdsZSk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYXNpbihmbG9hdCB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMiAgYXNpbih2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMyAgYXNpbih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgYXNpbih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBh
Y29zKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhY29zKHZlYzIg
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhY29zKHZlYzMgIHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhY29zKHZlYzQgIHgpOyIpKTsKLQotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImZsb2F0IGF0YW4oZmxvYXQgeSwgZmxvYXQgeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeSwgdmVjMiAgeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzMgIGF0YW4odmVjMyAgeSwgdmVjMyAgeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgIGF0YW4odmVjNCAgeSwgdmVjNCAgeCk7IikpOwotCi0gICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYXRhbihmbG9hdCB5X292ZXJfeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeV9vdmVyX3gpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMzICBhdGFuKHZlYzMgIHlfb3Zlcl94KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgYXRhbih2ZWM0ICB5X292ZXJfeCk7IikpOwotCi0gICAgLy8KLSAg
ICAvLyBFeHBvbmVudGlhbCBGdW5jdGlvbnMuCi0gICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJmbG9hdCBwb3coZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzIgIHBvdyh2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgcG93KHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0ICBwb3codmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygi
ZmxvYXQgZXhwKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAo
dmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGV4cCh2ZWMzICB4KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZXhwKHZlYzQgIHgpOyIpKTsKLQotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxvZyhmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMiAgbG9nKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMzICBsb2codmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZyh2
ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBleHAyKGZsb2F0IHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAyKHZlYzIgIHgpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBleHAyKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWM0ICBleHAyKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImZsb2F0IGxvZzIoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IGxvZzIodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGxvZzIodmVj
MyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZzIodmVjNCAgeCk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc3FydChmbG9hdCB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMiAgc3FydCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMyAgc3FydCh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgc3FydCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBp
bnZlcnNlc3FydChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgaW52
ZXJzZXNxcnQodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGludmVy
c2VzcXJ0KHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBpbnZlcnNl
c3FydCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICAvLwotICAgIC8vIENvbW1vbiBGdW5jdGlvbnMuCi0g
ICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhYnMoZmxvYXQgeCk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGFicyh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMyAgYWJzKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0ICBhYnModmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc2ln
bihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2lnbih2ZWMyICB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc2lnbih2ZWMzICB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc2lnbih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJmbG9hdCBmbG9vcihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMiAgZmxvb3IodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzMgIGZsb29yKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBmbG9v
cih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBjZWlsKGZsb2F0
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBjZWlsKHZlYzIgIHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBjZWlsKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0ICBjZWlsKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImZsb2F0IGZyYWN0KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMyICBmcmFjdCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZnJh
Y3QodmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGZyYWN0KHZlYzQg
IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG1vZChmbG9hdCB4LCBmbG9h
dCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbW9kKHZlYzIgIHgsIGZsb2F0
IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtb2QodmVjMyAgeCwgZmxvYXQg
eSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2ZWM0ICB4LCBmbG9hdCB5
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbW9kKHZlYzIgIHgsIHZlYzIgIHkp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtb2QodmVjMyAgeCwgdmVjMyAgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2ZWM0ICB4LCB2ZWM0ICB5KTsi
KSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtaW4oZmxvYXQgeCwgZmxvYXQgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1pbih2ZWMyICB4LCBmbG9hdCB5KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIGZsb2F0IHkpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4odmVjNCAgeCwgZmxvYXQgeSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1pbih2ZWMyICB4LCB2ZWMyICB5KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4odmVjNCAgeCwgdmVjNCAgeSk7IikpOwot
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbWF4KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgZmxvYXQgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1heCh2ZWMzICB4LCBmbG9hdCB5KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWF4KHZlYzQgIHgsIGZsb2F0IHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1heCh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWF4KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGNsYW1wKGZsb2F0IHgsIGZsb2F0IG1pblZhbCwgZmxv
YXQgbWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2xhbXAodmVjMiAg
eCwgZmxvYXQgbWluVmFsLCBmbG9hdCBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMzICBjbGFtcCh2ZWMzICB4LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIGZsb2F0IG1pblZhbCwg
ZmxvYXQgbWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2xhbXAodmVj
MiAgeCwgdmVjMiAgbWluVmFsLCB2ZWMyICBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMzICBjbGFtcCh2ZWMzICB4LCB2ZWMzICBtaW5WYWwsIHZlYzMgIG1heFZhbCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIHZlYzQgIG1pblZh
bCwgdmVjNCAgbWF4VmFsKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtaXgo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgYSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzIgIG1peCh2ZWMyICB4LCB2ZWMyICB5LCBmbG9hdCBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMyAgbWl4KHZlYzMgIHgsIHZlYzMgIHksIGZsb2F0IGEpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwgdmVjNCAgeSwgZmxvYXQgYSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1peCh2ZWMyICB4LCB2ZWMyICB5LCB2ZWMyICBh
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWl4KHZlYzMgIHgsIHZlYzMgIHks
IHZlYzMgIGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwg
dmVjNCAgeSwgdmVjNCAgYSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc3Rl
cChmbG9hdCBlZGdlLCBmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAg
c3RlcCh2ZWMyICBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgc3RlcCh2ZWMzICBlZGdlLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgc3RlcCh2ZWM0ICBlZGdlLCB2ZWM0ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiAgc3RlcChmbG9hdCBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMyAgc3RlcChmbG9hdCBlZGdlLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgc3RlcChmbG9hdCBlZGdlLCB2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJmbG9hdCBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwg
ZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNtb290aHN0ZXAodmVj
MiAgZWRnZTAsIHZlYzIgIGVkZ2UxLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgc21vb3Roc3RlcCh2ZWMzICBlZGdlMCwgdmVjMyAgZWRnZTEsIHZlYzMgIHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKHZlYzQgIGVkZ2UwLCB2
ZWM0ICBlZGdlMSwgdmVjNCAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNt
b290aHN0ZXAoZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMyAgc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEs
IHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKGZs
b2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgdmVjNCAgeCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBH
ZW9tZXRyaWMgRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQg
bGVuZ3RoKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsZW5ndGgo
dmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2ZWMzICB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKHZlYzQgIHgpOyIpKTsK
LQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKGZsb2F0IHAwLCBmbG9hdCBw
MSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzIgIHAwLCB2
ZWMyICBwMSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzMg
IHAwLCB2ZWMzICBwMSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNl
KHZlYzQgIHAwLCB2ZWM0ICBwMSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQg
ZG90KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBk
b3QodmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRv
dCh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90
KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgY3Jv
c3ModmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub3Jt
YWxpemUoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG5vcm1hbGl6
ZSh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbm9ybWFsaXplKHZl
YzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBub3JtYWxpemUodmVjNCAg
eCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZmFjZWZvcndhcmQoZmxvYXQg
TiwgZmxvYXQgSSwgZmxvYXQgTnJlZik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IGZhY2Vmb3J3YXJkKHZlYzIgIE4sIHZlYzIgIEksIHZlYzIgIE5yZWYpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMzICBmYWNlZm9yd2FyZCh2ZWMzICBOLCB2ZWMzICBJLCB2ZWMzICBO
cmVmKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZmFjZWZvcndhcmQodmVjNCAg
TiwgdmVjNCAgSSwgdmVjNCAgTnJlZik7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxv
YXQgcmVmbGVjdChmbG9hdCBJLCBmbG9hdCBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMiAgcmVmbGVjdCh2ZWMyICBJLCB2ZWMyICBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgcmVmbGVjdCh2ZWMzICBJLCB2ZWMzICBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjNCAgcmVmbGVjdCh2ZWM0ICBJLCB2ZWM0ICBOKTsiKSk7Ci0KLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJmbG9hdCByZWZyYWN0KGZsb2F0IEksIGZsb2F0IE4sIGZsb2F0IGV0YSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHJlZnJhY3QodmVjMiAgSSwgdmVjMiAgTiwg
ZmxvYXQgZXRhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcmVmcmFjdCh2ZWMz
ICBJLCB2ZWMzICBOLCBmbG9hdCBldGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0
ICByZWZyYWN0KHZlYzQgIEksIHZlYzQgIE4sIGZsb2F0IGV0YSk7IikpOwotCi0gICAgLy8KLSAg
ICAvLyBNYXRyaXggRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygibWF0
MiBtYXRyaXhDb21wTXVsdChtYXQyIHgsIG1hdDIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoIm1hdDMgbWF0cml4Q29tcE11bHQobWF0MyB4LCBtYXQzIHkpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJtYXQ0IG1hdHJpeENvbXBNdWx0KG1hdDQgeCwgbWF0NCB5KTsiKSk7Ci0KLSAg
ICAvLwotICAgIC8vIFZlY3RvciByZWxhdGlvbmFsIGZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGxlc3NUaGFuKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbGVzc1RoYW4odmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbih2ZWM0IHgsIHZlYzQgeSk7IikpOwot
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbGVzc1RoYW4oaXZlYzIgeCwgaXZlYzIgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuKGl2ZWMzIHgsIGl2ZWMz
IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbihpdmVjNCB4LCBp
dmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbkVxdWFs
KHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbGVzc1Ro
YW5FcXVhbCh2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0
IGxlc3NUaGFuRXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJ2ZWMyIGxlc3NUaGFuRXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuRXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NUaGFuRXF1YWwoaXZlYzQgeCwgaXZlYzQg
eSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW4odmVjMiB4
LCB2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbih2
ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJU
aGFuKHZlYzQgeCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBn
cmVhdGVyVGhhbihpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
YnZlYzMgZ3JlYXRlclRoYW4oaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFuKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGdyZWF0ZXJUaGFuRXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbkVxdWFsKHZlYzMgeCwg
dmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVh
bCh2ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3Jl
YXRlclRoYW5FcXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiYnZlYzMgZ3JlYXRlclRoYW5FcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVhbChpdmVjNCB4LCBpdmVjNCB5KTsi
KSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBlcXVhbCh2ZWMyIHgsIHZlYzIgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKHZlYzMgeCwgdmVjMyB5KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIp
KTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGVxdWFsKGl2ZWMyIHgsIGl2ZWMyIHkp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBlcXVhbChpdmVjMyB4LCBpdmVjMyB5
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwoaXZlYzQgeCwgaXZlYzQg
eSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZXF1YWwoYnZlYzIgeCwgYnZl
YzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKGJ2ZWMzIHgsIGJ2
ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBlcXVhbChidmVjNCB4LCBi
dmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBub3RFcXVhbCh2ZWMy
IHgsIHZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5vdEVxdWFsKHZl
YzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1YWwo
dmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdEVx
dWFsKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBu
b3RFcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZl
YzQgbm90RXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiYnZlYzIgbm90RXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImJ2ZWMzIG5vdEVxdWFsKGJ2ZWMzIHgsIGJ2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJidmVjNCBub3RFcXVhbChidmVjNCB4LCBidmVjNCB5KTsiKSk7Ci0KLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJib29sIGFueShidmVjMiB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygiYm9vbCBhbnkoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wg
YW55KGJ2ZWM0IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYWxsKGJ2ZWMy
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFsbChidmVjMyB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygiYm9vbCBhbGwoYnZlYzQgeCk7IikpOwotCi0gICAgcy5hcHBl
bmQoVFN0cmluZygiYnZlYzIgbm90KGJ2ZWMyIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJidmVjMyBub3QoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IG5v
dChidmVjNCB4KTsiKSk7Ci0KLSAgICAvLwotICAgIC8vIFRleHR1cmUgRnVuY3Rpb25zLgotICAg
IC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkQoc2FtcGxlcjJEIHNhbXBs
ZXIsIHZlYzIgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUy
RFByb2ooc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzQgY29vcmQp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmVDdWJlKHNhbXBsZXJDdWJl
IHNhbXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLQotICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9p
bWFnZV9leHRlcm5hbCkgewotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUy
RChzYW1wbGVyRXh0ZXJuYWxPRVMgc2FtcGxlciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlckV4dGVybmFsT0VTIHNh
bXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0
ZXh0dXJlMkRQcm9qKHNhbXBsZXJFeHRlcm5hbE9FUyBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7
Ci0gICAgfQotCi0gICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKLSAg
ICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRSZWN0KHNhbXBsZXIyRFJlY3Qg
c2FtcGxlciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0
IHRleHR1cmUyRFJlY3RQcm9qKHNhbXBsZXIyRFJlY3Qgc2FtcGxlciwgdmVjMyBjb29yZCk7Iikp
OwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFJlY3RQcm9qKHNhbXBs
ZXIyRFJlY3Qgc2FtcGxlciwgdmVjNCBjb29yZCk7IikpOwotICAgIH0KLQotICAgIC8vCi0gICAg
Ly8gTm9pc2UgZnVuY3Rpb25zLgotICAgIC8vCi0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCBub2lzZTEoZmxvYXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbm9p
c2UxKHZlYzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG5vaXNlMSh2
ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lzZTEodmVjNCAg
eCk7IikpOwotCi0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMihmbG9hdCB4KTsi
KSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWMyICB4KTsiKSk7Ci0g
ICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWMzICB4KTsiKSk7Ci0gICAgLy9z
LmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWM0ICB4KTsiKSk7Ci0KLSAgICAvL3MuYXBw
ZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKGZsb2F0IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRT
dHJpbmcoInZlYzMgbm9pc2UzKHZlYzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmco
InZlYzMgbm9pc2UzKHZlYzMgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMg
bm9pc2UzKHZlYzQgIHgpOyIpKTsKLQotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lz
ZTQoZmxvYXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVj
MiAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjMyAgeCk7
IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjNCAgeCk7IikpOwot
Ci0gICAgcmV0dXJuIHM7Ci19Ci0KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFByb3Rv
dHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9ucyBzZWVuIGJ5IHZlcnRleCBzaGFkZXJzIG9ubHku
Ci0vLwotLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBCdWlsdEluRnVuY3Rp
b25zVmVydGV4KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQotewotICAgIFRT
dHJpbmcgczsKLQotICAgIC8vCi0gICAgLy8gR2VvbWV0cmljIEZ1bmN0aW9ucy4KLSAgICAvLwot
ICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBmdHJhbnNmb3JtKCk7IikpOwotCi0gICAgLy8K
LSAgICAvLyBUZXh0dXJlIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzQgdGV4dHVyZTJETG9kKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMyIGNvb3JkLCBmbG9hdCBs
b2QpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2pMb2Qoc2Ft
cGxlcjJEIHNhbXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0IGxvZCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVjNCBj
b29yZCwgZmxvYXQgbG9kKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJl
Q3ViZUxvZChzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBsb2QpOyIpKTsK
LQotICAgIHJldHVybiBzOwotfQotCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCiAvLyBQcm90
b3R5cGVzIGZvciBidWlsdC1pbiBmdW5jdGlvbnMgc2VlbiBieSBmcmFnbWVudCBzaGFkZXJzIG9u
bHkuCiAvLwogLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC01MDAsMTUgKzEzMywxMiBAQCB2b2lk
IFRCdWlsdEluczo6aW5pdGlhbGl6ZShTaFNoYWRlclR5cGUgCiAgICAgc3dpdGNoICh0eXBlKSB7
CiAgICAgY2FzZSBTSF9GUkFHTUVOVF9TSEFERVI6CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1
c2hfYmFjayhEZWZhdWx0UHJlY2lzaW9uRnJhZ21lbnQoKSk7Ci0gICAgICAgIGJ1aWx0SW5TdHJp
bmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNlcykpOwogICAgICAg
ICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc0ZyYWdtZW50KHJlc291
cmNlcykpOwogICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soU3RhbmRhcmRVbmlmb3Jt
cygpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNIX1ZFUlRFWF9TSEFERVI6CiAgICAg
ICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhEZWZhdWx0UHJlY2lzaW9uVmVydGV4KCkpOwot
ICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc0NvbW1vbihy
ZXNvdXJjZXMpKTsKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1aWx0SW5GdW5j
dGlvbnNWZXJ0ZXgocmVzb3VyY2VzKSk7CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFj
ayhTdGFuZGFyZFVuaWZvcm1zKCkpOwogICAgICAgICBicmVhazsKIApAQCAtNTM5LDYgKzE2OSwx
MCBAQCB2b2lkIElkZW50aWZ5QnVpbHRJbnMoU2hTaGFkZXJUeXBlIHR5cGUsCiAgICAgICAgIGlm
IChzcGVjICE9IFNIX0NTU19TSEFERVJTX1NQRUMpIHsKICAgICAgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJhZ0NvbG9yIiksICAg
ICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUZyYWdDb2xvciwg
ICA0KSkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5l
d1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGF0YVtnbF9NYXhEcmF3QnVmZmVyc10iKSwgVFR5cGUoRWJ0
RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0RhdGEsICAgIDQpKSk7CisgICAgICAgICAgICBpZiAo
cmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoKSB7CisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGVwdGhFWFQiKSwg
ICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgcmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGln
aCA/IEVicEhpZ2ggOiBFYnBNZWRpdW0sIEV2cUZyYWdEZXB0aCwgMSkpKTsKKyAgICAgICAgICAg
ICAgICBzeW1ib2xUYWJsZS5yZWxhdGVUb0V4dGVuc2lvbigiZ2xfRnJhZ0RlcHRoRVhUIiwgIkdM
X0VYVF9mcmFnX2RlcHRoIik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmco
ImNzc19NaXhDb2xvciIpLCAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVk
aXVtLCBFdnFHbG9iYWwsICAgICAgNCkpKTsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiY3NzX0NvbG9yTWF0cml4IiksICAgICAg
ICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUdsb2JhbCwgICAgICA0LCB0
cnVlKSkpOwpAQCAtNjU2LDQgKzI5MCw2IEBAIHZvaWQgSW5pdEV4dGVuc2lvbkJlaGF2aW9yKGNv
bnN0IFNoQnVpbHQKICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX0FSQl90ZXh0dXJlX3JlY3Rhbmds
ZSJdID0gRUJoVW5kZWZpbmVkOwogICAgIGlmIChyZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycykK
ICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX0VYVF9kcmF3X2J1ZmZlcnMiXSA9IEVCaFVuZGVmaW5l
ZDsKKyAgICBpZiAocmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoKQorICAgICAgICBleHRCZWhhdmlv
clsiR0xfRVhUX2ZyYWdfZGVwdGgiXSA9IEVCaFVuZGVmaW5lZDsKIH0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3Bw
CShyZXZpc2lvbiAxNTI1OTUpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvSW50ZXJtZWRpYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTMxLDcgKzEzMSw3IEBAIGNvbnN0
IGNoYXIqIGdldE9wZXJhdG9yU3RyaW5nKFRPcGVyYXRvciAKIC8vCiAvLyBSZXR1cm5zIHRoZSBh
ZGRlZCBub2RlLgogLy8KLVRJbnRlcm1TeW1ib2wqIFRJbnRlcm1lZGlhdGU6OmFkZFN5bWJvbChp
bnQgaWQsIGNvbnN0IFRTdHJpbmcmIG5hbWUsIGNvbnN0IFRUeXBlJiB0eXBlLCBUU291cmNlTG9j
IGxpbmUpCitUSW50ZXJtU3ltYm9sKiBUSW50ZXJtZWRpYXRlOjphZGRTeW1ib2woaW50IGlkLCBj
b25zdCBUU3RyaW5nJiBuYW1lLCBjb25zdCBUVHlwZSYgdHlwZSwgY29uc3QgVFNvdXJjZUxvYyYg
bGluZSkKIHsKICAgICBUSW50ZXJtU3ltYm9sKiBub2RlID0gbmV3IFRJbnRlcm1TeW1ib2woaWQs
IG5hbWUsIHR5cGUpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CkBAIC0xNDQsNyArMTQ0LDcg
QEAgVEludGVybVN5bWJvbCogVEludGVybWVkaWF0ZTo6YWRkU3ltYm9sKAogLy8KIC8vIFJldHVy
bnMgdGhlIGFkZGVkIG5vZGUuCiAvLwotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRC
aW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQq
IHJpZ2h0LCBUU291cmNlTG9jIGxpbmUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCitUSW50
ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50
ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCiB7CiAgICAgc3dpdGNoIChvcCkgewogICAg
ICAgICBjYXNlIEVPcEVxdWFsOgpAQCAtMjAwLDggKzIwMCw2IEBAIFRJbnRlcm1UeXBlZCogVElu
dGVybWVkaWF0ZTo6YWRkQmluYXJ5TWEKICAgICAvLyBvbmUgYW5kIHByb21vdGUgaXQgdG8gdGhl
IHJpZ2h0IHR5cGUuCiAgICAgLy8KICAgICBUSW50ZXJtQmluYXJ5KiBub2RlID0gbmV3IFRJbnRl
cm1CaW5hcnkob3ApOwotICAgIGlmIChsaW5lID09IDApCi0gICAgICAgIGxpbmUgPSByaWdodC0+
Z2V0TGluZSgpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CiAKICAgICBub2RlLT5zZXRMZWZ0
KGxlZnQpOwpAQCAtMjMwLDE1ICsyMjgsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRl
OjphZGRCaW5hcnlNYQogLy8KIC8vIFJldHVybnMgdGhlIGFkZGVkIG5vZGUuCiAvLwotVEludGVy
bVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRBc3NpZ24oVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlw
ZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1U
eXBlZCogVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVk
KiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewog
ICAgIC8vCiAgICAgLy8gTGlrZSBhZGRpbmcgYmluYXJ5IG1hdGgsIGV4Y2VwdCB0aGUgY29udmVy
c2lvbiBjYW4gb25seSBnbwogICAgIC8vIGZyb20gcmlnaHQgdG8gbGVmdC4KICAgICAvLwogICAg
IFRJbnRlcm1CaW5hcnkqIG5vZGUgPSBuZXcgVEludGVybUJpbmFyeShvcCk7Ci0gICAgaWYgKGxp
bmUgPT0gMCkKLSAgICAgICAgbGluZSA9IGxlZnQtPmdldExpbmUoKTsKICAgICBub2RlLT5zZXRM
aW5lKGxpbmUpOwogCiAgICAgVEludGVybVR5cGVkKiBjaGlsZCA9IGFkZENvbnZlcnNpb24ob3As
IGxlZnQtPmdldFR5cGUoKSwgcmlnaHQpOwpAQCAtMjYwLDExICsyNTYsOSBAQCBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEFzc2lnbihUCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2Rl
LgogLy8gVGhlIGNhbGxlciBzaG91bGQgc2V0IHRoZSB0eXBlIG9mIHRoZSByZXR1cm5lZCBub2Rl
LgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkSW5kZXgoVE9wZXJhdG9yIG9w
LCBUSW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIFRTb3VyY2VMb2MgbGlu
ZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkSW5kZXgoVE9wZXJhdG9yIG9wLCBU
SW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUpCiB7CiAgICAgVEludGVybUJpbmFyeSogbm9kZSA9IG5ldyBUSW50ZXJtQmluYXJ5KG9w
KTsKLSAgICBpZiAobGluZSA9PSAwKQotICAgICAgICBsaW5lID0gaW5kZXgtPmdldExpbmUoKTsK
ICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwogICAgIG5vZGUtPnNldExlZnQoYmFzZSk7CiAgICAg
bm9kZS0+c2V0UmlnaHQoaW5kZXgpOwpAQCAtMjc5LDEzICsyNzMsMTMgQEAgVEludGVybVR5cGVk
KiBUSW50ZXJtZWRpYXRlOjphZGRJbmRleChUTwogLy8KIC8vIFJldHVybnMgdGhlIGFkZGVkIG5v
ZGUuCiAvLwotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdGgoVE9wZXJh
dG9yIG9wLCBUSW50ZXJtTm9kZSogY2hpbGROb2RlLCBUU291cmNlTG9jIGxpbmUsIFRTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5
TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBjaGlsZE5vZGUsIGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCiB7CiAgICAgVEludGVybVVuYXJ5
KiBub2RlOwogICAgIFRJbnRlcm1UeXBlZCogY2hpbGQgPSBjaGlsZE5vZGUtPmdldEFzVHlwZWQo
KTsKIAogICAgIGlmIChjaGlsZCA9PSAwKSB7Ci0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJhZCB0eXBlIGluIEFkZFVuYXJ5TWF0aCIsIGxpbmUp
OworICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGxp
bmUsICJCYWQgdHlwZSBpbiBBZGRVbmFyeU1hdGgiKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCkBAIC0zNDgsOCArMzQyLDYgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRV
bmFyeU1hdAogICAgIC8vIE1ha2UgYSBuZXcgbm9kZSBmb3IgdGhlIG9wZXJhdG9yLgogICAgIC8v
CiAgICAgbm9kZSA9IG5ldyBUSW50ZXJtVW5hcnkob3ApOwotICAgIGlmIChsaW5lID09IDApCi0g
ICAgICAgIGxpbmUgPSBjaGlsZC0+Z2V0TGluZSgpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7
CiAgICAgbm9kZS0+c2V0T3BlcmFuZChjaGlsZCk7CiAKQEAgLTM3Niw3ICszNjgsNyBAQCBUSW50
ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0CiAvLyBSZXR1cm5zIGFuIGFnZ3Jl
Z2F0ZSBub2RlLCB3aGljaCBjb3VsZCBiZSB0aGUgb25lIHBhc3NlZCBpbiBpZgogLy8gaXQgd2Fz
IGFscmVhZHkgYW4gYWdncmVnYXRlIGJ1dCBubyBvcGVyYXRvciB3YXMgc2V0LgogLy8KLVRJbnRl
cm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKFRJbnRlcm1O
b2RlKiBub2RlLCBUT3BlcmF0b3Igb3AsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1BZ2dyZWdh
dGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKFRJbnRlcm1Ob2RlKiBub2Rl
LCBUT3BlcmF0b3Igb3AsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybUFn
Z3JlZ2F0ZSogYWdnTm9kZTsKIApAQCAtMzkxLDggKzM4Myw2IEBAIFRJbnRlcm1BZ2dyZWdhdGUq
IFRJbnRlcm1lZGlhdGU6OnNldEFnZ3IKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBhZ2dO
b2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoKTsKICAgICAgICAgICAgIGFnZ05vZGUtPmdldFNl
cXVlbmNlKCkucHVzaF9iYWNrKG5vZGUpOwotICAgICAgICAgICAgaWYgKGxpbmUgPT0gMCkKLSAg
ICAgICAgICAgICAgICBsaW5lID0gbm9kZS0+Z2V0TGluZSgpOwogICAgICAgICB9CiAgICAgfSBl
bHNlCiAgICAgICAgIGFnZ05vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZSgpOwpAQCAtNDAxLDgg
KzM5MSw3IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3IKICAgICAv
LyBTZXQgdGhlIG9wZXJhdG9yLgogICAgIC8vCiAgICAgYWdnTm9kZS0+c2V0T3Aob3ApOwotICAg
IGlmIChsaW5lICE9IDApCi0gICAgICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CisgICAgYWdn
Tm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAgIHJldHVybiBhZ2dOb2RlOwogfQpAQCAtNDkxLDcg
KzQ4MCw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQ29udmVyc2kKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6ICAgbmV3T3AgPSBFT3BDb252SW50VG9GbG9hdDsg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6ICBuZXdPcCA9IEVPcENv
bnZCb29sVG9GbG9hdDsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFs
RXJyb3IsICJCYWQgcHJvbW90aW9uIG5vZGUiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCBub2RlLT5nZXRMaW5lKCksICJCYWQgcHJvbW90aW9uIG5vZGUiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTUwMCw3ICs0ODksNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFk
ZENvbnZlcnNpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OiAgIG5ld09wID0gRU9w
Q29udkludFRvQm9vbDsgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9h
dDogbmV3T3AgPSBFT3BDb252RmxvYXRUb0Jvb2w7IGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlvbiBub2RlIiwgbm9kZS0+Z2V0TGlu
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFkIHByb21vdGlvbiBub2RlIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01MDksMTIgKzQ5OCwxMiBAQCBUSW50ZXJtVHlwZWQq
IFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0
Qm9vbDogICBuZXdPcCA9IEVPcENvbnZCb29sVG9JbnQ7ICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRGbG9hdDogIG5ld09wID0gRU9wQ29udkZsb2F0VG9JbnQ7IGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlvbiBu
b2RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFk
IHByb21vdGlvbiBub2RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gdHlwZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2Rl
LT5nZXRMaW5lKCksICJCYWQgcHJvbW90aW9uIHR5cGUiKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgfQogCkBAIC01MzQsNyArNTIzLDcgQEAgVEludGVybVR5cGVkKiBUSW50
ZXJtZWRpYXRlOjphZGRDb252ZXJzaQogLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIGFnZ3JlZ2F0
ZSwgdW5sZXNzIDAgd2FzIHBhc3NlZCBpbiBmb3IKIC8vIGJvdGggZXhpc3Rpbmcgbm9kZXMuCiAv
LwotVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jvd0FnZ3JlZ2F0ZShUSW50ZXJt
Tm9kZSogbGVmdCwgVEludGVybU5vZGUqIHJpZ2h0LCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJt
QWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpncm93QWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBsZWZ0
LCBUSW50ZXJtTm9kZSogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgaWYg
KGxlZnQgPT0gMCAmJiByaWdodCA9PSAwKQogICAgICAgICByZXR1cm4gMDsKQEAgLTU1MSw4ICs1
NDAsNyBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpncm93QWdnCiAgICAgaWYg
KHJpZ2h0KQogICAgICAgICBhZ2dOb2RlLT5nZXRTZXF1ZW5jZSgpLnB1c2hfYmFjayhyaWdodCk7
CiAKLSAgICBpZiAobGluZSAhPSAwKQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOwor
ICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1cm4gYWdnTm9kZTsKIH0KQEAg
LTU2MiwxOCArNTUwLDE0IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Omdyb3dB
Z2cKIC8vCiAvLyBSZXR1cm5zIGFuIGFnZ3JlZ2F0ZSwgdW5sZXNzIDAgd2FzIHBhc3NlZCBpbiBm
b3IgdGhlIGV4aXN0aW5nIG5vZGUuCiAvLwotVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0
ZTo6bWFrZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVElu
dGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6bWFrZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSog
bm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBpZiAobm9kZSA9PSAwKQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ05vZGUgPSBuZXcgVElu
dGVybUFnZ3JlZ2F0ZTsKICAgICBhZ2dOb2RlLT5nZXRTZXF1ZW5jZSgpLnB1c2hfYmFjayhub2Rl
KTsKLQotICAgIGlmIChsaW5lICE9IDApCi0gICAgICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7
Ci0gICAgZWxzZQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7Cisg
ICAgYWdnTm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAgIHJldHVybiBhZ2dOb2RlOwogfQpAQCAt
NTg1LDcgKzU2OSw3IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2cK
IC8vCiAvLyBSZXR1cm5zIHRoZSBzZWxlY3Rpb24gbm9kZSBjcmVhdGVkLgogLy8KLVRJbnRlcm1O
b2RlKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50
ZXJtTm9kZVBhaXIgbm9kZVBhaXIsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1Ob2RlKiBUSW50
ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBh
aXIgbm9kZVBhaXIsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgLy8KICAgICAvLyBG
b3IgY29tcGlsZSB0aW1lIGNvbnN0YW50IHNlbGVjdGlvbnMsIHBydW5lIHRoZSBjb2RlIGFuZApA
QCAtNTkzLDcgKzU3Nyw3IEBAIFRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rp
b24KICAgICAvLwogCiAgICAgaWYgKGNvbmQtPmdldEFzVHlwZWQoKSAmJiBjb25kLT5nZXRBc1R5
cGVkKCktPmdldEFzQ29uc3RhbnRVbmlvbigpKSB7Ci0gICAgICAgIGlmIChjb25kLT5nZXRBc1R5
cGVkKCktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRC
Q29uc3QoKSA9PSB0cnVlKQorICAgICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCkt
PmdldEJDb25zdCgwKSA9PSB0cnVlKQogICAgICAgICAgICAgcmV0dXJuIG5vZGVQYWlyLm5vZGUx
ID8gc2V0QWdncmVnYXRlT3BlcmF0b3Iobm9kZVBhaXIubm9kZTEsIEVPcFNlcXVlbmNlLCBub2Rl
UGFpci5ub2RlMS0+Z2V0TGluZSgpKSA6IE5VTEw7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHJldHVybiBub2RlUGFpci5ub2RlMiA/IHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKG5vZGVQYWlyLm5v
ZGUyLCBFT3BTZXF1ZW5jZSwgbm9kZVBhaXIubm9kZTItPmdldExpbmUoKSkgOiBOVUxMOwpAQCAt
NjA2LDcgKzU5MCw3IEBAIFRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24K
IH0KIAogCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbW1hKFRJbnRlcm1UeXBl
ZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5
cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb21tYShUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1U
eXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgaWYgKGxlZnQtPmdl
dFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCAmJiByaWdodC0+Z2V0VHlwZSgpLmdl
dFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CiAgICAgICAgIHJldHVybiByaWdodDsKQEAgLTYy
Niw3ICs2MTAsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbW1hKFRJCiAv
LwogLy8gUmV0dXJucyB0aGUgc2VsZWN0aW9uIG5vZGUgY3JlYXRlZCwgb3IgMCBpZiBvbmUgY291
bGQgbm90IGJlLgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9u
KFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBl
ZCogZmFsc2VCbG9jaywgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRp
YXRlOjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIHRydWVC
bG9jaywgVEludGVybVR5cGVkKiBmYWxzZUJsb2NrLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQog
ewogICAgIC8vCiAgICAgLy8gR2V0IGNvbXBhdGlibGUgdHlwZXMuCkBAIC02NDcsNyArNjMxLDcg
QEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3RpbwogICAgIC8vCiAKICAg
ICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCkgJiYgdHJ1ZUJsb2NrLT5nZXRBc0NvbnN0
YW50VW5pb24oKSAmJiBmYWxzZUJsb2NrLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgewotICAgICAg
ICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCkt
PmdldEJDb25zdCgpKQorICAgICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdl
dEJDb25zdCgwKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlQmxvY2s7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZUJsb2NrOwpAQCAtNjY5LDcgKzY1Myw3IEBAIFRJbnRl
cm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW8KIC8vIFJldHVybnMgdGhlIGNvbnN0
YW50IHVuaW9uIG5vZGUgY3JlYXRlZC4KIC8vCiAKLVRJbnRlcm1Db25zdGFudFVuaW9uKiBUSW50
ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXlQb2lu
dGVyLCBjb25zdCBUVHlwZSYgdCwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybUNvbnN0YW50VW5p
b24qIFRJbnRlcm1lZGlhdGU6OmFkZENvbnN0YW50VW5pb24oQ29uc3RhbnRVbmlvbiogdW5pb25B
cnJheVBvaW50ZXIsIGNvbnN0IFRUeXBlJiB0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewog
ICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9u
KHVuaW9uQXJyYXlQb2ludGVyLCB0KTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtNjc3
LDcgKzY2MSw3IEBAIFRJbnRlcm1Db25zdGFudFVuaW9uKiBUSW50ZXJtZWRpYXRlOjphZGQKICAg
ICByZXR1cm4gbm9kZTsKIH0KIAotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTd2l6
emxlKFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVk
KiBUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSkKIHsKIAogICAgIFRJbnRlcm1BZ2dyZWdhdGUqIG5vZGUgPSBuZXcg
VEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CkBAIC03MDAsNyArNjg0LDcgQEAgVEludGVy
bVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKAogLy8KIC8vIENyZWF0ZSBsb29wIG5v
ZGVzLgogLy8KLVRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRMb29wKFRMb29wVHlwZSB0
eXBlLCBUSW50ZXJtTm9kZSogaW5pdCwgVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQq
IGV4cHIsIFRJbnRlcm1Ob2RlKiBib2R5LCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtTm9kZSog
VEludGVybWVkaWF0ZTo6YWRkTG9vcChUTG9vcFR5cGUgdHlwZSwgVEludGVybU5vZGUqIGluaXQs
IFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiBleHByLCBUSW50ZXJtTm9kZSogYm9k
eSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJtTm9kZSogbm9kZSA9IG5l
dyBUSW50ZXJtTG9vcCh0eXBlLCBpbml0LCBjb25kLCBleHByLCBib2R5KTsKICAgICBub2RlLT5z
ZXRMaW5lKGxpbmUpOwpAQCAtNzExLDEyICs2OTUsMTIgQEAgVEludGVybU5vZGUqIFRJbnRlcm1l
ZGlhdGU6OmFkZExvb3AoVExvbwogLy8KIC8vIEFkZCBicmFuY2hlcy4KIC8vCi1USW50ZXJtQnJh
bmNoKiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBUU291cmNl
TG9jIGxpbmUpCitUSW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9wZXJh
dG9yIGJyYW5jaE9wLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIHJldHVybiBhZGRC
cmFuY2goYnJhbmNoT3AsIDAsIGxpbmUpOwogfQogCi1USW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRp
YXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBUSW50ZXJtVHlwZWQqIGV4cHJlc3Np
b24sIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1CcmFuY2gqIFRJbnRlcm1lZGlhdGU6OmFkZEJy
YW5jaChUT3BlcmF0b3IgYnJhbmNoT3AsIFRJbnRlcm1UeXBlZCogZXhwcmVzc2lvbiwgY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJtQnJhbmNoKiBub2RlID0gbmV3IFRJbnRl
cm1CcmFuY2goYnJhbmNoT3AsIGV4cHJlc3Npb24pOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7
CkBAIC04NDYsNiArODMwLDcgQEAgYm9vbCBUSW50ZXJtVW5hcnk6OnByb21vdGUoVEluZm9TaW5r
JikKICAgICB9CiAKICAgICBzZXRUeXBlKG9wZXJhbmQtPmdldFR5cGUoKSk7CisgICAgdHlwZS5z
ZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODYw
LDcgKzg0NSw3IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKIHsK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIG9ubHkgaGFuZGxlcyBzY2FsYXJzLCB2ZWN0b3JzLCBhbmQg
bWF0cmljZXMuCiAgICAgaWYgKGxlZnQtPmlzQXJyYXkoKSB8fCByaWdodC0+aXNBcnJheSgpKSB7
Ci0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIklu
dmFsaWQgb3BlcmF0aW9uIGZvciBhcnJheXMiLCBnZXRMaW5lKCkpOworICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkludmFsaWQg
b3BlcmF0aW9uIGZvciBhcnJheXMiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtOTY1LDcgKzk1MCw3IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1Npbmsm
IGkKICAgICAgICAgICAgICAgICAgICAgc2V0VHlwZShUVHlwZShiYXNpY1R5cGUsIGhpZ2hlclBy
ZWNpc2lvbiwgRXZxVGVtcG9yYXJ5LCBzaXplLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiTWlzc2luZyBlbHNlcyIsIGdldExpbmUoKSk7Cisg
ICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCBnZXRMaW5lKCksICJNaXNzaW5nIGVsc2VzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC05OTQsNyArOTc5LDcg
QEAgYm9vbCBUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKFRJbmZvU2luayYgaQogICAgICAgICAgICAg
ICAgICAgICBzZXRUeXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVyUHJlY2lzaW9uLCBFdnFUZW1w
b3JhcnksIHNpemUsIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsICJNaXNzaW5nIGVsc2VzIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIk1p
c3NpbmcgZWxzZXMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwMzQsMjMgKzEwMTksMjIgQEAgYm9vbCBUSW50
ZXJtQmluYXJ5Ojpwcm9tb3RlKFRJbmZvU2luayYgaQogCiBib29sIENvbXBhcmVTdHJ1Y3QoY29u
c3QgVFR5cGUmIGxlZnROb2RlVHlwZSwgQ29uc3RhbnRVbmlvbiogcmlnaHRVbmlvbkFycmF5LCBD
b25zdGFudFVuaW9uKiBsZWZ0VW5pb25BcnJheSkKIHsKLSAgICBjb25zdCBUVHlwZUxpc3QqIGZp
ZWxkcyA9IGxlZnROb2RlVHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICBjb25zdCBURmllbGRMaXN0JiBm
aWVsZHMgPSBsZWZ0Tm9kZVR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCi0gICAgc2l6ZV90
IHN0cnVjdFNpemUgPSBmaWVsZHMtPnNpemUoKTsKLSAgICBpbnQgaW5kZXggPSAwOworICAgIHNp
emVfdCBzdHJ1Y3RTaXplID0gZmllbGRzLnNpemUoKTsKKyAgICBzaXplX3QgaW5kZXggPSAwOwog
CiAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBzdHJ1Y3RTaXplOyBqKyspIHsKLSAgICAgICAg
aW50IHNpemUgPSAoKmZpZWxkcylbal0udHlwZS0+Z2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgaWYgKCgqZmllbGRz
KVtqXS50eXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIUNvbXBhcmVTdHJ1Y3R1cmUoKigqZmllbGRzKVtqXS50eXBlLCAmcmlnaHRVbmlvbkFy
cmF5W2luZGV4XSwgJmxlZnRVbmlvbkFycmF5W2luZGV4XSkpCisgICAgICAgIHNpemVfdCBzaXpl
ID0gZmllbGRzW2pdLT50eXBlKCktPmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChmaWVsZHNbal0tPnR5
cGUoKS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7CisgICAgICAgICAgICAgICAgaWYg
KCFDb21wYXJlU3RydWN0dXJlKCooZmllbGRzW2pdLT50eXBlKCkpLCAmcmlnaHRVbmlvbkFycmF5
W2luZGV4XSwgJmxlZnRVbmlvbkFycmF5W2luZGV4XSkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGxl
ZnRVbmlvbkFycmF5W2luZGV4XSAhPSByaWdodFVuaW9uQXJyYXlbaW5kZXhdKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgaW5kZXgrKzsKICAgICAg
ICAgICAgIH0KLQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMTA2Miwx
MCArMTA0NiwxMCBAQCBib29sIENvbXBhcmVTdHJ1Y3R1cmUoY29uc3QgVFR5cGUmIGxlZnROCiAg
ICAgICAgIFRUeXBlIHR5cGVXaXRob3V0QXJyYXluZXNzID0gbGVmdE5vZGVUeXBlOwogICAgICAg
ICB0eXBlV2l0aG91dEFycmF5bmVzcy5jbGVhckFycmF5bmVzcygpOwogCi0gICAgICAgIGludCBh
cnJheVNpemUgPSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlTaXplKCk7CisgICAgICAgIHNpemVfdCBh
cnJheVNpemUgPSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlTaXplKCk7CiAKLSAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkgewotICAgICAgICAgICAgaW50IG9mZnNldCA9
IHR5cGVXaXRob3V0QXJyYXluZXNzLmdldE9iamVjdFNpemUoKSAqIGk7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpIHsKKyAgICAgICAgICAgIHNpemVfdCBv
ZmZzZXQgPSB0eXBlV2l0aG91dEFycmF5bmVzcy5nZXRPYmplY3RTaXplKCkgKiBpOwogICAgICAg
ICAgICAgaWYgKCFDb21wYXJlU3RydWN0KHR5cGVXaXRob3V0QXJyYXluZXNzLCAmcmlnaHRVbmlv
bkFycmF5W29mZnNldF0sICZsZWZ0VW5pb25BcnJheVtvZmZzZXRdKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEwODUsNyArMTA2OSw3IEBAIGJvb2wgQ29t
cGFyZVN0cnVjdHVyZShjb25zdCBUVHlwZSYgbGVmdE4KIFRJbnRlcm1UeXBlZCogVEludGVybUNv
bnN0YW50VW5pb246OmZvbGQoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGNvbnN0YW50Tm9k
ZSwgVEluZm9TaW5rJiBpbmZvU2luaykKIHsKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
ID0gZ2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICBpbnQgb2JqZWN0U2l6ZSA9IGdldFR5cGUo
KS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90IG9iamVjdFNpemUgPSBnZXRUeXBlKCkuZ2V0
T2JqZWN0U2l6ZSgpOwogCiAgICAgaWYgKGNvbnN0YW50Tm9kZSkgeyAgLy8gYmluYXJ5IG9wZXJh
dGlvbnMKICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUgPSBjb25zdGFudE5vZGUt
PmdldEFzQ29uc3RhbnRVbmlvbigpOwpAQCAtMTA5NSwxMyArMTA3OSwxMyBAQCBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgIC8vIGZvciBhIGNhc2UgbGlr
ZSBmbG9hdCBmID0gMS4yICsgdmVjNCgyLDMsNCw1KTsKICAgICAgICAgaWYgKGNvbnN0YW50Tm9k
ZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSA9PSAxICYmIG9iamVjdFNpemUgPiAxKSB7CiAg
ICAgICAgICAgICByaWdodFVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXpl
XTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgKytpKQorICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyArK2kpCiAgICAgICAg
ICAgICAgICAgcmlnaHRVbmlvbkFycmF5W2ldID0gKm5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVy
KCk7CiAgICAgICAgICAgICByZXR1cm5UeXBlID0gZ2V0VHlwZSgpOwogICAgICAgICB9IGVsc2Ug
aWYgKGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSA+IDEgJiYgb2JqZWN0
U2l6ZSA9PSAxKSB7CiAgICAgICAgICAgICAvLyBmb3IgYSBjYXNlIGxpa2UgZmxvYXQgZiA9IHZl
YzQoMiwzLDQsNSkgKyAxLjI7CiAgICAgICAgICAgICB1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpXTsKLSAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0
U2l6ZSgpOyArK2kpCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnN0YW50
Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgIHVu
aW9uQXJyYXlbaV0gPSAqZ2V0VW5pb25BcnJheVBvaW50ZXIoKTsKICAgICAgICAgICAgIHJldHVy
blR5cGUgPSBub2RlLT5nZXRUeXBlKCk7CiAgICAgICAgICAgICBvYmplY3RTaXplID0gY29uc3Rh
bnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwpAQCAtMTExNSwxNCArMTA5OSwxNCBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBj
YXNlIEVPcEFkZDoKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFu
dFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYu
MAotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkr
KykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXpl
OyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9u
QXJyYXlbaV0gKyByaWdodFVuaW9uQXJyYXlbaV07CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFT3BTdWI6CiAgICAgICAgICAgICAg
ICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAg
ICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAg
ICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldIC0gcmlnaHRVbmlvbkFycmF5
W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMzIs
MTMgKzExMTYsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAog
ICAgICAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKICAgICAgICAgICAgICAgICB0
ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAg
ICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gKiByaWdodFVuaW9uQXJyYXlbaV07
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeDoKICAgICAgICAgICAgICAgICBpZiAoZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0IHx8IG5vZGUtPmdldEJhc2ljVHlwZSgpICE9IEVi
dEZsb2F0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1h
dHJpeCBtdWx0aXBseSIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiQ29uc3RhbnQg
Rm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgbWF0cml4IG11bHRpcGx5Iik7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB7
Ly8gc3VwcG9ydCBNU1ZDKys2LjAKQEAgLTExNTcsMTEgKzExNDEsMTEgQEAgVEludGVybVR5cGVk
KiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BEaXY6CiAg
ICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RT
aXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7
CiAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgogICAgICAgICAgICAgICAgIGlmIChyaWdodFVu
aW9uQXJyYXlbaV0gPT0gMC4wZikgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcgY29u
c3RhbnQgZm9sZGluZyIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ubWVzc2FnZShFUHJlZml4V2FybmluZywgZ2V0TGluZSgpLCAiRGl2aWRlIGJ5IHplcm8g
ZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciKTsKICAgICAgICAgICAgICAgICAgICAgdGVt
cENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KHVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgPCAwID8g
LUZMVF9NQVggOiBGTFRfTUFYKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KHVuaW9uQXJyYXlbaV0uZ2V0RkNv
bnN0KCkgLyByaWdodFVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkpOwpAQCAtMTE2OSwxMyArMTE1
MywxMyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAKICAgICAg
ICAgICAgIGNhc2UgRWJ0SW50OgogICAgICAgICAgICAgICAgIGlmIChyaWdodFVuaW9uQXJyYXlb
aV0gPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVBy
ZWZpeFdhcm5pbmcsICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9sZGlu
ZyIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4V2FybmluZywgZ2V0TGluZSgpLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5n
IGNvbnN0YW50IGZvbGRpbmciKTsKICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlb
aV0uc2V0SUNvbnN0KElOVF9NQVgpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3QodW5pb25BcnJheVtpXS5nZXRJ
Q29uc3QoKSAvIHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50IGZvbGRpbmcgY2Fu
bm90IGJlIGRvbmUgZm9yIFwiL1wiIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBpbmZv
U2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0
YW50IGZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIFwiL1wiIik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IH0KQEAgLTExODQsNyArMTE2OCw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5p
b246OmZvbGQKIAogICAgICAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoKICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0RmxvYXQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCAiQ29uc3RhbnQgRm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgbWF0cml4IHRpbWVzIHZlY3Rv
ciIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiQ29uc3RhbnQgRm9sZGluZyBjYW5u
b3QgYmUgZG9uZSBmb3IgbWF0cml4IHRpbWVzIHZlY3RvciIpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltnZXROb21pbmFsU2l6ZSgpXTsKQEAgLTEyMDUsNyAr
MTE4OSw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKIAogICAg
ICAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeDoKICAgICAgICAgICAgICAgICBpZiAo
Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50
IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIHZlY3RvciB0aW1lcyBtYXRyaXgiLCBnZXRMaW5l
KCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeElu
dGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUg
Zm9yIHZlY3RvciB0aW1lcyBtYXRyaXgiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xMjIzLDcgKzEyMDcsNyBAQCBUSW50ZXJtVHlwZWQq
IFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxB
bmQ6IC8vIHRoaXMgY29kZSBpcyB3cml0dGVuIGZvciBwb3NzaWJsZSBmdXR1cmUgdXNlLCB3aWxs
IG5vdCBnZXQgZXhlY3V0ZWQgY3VycmVudGx5CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJy
YXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8g
c3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0
QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldICYmIHJpZ2h0VW5pb25BcnJheVtpXTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjMxLDcgKzEyMTUsNyBAQCBU
SW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBjYXNl
IEVPcExvZ2ljYWxPcjogLy8gdGhpcyBjb2RlIGlzIHdyaXR0ZW4gZm9yIHBvc3NpYmxlIGZ1dHVy
ZSB1c2UsIHdpbGwgbm90IGdldCBleGVjdXRlZCBjdXJyZW50bHkKICAgICAgICAgICAgICAgICB0
ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAg
ICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gfHwgcmlnaHRVbmlvbkFycmF5W2ld
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyMzksNyAr
MTIyMyw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAg
ICAgICAgIGNhc2UgRU9wTG9naWNhbFhvcjoKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsvLyBz
dXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdl
dFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBFYnRCb29sOiB0ZW1w
Q29uc3RBcnJheVtpXS5zZXRCQ29uc3QoKHVuaW9uQXJyYXlbaV0gPT0gcmlnaHRVbmlvbkFycmF5
W2ldKSA/IGZhbHNlIDogdHJ1ZSk7IGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDogYXNzZXJ0
KGZhbHNlICYmICJEZWZhdWx0IG1pc3NpbmciKTsKQEAgLTEyODUsNyArMTI2OSw3IEBAIFRJbnRl
cm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFDb21wYXJlU3RydWN0dXJlKG5vZGUtPmdldFR5cGUoKSwgbm9kZS0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKSwgdW5pb25BcnJheSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sTm9k
ZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodW5pb25BcnJheVtpXSAhPSByaWdodFVuaW9uQXJyYXlbaV0p
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgLy8gYnJlYWsgb3V0IG9mIGZvciBsb29w
CkBAIC0xMzExLDcgKzEyOTUsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9u
Ojpmb2xkCiAgICAgICAgICAgICAgICAgICAgIGlmIChDb21wYXJlU3RydWN0dXJlKG5vZGUtPmdl
dFR5cGUoKSwgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSwgdW5pb25BcnJheSkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0
U2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pb25BcnJh
eVtpXSA9PSByaWdodFVuaW9uQXJyYXlbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OyAgLy8gYnJlYWsgb3V0IG9mIGZvciBsb29wCkBAIC0xMzMzLDcgKzEzMTcsNyBAQCBUSW50ZXJt
VHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRlbXBOb2RlOwogCiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkludmFsaWQgb3BlcmF0b3Ig
Zm9yIGNvbnN0YW50IGZvbGRpbmciLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiSW52YWxp
ZCBvcGVyYXRvciBmb3IgY29uc3RhbnQgZm9sZGluZyIpOwogICAgICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICB9CiAgICAgICAgIHRlbXBOb2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVu
aW9uKHRlbXBDb25zdEFycmF5LCByZXR1cm5UeXBlKTsKQEAgLTEzNDYsMTQgKzEzMzAsMTQgQEAg
VEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAvLwogICAg
ICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbmV3Tm9kZSA9IDA7CiAgICAgICAgIENvbnN0YW50
VW5pb24qIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0g
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBzd2l0
Y2gob3ApIHsKICAgICAgICAgICAgICAgICBjYXNlIEVPcE5lZ2F0aXZlOgogICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDogdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KC11
bmlvbkFycmF5W2ldLmdldEZDb25zdCgpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEVidEludDogICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3QoLXVuaW9uQXJyYXlb
aV0uZ2V0SUNvbnN0KCkpOyBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhJbnRlcm5hbEVycm9yLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFu
dCIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRp
b24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC0xMzYxLDcgKzEzNDUsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFu
dFVuaW9uOjpmb2xkCiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJh
c2ljVHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6ICB0ZW1w
Q29uc3RBcnJheVtpXS5zZXRCQ29uc3QoIXVuaW9uQXJyYXlbaV0uZ2V0QkNvbnN0KCkpOyBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5h
cnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIsIGdldExpbmUoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRl
cm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNv
bnN0YW50Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzc3LDY1ICsx
MzYxLDY0IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKIAogVElu
dGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjpwcm9tb3RlQ29uc3RhbnRVbmlvbihUQmFzaWNUeXBl
IHByb21vdGVUbywgVEludGVybUNvbnN0YW50VW5pb24qIG5vZGUpCiB7Ci0gICAgQ29uc3RhbnRV
bmlvbiAqcmlnaHRVbmlvbkFycmF5ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAg
ICBpbnQgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90
IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogCiAgICAgQ29uc3RhbnRV
bmlvbiAqbGVmdFVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltzaXplXTsKIAotICAgIGZv
ciAoaW50IGk9MDsgaSA8IHNpemU7IGkrKykgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgaSsrKSB7CiAKICAgICAgICAgc3dpdGNoIChwcm9tb3RlVG8pIHsKICAgICAgICAgICAg
IGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRUeXBlKCku
Z2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0
Pihub2RlLT5nZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50PihpKSkpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRCQ29uc3QoKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0
Pihub2RlLT5nZXRCQ29uc3Qoc3RhdGljX2Nhc3Q8Ym9vbD4oaSkpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldID0gcmlnaHRVbmlvbkFycmF5
W2ldOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0
KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkp
KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEludGVybmFsRXJyb3IsICJDYW5ub3QgcHJvbW90ZSIsIG5vZGUtPmdldExpbmUoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeElu
dGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkNhbm5vdCBwcm9tb3RlIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEVidEludDoKICAgICAgICAgICAgICAgICBz
d2l0Y2ggKG5vZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5
W2ldID0gcmlnaHRVbmlvbkFycmF5W2ldOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVu
aW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0SUNvbnN0KHN0
YXRpY19jYXN0PGludD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAgICAgICAgICAgICAg
bGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4ocmlnaHRVbmlvbkFy
cmF5W2ldLmdldEJDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25B
cnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5nZXRCQ29uc3Qoc3RhdGlj
X2Nhc3Q8Ym9vbD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxl
ZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KHJpZ2h0VW5pb25BcnJh
eVtpXS5nZXRGQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJy
YXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19j
YXN0PGZsb2F0PihpKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQ2Fubm90IHByb21vdGUiLCBub2Rl
LT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJDYW5ub3QgcHJvbW90
ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRCb29sOgogICAg
ICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAgICAgICAg
bGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3Qo
KSAhPSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJD
b25zdChub2RlLT5nZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50PihpKSkgIT0gMCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29s
OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0gPSByaWdodFVuaW9u
QXJyYXlbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRC
Q29uc3Qobm9kZS0+Z2V0QkNvbnN0KHN0YXRpY19jYXN0PGJvb2w+KGkpKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChyaWdo
dFVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgIT0gMC4wZik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19j
YXN0PGZsb2F0PihpKSkgIT0gMC4wZik7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNhbm5vdCBwcm9tb3Rl
Iiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQ2Fubm90
IHByb21vdGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsICJJbmNvcnJlY3QgZGF0YSB0eXBlIGZvdW5kIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5v
ZGUtPmdldExpbmUoKSwgIkluY29ycmVjdCBkYXRhIHR5cGUgZm91bmQiKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwCShyZXZpc2lvbiAxNTI1OTUp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5LDMgKzE5LDE3IEBAIGJvb2wgVE91dHB1dEdMU0w6OndyaXRl
VmFyaWFibGVQcmVjaXNpb24KIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CisKK3ZvaWQgVE91dHB1
dEdMU0w6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqIG5vZGUpCit7CisgICAgVEluZm9TaW5r
QmFzZSYgb3V0ID0gb2JqU2luaygpOworCisgICAgaWYgKG5vZGUtPmdldFN5bWJvbCgpID09ICJn
bF9GcmFnRGVwdGhFWFQiKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICJnbF9GcmFnRGVwdGgiOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0U3lt
Ym9sKG5vZGUpOworICAgIH0KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9PdXRwdXRHTFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuaAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuaAkod29ya2luZyBjb3B5
KQpAQCAtMjAsNiArMjAsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJv
b2wgd3JpdGVWYXJpYWJsZVByZWNpc2lvbihUUHJlY2lzaW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCogbm9kZSk7CiB9OwogCiAjZW5kaWYgIC8vIENST1NT
Q09NUElMRVJHTFNMX09VVFBVVEdMU0xfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcAkocmV2aXNpb24g
MTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdM
U0xCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMjUgKzc5LDkgQEAgdm9pZCBUT3V0cHV0
R0xTTEJhc2U6OndyaXRlVmFyaWFibGVUeXBlKAogICAgIGlmICgocXVhbGlmaWVyICE9IEV2cVRl
bXBvcmFyeSkgJiYgKHF1YWxpZmllciAhPSBFdnFHbG9iYWwpKQogICAgICAgICBvdXQgPDwgdHlw
ZS5nZXRRdWFsaWZpZXJTdHJpbmcoKSA8PCAiICI7CiAgICAgLy8gRGVjbGFyZSB0aGUgc3RydWN0
IGlmIHdlIGhhdmUgbm90IGRvbmUgc28gYWxyZWFkeS4KLSAgICBpZiAoKHR5cGUuZ2V0QmFzaWNU
eXBlKCkgPT0gRWJ0U3RydWN0KSAmJgotICAgICAgICAobURlY2xhcmVkU3RydWN0cy5maW5kKHR5
cGUuZ2V0VHlwZU5hbWUoKSkgPT0gbURlY2xhcmVkU3RydWN0cy5lbmQoKSkpCisgICAgaWYgKCh0
eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgJiYgIXN0cnVjdERlY2xhcmVkKHR5cGUu
Z2V0U3RydWN0KCkpKQogICAgIHsKLSAgICAgICAgb3V0IDw8ICJzdHJ1Y3QgIiA8PCBoYXNoTmFt
ZSh0eXBlLmdldFR5cGVOYW1lKCkpIDw8ICJ7XG4iOwotICAgICAgICBjb25zdCBUVHlwZUxpc3Qq
IHN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUg
IT0gTlVMTCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RydWN0dXJlLT5zaXpl
KCk7ICsraSkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9
ICgqc3RydWN0dXJlKVtpXS50eXBlOwotICAgICAgICAgICAgQVNTRVJUKGZpZWxkVHlwZSAhPSBO
VUxMKTsKLSAgICAgICAgICAgIGlmICh3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKGZpZWxkVHlwZS0+
Z2V0UHJlY2lzaW9uKCkpKQotICAgICAgICAgICAgICAgIG91dCA8PCAiICI7Ci0gICAgICAgICAg
ICBvdXQgPDwgZ2V0VHlwZU5hbWUoKmZpZWxkVHlwZSkgPDwgIiAiIDw8IGhhc2hOYW1lKGZpZWxk
VHlwZS0+Z2V0RmllbGROYW1lKCkpOwotICAgICAgICAgICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJh
eSgpKQotICAgICAgICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZFR5cGUpOwot
ICAgICAgICAgICAgb3V0IDw8ICI7XG4iOwotICAgICAgICB9Ci0gICAgICAgIG91dCA8PCAifSI7
Ci0gICAgICAgIG1EZWNsYXJlZFN0cnVjdHMuaW5zZXJ0KHR5cGUuZ2V0VHlwZU5hbWUoKSk7Cisg
ICAgICAgIGRlY2xhcmVTdHJ1Y3QodHlwZS5nZXRTdHJ1Y3QoKSk7CiAgICAgfQogICAgIGVsc2UK
ICAgICB7CkBAIC0xMzgsMjQgKzEyMiwyNSBAQCBjb25zdCBDb25zdGFudFVuaW9uKiBUT3V0cHV0
R0xTTEJhc2U6OndyCiAKICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3Qp
CiAgICAgewotICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKSA8PCAi
KCI7Ci0gICAgICAgIGNvbnN0IFRUeXBlTGlzdCogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3Qo
KTsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSBOVUxMKTsKLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgKytpKQorICAgICAgICBjb25zdCBUU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOworICAgICAgICBvdXQgPDwgaGFz
aE5hbWUoc3RydWN0dXJlLT5uYW1lKCkpIDw8ICIoIjsKKworICAgICAgICBjb25zdCBURmllbGRM
aXN0JiBmaWVsZHMgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkKICAgICAgICAgewotICAgICAgICAgICAgY29u
c3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOworICAgICAgICAgICAg
Y29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9IGZpZWxkc1tpXS0+dHlwZSgpOwogICAgICAgICAgICAg
QVNTRVJUKGZpZWxkVHlwZSAhPSBOVUxMKTsKICAgICAgICAgICAgIHBDb25zdFVuaW9uID0gd3Jp
dGVDb25zdGFudFVuaW9uKCpmaWVsZFR5cGUsIHBDb25zdFVuaW9uKTsKLSAgICAgICAgICAgIGlm
IChpICE9IHN0cnVjdHVyZS0+c2l6ZSgpIC0gMSkgb3V0IDw8ICIsICI7CisgICAgICAgICAgICBp
ZiAoaSAhPSBmaWVsZHMuc2l6ZSgpIC0gMSkgb3V0IDw8ICIsICI7CiAgICAgICAgIH0KICAgICAg
ICAgb3V0IDw8ICIpIjsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW50IHNpemUg
PSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9i
amVjdFNpemUoKTsKICAgICAgICAgYm9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAgICAg
aWYgKHdyaXRlVHlwZSkgb3V0IDw8IGdldFR5cGVOYW1lKHR5cGUpIDw8ICIoIjsKLSAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2ksICsrcENvbnN0VW5pb24pCisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpLCArK3BDb25zdFVuaW9uKQogICAgICAgICB7
CiAgICAgICAgICAgICBzd2l0Y2ggKHBDb25zdFVuaW9uLT5nZXRUeXBlKCkpCiAgICAgICAgICAg
ICB7CkBAIC0yNjAsMTIgKzI0NSwxOCBAQCBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCaW5h
cnkoVmlzaXQgCiAgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6CiAgICAgICAgICAg
ICBpZiAodmlzaXQgPT0gSW5WaXNpdCkKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAv
LyBIZXJlIHdlIGFyZSB3cml0aW5nIG91dCAiZm9vLmJhciIsIHdoZXJlICJmb28iIGlzIHN0cnVj
dAorICAgICAgICAgICAgICAgIC8vIGFuZCAiYmFyIiBpcyBmaWVsZC4gSW4gQVNULCBpdCBpcyBy
ZXByZXNlbnRlZCBhcyBhIGJpbmFyeQorICAgICAgICAgICAgICAgIC8vIG5vZGUsIHdoZXJlIGxl
ZnQgY2hpbGQgcmVwcmVzZW50cyAiZm9vIiBhbmQgcmlnaHQgY2hpbGQgImJhciIuCisgICAgICAg
ICAgICAgICAgLy8gVGhlIG5vZGUgaXRzZWxmIHJlcHJlc2VudHMgIi4iLiBUaGUgc3RydWN0IGZp
ZWxkICJiYXIiIGlzCisgICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgc3RvcmVkIGFzIGFuIGlu
ZGV4IGludG8gVFN0cnVjdHVyZTo6ZmllbGRzLgogICAgICAgICAgICAgICAgIG91dCA8PCAiLiI7
Ci0gICAgICAgICAgICAgICAgLy8gVE9ETyhhbG9rcCk6IEFTU0VSVAotICAgICAgICAgICAgICAg
IFRTdHJpbmcgZmllbGROYW1lID0gbm9kZS0+Z2V0VHlwZSgpLmdldEZpZWxkTmFtZSgpOworICAg
ICAgICAgICAgICAgIGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPmdldExlZnQo
KS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOworICAgICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1D
b25zdGFudFVuaW9uKiBpbmRleCA9IG5vZGUtPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlv
bigpOworICAgICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQgPSBzdHJ1Y3R1cmUtPmZp
ZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOwogCi0gICAgICAgICAgICAgICAgY29uc3QgVFR5
cGUmIHN0cnVjdFR5cGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKTsKLSAgICAgICAgICAg
ICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3RUeXBlLmdldFR5cGVOYW1l
KCkpKQorICAgICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gZmllbGQtPm5hbWUoKTsK
KyAgICAgICAgICAgICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3R1cmUt
Pm5hbWUoKSkpCiAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZSA9IGhhc2hOYW1lKGZpZWxk
TmFtZSk7CiAKICAgICAgICAgICAgICAgICBvdXQgPDwgZmllbGROYW1lOwpAQCAtNTk2LDcgKzU4
Nyw3IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSYgdHlwZSA9IG5vZGUtPmdldFR5cGUo
KTsKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1
Y3QpOwotICAgICAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0eXBlLmdldFR5cGVOYW1lKCkp
IDw8ICIoIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRTdHJ1Y3Qo
KS0+bmFtZSgpKSA8PCAiKCI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICh2
aXNpdCA9PSBJblZpc2l0KQogICAgICAgICAgICAgewpAQCAtNzY1LDcgKzc1Niw3IEBAIFRTdHJp
bmcgVE91dHB1dEdMU0xCYXNlOjpnZXRUeXBlTmFtZShjb24KICAgICBlbHNlCiAgICAgewogICAg
ICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCi0gICAgICAgICAgICBv
dXQgPDwgaGFzaE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKTsKKyAgICAgICAgICAgIG91dCA8PCBo
YXNoTmFtZSh0eXBlLmdldFN0cnVjdCgpLT5uYW1lKCkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBvdXQgPDwgdHlwZS5nZXRCYXNpY1N0cmluZygpOwogICAgIH0KQEAgLTc5OCwzICs3ODks
MjkgQEAgVFN0cmluZyBUT3V0cHV0R0xTTEJhc2U6Omhhc2hGdW5jdGlvbk5hbQogICAgICAgICBy
ZXR1cm4gbmFtZTsKICAgICByZXR1cm4gaGFzaE5hbWUobmFtZSk7CiB9CisKK2Jvb2wgVE91dHB1
dEdMU0xCYXNlOjpzdHJ1Y3REZWNsYXJlZChjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1EZWNsYXJlZFN0cnVjdHMuZmluZChzdHJ1Y3R1cmUtPm5hbWUo
KSkgIT0gbURlY2xhcmVkU3RydWN0cy5lbmQoKTsKK30KKwordm9pZCBUT3V0cHV0R0xTTEJhc2U6
OmRlY2xhcmVTdHJ1Y3QoY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFRJbmZv
U2lua0Jhc2UmIG91dCA9IG9ialNpbmsoKTsKKworICAgIG91dCA8PCAic3RydWN0ICIgPDwgaGFz
aE5hbWUoc3RydWN0dXJlLT5uYW1lKCkpIDw8ICJ7XG4iOworICAgIGNvbnN0IFRGaWVsZExpc3Qm
IGZpZWxkcyA9IHN0cnVjdHVyZS0+ZmllbGRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWVsZHMuc2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBjb25zdCBURmllbGQqIGZpZWxk
ID0gZmllbGRzW2ldOworICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVsZC0+
dHlwZSgpLT5nZXRQcmVjaXNpb24oKSkpCisgICAgICAgICAgICBvdXQgPDwgIiAiOworICAgICAg
ICBvdXQgPDwgZ2V0VHlwZU5hbWUoKmZpZWxkLT50eXBlKCkpIDw8ICIgIiA8PCBoYXNoTmFtZShm
aWVsZC0+bmFtZSgpKTsKKyAgICAgICAgaWYgKGZpZWxkLT50eXBlKCktPmlzQXJyYXkoKSkKKyAg
ICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZC0+dHlwZSgpKTsKKyAgICAgICAg
b3V0IDw8ICI7XG4iOworICAgIH0KKyAgICBvdXQgPDwgIn0iOworCisgICAgbURlY2xhcmVkU3Ry
dWN0cy5pbnNlcnQoc3RydWN0dXJlLT5uYW1lKCkpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgJKHJldmlz
aW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRw
dXRHTFNMQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw5IEBAIHByb3RlY3RlZDoK
ICAgICBUU3RyaW5nIGhhc2hGdW5jdGlvbk5hbWUoY29uc3QgVFN0cmluZyYgbWFuZ2xlZF9uYW1l
KTsKIAogcHJpdmF0ZToKKyAgICBib29sIHN0cnVjdERlY2xhcmVkKGNvbnN0IFRTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgY29uc3Q7CisgICAgdm9pZCBkZWNsYXJlU3RydWN0KGNvbnN0IFRTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSk7CisKICAgICBUSW5mb1NpbmtCYXNlJiBtT2JqU2luazsKICAgICBib29s
IG1EZWNsYXJpbmdWYXJpYWJsZXM7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9PdXRwdXRITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAJKHJldmlzaW9uIDE1MjU5NSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBPdXRwdXRITFNMOjpPdXRwdXRITFNMKFRQYXJz
ZUNvbnRleHQgJmNvCiAgICAgbVVzZXNQb2ludENvb3JkID0gZmFsc2U7CiAgICAgbVVzZXNGcm9u
dEZhY2luZyA9IGZhbHNlOwogICAgIG1Vc2VzUG9pbnRTaXplID0gZmFsc2U7CisgICAgbVVzZXNG
cmFnRGVwdGggPSBmYWxzZTsKICAgICBtVXNlc1hvciA9IGZhbHNlOwogICAgIG1Vc2VzTW9kMSA9
IGZhbHNlOwogICAgIG1Vc2VzTW9kMnYgPSBmYWxzZTsKQEAgLTE4OSw2ICsxOTAsMTEgQEAgdm9p
ZCBPdXRwdXRITFNMOjpoZWFkZXIoKQogICAgICAgICBvdXQgPDwgIlxuIgogICAgICAgICAgICAg
ICAgInN0YXRpYyBmbG9hdDQgZ2xfQ29sb3JbMV0gPSB7ZmxvYXQ0KDAsIDAsIDAsIDApfTtcbiI7
CiAKKyAgICAgICAgaWYgKG1Vc2VzRnJhZ0RlcHRoKQorICAgICAgICB7CisgICAgICAgICAgICBv
dXQgPDwgInN0YXRpYyBmbG9hdCBnbF9EZXB0aCA9IDAuMDtcbiI7CisgICAgICAgIH0KKwogICAg
ICAgICBpZiAobVVzZXNGcmFnQ29vcmQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG91dCA8PCAi
c3RhdGljIGZsb2F0NCBnbF9GcmFnQ29vcmQgPSBmbG9hdDQoMCwgMCwgMCwgMCk7XG4iOwpAQCAt
NTA5LDYgKzUxNSwxMSBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcigpCiAgICAgICAgIG91dCA8
PCAiI2RlZmluZSBHTF9VU0VTX1BPSU5UX1NJWkVcbiI7CiAgICAgfQogCisgICAgaWYgKG1Vc2Vz
RnJhZ0RlcHRoKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNfRlJBR19E
RVBUSFxuIjsKKyAgICB9CisKICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQogICAgIHsKICAgICAg
ICAgb3V0IDw8ICJzdHJ1Y3QgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnNcbiIKQEAgLTg0Myw2ICs4
NTQsMTEgQEAgdm9pZCBPdXRwdXRITFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYgogICAgICAg
ICBtVXNlc1BvaW50U2l6ZSA9IHRydWU7CiAgICAgICAgIG91dCA8PCBuYW1lOwogICAgIH0KKyAg
ICBlbHNlIGlmIChuYW1lID09ICJnbF9GcmFnRGVwdGhFWFQiKQorICAgIHsKKyAgICAgICAgbVVz
ZXNGcmFnRGVwdGggPSB0cnVlOworICAgICAgICBvdXQgPDwgImdsX0RlcHRoIjsKKyAgICB9CiAg
ICAgZWxzZQogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBub2RlLT5nZXRR
dWFsaWZpZXIoKTsKQEAgLTk1Miw3ICs5NjgsMTAgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJp
bmFyeShWaXNpdCB2aXNpdAogICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKICAgICAg
ICAgaWYgKHZpc2l0ID09IEluVmlzaXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAi
LiIgKyBkZWNvcmF0ZUZpZWxkKG5vZGUtPmdldFR5cGUoKS5nZXRGaWVsZE5hbWUoKSwgbm9kZS0+
Z2V0TGVmdCgpLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7CisgICAgICAg
ICAgICBjb25zdCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogaW5kZXggPSBub2RlLT5nZXRSaWdodCgp
LT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQg
PSBzdHJ1Y3R1cmUtPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOworICAgICAgICAgICAg
b3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGQtPm5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgp
LT5nZXRUeXBlKCkpOwogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAg
LTk3NCw3ICs5OTMsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0
CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBpID0gZWxlbWVudC0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
ID0gZWxlbWVudC0+Z2V0SUNvbnN0KDApOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGkpCiAgICAgICAgICAgICAgICAgICAgICAgICB7CkBAIC0xMDIxLDE4ICsxMDQwLDE4IEBA
IGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQKICAgICAgICAgICAgICAg
ICBvdXQgPDwgIiEoIjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29uc3QgVFR5cGVM
aXN0ICpmaWVsZHMgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKKyAg
ICAgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IG5vZGUtPmdldExlZnQoKS0+Z2V0
VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKIAotICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmaWVsZHMtPnNpemUoKTsgaSsrKQorICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqZmllbGRzKVtpXS50eXBlOworICAgICAg
ICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CiAKICAgICAgICAgICAg
ICAgICBub2RlLT5nZXRMZWZ0KCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgICAgIG91
dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCksIG5vZGUt
PmdldExlZnQoKS0+Z2V0VHlwZSgpKSArICIgPT0gIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwg
Ii4iICsgZGVjb3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5
cGUoKSkgKyAiID09ICI7CiAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0UmlnaHQoKS0+dHJhdmVy
c2UodGhpcyk7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmll
bGRUeXBlLT5nZXRGaWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkpOworICAg
ICAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksIG5v
ZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpKTsKIAotICAgICAgICAgICAgICAgIGlmIChpIDwgZmll
bGRzLT5zaXplKCkgLSAxKQorICAgICAgICAgICAgICAgIGlmIChpIDwgZmllbGRzLnNpemUoKSAt
IDEpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAmJiAi
OwogICAgICAgICAgICAgICAgIH0KQEAgLTEyMzgsNyArMTI1Nyw3IEBAIGJvb2wgT3V0cHV0SExT
TDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1J
bnNpZGVGdW5jdGlvbikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURp
cmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICAgICAgb3V0
IDw8ICJ7XG4iOwogCiAgICAgICAgICAgICAgICAgbVNjb3BlRGVwdGgrKzsKQEAgLTEyNTUsNyAr
MTI3NCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKIAogICAg
ICAgICAgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHNpdCA9IG5vZGUtPmdldFNl
cXVlbmNlKCkuYmVnaW4oKTsgc2l0ICE9IG5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHNpdCsr
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpz
aXQpLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpz
aXQpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAKICAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0
YXRlbWVudHMoKnNpdCk7CiAKQEAgLTEyNjQsNyArMTI4Myw3IEBAIGJvb2wgT3V0cHV0SExTTDo6
dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKIAogICAgICAgICAgICAgaWYgKG1JbnNpZGVGdW5jdGlv
bikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5v
ZGUtPmdldEVuZExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShu
b2RlLT5nZXRMaW5lKCkubGFzdF9saW5lKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgIn1cbiI7
CiAKICAgICAgICAgICAgICAgICBtU2NvcGVEZXB0aC0tOwpAQCAtMTI4Myw3ICsxMzAyLDcgQEAg
Ym9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQogICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RydWN0b3IodmFyaWFi
bGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0VHlwZU5h
bWUoKSksIE5VTEwpOworICAgICAgICAgICAgICAgICAgICBhZGRDb25zdHJ1Y3Rvcih2YXJpYWJs
ZS0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3QodmFyaWFibGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3Qo
KS0+bmFtZSgpKSwgTlVMTCk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
aWYgKCF2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCkgfHwgdmFyaWFibGUtPmdldEFzU3ltYm9s
Tm9kZSgpLT5nZXRTeW1ib2woKSAhPSAiIikgICAvLyBWYXJpYWJsZSBkZWNsYXJhdGlvbgpAQCAt
MTQwMSw3ICsxNDIwLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2
aQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbC0+Z2V0
VHlwZSgpLmdldFN0cnVjdCgpKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBhZGRDb25zdHJ1Y3RvcihzeW1ib2wtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0
KHN5bWJvbC0+Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpLCBOVUxMKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZENvbnN0cnVjdG9yKHN5bWJvbC0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3Qo
c3ltYm9sLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPm5hbWUoKSksIE5VTEwpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8IGFyZ3VtZW50U3RyaW5n
KHN5bWJvbCk7CkBAIC0xNjUwLDggKzE2NjksOCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdn
cmVnYXRlKFZpc2l0IHZpCiAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJtYXQ0KCIsICIs
ICIsICIpIik7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RTdHJ1Y3Q6
Ci0gICAgICAgIGFkZENvbnN0cnVjdG9yKG5vZGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5v
ZGUtPmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOwotICAg
ICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdl
dFR5cGVOYW1lKCkpICsgIl9jdG9yKCIsICIsICIsICIpIik7CisgICAgICAgIGFkZENvbnN0cnVj
dG9yKG5vZGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1
Y3QoKS0+bmFtZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgICAgICBvdXRwdXRUcmlw
bGV0KHZpc2l0LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5uYW1l
KCkpICsgIl9jdG9yKCIsICIsICIsICIpIik7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBF
T3BMZXNzVGhhbjogICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgPCAiLCAiKSIp
OyAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOiAgICAg
IG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiA+ICIsICIpIik7ICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTE3NDEsNyArMTc2MCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rp
b24oVmlzaXQgdmkKIAogICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAgICAgIAotICAgICAgICBv
dXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIG91dHB1dExpbmVE
aXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQgPDwgIntc
biI7CiAKICAgICAgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQpAQCAtMTc0OSwyMCArMTc2
OCwyMCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpCiAgICAgICAg
ICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpOwogICAgICAgICB9
CiAKLSAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAg
ICAgb3V0IDw8ICI7XG59XG4iOwogCiAgICAgICAgIGlmIChub2RlLT5nZXRGYWxzZUJsb2NrKCkp
CiAgICAgICAgIHsKICAgICAgICAgICAgIG91dCA8PCAiZWxzZVxuIjsKIAotICAgICAgICAgICAg
b3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7Cisg
ICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0
TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwogCi0gICAgICAg
ICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgp
KTsKKyAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygp
LT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMo
bm9kZS0+Z2V0RmFsc2VCbG9jaygpKTsKIAotICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2
ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7CisgICAgICAgICAgICBvdXRwdXRM
aW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUp
OwogICAgICAgICAgICAgb3V0IDw8ICI7XG59XG4iOwogICAgICAgICB9CiAgICAgfQpAQCAtMTc5
NSw3ICsxODE0LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIAog
ICAgIHsKICAgICAgICAgb3V0IDw8ICJ7ZG9cbiI7CiAKLSAgICAgICAgb3V0cHV0TGluZURpcmVj
dGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUt
PmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8ICJ7XG4iOwogICAgIH0KICAg
ICBlbHNlCkBAIC0xODIzLDcgKzE4NDIsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChW
aXNpdCB2aXNpdCwgCiAKICAgICAgICAgb3V0IDw8ICIpXG4iOwogICAgICAgICAKLSAgICAgICAg
b3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8ICJ7
XG4iOwogICAgIH0KIApAQCAtMTgzMiwxMiArMTg1MSwxMiBAQCBib29sIE91dHB1dEhMU0w6OnZp
c2l0TG9vcChWaXNpdCB2aXNpdCwgCiAgICAgICAgIHRyYXZlcnNlU3RhdGVtZW50cyhub2RlLT5n
ZXRCb2R5KCkpOwogICAgIH0KIAotICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGlu
ZSgpKTsKKyAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5l
KTsKICAgICBvdXQgPDwgIjt9XG4iOwogCiAgICAgaWYgKG5vZGUtPmdldFR5cGUoKSA9PSBFTG9v
cERvV2hpbGUpCiAgICAgewotICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENv
bmRpdGlvbigpLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUt
PmdldENvbmRpdGlvbigpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAi
d2hpbGUoXG4iOwogCiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlz
KTsKQEAgLTE5NzcsNyArMTk5Niw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZl
TG9vcChUSW4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNU
eXBlKCkgPT0gRWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAg
ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgg
PSBzeW1ib2w7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCA9IGNvbnN0YW50
LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpWzBdLmdldElDb25zdCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluaXRpYWwgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDApOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQpAQCAtMTk5OSw3ICsyMDE4LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVM
b29wKFRJbgogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0g
RWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICBjb21wYXJhdG9yID0gdGVzdC0+Z2V0T3AoKTsKLSAg
ICAgICAgICAgICAgICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgbGltaXQgPSBjb25zdGFudC0+
Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMjAyMCw3ICsyMDM5LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVM
b29wKFRJbgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0
QmFzaWNUeXBlKCkgPT0gRWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEp
CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSBjb25z
dGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaW50IHZhbHVlID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKG9wKQogICAgICAgICAgICAgICAgICAgICB7CkBAIC0yMTA5LDcg
KzIxMjgsNyBAQCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAg
ICAgICAgICAgICAgb3V0IDw8IGluY3JlbWVudDsKICAgICAgICAgICAgICAgICBvdXQgPDwgIilc
biI7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2
ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUo
bm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAie1xu
IjsKIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRCb2R5KCkpCkBAIC0yMTE3LDcgKzIx
MzYsNyBAQCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmdldEJvZHkoKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGlu
ZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAiO31cbiI7CiAKICAgICAg
ICAgICAgICAgICBpZiAoIWZpcnN0TG9vcEZyYWdtZW50KQpAQCAtMjIxMywyMiArMjIzMiwyMyBA
QCBUU3RyaW5nIE91dHB1dEhMU0w6OnR5cGVTdHJpbmcoY29uc3QgVFR5CiB7CiAgICAgaWYgKHR5
cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsKLSAgICAgICAgaWYgKHR5cGUu
Z2V0VHlwZU5hbWUoKSAhPSAiIikKKyAgICAgICAgY29uc3QgVFN0cmluZyYgdHlwZU5hbWUgPSB0
eXBlLmdldFN0cnVjdCgpLT5uYW1lKCk7CisgICAgICAgIGlmICh0eXBlTmFtZSAhPSAiIikKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlLmdldFR5cGVOYW1l
KCkpOworICAgICAgICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlTmFtZSk7CiAgICAgICAg
IH0KICAgICAgICAgZWxzZSAgIC8vIE5hbWVsZXNzIHN0cnVjdHVyZSwgZGVmaW5lIGluIHBsYWNl
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlTGlzdCAmZmllbGRzID0gKnR5cGUu
Z2V0U3RydWN0KCk7CisgICAgICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSB0eXBl
LmdldFN0cnVjdCgpLT5maWVsZHMoKTsKIAogICAgICAgICAgICAgVFN0cmluZyBzdHJpbmcgPSAi
c3RydWN0XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRz
W2ldLnR5cGU7CisgICAgICAgICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCA9IGZpZWxkc1tp
XTsKIAotICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3RyaW5nKGZpZWxk
KSArICIgIiArIGRlY29yYXRlKGZpZWxkLmdldEZpZWxkTmFtZSgpKSArIGFycmF5U3RyaW5nKGZp
ZWxkKSArICI7XG4iOworICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3Ry
aW5nKCpmaWVsZC0+dHlwZSgpKSArICIgIiArIGRlY29yYXRlKGZpZWxkLT5uYW1lKCkpICsgYXJy
YXlTdHJpbmcoKmZpZWxkLT50eXBlKCkpICsgIjtcbiI7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIHN0cmluZyArPSAifSAiOwpAQCAtMjMwNCwxMSArMjMyNCwxMiBAQCBUU3RyaW5nIE91
dHB1dEhMU0w6OmluaXRpYWxpemVyKGNvbnN0IFRUCiB7CiAgICAgVFN0cmluZyBzdHJpbmc7CiAK
LSAgICBmb3IgKGludCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCB0eXBlLmdldE9iamVjdFNp
emUoKTsgY29tcG9uZW50KyspCisgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUo
KTsKKyAgICBmb3IgKHNpemVfdCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCBzaXplOyBjb21w
b25lbnQrKykKICAgICB7CiAgICAgICAgIHN0cmluZyArPSAiMCI7CiAKLSAgICAgICAgaWYgKGNv
bXBvbmVudCA8IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpIC0gMSkKKyAgICAgICAgaWYgKGNvbXBvbmVu
dCArIDEgPCBzaXplKQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJpbmcgKz0gIiwgIjsKICAg
ICAgICAgfQpAQCAtMjM0NywxMyArMjM2OCwxMyBAQCB2b2lkIE91dHB1dEhMU0w6OmFkZENvbnN0
cnVjdG9yKGNvbnN0IFRUCiAgICAgICAgIHN0cnVjdHVyZSArPSAic3RydWN0ICIgKyBkZWNvcmF0
ZShuYW1lKSArICJcbiIKICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCi0gICAgICAgIGNv
bnN0IFRUeXBlTGlzdCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0KCk7CisgICAgICAgIGNvbnN0
IFRGaWVsZExpc3QgJmZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRzW2ldLnR5cGU7
CisgICAgICAgICAgICBjb25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ldOwogCi0gICAgICAg
ICAgICBzdHJ1Y3R1cmUgKz0gIiAgICAiICsgdHlwZVN0cmluZyhmaWVsZCkgKyAiICIgKyBkZWNv
cmF0ZUZpZWxkKGZpZWxkLmdldEZpZWxkTmFtZSgpLCB0eXBlKSArIGFycmF5U3RyaW5nKGZpZWxk
KSArICI7XG4iOworICAgICAgICAgICAgc3RydWN0dXJlICs9ICIgICAgIiArIHR5cGVTdHJpbmco
KmZpZWxkLT50eXBlKCkpICsgIiAiICsgZGVjb3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCB0eXBl
KSArIGFycmF5U3RyaW5nKCpmaWVsZC0+dHlwZSgpKSArICI7XG4iOwogICAgICAgICB9CiAKICAg
ICAgICAgc3RydWN0dXJlICs9ICJ9O1xuIjsKQEAgLTIzNjUsNyArMjM4Niw3IEBAIHZvaWQgT3V0
cHV0SExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFQKIAogICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAgICAgICAg
ICAgY3RvclBhcmFtZXRlcnMucHVzaF9iYWNrKCpmaWVsZHNbaV0udHlwZSk7CisgICAgICAgICAg
ICBjdG9yUGFyYW1ldGVycy5wdXNoX2JhY2soKmZpZWxkc1tpXS0+dHlwZSgpKTsKICAgICAgICAg
fQogICAgIH0KICAgICBlbHNlIGlmIChwYXJhbWV0ZXJzKQpAQCAtMjQ1OCwyNyArMjQ3OSwzMCBA
QCB2b2lkIE91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAgICAgfQogICAgIGVs
c2UKICAgICB7Ci0gICAgICAgIGludCByZW1haW5pbmdDb21wb25lbnRzID0gY3RvclR5cGUuZ2V0
T2JqZWN0U2l6ZSgpOwotICAgICAgICBpbnQgcGFyYW1ldGVySW5kZXggPSAwOworICAgICAgICBz
aXplX3QgcmVtYWluaW5nQ29tcG9uZW50cyA9IGN0b3JUeXBlLmdldE9iamVjdFNpemUoKTsKKyAg
ICAgICAgc2l6ZV90IHBhcmFtZXRlckluZGV4ID0gMDsKIAogICAgICAgICB3aGlsZSAocmVtYWlu
aW5nQ29tcG9uZW50cyA+IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZw
YXJhbWV0ZXIgPSBjdG9yUGFyYW1ldGVyc1twYXJhbWV0ZXJJbmRleF07Ci0gICAgICAgICAgICBi
b29sIG1vcmVQYXJhbWV0ZXJzID0gcGFyYW1ldGVySW5kZXggPCAoaW50KWN0b3JQYXJhbWV0ZXJz
LnNpemUoKSAtIDE7CisgICAgICAgICAgICBjb25zdCBzaXplX3QgcGFyYW1ldGVyU2l6ZSA9IHBh
cmFtZXRlci5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICBib29sIG1vcmVQYXJhbWV0ZXJz
ID0gcGFyYW1ldGVySW5kZXggKyAxIDwgY3RvclBhcmFtZXRlcnMuc2l6ZSgpOwogCiAgICAgICAg
ICAgICBjb25zdHJ1Y3RvciArPSAieCIgKyBzdHIocGFyYW1ldGVySW5kZXgpOwogCiAgICAgICAg
ICAgICBpZiAocGFyYW1ldGVyLmlzU2NhbGFyKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmVtYWluaW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJlbWFpbmluZ0NvbXBvbmVu
dHMpOworICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5pc1ZlY3Rv
cigpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmdDb21wb25l
bnRzID09IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCkgfHwgbW9yZVBhcmFtZXRlcnMpCisgICAg
ICAgICAgICAgICAgaWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPT0gcGFyYW1ldGVyU2l6ZSB8fCBt
b3JlUGFyYW1ldGVycykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
bWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHBhcmFtZXRlclNpemUgPD0gcmVtYWluaW5nQ29tcG9uZW50cyk7
CisgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6
ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVtYWluaW5n
Q29tcG9uZW50cyA8IHBhcmFtZXRlci5nZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgICAg
IGVsc2UgaWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFt
ZXRlci5nZXROb21pbmFsU2l6ZSgpKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAocmVtYWluaW5nQ29tcG9uZW50cykKICAgICAgICAgICAgICAgICAgICAg
ewpAQCAtMjQ5NSw5ICsyNTE5LDEwIEBAIHZvaWQgT3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3Io
Y29uc3QgVFQKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5p
c01hdHJpeCgpIHx8IHBhcmFtZXRlci5nZXRTdHJ1Y3QoKSkKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQocmVtYWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXIuZ2V0T2Jq
ZWN0U2l6ZSgpIHx8IG1vcmVQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmVt
YWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXJTaXplIHx8IG1vcmVQYXJhbWV0ZXJzKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQocGFyYW1ldGVyU2l6ZSA8PSByZW1haW5pbmdDb21wb25lbnRz
KTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRz
IC09IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICAgICAgcmVtYWluaW5n
Q29tcG9uZW50cyAtPSBwYXJhbWV0ZXJTaXplOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZWxzZSBVTlJFQUNIQUJMRSgpOwogCkBAIC0yNTM0LDE3ICsyNTU5LDE3IEBAIGNvbnN0IENvbnN0
YW50VW5pb24gKk91dHB1dEhMU0w6OndyaXRlQ28KIAogICAgIGlmICh0eXBlLmdldEJhc2ljVHlw
ZSgpID09IEVidFN0cnVjdCkKICAgICB7Ci0gICAgICAgIG91dCA8PCBzdHJ1Y3RMb29rdXAodHlw
ZS5nZXRUeXBlTmFtZSgpKSArICJfY3RvcigiOworICAgICAgICBvdXQgPDwgc3RydWN0TG9va3Vw
KHR5cGUuZ2V0U3RydWN0KCktPm5hbWUoKSkgKyAiX2N0b3IoIjsKICAgICAgICAgCi0gICAgICAg
IGNvbnN0IFRUeXBlTGlzdCAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAg
Y29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgaSsrKQor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAg
ICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtp
XS50eXBlOworICAgICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9IGZpZWxkc1tpXS0+
dHlwZSgpOwogCiAgICAgICAgICAgICBjb25zdFVuaW9uID0gd3JpdGVDb25zdGFudFVuaW9uKCpm
aWVsZFR5cGUsIGNvbnN0VW5pb24pOwogCi0gICAgICAgICAgICBpZiAoaSAhPSBzdHJ1Y3R1cmUt
PnNpemUoKSAtIDEpCisgICAgICAgICAgICBpZiAoaSAhPSBmaWVsZHMuc2l6ZSgpIC0gMSkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKICAgICAgICAgICAgIH0K
QEAgLTI1NTQsNyArMjU3OSw3IEBAIGNvbnN0IENvbnN0YW50VW5pb24gKk91dHB1dEhMU0w6Ondy
aXRlQ28KICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW50IHNpemUgPSB0eXBlLmdl
dE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUo
KTsKICAgICAgICAgYm9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAgICAgCiAgICAgICAg
IGlmICh3cml0ZVR5cGUpCkBAIC0yNTYyLDcgKzI1ODcsNyBAQCBjb25zdCBDb25zdGFudFVuaW9u
ICpPdXRwdXRITFNMOjp3cml0ZUNvCiAgICAgICAgICAgICBvdXQgPDwgdHlwZVN0cmluZyh0eXBl
KSA8PCAiKCI7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
IGkrKywgY29uc3RVbmlvbisrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
IGkrKywgY29uc3RVbmlvbisrKQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnN0
VW5pb24tPmdldFR5cGUoKSkKICAgICAgICAgICAgIHsKQEAgLTI2NTUsNyArMjY4MCw3IEBAIFRT
dHJpbmcgT3V0cHV0SExTTDo6ZGVjb3JhdGVVbmlmb3JtKGNvbnMKIAogVFN0cmluZyBPdXRwdXRI
TFNMOjpkZWNvcmF0ZUZpZWxkKGNvbnN0IFRTdHJpbmcgJnN0cmluZywgY29uc3QgVFR5cGUgJnN0
cnVjdHVyZSkKIHsKLSAgICBpZiAoc3RydWN0dXJlLmdldFR5cGVOYW1lKCkuY29tcGFyZSgwLCAz
LCAiZ2xfIikgIT0gMCkKKyAgICBpZiAoc3RydWN0dXJlLmdldFN0cnVjdCgpLT5uYW1lKCkuY29t
cGFyZSgwLCAzLCAiZ2xfIikgIT0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBkZWNvcmF0ZShz
dHJpbmcpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9PdXRwdXRITFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL091dHB1dEhMU0wuaAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAkod29ya2luZyBjb3B5KQpAQCAt
OTcsNiArOTcsNyBAQCBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAg
ICAgYm9vbCBtVXNlc1BvaW50Q29vcmQ7CiAgICAgYm9vbCBtVXNlc0Zyb250RmFjaW5nOwogICAg
IGJvb2wgbVVzZXNQb2ludFNpemU7CisgICAgYm9vbCBtVXNlc0ZyYWdEZXB0aDsKICAgICBib29s
IG1Vc2VzWG9yOwogICAgIGJvb2wgbVVzZXNNb2QxOwogICAgIGJvb2wgbVVzZXNNb2QydjsKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNl
SGVscGVyLmNwcAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjIsNyArMjIsNyBA
QAogLy8gTG9vayBhdCBhICcuJyBmaWVsZCBzZWxlY3RvciBzdHJpbmcgYW5kIGNoYW5nZSBpdCBp
bnRvIG9mZnNldHMKIC8vIGZvciBhIHZlY3Rvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBh
cnNlVmVjdG9yRmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCB2ZWNTaXplLCBU
VmVjdG9yRmllbGRzJiBmaWVsZHMsIGludCBsaW5lKQorYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJz
ZVZlY3RvckZpZWxkcyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgdmVjU2l6ZSwgVFZl
Y3RvckZpZWxkcyYgZmllbGRzLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGZpZWxk
cy5udW0gPSAoaW50KSBjb21wU3RyaW5nLnNpemUoKTsKICAgICBpZiAoZmllbGRzLm51bSA+IDQp
IHsKQEAgLTExNSw3ICsxMTUsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmll
bGRzKGNvCiAvLyBMb29rIGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0cmluZyBhbmQgY2hhbmdl
IGl0IGludG8gb2Zmc2V0cwogLy8gZm9yIGEgbWF0cml4LgogLy8KLWJvb2wgVFBhcnNlQ29udGV4
dDo6cGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IG1hdFNp
emUsIFRNYXRyaXhGaWVsZHMmIGZpZWxkcywgaW50IGxpbmUpCitib29sIFRQYXJzZUNvbnRleHQ6
OnBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCBtYXRTaXpl
LCBUTWF0cml4RmllbGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAg
ZmllbGRzLndob2xlUm93ID0gZmFsc2U7CiAgICAgZmllbGRzLndob2xlQ29sID0gZmFsc2U7CkBA
IC0xNzUsMjIgKzE3NSwyNCBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnJlY292ZXIoKQogLy8KIC8v
IFVzZWQgYnkgZmxleC9iaXNvbiB0byBvdXRwdXQgYWxsIHN5bnRheCBhbmQgcGFyc2luZyBlcnJv
cnMuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0OjplcnJvcihUU291cmNlTG9jIGxvYywKK3ZvaWQg
VFBhcnNlQ29udGV4dDo6ZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvKQogewogICAgIHBw
OjpTb3VyY2VMb2NhdGlvbiBzcmNMb2M7Ci0gICAgRGVjb2RlU291cmNlTG9jKGxvYywgJnNyY0xv
Yy5maWxlLCAmc3JjTG9jLmxpbmUpOworICAgIHNyY0xvYy5maWxlID0gbG9jLmZpcnN0X2ZpbGU7
CisgICAgc3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKICAgICBkaWFnbm9zdGljcy53cml0
ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpFUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3JjTG9jLCByZWFzb24sIHRva2VuLCBleHRyYUluZm8pOwogCiB9CiAKLXZvaWQgVFBhcnNlQ29u
dGV4dDo6d2FybmluZyhUU291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29udGV4dDo6d2Fybmlu
Zyhjb25zdCBUU291cmNlTG9jJiBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBleHRyYUluZm8pIHsKICAgICBwcDo6U291cmNlTG9jYXRpb24g
c3JjTG9jOwotICAgIERlY29kZVNvdXJjZUxvYyhsb2MsICZzcmNMb2MuZmlsZSwgJnNyY0xvYy5s
aW5lKTsKKyAgICBzcmNMb2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOworICAgIHNyY0xvYy5saW5l
ID0gbG9jLmZpcnN0X2xpbmU7CiAgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9z
dGljczo6V0FSTklORywKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFzb24s
IHRva2VuLCBleHRyYUluZm8pOwogfQpAQCAtMjAzLDcgKzIwNSw3IEBAIHZvaWQgVFBhcnNlQ29u
dGV4dDo6dHJhY2UoY29uc3QgY2hhciogc3QKIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9y
IGFsbCBwbGFjZXMgYXNzaWdubWVudHMgZG9uJ3Qgd29yay4KIC8vCi12b2lkIFRQYXJzZUNvbnRl
eHQ6OmFzc2lnbkVycm9yKGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBU
U3RyaW5nIHJpZ2h0KQordm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcihjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0
KQogewogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUlu
Zm9TdHJlYW0gPDwgImNhbm5vdCBjb252ZXJ0IGZyb20gJyIgPDwgcmlnaHQgPDwgIicgdG8gJyIg
PDwgbGVmdCA8PCAiJyI7CkBAIC0yMTQsNyArMjE2LDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0Ojph
c3NpZ25FcnJvcihpbnQgbGluZQogLy8KIC8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxsIHBs
YWNlcyB1bmFyeSBvcGVyYXRpb25zIGRvbid0IHdvcmsuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0
Ojp1bmFyeU9wRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQp
Cit2b2lkIFRQYXJzZUNvbnRleHQ6OnVuYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKQogewogICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlv
biAnIiA8PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhbiBvcGVyYW5kIG9mIHR5cGUgIiA8
PCBvcGVyYW5kIApAQCAtMjI2LDcgKzIyOCw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dW5hcnlP
cEVycm9yKGludCBsaW4KIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBiaW5hcnkg
b3BlcmF0aW9ucyBkb24ndCB3b3JrLgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BF
cnJvcihpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdo
dCkKK3ZvaWQgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0g
PDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhIGxlZnQt
aGFuZCBvcGVyYW5kIG9mIHR5cGUgJyIgPDwgbGVmdCAKQEAgLTIzNSw3ICsyMzcsNyBAQCB2b2lk
IFRQYXJzZUNvbnRleHQ6OmJpbmFyeU9wRXJyb3IoaW50IGxpCiAgICAgZXJyb3IobGluZSwgIiB3
cm9uZyBvcGVyYW5kIHR5cGVzICIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7IAogfQogCi1ib29s
IFRQYXJzZUNvbnRleHQ6OnByZWNpc2lvbkVycm9yQ2hlY2soaW50IGxpbmUsIFRQcmVjaXNpb24g
cHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5cGUpeworYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNp
b25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9u
LCBUQmFzaWNUeXBlIHR5cGUpewogICAgIGlmICghY2hlY2tzUHJlY2lzaW9uRXJyb3JzKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgc3dpdGNoKCB0eXBlICl7CkBAIC0yNjMsNyArMjY1LDcg
QEAgYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKAogLy8KIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6bFZh
bHVlRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRlcm1UeXBlZCogbm9k
ZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKiBub2RlKQogewogICAgIFRJbnRl
cm1TeW1ib2wqIHN5bU5vZGUgPSBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsKICAgICBUSW50ZXJt
QmluYXJ5KiBiaW5hcnlOb2RlID0gbm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7CkBAIC0yODYsNyAr
Mjg4LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGludAogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRv
ciBwID0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuYmVnaW4oKTsgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgIT0gYWdnck5vZGUtPmdldFNlcXVlbmNl
KCkuZW5kKCk7IHArKykgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSAoKnApLT5n
ZXRBc1R5cGVkKCktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigp
LT5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gKCpwKS0+Z2V0
QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOwogICAgICAgICAg
ICAgICAgICAgICBvZmZzZXRbdmFsdWVdKys7ICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYg
KG9mZnNldFt2YWx1ZV0gPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5l
LCAiIGwtdmFsdWUgb2Ygc3dpenpsZSBjYW5ub3QgaGF2ZSBkdXBsaWNhdGUgY29tcG9uZW50cyIs
IG9wKTsKQEAgLTMxNyw3ICszMTksNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9y
Q2hlY2soaW50CiAgICAgY2FzZSBFdnFBdHRyaWJ1dGU6ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBt
b2RpZnkgYW4gYXR0cmlidXRlIjsgICBicmVhazsKICAgICBjYXNlIEV2cVVuaWZvcm06ICAgICAg
ICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHVuaWZvcm0iOyAgICAgIGJyZWFrOwogICAgIGNh
c2UgRXZxVmFyeWluZ0luOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGEgdmFyeWluZyI7
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFJbnB1dDogICAgICAgICAgbWVzc2FnZSA9ICJjYW4n
dCBtb2RpZnkgYW4gaW5wdXQiOyAgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb29yZDog
ICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBnbF9GcmFnQ29vcmQiOyAgIGJyZWFrOwogICAg
IGNhc2UgRXZxRnJvbnRGYWNpbmc6ICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX0Zyb250
RmFjaW5nIjsgYnJlYWs7CiAgICAgY2FzZSBFdnFQb2ludENvb3JkOiAgICAgbWVzc2FnZSA9ICJj
YW4ndCBtb2RpZnkgZ2xfUG9pbnRDb29yZCI7ICBicmVhazsKQEAgLTQwOSw3ICs0MTAsNyBAQCBi
b29sIFRQYXJzZUNvbnRleHQ6OmludGVnZXJFcnJvckNoZWNrKFRJCiAvLwogLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpnbG9iYWxF
cnJvckNoZWNrKGludCBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pCitib29s
IFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Ym9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2VuKQogewogICAgIGlmIChnbG9iYWwpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTQyOCw3ICs0MjksNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6
Omdsb2JhbEVycm9yQ2hlY2soaW50CiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBh
biBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JDaGVjayhpbnQg
bGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cmVz
ZXJ2ZWRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlk
ZW50aWZpZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc2VydmVkRXJyTXNnID0gInJl
c2VydmVkIGJ1aWx0LWluIG5hbWUiOwogICAgIGlmICghc3ltYm9sVGFibGUuYXRCdWlsdEluTGV2
ZWwoKSkgewpAQCAtNDY2LDcgKzQ2Nyw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRF
cnJvckNoZWNrKGkKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGlu
IGNvbnN0cnVjdGlvbi4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JD
aGVjayhpbnQgbGluZSwgVEludGVybU5vZGUqIG5vZGUsIFRGdW5jdGlvbiYgZnVuY3Rpb24sIFRP
cGVyYXRvciBvcCwgVFR5cGUqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9y
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogbm9kZSwgVEZ1
bmN0aW9uJiBmdW5jdGlvbiwgVE9wZXJhdG9yIG9wLCBUVHlwZSogdHlwZSkKIHsKICAgICAqdHlw
ZSA9IGZ1bmN0aW9uLmdldFJldHVyblR5cGUoKTsKIApAQCAtNDg3LDcgKzQ4OCw3IEBAIGJvb2wg
VFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWMKICAgICAvLyBhZ2FpbiwgdGhlcmUg
aXMgYW4gZXh0cmEgYXJndW1lbnQsIHNvICdvdmVyZnVsbCcgd2lsbCBiZWNvbWUgdHJ1ZS4KICAg
ICAvLwogCi0gICAgaW50IHNpemUgPSAwOworICAgIHNpemVfdCBzaXplID0gMDsKICAgICBib29s
IGNvbnN0VHlwZSA9IHRydWU7CiAgICAgYm9vbCBmdWxsID0gZmFsc2U7CiAgICAgYm9vbCBvdmVy
RnVsbCA9IGZhbHNlOwpAQCAtNTM0LDcgKzUzNSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29u
c3RydWN0b3JFcnJvckNoZWMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAg
IGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXkoKSAmJiBpbnQo
dHlwZS0+Z2V0U3RydWN0KCktPnNpemUoKSkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSB7
CisgICAgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgpICYm
IGludCh0eXBlLT5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCkuc2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQ
YXJhbUNvdW50KCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgIk51bWJlciBvZiBjb25zdHJ1Y3Rv
ciBwYXJhbWV0ZXJzIGRvZXMgbm90IG1hdGNoIHRoZSBudW1iZXIgb2Ygc3RydWN0dXJlIGZpZWxk
cyIsICJjb25zdHJ1Y3RvciIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC01Njgs
NyArNTY5LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlYwogLy8K
IC8vIHJldHVybnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCiAvLwotYm9vbCBUUGFyc2VDb250
ZXh0Ojp2b2lkRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgVFB1YmxpY1R5cGUmIHB1YlR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFRQdWJsaWNUeXBlJiBwdWJUeXBlKQogewogICAgIGlmIChwdWJUeXBlLnR5cGUgPT0g
RWJ0Vm9pZCkgewogICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9p
ZCciLCBpZGVudGlmaWVyLmNfc3RyKCkpOwpAQCAtNTgyLDcgKzU4Myw3IEBAIGJvb2wgVFBhcnNl
Q29udGV4dDo6dm9pZEVycm9yQ2hlY2soaW50IGwKIC8vCiAvLyByZXR1cm5zIHRydWUgaW4gY2Fz
ZSBvZiBhbiBlcnJvcgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soaW50
IGxpbmUsIGNvbnN0IFRJbnRlcm1UeXBlZCogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Ym9v
bEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEludGVybVR5cGVkKiB0
eXBlKQogewogICAgIGlmICh0eXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRCb29sIHx8IHR5cGUt
PmlzQXJyYXkoKSB8fCB0eXBlLT5pc01hdHJpeCgpIHx8IHR5cGUtPmlzVmVjdG9yKCkpIHsKICAg
ICAgICAgZXJyb3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3RlZCIsICIiKTsKQEAg
LTU5Niw3ICs1OTcsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGludCBs
CiAvLwogLy8gcmV0dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1ib29sIFRQYXJz
ZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5
cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSkKIHsKICAgICBpZiAocFR5cGUudHlwZSAh
PSBFYnRCb29sIHx8IHBUeXBlLmFycmF5IHx8IHBUeXBlLm1hdHJpeCB8fCAocFR5cGUuc2l6ZSA+
IDEpKSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJib29sZWFuIGV4cHJlc3Npb24gZXhwZWN0ZWQi
LCAiIik7CkBAIC02MDYsNyArNjA3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JD
aGVjayhpbnQgbAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0Ojpz
YW1wbGVyRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25z
dCBjaGFyKiByZWFzb24pCitib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hh
ciogcmVhc29uKQogewogICAgIGlmIChwVHlwZS50eXBlID09IEVidFN0cnVjdCkgewogICAgICAg
ICBpZiAoY29udGFpbnNTYW1wbGVyKCpwVHlwZS51c2VyRGVmKSkgewpAQCAtNjI1LDcgKzYyNiw3
IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2soaW4KICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVj
ayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0
OjpzdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0
IFRQdWJsaWNUeXBlJiBwVHlwZSkKIHsKICAgICBpZiAoKHBUeXBlLnF1YWxpZmllciA9PSBFdnFW
YXJ5aW5nSW4gfHwgcFR5cGUucXVhbGlmaWVyID09IEV2cVZhcnlpbmdPdXQgfHwgcFR5cGUucXVh
bGlmaWVyID09IEV2cUF0dHJpYnV0ZSkgJiYKICAgICAgICAgcFR5cGUudHlwZSA9PSBFYnRTdHJ1
Y3QpIHsKQEAgLTY0MCw3ICs2NDEsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxp
ZmllckVycm9yCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBh
cmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwg
Y29uc3QgVFR5cGUmIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBj
b25zdCBUVHlwZSYgdHlwZSkKIHsKICAgICBpZiAoKHF1YWxpZmllciA9PSBFdnFPdXQgfHwgcXVh
bGlmaWVyID09IEV2cUluT3V0KSAmJiAKICAgICAgICAgICAgICB0eXBlLmdldEJhc2ljVHlwZSgp
ICE9IEVidFN0cnVjdCAmJiBJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpIHsKQEAgLTY1
Nyw5ICs2NTgsOSBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxlcihUVHlwCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0
U3RydWN0KSB7Ci0gICAgICAgIFRUeXBlTGlzdCYgc3RydWN0dXJlID0gKnR5cGUuZ2V0U3RydWN0
KCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3RydWN0dXJlLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpzdHJ1Y3R1cmVbaV0u
dHlwZSkpCisgICAgICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0
KCktPmZpZWxkcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxk
cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxlcigqZmllbGRz
W2ldLT50eXBlKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAg
ICAgfQpAQCAtNjcyLDcgKzY3Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29udGFpbnNTYW1w
bGVyKFRUeXAKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8K
LWJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVy
bVR5cGVkKiBleHByLCBpbnQmIHNpemUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybVR5cGVkKiBleHByLCBpbnQm
IHNpemUpCiB7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIGNvbnN0YW50ID0gZXhwci0+Z2V0
QXNDb25zdGFudFVuaW9uKCk7CiAgICAgaWYgKGNvbnN0YW50ID09IDAgfHwgY29uc3RhbnQtPmdl
dEJhc2ljVHlwZSgpICE9IEVidEludCkgewpAQCAtNjgwLDcgKzY4MSw3IEBAIGJvb2wgVFBhcnNl
Q29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjaygKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgc2l6ZSA9IGNvbnN0YW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29u
c3QoKTsKKyAgICBzaXplID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgIGlmIChzaXpl
IDw9IDApIHsKICAgICAgICAgZXJyb3IobGluZSwgImFycmF5IHNpemUgbXVzdCBiZSBhIHBvc2l0
aXZlIGludGVnZXIiLCAiIik7CkBAIC02OTYsNyArNjk3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjphcnJheVNpemVFcnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBh
biBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVj
ayhpbnQgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlR
dWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5
cGUpCiB7CiAgICAgaWYgKCh0eXBlLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpIHx8ICh0eXBl
LnF1YWxpZmllciA9PSBFdnFDb25zdCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBk
ZWNsYXJlIGFycmF5cyBvZiB0aGlzIHF1YWxpZmllciIsIFRUeXBlKHR5cGUpLmdldENvbXBsZXRl
U3RyaW5nKCkuY19zdHIoKSk7CkBAIC03MTEsNyArNzEyLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjphcnJheVF1YWxpZmllckVycm9yQwogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBh
biBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soaW50
IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKIHsKICAg
ICAvLwogICAgIC8vIENhbiB0aGUgdHlwZSBiZSBhbiBhcnJheT8KQEAgLTczMiw3ICs3MzMsNyBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soCiAvLwogLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFy
cmF5RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUg
dHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJy
b3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVi
bGljVHlwZSB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICAvLwogICAgIC8vIERv
bid0IGNoZWNrIGZvciByZXNlcnZlZCB3b3JkIHVzZSB1bnRpbCBhZnRlciB3ZSBrbm93IGl0J3Mg
bm90IGluIHRoZSBzeW1ib2wgdGFibGUsCkBAIC03NzcsMTYgKzc3OCw2IEBAIGJvb2wgVFBhcnNl
Q29udGV4dDo6YXJyYXlFcnJvckNoZWNrKGludCAKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAKLSAgICAgICAgVFR5cGUqIHQgPSB2YXJpYWJsZS0+Z2V0QXJyYXlJbmZvcm1h
dGlvblR5cGUoKTsKLSAgICAgICAgd2hpbGUgKHQgIT0gMCkgewotICAgICAgICAgICAgaWYgKHQt
PmdldE1heEFycmF5U2l6ZSgpID4gdHlwZS5hcnJheVNpemUpIHsKLSAgICAgICAgICAgICAgICBl
cnJvcihsaW5lLCAiaGlnaGVyIGluZGV4IHZhbHVlIGFscmVhZHkgdXNlZCBmb3IgdGhlIGFycmF5
IiwgaWRlbnRpZmllci5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHQtPnNldEFycmF5U2l6ZSh0eXBlLmFycmF5U2l6ZSk7
Ci0gICAgICAgICAgICB0ID0gdC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKTsKLSAgICAgICAg
fQotCiAgICAgICAgIGlmICh0eXBlLmFycmF5U2l6ZSkKICAgICAgICAgICAgIHZhcmlhYmxlLT5n
ZXRUeXBlKCkuc2V0QXJyYXlTaXplKHR5cGUuYXJyYXlTaXplKTsKICAgICB9IApAQCAtNzk3LDU2
ICs3ODgsMTIgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheUVycm9yQ2hlY2soaW50IAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNldE1heFNpemUo
VEludGVybVN5bWJvbCAqbm9kZSwgVFR5cGUqIHR5cGUsIGludCBzaXplLCBib29sIHVwZGF0ZUZs
YWcsIFRTb3VyY2VMb2MgbGluZSkKLXsKLSAgICBib29sIGJ1aWx0SW4gPSBmYWxzZTsKLSAgICBU
U3ltYm9sKiBzeW1ib2wgPSBzeW1ib2xUYWJsZS5maW5kKG5vZGUtPmdldFN5bWJvbCgpLCAmYnVp
bHRJbik7Ci0gICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICIgdW5k
ZWNsYXJlZCBpZGVudGlmaWVyIiwgbm9kZS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gc3RhdGljX2Nh
c3Q8VFZhcmlhYmxlKj4oc3ltYm9sKTsKLQotICAgIHR5cGUtPnNldEFycmF5SW5mb3JtYXRpb25U
eXBlKHZhcmlhYmxlLT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpKTsKLSAgICB2YXJpYWJsZS0+
dXBkYXRlQXJyYXlJbmZvcm1hdGlvblR5cGUodHlwZSk7Ci0KLSAgICAvLyBzcGVjaWFsIGNhc2lu
ZyB0byB0ZXN0IGluZGV4IHZhbHVlIG9mIGdsX0ZyYWdEYXRhLiBJZiB0aGUgYWNjZXNzZWQgaW5k
ZXggaXMgPj0gZ2xfTWF4RHJhd0J1ZmZlcnMKLSAgICAvLyBpdHMgYW4gZXJyb3IKLSAgICBpZiAo
bm9kZS0+Z2V0U3ltYm9sKCkgPT0gImdsX0ZyYWdEYXRhIikgewotICAgICAgICBUU3ltYm9sKiBm
cmFnRGF0YSA9IHN5bWJvbFRhYmxlLmZpbmQoImdsX01heERyYXdCdWZmZXJzIiwgJmJ1aWx0SW4p
OwotICAgICAgICBBU1NFUlQoZnJhZ0RhdGEpOwotCi0gICAgICAgIGludCBmcmFnRGF0YVZhbHVl
ID0gc3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oZnJhZ0RhdGEpLT5nZXRDb25zdFBvaW50ZXIoKVsw
XS5nZXRJQ29uc3QoKTsKLSAgICAgICAgaWYgKGZyYWdEYXRhVmFsdWUgPD0gc2l6ZSkgewotICAg
ICAgICAgICAgZXJyb3IobGluZSwgIiIsICJbIiwgImdsX0ZyYWdEYXRhIGNhbiBvbmx5IGhhdmUg
YSBtYXggYXJyYXkgc2l6ZSBvZiB1cCB0byBnbF9NYXhEcmF3QnVmZmVycyIpOwotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyB3ZSBkb250IHdhbnQg
dG8gdXBkYXRlIHRoZSBtYXhBcnJheVNpemUgd2hlbiB0aGlzIGZsYWcgaXMgbm90IHNldCwgd2Ug
anVzdCB3YW50IHRvIGluY2x1ZGUgdGhpcyAKLSAgICAvLyBub2RlIHR5cGUgaW4gdGhlIGNoYWlu
IG9mIG5vZGUgdHlwZXMgc28gdGhhdCBpdHMgdXBkYXRlZCB3aGVuIGEgaGlnaGVyIG1heEFycmF5
U2l6ZSBjb21lcyBpbi4KLSAgICBpZiAoIXVwZGF0ZUZsYWcpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHNpemUrKzsKLSAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldE1heEFycmF5U2l6
ZShzaXplKTsKLSAgICB0eXBlLT5zZXRNYXhBcnJheVNpemUoc2l6ZSk7Ci0gICAgVFR5cGUqIHR0
ID0gdHlwZTsKLQotICAgIHdoaWxlKHR0LT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpICE9IDAp
IHsKLSAgICAgICAgdHQgPSB0dC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKTsKLSAgICAgICAg
dHQtPnNldE1heEFycmF5U2l6ZShzaXplKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KIC8vCiAvLyBFbmZvcmNlIG5vbi1pbml0aWFsaXplciB0eXBlL3F1YWxpZmllciBydWxlcy4K
IC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBh
cnNlQ29udGV4dDo6bm9uSW5pdENvbnN0RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRl
bnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpCitib29sIFRQYXJzZUNvbnRl
eHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmlu
ZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpCiB7CiAgICAgaWYg
KHR5cGUucXVhbGlmaWVyID09IEV2cUNvbnN0KQogICAgIHsKQEAgLTg3OCw3ICs4MjUsNyBAQCBi
b29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlCiAvLwogLy8gUmV0dXJucyB0
cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6Om5vbklu
aXRFcnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYg
dHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQ
dWJsaWNUeXBlJiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICBpZiAocmVzZXJ2
ZWRFcnJvckNoZWNrKGxpbmUsIGlkZW50aWZpZXIpKQogICAgICAgICByZWNvdmVyKCk7CkBAIC04
OTgsNyArODQ1LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhpbgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJhbUVycm9yQ2hl
Y2soaW50IGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVhbGlm
aWVyLCBUVHlwZSogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBh
cmFtUXVhbGlmaWVyLCBUVHlwZSogdHlwZSkKIHsgICAgCiAgICAgaWYgKHF1YWxpZmllciAhPSBF
dnFDb25zdCAmJiBxdWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5KSB7CiAgICAgICAgIGVycm9yKGxp
bmUsICJxdWFsaWZpZXIgbm90IGFsbG93ZWQgb24gZnVuY3Rpb24gcGFyYW1ldGVyIiwgZ2V0UXVh
bGlmaWVyU3RyaW5nKHF1YWxpZmllcikpOwpAQCAtOTE3LDcgKzg2NCw3IEBAIGJvb2wgVFBhcnNl
Q29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGludCAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgVFBhcnNlQ29udGV4dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0
cmluZyYgZXh0ZW5zaW9uKQorYm9vbCBUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAg
ICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZp
b3IoKTsKICAgICBURXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBleHRC
ZWhhdmlvci5maW5kKGV4dGVuc2lvbi5jX3N0cigpKTsKQEAgLTk0NSwyMCArODkyLDYgQEAgYm9v
bCBUUGFyc2VDb250ZXh0OjpzdXBwb3J0c0V4dGVuc2lvbihjbwogICAgIHJldHVybiAoaXRlciAh
PSBleHRiZWhhdmlvci5lbmQoKSk7CiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6aGFuZGxlRXh0
ZW5zaW9uRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBleHROYW1lLCBjb25zdCBjaGFy
KiBiZWhhdmlvcikKLXsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwotICAgIERlY29kZVNv
dXJjZUxvYyhsaW5lLCAmbG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGlyZWN0aXZlSGFuZGxl
ci5oYW5kbGVFeHRlbnNpb24obG9jLCBleHROYW1lLCBiZWhhdmlvcik7Ci19Ci0KLXZvaWQgVFBh
cnNlQ29udGV4dDo6aGFuZGxlUHJhZ21hRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBjaGFyKiB2YWx1ZSkKLXsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwot
ICAgIERlY29kZVNvdXJjZUxvYyhsaW5lLCAmbG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGly
ZWN0aXZlSGFuZGxlci5oYW5kbGVQcmFnbWEobG9jLCBuYW1lLCB2YWx1ZSk7Ci19Ci0KIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwogLy8KIC8vIE5vbi1FcnJvcnMuCkBAIC05NzAsNyArOTAzLDcg
QEAgdm9pZCBUUGFyc2VDb250ZXh0OjpoYW5kbGVQcmFnbWFEaXJlY3RpdgogLy8KIC8vIFJldHVy
biB0aGUgZnVuY3Rpb24gc3ltYm9sIGlmIGZvdW5kLCBvdGhlcndpc2UgMC4KIC8vCi1jb25zdCBU
RnVuY3Rpb24qIFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9u
KiBjYWxsLCBib29sICpidWlsdEluKQorY29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0Ojpm
aW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBib29s
ICpidWlsdEluKQogewogICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hl
Y2sgd2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgogICAgIC8vIGhpZGRlbiBieSBh
IHZhcmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgpAQCAtOTkyLDExICs5MjUsMzIgQEAg
Y29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuYwogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBURnVuY3Rpb24qPihzeW1ib2wpOwogfQogCitib29sIFRQYXJzZUNvbnRl
eHQ6OmlzVmFyaWFibGVCdWlsdEluKGNvbnN0IFRWYXJpYWJsZSogdmFyKQoreworICAgIGJvb2wg
YnVpbHRJbiA9IGZhbHNlOworICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8g
Y2hlY2sgd2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgorICAgIC8vIGhpZGRlbiBi
eSBhIHZhcmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgorICAgIGNvbnN0IFRTeW1ib2wq
IHN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQodmFyLT5nZXROYW1lKCksICZidWlsdEluKTsKKyAg
ICBpZiAoc3ltYm9sID09IDApIHsKKyAgICAgICAgc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZCh2
YXItPmdldE1hbmdsZWROYW1lKCksICZidWlsdEluKTsKKyAgICB9CisKKyAgICBpZiAoc3ltYm9s
ID09IDApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghc3ltYm9s
LT5pc1ZhcmlhYmxlKCkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiBidWlsdEluOworfQorCiAvLwogLy8gSW5pdGlhbGl6ZXJzIHNob3cgdXAgaW4gc2V2ZXJh
bCBwbGFjZXMgaW4gdGhlIGdyYW1tYXIuICBIYXZlIG9uZSBzZXQgb2YKIC8vIGNvZGUgdG8gaGFu
ZGxlIHRoZW0gaGVyZS4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXpl
cihUU291cmNlTG9jIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlw
ZSwgCitib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbml0aWFs
aXplciwgVEludGVybU5vZGUqJiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUqIHZhcmlhYmxlKQogewog
ICAgIFRUeXBlIHR5cGUgPSBUVHlwZShwVHlwZSk7CkBAIC0xMDQ4LDEzICsxMDAyLDcgQEAgYm9v
bCBUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIoVAogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50
VW5pb24oKSkgeyAKLSAgICAgICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB2YXJp
YWJsZS0+Z2V0Q29uc3RQb2ludGVyKCk7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlLmdldE9iamVj
dFNpemUoKSA9PSAxICYmIHR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7Ci0gICAg
ICAgICAgICAgICAgKnVuaW9uQXJyYXkgPSAoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlv
bigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKVswXTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgdmFyaWFibGUtPnNoYXJlQ29uc3RQb2ludGVyKGluaXRpYWxpemVyLT5n
ZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSk7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICB2YXJpYWJsZS0+c2hhcmVDb25zdFBvaW50ZXIoaW5pdGlhbGl6ZXIt
PmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKTsKICAgICAgICAg
fSBlbHNlIGlmIChpbml0aWFsaXplci0+Z2V0QXNTeW1ib2xOb2RlKCkpIHsKICAgICAgICAgICAg
IGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQoaW5pdGlhbGl6ZXItPmdl
dEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKSk7CiAgICAgICAgICAgICBjb25zdCBUVmFyaWFi
bGUqIHRWYXIgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOwpAQCAtMTEw
OCwxNiArMTA1NiwxNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QoVElu
CiAvLwogLy8gUmV0dXJucyAwIGZvciBhbiBlcnJvciBvciB0aGUgY29uc3RydWN0ZWQgbm9kZSAo
YWdncmVnYXRlIG9yIHR5cGVkKSBmb3Igbm8gZXJyb3IuCiAvLwotVEludGVybVR5cGVkKiBUUGFy
c2VDb250ZXh0OjphZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFR5cGUq
IHR5cGUsIFRPcGVyYXRvciBvcCwgVEZ1bmN0aW9uKiBmbkNhbGwsIFRTb3VyY2VMb2MgbGluZSkK
K1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUq
IG5vZGUsIGNvbnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRGdW5jdGlvbiogZm5DYWxs
LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGlmIChub2RlID09IDApCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgVEludGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUgPSBub2RlLT5nZXRB
c0FnZ3JlZ2F0ZSgpOwogICAgIAotICAgIFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVy
VHlwZXM7CisgICAgVEZpZWxkTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyRmllbGRzOwogICAg
IGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgIG1lbWJlclR5cGVzID0gdHlw
ZS0+Z2V0U3RydWN0KCktPmJlZ2luKCk7CisgICAgICAgIG1lbWJlckZpZWxkcyA9IHR5cGUtPmdl
dFN0cnVjdCgpLT5maWVsZHMoKS5iZWdpbigpOwogICAgIAogICAgIFRUeXBlIGVsZW1lbnRUeXBl
ID0gKnR5cGU7CiAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKQEAgLTExMzksNyArMTA4Nyw3IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5
cGUtPmlzQXJyYXkoKSkKICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9k
ZSwgJmVsZW1lbnRUeXBlLCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKICAgICAgICAgZWxz
ZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0KQotICAgICAgICAgICAgbmV3Tm9kZSA9IGNv
bnN0cnVjdFN0cnVjdChub2RlLCAoKm1lbWJlclR5cGVzKS50eXBlLCAxLCBub2RlLT5nZXRMaW5l
KCksIGZhbHNlKTsKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwg
KCptZW1iZXJGaWVsZHMpLT50eXBlKCksIDEsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBv
cCwgbm9kZSwgbm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7CiAKQEAgLTExNzAsNyArMTExOCw3IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5
cGUtPmlzQXJyYXkoKSkKICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAs
ICZlbGVtZW50VHlwZSwgcGFyYW1Db3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRydWUpOwogICAg
ICAgICBlbHNlIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgICAgICBuZXdO
b2RlID0gY29uc3RydWN0U3RydWN0KCpwLCAobWVtYmVyVHlwZXNbcGFyYW1Db3VudF0pLnR5cGUs
IHBhcmFtQ291bnQrMSwgbm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG5ld05v
ZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsIG1lbWJlckZpZWxkc1twYXJhbUNvdW50XS0+dHlwZSgp
LCBwYXJhbUNvdW50KzEsIG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCAqcCwgbm9kZS0+
Z2V0TGluZSgpLCB0cnVlKTsKICAgICAgICAgCkBAIC0xMjE2LDcgKzExNjQsNyBAQCBUSW50ZXJt
VHlwZWQqIFRQYXJzZUNvbnRleHQ6OmZvbGRDb25zdENvCiAvLwogLy8gUmV0dXJucyAwIGZvciBh
biBlcnJvciBvciB0aGUgY29uc3RydWN0ZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJz
ZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBv
cCwgVEludGVybU5vZGUqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSwgYm9vbCBzdWJzZXQpCitUSW50
ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5
cGUsIFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUsIGJvb2wgc3Vic2V0KQogewogICAgIFRJbnRlcm1UeXBlZCogbmV3Tm9kZTsKICAgICBUT3Bl
cmF0b3IgYmFzaWNPcDsKQEAgLTEyNzgsNyArMTIyNiw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNl
Q29udGV4dDo6Y29uc3RydWN0QnUKIC8vCiAvLyBSZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9yIHRo
ZSBpbnB1dCBub2RlIGl0c2VsZiBpZiB0aGUgZXhwZWN0ZWQgYW5kIHRoZSBnaXZlbiBwYXJhbWV0
ZXIgdHlwZXMgbWF0Y2guCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1
Y3RTdHJ1Y3QoVEludGVybU5vZGUqIG5vZGUsIFRUeXBlKiB0eXBlLCBpbnQgcGFyYW1Db3VudCwg
VFNvdXJjZUxvYyBsaW5lLCBib29sIHN1YnNldCkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4
dDo6Y29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiBub2RlLCBUVHlwZSogdHlwZSwgaW50IHBh
cmFtQ291bnQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQogewogICAgIGlm
ICgqdHlwZSA9PSBub2RlLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKSkgewogICAgICAgICBpZiAo
c3Vic2V0KQpAQCAtMTMwNSw3ICsxMjUzLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0
Ojpjb25zdHJ1Y3RTdAogLy8gbm9kZSBvciBpdCBjb3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRy
ZWUgcmVwcmVzZW50YXRpb24gb2YgYWNjZXNzaW5nIGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVj
dHVyZSBvciBjb2x1bW4gb2YgCiAvLyBhIGNvbnN0YW50IG1hdHJpeC4KIC8vCi1USW50ZXJtVHlw
ZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVs
ZHMsIFRJbnRlcm1UeXBlZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBU
UGFyc2VDb250ZXh0OjphZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBU
SW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVy
bVR5cGVkKiB0eXBlZE5vZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFu
dE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTEzMTMsNyArMTI2MSw2IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVu
aW9uICp1bmlvbkFycmF5OwogICAgIGlmICh0ZW1wQ29uc3RhbnROb2RlKSB7CiAgICAgICAgIHVu
aW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAg
ICAgICBBU1NFUlQodW5pb25BcnJheSk7CiAKICAgICAgICAgaWYgKCF1bmlvbkFycmF5KSB7CiAg
ICAgICAgICAgICByZXR1cm4gbm9kZTsKQEAgLTEzMjgsNyArMTI3NSw3IEBAIFRJbnRlcm1UeXBl
ZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bZmllbGRzLm51bV07CiAKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGZpZWxkcy5udW07IGkrKykgewotICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0g
Pj0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSkgeworICAgICAgICBpZiAoZmllbGRz
Lm9mZnNldHNbaV0gPj0gbm9kZS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkpIHsKICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAgIGV4
dHJhSW5mb1N0cmVhbSA8PCAidmVjdG9yIGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIg
PDwgZmllbGRzLm9mZnNldHNbaV0gPDwgIiciOwogICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0
cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwpAQCAtMTM1MCw3ICsxMjk3LDcgQEAgVElu
dGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFZlYwogLy8gdG8gdGhlIGZ1bmN0aW9u
IGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChtWzBdIHdoZXJlIG0gaXMgYSBjb25zdGFu
dCBtYXRyaXgpdGhhdCByZXByZXNlbnRzIGEgCiAvLyBjb25zdGFudCBtYXRyaXggb3IgaXQgY291
bGQgYmUgdGhlIHRyZWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnN0YW50IG1hdHJpeCAocy5t
MVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RNYXRyaXhOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVk
KiBub2RlLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFk
ZENvbnN0TWF0cml4Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNv
dXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZTsKICAgICBUSW50
ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRV
bmlvbigpOwpAQCAtMTM4NSw3ICsxMzMyLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0
OjphZGRDb25zdE1hdAogLy8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJv
bCBub2RlIChhWzBdIHdoZXJlIGEgaXMgYSBjb25zdGFudCBhcnJheSl0aGF0IHJlcHJlc2VudHMg
YSAKIC8vIGNvbnN0YW50IGFycmF5IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0
aW9uIG9mIHRoZSBjb25zdGFudCBhcnJheSAocy5hMVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQg
c3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJh
eU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJ
bnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBU
SW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVy
bVR5cGVkKiB0eXBlZE5vZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFu
dE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTE0MDEsOSArMTM0OCw4IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnIKICAgICAgICAgaW5kZXgg
PSAwOwogICAgIH0KIAotICAgIGludCBhcnJheUVsZW1lbnRTaXplID0gYXJyYXlFbGVtZW50VHlw
ZS5nZXRPYmplY3RTaXplKCk7Ci0KICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgeworICAgICAg
ICAgc2l6ZV90IGFycmF5RWxlbWVudFNpemUgPSBhcnJheUVsZW1lbnRUeXBlLmdldE9iamVjdFNp
emUoKTsKICAgICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnRO
b2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwogICAgICAgICAgdHlwZWROb2RlID0gaW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24oJnVuaW9uQXJyYXlbYXJyYXlFbGVtZW50U2l6ZSAqIGlu
ZGV4XSwgdGVtcENvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsKICAgICB9IGVsc2UgewpA
QCAtMTQyMiwyMiArMTM2OCwyMSBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENv
bnN0QXJyCiAvLyBJZiB0aGVyZSBpcyBhbiBlbWJlZGRlZC9uZXN0ZWQgc3RydWN0LCBpdCBhcHBy
b3ByaWF0ZWx5IGNhbGxzIGFkZENvbnN0U3RydWN0TmVzdGVkIG9yIGFkZENvbnN0U3RydWN0RnJv
bUFnZ3IKIC8vIGZ1bmN0aW9uIGFuZCByZXR1cm5zIHRoZSBwYXJzZS10cmVlIHdpdGggdGhlIHZh
bHVlcyBvZiB0aGUgZW1iZWRkZWQvbmVzdGVkIHN0cnVjdC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQ
YXJzZUNvbnRleHQ6OmFkZENvbnN0U3RydWN0KFRTdHJpbmcmIGlkZW50aWZpZXIsIFRJbnRlcm1U
eXBlZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0
OjphZGRDb25zdFN0cnVjdChUU3RyaW5nJiBpZGVudGlmaWVyLCBUSW50ZXJtVHlwZWQqIG5vZGUs
IGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7Ci0gICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMg
PSBub2RlLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgVEludGVybVR5cGVkICp0eXBlZE5v
ZGU7Ci0gICAgaW50IGluc3RhbmNlU2l6ZSA9IDA7Ci0gICAgdW5zaWduZWQgaW50IGluZGV4ID0g
MDsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdl
dEFzQ29uc3RhbnRVbmlvbigpOworICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IG5vZGUt
PmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICBmb3IgKCBpbmRleCA9IDA7
IGluZGV4IDwgZmllbGRzLT5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKCgqZmllbGRz
KVtpbmRleF0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gaWRlbnRpZmllcikgeworICAgIHNpemVf
dCBpbnN0YW5jZVNpemUgPSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBm
aWVsZHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChmaWVsZHNbaW5kZXhdLT5uYW1l
KCkgPT0gaWRlbnRpZmllcikgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0gKCpmaWVsZHMpW2luZGV4XS50eXBlLT5nZXRP
YmplY3RTaXplKCk7CisgICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0gZmllbGRzW2luZGV4XS0+
dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBUSW50ZXJt
VHlwZWQqIHR5cGVkTm9kZSA9IDA7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25z
dGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKICAgICBpZiAodGVtcENvbnN0
YW50Tm9kZSkgewogICAgICAgICAgQ29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHRlbXBDb25z
dGFudE5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAKQEAgLTE0NTIsNyArMTM5Nyw3IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RTdHIKICAgICByZXR1cm4gdHlw
ZWROb2RlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24o
aW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCitib29sIFRQYXJzZUNvbnRleHQ6
OmVudGVyU3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0
cmluZyYgaWRlbnRpZmllcikKIHsKICAgICArK3N0cnVjdE5lc3RpbmdMZXZlbDsKIApAQCAtMTQ3
OCwyMSArMTQyMywyMSBAQCBjb25zdCBpbnQga1dlYkdMTWF4U3RydWN0TmVzdGluZyA9IDQ7CiAK
IH0gIC8vIG5hbWVzcGFjZQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJv
ckNoZWNrKFRTb3VyY2VMb2MgbGluZSwgY29uc3QgVFR5cGUmIGZpZWxkVHlwZSkKK2Jvb2wgVFBh
cnNlQ29udGV4dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgY29uc3QgVEZpZWxkJiBmaWVsZCkKIHsKICAgICBpZiAoIWlzV2ViR0xCYXNlZFNwZWMoc2hh
ZGVyU3BlYykpIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChmaWVs
ZFR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7CisgICAgaWYgKGZpZWxkLnR5cGUo
KS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKICAgICAvLyBXZSdyZSBhbHJlYWR5IGluc2lkZSBhIHN0cnVjdHVyZSBkZWZpbml0
aW9uIGF0IHRoaXMgcG9pbnQsIHNvIGFkZAogICAgIC8vIG9uZSB0byB0aGUgZmllbGQncyBzdHJ1
Y3QgbmVzdGluZy4KLSAgICBpZiAoMSArIGZpZWxkVHlwZS5nZXREZWVwZXN0U3RydWN0TmVzdGlu
ZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgeworICAgIGlmICgxICsgZmllbGQudHlwZSgp
LT5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgewog
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJh
SW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGRUeXBlLmdl
dFR5cGVOYW1lKCkgCisgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0
cnVjdCB0eXBlICIgPDwgZmllbGQubmFtZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
IGV4Y2VlZHMgbWF4aW11bSBzdHJ1Y3QgbmVzdGluZyBvZiAiIDw8IGtXZWJHTE1heFN0cnVjdE5l
c3Rpbmc7CiAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5z
dHIoKTsKICAgICAgICAgZXJyb3IobGluZSwgIiIsICIiLCBleHRyYUluZm8uY19zdHIoKSk7Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VI
ZWxwZXIuaAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL1BhcnNlSGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMyw4IEBA
IHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKICAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zKG9wdGlv
bnMpLAogICAgICAgICAgICAgc291cmNlUGF0aChzb3VyY2VQYXRoKSwKICAgICAgICAgICAgIHRy
ZWVSb290KDApLAotICAgICAgICAgICAgbGV4QWZ0ZXJUeXBlKGZhbHNlKSwKICAgICAgICAgICAg
IGxvb3BOZXN0aW5nTGV2ZWwoMCksCiAgICAgICAgICAgICBzdHJ1Y3ROZXN0aW5nTGV2ZWwoMCks
Ci0gICAgICAgICAgICBpblR5cGVQYXJlbihmYWxzZSksCiAgICAgICAgICAgICBjdXJyZW50RnVu
Y3Rpb25UeXBlKE5VTEwpLAogICAgICAgICAgICAgZnVuY3Rpb25SZXR1cm5zVmFsdWUoZmFsc2Up
LAogICAgICAgICAgICAgY2hlY2tzUHJlY2lzaW9uRXJyb3JzKGNoZWNrc1ByZWNFcnJvcnMpLApA
QCAtNTEsMTYgKzQ5LDEzIEBAIHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKICAgICBpbnQgY29tcGls
ZU9wdGlvbnM7CiAgICAgY29uc3QgY2hhciogc291cmNlUGF0aDsgICAgICAvLyBQYXRoIG9mIHNv
dXJjZSBmaWxlIG9yIE5VTEwuCiAgICAgVEludGVybU5vZGUqIHRyZWVSb290OyAgICAgICAvLyBy
b290IG9mIHBhcnNlIHRyZWUgYmVpbmcgY3JlYXRlZAotICAgIGJvb2wgbGV4QWZ0ZXJUeXBlOyAg
ICAgICAgICAgLy8gdHJ1ZSBpZiB3ZSd2ZSByZWNvZ25pemVkIGEgdHlwZSwgc28gY2FuIG9ubHkg
YmUgbG9va2luZyBmb3IgYW4gaWRlbnRpZmllcgogICAgIGludCBsb29wTmVzdGluZ0xldmVsOyAg
ICAgICAgLy8gMCBpZiBvdXRzaWRlIGFsbCBsb29wcwogICAgIGludCBzdHJ1Y3ROZXN0aW5nTGV2
ZWw7ICAgICAgLy8gaW5jcmVtZW50ZWQgd2hpbGUgcGFyc2luZyBhIHN0cnVjdCBkZWNsYXJhdGlv
bgotICAgIGJvb2wgaW5UeXBlUGFyZW47ICAgICAgICAgICAgLy8gdHJ1ZSBpZiBpbiBwYXJlbnRo
ZXNlcywgbG9va2luZyBvbmx5IGZvciBhbiBpZGVudGlmaWVyCiAgICAgY29uc3QgVFR5cGUqIGN1
cnJlbnRGdW5jdGlvblR5cGU7ICAvLyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRo
YXQncyBjdXJyZW50bHkgYmVpbmcgcGFyc2VkCiAgICAgYm9vbCBmdW5jdGlvblJldHVybnNWYWx1
ZTsgICAvLyB0cnVlIGlmIGEgbm9uLXZvaWQgZnVuY3Rpb24gaGFzIGEgcmV0dXJuCiAgICAgYm9v
bCBjaGVja3NQcmVjaXNpb25FcnJvcnM7ICAvLyB0cnVlIGlmIGFuIGVycm9yIHdpbGwgYmUgZ2Vu
ZXJhdGVkIHdoZW4gYSB2YXJpYWJsZSBpcyBkZWNsYXJlZCB3aXRob3V0IHByZWNpc2lvbiwgZXhw
bGljaXQgb3IgaW1wbGljaXQuCiAgICAgYm9vbCBmcmFnbWVudFByZWNpc2lvbkhpZ2g7ICAvLyB0
cnVlIGlmIGhpZ2hwIHByZWNpc2lvbiBpcyBzdXBwb3J0ZWQgaW4gdGhlIGZyYWdtZW50IGxhbmd1
YWdlLgogICAgIFRTdHJpbmcgSGFzaEVyck1zZzsKLSAgICBib29sIEFmdGVyRU9GOwogICAgIFRE
aWFnbm9zdGljcyBkaWFnbm9zdGljczsKICAgICBURGlyZWN0aXZlSGFuZGxlciBkaXJlY3RpdmVI
YW5kbGVyOwogICAgIHBwOjpQcmVwcm9jZXNzb3IgcHJlcHJvY2Vzc29yOwpAQCAtNjgsNzEgKzYz
LDY4IEBAIHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKIAogICAgIGludCBudW1FcnJvcnMoKSBjb25z
dCB7IHJldHVybiBkaWFnbm9zdGljcy5udW1FcnJvcnMoKTsgfQogICAgIFRJbmZvU2luayYgaW5m
b1NpbmsoKSB7IHJldHVybiBkaWFnbm9zdGljcy5pbmZvU2luaygpOyB9Ci0gICAgdm9pZCBlcnJv
cihUU291cmNlTG9jIGxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwK
KyAgICB2b2lkIGVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywgY29uc3QgY2hhciAqcmVhc29u
LCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5m
bz0iIik7Ci0gICAgdm9pZCB3YXJuaW5nKFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyKiByZWFz
b24sIGNvbnN0IGNoYXIqIHRva2VuLAorICAgIHZvaWQgd2FybmluZyhjb25zdCBUU291cmNlTG9j
JiBsb2MsIGNvbnN0IGNoYXIqIHJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCiAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5mbz0iIik7CiAgICAgdm9pZCB0cmFjZShjb25zdCBj
aGFyKiBzdHIpOwogICAgIHZvaWQgcmVjb3ZlcigpOwogCi0gICAgYm9vbCBwYXJzZVZlY3RvckZp
ZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBpbnQgbGlu
ZSk7Ci0gICAgYm9vbCBwYXJzZU1hdHJpeEZpZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IG1hdFNp
emUsIFRNYXRyaXhGaWVsZHMmLCBpbnQgbGluZSk7CisgICAgYm9vbCBwYXJzZVZlY3RvckZpZWxk
cyhjb25zdCBUU3RyaW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291
cmNlTG9jJiBsaW5lKTsKKyAgICBib29sIHBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcm
LCBpbnQgbWF0U2l6ZSwgVE1hdHJpeEZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpOwog
Ci0gICAgYm9vbCByZXNlcnZlZEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlk
ZW50aWZpZXIpOwotICAgIHZvaWQgYXNzaWduRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9w
LCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOwotICAgIHZvaWQgdW5hcnlPcEVycm9yKGlu
dCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKTsKLSAgICB2b2lkIGJpbmFy
eU9wRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcg
cmlnaHQpOwotICAgIGJvb2wgcHJlY2lzaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgVFByZWNpc2lv
biBwcmVjaXNpb24sIFRCYXNpY1R5cGUgdHlwZSk7Ci0gICAgYm9vbCBsVmFsdWVFcnJvckNoZWNr
KGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CisgICAgYm9vbCByZXNl
cnZlZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRl
bnRpZmllcik7CisgICAgdm9pZCBhc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBj
b25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKKyAgICB2b2lkIHVu
YXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmlu
ZyBvcGVyYW5kKTsKKyAgICB2b2lkIGJpbmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7CisgICAgYm9v
bCBwcmVjaXNpb25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24g
cHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5cGUpOworICAgIGJvb2wgbFZhbHVlRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CiAg
ICAgYm9vbCBjb25zdEVycm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlKTsKICAgICBib29sIGlu
dGVnZXJFcnJvckNoZWNrKFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgY2hhciogdG9rZW4pOwot
ICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhpbnQgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNo
YXIqIHRva2VuKTsKLSAgICBib29sIGNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQgbGluZSwgVElu
dGVybU5vZGUqLCBURnVuY3Rpb24mLCBUT3BlcmF0b3IsIFRUeXBlKik7Ci0gICAgYm9vbCBhcnJh
eVNpemVFcnJvckNoZWNrKGludCBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7
Ci0gICAgYm9vbCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIFRQdWJsaWNUeXBl
IHR5cGUpOwotICAgIGJvb2wgYXJyYXlUeXBlRXJyb3JDaGVjayhpbnQgbGluZSwgVFB1YmxpY1R5
cGUgdHlwZSk7Ci0gICAgYm9vbCBhcnJheUVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlk
ZW50aWZpZXIsIFRQdWJsaWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKLSAgICBi
b29sIHZvaWRFcnJvckNoZWNrKGludCwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRQdWJsaWNUeXBl
Jik7Ci0gICAgYm9vbCBib29sRXJyb3JDaGVjayhpbnQsIGNvbnN0IFRJbnRlcm1UeXBlZCopOwot
ICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soaW50LCBjb25zdCBUUHVibGljVHlwZSYpOwotICAgIGJv
b2wgc2FtcGxlckVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwg
Y29uc3QgY2hhciogcmVhc29uKTsKLSAgICBib29sIHN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
aW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSk7Ci0gICAgYm9vbCBwYXJhbWV0ZXJT
YW1wbGVyRXJyb3JDaGVjayhpbnQgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRU
eXBlJiB0eXBlKTsKLSAgICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRT
dHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KTsKLSAgICBi
b29sIG5vbkluaXRFcnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVi
bGljVHlwZSYgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOwotICAgIGJvb2wgcGFyYW1FcnJv
ckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1
YWxpZmllciwgVFR5cGUqIHR5cGUpOwotICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQg
bGluZSwgY29uc3QgVFN0cmluZyYpOworICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pOworICAgIGJv
b2wgY29uc3RydWN0b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1O
b2RlKiwgVEZ1bmN0aW9uJiwgVE9wZXJhdG9yLCBUVHlwZSopOworICAgIGJvb2wgYXJyYXlTaXpl
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGlu
dCYgc2l6ZSk7CisgICAgYm9vbCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBhcnJheVR5cGVFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOworICAgIGJvb2wg
YXJyYXlFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZp
ZXIsIFRQdWJsaWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHZv
aWRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFB1
YmxpY1R5cGUmKTsKKyAgICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBj
b25zdCBUSW50ZXJtVHlwZWQqKTsKKyAgICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmLCBjb25zdCBUUHVibGljVHlwZSYpOworICAgIGJvb2wgc2FtcGxlckVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBj
aGFyKiByZWFzb24pOworICAgIGJvb2wgc3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpOworICAgIGJvb2wgcGFy
YW1ldGVyU2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmll
ciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlJiB0eXBlKTsKKyAgICBib29sIG5vbkluaXRDb25zdEVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1
YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpOworICAgIGJvb2wgbm9uSW5pdEVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUm
IHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHBhcmFtRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBw
YXJhbVF1YWxpZmllciwgVFR5cGUqIHR5cGUpOworICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJik7CiAKKyAgICBjb25zdCBU
UHJhZ21hJiBwcmFnbWEoKSBjb25zdCB7IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLnByYWdtYSgp
OyB9CiAgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBleHRlbnNpb25CZWhhdmlvcigpIGNv
bnN0IHsgcmV0dXJuIGRpcmVjdGl2ZUhhbmRsZXIuZXh0ZW5zaW9uQmVoYXZpb3IoKTsgfQogICAg
IGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9uKTsKLSAgICB2b2lk
IGhhbmRsZUV4dGVuc2lvbkRpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogZXh0TmFtZSwg
Y29uc3QgY2hhciogYmVoYXZpb3IpOwotCi0gICAgY29uc3QgVFByYWdtYSYgcHJhZ21hKCkgY29u
c3QgeyByZXR1cm4gZGlyZWN0aXZlSGFuZGxlci5wcmFnbWEoKTsgfQotICAgIHZvaWQgaGFuZGxl
UHJhZ21hRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2
YWx1ZSk7CiAKICAgICBib29sIGNvbnRhaW5zU2FtcGxlcihUVHlwZSYgdHlwZSk7CiAgICAgYm9v
bCBhcmVBbGxDaGlsZENvbnN0KFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlKTsKLSAgICBjb25z
dCBURnVuY3Rpb24qIGZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBi
b29sICpidWlsdEluID0gMCk7Ci0gICAgYm9vbCBleGVjdXRlSW5pdGlhbGl6ZXIoVFNvdXJjZUxv
YyBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsCisgICAgY29u
c3QgVEZ1bmN0aW9uKiBmaW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0
aW9uKiBwZm5DYWxsLCBib29sICpidWlsdEluID0gMCk7CisgICAgYm9vbCBpc1ZhcmlhYmxlQnVp
bHRJbihjb25zdCBUVmFyaWFibGUqIHBWYXIpOworICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxpemVy
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
JiBwVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluaXRp
YWxpemVyLCBUSW50ZXJtTm9kZSomIGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFyaWFibGUgPSAw
KTsKLSAgICBib29sIGFycmF5U2V0TWF4U2l6ZShUSW50ZXJtU3ltYm9sKiwgVFR5cGUqLCBpbnQs
IGJvb2wsIFRTb3VyY2VMb2MpOwogCi0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdHJ1Y3RvcihU
SW50ZXJtTm9kZSosIGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBURnVuY3Rpb24qLCBUU291cmNl
TG9jKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0cnVjdG9yKFRJbnRlcm1Ob2RlKiwgY29u
c3QgVFR5cGUqLCBUT3BlcmF0b3IsIFRGdW5jdGlvbiosIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAg
ICBUSW50ZXJtVHlwZWQqIGZvbGRDb25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUqIGFn
Z3JOb2RlLCBjb25zdCBUVHlwZSYgdHlwZSk7Ci0gICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RT
dHJ1Y3QoVEludGVybU5vZGUqLCBUVHlwZSosIGludCwgVFNvdXJjZUxvYywgYm9vbCBzdWJzZXQp
OwotICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSosIFRPcGVy
YXRvciwgVEludGVybU5vZGUqLCBUU291cmNlTG9jLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVy
bVR5cGVkKiBhZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCos
IFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhOb2RlKGludCAs
IFRJbnRlcm1UeXBlZCosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RB
cnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSk7
Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJbnRlcm1UeXBl
ZCosIFRTb3VyY2VMb2MpOworICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0U3RydWN0KFRJbnRl
cm1Ob2RlKiwgVFR5cGUqLCBpbnQsIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7Cisg
ICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9y
LCBUSW50ZXJtTm9kZSosIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7CisgICAgVElu
dGVybVR5cGVkKiBhZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBl
ZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0TWF0cml4
Tm9kZShpbnQgLCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVy
bVR5cGVkKiBhZGRDb25zdEFycmF5Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwg
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSk7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVj
dChUU3RyaW5nJiAsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKIAogICAgIC8v
IFBlcmZvcm1zIGFuIGVycm9yIGNoZWNrIGZvciBlbWJlZGRlZCBzdHJ1Y3QgZGVjbGFyYXRpb25z
LgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbiBlcnJvciB3YXMgcmFpc2VkIGR1ZSB0byB0aGUg
ZGVjbGFyYXRpb24gb2YKICAgICAvLyB0aGlzIHN0cnVjdC4KLSAgICBib29sIGVudGVyU3RydWN0
RGVjbGFyYXRpb24oVFNvdXJjZUxvYyBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsK
KyAgICBib29sIGVudGVyU3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Y29uc3QgVFN0cmluZyYgaWRlbnRpZmllcik7CiAgICAgdm9pZCBleGl0U3RydWN0RGVjbGFyYXRp
b24oKTsKIAotICAgIGJvb2wgc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soVFNvdXJjZUxvYyBsaW5l
LCBjb25zdCBUVHlwZSYgZmllbGRUeXBlKTsKKyAgICBib29sIHN0cnVjdE5lc3RpbmdFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQpOwogfTsKIAog
aW50IFBhUGFyc2VTdHJpbmdzKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5n
W10sIGNvbnN0IGludCBsZW5ndGhbXSwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Qb29sQWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuY3BwCShyZXZpc2lvbiAxNTI1OTUpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI4LDI0ICsyMjgsMjcgQEAgdm9pZCBUUG9vbEFsbG9jYXRvcjo6cG9wQWxs
KCkKIAogdm9pZCogVFBvb2xBbGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBudW1CeXRlcykKIHsK
KyAgICAvLworICAgIC8vIEp1c3Qga2VlcCBzb21lIGludGVyZXN0aW5nIHN0YXRpc3RpY3MuCisg
ICAgLy8KKyAgICArK251bUNhbGxzOworICAgIHRvdGFsQnl0ZXMgKz0gbnVtQnl0ZXM7CisKICAg
ICAvLyBJZiB3ZSBhcmUgdXNpbmcgZ3VhcmQgYmxvY2tzLCBhbGwgYWxsb2NhdGlvbnMgYXJlIGJy
YWNrZXRlZCBieQogICAgIC8vIHRoZW06IFtndWFyZGJsb2NrXVthbGxvY2F0aW9uXVtndWFyZGJs
b2NrXS4gIG51bUJ5dGVzIGlzIGhvdwogICAgIC8vIG11Y2ggbWVtb3J5IHRoZSBjYWxsZXIgYXNr
ZWQgZm9yLiAgYWxsb2NhdGlvblNpemUgaXMgdGhlIHRvdGFsCiAgICAgLy8gc2l6ZSBpbmNsdWRp
bmcgZ3VhcmQgYmxvY2tzLiAgSW4gcmVsZWFzZSBidWlsZCwKICAgICAvLyBndWFyZEJsb2NrU2l6
ZT0wIGFuZCB0aGlzIGFsbCBnZXRzIG9wdGltaXplZCBhd2F5LgogICAgIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZSA9IFRBbGxvY2F0aW9uOjphbGxvY2F0aW9uU2l6ZShudW1CeXRlcyk7Ci0gICAgCi0g
ICAgLy8KLSAgICAvLyBKdXN0IGtlZXAgc29tZSBpbnRlcmVzdGluZyBzdGF0aXN0aWNzLgotICAg
IC8vCi0gICAgKytudW1DYWxsczsKLSAgICB0b3RhbEJ5dGVzICs9IG51bUJ5dGVzOworICAgIC8v
IERldGVjdCBpbnRlZ2VyIG92ZXJmbG93LgorICAgIGlmIChhbGxvY2F0aW9uU2l6ZSA8IG51bUJ5
dGVzKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vCiAgICAgLy8gRG8gdGhlIGFsbG9jYXRp
b24sIG1vc3QgbGlrZWx5IGNhc2UgZmlyc3QsIGZvciBlZmZpY2llbmN5LgogICAgIC8vIFRoaXMg
c3RlcCBjb3VsZCBiZSBtb3ZlZCB0byBiZSBpbmxpbmUgc29tZXRpbWUuCiAgICAgLy8KLSAgICBp
ZiAoY3VycmVudFBhZ2VPZmZzZXQgKyBhbGxvY2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSkgeworICAg
IGlmIChhbGxvY2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSAtIGN1cnJlbnRQYWdlT2Zmc2V0KSB7CiAg
ICAgICAgIC8vCiAgICAgICAgIC8vIFNhZmUgdG8gYWxsb2NhdGUgZnJvbSBjdXJyZW50UGFnZU9m
ZnNldC4KICAgICAgICAgLy8KQEAgLTI1NiwxMiArMjU5LDE2IEBAIHZvaWQqIFRQb29sQWxsb2Nh
dG9yOjphbGxvY2F0ZShzaXplX3QgbnUKICAgICAgICAgcmV0dXJuIGluaXRpYWxpemVBbGxvY2F0
aW9uKGluVXNlTGlzdCwgbWVtb3J5LCBudW1CeXRlcyk7CiAgICAgfQogCi0gICAgaWYgKGFsbG9j
YXRpb25TaXplICsgaGVhZGVyU2tpcCA+IHBhZ2VTaXplKSB7CisgICAgaWYgKGFsbG9jYXRpb25T
aXplID4gcGFnZVNpemUgLSBoZWFkZXJTa2lwKSB7CiAgICAgICAgIC8vCiAgICAgICAgIC8vIERv
IGEgbXVsdGktcGFnZSBhbGxvY2F0aW9uLiAgRG9uJ3QgbWl4IHRoZXNlIHdpdGggdGhlIG90aGVy
cy4KICAgICAgICAgLy8gVGhlIE9TIGlzIGVmZmljaWVudCBhbmQgYWxsb2NhdGluZyBhbmQgZnJl
ZS1pbmcgbXVsdGlwbGUgcGFnZXMuCiAgICAgICAgIC8vCiAgICAgICAgIHNpemVfdCBudW1CeXRl
c1RvQWxsb2MgPSBhbGxvY2F0aW9uU2l6ZSArIGhlYWRlclNraXA7CisgICAgICAgIC8vIERldGVj
dCBpbnRlZ2VyIG92ZXJmbG93LgorICAgICAgICBpZiAobnVtQnl0ZXNUb0FsbG9jIDwgYWxsb2Nh
dGlvblNpemUpCisgICAgICAgICAgICByZXR1cm4gMDsKKwogICAgICAgICB0SGVhZGVyKiBtZW1v
cnkgPSByZWludGVycHJldF9jYXN0PHRIZWFkZXIqPig6Om5ldyBjaGFyW251bUJ5dGVzVG9BbGxv
Y10pOwogICAgICAgICBpZiAobWVtb3J5ID09IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5o
CShyZXZpc2lvbiAxNTI1OTUpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvU2hIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtODEsOCArODEsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCBJbml0QnVpbHRJblN5bWJvbFRhYmxlKGNvbnN0IFNoQnVpbHRJblJlc291cmNl
cyYgcmVzb3VyY2VzKTsKICAgICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgZnJvbSB0aGUgcHJldmlv
dXMgY29tcGlsYXRpb24uCiAgICAgdm9pZCBjbGVhclJlc3VsdHMoKTsKLSAgICAvLyBSZXR1cm4g
dHJ1ZSBpZiBmdW5jdGlvbiByZWN1cnNpb24gaXMgZGV0ZWN0ZWQuCi0gICAgYm9vbCBkZXRlY3RS
ZWN1cnNpb24oVEludGVybU5vZGUqIHJvb3QpOworICAgIC8vIFJldHVybiB0cnVlIGlmIGZ1bmN0
aW9uIHJlY3Vyc2lvbiBpcyBkZXRlY3RlZCBvciBjYWxsIGRlcHRoIGV4Y2VlZGVkLgorICAgIGJv
b2wgZGV0ZWN0Q2FsbERlcHRoKFRJbnRlcm1Ob2RlKiByb290LCBUSW5mb1NpbmsmIGluZm9TaW5r
LCBib29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgpOwogICAgIC8vIFJld3JpdGVzIGEgc2hhZGVyJ3Mg
aW50ZXJtZWRpYXRlIHRyZWUgYWNjb3JkaW5nIHRvIHRoZSBDU1MgU2hhZGVycyBzcGVjLgogICAg
IHZvaWQgcmV3cml0ZUNTU1NoYWRlcihUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBnaXZlbiBzaGFkZXIgZG9lcyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtCkBA
IC0xMDQsNiArMTA0LDggQEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUg
c2hhZGVyIGRvZXMgbm90IHVzZSBzYW1wbGVyIGRlcGVuZGVudCB2YWx1ZXMgdG8gYWZmZWN0IGNv
bnRyb2wgCiAgICAgLy8gZmxvdyBvciBpbiBvcGVyYXRpb25zIHdob3NlIHRpbWUgY2FuIGRlcGVu
ZCBvbiB0aGUgaW5wdXQgdmFsdWVzLgogICAgIGJvb2wgZW5mb3JjZUZyYWdtZW50U2hhZGVyVGlt
aW5nUmVzdHJpY3Rpb25zKGNvbnN0IFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKTsKKyAgICAvLyBS
ZXR1cm4gdHJ1ZSBpZiB0aGUgbWF4aW11bSBleHByZXNzaW9uIGNvbXBsZXhpdHkgYmVsb3cgdGhl
IGxpbWl0LgorICAgIGJvb2wgbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSog
cm9vdCk7CiAgICAgLy8gR2V0IGJ1aWx0LWluIGV4dGVuc2lvbnMgd2l0aCBkZWZhdWx0IGJlaGF2
aW9yLgogICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZ2V0RXh0ZW5zaW9uQmVoYXZpb3Io
KSBjb25zdDsKIApAQCAtMTE2LDYgKzExOCw4IEBAIHByaXZhdGU6CiAgICAgU2hTaGFkZXJTcGVj
IHNoYWRlclNwZWM7CiAKICAgICBpbnQgbWF4VW5pZm9ybVZlY3RvcnM7CisgICAgaW50IG1heEV4
cHJlc3Npb25Db21wbGV4aXR5OworICAgIGludCBtYXhDYWxsU3RhY2tEZXB0aDsKIAogICAgIC8v
IEJ1aWx0LWluIHN5bWJvbCB0YWJsZSBmb3IgdGhlIGdpdmVuIGxhbmd1YWdlLCBzcGVjLCBhbmQg
cmVzb3VyY2VzLgogICAgIC8vIEl0IGlzIHByZXNlcnZlZCBmcm9tIGNvbXBpbGUtdG8tY29tcGls
ZS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
U2hhZGVyTGFuZy5jcHAJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYg
KzEyNiw3IEBAIHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXMKICAgICBy
ZXNvdXJjZXMtPk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgPSAwOwogICAgIHJlc291cmNlcy0+QVJC
X3RleHR1cmVfcmVjdGFuZ2xlID0gMDsKICAgICByZXNvdXJjZXMtPkVYVF9kcmF3X2J1ZmZlcnMg
PSAwOworICAgIHJlc291cmNlcy0+RVhUX2ZyYWdfZGVwdGggPSAwOwogCiAgICAgLy8gRGlzYWJs
ZSBoaWdocCBwcmVjaXNpb24gaW4gZnJhZ21lbnQgc2hhZGVyIGJ5IGRlZmF1bHQuCiAgICAgcmVz
b3VyY2VzLT5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPSAwOwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lv
biAxNTI1OTUpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9s
VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw0OCArMTcsMzQgQEAKIAogI2luY2x1ZGUg
PHN0ZGlvLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xl
dXRpbHMuaCIKKyNpbmNsdWRlIDxjbGltaXRzPgogCiBUVHlwZTo6VFR5cGUoY29uc3QgVFB1Ymxp
Y1R5cGUgJnApIDoKLSAgICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lzaW9uKHAucHJlY2lz
aW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBtYXRyaXgocC5tYXRy
aXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwKLSAgICAgICAgICAg
IG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVyZSgwKSwg
c3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwg
bWFuZ2xlZCgwKSwgdHlwZU5hbWUoMCkKKyAgICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lz
aW9uKHAucHJlY2lzaW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBt
YXRyaXgocC5tYXRyaXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwg
c3RydWN0dXJlKDApCiB7Ci0gICAgaWYgKHAudXNlckRlZikgeworICAgIGlmIChwLnVzZXJEZWYp
CiAgICAgICAgIHN0cnVjdHVyZSA9IHAudXNlckRlZi0+Z2V0U3RydWN0KCk7Ci0gICAgICAgIHR5
cGVOYW1lID0gTmV3UG9vbFRTdHJpbmcocC51c2VyRGVmLT5nZXRUeXBlTmFtZSgpLmNfc3RyKCkp
OwotICAgICAgICBjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsKLSAgICB9CiB9CiAKIC8v
CiAvLyBSZWN1cnNpdmVseSBnZW5lcmF0ZSBtYW5nbGVkIG5hbWVzLgogLy8KLXZvaWQgVFR5cGU6
OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYgbWFuZ2xlZE5hbWUpCitUU3RyaW5nIFRUeXBlOjpi
dWlsZE1hbmdsZWROYW1lKCkgY29uc3QKIHsKKyAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAg
IGlmIChpc01hdHJpeCgpKQogICAgICAgICBtYW5nbGVkTmFtZSArPSAnbSc7CiAgICAgZWxzZSBp
ZiAoaXNWZWN0b3IoKSkKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ3YnOwogCiAgICAgc3dpdGNo
ICh0eXBlKSB7Ci0gICAgY2FzZSBFYnRGbG9hdDogICAgICAgICAgICAgIG1hbmdsZWROYW1lICs9
ICdmJzsgICAgICBicmVhazsKLSAgICBjYXNlIEVidEludDogICAgICAgICAgICAgICAgbWFuZ2xl
ZE5hbWUgKz0gJ2knOyAgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0Qm9vbDogICAgICAgICAgICAg
ICBtYW5nbGVkTmFtZSArPSAnYic7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRTYW1wbGVyMkQ6
ICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJzMiI7ICAgICBicmVhazsKLSAgICBjYXNlIEVidFNh
bXBsZXJDdWJlOiAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInNDIjsgICAgIGJyZWFrOwotICAgIGNh
c2UgRWJ0U3RydWN0OgotICAgICAgICBtYW5nbGVkTmFtZSArPSAic3RydWN0LSI7Ci0gICAgICAg
IGlmICh0eXBlTmFtZSkKLSAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICp0eXBlTmFtZTsKLSAg
ICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBt
YW5nbGVkTmFtZSArPSAnLSc7Ci0gICAgICAgICAgICAgICAgKCpzdHJ1Y3R1cmUpW2ldLnR5cGUt
PmJ1aWxkTWFuZ2xlZE5hbWUobWFuZ2xlZE5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRGbG9hdDogICAgICAg
bWFuZ2xlZE5hbWUgKz0gJ2YnOyAgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0SW50OiAgICAgICAg
IG1hbmdsZWROYW1lICs9ICdpJzsgICAgICBicmVhazsKKyAgICBjYXNlIEVidEJvb2w6ICAgICAg
ICBtYW5nbGVkTmFtZSArPSAnYic7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRTYW1wbGVyMkQ6
ICAgbWFuZ2xlZE5hbWUgKz0gInMyIjsgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0U2FtcGxlckN1
YmU6IG1hbmdsZWROYW1lICs9ICJzQyI7ICAgICBicmVhazsKKyAgICBjYXNlIEVidFN0cnVjdDog
ICAgICBtYW5nbGVkTmFtZSArPSBzdHJ1Y3R1cmUtPm1hbmdsZWROYW1lKCk7IGJyZWFrOworICAg
IGRlZmF1bHQ6ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIG1hbmdsZWROYW1lICs9
IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIGdldE5vbWluYWxTaXplKCkpOwpAQCAtNjksNTMgKzU1
LDcyIEBAIHZvaWQgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYgbWEKICAgICAgICAg
bWFuZ2xlZE5hbWUgKz0gYnVmOwogICAgICAgICBtYW5nbGVkTmFtZSArPSAnXSc7CiAgICAgfQor
ICAgIHJldHVybiBtYW5nbGVkTmFtZTsKIH0KIAotaW50IFRUeXBlOjpnZXRTdHJ1Y3RTaXplKCkg
Y29uc3QKK3NpemVfdCBUVHlwZTo6Z2V0T2JqZWN0U2l6ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFn
ZXRTdHJ1Y3QoKSkgewotICAgICAgICBhc3NlcnQoZmFsc2UgJiYgIk5vdCBhIHN0cnVjdCIpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7CiAKLSAg
ICBpZiAoc3RydWN0dXJlU2l6ZSA9PSAwKQotICAgICAgICBmb3IgKFRUeXBlTGlzdDo6Y29uc3Rf
aXRlcmF0b3IgdGwgPSBnZXRTdHJ1Y3QoKS0+YmVnaW4oKTsgdGwgIT0gZ2V0U3RydWN0KCktPmVu
ZCgpOyB0bCsrKQotICAgICAgICAgICAgc3RydWN0dXJlU2l6ZSArPSAoKCp0bCkudHlwZSktPmdl
dE9iamVjdFNpemUoKTsKKyAgICBpZiAoZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQorICAg
ICAgICB0b3RhbFNpemUgPSBzdHJ1Y3R1cmUtPm9iamVjdFNpemUoKTsKKyAgICBlbHNlIGlmICht
YXRyaXgpCisgICAgICAgIHRvdGFsU2l6ZSA9IHNpemUgKiBzaXplOworICAgIGVsc2UKKyAgICAg
ICAgdG90YWxTaXplID0gc2l6ZTsKKworICAgIGlmIChpc0FycmF5KCkpIHsKKyAgICAgICAgc2l6
ZV90IGFycmF5U2l6ZSA9IGdldEFycmF5U2l6ZSgpOworICAgICAgICBpZiAoYXJyYXlTaXplID4g
SU5UX01BWCAvIHRvdGFsU2l6ZSkKKyAgICAgICAgICAgIHRvdGFsU2l6ZSA9IElOVF9NQVg7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRvdGFsU2l6ZSAqPSBhcnJheVNpemU7CisgICAgfQog
Ci0gICAgcmV0dXJuIHN0cnVjdHVyZVNpemU7CisgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAot
dm9pZCBUVHlwZTo6Y29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkKK2Jvb2wgVFN0cnVjdHVy
ZTo6Y29udGFpbnNBcnJheXMoKSBjb25zdAogewotICAgIGlmICghZ2V0U3RydWN0KCkpIHsKLSAg
ICAgICAgcmV0dXJuOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZpZWxkcy0+c2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqbUZpZWxkcylbaV0t
PnR5cGUoKTsKKyAgICAgICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJheSgpIHx8IGZpZWxkVHlwZS0+
aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQogCi0gICAgaW50IG1heE5lc3RpbmcgPSAwOwot
ICAgIGZvciAoVFR5cGVMaXN0Ojpjb25zdF9pdGVyYXRvciB0bCA9IGdldFN0cnVjdCgpLT5iZWdp
bigpOyB0bCAhPSBnZXRTdHJ1Y3QoKS0+ZW5kKCk7ICsrdGwpIHsKLSAgICAgICAgbWF4TmVzdGlu
ZyA9IHN0ZDo6bWF4KG1heE5lc3RpbmcsICgoKnRsKS50eXBlKS0+Z2V0RGVlcGVzdFN0cnVjdE5l
c3RpbmcoKSk7CitUU3RyaW5nIFRTdHJ1Y3R1cmU6OmJ1aWxkTWFuZ2xlZE5hbWUoKSBjb25zdAor
eworICAgIFRTdHJpbmcgbWFuZ2xlZE5hbWUoInN0cnVjdC0iKTsKKyAgICBtYW5nbGVkTmFtZSAr
PSAqbU5hbWU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsr
aSkgeworICAgICAgICBtYW5nbGVkTmFtZSArPSAnLSc7CisgICAgICAgIG1hbmdsZWROYW1lICs9
ICgqbUZpZWxkcylbaV0tPnR5cGUoKS0+Z2V0TWFuZ2xlZE5hbWUoKTsKICAgICB9Ci0KLSAgICBk
ZWVwZXN0U3RydWN0TmVzdGluZyA9IDEgKyBtYXhOZXN0aW5nOworICAgIHJldHVybiBtYW5nbGVk
TmFtZTsKIH0KIAotYm9vbCBUVHlwZTo6aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkgY29u
c3QKK3NpemVfdCBUU3RydWN0dXJlOjpjYWxjdWxhdGVPYmplY3RTaXplKCkgY29uc3QKIHsKLSAg
ICBpZiAoIXN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzaXpl
X3Qgc2l6ZSA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7
ICsraSkgeworICAgICAgICBzaXplX3QgZmllbGRTaXplID0gKCptRmllbGRzKVtpXS0+dHlwZSgp
LT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIGlmIChmaWVsZFNpemUgPiBJTlRfTUFYIC0gc2l6
ZSkKKyAgICAgICAgICAgIHNpemUgPSBJTlRfTUFYOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBzaXplICs9IGZpZWxkU2l6ZTsKICAgICB9CisgICAgcmV0dXJuIHNpemU7Cit9CiAKLSAgICBm
b3IgKFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyID0gc3RydWN0dXJlLT5iZWdpbigp
OyBtZW1iZXIgIT0gc3RydWN0dXJlLT5lbmQoKTsgbWVtYmVyKyspCi0gICAgewotICAgICAgICBp
ZiAobWVtYmVyLT50eXBlLT5pc0FycmF5KCkgfHwKLSAgICAgICAgICAgIG1lbWJlci0+dHlwZS0+
aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9CitpbnQgVFN0cnVjdHVyZTo6Y2FsY3VsYXRlRGVlcGVzdE5l
c3RpbmcoKSBjb25zdAoreworICAgIGludCBtYXhOZXN0aW5nID0gMDsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1GaWVsZHMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIG1heE5lc3Rpbmcg
PSBzdGQ6Om1heChtYXhOZXN0aW5nLCAoKm1GaWVsZHMpW2ldLT50eXBlKCktPmdldERlZXBlc3RT
dHJ1Y3ROZXN0aW5nKCkpOwogICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
MSArIG1heE5lc3Rpbmc7CiB9CiAKIC8vCkBAIC0xOTYsODQgKzIwMSw4IEBAIHZvaWQgVFN5bWJv
bFRhYmxlTGV2ZWw6OnJlbGF0ZVRvT3BlcmF0b3IKIHZvaWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJl
bGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFRTdHJpbmcmIGV4dCkKIHsK
ICAgICBmb3IgKHRMZXZlbDo6aXRlcmF0b3IgaXQgPSBsZXZlbC5iZWdpbigpOyBpdCAhPSBsZXZl
bC5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoaXQtPnNlY29uZC0+aXNGdW5jdGlvbigpKSB7
Ci0gICAgICAgICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9u
Kj4oaXQtPnNlY29uZCk7Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSBu
YW1lKQotICAgICAgICAgICAgICAgIGZ1bmN0aW9uLT5yZWxhdGVUb0V4dGVuc2lvbihleHQpOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi1UU3ltYm9sOjpUU3ltYm9sKGNvbnN0IFRTeW1ib2wmIGNv
cHlPZikKLXsKLSAgICBuYW1lID0gTmV3UG9vbFRTdHJpbmcoY29weU9mLm5hbWUtPmNfc3RyKCkp
OwotICAgIHVuaXF1ZUlkID0gY29weU9mLnVuaXF1ZUlkOwotfQotCi1UVmFyaWFibGU6OlRWYXJp
YWJsZShjb25zdCBUVmFyaWFibGUmIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpIDog
VFN5bWJvbChjb3B5T2YpCi17Ci0gICAgdHlwZS5jb3B5VHlwZShjb3B5T2YudHlwZSwgcmVtYXBw
ZXIpOwotICAgIHVzZXJUeXBlID0gY29weU9mLnVzZXJUeXBlOwotICAgIC8vIGZvciBidWlsdElu
IHN5bWJvbCB0YWJsZSBsZXZlbCwgdW5pb25BcnJheSBhbmQgYXJyYXlJbmZvcm1hdGlvbiBwb2lu
dGVycyBzaG91bGQgYmUgTlVMTAotICAgIGFzc2VydChjb3B5T2YuYXJyYXlJbmZvcm1hdGlvblR5
cGUgPT0gMCk7Ci0gICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOwotCi0gICAgaWYgKGNvcHlP
Zi51bmlvbkFycmF5KSB7Ci0gICAgICAgIGFzc2VydCghY29weU9mLnR5cGUuZ2V0U3RydWN0KCkp
OwotICAgICAgICBhc3NlcnQoY29weU9mLnR5cGUuZ2V0T2JqZWN0U2l6ZSgpID09IDEpOwotICAg
ICAgICB1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgIHVuaW9uQXJy
YXlbMF0gPSBjb3B5T2YudW5pb25BcnJheVswXTsKLSAgICB9IGVsc2UKLSAgICAgICAgdW5pb25B
cnJheSA9IDA7Ci19Ci0KLVRWYXJpYWJsZSogVFZhcmlhYmxlOjpjbG9uZShUU3RydWN0dXJlTWFw
JiByZW1hcHBlcikKLXsKLSAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZSgq
dGhpcywgcmVtYXBwZXIpOwotCi0gICAgcmV0dXJuIHZhcmlhYmxlOwotfQotCi1URnVuY3Rpb246
OlRGdW5jdGlvbihjb25zdCBURnVuY3Rpb24mIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBw
ZXIpIDogVFN5bWJvbChjb3B5T2YpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBjb3B5T2YucGFyYW1ldGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBUUGFyYW1ldGVyIHBh
cmFtOwotICAgICAgICBwYXJhbWV0ZXJzLnB1c2hfYmFjayhwYXJhbSk7Ci0gICAgICAgIHBhcmFt
ZXRlcnMuYmFjaygpLmNvcHlQYXJhbShjb3B5T2YucGFyYW1ldGVyc1tpXSwgcmVtYXBwZXIpOwot
ICAgIH0KLQotICAgIHJldHVyblR5cGUuY29weVR5cGUoY29weU9mLnJldHVyblR5cGUsIHJlbWFw
cGVyKTsKLSAgICBtYW5nbGVkTmFtZSA9IGNvcHlPZi5tYW5nbGVkTmFtZTsKLSAgICBvcCA9IGNv
cHlPZi5vcDsKLSAgICBkZWZpbmVkID0gY29weU9mLmRlZmluZWQ7Ci19Ci0KLVRGdW5jdGlvbiog
VEZ1bmN0aW9uOjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLXsKLSAgICBURnVuY3Rp
b24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgcmV0
dXJuIGZ1bmN0aW9uOwotfQotCi1UU3ltYm9sVGFibGVMZXZlbCogVFN5bWJvbFRhYmxlTGV2ZWw6
OmNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQotewotICAgIFRTeW1ib2xUYWJsZUxldmVs
ICpzeW1UYWJsZUxldmVsID0gbmV3IFRTeW1ib2xUYWJsZUxldmVsKCk7Ci0gICAgdExldmVsOjpp
dGVyYXRvciBpdGVyOwotICAgIGZvciAoaXRlciA9IGxldmVsLmJlZ2luKCk7IGl0ZXIgIT0gbGV2
ZWwuZW5kKCk7ICsraXRlcikgewotICAgICAgICBzeW1UYWJsZUxldmVsLT5pbnNlcnQoKml0ZXIt
PnNlY29uZC0+Y2xvbmUocmVtYXBwZXIpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3ltVGFibGVM
ZXZlbDsKLX0KLQotdm9pZCBUU3ltYm9sVGFibGU6OmNvcHlUYWJsZShjb25zdCBUU3ltYm9sVGFi
bGUmIGNvcHlPZikKLXsKLSAgICBUU3RydWN0dXJlTWFwIHJlbWFwcGVyOwotICAgIHVuaXF1ZUlk
ID0gY29weU9mLnVuaXF1ZUlkOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29w
eU9mLnRhYmxlLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHRhYmxlLnB1c2hfYmFjayhjb3B5T2Yu
dGFibGVbaV0tPmNsb25lKHJlbWFwcGVyKSk7Ci0gICAgfQotICAgIGZvciggdW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgY29weU9mLnByZWNpc2lvblN0YWNrLnNpemUoKTsgaSsrKSB7Ci0gICAgICAg
IHByZWNpc2lvblN0YWNrLnB1c2hfYmFjayggY29weU9mLnByZWNpc2lvblN0YWNrW2ldICk7Cisg
ICAgICAgIFRTeW1ib2wqIHN5bWJvbCA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGlmIChzeW1ib2wt
PmdldE5hbWUoKSA9PSBuYW1lKQorICAgICAgICAgICAgc3ltYm9sLT5yZWxhdGVUb0V4dGVuc2lv
bihleHQpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNTI1OTUpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKKyNpbmNsdWRlICJj
b21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCiAKQEAgLTQ5LDEzICs1MCwxNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZvaWQgc2V0VW5pcXVlSWQoaW50IGlkKSB7IHVuaXF1ZUlkID0gaWQ7IH0KICAgICBp
bnQgZ2V0VW5pcXVlSWQoKSBjb25zdCB7IHJldHVybiB1bmlxdWVJZDsgfQotICAgIHZpcnR1YWwg
dm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0ID0gMDsJCi0gICAgVFN5bWJvbChj
b25zdCBUU3ltYm9sJik7Ci0gICAgdmlydHVhbCBUU3ltYm9sKiBjbG9uZShUU3RydWN0dXJlTWFw
JiByZW1hcHBlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1Np
bmspIGNvbnN0ID0gMDsKKyAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcm
IGV4dCkgeyBleHRlbnNpb24gPSBleHQ7IH0KKyAgICBjb25zdCBUU3RyaW5nJiBnZXRFeHRlbnNp
b24oKSBjb25zdCB7IHJldHVybiBleHRlbnNpb247IH0KKworcHJpdmF0ZToKKyAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oVFN5bWJvbCk7CiAKLXByb3RlY3RlZDoKICAgICBjb25zdCBUU3Ry
aW5nICpuYW1lOwogICAgIHVuc2lnbmVkIGludCB1bmlxdWVJZDsgICAgICAvLyBGb3IgcmVhbCBj
b21wYXJpbmcgZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbgorICAgIFRTdHJpbmcgZXh0ZW5zaW9uOwog
fTsKIAogLy8KQEAgLTcwLDE1ICs3NCwxMyBAQCBwcm90ZWN0ZWQ6CiAvLwogY2xhc3MgVFZhcmlh
YmxlIDogcHVibGljIFRTeW1ib2wgewogcHVibGljOgotICAgIFRWYXJpYWJsZShjb25zdCBUU3Ry
aW5nICpuYW1lLCBjb25zdCBUVHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5h
bWUpLCB0eXBlKHQpLCB1c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCksIGFycmF5SW5mb3JtYXRp
b25UeXBlKDApIHsgfQorICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpuYW1lLCBjb25zdCBU
VHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUpLCB0eXBlKHQpLCB1c2Vy
VHlwZSh1VCksIHVuaW9uQXJyYXkoMCkgeyB9CiAgICAgdmlydHVhbCB+VFZhcmlhYmxlKCkgeyB9
CiAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9ICAg
IAogICAgIFRUeXBlJiBnZXRUeXBlKCkgeyByZXR1cm4gdHlwZTsgfSAgICAKICAgICBjb25zdCBU
VHlwZSYgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KICAgICBib29sIGlzVXNlclR5
cGUoKSBjb25zdCB7IHJldHVybiB1c2VyVHlwZTsgfQogICAgIHZvaWQgc2V0UXVhbGlmaWVyKFRR
dWFsaWZpZXIgcXVhbGlmaWVyKSB7IHR5cGUuc2V0UXVhbGlmaWVyKHF1YWxpZmllcik7IH0KLSAg
ICB2b2lkIHVwZGF0ZUFycmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlICp0KSB7IGFycmF5SW5mb3Jt
YXRpb25UeXBlID0gdDsgfQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpIHsg
cmV0dXJuIGFycmF5SW5mb3JtYXRpb25UeXBlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChU
SW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKIApAQCAtMTAwLDE2ICsxMDIsMTUgQEAgcHVibGlj
OgogICAgICAgICBkZWxldGVbXSB1bmlvbkFycmF5OwogICAgICAgICB1bmlvbkFycmF5ID0gY29u
c3RBcnJheTsgIAogICAgIH0KLSAgICBUVmFyaWFibGUoY29uc3QgVFZhcmlhYmxlJiwgVFN0cnVj
dHVyZU1hcCYgcmVtYXBwZXIpOyAvLyBjb3B5IGNvbnN0cnVjdG9yCi0gICAgdmlydHVhbCBUVmFy
aWFibGUqIGNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKIAotcHJvdGVjdGVkOgorcHJp
dmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFZhcmlhYmxlKTsKKwogICAgIFRU
eXBlIHR5cGU7CiAgICAgYm9vbCB1c2VyVHlwZTsKICAgICAvLyB3ZSBhcmUgYXNzdW1pbmcgdGhh
dCBQb29sIEFsbG9jYXRvciB3aWxsIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgdG8gdW5pb25B
cnJheQogICAgIC8vIHdoZW4gdGhpcyBvYmplY3QgaXMgZGVzdHJveWVkCiAgICAgQ29uc3RhbnRV
bmlvbiAqdW5pb25BcnJheTsKLSAgICBUVHlwZSAqYXJyYXlJbmZvcm1hdGlvblR5cGU7ICAvLyB0
aGlzIGlzIHVzZWQgZm9yIHVwZGF0aW5nIG1heEFycmF5U2l6ZSBpbiBhbGwgdGhlIHJlZmVyZW5j
ZXMgdG8gYSBnaXZlbiBzeW1ib2wKIH07CiAKIC8vCkBAIC0xMTksMTEgKzEyMCw2IEBAIHByb3Rl
Y3RlZDoKIHN0cnVjdCBUUGFyYW1ldGVyIHsKICAgICBUU3RyaW5nICpuYW1lOwogICAgIFRUeXBl
KiB0eXBlOwotICAgIHZvaWQgY29weVBhcmFtKGNvbnN0IFRQYXJhbWV0ZXImIHBhcmFtLCBUU3Ry
dWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIG5hbWUgPSBOZXdQb29sVFN0cmlu
ZyhwYXJhbS5uYW1lLT5jX3N0cigpKTsKLSAgICAgICAgdHlwZSA9IHBhcmFtLnR5cGUtPmNsb25l
KHJlbWFwcGVyKTsKLSAgICB9CiB9OwogCiAvLwpAQCAtMTYzLDkgKzE1OSw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbGF0ZVRvT3BlcmF0b3IoVE9wZXJhdG9yIG8pIHsgb3AgPSBvOyB9CiAgICAg
VE9wZXJhdG9yIGdldEJ1aWx0SW5PcCgpIGNvbnN0IHsgcmV0dXJuIG9wOyB9CiAKLSAgICB2b2lk
IHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBleHRlbnNpb24gPSBleHQ7
IH0KLSAgICBjb25zdCBUU3RyaW5nJiBnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBleHRl
bnNpb247IH0KLQogICAgIHZvaWQgc2V0RGVmaW5lZCgpIHsgZGVmaW5lZCA9IHRydWU7IH0KICAg
ICBib29sIGlzRGVmaW5lZCgpIHsgcmV0dXJuIGRlZmluZWQ7IH0KIApAQCAtMTczLDE2ICsxNjYs
MTUgQEAgcHVibGljOgogICAgIGNvbnN0IFRQYXJhbWV0ZXImIGdldFBhcmFtKHNpemVfdCBpKSBj
b25zdCB7IHJldHVybiBwYXJhbWV0ZXJzW2ldOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChU
SW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKLSAgICBURnVuY3Rpb24oY29uc3QgVEZ1bmN0aW9u
JiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpOwotICAgIHZpcnR1YWwgVEZ1bmN0aW9uKiBjbG9u
ZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcik7CiAKLXByb3RlY3RlZDoKK3ByaXZhdGU6CisgICAg
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRGdW5jdGlvbik7CisKICAgICB0eXBlZGVmIFRWZWN0
b3I8VFBhcmFtZXRlcj4gVFBhcmFtTGlzdDsKICAgICBUUGFyYW1MaXN0IHBhcmFtZXRlcnM7CiAg
ICAgVFR5cGUgcmV0dXJuVHlwZTsKICAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAgIFRPcGVy
YXRvciBvcDsKLSAgICBUU3RyaW5nIGV4dGVuc2lvbjsKICAgICBib29sIGRlZmluZWQ7CiB9Owog
CkBAIC0yMzEsNyArMjIzLDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVsYXRlVG9PcGVyYXRvcihj
b25zdCBjaGFyKiBuYW1lLCBUT3BlcmF0b3Igb3ApOwogICAgIHZvaWQgcmVsYXRlVG9FeHRlbnNp
b24oY29uc3QgY2hhciogbmFtZSwgY29uc3QgVFN0cmluZyYgZXh0KTsKICAgICB2b2lkIGR1bXAo
VEluZm9TaW5rICZpbmZvU2luaykgY29uc3Q7Ci0gICAgVFN5bWJvbFRhYmxlTGV2ZWwqIGNsb25l
KFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKIAogcHJvdGVjdGVkOgogICAgIHRMZXZlbCBsZXZl
bDsKQEAgLTMyMSw3ICszMTIsNiBAQCBwdWJsaWM6CiAgICAgfQogICAgIGludCBnZXRNYXhTeW1i
b2xJZCgpIHsgcmV0dXJuIHVuaXF1ZUlkOyB9CiAgICAgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5m
b1NpbmspIGNvbnN0OwotICAgIHZvaWQgY29weVRhYmxlKGNvbnN0IFRTeW1ib2xUYWJsZSYgY29w
eU9mKTsKIAogICAgIGJvb2wgc2V0RGVmYXVsdFByZWNpc2lvbiggY29uc3QgVFB1YmxpY1R5cGUm
IHR5cGUsIFRQcmVjaXNpb24gcHJlYyApewogICAgICAgICBpZiAoSXNTYW1wbGVyKHR5cGUudHlw
ZSkpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMu
aAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1R5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcsMzAgKzcsODUgQEAKICNpZm5kZWYgX1RZ
UEVTX0lOQ0xVREVECiAjZGVmaW5lIF9UWVBFU19JTkNMVURFRAogCisjaW5jbHVkZSAiY29tbW9u
L2FuZ2xldXRpbHMuaCIKKwogI2luY2x1ZGUgImNvbXBpbGVyL0Jhc2VUeXBlcy5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL0NvbW1vbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL2RlYnVnLmgiCiAKLWNs
YXNzIFRUeXBlOwogc3RydWN0IFRQdWJsaWNUeXBlOworY2xhc3MgVFR5cGU7CiAKLS8vCi0vLyBO
ZWVkIHRvIGhhdmUgYXNzb2NpYXRpb24gb2YgbGluZSBudW1iZXJzIHRvIHR5cGVzIGluIGEgbGlz
dCBmb3IgYnVpbGRpbmcgc3RydWN0cy4KLS8vCi1zdHJ1Y3QgVFR5cGVMaW5lIHsKLSAgICBUVHlw
ZSogdHlwZTsKLSAgICBpbnQgbGluZTsKK2NsYXNzIFRGaWVsZAoreworcHVibGljOgorICAgIFBP
T0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcik7CisgICAgVEZpZWxk
KFRUeXBlKiB0eXBlLCBUU3RyaW5nKiBuYW1lKSA6IG1UeXBlKHR5cGUpLCBtTmFtZShuYW1lKSB7
fQorCisgICAgLy8gVE9ETyhhbG9rcCk6IFdlIHNob3VsZCBvbmx5IHJldHVybiBjb25zdCB0eXBl
LgorICAgIC8vIEZpeCBpdCBieSB0d2Vha2luZyBncmFtbWFyLgorICAgIFRUeXBlKiB0eXBlKCkg
eyByZXR1cm4gbVR5cGU7IH0KKyAgICBjb25zdCBUVHlwZSogdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1UeXBlOyB9CisKKyAgICBjb25zdCBUU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1O
YW1lOyB9CisKK3ByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRGaWVsZCk7
CisgICAgVFR5cGUqIG1UeXBlOworICAgIFRTdHJpbmcqIG1OYW1lOwogfTsKLXR5cGVkZWYgVFZl
Y3RvcjxUVHlwZUxpbmU+IFRUeXBlTGlzdDsKIAotaW5saW5lIFRUeXBlTGlzdCogTmV3UG9vbFRU
eXBlTGlzdCgpCit0eXBlZGVmIFRWZWN0b3I8VEZpZWxkKj4gVEZpZWxkTGlzdDsKK2lubGluZSBU
RmllbGRMaXN0KiBOZXdQb29sVEZpZWxkTGlzdCgpCiB7Ci0gICAgdm9pZCogbWVtb3J5ID0gR2xv
YmFsUG9vbEFsbG9jYXRvci5hbGxvY2F0ZShzaXplb2YoVFR5cGVMaXN0KSk7Ci0gICAgcmV0dXJu
IG5ldyhtZW1vcnkpIFRUeXBlTGlzdDsKKyAgICB2b2lkKiBtZW1vcnkgPSBHbG9iYWxQb29sQWxs
b2NhdG9yLmFsbG9jYXRlKHNpemVvZihURmllbGRMaXN0KSk7CisgICAgcmV0dXJuIG5ldyhtZW1v
cnkpIFRGaWVsZExpc3Q7CiB9CiAKLXR5cGVkZWYgVE1hcDxUVHlwZUxpc3QqLCBUVHlwZUxpc3Qq
PiBUU3RydWN0dXJlTWFwOwotdHlwZWRlZiBUTWFwPFRUeXBlTGlzdCosIFRUeXBlTGlzdCo+Ojpp
dGVyYXRvciBUU3RydWN0dXJlTWFwSXRlcmF0b3I7CitjbGFzcyBUU3RydWN0dXJlCit7CitwdWJs
aWM6CisgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKTsK
KyAgICBUU3RydWN0dXJlKFRTdHJpbmcqIG5hbWUsIFRGaWVsZExpc3QqIGZpZWxkcykKKyAgICAg
ICAgOiBtTmFtZShuYW1lKSwKKyAgICAgICAgICBtRmllbGRzKGZpZWxkcyksCisgICAgICAgICAg
bU9iamVjdFNpemUoMCksCisgICAgICAgICAgbURlZXBlc3ROZXN0aW5nKDApIHsKKyAgICB9CisK
KyAgICBjb25zdCBUU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1OYW1lOyB9CisgICAg
Y29uc3QgVEZpZWxkTGlzdCYgZmllbGRzKCkgY29uc3QgeyByZXR1cm4gKm1GaWVsZHM7IH0KKwor
ICAgIGNvbnN0IFRTdHJpbmcmIG1hbmdsZWROYW1lKCkgY29uc3QgeworICAgICAgICBpZiAobU1h
bmdsZWROYW1lLmVtcHR5KCkpCisgICAgICAgICAgICBtTWFuZ2xlZE5hbWUgPSBidWlsZE1hbmds
ZWROYW1lKCk7CisgICAgICAgIHJldHVybiBtTWFuZ2xlZE5hbWU7CisgICAgfQorICAgIHNpemVf
dCBvYmplY3RTaXplKCkgY29uc3QgeworICAgICAgICBpZiAobU9iamVjdFNpemUgPT0gMCkKKyAg
ICAgICAgICAgIG1PYmplY3RTaXplID0gY2FsY3VsYXRlT2JqZWN0U2l6ZSgpOworICAgICAgICBy
ZXR1cm4gbU9iamVjdFNpemU7CisgICAgfTsKKyAgICBpbnQgZGVlcGVzdE5lc3RpbmcoKSBjb25z
dCB7CisgICAgICAgIGlmIChtRGVlcGVzdE5lc3RpbmcgPT0gMCkKKyAgICAgICAgICAgIG1EZWVw
ZXN0TmVzdGluZyA9IGNhbGN1bGF0ZURlZXBlc3ROZXN0aW5nKCk7CisgICAgICAgIHJldHVybiBt
RGVlcGVzdE5lc3Rpbmc7CisgICAgfQorICAgIGJvb2wgY29udGFpbnNBcnJheXMoKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFN0cnVjdHVyZSk7Cisg
ICAgVFN0cmluZyBidWlsZE1hbmdsZWROYW1lKCkgY29uc3Q7CisgICAgc2l6ZV90IGNhbGN1bGF0
ZU9iamVjdFNpemUoKSBjb25zdDsKKyAgICBpbnQgY2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBj
b25zdDsKKworICAgIFRTdHJpbmcqIG1OYW1lOworICAgIFRGaWVsZExpc3QqIG1GaWVsZHM7CisK
KyAgICBtdXRhYmxlIFRTdHJpbmcgbU1hbmdsZWROYW1lOworICAgIG11dGFibGUgc2l6ZV90IG1P
YmplY3RTaXplOworICAgIG11dGFibGUgaW50IG1EZWVwZXN0TmVzdGluZzsKK307CiAKIC8vCiAv
LyBCYXNlIGNsYXNzIGZvciB0aGluZ3MgdGhhdCBoYXZlIGEgdHlwZS4KQEAgLTQxLDEwMCArOTYs
MjkgQEAgcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFs
bG9jYXRvcikKICAgICBUVHlwZSgpIHt9CiAgICAgVFR5cGUoVEJhc2ljVHlwZSB0LCBUUHJlY2lz
aW9uIHAsIFRRdWFsaWZpZXIgcSA9IEV2cVRlbXBvcmFyeSwgaW50IHMgPSAxLCBib29sIG0gPSBm
YWxzZSwgYm9vbCBhID0gZmFsc2UpIDoKLSAgICAgICAgICAgIHR5cGUodCksIHByZWNpc2lvbihw
KSwgcXVhbGlmaWVyKHEpLCBzaXplKHMpLCBtYXRyaXgobSksIGFycmF5KGEpLCBhcnJheVNpemUo
MCksCi0gICAgICAgICAgICBtYXhBcnJheVNpemUoMCksIGFycmF5SW5mb3JtYXRpb25UeXBlKDAp
LCBzdHJ1Y3R1cmUoMCksIHN0cnVjdHVyZVNpemUoMCksIGRlZXBlc3RTdHJ1Y3ROZXN0aW5nKDAp
LCBmaWVsZE5hbWUoMCksIG1hbmdsZWQoMCksIHR5cGVOYW1lKDApCisgICAgICAgICAgICB0eXBl
KHQpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihxKSwgc2l6ZShzKSwgbWF0cml4KG0pLCBhcnJh
eShhKSwgYXJyYXlTaXplKDApLCBzdHJ1Y3R1cmUoMCkKICAgICB7CiAgICAgfQogICAgIGV4cGxp
Y2l0IFRUeXBlKGNvbnN0IFRQdWJsaWNUeXBlICZwKTsKLSAgICBUVHlwZShUVHlwZUxpc3QqIHVz
ZXJEZWYsIGNvbnN0IFRTdHJpbmcmIG4sIFRQcmVjaXNpb24gcCA9IEVicFVuZGVmaW5lZCkgOgot
ICAgICAgICAgICAgdHlwZShFYnRTdHJ1Y3QpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihFdnFU
ZW1wb3JhcnkpLCBzaXplKDEpLCBtYXRyaXgoZmFsc2UpLCBhcnJheShmYWxzZSksIGFycmF5U2l6
ZSgwKSwKLSAgICAgICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUo
MCksIHN0cnVjdHVyZSh1c2VyRGVmKSwgc3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5l
c3RpbmcoMCksIGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKQorICAgIFRUeXBlKFRTdHJ1Y3R1cmUq
IHVzZXJEZWYsIFRQcmVjaXNpb24gcCA9IEVicFVuZGVmaW5lZCkgOgorICAgICAgICAgICAgdHlw
ZShFYnRTdHJ1Y3QpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihFdnFUZW1wb3JhcnkpLCBzaXpl
KDEpLCBtYXRyaXgoZmFsc2UpLCBhcnJheShmYWxzZSksIGFycmF5U2l6ZSgwKSwgc3RydWN0dXJl
KHVzZXJEZWYpCiAgICAgewotICAgICAgICB0eXBlTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKG4uY19z
dHIoKSk7CiAgICAgfQogCi0gICAgdm9pZCBjb3B5VHlwZShjb25zdCBUVHlwZSYgY29weU9mLCBU
U3RydWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIHR5cGUgPSBjb3B5T2YudHlw
ZTsKLSAgICAgICAgcHJlY2lzaW9uID0gY29weU9mLnByZWNpc2lvbjsKLSAgICAgICAgcXVhbGlm
aWVyID0gY29weU9mLnF1YWxpZmllcjsKLSAgICAgICAgc2l6ZSA9IGNvcHlPZi5zaXplOwotICAg
ICAgICBtYXRyaXggPSBjb3B5T2YubWF0cml4OwotICAgICAgICBhcnJheSA9IGNvcHlPZi5hcnJh
eTsKLSAgICAgICAgYXJyYXlTaXplID0gY29weU9mLmFycmF5U2l6ZTsKLQotICAgICAgICBUU3Ry
dWN0dXJlTWFwSXRlcmF0b3IgaXRlcjsKLSAgICAgICAgaWYgKGNvcHlPZi5zdHJ1Y3R1cmUpIHsK
LSAgICAgICAgICAgIGlmICgoaXRlciA9IHJlbWFwcGVyLmZpbmQoc3RydWN0dXJlKSkgPT0gcmVt
YXBwZXIuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIG5ldyBzdHJ1Y3R1
cmUgaGVyZQotICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IE5ld1Bvb2xUVHlwZUxpc3QoKTsK
LSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvcHlPZi5zdHJ1
Y3R1cmUtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFRUeXBlTGluZSB0eXBl
TGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxpbmUubGluZSA9ICgqY29weU9mLnN0cnVj
dHVyZSlbaV0ubGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxpbmUudHlwZSA9ICgqY29w
eU9mLnN0cnVjdHVyZSlbaV0udHlwZS0+Y2xvbmUocmVtYXBwZXIpOwotICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmUtPnB1c2hfYmFjayh0eXBlTGluZSk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBpdGVyLT5z
ZWNvbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3RydWN0
dXJlID0gMDsKLQotICAgICAgICBmaWVsZE5hbWUgPSAwOwotICAgICAgICBpZiAoY29weU9mLmZp
ZWxkTmFtZSkKLSAgICAgICAgICAgIGZpZWxkTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKGNvcHlPZi5m
aWVsZE5hbWUtPmNfc3RyKCkpOwotICAgICAgICB0eXBlTmFtZSA9IDA7Ci0gICAgICAgIGlmIChj
b3B5T2YudHlwZU5hbWUpCi0gICAgICAgICAgICB0eXBlTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKGNv
cHlPZi50eXBlTmFtZS0+Y19zdHIoKSk7Ci0KLSAgICAgICAgbWFuZ2xlZCA9IDA7Ci0gICAgICAg
IGlmIChjb3B5T2YubWFuZ2xlZCkKLSAgICAgICAgICAgIG1hbmdsZWQgPSBOZXdQb29sVFN0cmlu
Zyhjb3B5T2YubWFuZ2xlZC0+Y19zdHIoKSk7Ci0KLSAgICAgICAgc3RydWN0dXJlU2l6ZSA9IGNv
cHlPZi5zdHJ1Y3R1cmVTaXplOwotICAgICAgICBtYXhBcnJheVNpemUgPSBjb3B5T2YubWF4QXJy
YXlTaXplOwotICAgICAgICBkZWVwZXN0U3RydWN0TmVzdGluZyA9IGNvcHlPZi5kZWVwZXN0U3Ry
dWN0TmVzdGluZzsKLSAgICAgICAgYXNzZXJ0KGNvcHlPZi5hcnJheUluZm9ybWF0aW9uVHlwZSA9
PSAwKTsKLSAgICAgICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOyAvLyBhcnJheUluZm9ybWF0
aW9uVHlwZSBzaG91bGQgbm90IGJlIHNldCBmb3IgYnVpbHRJbiBzeW1ib2wgdGFibGUgbGV2ZWwK
LSAgICB9Ci0KLSAgICBUVHlwZSogY2xvbmUoVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpCi0gICAg
ewotICAgICAgICBUVHlwZSAqbmV3VHlwZSA9IG5ldyBUVHlwZSgpOwotICAgICAgICBuZXdUeXBl
LT5jb3B5VHlwZSgqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgICAgIHJldHVybiBuZXdUeXBlOwot
ICAgIH0KLQotICAgIFRCYXNpY1R5cGUgZ2V0QmFzaWNUeXBlKCkgY29uc3QgeyByZXR1cm4gdHlw
ZTsgfQorICAgIFRCYXNpY1R5cGUgZ2V0QmFzaWNUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VEJhc2ljVHlwZT4odHlwZSk7IH0KICAgICB2b2lkIHNldEJhc2ljVHlwZShUQmFzaWNU
eXBlIHQpIHsgdHlwZSA9IHQ7IH0KIAogICAgIFRQcmVjaXNpb24gZ2V0UHJlY2lzaW9uKCkgY29u
c3QgeyByZXR1cm4gcHJlY2lzaW9uOyB9CiAgICAgdm9pZCBzZXRQcmVjaXNpb24oVFByZWNpc2lv
biBwKSB7IHByZWNpc2lvbiA9IHA7IH0KIAotICAgIFRRdWFsaWZpZXIgZ2V0UXVhbGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gcXVhbGlmaWVyOyB9CisgICAgVFF1YWxpZmllciBnZXRRdWFsaWZpZXIo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUUXVhbGlmaWVyPihxdWFsaWZpZXIpOyB9CiAg
ICAgdm9pZCBzZXRRdWFsaWZpZXIoVFF1YWxpZmllciBxKSB7IHF1YWxpZmllciA9IHE7IH0KIAog
ICAgIC8vIE9uZS1kaW1lbnNpb25hbCBzaXplIG9mIHNpbmdsZSBpbnN0YW5jZSB0eXBlCiAgICAg
aW50IGdldE5vbWluYWxTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZTsgfQogICAgIHZvaWQgc2V0
Tm9taW5hbFNpemUoaW50IHMpIHsgc2l6ZSA9IHM7IH0KICAgICAvLyBGdWxsIHNpemUgb2Ygc2lu
Z2xlIGluc3RhbmNlIG9mIHR5cGUKLSAgICBpbnQgZ2V0T2JqZWN0U2l6ZSgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBpbnQgdG90YWxTaXplOwotCi0gICAgICAgIGlmIChnZXRCYXNpY1R5cGUoKSA9
PSBFYnRTdHJ1Y3QpCi0gICAgICAgICAgICB0b3RhbFNpemUgPSBnZXRTdHJ1Y3RTaXplKCk7Ci0g
ICAgICAgIGVsc2UgaWYgKG1hdHJpeCkKLSAgICAgICAgICAgIHRvdGFsU2l6ZSA9IHNpemUgKiBz
aXplOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0b3RhbFNpemUgPSBzaXplOwotCi0gICAg
ICAgIGlmIChpc0FycmF5KCkpCi0gICAgICAgICAgICB0b3RhbFNpemUgKj0gc3RkOjptYXgoZ2V0
QXJyYXlTaXplKCksIGdldE1heEFycmF5U2l6ZSgpKTsKLQotICAgICAgICByZXR1cm4gdG90YWxT
aXplOwotICAgIH0KKyAgICBzaXplX3QgZ2V0T2JqZWN0U2l6ZSgpIGNvbnN0OwogCiAgICAgYm9v
bCBpc01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1hdHJpeCA/IHRydWUgOiBmYWxzZTsgfQogICAg
IHZvaWQgc2V0TWF0cml4KGJvb2wgbSkgeyBtYXRyaXggPSBtOyB9CkBAIC0xNDIsNDcgKzEyNiwy
MCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FycmF5KCkgY29uc3QgIHsgcmV0dXJuIGFycmF5ID8g
dHJ1ZSA6IGZhbHNlOyB9CiAgICAgaW50IGdldEFycmF5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGFy
cmF5U2l6ZTsgfQogICAgIHZvaWQgc2V0QXJyYXlTaXplKGludCBzKSB7IGFycmF5ID0gdHJ1ZTsg
YXJyYXlTaXplID0gczsgfQotICAgIGludCBnZXRNYXhBcnJheVNpemUgKCkgY29uc3QgeyByZXR1
cm4gbWF4QXJyYXlTaXplOyB9Ci0gICAgdm9pZCBzZXRNYXhBcnJheVNpemUgKGludCBzKSB7IG1h
eEFycmF5U2l6ZSA9IHM7IH0KLSAgICB2b2lkIGNsZWFyQXJyYXluZXNzKCkgeyBhcnJheSA9IGZh
bHNlOyBhcnJheVNpemUgPSAwOyBtYXhBcnJheVNpemUgPSAwOyB9Ci0gICAgdm9pZCBzZXRBcnJh
eUluZm9ybWF0aW9uVHlwZShUVHlwZSogdCkgeyBhcnJheUluZm9ybWF0aW9uVHlwZSA9IHQ7IH0K
LSAgICBUVHlwZSogZ2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBhcnJh
eUluZm9ybWF0aW9uVHlwZTsgfQorICAgIHZvaWQgY2xlYXJBcnJheW5lc3MoKSB7IGFycmF5ID0g
ZmFsc2U7IGFycmF5U2l6ZSA9IDA7IH0KIAogICAgIGJvb2wgaXNWZWN0b3IoKSBjb25zdCB7IHJl
dHVybiBzaXplID4gMSAmJiAhbWF0cml4OyB9CiAgICAgYm9vbCBpc1NjYWxhcigpIGNvbnN0IHsg
cmV0dXJuIHNpemUgPT0gMSAmJiAhbWF0cml4ICYmICFzdHJ1Y3R1cmU7IH0KIAotICAgIFRUeXBl
TGlzdCogZ2V0U3RydWN0KCkgY29uc3QgeyByZXR1cm4gc3RydWN0dXJlOyB9Ci0gICAgdm9pZCBz
ZXRTdHJ1Y3QoVFR5cGVMaXN0KiBzKSB7IHN0cnVjdHVyZSA9IHM7IGNvbXB1dGVEZWVwZXN0U3Ry
dWN0TmVzdGluZygpOyB9Ci0KLSAgICBjb25zdCBUU3RyaW5nJiBnZXRUeXBlTmFtZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICBhc3NlcnQodHlwZU5hbWUpOwotICAgICAgICByZXR1cm4gKnR5cGVO
YW1lOwotICAgIH0KLSAgICB2b2lkIHNldFR5cGVOYW1lKGNvbnN0IFRTdHJpbmcmIG4pCi0gICAg
ewotICAgICAgICB0eXBlTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKG4uY19zdHIoKSk7Ci0gICAgfQot
Ci0gICAgYm9vbCBpc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmllbGROYW1lICE9IDA7IH0KLSAg
ICBjb25zdCBUU3RyaW5nJiBnZXRGaWVsZE5hbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgYXNz
ZXJ0KGZpZWxkTmFtZSk7Ci0gICAgICAgIHJldHVybiAqZmllbGROYW1lOwotICAgIH0KLSAgICB2
b2lkIHNldEZpZWxkTmFtZShjb25zdCBUU3RyaW5nJiBuKQotICAgIHsKLSAgICAgICAgZmllbGRO
YW1lID0gTmV3UG9vbFRTdHJpbmcobi5jX3N0cigpKTsKLSAgICB9CisgICAgVFN0cnVjdHVyZSog
Z2V0U3RydWN0KCkgY29uc3QgeyByZXR1cm4gc3RydWN0dXJlOyB9CisgICAgdm9pZCBzZXRTdHJ1
Y3QoVFN0cnVjdHVyZSogcykgeyBzdHJ1Y3R1cmUgPSBzOyB9CiAKLSAgICBUU3RyaW5nJiBnZXRN
YW5nbGVkTmFtZSgpIHsKLSAgICAgICAgaWYgKCFtYW5nbGVkKSB7Ci0gICAgICAgICAgICBtYW5n
bGVkID0gTmV3UG9vbFRTdHJpbmcoIiIpOwotICAgICAgICAgICAgYnVpbGRNYW5nbGVkTmFtZSgq
bWFuZ2xlZCk7Ci0gICAgICAgICAgICAqbWFuZ2xlZCArPSAnOycgOworICAgIGNvbnN0IFRTdHJp
bmcmIGdldE1hbmdsZWROYW1lKCkgY29uc3QgeworICAgICAgICBpZiAobWFuZ2xlZC5lbXB0eSgp
KSB7CisgICAgICAgICAgICBtYW5nbGVkID0gYnVpbGRNYW5nbGVkTmFtZSgpOworICAgICAgICAg
ICAgbWFuZ2xlZCArPSAnOyc7CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gKm1hbmdsZWQ7
CisgICAgICAgIHJldHVybiBtYW5nbGVkOwogICAgIH0KIAogICAgIGJvb2wgc2FtZUVsZW1lbnRU
eXBlKGNvbnN0IFRUeXBlJiByaWdodCkgY29uc3QgewpAQCAtMjMwLDE0ICsxODcsMTYgQEAgcHVi
bGljOgogICAgIC8vIEZvciB0eXBlICJuZXN0aW5nMiIsIHRoaXMgbWV0aG9kIHdvdWxkIHJldHVy
biAyIC0tIHRoZSBudW1iZXIKICAgICAvLyBvZiBzdHJ1Y3R1cmVzIHRocm91Z2ggd2hpY2ggaW5k
aXJlY3Rpb24gbXVzdCBvY2N1ciB0byByZWFjaCB0aGUKICAgICAvLyBkZWVwZXN0IGZpZWxkIChu
ZXN0aW5nMi5maWVsZDEucG9zaXRpb24pLgotICAgIGludCBnZXREZWVwZXN0U3RydWN0TmVzdGlu
ZygpIGNvbnN0IHsgcmV0dXJuIGRlZXBlc3RTdHJ1Y3ROZXN0aW5nOyB9CisgICAgaW50IGdldERl
ZXBlc3RTdHJ1Y3ROZXN0aW5nKCkgY29uc3QgeworICAgICAgICByZXR1cm4gc3RydWN0dXJlID8g
c3RydWN0dXJlLT5kZWVwZXN0TmVzdGluZygpIDogMDsKKyAgICB9CiAKLSAgICBib29sIGlzU3Ry
dWN0dXJlQ29udGFpbmluZ0FycmF5cygpIGNvbnN0OworICAgIGJvb2wgaXNTdHJ1Y3R1cmVDb250
YWluaW5nQXJyYXlzKCkgY29uc3QgeworICAgICAgICByZXR1cm4gc3RydWN0dXJlID8gc3RydWN0
dXJlLT5jb250YWluc0FycmF5cygpIDogZmFsc2U7CisgICAgfQogCi1wcm90ZWN0ZWQ6Ci0gICAg
dm9pZCBidWlsZE1hbmdsZWROYW1lKFRTdHJpbmcmKTsKLSAgICBpbnQgZ2V0U3RydWN0U2l6ZSgp
IGNvbnN0OwotICAgIHZvaWQgY29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCk7Citwcml2YXRl
OgorICAgIFRTdHJpbmcgYnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0OwogCiAgICAgVEJhc2ljVHlw
ZSB0eXBlICAgICAgOiA2OwogICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOwpAQCAtMjQ2LDE2ICsy
MDUsMTAgQEAgcHJvdGVjdGVkOgogICAgIHVuc2lnbmVkIGludCBtYXRyaXggIDogMTsKICAgICB1
bnNpZ25lZCBpbnQgYXJyYXkgICA6IDE7CiAgICAgaW50IGFycmF5U2l6ZTsKLSAgICBpbnQgbWF4
QXJyYXlTaXplOwotICAgIFRUeXBlKiBhcnJheUluZm9ybWF0aW9uVHlwZTsKIAotICAgIFRUeXBl
TGlzdCogc3RydWN0dXJlOyAgICAgIC8vIDAgdW5sZXNzIHRoaXMgaXMgYSBzdHJ1Y3QKLSAgICBt
dXRhYmxlIGludCBzdHJ1Y3R1cmVTaXplOwotICAgIGludCBkZWVwZXN0U3RydWN0TmVzdGluZzsK
LQotICAgIFRTdHJpbmcgKmZpZWxkTmFtZTsgICAgICAgICAvLyBmb3Igc3RydWN0dXJlIGZpZWxk
IG5hbWVzCi0gICAgVFN0cmluZyAqbWFuZ2xlZDsKLSAgICBUU3RyaW5nICp0eXBlTmFtZTsgICAg
ICAgICAgLy8gZm9yIHN0cnVjdHVyZSBmaWVsZCB0eXBlIG5hbWUKKyAgICBUU3RydWN0dXJlKiBz
dHJ1Y3R1cmU7ICAgICAgLy8gMCB1bmxlc3MgdGhpcyBpcyBhIHN0cnVjdAorCisgICAgbXV0YWJs
ZSBUU3RyaW5nIG1hbmdsZWQ7CiB9OwogCiAvLwpAQCAtMjc3LDkgKzIzMCw5IEBAIHN0cnVjdCBU
UHVibGljVHlwZQogICAgIGJvb2wgYXJyYXk7CiAgICAgaW50IGFycmF5U2l6ZTsKICAgICBUVHlw
ZSogdXNlckRlZjsKLSAgICBpbnQgbGluZTsKKyAgICBUU291cmNlTG9jIGxpbmU7CiAKLSAgICB2
b2lkIHNldEJhc2ljKFRCYXNpY1R5cGUgYnQsIFRRdWFsaWZpZXIgcSwgaW50IGxuID0gMCkKKyAg
ICB2b2lkIHNldEJhc2ljKFRCYXNpY1R5cGUgYnQsIFRRdWFsaWZpZXIgcSwgY29uc3QgVFNvdXJj
ZUxvYyYgbG4pCiAgICAgewogICAgICAgICB0eXBlID0gYnQ7CiAgICAgICAgIHF1YWxpZmllciA9
IHE7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJ
bmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvVmFyaWFibGVJbmZvLmNwcAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMSwxMiArMTMxLDEzIEBAIHZvaWQgZ2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8oY29uc3Qg
VFQKIHsKICAgICBBU1NFUlQodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpOwogCi0g
ICAgY29uc3QgVFR5cGVMaXN0KiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkgewotICAgICAgICBj
b25zdCBUVHlwZSogZmllbGRUeXBlID0gKCpzdHJ1Y3R1cmUpW2ldLnR5cGU7Ci0gICAgICAgIGdl
dFZhcmlhYmxlSW5mbygqZmllbGRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSAr
ICIuIiArIGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtYXBwZWROYW1lICsgIi4iICsgVEludGVybVRyYXZlcnNlcjo6aGFzaChmaWVsZFR5cGUtPmdl
dEZpZWxkTmFtZSgpLCBoYXNoRnVuY3Rpb24pLAorICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxk
cyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZmllbGRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRUeXBlJiBmaWVsZFR5cGUg
PSAqKGZpZWxkc1tpXS0+dHlwZSgpKTsKKyAgICAgICAgY29uc3QgVFN0cmluZyYgZmllbGROYW1l
ID0gZmllbGRzW2ldLT5uYW1lKCk7CisgICAgICAgIGdldFZhcmlhYmxlSW5mbyhmaWVsZFR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lICsgIi4iICsgZmllbGROYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSArICIuIiArIFRJbnRlcm1UcmF2ZXJzZXI6Omhh
c2goZmllbGROYW1lLCBoYXNoRnVuY3Rpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgaW5m
b0xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoRnVuY3Rpb24pOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90
YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyODkgQEAKKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUaGlz
IGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX2J1aWx0aW5fc3ltYm9sX3RhYmxlLnB5Lgor
Ly8gICAgICAgICAgICAgICAgICogRE8gTk9UIEhBTkQgTU9ESUZZICoKKy8vICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpbmNs
dWRlICJjb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5oIgorI2luY2x1ZGUgImNvbXBpbGVy
L1N5bWJvbFRhYmxlLmgiCisKK3N0YXRpYyB2b2lkIGJ1aWx0aW4xKFRTeW1ib2xUYWJsZSogdCwg
VFR5cGUqIHJ2YWx1ZSwgY29uc3QgY2hhciogbmFtZSwgVFR5cGUqIHB0eXBlMSwgY29uc3QgY2hh
ciogcG5hbWUxKQoreworICBURnVuY3Rpb24qIGYgPSBuZXcgVEZ1bmN0aW9uKG5ldyBUU3RyaW5n
KG5hbWUpLCAqcnZhbHVlKTsKKyAgVFBhcmFtZXRlciBwYXJhbSA9IHtuZXcgVFN0cmluZyhwbmFt
ZTEpLCBwdHlwZTF9OworICBmLT5hZGRQYXJhbWV0ZXIocGFyYW0pOworICB0LT5pbnNlcnQoKmYp
OworfQorCitzdGF0aWMgdm9pZCBidWlsdGluMihUU3ltYm9sVGFibGUqIHQsIFRUeXBlKiBydmFs
dWUsIGNvbnN0IGNoYXIqIG5hbWUsIFRUeXBlKiBwdHlwZTEsIGNvbnN0IGNoYXIqIHBuYW1lMSwg
VFR5cGUqIHB0eXBlMiwgY29uc3QgY2hhciogcG5hbWUyKQoreworICBURnVuY3Rpb24qIGYgPSBu
ZXcgVEZ1bmN0aW9uKG5ldyBUU3RyaW5nKG5hbWUpLCAqcnZhbHVlKTsKKyAgVFBhcmFtZXRlciBw
YXJhbTEgPSB7bmV3IFRTdHJpbmcocG5hbWUxKSwgcHR5cGUxfTsKKyAgZi0+YWRkUGFyYW1ldGVy
KHBhcmFtMSk7CisgIFRQYXJhbWV0ZXIgcGFyYW0yID0ge25ldyBUU3RyaW5nKHBuYW1lMiksIHB0
eXBlMn07CisgIGYtPmFkZFBhcmFtZXRlcihwYXJhbTIpOworICB0LT5pbnNlcnQoKmYpOworfQor
CitzdGF0aWMgdm9pZCBidWlsdGluMyhUU3ltYm9sVGFibGUqIHQsIFRUeXBlKiBydmFsdWUsIGNv
bnN0IGNoYXIqIG5hbWUsIFRUeXBlKiBwdHlwZTEsIGNvbnN0IGNoYXIqIHBuYW1lMSwgVFR5cGUq
IHB0eXBlMiwgY29uc3QgY2hhciogcG5hbWUyLCBUVHlwZSogcHR5cGUzLCBjb25zdCBjaGFyKiBw
bmFtZTMpCit7CisgIFRGdW5jdGlvbiogZiA9IG5ldyBURnVuY3Rpb24obmV3IFRTdHJpbmcobmFt
ZSksICpydmFsdWUpOworICBUUGFyYW1ldGVyIHBhcmFtMSA9IHtuZXcgVFN0cmluZyhwbmFtZTEp
LCBwdHlwZTF9OworICBmLT5hZGRQYXJhbWV0ZXIocGFyYW0xKTsKKyAgVFBhcmFtZXRlciBwYXJh
bTIgPSB7bmV3IFRTdHJpbmcocG5hbWUyKSwgcHR5cGUyfTsKKyAgZi0+YWRkUGFyYW1ldGVyKHBh
cmFtMik7CisgIFRQYXJhbWV0ZXIgcGFyYW0zID0ge25ldyBUU3RyaW5nKHBuYW1lMyksIHB0eXBl
M307CisgIGYtPmFkZFBhcmFtZXRlcihwYXJhbTMpOworICB0LT5pbnNlcnQoKmYpOworfQorCit2
b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24oY29uc3QgU2hCdWlsdEluUmVzb3VyY2Vz
JiByZXNvdXJjZXMsIFRTeW1ib2xUYWJsZSogdCkgeworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJy
YWRpYW5zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmFkaWFu
cyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJkZWdyZWVzIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAiZGVncmVlcyIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
ImRlZ3JlZXMiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJyYWRp
YW5zIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmFkaWFucyIp
OworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJkZWdyZWVzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIik7CisgICAgYnVp
bHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgInNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJzaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAic2luIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInNpbiIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJhbmds
ZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBi
dWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAiY29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgImNvcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJjb3Mi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAidGFuIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFu
Z2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAg
IGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJ0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAidGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFz
aW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhc2luIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYXNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRp
bjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgImFzaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJh
Y29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYWNvcyIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4
Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImFjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0
aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJhY29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
YXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYXRh
biIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJ5X292ZXJfeCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhdGFuIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInlfb3Zl
cl94Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImF0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieV9vdmVyX3giKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5X292ZXJfeCIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJwb3ciLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgInBvdyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAicG93IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJwb3ciLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4
Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRp
bjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxv
ZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV4cDIi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJleHAyIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZXhwMiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgImV4cDIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJsb2cy
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibG9nMiIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImxvZzIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4x
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJsb2cyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic3Fy
dCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInNxcnQiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIp
OworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJzcXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAic3FydCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImlu
dmVyc2VzcXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiaW52ZXJzZXNx
cnQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJpbnZlcnNlc3FydCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImludmVyc2VzcXJ0IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYWJz
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2lnbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgInNpZ24iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJzaWdu
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAic2lnbiIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImZsb29yIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAiZmxvb3IiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJm
bG9vciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImZsb29yIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
IngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiY2VpbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVp
bHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgImNlaWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSks
ICJjZWlsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY2VpbCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBi
dWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAiZnJhY3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJmcmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImZyYWN0Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5
Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsK
KyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVp
bHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIm1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJtaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgIm1pbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIs
IGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
bWluIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW4i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1pbiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWluIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
IngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
eSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7
CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMyh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAiY2xhbXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFs
Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWlu
VmFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIm1heFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgIm1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAiY2xhbXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFs
Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWlu
VmFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgIm1heFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIm1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAiY2xhbXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibWF4VmFs
Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAiYSIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJtaXgiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgImEiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWl4IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYSIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJt
aXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImEiKTsKKyAgICBidWlsdGluMyh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAibWl4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJhIik7CisgICAgYnVpbHRp
bjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYSIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVk
Z2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic21vb3Roc3RlcCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJlZGdlMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjModCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgInNtb290aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
eCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic21vb3Ro
c3RlcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJlZGdlMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVp
bHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgInNtb290aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImVkZ2UwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBidWls
dGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBi
dWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicDEiKTsK
KyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZG90IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJkb3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVp
bHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImRvdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAiZG90IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJjcm9zcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAibm9ybWFsaXplIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm9y
bWFsaXplIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWlsdGluMyh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsK
KyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJ
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIk4iKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgIk4iKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSks
ICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIk4iKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgIk4iKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicmVmcmFjdCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIk4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZXRhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInJl
ZnJhY3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAiSSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJOIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV0YSIpOworICAgIGJ1aWx0aW4z
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJyZWZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJldGEiKTsK
KyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicmVmcmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIk4iLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAiZXRhIik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgdHJ1ZSwgZmFsc2UpLCAibWF0cml4Q29tcE11bHQiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCB0cnVlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgdHJ1
ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIHRydWUsIGZhbHNlKSwgIm1hdHJpeENvbXBNdWx0Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgdHJ1ZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IHRydWUsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCB0cnVlLCBmYWxzZSksICJtYXRyaXhDb21wTXVs
dCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIHRydWUs
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCB0cnVlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4i
LCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbiIsIG5l
dyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuIiwgbmV3IFRU
eXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4
IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW5FcXVhbCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbkVxdWFsIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuRXF1
YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1Ro
YW5FcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImxlc3NU
aGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJsZXNz
VGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3Jl
YXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
Z3JlYXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAiZ3JlYXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwg
bmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAiZ3JlYXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJncmVhdGVyVGhhbiIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgImdyZWF0ZXJUaGFuIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAiZ3JlYXRlclRoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJncmVhdGVyVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5
Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW5FcXVhbCIsIG5ldyBUVHlwZShF
YnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5
cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngi
LCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbkVxdWFsIiwgbmV3
IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsK
KyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJlcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgImVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIo
dCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgImVxdWFsIiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJl
cXVhbCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1
YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1
YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibm90RXF1
YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1
YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIs
IG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwgbmV3
IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4
IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwgbmV3IFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBu
ZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYW55IiwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1
aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImFueSIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJh
bnkiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYWxsIiwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOwor
ICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgImFsbCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJhbGwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90IiwgbmV3IFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
eCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm5vdCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJub3QiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1
cmUyRCIsIG5ldyBUVHlwZShFYnRTYW1wbGVyMkQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIGJ1aWx0aW4y
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ0ZXh0dXJlMkRQcm9qIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNv
b3JkIik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFByb2oiLCBuZXcgVFR5cGUo
RWJ0U2FtcGxlcjJELCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
InNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVy
ZUN1YmUiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlckN1YmUsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIGlmIChy
ZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCkgeworICAgICAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAidGV4dHVyZTJEIiwgbmV3IFRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUywgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNv
b3JkIik7CisgICAgfQorICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCkg
eworICAgICAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJEUHJvaiIsIG5ldyBUVHlwZShF
YnRTYW1wbGVyRXh0ZXJuYWxPRVMsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIH0KKyAgICBpZiAocmVzb3Vy
Y2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwpIHsKKyAgICAgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
InRleHR1cmUyRFByb2oiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY29v
cmQiKTsKKyAgICB9CisgICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsK
KyAgICAgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFJlY3QiLCBuZXcgVFR5cGUoRWJ0
U2FtcGxlcjJEUmVjdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIik7CisgICAgfQorICAgIGlmIChyZXNvdXJjZXMuQVJC
X3RleHR1cmVfcmVjdGFuZ2xlKSB7CisgICAgICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJl
MkRSZWN0UHJvaiIsIG5ldyBUVHlwZShFYnRTYW1wbGVyMkRSZWN0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAg
ICB9CisgICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKKyAgICAgICAg
YnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFJlY3RQcm9qIiwgbmV3IFRUeXBlKEVidFNhbXBs
ZXIyRFJlY3QsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2Ft
cGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIH0KK30KKwordm9pZCBJbnNlcnRCdWlsdEluRnVu
Y3Rpb25zVmVydGV4KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLCBUU3ltYm9s
VGFibGUqIHQpIHsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJETG9kIiwgbmV3IFRU
eXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOworICAgIGJ1aWx0aW4z
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ0ZXh0dXJlMkRQcm9qTG9kIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
ImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImxvZCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRQ
cm9qTG9kIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIp
OworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlQ3ViZUxvZCIsIG5ldyBUVHlwZShFYnRT
YW1wbGVyQ3ViZSwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJz
YW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOworfQorCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1i
b2xfdGFibGUuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEg
IyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9s
X3RhYmxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2
IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworI2lmbmRlZiBfQlVJTFRJTl9TWU1CT0xfVEFCTEVfSU5D
TFVERURfCisjZGVmaW5lIF9CVUlMVElOX1NZTUJPTF9UQUJMRV9JTkNMVURFRF8KKworI2luY2x1
ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorCitjbGFzcyBUU3ltYm9sVGFibGU7CisKK2V4dGVy
biB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24oY29uc3QgU2hCdWlsdEluUmVzb3Vy
Y2VzJiByZXNvdXJjZXMsIFRTeW1ib2xUYWJsZSogdCk7CitleHRlcm4gdm9pZCBJbnNlcnRCdWls
dEluRnVuY3Rpb25zVmVydGV4KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLCBU
U3ltYm9sVGFibGUqIHQpOworCisjZW5kaWYgLy8gX0JVSUxUSU5fU1lNQk9MX1RBQkxFX0lOQ0xV
REVEXwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1
dGFibGUKIyMgLTAsMCArMSAjIworKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwJ
KHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9nbHNsYW5nLmwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDEwIEBAIFdISUNIIEdFTkVS
QVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDog
NDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZhbC0+bGV4LmxpbmUg
PSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9maWxlID0geXlsbG9jLT5sYXN0X2ZpbGUg
PSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGxvYy0+bGFzdF9saW5l
ID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1heF9zaXplKSBc
CiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5c2Nhbm5lcik7CiAK
QEAgLTU3LDEwICs2MCw4IEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNj
YW4KICV9CiAKICVvcHRpb24gbm95eXdyYXAgbm91bnB1dCBuZXZlci1pbnRlcmFjdGl2ZQotJW9w
dGlvbiB5eWxpbmVubyByZWVudHJhbnQgYmlzb24tYnJpZGdlCi0lb3B0aW9uIHN0YWNrCislb3B0
aW9uIHl5bGluZW5vIHJlZW50cmFudCBiaXNvbi1icmlkZ2UgYmlzb24tbG9jYXRpb25zCiAlb3B0
aW9uIGV4dHJhLXR5cGU9IlRQYXJzZUNvbnRleHQqIgotJXggQ09NTUVOVCBGSUVMRFMKIAogRCAg
ICAgICAgICAgWzAtOV0KIEwgICAgICAgICAgIFthLXpBLVpfXQpAQCAtNzAsNzMgKzcxLDYwIEBA
IE8gICAgICAgICAgIFswLTddCiAKICUlCiAKLSV7Ci0gICAgVFBhcnNlQ29udGV4dCogY29udGV4
dCA9IHl5ZXh0cmE7Ci0lfQotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMgKi8KLSIvLyJb
XlxuXSogOworImludmFyaWFudCIgICAgeyByZXR1cm4gSU5WQVJJQU5UOyB9CisiaGlnaHAiICAg
ICAgICB7IHJldHVybiBISUdIX1BSRUNJU0lPTjsgfQorIm1lZGl1bXAiICAgICAgeyByZXR1cm4g
TUVESVVNX1BSRUNJU0lPTjsgfQorImxvd3AiICAgICAgICAgeyByZXR1cm4gTE9XX1BSRUNJU0lP
TjsgfQorInByZWNpc2lvbiIgICAgeyByZXR1cm4gUFJFQ0lTSU9OOyB9CisKKyJhdHRyaWJ1dGUi
ICAgIHsgcmV0dXJuIEFUVFJJQlVURTsgfQorImNvbnN0IiAgICAgICAgeyByZXR1cm4gQ09OU1Rf
UVVBTDsgfQorInVuaWZvcm0iICAgICAgeyByZXR1cm4gVU5JRk9STTsgfQorInZhcnlpbmciICAg
ICAgeyByZXR1cm4gVkFSWUlORzsgfQorCisiYnJlYWsiICAgICAgICB7IHJldHVybiBCUkVBSzsg
fQorImNvbnRpbnVlIiAgICAgeyByZXR1cm4gQ09OVElOVUU7IH0KKyJkbyIgICAgICAgICAgIHsg
cmV0dXJuIERPOyB9CisiZm9yIiAgICAgICAgICB7IHJldHVybiBGT1I7IH0KKyJ3aGlsZSIgICAg
ICAgIHsgcmV0dXJuIFdISUxFOyB9CisKKyJpZiIgICAgICAgICAgIHsgcmV0dXJuIElGOyB9Cisi
ZWxzZSIgICAgICAgICB7IHJldHVybiBFTFNFOyB9CisKKyJpbiIgICAgICAgICAgIHsgcmV0dXJu
IElOX1FVQUw7IH0KKyJvdXQiICAgICAgICAgIHsgcmV0dXJuIE9VVF9RVUFMOyB9CisiaW5vdXQi
ICAgICAgICB7IHJldHVybiBJTk9VVF9RVUFMOyB9CisKKyJmbG9hdCIgICAgICAgIHsgcmV0dXJu
IEZMT0FUX1RZUEU7IH0KKyJpbnQiICAgICAgICAgIHsgcmV0dXJuIElOVF9UWVBFOyB9Cisidm9p
ZCIgICAgICAgICB7IHJldHVybiBWT0lEX1RZUEU7IH0KKyJib29sIiAgICAgICAgIHsgcmV0dXJu
IEJPT0xfVFlQRTsgfQorInRydWUiICAgICAgICAgeyB5eWx2YWwtPmxleC5iID0gdHJ1ZTsgIHJl
dHVybiBCT09MQ09OU1RBTlQ7IH0KKyJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZh
bHNlOyByZXR1cm4gQk9PTENPTlNUQU5UOyB9CisKKyJkaXNjYXJkIiAgICAgIHsgcmV0dXJuIERJ
U0NBUkQ7IH0KKyJyZXR1cm4iICAgICAgIHsgcmV0dXJuIFJFVFVSTjsgfQorCisibWF0MiIgICAg
ICAgICB7IHJldHVybiBNQVRSSVgyOyB9CisibWF0MyIgICAgICAgICB7IHJldHVybiBNQVRSSVgz
OyB9CisibWF0NCIgICAgICAgICB7IHJldHVybiBNQVRSSVg0OyB9CisKKyJ2ZWMyIiAgICAgICAg
IHsgcmV0dXJuIFZFQzI7IH0KKyJ2ZWMzIiAgICAgICAgIHsgcmV0dXJuIFZFQzM7IH0KKyJ2ZWM0
IiAgICAgICAgIHsgcmV0dXJuIFZFQzQ7IH0KKyJpdmVjMiIgICAgICAgIHsgcmV0dXJuIElWRUMy
OyB9CisiaXZlYzMiICAgICAgICB7IHJldHVybiBJVkVDMzsgfQorIml2ZWM0IiAgICAgICAgeyBy
ZXR1cm4gSVZFQzQ7IH0KKyJidmVjMiIgICAgICAgIHsgcmV0dXJuIEJWRUMyOyB9CisiYnZlYzMi
ICAgICAgICB7IHJldHVybiBCVkVDMzsgfQorImJ2ZWM0IiAgICAgICAgeyByZXR1cm4gQlZFQzQ7
IH0KKworInNhbXBsZXIyRCIgICAgICAgICAgeyByZXR1cm4gU0FNUExFUjJEOyB9Cisic2FtcGxl
ckN1YmUiICAgICAgICB7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQorInNhbXBsZXJFeHRlcm5hbE9F
UyIgeyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KKyJzYW1wbGVyMkRSZWN0IiAgICAg
IHsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAotICAgIC8qIE11bHRpLWxpbmUgY29tbWVudHMg
Ki8KLSIvKiIgICAgICAgICAgIHsgeXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9
Ci08Q09NTUVOVD4uIHwKLTxDT01NRU5UPlxuIDsKLTxDT01NRU5UPiIqLyIgIHsgeXlfcG9wX3N0
YXRlKHl5c2Nhbm5lcik7IH0KLQotImludmFyaWFudCIgICAgeyByZXR1cm4oSU5WQVJJQU5UKTsg
fQotImhpZ2hwIiAgICAgICAgeyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Ci0ibWVkaXVtcCIg
ICAgICB7IHJldHVybihNRURJVU1fUFJFQ0lTSU9OKTsgfQotImxvd3AiICAgICAgICAgeyByZXR1
cm4oTE9XX1BSRUNJU0lPTik7IH0KLSJwcmVjaXNpb24iICAgIHsgcmV0dXJuKFBSRUNJU0lPTik7
IH0KLQotImF0dHJpYnV0ZSIgICAgeyByZXR1cm4oQVRUUklCVVRFKTsgfQotImNvbnN0IiAgICAg
ICAgeyByZXR1cm4oQ09OU1RfUVVBTCk7IH0KLSJ1bmlmb3JtIiAgICAgIHsgcmV0dXJuKFVOSUZP
Uk0pOyB9Ci0idmFyeWluZyIgICAgICB7IHJldHVybihWQVJZSU5HKTsgfQotCi0iYnJlYWsiICAg
ICAgICB7IHJldHVybihCUkVBSyk7IH0KLSJjb250aW51ZSIgICAgIHsgcmV0dXJuKENPTlRJTlVF
KTsgfQotImRvIiAgICAgICAgICAgeyByZXR1cm4oRE8pOyB9Ci0iZm9yIiAgICAgICAgICB7IHJl
dHVybihGT1IpOyB9Ci0id2hpbGUiICAgICAgICB7IHJldHVybihXSElMRSk7IH0KLQotImlmIiAg
ICAgICAgICAgeyByZXR1cm4oSUYpOyB9Ci0iZWxzZSIgICAgICAgICB7IHJldHVybihFTFNFKTsg
fQotCi0iaW4iICAgICAgICAgICB7IHJldHVybihJTl9RVUFMKTsgfQotIm91dCIgICAgICAgICAg
eyByZXR1cm4oT1VUX1FVQUwpOyB9Ci0iaW5vdXQiICAgICAgICB7IHJldHVybihJTk9VVF9RVUFM
KTsgfQotCi0iZmxvYXQiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJl
dHVybihGTE9BVF9UWVBFKTsgfQotImludCIgICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5
cGUgPSB0cnVlOyByZXR1cm4oSU5UX1RZUEUpOyB9Ci0idm9pZCIgICAgICAgICB7IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihWT0lEX1RZUEUpOyB9Ci0iYm9vbCIgICAgICAg
ICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihCT09MX1RZUEUpOyB9Ci0i
dHJ1ZSIgICAgICAgICB7IHl5bHZhbC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuKEJPT0xDT05TVEFO
VCk7IH0KLSJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyByZXR1cm4oQk9P
TENPTlNUQU5UKTsgfQotCi0iZGlzY2FyZCIgICAgICB7IHJldHVybihESVNDQVJEKTsgfQotInJl
dHVybiIgICAgICAgeyByZXR1cm4oUkVUVVJOKTsgfQotCi0ibWF0MiIgICAgICAgICB7IGNvbnRl
eHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVgyKTsgfQotIm1hdDMiICAgICAg
ICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMyk7IH0KLSJt
YXQ0IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJ
WDQpOyB9Ci0KLSJ2ZWMyIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsg
cmV0dXJuIChWRUMyKTsgfQotInZlYzMiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4gKFZFQzMpOyB9Ci0idmVjNCIgICAgICAgICB7IGNvbnRleHQtPmxleEFm
dGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KLSJpdmVjMiIgICAgICAgIHsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMik7IH0KLSJpdmVjMyIgICAgICAg
IHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMyk7IH0KLSJpdmVj
NCIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDNCk7
IH0KLSJidmVjMiIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJu
IChCVkVDMik7IH0KLSJidmVjMyIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuIChCVkVDMyk7IH0KLSJidmVjNCIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KLQotInNhbXBsZXIyRCIgICAgICAgeyBjb250
ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Ci0ic2FtcGxlckN1
YmUiICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSQ1VC
RTsgfQotInNhbXBsZXJFeHRlcm5hbE9FUyIgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVl
OyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KLSJzYW1wbGVyMkRSZWN0IiB7IGNvbnRl
eHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9Ci0KLSJzdHJ1
Y3QiICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKFNUUlVDVCk7
IH0KKyJzdHJ1Y3QiICAgICAgIHsgcmV0dXJuIFNUUlVDVDsgfQogCiAiYXNtIiAgICAgICAgICB7
IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIApAQCAtMTgzLDEzICsxNzEsMTEg
QEAgTyAgICAgICAgICAgWzAtN10KICJmdmVjMyIgICAgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dv
cmQoeXlzY2FubmVyKTsgfQogImZ2ZWM0IiAgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5
eXNjYW5uZXIpOyB9CiAKLSJzYW1wbGVyMUQiICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlz
Y2FubmVyKTsgfQotInNhbXBsZXIzRCIgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5u
ZXIpOyB9Ci0KLSJzYW1wbGVyMURTaGFkb3ciIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2Fu
bmVyKTsgfQotInNhbXBsZXIyRFNoYWRvdyIgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5u
ZXIpOyB9Ci0KLSJzYW1wbGVyM0RSZWN0IiB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5l
cik7IH0KKyJzYW1wbGVyMUQiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nh
bm5lcik7IH0KKyJzYW1wbGVyM0QiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5
c2Nhbm5lcik7IH0KKyJzYW1wbGVyMURTaGFkb3ciICAgICB7IHJldHVybiByZXNlcnZlZF93b3Jk
KHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMkRTaGFkb3ciICAgICB7IHJldHVybiByZXNlcnZlZF93
b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0RSZWN0IiAgICAgICB7IHJldHVybiByZXNlcnZl
ZF93b3JkKHl5c2Nhbm5lcik7IH0KICJzYW1wbGVyMkRSZWN0U2hhZG93IiB7IHJldHVybiByZXNl
cnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAogInNpemVvZiIgICAgICAgeyByZXR1cm4gcmVzZXJ2
ZWRfd29yZCh5eXNjYW5uZXIpOyB9CkBAIC0yMDMsNzIgKzE4OSw2NCBAQCBPICAgICAgICAgICBb
MC03XQogICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKIH0KIAotMFt4WF17SH0rICAg
ICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAw
LCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KLTB7T30rICAgICAgICAgICAgIHsgeXlsdmFs
LT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4o
SU5UQ09OU1RBTlQpOyB9Ci0we0R9KyAgICAgICAgICAgICB7IGNvbnRleHQtPmVycm9yKHl5bGlu
ZW5vLCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+cmVjb3Zlcigp
OyByZXR1cm4gMDt9Ci17RH0rICAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQot
Ci17RH0re0V9ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
YXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQote0R9KyIuIntEfSoo
e0V9KT8geyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4
dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KLSIuIntEfSsoe0V9KT8gICAgIHsgeXlsdmFs
LT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZM
T0FUQ09OU1RBTlQpOyB9Ci0KLSIrPSIgICAgICAgICAgICB7ICByZXR1cm4oQUREX0FTU0lHTik7
IH0KLSItPSIgICAgICAgICAgICB7ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KLSIqPSIgICAgICAg
ICAgICB7ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KLSIvPSIgICAgICAgICAgICB7ICByZXR1cm4o
RElWX0FTU0lHTik7IH0KLSIlPSIgICAgICAgICAgICB7ICByZXR1cm4oTU9EX0FTU0lHTik7IH0K
LSI8PD0iICAgICAgICAgICB7ICByZXR1cm4oTEVGVF9BU1NJR04pOyB9Ci0iPj49IiAgICAgICAg
ICAgeyAgcmV0dXJuKFJJR0hUX0FTU0lHTik7IH0KLSImPSIgICAgICAgICAgICB7ICByZXR1cm4o
QU5EX0FTU0lHTik7IH0KLSJePSIgICAgICAgICAgICB7ICByZXR1cm4oWE9SX0FTU0lHTik7IH0K
LSJ8PSIgICAgICAgICAgICB7ICByZXR1cm4oT1JfQVNTSUdOKTsgfQotCi0iKysiICAgICAgICAg
ICAgeyAgcmV0dXJuKElOQ19PUCk7IH0KLSItLSIgICAgICAgICAgICB7ICByZXR1cm4oREVDX09Q
KTsgfQotIiYmIiAgICAgICAgICAgIHsgIHJldHVybihBTkRfT1ApOyB9Ci0ifHwiICAgICAgICAg
ICAgeyAgcmV0dXJuKE9SX09QKTsgfQotIl5eIiAgICAgICAgICAgIHsgIHJldHVybihYT1JfT1Ap
OyB9Ci0iPD0iICAgICAgICAgICAgeyAgcmV0dXJuKExFX09QKTsgfQotIj49IiAgICAgICAgICAg
IHsgIHJldHVybihHRV9PUCk7IH0KLSI9PSIgICAgICAgICAgICB7ICByZXR1cm4oRVFfT1ApOyB9
Ci0iIT0iICAgICAgICAgICAgeyAgcmV0dXJuKE5FX09QKTsgfQotIjw8IiAgICAgICAgICAgIHsg
IHJldHVybihMRUZUX09QKTsgfQotIj4+IiAgICAgICAgICAgIHsgIHJldHVybihSSUdIVF9PUCk7
IH0KLSI7IiAgICAgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1
cm4oU0VNSUNPTE9OKTsgfQotKCJ7InwiPCUiKSAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gZmFsc2U7IHJldHVybihMRUZUX0JSQUNFKTsgfQotKCJ9InwiJT4iKSAgICAgIHsgcmV0dXJu
KFJJR0hUX0JSQUNFKTsgfQotIiwiICAgICAgICAgeyBpZiAoY29udGV4dC0+aW5UeXBlUGFyZW4p
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Ci0iOiIgICAg
ICAgICB7IHJldHVybihDT0xPTik7IH0KLSI9IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gZmFsc2U7IHJldHVybihFUVVBTCk7IH0KLSIoIiAgICAgICAgIHsgY29udGV4dC0+bGV4
QWZ0ZXJUeXBlID0gZmFsc2U7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gdHJ1ZTsgcmV0dXJuKExF
RlRfUEFSRU4pOyB9Ci0iKSIgICAgICAgICB7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gZmFsc2U7
IHJldHVybihSSUdIVF9QQVJFTik7IH0KLSgiWyJ8Ijw6IikgICAgICB7IHJldHVybihMRUZUX0JS
QUNLRVQpOyB9Ci0oIl0ifCI6PiIpICAgICAgeyByZXR1cm4oUklHSFRfQlJBQ0tFVCk7IH0KLSIu
IiAgICAgICAgIHsgQkVHSU4oRklFTERTKTsgIHJldHVybihET1QpOyB9Ci0iISIgICAgICAgICB7
IHJldHVybihCQU5HKTsgfQotIi0iICAgICAgICAgeyByZXR1cm4oREFTSCk7IH0KLSJ+IiAgICAg
ICAgIHsgcmV0dXJuKFRJTERFKTsgfQotIisiICAgICAgICAgeyByZXR1cm4oUExVUyk7IH0KLSIq
IiAgICAgICAgIHsgcmV0dXJuKFNUQVIpOyB9Ci0iLyIgICAgICAgICB7IHJldHVybihTTEFTSCk7
IH0KLSIlIiAgICAgICAgIHsgcmV0dXJuKFBFUkNFTlQpOyB9Ci0iPCIgICAgICAgICB7IHJldHVy
bihMRUZUX0FOR0xFKTsgfQotIj4iICAgICAgICAgeyByZXR1cm4oUklHSFRfQU5HTEUpOyB9Ci0i
fCIgICAgICAgICB7IHJldHVybihWRVJUSUNBTF9CQVIpOyB9Ci0iXiIgICAgICAgICB7IHJldHVy
bihDQVJFVCk7IH0KLSImIiAgICAgICAgIHsgcmV0dXJuKEFNUEVSU0FORCk7IH0KLSI/IiAgICAg
ICAgIHsgcmV0dXJuKFFVRVNUSU9OKTsgfQotCi08RklFTERTPntMfSh7TH18e0R9KSogeyAKLSAg
ICBCRUdJTihJTklUSUFMKTsKLSAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmlu
Zyh5eXRleHQpOyAKLSAgICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwotfQotPEZJRUxEUz5bIFx0
XHZcZlxyXSB7fQotCi1bIFx0XHZcblxmXHJdICAgeyAgfQotPCo+PDxFT0Y+PiAgICAgIHsgY29u
dGV4dC0+QWZ0ZXJFT0YgPSB0cnVlOyB5eXRlcm1pbmF0ZSgpOyB9Ci08Kj4uICAgICAgICAgICAg
eyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBjaGFyIiwgeXl0ZXh0LCAiIik7
IHJldHVybiAwOyB9CiswW3hYXXtIfSsgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Cisw
e099KyAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRv
bCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Cit7RH0rICAgICAgICAgICAg
ICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDAp
KTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CisKK3tEfSt7RX0gICAgICAgICAgIHsgeXlsdmFsLT5s
ZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FU
Q09OU1RBTlQ7IH0KK3tEfSsiLiJ7RH0qKHtFfSk/IHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19j
YXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKyIu
IntEfSsoe0V9KT8gICAgIHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9m
X2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKworIis9IiAgICAgICAgICAg
IHsgcmV0dXJuIEFERF9BU1NJR047IH0KKyItPSIgICAgICAgICAgICB7IHJldHVybiBTVUJfQVNT
SUdOOyB9CisiKj0iICAgICAgICAgICAgeyByZXR1cm4gTVVMX0FTU0lHTjsgfQorIi89IiAgICAg
ICAgICAgIHsgcmV0dXJuIERJVl9BU1NJR047IH0KKyIlPSIgICAgICAgICAgICB7IHJldHVybiBN
T0RfQVNTSUdOOyB9CisiPDw9IiAgICAgICAgICAgeyByZXR1cm4gTEVGVF9BU1NJR047IH0KKyI+
Pj0iICAgICAgICAgICB7IHJldHVybiBSSUdIVF9BU1NJR047IH0KKyImPSIgICAgICAgICAgICB7
IHJldHVybiBBTkRfQVNTSUdOOyB9CisiXj0iICAgICAgICAgICAgeyByZXR1cm4gWE9SX0FTU0lH
TjsgfQorInw9IiAgICAgICAgICAgIHsgcmV0dXJuIE9SX0FTU0lHTjsgfQorCisiKysiICAgICAg
ICAgICAgeyByZXR1cm4gSU5DX09QOyB9CisiLS0iICAgICAgICAgICAgeyByZXR1cm4gREVDX09Q
OyB9CisiJiYiICAgICAgICAgICAgeyByZXR1cm4gQU5EX09QOyB9CisifHwiICAgICAgICAgICAg
eyByZXR1cm4gT1JfT1A7IH0KKyJeXiIgICAgICAgICAgICB7IHJldHVybiBYT1JfT1A7IH0KKyI8
PSIgICAgICAgICAgICB7IHJldHVybiBMRV9PUDsgfQorIj49IiAgICAgICAgICAgIHsgcmV0dXJu
IEdFX09QOyB9CisiPT0iICAgICAgICAgICAgeyByZXR1cm4gRVFfT1A7IH0KKyIhPSIgICAgICAg
ICAgICB7IHJldHVybiBORV9PUDsgfQorIjw8IiAgICAgICAgICAgIHsgcmV0dXJuIExFRlRfT1A7
IH0KKyI+PiIgICAgICAgICAgICB7IHJldHVybiBSSUdIVF9PUDsgfQorIjsiICAgICAgICAgICAg
IHsgcmV0dXJuIFNFTUlDT0xPTjsgfQorKCJ7InwiPCUiKSAgICAgIHsgcmV0dXJuIExFRlRfQlJB
Q0U7IH0KKygifSJ8IiU+IikgICAgICB7IHJldHVybiBSSUdIVF9CUkFDRTsgfQorIiwiICAgICAg
ICAgeyByZXR1cm4gQ09NTUE7IH0KKyI6IiAgICAgICAgIHsgcmV0dXJuIENPTE9OOyB9CisiPSIg
ICAgICAgICB7IHJldHVybiBFUVVBTDsgfQorIigiICAgICAgICAgeyByZXR1cm4gTEVGVF9QQVJF
TjsgfQorIikiICAgICAgICAgeyByZXR1cm4gUklHSFRfUEFSRU47IH0KKygiWyJ8Ijw6IikgIHsg
cmV0dXJuIExFRlRfQlJBQ0tFVDsgfQorKCJdInwiOj4iKSAgeyByZXR1cm4gUklHSFRfQlJBQ0tF
VDsgfQorIi4iICAgICAgICAgeyByZXR1cm4gRE9UOyB9CisiISIgICAgICAgICB7IHJldHVybiBC
QU5HOyB9CisiLSIgICAgICAgICB7IHJldHVybiBEQVNIOyB9CisifiIgICAgICAgICB7IHJldHVy
biBUSUxERTsgfQorIisiICAgICAgICAgeyByZXR1cm4gUExVUzsgfQorIioiICAgICAgICAgeyBy
ZXR1cm4gU1RBUjsgfQorIi8iICAgICAgICAgeyByZXR1cm4gU0xBU0g7IH0KKyIlIiAgICAgICAg
IHsgcmV0dXJuIFBFUkNFTlQ7IH0KKyI8IiAgICAgICAgIHsgcmV0dXJuIExFRlRfQU5HTEU7IH0K
KyI+IiAgICAgICAgIHsgcmV0dXJuIFJJR0hUX0FOR0xFOyB9CisifCIgICAgICAgICB7IHJldHVy
biBWRVJUSUNBTF9CQVI7IH0KKyJeIiAgICAgICAgIHsgcmV0dXJuIENBUkVUOyB9CisiJiIgICAg
ICAgICB7IHJldHVybiBBTVBFUlNBTkQ7IH0KKyI/IiAgICAgICAgIHsgcmV0dXJuIFFVRVNUSU9O
OyB9CisKK1sgXHRcdlxuXGZccl0geyB9Cis8PEVPRj4+ICAgIHsgeXl0ZXJtaW5hdGUoKTsgfQor
LiAgICAgICAgICB7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAKICUlCiAKQEAgLTI3OCw3
ICsyNTYsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6CiAgICAg
eXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8gMCA6IHRva2Vu
LnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAgbWVtY3B5KGJ1
ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3Vy
Y2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24ubGluZSksIHl5c2Nhbm5l
cik7CisgICAgeXlzZXRfY29sdW1uKHRva2VuLmxvY2F0aW9uLmZpbGUsIHl5c2Nhbm5lcik7Cisg
ICAgeXlzZXRfbGluZW5vKHRva2VuLmxvY2F0aW9uLmxpbmUsIHl5c2Nhbm5lcik7CiAKICAgICBp
ZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5wdXQgYnVmZmVy
IG92ZXJmbG93Iik7CkBAIC0yOTIsMTIgKzI3MSwxMCBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5f
dCB5eXNjYW5uZXIpIHsKICAgICAKICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVSOwogICAgIFRT
eW1ib2wqIHN5bWJvbCA9IHl5ZXh0cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0KTsKLSAgICBp
ZiAoeXlleHRyYS0+bGV4QWZ0ZXJUeXBlID09IGZhbHNlICYmIHN5bWJvbCAmJiBzeW1ib2wtPmlz
VmFyaWFibGUoKSkgeworICAgIGlmIChzeW1ib2wgJiYgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsK
ICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KHN5
bWJvbCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKSB7Ci0gICAgICAgICAg
ICB5eWV4dHJhLT5sZXhBZnRlclR5cGUgPSB0cnVlOworICAgICAgICBpZiAodmFyaWFibGUtPmlz
VXNlclR5cGUoKSkKICAgICAgICAgICAgIHRva2VuID0gVFlQRV9OQU1FOwotICAgICAgICB9CiAg
ICAgfQogICAgIHl5bHZhbC0+bGV4LnN5bWJvbCA9IHN5bWJvbDsKICAgICByZXR1cm4gdG9rZW47
CkBAIC0zMDYsMjIgKzI4MywxMSBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIp
IHsKIGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHN0cnVjdCB5
eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKIAotICAgIHl5ZXh0
cmEtPmVycm9yKHl5bGluZW5vLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4
dCwgIiIpOworICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbGxlZ2FsIHVzZSBvZiByZXNl
cnZlZCB3b3JkIiwgeXl0ZXh0LCAiIik7CiAgICAgeXlleHRyYS0+cmVjb3ZlcigpOwogICAgIHJl
dHVybiAwOwogfQogCi12b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Y2hhciogcmVhc29uKSB7Ci0gICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0
c190KikgY29udGV4dC0+c2Nhbm5lcjsKLQotICAgIGlmIChjb250ZXh0LT5BZnRlckVPRikgewot
ICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29uLCAidW5leHBlY3RlZCBFT0Yi
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29u
LCB5eXRleHQpOwotICAgIH0KLSAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci19Ci0KIGludCBnbHNs
YW5nX2luaXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5c2Nhbl90IHNj
YW5uZXIgPSBOVUxMOwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQsICZzY2FubmVy
KSkKQEAgLTM0NCw4ICszMTAsOCBAQCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFyc2VDb250ZXh0
KiBjb250CiBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qg
c3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAgVFBhcnNlQ29u
dGV4dCogY29udGV4dCkgewogICAgIHl5cmVzdGFydChOVUxMLCBjb250ZXh0LT5zY2FubmVyKTsK
LSAgICB5eXNldF9saW5lbm8oRW5jb2RlU291cmNlTG9jKDAsIDEpLCBjb250ZXh0LT5zY2FubmVy
KTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNlOworICAgIHl5c2V0X2NvbHVtbigwLCBj
b250ZXh0LT5zY2FubmVyKTsKKyAgICB5eXNldF9saW5lbm8oMSwgY29udGV4dC0+c2Nhbm5lcik7
CiAKICAgICAvLyBJbml0aWFsaXplIHByZXByb2Nlc3Nvci4KICAgICBpZiAoIWNvbnRleHQtPnBy
ZXByb2Nlc3Nvci5pbml0KGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHJldmlzaW9uIDE1MjU5
NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogLy8KLS8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KIC8vCkBAIC0zOSw3ICszOSw2IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBF
UyBQQVJTRVIgKGdsc2wKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAogI2RlZmlu
ZSBZWUVOQUJMRV9OTFMgMAotI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQogCiAjZGVmaW5l
IFlZTEVYX1BBUkFNIGNvbnRleHQtPnNjYW5uZXIKICV9CkBAIC00NywxMCArNDYsMTUgQEAgV0hJ
Q0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbAogJWV4cGVjdCAxIC8qIE9uZSBz
aGlmdCByZWR1Y2UgY29uZmxpY3QgYmVjYXVzZSBvZiBpZiB8IGVsc2UgKi8KICVwdXJlLXBhcnNl
cgogJXBhcnNlLXBhcmFtIHtUUGFyc2VDb250ZXh0KiBjb250ZXh0fQorJWxvY2F0aW9ucworCisl
Y29kZSByZXF1aXJlcyB7CisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxU
WVBFX0lTX0RFQ0xBUkVEIDEKK30KIAogJXVuaW9uIHsKICAgICBzdHJ1Y3QgewotICAgICAgICBU
U291cmNlTG9jIGxpbmU7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0
cmluZzsKICAgICAgICAgICAgIGZsb2F0IGY7CkBAIC02MCw3ICs2NCw2IEBAIFdISUNIIEdFTkVS
QVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwog
ICAgIH0gbGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAg
ICAgVE9wZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9k
ZSogaW50ZXJtTm9kZTsKQEAgLTc0LDIzICs3NywzMSBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdM
U0wgRVMgUEFSU0VSIChnbHNsCiAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKICAg
ICAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAgICAgICBUUGFyYW1ldGVyIHBh
cmFtOwotICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVMaW5lOwotICAgICAgICAgICAgVFR5cGVM
aXN0KiB0eXBlTGlzdDsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7CisgICAgICAgICAgICBU
RmllbGRMaXN0KiBmaWVsZExpc3Q7CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07CiB9CiAKICV7
Ci1leHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbF9wYXJhbSwgdm9pZCogeXlzY2FubmVy
KTsKLWV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hh
ciogcmVhc29uKTsKK2V4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBZWUxUWVBFKiB5
eWxsb2MsIHZvaWQqIHl5c2Nhbm5lcik7CitzdGF0aWMgdm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5
bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKTsKIAotI2Rl
ZmluZSBGUkFHX1ZFUlRfT05MWShTLCBMKSB7ICBcCi0gICAgaWYgKGNvbnRleHQtPnNoYWRlclR5
cGUgIT0gU0hfRlJBR01FTlRfU0hBREVSICYmICBcCi0gICAgICAgIGNvbnRleHQtPnNoYWRlclR5
cGUgIT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXAotICAgICAgICBjb250ZXh0LT5lcnJvcihMLCAi
IHN1cHBvcnRlZCBpbiB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVycyBvbmx5ICIsIFMpOyAgXAotICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7ICBcCi0gICAgfSAgXAotfQorI2RlZmluZSBZWUxMT0Nf
REVGQVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICBpZiAoWVlJRChOKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMSkuZmly
c3RfZmlsZTsgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMs
IDEpLmZpcnN0X2xpbmU7ICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xP
QyhSaHMsIE4pLmxhc3RfZmlsZTsgICAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0g
WVlSSFNMT0MoUmhzLCBOKS5sYXN0X2xpbmU7ICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBlbHNlIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAo
Q3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9maWxlOyAgIFwKKyAg
ICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsg
ICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3Rf
ZmlsZTsgICAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAw
KS5sYXN0X2xpbmU7ICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgVkVSVEVY
X09OTFkoUywgTCkgeyAgXAogICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX1ZFUlRF
WF9TSEFERVIpIHsgIFwKQEAgLTExNiw3ICsxMjcsNiBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQ
YXJzZUNvbnRleHQqIGNvbnRlCiAldG9rZW4gPGxleD4gU0FNUExFUjJEIFNBTVBMRVJDVUJFIFNB
TVBMRVJfRVhURVJOQUxfT0VTIFNBTVBMRVIyRFJFQ1QKIAogJXRva2VuIDxsZXg+IElERU5USUZJ
RVIgVFlQRV9OQU1FIEZMT0FUQ09OU1RBTlQgSU5UQ09OU1RBTlQgQk9PTENPTlNUQU5UCi0ldG9r
ZW4gPGxleD4gRklFTERfU0VMRUNUSU9OCiAldG9rZW4gPGxleD4gTEVGVF9PUCBSSUdIVF9PUAog
JXRva2VuIDxsZXg+IElOQ19PUCBERUNfT1AgTEVfT1AgR0VfT1AgRVFfT1AgTkVfT1AKICV0b2tl
biA8bGV4PiBBTkRfT1AgT1JfT1AgWE9SX09QIE1VTF9BU1NJR04gRElWX0FTU0lHTiBBRERfQVNT
SUdOCkBAIC0xMjcsNiArMTM3LDcgQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0
KiBjb250ZQogJXRva2VuIDxsZXg+IENPTU1BIENPTE9OIEVRVUFMIFNFTUlDT0xPTiBCQU5HIERB
U0ggVElMREUgUExVUyBTVEFSIFNMQVNIIFBFUkNFTlQKICV0b2tlbiA8bGV4PiBMRUZUX0FOR0xF
IFJJR0hUX0FOR0xFIFZFUlRJQ0FMX0JBUiBDQVJFVCBBTVBFUlNBTkQgUVVFU1RJT04KIAorJXR5
cGUgPGxleD4gaWRlbnRpZmllcgogJXR5cGUgPGludGVybT4gYXNzaWdubWVudF9vcGVyYXRvciB1
bmFyeV9vcGVyYXRvcgogJXR5cGUgPGludGVybS5pbnRlcm1UeXBlZE5vZGU+IHZhcmlhYmxlX2lk
ZW50aWZpZXIgcHJpbWFyeV9leHByZXNzaW9uIHBvc3RmaXhfZXhwcmVzc2lvbgogJXR5cGUgPGlu
dGVybS5pbnRlcm1UeXBlZE5vZGU+IGV4cHJlc3Npb24gaW50ZWdlcl9leHByZXNzaW9uIGFzc2ln
bm1lbnRfZXhwcmVzc2lvbgpAQCAtMTU0LDggKzE2NSw4IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3Io
VFBhcnNlQ29udGV4dCogY29udGUKICV0eXBlIDxpbnRlcm0udHlwZT4gdHlwZV9xdWFsaWZpZXIg
ZnVsbHlfc3BlY2lmaWVkX3R5cGUgdHlwZV9zcGVjaWZpZXIKICV0eXBlIDxpbnRlcm0udHlwZT4g
dHlwZV9zcGVjaWZpZXJfbm9fcHJlYyB0eXBlX3NwZWNpZmllcl9ub25hcnJheQogJXR5cGUgPGlu
dGVybS50eXBlPiBzdHJ1Y3Rfc3BlY2lmaWVyCi0ldHlwZSA8aW50ZXJtLnR5cGVMaW5lPiBzdHJ1
Y3RfZGVjbGFyYXRvcgotJXR5cGUgPGludGVybS50eXBlTGlzdD4gc3RydWN0X2RlY2xhcmF0b3Jf
bGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QKKyV0eXBlIDxp
bnRlcm0uZmllbGQ+IHN0cnVjdF9kZWNsYXJhdG9yCisldHlwZSA8aW50ZXJtLmZpZWxkTGlzdD4g
c3RydWN0X2RlY2xhcmF0b3JfbGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gc3RydWN0X2RlY2xhcmF0
aW9uX2xpc3QKICV0eXBlIDxpbnRlcm0uZnVuY3Rpb24+IGZ1bmN0aW9uX2hlYWRlciBmdW5jdGlv
bl9kZWNsYXJhdG9yIGZ1bmN0aW9uX2lkZW50aWZpZXIKICV0eXBlIDxpbnRlcm0uZnVuY3Rpb24+
IGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMgZnVuY3Rpb25fY2FsbF9oZWFkZXIKICV0
eXBlIDxpbnRlcm0+IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVycyBmdW5jdGlv
bl9jYWxsX2hlYWRlcl9ub19wYXJhbWV0ZXJzIGZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyBmdW5jdGlv
bl9wcm90b3R5cGUKQEAgLTE2NCwxMyArMTc1LDE3IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBh
cnNlQ29udGV4dCogY29udGUKICVzdGFydCB0cmFuc2xhdGlvbl91bml0CiAlJQogCitpZGVudGlm
aWVyCisgICAgOiBJREVOVElGSUVSCisgICAgfCBUWVBFX05BTUUKKwogdmFyaWFibGVfaWRlbnRp
ZmllcgogICAgIDogSURFTlRJRklFUiB7CiAgICAgICAgIC8vIFRoZSBzeW1ib2wgdGFibGUgc2Vh
cmNoIHdhcyBkb25lIGluIHRoZSBsZXhpY2FsIHBoYXNlCiAgICAgICAgIGNvbnN0IFRTeW1ib2wq
IHN5bWJvbCA9ICQxLnN5bWJvbDsKICAgICAgICAgY29uc3QgVFZhcmlhYmxlKiB2YXJpYWJsZTsK
ICAgICAgICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigk
MS5saW5lLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIiwgJDEuc3RyaW5nLT5jX3N0cigpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIiwgJDEu
c3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgICAgICBU
VmFyaWFibGUqIGZha2VWYXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJDEuc3RyaW5nLCB0eXBlKTsK
QEAgLTE3OSwxMCArMTk0LDE3IEBAIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIFRoaXMgaWRlbnRpZmllciBjYW4gb25seSBiZSBhIHZhcmlhYmxl
IHR5cGUgc3ltYm9sCiAgICAgICAgICAgICBpZiAoISBzeW1ib2wtPmlzVmFyaWFibGUoKSkgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ2YXJpYWJsZSBleHBlY3Rl
ZCIsICQxLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDEsICJ2YXJpYWJsZSBleHBlY3RlZCIsICQxLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB2
YXJpYWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7CisKKyAgICAg
ICAgICAgIGlmIChjb250ZXh0LT5pc1ZhcmlhYmxlQnVpbHRJbih2YXJpYWJsZSkgJiYgCisgICAg
ICAgICAgICAgICAgIXZhcmlhYmxlLT5nZXRFeHRlbnNpb24oKS5lbXB0eSgpICYmCisgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjayhAMSwgdmFyaWFibGUtPmdldEV4
dGVuc2lvbigpKSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcs
IGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVyeSwgYW5kIHRoZSBwb29sCkBAIC0xOTEsMTEgKzIx
MywxMiBAQCB2YXJpYWJsZV9pZGVudGlmaWVyCiAgICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlw
ZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ICkgewogICAgICAgICAgICAgQ29uc3RhbnRV
bmlvbiogY29uc3RBcnJheSA9IHZhcmlhYmxlLT5nZXRDb25zdFBvaW50ZXIoKTsKICAgICAgICAg
ICAgIFRUeXBlIHQodmFyaWFibGUtPmdldFR5cGUoKSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICQxLmxpbmUp
OworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bihjb25zdEFycmF5LCB0LCBAMSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJp
YWJsZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlLT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTIwOSwyMiArMjMyLDIyIEBAIHByaW1h
cnlfZXhwcmVzc2lvbgogICAgICAgICAvLyBjaGVjayBmb3Igb3ZlcmZsb3cgZm9yIGNvbnN0YW50
cwogICAgICAgICAvLwogICAgICAgICBpZiAoYWJzKCQxLmkpID49ICgxIDw8IDE2KSkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJm
bG93IiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICIgaW50ZWdlciBjb25z
dGFudCBvdmVyZmxvdyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgkMS5pKTsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAgfQogICAgIHwg
RkxPQVRDT05TVEFOVCB7CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KCQxLmYpOwot
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDEubGluZSk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAg
ICAgfQogICAgIHwgQk9PTENPTlNUQU5UIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29u
c3QoJDEuYik7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
ICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCBAMSk7CiAgICAgfQogICAgIHwgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIHsK
ICAgICAgICAgJCQgPSAkMjsKQEAgLTIzOCwxMDEgKzI2MSw5NyBAQCBwb3N0Zml4X2V4cHJlc3Np
b24KICAgICB8IHBvc3RmaXhfZXhwcmVzc2lvbiBMRUZUX0JSQUNLRVQgaW50ZWdlcl9leHByZXNz
aW9uIFJJR0hUX0JSQUNLRVQgewogICAgICAgICBpZiAoISQxLT5pc0FycmF5KCkgJiYgISQxLT5p
c01hdHJpeCgpICYmICEkMS0+aXNWZWN0b3IoKSkgewogICAgICAgICAgICAgaWYgKCQxLT5nZXRB
c1N5bWJvbE5vZGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAi
IGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAk
MS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAyLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5
LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAkMS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgp
LmNfc3RyKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCQyLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwg
b3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoQDIsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVj
dG9yICIsICJleHByZXNzaW9uIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QgJiYgJDMtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICBp
ZiAoJDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKLSAgICAg
ICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlOb2RlKCQzLT5nZXRBc0NvbnN0
YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCksICQxLCAkMi5s
aW5lKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkpIHsgIC8vIGNvbnN0
YW50IGZvbGRpbmcgZm9yIHZlY3RvcnMKLSAgICAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZp
ZWxkczsKLSAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKLSAgICAgICAgICAgICAgICBm
aWVsZHMub2Zmc2V0c1swXSA9ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7IC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3YXkgYmVjYXVz
ZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5Ci0gICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwgJDIubGluZSk7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9y
IG1hdHJpY2VzCi0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdE1hdHJpeE5v
ZGUoJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJ
Q29uc3QoKSwgJDEsICQyLmxpbmUpOworICAgICAgICBpZiAoJDMtPmdldFF1YWxpZmllcigpID09
IEV2cUNvbnN0KSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSAkMy0+Z2V0QXNDb25zdGFudFVu
aW9uKCktPmdldElDb25zdCgwKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBpbmZvU3RyZWFtOworICAgICAgICAgICAgICAg
IGluZm9TdHJlYW0gPDwgaW5kZXg7CisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgaW5mbyA9
IGluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJu
ZWdhdGl2ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOworICAgICAgICAgICAgICAgIGluZGV4ID0gMDsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICgkMy0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoKCQxLT5pc1ZlY3RvcigpIHx8ICQxLT5pc01h
dHJpeCgpKSAmJiAkMS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gJDMtPmdldEFzQ29u
c3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSAmJiAhJDEt
PmlzQXJyYXkoKSApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0
cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZp
ZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigp
LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsK
LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgZXh0
cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCQxLT5p
c0FycmF5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdl
dEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJDEt
PmdldFR5cGUoKS5nZXRNYXhBcnJheVNpemUoKSA8PSAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCkt
PmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNldE1heFNpemUoJDEtPmdldEFzU3lt
Ym9sTm9kZSgpLCAkMS0+Z2V0VHlwZVBvaW50ZXIoKSwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigp
LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgdHJ1ZSwgJDIubGluZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgkMS0+Z2V0QXNTeW1ib2xO
b2RlKCksICQxLT5nZXRUeXBlUG9pbnRlcigpLCAwLCBmYWxzZSwgJDIubGluZSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICggJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJ
Q29uc3QoKSA+PSAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0
IG9mIHJhbmdlICciIDw8ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBv
aW50ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIiciOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIiwgIlsiLCBleHRy
YUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4
KEVPcEluZGV4RGlyZWN0LCAkMSwgJDMsICQyLmxpbmUpOworICAgICAgICAgICAgaWYgKCQxLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoJDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKKyAgICAg
ICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdEFycmF5Tm9kZShpbmRleCwgJDEs
IEAyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc1ZlY3RvcigpKSB7ICAvLyBj
b25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAgICAgICAgICAgIFRWZWN0b3JG
aWVsZHMgZmllbGRzOworICAgICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKKyAgICAg
ICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVlZCB0byBkbyBp
dCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkKKyAgICAg
ICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAk
MSwgQDIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsgLy8g
Y29uc3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoaW5kZXgsICQxLCBAMik7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJy
YXkoKSAmJiAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgImFycmF5IG11c3QgYmUg
cmVkZWNsYXJlZCB3aXRoIGEgc2l6ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRoIGEgdmFyaWFi
bGUiKTsKKyAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoaW5kZXggPj0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBv
dXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0
cigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4ID0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSAt
IDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCgk
MS0+aXNWZWN0b3IoKSB8fCAkMS0+aXNNYXRyaXgoKSkgJiYgJDEtPmdldFR5cGUoKS5nZXROb21p
bmFsU2l6ZSgpIDw9IGluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFt
IDw8ICJmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFt
LnN0cigpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiIsICJbIiwg
ZXh0cmFJbmZvLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gICQxLT5nZXRUeXBlKCkuZ2V0Tm9taW5h
bFNpemUoKSAtIDE7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgJDEsICQzLCAk
Mi5saW5lKTsKKyAgICAgICAgICAgICAgICAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVu
aW9uQXJyYXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7CisgICAgICAgICAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCAkMywg
QDIpOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgJDEsICQzLCBA
Mik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCQkID09IDApIHsKICAgICAgICAgICAgIENvbnN0
YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAg
IHVuaW9uQXJyYXktPnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQs
IEVicEhpZ2gsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0
LCBFYnBIaWdoLCBFdnFDb25zdCksIEAyKTsKICAgICAgICAgfSBlbHNlIGlmICgkMS0+aXNBcnJh
eSgpKSB7CiAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSkKLSAgICAg
ICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLCAk
MS0+Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAkJC0+c2V0VHlw
ZShUVHlwZSgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKSk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+
Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCksICQxLT5p
c01hdHJpeCgpKSk7CiAKICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmll
cigpID09IEV2cUNvbnN0KQogICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5z
ZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgp
ICYmICQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAg
ICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24o
KSwgRXZxQ29uc3QsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKCQx
LT5pc01hdHJpeCgpKQotICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2lj
VHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxT
aXplKCkpKTsKLSAgICAgICAgZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkgJiYgJDEtPmdldFR5cGUo
KS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRU
eXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCkpOwot
ICAgICAgICBlbHNlIGlmICgkMS0+aXNWZWN0b3IoKSkKLSAgICAgICAgICAgICQkLT5zZXRUeXBl
KFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3Jh
cnkpKTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7
CisgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICQxLT5nZXRUeXBlKCkuZ2V0UXVh
bGlmaWVyKCkgPT0gRXZxQ29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAg
ICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lv
bigpLCBxdWFsaWZpZXIsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoJDEtPmlzVmVjdG9yKCkpIHsKKyAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0g
JDEtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZx
VGVtcG9yYXJ5OworICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlw
ZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIHF1YWxpZmllcikpOworICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgJCQtPnNldFR5cGUoJDEtPmdldFR5cGUoKSk7CisgICAgICAgIH0KICAgICB9
CiAgICAgfCBmdW5jdGlvbl9jYWxsIHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBw
b3N0Zml4X2V4cHJlc3Npb24gRE9UIEZJRUxEX1NFTEVDVElPTiB7CisgICAgfCBwb3N0Zml4X2V4
cHJlc3Npb24gRE9UIGlkZW50aWZpZXIgewogICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDMubGluZSwgImNhbm5vdCBhcHBseSBkb3Qgb3Bl
cmF0b3IgdG8gYW4gYXJyYXkiLCAiLiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMs
ICJjYW5ub3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS0+aXNW
ZWN0b3IoKSkgewogICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAg
ICBpZiAoISBjb250ZXh0LT5wYXJzZVZlY3RvckZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9t
aW5hbFNpemUoKSwgZmllbGRzLCAkMy5saW5lKSkgeworICAgICAgICAgICAgaWYgKCEgY29udGV4
dC0+cGFyc2VWZWN0b3JGaWVsZHMoKiQzLnN0cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZp
ZWxkcywgQDMpKSB7CiAgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CiAgICAgICAgICAg
ICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSAwOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCku
Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVj
dG9yIGZpZWxkcwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RWZWN0b3JO
b2RlKGZpZWxkcywgJDEsICQzLmxpbmUpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+
YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgJDEsIEAzKTsKICAgICAgICAgICAgICAgICBpZiAo
JCQgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAgICAgICAgICQkID0gJDE7CkBAIC0zNDEsMTMgKzM2MCwxMyBAQCBwb3N0Zml4X2V4
cHJlc3Npb24KICAgICAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJh
c2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0LCAoaW50KSAoKiQzLnN0cmlu
Zykuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFRTdHJp
bmcgdmVjdG9yU3RyaW5nID0gKiQzLnN0cmluZzsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmllbGRzLCAkMy5s
aW5lKTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRl
eChFT3BWZWN0b3JTd2l6emxlLCAkMSwgaW5kZXgsICQyLmxpbmUpOworICAgICAgICAgICAgICAg
IFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShm
aWVsZHMsIEAzKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRJbmRleChFT3BWZWN0b3JTd2l6emxlLCAkMSwgaW5kZXgsIEAyKTsKICAgICAgICAgICAgICAg
ICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24o
KSwgRXZxVGVtcG9yYXJ5LCAoaW50KSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsKICAgICAgICAgICAgIFRN
YXRyaXhGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VNYXRy
aXhGaWVsZHMoKiQzLnN0cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgJDMubGlu
ZSkpIHsKKyAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBhcnNlTWF0cml4RmllbGRzKCokMy5z
dHJpbmcsICQxLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsIEAzKSkgewogICAgICAgICAgICAg
ICAgIGZpZWxkcy53aG9sZVJvdyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9s
ZUNvbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy5yb3cgPSAwOwpAQCAtMzU2LDg0
ICszNzUsNzggQEAgcG9zdGZpeF9leHByZXNzaW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChmaWVsZHMud2hvbGVSb3cgfHwgZmllbGRzLndob2xlQ29sKSB7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1w
bGVtZW50ZWQgeWV0IiwgIi4iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwg
IiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgICAgIHVu
aW9uQXJyYXktPnNldElDb25zdCgwKTsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGlu
ZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDMubGluZSk7Ci0gICAgICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJl
Y3QsICQxLCBpbmRleCwgJDIubGluZSk7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBp
bmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAzKTsKKyAgICAgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwg
JDEsIGluZGV4LCBAMik7CiAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdl
dEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksRXZxVGVtcG9yYXJ5LCAkMS0+Z2V0Tm9t
aW5hbFNpemUoKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBDb25z
dGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAg
ICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGZpZWxkcy5jb2wgKiAkMS0+Z2V0Tm9taW5hbFNp
emUoKSArIGZpZWxkcy5yb3cpOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXgg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMy5saW5lKTsKLSAgICAgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwg
JDEsIGluZGV4LCAkMi5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDMpOworICAgICAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwg
aW5kZXgsIEAyKTsKICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFz
aWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKCQxLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgICAg
IGJvb2wgZmllbGRGb3VuZCA9IGZhbHNlOwotICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBm
aWVsZHMgPSAkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOwotICAgICAgICAgICAgaWYgKGZpZWxk
cyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInN0cnVj
dHVyZSBoYXMgbm8gZmllbGRzIiwgIkludGVybmFsIEVycm9yIik7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOwotICAgICAgICAgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICgoKmZpZWxkcylbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKiQzLnN0cmlu
ZykgewotICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+
ZmllbGRzKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgICAgIGZvciAo
aSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmll
bGRzW2ldLT5uYW1lKCkgPT0gKiQzLnN0cmluZykgeworICAgICAgICAgICAgICAgICAgICBmaWVs
ZEZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0KCokMy5zdHJp
bmcsICQxLCAkMi5saW5lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkJC0+c2V0VHlwZSgqKCpmaWVsZHMpW2ldLnR5cGUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNoYW5nZSB0aGUgcXVhbGlmaWVyIG9mIHRoZSByZXR1cm4gdHlwZSwgbm90
IG9mIHRoZSBzdHJ1Y3R1cmUgZmllbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBh
cyB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1
Y3R1cmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigp
LT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3Rh
bnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksICooKmZpZWxkcylbaV0udHlwZSwgJDMubGluZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChF
T3BJbmRleERpcmVjdFN0cnVjdCwgJDEsIGluZGV4LCAkMi5saW5lKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICQkLT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoZmllbGRGb3VuZCkgeworICAgICAgICAgICAgICAgIGlmICgkMS0+
Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAgICAgICAgICAg
ICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RTdHJ1Y3QoKiQzLnN0cmluZywgJDEsIEAyKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCQkID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICQkID0gJDE7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0
eXBlLCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBmaWVsZAorICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHZhcmlvdXMg
c3RydWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigp
LT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIu
bGluZSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAg
ICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOworICAgICAgICAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRJQ29uc3QoaSk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5k
ZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAq
ZmllbGRzW2ldLT50eXBlKCksIEAzKTsKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICQxLCBpbmRleCwg
QDIpOworICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkp
OwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoQDIsICIgbm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1cmUiLCAkMy5z
dHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAg
ICAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBmaWVsZCBzZWxlY3Rpb24gcmVx
dWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIsICQz
LnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiBmaWVs
ZCBzZWxlY3Rpb24gcmVxdWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0
IGhhbmQgc2lkZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgICAgIC8vIGRv
bid0IGRlbGV0ZSAkMy5zdHJpbmcsIGl0J3MgZnJvbSB0aGUgcG9vbAogICAgIH0KICAgICB8IHBv
c3RmaXhfZXhwcmVzc2lvbiBJTkNfT1AgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJy
b3JDaGVjaygkMi5saW5lLCAiKysiLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVF
cnJvckNoZWNrKEAyLCAiKysiLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0
SW5jcmVtZW50LCAkMSwgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdEluY3JlbWVudCwg
JDEsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDIubGluZSwgIisrIiwgJDEtPmdldENv
bXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKEAyLCAi
KysiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcG9z
dGZpeF9leHByZXNzaW9uIERFQ19PUCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJv
ckNoZWNrKCQyLmxpbmUsICItLSIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVy
cm9yQ2hlY2soQDIsICItLSIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RE
ZWNyZW1lbnQsICQxLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0RGVjcmVtZW50LCAk
MSwgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMi5saW5lLCAiLS0iLCAkMS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDIsICIt
LSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTQ2MSwxOCArNDc0LDE4
IEBAIGZ1bmN0aW9uX2NhbGwKICAgICAgICAgICAgIC8vIFRoZWlyIHBhcmFtZXRlcnMgd2lsbCBi
ZSB2ZXJpZmllZCBhbGdvcml0aG1pY2FsbHkuCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAg
VFR5cGUgdHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOyAgLy8gdXNlIHRoaXMgdG8gZ2V0IHRo
ZSB0eXBlIGJhY2sKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1Y3RvckVycm9yQ2hl
Y2soJDEubGluZSwgJDEuaW50ZXJtTm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgeworICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVjayhAMSwgJDEuaW50ZXJtTm9k
ZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgewogICAgICAgICAgICAgICAgICQkID0gMDsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAvLyBJ
dCdzIGEgY29uc3RydWN0b3IsIG9mIHR5cGUgJ3R5cGUnLgogICAgICAgICAgICAgICAgIC8vCi0g
ICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvcigkMS5pbnRlcm1Ob2Rl
LCAmdHlwZSwgb3AsIGZuQ2FsbCwgJDEubGluZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5hZGRDb25zdHJ1Y3RvcigkMS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgQDEp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwgJDEubGluZSk7CisgICAg
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0
b3IoMCwgb3AsIEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICQkLT5zZXRUeXBlKHR5
cGUpOwogICAgICAgICB9IGVsc2UgewpAQCAtNDgxLDEzICs0OTQsMTMgQEAgZnVuY3Rpb25fY2Fs
bAogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIGNvbnN0IFRGdW5jdGlvbiogZm5DYW5kaWRh
dGU7CiAgICAgICAgICAgICBib29sIGJ1aWx0SW47Ci0gICAgICAgICAgICBmbkNhbmRpZGF0ZSA9
IGNvbnRleHQtPmZpbmRGdW5jdGlvbigkMS5saW5lLCBmbkNhbGwsICZidWlsdEluKTsKKyAgICAg
ICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKEAxLCBmbkNhbGwsICZi
dWlsdEluKTsKICAgICAgICAgICAgIGlmIChmbkNhbmRpZGF0ZSkgewogICAgICAgICAgICAgICAg
IC8vCiAgICAgICAgICAgICAgICAgLy8gQSBkZWNsYXJlZCBmdW5jdGlvbi4KICAgICAgICAgICAg
ICAgICAvLwogICAgICAgICAgICAgICAgIGlmIChidWlsdEluICYmICFmbkNhbmRpZGF0ZS0+Z2V0
RXh0ZW5zaW9uKCkuZW1wdHkoKSAmJgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRl
bnNpb25FcnJvckNoZWNrKCQxLmxpbmUsIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjayhAMSwgZm5D
YW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG9wID0gZm5D
YW5kaWRhdGUtPmdldEJ1aWx0SW5PcCgpOwpAQCAtNDk5LDcgKzUxMiw3IEBAIGZ1bmN0aW9uX2Nh
bGwKICAgICAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBUcmVhdCBpdCBsaWtlIGEgYnVpbHQtaW4gdW5hcnkgb3BlcmF0b3IuCiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkVW5hcnlNYXRoKG9wLCAkMS5pbnRlcm1Ob2RlLCAwLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRVbmFyeU1hdGgob3AsICQxLmludGVybU5vZGUsIEAxLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJidWlsdCBpbiB1
bmFyeSBvcGVyYXRvciBmdW5jdGlvbi4gIFR5cGU6ICIgPDwgc3RhdGljX2Nhc3Q8VEludGVybVR5
cGVkKj4oJDEuaW50ZXJtTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCk7CkBAIC01MDgsMTIgKzUy
MSwxMiBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWVlFUlJP
UjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNl
dEFnZ3JlZ2F0ZU9wZXJhdG9yKCQxLmludGVybUFnZ3JlZ2F0ZSwgb3AsICQxLmxpbmUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVn
YXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBvcCwgQDEpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyBhIHJlYWwgZnVuY3Rpb24gY2FsbAogCi0gICAgICAgICAgICAgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQxLmludGVybUFnZ3Jl
Z2F0ZSwgRU9wRnVuY3Rpb25DYWxsLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdn
cmVnYXRlLCBFT3BGdW5jdGlvbkNhbGwsIEAxKTsKICAgICAgICAgICAgICAgICAgICAgJCQtPnNl
dFR5cGUoZm5DYW5kaWRhdGUtPmdldFJldHVyblR5cGUoKSk7CiAKICAgICAgICAgICAgICAgICAg
ICAgLy8gdGhpcyBpcyBob3cgd2Uga25vdyB3aGV0aGVyIHRoZSBnaXZlbiBmdW5jdGlvbiBpcyBh
IGJ1aWx0SW4gZnVuY3Rpb24gb3IgYSB1c2VyIGRlZmluZWQgZnVuY3Rpb24KQEAgLTU0MCw3ICs1
NTMsNyBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAgICAgICAgICAgLy8gUHV0IG9uIGEgZHVtbXkg
bm9kZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1
bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25B
cnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDEpOwogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTUzLDcgKzU2
Niw3IEBAIGZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9kCiAgICAgICAgICQkID0gJDE7CiAgICAgfQog
ICAgIHwgcG9zdGZpeF9leHByZXNzaW9uIERPVCBmdW5jdGlvbl9jYWxsX2dlbmVyaWMgewotICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMy5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIs
ICIiKTsKKyAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9y
dGVkIiwgIiIpOwogICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICQkID0gJDM7
CiAgICAgfQpAQCAtNTYyLDExICs1NzUsOSBAQCBmdW5jdGlvbl9jYWxsX29yX21ldGhvZAogZnVu
Y3Rpb25fY2FsbF9nZW5lcmljCiAgICAgOiBmdW5jdGlvbl9jYWxsX2hlYWRlcl93aXRoX3BhcmFt
ZXRlcnMgUklHSFRfUEFSRU4gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICAkJC5saW5lID0g
JDIubGluZTsKICAgICB9CiAgICAgfCBmdW5jdGlvbl9jYWxsX2hlYWRlcl9ub19wYXJhbWV0ZXJz
IFJJR0hUX1BBUkVOIHsKICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxp
bmU7CiAgICAgfQogICAgIDsKIApAQCAtNTkyLDcgKzYwMyw3IEBAIGZ1bmN0aW9uX2NhbGxfaGVh
ZGVyX3dpdGhfcGFyYW1ldGVycwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcg
VFR5cGUoJDMtPmdldFR5cGUoKSkgfTsKICAgICAgICAgJDEuZnVuY3Rpb24tPmFkZFBhcmFtZXRl
cihwYXJhbSk7CiAgICAgICAgICQkLmZ1bmN0aW9uID0gJDEuZnVuY3Rpb247Ci0gICAgICAgICQk
LmludGVybU5vZGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRl
cm1Ob2RlLCAkMywgJDIubGluZSk7CisgICAgICAgICQkLmludGVybU5vZGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCAkMywgQDIpOwogICAgIH0K
ICAgICA7CiAKQEAgLTYxNywzOSArNjI4LDM5IEBAIGZ1bmN0aW9uX2lkZW50aWZpZXIKICAgICAg
ICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgaWYgKCQxLm1hdHJpeCkgewog
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2goJDEuc2l6ZSkgewotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0TWF0MjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoKCQxLnNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzI7ICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSAzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9
IEVPcENvbnN0cnVjdFZlYzM7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEZs
b2F0OyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVj
dFZlYzI7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0
cnVjdFZlYzM7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENv
bnN0cnVjdFZlYzQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0SW50Ogog
ICAgICAgICAgICAgICAgIHN3aXRjaCgkMS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAx
OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1
Y3RJbnQ7ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZFUlRf
T05MWSgiaXZlYzIiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzMiLCAkMS5s
aW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSA0OiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzQiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25z
dHJ1Y3RJVmVjNDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0
cnVjdEludDsgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3Ry
dWN0SVZlYzI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1
Y3RJVmVjMzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVj
dElWZWM0OyBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIEVidEJvb2w6CiAgICAgICAgICAgICAgICAgc3dpdGNoKCQxLnNp
emUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEJvb2w7ICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMiIsICQxLmxpbmUpOyBvcCA9
IEVPcENvbnN0cnVjdEJWZWMyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAg
IEZSQUdfVkVSVF9PTkxZKCJidmVjMyIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMz
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJi
dmVjNCIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWM0OyBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdEJWZWMzOyBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9wID09IEVPcE51bGwpIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiY2Fubm90IGNvbnN0cnVjdCB0aGlz
IHR5cGUiLCBnZXRCYXNpY1N0cmluZygkMS50eXBlKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDEsICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5n
KCQxLnR5cGUpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAgICAgJDEudHlwZSA9IEVidEZsb2F0OwogICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0RmxvYXQ7CkBAIC02NjEsMTQgKzY3Miw3IEBAIGZ1bmN0aW9uX2lkZW50aWZpZXIKICAg
ICAgICAgJCQgPSBmdW5jdGlvbjsKICAgICB9CiAgICAgfCBJREVOVElGSUVSIHsKLSAgICAgICAg
aWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lk
LCBFYnBVbmRlZmluZWQpOwotICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5j
dGlvbigkMS5zdHJpbmcsIHR5cGUpOwotICAgICAgICAkJCA9IGZ1bmN0aW9uOwotICAgIH0KLSAg
ICB8IEZJRUxEX1NFTEVDVElPTiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9y
Q2hlY2soJDEubGluZSwgKiQxLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZl
ZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAg
IFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCQxLnN0cmluZywgdHlwZSk7CkBA
IC02ODEsMjggKzY4NSwyOCBAQCB1bmFyeV9leHByZXNzaW9uCiAgICAgICAgICQkID0gJDE7CiAg
ICAgfQogICAgIHwgSU5DX09QIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4
dC0+bFZhbHVlRXJyb3JDaGVjaygkMS5saW5lLCAiKysiLCAkMikpCisgICAgICAgIGlmIChjb250
ZXh0LT5sVmFsdWVFcnJvckNoZWNrKEAxLCAiKysiLCAkMikpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5
TWF0aChFT3BQcmVJbmNyZW1lbnQsICQyLCAkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVJ
bmNyZW1lbnQsICQyLCBAMSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQg
PT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsICIrKyIs
ICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BF
cnJvcihAMSwgIisrIiwgJDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgfQogICAgIH0K
ICAgICB8IERFQ19PUCB1bmFyeV9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxW
YWx1ZUVycm9yQ2hlY2soJDEubGluZSwgIi0tIiwgJDIpKQorICAgICAgICBpZiAoY29udGV4dC0+
bFZhbHVlRXJyb3JDaGVjayhAMSwgIi0tIiwgJDIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgo
RU9wUHJlRGVjcmVtZW50LCAkMiwgJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVt
ZW50LCAkMiwgQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDAp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMS5saW5lLCAiLS0iLCAkMi0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3Io
QDEsICItLSIsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDI7CiAgICAgICAgIH0KICAgICB9CiAgICAg
fCB1bmFyeV9vcGVyYXRvciB1bmFyeV9leHByZXNzaW9uIHsKICAgICAgICAgaWYgKCQxLm9wICE9
IEVPcE51bGwpIHsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVu
YXJ5TWF0aCgkMS5vcCwgJDIsICQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgkMS5vcCwgJDIs
IEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewog
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yT3AgPSAiIjsKICAgICAgICAgICAgICAg
ICBzd2l0Y2goJDEub3ApIHsKQEAgLTcxMCw3ICs3MTQsNyBAQCB1bmFyeV9leHByZXNzaW9uCiAg
ICAgICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OiBlcnJvck9wID0gIiEiOyBicmVhazsK
ICAgICAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsIGVycm9yT3AsICQyLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJy
b3IoQDEsIGVycm9yT3AsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAg
ICAgIH0KQEAgLTcyMSwyOCArNzI1LDI2IEBAIHVuYXJ5X2V4cHJlc3Npb24KIC8vIEdyYW1tYXIg
Tm90ZTogIE5vIHRyYWRpdGlvbmFsIHN0eWxlIHR5cGUgY2FzdHMuCiAKIHVuYXJ5X29wZXJhdG9y
Ci0gICAgOiBQTFVTICB7ICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcE51bGw7IH0KLSAg
ICB8IERBU0ggIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTmVnYXRpdmU7IH0KLSAg
ICB8IEJBTkcgIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTG9naWNhbE5vdDsgfQor
ICAgIDogUExVUyAgeyAkJC5vcCA9IEVPcE51bGw7IH0KKyAgICB8IERBU0ggIHsgJCQub3AgPSBF
T3BOZWdhdGl2ZTsgfQorICAgIHwgQkFORyAgeyAkJC5vcCA9IEVPcExvZ2ljYWxOb3Q7IH0KICAg
ICA7CiAvLyBHcmFtbWFyIE5vdGU6ICBObyAnKicgb3IgJyYnIHVuYXJ5IG9wcy4gIFBvaW50ZXJz
IGFyZSBub3Qgc3VwcG9ydGVkLgogCiBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uCiAgICAgOiB1
bmFyeV9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbXVsdGlwbGljYXRpdmVfZXhwcmVz
c2lvbiBTVEFSIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgiKiIs
ICQyLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcE11bCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAkMSwg
JDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIqIiwgJDEtPmdldENv
bXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIqIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQz
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBtdWx0aXBsaWNh
dGl2ZV9leHByZXNzaW9uIFNMQVNIIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBGUkFHX1ZF
UlRfT05MWSgiLyIsICQyLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcERpdiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wRGl2LCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgk
JCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIv
IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIvIiwgJDEtPmdldENvbXBsZXRl
U3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTc1MiwxNyAr
NzU0LDE3IEBAIG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24KIGFkZGl0aXZlX2V4cHJlc3Npb24K
ICAgICA6IG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBhZGRp
dGl2ZV9leHByZXNzaW9uIFBMVVMgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiB7Ci0gICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wQWRkLCAkMSwgJDMs
ICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIisiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cihAMiwgIisiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5n
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAk
MTsKICAgICAgICAgfQogICAgIH0KICAgICB8IGFkZGl0aXZlX2V4cHJlc3Npb24gREFTSCBtdWx0
aXBsaWNhdGl2ZV9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BTdWIsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9s
VGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRo
KEVPcFN1YiwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAo
JCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAi
LSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiLSIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CkBAIC03NzYsNDMg
Kzc3OCw0MyBAQCBzaGlmdF9leHByZXNzaW9uCiByZWxhdGlvbmFsX2V4cHJlc3Npb24KICAgICA6
IHNoaWZ0X2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Np
b24gTEVGVF9BTkdMRSBzaGlmdF9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbiwgJDEsICQzLCAkMi5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoJDIubGluZSwgIjwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENv
bXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwg
IjwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25B
cnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVs
YXRpb25hbF9leHByZXNzaW9uIFJJR0hUX0FOR0xFIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhh
biwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW4sICQxLCAk
MywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj4iLCAkMS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIj4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAg
ICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9leHByZXNzaW9uIExFX09QIHNoaWZ0X2V4
cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChF
T3BMZXNzVGhhbkVxdWFsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAg
ICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQy
LmxpbmUsICI8PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiPD0iLCAkMS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0
QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9l
eHByZXNzaW9uIEdFX09QIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMs
ICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMsIEAy
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI+PSIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKEAyLCAiPj0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdl
dENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFd
OwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAg
ICB9CiAgICAgfQogICAgIDsKQEAgLTgyMCwyMyArODIyLDIzIEBAIHJlbGF0aW9uYWxfZXhwcmVz
c2lvbgogZXF1YWxpdHlfZXhwcmVzc2lvbgogICAgIDogcmVsYXRpb25hbF9leHByZXNzaW9uIHsg
JCQgPSAkMTsgfQogICAgIHwgZXF1YWxpdHlfZXhwcmVzc2lvbiBFUV9PUCByZWxhdGlvbmFsX2V4
cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BFcXVhbCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1YWws
ICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDAp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj09IiwgJDEt
PmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICI9PSIsICQxLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0
YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwot
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1
bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGlu
ZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBA
Mik7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBlcXVhbGl0eV9leHByZXNzaW9uIE5FX09QIHJl
bGF0aW9uYWxfZXhwcmVzc2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wTm90RXF1YWwsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcE5vdEVxdWFsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAg
ICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQy
LmxpbmUsICIhPSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiIT0iLCAkMS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0
QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg1NiwxMyAr
ODU4LDEzIEBAIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uCiBsb2dpY2FsX2FuZF9leHByZXNzaW9u
CiAgICAgOiBpbmNsdXNpdmVfb3JfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxvZ2lj
YWxfYW5kX2V4cHJlc3Npb24gQU5EX09QIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uIHsKLSAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5k
LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5kLCAkMSwgJDMs
IEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICImJiIsICQxLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiJiYiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAg
ICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg3MCwxMyArODcyLDEzIEBAIGxvZ2ljYWxfYW5kX2V4
cHJlc3Npb24KIGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24KICAgICA6IGxvZ2ljYWxfYW5kX2V4cHJl
c3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBsb2dpY2FsX3hvcl9leHByZXNzaW9uIFhPUl9PUCBs
b2dpY2FsX2FuZF9leHByZXNzaW9uICB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbFhvciwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJp
bmFyeU1hdGgoRU9wTG9naWNhbFhvciwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUp
OwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BF
cnJvcigkMi5saW5lLCAiXl4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIl5e
IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24g
KnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJy
YXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCAkMi5saW5lKTsKKyAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksIEAyKTsKICAgICAgICAgfQogICAgIH0KICAgICA7CkBAIC04
ODQsMTMgKzg4NiwxMyBAQCBsb2dpY2FsX3hvcl9leHByZXNzaW9uCiBsb2dpY2FsX29yX2V4cHJl
c3Npb24KICAgICA6IGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBs
b2dpY2FsX29yX2V4cHJlc3Npb24gT1JfT1AgbG9naWNhbF94b3JfZXhwcmVzc2lvbiAgewotICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxP
ciwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAkMSwgJDMs
IEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICJ8fCIsICQxLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAifHwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAg
ICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg5OCwxNSArOTAwLDE1IEBAIGxvZ2ljYWxfb3JfZXhw
cmVzc2lvbgogY29uZGl0aW9uYWxfZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF9vcl9leHByZXNz
aW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbG9naWNhbF9vcl9leHByZXNzaW9uIFFVRVNUSU9OIGV4
cHJlc3Npb24gQ09MT04gYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICBpZiAoY29udGV4
dC0+Ym9vbEVycm9yQ2hlY2soJDIubGluZSwgJDEpKQorICAgICAgIGlmIChjb250ZXh0LT5ib29s
RXJyb3JDaGVjayhAMiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0g
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigkMSwgJDMsICQ1
LCAkMi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0
aW9uKCQxLCAkMywgJDUsIEAyKTsKICAgICAgICAgaWYgKCQzLT5nZXRUeXBlKCkgIT0gJDUtPmdl
dFR5cGUoKSkKICAgICAgICAgICAgICQkID0gMDsKIAogICAgICAgICBpZiAoJCQgPT0gMCkgewot
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiOiIsICQzLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAkNS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiOiIsICQzLT5nZXRDb21wbGV0ZVN0cmluZygpLCAk
NS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAkJCA9ICQ1OwogICAgICAgICB9CkBAIC05MTYsMTEgKzkxOCwxMSBAQCBj
b25kaXRpb25hbF9leHByZXNzaW9uCiBhc3NpZ25tZW50X2V4cHJlc3Npb24KICAgICA6IGNvbmRp
dGlvbmFsX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCB1bmFyeV9leHByZXNzaW9uIGFz
c2lnbm1lbnRfb3BlcmF0b3IgYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soJDIubGluZSwgImFzc2lnbiIsICQxKSkKKyAgICAgICAg
aWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soQDIsICJhc3NpZ24iLCAkMSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEFzc2lnbigkMi5vcCwgJDEsICQzLCAkMi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWduKCQyLm9wLCAkMSwgJDMsIEAyKTsKICAgICAgICAg
aWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9yKCQyLmxpbmUs
ICJhc3NpZ24iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5n
KCkpOworICAgICAgICAgICAgY29udGV4dC0+YXNzaWduRXJyb3IoQDIsICJhc3NpZ24iLCAkMS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpA
QCAtOTI4LDExICs5MzAsMTEgQEAgYXNzaWdubWVudF9leHByZXNzaW9uCiAgICAgOwogCiBhc3Np
Z25tZW50X29wZXJhdG9yCi0gICAgOiBFUVVBTCAgICAgICAgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcEFzc2lnbjsgfQot
ICAgIHwgTVVMX0FTU0lHTiAgIHsgRlJBR19WRVJUX09OTFkoIio9IiwgJDEubGluZSk7ICAgICAk
JC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BNdWxBc3NpZ247IH0KLSAgICB8IERJVl9BU1NJ
R04gICB7IEZSQUdfVkVSVF9PTkxZKCIvPSIsICQxLmxpbmUpOyAgICAgJCQubGluZSA9ICQxLmxp
bmU7ICQkLm9wID0gRU9wRGl2QXNzaWduOyB9Ci0gICAgfCBBRERfQVNTSUdOICAgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVP
cEFkZEFzc2lnbjsgfQotICAgIHwgU1VCX0FTU0lHTiAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BTdWJBc3NpZ247IH0K
KyAgICA6IEVRVUFMICAgICAgICB7ICQkLm9wID0gRU9wQXNzaWduOyB9CisgICAgfCBNVUxfQVNT
SUdOICAgeyAkJC5vcCA9IEVPcE11bEFzc2lnbjsgfQorICAgIHwgRElWX0FTU0lHTiAgIHsgJCQu
b3AgPSBFT3BEaXZBc3NpZ247IH0KKyAgICB8IEFERF9BU1NJR04gICB7ICQkLm9wID0gRU9wQWRk
QXNzaWduOyB9CisgICAgfCBTVUJfQVNTSUdOICAgeyAkJC5vcCA9IEVPcFN1YkFzc2lnbjsgfQog
ICAgIDsKIAogZXhwcmVzc2lvbgpAQCAtOTQwLDkgKzk0Miw5IEBAIGV4cHJlc3Npb24KICAgICAg
ICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCBleHByZXNzaW9uIENPTU1BIGFzc2lnbm1lbnRfZXhw
cmVzc2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCQx
LCAkMywgJDIubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bW1hKCQxLCAkMywgQDIpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiLCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlP
cEVycm9yKEAyLCAiLCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAk
JCA9ICQzOwogICAgICAgICB9CkBAIC05NzAsMTMgKzk3MiwxMyBAQCBkZWNsYXJhdGlvbgogICAg
ICAgICAgICAgY29uc3QgVFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJhbShpKTsK
ICAgICAgICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUocGFyYW0ubmFtZSwg
KnBhcmFtLnR5cGUpOworICAgICAgICAgICAgICAgIFRWYXJpYWJsZSB2YXJpYWJsZShwYXJhbS5u
YW1lLCAqcGFyYW0udHlwZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcHJv
dG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2
YXJpYWJsZS0+Z2V0TmFtZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKSwgJDEubGlu
ZSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdy
b3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZh
cmlhYmxlLmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLmdldE5hbWUoKSwgdmFyaWFibGUuZ2V0VHlw
ZSgpLCBAMSksIEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
Z3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wo
MCwgIiIsICpwYXJhbS50eXBlLCAkMS5saW5lKSwgJDEubGluZSk7CisgICAgICAgICAgICAgICAg
cHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBl
LCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgQDEp
LCBAMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC05OTIsMTEgKzk5
NCwxMSBAQCBkZWNsYXJhdGlvbgogICAgIH0KICAgICB8IFBSRUNJU0lPTiBwcmVjaXNpb25fcXVh
bGlmaWVyIHR5cGVfc3BlY2lmaWVyX25vX3ByZWMgU0VNSUNPTE9OIHsKICAgICAgICAgaWYgKCgk
MiA9PSBFYnBIaWdoKSAmJiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFE
RVIpICYmICFjb250ZXh0LT5mcmFnbWVudFByZWNpc2lvbkhpZ2gpIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCQxLmxpbmUsICJwcmVjaXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFn
bWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAi
cHJlY2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVyIiwgImhpZ2hwIik7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KCFjb250ZXh0LT5zeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKCAkMywgJDIgKSkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImlsbGVnYWwgdHlwZSBhcmd1bWVu
dCBmb3IgZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlw
ZSkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJpbGxlZ2FsIHR5cGUgYXJndW1l
bnQgZm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCQzLnR5
cGUpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAg
ICAkJCA9IDA7CkBAIC0xMDE2LDEyICsxMDE4LDEyIEBAIGZ1bmN0aW9uX3Byb3RvdHlwZQogICAg
ICAgICBURnVuY3Rpb24qIHByZXZEZWMgPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24qPihjb250ZXh0
LT5zeW1ib2xUYWJsZS5maW5kKCQxLT5nZXRNYW5nbGVkTmFtZSgpKSk7CiAgICAgICAgIGlmIChw
cmV2RGVjKSB7CiAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UmV0dXJuVHlwZSgpICE9ICQx
LT5nZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5s
aW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBl
IiwgJDEtPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcihAMiwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUg
c2FtZSByZXR1cm4gdHlwZSIsICQxLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7
CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmV2RGVjLT5nZXRQYXJhbUNvdW50KCk7
ICsraSkgewogICAgICAgICAgICAgICAgIGlmIChwcmV2RGVjLT5nZXRQYXJhbShpKS50eXBlLT5n
ZXRRdWFsaWZpZXIoKSAhPSAkMS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm92ZXJsb2FkZWQg
ZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXIgcXVhbGlmaWVycyIsICQxLT5n
ZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAyLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRo
ZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgJDEtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1
YWxpZmllclN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEwMzMsNyArMTAzNSw2IEBA
IGZ1bmN0aW9uX3Byb3RvdHlwZQogICAgICAgICAvLyBiZWluZyByZWRlY2xhcmVkLiAgU28sIHBh
c3MgYmFjayB1cCB0aGlzIGRlY2xhcmF0aW9uLCBub3QgdGhlIG9uZSBpbiB0aGUgc3ltYm9sIHRh
YmxlLgogICAgICAgICAvLwogICAgICAgICAkJC5mdW5jdGlvbiA9ICQxOwotICAgICAgICAkJC5s
aW5lID0gJDIubGluZTsKIAogICAgICAgICAvLyBXZSdyZSBhdCB0aGUgaW5uZXIgc2NvcGUgbGV2
ZWwgb2YgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzIGFuZCBib2R5IHN0YXRlbWVudC4KICAgICAg
ICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUgdG8gdGhlIHN1cnJvdW5kaW5nIHNjb3Bl
IGluc3RlYWQuCkBAIC0xMDY5LDcgKzEwNzAsNyBAQCBmdW5jdGlvbl9oZWFkZXJfd2l0aF9wYXJh
bWV0ZXJzCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhpcyBwYXJhbWV0ZXIgPiBm
aXJzdCBpcyB2b2lkCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
JDIubGluZSwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSci
LCAidm9pZCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5ub3QgYmUgYW4g
YXJndW1lbnQgdHlwZSBleGNlcHQgZm9yICcodm9pZCknIiwgInZvaWQiKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGRlbGV0ZSAkMy5wYXJhbS50eXBlOwog
ICAgICAgICB9IGVsc2UgewpAQCAtMTA4MywxMSArMTA4NCwxMSBAQCBmdW5jdGlvbl9oZWFkZXJf
d2l0aF9wYXJhbWV0ZXJzCiBmdW5jdGlvbl9oZWFkZXIKICAgICA6IGZ1bGx5X3NwZWNpZmllZF90
eXBlIElERU5USUZJRVIgTEVGVF9QQVJFTiB7CiAgICAgICAgIGlmICgkMS5xdWFsaWZpZXIgIT0g
RXZxR2xvYmFsICYmICQxLnF1YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJubyBxdWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0
aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAyLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZvciBmdW5jdGlv
biByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gbWFrZSBzdXJlIGEg
c2FtcGxlciBpcyBub3QgaW52b2x2ZWQgYXMgd2VsbC4uLgotICAgICAgICBpZiAoY29udGV4dC0+
c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBhcyBhIHByb3Rv
dHlwZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCByZWN1cnNpb24pCkBAIC0x
MTAyLDMzICsxMTAzLDMxIEBAIGZ1bmN0aW9uX2hlYWRlcgogCiBwYXJhbWV0ZXJfZGVjbGFyYXRv
cgogICAgIC8vIFR5cGUgKyBuYW1lCi0gICAgOiB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIHsK
KyAgICA6IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgewogICAgICAgICBpZiAoJDEudHlwZSA9
PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiaWxsZWdh
bCB1c2Ugb2YgdHlwZSAndm9pZCciLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoQDIsICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsICQyLnN0cmlu
Zy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3Ry
aW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMiwgKiQyLnN0
cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRQYXJhbWV0
ZXIgcGFyYW0gPSB7JDIuc3RyaW5nLCBuZXcgVFR5cGUoJDEpfTsKLSAgICAgICAgJCQubGluZSA9
ICQyLmxpbmU7CiAgICAgICAgICQkLnBhcmFtID0gcGFyYW07CiAgICAgfQotICAgIHwgdHlwZV9z
cGVjaWZpZXIgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdI
VF9CUkFDS0VUIHsKKyAgICB8IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VU
IGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIC8vIENoZWNrIHRo
YXQgd2UgY2FuIG1ha2UgYW4gYXJyYXkgb3V0IG9mIHRoaXMgdHlwZQotICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMy5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAzLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMi5s
aW5lLCAqJDIuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVj
ayhAMiwgKiQyLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAg
ICAgICAgaW50IHNpemU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNr
KCQzLmxpbmUsICQ0LCBzaXplKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9y
Q2hlY2soQDMsICQ0LCBzaXplKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgJDEuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAKICAgICAgICAgVFR5cGUqIHR5cGUgPSBu
ZXcgVFR5cGUoJDEpOwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAkMi5zdHJpbmcsIHR5
cGUgfTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxpbmU7CiAgICAgICAgICQkLnBhcmFtID0gcGFy
YW07CiAgICAgfQogICAgIDsKQEAgLTExNDQsMTQgKzExNDMsMTQgQEAgcGFyYW1ldGVyX2RlY2xh
cmF0aW9uCiAgICAgLy8KICAgICA6IHR5cGVfcXVhbGlmaWVyIHBhcmFtZXRlcl9xdWFsaWZpZXIg
cGFyYW1ldGVyX2RlY2xhcmF0b3IgewogICAgICAgICAkJCA9ICQzOwotICAgICAgICBpZiAoY29u
dGV4dC0+cGFyYW1FcnJvckNoZWNrKCQzLmxpbmUsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFt
LnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKEAzLCAkMS5xdWFs
aWZpZXIsICQyLCAkJC5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICB9CiAgICAgfCBwYXJhbWV0ZXJfcXVhbGlmaWVyIHBhcmFtZXRlcl9kZWNsYXJhdG9y
IHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBs
ZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxLCAqJDIucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5wYXJhbS50eXBl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQt
PnBhcmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMiwgRXZxVGVtcG9yYXJ5
LCAkMSwgJCQucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgfQogICAgIC8vCkBAIC0xMTU5LDE0ICsxMTU4LDE0IEBAIHBhcmFtZXRlcl9kZWNsYXJhdGlv
bgogICAgIC8vCiAgICAgfCB0eXBlX3F1YWxpZmllciBwYXJhbWV0ZXJfcXVhbGlmaWVyIHBhcmFt
ZXRlcl90eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDM7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5wYXJhbUVycm9yQ2hlY2soJDMubGluZSwgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0u
dHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soQDMsICQxLnF1YWxp
ZmllciwgJDIsICQkLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgIH0KICAgICB8IHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX3R5cGVfc3BlY2lm
aWVyIHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNh
bXBsZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxLCAqJDIucGFyYW0udHlwZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5wYXJhbS50
eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50
eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMiwgRXZxVGVtcG9y
YXJ5LCAkMSwgJCQucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgfQogICAgIDsKQEAgLTExOTcsODMgKzExOTYsODMgQEAgaW5pdF9kZWNsYXJhdG9yX2xp
c3QKICAgICA6IHNpbmdsZV9kZWNsYXJhdGlvbiB7CiAgICAgICAgICQkID0gJDE7CiAgICAgfQot
ICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiB7CisgICAgfCBpbml0
X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIHsKICAgICAgICAgaWYgKCQxLnR5cGUu
dHlwZSA9PSBFYnRJbnZhcmlhbnQgJiYgISQzLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoJDMubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJl
ZCBhcyBpbnZhcmlhbnQiLCAkMy5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDMsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50
IiwgJDMuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQzLnN0cmluZywgVFR5cGUoJDEudHlwZSksICQzLmxp
bmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
Z3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCBzeW1ib2wsICQzLmxpbmUpOworICAgICAgICBU
SW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAs
ICokMy5zdHJpbmcsIFRUeXBlKCQxLnR5cGUpLCBAMyk7CisgICAgICAgICQkLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUs
IHN5bWJvbCwgQDMpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soJDMubGluZSwgJCQudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkJC50eXBlKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JD
aGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAkJC50eXBlLCBm
YWxzZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgVFZhcmlh
YmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVj
aygkMy5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5ub25Jbml0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywgJCQudHlwZSwgdmFyaWFi
bGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoc3ltYm9s
ICYmIHZhcmlhYmxlKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5p
cXVlSWQoKSk7CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJ
RklFUiBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAgIHwgaW5pdF9k
ZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tF
VCB7CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAk
MS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAo
Y29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkMS50
eXBlLCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2so
QDMsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogCiAgICAgICAgICQkID0gJDE7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
VHlwZUVycm9yQ2hlY2soJDQubGluZSwgJDEudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZp
ZXJFcnJvckNoZWNrKCQ0LmxpbmUsICQxLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlUeXBlRXJyb3JDaGVjayhANCwgJDEudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJF
cnJvckNoZWNrKEA0LCAkMS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAkMS50eXBlLnNldEFycmF5KHRydWUpOwogICAg
ICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5h
cnJheUVycm9yQ2hlY2soJDQubGluZSwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQor
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhANCwgKiQzLnN0cmluZywg
JDEudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgfQogICAgIH0KLSAgICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENPTU1BIElERU5U
SUZJRVIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQx
LnR5cGUpKQorICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZU
X0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAgICAgICAgaWYg
KGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0
Q29uc3RFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQorICAg
ICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywg
JDEudHlwZSwgdHJ1ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAg
ICAgJCQgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygk
NC5saW5lLCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDQu
bGluZSwgJDEudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNr
KEA0LCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDQsICQx
LnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6
ZUVycm9yQ2hlY2soJDQubGluZSwgJDUsIHNpemUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmFycmF5U2l6ZUVycm9yQ2hlY2soQDQsICQ1LCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkMS50eXBlLnNldEFycmF5KHRydWUsIHNpemUp
OwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgICAgICBpZiAo
Y29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCQ0LmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHZh
cmlhYmxlKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soQDQsICok
My5zdHJpbmcsICQxLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlID0gVFR5cGUoJDEudHlwZSk7CiAgICAg
ICAgICAgICB0eXBlLnNldEFycmF5U2l6ZShzaXplKTsKLSAgICAgICAgICAgICQkLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5v
ZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+
Z2V0VW5pcXVlSWQoKSA6IDAsICokMy5zdHJpbmcsIHR5cGUsICQzLmxpbmUpLCAkMy5saW5lKTsK
KyAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5n
cm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1i
b2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICokMy5zdHJpbmcsIHR5
cGUsIEAzKSwgQDMpOwogICAgICAgICB9CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xp
c3QgQ09NTUEgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAgIHwg
aW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBFUVVBTCBpbml0aWFsaXplciB7
CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkMS50
eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAkJCA9ICQx
OwogCiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRl
eHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMy5saW5lLCAqJDMuc3RyaW5nLCAkMS50eXBlLCAkNSwg
aW50ZXJtTm9kZSkpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIo
QDMsICokMy5zdHJpbmcsICQxLnR5cGUsICQ1LCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgIC8vIGJ1aWxkIHRoZSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24K
ICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBpZiAoaW50ZXJtTm9kZSkKLSAgICAgICAgJCQu
aW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEu
aW50ZXJtTm9kZSwgaW50ZXJtTm9kZSwgJDQubGluZSk7CisgICAgICAgICQkLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUs
IGludGVybU5vZGUsIEA0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAkJC5p
bnRlcm1BZ2dyZWdhdGUgPSAkMS5pbnRlcm1BZ2dyZWdhdGU7CiAgICAgICAgIH0gZWxzZSB7CkBA
IC0xMjg2LDc5ICsxMjg1LDc5IEBAIGluaXRfZGVjbGFyYXRvcl9saXN0CiBzaW5nbGVfZGVjbGFy
YXRpb24KICAgICA6IGZ1bGx5X3NwZWNpZmllZF90eXBlIHsKICAgICAgICAgJCQudHlwZSA9ICQx
OwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFr
ZUFnZ3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgk
MSksICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCgwLCAiIiwgVFR5cGUoJDEpLCBAMSksIEAxKTsKICAgICB9Ci0gICAgfCBmdWxseV9z
cGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIHsKLSAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9s
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgk
MSksICQyLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgIHwgZnVsbHlfc3Bl
Y2lmaWVkX3R5cGUgaWRlbnRpZmllciB7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEp
LCBAMik7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDIubGluZSwgJCQudHlwZSkpCisgICAgICAg
IGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkJC50eXBlKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9u
SW5pdENvbnN0RXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAyLCAqJDIuc3Ry
aW5nLCAkJC50eXBlLCBmYWxzZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgICQkLnR5cGUgPSAkMTsKIAogICAgICAgICBUVmFyaWFi
bGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNr
KCQyLmxpbmUsICokMi5zdHJpbmcsICQkLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPm5vbkluaXRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJs
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmICh2YXJpYWJs
ZSAmJiBzeW1ib2wpCiAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlx
dWVJZCgpKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIExF
RlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGlu
ZSwgInVuc2l6ZWQgYXJyYXkgZGVjbGFyYXRpb25zIG5vdCBzdXBwb3J0ZWQiLCAkMi5zdHJpbmct
PmNfc3RyKCkpOworICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmllciBMRUZUX0JS
QUNLRVQgUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAidW5zaXpl
ZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIsICQyLnN0cmluZy0+Y19zdHIoKSk7
CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUSW50ZXJtU3ltYm9sKiBz
eW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIFRU
eXBlKCQxKSwgJDIubGluZSk7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgJDIubGluZSk7CisgICAgICAgIFRJ
bnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
KiQyLnN0cmluZywgVFR5cGUoJDEpLCBAMik7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAg
ICAkJC50eXBlID0gJDE7CiAgICAgfQotICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJ
RklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAg
ICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIGNvbnN0YW50
X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIFRUeXBlIHR5cGUgPSBUVHlwZSgk
MSk7CiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJy
b3JDaGVjaygkMi5saW5lLCAkNCwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNp
emVFcnJvckNoZWNrKEAyLCAkNCwgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwotICAgICAgICBUSW50ZXJtU3lt
Ym9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJp
bmcsIHR5cGUsICQyLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgICAgICBU
SW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAs
ICokMi5zdHJpbmcsIHR5cGUsIEAyKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgIAot
ICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMi5saW5lLCAk
MSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAk
MSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRl
eHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZywgJDEsIHRydWUp
KQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMiwgKiQyLnN0
cmluZywgJDEsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAg
ICAgICQkLnR5cGUgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JD
aGVjaygkMy5saW5lLCAkMSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCQz
LmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDMs
ICQxKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBp
bnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQz
LmxpbmUsICQ0LCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJv
ckNoZWNrKEAzLCAkNCwgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogCiAgICAgICAgICAgICAkMS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgICAgIFRW
YXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJy
b3JDaGVjaygkMy5saW5lLCAqJDIuc3RyaW5nLCAkMSwgdmFyaWFibGUpKQorICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhAMywgKiQyLnN0cmluZywgJDEsIHZhcmlhYmxl
KSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBpZiAo
dmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFyaWFi
bGUtPmdldFVuaXF1ZUlkKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHwgZnVsbHlfc3BlY2lm
aWVkX3R5cGUgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICB8IGZ1bGx5
X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgRVFVQUwgaW5pdGlhbGl6ZXIgeworICAgICAgICBp
ZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhAMiwgJDEpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQkLnR5cGUgPSAkMTsKIAogICAgICAg
ICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRl
SW5pdGlhbGl6ZXIoJDIubGluZSwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkgewor
ICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcihAMiwgKiQyLnN0cmluZywg
JDEsICQ0LCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAvLwogICAgICAgICAvLyBCdWlsZCBpbnRl
cm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAgICAgICAgLy8KICAgICAgICAgICAgIGlmKGludGVy
bU5vZGUpCi0gICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgJDMubGluZSk7CisgICAgICAgICAg
ICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dy
ZWdhdGUoaW50ZXJtTm9kZSwgQDMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICQkLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMzY3LDExOCAr
MTM2Niw1MCBAQCBzaW5nbGVfZGVjbGFyYXRpb24KICAgICAgICAgfQogICAgIH0KICAgICB8IElO
VkFSSUFOVCBJREVOVElGSUVSIHsKLSAgICAgICAgVkVSVEVYX09OTFkoImludmFyaWFudCBkZWNs
YXJhdGlvbiIsICQxLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVj
aygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlh
bnQgdmFyeWluZyIpKQorICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9u
IiwgQDEpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQudHlwZS5zZXRCYXNpYyhF
YnRJbnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICQyLmxpbmUpOworICAgICAgICAk
JC50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgQDIp
OwogICAgICAgICBpZiAoISQyLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoJDIubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZh
cmlhbnQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDIsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgJDIuc3Ry
aW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAgICAgfQogICAg
ICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJCQu
dHlwZSksICQyLmxpbmUpOwotICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAkMi5saW5lKTsKKyAgICAgICAg
ICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1i
b2woMCwgKiQyLnN0cmluZywgVFR5cGUoJCQudHlwZSksIEAyKTsKKyAgICAgICAgICAgICQkLmlu
dGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJv
bCwgQDIpOwogICAgICAgICB9CiAgICAgfQotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUg
cGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vICAgIHwgYnVmZmVyX3NwZWNpZmllciB7Ci0v
LyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKLS8vICAgIH0KICAgICA7CiAKLS8vIEdy
YW1tYXIgTm90ZTogIE5vICdlbnVtJywgb3IgJ3R5cGVkZWYnLgotCi0vLwotLy8gUGxhY2UgaG9s
ZGVyIGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vJXR5cGUgPGludGVybT4g
YnVmZmVyX2RlY2xhcmF0aW9uCi0vLyV0eXBlIDxpbnRlcm0udHlwZT4gYnVmZmVyX3NwZWNpZmll
ciBpbnB1dF9vcl9vdXRwdXQgYnVmZmVyX2RlY2xhcmF0aW9uX2xpc3QKLS8vYnVmZmVyX3NwZWNp
ZmllcgotLy8gICAgOiBpbnB1dF9vcl9vdXRwdXQgTEVGVF9CUkFDRSBidWZmZXJfZGVjbGFyYXRp
b25fbGlzdCBSSUdIVF9CUkFDRSB7Ci0vLyAgICB9Ci0vLyAgICA7Ci0vLwotLy9pbnB1dF9vcl9v
dXRwdXQKLS8vICAgIDogSU5QVVQgewotLy8gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJv
ckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImlu
cHV0IikpCi0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLS8vICAgICAgICBVTlBB
Q0tfT05MWSgiaW5wdXQiLCAkMS5saW5lKTsKLS8vICAgICAgICAkJC5xdWFsaWZpZXIgPSBFdnFJ
bnB1dDsKLS8vICAgIH0KLS8vICAgIHwgT1VUUFVUIHsKLS8vICAgICAgICBpZiAoY29udGV4dC0+
Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCksICJvdXRwdXQiKSkKLS8vICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotLy8g
ICAgICAgIFBBQ0tfT05MWSgib3V0cHV0IiwgJDEubGluZSk7Ci0vLyAgICAgICAgJCQucXVhbGlm
aWVyID0gRXZxT3V0cHV0OwotLy8gICAgfQotLy8gICAgOwotCi0vLwotLy8gUGxhY2UgaG9sZGVy
IGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vYnVmZmVyX2RlY2xhcmF0aW9u
X2xpc3QKLS8vICAgIDogYnVmZmVyX2RlY2xhcmF0aW9uIHsKLS8vICAgIH0KLS8vICAgIHwgYnVm
ZmVyX2RlY2xhcmF0aW9uX2xpc3QgYnVmZmVyX2RlY2xhcmF0aW9uIHsKLS8vICAgIH0KLS8vICAg
IDsKLQotLy8KLS8vIElucHV0L291dHB1dCBzZW1hbnRpY3M6Ci0vLyAgIGZsb2F0IG11c3QgYmUg
MTYgb3IgMzIgYml0cwotLy8gICBmbG9hdCBhbGlnbm1lbnQgcmVzdHJpY3Rpb25zPwotLy8gICBj
aGVjayBmb3Igb25seSBvbmUgaW5wdXQgYW5kIG9ubHkgb25lIG91dHB1dAotLy8gICBzdW0gb2Yg
Yml0ZmllbGRzIGhhcyB0byBiZSBtdWx0aXBsZSBvZiAzMgotLy8KLQotLy8KLS8vIFBsYWNlIGhv
bGRlciBmb3IgdGhlIHBhY2svdW5wYWNrIGxhbmd1YWdlcy4KLS8vCi0vL2J1ZmZlcl9kZWNsYXJh
dGlvbgotLy8gICAgOiB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIENPTE9OIGNvbnN0YW50X2V4
cHJlc3Npb24gU0VNSUNPTE9OIHsKLS8vICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJv
ckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcsIGNvbnRleHQpKQotLy8gICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgJCQudmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCQy
LnN0cmluZywgJDEpOwotLy8gICAgICAgIGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2Vy
dCgqJCQudmFyaWFibGUpKSB7Ci0vLyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUs
ICJyZWRlZmluaXRpb24iLCAkJC52YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotLy8gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgICAgIC8vIGRvbid0IGhhdmUg
dG8gZGVsZXRlICQkLnZhcmlhYmxlLCB0aGUgcG9vbCBwb3Agd2lsbCB0YWtlIGNhcmUgb2YgaXQK
LS8vICAgICAgICB9Ci0vLyAgICB9Ci0vLyAgICA7Ci0KIGZ1bGx5X3NwZWNpZmllZF90eXBlCiAg
ICAgOiB0eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDE7CiAKICAgICAgICAgaWYgKCQx
LmFycmF5KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAibm90IHN1cHBv
cnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDEsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkMS5zZXRBcnJheShmYWxzZSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgfCB0eXBlX3F1YWxpZmllciB0eXBlX3NwZWNpZmllciAgewogICAg
ICAgICBpZiAoJDIuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUs
ICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMiwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQyLnNldEFycmF5KGZh
bHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS5xdWFsaWZpZXIgPT0gRXZxQXR0cmli
dXRlICYmCiAgICAgICAgICAgICAoJDIudHlwZSA9PSBFYnRCb29sIHx8ICQyLnR5cGUgPT0gRWJ0
SW50KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgImNhbm5vdCBiZSBi
b29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAyLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlm
aWVyU3RyaW5nKCQxLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9CiAgICAgICAgIGlmICgoJDEucXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8
fCAkMS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ091dCkgJiYKICAgICAgICAgICAgICgkMi50eXBl
ID09IEVidEJvb2wgfHwgJDIudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3Ry
aW5nKCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5u
b3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgJCQgPSAk
MjsKQEAgLTE0ODgsMzQgKzE0MTksMzQgQEAgZnVsbHlfc3BlY2lmaWVkX3R5cGUKIAogdHlwZV9x
dWFsaWZpZXIKICAgICA6IENPTlNUX1FVQUwgewotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lk
LCBFdnFDb25zdCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUNv
bnN0LCBAMSk7CiAgICAgfQogICAgIHwgQVRUUklCVVRFIHsKLSAgICAgICAgVkVSVEVYX09OTFko
ImF0dHJpYnV0ZSIsICQxLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JD
aGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJhdHRy
aWJ1dGUiKSkKKyAgICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsIEAxKTsKKyAgICAgICAg
aWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUsICQxLmxpbmUp
OworICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUsIEAxKTsKICAgICB9
CiAgICAgfCBWQVJZSU5HIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2so
JDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIp
KQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJU
RVhfU0hBREVSKQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ091
dCwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5n
T3V0LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQs
IEV2cVZhcnlpbmdJbiwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lk
LCBFdnFWYXJ5aW5nSW4sIEAxKTsKICAgICB9CiAgICAgfCBJTlZBUklBTlQgVkFSWUlORyB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAg
IGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJU
RVhfU0hBREVSKQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50
VmFyeWluZ091dCwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBF
dnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICQk
LnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdJbiwgJDEubGluZSk7CisgICAg
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nSW4sIEAxKTsK
ICAgICB9CiAgICAgfCBVTklGT1JNIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9y
Q2hlY2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5p
Zm9ybSIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlm
b3JtLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVW5pZm9ybSwg
QDEpOwogICAgIH0KICAgICA7CiAKQEAgLTE1MjUsNyArMTQ1Niw3IEBAIHR5cGVfc3BlY2lmaWVy
CiAKICAgICAgICAgaWYgKCQkLnByZWNpc2lvbiA9PSBFYnBVbmRlZmluZWQpIHsKICAgICAgICAg
ICAgICQkLnByZWNpc2lvbiA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmdldERlZmF1bHRQcmVjaXNp
b24oJDEudHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVj
aygkMS5saW5lLCAkJC5wcmVjaXNpb24sICQxLnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29u
dGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVjayhAMSwgJCQucHJlY2lzaW9uLCAkMS50eXBlKSkgewog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMTU1NSwxMSArMTQ4NiwxMSBAQCB0eXBlX3NwZWNpZmllcl9ub19wcmVjCiAgICAg
fCB0eXBlX3NwZWNpZmllcl9ub25hcnJheSBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lv
biBSSUdIVF9CUkFDS0VUIHsKICAgICAgICAgJCQgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5hcnJheVR5cGVFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygkMi5saW5lLCAkMywgc2l6ZSkpCisg
ICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhAMiwgJDMsIHNpemUp
KQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkLnNl
dEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICB9CkBAIC0xNTY5LDExOCArMTUwMCwxMDUgQEAg
dHlwZV9zcGVjaWZpZXJfbm9fcHJlYwogdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICAgICA6IFZP
SURfVFlQRSB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVi
dFZvaWQsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBGTE9BVF9UWVBFIHsKICAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVh
bCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCBAMSk7CiAg
ICAgfQogICAgIHwgSU5UX1RZUEUgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQk
LnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IEJPT0xfVFlQRSB7CiAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
Qm9vbCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWws
IEAxKTsKICAgICB9Ci0vLyAgICB8IFVOU0lHTkVEIElOVF9UWVBFIHsKLS8vICAgICAgICBQQUNL
X1VOUEFDS19PTkxZKCJ1bnNpZ25lZCIsICQxLmxpbmUpOwotLy8gICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLS8vICAgICAgICAkJC5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICQxLmxp
bmUpOwotLy8gICAgfQogICAgIHwgVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dy
ZWdhdGUoMik7CiAgICAgfQogICAgIHwgVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOwor
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRB
Z2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwgVkVDNCB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUp
OworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5z
ZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgQlZFQzIgewogICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICQxLmxp
bmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCBAMSk7CiAgICAgICAgICQk
LnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAgfCBCVkVDMyB7CiAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgJDEu
bGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsIEAxKTsKICAgICAgICAg
JCQuc2V0QWdncmVnYXRlKDMpOwogICAgIH0KICAgICB8IEJWRUM0IHsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAk
MS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgSVZFQzIgewogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoMik7CiAgICAgfQogICAgIHwgSVZFQzMgewogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwgSVZFQzQgewogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgTUFUUklYMiB7Ci0gICAgICAgIEZS
QUdfVkVSVF9PTkxZKCJtYXQyIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOwor
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRB
Z2dyZWdhdGUoMiwgdHJ1ZSk7CiAgICAgfQogICAgIHwgTUFUUklYMyB7Ci0gICAgICAgIEZSQUdf
VkVSVF9PTkxZKCJtYXQzIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dy
ZWdhdGUoMywgdHJ1ZSk7CiAgICAgfQogICAgIHwgTUFUUklYNCB7Ci0gICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJtYXQ0IiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdh
dGUoNCwgdHJ1ZSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJEIHsKLSAgICAgICAgRlJBR19WRVJU
X09OTFkoInNhbXBsZXIyRCIsICQxLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBj
b250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1w
b3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgJDEubGluZSk7
CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgQDEpOwogICAgIH0KICAg
ICB8IFNBTVBMRVJDVUJFIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXJDdWJlIiwg
JDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0U2FtcGxlckN1YmUsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRC
YXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IFNBTVBMRVJfRVhU
RVJOQUxfT0VTIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
T0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigk
MS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0
ZXJuYWxPRVMiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQot
ICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckV4dGVybmFsT0VTIiwgJDEubGluZSk7CiAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMo
RWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJE
UkVDVCB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl90
ZXh0dXJlX3JlY3RhbmdsZSIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5l
LCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVjdCIpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJzYW1wbGVyMkRSZWN0IiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1YWwsIEAx
KTsKICAgICB9CiAgICAgfCBzdHJ1Y3Rfc3BlY2lmaWVyIHsKLSAgICAgICAgRlJBR19WRVJUX09O
TFkoInN0cnVjdCIsICQxLmxpbmUpOwogICAgICAgICAkJCA9ICQxOwogICAgICAgICAkJC5xdWFs
aWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7CiAgICAgfQpAQCAtMTY5MSwyOSArMTYwOSwyOSBAQCB0eXBlX3NwZWNp
Zmllcl9ub25hcnJheQogICAgICAgICAvLwogICAgICAgICBUVHlwZSYgc3RydWN0dXJlID0gc3Rh
dGljX2Nhc3Q8VFZhcmlhYmxlKj4oJDEuc3ltYm9sKS0+Z2V0VHlwZSgpOwogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgcXVh
bCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwgQDEpOwog
ICAgICAgICAkJC51c2VyRGVmID0gJnN0cnVjdHVyZTsKICAgICB9CiAgICAgOwogCiBzdHJ1Y3Rf
c3BlY2lmaWVyCi0gICAgOiBTVFJVQ1QgSURFTlRJRklFUiBMRUZUX0JSQUNFIHsgaWYgKGNvbnRl
eHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oJDIubGluZSwgKiQyLnN0cmluZykpIGNvbnRleHQt
PnJlY292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZykp
CisgICAgOiBTVFJVQ1QgaWRlbnRpZmllciBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQtPmVudGVy
U3RydWN0RGVjbGFyYXRpb24oQDIsICokMi5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IH0g
c3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0UgeworICAgICAgICBpZiAoY29udGV4
dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCQ1
LCAqJDIuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcg
VFN0cnVjdHVyZSgkMi5zdHJpbmcsICQ1KSk7CiAgICAgICAgIFRWYXJpYWJsZSogdXNlclR5cGVE
ZWYgPSBuZXcgVFZhcmlhYmxlKCQyLnN0cmluZywgKnN0cnVjdHVyZSwgdHJ1ZSk7CiAgICAgICAg
IGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgqdXNlclR5cGVEZWYpKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAicmVkZWZpbml0aW9uIiwgJDIuc3RyaW5n
LT5jX3N0cigpLCAic3RydWN0Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInJl
ZGVmaW5pdGlvbiIsICQyLnN0cmluZy0+Y19zdHIoKSwgInN0cnVjdCIpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0
cnVjdCwgRXZxVGVtcG9yYXJ5LCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3Ry
dWN0LCBFdnFUZW1wb3JhcnksIEAxKTsKICAgICAgICAgJCQudXNlckRlZiA9IHN0cnVjdHVyZTsK
ICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CiAgICAgfQotICAgIHwg
U1RSVUNUIExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigk
Mi5saW5lLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJh
dGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKLSAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBU
VHlwZSgkNCwgVFN0cmluZygiIikpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2
cVRlbXBvcmFyeSwgJDEubGluZSk7CisgICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSB7IGlmIChjb250
ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKEAyLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVj
b3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKKyAgICAgICAg
VFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZShOZXdQb29sVFN0cmlu
ZygiIiksICQ0KSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5
LCBAMSk7CiAgICAgICAgICQkLnVzZXJEZWYgPSBzdHJ1Y3R1cmU7CiAgICAgICAgIGNvbnRleHQt
PmV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwogICAgIH0KQEAgLTE3MjUsMTQgKzE2NDMsMTUgQEAg
c3RydWN0X2RlY2xhcmF0aW9uX2xpc3QKICAgICB9CiAgICAgfCBzdHJ1Y3RfZGVjbGFyYXRpb25f
bGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICQyLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCAkJC0+c2l6ZSgpOyArK2opIHsKLSAgICAgICAg
ICAgICAgICBpZiAoKCokJClbal0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKCokMilbaV0udHlw
ZS0+Z2V0RmllbGROYW1lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KCokMilbaV0ubGluZSwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3Ry
dWN0IiwgKCokMilbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkuY19zdHIoKSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgJDItPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBURmll
bGQqIGZpZWxkID0gKCokMilbaV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
ICQkLT5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIGlmICgoKiQkKVtqXS0+bmFtZSgp
ID09IGZpZWxkLT5uYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDIsICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxk
LT5uYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAkJC0+cHVz
aF9iYWNrKCgqJDIpW2ldKTsKKyAgICAgICAgICAgICQkLT5wdXNoX2JhY2soZmllbGQpOwogICAg
ICAgICB9CiAgICAgfQogICAgIDsKQEAgLTE3NDEsMTQgKzE2NjAsMTQgQEAgc3RydWN0X2RlY2xh
cmF0aW9uCiAgICAgOiB0eXBlX3NwZWNpZmllciBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IFNFTUlD
T0xPTiB7CiAgICAgICAgICQkID0gJDI7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJv
ckNoZWNrKCQxLmxpbmUsICgqJDIpWzBdLnR5cGUtPmdldEZpZWxkTmFtZSgpLCAkMSkpIHsKKyAg
ICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNoZWNrKEAxLCAoKiQyKVswXS0+bmFtZSgpLCAk
MSkpIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICQkLT5zaXplKCk7ICsraSkgewogICAgICAg
ICAgICAgLy8KICAgICAgICAgICAgIC8vIENhcmVmdWwgbm90IHRvIHJlcGxhY2UgYWxyZWFkeSBr
bm93biBhc3BlY3RzIG9mIHR5cGUsIGxpa2UgYXJyYXktbmVzcwogICAgICAgICAgICAgLy8KLSAg
ICAgICAgICAgIFRUeXBlKiB0eXBlID0gKCokJClbaV0udHlwZTsKKyAgICAgICAgICAgIFRUeXBl
KiB0eXBlID0gKCokJClbaV0tPnR5cGUoKTsKICAgICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlw
ZSgkMS50eXBlKTsKICAgICAgICAgICAgIHR5cGUtPnNldE5vbWluYWxTaXplKCQxLnNpemUpOwog
ICAgICAgICAgICAgdHlwZS0+c2V0TWF0cml4KCQxLm1hdHJpeCk7CkBAIC0xNzU2LDI2ICsxNjc1
LDIzIEBAIHN0cnVjdF9kZWNsYXJhdGlvbgogCiAgICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBh
cnJheXMgb2YgYXJyYXlzCiAgICAgICAgICAgICBpZiAodHlwZS0+aXNBcnJheSgpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soJDEubGluZSwgJDEp
KQorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAxLCAk
MSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmICgkMS5hcnJheSkKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRB
cnJheVNpemUoJDEuYXJyYXlTaXplKTsKLSAgICAgICAgICAgIGlmICgkMS51c2VyRGVmKSB7Cisg
ICAgICAgICAgICBpZiAoJDEudXNlckRlZikKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRTdHJ1
Y3QoJDEudXNlckRlZi0+Z2V0U3RydWN0KCkpOwotICAgICAgICAgICAgICAgIHR5cGUtPnNldFR5
cGVOYW1lKCQxLnVzZXJEZWYtPmdldFR5cGVOYW1lKCkpOwotICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soJDEubGluZSwgKnR5
cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2so
QDEsICooKiQkKVtpXSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIDsKIAogc3RydWN0X2RlY2xhcmF0b3Jf
bGlzdAogICAgIDogc3RydWN0X2RlY2xhcmF0b3IgewotICAgICAgICAkJCA9IE5ld1Bvb2xUVHlw
ZUxpc3QoKTsKKyAgICAgICAgJCQgPSBOZXdQb29sVEZpZWxkTGlzdCgpOwogICAgICAgICAkJC0+
cHVzaF9iYWNrKCQxKTsKICAgICB9CiAgICAgfCBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IENPTU1B
IHN0cnVjdF9kZWNsYXJhdG9yIHsKQEAgLTE3ODQsMjYgKzE3MDAsMjQgQEAgc3RydWN0X2RlY2xh
cmF0b3JfbGlzdAogICAgIDsKIAogc3RydWN0X2RlY2xhcmF0b3IKLSAgICA6IElERU5USUZJRVIg
ewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5z
dHJpbmcpKQorICAgIDogaWRlbnRpZmllciB7CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZl
ZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogCi0gICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVk
KTsKLSAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7Ci0gICAgICAgICQkLnR5cGUtPnNldEZpZWxk
TmFtZSgqJDEuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9p
ZCwgRWJwVW5kZWZpbmVkKTsKKyAgICAgICAgJCQgPSBuZXcgVEZpZWxkKHR5cGUsICQxLnN0cmlu
Zyk7CiAgICAgfQotICAgIHwgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVz
c2lvbiBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JD
aGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKKyAgICB8IGlkZW50aWZpZXIgTEVGVF9CUkFDS0VU
IGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGlmIChjb250ZXh0
LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJw
VW5kZWZpbmVkKTsKLSAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7Ci0gICAgICAgICQkLnR5cGUt
PnNldEZpZWxkTmFtZSgqJDEuc3RyaW5nKTsKLQotICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDIubGluZSwgJDMsIHNpemUpKQorICAg
ICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAg
ICAgICBpbnQgc2l6ZSA9IDA7CisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNo
ZWNrKEAzLCAkMywgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICQkLnR5cGUtPnNldEFycmF5U2l6ZShzaXplKTsKKyAgICAgICAgdHlwZS0+c2V0QXJyYXlT
aXplKHNpemUpOworCisgICAgICAgICQkID0gbmV3IFRGaWVsZCh0eXBlLCAkMS5zdHJpbmcpOwog
ICAgIH0KICAgICA7CiAKQEAgLTE4MzUsNyArMTc0OSw3IEBAIGNvbXBvdW5kX3N0YXRlbWVudAog
ICAgIHwgTEVGVF9CUkFDRSB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfSBzdGF0ZW1l
bnRfbGlzdCB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyB9IFJJR0hUX0JSQUNFIHsKICAg
ICAgICAgaWYgKCQzICE9IDApIHsKICAgICAgICAgICAgICQzLT5zZXRPcChFT3BTZXF1ZW5jZSk7
Ci0gICAgICAgICAgICAkMy0+c2V0RW5kTGluZSgkNS5saW5lKTsKKyAgICAgICAgICAgICQzLT5z
ZXRMaW5lKEAkKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQzOwogICAgIH0KQEAgLTE4NTks
NyArMTc3Myw3IEBAIGNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUKICAgICB8IExFRlRf
QlJBQ0Ugc3RhdGVtZW50X2xpc3QgUklHSFRfQlJBQ0UgewogICAgICAgICBpZiAoJDIpIHsKICAg
ICAgICAgICAgICQyLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAkMi0+c2V0RW5k
TGluZSgkMy5saW5lKTsKKyAgICAgICAgICAgICQyLT5zZXRMaW5lKEAkKTsKICAgICAgICAgfQog
ICAgICAgICAkJCA9ICQyOwogICAgIH0KQEAgLTE4NjcsMTAgKzE3ODEsMTAgQEAgY29tcG91bmRf
c3RhdGVtZW50X25vX25ld19zY29wZQogCiBzdGF0ZW1lbnRfbGlzdAogICAgIDogc3RhdGVtZW50
IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMSwg
MCk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoJDEs
IEAkKTsKICAgICB9CiAgICAgfCBzdGF0ZW1lbnRfbGlzdCBzdGF0ZW1lbnQgewotICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLCAkMiwgMCk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCBAJCk7
CiAgICAgfQogICAgIDsKIApAQCAtMTg4MSw5ICsxNzk1LDkgQEAgZXhwcmVzc2lvbl9zdGF0ZW1l
bnQKIAogc2VsZWN0aW9uX3N0YXRlbWVudAogICAgIDogSUYgTEVGVF9QQVJFTiBleHByZXNzaW9u
IFJJR0hUX1BBUkVOIHNlbGVjdGlvbl9yZXN0X3N0YXRlbWVudCB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5ib29sRXJyb3JDaGVjaygkMS5saW5lLCAkMykpCisgICAgICAgIGlmIChjb250ZXh0LT5i
b29sRXJyb3JDaGVjayhAMSwgJDMpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oJDMsICQ1LCAk
MS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9u
KCQzLCAkNSwgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTE5MDcsMTQgKzE4MjEsMTQgQEAgY29u
ZGl0aW9uCiAgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkMS0+Z2V0TGluZSgp
LCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQotICAgIHwgZnVs
bHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7CisgICAgfCBm
dWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVyIHsKICAgICAg
ICAgVEludGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0
cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCQyLmxpbmUsICQx
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRl
SW5pdGlhbGl6ZXIoJDIubGluZSwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoQDIsICokMi5zdHJpbmcsICQx
LCAkNCwgaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAkJCA9ICQ0OwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKQEAgLTE5MjYsMTkgKzE4NDAsMTkgQEAg
Y29uZGl0aW9uCiBpdGVyYXRpb25fc3RhdGVtZW50CiAgICAgOiBXSElMRSBMRUZUX1BBUkVOIHsg
Y29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7
IH0gY29uZGl0aW9uIFJJR0hUX1BBUkVOIHN0YXRlbWVudF9ub19uZXdfc2NvcGUgewogICAgICAg
ICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAkNCwgMCwgJDYsICQxLmxpbmUpOworICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hpbGUsIDAsICQ0
LCAwLCAkNiwgQDEpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7CiAgICAg
fQogICAgIHwgRE8geyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0gc3RhdGVtZW50X3dp
dGhfc2NvcGUgV0hJTEUgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIFNFTUlDT0xP
TiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkOC5saW5lLCAkNikpCisg
ICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjayhAOCwgJDYpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZExvb3AoRUxvb3BEb1doaWxlLCAwLCAkNiwgMCwgJDMsICQ0LmxpbmUpOworICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRG9XaGlsZSwgMCwgJDYsIDAs
ICQzLCBANCk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAg
ICAgfCBGT1IgTEVGVF9QQVJFTiB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250
ZXh0LT5sb29wTmVzdGluZ0xldmVsOyB9IGZvcl9pbml0X3N0YXRlbWVudCBmb3JfcmVzdF9zdGF0
ZW1lbnQgUklHSFRfUEFSRU4gc3RhdGVtZW50X25vX25ld19zY29wZSB7CiAgICAgICAgIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLnBvcCgpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRMb29wKEVMb29wRm9yLCAkNCwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigk
NS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oJDUubm9kZTIpLCAkNywg
JDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxv
b3BGb3IsICQ0LCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCQ1Lm5vZGUxKSwgcmVp
bnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigkNS5ub2RlMiksICQ3LCBAMSk7CiAgICAgICAg
IC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAgOwpAQCAtMTk3NSwzOSAr
MTg4OSwzOSBAQCBmb3JfcmVzdF9zdGF0ZW1lbnQKIGp1bXBfc3RhdGVtZW50CiAgICAgOiBDT05U
SU5VRSBTRU1JQ09MT04gewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiY29udGludWUgc3Rh
dGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKEAxLCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIi
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsICQxLmxpbmUp
OworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGlu
dWUsIEAxKTsKICAgICB9CiAgICAgfCBCUkVBSyBTRU1JQ09MT04gewogICAgICAgICBpZiAoY29u
dGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigkMS5saW5lLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxs
b3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9w
QnJlYWssICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
cmFuY2goRU9wQnJlYWssIEAxKTsKICAgICB9CiAgICAgfCBSRVRVUk4gU0VNSUNPTE9OIHsKLSAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgJDEu
bGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BS
ZXR1cm4sIEAxKTsKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdl
dEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQx
LmxpbmUsICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJub24tdm9pZCBmdW5jdGlvbiBtdXN0
IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgUkVUVVJOIGV4cHJlc3Npb24gU0VNSUNPTE9O
IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVy
biwgJDIsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
cmFuY2goRU9wUmV0dXJuLCAkMiwgQDEpOwogICAgICAgICBjb250ZXh0LT5mdW5jdGlvblJldHVy
bnNWYWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBl
LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigkMS5saW5lLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJu
Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgInZvaWQgZnVuY3Rpb24gY2Fubm90
IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9IGVsc2UgaWYgKCooY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZSkg
IT0gJDItPmdldFR5cGUoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwg
ImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hp
bmcgdHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgfCBESVNDQVJEIFNFTUlDT0xPTiB7Ci0gICAgICAgIEZSQUdf
T05MWSgiZGlzY2FyZCIsICQxLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgJDEubGluZSk7CisgICAgICAgIEZSQUdfT05MWSgiZGlz
Y2FyZCIsIEAxKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNo
KEVPcEtpbGwsIEAxKTsKICAgICB9CiAgICAgOwogCkBAIC0yMDE5LDcgKzE5MzMsNyBAQCB0cmFu
c2xhdGlvbl91bml0CiAgICAgICAgIGNvbnRleHQtPnRyZWVSb290ID0gJCQ7CiAgICAgfQogICAg
IHwgdHJhbnNsYXRpb25fdW5pdCBleHRlcm5hbF9kZWNsYXJhdGlvbiB7Ci0gICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCAwKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMSwgJDIsIEAkKTsKICAg
ICAgICAgY29udGV4dC0+dHJlZVJvb3QgPSAkJDsKICAgICB9CiAgICAgOwpAQCAtMjA0MSw3ICsx
OTU1LDcgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAKICAgICAgICAgaWYgKGJ1aWx0
SW4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJidWls
dC1pbiBmdW5jdGlvbnMgY2Fubm90IGJlIHJlZGVmaW5lZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCku
Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImJ1aWx0LWluIGZ1bmN0
aW9ucyBjYW5ub3QgYmUgcmVkZWZpbmVkIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKQEAg
LTIwNTUsNyArMTk2OSw3IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgICAgIC8vCiAg
ICAgICAgICAgICAvLyBUaGVuIHRoaXMgZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5LgogICAg
ICAgICAgICAgLy8KLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJmdW5jdGlv
biBhbHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHki
LCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIHByZXZEZWMtPnNldERlZmluZWQoKTsKQEAgLTIw
NjUsMTEgKzE5NzksMTEgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAvLwogICAgICAg
ICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAibWFpbiIpIHsKICAgICAgICAgICAgIGlmIChm
dW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpID4gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCQxLmxpbmUsICJmdW5jdGlvbiBjYW5ub3QgdGFrZSBhbnkgcGFyYW1ldGVyKHMpIiwg
ZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcihAMSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlv
bi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJuVHlw
ZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigkMS5saW5lLCAiIiwgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0
cmluZygpLCAibWFpbiBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCku
Z2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7
CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0yMDk3LDcgKzIwMTEsNyBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAg
ICAgICAgICAgLy8gSW5zZXJ0IHRoZSBwYXJhbWV0ZXJzIHdpdGggbmFtZSBpbiB0aGUgc3ltYm9s
IHRhYmxlLgogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKCEgY29udGV4
dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoJDEubGluZSwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1l
KCkuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAicmVk
ZWZpbml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICAgICBkZWxldGUgdmFy
aWFibGU7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjEwOCwxNCArMjAyMiwxNSBAQCBmdW5jdGlv
bl9kZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbU5vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxl
LT5nZXRVbmlxdWVJZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEubGluZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJp
YWJsZS0+Z2V0VHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEpOwogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCgwLCAiIiwgKnBhcmFtLnR5cGUsICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAg
ICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1O
b2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUs
IEAxKSwgQDEpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihwYXJhbU5vZGVzLCBFT3BQYXJhbWV0ZXJz
LCAkMS5saW5lKTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsIEAxKTsKICAgICAgICAgJDEuaW50ZXJt
QWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAgICAgY29udGV4dC0+bG9vcE5lc3RpbmdMZXZl
bCA9IDA7CiAgICAgfQpAQCAtMjEyMywxMiArMjAzOCwxMiBAQCBmdW5jdGlvbl9kZWZpbml0aW9u
CiAgICAgICAgIC8vPz8gQ2hlY2sgdGhhdCBhbGwgcGF0aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0
dXJuIHR5cGUgIT0gdm9pZCA/CiAgICAgICAgIC8vICAgTWF5IGJlIGJlc3QgZG9uZSBhcyBwb3N0
IHByb2Nlc3MgcGhhc2Ugb24gaW50ZXJtZWRpYXRlIGNvZGUKICAgICAgICAgaWYgKGNvbnRleHQt
PmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQgJiYgISBjb250
ZXh0LT5mdW5jdGlvblJldHVybnNWYWx1ZSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
JDEubGluZSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlOiIsICIiLCAkMS5mdW5j
dGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEs
ICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAiIiwgJDEuZnVuY3Rpb24tPmdl
dE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0Fn
Z3JlZ2F0ZSgkMS5pbnRlcm1BZ2dyZWdhdGUsICQzLCAwKTsKLSAgICAgICAgY29udGV4dC0+aW50
ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQkLCBFT3BGdW5jdGlvbiwgJDEubGluZSk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50
ZXJtQWdncmVnYXRlLCAkMywgQCQpOworICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0
QWdncmVnYXRlT3BlcmF0b3IoJCQsIEVPcEZ1bmN0aW9uLCBAMSk7CiAgICAgICAgICQkLT5nZXRB
c0FnZ3JlZ2F0ZSgpLT5zZXROYW1lKCQxLmZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFtZSgpLmNfc3Ry
KCkpOwogICAgICAgICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0VHlwZSgkMS5mdW5jdGlvbi0+
Z2V0UmV0dXJuVHlwZSgpKTsKIApAQCAtMjEzNywxNSArMjA1MiwxNyBAQCBmdW5jdGlvbl9kZWZp
bml0aW9uCiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRPcHRpbWl6ZShjb250ZXh0
LT5wcmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRE
ZWJ1Zyhjb250ZXh0LT5wcmFnbWEoKS5kZWJ1Zyk7CiAKLSAgICAgICAgaWYgKCQzICYmICQzLT5n
ZXRBc0FnZ3JlZ2F0ZSgpKQotICAgICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldEVu
ZExpbmUoJDMtPmdldEFzQWdncmVnYXRlKCktPmdldEVuZExpbmUoKSk7Ci0KICAgICAgICAgY29u
dGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgfQogICAgIDsKIAogJSUKIAordm9pZCB5eWVy
cm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciog
cmVhc29uKSB7CisgICAgY29udGV4dC0+ZXJyb3IoKnl5bGxvYywgcmVhc29uLCAiIik7CisgICAg
Y29udGV4dC0+cmVjb3ZlcigpOworfQorCiBpbnQgZ2xzbGFuZ19wYXJzZShUUGFyc2VDb250ZXh0
KiBjb250ZXh0KSB7CiAgICAgcmV0dXJuIHl5cGFyc2UoY29udGV4dCk7CiB9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5j
cHAJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9nbHNsYW5nX2xleC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NCw4ICszODQsOCBAQCBz
dGF0aWMgdm9pZCB5eV9mYXRhbF9lcnJvciAoeXljb25zdCBjaGFyCiAJKnl5X2NwID0gJ1wwJzsg
XAogCXl5Zy0+eXlfY19idWZfcCA9IHl5X2NwOwogCi0jZGVmaW5lIFlZX05VTV9SVUxFUyAxNTUK
LSNkZWZpbmUgWVlfRU5EX09GX0JVRkZFUiAxNTYKKyNkZWZpbmUgWVlfTlVNX1JVTEVTIDE0Nwor
I2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSIDE0OAogLyogVGhpcyBzdHJ1Y3QgaXMgbm90IHVzZWQg
aW4gdGhpcyBzY2FubmVyLAogICAgYnV0IGl0cyBwcmVzZW5jZSBpcyBuZWNlc3NhcnkuICovCiBz
dHJ1Y3QgeXlfdHJhbnNfaW5mbwpAQCAtMzkzLDU4ICszOTMsNTcgQEAgc3RydWN0IHl5X3RyYW5z
X2luZm8KIAlmbGV4X2ludDMyX3QgeXlfdmVyaWZ5OwogCWZsZXhfaW50MzJfdCB5eV9ueHQ7CiAJ
fTsKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2NlcHRbNDU5XSA9CitzdGF0aWMg
eXljb25zdCBmbGV4X2ludDE2X3QgeXlfYWNjZXB0WzQ0M10gPQogICAgIHsgICAwLAotICAgICAg
ICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMTU2LCAgMTU0LCAgMTUzLCAgMTUz
LAotICAgICAgMTM4LCAgMTQ0LCAgMTQ5LCAgMTMzLCAgMTM0LCAgMTQyLCAgMTQxLCAgMTMwLCAg
MTM5LCAgMTM3LAotICAgICAgMTQzLCAgMTAyLCAgMTAyLCAgMTMxLCAgMTI3LCAgMTQ1LCAgMTMy
LCAgMTQ2LCAgMTUwLCAgIDk4LAotICAgICAgMTM1LCAgMTM2LCAgMTQ4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAg
IDk4LCAgMTI4LCAgMTQ3LCAgMTI5LCAgMTQwLCAgICAzLCAgICA0LCAgICAzLAotICAgICAgMTUy
LCAgMTU1LCAgMTUxLCAgMTI0LCAgMTEwLCAgMTI5LCAgMTE4LCAgMTEzLCAgMTA4LCAgMTE2LAot
ICAgICAgMTA2LCAgMTE3LCAgMTA3LCAgMTA1LCAgICAyLCAgICAxLCAgMTA5LCAgMTA0LCAgMTAw
LCAgMTAxLAotICAgICAgICAwLCAgICAwLCAgMTAyLCAgMTM2LCAgMTI4LCAgMTM1LCAgMTI1LCAg
MTIxLCAgMTIzLCAgMTIyLAotICAgICAgMTI2LCAgIDk4LCAgMTE0LCAgMTIwLCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgMTcsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMjAsICAgMjIsCi0gICAgICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0g
ICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAx
MTUsICAxMTksICAgIDUsCi0gICAgICAxNTEsICAgIDAsICAgIDEsICAxMDQsICAgIDAsICAgIDAs
ICAxMDMsICAgOTksICAxMTEsICAxMTIsCi0gICAgICAgNTAsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMTgsCi0gICAgICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMjYsICAgOTgsCi0gICAg
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMjMsICAgOTgsICAg
OTgsCi0KLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICAgMCwgIDEwNSwgICAgMCwgIDEw
NCwgICA5OCwgICAyOCwgICA5OCwgICA5OCwgICA5NSwKLSAgICAgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAyMSwgICA1MywgICA5OCwKLSAgICAgICA5OCwgICA5
OCwgICA2OSwgICA5OCwgICA5OCwgICA1OCwgICA3MywgICA5OCwgICA5OCwgICA5OCwKLSAgICAg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA3MCwgICAgOSwgICAzMywgICAzNCwgICAz
NSwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA1
NiwgICAyOSwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAzNiwg
ICAzNywgICAzOCwgICAyNywgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICAxNSwgICA0MiwgICA0
MywgICA0NCwgICA1MSwgICAxMiwgICA5OCwgICA5OCwgICA5OCwKLQotICAgICAgIDk4LCAgIDgy
LCAgIDgzLCAgIDg0LCAgIDk4LCAgIDMwLCAgIDc0LCAgIDI1LCAgIDg1LCAgIDg2LAotICAgICAg
IDg3LCAgICA3LCAgIDc5LCAgIDgwLCAgIDgxLCAgIDk4LCAgIDI0LCAgIDc3LCAgIDk4LCAgIDk4
LAotICAgICAgIDM5LCAgIDQwLCAgIDQxLCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDcxLCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDUyLCAgIDk4LCAgIDk3LCAgIDk4LCAg
IDk4LCAgIDE5LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDcyLCAgIDY2LCAgIDYx
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDc4LAotICAgICAgIDU3LCAgIDk4LCAg
IDY0LCAgIDMyLCAgIDk4LCAgIDk0LCAgIDY1LCAgIDQ5LCAgIDc2LCAgIDU5LAotICAgICAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDYwLCAgIDMxLAot
ICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgICA4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDU0LAotICAgICAgIDEzLCAgIDk4LCAgIDE0LCAgIDk4LCAgIDk4LCAgIDE2LCAgIDY3LCAg
IDk4LCAgIDk4LCAgIDk4LAotCi0gICAgICAgNjIsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgNTUsICAgNzUsICAgNjMsCi0gICAgICAgMTEsICAgNjgsICAgIDYsICAgOTYs
ICAgMTAsICAgODgsICAgNDUsICAgODksICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgNDYs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNDgsICAgOTgsCi0g
ICAgICAgOTIsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTAsICAgOTgsICAgOTEs
ICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNDcsICAgOTMsICAg
IDAKKyAgICAgICAgMCwgICAgMCwgIDE0OCwgIDE0NiwgIDE0NSwgIDE0NSwgIDEzMiwgIDEzOCwg
IDE0MywgIDEyNywKKyAgICAgIDEyOCwgIDEzNiwgIDEzNSwgIDEyNCwgIDEzMywgIDEzMSwgIDEz
NywgICA5NiwgICA5NiwgIDEyNSwKKyAgICAgIDEyMSwgIDEzOSwgIDEyNiwgIDE0MCwgIDE0NCwg
ICA5MywgIDEyOSwgIDEzMCwgIDE0MiwgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgIDEyMiwKKyAgICAgIDE0
MSwgIDEyMywgIDEzNCwgIDExOCwgIDEwNCwgIDEyMywgIDExMiwgIDEwNywgIDEwMiwgIDExMCwK
KyAgICAgIDEwMCwgIDExMSwgIDEwMSwgICA5OSwgIDEwMywgICA5OCwgICA5NSwgICA5NiwgICAg
MCwgICAgMCwKKyAgICAgIDEzMCwgIDEyMiwgIDEyOSwgIDExOSwgIDExNSwgIDExNywgIDExNiwg
IDEyMCwgICA5MywgIDEwOCwKKyAgICAgIDExNCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICAxMiwgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKworICAgICAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDE1LCAgIDE3LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAor
ICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgMTA5LCAgMTEzLCAgICAwLCAg
IDk4LCAgICAwLCAgICAwLAorICAgICAgIDk3LCAgIDk0LCAgMTA1LCAgMTA2LCAgIDQ1LCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkz
LCAgIDEzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAg
IDkzLCAgIDIxLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAg
ICAgIDkzLCAgIDE4LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLAorCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgIDAs
ICAgOTksICAgIDAsICAgOTgsICAgOTMsCisgICAgICAgMjMsICAgOTMsICAgOTMsICAgOTAsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgMTYsICAgNDgs
ICAgOTMsICAgOTMsICAgOTMsICAgNjQsICAgOTMsICAgOTMsICAgNTMsCisgICAgICAgNjgsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNjUsCisgICAg
ICAgIDQsICAgMjgsICAgMjksICAgMzAsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsCisgICAgICAgNTEsICAgMjQsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgMzEsICAgMzIsCisgICAgICAgMzMsICAgMjIsICAgOTMsICAgOTMsICAgOTMs
ICAgMTAsICAgMzcsICAgMzgsICAgMzksICAgNDYsCisgICAgICAgIDcsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgNzcsICAgNzgsICAgNzksICAgOTMsICAgMjUsCisgICAgICAgNjksICAgMjAs
ICAgODAsICAgODEsICAgODIsICAgIDIsICAgNzQsICAgNzUsICAgNzYsICAgOTMsCisKKyAgICAg
ICAxOSwgICA3MiwgICA5MywgICA5MywgICAzNCwgICAzNSwgICAzNiwgICA5MywgICA5MywgICA5
MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA2NiwgICA5Mywg
ICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA0NywgICA5
MywgICA5MiwgICA5MywgICA5MywKKyAgICAgICAxNCwgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA2NywgICA2MSwgICA1NiwgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA3
MywgICA1MiwgICA5MywgICA1OSwgICAyNywgICA5MywgICA4OSwKKyAgICAgICA2MCwgICA0NCwg
ICA3MSwgICA1NCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5
MywgICA5MywgICA1NSwgICAyNiwgICA5MywgICA5MywgICA5MywgICAgMywgICA5MywgICA5MywK
KyAgICAgICA5MywgICA5MywgICA5MywgICA0OSwgICAgOCwgICA5MywgICAgOSwgICA5MywgICA5
MywgICAxMSwKKyAgICAgICA2MiwgICA5MywgICA5MywgICA5MywgICA1NywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA1MCwgICA3MCwgICA1OCwgICAgNiwgICA2
MywgICAgMSwgICA5MSwgICAgNSwgICA4MywKKworICAgICAgIDQwLCAgIDg0LCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDQxLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkz
LCAgIDkzLCAgIDQzLCAgIDkzLCAgIDg3LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAor
ICAgICAgIDg1LCAgIDkzLCAgIDg2LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDQyLAorICAgICAgIDg4LCAgICAwCiAgICAgfSA7CiAKIHN0YXRpYyB5eWNvbnN0IGZsZXhf
aW50MzJfdCB5eV9lY1syNTZdID0KQEAgLTQ4MSwyMTIgKzQ4MCwxOTggQEAgc3RhdGljIHl5Y29u
c3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQogCiBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMy
X3QgeXlfbWV0YVs2OF0gPQogICAgIHsgICAwLAotICAgICAgICAxLCAgICAxLCAgICAyLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAotICAgICAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICAzLAotICAgICAgICAz
LCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAzLCAgICAzLCAgICAzLAot
ICAgICAgICAzLCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICAxLCAgICAxLCAgICAx
LCAgICAzLAotICAgICAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICA0LCAgICA0LCAg
ICA0LCAgICA0LCAgICA0LAotICAgICAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0
LCAgICA0LCAgICA0LCAgICA0LCAgICA0LAotICAgICAgICA0LCAgICA0LCAgICA0LCAgICAxLCAg
ICAxLCAgICAxLCAgICAxCisgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsCisgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsCisgICAgICAgIDIsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDIsICAgIDIsICAgIDIsCisgICAgICAgIDIsICAg
IDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAgIDIsCisgICAg
ICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAg
IDMsCisgICAgICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMs
ICAgIDMsICAgIDMsCisgICAgICAgIDMsICAgIDMsICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAg
IDEKICAgICB9IDsKIAotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Jhc2VbNDY0XSA9
CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYmFzZVs0NDVdID0KICAgICB7ICAgMCwK
LSAgICAgICAgMCwgICAgMCwgICA2NSwgICA2NiwgICA3NSwgICAgMCwgIDY4MCwgIDY4MSwgIDY4
MSwgIDY4MSwKLSAgICAgIDY1NCwgICA0NSwgIDEzNywgIDY4MSwgIDY4MSwgIDY1MywgIDEzNCwg
IDY4MSwgIDEzMywgIDEzMSwKLSAgICAgIDE0NiwgIDE1OSwgIDE2OCwgIDY1MSwgIDY4MSwgIDE4
NiwgIDY1MSwgICA0NywgIDY4MSwgICAgMCwKLSAgICAgIDY4MSwgIDY4MSwgIDEyOCwgIDEwMCwg
IDExMCwgIDE1MiwgIDE1NiwgIDE0NiwgIDE2NiwgIDYyMiwKLSAgICAgIDE3MywgIDEwOSwgIDYy
MSwgIDEyNiwgIDE3NywgIDYxNSwgIDE3OCwgIDYyOCwgIDE4NywgIDE4NCwKLSAgICAgIDE0MSwg
IDE5NywgIDYyNCwgIDY4MSwgIDE1NywgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwgIDY1NiwKLSAg
ICAgIDY4MSwgIDY4MSwgICAgMCwgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwg
IDY4MSwKLSAgICAgIDY4MSwgIDY4MSwgIDY4MSwgIDIzNiwgIDY4MSwgICAgMCwgIDY4MSwgIDI0
MywgIDI3MywgIDI4MiwKLSAgICAgIDMwNCwgICAgMCwgIDMxNCwgIDY4MSwgIDY4MSwgIDY4MSwg
IDY0NCwgIDY4MSwgIDY4MSwgIDY4MSwKLSAgICAgIDY0MywgICAgMCwgIDY4MSwgIDY4MSwgIDYx
NiwgIDYwOSwgIDYxMiwgIDYyMCwgIDYxOSwgIDYwNiwKLQotICAgICAgNjIxLCAgNjA4LCAgNjE0
LCAgNjAyLCAgNTk5LCAgNjEyLCAgNTk5LCAgNTk2LCAgNTk2LCAgNjAyLAotICAgICAgNTkwLCAg
MTg5LCAgNTk1LCAgNjA1LCAgNTkxLCAgNTk3LCAgNjAwLCAgNjAxLCAgICAwLCAgMjE2LAotICAg
ICAgNjAwLCAgMTg4LCAgNTg2LCAgNTk5LCAgNTkwLCAgNTkyLCAgNTgyLCAgNTk2LCAgNTkzLCAg
NTk1LAotICAgICAgNTc4LCAgNTgzLCAgNTgwLCAgNTY5LCAgMTgzLCAgNTc3LCAgNTgyLCAgNTc4
LCAgNTgwLCAgNTY5LAotICAgICAgNTcyLCAgMjIwLCAgNTc3LCAgNTY5LCAgNTgxLCAgMTc2LCAg
NTc0LCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgICAwLCAgMzMxLCAgICAwLCAgMzQ0LCAgMzYx
LCAgMjkwLCAgMzc0LCAgICAwLCAgNjgxLCAgNjgxLAotICAgICAgICAwLCAgNTY2LCAgNTcwLCAg
NTc5LCAgNTc2LCAgNTYwLCAgNTYwLCAgMjE1LCAgNTc1LCAgNTcyLAotICAgICAgNTcyLCAgNTcw
LCAgNTY3LCAgNTU5LCAgNTY1LCAgNTUyLCAgNTYzLCAgNTQ5LCAgNTY1LCAgICAwLAotICAgICAg
NTYyLCAgNTUwLCAgNTU3LCAgNTU0LCAgNTU4LCAgNTUxLCAgNTQwLCAgNTM5LCAgNTUyLCAgNTU1
LAotICAgICAgNTUyLCAgNTQ3LCAgNTM4LCAgMjYwLCAgNTQzLCAgNTQ2LCAgNTM3LCAgNTM0LCAg
NTM4LCAgNTQ0LAotCi0gICAgICA1MzUsICA1MjYsICA1MjksICA1MjcsICA1MzcsICA1MjMsICA1
MjEsICA1MzQsICA1MjAsICA1MjIsCi0gICAgICA1MTksICA1MzAsICA1MjksICAyODMsICA1MjQs
ICA1MTksICA1MDgsICAyNjQsICA1MjYsICA1MjgsCi0gICAgICA1MTcsICAzODEsICAzODgsICAz
OTUsICA0MDIsICA1MTgsICAgIDAsICA1MTYsICAzMjAsICAgIDAsCi0gICAgICA1MDgsICA1MDYs
ICA1MTQsICA1MDMsICA1MjAsICA1MDksICAzMzYsICAgIDAsICAgIDAsICA1MDMsCi0gICAgICA1
MTMsICA1MTMsICAgIDAsICA0OTgsICAzNDksICAgIDAsICAgIDAsICA1MDAsICAzNjYsICA1MDEs
Ci0gICAgICA0OTUsICA0OTQsICA0OTUsICA0OTQsICA0MDcsICAgIDAsICAgIDAsICAgIDAsICAg
IDAsICAgIDAsCi0gICAgICA0OTAsICA0OTEsICA0OTYsICA0ODcsICA1MDAsICA0OTUsICA0OTQs
ICA0ODYsICA0OTAsICA0ODIsCi0gICAgICA0ODUsICA0ODksICA0OTQsICA0ODAsICA0OTIsICA0
ODMsICAgIDAsICAgIDAsICA0ODksICA0NzgsCi0gICAgICA0NzgsICA0ODMsICA0ODIsICA0Nzks
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0NjksICA0ODEsCi0gICAgICA0ODMsICAgIDAsICAg
IDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0NzEsICA0NzIsICA0NjYsCi0KLSAgICAgIDQ3
NiwgICAgMCwgICAgMCwgICAgMCwgIDQ2NywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwK
LSAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ3NCwgICAgMCwgICAgMCwgIDQ3
MiwgIDQ2OCwKLSAgICAgICAgMCwgICAgMCwgICAgMCwgIDQ2NCwgIDQ2MCwgIDQ2NSwgIDQ1NSwg
IDQ2OCwgIDQ1NCwgIDQ2NywKLSAgICAgIDQ1NiwgIDQ2MywgICAgMCwgIDQ2MSwgIDQ2MywgIDQ0
NywgIDQ0OSwgIDQ1NSwgIDQ2MSwgIDQ1NiwKLSAgICAgIDQ0NCwgICAgMCwgIDQ0NiwgICAgMCwg
IDQ0NSwgIDQ0OCwgICAgMCwgIDQzNywgIDQzNiwgIDQzNiwKLSAgICAgIDQ0OSwgICAgMCwgIDQ1
MSwgICAgMCwgIDQ1MCwgIDQ0OSwgIDQzNCwgIDQ0NywgIDQzNCwgICAgMCwKLSAgICAgICAgMCwg
IDQzNywgICAgMCwgICAgMCwgIDQyOSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAg
ICAgIDQyNiwgIDQzNywgIDQzMCwgIDQzNiwgIDQzMywgIDQyOCwgIDQyMCwgIDQzMiwgICAgMCwg
ICAgMCwKLSAgICAgIDQyNSwgIDQzMiwgIDQyMSwgICAgMCwgIDQzMCwgIDQyNywgIDQxNywgIDQx
MSwgIDQyNSwgICAgMCwKLSAgICAgICAgMCwgIDQyNSwgICAgMCwgIDQyMywgIDQyMiwgICAgMCwg
ICAgMCwgIDQyMSwgIDQwNywgIDQxOSwKLQotICAgICAgICAwLCAgNDEwLCAgNDMxLCAgNDMwLCAg
NDI5LCAgNDAwLCAgMzk2LCAgICAwLCAgICAwLCAgICAwLAotICAgICAgICAwLCAgICAwLCAgICAw
LCAgICAwLCAgICAwLCAgNDIxLCAgMjUwLCAgNDIxLCAgNDExLCAgMzg0LAotICAgICAgMzkyLCAg
Mzk0LCAgMzkwLCAgMzkyLCAgMzkxLCAgMzkwLCAgMzkzLCAgMzkwLCAgMzkxLCAgMzg4LAotICAg
ICAgICAwLCAgMzMyLCAgMzQzLCAgMzE3LCAgMzI5LCAgMzEzLCAgMzE3LCAgMzA0LCAgMzIxLCAg
MjkxLAotICAgICAgICAwLCAgMzAyLCAgMjgwLCAgMjcxLCAgMjU1LCAgMjYyLCAgICAwLCAgMjU2
LCAgICAwLCAgMjMyLAotICAgICAgMjA2LCAgMjEyLCAgMTQ4LCAgMTU5LCAgMTEzLCAgICAwLCAg
ICAwLCAgNjgxLCAgNDQyLCAgNDQ0LAotICAgICAgNDQ2LCAgNDUwLCAgMTYxCisgICAgICAgIDAs
ICAgIDAsICA1ODcsICA1ODgsICA1ODgsICA1ODgsICA1NjEsICAgNDMsICAgNjQsICA1ODgsCisg
ICAgICA1ODgsICA1NjAsICAgNjEsICA1ODgsICAgNjAsICAgNTgsICA1NTksICAgNzcsICAgODYs
ICA1NTcsCisgICAgICA1ODgsICAxMDQsICA1NTcsICAgNTUsICA1ODgsICAgIDAsICA1ODgsICA1
ODgsICAgNzUsICAgMjYsCisgICAgICAgNTcsICAgODIsICAgODMsICAgNzMsICAgOTMsICA1Mjgs
ICAgOTcsICAgOTUsICA1MjcsICAgNDQsCisgICAgICAgNzEsICA1MjEsICAxMDQsICA1MzQsICAx
MTAsICAxMTYsICAgMzUsICAxMTEsICA1MzAsICA1ODgsCisgICAgICAxMTQsICA1ODgsICA1ODgs
ICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsCisgICAgICA1ODgsICA1
ODgsICA1ODgsICAxNjUsICA1ODgsICAxNzIsICAyMDIsICAyMTEsICAyMzMsICAgIDAsCisgICAg
ICA1ODgsICA1ODgsICA1ODgsICA1NTEsICA1ODgsICA1ODgsICA1ODgsICA1NTAsICAgIDAsICA1
ODgsCisgICAgICA1ODgsICA1MjMsICA1MTYsICA1MTksICA1MjcsICA1MjYsICA1MTMsICA1Mjgs
ICA1MTUsICA1MjEsCisgICAgICA1MDksICA1MDYsICA1MTksICA1MDYsICA1MDMsICA1MDMsICA1
MDksICA0OTcsICAxMDgsICA1MDIsCisKKyAgICAgIDUxMiwgIDQ5OCwgIDUwNCwgIDUwNywgIDUw
OCwgICAgMCwgIDE0NSwgIDUwNywgIDExMywgIDQ5MywKKyAgICAgIDUwNiwgIDQ5NywgIDQ5OSwg
IDQ4OSwgIDUwMywgIDUwMCwgIDUwMiwgIDQ4NSwgIDQ5MCwgIDQ4NywKKyAgICAgIDQ3NiwgIDE1
NywgIDQ4NCwgIDQ4OSwgIDQ4NSwgIDQ4NywgIDQ3NiwgIDQ3OSwgIDExOCwgIDQ4NCwKKyAgICAg
IDQ3NiwgIDQ4OCwgICA3MCwgIDQ4MSwgIDU4OCwgIDU4OCwgIDI0NiwgIDI1MywgIDI3MCwgIDIx
OSwKKyAgICAgIDI4MywgICAgMCwgIDU4OCwgIDU4OCwgICAgMCwgIDQ3MywgIDQ3NywgIDQ4Niwg
IDQ4MywgIDQ2NywKKyAgICAgIDQ2NywgIDExOSwgIDQ4MiwgIDQ3OSwgIDQ3OSwgIDQ3NywgIDQ3
NCwgIDQ2NiwgIDQ3MiwgIDQ1OSwKKyAgICAgIDQ3MCwgIDQ1NiwgIDQ3MiwgICAgMCwgIDQ2OSwg
IDQ1NywgIDQ2NCwgIDQ2MSwgIDQ2NSwgIDQ1OCwKKyAgICAgIDQ0NywgIDQ0NiwgIDQ1OSwgIDQ2
MiwgIDQ1OSwgIDQ1NCwgIDQ0NSwgIDE4OCwgIDQ1MCwgIDQ1MywKKyAgICAgIDQ0NCwgIDQ0MSwg
IDQ0NSwgIDQ1MSwgIDQ0MiwgIDQzMywgIDQzNiwgIDQzNCwgIDQ0NCwgIDQzMCwKKyAgICAgIDQy
OCwgIDQ0MSwgIDQyNywgIDQyOSwgIDQyNiwgIDQzNywgIDQzNiwgIDEyNCwgIDQzMSwgIDQyNiwK
KworICAgICAgNDE1LCAgMjU4LCAgNDMzLCAgNDM1LCAgNDI0LCAgMjkwLCAgMjk3LCAgMzA0LCAg
MzExLCAgNDI1LAorICAgICAgICAwLCAgNDIzLCAgMjc1LCAgICAwLCAgNDE1LCAgNDEzLCAgNDIx
LCAgNDEwLCAgNDI3LCAgNDE2LAorICAgICAgMzE2LCAgICAwLCAgICAwLCAgNDEwLCAgNDIwLCAg
NDIwLCAgICAwLCAgNDA1LCAgMzE5LCAgICAwLAorICAgICAgICAwLCAgNDA3LCAgMzIyLCAgNDA4
LCAgNDAyLCAgNDAxLCAgNDAyLCAgNDAxLCAgMzI1LCAgICAwLAorICAgICAgICAwLCAgICAwLCAg
ICAwLCAgICAwLCAgMzk3LCAgMzk4LCAgNDAzLCAgMzk0LCAgNDA3LCAgNDAyLAorICAgICAgNDAx
LCAgMzkzLCAgMzk3LCAgMzg5LCAgMzkyLCAgMzk2LCAgNDAxLCAgMzg3LCAgMzk5LCAgMzkwLAor
ICAgICAgICAwLCAgICAwLCAgMzk2LCAgMzg1LCAgMzg1LCAgMzkwLCAgMzg5LCAgMzg2LCAgICAw
LCAgICAwLAorICAgICAgICAwLCAgICAwLCAgMzc2LCAgMzg4LCAgMzkwLCAgICAwLCAgICAwLCAg
ICAwLCAgICAwLCAgICAwLAorICAgICAgICAwLCAgMzc4LCAgMzc5LCAgMzczLCAgMzgzLCAgICAw
LCAgICAwLCAgICAwLCAgMzc0LCAgICAwLAorICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAg
ICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMzgxLAorCisgICAgICAgIDAsICAgIDAsICAz
NzksICAzNzUsICAgIDAsICAgIDAsICAgIDAsICAzNzEsICAzNjcsICAzNzIsCisgICAgICAzNjIs
ICAzNzUsICAzNjEsICAzNzQsICAzNjMsICAzNzAsICAgIDAsICAzNjgsICAzNzAsICAzNTQsCisg
ICAgICAzNTYsICAzNjIsICAzNjgsICAzNjMsICAzNTEsICAgIDAsICAzNTMsICAgIDAsICAzNTIs
ICAzNTUsCisgICAgICAgIDAsICAzNDQsICAzNDMsICAzNDMsICAzNTYsICAgIDAsICAzNTgsICAg
IDAsICAzNTcsICAzNTYsCisgICAgICAzNDEsICAzNTQsICAzNDEsICAgIDAsICAgIDAsICAzNDQs
ICAgIDAsICAgIDAsICAzMzYsICAgIDAsCisgICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAz
MzMsICAzNDQsICAzMzcsICAzNDMsICAzNDAsICAzMzUsCisgICAgICAzMjcsICAzMzksICAgIDAs
ICAgIDAsICAzMzIsICAzMzksICAzMjgsICAgIDAsICAzMzcsICAzMzQsCisgICAgICAzMjQsICAz
MjksICAzMzIsICAgIDAsICAgIDAsICAzMzIsICAgIDAsICAzMzAsICAzMjksICAgIDAsCisgICAg
ICAgIDAsICAzMjgsICAzMTQsICAzMjYsICAgIDAsICAzMTcsICAzMzgsICAzMzcsICAzMzYsICAz
MDcsCisgICAgICAzMDMsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAs
ICAgIDAsICAzMjgsCisKKyAgICAgIDE2NiwgIDMyNSwgIDMxNiwgIDI5OSwgIDMwOCwgIDMxMCwg
IDMwNiwgIDMwOCwgIDMwNywgIDMwNiwKKyAgICAgIDMwOSwgIDMwNiwgIDI1NiwgIDI1MywgICAg
MCwgIDIyOCwgIDIzOCwgIDIyMiwgIDIzNSwgIDIwMywKKyAgICAgIDIwNywgIDIwNCwgIDIxMiwg
IDE5MSwgICAgMCwgIDIwMSwgIDE2NSwgIDE2NywgIDE1MywgIDE2MSwKKyAgICAgICAgMCwgIDE3
MCwgICAgMCwgIDE3NSwgIDE1MSwgIDE0MSwgIDEwMCwgIDExNCwgICA1OSwgICAgMCwKKyAgICAg
ICAgMCwgIDU4OCwgIDM1OSwgIDExMwogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2lu
dDE2X3QgeXlfZGVmWzQ2NF0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2RlZls0
NDVdID0KICAgICB7ICAgMCwKLSAgICAgIDQ1OCwgICAgMSwgIDQ1OSwgIDQ1OSwgIDQ1OCwgICAg
NSwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MCwKLSAgICAgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAg
ICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ2MSwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ2MiwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ2MywgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ2
MCwgIDQ1OCwgIDQ1OCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAg
ICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDYxLCAgNDU4
LCAgNDYyLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDYzLCAgNDU4LCAgNDU4LAotICAgICAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0
NjAsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
Ci0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0g
ICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsCi0KLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAg
ICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAgICAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAg
ICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgICAwLCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4
LCAgNDU4CisgICAgICA0NDIsICAgIDEsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDMsICA0NDIsICA0NDIsICA0NDIsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDIsCisgICAg
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDQsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDMsICA0NDIsCisgICAgICA0NDIsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0NCwgIDQ0MiwgIDQ0MiwgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywK
KyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywKKworICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAor
ICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorCisg
ICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAg
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgICAgMCwgIDQ0MiwgIDQ0MgogICAgIH0gOwogCi1zdGF0
aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0Wzc0OV0gPQorc3RhdGljIHl5Y29uc3QgZmxl
eF9pbnQxNl90IHl5X254dFs2NTZdID0KICAgICB7ICAgMCwKLSAgICAgICAgOCwgICAgOSwgICAx
MCwgICAxMSwgICAxMiwgICAxMywgICAxNCwgICAxNSwgICAxNiwgICAxNywKLSAgICAgICAxOCwg
ICAxOSwgICAyMCwgICAyMSwgICAyMiwgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywKLSAg
ICAgICAyMywgICAyNCwgICAyNSwgICAyNiwgICAyNywgICAyOCwgICAyOSwgICAzMCwgICAzMCwg
ICAzMCwKLSAgICAgICAzMCwgICAzMCwgICAzMCwgICAzMCwgICAzMCwgICAzMCwgICAzMSwgICAz
MiwgICAzMywgICAzNCwKLSAgICAgICAzNSwgICAzNiwgICAzNywgICAzOCwgICAzOSwgICA0MCwg
ICA0MSwgICA0MiwgICAzMCwgICA0MywKLSAgICAgICA0NCwgICA0NSwgICA0NiwgICA0NywgICA0
OCwgICA0OSwgICA1MCwgICA1MSwgICA1MiwgICA1MywKLSAgICAgICAzMCwgICAzMCwgICAzMCwg
ICA1NCwgICA1NSwgICA1NiwgICA1NywgICA1OSwgICA1OSwgICA2NSwKLSAgICAgICA2NiwgICA5
MCwgICA5MSwgICA2MCwgICA2MCwgICAgOCwgICA2MSwgICA2MiwgICAgOCwgICAgOCwKLSAgICAg
ICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAg
OCwKLSAgICAgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwg
ICAgOCwgICAgOCwKLQotICAgICAgICA4LCAgICA4LCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAg
IDYzLCAgIDYzLCAgIDYzLCAgIDYzLAotICAgICAgIDYzLCAgICA4LCAgICA4LCAgICA4LCAgIDYz
LCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLAotICAgICAgIDYzLCAgIDYzLCAgIDYzLCAg
IDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLAotICAgICAgIDYzLCAgIDYz
LCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgICA4LCAgICA4LAotICAgICAg
ICA4LCAgICA4LCAgIDY3LCAgIDcwLCAgIDcyLCAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0
LAotICAgICAgIDc0LCAgIDc0LCAgIDkzLCAgMTE5LCAgIDc1LCAgIDk1LCAgIDk2LCAgIDczLCAg
IDcxLCAgIDc2LAotICAgICAgMTIwLCAgIDY4LCAgIDk3LCAgMTU4LCAgIDk4LCAgMTIzLCAgIDk0
LCAgMTIxLCAgIDk5LCAgMTI0LAotICAgICAgIDc3LCAgIDc4LCAgNDU3LCAgIDc5LCAgIDc5LCAg
IDc5LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDgwLAotICAgICAgIDc4LCAgMTQ4LCAgIDgzLCAgIDgz
LCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgxLAotICAgICAgIDg1LCAgMTAwLCAg
MTQyLCAgNDU2LCAgIDgyLCAgMTA3LCAgMTQzLCAgMTA4LCAgIDgxLCAgMTAzLAotCi0gICAgICA0
NTUsICAxMDEsICAgODEsICAxMDQsICAxMDIsICAxMTAsICAxMDksICAgODYsICAxMDUsICAgODcs
Ci0gICAgICAgODgsICAgODEsICAxMTYsICAxMTEsICAxMDYsICAxMTIsICAxMjUsICAxMjgsICAx
MTMsICAgODIsCi0gICAgICAxMTcsICAxNDksICAyMDYsICAyMTksICAxMTQsICAyMjAsICAxMzIs
ICAxMzgsICAxNzgsICAxMjYsCi0gICAgICAxMzksICAxMTgsICAxMjksICAxMzMsICAxMzQsICAx
MzAsICAxNDQsICAyMDcsICAxNDAsICAxOTIsCi0gICAgICAxNDUsICAxNzksICA0NTQsICAxMzUs
ICAxMzYsICAxNDEsICAxMzcsICAxOTMsICA0NTMsICAxNDYsCi0gICAgICAgNzQsICAgNzQsICAg
NzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAxNTQsICAxNTQsICAxNTQsCi0gICAgICAxNTQs
ICAxNTQsICAxNTQsICAxNTQsICA0NTIsICAxODYsICAxNTIsICAyMTQsICAxODcsICAxODgsCi0g
ICAgICAyMzIsICAyMzMsICAxODksICAxNTUsICAxOTAsICAyMTUsICAyNTgsICAyNTksICAyNjAs
ICAxNTIsCi0gICAgICAyODUsICAyODYsICAyODcsICA0MjIsICA0MjMsICAgNzgsICAxNTUsICAg
NzksICAgNzksICAgNzksCi0gICAgICAgNzksICAgNzksICAgNzksICAgODAsICAgNzgsICA0NTEs
ICAgODAsICAgODAsICAgODAsICAgODAsCi0KLSAgICAgICA4MCwgICA4MCwgICA4MCwgICA4MSwg
IDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywKLSAgICAgIDE1NywgIDQ1MCwgICA4
MSwgIDE1NiwgIDQ0OSwgIDE1NiwgICA4MSwgIDQ0OCwgIDE1NywgIDE1NywKLSAgICAgIDE1Nywg
IDE1NywgIDE1NywgIDE1NywgIDE1NywgICA4MSwgICA3OCwgIDI4MCwgICA4MywgICA4MywKLSAg
ICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgIDI4MSwgIDI5MywgIDI5NCwgIDI5NSwg
IDQ0NywKLSAgICAgIDIyMiwgIDQ0NiwgIDIyMiwgIDQ0NSwgICA4MSwgIDIyMywgIDIyMywgIDIy
MywgIDIyMywgIDIyMywKLSAgICAgIDIyMywgIDIyMywgIDMwMiwgIDMwMywgIDMwNCwgIDQ0NCwg
IDQ0MywgICA4MSwgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDE1
NCwgIDMwOSwgIDMxMCwgIDMxMSwgIDQ0MiwgIDQ0MSwKLSAgICAgIDIyNCwgIDQ0MCwgIDIyNCwg
IDQzOSwgIDE1NSwgIDIyNSwgIDIyNSwgIDIyNSwgIDIyNSwgIDIyNSwKLSAgICAgIDIyNSwgIDIy
NSwgIDMxMywgIDMxNCwgIDMxNSwgIDQzOCwgIDQzNywgIDE1NSwgIDE1NywgIDE1NywKLSAgICAg
IDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIy
MywKLQotICAgICAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIz
LCAgMjIzLCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAg
MjI1LCAgMjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMjI1LCAgMzIxLCAgMzIy
LCAgMzIzLCAgNDAzLCAgNDA0LCAgNDA1LCAgNDM2LAotICAgICAgNDM1LCAgNDM0LCAgNDMzLCAg
NDMyLCAgNDMxLCAgNDMwLCAgNDI5LCAgNDI4LCAgNDI3LCAgNDA2LAotICAgICAgNDI2LCAgNDA3
LCAgIDU4LCAgIDU4LCAgIDU4LCAgIDU4LCAgIDkyLCAgIDkyLCAgMTUxLCAgMTUxLAotICAgICAg
MTUzLCAgNDI1LCAgMTUzLCAgMTUzLCAgNDI0LCAgNDIxLCAgNDIwLCAgNDE5LCAgNDE4LCAgNDE3
LAotICAgICAgNDE2LCAgNDE1LCAgNDE0LCAgNDEzLCAgNDEyLCAgNDExLCAgNDEwLCAgNDA5LCAg
NDA4LCAgNDAyLAotICAgICAgNDAxLCAgNDAwLCAgMzk5LCAgMzk4LCAgMzk3LCAgMzk2LCAgMzk1
LCAgMzk0LCAgMzkzLCAgMzkyLAotICAgICAgMzkxLCAgMzkwLCAgMzg5LCAgMzg4LCAgMzg3LCAg
Mzg2LCAgMzg1LCAgMzg0LCAgMzgzLCAgMzgyLAotICAgICAgMzgxLCAgMzgwLCAgMzc5LCAgMzc4
LCAgMzc3LCAgMzc2LCAgMzc1LCAgMzc0LCAgMzczLCAgMzcyLAotCi0gICAgICAzNzEsICAzNzAs
ICAzNjksICAzNjgsICAzNjcsICAzNjYsICAzNjUsICAzNjQsICAzNjMsICAzNjIsCi0gICAgICAz
NjEsICAzNjAsICAzNTksICAzNTgsICAzNTcsICAzNTYsICAzNTUsICAzNTQsICAzNTMsICAzNTIs
Ci0gICAgICAzNTEsICAzNTAsICAzNDksICAzNDgsICAzNDcsICAzNDYsICAzNDUsICAzNDQsICAz
NDMsICAzNDIsCi0gICAgICAzNDEsICAzNDAsICAzMzksICAzMzgsICAzMzcsICAzMzYsICAzMzUs
ICAzMzQsICAzMzMsICAzMzIsCi0gICAgICAzMzEsICAzMzAsICAzMjksICAzMjgsICAzMjcsICAz
MjYsICAzMjUsICAzMjQsICAzMjAsICAzMTksCi0gICAgICAzMTgsICAzMTcsICAzMTYsICAzMTIs
ICAzMDgsICAzMDcsICAzMDYsICAzMDUsICAzMDEsICAzMDAsCi0gICAgICAyOTksICAyOTgsICAy
OTcsICAyOTYsICAyOTIsICAyOTEsICAyOTAsICAyODksICAyODgsICAyODQsCi0gICAgICAyODMs
ICAyODIsICAyNzksICAyNzgsICAyNzcsICAyNzYsICAyNzUsICAyNzQsICAyNzMsICAyNzIsCi0g
ICAgICAyNzEsICAyNzAsICAyNjksICAyNjgsICAyNjcsICAyNjYsICAyNjUsICAyNjQsICAyNjMs
ICAyNjIsCi0gICAgICAyNjEsICAyNTcsICAyNTYsICAyNTUsICAyNTQsICAyNTMsICAyNTIsICAy
NTEsICAyNTAsICAyNDksCi0KLSAgICAgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDI0NCwgIDI0
MywgIDI0MiwgIDI0MSwgIDI0MCwgIDIzOSwKLSAgICAgIDIzOCwgIDIzNywgIDIzNiwgIDIzNSwg
IDIzNCwgIDIzMSwgIDIzMCwgIDIyOSwgIDIyOCwgIDIyNywKLSAgICAgIDIyNiwgIDIyMSwgIDIx
OCwgIDIxNywgIDIxNiwgIDIxMywgIDIxMiwgIDIxMSwgIDIxMCwgIDIwOSwKLSAgICAgIDIwOCwg
IDIwNSwgIDIwNCwgIDIwMywgIDIwMiwgIDIwMSwgIDIwMCwgIDE5OSwgIDE5OCwgIDE5NywKLSAg
ICAgIDE5NiwgIDE5NSwgIDE5NCwgIDE5MSwgIDE4NSwgIDE4NCwgIDE4MywgIDE4MiwgIDE4MSwg
IDE4MCwKLSAgICAgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwgIDE3MywgIDE3MiwgIDE3MSwgIDE3
MCwgIDE2OSwgIDE2OCwKLSAgICAgIDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2MywgIDE2Miwg
IDE2MSwgIDE2MCwgIDE1OSwgIDE1MCwKLSAgICAgIDE0NywgIDEzMSwgIDEyNywgIDEyMiwgIDEx
NSwgICA4OSwgICA4NCwgICA2OSwgICA2NCwgIDQ1OCwKLSAgICAgICAgNywgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLQotICAg
ICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4CisgICAgICAgIDQsICAgIDUsICAgIDYsICAgIDcs
ICAgIDgsICAgIDksICAgMTAsICAgMTEsICAgMTIsICAgMTMsCisgICAgICAgMTQsICAgMTUsICAg
MTYsICAgMTcsICAgMTgsICAgMTksICAgMTksICAgMTksICAgMTksICAgMTksCisgICAgICAgMTks
ICAgMjAsICAgMjEsICAgMjIsICAgMjMsICAgMjQsICAgMjUsICAgMjYsICAgMjYsICAgMjYsCisg
ICAgICAgMjYsICAgMjYsICAgMjYsICAgMjYsICAgMjYsICAgMjYsICAgMjcsICAgMjgsICAgMjks
ICAgMzAsCisgICAgICAgMzEsICAgMzIsICAgMzMsICAgMzQsICAgMzUsICAgMzYsICAgMzcsICAg
MzgsICAgMjYsICAgMzksCisgICAgICAgNDAsICAgNDEsICAgNDIsICAgNDMsICAgNDQsICAgNDUs
ICAgNDYsICAgNDcsICAgNDgsICAgNDksCisgICAgICAgMjYsICAgMjYsICAgMjYsICAgNTAsICAg
NTEsICAgNTIsICAgNTMsICAgNTUsICAgNTYsICAgNTcsCisgICAgICAgNjAsICAgNjIsICAgNjQs
ICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNzcsCisgICAgICAgNzgsICAg
ODIsICAgODMsICAxMTAsICAgNjMsICAgNjEsICAxMjksICAxMTEsICAgNTgsICAgNjYsCisgICAg
ICAxMzAsICAgNjcsICAgNjcsICAgNjcsICAgNjcsICAgNjcsICAgNjcsICAgNjgsICAgNjYsICAg
ODAsCisKKyAgICAgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2
OSwgICA3MiwgICA4NCwKKyAgICAgIDExMiwgICA4NSwgICA3MCwgICA4MSwgIDE0MiwgICA4Niwg
ICA2OSwgIDIwMywgIDQ0MSwgIDIwNCwKKyAgICAgICA2OSwgICA4NywgICA5NCwgIDExMywgICA5
NSwgICA3MywgICA5MCwgICA3NCwgICA3NSwgICA2OSwKKyAgICAgICA5MSwgICA4OCwgICA5Nywg
ICA5NiwgICA4OSwgICA5MiwgIDEwMywgICA3MCwgIDEzNSwgIDEwNiwKKyAgICAgICA5OCwgICA5
MywgICA5OSwgIDExNSwgIDEwNCwgIDEwMCwgIDEwNywgIDE2MiwgIDQ0MCwgIDExOSwKKyAgICAg
IDEzMSwgIDEwMSwgIDQzOSwgIDEwOCwgIDEzMiwgIDEwNSwgIDEyMCwgIDEyMSwgIDExNiwgIDEy
NSwKKyAgICAgIDE2MywgIDExNywgIDEyNiwgIDEzMywgIDE3NiwgIDE5OCwgIDEyMiwgIDEyMywg
IDI2NCwgIDEyNCwKKyAgICAgIDEyNywgIDQzOCwgIDE3NywgIDE5OSwgIDIxNiwgIDIxNywgIDI2
NSwgIDEyOCwgIDEzNiwgICA2NCwKKyAgICAgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwg
ICA2NCwgIDEzOCwgIDEzOCwgIDEzOCwgIDEzOCwKKyAgICAgIDEzOCwgIDEzOCwgIDEzOCwgIDQz
NywgIDE3MCwgIDEzNywgIDE5MCwgIDE3MSwgIDE3MiwgIDQwNiwKKworICAgICAgNDA3LCAgMTcz
LCAgMTM5LCAgMTc0LCAgMjQyLCAgMjQzLCAgMjQ0LCAgNDM2LCAgMTM3LCAgNDM1LAorICAgICAg
NDM0LCAgMTkxLCAgNDMzLCAgNDMyLCAgIDY2LCAgMTM5LCAgIDY3LCAgIDY3LCAgIDY3LCAgIDY3
LAorICAgICAgIDY3LCAgIDY3LCAgIDY4LCAgIDY2LCAgNDMxLCAgIDY4LCAgIDY4LCAgIDY4LCAg
IDY4LCAgIDY4LAorICAgICAgIDY4LCAgIDY4LCAgIDY5LCAgMTQxLCAgMTQxLCAgMTQxLCAgMTQx
LCAgMTQxLCAgMTQxLCAgMTQxLAorICAgICAgNDMwLCAgIDY5LCAgMTQwLCAgNDI5LCAgMTQwLCAg
IDY5LCAgNDI4LCAgMTQxLCAgMTQxLCAgMTQxLAorICAgICAgMTQxLCAgMTQxLCAgMTQxLCAgMTQx
LCAgIDY5LCAgMjA2LCAgNDI3LCAgMjA2LCAgNDI2LCAgNDI1LAorICAgICAgMjA3LCAgMjA3LCAg
MjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMTM4LCAgMTM4LCAgMTM4LAorICAgICAgMTM4
LCAgMTM4LCAgMTM4LCAgMTM4LCAgMjY5LCAgMjcwLCAgMjcxLCAgNDI0LCAgNDIzLCAgMjA4LAor
ICAgICAgNDIyLCAgMjA4LCAgNDIxLCAgMTM5LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5
LCAgMjA5LAorICAgICAgMjA5LCAgMjc3LCAgMjc4LCAgMjc5LCAgNDIwLCAgNDE5LCAgMTM5LCAg
MTQxLCAgMTQxLCAgMTQxLAorCisgICAgICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAyMDcsICAy
MDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsCisgICAgICAyMDcsICAyMDcsICAyMDcsICAyMDcs
ICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDksICAyMDksCisgICAgICAyMDksICAyMDksICAy
MDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksCisgICAgICAyMDks
ICAyMDksICAyODYsICAyODcsICAyODgsICAyOTMsICAyOTQsICAyOTUsICAyOTcsICAyOTgsCisg
ICAgICAyOTksICAzMDUsICAzMDYsICAzMDcsICAzODcsICAzODgsICAzODksICA0MTgsICA0MTcs
ICA0MTYsCisgICAgICA0MTUsICA0MTQsICA0MTMsICA0MTIsICA0MTEsICA0MTAsICA0MDksICAz
OTAsICA0MDgsICAzOTEsCisgICAgICAgNzksICAgNzksICA0MDUsICA0MDQsICA0MDMsICA0MDIs
ICA0MDEsICA0MDAsICAzOTksICAzOTgsCisgICAgICAzOTcsICAzOTYsICAzOTUsICAzOTQsICAz
OTMsICAzOTIsICAzODYsICAzODUsICAzODQsICAzODMsCisgICAgICAzODIsICAzODEsICAzODAs
ICAzNzksICAzNzgsICAzNzcsICAzNzYsICAzNzUsICAzNzQsICAzNzMsCisgICAgICAzNzIsICAz
NzEsICAzNzAsICAzNjksICAzNjgsICAzNjcsICAzNjYsICAzNjUsICAzNjQsICAzNjMsCisKKyAg
ICAgIDM2MiwgIDM2MSwgIDM2MCwgIDM1OSwgIDM1OCwgIDM1NywgIDM1NiwgIDM1NSwgIDM1NCwg
IDM1MywKKyAgICAgIDM1MiwgIDM1MSwgIDM1MCwgIDM0OSwgIDM0OCwgIDM0NywgIDM0NiwgIDM0
NSwgIDM0NCwgIDM0MywKKyAgICAgIDM0MiwgIDM0MSwgIDM0MCwgIDMzOSwgIDMzOCwgIDMzNywg
IDMzNiwgIDMzNSwgIDMzNCwgIDMzMywKKyAgICAgIDMzMiwgIDMzMSwgIDMzMCwgIDMyOSwgIDMy
OCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMywKKyAgICAgIDMyMiwgIDMyMSwgIDMyMCwg
IDMxOSwgIDMxOCwgIDMxNywgIDMxNiwgIDMxNSwgIDMxNCwgIDMxMywKKyAgICAgIDMxMiwgIDMx
MSwgIDMxMCwgIDMwOSwgIDMwOCwgIDMwNCwgIDMwMywgIDMwMiwgIDMwMSwgIDMwMCwKKyAgICAg
IDI5NiwgIDI5MiwgIDI5MSwgIDI5MCwgIDI4OSwgIDI4NSwgIDI4NCwgIDI4MywgIDI4MiwgIDI4
MSwKKyAgICAgIDI4MCwgIDI3NiwgIDI3NSwgIDI3NCwgIDI3MywgIDI3MiwgIDI2OCwgIDI2Nywg
IDI2NiwgIDI2MywKKyAgICAgIDI2MiwgIDI2MSwgIDI2MCwgIDI1OSwgIDI1OCwgIDI1NywgIDI1
NiwgIDI1NSwgIDI1NCwgIDI1MywKKyAgICAgIDI1MiwgIDI1MSwgIDI1MCwgIDI0OSwgIDI0OCwg
IDI0NywgIDI0NiwgIDI0NSwgIDI0MSwgIDI0MCwKKworICAgICAgMjM5LCAgMjM4LCAgMjM3LCAg
MjM2LCAgMjM1LCAgMjM0LCAgMjMzLCAgMjMyLCAgMjMxLCAgMjMwLAorICAgICAgMjI5LCAgMjI4
LCAgMjI3LCAgMjI2LCAgMjI1LCAgMjI0LCAgMjIzLCAgMjIyLCAgMjIxLCAgMjIwLAorICAgICAg
MjE5LCAgMjE4LCAgMjE1LCAgMjE0LCAgMjEzLCAgMjEyLCAgMjExLCAgMjEwLCAgMjA1LCAgMjAy
LAorICAgICAgMjAxLCAgMjAwLCAgMTk3LCAgMTk2LCAgMTk1LCAgMTk0LCAgMTkzLCAgMTkyLCAg
MTg5LCAgMTg4LAorICAgICAgMTg3LCAgMTg2LCAgMTg1LCAgMTg0LCAgMTgzLCAgMTgyLCAgMTgx
LCAgMTgwLCAgMTc5LCAgMTc4LAorICAgICAgMTc1LCAgMTY5LCAgMTY4LCAgMTY3LCAgMTY2LCAg
MTY1LCAgMTY0LCAgMTYxLCAgMTYwLCAgMTU5LAorICAgICAgMTU4LCAgMTU3LCAgMTU2LCAgMTU1
LCAgMTU0LCAgMTUzLCAgMTUyLCAgMTUxLCAgMTUwLCAgMTQ5LAorICAgICAgMTQ4LCAgMTQ3LCAg
MTQ2LCAgMTQ1LCAgMTQ0LCAgMTQzLCAgMTM0LCAgMTE4LCAgMTE0LCAgMTA5LAorICAgICAgMTAy
LCAgIDc2LCAgIDcxLCAgIDY1LCAgIDU5LCAgIDU0LCAgNDQyLCAgICAzLCAgNDQyLCAgNDQyLAor
ICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLAorCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisg
ICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIKICAgICB9IDsKIAotc3RhdGljIHl5Y29u
c3QgZmxleF9pbnQxNl90IHl5X2Noa1s3NDldID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZf
dCB5eV9jaGtbNjU2XSA9CiAgICAgeyAgIDAsCiAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCiAgICAgICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCkBAIC02OTQsOTUg
KzY3OSw4NSBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzc0OV0gCiAgICAg
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsCiAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsCiAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsCi0gICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDMsICAgIDQsICAgMTIsCi0gICAgICAgMTIsICAgMjgsICAgMjgsICAg
IDMsICAgIDQsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsCi0gICAgICAgIDUsICAgIDUs
ICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsCi0gICAgICAg
IDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUs
Ci0KLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwg
ICAxMywgICAxNywgICAxOSwgICAyMCwgICAyMCwgICAyMCwgICAyMCwgICAyMCwKLSAgICAgICAy
MCwgICAyMCwgICAzMywgICA0MiwgICAyMSwgICAzNCwgICAzNCwgICAxOSwgICAxNywgICAyMSwK
LSAgICAgICA0MiwgICAxMywgICAzNSwgIDQ2MywgICAzNSwgICA0NCwgICAzMywgICA0MiwgICAz
NSwgICA0NCwKLSAgICAgICAyMSwgICAyMiwgIDQ1NSwgICAyMiwgICAyMiwgICAyMiwgICAyMiwg
ICAyMiwgICAyMiwgICAyMiwKLSAgICAgICAyMywgICA1NSwgICAyMywgICAyMywgICAyMywgICAy
MywgICAyMywgICAyMywgICAyMywgICAyMiwKLSAgICAgICAyNiwgICAzNiwgICA1MSwgIDQ1NCwg
ICAyMiwgICAzOCwgICA1MSwgICAzOCwgICAyMywgICAzNywKLQotICAgICAgNDUzLCAgIDM2LCAg
IDIyLCAgIDM3LCAgIDM2LCAgIDM5LCAgIDM4LCAgIDI2LCAgIDM3LCAgIDI2LAotICAgICAgIDI2
LCAgIDIzLCAgIDQxLCAgIDM5LCAgIDM3LCAgIDM5LCAgIDQ1LCAgIDQ3LCAgIDM5LCAgIDIyLAot
ICAgICAgIDQxLCAgIDU1LCAgMTM1LCAgMTQ2LCAgIDM5LCAgMTQ2LCAgIDQ5LCAgIDUwLCAgMTEy
LCAgIDQ1LAotICAgICAgIDUwLCAgIDQxLCAgIDQ3LCAgIDQ5LCAgIDQ5LCAgIDQ3LCAgIDUyLCAg
MTM1LCAgIDUwLCAgMTIyLAotICAgICAgIDUyLCAgMTEyLCAgNDUyLCAgIDQ5LCAgIDQ5LCAgIDUw
LCAgIDQ5LCAgMTIyLCAgNDUxLCAgIDUyLAotICAgICAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0LCAg
IDc0LCAgIDc0LCAgIDc0LCAgIDc4LCAgIDc4LCAgIDc4LAotICAgICAgIDc4LCAgIDc4LCAgIDc4
LCAgIDc4LCAgNDUwLCAgMTIwLCAgIDc0LCAgMTQyLCAgMTIwLCAgMTIwLAotICAgICAgMTY4LCAg
MTY4LCAgMTIwLCAgIDc4LCAgMTIwLCAgMTQyLCAgMTk0LCAgMTk0LCAgMTk0LCAgIDc0LAotICAg
ICAgMjE4LCAgMjE4LCAgMjE4LCAgNDE3LCAgNDE3LCAgIDc5LCAgIDc4LCAgIDc5LCAgIDc5LCAg
IDc5LAotICAgICAgIDc5LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDgwLCAgNDQ4LCAgIDgwLCAgIDgw
LCAgIDgwLCAgIDgwLAotCi0gICAgICAgODAsICAgODAsICAgODAsICAgNzksICAxNTYsICAxNTYs
ICAxNTYsICAxNTYsICAxNTYsICAxNTYsCi0gICAgICAxNTYsICA0NDYsICAgODAsICAgODEsICA0
NDUsICAgODEsICAgNzksICA0NDQsICAgODEsICAgODEsCi0gICAgICAgODEsICAgODEsICAgODEs
ICAgODEsICAgODEsICAgODAsICAgODMsICAyMTQsICAgODMsICAgODMsCi0gICAgICAgODMsICAg
ODMsICAgODMsICAgODMsICAgODMsICAyMTQsICAyMjksICAyMjksICAyMjksICA0NDMsCi0gICAg
ICAxNTIsICA0NDIsICAxNTIsICA0NDAsICAgODMsICAxNTIsICAxNTIsICAxNTIsICAxNTIsICAx
NTIsCi0gICAgICAxNTIsICAxNTIsICAyMzcsICAyMzcsICAyMzcsICA0MzksICA0MzgsICAgODMs
ICAxNTQsICAxNTQsCi0gICAgICAxNTQsICAxNTQsICAxNTQsICAxNTQsICAxNTQsICAyNDUsICAy
NDUsICAyNDUsICA0MzcsICA0MzYsCi0gICAgICAxNTUsICA0MzUsICAxNTUsICA0MzQsICAxNTQs
ICAxNTUsICAxNTUsICAxNTUsICAxNTUsICAxNTUsCi0gICAgICAxNTUsICAxNTUsICAyNDksICAy
NDksICAyNDksICA0MzMsICA0MzIsICAxNTQsICAxNTcsICAxNTcsCi0gICAgICAxNTcsICAxNTcs
ICAxNTcsICAxNTcsICAxNTcsICAyMjIsICAyMjIsICAyMjIsICAyMjIsICAyMjIsCi0KLSAgICAg
IDIyMiwgIDIyMiwgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIy
NCwKLSAgICAgIDIyNCwgIDIyNCwgIDIyNCwgIDIyNCwgIDIyNCwgIDIyNCwgIDIyNSwgIDIyNSwg
IDIyNSwgIDIyNSwKLSAgICAgIDIyNSwgIDIyNSwgIDIyNSwgIDI1NSwgIDI1NSwgIDI1NSwgIDM4
OCwgIDM4OCwgIDM4OCwgIDQzMCwKLSAgICAgIDQyOSwgIDQyOCwgIDQyNywgIDQyNiwgIDQyNSwg
IDQyNCwgIDQyMywgIDQyMiwgIDQyMSwgIDM4OCwKLSAgICAgIDQyMCwgIDM4OCwgIDQ1OSwgIDQ1
OSwgIDQ1OSwgIDQ1OSwgIDQ2MCwgIDQ2MCwgIDQ2MSwgIDQ2MSwKLSAgICAgIDQ2MiwgIDQxOSwg
IDQ2MiwgIDQ2MiwgIDQxOCwgIDQxNiwgIDQwNywgIDQwNiwgIDQwNSwgIDQwNCwKLSAgICAgIDQw
MywgIDQwMiwgIDQwMCwgIDM5OSwgIDM5OCwgIDM5NSwgIDM5NCwgIDM5MiwgIDM4OSwgIDM4NywK
LSAgICAgIDM4NiwgIDM4NSwgIDM4MywgIDM4MiwgIDM4MSwgIDM3OCwgIDM3NywgIDM3NiwgIDM3
NSwgIDM3NCwKLSAgICAgIDM3MywgIDM3MiwgIDM3MSwgIDM2NSwgIDM2MiwgIDM1OSwgIDM1OCwg
IDM1NywgIDM1NiwgIDM1NSwKLSAgICAgIDM1MywgIDM1MSwgIDM1MCwgIDM0OSwgIDM0OCwgIDM0
NiwgIDM0NSwgIDM0MywgIDM0MSwgIDM0MCwKLQotICAgICAgMzM5LCAgMzM4LCAgMzM3LCAgMzM2
LCAgMzM1LCAgMzM0LCAgMzMyLCAgMzMxLCAgMzMwLCAgMzI5LAotICAgICAgMzI4LCAgMzI3LCAg
MzI2LCAgMzI1LCAgMzI0LCAgMzIwLCAgMzE5LCAgMzE2LCAgMzA1LCAgMzAxLAotICAgICAgMzAw
LCAgMjk5LCAgMjk4LCAgMjkxLCAgMjkwLCAgMjg5LCAgMjg0LCAgMjgzLCAgMjgyLCAgMjgxLAot
ICAgICAgMjgwLCAgMjc5LCAgMjc2LCAgMjc1LCAgMjc0LCAgMjczLCAgMjcyLCAgMjcxLCAgMjcw
LCAgMjY5LAotICAgICAgMjY4LCAgMjY3LCAgMjY2LCAgMjY1LCAgMjY0LCAgMjYzLCAgMjYyLCAg
MjYxLCAgMjU0LCAgMjUzLAotICAgICAgMjUyLCAgMjUxLCAgMjUwLCAgMjQ4LCAgMjQ0LCAgMjQy
LCAgMjQxLCAgMjQwLCAgMjM2LCAgMjM1LAotICAgICAgMjM0LCAgMjMzLCAgMjMyLCAgMjMxLCAg
MjI4LCAgMjI2LCAgMjIxLCAgMjIwLCAgMjE5LCAgMjE3LAotICAgICAgMjE2LCAgMjE1LCAgMjEz
LCAgMjEyLCAgMjExLCAgMjEwLCAgMjA5LCAgMjA4LCAgMjA3LCAgMjA2LAotICAgICAgMjA1LCAg
MjA0LCAgMjAzLCAgMjAyLCAgMjAxLCAgMjAwLCAgMTk5LCAgMTk4LCAgMTk3LCAgMTk2LAotICAg
ICAgMTk1LCAgMTkzLCAgMTkyLCAgMTkxLCAgMTkwLCAgMTg5LCAgMTg4LCAgMTg3LCAgMTg2LCAg
MTg1LAotCi0gICAgICAxODQsICAxODMsICAxODIsICAxODEsICAxNzksICAxNzgsICAxNzcsICAx
NzYsICAxNzUsICAxNzQsCi0gICAgICAxNzMsICAxNzIsICAxNzEsICAxNzAsICAxNjksICAxNjcs
ICAxNjYsICAxNjUsICAxNjQsICAxNjMsCi0gICAgICAxNjIsICAxNDcsICAxNDUsICAxNDQsICAx
NDMsICAxNDEsICAxNDAsICAxMzksICAxMzgsICAxMzcsCi0gICAgICAxMzYsICAxMzQsICAxMzMs
ICAxMzIsICAxMzEsICAxMzAsICAxMjksICAxMjgsICAxMjcsICAxMjYsCi0gICAgICAxMjUsICAx
MjQsICAxMjMsICAxMjEsICAxMTgsICAxMTcsICAxMTYsICAxMTUsICAxMTQsICAxMTMsCi0gICAg
ICAxMTEsICAxMTAsICAxMDksICAxMDgsICAxMDcsICAxMDYsICAxMDUsICAxMDQsICAxMDMsICAx
MDIsCi0gICAgICAxMDEsICAxMDAsICAgOTksICAgOTgsICAgOTcsICAgOTYsICAgOTUsICAgOTEs
ICAgODcsICAgNjAsCi0gICAgICAgNTMsICAgNDgsICAgNDYsICAgNDMsICAgNDAsICAgMjcsICAg
MjQsICAgMTYsICAgMTEsICAgIDcsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0KLSAgICAgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OAorICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAx
LCAgICAxLCAgICA4LCAgICA4LCAgICA5LAorICAgICAgIDEzLCAgIDE1LCAgIDE2LCAgIDE2LCAg
IDE2LCAgIDE2LCAgIDE2LCAgIDE2LCAgIDE2LCAgIDI0LAorICAgICAgIDI0LCAgIDMwLCAgIDMw
LCAgIDQwLCAgIDE1LCAgIDEzLCAgIDQ3LCAgIDQwLCAgICA5LCAgIDE4LAorICAgICAgIDQ3LCAg
IDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE5LCAgIDI5LAorCisg
ICAgICAgMTksICAgMTksICAgMTksICAgMTksICAgMTksICAgMTksICAgMTksICAgMTgsICAgMjIs
ICAgMzEsCisgICAgICAgNDEsICAgMzEsICAgMTgsICAgMjksICA0NDQsICAgMzEsICAgMTksICAx
MzMsICA0MzksICAxMzMsCisgICAgICAgMTgsICAgMzIsICAgMzQsICAgNDEsICAgMzQsICAgMjIs
ICAgMzMsICAgMjIsICAgMjIsICAgMTksCisgICAgICAgMzMsICAgMzIsICAgMzUsICAgMzQsICAg
MzIsICAgMzMsICAgMzcsICAgMTgsICAgNTEsICAgMzgsCisgICAgICAgMzUsICAgMzMsICAgMzUs
ICAgNDMsICAgMzcsICAgMzUsICAgMzgsICAgOTksICA0MzgsICAgNDUsCisgICAgICAgNDgsICAg
MzUsICA0MzcsICAgMzgsICAgNDgsICAgMzcsICAgNDUsICAgNDUsICAgNDMsICAgNDYsCisgICAg
ICAgOTksICAgNDMsICAgNDYsICAgNDgsICAxMDksICAxMjksICAgNDUsICAgNDUsICAxOTgsICAg
NDUsCisgICAgICAgNDYsICA0MzYsICAxMDksICAxMjksICAxNTIsICAxNTIsICAxOTgsICAgNDYs
ICAgNTEsICAgNjQsCisgICAgICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAg
NjYsICAgNjYsICAgNjYsICAgNjYsCisgICAgICAgNjYsICAgNjYsICAgNjYsICA0MzUsICAxMDcs
ICAgNjQsICAxMjIsICAxMDcsICAxMDcsICA0MDEsCisKKyAgICAgIDQwMSwgIDEwNywgICA2Niwg
IDEwNywgIDE3OCwgIDE3OCwgIDE3OCwgIDQzNCwgICA2NCwgIDQzMiwKKyAgICAgIDQzMCwgIDEy
MiwgIDQyOSwgIDQyOCwgICA2NywgICA2NiwgICA2NywgICA2NywgICA2NywgICA2NywKKyAgICAg
ICA2NywgICA2NywgICA2NywgICA2OCwgIDQyNywgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2
OCwKKyAgICAgICA2OCwgICA2OCwgICA2NywgIDE0MCwgIDE0MCwgIDE0MCwgIDE0MCwgIDE0MCwg
IDE0MCwgIDE0MCwKKyAgICAgIDQyNiwgICA2OCwgICA2OSwgIDQyNCwgICA2OSwgICA2NywgIDQy
MywgICA2OSwgICA2OSwgICA2OSwKKyAgICAgICA2OSwgICA2OSwgICA2OSwgICA2OSwgICA2OCwg
IDEzNywgIDQyMiwgIDEzNywgIDQyMSwgIDQyMCwKKyAgICAgIDEzNywgIDEzNywgIDEzNywgIDEz
NywgIDEzNywgIDEzNywgIDEzNywgIDEzOCwgIDEzOCwgIDEzOCwKKyAgICAgIDEzOCwgIDEzOCwg
IDEzOCwgIDEzOCwgIDIwMiwgIDIwMiwgIDIwMiwgIDQxOSwgIDQxOCwgIDEzOSwKKyAgICAgIDQx
NywgIDEzOSwgIDQxNiwgIDEzOCwgIDEzOSwgIDEzOSwgIDEzOSwgIDEzOSwgIDEzOSwgIDEzOSwK
KyAgICAgIDEzOSwgIDIxMywgIDIxMywgIDIxMywgIDQxNCwgIDQxMywgIDEzOCwgIDE0MSwgIDE0
MSwgIDE0MSwKKworICAgICAgMTQxLCAgMTQxLCAgMTQxLCAgMTQxLCAgMjA2LCAgMjA2LCAgMjA2
LCAgMjA2LCAgMjA2LCAgMjA2LAorICAgICAgMjA2LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAg
MjA3LCAgMjA3LCAgMjA3LCAgMjA4LCAgMjA4LAorICAgICAgMjA4LCAgMjA4LCAgMjA4LCAgMjA4
LCAgMjA4LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LAorICAgICAgMjA5LCAgMjA5LCAg
MjIxLCAgMjIxLCAgMjIxLCAgMjI5LCAgMjI5LCAgMjI5LCAgMjMzLCAgMjMzLAorICAgICAgMjMz
LCAgMjM5LCAgMjM5LCAgMjM5LCAgMzcyLCAgMzcyLCAgMzcyLCAgNDEyLCAgNDExLCAgNDEwLAor
ICAgICAgNDA5LCAgNDA4LCAgNDA3LCAgNDA2LCAgNDA1LCAgNDA0LCAgNDAzLCAgMzcyLCAgNDAy
LCAgMzcyLAorICAgICAgNDQzLCAgNDQzLCAgNDAwLCAgMzkxLCAgMzkwLCAgMzg5LCAgMzg4LCAg
Mzg3LCAgMzg2LCAgMzg0LAorICAgICAgMzgzLCAgMzgyLCAgMzc5LCAgMzc4LCAgMzc2LCAgMzcz
LCAgMzcxLCAgMzcwLCAgMzY5LCAgMzY3LAorICAgICAgMzY2LCAgMzY1LCAgMzYyLCAgMzYxLCAg
MzYwLCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LAorICAgICAgMzQ5LCAgMzQ2LCAgMzQz
LCAgMzQyLCAgMzQxLCAgMzQwLCAgMzM5LCAgMzM3LCAgMzM1LCAgMzM0LAorCisgICAgICAzMzMs
ICAzMzIsICAzMzAsICAzMjksICAzMjcsICAzMjUsICAzMjQsICAzMjMsICAzMjIsICAzMjEsCisg
ICAgICAzMjAsICAzMTksICAzMTgsICAzMTYsICAzMTUsICAzMTQsICAzMTMsICAzMTIsICAzMTEs
ICAzMTAsCisgICAgICAzMDksICAzMDgsICAzMDQsICAzMDMsICAzMDAsICAyODksICAyODUsICAy
ODQsICAyODMsICAyODIsCisgICAgICAyNzUsICAyNzQsICAyNzMsICAyNjgsICAyNjcsICAyNjYs
ICAyNjUsICAyNjQsICAyNjMsICAyNjAsCisgICAgICAyNTksICAyNTgsICAyNTcsICAyNTYsICAy
NTUsICAyNTQsICAyNTMsICAyNTIsICAyNTEsICAyNTAsCisgICAgICAyNDksICAyNDgsICAyNDcs
ICAyNDYsICAyNDUsICAyMzgsICAyMzcsICAyMzYsICAyMzUsICAyMzQsCisgICAgICAyMzIsICAy
MjgsICAyMjYsICAyMjUsICAyMjQsICAyMjAsICAyMTksICAyMTgsICAyMTcsICAyMTYsCisgICAg
ICAyMTUsICAyMTIsICAyMTAsICAyMDUsICAyMDQsICAyMDMsICAyMDEsICAyMDAsICAxOTksICAx
OTcsCisgICAgICAxOTYsICAxOTUsICAxOTQsICAxOTMsICAxOTIsICAxOTEsICAxOTAsICAxODks
ICAxODgsICAxODcsCisgICAgICAxODYsICAxODUsICAxODQsICAxODMsICAxODIsICAxODEsICAx
ODAsICAxNzksICAxNzcsICAxNzYsCisKKyAgICAgIDE3NSwgIDE3NCwgIDE3MywgIDE3MiwgIDE3
MSwgIDE3MCwgIDE2OSwgIDE2OCwgIDE2NywgIDE2NiwKKyAgICAgIDE2NSwgIDE2MywgIDE2Miwg
IDE2MSwgIDE2MCwgIDE1OSwgIDE1OCwgIDE1NywgIDE1NiwgIDE1NSwKKyAgICAgIDE1NCwgIDE1
MywgIDE1MSwgIDE1MCwgIDE0OSwgIDE0OCwgIDE0NywgIDE0NiwgIDEzNCwgIDEzMiwKKyAgICAg
IDEzMSwgIDEzMCwgIDEyOCwgIDEyNywgIDEyNiwgIDEyNSwgIDEyNCwgIDEyMywgIDEyMSwgIDEy
MCwKKyAgICAgIDExOSwgIDExOCwgIDExNywgIDExNiwgIDExNSwgIDExNCwgIDExMywgIDExMiwg
IDExMSwgIDExMCwKKyAgICAgIDEwOCwgIDEwNSwgIDEwNCwgIDEwMywgIDEwMiwgIDEwMSwgIDEw
MCwgICA5OCwgICA5NywgICA5NiwKKyAgICAgICA5NSwgICA5NCwgICA5MywgICA5MiwgICA5MSwg
ICA5MCwgICA4OSwgICA4OCwgICA4NywgICA4NiwKKyAgICAgICA4NSwgICA4NCwgICA4MywgICA4
MiwgICA3OCwgICA3NCwgICA0OSwgICA0NCwgICA0MiwgICAzOSwKKyAgICAgICAzNiwgICAyMywg
ICAyMCwgICAxNywgICAxMiwgICAgNywgICAgMywgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwK
KworICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyCiAgICAgfSA7CiAKIC8qIFRhYmxlIG9mIGJvb2xlYW5z
LCB0cnVlIGlmIHJ1bGUgY291bGQgbWF0Y2ggZW9sLiAqLwotc3RhdGljIHl5Y29uc3QgZmxleF9p
bnQzMl90IHl5X3J1bGVfY2FuX21hdGNoX2VvbFsxNTZdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhf
aW50MzJfdCB5eV9ydWxlX2Nhbl9tYXRjaF9lb2xbMTQ4XSA9CiAgICAgeyAgIDAsCi0wLCAwLCAw
LCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKzAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsICAgICB9OworICAg
IDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsICAgICB9OwogCiAvKiBUaGUgaW50ZW50IGJlaGluZCB0
aGlzIGRlZmluaXRpb24gaXMgdGhhdCBpdCdsbCBjYXRjaAogICogYW55IHVzZXMgb2YgUkVKRUNU
IHdoaWNoIGZsZXggbWlzc2VkLgpAQCAtODE3LDcgKzc5MiwxMCBAQCBXSElDSCBHRU5FUkFURVMg
VEhFIEdMU0wgRVMgTEVYRVIgKGdsc2xhCiAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQxMDIp
CiAjZW5kaWYKIAotI2RlZmluZSBZWV9VU0VSX0FDVElPTiB5eWx2YWwtPmxleC5saW5lID0geXls
aW5lbm87CisjZGVmaW5lIFlZX1VTRVJfQUNUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIHl5bGxvYy0+Zmlyc3RfZmlsZSA9IHl5bGxvYy0+bGFzdF9maWxlID0geXlj
b2x1bW47IFwKKyAgICB5eWxsb2MtPmZpcnN0X2xpbmUgPSB5eWxsb2MtPmxhc3RfbGluZSA9IHl5
bGluZW5vOworCiAjZGVmaW5lIFlZX0lOUFVUKGJ1ZiwgcmVzdWx0LCBtYXhfc2l6ZSkgXAogICAg
IHJlc3VsdCA9IHN0cmluZ19pbnB1dChidWYsIG1heF9zaXplLCB5eXNjYW5uZXIpOwogCkBAIC04
MjYsOCArODA0LDYgQEAgc3RhdGljIGludCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcgog
c3RhdGljIGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcik7CiAKICNkZWZpbmUg
SU5JVElBTCAwCi0jZGVmaW5lIENPTU1FTlQgMQotI2RlZmluZSBGSUVMRFMgMgogCiAjZGVmaW5l
IFlZX0VYVFJBX1RZUEUgVFBhcnNlQ29udGV4dCoKIApAQCAtODY1LDYgKzg0MSw4IEBAIHN0cnVj
dCB5eWd1dHNfdAogCiAgICAgWVlTVFlQRSAqIHl5bHZhbF9yOwogCisgICAgWVlMVFlQRSAqIHl5
bGxvY19yOworCiAgICAgfTsgLyogZW5kIHN0cnVjdCB5eWd1dHNfdCAqLwogCiBzdGF0aWMgaW50
IHl5X2luaXRfZ2xvYmFscyAoeXlzY2FuX3QgeXlzY2FubmVyICk7CkBAIC04NzMsNiArODUxLDgg
QEAgc3RhdGljIGludCB5eV9pbml0X2dsb2JhbHMgKHl5c2Nhbl90IHl5cwogICAgICAqIGZyb20g
Ymlzb24gb3V0cHV0IGluIHNlY3Rpb24gMS4qLwogICAgICMgICAgZGVmaW5lIHl5bHZhbCB5eWct
Pnl5bHZhbF9yCiAgICAgCisgICAgIyAgICBkZWZpbmUgeXlsbG9jIHl5Zy0+eXlsbG9jX3IKKyAg
ICAKIGludCB5eWxleF9pbml0ICh5eXNjYW5fdCogc2Nhbm5lcik7CiAKIGludCB5eWxleF9pbml0
X2V4dHJhIChZWV9FWFRSQV9UWVBFIHVzZXJfZGVmaW5lZCx5eXNjYW5fdCogc2Nhbm5lcik7CkBA
IC05MTAsNiArODkwLDEwIEBAIFlZU1RZUEUgKiB5eWdldF9sdmFsICh5eXNjYW5fdCB5eXNjYW5u
ZXIKIAogdm9pZCB5eXNldF9sdmFsIChZWVNUWVBFICogeXlsdmFsX3BhcmFtICx5eXNjYW5fdCB5
eXNjYW5uZXIgKTsKIAorICAgICAgIFlZTFRZUEUgKnl5Z2V0X2xsb2MgKHl5c2Nhbl90IHl5c2Nh
bm5lciApOworICAgIAorICAgICAgICB2b2lkIHl5c2V0X2xsb2MgKFlZTFRZUEUgKiB5eWxsb2Nf
cGFyYW0gLHl5c2Nhbl90IHl5c2Nhbm5lciApOworICAgIAogLyogTWFjcm9zIGFmdGVyIHRoaXMg
cG9pbnQgY2FuIGFsbCBiZSBvdmVycmlkZGVuIGJ5IHVzZXIgZGVmaW5pdGlvbnMgaW4KICAqIHNl
Y3Rpb24gMS4KICAqLwpAQCAtOTQwLDEyICs5MjQsNiBAQCBzdGF0aWMgaW50IGlucHV0ICh5eXNj
YW5fdCB5eXNjYW5uZXIgKTsKIAogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCB5eV9wdXNoX3N0
YXRlIChpbnQgbmV3X3N0YXRlICx5eXNjYW5fdCB5eXNjYW5uZXIpOwotICAgIAotICAgIHN0YXRp
YyB2b2lkIHl5X3BvcF9zdGF0ZSAoeXlzY2FuX3QgeXlzY2FubmVyICk7Ci0gICAgCi0gICAgc3Rh
dGljIGludCB5eV90b3Bfc3RhdGUgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwotICAgIAogLyogQW1v
dW50IG9mIHN0dWZmIHRvIHNsdXJwIHVwIHdpdGggZWFjaCByZWFkLiAqLwogI2lmbmRlZiBZWV9S
RUFEX0JVRl9TSVpFCiAjZGVmaW5lIFlZX1JFQURfQlVGX1NJWkUgODE5MgpAQCAtMTAyMiwxMCAr
MTAwMCwxMCBAQCBzdGF0aWMgaW50IGlucHV0ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKICNkZWZp
bmUgWVlfREVDTF9JU19PVVJTIDEKIAogZXh0ZXJuIGludCB5eWxleCBcCi0gICAgICAgICAgICAg
ICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyKTsKKyAgICAgICAg
ICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFtLFlZTFRZUEUgKiB5eWxsb2NfcGFyYW0gLHl5
c2Nhbl90IHl5c2Nhbm5lcik7CiAKICNkZWZpbmUgWVlfREVDTCBpbnQgeXlsZXggXAotICAgICAg
ICAgICAgICAgKFlZU1RZUEUgKiB5eWx2YWxfcGFyYW0gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCisg
ICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSwgWVlMVFlQRSAqIHl5bGxvY19w
YXJhbSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKICNlbmRpZiAvKiAhWVlfREVDTCAqLwogCiAvKiBD
b2RlIGV4ZWN1dGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBydWxlLCBhZnRlciB5eXRleHQg
YW5kIHl5bGVuZwpAQCAtMTA1MiwxMiArMTAzMCwxMCBAQCBZWV9ERUNMCiAJcmVnaXN0ZXIgaW50
IHl5X2FjdDsKICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5
eXNjYW5uZXI7CiAKLSAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0ID0geXlleHRyYTsKLQotICAg
IC8qIFNpbmdsZS1saW5lIGNvbW1lbnRzICovCi0KICAgICB5eWx2YWwgPSB5eWx2YWxfcGFyYW07
CiAKKyAgICB5eWxsb2MgPSB5eWxsb2NfcGFyYW07CisKIAlpZiAoICF5eWctPnl5X2luaXQgKQog
CQl7CiAJCXl5Zy0+eXlfaW5pdCA9IDE7CkBAIC0xMTA5LDEzICsxMDg1LDEzIEBAIHl5X21hdGNo
OgogCQkJd2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9
IHl5X2N1cnJlbnRfc3RhdGUgKQogCQkJCXsKIAkJCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkg
eXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0
NTkgKQorCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NDMgKQogCQkJCQl5eV9jID0geXlf
bWV0YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJCQl9CiAJCQl5eV9jdXJyZW50X3N0YXRlID0g
eXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsK
IAkJCSsreXlfY3A7CiAJCQl9Ci0JCXdoaWxlICggeXlfY3VycmVudF9zdGF0ZSAhPSA0NTggKTsK
KwkJd2hpbGUgKCB5eV9jdXJyZW50X3N0YXRlICE9IDQ0MiApOwogCQl5eV9jcCA9IHl5Zy0+eXlf
bGFzdF9hY2NlcHRpbmdfY3BvczsKIAkJeXlfY3VycmVudF9zdGF0ZSA9IHl5Zy0+eXlfbGFzdF9h
Y2NlcHRpbmdfc3RhdGU7CiAKQEAgLTExNDksMTk4ICsxMTI1LDE5OSBAQCBkb19hY3Rpb246CS8q
IFRoaXMgbGFiZWwgaXMgdXNlZCBvbmx5IHRvCiAKIGNhc2UgMToKIFlZX1JVTEVfU0VUVVAKLTsK
K3sgcmV0dXJuIElOVkFSSUFOVDsgfQogCVlZX0JSRUFLCi0vKiBNdWx0aS1saW5lIGNvbW1lbnRz
ICovCiBjYXNlIDI6CiBZWV9SVUxFX1NFVFVQCi17IHl5X3B1c2hfc3RhdGUoQ09NTUVOVCwgeXlz
Y2FubmVyKTsgfQoreyByZXR1cm4gSElHSF9QUkVDSVNJT047IH0KIAlZWV9CUkVBSwogY2FzZSAz
OgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4gTUVESVVNX1BSRUNJU0lPTjsgfQorCVlZX0JSRUFL
CiBjYXNlIDQ6Ci0vKiBydWxlIDQgY2FuIG1hdGNoIGVvbCAqLwogWVlfUlVMRV9TRVRVUAotOwor
eyByZXR1cm4gTE9XX1BSRUNJU0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDU6CiBZWV9SVUxFX1NF
VFVQCi17IHl5X3BvcF9zdGF0ZSh5eXNjYW5uZXIpOyB9Cit7IHJldHVybiBQUkVDSVNJT047IH0K
IAlZWV9CUkVBSwogY2FzZSA2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSU5WQVJJQU5UKTsg
fQoreyByZXR1cm4gQVRUUklCVVRFOyB9CiAJWVlfQlJFQUsKIGNhc2UgNzoKIFlZX1JVTEVfU0VU
VVAKLXsgcmV0dXJuKEhJR0hfUFJFQ0lTSU9OKTsgfQoreyByZXR1cm4gQ09OU1RfUVVBTDsgfQog
CVlZX0JSRUFLCiBjYXNlIDg6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihNRURJVU1fUFJFQ0lT
SU9OKTsgfQoreyByZXR1cm4gVU5JRk9STTsgfQogCVlZX0JSRUFLCiBjYXNlIDk6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybihMT1dfUFJFQ0lTSU9OKTsgfQoreyByZXR1cm4gVkFSWUlORzsgfQog
CVlZX0JSRUFLCiBjYXNlIDEwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUFJFQ0lTSU9OKTsg
fQoreyByZXR1cm4gQlJFQUs7IH0KIAlZWV9CUkVBSwogY2FzZSAxMToKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuKEFUVFJJQlVURSk7IH0KK3sgcmV0dXJuIENPTlRJTlVFOyB9CiAJWVlfQlJFQUsK
IGNhc2UgMTI6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihDT05TVF9RVUFMKTsgfQoreyByZXR1
cm4gRE87IH0KIAlZWV9CUkVBSwogY2FzZSAxMzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFVO
SUZPUk0pOyB9Cit7IHJldHVybiBGT1I7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDoKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKFZBUllJTkcpOyB9Cit7IHJldHVybiBXSElMRTsgfQogCVlZX0JSRUFL
CiBjYXNlIDE1OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQlJFQUspOyB9Cit7IHJldHVybiBJ
RjsgfQogCVlZX0JSRUFLCiBjYXNlIDE2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQ09OVElO
VUUpOyB9Cit7IHJldHVybiBFTFNFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTc6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybihETyk7IH0KK3sgcmV0dXJuIElOX1FVQUw7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxODoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKEZPUik7IH0KK3sgcmV0dXJuIE9VVF9RVUFM
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihXSElMRSk7
IH0KK3sgcmV0dXJuIElOT1VUX1FVQUw7IH0KIAlZWV9CUkVBSwogY2FzZSAyMDoKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKElGKTsgfQoreyByZXR1cm4gRkxPQVRfVFlQRTsgfQogCVlZX0JSRUFL
CiBjYXNlIDIxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oRUxTRSk7IH0KK3sgcmV0dXJuIElO
VF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjI6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihJ
Tl9RVUFMKTsgfQoreyByZXR1cm4gVk9JRF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjM6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybihPVVRfUVVBTCk7IH0KK3sgcmV0dXJuIEJPT0xfVFlQRTsg
fQogCVlZX0JSRUFLCiBjYXNlIDI0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSU5PVVRfUVVB
TCk7IH0KK3sgeXlsdmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4gQk9PTENPTlNUQU5UOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMjU6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlw
ZSA9IHRydWU7IHJldHVybihGTE9BVF9UWVBFKTsgfQoreyB5eWx2YWwtPmxleC5iID0gZmFsc2U7
IHJldHVybiBCT09MQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAyNjoKIFlZX1JVTEVfU0VU
VVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKElOVF9UWVBFKTsgfQor
eyByZXR1cm4gRElTQ0FSRDsgfQogCVlZX0JSRUFLCiBjYXNlIDI3OgogWVlfUlVMRV9TRVRVUAot
eyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oVk9JRF9UWVBFKTsgfQoreyBy
ZXR1cm4gUkVUVVJOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjg6CiBZWV9SVUxFX1NFVFVQCi17IGNv
bnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihCT09MX1RZUEUpOyB9Cit7IHJldHVy
biBNQVRSSVgyOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjk6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZh
bC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuKEJPT0xDT05TVEFOVCk7IH0KK3sgcmV0dXJuIE1BVFJJ
WDM7IH0KIAlZWV9CUkVBSwogY2FzZSAzMDoKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXgu
YiA9IGZhbHNlOyByZXR1cm4oQk9PTENPTlNUQU5UKTsgfQoreyByZXR1cm4gTUFUUklYNDsgfQog
CVlZX0JSRUFLCiBjYXNlIDMxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oRElTQ0FSRCk7IH0K
K3sgcmV0dXJuIFZFQzI7IH0KIAlZWV9CUkVBSwogY2FzZSAzMjoKIFlZX1JVTEVfU0VUVVAKLXsg
cmV0dXJuKFJFVFVSTik7IH0KK3sgcmV0dXJuIFZFQzM7IH0KIAlZWV9CUkVBSwogY2FzZSAzMzoK
IFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1B
VFJJWDIpOyB9Cit7IHJldHVybiBWRUM0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzQ6CiBZWV9SVUxF
X1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVgzKTsg
fQoreyByZXR1cm4gSVZFQzI7IH0KIAlZWV9CUkVBSwogY2FzZSAzNToKIFlZX1JVTEVfU0VUVVAK
LXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJWDQpOyB9Cit7IHJl
dHVybiBJVkVDMzsgfQogCVlZX0JSRUFLCiBjYXNlIDM2OgogWVlfUlVMRV9TRVRVUAoteyBjb250
ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzIpOyB9Cit7IHJldHVybiBJVkVD
NDsgfQogCVlZX0JSRUFLCiBjYXNlIDM3OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzMpOyB9Cit7IHJldHVybiBCVkVDMjsgfQogCVlZ
X0JSRUFLCiBjYXNlIDM4OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4gKFZFQzQpOyB9Cit7IHJldHVybiBCVkVDMzsgfQogCVlZX0JSRUFLCiBj
YXNlIDM5OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyBy
ZXR1cm4gKElWRUMyKTsgfQoreyByZXR1cm4gQlZFQzQ7IH0KIAlZWV9CUkVBSwogY2FzZSA0MDoK
IFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJ
VkVDMyk7IH0KK3sgcmV0dXJuIFNBTVBMRVIyRDsgfQogCVlZX0JSRUFLCiBjYXNlIDQxOgogWVlf
UlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKElWRUM0
KTsgfQoreyByZXR1cm4gU0FNUExFUkNVQkU7IH0KIAlZWV9CUkVBSwogY2FzZSA0MjoKIFlZX1JV
TEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDMik7
IH0KK3sgcmV0dXJuIFNBTVBMRVJfRVhURVJOQUxfT0VTOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDM6
CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAo
QlZFQzMpOyB9Cit7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDQ6
CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAo
QlZFQzQpOyB9Cit7IHJldHVybiBTVFJVQ1Q7IH0KIAlZWV9CUkVBSwogY2FzZSA0NToKIFlZX1JV
TEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVIy
RDsgfQoreyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNh
c2UgNDY6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJl
dHVybiBTQU1QTEVSQ1VCRTsgfQoreyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9
CiAJWVlfQlJFQUsKIGNhc2UgNDc6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVy
VHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSX0VYVEVSTkFMX09FUzsgfQoreyByZXR1cm4gcmVz
ZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDg6CiBZWV9SVUxFX1NF
VFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSMkRSRUNU
OyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2Fz
ZSA0OToKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuKFNUUlVDVCk7IH0KK3sgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQogCVlZ
X0JSRUFLCiBjYXNlIDUwOgogWVlfUlVMRV9TRVRVUApAQCAtMTUxNiwyNjYgKzE0OTMsMjI4IEBA
IFlZX1JVTEVfU0VUVVAKIAlZWV9CUkVBSwogY2FzZSA5MzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0
dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreworICAgeXlsdmFsLT5sZXguc3RyaW5n
ID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsgCisgICByZXR1cm4gY2hlY2tfdHlwZSh5eXNjYW5u
ZXIpOworfQogCVlZX0JSRUFLCiBjYXNlIDk0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVz
ZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxp
bnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CiAJWVlfQlJF
QUsKIGNhc2UgOTU6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nh
bm5lcik7IH0KK3sgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4
dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5NjoKIFlZ
X1JVTEVfU0VUVVAKLXsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreyB5eWx2
YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVy
biBJTlRDT05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDk3OgogWVlfUlVMRV9TRVRVUAoteyBy
ZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7IHl5bHZhbC0+bGV4LmYgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9
CiAJWVlfQlJFQUsKIGNhc2UgOTg6CiBZWV9SVUxFX1NFVFVQCi17Ci0gICB5eWx2YWwtPmxleC5z
dHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAKLSAgIHJldHVybiBjaGVja190eXBlKHl5
c2Nhbm5lcik7Ci19Cit7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9k
b3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgOTk6
CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRv
bCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQoreyB5eWx2YWwtPmxleC5m
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4gRkxPQVRDT05T
VEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDEwMDoKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5s
ZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5U
Q09OU1RBTlQpOyB9Cit7IHJldHVybiBBRERfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAx
OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgIkludmFsaWQgT2N0
YWwgbnVtYmVyLiIsIHl5dGV4dCk7IGNvbnRleHQtPnJlY292ZXIoKTsgcmV0dXJuIDA7fQoreyBy
ZXR1cm4gU1VCX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEwMjoKIFlZX1JVTEVfU0VUVVAK
LXsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkp
OyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Cit7IHJldHVybiBNVUxfQVNTSUdOOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMTAzOgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KK3sg
cmV0dXJuIERJVl9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDQ6CiBZWV9SVUxFX1NFVFVQ
Ci17IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7
IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQoreyByZXR1cm4gTU9EX0FTU0lHTjsgfQogCVlZX0JS
RUFLCiBjYXNlIDEwNToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19j
YXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Cit7
IHJldHVybiBMRUZUX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEwNjoKIFlZX1JVTEVfU0VU
VVAKLXsgIHJldHVybihBRERfQVNTSUdOKTsgfQoreyByZXR1cm4gUklHSFRfQVNTSUdOOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMTA3OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFNVQl9BU1NJR04p
OyB9Cit7IHJldHVybiBBTkRfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA4OgogWVlfUlVM
RV9TRVRVUAoteyAgcmV0dXJuKE1VTF9BU1NJR04pOyB9Cit7IHJldHVybiBYT1JfQVNTSUdOOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTA5OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKERJVl9BU1NJ
R04pOyB9Cit7IHJldHVybiBPUl9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMTA6CiBZWV9S
VUxFX1NFVFVQCi17ICByZXR1cm4oTU9EX0FTU0lHTik7IH0KK3sgcmV0dXJuIElOQ19PUDsgfQog
CVlZX0JSRUFLCiBjYXNlIDExMToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihMRUZUX0FTU0lH
Tik7IH0KK3sgcmV0dXJuIERFQ19PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExMjoKIFlZX1JVTEVf
U0VUVVAKLXsgIHJldHVybihSSUdIVF9BU1NJR04pOyB9Cit7IHJldHVybiBBTkRfT1A7IH0KIAlZ
WV9CUkVBSwogY2FzZSAxMTM6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oQU5EX0FTU0lHTik7
IH0KK3sgcmV0dXJuIE9SX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTE0OgogWVlfUlVMRV9TRVRV
UAoteyAgcmV0dXJuKFhPUl9BU1NJR04pOyB9Cit7IHJldHVybiBYT1JfT1A7IH0KIAlZWV9CUkVB
SwogY2FzZSAxMTU6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oT1JfQVNTSUdOKTsgfQoreyBy
ZXR1cm4gTEVfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTY6CiBZWV9SVUxFX1NFVFVQCi17ICBy
ZXR1cm4oSU5DX09QKTsgfQoreyByZXR1cm4gR0VfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTc6
CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oREVDX09QKTsgfQoreyByZXR1cm4gRVFfT1A7IH0K
IAlZWV9CUkVBSwogY2FzZSAxMTg6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oQU5EX09QKTsg
fQoreyByZXR1cm4gTkVfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTk6CiBZWV9SVUxFX1NFVFVQ
Ci17ICByZXR1cm4oT1JfT1ApOyB9Cit7IHJldHVybiBMRUZUX09QOyB9CiAJWVlfQlJFQUsKIGNh
c2UgMTIwOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFhPUl9PUCk7IH0KK3sgcmV0dXJuIFJJ
R0hUX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIxOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJu
KExFX09QKTsgfQoreyByZXR1cm4gU0VNSUNPTE9OOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIyOgog
WVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEdFX09QKTsgfQoreyByZXR1cm4gTEVGVF9CUkFDRTsg
fQogCVlZX0JSRUFLCiBjYXNlIDEyMzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihFUV9PUCk7
IH0KK3sgcmV0dXJuIFJJR0hUX0JSQUNFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI0OgogWVlfUlVM
RV9TRVRVUAoteyAgcmV0dXJuKE5FX09QKTsgfQoreyByZXR1cm4gQ09NTUE7IH0KIAlZWV9CUkVB
SwogY2FzZSAxMjU6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTEVGVF9PUCk7IH0KK3sgcmV0
dXJuIENPTE9OOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI2OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0
dXJuKFJJR0hUX09QKTsgfQoreyByZXR1cm4gRVFVQUw7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjc6
CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4o
U0VNSUNPTE9OKTsgfQoreyByZXR1cm4gTEVGVF9QQVJFTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEy
ODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVy
bihMRUZUX0JSQUNFKTsgfQoreyByZXR1cm4gUklHSFRfUEFSRU47IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxMjk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihSSUdIVF9CUkFDRSk7IH0KK3sgcmV0dXJu
IExFRlRfQlJBQ0tFVDsgfQogCVlZX0JSRUFLCiBjYXNlIDEzMDoKIFlZX1JVTEVfU0VUVVAKLXsg
aWYgKGNvbnRleHQtPmluVHlwZVBhcmVuKSBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsg
cmV0dXJuKENPTU1BKTsgfQoreyByZXR1cm4gUklHSFRfQlJBQ0tFVDsgfQogCVlZX0JSRUFLCiBj
YXNlIDEzMToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKENPTE9OKTsgfQoreyByZXR1cm4gRE9U
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMyOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJuKEVRVUFMKTsgfQoreyByZXR1cm4gQkFORzsgfQogCVlZ
X0JSRUFLCiBjYXNlIDEzMzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gZmFsc2U7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gdHJ1ZTsgcmV0dXJuKExFRlRfUEFSRU4p
OyB9Cit7IHJldHVybiBEQVNIOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM0OgogWVlfUlVMRV9TRVRV
UAoteyBjb250ZXh0LT5pblR5cGVQYXJlbiA9IGZhbHNlOyByZXR1cm4oUklHSFRfUEFSRU4pOyB9
Cit7IHJldHVybiBUSUxERTsgfQogCVlZX0JSRUFLCiBjYXNlIDEzNToKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuKExFRlRfQlJBQ0tFVCk7IH0KK3sgcmV0dXJuIFBMVVM7IH0KIAlZWV9CUkVBSwog
Y2FzZSAxMzY6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihSSUdIVF9CUkFDS0VUKTsgfQoreyBy
ZXR1cm4gU1RBUjsgfQogCVlZX0JSRUFLCiBjYXNlIDEzNzoKIFlZX1JVTEVfU0VUVVAKLXsgQkVH
SU4oRklFTERTKTsgIHJldHVybihET1QpOyB9Cit7IHJldHVybiBTTEFTSDsgfQogCVlZX0JSRUFL
CiBjYXNlIDEzODoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKEJBTkcpOyB9Cit7IHJldHVybiBQ
RVJDRU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM5OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4o
REFTSCk7IH0KK3sgcmV0dXJuIExFRlRfQU5HTEU7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDA6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybihUSUxERSk7IH0KK3sgcmV0dXJuIFJJR0hUX0FOR0xFOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTQxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUExVUyk7IH0K
K3sgcmV0dXJuIFZFUlRJQ0FMX0JBUjsgfQogCVlZX0JSRUFLCiBjYXNlIDE0MjoKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKFNUQVIpOyB9Cit7IHJldHVybiBDQVJFVDsgfQogCVlZX0JSRUFLCiBj
YXNlIDE0MzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFNMQVNIKTsgfQoreyByZXR1cm4gQU1Q
RVJTQU5EOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQ0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4o
UEVSQ0VOVCk7IH0KK3sgcmV0dXJuIFFVRVNUSU9OOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQ1Ogor
LyogcnVsZSAxNDUgY2FuIG1hdGNoIGVvbCAqLwogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oTEVG
VF9BTkdMRSk7IH0KLQlZWV9CUkVBSwotY2FzZSAxNDY6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVy
bihSSUdIVF9BTkdMRSk7IH0KLQlZWV9CUkVBSwotY2FzZSAxNDc6Ci1ZWV9SVUxFX1NFVFVQCi17
IHJldHVybihWRVJUSUNBTF9CQVIpOyB9Ci0JWVlfQlJFQUsKLWNhc2UgMTQ4OgotWVlfUlVMRV9T
RVRVUAoteyByZXR1cm4oQ0FSRVQpOyB9Ci0JWVlfQlJFQUsKLWNhc2UgMTQ5OgotWVlfUlVMRV9T
RVRVUAoteyByZXR1cm4oQU1QRVJTQU5EKTsgfQotCVlZX0JSRUFLCi1jYXNlIDE1MDoKLVlZX1JV
TEVfU0VUVVAKLXsgcmV0dXJuKFFVRVNUSU9OKTsgfQotCVlZX0JSRUFLCi1jYXNlIDE1MToKLVlZ
X1JVTEVfU0VUVVAKLXsgCi0gICAgQkVHSU4oSU5JVElBTCk7Ci0gICAgeXlsdmFsLT5sZXguc3Ry
aW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsgCi0gICAgcmV0dXJuIEZJRUxEX1NFTEVDVElP
TjsKLX0KLQlZWV9CUkVBSwotY2FzZSAxNTI6Ci1ZWV9SVUxFX1NFVFVQCi17fQotCVlZX0JSRUFL
Ci1jYXNlIDE1MzoKLS8qIHJ1bGUgMTUzIGNhbiBtYXRjaCBlb2wgKi8KLVlZX1JVTEVfU0VUVVAK
LXsgIH0KK3sgfQogCVlZX0JSRUFLCiBjYXNlIFlZX1NUQVRFX0VPRihJTklUSUFMKToKLWNhc2Ug
WVlfU1RBVEVfRU9GKENPTU1FTlQpOgotY2FzZSBZWV9TVEFURV9FT0YoRklFTERTKToKLXsgY29u
dGV4dC0+QWZ0ZXJFT0YgPSB0cnVlOyB5eXRlcm1pbmF0ZSgpOyB9Cit7IHl5dGVybWluYXRlKCk7
IH0KIAlZWV9CUkVBSwotY2FzZSAxNTQ6CitjYXNlIDE0NjoKIFlZX1JVTEVfU0VUVVAKLXsgY29u
dGV4dC0+d2FybmluZyh5eWxpbmVubywgIlVua25vd24gY2hhciIsIHl5dGV4dCwgIiIpOyByZXR1
cm4gMDsgfQoreyBhc3NlcnQoZmFsc2UpOyByZXR1cm4gMDsgfQogCVlZX0JSRUFLCi1jYXNlIDE1
NToKK2Nhc2UgMTQ3OgogWVlfUlVMRV9TRVRVUAogRUNITzsKIAlZWV9CUkVBSwpAQCAtMjA3MSw3
ICsyMDEwLDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IAogCQl3
aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3Vy
cmVudF9zdGF0ZSApCiAJCQl7CiAJCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5
X2N1cnJlbnRfc3RhdGVdOwotCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ1OSApCisJCQlp
ZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gNDQzICkKIAkJCQl5eV9jID0geXlfbWV0YVsodW5zaWdu
ZWQgaW50KSB5eV9jXTsKIAkJCX0KIAkJeXlfY3VycmVudF9zdGF0ZSA9IHl5X254dFt5eV9iYXNl
W3l5X2N1cnJlbnRfc3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlfY107CkBAIC0yMTAwLDExICsy
MDM5LDExIEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCAKIAl3aGls
ZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3VycmVu
dF9zdGF0ZSApCiAJCXsKIAkJeXlfY3VycmVudF9zdGF0ZSA9IChpbnQpIHl5X2RlZlt5eV9jdXJy
ZW50X3N0YXRlXTsKLQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ1OSApCisJCWlmICggeXlf
Y3VycmVudF9zdGF0ZSA+PSA0NDMgKQogCQkJeXlfYyA9IHl5X21ldGFbKHVuc2lnbmVkIGludCkg
eXlfY107CiAJCX0KIAl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVu
dF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsKLQl5eV9pc19qYW0gPSAoeXlfY3VycmVu
dF9zdGF0ZSA9PSA0NTgpOworCXl5X2lzX2phbSA9ICh5eV9jdXJyZW50X3N0YXRlID09IDQ0Mik7
CiAKIAlyZXR1cm4geXlfaXNfamFtID8gMCA6IHl5X2N1cnJlbnRfc3RhdGU7CiB9CkBAIC0yNTQ4
LDQ2ICsyNDg3LDYgQEAgWVlfQlVGRkVSX1NUQVRFIHl5X3NjYW5fYnl0ZXMgICh5eWNvbnN0IAog
CXJldHVybiBiOwogfQogCi0gICAgc3RhdGljIHZvaWQgeXlfcHVzaF9zdGF0ZSAoaW50ICBuZXdf
c3RhdGUgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCi17Ci0gICAgc3RydWN0IHl5Z3V0c190ICogeXln
ID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOwotCWlmICggeXlnLT55eV9zdGFydF9zdGFj
a19wdHIgPj0geXlnLT55eV9zdGFydF9zdGFja19kZXB0aCApCi0JCXsKLQkJeXlfc2l6ZV90IG5l
d19zaXplOwotCi0JCXl5Zy0+eXlfc3RhcnRfc3RhY2tfZGVwdGggKz0gWVlfU1RBUlRfU1RBQ0tf
SU5DUjsKLQkJbmV3X3NpemUgPSB5eWctPnl5X3N0YXJ0X3N0YWNrX2RlcHRoICogc2l6ZW9mKCBp
bnQgKTsKLQotCQlpZiAoICEgeXlnLT55eV9zdGFydF9zdGFjayApCi0JCQl5eWctPnl5X3N0YXJ0
X3N0YWNrID0gKGludCAqKSB5eWFsbG9jKG5ld19zaXplICx5eXNjYW5uZXIgKTsKLQotCQllbHNl
Ci0JCQl5eWctPnl5X3N0YXJ0X3N0YWNrID0gKGludCAqKSB5eXJlYWxsb2MoKHZvaWQgKikgeXln
LT55eV9zdGFydF9zdGFjayxuZXdfc2l6ZSAseXlzY2FubmVyICk7Ci0KLQkJaWYgKCAhIHl5Zy0+
eXlfc3RhcnRfc3RhY2sgKQotCQkJWVlfRkFUQUxfRVJST1IoICJvdXQgb2YgbWVtb3J5IGV4cGFu
ZGluZyBzdGFydC1jb25kaXRpb24gc3RhY2siICk7Ci0JCX0KLQotCXl5Zy0+eXlfc3RhcnRfc3Rh
Y2tbeXlnLT55eV9zdGFydF9zdGFja19wdHIrK10gPSBZWV9TVEFSVDsKLQotCUJFR0lOKG5ld19z
dGF0ZSk7Ci19Ci0KLSAgICBzdGF0aWMgdm9pZCB5eV9wb3Bfc3RhdGUgICh5eXNjYW5fdCB5eXNj
YW5uZXIpCi17Ci0gICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCop
eXlzY2FubmVyOwotCWlmICggLS15eWctPnl5X3N0YXJ0X3N0YWNrX3B0ciA8IDAgKQotCQlZWV9G
QVRBTF9FUlJPUiggInN0YXJ0LWNvbmRpdGlvbiBzdGFjayB1bmRlcmZsb3ciICk7Ci0KLQlCRUdJ
Tih5eWctPnl5X3N0YXJ0X3N0YWNrW3l5Zy0+eXlfc3RhcnRfc3RhY2tfcHRyXSk7Ci19Ci0KLSAg
ICBzdGF0aWMgaW50IHl5X3RvcF9zdGF0ZSAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBz
dHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0JcmV0
dXJuIHl5Zy0+eXlfc3RhcnRfc3RhY2tbeXlnLT55eV9zdGFydF9zdGFja19wdHIgLSAxXTsKLX0K
LQogI2lmbmRlZiBZWV9FWElUX0ZBSUxVUkUKICNkZWZpbmUgWVlfRVhJVF9GQUlMVVJFIDIKICNl
bmRpZgpAQCAtMjc3Myw2ICsyNjcyLDE4IEBAIHZvaWQgeXlzZXRfbHZhbCAoWVlTVFlQRSAqICB5
eWx2YWxfcGFyYW0KICAgICB5eWx2YWwgPSB5eWx2YWxfcGFyYW07CiB9CiAKK1lZTFRZUEUgKnl5
Z2V0X2xsb2MgICh5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0IHl5Z3V0c190ICog
eXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAgIHJldHVybiB5eWxsb2M7Cit9
CisgICAgCit2b2lkIHl5c2V0X2xsb2MgKFlZTFRZUEUgKiAgeXlsbG9jX3BhcmFtICwgeXlzY2Fu
X3QgeXlzY2FubmVyKQoreworICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXln
dXRzX3QqKXl5c2Nhbm5lcjsKKyAgICB5eWxsb2MgPSB5eWxsb2NfcGFyYW07Cit9CisgICAgCiAv
KiBVc2VyLXZpc2libGUgQVBJICovCiAKIC8qIHl5bGV4X2luaXQgaXMgc3BlY2lhbCBiZWNhdXNl
IGl0IGNyZWF0ZXMgdGhlIHNjYW5uZXIgaXRzZWxmLCBzbyBpdCBpcwpAQCAtMjk1NCw3ICsyODY1
LDggQEAgeXlfc2l6ZV90IHN0cmluZ19pbnB1dChjaGFyKiBidWYsIHl5X3NpegogICAgIHl5X3Np
emVfdCBsZW4gPSB0b2tlbi50eXBlID09IHBwOjpUb2tlbjo6TEFTVCA/IDAgOiB0b2tlbi50ZXh0
LnNpemUoKTsKICAgICBpZiAobGVuIDwgbWF4X3NpemUpCiAgICAgICAgIG1lbWNweShidWYsIHRv
a2VuLnRleHQuY19zdHIoKSwgbGVuKTsKLSAgICB5eXNldF9saW5lbm8oRW5jb2RlU291cmNlTG9j
KHRva2VuLmxvY2F0aW9uLmZpbGUsIHRva2VuLmxvY2F0aW9uLmxpbmUpLHl5c2Nhbm5lcik7Cisg
ICAgeXlzZXRfY29sdW1uKHRva2VuLmxvY2F0aW9uLmZpbGUseXlzY2FubmVyKTsKKyAgICB5eXNl
dF9saW5lbm8odG9rZW4ubG9jYXRpb24ubGluZSx5eXNjYW5uZXIpOwogCiAgICAgaWYgKGxlbiA+
PSBtYXhfc2l6ZSkKICAgICAgICAgWVlfRkFUQUxfRVJST1IoIklucHV0IGJ1ZmZlciBvdmVyZmxv
dyIpOwpAQCAtMjk2OCwxMiArMjg4MCwxMCBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNj
YW5uZXIpIHsKICAgICAKICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVSOwogICAgIFRTeW1ib2wq
IHN5bWJvbCA9IHl5ZXh0cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0KTsKLSAgICBpZiAoeXll
eHRyYS0+bGV4QWZ0ZXJUeXBlID09IGZhbHNlICYmIHN5bWJvbCAmJiBzeW1ib2wtPmlzVmFyaWFi
bGUoKSkgeworICAgIGlmIChzeW1ib2wgJiYgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKICAgICAg
ICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KHN5bWJvbCk7
Ci0gICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKSB7Ci0gICAgICAgICAgICB5eWV4
dHJhLT5sZXhBZnRlclR5cGUgPSB0cnVlOworICAgICAgICBpZiAodmFyaWFibGUtPmlzVXNlclR5
cGUoKSkKICAgICAgICAgICAgIHRva2VuID0gVFlQRV9OQU1FOwotICAgICAgICB9CiAgICAgfQog
ICAgIHl5bHZhbC0+bGV4LnN5bWJvbCA9IHN5bWJvbDsKICAgICByZXR1cm4gdG9rZW47CkBAIC0y
OTgyLDIyICsyODkyLDExIEBAIGludCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcikgewog
aW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgc3RydWN0IHl5Z3V0
c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgeXlzY2FubmVyOwogCi0gICAgeXlleHRyYS0+
ZXJyb3IoeXlsaW5lbm8sICJJbGxlZ2FsIHVzZSBvZiByZXNlcnZlZCB3b3JkIiwgeXl0ZXh0LCAi
Iik7CisgICAgeXlleHRyYS0+ZXJyb3IoKnl5bGxvYywgIklsbGVnYWwgdXNlIG9mIHJlc2VydmVk
IHdvcmQiLCB5eXRleHQsICIiKTsKICAgICB5eWV4dHJhLT5yZWNvdmVyKCk7CiAgICAgcmV0dXJu
IDA7CiB9CiAKLXZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFy
KiByZWFzb24pIHsKLSAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3Qq
KSBjb250ZXh0LT5zY2FubmVyOwotCi0gICAgaWYgKGNvbnRleHQtPkFmdGVyRU9GKSB7Ci0gICAg
ICAgIGNvbnRleHQtPmVycm9yKHl5bGluZW5vLCByZWFzb24sICJ1bmV4cGVjdGVkIEVPRiIpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnRleHQtPmVycm9yKHl5bGluZW5vLCByZWFzb24sIHl5
dGV4dCk7Ci0gICAgfQotICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLX0KLQogaW50IGdsc2xhbmdf
aW5pdGlhbGl6ZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlzY2FuX3Qgc2Nhbm5l
ciA9IE5VTEw7CiAgICAgaWYgKHl5bGV4X2luaXRfZXh0cmEoY29udGV4dCwmc2Nhbm5lcikpCkBA
IC0zMDIwLDggKzI5MTksOCBAQCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFyc2VDb250ZXh0KiBj
b250CiBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3Ry
aW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAgVFBhcnNlQ29udGV4
dCogY29udGV4dCkgewogICAgIHl5cmVzdGFydChOVUxMLGNvbnRleHQtPnNjYW5uZXIpOwotICAg
IHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VMb2MoMCwgMSksY29udGV4dC0+c2Nhbm5lcik7Ci0g
ICAgY29udGV4dC0+QWZ0ZXJFT0YgPSBmYWxzZTsKKyAgICB5eXNldF9jb2x1bW4oMCxjb250ZXh0
LT5zY2FubmVyKTsKKyAgICB5eXNldF9saW5lbm8oMSxjb250ZXh0LT5zY2FubmVyKTsKIAogICAg
IC8vIEluaXRpYWxpemUgcHJlcHJvY2Vzc29yLgogICAgIGlmICghY29udGV4dC0+cHJlcHJvY2Vz
c29yLmluaXQoY291bnQsIHN0cmluZywgbGVuZ3RoKSkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcAkocmV2aXNpb24g
MTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdf
dGFiLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyNCArMSwyMSBAQAotLyogQSBCaXNvbiBwYXJz
ZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuMy4gICovCisvKiBBIEJpc29uIHBhcnNlciwgbWFkZSBi
eSBHTlUgQmlzb24gMi43LiAgKi8KIAotLyogU2tlbGV0b24gaW1wbGVtZW50YXRpb24gZm9yIEJp
c29uJ3MgWWFjYy1saWtlIHBhcnNlcnMgaW4gQwotCi0gICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5
ODksIDE5OTAsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKLSAgIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLyogQmlzb24g
aW1wbGVtZW50YXRpb24gZm9yIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKKyAgIAorICAgICAgQ29w
eXJpZ2h0IChDKSAxOTg0LCAxOTg5LTE5OTAsIDIwMDAtMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4KKyAgIAorICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBv
cHRpb24pCi0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgICAKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0K
KyAgIAogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuICAq
LworICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n
bnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3Ug
bWF5IGNyZWF0ZSBhIGxhcmdlciB3b3JrIHRoYXQgY29udGFpbnMKICAgIHBhcnQgb3IgYWxsIG9m
IHRoZSBCaXNvbiBwYXJzZXIgc2tlbGV0b24gYW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCkBAIC0y
OSw3ICsyNiw3IEBACiAgICBzcGVjaWFsIGV4Y2VwdGlvbiwgd2hpY2ggd2lsbCBjYXVzZSB0aGUg
c2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcKICAgIEJpc29uIG91dHB1dCBmaWxlcyB0byBiZSBs
aWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIHdpdGhvdXQg
dGhpcyBzcGVjaWFsIGV4Y2VwdGlvbi4KLQorICAgCiAgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9u
IHdhcyBhZGRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGluCiAgICB2ZXJzaW9u
IDIuMiBvZiBCaXNvbi4gICovCiAKQEAgLTQ3LDcgKzQ0LDcgQEAKICNkZWZpbmUgWVlCSVNPTiAx
CiAKIC8qIEJpc29uIHZlcnNpb24uICAqLwotI2RlZmluZSBZWUJJU09OX1ZFUlNJT04gIjIuMyIK
KyNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjciCiAKIC8qIFNrZWxldG9uIG5hbWUuICAqLwog
I2RlZmluZSBZWVNLRUxFVE9OX05BTUUgInlhY2MuYyIKQEAgLTU1LDggKzUyLDgxIEBACiAvKiBQ
dXJlIHBhcnNlcnMuICAqLwogI2RlZmluZSBZWVBVUkUgMQogCi0vKiBVc2luZyBsb2NhdGlvbnMu
ICAqLwotI2RlZmluZSBZWUxTUF9ORUVERUQgMAorLyogUHVzaCBwYXJzZXJzLiAgKi8KKyNkZWZp
bmUgWVlQVVNIIDAKKworLyogUHVsbCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQVUxMIDEKKwor
CisKKworLyogQ29weSB0aGUgZmlyc3QgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCisK
KworLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCisKKy8vIElnbm9yZSBlcnJvcnMgaW4g
YXV0by1nZW5lcmF0ZWQgY29kZS4KKyNpZiBkZWZpbmVkKF9fR05VQ19fKQorI3ByYWdtYSBHQ0Mg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtdmFyaWFibGUiCisjcHJhZ21hIEdDQyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1Xc3dpdGNoLWVudW0iCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorI3ByYWdt
YSB3YXJuaW5nKGRpc2FibGU6IDQwNjUpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDE4OSkK
KyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTA1KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
IDQ3MDEpCisjZW5kaWYKKworI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCisjaW5j
bHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxh
bmcuaCIKKworI2RlZmluZSBZWUVOQUJMRV9OTFMgMAorCisjZGVmaW5lIFlZTEVYX1BBUkFNIGNv
bnRleHQtPnNjYW5uZXIKKworCisKKyMgaWZuZGVmIFlZX05VTEwKKyMgIGlmIGRlZmluZWQgX19j
cGx1c3BsdXMgJiYgMjAxMTAzTCA8PSBfX2NwbHVzcGx1cworIyAgIGRlZmluZSBZWV9OVUxMIG51
bGxwdHIKKyMgIGVsc2UKKyMgICBkZWZpbmUgWVlfTlVMTCAwCisjICBlbmRpZgorIyBlbmRpZgor
CisvKiBFbmFibGluZyB2ZXJib3NlIGVycm9yIG1lc3NhZ2VzLiAgKi8KKyNpZmRlZiBZWUVSUk9S
X1ZFUkJPU0UKKyMgdW5kZWYgWVlFUlJPUl9WRVJCT1NFCisjIGRlZmluZSBZWUVSUk9SX1ZFUkJP
U0UgMQorI2Vsc2UKKyMgZGVmaW5lIFlZRVJST1JfVkVSQk9TRSAwCisjZW5kaWYKKworLyogSW4g
YSBmdXR1cmUgcmVsZWFzZSBvZiBCaXNvbiwgdGhpcyBzZWN0aW9uIHdpbGwgYmUgcmVwbGFjZWQK
KyAgIGJ5ICNpbmNsdWRlICJnbHNsYW5nX3RhYi5oIi4gICovCisjaWZuZGVmIFlZX1lZX0dMU0xB
TkdfVEFCX0hfSU5DTFVERUQKKyMgZGVmaW5lIFlZX1lZX0dMU0xBTkdfVEFCX0hfSU5DTFVERUQK
Ky8qIEVuYWJsaW5nIHRyYWNlcy4gICovCisjaWZuZGVmIFlZREVCVUcKKyMgZGVmaW5lIFlZREVC
VUcgMAorI2VuZGlmCisjaWYgWVlERUJVRworZXh0ZXJuIGludCB5eWRlYnVnOworI2VuZGlmCisv
KiAiJWNvZGUgcmVxdWlyZXMiIGJsb2Nrcy4gICovCisKKworI2RlZmluZSBZWUxUWVBFIFRTb3Vy
Y2VMb2MKKyNkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisKIAogCiAKQEAgLTExMywyMDkg
KzE4Myw2MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0gMzAyLAogICAgICBJTlRDT05TVEFOVCA9
IDMwMywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAotICAgICBGSUVMRF9TRUxFQ1RJT04gPSAz
MDUsCi0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJR0hUX09QID0gMzA3LAotICAgICBJTkNf
T1AgPSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAgICAgTEVfT1AgPSAzMTAsCi0gICAgIEdF
X09QID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAgICAgTkVfT1AgPSAzMTMsCi0gICAgIEFO
RF9PUCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0gICAgIFhPUl9PUCA9IDMxNiwKLSAgICAg
TVVMX0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lHTiA9IDMxOCwKLSAgICAgQUREX0FTU0lH
TiA9IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwKLSAgICAgTEVGVF9BU1NJR04gPSAzMjEs
Ci0gICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAgQU5EX0FTU0lHTiA9IDMyMywKLSAgICAg
WE9SX0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdOID0gMzI1LAotICAgICBTVUJfQVNTSUdO
ID0gMzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAotICAgICBSSUdIVF9QQVJFTiA9IDMyOCwK
LSAgICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBSSUdIVF9CUkFDS0VUID0gMzMwLAotICAg
ICBMRUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9CUkFDRSA9IDMzMiwKLSAgICAgRE9UID0g
MzMzLAotICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09MT04gPSAzMzUsCi0gICAgIEVRVUFMID0g
MzM2LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAgIEJBTkcgPSAzMzgsCi0gICAgIERBU0gg
PSAzMzksCi0gICAgIFRJTERFID0gMzQwLAotICAgICBQTFVTID0gMzQxLAotICAgICBTVEFSID0g
MzQyLAotICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVSQ0VOVCA9IDM0NCwKLSAgICAgTEVGVF9B
TkdMRSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAzNDYsCi0gICAgIFZFUlRJQ0FMX0JBUiA9
IDM0NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFNUEVSU0FORCA9IDM0OSwKLSAgICAgUVVF
U1RJT04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwKKyAgICAgUklHSFRfT1AgPSAzMDYsCisg
ICAgIElOQ19PUCA9IDMwNywKKyAgICAgREVDX09QID0gMzA4LAorICAgICBMRV9PUCA9IDMwOSwK
KyAgICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0gMzExLAorICAgICBORV9PUCA9IDMxMiwK
KyAgICAgQU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9IDMxNCwKKyAgICAgWE9SX09QID0gMzE1
LAorICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBESVZfQVNTSUdOID0gMzE3LAorICAgICBB
RERfQVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdOID0gMzE5LAorICAgICBMRUZUX0FTU0lH
TiA9IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIxLAorICAgICBBTkRfQVNTSUdOID0gMzIy
LAorICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBPUl9BU1NJR04gPSAzMjQsCisgICAgIFNV
Ql9BU1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4gPSAzMjYsCisgICAgIFJJR0hUX1BBUkVO
ID0gMzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgsCisgICAgIFJJR0hUX0JSQUNLRVQgPSAz
MjksCisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAgIFJJR0hUX0JSQUNFID0gMzMxLAorICAg
ICBET1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMzLAorICAgICBDT0xPTiA9IDMzNCwKKyAgICAg
RVFVQUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMzNiwKKyAgICAgQkFORyA9IDMzNywKKyAg
ICAgREFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzksCisgICAgIFBMVVMgPSAzNDAsCisgICAg
IFNUQVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAorICAgICBQRVJDRU5UID0gMzQzLAorICAg
ICBMRUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9BTkdMRSA9IDM0NSwKKyAgICAgVkVSVElD
QUxfQkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywKKyAgICAgQU1QRVJTQU5EID0gMzQ4LAor
ICAgICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRpZgotLyogVG9rZW5zLiAgKi8KLSNkZWZp
bmUgSU5WQVJJQU5UIDI1OAotI2RlZmluZSBISUdIX1BSRUNJU0lPTiAyNTkKLSNkZWZpbmUgTUVE
SVVNX1BSRUNJU0lPTiAyNjAKLSNkZWZpbmUgTE9XX1BSRUNJU0lPTiAyNjEKLSNkZWZpbmUgUFJF
Q0lTSU9OIDI2MgotI2RlZmluZSBBVFRSSUJVVEUgMjYzCi0jZGVmaW5lIENPTlNUX1FVQUwgMjY0
Ci0jZGVmaW5lIEJPT0xfVFlQRSAyNjUKLSNkZWZpbmUgRkxPQVRfVFlQRSAyNjYKLSNkZWZpbmUg
SU5UX1RZUEUgMjY3Ci0jZGVmaW5lIEJSRUFLIDI2OAotI2RlZmluZSBDT05USU5VRSAyNjkKLSNk
ZWZpbmUgRE8gMjcwCi0jZGVmaW5lIEVMU0UgMjcxCi0jZGVmaW5lIEZPUiAyNzIKLSNkZWZpbmUg
SUYgMjczCi0jZGVmaW5lIERJU0NBUkQgMjc0Ci0jZGVmaW5lIFJFVFVSTiAyNzUKLSNkZWZpbmUg
QlZFQzIgMjc2Ci0jZGVmaW5lIEJWRUMzIDI3NwotI2RlZmluZSBCVkVDNCAyNzgKLSNkZWZpbmUg
SVZFQzIgMjc5Ci0jZGVmaW5lIElWRUMzIDI4MAotI2RlZmluZSBJVkVDNCAyODEKLSNkZWZpbmUg
VkVDMiAyODIKLSNkZWZpbmUgVkVDMyAyODMKLSNkZWZpbmUgVkVDNCAyODQKLSNkZWZpbmUgTUFU
UklYMiAyODUKLSNkZWZpbmUgTUFUUklYMyAyODYKLSNkZWZpbmUgTUFUUklYNCAyODcKLSNkZWZp
bmUgSU5fUVVBTCAyODgKLSNkZWZpbmUgT1VUX1FVQUwgMjg5Ci0jZGVmaW5lIElOT1VUX1FVQUwg
MjkwCi0jZGVmaW5lIFVOSUZPUk0gMjkxCi0jZGVmaW5lIFZBUllJTkcgMjkyCi0jZGVmaW5lIFNU
UlVDVCAyOTMKLSNkZWZpbmUgVk9JRF9UWVBFIDI5NAotI2RlZmluZSBXSElMRSAyOTUKLSNkZWZp
bmUgU0FNUExFUjJEIDI5NgotI2RlZmluZSBTQU1QTEVSQ1VCRSAyOTcKLSNkZWZpbmUgU0FNUExF
Ul9FWFRFUk5BTF9PRVMgMjk4Ci0jZGVmaW5lIFNBTVBMRVIyRFJFQ1QgMjk5Ci0jZGVmaW5lIElE
RU5USUZJRVIgMzAwCi0jZGVmaW5lIFRZUEVfTkFNRSAzMDEKLSNkZWZpbmUgRkxPQVRDT05TVEFO
VCAzMDIKLSNkZWZpbmUgSU5UQ09OU1RBTlQgMzAzCi0jZGVmaW5lIEJPT0xDT05TVEFOVCAzMDQK
LSNkZWZpbmUgRklFTERfU0VMRUNUSU9OIDMwNQotI2RlZmluZSBMRUZUX09QIDMwNgotI2RlZmlu
ZSBSSUdIVF9PUCAzMDcKLSNkZWZpbmUgSU5DX09QIDMwOAotI2RlZmluZSBERUNfT1AgMzA5Ci0j
ZGVmaW5lIExFX09QIDMxMAotI2RlZmluZSBHRV9PUCAzMTEKLSNkZWZpbmUgRVFfT1AgMzEyCi0j
ZGVmaW5lIE5FX09QIDMxMwotI2RlZmluZSBBTkRfT1AgMzE0Ci0jZGVmaW5lIE9SX09QIDMxNQot
I2RlZmluZSBYT1JfT1AgMzE2Ci0jZGVmaW5lIE1VTF9BU1NJR04gMzE3Ci0jZGVmaW5lIERJVl9B
U1NJR04gMzE4Ci0jZGVmaW5lIEFERF9BU1NJR04gMzE5Ci0jZGVmaW5lIE1PRF9BU1NJR04gMzIw
Ci0jZGVmaW5lIExFRlRfQVNTSUdOIDMyMQotI2RlZmluZSBSSUdIVF9BU1NJR04gMzIyCi0jZGVm
aW5lIEFORF9BU1NJR04gMzIzCi0jZGVmaW5lIFhPUl9BU1NJR04gMzI0Ci0jZGVmaW5lIE9SX0FT
U0lHTiAzMjUKLSNkZWZpbmUgU1VCX0FTU0lHTiAzMjYKLSNkZWZpbmUgTEVGVF9QQVJFTiAzMjcK
LSNkZWZpbmUgUklHSFRfUEFSRU4gMzI4Ci0jZGVmaW5lIExFRlRfQlJBQ0tFVCAzMjkKLSNkZWZp
bmUgUklHSFRfQlJBQ0tFVCAzMzAKLSNkZWZpbmUgTEVGVF9CUkFDRSAzMzEKLSNkZWZpbmUgUklH
SFRfQlJBQ0UgMzMyCi0jZGVmaW5lIERPVCAzMzMKLSNkZWZpbmUgQ09NTUEgMzM0Ci0jZGVmaW5l
IENPTE9OIDMzNQotI2RlZmluZSBFUVVBTCAzMzYKLSNkZWZpbmUgU0VNSUNPTE9OIDMzNwotI2Rl
ZmluZSBCQU5HIDMzOAotI2RlZmluZSBEQVNIIDMzOQotI2RlZmluZSBUSUxERSAzNDAKLSNkZWZp
bmUgUExVUyAzNDEKLSNkZWZpbmUgU1RBUiAzNDIKLSNkZWZpbmUgU0xBU0ggMzQzCi0jZGVmaW5l
IFBFUkNFTlQgMzQ0Ci0jZGVmaW5lIExFRlRfQU5HTEUgMzQ1Ci0jZGVmaW5lIFJJR0hUX0FOR0xF
IDM0NgotI2RlZmluZSBWRVJUSUNBTF9CQVIgMzQ3Ci0jZGVmaW5lIENBUkVUIDM0OAotI2RlZmlu
ZSBBTVBFUlNBTkQgMzQ5Ci0jZGVmaW5lIFFVRVNUSU9OIDM1MAotCi0KLQotCi0vKiBDb3B5IHRo
ZSBmaXJzdCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8KLQotCi0vLwotLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0vLwotCi0vLyBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGVfcGFyc2Vy
LnNoLiBETyBOT1QgRURJVCEKLQotLy8gSWdub3JlIGVycm9ycyBpbiBhdXRvLWdlbmVyYXRlZCBj
b2RlLgotI2lmIGRlZmluZWQoX19HTlVDX18pCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XdW51c2VkLWZ1bmN0aW9uIgotI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V3VudXNlZC12YXJpYWJsZSIKLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzd2l0
Y2gtZW51bSIKLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTogNDA2NSkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTg5KQotI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGU6IDQ1MDUpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcwMSkKLSNlbmRpZgot
Ci0jaW5jbHVkZSAiY29tcGlsZXIvU3ltYm9sVGFibGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9Q
YXJzZUhlbHBlci5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotCi0jZGVmaW5l
IFlZRU5BQkxFX05MUyAwCi0jZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCi0KLSNkZWZpbmUg
WVlMRVhfUEFSQU0gY29udGV4dC0+c2Nhbm5lcgotCi0KLS8qIEVuYWJsaW5nIHRyYWNlcy4gICov
Ci0jaWZuZGVmIFlZREVCVUcKLSMgZGVmaW5lIFlZREVCVUcgMAotI2VuZGlmCi0KLS8qIEVuYWJs
aW5nIHZlcmJvc2UgZXJyb3IgbWVzc2FnZXMuICAqLwotI2lmZGVmIFlZRVJST1JfVkVSQk9TRQot
IyB1bmRlZiBZWUVSUk9SX1ZFUkJPU0UKLSMgZGVmaW5lIFlZRVJST1JfVkVSQk9TRSAxCi0jZWxz
ZQotIyBkZWZpbmUgWVlFUlJPUl9WRVJCT1NFIDAKLSNlbmRpZgogCi0vKiBFbmFibGluZyB0aGUg
dG9rZW4gdGFibGUuICAqLwotI2lmbmRlZiBZWVRPS0VOX1RBQkxFCi0jIGRlZmluZSBZWVRPS0VO
X1RBQkxFIDAKLSNlbmRpZgogCiAjaWYgISBkZWZpbmVkIFlZU1RZUEUgJiYgISBkZWZpbmVkIFlZ
U1RZUEVfSVNfREVDTEFSRUQKIHR5cGVkZWYgdW5pb24gWVlTVFlQRQotCiB7CisKKwogICAgIHN0
cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgdW5pb24gewogICAgICAg
ICAgICAgVFN0cmluZyAqc3RyaW5nOwogICAgICAgICAgICAgZmxvYXQgZjsKQEAgLTMyNSw3ICsy
NDcsNiBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwog
ICAgIH0gbGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAg
ICAgVE9wZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9k
ZSogaW50ZXJtTm9kZTsKQEAgLTMzOSwzNCArMjYwLDcwIEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQ
RQogICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgICAgICAgICBURnVuY3Rp
b24qIGZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKLSAgICAgICAgICAg
IFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgIFRUeXBlTGlzdCogdHlwZUxpc3Q7Cisg
ICAgICAgICAgICBURmllbGQqIGZpZWxkOworICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRM
aXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwotfQotLyogTGluZSAxOTMgb2YgeWFjYy5j
LiAgKi8KIAotCVlZU1RZUEU7CisKKworfSBZWVNUWVBFOworIyBkZWZpbmUgWVlTVFlQRV9JU19U
UklWSUFMIDEKICMgZGVmaW5lIHl5c3R5cGUgWVlTVFlQRSAvKiBvYnNvbGVzY2VudDsgd2lsbCBi
ZSB3aXRoZHJhd24gKi8KICMgZGVmaW5lIFlZU1RZUEVfSVNfREVDTEFSRUQgMQotIyBkZWZpbmUg
WVlTVFlQRV9JU19UUklWSUFMIDEKICNlbmRpZgogCisjaWYgISBkZWZpbmVkIFlZTFRZUEUgJiYg
ISBkZWZpbmVkIFlZTFRZUEVfSVNfREVDTEFSRUQKK3R5cGVkZWYgc3RydWN0IFlZTFRZUEUKK3sK
KyAgaW50IGZpcnN0X2xpbmU7CisgIGludCBmaXJzdF9jb2x1bW47CisgIGludCBsYXN0X2xpbmU7
CisgIGludCBsYXN0X2NvbHVtbjsKK30gWVlMVFlQRTsKKyMgZGVmaW5lIHl5bHR5cGUgWVlMVFlQ
RSAvKiBvYnNvbGVzY2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KKyMgZGVmaW5lIFlZTFRZUEVf
SVNfREVDTEFSRUQgMQorIyBkZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKKyNlbmRpZgorCisK
KyNpZmRlZiBZWVBBUlNFX1BBUkFNCisjaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9f
Y3BsdXNwbHVzCitpbnQgeXlwYXJzZSAodm9pZCAqWVlQQVJTRV9QQVJBTSk7CisjZWxzZQoraW50
IHl5cGFyc2UgKCk7CisjZW5kaWYKKyNlbHNlIC8qICEgWVlQQVJTRV9QQVJBTSAqLworI2lmIGRl
ZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cworaW50IHl5cGFyc2UgKFRQYXJz
ZUNvbnRleHQqIGNvbnRleHQpOworI2Vsc2UKK2ludCB5eXBhcnNlICgpOworI2VuZGlmCisjZW5k
aWYgLyogISBZWVBBUlNFX1BBUkFNICovCiAKKyNlbmRpZiAvKiAhWVlfWVlfR0xTTEFOR19UQUJf
SF9JTkNMVURFRCAgKi8KIAogLyogQ29weSB0aGUgc2Vjb25kIHBhcnQgb2YgdXNlciBkZWNsYXJh
dGlvbnMuICAqLwogCiAKLWV4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXlsdmFsX3BhcmFtLCB2
b2lkKiB5eXNjYW5uZXIpOwotZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOworZXh0ZXJuIGludCB5eWxleChZWVNUWVBFKiB5eWx2
YWwsIFlZTFRZUEUqIHl5bGxvYywgdm9pZCogeXlzY2FubmVyKTsKK3N0YXRpYyB2b2lkIHl5ZXJy
b3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBy
ZWFzb24pOwogCi0jZGVmaW5lIEZSQUdfVkVSVF9PTkxZKFMsIEwpIHsgIFwKLSAgICBpZiAoY29u
dGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9GUkFHTUVOVF9TSEFERVIgJiYgIFwKLSAgICAgICAgY29u
dGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7ICBcCi0gICAgICAgIGNvbnRl
eHQtPmVycm9yKEwsICIgc3VwcG9ydGVkIGluIHZlcnRleC9mcmFnbWVudCBzaGFkZXJzIG9ubHkg
IiwgUyk7ICBcCi0gICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsgIFwKLSAgICB9ICBcCi19Cisj
ZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJocywgTikgICAgICAgICAgICAgICAgICAg
ICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgIGlmIChZWUlEKE4pKSB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9maWxlID0gWVlSSFNM
T0MoUmhzLCAxKS5maXJzdF9maWxlOyAgXAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfbGluZSA9
IFlZUkhTTE9DKFJocywgMSkuZmlyc3RfbGluZTsgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3Rf
ZmlsZSA9IFlZUkhTTE9DKFJocywgTikubGFzdF9maWxlOyAgICBcCisgICAgICAgIChDdXJyZW50
KS5sYXN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIE4pLmxhc3RfbGluZTsgICAgXAorICAgICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9maWxlID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0
X2ZpbGU7ICAgXAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfbGluZSA9IFlZUkhTTE9DKFJocywg
MCkubGFzdF9saW5lOyAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfZmlsZSA9IFlZUkhTTE9D
KFJocywgMCkubGFzdF9maWxlOyAgICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2xpbmUgPSBZ
WVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsgICAgXAorICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSB3aGlsZSAoMCkKIAog
I2RlZmluZSBWRVJURVhfT05MWShTLCBMKSB7ICBcCiAgICAgaWYgKGNvbnRleHQtPnNoYWRlclR5
cGUgIT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXApAQCAtMzgzLDggKzM0MCw2IEBAIGV4dGVybiB2
b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGUKIH0KIAogCi0vKiBMaW5lIDIxNiBvZiB5
YWNjLmMuICAqLwotCiAKICNpZmRlZiBzaG9ydAogIyB1bmRlZiBzaG9ydApAQCAtNDM3LDM2ICsz
OTIsMzYgQEAgdHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDE2OwogIyBpZiBkZWZpbmVkIFlZ
RU5BQkxFX05MUyAmJiBZWUVOQUJMRV9OTFMKICMgIGlmIEVOQUJMRV9OTFMKICMgICBpbmNsdWRl
IDxsaWJpbnRsLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSMgICBkZWZp
bmUgWVlfKG1zZ2lkKSBkZ2V0dGV4dCAoImJpc29uLXJ1bnRpbWUiLCBtc2dpZCkKKyMgICBkZWZp
bmUgWVlfKE1zZ2lkKSBkZ2V0dGV4dCAoImJpc29uLXJ1bnRpbWUiLCBNc2dpZCkKICMgIGVuZGlm
CiAjIGVuZGlmCiAjIGlmbmRlZiBZWV8KLSMgIGRlZmluZSBZWV8obXNnaWQpIG1zZ2lkCisjICBk
ZWZpbmUgWVlfKE1zZ2lkKSBNc2dpZAogIyBlbmRpZgogI2VuZGlmCiAKIC8qIFN1cHByZXNzIHVu
dXNlZC12YXJpYWJsZSB3YXJuaW5ncyBieSAidXNpbmciIEUuICAqLwogI2lmICEgZGVmaW5lZCBs
aW50IHx8IGRlZmluZWQgX19HTlVDX18KLSMgZGVmaW5lIFlZVVNFKGUpICgodm9pZCkgKGUpKQor
IyBkZWZpbmUgWVlVU0UoRSkgKCh2b2lkKSAoRSkpCiAjZWxzZQotIyBkZWZpbmUgWVlVU0UoZSkg
LyogZW1wdHkgKi8KKyMgZGVmaW5lIFlZVVNFKEUpIC8qIGVtcHR5ICovCiAjZW5kaWYKIAogLyog
SWRlbnRpdHkgZnVuY3Rpb24sIHVzZWQgdG8gc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgY29uc3Rh
bnQgY29uZGl0aW9ucy4gICovCiAjaWZuZGVmIGxpbnQKLSMgZGVmaW5lIFlZSUQobikgKG4pCisj
IGRlZmluZSBZWUlEKE4pIChOKQogI2Vsc2UKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZp
bmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmlu
ZWQgX01TQ19WRVIpCiBzdGF0aWMgaW50Ci1ZWUlEIChpbnQgaSkKK1lZSUQgKGludCB5eWkpCiAj
ZWxzZQogc3RhdGljIGludAotWVlJRCAoaSkKLSAgICBpbnQgaTsKK1lZSUQgKHl5aSkKKyAgICBp
bnQgeXlpOwogI2VuZGlmCiB7Ci0gIHJldHVybiBpOworICByZXR1cm4geXlpOwogfQogI2VuZGlm
CiAKQEAgLTQ4NywxMSArNDQyLDEyIEBAIFlZSUQgKGkpCiAjICAgIGRlZmluZSBhbGxvY2EgX2Fs
bG9jYQogIyAgIGVsc2UKICMgICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgYWxsb2NhCi0jICAgIGlm
ICEgZGVmaW5lZCBfQUxMT0NBX0ggJiYgISBkZWZpbmVkIF9TVERMSUJfSCAmJiAoZGVmaW5lZCBf
X1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorIyAgICBpZiAhIGRlZmluZWQgX0FM
TE9DQV9IICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MgJiYgKGRlZmluZWQgX19TVERDX18gfHwg
ZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBk
ZWZpbmVkIF9NU0NfVkVSKQogIyAgICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBP
TiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSMgICAgIGlmbmRlZiBfU1RETElCX0gKLSMgICAgICBkZWZp
bmUgX1NURExJQl9IIDEKKyAgICAgIC8qIFVzZSBFWElUX1NVQ0NFU1MgYXMgYSB3aXRuZXNzIGZv
ciBzdGRsaWIuaC4gICovCisjICAgICBpZm5kZWYgRVhJVF9TVUNDRVNTCisjICAgICAgZGVmaW5l
IEVYSVRfU1VDQ0VTUyAwCiAjICAgICBlbmRpZgogIyAgICBlbmRpZgogIyAgIGVuZGlmCkBAIC01
MTQsMjQgKzQ3MCwyNCBAQCBZWUlEIChpKQogIyAgaWZuZGVmIFlZU1RBQ0tfQUxMT0NfTUFYSU1V
TQogIyAgIGRlZmluZSBZWVNUQUNLX0FMTE9DX01BWElNVU0gWVlTSVpFX01BWElNVU0KICMgIGVu
ZGlmCi0jICBpZiAoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiAhIGRlZmluZWQgX1NURExJQl9IIFwK
KyMgIGlmIChkZWZpbmVkIF9fY3BsdXNwbHVzICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MgXAog
ICAgICAgICYmICEgKChkZWZpbmVkIFlZTUFMTE9DIHx8IGRlZmluZWQgbWFsbG9jKSBcCiAJICAg
ICAmJiAoZGVmaW5lZCBZWUZSRUUgfHwgZGVmaW5lZCBmcmVlKSkpCiAjICAgaW5jbHVkZSA8c3Rk
bGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSMgICBpZm5kZWYgX1NU
RExJQl9ICi0jICAgIGRlZmluZSBfU1RETElCX0ggMQorIyAgIGlmbmRlZiBFWElUX1NVQ0NFU1MK
KyMgICAgZGVmaW5lIEVYSVRfU1VDQ0VTUyAwCiAjICAgZW5kaWYKICMgIGVuZGlmCiAjICBpZm5k
ZWYgWVlNQUxMT0MKICMgICBkZWZpbmUgWVlNQUxMT0MgbWFsbG9jCi0jICAgaWYgISBkZWZpbmVk
IG1hbGxvYyAmJiAhIGRlZmluZWQgX1NURExJQl9IICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRl
ZmluZWQgX19DOTlfX0ZVTkNfXyBcCisjICAgaWYgISBkZWZpbmVkIG1hbGxvYyAmJiAhIGRlZmlu
ZWQgRVhJVF9TVUNDRVNTICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZV
TkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikK
IHZvaWQgKm1hbGxvYyAoWVlTSVpFX1QpOyAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNF
ICovCiAjICAgZW5kaWYKICMgIGVuZGlmCiAjICBpZm5kZWYgWVlGUkVFCiAjICAgZGVmaW5lIFlZ
RlJFRSBmcmVlCi0jICAgaWYgISBkZWZpbmVkIGZyZWUgJiYgISBkZWZpbmVkIF9TVERMSUJfSCAm
JiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorIyAgIGlmICEg
ZGVmaW5lZCBmcmVlICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MgJiYgKGRlZmluZWQgX19TVERD
X18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1
cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogdm9pZCBmcmVlICh2b2lkICopOyAvKiBJTkZSSU5HRVMg
T04gVVNFUiBOQU1FIFNQQUNFICovCiAjICAgZW5kaWYKQEAgLTU0MiwxNCArNDk4LDE2IEBAIHZv
aWQgZnJlZSAodm9pZCAqKTsgLyogSU5GUklOR0VTIE9OIFVTRVIKIAogI2lmICghIGRlZmluZWQg
eXlvdmVyZmxvdyBcCiAgICAgICYmICghIGRlZmluZWQgX19jcGx1c3BsdXMgXAotCSB8fCAoZGVm
aW5lZCBZWVNUWVBFX0lTX1RSSVZJQUwgJiYgWVlTVFlQRV9JU19UUklWSUFMKSkpCisJIHx8IChk
ZWZpbmVkIFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWUxUWVBFX0lTX1RSSVZJQUwgXAorCSAgICAg
JiYgZGVmaW5lZCBZWVNUWVBFX0lTX1RSSVZJQUwgJiYgWVlTVFlQRV9JU19UUklWSUFMKSkpCiAK
IC8qIEEgdHlwZSB0aGF0IGlzIHByb3Blcmx5IGFsaWduZWQgZm9yIGFueSBzdGFjayBtZW1iZXIu
ICAqLwogdW5pb24geXlhbGxvYwogewotICB5eXR5cGVfaW50MTYgeXlzczsKLSAgWVlTVFlQRSB5
eXZzOwotICB9OworICB5eXR5cGVfaW50MTYgeXlzc19hbGxvYzsKKyAgWVlTVFlQRSB5eXZzX2Fs
bG9jOworICBZWUxUWVBFIHl5bHNfYWxsb2M7Cit9OwogCiAvKiBUaGUgc2l6ZSBvZiB0aGUgbWF4
aW11bSBnYXAgYmV0d2VlbiBvbmUgYWxpZ25lZCBzdGFjayBhbmQgdGhlIG5leHQuICAqLwogIyBk
ZWZpbmUgWVlTVEFDS19HQVBfTUFYSU1VTSAoc2l6ZW9mICh1bmlvbiB5eWFsbG9jKSAtIDEpCkBA
IC01NTcsMzggKzUxNSwyMiBAQCB1bmlvbiB5eWFsbG9jCiAvKiBUaGUgc2l6ZSBvZiBhbiBhcnJh
eSBsYXJnZSB0byBlbm91Z2ggdG8gaG9sZCBhbGwgc3RhY2tzLCBlYWNoIHdpdGgKICAgIE4gZWxl
bWVudHMuICAqLwogIyBkZWZpbmUgWVlTVEFDS19CWVRFUyhOKSBcCi0gICAgICgoTikgKiAoc2l6
ZW9mICh5eXR5cGVfaW50MTYpICsgc2l6ZW9mIChZWVNUWVBFKSkgXAotICAgICAgKyBZWVNUQUNL
X0dBUF9NQVhJTVVNKQorICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNpemVv
ZiAoWVlTVFlQRSkgKyBzaXplb2YgKFlZTFRZUEUpKSBcCisgICAgICArIDIgKiBZWVNUQUNLX0dB
UF9NQVhJTVVNKQogCi0vKiBDb3B5IENPVU5UIG9iamVjdHMgZnJvbSBGUk9NIHRvIFRPLiAgVGhl
IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZG8KLSAgIG5vdCBvdmVybGFwLiAgKi8KLSMgaWZuZGVm
IFlZQ09QWQotIyAgaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiAxIDwgX19HTlVDX18KLSMgICBkZWZp
bmUgWVlDT1BZKFRvLCBGcm9tLCBDb3VudCkgXAotICAgICAgX19idWlsdGluX21lbWNweSAoVG8s
IEZyb20sIChDb3VudCkgKiBzaXplb2YgKCooRnJvbSkpKQotIyAgZWxzZQotIyAgIGRlZmluZSBZ
WUNPUFkoVG8sIEZyb20sIENvdW50KQkJXAotICAgICAgZG8JCQkJCVwKLQl7CQkJCQlcCi0JICBZ
WVNJWkVfVCB5eWk7CQkJCVwKLQkgIGZvciAoeXlpID0gMDsgeXlpIDwgKENvdW50KTsgeXlpKysp
CVwKLQkgICAgKFRvKVt5eWldID0gKEZyb20pW3l5aV07CQlcCi0JfQkJCQkJXAotICAgICAgd2hp
bGUgKFlZSUQgKDApKQotIyAgZW5kaWYKLSMgZW5kaWYKKyMgZGVmaW5lIFlZQ09QWV9ORUVERUQg
MQogCiAvKiBSZWxvY2F0ZSBTVEFDSyBmcm9tIGl0cyBvbGQgbG9jYXRpb24gdG8gdGhlIG5ldyBv
bmUuICBUaGUKICAgIGxvY2FsIHZhcmlhYmxlcyBZWVNJWkUgYW5kIFlZU1RBQ0tTSVpFIGdpdmUg
dGhlIG9sZCBhbmQgbmV3IG51bWJlciBvZgogICAgZWxlbWVudHMgaW4gdGhlIHN0YWNrLCBhbmQg
WVlQVFIgZ2l2ZXMgdGhlIG5ldyBsb2NhdGlvbiBvZiB0aGUKICAgIHN0YWNrLiAgQWR2YW5jZSBZ
WVBUUiB0byBhIHByb3Blcmx5IGFsaWduZWQgbG9jYXRpb24gZm9yIHRoZSBuZXh0CiAgICBzdGFj
ay4gICovCi0jIGRlZmluZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrKQkJCQkJXAorIyBkZWZpbmUg
WVlTVEFDS19SRUxPQ0FURShTdGFja19hbGxvYywgU3RhY2spCQkJCVwKICAgICBkbwkJCQkJCQkJ
CVwKICAgICAgIHsJCQkJCQkJCQlcCiAJWVlTSVpFX1QgeXluZXdieXRlczsJCQkJCQlcCi0JWVlD
T1BZICgmeXlwdHItPlN0YWNrLCBTdGFjaywgeXlzaXplKTsJCQkJXAotCVN0YWNrID0gJnl5cHRy
LT5TdGFjazsJCQkJCQlcCisJWVlDT1BZICgmeXlwdHItPlN0YWNrX2FsbG9jLCBTdGFjaywgeXlz
aXplKTsJCQlcCisJU3RhY2sgPSAmeXlwdHItPlN0YWNrX2FsbG9jOwkJCQkJXAogCXl5bmV3Ynl0
ZXMgPSB5eXN0YWNrc2l6ZSAqIHNpemVvZiAoKlN0YWNrKSArIFlZU1RBQ0tfR0FQX01BWElNVU07
IFwKIAl5eXB0ciArPSB5eW5ld2J5dGVzIC8gc2l6ZW9mICgqeXlwdHIpOwkJCQlcCiAgICAgICB9
CQkJCQkJCQkJXApAQCAtNTk2LDIzICs1MzgsNDMgQEAgdW5pb24geXlhbGxvYwogCiAjZW5kaWYK
IAorI2lmIGRlZmluZWQgWVlDT1BZX05FRURFRCAmJiBZWUNPUFlfTkVFREVECisvKiBDb3B5IENP
VU5UIG9iamVjdHMgZnJvbSBTUkMgdG8gRFNULiAgVGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24g
ZG8KKyAgIG5vdCBvdmVybGFwLiAgKi8KKyMgaWZuZGVmIFlZQ09QWQorIyAgaWYgZGVmaW5lZCBf
X0dOVUNfXyAmJiAxIDwgX19HTlVDX18KKyMgICBkZWZpbmUgWVlDT1BZKERzdCwgU3JjLCBDb3Vu
dCkgXAorICAgICAgX19idWlsdGluX21lbWNweSAoRHN0LCBTcmMsIChDb3VudCkgKiBzaXplb2Yg
KCooU3JjKSkpCisjICBlbHNlCisjICAgZGVmaW5lIFlZQ09QWShEc3QsIFNyYywgQ291bnQpICAg
ICAgICAgICAgICBcCisgICAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgWVlTSVpFX1QgeXlpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgZm9yICh5eWkgPSAwOyB5eWkgPCAoQ291bnQpOyB5eWkrKykgICBcCisgICAgICAgICAg
ICAoRHN0KVt5eWldID0gKFNyYylbeXlpXTsgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB3aGlsZSAoWVlJRCAoMCkp
CisjICBlbmRpZgorIyBlbmRpZgorI2VuZGlmIC8qICFZWUNPUFlfTkVFREVEICovCisKIC8qIFlZ
RklOQUwgLS0gU3RhdGUgbnVtYmVyIG9mIHRoZSB0ZXJtaW5hdGlvbiBzdGF0ZS4gICovCi0jZGVm
aW5lIFlZRklOQUwgIDcxCisjZGVmaW5lIFlZRklOQUwgIDc0CiAvKiBZWUxBU1QgLS0gTGFzdCBp
bmRleCBpbiBZWVRBQkxFLiAgKi8KLSNkZWZpbmUgWVlMQVNUICAgMTQxNgorI2RlZmluZSBZWUxB
U1QgICAxNDkwCiAKIC8qIFlZTlRPS0VOUyAtLSBOdW1iZXIgb2YgdGVybWluYWxzLiAgKi8KLSNk
ZWZpbmUgWVlOVE9LRU5TICA5NgorI2RlZmluZSBZWU5UT0tFTlMgIDk1CiAvKiBZWU5OVFMgLS0g
TnVtYmVyIG9mIG5vbnRlcm1pbmFscy4gICovCi0jZGVmaW5lIFlZTk5UUyAgODMKKyNkZWZpbmUg
WVlOTlRTICA4NAogLyogWVlOUlVMRVMgLS0gTnVtYmVyIG9mIHJ1bGVzLiAgKi8KLSNkZWZpbmUg
WVlOUlVMRVMgIDIwMQorI2RlZmluZSBZWU5SVUxFUyAgMjAyCiAvKiBZWU5SVUxFUyAtLSBOdW1i
ZXIgb2Ygc3RhdGVzLiAgKi8KLSNkZWZpbmUgWVlOU1RBVEVTICAzMDQKKyNkZWZpbmUgWVlOU1RB
VEVTICAzMDcKIAogLyogWVlUUkFOU0xBVEUoWVlMRVgpIC0tIEJpc29uIHN5bWJvbCBudW1iZXIg
Y29ycmVzcG9uZGluZyB0byBZWUxFWC4gICovCiAjZGVmaW5lIFlZVU5ERUZUT0sgIDIKLSNkZWZp
bmUgWVlNQVhVVE9LICAgMzUwCisjZGVmaW5lIFlZTUFYVVRPSyAgIDM0OQogCiAjZGVmaW5lIFlZ
VFJBTlNMQVRFKFlZWCkJCQkJCQlcCiAgICgodW5zaWduZWQgaW50KSAoWVlYKSA8PSBZWU1BWFVU
T0sgPyB5eXRyYW5zbGF0ZVtZWVhdIDogWVlVTkRFRlRPSykKQEAgLTY1NCw4ICs2MTYsNyBAQCBz
dGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJhbnNsYXRlW10gCiAgICAgICA1NSwgICAgNTYs
ICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwK
ICAgICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3
MiwgICAgNzMsICAgIDc0LAogICAgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAg
ICA4MCwgICAgODEsICAgIDgyLCAgICA4MywgICAgODQsCi0gICAgICA4NSwgICAgODYsICAgIDg3
LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwKLSAgICAg
IDk1CisgICAgICA4NSwgICAgODYsICAgIDg3LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwg
ICAgOTIsICAgIDkzLCAgICA5NAogfTsKIAogI2lmIFlZREVCVUcKQEAgLTY2MywxMTkgKzYyNCwx
MjAgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXRyYW5zbGF0ZVtdIAogICAgWVlSSFMu
ICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlwcmhzW10gPQogewotICAgICAgIDAs
ICAgICAwLCAgICAgMywgICAgIDUsICAgICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNywg
ICAgMTksCi0gICAgICAyNCwgICAgMjYsICAgIDMwLCAgICAzMywgICAgMzYsICAgIDM4LCAgICA0
MCwgICAgNDIsICAgIDQ2LCAgICA0OSwKLSAgICAgIDUyLCAgICA1NSwgICAgNTcsICAgIDYwLCAg
ICA2NCwgICAgNjcsICAgIDY5LCAgICA3MSwgICAgNzMsICAgIDc1LAotICAgICAgNzgsICAgIDgx
LCAgICA4NCwgICAgODYsICAgIDg4LCAgICA5MCwgICAgOTIsICAgIDk2LCAgIDEwMCwgICAxMDIs
Ci0gICAgIDEwNiwgICAxMTAsICAgMTEyLCAgIDExNCwgICAxMTgsICAgMTIyLCAgIDEyNiwgICAx
MzAsICAgMTMyLCAgIDEzNiwKLSAgICAgMTQwLCAgIDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwg
ICAxNTIsICAgMTU0LCAgIDE1OCwgICAxNjAsICAgMTY0LAotICAgICAxNjYsICAgMTcyLCAgIDE3
NCwgICAxNzgsICAgMTgwLCAgIDE4MiwgICAxODQsICAgMTg2LCAgIDE4OCwgICAxOTAsCi0gICAg
IDE5NCwgICAxOTYsICAgMTk5LCAgIDIwMiwgICAyMDcsICAgMjEwLCAgIDIxMiwgICAyMTQsICAg
MjE3LCAgIDIyMSwKLSAgICAgMjI1LCAgIDIyOCwgICAyMzQsICAgMjM4LCAgIDI0MSwgICAyNDUs
ICAgMjQ4LCAgIDI0OSwgICAyNTEsICAgMjUzLAotICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAy
NjMsICAgMjY5LCAgIDI3NiwgICAyODIsICAgMjg0LCAgIDI4NywgICAyOTIsCi0gICAgIDI5OCwg
ICAzMDMsICAgMzA2LCAgIDMwOCwgICAzMTEsICAgMzEzLCAgIDMxNSwgICAzMTcsICAgMzIwLCAg
IDMyMiwKLSAgICAgMzI0LCAgIDMyNywgICAzMjksICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzQw
LCAgIDM0MiwgICAzNDQsICAgMzQ2LAorICAgICAgIDAsICAgICAwLCAgICAgMywgICAgIDUsICAg
ICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNSwgICAgMTcsCisgICAgICAyMSwgICAgMjMs
ICAgIDI4LCAgICAzMCwgICAgMzQsICAgIDM3LCAgICA0MCwgICAgNDIsICAgIDQ0LCAgICA0NiwK
KyAgICAgIDUwLCAgICA1MywgICAgNTYsICAgIDU5LCAgICA2MSwgICAgNjQsICAgIDY4LCAgICA3
MSwgICAgNzMsICAgIDc1LAorICAgICAgNzcsICAgIDgwLCAgICA4MywgICAgODYsICAgIDg4LCAg
ICA5MCwgICAgOTIsICAgIDk0LCAgICA5OCwgICAxMDIsCisgICAgIDEwNCwgICAxMDgsICAgMTEy
LCAgIDExNCwgICAxMTYsICAgMTIwLCAgIDEyNCwgICAxMjgsICAgMTMyLCAgIDEzNCwKKyAgICAg
MTM4LCAgIDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwgICAxNTAsICAgMTU0LCAgIDE1NiwgICAx
NjAsICAgMTYyLAorICAgICAxNjYsICAgMTY4LCAgIDE3NCwgICAxNzYsICAgMTgwLCAgIDE4Miwg
ICAxODQsICAgMTg2LCAgIDE4OCwgICAxOTAsCisgICAgIDE5MiwgICAxOTYsICAgMTk4LCAgIDIw
MSwgICAyMDQsICAgMjA5LCAgIDIxMiwgICAyMTQsICAgMjE2LCAgIDIxOSwKKyAgICAgMjIzLCAg
IDIyNywgICAyMzAsICAgMjM2LCAgIDI0MCwgICAyNDMsICAgMjQ3LCAgIDI1MCwgICAyNTEsICAg
MjUzLAorICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAyNjEsICAgMjY1LCAgIDI3MSwgICAyNzgs
ICAgMjg0LCAgIDI4NiwgICAyODksCisgICAgIDI5NCwgICAzMDAsICAgMzA1LCAgIDMwOCwgICAz
MTAsICAgMzEzLCAgIDMxNSwgICAzMTcsICAgMzE5LCAgIDMyMiwKKyAgICAgMzI0LCAgIDMyNiwg
ICAzMjksICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzM3LCAgIDM0MiwgICAzNDQsICAgMzQ2LAog
ICAgICAzNDgsICAgMzUwLCAgIDM1MiwgICAzNTQsICAgMzU2LCAgIDM1OCwgICAzNjAsICAgMzYy
LCAgIDM2NCwgICAzNjYsCi0gICAgIDM2OCwgICAzNzAsICAgMzcyLCAgIDM3NCwgICAzNzYsICAg
Mzc4LCAgIDM4MCwgICAzODIsICAgMzg0LCAgIDM4NSwKLSAgICAgMzkyLCAgIDM5MywgICAzOTks
ICAgNDAxLCAgIDQwNCwgICA0MDgsICAgNDEwLCAgIDQxNCwgICA0MTYsICAgNDIxLAotICAgICA0
MjMsICAgNDI1LCAgIDQyNywgICA0MjksICAgNDMxLCAgIDQzMywgICA0MzUsICAgNDM3LCAgIDQz
OSwgICA0NDIsCi0gICAgIDQ0MywgICA0NDQsICAgNDUwLCAgIDQ1MiwgICA0NTQsICAgNDU1LCAg
IDQ1OCwgICA0NTksICAgNDYyLCAgIDQ2NSwKLSAgICAgNDY5LCAgIDQ3MSwgICA0NzQsICAgNDc2
LCAgIDQ3OSwgICA0ODUsICAgNDg5LCAgIDQ5MSwgICA0OTMsICAgNDk4LAotICAgICA0OTksICAg
NTA2LCAgIDUwNywgICA1MTYsICAgNTE3LCAgIDUyNSwgICA1MjcsICAgNTI5LCAgIDUzMSwgICA1
MzIsCi0gICAgIDUzNSwgICA1MzksICAgNTQyLCAgIDU0NSwgICA1NDgsICAgNTUyLCAgIDU1NSwg
ICA1NTcsICAgNTYwLCAgIDU2MiwKLSAgICAgNTY0LCAgIDU2NQorICAgICAzNjgsICAgMzcwLCAg
IDM3MiwgICAzNzQsICAgMzc2LCAgIDM3OCwgICAzODAsICAgMzgyLCAgIDM4NCwgICAzODYsCisg
ICAgIDM4NywgICAzOTQsICAgMzk1LCAgIDQwMSwgICA0MDMsICAgNDA2LCAgIDQxMCwgICA0MTIs
ICAgNDE2LCAgIDQxOCwKKyAgICAgNDIzLCAgIDQyNSwgICA0MjcsICAgNDI5LCAgIDQzMSwgICA0
MzMsICAgNDM1LCAgIDQzNywgICA0MzksICAgNDQxLAorICAgICA0NDQsICAgNDQ1LCAgIDQ0Niwg
ICA0NTIsICAgNDU0LCAgIDQ1NiwgICA0NTcsICAgNDYwLCAgIDQ2MSwgICA0NjQsCisgICAgIDQ2
NywgICA0NzEsICAgNDczLCAgIDQ3NiwgICA0NzgsICAgNDgxLCAgIDQ4NywgICA0OTEsICAgNDkz
LCAgIDQ5NSwKKyAgICAgNTAwLCAgIDUwMSwgICA1MDgsICAgNTA5LCAgIDUxOCwgICA1MTksICAg
NTI3LCAgIDUyOSwgICA1MzEsICAgNTMzLAorICAgICA1MzQsICAgNTM3LCAgIDU0MSwgICA1NDQs
ICAgNTQ3LCAgIDU1MCwgICA1NTQsICAgNTU3LCAgIDU1OSwgICA1NjIsCisgICAgIDU2NCwgICA1
NjYsICAgNTY3CiB9OwogCiAvKiBZWVJIUyAtLSBBIGAtMSctc2VwYXJhdGVkIGxpc3Qgb2YgdGhl
IHJ1bGVzJyBSSFMuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXJoc1tdID0KIHsK
LSAgICAgMTc1LCAgICAgMCwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgOTcsICAgIC0xLCAgICA0
OCwgICAgLTEsICAgIDQ3LAotICAgICAgLTEsICAgIDQ5LCAgICAtMSwgICAgNzIsICAgMTI0LCAg
ICA3MywgICAgLTEsICAgIDk4LCAgICAtMSwgICAgOTksCi0gICAgICA3NCwgICAxMDAsICAgIDc1
LCAgICAtMSwgICAxMDEsICAgIC0xLCAgICA5OSwgICAgNzgsICAgIDUwLCAgICAtMSwKLSAgICAg
IDk5LCAgICA1MywgICAgLTEsICAgIDk5LCAgICA1NCwgICAgLTEsICAgMTI0LCAgICAtMSwgICAx
MDIsICAgIC0xLAotICAgICAxMDMsICAgIC0xLCAgICA5OSwgICAgNzgsICAgMTAzLCAgICAtMSwg
ICAxMDUsICAgIDczLCAgICAtMSwgICAxMDQsCi0gICAgICA3MywgICAgLTEsICAgMTA2LCAgICAz
OSwgICAgLTEsICAgMTA2LCAgICAtMSwgICAxMDYsICAgMTIyLCAgICAtMSwKLSAgICAgMTA1LCAg
ICA3OSwgICAxMjIsICAgIC0xLCAgIDEwNywgICAgNzIsICAgIC0xLCAgIDE0MiwgICAgLTEsICAg
IDQ1LAotICAgICAgLTEsICAgIDUwLCAgICAtMSwgICAgOTksICAgIC0xLCAgICA1MywgICAxMDgs
ICAgIC0xLCAgICA1NCwgICAxMDgsCi0gICAgICAtMSwgICAxMDksICAgMTA4LCAgICAtMSwgICAg
ODYsICAgIC0xLCAgICA4NCwgICAgLTEsICAgIDgzLCAgICAtMSwKLSAgICAgMTA4LCAgICAtMSwg
ICAxMTAsICAgIDg3LCAgIDEwOCwgICAgLTEsICAgMTEwLCAgICA4OCwgICAxMDgsICAgIC0xLAot
ICAgICAxMTAsICAgIC0xLCAgIDExMSwgICAgODYsICAgMTEwLCAgICAtMSwgICAxMTEsICAgIDg0
LCAgIDExMCwgICAgLTEsCi0gICAgIDExMSwgICAgLTEsICAgMTEyLCAgICAtMSwgICAxMTMsICAg
IDkwLCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA5MSwKLSAgICAgMTEyLCAgICAtMSwgICAxMTMs
ICAgIDU1LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA1NiwgICAxMTIsICAgIC0xLAotICAgICAx
MTMsICAgIC0xLCAgIDExNCwgICAgNTcsICAgMTEzLCAgICAtMSwgICAxMTQsICAgIDU4LCAgIDEx
MywgICAgLTEsCi0gICAgIDExNCwgICAgLTEsICAgMTE1LCAgICAtMSwgICAxMTYsICAgIC0xLCAg
IDExNywgICAgLTEsICAgMTE4LCAgICA1OSwKLSAgICAgMTE3LCAgICAtMSwgICAxMTgsICAgIC0x
LCAgIDExOSwgICAgNjEsICAgMTE4LCAgICAtMSwgICAxMTksICAgIC0xLAotICAgICAxMjAsICAg
IDYwLCAgIDExOSwgICAgLTEsICAgMTIwLCAgICAtMSwgICAxMjAsICAgIDk1LCAgIDEyNCwgICAg
ODAsCi0gICAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMDgsICAgMTIzLCAgIDEyMiwg
ICAgLTEsICAgIDgxLCAgICAtMSwKLSAgICAgIDYyLCAgICAtMSwgICAgNjMsICAgIC0xLCAgICA2
NCwgICAgLTEsICAgIDcxLCAgICAtMSwgICAxMjIsICAgIC0xLAotICAgICAxMjQsICAgIDc5LCAg
IDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMjcsICAgIDgyLCAgICAtMSwgICAxMzUsCi0g
ICAgICA4MiwgICAgLTEsICAgICA3LCAgIDE0MCwgICAxNDEsICAgIDgyLCAgICAtMSwgICAxMjgs
ICAgIDczLCAgICAtMSwKLSAgICAgMTMwLCAgICAtMSwgICAxMjksICAgIC0xLCAgIDEzMCwgICAx
MzIsICAgIC0xLCAgIDEyOSwgICAgNzksICAgMTMyLAotICAgICAgLTEsICAgMTM3LCAgICA0NSwg
ICAgNzIsICAgIC0xLCAgIDEzOSwgICAgNDUsICAgIC0xLCAgIDEzOSwgICAgNDUsCi0gICAgICA3
NCwgICAxMjUsICAgIDc1LCAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzMSwgICAgLTEsICAgMTMz
LCAgIDEzMSwKLSAgICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTM0LCAgICAtMSwgICAxMzMsICAg
MTM0LCAgICAtMSwgICAgLTEsICAgIDMzLAotICAgICAgLTEsICAgIDM0LCAgICAtMSwgICAgMzUs
ICAgIC0xLCAgIDEzOSwgICAgLTEsICAgMTM2LCAgICAtMSwgICAxMzUsCi0gICAgICA3OSwgICAg
NDUsICAgIC0xLCAgIDEzNSwgICAgNzksICAgIDQ1LCAgICA3NCwgICAgNzUsICAgIC0xLCAgIDEz
NSwKLSAgICAgIDc5LCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM1LCAg
ICA3OSwgICAgNDUsICAgIDgxLAotICAgICAxNTAsICAgIC0xLCAgIDEzNywgICAgLTEsICAgMTM3
LCAgICA0NSwgICAgLTEsICAgMTM3LCAgICA0NSwgICAgNzQsCi0gICAgICA3NSwgICAgLTEsICAg
MTM3LCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM3LCAgICA0NSwKLSAg
ICAgIDgxLCAgIDE1MCwgICAgLTEsICAgICAzLCAgICA0NSwgICAgLTEsICAgMTM5LCAgICAtMSwg
ICAxMzgsICAgMTM5LAotICAgICAgLTEsICAgICA5LCAgICAtMSwgICAgIDgsICAgIC0xLCAgICAz
NywgICAgLTEsICAgICAzLCAgICAzNywgICAgLTEsCi0gICAgICAzNiwgICAgLTEsICAgMTQxLCAg
ICAtMSwgICAxNDAsICAgMTQxLCAgICAtMSwgICAgIDQsICAgIC0xLCAgICAgNSwKLSAgICAgIC0x
LCAgICAgNiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDc0LCAgIDEyNSwgICAgNzUs
ICAgIC0xLAotICAgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAgICAtMSwgICAg
MTAsICAgIC0xLCAgICAyNywgICAgLTEsCi0gICAgICAyOCwgICAgLTEsICAgIDI5LCAgICAtMSwg
ICAgMjEsICAgIC0xLCAgICAyMiwgICAgLTEsICAgIDIzLCAgICAtMSwKLSAgICAgIDI0LCAgICAt
MSwgICAgMjUsICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwgICAgMzEsICAgIC0x
LAotICAgICAgMzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAgNDMsICAg
IC0xLCAgICA0NCwgICAgLTEsCi0gICAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgLTEs
ICAgIDM4LCAgICA0NSwgICAgNzYsICAgMTQ0LCAgIDE0NiwKLSAgICAgIDc3LCAgICAtMSwgICAg
LTEsICAgIDM4LCAgICA3NiwgICAxNDUsICAgMTQ2LCAgICA3NywgICAgLTEsICAgMTQ3LAotICAg
ICAgLTEsICAgMTQ2LCAgIDE0NywgICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODIsICAgIC0xLCAg
IDE0OSwgICAgLTEsCi0gICAgIDE0OCwgICAgNzksICAgMTQ5LCAgICAtMSwgICAgNDUsICAgIC0x
LCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwKLSAgICAgIC0xLCAgIDEyMiwgICAgLTEsICAg
MTI2LCAgICAtMSwgICAxNTQsICAgIC0xLCAgIDE1MywgICAgLTEsICAgMTUxLAotICAgICAgLTEs
ICAgMTYzLCAgICAtMSwgICAxNjQsICAgIC0xLCAgIDE2NywgICAgLTEsICAgMTc0LCAgICAtMSwg
ICAgNzYsCi0gICAgICA3NywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgMTU1LCAgIDE2
MiwgICAxNTYsICAgIDc3LCAgICAtMSwKLSAgICAgMTYxLCAgICAtMSwgICAxNTMsICAgIC0xLCAg
ICAtMSwgICAxNTksICAgMTYxLCAgICAtMSwgICAgLTEsICAgMTYwLAotICAgICAxNTMsICAgIC0x
LCAgICA3NiwgICAgNzcsICAgIC0xLCAgICA3NiwgICAxNjIsICAgIDc3LCAgICAtMSwgICAxNTIs
Ci0gICAgICAtMSwgICAxNjIsICAgMTUyLCAgICAtMSwgICAgODIsICAgIC0xLCAgIDEyNCwgICAg
ODIsICAgIC0xLCAgICAxOCwKLSAgICAgIDcyLCAgIDEyNCwgICAgNzMsICAgMTY1LCAgICAtMSwg
ICAxNTgsICAgIDE2LCAgIDE1OCwgICAgLTEsICAgMTU4LAotICAgICAgLTEsICAgMTI0LCAgICAt
MSwgICAxMzcsICAgIDQ1LCAgICA4MSwgICAxNTAsICAgIC0xLCAgICAtMSwgICAgNDAsCi0gICAg
ICA3MiwgICAxNjgsICAgMTY2LCAgICA3MywgICAxNTcsICAgIC0xLCAgICAtMSwgICAgMTUsICAg
MTY5LCAgIDE1OCwKLSAgICAgIDQwLCAgICA3MiwgICAxMjQsICAgIDczLCAgICA4MiwgICAgLTEs
ICAgIC0xLCAgICAxNywgICAgNzIsICAgMTcwLAotICAgICAxNzEsICAgMTczLCAgICA3MywgICAx
NTcsICAgIC0xLCAgIDE2MywgICAgLTEsICAgMTUxLCAgICAtMSwgICAxNjYsCi0gICAgICAtMSwg
ICAgLTEsICAgMTcyLCAgICA4MiwgICAgLTEsICAgMTcyLCAgICA4MiwgICAxMjQsICAgIC0xLCAg
ICAxNCwKLSAgICAgIDgyLCAgICAtMSwgICAgMTMsICAgIDgyLCAgICAtMSwgICAgMjAsICAgIDgy
LCAgICAtMSwgICAgMjAsICAgMTI0LAotICAgICAgODIsICAgIC0xLCAgICAxOSwgICAgODIsICAg
IC0xLCAgIDE3NiwgICAgLTEsICAgMTc1LCAgIDE3NiwgICAgLTEsCi0gICAgIDE3NywgICAgLTEs
ICAgMTI2LCAgICAtMSwgICAgLTEsICAgMTI3LCAgIDE3OCwgICAxNjEsICAgIC0xCisgICAgIDE3
NSwgICAgIDAsICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgNDUsICAgIC0x
LCAgICA5NywKKyAgICAgIC0xLCAgICA0OCwgICAgLTEsICAgIDQ3LCAgICAtMSwgICAgNDksICAg
IC0xLCAgICA3MSwgICAxMjQsICAgIDcyLAorICAgICAgLTEsICAgIDk4LCAgICAtMSwgICAgOTks
ICAgIDczLCAgIDEwMCwgICAgNzQsICAgIC0xLCAgIDEwMSwgICAgLTEsCisgICAgICA5OSwgICAg
NzcsICAgIDk2LCAgICAtMSwgICAgOTksICAgIDUyLCAgICAtMSwgICAgOTksICAgIDUzLCAgICAt
MSwKKyAgICAgMTI0LCAgICAtMSwgICAxMDIsICAgIC0xLCAgIDEwMywgICAgLTEsICAgIDk5LCAg
ICA3NywgICAxMDMsICAgIC0xLAorICAgICAxMDUsICAgIDcyLCAgICAtMSwgICAxMDQsICAgIDcy
LCAgICAtMSwgICAxMDYsICAgIDM5LCAgICAtMSwgICAxMDYsCisgICAgICAtMSwgICAxMDYsICAg
MTIyLCAgICAtMSwgICAxMDUsICAgIDc4LCAgIDEyMiwgICAgLTEsICAgMTA3LCAgICA3MSwKKyAg
ICAgIC0xLCAgIDE0MiwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgOTksICAgIC0xLCAgICA1Miwg
ICAxMDgsICAgIC0xLAorICAgICAgNTMsICAgMTA4LCAgICAtMSwgICAxMDksICAgMTA4LCAgICAt
MSwgICAgODUsICAgIC0xLCAgICA4MywgICAgLTEsCisgICAgICA4MiwgICAgLTEsICAgMTA4LCAg
ICAtMSwgICAxMTAsICAgIDg2LCAgIDEwOCwgICAgLTEsICAgMTEwLCAgICA4NywKKyAgICAgMTA4
LCAgICAtMSwgICAxMTAsICAgIC0xLCAgIDExMSwgICAgODUsICAgMTEwLCAgICAtMSwgICAxMTEs
ICAgIDgzLAorICAgICAxMTAsICAgIC0xLCAgIDExMSwgICAgLTEsICAgMTEyLCAgICAtMSwgICAx
MTMsICAgIDg5LCAgIDExMiwgICAgLTEsCisgICAgIDExMywgICAgOTAsICAgMTEyLCAgICAtMSwg
ICAxMTMsICAgIDU0LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA1NSwKKyAgICAgMTEyLCAgICAt
MSwgICAxMTMsICAgIC0xLCAgIDExNCwgICAgNTYsICAgMTEzLCAgICAtMSwgICAxMTQsICAgIDU3
LAorICAgICAxMTMsICAgIC0xLCAgIDExNCwgICAgLTEsICAgMTE1LCAgICAtMSwgICAxMTYsICAg
IC0xLCAgIDExNywgICAgLTEsCisgICAgIDExOCwgICAgNTgsICAgMTE3LCAgICAtMSwgICAxMTgs
ICAgIC0xLCAgIDExOSwgICAgNjAsICAgMTE4LCAgICAtMSwKKyAgICAgMTE5LCAgICAtMSwgICAx
MjAsICAgIDU5LCAgIDExOSwgICAgLTEsICAgMTIwLCAgICAtMSwgICAxMjAsICAgIDk0LAorICAg
ICAxMjQsICAgIDc5LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMDgsICAgMTIzLCAg
IDEyMiwgICAgLTEsCisgICAgICA4MCwgICAgLTEsICAgIDYxLCAgICAtMSwgICAgNjIsICAgIC0x
LCAgICA2MywgICAgLTEsICAgIDcwLCAgICAtMSwKKyAgICAgMTIyLCAgICAtMSwgICAxMjQsICAg
IDc4LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMjcsICAgIDgxLAorICAgICAgLTEs
ICAgMTM1LCAgICA4MSwgICAgLTEsICAgICA3LCAgIDE0MCwgICAxNDEsICAgIDgxLCAgICAtMSwg
ICAxMjgsCisgICAgICA3MiwgICAgLTEsICAgMTMwLCAgICAtMSwgICAxMjksICAgIC0xLCAgIDEz
MCwgICAxMzIsICAgIC0xLCAgIDEyOSwKKyAgICAgIDc4LCAgIDEzMiwgICAgLTEsICAgMTM3LCAg
ICA0NSwgICAgNzEsICAgIC0xLCAgIDEzOSwgICAgOTYsICAgIC0xLAorICAgICAxMzksICAgIDk2
LCAgICA3MywgICAxMjUsICAgIDc0LCAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzMSwgICAgLTEs
CisgICAgIDEzMywgICAxMzEsICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTM0LCAgICAtMSwgICAx
MzMsICAgMTM0LCAgICAtMSwKKyAgICAgIC0xLCAgICAzMywgICAgLTEsICAgIDM0LCAgICAtMSwg
ICAgMzUsICAgIC0xLCAgIDEzOSwgICAgLTEsICAgMTM2LAorICAgICAgLTEsICAgMTM1LCAgICA3
OCwgICAgOTYsICAgIC0xLCAgIDEzNSwgICAgNzgsICAgIDk2LCAgICA3MywgICAgNzQsCisgICAg
ICAtMSwgICAxMzUsICAgIDc4LCAgICA5NiwgICAgNzMsICAgMTI1LCAgICA3NCwgICAgLTEsICAg
MTM1LCAgICA3OCwKKyAgICAgIDk2LCAgICA4MCwgICAxNTAsICAgIC0xLCAgIDEzNywgICAgLTEs
ICAgMTM3LCAgICA5NiwgICAgLTEsICAgMTM3LAorICAgICAgOTYsICAgIDczLCAgICA3NCwgICAg
LTEsICAgMTM3LCAgICA5NiwgICAgNzMsICAgMTI1LCAgICA3NCwgICAgLTEsCisgICAgIDEzNywg
ICAgOTYsICAgIDgwLCAgIDE1MCwgICAgLTEsICAgICAzLCAgICA0NSwgICAgLTEsICAgMTM5LCAg
ICAtMSwKKyAgICAgMTM4LCAgIDEzOSwgICAgLTEsICAgICA5LCAgICAtMSwgICAgIDgsICAgIC0x
LCAgICAzNywgICAgLTEsICAgICAzLAorICAgICAgMzcsICAgIC0xLCAgICAzNiwgICAgLTEsICAg
MTQxLCAgICAtMSwgICAxNDAsICAgMTQxLCAgICAtMSwgICAgIDQsCisgICAgICAtMSwgICAgIDUs
ICAgIC0xLCAgICAgNiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDczLCAgIDEyNSwK
KyAgICAgIDc0LCAgICAtMSwgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAgICAt
MSwgICAgMTAsICAgIC0xLAorICAgICAgMjcsICAgIC0xLCAgICAyOCwgICAgLTEsICAgIDI5LCAg
ICAtMSwgICAgMjEsICAgIC0xLCAgICAyMiwgICAgLTEsCisgICAgICAyMywgICAgLTEsICAgIDI0
LCAgICAtMSwgICAgMjUsICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwKKyAgICAg
IDMxLCAgICAtMSwgICAgMzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAg
NDMsICAgIC0xLAorICAgICAgNDQsICAgIC0xLCAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAtMSwg
ICAgLTEsICAgIDM4LCAgICA5NiwgICAgNzUsCisgICAgIDE0NCwgICAxNDYsICAgIDc2LCAgICAt
MSwgICAgLTEsICAgIDM4LCAgICA3NSwgICAxNDUsICAgMTQ2LCAgICA3NiwKKyAgICAgIC0xLCAg
IDE0NywgICAgLTEsICAgMTQ2LCAgIDE0NywgICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODEsICAg
IC0xLAorICAgICAxNDksICAgIC0xLCAgIDE0OCwgICAgNzgsICAgMTQ5LCAgICAtMSwgICAgOTYs
ICAgIC0xLCAgICA5NiwgICAgNzMsCisgICAgIDEyNSwgICAgNzQsICAgIC0xLCAgIDEyMiwgICAg
LTEsICAgMTI2LCAgICAtMSwgICAxNTQsICAgIC0xLCAgIDE1MywKKyAgICAgIC0xLCAgIDE1MSwg
ICAgLTEsICAgMTYzLCAgICAtMSwgICAxNjQsICAgIC0xLCAgIDE2NywgICAgLTEsICAgMTc0LAor
ICAgICAgLTEsICAgIDc1LCAgICA3NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgMTU1
LCAgIDE2MiwgICAxNTYsCisgICAgICA3NiwgICAgLTEsICAgMTYxLCAgICAtMSwgICAxNTMsICAg
IC0xLCAgICAtMSwgICAxNTksICAgMTYxLCAgICAtMSwKKyAgICAgIC0xLCAgIDE2MCwgICAxNTMs
ICAgIC0xLCAgICA3NSwgICAgNzYsICAgIC0xLCAgICA3NSwgICAxNjIsICAgIDc2LAorICAgICAg
LTEsICAgMTUyLCAgICAtMSwgICAxNjIsICAgMTUyLCAgICAtMSwgICAgODEsICAgIC0xLCAgIDEy
NCwgICAgODEsCisgICAgICAtMSwgICAgMTgsICAgIDcxLCAgIDEyNCwgICAgNzIsICAgMTY1LCAg
ICAtMSwgICAxNTgsICAgIDE2LCAgIDE1OCwKKyAgICAgIC0xLCAgIDE1OCwgICAgLTEsICAgMTI0
LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICA4MCwgICAxNTAsICAgIC0xLAorICAgICAgLTEsICAg
IDQwLCAgICA3MSwgICAxNjgsICAgMTY2LCAgICA3MiwgICAxNTcsICAgIC0xLCAgICAtMSwgICAg
MTUsCisgICAgIDE2OSwgICAxNTgsICAgIDQwLCAgICA3MSwgICAxMjQsICAgIDcyLCAgICA4MSwg
ICAgLTEsICAgIC0xLCAgICAxNywKKyAgICAgIDcxLCAgIDE3MCwgICAxNzEsICAgMTczLCAgICA3
MiwgICAxNTcsICAgIC0xLCAgIDE2MywgICAgLTEsICAgMTUxLAorICAgICAgLTEsICAgMTY2LCAg
ICAtMSwgICAgLTEsICAgMTcyLCAgICA4MSwgICAgLTEsICAgMTcyLCAgICA4MSwgICAxMjQsCisg
ICAgICAtMSwgICAgMTQsICAgIDgxLCAgICAtMSwgICAgMTMsICAgIDgxLCAgICAtMSwgICAgMjAs
ICAgIDgxLCAgICAtMSwKKyAgICAgIDIwLCAgIDEyNCwgICAgODEsICAgIC0xLCAgICAxOSwgICAg
ODEsICAgIC0xLCAgIDE3NiwgICAgLTEsICAgMTc1LAorICAgICAxNzYsICAgIC0xLCAgIDE3Nywg
ICAgLTEsICAgMTI2LCAgICAtMSwgICAgLTEsICAgMTI3LCAgIDE3OCwgICAxNjEsCisgICAgICAt
MQogfTsKIAogLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVy
IFlZTiB3YXMgZGVmaW5lZC4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXJsaW5l
W10gPQogewotICAgICAgIDAsICAgMTY4LCAgIDE2OCwgICAyMDMsICAgMjA2LCAgIDIxOSwgICAy
MjQsICAgMjI5LCAgIDIzNSwgICAyMzgsCi0gICAgIDMxNywgICAzMjAsICAgNDIxLCAgIDQzMSwg
ICA0NDQsICAgNDUyLCAgIDU1MiwgICA1NTUsICAgNTYzLCAgIDU2NywKLSAgICAgNTc0LCAgIDU3
OCwgICA1ODUsICAgNTkxLCAgIDYwMCwgICA2MDgsICAgNjYzLCAgIDY3MCwgICA2ODAsICAgNjgz
LAotICAgICA2OTMsICAgNzAzLCAgIDcyNCwgICA3MjUsICAgNzI2LCAgIDczMSwgICA3MzIsICAg
NzQxLCAgIDc1MywgICA3NTQsCi0gICAgIDc2MiwgICA3NzMsICAgNzc3LCAgIDc3OCwgICA3ODgs
ICAgNzk4LCAgIDgwOCwgICA4MjEsICAgODIyLCAgIDgzMiwKLSAgICAgODQ1LCAgIDg0OSwgICA4
NTMsICAgODU3LCAgIDg1OCwgICA4NzEsICAgODcyLCAgIDg4NSwgICA4ODYsICAgODk5LAotICAg
ICA5MDAsICAgOTE3LCAgIDkxOCwgICA5MzEsICAgOTMyLCAgIDkzMywgICA5MzQsICAgOTM1LCAg
IDkzOSwgICA5NDIsCi0gICAgIDk1MywgICA5NjEsICAgOTg4LCAgIDk5MywgIDEwMDcsICAxMDQ1
LCAgMTA0OCwgIDEwNTUsICAxMDYzLCAgMTA4NCwKLSAgICAxMTA1LCAgMTExNiwgIDExNDUsICAx
MTUwLCAgMTE2MCwgIDExNjUsICAxMTc1LCAgMTE3OCwgIDExODEsICAxMTg0LAotICAgIDExOTAs
ICAxMTk3LCAgMTIwMCwgIDEyMjIsICAxMjQwLCAgMTI2NCwgIDEyODcsICAxMjkxLCAgMTMwOSwg
IDEzMTcsCi0gICAgMTM0OSwgIDEzNjksICAxNDU4LCAgMTQ2NywgIDE0OTAsICAxNDkzLCAgMTQ5
OSwgIDE1MDcsICAxNTE1LCAgMTUyMywKLSAgICAxNTMzLCAgMTU0MCwgIDE1NDMsICAxNTQ2LCAg
MTU1MiwgIDE1NTUsICAxNTcwLCAgMTU3NCwgIDE1NzgsICAxNTgyLAotICAgIDE1OTEsICAxNTk2
LCAgMTYwMSwgIDE2MDYsICAxNjExLCAgMTYxNiwgIDE2MjEsICAxNjI2LCAgMTYzMSwgIDE2MzYs
Ci0gICAgMTY0MiwgIDE2NDgsICAxNjU0LCAgMTY1OSwgIDE2NjQsICAxNjczLCAgMTY4MiwgIDE2
ODcsICAxNzAwLCAgMTcwMCwKLSAgICAxNzE0LCAgMTcxNCwgIDE3MjMsICAxNzI2LCAgMTc0MSwg
IDE3NzcsICAxNzgxLCAgMTc4NywgIDE3OTUsICAxODExLAotICAgIDE4MTUsICAxODE5LCAgMTgy
MCwgIDE4MjYsICAxODI3LCAgMTgyOCwgIDE4MjksICAxODMwLCAgMTgzNCwgIDE4MzUsCi0gICAg
MTgzNSwgIDE4MzUsICAxODQ1LCAgMTg0NiwgIDE4NTAsICAxODUwLCAgMTg1MSwgIDE4NTEsICAx
ODU2LCAgMTg1OSwKLSAgICAxODY5LCAgMTg3MiwgIDE4NzgsICAxODc5LCAgMTg4MywgIDE4OTEs
ICAxODk1LCAgMTkwNSwgIDE5MTAsICAxOTI3LAotICAgIDE5MjcsICAxOTMyLCAgMTkzMiwgIDE5
MzksICAxOTM5LCAgMTk0NywgIDE5NTAsICAxOTU2LCAgMTk1OSwgIDE5NjUsCi0gICAgMTk2OSwg
IDE5NzYsICAxOTgzLCAgMTk5MCwgIDE5OTcsICAyMDA4LCAgMjAxNywgIDIwMjEsICAyMDI4LCAg
MjAzMSwKLSAgICAyMDM3LCAgMjAzNworICAgICAgIDAsICAgMTc5LCAgIDE3OSwgICAxODAsICAg
MTgzLCAgIDIyNiwgICAyMjksICAgMjQyLCAgIDI0NywgICAyNTIsCisgICAgIDI1OCwgICAyNjEs
ICAgMzM2LCAgIDMzOSwgICA0MzQsICAgNDQ0LCAgIDQ1NywgICA0NjUsICAgNTY1LCAgIDU2OCwK
KyAgICAgNTc2LCAgIDU3OSwgICA1ODUsICAgNTg5LCAgIDU5NiwgICA2MDIsICAgNjExLCAgIDYx
OSwgICA2NzQsICAgNjg0LAorICAgICA2ODcsICAgNjk3LCAgIDcwNywgICA3MjgsICAgNzI5LCAg
IDczMCwgICA3MzUsICAgNzM2LCAgIDc0NCwgICA3NTUsCisgICAgIDc1NiwgICA3NjQsICAgNzc1
LCAgIDc3OSwgICA3ODAsICAgNzkwLCAgIDgwMCwgICA4MTAsICAgODIzLCAgIDgyNCwKKyAgICAg
ODM0LCAgIDg0NywgICA4NTEsICAgODU1LCAgIDg1OSwgICA4NjAsICAgODczLCAgIDg3NCwgICA4
ODcsICAgODg4LAorICAgICA5MDEsICAgOTAyLCAgIDkxOSwgICA5MjAsICAgOTMzLCAgIDkzNCwg
ICA5MzUsICAgOTM2LCAgIDkzNywgICA5NDEsCisgICAgIDk0NCwgICA5NTUsICAgOTYzLCAgIDk5
MCwgICA5OTUsICAxMDA5LCAgMTA0NiwgIDEwNDksICAxMDU2LCAgMTA2NCwKKyAgICAxMDg1LCAg
MTEwNiwgIDExMTYsICAxMTQ0LCAgMTE0OSwgIDExNTksICAxMTY0LCAgMTE3NCwgIDExNzcsICAx
MTgwLAorICAgIDExODMsICAxMTg5LCAgMTE5NiwgIDExOTksICAxMjIxLCAgMTIzOSwgIDEyNjMs
ICAxMjg2LCAgMTI5MCwgIDEzMDgsCisgICAgMTMxNiwgIDEzNDgsICAxMzY4LCAgMTM4OSwgIDEz
OTgsICAxNDIxLCAgMTQyNCwgIDE0MzAsICAxNDM4LCAgMTQ0NiwKKyAgICAxNDU0LCAgMTQ2NCwg
IDE0NzEsICAxNDc0LCAgMTQ3NywgIDE0ODMsICAxNDg2LCAgMTUwMSwgIDE1MDUsICAxNTA5LAor
ICAgIDE1MTMsICAxNTE3LCAgMTUyMiwgIDE1MjcsICAxNTMyLCAgMTUzNywgIDE1NDIsICAxNTQ3
LCAgMTU1MiwgIDE1NTcsCisgICAgMTU2MiwgIDE1NjcsICAxNTcyLCAgMTU3NywgIDE1ODEsICAx
NTg1LCAgMTU5MywgIDE2MDEsICAxNjA1LCAgMTYxOCwKKyAgICAxNjE4LCAgMTYzMiwgIDE2MzIs
ICAxNjQxLCAgMTY0NCwgIDE2NjAsICAxNjkzLCAgMTY5NywgIDE3MDMsICAxNzEwLAorICAgIDE3
MjUsICAxNzI5LCAgMTczMywgIDE3MzQsICAxNzQwLCAgMTc0MSwgIDE3NDIsICAxNzQzLCAgMTc0
NCwgIDE3NDgsCisgICAgMTc0OSwgIDE3NDksICAxNzQ5LCAgMTc1OSwgIDE3NjAsICAxNzY0LCAg
MTc2NCwgIDE3NjUsICAxNzY1LCAgMTc3MCwKKyAgICAxNzczLCAgMTc4MywgIDE3ODYsICAxNzky
LCAgMTc5MywgIDE3OTcsICAxODA1LCAgMTgwOSwgIDE4MTksICAxODI0LAorICAgIDE4NDEsICAx
ODQxLCAgMTg0NiwgIDE4NDYsICAxODUzLCAgMTg1MywgIDE4NjEsICAxODY0LCAgMTg3MCwgIDE4
NzMsCisgICAgMTg3OSwgIDE4ODMsICAxODkwLCAgMTg5NywgIDE5MDQsICAxOTExLCAgMTkyMiwg
IDE5MzEsICAxOTM1LCAgMTk0MiwKKyAgICAxOTQ1LCAgMTk1MSwgIDE5NTEKIH07CiAjZW5kaWYK
IAotI2lmIFlZREVCVUcgfHwgWVlFUlJPUl9WRVJCT1NFIHx8IFlZVE9LRU5fVEFCTEUKKyNpZiBZ
WURFQlVHIHx8IFlZRVJST1JfVkVSQk9TRSB8fCAwCiAvKiBZWVROQU1FW1NZTUJPTC1OVU1dIC0t
IFN0cmluZyBuYW1lIG9mIHRoZSBzeW1ib2wgU1lNQk9MLU5VTS4KICAgIEZpcnN0LCB0aGUgdGVy
bWluYWxzLCB0aGVuLCBzdGFydGluZyBhdCBZWU5UT0tFTlMsIG5vbnRlcm1pbmFscy4gICovCiBz
dGF0aWMgY29uc3QgY2hhciAqY29uc3QgeXl0bmFtZVtdID0KQEAgLTc4OCwxNSArNzUwLDE1IEBA
IHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCB5eXRuYW1lW10gPQogICAiTUFUUklYMyIsICJNQVRS
SVg0IiwgIklOX1FVQUwiLCAiT1VUX1FVQUwiLCAiSU5PVVRfUVVBTCIsICJVTklGT1JNIiwKICAg
IlZBUllJTkciLCAiU1RSVUNUIiwgIlZPSURfVFlQRSIsICJXSElMRSIsICJTQU1QTEVSMkQiLCAi
U0FNUExFUkNVQkUiLAogICAiU0FNUExFUl9FWFRFUk5BTF9PRVMiLCAiU0FNUExFUjJEUkVDVCIs
ICJJREVOVElGSUVSIiwgIlRZUEVfTkFNRSIsCi0gICJGTE9BVENPTlNUQU5UIiwgIklOVENPTlNU
QU5UIiwgIkJPT0xDT05TVEFOVCIsICJGSUVMRF9TRUxFQ1RJT04iLAotICAiTEVGVF9PUCIsICJS
SUdIVF9PUCIsICJJTkNfT1AiLCAiREVDX09QIiwgIkxFX09QIiwgIkdFX09QIiwgIkVRX09QIiwK
LSAgIk5FX09QIiwgIkFORF9PUCIsICJPUl9PUCIsICJYT1JfT1AiLCAiTVVMX0FTU0lHTiIsICJE
SVZfQVNTSUdOIiwKLSAgIkFERF9BU1NJR04iLCAiTU9EX0FTU0lHTiIsICJMRUZUX0FTU0lHTiIs
ICJSSUdIVF9BU1NJR04iLCAiQU5EX0FTU0lHTiIsCi0gICJYT1JfQVNTSUdOIiwgIk9SX0FTU0lH
TiIsICJTVUJfQVNTSUdOIiwgIkxFRlRfUEFSRU4iLCAiUklHSFRfUEFSRU4iLAotICAiTEVGVF9C
UkFDS0VUIiwgIlJJR0hUX0JSQUNLRVQiLCAiTEVGVF9CUkFDRSIsICJSSUdIVF9CUkFDRSIsICJE
T1QiLAotICAiQ09NTUEiLCAiQ09MT04iLCAiRVFVQUwiLCAiU0VNSUNPTE9OIiwgIkJBTkciLCAi
REFTSCIsICJUSUxERSIsICJQTFVTIiwKLSAgIlNUQVIiLCAiU0xBU0giLCAiUEVSQ0VOVCIsICJM
RUZUX0FOR0xFIiwgIlJJR0hUX0FOR0xFIiwgIlZFUlRJQ0FMX0JBUiIsCi0gICJDQVJFVCIsICJB
TVBFUlNBTkQiLCAiUVVFU1RJT04iLCAiJGFjY2VwdCIsICJ2YXJpYWJsZV9pZGVudGlmaWVyIiwK
KyAgIkZMT0FUQ09OU1RBTlQiLCAiSU5UQ09OU1RBTlQiLCAiQk9PTENPTlNUQU5UIiwgIkxFRlRf
T1AiLCAiUklHSFRfT1AiLAorICAiSU5DX09QIiwgIkRFQ19PUCIsICJMRV9PUCIsICJHRV9PUCIs
ICJFUV9PUCIsICJORV9PUCIsICJBTkRfT1AiLAorICAiT1JfT1AiLCAiWE9SX09QIiwgIk1VTF9B
U1NJR04iLCAiRElWX0FTU0lHTiIsICJBRERfQVNTSUdOIiwKKyAgIk1PRF9BU1NJR04iLCAiTEVG
VF9BU1NJR04iLCAiUklHSFRfQVNTSUdOIiwgIkFORF9BU1NJR04iLCAiWE9SX0FTU0lHTiIsCisg
ICJPUl9BU1NJR04iLCAiU1VCX0FTU0lHTiIsICJMRUZUX1BBUkVOIiwgIlJJR0hUX1BBUkVOIiwg
IkxFRlRfQlJBQ0tFVCIsCisgICJSSUdIVF9CUkFDS0VUIiwgIkxFRlRfQlJBQ0UiLCAiUklHSFRf
QlJBQ0UiLCAiRE9UIiwgIkNPTU1BIiwgIkNPTE9OIiwKKyAgIkVRVUFMIiwgIlNFTUlDT0xPTiIs
ICJCQU5HIiwgIkRBU0giLCAiVElMREUiLCAiUExVUyIsICJTVEFSIiwgIlNMQVNIIiwKKyAgIlBF
UkNFTlQiLCAiTEVGVF9BTkdMRSIsICJSSUdIVF9BTkdMRSIsICJWRVJUSUNBTF9CQVIiLCAiQ0FS
RVQiLAorICAiQU1QRVJTQU5EIiwgIlFVRVNUSU9OIiwgIiRhY2NlcHQiLCAiaWRlbnRpZmllciIs
ICJ2YXJpYWJsZV9pZGVudGlmaWVyIiwKICAgInByaW1hcnlfZXhwcmVzc2lvbiIsICJwb3N0Zml4
X2V4cHJlc3Npb24iLCAiaW50ZWdlcl9leHByZXNzaW9uIiwKICAgImZ1bmN0aW9uX2NhbGwiLCAi
ZnVuY3Rpb25fY2FsbF9vcl9tZXRob2QiLCAiZnVuY3Rpb25fY2FsbF9nZW5lcmljIiwKICAgImZ1
bmN0aW9uX2NhbGxfaGVhZGVyX25vX3BhcmFtZXRlcnMiLApAQCAtODE1LDE2ICs3NzcsMTYgQEAg
c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHl5dG5hbWVbXSA9CiAgICJpbml0X2RlY2xhcmF0b3Jf
bGlzdCIsICJzaW5nbGVfZGVjbGFyYXRpb24iLCAiZnVsbHlfc3BlY2lmaWVkX3R5cGUiLAogICAi
dHlwZV9xdWFsaWZpZXIiLCAidHlwZV9zcGVjaWZpZXIiLCAicHJlY2lzaW9uX3F1YWxpZmllciIs
CiAgICJ0eXBlX3NwZWNpZmllcl9ub19wcmVjIiwgInR5cGVfc3BlY2lmaWVyX25vbmFycmF5Iiwg
InN0cnVjdF9zcGVjaWZpZXIiLAotICAiQDEiLCAiQDIiLCAic3RydWN0X2RlY2xhcmF0aW9uX2xp
c3QiLCAic3RydWN0X2RlY2xhcmF0aW9uIiwKKyAgIiRAMSIsICIkQDIiLCAic3RydWN0X2RlY2xh
cmF0aW9uX2xpc3QiLCAic3RydWN0X2RlY2xhcmF0aW9uIiwKICAgInN0cnVjdF9kZWNsYXJhdG9y
X2xpc3QiLCAic3RydWN0X2RlY2xhcmF0b3IiLCAiaW5pdGlhbGl6ZXIiLAogICAiZGVjbGFyYXRp
b25fc3RhdGVtZW50IiwgInN0YXRlbWVudCIsICJzaW1wbGVfc3RhdGVtZW50IiwKLSAgImNvbXBv
dW5kX3N0YXRlbWVudCIsICJAMyIsICJANCIsICJzdGF0ZW1lbnRfbm9fbmV3X3Njb3BlIiwKLSAg
InN0YXRlbWVudF93aXRoX3Njb3BlIiwgIkA1IiwgIkA2IiwgImNvbXBvdW5kX3N0YXRlbWVudF9u
b19uZXdfc2NvcGUiLAorICAiY29tcG91bmRfc3RhdGVtZW50IiwgIiRAMyIsICIkQDQiLCAic3Rh
dGVtZW50X25vX25ld19zY29wZSIsCisgICJzdGF0ZW1lbnRfd2l0aF9zY29wZSIsICIkQDUiLCAi
JEA2IiwgImNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUiLAogICAic3RhdGVtZW50X2xp
c3QiLCAiZXhwcmVzc2lvbl9zdGF0ZW1lbnQiLCAic2VsZWN0aW9uX3N0YXRlbWVudCIsCi0gICJz
ZWxlY3Rpb25fcmVzdF9zdGF0ZW1lbnQiLCAiY29uZGl0aW9uIiwgIml0ZXJhdGlvbl9zdGF0ZW1l
bnQiLCAiQDciLAotICAiQDgiLCAiQDkiLCAiZm9yX2luaXRfc3RhdGVtZW50IiwgImNvbmRpdGlv
bm9wdCIsICJmb3JfcmVzdF9zdGF0ZW1lbnQiLAorICAic2VsZWN0aW9uX3Jlc3Rfc3RhdGVtZW50
IiwgImNvbmRpdGlvbiIsICJpdGVyYXRpb25fc3RhdGVtZW50IiwgIiRANyIsCisgICIkQDgiLCAi
JEA5IiwgImZvcl9pbml0X3N0YXRlbWVudCIsICJjb25kaXRpb25vcHQiLCAiZm9yX3Jlc3Rfc3Rh
dGVtZW50IiwKICAgImp1bXBfc3RhdGVtZW50IiwgInRyYW5zbGF0aW9uX3VuaXQiLCAiZXh0ZXJu
YWxfZGVjbGFyYXRpb24iLAotICAiZnVuY3Rpb25fZGVmaW5pdGlvbiIsICJAMTAiLCAwCisgICJm
dW5jdGlvbl9kZWZpbml0aW9uIiwgIiRAMTAiLCBZWV9OVUxMCiB9OwogI2VuZGlmCiAKQEAgLTg0
Miw0NjEgKzgwNCw0ODIgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXl0b2tudW1bXSA9
CiAgICAgIDMxNSwgICAzMTYsICAgMzE3LCAgIDMxOCwgICAzMTksICAgMzIwLCAgIDMyMSwgICAz
MjIsICAgMzIzLCAgIDMyNCwKICAgICAgMzI1LCAgIDMyNiwgICAzMjcsICAgMzI4LCAgIDMyOSwg
ICAzMzAsICAgMzMxLCAgIDMzMiwgICAzMzMsICAgMzM0LAogICAgICAzMzUsICAgMzM2LCAgIDMz
NywgICAzMzgsICAgMzM5LCAgIDM0MCwgICAzNDEsICAgMzQyLCAgIDM0MywgICAzNDQsCi0gICAg
IDM0NSwgICAzNDYsICAgMzQ3LCAgIDM0OCwgICAzNDksICAgMzUwCisgICAgIDM0NSwgICAzNDYs
ICAgMzQ3LCAgIDM0OCwgICAzNDkKIH07CiAjIGVuZGlmCiAKIC8qIFlZUjFbWVlOXSAtLSBTeW1i
b2wgbnVtYmVyIG9mIHN5bWJvbCB0aGF0IHJ1bGUgWVlOIGRlcml2ZXMuICAqLwogc3RhdGljIGNv
bnN0IHl5dHlwZV91aW50OCB5eXIxW10gPQogewotICAgICAgIDAsICAgIDk2LCAgICA5NywgICAg
OTgsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk4LCAgICA5OSwgICAgOTksCi0gICAgICA5OSwg
ICAgOTksICAgIDk5LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAxMDIsICAgMTAzLCAg
IDEwMywKLSAgICAgMTA0LCAgIDEwNCwgICAxMDUsICAgMTA1LCAgIDEwNiwgICAxMDcsICAgMTA3
LCAgIDEwNywgICAxMDgsICAgMTA4LAotICAgICAxMDgsICAgMTA4LCAgIDEwOSwgICAxMDksICAg
MTA5LCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMSwgICAxMTEsCi0gICAgIDExMSwgICAxMTIs
ICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTQsICAgMTE0LCAgIDExNCwK
LSAgICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgIDExOCwgICAxMTksICAgMTE5LCAgIDEy
MCwgICAxMjAsICAgMTIxLAotICAgICAxMjEsICAgMTIyLCAgIDEyMiwgICAxMjMsICAgMTIzLCAg
IDEyMywgICAxMjMsICAgMTIzLCAgIDEyNCwgICAxMjQsCi0gICAgIDEyNSwgICAxMjYsICAgMTI2
LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOCwgICAxMjksICAgMTI5LCAgIDEzMCwKLSAgICAg
MTMxLCAgIDEzMSwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzIsICAgMTMzLCAgIDEzMywgICAx
MzMsICAgMTMzLAotICAgICAxMzQsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM1LCAgIDEzNSwg
ICAxMzYsICAgMTM2LCAgIDEzNiwgICAxMzYsCi0gICAgIDEzNiwgICAxMzYsICAgMTM3LCAgIDEz
NywgICAxMzgsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEzOSwKLSAgICAgMTM5LCAg
IDE0MCwgICAxNDAsICAgMTQwLCAgIDE0MSwgICAxNDEsICAgMTQyLCAgIDE0MiwgICAxNDIsICAg
MTQyLAorICAgICAgIDAsICAgIDk1LCAgICA5NiwgICAgOTYsICAgIDk3LCAgICA5OCwgICAgOTgs
ICAgIDk4LCAgICA5OCwgICAgOTgsCisgICAgICA5OSwgICAgOTksICAgIDk5LCAgICA5OSwgICAg
OTksICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMiwKKyAgICAgMTAzLCAgIDEwMywg
ICAxMDQsICAgMTA0LCAgIDEwNSwgICAxMDUsICAgMTA2LCAgIDEwNywgICAxMDcsICAgMTA4LAor
ICAgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDksICAgMTA5LCAgIDEwOSwgICAxMTAsICAgMTEw
LCAgIDExMCwgICAxMTEsCisgICAgIDExMSwgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTMsICAg
MTEzLCAgIDExMywgICAxMTMsICAgMTE0LCAgIDExNCwKKyAgICAgMTE0LCAgIDExNSwgICAxMTYs
ICAgMTE3LCAgIDExOCwgICAxMTgsICAgMTE5LCAgIDExOSwgICAxMjAsICAgMTIwLAorICAgICAx
MjEsICAgMTIxLCAgIDEyMiwgICAxMjIsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTIzLCAgIDEy
MywgICAxMjQsCisgICAgIDEyNCwgICAxMjUsICAgMTI2LCAgIDEyNiwgICAxMjYsICAgMTI3LCAg
IDEyOCwgICAxMjgsICAgMTI5LCAgIDEyOSwKKyAgICAgMTMwLCAgIDEzMSwgICAxMzEsICAgMTMy
LCAgIDEzMiwgICAxMzIsICAgMTMyLCAgIDEzMywgICAxMzMsICAgMTMzLAorICAgICAxMzMsICAg
MTM0LCAgIDEzNSwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM2LCAgIDEzNiwgICAx
MzYsCisgICAgIDEzNiwgICAxMzYsICAgMTM2LCAgIDEzNywgICAxMzcsICAgMTM4LCAgIDEzOCwg
ICAxMzgsICAgMTM4LCAgIDEzOCwKKyAgICAgMTM5LCAgIDEzOSwgICAxNDAsICAgMTQwLCAgIDE0
MCwgICAxNDEsICAgMTQxLCAgIDE0MiwgICAxNDIsICAgMTQyLAogICAgICAxNDIsICAgMTQyLCAg
IDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsCi0g
ICAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIs
ICAgMTQ0LCAgIDE0MywKLSAgICAgMTQ1LCAgIDE0MywgICAxNDYsICAgMTQ2LCAgIDE0NywgICAx
NDgsICAgMTQ4LCAgIDE0OSwgICAxNDksICAgMTUwLAotICAgICAxNTEsICAgMTUyLCAgIDE1Miwg
ICAxNTMsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1NCwgICAxNTUsCi0gICAgIDE1
NiwgICAxNTQsICAgMTU3LCAgIDE1NywgICAxNTksICAgMTU4LCAgIDE2MCwgICAxNTgsICAgMTYx
LCAgIDE2MSwKLSAgICAgMTYyLCAgIDE2MiwgICAxNjMsICAgMTYzLCAgIDE2NCwgICAxNjUsICAg
MTY1LCAgIDE2NiwgICAxNjYsICAgMTY4LAotICAgICAxNjcsICAgMTY5LCAgIDE2NywgICAxNzAs
ICAgMTY3LCAgIDE3MSwgICAxNzEsICAgMTcyLCAgIDE3MiwgICAxNzMsCi0gICAgIDE3MywgICAx
NzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NSwgICAxNzUsICAgMTc2LCAgIDE3
NiwKLSAgICAgMTc4LCAgIDE3NworICAgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQy
LCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDQsCisgICAgIDE0MywgICAxNDUsICAg
MTQzLCAgIDE0NiwgICAxNDYsICAgMTQ3LCAgIDE0OCwgICAxNDgsICAgMTQ5LCAgIDE0OSwKKyAg
ICAgMTUwLCAgIDE1MSwgICAxNTIsICAgMTUyLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1Mywg
ICAxNTMsICAgMTU0LAorICAgICAxNTUsICAgMTU2LCAgIDE1NCwgICAxNTcsICAgMTU3LCAgIDE1
OSwgICAxNTgsICAgMTYwLCAgIDE1OCwgICAxNjEsCisgICAgIDE2MSwgICAxNjIsICAgMTYyLCAg
IDE2MywgICAxNjMsICAgMTY0LCAgIDE2NSwgICAxNjUsICAgMTY2LCAgIDE2NiwKKyAgICAgMTY4
LCAgIDE2NywgICAxNjksICAgMTY3LCAgIDE3MCwgICAxNjcsICAgMTcxLCAgIDE3MSwgICAxNzIs
ICAgMTcyLAorICAgICAxNzMsICAgMTczLCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAx
NzQsICAgMTc1LCAgIDE3NSwgICAxNzYsCisgICAgIDE3NiwgICAxNzgsICAgMTc3CiB9OwogCiAv
KiBZWVIyW1lZTl0gLS0gTnVtYmVyIG9mIHN5bWJvbHMgY29tcG9zaW5nIHJpZ2h0IGhhbmQgc2lk
ZSBvZiBydWxlIFlZTi4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjJbXSA9CiB7
Ci0gICAgICAgMCwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDMsICAgICAxLCAgICAgNCwKLSAgICAgICAxLCAgICAgMywgICAgIDIsICAgICAyLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMywgICAgIDIsICAgICAyLAotICAgICAgIDIsICAgICAxLCAgICAg
MiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsCi0gICAg
ICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDMsICAg
ICAxLCAgICAgMywKLSAgICAgICAzLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAgIDMs
ICAgICAzLCAgICAgMSwgICAgIDMsICAgICAzLAotICAgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsCi0gICAgICAgNSwg
ICAgIDEsICAgICAzLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMywKLSAgICAgICAxLCAgICAgMiwgICAgIDIsICAgICA0LCAgICAgMiwgICAgIDEsICAgICAx
LCAgICAgMiwgICAgIDMsICAgICAzLAotICAgICAgIDIsICAgICA1LCAgICAgMywgICAgIDIsICAg
ICAzLCAgICAgMiwgICAgIDAsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAgICAgMSwgICAgIDEs
ICAgICAzLCAgICAgNSwgICAgIDYsICAgICA1LCAgICAgMSwgICAgIDIsICAgICA0LCAgICAgNSwK
LSAgICAgICA0LCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MiwgICAgIDEsICAgICAxLAotICAgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgNCwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCisgICAgICAgMCwgICAgIDIsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywKKyAgICAg
ICAxLCAgICAgNCwgICAgIDEsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAzLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMywg
ICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMSwKKyAgICAgICAzLCAg
ICAgMywgICAgIDEsICAgICAxLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDEsICAg
ICAzLAorICAgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDEs
ICAgICAzLCAgICAgMSwgICAgIDMsCisgICAgICAgMSwgICAgIDUsICAgICAxLCAgICAgMywgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAzLCAgICAgMSwg
ICAgIDIsICAgICAyLCAgICAgNCwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAzLAor
ICAgICAgIDMsICAgICAyLCAgICAgNSwgICAgIDMsICAgICAyLCAgICAgMywgICAgIDIsICAgICAw
LCAgICAgMSwgICAgIDEsCisgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDUsICAg
ICA2LCAgICAgNSwgICAgIDEsICAgICAyLCAgICAgNCwKKyAgICAgICA1LCAgICAgNCwgICAgIDIs
ICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAxLAorICAgICAg
IDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDQsICAgICAxLCAgICAg
MSwgICAgIDEsCiAgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKLSAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDAsICAgICA2LAotICAgICAgIDAsICAg
ICA1LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgNCwgICAg
IDEsCi0gICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAyLCAgICAgMCwKLSAgICAgICAwLCAgICAgNSwgICAgIDEsICAgICAxLCAgICAg
MCwgICAgIDIsICAgICAwLCAgICAgMiwgICAgIDIsICAgICAzLAotICAgICAgIDEsICAgICAyLCAg
ICAgMSwgICAgIDIsICAgICA1LCAgICAgMywgICAgIDEsICAgICAxLCAgICAgNCwgICAgIDAsCi0g
ICAgICAgNiwgICAgIDAsICAgICA4LCAgICAgMCwgICAgIDcsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAwLCAgICAgMiwKLSAgICAgICAzLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMywgICAg
IDIsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLAotICAgICAgIDAsICAgICAzCisgICAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMCwKKyAgICAgICA2LCAgICAgMCwgICAgIDUsICAgICAxLCAgICAgMiwgICAgIDMsICAg
ICAxLCAgICAgMywgICAgIDEsICAgICA0LAorICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsCisgICAgICAgMCwgICAg
IDAsICAgICA1LCAgICAgMSwgICAgIDEsICAgICAwLCAgICAgMiwgICAgIDAsICAgICAyLCAgICAg
MiwKKyAgICAgICAzLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDUsICAgICAzLCAg
ICAgMSwgICAgIDEsICAgICA0LAorICAgICAgIDAsICAgICA2LCAgICAgMCwgICAgIDgsICAgICAw
LCAgICAgNywgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDAsCisgICAgICAgMiwgICAgIDMsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwKKyAg
ICAgICAxLCAgICAgMCwgICAgIDMKIH07CiAKLS8qIFlZREVGQUNUW1NUQVRFLU5BTUVdIC0tIERl
ZmF1bHQgcnVsZSB0byByZWR1Y2Ugd2l0aCBpbiBzdGF0ZQotICAgU1RBVEUtTlVNIHdoZW4gWVlU
QUJMRSBkb2Vzbid0IHNwZWNpZnkgc29tZXRoaW5nIGVsc2UgdG8gZG8uICBaZXJvCisvKiBZWURF
RkFDVFtTVEFURS1OQU1FXSAtLSBEZWZhdWx0IHJlZHVjdGlvbiBudW1iZXIgaW4gc3RhdGUgU1RB
VEUtTlVNLgorICAgUGVyZm9ybWVkIHdoZW4gWVlUQUJMRSBkb2Vzbid0IHNwZWNpZnkgc29tZXRo
aW5nIGVsc2UgdG8gZG8uICBaZXJvCiAgICBtZWFucyB0aGUgZGVmYXVsdCBpcyBhbiBlcnJvci4g
ICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5ZGVmYWN0W10gPQogewotICAgICAgIDAs
ICAgICAwLCAgIDExMSwgICAxMTIsICAgMTEzLCAgICAgMCwgICAxMDUsICAgMTA0LCAgIDExOSwg
ICAxMTcsCi0gICAgIDExOCwgICAxMjMsICAgMTI0LCAgIDEyNSwgICAxMjYsICAgMTI3LCAgIDEy
OCwgICAxMjAsICAgMTIxLCAgIDEyMiwKLSAgICAgMTI5LCAgIDEzMCwgICAxMzEsICAgMTA4LCAg
IDEwNiwgICAgIDAsICAgMTE2LCAgIDEzMiwgICAxMzMsICAgMTM0LAotICAgICAxMzUsICAgMTM3
LCAgIDE5OSwgICAyMDAsICAgICAwLCAgICA3NiwgICAgODYsICAgICAwLCAgICA5MSwgICAgOTYs
Ci0gICAgICAgMCwgICAxMDIsICAgICAwLCAgIDEwOSwgICAxMTQsICAgMTM2LCAgICAgMCwgICAx
OTYsICAgMTk4LCAgIDEwNywKLSAgICAgMTAxLCAgICAgMCwgICAgIDAsICAgMTQwLCAgICA3MSwg
ICAgIDAsICAgIDc0LCAgICA4NiwgICAgIDAsICAgIDg3LAotICAgICAgODgsICAgIDg5LCAgICA3
NywgICAgIDAsICAgIDg2LCAgICAgMCwgICAgNzIsICAgIDk3LCAgIDEwMywgICAxMTAsCi0gICAg
ICAgMCwgICAgIDEsICAgMTk3LCAgICAgMCwgICAxMzgsICAgICAwLCAgICAgMCwgICAyMDEsICAg
IDc4LCAgICA4MywKLSAgICAgIDg1LCAgICA5MCwgICAgIDAsICAgIDkyLCAgICA3OSwgICAgIDAs
ICAgICAwLCAgICAgMiwgICAgIDUsICAgICA0LAotICAgICAgIDYsICAgIDI3LCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAzNCwgICAgMzMsICAgIDMyLCAgICAgMywgICAgIDgsCi0gICAgICAyOCwg
ICAgMTAsICAgIDE1LCAgICAxNiwgICAgIDAsICAgICAwLCAgICAyMSwgICAgIDAsICAgIDM1LCAg
ICAgMCwKLSAgICAgIDM4LCAgICA0MSwgICAgNDIsICAgIDQ3LCAgICA1MCwgICAgNTEsICAgIDUy
LCAgICA1MywgICAgNTUsICAgIDU3LAotICAgICAgNTksICAgIDcwLCAgICAgMCwgICAgMjUsICAg
IDczLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MiwgICAgIDAsCi0gICAgICAgMCwgICAxODEs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTksICAgMTY4LCAgIDE3MiwK
LSAgICAgIDM1LCAgICA2MSwgICAgNjgsICAgICAwLCAgIDE1MCwgICAgIDAsICAgMTE0LCAgIDE1
MywgICAxNzAsICAgMTUyLAotICAgICAxNTEsICAgICAwLCAgIDE1NCwgICAxNTUsICAgMTU2LCAg
IDE1NywgICAgODAsICAgIDgyLCAgICA4NCwgICAgIDAsCi0gICAgICAgMCwgICAgOTgsICAgICAw
LCAgIDE0OSwgICAxMDAsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDEyLCAgICAxMywKLSAgICAg
ICAwLCAgICAgMCwgICAgMTksICAgIDE4LCAgICAgMCwgICAgMjAsICAgIDIyLCAgICAyNCwgICAg
MzEsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgIDEx
NSwgICAgIDAsICAgMTQ3LCAgICAgMCwgICAxNDUsICAgMTQxLCAgIDE0MywKLSAgICAgMTkyLCAg
IDE5MSwgICAxNjYsICAgMTgzLCAgICAgMCwgICAxOTUsICAgMTkzLCAgICAgMCwgICAxNzksICAg
MTU4LAotICAgICAgIDAsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2MywgICAgIDAs
ICAgICAwLCAgIDE3MywgICAxNjksCi0gICAgIDE3MSwgICAgIDAsICAgIDkzLCAgICAgMCwgICAg
OTUsICAgIDk5LCAgICAgNywgICAgIDAsICAgIDE0LCAgICAyNiwKLSAgICAgIDExLCAgICAxNywg
ICAgMjMsICAgIDM2LCAgICAzNywgICAgNDAsICAgIDM5LCAgICA0NSwgICAgNDYsICAgIDQzLAot
ICAgICAgNDQsICAgIDQ4LCAgICA0OSwgICAgNTQsICAgIDU2LCAgICA1OCwgICAgIDAsICAgMTM5
LCAgICAgMCwgICAgIDAsCi0gICAgIDE0NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE5NCwgICAgIDAsICAgMTYwLCAgICA2MiwKLSAgICAgIDY5LCAgICAgMCwgICAgOTQs
ICAgICA5LCAgICAgMCwgICAgIDAsICAgMTQ2LCAgICAgMCwgICAxNjUsICAgMTY3LAotICAgICAx
ODYsICAgMTg1LCAgIDE4OCwgICAxNjYsICAgMTc3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA4
MSwgICAgNjAsCi0gICAgIDE0OCwgICAgIDAsICAgMTg3LCAgICAgMCwgICAgIDAsICAgMTc2LCAg
IDE3NCwgICAgIDAsICAgICAwLCAgIDE2MSwKLSAgICAgICAwLCAgIDE4OSwgICAgIDAsICAgMTY2
LCAgICAgMCwgICAxNjMsICAgMTgwLCAgIDE2MiwgICAgIDAsICAgMTkwLAotICAgICAxODQsICAg
MTc1LCAgIDE3OCwgICAxODIKKyAgICAgICAwLCAgICAgMCwgICAxMTIsICAgMTEzLCAgIDExNCwg
ICAgIDAsICAgMTA2LCAgIDEwNSwgICAxMjAsICAgMTE4LAorICAgICAxMTksICAgMTI0LCAgIDEy
NSwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjksICAgMTIxLCAgIDEyMiwgICAxMjMsCisgICAg
IDEzMCwgICAxMzEsICAgMTMyLCAgIDEwOSwgICAxMDcsICAgICAwLCAgIDExNywgICAxMzMsICAg
MTM0LCAgIDEzNSwKKyAgICAgMTM2LCAgIDEzOCwgICAyMDAsICAgMjAxLCAgICAgMCwgICAgNzcs
ICAgIDg3LCAgICAgMCwgICAgOTIsICAgIDk3LAorICAgICAgIDAsICAgMTAzLCAgICAgMCwgICAx
MTAsICAgMTE1LCAgIDEzNywgICAgIDAsICAgMTk3LCAgIDE5OSwgICAxMDgsCisgICAgIDEwMiwg
ICAgIDAsICAgICAyLCAgICAgMywgICAxNDEsICAgICAwLCAgICA3MiwgICAgIDAsICAgIDc1LCAg
ICA4NywKKyAgICAgICAwLCAgICA4OCwgICAgODksICAgIDkwLCAgICA3OCwgICAgIDAsICAgIDg3
LCAgICAgMCwgICAgNzMsICAgICAyLAorICAgICAgOTgsICAgMTA0LCAgIDExMSwgICAgIDAsICAg
ICAxLCAgIDE5OCwgICAgIDAsICAgICAwLCAgIDEzOSwgICAgIDAsCisgICAgIDIwMiwgICAgNzks
ICAgIDg0LCAgICA4NiwgICAgOTEsICAgICAwLCAgICA5MywgICAgODAsICAgICAwLCAgICAgMCwK
KyAgICAgICA0LCAgICAgNywgICAgIDYsICAgICA4LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAz
NSwgICAgMzQsICAgIDMzLAorICAgICAgIDUsICAgIDEwLCAgICAyOSwgICAgMTIsICAgIDE3LCAg
ICAxOCwgICAgIDAsICAgICAwLCAgICAyMywgICAgIDAsCisgICAgICAzNiwgICAgIDAsICAgIDM5
LCAgICA0MiwgICAgNDMsICAgIDQ4LCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwKKyAgICAg
IDU2LCAgICA1OCwgICAgNjAsICAgIDcxLCAgICAgMCwgICAgMjcsICAgIDc0LCAgICAgMCwgICAg
IDAsICAgMTQzLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxODIsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAxNjAsCisgICAgIDE2OSwgICAxNzMsICAgIDM2LCAgICA2
MiwgICAgNjksICAgICAwLCAgIDE1MSwgICAgIDAsICAgMTE1LCAgIDE1NCwKKyAgICAgMTcxLCAg
IDE1MywgICAxNTIsICAgICAwLCAgIDE1NSwgICAxNTYsICAgMTU3LCAgIDE1OCwgICAgODEsICAg
IDgzLAorICAgICAgODUsICAgICAwLCAgICAgMCwgICAgOTksICAgICAwLCAgIDE1MCwgICAxMDEs
ICAgIDMwLCAgICAzMSwgICAgIDAsCisgICAgICAxNCwgICAgMTUsICAgICAwLCAgICAgMCwgICAg
MjEsICAgIDIwLCAgICAgMCwgICAgMjIsICAgIDI0LCAgICAyNiwKKyAgICAgIDMyLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDExNiwgICAxNDgsICAgICAw
LCAgIDE0NiwgICAxNDIsCisgICAgIDE0NCwgICAgIDAsICAgMTkzLCAgIDE5MiwgICAxNjcsICAg
MTg0LCAgICAgMCwgICAxOTYsICAgMTk0LCAgICAgMCwKKyAgICAgMTgwLCAgIDE1OSwgICAgIDAs
ICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2NCwgICAgIDAsICAgICAwLAorICAgICAx
NzQsICAgMTcwLCAgIDE3MiwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgOTYsICAgMTAwLCAgICAg
OSwgICAgIDAsCisgICAgICAxNiwgICAgIDIsICAgICAzLCAgICAxMywgICAgMTksICAgIDI1LCAg
ICAzNywgICAgMzgsICAgIDQxLCAgICA0MCwKKyAgICAgIDQ2LCAgICA0NywgICAgNDQsICAgIDQ1
LCAgICA0OSwgICAgNTAsICAgIDU1LCAgICA1NywgICAgNTksICAgICAwLAorICAgICAgIDAsICAg
ICAwLCAgIDE0NSwgICAxNDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAx
OTUsCisgICAgICAgMCwgICAxNjEsICAgIDYzLCAgICA3MCwgICAgIDAsICAgIDk1LCAgICAxMSwg
ICAgIDAsICAgICAwLCAgIDE0NywKKyAgICAgICAwLCAgIDE2NiwgICAxNjgsICAgMTg3LCAgIDE4
NiwgICAxODksICAgMTY3LCAgIDE3OCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgIDgyLCAg
ICA2MSwgICAxNDksICAgICAwLCAgIDE4OCwgICAgIDAsICAgICAwLCAgIDE3NywgICAxNzUsCisg
ICAgICAgMCwgICAgIDAsICAgMTYyLCAgICAgMCwgICAxOTAsICAgICAwLCAgIDE2NywgICAgIDAs
ICAgMTY0LCAgIDE4MSwKKyAgICAgMTYzLCAgICAgMCwgICAxOTEsICAgMTg1LCAgIDE3NiwgICAx
NzksICAgMTgzCiB9OwogCiAvKiBZWURFRkdPVE9bTlRFUk0tTlVNXS4gICovCiBzdGF0aWMgY29u
c3QgeXl0eXBlX2ludDE2IHl5ZGVmZ290b1tdID0KIHsKLSAgICAgIC0xLCAgICA5OCwgICAgOTks
ICAgMTAwLCAgIDIyNywgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LAotICAgICAx
MDYsICAgMTA3LCAgIDE0MCwgICAxMDksICAgMTEwLCAgIDExMSwgICAxMTIsICAgMTEzLCAgIDEx
NCwgICAxMTUsCi0gICAgIDExNiwgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjAsICAgMTQxLCAg
IDE0MiwgICAyMTYsICAgMTQzLCAgIDEyMiwKLSAgICAgMTQ0LCAgIDE0NSwgICAgMzQsICAgIDM1
LCAgICAzNiwgICAgNzksICAgIDYyLCAgICA2MywgICAgODAsICAgIDM3LAotICAgICAgMzgsICAg
IDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAxMjMsICAgIDQ1LCAgIDEyNSwgICAg
NzUsCi0gICAgIDEyNywgICAxMjgsICAgMTk2LCAgIDE5NywgICAxNjQsICAgMTQ3LCAgIDE0OCwg
ICAxNDksICAgMTUwLCAgIDIxMCwKLSAgICAgMjc3LCAgIDI5NiwgICAyNTEsICAgMjUyLCAgIDI1
MywgICAyOTcsICAgMTUxLCAgIDE1MiwgICAxNTMsICAgMjg2LAotICAgICAyNzYsICAgMTU0LCAg
IDI1NywgICAyMDIsICAgMjU0LCAgIDI3MiwgICAyODMsICAgMjg0LCAgIDE1NSwgICAgNDYsCi0g
ICAgICA0NywgICAgNDgsICAgIDU1CisgICAgICAtMSwgICAxOTYsICAgMTAwLCAgIDEwMSwgICAx
MDIsICAgMjI5LCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEwNiwKKyAgICAgMTA3LCAgIDEwOCwg
ICAxMDksICAgMTQyLCAgIDExMSwgICAxMTIsICAgMTEzLCAgIDExNCwgICAxMTUsICAgMTE2LAor
ICAgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjAsICAgMTIxLCAgIDEyMiwgICAxNDMsICAgMTQ0
LCAgIDIxOCwgICAxNDUsCisgICAgIDEyNCwgICAxNDYsICAgMTQ3LCAgICAzNCwgICAgMzUsICAg
IDM2LCAgICA4MiwgICAgNjQsICAgIDY1LCAgICA4MywKKyAgICAgIDM3LCAgICAzOCwgICAgMzks
ICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgIDEyNSwgICAgNDUsICAgMTMwLAorICAgICAg
NzcsICAgMTI4LCAgIDEyOSwgICAxOTcsICAgMTk4LCAgIDE2NiwgICAxNDksICAgMTUwLCAgIDE1
MSwgICAxNTIsCisgICAgIDIxMiwgICAyODAsICAgMjk5LCAgIDI1NCwgICAyNTUsICAgMjU2LCAg
IDMwMCwgICAxNTMsICAgMTU0LCAgIDE1NSwKKyAgICAgMjg5LCAgIDI3OSwgICAxNTYsICAgMjYw
LCAgIDIwNCwgICAyNTcsICAgMjc1LCAgIDI4NiwgICAyODcsICAgMTU3LAorICAgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNTcKIH07CiAKIC8qIFlZUEFDVFtTVEFURS1OVU1dIC0tIEluZGV4IGlu
IFlZVEFCTEUgb2YgdGhlIHBvcnRpb24gZGVzY3JpYmluZwogICAgU1RBVEUtTlVNLiAgKi8KLSNk
ZWZpbmUgWVlQQUNUX05JTkYgLTI2NgorI2RlZmluZSBZWVBBQ1RfTklORiAtMjYxCiBzdGF0aWMg
Y29uc3QgeXl0eXBlX2ludDE2IHl5cGFjdFtdID0KIHsKLSAgICAxMjUzLCAgIC0yMCwgIC0yNjYs
ICAtMjY2LCAgLTI2NiwgICAxNDgsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0y
NjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2
NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgLTM5LCAg
LTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgLTE4
LCAgICAtMiwgICAgIDYsICAgIDIxLCAgIC02MSwgIC0yNjYsICAgIDUxLAotICAgIDEyOTYsICAt
MjY2LCAgMTM3MCwgIC0yNjYsICAgIDI1LCAgLTI2NiwgIDEyMDksICAtMjY2LCAgLTI2NiwgIC0y
NjYsCi0gICAgLTI2NiwgIDEzNzAsICAgIDQyLCAgLTI2NiwgIC0yNjYsICAgIDUwLCAgLTI2Niwg
ICAgNzEsICAgIDk1LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAxMjk2LCAgIDEy
MywgICAxMDUsICAtMjY2LCAgICAgOSwgIC0yNjYsICAtMjY2LAotICAgICA5NzQsICAtMjY2LCAg
LTI2NiwgICAgODEsICAtMjY2LCAgMTI5NiwgICAyOTAsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0g
ICAgLTI2NiwgICAxMjUsICAxMjk2LCAgIC0xMywgIC0yNjYsICAgNzc2LCAgIDk3NCwgICAgOTks
ICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgICA5NzQsICAgOTc0LCAgIDk3NCwgIC0y
NjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgICAgMzUsICAtMjY2LCAgLTI2Niwg
IC0yNjYsICAgMTAwLCAgICAtNiwgIDEwNDAsICAgMTA0LCAgLTI2NiwgICA5NzQsCi0gICAgICAz
NiwgICAtNjQsICAtMjY2LCAgIC0yMSwgICAxMDIsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTEz
LCAgIDExNywKLSAgICAgLTUxLCAgLTI2NiwgICAxMDgsICAtMjY2LCAgLTI2NiwgIDEyOTYsICAg
MTI5LCAgMTEwOSwgIC0yNjYsICAgIDk3LAotICAgICAxMDMsICAtMjY2LCAgIDExMiwgICAxMTQs
ICAgMTA2LCAgIDg0MiwgICAxMTUsICAgMTE2LCAgLTI2NiwgIC0yNjYsCi0gICAgICAzOSwgIC0y
NjYsICAtMjY2LCAgIC00MywgIC0yNjYsICAgLTE4LCAgICA0NywgIC0yNjYsICAtMjY2LCAgLTI2
NiwKLSAgICAtMjY2LCAgIDM3NCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTE4LCAg
LTI2NiwgIC0yNjYsICAgOTA4LAotICAgICA5NzQsICAtMjY2LCAgIDEyMCwgIC0yNjYsICAtMjY2
LCAgLTI2NiwgIC0yNjYsICAgIDE5LCAgLTI2NiwgIC0yNjYsCi0gICAgIDk3NCwgIDEzMzMsICAt
MjY2LCAgLTI2NiwgICA5NzQsICAgMTE5LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDk3NCwKLSAg
ICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwg
ICA5NzQsICAgOTc0LAotICAgICA5NzQsICAgOTc0LCAgIDk3NCwgIC0yNjYsICAxMTUyLCAgIDEy
MiwgICAtMjksICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAgMTIxLCAg
LTI2NiwgICA5NzQsICAtMjY2LCAgLTI2NiwgICAgIDUsICAtMjY2LCAgLTI2NiwKLSAgICAgNDU4
LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgOTc0LCAgIDk3NCwgIC0yNjYs
ICAtMjY2LAotICAgIC0yNjYsICAgOTc0LCAgLTI2NiwgICAxMzcsICAtMjY2LCAgLTI2NiwgIC0y
NjYsICAgMTM4LCAgIDExMSwgIC0yNjYsCi0gICAgIDE0MiwgIC0yNjYsICAtMjY2LCAgLTI2Niwg
IC0yNjYsICAgIDM2LCAgICAzNiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIC0y
MSwgICAtMjEsICAtMjY2LCAgIDExMywgICAxMTcsICAgIDgyLCAgLTI2NiwgICA5NzQsICAgMTI5
LAotICAgIC0yNjYsICAgMTc1LCAgICA1MCwgICA2MjYsICAgNzEwLCAgICAzOCwgIC0yNjYsICAg
MTk3LCAgIDQ1OCwgIC0yNjYsCi0gICAgLTI2NiwgICAxNDEsICAtMjY2LCAgLTI2NiwgICA5NzQs
ICAgMTU1LCAgLTI2NiwgICAxNDUsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgICAx
OTcsICAgMTIxLCAgIDExMSwgICAxODYsICAgMTU5LCAgIDE2MCwgIC0yNjYsICAtMjY2LAotICAg
IC0yNjYsICAgOTc0LCAgLTI2NiwgICAxNjYsICAgMTc2LCAgIDIzNiwgIC0yNjYsICAgMTc0LCAg
IDU0MiwgIC0yNjYsCi0gICAgICA0MywgICA5NzQsICAgNTQyLCAgIDEyMSwgICA5NzQsICAtMjY2
LCAgLTI2NiwgIC0yNjYsICAgMTc3LCAgIDExMSwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAt
MjY2CisgICAgMTMyNywgICAtMjAsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgMTEzLCAgLTI2MSwg
IC0yNjEsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgIC0xOSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisg
ICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIC02MSwgICAtNDAsICAgLTI4LCAgICA3NSwgICAgLTcs
ICAtMjYxLCAgICAyNCwKKyAgICAxMzcwLCAgLTI2MSwgIDE0NDQsICAtMjYxLCAgIC0xMSwgIC0y
NjEsICAxMjgzLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAxNDQ0LCAgLTI2MSwg
IC0yNjEsICAtMjYxLCAgICAgNiwgIC0yNjEsICAgIDU0LCAgLTI2MSwgICAgODgsCisgICAgICA2
MiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAxMzcwLCAgICA1OSwgICAgOTEsICAtMjYx
LCAgICAzNiwKKyAgICAgLTUwLCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgLTI2MSwgIC0yNjEsICAg
IDYzLCAgMTM3MCwgIC0yNjEsICAgMjkzLAorICAgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEs
ICAgIDkxLCAgMTM3MCwgICAtMTIsICAtMjYxLCAgIDg1NiwgIDEwNTEsCisgICAgICA3NywgIC0y
NjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIC0yNjEsICAtMjYxLCAgLTI2
MSwKKyAgICAtMjYxLCAgLTI2MSwgICAtMTQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgIDg0LCAg
IC00NCwgIDExMTYsICAgIDk1LAorICAgIC0yNjEsICAxMDUxLCAgICA1MywgICAgIDMsICAtMjYx
LCAgIC0zNiwgICAgODksICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAgIDEwNCwgICAxMDcsICAg
LTQ1LCAgLTI2MSwgICAgOTYsICAtMjYxLCAgLTI2MSwgICAgOTEsICAxMTg0LCAgLTI2MSwKKyAg
ICAxMzcwLCAgICA5MiwgICAgOTMsICAtMjYxLCAgICA5OCwgICAxMDEsICAgIDk0LCAgIDkyMSwg
ICAxMDUsICAgMTAyLAorICAgIC0yNjEsICAtMjYxLCAgICA3MiwgIC0yNjEsICAtMjYxLCAgICAg
OSwgIC0yNjEsICAgLTYxLCAgICA0MiwgIC0yNjEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAg
IDM3NiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgMTA2LCAgLTI2MSwKKyAgICAtMjYx
LCAgIDk4NiwgIDEwNTEsICAtMjYxLCAgIDEwMywgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEs
ICAgLTQxLAorICAgIC0yNjEsICAtMjYxLCAgMTA1MSwgIDE0MDcsICAtMjYxLCAgLTI2MSwgIDEw
NTEsICAgMTEwLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwg
IDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwKKyAgICAxMDUxLCAgMTA1
MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIC0yNjEsICAgMTA5LCAgICAyMywgIC0yNjEsICAtMjYx
LAorICAgIC0yNjEsICAxMjI3LCAgLTI2MSwgIC0yNjEsICAgMTExLCAgLTI2MSwgIDEwNTEsICAt
MjYxLCAgLTI2MSwgICAgMjUsCisgICAgLTI2MSwgIC0yNjEsICAgNDU5LCAgLTI2MSwgIC0yNjEs
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgMTA1MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0y
NjEsICAxMDUxLCAgLTI2MSwgICAxMTQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgMTE1LAorICAg
ICAxMTIsICAgIDc3LCAgIDExNiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAg
ICA1MywgICAgNTMsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAtMzYsICAgLTM2
LCAgLTI2MSwgICAxMDQsICAgMTA3LCAgICA3NiwKKyAgICAxMDUxLCAgICA5MSwgIC0yNjEsICAt
MjYxLCAgIDE0NSwgICAgNTQsICAgNjI1LCAgIDcwOCwgICAgLTYsICAtMjYxLAorICAgICA3OTEs
ICAgNDU5LCAgLTI2MSwgIC0yNjEsICAgMTE3LCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgIDEyMCwg
IC0yNjEsCisgICAgIDEyNCwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgNzkxLCAgIDEx
MSwgICAxMTIsICAgIDkxLCAgIDEyNSwKKyAgICAgMTIyLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAg
MTA1MSwgIC0yNjEsICAgMTE4LCAgIDEyOCwgICAxODAsICAtMjYxLAorICAgICAxMjYsICAgNTQy
LCAgLTI2MSwgICAgLTUsICAxMDUxLCAgIDU0MiwgICAxMTEsICAxMDUxLCAgLTI2MSwgIC0yNjEs
CisgICAgLTI2MSwgICAxMjMsICAgMTEyLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MQogfTsK
IAogLyogWVlQR09UT1tOVEVSTS1OVU1dLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYg
eXlwZ290b1tdID0KIHsKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0y
NjYsICAtMjY2LCAgICA4NSwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2LCAgIC00NCwg
IC0yNjYsICAgLTE1LCAgLTI2NiwgICAtNTUsICAgLTE5LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2
NiwgICAgNzIsICAgIDcwLCAgICA3MywgIC0yNjYsICAgLTY2LCAgIC04MywgIC0yNjYsICAgLTky
LCAgIC03MywKLSAgICAgIDEzLCAgICAxNCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxODAsICAg
MjA2LCAgIDIwMSwgICAxODQsICAtMjY2LAotICAgIC0yNjYsICAtMjQxLCAgIC0yNSwgICAtMzAs
ICAgMjYyLCAgICAtNCwgICAgIDAsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgIDE0MywgIC0x
MjIsICAtMjY2LCAgICAyMiwgIC0xNDUsICAgIDE2LCAgLTE0NCwgIC0yMjYsICAtMjY2LCAgLTI2
NiwKLSAgICAtMjY2LCAgIC0xNywgIC0yNjUsICAtMjY2LCAgLTI2NiwgICAtNTQsICAgIDYzLCAg
ICAyMCwgIC0yNjYsICAtMjY2LAotICAgICAgIDQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2
LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgIDIzMSwgIC0yNjYsICAt
MjY2CisgICAgLTI2MSwgICAtMjQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwg
IC0yNjEsICAgIDM0LCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgIDMyLCAgLTI2
MSwgICAtMzMsICAtMjYxLCAgIC0yNywgICAtMjYsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAg
ICAxNCwgICAgMTYsICAgIDE4LCAgLTI2MSwgICAtNjYsICAgLTg3LCAgLTI2MSwgICAtOTIsCisg
ICAgIC04NSwgICAgMTEsICAgIDEyLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDE0MSwgICAxNTAs
ICAgMTYxLCAgIDE0MywKKyAgICAtMjYxLCAgLTI2MSwgIC0yMzEsICAgICA1LCAgIC0zMCwgICAy
MjQsICAgLTE4LCAgICAgMCwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAgMTAwLCAgLTExOSwg
IC0yNjEsICAgLTE3LCAgLTE1NiwgICAtMjUsICAtMTQ1LCAgLTI0MywgIC0yNjEsCisgICAgLTI2
MSwgIC0yNjEsICAgLTY0LCAgLTI2MCwgIC0yNjEsICAtMjYxLCAgIC01MiwgICAgMjEsICAgLTIy
LCAgLTI2MSwKKyAgICAtMjYxLCAgIC0zOSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAt
MjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAgMTkxLCAgLTI2MSwgIC0yNjEK
IH07CiAKIC8qIFlZVEFCTEVbWVlQQUNUW1NUQVRFLU5VTV1dLiAgV2hhdCB0byBkbyBpbiBzdGF0
ZSBTVEFURS1OVU0uICBJZgogICAgcG9zaXRpdmUsIHNoaWZ0IHRoYXQgdG9rZW4uICBJZiBuZWdh
dGl2ZSwgcmVkdWNlIHRoZSBydWxlIHdoaWNoCi0gICBudW1iZXIgaXMgdGhlIG9wcG9zaXRlLiAg
SWYgemVybywgZG8gd2hhdCBZWURFRkFDVCBzYXlzLgotICAgSWYgWVlUQUJMRV9OSU5GLCBzeW50
YXggZXJyb3IuICAqLwotI2RlZmluZSBZWVRBQkxFX05JTkYgLTE2NQorICAgbnVtYmVyIGlzIHRo
ZSBvcHBvc2l0ZS4gIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8KKyNkZWZpbmUg
WVlUQUJMRV9OSU5GIC0xNjYKIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXl0YWJsZVtdID0K
IHsKLSAgICAgIDQ0LCAgICA3NywgICAxNjcsICAgMTYzLCAgIDEyMSwgICAxOTksICAgIDUyLCAg
IDIyMCwgICAyODUsICAgMTkxLAotICAgICAgNjgsICAgIDY0LCAgIDE2MiwgICAgMzIsICAgIDMz
LCAgIDIyNCwgICAyNzUsICAgIDQ5LCAgICA2NSwgICAxMjEsCi0gICAgIDE4MSwgICAgNjYsICAg
MTgyLCAgIDE3NiwgICAgNTgsICAgIDUwLCAgIDEwOCwgICAyNjksICAgMzAxLCAgICAgNiwKLSAg
ICAgICA3LCAgIDI3NSwgICAgNjQsICAgIDgxLCAgIDE4MywgICAxODQsICAgMjE3LCAgICA1Mywg
ICAgNjksICAgMjE4LAotICAgICAgNDQsICAgMTA4LCAgICA0NCwgICAyMDcsICAgMTkyLCAgIDEy
NiwgICAgNDQsICAgIDczLCAgIDE2NSwgICAxNjYsCi0gICAgIDI0OSwgICAgNDQsICAgIDgxLCAg
IDI1MCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgMjMsICAgIDI0LCAgICAzMiwKLSAgICAgIDMz
LCAgIDE1OSwgICAyOTUsICAgIDQ0LCAgICA1NCwgICAxNzgsICAgMjk1LCAgIDE3MywgICAxNjAs
ICAgMTg1LAotICAgICAxODYsICAgIDU2LCAgIDE5OSwgICAxNzQsICAgIDU4LCAgICA0NCwgICAx
NDYsICAgMTYzLCAgIDIyOCwgICAgIDYsCi0gICAgICAgNywgICAgODQsICAgIDQ0LCAgICA4NSwg
ICAyMTcsICAgIDU3LCAgIDIyMywgICAyNTYsICAgMTY4LCAgIDE2OSwKLSAgICAgIDg2LCAgIDIz
MiwgICAyMjYsICAgMTIxLCAgIC03NSwgICAxMjYsICAgIDY3LCAgIDEyNiwgICAyMTcsICAgIDcw
LAotICAgICAyNDYsICAgMjExLCAgIDIxMiwgICAyMTMsICAgIDU5LCAgICA2MCwgICAgNjEsICAg
IDIzLCAgICAyNCwgICAxNzAsCi0gICAgIDIxNCwgICAyNzMsICAgMjU1LCAgIDE3MSwgICAyMjAs
ICAgMTA4LCAgIDI5OCwgICAyMTcsICAgIDc0LCAgIC0yNSwKLSAgICAgMjE1LCAgICA3MCwgICAy
MTcsICAgMTc5LCAgIDE4MCwgICAgNDQsICAgIDc2LCAgICA0NCwgICAyMzcsICAgMjM4LAotICAg
ICAyMzksICAgMjQwLCAgICA0OSwgICAyNTksICAgMjYwLCAgIDIzMywgICAyMzQsICAgMTA4LCAg
IDEwOCwgICAxMDgsCi0gICAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4
LCAgIDEwOCwgICAxMDgsICAgMjYxLCAgIDMwMiwKLSAgICAgIDgzLCAgIDE0NiwgICAgIDIsICAg
ICAzLCAgICAgNCwgICAxMjEsICAgIDU5LCAgICA2MCwgICAgNjEsICAgMTg3LAotICAgICAxODgs
ICAgMjE3LCAgIDI2NCwgICAxMjQsICAgMTI2LCAgIDI3NCwgICAyMzUsICAgMjM2LCAgIDI0MSwg
ICAyNDIsCi0gICAgIDE1NiwgICAtMjYsICAgMTg5LCAgIDE3MiwgICAxOTUsICAgMjY1LCAgIDE3
NywgICAxMDgsICAgMTkwLCAgIDIwMCwKLSAgICAgMjc0LCAgIDI3OSwgICAxMjEsICAgMTkzLCAg
IDIwMywgICAyMDEsICAgMjA0LCAgIDIwOCwgICAyMDUsICAgMjkwLAotICAgICAyMTcsICAtMTE2
LCAgIDIyMSwgICAyMDksICAgIDQ0LCAgIDIyNSwgICAyNDgsICAtMTY0LCAgIDI2OCwgICAyOTks
Ci0gICAgICA1OCwgICAgIDIsICAgICAzLCAgICAgNCwgICAxMDgsICAgICA2LCAgICAgNywgICAg
IDgsICAgICA5LCAgICAxMCwKLSAgICAgMTQ2LCAgIDE2MywgICAyNjIsICAgMjYzLCAgIC0yNywg
ICAyNjcsICAgMjc4LCAgIDI4MSwgICAgMTEsICAgIDEyLAotICAgICAgMTMsICAgIDE0LCAgICAx
NSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCi0gICAg
IDI4MCwgICAyODcsICAgMjg4LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAyODksICAg
IDI3LCAgICAyOCwKLSAgICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODks
ICAgIDkwLCAgICA5MSwgICAyOTEsICAgMjkyLAotICAgICAgOTIsICAgIDkzLCAgIDI5MywgICAx
NDYsICAgMTQ2LCAgIDI5NCwgICAyMzEsICAgMTQ2LCAgIDE0NiwgICAzMDMsCi0gICAgIDI0NCwg
ICAyNDMsICAgMTU3LCAgICA3OCwgICAyNDUsICAgIDgyLCAgIDE1OCwgICAgNTEsICAgMTk0LCAg
ICA5NCwKLSAgICAgMjcwLCAgIDI2NiwgICAxNDYsICAgMjU4LCAgIDI3MSwgICAzMDAsICAgMjgy
LCAgICA3MiwgICAgIDAsICAgICAwLAotICAgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0NiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAs
ICAgMTQ2LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywK
LSAgICAgICA4LCAgICAgOSwgICAgMTAsICAgMTI5LCAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEz
MiwgICAxMzMsICAgMTM0LAotICAgICAxMzUsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIy
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAg
MTM2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAg
ODksICAgIDkwLAotICAgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICA0NCwgICAgNTUsICAgMTY1LCAgIDE2
NCwgICAxNjksICAgIDgwLCAgIDIyNiwgICAxMjMsICAgMjIyLCAgIDIwMCwKKyAgICAgIDcxLCAg
ICAzMiwgICAgMzMsICAgMjcyLCAgIDE5MywgICAgNzAsICAgMjg4LCAgICA0OSwgICAxODUsICAg
MTg2LAorICAgICAgNTYsICAgMTc4LCAgIDEyMywgICAgODgsICAgIDcyLCAgICA1MCwgICAgNTIs
ICAgIDUzLCAgIDE3NSwgICAyNzgsCisgICAgICA4OSwgICAyMjgsICAgIDU4LCAgICA3NiwgICAx
NzYsICAgIDg0LCAgIDMwNCwgICAyMTksICAgMTcwLCAgIDE3MSwKKyAgICAgIDQ0LCAgICA2Niwg
ICAgNDQsICAgIDg2LCAgIDI3OCwgICAyMDksICAgIDQ0LCAgIDEyNywgICAyOTgsICAgMTk0LAor
ICAgICAgNTksICAgIDQ0LCAgIDI5OCwgICAxODcsICAgMTg4LCAgICA4NCwgICAgNTQsICAgIDMy
LCAgICAzMywgICAxNzIsCisgICAgIDE1OCwgICAxNjEsICAgIDczLCAgIDE3MywgICAgNjYsICAg
IDQ0LCAgIDI3NiwgICAzMDEsICAgMTYyLCAgICA2OSwKKyAgICAgIDUzLCAgICA2NywgICAyMTks
ICAgMjE5LCAgICA2OCwgICAxNjUsICAgMjI1LCAgICA0NCwgICAgNjAsICAgMTQ4LAorICAgICAy
MzAsICAgIDc4LCAgIDIwMCwgICAgIDYsICAgICA3LCAgICA0NCwgICAxODMsICAgMjE5LCAgIDE4
NCwgICAyMzUsCisgICAgIDIyMCwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgMTIzLCAg
ICAgNiwgICAgIDcsICAgMTI3LCAgICA0OSwKKyAgICAgMTI3LCAgIDI1MSwgICAyNDksICAgMjE5
LCAgIDI1MiwgICAxMTAsICAgMjU5LCAgICA4NywgICAgNjEsICAgIDYyLAorICAgICAgNjMsICAg
IDIzLCAgICAyNCwgICAtMjcsICAgMjU4LCAgICA3MywgICAyMjIsICAgICAyLCAgICAgMywgICAg
IDQsCisgICAgIDExMCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgMjMsICAgIDI0LCAgIDE2Nywg
ICAxNjgsICAgIDQ0LCAgICA3OSwKKyAgICAgIDQ0LCAgIDI2MiwgICAyNjMsICAgMjEzLCAgIDIx
NCwgICAyMTUsICAgIDUyLCAgICA1MywgICAyNjQsICAgMTgxLAorICAgICAxODIsICAgMzA1LCAg
IDIxNiwgICAxODAsICAgMTI2LCAgIDE4OSwgICAxOTAsICAgLTc2LCAgIC0yOCwgICAyMzMsCisg
ICAgIDIzOCwgICAyMzksICAgMjE3LCAgIDE0OCwgICAyMTksICAgMjY3LCAgIDE3NCwgICAxMjMs
ICAgMjQwLCAgIDI0MSwKKyAgICAgMjQyLCAgIDI0MywgICAxOTEsICAgMjQ0LCAgIDI0NSwgICAy
NjgsICAgMTc5LCAgIDE5MiwgICAyNzcsICAgMjA1LAorICAgICAxOTUsICAgMTI3LCAgIDIwNiwg
ICAyMDIsICAgMjAzLCAgIDIwNywgICAyMTAsICAgMjI3LCAgIDIxMSwgICAyMjMsCisgICAgIDI4
MiwgIC0xMTcsICAgMjUwLCAgIDI3NywgICAxMjMsICAgMjcwLCAgLTE2NSwgIC0xMzgsICAgMjY1
LCAgIDI2NiwKKyAgICAgMjE5LCAgIDI4MSwgICAyOTMsICAgMTEwLCAgIDI4MywgICAyODQsICAg
Mjk2LCAgIDI5MSwgICAyOTIsICAgMjk0LAorICAgICAyOTUsICAgIDQ0LCAgIDMwMiwgICAyNzEs
ICAgMzA2LCAgIDI0NiwgICAyOTcsICAgMjM0LCAgIDI0NywgICAgODEsCisgICAgIDE2NSwgICAy
NDgsICAgMTQ4LCAgIDIzNiwgICAyMzcsICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDEx
MCwKKyAgICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTU5LCAg
ICA4NSwgICAxNjAsICAgIDUxLAorICAgICAyMDEsICAgMzAzLCAgIDI3MywgICAyNjEsICAgMjY5
LCAgIDI3NCwgICAyODUsICAgIDc1LCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM3LCAgIDEzOCwg
ICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAg
MCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsCi0gICAgICAgNCwgICAgIDUsICAgICA2LCAg
ICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMjksICAgMTMwLCAgIDEzMSwKLSAgICAgICAw
LCAgIDEzMiwgICAxMzMsICAgMTM0LCAgIDEzNSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LAotICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAxMzYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywKLSAgICAgIDMxLCAgICA4
OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAw
LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjkwLCAgIDExMCwgICAxNDgsICAg
MTQ4LCAgICAgMCwgICAgIDAsCisgICAgIDE0OCwgICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAg
ICAgIDAsICAgICAwLCAgIDExMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMCwgICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ4
LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKKyAgICAgICA1LCAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgMTMxLCAgIDEzMiwgICAxMzMsICAgICAwLAorICAgICAxMzQs
ICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwg
ICAgMTYsCisgICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAyMywKKyAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM4LCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLAorICAgICAgOTEsICAgIDky
LCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAs
CiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAxMzcsICAgMjE5LCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsCi0gICAg
ICA5NywgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwKLSAgICAgIDEwLCAgIDEyOSwgICAxMzAsICAgMTMxLCAgICAgMCwgICAxMzIs
ICAgMTMzLCAgIDEzNCwgICAxMzUsICAgIDExLAotICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAg
MTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM2LCAg
ICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5
LCAgICA5MCwgICAgOTEsICAgICAwLAotICAgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0MCwK
KyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgOTcsICAgIDk4LCAgICAg
MCwgICAgOTksICAgICAxLAorICAgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAg
ICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEsCisgICAgIDEzMiwgICAxMzMsICAgICAw
LCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAg
IDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjksCisgICAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5
MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwKKyAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDk2LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAxMzksICAgMjIxLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5OCwKKyAgICAgICAwLCAgICA5OSwg
ICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LAor
ICAgICAgIDksICAgIDEwLCAgIDEzMSwgICAxMzIsICAgMTMzLCAgICAgMCwgICAxMzQsICAgMTM1
LCAgIDEzNiwgICAxMzcsCisgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAg
IDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM4LAorICAgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5
MywgICAgIDAsCisgICAgICAgMCwgICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgOTQsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTM3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwg
ICAgIDMsICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwgICAxMjksICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLAotICAgICAxMzMsICAgMTM0LCAg
IDEzNSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCisg
ICAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgMTQxLCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAg
IDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LAorICAgICAgIDYsICAgICA3LCAgICAgOCwg
ICAgIDksICAgIDEwLCAgIDEzMSwgICAxMzIsICAgMTMzLCAgICAgMCwgICAxMzQsCisgICAgIDEz
NSwgICAxMzYsICAgMTM3LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2
LCAgICAxNywKICAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMjMsICAgIDI0LAotICAgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcs
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsCi0gICAgICA4OSwgICAg
OTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAg
MCwKKyAgICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICA5MCwgICAgMzEsICAgIDkxLAorICAgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0
LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgNzYsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICA5
NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDEsCi0gICAgICAgMiwgICAgIDMsICAgICA0LCAg
ICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEyOSwKLSAgICAgMTMw
LCAgIDEzMSwgICAgIDAsICAgMTMyLCAgIDEzMywgICAxMzQsICAgMTM1LCAgICAxMSwgICAgMTIs
ICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwg
ICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICA4
NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDky
LAotICAgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LAotICAg
ICAgOTYsICAgICAwLCAgICA5NywgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAg
ICAgNiwgICAgIDcsCi0gICAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAxMSwgICAgMTIsICAg
IDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAs
ICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsCi0gICAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAz
MSwgICAgODgsICAgIDg5LCAgICA5MCwKLSAgICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAg
ICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDc5LCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwgICAg
OTksICAgICAxLCAgICAgMiwKKyAgICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywg
ICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEsICAgMTMyLAorICAgICAxMzMsICAgICAwLCAgIDEz
NCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAg
ICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAg
ICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAorICAgICAgOTAsICAgIDMxLCAgICA5MSwgICAg
OTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2
LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5OCwgICAgIDAsCisgICAgICA5OSwgICAgIDEs
ICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwK
KyAgICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDExLAorICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAg
ICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsCisgICAgICAyMiwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywKKyAgICAg
IDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAg
IDAsICAgICAwLAorICAgICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwKKyAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
MTQxLAorICAgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgIDYwLCAgICAgMiwgICAgIDMs
ICAgICA0LCAgICAgMCwgICAgIDYsCisgICAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAor
ICAgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIz
LCAgICAyNCwgICAgMjUsCisgICAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAg
IDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5MiwKKyAgICAgIDkzLCAgICAgMCwgICAgIDAs
ICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1
LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAxMSwgICAgMTIsICAgIDEzLAorICAgICAgIDAsICAg
ICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAg
IDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwg
ICAgMTEsICAgIDEyLCAgICAxMywKICAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAogICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksCi0g
ICAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAs
ICAgICAwLCAgICA5MiwKLSAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsCi0gICAgICAg
MCwgICAxNjEsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICA5NSwKLSAgICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAg
IDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAotICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
ICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAyNSwgICAg
MjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4
OCwKLSAgICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDky
LCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsCiAgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDgsICAgICA5LAotICAgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjA2LCAgICA5
NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgMTEsCi0gICAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwKLSAgICAgIDIy
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAs
ICAgIDI3LAotICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAg
ODksICAgIDkwLCAgICA5MSwgICAgIDAsCi0gICAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAw
LAorICAgICAxNjMsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NywgICAgOTgsCisgICAgICAgMCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LAorICAg
ICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAg
ICA5MSwgICAgOTIsCisgICAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgOTQs
ICAgICAwLCAgICAgMCwgICAyMjIsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwg
ICAgIDAsCi0gICAgICAgMCwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwKLSAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAw
LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcs
Ci0gICAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAg
OTIsICAgIDkzLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDIw
OCwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsCisgICAg
ICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAg
IDIyLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYs
ICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LAorICAgICAgMzAsICAgIDkwLCAgICAzMSwgICAg
OTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsCiAgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0
LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDk1LCAgICA5NiwgICAgIDAsCi0gICAgICA5NywgICAgMTEs
ICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwK
LSAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgMjUsICAgMTc1LAotICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsCi0gICAgICA5MSwgICAgIDAsICAgICAw
LCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwgICAg
IDAsICAgICAwLAorICAgICAyMjQsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsCisgICAgICAgMCwgICAgOTksICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDI1LAorICAgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAs
ICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAg
OTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAot
ICAgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDgsCi0gICAgICAgOSwgICAgMTAsICAgICAwLCAgICA5NSwgICAgOTYsICAg
ICAwLCAgICA5NywgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLAotICAgICAg
MjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAy
NiwgICAgIDAsCi0gICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAg
ICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5
LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAg
MTcsCi0gICAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgIDE5OCwg
ICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAwLAotICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzEsCi0g
ICAgICAgMCwgICAgIDAsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwKLSAgICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjQ3LAotICAgICAgMTEsICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCi0gICAgICAy
MSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAgMCwKLSAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAg
ICAxLCAgICAgMiwgICAgIDMsICAgICA0LAorICAgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCisgICAgICAgMCwgICAg
IDAsICAgICAwLCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAx
MywKKyAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAg
ICAyMSwgICAgMjIsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1
LCAgIDE3NywgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksCisgICAgICAzMCwgICAgOTAsICAg
IDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwKKyAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDk2LCAgICAgMiwgICAgIDMsCisgICAgICAgNCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgIDk3LCAgICA5OCwKKyAgICAgICAw
LCAgICA5OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LAorICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwg
ICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwKKyAgICAgIDMxLCAgICAg
MiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEw
LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAxMSwgICAgMTIsCisgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKKyAgICAgMTk5LCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LAorICAg
ICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA3NCwgICAgIDAsICAgICAw
LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKICAgICAgICA1LCAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwg
ICAgMTYsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDI1MywgICAgMTEsICAgIDEyLCAgICAx
MywgICAgMTQsICAgIDE1LCAgICAxNiwKICAgICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAg
ICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLAogICAgICAgMjQsICAgIDI1
LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEs
Ci0gICAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAg
IDksICAgIDEwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAgICAx
NiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCi0gICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAg
IDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAgMCwgICAgMzEsICAgICA4LCAgICAgOSwgICAgMTAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCi0gICAgICAxNywg
ICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKLSAgICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAyMjksICAgIDMxLAotICAgICAgIDgsICAgICA5LCAgICAxMCwgICAyMzAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMSwgICAgIDIs
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwK
KyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgMTEsICAgIDEyLAorICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCisgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwKKyAgICAg
IDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAg
IDAsICAgICAwLAorICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgMTEsICAgIDEyLCAgICAx
MywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKICAgICAgIDIwLCAg
ICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAg
IDI2LAotICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEK
KyAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAg
OCwgICAgIDksICAgIDEwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsCisgICAgICAxMywgICAgMTQsICAgIDE1
LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKKyAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAg
MjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgIDIzMSwgICAyMzIsICAgICA4LCAgICAgOSwg
ICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKKyAgICAgIDE2LCAg
ICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAg
ICAwLAorICAgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgIDAsCisgICAgICAzMQogfTsKIAorI2RlZmluZSB5eXBhY3RfdmFs
dWVfaXNfZGVmYXVsdChZeXN0YXRlKSBcCisgICghISgoWXlzdGF0ZSkgPT0gKC0yNjEpKSkKKwor
I2RlZmluZSB5eXRhYmxlX3ZhbHVlX2lzX2Vycm9yKFl5dGFibGVfdmFsdWUpIFwKKyAgWVlJRCAo
MCkKKwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWNoZWNrW10gPQogewotICAgICAgIDAs
ICAgIDU1LCAgICA5NCwgICAgODYsICAgIDcwLCAgIDEyNywgICAgNDUsICAgMTUxLCAgIDI3Mywg
ICAgNjAsCi0gICAgICA0MCwgICAgMzYsICAgIDg1LCAgICAgMCwgICAgIDAsICAgMTYwLCAgIDI1
NywgICAgMzcsICAgIDc5LCAgICA4NSwKLSAgICAgIDg0LCAgICA4MiwgICAgODYsICAgMTA2LCAg
ICAgMywgICAgNDUsICAgIDcwLCAgIDI1MywgICAyOTMsICAgICA4LAotICAgICAgIDksICAgMjcy
LCAgICA1NywgICAgNjMsICAgIDU1LCAgICA1NiwgICAgNzksICAgIDc2LCAgICA0MiwgICAgODIs
Ci0gICAgICA0MCwgICAgODUsICAgIDQyLCAgIDEzNSwgICAgOTUsICAgIDc1LCAgICA0NiwgICAg
NTEsICAgIDkyLCAgICA5MywKLSAgICAgIDc5LCAgICA1MSwgICAgODIsICAgIDgyLCAgICAzMywg
ICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDQ2LAotICAgICAgNDYsICAgIDc0LCAgIDI4
OCwgICAgNjMsICAgIDgyLCAgIDEwOSwgICAyOTIsICAgIDczLCAgICA4MSwgICAgOTAsCi0gICAg
ICA5MSwgICAgNzMsICAgMTk0LCAgICA3OSwgICAgIDMsICAgIDc1LCAgICA3NiwgICAxNjAsICAg
MTcwLCAgICAgOCwKLSAgICAgICA5LCAgICA3MiwgICAgODIsICAgIDc0LCAgICA3OSwgICAgNzks
ICAgMTU5LCAgICA4MiwgICAgNTMsICAgIDU0LAotICAgICAgODEsICAgMTc0LCAgICA3MywgICAx
NTksICAgIDczLCAgIDEyNSwgICAgNDUsICAgMTI3LCAgICA3OSwgICAgNzQsCi0gICAgIDE5Miwg
ICAgNjIsICAgIDYzLCAgICA2NCwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAg
ICA3NCwKLSAgICAgIDcxLCAgICA3MywgICAyMDQsICAgIDc4LCAgIDI1OCwgICAxNTksICAgIDcz
LCAgICA3OSwgICAgNzYsICAgIDcyLAotICAgICAgODEsICAgIDc0LCAgICA3OSwgICAgODcsICAg
IDg4LCAgIDEyNSwgICAgNzYsICAgMTI3LCAgIDE4MywgICAxODQsCi0gICAgIDE4NSwgICAxODYs
ICAgIDM3LCAgIDIxNiwgICAyMTcsICAgMTc5LCAgIDE4MCwgICAxODEsICAgMTgyLCAgIDE4MywK
LSAgICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LCAgIDE4OCwgICAxODksICAgMTkwLCAgIDE5
MSwgICAyMjEsICAgMjk0LAotICAgICAgNDUsICAgMTUxLCAgICAgNCwgICAgIDUsICAgICA2LCAg
IDIyMSwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgNTcsCi0gICAgICA1OCwgICAgNzksICAgIDgw
LCAgICA4MiwgICAxOTQsICAgMjU3LCAgIDE4MSwgICAxODIsICAgMTg3LCAgIDE4OCwKLSAgICAg
IDQ1LCAgICA3MiwgICAgNTksICAgIDczLCAgICA0NSwgICAyNDgsICAgIDcyLCAgIDIyMSwgICAg
NjEsICAgIDgyLAotICAgICAyNzIsICAgMjY0LCAgIDI0OCwgICAgNzUsICAgIDcyLCAgICA4Miwg
ICAgNzIsICAgIDcyLCAgICA4MiwgICAyODEsCi0gICAgICA3OSwgICAgNzIsICAgIDc0LCAgICA3
NywgICAxOTQsICAgIDc1LCAgICA3NCwgICAgNzYsICAgMjUyLCAgIDI5MSwKLSAgICAgICAzLCAg
ICAgNCwgICAgIDUsICAgICA2LCAgIDI0OCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAg
IDEyLAotICAgICAyMTAsICAgMjk0LCAgICA3NSwgICAgNzUsICAgIDcyLCAgICA0MCwgICAgNzUs
ICAgIDcyLCAgICAyMSwgICAgMjIsCi0gICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKLSAgICAgIDc1LCAgICA0NSwg
ICAgNzMsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA3NywgICAgNDEsICAgIDQyLAot
ICAgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUw
LCAgICA4MiwgICAgNzMsCi0gICAgICA1MywgICAgNTQsICAgIDE2LCAgIDI1MywgICAyNTQsICAg
IDgxLCAgIDE3MSwgICAyNTcsICAgMjU4LCAgICA4MiwKLSAgICAgMTkwLCAgIDE4OSwgICAgODIs
ICAgIDU3LCAgIDE5MSwgICAgNjQsICAgIDgyLCAgICAgNSwgICAxMjUsICAgIDcyLAotICAgICAy
NTQsICAgMjQ5LCAgIDI3MiwgICAyMTAsICAgMjU0LCAgIDI5MiwgICAyNzIsICAgIDQ2LCAgICAt
MSwgICAgLTEsCi0gICAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgMjg4LCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAyOTIsICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LAotICAgICAgMTAsICAg
IDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAgICAxOCwgICAg
MTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LAotICAgICAgNDAsICAgIDQxLCAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksCi0g
ICAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKKyAgICAgICAwLCAgICAyNSwgICAgODksICAgIDg4LCAgICA5NiwgICAg
NTcsICAgMTYyLCAgICA3MywgICAxNTMsICAgMTI4LAorICAgICAgNDAsICAgICAwLCAgICAgMCwg
ICAyNTYsICAgIDU5LCAgICAzOSwgICAyNzYsICAgIDM3LCAgICA1NCwgICAgNTUsCisgICAgICA4
MSwgICAxMDgsICAgIDg4LCAgICA3MywgICAgNDIsICAgIDQ1LCAgICA0NSwgICAgNDYsICAgIDcy
LCAgIDI2MCwKKyAgICAgIDgwLCAgICA3MiwgICAgNzIsICAgIDUxLCAgICA3OCwgICAgNjUsICAg
Mjk2LCAgICA3OCwgICAgNTIsICAgIDUzLAorICAgICAgNDAsICAgIDM2LCAgICA0MiwgICAgNjcs
ICAgMjc1LCAgIDEzNywgICAgNDYsICAgIDc3LCAgIDI5MSwgICAgOTQsCisgICAgICA3OCwgICAg
NTEsICAgMjk1LCAgICA4OSwgICAgOTAsICAgIDg1LCAgICA3NSwgICAgNDYsICAgIDQ2LCAgICA3
MywKKyAgICAgIDg0LCAgICA3MywgICAgNzMsICAgIDc3LCAgICA1OSwgICAgNjUsICAgIDcyLCAg
ICA3MiwgICAgODAsICAgIDQ1LAorICAgICAgNDYsICAgIDc4LCAgICA3OCwgICAgNzgsICAgIDgx
LCAgIDE2MiwgICAxNjEsICAgIDc3LCAgICAgMywgICAgNzksCisgICAgIDE3MiwgICAgNzUsICAg
MjAxLCAgICAgOCwgICAgIDksICAgIDg1LCAgICA4MywgICAgNzgsICAgIDg1LCAgIDE3NiwKKyAg
ICAgIDgxLCAgICAgMywgICAgMzMsICAgIDM0LCAgICAzNSwgICAxNjEsICAgICA4LCAgICAgOSwg
ICAxMjgsICAgIDM3LAorICAgICAxMzAsICAgIDc4LCAgIDE5NCwgICAgNzgsICAgIDgxLCAgICA3
MywgICAgODEsICAgIDcxLCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYsICAgIDM3LCAg
ICA3MSwgICAyMDYsICAgIDczLCAgIDI2MSwgICAgIDQsICAgICA1LCAgICAgNiwKKyAgICAgIDg4
LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDk0LCAgICA5NSwgICAxMjgs
ICAgIDc1LAorICAgICAxMzAsICAgMjE4LCAgIDIxOSwgICAgNjEsICAgIDYyLCAgICA2MywgICAg
NDUsICAgIDQ2LCAgIDIyMywgICAgODYsCisgICAgICA4NywgICAyOTcsICAgIDcwLCAgIDExMSwg
ICAgODEsICAgIDU2LCAgICA1NywgICAgNzIsICAgIDcxLCAgIDE3MywKKyAgICAgMTgzLCAgIDE4
NCwgICAgODAsICAgMTUzLCAgICA3OCwgICAgNzksICAgIDcyLCAgIDIyMywgICAxODUsICAgMTg2
LAorICAgICAxODcsICAgMTg4LCAgICA1OCwgICAxODksICAgMTkwLCAgIDI1MCwgICAgNzEsICAg
IDYwLCAgIDI2MCwgICAgNzEsCisgICAgICA3NCwgICAyMDEsICAgIDcxLCAgICA4MSwgICAgODEs
ICAgIDgxLCAgICA3MSwgICAgNzQsICAgIDc2LCAgICA3MywKKyAgICAgMjY3LCAgICA3MSwgICAg
NzMsICAgMjc1LCAgIDI1MCwgICAgNDAsICAgIDc1LCAgICA3MSwgICAgNzQsICAgIDc0LAorICAg
ICAgNzgsICAgIDc0LCAgIDI4NCwgICAxNjEsICAgIDc0LCAgICA3MSwgICAgMTYsICAgIDcyLCAg
ICA3NiwgICAgODEsCisgICAgICA3MiwgICAyMDEsICAgMjk0LCAgIDI1NSwgICAgODEsICAgMTkx
LCAgICA4MCwgICAxNzMsICAgMTkyLCAgICA1OSwKKyAgICAgMjk3LCAgIDE5MywgICAyMTIsICAg
MTgxLCAgIDE4MiwgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LAorICAgICAxODgs
ICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTkyLCAgIDE5MywgICAgODUsICAgIDY2LCAgICA4NSwg
ICAgIDUsCisgICAgIDEzMCwgICAyOTUsICAgMjU3LCAgIDIxMiwgICAyNTEsICAgMjU3LCAgIDI3
NSwgICAgNDYsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0x
LCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIDc3LCAgICAtMSwgICAgLTEs
Ci0gICAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAg
IDMsICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgLTEsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsCi0gICAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAg
IC0xLCAgICAtMSwKLSAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEs
ICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAotICAgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsCisgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAyNzgsICAgMjIzLCAgIDI1NiwgICAyNTcsICAgIC0xLCAg
ICAtMSwKKyAgICAgMjYwLCAgIDI2MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgIDI3NSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEs
ICAgMjUwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
KyAgICAgIC0xLCAgIDI5MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyOTUsICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LAorICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsCisgICAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKKyAgICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDM2LAorICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0Miwg
ICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCisgICAgICA0NywgICAgNDgsICAgIDQ5LCAgICAt
MSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3NiwgICAgNzcsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwKLSAgICAgIDg2LCAgICAgMywg
ICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLAot
ICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLAotICAgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1
MCwgICAgLTEsCi0gICAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgIDc2LAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAg
IDMsCisgICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAorICAgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCisg
ICAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEs
ICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0x
LCAgICAtMSwKKyAgICAgIC0xLCAgICA3NSwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA4MSwgICAgODIsICAgIDgzLAorICAgICAgLTEsICAgIDg1LCAgICAgMywgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCisgICAgICAxMSwgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwKKyAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLAorICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCisgICAgICA0MSwgICAgNDIsICAg
IDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwKKyAg
ICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3MiwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDgy
LCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LAorICAgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc1LCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwg
ICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKICAgICAgICA4LCAgICAg
OSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3
LAogICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsCiAgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywKICAgICAgIDM4LCAgICAzOSwgICAg
NDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAotICAg
ICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUz
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3Niwg
ICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAgICA4
NCwgICAgLTEsICAgIDg2LCAgICAgMywKLSAgICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAg
ICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1
LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMs
Ci0gICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
MzEsICAgIDMyLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwg
ICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLAotICAgICAgNDQsICAgIDQ1LCAgICA0
NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsCi0gICAg
ICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsCi0gICAgICA4NCwg
ICAgLTEsICAgIDg2LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAg
ICAgOSwKLSAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsICAg
IDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgMzEs
ICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwK
LSAgICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LAotICAgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgIC0xLCAgICAtMSwKKyAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAg
IDMsICAgICA0LAorICAgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgLTEsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwKKyAgICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAg
IC0xLAorICAgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEs
ICAgIDQyLCAgICA0MywgICAgNDQsCisgICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAor
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0x
LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwKKyAgICAgIDg1LCAgICAgMywgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLAorICAgICAg
MTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMjEsCisgICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKKyAgICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLAorICAgICAgNDIsICAg
IDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAg
LTEsCisgICAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLAorICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEsCisg
ICAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgIC0xLCAgICAgOCwKKyAgICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAyMSwg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsCisgICAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3
LCAgICAzOCwKKyAgICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAorICAgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIs
ICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwKLSAgICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAg
ICAxMSwgICAgMTIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0
LCAgICAtMSwgICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsCisgICAgICAtMSwgICAgLTEsICAg
IDcxLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKKyAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAyMSwg
ICAgMjIsICAgIDIzLAogICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0
LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEs
ICAgIDUzLAotICAgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwKLSAgICAgIC0xLCAgICA3
NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgz
LAotICAgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDM4LCAgICAzOSwgICAg
LTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAotICAg
ICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5
LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwg
ICAgMTEsCi0gICAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAgICA4
NCwgICAgLTEsICAgIDg2LCAgICAyMSwKLSAgICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLAotICAgICAgMzIsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEs
Ci0gICAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLCAgICAtMSwKLSAgICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsCisgICAg
ICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAzMSwgICAg
MzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsCisgICAgICAzOSwg
ICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3MiwgICAgLTEs
ICAgIC0xLCAgICA3NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwK
LSAgICAgIC0xLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LAotICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDM4
LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKLSAgICAg
IDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAg
NTQsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4
MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0LCAg
ICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAg
IC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEs
ICAgIDQxLCAgICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAg
NDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKICAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0x
LCAgICAtMSwgICAgLTEsCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgODMsICAgIDg0LCAgICAtMSwKLSAgICAgIDg2LCAgICAyMSwgICAgMjIs
ICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAotICAgICAg
MzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAz
OCwgICAgMzksCi0gICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAg
ICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwKLSAgICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUz
LCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAg
LTEsCisgICAgICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAg
ICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsCisg
ICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYs
ICAgIDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAt
MSwgICAgLTEsICAgIDcyLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAxMCwKLSAgICAgIDExLCAgICAxMiwgICAgLTEsICAgIDgzLCAgICA4NCwgICAgLTEsICAg
IDg2LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAg
MzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAt
MSwKLSAgICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgICA0LCAg
ICAgNSwgICAgIDYsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEy
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywKLSAg
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIDc3LCAgICAtMSwg
ICAgLTEsICAgIC0xLAotICAgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0
MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMCwKLSAgICAgIC0x
LCAgICAtMSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDks
ICAgIDEwLAotICAgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgNzcsCi0gICAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwg
ICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKLSAgICAgIDMxLCAgICAz
MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIC0x
LAotICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgIDMsICAg
ICA0LCAgICAgNSwgICAgIDYsCisgICAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAyMSwgICAgMjIsICAgIDIzLAorICAg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5
LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAorICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgNzEsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgODIsICAgIDgzLAorICAgICAgLTEsICAgIDg1
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUs
CisgICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwg
ICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLAorICAgICAgNDYsICAgICA0LCAgICAg
NSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAgMTIsCisgICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgNzYsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsCisgICAgICA0Mywg
ICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAwLCAgICAtMSwgICAgLTEsICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LAogICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAg
IDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwK
KyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LAogICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsCiAgICAgICAzNywgICAgMzgsICAgIDM5
LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwKLSAgICAg
ICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAg
MTIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKLSAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAg
IDQzLAotICAgICAgNDQsICAgIC0xLCAgICA0NiwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0
LCAgICA0NSwgICAgNDYsCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICA1MCwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgICAzLCAgICAgNCwgICAgIDUs
ICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAy
MSwgICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2
LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAgICAgNDMsICAg
IDQ0LCAgICAtMSwgICAgNDYsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAogICAgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksCi0g
ICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NgorICAgICAg
LTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgIDEwLCAgICAx
MSwgICAgMTIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAg
NDIsCisgICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgMTAsICAgIDExLCAgICAxMiwg
ICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCisg
ICAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMs
ICAgIDQ0LCAgICAtMSwKKyAgICAgIDQ2CiB9OwogCiAvKiBZWVNUT1NbU1RBVEUtTlVNXSAtLSBU
aGUgKGludGVybmFsIG51bWJlciBvZiB0aGUpIGFjY2Vzc2luZwpAQCAtMTMwOCwzMiArMTI5MSwz
MiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KICAgICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MSwgICAgNDIsICAgIDQz
LAogICAgICAgNDQsICAgIDQ2LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOSwgICAxMzAsICAg
MTM1LCAgIDEzNiwgICAxMzcsCiAgICAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MSwgICAxNDIs
ICAgMTQzLCAgIDE3NSwgICAxNzYsICAgMTc3LCAgICAzNywKLSAgICAgIDQ1LCAgIDE0MCwgICAg
NDUsICAgIDc2LCAgICA4MiwgICAxNzgsICAgIDczLCAgICA3OSwgICAgIDMsICAgIDMzLAotICAg
ICAgMzQsICAgIDM1LCAgIDEzMiwgICAxMzMsICAgMTM4LCAgICA3OSwgICAgODIsICAgIDQ1LCAg
IDEzOSwgICAxNDEsCi0gICAgICA3NCwgICAgIDAsICAgMTc2LCAgIDE0MSwgICAgNzYsICAgMTQ1
LCAgICA3NiwgICAxNjEsICAgMTMyLCAgIDEzMSwKLSAgICAgMTM0LCAgIDEzOSwgICAxMzMsICAg
IDQ1LCAgICA3MiwgICAgNzQsICAgIDgxLCAgICA0NSwgICAgNDcsICAgIDQ4LAotICAgICAgNDks
ICAgIDUwLCAgICA1MywgICAgNTQsICAgIDcyLCAgICA4MywgICAgODQsICAgIDg2LCAgICA5Nywg
ICAgOTgsCi0gICAgICA5OSwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEw
NiwgICAxMDcsICAgMTA4LCAgIDEwOSwKLSAgICAgMTEwLCAgIDExMSwgICAxMTIsICAgMTEzLCAg
IDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE5LAotICAgICAxMjAsICAgMTIx
LCAgIDEyNSwgICAxNDIsICAgIDgyLCAgIDE0NCwgICAxMzksICAgMTQ2LCAgIDE0NywgICAgMTMs
Ci0gICAgICAxNCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICA0MCwgICAg
NzYsICAgIDc3LCAgICA4MiwKLSAgICAgMTA4LCAgIDEyMSwgICAxMjIsICAgMTI0LCAgIDEyNiwg
ICAxMjcsICAgMTQyLCAgIDE1MSwgICAxNTIsICAgMTUzLAotICAgICAxNTQsICAgMTYyLCAgIDE2
MywgICAxNjQsICAgMTY3LCAgIDE3NCwgICAgNDUsICAgMTMxLCAgIDEzNCwgICAgNzQsCi0gICAg
ICA4MSwgICAgNzUsICAgMTI1LCAgIDEyMiwgICAxNTAsICAgMTA4LCAgIDEwOCwgICAxMjQsICAg
IDUzLCAgICA1NCwKLSAgICAgIDc0LCAgICA3OCwgICAgNzMsICAgIDczLCAgICA3OSwgICAgMzks
ICAgMTIyLCAgICA3MiwgICAxMDgsICAgIDg3LAotICAgICAgODgsICAgIDg0LCAgICA4NiwgICAg
NTUsICAgIDU2LCAgICA5MCwgICAgOTEsICAgIDU3LCAgICA1OCwgICAgNTksCi0gICAgICA2MSwg
ICAgNjAsICAgIDk1LCAgICA3NSwgICAxNDYsICAgIDQ1LCAgIDE0OCwgICAxNDksICAgIDc3LCAg
IDE0NywKLSAgICAgIDgyLCAgICA4MiwgICAxNjksICAgIDcyLCAgICA3MiwgICAgODIsICAgIDgy
LCAgIDEyNCwgICAgNzIsICAgIDc3LAotICAgICAxNTUsICAgIDYyLCAgICA2MywgICAgNjQsICAg
IDcxLCAgICA4MSwgICAxMjMsICAgIDc5LCAgICA4MiwgICAgNzcsCi0gICAgIDE1MiwgICAgNzQs
ICAgIDc1LCAgIDEyNSwgICAxNTAsICAgIDc1LCAgICA3MywgICAxMDAsICAgMTI0LCAgICA0NSwK
LSAgICAgIDUwLCAgIDEwMywgICAxMjIsICAgMTA4LCAgIDEwOCwgICAxMTAsICAgMTEwLCAgIDEx
MiwgICAxMTIsICAgMTEyLAotICAgICAxMTIsICAgMTEzLCAgIDExMywgICAxMTcsICAgMTE4LCAg
IDExOSwgICAxMjQsICAgIDc3LCAgICA3NCwgICAgNzksCi0gICAgICA4MiwgICAxNTgsICAgMTU5
LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4MiwgICAxNjgsICAgMTYyLCAgIDEyMiwKLSAgICAg
MTIyLCAgIDEyNSwgICAgNzUsICAgIDc1LCAgICA4MCwgICAxMjUsICAgMTQ5LCAgICA0MCwgICAx
NjEsICAgMTUzLAotICAgICAxNTEsICAgMTYzLCAgIDE3MSwgICAgNzMsICAgMTI0LCAgIDEzNywg
ICAxNjYsICAgMTU2LCAgICA3NSwgICAxMjIsCi0gICAgICA3NSwgICAgNzIsICAgMTY2LCAgIDE3
MiwgICAxNzMsICAgMTU4LCAgIDE2NSwgICAgNDUsICAgIDczLCAgICA3NywKLSAgICAgMTI0LCAg
ICA4MiwgICAgNzMsICAgIDE2LCAgICA4MSwgICAxNTMsICAgMTU3LCAgIDE2MSwgICAgNzMsICAg
MTI0LAotICAgICAxNTcsICAgMTU4LCAgIDE1MCwgICAgODIKKyAgICAgIDQ1LCAgIDE0MCwgICAg
NDUsICAgIDQ2LCAgICA3NSwgICAgOTYsICAgIDgxLCAgIDE3OCwgICAgNzIsICAgIDc4LAorICAg
ICAgIDMsICAgIDMzLCAgICAzNCwgICAgMzUsICAgMTMyLCAgIDEzMywgICAxMzgsICAgIDc4LCAg
ICA4MSwgICAgNDUsCisgICAgICA5NiwgICAxMzksICAgMTQxLCAgICA3MywgICAgIDAsICAgMTc2
LCAgIDE0MSwgICAxNDUsICAgIDc1LCAgICA3NSwKKyAgICAgMTYxLCAgIDEzMiwgICAxMzEsICAg
MTM0LCAgIDEzOSwgICAxMzMsICAgIDk2LCAgICA3MSwgICAgNzMsICAgIDgwLAorICAgICAgNDUs
ICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUyLCAgICA1MywgICAgNzEsICAgIDgyLCAgICA4Mywg
ICAgODUsCisgICAgICA5NywgICAgOTgsICAgIDk5LCAgIDEwMSwgICAxMDIsICAgMTAzLCAgIDEw
NCwgICAxMDUsICAgMTA2LCAgIDEwNywKKyAgICAgMTA4LCAgIDEwOSwgICAxMTAsICAgMTExLCAg
IDExMiwgICAxMTMsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LAorICAgICAxMTgsICAgMTE5
LCAgIDEyMCwgICAxMjEsICAgMTI1LCAgIDE0MiwgICAgODEsICAgMTM5LCAgIDE0NiwgICAxNDcs
CisgICAgIDE0NCwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDQwLCAgICA3NSwKKyAgICAgIDc2LCAgICA4MSwgICAxMDgsICAgMTIxLCAgIDEyMiwg
ICAxMjQsICAgMTI2LCAgIDEyNywgICAxNDIsICAgMTUxLAorICAgICAxNTIsICAgMTUzLCAgIDE1
NCwgICAxNjIsICAgMTYzLCAgIDE2NCwgICAxNjcsICAgMTc0LCAgICA5NiwgICAxMzEsCisgICAg
IDEzNCwgICAgNzMsICAgIDgwLCAgICA3NCwgICAxMjUsICAgMTIyLCAgIDE1MCwgICAxMDgsICAg
MTA4LCAgIDEyNCwKKyAgICAgIDUyLCAgICA1MywgICAgNzMsICAgIDc3LCAgICA3MiwgICAgNzIs
ICAgIDc4LCAgICAzOSwgICAxMjIsICAgIDcxLAorICAgICAxMDgsICAgIDg2LCAgICA4NywgICAg
ODMsICAgIDg1LCAgICA1NCwgICAgNTUsICAgIDg5LCAgICA5MCwgICAgNTYsCisgICAgICA1Nywg
ICAgNTgsICAgIDYwLCAgICA1OSwgICAgOTQsICAgIDc0LCAgICA5NiwgICAxNDgsICAgMTQ5LCAg
ICA3NiwKKyAgICAgMTQ3LCAgIDE0NiwgICAgODEsICAgIDgxLCAgIDE2OSwgICAgNzEsICAgIDcx
LCAgICA4MSwgICAgODEsICAgMTI0LAorICAgICAgNzEsICAgIDc2LCAgIDE1NSwgICAgNjEsICAg
IDYyLCAgICA2MywgICAgNzAsICAgIDgwLCAgIDEyMywgICAgNzgsCisgICAgICA4MSwgICAgNzYs
ICAgMTUyLCAgICA3MywgICAgNzQsICAgMTI1LCAgIDE1MCwgICAgNzQsICAgIDcyLCAgIDEwMCwK
KyAgICAgMTI0LCAgICA0NSwgICAgNDYsICAgIDk2LCAgIDEwMywgICAxMjIsICAgMTA4LCAgIDEw
OCwgICAxMTAsICAgMTEwLAorICAgICAxMTIsICAgMTEyLCAgIDExMiwgICAxMTIsICAgMTEzLCAg
IDExMywgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjQsCisgICAgICA3MywgICAgNzgsICAgIDgx
LCAgICA3NiwgICAxNTgsICAgMTU5LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4MSwKKyAgICAg
MTY4LCAgIDE2MiwgICAxMjIsICAgMTIyLCAgIDEyNSwgICAgNzQsICAgIDc0LCAgICA3OSwgICAx
MjUsICAgMTQ5LAorICAgICAgNDAsICAgMTYxLCAgIDE1MywgICAxNTEsICAgMTYzLCAgIDE3MSwg
ICAgNzIsICAgMTI0LCAgIDEzNywgICAxNjYsCisgICAgIDE1NiwgICAgNzQsICAgMTIyLCAgICA3
NCwgICAgNzEsICAgMTY2LCAgIDE3MiwgICAxNzMsICAgMTU4LCAgIDE2NSwKKyAgICAgIDk2LCAg
ICA3MiwgICAgNzYsICAgMTI0LCAgICA4MSwgICAgNzIsICAgIDE2LCAgICA4MCwgICAxNTMsICAg
MTU3LAorICAgICAxNjEsICAgIDcyLCAgIDEyNCwgICAxNTcsICAgMTU4LCAgIDE1MCwgICAgODEK
IH07CiAKICNkZWZpbmUgeXllcnJvawkJKHl5ZXJyc3RhdHVzID0gMCkKQEAgLTEzNDgsMzAgKzEz
MzEsMzkgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXN0b3NbXSA9CiAKIC8qIExpa2Ug
WVlFUlJPUiBleGNlcHQgZG8gY2FsbCB5eWVycm9yLiAgVGhpcyByZW1haW5zIGhlcmUgdGVtcG9y
YXJpbHkKICAgIHRvIGVhc2UgdGhlIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBtZWFuaW5nIG9mIFlZ
RVJST1IsIGZvciBHQ0MuCi0gICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFzIHN1cHBsYW50ZWQgdmVy
c2lvbiAxLCB0aGlzIGNhbiBnby4gICovCisgICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFzIHN1cHBs
YW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNhbiBnby4gIEhvd2V2ZXIsCisgICBZWUZBSUwgYXBwZWFy
cyB0byBiZSBpbiB1c2UuICBOZXZlcnRoZWxlc3MsIGl0IGlzIGZvcm1hbGx5IGRlcHJlY2F0ZWQK
KyAgIGluIEJpc29uIDIuNC4yJ3MgTkVXUyBlbnRyeSwgd2hlcmUgYSBwbGFuIHRvIHBoYXNlIGl0
IG91dCBpcworICAgZGlzY3Vzc2VkLiAgKi8KIAogI2RlZmluZSBZWUZBSUwJCWdvdG8geXllcnJs
YWIKKyNpZiBkZWZpbmVkIFlZRkFJTAorICAvKiBUaGlzIGlzIGhlcmUgdG8gc3VwcHJlc3Mgd2Fy
bmluZ3MgZnJvbSB0aGUgR0NDIGNwcCdzCisgICAgIC1XdW51c2VkLW1hY3Jvcy4gIE5vcm1hbGx5
IHdlIGRvbid0IHdvcnJ5IGFib3V0IHRoYXQgd2FybmluZywgYnV0CisgICAgIHNvbWUgdXNlcnMg
ZG8sIGFuZCB3ZSB3YW50IHRvIG1ha2UgaXQgZWFzeSBmb3IgdXNlcnMgdG8gcmVtb3ZlCisgICAg
IFlZRkFJTCB1c2VzLCB3aGljaCB3aWxsIHByb2R1Y2Ugd2FybmluZ3MgZnJvbSBCaXNvbiAyLjUu
ICAqLworI2VuZGlmCiAKICNkZWZpbmUgWVlSRUNPVkVSSU5HKCkgICghIXl5ZXJyc3RhdHVzKQog
Ci0jZGVmaW5lIFlZQkFDS1VQKFRva2VuLCBWYWx1ZSkJCQkJCVwKLWRvCQkJCQkJCQlcCi0gIGlm
ICh5eWNoYXIgPT0gWVlFTVBUWSAmJiB5eWxlbiA9PSAxKQkJCQlcCi0gICAgewkJCQkJCQkJXAot
ICAgICAgeXljaGFyID0gKFRva2VuKTsJCQkJCQlcCi0gICAgICB5eWx2YWwgPSAoVmFsdWUpOwkJ
CQkJCVwKLSAgICAgIHl5dG9rZW4gPSBZWVRSQU5TTEFURSAoeXljaGFyKTsJCQkJXAotICAgICAg
WVlQT1BTVEFDSyAoMSk7CQkJCQkJXAotICAgICAgZ290byB5eWJhY2t1cDsJCQkJCQlcCi0gICAg
fQkJCQkJCQkJXAotICBlbHNlCQkJCQkJCQlcCi0gICAgewkJCQkJCQkJXAotICAgICAgeXllcnJv
ciAoY29udGV4dCwgWVlfKCJzeW50YXggZXJyb3I6IGNhbm5vdCBiYWNrIHVwIikpOyBcCisjZGVm
aW5lIFlZQkFDS1VQKFRva2VuLCBWYWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgeXljaGFyID0gKFRva2Vu
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHl5bHZh
bCA9IChWYWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICBZWVBPUFNUQUNLICh5eWxlbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgeXlzdGF0ZSA9ICp5eXNzcDsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgIGdvdG8geXliYWNrdXA7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBlbHNlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvcjogY2Fu
bm90IGJhY2sgdXAiKSk7IFwKICAgICAgIFlZRVJST1I7CQkJCQkJCVwKICAgICB9CQkJCQkJCQlc
CiB3aGlsZSAoWVlJRCAoMCkpCiAKLQorLyogRXJyb3IgdG9rZW4gbnVtYmVyICovCiAjZGVmaW5l
IFlZVEVSUk9SCTEKICNkZWZpbmUgWVlFUlJDT0RFCTI1NgogCkBAIC0xMzgwLDI3ICsxMzcyLDI4
IEBAIHdoaWxlIChZWUlEICgwKSkKICAgIElmIE4gaXMgMCwgdGhlbiBzZXQgQ1VSUkVOVCB0byB0
aGUgZW1wdHkgbG9jYXRpb24gd2hpY2ggZW5kcwogICAgdGhlIHByZXZpb3VzIHN5bWJvbDogUkhT
WzBdIChhbHdheXMgZGVmaW5lZCkuICAqLwogCi0jZGVmaW5lIFlZUkhTTE9DKFJocywgSykgKChS
aHMpW0tdKQogI2lmbmRlZiBZWUxMT0NfREVGQVVMVAotIyBkZWZpbmUgWVlMTE9DX0RFRkFVTFQo
Q3VycmVudCwgUmhzLCBOKQkJCQlcCi0gICAgZG8JCQkJCQkJCQlcCi0gICAgICBpZiAoWVlJRCAo
TikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LQl7CQkJCQkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gWVlSSFNMT0MgKFJocywg
MSkuZmlyc3RfbGluZTsJXAotCSAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IFlZUkhTTE9DIChS
aHMsIDEpLmZpcnN0X2NvbHVtbjsJXAotCSAgKEN1cnJlbnQpLmxhc3RfbGluZSAgICA9IFlZUkhT
TE9DIChSaHMsIE4pLmxhc3RfbGluZTsJCVwKLQkgIChDdXJyZW50KS5sYXN0X2NvbHVtbiAgPSBZ
WVJIU0xPQyAoUmhzLCBOKS5sYXN0X2NvbHVtbjsJXAotCX0JCQkJCQkJCVwKLSAgICAgIGVsc2UJ
CQkJCQkJCVwKLQl7CQkJCQkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gKEN1cnJl
bnQpLmxhc3RfbGluZSAgID0JCVwKLQkgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9saW5lOwkJ
CQlcCi0JICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0gKEN1cnJlbnQpLmxhc3RfY29sdW1uID0J
CVwKLQkgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9jb2x1bW47CQkJCVwKLQl9CQkJCQkJCQlc
CisjIGRlZmluZSBZWUxMT0NfREVGQVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBpZiAoWVlJRCAoTikp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgICA9IFlZUkhT
TE9DIChSaHMsIDEpLmZpcnN0X2xpbmU7ICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZp
cnN0X2NvbHVtbiA9IFlZUkhTTE9DIChSaHMsIDEpLmZpcnN0X2NvbHVtbjsgICAgICBcCisgICAg
ICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSAgICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfbGlu
ZTsgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmxhc3RfY29sdW1uICA9IFlZUkhTTE9D
IChSaHMsIE4pLmxhc3RfY29sdW1uOyAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBl
bHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xp
bmUgICA9IChDdXJyZW50KS5sYXN0X2xpbmUgICA9ICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBZWVJIU0xPQyAoUmhzLCAwKS5sYXN0X2xpbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IChDdXJyZW50KS5sYXN0
X2NvbHVtbiA9ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBZWVJIU0xPQyAoUmhzLCAwKS5s
YXN0X2NvbHVtbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgd2hpbGUgKFlZSUQgKDApKQogI2VuZGlmCiAKKyNkZWZpbmUgWVlSSFNMT0MoUmhz
LCBLKSAoKFJocylbS10pCisKIAogLyogWVlfTE9DQVRJT05fUFJJTlQgLS0gUHJpbnQgdGhlIGxv
Y2F0aW9uIG9uIHRoZSBzdHJlYW0uCiAgICBUaGlzIG1hY3JvIHdhcyBub3QgbWFuZGF0ZWQgb3Jp
Z2luYWxseTogZGVmaW5lIG9ubHkgaWYgd2Uga25vdwpAQCAtMTQwOCwxMCArMTQwMSw0NiBAQCB3
aGlsZSAoWVlJRCAoMCkpCiAKICNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKICMgaWYgZGVmaW5l
ZCBZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFMCi0jICBkZWZpbmUgWVlf
TE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKQkJCVwKLSAgICAgZnByaW50ZiAoRmlsZSwgIiVkLiVk
LSVkLiVkIiwJCQlcCi0JICAgICAgKExvYykuZmlyc3RfbGluZSwgKExvYykuZmlyc3RfY29sdW1u
LAlcCi0JICAgICAgKExvYykubGFzdF9saW5lLCAgKExvYykubGFzdF9jb2x1bW4pCisKKy8qIFBy
aW50ICpZWUxPQ1Agb24gWVlPLiAgUHJpdmF0ZSwgZG8gbm90IHJlbHkgb24gaXRzIGV4aXN0ZW5j
ZS4gKi8KKworX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpCisjaWYgKGRlZmluZWQgX19TVERD
X18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1
cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorc3RhdGljIHVuc2lnbmVkCit5eV9sb2NhdGlvbl9wcmlu
dF8gKEZJTEUgKnl5bywgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jcCkKKyNlbHNlCitzdGF0
aWMgdW5zaWduZWQKK3l5X2xvY2F0aW9uX3ByaW50XyAoeXlvLCB5eWxvY3ApCisgICAgRklMRSAq
eXlvOworICAgIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY3A7CisjZW5kaWYKK3sKKyAgdW5z
aWduZWQgcmVzID0gMDsKKyAgaW50IGVuZF9jb2wgPSAwICE9IHl5bG9jcC0+bGFzdF9jb2x1bW4g
PyB5eWxvY3AtPmxhc3RfY29sdW1uIC0gMSA6IDA7CisgIGlmICgwIDw9IHl5bG9jcC0+Zmlyc3Rf
bGluZSkKKyAgICB7CisgICAgICByZXMgKz0gZnByaW50ZiAoeXlvLCAiJWQiLCB5eWxvY3AtPmZp
cnN0X2xpbmUpOworICAgICAgaWYgKDAgPD0geXlsb2NwLT5maXJzdF9jb2x1bW4pCisgICAgICAg
IHJlcyArPSBmcHJpbnRmICh5eW8sICIuJWQiLCB5eWxvY3AtPmZpcnN0X2NvbHVtbik7CisgICAg
fQorICBpZiAoMCA8PSB5eWxvY3AtPmxhc3RfbGluZSkKKyAgICB7CisgICAgICBpZiAoeXlsb2Nw
LT5maXJzdF9saW5lIDwgeXlsb2NwLT5sYXN0X2xpbmUpCisgICAgICAgIHsKKyAgICAgICAgICBy
ZXMgKz0gZnByaW50ZiAoeXlvLCAiLSVkIiwgeXlsb2NwLT5sYXN0X2xpbmUpOworICAgICAgICAg
IGlmICgwIDw9IGVuZF9jb2wpCisgICAgICAgICAgICByZXMgKz0gZnByaW50ZiAoeXlvLCAiLiVk
IiwgZW5kX2NvbCk7CisgICAgICAgIH0KKyAgICAgIGVsc2UgaWYgKDAgPD0gZW5kX2NvbCAmJiB5
eWxvY3AtPmZpcnN0X2NvbHVtbiA8IGVuZF9jb2wpCisgICAgICAgIHJlcyArPSBmcHJpbnRmICh5
eW8sICItJWQiLCBlbmRfY29sKTsKKyAgICB9CisgIHJldHVybiByZXM7CisgfQorCisjICBkZWZp
bmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKSAgICAgICAgICBcCisgIHl5X2xvY2F0aW9u
X3ByaW50XyAoRmlsZSwgJihMb2MpKQorCiAjIGVsc2UKICMgIGRlZmluZSBZWV9MT0NBVElPTl9Q
UklOVChGaWxlLCBMb2MpICgodm9pZCkgMCkKICMgZW5kaWYKQEAgLTE0MTksMTEgKzE0NDgsMTAg
QEAgd2hpbGUgKFlZSUQgKDApKQogCiAKIC8qIFlZTEVYIC0tIGNhbGxpbmcgYHl5bGV4JyB3aXRo
IHRoZSByaWdodCBhcmd1bWVudHMuICAqLwotCiAjaWZkZWYgWVlMRVhfUEFSQU0KLSMgZGVmaW5l
IFlZTEVYIHl5bGV4ICgmeXlsdmFsLCBZWUxFWF9QQVJBTSkKKyMgZGVmaW5lIFlZTEVYIHl5bGV4
ICgmeXlsdmFsLCAmeXlsbG9jLCBZWUxFWF9QQVJBTSkKICNlbHNlCi0jIGRlZmluZSBZWUxFWCB5
eWxleCAoJnl5bHZhbCkKKyMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsLCAmeXlsbG9jKQog
I2VuZGlmCiAKIC8qIEVuYWJsZSBkZWJ1Z2dpbmcgaWYgcmVxdWVzdGVkLiAgKi8KQEAgLTE0NDYs
NyArMTQ3NCw3IEBAIGRvIHsJCQkJCQkJCQkgIFwKICAgICB7CQkJCQkJCQkJICBcCiAgICAgICBZ
WUZQUklOVEYgKHN0ZGVyciwgIiVzICIsIFRpdGxlKTsJCQkJCSAgXAogICAgICAgeXlfc3ltYm9s
X3ByaW50IChzdGRlcnIsCQkJCQkJICBcCi0JCSAgVHlwZSwgVmFsdWUsIGNvbnRleHQpOyBcCisJ
CSAgVHlwZSwgVmFsdWUsIExvY2F0aW9uLCBjb250ZXh0KTsgXAogICAgICAgWVlGUFJJTlRGIChz
dGRlcnIsICJcbiIpOwkJCQkJCSAgXAogICAgIH0JCQkJCQkJCQkgIFwKIH0gd2hpbGUgKFlZSUQg
KDApKQpAQCAtMTQ2MCwxOCArMTQ4OCwyMiBAQCBkbyB7CQkJCQkJCQkJICBcCiAjaWYgKGRlZmlu
ZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBf
X2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKLXl5X3N5bWJvbF92
YWx1ZV9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBj
b25zdCB5eXZhbHVlcCwgVFBhcnNlQ29udGV4dCogY29udGV4dCkKK3l5X3N5bWJvbF92YWx1ZV9w
cmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5
eXZhbHVlcCwgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25wLCBUUGFyc2VDb250ZXh0
KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5
b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBjb250ZXh0KQoreXlfc3ltYm9sX3ZhbHVlX3ByaW50
ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpCiAgICAg
RklMRSAqeXlvdXRwdXQ7CiAgICAgaW50IHl5dHlwZTsKICAgICBZWVNUWVBFIGNvbnN0ICogY29u
c3QgeXl2YWx1ZXA7CisgICAgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25wOwogICAg
IFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsKKyAgRklMRSAqeXlvID0geXlvdXRw
dXQ7CisgIFlZVVNFICh5eW8pOwogICBpZiAoIXl5dmFsdWVwKQogICAgIHJldHVybjsKKyAgWVlV
U0UgKHl5bG9jYXRpb25wKTsKICAgWVlVU0UgKGNvbnRleHQpOwogIyBpZmRlZiBZWVBSSU5UCiAg
IGlmICh5eXR5cGUgPCBZWU5UT0tFTlMpCkBAIC0xNDgyLDcgKzE1MTQsNyBAQCB5eV9zeW1ib2xf
dmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsCiAgIHN3aXRjaCAoeXl0eXBlKQogICAgIHsK
ICAgICAgIGRlZmF1bHQ6Ci0JYnJlYWs7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAt
MTQ5NCwxMyArMTUyNiwxNCBAQCB5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5
cGUsCiAjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAg
ICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIHZv
aWQKLXl5X3N5bWJvbF9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUg
Y29uc3QgKiBjb25zdCB5eXZhbHVlcCwgVFBhcnNlQ29udGV4dCogY29udGV4dCkKK3l5X3N5bWJv
bF9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25z
dCB5eXZhbHVlcCwgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25wLCBUUGFyc2VDb250
ZXh0KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zeW1ib2xfcHJpbnQgKHl5b3V0
cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBjb250ZXh0KQoreXlfc3ltYm9sX3ByaW50ICh5eW91dHB1
dCwgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpCiAgICAgRklMRSAqeXlv
dXRwdXQ7CiAgICAgaW50IHl5dHlwZTsKICAgICBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1
ZXA7CisgICAgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25wOwogICAgIFRQYXJzZUNv
bnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsKQEAgLTE1MDksNyArMTU0Miw5IEBAIHl5X3N5bWJv
bF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWwKICAgZWxzZQogICAgIFlZRlBSSU5URiAo
eXlvdXRwdXQsICJudGVybSAlcyAoIiwgeXl0bmFtZVt5eXR5cGVdKTsKIAotICB5eV9zeW1ib2xf
dmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBjb250ZXh0KTsKKyAgWVlf
TE9DQVRJT05fUFJJTlQgKHl5b3V0cHV0LCAqeXlsb2NhdGlvbnApOworICBZWUZQUklOVEYgKHl5
b3V0cHV0LCAiOiAiKTsKKyAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBl
LCB5eXZhbHVlcCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpOwogICBZWUZQUklOVEYgKHl5b3V0cHV0
LCAiKSIpOwogfQogCkBAIC0xNTIxLDE3ICsxNTU2LDIwIEBAIHl5X3N5bWJvbF9wcmludCAoeXlv
dXRwdXQsIHl5dHlwZSwgeXl2YWwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9f
Qzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01T
Q19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqYm90dG9t
LCB5eXR5cGVfaW50MTYgKnRvcCkKK3l5X3N0YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKnl5Ym90
dG9tLCB5eXR5cGVfaW50MTYgKnl5dG9wKQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zdGFja19w
cmludCAoYm90dG9tLCB0b3ApCi0gICAgeXl0eXBlX2ludDE2ICpib3R0b207Ci0gICAgeXl0eXBl
X2ludDE2ICp0b3A7Cit5eV9zdGFja19wcmludCAoeXlib3R0b20sIHl5dG9wKQorICAgIHl5dHlw
ZV9pbnQxNiAqeXlib3R0b207CisgICAgeXl0eXBlX2ludDE2ICp5eXRvcDsKICNlbmRpZgogewog
ICBZWUZQUklOVEYgKHN0ZGVyciwgIlN0YWNrIG5vdyIpOwotICBmb3IgKDsgYm90dG9tIDw9IHRv
cDsgKytib3R0b20pCi0gICAgWVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCAqYm90dG9tKTsKKyAg
Zm9yICg7IHl5Ym90dG9tIDw9IHl5dG9wOyB5eWJvdHRvbSsrKQorICAgIHsKKyAgICAgIGludCB5
eWJvdCA9ICp5eWJvdHRvbTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgeXlib3Qp
OworICAgIH0KICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwogfQogCkBAIC0xNTQ5LDExICsx
NTg3LDEyIEBAIGRvIHsJCQkJCQkJCVwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVk
IF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQg
X01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfcmVkdWNlX3ByaW50IChZWVNUWVBFICp5eXZzcCwg
aW50IHl5cnVsZSwgVFBhcnNlQ29udGV4dCogY29udGV4dCkKK3l5X3JlZHVjZV9wcmludCAoWVlT
VFlQRSAqeXl2c3AsIFlZTFRZUEUgKnl5bHNwLCBpbnQgeXlydWxlLCBUUGFyc2VDb250ZXh0KiBj
b250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eXJ1
bGUsIGNvbnRleHQpCit5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eWxzcCwgeXlydWxlLCBjb250
ZXh0KQogICAgIFlZU1RZUEUgKnl5dnNwOworICAgIFlZTFRZUEUgKnl5bHNwOwogICAgIGludCB5
eXJ1bGU7CiAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dDsKICNlbmRpZgpAQCAtMTU2NiwxOCAr
MTYwNSwxOCBAQCB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eXJ1bGUsIGNvbnRleHQpCiAgIC8q
IFRoZSBzeW1ib2xzIGJlaW5nIHJlZHVjZWQuICAqLwogICBmb3IgKHl5aSA9IDA7IHl5aSA8IHl5
bnJoczsgeXlpKyspCiAgICAgewotICAgICAgZnByaW50ZiAoc3RkZXJyLCAiICAgJCVkID0gIiwg
eXlpICsgMSk7CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEp
OwogICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVdICsg
eXlpXSwKIAkJICAgICAgICYoeXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQotCQkgICAgICAg
CQkgICAgICAgLCBjb250ZXh0KTsKLSAgICAgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7CisJCSAg
ICAgICAsICYoeXlsc3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQkJICAgICAgICwgY29udGV4dCk7
CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7CiAgICAgfQogfQogCiAjIGRlZmluZSBZ
WV9SRURVQ0VfUFJJTlQoUnVsZSkJCVwKIGRvIHsJCQkJCVwKICAgaWYgKHl5ZGVidWcpCQkJCVwK
LSAgICB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCBSdWxlLCBjb250ZXh0KTsgXAorICAgIHl5X3Jl
ZHVjZV9wcmludCAoeXl2c3AsIHl5bHNwLCBSdWxlLCBjb250ZXh0KTsgXAogfSB3aGlsZSAoWVlJ
RCAoMCkpCiAKIC8qIE5vbnplcm8gbWVhbnMgcHJpbnQgcGFyc2UgdHJhY2UuICBJdCBpcyBsZWZ0
IHVuaW5pdGlhbGl6ZWQgc28gdGhhdApAQCAtMTYwNyw3ICsxNjQ2LDYgQEAgaW50IHl5ZGVidWc7
CiAjIGRlZmluZSBZWU1BWERFUFRIIDEwMDAwCiAjZW5kaWYKIAotDAogCiAjaWYgWVlFUlJPUl9W
RVJCT1NFCiAKQEAgLTE3MTAsMTE1ICsxNzQ4LDE0NSBAQCB5eXRuYW1lcnIgKGNoYXIgKnl5cmVz
LCBjb25zdCBjaGFyICp5eXN0CiB9CiAjIGVuZGlmCiAKLS8qIENvcHkgaW50byBZWVJFU1VMVCBh
biBlcnJvciBtZXNzYWdlIGFib3V0IHRoZSB1bmV4cGVjdGVkIHRva2VuCi0gICBZWUNIQVIgd2hp
bGUgaW4gc3RhdGUgWVlTVEFURS4gIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCwK
LSAgIGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcgbnVsbCBieXRlLiAgSWYgWVlSRVNVTFQgaXMg
bnVsbCwgZG8gbm90Ci0gICBjb3B5IGFueXRoaW5nOyBqdXN0IHJldHVybiB0aGUgbnVtYmVyIG9m
IGJ5dGVzIHRoYXQgd291bGQgYmUKLSAgIGNvcGllZC4gIEFzIGEgc3BlY2lhbCBjYXNlLCByZXR1
cm4gMCBpZiBhbiBvcmRpbmFyeSAic3ludGF4IGVycm9yIgotICAgbWVzc2FnZSB3aWxsIGRvLiAg
UmV0dXJuIFlZU0laRV9NQVhJTVVNIGlmIG92ZXJmbG93IG9jY3VycyBkdXJpbmcKLSAgIHNpemUg
Y2FsY3VsYXRpb24uICAqLwotc3RhdGljIFlZU0laRV9UCi15eXN5bnRheF9lcnJvciAoY2hhciAq
eXlyZXN1bHQsIGludCB5eXN0YXRlLCBpbnQgeXljaGFyKQorLyogQ29weSBpbnRvICpZWU1TRywg
d2hpY2ggaXMgb2Ygc2l6ZSAqWVlNU0dfQUxMT0MsIGFuIGVycm9yIG1lc3NhZ2UKKyAgIGFib3V0
IHRoZSB1bmV4cGVjdGVkIHRva2VuIFlZVE9LRU4gZm9yIHRoZSBzdGF0ZSBzdGFjayB3aG9zZSB0
b3AgaXMKKyAgIFlZU1NQLgorCisgICBSZXR1cm4gMCBpZiAqWVlNU0cgd2FzIHN1Y2Nlc3NmdWxs
eSB3cml0dGVuLiAgUmV0dXJuIDEgaWYgKllZTVNHIGlzCisgICBub3QgbGFyZ2UgZW5vdWdoIHRv
IGhvbGQgdGhlIG1lc3NhZ2UuICBJbiB0aGF0IGNhc2UsIGFsc28gc2V0CisgICAqWVlNU0dfQUxM
T0MgdG8gdGhlIHJlcXVpcmVkIG51bWJlciBvZiBieXRlcy4gIFJldHVybiAyIGlmIHRoZQorICAg
cmVxdWlyZWQgbnVtYmVyIG9mIGJ5dGVzIGlzIHRvbyBsYXJnZSB0byBzdG9yZS4gICovCitzdGF0
aWMgaW50Cit5eXN5bnRheF9lcnJvciAoWVlTSVpFX1QgKnl5bXNnX2FsbG9jLCBjaGFyICoqeXlt
c2csCisgICAgICAgICAgICAgICAgeXl0eXBlX2ludDE2ICp5eXNzcCwgaW50IHl5dG9rZW4pCiB7
Ci0gIGludCB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0KLSAgaWYgKCEgKFlZUEFDVF9OSU5GIDwg
eXluICYmIHl5biA8PSBZWUxBU1QpKQotICAgIHJldHVybiAwOwotICBlbHNlCi0gICAgewotICAg
ICAgaW50IHl5dHlwZSA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOwotICAgICAgWVlTSVpFX1QgeXlz
aXplMCA9IHl5dG5hbWVyciAoMCwgeXl0bmFtZVt5eXR5cGVdKTsKLSAgICAgIFlZU0laRV9UIHl5
c2l6ZSA9IHl5c2l6ZTA7Ci0gICAgICBZWVNJWkVfVCB5eXNpemUxOwotICAgICAgaW50IHl5c2l6
ZV9vdmVyZmxvdyA9IDA7Ci0gICAgICBlbnVtIHsgWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1V
TSA9IDUgfTsKLSAgICAgIGNoYXIgY29uc3QgKnl5YXJnW1lZRVJST1JfVkVSQk9TRV9BUkdTX01B
WElNVU1dOwotICAgICAgaW50IHl5eDsKLQotIyBpZiAwCi0gICAgICAvKiBUaGlzIGlzIHNvIHhn
ZXR0ZXh0IHNlZXMgdGhlIHRyYW5zbGF0YWJsZSBmb3JtYXRzIHRoYXQgYXJlCi0JIGNvbnN0cnVj
dGVkIG9uIHRoZSBmbHkuICAqLwotICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQg
JXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3Rpbmcg
JXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3Rpbmcg
JXMgb3IgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBl
Y3RpbmcgJXMgb3IgJXMgb3IgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVj
dGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMgb3IgJXMiKTsKLSMgZW5kaWYKLSAgICAg
IGNoYXIgKnl5Zm10OwotICAgICAgY2hhciBjb25zdCAqeXlmOwotICAgICAgc3RhdGljIGNoYXIg
Y29uc3QgeXl1bmV4cGVjdGVkW10gPSAic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIjsKLSAg
ICAgIHN0YXRpYyBjaGFyIGNvbnN0IHl5ZXhwZWN0aW5nW10gPSAiLCBleHBlY3RpbmcgJXMiOwot
ICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXlvcltdID0gIiBvciAlcyI7Ci0gICAgICBjaGFyIHl5
Zm9ybWF0W3NpemVvZiB5eXVuZXhwZWN0ZWQKLQkJICAgICsgc2l6ZW9mIHl5ZXhwZWN0aW5nIC0g
MQotCQkgICAgKyAoKFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0gLSAyKQotCQkgICAgICAg
KiAoc2l6ZW9mIHl5b3IgLSAxKSldOwotICAgICAgY2hhciBjb25zdCAqeXlwcmVmaXggPSB5eWV4
cGVjdGluZzsKLQotICAgICAgLyogU3RhcnQgWVlYIGF0IC1ZWU4gaWYgbmVnYXRpdmUgdG8gYXZv
aWQgbmVnYXRpdmUgaW5kZXhlcyBpbgotCSBZWUNIRUNLLiAgKi8KLSAgICAgIGludCB5eXhiZWdp
biA9IHl5biA8IDAgPyAteXluIDogMDsKLQotICAgICAgLyogU3RheSB3aXRoaW4gYm91bmRzIG9m
IGJvdGggeXljaGVjayBhbmQgeXl0bmFtZS4gICovCi0gICAgICBpbnQgeXljaGVja2xpbSA9IFlZ
TEFTVCAtIHl5biArIDE7Ci0gICAgICBpbnQgeXl4ZW5kID0geXljaGVja2xpbSA8IFlZTlRPS0VO
UyA/IHl5Y2hlY2tsaW0gOiBZWU5UT0tFTlM7Ci0gICAgICBpbnQgeXljb3VudCA9IDE7Ci0KLSAg
ICAgIHl5YXJnWzBdID0geXl0bmFtZVt5eXR5cGVdOwotICAgICAgeXlmbXQgPSB5eXN0cGNweSAo
eXlmb3JtYXQsIHl5dW5leHBlY3RlZCk7Ci0KLSAgICAgIGZvciAoeXl4ID0geXl4YmVnaW47IHl5
eCA8IHl5eGVuZDsgKyt5eXgpCi0JaWYgKHl5Y2hlY2tbeXl4ICsgeXluXSA9PSB5eXggJiYgeXl4
ICE9IFlZVEVSUk9SKQotCSAgewotCSAgICBpZiAoeXljb3VudCA9PSBZWUVSUk9SX1ZFUkJPU0Vf
QVJHU19NQVhJTVVNKQotCSAgICAgIHsKLQkJeXljb3VudCA9IDE7Ci0JCXl5c2l6ZSA9IHl5c2l6
ZTA7Ci0JCXl5Zm9ybWF0W3NpemVvZiB5eXVuZXhwZWN0ZWQgLSAxXSA9ICdcMCc7Ci0JCWJyZWFr
OwotCSAgICAgIH0KLQkgICAgeXlhcmdbeXljb3VudCsrXSA9IHl5dG5hbWVbeXl4XTsKLQkgICAg
eXlzaXplMSA9IHl5c2l6ZSArIHl5dG5hbWVyciAoMCwgeXl0bmFtZVt5eXhdKTsKLQkgICAgeXlz
aXplX292ZXJmbG93IHw9ICh5eXNpemUxIDwgeXlzaXplKTsKLQkgICAgeXlzaXplID0geXlzaXpl
MTsKLQkgICAgeXlmbXQgPSB5eXN0cGNweSAoeXlmbXQsIHl5cHJlZml4KTsKLQkgICAgeXlwcmVm
aXggPSB5eW9yOwotCSAgfQotCi0gICAgICB5eWYgPSBZWV8oeXlmb3JtYXQpOwotICAgICAgeXlz
aXplMSA9IHl5c2l6ZSArIHl5c3RybGVuICh5eWYpOwotICAgICAgeXlzaXplX292ZXJmbG93IHw9
ICh5eXNpemUxIDwgeXlzaXplKTsKLSAgICAgIHl5c2l6ZSA9IHl5c2l6ZTE7CisgIFlZU0laRV9U
IHl5c2l6ZTAgPSB5eXRuYW1lcnIgKFlZX05VTEwsIHl5dG5hbWVbeXl0b2tlbl0pOworICBZWVNJ
WkVfVCB5eXNpemUgPSB5eXNpemUwOworICBlbnVtIHsgWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFY
SU1VTSA9IDUgfTsKKyAgLyogSW50ZXJuYXRpb25hbGl6ZWQgZm9ybWF0IHN0cmluZy4gKi8KKyAg
Y29uc3QgY2hhciAqeXlmb3JtYXQgPSBZWV9OVUxMOworICAvKiBBcmd1bWVudHMgb2YgeXlmb3Jt
YXQuICovCisgIGNoYXIgY29uc3QgKnl5YXJnW1lZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU1d
OworICAvKiBOdW1iZXIgb2YgcmVwb3J0ZWQgdG9rZW5zIChvbmUgZm9yIHRoZSAidW5leHBlY3Rl
ZCIsIG9uZSBwZXIKKyAgICAgImV4cGVjdGVkIikuICovCisgIGludCB5eWNvdW50ID0gMDsKKwor
ICAvKiBUaGVyZSBhcmUgbWFueSBwb3NzaWJpbGl0aWVzIGhlcmUgdG8gY29uc2lkZXI6CisgICAg
IC0gQXNzdW1lIFlZRkFJTCBpcyBub3QgdXNlZC4gIEl0J3MgdG9vIGZsYXdlZCB0byBjb25zaWRl
ci4gIFNlZQorICAgICAgIDxodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYmlzb24t
cGF0Y2hlcy8yMDA5LTEyL21zZzAwMDI0Lmh0bWw+CisgICAgICAgZm9yIGRldGFpbHMuICBZWUVS
Uk9SIGlzIGZpbmUgYXMgaXQgZG9lcyBub3QgaW52b2tlIHRoaXMKKyAgICAgICBmdW5jdGlvbi4K
KyAgICAgLSBJZiB0aGlzIHN0YXRlIGlzIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVs
dCBhY3Rpb24sIHRoZW4KKyAgICAgICB0aGUgb25seSB3YXkgdGhpcyBmdW5jdGlvbiB3YXMgaW52
b2tlZCBpcyBpZiB0aGUgZGVmYXVsdCBhY3Rpb24KKyAgICAgICBpcyBhbiBlcnJvciBhY3Rpb24u
ICBJbiB0aGF0IGNhc2UsIGRvbid0IGNoZWNrIGZvciBleHBlY3RlZAorICAgICAgIHRva2VucyBi
ZWNhdXNlIHRoZXJlIGFyZSBub25lLgorICAgICAtIFRoZSBvbmx5IHdheSB0aGVyZSBjYW4gYmUg
bm8gbG9va2FoZWFkIHByZXNlbnQgKGluIHl5Y2hhcikgaXMgaWYKKyAgICAgICB0aGlzIHN0YXRl
IGlzIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVsdCBhY3Rpb24uICBUaHVzLAorICAg
ICAgIGRldGVjdGluZyB0aGUgYWJzZW5jZSBvZiBhIGxvb2thaGVhZCBpcyBzdWZmaWNpZW50IHRv
IGRldGVybWluZQorICAgICAgIHRoYXQgdGhlcmUgaXMgbm8gdW5leHBlY3RlZCBvciBleHBlY3Rl
ZCB0b2tlbiB0byByZXBvcnQuICBJbiB0aGF0CisgICAgICAgY2FzZSwganVzdCByZXBvcnQgYSBz
aW1wbGUgInN5bnRheCBlcnJvciIuCisgICAgIC0gRG9uJ3QgYXNzdW1lIHRoZXJlIGlzbid0IGEg
bG9va2FoZWFkIGp1c3QgYmVjYXVzZSB0aGlzIHN0YXRlIGlzIGEKKyAgICAgICBjb25zaXN0ZW50
IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbi4gIFRoZXJlIG1pZ2h0IGhhdmUgYmVlbiBhCisg
ICAgICAgcHJldmlvdXMgaW5jb25zaXN0ZW50IHN0YXRlLCBjb25zaXN0ZW50IHN0YXRlIHdpdGgg
YSBub24tZGVmYXVsdAorICAgICAgIGFjdGlvbiwgb3IgdXNlciBzZW1hbnRpYyBhY3Rpb24gdGhh
dCBtYW5pcHVsYXRlZCB5eWNoYXIuCisgICAgIC0gT2YgY291cnNlLCB0aGUgZXhwZWN0ZWQgdG9r
ZW4gbGlzdCBkZXBlbmRzIG9uIHN0YXRlcyB0byBoYXZlCisgICAgICAgY29ycmVjdCBsb29rYWhl
YWQgaW5mb3JtYXRpb24sIGFuZCBpdCBkZXBlbmRzIG9uIHRoZSBwYXJzZXIgbm90CisgICAgICAg
dG8gcGVyZm9ybSBleHRyYSByZWR1Y3Rpb25zIGFmdGVyIGZldGNoaW5nIGEgbG9va2FoZWFkIGZy
b20gdGhlCisgICAgICAgc2Nhbm5lciBhbmQgYmVmb3JlIGRldGVjdGluZyBhIHN5bnRheCBlcnJv
ci4gIFRodXMsIHN0YXRlIG1lcmdpbmcKKyAgICAgICAoZnJvbSBMQUxSIG9yIElFTFIpIGFuZCBk
ZWZhdWx0IHJlZHVjdGlvbnMgY29ycnVwdCB0aGUgZXhwZWN0ZWQKKyAgICAgICB0b2tlbiBsaXN0
LiAgSG93ZXZlciwgdGhlIGxpc3QgaXMgY29ycmVjdCBmb3IgY2Fub25pY2FsIExSIHdpdGgKKyAg
ICAgICBvbmUgZXhjZXB0aW9uOiBpdCB3aWxsIHN0aWxsIGNvbnRhaW4gYW55IHRva2VuIHRoYXQg
d2lsbCBub3QgYmUKKyAgICAgICBhY2NlcHRlZCBkdWUgdG8gYW4gZXJyb3IgYWN0aW9uIGluIGEg
bGF0ZXIgc3RhdGUuCisgICovCisgIGlmICh5eXRva2VuICE9IFlZRU1QVFkpCisgICAgeworICAg
ICAgaW50IHl5biA9IHl5cGFjdFsqeXlzc3BdOworICAgICAgeXlhcmdbeXljb3VudCsrXSA9IHl5
dG5hbWVbeXl0b2tlbl07CisgICAgICBpZiAoIXl5cGFjdF92YWx1ZV9pc19kZWZhdWx0ICh5eW4p
KQorICAgICAgICB7CisgICAgICAgICAgLyogU3RhcnQgWVlYIGF0IC1ZWU4gaWYgbmVnYXRpdmUg
dG8gYXZvaWQgbmVnYXRpdmUgaW5kZXhlcyBpbgorICAgICAgICAgICAgIFlZQ0hFQ0suICBJbiBv
dGhlciB3b3Jkcywgc2tpcCB0aGUgZmlyc3QgLVlZTiBhY3Rpb25zIGZvcgorICAgICAgICAgICAg
IHRoaXMgc3RhdGUgYmVjYXVzZSB0aGV5IGFyZSBkZWZhdWx0IGFjdGlvbnMuICAqLworICAgICAg
ICAgIGludCB5eXhiZWdpbiA9IHl5biA8IDAgPyAteXluIDogMDsKKyAgICAgICAgICAvKiBTdGF5
IHdpdGhpbiBib3VuZHMgb2YgYm90aCB5eWNoZWNrIGFuZCB5eXRuYW1lLiAgKi8KKyAgICAgICAg
ICBpbnQgeXljaGVja2xpbSA9IFlZTEFTVCAtIHl5biArIDE7CisgICAgICAgICAgaW50IHl5eGVu
ZCA9IHl5Y2hlY2tsaW0gPCBZWU5UT0tFTlMgPyB5eWNoZWNrbGltIDogWVlOVE9LRU5TOworICAg
ICAgICAgIGludCB5eXg7CisKKyAgICAgICAgICBmb3IgKHl5eCA9IHl5eGJlZ2luOyB5eXggPCB5
eXhlbmQ7ICsreXl4KQorICAgICAgICAgICAgaWYgKHl5Y2hlY2tbeXl4ICsgeXluXSA9PSB5eXgg
JiYgeXl4ICE9IFlZVEVSUk9SCisgICAgICAgICAgICAgICAgJiYgIXl5dGFibGVfdmFsdWVfaXNf
ZXJyb3IgKHl5dGFibGVbeXl4ICsgeXluXSkpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoeXljb3VudCA9PSBZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNKQorICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB5eWNvdW50ID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgeXlzaXplID0geXlzaXplMDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgeXlhcmdbeXljb3VudCsrXSA9
IHl5dG5hbWVbeXl4XTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBZWVNJ
WkVfVCB5eXNpemUxID0geXlzaXplICsgeXl0bmFtZXJyIChZWV9OVUxMLCB5eXRuYW1lW3l5eF0p
OworICAgICAgICAgICAgICAgICAgaWYgKCEgKHl5c2l6ZSA8PSB5eXNpemUxCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJiYgeXlzaXplMSA8PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICAgIHl5c2l6ZSA9IHl5
c2l6ZTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CiAKLSAgICAgIGlmICh5eXNpemVfb3ZlcmZsb3cpCi0JcmV0dXJuIFlZU0laRV9NQVhJTVVN
OworICBzd2l0Y2ggKHl5Y291bnQpCisgICAgeworIyBkZWZpbmUgWVlDQVNFXyhOLCBTKSAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICBjYXNlIE46ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgeXlmb3JtYXQgPSBTOyAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgYnJlYWsKKyAgICAgIFlZQ0FTRV8oMCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CisgICAg
ICBZWUNBU0VfKDEsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIikpOworICAgICAg
WVlDQVNFXygyLCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVz
IikpOworICAgICAgWVlDQVNFXygzLCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywg
ZXhwZWN0aW5nICVzIG9yICVzIikpOworICAgICAgWVlDQVNFXyg0LCBZWV8oInN5bnRheCBlcnJv
ciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIikpOworICAgICAgWVlD
QVNFXyg1LCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9y
ICVzIG9yICVzIG9yICVzIikpOworIyB1bmRlZiBZWUNBU0VfCisgICAgfQogCi0gICAgICBpZiAo
eXlyZXN1bHQpCi0JewotCSAgLyogQXZvaWQgc3ByaW50ZiwgYXMgdGhhdCBpbmZyaW5nZXMgb24g
dGhlIHVzZXIncyBuYW1lIHNwYWNlLgotCSAgICAgRG9uJ3QgaGF2ZSB1bmRlZmluZWQgYmVoYXZp
b3IgZXZlbiBpZiB0aGUgdHJhbnNsYXRpb24KLQkgICAgIHByb2R1Y2VkIGEgc3RyaW5nIHdpdGgg
dGhlIHdyb25nIG51bWJlciBvZiAiJXMicy4gICovCi0JICBjaGFyICp5eXAgPSB5eXJlc3VsdDsK
LQkgIGludCB5eWkgPSAwOwotCSAgd2hpbGUgKCgqeXlwID0gKnl5ZikgIT0gJ1wwJykKLQkgICAg
ewotCSAgICAgIGlmICgqeXlwID09ICclJyAmJiB5eWZbMV0gPT0gJ3MnICYmIHl5aSA8IHl5Y291
bnQpCi0JCXsKLQkJICB5eXAgKz0geXl0bmFtZXJyICh5eXAsIHl5YXJnW3l5aSsrXSk7Ci0JCSAg
eXlmICs9IDI7Ci0JCX0KLQkgICAgICBlbHNlCi0JCXsKLQkJICB5eXArKzsKLQkJICB5eWYrKzsK
LQkJfQotCSAgICB9Ci0JfQotICAgICAgcmV0dXJuIHl5c2l6ZTsKKyAgeworICAgIFlZU0laRV9U
IHl5c2l6ZTEgPSB5eXNpemUgKyB5eXN0cmxlbiAoeXlmb3JtYXQpOworICAgIGlmICghICh5eXNp
emUgPD0geXlzaXplMSAmJiB5eXNpemUxIDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCisgICAg
ICByZXR1cm4gMjsKKyAgICB5eXNpemUgPSB5eXNpemUxOworICB9CisKKyAgaWYgKCp5eW1zZ19h
bGxvYyA8IHl5c2l6ZSkKKyAgICB7CisgICAgICAqeXltc2dfYWxsb2MgPSAyICogeXlzaXplOwor
ICAgICAgaWYgKCEgKHl5c2l6ZSA8PSAqeXltc2dfYWxsb2MKKyAgICAgICAgICAgICAmJiAqeXlt
c2dfYWxsb2MgPD0gWVlTVEFDS19BTExPQ19NQVhJTVVNKSkKKyAgICAgICAgKnl5bXNnX2FsbG9j
ID0gWVlTVEFDS19BTExPQ19NQVhJTVVNOworICAgICAgcmV0dXJuIDE7CiAgICAgfQorCisgIC8q
IEF2b2lkIHNwcmludGYsIGFzIHRoYXQgaW5mcmluZ2VzIG9uIHRoZSB1c2VyJ3MgbmFtZSBzcGFj
ZS4KKyAgICAgRG9uJ3QgaGF2ZSB1bmRlZmluZWQgYmVoYXZpb3IgZXZlbiBpZiB0aGUgdHJhbnNs
YXRpb24KKyAgICAgcHJvZHVjZWQgYSBzdHJpbmcgd2l0aCB0aGUgd3JvbmcgbnVtYmVyIG9mICIl
cyJzLiAgKi8KKyAgeworICAgIGNoYXIgKnl5cCA9ICp5eW1zZzsKKyAgICBpbnQgeXlpID0gMDsK
KyAgICB3aGlsZSAoKCp5eXAgPSAqeXlmb3JtYXQpICE9ICdcMCcpCisgICAgICBpZiAoKnl5cCA9
PSAnJScgJiYgeXlmb3JtYXRbMV0gPT0gJ3MnICYmIHl5aSA8IHl5Y291bnQpCisgICAgICAgIHsK
KyAgICAgICAgICB5eXAgKz0geXl0bmFtZXJyICh5eXAsIHl5YXJnW3l5aSsrXSk7CisgICAgICAg
ICAgeXlmb3JtYXQgKz0gMjsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgeXlwKys7CisgICAgICAgICAgeXlmb3JtYXQrKzsKKyAgICAgICAgfQorICB9CisgIHJl
dHVybiAwOwogfQogI2VuZGlmIC8qIFlZRVJST1JfVkVSQk9TRSAqLwotDAogCiAvKi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCBSZWxlYXNlIHRoZSBt
ZW1vcnkgYXNzb2NpYXRlZCB0byB0aGlzIHN5bWJvbC4gIHwKQEAgLTE4MjgsMTcgKzE4OTYsMTkg
QEAgeXlzeW50YXhfZXJyb3IgKGNoYXIgKnl5cmVzdWx0LCBpbnQgeXlzdAogI2lmIChkZWZpbmVk
IF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19j
cGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eWRlc3RydWN0IChj
b25zdCBjaGFyICp5eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFRQYXJzZUNv
bnRleHQqIGNvbnRleHQpCit5eWRlc3RydWN0IChjb25zdCBjaGFyICp5eW1zZywgaW50IHl5dHlw
ZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFlZTFRZUEUgKnl5bG9jYXRpb25wLCBUUGFyc2VDb250ZXh0
KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eWRlc3RydWN0ICh5eW1zZywgeXl0eXBl
LCB5eXZhbHVlcCwgY29udGV4dCkKK3l5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVw
LCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICAgICBjb25zdCBjaGFyICp5eW1zZzsKICAgICBpbnQg
eXl0eXBlOwogICAgIFlZU1RZUEUgKnl5dmFsdWVwOworICAgIFlZTFRZUEUgKnl5bG9jYXRpb25w
OwogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsKICAgWVlVU0UgKHl5dmFs
dWVwKTsKKyAgWVlVU0UgKHl5bG9jYXRpb25wKTsKICAgWVlVU0UgKGNvbnRleHQpOwogCiAgIGlm
ICgheXltc2cpCkBAIC0xODQ5LDI4ICsxOTE5LDkgQEAgeXlkZXN0cnVjdCAoeXltc2csIHl5dHlw
ZSwgeXl2YWx1ZXAsIGNvbgogICAgIHsKIAogICAgICAgZGVmYXVsdDoKLQlicmVhazsKKyAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQotDAotCi0vKiBQcmV2ZW50IHdhcm5pbmdzIGZyb20gLVdtaXNz
aW5nLXByb3RvdHlwZXMuICAqLwotCi0jaWZkZWYgWVlQQVJTRV9QQVJBTQotI2lmIGRlZmluZWQg
X19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cwotaW50IHl5cGFyc2UgKHZvaWQgKllZUEFS
U0VfUEFSQU0pOwotI2Vsc2UKLWludCB5eXBhcnNlICgpOwotI2VuZGlmCi0jZWxzZSAvKiAhIFlZ
UEFSU0VfUEFSQU0gKi8KLSNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3Bs
dXMKLWludCB5eXBhcnNlIChUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKLSNlbHNlCi1pbnQgeXlw
YXJzZSAoKTsKLSNlbmRpZgotI2VuZGlmIC8qICEgWVlQQVJTRV9QQVJBTSAqLwotCi0KIAogCiAK
QEAgLTE5MDEsNzcgKzE5NTIsMTEzIEBAIHl5cGFyc2UgKGNvbnRleHQpCiAjZW5kaWYKICNlbmRp
ZgogewotICAvKiBUaGUgbG9vay1haGVhZCBzeW1ib2wuICAqLworLyogVGhlIGxvb2thaGVhZCBz
eW1ib2wuICAqLwogaW50IHl5Y2hhcjsKIAotLyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBs
b29rLWFoZWFkIHN5bWJvbC4gICovCi1ZWVNUWVBFIHl5bHZhbDsKLQotLyogTnVtYmVyIG9mIHN5
bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KLWludCB5eW5lcnJzOwogCi0gIGludCB5eXN0YXRlOwot
ICBpbnQgeXluOwotICBpbnQgeXlyZXN1bHQ7Ci0gIC8qIE51bWJlciBvZiB0b2tlbnMgdG8gc2hp
ZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLwotICBpbnQgeXllcnJzdGF0dXM7
Ci0gIC8qIExvb2stYWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2Vu
IG51bWJlci4gICovCi0gIGludCB5eXRva2VuID0gMDsKLSNpZiBZWUVSUk9SX1ZFUkJPU0UKLSAg
LyogQnVmZmVyIGZvciBlcnJvciBtZXNzYWdlcywgYW5kIGl0cyBhbGxvY2F0ZWQgc2l6ZS4gICov
Ci0gIGNoYXIgeXltc2didWZbMTI4XTsKLSAgY2hhciAqeXltc2cgPSB5eW1zZ2J1ZjsKLSAgWVlT
SVpFX1QgeXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7CisjaWYgZGVmaW5lZCBfX0dOVUNf
XyAmJiA0MDcgPD0gX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXworLyogU3VwcHJlc3Mg
YW4gaW5jb3JyZWN0IGRpYWdub3N0aWMgYWJvdXQgeXlsdmFsIGJlaW5nIHVuaW5pdGlhbGl6ZWQu
ICAqLworIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfQkVHSU4gXAorICAg
IF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBwdXNoIikgXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlh
Z25vc3RpYyBpZ25vcmVkIFwiLVd1bmluaXRpYWxpemVkXCIiKVwKKyAgICBfUHJhZ21hICgiR0ND
IGRpYWdub3N0aWMgaWdub3JlZCBcIi1XbWF5YmUtdW5pbml0aWFsaXplZFwiIikKKyMgZGVmaW5l
IFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORCBcCisgICAgX1ByYWdtYSAoIkdDQyBk
aWFnbm9zdGljIHBvcCIpCisjZWxzZQorLyogRGVmYXVsdCB2YWx1ZSB1c2VkIGZvciBpbml0aWFs
aXphdGlvbiwgZm9yIHBhY2lmeWluZyBvbGRlciBHQ0NzCisgICBvciBub24tR0NDIGNvbXBpbGVy
cy4gICovCitzdGF0aWMgWVlTVFlQRSB5eXZhbF9kZWZhdWx0OworIyBkZWZpbmUgWVlfSU5JVElB
TF9WQUxVRShWYWx1ZSkgPSBWYWx1ZQogI2VuZGlmCitzdGF0aWMgWVlMVFlQRSB5eWxvY19kZWZh
dWx0CisjIGlmIGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNfVFJJVklB
TAorICA9IHsgMSwgMSwgMSwgMSB9CisjIGVuZGlmCis7CisjaWZuZGVmIFlZX0lHTk9SRV9NQVlC
RV9VTklOSVRJQUxJWkVEX0JFR0lOCisjIGRlZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFM
SVpFRF9CRUdJTgorIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECisj
ZW5kaWYKKyNpZm5kZWYgWVlfSU5JVElBTF9WQUxVRQorIyBkZWZpbmUgWVlfSU5JVElBTF9WQUxV
RShWYWx1ZSkgLyogTm90aGluZy4gKi8KKyNlbmRpZgorCisvKiBUaGUgc2VtYW50aWMgdmFsdWUg
b2YgdGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLworWVlTVFlQRSB5eWx2YWwgWVlfSU5JVElBTF9W
QUxVRSh5eXZhbF9kZWZhdWx0KTsKKworLyogTG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2thaGVh
ZCBzeW1ib2wuICAqLworWVlMVFlQRSB5eWxsb2MgPSB5eWxvY19kZWZhdWx0OwogCi0gIC8qIFRo
cmVlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6Ci0gICAgIGB5eXNzJzogcmVsYXRlZCB0byBzdGF0
ZXMsCi0gICAgIGB5eXZzJzogcmVsYXRlZCB0byBzZW1hbnRpYyB2YWx1ZXMsCi0gICAgIGB5eWxz
JzogcmVsYXRlZCB0byBsb2NhdGlvbnMuCiAKLSAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0aHJ1
IHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93Ci0gICAgIHRvIHJlYWxsb2Nh
dGUgdGhlbSBlbHNld2hlcmUuICAqLworICAgIC8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNv
IGZhci4gICovCisgICAgaW50IHl5bmVycnM7CiAKLSAgLyogVGhlIHN0YXRlIHN0YWNrLiAgKi8K
LSAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKLSAgeXl0eXBlX2ludDE2ICp5eXNz
ID0geXlzc2E7Ci0gIHl5dHlwZV9pbnQxNiAqeXlzc3A7CisgICAgaW50IHl5c3RhdGU7CisgICAg
LyogTnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxl
ZC4gICovCisgICAgaW50IHl5ZXJyc3RhdHVzOwogCi0gIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBz
dGFjay4gICovCi0gIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOwotICBZWVNUWVBFICp5eXZz
ID0geXl2c2E7Ci0gIFlZU1RZUEUgKnl5dnNwOworICAgIC8qIFRoZSBzdGFja3MgYW5kIHRoZWly
IHRvb2xzOgorICAgICAgIGB5eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMuCisgICAgICAgYHl5dnMn
OiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcy4KKyAgICAgICBgeXlscyc6IHJlbGF0ZWQgdG8g
bG9jYXRpb25zLgogCisgICAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0aHJvdWdoIHNlcGFyYXRl
IHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93CisgICAgICAgdG8gcmVhbGxvY2F0ZSB0aGVt
IGVsc2V3aGVyZS4gICovCisKKyAgICAvKiBUaGUgc3RhdGUgc3RhY2suICAqLworICAgIHl5dHlw
ZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07CisgICAgeXl0eXBlX2ludDE2ICp5eXNzOworICAg
IHl5dHlwZV9pbnQxNiAqeXlzc3A7CisKKyAgICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3RhY2su
ICAqLworICAgIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOworICAgIFlZU1RZUEUgKnl5dnM7
CisgICAgWVlTVFlQRSAqeXl2c3A7CiAKKyAgICAvKiBUaGUgbG9jYXRpb24gc3RhY2suICAqLwor
ICAgIFlZTFRZUEUgeXlsc2FbWVlJTklUREVQVEhdOworICAgIFlZTFRZUEUgKnl5bHM7CisgICAg
WVlMVFlQRSAqeXlsc3A7CiAKLSNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiks
IHl5c3NwIC09IChOKSkKKyAgICAvKiBUaGUgbG9jYXRpb25zIHdoZXJlIHRoZSBlcnJvciBzdGFy
dGVkIGFuZCBlbmRlZC4gICovCisgICAgWVlMVFlQRSB5eWVycm9yX3JhbmdlWzNdOwogCi0gIFlZ
U0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7CisgICAgWVlTSVpFX1QgeXlzdGFja3Np
emU7CiAKKyAgaW50IHl5bjsKKyAgaW50IHl5cmVzdWx0OworICAvKiBMb29rYWhlYWQgdG9rZW4g
YXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4gICovCisgIGludCB5eXRv
a2VuID0gMDsKICAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1
ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKICAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KICAgWVlT
VFlQRSB5eXZhbDsKKyAgWVlMVFlQRSB5eWxvYzsKKworI2lmIFlZRVJST1JfVkVSQk9TRQorICAv
KiBCdWZmZXIgZm9yIGVycm9yIG1lc3NhZ2VzLCBhbmQgaXRzIGFsbG9jYXRlZCBzaXplLiAgKi8K
KyAgY2hhciB5eW1zZ2J1ZlsxMjhdOworICBjaGFyICp5eW1zZyA9IHl5bXNnYnVmOworICBZWVNJ
WkVfVCB5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1ZjsKKyNlbmRpZgogCisjZGVmaW5lIFlZ
UE9QU1RBQ0soTikgICAoeXl2c3AgLT0gKE4pLCB5eXNzcCAtPSAoTiksIHl5bHNwIC09IChOKSkK
IAogICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIFJIUyBvZiB0aGUgcmVkdWNlZCBy
dWxlLgogICAgICBLZWVwIHRvIHplcm8gd2hlbiBubyBzeW1ib2wgc2hvdWxkIGJlIHBvcHBlZC4g
ICovCiAgIGludCB5eWxlbiA9IDA7CiAKKyAgeXlzc3AgPSB5eXNzID0geXlzc2E7CisgIHl5dnNw
ID0geXl2cyA9IHl5dnNhOworICB5eWxzcCA9IHl5bHMgPSB5eWxzYTsKKyAgeXlzdGFja3NpemUg
PSBZWUlOSVRERVBUSDsKKwogICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFydGluZyBwYXJzZVxu
IikpOwogCiAgIHl5c3RhdGUgPSAwOwogICB5eWVycnN0YXR1cyA9IDA7CiAgIHl5bmVycnMgPSAw
OwotICB5eWNoYXIgPSBZWUVNUFRZOwkJLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFkLiAgKi8K
LQotICAvKiBJbml0aWFsaXplIHN0YWNrIHBvaW50ZXJzLgotICAgICBXYXN0ZSBvbmUgZWxlbWVu
dCBvZiB2YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2sKLSAgICAgc28gdGhhdCB0aGV5IHN0YXkgb24g
dGhlIHNhbWUgbGV2ZWwgYXMgdGhlIHN0YXRlIHN0YWNrLgotICAgICBUaGUgd2FzdGVkIGVsZW1l
bnRzIGFyZSBuZXZlciBpbml0aWFsaXplZC4gICovCi0KLSAgeXlzc3AgPSB5eXNzOwotICB5eXZz
cCA9IHl5dnM7Ci0KKyAgeXljaGFyID0gWVlFTVBUWTsgLyogQ2F1c2UgYSB0b2tlbiB0byBiZSBy
ZWFkLiAgKi8KKyAgeXlsc3BbMF0gPSB5eWxsb2M7CiAgIGdvdG8geXlzZXRzdGF0ZTsKIAogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0uCkBAIC0xOTk3LDcgKzIwODQsNyBAQCBpbnQgeXluZXJyczsKIAkgICBtZW1vcnkuICAqLwog
CVlZU1RZUEUgKnl5dnMxID0geXl2czsKIAl5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKLQor
CVlZTFRZUEUgKnl5bHMxID0geXlsczsKIAogCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNz
IGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQogCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQg
c3RhY2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKQEAgLTIwMDYsOSArMjA5MywxMCBA
QCBpbnQgeXluZXJyczsKIAl5eW92ZXJmbG93IChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwKIAkJ
ICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9mICgqeXlzc3ApLAogCQkgICAgJnl5dnMxLCB5eXNp
emUgKiBzaXplb2YgKCp5eXZzcCksCi0KKwkJICAgICZ5eWxzMSwgeXlzaXplICogc2l6ZW9mICgq
eXlsc3ApLAogCQkgICAgJnl5c3RhY2tzaXplKTsKIAorCXl5bHMgPSB5eWxzMTsKIAl5eXNzID0g
eXlzczE7CiAJeXl2cyA9IHl5dnMxOwogICAgICAgfQpAQCAtMjAyOSw5ICsyMTE3LDkgQEAgaW50
IHl5bmVycnM7CiAJICAodW5pb24geXlhbGxvYyAqKSBZWVNUQUNLX0FMTE9DIChZWVNUQUNLX0JZ
VEVTICh5eXN0YWNrc2l6ZSkpOwogCWlmICghIHl5cHRyKQogCSAgZ290byB5eWV4aGF1c3RlZGxh
YjsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXNzKTsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXZzKTsK
LQorCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3NfYWxsb2MsIHl5c3MpOworCVlZU1RBQ0tfUkVMT0NB
VEUgKHl5dnNfYWxsb2MsIHl5dnMpOworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5bHNfYWxsb2MsIHl5
bHMpOwogIyAgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQogCWlmICh5eXNzMSAhPSB5eXNzYSkKIAkg
IFlZU1RBQ0tfRlJFRSAoeXlzczEpOwpAQCAtMjA0MSw3ICsyMTI5LDcgQEAgaW50IHl5bmVycnM7
CiAKICAgICAgIHl5c3NwID0geXlzcyArIHl5c2l6ZSAtIDE7CiAgICAgICB5eXZzcCA9IHl5dnMg
KyB5eXNpemUgLSAxOwotCisgICAgICB5eWxzcCA9IHl5bHMgKyB5eXNpemUgLSAxOwogCiAgICAg
ICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFjayBzaXplIGluY3JlYXNlZCB0byAlbHVcbiIsCiAJ
CSAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0YWNrc2l6ZSkpOwpAQCAtMjA1Miw2ICsyMTQwLDkg
QEAgaW50IHl5bmVycnM7CiAKICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiRW50ZXJpbmcgc3RhdGUg
JWRcbiIsIHl5c3RhdGUpKTsKIAorICBpZiAoeXlzdGF0ZSA9PSBZWUZJTkFMKQorICAgIFlZQUND
RVBUOworCiAgIGdvdG8geXliYWNrdXA7CiAKIC8qLS0tLS0tLS0tLS0uCkBAIC0yMDYwLDE2ICsy
MTUxLDE2IEBAIGludCB5eW5lcnJzOwogeXliYWNrdXA6CiAKICAgLyogRG8gYXBwcm9wcmlhdGUg
cHJvY2Vzc2luZyBnaXZlbiB0aGUgY3VycmVudCBzdGF0ZS4gIFJlYWQgYQotICAgICBsb29rLWFo
ZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8K
KyAgICAgbG9va2FoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhh
dmUgb25lLiAgKi8KIAotICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91
dCByZWZlcmVuY2UgdG8gbG9vay1haGVhZCB0b2tlbi4gICovCisgIC8qIEZpcnN0IHRyeSB0byBk
ZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4uICAq
LwogICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0gIGlmICh5eW4gPT0gWVlQQUNUX05JTkYpCisg
IGlmICh5eXBhY3RfdmFsdWVfaXNfZGVmYXVsdCAoeXluKSkKICAgICBnb3RvIHl5ZGVmYXVsdDsK
IAotICAvKiBOb3Qga25vd24gPT4gZ2V0IGEgbG9vay1haGVhZCB0b2tlbiBpZiBkb24ndCBhbHJl
YWR5IGhhdmUgb25lLiAgKi8KKyAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2thaGVhZCB0b2tl
biBpZiBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KIAotICAvKiBZWUNIQVIgaXMgZWl0aGVy
IFlZRU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29rLWFoZWFkIHN5bWJvbC4gICovCisgIC8q
IFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRiBvciBhIHZhbGlkIGxvb2thaGVhZCBz
eW1ib2wuICAqLwogICBpZiAoeXljaGFyID09IFlZRU1QVFkpCiAgICAgewogICAgICAgWVlEUFJJ
TlRGICgoc3RkZXJyLCAiUmVhZGluZyBhIHRva2VuOiAiKSk7CkBAIC0yMDk1LDMwICsyMTg2LDI4
IEBAIHl5YmFja3VwOgogICB5eW4gPSB5eXRhYmxlW3l5bl07CiAgIGlmICh5eW4gPD0gMCkKICAg
ICB7Ci0gICAgICBpZiAoeXluID09IDAgfHwgeXluID09IFlZVEFCTEVfTklORikKLQlnb3RvIHl5
ZXJybGFiOworICAgICAgaWYgKHl5dGFibGVfdmFsdWVfaXNfZXJyb3IgKHl5bikpCisgICAgICAg
IGdvdG8geXllcnJsYWI7CiAgICAgICB5eW4gPSAteXluOwogICAgICAgZ290byB5eXJlZHVjZTsK
ICAgICB9CiAKLSAgaWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCiAgIC8qIENv
dW50IHRva2VucyBzaGlmdGVkIHNpbmNlIGVycm9yOyBhZnRlciB0aHJlZSwgdHVybiBvZmYgZXJy
b3IKICAgICAgc3RhdHVzLiAgKi8KICAgaWYgKHl5ZXJyc3RhdHVzKQogICAgIHl5ZXJyc3RhdHVz
LS07CiAKLSAgLyogU2hpZnQgdGhlIGxvb2stYWhlYWQgdG9rZW4uICAqLworICAvKiBTaGlmdCB0
aGUgbG9va2FoZWFkIHRva2VuLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5
eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jKTsKIAotICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRv
a2VuIHVubGVzcyBpdCBpcyBlb2YuICAqLwotICBpZiAoeXljaGFyICE9IFlZRU9GKQotICAgIHl5
Y2hhciA9IFlZRU1QVFk7CisgIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4uICAqLworICB5
eWNoYXIgPSBZWUVNUFRZOwogCiAgIHl5c3RhdGUgPSB5eW47CisgIFlZX0lHTk9SRV9NQVlCRV9V
TklOSVRJQUxJWkVEX0JFR0lOCiAgICorK3l5dnNwID0geXlsdmFsOwotCisgIFlZX0lHTk9SRV9N
QVlCRV9VTklOSVRJQUxJWkVEX0VORAorICAqKyt5eWxzcCA9IHl5bGxvYzsKICAgZ290byB5eW5l
d3N0YXRlOwogCiAKQEAgLTIxNDksMTggKzIyMzgsMTkgQEAgeXlyZWR1Y2U6CiAgICAgIEdDQyB3
YXJuaW5nIHRoYXQgWVlWQUwgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZC4gICovCiAgIHl5dmFs
ID0geXl2c3BbMS15eWxlbl07CiAKLQorICAvKiBEZWZhdWx0IGxvY2F0aW9uLiAgKi8KKyAgWVlM
TE9DX0RFRkFVTFQgKHl5bG9jLCAoeXlsc3AgLSB5eWxlbiksIHl5bGVuKTsKICAgWVlfUkVEVUNF
X1BSSU5UICh5eW4pOwogICBzd2l0Y2ggKHl5bikKICAgICB7Ci0gICAgICAgIGNhc2UgMjoKKyAg
ICAgICAgY2FzZSA0OgogCiAgICAgewogICAgICAgICAvLyBUaGUgc3ltYm9sIHRhYmxlIHNlYXJj
aCB3YXMgZG9uZSBpbiB0aGUgbGV4aWNhbCBwaGFzZQogICAgICAgICBjb25zdCBUU3ltYm9sKiBz
eW1ib2wgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN5bWJvbDsKICAgICAgICAgY29uc3QgVFZh
cmlhYmxlKiB2YXJpYWJsZTsKICAgICAgICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ1bmRlY2xhcmVk
IGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ1bmRlY2xhcmVk
IGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiBmYWtlVmFyaWFi
bGUgPSBuZXcgVFZhcmlhYmxlKCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBlKTsK
QEAgLTIxNjksMTAgKzIyNTksMTcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAvLyBUaGlzIGlkZW50aWZpZXIgY2FuIG9ubHkgYmUgYSB2YXJpYWJsZSB0eXBlIHN5
bWJvbAogICAgICAgICAgICAgaWYgKCEgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ2YXJp
YWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ2YXJp
YWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3ltYm9s
KTsKKworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmlzVmFyaWFibGVCdWlsdEluKHZhcmlhYmxl
KSAmJiAKKyAgICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkg
JiYKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eWxzcFso
MSkgLSAoMSldKSwgdmFyaWFibGUtPmdldEV4dGVuc2lvbigpKSkgeworICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAg
IC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcsIGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVyeSwg
YW5kIHRoZSBwb29sCkBAIC0yMTgxLDIyICsyMjc4LDIzIEBAIHl5cmVkdWNlOgogICAgICAgICBp
ZiAodmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCApIHsKICAg
ICAgICAgICAgIENvbnN0YW50VW5pb24qIGNvbnN0QXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29uc3RQ
b2ludGVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0KHZhcmlhYmxlLT5nZXRUeXBlKCkpOwotICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICh5
eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2
YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUo
KSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUt
PmdldFR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDM6
CisgIGNhc2UgNToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0OgorICBjYXNlIDY6CiAKICAgICB7CiAgICAg
ICAgIC8vCkBAIC0yMjA0LDE1NSArMjMwMiwxNTEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8vIGNo
ZWNrIGZvciBvdmVyZmxvdyBmb3IgY29uc3RhbnRzCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChh
YnMoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5pKSA+PSAoMSA8PCAxNikpIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgIiBpbnRlZ2VyIGNv
bnN0YW50IG92ZXJmbG93IiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WygxKSAtICgxKV0pLCAiIGludGVnZXIgY29uc3RhbnQgb3ZlcmZsb3ciLCAiIik7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5
LT5zZXRJQ29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5pKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAo
eXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDU6CisgIGNh
c2UgNzoKIAogICAgIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5mKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5s
ZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0p
KTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2OgorICBjYXNlIDg6CiAKICAgICB7CiAg
ICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsK
ICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KCh5eXZzcFsoMSkgLSAoMSldLmxleCkuYik7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDc6CisgIGNhc2UgOToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4OgorICBjYXNlIDEw
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAotICBjYXNlIDk6CisgIGNhc2UgMTE6CiAKICAgICB7CiAgICAgICAgIGlmICgh
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSAmJiAh
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkgJiYg
ISh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKSB7
CiAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldEFzU3ltYm9sTm9kZSgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgIiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBh
cnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDQpXSksICIgbGVmdCBv
ZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0
U3ltYm9sKCkuY19zdHIoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIGxlZnQgb2YgJ1snIGlz
IG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAiZXhwcmVzc2lvbiIpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoNCldKSwgIiBsZWZ0
IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgImV4cHJl
c3Npb24iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAg
ICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5
cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCAmJiAoeXl2c3BbKDMpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAg
ICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNB
cnJheSgpKSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIGFycmF5cwotICAgICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlO
b2RlKCh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0
YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCksICh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgp
LmxpbmUpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkgeyAgLy8gY29uc3RhbnQgZm9sZGluZyBmb3Ig
dmVjdG9ycwotICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVsZHMgZmllbGRzOwotICAgICAgICAg
ICAgICAgIGZpZWxkcy5udW0gPSAxOwotICAgICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzWzBd
ID0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3Rh
bnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsgLy8gbmVlZCB0
byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkK
LSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAg
IH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlz
TWF0cml4KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKLSAgICAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdE1h
dHJpeE5vZGUoKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFz
Q29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgKHl5
dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoNCld
LmxleCkubGluZSk7CisgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgIGlu
dCBpbmRleCA9ICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRB
c0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOworICAgICAgICAgICAgaWYgKGluZGV4IDwg
MCkgeworICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGluZm9TdHJlYW07CisgICAg
ICAgICAgICAgICAgaW5mb1N0cmVhbSA8PCBpbmRleDsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0
cmluZyBpbmZvID0gaW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXlsc3BbKDMpIC0gKDQpXSksICJuZWdhdGl2ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7
CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgIGlu
ZGV4ID0gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlm
ICgoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVy
KCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpIHx8ICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSAmJiAoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0g
KHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRV
bmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSAmJiAhKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSApIHsKLSAgICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAg
ICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFu
Z2UgJyIgPDwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFz
Q29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAi
JyI7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5m
b1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNw
WygyKSAtICg0KV0ubGV4KS5saW5lLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0
QXJyYXlTaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2
c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldE1heEFy
cmF5U2l6ZSgpIDw9ICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0
TWF4U2l6ZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNT
eW1ib2xOb2RlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRUeXBlUG9pbnRlcigpLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25z
dCgpLCB0cnVlLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChjb250ZXh0LT5hcnJheVNldE1heFNpemUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEFzU3ltYm9sTm9kZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50ZXIoKSwgMCwgZmFsc2UsICh5eXZzcFsoMikg
LSAoNCldLmxleCkubGluZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpLT5nZXRJQ29uc3QoKSA+PSAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdl
ICciIDw8ICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0Nv
bnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIici
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4
dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5j
X3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7CisgICAgICAgICAgICBpZiAo
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRR
dWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgeworICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7IC8vIGNvbnN0YW50
IGZvbGRpbmcgZm9yIGFycmF5cworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdEFycmF5Tm9kZShpbmRleCwgKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoNCldKSk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkgeyAgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVj
dG9ycworICAgICAgICAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKKyAgICAgICAg
ICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CisgICAgICAgICAgICAgICAgICAgIGZpZWxkcy5v
ZmZzZXRzWzBdID0gaW5kZXg7IC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSB2Lnh5
IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVs
ZHMsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIp
IC0gKDQpXSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpIHsgLy8gY29uc3RhbnQgZm9sZGlu
ZyBmb3IgbWF0cmljZXMKKyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RNYXRyaXhOb2RlKGluZGV4LCAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICg0KV0pKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlm
ICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpICYm
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0
QXJyYXlTaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIiLCAiWyIsICJhcnJheSBtdXN0IGJlIHJlZGVj
bGFyZWQgd2l0aCBhIHNpemUgYmVmb3JlIGJlaW5nIGluZGV4ZWQgd2l0aCBhIHZhcmlhYmxlIik7
CisgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5pc0FycmF5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49ICh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJy
YXlTaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4
dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8
PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5z
dHIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikg
LSAoNCldKSwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgg
PSAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdl
dEFycmF5U2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5p
c1ZlY3RvcigpIHx8ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5p
c01hdHJpeCgpKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gaW5kZXgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAgICAgICAgICAg
ICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwg
aW5kZXggPDwgIiciOworICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8g
PSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMikgLSAoNCldKSwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOwogICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgICAg
IGluZGV4ID0gICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRU
eXBlKCkuZ2V0Tm9taW5hbFNpemUoKSAtIDE7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4SW5kaXJlY3QsICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2
c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9u
KCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7CisgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eWxzcFsoMikgLSAoNCldKSk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgKHl5dnNwWygxKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDQpXSkpOwogICAgICAgICB9CiAgICAgICAgIGlmICgoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewogICAgICAgICAgICAgQ29uc3RhbnRV
bmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5p
b25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAt
ICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoNCldKSk7
CiAgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmlzQXJyYXkoKSkgewogICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpCi0gICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0
KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCku
Z2V0VHlwZU5hbWUoKSkpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBl
KCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUo
KSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lv
bigpLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXROb21pbmFsU2l6ZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+aXNNYXRyaXgoKSkpOwogCiAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBF
dnFDb25zdCkKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFDb25zdCk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4
KCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUo
KS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QsICh5eXZzcFsoMSkg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAg
ICAgIGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5p
c01hdHJpeCgpKQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5z
ZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKCh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpICYmICh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVh
bGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0KSk7Ci0gICAgICAgIGVsc2UgaWYg
KCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKQot
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBl
KCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUo
KSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lv
bigpLCBFdnFUZW1wb3JhcnkpKTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgaWYgKCh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSB7Cisg
ICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3Qg
PyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgcXVhbGlmaWVyLCAoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOworICAgICAg
ICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5p
c1ZlY3RvcigpKSB7CisgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVy
KCkgPT0gRXZxQ29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgcXVhbGlmaWVy
KSk7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPnNldFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldFR5cGUoKSk7Ci0gICAgO30KKyAgICAgICAgfQorICAgIH0KICAgICBicmVhazsKIAot
ICBjYXNlIDEwOgorICBjYXNlIDEyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDExOgorICBjYXNlIDEzOgog
CiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygz
KSAtICgzKV0ubGV4KS5saW5lLCAiY2Fubm90IGFwcGx5IGRvdCBvcGVyYXRvciB0byBhbiBhcnJh
eSIsICIuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDMpXSks
ICJjYW5ub3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkgewogICAgICAg
ICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5w
YXJzZVZlY3RvckZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVs
ZHMsICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSkpIHsKKyAgICAgICAgICAgIGlmICghIGNv
bnRleHQtPnBhcnNlVmVjdG9yRmllbGRzKCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXpl
KCksIGZpZWxkcywgKHl5bHNwWygzKSAtICgzKV0pKSkgewogICAgICAgICAgICAgICAgIGZpZWxk
cy5udW0gPSAxOwogICAgICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzWzBdID0gMDsKICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlw
ZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9y
IHZlY3RvciBmaWVsZHMKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5l
KTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygzKSAtICgzKV0pKTsKICAgICAgICAgICAgICAgICBp
ZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsKQEAgLTIzNjEsMTMgKzI0NTUsMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwg
RXZxQ29uc3QsIChpbnQpICgqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcpLnNpemUoKSkp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBUU3RyaW5nIHZlY3RvclN0
cmluZyA9ICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZzsKLSAgICAgICAgICAgICAgICBU
SW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmll
bGRzLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRl
eChFT3BWZWN0b3JTd2l6emxlLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAg
ICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxl
KGZpZWxkcywgKHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9w
VmVjdG9yU3dpenpsZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IGluZGV4LCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAoaW50
KSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkp
IHsKICAgICAgICAgICAgIFRNYXRyaXhGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEg
Y29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5n
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNp
emUoKSwgZmllbGRzLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpKSB7CisgICAgICAgICAg
ICBpZiAoISBjb250ZXh0LT5wYXJzZU1hdHJpeEZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4
KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRO
b21pbmFsU2l6ZSgpLCBmaWVsZHMsICh5eWxzcFsoMykgLSAoMyldKSkpIHsKICAgICAgICAgICAg
ICAgICBmaWVsZHMud2hvbGVSb3cgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmaWVsZHMud2hv
bGVDb2wgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmaWVsZHMucm93ID0gMDsKQEAgLTIzNzYs
MTA4ICsyNDcwLDEwMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKGZpZWxkcy53aG9sZVJvdyB8fCBmaWVsZHMud2hvbGVDb2wpIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIgbm9uLXNjYWxh
ciBmaWVsZHMgbm90IGltcGxlbWVudGVkIHlldCIsICIuIik7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIG5vbi1zY2FsYXIgZmllbGRzIG5vdCBp
bXBsZW1lbnRlZCB5ZXQiLCAiLiIpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0
YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KDApOwot
ICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksIGluZGV4LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAg
ICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZx
Q29uc3QpLCAoeXlsc3BbKDMpIC0gKDMpXSkpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJ
bmRleERpcmVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGlu
ZGV4LCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSxFdnFUZW1wb3JhcnksICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpKSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9u
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5
LT5zZXRJQ29uc3QoZmllbGRzLmNvbCAqICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpICsgZmllbGRzLnJvdyk7Ci0gICAgICAgICAgICAg
ICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
ICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVP
cEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
aW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAgICAgVElu
dGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxz
cFsoMykgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eWxzcFso
MikgLSAoMyldKSk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldFByZWNpc2lvbigpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlw
ZSgpID09IEVidFN0cnVjdCkgewogICAgICAgICAgICAgYm9vbCBmaWVsZEZvdW5kID0gZmFsc2U7
Ci0gICAgICAgICAgICBjb25zdCBUVHlwZUxpc3QqIGZpZWxkcyA9ICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgICAg
ICAgICBpZiAoZmllbGRzID09IDApIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJzdHJ1Y3R1cmUgaGFzIG5vIGZpZWxkcyIsICJJ
bnRlcm5hbCBFcnJvciIpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0g
MDsgaSA8IGZpZWxkcy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCgq
ZmllbGRzKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSAqKHl5dnNwWygzKSAtICgzKV0ubGV4
KS5zdHJpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkRm91bmQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9ICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPmZpZWxkcygpOwor
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg
ZmllbGRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGZpZWxkc1tpXS0+bmFt
ZSgpID09ICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZykgeworICAgICAgICAgICAgICAg
ICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRD
b25zdFN0cnVjdCgqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0eXBlLCBub3Qgb2YgdGhl
IHN0cnVjdHVyZSBmaWVsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIHRoZSBz
dHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyBzaGFyZWQgYmV0d2VlbiB2YXJpb3VzIHN0cnVjdHVyZXMu
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uWzFdOwotICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksICooKmZpZWxkcylbaV0u
dHlwZSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdFN0cnVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksIGluZGV4LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5z
ZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoZmllbGRGb3VuZCkgeworICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNv
bnN0KSB7CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0KCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmlu
ZywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikg
LSAoMyldKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOworICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoKmZpZWxk
c1tpXS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZSB0aGUgcXVh
bGlmaWVyIG9mIHRoZSByZXR1cm4gdHlwZSwgbm90IG9mIHRoZSBzdHJ1Y3R1cmUgZmllbGQKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyBz
aGFyZWQgYmV0d2VlbiB2YXJpb3VzIHN0cnVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGVQb2ludGVyKCktPnNldFF1
YWxpZmllcihFdnFDb25zdCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIp
IC0gKDMpXS5sZXgpLmxpbmUsICIgbm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1cmUiLCAoeXl2c3Bb
KDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
CisgICAgICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvblsxXTsKKyAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0
KGkpOworICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgKmZpZWxkc1tpXS0+dHlw
ZSgpLCAoeXlsc3BbKDMpIC0gKDMpXSkpOworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9w
SW5kZXhEaXJlY3RTdHJ1Y3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCBpbmRleCwgKHl5bHNwWygyKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7
CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIgbm8gc3VjaCBmaWVsZCBpbiBz
dHJ1Y3R1cmUiLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiIGZpZWxkIHNlbGVj
dGlvbiByZXF1aXJlcyBzdHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBz
aWRlIiwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIGZpZWxkIHNlbGVjdGlvbiBy
ZXF1aXJlcyBzdHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRlIiwg
KHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAg
IH0KICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlICQzLnN0cmluZywgaXQncyBmcm9tIHRoZSBwb29s
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMjoKKyAgY2FzZSAxNDoKIAog
ICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAt
ICgyKV0ubGV4KS5saW5lLCAiKysiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFso
MikgLSAoMildKSwgIisrIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRo
KEVPcFBvc3RJbmNyZW1lbnQsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVtZW50LCAoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgyKV0pLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0g
MCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMild
LmxleCkubGluZSwgIisrIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVy
cm9yKCh5eWxzcFsoMikgLSAoMildKSwgIisrIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0K
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDEzOgorICBjYXNlIDE1OgogCiAg
ICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygy
KSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgo
RU9wUG9zdERlY3JlbWVudCwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNyZW1lbnQsICh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5saW5lLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJy
b3IoKHl5bHNwWygyKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ6CisgIGNhc2UgMTY6CiAKICAg
ICB7CiAgICAgICAgIGlmIChjb250ZXh0LT5pbnRlZ2VyRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgIltdIikpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTU6CisgIGNhc2UgMTc6CiAKICAgICB7CiAgICAgICAgIFRG
dW5jdGlvbiogZm5DYWxsID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5mdW5jdGlvbjsKQEAg
LTI0OTEsMTggKzI1NzksMTggQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAvLyBUaGVpciBwYXJh
bWV0ZXJzIHdpbGwgYmUgdmVyaWZpZWQgYWxnb3JpdGhtaWNhbGx5LgogICAgICAgICAgICAgLy8K
ICAgICAgICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsgIC8vIHVzZSB0
aGlzIHRvIGdldCB0aGUgdHlwZSBiYWNrCi0gICAgICAgICAgICBpZiAoY29udGV4dC0+Y29uc3Ry
dWN0b3JFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAqZm5DYWxsLCBvcCwgJnR5cGUpKSB7CisgICAg
ICAgICAgICBpZiAoY29udGV4dC0+Y29uc3RydWN0b3JFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAo
MSldKSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAqZm5DYWxsLCBvcCwg
JnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAg
ICAgICAgICAvLyBJdCdzIGEgY29uc3RydWN0b3IsIG9mIHR5cGUgJ3R5cGUnLgogICAgICAgICAg
ICAgICAgIC8vCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+YWRkQ29uc3RydWN0b3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRl
cm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5l
KTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5hZGRDb25zdHJ1Y3RvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUs
ICZ0eXBlLCBvcCwgZm5DYWxsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFn
Z3JlZ2F0ZU9wZXJhdG9yKDAsIG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOwor
ICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwgKHl5bHNwWygxKSAtICgx
KV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+c2V0VHlwZSh0eXBlKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTI1MTEsMTMgKzI1
OTksMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgY29uc3QgVEZ1
bmN0aW9uKiBmbkNhbmRpZGF0ZTsKICAgICAgICAgICAgIGJvb2wgYnVpbHRJbjsKLSAgICAgICAg
ICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKCh5eXZzcFsoMSkgLSAoMSld
LmludGVybSkubGluZSwgZm5DYWxsLCAmYnVpbHRJbik7CisgICAgICAgICAgICBmbkNhbmRpZGF0
ZSA9IGNvbnRleHQtPmZpbmRGdW5jdGlvbigoeXlsc3BbKDEpIC0gKDEpXSksIGZuQ2FsbCwgJmJ1
aWx0SW4pOwogICAgICAgICAgICAgaWYgKGZuQ2FuZGlkYXRlKSB7CiAgICAgICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgICAgICAvLyBBIGRlY2xhcmVkIGZ1bmN0aW9uLgogICAgICAgICAgICAg
ICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKGJ1aWx0SW4gJiYgIWZuQ2FuZGlkYXRlLT5nZXRF
eHRlbnNpb24oKS5lbXB0eSgpICYmCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmV4dGVu
c2lvbkVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCBmbkNhbmRpZGF0
ZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmV4dGVu
c2lvbkVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5z
aW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3AgPSBmbkNhbmRpZGF0ZS0+Z2V0QnVpbHRJ
bk9wKCk7CkBAIC0yNTI5LDcgKzI2MTcsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmVhdCBpdCBsaWtlIGEgYnVp
bHQtaW4gdW5hcnkgb3BlcmF0b3IuCiAgICAgICAgICAgICAgICAgICAgICAgICAvLwotICAgICAg
ICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChvcCwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
KS5pbnRlcm1Ob2RlLCAwLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkVW5hcnlNYXRoKG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5v
ZGUsICh5eWxzcFsoMSkgLSAoMSldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSAg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5m
b1N0cmVhbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwg
ImJ1aWx0IGluIHVuYXJ5IG9wZXJhdG9yIGZ1bmN0aW9uLiAgVHlwZTogIiA8PCBzdGF0aWNfY2Fz
dDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpOwpAQCAtMjUzOCwxMiArMjYyNiwxMiBAQCB5eXJlZHVjZToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBZWUVSUk9SOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdn
cmVnYXRlLCBvcCwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0p
LmludGVybUFnZ3JlZ2F0ZSwgb3AsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIGEgcmVhbCBmdW5jdGlvbiBjYWxsCiAKLSAgICAgICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFn
Z3JlZ2F0ZU9wZXJhdG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRl
LCBFT3BGdW5jdGlvbkNhbGwsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAg
ICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0pLmludGVybUFnZ3JlZ2F0ZSwgRU9wRnVuY3Rpb25DYWxsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OwogICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNl
dFR5cGUoZm5DYW5kaWRhdGUtPmdldFJldHVyblR5cGUoKSk7CiAKICAgICAgICAgICAgICAgICAg
ICAgLy8gdGhpcyBpcyBob3cgd2Uga25vdyB3aGV0aGVyIHRoZSBnaXZlbiBmdW5jdGlvbiBpcyBh
IGJ1aWx0SW4gZnVuY3Rpb24gb3IgYSB1c2VyIGRlZmluZWQgZnVuY3Rpb24KQEAgLTI1NzAsOTAg
KzI2NTgsODggQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgLy8gUHV0IG9uIGEgZHVtbXkg
bm9kZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1
bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25B
cnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5
eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGRlbGV0ZSBmbkNhbGw7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjoKKyAgY2FzZSAxODoKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc6CisgIGNhc2UgMTk6CiAKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMykgLSAoMyldLmludGVybSkubGluZSwgIm1l
dGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQiLCAiIik7CisgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMykgLSAoMyldKSwgIm1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQiLCAiIik7CiAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTg6CisgIGNhc2UgMjA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZz
cFsoMikgLSAoMildLmxleCkubGluZTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBj
YXNlIDE5OgorICBjYXNlIDIxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5
eXZzcFsoMSkgLSAoMildLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAyMDoKKyAgY2FzZSAyMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSku
ZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgICAgICAo
eXl2YWwuaW50ZXJtKS5pbnRlcm1Ob2RlID0gMDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAotICBjYXNlIDIxOgorICBjYXNlIDIzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
KS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCi0gIGNhc2UgMjI6CisgIGNhc2UgMjQ6CiAKICAgICB7CiAgICAgICAgIFRQYXJhbWV0ZXIg
cGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0VHlwZSgpKSB9OwogICAgICAgICAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
ZnVuY3Rpb24pLT5hZGRQYXJhbWV0ZXIocGFyYW0pOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5m
dW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbik7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDIzOgorICBj
YXNlIDI1OgogCiAgICAgewogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5
cGUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSkg
fTsKICAgICAgICAgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+YWRkUGFyYW1l
dGVyKHBhcmFtKTsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1O
b2RlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAo
eXl2YWwuaW50ZXJtKS5pbnRlcm1Ob2RlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dy
ZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pKTsKKyAgICB9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDoKKyAgY2FzZSAyNjoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rp
b24pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjU6CisgIGNhc2UgMjc6
CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC0yNjY3LDM5ICsyNzUzLDM5IEBAIHl5cmVkdWNlOgog
ICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLnR5cGUpLm1hdHJpeCkgewogICAgICAgICAgICAgICAgICAgICBzd2l0
Y2goKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVP
cENvbnN0cnVjdE1hdDI7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDM7ICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDQ7ICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdE1hdDI7ICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdE1hdDM7ICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdE1hdDQ7ICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2l6ZSkgewot
ICAgICAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0VmVjMjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjMzsgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjNDsgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0VmVjMjsgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0VmVjMzsgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0VmVjNDsgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAgICAgICAgICAgICAgc3dpdGNoKCh5
eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25z
dHJ1Y3RJbnQ7ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZF
UlRfT05MWSgiaXZlYzIiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9w
ID0gRU9wQ29uc3RydWN0SVZlYzI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzogICAg
ICAgRlJBR19WRVJUX09OTFkoIml2ZWMzIiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUp
LmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWMzOyBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjNCIsICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjNDsgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEludDsgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0SVZlYzI7IGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdElWZWM0OyBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEVidEJvb2w6
CiAgICAgICAgICAgICAgICAgc3dpdGNoKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5z
aXplKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RCb29sOyAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiYnZlYzIiLCAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzI7IGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWMzIiwgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMz
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJi
dmVjNCIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25z
dHJ1Y3RCVmVjNDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0
cnVjdEJvb2w7ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3Ry
dWN0QlZlYzI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1
Y3RCVmVjMzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVj
dEJWZWM0OyBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChvcCA9PSBFT3BOdWxsKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJjYW5ub3QgY29uc3RydWN0IHRoaXMg
dHlwZSIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBl
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAi
Y2Fubm90IGNvbnN0cnVjdCB0aGlzIHR5cGUiLCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSkudHlwZSkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlw
ZSA9IEVidEZsb2F0OwogICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7CkBA
IC0yNzA5LDcxICsyNzk1LDYwIEBAIHl5cmVkdWNlOgogICAgICAgICBUVHlwZSB0eXBlKCh5eXZz
cFsoMSkgLSAoMSldLmludGVybS50eXBlKSk7CiAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24g
PSBuZXcgVEZ1bmN0aW9uKCZ0ZW1wU3RyaW5nLCB0eXBlLCBvcCk7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0gICAgO30KLSAgICBicmVhazsKLQotICBjYXNl
IDI2OgotCi0gICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5n
KSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShF
YnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3
IFRGdW5jdGlvbigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZywgdHlwZSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyNzoKKyAgY2FzZSAyODoKIAogICAgIHsKLSAgICAgICAgaWYgKGNv
bnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICoo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNl
cnZlZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCAqKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBUVHlw
ZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rp
b24gPSBuZXcgVEZ1bmN0aW9uKCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBlKTsK
ICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBmdW5jdGlvbjsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAotICBjYXNlIDI4OgorICBjYXNlIDI5OgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNl
IDI5OgorICBjYXNlIDMwOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJy
b3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICIrKyIsICh5eXZzcFsoMikgLSAo
MildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1
ZUVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCAiKysiLCAoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlSW5jcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlSW5jcmVtZW50LCAo
eXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygxKSAtICgy
KV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9y
KCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIisrIiwgKHl5dnNwWygyKSAtICgyKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAg
Y29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgIisrIiwgKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDMw
OgorICBjYXNlIDMxOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JD
aGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFsoMikgLSAoMild
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVy
cm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygxKSAtICgyKV0p
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5
eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIi0tIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgIi0tIiwgKHl5dnNwWygyKSAt
ICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDMxOgor
ICBjYXNlIDMyOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
KS5vcCAhPSBFT3BOdWxsKSB7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCh5eXZzcFsoMSkgLSAo
MildLmludGVybSkub3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsK
KyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5vcCwgKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMSkgLSAoMild
KSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXJy
b3JPcCA9ICIiOwogICAgICAgICAgICAgICAgIHN3aXRjaCgoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0pLm9wKSB7CkBAIC0yNzgxLDM1NyArMjg1NiwzNTUgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAg
ICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OiBlcnJvck9wID0gIiEiOyBicmVhazsKICAgICAgICAg
ICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSwg
ZXJyb3JPcCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigo
eXlsc3BbKDEpIC0gKDIpXSksIGVycm9yT3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
Ci0gICAgO30KLSAgICBicmVhazsKLQotICBjYXNlIDMyOgotCi0gICAgeyAoeXl2YWwuaW50ZXJt
KS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9
IEVPcE51bGw7IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMzM6CiAKLSAgICB7ICh5
eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5p
bnRlcm0pLm9wID0gRU9wTmVnYXRpdmU7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVP
cE51bGw7IH0KICAgICBicmVhazsKIAogICBjYXNlIDM0OgogCi0gICAgeyAoeXl2YWwuaW50ZXJt
KS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9
IEVPcExvZ2ljYWxOb3Q7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE5lZ2F0aXZl
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAzNToKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcExvZ2ljYWxOb3Q7IH0KICAgICBicmVh
azsKIAogICBjYXNlIDM2OgogCisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQorICAgIGJyZWFr
OworCisgIGNhc2UgMzc6CisKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIqIiwgKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwg
Y29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BNdWwsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0g
MCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMp
XS5sZXgpLmxpbmUsICIqIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiKiIsICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzc6Cisg
IGNhc2UgMzg6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIvIiwgKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRGl2LCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4
dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BEaXYsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewot
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUsICIvIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiLyIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAg
ICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzg6CisgIGNhc2Ug
Mzk6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDM5OgorICBjYXNlIDQwOgogCiAgICAgewotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcEFkZCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3Bb
KDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5h
cnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIisiLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSks
ICIrIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA0MDoKKyAgY2FzZSA0MToKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJp
bmFyeU1hdGgoRU9wU3ViLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BTdWIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgz
KV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICItIiwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiLSIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCi0gIGNhc2UgNDE6CisgIGNhc2UgNDI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7
fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDQyOgor
ICBjYXNlIDQzOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0MzoKKyAgY2FzZSA0NDoKIAogICAg
IHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAg
ICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAi
PCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5
eWxzcFsoMikgLSAoMyldKSwgIjwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5l
dyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZh
bHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUp
OworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0K
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDQ0OgorICBjYXNlIDQ1OgogCiAg
ICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW4sICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewot
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUsICI+IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiPiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRC
Q29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxl
eCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAg
ICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDU6CisgIGNhc2Ug
NDY6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1YWwsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1YWws
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIp
IC0gKDMpXS5sZXgpLmxpbmUsICI8PSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIjw9IiwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50
VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVu
aW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1
bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIp
IC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA0NjoKKyAgY2FzZSA0NzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRl
clRoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMp
XS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wR3JlYXRlclRoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3Bb
KDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5h
cnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIj49IiwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0p
LCAiPj0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAotICBjYXNlIDQ3OgorICBjYXNlIDQ4OgogCi0gICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA0ODoKKyAgY2FzZSA0OToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1
YWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVxdWFs
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4
dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lLCAiPT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICI9PSIsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1
bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZz
cFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygy
KSAtICgzKV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNh
c2UgNDk6CisgIGNhc2UgNTA6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5vdEVx
dWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCku
bGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BOb3RF
cXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZz
cFsoMikgLSAoMyldLmxleCkubGluZSwgIiE9IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIT0iLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwg
KHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29u
c3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAg
ICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAo
eXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxz
cFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQotICAgIGJyZWFrOwotCi0gIGNhc2Ug
NTA6Ci0KLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDUxOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1MjoKIAotICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgNTM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDU0OgogCisgICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsgfQorICAgIGJyZWFrOworCisgIGNhc2UgNTU6CisKICAgICB7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
aW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICImJiIsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikg
LSAoMyldKSwgIiYmIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3Rh
bnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0g
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1NToKKyAgY2FzZSA1NjoKIAotICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFr
OwogCi0gIGNhc2UgNTY6CisgIGNhc2UgNTc6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRo
KEVPcExvZ2ljYWxYb3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAt
ICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcExvZ2ljYWxYb3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygy
KSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5
T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJeXiIsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwg
Il5eIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsx
XTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
Q29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA1NzoKKyAgY2FzZSA1ODoKIAotICAgIHsgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCi0gIGNh
c2UgNTg6CisgIGNhc2UgNTk6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2lj
YWxPciwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9n
aWNhbE9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwg
Y29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAifHwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJ8fCIsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBD
b25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAg
ICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
ICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5
bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgNTk6CisgIGNhc2UgNjA6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQor
ICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDYwOgorICBj
YXNlIDYxOgogCiAgICAgewotICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2
c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpKSkKKyAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWygy
KSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2
c3BbKDEpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg1KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0
aW9uKCh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoNSldKSk7CiAgICAgICAgIGlmICgoeXl2
c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpICE9ICh5eXZz
cFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpCiAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogCiAgICAgICAgIGlmICgo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICI6IiwgKHl5dnNw
WygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCks
ICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAt
ICg1KV0pLCAiOiIsICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjE6CisgIGNhc2UgNjI6CiAKLSAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsK
IAotICBjYXNlIDYyOgorICBjYXNlIDYzOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+
bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0pLmxpbmUsICJhc3NpZ24i
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMyldKSwgImFzc2lnbiIs
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEFzc2lnbigoeXl2c3BbKDIpIC0gKDMpXS5p
bnRlcm0pLm9wLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyld
LmludGVybSkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRBc3NpZ24oKHl5dnNwWygyKSAtICgzKV0uaW50ZXJt
KS5vcCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwog
ICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9yKCh5eXZzcFsoMikgLSAoMyldLmludGVybSkubGlu
ZSwgImFzc2lnbiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5hc3NpZ25F
cnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
CiAgICAgICAgIH0KLSAgICA7fQotICAgIGJyZWFrOwotCi0gIGNhc2UgNjM6Ci0KLSAgICB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBc3NpZ247
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjQ6CiAKLSAgICB7IEZSQUdfVkVSVF9P
TkxZKCIqPSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50ZXJt
KS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9
IEVPcE11bEFzc2lnbjsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQXNzaWduOyB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2NToKIAotICAgIHsgRlJBR19WRVJUX09OTFkoIi89Iiwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wRGl2QXNz
aWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BNdWxBc3NpZ247IH0KICAgICBi
cmVhazsKIAogICBjYXNlIDY2OgogCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7
ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQWRkQXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVy
bSkub3AgPSBFT3BEaXZBc3NpZ247IH0KICAgICBicmVhazsKIAogICBjYXNlIDY3OgogCi0gICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUg
PSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wU3Vi
QXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBZGRBc3NpZ247IH0KICAg
ICBicmVhazsKIAogICBjYXNlIDY4OgogCisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcFN1
YkFzc2lnbjsgfQorICAgIGJyZWFrOworCisgIGNhc2UgNjk6CisKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjk6
CisgIGNhc2UgNzA6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb21tYSgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb21tYSgo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAg
IGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAg
Y29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIsIiwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNw
WygyKSAtICgzKV0pLCAiLCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzA6CisgIGNhc2UgNzE6CiAKICAgICB7
CiAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAotICBjYXNlIDcxOgorICBjYXNlIDcyOgogCiAgICAgewogICAgICAgICBURnVuY3Rpb24gJmZ1
bmN0aW9uID0gKigoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmZ1bmN0aW9uKTsKQEAgLTMxNDUs
MTMgKzMyMTgsMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb25zdCBUUGFyYW1ldGVyICZw
YXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOwogICAgICAgICAgICAgaWYgKHBhcmFtLm5hbWUg
IT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUVmFyaWFibGUgKnZhcmlhYmxl
ID0gbmV3IFRWYXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlwZSk7CisgICAgICAgICAgICAg
ICAgVFZhcmlhYmxlIHZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJhbS50eXBlKTsKICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1i
b2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLT5nZXROYW1lKCksIHZhcmlhYmxl
LT5nZXRUeXBlKCksICh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSksICh5eXZzcFsoMSkg
LSAoMildLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLmdldE5hbWUo
KSwgdmFyaWFibGUuZ2V0VHlwZSgpLCAoeXlsc3BbKDEpIC0gKDIpXSkpLCAoeXlsc3BbKDEpIC0g
KDIpXSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdn
cmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwg
KnBhcmFtLnR5cGUsICh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSksICh5eXZzcFsoMSkg
LSAoMildLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgKHl5bHNwWygxKSAtICgyKV0pKSwg
KHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAK
QEAgLTMxNTksMzQgKzMyMzIsMzQgQEAgeXlyZWR1Y2U6CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSkgPSBwcm90b3R5cGU7CiAKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUu
cG9wKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3MjoKKyAgY2FzZSA3
MzoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMildLmludGVybSkuaW50ZXJt
QWdncmVnYXRlKQogICAgICAgICAgICAgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5pbnRlcm1B
Z2dyZWdhdGUtPnNldE9wKEVPcERlY2xhcmF0aW9uKTsKICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybSkuaW50ZXJtQWdncmVnYXRlOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzM6CisgIGNhc2UgNzQ6CiAKICAg
ICB7CiAgICAgICAgIGlmICgoKHl5dnNwWygyKSAtICg0KV0uaW50ZXJtLnByZWNpc2lvbikgPT0g
RWJwSGlnaCkgJiYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gU0hfRlJBR01FTlRfU0hBREVSKSAm
JiAhY29udGV4dC0+ZnJhZ21lbnRQcmVjaXNpb25IaWdoKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXl2c3BbKDEpIC0gKDQpXS5sZXgpLmxpbmUsICJwcmVjaXNpb24gaXMgbm90IHN1
cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoNCldKSwgInByZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVk
IGluIGZyYWdtZW50IHNoYWRlciIsICJoaWdocCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGlmICghY29udGV4dC0+c3ltYm9sVGFibGUuc2V0
RGVmYXVsdFByZWNpc2lvbiggKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3Bb
KDIpIC0gKDQpXS5pbnRlcm0ucHJlY2lzaW9uKSApKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXl2c3BbKDEpIC0gKDQpXS5sZXgpLmxpbmUsICJpbGxlZ2FsIHR5cGUgYXJndW1lbnQg
Zm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFso
MykgLSAoNCldLmludGVybS50eXBlKS50eXBlKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXlsc3BbKDEpIC0gKDQpXSksICJpbGxlZ2FsIHR5cGUgYXJndW1lbnQgZm9yIGRlZmF1bHQg
cHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFsoMykgLSAoNCldLmlu
dGVybS50eXBlKS50eXBlKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3NDoKKyAgY2FzZSA3NToKIAogICAgIHsKICAgICAg
ICAgLy8KQEAgLTMyMDAsMTIgKzMyNzMsMTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRGdW5jdGlv
biogcHJldkRlYyA9IHN0YXRpY19jYXN0PFRGdW5jdGlvbio+KGNvbnRleHQtPnN5bWJvbFRhYmxl
LmZpbmQoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0TWFuZ2xlZE5hbWUo
KSkpOwogICAgICAgICBpZiAocHJldkRlYykgewogICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdl
dFJldHVyblR5cGUoKSAhPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRS
ZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIp
IC0gKDIpXS5sZXgpLmxpbmUsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNh
bWUgcmV0dXJuIHR5cGUiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRS
ZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZl
IHRoZSBzYW1lIHJldHVybiB0eXBlIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9u
KS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFyYW1Db3VudCgpOyArK2kpIHsKICAgICAgICAgICAg
ICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkgIT0gKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVh
bGlmaWVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygy
KSAtICgyKV0ubGV4KS5saW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBz
YW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0
aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJvdmVybG9hZGVk
IGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFs
aWZpZXJTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zMjE3LDI5ICszMjkwLDI4IEBA
IHl5cmVkdWNlOgogICAgICAgICAvLyBiZWluZyByZWRlY2xhcmVkLiAgU28sIHBhc3MgYmFjayB1
cCB0aGlzIGRlY2xhcmF0aW9uLCBub3QgdGhlIG9uZSBpbiB0aGUgc3ltYm9sIHRhYmxlLgogICAg
ICAgICAvLwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAo
MildLmludGVybS5mdW5jdGlvbik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2
c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAKICAgICAgICAgLy8gV2UncmUgYXQgdGhlIGlubmVy
IHNjb3BlIGxldmVsIG9mIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cyBhbmQgYm9keSBzdGF0ZW1l
bnQuCiAgICAgICAgIC8vIEFkZCB0aGUgZnVuY3Rpb24gcHJvdG90eXBlIHRvIHRoZSBzdXJyb3Vu
ZGluZyBzY29wZSBpbnN0ZWFkLgogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5nZXRPdXRl
ckxldmVsKCktPmluc2VydCgqKHl5dmFsLmludGVybSkuZnVuY3Rpb24pOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzU6CisgIGNhc2UgNzY6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1bmN0
aW9uKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDc2OgorICBjYXNlIDc3
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5mdW5jdGlvbik7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA3NzoKKyAgY2FzZSA3ODoKIAogICAgIHsKICAgICAgICAgLy8gQWRkIHRoZSBwYXJhbWV0
ZXIKQEAgLTMyNDgsMTAgKzMzMjAsMTAgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5hZGRQYXJhbWV0ZXIoKHl5dnNwWygyKSAtICgy
KV0uaW50ZXJtKS5wYXJhbSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRlbGV0ZSAoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtLnR5cGU7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSA3ODoKKyAgY2FzZSA3OToKIAogICAgIHsKICAgICAgICAgLy8KQEAgLTMy
NjIsNyArMzMzNCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8v
IFRoaXMgcGFyYW1ldGVyID4gZmlyc3QgaXMgdm9pZAogICAgICAgICAgICAgLy8KLSAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgImNhbm5vdCBi
ZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSciLCAidm9pZCIpOworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiY2Fubm90IGJlIGFuIGFy
Z3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBkZWxldGUgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtKS5wYXJhbS50eXBlOwogICAgICAgICB9IGVsc2UgewpAQCAtMzI3MCwxOCArMzM0Miwx
OCBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmZ1bmN0aW9uKTsKICAgICAgICAgICAgICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5mdW5jdGlvbiktPmFkZFBhcmFtZXRlcigoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0pLnBhcmFtKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0g
IGNhc2UgNzk6CisgIGNhc2UgODA6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyICE9IEV2cUdsb2JhbCAmJiAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAibm8gcXVhbGlm
aWVycyBhbGxvd2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZv
ciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9CiAgICAgICAgIC8vIG1ha2Ugc3VyZSBhIHNhbXBsZXIgaXMgbm90IGludm9s
dmVkIGFzIHdlbGwuLi4KLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVj
aygoeXlsc3BbKDIpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBmdW5j
dGlvbiBhcyBhIHByb3RvdHlwZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCBy
ZWN1cnNpb24pCkBAIC0zMjkxLDcwMyArMzM2Myw2OTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247CiAgICAgICAgIAogICAgICAgICBjb250
ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA4MDoKKyAgY2FzZSA4MToKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAo
MildLmludGVybS50eXBlKS50eXBlID09IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgImlsbGVnYWwgdXNlIG9mIHR5cGUg
J3ZvaWQnIiwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiaWxsZWdhbCB1c2Ugb2Yg
dHlwZSAndm9pZCciLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNv
bnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICoo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNl
cnZlZEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4
KS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBUUGFy
YW1ldGVyIHBhcmFtID0geyh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBuZXcgVFR5cGUo
KHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpKX07Ci0gICAgICAgICh5eXZhbC5pbnRlcm0p
LmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0pLnBhcmFtID0gcGFyYW07Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4
MToKKyAgY2FzZSA4MjoKIAogICAgIHsKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gbWFr
ZSBhbiBhcnJheSBvdXQgb2YgdGhpcyB0eXBlCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5
cGVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1
KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hl
Y2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5y
ZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygy
KSAtICg1KV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJv
ckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5n
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBpbnQgc2l6ZTsK
LSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1
KV0ubGV4KS5saW5lLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
c2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFso
MykgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNp
emUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2c3BbKDEp
IC0gKDUpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAKICAgICAgICAgVFR5
cGUqIHR5cGUgPSBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKTsKICAg
ICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcs
IHR5cGUgfTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoNSld
LmxleCkubGluZTsKICAgICAgICAgKHl5dmFsLmludGVybSkucGFyYW0gPSBwYXJhbTsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDgyOgorICBjYXNlIDgzOgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
KS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3Bb
KDIpIC0gKDMpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0p
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0g
KDMpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA4MzoKKyAgY2FzZSA4NDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkg
PSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1l
dGVyU2FtcGxlckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikgLSAoMildLmludGVy
bSkucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJy
b3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFs
aWZpZXIpLCAqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JD
aGVjaygoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLmxpbmUsIEV2cVRlbXBvcmFyeSwgKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUp
KQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMild
KSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5
dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4NDoKKyAgY2FzZSA4NToKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0p
OwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyld
LmludGVybSkubGluZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwg
KHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFt
LnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMykg
LSAoMyldKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNw
WygyKSAtICgzKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgODU6CisgIGNhc2UgODY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0pID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRleHQt
PnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmludGVybSkubGlu
ZSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICooeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2Ft
cGxlckVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0udHlwZSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJh
bUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCBFdnFUZW1wb3Jhcnks
ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJh
bS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDIp
IC0gKDIpXSksIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmll
ciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgODY6CisgIGNhc2Ug
ODc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUluOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgODc6CisgIGNhc2UgODg6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUluOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgODg6CisgIGNhc2UgODk6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cU91dDsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAotICBjYXNlIDg5OgorICBjYXNlIDkwOgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFJbk91dDsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDkwOgorICBjYXNlIDkxOgogCiAgICAgewogICAgICAgICBUUGFyYW1ldGVy
IHBhcmFtID0geyAwLCBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpKSB9
OwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5wYXJhbSA9IHBhcmFtOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgOTE6CisgIGNhc2UgOTI6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAotICBjYXNlIDkyOgorICBjYXNlIDkzOgogCiAgICAgewogICAgICAgICBp
ZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS50eXBlLnR5cGUgPT0gRWJ0SW52YXJpYW50ICYm
ICEoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAidW5kZWNsYXJlZCBp
ZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICh5eXZzcFsoMykgLSAoMyldLmxleCku
c3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMykg
LSAoMyldKSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1i
b2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDMpIC0gKDMp
XS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS50eXBlKSwgKHl5
dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJt
QWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBzeW1ib2wsICh5eXZzcFsoMykgLSAoMyldLmxl
eCkubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCBUVHlw
ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLnR5cGUpLCAoeXlsc3BbKDMpIC0gKDMpXSkpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVybU5vZGUs
IHN5bWJvbCwgKHl5bHNwWygzKSAtICgzKV0pKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmxleCkubGlu
ZSwgKHl5dmFsLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFs
aWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKHl5dmFsLmludGVybSkudHlwZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQt
Pm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAqKHl5
dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZhbHNlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygzKSAt
ICgzKV0pLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5
cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBU
VmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJv
ckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoMyldLmxl
eCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSksICooeXl2c3BbKDMp
IC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgdmFyaWFibGUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoc3ltYm9sICYmIHZhcmlh
YmxlKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5MzoKKyAgY2FzZSA5NDoKIAog
ICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5
dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUp
KQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3Bb
KDMpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25z
dEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg1
KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgdHJ1ZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAo
NSldKSwgKih5eXZzcFsoMykgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0pLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAg
ICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKTsKIAotICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDUpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJy
YXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSwgKHl5dnNw
WygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlw
ZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0p
LnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0g
KDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgKHl5dnNwWygxKSAt
ICg1KV0uaW50ZXJtKS50eXBlLnNldEFycmF5KHRydWUpOwogICAgICAgICAgICAgVFZhcmlhYmxl
KiB2YXJpYWJsZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5
dnNwWyg0KSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcs
ICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgdmFyaWFibGUpKQorICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDUpXSksICooeXl2c3Bb
KDMpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB2
YXJpYWJsZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NDoKKyAgY2FzZSA5NToKIAog
ICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5
dnNwWygzKSAtICg2KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUp
KQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3Bb
KDMpIC0gKDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25z
dEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg2
KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSwgdHJ1ZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAo
NildKSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDYpXS5p
bnRlcm0pLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAg
ICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKTsKIAotICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDYpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJy
YXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNildLmxleCkubGluZSwgKHl5dnNw
WygxKSAtICg2KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlw
ZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0p
LnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0g
KDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0g
ICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDQpIC0g
KDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoNSkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5
eWxzcFsoNCkgLSAoNildKSwgKHl5dnNwWyg1KSAtICg2KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksIHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZS5zZXRBcnJheSh0cnVlLCBzaXplKTsK
ICAgICAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICooeXl2
c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBl
LCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5
eWxzcFsoNCkgLSAoNildKSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCAoeXl2c3Bb
KDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlID0gVFR5cGUoKHl5dnNwWygx
KSAtICg2KV0uaW50ZXJtKS50eXBlKTsKICAgICAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNp
emUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS5p
bnRlcm1Ob2RlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlID8gdmFy
aWFibGUtPmdldFVuaXF1ZUlkKCkgOiAwLCAqKHl5dnNwWygzKSAtICg2KV0ubGV4KS5zdHJpbmcs
IHR5cGUsICh5eXZzcFsoMykgLSAoNildLmxleCkubGluZSksICh5eXZzcFsoMykgLSAoNildLmxl
eCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDYpXS5pbnRl
cm0pLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUg
PyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0
cmluZywgdHlwZSwgKHl5bHNwWygzKSAtICg2KV0pKSwgKHl5bHNwWygzKSAtICg2KV0pKTsKICAg
ICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTU6CisgIGNhc2Ug
OTY6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJt
KS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
KHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0g
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKTsKIAogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJt
Tm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5dnNwWygz
KSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CisgICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0
ZUluaXRpYWxpemVyKCh5eWxzcFsoMykgLSAoNSldKSwgKih5eXZzcFsoMykgLSAoNSldLmxleCku
c3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsICh5eXZzcFsoNSkgLSAoNSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAgICAgLy8K
ICAgICAgICAgICAgIC8vIGJ1aWxkIHRoZSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICBpZiAoaW50ZXJtTm9kZSkKLSAgICAgICAgKHl5dmFs
LmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dy
ZWdhdGUoKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBpbnRlcm1Ob2RlLCAo
eXl2c3BbKDQpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3Bb
KDEpIC0gKDUpXS5pbnRlcm0pLmludGVybU5vZGUsIGludGVybU5vZGUsICh5eWxzcFsoNCkgLSAo
NSldKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybSku
aW50ZXJtQWdncmVnYXRlID0gKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdh
dGU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAwOwogICAgICAgICB9
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NjoKKyAgY2FzZSA5NzoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS50eXBlKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCgwLCAiIiwgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpKSwgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0udHlwZSkubGluZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdn
cmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LnR5cGUpKSwgKHl5bHNwWygxKSAtICgxKV0pKSwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NzoKKyAgY2FzZSA5ODoKIAogICAgIHsKLSAgICAgICAg
VEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMild
LmludGVybS50eXBlKSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtl
QWdncmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAg
VEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMild
LmludGVybS50eXBlKSksICh5eWxzcFsoMikgLSAoMildKSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRl
KHN5bWJvbCwgKHl5bHNwWygyKSAtICgyKV0pKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGlu
ZSwgKHl5dmFsLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFs
aWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgKHl5dmFsLmludGVybSkudHlwZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQt
Pm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAqKHl5
dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZhbHNlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygyKSAt
ICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5
cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS50eXBlKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAg
aWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGlu
ZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCB2
YXJpYWJsZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXlsc3Bb
KDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVy
bSkudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2
YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA5ODoKKyAgY2FzZSA5OToKIAogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90
IHN1cHBvcnRlZCIsICh5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0KV0pLCAidW5zaXplZCBhcnJheSBk
ZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIsICh5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5n
LT5jX3N0cigpKTsKICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRJbnRl
cm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5
eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0udHlwZSkpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwu
aW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3Jl
Z2F0ZShzeW1ib2wsICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7CisgICAgICAgIFRJbnRl
cm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5
eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0udHlwZSkpLCAoeXlsc3BbKDIpIC0gKDQpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1i
b2wsICh5eWxzcFsoMikgLSAoNCldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA5OToKKyAgY2FzZSAxMDA6CiAKICAgICB7CiAgICAgICAgIFRUeXBlIHR5cGUg
PSBUVHlwZSgoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpOwogICAgICAgICBpbnQgc2l6
ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAt
ICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxz
cFsoMikgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB0eXBlLnNl
dEFycmF5U2l6ZShzaXplKTsKLSAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJp
bmcsIHR5cGUsICh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVn
YXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAgICAgVEludGVy
bVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5
dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsIHR5cGUsICh5eWxzcFsoMikgLSAoNSldKSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5bHNwWygyKSAtICg1KV0pKTsKICAgICAgICAg
Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFso
MikgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKKyAg
ICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygyKSAt
ICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJv
ckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSwgKih5eXZzcFsoMikgLSAoNSldLmxl
eCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSksIHRydWUpKQorICAgICAg
ICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUpXSks
ICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJt
LnR5cGUpLCB0cnVlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAg
ICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpOwog
Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAo
NSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSB8fCBjb250ZXh0
LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAo
eXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmlu
dGVybS50eXBlKSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFso
MykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQgc2l6
ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFso
MykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksIHNpemUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hl
Y2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAg
ICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSwg
c2l6ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5l
LCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVy
bS50eXBlKSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JD
aGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJv
bCkKICAgICAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgp
KTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAwOgor
ICBjYXNlIDEwMToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmll
ckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJy
b3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBl
KSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmlu
dGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKTsKIAogICAgICAgICBU
SW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5p
dGlhbGl6ZXIoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg0KV0u
bGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CisgICAgICAgIGlm
ICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eWxzcFsoMikgLSAoNCldKSwgKih5eXZz
cFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSks
ICh5eXZzcFsoNCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkg
ewogICAgICAgICAvLwogICAgICAgICAvLyBCdWlsZCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRp
b24KICAgICAgICAgLy8KICAgICAgICAgICAgIGlmKGludGVybU5vZGUpCi0gICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgKHl5dnNwWygzKSAtICg0KV0ubGV4KS5saW5lKTsK
KyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCAoeXlsc3BbKDMpIC0gKDQp
XSkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmlu
dGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUg
PSAwOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDE6
CisgIGNhc2UgMTAyOgogCiAgICAgewotICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRl
Y2xhcmF0aW9uIiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQor
ICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgKHl5bHNwWygxKSAt
ICgyKV0pKTsKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygx
KSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlh
bnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAo
eXl2YWwuaW50ZXJtKS50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFy
eWluZ091dCwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybSkudHlwZS5zZXRCYXNpYyhFYnRJbnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQs
ICh5eWxzcFsoMikgLSAoMildKSk7CiAgICAgICAgIGlmICghKHl5dnNwWygyKSAtICgyKV0ubGV4
KS5zeW1ib2wpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MikgLSAoMildLmxleCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBp
bnZhcmlhbnQiLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJ1bmRlY2xhcmVkIGlk
ZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5z
dHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAwOwog
ICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgVEludGVybVN5
bWJvbCAqc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNw
WygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXl2
c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9s
LCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgVEludGVybVN5bWJv
bCAqc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygy
KSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXlsc3Bb
KDIpIC0gKDIpXSkpOworICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRl
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3BbKDIp
IC0gKDIpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxMDI6CisgIGNhc2UgMTAzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpOwogCiAgICAgICAgIGlmICgoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lLCAibm90IHN1cHBvcnRlZCIs
ICJmaXJzdC1jbGFzcyBhcnJheSIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WygxKSAtICgxKV0pLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpLnNldEFycmF5KGZhbHNlKTsKICAgICAgICAgfQotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAzOgorICBjYXNlIDEwNDoKIAogICAgIHsKICAgICAg
ICAgaWYgKCh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS5hcnJheSkgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJu
b3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNz
IGFycmF5Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAo
eXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIg
PT0gRXZxQXR0cmlidXRlICYmCiAgICAgICAgICAgICAoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJt
LnR5cGUpLnR5cGUgPT0gRWJ0Qm9vbCB8fCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSku
dHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIp
IC0gKDIpXS5pbnRlcm0udHlwZSkubGluZSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1
YWxpZmllclN0cmluZygoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJjYW5ub3Qg
YmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLnR5cGUpLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICgoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1
YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUp
LnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nT3V0KSAmJgogICAgICAgICAgICAgKCh5eXZzcFsoMikg
LSAoMildLmludGVybS50eXBlKS50eXBlID09IEVidEJvb2wgfHwgKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0SW50KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJjYW5ub3QgYmUgYm9vbCBv
ciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUp
LnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgy
KV0pLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZzcFso
MSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnF1YWxpZmllciA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXI7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDQ6CisgIGNhc2UgMTA1OgogCiAg
ICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUNv
bnN0LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQ29uc3QsICh5eWxzcFsoMSkgLSAo
MSldKSk7CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTA1OgorICBjYXNlIDEwNjoKIAog
ICAgIHsKLSAgICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpLCAiYXR0cmlidXRlIikpCisgICAgICAgIFZFUlRFWF9PTkxZKCJhdHRyaWJ1dGUiLCAoeXls
c3BbKDEpIC0gKDEpXSkpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygo
eXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwg
ImF0dHJpYnV0ZSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgKHl5bHNwWygxKSAtICgxKV0pKTsK
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDY6CisgIGNhc2UgMTA3OgogCiAgICAgewot
ICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5s
ZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgInZhcnlpbmci
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgx
KV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ2YXJ5aW5nIikpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChjb250ZXh0LT5zaGFk
ZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZv
aWQsIEV2cVZhcnlpbmdPdXQsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWlu
Z0luLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgKHl5bHNw
WygxKSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDc6CisgIGNhc2Ug
MTA4OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXl2
c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxF
cnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gU0hfVkVSVEVYX1NI
QURFUikKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwg
RXZxSW52YXJpYW50VmFyeWluZ091dCwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJp
YW50VmFyeWluZ091dCwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRW
YXJ5aW5nSW4sICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7Ci0gICAgO30KKyAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50VmFy
eWluZ0luLCAoeXlsc3BbKDEpIC0gKDIpXSkpOworICAgIH0KICAgICBicmVhazsKIAotICBjYXNl
IDEwODoKKyAgY2FzZSAxMDk6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxF
cnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xv
YmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSwgInVuaWZvcm0iKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlm
b3JtLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVW5pZm9ybSwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDk6CisgIGNhc2UgMTEwOgog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLnR5cGUpOwogCiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lv
biA9PSBFYnBVbmRlZmluZWQpIHsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucHJl
Y2lzaW9uID0gY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+
cHJlY2lzaW9uRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSwg
KHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24sICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKS50eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPnByZWNpc2lvbkVycm9yQ2hl
Y2soKHl5bHNwWygxKSAtICgxKV0pLCAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiwgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTA6CisgIGNhc2UgMTExOgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpOwog
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiA9ICh5eXZzcFsoMSkgLSAoMild
LmludGVybS5wcmVjaXNpb24pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTExOgorICBjYXNlIDExMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNp
b24pID0gRWJwSGlnaDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDExMjoK
KyAgY2FzZSAxMTM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9
IEVicE1lZGl1bTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDExMzoKKyAg
Y2FzZSAxMTQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVi
cExvdzsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDExNDoKKyAgY2FzZSAx
MTU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
MTU6CisgIGNhc2UgMTE2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0g
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVy
cm9yQ2hlY2soKHl5bHNwWygyKSAtICg0KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlw
ZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVy
cm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDMpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMykgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFycmF5KHRy
dWUsIHNpemUpOwogICAgICAgICB9Ci0gICAgO30KLSAgICBicmVhazsKLQotICBjYXNlIDExNjoK
LQotICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMTc6CiAK
ICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFZvaWQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMTE4OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXl2
c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTE5OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
Qm9vbCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjA6CiAKICAgICB7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30KKyAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3Bb
KDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyMToKIAogICAgIHsK
ICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKLSAgICA7
fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAo
eXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3Jl
Z2F0ZSgyKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjI6CiAKICAgICB7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7Ci0gICAgO30KKyAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNw
WygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUo
Myk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTIzOgogCiAgICAgewogICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30KKyAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI0OgogCiAgICAgewogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0Qm9vbCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxMjU6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29s
LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOworICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDEyNjoKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxMjc6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdn
cmVnYXRlKDMpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjg6
CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQp
OwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBx
dWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEFnZ3JlZ2F0ZSgzKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjk6CiAKICAgICB7
Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJtYXQyIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5s
aW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5s
ZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyLCB0
cnVlKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidElu
dCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRBZ2dyZWdhdGUoNCk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMwOgogCiAg
ICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgibWF0MyIsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUo
MywgdHJ1ZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRBZ2dyZWdhdGUoMiwgdHJ1ZSk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTMxOgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgibWF0NCIsICh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRBZ2dyZWdhdGUoNCwgdHJ1ZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7CisgICAgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTMyOgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2Ft
cGxlcjJEIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVi
dFNhbXBsZXIyRCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXls
c3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0
ZSg0LCB0cnVlKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzM6CiAKICAgICB7Ci0g
ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyQ3ViZSIsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzQ6CiAKICAgICB7CisgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRT
YW1wbGVyQ3ViZSwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9CisgICAgYnJlYWs7
CisKKyAgY2FzZSAxMzU6CisKKyAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNF
eHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAidW5zdXBwb3J0ZWQgdHlw
ZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMSkgLSAoMSldKSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlckV4dGVybmFsT0VT
Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAg
RlJBR19WRVJUX09OTFkoInNhbXBsZXJFeHRlcm5hbE9FUyIsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM1OgorICBjYXNlIDEzNjoK
IAogICAgIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJC
X3RleHR1cmVfcmVjdGFuZ2xlIikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVj
dCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAidW5z
dXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXIyRFJl
Y3QiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1
YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBF
dnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2Ft
cGxlcjJEUmVjdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1
YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM2
OgorICBjYXNlIDEzNzoKIAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInN0cnVjdCIs
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsKICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxMzc6CisgIGNhc2UgMTM4OgogCiAgICAgewogICAgICAgICAvLwpA
QCAtMzk5Niw4NSArNDA1OCw4NiBAQCB5eXJlZHVjZToKICAgICAgICAgLy8KICAgICAgICAgVFR5
cGUmIHN0cnVjdHVyZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KCh5eXZzcFsoMSkgLSAoMSld
LmxleCkuc3ltYm9sKS0+Z2V0VHlwZSgpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFs
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS51c2VyRGVmID0gJnN0cnVjdHVyZTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAotICBjYXNlIDEzODoKKyAgY2FzZSAxMzk6CiAKLSAgICB7IGlmIChj
b250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSwgKih5eXZzcFsoMikgLSAoMyldLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyA7
fQorICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5bHNwWygyKSAt
ICgzKV0pLCAqKHl5dnNwWygyKSAtICgzKV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVy
KCk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDEzOToKKyAgY2FzZSAxNDA6CiAKICAgICB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg2KV0u
bGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAo
Y29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNildKSwgKih5eXZzcFso
MikgLSAoNildLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
IAotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCh5eXZzcFsoNSkgLSAoNild
LmludGVybS50eXBlTGlzdCksICooeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmluZyk7CisgICAg
ICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUobmV3IFRTdHJ1Y3R1cmUoKHl5dnNwWygy
KSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoNSkgLSAoNildLmludGVybS5maWVsZExpc3Qp
KSk7CiAgICAgICAgIFRWYXJpYWJsZSogdXNlclR5cGVEZWYgPSBuZXcgVFZhcmlhYmxlKCh5eXZz
cFsoMikgLSAoNildLmxleCkuc3RyaW5nLCAqc3RydWN0dXJlLCB0cnVlKTsKICAgICAgICAgaWYg
KCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCp1c2VyVHlwZURlZikpIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNildLmxleCkubGluZSwgInJlZGVmaW5p
dGlvbiIsICh5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDYpXSksICJyZWRlZmlu
aXRpb24iLCAoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSwgInN0cnVjdCIp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eXZz
cFsoMSkgLSAoNildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eWxzcFsoMSkgLSAoNildKSk7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkudXNlckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29u
dGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxNDA6CisgIGNhc2UgMTQxOgogCi0gICAgeyBpZiAoY29udGV4dC0+ZW50ZXJT
dHJ1Y3REZWNsYXJhdGlvbigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIp
IC0gKDIpXS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KKyAgICB7IGlmIChj
b250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFsoMikgLSAoMildKSwgKih5eXZz
cFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxNDE6CisgIGNhc2UgMTQyOgogCiAgICAgewotICAgICAgICBUVHlwZSog
c3RydWN0dXJlID0gbmV3IFRUeXBlKCh5eXZzcFsoNCkgLSAoNSldLmludGVybS50eXBlTGlzdCks
IFRTdHJpbmcoIiIpKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRT
dHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZShOZXdQb29sVFN0
cmluZygiIiksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5maWVsZExpc3QpKSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5
eWxzcFsoMSkgLSAoNSldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkudXNlckRlZiA9
IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDI6CisgIGNhc2UgMTQzOgogCiAg
ICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlTGlzdCk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExp
c3QpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZpZWxkTGlzdCk7CisgICAgfQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMTQzOgorICBjYXNlIDE0NDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlTGlzdCkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZUxpc3QpOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICh5eXZzcFsoMikgLSAoMildLmlu
dGVybS50eXBlTGlzdCktPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBqID0gMDsgaiA8ICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5zaXplKCk7ICsraikgewot
ICAgICAgICAgICAgICAgIGlmICgoKih5eXZhbC5pbnRlcm0udHlwZUxpc3QpKVtqXS50eXBlLT5n
ZXRGaWVsZE5hbWUoKSA9PSAoKih5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCkpW2ld
LnR5cGUtPmdldEZpZWxkTmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlbaV0ubGluZSwgImR1cGxp
Y2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3RydWN0IiwgKCooeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0udHlwZUxpc3QpKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKS5jX3N0cigpKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpID0gKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLmZpZWxkTGlzdCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBU
RmllbGQqIGZpZWxkID0gKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uZmllbGRMaXN0KSlbaV07
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICh5eXZhbC5pbnRlcm0uZmllbGRM
aXN0KS0+c2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICBpZiAoKCooeXl2YWwuaW50ZXJt
LmZpZWxkTGlzdCkpW2pdLT5uYW1lKCkgPT0gZmllbGQtPm5hbWUoKSkgeworICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJkdXBsaWNhdGUgZmll
bGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSk7
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+
cHVzaF9iYWNrKCgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlbaV0pOworICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpLT5wdXNoX2JhY2soZmllbGQpOwogICAg
ICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDQ6CisgIGNhc2Ug
MTQ1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9ICh5eXZzcFso
MikgLSAoMyldLmludGVybS50eXBlTGlzdCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRM
aXN0KSA9ICh5eXZzcFsoMikgLSAoMyldLmludGVybS5maWVsZExpc3QpOwogCi0gICAgICAgIGlm
IChjb250ZXh0LT52b2lkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSku
bGluZSwgKCooeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0udHlwZUxpc3QpKVswXS50eXBlLT5nZXRG
aWVsZE5hbWUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkgeworICAgICAgICBp
ZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgzKV0pLCAoKih5eXZzcFso
MikgLSAoMyldLmludGVybS5maWVsZExpc3QpKVswXS0+bmFtZSgpLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0udHlwZSkpKSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoeXl2YWwuaW50ZXJt
LnR5cGVMaXN0KS0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytpKSB7CiAgICAgICAg
ICAgICAvLwogICAgICAgICAgICAgLy8gQ2FyZWZ1bCBub3QgdG8gcmVwbGFjZSBhbHJlYWR5IGtu
b3duIGFzcGVjdHMgb2YgdHlwZSwgbGlrZSBhcnJheS1uZXNzCiAgICAgICAgICAgICAvLwotICAg
ICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0udHlwZUxpc3QpKVtpXS50eXBl
OworICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSlb
aV0tPnR5cGUoKTsKICAgICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlwZSgoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkudHlwZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXROb21pbmFsU2l6
ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuc2l6ZSk7CiAgICAgICAgICAgICB0eXBl
LT5zZXRNYXRyaXgoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLm1hdHJpeCk7CkBAIC00
MDgyLDQzNyArNDE0NSw0MzIgQEAgeXlyZWR1Y2U6CiAKICAgICAgICAgICAgIC8vIGRvbid0IGFs
bG93IGFycmF5cyBvZiBhcnJheXMKICAgICAgICAgICAgIGlmICh0eXBlLT5pc0FycmF5KCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubGluZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5
cGUpKSkKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygo
eXlsc3BbKDEpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuYXJyYXkpCiAgICAgICAg
ICAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBl
KS5hcnJheVNpemUpOwotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50
eXBlKS51c2VyRGVmKSB7CisgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LnR5cGUpLnVzZXJEZWYpCiAgICAgICAgICAgICAgICAgdHlwZS0+c2V0U3RydWN0KCh5eXZzcFso
MSkgLSAoMyldLmludGVybS50eXBlKS51c2VyRGVmLT5nZXRTdHJ1Y3QoKSk7Ci0gICAgICAgICAg
ICAgICAgdHlwZS0+c2V0VHlwZU5hbWUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnVz
ZXJEZWYtPmdldFR5cGVOYW1lKCkpOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAo
Y29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LnR5cGUpLmxpbmUsICp0eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdE5l
c3RpbmdFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMyldKSwgKigqKHl5dmFsLmludGVybS5maWVs
ZExpc3QpKVtpXSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
NDU6CisgIGNhc2UgMTQ2OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0
KSA9IE5ld1Bvb2xUVHlwZUxpc3QoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCkt
PnB1c2hfYmFjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZUxpbmUpKTsKLSAgICA7fQor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSBOZXdQb29sVEZpZWxkTGlzdCgpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uZmllbGQpKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDY6Cisg
IGNhc2UgMTQ3OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+cHVz
aF9iYWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybS50eXBlTGluZSkpOwotICAgIDt9CisgICAg
ICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+cHVzaF9iYWNrKCh5eXZzcFsoMykgLSAoMyld
LmludGVybS5maWVsZCkpOworICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE0NzoKKyAgY2Fz
ZSAxNDg6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2so
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJp
bmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMSkg
LSAoMSldKSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBl
ID0gbmV3IFRUeXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZUxpbmUpLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLnR5cGUtPnNldEZpZWxkTmFtZSgqKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5zdHJpbmcpOwotICAgIDt9CisgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRU
eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGQp
ID0gbmV3IFRGaWVsZCh0eXBlLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZyk7CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ4OgorICBjYXNlIDE0OToKIAogICAgIHsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDQpXS5sZXgp
LmxpbmUsICooeXl2c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250
ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICg0KV0pLCAqKHl5dnNwWygxKSAt
ICg0KV0ubGV4KS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0g
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwg
RWJwVW5kZWZpbmVkKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSkubGluZSA9ICh5
eXZzcFsoMSkgLSAoNCldLmxleCkubGluZTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlu
ZSkudHlwZS0+c2V0RmllbGROYW1lKCooeXl2c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZyk7Ci0K
LSAgICAgICAgaW50IHNpemU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNo
ZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksIHNpemUpKQorICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlw
ZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAgICAgICBpbnQgc2l6ZSA9IDA7CisgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNCldKSwgKHl5
dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50
eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7Ci0gICAgO30KLSAgICBicmVhazsKKyAgICAgICAgdHlw
ZS0+c2V0QXJyYXlTaXplKHNpemUpOwogCi0gIGNhc2UgMTQ5OgotCi0gICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsgO30KKyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5
cGUsICh5eXZzcFsoMSkgLSAoNCldLmxleCkuc3RyaW5nKTsKKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxNTA6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTUxOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7IDt9
CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybU5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTI6CiAKLSAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
Tm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1
MzoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE1NDoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBi
cmVhazsKIAogICBjYXNlIDE1NToKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7
IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1NjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50
ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1NzoKIAotICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsg
O30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1ODoKIAotICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsgO30KKyAgICB7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0K
ICAgICBicmVhazsKIAogICBjYXNlIDE1OToKIAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUu
cHVzaCgpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTYwOgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5w
b3AoKTsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTYxOgogCisgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgfQor
ICAgIGJyZWFrOworCisgIGNhc2UgMTYyOgorCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygz
KSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgIT0gMCkgewogICAgICAgICAgICAgKHl5
dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldE9wKEVPcFNlcXVlbmNl
KTsKLSAgICAgICAgICAgICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUp
LT5zZXRFbmRMaW5lKCh5eXZzcFsoNSkgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgICAgICAo
eXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0TGluZSgoeXlsb2Mp
KTsKICAgICAgICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAo
eXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKTsKLSAgICA7fQotICAgIGJy
ZWFrOwotCi0gIGNhc2UgMTYyOgotCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQorICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDE2MzoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0K
ICAgICBicmVhazsKIAogICBjYXNlIDE2NDoKIAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUu
cHVzaCgpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY1Ogog
Ci0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7IGNv
bnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY2Ogog
Ci0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IDt9CisgICAgeyBjb250ZXh0LT5z
eW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikg
LSAoMildLmludGVybS5pbnRlcm1Ob2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY3Ogog
Ci0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7IGNv
bnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY4Ogog
Ci0gICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsKLSAgICA7fQor
ICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsK
IAogICBjYXNlIDE2OToKIAogICAgIHsKLSAgICAgICAgaWYgKCh5eXZzcFsoMikgLSAoMyldLmlu
dGVybS5pbnRlcm1BZ2dyZWdhdGUpKSB7Ci0gICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAgICAg
KHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldEVuZExpbmUoKHl5
dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0
ZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTcwOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0
ZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOwotICAgIDt9CisgICAg
ICAgIGlmICgoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSkgeworICAg
ICAgICAgICAgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldE9w
KEVPcFNlcXVlbmNlKTsKKyAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRl
cm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykpOworICAgICAgICB9CisgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdn
cmVnYXRlKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNzE6CiAKICAgICB7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1BZ2dyZWdhdGUp
LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOwotICAgIDt9CisgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5tYWtlQWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5
bG9jKSk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTcyOgogCi0gICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gMDsgO30KKyAgICB7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5
eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLCAoeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxvYykpOworICAgIH0KICAgICBicmVhazsKIAogICBj
YXNlIDE3MzoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRpY19jYXN0
PFRJbnRlcm1Ob2RlKj4oKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkp
OyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7IH0KICAgICBicmVhazsK
IAogICBjYXNlIDE3NDoKIAorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRp
Y19jYXN0PFRJbnRlcm1Ob2RlKj4oKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkpOyB9CisgICAgYnJlYWs7CisKKyAgY2FzZSAxNzU6CisKICAgICB7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDUpXS5sZXgpLmxpbmUsICh5
eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoNSldKSwgKHl5dnNwWygzKSAtICg1
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLm5vZGVQYWlyKSwgKHl5dnNwWygxKSAtICg1
KV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDMpIC0gKDUpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLm5vZGVQYWly
KSwgKHl5bHNwWygxKSAtICg1KV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzU6
CisgIGNhc2UgMTc2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5u
b2RlMSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICAgICAgKHl5
dmFsLmludGVybS5ub2RlUGFpcikubm9kZTIgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzY6CisgIGNh
c2UgMTc3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICAgICAgKHl5dmFsLmlu
dGVybS5ub2RlUGFpcikubm9kZTIgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTc3OgorICBjYXNlIDE3ODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CiAgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0TGluZSgpLCAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzg6CisgIGNhc2UgMTc5Ogog
CiAgICAgewogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKGNv
bnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5s
aW5lLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4
dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFso
MSkgLSAoNCldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAg
ICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5dnNwWygyKSAtICg0KV0u
bGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksIGludGVybU5vZGUpKQorICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXpl
cigoeXlsc3BbKDIpIC0gKDQpXSksICooeXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0cmluZywgKHl5
dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbKDQpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogICAgICAgICB9Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzk6CisgIGNhc2UgMTgwOgogCi0g
ICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdM
ZXZlbDsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0LT5s
b29wTmVzdGluZ0xldmVsOyB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODA6CisgIGNhc2UgMTgx
OgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29w
KEVMb29wV2hpbGUsIDAsICh5eXZzcFsoNCkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAwLCAoeXl2c3BbKDYpIC0gKDYpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMSkgLSAo
NildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAoeXl2c3BbKDQpIC0gKDYp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgMCwgKHl5dnNwWyg2KSAtICg2KV0uaW50ZXJtLmlu
dGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDYpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BO
ZXN0aW5nTGV2ZWw7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODE6Cisg
IGNhc2UgMTgyOgogCi0gICAgeyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IDt9CisgICAg
eyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0KICAgICBicmVhazsKIAotICBjYXNlIDE4
MjoKKyAgY2FzZSAxODM6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JD
aGVjaygoeXl2c3BbKDgpIC0gKDgpXS5sZXgpLmxpbmUsICh5eXZzcFsoNikgLSAoOCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNr
KCh5eWxzcFsoOCkgLSAoOCldKSwgKHl5dnNwWyg2KSAtICg4KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9v
cERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAw
LCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoNCkgLSAoOCld
LmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAoOCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0uaW50
ZXJtTm9kZSksICh5eWxzcFsoNCkgLSAoOCldKSk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5l
c3RpbmdMZXZlbDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE4MzoKKyAg
Y2FzZSAxODQ6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0
LT5sb29wTmVzdGluZ0xldmVsOyA7fQorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgp
OyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0KICAgICBicmVhazsKIAotICBjYXNlIDE4
NDoKKyAgY2FzZSAxODU6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBv
cCgpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZExvb3AoRUxvb3BGb3IsICh5eXZzcFsoNCkgLSAoNyldLmludGVybS5pbnRlcm1O
b2RlKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5p
bnRlcm0ubm9kZVBhaXIpLm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigo
eXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3KSAtICg3
KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDEpIC0gKDcpXS5sZXgpLmxpbmUpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZExvb3AoRUxvb3BGb3IsICh5eXZzcFsoNCkgLSAoNyldLmludGVybS5pbnRlcm1Ob2RlKSwgcmVp
bnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9k
ZVBhaXIpLm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUp
IC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3KSAtICg3KV0uaW50ZXJt
LmludGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDcpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxv
b3BOZXN0aW5nTGV2ZWw7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODU6
CisgIGNhc2UgMTg2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTg2OgorICBjYXNlIDE4NzoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1Ob2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE4NzoKKyAgY2Fz
ZSAxODg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg4OgorICBjYXNlIDE4OToKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gMDsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAotICBjYXNlIDE4OToKKyAgY2FzZSAxOTA6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyID0g
MDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE5MDoKKyAgY2FzZSAxOTE6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0ubm9kZVBhaXIpLm5vZGUyID0gKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTE6CisgIGNhc2Ug
MTkyOgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxp
bmUsICJjb250aW51ZSBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiY29udGludWUgc3Rh
dGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgKHl5dnNwWygx
KSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgKHl5
bHNwWygxKSAtICgyKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTI6CisgIGNh
c2UgMTkzOgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgp
LmxpbmUsICJicmVhayBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiYnJlYWsgc3RhdGVt
ZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgKHl5dnNwWygxKSAtICgy
KV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgKHl5bHNwWygxKSAt
ICgyKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTM6CisgIGNhc2UgMTk0Ogog
CiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMSkgLSAoMildLmxleCkubGlu
ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAg
aWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZv
aWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCku
bGluZSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDIpXSksICJub24tdm9p
ZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxOTQ6CisgIGNhc2UgMTk1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1
cm4sICh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDEp
IC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMikgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDEpIC0gKDMpXSkpOwogICAgICAg
ICBjb250ZXh0LT5mdW5jdGlvblJldHVybnNWYWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChjb250
ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDMpXS5sZXgpLmxpbmUsICJ2
b2lkIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgInZvaWQgZnVuY3Rpb24gY2Fu
bm90IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9IGVsc2UgaWYgKCooY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlw
ZSkgIT0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUo
KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0ubGV4KS5s
aW5lLCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4iKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgImZ1bmN0aW9u
IHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAotICBjYXNlIDE5NToKKyAgY2FzZSAxOTY6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfT05MWSgi
ZGlzY2FyZCIsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcEtp
bGwsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7Ci0gICAgO30KKyAgICAgICAgRlJBR19P
TkxZKCJkaXNjYXJkIiwgKHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwg
KHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTY6Cisg
IGNhc2UgMTk3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgICAgICBjb250ZXh0LT50
cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxOTc6CisgIGNhc2UgMTk4OgogCiAgICAgewotICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdh
dGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9k
ZSksICh5eWxvYykpOwogICAgICAgICBjb250ZXh0LT50cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTg6Cisg
IGNhc2UgMTk5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTk5OgorICBjYXNlIDIwMDoKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1O
b2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDIwMDoKKyAgY2FzZSAy
MDE6CiAKICAgICB7CiAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0pLmZ1bmN0aW9uOwpAQCAtNDUyMSw3ICs0NTc5LDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgIAogICAgICAgICBpZiAoYnVpbHRJbikKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCAiYnVpbHQtaW4gZnVu
Y3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiYnVpbHQt
aW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNf
c3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAg
ICAgIApAQCAtNDUzNSw3ICs0NTkzLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAvLwogICAg
ICAgICAgICAgLy8gVGhlbiB0aGlzIGZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keS4KICAgICAg
ICAgICAgIC8vCi0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0pLmxpbmUsICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0
TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAt
ICgxKV0pLCAiZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5IiwgZnVuY3Rpb24tPmdldE5hbWUo
KS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQog
ICAgICAgICBwcmV2RGVjLT5zZXREZWZpbmVkKCk7CkBAIC00NTQ1LDExICs0NjAzLDExIEBAIHl5
cmVkdWNlOgogICAgICAgICAvLwogICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAi
bWFpbiIpIHsKICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpID4gMCkg
ewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVy
bSkubGluZSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlv
bi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMSkgLSAoMSldKSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocyki
LCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0
UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICIiLCBmdW5j
dGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCksICJtYWluIGZ1bmN0aW9uIGNh
bm5vdCByZXR1cm4gYSB2YWx1ZSIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMSkgLSAoMSldKSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNT
dHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC00NTc3LDcgKzQ2MzUsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICAvLyBJbnNlcnQg
dGhlIHBhcmFtZXRlcnMgd2l0aCBuYW1lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgICAg
ICAgICAgLy8KICAgICAgICAgICAgICAgICBpZiAoISBjb250ZXh0LT5zeW1ib2xUYWJsZS5pbnNl
cnQoKnZhcmlhYmxlKSkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0
TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbKDEpIC0gKDEpXSksICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3Ry
KCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsKICAgICAgICAgICAgICAgICB9CkBAIC00NTg4LDMx
ICs0NjQ2LDMyIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5h
bWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwgKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtKS5saW5lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlLT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5bHNwWygxKSAtICgxKV0p
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5bHNw
WygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGFy
YW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHBhcmFtTm9kZXMs
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxp
bmUpOworICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
Z3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KDAsICIiLCAqcGFyYW0udHlwZSwgKHl5bHNwWygxKSAtICgxKV0pKSwgKHl5bHNwWygxKSAtICgx
KV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2RlcywgRU9wUGFyYW1ldGVycywgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRp
YXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsICh5eWxz
cFsoMSkgLSAoMSldKSk7CiAgICAgICAgICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJt
QWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAgICAgY29udGV4dC0+bG9vcE5lc3RpbmdMZXZl
bCA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDE6CisgIGNhc2Ug
MjAyOgogCiAgICAgewogICAgICAgICAvLz8/IENoZWNrIHRoYXQgYWxsIHBhdGhzIHJldHVybiBh
IHZhbHVlIGlmIHJldHVybiB0eXBlICE9IHZvaWQgPwogICAgICAgICAvLyAgIE1heSBiZSBiZXN0
IGRvbmUgYXMgcG9zdCBwcm9jZXNzIHBoYXNlIG9uIGludGVybWVkaWF0ZSBjb2RlCiAgICAgICAg
IGlmIChjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRW
b2lkICYmICEgY29udGV4dC0+ZnVuY3Rpb25SZXR1cm5zVmFsdWUpIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkubGluZSwgImZ1bmN0aW9uIGRv
ZXMgbm90IHJldHVybiBhIHZhbHVlOiIsICIiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1
bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXlsc3BbKDEpIC0gKDMpXSksICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAi
IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUs
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKSwgMCk7Ci0gICAgICAgIGNvbnRl
eHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpLCBFT3BGdW5jdGlvbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5saW5lKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5n
cm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxvYykpOworICAgICAgICBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSwgRU9wRnVuY3Rpb24sICh5eWxzcFsoMSkgLSAoMyldKSk7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldE5hbWUoKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+Z2V0TWFuZ2xlZE5hbWUoKS5jX3N0cigpKTsK
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0
VHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkp
OwogCkBAIC00NjIxLDE4ICs0NjgwLDI1IEBAIHl5cmVkdWNlOgogICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRPcHRpbWl6ZShjb250ZXh0LT5w
cmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdl
dEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnByYWdtYSgpLmRlYnVnKTsKIAotICAg
ICAgICBpZiAoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpICYmICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKSkKLSAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldEVuZExp
bmUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgp
LT5nZXRFbmRMaW5lKCkpOwotCiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAKLS8qIExpbmUgMTI2NyBvZiB5YWNjLmMuICAq
LwogCiAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICB9CisgIC8qIFVzZXIgc2VtYW50aWMgYWN0
aW9ucyBzb21ldGltZXMgYWx0ZXIgeXljaGFyLCBhbmQgdGhhdCByZXF1aXJlcworICAgICB0aGF0
IHl5dG9rZW4gYmUgdXBkYXRlZCB3aXRoIHRoZSBuZXcgdHJhbnNsYXRpb24uICBXZSB0YWtlIHRo
ZQorICAgICBhcHByb2FjaCBvZiB0cmFuc2xhdGluZyBpbW1lZGlhdGVseSBiZWZvcmUgZXZlcnkg
dXNlIG9mIHl5dG9rZW4uCisgICAgIE9uZSBhbHRlcm5hdGl2ZSBpcyB0cmFuc2xhdGluZyBoZXJl
IGFmdGVyIGV2ZXJ5IHNlbWFudGljIGFjdGlvbiwKKyAgICAgYnV0IHRoYXQgdHJhbnNsYXRpb24g
d291bGQgYmUgbWlzc2VkIGlmIHRoZSBzZW1hbnRpYyBhY3Rpb24gaW52b2tlcworICAgICBZWUFC
T1JULCBZWUFDQ0VQVCwgb3IgWVlFUlJPUiBpbW1lZGlhdGVseSBhZnRlciBhbHRlcmluZyB5eWNo
YXIgb3IKKyAgICAgaWYgaXQgaW52b2tlcyBZWUJBQ0tVUC4gIEluIHRoZSBjYXNlIG9mIFlZQUJP
UlQgb3IgWVlBQ0NFUFQsIGFuCisgICAgIGluY29ycmVjdCBkZXN0cnVjdG9yIG1pZ2h0IHRoZW4g
YmUgaW52b2tlZCBpbW1lZGlhdGVseS4gIEluIHRoZQorICAgICBjYXNlIG9mIFlZRVJST1Igb3Ig
WVlCQUNLVVAsIHN1YnNlcXVlbnQgcGFyc2VyIGFjdGlvbnMgbWlnaHQgbGVhZAorICAgICB0byBh
biBpbmNvcnJlY3QgZGVzdHJ1Y3RvciBjYWxsIG9yIHZlcmJvc2Ugc3ludGF4IGVycm9yIG1lc3Nh
Z2UKKyAgICAgYmVmb3JlIHRoZSBsb29rYWhlYWQgaXMgdHJhbnNsYXRlZC4gICovCiAgIFlZX1NZ
TUJPTF9QUklOVCAoIi0+ICQkID0iLCB5eXIxW3l5bl0sICZ5eXZhbCwgJnl5bG9jKTsKIAogICBZ
WVBPUFNUQUNLICh5eWxlbik7CkBAIC00NjQwLDcgKzQ3MDYsNyBAQCB5eXJlZHVjZToKICAgWVlf
U1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKIAogICAqKyt5eXZzcCA9IHl5dmFsOwotCisgICor
K3l5bHNwID0geXlsb2M7CiAKICAgLyogTm93IGBzaGlmdCcgdGhlIHJlc3VsdCBvZiB0aGUgcmVk
dWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAgdGhhdCBnb2VzIHRvLCBiYXNlZCBv
biB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRoZSBydWxlCkBAIC00NjYxLDUyICs0
NzI3LDU1IEBAIHl5cmVkdWNlOgogfCB5eWVycmxhYiAtLSBoZXJlIG9uIGRldGVjdGluZyBlcnJv
ciB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIHl5ZXJybGFiOgor
ICAvKiBNYWtlIHN1cmUgd2UgaGF2ZSBsYXRlc3QgbG9va2FoZWFkIHRyYW5zbGF0aW9uLiAgU2Vl
IGNvbW1lbnRzIGF0CisgICAgIHVzZXIgc2VtYW50aWMgYWN0aW9ucyBmb3Igd2h5IHRoaXMgaXMg
bmVjZXNzYXJ5LiAgKi8KKyAgeXl0b2tlbiA9IHl5Y2hhciA9PSBZWUVNUFRZID8gWVlFTVBUWSA6
IFlZVFJBTlNMQVRFICh5eWNoYXIpOworCiAgIC8qIElmIG5vdCBhbHJlYWR5IHJlY292ZXJpbmcg
ZnJvbSBhbiBlcnJvciwgcmVwb3J0IHRoaXMgZXJyb3IuICAqLwogICBpZiAoIXl5ZXJyc3RhdHVz
KQogICAgIHsKICAgICAgICsreXluZXJyczsKICNpZiAhIFlZRVJST1JfVkVSQk9TRQotICAgICAg
eXllcnJvciAoY29udGV4dCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CisgICAgICB5eWVycm9yICgm
eXlsbG9jLCBjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvciIpKTsKICNlbHNlCisjIGRlZmluZSBZ
WVNZTlRBWF9FUlJPUiB5eXN5bnRheF9lcnJvciAoJnl5bXNnX2FsbG9jLCAmeXltc2csIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eXNzcCwgeXl0b2tlbikKICAg
ICAgIHsKLQlZWVNJWkVfVCB5eXNpemUgPSB5eXN5bnRheF9lcnJvciAoMCwgeXlzdGF0ZSwgeXlj
aGFyKTsKLQlpZiAoeXltc2dfYWxsb2MgPCB5eXNpemUgJiYgeXltc2dfYWxsb2MgPCBZWVNUQUNL
X0FMTE9DX01BWElNVU0pCi0JICB7Ci0JICAgIFlZU0laRV9UIHl5YWxsb2MgPSAyICogeXlzaXpl
OwotCSAgICBpZiAoISAoeXlzaXplIDw9IHl5YWxsb2MgJiYgeXlhbGxvYyA8PSBZWVNUQUNLX0FM
TE9DX01BWElNVU0pKQotCSAgICAgIHl5YWxsb2MgPSBZWVNUQUNLX0FMTE9DX01BWElNVU07Ci0J
ICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKLQkgICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNnKTsK
LQkgICAgeXltc2cgPSAoY2hhciAqKSBZWVNUQUNLX0FMTE9DICh5eWFsbG9jKTsKLQkgICAgaWYg
KHl5bXNnKQotCSAgICAgIHl5bXNnX2FsbG9jID0geXlhbGxvYzsKLQkgICAgZWxzZQotCSAgICAg
IHsKLQkJeXltc2cgPSB5eW1zZ2J1ZjsKLQkJeXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7
Ci0JICAgICAgfQotCSAgfQotCi0JaWYgKDAgPCB5eXNpemUgJiYgeXlzaXplIDw9IHl5bXNnX2Fs
bG9jKQotCSAgewotCSAgICAodm9pZCkgeXlzeW50YXhfZXJyb3IgKHl5bXNnLCB5eXN0YXRlLCB5
eWNoYXIpOwotCSAgICB5eWVycm9yIChjb250ZXh0LCB5eW1zZyk7Ci0JICB9Ci0JZWxzZQotCSAg
ewotCSAgICB5eWVycm9yIChjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvciIpKTsKLQkgICAgaWYg
KHl5c2l6ZSAhPSAwKQotCSAgICAgIGdvdG8geXlleGhhdXN0ZWRsYWI7Ci0JICB9CisgICAgICAg
IGNoYXIgY29uc3QgKnl5bXNncCA9IFlZXygic3ludGF4IGVycm9yIik7CisgICAgICAgIGludCB5
eXN5bnRheF9lcnJvcl9zdGF0dXM7CisgICAgICAgIHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9IFlZ
U1lOVEFYX0VSUk9SOworICAgICAgICBpZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDApCisg
ICAgICAgICAgeXltc2dwID0geXltc2c7CisgICAgICAgIGVsc2UgaWYgKHl5c3ludGF4X2Vycm9y
X3N0YXR1cyA9PSAxKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh5eW1zZyAhPSB5eW1z
Z2J1ZikKKyAgICAgICAgICAgICAgWVlTVEFDS19GUkVFICh5eW1zZyk7CisgICAgICAgICAgICB5
eW1zZyA9IChjaGFyICopIFlZU1RBQ0tfQUxMT0MgKHl5bXNnX2FsbG9jKTsKKyAgICAgICAgICAg
IGlmICgheXltc2cpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB5eW1zZyA9IHl5
bXNnYnVmOworICAgICAgICAgICAgICAgIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOwor
ICAgICAgICAgICAgICAgIHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9IDI7CisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHl5
c3ludGF4X2Vycm9yX3N0YXR1cyA9IFlZU1lOVEFYX0VSUk9SOworICAgICAgICAgICAgICAgIHl5
bXNncCA9IHl5bXNnOworICAgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB5eWVy
cm9yICgmeXlsbG9jLCBjb250ZXh0LCB5eW1zZ3ApOworICAgICAgICBpZiAoeXlzeW50YXhfZXJy
b3Jfc3RhdHVzID09IDIpCisgICAgICAgICAgZ290byB5eWV4aGF1c3RlZGxhYjsKICAgICAgIH0K
KyMgdW5kZWYgWVlTWU5UQVhfRVJST1IKICNlbmRpZgogICAgIH0KIAotCisgIHl5ZXJyb3JfcmFu
Z2VbMV0gPSB5eWxsb2M7CiAKICAgaWYgKHl5ZXJyc3RhdHVzID09IDMpCiAgICAgewotICAgICAg
LyogSWYganVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2stYWhlYWQgdG9rZW4gYWZ0
ZXIgYW4KKyAgICAgIC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rYWhl
YWQgdG9rZW4gYWZ0ZXIgYW4KIAkgZXJyb3IsIGRpc2NhcmQgaXQuICAqLwogCiAgICAgICBpZiAo
eXljaGFyIDw9IFlZRU9GKQpAQCAtNDcxOCwxMiArNDc4NywxMiBAQCB5eWVycmxhYjoKICAgICAg
IGVsc2UKIAl7CiAJICB5eWRlc3RydWN0ICgiRXJyb3I6IGRpc2NhcmRpbmciLAotCQkgICAgICB5
eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKKwkJICAgICAgeXl0b2tlbiwgJnl5bHZhbCwgJnl5
bGxvYywgY29udGV4dCk7CiAJICB5eWNoYXIgPSBZWUVNUFRZOwogCX0KICAgICB9CiAKLSAgLyog
RWxzZSB3aWxsIHRyeSB0byByZXVzZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRo
ZSBlcnJvcgorICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRl
ciBzaGlmdGluZyB0aGUgZXJyb3IKICAgICAgdG9rZW4uICAqLwogICBnb3RvIHl5ZXJybGFiMTsK
IApAQCAtNDczOSw2ICs0ODA4LDcgQEAgeXllcnJvcmxhYjoKICAgaWYgKC8qQ09OU1RDT05EKi8g
MCkKICAgICAgZ290byB5eWVycm9ybGFiOwogCisgIHl5ZXJyb3JfcmFuZ2VbMV0gPSB5eWxzcFsx
LXl5bGVuXTsKICAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hp
Y2ggYWN0aW9uIHRyaWdnZXJlZAogICAgICB0aGlzIFlZRVJST1IuICAqLwogICBZWVBPUFNUQUNL
ICh5eWxlbik7CkBAIC00NzU3LDcgKzQ4MjcsNyBAQCB5eWVycmxhYjE6CiAgIGZvciAoOzspCiAg
ICAgewogICAgICAgeXluID0geXlwYWN0W3l5c3RhdGVdOwotICAgICAgaWYgKHl5biAhPSBZWVBB
Q1RfTklORikKKyAgICAgIGlmICgheXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCiAJewog
CSAgeXluICs9IFlZVEVSUk9SOwogCSAgaWYgKDAgPD0geXluICYmIHl5biA8PSBZWUxBU1QgJiYg
eXljaGVja1t5eW5dID09IFlZVEVSUk9SKQpAQCAtNDc3MiwxOSArNDg0MiwyMyBAQCB5eWVycmxh
YjE6CiAgICAgICBpZiAoeXlzc3AgPT0geXlzcykKIAlZWUFCT1JUOwogCi0KKyAgICAgIHl5ZXJy
b3JfcmFuZ2VbMV0gPSAqeXlsc3A7CiAgICAgICB5eWRlc3RydWN0ICgiRXJyb3I6IHBvcHBpbmci
LAotCQkgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2c3AsIGNvbnRleHQpOworCQkgIHl5c3Rvc1t5eXN0
YXRlXSwgeXl2c3AsIHl5bHNwLCBjb250ZXh0KTsKICAgICAgIFlZUE9QU1RBQ0sgKDEpOwogICAg
ICAgeXlzdGF0ZSA9ICp5eXNzcDsKICAgICAgIFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7
CiAgICAgfQogCi0gIGlmICh5eW4gPT0gWVlGSU5BTCkKLSAgICBZWUFDQ0VQVDsKLQorICBZWV9J
R05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgogICAqKyt5eXZzcCA9IHl5bHZhbDsKKyAg
WVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECiAKKyAgeXllcnJvcl9yYW5nZVsyXSA9
IHl5bGxvYzsKKyAgLyogVXNpbmcgWVlMTE9DIGlzIHRlbXB0aW5nLCBidXQgd291bGQgY2hhbmdl
IHRoZSBsb2NhdGlvbiBvZgorICAgICB0aGUgbG9va2FoZWFkLiAgWVlMT0MgaXMgYXZhaWxhYmxl
IHRob3VnaC4gICovCisgIFlZTExPQ19ERUZBVUxUICh5eWxvYywgeXllcnJvcl9yYW5nZSwgMik7
CisgICorK3l5bHNwID0geXlsb2M7CiAKICAgLyogU2hpZnQgdGhlIGVycm9yIHRva2VuLiAgKi8K
ICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXN0b3NbeXluXSwgeXl2c3AsIHl5bHNw
KTsKQEAgLTQ4MDcsMjAgKzQ4ODEsMjUgQEAgeXlhYm9ydGxhYjoKICAgeXlyZXN1bHQgPSAxOwog
ICBnb3RvIHl5cmV0dXJuOwogCi0jaWZuZGVmIHl5b3ZlcmZsb3cKKyNpZiAhZGVmaW5lZCB5eW92
ZXJmbG93IHx8IFlZRVJST1JfVkVSQk9TRQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCB5eWV4aGF1c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVz
dGlvbiBjb21lcyBoZXJlLiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLwogeXlleGhhdXN0ZWRsYWI6Ci0gIHl5ZXJyb3IgKGNvbnRleHQsIFlZ
XygibWVtb3J5IGV4aGF1c3RlZCIpKTsKKyAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgWVlf
KCJtZW1vcnkgZXhoYXVzdGVkIikpOwogICB5eXJlc3VsdCA9IDI7CiAgIC8qIEZhbGwgdGhyb3Vn
aC4gICovCiAjZW5kaWYKIAogeXlyZXR1cm46Ci0gIGlmICh5eWNoYXIgIT0gWVlFT0YgJiYgeXlj
aGFyICE9IFlZRU1QVFkpCi0gICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxv
b2thaGVhZCIsCi0JCSB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKKyAgaWYgKHl5Y2hhciAh
PSBZWUVNUFRZKQorICAgIHsKKyAgICAgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBsb29r
YWhlYWQgdHJhbnNsYXRpb24uICBTZWUgY29tbWVudHMgYXQKKyAgICAgICAgIHVzZXIgc2VtYW50
aWMgYWN0aW9ucyBmb3Igd2h5IHRoaXMgaXMgbmVjZXNzYXJ5LiAgKi8KKyAgICAgIHl5dG9rZW4g
PSBZWVRSQU5TTEFURSAoeXljaGFyKTsKKyAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNj
YXJkaW5nIGxvb2thaGVhZCIsCisgICAgICAgICAgICAgICAgICB5eXRva2VuLCAmeXlsdmFsLCAm
eXlsbG9jLCBjb250ZXh0KTsKKyAgICB9CiAgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xz
IG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKICAgICAgdGhpcyBZWUFCT1JUIG9y
IFlZQUNDRVBULiAgKi8KICAgWVlQT1BTVEFDSyAoeXlsZW4pOwpAQCAtNDgyOCw3ICs0OTA3LDcg
QEAgeXlyZXR1cm46CiAgIHdoaWxlICh5eXNzcCAhPSB5eXNzKQogICAgIHsKICAgICAgIHl5ZGVz
dHJ1Y3QgKCJDbGVhbnVwOiBwb3BwaW5nIiwKLQkJICB5eXN0b3NbKnl5c3NwXSwgeXl2c3AsIGNv
bnRleHQpOworCQkgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwgeXlsc3AsIGNvbnRleHQpOwogICAg
ICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgfQogI2lmbmRlZiB5eW92ZXJmbG93CkBAIC00ODQ3LDcg
KzQ5MjYsMTEgQEAgeXlyZXR1cm46CiAKIAogCit2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9j
LCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pIHsKKyAgICBjb250
ZXh0LT5lcnJvcigqeXlsbG9jLCByZWFzb24sICIiKTsKKyAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Cit9CisKIGludCBnbHNsYW5nX3BhcnNlKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICBy
ZXR1cm4geXlwYXJzZShjb250ZXh0KTsKIH0KLQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgJKHJldmlzaW9uIDE1MjU5NSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDI0ICsxLDIxIEBACi0vKiBBIEJpc29uIHBhcnNlciwgbWFkZSBi
eSBHTlUgQmlzb24gMi4zLiAgKi8KKy8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNv
biAyLjcuICAqLwogCi0vKiBTa2VsZXRvbiBpbnRlcmZhY2UgZm9yIEJpc29uJ3MgWWFjYy1saWtl
IHBhcnNlcnMgaW4gQwotCi0gICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAs
IDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKLSAgIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLgotCi0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLyogQmlzb24gaW50ZXJmYWNlIGZvciBZ
YWNjLWxpa2UgcGFyc2VycyBpbiBDCisgICAKKyAgICAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4
OS0xOTkwLCAyMDAwLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAKKyAg
IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgYW55IGxhdGVy
IHZlcnNpb24uCi0KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJz
aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICAgCiAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAgICBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCisgICAKICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQotICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKyAgIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg
Ki8KIAogLyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSBjcmVhdGUgYSBsYXJnZXIg
d29yayB0aGF0IGNvbnRhaW5zCiAgICBwYXJ0IG9yIGFsbCBvZiB0aGUgQmlzb24gcGFyc2VyIHNr
ZWxldG9uIGFuZCBkaXN0cmlidXRlIHRoYXQgd29yawpAQCAtMjksMTAgKzI2LDI4IEBACiAgICBz
cGVjaWFsIGV4Y2VwdGlvbiwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSBy
ZXN1bHRpbmcKICAgIEJpc29uIG91dHB1dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUg
R05VIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2Vw
dGlvbi4KLQorICAgCiAgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGluCiAgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4gICov
CiAKKyNpZm5kZWYgWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRAorIyBkZWZpbmUgWVlfWVlf
R0xTTEFOR19UQUJfSF9JTkNMVURFRAorLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KKyNpZm5kZWYg
WVlERUJVRworIyBkZWZpbmUgWVlERUJVRyAwCisjZW5kaWYKKyNpZiBZWURFQlVHCitleHRlcm4g
aW50IHl5ZGVidWc7CisjZW5kaWYKKy8qICIlY29kZSByZXF1aXJlcyIgYmxvY2tzLiAgKi8KKwor
CisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVE
IDEKKworCisKKwogLyogVG9rZW5zLiAgKi8KICNpZm5kZWYgWVlUT0tFTlRZUEUKICMgZGVmaW5l
IFlZVE9LRU5UWVBFCkBAIC04NiwxNTggKzEwMSw2MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0g
MzAyLAogICAgICBJTlRDT05TVEFOVCA9IDMwMywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAot
ICAgICBGSUVMRF9TRUxFQ1RJT04gPSAzMDUsCi0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJ
R0hUX09QID0gMzA3LAotICAgICBJTkNfT1AgPSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAg
ICAgTEVfT1AgPSAzMTAsCi0gICAgIEdFX09QID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAg
ICAgTkVfT1AgPSAzMTMsCi0gICAgIEFORF9PUCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0g
ICAgIFhPUl9PUCA9IDMxNiwKLSAgICAgTVVMX0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lH
TiA9IDMxOCwKLSAgICAgQUREX0FTU0lHTiA9IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwK
LSAgICAgTEVGVF9BU1NJR04gPSAzMjEsCi0gICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAg
QU5EX0FTU0lHTiA9IDMyMywKLSAgICAgWE9SX0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdO
ID0gMzI1LAotICAgICBTVUJfQVNTSUdOID0gMzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAot
ICAgICBSSUdIVF9QQVJFTiA9IDMyOCwKLSAgICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBS
SUdIVF9CUkFDS0VUID0gMzMwLAotICAgICBMRUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9C
UkFDRSA9IDMzMiwKLSAgICAgRE9UID0gMzMzLAotICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09M
T04gPSAzMzUsCi0gICAgIEVRVUFMID0gMzM2LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAg
IEJBTkcgPSAzMzgsCi0gICAgIERBU0ggPSAzMzksCi0gICAgIFRJTERFID0gMzQwLAotICAgICBQ
TFVTID0gMzQxLAotICAgICBTVEFSID0gMzQyLAotICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVS
Q0VOVCA9IDM0NCwKLSAgICAgTEVGVF9BTkdMRSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAz
NDYsCi0gICAgIFZFUlRJQ0FMX0JBUiA9IDM0NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFN
UEVSU0FORCA9IDM0OSwKLSAgICAgUVVFU1RJT04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwK
KyAgICAgUklHSFRfT1AgPSAzMDYsCisgICAgIElOQ19PUCA9IDMwNywKKyAgICAgREVDX09QID0g
MzA4LAorICAgICBMRV9PUCA9IDMwOSwKKyAgICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0g
MzExLAorICAgICBORV9PUCA9IDMxMiwKKyAgICAgQU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9
IDMxNCwKKyAgICAgWE9SX09QID0gMzE1LAorICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBE
SVZfQVNTSUdOID0gMzE3LAorICAgICBBRERfQVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdO
ID0gMzE5LAorICAgICBMRUZUX0FTU0lHTiA9IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIx
LAorICAgICBBTkRfQVNTSUdOID0gMzIyLAorICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBP
Ul9BU1NJR04gPSAzMjQsCisgICAgIFNVQl9BU1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4g
PSAzMjYsCisgICAgIFJJR0hUX1BBUkVOID0gMzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgs
CisgICAgIFJJR0hUX0JSQUNLRVQgPSAzMjksCisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAg
IFJJR0hUX0JSQUNFID0gMzMxLAorICAgICBET1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMzLAor
ICAgICBDT0xPTiA9IDMzNCwKKyAgICAgRVFVQUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMz
NiwKKyAgICAgQkFORyA9IDMzNywKKyAgICAgREFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzks
CisgICAgIFBMVVMgPSAzNDAsCisgICAgIFNUQVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAor
ICAgICBQRVJDRU5UID0gMzQzLAorICAgICBMRUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9B
TkdMRSA9IDM0NSwKKyAgICAgVkVSVElDQUxfQkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywK
KyAgICAgQU1QRVJTQU5EID0gMzQ4LAorICAgICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRp
ZgotLyogVG9rZW5zLiAgKi8KLSNkZWZpbmUgSU5WQVJJQU5UIDI1OAotI2RlZmluZSBISUdIX1BS
RUNJU0lPTiAyNTkKLSNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTiAyNjAKLSNkZWZpbmUgTE9XX1BS
RUNJU0lPTiAyNjEKLSNkZWZpbmUgUFJFQ0lTSU9OIDI2MgotI2RlZmluZSBBVFRSSUJVVEUgMjYz
Ci0jZGVmaW5lIENPTlNUX1FVQUwgMjY0Ci0jZGVmaW5lIEJPT0xfVFlQRSAyNjUKLSNkZWZpbmUg
RkxPQVRfVFlQRSAyNjYKLSNkZWZpbmUgSU5UX1RZUEUgMjY3Ci0jZGVmaW5lIEJSRUFLIDI2OAot
I2RlZmluZSBDT05USU5VRSAyNjkKLSNkZWZpbmUgRE8gMjcwCi0jZGVmaW5lIEVMU0UgMjcxCi0j
ZGVmaW5lIEZPUiAyNzIKLSNkZWZpbmUgSUYgMjczCi0jZGVmaW5lIERJU0NBUkQgMjc0Ci0jZGVm
aW5lIFJFVFVSTiAyNzUKLSNkZWZpbmUgQlZFQzIgMjc2Ci0jZGVmaW5lIEJWRUMzIDI3NwotI2Rl
ZmluZSBCVkVDNCAyNzgKLSNkZWZpbmUgSVZFQzIgMjc5Ci0jZGVmaW5lIElWRUMzIDI4MAotI2Rl
ZmluZSBJVkVDNCAyODEKLSNkZWZpbmUgVkVDMiAyODIKLSNkZWZpbmUgVkVDMyAyODMKLSNkZWZp
bmUgVkVDNCAyODQKLSNkZWZpbmUgTUFUUklYMiAyODUKLSNkZWZpbmUgTUFUUklYMyAyODYKLSNk
ZWZpbmUgTUFUUklYNCAyODcKLSNkZWZpbmUgSU5fUVVBTCAyODgKLSNkZWZpbmUgT1VUX1FVQUwg
Mjg5Ci0jZGVmaW5lIElOT1VUX1FVQUwgMjkwCi0jZGVmaW5lIFVOSUZPUk0gMjkxCi0jZGVmaW5l
IFZBUllJTkcgMjkyCi0jZGVmaW5lIFNUUlVDVCAyOTMKLSNkZWZpbmUgVk9JRF9UWVBFIDI5NAot
I2RlZmluZSBXSElMRSAyOTUKLSNkZWZpbmUgU0FNUExFUjJEIDI5NgotI2RlZmluZSBTQU1QTEVS
Q1VCRSAyOTcKLSNkZWZpbmUgU0FNUExFUl9FWFRFUk5BTF9PRVMgMjk4Ci0jZGVmaW5lIFNBTVBM
RVIyRFJFQ1QgMjk5Ci0jZGVmaW5lIElERU5USUZJRVIgMzAwCi0jZGVmaW5lIFRZUEVfTkFNRSAz
MDEKLSNkZWZpbmUgRkxPQVRDT05TVEFOVCAzMDIKLSNkZWZpbmUgSU5UQ09OU1RBTlQgMzAzCi0j
ZGVmaW5lIEJPT0xDT05TVEFOVCAzMDQKLSNkZWZpbmUgRklFTERfU0VMRUNUSU9OIDMwNQotI2Rl
ZmluZSBMRUZUX09QIDMwNgotI2RlZmluZSBSSUdIVF9PUCAzMDcKLSNkZWZpbmUgSU5DX09QIDMw
OAotI2RlZmluZSBERUNfT1AgMzA5Ci0jZGVmaW5lIExFX09QIDMxMAotI2RlZmluZSBHRV9PUCAz
MTEKLSNkZWZpbmUgRVFfT1AgMzEyCi0jZGVmaW5lIE5FX09QIDMxMwotI2RlZmluZSBBTkRfT1Ag
MzE0Ci0jZGVmaW5lIE9SX09QIDMxNQotI2RlZmluZSBYT1JfT1AgMzE2Ci0jZGVmaW5lIE1VTF9B
U1NJR04gMzE3Ci0jZGVmaW5lIERJVl9BU1NJR04gMzE4Ci0jZGVmaW5lIEFERF9BU1NJR04gMzE5
Ci0jZGVmaW5lIE1PRF9BU1NJR04gMzIwCi0jZGVmaW5lIExFRlRfQVNTSUdOIDMyMQotI2RlZmlu
ZSBSSUdIVF9BU1NJR04gMzIyCi0jZGVmaW5lIEFORF9BU1NJR04gMzIzCi0jZGVmaW5lIFhPUl9B
U1NJR04gMzI0Ci0jZGVmaW5lIE9SX0FTU0lHTiAzMjUKLSNkZWZpbmUgU1VCX0FTU0lHTiAzMjYK
LSNkZWZpbmUgTEVGVF9QQVJFTiAzMjcKLSNkZWZpbmUgUklHSFRfUEFSRU4gMzI4Ci0jZGVmaW5l
IExFRlRfQlJBQ0tFVCAzMjkKLSNkZWZpbmUgUklHSFRfQlJBQ0tFVCAzMzAKLSNkZWZpbmUgTEVG
VF9CUkFDRSAzMzEKLSNkZWZpbmUgUklHSFRfQlJBQ0UgMzMyCi0jZGVmaW5lIERPVCAzMzMKLSNk
ZWZpbmUgQ09NTUEgMzM0Ci0jZGVmaW5lIENPTE9OIDMzNQotI2RlZmluZSBFUVVBTCAzMzYKLSNk
ZWZpbmUgU0VNSUNPTE9OIDMzNwotI2RlZmluZSBCQU5HIDMzOAotI2RlZmluZSBEQVNIIDMzOQot
I2RlZmluZSBUSUxERSAzNDAKLSNkZWZpbmUgUExVUyAzNDEKLSNkZWZpbmUgU1RBUiAzNDIKLSNk
ZWZpbmUgU0xBU0ggMzQzCi0jZGVmaW5lIFBFUkNFTlQgMzQ0Ci0jZGVmaW5lIExFRlRfQU5HTEUg
MzQ1Ci0jZGVmaW5lIFJJR0hUX0FOR0xFIDM0NgotI2RlZmluZSBWRVJUSUNBTF9CQVIgMzQ3Ci0j
ZGVmaW5lIENBUkVUIDM0OAotI2RlZmluZSBBTVBFUlNBTkQgMzQ5Ci0jZGVmaW5lIFFVRVNUSU9O
IDM1MAotCi0KIAogCiAjaWYgISBkZWZpbmVkIFlZU1RZUEUgJiYgISBkZWZpbmVkIFlZU1RZUEVf
SVNfREVDTEFSRUQKIHR5cGVkZWYgdW5pb24gWVlTVFlQRQotCiB7CisKKwogICAgIHN0cnVjdCB7
Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAg
VFN0cmluZyAqc3RyaW5nOwogICAgICAgICAgICAgZmxvYXQgZjsKQEAgLTI0Nyw3ICsxNjUsNiBA
QCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwogICAgIH0g
bGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgVE9w
ZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9kZSogaW50
ZXJtTm9kZTsKQEAgLTI2MSwxOCArMTc4LDQ1IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAg
ICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgICAgICAgICBURnVuY3Rpb24qIGZ1
bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKLSAgICAgICAgICAgIFRUeXBl
TGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgIFRUeXBlTGlzdCogdHlwZUxpc3Q7CisgICAgICAg
ICAgICBURmllbGQqIGZpZWxkOworICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0Owog
ICAgICAgICB9OwogICAgIH0gaW50ZXJtOwotfQotLyogTGluZSAxNTI5IG9mIHlhY2MuYy4gICov
CiAKLQlZWVNUWVBFOworCisKK30gWVlTVFlQRTsKKyMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklB
TCAxCiAjIGRlZmluZSB5eXN0eXBlIFlZU1RZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0
aGRyYXduICovCiAjIGRlZmluZSBZWVNUWVBFX0lTX0RFQ0xBUkVEIDEKLSMgZGVmaW5lIFlZU1RZ
UEVfSVNfVFJJVklBTCAxCiAjZW5kaWYKIAorI2lmICEgZGVmaW5lZCBZWUxUWVBFICYmICEgZGVm
aW5lZCBZWUxUWVBFX0lTX0RFQ0xBUkVECit0eXBlZGVmIHN0cnVjdCBZWUxUWVBFCit7CisgIGlu
dCBmaXJzdF9saW5lOworICBpbnQgZmlyc3RfY29sdW1uOworICBpbnQgbGFzdF9saW5lOworICBp
bnQgbGFzdF9jb2x1bW47Cit9IFlZTFRZUEU7CisjIGRlZmluZSB5eWx0eXBlIFlZTFRZUEUgLyog
b2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCisjIGRlZmluZSBZWUxUWVBFX0lTX0RF
Q0xBUkVEIDEKKyMgZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCisjZW5kaWYKIAogCisjaWZk
ZWYgWVlQQVJTRV9QQVJBTQorI2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVz
cGx1cworaW50IHl5cGFyc2UgKHZvaWQgKllZUEFSU0VfUEFSQU0pOworI2Vsc2UKK2ludCB5eXBh
cnNlICgpOworI2VuZGlmCisjZWxzZSAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KKyNpZiBkZWZpbmVk
IF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKK2ludCB5eXBhcnNlIChUUGFyc2VDb250
ZXh0KiBjb250ZXh0KTsKKyNlbHNlCitpbnQgeXlwYXJzZSAoKTsKKyNlbmRpZgorI2VuZGlmIC8q
ICEgWVlQQVJTRV9QQVJBTSAqLworCisjZW5kaWYgLyogIVlZX1lZX0dMU0xBTkdfVEFCX0hfSU5D
TFVERUQgICovCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50
ZXJtT3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvaW50ZXJtT3V0LmNwcAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybU91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
OSw3ICsxODksOSBAQCBib29sIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0VW5hcnkoVmlzaXQgCiAg
ICAgICAgIGNhc2UgRU9wQW55OiAgICAgICAgICAgIG91dCA8PCAiYW55IjsgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BBbGw6ICAgICAgICAgICAgb3V0IDw8ICJhbGwi
OyAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGRlZmF1bHQ6IG91dC5tZXNzYWdl
KEVQcmVmaXhFcnJvciwgIkJhZCB1bmFyeSBvcCIpOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAgb3V0IDw8ICJCYWQg
dW5hcnkgb3AiOwogICAgIH0KIAogICAgIG91dCA8PCAiICgiIDw8IG5vZGUtPmdldENvbXBsZXRl
U3RyaW5nKCkgPDwgIikiOwpAQCAtMjA0LDcgKzIwNiw4IEBAIGJvb2wgVE91dHB1dFRyYXZlcnNl
cjo6dmlzaXRBZ2dyZWdhdGUoVmkKICAgICBUSW5mb1NpbmtCYXNlJiBvdXQgPSBzaW5rOwogCiAg
ICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wTnVsbCkgewotICAgICAgICBvdXQubWVzc2FnZShF
UHJlZml4RXJyb3IsICJub2RlIGlzIHN0aWxsIEVPcE51bGwhIik7CisgICAgICAgIG91dC5wcmVm
aXgoRVByZWZpeEVycm9yKTsKKyAgICAgICAgb3V0IDw8ICJub2RlIGlzIHN0aWxsIEVPcE51bGwh
IjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yNjMsNyArMjY2LDkgQEAgYm9v
bCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaQogCiAgICAgICAgIGNhc2UgRU9w
RGVjbGFyYXRpb246ICAgb3V0IDw8ICJEZWNsYXJhdGlvbjogIjsgICBicmVhazsKIAotICAgICAg
ICBkZWZhdWx0OiBvdXQubWVzc2FnZShFUHJlZml4RXJyb3IsICJCYWQgYWdncmVnYXRpb24gb3Ai
KTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIG91dC5wcmVmaXgoRVByZWZpeEVycm9y
KTsKKyAgICAgICAgICAgIG91dCA8PCAiQmFkIGFnZ3JlZ2F0aW9uIG9wIjsKICAgICB9CiAKICAg
ICBpZiAobm9kZS0+Z2V0T3AoKSAhPSBFT3BTZXF1ZW5jZSAmJiBub2RlLT5nZXRPcCgpICE9IEVP
cFBhcmFtZXRlcnMpCkBAIC0zMTEsOSArMzE2LDkgQEAgdm9pZCBUT3V0cHV0VHJhdmVyc2VyOjp2
aXNpdENvbnN0YW50VW5pbwogewogICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IHNpbms7CiAKLSAg
ICBpbnQgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90
IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogCi0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
IGkrKykgewogICAgICAgICBPdXRwdXRUcmVlVGV4dChvdXQsIG5vZGUsIGRlcHRoKTsKICAgICAg
ICAgc3dpdGNoIChub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpW2ldLmdldFR5cGUoKSkgewog
ICAgICAgICAgICAgY2FzZSBFYnRCb29sOgpAQCAtMzM0LDcgKzMzOSw3IEBAIHZvaWQgVE91dHB1
dFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW8KICAgICAgICAgICAgICAgICBvdXQgPDwgIiAo
Y29uc3QgaW50KVxuIjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgb3V0Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJV
bmtub3duIGNvbnN0YW50Iiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBvdXQu
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiVW5rbm93biBj
b25zdGFudCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1l
ZGlhdGUuaAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
Ly8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xOCw2ICsxOCw3IEBACiAK
ICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAorI2luY2x1ZGUgPGFsZ29yaXRobT4K
ICNpbmNsdWRlICJjb21waWxlci9Db21tb24uaCIKICNpbmNsdWRlICJjb21waWxlci9UeXBlcy5o
IgogI2luY2x1ZGUgImNvbXBpbGVyL0NvbnN0YW50VW5pb24uaCIKQEAgLTIwNiwxMCArMjA3LDE2
IEBAIGNsYXNzIFRJbnRlcm1Ob2RlIHsKIHB1YmxpYzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdf
REVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpCiAKLSAgICBUSW50ZXJtTm9kZSgpIDogbGluZSgw
KSB7fQorICAgIFRJbnRlcm1Ob2RlKCkgeworICAgICAgICAvLyBUT0RPOiBNb3ZlIHRoaXMgdG8g
VFNvdXJjZUxvYyBjb25zdHJ1Y3RvcgorICAgICAgICAvLyBhZnRlciBnZXR0aW5nIHJpZCBvZiBU
UHVibGljVHlwZS4KKyAgICAgICAgbGluZS5maXJzdF9maWxlID0gbGluZS5sYXN0X2ZpbGUgPSAw
OworICAgICAgICBsaW5lLmZpcnN0X2xpbmUgPSBsaW5lLmxhc3RfbGluZSA9IDA7CisgICAgfQor
ICAgIHZpcnR1YWwgflRJbnRlcm1Ob2RlKCkgeyB9CiAKLSAgICBUU291cmNlTG9jIGdldExpbmUo
KSBjb25zdCB7IHJldHVybiBsaW5lOyB9Ci0gICAgdm9pZCBzZXRMaW5lKFRTb3VyY2VMb2MgbCkg
eyBsaW5lID0gbDsgfQorICAgIGNvbnN0IFRTb3VyY2VMb2MmIGdldExpbmUoKSBjb25zdCB7IHJl
dHVybiBsaW5lOyB9CisgICAgdm9pZCBzZXRMaW5lKGNvbnN0IFRTb3VyY2VMb2MmIGwpIHsgbGlu
ZSA9IGw7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKikg
PSAwOwogICAgIHZpcnR1YWwgVEludGVybVR5cGVkKiBnZXRBc1R5cGVkKCkgeyByZXR1cm4gMDsg
fQpAQCAtMjIwLDcgKzIyNyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFRJbnRlcm1TZWxlY3Rp
b24qIGdldEFzU2VsZWN0aW9uTm9kZSgpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFRJbnRl
cm1TeW1ib2wqIGdldEFzU3ltYm9sTm9kZSgpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFRJ
bnRlcm1Mb29wKiBnZXRBc0xvb3BOb2RlKCkgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgflRJ
bnRlcm1Ob2RlKCkgeyB9CiAKIHByb3RlY3RlZDoKICAgICBUU291cmNlTG9jIGxpbmU7CkBAIC0z
NTgsNyArMzY0LDEwIEBAIHB1YmxpYzoKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbihDb25zdGFu
dFVuaW9uICp1bmlvblBvaW50ZXIsIGNvbnN0IFRUeXBlJiB0KSA6IFRJbnRlcm1UeXBlZCh0KSwg
dW5pb25BcnJheVBvaW50ZXIodW5pb25Qb2ludGVyKSB7IH0KIAogICAgIENvbnN0YW50VW5pb24q
IGdldFVuaW9uQXJyYXlQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXI7
IH0KLSAgICB2b2lkIHNldFVuaW9uQXJyYXlQb2ludGVyKENvbnN0YW50VW5pb24gKmMpIHsgdW5p
b25BcnJheVBvaW50ZXIgPSBjOyB9CisgICAgCisgICAgaW50IGdldElDb25zdChpbnQgaW5kZXgp
IGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVyID8gdW5pb25BcnJheVBvaW50ZXJbaW5k
ZXhdLmdldElDb25zdCgpIDogMDsgfQorICAgIGZsb2F0IGdldEZDb25zdChpbnQgaW5kZXgpIGNv
bnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVyID8gdW5pb25BcnJheVBvaW50ZXJbaW5kZXhd
LmdldEZDb25zdCgpIDogMC4wZjsgfQorICAgIGJvb2wgZ2V0QkNvbnN0KGludCBpbmRleCkgY29u
c3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXIgPyB1bmlvbkFycmF5UG9pbnRlcltpbmRleF0u
Z2V0QkNvbnN0KCkgOiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBUSW50ZXJtQ29uc3RhbnRVbmlv
biogZ2V0QXNDb25zdGFudFVuaW9uKCkgIHsgcmV0dXJuIHRoaXM7IH0KICAgICB2aXJ0dWFsIHZv
aWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciopOwpAQCAtNDQ3LDcgKzQ1Niw3IEBAIHR5cGVk
ZWYgVFZlY3RvcjxpbnQ+IFRRdWFsaWZpZXJMaXN0OwogLy8KIGNsYXNzIFRJbnRlcm1BZ2dyZWdh
dGUgOiBwdWJsaWMgVEludGVybU9wZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBUSW50ZXJtQWdncmVn
YXRlKCkgOiBUSW50ZXJtT3BlcmF0b3IoRU9wTnVsbCksIHVzZXJEZWZpbmVkKGZhbHNlKSwgZW5k
TGluZSgwKSwgdXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSkgeyB9CisgICAgVEludGVybUFnZ3Jl
Z2F0ZSgpIDogVEludGVybU9wZXJhdG9yKEVPcE51bGwpLCB1c2VyRGVmaW5lZChmYWxzZSksIHVz
ZUVtdWxhdGVkRnVuY3Rpb24oZmFsc2UpIHsgfQogICAgIFRJbnRlcm1BZ2dyZWdhdGUoVE9wZXJh
dG9yIG8pIDogVEludGVybU9wZXJhdG9yKG8pLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKGZhbHNlKSB7
IH0KICAgICB+VEludGVybUFnZ3JlZ2F0ZSgpIHsgfQogCkBAIC00NjcsOSArNDc2LDYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0RGVidWcoYm9vbCBkKSB7IGRlYnVnID0gZDsgfQogICAgIGJvb2wg
Z2V0RGVidWcoKSB7IHJldHVybiBkZWJ1ZzsgfQogCi0gICAgdm9pZCBzZXRFbmRMaW5lKFRTb3Vy
Y2VMb2MgbGluZSkgeyBlbmRMaW5lID0gbGluZTsgfQotICAgIFRTb3VyY2VMb2MgZ2V0RW5kTGlu
ZSgpIGNvbnN0IHsgcmV0dXJuIGVuZExpbmU7IH0KLQogICAgIHZvaWQgc2V0VXNlRW11bGF0ZWRG
dW5jdGlvbigpIHsgdXNlRW11bGF0ZWRGdW5jdGlvbiA9IHRydWU7IH0KICAgICBib29sIGdldFVz
ZUVtdWxhdGVkRnVuY3Rpb24oKSB7IHJldHVybiB1c2VFbXVsYXRlZEZ1bmN0aW9uOyB9CiAKQEAg
LTQ4Miw3ICs0ODgsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIG9wdGltaXplOwogICAgIGJv
b2wgZGVidWc7Ci0gICAgVFNvdXJjZUxvYyBlbmRMaW5lOwogCiAgICAgLy8gSWYgc2V0IHRvIHRy
dWUsIHJlcGxhY2UgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGNhbGwgd2l0aCBhbiBlbXVsYXRlZCBv
bmUKICAgICAvLyB0byB3b3JrIGFyb3VuZCBkcml2ZXIgYnVncy4KQEAgLTUzOCw3ICs1NDMsOCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBpblZpc2l0KGluVmlzaXQpLAogICAgICAgICAgICAgcG9z
dFZpc2l0KHBvc3RWaXNpdCksCiAgICAgICAgICAgICByaWdodFRvTGVmdChyaWdodFRvTGVmdCks
Ci0gICAgICAgICAgICBkZXB0aCgwKSB7fQorICAgICAgICAgICAgZGVwdGgoMCksCisgICAgICAg
ICAgICBtYXhEZXB0aCgwKSB7fQogICAgIHZpcnR1YWwgflRJbnRlcm1UcmF2ZXJzZXIoKSB7fTsK
IAogICAgIHZpcnR1YWwgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKikge30KQEAgLTU1
MCw3ICs1NTYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHZpc2l0TG9vcChWaXNpdCB2
aXNpdCwgVEludGVybUxvb3AqKSB7cmV0dXJuIHRydWU7fQogICAgIHZpcnR1YWwgYm9vbCB2aXNp
dEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCopIHtyZXR1cm4gdHJ1ZTt9CiAKLSAg
ICB2b2lkIGluY3JlbWVudERlcHRoKCkge2RlcHRoKys7fQorICAgIGludCBnZXRNYXhEZXB0aCgp
IGNvbnN0IHtyZXR1cm4gbWF4RGVwdGg7fQorICAgIHZvaWQgaW5jcmVtZW50RGVwdGgoKSB7ZGVw
dGgrKzsgbWF4RGVwdGggPSBzdGQ6Om1heChtYXhEZXB0aCwgZGVwdGgpOyB9CiAgICAgdm9pZCBk
ZWNyZW1lbnREZXB0aCgpIHtkZXB0aC0tO30KIAogICAgIC8vIFJldHVybiB0aGUgb3JpZ2luYWwg
bmFtZSBpZiBoYXNoIGZ1bmN0aW9uIHBvaW50ZXIgaXMgTlVMTDsKQEAgLTU2NCw2ICs1NzEsNyBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBpbnQgZGVwdGg7CisgICAgaW50IG1heERlcHRo
OwogfTsKIAogI2VuZGlmIC8vIF9fSU5URVJNRURJQVRFX0gKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5o
CShyZXZpc2lvbiAxNTI1OTUpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvbG9jYWxpbnRlcm1lZGlhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMzQgKzI1LDMzIEBA
IHB1YmxpYzogICAgCiAgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxs
b2NhdG9yKQogCiAgICAgVEludGVybWVkaWF0ZShUSW5mb1NpbmsmIGkpIDogaW5mb1NpbmsoaSkg
eyB9Ci0gICAgVEludGVybVN5bWJvbCogYWRkU3ltYm9sKGludCBJZCwgY29uc3QgVFN0cmluZyYs
IGNvbnN0IFRUeXBlJiwgVFNvdXJjZUxvYyk7CisgICAgVEludGVybVN5bWJvbCogYWRkU3ltYm9s
KGludCBJZCwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRUeXBlJiwgY29uc3QgVFNvdXJjZUxvYyYp
OwogICAgIFRJbnRlcm1UeXBlZCogYWRkQ29udmVyc2lvbihUT3BlcmF0b3IsIGNvbnN0IFRUeXBl
JiwgVEludGVybVR5cGVkKik7Ci0gICAgVEludGVybVR5cGVkKiBhZGRCaW5hcnlNYXRoKFRPcGVy
YXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNl
TG9jLCBUU3ltYm9sVGFibGUmKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZEFzc2lnbihUT3BlcmF0
b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxv
Yyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRJbmRleChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBl
ZCogYmFzZSwgVEludGVybVR5cGVkKiBpbmRleCwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5
cGVkKiBhZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtTm9kZSogY2hpbGQsIFRTb3Vy
Y2VMb2MsIFRTeW1ib2xUYWJsZSYpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGdyb3dBZ2dyZWdh
dGUoVEludGVybU5vZGUqIGxlZnQsIFRJbnRlcm1Ob2RlKiByaWdodCwgVFNvdXJjZUxvYyk7Ci0g
ICAgVEludGVybUFnZ3JlZ2F0ZSogbWFrZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbm9kZSwgVFNv
dXJjZUxvYyk7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSogc2V0QWdncmVnYXRlT3BlcmF0b3IoVElu
dGVybU5vZGUqLCBUT3BlcmF0b3IsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1Ob2RlKiAgYWRk
U2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQYWlyIGNvZGUsIFRTb3Vy
Y2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29u
ZCwgVEludGVybVR5cGVkKiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCogZmFsc2VCbG9jaywgVFNv
dXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb21tYShUSW50ZXJtVHlwZWQqIGxlZnQs
IFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1Db25zdGFudFVu
aW9uKiBhZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qLCBjb25zdCBUVHlwZSYsIFRTb3Vy
Y2VMb2MpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQmluYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJ
bnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYs
IFRTeW1ib2xUYWJsZSYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQXNzaWduKFRPcGVyYXRvciBv
cCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNl
TG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRJbmRleChUT3BlcmF0b3Igb3AsIFRJbnRlcm1U
eXBlZCogYmFzZSwgVEludGVybVR5cGVkKiBpbmRleCwgY29uc3QgVFNvdXJjZUxvYyYpOworICAg
IFRJbnRlcm1UeXBlZCogYWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIGNo
aWxkLCBjb25zdCBUU291cmNlTG9jJiwgVFN5bWJvbFRhYmxlJik7CisgICAgVEludGVybUFnZ3Jl
Z2F0ZSogZ3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVmdCwgVEludGVybU5vZGUqIHJpZ2h0
LCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybUFnZ3JlZ2F0ZSogbWFrZUFnZ3JlZ2F0
ZShUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1BZ2dy
ZWdhdGUqIHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKFRJbnRlcm1Ob2RlKiwgVE9wZXJhdG9yLCBjb25z
dCBUU291cmNlTG9jJik7CisgICAgVEludGVybU5vZGUqICBhZGRTZWxlY3Rpb24oVEludGVybVR5
cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBhaXIgY29kZSwgY29uc3QgVFNvdXJjZUxvYyYpOworICAg
IFRJbnRlcm1UeXBlZCogYWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5
cGVkKiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCogZmFsc2VCbG9jaywgY29uc3QgVFNvdXJjZUxv
YyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQ29tbWEoVEludGVybVR5cGVkKiBsZWZ0LCBUSW50
ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybUNvbnN0YW50
VW5pb24qIGFkZENvbnN0YW50VW5pb24oQ29uc3RhbnRVbmlvbiosIGNvbnN0IFRUeXBlJiwgY29u
c3QgVFNvdXJjZUxvYyYpOwogICAgIFRJbnRlcm1UeXBlZCogcHJvbW90ZUNvbnN0YW50VW5pb24o
VEJhc2ljVHlwZSwgVEludGVybUNvbnN0YW50VW5pb24qKSA7Ci0gICAgYm9vbCBwYXJzZUNvbnN0
VHJlZShUU291cmNlTG9jLCBUSW50ZXJtTm9kZSosIENvbnN0YW50VW5pb24qLCBUT3BlcmF0b3Is
IFRTeW1ib2xUYWJsZSYsIFRUeXBlLCBib29sIHNpbmdsZUNvbnN0YW50UGFyYW0gPSBmYWxzZSk7
ICAgICAgICAKLSAgICBUSW50ZXJtTm9kZSogYWRkTG9vcChUTG9vcFR5cGUsIFRJbnRlcm1Ob2Rl
KiwgVEludGVybVR5cGVkKiwgVEludGVybVR5cGVkKiwgVEludGVybU5vZGUqLCBUU291cmNlTG9j
KTsKLSAgICBUSW50ZXJtQnJhbmNoKiBhZGRCcmFuY2goVE9wZXJhdG9yLCBUU291cmNlTG9jKTsK
LSAgICBUSW50ZXJtQnJhbmNoKiBhZGRCcmFuY2goVE9wZXJhdG9yLCBUSW50ZXJtVHlwZWQqLCBU
U291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZFN3aXp6bGUoVFZlY3RvckZpZWxkcyYs
IFRTb3VyY2VMb2MpOworICAgIGJvb2wgcGFyc2VDb25zdFRyZWUoY29uc3QgVFNvdXJjZUxvYyYs
IFRJbnRlcm1Ob2RlKiwgQ29uc3RhbnRVbmlvbiosIFRPcGVyYXRvciwgVFN5bWJvbFRhYmxlJiwg
VFR5cGUsIGJvb2wgc2luZ2xlQ29uc3RhbnRQYXJhbSA9IGZhbHNlKTsgICAgICAgIAorICAgIFRJ
bnRlcm1Ob2RlKiBhZGRMb29wKFRMb29wVHlwZSwgVEludGVybU5vZGUqLCBUSW50ZXJtVHlwZWQq
LCBUSW50ZXJtVHlwZWQqLCBUSW50ZXJtTm9kZSosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBU
SW50ZXJtQnJhbmNoKiBhZGRCcmFuY2goVE9wZXJhdG9yLCBjb25zdCBUU291cmNlTG9jJik7Cisg
ICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgVEludGVybVR5cGVkKiwgY29u
c3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkU3dpenpsZShUVmVjdG9yRmll
bGRzJiwgY29uc3QgVFNvdXJjZUxvYyYpOwogICAgIGJvb2wgcG9zdFByb2Nlc3MoVEludGVybU5v
ZGUqKTsKLQl2b2lkIHJlbW92ZShUSW50ZXJtTm9kZSopOworICAgIHZvaWQgcmVtb3ZlKFRJbnRl
cm1Ob2RlKik7CiAgICAgdm9pZCBvdXRwdXRUcmVlKFRJbnRlcm1Ob2RlKik7Ci0gICAgCi1wcm90
ZWN0ZWQ6Ci0gICAgVEluZm9TaW5rJiBpbmZvU2luazsKIAogcHJpdmF0ZToKICAgICB2b2lkIG9w
ZXJhdG9yPShUSW50ZXJtZWRpYXRlJik7IC8vIHByZXZlbnQgYXNzaWdubWVudHMKKworICAgIFRJ
bmZvU2luayYgaW5mb1Npbms7CiB9OwogCiAjZW5kaWYgLy8gX0xPQ0FMX0lOVEVSTUVESUFURV9J
TkNMVURFRF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wYXJz
ZUNvbnN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcGFyc2VDb25zdC5jcHAJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wYXJzZUNvbnN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsMTYgKzM4LDE2IEBAIHByb3RlY3RlZDoKICAgICBib29sIHZpc2l0TG9vcChWaXNpdCB2aXNp
dCwgVEludGVybUxvb3AqKTsKICAgICBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50
ZXJtQnJhbmNoKik7CiAKLSAgICBpbnQgaW5kZXg7CisgICAgc2l6ZV90IGluZGV4OwogICAgIENv
bnN0YW50VW5pb24gKnVuaW9uQXJyYXk7CiAgICAgVFR5cGUgdHlwZTsKICAgICBUT3BlcmF0b3Ig
Y29uc3RydWN0b3JUeXBlOwogICAgIGJvb2wgc2luZ2xlQ29uc3RhbnRQYXJhbTsKICAgICBUSW5m
b1NpbmsmIGluZm9TaW5rOwogICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGU7Ci0gICAgaW50
IHNpemU7IC8vIHNpemUgb2YgdGhlIGNvbnN0cnVjdG9yICggNCBmb3IgdmVjNCkKKyAgICBzaXpl
X3Qgc2l6ZTsgLy8gc2l6ZSBvZiB0aGUgY29uc3RydWN0b3IgKCA0IGZvciB2ZWM0KQogICAgIGJv
b2wgaXNNYXRyaXg7Ci0gICAgaW50IG1hdHJpeFNpemU7IC8vIGRpbWVuc2lvbiBvZiB0aGUgbWF0
cml4IChub21pbmFsIHNpemUgYW5kIG5vdCB0aGUgaW5zdGFuY2Ugc2l6ZSkKKyAgICBzaXplX3Qg
bWF0cml4U2l6ZTsgLy8gZGltZW5zaW9uIG9mIHRoZSBtYXRyaXggKG5vbWluYWwgc2l6ZSBhbmQg
bm90IHRoZSBpbnN0YW5jZSBzaXplKQogfTsKIAogLy8KQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVj
dGVkOgogCiB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCog
bm9kZSkKIHsKLSAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3Is
ICJTeW1ib2wgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExp
bmUoKSk7CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBu
b2RlLT5nZXRMaW5lKCksICJTeW1ib2wgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3Rv
ciIpOwogICAgIHJldHVybjsKIAogfQpAQCAtNzQsMTIgKzc0LDEyIEBAIGJvb2wgVENvbnN0VHJh
dmVyc2VyOjp2aXNpdEJpbmFyeShWaXNpdCAKICAgICAgICAgVFN0cmluZyBidWY7CiAgICAgICAg
IGJ1Zi5hcHBlbmQoIidjb25zdHJ1Y3RvcicgOiBhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvICIp
OwogICAgICAgICBidWYuYXBwZW5kKHR5cGUuZ2V0Q29tcGxldGVTdHJpbmcoKSk7Ci0gICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsIGJ1Zi5jX3N0cigpLCBub2RlLT5n
ZXRMaW5lKCkpOworICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBu
b2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigpKTsKICAgICAgICAgZXJyb3IgPSB0cnVlOwogICAg
ICAgICByZXR1cm4gZmFsc2U7ICAKICAgICB9CiAKLSAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShF
UHJlZml4SW50ZXJuYWxFcnJvciwgIkJpbmFyeSBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0
cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmluYXJ5IE5vZGUgZm91bmQgaW4g
Y29uc3RhbnQgY29uc3RydWN0b3IiKTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC04
OSw3ICs4OSw3IEBAIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdFVuYXJ5KFZpc2l0IHYKICAg
ICBUU3RyaW5nIGJ1ZjsKICAgICBidWYuYXBwZW5kKCInY29uc3RydWN0b3InIDogYXNzaWduaW5n
IG5vbi1jb25zdGFudCB0byAiKTsKICAgICBidWYuYXBwZW5kKHR5cGUuZ2V0Q29tcGxldGVTdHJp
bmcoKSk7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwgYnVmLmNfc3Ry
KCksIG5vZGUtPmdldExpbmUoKSk7CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhF
cnJvciwgbm9kZS0+Z2V0TGluZSgpLCBidWYuY19zdHIoKSk7CiAgICAgZXJyb3IgPSB0cnVlOwog
ICAgIHJldHVybiBmYWxzZTsgIAogfQpAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wgVENvbnN0VHJh
dmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKICAgICAgICAgVFN0cmluZyBidWY7CiAgICAgICAg
IGJ1Zi5hcHBlbmQoIidjb25zdHJ1Y3RvcicgOiBhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvICIp
OwogICAgICAgICBidWYuYXBwZW5kKHR5cGUuZ2V0Q29tcGxldGVTdHJpbmcoKSk7Ci0gICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsIGJ1Zi5jX3N0cigpLCBub2RlLT5n
ZXRMaW5lKCkpOworICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBu
b2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigpKTsKICAgICAgICAgZXJyb3IgPSB0cnVlOwogICAg
ICAgICByZXR1cm4gZmFsc2U7ICAKICAgICB9CkBAIC0xNDQsMjQgKzE0NCwzMSBAQCBib29sIFRD
b25zdFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzCiAKIGJvb2wgVENvbnN0VHJhdmVyc2Vy
Ojp2aXNpdFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVEludGVybVNlbGVjdGlvbiogbm9kZSkKIHsK
LSAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJTZWxlY3Rp
b24gTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExpbmUoKSk7
CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5n
ZXRMaW5lKCksICJTZWxlY3Rpb24gTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIp
OwogICAgIGVycm9yID0gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgVENvbnN0
VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24qIG5vZGUp
CiB7CisgICAgaWYgKCFub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKQorICAgIHsKKyAgICAg
ICAgLy8gVGhlIGNvbnN0YW50IHdhcyBub3QgaW5pdGlhbGl6ZWQsIHRoaXMgc2hvdWxkIGFscmVh
ZHkgaGF2ZSBiZWVuIGxvZ2dlZAorICAgICAgICBhc3NlcnQoaW5mb1NpbmsuaW5mby5zaXplKCkg
IT0gMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBDb25zdGFudFVuaW9uKiBsZWZ0
VW5pb25BcnJheSA9IHVuaW9uQXJyYXk7Ci0gICAgaW50IGluc3RhbmNlU2l6ZSA9IHR5cGUuZ2V0
T2JqZWN0U2l6ZSgpOworICAgIHNpemVfdCBpbnN0YW5jZVNpemUgPSB0eXBlLmdldE9iamVjdFNp
emUoKTsKIAogICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmICghc2luZ2xlQ29uc3RhbnRQYXJhbSkgewotICAgICAgICBpbnQgc2l6ZSA9IG5v
ZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIHNpemVfdCBzaXplID0gbm9k
ZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKICAgICAKICAgICAgICAgQ29uc3RhbnRVbmlv
biAqcmlnaHRVbmlvbkFycmF5ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICAg
ICAgZm9yIChpbnQgaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2VT
aXplKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5
W2luZGV4XSA9IHJpZ2h0VW5pb25BcnJheVtpXTsKQEAgLTE2OSwxMSArMTc2LDExIEBAIHZvaWQg
VENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24KICAgICAgICAgICAgIChpbmRleCkr
KzsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGludCB0b3RhbFNpemUgPSBpbmRl
eCArIHNpemU7CisgICAgICAgIHNpemVfdCB0b3RhbFNpemUgPSBpbmRleCArIHNpemU7CiAgICAg
ICAgIENvbnN0YW50VW5pb24gKnJpZ2h0VW5pb25BcnJheSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCk7CiAgICAgICAgIGlmICghaXNNYXRyaXgpIHsKLSAgICAgICAgICAgIGludCBjb3Vu
dCA9IDA7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkr
KykgeworICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKKyAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSBpbmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGkgPj0gaW5zdGFuY2VTaXplKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE4
NSw5ICsxOTIsOSBAQCB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uCiAg
ICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSB7ICAvLyBmb3IgbWF0cml4IGNvbnN0cnVjdG9ycwotICAgICAgICAgICAgaW50IGNvdW50ID0g
MDsKLSAgICAgICAgICAgIGludCBlbGVtZW50ID0gaW5kZXg7Ci0gICAgICAgICAgICBmb3IgKGlu
dCBpID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkrKykgeworICAgICAgICAgICAgc2l6ZV90IGNv
dW50ID0gMDsKKyAgICAgICAgICAgIHNpemVfdCBlbGVtZW50ID0gaW5kZXg7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkrKykgewogICAgICAgICAg
ICAgICAgIGlmIChpID49IGluc3RhbmNlU2l6ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIGlmIChlbGVtZW50IC0gaSA9PSAwIHx8IChpIC0gZWxlbWVudCkg
JSAobWF0cml4U2l6ZSArIDEpID09IDAgKQpAQCAtMjA2LDE0ICsyMTMsMTQgQEAgdm9pZCBUQ29u
c3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbgogCiBib29sIFRDb25zdFRyYXZlcnNlcjo6
dmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCogbm9kZSkKIHsKLSAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJMb29wIE5vZGUgZm91bmQgaW4g
Y29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5lKCkpOworICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiTG9vcCBO
b2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgZXJyb3IgPSB0cnVlOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QnJhbmNo
KFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJyYW5jaCBOb2RlIGZvdW5kIGluIGNvbnN0
YW50IGNvbnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJyYW5jaCBOb2Rl
IGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgZXJyb3IgPSB0cnVlOwogICAg
IHJldHVybiBmYWxzZTsKIH0KQEAgLTIyMyw3ICsyMzAsNyBAQCBib29sIFRDb25zdFRyYXZlcnNl
cjo6dmlzaXRCcmFuY2goVmlzaXQgCiAvLyBJbmRpdmlkdWFsIGZ1bmN0aW9ucyBjYW4gYmUgaW5p
dGlhbGl6ZWQgdG8gMCB0byBza2lwIHByb2Nlc3Npbmcgb2YgdGhhdAogLy8gdHlwZSBvZiBub2Rl
LiAgSXQncyBjaGlsZHJlbiB3aWxsIHN0aWxsIGJlIHByb2Nlc3NlZC4KIC8vCi1ib29sIFRJbnRl
cm1lZGlhdGU6OnBhcnNlQ29uc3RUcmVlKFRTb3VyY2VMb2MgbGluZSwgVEludGVybU5vZGUqIHJv
b3QsIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXksIFRPcGVyYXRvciBjb25zdHJ1Y3RvclR5cGUs
IFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUsIFRUeXBlIHQsIGJvb2wgc2luZ2xlQ29uc3RhbnRQ
YXJhbSkKK2Jvb2wgVEludGVybWVkaWF0ZTo6cGFyc2VDb25zdFRyZWUoY29uc3QgVFNvdXJjZUxv
YyYgbGluZSwgVEludGVybU5vZGUqIHJvb3QsIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXksIFRP
cGVyYXRvciBjb25zdHJ1Y3RvclR5cGUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUsIFRUeXBl
IHQsIGJvb2wgc2luZ2xlQ29uc3RhbnRQYXJhbSkKIHsKICAgICBpZiAocm9vdCA9PSAwKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lv
blBhcnNlci5jcHAJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMjQgKzEsMjIgQEAKLS8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBC
aXNvbiAyLjMuICAqLworLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuNC4y
LiAgKi8KIAogLyogU2tlbGV0b24gaW1wbGVtZW50YXRpb24gZm9yIEJpc29uJ3MgWWFjYy1saWtl
IHBhcnNlcnMgaW4gQwotCi0gICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAs
IDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKLSAgIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLgotCi0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgCisgICAgICBDb3B5cmlnaHQgKEMp
IDE5ODQsIDE5ODktMTk5MCwgMjAwMC0yMDA2LCAyMDA5LTIwMTAgRnJlZSBTb2Z0d2FyZQorICAg
Rm91bmRhdGlvbiwgSW5jLgorICAgCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTog
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5
b3VyIG9wdGlvbikKLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotCisgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIAogICAgVGhpcyBwcm9ncmFtIGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLQorICAgCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4gICovCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v
d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAKIC8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24s
IHlvdSBtYXkgY3JlYXRlIGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250YWlucwogICAgcGFydCBvciBh
bGwgb2YgdGhlIEJpc29uIHBhcnNlciBza2VsZXRvbiBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsK
QEAgLTI5LDcgKzI3LDcgQEAKICAgIHNwZWNpYWwgZXhjZXB0aW9uLCB3aGljaCB3aWxsIGNhdXNl
IHRoZSBza2VsZXRvbiBhbmQgdGhlIHJlc3VsdGluZwogICAgQmlzb24gb3V0cHV0IGZpbGVzIHRv
IGJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2Ugd2l0
aG91dCB0aGlzIHNwZWNpYWwgZXhjZXB0aW9uLgotCisgICAKICAgIFRoaXMgc3BlY2lhbCBleGNl
cHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KICAgIHZl
cnNpb24gMi4yIG9mIEJpc29uLiAgKi8KIApAQCAtNDcsNyArNDUsNyBAQAogI2RlZmluZSBZWUJJ
U09OIDEKIAogLyogQmlzb24gdmVyc2lvbi4gICovCi0jZGVmaW5lIFlZQklTT05fVkVSU0lPTiAi
Mi4zIgorI2RlZmluZSBZWUJJU09OX1ZFUlNJT04gIjIuNC4yIgogCiAvKiBTa2VsZXRvbiBuYW1l
LiAgKi8KICNkZWZpbmUgWVlTS0VMRVRPTl9OQU1FICJ5YWNjLmMiCkBAIC01NSw1MCArNTMsMjMg
QEAKIC8qIFB1cmUgcGFyc2Vycy4gICovCiAjZGVmaW5lIFlZUFVSRSAxCiAKKy8qIFB1c2ggcGFy
c2Vycy4gICovCisjZGVmaW5lIFlZUFVTSCAwCisKKy8qIFB1bGwgcGFyc2Vycy4gICovCisjZGVm
aW5lIFlZUFVMTCAxCisKIC8qIFVzaW5nIGxvY2F0aW9ucy4gICovCiAjZGVmaW5lIFlZTFNQX05F
RURFRCAwCiAKIC8qIFN1YnN0aXR1dGUgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBuYW1lcy4g
ICovCi0jZGVmaW5lIHl5cGFyc2UgcHBwYXJzZQotI2RlZmluZSB5eWxleCAgIHBwbGV4Ci0jZGVm
aW5lIHl5ZXJyb3IgcHBlcnJvcgotI2RlZmluZSB5eWx2YWwgIHBwbHZhbAotI2RlZmluZSB5eWNo
YXIgIHBwY2hhcgotI2RlZmluZSB5eWRlYnVnIHBwZGVidWcKLSNkZWZpbmUgeXluZXJycyBwcG5l
cnJzCi0KLQotLyogVG9rZW5zLiAgKi8KLSNpZm5kZWYgWVlUT0tFTlRZUEUKLSMgZGVmaW5lIFlZ
VE9LRU5UWVBFCi0gICAvKiBQdXQgdGhlIHRva2VucyBpbnRvIHRoZSBzeW1ib2wgdGFibGUsIHNv
IHRoYXQgR0RCIGFuZCBvdGhlciBkZWJ1Z2dlcnMKLSAgICAgIGtub3cgYWJvdXQgdGhlbS4gICov
Ci0gICBlbnVtIHl5dG9rZW50eXBlIHsKLSAgICAgVE9LX0NPTlNUX0lOVCA9IDI1OCwKLSAgICAg
VE9LX09QX09SID0gMjU5LAotICAgICBUT0tfT1BfQU5EID0gMjYwLAotICAgICBUT0tfT1BfTkUg
PSAyNjEsCi0gICAgIFRPS19PUF9FUSA9IDI2MiwKLSAgICAgVE9LX09QX0dFID0gMjYzLAotICAg
ICBUT0tfT1BfTEUgPSAyNjQsCi0gICAgIFRPS19PUF9SSUdIVCA9IDI2NSwKLSAgICAgVE9LX09Q
X0xFRlQgPSAyNjYsCi0gICAgIFRPS19VTkFSWSA9IDI2NwotICAgfTsKLSNlbmRpZgotLyogVG9r
ZW5zLiAgKi8KLSNkZWZpbmUgVE9LX0NPTlNUX0lOVCAyNTgKLSNkZWZpbmUgVE9LX09QX09SIDI1
OQotI2RlZmluZSBUT0tfT1BfQU5EIDI2MAotI2RlZmluZSBUT0tfT1BfTkUgMjYxCi0jZGVmaW5l
IFRPS19PUF9FUSAyNjIKLSNkZWZpbmUgVE9LX09QX0dFIDI2MwotI2RlZmluZSBUT0tfT1BfTEUg
MjY0Ci0jZGVmaW5lIFRPS19PUF9SSUdIVCAyNjUKLSNkZWZpbmUgVE9LX09QX0xFRlQgMjY2Ci0j
ZGVmaW5lIFRPS19VTkFSWSAyNjcKLQotCisjZGVmaW5lIHl5cGFyc2UgICAgICAgICBwcHBhcnNl
CisjZGVmaW5lIHl5bGV4ICAgICAgICAgICBwcGxleAorI2RlZmluZSB5eWVycm9yICAgICAgICAg
cHBlcnJvcgorI2RlZmluZSB5eWx2YWwgICAgICAgICAgcHBsdmFsCisjZGVmaW5lIHl5Y2hhciAg
ICAgICAgICBwcGNoYXIKKyNkZWZpbmUgeXlkZWJ1ZyAgICAgICAgIHBwZGVidWcKKyNkZWZpbmUg
eXluZXJycyAgICAgICAgIHBwbmVycnMKIAogCiAvKiBDb3B5IHRoZSBmaXJzdCBwYXJ0IG9mIHVz
ZXIgZGVjbGFyYXRpb25zLiAgKi8KQEAgLTE1OCw2ICsxMjksNyBAQCBzdGF0aWMgaW50IHl5bGV4
KFlZU1RZUEUqIGx2YWxwLCBDb250ZXh0CiBzdGF0aWMgdm9pZCB5eWVycm9yKENvbnRleHQqIGNv
bnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAKIAorCiAvKiBFbmFibGluZyB0cmFjZXMuICAq
LwogI2lmbmRlZiBZWURFQlVHCiAjIGRlZmluZSBZWURFQlVHIDAKQEAgLTE3NiwyMCArMTQ4LDM5
IEBAIHN0YXRpYyB2b2lkIHl5ZXJyb3IoQ29udGV4dCogY29udGV4dCwgY28KICMgZGVmaW5lIFlZ
VE9LRU5fVEFCTEUgMAogI2VuZGlmCiAKKworLyogVG9rZW5zLiAgKi8KKyNpZm5kZWYgWVlUT0tF
TlRZUEUKKyMgZGVmaW5lIFlZVE9LRU5UWVBFCisgICAvKiBQdXQgdGhlIHRva2VucyBpbnRvIHRo
ZSBzeW1ib2wgdGFibGUsIHNvIHRoYXQgR0RCIGFuZCBvdGhlciBkZWJ1Z2dlcnMKKyAgICAgIGtu
b3cgYWJvdXQgdGhlbS4gICovCisgICBlbnVtIHl5dG9rZW50eXBlIHsKKyAgICAgVE9LX0NPTlNU
X0lOVCA9IDI1OCwKKyAgICAgVE9LX09QX09SID0gMjU5LAorICAgICBUT0tfT1BfQU5EID0gMjYw
LAorICAgICBUT0tfT1BfTkUgPSAyNjEsCisgICAgIFRPS19PUF9FUSA9IDI2MiwKKyAgICAgVE9L
X09QX0dFID0gMjYzLAorICAgICBUT0tfT1BfTEUgPSAyNjQsCisgICAgIFRPS19PUF9SSUdIVCA9
IDI2NSwKKyAgICAgVE9LX09QX0xFRlQgPSAyNjYsCisgICAgIFRPS19VTkFSWSA9IDI2NworICAg
fTsKKyNlbmRpZgorCisKKwogI2lmICEgZGVmaW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZWVNU
WVBFX0lTX0RFQ0xBUkVECiB0eXBlZGVmIGludCBZWVNUWVBFOworIyBkZWZpbmUgWVlTVFlQRV9J
U19UUklWSUFMIDEKICMgZGVmaW5lIHl5c3R5cGUgWVlTVFlQRSAvKiBvYnNvbGVzY2VudDsgd2ls
bCBiZSB3aXRoZHJhd24gKi8KICMgZGVmaW5lIFlZU1RZUEVfSVNfREVDTEFSRUQgMQotIyBkZWZp
bmUgWVlTVFlQRV9JU19UUklWSUFMIDEKICNlbmRpZgogCiAKLQogLyogQ29weSB0aGUgc2Vjb25k
IHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLwogCiAKLS8qIExpbmUgMjE2IG9mIHlhY2Mu
Yy4gICovCi0KIAogI2lmZGVmIHNob3J0CiAjIHVuZGVmIHNob3J0CkBAIC0yNjQsMTQgKzI1NSwx
NCBAQCB0eXBlZGVmIHNob3J0IGludCB5eXR5cGVfaW50MTY7CiAjaWYgKGRlZmluZWQgX19TVERD
X18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1
cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIGludAotWVlJRCAoaW50IGkpCitZWUlEIChp
bnQgeXlpKQogI2Vsc2UKIHN0YXRpYyBpbnQKLVlZSUQgKGkpCi0gICAgaW50IGk7CitZWUlEICh5
eWkpCisgICAgaW50IHl5aTsKICNlbmRpZgogewotICByZXR1cm4gaTsKKyAgcmV0dXJuIHl5aTsK
IH0KICNlbmRpZgogCkBAIC0zNTIsOSArMzQzLDkgQEAgdm9pZCBmcmVlICh2b2lkICopOyAvKiBJ
TkZSSU5HRVMgT04gVVNFUgogLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBmb3Ig
YW55IHN0YWNrIG1lbWJlci4gICovCiB1bmlvbiB5eWFsbG9jCiB7Ci0gIHl5dHlwZV9pbnQxNiB5
eXNzOwotICBZWVNUWVBFIHl5dnM7Ci0gIH07CisgIHl5dHlwZV9pbnQxNiB5eXNzX2FsbG9jOwor
ICBZWVNUWVBFIHl5dnNfYWxsb2M7Cit9OwogCiAvKiBUaGUgc2l6ZSBvZiB0aGUgbWF4aW11bSBn
YXAgYmV0d2VlbiBvbmUgYWxpZ25lZCBzdGFjayBhbmQgdGhlIG5leHQuICAqLwogIyBkZWZpbmUg
WVlTVEFDS19HQVBfTUFYSU1VTSAoc2l6ZW9mICh1bmlvbiB5eWFsbG9jKSAtIDEpCkBAIC0zODgs
MTIgKzM3OSwxMiBAQCB1bmlvbiB5eWFsbG9jCiAgICBlbGVtZW50cyBpbiB0aGUgc3RhY2ssIGFu
ZCBZWVBUUiBnaXZlcyB0aGUgbmV3IGxvY2F0aW9uIG9mIHRoZQogICAgc3RhY2suICBBZHZhbmNl
IFlZUFRSIHRvIGEgcHJvcGVybHkgYWxpZ25lZCBsb2NhdGlvbiBmb3IgdGhlIG5leHQKICAgIHN0
YWNrLiAgKi8KLSMgZGVmaW5lIFlZU1RBQ0tfUkVMT0NBVEUoU3RhY2spCQkJCQlcCisjIGRlZmlu
ZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrX2FsbG9jLCBTdGFjaykJCQkJXAogICAgIGRvCQkJCQkJ
CQkJXAogICAgICAgewkJCQkJCQkJCVwKIAlZWVNJWkVfVCB5eW5ld2J5dGVzOwkJCQkJCVwKLQlZ
WUNPUFkgKCZ5eXB0ci0+U3RhY2ssIFN0YWNrLCB5eXNpemUpOwkJCQlcCi0JU3RhY2sgPSAmeXlw
dHItPlN0YWNrOwkJCQkJCVwKKwlZWUNPUFkgKCZ5eXB0ci0+U3RhY2tfYWxsb2MsIFN0YWNrLCB5
eXNpemUpOwkJCVwKKwlTdGFjayA9ICZ5eXB0ci0+U3RhY2tfYWxsb2M7CQkJCQlcCiAJeXluZXdi
eXRlcyA9IHl5c3RhY2tzaXplICogc2l6ZW9mICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFYSU1V
TTsgXAogCXl5cHRyICs9IHl5bmV3Ynl0ZXMgLyBzaXplb2YgKCp5eXB0cik7CQkJCVwKICAgICAg
IH0JCQkJCQkJCQlcCkBAIC00ODIsOSArNDczLDkgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4
IHl5cmhzW10gPQogLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVt
YmVyIFlZTiB3YXMgZGVmaW5lZC4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cmxp
bmVbXSA9CiB7Ci0gICAgICAgMCwgICAgOTEsICAgIDkxLCAgICA5OCwgICAgOTksICAgMTAyLCAg
IDEwNSwgICAxMDgsICAgMTExLCAgIDExNCwKLSAgICAgMTE3LCAgIDEyMCwgICAxMjMsICAgMTI2
LCAgIDEyOSwgICAxMzIsICAgMTM1LCAgIDEzOCwgICAxNDEsICAgMTQ0LAotICAgICAxNTcsICAg
MTcwLCAgIDE3MywgICAxNzYsICAgMTc5LCAgIDE4MiwgICAxODUKKyAgICAgICAwLCAgICA5MCwg
ICAgOTAsICAgIDk3LCAgICA5OCwgICAxMDEsICAgMTA0LCAgIDEwNywgICAxMTAsICAgMTEzLAor
ICAgICAxMTYsICAgMTE5LCAgIDEyMiwgICAxMjUsICAgMTI4LCAgIDEzMSwgICAxMzQsICAgMTM3
LCAgIDE0MCwgICAxNDMsCisgICAgIDE1NiwgICAxNjksICAgMTcyLCAgIDE3NSwgICAxNzgsICAg
MTgxLCAgIDE4NAogfTsKICNlbmRpZgogCkBAIC02MzksOSArNjMwLDE4IEBAIHN0YXRpYyBjb25z
dCB5eXR5cGVfdWludDggeXlzdG9zW10gPQogCiAvKiBMaWtlIFlZRVJST1IgZXhjZXB0IGRvIGNh
bGwgeXllcnJvci4gIFRoaXMgcmVtYWlucyBoZXJlIHRlbXBvcmFyaWx5CiAgICB0byBlYXNlIHRo
ZSB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgbWVhbmluZyBvZiBZWUVSUk9SLCBmb3IgR0NDLgotICAg
T25jZSBHQ0MgdmVyc2lvbiAyIGhhcyBzdXBwbGFudGVkIHZlcnNpb24gMSwgdGhpcyBjYW4gZ28u
ICAqLworICAgT25jZSBHQ0MgdmVyc2lvbiAyIGhhcyBzdXBwbGFudGVkIHZlcnNpb24gMSwgdGhp
cyBjYW4gZ28uICBIb3dldmVyLAorICAgWVlGQUlMIGFwcGVhcnMgdG8gYmUgaW4gdXNlLiAgTmV2
ZXJ0aGVsZXNzLCBpdCBpcyBmb3JtYWxseSBkZXByZWNhdGVkCisgICBpbiBCaXNvbiAyLjQuMidz
IE5FV1MgZW50cnksIHdoZXJlIGEgcGxhbiB0byBwaGFzZSBpdCBvdXQgaXMKKyAgIGRpc2N1c3Nl
ZC4gICovCiAKICNkZWZpbmUgWVlGQUlMCQlnb3RvIHl5ZXJybGFiCisjaWYgZGVmaW5lZCBZWUZB
SUwKKyAgLyogVGhpcyBpcyBoZXJlIHRvIHN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIEdDQyBj
cHAncworICAgICAtV3VudXNlZC1tYWNyb3MuICBOb3JtYWxseSB3ZSBkb24ndCB3b3JyeSBhYm91
dCB0aGF0IHdhcm5pbmcsIGJ1dAorICAgICBzb21lIHVzZXJzIGRvLCBhbmQgd2Ugd2FudCB0byBt
YWtlIGl0IGVhc3kgZm9yIHVzZXJzIHRvIHJlbW92ZQorICAgICBZWUZBSUwgdXNlcywgd2hpY2gg
d2lsbCBwcm9kdWNlIHdhcm5pbmdzIGZyb20gQmlzb24gMi41LiAgKi8KKyNlbmRpZgogCiAjZGVm
aW5lIFlZUkVDT1ZFUklORygpICAoISF5eWVycnN0YXR1cykKIApAQCAtODEyLDE3ICs4MTIsMjAg
QEAgeXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbAogI2lmIChkZWZpbmVk
IF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19j
cGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9zdGFja19wcmlu
dCAoeXl0eXBlX2ludDE2ICpib3R0b20sIHl5dHlwZV9pbnQxNiAqdG9wKQoreXlfc3RhY2tfcHJp
bnQgKHl5dHlwZV9pbnQxNiAqeXlib3R0b20sIHl5dHlwZV9pbnQxNiAqeXl0b3ApCiAjZWxzZQog
c3RhdGljIHZvaWQKLXl5X3N0YWNrX3ByaW50IChib3R0b20sIHRvcCkKLSAgICB5eXR5cGVfaW50
MTYgKmJvdHRvbTsKLSAgICB5eXR5cGVfaW50MTYgKnRvcDsKK3l5X3N0YWNrX3ByaW50ICh5eWJv
dHRvbSwgeXl0b3ApCisgICAgeXl0eXBlX2ludDE2ICp5eWJvdHRvbTsKKyAgICB5eXR5cGVfaW50
MTYgKnl5dG9wOwogI2VuZGlmCiB7CiAgIFlZRlBSSU5URiAoc3RkZXJyLCAiU3RhY2sgbm93Iik7
Ci0gIGZvciAoOyBib3R0b20gPD0gdG9wOyArK2JvdHRvbSkKLSAgICBZWUZQUklOVEYgKHN0ZGVy
ciwgIiAlZCIsICpib3R0b20pOworICBmb3IgKDsgeXlib3R0b20gPD0geXl0b3A7IHl5Ym90dG9t
KyspCisgICAgeworICAgICAgaW50IHl5Ym90ID0gKnl5Ym90dG9tOworICAgICAgWVlGUFJJTlRG
IChzdGRlcnIsICIgJWQiLCB5eWJvdCk7CisgICAgfQogICBZWUZQUklOVEYgKHN0ZGVyciwgIlxu
Iik7CiB9CiAKQEAgLTg1NywxMSArODYwLDExIEBAIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5
cnVsZSwgY29udGV4dCkKICAgLyogVGhlIHN5bWJvbHMgYmVpbmcgcmVkdWNlZC4gICovCiAgIGZv
ciAoeXlpID0gMDsgeXlpIDwgeXlucmhzOyB5eWkrKykKICAgICB7Ci0gICAgICBmcHJpbnRmIChz
dGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAi
ICAgJCVkID0gIiwgeXlpICsgMSk7CiAgICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwgeXly
aHNbeXlwcmhzW3l5cnVsZV0gKyB5eWldLAogCQkgICAgICAgJih5eXZzcFsoeXlpICsgMSkgLSAo
eXlucmhzKV0pCiAJCSAgICAgICAJCSAgICAgICAsIGNvbnRleHQpOwotICAgICAgZnByaW50ZiAo
c3RkZXJyLCAiXG4iKTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKICAgICB9CiB9
CiAKQEAgLTExNDMsMTAgKzExNDYsOCBAQCB5eWRlc3RydWN0ICh5eW1zZywgeXl0eXBlLCB5eXZh
bHVlcCwgY29uCiAJYnJlYWs7CiAgICAgfQogfQotDAogCiAvKiBQcmV2ZW50IHdhcm5pbmdzIGZy
b20gLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotCiAjaWZkZWYgWVlQQVJTRV9QQVJBTQogI2lm
IGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cwogaW50IHl5cGFyc2UgKHZv
aWQgKllZUEFSU0VfUEFSQU0pOwpAQCAtMTE2NSwxMCArMTE2Niw5IEBAIGludCB5eXBhcnNlICgp
OwogCiAKIAotCi0vKi0tLS0tLS0tLS0uCi18IHl5cGFyc2UuICB8Ci1gLS0tLS0tLS0tLSovCisv
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5cGFyc2Ugb3IgeXlwdXNoX3BhcnNlLiAg
fAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAjaWZkZWYgWVlQQVJTRV9QQVJBTQog
I2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCkBAIC0xMTky
LDIyICsxMTkyLDQ2IEBAIHl5cGFyc2UgKGNvbnRleHQpCiAjZW5kaWYKICNlbmRpZgogewotICAv
KiBUaGUgbG9vay1haGVhZCBzeW1ib2wuICAqLworLyogVGhlIGxvb2thaGVhZCBzeW1ib2wuICAq
LwogaW50IHl5Y2hhcjsKIAotLyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBsb29rLWFoZWFk
IHN5bWJvbC4gICovCisvKiBUaGUgc2VtYW50aWMgdmFsdWUgb2YgdGhlIGxvb2thaGVhZCBzeW1i
b2wuICAqLwogWVlTVFlQRSB5eWx2YWw7CiAKLS8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNv
IGZhci4gICovCi1pbnQgeXluZXJyczsKKyAgICAvKiBOdW1iZXIgb2Ygc3ludGF4IGVycm9ycyBz
byBmYXIuICAqLworICAgIGludCB5eW5lcnJzOworCisgICAgaW50IHl5c3RhdGU7CisgICAgLyog
TnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4g
ICovCisgICAgaW50IHl5ZXJyc3RhdHVzOworCisgICAgLyogVGhlIHN0YWNrcyBhbmQgdGhlaXIg
dG9vbHM6CisgICAgICAgYHl5c3MnOiByZWxhdGVkIHRvIHN0YXRlcy4KKyAgICAgICBgeXl2cyc6
IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLgorCisgICAgICAgUmVmZXIgdG8gdGhlIHN0YWNr
cyB0aHJ1IHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93CisgICAgICAgdG8g
cmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCisKKyAgICAvKiBUaGUgc3RhdGUgc3RhY2su
ICAqLworICAgIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07CisgICAgeXl0eXBlX2lu
dDE2ICp5eXNzOworICAgIHl5dHlwZV9pbnQxNiAqeXlzc3A7CisKKyAgICAvKiBUaGUgc2VtYW50
aWMgdmFsdWUgc3RhY2suICAqLworICAgIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOworICAg
IFlZU1RZUEUgKnl5dnM7CisgICAgWVlTVFlQRSAqeXl2c3A7CisKKyAgICBZWVNJWkVfVCB5eXN0
YWNrc2l6ZTsKIAotICBpbnQgeXlzdGF0ZTsKICAgaW50IHl5bjsKICAgaW50IHl5cmVzdWx0Owot
ICAvKiBOdW1iZXIgb2YgdG9rZW5zIHRvIHNoaWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFi
bGVkLiAgKi8KLSAgaW50IHl5ZXJyc3RhdHVzOwotICAvKiBMb29rLWFoZWFkIHRva2VuIGFzIGFu
IGludGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLwotICBpbnQgeXl0b2tlbiA9
IDA7CisgIC8qIExvb2thaGVhZCB0b2tlbiBhcyBhbiBpbnRlcm5hbCAodHJhbnNsYXRlZCkgdG9r
ZW4gbnVtYmVyLiAgKi8KKyAgaW50IHl5dG9rZW47CisgIC8qIFRoZSB2YXJpYWJsZXMgdXNlZCB0
byByZXR1cm4gc2VtYW50aWMgdmFsdWUgYW5kIGxvY2F0aW9uIGZyb20gdGhlCisgICAgIGFjdGlv
biByb3V0aW5lcy4gICovCisgIFlZU1RZUEUgeXl2YWw7CisKICNpZiBZWUVSUk9SX1ZFUkJPU0UK
ICAgLyogQnVmZmVyIGZvciBlcnJvciBtZXNzYWdlcywgYW5kIGl0cyBhbGxvY2F0ZWQgc2l6ZS4g
ICovCiAgIGNoYXIgeXltc2didWZbMTI4XTsKQEAgLTEyMTUsNTEgKzEyMzksMjggQEAgaW50IHl5
bmVycnM7CiAgIFlZU0laRV9UIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOwogI2VuZGlm
CiAKLSAgLyogVGhyZWUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKLSAgICAgYHl5c3MnOiByZWxh
dGVkIHRvIHN0YXRlcywKLSAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcywK
LSAgICAgYHl5bHMnOiByZWxhdGVkIHRvIGxvY2F0aW9ucy4KLQotICAgICBSZWZlciB0byB0aGUg
c3RhY2tzIHRocnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKLSAgICAg
dG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCi0KLSAgLyogVGhlIHN0YXRlIHN0YWNr
LiAgKi8KLSAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKLSAgeXl0eXBlX2ludDE2
ICp5eXNzID0geXlzc2E7Ci0gIHl5dHlwZV9pbnQxNiAqeXlzc3A7Ci0KLSAgLyogVGhlIHNlbWFu
dGljIHZhbHVlIHN0YWNrLiAgKi8KLSAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07Ci0gIFlZ
U1RZUEUgKnl5dnMgPSB5eXZzYTsKLSAgWVlTVFlQRSAqeXl2c3A7Ci0KLQotCiAjZGVmaW5lIFlZ
UE9QU1RBQ0soTikgICAoeXl2c3AgLT0gKE4pLCB5eXNzcCAtPSAoTikpCiAKLSAgWVlTSVpFX1Qg
eXlzdGFja3NpemUgPSBZWUlOSVRERVBUSDsKLQotICAvKiBUaGUgdmFyaWFibGVzIHVzZWQgdG8g
cmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQotICAgICBhY3Rpb24g
cm91dGluZXMuICAqLwotICBZWVNUWVBFIHl5dmFsOwotCi0KICAgLyogVGhlIG51bWJlciBvZiBz
eW1ib2xzIG9uIHRoZSBSSFMgb2YgdGhlIHJlZHVjZWQgcnVsZS4KICAgICAgS2VlcCB0byB6ZXJv
IHdoZW4gbm8gc3ltYm9sIHNob3VsZCBiZSBwb3BwZWQuICAqLwogICBpbnQgeXlsZW4gPSAwOwog
CisgIHl5dG9rZW4gPSAwOworICB5eXNzID0geXlzc2E7CisgIHl5dnMgPSB5eXZzYTsKKyAgeXlz
dGFja3NpemUgPSBZWUlOSVRERVBUSDsKKwogICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFydGlu
ZyBwYXJzZVxuIikpOwogCiAgIHl5c3RhdGUgPSAwOwogICB5eWVycnN0YXR1cyA9IDA7CiAgIHl5
bmVycnMgPSAwOwotICB5eWNoYXIgPSBZWUVNUFRZOwkJLyogQ2F1c2UgYSB0b2tlbiB0byBiZSBy
ZWFkLiAgKi8KKyAgeXljaGFyID0gWVlFTVBUWTsgLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFk
LiAgKi8KIAogICAvKiBJbml0aWFsaXplIHN0YWNrIHBvaW50ZXJzLgogICAgICBXYXN0ZSBvbmUg
ZWxlbWVudCBvZiB2YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2sKICAgICAgc28gdGhhdCB0aGV5IHN0
YXkgb24gdGhlIHNhbWUgbGV2ZWwgYXMgdGhlIHN0YXRlIHN0YWNrLgogICAgICBUaGUgd2FzdGVk
IGVsZW1lbnRzIGFyZSBuZXZlciBpbml0aWFsaXplZC4gICovCi0KICAgeXlzc3AgPSB5eXNzOwog
ICB5eXZzcCA9IHl5dnM7CiAKQEAgLTEyODksNyArMTI5MCw2IEBAIGludCB5eW5lcnJzOwogCVlZ
U1RZUEUgKnl5dnMxID0geXl2czsKIAl5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKIAotCiAJ
LyogRWFjaCBzdGFjayBwb2ludGVyIGFkZHJlc3MgaXMgZm9sbG93ZWQgYnkgdGhlIHNpemUgb2Yg
dGhlCiAJICAgZGF0YSBpbiB1c2UgaW4gdGhhdCBzdGFjaywgaW4gYnl0ZXMuICBUaGlzIHVzZWQg
dG8gYmUgYQogCSAgIGNvbmRpdGlvbmFsIGFyb3VuZCBqdXN0IHRoZSB0d28gZXh0cmEgYXJncywg
YnV0IHRoYXQgbWlnaHQKQEAgLTEyOTcsNyArMTI5Nyw2IEBAIGludCB5eW5lcnJzOwogCXl5b3Zl
cmZsb3cgKFlZXygibWVtb3J5IGV4aGF1c3RlZCIpLAogCQkgICAgJnl5c3MxLCB5eXNpemUgKiBz
aXplb2YgKCp5eXNzcCksCiAJCSAgICAmeXl2czEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5dnNwKSwK
LQogCQkgICAgJnl5c3RhY2tzaXplKTsKIAogCXl5c3MgPSB5eXNzMTsKQEAgLTEzMjAsOSArMTMx
OSw4IEBAIGludCB5eW5lcnJzOwogCSAgKHVuaW9uIHl5YWxsb2MgKikgWVlTVEFDS19BTExPQyAo
WVlTVEFDS19CWVRFUyAoeXlzdGFja3NpemUpKTsKIAlpZiAoISB5eXB0cikKIAkgIGdvdG8geXll
eGhhdXN0ZWRsYWI7Ci0JWVlTVEFDS19SRUxPQ0FURSAoeXlzcyk7Ci0JWVlTVEFDS19SRUxPQ0FU
RSAoeXl2cyk7Ci0KKwlZWVNUQUNLX1JFTE9DQVRFICh5eXNzX2FsbG9jLCB5eXNzKTsKKwlZWVNU
QUNLX1JFTE9DQVRFICh5eXZzX2FsbG9jLCB5eXZzKTsKICMgIHVuZGVmIFlZU1RBQ0tfUkVMT0NB
VEUKIAlpZiAoeXlzczEgIT0geXlzc2EpCiAJICBZWVNUQUNLX0ZSRUUgKHl5c3MxKTsKQEAgLTEz
MzMsNyArMTMzMSw2IEBAIGludCB5eW5lcnJzOwogICAgICAgeXlzc3AgPSB5eXNzICsgeXlzaXpl
IC0gMTsKICAgICAgIHl5dnNwID0geXl2cyArIHl5c2l6ZSAtIDE7CiAKLQogICAgICAgWVlEUFJJ
TlRGICgoc3RkZXJyLCAiU3RhY2sgc2l6ZSBpbmNyZWFzZWQgdG8gJWx1XG4iLAogCQkgICh1bnNp
Z25lZCBsb25nIGludCkgeXlzdGFja3NpemUpKTsKIApAQCAtMTM0Myw2ICsxMzQwLDkgQEAgaW50
IHl5bmVycnM7CiAKICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiRW50ZXJpbmcgc3RhdGUgJWRcbiIs
IHl5c3RhdGUpKTsKIAorICBpZiAoeXlzdGF0ZSA9PSBZWUZJTkFMKQorICAgIFlZQUNDRVBUOwor
CiAgIGdvdG8geXliYWNrdXA7CiAKIC8qLS0tLS0tLS0tLS0uCkBAIC0xMzUxLDE2ICsxMzUxLDE2
IEBAIGludCB5eW5lcnJzOwogeXliYWNrdXA6CiAKICAgLyogRG8gYXBwcm9wcmlhdGUgcHJvY2Vz
c2luZyBnaXZlbiB0aGUgY3VycmVudCBzdGF0ZS4gIFJlYWQgYQotICAgICBsb29rLWFoZWFkIHRv
a2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KKyAgICAg
bG9va2FoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25l
LiAgKi8KIAotICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91dCByZWZl
cmVuY2UgdG8gbG9vay1haGVhZCB0b2tlbi4gICovCisgIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUg
d2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4uICAqLwogICB5
eW4gPSB5eXBhY3RbeXlzdGF0ZV07CiAgIGlmICh5eW4gPT0gWVlQQUNUX05JTkYpCiAgICAgZ290
byB5eWRlZmF1bHQ7CiAKLSAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2stYWhlYWQgdG9rZW4g
aWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisgIC8qIE5vdCBrbm93biA9PiBnZXQgYSBs
b29rYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCiAKLSAgLyogWVlD
SEFSIGlzIGVpdGhlciBZWUVNUFRZIG9yIFlZRU9GIG9yIGEgdmFsaWQgbG9vay1haGVhZCBzeW1i
b2wuICAqLworICAvKiBZWUNIQVIgaXMgZWl0aGVyIFlZRU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxp
ZCBsb29rYWhlYWQgc3ltYm9sLiAgKi8KICAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKQogICAgIHsK
ICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlJlYWRpbmcgYSB0b2tlbjogIikpOwpAQCAtMTM5
MiwyMCArMTM5MiwxNiBAQCB5eWJhY2t1cDoKICAgICAgIGdvdG8geXlyZWR1Y2U7CiAgICAgfQog
Ci0gIGlmICh5eW4gPT0gWVlGSU5BTCkKLSAgICBZWUFDQ0VQVDsKLQogICAvKiBDb3VudCB0b2tl
bnMgc2hpZnRlZCBzaW5jZSBlcnJvcjsgYWZ0ZXIgdGhyZWUsIHR1cm4gb2ZmIGVycm9yCiAgICAg
IHN0YXR1cy4gICovCiAgIGlmICh5eWVycnN0YXR1cykKICAgICB5eWVycnN0YXR1cy0tOwogCi0g
IC8qIFNoaWZ0IHRoZSBsb29rLWFoZWFkIHRva2VuLiAgKi8KKyAgLyogU2hpZnQgdGhlIGxvb2th
aGVhZCB0b2tlbi4gICovCiAgIFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0aW5nIiwgeXl0b2tlbiwg
Jnl5bHZhbCwgJnl5bGxvYyk7CiAKLSAgLyogRGlzY2FyZCB0aGUgc2hpZnRlZCB0b2tlbiB1bmxl
c3MgaXQgaXMgZW9mLiAgKi8KLSAgaWYgKHl5Y2hhciAhPSBZWUVPRikKLSAgICB5eWNoYXIgPSBZ
WUVNUFRZOworICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuLiAgKi8KKyAgeXljaGFyID0g
WVlFTVBUWTsKIAogICB5eXN0YXRlID0geXluOwogICAqKyt5eXZzcCA9IHl5bHZhbDsKQEAgLTE0
NDksMTEyICsxNDQ1LDExMiBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgICooY29udGV4dC0+
cmVzdWx0KSA9IHN0YXRpY19jYXN0PGludD4oKHl5dnNwWygxKSAtICgxKV0pKTsKICAgICAgICAg
WVlBQ0NFUFQ7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA0OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIHx8ICh5eXZzcFsoMykgLSAo
MyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDU6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgJiYgKHl5dnNwWygzKSAtICgzKV0p
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSB8ICh5eXZzcFsoMykgLSAoMyldKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDc6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgXiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4OgogCiAgICAgewogICAgICAgICAoeXl2YWwp
ID0gKHl5dnNwWygxKSAtICgzKV0pICYgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgOToKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5
eXZzcFsoMSkgLSAoMyldKSAhPSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxMDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFsoMSkgLSAoMyldKSA9PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxMToKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFso
MSkgLSAoMyldKSA+PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkg
LSAoMyldKSA8PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAo
MyldKSA+ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE0OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0p
IDwgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPj4g
KHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MTY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPDwgKHl5
dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTc6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgLSAoeXl2c3Bb
KDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSArICh5eXZzcFsoMykg
LSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5OgpAQCAtMTU3
MSw3ICsxNTY3LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAo
eXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pICUgKHl5dnNwWygzKSAtICgzKV0pOwogICAgICAg
ICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMDoKQEAgLTE1ODgsNTMg
KzE1ODQsNTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAoeXl2
YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIC8gKHl5dnNwWygzKSAtICgzKV0pOwogICAgICAgICB9
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMToKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAqICh5eXZzcFsoMykgLSAoMyldKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIyOgogCiAgICAgewogICAgICAgICAo
eXl2YWwpID0gISAoeXl2c3BbKDIpIC0gKDIpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAyMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9IH4gKHl5dnNwWygyKSAt
ICgyKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjQ6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbCkgPSAtICh5eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDI1OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKyAo
eXl2c3BbKDIpIC0gKDIpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAy
NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMikgLSAoMyldKTsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAogCi0vKiBMaW5lIDEyNjcgb2YgeWFjYy5jLiAgKi8KIAog
ICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQpAQCAtMTY0Niw3ICsxNjQxLDYgQEAgeXlyZWR1
Y2U6CiAKICAgKisreXl2c3AgPSB5eXZhbDsKIAotCiAgIC8qIE5vdyBgc2hpZnQnIHRoZSByZXN1
bHQgb2YgdGhlIHJlZHVjdGlvbi4gIERldGVybWluZSB3aGF0IHN0YXRlCiAgICAgIHRoYXQgZ29l
cyB0bywgYmFzZWQgb24gdGhlIHN0YXRlIHdlIHBvcHBlZCBiYWNrIHRvIGFuZCB0aGUgcnVsZQog
ICAgICBudW1iZXIgcmVkdWNlZCBieS4gICovCkBAIC0xNzExLDcgKzE3MDUsNyBAQCB5eWVycmxh
YjoKIAogICBpZiAoeXllcnJzdGF0dXMgPT0gMykKICAgICB7Ci0gICAgICAvKiBJZiBqdXN0IHRy
aWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tlbiBhZnRlciBhbgorICAgICAg
LyogSWYganVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRl
ciBhbgogCSBlcnJvciwgZGlzY2FyZCBpdC4gICovCiAKICAgICAgIGlmICh5eWNoYXIgPD0gWVlF
T0YpCkBAIC0xNzI4LDcgKzE3MjIsNyBAQCB5eWVycmxhYjoKIAl9CiAgICAgfQogCi0gIC8qIEVs
c2Ugd2lsbCB0cnkgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tlbiBhZnRlciBzaGlmdGluZyB0aGUg
ZXJyb3IKKyAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIg
c2hpZnRpbmcgdGhlIGVycm9yCiAgICAgIHRva2VuLiAgKi8KICAgZ290byB5eWVycmxhYjE7CiAK
QEAgLTE3ODUsOSArMTc3OSw2IEBAIHl5ZXJybGFiMToKICAgICAgIFlZX1NUQUNLX1BSSU5UICh5
eXNzLCB5eXNzcCk7CiAgICAgfQogCi0gIGlmICh5eW4gPT0gWVlGSU5BTCkKLSAgICBZWUFDQ0VQ
VDsKLQogICAqKyt5eXZzcCA9IHl5bHZhbDsKIAogCkBAIC0xODEyLDcgKzE4MDMsNyBAQCB5eWFi
b3J0bGFiOgogICB5eXJlc3VsdCA9IDE7CiAgIGdvdG8geXlyZXR1cm47CiAKLSNpZm5kZWYgeXlv
dmVyZmxvdworI2lmICFkZWZpbmVkKHl5b3ZlcmZsb3cpIHx8IFlZRVJST1JfVkVSQk9TRQogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCB5eWV4
aGF1c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJlLiAgfAogYC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTgyMyw3ICsx
ODE0LDcgQEAgeXlleGhhdXN0ZWRsYWI6CiAjZW5kaWYKIAogeXlyZXR1cm46Ci0gIGlmICh5eWNo
YXIgIT0gWVlFT0YgJiYgeXljaGFyICE9IFlZRU1QVFkpCisgIGlmICh5eWNoYXIgIT0gWVlFTVBU
WSkKICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IGRpc2NhcmRpbmcgbG9va2FoZWFkIiwKIAkJ
IHl5dG9rZW4sICZ5eWx2YWwsIGNvbnRleHQpOwogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3lt
Ym9scyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGlt
aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcAkocmV2aXNpb24gMTUyNTk1
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RpbWluZy9SZXN0cmlj
dFZlcnRleFNoYWRlclRpbWluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAg
dm9pZCBSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZzo6dmlzaXRTeQogewogICAgIGlmIChJc1Nh
bXBsZXIobm9kZS0+Z2V0QmFzaWNUeXBlKCkpKSB7CiAgICAgICAgICsrbU51bUVycm9yczsKLSAg
ICAgICAgbVNpbmsucHJlZml4KEVQcmVmaXhFcnJvcik7Ci0gICAgICAgIG1TaW5rLmxvY2F0aW9u
KG5vZGUtPmdldExpbmUoKSk7Ci0gICAgICAgIG1TaW5rIDw8ICJTYW1wbGVycyBhcmUgbm90IHBl
cm1pdHRlZCBpbiB2ZXJ0ZXggc2hhZGVycy5cbiI7CisgICAgICAgIG1TaW5rLm1lc3NhZ2UoRVBy
ZWZpeEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmdldExpbmUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAiU2FtcGxlcnMgYXJlIG5vdCBwZXJtaXR0ZWQgaW4gdmVydGV4IHNo
YWRlcnMiKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTI1OTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAor
MjAxMy0wNy0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVXBkYXRlIEFOR0xFIHRvIHIyNDI2LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogUmVuYW1lZCBEZXRlY3RS
ZWN1cnNpb24gdG8gRGV0ZWN0Q2FsbERlcHRoIGFuZCBhZGRlZCBidWlsdGluX3N5bWJvbF90YWJs
ZS4KKwogMjAxMy0wNy0xMiAgcGVhdm9Ab3V0bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4K
IAogICAgICAgICBbV2luQ2Fpcm9dIENvbXBpbGUgZml4LgpJbmRleDogU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0yODY2LDYgKzI4NjYsNyBAQCBpZiAoV1RGX1VTRV8zRF9HUkFQSElD
UykKICAgICBlbmRpZiAoKQogCiAgICAgbGlzdChBUFBFTkQgQU5HTEVTdXBwb3J0X1NPVVJDRVMK
KyAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3lt
Ym9sX3RhYmxlLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGls
ZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9
L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuR0xTTC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZ
X0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcApAQCAtMjg3Niw4ICsyODc3LDgg
QEAgaWYgKFdURl9VU0VfM0RfR1JBUEhJQ1MpCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FO
R0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcAogICAg
ICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5k
ZW5jeUdyYXBoT3V0cHV0LmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMv
Y29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoVHJhdmVyc2UuY3BwCisgICAgICAgICR7
VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwCiAg
ICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250
aW51aXR5LmNwcAotICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIv
RGV0ZWN0UmVjdXJzaW9uLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMv
Y29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5H
TEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9B
TkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAKSW5kZXg6IFdlYktpdExpYnJhcmllcy9s
aWJXZWJLaXRTeXN0ZW1JbnRlcmZhY2VNb3VudGFpbkxpb24uYQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBk
aXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtCgpJVHhoY21Ob1Bnb2pNUzh5TUNBZ0lDQWdJQ0FnSUNBZ01U
TTNNVGMzTmpBek9TQWdOVEF4SUNBZ01qQWdJQ0FnTVRBd05qUTBJQ0F4Ck56azFOaUFnSUNBZ1lB
cGZYeTVUV1UxRVJVWUFBQUFBQUFBQUFBQUFBR2dNQUFCUUFBQUFhRVlBQUVvQ0FBQm9SZ0FBR2dJ
QUFHaEcKQUFEMkFRQUFhRVlBQU1rQkFBQm9SZ0FBNFFJQUFHaEdBQUFBQUFBQWFFWUFBT0VEQUFC
b1JnQUFNZ0FBQUdoR0FBQVpBQUFBYUVZQQpBSnNCQUFCb1JnQUFDZ01BQUdoR0FBQlpBd0FBYUVZ
QUFIWUJBQUJvUmdBQVVBRUFBR2hHQUFEQUF3QUFhRVlBQUNvQkFBQm9SZ0FBCjd3QUFBR2hHQUFD
WEFnQUFhRVlBQU1zQUFBQm9SZ0FBcHdBQUFHaEdBQUJ1QUFBQWFFWUFBS1VEQUFCb1JnQUFCQVFB
QUREWEFRQWMKQkFBQU1OY0JBTGdHQUFBdzF3RUFvd1lBQUREWEFRQkZCQUFBTU5jQkFDOEVBQUF3
MXdFQVd3UUFBRERYQVFDZUJBQUFNTmNCQU5BRQpBQUF3MXdFQTZBUUFBRERYQVFBQUJRQUFNTmNC
QUNnRkFBQXcxd0VBUVFVQUFERFhBUUJhQlFBQU1OY0JBSTBGQUFBdzF3RUFzUVVBCkFERFhBUURX
QlFBQU1OY0JBQmdHQUFBdzF3RUFWd1lBQUREWEFRQjFCZ0FBTU5jQkFPY0dBQUFRV1FJQXh4Y0FB
QkJaQWdBQUJ3QUEKRUZrQ0FDQUhBQUFRV1FJQXBCWUFBQkJaQWdEMkZ3QUFFRmtDQU5NVkFBQVFX
UUlBUUFjQUFCQlpBZ0NHQndBQUVGa0NBTDhIQUFBUQpXUUlBK0FjQUFCQlpBZ0FrQ0FBQUVGa0NB
RWdJQUFBUVdRSUFiQWdBQUJCWkFnQ1FDQUFBRUZrQ0FMUUlBQUFRV1FJQStnZ0FBQkJaCkFnQXpD
UUFBRUZrQ0FGY0pBQUFRV1FJQWV3a0FBQkJaQWdDZkNRQUFFRmtDQUNnWUFBQVFXUUlBYnhjQUFC
QlpBZ0RCRmdBQUVGa0MKQU1NSkFBQVFXUUlBQ3dvQUFCQlpBZ0F4Q2dBQUVGa0NBRmNLQUFBUVdR
SUFud29BQUJCWkFnRGFDZ0FBRUZrQ0FBQUxBQUFRV1FJQQpKZ3NBQUJCWkFnQk1Dd0FBRUZrQ0FI
SUxBQUFRV1FJQXZRc0FBQkJaQWdEN0N3QUFFRmtDQUNRTUFBQVFXUUlBVFF3QUFCQlpBZ0IyCkRB
QUFFRmtDQUo4TUFBQVFXUUlBN3d3QUFCQlpBZ0F5RFFBQUVGa0NBR0FOQUFBUVdRSUFqZzBBQUJC
WkFnQzhEUUFBRUZrQ0FPb04KQUFBUVdRSUFQQTRBQUJCWkFnQ0JEZ0FBRUZrQ0FMRU9BQUFRV1FJ
QTRRNEFBQkJaQWdBUkR3QUFFRmtDQUVFUEFBQVFXUUlBbFE4QQpBQkJaQWdEY0R3QUFFRmtDQUE0
UUFBQVFXUUlBUUJBQUFCQlpBZ0J5RUFBQUVGa0NBS1FRQUFBUVdRSUEreEFBQUJCWkFnQkZFUUFB
CkVGa0NBSG9SQUFBUVdRSUFyeEVBQUJCWkFnRGtFUUFBRUZrQ0FCa1NBQUFRV1FJQVV4SUFBQkJa
QWdBUEV3QUFFRmtDQUFNWEFBQVEKV1FJQWpSSUFBQkJaQWdCa0ZnQUFFRmtDQU9JV0FBQVFXUUlB
R2hZQUFCQlpBZ0NWRlFBQUVGa0NBRFVUQUFBUVdRSUFaUk1BQUJCWgpBZ0N5RWdBQUVGa0NBSm9Y
QUFBUVdRSUEyaE1BQUJCWkFnQ1dFd0FBRUZrQ0FDWVhBQUFRV1FJQVNSY0FBQkJaQWdEZ0VnQUFF
RmtDCkFCb1ZBQUFRV1FJQTNoUUFBQkJaQWdDUUZBQUFFRmtDQUU0VUFBQVFXUUlBRXhRQUFCQlpB
Z0JRRlFBQUVGa0NBTTRHQUFBUVdRSUEKZXlnQUFFQkJCZ0NlS0FBQVFFRUdBTHNvQUFCQVFRWUEx
eWdBQUVCQkJnRHJLQUFBUUVFR0FQZ29BQUJBUVFZQUhTa0FBRUJCQmdBdwpLUUFBUUVFR0FFc3BB
QUJBUVFZQVhTa0FBRUJCQmdCMUtRQUFRRUVHQUk4cEFBQkFRUVlBcFNrQUFFQkJCZ0RJS1FBQVFF
RUdBT1FwCkFBQkFRUVlBRENvQUFFQkJCZ0FuS2dBQVFFRUdBRUVxQUFCQVFRWUFieW9BQUVCQkJn
Q0tLZ0FBUUVFR0FMRXFBQUJBUVFZQXp5b0EKQUVCQkJnRHVLZ0FBUUVFR0FBOHJBQUJBUVFZQUhT
c0FBRUJCQmdBOEt3QUFRRUVHQUdFckFBQkFRUVlBZlNzQUFFQkJCZ0NYS3dBQQpRRUVHQU1BckFB
QkFRUVlBM0NzQUFFQkJCZ0QyS3dBQVFFRUdBQVlzQUFCQVFRWUFJeXdBQUVCQkJnQTdMQUFBUUVF
R0FGOHNBQUJBClFRWUFpeXdBQUVCQkJnQ29MQUFBUUVFR0FMb3NBQUJBUVFZQTN5d0FBRUJCQmdB
RUxRQUFRRUVHQUM4dEFBQkFRUVlBVFMwQUFFQkIKQmdCcExRQUFRRUVHQUhzdEFBQkFRUVlBbUMw
QUFFQkJCZ0NxTFFBQVFFRUdBTVl0QUFCQVFRWUEzeTBBQUVCQkJnRDZMUUFBUUVFRwpBQmd1QUFC
QVFRWUFOQzRBQUVCQkJnQlJMZ0FBUUVFR0FHMHVBQUJBUVFZQW9pNEFBRUJCQmdESUxnQUFRRUVH
QU4wdUFBQkFRUVlBCjd5NEFBRUJCQmdBWkx3QUFRRUVHQURrdkFBQkFRUVlBWHk4QUFFQkJCZ0NH
THdBQVFFRUdBTE12QUFCQVFRWUF4UzhBQUVCQkJnRGEKTHdBQVFFRUdBUEl2QUFCQVFRWUFHakFB
QUVCQkJnQkJNQUFBUUVFR0FHUXdBQUJBUVFZQWZUQUFBRUJCQmdDM01BQUFRRUVHQU5rdwpBQUJB
UVFZQWd5TUFBRUJCQmdDRkdBQUFRRUVHQUpzWUFBQkFRUVlBd2hnQUFFQkJCZ0RaR0FBQVFFRUdB
UFFZQUFCQVFRWUFEeGtBCkFFQkJCZ0FzR1FBQVFFRUdBRWNaQUFCQVFRWUFaaGtBQUVCQkJnQ0pH
UUFBUUVFR0FLOFpBQUJBUVFZQXloa0FBRUJCQmdEa0dRQUEKUUVFR0FQMFpBQUJBUVFZQUVob0FB
RUJCQmdBcEdnQUFRRUVHQUU4YUFBQkFRUVlBZEJvQUFFQkJCZ0NPR2dBQVFFRUdBS01hQUFCQQpR
UVlBenhvQUFFQkJCZ0Q2R2dBQVFFRUdBQ2diQUFCQVFRWUFVeHNBQUVCQkJnQ0NHd0FBUUVFR0FM
MGJBQUJBUVFZQTRCc0FBRUJCCkJnQU9IQUFBUUVFR0FFZ2NBQUJBUVFZQWF4d0FBRUJCQmdDVEhB
QUFRRUVHQUxvY0FBQkFRUVlBNUJ3QUFFQkJCZ0FGSFFBQVFFRUcKQUNFZEFBQkFRUVlBTngwQUFF
QkJCZ0JQSFFBQVFFRUdBSGNkQUFCQVFRWUFpeDBBQUVCQkJnQ2tIUUFBUUVFR0FMNGRBQUJBUVFZ
QQoweDBBQUVCQkJnRHZIUUFBUUVFR0FBc2VBQUJBUVFZQUtSNEFBRUJCQmdCS0hnQUFRRUVHQUcw
ZUFBQkFRUVlBa3g0QUFFQkJCZ0N2CkhnQUFRRUVHQU5nZUFBQkFRUVlBQUI4QUFFQkJCZ0FnSHdB
QVFFRUdBRGtmQUFCQVFRWUFYaDhBQUVCQkJnQjlId0FBUUVFR0FKNGYKQUFCQVFRWUF0QjhBQUVC
QkJnRFBId0FBUUVFR0FPY2ZBQUJBUVFZQUNpQUFBRUJCQmdBOUlBQUFRRUVHQUZrZ0FBQkFRUVlB
Y2lBQQpBRUJCQmdDcklBQUFRRUVHQU1vZ0FBQkFRUVlBOFNBQUFFQkJCZ0Q3SUFBQVFFRUdBQk1o
QUFCQVFRWUFKeUVBQUVCQkJnQkVJUUFBClFFRUdBR0FoQUFCQVFRWUFkeUVBQUVCQkJnQ1RJUUFB
UUVFR0FLd2hBQUJBUVFZQXZTRUFBRUJCQmdEYklRQUFRRUVHQVA4aEFBQkEKUVFZQUppSUFBRUJC
QmdCTUlnQUFRRUVHQUhFaUFBQkFRUVlBbmlJQUFFQkJCZ0RLSWdBQVFFRUdBQUVqQUFCQVFRWUFF
aU1BQUVCQgpCZ0FxSXdBQVFFRUdBRUFqQUFCQVFRWUFWU01BQUVCQkJnQnZJd0FBUUVFR0FGOFlB
QUJBUVFZQW9TTUFBRUJCQmdDNkl3QUFRRUVHCkFOWWpBQUJBUVFZQTlpTUFBRUJCQmdBU0pBQUFR
RUVHQUNra0FBQkFRUVlBU0NRQUFFQkJCZ0JrSkFBQVFFRUdBSVVrQUFCQVFRWUEKb2lRQUFFQkJC
Z0RCSkFBQVFFRUdBTnNrQUFCQVFRWUErQ1FBQUVCQkJnQVZKUUFBUUVFR0FERWxBQUJBUVFZQVRD
VUFBRUJCQmdCaApKUUFBUUVFR0FJWWxBQUJBUVFZQXFpVUFBRUJCQmdET0pRQUFRRUVHQU9JbEFB
QkFRUVlBQkNZQUFFQkJCZ0FsSmdBQVFFRUdBRHdtCkFBQkFRUVlBU3lZQUFFQkJCZ0JnSmdBQVFF
RUdBSHdtQUFCQVFRWUFsaVlBQUVCQkJnQzFKZ0FBUUVFR0FPUW1BQUJBUVFZQS9pWUEKQUVCQkJn
QVFKd0FBUUVFR0FDTW5BQUJBUVFZQVBTY0FBRUJCQmdCZUp3QUFRRUVHQUh3bkFBQkFRUVlBblNj
QUFFQkJCZ0M5SndBQQpRRUVHQU8wbkFBQkFRUVlBR3lnQUFFQkJCZ0JNS0FBQVFFRUdBQkl4QUFC
QVFRWUFLVEVBQUVCQkJnQkpNUUFBUUVFR0FHUXhBQUJBClFRWUFoVEVBQUVCQkJnQ2dNUUFBUUVF
R0FMc3hBQUJBUVFZQSt6RUFBRUJCQmdBYU1nQUFRRUVHQUQ0eUFBQkFRUVlBV2pJQUFFQkIKQmdC
K01nQUFRRUVHQUpzeUFBQkFRUVlBeERJQUFFQkJCZ0RDTXdBQUVOTUtBRUl6QUFBUTB3b0FIVE1B
QUJEVENnRCtNZ0FBRU5NSwpBT0F5QUFBUTB3b0Fpek1BQUJEVENnRExNd0FBRU5NS0FMQXpBQUFR
MHdvQVpqTUFBQkRUQ2dEWk13QUEySHNMQU0wMUFBRFlld3NBCk1UUUFBTmg3Q3dEYU5BQUEySHNM
QUxBMEFBRFlld3NBbERRQUFOaDdDd0J5TkFBQTJIc0xBRTQwQUFEWWV3c0FEalVBQU5oN0N3QVEK
TkFBQTJIc0xBUGd6QUFEWWV3c0E4RFVBQU5oN0N3QlNOUUFBMkhzTEFHMDFBQURZZXdzQURUWUFB
Tmg3Q3dDcE5RQUEySHNMQUk0MQpBQURZZXdzQU1qVUFBTmg3Q3dBMk5nQUFVQ3NNQUYwNEFBQlFL
d3dBZURnQUFGQXJEQUJBT1FBQVVDc01BR1kyQUFCUUt3d0FVVFlBCkFGQXJEQUNUT0FBQVVDc01B
QjA1QUFCUUt3d0EwemdBQUZBckRBQUlPQUFBVUNzTUFOWTNBQUJRS3d3QXZEY0FBRkFyREFDaU53
QUEKVUNzTUFIQTNBQUJRS3d3QVBqY0FBRkFyREFBSU53QUFVQ3NNQU00MkFBQlFLd3dBUFRnQUFG
QXJEQUQ1T0FBQVVDc01BSmMyQUFCUQpLd3dBWFRrQUFJRE1EQUNOT1FBQWdNd01BS0E1QUFCZlgx
cE9NVFJOWldScFlWVkpSV3hsYldWdWRFUXdSWFlBWDE5YVRqRTBUV1ZrCmFXRlZTVVZzWlcxbGJu
UkVNVVYyQUY5ZldrNHhPVTFsWkdsaFRHVm5ZV041UTI5dWRISnZiSE5FTUVWMkFGOWZXazR4T1Ux
bFpHbGgKVEdWbllXTjVRMjl1ZEhKdmJITkVNVVYyQUY5ZldrNHlOVTFsWkdsaFRHVm5ZV041VlVs
SmJXRm5aVVZzWlcxbGJuUTFjR0ZwYm5SRgpVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBBRjlmV2s0
eU5VMWxaR2xoVEdWbllXTjVWVWxKYldGblpVVnNaVzFsYm5SRU1FVjJBRjlmCldrNHlOVTFsWkds
aFRHVm5ZV041VlVsSmJXRm5aVVZzWlcxbGJuUkVNVVYyQUY5ZldrNHlOMDFsWkdsaFRHVm5ZV041
VlVsVWFXMWwKYkdsdVpWTnNhV1JsY2pWd1lXbHVkRVZRT1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1FB
WDE5YVRqSTNUV1ZrYVdGTVpXZGhZM2xWU1ZScApiV1ZzYVc1bFUyeHBaR1Z5UkRCRmRnQmZYMXBP
TWpkTlpXUnBZVXhsWjJGamVWVkpWR2x0Wld4cGJtVlRiR2xrWlhKRU1VVjJBRjlmCldrNUxNVFJO
WldScFlWVkpSV3hsYldWdWRERXhibUYwZFhKaGJGTnBlbVZGZGdCZlgxcE9TekUwVFdWa2FXRlZT
VVZzWlcxbGJuUTMKYUdsMFZHVnpkRVUyUTBkU1pXTjBOME5IVUc5cGJuUUFYMTlhVGtzeE9VMWxa
R2xoVEdWbllXTjVRMjl1ZEhKdmJITXhOR052Ym5SeQpiMnhHYjNKUVlYSjBSV2tBWDE5YVRrc3hP
VTFsWkdsaFRHVm5ZV041UTI5dWRISnZiSE0yYzJ4cFpHVnlSWFlBWDE5YVRrc3lOVTFsClpHbGhU
R1ZuWVdONVZVbEpiV0ZuWlVWc1pXMWxiblF4TVc1aGRIVnlZV3hUYVhwbFJYWUFYMTlhVGtzeU5V
MWxaR2xoVEdWbllXTjUKVlVsSmJXRm5aVVZzWlcxbGJuUXlNM05sZEZWd1EyOXVkR1Y0ZEVadmNs
QmhhVzUwYVc1blJWQTVRMGREYjI1MFpYaDBOa05IVW1WagpkQUJmWDFwT1N6STFUV1ZrYVdGTVpX
ZGhZM2xWU1VsdFlXZGxSV3hsYldWdWRESTNjbVZ6ZEc5eVpVTnZiblJsZUhSQlpuUmxjbEJoCmFX
NTBhVzVuUlZBNVEwZERiMjUwWlhoMEFGOWZXazVMTWpWTlpXUnBZVXhsWjJGamVWVkpTVzFoWjJW
RmJHVnRaVzUwTldsdFlXZGwKUlhZQVgxOWFUa3N5TjAxbFpHbGhUR1ZuWVdONVZVbFVhVzFsYkds
dVpWTnNhV1JsY2pJemMyVjBWWEJEYjI1MFpYaDBSbTl5VUdGcApiblJwYm1kRlVEbERSME52Ym5S
bGVIUTJRMGRTWldOMEFGOWZXazVMTWpkTlpXUnBZVXhsWjJGamVWVkpWR2x0Wld4cGJtVlRiR2xr
ClpYSXlOM0psYzNSdmNtVkRiMjUwWlhoMFFXWjBaWEpRWVdsdWRHbHVaMFZRT1VOSFEyOXVkR1Y0
ZEFCZlgxcFVWakU1VFdWa2FXRk0KWldkaFkzbERiMjUwY205c2N3QmZYMXBVVmpJMVRXVmthV0ZN
WldkaFkzbFZTVWx0WVdkbFJXeGxiV1Z1ZEFCZlgxcFVWakkzVFdWawphV0ZNWldkaFkzbFZTVlJw
YldWc2FXNWxVMnhwWkdWeUFGOVhTMFJ5WVhkTlpXUnBZVk5zYVdSbGNsUnlZV05yQUY5WFMwUnlZ
WGROClpXUnBZVlZKVUdGeWRBQmZWMHRJYVhSVVpYTjBUV1ZrYVdGVlNWQmhjblFBWDFkTFRXVmhj
M1Z5WlUxbFpHbGhWVWxRWVhKMEFGOWYKV2s0eE0wMWxaR2xoUTI5dWRISnZiSE15TTJSeVlYZFVh
VzFsYkdsdVpWTnNhV1JsY2xSeVlXTnJSVkE1UTBkRGIyNTBaWGgwTmtOSApVbVZqZEdSa2FnQmZY
MXBPTVROTlpXUnBZVU52Ym5SeWIyeHpPR1J5WVhkUVlYSjBSV2xRT1VOSFEyOXVkR1Y0ZERaRFIx
SmxZM1JxCkFGOWZXazR4TTAxbFpHbGhRMjl1ZEhKdmJITkVNRVYyQUY5ZldrNHhNMDFsWkdsaFEy
OXVkSEp2YkhORU1VVjJBRjlmV2s0eE5FMWwKWkdsaFZVbEZiR1Z0Wlc1ME9ITmxkRXhoZVdWeVJW
QTNRMGRNWVhsbGNnQmZYMXBPTVRSTlpXUnBZVlZKUld4bGJXVnVkRVF3UlhZQQpYMTlhVGpFMFRX
VmthV0ZWU1VWc1pXMWxiblJFTVVWMkFGOWZXazVMTVROTlpXUnBZVU52Ym5SeWIyeHpNVEZvYVhS
VVpYTjBVR0Z5CmRFVnBOa05IVW1WamREZERSMUJ2YVc1MEFGOWZXazVMTVROTlpXUnBZVU52Ym5S
eWIyeHpNVEZ1WVhSMWNtRnNVMmw2WlVWcEFGOWYKV2s1TE1UUk5aV1JwWVZWSlJXeGxiV1Z1ZERF
eGJtRjBkWEpoYkZOcGVtVkZkZ0JmWDFwT1N6RTBUV1ZrYVdGVlNVVnNaVzFsYm5ReQpNM05sZEZW
d1EyOXVkR1Y0ZEVadmNsQmhhVzUwYVc1blJWQTVRMGREYjI1MFpYaDBOa05IVW1WamRBQmZYMXBP
U3pFMFRXVmthV0ZWClNVVnNaVzFsYm5ReU4zSmxjM1J2Y21WRGIyNTBaWGgwUVdaMFpYSlFZV2x1
ZEdsdVowVlFPVU5IUTI5dWRHVjRkQUJmWDFwT1N6RTAKVFdWa2FXRlZTVVZzWlcxbGJuUTFiR0Y1
WlhKRmRnQmZYMXBPU3pFMFRXVmthV0ZWU1VWc1pXMWxiblEzYUdsMFZHVnpkRVUyUTBkUwpaV04w
TjBOSFVHOXBiblFBWDE5YVZGWXhNMDFsWkdsaFEyOXVkSEp2YkhNQVgxOWFWRll4TkUxbFpHbGhW
VWxGYkdWdFpXNTBBRjlmCldrNHhORTFsWkdsaFZVbEZiR1Z0Wlc1MFJEQkZkZ0JmWDFwT01UUk5a
V1JwWVZWSlJXeGxiV1Z1ZEVReFJYWUFYMTlhVGpJeFRXVmsKYVdGVGFHRnlaV1JWU1VOdmJuUnli
Mnh6UkRCRmRnQmZYMXBPTWpGTlpXUnBZVk5vWVhKbFpGVkpRMjl1ZEhKdmJITkVNVVYyQUY5ZgpX
azR5TlUxbFpHbGhVMmhoY21Wa1ZVbEpiV0ZuWlVWc1pXMWxiblF4TjJ4aGVXVnlWMmwwYUVOdmJu
UmxiblJ6UlZBNVEwZERiMjUwClpYaDBOa05IVW1WamRBQmZYMXBPTWpWTlpXUnBZVk5vWVhKbFpG
VkpTVzFoWjJWRmJHVnRaVzUwTWpGcGJuWmhiR2xrWVhSbFEyRmoKYUdWa1NXMWhaMlZGZGdCZlgx
cE9NalZOWldScFlWTm9ZWEpsWkZWSlNXMWhaMlZGYkdWdFpXNTBOWEJoYVc1MFJWQTVRMGREYjI1
MApaWGgwTmtOSFVtVmpkQUJmWDFwT01qVk5aV1JwWVZOb1lYSmxaRlZKU1cxaFoyVkZiR1Z0Wlc1
ME9XZHNiM2REYjJ4dmNrVjJBRjlmCldrNHlOVTFsWkdsaFUyaGhjbVZrVlVsSmJXRm5aVVZzWlcx
bGJuUkRNVVYyQUY5ZldrNHlOVTFsWkdsaFUyaGhjbVZrVlVsSmJXRm4KWlVWc1pXMWxiblJETWtW
MkFGOWZXazR5TlUxbFpHbGhVMmhoY21Wa1ZVbEpiV0ZuWlVWc1pXMWxiblJFTUVWMkFGOWZXazR5
TlUxbApaR2xoVTJoaGNtVmtWVWxKYldGblpVVnNaVzFsYm5SRU1VVjJBRjlmV2s0eU5VMWxaR2xo
VTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrClpYSXhOMnhoZVdWeVYybDBhRU52Ym5SbGJuUnpSVkE1
UTBkRGIyNTBaWGgwTmtOSFVtVmpkQUJmWDFwT01qVk5aV1JwWVZOb1lYSmwKWkZWSlZtOXNkVzFs
VTJ4cFpHVnlOWEJoYVc1MFJWQTVRMGREYjI1MFpYaDBOa05IVW1WamRBQmZYMXBPTWpWTlpXUnBZ
Vk5vWVhKbApaRlZKVm05c2RXMWxVMnhwWkdWeVF6RkZkZ0JmWDFwT01qVk5aV1JwWVZOb1lYSmxa
RlZKVm05c2RXMWxVMnhwWkdWeVF6SkZkZ0JmClgxcE9NalZOWldScFlWTm9ZWEpsWkZWSlZtOXNk
VzFsVTJ4cFpHVnlSREJGZGdCZlgxcE9NalZOWldScFlWTm9ZWEpsWkZWSlZtOXMKZFcxbFUyeHBa
R1Z5UkRGRmRnQmZYMXBPTWpkTlpXUnBZVk5vWVhKbFpGVkpRME5KYldGblpVVnNaVzFsYm5ReE4y
eGhlV1Z5VjJsMAphRU52Ym5SbGJuUnpSVkE1UTBkRGIyNTBaWGgwTmtOSFVtVmpkQUJmWDFwT01q
ZE5aV1JwWVZOb1lYSmxaRlZKUTBOSmJXRm5aVVZzClpXMWxiblJFTUVWMkFGOWZXazR5TjAxbFpH
bGhVMmhoY21Wa1ZVbERRMGx0WVdkbFJXeGxiV1Z1ZEVReFJYWUFYMTlhVGpJM1RXVmsKYVdGVGFH
RnlaV1JWU1ZScGJXVnNhVzVsVTJ4cFpHVnlNVGRzWVhsbGNsZHBkR2hEYjI1MFpXNTBjMFZRT1VO
SFEyOXVkR1Y0ZERaRApSMUpsWTNRQVgxOWFUakkzVFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzYVc1
bFUyeHBaR1Z5TlhCaGFXNTBSVkE1UTBkRGIyNTBaWGgwCk5rTkhVbVZqZEFCZlgxcE9NamROWldS
cFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpETVVWMkFGOWZXazR5TjAxbFpHbGgKVTJo
aGNtVmtWVWxVYVcxbGJHbHVaVk5zYVdSbGNrTXlSWFlBWDE5YVRqSTNUV1ZrYVdGVGFHRnlaV1JW
U1ZScGJXVnNhVzVsVTJ4cApaR1Z5UkRCRmRnQmZYMXBPTWpkTlpXUnBZVk5vWVhKbFpGVkpWR2x0
Wld4cGJtVlRiR2xrWlhKRU1VVjJBRjlmV2s0ek1FMWxaR2xoClUyaGhjbVZrVlVsQ1lXTnJaM0p2
ZFc1a1JXeGxiV1Z1ZERFM2JHRjVaWEpYYVhSb1EyOXVkR1Z1ZEhORlVEbERSME52Ym5SbGVIUTIK
UTBkU1pXTjBBRjlmV2s0ek1FMWxaR2xoVTJoaGNtVmtWVWxDWVdOclozSnZkVzVrUld4bGJXVnVk
RFZ3WVdsdWRFVlFPVU5IUTI5dQpkR1Y0ZERaRFIxSmxZM1FBWDE5YVRqTXdUV1ZrYVdGVGFHRnla
V1JWU1VKaFkydG5jbTkxYm1SRmJHVnRaVzUwUXpGRmRnQmZYMXBPCk16Qk5aV1JwWVZOb1lYSmxa
RlZKUW1GamEyZHliM1Z1WkVWc1pXMWxiblJETWtWMkFGOWZXazR6TUUxbFpHbGhVMmhoY21Wa1ZV
bEMKWVdOclozSnZkVzVrUld4bGJXVnVkRVF3UlhZQVgxOWFUak13VFdWa2FXRlRhR0Z5WldSVlNV
SmhZMnRuY205MWJtUkZiR1Z0Wlc1MApSREZGZGdCZlgxcE9NelZOWldScFlWTm9ZWEpsWkZWSlJu
VnNiRk5qY21WbGJsWnZiSFZ0WlZOc2FXUmxjakUzYkdGNVpYSlhhWFJvClEyOXVkR1Z1ZEhORlVE
bERSME52Ym5SbGVIUTJRMGRTWldOMEFGOWZXazR6TlUxbFpHbGhVMmhoY21Wa1ZVbEdkV3hzVTJO
eVpXVnUKVm05c2RXMWxVMnhwWkdWeU5YQmhhVzUwUlZBNVEwZERiMjUwWlhoME5rTkhVbVZqZEFC
ZlgxcE9NelZOWldScFlWTm9ZWEpsWkZWSgpSblZzYkZOamNtVmxibFp2YkhWdFpWTnNhV1JsY2tN
eFJYWUFYMTlhVGpNMVRXVmthV0ZUYUdGeVpXUlZTVVoxYkd4VFkzSmxaVzVXCmIyeDFiV1ZUYkds
a1pYSkRNa1YyQUY5ZldrNHpOVTFsWkdsaFUyaGhjbVZrVlVsR2RXeHNVMk55WldWdVZtOXNkVzFs
VTJ4cFpHVnkKUkRCRmRnQmZYMXBPTXpWTlpXUnBZVk5vWVhKbFpGVkpSblZzYkZOamNtVmxibFp2
YkhWdFpWTnNhV1JsY2tReFJYWUFYMTlhVGpNMwpUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5z
YVdSbGNsUm9kVzFpUld4bGJXVnVkREUzYkdGNVpYSlhhWFJvUTI5dWRHVnVkSE5GClVEbERSME52
Ym5SbGVIUTJRMGRTWldOMEFGOWZXazR6TjAxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVGJHbGta
WEpVYUhWdFlrVnMKWlcxbGJuUTFjR0ZwYm5SRlVEbERSME52Ym5SbGVIUTJRMGRTWldOMEFGOWZX
azR6TjAxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVApiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUkRN
VVYyQUY5ZldrNHpOMDFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsa1pYSlVhSFZ0CllrVnNa
VzFsYm5SRE1rVjJBRjlmV2s0ek4wMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKVWFI
VnRZa1ZzWlcxbGJuUkUKTUVWMkFGOWZXazR6TjAxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVGJH
bGtaWEpVYUhWdFlrVnNaVzFsYm5SRU1VVjJBRjlmV2s0egpPVTFsWkdsaFUyaGhjbVZrVlVsVWFX
MWxiR2x1WlZOc2FXUmxjbFJvZFcxaVJXeGxiV1Z1ZERFM2JHRjVaWEpYYVhSb1EyOXVkR1Z1CmRI
TkZVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBBRjlmV2s0ek9VMWxaR2xoVTJoaGNtVmtWVWxVYVcx
bGJHbHVaVk5zYVdSbGNsUm8KZFcxaVJXeGxiV1Z1ZERWd1lXbHVkRVZRT1VOSFEyOXVkR1Y0ZERa
RFIxSmxZM1FBWDE5YVRqTTVUV1ZrYVdGVGFHRnlaV1JWU1ZScApiV1ZzYVc1bFUyeHBaR1Z5Vkdo
MWJXSkZiR1Z0Wlc1MFF6RkZkZ0JmWDFwT016bE5aV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZU
CmJHbGtaWEpVYUhWdFlrVnNaVzFsYm5SRE1rVjJBRjlmV2s0ek9VMWxaR2xoVTJoaGNtVmtWVWxV
YVcxbGJHbHVaVk5zYVdSbGNsUm8KZFcxaVJXeGxiV1Z1ZEVRd1JYWUFYMTlhVGpNNVRXVmthV0ZU
YUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVZHaDFiV0pGYkdWdApaVzUwUkRGRmRnQmZYMXBP
TkRKTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5UW1GamEyZHliM1Z1WkVWc1pXMWxi
blF4Ck4yeGhlV1Z5VjJsMGFFTnZiblJsYm5SelJWQTVRMGREYjI1MFpYaDBOa05IVW1WamRBQmZY
MXBPTkRKTlpXUnBZVk5vWVhKbFpGVkoKVm05c2RXMWxVMnhwWkdWeVFtRmphMmR5YjNWdVpFVnNa
VzFsYm5RMWNHRnBiblJGVURsRFIwTnZiblJsZUhRMlEwZFNaV04wQUY5ZgpXazQwTWsxbFpHbGhV
MmhoY21Wa1ZVbFdiMngxYldWVGJHbGtaWEpDWVdOclozSnZkVzVrUld4bGJXVnVkRU14UlhZQVgx
OWFUalF5ClRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsY2tKaFkydG5jbTkxYm1SRmJH
VnRaVzUwUXpKRmRnQmZYMXBPTkRKTlpXUnAKWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeVFt
RmphMmR5YjNWdVpFVnNaVzFsYm5SRU1FVjJBRjlmV2s0ME1rMWxaR2xoVTJoaApjbVZrVlVsV2Iy
eDFiV1ZUYkdsa1pYSkNZV05yWjNKdmRXNWtSV3hsYldWdWRFUXhSWFlBWDE5YVRqUTNUV1ZrYVdG
VGFHRnlaV1JWClNVWjFiR3hUWTNKbFpXNVdiMngxYldWVGJHbGtaWEpVYUhWdFlrVnNaVzFsYm5S
RU1FVjJBRjlmV2s0ME4wMWxaR2xoVTJoaGNtVmsKVlVsR2RXeHNVMk55WldWdVZtOXNkVzFsVTJ4
cFpHVnlWR2gxYldKRmJHVnRaVzUwUkRGRmRnQmZYMXBPU3pFMFRXVmthV0ZWU1VWcwpaVzFsYm5R
eE1XNWhkSFZ5WVd4VGFYcGxSWFlBWDE5YVRrc3hORTFsWkdsaFZVbEZiR1Z0Wlc1ME4yaHBkRlJs
YzNSRk5rTkhVbVZqCmREZERSMUJ2YVc1MEFGOWZXazVMTWpGTlpXUnBZVk5vWVhKbFpGVkpRMjl1
ZEhKdmJITXhOR052Ym5SeWIyeEdiM0pRWVhKMFJXa0EKWDE5YVRrc3lNVTFsWkdsaFUyaGhjbVZr
VlVsRGIyNTBjbTlzY3paemJHbGtaWEpGZGdCZlgxcE9TekkxVFdWa2FXRlRhR0Z5WldSVgpTVWx0
WVdkbFJXeGxiV1Z1ZERFeGJtRjBkWEpoYkZOcGVtVkZkZ0JmWDFwT1N6STFUV1ZrYVdGVGFHRnla
V1JWU1VsdFlXZGxSV3hsCmJXVnVkREV5WkdWbVlYVnNkRWx0WVdkbFJYWUFYMTlhVGtzeU5VMWxa
R2xoVTJoaGNtVmtWVWxKYldGblpVVnNaVzFsYm5ReE5HUnkKWVhkQ1lXTnJaM0p2ZFc1a1JWQTVR
MGREYjI1MFpYaDBOa05IVW1WamRBQmZYMXBPU3pJMVRXVmthV0ZUYUdGeVpXUlZTVWx0WVdkbApS
V3hsYldWdWRESXdZMjl1YzNSeVlXbHVRWE53WldOMFVtRjBhVzlGZGdCZlgxcE9TekkzVFdWa2FX
RlRhR0Z5WldSVlNVTkRTVzFoCloyVkZiR1Z0Wlc1ME1qQmpiMjV6ZEhKaGFXNUJjM0JsWTNSU1lY
UnBiMFYyQUY5ZldrNUxNamROWldScFlWTm9ZWEpsWkZWSlZHbHQKWld4cGJtVlRiR2xrWlhJeU1Y
UnBiV1ZzYVc1bFVtVmpkRVp2Y2tKdmRXNWtjMFUyUTBkU1pXTjBBRjlmV2s1TE1qZE5aV1JwWVZO
bwpZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEl5TW1ocFoyaHNhV2RvZEZWdWJHOWhaR1ZrVW1G
dVoyVkZVRGxEUjBOdmJuUmxlSFEyClEwZFNaV04wQUY5ZldrNUxNemROWldScFlWTm9ZWEpsWkZW
SlZtOXNkVzFsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwTVRGdVlYUjEKY21Gc1UybDZaVVYyQUY5
ZldrNUxNemROWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUw
Tm5KaApaR2wxYzBWMkFGOWZXazVMTXpkTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5
VkdoMWJXSkZiR1Z0Wlc1ME4yaHBkRlJsCmMzUkZOa05IVW1WamREZERSMUJ2YVc1MEFGOWZXazVM
TXpsTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRiR2xrWlhKVWFIVnQKWWtWc1pXMWxiblF4
TVc1aGRIVnlZV3hUYVhwbFJYWUFYMTlhVGtzek9VMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVa
Vk5zYVdSbApjbFJvZFcxaVJXeGxiV1Z1ZERkb2FYUlVaWE4wUlRaRFIxSmxZM1EzUTBkUWIybHVk
QUJmWDFwT1N6UXlUV1ZrYVdGVGFHRnlaV1JWClNWWnZiSFZ0WlZOc2FXUmxja0poWTJ0bmNtOTFi
bVJGYkdWdFpXNTBOMmhwZEZSbGMzUkZOa05IVW1WamREZERSMUJ2YVc1MEFGOWYKV2s1TE5EZE5a
V1JwWVZOb1lYSmxaRlZKUm5Wc2JGTmpjbVZsYmxadmJIVnRaVk5zYVdSbGNsUm9kVzFpUld4bGJX
VnVkRFp5WVdScApkWE5GZGdCZlgxcFVWakl4VFdWa2FXRlRhR0Z5WldSVlNVTnZiblJ5YjJ4ekFG
OWZXbFJXTWpWTlpXUnBZVk5vWVhKbFpGVkpTVzFoCloyVkZiR1Z0Wlc1MEFGOWZXbFJXTWpWTlpX
UnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5QUY5ZldsUldNamROWldScFlWTm8KWVhKbFpG
VkpRME5KYldGblpVVnNaVzFsYm5RQVgxOWFWRll5TjAxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkds
dVpWTnNhV1JsY2dCZgpYMXBVVmpNd1RXVmthV0ZUYUdGeVpXUlZTVUpoWTJ0bmNtOTFibVJGYkdW
dFpXNTBBRjlmV2xSV016Vk5aV1JwWVZOb1lYSmxaRlZKClJuVnNiRk5qY21WbGJsWnZiSFZ0WlZO
c2FXUmxjZ0JmWDFwVVZqTTNUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5zYVdSbGNsUm8KZFcx
aVJXeGxiV1Z1ZEFCZlgxcFVWak01VFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5
VkdoMWJXSkZiR1Z0Wlc1MApBRjlmV2xSV05ESk5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhw
WkdWeVFtRmphMmR5YjNWdVpFVnNaVzFsYm5RQVgxOWFWRlkwCk4wMWxaR2xoVTJoaGNtVmtWVWxH
ZFd4c1UyTnlaV1Z1Vm05c2RXMWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTBBRjlEVkVadmJuUkgK
WlhSV1pYSjBhV05oYkVkc2VYQm9jMFp2Y2tOb1lYSmhZM1JsY25NQVgxZExRVlpCYzNObGRGSmxj
MjlzZG1Wa1ZWSk1BRjlYUzBGWQpTVzVwZEdsaGJHbDZaVVZzWlcxbGJuUlhhWFJvVUhKbGMyVnVk
R1Z5VUdsa0FGOVhTMEZZVW1WbmFYTjBaWEpTWlcxdmRHVkJjSEFBClgxZExRVmhTWldkcGMzUmxj
bEpsYlc5MFpWQnliMk5sYzNNQVgxZExRVmhTWlcxdmRHVkZiR1Z0Wlc1MFJtOXlWRzlyWlc0QVgx
ZEwKUVZoU1pXMXZkR1ZRY205alpYTnpTV1JsYm5ScFptbGxjZ0JmVjB0QldGSmxiVzkwWlZSdmEy
VnVSbTl5Uld4bGJXVnVkQUJmVjB0QgpXRk5sZEZkcGJtUnZkMFp2Y2xKbGJXOTBaVVZzWlcxbGJu
UUFYMWRMUVdOalpYTnphV0pwYkdsMGVVaGhibVJzWlVadlkzVnpRMmhoCmJtZGxaQUJmVjB0QlpI
WmhibU5sUkdWbVlYVnNkRUoxZEhSdmJsQjFiSE5sUVc1cGJXRjBhVzl1QUY5WFMwRndjRlpsY25O
cGIyNUQKYUdWamEweGxjM05VYUdGdUFGOVhTME5CUTI5dWRHVjRkRWRsZEVOdmJHOXlVM0JoWTJV
QVgxZExRMEZEYjI1MFpYaDBSMlYwUTI5dQpkR1Y0ZEVsa0FGOVhTME5CUTI5dWRHVjRkRWRsZEV4
aGVXVnlBRjlYUzBOQlEyOXVkR1Y0ZEVsdWRtRnNhV1JoZEdVQVgxZExRMEZECmIyNTBaWGgwVFdG
clpWSmxiVzkwWlVadmNsZHBibVJ2ZDFObGNuWmxjZ0JmVjB0RFFVTnZiblJsZUhSTllXdGxVbVZ0
YjNSbFYybDAKYUZObGNuWmxjbEJ2Y25RQVgxZExRMEZEYjI1MFpYaDBVMlYwUTI5c2IzSlRjR0Zq
WlFCZlYwdERRVU52Ym5SbGVIUlRaWFJNWVhsbApjZ0JmVjB0RFFVeGhlV1Z5Ulc1MWJXVnlZWFJs
VW1WamRITkNaV2x1WjBSeVlYZHVWMmwwYUVKc2IyTnJBRjlYUzBOQlVtVnVaR1Z5ClpYSkJaR1JE
YUdGdVoyVk9iM1JwWm1sallYUnBiMjVQWW5ObGNuWmxjZ0JmVjB0RFFWSmxibVJsY21WeVVtVnRi
M1psUTJoaGJtZGwKVG05MGFXWnBZMkYwYVc5dVQySnpaWEoyWlhJQVgxZExRMFpPWlhSM2IzSnJV
MlYwVDNabGNuSnBaR1ZUZVhOMFpXMVFjbTk0ZVZObApkSFJwYm1kekFGOVhTME5HVlZKTVEyRmph
R1ZEYjNCNVFXeHNTRzl6ZEU1aGJXVnpTVzVRWlhKemFYTjBaVzUwVTNSdmNtVUFYMWRMClEwWlZV
a3hEWVdOb1pVTnZjSGxCYkd4SWIzTjBUbUZ0WlhOSmJsQmxjbk5wYzNSbGJuUlRkRzl5WlVadmNs
QmhjblJwZEdsdmJnQmYKVjB0RFJsVlNURU5oWTJobFEyOXdlVUZzYkZCaGNuUnBkR2x2Yms1aGJX
VnpBRjlYUzBOR1ZWSk1RMkZqYUdWRVpXeGxkR1ZJYjNOMApUbUZ0WlhOSmJsQmxjbk5wYzNSbGJu
UlRkRzl5WlFCZlYwdERSbFZTVEVOaFkyaGxSR1ZzWlhSbFNHOXpkRTVoYldWelNXNVFaWEp6CmFY
TjBaVzUwVTNSdmNtVkdiM0pRWVhKMGFYUnBiMjRBWDFkTFEwWlZVa3hTWlhGMVpYTjBRV3hzYjNk
QmJHeFFiM04wUTJGamFHbHUKWndCZlYwdERSbFZTVEZKbGNYVmxjM1JEYjNCNVNGUlVVRkpsY1hW
bGMzUkNiMlI1VUdGeWRITUFYMWRMUTBaVlVreFNaWEYxWlhOMApVMlYwU0ZSVVVGSmxjWFZsYzNS
Q2IyUjVVR0Z5ZEhNQVgxZExRMGREYjI1MFpYaDBSSEpoZDNOWGFYUm9RMjl5Y21WamRGTm9ZV1J2
CmQwOW1abk5sZEhNQVgxZExRMGREYjI1MFpYaDBSMlYwVTJodmRXeGtVMjF2YjNSb1JtOXVkSE1B
WDFkTFEwZERiMjUwWlhoMFNYTkMKYVhSdFlYQkRiMjUwWlhoMEFGOVhTME5IUTI5dWRHVjRkRkps
YzJWMFEyeHBjQUJmVjB0RFIxQmhkR2hCWkdSU2IzVnVaR1ZrVW1WagpkQUJmVjB0RFIxQmhkSFJs
Y201RGNtVmhkR1ZYYVhSb1NXMWhaMlZCYm1SVWNtRnVjMlp2Y20wQVgxZExRMGxIWlhSU1IwSkJP
RVp2CmNtMWhkQUJmVjB0RFZFWnZiblJVY21GdWMyWnZjbTFIYkhsd2FITUFYMWRMUTFSU2RXNUha
WFJKYm1sMGFXRnNRV1IyWVc1alpRQmYKVjB0RFlXTm9aVkJoY25ScGRHbHZia3RsZVFCZlYwdERZ
V05vWldSU1pYTndiMjV6WlVadmNsSmxjWFZsYzNRQVgxZExRMjl3ZVVGWQpWR1Y0ZEUxaGNtdGxj
bEpoYm1kbFJXNWtBRjlYUzBOdmNIbEJXRlJsZUhSTllYSnJaWEpTWVc1blpWTjBZWEowQUY5WFMw
TnZjSGxDCmRXNWtiR1ZWVWt4R2IzSkZlR1ZqZFhSaFlteGxWVkpNQUY5WFMwTnZjSGxEUmt4dlky
RnNhWHBoZEdsdmJsQnlaV1psY25KbFpFNWgKYldVQVgxZExRMjl3ZVVOR1ZWSk1VbVZ6Y0c5dWMy
VlRkV2RuWlhOMFpXUkdhV3hsYm1GdFpRQmZWMHREYjNCNVEwOU9Ua1ZEVkZCeQpiM2g1VW1WemNH
OXVjMlVBWDFkTFEyOXdlVU55WldSbGJuUnBZV3hHY205dFEwWlFaWEp6YVhOMFpXNTBVM1J2Y21G
blpRQmZWMHRECmIzQjVSR1ZtWVhWc2RGTmxZWEpqYUZCeWIzWnBaR1Z5UkdsemNHeGhlVTVoYldV
QVgxZExRMjl3ZVVadmRXNWtZWFJwYjI1RFlXTm8KWlVScGNtVmpkRzl5ZVFCZlYwdERiM0I1U0ZS
VVVFTnZiMnRwWlZOMGIzSmhaMlVBWDFkTFEyOXdlVTVUVlZKTVVtVnpjRzl1YzJWRApaWEowYVda
cFkyRjBaVU5vWVdsdUFGOVhTME52Y0hsT1UxVlNURkpsYzNCdmJuTmxVM1JoZEhWelRHbHVaUUJm
VjB0RGIzQjVVbVZ4CmRXVnpkRmRwZEdoVGRHOXlZV2RsVTJWemMybHZiZ0JmVjB0RGNtVmhkR1ZC
V0ZSbGVIUk5ZWEpyWlhJQVgxZExRM0psWVhSbFFWaFUKWlhoMFRXRnlhMlZ5VW1GdVoyVUFYMWRM
UTNKbFlYUmxRVmhWU1VWc1pXMWxiblJTWldZQVgxZExRM0psWVhSbFExUk1hVzVsVjJsMAphRlZ1
YVVOb1lYSlFjbTkyYVdSbGNnQmZWMHREY21WaGRHVkRWRlI1Y0dWelpYUjBaWEpYYVhSb1ZXNXBR
MmhoY2xCeWIzWnBaR1Z5ClFXNWtUM0IwYVc5dWN3QmZWMHREY21WaGRHVkRkWE4wYjIxRFJsSmxZ
V1JUZEhKbFlXMEFYMWRMUTNKbFlYUmxUVWxIVTJWeWRtVnkKVTI5MWNtTmxBRjlYUzBOeVpXRjBa
VTFsYlc5eWVWTjBZWFIxYzFCeVpYTnpkWEpsUTNKcGRHbGpZV3hFYVhOd1lYUmphRTl1VFdGcApi
bEYxWlhWbEFGOVhTME55WldGMFpWQnlhWFpoZEdWVGRHOXlZV2RsVTJWemMybHZiZ0JmVjB0RGNt
VmhkR1ZXVFZCeVpYTnpkWEpsClJHbHpjR0YwWTJoUGJrMWhhVzVSZFdWMVpRQmZWMHREZFhKemIz
SUFYMWRMUkdWc1pYUmxRV3hzU0ZSVVVFTnZiMnRwWlhNQVgxZEwKUkdWc1pYUmxTRlJVVUVOdmIy
dHBaUUJmVjB0RVpYTjBjbTk1VW1WdVpHVnlhVzVuVW1WemIzVnlZMlZ6QUY5WFMwUnBjMkZpYkdW
RApSMFJsWm1WeWNtVmtWWEJrWVhSbGN3QmZWMHRFY21GM1FtVjZaV3hsWkZSbGVIUkJjbVZoQUY5
WFMwUnlZWGRDWlhwbGJHVmtWR1Y0CmRFWnBaV3hrUTJWc2JBQmZWMHRFY21GM1EyRndjMHh2WTJ0
SmJtUnBZMkYwYjNJQVgxZExSSEpoZDBadlkzVnpVbWx1WndCZlYwdEUKY21GM1ZHVjRkRVpwWld4
a1EyVnNiRVp2WTNWelVtbHVad0JmVjB0RmJtRmliR1ZUWVc1a1ltOTRVM1I1YkdWR2FXeGxVWFZo
Y21GdQpkR2x1WlFCZlYwdEZibUZpYkdWVFpYUjBhVzVuUTNWeWMyOXlWMmhsYmtsdVFtRmphMmR5
YjNWdVpBQmZWMHRGYm1GaWJHVlhhVzVrCmIzZFBZMk5zZFhOcGIyNU9iM1JwWm1sallYUnBiMjV6
QUY5WFMwVjRaV04xZEdGaWJHVlhZWE5NYVc1clpXUlBiazl5UW1WbWIzSmwKVEdsdmJnQmZWMHRG
ZUdWamRYUmhZbXhsVjJGelRHbHVhMlZrVDI1UGNrSmxabTl5WlUxdmRXNTBZV2x1VEdsdmJnQmZW
MHRGZUdWagpkWFJoWW14bFYyRnpUR2x1YTJWa1QyNVBja0psWm05eVpWTnViM2RNWlc5d1lYSmtB
RjlYUzBWNGRISmhZM1JYYjNKa1JHVm1hVzVwCmRHbHZibFJ2YTJWdVVtRnVaMlZHY205dFEyOXVk
R1Y0ZEhWaGJGTjBjbWx1WndCZlYwdEdhV3gwWlhKQlpHUkVZWFJoQUY5WFMwWnAKYkhSbGNrTnla
V0YwWlVsdWMzUmhibU5sQUY5WFMwWnBiSFJsY2tSaGRHRkRiMjF3YkdWMFpRQmZWMHRHYVd4MFpY
SkpjMEoxWm1abApjbWx1WndCZlYwdEdhV3gwWlhKSmMwMWhibUZuWldSVFpYTnphVzl1QUY5WFMw
WnBiSFJsY2xkaGMwSnNiMk5yWldRQVgxZExSMlYwClFWaFVaWGgwVFdGeWEyVnlVbUZ1WjJWVWVY
QmxTVVFBWDFkTFIyVjBRVmhVWlhoMFRXRnlhMlZ5Vkhsd1pVbEVBRjlYUzBkbGRFSjUKZEdWelJu
SnZiVUZZVkdWNGRFMWhjbXRsY2dCZlYwdEhaWFJEUmxWU1RGSmxjM0J2Ym5ObFNGUlVVRkpsYzNC
dmJuTmxBRjlYUzBkbApkRU5HVlZKTVVtVnpjRzl1YzJWTlNVMUZWSGx3WlFCZlYwdEhaWFJEUmxW
U1RGSmxjM0J2Ym5ObFZWSk1BRjlYUzBkbGRFUmxabUYxCmJIUklWRlJRUTI5dmEybGxVM1J2Y21G
blpRQmZWMHRIWlhSRmVIUmxibk5wYjI1elJtOXlUVWxOUlZSNWNHVUFYMWRMUjJWMFJtOXUKZEVs
dVRHRnVaM1ZoWjJWR2IzSkRhR0Z5WVdOMFpYSUFYMWRMUjJWMFJtOXVkRWx1VEdGdVozVmhaMlZH
YjNKU1lXNW5aUUJmVjB0SApaWFJIYkhsd2FGUnlZVzV6Wm05eWJXVmtRV1IyWVc1alpYTUFYMWRM
UjJWMFIyeDVjR2h6Um05eVEyaGhjbUZqZEdWeWN3QmZWMHRIClpYUklWRlJRUTI5dmEybGxRV05q
WlhCMFVHOXNhV041QUY5WFMwZGxkRWhVVkZCUWFYQmxiR2x1YVc1blVISnBiM0pwZEhrQVgxZEwK
UjJWMFNXNXdkWFJRWVc1bGJGZHBibVJ2ZDFOMGVXeGxBRjlYUzBkbGRFMUpUVVZVZVhCbFJtOXlS
WGgwWlc1emFXOXVBRjlYUzBkbApkRTVUUlhabGJuUkxaWGxEYUdGeUFGOVhTMGRsZEU1VFZWSk1V
bVZ6Y0c5dWMyVkdjbVZ6YUc1bGMzTk1hV1psZEdsdFpRQmZWMHRIClpYUk9VMVZTVEZKbGMzQnZi
bk5sVEdGemRFMXZaR2xtYVdWa1JHRjBaUUJmVjB0SFpYUlFjbVZtWlhKeVpXUkZlSFJsYm5OcGIy
NUcKYjNKTlNVMUZWSGx3WlFCZlYwdEhaWFJWYzJWeVZHOUNZWE5sUTFSTkFGOVhTMGRsZEZabGNu
UnBZMkZzUjJ4NWNHaHpSbTl5UTJoaApjbUZqZEdWeWN3QmZWMHRIWlhSWFpXSkVaV1poZFd4MFEw
WlRkSEpwYm1kRmJtTnZaR2x1WndCZlYwdEhaWFJYYUdWbGJFVjJaVzUwClJHVnNkR0Z6QUY5WFMw
aFVWRkJEYjI5cmFXVnpBRjlYUzBoVVZGQkRiMjlyYVdWelJtOXlWVkpNQUY5WFMwaHBaR1ZYYjNK
a1JHVm0KYVc1cGRHbHZibGRwYm1SdmR3QmZWMHRKVDFOMWNtWmhZMlZEYjI1MFpYaDBRM0psWVhS
bEFGOVhTMGxQVTNWeVptRmpaVU52Ym5SbAplSFJEY21WaGRHVkpiV0ZuWlFCZlYwdEpibWwwYVdG
c2FYcGxUV0Y0YVcxMWJVaFVWRkJEYjI1dVpXTjBhVzl1UTI5MWJuUlFaWEpJCmIzTjBBRjlYUzBs
dWFYUnBZV3hwZW1WU1pXNWtaWEpUWlhKMlpYSUFYMWRMU1hOUWRXSnNhV05UZFdabWFYZ0FYMWRM
VFdGclpWSmwKYm1SbGNreGhlV1Z5QUY5WFMwMXZkWE5sVFc5MlpXUk9iM1JwWm1sallYUnBiMjRB
WDFkTFRsTkZiR0Z6ZEdsalJHVnNkR0ZHYjNKUwpaV0p2ZFc1a1JHVnNkR0VBWDFkTFRsTkZiR0Z6
ZEdsalJHVnNkR0ZHYjNKVWFXMWxSR1ZzZEdFQVgxZExUbE5TWldKdmRXNWtSR1ZzCmRHRkdiM0pG
YkdGemRHbGpSR1ZzZEdFQVgxZExUbE5WVWt4UWNtOTBiMk52YkVOc1lYTnpSbTl5VW1WeGRXVnpk
QUJmVjB0T1UxVlMKVEZKbGNYVmxjM1JEY21WaGRHVlRaWEpwWVd4cGVtRmliR1ZTWlhCeVpYTmxi
blJoZEdsdmJnQmZWMHRPVTFWU1RGSmxjWFZsYzNSRwpjbTl0VTJWeWFXRnNhWHBoWW14bFVtVndj
bVZ6Wlc1MFlYUnBiMjRBWDFkTFRsTlZVa3hTWlhOd2IyNXpaVU55WldGMFpWTmxjbWxoCmJHbDZZ
V0pzWlZKbGNISmxjMlZ1ZEdGMGFXOXVBRjlYUzA1VFZWSk1VbVZ6Y0c5dWMyVkdjbTl0VTJWeWFX
RnNhWHBoWW14bFVtVncKY21WelpXNTBZWFJwYjI0QVgxZExUbE5YYVc1a2IzZE5ZV3RsUW05MGRH
OXRRMjl5Ym1WeWMxTnhkV0Z5WlFCZlYwdE9VMWRwYm1SdgpkMDkyWlhKeWFXUmxRMGREYjI1MFpY
aDBBRjlYUzA1VFYybHVaRzkzVW1WemRHOXlaVU5IUTI5dWRHVjRkQUJmVjB0UWIzQjFjRU52CmJu
UmxlSFJOWlc1MUFGOVhTMUJ2Y0hWd1RXVnVkUUJmVjB0UlZFbHVZMngxWkdWUGJteDVUVzlrWlhK
dVRXVmthV0ZHYVd4bFZIbHcKWlhNQVgxZExVVlJOYjNacFpVUmhkR0ZTWVhSbEFGOVhTMUZVVFc5
MmFXVkVhWE5oWW14bFEyOXRjRzl1Wlc1MEFGOVhTMUZVVFc5MgphV1ZIWlhSVWVYQmxBRjlYUzFG
VVRXOTJhV1ZOWVhoVWFXMWxURzloWkdWa0FGOVhTMUZVVFc5MmFXVk5ZWGhVYVcxbFUyVmxhMkZp
CmJHVUFYMWRMVVZSTmIzWnBaVkpsYzI5c2RtVmtWVkpNQUY5WFMxRlVUVzkyYVdWV2FXVjNVMlYw
UkhKaGQxTjVibU5vY205dWIzVnoKYkhrQVgxZExVbVZqYjIxdFpXNWtaV1JUWTNKdmJHeGxjbE4w
ZVd4bEFGOVhTMUpsWjJsemRHVnlUMk5qYkhWemFXOXVUbTkwYVdacApZMkYwYVc5dVNHRnVaR3hs
Y2dCZlYwdFRZVzVrWW05NFJYaDBaVzV6YVc5dVEyOXVjM1Z0WlFCZlYwdFRZVzVrWW05NFJYaDBa
VzV6CmFXOXVRM0psWVhSbEFGOVhTMU5oYm1SaWIzaEZlSFJsYm5OcGIyNURjbVZoZEdWR2NtOXRV
MlZ5YVdGc2FYcGxaRVp2Y20xaGRBQmYKVjB0VFlXNWtZbTk0UlhoMFpXNXphVzl1UkdWemRISnZl
UUJmVjB0VFlXNWtZbTk0UlhoMFpXNXphVzl1UjJWMFUyVnlhV0ZzYVhwbApaRVp2Y20xaGRBQmZW
MHRUWVc1a1ltOTRSWGgwWlc1emFXOXVTVzUyWVd4cFpHRjBaUUJmVjB0VFpXNWtWWE5sY2tOb1lX
NW5aVTV2CmRHbG1hV05oZEdsdmJuTUFYMWRMVTJWMFFYQndiR2xqWVhScGIyNUpibVp2Y20xaGRH
bHZia2wwWlcwQVgxZExVMlYwUW1GelpVTlUKVFFCZlYwdFRaWFJEUVVGdWFXMWhkR2x2YmxaaGJI
VmxSblZ1WTNScGIyNEFYMWRMVTJWMFEwWlZVa3hTWlhGMVpYTjBVMmh2ZFd4awpRMjl1ZEdWdWRG
TnVhV1ptQUY5WFMxTmxkRU5HVlZKTVVtVnpjRzl1YzJWTlNVMUZWSGx3WlFCZlYwdFRaWFJEUjBa
dmJuUlNaVzVrClpYSnBibWROYjJSbEFGOVhTMU5sZEVOUFRrNUZRMVJRY205NGVVRjFkR2h2Y21s
NllYUnBiMjVHYjNKVGRISmxZVzBBWDFkTFUyVjAKUTA5T1RrVkRWRkJ5YjNoNVJtOXlVM1J5WldG
dEFGOVhTMU5sZEVSbFptRjFiSFJNYjJOaGJHbDZZWFJwYjI0QVgxZExVMlYwUkhKaApaMGx0WVdk
bEFGOVhTMU5sZEVoVVZGQkRiMjlyYVdWQlkyTmxjSFJRYjJ4cFkza0FYMWRMVTJWMFNGUlVVRU52
YjJ0cFpYTkdiM0pWClVrd0FYMWRMVTJWMFNGUlVVRkJwY0dWc2FXNXBibWROWVhocGJYVnRVSEpw
YjNKcGRIa0FYMWRMVTJWMFNGUlVVRkJwY0dWc2FXNXAKYm1kTmFXNXBiWFZ0Um1GemRFeGhibVZR
Y21sdmNtbDBlUUJmVjB0VFpYUklWRlJRVUdsd1pXeHBibWx1WjFCeWFXOXlhWFI1QUY5WApTMU5s
ZEUxbGRHRmtZWFJoVlZKTUFGOVhTMU5sZEU1VFZWSk1RMjl1Ym1WamRHbHZia1JsWm1WeWMwTmhi
R3hpWVdOcmN3QmZWMHRUClpYUk9VMVZTVEZKbGNYVmxjM1JUYUc5MWJHUkRiMjUwWlc1MFUyNXBa
bVlBWDFkTFUyVjBUbE5YYVc1a2IzZFRhRzkxYkdSUWIzTjAKUlhabGJuUk9iM1JwWm1sallYUnBi
MjV6QUY5WFMxTmxkRkJoZEhSbGNtNVFhR0Z6WlVsdVZYTmxjbE53WVdObEFGOVhTMU5sZEZKbApj
WFZsYzNSVGRHOXlZV2RsVTJWemMybHZiZ0JmVjB0VFpYUlZjRVp2Ym5SRFlXTm9aUUJmVjB0VFpY
UldhWE5wWW14bFFYQndiR2xqCllYUnBiMjVPWVcxbEFGOVhTMU5vYjNkTFpYbEJibVJOWVdsdUFG
OVhTMU5vYjNkWGIzSmtSR1ZtYVc1cGRHbHZibGRwYm1SdmR3QmYKVjB0VGFXZHVZV3hEUmxKbFlX
UlRkSEpsWVcxRmJtUUFYMWRMVTJsbmJtRnNRMFpTWldGa1UzUnlaV0Z0UlhKeWIzSUFYMWRMVTJs
bgpibUZzUTBaU1pXRmtVM1J5WldGdFNHRnpRbmwwWlhNQVgxZExVMjltZEhkaGNtVkRRVkpsYm1S
bGNtVnlRM0psWVhSbEFGOVhTMU52ClpuUjNZWEpsUTBGU1pXNWtaWEpsY2tSbGMzUnliM2tBWDFk
TFUyOW1kSGRoY21WRFFWSmxibVJsY21WeVVtVnVaR1Z5QUY5WFMxTncKWldWamFGTjViblJvWlhO
cGMwZGxkRVJsWm1GMWJIUldiMmxqWlVsa1pXNTBhV1pwWlhKR2IzSk1iMk5oYkdVQVgxZExVM0Js
WldObwpVM2x1ZEdobGMybHpSMlYwVm05cFkyVkpaR1Z1ZEdsbWFXVnljd0JmVjB0VGVXNWpVM1Z5
Wm1GalpWUnZWbWxsZHdCZlYwdFVhR1Z0ClpVUnlZWGRVY21GamF3QmZWMHRWYm5KbFoybHpkR1Z5
VDJOamJIVnphVzl1VG05MGFXWnBZMkYwYVc5dVNHRnVaR3hsY2dCZlYwdFYKYm5KbFoybHpkR1Z5
Vlc1cGNYVmxTV1JHYjNKRmJHVnRaVzUwQUY5WFMxZHBibVJ2ZDBKdmRXNWpaVUZ1YVcxaGRHbHZi
a052Ym5SbAplSFJEY21WaGRHVUFYMWRMVjJsdVpHOTNRbTkxYm1ObFFXNXBiV0YwYVc5dVEyOXVk
R1Y0ZEVSbGMzUnliM2tBWDFkTFYybHVaRzkzClFtOTFibU5sUVc1cGJXRjBhVzl1VTJWMFFXNXBi
V0YwYVc5dVVISnZaM0psYzNNQVgxZExWMmx1Wkc5M1UyVjBRV3h3YUdFQVgxZEwKVjJsdVpHOTNV
MlYwUTJ4cGNGSmxZM1FBWDFkTFYybHVaRzkzVTJWMFUyTmhiR1ZrUm5KaGJXVUFYMWRMVjJsdVpH
OTNWMmxzYkU5eQpaR1Z5VDJabVUyTnlaV1Z1VG05MGFXWnBZMkYwYVc5dUFGOVhTMWRwYm1SdmQx
ZHBiR3hQY21SbGNrOXVVMk55WldWdVRtOTBhV1pwClkyRjBhVzl1QUY5ZlEwWklWRlJRVFdWemMy
Rm5aVk5sZEZKbGMzQnZibk5sVUhKdmVIbFZVa3dBWDE5RFJraHZjM1JKYzBSdmJXRnAKYmxSdmNF
eGxkbVZzQUY5ZlEwWlZVa3hEWVdOb1pVTnZjSGxCYkd4SWIzTjBUbUZ0WlhOSmJsQmxjbk5wYzNS
bGJuUlRkRzl5WlVadgpjbEJoY25ScGRHbHZiZ0JmWDBOR1ZWSk1RMkZqYUdWRGIzQjVRV3hzVUdG
eWRHbDBhVzl1VG1GdFpYTUFYMTlEUmxWU1RFTmhZMmhsClJHVnNaWFJsU0c5emRFNWhiV1Z6U1c1
UVpYSnphWE4wWlc1MFUzUnZjbVZHYjNKUVlYSjBhWFJwYjI0QVgyTmhjSE5NYjJOclNXNWsKYVdO
aGRHOXlVMmw2WlFCc1gyOWlhbU5mYlhOblUyVnVaRjltYVhoMWNGOWhaR1JQWW1wbFkzUmZBR3hm
YjJKcVkxOXRjMmRUWlc1awpYMlpwZUhWd1gyRnNiRzlqQUd4ZmIySnFZMTl0YzJkVFpXNWtYMlpw
ZUhWd1gyRjFkRzl5Wld4bFlYTmxBR3hmYjJKcVkxOXRjMmRUClpXNWtYMlpwZUhWd1gyTnNZWE56
QUd4ZmIySnFZMTl0YzJkVFpXNWtYMlpwZUhWd1gyTnZkVzUwQUd4ZmIySnFZMTl0YzJkVFpXNWsK
WDJacGVIVndYMk52ZFc1MFFubEZiblZ0WlhKaGRHbHVaMWRwZEdoVGRHRjBaVjl2WW1wbFkzUnpY
Mk52ZFc1MFh3QnNYMjlpYW1OZgpiWE5uVTJWdVpGOW1hWGgxY0Y5cGMwWnNhWEJ3WldRQWJGOXZZ
bXBqWDIxeloxTmxibVJmWm1sNGRYQmZhWE5MYVc1a1QyWkRiR0Z6CmMxOEFiRjl2WW1walgyMXpa
MU5sYm1SZlptbDRkWEJmYkdWdVozUm9BR3hmYjJKcVkxOXRjMmRUWlc1a1gyWnBlSFZ3WDI5aWFt
VmoKZEVGMFNXNWtaWGhmQUd4ZmIySnFZMTl0YzJkVFpXNWtYMlpwZUhWd1gzSmxiR1ZoYzJVQWJG
OXZZbXBqWDIxeloxTmxibVJmWm1sNApkWEJmY21WemNHOXVaSE5VYjFObGJHVmpkRzl5WHdCc1gy
OWlhbU5mYlhOblUyVnVaRjltYVhoMWNGOXlaWFJoYVc0QVgwNWxkSE5qCllYQmxRMlZ5ZEZObGNY
VmxibU5sVkdWdGNHeGhkR1VBWDFCMVlteHBZMHRsZVVGdVpFTm9ZV3hzWlc1blpWUmxiWEJzWVhS
bEFGOVQKYVdkdVpXUlFkV0pzYVdOTFpYbEJibVJEYUdGc2JHVnVaMlZVWlcxd2JHRjBaUUJmVjB0
QlpHUkRaWEowYVdacFkyRjBaVlJ2UzJWNQpZMmhoYVc1R2NtOXRSR0YwWVFCZlYwdEJaR1JEWlhK
MGFXWnBZMkYwWlhOVWIwdGxlV05vWVdsdVJuSnZiVVJoZEdFQVgxZExVMmxuCmJtVmtVSFZpYkds
alMyVjVRVzVrUTJoaGJHeGxibWRsVTNSeWFXNW5BRjluYm5KT2RXeHNRV3huVUdGeVlXMXpBRjlu
Ym5KVGFXZHUKQUY5dWMzTkJjbkpoZVZOcGVtVUFYMWRMUTNKbFlYUmxUV1ZrYVdGVlNVSmhZMnRu
Y205MWJtUldhV1YzQUY5WFMwTnlaV0YwWlUxbApaR2xoVlVsRGIyNTBjbTlzQUY5WFMwMWxaR2xo
UTI5dWRISnZiR3hsY2xSb1pXMWxRWFpoYVd4aFlteGxBRjlYUzFGVVEyeGxZWEpOClpXUnBZVVJ2
ZDI1c2IyRmtRMkZqYUdVQVgxZExVVlJEYkdWaGNrMWxaR2xoUkc5M2JteHZZV1JEWVdOb1pVWnZj
bE5wZEdVQVgxZEwKVVZSSFpYUlRhWFJsYzBsdVRXVmthV0ZFYjNkdWJHOWhaRU5oWTJobEFGOVhT
MUZVVFc5MmFXVklZWE5EYkc5elpXUkRZWEIwYVc5dQpjd0JmVjB0UlZFMXZkbWxsVFdGNFZHbHRa
VXh2WVdSbFpFTm9ZVzVuWlU1dmRHbG1hV05oZEdsdmJnQmZWMHRSVkUxdmRtbGxVMlZzClpXTjBV
SEpsWm1WeWNtVmtRV3gwWlhKdVlYUmxWSEpoWTJ0R2IzSk5aV1JwWVZSNWNHVUFYMWRMVVZSTmIz
WnBaVk5sYkdWamRGQnkKWldabGNuSmxaRUZzZEdWeWJtRjBaWE1BWDFkTFVWUk5iM1pwWlZObGRG
Tm9iM2REYkc5elpXUkRZWEIwYVc5dWN3QnNYMjlpYW1OZgpiWE5uVTJWdVpGOW1hWGgxY0Y5aGJH
eHZZd0JzWDI5aWFtTmZiWE5uVTJWdVpGOW1hWGgxY0Y5aGRYUnZjbVZzWldGelpRQnNYMjlpCmFt
TmZiWE5uVTJWdVpGOW1hWGgxY0Y5amIzVnVkQUJzWDI5aWFtTmZiWE5uVTJWdVpGOW1hWGgxY0Y5
dlltcGxZM1JCZEVsdVpHVjQKWHdCc1gyOWlhbU5mYlhOblUyVnVaRjltYVhoMWNGOXZZbXBsWTNS
R2IzSkxaWGxmQUd4ZmIySnFZMTl0YzJkVFpXNWtYMlpwZUhWdwpYM0psYkdWaGMyVUFiRjl2WW1w
algyMXpaMU5sYm1SZlptbDRkWEJmY21WemNHOXVaSE5VYjFObGJHVmpkRzl5WHdCZlYwdEpjMUJz
CmRXZHBibFZ3WkdGMFpVRjJZV2xzWVdKc1pRQmZWMHRUYUc5MWJHUkNiRzlqYTFCc2RXZHBiZ0Jm
WDFwT01UVlFiSFZuYVc1Q2JHRmoKYTJ4cGMzUXhOSE53YkdsMFQxTldaWEp6YVc5dVJWQTRUbE5U
ZEhKcGJtY0FYMTlhVGpFMVVHeDFaMmx1UW14aFkydHNhWE4wTVRkegphRzkxYkdSQ2JHOWphMUJz
ZFdkcGJrVlFPRTVUVTNSeWFXNW5VekZmQUY5ZldrNHhOVkJzZFdkcGJrSnNZV05yYkdsemRESXph
WE5RCmJIVm5hVzVWY0dSaGRHVkJkbUZwYkdGaWJHVkZVRGhPVTFOMGNtbHVad0JmWDFwT01UVlFi
SFZuYVc1Q2JHRmphMnhwYzNRMlkzSmwKWVhSbFJWQTRUbE5UZEhKcGJtZFFNVEZ2WW1walgyOWlh
bVZqZEFCZlgxcE9NVFZRYkhWbmFXNUNiR0ZqYTJ4cGMzUkRNVVZRTVRKTwpVMFJwWTNScGIyNWhj
bmxUTVY5UU5VNVRVMlYwQUY5ZldrNHhOVkJzZFdkcGJrSnNZV05yYkdsemRFTXlSVkF4TWs1VFJH
bGpkR2x2CmJtRnllVk14WDFBMVRsTlRaWFFBWDE5YVRqRTFVR3gxWjJsdVFteGhZMnRzYVhOMFJE
RkZkZ0JmWDFwT01UVlFiSFZuYVc1Q2JHRmoKYTJ4cGMzUkVNa1YyQUY5ZldrNUxNVFZRYkhWbmFX
NUNiR0ZqYTJ4cGMzUXhNWE5vYjNWc1pFSnNiMk5yUlZBNFRsTlRkSEpwYm1kVApNVjhBWDE5YVRr
c3hOVkJzZFdkcGJrSnNZV05yYkdsemRERTNhWE5WY0dSaGRHVkJkbUZwYkdGaWJHVkZVRGhPVTFO
MGNtbHVad0JzClgyOWlhbU5mYlhOblUyVnVaRjltYVhoMWNGOWhaR1JQWW1wbFkzUmZBR3hmYjJK
cVkxOXRjMmRUWlc1a1gyWnBlSFZ3WDJOc1lYTnoKQUd4ZmIySnFZMTl0YzJkVFpXNWtYMlpwZUhW
d1gyTnZkVzUwQUd4ZmIySnFZMTl0YzJkVFpXNWtYMlpwZUhWd1gyTnZkVzUwUW5sRgpiblZ0WlhK
aGRHbHVaMWRwZEdoVGRHRjBaVjl2WW1wbFkzUnpYMk52ZFc1MFh3QnNYMjlpYW1OZmJYTm5VMlZ1
WkY5bWFYaDFjRjlwCmMwVnhkV0ZzVkc5VGRISnBibWRmQUd4ZmIySnFZMTl0YzJkVFpXNWtYMlpw
ZUhWd1gybHpTMmx1WkU5bVEyeGhjM05mQUd4ZmIySnEKWTE5dGMyZFRaVzVrWDJacGVIVndYMjlp
YW1WamRFWnZja3RsZVY4QWJGOXZZbXBqWDIxeloxTmxibVJmWm1sNGRYQmZjbVZzWldGegpaUUJm
VjB0VFpYUkRjbUZ6YUZKbGNHOXlkRUZ3Y0d4cFkyRjBhVzl1VTNCbFkybG1hV05KYm1admNtMWhk
R2x2YmdCZlowTlNRVzV1CmIzUmhkR2x2Ym5NQUFBQUFJekV2TWpBZ0lDQWdJQ0FnSUNBZ0lERXpO
ekUzTnpZd016UWdJRFV3TVNBZ0lESXdJQ0FnSURFd01EWTAKTkNBZ01UQXlOVFF3SUNBZ0lHQUtU
R1ZuWVdONVRXVmthV0ZWU1M1dkFBQUFBQURQK3UzK0J3QUFBUU1BQUFBQkFBQUFBd0FBQU9BSApB
QUFBSUFBQUFBQUFBQmtBQUFCNEJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXFE
OEJBQUFBQUFBQUNBQUFBQUFBCkFNZytBUUFBQUFBQUJ3QUFBQWNBQUFBWEFBQUFBQUFBQUY5ZmRH
VjRkQUFBQUFBQUFBQUFBQUJmWDFSRldGUUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFCRmdBQUFB
QUFBQUFJQUFBRUFBQUF5RVlCQUZNQkFBQUFCQUNBQUFBQUFBQUFBQUFBQUFBQVgxOXNhWFJsY21G
cwpPQUFBQUFBQUFGOWZWRVZZVkFBQUFBQUFBQUFBQUFBSUZnQUFBQUFBQUNnQUFBQUFBQUFBQ0I0
QUFBTUFBQUFBQUFBQUFBQUFBQVFBCkFBQUFBQUFBQUFBQUFBQUFBQUJmWDJOdmJuTjBBQUFBQUFB
QUFBQUFYMTlVUlZoVUFBQUFBQUFBQUFBQUFEQVdBQUFBQUFBQUY1TUEKQUFBQUFBQXdIZ0FBQkFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUY5ZmRHVjRkR052WVd4ZmJuUUFBQUJm
WDFSRgpXRlFBQUFBQUFBQUFBQUFBVUtrQUFBQUFBQUFEQWdBQUFBQUFBRkN4QUFBRUFBQUFZRkVC
QUJZQUFBQUxCQUNBQUFBQUFBQUFBQUFBCkFBQUFYMTlpYzNNQUFBQUFBQUFBQUFBQUFGOWZSRUZV
UVFBQUFBQUFBQUFBQUFESVBnRUFBQUFBQU9BQUFBQUFBQUFBQUFBQUFBTUEKQUFBQUFBQUFBQUFB
QUFFQUFBQUFBQUFBQUFBQUFBQUFBQUJmWDJOdmJuTjBBQUFBQUFBQUFBQUFYMTlFUVZSQkFBQUFB
QUFBQUFBQQpBR0NyQUFBQUFBQUE4QUFBQUFBQUFBQmdzd0FBQkFBQUFCQlNBUUFXQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUY5ZlpHRjBZUUFBCkFBQUFBQUFBQUFCZlgwUkJWRUVBQUFBQUFBQUFB
QUFBVUt3QUFBQUFBQUFBQUFBQUFBQUFBRkMwQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFBQUFYMTlrWldKMVoxOXBibVp2QUFBQUFGOWZSRmRCVWtZQUFBQUFBQUFBQUFCUXJB
QUFBQUFBQU5vcgpBQUFBQUFBQVVMUUFBQUFBQUFEQVVnRUE1Z0FBQUFBQUFBSUFBQUFBQUFBQUFB
QUFBQUJmWDJSbFluVm5YMkZpWW5KbGRnQUFYMTlFClYwRlNSZ0FBQUFBQUFBQUFBQ3JZQUFBQUFB
QUF6Z1FBQUFBQUFBQXE0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUEKQUFBQUFG
OWZaR1ZpZFdkZllYSmhibWRsY3dCZlgwUlhRVkpHQUFBQUFBQUFBQUFBK053QUFBQUFBQUFBQUFB
QUFBQUFBUGprQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFYMTlrWldK
MVoxOXRZV05wYm1adkFGOWZSRmRCVWtZQUFBQUFBQUFBCkFBRDQzQUFBQUFBQUFBQUFBQUFBQUFB
QStPUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUJmWDJSbFluVm4KWDJ4
cGJtVUFBQUFBWDE5RVYwRlNSZ0FBQUFBQUFBQUFBUGpjQUFBQUFBQUF0UVVBQUFBQUFBRDQ1QUFB
QUFBQUFQQlpBUUFDQUFBQQpBQUFBQWdBQUFBQUFBQUFBQUFBQUFGOWZaR1ZpZFdkZmJHOWpBQUFB
QUFCZlgwUlhRVkpHQUFBQUFBQUFBQUFBcmVJQUFBQUFBQURBCkVnQUFBQUFBQUszcUFBQUFBQUFB
QUZvQkFEZ0JBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFYMTlrWldKMVoxOXdkV0owZVhCbGMxOWYK
UkZkQlVrWUFBQUFBQUFBQUFBQnQ5UUFBQUFBQUFEUUJBQUFBQUFBQWJmMEFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBSUFBQUFBQUFBQQpBQUFBQUFCZlgyUmxZblZuWDNOMGNnQUFBQUFBWDE5RVYwRlNS
Z0FBQUFBQUFBQUFBS0gyQUFBQUFBQUFYaVVBQUFBQUFBQ2gvZ0FBCkFBQUFBQUFBQUFBQUFBQUFB
QUFBQWdBQUFBQUFBQUFBQUFBQUFGOWZaR1ZpZFdkZmNtRnVaMlZ6QUFCZlgwUlhRVkpHQUFBQUFB
QUEKQUFBQS94c0JBQUFBQUFBUUFnQUFBQUFBQVA4akFRQUFBQUFBd0dNQkFDd0FBQUFBQUFBQ0FB
QUFBQUFBQUFBQUFBQUFYMTlrWldKMQpaMTlwYm14cGJtVmtBRjlmUkZkQlVrWUFBQUFBQUFBQUFB
QVBIZ0VBQUFBQUFKOEVBQUFBQUFBQUR5WUJBQUFBQUFBZ1pRRUFSd0FBCkFBQUFBQUlBQUFBQUFB
QUFBQUFBQUFCZlgyRndjR3hsWDI1aGJXVnpBQUFBWDE5RVYwRlNSZ0FBQUFBQUFBQUFBSzRpQVFB
QUFBQUEKNUJBQUFBQUFBQUN1S2dFQUFBQUFBRmhuQVFBb0FRQUFBQUFBQWdBQUFBQUFBQUFBQUFB
QUFGOWZZWEJ3YkdWZmIySnFZd0FBQUFCZgpYMFJYUVZKR0FBQUFBQUFBQUFBQWtqTUJBQUFBQUFB
a0FBQUFBQUFBQUpJN0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBCkFBQUFBQUFBWDE5
aGNIQnNaVjl1WVcxbGMzQmhZMTlmUkZkQlVrWUFBQUFBQUFBQUFBQzJNd0VBQUFBQUFFUUFBQUFB
QUFBQXRqc0IKQUFBQUFBQ1ljQUVBQWdBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFCZlgyRndjR3hs
WDNSNWNHVnpBQUFBWDE5RVYwRlNSZ0FBQUFBQQpBQUFBQVBvekFRQUFBQUFBTWdRQUFBQUFBQUQ2
T3dFQUFBQUFBS2h3QVFCR0FBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFGOWZZMjl0CmNHRmpkRjkx
Ym5kcGJtUmZYMHhFQUFBQUFBQUFBQUFBQUFBQU1EZ0JBQUFBQUFEZ0FnQUFBQUFBQURCQUFRQURB
QUFBMkhJQkFCY0EKQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBWDE5bGFGOW1jbUZ0WlFBQUFBQUFB
RjlmVkVWWVZBQUFBQUFBQUFBQUFBQVFPd0VBQUFBQQpBTGdEQUFBQUFBQUFFRU1CQUFNQUFBQUFB
QUFBQUFBQUFBc0FBR2dBQUFBQUFBQUFBQUFBQUFBQ0FBQUFHQUFBQUpCekFRQ0dBQUFBCjhIc0JB
SWdVQUFBTEFBQUFVQUFBQUFBQUFBQTdBQUFBT3dBQUFDc0FBQUJtQUFBQUlBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFG
VklpZVZCVmxOSWcreFFTSW56U1luK1NZc0dTSXROS0VpSgpUQ1FZU0l0TklFaUpUQ1FRU0l0TkVF
aUxWUmhJaVZRa0NFaUpEQ1QvVUNqeUR4QkZFUElQRUUwWVNJbmY2QUFBQUFEeUR4QUZ0QlVBCkFQ
SVBFQTIwRlFBQVNJbmY2QUFBQUFCSWkwVW9TSWxFSkJoSWkwVWdTSWxFSkJCSWkwVVFTSXROR0Vp
SlRDUUlTSWtFSk9nQUFBQUEKWmc4b3lHWVBWdzJZRlFBQVNJbmZaZzlYd09nQUFBQUFTSXRGS0Vp
SlJDUVlTSXRGSUVpSlJDUVFTSXRGRUVpTFRSaElpVXdrQ0VpSgpCQ1RvQUFBQUFQSVBFVVhJU0l0
RktFaUpSQ1FZU0l0RklFaUpSQ1FRU0l0RkVFaUxUUmhJaVV3a0NFaUpCQ1RvQUFBQUFHWVBWOGxt
CkR5bE4wUElQRUUzSThnOFJUZUR5RHhGRjZFeUo5K2dBQUFBQVNJdE42RWlKVENRWVNJdE40RWlK
VENRUVNJdE4wRWlMVmRoSWlWUWsKQ0VpSkRDUklpZDlJaWNib0FBQUFBRW1MQmt5SjkwaUozdjlR
TUVpRHhGQmJRVjVkd3c4ZlFBQlZTSW5sUVZaVGkwOElNY0JJZy9rTQpENGRjQ0FBQVNJMFZXd2dB
QUVoakRJcElBZEgvNGZaSERBSVBoRjRFQUFCSWl3VUFBQUFBU0lYQUQ0VXlDQUFBU0lzRkFBQUFB
RWlMCk9FaUxCUUFBQUFCSWl3aElqVFVBQUFBQXVvd0RBQURvQUFBQUFFbUp4a3lKOStnQUFBQUFT
SW5EU0luZk1mWXgwakhKNkFBQUFBQkkKaVFVQUFBQUFTSVhiZEFoSWlkL29BQUFBQUUyRjluUUlU
SW4zNkFBQUFBQklpd1VBQUFBQTZjUUhBQUQyUnd3Q0Q0UlVCQUFBU0lzRgpBQUFBQUVpRndBK0Zx
Z2NBQUVpTEJRQUFBQUJJaXpoSWl3VUFBQUFBU0lzSVNJMDFBQUFBQUxxNkF3QUE2QUFBQUFCSmlj
Wk1pZmZvCkFBQUFBRWlKdzBpSjN6SDJNZEl4eWVnQUFBQUFTSWtGQUFBQUFFaUYyM1FJU0luZjZB
QUFBQUJOaGZaMENFeUo5K2dBQUFBQVNJc0YKQUFBQUFPazhCd0FBOWtjTUFnK0VTZ1FBQUVpTEJR
QUFBQUJJaGNBUGhTSUhBQUJJaXdVQUFBQUFTSXM0U0lzRkFBQUFBRWlMQ0VpTgpOUUFBQUFDNlpB
TUFBT2dBQUFBQVNZbkdUSW4zNkFBQUFBQklpY05JaWQ4eDlqSFNNY25vQUFBQUFFaUpCUUFBQUFC
SWhkdDBDRWlKCjMrZ0FBQUFBVFlYMmRBaE1pZmZvQUFBQUFFaUxCUUFBQUFEcHRBWUFBUFpIREFJ
UGhFQUVBQUJJaXdVQUFBQUFTSVhBRDRXYUJnQUEKU0lzRkFBQUFBRWlMT0VpTEJRQUFBQUJJaXdo
SWpUVUFBQUFBdWs4REFBRG9BQUFBQUVtSnhreUo5K2dBQUFBQVNJbkRTSW5mTWZZeAowakhKNkFB
QUFBQklpUVVBQUFBQVNJWGJkQWhJaWQvb0FBQUFBRTJGOW5RSVRJbjM2QUFBQUFCSWl3VUFBQUFB
NlN3R0FBRDJSd3dDCkQ0UTJCQUFBU0lzRkFBQUFBRWlGd0ErRkVnWUFBRWlMQlFBQUFBQklpemhJ
aXdVQUFBQUFTSXNJU0kwMUFBQUFBTHBSQXdBQTZBQUEKQUFCSmljWk1pZmZvQUFBQUFFaUp3MGlK
M3pIMk1kSXh5ZWdBQUFBQVNJa0ZBQUFBQUVpRjIzUUlTSW5mNkFBQUFBQk5oZlowQ0V5Sgo5K2dB
QUFBQVNJc0ZBQUFBQU9ta0JRQUE5a2NNQWcrRUxBUUFBRWlMQlFBQUFBQkloY0FQaFlvRkFBQklp
d1VBQUFBQVNJczRTSXNGCkFBQUFBRWlMQ0VpTk5RQUFBQUM2ZUFRQUFPZ0FBQUFBU1luR1RJbjM2
QUFBQUFCSWljTklpZDh4OWpIU01jbm9BQUFBQUVpSkJRQUEKQUFCSWhkdDBDRWlKMytnQUFBQUFU
WVgyZEFoTWlmZm9BQUFBQUVpTEJRQUFBQURwSEFVQUFQWkhEQUlQaFNVQkFBRHJDdlpIREFJUApo
QmtCQUFCYlFWNWQ2UUFBQUFEMlJ3d0NENFFEQkFBQVNJc0ZBQUFBQUVpRndBK0Y0d1FBQUVpTEJR
QUFBQUJJaXpoSWl3VUFBQUFBClNJc0lTSTAxQUFBQUFMcDFBd0FBNkFBQUFBQkppY1pNaWZmb0FB
QUFBRWlKdzBpSjN6SDJNZEl4eWVnQUFBQUFTSWtGQUFBQUFFaUYKMjNRSVNJbmY2QUFBQUFCTmhm
WjBDRXlKOStnQUFBQUFTSXNGQUFBQUFPbDFCQUFBOWtjTUFnK0U5Z01BQUVpTEJRQUFBQUJJaGNB
UApoVnNFQUFCSWl3VUFBQUFBU0lzNFNJc0ZBQUFBQUVpTENFaU5OUUFBQUFDNkpRTUFBT2dBQUFB
QVNZbkdUSW4zNkFBQUFBQklpY05JCmlkOHg5akhTTWNub0FBQUFBRWlKQlFBQUFBQkloZHQwQ0Vp
SjMrZ0FBQUFBVFlYMmRBaE1pZmZvQUFBQUFFaUxCUUFBQUFEcDdRTUEKQUZ0QlhsM3BBQUFBQUVp
TEJRQUFBQUJJaGNBUGhkUURBQUJJaXdVQUFBQUFTSXM0U0lzRkFBQUFBRWlMQ0VpTk5RQUFBQUM2
WlFNQQpBT2dBQUFBQVNZbkdUSW4zNkFBQUFBQklpY05JaWQ4eDlqSFNNY25vQUFBQUFFaUpCUUFB
QUFCSWhkdDBDRWlKMytnQUFBQUFUWVgyCmRBaE1pZmZvQUFBQUFFaUxCUUFBQUFEcFpnTUFBRWlM
QlFBQUFBQkloY0FQaFZZREFBQklpd1VBQUFBQVNJczRTSXNGQUFBQUFFaUwKQ0VpTk5RQUFBQUM2
ZVFNQUFPZ0FBQUFBU1luR1RJbjM2QUFBQUFCSWljTklpZDh4OWpIU01jbm9BQUFBQUVpSkJRQUFB
QUJJaGR0MApDRWlKMytnQUFBQUFUWVgyZEFoTWlmZm9BQUFBQUVpTEJRQUFBQURwNkFJQUFFaUxC
UUFBQUFCSWhjQVBoZGdDQUFCSWl3VUFBQUFBClNJczRTSXNGQUFBQUFFaUxDRWlOTlFBQUFBQzZQ
UU1BQU9nQUFBQUFTWW5HVEluMzZBQUFBQUJJaWNOSWlkOHg5akhTTWNub0FBQUEKQUVpSkJRQUFB
QUJJaGR0MENFaUozK2dBQUFBQVRZWDJkQWhNaWZmb0FBQUFBRWlMQlFBQUFBRHBhZ0lBQUVpTEJR
QUFBQUJJaGNBUApoVm9DQUFCSWl3VUFBQUFBU0lzNFNJc0ZBQUFBQUVpTENFaU5OUUFBQUFDNk5R
TUFBT2dBQUFBQVNZbkdUSW4zNkFBQUFBQklpY05JCmlkOHg5akhTTWNub0FBQUFBRWlKQlFBQUFB
QkloZHQwQ0VpSjMrZ0FBQUFBVFlYMmRBaE1pZmZvQUFBQUFFaUxCUUFBQUFEcDdBRUEKQUVpTEJR
QUFBQUJJaGNBUGhkd0JBQUJJaXdVQUFBQUFTSXM0U0lzRkFBQUFBRWlMQ0VpTk5RQUFBQUM2TFFN
QUFPZ0FBQUFBU1luRwpUSW4zNkFBQUFBQklpY05JaWQ4eDlqSFNNY25vQUFBQUFFaUpCUUFBQUFC
SWhkdDBDRWlKMytnQUFBQUFUWVgyZEFoTWlmZm9BQUFBCkFFaUxCUUFBQUFEcGJnRUFBRWlMQlFB
QUFBQkloY0FQaFY0QkFBQklpd1VBQUFBQVNJczRTSXNGQUFBQUFFaUxDRWlOTlFBQUFBQzYKVHdR
QUFPZ0FBQUFBU1luR1RJbjM2QUFBQUFCSWljTklpZDh4OWpIU01jbm9BQUFBQUVpSkJRQUFBQUJJ
aGR0MENFaUozK2dBQUFBQQpUWVgyZEFoTWlmZm9BQUFBQUVpTEJRQUFBQURwOEFBQUFFaUxCUUFB
QUFCSWhjQVBoZUFBQUFCSWl3VUFBQUFBU0lzNFNJc0ZBQUFBCkFFaUxDRWlOTlFBQUFBQzZSQU1B
QU9nQUFBQUFTWW5HVEluMzZBQUFBQUJJaWNOSWlkOHg5akhTTWNub0FBQUFBRWlKQlFBQUFBQkkK
aGR0MENFaUozK2dBQUFBQVRZWDJkQWhNaWZmb0FBQUFBRWlMQlFBQUFBRHJkVWlMQlFBQUFBQklo
Y0IxYVVpTEJRQUFBQUJJaXpoSQppd1VBQUFBQVNJc0lTSTAxQUFBQUFMb05Bd0FBNkFBQUFBQkpp
Y1pNaWZmb0FBQUFBRWlKdzBpSjN6SDJNZEl4eWVnQUFBQUFTSWtGCkFBQUFBRWlGMjNRSVNJbmY2
QUFBQUFCTmhmWjBDRXlKOStnQUFBQUFTSXNGQUFBQUFGdEJYbDNEa0s3My8vODIrUC8vdnZqLy8w
YjUKLy8vTytmLy8rdi8vLzFiNi8vLzYvLy8vK3YvLy85NzYvLy9xK3YvLy9mci8vNFg3Ly84UEgw
QUFWVWlKNVZOSWcrd1k2QUFBQUFCSQppY05JaGR0MFRVaUozK2dBQUFBQVprZ1Bic0JtRDJJRkJR
d0FBR1lQWEFVTkRBQUFaZzk4d0dZUEtVWGdTSW5mNkFBQUFBQVBLRVhnClprZ1Bic2htRDJJTjJ3
c0FBR1lQWEEzakN3QUFaZzk4eWVzUVNJc0ZBQUFBQVBJUEVBRHlEeEJJQ0VpRHhCaGJYY05tRHg5
RUFBQlYKU0lubFFWWlRTSXNGQUFBQUFFaUZ3SFZwU0lzRkFBQUFBRWlMT0VpTEJRQUFBQUJJaXdo
SWpUVUFBQUFBdXNjREFBRG9BQUFBQUVtSgp4a3lKOStnQUFBQUFTSW5EU0luZk1mWXgwakhKNkFB
QUFBQklpUVVBQUFBQVNJWGJkQWhJaWQvb0FBQUFBRTJGOW5RSVRJbjM2QUFBCkFBQklpd1VBQUFB
QVcwRmVYY05tWm1abVptWXVEeCtFQUFBQUFBQlZTSW5sUVZaVFNJc0ZBQUFBQUVpRndIVnBTSXNG
QUFBQUFFaUwKT0VpTEJRQUFBQUJJaXdoSWpUVUFBQUFBdXBFREFBRG9BQUFBQUVtSnhreUo5K2dB
QUFBQVNJbkRTSW5mTWZZeDBqSEo2QUFBQUFCSQppUVVBQUFBQVNJWGJkQWhJaWQvb0FBQUFBRTJG
OW5RSVRJbjM2QUFBQUFCSWl3VUFBQUFBVzBGZVhjTm1abVptWm1ZdUR4K0VBQUFBCkFBQlZTSW5s
UVZkQlZrRlZRVlJUU0lIc2FBRUFBRW1KOTBpSnZiaisvLy95RHhCSElHWVBWOGxNaldVUVpnOHV3
V1lQVjhueUR4R04Kd1A3Ly8zVUdENHN5QVFBQVNJdUZ1UDcvLy9JUEVFZ1k4ZzlleVBJUEVZM0Ev
di8vWmc5WHdHWVBMc2dQaGd3QkFBQk1peTBBQUFBQQpUWVh0ZFdsSWl3VUFBQUFBU0lzNFNJc0ZB
QUFBQUVpTENFaU5OUUFBQUFDNkJnNEFBT2dBQUFBQVNZbkdUSW4zNkFBQUFBQklpY05JCmlkOHg5
akhTTWNub0FBQUFBRWlKQlFBQUFBQkloZHQwQ0VpSjMrZ0FBQUFBVFlYMmRBaE1pZmZvQUFBQUFF
eUxMUUFBQUFEeUR4Q0YKd1A3Ly8yWVBMZ1Y2Q1FBQUQ0WDJBQUFBRDRyd0FBQUFUSXMxQUFBQUFF
MkY5ZytGNkFBQUFFaUxCUUFBQUFCSWl6aElpd1VBQUFBQQpTSXNJU0kwMUFBQUFBTHIvRFFBQTZB
QUFBQUJKaWNaTWlmZm9BQUFBQUVpSncwaUozekgyTWRJeHllZ0FBQUFBU0lrRkFBQUFBRWlGCjIz
UUlTSW5mNkFBQUFBQk5oZlowQ0V5SjkrZ0FBQUFBVElzMUFBQUFBT3Q5VElzdEFBQUFBRTJGN1hW
cFNJc0ZBQUFBQUVpTE9FaUwKQlFBQUFBQklpd2hJalRVQUFBQUF1Z0VPQUFEb0FBQUFBRW1KeGt5
SjkrZ0FBQUFBU0luRFNJbmZNZll4MGpISjZBQUFBQUJJaVFVQQpBQUFBU0lYYmRBaElpZC9vQUFB
QUFFMkY5blFJVEluMzZBQUFBQUJNaXkwQUFBQUE2QUFBQUFCSmljWklpNzI0L3YvL1NJc0hTWXRN
CkpCaElpVXdrR0VtTFRDUVFTSWxNSkJCSml3d2tTWXRVSkFoSWlWUWtDRWlKRENSTWlmNy9VQ2hJ
algyb1RJbis2QUFBQUFEeUR4QkYKcUdZUExnVW5DQUFBZFQxNk8yWVBWOER5RHhCTnNHWVBMc2gx
TEhvcThnOFFUYmhtRHk3SWRSOTZIZklQRUVYQVpnOHVCZmdIQUFCMQpBbnRHWmc4dUJmUUhBQUIx
QW5zNjhrRVBFRVFrRVBKQkR4Qk1KQmhNaWY5TWliMncvdi8vTWZib0FBQUFBRWlKaGFqKy8vOUlp
Y2ZvCkFBQUFBRW1KeDhhRnAvNy8vd0RyTHZKQkR4QUVKUEpCRHhCTUpBaE1pZi9vQUFBQUFFakho
YWorLy84QUFBQUF4b1duL3YvL0FVeUoKdmJEKy8vL3lEeEFGZUFjQUFQSVBFQTE0QndBQVRJbi82
QUFBQUFCSmkwUWtHRWlKUkNRWVNZdEVKQkJJaVVRa0VFbUxCQ1JKaTB3awpDRWlKVENRSVNJa0VK
T2dBQUFBQVpnOG95R1lQVncxNUJ3QUFUSW4vWmc5WHdPZ0FBQUFBU1l0RUpCaElpVVFrR0VtTFJD
UVFTSWxFCkpCQkppd1FrU1l0TUpBaElpVXdrQ0VpSkJDVG9BQUFBQVBJUEVZWFkvdi8vU1l0RUpC
aElpVVFrR0VtTFJDUVFTSWxFSkJCSml3UWsKU1l0TUpBaElpVXdrQ0VpSkJDVG9BQUFBQVBJUEVZ
V1kvdi8vVEludjZBQUFBQUJJaWNOTWllL29BQUFBQUdZUGJ5WDhCZ0FBWmc4bwpIUVFIQUFCbUQx
Zkpaa2dQYnNObUQyTEVaZzljdzJZUGZNRHlEMW1GMlA3Ly8yWklEMjdRWmc5aTFHWVBYTk5tRDN6
UzhnOWV3bVlQCktVMkE2QUFBQUFEeUR4R0YwUDcvLy9JUEVVV1E4ZzhRaGRqKy8vL3lEeEZGbUVp
TFJaaElpVVFrR0VpTFJaQklpVVFrRUVpTFJZQkkKaTAySVNJbE1KQWhJaVFRa1RJbi9USW51NkFB
QUFBQk1pZmZvQUFBQUFFaUp3MHlKOStnQUFBQUE4ZzhRaFpqKy8vL3lEMXlGMFA3LwovMlpJRDI3
TFpnOXZKVUFHQUFCbUQyTE1aZzhvSFVRR0FBQm1EMXpMWmc5OHlmSVBXWTNZL3YvL1prZ1BidEJt
RDJMVVpnOWMwMllQCmZOTHlEMTdLOGc5Y3dlZ0FBQUFBOGc4UmhjaisvLy95RHhDVjBQNy8vL0lQ
V05EeUR4R1ZZUC8vLy9JUEVJMlkvdi8vOGc5Y3lrakgKaFdqLy8vOEFBQUFBOGc4UmpYRC8vLy95
RHhDRjJQNy8vL0lQRVlWNC8vLy9TSXVGZVAvLy8waUpSQ1FZU0l1RmNQLy8vMGlKUkNRUQpTSXVG
WVAvLy8waUxqV2ovLy85SWlVd2tDRWlKQkNSTWlmOU1pZmJvQUFBQUFQSVBFSVhBL3YvLzhnOVpo
Y2orLy8vb0FBQUFBR1lQCkxnVWNCUUFBZFFZUGkza0JBQUJNaWYveUR4R0Z3UDcvLytnQUFBQUE4
ZzhRaGREKy8vL3lEeEdGUVAvLy8wakhoVWovLy84QUFBQUEKOGc4UWhjRCsvLy95RHhHRlVQLy8v
L0lQRUlYWS92Ly84ZzhSaFZqLy8vOUlpNFZZLy8vL1NJbEVKQmhJaTRWUS8vLy9TSWxFSkJCSQpp
NFZBLy8vL1NJdU5TUC8vLzBpSlRDUUlTSWtFSkV5Si8rZ0FBQUFBOGc4UWhkRCsvLy95RHhHRklQ
Ly8vMGpIaFNqLy8vOEFBQUFBCjhnOFFoY0QrLy8veUR4R0ZNUC8vLy9JUEVJWFkvdi8vOGc4UmhU
ai8vLzlJaXpVQUFBQUFTSVgyZFdsSWl3VUFBQUFBU0lzNFNJc0YKQUFBQUFFaUxDRWlOTlFBQUFB
QzZtZzBBQU9nQUFBQUFTWW5HVEluMzZBQUFBQUJJaWNOSWlkOHg5akhTTWNub0FBQUFBRWlKQlFB
QQpBQUJJaGR0MENFaUozK2dBQUFBQVRZWDJkQWhNaWZmb0FBQUFBRWlMTlFBQUFBQklpNFU0Ly8v
L1NJbEVKQmhJaTRVdy8vLy9TSWxFCkpCQklpNFVnLy8vL1NJdU5LUC8vLzBpSlRDUUlTSWtFSkV5
Si8rZ0FBQUFBVEluLzZBQUFBQUR5RHhDRndQNy8vL0lQRVlYQS92Ly8KOGc4UWpjaisvLy95RDF6
SThnOFJqY2orLy85bUR5NE5kd01BQUhVR0Q0dDVBUUFBVEluLzZBQUFBQUR5RHhDRjBQNy8vL0lQ
V0lYQQovdi8vOGc4UmhkRCsvLy95RHhHRkFQLy8vMGpIaFFqLy8vOEFBQUFBOGc4UWhjaisvLy95
RHhHRkVQLy8vL0lQRUlYWS92Ly84ZzhSCmhSai8vLzlJaTRVWS8vLy9TSWxFSkJoSWk0VVEvLy8v
U0lsRUpCQklpNFVBLy8vL1NJdU5DUC8vLzBpSlRDUUlTSWtFSkV5Si8rZ0EKQUFBQThnOFFoZEQr
Ly8veUR4R0Y0UDcvLzBqSGhlaisvLzhBQUFBQThnOFFoY2orLy8veUR4R0Y4UDcvLy9JUEVJWFkv
di8vOGc4UgpoZmorLy85SWl6VUFBQUFBU0lYMmRXbElpd1VBQUFBQVNJczRTSXNGQUFBQUFFaUxD
RWlOTlFBQUFBQzZsZzBBQU9nQUFBQUFTWW5HClRJbjM2QUFBQUFCSWljTklpZDh4OWpIU01jbm9B
QUFBQUVpSkJRQUFBQUJJaGR0MENFaUozK2dBQUFBQVRZWDJkQWhNaWZmb0FBQUEKQUVpTE5RQUFB
QUJJaTRYNC92Ly9TSWxFSkJoSWk0WHcvdi8vU0lsRUpCQklpNFhnL3YvL1NJdU42UDcvLzBpSlRD
UUlTSWtFSkV5SgovK2dBQUFBQVRJbi82QUFBQUFDQXZhZisvLzhBVEl1MXNQNy8vM1ZBU1l0RUpC
aElpVVFrR0VtTFJDUVFTSWxFSkJCSml3UWtTWXRNCkpBaElpVXdrQ0VpSkJDUk1pZmRJaTUyby92
Ly9TSW5lNkFBQUFBQklpZC9vQUFBQUFFaUx2YmorLy85SWl3ZE1pZmIvVURCSWdjUm8KQVFBQVcw
RmNRVjFCWGtGZlhjTm1abVl1RHgrRUFBQUFBQUJWU0lubFFWWlRTSXNGQUFBQUFFaUZ3SFZwU0lz
RkFBQUFBRWlMT0VpTApCUUFBQUFCSWl3aElqVFVBQUFBQXV2c05BQURvQUFBQUFFbUp4a3lKOStn
QUFBQUFTSW5EU0luZk1mWXgwakhKNkFBQUFBQklpUVVBCkFBQUFTSVhiZEFoSWlkL29BQUFBQUUy
RjluUUlUSW4zNkFBQUFBQklpd1VBQUFBQVcwRmVYY05tWm1abVptWXVEeCtFQUFBQUFBQlYKU0lu
bFUxQ0o4ekhBZy9zTWQwbTVYeDRBQUErajJYTS9nRDMvLy8vL0FYVUpTSXNGQUFBQUFPc3F2eGdB
QUFEb0FBQUFBRWpIUUJBQQpBQUFBU0kwTkVBQUFBRWlKQ0VpSkJRQUFBQURHQmYvLy8vOEJpVmdJ
U0lQRUNGdGR3NUJWU0lubGdEMy8vLy8vQVhVSlNJc0ZBQUFBCkFGM0R2eWdBQUFEb0FBQUFBRWpI
UUNBQUFBQUFTTWRBR0FBQUFBQkl4MEFRQUFBQUFFakhRQWdBQUFBQVNNY0FBQUFBQUVpTkRSQUEK
QUFCSWlRaElpUVVBQUFBQXhnWC8vLy8vQVYzREFBQUFBQUFBQUFBQUFBQUFBUEEvQUFBQUFBQUE4
TDhBQUFBQUFBRHdQd0FBQUFBQQpBUEMvQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQ0FB
QUF3UXdBQU1FVUFBQUFBQUFBQUFBQUFBQUFBQURCREFBQUFBQUFBCk1FVUFBQUFBQUFBQWdBQUFB
QUFBQUFDQUFBQXdRd0FBTUVVQUFBQUFBQUFBQUFBQUFBQUFBREJEQUFBQUFBQUFNRVdKVUU1SERR
b2EKQ2dBQUFBMUpTRVJTQUFBQUFRQUFBQkFJQWdBQUFGajlndUFBQUEwV2FVTkRVRWxEUXlCUWNt
OW1hV3hsQUFCNG5KWFhlVFNVL2ZzSAo4T3VlR1lZeFpzWmdiR0ZrMzVXZGtDV3lKUHRla3AySnNT
U1ZzaVNGeUJLS05vbzJvVVNpb25ySWtpUlpraVVxZXlsRXNzenZEM25xCjk1enpmTC9uKy9ucnVx
OXo3dnYrM1BjNXIvZm5YQUJFdkFlZFRrTUJ3TDZnOEZBYkV3T3FrN01MRmRzRENDQkFBVFdnZUhp
RzBmV3QKckN6Z1g5ZDhGeUFBQUIzeUhuUTZMYkZXdnpoSEVIZVM5SmtZd1BkRW91VGY3d01BQUVL
b2s3TUxBQ0lIQUZ5K2EvVldBT0RhdTFiYgpBUURYZ1hCNk9BRGlCd0Jjbm40ZVhnQklGQURJaGRy
WkdBSWcxd0dBNEx0V1Z3RUFZZTlhM1FnQWhBaFAzM0FBcEFlQW1Sems1UjhFCmdKMENZTmIxOGc3
ekJDRElBWUNYVjVqblBnQkNHZ0FvN05zWDdBVkFxQU1BS1U5NmFEZ0FZUXdBeEp5Y1hhaHJXM1pO
QWxEaEEyQXgKLzkwN2tBVlFrUThndGVOM1QvUStBTVVEb0NEbGQyL1dCaEFBUUNodFlUN0ttd0VB
QU1FYkFEQU5NQml6RWdEWURJQ1ZkQVpqcVlEQgpXTGtDZ080RHFLTjU3ZytOK1BXL0VLUVY0TDlk
cjMzenI0VkdBRkFBaUJoU2hEcUVqc0pFTVIxbGpzSEdzUnhqTldLdHg1MWdPNGxQClpEOUZxQ1Q1
Y2FTVDB6a3p1TTV3WjFHeWVISjQ2L21EQmZJMjVBbGVFR3FrN2hjcDJIaEZ0RTM4c0VTUlpMdjBV
Wmxic2wzeWNRcTMKRlhzM25kaDhWM2xROVpSYXBmcVFacXBXdGZhSVRxYnVZNzBKL1d5RHA0WmZ0
dVVhTjVqTW1GNHlhemFmMzFGZytYTG5LNnRYMXUwMgp5M1kzN1RzZHVoeTduWHBjTUs1MzNQcDI5
ZThlY0IvYzgzNHYzdk9CMTBmdlR6NGp2cU4rWS83amdkeTBKL3MrQjMwSm5xWi9EZmtXCk9oTTJG
ejYzLzN2RS9JR0Z5QjhIRncvOVBMd2N0WHhrSlZvNnBqTU9PWWFLUngvSEpEQ2RZRDZKVFdSSllr
M0duV0pMd2FleW55YWsKRWROSkdSeVo1RE9jV1Z6WjNEbVVzenpuZUhQNTh2alBDMXpZY0ZId2t0
Qmw0WHhxZ2NpVmpWZEZDOFdLeEs5SlhwZThJWFZUK3BiTQpyY2xpMm0yNUV2bFN4VEtsTzV2dWJp
cmZmRStsUXJWU3JYTCtma1NWK2dPTmFxMGE3WWRiSG0xNXJQTjR0VGE2VHUvSjFxZjZ6d3orCk1x
ekgxTWMzYkh0dTNHalNaTnBzMm9KclNYNWgzbXJ4MHJLTjBIYjZsVlc3OVd1YkRuSkh4aHZiVHJz
dSsyNUtkMDZQNDF1blhwZDMKL08veSt0ejYzUVoyRFFvTlhucnZQclJuV0dTNDRNUGVqNTZmdkVi
RVI0cEdmY1o4eC8wbXBDZHVUZ1pNQlg2bWZaSC9VaklkOURYNApHMzFtMDh6ZDJkQzVzTy9oODZy
emxRc1JQeUlYRC80OHVLUzFWTE44ZUNWcVZXZjFNWU1CZ0lpaUNLaXY2QmJNTGFaTTVpaXNMNHNk
CnF5Rk9oVTBTTDhuT1MrQWg4cEo0T2JqSkVweFNYQnJjRnBUZFBHRzhxWHlsL0MwQzQ0S2NRbXJD
dnRTeklzOUZFVEVkOFJDSk81TFQKMGxJeU5Oa2FlYlNDdm1LNjB0Qm1hZVVFbFc0MUdYVzZScjBX
ajNia2xoZTZGTDNnclU4TnhBd1BHN1ViQzVsRWJuOWt1bWkreWNKNwpSNVpsdXhYQjJzUW0wcmJR
N28wRHpuR3JVNGp6QlpjRzErbGR3cnQzdWgvYVUrQlJ2M2ZjaTl0Yno4Zko5NmpmWmYrNmdQN0F4
WDJjClFiTEJSblMva0tqUXRMQ0M4SXI5alJIdkRreEV6aDlDSCthSW9oNlJPNm9hdlRYR1BIWm5u
T3V4UGZIZXgya0o0U2RDVDhZa3hpUWQKUzA0OGxaR1NuSnA3K2x4YVRucDZ4dm5NakRQWldXZXpy
K2RjTzF0eTducnVyYnpTOHc4dlBMeFlmK25GNWZiOGpvS09LeDFYM3hWKwpMQnE5Tm56OTA0M3Bt
OTl1VFJkL3VUMVRNbDA2V1RaMVovVHVVUG53dmQ2SzlzcW0rM1ZWOXgrVVZwK3Z5WGdZODJqZlk5
ZGE4N290ClQyU2VrcDh1UG52L1YzUDl2WWJNNTZHTnRrMXF6UUxOakpiZUYvZGFrMTY2dEltMmpi
d3Fiei95ZWxzSG9hUC96ZVhPZ0M3bHJwWHUKMXA3TXQ3dDZwWHRuMzFYM3hmV2JEM0FOREF6ZWVC
ODJwRDJNR1c3K2NPYmo3aytTbjZaR3FrZGp4OHpHdWNmN0o2NU8wcVpVcDFZLwpOMzNKbUhiOUt2
WjE2bHY1VE5Tc3lSeDVydWQ3NFh6d2d1WVA5SS9uaStrL1haZEVsejR2VjY3RXJKb3lLQXdHQUJ4
RElsR0gwTnJvCmFzd1JKajJtV3VaWTdIRVdZNVo2MWdUY0NiWWt2Qm0raFQyRmtFSk1KZTBrdFhH
a2tUTTRNN2t5dWUyNDMxQ3llYko1ei9MbDh1Y0oKNUcwNEwrZ20yQzkwU2ZneU5WOGtmMk8rNkJX
eHErS0ZFa1dTMTZTdVM5K1E4WmVaa0wwcFZ5eC9XNkZFc1ZTcGJOT2R6WGVWeTFYdQpxVmFxVmFw
WGFrUnEvTkNzMXFyV3J0bnlVT2VSN2xIZFZiM2FyWFg2VHd5ZUdqNHppdCtHMlZadjNHRHlmSHVq
YVpOWnMzbXlCZDdpCnhZNVd5NWM3MjZ6U3JFblc3VGF2YlR2czN0aDNPV1E3VWh5N25YcWMzN3Iw
dXVhNUNiajE3ZXJmUGVqK2ZzOTdqL3k5SW51SFBUOTQKZmZUKzVGUGtLN0dXSUFFVGdiZG9jclNw
LzVjaXMzK25TTlZCallPTGgzNGVYb3BhUHJKeWREV2FFUXR4cUwrVEJIc1NtOGlTMkpSawpsc3gy
Q3ArQ1QyVS9UVXdqcFhQOG5TV1VISjZ6dkwreVpNT2ZXVkl3Zk1YenFtaWhXSkhFTlluMU5DbVd1
eTFmb3ZCSGxpaFhxRlNxCjNsZXZVbitnVWExWm8vMVErOUdXeDdxMXVuL2t5TFlHNCtmR2pTWk4y
NXROVzh4ZlJMemMyR2I1eXFyZDZyVjF4NUZPbVM2SGJzZWUKdUY3RmR5NTlDUVBLZzRsRHFzT25Q
bnFOYUkrbWovdFBCbnltVFFkL1M1cHptVCs5bUx4aXcyQUFySjE5QUFETWFnRFpzZ0FPdVFDMgpC
UUFKc2dDUzdnQ1U2d0JXN0FCMm1vQmlFZ0tVRGgwUU01MzE4d01RSUlFZ0tJQUJPRU1ZcEVFWi9F
Q29pRGtTaVZ4SFhpS2pLQ0xLCkJCV0xlb1JhUnV1Z1k5RU42R1dNQ01ZWlU0VDV6bVRNZEp5cGxH
bWEyWVE1bjNrRXk0MTF3ejVpd2JKb3NzU3pUTEpxc1FhejF1SGsKY1RHNEtqWUNXeXpiV3p3WFBn
Zy94cjZOL1JqN0VNR0Q4SlNJSnZvUXAwaldwR3pTQ2tjaXh3eFppMXpJcWM1WnlEbk41YzYxd08z
UApYVW1ScFR6bjhlSEY4dDdrRStjN3dEZkhmMEhBUkdCMncyVkJNY0VvSVVTb1FqaUFLa0x0RlRt
emNlUEdHRkdpYUp0WXVyaTlCTC9FCnNPUXRLVU9wRzlJR01od3lRN0xsY2lmazNSU1VGZkdLbzBw
L2JTcllIS2ZzcFdLaUtxZkdxYmFzUHFLUm8wblFyTk1xMDg3ZmNrYm4KcEc2MDNvR3RJZm8wQTM5
RFB5Ty9iWUhHUVNiaDJ3K2J4cHVkTnMrenVMR2p5ckpwWjUvVk54dXNyWkNkaHIydEE5MHgxYW5F
K1pYTApyQnZ2THQzZFB1NXBlMm84eGp4NXZFeThEL29VKy9NR1dBVW0wZXFEVU1INjlOaVFaMkhN
NGViN015TEZEZ1lmZWhpRk8rSnl0RGlhCkVXc1hqenJ1bG5EL0pHZGlTRko3U2xicVlwcDdla09t
NHBuY25MQ3pIM0p0OCtvdmxsd1d6Nzl3aGFlSWRDMzFCdUhtNmRzNXBZSmwKVisvS1Z4aFZ0bGQ1
UFBqMmlPZHhjWjNCcy9CNllrTnhvMWxMVXF2OHkvWlhFUjBObmZSdWdaN0dQb24rbnNHa0liMlB4
U05lWThMagp2WjhkcGlsZnUyZHk1OXdYcGhZcmxxSVp2QXdHQUtBQUJ6d2dEWHJnQlBzaEM2cGdB
TUVpU29nN2tvclVJck1vR1pRN0toZjFCazFFCjcwQ2ZRcmRpMkRFN01WbVlkMHhVSm4rbU1xWWZ6
SWJNcDVuZllzV3grN0hQV01nc1hpeFZyR3lzYnF3bE9BeHVOKzRlRzQ3Tms2MFcKejQybjQxdlpa
ZGhUMktjSUZvUlNJanN4bU5oRjJrcTZ5a0hnaU9CNFJ6WW0zK0drY21ad3JuS0ZjWDNtRHVDZW9O
QW9NenpoUFBPOApoL2dRdmxQOC9QdzNCVFFGR2pZNGJCZ1hqQkhpRTZvVXRoYWVvQ2FJU0lnMGJn
d1M1UkY5TE9ZcGpoZC9JaEVrS1N6NVdpcFIya0I2ClJhWkdOa3BPUjI1QnZsYmhwS0tka29qUzlL
YmF6ZW5LQVNwR3FrS3FTMnFkNmc4MExtakdhdmxxTzI3UjBWSFVGZEVqYjhYb28vVm4KREw0WlRo
dE5iaHN4bmpXWjNQN2RER1hPWmNHelk1T2w3czZkVmpiV2dUWUhiZlBzN3RxL2NIam51T3pNNWFM
b2F1a1dzdXZjN25yMwpVUS9XdlVxZWZsNjUzclUrWC8yay9iMERjZ0k3OXdrRTJRZm4wY2RDcGNJ
aXdwc2lCQStFUlRZZkVqMmNHalZ4MURtNk1WWXRyakNlCmZEejFCUGxrZGhKdmNsNkthdXJMTk8v
MG41a3BXZXJabjg1ZXpBMDRiMzlSK2pKVC90U1ZwNFVWMTg3ZFNMamxlZHV0MVBpT1JybEsKaGNK
OStRZFNOZUtQcEdxVm51ZzkyMTV2L1p6V0ZOS1MzbnE1N1dIN1FBZWpTN2hIcDllckwzbWcrdjNV
Qjc1UEJxTXg0OWNuUDM3aAovK296YzNGdVpFRnFNV2lwY2hWaE1BQ0FHVWdnQ0FiZ0RHbFFCcS9Y
N2ErN1gxT1BJV0tjTWQrWmpKbHlmM2xmeGJxeENMUEVzMHl5CjJySFc0ZVJ4NTlrSWJMRnNDL2dn
L0JpN0Y4R0Q4SUhvUTV3aWhaRldPQkxKRkhJaHB6cG5NNWM3MXdKMzJ0K21MZm5tZm5tMkVrS0UK
S241WnRsNlQvTXR4aExUQm40Wi9DLzdsOTdWbW5WYlpiN3UvNWY2NzIvK2sxbmZJbnpmQTZwOXFJ
M3IvNlRidTVwOXlUMjMrTFRlYgplZDN1QmMxMXZWY3oxLzBXazljRmwxZXRHNjQ1dHFiNFNlKzY0
NmJ4bHFRWGY3Vm12MngvRmZGYXNLT2hrOTVWMXAzUTA5Z2IwU2ZSCkh6aGdOSmcwcERkODRzUGVq
OFdmNWtjNnhvVEhBeWRNSjZXbXNKOGR2aFJOSjN6MS9iWjlSbWFXYmZiTDNLdnY1ZlBaQzNZTFV6
L2kKRncxK1N2NGNXWXBlNWwyK3VNS3hFcit5c0hxVmtjeGdBS3pOU3dBQWdETU1wZ1dIVWkwTWpm
N0xjUGUvcm4yMC9ldnZRQUFBN3gxawpid3NBWkFEWUFJWVFERFFJaGxDZ2dnVVlnaEhBMnF3R0FN
Qk1Bamp2Q0FCUSsrTnd6RCtmRys0ZEdRNEFZQmhNUHhqcTcrc1hUdFduCjAybmVjbFRUSUU4Rk9l
cG1KU1VOK0Q4WUpQNDdCQUM4bWdBQUFEdEpSRUZVQ0prMXlURU5BRUVJQk1ETlhrSXdnQWdFSXd3
clVOREIKVnovdElDTG83alF6cWlwSnZxckMzUkVBQVRBejBkMFVFZXp1ZjI5bVBsUmVGcjFycDRY
REFBQUFBRWxGVGtTdVFtQ0NBQUFBQUFBQQpBQUFBQUlsUVRrY05DaG9LQUFBQURVbElSRklBQUFB
QkFBQUFFQWdDQUFBQVdQMkM0QUFBRFJacFEwTlFTVU5ESUZCeWIyWnBiR1VBCkFIaWNsZGQ1TkpU
OSt3Znc2NTRaaGpGbXhtQnNZV1RmbFoyUUpiSWsrMTZTbllteEpKV3lKSVhJRW9vMmlqYWhSS0tp
ZXNpU0pGbVMKSlNwN0tVU3l6TzhQZWVyM25QTjh2K2Y3K2V1NnIzUHUrLzdjOXptdjkrZGNBRVM4
QjUxT1F3SEF2cUR3VUJzVEE2cVRzd3NWMndNSQpJRUFCTmFCNGVJYlI5YTJzTE9CZjEzd1hJQUFB
SGZJZWREb3RzVmEvT0VjUWQ1TDBtUmpBOTBTaTVOL3ZBd0FBUXFpVHN3c0FJZ2NBClhMNXI5VllB
NE5xN1Z0c0JBTmVCY0hvNEFPSUhBRnllZmg1ZUFFZ1VBTWlGMnRrWUFpRFhBWURndTFaWEFRQmg3
MXJkQ0FDRUNFL2YKY0FDa0I0Q1pIT1RsSHdTQW5RSmcxdlh5RHZNRUlNZ0JnSmRYbU9jK0FFSWFB
Q2pzMnhmc0JVQ29Bd0FwVDNwb09BQmhEQURFbkp4ZApxR3RiZGswQ1VPRURZREgvM1R1UUJWQ1JE
eUMxNDNkUDlENEF4UU9nSU9WM2I5WUdFQUJBS0cxaFBzcWJBUUFBd1JzQU1BMHdHTE1TCkFOZ01n
SlYwQm1PcGdNRll1UUtBN2dPb28zbnVENDM0OWI4UXBCWGd2MTJ2ZmZPdmhVWUFVQUNJR0ZLRU9v
U093a1F4SFdXT3djYXgKSEdNMVlxM0huV0E3aVU5a1AwV29KUGx4cEpQVE9UTzR6bkJuVWJKNGNu
anIrWU1GOGpia0NWNFFhcVR1RnluWWVFVzBUZnl3UkpGawp1L1JSbVZ1eVhmSnhDcmNWZXplZDJI
eFhlVkQxbEZxbCtwQm1xbGExOW9oT3B1NWp2UW45YklPbmhsKzI1Um8zbU15WVhqSnJOcC9mClVX
RDVjdWNycTFmVzdUYkxkamZ0T3gyNkhMdWRlbHd3cm5mYytuYjE3eDV3SDl6emZpL2U4NEhYUis5
UFBpTytvMzVqL3VPQjNMUW4KK3o0SGZRbWVwbjhOK1JZNkV6WVhQcmYvZThUOGdZWElId2NYRC8w
OHZCeTFmR1FsV2pxbU13NDVob3BISDhja01KMWdQb2xOWkVsaQpUY2FkWWt2QnA3S2ZKcVFSMDBr
WkhKbmtNNXhaWE5uY09aU3pQT2Q0Yy9ueStNOExYTmh3VWZDUzBHWGhmR3FCeUpXTlYwVUx4WXJF
CnIwbGVsN3doZFZQNmxzeXR5V0xhYmJrUytWTEZNcVU3bSs1dUt0OThUNlZDdFZLdGN2NStSSlg2
QTQxcXJScnRoMXNlYlhtczgzaTEKTnJwTzc4bldwL3JQRFA0eXJNZlV4emRzZTI3Y2FOSmsybXph
Z210SmZtSGVhdkhTc28zUWR2cVZWYnYxYTVzT2NrZkdHOXRPdXk3Nwpia3AzVG8valc2ZGVsM2Y4
Ny9MNjNQcmRCbllOQ2cxZWV1OCt0R2RZWkxqZ3c5NlBucCs4UnNSSGlrWjl4bnpIL1Nha0oyNU9C
a3dGCmZxWjlrZjlTTWgzME5mZ2JmV2JUek4zWjBMbXc3K0h6cXZPVkN4RS9JaGNQL2p5NHBMVlVz
M3g0SldwVlovVXhnd0dBaUtJSXFLL28KRnN3dHBrem1LS3d2aXgycklVNkZUUkl2eWM1TDRDSHlr
bmc1dU1rU25GSmNHdHdXbE4wOFlieXBmS1g4TFFMamdweENhc0srMUxNaQp6MFVSTVIzeEVJazdr
dFBTVWpJMDJScDV0SUsrWXJyUzBHWnA1UVNWYmpVWmRicEd2UmFQZHVTV0Y3b1V2ZUN0VHczRURB
OGJ0UnNMCm1VUnVmMlM2YUw3SndudEhsbVc3RmNIYXhDYlN0dER1alFQT2NhdFRpUE1GbHdiWDZW
M0N1M2U2SDlwVDRGRy9kOXlMMjF2UHg4bjMKcU45bC83cUEvc0RGZlp4QnNzRkdkTCtRcU5DMHNJ
THdpdjJORWU4T1RFVE9IMElmNW9paUhwRTdxaHE5TmNZOGRtZWM2N0U5OGQ3SAphUW5oSjBKUHhp
VEdKQjFMVGp5VmtaS2NtbnY2WEZwT2VuckcrY3lNTTlsWlo3T3Y1MXc3VzNMdWV1NnR2Tkx6RHk4
OHZGaC82Y1hsCjl2eU9nbzRySFZmZkZYNHNHcjAyZlAzVGplbWIzMjVORjMrNVBWTXlYVHBaTm5W
bjlPNVErZkM5M29yMnlxYjdkVlgzSDVSV242L0oKZUJqemFOOWoxMXJ6dWkxUFpKNlNueTQrZS85
WGMvMjloc3pub1kyMlRXck5BczJNbHQ0WDkxcVRYcnEwaWJhTnZDcHZQL0o2V3dlaApvLy9ONWM2
QUx1V3VsZTdXbnN5M3UzcWxlMmZmVmZmRjlac1BjQTBNRE41NEh6YWtQWXdaYnY1dzV1UHVUNUtm
cGthcVIyUEh6TWE1Cngvc25yazdTcGxTblZqODNmY21ZZHYwcTluWHFXL2xNMUt6SkhIbXU1M3Zo
ZlBDQzVnLzBqK2VMNlQ5ZGwwU1hQaTlYcnNTc21qSW8KREFZQUhFTWlVWWZRMnVocXpCRW1QYVph
NWxqc2NSWmpsbnJXQk53SnRpUzhHYjZGUFlXUVFrd2w3U1MxY2FTUk16Z3p1VEs1N2JqZgpVTEo1
c25uUDh1WHk1d25rYlRndjZDYllMM1JKK0RJMVh5Ui9ZNzdvRmJHcjRvVVNSWkxYcEs1TDM1RHhs
NW1RdlNsWExIOWJvVVN4ClZLbHMwNTNOZDVYTFZlNnBWcXBWcWxkcVJHcjgwS3pXcXRhdTJmSlE1
NUh1VWQxVnZkcXRkZnBQREo0YVBqT0szNGJaVm0vY1lQSjgKZTZOcGsxbXplYklGM3VMRmpsYkxs
enZick5Lc1NkYnROcTl0Tyt6ZTJIYzVaRHRTSEx1ZGVwemZ1dlM2NXJrSnVQWHQ2dDg5NlA1Kwp6
M3VQL0wwaWU0YzlQM2g5OVA3a1UrUXJzWllnQVJPQnQyaHl0S24vbHlLemY2ZEkxVUdOZzR1SGZo
NWVpbG8rc25KME5ab1JDM0dvCnY1TUVleEtieUpMWWxHU1d6SFlLbjRKUFpUOU5UQ09sYy95ZEpa
UWNuck84djdKa3c1OVpVakI4eGZPcWFLRllrY1ExaWZVMEtaYTcKTFYraThFZVdLRmVvVktyZVY2
OVNmNkJSclZtai9WRDcwWmJIdXJXNmYrVEl0Z2JqNThhTkprM2JtMDFiekY5RXZOelladm5LcXQz
cQp0WFhIa1U2WkxvZHV4NTY0WHNWM0xuMEpBOHFEaVVPcXc2YytlbzFvajZhUCswOEdmS1pOQjM5
TG1uT1pQNzJZdkdMRFlBQ3NuWDBBCkFNeHFBTm15QUE2NUFMWUZBQW15QUpMdUFKVHJBRmJzQUhh
YWdHSVNBcFFPSFJBem5mWHpBeEFnZ1NBb2dBRTRReGlrUVJuOFFLaUkKT1JLSlhFZGVJcU1vSXNv
RUZZdDZoRnBHNjZCajBRM29aWXdJeGhsVGhQbk9aTXgwbkttVWFaclpoRG1mZVFUTGpYWERQbUxC
c21peQp4TE5Nc21xeEJyUFc0ZVJ4TWJncU5nSmJMTnRiUEJjK0NEL0d2bzM5R1BzUXdZUHdsSWdt
K2hDblNOYWtiTklLUnlMSERGbUxYTWlwCnpsbklPYzNsenJYQTdjOWRTWkdsUE9meDRjWHkzdVFU
NXp2QU44ZC9RY0JFWUhiRFpVRXh3U2doUktoQ09JQXFRdTBWT2JOeDQ4WVkKVWFKb20xaTZ1TDBF
djhTdzVDMHBRNmtiMGdZeUhESkRzdVZ5SitUZEZKUVY4WXFqU245dEt0Z2NwK3lsWXFJcXA4YXB0
cXcrb3BHagpTZENzMHlyVHp0OXlSdWVrYnJUZWdhMGgralFEZjBNL0k3OXRnY1pCSnVIYkQ1dkdt
NTAyejdPNHNhUEtzbWxubjlVM0c2eXRrSjJHCnZhMEQzVEhWcWNUNWxjdXNHKzh1M2QwKzdtbDdh
anpHUEhtOFRMd1AraFQ3OHdaWUJTYlI2b05Rd2ZyMDJKQm5ZY3poNXZzeklzVU8KQmg5NkdJVTc0
bkswT0pvUmF4ZVBPdTZXY1A4a1oySklVbnRLVnVwaW1udDZRNmJpbWR5Y3NMTWZjbTN6NmkrV1hC
YlB2M0NGcDRoMApMZlVHNGVicDJ6bWxnbVZYNzhwWEdGVzJWM2s4K1BhSTUzRnhuY0d6OEhwaVEz
R2pXVXRTcS96TDlsY1JIUTJkOUc2Qm5zWStpZjZlCndhUWh2WS9GSTE1and1TzlueDJtS1YrN1oz
TG4zQmVtRml1V29obThEQVlBb0FBSFBDQU5ldUFFK3lFTHFtQUF3U0pLaUR1U2l0UWkKc3lnWmxE
c3FGL1VHVFVUdlFKOUN0MkxZTVRzeFdaaDNURlFtZjZZeXBoL01oc3lubWQ5aXhiSDdzYzlZeUN4
ZUxGV3NiS3h1ckNVNApERzQzN2g0YmpzMlRyUmJQamFmalc5bGwyRlBZcHdnV2hGSWlPekdZMkVY
YVNycktRZUNJNEhoSE5pYmY0YVJ5Wm5DdWNvVnhmZVlPCjRKNmcwQ2d6UE9FODg3eUgrQkMrVS96
OC9EY0ZOQVVhTmpoc0dCZU1FZUlUcWhTMkZwNmdKb2hJaURSdURCTGxFWDBzNWltT0YzOGkKRVNR
cExQbGFLbEhhUUhwRnBrWTJTazVIYmtHK1Z1R2tvcDJTaU5MMHB0ck42Y29CS2thcVFxcExhcDNx
RHpRdWFNWnErV283YnRIUgpVZFFWMFNOdnhlaWo5V2NNdmhsT0cwMXVHekdlTlpuYy90ME1aYzVs
d2JOams2WHV6cDFXTnRhQk5nZHQ4K3p1MnI5d2VPZTQ3TXpsCm91aHE2UmF5Njl6dWV2ZFJEOWE5
U3A1K1hybmV0VDVmL2FUOXZRTnlBanYzQ1FUWkIrZlJ4MEtsd2lMQ215SUVENFJGTmg4U1Bad2EK
TlhIVU9ib3hWaTJ1TUo1OFBQVUUrV1IyRW05eVhvcHE2c3MwNy9TZm1TbFo2dG1memw3TURUaHZm
MUg2TWxQKzFKV25oUlhYenQxSQp1T1Y1MjYzVStJNUd1VXFGd24zNUIxSTE0bytrYXBXZTZEM2JY
bS85bk5ZVTBwTGVlcm50WWZ0QUI2Tkx1RWVuMTZzdmVhRDYvZFFICnZrOEdvekhqMXljL2Z1SC82
ak56Y1c1a1FXb3hhS2x5RldFd0FJQVpTQ0FJQnVBTWFWQUdyOWZ0cjd0ZlU0OGhZcHd4MzVtTW1Y
Si8KZVYvRnVyRUlzOFN6VExMYXNkYmg1SEhuMlFoc3NXd0wrQ0Q4R0xzWHdZUHdnZWhEbkNLRmtW
WTRFc2tVY2lHbk9tY3psenZYQW5mYQozNll0K2VaK2ViWVNRb1FxZmxtMlhwUDh5M0dFdE1HZmhu
OEwvdVgzdFdhZFZ0bHZ1Ny9sL3J2Yi82VFdkOGlmTjhEcW4yb2pldi9wCk51N21uM0pQYmY0dE41
dDUzZTRGelhXOVZ6UFgvUmFUMXdXWFY2MGJyam0ycHZoSjc3cmpwdkdXcEJkL3RXYS9iSDhWOFZx
d282R1QKM2xYV25kRFQyQnZSSjlFZk9HQTBtRFNrTjN6aXc5NlB4Wi9tUnpyR2hNY0RKMHducGFh
d254MitGRTBuZlBYOXRuMUdacFp0OXN2YwpxKy9sODlrTGRndFRQK0lYRFg1Sy9oeFppbDdtWGI2
NHdyRVN2N0t3ZXBXUnpHQUFyTTFMQUFDQU13eW1CWWRTTFF5Ti9zdHc5Nyt1CmZiVDk2KzlBQUFE
dkhXUnZDd0JrQU5nQWhoQU1OQWlHVUtDQ0JSaUNFY0RhckFZQXdFd0NPTzhJQUZENzQzRE1QNThi
N2gwWkRnQmcKR0V3L0dPcnY2eGRPMWFmVGFkNXlWTk1nVHdVNTZtWWxKUTM0UHhnay9qc0VBTHlh
QUFBQVAwbEVRVlFJbVFYQklRNEFJQXdFd2N1UwpFRXdsQWcyR0IvTlJLdW9LTXpybnNQZW05MDVy
RGFEY2U1bHpzdFppaklHWnlkMnB0U296OWQ1RFVvbUlEODRSRXBaVzdhNjJBQUFBCkFFbEZUa1N1
UW1DQ0FBQUFBQUFBaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFnQUFBQVFDQUlBQUFDazZLa3FB
QUFORm1sRFExQkoKUTBNZ1VISnZabWxzWlFBQWVKeVYxM2swbFAzN0IvRHJuaG1HTVdiR1lHeGha
TitWblpBbHNpVDdYcEtkaWJFa2xiSWtoY2dTaWphSwpOcUZFb3FKNnlKSWtXWklsS25zcFJMTE03
dzk1NnZlYzgzeS81L3Y1NjdxdmMrNzcvdHozT2EvMzUxd0FSTHdIblU1REFjQytvUEJRCkd4TURx
cE96Q3hYYkF3Z2dRQUUxb0hoNGh0SDFyYXdzNEYvWGZCY2dBQUFkOGg1ME9pMnhWcjg0UnhCM2t2
U1pHTUQzUktMazMrOEQKQUFCQ3FKT3pDd0FpQndCY3ZtdjFWZ0RnMnJ0VzJ3RUExNEZ3ZWpnQTRn
Y0FYSjUrSGw0QVNCUUF5SVhhMlJnQ0lOY0JnT0M3VmxjQgpBR0h2V3QwSUFJUUlUOTl3QUtRSGdK
a2M1T1VmQklDZEFtRFc5ZklPOHdRZ3lBR0FsMWVZNXo0QVFob0FLT3piRit3RlFLZ0RBQ2xQCmVt
ZzRBR0VNQU1TY25GMm9hMXQyVFFKUTRRTmdNZi9kTzVBRlVKRVBJTFhqZDAvMFBnREZBNkFnNVhk
djFnWVFBRUFvYldFK3lwc0IKQUFEQkd3QXdEVEFZc3hJQTJBeUFsWFFHWTZtQXdWaTVBb0R1QTZp
amVlNFBqZmoxdnhDa0ZlQy9YYTk5ODYrRlJnQlFBSWdZVW9RNgpoSTdDUkRFZFpZN0J4ckVjWXpW
aXJjZWRZRHVKVDJRL1JhZ2srWEdrazlNNU03ak9jR2RSc25oeWVPdjVnd1h5TnVRSlhoQnFwTzRY
CktkaDRSYlJOL0xCRWtXUzc5RkdaVzdKZDhuRUt0eFY3TjUzWWZGZDVVUFdVV3FYNmtHYXFWclgy
aUU2bTdtTzlDZjFzZzZlR1g3YmwKR2plWXpKaGVNbXMybjk5UllQbHk1eXVyVjlidE5zdDJOKzA3
SGJvY3U1MTZYREN1ZDl6NmR2WHZIbkFmM1BOK0w5N3pnZGRINzA4KwpJNzZqZm1QKzQ0SGN0Q2Y3
UGdkOUNaNm1mdzM1RmpvVE5oYyt0Lzk3eFB5QmhjZ2ZCeGNQL1R5OEhMVjhaQ1ZhT3FZekRqbUdp
a2NmCnh5UXduV0EraVUxa1NXSk54cDFpUzhHbnNwOG1wQkhUU1JrY21lUXpuRmxjMmR3NWxMTTg1
M2h6K2ZMNHp3dGMySEJSOEpMUVplRjgKYW9ISWxZMVhSUXZGaXNTdlNWNlh2Q0YxVS9xV3pLM0pZ
dHB0dVJMNVVzVXlwVHViN200cTMzeFBwVUsxVXExeS9uNUVsZm9EaldxdApHdTJIV3g1dGVhenpl
TFUydWs3dnlkYW4rczhNL2pLc3g5VEhOMng3YnR4bzBtVGFiTnFDYTBsK1lkNXE4ZEt5amRCMitw
VlZ1L1ZyCm13NXlSOFliMjA2N0x2dHVTbmRPaitOYnAxNlhkL3p2OHZyYyt0MEdkZzBLRFY1Njd6
NjBaMWhrdU9ERDNvK2VuN3hHeEVlS1JuM0cKZk1mOUpxUW5iazRHVEFWK3BuMlIvMUl5SGZRMStC
dDladFBNM2RuUXViRHY0Zk9xODVVTEVUOGlGdy8rUExpa3RWU3pmSGdsYWxWbgo5VEdEQVlDSW9n
aW9yK2dXekMybVRPWW9yQytMSGFzaFRvVk5FaS9Kemt2Z0lmS1NlRG00eVJLY1Vsd2EzQmFVM1R4
aHZLbDhwZnd0CkF1T0NuRUpxd3I3VXN5TFBSUkV4SGZFUWlUdVMwOUpTTWpUWkdubTBncjVpdXRM
UVptbmxCSlZ1TlJsMXVrYTlGbzkyNUpZWHVoUzkKNEsxUERjUU1EeHUxR3d1WlJHNS9aTHBvdnNu
Q2UwZVdaYnNWd2RyRUp0SzIwTzZOQTg1eHExT0k4d1dYQnRmcFhjSzdkN29mMmxQZwpVYjkzM0l2
Ylc4L0h5ZmVvMzJYL3VvRCt3TVY5bkVHeXdVWjB2NUNvMExTd2d2Q0svWTBSN3c1TVJNNGZRaC9t
aUtJZWtUdXFHcjAxCnhqeDJaNXpyc1QzeDNzZHBDZUVuUWsvR0pNWWtIVXRPUEpXUmtweWFlL3Bj
V2s1NmVzYjV6SXd6MlZsbnM2L25YRHRiY3U1NjdxMjgKMHZNUEx6eThXSC9weGVYMi9JNkNqaXNk
Vjk4VmZpd2F2VFo4L2RPTjZadmZiazBYZjdrOVV6SmRPbGsyZFdmMDdsRDU4TDNlaXZiSwpwdnQx
VmZjZmxGYWZyOGw0R1BObzMyUFhXdk82TFU5a25wS2ZMajU3LzFkei9iMkd6T2VoamJaTmFzMEN6
WXlXM2hmM1dwTmV1clNKCnRvMjhLbTgvOG5wYkI2R2ovODNsem9BdTVhNlY3dGFlekxlN2VxVjda
OTlWOThYMW13OXdEUXdNM25nZk5xUTlqQmx1L25EbTQrNVAKa3ArbVJxcEhZOGZNeHJuSCt5ZXVU
dEttVktkV1B6ZDl5WmgyL1NyMmRlcGIrVXpVck1rY2VhN25lK0Y4OElMbUQvU1A1NHZwUDEyWApS
SmMrTDFldXhLeWFNaWdNQmdBY1F5SlJoOURhNkdyTUVTWTlwbHJtV094eEZtT1dldFlFM0FtMkpM
d1p2b1U5aFpCQ1RDWHRKTFZ4CnBKRXpPRE81TXJudHVOOVFzbm15ZWMveTVmTG5DZVJ0T0Mvb0p0
Z3ZkRW40TWpWZkpIOWp2dWdWc2F2aWhSSkZrdGVrcmt2ZmtQR1gKbVpDOUtWY3NmMXVoUkxGVXFX
elRuYzEzbGN0VjdxbFdxbFdxVjJwRWF2elFyTmFxMXE3WjhsRG5rZTVSM1ZXOTJxMTErazhNbmhv
KwpNNHJmaHRsV2I5eGc4bng3bzJtVFdiTjVzZ1hlNHNXT1ZzdVhPOXVzMHF4SjF1MDJyMjA3N043
WWR6bGtPMUljdTUxNm5OKzY5THJtCnVRbTQ5ZTNxM3ozby9uN1BlNC84dlNKN2h6MC9lSDMwL3VS
VDVDdXhsaUFCRTRHM2FISzBxZitYSXJOL3AwalZRWTJEaTRkK0hsNksKV2o2eWNuUTFtaEVMY2Fp
L2t3UjdFcHZJa3RpVVpKYk1kZ3FmZ2s5bFAwMU1JNlZ6L0owbGxCeWVzN3kvc21URG4xbFNNSHpG
ODZwbwpvVmlSeERXSjlUUXBscnN0WDZMd1I1WW9WNmhVcXQ1WHIxSi9vRkd0V2FQOVVQdlJsc2U2
dGJwLzVNaTJCdVBueG8wbVRkdWJUVnZNClgwUzgzTmhtK2NxcTNlcTFkY2VSVHBrdWgyN0hucmhl
eFhjdWZRa0R5b09KUTZyRHB6NTZqV2lQcG8vN1R3WjhwazBIZjB1YWM1ay8KdlppOFlzTmdBS3lk
ZlFBQXpHb0EyYklBRHJrQXRnVUFDYklBa3U0QWxPc0FWdXdBZHBxQVloSUNsQTRkRURPZDlmTURF
Q0NCSUNpQQpBVGhER0tSQkdmeEFxSWc1RW9sY1IxNGlveWdpeWdRVmkzcUVXa2Jyb0dQUkRlaGxq
QWpHR1ZPRStjNWt6SFNjcVpScG10bUVPWjk1CkJNdU5kY00rWXNHeWFMTEVzMHl5YXJFR3M5Ymg1
SEV4dUNvMkFsc3MyMXM4Rno0SVA4YStqZjBZK3hEQmcvQ1VpQ2I2RUtkSTFxUnMKMGdwSElzY01X
WXRjeUtuT1djZzV6ZVhPdGNEdHoxMUprYVU4NS9IaHhmTGU1QlBuTzhBM3gzOUJ3RVJnZHNObFFU
SEJLQ0ZFcUVJNApnQ3BDN1JVNXMzSGp4aGhSb21pYldMcTR2UVMveExEa0xTbERxUnZTQmpJY01r
T3k1WEluNU4wVWxCWHhpcU5LZjIwcTJCeW43S1ZpCm9pcW54cW0yckQ2aWthTkowS3pUS3RQTzMz
Skc1NlJ1dE42QnJTSDZOQU4vUXo4anYyMkJ4a0VtNGRzUG04YWJuVGJQczdpeG84cXkKYVdlZjFU
Y2JySzJRbllhOXJRUGRNZFdweFBtVnk2d2I3eTdkM1Q3dWFYdHFQTVk4ZWJ4TXZBLzZGUHZ6Qmxn
Rkp0SHFnMURCK3ZUWQprR2Roek9IbSt6TWl4UTRHSDNvWWhUdmljclE0bWhGckY0ODY3cFp3L3lS
bllraFNlMHBXNm1LYWUzcERwdUtaM0p5d3N4OXliZlBxCkw1WmNGcysvY0lXbmlIUXQ5UWJoNXVu
Yk9hV0NaVmZ2eWxjWVZiWlhlVHo0OW9qbmNYR2R3YlB3ZW1KRGNhTlpTMUtyL012MlZ4RWQKRFoz
MGJvR2V4ajZKL3A3QnBDRzlqOFVqWG1QQzQ3MmZIYVlwWDd0bmN1ZmNGNllXSzVhaUdid01CZ0Nn
QUFjOElBMTY0QVQ3SVF1cQpZQURCSWtxSU81S0sxQ0t6S0JtVU95b1g5UVpOUk85QW4wSzNZdGd4
T3pGWm1IZE1WQ1ovcGpLbUg4eUd6S2VaMzJMRnNmdXh6MWpJCkxGNHNWYXhzckc2c0pUZ01iamZ1
SGh1T3paT3RGcytOcCtOYjJXWFlVOWluQ0JhRVVpSTdNWmpZUmRwS3VzcEI0SWpnZUVjMkp0L2gK
cEhKbWNLNXloWEY5NWc3Z25xRFFLRE04NFR6enZJZjRFTDVUL1B6OE53VTBCUm8yT0d3WUY0d1I0
aE9xRkxZV25xQW1pRWlJTkc0TQpFdVVSZlN6bUtZNFhmeUlSSkNrcytWb3FVZHBBZWtXbVJqWktU
a2R1UWI1VzRhU2luWktJMHZTbTJzM3B5Z0VxUnFwQ3FrdHFuZW9QCk5DNW94bXI1YWp0dTBkRlIx
QlhSSTIvRjZLUDFad3krR1U0YlRXNGJNWjQxbWR6KzNReGx6bVhCczJPVHBlN09uVlkyMW9FMkIy
M3oKN083YXYzQjQ1N2pzek9XaTZHcnBGckxyM081NjkxRVAxcjFLbm41ZXVkNjFQbC85cFAyOUEz
SUNPL2NKQk5rSDU5SEhRcVhDSXNLYgpJZ1FQaEVVMkh4STluQm8xY2RRNXVqRldMYTR3bm53ODlR
VDVaSFlTYjNKZWltcnF5elR2OUorWktWbnEyWi9PWHN3Tk9HOS9VZm95ClUvN1VsYWVGRmRmTzNV
aTQ1WG5icmRUNGprYTVTb1hDZmZrSFVqWGlqNlJxbFo3b1BkdGViLzJjMWhUU2t0NTZ1ZTFoKzBB
SG8wdTQKUjZmWHF5OTVvUHI5MUFlK1R3YWpNZVBYSno5KzRmL3FNM054Ym1SQmFqRm9xWElWWVRB
QWdCbElJQWdHNEF4cFVBYXYxKzJ2dTE5VApqeUZpbkRIZm1ZeVpjbjk1WDhXNnNRaXp4TE5Nc3Rx
eDF1SGtjZWZaQ0d5eGJBdjRJUHdZdXhmQmcvQ0I2RU9jSW9XUlZqZ1N5UlJ5CklhYzZaek9YTzlj
Q2Q5cmZwaTM1NW41NXRoSkNoQ3ArV2JaZWsvekxjWVMwd1orR2Z3dis1ZmUxWnAxVzJXKzd2K1gr
dTl2L3BOWjMKeUo4M3dPcWZhaU42LytrMjd1YWZjazl0L2kwM20zbmQ3Z1hOZGIxWE05ZjlGcFBY
QlpkWHJSdXVPYmFtK0VudnV1T204WmFrRjMrMQpacjlzZnhYeFdyQ2pvWlBlVmRhZDBOUFlHOUVu
MFI4NFlEU1lOS1EzZk9MRDNvL0ZuK1pIT3NhRXh3TW5UQ2VscHJDZkhiNFVUU2Q4CjlmMjJmVVpt
bG0zMnk5eXI3K1h6MlF0MkMxTS80aGNOZmtyK0hGbUtYdVpkdnJqQ3NSSy9zckI2bFpITVlBQ3N6
VXNBQUlBekRLWUYKaDFJdERJMyt5M0QzdjY1OXRQM3I3MEFBQU84ZFpHOExBR1FBMkFDR0VBdzBD
SVpRb0lJRkdJSVJ3TnFzQmdEQVRBSTQ3d2dBVVB2agpjTXcvbnh2dUhSa09BR0FZVEQ4WTZ1L3JG
MDdWcDlOcDNuSlUweUJQQlRucVppVWxEZmcvR0NUK093UUF2Sm9BQUFDbVNVUkJWQmlWCmJjK3hE
WVF3REFWUU8wcWN4RVVhaEJpQkRyRmloa2laS1pnQ1pRbGFLaWloQUZFY3lwMU8vcDMxWkgwYlUw
b2dSU3VsK3I0WG9HbWEKdG0wRllHYm5uQUFBb0pRUzRMN3Y2N3Jxdk8vN05FM0xzdWpqT003enJG
QktpVEVpb2piR0VGR0ZkVjBSRVFCMENNRmFXMkVjeDdlRAppTHozRllaaG1PZDUyemJ0bkdQbUNz
emNkUjBBYUd2dGI4ZjNYQ0l5eGdpQWlKOHovaUw4L0c3a25FVjRBSkhSSnFuaFlac25BQUFBCkFF
bEZUa1N1UW1DQ0FBQUFBQUFBQUFBQUFBQUFBQUFBaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFn
QUFBQVFDQUlBQUFDazZLa3EKQUFBTkZtbERRMUJKUTBNZ1VISnZabWxzWlFBQWVKeVYxM2swbFAz
N0IvRHJuaG1HTVdiR1lHeGhaTitWblpBbHNpVDdYcEtkaWJFawpsYklraGNnU2lqYUtOcUZFb3FK
NnlKSWtXWklsS25zcFJMTE03dzk1NnZlYzgzeS81L3Y1NjdxdmMrNzcvdHozT2EvMzUxd0FSTHdI
Cm5VNURBY0Mrb1BCUUd4TURxcE96Q3hYYkF3Z2dRQUUxb0hoNGh0SDFyYXdzNEYvWGZCY2dBQUFk
OGg1ME9pMnhWcjg0UnhCM2t2U1oKR01EM1JLTGszKzhEQUFCQ3FKT3pDd0FpQndCY3ZtdjFWZ0Rn
MnJ0VzJ3RUExNEZ3ZWpnQTRnY0FYSjUrSGw0QVNCUUF5SVhhMlJnQwpJTmNCZ09DN1ZsY0JBR0h2
V3QwSUFJUUlUOTl3QUtRSGdKa2M1T1VmQklDZEFtRFc5ZklPOHdRZ3lBR0FsMWVZNXo0QVFob0FL
T3piCkYrd0ZRS2dEQUNsUGVtZzRBR0VNQU1TY25GMm9hMXQyVFFKUTRRTmdNZi9kTzVBRlVKRVBJ
TFhqZDAvMFBnREZBNkFnNVhkdjFnWVEKQUVBb2JXRSt5cHNCQUFEQkd3QXdEVEFZc3hJQTJBeUFs
WFFHWTZtQXdWaTVBb0R1QTZpamVlNFBqZmoxdnhDa0ZlQy9YYTk5ODYrRgpSZ0JRQUlnWVVvUTZo
STdDUkRFZFpZN0J4ckVjWXpWaXJjZWRZRHVKVDJRL1JhZ2srWEdrazlNNU03ak9jR2RSc25oeWVP
djVnd1h5Ck51UUpYaEJxcE80WEtkaDRSYlJOL0xCRWtXUzc5RkdaVzdKZDhuRUt0eFY3TjUzWWZG
ZDVVUFdVV3FYNmtHYXFWclgyaUU2bTdtTzkKQ2Yxc2c2ZUdYN2JsR2plWXpKaGVNbXMybjk5UllQ
bHk1eXVyVjlidE5zdDJOKzA3SGJvY3U1MTZYREN1ZDl6NmR2WHZIbkFmM1BOKwpMOTd6Z2RkSDcw
OCtJNzZqZm1QKzQ0SGN0Q2Y3UGdkOUNaNm1mdzM1RmpvVE5oYyt0Lzk3eFB5QmhjZ2ZCeGNQL1R5
OEhMVjhaQ1ZhCk9xWXpEam1HaWtjZnh5UXduV0EraVUxa1NXSk54cDFpUzhHbnNwOG1wQkhUU1Jr
Y21lUXpuRmxjMmR3NWxMTTg1M2h6K2ZMNHp3dGMKMkhCUjhKTFFaZUY4YW9ISWxZMVhSUXZGaXNT
dlNWNlh2Q0YxVS9xV3pLM0pZdHB0dVJMNVVzVXlwVHViN200cTMzeFBwVUsxVXExeQovbjVFbGZv
RGpXcXRHdTJIV3g1dGVhenplTFUydWs3dnlkYW4rczhNL2pLc3g5VEhOMng3YnR4bzBtVGFiTnFD
YTBsK1lkNXE4ZEt5CmpkQjIrcFZWdS9Wcm13NXlSOFliMjA2N0x2dHVTbmRPaitOYnAxNlhkL3p2
OHZyYyt0MEdkZzBLRFY1Njd6NjBaMWhrdU9ERDNvK2UKbjd4R3hFZUtSbjNHZk1mOUpxUW5iazRH
VEFWK3BuMlIvMUl5SGZRMStCdDladFBNM2RuUXViRHY0Zk9xODVVTEVUOGlGdy8rUExpawp0VlN6
ZkhnbGFsVm45VEdEQVlDSW9naW9yK2dXekMybVRPWW9yQytMSGFzaFRvVk5FaS9Kemt2Z0lmS1Nl
RG00eVJLY1Vsd2EzQmFVCjNUeGh2S2w4cGZ3dEF1T0NuRUpxd3I3VXN5TFBSUkV4SGZFUWlUdVMw
OUpTTWpUWkdubTBncjVpdXRMUVptbmxCSlZ1TlJsMXVrYTkKRm85MjVKWVh1aFM5NEsxUERjUU1E
eHUxR3d1WlJHNS9aTHBvdnNuQ2UwZVdaYnNWd2RyRUp0SzIwTzZOQTg1eHExT0k4d1dYQnRmcApY
Y0s3ZDdvZjJsUGdVYjkzM0l2Ylc4L0h5ZmVvMzJYL3VvRCt3TVY5bkVHeXdVWjB2NUNvMExTd2d2
Q0svWTBSN3c1TVJNNGZRaC9tCmlLSWVrVHVxR3IwMXhqeDJaNXpyc1QzeDNzZHBDZUVuUWsvR0pN
WWtIVXRPUEpXUmtweWFlL3BjV2s1NmVzYjV6SXd6MlZsbnM2L24KWER0YmN1NTY3cTI4MHZNUEx6
eThXSC9weGVYMi9JNkNqaXNkVjk4VmZpd2F2VFo4L2RPTjZadmZiazBYZjdrOVV6SmRPbGsyZFdm
MAo3bEQ1OEwzZWl2YktwdnQxVmZjZmxGYWZyOGw0R1BObzMyUFhXdk82TFU5a25wS2ZMajU3LzFk
ei9iMkd6T2VoamJaTmFzMEN6WXlXCjNoZjNXcE5ldXJTSnRvMjhLbTgvOG5wYkI2R2ovODNsem9B
dTVhNlY3dGFlekxlN2VxVjdaOTlWOThYMW13OXdEUXdNM25nZk5xUTkKakJsdS9uRG00KzVQa3Ar
bVJxcEhZOGZNeHJuSCt5ZXVUdEttVktkV1B6ZDl5WmgyL1NyMmRlcGIrVXpVck1rY2VhN25lK0Y4
OElMbQpEL1NQNTR2cFAxMlhSSmMrTDFldXhLeWFNaWdNQmdBY1F5SlJoOURhNkdyTUVTWTlwbHJt
V094eEZtT1dldFlFM0FtMkpMd1p2b1U5CmhaQkNUQ1h0SkxWeHBKRXpPRE81TXJudHVOOVFzbm15
ZWMveTVmTG5DZVJ0T0Mvb0p0Z3ZkRW40TWpWZkpIOWp2dWdWc2F2aWhSSkYKa3Rla3JrdmZrUEdY
bVpDOUtWY3NmMXVoUkxGVXFXelRuYzEzbGN0VjdxbFdxbFdxVjJwRWF2elFyTmFxMXE3WjhsRG5r
ZTVSM1ZXOQoycTExK2s4TW5obytNNHJmaHRsV2I5eGc4bng3bzJtVFdiTjVzZ1hlNHNXT1ZzdVhP
OXVzMHF4SjF1MDJyMjA3N043WWR6bGtPMUljCnU1MTZuTis2OUxybXVRbTQ5ZTNxM3ozby9uN1Bl
NC84dlNKN2h6MC9lSDMwL3VSVDVDdXhsaUFCRTRHM2FISzBxZitYSXJOL3AwalYKUVkyRGk0ZCtI
bDZLV2o2eWNuUTFtaEVMY2FpL2t3UjdFcHZJa3RpVVpKYk1kZ3FmZ2s5bFAwMU1JNlZ6L0owbGxC
eWVzN3kvc21URApuMWxTTUh6Rjg2cG9vVmlSeERXSjlUUXBscnN0WDZMd1I1WW9WNmhVcXQ1WHIx
Si9vRkd0V2FQOVVQdlJsc2U2dGJwLzVNaTJCdVBuCnhvMG1UZHViVFZ2TVgwUzgzTmhtK2NxcTNl
cTFkY2VSVHBrdWgyN0hucmhleFhjdWZRa0R5b09KUTZyRHB6NTZqV2lQcG8vN1R3WjgKcGswSGYw
dWFjNWsvdlppOFlzTmdBS3lkZlFBQXpHb0EyYklBRHJrQXRnVUFDYklBa3U0QWxPc0FWdXdBZHBx
QVloSUNsQTRkRURPZAo5Zk1ERUNDQklDaUFBVGhER0tSQkdmeEFxSWc1RW9sY1IxNGlveWdpeWdR
VmkzcUVXa2Jyb0dQUkRlaGxqQWpHR1ZPRStjNWt6SFNjCnFaUnBtdG1FT1o5NUJNdU5kY00rWXNH
eWFMTEVzMHl5YXJFR3M5Ymg1SEV4dUNvMkFsc3MyMXM4Rno0SVA4YStqZjBZK3hEQmcvQ1UKaUNi
NkVLZEkxcVJzMGdwSElzY01XWXRjeUtuT1djZzV6ZVhPdGNEdHoxMUprYVU4NS9IaHhmTGU1QlBu
TzhBM3gzOUJ3RVJnZHNObApRVEhCS0NGRXFFSTRnQ3BDN1JVNXMzSGp4aGhSb21pYldMcTR2UVMv
eExEa0xTbERxUnZTQmpJY01rT3k1WEluNU4wVWxCWHhpcU5LCmYyMHEyQnluN0tWaW9pcW54cW0y
ckQ2aWthTkowS3pUS3RQTzMzSkc1NlJ1dE42QnJTSDZOQU4vUXo4anYyMkJ4a0VtNGRzUG04YWIK
blRiUHM3aXhvOHF5YVdlZjFUY2JySzJRbllhOXJRUGRNZFdweFBtVnk2d2I3eTdkM1Q3dWFYdHFQ
TVk4ZWJ4TXZBLzZGUHZ6QmxnRgpKdEhxZzFEQit2VFlrR2Roek9IbSt6TWl4UTRHSDNvWWhUdmlj
clE0bWhGckY0ODY3cFp3L3lSbllraFNlMHBXNm1LYWUzcERwdUtaCjNKeXdzeDl5YmZQcUw1WmNG
cysvY0lXbmlIUXQ5UWJoNXVuYk9hV0NaVmZ2eWxjWVZiWlhlVHo0OW9qbmNYR2R3YlB3ZW1KRGNh
TloKUzFLci9NdjJWeEVkRFozMGJvR2V4ajZKL3A3QnBDRzlqOFVqWG1QQzQ3MmZIYVlwWDd0bmN1
ZmNGNllXSzVhaUdid01CZ0NnQUFjOApJQTE2NEFUN0lRdXFZQURCSWtxSU81S0sxQ0t6S0JtVU95
b1g5UVpOUk85QW4wSzNZdGd4T3pGWm1IZE1WQ1ovcGpLbUg4eUd6S2VaCjMyTEZzZnV4ejFqSUxG
NHNWYXhzckc2c0pUZ01iamZ1SGh1T3paT3RGcytOcCtOYjJXWFlVOWluQ0JhRVVpSTdNWmpZUmRw
S3VzcEIKNElqZ2VFYzJKdC9ocEhKbWNLNXloWEY5NWc3Z25xRFFLRE04NFR6enZJZjRFTDVUL1B6
OE53VTBCUm8yT0d3WUY0d1I0aE9xRkxZVwpucUFtaUVpSU5HNE1FdVVSZlN6bUtZNFhmeUlSSkNr
cytWb3FVZHBBZWtXbVJqWktUa2R1UWI1VzRhU2luWktJMHZTbTJzM3B5Z0VxClJxcENxa3RxbmVv
UE5DNW94bXI1YWp0dTBkRlIxQlhSSTIvRjZLUDFad3krR1U0YlRXNGJNWjQxbWR6KzNReGx6bVhC
czJPVHBlN08KblZZMjFvRTJCMjN6N083YXYzQjQ1N2pzek9XaTZHcnBGckxyM081NjkxRVAxcjFL
bm41ZXVkNjFQbC85cFAyOUEzSUNPL2NKQk5rSAo1OUhIUXFYQ0lzS2JJZ1FQaEVVMkh4STluQm8x
Y2RRNXVqRldMYTR3bm53ODlRVDVaSFlTYjNKZWltcnF5elR2OUorWktWbnEyWi9PClhzd05PRzkv
VWZveVUvN1VsYWVGRmRmTzNVaTQ1WG5icmRUNGprYTVTb1hDZmZrSFVqWGlqNlJxbFo3b1BkdGVi
LzJjMWhUU2t0NTYKdWUxaCswQUhvMHU0UjZmWHF5OTVvUHI5MUFlK1R3YWpNZVBYSno5KzRmL3FN
M054Ym1SQmFqRm9xWElWWVRBQWdCbElJQWdHNEF4cApVQWF2MSsydnUxOVRqeUZpbkRIZm1ZeVpj
bjk1WDhXNnNRaXp4TE5Nc3RxeDF1SGtjZWZaQ0d5eGJBdjRJUHdZdXhmQmcvQ0I2RU9jCklvV1JW
amdTeVJSeUlhYzZaek9YTzljQ2Q5cmZwaTM1NW41NXRoSkNoQ3ArV2JaZWsvekxjWVMwd1orR2Z3
dis1ZmUxWnAxVzJXKzcKditYK3U5di9wTlozeUo4M3dPcWZhaU42LytrMjd1YWZjazl0L2kwM20z
bmQ3Z1hOZGIxWE05ZjlGcFBYQlpkWHJSdXVPYmFtK0Vudgp1dU9tOFpha0YzKzFacjlzZnhYeFdy
Q2pvWlBlVmRhZDBOUFlHOUVuMFI4NFlEU1lOS1EzZk9MRDNvL0ZuK1pIT3NhRXh3TW5UQ2VsCnBy
Q2ZIYjRVVFNkODlmMjJmVVptbG0zMnk5eXI3K1h6MlF0MkMxTS80aGNOZmtyK0hGbUtYdVpkdnJq
Q3NSSy9zckI2bFpITVlBQ3MKelVzQUFJQXpES1lGaDFJdERJMyt5M0QzdjY1OXRQM3I3MEFBQU84
ZFpHOExBR1FBMkFDR0VBdzBDSVpRb0lJRkdJSVJ3TnFzQmdEQQpUQUk0N3dnQVVQdmpjTXcvbnh2
dUhSa09BR0FZVEQ4WTZ1L3JGMDdWcDlOcDNuSlUweUJQQlRucVppVWxEZmcvR0NUK093UUF2Sm9B
CkFBQ2dTVVJCVkJpVmJjOGhEb1V3REFiZ2x0ZTFCWUhEb0dkbTVuYTEzV1IrUjhJUkxvQUJRYmpB
ZTRLd3ZHVDdWYk92NlZwTUtVRXIKNUp5clg3ZHRvMm1hYWpqUGsxUzFobUVZcU91NjVoK2YrNzcz
ZlovbldVUytiNDdqd0tmS09ZY1FTdnU2cmdRQWlIaGRGek1YTU1iUQpVM252UmFUQU9JNjBMSXVx
V212N3ZpL0F6R1N0clZkU1Zmb2ZYU0lpWkl5cGdaa0pFV3RBeFBiWkFJQXh4aWI4QUU3Rkxld1ph
cWQ1CkFBQUFBRWxGVGtTdVFtQ0NBQUFBQUFDSlVFNUhEUW9hQ2dBQUFBMUpTRVJTQUFBQUNBQUFB
QkFJQWdBQUFLVG9xU29BQUEwV2FVTkQKVUVsRFF5QlFjbTltYVd4bEFBQjRuSlhYZVRTVS9mc0g4
T3VlR1lZeFpzWmdiR0ZrMzVXZGtDV3lKUHRla3AySnNTU1ZzaVNGeUJLSwpOb28yb1VTaW9ucklr
aVJaa2lVcWV5bEVzc3p2RDNucTk1enpmTC9uKy9ucnVxOXo3dnYrM1BjNXIvZm5YQUJFdkFlZFRr
TUJ3TDZnCjhGQWJFd09xazdNTEZkc0RDQ0JBQVRXZ2VIaUcwZld0ckN6Z1g5ZDhGeUFBQUIzeUhu
UTZMYkZXdnpoSEVIZVM5SmtZd1BkRW91VGYKN3dNQUFFS29rN01MQUNJSEFGeSthL1ZXQU9EYXUx
YmJBUURYZ1hCNk9BRGlCd0Jjbm40ZVhnQklGQURJaGRyWkdBSWcxd0dBNEx0VwpWd0VBWWU5YTNR
Z0FoQWhQMzNBQXBBZUFtUnprNVI4RWdKMENZTmIxOGc3ekJDRElBWUNYVjVqblBnQkNHZ0FvN05z
WDdBVkFxQU1BCktVOTZhRGdBWVF3QXhKeWNYYWhyVzNaTkFsRGhBMkF4LzkwN2tBVlFrUThndGVO
M1QvUStBTVVEb0NEbGQyL1dCaEFBUUNodFlUN0sKbXdFQUFNRWJBREFOTUJpekVnRFlESUNWZEFa
anFZREJXTGtDZ080RHFLTjU3ZytOK1BXL0VLUVY0TDlkcjMzenI0VkdBRkFBaUJoUwpoRHFFanNK
RU1SMWxqc0hHc1J4ak5XS3R4NTFnTzRsUFpEOUZxQ1Q1Y2FTVDB6a3p1TTV3WjFHeWVISjQ2L21E
QmZJMjVBbGVFR3FrCjdoY3AySGhGdEUzOHNFU1JaTHYwVVpsYnNsM3ljUXEzRlhzM25kaDhWM2xR
OVpSYXBmcVFacXBXdGZhSVRxYnVZNzBKL1d5RHA0WmYKdHVVYU41ak1tRjR5YXphZjMxRmcrWExu
SzZ0WDF1MDJ5M1kzN1RzZHVoeTduWHBjTUs1MzNQcDI5ZThlY0IvYzgzNHYzdk9CMTBmdgpUejRq
dnFOK1kvN2pnZHkwSi9zK0IzMEpucVovRGZrV09oTTJGejYzLzN2RS9JR0Z5QjhIRncvOVBMd2N0
WHhrSlZvNnBqTU9PWWFLClJ4L0hKRENkWUQ2SlRXUkpZazNHbldKTHdhZXlueWFrRWROSkdSeVo1
RE9jV1Z6WjNEbVVzenpuZUhQNTh2alBDMXpZY0ZId2t0QmwKNFh4cWdjaVZqVmRGQzhXS3hLOUpY
cGU4SVhWVCtwYk1yY2xpMm0yNUV2bFN4VEtsTzV2dWJpcmZmRStsUXJWU3JYTCtma1NWK2dPTgph
cTBhN1lkYkhtMTVyUE40dFRhNlR1L0oxcWY2end6K01xekgxTWMzYkh0dTNHalNaTnBzMm9KclNY
NWgzbXJ4MHJLTjBIYjZsVlc3CjlXdWJEbkpIeGh2YlRyc3UrMjVLZDA2UDQxdW5YcGQzL08veSt0
ejYzUVoyRFFvTlhucnZQclJuV0dTNDRNUGVqNTZmdkViRVI0cEcKZmNaOHgvMG1wQ2R1VGdaTUJY
Nm1mWkgvVWpJZDlEWDRHMzFtMDh6ZDJkQzVzTy9oODZyemxRc1JQeUlYRC80OHVLUzFWTE44ZUNW
cQpWV2YxTVlNQmdJaWlDS2l2NkJiTUxhWk01aWlzTDRzZHF5Rk9oVTBTTDhuT1MrQWg4cEo0T2Jq
SkVweFNYQnJjRnBUZFBHRzhxWHlsCi9DMEM0NEtjUW1yQ3Z0U3pJczlGRVRFZDhSQ0pPNUxUMGxJ
eU5Oa2FlYlNDdm1LNjB0Qm1hZVVFbFc0MUdYVzZScjBXajNia2xoZTYKRkwzZ3JVOE54QXdQRzdV
YkM1bEVibjlrdW1pK3ljSjdSNVpsdXhYQjJzUW0wcmJRN28wRHpuR3JVNGp6QlpjRzErbGR3cnQz
dWgvYQpVK0JSdjNmY2k5dGJ6OGZKOTZqZlpmKzZnUDdBeFgyY1FiTEJSblMva0tqUXRMQ0M4SXI5
alJIdkRreEV6aDlDSCthSW9oNlJPNm9hCnZUWEdQSFpubk91eFBmSGV4MmtKNFNkQ1Q4WWt4aVFk
UzA0OGxaR1NuSnA3K2x4YVRucDZ4dm5NakRQWldXZXpyK2RjTzF0eTducnUKcmJ6Uzh3OHZQTHhZ
ZituRjVmYjhqb0tPS3gxWDN4VitMQnE5Tm56OTA0M3BtOTl1VFJkL3VUMVRNbDA2V1RaMVovVHVV
UG53dmQ2Swo5c3FtKzNWVjl4K1VWcCt2eVhnWTgyamZZOWRhODdvdFQyU2VrcDh1UG52L1YzUDl2
WWJNNTZHTnRrMXF6UUxOakpiZUYvZGFrMTY2CnRJbTJqYndxYnoveWVsc0hvYVAvemVYT2dDN2xy
cFh1MXA3TXQ3dDZwWHRuMzFYM3hmV2JEM0FOREF6ZWVCODJwRDJNR1c3K2NPYmoKN2srU242Wkdx
a2RqeDh6R3VjZjdKNjVPMHFaVXAxWS9OMzNKbUhiOUt2WjE2bHY1VE5Tc3lSeDVydWQ3NFh6d2d1
WVA5SS9uaStrLwpYWmRFbHo0dlY2N0VySm95S0F3R0FCeERJbEdIME5yb2Fzd1JKajJtV3VaWTdI
RVdZNVo2MWdUY0NiWWt2Qm0raFQyRmtFSk1KZTBrCnRYR2trVE00TTdreXVlMjQzMUN5ZWJKNXov
TGw4dWNKNUcwNEwrZ20yQzkwU2ZneU5WOGtmMk8rNkJXeHErS0ZFa1dTMTZTdVM5K1EKOFplWmtM
MHBWeXgvVzZGRXNWU3BiTk9kelhlVnkxWHVxVmFxVmFwWGFrUnEvTkNzMXFyV3J0bnlVT2VSN2xI
ZFZiM2FyWFg2VHd5ZQpHajR6aXQrRzJWWnYzR0R5Zkh1amFaTlpzM215QmQ3aXhZNVd5NWM3MjZ6
U3JFblc3VGF2YlR2czN0aDNPV1E3VWh5N25YcWMzN3IwCnV1YTVDYmoxN2VyZlBlaitmczk3ai95
OUludUhQVDk0ZmZUKzVGUGtLN0dXSUFFVGdiZG9jclNwLzVjaXMzK25TTlZCallPTGgzNGUKWG9w
YVBySnlkRFdhRVF0eHFMK1RCSHNTbThpUzJKUmtsc3gyQ3ArQ1QyVS9UVXdqcFhQOG5TV1VISjZ6
dkwreVpNT2ZXVkl3Zk1YegpxbWloV0pIRU5ZbjFOQ21XdXkxZm92QkhsaWhYcUZTcTNsZXZVbitn
VWExWm8vMVErOUdXeDdxMXVuL2t5TFlHNCtmR2pTWk4yNXROClc4eGZSTHpjMkdiNXlxcmQ2clYx
eDVGT21TNkhic2VldUY3RmR5NTlDUVBLZzRsRHFzT25QbnFOYUkrbWovdFBCbnltVFFkL1M1cHoK
bVQrOW1MeGl3MkFBckoxOUFBRE1hZ0Rac2dBT3VRQzJCUUFKc2dDUzdnQ1U2d0JXN0FCMm1vQmlF
Z0tVRGgwUU01MzE4d01RSUlFZwpLSUFCT0VNWXBFRVovRUNvaURrU2lWeEhYaUtqS0NMS0JCV0xl
b1JhUnV1Z1k5RU42R1dNQ01ZWlU0VDV6bVRNZEp5cGxHbWEyWVE1Cm4za0V5NDExd3o1aXdiSm9z
c1N6VExKcXNRYXoxdUhrY1RHNEtqWUNXeXpiV3p3WFBnZy94cjZOL1JqN0VNR0Q4SlNJSnZvUXAw
alcKcEd6U0NrY2l4d3haaTF6SXFjNVp5RG5ONWM2MXdPM1BYVW1ScFR6bjhlSEY4dDdrRStjN3dE
ZkhmMEhBUkdCMncyVkJNY0VvSVVTbwpRamlBS2tMdEZUbXpjZVBHR0ZHaWFKdFl1cmk5QkwvRXNP
UXRLVU9wRzlJR01od3lRN0xsY2lmazNSU1VGZkdLbzBwL2JTcllIS2ZzCnBXS2lLcWZHcWJhc1Bx
S1JvMG5Rck5NcTA4N2Zja2JucEc2MDNvR3RJZm8wQTM5RFB5Ty9iWUhHUVNiaDJ3K2J4cHVkTnMr
enVMR2oKeXJKcFo1L1ZOeHVzclpDZGhyMnRBOTB4MWFuRStaWExyQnZ2THQzZFB1NXBlMm84eGp4
NXZFeThEL29VKy9NR1dBVW0wZXFEVU1INgo5TmlRWjJITTRlYjdNeUxGRGdZZmVoaUZPK0p5dERp
YUVXc1hqenJ1bG5EL0pHZGlTRko3U2xicVlwcDdla09tNHBuY25MQ3pIM0p0Cjgrb3ZsbHdXejc5
d2hhZUlkQzMxQnVIbTZkczVwWUpsVisvS1Z4aFZ0bGQ1UFBqMmlPZHhjWjNCcy9CNllrTnhvMWxM
VXF2OHkvWlgKRVIwTm5mUnVnWjdHUG9uK25zR2tJYjJQeFNOZVk4TGp2WjhkcGlsZnUyZHk1OXdY
cGhZcmxxSVp2QXdHQUtBQUJ6d2dEWHJnQlBzaApDNnBnQU1FaVNvZzdrb3JVSXJNb0daUTdLaGYx
QmsxRTcwQ2ZRcmRpMkRFN01WbVlkMHhVSm4rbU1xWWZ6SWJNcDVuZllzV3grN0hQCldNZ3NYaXhW
ckd5c2Jxd2xPQXh1Tis0ZUc0N05rNjBXejQybjQxdlpaZGhUMktjSUZvUlNJanN4bU5oRjJrcTZ5
a0hnaU9CNFJ6WW0KMytHa2NtWndybktGY1gzbUR1Q2VvTkFvTXp6aFBQTzhoL2dRdmxQOC9QdzNC
VFFGR2pZNGJCZ1hqQkhpRTZvVXRoYWVvQ2FJU0lnMApiZ3dTNVJGOUxPWXBqaGQvSWhFa0tTejVX
aXBSMmtCNlJhWkdOa3BPUjI1QnZsYmhwS0tka29qUzlLYmF6ZW5LQVNwR3FrS3FTMnFkCjZnODBM
bWpHYXZscU8yN1IwVkhVRmRFamI4WG9vL1ZuREw0WlRodE5iaHN4bmpXWjNQN2RER1hPWmNHelk1
T2w3czZkVmpiV2dUWUgKYmZQczd0cS9jSGpudU96TTVhTG9hdWtXc3V2YzducjNVUS9XdlVxZWZs
NjUzclUrWC8yay9iMERjZ0k3OXdrRTJRZm4wY2RDcGNJaQp3cHNpQkErRVJUWWZFajJjR2pWeDFE
bTZNVll0cmpDZWZEejFCUGxrZGhKdmNsNkthdXJMTk8vMG41a3BXZXJabjg1ZXpBMDRiMzlSCitq
SlQvdFNWcDRVVjE4N2RTTGpsZWR1dDFQaU9ScmxLaGNKOStRZFNOZUtQcEdxVm51ZzkyMTV2L1p6
V0ZOS1MzbnE1N1dIN1FBZWoKUzdoSHA5ZXJMM21nK3YzVUI3NVBCcU14NDljblAzN2gvK296YzNG
dVpFRnFNV2lwY2hWaE1BQ0FHVWdnQ0FiZ0RHbFFCcS9YN2ErNwpYMU9QSVdLY01kK1pqSmx5ZjNs
ZnhicXhDTFBFczB5eTJySFc0ZVJ4NTlrSWJMRnNDL2dnL0JpN0Y4R0Q4SUhvUTV3aWhaRldPQkxK
CkZISWhwenBuTTVjNzF3SjMydCttTGZubWZubTJFa0tFS241WnRsNlQvTXR4aExUQm40Wi9DLzds
OTdWbW5WYlpiN3UvNWY2NzIvK2sKMW5mSW56ZkE2cDlxSTNyLzZUYnU1cDl5VDIzK0xUZWJlZDN1
QmMxMXZWY3oxLzBXazljRmwxZXRHNjQ1dHFiNFNlKzY0NmJ4bHFRWApmN1ZtdjJ4L0ZmRmFzS09o
azk1VjFwM1EwOWdiMFNmUkh6aGdOSmcwcERkODRzUGVqOFdmNWtjNnhvVEhBeWRNSjZXbXNKOGR2
aFJOCkozejEvYlo5Um1hV2JmYkwzS3Z2NWZQWkMzWUxVei9pRncxK1N2NGNXWXBlNWwyK3VNS3hF
cit5c0hxVmtjeGdBS3pOU3dBQWdETU0KcGdXSFVpME1qZjdMY1BlL3JuMjAvZXZ2UUFBQTd4MWti
d3NBWkFEWUFJWVFERFFJaGxDZ2dnVVlnaEhBMnF3R0FNQk1Bamp2Q0FCUQorK053ekQrZkcrNGRH
UTRBWUJoTVB4anE3K3NYVHRXbjAybmVjbFRUSUU4Rk9lcG1KU1VOK0Q4WUpQNDdCQUM4bWdBQUFL
UkpSRUZVCkdKVnR6ejBLaERBUUJlQk1kakw1VVd3a2hXREExZ3Q2azF3cnZaVUgwRUlFSWJIWnJU
WUl5U3ZuZ3pjODhONnpXbkNlNS9LNnJpdGEKYTBzNGpnT1ZVaVVZWTVCelh2M3hPYzl6MjdaaEdM
VFczMy8yZmVmak9EN1BFMEpJcjhRWWNacW0rNzVUU2tTVWU0UVE2Snk3cnF0dApXeWxsaHE3cnNP
OTc1MXpUTkZyckRFUlVINmlVd25kMWpwUVNoUkFsRUJFQ1FBa0FVSi9OR0lObFdhcndBdzJHT3dF
Vi94TEhBQUFBCkFFbEZUa1N1UW1DQ0FJbFFUa2NOQ2hvS0FBQUFEVWxJUkZJQUFBQUlBQUFBRUFn
Q0FBQUFwT2lwS2dBQURSWnBRME5RU1VORElGQnkKYjJacGJHVUFBSGljbGRkNU5KVDkrd2Z3NjU0
WmhqRm14bUJzWVdUZmxaMlFKYklrKzE2U25ZbXhKSld5SklYSUVvbzJpamFoUktLaQplc2lTSkZt
U0pTcDdLVVN5ek84UGVlcjNuUE44ditmNytldTZyM1B1Ky83Yzl6bXY5K2RjQUVTOEI1MU9Rd0hB
dnFEd1VCc1RBNnFUCnN3c1Yyd01JSUVBQk5hQjRlSWJSOWEyc0xPQmYxM3dYSUFBQUhmSWVkRG90
c1ZhL09FY1FkNUwwbVJqQTkwU2k1Ti92QXdBQVFxaVQKc3dzQUlnY0FYTDVyOVZZQTROcTdWdHNC
QU5lQmNIbzRBT0lIQUZ5ZWZoNWVBRWdVQU1pRjJ0a1lBaURYQVlEZ3UxWlhBUUJoNzFyZApDQUNF
Q0UvZmNBQ2tCNENaSE9UbEh3U0FuUUpnMXZYeUR2TUVJTWdCZ0pkWG1PYytBRUlhQUNqczJ4ZnNC
VUNvQXdBcFQzcG9PQUJoCkRBREVuSnhkcUd0YmRrMENVT0VEWURILzNUdVFCVkNSRHlDMTQzZFA5
RDRBeFFPZ0lPVjNiOVlHRUFCQUtHMWhQc3FiQVFBQXdSc0EKTUEwd0dMTVNBTmdNZ0pWMEJtT3Bn
TUZZdVFLQTdnT29vM251RDQzNDliOFFwQlhndjEydmZmT3ZoVVlBVUFDSUdGS0VPb1NPd2tReApI
V1dPd2NheEhHTTFZcTNIbldBN2lVOWtQMFdvSlBseHBKUFRPVE80em5CblViSjRjbmpyK1lNRjhq
YmtDVjRRYXFUdUZ5blllRVcwClRmeXdSSkZrdS9SUm1WdXlYZkp4Q3JjVmV6ZWQySHhYZVZEMWxG
cWwrcEJtcWxhMTlvaE9wdTVqdlFuOWJJT25obCsyNVJvM21NeVkKWGpKck5wL2ZVV0Q1Y3VjcnEx
Zlc3VGJMZGpmdE94MjZITHVkZWx3d3JuZmMrbmIxN3g1d0g5enpmaS9lODRIWFIrOVBQaU8rbzM1
agovdU9CM0xRbit6NEhmUW1lcG44TitSWTZFellYUHJmL2U4VDhnWVhJSHdjWEQvMDh2QnkxZkdR
bFdqcW1NdzQ1aG9wSEg4Y2tNSjFnClBvbE5aRWxpVGNhZFlrdkJwN0tmSnFRUjAwa1pISm5rTTV4
WlhObmNPWlN6UE9kNGMvbnkrTThMWE5od1VmQ1MwR1hoZkdxQnlKV04KVjBVTHhZckVyMGxlbDd3
aGRWUDZsc3l0eVdMYWJia1MrVkxGTXFVN20rNXVLdDk4VDZWQ3RWS3RjdjUrUkpYNkE0MXFyUnJ0
aDFzZQpiWG1zODNpMU5ycE83OG5XcC9yUERQNHlyTWZVeHpkc2UyN2NhTkprMm16YWdtdEpmbUhl
YXZIU3NvM1FkdnFWVmJ2MWE1c09ja2ZHCkc5dE91eTc3YmtwM1RvL2pXNmRlbDNmODcvTDYzUHJk
Qm5ZTkNnMWVldTgrdEdkWVpMamd3OTZQbnArOFJzUkhpa1o5eG56SC9TYWsKSjI1T0Jrd0ZmcVo5
a2Y5U01oMzBOZmdiZldiVHpOM1owTG13NytIenF2T1ZDeEUvSWhjUC9qeTRwTFZVczN4NEpXcFZa
L1V4Z3dHQQppS0lJcUsvb0Zzd3Rwa3ptS0t3dml4MnJJVTZGVFJJdnljNUw0Q0h5a25nNXVNa1Nu
RkpjR3R3V2xOMDhZYnlwZktYOExRTGpncHhDCmFzSysxTE1pejBVUk1SM3hFSWs3a3RQU1VqSTAy
UnA1dElLK1lyclMwR1pwNVFTVmJqVVpkYnBHdlJhUGR1U1dGN29VdmVDdFR3M0UKREE4YnRSc0xt
VVJ1ZjJTNmFMN0p3bnRIbG1XN0ZjSGF4Q2JTdHREdWpRUE9jYXRUaVBNRmx3Ylg2VjNDdTNlNkg5
cFQ0RkcvZDl5TAoyMXZQeDhuM3FOOWwvN3FBL3NERmZaeEJzc0ZHZEwrUXFOQzBzSUx3aXYyTkVl
OE9URVRPSDBJZjVvaWlIcEU3cWhxOU5jWThkbWVjCjY3RTk4ZDdIYVFuaEowSlB4aVRHSkIxTFRq
eVZrWktjbW52NlhGcE9lbnJHK2N5TU05bFpaN092NTF3N1czTHVldTZ0dk5MekR5ODgKdkZoLzZj
WGw5dnlPZ280ckhWZmZGWDRzR3IwMmZQM1RqZW1iMzI1TkYzKzVQVk15WFRwWk5uVm45TzVRK2ZD
OTNvcjJ5cWI3ZFZYMwpINVJXbjYvSmVCanphTjlqMTFyenVpMVBaSjZTbnk0K2UvOVhjLzI5aHN6
bm9ZMjJUV3JOQXMyTWx0NFg5MXFUWHJxMGliYU52Q3B2ClAvSjZXd2Voby8vTjVjNkFMdVd1bGU3
V25zeTN1M3FsZTJmZlZmZkY5WnNQY0EwTURONTRIemFrUFl3WmJ2NXc1dVB1VDVLZnBrYXEKUjJQ
SHpNYTV4L3Nucms3U3BsU25WajgzZmNtWWR2MHE5blhxVy9sTTFLekpISG11NTN2aGZQQ0M1Zy8w
aitlTDZUOWRsMFNYUGk5WApyc1NzbWpJb0RBWUFIRU1pVVlmUTJ1aHF6QkVtUGFaYTVsanNjUlpq
bG5yV0JOd0p0aVM4R2I2RlBZV1FRa3dsN1NTMWNhU1JNemd6CnVUSzU3YmpmVUxKNXNublA4dVh5
NXdua2JUZ3Y2Q2JZTDNSSitESTFYeVIvWTc3b0ZiR3I0b1VTUlpMWHBLNUwzNUR4bDVtUXZTbFgK
TEg5Ym9VU3hWS2xzMDUzTmQ1WExWZTZwVnFwVnFsZHFSR3I4MEt6V3F0YXUyZkpRNTVIdVVkMVZ2
ZHF0ZGZwUERKNGFQak9LMzRiWgpWbS9jWVBKOGU2TnBrMW16ZWJJRjN1TEZqbGJMbHp2YnJOS3NT
ZGJ0TnE5dE8remUySGM1WkR0U0hMdWRlcHpmdXZTNjVya0p1UFh0CjZ0ODk2UDUrejN1UC9MMGll
NGM5UDNoOTlQN2tVK1Fyc1pZZ0FST0J0Mmh5dEtuL2x5S3pmNmRJMVVHTmc0dUhmaDVlaWxvK3Nu
SjAKTlpvUkMzR292NU1FZXhLYnlKTFlsR1NXekhZS240SlBaVDlOVENPbGMveWRKWlFjbnJPOHY3
Smt3NTlaVWpCOHhmT3FhS0ZZa2NRMQppZlUwS1phN0xWK2k4RWVXS0Zlb1ZLcmVWNjlTZjZCUnJW
bWovVkQ3MFpiSHVyVzZmK1RJdGdiajU4YU5KazNibTAxYnpGOUV2TnpZClp2bktxdDNxdFhYSGtV
NlpMb2R1eDU2NFhzVjNMbjBKQThxRGlVT3F3NmMrZW8xb2o2YVArMDhHZktaTkIzOUxtbk9aUDcy
WXZHTEQKWUFDc25YMEFBTXhxQU5teUFBNjVBTFlGQUFteUFKTHVBSlRyQUZic0FIYWFnR0lTQXBR
T0hSQXpuZlh6QXhBZ2dTQW9nQUU0UXhpawpRUm44UUtpSU9SS0pYRWRlSXFNb0lzb0VGWXQ2aEZw
RzY2QmowUTNvWll3SXhobFRoUG5PWk14MG5LbVVhWnJaaERtZmVRVExqWFhEClBtTEJzbWl5eExO
TXNtcXhCclBXNGVSeE1iZ3FOZ0piTE50YlBCYytDRC9Hdm8zOUdQc1F3WVB3bElnbStoQ25TTmFr
Yk5JS1J5TEgKREZtTFhNaXB6bG5JT2MzbHpyWEE3YzlkU1pHbFBPZng0Y1h5M3VRVDV6dkFOOGQv
UWNCRVlIYkRaVUV4d1NnaFJLaENPSUFxUXUwVgpPYk54NDhZWVVhSm9tMWk2dUwwRXY4U3c1QzBw
UTZrYjBnWXlIREpEc3VWeUorVGRGSlFWOFlxalNuOXRLdGdjcCt5bFlxSXFwOGFwCnRxdytvcEdq
U2RDczB5clR6dDl5UnVla2JyVGVnYTBoK2pRRGYwTS9JNzl0Z2NaQkp1SGJENXZHbTUwMno3TzRz
YVBLc21sbm45VTMKRzZ5dGtKMkd2YTBEM1RIVnFjVDVsY3VzRys4dTNkMCs3bWw3YWp6R1BIbThU
THdQK2hUNzh3WllCU2JSNm9OUXdmcjAySkJuWWN6aAo1dnN6SXNVT0JoOTZHSVU3NG5LME9Kb1Jh
eGVQT3U2V2NQOGtaMkpJVW50S1Z1cGltbnQ2UTZiaW1keWNzTE1mY20zejZpK1dYQmJQCnYzQ0Zw
NGgwTGZVRzRlYnAyem1sZ21WWDc4cFhHRlcyVjNrOCtQYUk1M0Z4bmNHejhIcGlRM0dqV1V0U3Ev
ekw5bGNSSFEyZDlHNkIKbnNZK2lmNmV3YVFodlkvRkkxNWp3dU85bngybUtWKzdaM0xuM0JlbUZp
dVdvaG04REFZQW9BQUhQQ0FOZXVBRSt5RUxxbUFBd1NKSwppRHVTaXRRaXN5Z1psRHNxRi9VR1RV
VHZRSjlDdDJMWU1Uc3hXWmgzVEZRbWY2WXlwaC9NaHN5bm1kOWl4Ykg3c2M5WXlDeGVMRldzCmJL
eHVyQ1U0REc0MzdoNGJqczJUclJiUGphZmpXOWxsMkZQWXB3Z1doRklpT3pHWTJFWGFTcnJLUWVD
STRIaEhOaWJmNGFSeVpuQ3UKY29WeGZlWU80SjZnMENnelBPRTg4N3lIK0JDK1UvejgvRGNGTkFV
YU5qaHNHQmVNRWVJVHFoUzJGcDZnSm9oSWlEUnVEQkxsRVgwcwo1aW1PRjM4aUVTUXBMUGxhS2xI
YVFIcEZwa1kyU2s1SGJrRytWdUdrb3AyU2lOTDBwdHJONmNvQktrYXFRcXBMYXAzcUR6UXVhTVpx
CitXbzdidEhSVWRRVjBTTnZ4ZWlqOVdjTXZobE9HMDF1R3pHZU5abmMvdDBNWmM1bHdiTmprNlh1
enAxV050YUJOZ2R0OCt6dTJyOXcKZU9lNDdNemxvdWhxNlJheTY5enVldmRSRDlhOVNwNStYcm5l
dFQ1Zi9hVDl2UU55QWp2M0NRVFpCK2ZSeDBLbHdpTENteUlFRDRSRgpOaDhTUFp3YU5YSFVPYm94
VmkydU1KNThQUFVFK1dSMkVtOXlYb3BxNnNzMDcvU2ZtU2xaNnRtZnpsN01EVGh2ZjFINk1sUCsx
SlduCmhSWFh6dDFJdU9WNTI2M1UrSTVHdVVxRnduMzVCMUkxNG8ra2FwV2U2RDNiWG0vOW5OWVUw
cExlZXJudFlmdEFCNk5MdUVlbjE2c3YKZWFENi9kUUh2azhHb3pIajF5Yy9mdUgvNmpOemNXNWtR
V294YUtseUZXRXdBSUFaU0NBSUJ1QU1hVkFHcjlmdHI3dGZVNDhoWXB3eAozNW1NbVhKL2VWL0Z1
ckVJczhTelRMTGFzZGJoNUhIbjJRaHNzV3dMK0NEOEdMc1h3WVB3Z2VoRG5DS0ZrVlk0RXNrVWNp
R25PbWN6Cmx6dlhBbmZhMzZZdCtlWitlYllTUW9RcWZsbTJYcFA4eTNHRXRNR2ZobjhML3VYM3RX
YWRWdGx2dTcvbC9ydmIvNlRXZDhpZk44RHEKbjJvamV2L3BOdTdtbjNKUGJmNHRONXQ1M2U0RnpY
VzlWelBYL1JhVDF3V1hWNjBicmptMnB2aEo3N3JqcHZHV3BCZC90V2EvYkg4Vgo4VnF3bzZHVDNs
WFduZERUMkJ2Uko5RWZPR0EwbURTa04zeml3OTZQeFovbVJ6ckdoTWNESjB3bnBhYXdueDIrRkUw
bmZQWDl0bjFHClpwWnQ5c3ZjcSsvbDg5a0xkZ3RUUCtJWERYNUsvaHhaaWw3bVhiNjR3ckVTdjdL
d2VwV1J6R0FBck0xTEFBQ0FNd3ltQllkU0xReU4KL3N0dzk3K3VmYlQ5Nis5QUFBRHZIV1J2Q3dC
a0FOZ0FoaEFNTkFpR1VLQ0NCUmlDRWNEYXJBWUF3RXdDT084SUFGRDc0M0RNUDU4Ygo3aDBaRGdC
Z0dFdy9HT3J2NnhkTzFhZlRhZDV5Vk5NZ1R3VTU2bVlsSlEzNFB4Z2svanNFQUx5YUFBQUFxMGxF
UVZRWWxXM1BNUXFFClFBd0YwR1RJWkdaU2lDQ0NXTmhhV0h0VVM4L2dLYnlLSUlnSTAyaWgyQ3l6
QzV0MG4wZklEdzdEQU5xUU1hWnRXd1dLb2lqTFVnRVIKOGQ0ckFBREdHQVdlNTdudk8rVnQyNlpw
V3BhRnp2TzhyaXZCUE04eHhycXV5VnJMekFtTzQyaWFKb1JBV1pZNTV4SjBYUmRqelBPYwptRG1F
a0tEdiszVmQ5MzBuNzcySUpCQ1JxcW9BZ0p4enZ6ZStkWm5aV3FzQUlpTGlQeWcvZnpiR2NWVGhC
YnNFTENqcVl2VHVBQUFBCkFFbEZUa1N1UW1DQ0FBQUFBQUFBQUFBQUFJbFFUa2NOQ2hvS0FBQUFE
VWxJUkZJQUFBQU5BQUFBRGdnR0FBQUE5SCtXMGdBQUFkUnAKUTBOUVNVTkRJRkJ5YjJacGJHVUFB
SGljblpFL2FCTlJITWMvNzRLTnd4R3JuSjFhdkVHcVE1U2pHVm9YU1UxQVJJZlFwalRKZHIwNwpr
OE83Ni9QdUdnMjA0T2pzYkllaWc2RHVVcFZtRVVSeEVNVS91RG9LRGdWUnRKN0RNMlNRVVBBSER6
N2ZMN3ozKzczdkQzS1dMV1dnCkFXR1V4Z3ZuejVtTlpzdk12MGZuTURwampOdE9JdWRydFV1TXJH
L3ZFQUJ2VHRsU0J2ZUQ1dU9seFdkUDMvYS92UHp4NU91VjBmY0EKS01TTlpndEVFVERhaXN1QXNh
SzREaGpYVXBtQzZBQ0cwN0ZkRU90QU1hNHZWRURjQXdwdHhZK0F3b3JpNTBDaDY3UlRFQjhBSzNM
OQpDTFNEd0p6ckpRNW9aY0IzRXljRTdRRXdGNGFyTG1pZmdaT09qRlBJNmNEeFJyTmxxcEc3eCtE
c0NkQnVEcjFXREE5MzRPaXZvVGRkCkJXTVd0cmVHM3U0RUFoQVRMNUxMcFJrQWhCN0RnZTladGpz
RitXM1lpN1BzNTJhVzdkMkYzRWZvWDNYVzR1N2Z2SVI0QmZ0cDlXZWwKNFhVNm9GR3NjZ0hBZ2p0
OVdBWXUzb0RiWlpoZWhpT2ZvQWJVeTJpbDB1Q29EQUU0VlBFakw3VE5xcC9Jd083dHMvWC9xREJZ
Ry9RUwpnTzVGUzR2QUpEQkpCWjhJanhBYmt5bytDWklBbTU3YUo4RFlPTnlhMG43bk5uYnlaLzU1
UC9XdXB3Q1ZWZG1ML1hZbk5lZWxETHlpCmVTRnlUaGZOR2N1YTVROFZvb3EwanZuNUJBQUFBalpK
UkVGVUtKRmwwcjlMRzNFY3h2SDMzWDB2M24zUG5rZlNrQVF1Z2piR1FZdFEKcktCVEpnbjBYK2pl
cVZzUitnODQ5VC9Rd2FGUWRITW9kbkp5SzJReEhRUnB4UkRTYU9PSnlWMStYSExmTG0ydzlJSFA5
cnlHRHp3YQovMFpLS1pkMVhWL1FkZDFKa2lSTWt1UkhGRVVYUVBTM3BEMENUMzNmcjViTDVWZTVY
TzY1bE5LS29talFicmZQTHk4dlAxOWZYMzhCCmZqMUcyZlgxOVhmYjI5dXZOemMzcy9sODNqUk5r
emlPYVRhYjhkbloyZTNwNmVuSFdxMzJBYmcxQUhOMWRmVk50VnA5VzZsVWNxVlMKeVhBY2g1bVpH
V3piSnAxT0c2N3JQdEUwYmZuaDRhRjNjM1B6MVhCZDkyV2xVbm0vdExUMGJIWjJGaUVFazhtRU9J
NFpEQVlNaDBQQwpNQ1NPWTZtVXlqYWJ6WnJJWkRKcnZ1L1BTeW1Kb29oT3A0UGpPT2k2em1ReVlU
Z2MwdXYxa0ZKU0xCYm5YZGRkRTU3bjVRcUZncGliCm0wTktpV21hQ0NFd0RHTUtiZHRHS1VXaFVC
Q2U1K1dFcG1tRzUzbGFKcFBCY1J3c3l5S1ZTaUdFWUR3ZVk5czJ0bTBUaGlHajBValQKTk0wUVlS
amVBM0UybTBVSThSOGFqVWFrVWlta2xMUmFyVGdNdzN2UmFEUXU2dlg2MWRiV1ZscEtxUm1HZ1dW
WlV6UVlEUGp6cjZyWAo2MWVOUnVNQ3dDK1ZTcnRIUjBkMy9YNWZLYVZVa2lUVFUwcXBmcit2RGc4
UDd4WVhGM2NCSDhBQ05zcmw4c0hlM2w0ckNJSnBPVWtTCkZRU0IydC9mYjYyc3JCd0FHNEJsQUdN
ZzZIUTZWeWNuSjRGbFdRdmRibmZjN1hiSHRWcXRlM3g4M043WjJkbHJ0OXVmZ0c5QS8vSDIKTENB
RHZBQ0tRQjc0Q1h3SHpvRU9NQUQ0RGN5ekNCbm5kamY1QUFBQUFFbEZUa1N1UW1DQ0FJbFFUa2NO
Q2hvS0FBQUFEVWxJUkZJQQpBQUFOQUFBQURnZ0dBQUFBOUgrVzBnQUFBZFJwUTBOUVNVTkRJRkJ5
YjJacGJHVUFBSGljblpFL2FCTlJITWMvNzRLTnd4R3JuSjFhCnZFR3FRNVNqR1ZvWFNVMUFSSWZR
cGpUSmRyMDdrOE83Ni9QdUdnMjA0T2pzYkllaWc2RHVVcFZtRVVSeEVNVS91RG9LRGdWUnRKN0QK
TTJTUVVQQUhEejdmTDd6Mys3M3ZEM0tXTFdXZ0FXR1V4Z3ZuejVtTlpzdk12MGZuTURwampOdE9J
dWRydFV1TXJHL3ZFQUJ2VHRsUwpCdmVENXVPbHhXZFAzL2EvdlB6eDVPdVYwZmNBS01TTlpndEVF
VERhaXN1QXNhSzREaGpYVXBtQzZBQ0cwN0ZkRU90QU1hNHZWRURjCkF3cHR4WStBd29yaTUwQ2g2
N1JURUI4QUszTDlDTFNEd0p6ckpRNW9aY0IzRXljRTdRRXdGNGFyTG1pZmdaT09qRlBJNmNEeFJy
TmwKcXBHN3grRHNDZEJ1RHIxV0RBOTM0T2l2b1RkZEJXTVd0cmVHM3U0RUFoQVRMNUxMcFJrQWhC
N0RnZTladGpzRitXM1lpN1BzNTJhVwo3ZDJGM0Vmb1gzWFc0dTdmdklSNEJmdHA5V2VsNFhVNm9G
R3NjZ0hBZ2p0OVdBWXUzb0RiWlpoZWhpT2ZvQWJVeTJpbDB1Q29EQUU0ClZQRWpMN1ROcXAvSXdP
N3RzL1gvcURCWUcvUVNnTzVGUzR2QUpEQkpCWjhJanhBYmt5bytDWklBbTU3YUo4RFlPTnlhMG43
bk5uYnkKWi81NVAvV3Vwd0NWVmRtTC9YWW5OZWVsREx5aWVTRnlUaGZOR2N1YTVROFZvb3EwanZu
NUJBQUFBbDlKUkVGVUtKRlZrczlyMDJBQQpodC9rKzc3a1M5S21YYmQycmM1S3FXNFROc2FtTWll
TWVaS0IvNEozVDk2OCtCY0k0bTFIeFl1RDRVSHdzaWtPUElnZVJrVUdhNFdDCnVEcG4xN1dyNmEr
MFNmTWw4ZUNFK1o3ZjUvQzh2Qkwrajg2WVBrVlZPU2ZMc2hFRWdTM2NZTi96K21VQS9YOGw2UXd3
bHNwTXJHWnoKazNjU3lkUXM1d1ozSE52NTNhanYvVHI0dG5sMGVQQVd3TWxaS0hsbDd0cURwWlhi
ZDYvT3p5ZlBwWk5NWVJSRFQrQ3dldXdWQ3A4YgpPNSsyMTh0N3UwOEFOQWdBbHArZXViZDBhL1gr
OHMwYjQ1UDVMTkUxRGtWaDBMaUt4RWlNR0ZFejZrT1pzdTFPenpxcEY0aHBtdGZuCkYxY2VYc3hQ
NWlPR0Rrb0pnaUNBSndRY2R3alhIY0x1TzNCRnFBc2hrbzNxankvVU1PSnpxY3hFVnRjNCtnTUhU
YXNOUTljZ3l4SjgKUDREckR0SHQ5YUZySE9uejJheGh4T2NvTjZQanlWU0d4cUlSNkJvSG94U1VF
aEJaaGl3SEVNS0hydkcvNHFrTTVXWjBuRXBoU09LeAppRFE2RWtQRTBLQ3FDaFRHUUNtQkVENDBy
c0xRT1hyMkFJN3JTbElZRWpxd2U2MHdETHpVMkFnSUllQ3FBa1Zob0lSQStENkdRdzhPClk5QTFq
c09qbWpldyt5MWFyeDJYUzhWaVpYbHhJYUZyWENKRUJsY1ZVRW9oVHNjNDlRMUx4V0tsWGpzcWt6
RDBuV2E5bXNoZW5wMVoKbUozVzRtWUVpc0xBS0lXcUtJZ2FPaGlqMlA2dzA5cDR2dmF5MjdFMkNZ
QmhyOXV4U3NWZFU5TEgwcGR5MllpcUtwQWxDU0dBZHRmRworcXV0MnJPMXgxdlZuNVVYQVBZSkFB
SEE2clpibFkvdjMxaU9ITW0xT2dQUjd0cWlzUHUxKzNyejNmSGFvNGRQVzFaekEwQUp3T0RzCjl6
aUFVUUFMQUM0QVNBT29BZmdPWUE5QUU0QURBSDhBa2wzM2VzS1lVYVFBQUFBQVNVVk9SSzVDWUlJ
QUFBQUFBQUFBQUlsUVRrY04KQ2hvS0FBQUFEVWxJUkZJQUFBQVFBQUFBRUFnR0FBQUFIL1AvWVFB
QUFlZHBRME5RU1VORElGQnliMlpwYkdVQUFIZ0JyWkkvYUJSUgpFTWEvM1NNNWl5Ti9SRk1aM0NK
RWk0c3N1U0pKSXhmdlFNUVVSM0pCazI2enQ5NHQ3bTQydTV2VEF3VkxhMnN0Ukl0QWtsNWlRcTRS
ClJMRVF4VCtrVFNsWUJFVFJ1SDd2UGNJUlNFamp3TnYzbTI5bjV1M01XeUJqV21IbzZRRDhJSW1t
cjE0eGJzN05HOW5QeUtHZnF4dDkKbGgySGs1WEtGRU9Pc1IrZm9JbFhIMFpFclZWdjd1WHN6S3V0
aisxdmIzOXRmcjk5VE5LQjNCUHhRRURMVXpoVFYxd1V2S0M0S3ZoTwpFaWFNYVFpMkcxYU5mSStj
ajZyVEpmSUt1YWV1K0lYZ0JjV3ZCVGZ0dXNqOVFqYURtaHNBK2lueWVNMkpiWEtSN05aaTJ5ZXZr
Y2Q5CmY1SDE5VjN5UlR1TW1KdkprWWZFWExqVG11ZUJ5eGNZODdDanpVZkEralp3OWs5SEd5N3pj
OGVBamFjZGJXOUF6a29iZUJQZktveksKY2xxT3VWMC8wM1J2RU1odUFQdFJtdjUra3FiN3ozbjJW
NkM5WkM5SFRSbkxSclIzd0VtKzZsbFZCOTZ6QjVxOG82Tlp6VVZHbWNDegpObkNEenZVSHdPTWlN
RXpuOUE1UW9WWXRRaThVRHBhYUlXV2d0K1FHam04WlpUY09QYXNsdGYvNjhMMWwzcGMwMFVuT0NX
Wm51SitUCnF3UVhBUno0c0dDZ1RDOUdDSTllUzkybnlPdnVBeDRONm44ejk3ZXpFMEk0WklselY4
NnB0QmkySXJmZVNJeEovczFPM3JnVzJKZnkKeHFocGp1RWZGYUtLdFBLZ3N2QUFBQUFKY0VoWmN3
QUFDeE1BQUFzVEFRQ2FuQmdBQUFEc1NVUkJWRGdScFZPN0RZUXdESDFCNWx2UQpNUUlGUFdJU0pC
cm1ZQlBXb0tOa0FVUkR5UTRNQUFYY25Ua0ZHWTRxOXlTVHArZG5LekdKcXV2NmhUOUFTWklZbDAv
VEJJcWl5TGpCClBNOGd6L09NR3dSQkFPc0QvcHdSeHpFNFdPTjFITWN6SjMzTUdkYTJiWkNodDhN
YUk4OXpETU53OFdqL3Z1K3cxbldGRE4yQU5ZMmkKS05EMy9jWEgrV1ZaUUk3amFOOWx2ZXRsV1lL
bkxtSGJOc2gxWGFtZC9LNDNUWU83Rm9ZaHlQZjlzMGdTcWJkdGl6Uk5aZnJndkV2aQpYL0VFclhk
ZGh5ekxuaXpnSy9BekF6azh5Wjg2OEpHSUIyR0s0d2hLS2RONmNPMzNPaG0zQUZSVlZYODk1emZP
eEdhNkhIcnAvUUFBCkFBQkpSVTVFcmtKZ2dnQUFBSWxRVGtjTkNob0tBQUFBRFVsSVJGSUFBQUFR
QUFBQUVBZ0dBQUFBSC9QL1lRQUFBZWRwUTBOUVNVTkQKSUZCeWIyWnBiR1VBQUhnQnJaSS9hQlJS
RU1hLzNTTTVpeU4vUkZNWjNDSkVpNHNzdVNKSkl4ZnZRTVFVUjNKQmsyNnp0OTR0N200Mgp1NXZU
QXdWTGEyc3RSSXRBa2w1aVFxNFJSTEVReFQra1RTbFlCRVRSdUg3dlBjSVJTRWpqd052M20yOW41
dTNNV3lCaldtSG82UUQ4CklJbW1yMTR4YnM3Tkc5blB5S0dmcXh0OWxoMkhrNVhLRkVPT3NSK2Zv
SWxYSDBaRXJWVnY3dVhzekt1dGorMXZiMzl0ZnI5OVROS0IKM0JQeFFFRExVemhUVjF3VXZLQzRL
dmhPRWlhTWFRaTJHMWFOZkkrY2o2clRKZklLdWFldStJWGdCY1d2QlRmdHVzajlRamFEbWhzQQor
aW55ZU0ySmJYS1I3TlppMnlldmtjZDlmNUgxOVYzeVJUdU1tSnZKa1lmRVhMalRtdWVCeXhjWTg3
Q2p6VWZBK2padzlrOUhHeTd6CmM4ZUFqYWNkYlc5QXprb2JlQlBmS296S2NscU91VjAvMDNSdkVN
aHVBUHRSbXY1K2txYjd6M24yVjZDOVpDOUhUUm5MUnJSM3dFbSsKNmxsVkI5NnpCNXE4bzZOWnpV
VkdtY0N6Tm5DRHp2VUh3T01pTUV6bjlBNVFvVll0UWk4VURwYWFJV1dndCtRR2ptOFpaVGNPUGFz
bAp0Zi82OEwxbDNwYzAwVW5PQ1dabnVKK1Rxd1FYQVJ6NHNHQ2dUQzlHQ0k5ZVM5Mm55T3Z1QXg0
TjZuOHo5N2V6RTBJNFpJbHpWODZwCnRCaTJJcmZlU0l4Si9zMU8zcmdXMkpmeXhxaHBqdUVmRmFL
S3RQS2dzdkFBQUFBSmNFaFpjd0FBQ3hNQUFBc1RBUUNhbkJnQUFBRVEKU1VSQlZEZ1JZNHlNei8z
UFFDYjQvLzgvQTR1RmhUR1oyaGtZcmx5NXlzQWlLU2xPdGdIdjNyMWhZT0hsNFNiYkFENCtYZ1lt
SUFBUgpjT3pwWXNjQXdpQXhFSDN6eGpXNEhMSTZFQnNFbUw1OCs4R0FqR0hPQVltQlFFRk9Cc1Ba
YytkUTFNRFVmL3Z4azRIbDNZZVBNRDBvCk5MSjRWVWtlUTBWOUc0T3lxanFLbXJmdlBqSXdzYkt5
TWlCam1BcVFHRExvYUt4Q1VRZVNad0ZoSGg0ZVpIVndOcnA0Vys4VUJuUXgKQVg0K0JoWnVMazY0
Sm1RR3NuamZsTmtNbXRvNnlOSmdOZ2NIQjJFWFRKKzNoRUZIVng5RE0waUFsNWVIZ2ZIa2hSdGtK
K1VyMTY0eApzREN6TUdNMW5SaEJWcUJlWUVDU2J3QWJHekFXbUpraEtZb1lHOUhWTURFeE1yQXNt
alVOWFp3a1BnRFlabEhUazFhaEpRQUFBQUJKClJVNUVya0pnZ2dBQUFBQUFBQUFBQUFBQUFBQUFB
SWxRVGtjTkNob0tBQUFBRFVsSVJGSUFBQUFRQUFBQUVBZ0dBQUFBSC9QL1lRQUEKQWVkcFEwTlFT
VU5ESUZCeWIyWnBiR1VBQUhnQnJaSS9hQlJSRU1hLzNTTTVpeU4vUkZNWjNDSkVpNHNzdVNKSkl4
ZnZRTVFVUjNKQgprMjZ6dDk0dDdtNDJ1NXZUQXdWTGEyc3RSSXRBa2w1aVFxNFJSTEVReFQra1RT
bFlCRVRSdUg3dlBjSVJTRWpqd052M20yOW41dTNNCld5QmpXbUhvNlFEOElJbW1yMTR4YnM3Tkc5
blB5S0dmcXh0OWxoMkhrNVhLRkVPT3NSK2ZvSWxYSDBaRXJWVnY3dVhzekt1dGorMXYKYjM5dGZy
OTlUTktCM0JQeFFFRExVemhUVjF3VXZLQzRLdmhPRWlhTWFRaTJHMWFOZkkrY2o2clRKZklLdWFl
dStJWGdCY1d2QlRmdAp1c2o5UWphRG1oc0EraW55ZU0ySmJYS1I3TlppMnlldmtjZDlmNUgxOVYz
eVJUdU1tSnZKa1lmRVhMalRtdWVCeXhjWTg3Q2p6VWZBCitqWnc5azlIR3k3emM4ZUFqYWNkYlc5
QXprb2JlQlBmS296S2NscU91VjAvMDNSdkVNaHVBUHRSbXY1K2txYjd6M24yVjZDOVpDOUgKVFJu
TFJyUjN3RW0rNmxsVkI5NnpCNXE4bzZOWnpVVkdtY0N6Tm5DRHp2VUh3T01pTUV6bjlBNVFvVll0
UWk4VURwYWFJV1dndCtRRwpqbThaWlRjT1Bhc2x0Zi82OEwxbDNwYzAwVW5PQ1dabnVKK1Rxd1FY
QVJ6NHNHQ2dUQzlHQ0k5ZVM5Mm55T3Z1QXg0TjZuOHo5N2V6CkUwSTRaSWx6Vjg2cHRCaTJJcmZl
U0l4Si9zMU8zcmdXMkpmeXhxaHBqdUVmRmFLS3RQS2dzdkFBQUFBSmNFaFpjd0FBQ3hNQUFBc1QK
QVFDYW5CZ0FBQUQwU1VSQlZEZ1JwVks3cllRd0VCd2o4NVVnb3dRQ2FpQ2tDQkxxb0JQYUlLTUpF
a1FHUFpDUlFBRHZNZWhBZTdwNwppZDlLaThjN00ydXpzcXJyK2dmL0NKMm1xYkY5bWlib09JNk5H
OHp6RE8xNW5uR0RJQWhnbmNIUFJ3N0RnQ1JKcmpyWEcwc3RUOWI3CnZuL2NvTzk3RkVWeDFTVXZN
Y25qT0tDM2JYdHJ3SlBMc254cWtwZVlnblZkb1IzSGVjUUUwc3k5NUNVbVo5czJMTmQxSWJOcEdu
SlAKa0x0RDZvaWpLSUxsK3o1a1psbUd0bTF2ejhYZEc2a2o1bzNVc2l4ZlgyTFhkY2p6SENlUE1B
eXZIc1F5eG5HRU9nZnp0WUVVL29XdgpsOGhCbUFaL1FTdWxUUDJnMXpKMnY0eXFxaXJqR2JESEww
SmdUQ20wbVQ3L0FBQUFBRWxGVGtTdVFtQ0NBQUFBQUFBQUFBQUFBQUNKClVFNUhEUW9hQ2dBQUFB
MUpTRVJTQUFBQUVBQUFBQkFJQmdBQUFCL3ovMkVBQUFIbmFVTkRVRWxEUXlCUWNtOW1hV3hsQUFC
NEFhMlMKUDJnVVVSREd2OTBqT1lzamYwUlRHZHdpUkl1TExMa2lTU01YNzBERUZFZHlRWk51czdm
ZUxlNXVOcnViMHdNRlMydHJMVVNMUUpKZQpZa0t1RVVTeEVNVS9wRTBwV0FSRTBiaCs3ejNDRVVo
STQ4RGI5NXR2WitidHpGc2dZMXBoNk9rQS9DQ0pwcTllTVc3T3pSdlp6OGloCm42c2JmWllkaDVP
VnloUkRqckVmbjZDSlZ4OUdSSzFWYis3bDdNeXJyWS90YjI5L2JYNi9mVXpTZ2R3VDhVQkF5MU00
VTFkY0ZMeWcKdUNyNFRoSW1qR2tJdGh0V2pYeVBuSStxMHlYeUNybW5ydmlGNEFYRnJ3VTM3YnJJ
L1VJMmc1b2JBUG9wOG5qTmlXMXlrZXpXWXRzbgpyNUhIZlgrUjlmVmQ4a1U3akppYnlaR0h4Rnk0
MDVybmdjc1hHUE93bzgxSHdQbzJjUFpQUnhzdTgzUEhnSTJuSFcxdlFNNUtHM2dUCjN5cU15bkph
anJsZFA5TjBieERJYmdEN1VacitmcEttKzg5NTlsZWd2V1F2UjAwWnkwYTBkOEJKdnVwWlZRZmVz
d2VhdktPaldjMUYKUnBuQXN6WndnODcxQjhEaklqQk01L1FPVUtGV0xVSXZGQTZXbWlGbG9MZmtC
bzV2R1dVM0RqMnJKYlgvK3ZDOVpkNlhOTkZKemdsbQpaN2lmazZzRUZ3RWMrTEJnb0V3dlJnaVBY
a3ZkcDhqcjdnTWVEZXAvTS9lM3N4TkNPR1NKYzFmT3FiUVl0aUszM2tpTVNmN05UdDY0CkZ0aVg4
c2FvYVk3aEh4V2lpclR5b0xMd0FBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFCRGtsRVFW
UTRFV09Nak0vOXowQW0KK1AvL1B3T0xoWVV4bWRvWkdLNWN1Y3JBSWlrcFRyWUI3OTY5WVdEaDVl
RW0yd0ErUGw0R0ppQUFFUmo0NW8xckRKNHVkbUJ4RUExagpJNnNGMmN6eTVkc1BEQmVBTkZlVjVJ
SEZrZVdSMlNESmJ6OStNckM4Ky9BUnhZQzd0Mjh5ZERSV3djV1E1WkhaSUFWdjMzMWtZR0ZsClpZ
VXJCakdRTllQNHlQTEliSkFjVURNREV3OFBEd015YnV1ZEFwS0RBNUFjRENDckE3RUYrUGtZbUxp
NU9CbVFzYUdSTVVQZmxOa3cKUFdBNUdBZFpIWWpOd2NHQjZRS1F5YWJtRmd6VDV5MEI2OFBuQWw1
ZUhnYkdreGR1a0oyVXIxeTd4c0RDek1JTWN5SEpOQ3RRTHpBZwp5VGVBalkwVjZBSm1KcEp0aG1s
Z1ltSmtZRmswYXhxTVR4WU5BQjNWUkJiZnNlaU5BQUFBQUVsRlRrU3VRbUNDQUlsUVRrY05DaG9L
CkFBQUFEVWxJUkZJQUFBQVFBQUFBRUFnR0FBQUFIL1AvWVFBQUFlZHBRME5RU1VORElGQnliMlpw
YkdVQUFIZ0JyWkkvYUJSUkVNYS8KM1NNNWl5Ti9SRk1aM0NKRWk0c3N1U0pKSXhmdlFNUVVSM0pC
azI2enQ5NHQ3bTQydTV2VEF3VkxhMnN0Ukl0QWtsNWlRcTRSUkxFUQp4VCtrVFNsWUJFVFJ1SDd2
UGNJUlNFamp3TnYzbTI5bjV1M01XeUJqV21IbzZRRDhJSW1tcjE0eGJzN05HOW5QeUtHZnF4dDls
aDJICms1WEtGRU9Pc1IrZm9JbFhIMFpFclZWdjd1WHN6S3V0aisxdmIzOXRmcjk5VE5LQjNCUHhR
RURMVXpoVFYxd1V2S0M0S3ZoT0VpYU0KYVFpMkcxYU5mSStjajZyVEpmSUt1YWV1K0lYZ0JjV3ZC
VGZ0dXNqOVFqYURtaHNBK2lueWVNMkpiWEtSN05aaTJ5ZXZrY2Q5ZjVIMQo5VjN5UlR1TW1Kdkpr
WWZFWExqVG11ZUJ5eGNZODdDanpVZkEralp3OWs5SEd5N3pjOGVBamFjZGJXOUF6a29iZUJQZktv
ektjbHFPCnVWMC8wM1J2RU1odUFQdFJtdjUra3FiN3ozbjJWNkM5WkM5SFRSbkxSclIzd0VtKzZs
bFZCOTZ6QjVxOG82Tlp6VVZHbWNDek5uQ0QKenZVSHdPTWlNRXpuOUE1UW9WWXRRaThVRHBhYUlX
V2d0K1FHam04WlpUY09QYXNsdGYvNjhMMWwzcGMwMFVuT0NXWm51SitUcXdRWApBUno0c0dDZ1RD
OUdDSTllUzkybnlPdnVBeDRONm44ejk3ZXpFMEk0WklselY4NnB0QmkySXJmZVNJeEovczFPM3Jn
VzJKZnl4cWhwCmp1RWZGYUtLdFBLZ3N2QUFBQUFKY0VoWmN3QUFDeE1BQUFzVEFRQ2FuQmdBQUFF
a1NVUkJWRGdScFZJN3FvTkFGRDBqRW95Tm91Z0MKWXVWYXNnb2hhM0FkTmhaWmhwMk5ZSk1tNmYx
QndNWktxOWhva2N4ekJIMXZoR2VDRVE1M3J1Zk11WGZ1RFBGOW4rS0xUN1J0ZS9QMgpQTThoR29h
eDJhQnBHb2lTSkcwMmtHVVpvaUFJczRGbFdlTmFVUlNFWVFqVE5HZnV2NFg0ZkQ0NWpoQUN6L09n
NnpxV0hDY2NrdGZyCkJhSHZlMHhRVlJYbjh4bU80eUNPNC9uL3hDOWoxM1Vnd3lUbmE2enJHbXlv
bDhzRnA5TUphWm91aTNKNWtpUWdaVm5PQmh6N1FYSy8KM3lIczkzdXM0WEE0NEhxOWpwckg0OEZw
ZDdzZDBMWXRYVU1RQkt4RHlxS21hWnoyZHJ0Uk1nem03UkdpS01MeGVBU2xkQnpzZERyMgpFdGxW
MERWVVZUVldabDB3L05WbVdVYko0UHEyZzZuaU1oWkZnZDludUdRL3pJbnJ1cHM3WURWK0FNdVU0
QVFCNExwaUFBQUFBRWxGClRrU3VRbUNDQUFBQUFBQUFBQUFBQUFDSlVFNUhEUW9hQ2dBQUFBMUpT
RVJTQUFBQUVBQUFBQkFJQmdBQUFCL3ovMkVBQUFIbmFVTkQKVUVsRFF5QlFjbTltYVd4bEFBQjRB
YTJTUDJnVVVSREd2OTBqT1lzamYwUlRHZHdpUkl1TExMa2lTU01YNzBERUZFZHlRWk51czdmZQpM
ZTV1TnJ1YjB3TUZTMnRyTFVTTFFKSmVZa0t1RVVTeEVNVS9wRTBwV0FSRTBiaCs3ejNDRVVoSTQ4
RGI5NXR2WitidHpGc2dZMXBoCjZPa0EvQ0NKcHE5ZU1XN096UnZaejhpaG42c2JmWllkaDVPVnlo
UkRqckVmbjZDSlZ4OUdSSzFWYis3bDdNeXJyWS90YjI5L2JYNi8KZlV6U2dkd1Q4VUJBeTFNNFUx
ZGNGTHlndUNyNFRoSW1qR2tJdGh0V2pYeVBuSStxMHlYeUNybW5ydmlGNEFYRnJ3VTM3YnJJL1VJ
MgpnNW9iQVBvcDhuak5pVzF5a2V6V1l0c25yNUhIZlgrUjlmVmQ4a1U3akppYnlaR0h4Rnk0MDVy
bmdjc1hHUE93bzgxSHdQbzJjUFpQClJ4c3U4M1BIZ0kybkhXMXZRTTVLRzNnVDN5cU15bkphanJs
ZFA5TjBieERJYmdEN1VacitmcEttKzg5NTlsZWd2V1F2UjAwWnkwYTAKZDhCSnZ1cFpWUWZlc3dl
YXZLT2pXYzFGUnBuQXN6WndnODcxQjhEaklqQk01L1FPVUtGV0xVSXZGQTZXbWlGbG9MZmtCbzV2
R1dVMwpEajJySmJYLyt2QzlaZDZYTk5GSnpnbG1aN2lmazZzRUZ3RWMrTEJnb0V3dlJnaVBYa3Zk
cDhqcjdnTWVEZXAvTS9lM3N4TkNPR1NKCmMxZk9xYlFZdGlLMzNraU1TZjdOVHQ2NEZ0aVg4c2Fv
YVk3aEh4V2lpclR5b0xMd0FBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1kKQUFBQlMwbEVRVlE0
RVdPTWpNLzl6MEFtK1AvL1B3T0xoWVV4bWRvWkdLNWN1Y3JBSWlrcFRyWUI3OTY5WVdEaDVlRW0y
d0ErUGw0RwpGaVltSnJnQjdrNDJZRFl2THgvRHJIbUxHWVNFaGVGeXVCZ3NYNzc5UUpGalpHUmtL
Q3lyWm1EajVHWkFsME5SQ09SOCsvR1RnZVhkCmg0OXdjUjRlWG9iVW5FS0dwdHB5aHNLS09nWXRI
WDI0SERiRzIzY2ZHUmdYck53RWo4WVA3OTh6Q0FnS01seTlkSUdocDYyZVlmNksKamRqMHdjV3VY
TDNHd0xobTZ6NjRBWEFaSWhrM2J0eGdZT0xtNG1UQWgwTjlYQmh1WHJzTVZ2UHorMWNVdFJ3Y0hB
eE1QRHc4RFBodwo3K1FaRE5XbCtRelhyMTVteUVxT1JWSEx5OHZEd01MR3lvclh3ZFkyZGd5VFo4
eGp5TXRNWmdBbFhXVDFMQ3dzREN6TUxNeDREWGp6CitqVkRkWGtoV0ROSUliSjZWcUJleG9zMzc1
RWRpTmV2M3dDNmdCbVJFdkU2Qllza0V4TWpBOHVpV2RPd1NCRXZCQUNLYjEzUUJQZVYKVGdBQUFB
QkpSVTVFcmtKZ2dnQUFBQUNKVUU1SERRb2FDZ0FBQUExSlNFUlNBQUFBRUFBQUFCQUlCZ0FBQUIv
ei8yRUFBQUhuYVVORApVRWxEUXlCUWNtOW1hV3hsQUFCNEFhMlNQMmdVVVJER3Y5MGpPWXNqZjBS
VEdkd2lSSXVMTExraVNTTVg3MERFRkVkeVFaTnVzN2ZlCkxlNXVOcnViMHdNRlMydHJMVVNMUUpK
ZVlrS3VFVVN4RU1VL3BFMHBXQVJFMGJoKzd6M0NFVWhJNDhEYjk1dHZaK2J0ekZzZ1kxcGgKNk9r
QS9DQ0pwcTllTVc3T3pSdlp6OGlobjZzYmZaWWRoNU9WeWhSRGpyRWZuNkNKVng5R1JLMVZiKzds
N015cnJZL3RiMjkvYlg2LwpmVXpTZ2R3VDhVQkF5MU00VTFkY0ZMeWd1Q3I0VGhJbWpHa0l0aHRX
alh5UG5JK3EweVh5Q3JtbnJ2aUY0QVhGcndVMzdickkvVUkyCmc1b2JBUG9wOG5qTmlXMXlrZXpX
WXRzbnI1SEhmWCtSOWZWZDhrVTdqSmlieVpHSHhGeTQwNXJuZ2NzWEdQT3dvODFId1BvMmNQWlAK
UnhzdTgzUEhnSTJuSFcxdlFNNUtHM2dUM3lxTXluSmFqcmxkUDlOMGJ4REliZ0Q3VVpyK2ZwS20r
ODk1OWxlZ3ZXUXZSMDBaeTBhMApkOEJKdnVwWlZRZmVzd2VhdktPaldjMUZScG5Bc3pad2c4NzFC
OERqSWpCTTUvUU9VS0ZXTFVJdkZBNldtaUZsb0xma0JvNXZHV1UzCkRqMnJKYlgvK3ZDOVpkNlhO
TkZKemdsbVo3aWZrNnNFRndFYytMQmdvRXd2UmdpUFhrdmRwOGpyN2dNZURlcC9NL2Uzc3hOQ09H
U0oKYzFmT3FiUVl0aUszM2tpTVNmN05UdDY0RnRpWDhzYW9hWTdoSHhXaWlyVHlvTEx3QUFBQUNY
QklXWE1BQUFzVEFBQUxFd0VBbXB3WQpBQUFBekVsRVFWUTRFYVZTdVJHRU1BeVVQVEpmUU1KUUF4
M1FxVU1hb2c0WEFRSDRSaHpTNkhTWDRGUGkxZTVLbGg4WFk4endSNkQzCkhxWnBLbTZCd3pEQU9J
N2xEYnF1ZzZacHlodFFKUjNEeGp6UEY3V3VLMmhzZlhpZUp4ekhZWG5KdGFZeEczRGJOdGozblhO
WmMzNC8KRG1rYWkrRUdHRUtBcXFvc0Q4NjVpeU5OWTJ2RXZ1K2hybXZMUzY0MWpkbUF0RVBidHB6
THlydVNwckVZYm9EMGhQU1VOcmlJTkkydApEMm1zWDNlUVVoS3Z4a0xlNERvQ1hXUnBJSTNISTVZ
MCtmNkNEN3Znc2l3UFN6N3RMeVgyTUwxM0daVmhBQUFBQUVsRlRrU3VRbUNDCkFBQUFpVkJPUncw
S0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUI1MmxEUTFCSlEwTWdVSEp2
Wm1sc1pRQUEKZUFHdGtqOW9GRkVReHIvZEl6bUxJMzlFVXhuY0lrU0xpeXk1SWtrakYrOUF4QlJI
Y2tHVGJyTzMzaTN1YmphN205TURCVXRyYXkxRQppMENTWG1KQ3JoRkVzUkRGUDZSTktWZ0VSTkc0
ZnU4OXdoRklTT1BBMi9lYmIyZm03Y3hiSUdOYVllanBBUHdnaWFhdlhqRnV6czBiCjJjL0lvWity
RzMyV0hZZVRsY29VUTQ2eEg1K2dpVmNmUmtTdFZXL3U1ZXpNcTYyUDdXOXZmMjErdjMxTTBvSGNF
L0ZBUU10VE9GTlgKWEJTOG9MZ3ErRTRTSm94cENMWWJWbzE4ajV5UHF0TWw4Z3E1cDY3NGhlQUZ4
YThGTisyNnlQMUNOb09hR3dENktmSjR6WWx0Y3BIcwoxbUxiSjYrUngzMS9rZlgxWGZKRk80eVlt
OG1SaDhSY3VOT2E1NEhMRnhqenNLUE5SOEQ2Tm5EMlQwY2JMdk56eDRDTnB4MXRiMERPClNodDRF
OThxak1weVdvNjVYVC9UZEc4UXlHNEErMUdhL242U3B2dlBlZlpYb0wxa0wwZE5HY3RHdEhmQVNi
N3FXVlVIM3JNSG1yeWoKbzFuTlJVYVp3TE0yY0lQTzlRZkE0eUl3VE9mMERsQ2hWaTFDTHhRT2xw
b2haYUMzNUFhT2J4bGxOdzQ5cXlXMS8vcnd2V1hlbHpUUgpTYzRKWm1lNG41T3JCQmNCSFBpd1lL
Qk1MMFlJajE1TDNhZkk2KzRESGczcWZ6UDN0N01UUWpoa2lYTlh6cW0wR0xZaXQ5NUlqRW4rCnpV
N2V1QmJZbC9MR3FHbU80UjhWb29xMDhxQ3k4QUFBQUFsd1NGbHpBQUFMRXdBQUN4TUJBSnFjR0FB
QUFPUkpSRUZVT0JHbFVqRU8KZ2tBUTNEc1dBbktnSFlFbklGK3hzZEhLRi9nbFd4TWJHaDlnWSts
WEpKSVlnZzE0S3pHNUxCYmtuTXNtdyt6c1pNbWQyTzcydlJBQwpiSUZSRkVCUkxHM25BYk1zZ1RS
TjdBUGlPSUpJaGZZQk5DbWxIQVZzMXF1UGRpclBZSEp1eEtaOXdiTnB1UTY5UGdUcW1ad2I4VjdW
ClVEMXFya1BYRFFIVU16azNJcm91dUxvNHZqZExQWk56SHk3bU1TaWx1SzZIaHJkQlBaTnpJL3Er
RCtFczREb0lmUWpVTXprMzZvZWsKZm04Z2pRME16Z1BFNFZqMlJaNXpmZkkzdXVpQW84c1c2SGww
QzM4RVNQMS9qak4raVZNM3d0djFBbFMyZUFQOWN6VGhBNWgyeXdBQQpBQUJKUlU1RXJrSmdnZ0FB
QUFBQUFBQUFBQUFBaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhB
QUFCCjUybERRMUJKUTBNZ1VISnZabWxzWlFBQWVBR3RrajlvRkZFUXhyL2RJem1MSTM5RVV4bmNJ
a1NMaXl5NUlra2pGKzlBeEJSSGNrR1QKYnJPMzNpM3ViamE3bTlNREJVdHJheTFFaTBDU1htSkNy
aEZFc1JERlA2Uk5LVmdFUk5HNGZ1ODl3aEZJU09QQTIvZWJiMmZtN2N4YgpJR05hWWVqcEFQd2dp
YWF2WGpGdXpzMGIyYy9Jb1orckczMldIWWVUbGNvVVE0NnhINStnaVZjZlJrU3RWVy91NWV6TXE2
MlA3Vzl2CmYyMSt2MzFNMG9IY0UvRkFRTXRUT0ZOWFhCUzhvTGdxK0U0U0pveHBDTFliVm8xOGo1
eVBxdE1sOGdxNXA2NzRoZUFGeGE4Rk4rMjYKeVAxQ05vT2FHd0Q2S2ZKNHpZbHRjcEhzMW1MYko2
K1J4MzEva2ZYMVhmSkZPNHlZbThtUmg4UmN1Tk9hNTRITEZ4anpzS1BOUjhENgpObkQyVDBjYkx2
Tnp4NENOcHgxdGIwRE9TaHQ0RTk4cWpNcHlXbzY1WFQvVGRHOFF5RzRBKzFHYS9uNlNwdnZQZWZa
WG9MMWtMMGROCkdjdEd0SGZBU2I3cVdWVUgzck1IbXJ5am8xbk5SVWFad0xNMmNJUE85UWZBNHlJ
d1RPZjBEbENoVmkxQ0x4UU9scG9oWmFDMzVBYU8KYnhsbE53NDlxeVcxLy9yd3ZXWGVselRSU2M0
SlptZTRuNU9yQkJjQkhQaXdZS0JNTDBZSWoxNUwzYWZJNis0REhnM3FmelAzdDdNVApRamhraVhO
WHpxbTBHTFlpdDk1SWpFbit6VTdldUJiWWwvTEdxR21PNFI4Vm9vcTA4cUN5OEFBQUFBbHdTRmx6
QUFBTEV3QUFDeE1CCkFKcWNHQUFBQVB4SlJFRlVPQkdsVWt1cWhEQVFMRVA4THR5b1J4RFA0RlZF
RUcvZ0FjU05aeEJ4NFFHOGgzZHc0ZGExVzNXaDcwMEgKM29NWk16QmtDanFoazZydXBMdTFwbWwr
OEFVNFl3eFJGQ21INEo3bklRZ0M5UUNPNDhDeUxPVUFqSlQwalZjTHd4QmxXV0pkVnhIOAo5Zjdm
djY0TDUzbmVqRlRETUNCTlU0emppRzNiYmh6U3NYM2ZjUnpIelVUYXh6TFBNL0k4eDZOYldKYmx4
dU82cnNNd2pELysyNzF0ClcwelRoSzdybmpqY2RWMllwdmwwS0hPS29rQ1NKRGN1cCt5MmJjczA0
b3htcEs1cnhIRXNmU21uRmxJclpjaXlERlZWd2ZkOTBTVVoKaDlQelpUV2d3bjRDOFFVcXBDcTRw
bWtnVTRXWVJGVXg2WGpmOTkvbzhRdWZER3NsbDZOa0ZBQUFBQUJKUlU1RXJrSmdnZ0FBQUlsUQpU
a2NOQ2hvS0FBQUFEVWxJUkZJQUFBQVFBQUFBRUFnR0FBQUFIL1AvWVFBQUFlZHBRME5RU1VORElG
QnliMlpwYkdVQUFIZ0JyWkkvCmFCUlJFTWEvM1NNNWl5Ti9SRk1aM0NKRWk0c3N1U0pKSXhmdlFN
UVVSM0pCazI2enQ5NHQ3bTQydTV2VEF3VkxhMnN0Ukl0QWtsNWkKUXE0UlJMRVF4VCtrVFNsWUJF
VFJ1SDd2UGNJUlNFamp3TnYzbTI5bjV1M01XeUJqV21IbzZRRDhJSW1tcjE0eGJzN05HOW5QeUtH
ZgpxeHQ5bGgySGs1WEtGRU9Pc1IrZm9JbFhIMFpFclZWdjd1WHN6S3V0aisxdmIzOXRmcjk5VE5L
QjNCUHhRRURMVXpoVFYxd1V2S0M0Ckt2aE9FaWFNYVFpMkcxYU5mSStjajZyVEpmSUt1YWV1K0lY
Z0JjV3ZCVGZ0dXNqOVFqYURtaHNBK2lueWVNMkpiWEtSN05aaTJ5ZXYKa2NkOWY1SDE5VjN5UlR1
TW1KdkprWWZFWExqVG11ZUJ5eGNZODdDanpVZkEralp3OWs5SEd5N3pjOGVBamFjZGJXOUF6a29i
ZUJQZgpLb3pLY2xxT3VWMC8wM1J2RU1odUFQdFJtdjUra3FiN3ozbjJWNkM5WkM5SFRSbkxSclIz
d0VtKzZsbFZCOTZ6QjVxOG82Tlp6VVZHCm1jQ3pObkNEenZVSHdPTWlNRXpuOUE1UW9WWXRRaThV
RHBhYUlXV2d0K1FHam04WlpUY09QYXNsdGYvNjhMMWwzcGMwMFVuT0NXWm4KdUorVHF3UVhBUno0
c0dDZ1RDOUdDSTllUzkybnlPdnVBeDRONm44ejk3ZXpFMEk0WklselY4NnB0QmkySXJmZVNJeEov
czFPM3JnVwoySmZ5eHFocGp1RWZGYUtLdFBLZ3N2QUFBQUFKY0VoWmN3QUFDeE1BQUFzVEFRQ2Fu
QmdBQUFFalNVUkJWRGdSWTR5SXkvblB5TWpJClFDNWc0ZVhsWk5EUjBTWlhQd09MbEpRNGc2U2tP
UGtHOFBIeE12RHljSk50QUJOSUp4TVRFd2IyZExGam1OVGZ6ZkR4NHdjR1VCQmgKVXdNU1kvbjI0
eWZEbDI4L3NMcGcrOWJOREZjdVgyWklUTTFrME5MUlkyQmxaY1ZReDZ4dll0WEF5OGZIOEIxb0VE
TGV2RzRWV1BFbgpvQXNPN3QvRDhQUDNid1orUVdHRy93eU1LT3FZV0lDbWdreEd4K2hXZ1F4Y1BH
OEdoam9XQVg0K0JoNGVIblQxR1B5d3FIZ0dWMDhmCkRMVXNIQndjRE54Y25CZ2FZQUx5Q2tvTWFk
bjVETHI2aGxqREFKaVFlREJNaFduMkNRaG1TTTNNWlJBUUVBVEhBa3djbVdZQkFnWTIKTEtGNzhz
SU5aSFU0MlN5c0xNd016RUJNTG1CaFl3UEZBQVVHTURFeE1qQXpneE1rV1k1Z09YTmtQd01Ja3dz
QTZkNUowSmEzbGlrQQpBQUFBU1VWT1JLNUNZSUlBQUFBQUFBQUFBQUFBQUFDSlVFNUhEUW9hQ2dB
QUFBMUpTRVJTQUFBQUVBQUFBQkFJQmdBQUFCL3ovMkVBCkFBSG5hVU5EVUVsRFF5QlFjbTltYVd4
bEFBQjRBYTJTUDJnVVVSREd2OTBqT1lzamYwUlRHZHdpUkl1TExMa2lTU01YNzBERUZFZHkKUVpO
dXM3ZmVMZTV1TnJ1YjB3TUZTMnRyTFVTTFFKSmVZa0t1RVVTeEVNVS9wRTBwV0FSRTBiaCs3ejND
RVVoSTQ4RGI5NXR2WitidAp6RnNnWTFwaDZPa0EvQ0NKcHE5ZU1XN096UnZaejhpaG42c2JmWllk
aDVPVnloUkRqckVmbjZDSlZ4OUdSSzFWYis3bDdNeXJyWS90CmIyOS9iWDYvZlV6U2dkd1Q4VUJB
eTFNNFUxZGNGTHlndUNyNFRoSW1qR2tJdGh0V2pYeVBuSStxMHlYeUNybW5ydmlGNEFYRnJ3VTMK
N2JySS9VSTJnNW9iQVBvcDhuak5pVzF5a2V6V1l0c25yNUhIZlgrUjlmVmQ4a1U3akppYnlaR0h4
Rnk0MDVybmdjc1hHUE93bzgxSAp3UG8yY1BaUFJ4c3U4M1BIZ0kybkhXMXZRTTVLRzNnVDN5cU15
bkphanJsZFA5TjBieERJYmdEN1VacitmcEttKzg5NTlsZWd2V1F2ClIwMFp5MGEwZDhCSnZ1cFpW
UWZlc3dlYXZLT2pXYzFGUnBuQXN6WndnODcxQjhEaklqQk01L1FPVUtGV0xVSXZGQTZXbWlGbG9M
ZmsKQm81dkdXVTNEajJySmJYLyt2QzlaZDZYTk5GSnpnbG1aN2lmazZzRUZ3RWMrTEJnb0V3dlJn
aVBYa3ZkcDhqcjdnTWVEZXAvTS9lMwpzeE5DT0dTSmMxZk9xYlFZdGlLMzNraU1TZjdOVHQ2NEZ0
aVg4c2FvYVk3aEh4V2lpclR5b0xMd0FBQUFDWEJJV1hNQUFBc1RBQUFMCkV3RUFtcHdZQUFBQkEw
bEVRVlE0RWFXU1B3NUZRQkRHaDR5L2hVWlVEcURTaVY2blVrb2NRK3NlU3JmUXVJSUxLSnhBcTBM
Q2UyYUwKamVmdEZzLzdFc240NWplVG5aMVY2cnArd1I5Q1ZWVWhDSUxITGRCMVhmQTg3M2tEMjdi
Qk5FMXBnMkVZSU1zeUdNZFJ5Q0M1TklaSQpmZDlEVVJRc0pXUHdPQTdZOS8ycnZ1czZxS3FLK3lL
R2tyZ3NDNnpyeXNFd0RGbXM2enBzMjhiOUs4UE5NMEJOMDREZ3U2N0ZsQk14CjVLUGpPR0FZQnNV
ZnVwOUF4RkFCRW1oWkZpK2Vwb25GYmR0Q1daWXd6elA3dnpJY1BnT2tGZElxNzhyekhIemZoelJO
V1VyRVVBTHAKYUxMNWtpUUJXbVVjeDFLR2pVQVhLVk1VUlVDcmxna1ZSUUg2bmtyOEJIL29oazNU
L0lCL28yK1BxVUlxUHpZMVZBQUFBQUJKUlU1RQpya0pnZ2dBQUFBQUFBQUFBQUFBQUFJbFFUa2NO
Q2hvS0FBQUFEVWxJUkZJQUFBQVFBQUFBRUFnR0FBQUFIL1AvWVFBQUFlZHBRME5RClNVTkRJRkJ5
YjJacGJHVUFBSGdCclpJL2FCUlJFTWEvM1NNNWl5Ti9SRk1aM0NKRWk0c3N1U0pKSXhmdlFNUVVS
M0pCazI2enQ5NHQKN200MnU1dlRBd1ZMYTJzdFJJdEFrbDVpUXE0UlJMRVF4VCtrVFNsWUJFVFJ1
SDd2UGNJUlNFamp3TnYzbTI5bjV1M01XeUJqV21Ibwo2UUQ4SUltbXIxNHhiczdORzluUHlLR2Zx
eHQ5bGgySGs1WEtGRU9Pc1IrZm9JbFhIMFpFclZWdjd1WHN6S3V0aisxdmIzOXRmcjk5ClROS0Iz
QlB4UUVETFV6aFRWMXdVdktDNEt2aE9FaWFNYVFpMkcxYU5mSStjajZyVEpmSUt1YWV1K0lYZ0Jj
V3ZCVGZ0dXNqOVFqYUQKbWhzQStpbnllTTJKYlhLUjdOWmkyeWV2a2NkOWY1SDE5VjN5UlR1TW1K
dkprWWZFWExqVG11ZUJ5eGNZODdDanpVZkEralp3OWs5SApHeTd6YzhlQWphY2RiVzlBemtvYmVC
UGZLb3pLY2xxT3VWMC8wM1J2RU1odUFQdFJtdjUra3FiN3ozbjJWNkM5WkM5SFRSbkxSclIzCndF
bSs2bGxWQjk2ekI1cThvNk5aelVWR21jQ3pObkNEenZVSHdPTWlNRXpuOUE1UW9WWXRRaThVRHBh
YUlXV2d0K1FHam04WlpUY08KUGFzbHRmLzY4TDFsM3BjMDBVbk9DV1pudUorVHF3UVhBUno0c0dD
Z1RDOUdDSTllUzkybnlPdnVBeDRONm44ejk3ZXpFMEk0WklsegpWODZwdEJpMklyZmVTSXhKL3Mx
TzNyZ1cySmZ5eHFocGp1RWZGYUtLdFBLZ3N2QUFBQUFKY0VoWmN3QUFDeE1BQUFzVEFRQ2FuQmdB
CkFBRTBTVVJCVkRnUlk0eUl5L25QeU1qSVFDNWc0ZVhsWk5EUjBTWlhQd09MbEpRNGc2U2tPUGtH
OFBIeE12RHljT00wNE43ZDJ3eloKNmNrTTIvY2N3cXFHQlNUS3hNU0VWZkx5cFFzTUpRVTVZRGxj
YWxpKy9mako4T1hiRHd3RFRodzl6REIxVWc5Y0hKc2FrQ1RMMjNjZgpHZDU5K0FoWG1Cb1RER2F6
c0xJeS9QbjlHeTZPckFZdUNHU3dnQlN5QWpFNlFOWU1rc09tQmlUT0lzRFB4OEREd3dOaW93Q1Fo
dDlJCkxzQ21CcVNCaFlPRGc0R2JpeE91ZWZ2KzQyRDJrVVA3R1NaMHRURjgvZm9GekVkV0ExY01a
QUFURWc5V0YzaDQrUUxUaHhSRFRsb0MKV0QwdUZ6Q3hzTEF3c0FHZGl3MmJtbGt3TEY2NUhtd0FO
bm1RR0FzckN6TURNeERqQXByYU9neG5ydHpHSmMzQXdzWUdpZ1hjQnVEVQpDWlZnWVdKaVpHQm14
cDRTQ1drR3liT2NPYktmQVlUSkJRQzVXMFRhYkRaYndBQUFBQUJKUlU1RXJrSmdnZ0FBQUFBQUFB
QUFBQUFBCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQjUy
bERRMUJKUTBNZ1VISnZabWxzWlFBQWVBR3QKa2o5b0ZGRVF4ci9kSXptTEkzOUVVeG5jSWtTTGl5
eTVJa2tqRis5QXhCUkhja0dUYnJPMzNpM3ViamE3bTlNREJVdHJheTFFaTBDUwpYbUpDcmhGRXNS
REZQNlJOS1ZnRVJORzRmdTg5d2hGSVNPUEEyL2ViYjJmbTdjeGJJR05hWWVqcEFQd2dpYWF2WGpG
dXpzMGIyYy9JCm9aK3JHMzJXSFllVGxjb1VRNDZ4SDUrZ2lWY2ZSa1N0VlcvdTVlek1xNjJQN1c5
dmYyMSt2MzFNMG9IY0UvRkFRTXRUT0ZOWFhCUzgKb0xncStFNFNKb3hwQ0xZYlZvMThqNXlQcXRN
bDhncTVwNjc0aGVBRnhhOEZOKzI2eVAxQ05vT2FHd0Q2S2ZKNHpZbHRjcEhzMW1MYgpKNitSeDMx
L2tmWDFYZkpGTzR5WW04bVJoOFJjdU5PYTU0SExGeGp6c0tQTlI4RDZObkQyVDBjYkx2Tnp4NENO
cHgxdGIwRE9TaHQ0CkU5OHFqTXB5V282NVhUL1RkRzhReUc0QSsxR2EvbjZTcHZ2UGVmWlhvTDFr
TDBkTkdjdEd0SGZBU2I3cVdWVUgzck1IbXJ5am8xbk4KUlVhWndMTTJjSVBPOVFmQTR5SXdUT2Yw
RGxDaFZpMUNMeFFPbHBvaFphQzM1QWFPYnhsbE53NDlxeVcxLy9yd3ZXWGVselRSU2M0SgpabWU0
bjVPckJCY0JIUGl3WUtCTUwwWUlqMTVMM2FmSTYrNERIZzNxZnpQM3Q3TVRRamhraVhOWHpxbTBH
TFlpdDk1SWpFbit6VTdlCnVCYllsL0xHcUdtTzRSOFZvb3EwOHFDeThBQUFBQWx3U0ZsekFBQUxF
d0FBQ3hNQkFKcWNHQUFBQVRoSlJFRlVPQkdsa2pHdWdrQVUKUlM5a0FLR3dNVlFtRkRSV2RzVEdE
VkJac2dRclNyWmlyRXhjaEhFRHRqYWFFQXBhQ2sxWUFKQ0Eva3ZDZk1QWFgrQk5Yc0s4T2ZjTgpi
OTRvbTgzbWdTOGtWRlhGYkRZYlhFSk1KaFBZdGoyOGdHVlpHSTFHSHdza1NZTFZhb1UwVGQ4eUty
TnM0MTJjeitmVzNERjVuaU9LCklzUngvTXMzVFlPNnJ2L0U4WGpFZXIyV3A1Smh1OHZsRXZ2OVh2
S2lLQXFVWlNuQitYemVmdXU2anFxcVpKNE05dzZIQTM0bUp6MUMKMHpRUTd1dlZ6TDJPY1YwWFda
Ykp0UmlQeHpBTW8rOXZnZGNpSFhPLzMrRTRqdlNvckd5YXBnd0NqTzEyQ3hidlJJWjVYcURuZVpJ
WApIQ0ZIMlZjUUJKaE9wL0I5djkwaWM3dmRjRHFkRUlhaDlDalg2L1h4MzB1OFhDNVlMQmJ5MHZv
SENiYkFpL3drL2k1SC9VbENVUlF3CmhxcDlpVVBOOUluZGJ2ZU5IMC8xWDN1eHUvY2IzUUFBQUFC
SlJVNUVya0pnZ2dBQUFBQUFBQUNKVUU1SERRb2FDZ0FBQUExSlNFUlMKQUFBQUVBQUFBQkFJQmdB
QUFCL3ovMkVBQUFIbmFVTkRVRWxEUXlCUWNtOW1hV3hsQUFCNEFhMlNQMmdVVVJER3Y5MGpPWXNq
ZjBSVApHZHdpUkl1TExMa2lTU01YNzBERUZFZHlRWk51czdmZUxlNXVOcnViMHdNRlMydHJMVVNM
UUpKZVlrS3VFVVN4RU1VL3BFMHBXQVJFCjBiaCs3ejNDRVVoSTQ4RGI5NXR2WitidHpGc2dZMXBo
Nk9rQS9DQ0pwcTllTVc3T3pSdlp6OGlobjZzYmZaWWRoNU9WeWhSRGpyRWYKbjZDSlZ4OUdSSzFW
Yis3bDdNeXJyWS90YjI5L2JYNi9mVXpTZ2R3VDhVQkF5MU00VTFkY0ZMeWd1Q3I0VGhJbWpHa0l0
aHRXalh5UApuSStxMHlYeUNybW5ydmlGNEFYRnJ3VTM3YnJJL1VJMmc1b2JBUG9wOG5qTmlXMXlr
ZXpXWXRzbnI1SEhmWCtSOWZWZDhrVTdqSmliCnlaR0h4Rnk0MDVybmdjc1hHUE93bzgxSHdQbzJj
UFpQUnhzdTgzUEhnSTJuSFcxdlFNNUtHM2dUM3lxTXluSmFqcmxkUDlOMGJ4REkKYmdEN1Vacitm
cEttKzg5NTlsZWd2V1F2UjAwWnkwYTBkOEJKdnVwWlZRZmVzd2VhdktPaldjMUZScG5Bc3pad2c4
NzFCOERqSWpCTQo1L1FPVUtGV0xVSXZGQTZXbWlGbG9MZmtCbzV2R1dVM0RqMnJKYlgvK3ZDOVpk
NlhOTkZKemdsbVo3aWZrNnNFRndFYytMQmdvRXd2ClJnaVBYa3ZkcDhqcjdnTWVEZXAvTS9lM3N4
TkNPR1NKYzFmT3FiUVl0aUszM2tpTVNmN05UdDY0RnRpWDhzYW9hWTdoSHhXaWlyVHkKb0xMd0FB
QUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFCZVVsRVFWUTRFV09NaU12NXo4akl5RUF1WU9I
bDVXVFEwZEVtVno4RAppNVNVT0lPa3BEajVCdkR4OFRMdzhuRGpOT0RlM2RzTTJlbkpETnYzSE1L
cWhna2t5c1RFaEJWZnZYSUpyQm1tNXNQNzl3emRIUzBNCmQyN2ZRcWovOXVNbnc1ZHZQekR3bnQy
N0dlcXF5K0cyZ3RTd2NYSXo2T2daTXF4WnZSS3VudVh0dTQ4TTd6NThoQ3RNalFrR3MxbFkKV1Ju
Ky9QNE5Gd2VwQWNtMTlFeG11TEZzTVZ3UEMwZ2hLeENqQTJUTklEbVlHa2twR1lZM3IxL0MrU3dD
L0h3TVBEdzg2UHJCQ240agp1UUNtNXV1WHp3emlFcEp3UFN3Y0hCd00zRnljY0FPMjd6OE9aaDg1
dEo5aFFsY2J3OWV2WDhCOGtCcVEzTjVkMnhrMHRYWGhlb0FKCmlRZHVHdHdVSU1QRHl4ZVlQcVFZ
Y3RJU3dNSWdGN3g5ODVyaDB2bXpEQkV4OFhBOWpIT1hyZnV2bzZXRnJCZUZmZXZtZFliWThFQ0cK
a3hkdW9JakRPQ3lzTE13TXpFQ01DMmhxNnpDY3VYSWJselFEQ3hzYktCWndHNEJUSjFTQ2hZbUpr
WUdaR1p3Z0NhbkZLczl5NXNoKwpCaEFtRndBQTIvNSs5bkozUHhzQUFBQUFTVVZPUks1Q1lJSUFB
QUFBQUFDSlVFNUhEUW9hQ2dBQUFBMUpTRVJTQUFBQUVBQUFBQkFJCkFnQUFBSkNSYURZQUFBSG5h
VU5EVUVsRFF5QlFjbTltYVd4bEFBQjRBYTJTUDJnVVVSREd2OTBqT1lzamYwUlRHZHdpUkl1TExM
a2kKU1NNWDcwREVGRWR5UVpOdXM3ZmVMZTV1TnJ1YjB3TUZTMnRyTFVTTFFKSmVZa0t1RVVTeEVN
VS9wRTBwV0FSRTBiaCs3ejNDRVVoSQo0OERiOTV0dlorYnR6RnNnWTFwaDZPa0EvQ0NKcHE5ZU1X
N096UnZaejhpaG42c2JmWllkaDVPVnloUkRqckVmbjZDSlZ4OUdSSzFWCmIrN2w3TXlyclkvdGIy
OS9iWDYvZlV6U2dkd1Q4VUJBeTFNNFUxZGNGTHlndUNyNFRoSW1qR2tJdGh0V2pYeVBuSStxMHlY
eUNybW4KcnZpRjRBWEZyd1UzN2JySS9VSTJnNW9iQVBvcDhuak5pVzF5a2V6V1l0c25yNUhIZlgr
UjlmVmQ4a1U3akppYnlaR0h4Rnk0MDVybgpnY3NYR1BPd284MUh3UG8yY1BaUFJ4c3U4M1BIZ0ky
bkhXMXZRTTVLRzNnVDN5cU15bkphanJsZFA5TjBieERJYmdEN1VacitmcEttCis4OTU5bGVndldR
dlIwMFp5MGEwZDhCSnZ1cFpWUWZlc3dlYXZLT2pXYzFGUnBuQXN6WndnODcxQjhEaklqQk01L1FP
VUtGV0xVSXYKRkE2V21pRmxvTGZrQm81dkdXVTNEajJySmJYLyt2QzlaZDZYTk5GSnpnbG1aN2lm
azZzRUZ3RWMrTEJnb0V3dlJnaVBYa3ZkcDhqcgo3Z01lRGVwL00vZTNzeE5DT0dTSmMxZk9xYlFZ
dGlLMzNraU1TZjdOVHQ2NEZ0aVg4c2FvYVk3aEh4V2lpclR5b0xMd0FBQUFDWEJJCldYTUFBQXNU
QUFBTEV3RUFtcHdZQUFBQlVFbEVRVlFvRldPY09uVXFBeW1BNVE4VE4vSHEyUmkrczBoS2loT3Zn
ZUhYWnhaZUhvUU4KLy83OVc3ZG01WUY5ZTU0OWZTSWxMZVBnNUJJVUVzN0V4QVEzOGUrUHY0dzc5
eDJCOElHcXkwdnlMMTA0RDVjR012UU1ERHQ3SnNMMQovUDcyZ1Rrd05Pclg3ejlBdEdibDhsMDd0
aUtyQnJKZnZuakJ6TXlxcEtvT1VjUDA3eGZMdXc4ZklZb083TitOcGhvdWJ1dnNEbUh6CnMvMWxZ
V1ZsaFhCZXZYaU9WUU5RSEs2R2xaV0poWWVIQjZKT1VscjIvdDNibUhxQTRuQTFmQnovbWJpNU9D
SEl5UVZxTDVvZW9EaGMKRFJzYkc4S0d1S1RVYzJkT25qOTdHbG1Eb2JFcFVCd2VTaHdNUHhoUFhy
Z0JWL0h2Mzk5bGl4ZnMycjdsMGFPSGNuTHlYNzk4ZnZMawppYTZ1N3B6RnF5RnFPSmwrTVo2NWdz
WGRjQ05TWThQT256L3Y2ZW5aM0QwSktNakQ4cGZ4NHMxN2NHbUNEQTZHM3l6TXpJaVlKNmlCCjRT
OER5NkpaMHdpclExSUJBSFZMZlZTOUt0eGVBQUFBQUVsRlRrU3VRbUNDQUFBQUFBQUFBQUFBQUFB
QUFBQUFpVkJPUncwS0dnb0EKQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQUlBQUFDUWtXZzJBQUFCNTJs
RFExQkpRME1nVUhKdlptbHNaUUFBZUFHdGtqOW9GRkVReHIvZApJem1MSTM5RVV4bmNJa1NMaXl5
NUlra2pGKzlBeEJSSGNrR1Rick8zM2kzdWJqYTdtOU1EQlV0cmF5MUVpMENTWG1KQ3JoRkVzUkRG
ClA2Uk5LVmdFUk5HNGZ1ODl3aEZJU09QQTIvZWJiMmZtN2N4YklHTmFZZWpwQVB3Z2lhYXZYakZ1
enMwYjJjL0lvWityRzMyV0hZZVQKbGNvVVE0NnhINStnaVZjZlJrU3RWVy91NWV6TXE2MlA3Vzl2
ZjIxK3YzMU0wb0hjRS9GQVFNdFRPRk5YWEJTOG9MZ3ErRTRTSm94cApDTFliVm8xOGo1eVBxdE1s
OGdxNXA2NzRoZUFGeGE4Rk4rMjZ5UDFDTm9PYUd3RDZLZko0ellsdGNwSHMxbUxiSjYrUngzMS9r
ZlgxClhmSkZPNHlZbThtUmg4UmN1Tk9hNTRITEZ4anpzS1BOUjhENk5uRDJUMGNiTHZOeng0Q05w
eDF0YjBET1NodDRFOThxak1weVdvNjUKWFQvVGRHOFF5RzRBKzFHYS9uNlNwdnZQZWZaWG9MMWtM
MGROR2N0R3RIZkFTYjdxV1ZVSDNyTUhtcnlqbzFuTlJVYVp3TE0yY0lQTwo5UWZBNHlJd1RPZjBE
bENoVmkxQ0x4UU9scG9oWmFDMzVBYU9ieGxsTnc0OXF5VzEvL3J3dldYZWx6VFJTYzRKWm1lNG41
T3JCQmNCCkhQaXdZS0JNTDBZSWoxNUwzYWZJNis0REhnM3FmelAzdDdNVFFqaGtpWE5YenFtMEdM
WWl0OTVJakVuK3pVN2V1QmJZbC9MR3FHbU8KNFI4Vm9vcTA4cUN5OEFBQUFBbHdTRmx6QUFBTEV3
QUFDeE1CQUpxY0dBQUFBWVpKUkVGVUtCV1ZrcnV1QVZFVWhzMmU3WElrRElXZwowYWlVR28yQzZM
eUFSNW5hQTJnOXltUktoVWhVdXBPZzBvaHJJUzRKd1RoZnJHUm5vamc1WnhVN2EvL3JYNWY5cjIz
MSsvM0lmMHhYCktwVy84MmV6bWM3bGNpWWhDSUxyOVhxNzNSNlBoOVk2SG84bkVnbWxsQ0hzOTNz
TkpQZm44N2xlcjMzZkg0MUdtODBtbjgvWDYvVjIKdTEwb0ZHemJGazR5bWRSU2dOcmI3YmJYNjhF
K244OGtMeGFMNzdlNXJsc3NGazBmUlF5N1hDNmU1OEUrSEE3Mys1MThUbndRY0tKQwpBMWRNakIy
UHgrRndTTzNYNjJVbXhnY0JKeW8wWHFoanNSZ01PdTUyTzhvWXRqZ2c0RVNGRm8xR0ZWSmd2Q2I4
T0pQR2M4R0pDaTJkClRxdXZ0MlV5bVZhcmxVcWxMTXN5Ykh3UWNLSkNvNDhtR3diaWRqb2RWQmtN
QnFmVGlUMHdCc1phbTgwbUNRd2pOTHZiN2RLWE5UbU8KVTZ2VnN0a3Njek5BdVZ3bURYSEg0M0dq
MFdBdDVLQmJCS1dNd1VBUXRyWmNMbGVyMVdReXFWYXJwVktKOVFGQ20wNm5WbGhITTcwNApJaEVu
SS9DRE9PZnp1ZjRnaGE4aVVSakJ0OWo4Qi9UNzlRZnZYUEh0VEJYQzJnQUFBQUJKUlU1RXJrSmdn
Z0FBQUFBQUFBQUFBRlZJCmllVklpd1VBQUFBQVNJUEFFRWlKQjBpTGZ4QkloZjkwQmwzcEFBQUFB
RjNEWm1abVppNFBINFFBQUFBQUFGVklpZVZUVUVpSiswaUwKQlFBQUFBQklnOEFRU0lrRFNJdDdF
RWlGLzNRRjZBQUFBQUJJaWQ5SWc4UUlXMTNwQUFBQUFHWm1abVl1RHgrRUFBQUFBQUJWU0lubApT
SVBzSUVpTFJTaElpVVFrR0VpTFJTQklpVVFrRUVpTFJSQklpMDBZU0lsTUpBaElpUVFrNkFBQUFB
QklnOFFnWGNObUxnOGZoQUFBCkFBQUFWVWlKNVVpSjkxM3BBQUFBQUE4ZkFGVklpZVZJaWZkZDZR
QUFBQUFQSHdCVlNJbmxTSXNGQUFBQUFFaUR3QkJJaVFkSWkzOFEKU0lYL2RBWmQ2UUFBQUFCZHcy
Wm1abVl1RHgrRUFBQUFBQUJWU0lubFUxQklpZnRJaXdVQUFBQUFTSVBBRUVpSkEwaUxleEJJaGY5
MApCZWdBQUFBQVNJbmZTSVBFQ0Z0ZDZRQUFBQUJtWm1abUxnOGZoQUFBQUFBQVZVaUo1VWlMQlFB
QUFBRHlEeEFBOGc4UVNBaGR3Mll1CkR4K0VBQUFBQUFCVlNJbmxTSW4zWGVrQUFBQUFEeDhBVlVp
SjVVaUo5MTNwQUFBQUFBOGZBRlZJaWVWZHcyWXVEeCtFQUFBQUFBQlYKU0lubFhla0FBQUFBWmc4
ZlJBQUFWVWlKNVVpTEJRQUFBQUJJZzhBUVNJa0hTSXQvRUVpRi8zUUdYZWtBQUFBQVhjTm1abVpt
TGc4ZgpoQUFBQUFBQVZVaUo1Vk5RU0luN1NJc0ZBQUFBQUVpRHdCQklpUU5JaTNzUVNJWC9kQVhv
QUFBQUFFaUozMGlEeEFoYlhla0FBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTllyQUFBQ0FBQUFBQUFJQVFBQUFBQUVBRDhBQUFBQUFB
QUFBQUFBQUFBQQpBQUNPQUFBQUFRTHRBQUFBQlFRREp3QUFBQVF1QUFBQThRQUFBQVV6QUFBQUJn
UUNOZ2NTQVFBQUFRY3dBUUFBQWdkTkFRQUFDQWR1CkFRQUFFQUFJUVFBQUFJc0JBQUFDT3dtMUFR
QUFBUXJDQVFBQUJDSUx5QUVBQUFFRXhReHBBQUFBeGdFQUFBaHBBQUFBdlFFQUFBUEcKQUFBRnl3
QUFBQVhEQUFBQUNzSUJBQUFETFEwRkFnQUFCQU15Qi8wQkFBQUFBQTBZQWdBQUJBTXpCeEFDQUFB
QUFBNjZCUUFBQ0FORgpDSWNBQUFEaEFRQUFBMGNJbEFBQUFPc0JBQUFEU0ErdkFRQUExZ0FBQUFP
TEFpTUFBeER6QVFBQUEwb0JBUUVSbVFBQUFBRUFFUE1CCkFBQURTd0VCQVJHWkFBQUFBUkxXQUFB
QUFCRHpBUUFBQTAwQkFRRVJtUUFBQUFFU3BRQUFBQkxXQUFBQUFCRHpBUUFBQTFVQkFRRVIKbVFB
QUFBRVN0QUFBQUJMV0FBQUFBQkR6QVFBQUExc0JBUUVSbVFBQUFBRVN4UU1BQUFBUTh3RUFBQU5l
QVFFQkVaa0FBQUFCRXNvRApBQUFBRVBNQkFBQURZZ0VCQVJHWkFBQUFBUkxXQXdBQUFCTlRBZ0FB
akFJQUFBTmo1Z01BQUFFQkFSSHRBd0FBQVFBUXFRSUFBQU5sCkFRRUJFWmtBQUFBQkFCUzBBZ0FB
MlFJQUFBTnBBUUVCRVprQUFBQUJBQlBmQWdBQUJnTUFBQU5xMWdBQUFBRUJBUkdaQUFBQUFRQVQK
RGdNQUFESURBQUFEYk5ZQUFBQUJBUUVSN1FNQUFBRUFFellEQUFCWUF3QUFBMjNXQUFBQUFRRUJF
ZTBEQUFBQkFCVmpBd0FBaUFNQQpBQU52MWdBQUFBRUJBUUVSN1FNQUFBRUFFNklEQUFERUF3QUFB
M0xtQXdBQUFRRUJFZTBEQUFBQkFCUE9Bd0FBOXdNQUFBTjJaUUlBCkFBRUJBUkh0QXdBQUFRQUk4
Z01BQURvRUFBQURkUk5PQkFBQWN3UUFBQU40K3dNQUFBRUJBUkdaQUFBQUFSTEZBd0FBQUJOL0JB
QUEKc3dRQUFBTjUrd01BQUFFQkFRd0FCQUFBZlFRQUFCR1pBQUFBQVJMRkF3QUFBQlBJQkFBQWN3
UUFBQU42K3dNQUFBRUJBUkdaQUFBQQpBUkxXQUFBQUFCUHJCQUFBY3dRQUFBTisrd01BQUFFQkFS
R1pBQUFBQVJMS0F3QUFBQk1QQlFBQXN3UUFBQU4vK3dNQUFBRUJBUXdBCkJBQUFmUVFBQUJHWkFB
QUFBUkxLQXdBQUFCUkNCUUFBYVFVQUFBT0dBUUVCRVprQUFBQUJFdnNEQUFBQUZtNEZBQUNrQlFB
QUE0blcKQUFBQUFRRUREQUFFQUFER0FRQUFBQmVsSUFBQXFBRUFBQUVZeHlNQUFBTmw0aWNBQUFF
QUdjWWdBQUNvQVFBQWN3TUFBQUVZeHlNQQpBQU5sNGljQUFBRWFHMG9sQUFBRFpkWUFBQUFBQUJj
cUlnQUE4QUFBQUFFWXh5TUFBQU5LNGljQUFBRUFHVXNpQUFEd0FBQUFzZ01BCkFBRVl4eU1BQUFO
SzRpY0FBQUVBQUJ6REFBQUFIY0FEQUFBZXd3QUFBQXJDQVFBQUJSOE5PUUlBQUFRRkpRY2pBZ0FB
QUFBQUFxUUMKQUFBQ0FRWEFBd0FBSDlZQUFBRERBQUFBSGNNQUFBQUZhUUFBQUFYOUJRQUFDUklH
QUFBQkJRb0VBQUFJRUFRQUFCd0dBQUFDQ0FJeQpCZ0FBQkFnSUlBUUFBRGtHQUFBRytRVkdCQUFB
SEVZRUFBQWROd1FBQUI1R0JBQUFDME1HQUFBUUJnOFBNQVlBQUNjRUFBQUdFQUlqCkFBRVBRUVlB
QUNjRUFBQUdFUUlqQ0FFZ1F3WUFBQVlQQVFFQkFSRXlCQUFBQVFBZ1F3WUFBQVlQQVFFQkFSRXlC
QUFBQVJJOEJBQUEKQUNCREJnQUFCZzhCQVFFQkVUSUVBQUFCRWtFRUFBQUFJRXNHQUFBR0R3RUJB
UUVSTWdRQUFBRUFBQWhHQkFBQVF3WUFBQVlUQmQ0RQpBQUFjM2dRQUFCM1BCQUFBSHQ0RUFBQUxa
Z1lBQUJBR0Z3OVpCZ0FBSndRQUFBWVlBaU1BQVE5ZkJnQUFKd1FBQUFZWkFpTUlBU0JtCkJnQUFC
aGNCQVFFQkVjb0VBQUFCQUNCbUJnQUFCaGNCQVFFQkVjb0VBQUFCRXRRRUFBQUFJR1lHQUFBR0Z3
RUJBUUVSeWdRQUFBRVMKMlFRQUFBQUFDTjRFQUFCbUJnQUFCaHNGWkFVQUFCeGtCUUFBSFZVRkFB
QWVaQVVBQUF0dEJnQUFJQVlmRHlrR0FBQy9CQUFBQmlBQwpJd0FCRDFRR0FBQkZCUUFBQmlFQ0l4
QUJJRzBHQUFBR0h3RUJBUUVSVUFVQUFBRUFJRzBHQUFBR0h3RUJBUUVSVUFVQUFBRVNXZ1VBCkFB
QWdiUVlBQUFZZkFRRUJBUkZRQlFBQUFSSmZCUUFBQUNCMEJnQUFCaDhCQVFFQkVWQUZBQUFCQUFB
SVpBVUFBRzBHQUFBQ0l4ejkKQlFBQUJlZ0ZBQUFJQUFRQUFPNElBQUFDQ0NIOUJRQUFLUWtBQUJn
Q1J5TFlBQUFBUEFBQUFBSWpBQUVCRHdFQkFBQW5BQUFBQW1BQwpJd2dDRHdvQkFBQmVBQUFBQW1F
Q0l3d0NENmNCQUFEREFBQUFBbUlDSXhBQ0k4OEZBQUFDU1FFQ0VBQUJBUUg5QlFBQUVRVUVBQUFC
CkFDVGZCUUFBREFZQUFBSkxBZ0lRQWdFQkFmMEZBQUFSQlFRQUFBRVNGUVFBQUJMZEJRQUFBQ1Y4
QmdBQXFRWUFBQUpNNWdNQUFBRUMKRUFNQkFRSDlCUUFBRWUwRkFBQUJFdDBGQUFBU3Z3UUFBQUFs
c1FZQUFOVUdBQUFDVFVVRkFBQUJBaEFFQVFFQi9RVUFBQkh0QlFBQQpBUUFVNFFZQUFCd0hBQUFD
VHdFQkFSRUZCQUFBQVJKZUFBQUFBQk1sQndBQVFnY0FBQUpRWGdBQUFBRUJBUkh0QlFBQUFRQVVT
QWNBCkFHZ0hBQUFDVWdFQkFSRUZCQUFBQVJJbkFBQUFBQk55QndBQWtBY0FBQUpUSndBQUFBRUJB
Ukh0QlFBQUFRQVRsd2NBQUxnSEFBQUMKVmVZREFBQUJBUUVSN1FVQUFBRUFFOElIQUFEakJ3QUFB
bGJtQXdBQUFRRUJFZTBGQUFBQkFCUHRCd0FBRGdnQUFBSlg1Z01BQUFFQgpBUkh0QlFBQUFRQWtH
QWdBQUZrSUFBQUNXZ0VDRUFVQkFRTDlCUUFBRWUwRkFBQUJFaFVFQUFBUzNRVUFBQUFrY1FnQUFL
OElBQUFDCld3RUNFQVlCQVFMOUJRQUFFZTBGQUFBQkVoVUVBQUFBRThzSUFBRG9DQUFBQWwzeUJR
QUFBUUVDRWUwRkFBQUJBQlQ1Q0FBQUlBa0EKQUFKZUFRRUNFUVVFQUFBQkV2SUZBQUFBQUFVakNB
QUFIQ01JQUFBRkF3Z0FBQWxpQ2dBQUFRVU5DQUFBQ0JNSUFBQnFDZ0FBQndnaAovUVVBQUhVS0FB
QVlCd3NtL1FVQUFBSWpBQUVrT0FrQUFBd0dBQUFIRFFFQ0VBSUJBUUVqQ0FBQUVmNEhBQUFCRWhV
RUFBQVMzUVVBCkFBQWxjQWtBQU5VR0FBQUhEa1VGQUFBQkFoQUVBUUVCSXdnQUFCRUlDQUFBQVFB
a253a0FBRmtJQUFBSEVRRUNFQVVCQVFNakNBQUEKRVFnSUFBQUJFaFVFQUFBUzNRVUFBQUFrNndr
QUFLOElBQUFIRWdFQ0VBWUJBUU1qQ0FBQUVRZ0lBQUFCRWhVRUFBQUFFelFLQUFCYwpDZ0FBQnhR
WUNBQUFBUUVERVFnSUFBQUJBQUFGSXdnQUFBWG9DUUFBQXV3S0FBQUhCQnpvQ1FBQUJmUUlBQUFG
L1FVQUFBVVNDUUFBCkhCSUpBQUFGQ0FrQUFDSDlCUUFBYmcwQUFDZ0NaU2I5QlFBQUFpTUFBUThO
REFBQUlBUUFBQUp4QWlNWUF3OGFEQUFBSUFRQUFBSnkKQWlNZ0F4UWxEQUFBVVF3QUFBSm5BUUVC
RVFNSkFBQUJFaUFFQUFBQUUxOE1BQUNKREFBQUFtZ2dCQUFBQVFFQkVRMEpBQUFCQUJTVQpEQUFB
dmd3QUFBSnFBUUVCRVFNSkFBQUJFaUFFQUFBQUU4b01BQUR4REFBQUFtc2dCQUFBQVFFQkVRMEpB
QUFCQUJQNkRBQUFLQTBBCkFBSnRJQVFBQUFFQkFSRU5DUUFBQVFBVE53MEFBR0lOQUFBQ2JpQUVB
QUFCQVFFUkRRa0FBQUVTSUFRQUFBQUFCUklKQUFBaDZBa0EKQUlRTkFBQUlBblVpandvQUFEd0FB
QUFDSXdBQkFTT2pDZ0FBQW5jQkFoQUFBUUVCNkFrQUFCSG9DQUFBQVFBa3Nnb0FBT01LQUFBQwpl
UUVDRUFJQkFRSG9DUUFBRWVnSUFBQUJFaWNBQUFBU0ZRUUFBQkxkQlFBQUV1MElBQUFBSlBrS0FB
QTdDd0FBQW5vQkFoQURBUUVCCjZBa0FBQkhvQ0FBQUFSSVZCQUFBRXQwRkFBQVNJQVFBQUJJZ0JB
QUFFdTBJQUFBQUpWTUxBQUNGQ3dBQUFuem1Bd0FBQVFJUUJBRUIKQWVnSkFBQVIrUWdBQUFFU0p3
QUFBQkxkQlFBQUVyOEVBQUFBSlpFTEFBRFZCZ0FBQW4xRkJRQUFBUUlRQlFFQkFlZ0pBQUFSK1Fn
QQpBQUVTSndBQUFBQWx0QXNBQU5vTEFBQUNmLzRJQUFBQ0FoQUdBUUVCNkFrQUFCSDVDQUFBQVJJ
bkFBQUFBQ1hwQ3dBQUJnd0FBQUtBCjR3a0FBQUlDRUFjQkFRSG9DUUFBRWZrSUFBQUJBQUFjS2dz
QUFBVWdDd0FBSWVnSkFBQzFEUUFBQ0FjaUp1Z0pBQUFDSXdBQkp3SEoKRFFBQTJnc0FBQWNrL2dn
QUFBRUNFQVlCQVNvTEFBQVJKUXNBQUFFU0p3QUFBQUFsa2cwQUFBWU1BQUFISmVNSkFBQUJBaEFI
QVFFQgpLZ3NBQUJFbEN3QUFBUUFBS01rTkFBQS9Dd0FBUUJVQUFBQUFBQUNmRlFBQUFBQUFBQUZX
dXdzQUFDbkxBQUFBNHdnQUFBSFVDUVBJClBnRUFBQUFBQUNySEl3QUFBY1RuSndBQUFaSUxBQUFy
a0FjQUFBSEVKd0FBQU5zTEFBQXNLU1VBQUFIRzR3Z0FBQkVNQUFBdFlCVUEKQUFBQUFBQ1lGUUFB
QUFBQUFDMWdGUUFBQUFBQUFKZ1ZBQUFBQUFBQUxwNGxBQUJ3RlFBQUFBQUFBSWNWQUFBQUFBQUFB
ZFF2VkFZQQpBQWtMQWZNbkFBQUJHQ3JISXdBQUJ3dmpDQUFBQVdvTUFBQXdmeVVBQUhVVkFBQUFB
QUFBaHhVQUFBQUFBQUFIQzFzTUFBQXhrU1VBCkFBRkhEQUFBTGlRbEFBQjFGUUFBQUFBQUFIMFZB
QUFBQUFBQUJ3c3VqUU1BQUhVVkFBQUFBQUFBZlJVQUFBQUFBQUFDUnpLa0F3QUEKZFJVQUFBQUFB
QUI5RlFBQUFBQUFBQU5LQUFBQUFDNURKUUFBbFJVQUFBQUFBQUNZRlFBQUFBQUFBQUhXSzVBSEFB
QUNVaWNBQUFDTgpEQUFBQUFBQUFBWG5EQUFBSE9jTUFBQUYzUXdBQUNIOUJRQUExUTRBQUNnSEdD
WVNDUUFBQWlNQUFTUUNEZ0FBREFZQUFBY2FBUUlRCkFnRUJBZWNNQUFBUjJBd0FBQUVTRlFRQUFC
TGRCUUFBQUNROERnQUFXUWdBQUFjZEFRSVFCUUVCQStjTUFBQVI0Z3dBQUFFU0ZRUUEKQUJMZEJR
QUFBQ1NLRGdBQXJ3Z0FBQWNlQVFJUUJnRUJBK2NNQUFBUjRnd0FBQUVTRlFRQUFBQUFCZWNNQUFB
b2tnMEFBR1VMQUFDZwpGUUFBQUFBQUFBRVdBQUFBQUFBQUFWYW1EUUFBS2ZVTkFBQnREUUFBQWU4
SkE5ZytBUUFBQUFBQUtzY2pBQUFCN2VjbkFBQUJzQXdBCkFDNmVKUUFBdXhVQUFBQUFBQUR4RlFB
QUFBQUFBQUh2TDFRR0FBQUpDd0h6SndBQUFTZ3hxU1FBQUFFSkRRQUFNTFlrQUFEQUZRQUEKQUFB
QUFQRVZBQUFBQUFBQUJ4Z0FEZ0FBTWNna0FBQUI1Z3dBQUM3VkpBQUF3QlVBQUFBQUFBRG5GUUFB
QUFBQUFBY1lMaVFsQUFEQQpGUUFBQUFBQUFPY1ZBQUFBQUFBQUFtVXVqUU1BQU1BVkFBQUFBQUFB
NXhVQUFBQUFBQUFDUnpLa0F3QUF3QlVBQUFBQUFBRG5GUUFBCkFBQUFBQU5LQUFBQUFBQUFNL0VP
QUFBZER3QUFBVElZQ0FBQUFTbGNDZ0FBR0FnQUFBRXlDUVBvUGdFQUFBQUFBQnZVSXdBQUFUSVAK
SndBQUcrd2pBQUFCTWlVbkFBQUFITzBJQUFBMFF3OEFBS2dPQUFBSXd3aVdEUUFBQXA4UEFBQUlB
Unk5RGdBQU5lMEFBQUFFQlRiRQpEZ0FBTjhrT0FBQ1ZEUUE0ZEE4QUFOQU9BQUFJbndjSkE1QVdB
QUFBQUFBQXJROEFBRFBkRHdBQUFoQUFBQUV4R0FnQUFBRXBYQW9BCkFCZ0lBQUFCTVFrRDhENEJB
QUFBQUFBYjFDTUFBQUV4RHljQUFCdnNJd0FBQVRFbEp3QUFBRFFoRUFBQXFBNEFBQWllQjVvTkFB
QTIKeEE0QUFEZkpEZ0FBbVEwQU9Fc1FBQUJERHdBQUNIa0dDUU13SkFBQUFBQUFBRzhRQUFBem1C
QUFBTVVRQUFBQk1CZ0lBQUFCS1Z3SwpBQUFZQ0FBQUFUQUpBL2crQVFBQUFBQUFHOVFqQUFBQk1B
OG5BQUFiN0NNQUFBRXdKU2NBQUFBMDdCQUFBS2dPQUFBSWVBWUJEZ0FBCk5zUU9BQUEzeVE0QUFB
QU9BRGdlRVFBQXRnOEFBQWhMQlFrRDBERUFBQUFBQUFCS0VRQUFPWHNSQUFDcEVRQUFBVFFZQ0FB
QXNCUUEKQUFBQUFBQXhGUUFBQUFBQUFBRldLVndLQUFBWUNBQUFBVFFKQXdBL0FRQUFBQUFBTE5R
akFBQUJOQThuQUFCTUN3QUFMT3dqQUFBQgpOQ1VuQUFCdkN3QUFBRFRSRVFBQXFBNEFBQWdmQy9z
TkFBQTJ4QTRBQURmSkRnQUErZzBBT0FRU0FBQkNFQUFBQ1BJSkNRUGdQd0FBCkFBQUFBREVTQUFB
ell4SUFBSW9TQUFBQk14Z0lBQUFCS1Z3S0FBQVlDQUFBQVRNSkF3Zy9BUUFBQUFBQUc5UWpBQUFC
TXc4bkFBQWIKN0NNQUFBRXpKU2NBQUFBMHF4SUFBS2dPQUFBSThRbi9EUUFBTnNRT0FBQTN5UTRB
QVA0TkFEalhFZ0FBdFJBQUFBakVDQWtENEUwQQpBQUFBQUFEOUVnQUFNeWdUQUFCT0V3QUFBUzhZ
Q0FBQUFTbGNDZ0FBR0FnQUFBRXZDUU1RUHdFQUFBQUFBQnZVSXdBQUFTOFBKd0FBCkcrd2pBQUFC
THlVbkFBQUFORzRUQUFDb0RnQUFDRW9GQmc0QUFEYkVEZ0FBTjhrT0FBQUZEZ0E0bVJNQUFDZ1JB
QUFJSEFRSkErQmIKQUFBQUFBQUF2aE1BQURyb0V3QUFBUlFBQUFFMUdBZ0FBQ2xjQ2dBQUdBZ0FB
QUUxQ1FNWVB3RUFBQUFBQUJ2VUl3QUFBVFVQSndBQQpHK3dqQUFBQk5TVW5BQUFBTkJRVUFBQ29E
Z0FBQ0g0TFR3UUFBRGJFRGdBQU44a09BQUJPQkFBNE1oUUFBSm9SQUFBSUlBc0pBL0JwCkFBQUFB
QUFBU2hRQUFETm5GQUFBaHhRQUFBRTJHQWdBQUFFcFhBb0FBQmdJQUFBQk5na0RJRDhCQUFBQUFB
QWIxQ01BQUFFMkR5Y0EKQUJ2c0l3QUFBVFlsSndBQUFEU2hGQUFBcUE0QUFBamhDM2dFQUFBMnhB
NEFBRGZKRGdBQWR3UUFPTVlVQUFBTkVnQUFDSDhMQ1FOQQpiZ0FBQUFBQUFPVVVBQUF6Q1JVQUFD
Z1ZBQUFCTFJnSUFBQUJLVndLQUFBWUNBQUFBUzBKQXlnL0FRQUFBQUFBRzlRakFBQUJMUThuCkFB
QWI3Q01BQUFFdEpTY0FBQUE3UVJVQUFLZ09BQUFJVEMwREFBQTJ4QTRBQURmSkRnQUFMQU1BUEdV
VkFBQi9FZ0FBQ0FZSkE4QnkKQUFBQUFBQUFneFVBQURPbUZRQUF6QlVBQUFFdUdBZ0FBQUVwWEFv
QUFCZ0lBQUFCTGdrRE1EOEJBQUFBQUFBYjFDTUFBQUV1RHljQQpBQnZzSXdBQUFTNGxKd0FBQUR2
c0ZRQUFxQTRBQUFpV1VRTUFBRGJFRGdBQU44a09BQUJRQXdBOEZ4WUFBUEFTQUFBSVRRa0Q4SFVB
CkFBQUFBQUE4RmdBQU0yWVdBQUNBRmdBQUFTc1lDQUFBQVNsY0NnQUFHQWdBQUFFckNRTTRQd0VB
QUFBQUFCdlVJd0FBQVNzUEp3QUEKRyt3akFBQUJLeVVuQUFBQU5KUVdBQUNvRGdBQUNORUROUU1B
QURiRURnQUFOOGtPQUFBMEF3QTRzeFlBQUdJVEFBQUlpZ01KQTFCNQpBQUFBQUFBQXpCWUFBRFBx
RmdBQUN4Y0FBQUVzR0FnQUFBRXBYQW9BQUJnSUFBQUJMQWtEUUQ4QkFBQUFBQUFiMUNNQUFBRXNE
eWNBCkFCdnNJd0FBQVN3bEp3QUFBRFFtRndBQXFBNEFBQWdiQkU4REFBQTJ4QTRBQURmSkRnQUFU
Z01BT0V3WEFBRFZFd0FBQ05JRENRT1EKZkFBQUFBQUFBR3dYQUFBemtSY0FBSzhYQUFBQkl4Z0lB
QUFCS1Z3S0FBQVlDQUFBQVNNSkEwZy9BUUFBQUFBQUc5UWpBQUFCSXc4bgpBQUFiN0NNQUFBRWpK
U2NBQUFBMHh4Y0FBS2dPQUFBSWd3RmxBd0FBTnNRT0FBQTN5UTRBQUdRREFEanFGd0FBU0JRQUFB
ZzRBUWtECjRIOEFBQUFBQUFBSEdBQUFNeWtZQUFCT0dBQUFBU1FZQ0FBQUFTbGNDZ0FBR0FnQUFB
RWtDUU5RUHdFQUFBQUFBQnZVSXdBQUFTUVAKSndBQUcrd2pBQUFCSkNVbkFBQUFORzBZQUFDb0Rn
QUFDTklCakFNQUFEYkVEZ0FBTjhrT0FBQ0xBd0E0bHhnQUFMc1VBQUFJaEFFSgpBMUNEQUFBQUFB
QUF1eGdBQURQa0dBQUEvUmdBQUFFbkdBZ0FBQUVwWEFvQUFCZ0lBQUFCSndrRFdEOEJBQUFBQUFB
YjFDTUFBQUVuCkR5Y0FBQnZzSXdBQUFTY2xKd0FBQURRUUdRQUFxQTRBQUFpdEFnMERBQUEyeEE0
QUFEZkpEZ0FBREFNQU9DNFpBQUF1RlFBQUNHa0MKQ1FQZ2hnQUFBQUFBQUVZWkFBQXpZeGtBQUlN
WkFBQUJLQmdJQUFBQktWd0tBQUFZQ0FBQUFTZ0pBMkEvQVFBQUFBQUFHOVFqQUFBQgpLQThuQUFB
YjdDTUFBQUVvSlNjQUFBQTBuUmtBQUtnT0FBQUk5QUlsQXdBQU5zUU9BQUEzeVE0QUFDUURBRGpD
R1FBQW9SVUFBQWl1CkFna0Q4SWtBQUFBQUFBRGhHUUFBTXdVYUFBQWRHZ0FBQVNrWUNBQUFBU2xj
Q2dBQUdBZ0FBQUVwQ1FOb1B3RUFBQUFBQUJ2VUl3QUEKQVNrUEp3QUFHK3dqQUFBQktTVW5BQUFB
TkM4YUFBQ29EZ0FBQ0QwRFBRTUFBRGJFRGdBQU44a09BQUE4QXdBNFRCb0FBQlFXQUFBSQo5UUlK
QXlDTkFBQUFBQUFBWXhvQUFETi9HZ0FBbmhvQUFBRXFHQWdBQUFFcFhBb0FBQmdJQUFBQktna0Rj
RDhCQUFBQUFBQWIxQ01BCkFBRXFEeWNBQUJ2c0l3QUFBU29sSndBQUFEUzNHZ0FBcUE0QUFBaUpB
MlFEQUFBMnhBNEFBRGZKRGdBQVl3TUFPTnNhQUFDSEZnQUEKQ0Q0RENRTmdrQUFBQUFBQUFQa2FB
QUF6SEJzQUFEUWJBQUFCSlJnSUFBQUJLVndLQUFBWUNBQUFBU1VKQTNnL0FRQUFBQUFBRzlRagpB
QUFCSlE4bkFBQWI3Q01BQUFFbEpTY0FBQUEwUmhzQUFLZ09BQUFJR3dKRUF3QUFOc1FPQUFBM3lR
NEFBRU1EQURoakd3QUEraFlBCkFBalRBUWtEMEpNQUFBQUFBQUI2R3dBQU01WWJBQUMxR3dBQUFT
WVlDQUFBQVNsY0NnQUFHQWdBQUFFbUNRT0FQd0VBQUFBQUFCdlUKSXdBQUFTWVBKd0FBRyt3akFB
QUJKaVVuQUFBQU5NNGJBQUNvRGdBQUNHZ0NkUU1BQURiRURnQUFOOGtPQUFCMEF3QTQ4aHNBQUcw
WApBQUFJSEFJSkF5Q1hBQUFBQUFBQUVCd0FBRE16SEFBQVVSd0FBQUUzR0FnQUFBRXBYQW9BQUJn
SUFBQUJOd2tEaUQ4QkFBQUFBQUFiCjFDTUFBQUUzRHljQUFCdnNJd0FBQVRjbEp3QUFBRHRwSEFB
QXFBNEFBQWprZVFNQUFEYkVEZ0FBTjhrT0FBQjRBd0E4akJ3QUFOOFgKQUFBSWx3a0RvSm9BQUFB
QUFBQ3BIQUFBTThzY0FBRHdIQUFBQVRnWUNBQUFBU2xjQ2dBQUdBZ0FBQUU0Q1FPUVB3RUFBQUFB
QUJ2VQpJd0FBQVRnUEp3QUFHK3dqQUFBQk9DVW5BQUFBTkE4ZEFBQ29EZ0FBQ0RjQnVnTUFBRGJF
RGdBQU44a09BQUM1QXdBOE9SMEFBRkVZCkFBQUk1UWtESUo0QUFBQUFBQUJkSFFBQU9ZWWRBQUN2
SFFBQUFUb1lDQUFBSUFzQUFBQUFBQUNoQ3dBQUFBQUFBQUZXS1Z3S0FBQVkKQ0FBQUFUb0pBNWcv
QVFBQUFBQUFMTlFqQUFBQk9nOG5BQUEyQmdBQUxPd2pBQUFCT2lVbkFBQlpCZ0FBQURUU0hRQUFx
QTRBQUFpRgpESkVEQUFBMnhBNEFBRGZKRGdBQWtBTUFPQUFlQUFEY0dBQUFDRFlNQ1FQZ29RQUFB
QUFBQUNnZUFBQTVWUjRBQUhjZUFBQUJPUmdJCkFBQ1FDZ0FBQUFBQUFCRUxBQUFBQUFBQUFWWXBY
QW9BQUJnSUFBQUJPUWtEb0Q4QkFBQUFBQUFzMUNNQUFBRTVEeWNBQVBBRkFBQXMKN0NNQUFBRTVK
U2NBQUJNR0FBQUFOSk1lQUFDb0RnQUFDRFVNeHdNQUFEYkVEZ0FBTjhrT0FBREdBd0E0dWg0QUFH
Z1pBQUFJNGdzSgpBNENsQUFBQUFBQUEyeDRBQUNnNENRQUFPQWdBQUFBQUFBQUFBQUFBWEFFQUFB
QUFBQUFCVnE0WkFBQXF4eU1BQUFFODR3Z0FBQUVBCkFBQUFLOHdqQUFBQlBCVUVBQUEyQUFBQVBj
SWpBQUFCUE4wRkFBQUNrUkF1aFNZQUFQMEFBQUFBQUFBQUVRRUFBQUFBQUFBQlFqNlcKSmdBQUNB
QUFBQUFBQUFBQUFBQW9jQWtBQUY4SUFBQVFDZ0FBQUFBQUFJb0tBQUFBQUFBQUFWWWhHZ0FBS3Nj
akFBQUJSakFuQUFBQgpxZ1VBQUN3YUpBQUFBVWdZQ0FBQXpRVUFBQUFvTkFvQUFNa0lBQUJnQVFB
QUFBQUFBTmNKQUFBQUFBQUFBVlpnR2dBQUtzY2pBQUFCClRqQW5BQUFCYkFBQUFDeGNDZ0FBQVZB
WUNBQUFKd0VBQUMyR0FRQUFBQUFBQU5JSkFBQUFBQUFBTWlNbUFBQ0dBUUFBQUFBQUFJb0IKQUFB
QUFBQUFBV1kvYnhRQUFBQUFBQUFCWmtDVUZBQUFTZ0VBQUVDZkZBQUFiUUVBQUVBaEZBQUFlZ01B
QUVBc0ZBQUFuUU1BQUFBeQpJeVlBQUE0Q0FBQUFBQUFBRWdJQUFBQUFBQUFCV2o4RkdBQUFNQUFB
QUFGYVFDb1lBQUNRQVFBQVFEVVlBQUN6QVFBQVFMa1hBQURBCkF3QUFRTVFYQUFEakF3QUFBRElq
SmdBQWxnSUFBQUFBQUFDYUFnQUFBQUFBQUFGZ1B6c1dBQUJnQUFBQUFXQkFZQllBQU5ZQkFBQkEK
YXhZQUFQa0JBQUJBN1JVQUFBWUVBQUJBK0JVQUFDa0VBQUFBTWlNbUFBQWVBd0FBQUFBQUFDSURB
QUFBQUFBQUFXay9pUk1BQUpBQQpBQUFCYVVDdUV3QUFIQUlBQUVDNUV3QUFQd0lBQUVBN0V3QUFU
QVFBQUVCR0V3QUFid1FBQUFBeUl5WUFBS1lEQUFBQUFBQUFxZ01BCkFBQUFBQUFCYkQrbEVnQUF3
QUFBQUFGc1FNb1NBQUJpQWdBQVFOVVNBQUNGQWdBQVFGa1NBQUNTQkFBQVFHUVNBQUMxQkFBQUFE
SWoKSmdBQUxnUUFBQUFBQUFBeUJBQUFBQUFBQUFGdlA4RVJBQUR3QUFBQUFXOUE1aEVBQUtnQ0FB
QkE4UkVBQU1zQ0FBQXMxQ01BQUFFMQpEeWNBQU5nRUFBQXM3Q01BQUFFMUpTY0FBUHNFQUFBQU1p
TW1BQUMyQkFBQUFBQUFBTUlFQUFBQUFBQUFBVmN5SXlZQUFNSUVBQUFBCkFBQUF6QVFBQUFBQUFB
QUJWRElqSmdBQTFRUUFBQUFBQUFEWkJBQUFBQUFBQUFGZFB5RVhBQUFnQVFBQUFWMUFSaGNBQU80
Q0FBQkEKVVJjQUFCRURBQUJBMHhZQUFCNEZBQUJBM2hZQUFFRUZBQUFBTWlNbUFBQmRCUUFBQUFB
QUFHRUZBQUFBQUFBQUFXTS9WUlVBQUZBQgpBQUFCWTBCNkZRQUFOQU1BQUVDRkZRQUFWd01BQUVB
SEZRQUFaQVVBQUVBU0ZRQUFod1VBQUFBQUFDZ0NEZ0FBL0F3QUFMQUxBQUFBCkFBQUFwQlFBQUFB
QUFBQUJWaU1kQUFBcXh5TUFBQUYrYlEwQUFBRjhCZ0FBSzh3akFBQUJmaFVFQUFEdkJnQUFQY0lq
QUFBQmZ0MEYKQUFBQ2tSQkJJeVFBQUFHT1JDY0FBQU9ScUg4c1lTUUFBQUdQRlFRQUFIVUhBQUFz
Y0NRQUFBR0JHQWdBQU0wSUFBQXM2QWdBQUFHUQo4Z1VBQVBBSUFBQXNleVFBQUFHZEp3UUFBQ2dK
QUFBc2hpUUFBQUdlSndRQUFJd0pBQUFza0NRQUFBR2pKd1FBQU9jSkFBQXNvU1FBCkFBR21Kd1FB
QUMwS0FBQXNzQ1FBQUFHcUp3UUFBTGtLQUFBYnZ5UUFBQUdBR0FnQUFCdkpKQUFBQVlNZ0JBQUFH
OUFrQUFBQmsrWUQKQUFBYjRDUUFBQUdnSndRQUFCdnVKQUFBQWFRbkJBQUFHLzRrQUFBQnFTY0VB
QUF1MWlVQUFNY0xBQUFBQUFBQUdRd0FBQUFBQUFBQgpnMElJSmdBQWdBRUFBQUp0QUMwWkRBQUFB
QUFBQUNVTkFBQUFBQUFBTHR3UUFBQVpEQUFBQUFBQUFJNE1BQUFBQUFBQUFZVkFBUkVBCkFQc0hB
QUJBREJFQUFCNElBQUFBTG1rUUFBQ3FEQUFBQUFBQUFDVU5BQUFBQUFBQUFZWkFqaEFBQUVFSUFB
QkFtUkFBQUdRSUFBQUEKQUMwbERRQUFBQUFBQUtJTkFBQUFBQUFBTG1vUEFBQWxEUUFBQUFBQUFK
b05BQUFBQUFBQUFZZ3MxQ01BQUFFd0R5Y0FBSWNJQUFBcwo3Q01BQUFFd0pTY0FBS29JQUFBQUFE
K0ZKZ0FBc0FFQUFBR2hMMEVHQUFBR0RnRW5CQUFBQ0FBQUFBQUFBQUFBQUM2K0pRQUFzdzhBCkFB
QUFBQUM0RHdBQUFBQUFBQUdnS3dvbEFBQUtKU2NFQUFERUNRQUFBQzYrSlFBQVpSQUFBQUFBQUFC
cUVBQUFBQUFBQUFHa0t3b2wKQUFBS0pTY0VBQUFLQ2dBQUFEK0ZKZ0FBNEFFQUFBR25MMEVHQUFB
R0RnRW5CQUFBQ0FBQUFBQUFBQUFBQUM2K0pRQUEveEFBQUFBQQpBQUFFRVFBQUFBQUFBQUdwS3dv
bEFBQUtKU2NFQUFCUUNnQUFBQzBVRVFBQUFBQUFBSTBTQUFBQUFBQUFHeEFsQUFBQnJOMEZBQUF1
Cjl3NEFBTkVSQUFBQUFBQUFSaElBQUFBQUFBQUJyMEFjRHdBQWN3b0FBRUFuRHdBQWxnb0FBQUFB
TGJrU0FBQUFBQUFBTWhRQUFBQUEKQUFBYkd5VUFBQUcwM1FVQUFDNXNEZ0FBZmhNQUFBQUFBQUR6
RXdBQUFBQUFBQUczTE5RakFBQUJNZzhuQUFBR0N3QUFMT3dqQUFBQgpNaVVuQUFBcEN3QUFBQUFB
UXdFZkFBQWVId0FBQnlJQkFRRk9JQUFBRVU4ckFBQUJBRVF6SHdBQU9oOEFBQWtOQVFFQlJVNGxB
QUFKCkRRRzlKUUFBQUVOS0h3QUFIaDhBQUFjaUFRRUJnaUFBQUJGUEt3QUFBUUJHWng4QUFCNGZB
QUFISWdFQkdNY2pBQUFISWtvckFBQUIKQUVlRUh3QUFBZ29BQUJqSEl3QUFBbmZVS3dBQUFRQW9p
ZzRBQUVvTkFBREFxZ0FBQUFBQUFNMnFBQUFBQUFBQUFWYllJQUFBS3NjagpBQUFISGtVckFBQUIw
eEFBQUN2TUl3QUFCeDRWQkFBQTloQUFBQUFvUEE0QUFDTU5BQUN3cWdBQUFBQUFBTDJxQUFBQUFB
QUFBVllYCklRQUFLc2NqQUFBSEhVVXJBQUFCZWhBQUFDdk1Jd0FBQngwVkJBQUFuUkFBQUQxZEpR
QUFCeDNkQlFBQUFwRVFBQ2l4QmdBQXJ3WUEKQUpDcUFBQUFBQUFBcHFvQUFBQUFBQUFCVm1RaEFB
QXF4eU1BQUFKTmhDa0FBQUZYRUFBQUFFT2JId0FBd0I4QUFBY1lBUUVCaHlFQQpBQkhZREFBQUFR
QkkzUjhBQU1BZkFBQUhHQUVCQWFFaEFBQUJFZGdNQUFBQkFFa0NJQUFBd0I4QUFBY1lBUUc2SVFB
QUFSakhJd0FBCkJ4aHREUUFBQVFCS0p5QUFBRVlnQUFBQ1pRRUJBUmpISXdBQUFtWGpDUUFBQVFB
WlhTQUFBRVFHQUFEd0lRQUFBUmpISXdBQUFrbisKQ0FBQUFRQW9kU0FBQUVRR0FBQWdxd0FBQUFB
QUFGT3JBQUFBQUFBQUFWWWNJZ0FBS3NjakFBQUNTZjRJQUFBQi9oRUFBRERVSWdBQQpLYXNBQUFB
QUFBQlRxd0FBQUFBQUFBSkpSeUlBQUNySEl3QUFBa24rQ0FBQUFWY1NBQUJMVGlVQUFBa05BYjBs
QUFDZEVnQUFNT0loCkFBQXBxd0FBQUFBQUFFV3JBQUFBQUFBQUFrbUNJZ0FBS3NjakFBQUNTZjRJ
QUFBQk5CSUFBQzVPQXdBQU42c0FBQUFBQUFCRnF3QUEKQUFBQUFBSkpMbVVEQUFBM3F3QUFBQUFB
QUVXckFBQUFBQUFBQTJVc1NpVUFBQU5sMWdBQUFIb1NBQUFBQUFBQUFFeU5JQUFBUkFZQQpBUENx
QUFBQUFBQUFFNnNBQUFBQUFBQUJWdlFpQUFBQktzY2pBQUFDU2Y0SUFBQUJsUkVBQUREaUlRQUE5
S29BQUFBQUFBQVJxd0FBCkFBQUFBQUpKSHlNQUFDckhJd0FBQWtuK0NBQUFBYmdSQUFBdVRnTUFB
QUtyQUFBQUFBQUFFYXNBQUFBQUFBQUNTUzVsQXdBQUFxc0EKQUFBQUFBQVJxd0FBQUFBQUFBTmxM
RW9sQUFBRFpkWUFBQURiRVFBQUFBQUFBQ2pyQ1FBQXB3Z0FBQkNxQUFBQUFBQUFIYW9BQUFBQQpB
QUFCVm84akFBQXF4eU1BQUFjU01DY0FBQUhURGdBQUs4d2pBQUFIRWhVRUFBRDJEZ0FBQUNpZkNR
QUFnQWdBQUFDcUFBQUFBQUFBCkRhb0FBQUFBQUFBQlZzNGpBQUFxeHlNQUFBY1JNQ2NBQUFGNkRn
QUFLOHdqQUFBSEVSVUVBQUNkRGdBQVBWMGxBQUFIRWQwRkFBQUMKa1JBQUtId0dBQUNFQmdBQXdL
a0FBQUFBQUFEMnFRQUFBQUFBQUFGV0d5UUFBQ3JISXdBQUFreUVLUUFBQVZjT0FBQTlVQ1VBQUFK
TQozUVVBQUFLUkVFMVhKUUFBQWt5L0JBQUFBRVBuSUFBQUNpRUFBQWNMQVFFQlZ5UUFBQkgrQndB
QUFRQklKU0VBQUFvaEFBQUhDd0VCCkFYRWtBQUFCRWY0SEFBQUJBRWxJSVFBQUNpRUFBQWNMQVFH
S0pBQUFBUmpISXdBQUJ3dmpDQUFBQVFCSmF5RUFBTlVPQUFBSEdBRUIKcVNRQUFBRVl4eU1BQUFj
WWJRMEFBQUVBU1pBaEFBRFZEZ0FBQnhnQkFjZ2tBQUFCR01jakFBQUhHRzBOQUFBQkFFcTFJUUFB
YmcwQQpBQUpsQVFFQkdNY2pBQUFDWmVNSkFBQUJBRWJVSVFBQVJpQUFBQUpsQVFFWXh5TUFBQUps
NHdrQUFBRUFSdk1oQUFCR0lBQUFBbVVCCkFSakhJd0FBQW1YakNRQUFBUUJKRWlJQUFDa0pBQUFD
UndFQk5pVUFBQUVZeHlNQUFBSkgvZ2dBQUFFQUYwZ0hBQUFEQndBQUFSakgKSXdBQUFsTCtDQUFB
QVUyUUJ3QUFBbEluQUFBQUFFWnNJZ0FBZFFvQUFBY0xBUUVZeHlNQUFBY0w0d2dBQUFFQVNZOGlB
QUIxQ2dBQQpCd3NCQVpFbEFBQUJHTWNqQUFBSEMrTUlBQUFCQUU2eUlnQUF1Q0lBQUFrTEFiMGxB
QUFCQVVWVUJnQUFDUXNCOHljQUFBQlBVTVVpCkFBQUtKU2NFQUFBQlRRb2xBQUFLSlNjRUFBQUFG
L29NQUFDckNRQUFBUmpISXdBQUFtMDFKd0FBQVFBWlh3d0FBRjhKQUFEN0pRQUEKQVJqSEl3QUFB
bWcxSndBQUFRQVp5Z3dBQUpJSkFBQVdKZ0FBQVJqSEl3QUFBbXMxSndBQUFRQVhsd2NBQURZSEFB
QUJHTWNqQUFBQwpWWVFwQUFBQkFFZHlCd0FBSFFjQUFCakhJd0FBQWxPRUtRQUFBUUJSelNJQUFO
OGlBQUFHQ0FGRkJRQUFSVmtHQUFBR0NBRW5CQUFBClJWOEdBQUFHQ0FFbkJBQUFVbFFHQUFBR0Nn
RkZCUUFBQUZQcUlnQUEvaUlBQUFZT0FkMEZBQUFCUlVFR0FBQUdEZ0VuQkFBQVJUQUcKQUFBR0Rn
RW5CQUFBUlZrR0FBQUdEZ0VuQkFBQVJWOEdBQUFHRGdFbkJBQUFVc0lqQUFBR0VBSDZKZ0FBQUEy
ckl3QUFCQXNSQndragpBQUFBQnlNakFBQUJCMG9qQUFBQ0IzRWpBQUFEQjQ0akFBQUVBQjNkQlFB
QUNka2pBQUFCSFA4bUFBQUZCU2NBQUFnS0p3QUE0aU1BCkFBRU5DZmtqQUFBQkJSb25BQUFJSUNj
QUFBZ2tBQUFCQ0FVRENBQUFCUWdKQUFBRlJDY0FBQjVFSndBQUN6d2tBQUF3REE4UExpUUEKQUNj
RUFBQU1FQUlqQUFFUE1DUUFBQ2NFQUFBTUVBSWpDQUVQTWlRQUFDY0VBQUFNRUFJakVBRVBOQ1FB
QUNjRUFBQU1FQUlqR0FFUApOaVFBQUNjRUFBQU1FUUlqSUFFUE9TUUFBQ2NFQUFBTUVRSWpLQUVn
UENRQUFBd1BBUUVCQVJFNkp3QUFBUUFnUENRQUFBd1BBUUVCCkFSRTZKd0FBQVJJL0p3QUFBQ0JP
SkFBQURBOEJBUUVCRVRvbkFBQUJBQUFGd3dBQUFBVWdDd0FBQWpFbEFBQUhDQWpzSndBQVF5VUEK
QUFrcVZGNGtBQUJRcVFBQUFBQUFBSE9wQUFBQUFBQUFBVllaS0FBQUtzY2pBQUFIQytNSUFBQUJM
QTBBQUM1NEpBQUFWS2tBQUFBQQpBQUJ4cVFBQUFBQUFBQWNMTVlva0FBQUJUdzBBQUM3aUlRQUFW
S2tBQUFBQUFBQnhxUUFBQUFBQUFBY0xMazREQUFCaXFRQUFBQUFBCkFIR3BBQUFBQUFBQUFra3Va
UU1BQUdLcEFBQUFBQUFBY2FrQUFBQUFBQUFEWlVDQUF3QUFjZzBBQUFBQUFBQUFWRVVrQUFDQXFR
QUEKQUFBQUFMT3BBQUFBQUFBQUFWYTRLQUFBS3NjakFBQUhDK01JQUFBQmxRMEFBREJlSkFBQWlh
a0FBQUFBQUFDenFRQUFBQUFBQUFjTAo0eWdBQUNySEl3QUFCd3ZqQ0FBQUFlNE5BQUJMVGlVQUFB
a05BYjBsQUFBMERnQUFMbmdrQUFDSnFRQUFBQUFBQUtXcEFBQUFBQUFBCkJ3c3F4eU1BQUFjTDR3
Z0FBQUhMRFFBQUx1SWhBQUNKcVFBQUFBQUFBS1dwQUFBQUFBQUFCd3N1VGdNQUFKZXBBQUFBQUFB
QXBha0EKQUFBQUFBQUNTUzVsQXdBQWw2a0FBQUFBQUFDbHFRQUFBQUFBQUFObExFb2xBQUFEWmRZ
QUFBQVJEZ0FBQUFBQUFBQUFCZWdGQUFCVQpqaUVBQUNDcUFBQUFBQUFBUTZvQUFBQUFBQUFCVnFR
cEFBQXF4eU1BQUFjWWJRMEFBQUVzRHdBQUxxZ2hBQUFrcWdBQUFBQUFBRUdxCkFBQUFBQUFBQnhn
eHVpRUFBQUZQRHdBQUxzY2hBQUFrcWdBQUFBQUFBRUdxQUFBQUFBQUFCeGd1NGlFQUFDU3FBQUFB
QUFBQVFhb0EKQUFBQUFBQUNaUzVPQXdBQU1xb0FBQUFBQUFCQnFnQUFBQUFBQUFKSkxtVURBQUF5
cWdBQUFBQUFBRUdxQUFBQUFBQUFBMlVzU2lVQQpBQU5sMWdBQUFISVBBQUFBQUFBQUFBQlVkU0VB
QUZDcUFBQUFBQUFBZzZvQUFBQUFBQUFCVm1FcUFBQXF4eU1BQUFjWWJRMEFBQUdWCkR3QUFNSTRo
QUFCWnFnQUFBQUFBQUlPcUFBQUFBQUFBQnhpTUtnQUFLc2NqQUFBSEdHME5BQUFCN2c4QUFFdE9K
UUFBQ1EwQnZTVUEKQURRUUFBQXVxQ0VBQUZtcUFBQUFBQUFBZGFvQUFBQUFBQUFIR0NySEl3QUFC
eGh0RFFBQUFjc1BBQUF1eHlFQUFGbXFBQUFBQUFBQQpkYW9BQUFBQUFBQUhHQzdpSVFBQVdhb0FB
QUFBQUFCMXFnQUFBQUFBQUFKbExrNERBQUJucWdBQUFBQUFBSFdxQUFBQUFBQUFBa2t1ClpRTUFB
R2VxQUFBQUFBQUFkYW9BQUFBQUFBQURaU3hLSlFBQUEyWFdBQUFBRVJBQUFBQUFBQUFBQUFBRjNR
d0FBQVVxQ3dBQUJTb0wKQUFCVWNDQUFBTkNxQUFBQUFBQUExcW9BQUFBQUFBQUJWbThyQUFBcXh5
TUFBQWNpU2lzQUFBRXNFUUFBQUZROElBQUE0S29BQUFBQQpBQURxcWdBQUFBQUFBQUZXbXlzQUFD
ckhJd0FBQnlKS0t3QUFBVThSQUFBdVZTQUFBT1NxQUFBQUFBQUE1YW9BQUFBQUFBQUhJa3RPCkpR
QUFDUTBCdlNVQUFISVJBQUFBQUFYb0NRQUFBQUVSQVNVT0V3VUREaEVCRUFZYkR1Ri9EQUFBQWlR
QUF3NCtDd3NMQUFBREZRQkoKRXdBQUJBOEFTUk1ERGdBQUJROEFTUk1BQUFZRUFRc0xPZ3M3Q3dB
QUJ5Z0FBdzRjRFFBQUNCWUFTUk1ERGpvTE93c0FBQWtUQUFNTwpQQXdBQUFvNUFRTU9PZ3M3Q3dB
QUN4TUJBdzRMQ3pvTE93c0FBQXd2QUVrVEF3NEFBQTBFQVFNT0N3czZDenNMQUFBT0FnRUREZ3NM
Ck9nczdDd0FBRHcwQUF3NUpFem9MT3dzNENqSUxBQUFRTGdFRERqb0xPd3M4REQ4TU1nc0FBQkVG
QUVrVE5Bd0FBQklGQUVrVEFBQVQKTGdHSFFBNEREam9MT3d0SkV6d01Qd3d5Q3dBQUZDNEJoMEFP
QXc0NkN6c0xQQXcvRERJTEFBQVZMZ0dIUUE0RERqb0xPd3RKRXp3TQpQd3d5QzJNTUFBQVdMZ0NI
UUE0RERqb0xPd3RKRXp3TVB3d3lDd0FBRnk0QmgwQU9SeE1nQ3dBQUdBVUFBdzQ2Q3pzTFNSTTBE
QUFBCkdTNEJoMEFPUnhOa0V5QUxBQUFhQ3dFQUFCczBBQU1PT2dzN0Mwa1RBQUFjSmdCSkV3QUFI
UkFBU1JNQUFCNUNBRWtUQUFBZkh3QkoKRXgwVEFBQWdMZ0VERGpvTE93czhERFFNUHd3eUN3QUFJ
UUlCSFJNRERnc0xPZ3M3Q3dBQUlnMEFBdzVKRXpnS01nczBEQUFBSXk0QgpBdzQ2Q3pzTFRBdE5D
andNUHd3eUN4MFRBQUFrTGdHSFFBNEREam9MT3d0TUMwMEtQQXcvRERJTEhSTUFBQ1V1QVlkQURn
TU9PZ3M3CkMwa1RUQXROQ2p3TVB3d3lDeDBUQUFBbUhBQkpFemdLTWdzQUFDY3VBVElMaDBBT0F3
NDZDenNMU1JOTUMwMEtQQXcvREIwVEFBQW8KTGdHSFFBNUhFeEVCRWdGQUNtUVRBQUFwTkFBRERr
a1RPZ3M3Q3dJS0FBQXFCUUFERGpvTE93dEpFelFNQWdZQUFDc0ZBQU1PT2dzNwpDMGtUQWdZQUFD
dzBBQU1PT2dzN0Mwa1RBZ1lBQUMwTEFSRUJFZ0VBQUM0ZEFURVRFUUVTQVZnTFdRc0FBQzhGQUFN
T09nczdCVWtUCkhBb0FBREFkQVRFVEVRRVNBVmdMV1F0a0V3QUFNUVVBTVJNMERBSUdBQUF5SFFB
eEV4RUJFZ0ZZQzFrTEFBQXpMZ0dIUUE0RERqb0wKT3d0SkV5QUxBQUEwTkFBRERra1RPZ3M3QlJ3
R0FBQTFKQUFERGdzTFBnc0FBRFlCQVVrVEFBQTNJUUJKRXk4RkFBQTROQUFERGtrVApPZ3M3QlFJ
S2gwQU9BQUE1TGdHSFFBNEREam9MT3d0SkV4RUJFZ0ZBQ2dBQU9pNEJoMEFPQXc0NkN6c0xTUk1B
QURzMEFBTU9TUk02CkN6c0xIQVlBQUR3MEFBTU9TUk02Q3pzTEFncUhRQTRBQUQwRkFBTU9PZ3M3
QzBrVEFnb0FBRDRGQURFVEhBb0FBRDhkQVRFVFZRWlkKQzFrTEFBQkFOQUF4RXdJR0FBQkJOQUFE
RGpvTE93dEpFd0lLQUFCQ0hRQXhFMVVHV0F0WkN3QUFReTRCaDBBT0F3NDZDenNMTkF3LwpERHdN
WkJNQUFFUXVBWWRBRGdNT09nczdCVDhNSUFzQUFFVUZBQU1PT2dzN0JVa1RBQUJHTGdHSFFBNERE
am9MT3dzMEREOE1BQUJICkxnR0hRQTVIRXdBQVNDNEJoMEFPQXc0NkN6c0xOQXcvRER3TVpCTWdD
d0FBU1M0QmgwQU9BdzQ2Q3pzTE5Bdy9ER1FUSUFzQUFFb3UKQVlkQURnTU9PZ3M3Q3pRTVB3d2dD
d0FBU3dVQUF3NDZDenNGU1JNQ0JnQUFUQzRCaDBBT1J4TVJBUklCUUFwa0V5QUxBQUJOQlFBRApE
am9MT3d0SkV3QUFUaTRCaDBBT0F3NDZDenNGU1JNL0RDQUxBQUJQRHdBQUFGQXVBUU1PT2dzN0Mw
a1RJQXNBQUZFdUFZZEFEZ01PCk9nczdCVWtUQUFCU05BQUREam9MT3dWSkV3QUFVeTRCaDBBT0F3
NDZDenNGU1JNZ0N3QUFWQzRCUnhNUkFSSUJRQXBrRXdBQUFMRUYKQUFBQ0FKa0NBQUFCQWZzT0RR
QUJBUUVCQUFBQUFRQUFBUzlWYzJWeWN5OWhiR1Y0WTJoeWFYTjBaVzV6Wlc0dmQyVmlhMmwwTDBs
dQpkR1Z5Ym1Gc0wxZGxZa3RwZEZONWMzUmxiVWx1ZEdWeVptRmpaUUF2VlhObGNuTXZZV3hsZUdO
b2NtbHpkR1Z1YzJWdUwzZGxZbXRwCmRDOVBjR1Z1VTI5MWNtTmxMMWRsWWt0cGRFSjFhV3hrTDFK
bGJHVmhjMlV2ZFhOeUwyeHZZMkZzTDJsdVkyeDFaR1V2ZDNSbUFDOVQKZVhOMFpXMHZUR2xpY21G
eWVTOUdjbUZ0WlhkdmNtdHpMMEZ3Y0d4cFkyRjBhVzl1VTJWeWRtbGpaWE11Wm5KaGJXVjNiM0py
TDBaeQpZVzFsZDI5eWEzTXZRMjl5WlVkeVlYQm9hV056TG1aeVlXMWxkMjl5YXk5SVpXRmtaWEp6
QUM5VmMyVnljeTloYkdWNFkyaHlhWE4wClpXNXpaVzR2ZDJWaWEybDBMMDl3Wlc1VGIzVnlZMlV2
VjJWaVMybDBRblZwYkdRdlVtVnNaV0Z6WlM5RVpYSnBkbVZrVTI5MWNtTmwKY3k5WFpXSkxhWFJU
ZVhOMFpXMUpiblJsY21aaFkyVUFMMU41YzNSbGJTOU1hV0p5WVhKNUwwWnlZVzFsZDI5eWEzTXZR
WEJ3YkdsagpZWFJwYjI1VFpYSjJhV05sY3k1bWNtRnRaWGR2Y21zdlJuSmhiV1YzYjNKcmN5OURi
M0psUjNKaGNHaHBZM011Wm5KaGJXVjNiM0pyCkwxQnlhWFpoZEdWSVpXRmtaWEp6QUFCTVpXZGhZ
M2xOWldScFlWVkpMbU53Y0FBQkFBQk5aV1JwWVZWSkxtZ0FBUUFBVW1WMFlXbHUKVUhSeUxtZ0FB
Z0FBVkhsd1pWUnlZV2wwY3k1b0FBSUFBRkpsWmxCMGNpNW9BQUlBQUVOSFIyVnZiV1YwY25rdWFB
QURBQUJNWldkaApZM2xOWldScFlWVkpMbWdBQVFBQVRXVmthV0ZKYldGblpYTXVhQUFFQUFCR1lY
TjBUV0ZzYkc5akxtZ0FBZ0FBUTBkR2JHOWhkQzVvCkFBVUFBRU5IUTI5c2IzSlRjR0ZqWlM1b0FB
TUFBRU5IUVdabWFXNWxWSEpoYm5ObWIzSnRMbWdBQXdBQUFBQUpBZ0FBQUFBQUFBQUEKQXp3QkNn
Z1RBaWtUQWlJVGd3SkFFd1FHQTg4QkFsa0JXUVFCQTdCKzVBSTJFN3NEQzhnRkRRcE5CQUlGQUFJ
aUZRUUJCUlVERVVvRgpBQU8rZjJZRUFnTXhBbjRCQkFFRkZVOEZBQU5lWmdRQ0F4MENmZ0VFQVFV
VkF3dEtCUUFEU21ZRUFnTXJBbjRCQkFFRkZRTVVTZ1VBCkEwTm1CQUlES1FKK0FRUUJCUlVERjBv
RkFBTkNaZ1FDQXljQ2ZnRUVBUVVWQXhwS0JRQURSMllFQWdNZkFuNEJ1Z1FCblFRQ2tRUUIKQlJW
U0JRQURTV1lFQWdNdkFuNEJCQUVGRlFNT1NnVUFBMFZtQXl3Q2ZnRURUNUFERkFKK0FRTnlBbjRC
QW40VUFuNFVBbjRhQTNBQwpmZ0VDZXhRRDB3QUNkUUVEVFFJK0FRcEw4eThDVFJQekEyM0lDa29D
akFFVENrb0R4UUFDakFFQkJBSUtBMndJWmdnK0NHKy9CQUVEClFnaVFBOWNBQW5VQkE2MS9DS3dD
ZXc4RDJRQUNkUUhuQWpNVWh3Sk1GQUltRXdnK0FqNFVnd0pERkFJekV3SXpGQWd4Q0RrRUJnUHgK
QUFJdUFRUUtBNWwrV0FRR0ErZ0JXQVFCQlNnRGozOElrQVVBQWk0VUJSOElMd1VBOFFVZkFqNFRC
QW9GQUFPR2Ywb0VBUVA4QUZnRQpCZ1ByQUFnOEJBRURsWC95QkFZRDZ3QktyUVFCQlNnRGxYOElk
QVViQWtJVUJBb0ZBQU9CZjRJRUFRT0JBVmowOHdKeUV3T0Nmd0k3CkFRUCtBQUoxQVFJM0V3TjZD
T1FEQ1VvSWRnVWc4UVVBaEFKeUV3UDdmZ0k3QVFPRkFRSjFBUUkzRTRYekFqZ1Q1NUVEODM0SXlB
cEsKQTVFQkFvd0JBUW9ERHdqa0x3UUpBemJXQkFNRHYzNVlCQWNEUVlJRUFRUEpBWjRFQWdQK2Z0
WUVBUU9ZQVR5R0NxMHdCQWtER3RZRQpBd08vZmxnRUJ3Tk9BaWNCQkFFRDF3R2UyQUlDQUFFQkJB
Y0FDUUpRcVFBQUFBQUFBQU1LQVFRQ0NnTStTZ1FEQXh6V0JBY0Rwbi9rCjVBUUNDZ00ra0FRREF4
eldCQWtEcUFIV0JBSUR2MzRJbmdwS0JBY0RSUUk4QVFwS3V3cEt3QVFDQ2dNeFNnUURBeHpXQkFj
RHMzL2sKNUFRQ0NnTXhrQVFEQXh6V0JBa0RxQUhXQkFJRHdINEluZ3BLQkFjRFVBaXNDa3E3Q2tx
K0NrcTZCQWtLQStzQlNnUUhBNVYrSUFRQwpBeWVzQ2tvRUF3TWMxZ1FDQTJUazVBcVFCQU1ESE5Z
RUNRT29BZFlDRGdBQkFRQUFBQUFBQUFBQUVRQUFBQUFBQUFBQkFGVVJBQUFBCkFBQUFBRm9CQUFB
QUFBQUFBUUJlQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEZ0FBQUFBQUFBQUJBRlFP
QUFBQUFBQUEKQUZnQkFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUdBQkFBQUFBQUFB
a0FFQUFBQUFBQUFCQUZVT0FnQUFBQUFBQUJnQwpBQUFBQUFBQUFRQlZsZ0lBQUFBQUFBQ2dBZ0FB
QUFBQUFBRUFWUjREQUFBQUFBQUFLQU1BQUFBQUFBQUJBRldtQXdBQUFBQUFBTEFECkFBQUFBQUFB
QVFCVkxnUUFBQUFBQUFBNEJBQUFBQUFBQUFFQVZiWUVBQUFBQUFBQXpBUUFBQUFBQUFBQkFGWFZC
QUFBQUFBQUFOOEUKQUFBQUFBQUFBUUJWWFFVQUFBQUFBQUJuQlFBQUFBQUFBQUVBVlFBQUFBQUFB
QUFBQUFBQUFBQUFBQUJzQVFBQUFBQUFBSVlCQUFBQQpBQUFBQVFCUUFBQUFBQUFBQUFBQUFBQUFB
QUFBQU1nQkFBQUFBQUFBQWdJQUFBQUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBCjB3RUFB
QUFBQUFEMUFRQUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFnQUFBQUFBQUlvQ0FB
QUFBQUFBQVFCZUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFGc0NBQUFBQUFBQWZRSUFBQUFBQUFBQkFG
TUFBQUFBQUFBQUFBQUFBQUFBQUFBQTJBSUFBQUFBQUFBUwpBd0FBQUFBQUFBRUFYZ0FBQUFBQUFB
QUFBQUFBQUFBQUFBRGpBZ0FBQUFBQUFBVURBQUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBCkFB
QUFBR0FEQUFBQUFBQUFtZ01BQUFBQUFBQUJBRjRBQUFBQUFBQUFBQUFBQUFBQUFBQUFhd01BQUFB
QUFBQ05Bd0FBQUFBQUFBRUEKVXdBQUFBQUFBQUFBQUFBQUFBQUFBQURvQXdBQUFBQUFBQ0lFQUFB
QUFBQUFBUUJlQUFBQUFBQUFBQUFBQUFBQUFBQUFBUE1EQUFBQQpBQUFBRlFRQUFBQUFBQUFCQUZN
QUFBQUFBQUFBQUFBQUFBQUFBQUFBY0FRQUFBQUFBQUNxQkFBQUFBQUFBQUVBWGdBQUFBQUFBQUFB
CkFBQUFBQUFBQUFCN0JBQUFBQUFBQUowRUFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFB
QUJjRkFBQUFBQUFBVVFVQUFBQUEKQUFBQkFGNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlnVUFBQUFB
QUFCRUJRQUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFDZgpCUUFBQUFBQUFOa0ZBQUFB
QUFBQUFRQmVBQUFBQUFBQUFBQUFBQUFBQUFBQUFLb0ZBQUFBQUFBQXpBVUFBQUFBQUFBQkFGTUFB
QUFBCkFBQUFBQUFBQUFBQUFBQUFKZ1lBQUFBQUFBQmdCZ0FBQUFBQUFBRUFYZ0FBQUFBQUFBQUFB
QUFBQUFBQUFBQXhCZ0FBQUFBQUFGTUcKQUFBQUFBQUFBUUJUQUFBQUFBQUFBQUFBQUFBQUFBQUFB
S1FHQUFBQUFBQUEzZ1lBQUFBQUFBQUJBRjRBQUFBQUFBQUFBQUFBQUFBQQpBQUFBcndZQUFBQUFB
QURSQmdBQUFBQUFBQUVBVXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFpQndBQUFBQUFBRndIQUFBQUFB
QUFBUUJlCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUMwSEFBQUFBQUFBVHdjQUFBQUFBQUFCQUZNQUFB
QUFBQUFBQUFBQUFBQUFBQUFBb0FjQUFBQUEKQUFEYUJ3QUFBQUFBQUFFQVhnQUFBQUFBQUFBQUFB
QUFBQUFBQUFDckJ3QUFBQUFBQU0wSEFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQQpBQUFBQUFBQUFC
NElBQUFBQUFBQVdBZ0FBQUFBQUFBQkFGNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUtRZ0FBQUFBQUFC
TENBQUFBQUFBCkFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ2NDQUFBQUFBQUFOWUlBQUFBQUFB
QUFRQmVBQUFBQUFBQUFBQUFBQUFBQUFBQUFLY0kKQUFBQUFBQUF5UWdBQUFBQUFBQUJBRk1BQUFB
QUFBQUFBQUFBQUFBQUFBQUFHZ2tBQUFBQUFBQlVDUUFBQUFBQUFBRUFYZ0FBQUFBQQpBQUFBQUFB
QUFBQUFBQUFsQ1FBQUFBQUFBRWNKQUFBQUFBQUFBUUJUQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkVK
QUFBQUFBQUF5d2tBCkFBQUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBbkFrQUFBQUFBQUMr
Q1FBQUFBQUFBQUVBVXdBQUFBQUFBQUFBQUFBQUFBQUEKQUFBUUNnQUFBQUFBQUNZS0FBQUFBQUFB
QVFCVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNFS0FBQUFBQUFBY3dvQUFBQUFBQUFCQUZNQQpBQUFB
QUFBQUFBQUFBQUFBQUFBQXl3b0FBQUFBQUFBRkN3QUFBQUFBQUFFQVhnQUFBQUFBQUFBQUFBQUFB
QUFBQUFEV0NnQUFBQUFBCkFQZ0tBQUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFGc0xB
QUFBQUFBQWxRc0FBQUFBQUFBQkFGNEFBQUFBQUFBQUFBQUEKQUFBQUFBQUFaZ3NBQUFBQUFBQ0lD
d0FBQUFBQUFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ3dDd0FBQUFBQUFOTUxBQUFBQUFBQQpB
UUJWMHdzQUFBQUFBQUNwRFFBQUFBQUFBQU1BZHJoOXFRMEFBQUFBQUFEU0RRQUFBQUFBQUFFQVZk
SU5BQUFBQUFBQWlSUUFBQUFBCkFBQURBSGE0ZllrVUFBQUFBQUFBcEJRQUFBQUFBQUFCQUZVQUFB
QUFBQUFBQUFBQUFBQUFBQUFBc0FzQUFBQUFBQURIQ3dBQUFBQUEKQUFFQVZNY0xBQUFBQUFBQVNB
NEFBQUFBQUFBQkFGOUlEZ0FBQUFBQUFHb09BQUFBQUFBQUF3QjJzSDFxRGdBQUFBQUFBSmdPQUFB
QQpBQUFBQVFCZm1BNEFBQUFBQUFCQUZBQUFBQUFBQUFNQWRyQjlRQlFBQUFBQUFBQ2tGQUFBQUFB
QUFBRUFYZ0FBQUFBQUFBQUFBQUFBCkFBQUFBQURFQ3dBQUFBQUFBTWNMQUFBQUFBQUFBUUJVeHdz
QUFBQUFBQUJJRGdBQUFBQUFBQUVBWDBnT0FBQUFBQUFBWVE0QUFBQUEKQUFBREFIYXdmV0VPQUFB
QUFBQUFtQTRBQUFBQUFBQUJBRitZRGdBQUFBQUFBRUFVQUFBQUFBQUFBd0Iyc0gxQUZBQUFBQUFB
QUtBVQpBQUFBQUFBQUFRQmVBQUFBQUFBQUFBQUFBQUFBQUFBQUFFME1BQUFBQUFBQWh3d0FBQUFB
QUFBQkFGNEFBQUFBQUFBQUFBQUFBQUFBCkFBQUFXQXdBQUFBQUFBQjZEQUFBQUFBQUFBRUFVd0FB
QUFBQUFBQUFBQUFBQUFBQUFBRGlEQUFBQUFBQUFCd05BQUFBQUFBQUFRQmUKQUFBQUFBQUFBQUFB
QUFBQUFBQUFBTzBNQUFBQUFBQUFEdzBBQUFBQUFBQUJBRk1BQUFBQUFBQUFBQUFBQUFBQUFBQUFX
UTBBQUFBQQpBQUNURFFBQUFBQUFBQUVBWGdBQUFBQUFBQUFBQUFBQUFBQUFBQUJrRFFBQUFBQUFB
SVlOQUFBQUFBQUFBUUJUQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUtJTkFBQUFBQUFBb2cwQUFBQUFB
QUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBVHc0QUFBQUFBQUJaRGdBQUFBQUEKQUFFQVVGa09B
QUFBQUFBQXBCUUFBQUFBQUFBREFIYW9mUUFBQUFBQUFBQUFBQUFBQUFBQUFBQW1Ed0FBQUFBQUFD
WVBBQUFBQUFBQQpBd0IyMkgyMUVBQUFBQUFBQUZjUkFBQUFBQUFBQXdCMjJIMWZFUUFBQUFBQUFB
UVRBQUFBQUFBQUF3QjIySDBNRXdBQUFBQUFBS1FVCkFBQUFBQUFBQXdCMjJIMEFBQUFBQUFBQUFB
QUFBQUFBQUFBQVdROEFBQUFBQUFDT0VBQUFBQUFBQUFNQWRwaDlqaEFBQUFBQUFBQ1MKRUFBQUFB
QUFBQUVBWWdBQUFBQUFBQUFBQUFBQUFBQUFBQUN1RHdBQUFBQUFBTGdQQUFBQUFBQUFBUUJoQUFB
QUFBQUFBQUFBQUFBQQpBQUFBQUdFUUFBQUFBQUFBamhBQUFBQUFBQUFCQUdJQUFBQUFBQUFBQUFB
QUFBQUFBQUFBWlJBQUFBQUFBQUJxRUFBQUFBQUFBQUVBCllRQUFBQUFBQUFBQUFBQUFBQUFBQUFD
U0VBQUFBQUFBQUJRUkFBQUFBQUFBQVFCaUFBQUFBQUFBQUFBQUFBQUFBQUFBQVA4UUFBQUEKQUFB
QUJCRUFBQUFBQUFBQkFHRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJSSUFBQUFBQUFBL0VnQUFBQUFB
QUFFQVhnQUFBQUFBQUFBQQpBQUFBQUFBQUFBQVFFZ0FBQUFBQUFESVNBQUFBQUFBQUFRQlRBQUFB
QUFBQUFBQUFBQUFBQUFBQUFLRVNBQUFBQUFBQXNSSUFBQUFBCkFBQUJBR0t4RWdBQUFBQUFBUFFT
QUFBQUFBQUFBd0IyeUgwRUV3QUFBQUFBQUtRVUFBQUFBQUFBQXdCMnlIMEFBQUFBQUFBQUFBQUEK
QUFBQUFBQUFzaE1BQUFBQUFBRHNFd0FBQUFBQUFBRUFYZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQzlF
d0FBQUFBQUFOOFRBQUFBQUFBQQpBUUJUQUFBQUFBQUFBQUFBQUFBQUFBQUFBT3NVQUFBQUFBQUFK
UlVBQUFBQUFBQUJBRjRBQUFBQUFBQUFBQUFBQUFBQUFBQUE5aFFBCkFBQUFBQUFZRlFBQUFBQUFB
QUVBVXdBQUFBQUFBQUFBQUFBQUFBQUFBQUJBRlFBQUFBQUFBSEFWQUFBQUFBQUFBUUJWbFJVQUFB
QUEKQUFDWUZRQUFBQUFBQUFFQVZad1ZBQUFBQUFBQW54VUFBQUFBQUFBQkFGVUFBQUFBQUFBQUFB
QUFBQUFBQUFBQVFCVUFBQUFBQUFCSQpGUUFBQUFBQUFBRUFWRWdWQUFBQUFBQUFtQlVBQUFBQUFB
QUJBRk1BQUFBQUFBQUFBQUFBQUFBQUFBQUFTaFVBQUFBQUFBQlpGUUFBCkFBQUFBQUVBVUpnVkFB
QUFBQUFBbUJVQUFBQUFBQUFCQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZFJVQUFBQUFBQUNWRlFB
QUFBQUEKQUFFQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFCMUZRQUFBQUFBQUpVVkFBQUFBQUFBQVFC
UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpnVgpBQUFBQUFBQW1CVUFBQUFBQUFBQkFGTUFBQUFBQUFB
QUFBQUFBQUFBQUFBQW9CVUFBQUFBQUFDN0ZRQUFBQUFBQUFFQVZmOFZBQUFBCkFBQUFBUllBQUFB
QUFBQUJBRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUF3QlVBQUFBQUFBQUJGZ0FBQUFBQUFBRUFVQUFB
QUFBQUFBQUEKQUFBQUFBQUFBQURBRlFBQUFBQUFBQUVXQUFBQUFBQUFBUUJRQUFBQUFBQUFBQUFB
QUFBQUFBQUFBRkNwQUFBQUFBQUFhNmtBQUFBQQpBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFB
VktrQUFBQUFBQUJtcVFBQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUJtCnFRQUFBQUFB
QUhHcEFBQUFBQUFBQVFCVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUlDcEFBQUFBQUFBaWFrQUFBQUFB
QUFCQUZXSnFRQUEKQUFBQUFMT3BBQUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFJbXBB
QUFBQUFBQXBha0FBQUFBQUFBQkFGTUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFpYWtBQUFBQUFBQ3px
UUFBQUFBQUFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ2JxUUFBQUFBQUFLV3BBQUFBCkFBQUFB
UUJWQUFBQUFBQUFBQUFBQUFBQUFBQUFBS1dwQUFBQUFBQUFyYWtBQUFBQUFBQUJBRk1BQUFBQUFB
QUFBQUFBQUFBQUFBQUEKd0trQUFBQUFBQUQycVFBQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBcWdBQUFBQUFBQWVxQUFBQUFBQUFBUUJWQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFDcUFB
QUFBQUFBQjZvQUFBQUFBQUFCQUZRSHFnQUFBQUFBQUEycUFBQUFBQUFBQVFCVkFBQUFBQUFBCkFB
QUFBQUFBQUFBQUFCQ3FBQUFBQUFBQUY2b0FBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUVLb0FBQUFBQUFBWHFnQUEKQUFBQUFBRUFWQmVxQUFBQUFBQUFIYW9BQUFBQUFBQUJBRlVBQUFB
QUFBQUFBQUFBQUFBQUFBQUFJS29BQUFBQUFBQTdxZ0FBQUFBQQpBQUVBVlFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFrcWdBQUFBQUFBRGFxQUFBQUFBQUFBUUJWQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGFx
CkFBQUFBQUFBUWFvQUFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUtvQUFBQUFBQUJa
cWdBQUFBQUFBQUVBVlZtcUFBQUEKQUFBQWc2b0FBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFB
QUFBQVdhb0FBQUFBQUFCMXFnQUFBQUFBQUFFQVV3QUFBQUFBQUFBQQpBQUFBQUFBQUFBQlpxZ0FB
QUFBQUFJT3FBQUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFHdXFBQUFBQUFBQWRhb0FB
QUFBCkFBQUJBRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFkYW9BQUFBQUFBQjlxZ0FBQUFBQUFBRUFV
d0FBQUFBQUFBQUFBQUFBQUFBQUFBQ1EKcWdBQUFBQUFBS2FxQUFBQUFBQUFBUUJWQUFBQUFBQUFB
QUFBQUFBQUFBQUFBTENxQUFBQUFBQUF0Nm9BQUFBQUFBQUJBRlVBQUFBQQpBQUFBQUFBQUFBQUFB
QUFBc0tvQUFBQUFBQUMzcWdBQUFBQUFBQUVBVkxlcUFBQUFBQUFBdmFvQUFBQUFBQUFCQUZVQUFB
QUFBQUFBCkFBQUFBQUFBQUFBQXdLb0FBQUFBQUFESHFnQUFBQUFBQUFFQVZRQUFBQUFBQUFBQUFB
QUFBQUFBQUFEQXFnQUFBQUFBQU1lcUFBQUEKQUFBQUFRQlV4Nm9BQUFBQUFBRE5xZ0FBQUFBQUFB
RUFWUUFBQUFBQUFBQUFBQUFBQUFBQUFBRFFxZ0FBQUFBQUFOYXFBQUFBQUFBQQpBUUJWQUFBQUFB
QUFBQUFBQUFBQUFBQUFBT0NxQUFBQUFBQUE2cW9BQUFBQUFBQUJBRlVBQUFBQUFBQUFBQUFBQUFB
QUFBQUE1S29BCkFBQUFBQURxcWdBQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUR3cWdB
QUFBQUFBQXVyQUFBQUFBQUFBUUJWQUFBQUFBQUEKQUFBQUFBQUFBQUFBQVBTcUFBQUFBQUFBQnFz
QUFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQnFzQUFBQUFBQUFScXdBQQpBQUFBQUFF
QVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ3F3QUFBQUFBQUNtckFBQUFBQUFBQVFCVkthc0FBQUFB
QUFCVHF3QUFBQUFBCkFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQXBxd0FBQUFBQUFFV3JBQUFB
QUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFDbXIKQUFBQUFBQUFVNnNBQUFBQUFBQUJBRk1B
QUFBQUFBQUFBQUFBQUFBQUFBQUFPNnNBQUFBQUFBQkZxd0FBQUFBQUFBRUFWUUFBQUFBQQpBQUFB
QUFBQUFBQUFBQUJGcXdBQUFBQUFBRTJyQUFBQUFBQUFBUUJUQUFBQUFBQUFBQUFBQUFBQUFBQUFB
REFCQUFBQ0FBQUFBQURhCkt3QUFJd2dBQUUxbFpHbGhUR1ZuWVdONVZVbEpiV0ZuWlVWc1pXMWxi
blFBMWdNQUFFaGhjMmhVWVdKc1pVUmxiR1YwWldSV1lXeDEKWlZSNWNHVUF3d0FBQUZKbGRHRnBi
bEIwY2p4RFIweGhlV1Z5SUNvK0FONEVBQUJEUjFOcGVtVUEvUVVBQUUxbFpHbGhWVWxGYkdWdApa
VzUwQUNvTEFBQk5aV1JwWVV4bFoyRmplVU52Ym5SeWIyeHpBT2NNQUFCTlpXUnBZVXhsWjJGamVW
VkpWR2x0Wld4cGJtVlRiR2xrClpYSUFSQ2NBQUVOSFFXWm1hVzVsVkhKaGJuTm1iM0p0QUVZRUFB
QkRSMUJ2YVc1MEFMUUFBQUJCWkc5d2RFNVRWR0ZuQU9nSkFBQk4KWldScFlVTnZiblJ5YjJ4ekFH
UUZBQUJEUjFKbFkzUUFFZ2tBQUUxbFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNnQ2xBQUFBUVdS
dgpjSFJEUmxSaFp3QUFBQUFBUVhCd2JHVWdURXhXVFNCMlpYSnphVzl1SURVdU1DQW9ZMnhoYm1j
dE5UQXdMakF1TmpBcElDaGlZWE5sClpDQnZiaUJNVEZaTklETXVNM04yYmlrQUwxVnpaWEp6TDJG
c1pYaGphSEpwYzNSbGJuTmxiaTkzWldKcmFYUXZTVzUwWlhKdVlXd3YKVjJWaVMybDBVM2x6ZEdW
dFNXNTBaWEptWVdObEwweGxaMkZqZVUxbFpHbGhWVWt1WTNCd0FDOVZjMlZ5Y3k5aGJHVjRZMmh5
YVhOMApaVzV6Wlc0dmQyVmlhMmwwTDBsdWRHVnlibUZzTDFkbFlrdHBkRk41YzNSbGJVbHVkR1Z5
Wm1GalpRQnphR0Z5WldSQ2RYUjBiMjRBClgzWndkSElrVFdWa2FXRlZTVVZzWlcxbGJuUUFhVzUw
QUY5ZmRuUmliRjl3ZEhKZmRIbHdaUUJ0WDNCaGNuUkpSQUJ0WDNOMFlYUmwKQUZkTFRXVmthV0ZE
YjI1MGNtOXNiR1Z5Um14aFowUnBjMkZpYkdWa0FGZExUV1ZrYVdGRGIyNTBjbTlzYkdWeVJteGha
MUJ5WlhOegpaV1FBVjB0TlpXUnBZVU52Ym5SeWIyeHNaWEpHYkdGblJISmhkMFZ1WkVOaGNITUFW
MHROWldScFlVTnZiblJ5YjJ4c1pYSkdiR0ZuClJtOWpkWE5sWkFCWFMwMWxaR2xoUTI5dWRISnZi
R3hsY2xSb1pXMWxVM1JoZEdVQWJWOXNZWGxsY2dCdFgzQjBjZ0JEUjB4aGVXVnkKQUZSNWNHVUFW
MVJHQUZRQVVtVnRiM1psVUc5cGJuUmxjanhEUjB4aGVXVnlJQ28rQUZaaGJIVmxWSGx3WlFCUWRI
SlVlWEJsQUZKbApkR0ZwYmxCMGNnQkJaRzl3ZEVOR0FFRmtiM0IwUTBaVVlXY0FRV1J2Y0hST1V3
QkJaRzl3ZEU1VFZHRm5BRWhoYzJoVVlXSnNaVVJsCmJHVjBaV1JXWVd4MVpRQklZWE5vVkdGaWJH
VkVaV3hsZEdWa1ZtRnNkV1ZVZVhCbEFGOWFUa3N6VjFSR09WSmxkR0ZwYmxCMGNrbFEKTjBOSFRH
RjVaWEpGTWpOcGMwaGhjMmhVWVdKc1pVUmxiR1YwWldSV1lXeDFaVVYyQUdselNHRnphRlJoWW14
bFJHVnNaWFJsWkZaaApiSFZsQUdKdmIyd0FmbEpsZEdGcGJsQjBjZ0JmV2s0elYxUkdPVkpsZEdG
cGJsQjBja2xRTjBOSFRHRjVaWEpGTldOc1pXRnlSWFlBClkyeGxZWElBWDFwT00xZFVSamxTWlhS
aGFXNVFkSEpKVURkRFIweGhlV1Z5UlRkc1pXRnJVbVZtUlhZQWJHVmhhMUpsWmdCZldrNUwKTTFk
VVJqbFNaWFJoYVc1UWRISkpVRGREUjB4aGVXVnlSVE5uWlhSRmRnQm5aWFFBWDFwT1N6TlhWRVk1
VW1WMFlXbHVVSFJ5U1ZBMwpRMGRNWVhsbGNrVndkRVYyQUc5d1pYSmhkRzl5TFQ0QVgxcE9Tek5Y
VkVZNVVtVjBZV2x1VUhSeVNWQTNRMGRNWVhsbGNrVmpkbE15ClgwVjJBRzl3WlhKaGRHOXlJSE4w
Y25WamRDQkRSMHhoZVdWeUlDb0FYMXBPU3pOWFZFWTVVbVYwWVdsdVVIUnlTVkEzUTBkTVlYbGwK
Y2tWdWRFVjJBRzl3WlhKaGRHOXlJUUJmV2s1TE0xZFVSamxTWlhSaGFXNVFkSEpKVURkRFIweGhl
V1Z5UldOMlRWTXpYMU15WDBWMgpBRzl3WlhKaGRHOXlJSE4wY25WamRDQkRSMHhoZVdWeUlDcGpi
R0Z6Y3lCWFZFWTZPbEpsZEdGcGJsQjBjanh6ZEhKMVkzUWdRMGRNCllYbGxjaUFxUGpvNktnQlZi
bk53WldOcFptbGxaRUp2YjJ4VWVYQmxBRjlhVGpOWFZFWTVVbVYwWVdsdVVIUnlTVkEzUTBkTVlY
bGwKY2tWaFUwVlNTMU16WHdCdmNHVnlZWFJ2Y2owQVZRQmZXazR6VjFSR09WSmxkR0ZwYmxCMGNr
bFFOME5IVEdGNVpYSkZZVk5KVXpKZgpSVVZTVXpOZlVrdE9VekJmU1ZSZlJVVUFiM0JsY21GMGIz
STlQRU5IVEdGNVpYSWdLajRBWDFwT00xZFVSamxTWlhSaGFXNVFkSEpKClVEZERSMHhoZVdWeVJX
RlRSVk15WHdCZldrNHpWMVJHT1ZKbGRHRnBibEIwY2tsUU4wTkhUR0Y1WlhKRllWTkZUMU16WHdC
ZldrNHoKVjFSR09WSmxkR0ZwYmxCMGNrbFFOME5IVEdGNVpYSkZZVk5KVXpKZlJVVlNVek5mVDA1
VE1GOUpWRjlGUlFCZldrNHpWMVJHT1ZKbApkR0ZwYmxCMGNrbFFOME5IVEdGNVpYSkZOSE4zWVhC
RlVsTXpYd0J6ZDJGd0FGOWFUak5YVkVZNVVtVjBZV2x1VUhSeVNWQTNRMGRNCllYbGxja1V5TVdo
aGMyaFVZV0pzWlVSbGJHVjBaV1JXWVd4MVpVVjJBR2hoYzJoVVlXSnNaVVJsYkdWMFpXUldZV3gx
WlFCU1pYUmgKYVc1UWRISThRMGRNWVhsbGNpQXFQZ0IrVFdWa2FXRlZTVVZzWlcxbGJuUUFYMXBP
TVRSTlpXUnBZVlZKUld4bGJXVnVkRFZ3WVdsdQpkRVZRT1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1FB
Y0dGcGJuUUFRMGREYjI1MFpYaDBBRU5IUTI5dWRHVjRkRkpsWmdCdmNtbG5hVzRBCmVBQmtiM1Zp
YkdVQVEwZEdiRzloZEFCNUFFTkhVRzlwYm5RQWZrTkhVRzlwYm5RQWMybDZaUUIzYVdSMGFBQm9a
V2xuYUhRQVEwZFQKYVhwbEFFTkhVbVZqZEFCK1EwZFNaV04wQUY5YVRrc3hORTFsWkdsaFZVbEZi
R1Z0Wlc1ME4yaHBkRlJsYzNSRk5rTkhVbVZqZERkRApSMUJ2YVc1MEFHaHBkRlJsYzNRQVgxcE9T
ekUwVFdWa2FXRlZTVVZzWlcxbGJuUXhNVzVoZEhWeVlXeFRhWHBsUlhZQWJtRjBkWEpoCmJGTnBl
bVVBWDFwT01UUk5aV1JwWVZWSlJXeGxiV1Z1ZERoelpYUlRkR0YwWlVVeU4xZExUV1ZrYVdGRGIy
NTBjbTlzYkdWeVZHaGwKYldWVGRHRjBaUUJ6WlhSVGRHRjBaUUJmV2s1TE1UUk5aV1JwWVZWSlJX
eGxiV1Z1ZERWemRHRjBaVVYyQUhOMFlYUmxBRjlhVGpFMApUV1ZrYVdGVlNVVnNaVzFsYm5RNWMy
VjBVR0Z5ZEVsRVJXa0FjMlYwVUdGeWRFbEVBRjlhVGtzeE5FMWxaR2xoVlVsRmJHVnRaVzUwCk5u
QmhjblJKUkVWMkFIQmhjblJKUkFCZldrNUxNVFJOWldScFlWVkpSV3hsYldWdWREbHBjMUJ5WlhO
elpXUkZkZ0JwYzFCeVpYTnoKWldRQVgxcE9TekUwVFdWa2FXRlZTVVZzWlcxbGJuUTVhWE5HYjJO
MWMyVmtSWFlBYVhOR2IyTjFjMlZrQUY5YVRrc3hORTFsWkdsaApWVWxGYkdWdFpXNTBPV2x6Ulc1
aFlteGxaRVYyQUdselJXNWhZbXhsWkFCZldrNUxNVFJOWldScFlWVkpSV3hsYldWdWRESXpjMlYw
ClZYQkRiMjUwWlhoMFJtOXlVR0ZwYm5ScGJtZEZVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBBSE5s
ZEZWd1EyOXVkR1Y0ZEVadmNsQmgKYVc1MGFXNW5BRjlhVGtzeE5FMWxaR2xoVlVsRmJHVnRaVzUw
TWpkeVpYTjBiM0psUTI5dWRHVjRkRUZtZEdWeVVHRnBiblJwYm1kRgpVRGxEUjBOdmJuUmxlSFFB
Y21WemRHOXlaVU52Ym5SbGVIUkJablJsY2xCaGFXNTBhVzVuQUY5YVRrc3hORTFsWkdsaFZVbEZi
R1Z0ClpXNTBOV3hoZVdWeVJYWUFiR0Y1WlhJQVEwZE1ZWGxsY2xKbFpnQmZXazR4TkUxbFpHbGhW
VWxGYkdWdFpXNTBPSE5sZEV4aGVXVnkKUlZBM1EwZE1ZWGxsY2dCelpYUk1ZWGxsY2dCTlpXUnBZ
VlZKUld4bGJXVnVkQUJmV2s0eU5VMWxaR2xoVEdWbllXTjVWVWxKYldGbgpaVVZzWlcxbGJuUTFj
R0ZwYm5SRlVEbERSME52Ym5SbGVIUTJRMGRTWldOMEFGOWFUa3N5TlUxbFpHbGhUR1ZuWVdONVZV
bEpiV0ZuClpVVnNaVzFsYm5ReE1XNWhkSFZ5WVd4VGFYcGxSWFlBWDFwT1N6STFUV1ZrYVdGTVpX
ZGhZM2xWU1VsdFlXZGxSV3hsYldWdWRESXoKYzJWMFZYQkRiMjUwWlhoMFJtOXlVR0ZwYm5ScGJt
ZEZVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBBRjlhVGtzeU5VMWxaR2xoVEdWbgpZV041VlVsSmJX
Rm5aVVZzWlcxbGJuUXlOM0psYzNSdmNtVkRiMjUwWlhoMFFXWjBaWEpRWVdsdWRHbHVaMFZRT1VO
SFEyOXVkR1Y0CmRBQmZXazVMTWpWTlpXUnBZVXhsWjJGamVWVkpTVzFoWjJWRmJHVnRaVzUwTlds
dFlXZGxSWFlBYVcxaFoyVUFRMGRKYldGblpRQkQKUjBsdFlXZGxVbVZtQUUxbFpHbGhUR1ZuWVdO
NVZVbEpiV0ZuWlVWc1pXMWxiblFBWDNad2RISWtUV1ZrYVdGRGIyNTBjbTlzY3dCKwpUV1ZrYVdG
RGIyNTBjbTlzY3dCZldrNHhNMDFsWkdsaFEyOXVkSEp2YkhNNFpISmhkMUJoY25SRmFWQTVRMGRE
YjI1MFpYaDBOa05IClVtVmpkR29BWkhKaGQxQmhjblFBZFc1emFXZHVaV1FnYVc1MEFGOWFUakV6
VFdWa2FXRkRiMjUwY205c2N6SXpaSEpoZDFScGJXVnMKYVc1bFUyeHBaR1Z5VkhKaFkydEZVRGxE
UjBOdmJuUmxlSFEyUTBkU1pXTjBaR1JxQUdSeVlYZFVhVzFsYkdsdVpWTnNhV1JsY2xSeQpZV05y
QUY5YVRrc3hNMDFsWkdsaFEyOXVkSEp2YkhNeE1XaHBkRlJsYzNSUVlYSjBSV2syUTBkU1pXTjBO
ME5IVUc5cGJuUUFhR2wwClZHVnpkRkJoY25RQVgxcE9TekV6VFdWa2FXRkRiMjUwY205c2N6RXhi
bUYwZFhKaGJGTnBlbVZGYVFCZldrNUxNVE5OWldScFlVTnYKYm5SeWIyeHpNVFJqYjI1MGNtOXNS
bTl5VUdGeWRFVnBBR052Ym5SeWIyeEdiM0pRWVhKMEFGOWFUa3N4TTAxbFpHbGhRMjl1ZEhKdgpi
SE0yYzJ4cFpHVnlSWFlBYzJ4cFpHVnlBRzFmZEdsdFpVeHZZV1JsWkFCdFgyUjFjbUYwYVc5dUFG
OWFUakl4VFdWa2FXRlZTVlJwCmJXVnNhVzVsVTJ4cFpHVnlNVE56WlhSVWFXMWxURzloWkdWa1JX
UUFjMlYwVkdsdFpVeHZZV1JsWkFCZldrNUxNakZOWldScFlWVkoKVkdsdFpXeHBibVZUYkdsa1pY
SXhNSFJwYldWTWIyRmtaV1JGZGdCMGFXMWxURzloWkdWa0FGOWFUakl4VFdWa2FXRlZTVlJwYldW
cwphVzVsVTJ4cFpHVnlNVEZ6WlhSRWRYSmhkR2x2YmtWa0FITmxkRVIxY21GMGFXOXVBRjlhVGtz
eU1VMWxaR2xoVlVsVWFXMWxiR2x1ClpWTnNhV1JsY2poa2RYSmhkR2x2YmtWMkFHUjFjbUYwYVc5
dUFGOWFUa3N5TVUxbFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNqRTAKWm5KaFkzUnBiMjVNYjJG
a1pXUkZkZ0JtY21GamRHbHZia3h2WVdSbFpBQmZXazVMTWpGTlpXUnBZVlZKVkdsdFpXeHBibVZU
YkdsawpaWEl4TVhCbGNtTmxiblJVYVcxbFJXUUFjR1Z5WTJWdWRGUnBiV1VBVFdWa2FXRlZTVlJw
YldWc2FXNWxVMnhwWkdWeUFFMWxaR2xoClEyOXVkSEp2YkhNQVgxcE9TekU1VFdWa2FXRk1aV2Ro
WTNsRGIyNTBjbTlzY3paemJHbGtaWEpGZGdCTlpXUnBZVXhsWjJGamVVTnYKYm5SeWIyeHpBRjlh
VGtzeE9VMWxaR2xoVEdWbllXTjVRMjl1ZEhKdmJITXhOR052Ym5SeWIyeEdiM0pRWVhKMFJXa0Fj
MmhoY21WawpVMnhwWkdWeUFGOWFUakkzVFdWa2FXRk1aV2RoWTNsVlNWUnBiV1ZzYVc1bFUyeHBa
R1Z5TlhCaGFXNTBSVkE1UTBkRGIyNTBaWGgwCk5rTkhVbVZqZEFCZldrNUxNamROWldScFlVeGxa
MkZqZVZWSlZHbHRaV3hwYm1WVGJHbGtaWEl5TTNObGRGVndRMjl1ZEdWNGRFWnYKY2xCaGFXNTBh
VzVuUlZBNVEwZERiMjUwWlhoME5rTkhVbVZqZEFCZldrNUxNamROWldScFlVeGxaMkZqZVZWSlZH
bHRaV3hwYm1WVApiR2xrWlhJeU4zSmxjM1J2Y21WRGIyNTBaWGgwUVdaMFpYSlFZV2x1ZEdsdVow
VlFPVU5IUTI5dWRHVjRkQUJOWldScFlVeGxaMkZqCmVWVkpWR2x0Wld4cGJtVlRiR2xrWlhJQVgx
cE1NemR0WldScFlWQk9SMU5zYVdSbGNsUnlZV05yVFdsa1pHeGxURzloWkdsdVowbHQKWVdkbGRn
QnRaV1JwWVZCT1IxTnNhV1JsY2xSeVlXTnJUV2xrWkd4bFRHOWhaR2x1WjBsdFlXZGxBRTFsWkds
aFUyeHBaR1Z5VkhKaApZMnROYVdSa2JHVk1iMkZrYVc1blNXMWhaMlZFWVhSaFRHVnVaM1JvWDNC
dVp3Qk5aV1JwWVZOc2FXUmxjbFJ5WVdOclRXbGtaR3hsClRHOWhaR2x1WjBsdFlXZGxSR0YwWVY5
d2JtY0FkVzV6YVdkdVpXUWdZMmhoY2dCZldrdzBNazFsWkdsaFUyeHBaR1Z5VkhKaFkydE4KYVdS
a2JHVk1iMkZrYVc1blNXMWhaMlZFWVhSaFgzQnVad0JmV2t3ek1HMWxaR2xoVUU1SFUyeHBaR1Z5
VkhKaFkydE5hV1JrYkdWSgpiV0ZuWlhZQWJXVmthV0ZRVGtkVGJHbGtaWEpVY21GamEwMXBaR1Jz
WlVsdFlXZGxBRTFsWkdsaFUyeHBaR1Z5VkhKaFkydE5hV1JrCmJHVkpiV0ZuWlVSaGRHRk1aVzVu
ZEdoZmNHNW5BRTFsWkdsaFUyeHBaR1Z5VkhKaFkydE5hV1JrYkdWSmJXRm5aVVJoZEdGZmNHNW4K
QUY5YVRETTFUV1ZrYVdGVGJHbGtaWEpVY21GamEwMXBaR1JzWlVsdFlXZGxSR0YwWVY5d2JtY0FY
MXBNTXpodFpXUnBZVkJPUjFOcwphV1JsY2xSeVlXTnJUR1ZtZEVOaGNFeHZZV1JwYm1kSmJXRm5a
WFlBYldWa2FXRlFUa2RUYkdsa1pYSlVjbUZqYTB4bFpuUkRZWEJNCmIyRmthVzVuU1cxaFoyVUFU
V1ZrYVdGVGJHbGtaWEpVY21GamEweGxablJEWVhCTWIyRmthVzVuU1cxaFoyVkVZWFJoVEdWdVoz
Um8KWDNCdVp3Qk5aV1JwWVZOc2FXUmxjbFJ5WVdOclRHVm1kRU5oY0V4dllXUnBibWRKYldGblpV
UmhkR0ZmY0c1bkFGOWFURFF6VFdWawphV0ZUYkdsa1pYSlVjbUZqYTB4bFpuUkRZWEJNYjJGa2FX
NW5TVzFoWjJWRVlYUmhYM0J1WndCZldrd3pPVzFsWkdsaFVFNUhVMnhwClpHVnlWSEpoWTJ0U2FX
ZG9kRU5oY0V4dllXUnBibWRKYldGblpYWUFiV1ZrYVdGUVRrZFRiR2xrWlhKVWNtRmphMUpwWjJo
MFEyRncKVEc5aFpHbHVaMGx0WVdkbEFFMWxaR2xoVTJ4cFpHVnlWSEpoWTJ0U2FXZG9kRU5oY0V4
dllXUnBibWRKYldGblpVUmhkR0ZNWlc1bgpkR2hmY0c1bkFFMWxaR2xoVTJ4cFpHVnlWSEpoWTJ0
U2FXZG9kRU5oY0V4dllXUnBibWRKYldGblpVUmhkR0ZmY0c1bkFGOWFURFEwClRXVmthV0ZUYkds
a1pYSlVjbUZqYTFKcFoyaDBRMkZ3VEc5aFpHbHVaMGx0WVdkbFJHRjBZVjl3Ym1jQVgxcE1Nekp0
WldScFlWQk8KUjFOc2FXUmxjbFJ5WVdOclVtbG5hSFJEWVhCSmJXRm5aWFlBYldWa2FXRlFUa2RU
Ykdsa1pYSlVjbUZqYTFKcFoyaDBRMkZ3U1cxaApaMlVBVFdWa2FXRlRiR2xrWlhKVWNtRmphMUpw
WjJoMFEyRndTVzFoWjJWRVlYUmhUR1Z1WjNSb1gzQnVad0JOWldScFlWTnNhV1JsCmNsUnlZV05y
VW1sbmFIUkRZWEJKYldGblpVUmhkR0ZmY0c1bkFGOWFURE0zVFdWa2FXRlRiR2xrWlhKVWNtRmph
MUpwWjJoMFEyRncKU1cxaFoyVkVZWFJoWDNCdVp3QmZXa3d6TVcxbFpHbGhVRTVIVTJ4cFpHVnlW
SEpoWTJ0TVpXWjBRMkZ3U1cxaFoyVjJBRzFsWkdsaApVRTVIVTJ4cFpHVnlWSEpoWTJ0TVpXWjBR
MkZ3U1cxaFoyVUFUV1ZrYVdGVGJHbGtaWEpVY21GamEweGxablJEWVhCSmJXRm5aVVJoCmRHRk1a
VzVuZEdoZmNHNW5BRTFsWkdsaFUyeHBaR1Z5VkhKaFkydE1aV1owUTJGd1NXMWhaMlZFWVhSaFgz
QnVad0JmV2t3ek5rMWwKWkdsaFUyeHBaR1Z5VkhKaFkydE1aV1owUTJGd1NXMWhaMlZFWVhSaFgz
QnVad0JmV2t3eE9HMWxaR2xoVUU1SFZHaDFiV0pKYldGbgpaWFlBYldWa2FXRlFUa2RVYUhWdFlr
bHRZV2RsQUUxbFpHbGhWR2gxYldKSmJXRm5aVVJoZEdGTVpXNW5kR2hmY0c1bkFFMWxaR2xoClZH
aDFiV0pKYldGblpVUmhkR0ZmY0c1bkFGOWFUREl6VFdWa2FXRlVhSFZ0WWtsdFlXZGxSR0YwWVY5
d2JtY0FYMXBNTWpWdFpXUnAKWVZCT1IxUm9kVzFpVUhKbGMzTmxaRWx0WVdkbGRnQnRaV1JwWVZC
T1IxUm9kVzFpVUhKbGMzTmxaRWx0WVdkbEFFMWxaR2xoVkdoMQpiV0pRY21WemMyVmtTVzFoWjJW
RVlYUmhUR1Z1WjNSb1gzQnVad0JOWldScFlWUm9kVzFpVUhKbGMzTmxaRWx0WVdkbFJHRjBZVjl3
CmJtY0FYMXBNTXpCTlpXUnBZVlJvZFcxaVVISmxjM05sWkVsdFlXZGxSR0YwWVY5d2JtY0FYMXBN
TWpSdFpXUnBZVkJPUjBaaGMzUkcKYjNKM1lYSmtTVzFoWjJWMkFHMWxaR2xoVUU1SFJtRnpkRVp2
Y25kaGNtUkpiV0ZuWlFCTlpXUnBZVVpoYzNSR2IzSjNZWEprU1cxaApaMlZFWVhSaFRHVnVaM1Jv
WDNCdVp3Qk5aV1JwWVVaaGMzUkdiM0ozWVhKa1NXMWhaMlZFWVhSaFgzQnVad0JmV2t3eU9VMWxa
R2xoClJtRnpkRVp2Y25kaGNtUkpiV0ZuWlVSaGRHRmZjRzVuQUY5YVRETXhiV1ZrYVdGUVRrZEdZ
WE4wUm05eWQyRnlaRkJ5WlhOelpXUkoKYldGblpYWUFiV1ZrYVdGUVRrZEdZWE4wUm05eWQyRnla
RkJ5WlhOelpXUkpiV0ZuWlFCTlpXUnBZVVpoYzNSR2IzSjNZWEprVUhKbApjM05sWkVsdFlXZGxS
R0YwWVV4bGJtZDBhRjl3Ym1jQVRXVmthV0ZHWVhOMFJtOXlkMkZ5WkZCeVpYTnpaV1JKYldGblpV
UmhkR0ZmCmNHNW5BRjlhVERNMlRXVmthV0ZHWVhOMFJtOXlkMkZ5WkZCeVpYTnpaV1JKYldGblpV
UmhkR0ZmY0c1bkFGOWFUREU1YldWa2FXRlEKVGtkU1pYZHBibVJKYldGblpYWUFiV1ZrYVdGUVRr
ZFNaWGRwYm1SSmJXRm5aUUJOWldScFlWSmxkMmx1WkVsdFlXZGxSR0YwWVV4bApibWQwYUY5d2Jt
Y0FUV1ZrYVdGU1pYZHBibVJKYldGblpVUmhkR0ZmY0c1bkFGOWFUREkwVFdWa2FXRlNaWGRwYm1S
SmJXRm5aVVJoCmRHRmZjRzVuQUY5YVRESTJiV1ZrYVdGUVRrZFNaWGRwYm1SUWNtVnpjMlZrU1cx
aFoyVjJBRzFsWkdsaFVFNUhVbVYzYVc1a1VISmwKYzNObFpFbHRZV2RsQUUxbFpHbGhVbVYzYVc1
a1VISmxjM05sWkVsdFlXZGxSR0YwWVV4bGJtZDBhRjl3Ym1jQVRXVmthV0ZTWlhkcApibVJRY21W
emMyVmtTVzFoWjJWRVlYUmhYM0J1WndCZldrd3pNVTFsWkdsaFVtVjNhVzVrVUhKbGMzTmxaRWx0
WVdkbFJHRjBZVjl3CmJtY0FYMXBNTWpOdFpXUnBZVkJPUjBaMWJHeHpZM0psWlc1SmJXRm5aWFlB
YldWa2FXRlFUa2RHZFd4c2MyTnlaV1Z1U1cxaFoyVUEKVFdWa2FXRkdkV3hzYzJOeVpXVnVTVzFo
WjJWRVlYUmhUR1Z1WjNSb1gzQnVad0JOWldScFlVWjFiR3h6WTNKbFpXNUpiV0ZuWlVSaApkR0Zm
Y0c1bkFGOWFUREk0VFdWa2FXRkdkV3hzYzJOeVpXVnVTVzFoWjJWRVlYUmhYM0J1WndCZldrd3pN
RzFsWkdsaFVFNUhSblZzCmJITmpjbVZsYmxCeVpYTnpaV1JKYldGblpYWUFiV1ZrYVdGUVRrZEdk
V3hzYzJOeVpXVnVVSEpsYzNObFpFbHRZV2RsQUUxbFpHbGgKUm5Wc2JITmpjbVZsYmxCeVpYTnpa
V1JKYldGblpVUmhkR0ZNWlc1bmRHaGZjRzVuQUUxbFpHbGhSblZzYkhOamNtVmxibEJ5WlhOegpa
V1JKYldGblpVUmhkR0ZmY0c1bkFGOWFURE0xVFdWa2FXRkdkV3hzYzJOeVpXVnVVSEpsYzNObFpF
bHRZV2RsUkdGMFlWOXdibWNBClgxcE1NVGh0WldScFlWQk9SMUJoZFhObFNXMWhaMlYyQUcxbFpH
bGhVRTVIVUdGMWMyVkpiV0ZuWlFCTlpXUnBZVkJoZFhObFNXMWgKWjJWRVlYUmhUR1Z1WjNSb1gz
QnVad0JOWldScFlWQmhkWE5sU1cxaFoyVkVZWFJoWDNCdVp3QmZXa3d5TTAxbFpHbGhVR0YxYzJW
SgpiV0ZuWlVSaGRHRmZjRzVuQUY5YVRESTFiV1ZrYVdGUVRrZFFZWFZ6WlZCeVpYTnpaV1JKYldG
blpYWUFiV1ZrYVdGUVRrZFFZWFZ6ClpWQnlaWE56WldSSmJXRm5aUUJOWldScFlWQmhkWE5sVUhK
bGMzTmxaRWx0WVdkbFJHRjBZVXhsYm1kMGFGOXdibWNBVFdWa2FXRlEKWVhWelpWQnlaWE56WldS
SmJXRm5aVVJoZEdGZmNHNW5BRjlhVERNd1RXVmthV0ZRWVhWelpWQnlaWE56WldSSmJXRm5aVVJo
ZEdGZgpjRzVuQUY5YVRERTNiV1ZrYVdGUVRrZFFiR0Y1U1cxaFoyVjJBRzFsWkdsaFVFNUhVR3ho
ZVVsdFlXZGxBRTFsWkdsaFVHeGhlVWx0CllXZGxSR0YwWVV4bGJtZDBhRjl3Ym1jQVRXVmthV0ZR
YkdGNVNXMWhaMlZFWVhSaFgzQnVad0JmV2t3eU1rMWxaR2xoVUd4aGVVbHQKWVdkbFJHRjBZVjl3
Ym1jQVgxcE1NalJ0WldScFlWQk9SMUJzWVhsUWNtVnpjMlZrU1cxaFoyVjJBRzFsWkdsaFVFNUhV
R3hoZVZCeQpaWE56WldSSmJXRm5aUUJOWldScFlWQnNZWGxRY21WemMyVmtTVzFoWjJWRVlYUmhU
R1Z1WjNSb1gzQnVad0JOWldScFlWQnNZWGxRCmNtVnpjMlZrU1cxaFoyVkVZWFJoWDNCdVp3QmZX
a3d5T1UxbFpHbGhVR3hoZVZCeVpYTnpaV1JKYldGblpVUmhkR0ZmY0c1bkFGOWEKVERFM2JXVmth
V0ZRVGtkTmRYUmxTVzFoWjJWMkFHMWxaR2xoVUU1SFRYVjBaVWx0WVdkbEFFMWxaR2xoVFhWMFpV
bHRZV2RsUkdGMApZVXhsYm1kMGFGOXdibWNBVFdWa2FXRk5kWFJsU1cxaFoyVkVZWFJoWDNCdVp3
QmZXa3d5TWsxbFpHbGhUWFYwWlVsdFlXZGxSR0YwCllWOXdibWNBWDFwTU1qUnRaV1JwWVZCT1Iw
MTFkR1ZRY21WemMyVmtTVzFoWjJWMkFHMWxaR2xoVUU1SFRYVjBaVkJ5WlhOelpXUkoKYldGblpR
Qk5aV1JwWVUxMWRHVlFjbVZ6YzJWa1NXMWhaMlZFWVhSaFRHVnVaM1JvWDNCdVp3Qk5aV1JwWVUx
MWRHVlFjbVZ6YzJWawpTVzFoWjJWRVlYUmhYM0J1WndCZldrd3lPVTFsWkdsaFRYVjBaVkJ5WlhO
elpXUkpiV0ZuWlVSaGRHRmZjRzVuQUY5YVRESXpiV1ZrCmFXRlFUa2RHZFd4c1ZtOXNkVzFsU1cx
aFoyVjJBRzFsWkdsaFVFNUhSblZzYkZadmJIVnRaVWx0WVdkbEFFMWxaR2xoUm5Wc2JGWnYKYkhW
dFpVbHRZV2RsUkdGMFlVeGxibWQwYUY5d2JtY0FUV1ZrYVdGR2RXeHNWbTlzZFcxbFNXMWhaMlZF
WVhSaFgzQnVad0JmV2t3eQpPRTFsWkdsaFJuVnNiRlp2YkhWdFpVbHRZV2RsUkdGMFlWOXdibWNB
WDFwTU16QnRaV1JwWVZCT1IwWjFiR3hXYjJ4MWJXVlFjbVZ6CmMyVmtTVzFoWjJWMkFHMWxaR2xo
VUU1SFJuVnNiRlp2YkhWdFpWQnlaWE56WldSSmJXRm5aUUJOWldScFlVWjFiR3hXYjJ4MWJXVlEK
Y21WemMyVmtTVzFoWjJWRVlYUmhUR1Z1WjNSb1gzQnVad0JOWldScFlVWjFiR3hXYjJ4MWJXVlFj
bVZ6YzJWa1NXMWhaMlZFWVhSaApYM0J1WndCZldrd3pOVTFsWkdsaFJuVnNiRlp2YkhWdFpWQnla
WE56WldSSmJXRm5aVVJoZEdGZmNHNW5BRjlhVERNMGJXVmthV0ZRClRrZFViMmRuYkdWRFlYQjBh
Vzl1YzFCeVpYTnpaV1JKYldGblpYWUFiV1ZrYVdGUVRrZFViMmRuYkdWRFlYQjBhVzl1YzFCeVpY
TnoKWldSSmJXRm5aUUJOWldScFlWUnZaMmRzWlVOaGNIUnBiMjV6VUhKbGMzTmxaRWx0WVdkbFJH
RjBZVXhsYm1kMGFGOXdibWNBVFdWawphV0ZVYjJkbmJHVkRZWEIwYVc5dWMxQnlaWE56WldSSmJX
Rm5aVVJoZEdGZmNHNW5BRjlhVERNNVRXVmthV0ZVYjJkbmJHVkRZWEIwCmFXOXVjMUJ5WlhOelpX
UkpiV0ZuWlVSaGRHRmZjRzVuQUY5YVRESTNiV1ZrYVdGUVRrZFViMmRuYkdWRFlYQjBhVzl1YzBs
dFlXZGwKZGdCdFpXUnBZVkJPUjFSdloyZHNaVU5oY0hScGIyNXpTVzFoWjJVQVRXVmthV0ZVYjJk
bmJHVkRZWEIwYVc5dWMwbHRZV2RsUkdGMApZVXhsYm1kMGFGOXdibWNBVFdWa2FXRlViMmRuYkdW
RFlYQjBhVzl1YzBsdFlXZGxSR0YwWVY5d2JtY0FYMXBNTXpKTlpXUnBZVlJ2CloyZHNaVU5oY0hS
cGIyNXpTVzFoWjJWRVlYUmhYM0J1WndCZldrNHhPVTFsWkdsaFRHVm5ZV041UTI5dWRISnZiSE5F
TUVWMkFINU4KWldScFlVeGxaMkZqZVVOdmJuUnliMnh6QUY5YVpHeFFkZ0J2Y0dWeVlYUnZjaUJr
Wld4bGRHVUFYMXBPTVRsTlpXUnBZVXhsWjJGagplVU52Ym5SeWIyeHpSREZGZGdCZldrNHhPVTFs
WkdsaFRHVm5ZV041UTI5dWRISnZiSE5FTWtWMkFGOWFUakV6VFdWa2FXRkRiMjUwCmNtOXNjMFF5
UlhZQVgxcE9NamROWldScFlVeGxaMkZqZVZWSlZHbHRaV3hwYm1WVGJHbGtaWEpFTUVWMkFINU5a
V1JwWVV4bFoyRmoKZVZWSlZHbHRaV3hwYm1WVGJHbGtaWElBWDFwT01qZE5aV1JwWVV4bFoyRmpl
VlZKVkdsdFpXeHBibVZUYkdsa1pYSkVNVVYyQUY5YQpUakkzVFdWa2FXRk1aV2RoWTNsVlNWUnBi
V1ZzYVc1bFUyeHBaR1Z5UkRKRmRnQmZXazR5TVUxbFpHbGhWVWxVYVcxbGJHbHVaVk5zCmFXUmxj
a1F5UlhZQWZrMWxaR2xoVlVsVWFXMWxiR2x1WlZOc2FXUmxjZ0JmV2s0eE5FMWxaR2xoVlVsRmJH
VnRaVzUwUkRKRmRnQmYKV2s0eE5FMWxaR2xoVlVsRmJHVnRaVzUwUkRCRmRnQmZXazR4TkUxbFpH
bGhWVWxGYkdWdFpXNTBSREZGZGdCZldrNHpWMVJHT1ZKbApkR0ZwYmxCMGNrbFFOME5IVEdGNVpY
SkZSREZGZGdCZldrNHpWMVJHT1ZKbGRHRnBibEIwY2tsUU4wTkhUR0Y1WlhKRlJESkZkZ0JmCldr
NHlOVTFsWkdsaFRHVm5ZV041VlVsSmJXRm5aVVZzWlcxbGJuUkVNRVYyQUg1TlpXUnBZVXhsWjJG
amVWVkpTVzFoWjJWRmJHVnQKWlc1MEFGOWFUakkxVFdWa2FXRk1aV2RoWTNsVlNVbHRZV2RsUld4
bGJXVnVkRVF4UlhZQVgxcE9NalZOWldScFlVeGxaMkZqZVZWSgpTVzFoWjJWRmJHVnRaVzUwUkRK
RmRnQmZXazR5TjAxbFpHbGhUR1ZuWVdONVZVbFVhVzFsYkdsdVpWTnNhV1JsY2tNeFJYWUFYMXBP
Ck1qZE5aV1JwWVV4bFoyRmplVlZKVkdsdFpXeHBibVZUYkdsa1pYSkRNa1YyQUY5YVRqSXhUV1Zr
YVdGVlNWUnBiV1ZzYVc1bFUyeHAKWkdWeVF6SkZkZ0JmV2s0eU1VMWxaR2xoVlVsVWFXMWxiR2x1
WlZOc2FXUmxja1F3UlhZQVgxcE9NakZOWldScFlWVkpWR2x0Wld4cApibVZUYkdsa1pYSkVNVVYy
QUY5YVRqRTBUV1ZrYVdGVlNVVnNaVzFsYm5SRE1rVjJBRjlhVGpOWFZFWTVVbVYwWVdsdVVIUnlT
VkEzClEwZE1ZWGxsY2tWRE1VVjJBRjlhVGpOWFZFWTVVbVYwWVdsdVVIUnlTVkEzUTBkTVlYbGxj
a1ZETWtWMkFGOWFUakkxVFdWa2FXRk0KWldkaFkzbFZTVWx0WVdkbFJXeGxiV1Z1ZEVNeFJYWUFY
MXBPTWpWTlpXUnBZVXhsWjJGamVWVkpTVzFoWjJWRmJHVnRaVzUwUXpKRgpkZ0JmV201M2JRQnZj
R1Z5WVhSdmNpQnVaWGNBUTBkR2JHOXZjZ0JmV2t3eE1FTkhVMmw2WlUxaGEyVmtaQUJEUjFOcGVt
Vk5ZV3RsCkFGOWFUREV3UTBkU1pXTjBUV0ZyWldSa1pHUUFRMGRTWldOMFRXRnJaUUJyUTBkU1pX
NWtaWEpwYm1kSmJuUmxiblJFWldaaGRXeDAKQUd0RFIxSmxibVJsY21sdVowbHVkR1Z1ZEVGaWMy
OXNkWFJsUTI5c2IzSnBiV1YwY21sakFHdERSMUpsYm1SbGNtbHVaMGx1ZEdWdQpkRkpsYkdGMGFY
WmxRMjlzYjNKcGJXVjBjbWxqQUd0RFIxSmxibVJsY21sdVowbHVkR1Z1ZEZCbGNtTmxjSFIxWVd3
QWEwTkhVbVZ1ClpHVnlhVzVuU1c1MFpXNTBVMkYwZFhKaGRHbHZiZ0JEUjBOdmJHOXlVbVZ1WkdW
eWFXNW5TVzUwWlc1MEFISmxZM1FBZEdocGN3QmoKYjI1MFpYaDBBR1JoZEdFQVgxOURSa1JoZEdF
QVEwWkVZWFJoVW1WbUFHUmhkR0ZRY205MmFXUmxjZ0JEUjBSaGRHRlFjbTkyYVdSbApjZ0JEUjBS
aGRHRlFjbTkyYVdSbGNsSmxaZ0JwYldGblpWSmxaZ0JqZFhKeVpXNTBRMVJOQUdFQVlnQmpBR1FB
ZEhnQWRIa0FRMGRCClptWnBibVZVY21GdWMyWnZjbTBBZmtOSFFXWm1hVzVsVkhKaGJuTm1iM0p0
QUdSeVlYZHBibWREYjI1MFpYaDBBSEpwWjJoMFNXMWgKWjJVQVpHVnpkRWhsYVdkb2RBQmtaWE4w
VjJsa2RHZ0FZWEJ3Y205NFVtbG5hSFJYYVdSMGFBQmtaWE4wVW1sbmFIUlhhV1IwYUFCeQpaVzFo
YVc1cGJtZFhhV1IwYUFCc1pXWjBTVzFoWjJVQWJHOWhaR1ZrQUdOaGJrUnlZWGRFYVhKbFkzUnNl
UUJrWlhOMFRHVm1kRmRwClpIUm9BR1JsYzNSTmFXUmtiR1ZYYVdSMGFBQnNiMkZrWldSWGFXUjBh
QUIyWVd4MVpRQnNiMkZrWldSU1pXTjBBSEpsYldGcGJtbHUKWjFKbFkzUUFZMjl1ZEhKdmJBQnNi
MjVuSUhWdWMybG5ibVZrSUdsdWRBQnphWHBsWDNRQWNIUnlBSEFBWW05MWJtUnpBSEJ2YVc1MApB
QUNRQVFBQUFBQUFBQTRDQUFBQUFBQUE3Z1VBQUFBQUFBQnNCZ0FBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBWUFnQUFBQUFBCkFKWUNBQUFBQUFBQWJBWUFBQUFBQUFEcUJnQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUNnQWdBQUFBQUFBQjREQUFBQUFBQUEKNmdZQUFBQUFBQUJvQndBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9Bd0FBQUFBQUFLWURBQUFBQUFBQWFBY0FBQUFBQUFE
bQpCd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDd0F3QUFBQUFBQUM0RUFBQUFBQUFBNWdj
QUFBQUFBQUJrQ0FBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUE0QkFBQUFBQUFBTFlFQUFB
QUFBQUFaQWdBQUFBQUFBRGlDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBRGZCQUFBQUFB
QUFGMEZBQUFBQUFBQTRnZ0FBQUFBQUFCZENRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJu
QlFBQQpBQUFBQU9VRkFBQUFBQUFBWFFrQUFBQUFBQURTQ1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBREhDd0FBQUFBQUFOc0xBQUFBCkFBQUE4d3NBQUFBQUFBRC9Dd0FBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFDdUR3QUFBQUFBQUxNUEFBQUFBQUFBdUE4QUFBQUEKQUFEU0R3QUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUIrRUFBQUFBQUFBSTRRQUFBQUFBQUFraEFBQUFBQUFBQzFF
QUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2JCQUFBQWdBSTZpSUFBUDRpQUFBRDJ4a0FB
UDBBQUFBQUFBQUE2aDRBQUs0UEFBQUFBQUFBCldSOEFBSDRRQUFBQUFBQUFsd2NBQUxnSEFBQUtr
Qm9BQUlZQkFBQUFBQUFBMXhvQUFBNENBQUFBQUFBQUhoc0FBSllDQUFBQUFBQUEKWlJzQUFCNERB
QUFBQUFBQXJCc0FBS1lEQUFBQUFBQUE4eHNBQUM0RUFBQUFBQUFBUmh3QUFMWUVBQUFBQUFBQVhS
d0FBTUlFQUFBQQpBQUFBZEJ3QUFOVUVBQUFBQUFBQXV4d0FBRjBGQUFBQUFBQUFLUmdBQUU0WUFB
QUJweG9BQUpBQkFBQUFBQUFBeXh3QUFQQWNBQUFCCjdob0FBQmdDQUFBQUFBQUFmeG9BQUo0YUFB
QUJOUnNBQUtBQ0FBQUFBQUFBNmhZQUFBc1hBQUFCZkJzQUFDZ0RBQUFBQUFBQXBoVUEKQU13VkFB
QUJ3eHNBQUxBREFBQUFBQUFBWnhRQUFJY1VBQUFCQ2h3QUFEZ0VBQUFBQUFBQWxoc0FBTFViQUFB
Qml4d0FBTjhFQUFBQQpBQUFBWXhrQUFJTVpBQUFCMGh3QUFHY0ZBQUFBQUFBQXlnd0FBUEVNQUFB
Qk1CNEFBTWNMQUFBQUFBQUErZ3dBQUNnTkFBQUJHUjRBCkFNY0xBQUFBQUFBQUtCTUFBRTRUQUFB
QlRSNEFBQmtNQUFBQUFBQUFZeElBQUlvU0FBQUJkeDRBQUtvTUFBQUFBQUFBbUJBQUFNVVEKQUFB
QnN4NEFBQ1VOQUFBQUFBQUF4U0lBQU1VaUFBQURDeDhBQUxNUEFBQUFBQUFBTWg4QUFHVVFBQUFB
QUFBQWVoOEFBUDhRQUFBQQpBQUFBM1E4QUFBSVFBQUFCdlI4QUFORVJBQUFBQUFBQThRNEFBQjBQ
QUFBQkJDQUFBSDRUQUFBQUFBQUFTeUlBQVBNQkFBQUNrd3dBCkFIVVZBQUFBQUFBQVR3NEFBTUFW
QUFBQUFBQUFLaUlBQVBNQkFBQUNmQXdBQUhVVkFBQUFBQUFBT0E0QUFNQVZBQUFBQUFBQUVpSUEK
QUNrSkFBQUNaUXdBQUhVVkFBQUFBQUFBSVE0QUFNQVZBQUFBQUFBQWp5SUFBSFVLQUFBQlFBd0FB
SFVWQUFBQUFBQUFzaUlBQUxnaQpBQUFDQ3d3QUFIQVZBQUFBQUFBQXRnMEFBTHNWQUFBQUFBQUFT
QWNBQUdnSEFBQUJyZ3dBQUpVVkFBQUFBQUFBdFNFQUFHNE5BQUFCCkNnNEFBTUFWQUFBQUFBQUFr
Q0VBQU5VT0FBQUI1UTBBQU1BVkFBQUFBQUFBeGlBQUFLa0NBQUFHZUNnQUFHS3BBQUFBQUFBQVdD
a0EKQUplcEFBQUFBQUFBR2lvQUFES3FBQUFBQUFBQUdDc0FBR2VxQUFBQUFBQUFSaU1BQUFLckFB
QUFBQUFBcVNJQUFEZXJBQUFBQUFBQQpwU0FBQUtrQ0FBQUdZU2dBQUdLcEFBQUFBQUFBUVNrQUFK
ZXBBQUFBQUFBQUF5b0FBREtxQUFBQUFBQUFBU3NBQUdlcUFBQUFBQUFBCkx5TUFBQUtyQUFBQUFB
QUFraUlBQURlckFBQUFBQUFBWFNBQUFNOEZBQUFHU2lnQUFGU3BBQUFBQUFBQUtpa0FBSW1wQUFB
QUFBQUEKN0NrQUFDU3FBQUFBQUFBQTZpb0FBRm1xQUFBQUFBQUFCQ01BQVBTcUFBQUFBQUFBWnlJ
QUFDbXJBQUFBQUFBQVNDRUFBQW9oQUFBQwpLU2dBQUZTcEFBQUFBQUFBQXlrQUFJbXBBQUFBQUFB
QUpTRUFBQW9oQUFBQnlDZ0FBSW1wQUFBQUFBQUFKeUFBQUVZZ0FBQUMxU2tBCkFDU3FBQUFBQUFB
QTB5b0FBRm1xQUFBQUFBQUFBaUFBQU1BZkFBQUN0Q2tBQUNTcUFBQUFBQUFBckNvQUFGbXFBQUFB
QUFBQTNSOEEKQU1BZkFBQUJjU29BQUZtcUFBQUFBQUFBTXg4QUFEb2ZBQUFCcXlzQUFPU3FBQUFB
QUFBQWpTQUFBTThGQUFBQkxDSUFBQ21yQUFBQQpBQUFBU0ZOQlNBRUFBQUJLQUFBQWxBQUFBQXdB
QUFBQUFBQUFBUUFBQUFFQUJnQUFBQUFBQVFBQUFBUUFBQUFHQUFBQS8vLy8vLy8vCi8vOElBQUFB
Q1FBQUFBNEFBQUFTQUFBQUZnQUFBQmtBQUFBY0FBQUFJUUFBQUNJQUFBQWpBQUFBSlFBQUFDWUFB
QUFuQUFBQUtnQUEKQVAvLy8vLy8vLy8vS3dBQUFDd0FBQUF1QUFBQUx3QUFBREFBQUFBekFBQUFO
UUFBQURZQUFBRC8vLy8vLy8vLy96Z0FBQUE2QUFBQQpQZ0FBQUVBQUFBQkNBQUFBUkFBQUFFY0FB
QUJMQUFBQVR3QUFBRkVBQUFCU0FBQUFVd0FBQUZVQUFBQlhBQUFBV2dBQUFQLy8vLzliCkFBQUFY
d0FBQUdBQUFBQmhBQUFBWkFBQUFHWUFBQUJuQUFBQWFnQUFBRzBBQUFELy8vLy9iZ0FBQUhNQUFB
QjJBQUFBZUFBQUFIb0EKQUFCL0FBQUFnUUFBQUlRQUFBQ0ZBQUFBaHdBQUFJZ0FBQUNLQUFBQWpR
QUFBSThBQUFDU0FBQUFrd0FBQUs2VEVRU1JodW8wM3hTbgpTa1BkeEpMb2JtcmF5c0RNSjFGb2NP
S0R5eDdETEpyRWZVZU15K281VmxKZnNac0wxRGtzam9UdmNOVzVHbm15WkVJSWRTdkdHb2M0Cjhn
R2FyeTBGOWx2ZkxqMzhZVnIzKytNaitmMG81djBiZUZUUkpiSWdSS0VQenF6My9idDZPMWR1Wjd3
STZOUytPbGNBbDdSOEN1SW0KeFErL2JnODZiVU5EMkhoK2FFTkRoWFc3Y2dVMmRkc2lZY1dTa1hK
amVYeVVJMUNXU3M1L2JzZ2JuQnNQRTQ2a3FERVNpYnpNSjdNUgpzWTBPQU85ZHY4eExseHdDN2p3
NHBqN1Z0azNjZkhFeU85ZzdwMjVHeUxQWU5XazB6Q2YxR1RFbXBLT21BU1pyNE5NTjI0ajFFNC9x
Ck5EZEtQZnFoc09GejlHRU83Q1RsQitGdHhXZzZ6NVgyVzZ5RS9hd0NYV2NVRjhqUUpZWFY5aDE3
aXZKSzFHUXlERnFPTWp0a3daejQKQ3QyNFJsMm5ET1pqQWs3NmEvTE9GUW14WHpUOGg5aXB0RVR5
WFB0SHNkUDZxTzVER2J3YUZDdUNYT2JRVmVrT1NMak1Kd3NBMFFUVgpSeGdmcXdVTlFqNjE1elRJ
SDdyQlN0NENLS1JweFpKQ1pOOGYvM3lFYVN4cDA1a25VQmVHRHhxMXlEZENQN1dvZktnUFlKMDJP
U245Cnp6M1NpdW8wa3BIemR4QWYyTjdScVFyOEJXWCtQb1dDdURxT2tmWmI4RWgxdHg2dlZkOGFx
MFgwVG5oellSQVA2Z2szeTRkdVU4eTYKSUxmT3hpSmNLd2lFc2dMcU5KZm1aWThaY3FPd2tJWWFw
RzRKOWx0RXdBcnBGQWVCTlVRdTllbGx1cml2b2JZZ0VEd2xrbHV3bGdRdAozQVpOdTZkY3VlaGVu
V3JidkFaZXlTMXZ4eUlRQnpHamRHOHVEV05seFpLTFhWYVRXeUJaQlRLam02T2VKOFVTcjh3Ym5B
M0lKVmcvCmp5YlZLdFpSYlkvOHA1RG9CUUFBK0FVQUFBZ0dBQUFZQmdBQUtBWUFBRGdHQUFCY0Jn
QUFiQVlBQUh3R0FBQ1FCZ0FBb0FZQUFMQUcKQUFESUJnQUEyQVlBQU9nR0FBRDRCZ0FBQ0FjQUFC
Z0hBQUFvQndBQVBBY0FBRXdIQUFCY0J3QUFmQWNBQUl3SEFBQ2dCd0FBc0FjQQpBTUFIQUFEUUJ3
QUE0QWNBQVBBSEFBQUFDQUFBRUFnQUFDQUlBQUF3Q0FBQVFBZ0FBRndJQUFCc0NBQUFmQWdBQUl3
SUFBQ2tDQUFBCnVBZ0FBTWdJQUFEWUNBQUE4QWdBQUFBSkFBQVVDUUFBSkFrQUFEUUpBQUJFQ1FB
QVZBa0FBR1FKQUFCMENRQUFoQWtBQUpnSkFBQ28KQ1FBQXZBa0FBTXdKQUFEY0NRQUE3QWtBQVB3
SkFBQVFDZ0FBUkFvQUFGUUtBQUJrQ2dBQWRBb0FBSVFLQUFDb0NnQUF1QW9BQU1nSwpBQURZQ2dB
QTZBb0FBUGdLQUFBSUN3QUFIQXNBQUN3TEFBQThDd0FBVEFzQUFGd0xBQUJzQ3dBQWZBc0FBSXdM
QUFDY0N3QUFzQXNBCkFNQUxBQURRQ3dBQTRBc0FBUFFMQUFBRURBQUFGQXdBQUNRTUFBQlVEQUFB
WkF3QUFIUU1BQUNvREFBQXZBd0FBTXdNQUFEY0RBQUEKN0F3QUFQd01BQUFNRFFBQUlBMEFBSkFO
QUFDZ0RRQUFzQTBBQU1RTkFBRFVEUUFBNUEwQUFQUU5BQUFFRGdBQUZBNEFBRGdPQUFCSQpEZ0FB
V0E0QUFHZ09BQUI0RGdBQW1BNEFBS2dPQUFDNERnQUF5QTRBQUFRUEFBQVVEd0FBSkE4QUFEUVBB
QUJFRHdBQVdBOEFBR2dQCkFBQjREd0FBaUE4QUFKZ1BBQUNzRHdBQXZBOEFBTXdQQUFEY0R3QUE3
QThBQVB3UEFBQU1FQUFBSEJBQUFDd1FBQUE4RUFBQVVCQUEKQUdBUUFBQndFQUFBZ0JBQUFKQVFB
QUNnRUFBQXRCQUFBTVFRQUFEVUVBQUFCQklBQUFFQUFBQlBFQUFBQUFBQUFKc2ZBQUFCQUFBQQpS
aW9BQUFBQUFBQVhGZ0FBQVFBQUFQMFNBQUFBQUFBQWp5SUFBQUVBQUFCQURBQUFBQUFBQUpnUUFB
QUJBQUFBc3g0QUFBQUFBQUJkCklBQUFCZ0FBQUdjaUFBQUVJd0FBU2lnQUFDb3BBQURzS1FBQTZp
b0FBQUFBQUFENkRBQUFBUUFBQUJrZUFBQUFBQUFBaHhRQUFBRUEKQUFBS0hBQUFBQUFBQUI0ZkFB
QUNBQUFBVkNzQUFJQXJBQUFBQUFBQUVCd0FBQUVBQUFCNkZ3QUFBQUFBQU9zSkFBQUJBQUFBY0NN
QQpBQUFBQUFERklnQUFBd0FBQUFzZkFBQXlId0FBZWg4QUFBQUFBQURxRndBQUFRQUFBRlVVQUFB
QUFBQUFzeFlBQUFFQUFBQnZFd0FBCkFBQUFBSDhhQUFBQkFBQUFOUnNBQUFBQUFBRGhHUUFBQVFB
QUFLNFZBQUFBQUFBQU1oUUFBQUVBQUFDbkVRQUFBQUFBQU4wUEFBQUIKQUFBQXZSOEFBQUFBQUFB
cUlnQUFBZ0FBQUh3TUFBQTREZ0FBQUFBQUFQVU5BQUFCQUFBQWtRMEFBQUFBQUFCakd3QUFBUUFB
QUFjWApBQUFBQUFBQUNpRUFBQVVBQUFEK0p3QUFLU2dBQUowb0FBRElLQUFBQXlrQUFBQUFBQUFH
REFBQUFRQUFBSElOQUFBQUFBQUFKeUFBCkFBSUFBQURWS1FBQTB5b0FBQUFBQUFEVkRnQUFBUUFB
QU9VTkFBQUFBQUFBNmhZQUFBRUFBQUI4R3dBQUFBQUFBSmtUQUFBQkFBQUEKTlJFQUFBQUFBQUJq
RWdBQUFRQUFBSGNlQUFBQUFBQUFoaDBBQUFFQUFBQjNHQUFBQUFBQUFHOFFBQUFCQUFBQVVBOEFB
QUFBQUFBOApEZ0FBQVFBQUFQZ2dBQUFBQUFBQXpCVUFBQUVBQUFEREd3QUFBQUFBQUVZWkFBQUJB
QUFBT3hVQUFBQUFBQUJqR1FBQUFRQUFBTkljCkFBQUFBQUFBOHdFQUFBUUFBQUI4REFBQWt3d0FB
RGdPQUFCUERnQUFBQUFBQUtZVkFBQUJBQUFBd3hzQUFBQUFBQUJNRndBQUFRQUEKQU9JVEFBQUFB
QUFBNXlBQUFBRUFBQUNkS0FBQUFBQUFBT29pQUFBREFBQUEyeGtBQU9vZUFBQlpId0FBQUFBQUFG
a0lBQUFDQUFBQQorQ0FBQUs4akFBQUFBQUFBclE4QUFBRUFBQURkRGdBQUFBQUFBQUVmQUFBQkFB
QUFnQ3NBQUFBQUFBRCtJZ0FBQXdBQUFOc1pBQURxCkhnQUFXUjhBQUFBQUFBQTZId0FBQVFBQUFL
c3JBQUFBQUFBQWpTQUFBQUlBQUFBc0lnQUExQ0lBQUFBQUFBQ3hCZ0FBQVFBQUFFVWgKQUFBQUFB
QUFiQmNBQUFFQUFBRGlFd0FBQUFBQUFKWWJBQUFCQUFBQWl4d0FBQUFBQUFDN0dBQUFBUUFBQU1n
VUFBQUFBQUFBeXdBQQpBQUVBQUFDbUN3QUFBQUFBQUU0WUFBQUJBQUFBcHhvQUFBQUFBQUEwQ2dB
QUFRQUFBRUVhQUFBQUFBQUFSaUFBQUFJQUFBRFZLUUFBCjB5b0FBQUFBQUFDS0RnQUFBUUFBQUxr
Z0FBQUFBQUFBRWlJQUFBSUFBQUJsREFBQUlRNEFBQUFBQUFDcEVRQUFBUUFBQU4wUEFBQUEKQUFB
QUxoa0FBQUVBQUFBN0ZRQUFBQUFBQUs4ZEFBQUJBQUFBZHhnQUFBQUFBQUE4RmdBQUFRQUFBUDBT
QUFBQUFBQUFBaUFBQUFJQQpBQUMwS1FBQXJDb0FBQUFBQUFDNEJ3QUFDZ0FBQUpBYUFBRFhHZ0FB
SGhzQUFHVWJBQUNzR3dBQTh4c0FBRVljQUFCZEhBQUFkQndBCkFMc2NBQUFBQUFBQWd4a0FBQUVB
QUFEU0hBQUFBQUFBQURNZkFBQUJBQUFBcXlzQUFBQUFBQURsRkFBQUFRQUFBQm9TQUFBQUFBQUEK
Y0FrQUFBRUFBQUFDR2dBQUFBQUFBTVlnQUFBR0FBQUFxU0lBQUVZakFBQjRLQUFBV0NrQUFCb3FB
QUFZS3dBQUFBQUFBTXNjQUFBQgpBQUFBN2hvQUFBQUFBQURGRUFBQUFRQUFBTE1lQUFBQUFBQUF0
U0VBQUFFQUFBQUtEZ0FBQUFBQUFKOEpBQUFCQUFBQXJ5TUFBQUFBCkFBQXhFZ0FBQVFBQUFFOFFB
QUFBQUFBQUFoQUFBQUVBQUFDOUh3QUFBQUFBQUs4SUFBQUNBQUFBdVNBQUFIQWpBQUFBQUFBQUtB
MEEKQUFFQUFBQVpIZ0FBQUFBQUFLa0dBQUFCQUFBQS9DTUFBQUFBQUFCdURRQUFBUUFBQUFvT0FB
QUFBQUFBS0JNQUFBRUFBQUJOSGdBQQpBQUFBQU1vTUFBQUJBQUFBTUI0QUFBQUFBQUJsRlFBQUFR
QUFBSXdTQUFBQUFBQUF4aFFBQUFFQUFBQWFFZ0FBQUFBQUFGMGRBQUFCCkFBQUFYaGdBQUFBQUFB
QzRJZ0FBQWdBQUFBc01BQUMyRFFBQUFBQUFBTXdXQUFBQkFBQUFieE1BQUFBQUFBQ2VHZ0FBQVFB
QUFEVWIKQUFBQUFBQUF2aE1BQUFFQUFBQTFFUUFBQUFBQUFMSWlBQUFDQUFBQUN3d0FBTFlOQUFB
QUFBQUFkU0FBQUFFQUFBRDlJUUFBQUFBQQpBUEVNQUFBQkFBQUFNQjRBQUFBQUFBQm9Cd0FBQVFB
QUFLNE1BQUFBQUFBQXp3VUFBQWtBQUFEOUlRQUFMQ0lBQUdjaUFBRFVJZ0FBCkJDTUFBRW9vQUFB
cUtRQUE3Q2tBQU9vcUFBQUFBQUFBa2cwQUFBRUFBQUJ5RFFBQUFBQUFBQWNZQUFBQkFBQUFWUlFB
QUFBQUFBQ1gKQndBQUNnQUFBSkFhQUFEWEdnQUFIaHNBQUdVYkFBQ3NHd0FBOHhzQUFFWWNBQUJk
SEFBQWRCd0FBTHNjQUFBQUFBQUFTQ0VBQUFJQQpBQUFwS0FBQUF5a0FBQUFBQUFENUdnQUFBUUFB
QUpRV0FBQUFBQUFBQUI0QUFBRUFBQURwR0FBQUFBQUFBQXNYQUFBQkFBQUFmQnNBCkFBQUFBQUJL
RVFBQUFRQUFBTU1QQUFBQUFBQUFseGdBQUFFQUFBRElGQUFBQUFBQUFOVUdBQUFDQUFBQUFob0FB
RVVoQUFBQUFBQUEKWEFvQUFCa0FBQUI4RGdBQUJ3OEFBSG9QQUFEK0R3QUFlUkFBQU93UUFBQmVF
UUFBMFJFQUFFUVNBQUMxRWdBQUpoTUFBSmtUQUFBTQpGQUFBZnhRQUFQSVVBQUJsRlFBQTJCVUFB
RXNXQUFDK0ZnQUFNUmNBQUtRWEFBQVZHQUFBbUJnQUFDUVpBQUJCR2dBQUFBQUFBS2tjCkFBQUJB
QUFBN0JjQUFBQUFBQUM2SGdBQUFRQUFBSFVaQUFBQUFBQUEzUjhBQUFJQUFBQ0pLUUFBY1NvQUFB
QUFBQUFkRHdBQUFRQUEKQUFRZ0FBQUFBQUFBU0FjQUFBRUFBQUN1REFBQUFBQUFBSXdjQUFBQkFB
QUE3QmNBQUFBQUFBQjFDZ0FBQVFBQUFFQU1BQUFBQUFBQQpZeG9BQUFFQUFBQWhGZ0FBQUFBQUFL
VWdBQUFHQUFBQWtpSUFBQzhqQUFCaEtBQUFRU2tBQUFNcUFBQUJLd0FBQUFBQUFIY2VBQUFCCkFB
QUFBeGtBQUFBQUFBQzFHd0FBQVFBQUFJc2NBQUFBQUFBQXdoa0FBQUVBQUFDdUZRQUFBQUFBQVBB
Y0FBQUJBQUFBN2hvQUFBQUEKQUFEQUh3QUFCUUFBQUlrcEFBQzBLUUFBUmlvQUFIRXFBQUNzS2dB
QUFBQUFBUEliQUFBQkFBQUFlaGNBQUFBQUFBRGJIZ0FBQVFBQQpBSFVaQUFBQUFBQUE4UTRBQUFF
QUFBQUVJQUFBQUFBQUFLa0NBQUFNQUFBQWtpSUFBS2tpQUFBdkl3QUFSaU1BQUdFb0FBQjRLQUFB
ClFTa0FBRmdwQUFBREtnQUFHaW9BQUFFckFBQVlLd0FBQUFBQUFKQWhBQUFCQUFBQTVRMEFBQUFB
QUFDS0VnQUFBUUFBQUhjZUFBQUEKQUFBQWd4VUFBQUVBQUFDTUVnQUFBQUFBQUVvVUFBQUJBQUFB
cHhFQUFBQUFBQUJMSWdBQUFnQUFBSk1NQUFCUERnQUFBQUFBQU5vTApBQUFCQUFBQWh3c0FBQUFB
QUFBcEdBQUFBUUFBQUtjYUFBQUFBQUFBVGhNQUFBRUFBQUJOSGdBQUFBQUFBR2NVQUFBQkFBQUFD
aHdBCkFBQUFBQUFNQmdBQUFnQUFBSThaQUFBRUhRQUFBQUFBQUhzUkFBQUJBQUFBM1E4QUFBQUFB
QURYRWdBQUFRQUFBTUlRQUFBQUFBQUEKeVEwQUFBRUFBQUNIQ3dBQUFBQUFBRGtkQUFBQkFBQUFY
aGdBQUFBQUFBQUNEZ0FBQVFBQUFBUWRBQUFBQUFBQVRCb0FBQUVBQUFBaApGZ0FBQUFBQUFFc1FB
QUFCQUFBQVVBOEFBQUFBQUFBb0hnQUFBUUFBQU9rWUFBQUFBQUFBVlI0QUFBRUFBQUFER1FBQUFB
QUFBQ1VoCkFBQUNBQUFBL2ljQUFNZ29BQUFBQUFBQWRBOEFBQUVBQUFEZERnQUFBQUFBQUI0UkFB
QUJBQUFBd3c4QUFBQUFBQURiR2dBQUFRQUEKQUpRV0FBQUFBQUFBZkFZQUFBRUFBQUQ4SXdBQUFB
QUFBRW9mQUFBQkFBQUFWQ3NBQUFBQUFBQXBDUUFBQWdBQUFHVU1BQUFoRGdBQQpBQUFBQVAwU0FB
QUJBQUFBd2hBQUFBQUFBQUI2R3dBQUFRQUFBQWNYQUFBQUFBQUFPQWtBQUFFQUFBQ1BHUUFBQUFB
QUFFaFRRVWdCCkFBQUFBUUFBQUFBQUFBQU1BQUFBQUFBQUFBRUFBQUFCQUFZQS8vLy8vMGhUUVVn
QkFBQUFBUUFBQUFFQUFBQU1BQUFBQUFBQUFBRUEKQUFBQkFBWUFBQUFBQUJZd2lBc3NBQUFBd2dF
QUFBTUFBQUJ2QUFBQW5nQUFBTThEQUFBQUFBQUFTRk5CU0FFQUFBQVJBQUFBSXdBQQpBQlFBQUFB
QUFBQUFBd0FBQUFFQUJnQURBQVVBQlFBTEFBQUFBQUFEQUFBQUJBQUFBQVlBQUFBSEFBQUFDUUFB
QVAvLy8vOExBQUFBCkRRQUFBQThBQUFBU0FBQUFFd0FBQUJVQUFBQVlBQUFBSEFBQUFDQUFBQUFp
QUFBQXlWTWIyRENBaUF2bk1JMThrYk9VZkNXUjFHV24KUXpLeFVSVEhQRkgveFE5OURjZ29lVFVP
djcxOE5mc2ZTa202SDBIWUVpQmJQZm5pVWJZTUh2M3B2dS9SQzZKZHB3em01WmtMMU9yRQpYS242
bEVmdnpaTThzcFB5MEJ1ZEpGeXBpVGIxQXM0cFFKQlVTRktWZ21aNTdySWdSS0dFS2EwcUJXWCtQ
cUNueS9rTnlDVllPUnpDCjFGRjcyUU9FQVFBQWx3RUFBS29CQUFDOUFRQUEwQUVBQU9NQkFBRDJB
UUFBQ1FJQUFCd0NBQUF2QWdBQVFnSUFBRlVDQUFCb0FnQUEKZXdJQUFJNENBQUNoQWdBQXRBSUFB
TWNDQUFEYUFnQUE3UUlBQUFjREFBQWFBd0FBTFFNQUFFQURBQUJhQXdBQWJRTUFBSUFEQUFDVApB
d0FBcGdNQUFMa0RBQURNQXdBQTN3TUFBUElEQUFBRkJBQUFId1FBQUxvRkFBQUJBQUFBd3dBQUFB
SUFBZ0FBQUFEdEFBQUFBUUFBCkFDY0FBQUFrQUFBQUFBQUF2UUVBQUFFQUFBQ0hBQUFBRmdBQUFB
QUFBS1FDQUFBQkFBQUE1Z01BQUNRQUFBQUFBQURpSXdBQUFRQUEKQUE4bkFBQVdBQUFBQUFBQU9R
SUFBQUVBQUFEV0F3QUFCQUFDQUFBQUFQRUFBQUFCQUFBQU13QUFBQThBQUFBQUFBQWNCZ0FBQVFB
QQpBQlVFQUFBV0FBQUFBQUFBNndFQUFBRUFBQURXQUFBQUZnQUFBQUFBQUlRTkFBQUJBQUFBNkFr
QUFBSUFBZ0FBQUFBeEpRQUFBUUFBCkFPd25BQUFrQUFBQUFBQUF5QUVBQUFFQUFBQjJBQUFBRXdB
Q0FBQUFBSXNCQUFBQkFBQUFYZ0FBQUJZQUFBQUFBQUF5QmdBQUFRQUEKQUNBRUFBQWtBQUFBQUFB
QU9nUUFBQUVBQUFCbEFnQUFGZ0FBQUFBQUFLc2pBQUFCQUFBQTB5WUFBQVFBQWdBQUFBQnFDZ0FB
QVFBQQpBQmdJQUFBV0FBQUFBQUFBYmcwQUFBRUFBQUFTQ1FBQUFnQUNBQUFBQURrR0FBQUJBQUFB
SndRQUFCWUFBQUFBQUFCbUJnQUFBZ0FBCkFONEVBQUFUQUFKRkJRQUFGZ0FBQUFBQUFCZ0NBQUFC
QUFBQXRBQUFBQVFBQWdBQUFBRHNDZ0FBQVFBQUFPMElBQUFrQUFBQUFBQUEKUXlVQUFBRUFBQUR6
SndBQUZnQUFBQUFBQUcwR0FBQUNBQUFBWkFVQUFCTUFBdDBGQUFBV0FBQUFBQUFBN2dnQUFBRUFB
QUR5QlFBQQpGZ0FBQUFBQUFMVU5BQUFCQUFBQUtnc0FBQUlBQWdBQUFBQThKQUFBQVFBQUFFUW5B
QUFUQUFJQUFBQUFCUUlBQUFFQUFBQ2xBQUFBCkJBQUNBQUFBQU5VT0FBQUJBQUFBNXd3QUFBSUFB
Z0FBQUFEaEFRQUFBUUFBQU1zQUFBQVdBQUFBQUFBQWRRb0FBQUVBQUFBakNBQUEKQWdBQ0FBQUFB
SjhQQUFBQkFBQUF2UTRBQUNRQUFBQUFBQUFwQ1FBQUFRQUFBUDBGQUFBQ0FBSUFBQUFBUXdZQUFB
SUFBQUJHQkFBQQpFd0FDdndRQUFCWUFBQUFBQUFBSUpBQUFBUUFBQUNVbkFBQVdBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFYQUVBQUNFQUFnRUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFZQUVBQUFBQUFB
QjNDQUFBSVFBQ0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUNnQUFBQUFBQUhvQUFBQUIKQUFFQkFB
QUFBQUFBQUFBQUFBQUFBQUFBQUpBS0FBQUFBQUFBZ1FBQUFDRUFBZ0VBQUFBQUFBQUFBQUFBQUFB
QUFBQUFJQXNBQUFBQQpBQUNCQUFBQUlRQUNBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3dDd0FBQUFB
QUFQUUlBQURSV0FVQkFBQUFBQUFBQUFBQUFBQUFBQUFBCkFMQVVBQUFBQUFBQWdRQUFBQ0VBQWdF
QUFBQUFBQUFBQUFBQUFBQUFBQUFBUUJVQUFBQUFBQUJmQUFBQUFRQUJBUUFBQUFBQUFBQUEKQUFB
QUFBQUFBQUNnRlFBQUFBQUFBR0VBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQ3BBQUFB
QUFBQUl3QUFBQUFBQUFFQQpBQUFBQUFBQUFBQUFBQUFBQUFBQWdLa0FBQUFBQUFBekFBQUFBUUFC
QVFBQUFBQUFBQUFBQUFBQUFBQUFBQURBcVFBQUFBQUFBRFlBCkFBQUFBQUFCQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUNxQUFBQUFBQUFEUUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVLb0EK
QUFBQUFBQU5BQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ3FnQUFBQUFBQUNNQUFBQUFB
QUFCQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUZDcUFBQUFBQUFBTXdBQUFBRUFBUUVBQUFBQUFBQUFB
QUFBQUFBQUFBQUFrS29BQUFBQUFBQVdBQUFBQUFBQUFRQUFBQUFBCkFBQUFBQUFBQUFBQUFBQ3dx
Z0FBQUFBQUFBMEFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQU1DcUFBQUFBQUFBRFFBQUFB
QUEKQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBMEtvQUFBQUFBQUFHQUFBQUFBQUFBUUFBQUFBQUFB
QUFBQUFBQUFBQUFBRGdxZ0FBQUFBQQpBQW9BQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFQ
Q3FBQUFBQUFBQUl3QUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBCklLc0FBQUFBQUFBekFB
QUFBUUFCQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUFBQUFBQUFBQUY2VWdBQmVCQUJFQXdIQ0pB
QkFBQWsKQUFBQUhBQUFBTkRFL3YvLy8vLy9YQUVBQUFBQUFBQUFRUTRRaGdKRERRWkhnd1NPQXdB
QUpBQUFBRVFBQUFBSXh2Ny8vLy8vLzNjSQpBQUFBQUFBQUFFRU9FSVlDUXcwR1E0TUVqZ01BQUNR
QUFBQnNBQUFBa003Ky8vLy8vLzk2QUFBQUFBQUFBQUJCRGhDR0FrTU5Ca1dECkF3QUFBQUFrQUFB
QWxBQUFBT2pPL3YvLy8vLy9nUUFBQUFBQUFBQUFRUTRRaGdKRERRWkRnd1NPQXdBQUpBQUFBTHdB
QUFCUXovNy8KLy8vLy80RUFBQUFBQUFBQUFFRU9FSVlDUXcwR1E0TUVqZ01BQUN3QUFBRGtBQUFB
dU0vKy8vLy8vLy8wQ0FBQUFBQUFBQUJCRGhDRwpBa01OQmxDREI0d0dqUVdPQkk4REFBQUFBQ1FB
QUFBVUFRQUFpTmorLy8vLy8vK0JBQUFBQUFBQUFBQkJEaENHQWtNTkJrT0RCSTRECkFBQWtBQUFB
UEFFQUFQRFkvdi8vLy8vL1h3QUFBQUFBQUFBQVFRNFFoZ0pERFFaQ2d3TUFBQUFBSkFBQUFHUUJB
QUFvMmY3Ly8vLy8KLzJFQUFBQUFBQUFBQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ1FBQUFDTUFRQUFz
R3ovLy8vLy8vOGpBQUFBQUFBQUFBQkJEaENHQWtNTgpCZ0FBQUFBQUFBQWtBQUFBdEFFQUFMaHMv
Ly8vLy8vL013QUFBQUFBQUFBQVFRNFFoZ0pERFFaQ2d3TUFBQUFBSkFBQUFOd0JBQURRCmJQLy8v
Ly8vL3pZQUFBQUFBQUFBQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ1FBQUFBRUFnQUE2R3ovLy8vLy8v
OE5BQUFBQUFBQUFBQkIKRGhDR0FrTU5CZ0FBQUFBQUFBQWtBQUFBTEFJQUFOQnMvLy8vLy8vL0RR
QUFBQUFBQUFBQVFRNFFoZ0pERFFZQUFBQUFBQUFBSkFBQQpBRlFDQUFDNGJQLy8vLy8vL3lNQUFB
QUFBQUFBQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ1FBQUFCOEFnQUF3R3ovLy8vLy8vOHpBQUFBCkFB
QUFBQUJCRGhDR0FrTU5Ca0tEQXdBQUFBQWtBQUFBcEFJQUFOaHMvLy8vLy8vL0ZnQUFBQUFBQUFB
QVFRNFFoZ0pERFFZQUFBQUEKQUFBQUpBQUFBTXdDQUFEUWJQLy8vLy8vL3cwQUFBQUFBQUFBQUVF
T0VJWUNRdzBHQUFBQUFBQUFBQ1FBQUFEMEFnQUF1R3ovLy8vLwovLzhOQUFBQUFBQUFBQUJCRGhD
R0FrTU5CZ0FBQUFBQUFBQWtBQUFBSEFNQUFLQnMvLy8vLy8vL0JnQUFBQUFBQUFBQVFRNFFoZ0pE
CkRRWUFBQUFBQUFBQUpBQUFBRVFEQUFDSWJQLy8vLy8vL3dvQUFBQUFBQUFBQUVFT0VJWUNRdzBH
QUFBQUFBQUFBQ1FBQUFCc0F3QUEKY0d6Ly8vLy8vLzhqQUFBQUFBQUFBQUJCRGhDR0FrTU5CZ0FB
QUFBQUFBQWtBQUFBbEFNQUFIaHMvLy8vLy8vL013QUFBQUFBQUFBQQpRUTRRaGdKRERRWkNnd01B
QUFBQStoVUFBRFVBQUczMEZRQUFOZ0FBSGVvVkFBQmxBQUFkdkJVQUFINEFBQzJ3RlFBQU5nQUFI
YVlWCkFBQTFBQUJ0a0JVQUFETUFBRzJLRlFBQU5BQUFIWUFWQUFCa0FBQWRjUlVBQUg0QUFDMWxG
UUFBTkFBQUhWc1ZBQUF6QUFCdEtCVUEKQURFQUFCMGhGUUFBWndBQUxSUVZBQUJuQUFBdEJ4VUFB
REVBQUIwQUZRQUFjZ0FBTGU4VUFBQnhBQUF0NUJRQUFHWUFBQzNhRkFBQQpNZ0FBSGRBVUFBQ0ZB
QUE5eGhRQUFJUUFBRDI2RkFBQU1RQUFIWDRVQUFCM0FBQXRkaFFBQUdvQUFDMHVGQUFBYlFBQUxT
WVVBQUJyCkFBQXQ3eE1BQUM4QUFCM29Fd0FBWndBQUxkc1RBQUJuQUFBdHpoTUFBQzhBQUIzSEV3
QUFjZ0FBTGJZVEFBQnhBQUF0cXhNQUFHWUEKQUMyaEV3QUFNQUFBSFpjVEFBQ0ZBQUE5alJNQUFJ
UUFBRDJCRXdBQUx3QUFIVDhUQUFCb0FBQXR2UklBQUc0QUFDMnRFZ0FBQWdBQQpGWUVTQUFCdEFB
QXRlUklBQUdzQUFDMUNFZ0FBTFFBQUhUc1NBQUJuQUFBdExoSUFBR2NBQUMwaEVnQUFMUUFBSFJv
U0FBQnlBQUF0CkNSSUFBSEVBQUMzK0VRQUFaZ0FBTGZRUkFBQXVBQUFkNmhFQUFJVUFBRDNnRVFB
QWhBQUFQZFFSQUFBdEFBQWRraEVBQUdnQUFDMGcKRVFBQWJnQUFMUWdSQUFBQ0FBQVZBQkVBQUlN
QUFDM3JFQUFBYVFBQUxXWVFBQUNEQUFBdE9CQUFBQU1BQUJVc0VBQUFBd0FBRlE4UQpBQUJ6QUFB
dEJCQUFBSFFBQUMzOER3QUFhUUFBTGJRUEFBQ0RBQUF0ZUE4QUFBTUFBQlZ3RHdBQUF3QUFGV2dQ
QUFCekFBQXRYUThBCkFIUUFBQzFORHdBQWVnQUFMUm9QQUFCNUFBQXQ3dzRBQUhBQUFDM2pEZ0FB
QXdBQUZkY09BQUI1QUFBdHJBNEFBRzhBQUMya0RnQUEKQWdBQUZad09BQUFDQUFBVmV3NEFBSEFB
QUMxYURnQUFkZ0FBTFVzT0FBQjFBQUF0S0E0QUFBSUFBQlVjRGdBQUFnQUFGZTBOQUFBQwpBQUFW
NEEwQUFHd0FBQzJiRFFBQUxBQUFMWllOQUFBcUFBQWRqdzBBQUdjQUFDMkNEUUFBWndBQUxYVU5B
QUFxQUFBZGJnMEFBSElBCkFDMWREUUFBY1FBQUxWSU5BQUJtQUFBdFNBMEFBQ3NBQUIwK0RRQUFo
UUFBUFRRTkFBQ0VBQUE5S0EwQUFDb0FBQjBmRFFBQUtBQUEKSFJnTkFBQm5BQUF0Q3cwQUFHY0FB
QzMrREFBQUtBQUFIZmNNQUFCeUFBQXQ1Z3dBQUhFQUFDM2JEQUFBWmdBQUxkRU1BQUFwQUFBZAp4
d3dBQUlVQUFEMjlEQUFBaEFBQVBhME1BQUFvQUFBZG1nd0FBQUlBQUJXS0RBQUFKZ0FBSFlNTUFB
Qm5BQUF0ZGd3QUFHY0FBQzFwCkRBQUFKZ0FBSFdJTUFBQnlBQUF0VVF3QUFIRUFBQzFHREFBQVpn
QUFMVHdNQUFBbkFBQWRNZ3dBQUlVQUFEMG9EQUFBaEFBQVBSd00KQUFBbUFBQWRtQXNBQUNRQUFC
MlJDd0FBWndBQUxZUUxBQUJuQUFBdGR3c0FBQ1FBQUIxd0N3QUFjZ0FBTFY4TEFBQnhBQUF0VkFz
QQpBR1lBQUMxS0N3QUFKUUFBSFVBTEFBQ0ZBQUE5TmdzQUFJUUFBRDBxQ3dBQUpBQUFIUWdMQUFB
aUFBQWRBUXNBQUdjQUFDMzBDZ0FBClp3QUFMZWNLQUFBaUFBQWQ0QW9BQUhJQUFDM1BDZ0FBY1FB
QUxjUUtBQUJtQUFBdHVnb0FBQ01BQUIyd0NnQUFoUUFBUGFZS0FBQ0UKQUFBOW1nb0FBQ0lBQUIx
MkNnQUFld0FBUFdrS0FBQURBQUFWWVFvQUFBTUFBQlZRQ2dBQWN3QUFMVDhLQUFBREFBQVZOd29B
QUFNQQpBQlVxQ2dBQWRBQUFMUm9LQUFCZEFBQXR6Z2tBQUNBQUFCM0hDUUFBWndBQUxib0pBQUJu
QUFBdHJRa0FBQ0FBQUIybUNRQUFjZ0FBCkxaVUpBQUJ4QUFBdGlna0FBR1lBQUMyQUNRQUFJUUFB
SFhZSkFBQ0ZBQUE5YkFrQUFJUUFBRDFnQ1FBQUlBQUFIVmNKQUFBZUFBQWQKVUFrQUFHY0FBQzFE
Q1FBQVp3QUFMVFlKQUFBZUFBQWRMd2tBQUhJQUFDMGVDUUFBY1FBQUxSTUpBQUJtQUFBdENRa0FB
QjhBQUIzLwpDQUFBaFFBQVBmVUlBQUNFQUFBOTVRZ0FBQjRBQUIzWkNBQUFIQUFBSGRJSUFBQm5B
QUF0eFFnQUFHY0FBQzI0Q0FBQUhBQUFIYkVJCkFBQnlBQUF0b0FnQUFIRUFBQzJWQ0FBQVpnQUFM
WXNJQUFBZEFBQWRnUWdBQUlVQUFEMTNDQUFBaEFBQVBXY0lBQUFjQUFBZFd3Z0EKQUJvQUFCMVVD
QUFBWndBQUxVY0lBQUJuQUFBdE9nZ0FBQm9BQUIwekNBQUFjZ0FBTFNJSUFBQnhBQUF0RndnQUFH
WUFBQzBOQ0FBQQpHd0FBSFFNSUFBQ0ZBQUE5K1FjQUFJUUFBRDNwQndBQUdnQUFIZDBIQUFBWUFB
QWQxZ2NBQUdjQUFDM0pCd0FBWndBQUxid0hBQUFZCkFBQWR0UWNBQUhJQUFDMmtCd0FBY1FBQUxa
a0hBQUJtQUFBdGp3Y0FBQmtBQUIyRkJ3QUFoUUFBUFhzSEFBQ0VBQUE5YXdjQUFCZ0EKQUIxZkJ3
QUFGZ0FBSFZnSEFBQm5BQUF0U3djQUFHY0FBQzArQndBQUZnQUFIVGNIQUFCeUFBQXRKZ2NBQUhF
QUFDMGJCd0FBWmdBQQpMUkVIQUFBWEFBQWRCd2NBQUlVQUFEMzlCZ0FBaEFBQVBlMEdBQUFXQUFB
ZDRRWUFBQlFBQUIzYUJnQUFad0FBTGMwR0FBQm5BQUF0CndBWUFBQlFBQUIyNUJnQUFjZ0FBTGFn
R0FBQnhBQUF0blFZQUFHWUFBQzJUQmdBQUZRQUFIWWtHQUFDRkFBQTlmd1lBQUlRQUFEMXYKQmdB
QUZBQUFIV01HQUFBU0FBQWRYQVlBQUdjQUFDMVBCZ0FBWndBQUxVSUdBQUFTQUFBZE93WUFBSElB
QUMwcUJnQUFjUUFBTFI4RwpBQUJtQUFBdEZRWUFBQk1BQUIwTEJnQUFoUUFBUFFFR0FBQ0VBQUE5
OFFVQUFCSUFBQjNxQlFBQUVRQUFMZHdGQUFBUEFBQWQxUVVBCkFHY0FBQzNJQlFBQVp3QUFMYnNG
QUFBUEFBQWR0QVVBQUhJQUFDMmpCUUFBY1FBQUxaZ0ZBQUJtQUFBdGpnVUFBQkFBQUIyRUJRQUEK
aFFBQVBYb0ZBQUNFQUFBOWFnVUFBQThBQUIxVUJRQUFEUUFBSFUwRkFBQm5BQUF0UUFVQUFHY0FB
QzB6QlFBQURRQUFIU3dGQUFCeQpBQUF0R3dVQUFIRUFBQzBRQlFBQVpnQUFMUVlGQUFBT0FBQWQv
QVFBQUlVQUFEM3lCQUFBaEFBQVBlSUVBQUFOQUFBZDBRUUFBQXdBCkFDMnRCQUFBQ2dBQUhhWUVB
QUJuQUFBdG1RUUFBR2NBQUMyTUJBQUFDZ0FBSFlVRUFBQnlBQUF0ZEFRQUFIRUFBQzFwQkFBQVpn
QUEKTFY4RUFBQUxBQUFkVlFRQUFJVUFBRDFMQkFBQWhBQUFQVHNFQUFBS0FBQWRKUVFBQUFnQUFC
MGVCQUFBWndBQUxSRUVBQUJuQUFBdApCQVFBQUFnQUFCMzlBd0FBY2dBQUxld0RBQUJ4QUFBdDRR
TUFBR1lBQUMzWEF3QUFDUUFBSGMwREFBQ0ZBQUE5d3dNQUFJUUFBRDJ6CkF3QUFDQUFBSFowREFB
QUdBQUFkbGdNQUFHY0FBQzJKQXdBQVp3QUFMWHdEQUFBR0FBQWRkUU1BQUhJQUFDMWtBd0FBY1FB
QUxWa0QKQUFCbUFBQXRUd01BQUFjQUFCMUZBd0FBaFFBQVBUc0RBQUNFQUFBOUt3TUFBQVlBQUIw
VkF3QUFCQUFBSFE0REFBQm5BQUF0QVFNQQpBR2NBQUMzMEFnQUFCQUFBSGUwQ0FBQnlBQUF0M0FJ
QUFIRUFBQzNSQWdBQVpnQUFMY2NDQUFBRkFBQWR2UUlBQUlVQUFEMnpBZ0FBCmhBQUFQYU1DQUFB
RUFBQWRqUUlBQUFJQUFCMkdBZ0FBWndBQUxYa0NBQUJuQUFBdGJBSUFBQUlBQUIxbEFnQUFjZ0FB
TFZRQ0FBQngKQUFBdFNRSUFBR1lBQUMwL0FnQUFBd0FBSFRVQ0FBQ0ZBQUE5S3dJQUFJUUFBRDBi
QWdBQUFnQUFIUVVDQUFBQUFBQWQvZ0VBQUdjQQpBQzN4QVFBQVp3QUFMZVFCQUFBQUFBQWQzUUVB
QUhJQUFDM01BUUFBY1FBQUxjRUJBQUJtQUFBdHR3RUFBQUVBQUIydEFRQUFoUUFBClBhTUJBQUNF
QUFBOWt3RUFBQUFBQUIxREFRQUFhUUFBTFJVQkFBQmRBQUF0OVFBQUFIa0FBQzNJQUFBQWVnQUFM
YUFBQUFCd0FBQXQKbEFBQUFBTUFBQldJQUFBQWVRQUFMV0FBQUFCdkFBQXRXQUFBQUFJQUFCVlFB
QUFBQWdBQUZVZ0FBQUJ3QUFBdC93RUFBSDhBQUMzeApBUUFBWndBQUxkd0JBQUNDQUFBOXZRRUFB
R2NBQUMybkFRQUFnZ0FBUFpZQkFBQi9BQUF0ZVFFQUFHMEFBQzFwQVFBQWJnQUFMVWNCCkFBQjdB
QUE5THdFQUFIOEFBQzBoQVFBQVp3QUFMUXdCQUFDQ0FBQTk3UUFBQUdjQUFDM1hBQUFBZ2dBQVBj
a0FBQUJ0QUFBdHVRQUEKQUc0QUFDMmNBQUFBZUFBQUxWOEFBQUIvQUFBdFVRQUFBR2NBQUMwOEFB
QUFnZ0FBUFIwQUFBQm5BQUF0QndBQUFJSUFBRDNvQUFBQQpWUUFBRHVBQUFBQlRBQUFPMkFBQUFJ
RUFBQTdRQUFBQWdBQUFEc2dBQUFCOEFBQU93QUFBQUgwQUFBNjRBQUFBUHdBQURyQUFBQUJCCkFB
QU9rQUFBQUdFQUFBNklBQUFBWHdBQURvQUFBQUJQQUFBT2VBQUFBRkVBQUE1d0FBQUFTUUFBRG1n
QUFBQkxBQUFPWUFBQUFFMEEKQUE1QUFBQUFXd0FBRGpnQUFBQlpBQUFPTUFBQUFGY0FBQTRvQUFB
QVVRQUFEaUFBQUFCREFBQU9HQUFBQUVVQUFBNFFBQUFBUndBQQpEcmdyQUFBRUFBQUdzQ3NBQUFR
QUFBYU5Ld0FBQkFBQUJvVXJBQUFFQUFBR1lTc0FBQVFBQUFaWkt3QUFCQUFBQmlVckFBQUVBQUFH
CkhTc0FBQVFBQUFZT0t3QUFCQUFBQmdZckFBQUVBQUFHOXlvQUFBUUFBQWJ2S2dBQUJBQUFCdUFx
QUFBRUFBQUcyQ29BQUFRQUFBYTUKS2dBQUJBQUFCckVxQUFBRUFBQUdmaW9BQUFRQUFBWjJLZ0FB
QkFBQUJsTXFBQUFFQUFBR1N5b0FBQVFBQUFZbktnQUFCQUFBQmg4cQpBQUFFQUFBR0VDb0FBQVFB
QUFZSUtnQUFCQUFBQnZrcEFBQUVBQUFHOFNrQUFBUUFBQWJpS1FBQUJBQUFCdG9wQUFBRUFBQUd3
U2tBCkFBUUFBQWE1S1FBQUJBQUFCcFlwQUFBRUFBQUdqaWtBQUFRQUFBWmxLUUFBQkFBQUJsMHBB
QUFFQUFBR1Rpa0FBQVFBQUFaR0tRQUEKQkFBQUJqY3BBQUFFQUFBR0x5a0FBQVFBQUFZUUtRQUFC
QUFBQmdncEFBQUVBQUFHMVNnQUFBUUFBQWJOS0FBQUJBQUFCcW9vQUFBRQpBQUFHb2lnQUFBUUFB
QWFGS0FBQUJBQUFCbjBvQUFBRUFBQUdiaWdBQUFRQUFBWm1LQUFBQkFBQUJsY29BQUFFQUFBR1R5
Z0FBQVFBCkFBWTJLQUFBQkFBQUJpNG9BQUFFQUFBR0N5Z0FBQVFBQUFZREtBQUFCQUFBQmcwa0FB
QUVBQUFHQlNRQUFBUUFBQWJBSXdBQUJBQUEKQnJnakFBQUVBQUFHZ1NNQUFBUUFBQVo1SXdBQUJB
QUFCbE1qQUFBRUFBQUdTeU1BQUFRQUFBWThJd0FBQkFBQUJqUWpBQUFFQUFBRwpFU01BQUFRQUFB
WUpJd0FBQkFBQUJ1VWlBQUFFQUFBRzNTSUFBQVFBQUFhMklnQUFCQUFBQnE0aUFBQUVBQUFHbnlJ
QUFBUUFBQWFYCklnQUFCQUFBQm5RaUFBQUVBQUFHYkNJQUFBUUFBQVk1SWdBQUJBQUFCakVpQUFB
RUFBQUdEaUlBQUFRQUFBWUdJZ0FBQkFBQUJsWWgKQUFBRUFBQUdUaUVBQUFRQUFBWUpJUUFBQkFB
QUJnRWhBQUFFQUFBR3lpQUFBQVFBQUFiQ0lBQUFCQUFBQmhFZ0FBQUJBQUFHQ1NBQQpBQUVBQUFi
eEh3QUFBUUFBQnVrZkFBQUJBQUFHeWg4QUFBRUFBQWJDSHdBQUFRQUFCcW9mQUFBQkFBQUdvaDhB
QUFFQUFBYUhId0FBCkFRQUFCbjhmQUFBQkFBQUdQeDhBQUFFQUFBWTNId0FBQVFBQUJoZ2ZBQUFC
QUFBR0VCOEFBQUVBQUFiQUhnQUFBUUFBQnJnZUFBQUIKQUFBR3F4NEFBQUVBQUFhakhnQUFBUUFB
Qm9RZUFBQUJBQUFHZkI0QUFBRUFBQVphSGdBQUFRQUFCbEllQUFBQkFBQUdSUjRBQUFFQQpBQVk5
SGdBQUFRQUFCaVllQUFBQkFBQUdIaDRBQUFFQUFBWVZIUUFBQVFBQUJnMGRBQUFCQUFBR3lCd0FB
QUVBQUFiQUhBQUFBUUFBCkJvRWNBQUFCQUFBR2VSd0FBQUVBQUFacUhBQUFBUUFBQm1JY0FBQUJB
QUFHVXh3QUFBRUFBQVpMSEFBQUFRQUFCZ0FjQUFBQkFBQUcKK0JzQUFBRUFBQWE1R3dBQUFRQUFC
ckViQUFBQkFBQUdjaHNBQUFFQUFBWnFHd0FBQVFBQUJpc2JBQUFCQUFBR0l4c0FBQUVBQUFiawpH
Z0FBQVFBQUJ0d2FBQUFCQUFBR25Sb0FBQUVBQUFhVkdnQUFBUUFBQm9nYUFBQUJBQUFHZ0JvQUFB
RUFBQVpTR2dBQUFRQUFCa29hCkFBQUJBQUFHRXhvQUFBRUFBQVlMR2dBQUFRQUFCdWdaQUFBQkFB
QUc0QmtBQUFFQUFBYWdHUUFBQVFBQUJwZ1pBQUFCQUFBR2d4a0EKQUFNQUFBWXhHUUFBQlFBQUJo
b1pBQUFCQUFBR0Voa0FBQUVBQUFiM0dBQUFBd0FBQnFVWUFBQUZBQUFHamhnQUFBRUFBQWFHR0FB
QQpBUUFBQm1zWUFBQURBQUFHSWhnQUFBVUFBQWI1RndBQUF3QUFCckVYQUFBRkFBQUdpQmNBQUFN
QUFBWStGd0FBQlFBQUJoVVhBQUFECkFBQUd5eFlBQUFVQUFBYWlGZ0FBQXdBQUJsZ1dBQUFGQUFB
R0x4WUFBQU1BQUFibEZRQUFCUUFBQnJ3VkFBQURBQUFHY2hVQUFBVUEKQUFaSkZRQUFBd0FBQnY4
VUFBQUZBQUFHMWhRQUFBTUFBQWFNRkFBQUJRQUFCbU1VQUFBREFBQUdHUlFBQUFVQUFBYndFd0FB
QXdBQQpCcVlUQUFBRkFBQUdmUk1BQUFNQUFBWXpFd0FBQlFBQUJnb1RBQUFEQUFBR3doSUFBQVVB
QUFhWkVnQUFBd0FBQmxFU0FBQUZBQUFHCktCSUFBQU1BQUFiZUVRQUFCUUFBQnJVUkFBQURBQUFH
YXhFQUFBVUFBQVpERVFBQUF3QUFCdmtRQUFBRkFBQUcwQkFBQUFNQUFBYUcKRUFBQUJRQUFCbDBR
QUFBREFBQUdDeEFBQUFVQUFBYjBEd0FBQVFBQUJ1d1BBQUFCQUFBRzBROEFBQU1BQUFhSER3QUFC
UUFBQmw0UApBQUFEQUFBR0ZBOEFBQVVBQUFickRnQUFBd0FBQm9rT0FBQUZBQUFHWEE0QUFBRUFB
QVpVRGdBQUFRQUFCa1VPQUFBQkFBQUdQUTRBCkFBRUFBQVl1RGdBQUFRQUFCaVlPQUFBQkFBQUdG
dzRBQUFFQUFBWVBEZ0FBQVFBQUJ2SU5BQUFCQUFBRzZnMEFBQUVBQUFiRERRQUEKQVFBQUJyc05B
QUFCQUFBR25nMEFBQVVBQUFhRERRQUFBUUFBQm5zTkFBQUJBQUFHdXd3QUFBRUFBQWF6REFBQUFR
QUFCcUFNQUFBQgpBQUFHbUF3QUFBRUFBQWFKREFBQUFRQUFCb0VNQUFBQkFBQUdjZ3dBQUFFQUFB
WnFEQUFBQVFBQUJrME1BQUFCQUFBR1JRd0FBQUVBCkFBWVlEQUFBQVFBQUJoQU1BQUFCQUFBR0F3
d0FBQUVBQUFiN0N3QUFBUUFBQnZJTEFBQUJBQUFHNmdzQUFBRUFBQWF6Q3dBQUJRQUEKQnBnTEFB
QUJBQUFHa0FzQUFBRUFBQVlGQlFBQUJBQUFCcVlDQUFBQkFBQUdwUklBQUFRQUFBYWRFZ0FBQkFB
QUJvSVNBQUFFQUFBRwplaElBQUFRQUFBWmZFZ0FBQkFBQUJsY1NBQUFFQUFBR1BCSUFBQVFBQUFZ
MEVnQUFCQUFBQmhrU0FBQUVBQUFHRVJJQUFBUUFBQVlHCkVnQUFCQUFBQnY0UkFBQUVBQUFHNHhF
QUFBUUFBQWJiRVFBQUJBQUFCc0FSQUFBRUFBQUd1QkVBQUFRQUFBYWRFUUFBQkFBQUJwVVIKQUFB
RUFBQUdlaEVBQUFRQUFBWnlFUUFBQkFBQUJsY1JBQUFFQUFBR1R4RUFBQVFBQUFZMEVRQUFCQUFB
Qml3UkFBQUVBQUFHRVJFQQpBQVFBQUFZSkVRQUFCQUFBQnY0UUFBQUVBQUFHOWhBQUFBUUFBQWJi
RUFBQUJBQUFCdE1RQUFBRUFBQUd1QkFBQUFRQUFBYXdFQUFBCkJBQUFCcVVRQUFBRUFBQUduUkFB
QUFRQUFBYUNFQUFBQkFBQUJub1FBQUFFQUFBR1h4QUFBQVFBQUFaWEVBQUFCQUFBQmp3UUFBQUUK
QUFBR05CQUFBQVFBQUFZWkVBQUFCQUFBQmhFUUFBQUVBQUFHOWc4QUFBUUFBQWJ1RHdBQUJBQUFC
dE1QQUFBRUFBQUd5dzhBQUFRQQpBQWF3RHdBQUJBQUFCcWdQQUFBRUFBQUduUThBQUFRQUFBYVZE
d0FBQkFBQUJub1BBQUFFQUFBR2NnOEFBQVFBQUFaWER3QUFCQUFBCkJrOFBBQUFFQUFBR05BOEFB
QVFBQUFZc0R3QUFCQUFBQmhFUEFBQUVBQUFHQ1E4QUFBUUFBQWIrRGdBQUJBQUFCdllPQUFBRUFB
QUcKMnc0QUFBUUFBQWJURGdBQUJBQUFCcmdPQUFBRUFBQUdzQTRBQUFRQUFBYWxEZ0FBQkFBQUJw
ME9BQUFFQUFBR2dnNEFBQVFBQUFaNgpEZ0FBQkFBQUJsOE9BQUFFQUFBR1Z3NEFBQVFBQUFZOERn
QUFCQUFBQmpRT0FBQUVBQUFHR1E0QUFBUUFBQVlSRGdBQUJBQUFCdllOCkFBQUVBQUFHN2cwQUFB
UUFBQWJURFFBQUJBQUFCc3NOQUFBRUFBQUdzQTBBQUFRQUFBYW9EUUFBQkFBQUJwME5BQUFFQUFB
R2xRMEEKQUFRQUFBWjZEUUFBQkFBQUJuSU5BQUFFQUFBR1Z3MEFBQVFBQUFaUERRQUFCQUFBQmpR
TkFBQUVBQUFHTEEwQUFBUUFBQVlSRFFBQQpBUUFBQmdrTkFBQUJBQUFHN2d3QUFBRUFBQWJtREFB
QUFRQUFCc3NNQUFBQkFBQUd3d3dBQUFFQUFBYTREQUFBQVFBQUJyQU1BQUFCCkFBQUdsUXdBQUFF
QUFBYU5EQUFBQVFBQUJuSU1BQUFCQUFBR2Fnd0FBQUVBQUFaUERBQUFBUUFBQmtjTUFBQUJBQUFH
TEF3QUFBRUEKQUFZa0RBQUFBUUFBQmhrTUFBQUJBQUFHRVF3QUFBRUFBQWIyQ3dBQUFRQUFCdTRM
QUFBQkFBQUc0d3NBQUFFQUFBYmJDd0FBQVFBQQpCc0FMQUFBQkFBQUd1QXNBQUFFQUFBYXRDd0FB
QVFBQUJxVUxBQUFCQUFBR21nc0FBQUVBQUFhU0N3QUFBUUFBQm5jTEFBQUJBQUFHCmJ3c0FBQUVB
QUFaVUN3QUFBUUFBQmt3TEFBQUJBQUFHTVFzQUFBRUFBQVlwQ3dBQUFRQUFCZzRMQUFBQkFBQUdC
Z3NBQUFFQUFBYnAKQ2dBQUFRQUFCdUVLQUFBQkFBQUcxQW9BQUFFQUFBYk1DZ0FBQVFBQUJzRUtB
QUFCQUFBR3VRb0FBQUVBQUFhZUNnQUFBUUFBQnBZSwpBQUFCQUFBR2V3b0FBQUVBQUFaekNnQUFB
UUFBQmxnS0FBQUJBQUFHVUFvQUFBRUFBQVkxQ2dBQUFRQUFCaTBLQUFBQkFBQUdFZ29BCkFBRUFB
QVlLQ2dBQUFRQUFCdThKQUFBQkFBQUc1d2tBQUFFQUFBYk1DUUFBQVFBQUJzUUpBQUFCQUFBR3FR
a0FBQUVBQUFhaENRQUEKQVFBQUJwUUpBQUFCQUFBR2pBa0FBQUVBQUFadkNRQUFBUUFBQm1jSkFB
QUJBQUFHV2drQUFBRUFBQVpTQ1FBQUFRQUFCa1VKQUFBQgpBQUFHUFFrQUFBRUFBQVl3Q1FBQUFR
QUFCaWdKQUFBQkFBQUdDd2tBQUFFQUFBWURDUUFBQVFBQUJ2Z0lBQUFCQUFBRzhBZ0FBQUVBCkFB
YlZDQUFBQVFBQUJzMElBQUFCQUFBR3NnZ0FBQUVBQUFhcUNBQUFBUUFBQm84SUFBQUJBQUFHaHdn
QUFBRUFBQVpzQ0FBQUFRQUEKQm1RSUFBQUJBQUFHU1FnQUFBRUFBQVpCQ0FBQUFRQUFCaVlJQUFB
QkFBQUdIZ2dBQUFFQUFBWURDQUFBQVFBQUJ2c0hBQUFCQUFBRwo0QWNBQUFFQUFBYllCd0FBQVFB
QUJzc0hBQUFCQUFBR3d3Y0FBQUVBQUFhNEJ3QUFBUUFBQnJBSEFBQUJBQUFHb3djQUFBRUFBQWFi
CkJ3QUFBUUFBQnBBSEFBQUJBQUFHaUFjQUFBRUFBQVo5QndBQUFRQUFCblVIQUFBQkFBQUdXZ2NB
QUFFQUFBWlNCd0FBQVFBQUJrVUgKQUFBQkFBQUdQUWNBQUFFQUFBWXlCd0FBQVFBQUJpb0hBQUFC
QUFBR0hRY0FBQUVBQUFZVkJ3QUFBUUFBQmdvSEFBQUJBQUFHQWdjQQpBQUVBQUFiM0JnQUFBUUFB
QnU4R0FBQUJBQUFHMUFZQUFBRUFBQWJNQmdBQUFRQUFCcjhHQUFBQkFBQUd0d1lBQUFFQUFBYXNC
Z0FBCkFRQUFCcVFHQUFBQkFBQUdsd1lBQUFFQUFBYVBCZ0FBQVFBQUJvUUdBQUFCQUFBR2ZBWUFB
QUVBQUFaaEJnQUFBUUFBQmxrR0FBQUIKQUFBR1BnWUFBQUVBQUFZMkJnQUFBUUFBQmhzR0FBQUJB
QUFHRXdZQUFBRUFBQWI0QlFBQUFRQUFCdkFGQUFBQkFBQUcxUVVBQUFFQQpBQWJOQlFBQUFRQUFC
cklGQUFBQkFBQUdxZ1VBQUFFQUFBYVBCUUFBQVFBQUJvY0ZBQUFCQUFBR2JBVUFBQUVBQUFaa0JR
QUFBUUFBCkJra0ZBQUFCQUFBR1FRVUFBQUVBQUFZbUJRQUFBUUFBQmg0RkFBQUJBQUFHQXdVQUFB
RUFBQWI3QkFBQUFRQUFCdUFFQUFBQkFBQUcKMkFRQUFBRUFBQWE5QkFBQUFRQUFCclVFQUFBQkFB
QUdtZ1FBQUFFQUFBYVNCQUFBQVFBQUJuY0VBQUFCQUFBR2J3UUFBQUVBQUFaVQpCQUFBQVFBQUJr
d0VBQUFCQUFBR01RUUFBQUVBQUFZcEJBQUFBUUFBQmc0RUFBQUJBQUFHQmdRQUFBRUFBQWJyQXdB
QUFRQUFCdU1ECkFBQUJBQUFHeUFNQUFBRUFBQWJBQXdBQUFRQUFCcVVEQUFBQkFBQUduUU1BQUFF
QUFBYUNBd0FBQVFBQUJub0RBQUFCQUFBR1h3TUEKQUFFQUFBWlhBd0FBQVFBQUJqd0RBQUFCQUFB
R05BTUFBQUVBQUFZWkF3QUFBUUFBQmhFREFBQUJBQUFHOWdJQUFBRUFBQWJ1QWdBQQpBUUFBQnRN
Q0FBQUJBQUFHeXdJQUFBRUFBQWF3QWdBQUFRQUFCcWdDQUFBQkFBQUdqUUlBQUFFQUFBYUZBZ0FB
QVFBQUJtb0NBQUFCCkFBQUdZZ0lBQUFFQUFBWkhBZ0FBQVFBQUJqOENBQUFCQUFBR0pBSUFBQUVB
QUFZY0FnQUFBUUFBQmdFQ0FBQUJBQUFHK1FFQUFBRUEKQUFiZUFRQUFBUUFBQnRZQkFBQUJBQUFH
dXdFQUFBRUFBQWF6QVFBQUFRQUFCcGdCQUFBQkFBQUdrQUVBQUFFQUFBWjFBUUFBQVFBQQpCbTBC
QUFBQkFBQUdVZ0VBQUFFQUFBWktBUUFBQVFBQUJpOEJBQUFCQUFBR0p3RUFBQUVBQUFZTUFRQUFB
UUFBQmdRQkFBQUJBQUFHCitRQUFBQUVBQUFieEFBQUFBUUFBQnVZQUFBQUJBQUFHM2dBQUFBRUFB
QWJUQUFBQUFRQUFCc3NBQUFBQkFBQUd3QUFBQUFFQUFBYTQKQUFBQUFRQUFCcTBBQUFBQkFBQUdw
UUFBQUFFQUFBYWFBQUFBQVFBQUJwSUFBQUFCQUFBR2h3QUFBQUVBQUFaL0FBQUFBUUFBQm5RQQpB
QUFCQUFBR2JBQUFBQUVBQUFaUkFBQUFBUUFBQmtrQUFBQUJBQUFHUGdBQUFBRUFBQVkyQUFBQUFR
QUFCaHNBQUFBQkFBQUdFd0FBCkFBRUFBQVlJQUFBQUFRQUFCZ0FBQUFBQkFBQUcrQUVBQUFFQUFB
YndBUUFBQVFBQUJ1Z0JBQUFCQUFBRzRBRUFBQUVBQUFiSUFRQUEKQVFBQUJzQUJBQUFCQUFBR3VB
RUFBQUVBQUFhd0FRQUFBUUFBQnBnQkFBQUJBQUFHa0FFQUFBRUFBQWFJQVFBQUFRQUFCb0FCQUFB
QgpBQUFHYUFFQUFBRUFBQVpnQVFBQUFRQUFCbGdCQUFBQkFBQUdVQUVBQUFFQUFBWTRBUUFBQVFB
QUJqQUJBQUFCQUFBR0tBRUFBQUVBCkFBWWdBUUFBQVFBQUJnZ0JBQUFCQUFBR0FBRUFBQUVBQUFi
NEFBQUFBUUFBQnZBQUFBQUJBQUFHMkFBQUFBRUFBQWJRQUFBQUFRQUEKQnNnQUFBQUJBQUFHd0FB
QUFBRUFBQWFvQUFBQUFRQUFCcUFBQUFBQkFBQUdtQUFBQUFFQUFBYVFBQUFBQVFBQUJuZ0FBQUFC
QUFBRwpjQUFBQUFFQUFBWm9BQUFBQVFBQUJtQUFBQUFCQUFBR1NBQUFBQUVBQUFaQUFBQUFBUUFB
QmpnQUFBQUJBQUFHTUFBQUFBRUFBQVlZCkFBQUFBUUFBQmhBQUFBQUJBQUFHQ0FBQUFBRUFBQVlB
QUFBQUFRQUFCcGNFQUFBRUFBQUdnZ1FBQUFRQUFBWnRCQUFBQkFBQUJsZ0UKQUFBRUFBQUdUQVFB
QUFRQUFBWTNCQUFBQkFBQUJpc0VBQUFFQUFBR0ZnUUFBQVFBQUFZQkJBQUFCQUFBQnZVREFBQUVB
QUFHNEFNQQpBQVFBQUFiVUF3QUFCQUFBQnNnREFBQUVBQUFHdkFNQUFBUUFBQWF3QXdBQUJBQUFC
cVFEQUFBRUFBQUdqd01BQUFRQUFBYURBd0FBCkJBQUFCbmNEQUFBRUFBQUdhd01BQUFRQUFBWmZB
d0FBQkFBQUJsTURBQUFFQUFBR1BnTUFBQVFBQUFZeUF3QUFCQUFBQmlZREFBQUUKQUFBR0dnTUFB
QVFBQUFZT0F3QUFCQUFBQmdJREFBQUVBQUFHN1FJQUFBRUFBQWJZQWdBQUFRQUFCc01DQUFBQkFB
QUdyZ0lBQUFFQQpBQWFpQWdBQUFRQUFCbzBDQUFBQkFBQUdlQUlBQUFFQUFBWnNBZ0FBQVFBQUJs
Y0NBQUFCQUFBR1N3SUFBQUVBQUFZMkFnQUFBUUFBCkJpb0NBQUFCQUFBR0ZRSUFBQUVBQUFZQUFn
QUFBUUFBQnVzQkFBQUJBQUFHM3dFQUFBRUFBQWJUQVFBQUFRQUFCcjRCQUFBQkFBQUcKcVFFQUFB
RUFBQWFVQVFBQUFRQUFCbjhCQUFBQkFBQUdhZ0VBQUFFQUFBWlZBUUFBQVFBQUJrQUJBQUFCQUFB
R0t3RUFBQUVBQUFZVwpBUUFBQVFBQUJnRUJBQUFCQUFBRzdBQUFBQUVBQUFiWEFBQUFBUUFBQnNJ
QUFBQUJBQUFHclFBQUFBRUFBQWFoQUFBQUFRQUFCcFVBCkFBQUJBQUFHaVFBQUFBRUFBQVo5QUFB
QUFRQUFCbkVBQUFBQkFBQUdaUUFBQUFFQUFBWlpBQUFBQVFBQUJrMEFBQUFCQUFBR1FRQUEKQUFF
QUFBWXNBQUFBQVFBQUJpQUFBQUFCQUFBR0ZBQUFBQUVBQUFia0JRQUFFZ0FBVk9RRkFBQVNBQUFF
NEFVQUFCSUFBRlRnQlFBQQpFZ0FBQk53RkFBQVNBQUJVM0FVQUFCSUFBQVRZQlFBQUVnQUFWTmdG
QUFBU0FBQUUxQVVBQUJJQUFGVFVCUUFBRWdBQUJOQUZBQUFTCkFBQlUwQVVBQUJJQUFBVE1CUUFB
RWdBQVZNd0ZBQUFTQUFBRXlBVUFBQklBQUZUSUJRQUFFZ0FBQk1RRkFBQVNBQUJVeEFVQUFCSUEK
QUFUQUJRQUFFZ0FBVk1BRkFBQVNBQUFFdkFVQUFCSUFBRlM4QlFBQUVnQUFCTGdGQUFBU0FBQlV1
QVVBQUJJQUFBUzBCUUFBRWdBQQpWTFFGQUFBU0FBQUVzQVVBQUJJQUFGU3dCUUFBRWdBQUJLd0ZB
QUFTQUFCVXJBVUFBQklBQUFTb0JRQUFFZ0FBVktnRkFBQVNBQUFFCnBBVUFBQklBQUZTa0JRQUFF
Z0FBQktBRkFBQVNBQUJVb0FVQUFCSUFBQVNjQlFBQUVnQUFWSndGQUFBU0FBQUVtQVVBQUJJQUFG
U1kKQlFBQUVnQUFCSlFGQUFBU0FBQlVsQVVBQUJJQUFBU1FCUUFBRWdBQVZKQUZBQUFTQUFBRWpB
VUFBQklBQUZTTUJRQUFFZ0FBQklnRgpBQUFTQUFCVWlBVUFBQklBQUFTRUJRQUFFZ0FBVklRRkFB
QVNBQUFFZ0FVQUFCSUFBRlNBQlFBQUVnQUFCSHdGQUFBU0FBQlVmQVVBCkFCSUFBQVI0QlFBQUVn
QUFWSGdGQUFBU0FBQUVkQVVBQUJJQUFGUjBCUUFBRWdBQUJIQUZBQUFTQUFCVWNBVUFBQklBQUFS
c0JRQUEKRWdBQVZHd0ZBQUFTQUFBRWFBVUFBQklBQUZSb0JRQUFFZ0FBQkdRRkFBQVNBQUJVWkFV
QUFCSUFBQVJnQlFBQUVnQUFWR0FGQUFBUwpBQUFFWEFVQUFCSUFBRlJjQlFBQUVnQUFCRmdGQUFB
U0FBQlVXQVVBQUJJQUFBUlVCUUFBRWdBQVZGUUZBQUFTQUFBRVVBVUFBQklBCkFGUlFCUUFBRWdB
QUJFd0ZBQUFTQUFCVVRBVUFBQklBQUFSSUJRQUFFZ0FBVkVnRkFBQVNBQUFFUkFVQUFCSUFBRlJF
QlFBQUVnQUEKQkVBRkFBQVNBQUJVUUFVQUFCSUFBQVE4QlFBQUVnQUFWRHdGQUFBU0FBQUVPQVVB
QUJJQUFGUTRCUUFBRWdBQUJEUUZBQUFTQUFCVQpOQVVBQUJJQUFBUXdCUUFBRWdBQVZEQUZBQUFT
QUFBRUxBVUFBQklBQUZRc0JRQUFFZ0FBQkNnRkFBQVNBQUJVS0FVQUFCSUFBQVFrCkJRQUFFZ0FB
VkNRRkFBQVNBQUFFSUFVQUFCSUFBRlFnQlFBQUVnQUFCQndGQUFBU0FBQlVIQVVBQUJJQUFBUVlC
UUFBRWdBQVZCZ0YKQUFBU0FBQUVGQVVBQUJJQUFGUVVCUUFBRWdBQUJCQUZBQUFTQUFCVUVBVUFB
QklBQUFRTUJRQUFFZ0FBVkF3RkFBQVNBQUFFQ0FVQQpBQklBQUZRSUJRQUFFZ0FBQkFRRkFBQVNB
QUJVQkFVQUFCSUFBQVFBQlFBQUVnQUFWQUFGQUFBU0FBQUUvQVFBQUJJQUFGVDhCQUFBCkVnQUFC
UGdFQUFBU0FBQlUrQVFBQUJJQUFBVDBCQUFBRWdBQVZQUUVBQUFTQUFBRThBUUFBQklBQUZUd0JB
QUFFZ0FBQk93RUFBQVMKQUFCVTdBUUFBQklBQUFUb0JBQUFFZ0FBVk9nRUFBQVNBQUFFNUFRQUFC
SUFBRlRrQkFBQUVnQUFCT0FFQUFBU0FBQlU0QVFBQUJJQQpBQVRjQkFBQUVnQUFWTndFQUFBU0FB
QUUyQVFBQUJJQUFGVFlCQUFBRWdBQUJOUUVBQUFTQUFCVTFBUUFBQklBQUFUUUJBQUFFZ0FBClZO
QUVBQUFTQUFBRXpBUUFBQklBQUZUTUJBQUFFZ0FBQk1nRUFBQVNBQUJVeUFRQUFCSUFBQVRFQkFB
QUVnQUFWTVFFQUFBU0FBQUUKd0FRQUFCSUFBRlRBQkFBQUVnQUFCTHdFQUFBU0FBQlV2QVFBQUJJ
QUFBUzRCQUFBRWdBQVZMZ0VBQUFTQUFBRXRBUUFBQklBQUZTMApCQUFBRWdBQUJMQUVBQUFTQUFC
VXNBUUFBQklBQUFTc0JBQUFFZ0FBVkt3RUFBQVNBQUFFcUFRQUFCSUFBRlNvQkFBQUVnQUFCS1FF
CkFBQVNBQUJVcEFRQUFCSUFBQVNnQkFBQUVnQUFWS0FFQUFBU0FBQUVuQVFBQUJJQUFGU2NCQUFB
RWdBQUJKZ0VBQUFTQUFCVW1BUUEKQUJJQUFBU1VCQUFBRWdBQVZKUUVBQUFTQUFBRWtBUUFBQklB
QUZTUUJBQUFFZ0FBQkl3RUFBQVNBQUJVakFRQUFCSUFBQVNJQkFBQQpFZ0FBVklnRUFBQVNBQUFF
aEFRQUFCSUFBRlNFQkFBQUVnQUFCSUFFQUFBU0FBQlVnQVFBQUJJQUFBUjhCQUFBRWdBQVZId0VB
QUFTCkFBQUVlQVFBQUJJQUFGUjRCQUFBRWdBQUJIUUVBQUFTQUFCVWRBUUFBQklBQUFSd0JBQUFF
Z0FBVkhBRUFBQVNBQUFFYkFRQUFCSUEKQUZSc0JBQUFFZ0FBQkdnRUFBQVNBQUJVYUFRQUFCSUFB
QVJrQkFBQUVnQUFWR1FFQUFBU0FBQUVZQVFBQUJJQUFGUmdCQUFBRWdBQQpCRndFQUFBU0FBQlVY
QVFBQUJJQUFBUllCQUFBRWdBQVZGZ0VBQUFTQUFBRVZBUUFBQklBQUZSVUJBQUFFZ0FBQkZBRUFB
QVNBQUJVClVBUUFBQklBQUFSTUJBQUFFZ0FBVkV3RUFBQVNBQUFFU0FRQUFCSUFBRlJJQkFBQUVn
QUFCRVFFQUFBU0FBQlVSQVFBQUJJQUFBUkEKQkFBQUVnQUFWRUFFQUFBU0FBQUVQQVFBQUJJQUFG
UThCQUFBRWdBQUJEZ0VBQUFTQUFCVU9BUUFBQklBQUFRMEJBQUFFZ0FBVkRRRQpBQUFTQUFBRU1B
UUFBQklBQUZRd0JBQUFFZ0FBQkN3RUFBQVNBQUJVTEFRQUFCSUFBQVFvQkFBQUVnQUFWQ2dFQUFB
U0FBQUVKQVFBCkFCSUFBRlFrQkFBQUVnQUFCQ0FFQUFBU0FBQlVJQVFBQUJJQUFBUWNCQUFBRWdB
QVZCd0VBQUFTQUFBRUdBUUFBQklBQUZRWUJBQUEKRWdBQUJCUUVBQUFTQUFCVUZBUUFBQklBQUFR
UUJBQUFFZ0FBVkJBRUFBQVNBQUFFREFRQUFCSUFBRlFNQkFBQUVnQUFCQWdFQUFBUwpBQUJVQ0FR
QUFCSUFBQVFFQkFBQUVnQUFWQVFFQUFBU0FBQUVBQVFBQUJJQUFGUUFCQUFBRWdBQUJQd0RBQUFT
QUFCVS9BTUFBQklBCkFBVDRBd0FBRWdBQVZQZ0RBQUFTQUFBRTlBTUFBQklBQUZUMEF3QUFFZ0FB
QlBBREFBQVNBQUJVOEFNQUFCSUFBQVRzQXdBQUVnQUEKVk93REFBQVNBQUFFNkFNQUFCSUFBRlRv
QXdBQUVnQUFCT1FEQUFBU0FBQlU1QU1BQUJJQUFBVGdBd0FBRWdBQVZPQURBQUFTQUFBRQozQU1B
QUJJQUFGVGNBd0FBRWdBQUJOZ0RBQUFTQUFCVTJBTUFBQklBQUFUVUF3QUFFZ0FBVk5RREFBQVNB
QUFFMEFNQUFCSUFBRlRRCkF3QUFFZ0FBQk13REFBQVNBQUJVekFNQUFCSUFBQVRJQXdBQUVnQUFW
TWdEQUFBU0FBQUV4QU1BQUJJQUFGVEVBd0FBRWdBQUJNQUQKQUFBU0FBQlV3QU1BQUJJQUFBUzhB
d0FBRWdBQVZMd0RBQUFTQUFBRXVBTUFBQklBQUZTNEF3QUFFZ0FBQkxRREFBQVNBQUJVdEFNQQpB
QklBQUFTd0F3QUFFZ0FBVkxBREFBQVNBQUFFckFNQUFCSUFBRlNzQXdBQUVnQUFCS2dEQUFBU0FB
QlVxQU1BQUJJQUFBU2tBd0FBCkVnQUFWS1FEQUFBU0FBQUVvQU1BQUJJQUFGU2dBd0FBRWdBQUJK
d0RBQUFTQUFCVW5BTUFBQklBQUFTWUF3QUFFZ0FBVkpnREFBQVMKQUFBRUtBQUFBQlFBQUZRb0FB
QUFGQUFBQklBQkFBQVZBQUJVZ0FFQUFCVUFBQVI4QVFBQUZRQUFWSHdCQUFBVkFBQUVlQUVBQUJV
QQpBRlI0QVFBQUZRQUFCSFFCQUFBVkFBQlVkQUVBQUJVQUFBUndBUUFBRlFBQVZIQUJBQUFWQUFB
RWJBRUFBQlVBQUZSc0FRQUFGUUFBCkJHZ0JBQUFWQUFCVWFBRUFBQlVBQUFSa0FRQUFGUUFBVkdR
QkFBQVZBQUFFWUFFQUFCVUFBRlJnQVFBQUZRQUFCRndCQUFBVkFBQlUKWEFFQUFCVUFBQVJZQVFB
QUZRQUFWRmdCQUFBVkFBQUVWQUVBQUJVQUFGUlVBUUFBRlFBQUJGQUJBQUFWQUFCVVVBRUFBQlVB
QUFSTQpBUUFBRlFBQVZFd0JBQUFWQUFBRVNBRUFBQlVBQUZSSUFRQUFGUUFBQkVRQkFBQVZBQUJV
UkFFQUFCVUFBQVJBQVFBQUZRQUFWRUFCCkFBQVZBQUFFUEFFQUFCVUFBRlE4QVFBQUZRQUFCRGdC
QUFBVkFBQlVPQUVBQUJVQUFBUTBBUUFBRlFBQVZEUUJBQUFWQUFBRU1BRUEKQUJVQUFGUXdBUUFB
RlFBQUJDd0JBQUFWQUFCVUxBRUFBQlVBQUFRb0FRQUFGUUFBVkNnQkFBQVZBQUFFSkFFQUFCVUFB
RlFrQVFBQQpGUUFBQkNBQkFBQVZBQUJVSUFFQUFCVUFBQVFjQVFBQUZRQUFWQndCQUFBVkFBQUVH
QUVBQUJVQUFGUVlBUUFBRlFBQUJCUUJBQUFWCkFBQlVGQUVBQUJVQUFBUVFBUUFBRlFBQVZCQUJB
QUFWQUFBRURBRUFBQlVBQUZRTUFRQUFGUUFBQkFnQkFBQVZBQUJVQ0FFQUFCVUEKQUFRRUFRQUFG
UUFBVkFRQkFBQVZBQUFFQUFFQUFCVUFBRlFBQVFBQUZRQUFCUHdBQUFBVkFBQlUvQUFBQUJVQUFB
VDRBQUFBRlFBQQpWUGdBQUFBVkFBQUV3QUlBQUFRQUFBYWdBZ0FBQkFBQUJvQUNBQUFFQUFBR1lB
SUFBQVFBQUFaQUFnQUFCQUFBQmlBQ0FBQUVBQUFHCkFBSUFBQVFBQUFiZ0FRQUFCQUFBQnNBQkFB
QUVBQUFHb0FFQUFBUUFBQWFBQVFBQUJBQUFCbUFCQUFBRUFBQUdRQUVBQUFRQUFBWWcKQVFBQUJB
QUFCZ0FCQUFBQkFBQUc0QUFBQUFFQUFBYkFBQUFBQVFBQUJxQUFBQUFCQUFBR2dBQUFBQUVBQUFa
Z0FBQUFBUUFBQmtBQQpBQUFCQUFBR0lBQUFBQUVBQUFZQUFBQUFBUUFBQnZJS0FBQU9CUUFBVUQ4
QkFBQUFBQUFnQ3dBQURnTUFBRkNEQUFBQUFBQUFTZ3NBCkFBNEZBQUNRUHdFQUFBQUFBSGdMQUFB
T0F3QUFJSjRBQUFBQUFBQ2lDd0FBRGdVQUFIQS9BUUFBQUFBQXlnc0FBQTREQUFCZ2tBQUEKQUFB
QUFPNExBQUFPQlFBQVFEOEJBQUFBQUFBWURBQUFEZ01BQUpCOEFBQUFBQUFBUGd3QUFBNEZBQUF3
UHdFQUFBQUFBRzBNQUFBTwpBd0FBOEhVQUFBQUFBQUNZREFBQURnVUFBQ0EvQVFBQUFBQUF3UXdB
QUE0REFBQkFiZ0FBQUFBQUFPWU1BQUFPQVFBQWtBb0FBQUFBCkFBQUpEUUFBRGdVQUFJQS9BUUFB
QUFBQU1RMEFBQTREQUFBZ2x3QUFBQUFBQUZVTkFBQU9CUUFBWUQ4QkFBQUFBQUIrRFFBQURnTUEK
QVBDSkFBQUFBQUFBb3cwQUFBNEJBQUFnQ3dBQUFBQUFBTTBOQUFBT0JRQUFTRDhCQUFBQUFBRDBE
UUFBRGdNQUFPQi9BQUFBQUFBQQpGdzRBQUE0RkFBQ0lQd0VBQUFBQUFENE9BQUFPQXdBQW9Kb0FB
QUFBQUFCaERnQUFEZ1VBQUdnL0FRQUFBQUFBZ2c0QUFBNERBQUFnCmpRQUFBQUFBQUo4T0FBQU9C
UUFBT0Q4QkFBQUFBQURDRGdBQURnTUFBRkI1QUFBQUFBQUE0UTRBQUE0RkFBQW9Qd0VBQUFBQUFB
a1AKQUFBT0F3QUF3SElBQUFBQUFBQXREd0FBRGdVQUFCZy9BUUFBQUFBQVR3OEFBQTREQUFEd2FR
QUFBQUFBQUcwUEFBQU9CUUFBZUQ4QgpBQUFBQUFDT0R3QUFEZ01BQU5DVEFBQUFBQUFBcXc4QUFB
NEZBQUJZUHdFQUFBQUFBTTBQQUFBT0F3QUE0SVlBQUFBQUFBRHJEd0FBCkRnVUFBS0EvQVFBQUFB
QUFGaEFBQUE0REFBQ0FwUUFBQUFBQUFEMFFBQUFPQlFBQW1EOEJBQUFBQUFCdkVBQUFEZ01BQU9D
aEFBQUEKQUFBQW5SQUFBQTRGQUFBUVB3RUFBQUFBQU13UUFBQU9Bd0FBNEZzQUFBQUFBQUQzRUFB
QURnVUFBQWcvQVFBQUFBQUFKeEVBQUE0RApBQURnVFFBQUFBQUFBRk1SQUFBT0JRQUErRDRCQUFB
QUFBQ0pFUUFBRGdNQUFOQXhBQUFBQUFBQXV4RUFBQTRCQUFDd0ZBQUFBQUFBCkFPb1JBQUFPQlFB
QThENEJBQUFBQUFBWUVnQUFEZ01BQURBa0FBQUFBQUFBUWhJQUFBNEZBQURvUGdFQUFBQUFBSGNT
QUFBT0F3QUEKa0JZQUFBQUFBQUNvRWdBQURnVUFBQUEvQVFBQUFBQUEzeElBQUE0REFBRGdQd0FB
QUFBQUFCSVRBQUFPQlFBQTBENEJBQUFBQUFCUgpFd0FBRGdVQUFNZytBUUFBQUFBQWpoTUFBQTRG
QUFEZ1BnRUFBQUFBQU1RVEFBQU9CUUFBMkQ0QkFBQUFBQUQ0RXdBQURoY0FBQkE3CkFRQUFBQUFB
QWhRQUFBNFhBQUNnT3dFQUFBQUFBQ2dVQUFBT0Z3QUF5RHNCQUFBQUFBQlZGQUFBRGhjQUFDQThB
UUFBQUFBQUVRWUEKQUI4RWdBQWdxd0FBQUFBQUFOWUtBQUFmRjRBQW9ENEJBQUFBQUFENEJRQUFI
d1NBQVBDcUFBQUFBQUFBdWdvQUFCOFhnQUI0UGdFQQpBQUFBQU5vRkFBQWZCSUFBNEtvQUFBQUFB
QUNaQ2dBQUh4ZUFBRkErQVFBQUFBQUF2QVVBQUI4RWdBRFFxZ0FBQUFBQUFIZ0tBQUFmCkY0QUFL
RDRCQUFBQUFBQUJBQUFBSHdFQUFBQUFBQUFBQUFBQUVRY0FBQjhYQUFBb093RUFBQUFBQUowREFB
QWZCSUFBZ0trQUFBQUEKQUFCb0NBQUFIeGVBQU1BOEFRQUFBQUFBWXdNQUFCOEVnQUJRcVFBQUFB
QUFBRUVJQUFBZkY0QUFtRHdCQUFBQUFBQ3lBUUFBSHdFQQpBTEFMQUFBQUFBQUFyQWNBQUI4WEFB
RHdPd0VBQUFBQUFOWUVBQUFmQklBQVVLb0FBQUFBQUFDR0NRQUFIeGVBQUlnOUFRQUFBQUFBCnNB
UUFBQjhFZ0FBZ3FnQUFBQUFBQUYwSkFBQWZGNEFBWUQwQkFBQUFBQUQ4QkFBQUh3U0FBSkNxQUFB
QUFBQUFyd2tBQUI4WGdBQ3cKUFFFQUFBQUFBTllEQUFBZkJJQUF3S2tBQUFBQUFBQ1BDQUFBSHhl
QUFPZzhBUUFBQUFBQXR3SUFBQjhCQUFCQUZRQUFBQUFBQU9vSApBQUFmRndBQVNEd0JBQUFBQUFB
Y0F3QUFId0VBQUtBVkFBQUFBQUFBR2dnQUFCOFhBQUJ3UEFFQUFBQUFBRk1CQUFBZkFRQUFFQW9B
CkFBQUFBQUI1QndBQUh4Y0FBSGc3QVFBQUFBQUFHUVFBQUI4RWdBQUFxZ0FBQUFBQUFNQUlBQUFm
RjRBQUVEMEJBQUFBQUFCbUJBQUEKSHdTQUFCQ3FBQUFBQUFBQUVBa0FBQjhYZ0FBNFBRRUFBQUFB
QUlVQUFBQWZBUUFBWUFFQUFBQUFBQUJOQndBQUh4Y0FBRkE3QVFBQQpBQUFBSVFVQUFCOEVnQUN3
cWdBQUFBQUFBTmNKQUFBZkY0QUEyRDBCQUFBQUFBQndCUUFBSHdTQUFNQ3FBQUFBQUFBQUtRb0FB
QjhYCmdBQUFQZ0VBQUFBQUFDb0dBQUFmQmdBQUFLd0FBQUFBQUFEN0FnQUFId1lBQUdDckFBQUFB
QUFBUUFNQUFCOEdBQUN3cXdBQUFBQUEKQU9rQUFBQUJBQUFBQUFBQUFBQUFBQUJJQVFBQUFRQUFB
QUFBQUFBQUFBQUFSd0lBQUFFQUFBQUFBQUFBQUFBQUFLNEFBQUFCQUFBQQpBQUFBQUFBQUFBQ05B
Z0FBQVFBQUFBQUFBQUFBQUFBQVhBSUFBQUVBQUFBQUFBQUFBQUFBQU8wQkFBQUJBQUFBQUFBQUFB
QUFBQUIxCkFnQUFBUUFBQUFBQUFBQUFBQUFBTWdJQUFBRUFBQUFBQUFBQUFBQUFBRkVBQUFBQkFB
QUFBQUFBQUFBQUFBQTZBQUFBQVFBQUFBQUEKQUFBQUFBQUFCZ0VBQUFFQUFBQUFBQUFBQUFBQUFD
WUJBQUFCQUFBQUFBQUFBQUFBQUFDVUFRQUFBUUFBQUFBQUFBQUFBQUFBZ3dFQQpBQUVBQUFBQUFB
QUFBQUFBQVA0QkFBQUJBQUFBQUFBQUFBQUFBQUFZQWdBQUFRQUFBQUFBQUFBQUFBQUFwd0lBQUFF
QUFBQUFBQUFBCkFBQUFBQVFFQUFBQkFBQUFBQUFBQUFBQUFBQmtBQUFBQVFBQUFBQUFBQUFBQUFB
QWRRQUFBQUVBQUFBQUFBQUFBQUFBQUtZQkFBQUIKQUFBQUFBQUFBQUFBQUFCM0JnQUFBUUFBQUFB
QUFBQUFBQUFBUlFZQUFBRUFBQUFBQUFBQUFBQUFBT1FDQUFBQkFBQUFBQUFBQUFBQQpBQURCQXdB
QUFRQUFBQUFBQUFBQUFBQUF1Z1lBQUFFQUFBQUFBQUFBQUFBQUFPMEdBQUFCQUFBQUFBQUFBQUFB
QUFDSEF3QUFBUUFBCkFBQUFBQUFBQUFBQUt3SUFBQUVBQUFBQUFBQUFBQUFBQU1JQUFBQUJBQUFB
QUFBQUFBQUFBQURYQUFBQUFRQUFBQUFBQUFBQUFBQUEKQUY5ZldrNHlOVTFsWkdsaFRHVm5ZV041
VlVsSmJXRm5aVVZzWlcxbGJuUTFjR0ZwYm5SRlVEbERSME52Ym5SbGVIUTJRMGRTWldOMApBRjlE
UjBOdmJuUmxlSFJVY21GdWMyeGhkR1ZEVkUwQVgwTkhRMjl1ZEdWNGRGTmpZV3hsUTFSTkFGOURS
MUpsWTNSSFpYUklaV2xuCmFIUUFYME5IVW1WamRFZGxkRmRwWkhSb0FGOWZXazVMTWpWTlpXUnBZ
VXhsWjJGamVWVkpTVzFoWjJWRmJHVnRaVzUwTldsdFlXZGwKUlhZQVgwTkhRMjl1ZEdWNGRFUnlZ
WGRKYldGblpRQmZhME5HUVd4c2IyTmhkRzl5UkdWbVlYVnNkQUJmYTBOR1FXeHNiMk5oZEc5eQpU
blZzYkFCZlEwWkVZWFJoUTNKbFlYUmxWMmwwYUVKNWRHVnpUbTlEYjNCNUFGOURSMFJoZEdGUWNt
OTJhV1JsY2tOeVpXRjBaVmRwCmRHaERSa1JoZEdFQVgwTkhTVzFoWjJWRGNtVmhkR1ZYYVhSb1VF
NUhSR0YwWVZCeWIzWnBaR1Z5QUY5RFJsSmxiR1ZoYzJVQVgxOWEKVGtzeU5VMWxaR2xoVEdWbllX
TjVWVWxKYldGblpVVnNaVzFsYm5ReE1XNWhkSFZ5WVd4VGFYcGxSWFlBWDBOSFNXMWhaMlZIWlhS
WAphV1IwYUFCZlEwZEpiV0ZuWlVkbGRFaGxhV2RvZEFCZlEwZFRhWHBsV21WeWJ3QmZYMXBPTWpk
TlpXUnBZVXhsWjJGamVWVkpWR2x0ClpXeHBibVZUYkdsa1pYSTFjR0ZwYm5SRlVEbERSME52Ym5S
bGVIUTJRMGRTWldOMEFGOURSME52Ym5SbGVIUkhaWFJEVkUwQVgwTkgKVEdGNVpYSkRjbVZoZEdW
WGFYUm9RMjl1ZEdWNGRBQmZRMGRNWVhsbGNrZGxkRU52Ym5SbGVIUUFYMlpzYjI5eUFGOURSME52
Ym5SbAplSFJUWVhabFIxTjBZWFJsQUY5RFIwTnZiblJsZUhSRGJHbHdWRzlTWldOMEFGOURSME52
Ym5SbGVIUkVjbUYzVkdsc1pXUkpiV0ZuClpRQmZRMGREYjI1MFpYaDBVbVZ6ZEc5eVpVZFRkR0Yw
WlFCZlEwZERiMjUwWlhoMFJISmhkMHhoZVdWeVNXNVNaV04wQUY5RFIweGgKZVdWeVVtVnNaV0Z6
WlFCZlgxcE9TekU1VFdWa2FXRk1aV2RoWTNsRGIyNTBjbTlzY3pFMFkyOXVkSEp2YkVadmNsQmhj
blJGYVFCZgpYMXBPTTFkVVJqRXdabUZ6ZEUxaGJHeHZZMFZ0QUY5ZldsUldNalZOWldScFlVeGxa
MkZqZVZWSlNXMWhaMlZGYkdWdFpXNTBBRjlmCldrNUxNVGxOWldScFlVeGxaMkZqZVVOdmJuUnli
Mnh6Tm5Oc2FXUmxja1YyQUY5ZldsUldNamROWldScFlVeGxaMkZqZVZWSlZHbHQKWld4cGJtVlRi
R2xrWlhJQVgxOWFUakkxVFdWa2FXRk1aV2RoWTNsVlNVbHRZV2RsUld4bGJXVnVkRVF4UlhZQVgx
OWFWRll4TkUxbApaR2xoVlVsRmJHVnRaVzUwQUY5ZldrNHlOVTFsWkdsaFRHVm5ZV041VlVsSmJX
Rm5aVVZzWlcxbGJuUkVNRVYyQUY5ZldrNHpWMVJHCk9HWmhjM1JHY21WbFJWQjJBRjlmV2s1TE1U
Uk5aV1JwWVZWSlJXeGxiV1Z1ZERkb2FYUlVaWE4wUlRaRFIxSmxZM1EzUTBkUWIybHUKZEFCZlEw
ZFNaV04wUTI5dWRHRnBibk5RYjJsdWRBQmZYMXBPU3pJMVRXVmthV0ZNWldkaFkzbFZTVWx0WVdk
bFJXeGxiV1Z1ZERJegpjMlYwVlhCRGIyNTBaWGgwUm05eVVHRnBiblJwYm1kRlVEbERSME52Ym5S
bGVIUTJRMGRTWldOMEFGOWZXazVMTWpWTlpXUnBZVXhsCloyRmplVlZKU1cxaFoyVkZiR1Z0Wlc1
ME1qZHlaWE4wYjNKbFEyOXVkR1Y0ZEVGbWRHVnlVR0ZwYm5ScGJtZEZVRGxEUjBOdmJuUmwKZUhR
QVgxOWFUakkzVFdWa2FXRk1aV2RoWTNsVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5UkRGRmRnQmZYMXBP
TWpkTlpXUnBZVXhsWjJGagplVlZKVkdsdFpXeHBibVZUYkdsa1pYSkVNRVYyQUY5ZldrNUxNVFJO
WldScFlWVkpSV3hsYldWdWRERXhibUYwZFhKaGJGTnBlbVZGCmRnQmZYMXBPU3pJM1RXVmthV0ZN
WldkaFkzbFZTVlJwYldWc2FXNWxVMnhwWkdWeU1qTnpaWFJWY0VOdmJuUmxlSFJHYjNKUVlXbHUK
ZEdsdVowVlFPVU5IUTI5dWRHVjRkRFpEUjFKbFkzUUFYMTlhVGtzeU4wMWxaR2xoVEdWbllXTjVW
VWxVYVcxbGJHbHVaVk5zYVdSbApjakkzY21WemRHOXlaVU52Ym5SbGVIUkJablJsY2xCaGFXNTBh
VzVuUlZBNVEwZERiMjUwWlhoMEFGOWZXazR4T1UxbFpHbGhUR1ZuCllXTjVRMjl1ZEhKdmJITkVN
VVYyQUY5ZldrNHhPVTFsWkdsaFRHVm5ZV041UTI5dWRISnZiSE5FTUVWMkFGOWZXazR4TkUxbFpH
bGgKVlVsRmJHVnRaVzUwUkRGRmRnQmZYMXBPTVRSTlpXUnBZVlZKUld4bGJXVnVkRVF3UlhZQVgx
OWFWRll4T1UxbFpHbGhUR1ZuWVdONQpRMjl1ZEhKdmJITUFYMTlhVGpFelRXVmthV0ZEYjI1MGNt
OXNjemhrY21GM1VHRnlkRVZwVURsRFIwTnZiblJsZUhRMlEwZFNaV04wCmFnQmZYMXBPTVROTlpX
UnBZVU52Ym5SeWIyeHpNak5rY21GM1ZHbHRaV3hwYm1WVGJHbGtaWEpVY21GamEwVlFPVU5IUTI5
dWRHVjQKZERaRFIxSmxZM1JrWkdvQVgxOWFUa3N4TTAxbFpHbGhRMjl1ZEhKdmJITXhNV2hwZEZS
bGMzUlFZWEowUldrMlEwZFNaV04wTjBOSApVRzlwYm5RQVgxOWFUa3N4TTAxbFpHbGhRMjl1ZEhK
dmJITXhNVzVoZEhWeVlXeFRhWHBsUldrQVgxOWFUakkxVFdWa2FXRk1aV2RoClkzbFZTVWx0WVdk
bFJXeGxiV1Z1ZERWd1lXbHVkRVZRT1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1F1WldnQVgxOWFUa3N5
TlUxbFpHbGgKVEdWbllXTjVWVWxKYldGblpVVnNaVzFsYm5RMWFXMWhaMlZGZGk1bGFBQmZYMXBP
U3pJMVRXVmthV0ZNWldkaFkzbFZTVWx0WVdkbApSV3hsYldWdWRERXhibUYwZFhKaGJGTnBlbVZG
ZGk1bGFBQmZYMXBPTWpkTlpXUnBZVXhsWjJGamVWVkpWR2x0Wld4cGJtVlRiR2xrClpYSTFjR0Zw
Ym5SRlVEbERSME52Ym5SbGVIUTJRMGRTWldOMExtVm9BRjlmV2s1TE1UbE5aV1JwWVV4bFoyRmpl
VU52Ym5SeWIyeHoKTVRSamIyNTBjbTlzUm05eVVHRnlkRVZwTG1Wb0FGOWZXazVMTVRsTlpXUnBZ
VXhsWjJGamVVTnZiblJ5YjJ4ek5uTnNhV1JsY2tWMgpMbVZvQUY5ZldrNHlOVTFsWkdsaFRHVm5Z
V041VlVsSmJXRm5aVVZzWlcxbGJuUkVNVVYyTG1Wb0FGOWZXazR5TlUxbFpHbGhUR1ZuCllXTjVW
VWxKYldGblpVVnNaVzFsYm5SRU1FVjJMbVZvQUY5ZldrNUxNVFJOWldScFlWVkpSV3hsYldWdWRE
ZG9hWFJVWlhOMFJUWkQKUjFKbFkzUTNRMGRRYjJsdWRDNWxhQUJmWDFwT1N6STFUV1ZrYVdGTVpX
ZGhZM2xWU1VsdFlXZGxSV3hsYldWdWRESXpjMlYwVlhCRApiMjUwWlhoMFJtOXlVR0ZwYm5ScGJt
ZEZVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBMbVZvQUY5ZldrNUxNalZOWldScFlVeGxaMkZqCmVW
VkpTVzFoWjJWRmJHVnRaVzUwTWpkeVpYTjBiM0psUTI5dWRHVjRkRUZtZEdWeVVHRnBiblJwYm1k
RlVEbERSME52Ym5SbGVIUXUKWldnQVgxOWFUakkzVFdWa2FXRk1aV2RoWTNsVlNWUnBiV1ZzYVc1
bFUyeHBaR1Z5UkRGRmRpNWxhQUJmWDFwT01qZE5aV1JwWVV4bApaMkZqZVZWSlZHbHRaV3hwYm1W
VGJHbGtaWEpFTUVWMkxtVm9BRjlmV2s1TE1UUk5aV1JwWVZWSlJXeGxiV1Z1ZERFeGJtRjBkWEpo
CmJGTnBlbVZGZGk1bGFBQmZYMXBPU3pJM1RXVmthV0ZNWldkaFkzbFZTVlJwYldWc2FXNWxVMnhw
WkdWeU1qTnpaWFJWY0VOdmJuUmwKZUhSR2IzSlFZV2x1ZEdsdVowVlFPVU5IUTI5dWRHVjRkRFpE
UjFKbFkzUXVaV2dBWDE5YVRrc3lOMDFsWkdsaFRHVm5ZV041VlVsVQphVzFsYkdsdVpWTnNhV1Js
Y2pJM2NtVnpkRzl5WlVOdmJuUmxlSFJCWm5SbGNsQmhhVzUwYVc1blJWQTVRMGREYjI1MFpYaDBM
bVZvCkFGOWZXazR4T1UxbFpHbGhUR1ZuWVdONVEyOXVkSEp2YkhORU1VVjJMbVZvQUY5ZldrNHhP
VTFsWkdsaFRHVm5ZV041UTI5dWRISnYKYkhORU1FVjJMbVZvQUY5ZldrNHhORTFsWkdsaFZVbEZi
R1Z0Wlc1MFJERkZkaTVsYUFCZlgxcE9NVFJOWldScFlWVkpSV3hsYldWdQpkRVF3UlhZdVpXZ0FY
MTlhV2t3ek1HMWxaR2xoVUU1SFJuVnNiSE5qY21WbGJsQnlaWE56WldSSmJXRm5aWFpGTldsdFlX
ZGxBRjlmCldrd3pOVTFsWkdsaFJuVnNiSE5qY21WbGJsQnlaWE56WldSSmJXRm5aVVJoZEdGZmNH
NW5BRjlmV2xwTU16QnRaV1JwWVZCT1IwWjEKYkd4V2IyeDFiV1ZRY21WemMyVmtTVzFoWjJWMlJU
VnBiV0ZuWlFCZlgxcE1NelZOWldScFlVWjFiR3hXYjJ4MWJXVlFjbVZ6YzJWawpTVzFoWjJWRVlY
UmhYM0J1WndCZlgxcGFUREkwYldWa2FXRlFUa2RRYkdGNVVISmxjM05sWkVsdFlXZGxka1UxYVcx
aFoyVUFYMTlhClRESTVUV1ZrYVdGUWJHRjVVSEpsYzNObFpFbHRZV2RsUkdGMFlWOXdibWNBWDE5
YVdrd3lObTFsWkdsaFVFNUhVbVYzYVc1a1VISmwKYzNObFpFbHRZV2RsZGtVMWFXMWhaMlVBWDE5
YVRETXhUV1ZrYVdGU1pYZHBibVJRY21WemMyVmtTVzFoWjJWRVlYUmhYM0J1WndCZgpYMXBhVERN
eGJXVmthV0ZRVGtkR1lYTjBSbTl5ZDJGeVpGQnlaWE56WldSSmJXRm5aWFpGTldsdFlXZGxBRjlm
V2t3ek5rMWxaR2xoClJtRnpkRVp2Y25kaGNtUlFjbVZ6YzJWa1NXMWhaMlZFWVhSaFgzQnVad0Jm
WDFwYVRESTFiV1ZrYVdGUVRrZFVhSFZ0WWxCeVpYTnoKWldSSmJXRm5aWFpGTldsdFlXZGxBRjlm
V2t3ek1FMWxaR2xoVkdoMWJXSlFjbVZ6YzJWa1NXMWhaMlZFWVhSaFgzQnVad0JmWDFwTQpNamR0
WldScFlWQk9SMVJ2WjJkc1pVTmhjSFJwYjI1elNXMWhaMlYyQUY5ZldscE1NalJ0WldScFlWQk9S
MDExZEdWUWNtVnpjMlZrClNXMWhaMlYyUlRWcGJXRm5aUUJmWDFwTU1qbE5aV1JwWVUxMWRHVlFj
bVZ6YzJWa1NXMWhaMlZFWVhSaFgzQnVad0JmWDFwYVRESTEKYldWa2FXRlFUa2RRWVhWelpWQnla
WE56WldSSmJXRm5aWFpGTldsdFlXZGxBRjlmV2t3ek1FMWxaR2xoVUdGMWMyVlFjbVZ6YzJWawpT
VzFoWjJWRVlYUmhYM0J1WndCZlgxcE1NelJ0WldScFlWQk9SMVJ2WjJkc1pVTmhjSFJwYjI1elVI
SmxjM05sWkVsdFlXZGxkZ0JmClgxcGFUREl6YldWa2FXRlFUa2RHZFd4c2MyTnlaV1Z1U1cxaFoy
VjJSVFZwYldGblpRQmZYMXBNTWpoTlpXUnBZVVoxYkd4elkzSmwKWlc1SmJXRm5aVVJoZEdGZmNH
NW5BRjlmV2xwTU1qTnRaV1JwWVZCT1IwWjFiR3hXYjJ4MWJXVkpiV0ZuWlhaRk5XbHRZV2RsQUY5
ZgpXa3d5T0UxbFpHbGhSblZzYkZadmJIVnRaVWx0WVdkbFJHRjBZVjl3Ym1jQVgxOWFXa3d4TjIx
bFpHbGhVRTVIVUd4aGVVbHRZV2RsCmRrVTFhVzFoWjJVQVgxOWFUREl5VFdWa2FXRlFiR0Y1U1cx
aFoyVkVZWFJoWDNCdVp3QmZYMXBhVERFNWJXVmthV0ZRVGtkU1pYZHAKYm1SSmJXRm5aWFpGTlds
dFlXZGxBRjlmV2t3eU5FMWxaR2xoVW1WM2FXNWtTVzFoWjJWRVlYUmhYM0J1WndCZlgxcGFUREkw
YldWawphV0ZRVGtkR1lYTjBSbTl5ZDJGeVpFbHRZV2RsZGtVMWFXMWhaMlVBWDE5YVRESTVUV1Zr
YVdGR1lYTjBSbTl5ZDJGeVpFbHRZV2RsClJHRjBZVjl3Ym1jQVgxOWFXa3d4T0cxbFpHbGhVRTVI
VkdoMWJXSkpiV0ZuWlhaRk5XbHRZV2RsQUY5Zldrd3lNMDFsWkdsaFZHaDEKYldKSmJXRm5aVVJo
ZEdGZmNHNW5BRjlmV2xwTU1UZHRaV1JwWVZCT1IwMTFkR1ZKYldGblpYWkZOV2x0WVdkbEFGOWZX
a3d5TWsxbApaR2xoVFhWMFpVbHRZV2RsUkdGMFlWOXdibWNBWDE5YVdrd3hPRzFsWkdsaFVFNUhV
R0YxYzJWSmJXRm5aWFpGTldsdFlXZGxBRjlmCldrd3lNMDFsWkdsaFVHRjFjMlZKYldGblpVUmhk
R0ZmY0c1bkFGOWZXbHBNTWpkdFpXUnBZVkJPUjFSdloyZHNaVU5oY0hScGIyNXoKU1cxaFoyVjJS
VFZwYldGblpRQmZYMXBNTXpKTlpXUnBZVlJ2WjJkc1pVTmhjSFJwYjI1elNXMWhaMlZFWVhSaFgz
QnVad0JmWDFwYQpURE0wYldWa2FXRlFUa2RVYjJkbmJHVkRZWEIwYVc5dWMxQnlaWE56WldSSmJX
Rm5aWFpGTldsdFlXZGxBRjlmV2t3ek9VMWxaR2xoClZHOW5aMnhsUTJGd2RHbHZibk5RY21WemMy
VmtTVzFoWjJWRVlYUmhYM0J1WndCZlgxcGFURE14YldWa2FXRlFUa2RUYkdsa1pYSlUKY21GamEw
eGxablJEWVhCSmJXRm5aWFpGTldsdFlXZGxBRjlmV2t3ek5rMWxaR2xoVTJ4cFpHVnlWSEpoWTJ0
TVpXWjBRMkZ3U1cxaApaMlZFWVhSaFgzQnVad0JmWDFwYVRETXliV1ZrYVdGUVRrZFRiR2xrWlhK
VWNtRmphMUpwWjJoMFEyRndTVzFoWjJWMlJUVnBiV0ZuClpRQmZYMXBNTXpkTlpXUnBZVk5zYVdS
bGNsUnlZV05yVW1sbmFIUkRZWEJKYldGblpVUmhkR0ZmY0c1bkFGOWZXbHBNTXpodFpXUnAKWVZC
T1IxTnNhV1JsY2xSeVlXTnJUR1ZtZEVOaGNFeHZZV1JwYm1kSmJXRm5aWFpGTldsdFlXZGxBRjlm
V2t3ME0wMWxaR2xoVTJ4cApaR1Z5VkhKaFkydE1aV1owUTJGd1RHOWhaR2x1WjBsdFlXZGxSR0Yw
WVY5d2JtY0FYMTlhVERNNWJXVmthV0ZRVGtkVGJHbGtaWEpVCmNtRmphMUpwWjJoMFEyRndURzlo
WkdsdVowbHRZV2RsZGdCZlgxcGFURE13YldWa2FXRlFUa2RUYkdsa1pYSlVjbUZqYTAxcFpHUnMK
WlVsdFlXZGxka1UxYVcxaFoyVUFYMTlhVERNMVRXVmthV0ZUYkdsa1pYSlVjbUZqYTAxcFpHUnNa
VWx0WVdkbFJHRjBZVjl3Ym1jQQpYMTlhV2t3ek4yMWxaR2xoVUU1SFUyeHBaR1Z5VkhKaFkydE5h
V1JrYkdWTWIyRmthVzVuU1cxaFoyVjJSVFZwYldGblpRQmZYMXBNCk5ESk5aV1JwWVZOc2FXUmxj
bFJ5WVdOclRXbGtaR3hsVEc5aFpHbHVaMGx0WVdkbFJHRjBZVjl3Ym1jQVgxOWFXa3d6T1cxbFpH
bGgKVUU1SFUyeHBaR1Z5VkhKaFkydFNhV2RvZEVOaGNFeHZZV1JwYm1kSmJXRm5aWFpGTldsdFlX
ZGxBRjlmV2t3ME5FMWxaR2xoVTJ4cApaR1Z5VkhKaFkydFNhV2RvZEVOaGNFeHZZV1JwYm1kSmJX
Rm5aVVJoZEdGZmNHNW5BRjlmV2tkV1drNUxNVGxOWldScFlVeGxaMkZqCmVVTnZiblJ5YjJ4ek1U
UmpiMjUwY205c1JtOXlVR0Z5ZEVWcFJURXljMmhoY21Wa1FuVjBkRzl1QUY5ZldscE9TekU1VFdW
a2FXRk0KWldkaFkzbERiMjUwY205c2N6RTBZMjl1ZEhKdmJFWnZjbEJoY25SRmFVVXhNbk5vWVhK
bFpFSjFkSFJ2YmdCZlgxcEhWbHBPU3pFNQpUV1ZrYVdGTVpXZGhZM2xEYjI1MGNtOXNjelp6Ykds
a1pYSkZka1V4TW5Ob1lYSmxaRk5zYVdSbGNnQmZYMXBhVGtzeE9VMWxaR2xoClRHVm5ZV041UTI5
dWRISnZiSE0yYzJ4cFpHVnlSWFpGTVRKemFHRnlaV1JUYkdsa1pYSUFSVWhmWm5KaGJXVXdBRjlm
V2t3eU4yMWwKWkdsaFVFNUhWRzluWjJ4bFEyRndkR2x2Ym5OSmJXRm5aWFl1WldnQVgxOWFURE0w
YldWa2FXRlFUa2RVYjJkbmJHVkRZWEIwYVc5dQpjMUJ5WlhOelpXUkpiV0ZuWlhZdVpXZ0FYMTlh
VERNNWJXVmthV0ZRVGtkVGJHbGtaWEpVY21GamExSnBaMmgwUTJGd1RHOWhaR2x1ClowbHRZV2Rs
ZGk1bGFBQUFJekV2TWpBZ0lDQWdJQ0FnSUNBZ0lERXpOekUzTnpZd016TWdJRFV3TVNBZ0lESXdJ
Q0FnSURFd01EWTAKTkNBZ016TXhPRGdnSUNBZ0lHQUtUV1ZrYVdGVlNTNXZBQUFBQUFBQUFBQUFB
QURQK3UzK0J3QUFBUU1BQUFBQkFBQUFBd0FBQU9BSApBQUFBSUFBQUFBQUFBQmtBQUFCNEJ3QUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXVWa0FBQUFBQUFBQUNBQUFBQUFBCkFLQlpB
QUFBQUFBQUJ3QUFBQWNBQUFBWEFBQUFBQUFBQUY5ZmRHVjRkQUFBQUFBQUFBQUFBQUJmWDFSRldG
UUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUF2QmdBQUFBQUFBQUFJQUFBRUFBQUFvR0VBQUVvQUFB
QUFCQUNBQUFBQUFBQUFBQUFBQUFBQVgxOXNhWFJsY21GcwpPQUFBQUFBQUFGOWZWRVZZVkFBQUFB
QUFBQUFBQUFBd0JnQUFBQUFBQUJBQUFBQUFBQUFBTUE0QUFBTUFBQUFBQUFBQUFBQUFBQVFBCkFB
QUFBQUFBQUFBQUFBQUFBQUJmWDNSbGVIUmpiMkZzWDI1MEFBQUFYMTlVUlZoVUFBQUFBQUFBQUFB
QUFFQUdBQUFBQUFBQXhnQUEKQUFBQUFBQkFEZ0FBQkFBQUFQQmpBQUFJQUFBQUN3UUFnQUFBQUFB
QUFBQUFBQUFBQUY5ZlkyOXVjM1FBQUFBQUFBQUFBQUJmWDBSQgpWRUVBQUFBQUFBQUFBQUFBRUFj
QUFBQUFBQUNZQUFBQUFBQUFBQkFQQUFBRUFBQUFNR1FBQUE4QUFBQUFBQUFBQUFBQUFBQUFBQUFB
CkFBQUFYMTlpYzNNQUFBQUFBQUFBQUFBQUFGOWZSRUZVUVFBQUFBQUFBQUFBQUFDZ1dRQUFBQUFB
QUJrQUFBQUFBQUFBQUFBQUFBTUEKQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUJm
WDJOemRISnBibWNBQUFBQUFBQUFYMTlVUlZoVUFBQUFBQUFBQUFBQQpBS2dIQUFBQUFBQUFYQUFB
QUFBQUFBQ29Ed0FBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUY5ZlpHRjBZ
UUFBCkFBQUFBQUFBQUFCZlgwUkJWRUVBQUFBQUFBQUFBQUFBQkFnQUFBQUFBQUFBQUFBQUFBQUFB
QVFRQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFYMTlrWldKMVoxOXBi
bVp2QUFBQUFGOWZSRmRCVWtZQUFBQUFBQUFBQUFBRUNBQUFBQUFBQUdvWgpBQUFBQUFBQUJCQUFB
QUFBQUFDb1pBQUFZZ0FBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUJmWDJSbFluVm5YMkZpWW5KbGRn
QUFYMTlFClYwRlNSZ0FBQUFBQUFBQUFBRzRoQUFBQUFBQUFyZ01BQUFBQUFBQnVLUUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUEKQUFBQUFGOWZaR1ZpZFdkZllYSmhibWRsY3dCZlgw
UlhRVkpHQUFBQUFBQUFBQUFBSENVQUFBQUFBQUFBQUFBQUFBQUFBQnd0QUFBQQpBQUFBQUFBQUFB
QUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFYMTlrWldKMVoxOXRZV05wYm1adkFGOWZSRmRCVWtZ
QUFBQUFBQUFBCkFBQWNKUUFBQUFBQUFBQUFBQUFBQUFBQUhDMEFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBSUFBQUFBQUFBQUFBQUFBQUJmWDJSbFluVm4KWDJ4cGJtVUFBQUFBWDE5RVYwRlNSZ0FBQUFB
QUFBQUFBQndsQUFBQUFBQUFTQU1BQUFBQUFBQWNMUUFBQUFBQUFMaG5BQUFDQUFBQQpBQUFBQWdB
QUFBQUFBQUFBQUFBQUFGOWZaR1ZpZFdkZmJHOWpBQUFBQUFCZlgwUlhRVkpHQUFBQUFBQUFBQUFB
WkNnQUFBQUFBQUFGCkRRQUFBQUFBQUdRd0FBQUFBQUFBeUdjQUFOWUFBQUFBQUFBQ0FBQUFBQUFB
QUFBQUFBQUFYMTlrWldKMVoxOXdkV0owZVhCbGMxOWYKUkZkQlVrWUFBQUFBQUFBQUFBQnBOUUFB
QUFBQUFQb0FBQUFBQUFBQWFUMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQQpBQUFB
QUFCZlgyUmxZblZuWDNOMGNnQUFBQUFBWDE5RVYwRlNSZ0FBQUFBQUFBQUFBR00yQUFBQUFBQUFr
eEFBQUFBQUFBQmpQZ0FBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFGOWZa
R1ZpZFdkZmNtRnVaMlZ6QUFCZlgwUlhRVkpHQUFBQUFBQUEKQUFBQTlrWUFBQUFBQUFEQUFBQUFB
QUFBQVBaT0FBQUFBQUFBZUc0QUFCQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFYMTlrWldKMQpa
MTlwYm14cGJtVmtBRjlmUkZkQlVrWUFBQUFBQUFBQUFBQzJSd0FBQUFBQUFCMENBQUFBQUFBQXRr
OEFBQUFBQUFENGJnQUFJZ0FBCkFBQUFBQUlBQUFBQUFBQUFBQUFBQUFCZlgyRndjR3hsWDI1aGJX
VnpBQUFBWDE5RVYwRlNSZ0FBQUFBQUFBQUFBTk5KQUFBQUFBQUEKY0FZQUFBQUFBQURUVVFBQUFB
QUFBQWh3QUFCdUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFGOWZZWEJ3YkdWZmIySnFZd0FBQUFC
ZgpYMFJYUVZKR0FBQUFBQUFBQUFBQVExQUFBQUFBQUFBa0FBQUFBQUFBQUVOWUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQ0FBQUFBQUFBCkFBQUFBQUFBWDE5aGNIQnNaVjl1WVcxbGMzQmhZMTlmUkZk
QlVrWUFBQUFBQUFBQUFBQm5VQUFBQUFBQUFFUUFBQUFBQUFBQVoxZ0EKQUFBQUFBQjRjd0FBQWdB
QUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFCZlgyRndjR3hsWDNSNWNHVnpBQUFBWDE5RVYwRlNSZ0FB
QUFBQQpBQUFBQUt0UUFBQUFBQUFBdmdNQUFBQUFBQUNyV0FBQUFBQUFBSWh6QUFBK0FBQUFBQUFB
QWdBQUFBQUFBQUFBQUFBQUFGOWZZMjl0CmNHRmpkRjkxYm5kcGJtUmZYMHhFQUFBQUFBQUFBQUFB
QUFBQWNGUUFBQUFBQUFCQUFnQUFBQUFBQUhCY0FBQURBQUFBZUhVQUFCSUEKQUFBQUFBQUNBQUFB
QUFBQUFBQUFBQUFBWDE5bGFGOW1jbUZ0WlFBQUFBQUFBRjlmVkVWWVZBQUFBQUFBQUFBQUFBQ3dW
Z0FBQUFBQQpBUEFDQUFBQUFBQUFzRjRBQUFNQUFBQUFBQUFBQUFBQUFBc0FBR2dBQUFBQUFBQUFB
QUFBQUFBQ0FBQUFHQUFBQUFoMkFBQTlBQUFBCjJIa0FBTFFIQUFBTEFBQUFVQUFBQUFBQUFBQUlB
QUFBQ0FBQUFDWUFBQUF1QUFBQUR3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGVklpZVZCVmxOSWljdEJpZjVJaGRzUGhK
RUFBQUNEL2dKMQpFb0E5Ly8vLy93RjFJRWlMQlFBQUFBRHJaWVArQVhWNmdEMy8vLy8vQVhVeFNJ
c0ZBQUFBQU90T3Z3Z0FBQURvQUFBQUFFaUxEUUFBCkFBQklnOEVRU0lrSVNJa0ZBQUFBQU1ZRi8v
Ly8vd0hySnI4SUFBQUE2QUFBQUFCSWl3MEFBQUFBU0lQQkVFaUpDRWlKQlFBQUFBREcKQmYvLy8v
OEJTSXNJU0luSFJJbjIvMUVvOGc4UkEvSVBFVXNJVzBGZVhjTklqVDBBQUFBQVNJMDFBQUFBQUVp
TkRRQUFBQUM2R0FBQQpBT2dBQUFBQUR4OUVBQUJWU0lubFFWWlRTSVBzTVBJUEVVM284ZzhSUmVC
QmlmNUlqVjBRZy80Q2RSS0FQZi8vLy84QmRTUklpd1VBCkFBQUE2Mm1EL2dFUGhhUUFBQUNBUGYv
Ly8vOEJkVEZJaXdVQUFBQUE2MDYvQ0FBQUFPZ0FBQUFBU0lzTkFBQUFBRWlEd1JCSWlRaEkKaVFV
QUFBQUF4Z1gvLy8vL0Flc212d2dBQUFEb0FBQUFBRWlMRFFBQUFBQklnOEVRU0lrSVNJa0ZBQUFB
QU1ZRi8vLy8vd0ZJaXdoSQppMU1RU0l0ekdFaUpkQ1FZU0lsVUpCQklpeE5JaTNNSVNJbDBKQWhJ
aVJRa1NJbkhSSW4yOGc4UVJlRHlEeEJONlA5UklBKzJ3RWlECnhEQmJRVjVkdzBpTlBRQUFBQUJJ
alRVQUFBQUFTSTBOQUFBQUFMb1lBQUFBNkFBQUFBQ1FWVWlKNVVGWFFWWkJWVUZVVTBpRDdDaEIK
aWM1SmlkZEJpZnhNalcwUWcvNENkUktBUGYvLy8vOEJkU1JJaXdVQUFBQUE2Mm1EL2dFUGhhUUFB
QUNBUGYvLy8vOEJkVEZJaXdVQQpBQUFBNjA2L0NBQUFBT2dBQUFBQVNJc05BQUFBQUVpRHdSQklp
UWhJaVFVQUFBQUF4Z1gvLy8vL0Flc212d2dBQUFEb0FBQUFBRWlMCkRRQUFBQUJJZzhFUVNJa0lT
SWtGQUFBQUFNWUYvLy8vL3dGSWl4aEppMDBRU1l0VkdFaUpWQ1FZU0lsTUpCQkppMDBBU1l0VkNF
aUoKVkNRSVNJa01KRWlKeDBTSjVreUora1NKOGY5VEVFaUR4Q2hiUVZ4QlhVRmVRVjlkdzBpTlBR
QUFBQUJJalRVQUFBQUFTSTBOQUFBQQpBTG9ZQUFBQTZBQUFBQUJtWm1abVptWXVEeCtFQUFBQUFB
QlZTSW5sUVZkQlZsTklnK3dvUVluVzh3OFJWZVR6RHhGRjRFbUo5MGlOClhSQ0Qvd0oxRW9BOS8v
Ly8vd0YxSkVpTEJRQUFBQURyYVlQL0FRK0ZyZ0FBQUlBOS8vLy8vd0YxTVVpTEJRQUFBQURyVHI4
SUFBQUEKNkFBQUFBQklpdzBBQUFBQVNJUEJFRWlKQ0VpSkJRQUFBQURHQmYvLy8vOEI2eWEvQ0FB
QUFPZ0FBQUFBU0lzTkFBQUFBRWlEd1JCSQppUWhJaVFVQUFBQUF4Z1gvLy8vL0FVaUxDRWlMRTBp
TGN3aElpM3NRU0l0YkdFaUpYQ1FZU0lsOEpCQklpWFFrQ0VpSkZDVHpEeEJGCjRQTVBXc0R6RHhC
TjVQTVBXc2xJaWNkTWlmNUVpZkwvVVJoSWc4UW9XMEZlUVY5ZHcwaU5QUUFBQUFCSWpUVUFBQUFB
U0kwTkFBQUEKQUxvWUFBQUE2QUFBQUFCbWtGVklpZVZUU0lQc0tFaUo4MGlKMytnQUFBQUFTSXRG
S0VpSlJDUVlTSXRGSUVpSlJDUVFTSXRGRUVpTApUUmhJaVV3a0NFaUpCQ1RvQUFBQUFQSVBFVVh3
U0l0RktFaUpSQ1FZU0l0RklFaUpSQ1FRU0l0RkVFaUxUUmhJaVV3a0NFaUpCQ1RvCkFBQUFBQThv
eVBJUFdFM3dTSW5mRDFmQTZBQUFBQUR5RHhBRnZBRUFBUElQRUEyOEFRQUFTSW5mNkFBQUFBQkln
OFFvVzEzRER4OUUKQUFCVlNJbmxTSW4zWGVrQUFBQUFEeDhBVlVpSjVVaUxSeEJkdzJZUEgwUUFB
RlZJaWVWSWlmaElpM2dRU0lsd0VFaUYvM1FHWGVrQQpBQUFBWGNNUEgwQUFWVWlKNVVGV1UwaUQ3
Q0NKeTBtSjFraUxCLzlRTUVpRndIUTFTSTFWRUlsWURFaUxDRWlMY2hoSWlYUWtHRWlMCmNoQklp
WFFrRUVpTE1raUxVZ2hJaVZRa0NFaUpOQ1JJaWNkTWlmYi9VUkJJZzhRZ1cwRmVYY01QSDRBQUFB
QUFWVWlKNVVpRDdERHkKRHhGTitQSVBFVVh3U0lzSC8xQXdTSVhBZER0SWpWVVFTSXNJU0l0eUdF
aUpkQ1FZU0l0eUVFaUpkQ1FRU0lzeVNJdFNDRWlKVkNRSQpTSWswSkVpSngvSVBFRVh3OGc4UVRm
ai9VUmpyQWpEQVNJUEVNRjNEVlVpSjVVaUxCLzlRTUVpRndIUUxTSXNJU0luSC8xRWdYY05JCml3
VUFBQUFBOGc4UUFQSVBFRWdJWGNNUEgwQUFWVWlKNVVGV1UwaUQ3RENKMC9JUEVVM284ZzhSUmVC
SmlmWklpd2YvVURpSldBenkKRHhCRjRQSVBFVUFZOGc4UVJlanlEeEZBSUVpTENFaUxWU2hJaVZR
a0dFaUxWU0JJaVZRa0VFaUxWUkJJaTNVWVNJbDBKQWhJaVJRawpTSW5IVEluMi8xRVFTSVBFTUZ0
QlhsM0RBQUFBQUFBQUFQQS9BQUFBQUFBQThMOVZTSW5sWGNObUxnOGZoQUFBQUFBQVZVaUo1VjNw
CkFBQUFBR1lQSDBRQUFGVklpZVZJalFVUUFBQUFTSWtIU0l0L0VFaUYvM1FHWGVrQUFBQUFYY09R
VlVpSjVWTlFTSW43U0kwRkVBQUEKQUVpSkEwaUxleEJJaGY5MEJlZ0FBQUFBU0luZlNJUEVDRnRk
NlFBQUFBQ1FWVWlKNVVpRDdDQklpMFVvU0lsRUpCaElpMFVnU0lsRQpKQkJJaTBVUVNJdE5HRWlK
VENRSVNJa0VKT2dBQUFBQVNJUEVJRjNEWmk0UEg0UUFBQUFBQUZWSWllVklpd1VBQUFBQThnOFFB
UElQCkVFZ0lYY01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QmpiMjUwCmNtOXNjMFp2Y2xSb1pXMWxBQzlWYzJWeWN5OWhiR1Y0WTJoeWFYTjBaVzV6Wlc0dmQy
VmlhMmwwTDBsdWRHVnlibUZzTDFkbFlrdHAKZEZONWMzUmxiVWx1ZEdWeVptRmpaUzlOWldScFlW
VkpMbU53Y0FBd0FHWVpBQUFDQUFBQUFBQUlBUUFBQUFBRUFEOEFBQUFBQUFBQQpBQUFBQUFBQUFB
Q0lBQUFBQVFMb0FBQUFCUVFESndBQUFBUXVBQUFBN0FBQUFBVXpBQUFBQmU0SkFBQUdSUUVBQUFF
RlJnQUFBQWRNCkFBQUFUd0VBQUFJSUFtVUJBQUFFQ0FkY0FBQUFiQUVBQUFQNUJZSUFBQUFJZ2dB
QUFBbHpBQUFBQ29JQUFBQUxkZ0VBQUJBRER3eGoKQVFBQVl3QUFBQU1RQWlNQUFReDBBUUFBWXdB
QUFBTVJBaU1JQVExMkFRQUFBdzhCQVFFQkRtNEFBQUFCQUExMkFRQUFBdzhCQVFFQgpEbTRBQUFB
QkQzZ0FBQUFBRFhZQkFBQUREd0VCQVFFT2JnQUFBQUVQZlFBQUFBQU5mZ0VBQUFNUEFRRUJBUTV1
QUFBQUFRQUFCNElBCkFBQjJBUUFBQXhNRkh3RUFBQWdmQVFBQUNRc0JBQUFLSHdFQUFBa2ZBUUFB
QzVrQkFBQVFBeGNNakFFQUFHTUFBQUFER0FJakFBRU0Ka2dFQUFHTUFBQUFER1FJakNBRU5tUUVB
QUFNWEFRRUJBUTRHQVFBQUFRQU5tUUVBQUFNWEFRRUJBUTRHQVFBQUFROFFBUUFBQUEyWgpBUUFB
QXhjQkFRRUJEZ1lCQUFBQkR4VUJBQUFBRGFBQkFBQURGd0VCQVFFT0JnRUFBQUVBRUtnQkFBQzVB
UUFBQXhjYUFRQUFBUUVCCkFRNEdBUUFBQVE4VkFRQUFBQUFISHdFQUFKa0JBQUFER3dYV0FRQUFD
TllCQUFBSnh3RUFBQXJXQVFBQUM4TUJBQUFnQXg4TVhBRUEKQVBzQUFBQURJQUlqQUFFTWh3RUFB
TGNCQUFBRElRSWpFQUVOd3dFQUFBTWZBUUVCQVE3Q0FRQUFBUUFOd3dFQUFBTWZBUUVCQVE3QwpB
UUFBQVEvTUFRQUFBQTNEQVFBQUF4OEJBUUVCRHNJQkFBQUJEOUVCQUFBQURjb0JBQUFESHdFQkFR
RU93Z0VBQUFFQUFBZldBUUFBCnd3RUFBQUVqQXRJQkFBQUhCQUozQWdBQUFnRUk3Z2tBQUFWb0Fn
QUFFUVFDTmhJR0F3QUFBUklrQXdBQUFoSkJBd0FBQ0JKaUF3QUEKRUFBSGNnSUFBSDhEQUFBQ093
YXBBd0FBQVJPMkF3QUFCU0lMdkFNQUFBRUZ4UlNhQWdBQXVnTUFBQWVhQWdBQXNRTUFBQVRHQUFB
RgovQUlBQUFYMEFnQUFFN1lEQUFBRUxSWDVBd0FBQkFReUV2RURBQUFBQUJVTUJBQUFCQVF6RWdR
RUFBQUFBQmFmQndBQUNBUkZCN2dDCkFBRFZBd0FBQkVjSHhRSUFBTjhEQUFBRVNBeWpBd0FBQndN
QUFBU0xBaU1BQXhmbkF3QUFCRW9CQVFFT3lnSUFBQUVBRitjREFBQUUKU3dFQkFRN0tBZ0FBQVE4
SEF3QUFBQmZuQXdBQUJFMEJBUUVPeWdJQUFBRVAxZ0lBQUE4SEF3QUFBQmZuQXdBQUJGVUJBUUVP
eWdJQQpBQUVQNVFJQUFBOEhBd0FBQUJmbkF3QUFCRnNCQVFFT3lnSUFBQUVQc0FZQUFBQVg1d01B
QUFSZUFRRUJEc29DQUFBQkQ3VUdBQUFBCkYrY0RBQUFFWWdFQkFRN0tBZ0FBQVEvQkJnQUFBQmhI
QkFBQWdBUUFBQVJqWVFJQUFBRUJBUTdSQmdBQUFRQVhtQVFBQUFSbEFRRUIKRHNvQ0FBQUJBQm1q
QkFBQXlBUUFBQVJwQVFFQkRzb0NBQUFCQUJqT0JBQUE5UVFBQUFScUJ3TUFBQUVCQVE3S0FnQUFB
UUFZL1FRQQpBQ0VGQUFBRWJBY0RBQUFCQVFFTzBRWUFBQUVBR0NVRkFBQkhCUUFBQkcwSEF3QUFB
UUVCRHRFR0FBQUJBQnBTQlFBQWR3VUFBQVJ2CkJ3TUFBQUVCQVFFTzBRWUFBQUVBR0pFRkFBQ3pC
UUFBQkhKaEFnQUFBUUVCRHRFR0FBQUJBQmk5QlFBQTVnVUFBQVIybGdRQUFBRUIKQVE3UkJnQUFB
UUFIMWdZQUFDa0dBQUFFZFJnOUJnQUF1UUVBQUFSNDN3WUFBQUVCQVE3S0FnQUFBUSt3QmdBQUFC
aGtCZ0FBbUFZQQpBQVI1M3dZQUFBRUJBUlRrQmdBQVlnWUFBQTdLQWdBQUFRK3dCZ0FBQUJpdEJn
QUF1UUVBQUFSNjN3WUFBQUVCQVE3S0FnQUFBUThICkF3QUFBQmpRQmdBQXVRRUFBQVIrM3dZQUFB
RUJBUTdLQWdBQUFRKzFCZ0FBQUJqMEJnQUFtQVlBQUFSLzN3WUFBQUVCQVJUa0JnQUEKWWdZQUFB
N0tBZ0FBQVErMUJnQUFBQmtuQndBQVRnY0FBQVNHQVFFQkRzb0NBQUFCRDk4R0FBQUFHMU1IQUFD
SkJ3QUFCSWtIQXdBQQpBUUVERk9RR0FBQzZBd0FBQUJ6UUJnQUFCQVVBQUFFZEtSQUFBQVIrWkJr
QUFBRWVmaEFBQUFSK3RRWUFBQitBRUFBQUJOVUhBd0FBCkFDRE9CQUFBL3dNQUFCMHBFQUFBQkdw
a0dRQUFBUitBRUFBQUJKOEhBd0FBQUNHNURRQUE2ZzBBQUFRUUFmUUNBQUFCRk9RR0FBQzYKQXdB
QUluNFFBQUFFRUFIa0JnQUFBQ0Q5RFFBQVNBTUFBQjBwRUFBQUJFMWtHUUFBQVI2U0VBQUFCRTNX
QWdBQUhvQVFBQUFFVFFjRApBQUFBSURBT0FBQklBd0FBSFNrUUFBQUVUV1FaQUFBQkhwSVFBQUFF
VGRZQ0FBQWVnQkFBQUFSTkJ3TUFBQUFqL1FRQUFCZ0VBQUJhCkJnQUFBUjBwRUFBQUJHeGFHUUFB
QVFBall3NEFBTmtEQUFCMUJnQUFBUjBwRUFBQUJHVmtHUUFBQVFBamhBNEFBTmtEQUFDUUJnQUEK
QVIwcEVBQUFCR1ZrR1FBQUFTUWZnQkFBQUFSbEJ3TUFBQUFBQUFqMEFnQUFDYXNHQUFBSzlBSUFB
Qk8yQXdBQUJoOFZMUVFBQUFRRwpKUklYQkFBQUFBQUFCYXNHQUFBbEJ3TUFBUFFDQUFBSjlBSUFB
QVdhQWdBQUJRTUhBQUFJQXdjQUFBWHVCZ0FBQitRR0FBQmRDZ0FBCkFnZ21Bd2NBQUpnS0FBQVlB
a2NuNEFJQUFEd0FBQUFDSXdBQkFRejFBZ0FBSndBQUFBSmdBaU1JQWd6K0FnQUFqd0lBQUFKaEFp
TU0KQWd5YkF3QUE5QUlBQUFKaUFpTVFBaWkwQndBQUFra0JBaEFBQVFFQkF3Y0FBQTdwQmdBQUFR
QXB4QWNBQVBFSEFBQUNTd0lDRUFJQgpBUUVEQndBQUR1a0dBQUFCRDFFQUFBQVBUd0lBQUFBcTl3
Y0FBQ1FJQUFBQ1RHRUNBQUFCQWhBREFRRUJBd2NBQUE3ekJnQUFBUTlQCkFnQUFEL3NBQUFBQUtp
d0lBQUNmQWdBQUFrMjNBUUFBQVFJUUJBRUJBUU1IQUFBTzh3WUFBQUVBR1ZBSUFBQ0xDQUFBQWs4
QkFRRU8KNlFZQUFBRVBqd0lBQUFBWWxBZ0FBTEVJQUFBQ1VJOENBQUFCQVFFTzh3WUFBQUVBR2Jj
SUFBRFhDQUFBQWxJQkFRRU82UVlBQUFFUApKd0FBQUFBWTRRZ0FBUDhJQUFBQ1V5Y0FBQUFCQVFF
Tzh3WUFBQUVBR0FZSkFBQW5DUUFBQWxWaEFnQUFBUUVCRHZNR0FBQUJBQmd4CkNRQUFVZ2tBQUFK
V1lRSUFBQUVCQVE3ekJnQUFBUUFZWEFrQUFIMEpBQUFDVjJFQ0FBQUJBUUVPOHdZQUFBRUFLWWNK
QUFESUNRQUEKQWxvQkFoQUZBUUVDQXdjQUFBN3pCZ0FBQVE5UkFBQUFEMDhDQUFBQUtlQUpBQUFl
Q2dBQUFsc0JBaEFHQVFFQ0F3Y0FBQTd6QmdBQQpBUTlSQUFBQUFCZzZDZ0FBVndvQUFBSmQrQVlB
QUFFQkFnN3pCZ0FBQVFBWmFBb0FBSThLQUFBQ1hnRUJBZzdwQmdBQUFRLzRCZ0FBCkFBQUZBd2NB
QUFVWUNRQUFDQmdKQUFBRkRna0FBQ1lEQndBQUxBd0FBQ2dDWlNzREJ3QUFBaU1BQVF6TENnQUFY
QUFBQUFKeEFpTVkKQXd6WUNnQUFYQUFBQUFKeUFpTWdBeG5qQ2dBQUR3c0FBQUpuQVFFQkRna0pB
QUFCRDF3QUFBQUFHQjBMQUFCSEN3QUFBbWhjQUFBQQpBUUVCRGhNSkFBQUJBQmxTQ3dBQWZBc0FB
QUpxQVFFQkRna0pBQUFCRDF3QUFBQUFHSWdMQUFDdkN3QUFBbXRjQUFBQUFRRUJEaE1KCkFBQUJB
Qmk0Q3dBQTVnc0FBQUp0WEFBQUFBRUJBUTRUQ1FBQUFRQVk5UXNBQUNBTUFBQUNibHdBQUFBQkFR
RU9Fd2tBQUFFUFhBQUEKQUFBQUJSZ0pBQUFtN2drQUFFSU1BQUFJQW5VbjFBQUFBRHdBQUFBQ0l3
QUJBU2o4QUFBQUFuY0JBaEFBQVFFQjdna0FBQTVCQUFBQQpBUUFwQ3dFQUFEd0JBQUFDZVFFQ0VB
SUJBUUh1Q1FBQURrRUFBQUFCRHljQUFBQVBVUUFBQUE5UEFnQUFEMW9DQUFBQUtkOEJBQUFoCkFn
QUFBbm9CQWhBREFRRUI3Z2tBQUE1QkFBQUFBUTlSQUFBQUQwOENBQUFQWEFBQUFBOWNBQUFBRDFv
Q0FBQUFLamtDQUFCckFnQUEKQW54aEFnQUFBUUlRQkFFQkFlNEpBQUFPYlFJQUFBRVBKd0FBQUE5
UEFnQUFEL3NBQUFBQUtud0NBQUNmQWdBQUFuMjNBUUFBQVFJUQpCUUVCQWU0SkFBQU9iUUlBQUFF
UEp3QUFBQUFxcXdJQUFORUNBQUFDZndRSkFBQUNBaEFHQVFFQjdna0FBQTV0QWdBQUFROG5BQUFB
CkFDcW5DZ0FBeEFvQUFBS0E2UWtBQUFJQ0VBY0JBUUh1Q1FBQURtMENBQUFCQUExQ0RBQUFBblVC
QVFFQkRrRUFBQUFCQUFBSVJ3c0EKQUFVNEN3QUFCVWNMQUFBbTdna0FBSjhNQUFBSUJ5SXI3Z2tB
QUFJakFBRXFVQXdBQU5FQ0FBQUhKQVFKQUFBQkFoQUdBUUVCUndzQQpBQTQ5Q3dBQUFROG5BQUFB
QUNwOERBQUF4QW9BQUFjbDZRa0FBQUVDRUFjQkFRRkhDd0FBRGowTEFBQUJBQTJmREFBQUJ5SUJB
UUVCCkRrSUxBQUFCQUFBRlJ3c0FBQ3l6REFBQXlnd0FBQUVNQVF3QUFBRXR4UUFBQUxZTEFBQUJE
d2tEb0ZrQUFBQUFBQUF0Mnd3QUFJUU0KQUFBQkZBa0RzRmtBQUFBQUFBQWVMaEFBQUFFTUp3QUFB
QUFGN2drQUFBZ1ZEQUFBQlFZTUFBQUZGUXdBQUNidUNRQUFQdzBBQUFnSQpyeXZ1Q1FBQUFpTUFB
U3JzREFBQTBRSUFBQWl4QkFrQUFBRUNFQVlCQVFFVkRBQUFEZ3NNQUFBQkR5Y0FBQUFBS2hvTkFB
REVDZ0FBCkNMTHBDUUFBQVFJUUJ3RUJBUlVNQUFBT0N3d0FBQUVBRFQ4TkFBQUlyd0VCQVFFT0VB
d0FBQUVBQUFVVkRBQUFMbFVOQUFBQkhRRUEKQUFBQUFBQUFBTXNBQUFBQUFBQUFBVll2L3dnQUFB
RWRKd0FBQUFBQUFBQXZMaEFBQUFFZEp3QUFBRFlBQUFBdk9SQUFBQUVkTWhrQQpBR3dBQUFBdm53
SUFBQUVkTnhrQUFJOEFBQUF3dXdzQUFBQUFBQUFCSUM4dUVBQUFBUXduQUFBQXhRQUFBREVCR1FB
QVNRQUFBQUFBCkFBQmNBQUFBQUFBQUFBRVVNb2NCQUFBSkN3RkRHUUFBQVFnektSQUFBQWl2aEF3
QUFBRUxBUUFBTko4WUFBQk9BQUFBQUFBQUFGd0EKQUFBQUFBQUFDSzlKRFFBQU5hMFlBQUFCNkFB
QUFBQUFNUUVaQUFCeEFBQUFBQUFBQUlRQUFBQUFBQUFBQVE4eWh3RUFBQWtMQVVNWgpBQUFCQ0RN
cEVBQUFCeUsyQ3dBQUFWRUJBQUEwNWhnQUFIWUFBQUFBQUFBQWhBQUFBQUFBQUFBSElxVU5BQUEx
OUJnQUFBRXVBUUFBCkFBQUFBRFpxRFFBQUFTUHZEZ0FBQWRBQUFBQUFBQUFBendFQUFBQUFBQUFC
VmkvL0NBQUFBU01uQUFBQWRBRUFBQzh1RUFBQUFTTW4KQUFBQXFnRUFBRGM1RUFBQUFTTlBBZ0FB
QXBFUUhsa1FBQUFCSS9zQUFBQXd1d3NBQURBQUFBQUJKUzh1RUFBQUFRd25BQUFBNEFFQQpBREVC
R1FBQUl3RUFBQUFBQUFBMkFRQUFBQUFBQUFFVU1vY0JBQUFKQ3dGREdRQUFBUWd6S1JBQUFBaXZo
QXdBQUFFbUFnQUFOSjhZCkFBQW9BUUFBQUFBQUFEWUJBQUFBQUFBQUNLOXlEZ0FBTXlrUUFBQUly
NFFNQUFBQkF3SUFBQUFBTVFFWkFBQkxBUUFBQUFBQUFGNEIKQUFBQUFBQUFBUTh5aHdFQUFBa0xB
VU1aQUFBQkNETXBFQUFBQnlLMkN3QUFBV3dDQUFBMDVoZ0FBRkFCQUFBQUFBQUFYZ0VBQUFBQQpB
QUFISXRRT0FBQXpLUkFBQUFjaXRnc0FBQUZKQWdBQUFBQUFBQUovRFFBQUJnRUg2QTRBQUlzTkFB
QUJFUzZRRFFBQUFTZ0IwQUVBCkFBQUFBQURSQWdBQUFBQUFBQUZXTC84SUFBQUJLQ2NBQUFDUEFn
QUFMeTRRQUFBQktDY0FBQURGQWdBQUwxOFFBQUFCS0ZFQUFBRDcKQWdBQU4yY1FBQUFCS0U4Q0FB
QUNrUkF2c1FnQUFBRW9XZ0lBQURFREFBQXd1d3NBQUdBQUFBQUJLaTh1RUFBQUFRd25BQUFBWndN
QQpBREVCR1FBQUpRSUFBQUFBQUFBNEFnQUFBQUFBQUFFVU1vY0JBQUFKQ3dGREdRQUFBUWd6S1JB
QUFBaXZoQXdBQUFHdEF3QUFOSjhZCkFBQXFBZ0FBQUFBQUFEZ0NBQUFBQUFBQUNLL0lEd0FBTXlr
UUFBQUlyNFFNQUFBQmlnTUFBQUFBTVFFWkFBQk5BZ0FBQUFBQUFHQUMKQUFBQUFBQUFBUTh5aHdF
QUFBa0xBVU1aQUFBQkNETXBFQUFBQnlLMkN3QUFBZk1EQUFBMDVoZ0FBRklDQUFBQUFBQUFZQUlB
QUFBQQpBQUFISWlvUUFBQXpLUkFBQUFjaXRnc0FBQUhRQXdBQUFBQUFBQzZpRFFBQUFTMEI0QUlB
QUFBQUFBRHVBd0FBQUFBQUFBRldMeTRRCkFBQUJMU2NBQUFBV0JBQUFMMThRQUFBQkxWRUFBQUJN
QkFBQU4yY1FBQUFCTFU4Q0FBQUNrUkF2UndzQUFBRXRUaGtBQUlJRUFBQXYKY2hBQUFBRXRUaGtB
QUxrRUFBQXZyd3NBQUFFdFRoa0FBTzhFQUFBdnNRZ0FBQUV0V2dJQUFDWUZBQUF3dXdzQUFKQUFB
QUFCTHk4dQpFQUFBQVF3bkFBQUFYQVVBQURFQkdRQUFPQU1BQUFBQUFBQkxBd0FBQUFBQUFBRVVN
b2NCQUFBSkN3RkRHUUFBQVFnektSQUFBQWl2CmhBd0FBQUdpQlFBQU5KOFlBQUE5QXdBQUFBQUFB
RXNEQUFBQUFBQUFDSzhxRVFBQU15a1FBQUFJcjRRTUFBQUJmd1VBQUFBQU1RRVoKQUFCZ0F3QUFB
QUFBQUhNREFBQUFBQUFBQVE4eWh3RUFBQWtMQVVNWkFBQUJDRE1wRUFBQUJ5SzJDd0FBQWVnRkFB
QTA1aGdBQUdVRApBQUFBQUFBQWN3TUFBQUFBQUFBSElvd1JBQUF6S1JBQUFBY2l0Z3NBQUFIRkJR
QUFBQUFBQURpSENRQUFod2dBQVBBREFBQUFBQUFBCml3UUFBQUFBQUFBQlZyOFJBQUF6S1JBQUFB
RXlWUmtBQUFFTEJnQUFMMThRQUFBQk1sRUFBQUF1QmdBQU4yY1FBQUFCTWs4Q0FBQUMKa1JBQU9P
QUpBQUN1Q0FBQWtBUUFBQUFBQUFDZEJBQUFBQUFBQUFGV0RCSUFBRE1wRUFBQUFUbFZHUUFBQVdR
R0FBQXZYeEFBQUFFNQpVUUFBQUljR0FBQUFPRG9LQUFEUUNBQUFvQVFBQUFBQUFBQ3FCQUFBQUFB
QUFBRldTeElBQURNcEVBQUFBVDVWR1FBQUFiMEdBQUE1ClRBWUFBS1FFQUFBQUFBQUFxQVFBQUFB
QUFBQUJRQUE0YUFvQUFPa0lBQUN3QkFBQUFBQUFBTXdFQUFBQUFBQUFBVmFTRWdBQU15a1EKQUFB
QlF3UUpBQUFCNEFZQUFDOVhDZ0FBQVVQNEJnQUFGZ2NBQURGL0JRQUF0d1FBQUFBQUFBREtCQUFB
QUFBQUFBRkZPbjRRQUFBRQpFQUhrQmdBQU9RY0FBRHVBRUFBQUJOVUhBd0FBWEFjQUFBQUFPQXNC
QUFBaENnQUEwQVFBQUFBQUFBQXBCUUFBQUFBQUFBRldDQk1BCkFETXBFQUFBQVVnQkRBQUFBWDhI
QUFBdi93Z0FBQUZJSndBQUFLSUhBQUF2WHhBQUFBRklVUUFBQU1VSEFBQTNaeEFBQUFGSVR3SUEK
QUFLUkVDK3hDQUFBQVVoYUFnQUErd2NBQUR1RUVBQUFBVW9FQ1FBQU1RZ0FBRFJqR0FBQTd3UUFB
QUFBQUFEeUJBQUFBQUFBQUFGUApmUk1BQURWeEdBQUFBVlFJQUFBOGZSZ0FBSGNJQUFBQUFEZzVB
Z0FBaUFvQUFEQUZBQUFBQUFBQWtBVUFBQUFBQUFBQlZyRVRBQUF6CktSQUFBQUZUWHhrQUFBR2FD
QUFBTC84SUFBQUJVeWNBQUFDOUNBQUFOemtRQUFBQlUwOENBQUFDa1JBN2hCQUFBQUZWQkFrQUFP
QUkKQUFBZVdSQUFBQUZUK3dBQUFBQTRmQUlBQUxnS0FBQ1FCUUFBQUFBQUFMd0ZBQUFBQUFBQUFW
WVlGQUFBTXlrUUFBQUJYVjhaQUFBQgpBd2tBQUMvL0NBQUFBVjBuQUFBQUpna0FBRHVFRUFBQUFW
OEVDUUFBU1FrQUFBQTQzd0VBQUZJS0FBREFCUUFBQUFBQUFDOEdBQUFBCkFBQUFBVlptRkFBQU15
a1FBQUFCWndFTUFBQUJiQWtBQUM5ZkVBQUFBV2RSQUFBQWp3a0FBRGRuRUFBQUFXZFBBZ0FBQXBF
UUwwY0wKQUFBQloxd0FBQURZQ1FBQUw2OExBQUFCWjF3QUFBQVBDZ0FBTDdFSUFBQUJaMW9DQUFC
R0NnQUFPNFFRQUFBQmFla0pBQURDQ2dBQQpOR01ZQUFEZ0JRQUFBQUFBQU9NRkFBQUFBQUFBQVd2
NUZBQUFMN0VJQUFBQ1Q0OENBQUI4Q2dBQU15a1FBQUFDVHdRSkFBQUJud29BCkFBQTBQUmdBQU9N
RkFBQUFBQUFBN1FVQUFBQUFBQUFCYkNVVkFBQTFTeGdBQUFIbENnQUFQVmNZQUFBQ2tXQUFOQmNZ
QUFEdEJRQUEKQUFBQUFQY0ZBQUFBQUFBQUFXMVRGUUFBTlNVWUFBQUJDQXNBQUQweEdBQUFBcEZv
QUFBNExBZ0FBTFVIQUFEd0JnQUFBQUFBQUFZSApBQUFBQUFBQUFWYUdGUUFBTXlrUUFBQUNUVlVa
QUFBQjRnd0FBQUE0OXdjQUFJb0hBQUN3QmdBQUFBQUFBT1lHQUFBQUFBQUFBVmEyCkZRQUFNeWtR
QUFBQ1RGVVpBQUFCdnd3QUFEYzVFQUFBQWt4UEFnQUFBcEVRSGxrUUFBQUNUUHNBQUFBQU9LVU9B
QUJLQndBQWdBWUEKQUFBQUFBQ3ZCZ0FBQUFBQUFBRlcveFVBQURNcEVBQUFBa2tFQ1FBQUFmMExB
QUF4emhZQUFJa0dBQUFBQUFBQXJ3WUFBQUFBQUFBQwpTVE1wRUFBQUFra0VDUUFBQVZZTUFBQTZr
QkFBQUFrTkFTQVpBQUNjREFBQU5GNFhBQUNKQmdBQUFBQUFBS0VHQUFBQUFBQUFBa2xoCkZnQUFN
eWtRQUFBQ1NRUUpBQUFCTXd3QUFERm5CZ0FBa3dZQUFBQUFBQUNoQmdBQUFBQUFBQUpKTVlJR0FB
Q1RCZ0FBQUFBQUFLRUcKQUFBQUFBQUFCR1U3Z0JBQUFBUmxCd01BQUhrTUFBQUFBQUFBQUQ2OURn
QUF4QTRBQUFrTkFRRUJJcEFRQUFBSkRRRWdHUUFBQUQvVQpEZ0FBU2djQUFHQUdBQUFBQUFBQWZ3
WUFBQUFBQUFBQlZ1NFdBQUFCTXlrUUFBQUNTUVFKQUFBQmxBc0FBRFJlRndBQVpBWUFBQUFBCkFB
QjlCZ0FBQUFBQUFBSkpHUmNBQURWc0Z3QUFBYmNMQUFBeFp3WUFBRzRHQUFBQUFBQUFmUVlBQUFB
QUFBQUNTVEdDQmdBQWJnWUEKQUFBQUFBQjlCZ0FBQUFBQUFBUmxRSjBHQUFEYUN3QUFBQUFBQUNQ
c0RnQUFTZ2NBQUd3WEFBQUJIU2tRQUFBQ1NRUUpBQUFCQURnRQpEd0FBQ0FvQUFGQUdBQUFBQUFB
QVdnWUFBQUFBQUFBQlZwZ1hBQUF6S1JBQUFBSjNBUXdBQUFGT0N3QUFNYk1XQUFCVUJnQUFBQUFB
CkFGVUdBQUFBQUFBQUFuYzZrQkFBQUFrTkFTQVpBQUJ4Q3dBQUFBQTRHdzhBQUFnS0FBQkFCZ0FB
QUFBQUFFWUdBQUFBQUFBQUFWYncKRndBQU15a1FBQUFDZHdFTUFBQUJLd3NBQUFBZ01nOEFBQWdL
QUFBZEtSQUFBQUozQVF3QUFBRUFJMUlMQUFCK0NRQUFKUmdBQUFFZApLUkFBQUFKcTZRa0FBQUVl
cndzQUFBSnFYQUFBQUFBajR3b0FBRXNKQUFCTEdBQUFBUjBwRUFBQUFtZnBDUUFBQVI2SkVBQUFB
bWRjCkFBQUFBQ05RQ0FBQTFnY0FBSEVZQUFBQkhTa1FBQUFDVHdRSkFBQUJIckVJQUFBQ1Q0OENB
QUFBSUVrUEFBQnhEQUFBSFNrUUFBQUkKcjRRTUFBQUJBQ05vRHdBQWNRd0FBSzBZQUFBQkhTa1FB
QUFJcjRRTUFBQUJBQ0NIRHdBQUpRc0FBQjBwRUFBQUFuVUJEQUFBQVFBZwpuZzhBQUtNTEFBQWRL
UkFBQUFjaXRnc0FBQUVBSTdzUEFBQ2pDd0FBOUJnQUFBRWRLUkFBQUFjaXRnc0FBQUVBUWRnUEFB
RGVEd0FBCkNRc0JJQmtBQUFFQklvY0JBQUFKQ3dGREdRQUFBRUlSQkFJeEV1c1BBQUFCRWdrUUFB
QUNBQVZQQWdBQUJiY0JBQUFDUUJBQUFBY0kKQnp3WkFBQlNFQUFBQ1NvQ2JCQUFBQVFFQmU0R0FB
QUZxd1lBQUFWb0FnQUFCZlFDQUFBQUFSRUJKUTRUQlFNT0VRRVFCaHNPNFg4TQpBQUFDSkFBRERq
NExDd3NBQUFNVkFFa1RBQUFFRHdCSkV3TU9BQUFGRHdCSkV3QUFCaE1BQXc0OERBQUFCeFlBU1JN
RERqb0xPd3NBCkFBZ21BRWtUQUFBSkVBQkpFd0FBQ2tJQVNSTUFBQXNUQVFNT0N3czZDenNMQUFB
TURRQUREa2tUT2dzN0N6Z0tNZ3NBQUEwdUFRTU8KT2dzN0N6d01OQXcvRERJTEFBQU9CUUJKRXpR
TUFBQVBCUUJKRXdBQUVDNEJoMEFPQXc0NkN6c0xTUk04RERRTVB3d3lDd0FBRVFRQgpDd3M2Q3pz
TEFBQVNLQUFERGh3TkFBQVRPUUVERGpvTE93c0FBQlF2QUVrVEF3NEFBQlVFQVFNT0N3czZDenNM
QUFBV0FnRUREZ3NMCk9nczdDd0FBRnk0QkF3NDZDenNMUEF3L0RESUxBQUFZTGdHSFFBNEREam9M
T3d0SkV6d01Qd3d5Q3dBQUdTNEJoMEFPQXc0NkN6c0wKUEF3L0RESUxBQUFhTGdHSFFBNEREam9M
T3d0SkV6d01Qd3d5QzJNTUFBQWJMZ0NIUUE0RERqb0xPd3RKRXp3TVB3d3lDd0FBSEM0QgpoMEFP
UnhNZ0N3QUFIUVVBQXc0NkN6c0xTUk0wREFBQUhnVUFBdzQ2Q3pzTFNSTUFBQjgwQUFNT09nczdD
MGtUQUFBZ0xnR0hRQTVICkV3QUFJUzRCaDBBT0F3NDZDenNGU1JNL0RBQUFJZ1VBQXc0NkN6c0ZT
Uk1BQUNNdUFZZEFEa2NUWkJNZ0N3QUFKQXNCQUFBbEh3QkoKRXgwVEFBQW1BZ0VkRXdNT0N3czZD
enNMQUFBbkRRQUREa2tUT0FveUN6UU1BQUFvTGdFRERqb0xPd3RNQzAwS1BBdy9ERElMSFJNQQpB
Q2t1QVlkQURnTU9PZ3M3QzB3TFRRbzhERDhNTWdzZEV3QUFLaTRCaDBBT0F3NDZDenNMU1JOTUMw
MEtQQXcvRERJTEhSTUFBQ3NjCkFFa1RPQW95Q3dBQUxDNEJoMEFPQXc0NkN6c0xTUk1nQ3dBQUxU
UUFBdzVKRXpvTE93c0NDZ0FBTGk0QkF3NDZDenNMUHd3UkFSSUIKUUFvQUFDOEZBQU1PT2dzN0Mw
a1RBZ1lBQURBZEFURVRWUVpZQzFrTEFBQXhIUUV4RXhFQkVnRllDMWtMQUFBeUJRQUREam9MT3dW
SgpFeHdLQUFBekJRQUREam9MT3d0SkV6UU1BZ1lBQURRZEFURVRFUUVTQVZnTFdRdGtFd0FBTlFV
QU1STTBEQUlHQUFBMkxnRUREam9MCk93dEpFejhNRVFFU0FVQUtBQUEzQlFBRERqb0xPd3RKRXdJ
S0FBQTRMZ0dIUUE1SEV4RUJFZ0ZBQ21RVEFBQTVIUUF4RXhFQkVnRlkKQzFrTEFBQTZCUUFERGpv
TE93VkpFd0lHQUFBN05BQUREam9MT3d0SkV3SUdBQUE4QlFBeEV3SUdBQUE5QlFBeEV3SUtBQUEr
TGdHSApRQTRERGpvTE93VS9EQ0FMQUFBL0xnR0hRQTVIRXhFQkVnRkFDbVFUSUFzQUFFQTBBREVU
QWdZQUFFRXVBWWRBRGdNT09nczdCVWtUClB3d2dDd0FBUWc4QUFBQUFSQU1BQUFJQWt3RUFBQUVC
K3c0TkFBRUJBUUVBQUFBQkFBQUJMMVZ6WlhKekwyRnNaWGhqYUhKcGMzUmwKYm5ObGJpOTNaV0py
YVhRdlNXNTBaWEp1WVd3dlYyVmlTMmwwVTNsemRHVnRTVzUwWlhKbVlXTmxBQzlUZVhOMFpXMHZU
R2xpY21GeQplUzlHY21GdFpYZHZjbXR6TDBGd2NHeHBZMkYwYVc5dVUyVnlkbWxqWlhNdVpuSmhi
V1YzYjNKckwwWnlZVzFsZDI5eWEzTXZRMjl5ClpVZHlZWEJvYVdOekxtWnlZVzFsZDI5eWF5OUla
V0ZrWlhKekFDOVZjMlZ5Y3k5aGJHVjRZMmh5YVhOMFpXNXpaVzR2ZDJWaWEybDAKTDA5d1pXNVRi
M1Z5WTJVdlYyVmlTMmwwUW5WcGJHUXZVbVZzWldGelpTOTFjM0l2Ykc5allXd3ZhVzVqYkhWa1pT
OTNkR1lBQUUxbApaR2xoVlVrdVkzQndBQUVBQUUxbFpHbGhWVWt1YUFBQkFBQkRSMGRsYjIxbGRI
SjVMbWdBQWdBQVVtVjBZV2x1VUhSeUxtZ0FBd0FBClZIbHdaVlJ5WVdsMGN5NW9BQU1BQUZKbFps
QjBjaTVvQUFNQUFFeGxaMkZqZVUxbFpHbGhWVWt1YUFBQkFBQlRhR0Z5WldSTlpXUnAKWVZWSkxt
Z0FBUUFBUm1GemRFMWhiR3h2WXk1b0FBTUFBQUFBQ1FJQUFBQUFBQUFBQUFNZEFRb0RjQWhZd0M4
RGVnaEtMd1FKQS9zQgoxZ1FJQTZSL1dBUUJBK1YrMWdRSkEvY0JDRW9FQndPWGZsZ0VBUU50MWdN
UjFnaExBM2RZQXd3Q0pBRUtBM0FDS0FFdkEzb0lnaThFCkNRUDdBZFlFQ0FPa2YxZ0VBUVBsZnRZ
RUNRUDNBUWhLQkFjRGwzNVlCQUVEYmRZREZ0WURjd0pFQVFNUkNPUUtBMnNDS2dFdkEzb0kKZ2k4
RUNRUDdBZFlFQ0FPa2YxZ0VBUVBsZnRZRUNRUDNBUWhLQkFjRGwzNVlCQUVEYmRZREc5WUNOUk1E
YmVRREZnSXVBUW9EWmdJdApBUzhEZWdpQ0x3UUpBL3NCMWdRSUE2Ui9XQVFCQStWKzFnUUpBL2NC
Q0VvRUJ3T1hmbGdFQVFOdDFnTWcxZ0pERXdOb3JBTWJDUElLCnU0TUNlQk9EdlFwTHZnUUVDZ010
U2dRQkExUktoZ1FFQ2dPUkFYUkxTVnNFQVFQdWZtWnBDdk1FQXVrRUFUMENQaFlLQ0NIcEFqa1QK
YVFwTHNaRXI5V2tLQ0pFRUFnTm1aZ01ZUEtFRUFhSUNMeE1DQ1FBQkFRUUNBQWtDUUFZQUFBQUFB
QUFEOWdBQkNrcTZCQWtLQTVZQgpTZ1FDQStwK0lBTlNyQXBLQkFRREhKNEVBZ05rNUR3S2tBUUVB
eHllQkFrRHFBSFdCQUlEdjM3a0Nrb0NQQk1LU2dJU0FBRUJBQUFBCkFBQUFBQUFOQUFBQUFBQUFB
QUVBVlEwQUFBQUFBQUFBcHdBQUFBQUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUEKQUFBYkFBQUFBQUFBQUFFQVZDMEFBQUFBQUFBQU1nQUFBQUFBQUFBQkFGUUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFERwpBQUFBQUFBQUFBRUFVUUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBb0FBQUFBQUFBQUFRQlNDZ0FBQUFBQUFBQ25BQUFBCkFBQUFBQUVBVXdBQUFB
QUFBQUFBQUFBQUFBQUFBQUFXQUFBQUFBQUFBQnNBQUFBQUFBQUFBUUJVQUFBQUFBQUFBQUFBQUFB
QUFBQUEKQUU0QUFBQUFBQUFBYkFBQUFBQUFBQUFCQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVGdB
QUFBQUFBQUJzQUFBQUFBQUFBQUVBVUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFCMkFBQUFBQUFBQUpJ
QUFBQUFBQUFBQVFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhZQUFBQUFBQUFBCmtnQUFBQUFBQUFB
QkFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTBBQUFBQUFBQUFEb0FBQUFBQUFBQUFFQVZlZ0FBQUFB
QUFBQXJnRUEKQUFBQUFBQUJBRjRBQUFBQUFBQUFBQUFBQUFBQUFBQUEwQUFBQUFBQUFBRHhBQUFB
QUFBQUFBRUFWQU1CQUFBQUFBQUFEQUVBQUFBQQpBQUFCQUZRQUFBQUFBQUFBQUFBQUFBQUFBQUFB
N0FBQUFBQUFBQUR4QUFBQUFBQUFBQUVBVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvCkFRQUFBQUFB
QUVZQkFBQUFBQUFBQVFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnQkFBQUFBQUFBUmdFQUFBQUFB
QUFCQUZBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQVVBRUFBQUFBQUFCc0FRQUFBQUFBQUFFQVVBQUFB
QUFBQUFBQUFBQUFBQUFBQUFCUUFRQUFBQUFBQUd3QgpBQUFBQUFBQUFRQlFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFOQUJBQUFBQUFBQTZnRUFBQUFBQUFBQkFGWHFBUUFBQUFBQUFLb0NBQUFBCkFBQUFB
UUJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBTkFCQUFBQUFBQUE4d0VBQUFBQUFBQUJBRlFGQWdBQUFB
QUFBQTRDQUFBQUFBQUEKQVFCVUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5BQkFBQUFBQUFBNXdFQUFB
QUFBQUFCQUZIbkFRQUFBQUFBQUxBQ0FBQUFBQUFBQVFCZgpBQUFBQUFBQUFBQUFBQUFBQUFBQUFO
QUJBQUFBQUFBQTVBRUFBQUFBQUFBQkFGTGtBUUFBQUFBQUFLNENBQUFBQUFBQUFRQmVBQUFBCkFB
QUFBQUFBQUFBQUFBQUFBTzRCQUFBQUFBQUE4d0VBQUFBQUFBQUJBRlFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFLZ0lBQUFBQUFBQkkKQWdBQUFBQUFBQUVBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFxQWdB
QUFBQUFBRWdDQUFBQUFBQUFBUUJRQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUZJQ0FBQUFBQUFBYmdJ
QUFBQUFBQUFCQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVWdJQUFBQUFBQUJ1QWdBQUFBQUFBQUVB
ClVBQUFBQUFBQUFBQUFBQUFBQUFBQUFEZ0FnQUFBQUFBQUFZREFBQUFBQUFBQVFCVkdBTUFBQUFB
QUFBaEF3QUFBQUFBQUFFQVZRQUEKQUFBQUFBQUFBQUFBQUFBQUFBRGdBZ0FBQUFBQUFQMENBQUFB
QUFBQUFRQlUvUUlBQUFBQUFBRE5Bd0FBQUFBQUFBRUFYd0FBQUFBQQpBQUFBQUFBQUFBQUFBQURn
QWdBQUFBQUFBUG9DQUFBQUFBQUFBUUJoK2dJQUFBQUFBQUR1QXdBQUFBQUFBQUlBZG1BQUFBQUFB
QUFBCkFBQUFBQUFBQUFBQTRBSUFBQUFBQUFDMEF3QUFBQUFBQUFFQVlzOERBQUFBQUFBQTdnTUFB
QUFBQUFBQkFHSUFBQUFBQUFBQUFBQUEKQUFBQUFBQUE0QUlBQUFBQUFBRDFBZ0FBQUFBQUFBRUFZ
L1VDQUFBQUFBQUE3Z01BQUFBQUFBQUNBSFprQUFBQUFBQUFBQUFBQUFBQQpBQUFBQU9BQ0FBQUFB
QUFBOEFJQUFBQUFBQUFCQUZId0FnQUFBQUFBQU1zREFBQUFBQUFBQVFCZUFBQUFBQUFBQUFBQUFB
QUFBQUFBCkFBRURBQUFBQUFBQUJnTUFBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBR
TUFBQUFBQUFCYkF3QUFBQUFBQUFFQVVBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQTlBd0FBQUFBQUFG
c0RBQUFBQUFBQUFRQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHVURBQUFBQUFBQQpnUU1BQUFBQUFB
QUJBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFaUU1BQUFBQUFBQ0JBd0FBQUFBQUFBRUFVQUFBQUFB
QUFBQUFBQUFBCkFBQUFBQUR3QXdBQUFBQUFBUDhEQUFBQUFBQUFBUUJWQUFBQUFBQUFBQUFBQUFB
QUFBQUFBUEFEQUFBQUFBQUEvQU1BQUFBQUFBQUIKQUZUOEF3QUFBQUFBQUlrRUFBQUFBQUFBQVFC
VEFBQUFBQUFBQUFBQUFBQUFBQUFBQUpBRUFBQUFBQUFBbHdRQUFBQUFBQUFCQUZVQQpBQUFBQUFB
QUFBQUFBQUFBQUFBQWtBUUFBQUFBQUFDWEJBQUFBQUFBQUFFQVZKY0VBQUFBQUFBQW5RUUFBQUFB
QUFBQkFGVUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFvQVFBQUFBQUFBQ3FCQUFBQUFBQUFBRUFWUUFB
QUFBQUFBQUFBQUFBQUFBQUFBQ3dCQUFBQUFBQUFMY0UKQUFBQUFBQUFBUUJWdHdRQUFBQUFBQURF
QkFBQUFBQUFBQUVBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUN3QkFBQUFBQUFBTVFFQUFBQQpBQUFB
QVFCVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxjRUFBQUFBQUFBeEFRQUFBQUFBQUFCQUZRQUFBQUFB
QUFBQUFBQUFBQUFBQUFBCnV3UUFBQUFBQUFES0JBQUFBQUFBQUFFQVZRQUFBQUFBQUFBQUFBQUFB
QUFBQUFEUUJBQUFBQUFBQU9zRUFBQUFBQUFBQVFCVkFBQUEKQUFBQUFBQUFBQUFBQUFBQUFOQUVB
QUFBQUFBQTZ3UUFBQUFBQUFBQkFGUUFBQUFBQUFBQUFBQUFBQUFBQUFBQTBBUUFBQUFBQUFEZwpC
QUFBQUFBQUFBRUFVZUFFQUFBQUFBQUFJQVVBQUFBQUFBQUJBRjRBQUFBQUFBQUFBQUFBQUFBQUFB
QUEwQVFBQUFBQUFBRGRCQUFBCkFBQUFBQUVBVXQwRUFBQUFBQUFBSUFVQUFBQUFBQUFCQUZNQUFB
QUFBQUFBQUFBQUFBQUFBQUFBNWdRQUFBQUFBQUFnQlFBQUFBQUEKQUFFQVVBQUFBQUFBQUFBQUFB
QUFBQUFBQUFEbUJBQUFBQUFBQUNBRkFBQUFBQUFBQVFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQU84
RQpBQUFBQUFBQUlBVUFBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BVUFBQUFBQUFC
TkJRQUFBQUFBQUFFQVZRQUFBQUFBCkFBQUFBQUFBQUFBQUFBQXdCUUFBQUFBQUFFMEZBQUFBQUFB
QUFRQlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ0ZBQUFBQUFBQWhnVUEKQUFBQUFBQUJBRkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFrQVVBQUFBQUFBQ2ZCUUFBQUFBQUFBRUFWUUFBQUFBQUFBQUFBQUFB
QUFBQQpBQUNRQlFBQUFBQUFBSjhGQUFBQUFBQUFBUUJVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSm9G
QUFBQUFBQUFxZ1VBQUFBQUFBQUJBRkFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBd0FVQUFBQUFBQUFn
QmdBQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQURBQlFBQUFBQUEKQU5vRkFBQUFBQUFB
QVFCVTJnVUFBQUFBQUFBakJnQUFBQUFBQUFFQVhpTUdBQUFBQUFBQUx3WUFBQUFBQUFBQkFGUUFB
QUFBQUFBQQpBQUFBQUFBQUFBQUF3QVVBQUFBQUFBRFhCUUFBQUFBQUFBRUFZZGNGQUFBQUFBQUFM
d1lBQUFBQUFBQUNBSFpnQUFBQUFBQUFBQUFBCkFBQUFBQUFBQU1BRkFBQUFBQUFBMGdVQUFBQUFB
QUFCQUdMU0JRQUFBQUFBQUM4R0FBQUFBQUFBQWdCMmFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBREFC
UUFBQUFBQUFNMEZBQUFBQUFBQUFRQlJ6UVVBQUFBQUFBQXZCZ0FBQUFBQUFBRUFVd0FBQUFBQUFB
QUFBQUFBQUFBQQpBQURnQlFBQUFBQUFBQ3NHQUFBQUFBQUFBUUJUQUFBQUFBQUFBQUFBQUFBQUFB
QUFBT0FGQUFBQUFBQUFMd1lBQUFBQUFBQUJBRkFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBNEFVQUFB
QUFBQUF2QmdBQUFBQUFBQUVBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQURnQlFBQUFBQUEKQUM4R0FB
QUFBQUFBQVFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9BRkFBQUFBQUFBTHdZQUFBQUFBQUFCQUZB
QUFBQUFBQUFBQUFBQQpBQUFBQUFBQVFBWUFBQUFBQUFCR0JnQUFBQUFBQUFFQVZRQUFBQUFBQUFB
QUFBQUFBQUFBQUFCUUJnQUFBQUFBQUZvR0FBQUFBQUFBCkFRQlZBQUFBQUFBQUFBQUFBQUFBQUFB
QUFGUUdBQUFBQUFBQVdnWUFBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlBWUEKQUFB
QUFBQjNCZ0FBQUFBQUFBRUFWUUFBQUFBQUFBQUFBQUFBQUFBQUFBQmtCZ0FBQUFBQUFISUdBQUFB
QUFBQUFRQlZBQUFBQUFBQQpBQUFBQUFBQUFBQUFBSElHQUFBQUFBQUFmUVlBQUFBQUFBQUJBRlVB
QUFBQUFBQUFBQUFBQUFBQUFBQUFnQVlBQUFBQUFBQ0pCZ0FBCkFBQUFBQUVBVllrR0FBQUFBQUFB
cndZQUFBQUFBQUFCQUZNQUFBQUFBQUFBQUFBQUFBQUFBQUFBaVFZQUFBQUFBQUNoQmdBQUFBQUEK
QUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFDSkJnQUFBQUFBQUs4R0FBQUFBQUFBQVFCVEFBQUFB
QUFBQUFBQUFBQUFBQUFBQUpjRwpBQUFBQUFBQW9RWUFBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUFB
QUFBQUFBQW9RWUFBQUFBQUFDcEJnQUFBQUFBQUFFQVV3QUFBQUFBCkFBQUFBQUFBQUFBQUFBQ3dC
Z0FBQUFBQUFPWUdBQUFBQUFBQUFRQlZBQUFBQUFBQUFBQUFBQUFBQUFBQUFQQUdBQUFBQUFBQUJn
Y0EKQUFBQUFBQUJBRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUE5Z0FBQUFJQUFBQUFBR29aQUFEQkJn
QUFTR0Z6YUZSaFlteGxSR1ZzWlhSbApaRlpoYkhWbFZIbHdaUUR1Q1FBQVRXVmthV0ZEYjI1MGNt
OXNjd0NDQUFBQVEwZFFiMmx1ZEFBZkFRQUFRMGRUYVhwbEFQUUNBQUJTClpYUmhhVzVRZEhJOFEw
ZE1ZWGxsY2lBcVBnRFdBUUFBUTBkU1pXTjBBQU1IQUFCTlpXUnBZVlZKUld4bGJXVnVkQUJIQ3dB
QVRXVmsKYVdGTVpXZGhZM2xEYjI1MGNtOXNjd0RsQWdBQVFXUnZjSFJPVTFSaFp3QVZEQUFBVFdW
a2FXRlRhR0Z5WldSVlNVTnZiblJ5YjJ4egpBTllDQUFCQlpHOXdkRU5HVkdGbkFCZ0pBQUJOWldS
cFlWVkpWR2x0Wld4cGJtVlRiR2xrWlhJQUFBQUFBRUZ3Y0d4bElFeE1WazBnCmRtVnljMmx2YmlB
MUxqQWdLR05zWVc1bkxUVXdNQzR3TGpZd0tTQW9ZbUZ6WldRZ2IyNGdURXhXVFNBekxqTnpkbTRw
QUM5VmMyVnkKY3k5aGJHVjRZMmh5YVhOMFpXNXpaVzR2ZDJWaWEybDBMMGx1ZEdWeWJtRnNMMWRs
WWt0cGRGTjVjM1JsYlVsdWRHVnlabUZqWlM5TgpaV1JwWVZWSkxtTndjQUF2VlhObGNuTXZZV3hs
ZUdOb2NtbHpkR1Z1YzJWdUwzZGxZbXRwZEM5SmJuUmxjbTVoYkM5WFpXSkxhWFJUCmVYTjBaVzFK
Ym5SbGNtWmhZMlVBYkdWbllXTjVRMjl1ZEhKdmJITUFYM1p3ZEhJa1RXVmthV0ZEYjI1MGNtOXNj
d0JwYm5RQVgxOTIKZEdKc1gzQjBjbDkwZVhCbEFINU5aV1JwWVVOdmJuUnliMnh6QUY5YVRqRXpU
V1ZrYVdGRGIyNTBjbTlzY3poa2NtRjNVR0Z5ZEVWcApVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBh
Z0JrY21GM1VHRnlkQUJEUjBOdmJuUmxlSFFBUTBkRGIyNTBaWGgwVW1WbUFHOXlhV2RwCmJnQjRB
R1J2ZFdKc1pRQkRSMFpzYjJGMEFIa0FRMGRRYjJsdWRBQitRMGRRYjJsdWRBQnphWHBsQUhkcFpI
Um9BR2hsYVdkb2RBQkQKUjFOcGVtVUFma05IVTJsNlpRQmZXazQyUTBkVGFYcGxZVk5GVDFOZkFH
OXdaWEpoZEc5eVBRQkRSMUpsWTNRQWZrTkhVbVZqZEFCMQpibk5wWjI1bFpDQnBiblFBWDFwT01U
Tk5aV1JwWVVOdmJuUnliMnh6TWpOa2NtRjNWR2x0Wld4cGJtVlRiR2xrWlhKVWNtRmphMFZRCk9V
TkhRMjl1ZEdWNGREWkRSMUpsWTNSa1pHb0FaSEpoZDFScGJXVnNhVzVsVTJ4cFpHVnlWSEpoWTJz
QVgxcE9TekV6VFdWa2FXRkQKYjI1MGNtOXNjekV4YUdsMFZHVnpkRkJoY25SRmFUWkRSMUpsWTNR
M1EwZFFiMmx1ZEFCb2FYUlVaWE4wVUdGeWRBQmliMjlzQUY5YQpUa3N4TTAxbFpHbGhRMjl1ZEhK
dmJITXhNVzVoZEhWeVlXeFRhWHBsUldrQWJtRjBkWEpoYkZOcGVtVUFYMXBPU3pFelRXVmthV0ZE
CmIyNTBjbTlzY3pFMFkyOXVkSEp2YkVadmNsQmhjblJGYVFCamIyNTBjbTlzUm05eVVHRnlkQUJm
ZG5CMGNpUk5aV1JwWVZWSlJXeGwKYldWdWRBQnRYM0JoY25SSlJBQnRYM04wWVhSbEFGZExUV1Zr
YVdGRGIyNTBjbTlzYkdWeVJteGhaMFJwYzJGaWJHVmtBRmRMVFdWawphV0ZEYjI1MGNtOXNiR1Z5
Um14aFoxQnlaWE56WldRQVYwdE5aV1JwWVVOdmJuUnliMnhzWlhKR2JHRm5SSEpoZDBWdVpFTmhj
SE1BClYwdE5aV1JwWVVOdmJuUnliMnhzWlhKR2JHRm5SbTlqZFhObFpBQlhTMDFsWkdsaFEyOXVk
SEp2Ykd4bGNsUm9aVzFsVTNSaGRHVUEKYlY5c1lYbGxjZ0J0WDNCMGNnQkRSMHhoZVdWeUFGUjVj
R1VBVjFSR0FGUUFVbVZ0YjNabFVHOXBiblJsY2p4RFIweGhlV1Z5SUNvKwpBRlpoYkhWbFZIbHda
UUJRZEhKVWVYQmxBRkpsZEdGcGJsQjBjZ0JCWkc5d2RFTkdBRUZrYjNCMFEwWlVZV2NBUVdSdmNI
Uk9Vd0JCClpHOXdkRTVUVkdGbkFFaGhjMmhVWVdKc1pVUmxiR1YwWldSV1lXeDFaUUJJWVhOb1ZH
RmliR1ZFWld4bGRHVmtWbUZzZFdWVWVYQmwKQUY5YVRrc3pWMVJHT1ZKbGRHRnBibEIwY2tsUU4w
TkhUR0Y1WlhKRk1qTnBjMGhoYzJoVVlXSnNaVVJsYkdWMFpXUldZV3gxWlVWMgpBR2x6U0dGemFG
UmhZbXhsUkdWc1pYUmxaRlpoYkhWbEFINVNaWFJoYVc1UWRISUFYMXBPTTFkVVJqbFNaWFJoYVc1
UWRISkpVRGREClIweGhlV1Z5UlRWamJHVmhja1YyQUdOc1pXRnlBRjlhVGpOWFZFWTVVbVYwWVds
dVVIUnlTVkEzUTBkTVlYbGxja1UzYkdWaGExSmwKWmtWMkFHeGxZV3RTWldZQVgxcE9Tek5YVkVZ
NVVtVjBZV2x1VUhSeVNWQTNRMGRNWVhsbGNrVXpaMlYwUlhZQVoyVjBBRjlhVGtzegpWMVJHT1ZK
bGRHRnBibEIwY2tsUU4wTkhUR0Y1WlhKRmNIUkZkZ0J2Y0dWeVlYUnZjaTArQUY5YVRrc3pWMVJH
T1ZKbGRHRnBibEIwCmNrbFFOME5IVEdGNVpYSkZZM1pUTWw5RmRnQnZjR1Z5WVhSdmNpQnpkSEox
WTNRZ1EwZE1ZWGxsY2lBcUFGOWFUa3N6VjFSR09WSmwKZEdGcGJsQjBja2xRTjBOSFRHRjVaWEpG
Ym5SRmRnQnZjR1Z5WVhSdmNpRUFYMXBPU3pOWFZFWTVVbVYwWVdsdVVIUnlTVkEzUTBkTQpZWGxs
Y2tWamRrMVRNMTlUTWw5RmRnQnZjR1Z5WVhSdmNpQnpkSEoxWTNRZ1EwZE1ZWGxsY2lBcVkyeGhj
M01nVjFSR09qcFNaWFJoCmFXNVFkSEk4YzNSeWRXTjBJRU5IVEdGNVpYSWdLajQ2T2lvQVZXNXpj
R1ZqYVdacFpXUkNiMjlzVkhsd1pRQmZXazR6VjFSR09WSmwKZEdGcGJsQjBja2xRTjBOSFRHRjVa
WEpGWVZORlVrdFRNMThBVlFCZldrNHpWMVJHT1ZKbGRHRnBibEIwY2tsUU4wTkhUR0Y1WlhKRgpZ
Vk5KVXpKZlJVVlNVek5mVWt0T1V6QmZTVlJmUlVVQWIzQmxjbUYwYjNJOVBFTkhUR0Y1WlhJZ0tq
NEFYMXBPTTFkVVJqbFNaWFJoCmFXNVFkSEpKVURkRFIweGhlV1Z5UldGVFJWTXlYd0JmV2s0elYx
UkdPVkpsZEdGcGJsQjBja2xRTjBOSFRHRjVaWEpGWVZORlQxTXoKWHdCZldrNHpWMVJHT1ZKbGRH
RnBibEIwY2tsUU4wTkhUR0Y1WlhKRllWTkpVekpmUlVWU1V6TmZUMDVUTUY5SlZGOUZSUUJmV2s0
egpWMVJHT1ZKbGRHRnBibEIwY2tsUU4wTkhUR0Y1WlhKRk5ITjNZWEJGVWxNelh3QnpkMkZ3QUY5
YVRqTlhWRVk1VW1WMFlXbHVVSFJ5ClNWQTNRMGRNWVhsbGNrVXlNV2hoYzJoVVlXSnNaVVJsYkdW
MFpXUldZV3gxWlVWMkFHaGhjMmhVWVdKc1pVUmxiR1YwWldSV1lXeDEKWlFCU1pYUmhhVzVRZEhJ
OFEwZE1ZWGxsY2lBcVBnQitUV1ZrYVdGVlNVVnNaVzFsYm5RQVgxcE9NVFJOWldScFlWVkpSV3hs
YldWdQpkRFZ3WVdsdWRFVlFPVU5IUTI5dWRHVjRkRFpEUjFKbFkzUUFjR0ZwYm5RQVgxcE9TekUw
VFdWa2FXRlZTVVZzWlcxbGJuUTNhR2wwClZHVnpkRVUyUTBkU1pXTjBOME5IVUc5cGJuUUFhR2ww
VkdWemRBQmZXazVMTVRSTlpXUnBZVlZKUld4bGJXVnVkREV4Ym1GMGRYSmgKYkZOcGVtVkZkZ0Jm
V2s0eE5FMWxaR2xoVlVsRmJHVnRaVzUwT0hObGRGTjBZWFJsUlRJM1YwdE5aV1JwWVVOdmJuUnli
MnhzWlhKVQphR1Z0WlZOMFlYUmxBSE5sZEZOMFlYUmxBRjlhVGtzeE5FMWxaR2xoVlVsRmJHVnRa
VzUwTlhOMFlYUmxSWFlBYzNSaGRHVUFYMXBPCk1UUk5aV1JwWVZWSlJXeGxiV1Z1ZERselpYUlFZ
WEowU1VSRmFRQnpaWFJRWVhKMFNVUUFYMXBPU3pFMFRXVmthV0ZWU1VWc1pXMWwKYm5RMmNHRnlk
RWxFUlhZQWNHRnlkRWxFQUY5YVRrc3hORTFsWkdsaFZVbEZiR1Z0Wlc1ME9XbHpVSEpsYzNObFpF
VjJBR2x6VUhKbApjM05sWkFCZldrNUxNVFJOWldScFlWVkpSV3hsYldWdWREbHBjMFp2WTNWelpX
UkZkZ0JwYzBadlkzVnpaV1FBWDFwT1N6RTBUV1ZrCmFXRlZTVVZzWlcxbGJuUTVhWE5GYm1GaWJH
VmtSWFlBYVhORmJtRmliR1ZrQUY5YVRrc3hORTFsWkdsaFZVbEZiR1Z0Wlc1ME1qTnoKWlhSVmNF
TnZiblJsZUhSR2IzSlFZV2x1ZEdsdVowVlFPVU5IUTI5dWRHVjRkRFpEUjFKbFkzUUFjMlYwVlhC
RGIyNTBaWGgwUm05eQpVR0ZwYm5ScGJtY0FYMXBPU3pFMFRXVmthV0ZWU1VWc1pXMWxiblF5TjNK
bGMzUnZjbVZEYjI1MFpYaDBRV1owWlhKUVlXbHVkR2x1ClowVlFPVU5IUTI5dWRHVjRkQUJ5WlhO
MGIzSmxRMjl1ZEdWNGRFRm1kR1Z5VUdGcGJuUnBibWNBWDFwT1N6RTBUV1ZrYVdGVlNVVnMKWlcx
bGJuUTFiR0Y1WlhKRmRnQnNZWGxsY2dCRFIweGhlV1Z5VW1WbUFGOWFUakUwVFdWa2FXRlZTVVZz
WlcxbGJuUTRjMlYwVEdGNQpaWEpGVURkRFIweGhlV1Z5QUhObGRFeGhlV1Z5QUUxbFpHbGhWVWxG
YkdWdFpXNTBBRjlhVGtzeE0wMWxaR2xoUTI5dWRISnZiSE0yCmMyeHBaR1Z5UlhZQWMyeHBaR1Z5
QUcxZmRHbHRaVXh2WVdSbFpBQnRYMlIxY21GMGFXOXVBRjlhVGpJeFRXVmthV0ZWU1ZScGJXVnMK
YVc1bFUyeHBaR1Z5TVROelpYUlVhVzFsVEc5aFpHVmtSV1FBYzJWMFZHbHRaVXh2WVdSbFpBQmZX
azVMTWpGTlpXUnBZVlZKVkdsdApaV3hwYm1WVGJHbGtaWEl4TUhScGJXVk1iMkZrWldSRmRnQjBh
VzFsVEc5aFpHVmtBRjlhVGpJeFRXVmthV0ZWU1ZScGJXVnNhVzVsClUyeHBaR1Z5TVRGelpYUkVk
WEpoZEdsdmJrVmtBSE5sZEVSMWNtRjBhVzl1QUY5YVRrc3lNVTFsWkdsaFZVbFVhVzFsYkdsdVpW
TnMKYVdSbGNqaGtkWEpoZEdsdmJrVjJBR1IxY21GMGFXOXVBRjlhVGtzeU1VMWxaR2xoVlVsVWFX
MWxiR2x1WlZOc2FXUmxjakUwWm5KaApZM1JwYjI1TWIyRmtaV1JGZGdCbWNtRmpkR2x2Ymt4dllX
UmxaQUJmV2s1TE1qRk5aV1JwWVZWSlZHbHRaV3hwYm1WVGJHbGtaWEl4Ck1YQmxjbU5sYm5SVWFX
MWxSV1FBY0dWeVkyVnVkRlJwYldVQVRXVmthV0ZWU1ZScGJXVnNhVzVsVTJ4cFpHVnlBRTFsWkds
aFEyOXUKZEhKdmJITUFYMXBPU3pFNVRXVmthV0ZNWldkaFkzbERiMjUwY205c2N6RTBZMjl1ZEhK
dmJFWnZjbEJoY25SRmFRQmZXazVMTVRsTgpaV1JwWVV4bFoyRmplVU52Ym5SeWIyeHpObk5zYVdS
bGNrVjJBRTFsWkdsaFRHVm5ZV041UTI5dWRISnZiSE1BWDFwTU1UWmpiMjUwCmNtOXNjMFp2Y2xS
b1pXMWxhUUJqYjI1MGNtOXNjMFp2Y2xSb1pXMWxBSE5vWVhKbFpGVkpRMjl1ZEhKdmJITUFYMXBP
U3pJeFRXVmsKYVdGVGFHRnlaV1JWU1VOdmJuUnliMnh6TVRSamIyNTBjbTlzUm05eVVHRnlkRVZw
QUY5YVRrc3lNVTFsWkdsaFUyaGhjbVZrVlVsRApiMjUwY205c2N6WnpiR2xrWlhKRmRnQk5aV1Jw
WVZOb1lYSmxaRlZKUTI5dWRISnZiSE1BVjB0TlpXRnpkWEpsVFdWa2FXRlZTVkJoCmNuUUFWMHRJ
YVhSVVpYTjBUV1ZrYVdGVlNWQmhjblFBYzJsbmJtVmtJR05vWVhJQVFrOVBUQUJYUzBSeVlYZE5a
V1JwWVZWSlVHRnkKZEFCWFMwUnlZWGROWldScFlWTnNhV1JsY2xSeVlXTnJBRjlhVGpOWFZFWTNZ
V1J2Y0hSRFJrbFFOME5IVEdGNVpYSkZSVTVUWHpsUwpaWFJoYVc1UWRISkpWRjlGUlZNMFh3Qmha
Rzl3ZEVOR1BFTkhUR0Y1WlhJZ0tqNEFYMXBPTTFkVVJqbFNaWFJoYVc1UWRISkpVRGREClIweGhl
V1Z5UlVNeFJVNVRYekV3UVdSdmNIUkRSbFJoWjBWVE1sOEFYMXBPTTFkVVJqbFNaWFJoYVc1UWRI
SkpVRGREUjB4aGVXVnkKUlVNeVJVNVRYekV3UVdSdmNIUkRSbFJoWjBWVE1sOEFYMXBPTTFkVVJq
bFNaWFJoYVc1UWRISkpVRGREUjB4aGVXVnlSVVF4UlhZQQpYMXBPTTFkVVJqbFNaWFJoYVc1UWRI
SkpVRGREUjB4aGVXVnlSVVF5UlhZQVgxcE9NVFJOWldScFlWVkpSV3hsYldWdWRFUXdSWFlBClgx
cGtiRkIyQUc5d1pYSmhkRzl5SUdSbGJHVjBaUUJmV2s0eE5FMWxaR2xoVlVsRmJHVnRaVzUwUkRG
RmRnQmZXazR4TkUxbFpHbGgKVlVsRmJHVnRaVzUwUkRKRmRnQmZXazR4TTAxbFpHbGhRMjl1ZEhK
dmJITkVNRVYyQUY5YVRqRXpUV1ZrYVdGRGIyNTBjbTlzYzBReApSWFlBWDFwT01UTk5aV1JwWVVO
dmJuUnliMnh6UkRKRmRnQmZXazR5TVUxbFpHbGhVMmhoY21Wa1ZVbERiMjUwY205c2MwTXhSWFlB
ClgxcE9NakZOWldScFlWTm9ZWEpsWkZWSlEyOXVkSEp2YkhORE1rVjJBRjlhVGpFelRXVmthV0ZE
YjI1MGNtOXNjME15UlhZQVgxcE8KTVRsTlpXUnBZVXhsWjJGamVVTnZiblJ5YjJ4elF6RkZkZ0Jm
V2s0eE9VMWxaR2xoVEdWbllXTjVRMjl1ZEhKdmJITkRNa1YyQUY5YQpibmR0QUc5d1pYSmhkRzl5
SUc1bGR3QlhTMDFsWkdsaFEyOXVkSEp2Ykd4bGNsUm9aVzFsUTJ4aGMzTnBZd0JYUzAxbFpHbGhR
Mjl1CmRISnZiR3hsY2xSb1pXMWxVWFZwWTJ0VWFXMWxBSFJvYVhNQWRHaGxiV1ZUZEhsc1pRQmli
M1Z1WkhNQWJHOXVaeUIxYm5OcFoyNWwKWkNCcGJuUUFjMmw2WlY5MEFIQnZhVzUwQUdOdmJuUmxl
SFFBY21WamRBQm1iRzloZEFCamRYSnlaVzUwVkdsdFpRQnZBSEIwY2dCdwpZWEowQUd4dllXUmxa
QUJ3QUFBV0FBQUFBQUFBQUpJQUFBQUFBQUFBckFBQUFBQUFBQURMQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBCkFBQUFBQUQ0QUFBQUFBQUFBR3dCQUFBQUFBQUFzQUVBQUFBQUFBRFBBUUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFENkFRQUEKQUFBQUFHNENBQUFBQUFBQXNnSUFBQUFBQUFEUkFn
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOQXdBQUFBQUFBSUVEQUFBQQpBQUFBendNQUFB
QUFBQUR1QXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVpBZ0FBQWdBSWFBOEFBRDhOQUFB
RUxnMEFBRTRBCkFBQUFBQUFBVnc0QUFDZ0JBQUFBQUFBQXJROEFBQ29DQUFBQUFBQUFEeEVBQUQw
REFBQUFBQUFBMkE4QUFONFBBQUFJK1F3QUFFa0EKQUFBQUFBQUFWUTBBQUhFQUFBQUFBQUFBSWc0
QUFDTUJBQUFBQUFBQWhBNEFBRXNCQUFBQUFBQUFlQThBQUNVQ0FBQUFBQUFBMmc4QQpBRTBDQUFB
QUFBQUEyaEFBQURnREFBQUFBQUFBUEJFQUFHQURBQUFBQUFBQXV3OEFBSjhNQUFBRWlnMEFBSFlB
QUFBQUFBQUF1UTRBCkFGQUJBQUFBQUFBQUR4QUFBRklDQUFBQUFBQUFjUkVBQUdVREFBQUFBQUFB
c3d3QUFNb01BQUFFM3d3QUFCWUFBQUFBQUFBQUNBNEEKQVBnQUFBQUFBQUFBWGc4QUFQb0JBQUFB
QUFBQXdCQUFBQTBEQUFBQUFBQUEvUVFBQUNFRkFBQUJXeElBQUtRRUFBQUFBQUFBMEFZQQpBTGtC
QUFBQnNSSUFBTGNFQUFBQUFBQUFVQWdBQUlzSUFBQUNZaE1BQU84RUFBQUFBQUFBenhRQUFPQUZB
QUFBQUFBQTR3b0FBQThMCkFBQUJDaFVBQU9NRkFBQUFBQUFBVWdzQUFId0xBQUFCT0JVQUFPMEZB
QUFBQUFBQXZRNEFBTVFPQUFBQnFCY0FBRlFHQUFBQUFBQUEKaEE0QUFKZ0VBQUFDT2hjQUFHNEdB
QUFBQUFBQWlCWUFBSk1HQUFBQUFBQUFZdzRBQUpnRUFBQUNJeGNBQUc0R0FBQUFBQUFBY1JZQQpB
Sk1HQUFBQUFBQUE3QTRBQUxRSEFBQUMvaFlBQUdRR0FBQUFBQUFBUmhZQUFJa0dBQUFBQUFBQTFB
NEFBTFFIQUFBQkR4WUFBSWtHCkFBQUFBQUFBU0ZOQlNBRUFBQUFiQUFBQU53QUFBQXdBQUFBQUFB
QUFBUUFBQUFFQUJnQUFBQUFBLy8vLy93TUFBQUFIQUFBQS8vLy8KL3dnQUFBQUpBQUFBQ3dBQUFB
MEFBQUFRQUFBQUV3QUFBQlFBQUFBWEFBQUFHQUFBQUIwQUFBQWdBQUFBSkFBQUFQLy8vLzhtQUFB
QQpKd0FBQUNrQUFBQXFBQUFBS3dBQUFDMEFBQUF2QUFBQU1BQUFBRFVBQUFEMGcxNW9idE1zRURG
Zi9TQmNLd2lFaFhhSUM0S1gyQStLClhxZWJ6dlc2TERkQ1A3WFFWZWtPQ0lIK0k2M0xMcFhLd013
blZFQlJ2a20rVFozT0tVQ1FJZHpCZ3FTb01STE9RRmVRbmlmRkVpN28Kc3ZnSzNiaEcvLzJkUXZk
dXF3Qm9DVjJ3WkJKWjY5R2FoYVhUYVlCaEErcjFSRmMzRlloYWpqSTcrMGV4MDQ2UjlsdDhsQ05R
YnRxMQpjNnNGRFVKM3hJQTFTTGpNSjgzSlQwT0xyMkdkNWgrSzkwc2JtN2YwWVE3c2owUWJuRTZJ
b1VDaFFKMXQ4b1cxRU0rVjlsdDRYVFNOCmliek1KeUxkQmlXekViR042dEswOXhNOFViN2Yyeldl
UkFJQUFGUUNBQUJrQWdBQWRBSUFBSkFDQUFDZ0FnQUFzQUlBQU1BQ0FBRFEKQWdBQTVBSUFBQkFE
QUFBc0F3QUFQQU1BQUZBREFBQmdBd0FBY0FNQUFJd0RBQUNjQXdBQXJBTUFBTHdEQUFETUF3QUE2
QU1BQVBnRApBQUFJQkFBQUdBUUFBRFFFQUFCRUJBQUFWQVFBQUhBRUFBQ0FCQUFBbEFRQUFLUUVB
QURRQkFBQTVBUUFBUFFFQUFBRUJRQUFKQVVBCkFEUUZBQUJFQlFBQVZBVUFBR1FGQUFCNEJRQUFp
QVVBQUpnRkFBQzBCUUFBeEFVQUFOUUZBQURvQlFBQS9BVUFBQXdHQUFBZ0JnQUEKTUFZQUFFQUdB
QUJRQmdBQVlBWUFBRGtDQUFBQkFBQUFraE1BQUFBQUFBQ1BDZ0FBQVFBQUFITVNBQUFBQUFBQWZB
SUFBQUVBQUFENQpFd0FBQUFBQUFKZ0VBQUFFQUFBQWNSWUFBSWdXQUFBakZ3QUFPaGNBQUFBQUFB
QWhCUUFBQVFBQUFGc1NBQUFBQUFBQVZ3b0FBQUVBCkFBQXNFZ0FBQUFBQUFKQU5BQUFCQUFBQStn
NEFBQUFBQUFCVkRRQUFBUUFBQUlrTUFBQUFBQUFBbndJQUFBSUFBQUQ1RXdBQVp4VUEKQUFBQUFB
RFlEd0FBQ0FBQUFQa01BQUJWRFFBQUlnNEFBSVFPQUFCNER3QUEyZzhBQU5vUUFBQThFUUFBQUFB
QUFMTU1BQUFFQUFBQQozd3dBQUFnT0FBQmVEd0FBd0JBQUFBQUFBQUJvQ2dBQUFRQUFBSE1TQUFB
QUFBQUE3QTRBQUFJQUFBQkdGZ0FBL2hZQUFBQUFBQUFiCkR3QUFBUUFBQU5FWEFBQUFBQUFBRHdz
QUFBRUFBQUFLRlFBQUFBQUFBSjhNQUFBRUFBQUFpZzBBQUxrT0FBQVBFQUFBY1JFQUFBQUEKQUFC
ckFnQUFBUUFBQUpJVEFBQUFBQUFBeEE0QUFBRUFBQUNvRndBQUFBQUFBTnNNQUFBQkFBQUE0QXNB
QUFBQUFBRDNCd0FBQVFBQQpBSmNWQUFBQUFBQUFQdzBBQUFRQUFBQXVEUUFBVnc0QUFLMFBBQUFQ
RVFBQUFBQUFBQ1FJQUFBQkFBQUFseFVBQUFBQUFBRGdDUUFBCkFRQUFBTzBSQUFBQUFBQUEvUVFB
QUFFQUFBQmJFZ0FBQUFBQUFHZ1BBQUFFQUFBQUxnMEFBRmNPQUFDdER3QUFEeEVBQUFBQUFBQlMK
Q3dBQUFRQUFBRGdWQUFBQUFBQUFPZ29BQUFFQUFBQXNFZ0FBQUFBQUFNb01BQUFFQUFBQTN3d0FB
QWdPQUFCZUR3QUF3QkFBQUFBQQpBQURmQVFBQUFRQUFBRWNVQUFBQUFBQUEvQUFBQUFJQUFBQjVG
d0FBMFJjQUFBQUFBQUFlQ2dBQUFRQUFBTzBSQUFBQUFBQUEzZzhBCkFBZ0FBQUQ1REFBQVZRMEFB
Q0lPQUFDRURnQUFlQThBQU5vUEFBRGFFQUFBUEJFQUFBQUFBQUJqRGdBQUFnQUFBSEVXQUFBakZ3
QUEKQUFBQUFNZ0pBQUFCQUFBQW9CRUFBQUFBQUFERkFBQUFBUUFBQU1zTEFBQUFBQUFBdEFjQUFB
VUFBQURnRlFBQUR4WUFBRVlXQUFETwpGZ0FBL2hZQUFBQUFBQUI4Q3dBQUFRQUFBRGdWQUFBQUFB
QUFwUTRBQUFFQUFBRGdGUUFBQUFBQUFLSU5BQUFCQUFBQVBoQUFBQUFBCkFBQ0hDUUFBQVFBQUFL
QVJBQUFBQUFBQVVBZ0FBQUlBQUFCaUV3QUF6eFFBQUFBQUFBRFFCZ0FBQVFBQUFMRVNBQUFBQUFB
QXZRNEEKQUFFQUFBQ29Gd0FBQUFBQUFMc1BBQUFFQUFBQWlnMEFBTGtPQUFBUEVBQUFjUkVBQUFB
QUFBQzVBUUFBQVFBQUFMRVNBQUFBQUFBQQphZzBBQUFFQUFBQ3pEUUFBQUFBQUFJc0lBQUFDQUFB
QVloTUFBTThVQUFBQUFBQUFoQTRBQUFJQUFBQ0lGZ0FBT2hjQUFBQUFBQURqCkNnQUFBUUFBQUFv
VkFBQUFBQUFBMUE0QUFBSUFBQUFQRmdBQXpoWUFBQUFBQUFBaEFnQUFBUUFBQUVjVUFBQUFBQUFB
TEFnQUFBRUEKQUFCbkZRQUFBQUFBQUR3QkFBQUJBQUFBNlJJQUFBQUFBQUFFRHdBQUFRQUFBSGtY
QUFBQUFBQUFDd0VBQUFFQUFBRHBFZ0FBQUFBQQpBRWhUUVVnQkFBQUFBUUFBQUFBQUFBQU1BQUFB
QUFBQUFBRUFBQUFCQUFZQS8vLy8vMGhUUVVnQkFBQUFBUUFBQUFFQUFBQU1BQUFBCkFBQUFBQUVB
QUFBQkFBWUFBQUFBQUJZd2lBc3NBQUFBdGdNQUFBTUFBQUNnQWdBQXp3SUFBTG9HQUFBQUFBQUFT
Rk5CU0FFQUFBQVAKQUFBQUh3QUFBQlFBQUFBQUFBQUFBd0FBQUFFQUJnQURBQVVBQlFBTEFBQUFB
QUFDQUFBQUF3QUFBQVVBQUFBSUFBQUFEQUFBQUE4QQpBQUFTQUFBQUV3QUFBQllBQUFELy8vLy9G
d0FBQVAvLy8vOGFBQUFBSGdBQUFGRVV4endmUWRnUzZzUmNxY2xURzlpOWZEWDdpVGIxCkFuME55
Q2o2bEVmdmVUVU92NTBrWEtrZlNrbTY1ekNOZk9XWkM5VE5renl5emlsQWtCR2JnbnlDWm5udTRs
RzJERjJuRE9ZTnlDVlkKTUlDSUMxSC94UStUOHRBYnAwTXlzWkd6bEh3NUhNTFVJRnM5K2IyaU9D
bUVLYTBxbStGeER5N29zdmhjQVFBQWJ3RUFBSUlCQUFDYwpBUUFBcndFQUFNSUJBQURWQVFBQTZB
RUFBUHNCQUFBT0FnQUFLQUlBQURzQ0FBQk9BZ0FBWVFJQUFIUUNBQUNIQWdBQW1nSUFBSzBDCkFB
REFBZ0FBMHdJQUFPWUNBQUQ1QWdBQURBTUFBQjhEQUFBeUF3QUFSUU1BQUY4REFBQnlBd0FBaFFN
QUFKZ0RBQUNyQXdBQTdBQUEKQUFFQUFBQXpBQUFBRHdBQUFBQUFBSDhEQUFBQkFBQUFqd0lBQUJZ
QUFBQUFBQUNaQVFBQUFnQUFBQjhCQUFBVEFBSzNBUUFBRmdBQQpBQUFBQUo4SEFBQUJBQUFBOUFJ
QUFBSUFBZ0FBQUFCQUVBQUFBUUFBQUR3WkFBQWtBQUFBQUFBQVhRb0FBQUVBQUFENEJnQUFGZ0FB
CkFBQUFBTjhEQUFBQkFBQUFCd01BQUJZQUFBQUFBQUFNQkFBQUFRQUFBT1VDQUFBRUFBSUFBQUFB
UWd3QUFBRUFBQUR1Q1FBQUFnQUMKQUFBQUFNTUJBQUFDQUFBQTFnRUFBQk1BQWs4Q0FBQVdBQUFB
QUFBQXZBTUFBQUVBQUFDbkFnQUFFd0FDQUFBQUFMRURBQUFCQUFBQQp1QUlBQUJZQUFBQUFBQUJz
QVFBQUFRQUFBR01BQUFBV0FBQUFBQUFBMGdFQUFBRUFBQUJhQWdBQUpBQUFBQUFBQUo4TUFBQUJB
QUFBClJ3c0FBQUlBQWdBQUFBQ0xEUUFBQVFBQUFPOE9BQUFXQUFBQUFBQUErUU1BQUFFQUFBRFdB
Z0FBQkFBQ0FBQUFBQ2tHQUFBQkFBQUEKbGdRQUFCWUFBQUFBQUFBc0RBQUFBUUFBQUJnSkFBQUNB
QUlBQUFBQW1Bb0FBQUVBQUFBREJ3QUFBZ0FDQUFBQUFPZ0FBQUFCQUFBQQpKd0FBQUNRQUFBQUFB
QUJQQVFBQUFRQUFBRkVBQUFBV0FBQUFBQUFBVWhBQUFBRUFBQUJER1FBQUZnQUFBQUFBQUMwRUFB
QUJBQUFBCndRWUFBQVFBQWdBQUFBQjNBZ0FBQVFBQUFHRUNBQUFrQUFBQUFBQUFkZ0VBQUFJQUFB
Q0NBQUFBRXdBQyt3QUFBQllBQUFBQUFBQmwKQVFBQUFRQUFBRndBQUFBa0FBQUFBQUFBZncwQUFB
RUFBQURvRGdBQUpBQUFBQUFBQU5VREFBQUJBQUFBL0FJQUFCWUFBQUFBQUFCcwpFQUFBQVFBQUFF
NFpBQUFrQUFBQUFBQUFQdzBBQUFFQUFBQVZEQUFBQWdBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFNc0FBQUFoCkFBSUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFOQUFBQUFBQUFBQS93QUFBQ0VBQWdF
QUFBQUFBQUFBQUFBQUFBQUFBQUFBMEFFQUFBQUEKQUFBQkFRQUEwVmdGQVFBQUFBQUFBQUFBQUFB
QUFBQUFBQURnQWdBQUFBQUFBQTRCQUFCaEFRTUJBQUFBQUFBQUFBQUFBQUFBQUFBQQpBUEFEQUFB
QUFBQUFtd0FBQUFFQUFRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQWtBUUFBQUFBQUFBTkFBQUFBQUFB
QVFBQUFBQUFBQUFBCkFBQUFBQUFBQUFDZ0JBQUFBQUFBQUFvQUFBQUFBQUFCQUFBQUFBQUFBQUFB
QUFBQUFBQUFBTEFFQUFBQUFBQUFIQUFBQUFBQUFBRUEKQUFBQUFBQUFBQUFBQUFBQUFBQUEwQVFB
QUFBQUFBQlpBQUFBSVFBQ0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0JRQUFBQUFBQUdBQQpBQUFB
QUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUpBRkFBQUFBQUFBTEFBQUFBQUFBQUVBQUFBQUFBQUFB
QUFBQUFBQUFBQUF3QVVBCkFBQUFBQUJ2QUFBQUlRQUNBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFC
Z0FBQUFBQUFBWUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUEKQUFBQUFGQUdBQUFBQUFBQUNnQUFB
QUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFZQUFBQUFBQUFmQUFBQUFBQUFBUUFBQUFBQQpB
QUFBQUFBQUFBQUFBQUNBQmdBQUFBQUFBQzhBQUFBQkFBRUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFM
QUdBQUFBQUFBQU5nQUFBQUFBCkFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQThBWUFBQUFBQUFBV0FB
QUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUFBQUFBQUEKQUFGNlVnQUJlQkFCRUF3SENK
QUJBQUFrQUFBQUhBQUFBRENwLy8vLy8vLy95d0FBQUFBQUFBQUFRUTRRaGdKRERRWkRnd1NPQXdB
QQpKQUFBQUVRQUFBRFlxZi8vLy8vLy8vOEFBQUFBQUFBQUFFRU9FSVlDUXcwR1I0TUVqZ01BQUN3
QUFBQnNBQUFBc0tyLy8vLy8vLzhCCkFRQUFBQUFBQUFCQkRoQ0dBa01OQmsyREI0d0dqUVdPQkk4
REFBQUFBQ1FBQUFDY0FBQUFrS3YvLy8vLy8vOE9BUUFBQUFBQUFBQkIKRGhDR0FrTU5Ca21EQlk0
RWp3TWtBQUFBeEFBQUFIaXMvLy8vLy8vL213QUFBQUFBQUFBQVFRNFFoZ0pERFFaRmd3TUFBQUFB
SkFBQQpBT3dBQUFEd3JQLy8vLy8vL3cwQUFBQUFBQUFBQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ1FB
QUFBVUFRQUEyS3ovLy8vLy8vOEtBQUFBCkFBQUFBQUJCRGhDR0FrTU5CZ0FBQUFBQUFBQWtBQUFB
UEFFQUFNQ3MvLy8vLy8vL0hBQUFBQUFBQUFBQVFRNFFoZ0pERFFZQUFBQUEKQUFBQUpBQUFBR1FC
QUFDNHJQLy8vLy8vLzFrQUFBQUFBQUFBQUVFT0VJWUNRdzBHUjRNRWpnTUFBQ1FBQUFDTUFRQUE4
S3ovLy8vLwovLzlnQUFBQUFBQUFBQUJCRGhDR0FrTU5CZ0FBQUFBQUFBQWtBQUFBdEFFQUFDaXQv
Ly8vLy8vL0xBQUFBQUFBQUFBQVFRNFFoZ0pECkRRWUFBQUFBQUFBQUpBQUFBTndCQUFBd3JmLy8v
Ly8vLzI4QUFBQUFBQUFBQUVFT0VJWUNRdzBHUjRNRWpnTUFBQ1FBQUFBRUFnQUEKaUszLy8vLy8v
LzhHQUFBQUFBQUFBQUJCRGhDR0FrTU5CZ0FBQUFBQUFBQWtBQUFBTEFJQUFIQ3QvLy8vLy8vL0Nn
QUFBQUFBQUFBQQpRUTRRaGdKRERRWUFBQUFBQUFBQUpBQUFBRlFDQUFCWXJmLy8vLy8vL3g4QUFB
QUFBQUFBQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ1FBCkFBQjhBZ0FBVUszLy8vLy8vLzh2QUFBQUFB
QUFBQUJCRGhDR0FrTU5Ca0tEQXdBQUFBQWtBQUFBcEFJQUFGaXQvLy8vLy8vL05nQUEKQUFBQUFB
QUFRUTRRaGdKRERRWUFBQUFBQUFBQUpBQUFBTXdDQUFCd3JmLy8vLy8vL3hZQUFBQUFBQUFBQUVF
T0VJWUNRdzBHQUFBQQpBQUFBQUswRkFBQTJBQUE5eGdRQUFDNEFBQzJaQkFBQUx3QUFMWUFFQUFB
eEFBQXRlQVFBQUFJQUFCVndCQUFBQWdBQUZXZ0VBQUF5CkFBQXRWUVFBQURRQUFDMG9CQUFBTlFB
QUxRQUVBQUF3QUFBdDZnTUFBRHNBQUMzZ0F3QUFCZ0FBSGRrREFBQUZBQUFkMGdNQUFBUUEKQUIx
OEF3QUFBZ0FBYlhZREFBQURBQUFkYUFNQUFEa0FBRDFoQXdBQU53QUFMVlFEQUFBQUFBQnRUZ01B
QUFFQUFCMUFBd0FBT2dBQQpQVGtEQUFBM0FBQXRMUU1BQUFNQUFCMGpBd0FBQWdBQWJSSURBQUFC
QUFBZENBTUFBQUFBQUczTkFnQUFPd0FBTGNNQ0FBQUdBQUFkCnZBSUFBQVVBQUIyMUFnQUFCQUFB
SFdrQ0FBQUNBQUJ0WXdJQUFBTUFBQjFWQWdBQU9RQUFQVTRDQUFBM0FBQXRRUUlBQUFBQUFHMDcK
QWdBQUFRQUFIUzBDQUFBNkFBQTlKZ0lBQURjQUFDMGFBZ0FBQXdBQUhSQUNBQUFDQUFCdC93RUFB
QUVBQUIzMUFRQUFBQUFBYmNzQgpBQUE3QUFBdHdRRUFBQVlBQUIyNkFRQUFCUUFBSGJNQkFBQUVB
QUFkWndFQUFBSUFBRzFoQVFBQUF3QUFIVk1CQUFBNUFBQTlUQUVBCkFEY0FBQzAvQVFBQUFBQUFi
VGtCQUFBQkFBQWRLd0VBQURvQUFEMGtBUUFBTndBQUxSZ0JBQUFEQUFBZERnRUFBQUlBQUczOUFB
QUEKQVFBQUhmTUFBQUFBQUFCdHh3QUFBRHNBQUMyOUFBQUFCZ0FBSGJZQUFBQUZBQUFkcndBQUFB
UUFBQjJOQUFBQUFnQUFiWWNBQUFBRApBQUFkZVFBQUFEa0FBRDF5QUFBQU53QUFMV1VBQUFBQUFB
QnRYd0FBQUFFQUFCMVJBQUFBT2dBQVBVb0FBQUEzQUFBdFBnQUFBQU1BCkFCMDBBQUFBQWdBQWJT
Y0FBQUFCQUFBZEhRQUFBQUFBQUcyM0FBQUFOZ0FBUFp3QUFBQXpBQUF0YXdBQUFEZ0FBQzFkQUFB
QUxnQUEKTFV3QUFBQXRBQUFkT1FBQUFDNEFBQzBuQUFBQUxRQUFIUllBQUFBNEFBQXRrQUFBQUNZ
QUFBNklBQUFBSkFBQURvQUFBQUFpQUFBTwplQUFBQUNvQUFBNXdBQUFBUEFBQURtZ0FBQUFhQUFB
T1lBQUFBQndBQUE1SUFBQUFQQUFBRGtBQUFBQThBQUFPT0FBQUFDQUFBQTR3CkFBQUFIZ0FBRGln
QUFBQVFBQUFPSUFBQUFCSUFBQTRZQUFBQUZBQUFEaEFBQUFBV0FBQU80aGNBQUFNQUFBYmFGd0FB
QXdBQUJyVVgKQUFBREFBQUdyUmNBQUFNQUFBYUtGd0FBQXdBQUJvSVhBQUFEQUFBR1J4Y0FBQU1B
QUFZL0Z3QUFBd0FBQmpBWEFBQURBQUFHS0JjQQpBQU1BQUFZTEZ3QUFBd0FBQmdNWEFBQURBQUFH
M3hZQUFBTUFBQWJYRmdBQUF3QUFCcFVXQUFBREFBQUdqUllBQUFNQUFBWitGZ0FBCkF3QUFCbllX
QUFBREFBQUdVeFlBQUFNQUFBWkxGZ0FBQXdBQUJod1dBQUFEQUFBR0ZCWUFBQU1BQUFieEZRQUFB
d0FBQnVrVkFBQUQKQUFBR3FCVUFBQU1BQUFhZ0ZRQUFBd0FBQm5nVkFBQURBQUFHY0JVQUFBTUFB
QVpGRlFBQUFRQUFCajBWQUFBQkFBQUdGeFVBQUFFQQpBQVlQRlFBQUFRQUFCdHdVQUFBQkFBQUcx
QlFBQUFFQUFBWllGQUFBQVFBQUJsQVVBQUFCQUFBR0NoUUFBQUVBQUFZQ0ZBQUFBUUFBCkJxTVRB
QUFCQUFBR214TUFBQUVBQUFadkV3QUFBUUFBQm1jVEFBQUJBQUFHK2hJQUFBRUFBQWJ5RWdBQUFR
QUFCcjRTQUFBQkFBQUcKdGhJQUFBRUFBQWFFRWdBQUFRQUFCbndTQUFBQkFBQUdhQklBQUFFQUFB
WmdFZ0FBQVFBQUJqMFNBQUFCQUFBR05SSUFBQUVBQUFiKwpFUUFBQVFBQUJ2WVJBQUFCQUFBR3NS
RUFBQUVBQUFhcEVRQUFBUUFBQm40UkFBQUJBQUFHZGhFQUFBRUFBQVpKRVFBQUFRQUFCa0VSCkFB
QUJBQUFHSEJFQUFBRUFBQVlVRVFBQUFRQUFCdWNRQUFBQkFBQUczeEFBQUFFQUFBWk9FQUFBQVFB
QUJrWVFBQUFCQUFBR0hCQUEKQUFFQUFBWVVFQUFBQVFBQUJ1Y1BBQUFCQUFBRzN3OEFBQUVBQUFh
NkR3QUFBUUFBQnJJUEFBQUJBQUFHaFE4QUFBRUFBQVo5RHdBQQpBUUFBQmdvUEFBQUJBQUFHQWc4
QUFBRUFBQWJHRGdBQUFRQUFCcjRPQUFBQkFBQUdrUTRBQUFFQUFBYUpEZ0FBQVFBQUJtUU9BQUFC
CkFBQUdYQTRBQUFFQUFBWXZEZ0FBQVFBQUJpY09BQUFCQUFBR3h3MEFBQUVBQUFhL0RRQUFBUUFB
QnBjTkFBQUJBQUFHancwQUFBRUEKQUFaaURRQUFBUUFBQmxvTkFBQUJBQUFHT3cwQUFBRUFBQVl6
RFFBQUFRQUFCZ1lOQUFBQkFBQUcvZ3dBQUFFQUFBYVpEQUFBQVFBQQpCcEVNQUFBQkFBQUc3UXNB
QUFVQUFBYllDd0FBQlFBQUJ2MENBQUFEQUFBR29BRUFBQUVBQUFicURBQUFBd0FBQnVJTUFBQURB
QUFHCnh3d0FBQU1BQUFhL0RBQUFBd0FBQnFRTUFBQURBQUFHbkF3QUFBTUFBQWFCREFBQUF3QUFC
bmtNQUFBREFBQUdYZ3dBQUFNQUFBWlcKREFBQUF3QUFCanNNQUFBREFBQUdNd3dBQUFNQUFBWVlE
QUFBQXdBQUJoQU1BQUFEQUFBR0JRd0FBQU1BQUFiOUN3QUFBd0FBQnVJTApBQUFEQUFBRzJnc0FB
QU1BQUFhL0N3QUFBd0FBQnJjTEFBQURBQUFHbkFzQUFBTUFBQWFVQ3dBQUF3QUFCbmtMQUFBREFB
QUdjUXNBCkFBTUFBQVpXQ3dBQUF3QUFCazRMQUFBREFBQUdNd3NBQUFNQUFBWXJDd0FBQXdBQUJo
QUxBQUFCQUFBR0NBc0FBQUVBQUFidENnQUEKQVFBQUJ1VUtBQUFCQUFBR3lnb0FBQUVBQUFiQ0Nn
QUFBUUFBQnFjS0FBQUJBQUFHbndvQUFBRUFBQWFFQ2dBQUFRQUFCbndLQUFBQgpBQUFHWVFvQUFB
RUFBQVpaQ2dBQUFRQUFCazRLQUFBQkFBQUdSZ29BQUFFQUFBWXFDZ0FBQVFBQUJpSUtBQUFCQUFB
R0Z3b0FBQUVBCkFBWVBDZ0FBQVFBQUJ2TUpBQUFCQUFBRzZ3a0FBQUVBQUFiZ0NRQUFBUUFBQnRn
SkFBQUJBQUFHdlFrQUFBRUFBQWExQ1FBQUFRQUEKQnFvSkFBQUJBQUFHb2drQUFBRUFBQWFYQ1FB
QUFRQUFCbzhKQUFBQkFBQUdkQWtBQUFFQUFBWnNDUUFBQVFBQUJsRUpBQUFCQUFBRwpTUWtBQUFF
QUFBWXVDUUFBQVFBQUJpWUpBQUFCQUFBR0N3a0FBQUVBQUFZRENRQUFBUUFBQnVnSUFBQUJBQUFH
NEFnQUFBRUFBQWJGCkNBQUFBUUFBQnIwSUFBQUJBQUFHb2dnQUFBRUFBQWFhQ0FBQUFRQUFCbjhJ
QUFBQkFBQUdkd2dBQUFFQUFBWmNDQUFBQVFBQUJsUUkKQUFBQkFBQUdPUWdBQUFFQUFBWXhDQUFB
QVFBQUJoWUlBQUFCQUFBR0RnZ0FBQUVBQUFZRENBQUFBUUFBQnZzSEFBQUJBQUFHNEFjQQpBQUVB
QUFiWUJ3QUFBUUFBQnMwSEFBQUJBQUFHeFFjQUFBRUFBQWFxQndBQUFRQUFCcUlIQUFBQkFBQUdo
d2NBQUFFQUFBWi9Cd0FBCkFRQUFCbVFIQUFBQkFBQUdYQWNBQUFFQUFBWkJCd0FBQVFBQUJqa0hB
QUFCQUFBR0hnY0FBQUVBQUFZV0J3QUFBUUFBQnZzR0FBQUIKQUFBRzh3WUFBQUVBQUFib0JnQUFB
UUFBQnVBR0FBQUJBQUFHeFFZQUFBRUFBQWE5QmdBQUFRQUFCcUlHQUFBQkFBQUdtZ1lBQUFFQQpB
QWFQQmdBQUFRQUFCb2NHQUFBQkFBQUdiQVlBQUFFQUFBWmtCZ0FBQVFBQUJra0dBQUFCQUFBR1FR
WUFBQUVBQUFZMkJnQUFBUUFBCkJpNEdBQUFCQUFBR0V3WUFBQUVBQUFZTEJnQUFBUUFBQnZBRkFB
QUJBQUFHNkFVQUFBRUFBQWJOQlFBQUFRQUFCc1VGQUFBQkFBQUcKcWdVQUFBRUFBQWFpQlFBQUFR
QUFCb2NGQUFBQkFBQUdmd1VBQUFFQUFBWmtCUUFBQVFBQUJsd0ZBQUFCQUFBR1FRVUFBQUVBQUFZ
NQpCUUFBQVFBQUJpNEZBQUFCQUFBR0pnVUFBQUVBQUFZS0JRQUFBUUFBQmdJRkFBQUJBQUFHOXdR
QUFBRUFBQWJ2QkFBQUFRQUFCdFFFCkFBQUJBQUFHekFRQUFBRUFBQWJCQkFBQUFRQUFCcmtFQUFB
QkFBQUduUVFBQUFFQUFBYVZCQUFBQVFBQUJvb0VBQUFCQUFBR2dnUUEKQUFFQUFBWm5CQUFBQVFB
QUJsOEVBQUFCQUFBR1ZBUUFBQUVBQUFaTUJBQUFBUUFBQmpFRUFBQUJBQUFHS1FRQUFBRUFBQVll
QkFBQQpBUUFBQmhZRUFBQUJBQUFHK3dNQUFBRUFBQWJ6QXdBQUFRQUFCdGdEQUFBQkFBQUcwQU1B
QUFFQUFBYTFBd0FBQVFBQUJxMERBQUFCCkFBQUdrZ01BQUFFQUFBYUtBd0FBQVFBQUJtOERBQUFC
QUFBR1p3TUFBQUVBQUFaTUF3QUFBUUFBQmtRREFBQUJBQUFHT1FNQUFBRUEKQUFZeEF3QUFBUUFB
QmhZREFBQUJBQUFHRGdNQUFBRUFBQVlEQXdBQUFRQUFCdnNDQUFBQkFBQUc0QUlBQUFFQUFBYllB
Z0FBQVFBQQpCczBDQUFBQkFBQUd4UUlBQUFFQUFBYXFBZ0FBQVFBQUJxSUNBQUFCQUFBR2x3SUFB
QUVBQUFhUEFnQUFBUUFBQm5RQ0FBQUJBQUFHCmJBSUFBQUVBQUFaUkFnQUFBUUFBQmtrQ0FBQUJB
QUFHTGdJQUFBRUFBQVltQWdBQUFRQUFCZ3NDQUFBQkFBQUdBd0lBQUFFQUFBYm8KQVFBQUFRQUFC
dUFCQUFBQkFBQUd4UUVBQUFFQUFBYTlBUUFBQVFBQUJySUJBQUFCQUFBR3FnRUFBQUVBQUFhUEFR
QUFBUUFBQm9jQgpBQUFCQUFBR2ZBRUFBQUVBQUFaMEFRQUFBUUFBQmxrQkFBQUJBQUFHVVFFQUFB
RUFBQVkyQVFBQUFRQUFCaTRCQUFBQkFBQUdFd0VBCkFBRUFBQVlMQVFBQUFRQUFCdkFBQUFBQkFB
QUc2QUFBQUFFQUFBYk5BQUFBQVFBQUJzVUFBQUFCQUFBR3FnQUFBQUVBQUFhaUFBQUEKQVFBQUJw
Y0FBQUFCQUFBR2p3QUFBQUVBQUFaMEFBQUFBUUFBQm13QUFBQUJBQUFHVVFBQUFBRUFBQVpKQUFB
QUFRQUFCajRBQUFBQgpBQUFHTmdBQUFBRUFBQVliQUFBQUFRQUFCaE1BQUFBQkFBQUdDQUFBQUFF
QUFBWUFBQUFBQVFBQUJxZ0FBQUFCQUFBR29BQUFBQUVBCkFBYVlBQUFBQVFBQUJwQUFBQUFCQUFB
R2VBQUFBQUVBQUFad0FBQUFBUUFBQm1nQUFBQUJBQUFHWUFBQUFBRUFBQVpJQUFBQUFRQUEKQmtB
QUFBQUJBQUFHT0FBQUFBRUFBQVl3QUFBQUFRQUFCaGdBQUFBQkFBQUdFQUFBQUFFQUFBWUlBQUFB
QVFBQUJnQUFBQUFCQUFBRwpGUUlBQUFNQUFBWUFBZ0FBQXdBQUJ2UUJBQUFEQUFBRzN3RUFBQU1B
QUFiVEFRQUFBd0FBQnI0QkFBQURBQUFHc2dFQUFBTUFBQWFkCkFRQUFBd0FBQm9nQkFBQUJBQUFH
Y3dFQUFBRUFBQVplQVFBQUFRQUFCbElCQUFBQkFBQUdQUUVBQUFFQUFBWW9BUUFBQVFBQUJoTUIK
QUFBQkFBQUdCd0VBQUFFQUFBYjdBQUFBQVFBQUJ1OEFBQUFCQUFBRzJnQUFBQUVBQUFiT0FBQUFB
UUFBQnNJQUFBQUJBQUFHdGdBQQpBQUVBQUFhaEFBQUFBUUFBQnBVQUFBQUJBQUFHaVFBQUFBRUFB
QVo5QUFBQUFRQUFCbkVBQUFBQkFBQUdaUUFBQUFFQUFBWlpBQUFBCkFRQUFCazBBQUFBQkFBQUdP
QUFBQUFFQUFBWXNBQUFBQVFBQUJpQUFBQUFCQUFBR0ZBQUFBQUVBQUFaQUFnQUFFZ0FBVkVBQ0FB
QVMKQUFBRVBBSUFBQklBQUZROEFnQUFFZ0FBQkRnQ0FBQVNBQUJVT0FJQUFCSUFBQVEwQWdBQUVn
QUFWRFFDQUFBU0FBQUVNQUlBQUJJQQpBRlF3QWdBQUVnQUFCQ3dDQUFBU0FBQlVMQUlBQUJJQUFB
UW9BZ0FBRWdBQVZDZ0NBQUFTQUFBRUpBSUFBQklBQUZRa0FnQUFFZ0FBCkJDQUNBQUFTQUFCVUlB
SUFBQklBQUFRY0FnQUFFZ0FBVkJ3Q0FBQVNBQUFFR0FJQUFCSUFBRlFZQWdBQUVnQUFCQlFDQUFB
U0FBQlUKRkFJQUFCSUFBQVFRQWdBQUVnQUFWQkFDQUFBU0FBQUVEQUlBQUJJQUFGUU1BZ0FBRWdB
QUJBZ0NBQUFTQUFCVUNBSUFBQklBQUFRRQpBZ0FBRWdBQVZBUUNBQUFTQUFBRUFBSUFBQklBQUZR
QUFnQUFFZ0FBQlB3QkFBQVNBQUJVL0FFQUFCSUFBQVQ0QVFBQUVnQUFWUGdCCkFBQVNBQUFFOUFF
QUFCSUFBRlQwQVFBQUVnQUFCUEFCQUFBU0FBQlU4QUVBQUJJQUFBVHNBUUFBRWdBQVZPd0JBQUFT
QUFBRTZBRUEKQUJJQUFGVG9BUUFBRWdBQUJPUUJBQUFTQUFCVTVBRUFBQklBQUFUZ0FRQUFFZ0FB
Vk9BQkFBQVNBQUFFM0FFQUFCSUFBRlRjQVFBQQpFZ0FBQk5nQkFBQVNBQUJVMkFFQUFCSUFBQVRV
QVFBQUVnQUFWTlFCQUFBU0FBQUUwQUVBQUJJQUFGVFFBUUFBRWdBQUJNd0JBQUFTCkFBQlV6QUVB
QUJJQUFBVElBUUFBRWdBQVZNZ0JBQUFTQUFBRXhBRUFBQklBQUZURUFRQUFFZ0FBQk1BQkFBQVNB
QUJVd0FFQUFCSUEKQUFTOEFRQUFFZ0FBVkx3QkFBQVNBQUFFdUFFQUFCSUFBRlM0QVFBQUVnQUFC
TFFCQUFBU0FBQlV0QUVBQUJJQUFBU3dBUUFBRWdBQQpWTEFCQUFBU0FBQUVyQUVBQUJJQUFGU3NB
UUFBRWdBQUJLZ0JBQUFTQUFCVXFBRUFBQklBQUFTa0FRQUFFZ0FBVktRQkFBQVNBQUFFCm9BRUFB
QklBQUZTZ0FRQUFFZ0FBQkp3QkFBQVNBQUJVbkFFQUFCSUFBQVNZQVFBQUVnQUFWSmdCQUFBU0FB
QUVsQUVBQUJJQUFGU1UKQVFBQUVnQUFCSkFCQUFBU0FBQlVrQUVBQUJJQUFBU01BUUFBRWdBQVZJ
d0JBQUFTQUFBRWlBRUFBQklBQUZTSUFRQUFFZ0FBQklRQgpBQUFTQUFCVWhBRUFBQklBQUFTQUFR
QUFFZ0FBVklBQkFBQVNBQUFFZkFFQUFCSUFBRlI4QVFBQUVnQUFCSGdCQUFBU0FBQlVlQUVBCkFC
SUFBQVIwQVFBQUVnQUFWSFFCQUFBU0FBQUVjQUVBQUJJQUFGUndBUUFBRWdBQUJHd0JBQUFTQUFC
VWJBRUFBQklBQUFSb0FRQUEKRWdBQVZHZ0JBQUFTQUFBRUtBQUFBQlFBQUZRb0FBQUFGQUFBQkZn
QkFBQVZBQUJVV0FFQUFCVUFBQVJVQVFBQUZRQUFWRlFCQUFBVgpBQUFFVUFFQUFCVUFBRlJRQVFB
QUZRQUFCRXdCQUFBVkFBQlVUQUVBQUJVQUFBUklBUUFBRlFBQVZFZ0JBQUFWQUFBRVJBRUFBQlVB
CkFGUkVBUUFBRlFBQUJFQUJBQUFWQUFCVVFBRUFBQlVBQUFROEFRQUFGUUFBVkR3QkFBQVZBQUFF
T0FFQUFCVUFBRlE0QVFBQUZRQUEKQkRRQkFBQVZBQUJVTkFFQUFCVUFBQVF3QVFBQUZRQUFWREFC
QUFBVkFBQUVMQUVBQUJVQUFGUXNBUUFBRlFBQUJDZ0JBQUFWQUFCVQpLQUVBQUJVQUFBUWtBUUFB
RlFBQVZDUUJBQUFWQUFBRUlBRUFBQlVBQUZRZ0FRQUFGUUFBQkJ3QkFBQVZBQUJVSEFFQUFCVUFB
QVFZCkFRQUFGUUFBVkJnQkFBQVZBQUFFRkFFQUFCVUFBRlFVQVFBQUZRQUFCQkFCQUFBVkFBQlVF
QUVBQUJVQUFBUU1BUUFBRlFBQVZBd0IKQUFBVkFBQUVDQUVBQUJVQUFGUUlBUUFBRlFBQUJBUUJB
QUFWQUFCVUJBRUFBQlVBQUFRQUFRQUFGUUFBVkFBQkFBQVZBQUFFL0FBQQpBQlVBQUZUOEFBQUFG
UUFBQlBnQUFBQVZBQUJVK0FBQUFCVUFBQVQwQUFBQUZRQUFWUFFBQUFBVkFBQUU4QUFBQUJVQUFG
VHdBQUFBCkZRQUFCT3dBQUFBVkFBQlU3QUFBQUJVQUFBVG9BQUFBRlFBQVZPZ0FBQUFWQUFBRTVB
QUFBQlVBQUZUa0FBQUFGUUFBQk9BQUFBQVYKQUFCVTRBQUFBQlVBQUFRZ0FnQUFBd0FBQmdBQ0FB
QURBQUFHNEFFQUFBTUFBQWJBQVFBQUF3QUFCcUFCQUFBREFBQUdnQUVBQUFNQQpBQVpnQVFBQUFR
QUFCa0FCQUFBQkFBQUdJQUVBQUFFQUFBWUFBUUFBQVFBQUJ1QUFBQUFCQUFBR3dBQUFBQUVBQUFh
Z0FBQUFBUUFBCkJvQUFBQUFCQUFBR1lBQUFBQUVBQUFaQUFBQUFBUUFBQmlBQUFBQUJBQUFHQUFB
QUFBRUFBQWJIQmdBQURnVUFBTGhaQUFBQUFBQUEKOVFZQUFBNEZBQUN3V1FBQUFBQUFBQ0VIQUFB
T0JRQUFxRmtBQUFBQUFBQk5Cd0FBRGdVQUFLQlpBQUFBQUFBQWR3Y0FBQTRHQUFDbwpCd0FBQUFB
QUFKa0hBQUFPQmdBQXVRY0FBQUFBQUFDZ0J3QUFEZ1lBQUFJSUFBQUFBQUFBcUFjQUFBNFhBQUN3
VmdBQUFBQUFBSjBBCkFBQWZBUUFBNEFJQUFBQUFBQUE2QkFBQUh4Y0FBRWhYQUFBQUFBQUFpZ0FB
QUI4QkFBRFFBUUFBQUFBQUFDUUVBQUFmRndBQUdGY0EKQUFBQUFBQjBBQUFBSHdFQUFOQUFBQUFB
QUFBQUN3UUFBQjhYQUFEd1ZnQUFBQUFBQUFFQUFBQWZBUUFBQUFBQUFBQUFBQUR5QXdBQQpIeGNB
QU1oV0FBQUFBQUFBa1FJQUFCOEJBQURBQlFBQUFBQUFBTG9GQUFBZkZ3QUFpRmdBQUFBQUFBRDhB
UUFBSHdFQUFOQUVBQUFBCkFBQUFLQVVBQUI4WEFBQVFXQUFBQUFBQUFPd0NBQUFmQTRBQVVBWUFB
QUFBQUFBYkJnQUFIeGVBQU5oWUFBQUFBQUFBMUFJQUFCOEQKZ0FCQUJnQUFBQUFBQUFBR0FBQWZG
NEFBc0ZnQUFBQUFBQURKQVFBQUh3RUFBTEFFQUFBQUFBQUEvUVFBQUI4WEFBRG9Wd0FBQUFBQQpB
RWdEQUFBZkE0QUFnQVlBQUFBQUFBQlNCZ0FBSHhlQUFDaFpBQUFBQUFBQUdRTUFBQjhEZ0FCZ0Jn
QUFBQUFBQURZR0FBQWZGNEFBCkFGa0FBQUFBQUFBdUFnQUFId0VBQURBRkFBQUFBQUFBWFFVQUFC
OFhBQUE0V0FBQUFBQUFBR0VDQUFBZkFRQUFrQVVBQUFBQUFBQ1QKQlFBQUh4Y0FBR0JZQUFBQUFB
QUFwQU1BQUI4RGdBRHdCZ0FBQUFBQUFKOEdBQUFmRjRBQWVGa0FBQUFBQUFDMUFBQUFId0VBQVBB
RApBQUFBQUFBQVZRUUFBQjhYQUFCd1Z3QUFBQUFBQUZRQkFBQWZBUUFBa0FRQUFBQUFBQUNhQkFB
QUh4Y0FBSmhYQUFBQUFBQUFxd0VBCkFCOEJBQUNnQkFBQUFBQUFBTndFQUFBZkZ3QUF3RmNBQUFB
QUFBQmhBd0FBSHdPQUFMQUdBQUFBQUFBQWJnWUFBQjhYZ0FCUVdRQUEKQUFBQUFNa0RBQUFmQkFB
QUVBY0FBQUFBQUFBeUF3QUFId1FBQUdBSEFBQUFBQUFBOFFFQUFBRUFBQUFBQUFBQUFBQUFBSk1C
QUFBQgpBQUFBQUFBQUFBQUFBQUQzQUFBQUFRQUFBQUFBQUFBQUFBQUFRUUVBQUFFQUFBQUFBQUFB
QUFBQUFDb0JBQUFCQUFBQUFBQUFBQUFBCkFBQ1BBd0FBQVFBQUFBQUFBQUFBQUFBQUd3RUFBQUVB
QUFBQUFBQUFBQUFBQUF3QkFBQUJBQUFBQUFBQUFBQUFBQUNGQWdBQUFRQUEKQUFBQUFBQUFBQUFB
RndBQUFBRUFBQUFBQUFBQUFBQUFBQVFEQUFBQkFBQUFBQUFBQUFBQUFBQkxBQUFBQVFBQUFBQUFB
QUFBQUFBQQpMZ0FBQUFFQUFBQUFBQUFBQUFBQUFHWUFBQUFCQUFBQUFBQUFBQUFBQUFEZUF3QUFB
UUFBQUFBQUFBQUFBQUFBQUY5WFMwMWxZWE4xCmNtVk5aV1JwWVZWSlVHRnlkQUJmWDFwT00xZFVS
akV3Wm1GemRFMWhiR3h2WTBWdEFGOWZXbFJXTWpGTlpXUnBZVk5vWVhKbFpGVkoKUTI5dWRISnZi
SE1BWDE5YVZGWXhPVTFsWkdsaFRHVm5ZV041UTI5dWRISnZiSE1BWDE5ZllYTnpaWEowWDNKMGJn
QmZWMHRJYVhSVQpaWE4wVFdWa2FXRlZTVkJoY25RQVgxZExSSEpoZDAxbFpHbGhWVWxRWVhKMEFG
OVhTMFJ5WVhkTlpXUnBZVk5zYVdSbGNsUnlZV05yCkFGOWZXazVMTVRSTlpXUnBZVlZKUld4bGJX
VnVkREl6YzJWMFZYQkRiMjUwWlhoMFJtOXlVR0ZwYm5ScGJtZEZVRGxEUjBOdmJuUmwKZUhRMlEw
ZFNaV04wQUY5RFIwTnZiblJsZUhSVFlYWmxSMU4wWVhSbEFGOURSMUpsWTNSSFpYUk5hVzVaQUY5
RFIxSmxZM1JIWlhSTgpZWGhaQUY5RFIwTnZiblJsZUhSVWNtRnVjMnhoZEdWRFZFMEFYME5IUTI5
dWRHVjRkRk5qWVd4bFExUk5BRjlmV2s1TE1UUk5aV1JwCllWVkpSV3hsYldWdWRESTNjbVZ6ZEc5
eVpVTnZiblJsZUhSQlpuUmxjbEJoYVc1MGFXNW5SVkE1UTBkRGIyNTBaWGgwQUY5RFIwTnYKYm5S
bGVIUlNaWE4wYjNKbFIxTjBZWFJsQUY5ZldrNUxNVFJOWldScFlWVkpSV3hsYldWdWREVnNZWGxs
Y2tWMkFGOWZXazR4TkUxbApaR2xoVlVsRmJHVnRaVzUwT0hObGRFeGhlV1Z5UlZBM1EwZE1ZWGxs
Y2dCZlEwWlNaV3hsWVhObEFGOWZXazR4TTAxbFpHbGhRMjl1CmRISnZiSE00WkhKaGQxQmhjblJG
YVZBNVEwZERiMjUwWlhoME5rTkhVbVZqZEdvQVgxOWFUa3N4TTAxbFpHbGhRMjl1ZEhKdmJITXgK
TVdocGRGUmxjM1JRWVhKMFJXazJRMGRTWldOME4wTkhVRzlwYm5RQVgxOWFUa3N4TTAxbFpHbGhR
Mjl1ZEhKdmJITXhNVzVoZEhWeQpZV3hUYVhwbFJXa0FYME5IVTJsNlpWcGxjbThBWDE5YVRqRXpU
V1ZrYVdGRGIyNTBjbTlzY3pJelpISmhkMVJwYldWc2FXNWxVMnhwClpHVnlWSEpoWTJ0RlVEbERS
ME52Ym5SbGVIUTJRMGRTWldOMFpHUnFBRjlmV2s0eE0wMWxaR2xoUTI5dWRISnZiSE5FTVVWMkFG
OWYKV2s0eE0wMWxaR2xoUTI5dWRISnZiSE5FTUVWMkFGOWZXazR6VjFSR09HWmhjM1JHY21WbFJW
QjJBRjlmV2s0eE5FMWxaR2xoVlVsRgpiR1Z0Wlc1MFJERkZkZ0JmWDFwVVZqRTBUV1ZrYVdGVlNV
VnNaVzFsYm5RQVgxOWFUakUwVFdWa2FXRlZTVVZzWlcxbGJuUkVNRVYyCkFGOWZXazVMTVRSTlpX
UnBZVlZKUld4bGJXVnVkRGRvYVhSVVpYTjBSVFpEUjFKbFkzUTNRMGRRYjJsdWRBQmZRMGRTWldO
MFEyOXUKZEdGcGJuTlFiMmx1ZEFCZlgxcE9TekUwVFdWa2FXRlZTVVZzWlcxbGJuUXhNVzVoZEhW
eVlXeFRhWHBsUlhZQVgxOWFWRll4TTAxbApaR2xoUTI5dWRISnZiSE1BWDE5ZlkzaGhYM0IxY21W
ZmRtbHlkSFZoYkFCZlYwdE5aV0Z6ZFhKbFRXVmthV0ZWU1ZCaGNuUXVaV2dBClgxZExTR2wwVkdW
emRFMWxaR2xoVlVsUVlYSjBMbVZvQUY5WFMwUnlZWGROWldScFlWVkpVR0Z5ZEM1bGFBQmZWMHRF
Y21GM1RXVmsKYVdGVGJHbGtaWEpVY21GamF5NWxhQUJmWDFwT1N6RTBUV1ZrYVdGVlNVVnNaVzFs
Ym5ReU0zTmxkRlZ3UTI5dWRHVjRkRVp2Y2xCaAphVzUwYVc1blJWQTVRMGREYjI1MFpYaDBOa05I
VW1WamRDNWxhQUJmWDFwT1N6RTBUV1ZrYVdGVlNVVnNaVzFsYm5ReU4zSmxjM1J2CmNtVkRiMjUw
WlhoMFFXWjBaWEpRWVdsdWRHbHVaMFZRT1VOSFEyOXVkR1Y0ZEM1bGFBQmZYMXBPU3pFMFRXVmth
V0ZWU1VWc1pXMWwKYm5RMWJHRjVaWEpGZGk1bGFBQmZYMXBPTVRSTlpXUnBZVlZKUld4bGJXVnVk
RGh6WlhSTVlYbGxja1ZRTjBOSFRHRjVaWEl1WldnQQpYMTlhVGpFelRXVmthV0ZEYjI1MGNtOXNj
emhrY21GM1VHRnlkRVZwVURsRFIwTnZiblJsZUhRMlEwZFNaV04wYWk1bGFBQmZYMXBPClN6RXpU
V1ZrYVdGRGIyNTBjbTlzY3pFeGFHbDBWR1Z6ZEZCaGNuUkZhVFpEUjFKbFkzUTNRMGRRYjJsdWRD
NWxhQUJmWDFwT1N6RXoKVFdWa2FXRkRiMjUwY205c2N6RXhibUYwZFhKaGJGTnBlbVZGYVM1bGFB
QmZYMXBPTVROTlpXUnBZVU52Ym5SeWIyeHpNak5rY21GMwpWR2x0Wld4cGJtVlRiR2xrWlhKVWNt
RmphMFZRT1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1JrWkdvdVpXZ0FYMTlhVGpFelRXVmthV0ZECmIy
NTBjbTlzYzBReFJYWXVaV2dBWDE5YVRqRXpUV1ZrYVdGRGIyNTBjbTlzYzBRd1JYWXVaV2dBWDE5
YVRqRTBUV1ZrYVdGVlNVVnMKWlcxbGJuUkVNVVYyTG1Wb0FGOWZXazR4TkUxbFpHbGhWVWxGYkdW
dFpXNTBSREJGZGk1bGFBQmZYMXBPU3pFMFRXVmthV0ZWU1VWcwpaVzFsYm5RM2FHbDBWR1Z6ZEVV
MlEwZFNaV04wTjBOSFVHOXBiblF1WldnQVgxOWFUa3N4TkUxbFpHbGhWVWxGYkdWdFpXNTBNVEZ1
CllYUjFjbUZzVTJsNlpVVjJMbVZvQUY5ZldrZFdXa3d4Tm1OdmJuUnliMnh6Um05eVZHaGxiV1Zw
UlRFMmMyaGhjbVZrVlVsRGIyNTAKY205c2N3QmZYMXBhVERFMlkyOXVkSEp2YkhOR2IzSlVhR1Z0
WldsRk1UWnphR0Z5WldSVlNVTnZiblJ5YjJ4ekFGOWZXa2RXV2t3eApObU52Ym5SeWIyeHpSbTl5
VkdobGJXVnBSVEUwYkdWbllXTjVRMjl1ZEhKdmJITUFYMTlhV2t3eE5tTnZiblJ5YjJ4elJtOXlW
R2hsCmJXVnBSVEUwYkdWbllXTjVRMjl1ZEhKdmJITUFURjlmWDJaMWJtTmZYeTVmV2t3eE5tTnZi
blJ5YjJ4elJtOXlWR2hsYldWcEFFeGYKTG5OMGNnQk1YeTV6ZEhJeEFFVklYMlp5WVcxbE1BQUFB
QW9LQ2dvak1TOHlNQ0FnSUNBZ0lDQWdJQ0FnTVRNM01UYzNOakF6TkNBZwpOVEF4SUNBZ01qQWdJ
Q0FnTVRBd05qUTBJQ0F5TlRVNU9EZ2dJQ0FnWUFwVGFHRnlaV1JOWldScFlWVkpMbThBQUFBQUFN
LzY3ZjRICkFBQUJBd0FBQUFFQUFBQURBQUFBTUFnQUFBQWdBQUFBQUFBQUdRQUFBTWdIQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFDSjNRSUFBQUFBQUZBSUFBQUFBQUFBME5rQ0FB
QUFBQUFIQUFBQUJ3QUFBQmdBQUFBQUFBQUFYMTkwWlhoMEFBQUFBQUFBQUFBQQpBRjlmVkVWWVZB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDdHhBQUFBQUFBQVVBZ0FBQVFBQUFBZzRnSUFXUVFBQUFB
RUFJQUFBQUFBCkFBQUFBQUFBQUFCZlgyeHBkR1Z5WVd3NEFBQUFBQUFBWDE5VVJWaFVBQUFBQUFB
QUFBQUFBREJ4QUFBQUFBQUF3QUlBQUFBQUFBQ0EKZVFBQUF3QUFBQUFBQUFBQUFBQUFCQUFBQUFB
QUFBQUFBQUFBQUFBQUFGOWZZMjl1YzNRQUFBQUFBQUFBQUFCZlgxUkZXRlFBQUFBQQpBQUFBQUFB
QThITUFBQUFBQUFBWHl3QUFBQUFBQUVCOEFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFYMTkwClpYaDBZMjloYkY5dWRBQUFBRjlmVkVWWVZBQUFBQUFBQUFBQUFBQVFQd0VB
QUFBQUFJNEZBQUFBQUFBQVlFY0JBQVFBQUFEb0JBTUEKUEFBQUFBc0VBSUFBQUFBQUFBQUFBQUFB
QUFCZlgyTnZibk4wQUFBQUFBQUFBQUFBWDE5RVFWUkJBQUFBQUFBQUFBQUFBS0JFQVFBQQpBQUFB
WUFNQUFBQUFBQUR3VEFFQUJBQUFBTWdHQXdCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGOWZZ
bk56QUFBQUFBQUFBQUFBCkFBQmZYMFJCVkVFQUFBQUFBQUFBQUFBQTBOa0NBQUFBQUFDNUF3QUFB
QUFBQUFBQUFBQURBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUEKQUFBQUFBQUFBQUFBWDE5a1lYUmhB
QUFBQUFBQUFBQUFBRjlmUkVGVVFRQUFBQUFBQUFBQUFBQUFTQUVBQUFBQUFIQUJBQUFBQUFBQQpV
RkFCQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCZlgyUmhkR0ZqYjJGc1gy
NTBBQUFBWDE5RVFWUkJBQUFBCkFBQUFBQUFBQUhCSkFRQUFBQUFBVUFBQUFBQUFBQURBVVFFQUJB
QUFBRWdKQXdBSUFBQUFDd0FBQUFBQUFBQUFBQUFBQUFBQUFGOWYKWkdWaWRXZGZhVzVtYndBQUFB
QmZYMFJYUVZKR0FBQUFBQUFBQUFBQXdFa0JBQUFBQUFBT2ZBQUFBQUFBQUJCU0FRQUFBQUFBaUFr
RApBRklEQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBWDE5a1pXSjFaMTloWW1KeVpYWUFBRjlmUkZk
QlVrWUFBQUFBQUFBQUFBRE94UUVBCkFBQUFBQmNHQUFBQUFBQUFIczRCQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFCZlgyUmxZblZuWDJGeVlXNW4KWlhNQVgxOUVWMEZTUmdB
QUFBQUFBQUFBQU9YTEFRQUFBQUFBQUFBQUFBQUFBQUExMUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QWdBQQpBQUFBQUFBQUFBQUFBRjlmWkdWaWRXZGZiV0ZqYVc1bWJ3QmZYMFJYUVZKR0FBQUFBQUFB
QUFBQTVjc0JBQUFBQUFBQUFBQUFBQUFBCkFEWFVBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFB
QUFBQUFBQUFBQUFBWDE5a1pXSjFaMTlzYVc1bEFBQUFBRjlmUkZkQlVrWUEKQUFBQUFBQUFBQURs
eXdFQUFBQUFBUFFRQUFBQUFBQUFOZFFCQUFBQUFBQVlKQU1BQWdBQUFBQUFBQUlBQUFBQUFBQUFB
QUFBQUFCZgpYMlJsWW5WblgyeHZZd0FBQUFBQVgxOUVWMEZTUmdBQUFBQUFBQUFBQU5uY0FRQUFB
QUFBUUVrQUFBQUFBQUFwNVFFQUFBQUFBQ2drCkF3RGtCQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFB
RjlmWkdWaWRXZGZjSFZpZEhsd1pYTmZYMFJYUVZKR0FBQUFBQUFBQUFBQUdTWUMKQUFBQUFBRElB
Z0FBQUFBQUFHa3VBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBWDE5a1pX
SjFaMTl6ZEhJQQpBQUFBQUY5ZlJGZEJVa1lBQUFBQUFBQUFBQURoS0FJQUFBQUFBSGhLQUFBQUFB
QUFNVEVDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBCkFBQUFBQUFBQUFBQUFBQmZYMlJsWW5Wblgz
SmhibWRsY3dBQVgxOUVWMEZTUmdBQUFBQUFBQUFBQUZsekFnQUFBQUFBOEFvQUFBQUEKQUFDcGV3
SUFBQUFBQUVoTEF3RHlBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBRjlmWkdWaWRXZGZhVzVzYVc1
bFpBQmZYMFJYUVZKRwpBQUFBQUFBQUFBQUFTWDRDQUFBQUFBREVFZ0FBQUFBQUFKbUdBZ0FBQUFB
QTJGSURBRTBCQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBClgxOWhjSEJzWlY5dVlXMWxjd0FBQUY5
ZlJGZEJVa1lBQUFBQUFBQUFBQUFOa1FJQUFBQUFBQlFwQUFBQUFBQUFYWmtDQUFBQUFBQkEKWFFN
QVpnSUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQmZYMkZ3Y0d4bFgyOWlhbU1BQUFBQVgxOUVWMEZT
UmdBQUFBQUFBQUFBQUNHNgpBZ0FBQUFBQUpBQUFBQUFBQUFCeHdnSUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFnQUFBQUFBQUFBQUFBQUFBRjlmWVhCd2JHVmZibUZ0ClpYTndZV05mWDBSWFFWSkdBQUFB
QUFBQUFBQUFSYm9DQUFBQUFBQkVBQUFBQUFBQUFKWENBZ0FBQUFBQWNIQURBQUlBQUFBQUFBQUMK
QUFBQUFBQUFBQUFBQUFBQVgxOWhjSEJzWlY5MGVYQmxjd0FBQUY5ZlJGZEJVa1lBQUFBQUFBQUFB
QUNKdWdJQUFBQUFBT3NHQUFBQQpBQUFBMmNJQ0FBQUFBQUNBY0FNQWRBQUFBQUFBQUFJQUFBQUFB
QUFBQUFBQUFBQmZYMk52YlhCaFkzUmZkVzUzYVc1a1gxOU1SQUFBCkFBQUFBQUFBQUFBQUFIakJB
Z0FBQUFBQWdBb0FBQUFBQUFESXlRSUFBd0FBQUNCMEF3QlVBQUFBQUFBQUFnQUFBQUFBQUFBQUFB
QUEKQUY5ZlpXaGZabkpoYldVQUFBQUFBQUJmWDFSRldGUUFBQUFBQUFBQUFBQUErTXNDQUFBQUFB
RFlEUUFBQUFBQUFFalVBZ0FEQUFBQQpBQUFBQUFBQUFBQUxBQUJvQUFBQUFBQUFBQUFBQUFBQUFn
QUFBQmdBQUFEQWRnTUFxQUVBQUVDUkF3Q2dWZ0FBQ3dBQUFGQUFBQUFBCkFBQUFuUUFBQUowQUFB
Q2xBQUFBUWdFQUFHWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQlZTSW5sU01kSEVBQUFBQUJJalFVUUFBQUFTSWtIeDBj
WUFBQUFBRWlMQlFBQUFBQklpMGdZU0lsUApPRWlMU0JCSWlVOHdTSXNJU0l0QUNFaUpSeWhJaVU4
Z1hjTm1aaTRQSDRRQUFBQUFBRlZJaWVWSXgwY1FBQUFBQUVpTkJSQUFBQUJJCmlRZkhSeGdBQUFB
QVNJc0ZBQUFBQUVpTFNCaElpVTg0U0l0SUVFaUpUekJJaXdoSWkwQUlTSWxIS0VpSlR5QmR3Mlpt
TGc4ZmhBQUEKQUFBQVZVaUo1Vk5RU0luN2lnVUFBQUFBaE1CMUh2SVBFQVYxY0FBQUR5akk2QUFB
QUFCSWlRVUFBQUFBeGdYLy8vLy9BWUE5Ly8vLwovd0YxQ1VpTEJRQUFBQURyUTRBOS8vLy8vd0Yx
Q1VpTEJRQUFBQURySS9JUEVBVXpjQUFBOGc4UURUTndBQURvQUFBQUFFaUpCUUFBCkFBREdCZi8v
Ly84QlNJa0ZBQUFBQU1ZRi8vLy8vd0dEZXhnQWRRZElpd1VBQUFBQVNJUEVDRnRkdzJZUEgwUUFB
RlZJaWVWQlZsT0wKVHdneHdFaUQrUm9QaDdFR0FBQklqUld2QmdBQVNHTU1pa2dCMGYvaGdEMy8v
Ly8vQVErRkJnRUFBRWlMQlFBQUFBRHBpQVlBQUlBOQovLy8vL3dFUGhXOEJBQUJJaXdVQUFBQUE2
VzhHQUFDQVBmLy8vLzhCRDRYWUFRQUFTSXNGQUFBQUFPbFdCZ0FBZ0QzLy8vLy9BUStGClFRSUFB
RWlMQlFBQUFBRHBQUVlBQUlBOS8vLy8vd0VQaGFvQ0FBQklpd1VBQUFBQTZTUUdBQUNBUGYvLy8v
OEJENFVUQXdBQVNJc0YKQUFBQUFPa0xCZ0FBZ0QzLy8vLy9BUStGZkFNQUFFaUxCUUFBQUFEcDhn
VUFBSUE5Ly8vLy93RVBoZVVEQUFCSWl3VUFBQUFBNmRrRgpBQUNBUGYvLy8vOEJENFZPQkFBQVNJ
c0ZBQUFBQU9uQUJRQUFnRDMvLy8vL0FRK0Z0d1FBQUVpTEJRQUFBQURwcHdVQUFJQTkvLy8vCi93
RVBoUjBGQUFCSWl3VUFBQUFBNlk0RkFBQklpd1VBQUFBQVNJWEFkV05JaXdVQUFBQUFTSXM0U0lz
RkFBQUFBRWlMQ0VpTk5RQUEKQUFDNloxTUFBT2dBQUFBQVNZbkdUSW4zNkFBQUFBQklpY05JaWQv
b0FBQUFBRWlKQlFBQUFBQkloZHQwQ0VpSjMrZ0FBQUFBVFlYMgpkQWhNaWZmb0FBQUFBRWlMQlFB
QUFBQklpUVVBQUFBQXhnWC8vLy8vQWVrTUJRQUFTSXNGQUFBQUFFaUZ3SFZqU0lzRkFBQUFBRWlM
Ck9FaUxCUUFBQUFCSWl3aElqVFVBQUFBQXVqa0lBQURvQUFBQUFFbUp4a3lKOStnQUFBQUFTSW5E
U0luZjZBQUFBQUJJaVFVQUFBQUEKU0lYYmRBaElpZC9vQUFBQUFFMkY5blFJVEluMzZBQUFBQUJJ
aXdVQUFBQUFTSWtGQUFBQUFNWUYvLy8vL3dIcGlnUUFBRWlMQlFBQQpBQUJJaGNCMVkwaUxCUUFB
QUFCSWl6aElpd1VBQUFBQVNJc0lTSTAxQUFBQUFMb1FDUUFBNkFBQUFBQkppY1pNaWZmb0FBQUFB
RWlKCncwaUozK2dBQUFBQVNJa0ZBQUFBQUVpRjIzUUlTSW5mNkFBQUFBQk5oZlowQ0V5SjkrZ0FB
QUFBU0lzRkFBQUFBRWlKQlFBQUFBREcKQmYvLy8vOEI2UWdFQUFCSWl3VUFBQUFBU0lYQWRXTklp
d1VBQUFBQVNJczRTSXNGQUFBQUFFaUxDRWlOTlFBQUFBQzZidzhBQU9nQQpBQUFBU1luR1RJbjM2
QUFBQUFCSWljTklpZC9vQUFBQUFFaUpCUUFBQUFCSWhkdDBDRWlKMytnQUFBQUFUWVgyZEFoTWlm
Zm9BQUFBCkFFaUxCUUFBQUFCSWlRVUFBQUFBeGdYLy8vLy9BZW1HQXdBQVNJc0ZBQUFBQUVpRndI
VmpTSXNGQUFBQUFFaUxPRWlMQlFBQUFBQkkKaXdoSWpUVUFBQUFBdW5jUEFBRG9BQUFBQUVtSnhr
eUo5K2dBQUFBQVNJbkRTSW5mNkFBQUFBQklpUVVBQUFBQVNJWGJkQWhJaWQvbwpBQUFBQUUyRjlu
UUlUSW4zNkFBQUFBQklpd1VBQUFBQVNJa0ZBQUFBQU1ZRi8vLy8vd0hwQkFNQUFFaUxCUUFBQUFC
SWhjQjFZMGlMCkJRQUFBQUJJaXpoSWl3VUFBQUFBU0lzSVNJMDFBQUFBQUxxQ0R3QUE2QUFBQUFC
SmljWk1pZmZvQUFBQUFFaUp3MGlKMytnQUFBQUEKU0lrRkFBQUFBRWlGMjNRSVNJbmY2QUFBQUFC
TmhmWjBDRXlKOStnQUFBQUFTSXNGQUFBQUFFaUpCUUFBQUFER0JmLy8vLzhCNllJQwpBQUJJaXdV
QUFBQUFTSVhBZFdOSWl3VUFBQUFBU0lzNFNJc0ZBQUFBQUVpTENFaU5OUUFBQUFDNjJRY0FBT2dB
QUFBQVNZbkdUSW4zCjZBQUFBQUJJaWNOSWlkL29BQUFBQUVpSkJRQUFBQUJJaGR0MENFaUozK2dB
QUFBQVRZWDJkQWhNaWZmb0FBQUFBRWlMQlFBQUFBQkkKaVFVQUFBQUF4Z1gvLy8vL0Fla0FBZ0FB
U0lzRkFBQUFBRWlGd0hWalNJc0ZBQUFBQUVpTE9FaUxCUUFBQUFCSWl3aElqVFVBQUFBQQp1cUFQ
QUFEb0FBQUFBRW1KeGt5SjkrZ0FBQUFBU0luRFNJbmY2QUFBQUFCSWlRVUFBQUFBU0lYYmRBaElp
ZC9vQUFBQUFFMkY5blFJClRJbjM2QUFBQUFCSWl3VUFBQUFBU0lrRkFBQUFBTVlGLy8vLy93SHBm
Z0VBQUVpTEJRQUFBQUJJaGNCMVkwaUxCUUFBQUFCSWl6aEkKaXdVQUFBQUFTSXNJU0kwMUFBQUFB
TG9SQ0FBQTZBQUFBQUJKaWNaTWlmZm9BQUFBQUVpSncwaUozK2dBQUFBQVNJa0ZBQUFBQUVpRgoy
M1FJU0luZjZBQUFBQUJOaGZaMENFeUo5K2dBQUFBQVNJc0ZBQUFBQUVpSkJRQUFBQURHQmYvLy8v
OEI2ZndBQUFCSWl3VUFBQUFBClNJWEFkV05JaXdVQUFBQUFTSXM0U0lzRkFBQUFBRWlMQ0VpTk5R
QUFBQUM2ZUE4QUFPZ0FBQUFBU1luR1RJbjM2QUFBQUFCSWljTkkKaWQvb0FBQUFBRWlKQlFBQUFB
QkloZHQwQ0VpSjMrZ0FBQUFBVFlYMmRBaE1pZmZvQUFBQUFFaUxCUUFBQUFCSWlRVUFBQUFBeGdY
LwovLy8vQWV0OVNJc0ZBQUFBQUVpRndIVmpTSXNGQUFBQUFFaUxPRWlMQlFBQUFBQklpd2hJalRV
QUFBQUF1am9JQUFEb0FBQUFBRW1KCnhreUo5K2dBQUFBQVNJbkRTSW5mNkFBQUFBQklpUVVBQUFB
QVNJWGJkQWhJaWQvb0FBQUFBRTJGOW5RSVRJbjM2QUFBQUFCSWl3VUEKQUFBQVNJa0ZBQUFBQU1Z
Ri8vLy8vd0ZiUVY1ZHczUDUvLytNK2YvL3Bmbi8vNzc1Ly8vWCtmLy8rLy8vLy92Ly8vL3crZi8v
Q2ZyLwovMXI1Ly85YStmLy9JdnIvL3p2Ni8vLzcvLy8vKy8vLy8vdi8vLy83Ly8vLysvLy8vL3Yv
Ly8vNy8vLy8rLy8vLy92Ly8vLzcvLy8vCisvLy8vL3YvLy8vNy8vLy9WUHIvL3c4ZmhBQUFBQUFB
VlVpSjVVRlhRVlpUU0lQc0tFbUo5MG1KL29vRkFBQUFBSVRBZFNQeUR4QUYKbTJnQUFQSVBFQTJi
YUFBQTZBQUFBQUJJaVFVQUFBQUF4Z1gvLy8vL0FZb0ZBQUFBQUlUQWRTUHlEeEFGZm1nQUFQSVBF
QTF1YUFBQQo2QUFBQUFCSWlRVUFBQUFBeGdYLy8vLy9BWW9GQUFBQUFJVEFkVk9BUGYvLy8vOEJk
UWxJaXdVQUFBQUE2eDFJaXdVQUFBQUFTSXM0CjZBQUFBQUJJaVFVQUFBQUF4Z1gvLy8vL0FVaU5O
UUFBQUFCSWljY3gwcmtDQUFBQTZBQUFBQUJJaVFVQUFBQUF4Z1gvLy8vL0FVaU4KWFJDK0VnQUFB
RUdEZmhnQWRBVytEZ0FBQUV5Si8rZ0FBQUFBU0lzTkFBQUFBRWlMRlFBQUFBQklpelVBQUFBQVNJ
dERHRWlKUkNRWQpTSXRERUVpSlJDUVFTSXNEU0l0N0NFaUpmQ1FJU0lrRUpFeUovK2dBQUFBQVNJ
UEVLRnRCWGtGZlhjTm1abVptWm1ZdUR4K0VBQUFBCkFBQlZTSW5sUVZkQlZrRlZRVlJUU0lIc3lB
QUFBRW1KemtpSmxWRC8vLzlKaWZSSmlmM29BQUFBQUVpTFJTaElpVVFrR0VpTFJTQkkKaVVRa0VF
aUxSUkJJaTAwWVNJbE1KQWhJaVFRazZBQUFBQUR5RHhHRldQLy8vMGlMUlNoSWlVUWtHRWlMUlNC
SWlVUWtFRWlMUlJCSQppMDBZU0lsTUpBaElpUVFrNkFBQUFBRHlEeEdGUVAvLy8waUxSU2hJaVVR
a0dFaUxSU0JJaVVRa0VFaUxSUkJJaTAwWVNJbE1KQWhJCmlRUWs2QUFBQUFEeUR4R0ZhUC8vLzBp
TFJTaElpVVFrR0VpTFJTQklpVVFrRUVpTFJSQklpMDBZU0lsTUpBaElpUVFrNkFBQUFBRHkKRHhH
RmNQLy8vMGlMUlNoSWlVUWtHRWlMUlNCSWlVUWtFRWlMUlJCSWkwMFlTSWxNSkFoSWlRUWs2QUFB
QUFEeUR4R0ZTUC8vLzBpTApSU2hJaVVRa0dFaUxSU0JJaVVRa0VFaUxSUkJJaTAwWVNJbE1KQWhJ
aVFRazZBQUFBQUR5RHhHRllQLy8vMHlKN3pIMjZBQUFBQUJJCmkwVW9TSWxFSkJoSWkwVWdTSWxF
SkJCSWkwVVFTSXROR0VpSlRDUUlTSWtFSkV5SjcrZ0FBQUFBVEkxOUVFMkY1UElQRUlWby8vLy8K
OGc5WkJRTm1BQUR5RDFpRlFQLy8vL0lQV0FYN1pRQUE4ZzhSaFdqLy8vOFBoSFlCQUFCTWllZm9B
QUFBQUVpSncrZ0FBQUFBU0RuRApENFhWQUFBQVRJbnZUSW5tNkFBQUFBQkppMGNZU0lsRUpCaEpp
MGNRU0lsRUpCQkppd2RKaTA4SVNJbE1KQWhJaVFRazZBQUFBQUR5CkR4R0ZRUC8vLzBtTFJ4anlE
eENGYVAvLy8vSVBYSVZZLy8vLzhnOFJoVGovLy85SWlVUWtHRW1MUnhCSWlVUWtFRW1MQjBtTFR3
aEkKaVV3a0NFaUpCQ1RvQUFBQUFQSVBFSTFBLy8vLzhnOFJUYmp5RHhDTldQLy8vL0lQRVUzQThn
OFJSY2p5RHhDRk9QLy8vL0lQRVVYUQpTSXRGMEVpSlJDUVlTSXRGeUVpSlJDUVFTSXRGdUVpTFRj
QklpVXdrQ0VpSkJDUk1pZS9vQUFBQUFPbUlBQUFBNkFBQUFBQklPY04xCmZrbUxSeGhJaVVRa0dF
bUxSeEJJaVVRa0VFbUxCMG1MVHdoSWlVd2tDRWlKQkNUb0FBQUFBUElQRVlWQS8vLy9TWXRIR0Vp
SlJDUVkKU1l0SEVFaUpSQ1FRU1lzSFNZdFBDRWlKVENRSVNJa0VKT2dBQUFBQUR5alFUSW52VElu
bThnOFFoVUQvLy8veUR4Q05XUC8vLy9JUApFSjFvLy8vL01kTG9BQUFBQVBJUEVJVkkvLy8vOGc4
UURWOWtBQUR5RDFuQjhnOFFsWEQvLy8veUQxalE4ZzlZMGZJUEVaVncvLy8vClNJdTFVUC8vLzBp
RjlnK0V6UUFBQUV5SjcrZ0FBQUFBU1l0SEdFaUpSQ1FZU1l0SEVFaUpSQ1FRU1lzSFNZdFBDRWlK
VENRSVNJa0UKSk9nQUFBQUE4ZzhSaFZqLy8vOUppMGNZOGc4UWhYRC8vLy95RDF5RmFQLy8vL0lQ
RVlWUS8vLy9TSWxFSkJoSmkwY1FTSWxFSkJCSgppd2RKaTA4SVNJbE1KQWhJaVFRazZBQUFBQUR5
RHhDTldQLy8vL0lQRVUyWThnOFFqV2ovLy8veUR4Rk5vUElQRVVXbzhnOFFoVkQvCi8vL3lEeEZG
c0VpTFJiQklpVVFrR0VpTFJhaElpVVFrRUVpTFJaaElpMDJnU0lsTUpBaElpUVFrVEludjZBQUFB
QUJOaGZZUGhId0IKQUFCTWlmZm9BQUFBQUVpSncrZ0FBQUFBU0RuREQ0WGJBQUFBVEludlRJbjI2
QUFBQUFCSmkwY1lTSWxFSkJoSmkwY1FTSWxFSkJCSgppd2RKaTA4SVNJbE1KQWhJaVFRazZBQUFB
QUR5RHhHRmFQLy8vMG1MUnhqeUR4Q0ZZUC8vLy9JUFhJVncvLy8vOGc4UmhXRC8vLzlJCmlVUWtH
RW1MUnhCSWlVUWtFRW1MQjBtTFR3aElpVXdrQ0VpSkJDVG9BQUFBQVBJUEVJMW8vLy8vOGc4UmpY
ai8vLy95RHhDTmNQLy8KLy9JUEVVMkE4ZzhSUllqeUR4Q0ZZUC8vLy9JUEVVV1FTSXRGa0VpSlJD
UVlTSXRGaUVpSlJDUVFTSXVGZVAvLy8waUxUWUJJaVV3awpDRWlKQkNSTWllL29BQUFBQU9tSUFB
QUE2QUFBQUFCSU9jTjFma21MUnhoSWlVUWtHRW1MUnhCSWlVUWtFRW1MQjBtTFR3aElpVXdrCkNF
aUpCQ1RvQUFBQUFQSVBFWVZvLy8vL1NZdEhHRWlKUkNRWVNZdEhFRWlKUkNRUVNZc0hTWXRQQ0Vp
SlRDUUlTSWtFSk9nQUFBQUEKRHlqUVRJbnZUSW4yOGc4UWhXai8vLy95RHhDTmNQLy8vL0lQRUox
Zy8vLy9NZExvQUFBQUFFeUo3K2dBQUFBQVNJSEV5QUFBQUZ0QgpYRUZkUVY1QlgxM0RabVptWm1a
bUxnOGZoQUFBQUFBQVZVaUo1VEgyWGVrQUFBQUFEeDlBQUZWSWllVkJWMEZXUVZSVFNJSHNvQUFB
CkFFbUo5a2lKKzR0REdJUDRBblVOU0luZjZBQUFBQURwVndJQUFFeU5aUkR5UVE4UVJDUVE4ZzhS
UllEeVFROFFUQ1FZOGc4UlRZaG0KRHk1RE1IVWhlaC95RHhCRmlHWVBMa000ZFJONkVVaUozK2dB
QUFBQVNJWEFENFVMQWdBQVNJMTlzRXlKOXVnQUFBQUE4ZzhRUmJEeQpEeEdGZVAvLy8vSVBFRVc0
OGc4UmhXai8vLzlJalgyd1RJbjI2QUFBQUFEeUR4Q2xhUC8vLy9JUFdlVHlEeENkZVAvLy8vSVBX
ZHZ5CkR4QkZ3UElQRUUzSThnOVp5ZklQV2NEeUQxakI4ZzlSMFBJUEVaVncvLy8vRHlqRDhnOVl4
UElQVWNqeUR4R05lUC8vLy9JUEVFV0EKOGc5WndmSVBFRTJJOGc5WnlreUo5ekgyNkFBQUFBQkpp
Y1pNaWZmb0FBQUFBRWlKeC9JUEVJVjQvLy8vOGc4UWpYRC8vLy9vQUFBQQpBRXlKOStnQUFBQUFT
WW5IU1l0RUpCaElpVVFrR0VtTFJDUVFTSWxFSkJCSml3UWtTWXRNSkFoSWlVd2tDRWlKQkNUb0FB
QUFBRW1MClJDUVlTSWxFSkJoSmkwUWtFRWlKUkNRUVNZc0VKRW1MVENRSVNJbE1KQWhJaVFRa1pn
OVhCYTFpQUFEeUR4RkZpT2dBQUFBQThnOFEKRFp0aUFBQm1EMWZJVEluLzhnOFFSWWpvQUFBQUFF
eUovNzRSQUFBQTZBQUFBQUJKaTBRa0dFaUpSYWhKaTBRa0VFaUpSYUJKaXdRawpTWXRNSkFoSWlV
MllTSWxGa0VpSjMrZ0FBQUFBU0l0TnFFaUpUQ1FZU0l0Tm9FaUpUQ1FRU0l0TmtFaUxWWmhJaVZR
a0NFaUpEQ1JNCmlmOUlpY2JvQUFBQUFFaUxBMG1MVENRWVNJbE1KQmhKaTB3a0VFaUpUQ1FRU1lz
TUpFbUxWQ1FJU0lsVUpBaElpUXdrU0luZlRJbisKLzFBNFNJbmZUSW4yNkFBQUFBQkppMFFrR0Vp
SlF6aEppMFFrRUVpSlF6Qkppd1FrU1l0TUpBaElpVXNvU0lsRElFaUozK2dBQUFBQQpTSUhFb0FB
QUFGdEJYRUZlUVY5ZHcyWm1aaTRQSDRRQUFBQUFBRlZJaWVWQlYwRldRVlJUU0lIc1FBRUFBRW1K
OWttSi8wbUxCMGlMClRTaElpVXdrR0VpTFRTQklpVXdrRUVpTFRSQklpMVVZU0lsVUpBaElpUXdr
LzFBb1NZc0hUSW4vLzFCQVNJMU5FSVRBRDRUM0FRQUEKU0l0QkdFaUpoWGovLy85SWkwRVFTSW1G
Y1AvLy8waUxBVWlMU1FoSWlZMW8vLy8vU0ltRllQLy8vMG1MQjB5Si8vOVFJUElQRVlYUQovdi8v
OGc4UmpkaisvLzlJaTRWNC8vLy9TSWxGbUVpTGhYRC8vLzlJaVVXUVNJdUZZUC8vLzBpTGpXai8v
LzlJaVUySVNJbEZnRWlMCmhYai8vLzlJaVVRa0dFaUxoWEQvLy85SWlVUWtFRWlMaFdELy8vOUlp
NDFvLy8vL1NJbE1KQWhJaVFRazZBQUFBQUJJaTBXWVNJbEUKSkJoSWkwV1FTSWxFSkJCSWkwV0FT
SXROaUVpSlRDUUlTSWtFSlBJUFhvWFEvdi8vOGc4UmhjaisvLy9vQUFBQUFQSVBFSTNZL3YvLwo4
Zzlld2ZJUEVZWEEvdi8vWmc4dWhjaisvLzhQaGhrQkFBQklpMFdZU0lsRUpCaElpMFdRU0lsRUpC
QklpMFdBU0l0TmlFaUpUQ1FJClNJa0VKT2dBQUFBQThnOFJoZEQrLy85SWkwV1FTSXRObUVpSlRD
UVlTSWxFSkJCSWkwV0FTSXROaUVpSlRDUUlTSWtFSlBJUEVJWFkKL3YvLzhnOVpoY2orLy8veUR4
R0YyUDcvLytnQUFBQUE4ZzhSaGNqKy8vOUlpMFdZU0lsRUpCaElpMFdRU0lsRUpCQklpMFdBU0l0
TgppRWlKVENRSVNJa0VKT2dBQUFBQThnOFJoY0QrLy85SWkwV1lTSWxFSkJoSWkwV1FTSWxFSkJC
SWkwV0FTSXROaUVpSlRDUUlTSWtFCkpPZ0FBQUFBOGc4UWpkRCsvLy95RHhDZDJQNy8vL0lQWE1Q
eUQxa0YyRndBQVBJUFdJWEEvdi8vNlNRQkFBRHlEeEJaR1BJUEVFa1EKOGc4UUVmSVBFWlhJL3Yv
LzhnOFFRUWpwQkFFQUFFaUxSWmhJaVVRa0dFaUxSWkJJaVVRa0VFaUxSWUJJaTAySVNJbE1KQWhJ
aVFRawo2QUFBQUFEeUR4R0YyUDcvLzBpTFJaQklpMDJZU0lsTUpCaElpVVFrRUVpTFJZQklpMDJJ
U0lsTUpBaElpUVFrOGc4UWhkRCsvLy95CkQxbUZ3UDcvLy9JUEVZWFEvdi8vNkFBQUFBRHlEeEdG
d1A3Ly8waUxSWmhJaVVRa0dFaUxSWkJJaVVRa0VFaUxSWUJJaTAySVNJbE0KSkFoSWlRUWs2QUFB
QUFEeUR4R0Z5UDcvLzBpTFJaaElpVVFrR0VpTFJaQklpVVFrRUVpTFJZQklpMDJJU0lsTUpBaElp
UVFrNkFBQQpBQUR5RHhDZDJQNy8vL0lQRUkzUS92Ly84ZzhRbGNqKy8vL3lEMXpSOGc5WkZiZGJB
QUR5RDFpVndQNy8vL0lQRVpYSS92Ly84ZzhSCmhjRCsvLy95RHhHTjBQNy8vL0lQRVozWS92Ly9R
ZlpIREFGMEVQSVBFQVdBV3dBQVRJbjM2QUFBQUFCSml3ZElpMEJROGc4UWhjaisKLy8veUR4R0ZR
UC8vLy9JUEVJWEEvdi8vOGc4UmhVai8vLy95RHhDRjBQNy8vL0lQRVlWUS8vLy84ZzhRaGRqKy8v
L3lEeEdGV1AvLwovMGlMalZqLy8vOUlpVXdrR0VpTGpWRC8vLzlJaVV3a0VFaUxqVUQvLy85SWk1
VkkvLy8vU0lsVUpBaElpUXdrVEluL1RJbjIvOUJKCmljUkJpMGNZZy9nQ0Q0U29BQUFBOGc4UWhj
aisvLy95RHhGRm9QSVBFSVhBL3YvLzhnOFJSYWp5RHhDRjBQNy8vL0lQRVVXdzhnOFEKaGRqKy8v
L3lEeEZGdUlBOS8vLy8vd0YxQ1VpTEJRQUFBQURySHZJUEVBMmtXZ0FBRDFmQTZBQUFBQUJJaVFV
QUFBQUF4Z1gvLy8vLwpBVWlMVGFCSWkxV29TSXQxc0VpTGZiaElpWHdrR0VpSmRDUVFTSWxVSkFo
SWlRd2s4ZzhRRFd0YUFBRHlEeEFWYTFvQUFFeUo5MHlKCjVnOVh3RWlKd3VnQUFBQUFRZlpIREJE
eUR4Q0YyUDcvLy9JUEVJM1Evdi8vOGc4UW5jaisvLy95RHhDVndQNy8vM1I2OGc4Um5TRC8KLy8v
eUR4R1ZLUC8vLy9JUEVZMHcvLy8vOGc4UmhUai8vLzlJaTRVNC8vLy9TSWxFSkJoSWk0VXcvLy8v
U0lsRUpCQklpNFVnLy8vLwpTSXVOS1AvLy8waUpUQ1FJU0lrRUpFeUo5MHlKNXVnQUFBQUE4ZzhR
bmNqKy8vL3lEeENWd1A3Ly8vSVBFSTNRL3YvLzhnOFFoZGorCi8vL3lEeEdWd1A3Ly8vSVBFWTNR
L3YvLzhnOFJoZGorLy8veUR4RmR3UElQRVZYSThnOFJUZER5RHhGRjJESGJUWVhrZEF0TWllZm8K
QUFBQUFFaUp3K2dBQUFBQVNEbkRkVEJJaTBYWVNJbEVKQmhJaTBYUVNJbEVKQkJJaTBYQVNJdE55
RWlKVENRSVNJa0VKRXlKOTB5Sgo1dWdBQUFBQTZ6am9BQUFBQUVnNXczVXVTSXRGMkVpSlJDUVlT
SXRGMEVpSlJDUVFTSXRGd0VpTFRjaElpVXdrQ0VpSkJDUk1pZmRNCmllYm9BQUFBQUVHRGZ4Z0NE
NFRRQUFBQWdEMy8vLy8vQVhVSlNJc0ZBQUFBQU9zajhnOFFCZVJZQUFEeUR4QU41RmdBQU9nQUFB
QUEKU0lrRkFBQUFBTVlGLy8vLy93SHlEeENGMlA3Ly8vSVBFSTNRL3YvLzhnOFJqZEQrLy8veUR4
R0YyUDcvLy9JUEVKWEkvdi8vOGc4UgpsUUQvLy8veUR4Q1Z3UDcvLy9JUEVaVUkvLy8vOGc4UmpS
RC8vLy95RHhHRkdQLy8vMGlMalJqLy8vL3lEeEFOWWxnQUFFaUpUQ1FZClNJdU5FUC8vLzBpSlRD
UVFTSXVOQVAvLy8waUxsUWovLy85SWlWUWtDRWlKRENSTWlmZE1pZVlQVjhBUFY5SklpY0xvQUFB
QUFFSDIKUnd3Q0Q0UVdBUUFBOGc4UWhjaisvLy95RHhHRjRQNy8vL0lQRUlYQS92Ly84ZzhSaGVq
Ky8vL3lEeENGMFA3Ly8vSVBFWVh3L3YvLwo4ZzhRaGRqKy8vL3lEeEdGK1A3Ly80b0ZBQUFBQUlU
QWRSN3lEeEFGMFZjQUFBOG95T2dBQUFBQVNJa0ZBQUFBQU1ZRi8vLy8vd0dBClBmLy8vLzhCZFFs
SWl3VUFBQUFBNjBPQVBmLy8vLzhCZFFsSWl3VUFBQUFBNnlQeUR4QUZqMWNBQVBJUEVBMXZWd0FB
NkFBQUFBQkkKaVFVQUFBQUF4Z1gvLy8vL0FVaUpCUUFBQUFER0JmLy8vLzhCUVlOL0dBQjFCMGlM
QlFBQUFBQklpNDNnL3YvL1NJdVY2UDcvLzBpTAp0ZkQrLy85SWk3MzQvdi8vU0lsOEpCaElpWFFr
RUVpSlZDUUlTSWtNSlBJUEVCVXhWd0FBVEluM1RJbm1EMWZBRDFmSlNJbkM2QUFBCkFBQkppd2RN
aWY5TWlmYi9VREJJZ2NSQUFRQUFXMEZjUVY1QlgxM0RrRlZJaWVWQlYwRldVMGlCN0pnQUFBQkpp
ZlpKaWY5SWpWMFEKU0lNOS8vLy8vd0FQaFlVQUFBREhoWGovLy84QUFBQUF4NFY4Ly8vL0FBQUFB
TWRGZ0FBQUFBQkl1SnFabVptWm1lay9TSWxGaUVpNApBQUFBQUFBQUFFQklpVVdRU0xnQUFBQUFB
QURnUDBpSlJaaElpd1VBQUFBQVNJMjllUC8vLzBpTFNCaElpVTI0U0l0SUVFaUpUYkJJCml3aElp
MEFJU0lsRnFFaUpUYURIUmNBQUFBQUE2QUFBQUFCSWlRVUFBQUFBVEluLzZBQUFBQUJJaXpVQUFB
QUFUSW4vNkFBQUFBQkkKaTBNUVNJdExHRWlKVGVCSWlVWFlTSXNEU0l0TENFaUpUZEJJaVVYSU1k
dE5oZlowQzB5SjkrZ0FBQUFBU0luRDZBQUFBQUJJT2NOMQpNRWlMUmVCSWlVUWtHRWlMUmRoSWlV
UWtFRWlMUmNoSWkwM1FTSWxNSkFoSWlRUWtUSW4vVEluMjZBQUFBQURyT09nQUFBQUFTRG5ECmRT
NUlpMFhnU0lsRUpCaElpMFhZU0lsRUpCQklpMFhJU0l0TjBFaUpUQ1FJU0lrRUpFeUovMHlKOXVn
QUFBQUFUSW4vNkFBQUFBQkkKZ2NTWUFBQUFXMEZlUVY5ZHd3OGZBRlZJaWVWQlYwRldRVlZCVkZO
SWdleDRBUUFBU1luWDhnOFJsZEQrLy8veUR4R055UDcvLy9JUApFWVhBL3YvL1NZbjJTWW44OGc4
UVhSRHlEMWpZOGc5YzJ2SVBFWjI0L3YvL0R5akM4ZzlZd1BJUEVHVW84ZzlZNFBJUEVhV28vdi8v
CjhnOVlSU0R5RHhHRnNQNy8vL0lQRUcwWThnOVk2ZklQRVYyWThnOWM2dklQRWEyZy92Ly84ZzhS
YmFEeUR4RkZxUElQRVdXd1NJdEYKbUVpTFRhQklpMVdvU0l0MXNFaUpkQ1E0U0lsVUpEQklpVXdr
S0VpSlJDUWdTSXRGS0VpSlJDUVlTSXRGSUVpSlJDUVFTSXRGRUVpTApUUmhJaVV3a0NFaUpCQ1Rv
QUFBQUFJVEFENFFwQXdBQVRJMXRFUElQRUlXNC92Ly84ZzhSaGZqKy8vL3lEeENGb1A3Ly8vSVBF
WVVBCi8vLy84ZzhRaGJEKy8vL3lEeEdGQ1AvLy8vSVBFSVdvL3YvLzhnOFJoUkQvLy85SWk0WDQv
di8vU0l1TkFQLy8vMGlMbFFqLy8vOUkKaTdVUS8vLy9TSTI5R1AvLy8waUpkQ1E0U0lsVUpEQklp
VXdrS0VpSlJDUWdTWXRGR0VpSlJDUVlTWXRGRUVpSlJDUVFTWXRGQUVtTApUUWhJaVV3a0NFaUpC
Q1RvQUFBQUFFaU52VGovLy85SWk0VXcvLy8vU0lsRUpCaElpNFVvLy8vL1NJbEVKQkJJaTRVWS8v
Ly9TSXVOCklQLy8vMGlKVENRSVNJa0VKRXlKNXVnQUFBQUFTSTI5V1AvLy8waUxoVkQvLy85SWlV
UWtHRWlMaFVqLy8vOUlpVVFrRUVpTGhUai8KLy85SWk0MUEvLy8vU0lsTUpBaElpUVFrNkFBQUFB
QklqYjE0Ly8vL1NJdUZjUC8vLzBpSlJDUVlTSXVGYVAvLy8waUpSQ1FRU0l1RgpXUC8vLzBpTGpX
RC8vLzlJaVV3a0NFaUpCQ1JNaWVib0FBQUFBREhiU0l0RmtFaUpSQ1FZU0l0RmlFaUpSQ1FRU0l1
RmVQLy8vMGlMClRZQklpVXdrQ0VpSkJDUk1pZWN4OXVnQUFBQUFUSW5udmhFQUFBRG9BQUFBQUUy
RjlrbUxSUmhJaVVYUVNZdEZFRWlKUmNoSmkwVUEKU1l0TkNFaUpUY0JJaVVXNGRBdE1pZmZvQUFB
QUFFaUp3K2dBQUFBQVNEbkRkVEJJaTBYUVNJbEVKQmhJaTBYSVNJbEVKQkJJaTBXNApTSXROd0Vp
SlRDUUlTSWtFSkV5SjUweUo5dWdBQUFBQTZ6am9BQUFBQUVnNXczVXVTSXRGMEVpSlJDUVlTSXRG
eUVpSlJDUVFTSXRGCnVFaUxUY0JJaVV3a0NFaUpCQ1JNaWVkTWlmYm9BQUFBQUV5SjU3NFNBQUFB
NkFBQUFBQk1pZWRNaWY3b0FBQUFBRWlMQlFBQUFBQkkKaTBnWVNJbE1KQmhJaTBnUVNJbE1KQkJJ
aXdoSWkwQUlTSWxFSkFoSWlRd2tUSW5uNkFBQUFBQk1pZWUrRndBQUFPZ0FBQUFBU0lzRgpBQUFB
QUVpTE9FbUxSUmhJaVlYdy92Ly9TWXRGRUVpSmhlaisvLzlKaTBVQVNZdE5DRWlKamVEKy8vOUlp
WVhZL3YvLzZBQUFBQUJJCmk0M3cvdi8vU0lsTUpCaElpNDNvL3YvL1NJbE1KQkJJaTQzWS92Ly9T
SXVWNFA3Ly8waUpWQ1FJU0lrTUpFeUo1MHlKOXZJUEVJWEEKL3YvLzhnOFFqY2orLy8veUR4Q1Yw
UDcvLzBpSnd1Z0FBQUFBVElubjZBQUFBQUJJZ2NSNEFRQUFXMEZjUVYxQlhrRmZYY05tRHgrRQpB
QUFBQUFCVlNJbmxRVmRCVmtGVVUwaUI3SUFCQUFCSmlkZnlEeEdWMlA3Ly8vSVBFWTNJL3YvLzhn
OFJoZEQrLy85SmlmWkppZnpvCkFBQUFBRWlOdldELy8vOU1pZWJvQUFBQUFFaU52UUQvLy85TWll
Ym9BQUFBQUVpTnZURC8vLzlJaTRVZy8vLy9TSXVOS1AvLy8waUoKVENRb1NJbEVKQ0JJaTRVWS8v
Ly9TSWxFSkJoSWk0VVEvLy8vU0lsRUpCQklpNFVBLy8vL1NJdU5DUC8vLzBpSlRDUUlTSWtFSk9n
QQpBQUFBU0kxOWtFeUxSWUJNaTAySVRJdVZNUC8vLzBpTHRUai8vLzlJaTUxQS8vLy9TSXVGU1Av
Ly8waUxqVkQvLy85SWk1VlkvLy8vClNJbFVKRmhJaVV3a1VFaUpSQ1JJU0lsY0pFQklpWFFrT0V5
SlZDUXdUSWxNSkNoTWlVUWtJRWlMaFhqLy8vOUlpVVFrR0VpTGhYRC8KLy85SWlVUWtFRWlMaFdE
Ly8vOUlpNDFvLy8vL1NJbE1KQWhJaVFRazZBQUFBQUR5UkE4UVJhanlEeEI5a1BJUEVFV1lEeWpZ
OGtFUApXZGp5RHhCTm9BOG8xL0lQV2RIeUQxalQ4ZzhRSmUxUEFBRHlEMW5pOGc5WjRrRVBLTkR5
RDFuU0R5alo4ZzlaMi9JUFdOb1BLT2p5CkQxbnREeWpYOGc5WjB2SVBXTlVQS09yeUQxenI4Zzla
N2ZJUFdPenlEMUhsOGc4UXRjaisvLy95UkE5Wnh2SVBFSzNRL3YvLzhnOVoKeGZJUFdjN3lEMW45
OGc5WTAvSVBXUG55RHhHOXlQNy8vdzhveVBKQkQxakk4ZzhSamREKy8vL3lEeEJGR1BJUFdNSHlE
eEJORVBJUApXTS95RDF6VThnOVpGVlpQQUFEeUQxSGk4ZzlacGRqKy8vL3lEeEdsMlA3Ly93OG8x
UElQV05MeUR4QmRLUElQV05yeUQxaFZJUElQClhNenlEeEdONFA3Ly8vSVBYTVR5RHhHRjZQNy8v
L0lQRVpYdy92Ly84ZzhSbmZqKy8vOUlpNFg0L3YvL1NJbEVKQmhJaTRYdy92Ly8KU0lsRUpCQklp
NFhnL3YvL1NJdU42UDcvLzBpSlRDUUlTSWtFSkV5SjUrZ0FBQUFBVElubjhnOFFoY2orLy8veUR4
Q04wUDcvLy9JUApFSlhZL3YvL1RJbis2QUFBQUFBeDIwMkY5ZzhvUlJBUEtFMGdEeWxOMEE4cFJj
QjBDMHlKOStnQUFBQUFTSW5ENkFBQUFBQklPY04xCk1FaUxSZGhJaVVRa0dFaUxSZEJJaVVRa0VF
aUxSY0JJaTAzSVNJbE1KQWhJaVFRa1RJbm5USW4yNkFBQUFBRHJPT2dBQUFBQVNEbkQKZFM1SWkw
WFlTSWxFSkJoSWkwWFFTSWxFSkJCSWkwWEFTSXROeUVpSlRDUUlTSWtFSkV5SjUweUo5dWdBQUFB
QVRJbm42QUFBQUFCSQpnY1NBQVFBQVcwRmNRVjVCWDEzRFptWm1abVptTGc4ZmhBQUFBQUFBVlVp
SjVWTlFTSW43NkFBQUFBQkloY0IwRWtpSjMrZ0FBQUFBClNJbkg2QUFBQUFEckVFaUxCUUFBQUFE
eUR4QUE4ZzhRU0FoSWc4UUlXMTNERHg5QUFGVklpZVZCVjBGV1FWUlRTSUhzb0FBQUFFaUoKODBt
Si80b0ZBQUFBQUlUQWRTcnlEeEFGamswQUFQSVBFQldPVFFBQVpnOG95QThvMnVnQUFBQUFTSWtG
QUFBQUFNWUYvLy8vL3dGTQpqV1VRUVlOL0NBbDFOa21MUkNRWVNJbEVKQmhKaTBRa0VFaUpSQ1FR
U1lzRUpFbUxUQ1FJU0lsTUpBaElpUVFrVEluL1NJbmU2QUFBCkFBRHBpQUlBQVBKQkR4QkVKQkR5
RHhGRmdQSkJEeEJNSkJqeUR4Rk5pR1pCRHk1SE1IVWllaUR5RHhCRmlHWkJEeTVIT0hVVGVoRk0K
aWYvb0FBQUFBRWlGd0ErRlBnSUFBRW1MQjB5Si8vOVFTRWlOZmJCSWlkN29BQUFBQUVpTmZiRHlE
eEJGc1BJUEVZVjQvLy8vOGc4UQpSYmp5RHhHRmFQLy8vMGlKM3VnQUFBQUE4ZzhRUmNEeUR4Qk55
UElQV2NueUQxbkE4ZzlZd2ZJUEVKMW8vLy8vOGc5WjIvSVBFSTE0Ci8vLy84ZzlaeWZJUFVkRHlE
eEdWY1AvLy8vSVBXTXZ5RDFISjhnOFJqWGovLy8veUR4QkZnUElQV2NIeUR4Qk5pUElQV2NwSWlk
OHgKOXVnQUFBQUFTWW5HVEluMzZBQUFBQUJJaWNmeUR4Q0ZlUC8vLy9JUEVJMXcvLy8vNkFBQUFB
Qk1pZmZvQUFBQUFFaUp3MGlKM3pIMgo2QUFBQUFCSmkwUWtHRWlKUkNRWVNZdEVKQkJJaVVRa0VF
bUxCQ1JKaTB3a0NFaUpUQ1FJU0lrRUpPZ0FBQUFBU1l0RUpCaElpVVFrCkdFbUxSQ1FRU0lsRUpC
Qkppd1FrU1l0TUpBaElpVXdrQ0VpSkJDUm1EMWNGRDA0QUFQSVBFVVdJNkFBQUFBRHlEeEFOL1Uw
QUFHWVAKVjhoSWlkL3lEeEJGaU9nQUFBQUFTSW5mdmhFQUFBRG9BQUFBQUVtTFJDUVlTSWxGcUVt
TFJDUVFTSWxGb0VtTEJDUkppMHdrQ0VpSgpUWmhJaVVXUVRJbi82QUFBQUFCSWkwMm9TSWxNSkJo
SWkwMmdTSWxNSkJCSWkwMlFTSXRWbUVpSlZDUUlTSWtNSkVpSjMwaUp4dWdBCkFBQUFTSW5mdmhJ
QUFBRG9BQUFBQUVpTE5RQUFBQUJJaWQvb0FBQUFBRWlMQlFBQUFBQklpMGdZU0lsTUpCaElpMGdR
U0lsTUpCQkkKaXdoSWkwQUlTSWxFSkFoSWlRd2tTSW5mNkFBQUFBQklpZC9vQUFBQUFFeUovMHlK
OXVnQUFBQUFTWXRFSkJoSmlVYzRTWXRFSkJCSgppVWN3U1lzRUpFbUxUQ1FJU1lsUEtFbUpSeUJN
aWYvb0FBQUFBRWlCeEtBQUFBQmJRVnhCWGtGZlhjTm1aaTRQSDRRQUFBQUFBRlZJCmllVkl4MGNR
QUFBQUFFaU5CUkFBQUFCSWlRZElpd1VBQUFBQVNJdElHRWlKVHpCSWkwZ1FTSWxQS0VpTENFaUxR
QWhJaVVjZ1NJbFAKR0YzRFpwQlZTSW5sU01kSEVBQUFBQUJJalFVUUFBQUFTSWtIU0lzRkFBQUFB
RWlMU0JoSWlVOHdTSXRJRUVpSlR5aElpd2hJaTBBSQpTSWxISUVpSlR4aGR3MmFRVlVpSjVVRlhR
VlpCVkZOSWdlekFBQUFBU0luelNZbitpZ1VBQUFBQWhNQjFVNEE5Ly8vLy93RjFDVWlMCkJRQUFB
QURySFVpTEJRQUFBQUJJaXpqb0FBQUFBRWlKQlFBQUFBREdCZi8vLy84QlNJMDFBQUFBQUVpSnh6
SFN1UUlBQUFEb0FBQUEKQUVpSkJRQUFBQURHQmYvLy8vOEJpZ1VBQUFBQWhNQjFJL0lQRUFXUlNR
QUE4ZzhRRFpGSkFBRG9BQUFBQUVpSkJRQUFBQURHQmYvLwovLzhCaWdVQUFBQUFoTUIxVTRBOS8v
Ly8vd0YxQ1VpTEJRQUFBQURySFVpTEJRQUFBQUJJaXpqb0FBQUFBRWlKQlFBQUFBREdCZi8vCi8v
OEJTSTAxQUFBQUFFaUp4ekhTdVFJQUFBRG9BQUFBQUVpSkJRQUFBQURHQmYvLy8vOEJUSTE5RVBK
QkR4QkhFUElQRVlWZy8vLy8KOGtFUEVFOFk4ZzhSaldqLy8vOW1RUTh1UmloMUpYb2o4ZzhRaFdq
Ly8vOW1RUTh1UmpCMUUzb1JUSW4zNkFBQUFBQkloY0FQaFRzRQpBQUJJalgyd1NJbmU2QUFBQUFE
eUR4QkZzUElQRVlWWS8vLy84ZzhRUmJqeUR4R0ZTUC8vLzBpTmZiQklpZDdvQUFBQUFQSVBFS1ZJ
Ci8vLy84ZzlaNVBJUEVKMVkvLy8vOGc5WjIvSVBFRVhBOGc4UVRjanlEMW5KOGc5WndQSVBXTUh5
RDFIUThnOFJsVkQvLy84UEtNUHkKRDFqRThnOVJ5UElQRVkxWS8vLy84ZzhRaFdELy8vL3lEMW5C
OGc4UWpXai8vLy95RDFuS1NJbmZNZmJvQUFBQUFFaUp3MGlKMytnQQpBQUFBU0luSDhnOFFoVmov
Ly8veUR4Q05VUC8vLytnQUFBQUFUSW4zU0luZTZBQUFBQUJKaTBjWVNZbEdNRW1MUnhCSmlVWW9T
WXNIClNZdFBDRW1KVGlCSmlVWVlUSW4zNkFBQUFBQklpY2ZvQUFBQUFFaUp3MG1MUnhoSWlVUWtH
RW1MUnhCSWlVUWtFRW1MQjBtTFR3aEkKaVV3a0NFaUpCQ1RvQUFBQUFFbUxSeGhJaVVRa0dFbUxS
eEJJaVVRa0VFbUxCMG1MVHdoSWlVd2tDRWlKQkNSbUQxY0Ywa2tBQVBJUApFWVZvLy8vLzZBQUFB
QUR5RHhBTnZVa0FBR1lQVjhoSWlkL3lEeENGYVAvLy8rZ0FBQUFBU1l0SEdFaUpSQ1FZU1l0SEVF
aUpSQ1FRClNZc0hTWXRQQ0VpSlRDUUlTSWtFSkVpSjMrZ0FBQUFBU0luZnZoRUFBQURvQUFBQUFF
aUxEUUFBQUFCSWl4VUFBQUFBU0lzMUFBQUEKQUVtTFJ4aElpVVFrR0VtTFJ4QklpVVFrRUVtTEIw
bUxmd2hJaVh3a0NFaUpCQ1JJaWQvb0FBQUFBRWlKM3pIMjZBQUFBQUNLQlFBQQpBQUNFd0hVZjhn
OFFEY2RHQUFCbUQxZkE2QUFBQUFCSWlRVUFBQUFBeGdYLy8vLy9BWW9GQUFBQUFJVEFkU1B5RHhB
RnBrWUFBUElQCkVBMldSZ0FBNkFBQUFBQklpUVVBQUFBQXhnWC8vLy8vQVVpTE5RQUFBQUJJaWQv
b0FBQUFBRW1MUnhoSWlVUWtHRW1MUnhCSWlVUWsKRUVtTEIwbUxUd2hJaVV3a0NFaUpCQ1RvQUFB
QUFQSVBFWVZvLy8vL1NZdEhHRWlKUkNRWVNZdEhFRWlKUkNRUVNZc0hTWXRQQ0VpSgpUQ1FJU0lr
RUpPZ0FBQUFBOGc4UmhXRC8vLzlKaTBjWVNJbEVKQmhKaTBjUVNJbEVKQkJKaXdkSmkwOElTSWxN
SkFoSWlRUWs2QUFBCkFBQkp2QUFBQUFBQUFQQS84ZzhRaldqLy8vL3lEeEZOa1BJUEVJMWcvLy8v
OGc5WURkaEZBQUR5RHhGTm1QSVBFVVdnVElsbHFFaUwKUmFoSWlVUWtHRWlMUmFCSWlVUWtFRWlM
UlpCSWkwMllTSWxNSkFoSWlRUWtTSW5mNkFBQUFBQklpelVBQUFBQVNJbmY2QUFBQUFCSgppMGNZ
U0lsRUpCaEppMGNRU0lsRUpCQkppd2RKaTA4SVNJbE1KQWhJaVFRazZBQUFBQUR5RHhHRmFQLy8v
MG1MUnhoSWlVUWtHRW1MClJ4QklpVVFrRUVtTEIwbUxUd2hJaVV3a0NFaUpCQ1RvQUFBQUFQSVBF
WVZnLy8vL1NZdEhHRWlKUkNRWVNZdEhFRWlKUkNRUVNZc0gKU1l0UENFaUpUQ1FJU0lrRUpPZ0FB
QUFBOGc4UWpXai8vLy95RHhHTmNQLy8vL0lQRUkxZy8vLy84ZzlZRGZORUFBRHlEeEdOZVAvLwov
L0lQRVVXQVRJbGxpRWlMUlloSWlVUWtHRWlMUllCSWlVUWtFRWlMaFhELy8vOUlpNDE0Ly8vL1NJ
bE1KQWhJaVFRa1NJbmY2QUFBCkFBQk1pZmZvQUFBQUFFaUJ4TUFBQUFCYlFWeEJYa0ZmWGNPUVZV
aUo1VUZXVTBpRDdFQkppZlpJaWZ0SWl3TklpMDBvU0lsTUpCaEkKaTAwZ1NJbE1KQkJJaTAwUVNJ
dFZHRWlKVkNRSVNJa01KUDlRS0E4b1JSQVBLRTBnRHlsTjRBOHBSZEJJaTBVb1NJbEVKQmhJaTBV
ZwpTSWxFSkJCSWkwVVFTSXROR0VpSlRDUUlTSWtFSkVpSjMweUo5dWdBQUFBQVNJdE42RWlKVENR
WVNJdE40RWlKVENRUVNJdE4wRWlMClZkaElpVlFrQ0VpSkRDUk1pZmRJaWNib0FBQUFBRWlMQTBp
SjMweUo5djlRTUVpRHhFQmJRVjVkd3c4ZlJBQUFWVWlKNVVqSFJ4QUEKQUFBQVNJMEZFQUFBQUVp
SkIwaUxCUUFBQUFCSWkwZ1lTSWxQTUVpTFNCQklpVThvU0lzSVNJdEFDRWlKUnlCSWlVOFlYY05t
a0ZWSQppZVZJeDBjUUFBQUFBRWlOQlJBQUFBQklpUWRJaXdVQUFBQUFTSXRJR0VpSlR6QklpMGdR
U0lsUEtFaUxDRWlMUUFoSWlVY2dTSWxQCkdGM0RacEJWU0lubFNJUHNNUElQRVUzdzhnOFJSZmhJ
aTBVb1NJbEVKQmhJaTBVZ1NJbEVKQkJJaTBVUVNJdE5HRWlKVENRSVNJa0UKSk9nQUFBQUFTSXRG
SUVpTFRTaElpVXdrR0VpSlJDUVFTSXRGRUVpTFRSaElpVXdrQ0VpSkJDVHlEeEJOK1BJUFhNanlE
MW5KOGc4UgpUZmpvQUFBQUFQSVBFQTNrUWdBQThnOFFWZkR5RDF6UThnOVowdklQV0ZYNFpnOHV5
ZytUd0VpRHhEQmR3dzhmUkFBQVZVaUo1ZklQCkVBVzhRZ0FBOGc4UURieENBQUJkdzJZdUR4K0VB
QUFBQUFCVlNJbmxRVmRCVmtGVlFWUlRTSUhzaUFBQUFFbUo5a21KLzRvRkFBQUEKQUlUQWRWT0FQ
Zi8vLy84QmRRbElpd1VBQUFBQTZ4MUlpd1VBQUFBQVNJczQ2QUFBQUFCSWlRVUFBQUFBeGdYLy8v
Ly9BVWlOTlFBQQpBQUJJaWNjeDBya0NBQUFBNkFBQUFBQklpUVVBQUFBQXhnWC8vLy8vQVlvRkFB
QUFBSVRBZFZPQVBmLy8vLzhCZFFsSWl3VUFBQUFBCjZ4MUlpd1VBQUFBQVNJczQ2QUFBQUFCSWlR
VUFBQUFBeGdYLy8vLy9BVWlOTlFBQUFBQklpY2N4MHJrQ0FBQUE2QUFBQUFCSWlRVUEKQUFBQXhn
WC8vLy8vQVV5TmJSQ0tCUUFBQUFDRXdIVWo4ZzhRQmM1QkFBRHlEeEFOemtFQUFPZ0FBQUFBU0lr
RkFBQUFBTVlGLy8vLwovd0h5UVE4UVJSRHlEeEZGaVBKQkR4Qk5HUElQRVUyZ1prRVBMa2NvZFNK
NklQSVBFRVdnWmtFUExrY3dkUk42RVV5Si8rZ0FBQUFBClNJWEFENFgrQkFBQVNJMTlxRXlKOXVn
QUFBQUE4ZzhRUmFqeUR4RkZtUElQRUVXdzhnOFJSWUJJalgyb1RJbjI2QUFBQUFEeUR4QmwKZ1BJ
UFdlVHlEeEJkbVBJUFdkdnlEeEJGdVBJUEVFM0E4ZzlaeWZJUFdjRHlEMWpCOGc5UjBQSVBFVldR
RHlqRDhnOVl4UElQVWNqeQpEeEZObVBJUEVFV0k4Zzlad2ZJUEVFMmc4ZzlaeWt5Sjl6SDI2QUFB
QUFCSWljTklpZC9vQUFBQUFFaUp4L0lQRUVXWThnOFFUWkRvCkFBQUFBRXlKLzBpSjN1Z0FBQUFB
U1l0RkdFbUpSekJKaTBVUVNZbEhLRW1MUlFCSmkwMElTWWxQSUVtSlJ4aEppMFVZU0lsRUpCaEoK
aTBVUVNJbEVKQkJKaTBVQVNZdE5DRWlKVENRSVNJa0VKT2dBQUFBQThnOFJSWmhKaTBVWVNJbEVK
QmhKaTBVUVNJbEVKQkJKaTBVQQpTWXROQ0VpSlRDUUlTSWtFSk9nQUFBQUE4ZzhSUlpCSWpYMm9U
SW4yNkFBQUFBQklqWDJvOGc4UVJhanlEeEZGZ1BJUEVFV3c4ZzhSCmhYRC8vLzlNaWZib0FBQUFB
UElQRUVXNDhnOFFUY0R5RDFuSjhnOVp3UElQV01IeUR4Q2RjUC8vLy9JUFdkdnlEeEJOZ1BJUFdj
bnkKRDFIUThnOFJsWGovLy8veUQxakw4ZzlSeWZJUEVVMkE4ZzhRUllqeUQxbkI4ZzhRVGFEeUQx
bktUSW4zTWZib0FBQUFBRW1KeGt5Sgo5K2dBQUFBQVNJbkg4ZzhRUllEeUR4Q05lUC8vLytnQUFB
QUFUSW4zNkFBQUFBQklpY05KaTBVWVNJbEVKQmhKaTBVUVNJbEVKQkJKCmkwVUFTWXROQ0VpSlRD
UUlTSWtFSk9nQUFBQUFTWXRGR0VpSlJDUVlTWXRGRUVpSlJDUVFTWXRGQUVtTFRRaElpVXdrQ0Vp
SkJDUm0KRDFjRlkwRUFBUElQRVVXZzZBQUFBQUJtRHlqSVpnOVhEVTFCQUFCSWlkL3lEeEJGb09n
QUFBQUFTWXRGR0VpSlJDUVlTWXRGRUVpSgpSQ1FRU1l0RkFFbUxUUWhJaVV3a0NFaUpCQ1RvQUFB
QUFQSVBFVVdnU0luZjZBQUFBQUR5RHhCTm9QSVBXUTNtUGdBQThnOFJUYUR5CkR4QkZtUElQV01G
SWlkL3lEeEJOa09nQUFBQUE4ZzhRVFpEeUQxeE5vRWlKMy9JUEVFV1k2QUFBQUFEeUR4QkZtUElQ
WEVXZ1NJbmYKOGc4UVRaRG9BQUFBQVBJUEVFMmc4ZzlZVFpCSWlkL3lEeEJGbU9nQUFBQUFTSW5m
NkFBQUFBQklpZC9vQUFBQUFFaU5CUUFBQUFCSQpqUTBBQUFBQVFZdFhESVBpQXRIcWhkSklEMFhJ
VElzaFNZdEZHRWlKUkNRWVNZdEZFRWlKUkNRUVNZdEZBRW1MVFFoSWlVd2tDRWlKCkJDVG9BQUFB
QVBJUEVVV2dTWXRGR0VpSlJDUVlTWXRGRUVpSlJDUVFTWXRGQUVtTFRRaElpVXdrQ0VpSkJDVG9B
QUFBQVBJUEVVV1kKU1l0RkdFaUpSQ1FZU1l0RkVFaUpSQ1FRU1l0RkFFbUxUUWhJaVV3a0NFaUpC
Q1RvQUFBQUFQSVBFVVdRU1l0RkdFaUpSQ1FZU1l0RgpFRWlKUkNRUVNZdEZBRW1MVFFoSWlVd2tD
RWlKQkNUb0FBQUFBQThvMkVpSjMweUo1dklQRUVXZzhnOFFUWmp5RHhCVmtESFM2QUFBCkFBQk1p
Zi9vQUFBQUFFaUp4K2dBQUFBQVNJbkRTWXRGR0VpSlJDUVlTWXRGRUVpSlJDUVFTWXRGQUVtTFRR
aElpVXdrQ0VpSkJDVG8KQUFBQUFFbUxSUmhJaVVRa0dFbUxSUkJJaVVRa0VFbUxSUUJKaTAwSVNJ
bE1KQWhJaVFRa1pnOVhCVG8vQUFEeUR4RkZvT2dBQUFBQQo4ZzhRRFNnL0FBQm1EMWZJU0luZjhn
OFFSYURvQUFBQUFFbUxSUmhJaVVRa0dFbUxSUkJJaVVRa0VFbUxSUUJKaTAwSVNJbE1KQWhJCmlR
UWtTSW5mVEluMjZBQUFBQUR5RHhBTjBUd0FBRWlMRlFBQUFBQkppMFVZU0lsRUpCaEppMFVRU0ls
RUpCQkppMFVBU1l0TkNFaUoKVENRSVNJa0VKRWlKMzB5SjltWVBWOEFQVjlMb0FBQUFBRXlKOStn
QUFBQUFUSW4vNkFBQUFBQklnY1NJQUFBQVcwRmNRVjFCWGtGZgpYY01QSHdCVlNJbmxRVmRCVmtG
VVUwaUI3S0FBQUFCSWlmTkppZjVKaXdaSWkwMG9TSWxNSkJoSWkwMGdTSWxNSkJCSWkwMFFTSXRW
CkdFaUpWQ1FJU0lrTUpQOVFLRWlKMytnQUFBQUFTSTE5b0VpSjN1Z0FBQUFBU0l0RnVFaUpSQ1FZ
U0l0RnNFaUpSQ1FRU0l0Rm9FaUwKVGFoSWlVd2tDRWlKQkNUb0FBQUFBUElQRVlWNC8vLy9TSXRG
S0VpSlJDUVlTSXRGSUVpSlJDUVFTSXRGRUVpTFRSaElpVXdrQ0VpSgpCQ1RvQUFBQUFQSVBFWVZ3
Ly8vL1NJdEZ1RWlKUkNRWVNJdEZzRWlKUkNRUVNJdEZvRWlMVGFoSWlVd2tDRWlKQkNUb0FBQUFB
UElQCkVZVm8vLy8vU0l0RktFaUpSQ1FZU0l0RklFaUpSQ1FRU0l0RkVFaUxUUmhJaVV3a0NFaUpC
Q1RvQUFBQUFQSVBFSTE0Ly8vLzhnOFIKVFlEeUR4Q05jUC8vLy9JUEVVMkk4ZzhRaldqLy8vL3lE
eEZOa1BJUEVVV1lTSXRGbUVpSlJDUVlTSXRGa0VpSlJDUVFTSXRGZ0VpTApUWWhJaVV3a0NFaUpC
Q1JJaWQvb0FBQUFBRWlMUlNoSWlVUWtHRWlMUlNCSWlVUWtFRWlMUlJCSWkwMFlTSWxNSkFoSWlR
UWtUSW4zClNJbmU2QUFBQUFCSmljZE1qV1VRRHloRkVBOG9UU0FQS1UzUUR5bEZ3SW9GQUFBQUFJ
VEFkQWxJaXdVQUFBQUE2eDd5RHhBTnREb0EKQUE5WHdPZ0FBQUFBU0lrRkFBQUFBTVlGLy8vLy93
RklpMDNBU0l0VnlFaUxkZEJJaTMzWVNJbDhKQmhJaVhRa0VFaUpWQ1FJU0lrTQpKUElQRUExN09n
QUE4ZzhRRlhzNkFBQklpZDlNaWY0UFY4QklpY0xvQUFBQUFFaUozK2dBQUFBQVFmWkdEQkIwTVVt
TFJDUVlTSWxFCkpCaEppMFFrRUVpSlJDUVFTWXNFSkVtTFRDUUlTSWxNSkFoSWlRUWtTSW5mVElu
KzZBQUFBQUJKaTBRa0dFaUpSQ1FZU1l0RUpCQkkKaVVRa0VFbUxCQ1JKaTB3a0NFaUpUQ1FJU0lr
RUpFaUozMHlKL3VnQUFBQUFTWXNHVEluM1NJbmUvMUF3U0lIRW9BQUFBRnRCWEVGZQpRVjlkd3c4
ZlJBQUFWVWlKNVVqSFJ4QUFBQUFBU0kwRkVBQUFBRWlKQjBpTEJRQUFBQUJJaTBnWVNJbFBRRWlM
U0JCSWlVODRTSXNJClNJdEFDRWlKUnpCSWlVOG9YY05ta0ZWSWllVkl4MGNRQUFBQUFFaU5CUkFB
QUFCSWlRZElpd1VBQUFBQVNJdElHRWlKVDBCSWkwZ1EKU0lsUE9FaUxDRWlMUUFoSWlVY3dTSWxQ
S0YzRFpwQlZTSW5sVTBpRDdEaElpZnRJaTBVb1NJbEVKQmhJaTBVZ1NJbEVKQkJJaTBVUQpTSXRO
R0VpSlRDUUlTSWtFSk9nQUFBQUE4ZzhSUmZCSWkwVW9TSWxFSkJoSWkwVWdTSWxFSkJCSWkwVVFT
SXROR0VpSlRDUUlTSWtFCkpPZ0FBQUFBOGc4UlJlaElpMFVvU0lsRUpCaElpMFVnU0lsRUpCQklp
MFVRU0l0TkdFaUpUQ1FJU0lrRUpQSVBFRVh3OGc5WUJjbzQKQUFEeUR4RkY4T2dBQUFBQVNMZ0FB
QUFBQUFBa1FQSVBFRTN3OGc4UkMvSVBFRTNvOGc5WURhZzRBQUR5RHhGTENQSVBXQVdqT0FBQQo4
ZzhSUXhCSWlVTVlTSW5ZU0lQRU9GdGR3MVZJaWVWQlYwRldRVlJUU0lIc3NBRUFBRW1KOWttSi8v
SkJEeEJYSUdZUFY4Qm1EeTdRClpnOVh5WFVDZXdyeVFROFFUeGp5RDE3SzhnOFFGVmc0QUFEeUQx
elI4ZzhSbFpEKy8vOW1EeTdRZFFZUGkzVUhBQUJJalYwUWlnVUEKQUFBQWhNQjFJL0lQRUFVcU9B
QUE4ZzhRRFNvNEFBRG9BQUFBQUVpSkJRQUFBQURHQmYvLy8vOEJTSXRER0VpSlJkaElpME1RU0ls
RgowRWlMQTBpTFN3aElpVTNJU0lsRndFaUxReGhJaVVRa0dFaUxReEJJaVVRa0VFaUxBMGlMU3do
SWlVd2tDRWlKQkNUb0FBQUFBUElQCkVZV0kvdi8vU0l0RjJFaUpSQ1FZU0l0RjBFaUpSQ1FRU0l0
RndFaUxUY2hJaVV3a0NFaUpCQ1RvQUFBQUFQSVBFWVdBL3YvL1Nid0EKQUFBQUFBQWtRRWlMUmRo
SWlVUWtHRWlMUmRCSWlVUWtFRWlMUmNCSWkwM0lTSWxNSkFoSWlRUWs4ZzhRaFlqKy8vL3lEMWdG
WkRjQQpBUElQRVlXSS92Ly82QUFBQUFEeUR4Q05pUDcvLy9JUEVVMmc4ZzhRallEKy8vL3lEMWdO
UWpjQUFQSVBFWTJBL3YvLzhnOFJUYWp5CkQxZ0ZOVGNBQVBJUEVZVjQvdi8vOGc4UlJiQk1pV1c0
U0l0RnVFaUpSQ1FZU0l0RnNFaUpSQ1FRU0l0Rm9FaUxUYWhJaVV3a0NFaUoKQkNUb0FBQUFBUElQ
RVlXWS92Ly9aZzlYeWZKQkR4QkhJR1lQTHNGMUFuc0s4a0VQRUU4WThnOWV5UElQRVkxby92Ly84
ZzhRaFlqKwovLy95RHhGRmdQSVBFSVdBL3YvLzhnOFJSWWp5RHhDRmVQNy8vL0lQRVVXUVRJbGxt
RWlMUlpoSWlVUWtHRWlMUlpCSWlVUWtFRWlMClJZQklpMDJJU0lsTUpBaElpUVFrNkFBQUFBRHlE
eEdGWVA3Ly8waUxReGhJaVVRa0dFaUxReEJJaVVRa0VFaUxBMGlMU3doSWlVd2sKQ0VpSkJDVG9B
QUFBQVBJUEVZVncvdi8vOGc4UWhZaisvLy95RHhHRllQLy8vL0lQRUlXQS92Ly84ZzhSaFdqLy8v
L3lEeENGZVA3LwovL0lQRVlWdy8vLy84ZzhRaldEKy8vL3lEMW1OYVA3Ly8weUpwWGovLy8veUR4
Q0ZtUDcvLy9JUFdNSHlEeEdGbVA3Ly8waUxoWGovCi8vOUlpVVFrR0VpTGhYRC8vLzlJaVVRa0VF
aUxoV0QvLy85SWk0MW8vLy8vU0lsTUpBaElpUVFrNkFBQUFBRHlEeEdGV1A3Ly8waUwKUXhoSWlV
UWtHRWlMUXhCSWlVUWtFRWlMQTBpTFN3aElpVXdrQ0VpSkJDVG9BQUFBQVBJUEVZVm8vdi8vVElu
MzhnOFFCVlUxQUFBUApLTWpvQUFBQUFQSVBFWVZnL3YvLzhnOFFoWmorLy8veUR4R0ZRUC8vLy9J
UEVJV1Evdi8vOGc5WmhWaisvLy95RHhHRmtQNy8vL0lQCkVJMXcvdi8vOGc4UmpVai8vLy95RHhH
RlVQLy8vL0lQRUlWby92Ly84ZzhSaFZqLy8vOUlpNFZZLy8vL1NJbEVKQmhJaTRWUS8vLy8KU0ls
RUpCQklpNFZBLy8vL1NJdU5TUC8vLzBpSlRDUUlTSWtFSk9nQUFBQUE4ZzhSaFZqKy8vL3lEeENG
aVA3Ly8vSVBFWVVnLy8vLwo4ZzhRaFlEKy8vL3lEeEdGS1AvLy8vSVBFSVY0L3YvLzhnOFJoVEQv
Ly85TWlhVTQvLy8vU0l1Rk9QLy8vMGlKUkNRWVNJdUZNUC8vCi8waUpSQ1FRU0l1RklQLy8vMGlM
alNqLy8vOUlpVXdrQ0VpSkJDVG9BQUFBQVBJUEVJMWcvdi8vOGc5WkRXWTBBQUR5RHhHTllQNy8K
Ly9JUFdNRm1EeTZGV1A3Ly8zTUs4ZzhRaFpqKy8vL3Jia2lMUXhoSWlVUWtHRWlMUXhCSWlVUWtF
RWlMQTBpTFN3aElpVXdrQ0VpSgpCQ1RvQUFBQUFFaUxReEJJaTBzWVNJbE1KQmhJaVVRa0VFaUxB
MGlMU3doSWlVd2tDRWlKQkNUeUR4Q05tUDcvLy9JUFhNanlEeENGCmtQNy8vL0lQV01IeUR4R0Zr
UDcvLytnQUFBQUE4ZzhSaFpqKy8vL3lEeEdGQVAvLy8vSVBFSTF3L3YvLzhnOFJqUWovLy8veUR4
Q04Ka1A3Ly8vSVBFWTBRLy8vLzhnOFFqV2orLy8veUR4R05HUC8vLzBpTGhSai8vLzlJaVVRa0dF
aUxoUkQvLy85SWlVUWtFRWlMaFFELwovLzlJaTQwSS8vLy9TSWxNSkFoSWlRUWs2QUFBQUFEeUR4
R0ZXUDcvLzBpNEFBQUFBQUFBSkVEeUR4Q0ZpUDcvLy9JUEVZWGcvdi8vCjhnOFFoWUQrLy8veUR4
R0Y2UDcvLy9JUEVJVjQvdi8vOGc4UmhmRCsvLzlJaVlYNC92Ly9TSXVGK1A3Ly8waUpSQ1FZU0l1
RjhQNy8KLzBpSlJDUVFTSXVGNFA3Ly8waUxqZWorLy85SWlVd2tDRWlKQkNUb0FBQUFBUElQWElW
Zy92Ly84ZzhRalZqKy8vOW1EeTdJY2pkSQppME1ZU0lsRUpCaElpME1RU0lsRUpCQklpd05JaTBz
SVNJbE1KQWhJaVFRazZBQUFBQUR5RDF5Rm1QNy8vL0lQRVlXUS92Ly9USW4zCjZBQUFBQUJJaTBN
WVNJbEVKQmhJaTBNUVNJbEVKQkJJaXdOSWkwc0lTSWxNSkFoSWlRUWs2QUFBQUFEeUR4R0ZpUDcv
LzBpTFF4aEkKaVVRa0dFaUxReEJJaVVRa0VFaUxBMGlMU3doSWlVd2tDRWlKQkNUb0FBQUFBUElQ
RVlXQS92Ly9TSXRER0VpSlJDUVlTSXRERUVpSgpSQ1FRU0lzRFNJdExDRWlKVENRSVNJa0VKT2dB
QUFBQVpnOG95RWk0QUFBQUFBQUFJa0R5RHhBRi96RUFBUElQRUpXSS92Ly84ZzhSCmxjRCsvLy95
RHhDVmdQNy8vL0lQV0JYSE1RQUE4ZzlZRmFjeEFBRHlEeEdWeVA3Ly8vSVBFWTNRL3YvL1NJbUYy
UDcvLzBpTGhkaisKLy85SWlVUWtHRWlMaGREKy8vOUlpVVFrRUVpTGhjRCsvLzlJaTQzSS92Ly9T
SWxNSkFoSWlRUWtUSW4zNkFBQUFBQk1pZmZvQUFBQQpBRWlMTlFBQUFBQk1pZmZvQUFBQUFQSVBF
SVdZL3YvLzhnOFJoYUQrLy8veUR4Q0ZjUDcvLy9JUEVZV28vdi8vOGc4UWhaRCsvLy95CkR4R0Zz
UDcvLy9JUEVJVm8vdi8vOGc4UmhiaisvLzlJaTRXNC92Ly9TSWxFSkJoSWk0V3cvdi8vU0lsRUpC
QklpNFdnL3YvL1NJdU4KcVA3Ly8waUpUQ1FJU0lrRUpFeUo5K2dBQUFBQVNJSEVzQUVBQUZ0QlhF
RmVRVjlkd3c4ZkFGVklpZVZCVmxOSWcrd3c4ZzhSUmVoSgppZjdvQUFBQUFFaUp3L0lQRUVVUThn
OFJSZUR5RHhCVkdBOG95dklQV0UzbzhnOFJUY2p5RHhCZElQSVBXTmp5RHhGZDJQSVBXRlVvCjhn
OFJWZEJJaWQ4eDl1Z0FBQUFBOGc4UVZlanlEeEJGNFBJUFdNTHlEeEZGNFBJUEVFM1E4ZzljeXZJ
UEVVM1E4ZzhRSFc0d0FBRHkKRHhBbGJqQUFBRWlKMzc0QUFBQUF1Z0VBQUFEb0FBQUFBUElQRUVY
WThnOFFWZWp5RDF6QzhnOFJSZGhJaWQ4eDl2SVBFRTNROGc4UQpIVGN3QUFBUFYrUzZBUUFBQU9n
QUFBQUE4ZzhRSlNvd0FBQklpZDh4OXZJUEVFWFk4ZzhRVGNqeUR4QlY2QTlYMjdvQkFBQUE2QUFB
CkFBQklpZDh4OXZJUEVFWGc4ZzhRVGNqeUR4QlY2UElQRUIzdEx3QUE4ZzhRSmRVdkFBQzZBUUFB
QU9nQUFBQUFTSW5mNkFBQUFBQk0KaWZkSWlkN29BQUFBQUVpSjMwaUR4REJiUVY1ZDZRQUFBQUFQ
SDRRQUFBQUFBRlZJaWVWQlYwRldRVlZCVkZOSWdleW9BUUFBU1luMgpTWW4vaWdVQUFBQUFoTUIx
VTRBOS8vLy8vd0YxQ1VpTEJRQUFBQURySFVpTEJRQUFBQUJJaXpqb0FBQUFBRWlKQlFBQUFBREdC
Zi8vCi8vOEJTSTAxQUFBQUFFaUp4ekhTdVFJQUFBRG9BQUFBQUVpSkJRQUFBQURHQmYvLy8vOEJU
STF0RUlvRkFBQUFBSVRBZFI3eUR4QU4KS3k4QUFBOVh3T2dBQUFBQVNJa0ZBQUFBQU1ZRi8vLy8v
d0h5UVE4UVJSRHlEeEdGZVA3Ly8vSkJEeEJOR1BJUEVZMkEvdi8vWmtFUApMa2M0ZFNWNkkvSVBF
SVdBL3YvL1prRVBMa2RBZFJONkVVeUovK2dBQUFBQVNJWEFENFdJQndBQVNJMTlxRXlKOXVnQUFB
QUE4ZzhRClJhanlEeEdGY1A3Ly8vSVBFRVd3OGc4UmhXRCsvLzlJalgyb1RJbjI2QUFBQUFEeUR4
Q2xZUDcvLy9JUFdlVHlEeENkY1A3Ly8vSVAKV2R2eUR4QkZ1UElQRUUzQThnOVp5ZklQV2NEeUQx
akI4ZzlSMFBJUEVaVm8vdi8vRHlqRDhnOVl4UElQVWNqeUR4R05jUDcvLy9JUApFSVY0L3YvLzhn
OVp3ZklQRUkyQS92Ly84ZzlaeWt5Sjl6SDI2QUFBQUFCSWljTklpZC9vQUFBQUFFaUp4L0lQRUlW
dy92Ly84ZzhRCmpXaisvLy9vQUFBQUFFeUovMGlKM3VnQUFBQUFTWXRGR0VtSlIwQkppMFVRU1ls
SE9FbUxSUUJKaTAwSVNZbFBNRW1KUnloSmkwVVkKU0lsRUpCaEppMFVRU0lsRUpCQkppMFVBU1l0
TkNFaUpUQ1FJU0lrRUpPZ0FBQUFBOGc4UmhYRCsvLzlKaTBVWVNJbEVKQmhKaTBVUQpTSWxFSkJC
SmkwVUFTWXROQ0VpSlRDUUlTSWtFSk9nQUFBQUE4ZzhSaFhqKy8vOUppMFVZU0lsRUpCaEppMFVR
U0lsRUpCQkppMFVBClNZdE5DRWlKVENRSVNJa0VKT2dBQUFBQThnOFJoWUQrLy85SWpYMm9USW4y
NkFBQUFBQklqWDJvOGc4UVJhanlEeEdGYVA3Ly8vSVAKRUVXdzhnOFJoVmorLy85TWlmYm9BQUFB
QVBJUEVFVzQ4ZzhRVGNEeUQxbko4Zzlad1BJUFdNSHlEeENkV1A3Ly8vSVBXZHZ5RHhDTgphUDcv
Ly9JUFdjbnlEMUhROGc4UmxXRCsvLy95RDFqTDhnOVJ5ZklQRVkxby92Ly84ZzhRaFlEKy8vL3lE
MW5COGc4UURjVXNBQUR5CkQxbktUSW4zTWZib0FBQUFBRW1KeGt5SjkrZ0FBQUFBU0luSDhnOFFo
V2orLy8veUR4Q05ZUDcvLytnQUFBQUFUSW4zNkFBQUFBQkkKaWNOSXVBQUFBQUFBQUNKQThnOFFq
WGorLy8veUQxZ05keXdBQVBJUFdBMTNMQUFBOGc4UmpYaisvLy95RHhDRmNQNy8vL0lQRVVXSQo4
ZzhSVFpEeUR4Q0ZnUDcvLy9JUEVVV1lTSWxGb0VtOEFBQUFBQUFBSWtCSWkwV2dTSWxFSkJoSWkw
V1lTSWxFSkJCSWkwV0lTSXROCmtFaUpUQ1FJU0lrRUpPZ0FBQUFBWmc4b3lQSVBFSVZ3L3YvLzhn
OFJoV2ovLy8veUR4Q0ZlUDcvLy9JUEVZVncvLy8vOGc4UWhZRCsKLy8veUR4R0ZlUC8vLzB5SlpZ
Qkp2QUFBQUFBQUFDSkFTSXRGZ0VpSlJDUVlTSXVGZVAvLy8waUpSQ1FRU0l1RmFQLy8vMGlMalhE
LwovLzlJaVV3a0NFaUpCQ1JtRDFjTkpDMEFBUElQRVkxby92Ly82QUFBQUFCbUR5aklaZzlYRFFz
dEFBQklpZC95RHhDRmFQNy8vK2dBCkFBQUE4ZzhRQlhzckFBRHlEeENOY1A3Ly8vSVBFWTFJLy8v
LzhnOFFqWGorLy8veUR4R05VUC8vLy9JUEVJMkEvdi8vOGc4UmpWai8KLy85TWlhVmcvLy8vU2J3
QUFBQUFBQUFpUUVpTGhXRC8vLzlJaVVRa0dFaUxoVmovLy85SWlVUWtFRWlMaFVqLy8vOUlpNDFR
Ly8vLwpTSWxNSkFoSWlRUWtTSW5mNkFBQUFBQklpZC9vQUFBQUFFaUxCUUFBQUFCSWlZVm8vdi8v
OGc4UWhYRCsvLy95RHhHRktQLy8vL0lQCkVJVjQvdi8vOGc4UmhURC8vLy95RHhDRmdQNy8vL0lQ
RVlVNC8vLy9USW1sUVAvLy8waUxoVUQvLy85SWlVUWtHRWlMaFRqLy8vOUkKaVVRa0VFaUxoU2ov
Ly85SWk0MHcvLy8vU0lsTUpBaElpUVFrNkFBQUFBRHlEeEdGWVA3Ly8vSVBFSVZ3L3YvLzhnOFJo
UWovLy8veQpEeENGZVA3Ly8vSVBFWVVRLy8vLzhnOFFoWUQrLy8veUR4R0ZHUC8vLzB5SnBTRC8v
LzlJaTRVZy8vLy9TSWxFSkJoSWk0VVkvLy8vClNJbEVKQkJJaTRVSS8vLy9TSXVORVAvLy8waUpU
Q1FJU0lrRUpPZ0FBQUFBOGc4UmhWaisvLy95RHhDRmNQNy8vL0lQRVlYby92Ly8KOGc4UWhYaisv
Ly95RHhHRjhQNy8vL0lQRUlXQS92Ly84ZzhSaGZqKy8vOU1pYVVBLy8vL1NJdUZBUC8vLzBpSlJD
UVlTSXVGK1A3LwovMGlKUkNRUVNJdUY2UDcvLzBpTGpmRCsvLzlJaVV3a0NFaUpCQ1RvQUFBQUFQ
SVBFWVZRL3YvLzhnOFFoWEQrLy8veUR4R0Z5UDcvCi8vSVBFSVY0L3YvLzhnOFJoZEQrLy8veUR4
Q0ZnUDcvLy9JUEVZWFkvdi8vVEltbDRQNy8vMG04QUFBQUFBQUFJa0JJaTRYZy92Ly8KU0lsRUpC
aElpNFhZL3YvL1NJbEVKQkJJaTRYSS92Ly9TSXVOMFA3Ly8waUpUQ1FJU0lrRUpPZ0FBQUFBRHlq
WVNJbmZTSXUxYVA3LwovL0lQRUlWZy92Ly84ZzhRalZqKy8vL3lEeENWVVA3Ly96SFM2QUFBQUFC
TWlmL29BQUFBQUVpSngrZ0FBQUFBU0luRFNZdEZHRWlKClJDUVlTWXRGRUVpSlJDUVFTWXRGQUVt
TFRRaElpVXdrQ0VpSkJDVG9BQUFBQUVtTFJSaElpVVFrR0VtTFJSQklpVVFrRUVtTFJRQkoKaTAw
SVNJbE1KQWhJaVFRa1pnOVhCUVVxQUFEeUR4R0ZhUDcvLytnQUFBQUE4ZzhRRGZBcEFBQm1EMWZJ
U0luZjhnOFFoV2orLy8vbwpBQUFBQVBJUEVJVncvdi8vOGc4UmhhaisvLy95RHhDRmVQNy8vL0lQ
RVlXdy92Ly84ZzhRaFlEKy8vL3lEeEdGdVA3Ly8weUpwY0QrCi8vOUlpNFhBL3YvL1NJbEVKQmhJ
aTRXNC92Ly9TSWxFSkJCSWk0V28vdi8vU0l1TnNQNy8vMGlKVENRSVNJa0VKRWlKMzB5Sjl1Z0EK
QUFBQThnOFFEZk1uQUFEeUR4Q0ZjUDcvLy9JUEVZV0kvdi8vOGc4UWhYaisvLy95RHhHRmtQNy8v
L0lQRUlXQS92Ly84ZzhSaFpqKwovLzlNaWFXZy92Ly9TSXNWQUFBQUFFaUxoYUQrLy85SWlVUWtH
RWlMaFpqKy8vOUlpVVFrRUVpTGhZaisvLzlJaTQyUS92Ly9TSWxNCkpBaElpUVFrU0luZlRJbjJa
ZzlYd0E5WDB1Z0FBQUFBVEluMzZBQUFBQUJNaWYvb0FBQUFBRWlCeEtnQkFBQmJRVnhCWFVGZVFW
OWQKdzJhUVZVaUo1VUZYUVZaQlZGTklnK3dnU1luMlNZbjhTSTFkRUlvRkFBQUFBSVRBZFNQeUR4
QUZMU2NBQVBJUEVBMHRKd0FBNkFBQQpBQUJJaVFVQUFBQUF4Z1gvLy8vL0FVbUxCQ1JJaTBzWVNJ
bE1KQmhJaTBzUVNJbE1KQkJJaXd0SWkxTUlTSWxVSkFoSWlRd2tUSW5uClRJbjIvMUFvU0l0REdF
aUpSQ1FZU0l0REVFaUpSQ1FRU0lzRFNJdExDRWlKVENRSVNJa0VKRXlKNTB5Sjl1Z0FBQUFBU1lu
SDhnOFEKRGJzbUFBQklpeFVBQUFBQVNJdERHRWlKUkNRWVNJdERFRWlKUkNRUVNJc0RTSXRMQ0Vp
SlRDUUlTSWtFSkV5SjkweUovZzlYd0E5WAowdWdBQUFBQVNJdERHRWlKUkNRWVNJdERFRWlKUkNR
UVNJc0RTSXRMQ0VpSlRDUUlTSWtFSkV5SjkweUovdWdBQUFBQVNJdERHRWlKClJDUVlTSXRERUVp
SlJDUVFTSXNEU0l0TENFaUpUQ1FJU0lrRUpFeUo1MHlKOXVnQUFBQUFTWXNFSkV5SjUweUo5djlR
TUVpRHhDQmIKUVZ4QlhrRmZYY01QSDBRQUFGVklpZVZJeDBjUUFBQUFBRWlOQlJBQUFBQklpUWRJ
aXdVQUFBQUFTSXRJR0VpSlR6QklpMGdRU0lsUApLRWlMQ0VpTFFBaElpVWNnU0lsUEdGM0RacEJW
U0lubFNNZEhFQUFBQUFCSWpRVVFBQUFBU0lrSFNJc0ZBQUFBQUVpTFNCaElpVTh3ClNJdElFRWlK
VHloSWl3aElpMEFJU0lsSElFaUpUeGhkdzJhUVZVaUo1VUZYUVZaQlZVRlVVMGlEN0doSmlmWkpp
ZitLQlFBQUFBQ0UKd0hWVGdEMy8vLy8vQVhVSlNJc0ZBQUFBQU9zZFNJc0ZBQUFBQUVpTE9PZ0FB
QUFBU0lrRkFBQUFBTVlGLy8vLy93RklqVFVBQUFBQQpTSW5ITWRLNUF3QUFBT2dBQUFBQVNJa0ZB
QUFBQU1ZRi8vLy8vd0ZNalcwUWlnVUFBQUFBaE1CMUkvSVBFQVVHSlFBQThnOFFEUVlsCkFBRG9B
QUFBQUVpSkJRQUFBQURHQmYvLy8vOEI4a0VQRUVVUVprRVBMa2NvZFNkNkpmSkJEeEJITVBKQkR4
Qk5HR1lQTHNoMUUzb1IKVEluLzZBQUFBQUJJaGNBUGhTMENBQUJKaTBVWVNJbEVKQmhKaTBVUVNJ
bEVKQkJKaTBVQVNZdE5DRWlKVENRSVNJa0VKRXlKOStnQQpBQUFBVEluL1NJbkc2QUFBQUFCSmkw
VVlTWWxITUVtTFJSQkppVWNvU1l0RkFFbUxUUWhKaVU4Z1NZbEhHRXlKLytnQUFBQUFTSW5ICjZB
QUFBQUJJaWNOSWlkL29BQUFBQVBJUEVBVk5KQUFBU1l0RkdFaUpSQ1FZU1l0RkVFaUpSQ1FRU1l0
RkFFbUxUUWhJaVV3a0NFaUoKQkNSSWlkL29BQUFBQUVpSjMrZ0FBQUFBVElzbEFBQUFBRW1MUlJo
SWlVUWtHRW1MUlJCSWlVUWtFRW1MUlFCSmkwMElTSWxNSkFoSQppUVFrNkFBQUFBRHlEeEZGa0Vt
TFJSaElpVVFrR0VtTFJSQklpVVFrRUVtTFJRQkppMDBJU0lsTUpBaElpUVFrNkFBQUFBQVBLTkJJ
CmlkOU1pZWJ5RHhCRmtHWVBWOGtQVjlzeDB1Z0FBQUFBU0luZjZBQUFBQUJJalgyNDhnOFFCWllq
QUFCSmkwVVlTSWxFSkJoSmkwVVEKU0lsRUpCQkppMFVBU1l0TkNFaUpUQ1FJU0lrRUpBOG95T2dB
QUFBQVNJdEYwRWlKUkNRWVNJdEZ5RWlKUkNRUVNJdEZ1RWlMVGNCSQppVXdrQ0VpSkJDUklpZC95
RHhBRk5TTUFBT2dBQUFBQThnOFFEVGdqQUFCSWlkOFBWOERvQUFBQUFQSVBFQVVGSXdBQVNJbmY2
QUFBCkFBQklpZC9vQUFBQUFFbUxSUmhJaVVXd1NZdEZFRWlKUmFoSmkwVUFTWXROQ0VpSlRhQklp
VVdZVEluLzZBQUFBQUR5RHhBTjdTSUEKQUVpTEZRQUFBQUJJaTAyd1NJbE1KQmhJaTAyb1NJbE1K
QkJJaTAyWVNJdDFvRWlKZENRSVNJa01KRXlKOTBpSnhtWVBWOEFQVjlMbwpBQUFBQUV5Si8rZ0FB
QUFBU0lQRWFGdEJYRUZkUVY1QlgxM0RacEJWU0lubFFWZEJWbE5JZyt3WVNJbjc4ZzhRUlNEeUR4
RkYyUElQCkVFMG84ZzhSVGVCTWpYMFFTSVhiZEJKSWlkL3lEeEJGMlBJUEVFM2c2QUFBQUFEeUR4
QVZpU01BQUdZUFZNSm1EMVRLU0luZk1mYm8KQUFBQUFFaUp3MGlKMytnQUFBQUFTWW5HU0luZjZB
QUFBQUR5RDE1RjJQSVBYazNnVEluMzZBQUFBQUR5RHhBVlZ5TUFBUEpCRHhBSAo4a0VQRUU4SVpn
OVh3bVlQVjhwTWlmZm9BQUFBQUVpSjJFaUR4QmhiUVY1QlgxM0RabVptWm1ZdUR4K0VBQUFBQUFC
VlNJbmxRVlpUClNJUHNRRW1KOWtpSiswaUxBMGlMVFNoSWlVd2tHRWlMVFNCSWlVd2tFRWlMVFJC
SWkxVVlTSWxVSkFoSWlRd2svMUFvRHloRkVBOG8KVFNBUEtVM2dEeWxGMEVpTFJTaElpVVFrR0Vp
TFJTQklpVVFrRUVpTFJSQklpMDBZU0lsTUpBaElpUVFrU0luZlRJbjI2QUFBQUFCSQppMDNvU0ls
TUpCaElpMDNnU0lsTUpCQklpMDNRU0l0VjJFaUpWQ1FJU0lrTUpFeUo5MGlKeHVnQUFBQUFTSXNE
U0luZlRJbjIvMUF3ClNJUEVRRnRCWGwzRER4OUVBQUJWU0lubFNNZEhFQUFBQUFCSWpRVVFBQUFB
U0lrSFNNZEhHQUFBQUFCZHcxVklpZVZJeDBjUUFBQUEKQUVpTkJSQUFBQUJJaVFkSXgwY1lBQUFB
QUYzRFZVaUo1Vk5JZyt3NDhnOFJUZkR5RHhGRjZFaUorMGlMUlNoSWlVUWtHRWlMUlNCSQppVVFr
RUVpTFJSQklpMDBZU0lsTUpBaElpUVFrNkFBQUFBQklpMFVnU0l0TktFaUpUQ1FZU0lsRUpCQklp
MFVRU0l0TkdFaUpUQ1FJClNJa0VKUElQRUUzbzhnOWN5UElQV2NueUR4Rk42T2dBQUFBQThnOFFU
ZkR5RDF6SThnOVp5ZklQV0UzbzhnOFJUZkJJaXdOSWlkLy8KVURqeUQxbkFaZzh1UmZBUGs4Qkln
OFE0VzEzRER4OUVBQUJWU0lubFUxQklpZnRJaXdQL1VEanlEeEZGOEVpTEEwaUozLzlRT0E4bwp5
UElQRUVYdzhnOVl3UElQV0FYL0h3QUE4ZzlZeVVpRHhBaGJYY01QSDBBQVZVaUo1VUZYUVZaQlZV
RlVVMGlEN0doSWlmTkppZitLCkJRQUFBQUNFd0hWVGdEMy8vLy8vQVhVSlNJc0ZBQUFBQU9zZFNJ
c0ZBQUFBQUVpTE9PZ0FBQUFBU0lrRkFBQUFBTVlGLy8vLy93RkkKalRVQUFBQUFTSW5ITWRLNUFn
QUFBT2dBQUFBQVNJa0ZBQUFBQU1ZRi8vLy8vd0dLQlFBQUFBQ0V3SFZUZ0QzLy8vLy9BWFVKU0lz
RgpBQUFBQU9zZFNJc0ZBQUFBQUVpTE9PZ0FBQUFBU0lrRkFBQUFBTVlGLy8vLy93RklqVFVBQUFB
QVNJbkhNZEs1QWdBQUFPZ0FBQUFBClNJa0ZBQUFBQU1ZRi8vLy8vd0dLQlFBQUFBQ0V3SFZEZ0Qz
Ly8vLy9BWFVKU0lzRkFBQUFBT3NqOGc4UUJRTWZBQUR5RHhBTkF4OEEKQU9nQUFBQUFTSWtGQUFB
QUFNWUYvLy8vL3dGSWlRVUFBQUFBeGdYLy8vLy9BVXlOZFJDS0JRQUFBQUNFd0hVajhnOFFCY1Fl
QUFEeQpEeEFOekI0QUFPZ0FBQUFBU0lrRkFBQUFBTVlGLy8vLy93RkppMFlZU0lsRUpCaEppMFlR
U0lsRUpCQkppd1pKaTA0SVNJbE1KQWhJCmlRUWs2QUFBQUFEeUR4RkZzRW1MUmhoSWlVUWtHRW1M
UmhCSWlVUWtFRW1MQmttTFRnaElpVXdrQ0VpSkJDVG9BQUFBQVBJUEVFMncKOGc5ZHlQSVBXUTFO
SGdBQThnOFJUYkR5UVE4UVJ4aG1EeTdCZFJONkVVeUovK2dBQUFBQVNJWEFENFVkQXdBQThnOFFS
YkR5UVE4UgpSeGhKaTBZWVNJbEVKQmhKaTBZUVNJbEVKQkJKaXdaSmkwNElTSWxNSkFoSWlRUWs2
QUFBQUFEeUR4RkZxRW1MUmhoSWlVUWtHRW1MClJoQklpVVFrRUVtTEJrbUxUZ2hJaVV3a0NFaUpC
Q1RvQUFBQUFQSVBFVVdnU1l0R0dFaUpSQ1FZU1l0R0VFaUpSQ1FRU1lzR1NZdE8KQ0VpSlRDUUlT
SWtFSkVpSjMwaUpmWmpvQUFBQUFFbUp4RXlKNStnQUFBQUFTSW5EU0luZjZBQUFBQUJKaXdkTWlm
Ly9VRGp5RDFoRgpxRWlKMy9JUEVFMmc2QUFBQUFEeUR4Qk5zQThvd2ZJUFdNRHlEeEJkb1BJUFhO
bnlEeEJWcVBJUFhOSHlEeEZWdVBJUEVWM0E4ZzhSClJjanlEeEZGMEVpTFJkQklpVVFrR0VpTFJj
aElpVVFrRUVpTFJiaElpMDNBU0lsTUpBaElpUVFrU0luZjZBQUFBQUJJaWQvb0FBQUEKQUVpSjMr
Z0FBQUFBU0kwRkFBQUFBRWlORFFBQUFBQkJpMWNNZytJQzBlcUYwa2dQUmNoTWl5bEppMFlZU0ls
RUpCaEppMFlRU0lsRQpKQkJKaXdaSmkwNElTSWxNSkFoSWlRUWs2QUFBQUFEeUR4RkZzRW1MUmho
SWlVUWtHRW1MUmhCSWlVUWtFRW1MQmttTFRnaElpVXdrCkNFaUpCQ1RvQUFBQUFQSVBFVVdvU1l0
R0dFaUpSQ1FZU1l0R0VFaUpSQ1FRU1lzR1NZdE9DRWlKVENRSVNJa0VKT2dBQUFBQThnOFIKUmFC
SmkwWVlTSWxFSkJoSmkwWVFTSWxFSkJCSml3WkppMDRJU0lsTUpBaElpUVFrNkFBQUFBQVBLTmhJ
aWQ5TWllN3lEeEJGc1BJUApFRTJvOGc4UVZhQXgwdWdBQUFBQVNZdEdHRWlKUkNRWVNZdEdFRWlK
UkNRUVNZc0dTWXRPQ0VpSlRDUUlTSWtFSkVpTGZaam9BQUFBCkFFeUovMGlKeHVnQUFBQUFUSW4v
NkFBQUFBQklpY2ZvQUFBQUFFaUp3MG1MUmhoSWlVUWtHRW1MUmhCSWlVUWtFRW1MQmttTFRnaEkK
aVV3a0NFaUpCQ1JJaWQ5TWllYm9BQUFBQVBJUEVBMmlHd0FBU0lzVkFBQUFBRW1MUmhoSWlVUWtH
RW1MUmhCSWlVUWtFRW1MQmttTApUZ2hJaVV3a0NFaUpCQ1JJaWQ5TWllWm1EMWZBRDFmUzZBQUFB
QUR5RHhBTlJ4c0FBRWlMRlFBQUFBQkppMFlZU0lsRUpCaEppMFlRClNJbEVKQkJKaXdaSmkwNElT
SWxNSkFoSWlRUWtTSW5mVElubVpnOVh3QTlYMHVnQUFBQUFUSW5uNkFBQUFBQk1pZi9vQUFBQUFF
aUQKeEdoYlFWeEJYVUZlUVY5ZHd3OGZSQUFBVlVpSjVVRlhRVlpCVkZOSWcreEFTWW4yU0luN1NJ
c0RTSXROS0VpSlRDUVlTSXROSUVpSgpUQ1FRU0l0TkVFaUxWUmhJaVZRa0NFaUpEQ1QvVUNoSWkw
VW9TSWxFSkJoSWkwVWdTSWxFSkJCSWkwVVFTSXROR0VpSlRDUUlTSWtFCkpFaUozMHlKOXVnQUFB
QUFTWW5IVEkxbEVBOG9SUkFQS0UwZ0R5bE4wQThwUmNDS0JRQUFBQUNFd0hRSlNJc0ZBQUFBQU9z
ZThnOFEKRFdvYUFBQVBWOERvQUFBQUFFaUpCUUFBQUFER0JmLy8vLzhCU0l0TndFaUxWY2hJaTNY
UVNJdDkyRWlKZkNRWVNJbDBKQkJJaVZRawpDRWlKRENUeUR4QU5NUm9BQVBJUEVCVXhHZ0FBVElu
M1RJbitEMWZBU0luQzZBQUFBQUQyUXd3UWRERkppMFFrR0VpSlJDUVlTWXRFCkpCQklpVVFrRUVt
TEJDUkppMHdrQ0VpSlRDUUlTSWtFSkV5SjkweUovdWdBQUFBQVNZdEVKQmhJaVVRa0dFbUxSQ1FR
U0lsRUpCQkoKaXdRa1NZdE1KQWhJaVV3a0NFaUpCQ1JNaWZkTWlmN29BQUFBQUVpTEEwaUozMHlK
OXY5UU1FaUR4RUJiUVZ4QlhrRmZYY01QSDRBQQpBQUFBVlVpSjVVakhSeEFBQUFBQVNJMEZFQUFB
QUVpSkIwaUxCUUFBQUFCSWkwZ1lTSWxQTUVpTFNCQklpVThvU0lzSVNJdEFDRWlKClJ5QklpVThZ
WGNObWtGVklpZVZJeDBjUUFBQUFBRWlOQlJBQUFBQklpUWRJaXdVQUFBQUFTSXRJR0VpSlR6Qklp
MGdRU0lsUEtFaUwKQ0VpTFFBaElpVWNnU0lsUEdGM0RacEJWU0lubDhnOFFaUkR5RHhCMUdQSVBF
RlVnOGc5WTFQSVBFQjBCR1FBQThnOVkzdklQRUgwbwo4ZzlZL3ZJUEVDMzBHQUFBOGc5WTcyWVBM
c1J5RkdZUEx0QnlEbVlQTHN0eUNMQUJaZzh1NlhOLzhnOVlGYzRZQUFEeUQxZ2x2aGdBCkFMQUJa
Zzh1eEhJU1pnOHUwSElNWmc4dXpuSUdaZzh1K1hOVjhnOWMyZklQV2R2eUQxemc4ZzlaNUdZUEtQ
enlEMWo3OGc4UU5aUVkKQUFCbUR5NzNjeS95RDF6cDhnOVo3ZklQV09WbUR5NzBjeDN5RDF6UThn
OVowdklQV09wbUR5NzFjd3Z5RDFqYVpnOHU4dytUd0YzRApabVptWmk0UEg0UUFBQUFBQUZWSWll
VkJWMEZXUVZSVFNJUHNRRW1KOWttSi9Jb0ZBQUFBQUlUQWRWT0FQZi8vLy84QmRRbElpd1VBCkFB
QUE2eDFJaXdVQUFBQUFTSXM0NkFBQUFBQklpUVVBQUFBQXhnWC8vLy8vQVVpTk5RQUFBQUJJaWNj
eDBya0NBQUFBNkFBQUFBQkkKaVFVQUFBQUF4Z1gvLy8vL0FVaU5YUkR5RHhCREVHWkJEeTVFSkNo
MUozb2w4a0VQRUVRa01QSVBFRXNZWmc4dXlIVVRlaEZNaWVmbwpBQUFBQUVpRndBK0Z0UUVBQUVp
TFF4aElpVVFrR0VpTFF4QklpVVFrRUVpTEEwaUxTd2hJaVV3a0NFaUpCQ1JNaWZmb0FBQUFBRXlK
CjUwaUp4dWdBQUFBQVNJdERHRW1KUkNRd1NJdERFRW1KUkNRb1NJc0RTSXRMQ0VtSlRDUWdTWWxF
SkJoTWllZm9BQUFBQUVpSngrZ0EKQUFBQVNZbkc4ZzhRQlRvWEFBQklpME1ZU0lsRUpCaElpME1R
U0lsRUpCQklpd05JaTBzSVNJbE1KQWhJaVFRa1RJbjM2QUFBQUFCTQppZmZvQUFBQUFFeUo5NzRS
QUFBQTZBQUFBQUJNaXowQUFBQUFTSXRER0VpSlJDUVlTSXRERUVpSlJDUVFTSXNEU0l0TENFaUpU
Q1FJClNJa0VKT2dBQUFBQThnOFJSZGhJaTBNWVNJbEVKQmhJaTBNUVNJbEVKQkJJaXdOSWkwc0lT
SWxNSkFoSWlRUWs2QUFBQUFEeUR4RkYKMEVpTFF4aElpVVFrR0VpTFF4QklpVVFrRUVpTEEwaUxT
d2hJaVV3a0NFaUpCQ1RvQUFBQUFQSVBFVVhJU0l0REdFaUpSQ1FZU0l0RApFRWlKUkNRUVNJc0RT
SXRMQ0VpSlRDUUlTSWtFSk9nQUFBQUFEeWpZVEluM1RJbis4ZzhRUmRqeUR4Qk4wUElQRUZYSU1k
TG9BQUFBCkFFaUxReGhJaVVRa0dFaUxReEJJaVVRa0VFaUxBMGlMU3doSWlVd2tDRWlKQkNSTWlm
ZnlEeEFGL1JVQUFPZ0FBQUFBVElubjZBQUEKQUFCSWc4UkFXMEZjUVY1QlgxM0RabVl1RHgrRUFB
QUFBQUJWU0lubFFWZEJWa0ZVVTBpRDdHQkppZmRKaWY2S0JRQUFBQUNFd0hWRApnRDMvLy8vL0FY
VUpTSXNGQUFBQUFPc2o4ZzhRQmFjVkFBRHlEeEFOcHhVQUFPZ0FBQUFBU0lrRkFBQUFBTVlGLy8v
Ly93RklpUVVBCkFBQUF4Z1gvLy8vL0FVeU5aUkJKaXdaSmkwd2tHRWlKVENRWVNZdE1KQkJJaVV3
a0VFbUxEQ1JKaTFRa0NFaUpWQ1FJU0lrTUpFeUoKOTB5Si92OVFLRWlOZmNEeUR4QUZQQlVBQUVt
TFJDUVlTSWxFSkJoSmkwUWtFRWlKUkNRUVNZc0VKRW1MVENRSVNJbE1KQWhJaVFRawpEeWpJNkFB
QUFBQklpMFhZU0lsRUpCaElpMFhRU0lsRUpCQklpMFhBU0l0TnlFaUpUQ1FJU0lrRUpFeUo5MHlK
L3VnQUFBQUFTSW5EClNJdEYyRWlKUkNRWVNJdEYwRWlKUkNRUVNJdEZ3RWlMVGNoSWlVd2tDRWlK
QkNSTWlmOUlpZDdvQUFBQUFQSVBFQTIzRkFBQVNJc1YKQUFBQUFFaUxSZGhJaVVRa0dFaUxSZEJJ
aVVRa0VFaUxSY0JJaTAzSVNJbE1KQWhJaVFRa1RJbi9TSW5lRDFmQThnOFFGV3dVQUFEbwpBQUFB
QUVpTmZhRHlEeEFGWXhRQUFFbUxSQ1FZU0lsRUpCaEppMFFrRUVpSlJDUVFTWXNFSkVtTFRDUUlT
SWxNSkFoSWlRUWtEeWpJCjZBQUFBQUR5RHhBRlBSUUFBRWlMUmJoSWlVUWtHRWlMUmJCSWlVUWtF
RWlMUmFCSWkwMm9TSWxNSkFoSWlRUWtUSW4vNkFBQUFBQk0KaWYveUR4QUY3eE1BQU9nQUFBQUE4
ZzhRRFFJVUFBQk1pZjhQVjhEb0FBQUFBRXlKLytnQUFBQUFTWXNHVEluM1RJbisvMUF3U0lQRQpZ
RnRCWEVGZVFWOWR3MllQSDBRQUFGVklpZVZJeDBjUUFBQUFBRWlOQlJBQUFBQklpUWRJaXdVQUFB
QUFTSXRJR0VpSlR6QklpMGdRClNJbFBLRWlMQ0VpTFFBaElpVWNnU0lsUEdGM0RacEJWU0lubFNN
ZEhFQUFBQUFCSWpRVVFBQUFBU0lrSFNJc0ZBQUFBQUVpTFNCaEkKaVU4d1NJdElFRWlKVHloSWl3
aElpMEFJU0lsSElFaUpUeGhkdzJhUVZVaUo1VUZYUVZaQlZVRlVVMGlCN0tnQUFBQkppZlpKaWYy
SwpCUUFBQUFDRXdIVlRnRDMvLy8vL0FYVUpTSXNGQUFBQUFPc2RTSXNGQUFBQUFFaUxPT2dBQUFB
QVNJa0ZBQUFBQU1ZRi8vLy8vd0ZJCmpUVUFBQUFBU0luSE1kSzVBZ0FBQU9nQUFBQUFTSWtGQUFB
QUFNWUYvLy8vL3dGTWpYMFFpZ1VBQUFBQWhNQjFIdklQRUEzTEVnQUEKRDFmQTZBQUFBQUJJaVFV
QUFBQUF4Z1gvLy8vL0FmSkJEeEJIRVBJUEVZVjQvLy8vOGtFUEVFOFk4ZzhSVFlCbVFROHVSU2gx
SW5vZwo4ZzhRUllCbVFROHVSVEIxRTNvUlRJbnY2QUFBQUFCSWhjQVBoVTBGQUFCSmkwY1lTWWxG
TUVtTFJ4QkppVVVvU1lzSFNZdFBDRW1KClRTQkppVVVZU0kxOXFFeUo5dWdBQUFBQThnOFFSYWp5
RHhHRmNQLy8vL0lQRUVXdzhnOFJoV2ovLy85SWpYMm9USW4yNkFBQUFBRHkKRHhCRnVQSVBFRTNB
OGc5WnlmSVBXY0R5RDFqQjhnOFFuV2ovLy8veUQxbmI4ZzhRalhELy8vL3lEMW5KOGc5UjBQSVBF
WlZnLy8vLwo4ZzlZeS9JUFVjbnlEeEdOYVAvLy8vSVBFSVY0Ly8vLzhnOVp3ZklQRUUyQThnOVp5
a3lKOXpIMjZBQUFBQUJJaWNOSWlaMXcvLy8vClNJbmY2QUFBQUFCSWljZnlEeENGYVAvLy8vSVBF
STFnLy8vLzZBQUFBQUJJaWQvb0FBQUFBRW1KeEVtTFJ4aElpVVFrR0VtTFJ4QkkKaVVRa0VFbUxC
MG1MVHdoSWlVd2tDRWlKQkNUb0FBQUFBRW1MUnhoSWlVUWtHRW1MUnhCSWlVUWtFRW1MQjBtTFR3
aElpVXdrQ0VpSgpCQ1JtRDFjRitoRUFBUElQRVlWby8vLy82QUFBQUFCbUR5aklaZzlYRGVFUkFB
Qk1pZWZ5RHhDRmFQLy8vK2dBQUFBQVNJMTlpUElQCkVBMEZFUUFBU1l0SEdFaUpSQ1FZU1l0SEVF
aUpSQ1FRU1lzSFNZdFBDRWlKVENRSVNJa0VKR1lQVjhEb0FBQUFBRWlMUmFCSWlVUWsKR0VpTFJa
aElpVVFrRUVpTFJZaElpMDJRU0lsTUpBaElpUVFrNkFBQUFBRHlEeEdGYVAvLy8waUxSYUJJaVVR
a0dFaUxSWmhJaVVRawpFRWlMUlloSWkwMlFTSWxNSkFoSWlRUWs2QUFBQUFCbUR5NkZhUC8vLzNZ
cVNJdEZvRWlKUkNRWVNJdEZtRWlKUkNRUVNJdEZpRWlMClRaQklpVXdrQ0VpSkJDVG9BQUFBQU9z
b1NJdEZvRWlKUkNRWVNJdEZtRWlKUkNRUVNJdEZpRWlMVFpCSWlVd2tDRWlKQkNUb0FBQUEKQUVp
TFJaaElpMDJnU0lsTUpCaElpVVFrRUVpTFJZaElpMDJRU0lsTUpBaElpUVFrOGc5WkJRTVFBQUJN
aWVmb0FBQUFBRXlKNStnQQpBQUFBU0lzZEFBQUFBRWlMUmFCSWlVUWtHRWlMUlpoSWlVUWtFRWlM
UlloSWkwMlFTSWxNSkFoSWlRUWs2QUFBQUFEeUR4R0ZhUC8vCi8waUxSYUJJaVVRa0dFaUxSWmhJ
aVVRa0VFaUxSWWhJaTAyUVNJbE1KQWhJaVFRazZBQUFBQUR5RHhHRllQLy8vMGlMUmFCSWlVUWsK
R0VpTFJaaElpVVFrRUVpTFJZaElpMDJRU0lsTUpBaElpUVFrNkFBQUFBRHlEeEdGV1AvLy8waUxS
YUJJaVVRa0dFaUxSWmhJaVVRawpFRWlMUlloSWkwMlFTSWxNSkFoSWlRUWs2QUFBQUFBUEtOaE1p
ZWRJaWQ3eUR4Q0ZhUC8vLy9JUEVJMWcvLy8vOGc4UWxWai8vLzh4CjB1Z0FBQUFBU0kxOXFFeUo5
dWdBQUFBQVNJMTlxUElQRUVXbzhnOFJoV2ovLy8veUR4QkZzUElQRVlWWS8vLy9USW4yNkFBQUFB
RHkKRHhCRnVQSVBFRTNBOGc5WnlmSVBXY0R5RDFqQjhnOFFuVmovLy8veUQxbmI4ZzhRaldqLy8v
L3lEMW5KOGc5UjBQSVBFWlZnLy8vLwo4ZzlZeS9JUFVjbnlEeEdOYVAvLy8vSVBFSVY0Ly8vLzhn
OVp3ZklQRUUyQThnOVp5a3lKOXpIMjZBQUFBQUJJaWNOSWlkL29BQUFBCkFFaUp4L0lQRUlWby8v
Ly84ZzhRaldELy8vL29BQUFBQUV5SjcwaUozdWdBQUFBQVRJbnY2QUFBQUFCSWljZm9BQUFBQUVt
SnhrbUwKUnhoSWlVUWtHRW1MUnhCSWlVUWtFRW1MQjBtTFR3aElpVXdrQ0VpSkJDVG9BQUFBQUdZ
UEtNaEppMGNZU0lsRUpCaEppMGNRU0lsRQpKQkJKaXdkSmkwOElTSWxNSkFoSWlRUWs4ZzhRQlpN
T0FBQm1EMWZJOGc4UlRZRG9BQUFBQVBJUEVBMTlEZ0FBWmc5WHlFeUo5L0lQCkVFV0E2QUFBQUFC
SmkwY1lTSWxFSkJoSmkwY1FTSWxFSkJCSml3ZEppMDhJU0lsTUpBaElpUVFrVEluM1NJdWRjUC8v
LzBpSjN1Z0EKQUFBQThnOFFEWUFOQUFCSWl4VUFBQUFBU1l0SEdFaUpSQ1FZU1l0SEVFaUpSQ1FR
U1lzSFNZdFBDRWlKVENRSVNJa0VKRXlKOTBpSgozbVlQVjhBUFY5TG9BQUFBQUVpSjMrZ0FBQUFB
VEludjZBQUFBQUJJZ2NTb0FBQUFXMEZjUVYxQlhrRmZYY01QSHdCVlNJbmxRVmRCClZrRlVVMGlE
N0NCSmlmWkppZnhJalYwUWlnVUFBQUFBaE1CMUkvSVBFQVg5REFBQThnOFFEZjBNQUFEb0FBQUFB
RWlKQlFBQUFBREcKQmYvLy8vOEJTWXNFSkVpTFN4aElpVXdrR0VpTFN4QklpVXdrRUVpTEMwaUxV
d2hJaVZRa0NFaUpEQ1JNaWVkTWlmYi9VQ2hJaTBNWQpTSWxFSkJoSWkwTVFTSWxFSkJCSWl3Tklp
MHNJU0lsTUpBaElpUVFrVElublRJbjI2QUFBQUFCSmljZnlEeEFOaXd3QUFFaUxGUUFBCkFBQklp
ME1ZU0lsRUpCaElpME1RU0lsRUpCQklpd05JaTBzSVNJbE1KQWhJaVFRa1RJbjNUSW4rRDFmQUQx
ZlM2QUFBQUFCSWkwTVkKU0lsRUpCaElpME1RU0lsRUpCQklpd05JaTBzSVNJbE1KQWhJaVFRa1RJ
bjNUSW4rNkFBQUFBQkppd1FrVElublRJbjIvMUF3U0lQRQpJRnRCWEVGZVFWOWR3MmFRVlVpSjVV
RlhRVlpUVUVHSjkwVXg5a0dEL3hvUGh3VUNBQUJFaWZoSWpRMUVCQUFBU0dNRWdVZ0J5UC9nCmdE
My8vLy8vQVhVTVNJc2RBQUFBQU9uQ0FRQUF2MEFBQUFEb0FBQUFBRWlKdzBqSFF4QUFBQUFBU0kw
RkVBQUFBRWlKQThkREdBQUEKQUFCSWl3VUFBQUFBU0l0SUdFaUpTemhJaTBnUVNJbExNRWlMQ0Vp
TFFBaElpVU1vU0lsTElFaUpIUUFBQUFER0JmLy8vLzhCNldNQgpBQUNBUGYvLy8vOEJENFc3QUFB
QVNJc2RBQUFBQU9sS0FRQUFnRDMvLy8vL0FRK0ZaZ0VBQUVpTEhRQUFBQURwUUFFQUFJQTkvLy8v
Ci93RVBoYUlCQUFCSWl4MEFBQUFBNlNjQkFBQ0FQZi8vLy84QkQ0WGhBUUFBU0lzZEFBQUFBT2tP
QVFBQWdEMy8vLy8vQVErRklBSUEKQUVpTEhRQUFBQURwOVFBQUFJQTkvLy8vL3dFUGhWOENBQUJJ
aXgwQUFBQUE2ZHdBQUFDQVBmLy8vLzhCRDRXQUFnQUFTSXNkQUFBQQpBT25EQUFBQWdEMy8vLy8v
QVErRnZ3SUFBRWlMSFFBQUFBRHBxZ0FBQUw5QUFBQUE2QUFBQUFCSWljTkl4ME00QUFBQUFFakhR
ekFBCkFBQUFTTWRES0FBQUFBQkl4ME1nQUFBQUFFakhReGdBQUFBQVNNZERFQUFBQUFCSXgwTUlB
QUFBQUVqSEF3QUFBQUJJalFVUUFBQUEKU0lrRHgwTVlBQUFBQUVpTEJRQUFBQUJJaTBnWVNJbExP
RWlMU0JCSWlVc3dTSXNJU0l0QUNFaUpReWhJaVVzZ1NJMEZFQUFBQUVpSgpBMGlKSFFBQUFBREdC
Zi8vLy84QlJEbDdDSFFKU0lzRFNJbmYvMUJJU0lYYmRBZEVpWHNJU1luZVRJbndTSVBFQ0Z0Qlhr
RmZYY08vCk9BQUFBT2dBQUFBQVNJbkRTTWRERUFBQUFBQklqUVVRQUFBQVNJa0RTSXNGQUFBQUFF
aUxTQmhJaVVzd1NJdElFRWlKU3loSWl3aEkKaTBBSVNJbERJRWlKU3hoSWlSMEFBQUFBeGdYLy8v
Ly9BZXVSdnpnQUFBRG9BQUFBQUVpSncwakhReEFBQUFBQVNJMEZFQUFBQUVpSgpBMGlMQlFBQUFB
QklpMGdZU0lsTE1FaUxTQkJJaVVzb1NJc0lTSXRBQ0VpSlF5QklpVXNZU0lrZEFBQUFBTVlGLy8v
Ly93SHBPZi8vCi83ODRBQUFBNkFBQUFBQklpY05JeDBNUUFBQUFBRWlOQlJBQUFBQklpUU5JaXdV
QUFBQUFTSXRJR0VpSlN6QklpMGdRU0lsTEtFaUwKQ0VpTFFBaElpVU1nU0lsTEdFaUpIUUFBQUFE
R0JmLy8vLzhCNmVIKy8vKy9PQUFBQU9nQUFBQUFTSW5EU01kREVBQUFBQUJJalFVUQpBQUFBU0lr
RFNJc0ZBQUFBQUVpTFNCaElpVXN3U0l0SUVFaUpTeWhJaXdoSWkwQUlTSWxESUVpSlN4aElpUjBB
QUFBQXhnWC8vLy8vCkFlbUovdi8vdnlBQUFBRG9BQUFBQUVpSncwakhReEFBQUFBQVNJMEZFQUFB
QUVpSkEwakhReGdBQUFBQVNJa2RBQUFBQU1ZRi8vLy8KL3dIcFQvNy8vNzg0QUFBQTZBQUFBQUJJ
aWNOSXgwTVFBQUFBQUVpTkJSQUFBQUJJaVFOSWl3VUFBQUFBU0l0SUdFaUpTekJJaTBnUQpTSWxM
S0VpTENFaUxRQWhJaVVNZ1NJbExHRWlKSFFBQUFBREdCZi8vLy84QjZmZjkvLysvSUFBQUFPZ0FB
QUFBU0luRFNNZERHQUFBCkFBQkl4ME1RQUFBQUFFakhRd2dBQUFBQVNNY0RBQUFBQUVpTkJSQUFB
QUJJaVFOSWlSMEFBQUFBeGdYLy8vLy9BZW11L2YvL0R4OEEKeGZ2Ly84WDcvLy9GKy8vL3hmdi8v
OFg3Ly8rMy9mLy9VdnovLzhYNy8vL0YrLy8vT2Z6Ly96bjgvLy9GKy8vL3hmdi8vMnY4Ly8rMwov
Zi8vdC8zLy83ZjkvLyszL2YvL2hQei8vNTM4Ly8rMi9QLy96L3ovLytqOC8vKzMvZi8vdC8zLy83
ZjkvLy9GKy8vL1ptWm1MZzhmCmhBQUFBQUFBVlVpSjVZQTkvLy8vL3dGMUNVaUxCUUFBQUFCZHc3
OUlBQUFBNkFBQUFBQkl4MEFRQUFBQUFFaU5EUkFBQUFCSWlRaEkKaXcwQUFBQUFTSXRSR0VpSlVF
QklpMUVRU0lsUU9FaUxFVWlMU1FoSWlVZ3dTSWxRS0VpSkJRQUFBQURHQmYvLy8vOEJYY01QSDRR
QQpBQUFBQUZWSWllVkJWMEZXUVZWQlZGTklnZXlvQVFBQTZBQUFBQUJKaWNZeDIwMkY5ZytFM3dN
QUFFeUo5NzRCQUFBQTZBQUFBQUJKCmljZE5oZjhQaEw0REFBQklqWDJZVEluK01kTG9BQUFBQUVp
TnZYai8vLzlNaWY2NkFRQUFBT2dBQUFBQVNJdEZzRWlMalhqLy8vOUkKaTFXQVNJdDFpRWlMZlpC
SWlYd2tPRWlKZENRd1NJbFVKQ2hJaVV3a0lFaUpSQ1FZU0l0RnFFaUpSQ1FRU0l0Rm1FaUxUYUJJ
aVV3awpDRWlKQkNSSWpYMjQ2QUFBQUFCTWlmL29BQUFBQUVpTnZVai8vLy95RHlyQThnOVpCUUFH
QUFEeUQxNEZBQVlBQVBJUEVZV28vdi8vCjZBQUFBQUJJamIwby8vLy9USXVGU1AvLy8waUxqVkQv
Ly85SWk1VlkvLy8vU0l1MVlQLy8vMGlMbldqLy8vOUlpNFZ3Ly8vL1NJbEUKSkVoSWlWd2tRRWlK
ZENRNFNJbFVKREJJaVV3a0tFeUpSQ1FnU0l0RjBFaUpSQ1FZU0l0RnlFaUpSQ1FRU0l0RnVFaUxU
Y0JJaVV3awpDRWlKQkNUb0FBQUFBREhiOGc4UWhYRC8vLy95RHhHRndQNy8vL0lQRUlWby8vLy84
ZzhSaGFEKy8vL3lEeENGWVAvLy8vSVBFWVdJCi92Ly84ZzhRaFZqLy8vL3lEeEdGa1A3Ly8vSVBF
SVZJLy8vLzhnOFJoWmorLy8veUR4Q0ZVUC8vLy9JUEVZV0Evdi8vOGc4UVJiankKRHhHRnVQNy8v
L0lQRUVYQThnOFJoYkQrLy8veUR4Q0ZPUC8vLy9JUEVJMUEvLy8vTWY4eDl1Z0FBQUFBU1luRlRZ
WHRENFFCQWdBQQo4ZzhRaFlqKy8vL3lEMW1Gc1A3Ly8vSVBFSTJBL3YvLzhnOVpqYmorLy8veUQx
akk4ZzhRaGNEKy8vL3lEMWpCOGc4UmhjRCsvLzlNCmllL29BQUFBQUVtSnhQSVBFSTNBL3YvLzhn
OWNqVEQvLy8veUR4Q0ZrUDcvLy9JUFdZV3cvdi8vOGc4UWxaaisvLy95RDFtVnVQNy8KLy9JUFdO
RHlEeENGb1A3Ly8vSVBXTUx5RDF5RktQLy8vMGlOdmZqKy8vL29BQUFBQUVpTnZjaisvLzlJaTRV
WS8vLy9TSXVOSVAvLwovMGlKalhELy8vOUlpWVZvLy8vL1NJdUZFUC8vLzBpSmhXRC8vLzlJaTRV
SS8vLy9TSW1GV1AvLy8waUxoZmorLy85SWk0MEEvLy8vClNJbU5VUC8vLzBpSmhVai8vLzlJaTRV
WS8vLy9TSXVOSVAvLy8waUpUQ1FvU0lsRUpDQklpNFVRLy8vL1NJbEVKQmhJaTRVSS8vLy8KU0ls
RUpCQklpNFg0L3YvL1NJdU5BUC8vLzBpSlRDUUlTSWtFSlBJUEVJV28vdi8vNkFBQUFBQklpNFhv
L3YvL1NJdU44UDcvLzBpSgpqWEQvLy85SWlZVm8vLy8vU0l1RjRQNy8vMGlKaFdELy8vOUlpNFhZ
L3YvL1NJbUZXUC8vLzBpTGhjaisvLzlJaTQzUS92Ly9TSW1OClVQLy8vMGlKaFVqLy8vOUlpNFhv
L3YvL1NJdU44UDcvLzBpSlRDUW9TSWxFSkNCSWk0WGcvdi8vU0lsRUpCaElpNFhZL3YvL1NJbEUK
SkJCSWk0WEkvdi8vU0l1TjBQNy8vMGlKVENRSVNJa0VKRXlKNStnQUFBQUFUSW5uVEluKzZBQUFB
QUJNaWZmb0FBQUFBRXlKNitzSQpUSW4zNkFBQUFBQklpZGhJZ2NTb0FRQUFXMEZjUVYxQlhrRmZY
Y01BQUFBQUFBQUFBQUFBQVBBL0FBQUFBQUFBNEQ4Ykd4c2JHeHZyClB3QUFBQUFBQVBBL0dob2FH
aG9hNmo4QUFBQUFBQURnUHdBQUFBQUFBT0MvQUFBQUFBQUE0RCthbVptWm1abnBQd0FBQUFBQUFQ
Qy8KQUFBQUFBQUE4RDhBQUFBQUFBRG9Qd0FBQUFBQUFDQkFBQUFBQUFBQUVFQUFBQUFBQUFEZ1A1
cVptWm1abWNrL0FBQUFBQUFBOEQ4ZQpIaDRlSGg2K1AzRTlDdGVqY08wL1ptWm1abVptMWo4QUFB
QUFBQUR3dndBQUFBQUFBQURBQUFBQUFBQUFNRUFBQUFBQUFBQWtRQUFBCkFBQUFBQ0JBQUFBQUFB
QUE4RDltWm1abVptYldQd0FBQUFBQUFPQS9BQUFBQUFBQThMK2FtWm1abVpucFB3QUFBQUFBQVBD
L0FBQUEKQUFBQThEOEFBQUFBQUFBUVFBQUFBQUFBQUFCQUFBQUFBQUFBSU1BQUFBQUFBQUR3UHdB
QUFBQUFBTkEvQUFBQUFBQUFFRUFBQUFBQQpBQUFBUUFBQUFBQUFBQ0RBQUFBQUFBQUE0RDhBQUFB
QUFBQVVRQmd0UkZUN0lRbEFHQzFFVlBzaCtUL1NJVE4vZk5rU1FNUDFLRnlQCnd1VS9BQUFBQUFB
QUlrQUFBQUFBQUFBQVFBQUFBQUFBQVBBL0FBQUFBQUFBRkVBQUFBQUFBQUR3dndBQUFBQUFBUEEv
ZXhTdVIrRjYKdEQ4QUFBQUFBQUR3dndBQUFBQUFBUEEvQUFBQUFBQUEwRDhBQUFBQUFBQVVRQUFB
QUFBQUFPQS9BQUFBQUFBQTdEOEFBQUFBQUFEdwp2d0FBQUFBQUFBQkFBQUFBQUFBQThEOEFBQUFB
QUFEZ1AreFJ1QjZGNjhFL0FBQUFBQUFBOEwrYW1abVptWm5wUHdBQUFBQUFBUEMvCkFBQUFBQUFB
OEQ4QUFBQUFBQUFrUUFBQUFBQUFBQ1RBQUFBQUFBQUFXVUFBQUFBQUFBQWtRQUFBQUFBQUFQQS9B
QUFBQUFBQTREOEEKQUFBQUFBRHd2d0FBQUFBQUFDWkFabVptWm1abTdqL0Q5U2hjajhMbFB3QUFB
QUFBQUFCQUFBQUFBQUFBNEQ4QUFBQUFBQUR3dndBQQpBQUFBQVBBL2V4U3VSK0Y2dEQ4QUFBQUFB
QUR3dndBQUFBQUFBQkJBQUFBQUFBQUFGa0FZTFVSVSt5RUpRQUFBQUFBQWdHWkFBQUFBCkFBQUFB
SUFBQUFBQUFBQUFnQUFBQUFBQUFBQ0FBQUFBQUFBQUFJQUFBQUFBQUFBQWdBQUFBQUFBQUFDQUFB
QUFBQUFBQUlBQUFBQUEKQUFBQWdBQUFBQUFBQUFDQUFBQUFBQUFBQUlELy8vLy8vLy8vZi8vLy8v
Ly8vLzkvQUFBQUFBQUFBSUFBQUFBQUFBQUFnQUFBQUFBQQpBQUNBQUFBQUFBQUFBSUFsVUVSR0xU
RXVNd29seE9YeTVldW44NkRReE1ZS05DQXdJRzlpYWdvOFBDQXZUR1Z1WjNSb0lEVWdNQ0JTCklD
OUdhV3gwWlhJZ0wwWnNZWFJsUkdWamIyUmxJRDQrQ25OMGNtVmhiUXA0QVUyTU93NkFNQXhEZDA3
aEU0U21uNFRNRE13OUF4SXcKd0ZEMS9oSXRFZ2g1OHZPVEN6SUt4cmt5MWdyM3BLNFlsd2IyQ2c3
a2RHSTQ0dWdGMXdlVWttZkIyUllYOVJHOHlQQjFqbVFxWFhndgpsSVRUSDNURlFpYytrWWt4Mm1t
eURnNXNRNzRCUWRVZ3lRcGxibVJ6ZEhKbFlXMEtaVzVrYjJKcUNqVWdNQ0J2WW1vS01UQTNDbVZ1
ClpHOWlhZ295SURBZ2IySnFDanc4SUM5VWVYQmxJQzlRWVdkbElDOVFZWEpsYm5RZ015QXdJRkln
TDFKbGMyOTFjbU5sY3lBMklEQWcKVWlBdlEyOXVkR1Z1ZEhNZ05DQXdJRklnTDAxbFpHbGhRbTk0
SUZzd0lEQWdNallnTVRWZENqNCtDbVZ1Wkc5aWFnbzJJREFnYjJKcQpDanc4SUM5UWNtOWpVMlYw
SUZzZ0wxQkVSaUJkSUM5RGIyeHZjbE53WVdObElEdzhJQzlEY3pFZ055QXdJRklnUGo0Z0wwVjRk
RWRUCmRHRjBaU0E4UENBdlIzTXhJRGdnTUNCU0NqNCtJRDQrQ21WdVpHOWlhZ280SURBZ2IySnFD
anc4SUM5VWVYQmxJQzlGZUhSSFUzUmgKZEdVZ0wwOVFUU0F4SUQ0K0NtVnVaRzlpYWdvNUlEQWdi
MkpxQ2p3OElDOU1aVzVuZEdnZ01UQWdNQ0JTSUM5T0lETWdMMEZzZEdWeQpibUYwWlNBdlJHVjJh
V05sVWtkQ0lDOUdhV3gwWlhJZ0wwWnNZWFJsUkdWamIyUmxJRDQrQ25OMGNtVmhiUXA0QVoyV2Qx
UlQyUmFICno3MDN2ZEFTSWlBbDlCcDZDU0RTTzBnVkJGR0pTWUJRQW9hRUpuWkVCVVlVRVNsV1pG
VEFBVWVISW1ORkZBdURnbUxYQ2ZJUVVNYkIKVVVSRjVkMk1hd252clRYejNwcjl4MW5mMmVlMzE5
bG43MzNYdWdCUS9JSUV3blJZQVlBMG9WZ1U3dXZCWEJJVHk4VDNBaGdRQVE1WQpBY0RoWm1ZRVIv
aEVBdFQ4dlQyWm1haEl4clAyN2k2QVpMdmJMTDlRSm5QVy8zK1JJamRESkFZQUNrWFZOangrSmhm
bEFwUlRzOFVaCk12OEV5dlNWS1RLR01USVdvUW1pckNManhLOXM5cWZtSzd2Sm1KY201S0VhV2M0
WnZEU2VqTHRRM3BvbDRhT01CS0ZjbUNYZ1o2TjgKQjJXOVZFbWFBT1gzS05QVCtKeE1BREFVbVYv
TTV5YWhiSWt5UlJRWjdvbnlBZ0FJbE1RNXZISU9pL2s1YUo0QWVLWm41SW9FaVVsaQpwaEhYbUdu
bDZNaG0rdkd6VS9saU1TdVV3MDNoaUhoTXovUzBESTR3RjRDdmI1WkZBU1ZaYlpsb2tlMnRITzN0
V2RibWFQbS8yZDhlCmZsUDlQY2g2KzFYeEp1elBua0dNbmxuZmJPeXNMNzBXQVBZa1dwc2RzNzZW
VlFDMGJRWkE1ZUdzVCs4Z0FQSUZBTFRlblBNZWhteGUKa3NUaURDY0xpK3pzYkhNQm4yc3VLK2cz
KzUrQ2I4cS9oam4zbWN2dSsxWTdwaGMvZ1NOSkZUTmxSZVdtcDZaTFJNek1EQTZYejJUOQo5eEQv
NDhBNWFjM0p3eXljbjhBWDhZWG9WVkhvbEFtRWlXaTdoVHlCV0pBdVpBcUVmOVhoZnhnMkp3Y1pm
cDFyRkdoMVh3QjloVGxRCnVFa0h5Rzg5QUVNakF5UnVQM29DZmV0YkVERUt5TDY4YUsyUnIzT1BN
bnIrNS9vZkMxeUtidUZNUVNKVDV2WU1qMlJ5SmFJc0dhUGYKaEd6QkFoS1FCM1NnQ2pTQkxqQUNM
R0FOSElBemNBUGVJQUNFZ0VnUUE1WURMa2dDYVVBRXNrRSsyQUFLUVRIWUFYYURhbkFBMUlGNgow
QVJPZ2pad0Jsd0VWOEFOY0FzTWdFZEFDb2JCU3pBQjNvRnBDSUx3RUJXaVFhcVFGcVFQbVVMV0VC
dGFDSGxEUVZBNEZBUEZRNG1RCkVKSkErZEFtcUJncWc2cWhRMUE5OUNOMEdyb0lYWVA2b0FmUUlE
UUcvUUY5aEJHWUF0TmhEZGdBdG9EWnNEc2NDRWZDeStCRWVCV2MKQnhmQTIrRkt1QlkrRHJmQ0Yr
RWI4QUFzaFYvQ2t3aEF5QWdEMFVaWUNCdnhSRUtRV0NRQkVTRnJrU0trQXFsRm1wQU9wQnU1alVp
UgpjZVFEQm9laFlaZ1lGc1laNDRkWmpPRmlWbUhXWWtvdzFaaGptRlpNRitZMlpoQXpnZm1DcFdM
VnNhWllKNncvZGdrMkVadU5MY1JXCllJOWdXN0NYc1FQWVlldzdIQTdId0JuaUhIQit1QmhjTW00
MXJnUzNEOWVNdTREcnd3M2hKdkY0dkNyZUZPK0NEOEZ6OEdKOEliNEsKZnh4L0h0K1BIOGEvSjVB
SldnUnJnZzhobGlBa2JDUlVFQm9JNXdqOWhCSENORkdCcUU5MElvWVFlY1JjWWlteGp0aEJ2RWtj
Sms2VApGRW1HSkJkU0pDbVp0SUZVU1dvaVhTWTlKcjBoazhrNlpFZHlHRmxBWGsrdUpKOGdYeVVQ
a2o5UWxDZ21GRTlLSEVWQzJVNDVTcmxBCmVVQjVRNlZTRGFodTFGaXFtTHFkV2srOVJIMUtmUzlI
a3pPWDg1Zmp5YTJUcTVGcmxldVhleVZQbE5lWGQ1ZGZMcDhuWHlGL1N2Nm0KL0xnQ1VjRkF3Vk9C
bzdCV29VYmh0TUk5aFVsRm1xS1ZZb2hpbW1LSllvUGlOY1ZSSmJ5U2daSzNFaytwUU9tdzBpV2xJ
UnBDMDZWNQowcmkwVGJRNjJtWGFNQjFITjZUNzA1UHB4ZlFmNkwzMENXVWxaVnZsS09VYzVScmxz
OHBTQnNJd1lQZ3pVaG1sakpPTXU0eVA4elRtCnVjL2p6OXMycjJsZS83d3BsZmtxYmlwOGxTS1Za
cFVCbFkrcVRGVnYxUlRWbmFwdHFrL1VNR29tYW1GcTJXcjcxUzZyamMrbnozZWUKejUxZk5QL2sv
SWZxc0xxSmVyajZhdlhENmozcWt4cWFHcjRhR1JwVkdwYzB4alVabW02YXlacmxtdWMweDdSb1dn
dTFCRnJsV3VlMQpYakNWbWU3TVZHWWxzNHM1b2EydTdhY3QwVDZrM2FzOXJXT29zMWhubzA2enpo
TmRraTViTjBHM1hMZFRkMEpQU3k5WUwxK3ZVZStoClBsR2ZyWitrdjBlL1czL0t3TkFnMm1DTFFa
dkJxS0dLb2I5aG5tR2o0V01qcXBHcjBTcWpXcU03eGpoanRuR0s4VDdqV3lhd2laMUoKa2ttTnlV
MVQyTlRlVkdDNno3VFBER3ZtYUNZMHF6Vzd4Nkt3M0ZsWnJFYldvRG5EUE1oOG8zbWIrU3NMUFl0
WWk1MFczUlpmTE8wcwpVeTNyTEI5WktWa0ZXRzIwNnJENnc5ckVtbXRkWTMzSGhtcmpZN1BPcHQz
bXRhMnBMZDkydisxOU81cGRzTjBXdTA2N3ovWU85aUw3Ckp2c3hCejJIZUllOUR2ZllkSFlvdTRS
OTFSSHI2T0c0enZHTTR3Y25leWV4MDBtbjM1MVp6aW5PRGM2akN3d1g4QmZVTFJoeTBYSGgKdUJ4
eWtTNWtMb3hmZUhDaDFGWGJsZU5hNi9yTVRkZU41M2JFYmNUZDJEM1ovYmo3S3c5TEQ1RkhpOGVV
cDVQbkdzOExYb2lYcjFlUgpWNisza3ZkaTcycnZwejQ2UG9rK2pUNFR2bmErcTMwditHSDlBdjEy
K3QzejEvRG4rdGY3VHdRNEJLd0o2QXFrQkVZRVZnYytDeklKCkVnVjFCTVBCQWNHN2doOHYwbDhr
WE5RV0FrTDhRM2FGUEFrMURGMFYrbk1ZTGl3MHJDYnNlYmhWZUg1NGR3UXRZa1ZFUThTN1NJL0kK
MHNoSGk0MFdTeFozUnNsSHhVWFZSMDFGZTBXWFJVdVhXQ3hacytSR2pGcU1JS1k5Rmg4YkZYc2tk
bktwOTlMZFM0Zmo3T0lLNCs0dQpNMXlXcyt6YWNyWGxxY3ZQcnBCZndWbHhLaDRiSHgzZkVQK0pF
OEtwNVV5dTlGKzVkK1VFMTVPN2gvdVM1OFlyNTQzeFhmaGwvSkVFCmw0U3loTkZFbDhSZGlXTkpy
a2tWU2VNQ1QwRzE0SFd5WC9LQjVLbVVrSlNqS1RPcDBhbk5hWVMwK0xUVFFpVmhpckFyWFRNOUo3
MHYKd3pTak1FTzZ5bW5WN2xVVG9rRFJrVXdvYzFsbXU1aU8va3oxU0l3a215V0RXUXV6YXJMZVow
ZGxuOHBSekJIbTlPU2E1RzdMSGNuegp5ZnQrTldZMWQzVm52bmIraHZ6Qk5lNXJEcTJGMXE1YzI3
bE9kMTNCdXVIMXZ1dVBiU0J0U05ud3kwYkxqV1ViMzI2SzN0UlJvRkd3CnZtQm9zKy9teGtLNVFs
SGh2UzNPV3c1c3hXd1ZiTzNkWnJPdGF0dVhJbDdSOVdMTDRvcmlUeVhja3V2ZldYMVgrZDNNOW9U
dHZhWDIKcGZ0MzRIWUlkOXpkNmJyeldKbGlXVjdaMEs3Z1hhM2x6UEtpOHJlN1YreStWbUZiY1dB
UGFZOWtqN1F5cUxLOVNxOXFSOVduNnFUcQpnUnFQbXVhOTZudTM3WjNheDl2WHY5OXRmOU1CalFQ
RkJ6NGVGQnk4ZjhqM1VHdXRRVzNGWWR6aHJNUFA2NkxxdXI5bmYxOS9STzFJCjhaSFBSNFZIcGNm
Q2ozWFZPOVRYTjZnM2xEYkNqWkxHc2VOeHgyLzk0UFZEZXhPcjZWQXpvN240QkRnaE9mSGl4L2dm
NzU0TVBObDUKaW4ycTZTZjluL2EyMEZxS1dxSFczTmFKdHFRMmFYdE1lOS9wZ05PZEhjNGRMVCti
LzN6MGpQYVptclBLWjB2UGtjNFZuSnM1bjNkKwo4a0xHaGZHTGlSZUhPbGQwUHJxMDVOS2RyckN1
M3N1Qmw2OWU4Ymx5cWR1OSsveFZsNnRucmpsZE8zMmRmYjN0aHYyTjFoNjducFpmCjdINXA2Ylh2
YmIzcGNMUDlsdU90anI0RmZlZjZYZnN2M3ZhNmZlV08vNTBiQTRzRyt1NHV2bnYvWHR3OTZYM2Uv
ZEVIcVE5ZVA4eDYKT1Axby9XUHM0NkluQ2s4cW5xby9yZjNWK05kbXFiMzA3S0RYWU0remlHZVBo
cmhETC8rVithOVB3d1hQcWM4clJyUkc2a2V0UjgrTQorWXpkZXJIMHhmRExqSmZUNDRXL0tmNjI5
NVhScTU5K2QvdTlaMkxKeFBCcjBldVpQMHJlcUw0NSt0YjJiZWRrNk9UVGQybnZwcWVLCjNxdStQ
L2FCL2FIN1kvVEhrZW5zVC9oUGxaK05QM2Q4Q2Z6eWVDWnRadWJmOTRUeit3cGxibVJ6ZEhKbFlX
MEtaVzVrYjJKcUNqRXcKSURBZ2IySnFDakkyTVRJS1pXNWtiMkpxQ2pjZ01DQnZZbW9LV3lBdlNV
TkRRbUZ6WldRZ09TQXdJRklnWFFwbGJtUnZZbW9LTXlBdwpJRzlpYWdvOFBDQXZWSGx3WlNBdlVH
Rm5aWE1nTDAxbFpHbGhRbTk0SUZzd0lEQWdNallnTVRWZElDOURiM1Z1ZENBeElDOUxhV1J6CklG
c2dNaUF3SUZJZ1hTQStQZ3BsYm1Sdlltb0tNVEVnTUNCdlltb0tQRHdnTDFSNWNHVWdMME5oZEdG
c2IyY2dMMUJoWjJWeklETWcKTUNCU0lENCtDbVZ1Wkc5aWFnb3hNaUF3SUc5aWFnb29UV0ZqSUU5
VElGZ2dNVEF1TmlCUmRXRnlkSG9nVUVSR1EyOXVkR1Y0ZENrSwpaVzVrYjJKcUNqRXpJREFnYjJK
cUNpaEVPakl3TURrd01qQTJNakl6T0RNMVdqQXdKekF3SnlrS1pXNWtiMkpxQ2pFZ01DQnZZbW9L
ClBEd2dMMUJ5YjJSMVkyVnlJREV5SURBZ1VpQXZRM0psWVhScGIyNUVZWFJsSURFeklEQWdVaUF2
VFc5a1JHRjBaU0F4TXlBd0lGSWcKUGo0S1pXNWtiMkpxQ25oeVpXWUtNQ0F4TkFvd01EQXdNREF3
TURBd0lEWTFOVE0xSUdZZ0NqQXdNREF3TURNME5UZ2dNREF3TURBZwpiaUFLTURBd01EQXdNREl5
TWlBd01EQXdNQ0J1SUFvd01EQXdNREF6TWpNMUlEQXdNREF3SUc0Z0NqQXdNREF3TURBd01qSWdN
REF3Ck1EQWdiaUFLTURBd01EQXdNREl3TXlBd01EQXdNQ0J1SUFvd01EQXdNREF3TXpJMElEQXdN
REF3SUc0Z0NqQXdNREF3TURNeU1EQWcKTURBd01EQWdiaUFLTURBd01EQXdNRFF5TUNBd01EQXdN
Q0J1SUFvd01EQXdNREF3TkRZMUlEQXdNREF3SUc0Z0NqQXdNREF3TURNeApOemtnTURBd01EQWdi
aUFLTURBd01EQXdNek14TmlBd01EQXdNQ0J1SUFvd01EQXdNREF6TXpZMklEQXdNREF3SUc0Z0Nq
QXdNREF3Ck1ETTBNVFlnTURBd01EQWdiaUFLZEhKaGFXeGxjZ284UENBdlUybDZaU0F4TkNBdlVt
OXZkQ0F4TVNBd0lGSWdMMGx1Wm04Z01TQXcKSUZJZ0wwbEVJRnNnUEdWaFpEWTNabVExWm1RMFpE
WmxZMk0zTVRoaE56UmpOMlEzWmpsak1tTm1QZ284WldGa05qZG1aRFZtWkRSawpObVZqWXpjeE9H
RTNOR00zWkRkbU9XTXlZMlkrSUYwZ1BqNEtjM1JoY25SNGNtVm1Dak0xTXpNS0pTVkZUMFlLQUFB
QUFBQUFBQUFBCkFBQUFBQUFsVUVSR0xURXVNd29seE9YeTVldW44NkRReE1ZS05DQXdJRzlpYWdv
OFBDQXZUR1Z1WjNSb0lEVWdNQ0JTSUM5R2FXeDAKWlhJZ0wwWnNZWFJsUkdWamIyUmxJRDQrQ25O
MGNtVmhiUXA0QVVYTE9RNkFNQXhFMFo1VHpBbWMyR1JSYWdwcXpoQUpLS0NJY244SgpHN0hJMVpz
dk55eG9jRk5uMUE1L1g2OXdzdzZiRFpsaXdna1dLaW5BRXdmQjhWS2pHQ1ZxTFlOV3lSL0JnVW8y
UDgrWkVzZWZsc3VvCjNyRml1UUFqWkIxZ0NtVnVaSE4wY21WaGJRcGxibVJ2WW1vS05TQXdJRzlp
YWdvNU53cGxibVJ2WW1vS01pQXdJRzlpYWdvOFBDQXYKVkhsd1pTQXZVR0ZuWlNBdlVHRnlaVzUw
SURNZ01DQlNJQzlTWlhOdmRYSmpaWE1nTmlBd0lGSWdMME52Ym5SbGJuUnpJRFFnTUNCUwpJQzlO
WldScFlVSnZlQ0JiTUNBd0lESTJJREUxWFFvK1BncGxibVJ2WW1vS05pQXdJRzlpYWdvOFBDQXZV
SEp2WTFObGRDQmJJQzlRClJFWWdYU0F2UTI5c2IzSlRjR0ZqWlNBOFBDQXZRM014SURjZ01DQlNJ
RDQrSUM5RmVIUkhVM1JoZEdVZ1BEd2dMMGR6TVNBNElEQWcKVWdvK1BpQStQZ3BsYm1Sdlltb0tP
Q0F3SUc5aWFnbzhQQ0F2Vkhsd1pTQXZSWGgwUjFOMFlYUmxJQzlQVUUwZ01TQStQZ3BsYm1SdgpZ
bW9LT1NBd0lHOWlhZ284UENBdlRHVnVaM1JvSURFd0lEQWdVaUF2VGlBeklDOUJiSFJsY201aGRH
VWdMMFJsZG1salpWSkhRaUF2ClJtbHNkR1Z5SUM5R2JHRjBaVVJsWTI5a1pTQStQZ3B6ZEhKbFlX
MEtlQUdkbG5kVVU5a1doOCs5TjczUUVpSWdKZlFhZWdrZzBqdEkKRlFSUmlVbUFVQUtHaENaMlJB
VkdGQkVwVm1SVXdBRkhoeUpqUlJRTGc0Smkxd255RUZER3dWRkVSZVhkakdzSjc2MDE4OTZhL2Nk
WgozOW5udDlmWlorOTkxN29BVVB5Q0JNSjBXQUdBTktGWUZPN3J3VndTRTh2RTl3SVlFQUVPV0FI
QTRXWm1CRWY0UkFMVS9MMDltWm1vClNNYXo5dTR1Z0dTNzJ5eS9VQ1p6MXY5L2tTSTNReVFHQUFw
RjFUWThmaVlYNVFLVVU3UEZHVEwvQk1yMGxTa3loakV5RnFFSm9xd2kKNDhTdmJQYW41aXU3eVpp
WEp1U2hHbG5PR2J3MG5veTdVTjZhSmVHampBU2hYSmdsNEdlamZBZGx2VlJKbWdEbDl5alQwL2lj
VEFBdwpGSmxmek9jbW9XeUpNa1VVR2U2SjhnSUFDSlRFT2J4eURvdjVPV2llQUhpbVorU0tCSWxK
WXFZUjE1aHA1ZWpJWnZyeHMxUDVZakVyCmxNTk40WWg0VE0vMHRBeU9NQmVBcjIrV1JRRWxXVzJa
YUpIdHJSenQ3Vm5XNW1qNXY5bmZIbjVUL1QzSWV2dFY4U2JzejU1QmpKNVoKMzJ6c3JDKzlGZ0Qy
SkZxYkhiTytsVlVBdEcwR1FPWGhyRS92SUFEeUJRQzAzcHp6SG9ac1hwTEU0Z3duQzR2czdHeHpB
WjlyTGl2bwpOL3VmZ20vS3Y0WTU5NW5MN3Z0V082WVhQNEVqU1JVelpVWGxwcWVtUzBUTXpBd09s
ODlrL2ZjUS8rUEFPV25OeWNNc25KL0FGL0dGCjZGVlI2SlFKaElsb3U0VThnVmlRTG1RS2hIL1Y0
WDhZTmljSEdYNmRheFJvZFY4QWZZVTVVTGhKQjhodlBRQkRJd01rYmo5NkFuM3IKV3hBeENzaSt2
R2l0a2E5emp6SjYvdWY2SHd0Y2ltN2hURUVpVStiMkRJOWtjaVdpTEJtajM0UnN3UUlTa0FkMG9B
bzBnUzR3QWl4ZwpEUnlBTTNBRDNpQUFoSUJJRUFPV0F5NUlBbWxBQkxKQlB0Z0FDa0V4MkFGMmcy
cHdBTlNCZXRBRVRvSTJjQVpjQkZmQURYQUxESUJIClFBcUd3VXN3QWQ2QmFRaUM4QkFWb2tHcWtC
YWtENWxDMWhBYldnaDVRMEZRT0JRRHhVT0prQkNTUVBuUUpxZ1lLb09xb1VOUVBmUWoKZEJxNkNG
MkQrcUFIMENBMEJ2MEJmWVFSbUFMVFlRM1lBTGFBMmJBN0hBaEh3c3ZnUkhnVm5BY1h3TnZoU3Jn
V1BnNjN3aGZoRy9BQQpMSVZmd3BNSVFNZ0lBOUZHV0FnYjhVUkNrRmdrQVJFaGE1RWlwQUtwUlpx
UURxUWJ1WTFJa1hIa0F3YUhvV0dZR0JiR0dlT0hXWXpoCllsWmgxbUpLTU5XWVk1aFdUQmZtTm1Z
UU00SDVncVZpMWJHbVdDZXNQM1lKTmhHYmpTM0VWbUNQWUZ1d2w3RUQyR0hzT3h3T3g4QVoKNGh4
d2ZyZ1lYREp1TmE0RXR3L1hqTHVBNjhNTjRTYnhlTHdxM2hUdmdnL0JjL0JpZkNHK0NuOGNmeDdm
angvR3Z5ZVFDVm9FYTRJUApJWllnSkd3a1ZCQWFDT2NJL1lRUndqUlJnYWhQZENLR0VIbkVYR0lw
c1k3WVFieEpIQ1pPa3hSSmhpUVhVaVFwbWJTQlZFbHFJbDBtClBTYTlJWlBKT21SSGNoaFpRRjVQ
cmlTZklGOGxENUkvVUpRb0poUlBTaHhGUXRsT09VcTVRSGxBZVVPbFVnMm9idFJZcXBpNm5WcFAK
dlVSOVNuMHZSNU16bC9PWDQ4bXRrNnVSYTVYcmwzc2xUNVRYbDNlWFh5NmZKMThoZjByK3B2eTRB
bEhCUU1GVGdhT3dWcUZHNGJUQwpQWVZKUlpxaWxXS0lZcHBpaVdLRDRqWEZVU1c4a29HU3R4SlBx
VURwc05JbHBTRWFRdE9sZWRLNHRFMjBPdHBsMmpBZFJ6ZWsrOU9UCjZjWDBIK2k5OUFsbEpXVmI1
U2psSE9VYTViUEtVZ2JDTUdENE0xSVpwWXlUakx1TWovTTA1cm5QNDgvYk5xOXBYdis4S1pYNUtt
NHEKZkpVaWxXYVZBWldQcWt4VmI5VVUxWjJxYmFwUDFEQnFKbXBoYXRscSs5VXVxNDNQcDg5M25z
K2RYelQvNVB5SDZyQzZpWHE0K21yMQp3K285NnBNYW1ocStHaGthVlJxWE5NWTFHWnB1bXNtYTVa
cm5OTWUwYUZvTHRRUmE1VnJudFY0d2xabnV6RlJtSmJPTE9hR3RydTJuCkxkRStwTjJyUGExanFM
TllaNk5Pczg0VFhaSXVXemRCdDF5M1UzZENUMHN2V0M5ZnIxSHZvVDVSbjYyZnBMOUh2MXQveXNE
UUlOcGcKaTBHYndhaWhpcUcvWVo1aG8rRmpJNnFScTlFcW8xcWpPOFk0WTdaeGl2RSs0MXNtc0lt
ZFNaSkpqY2xOVTlqVTNsUmd1cyswend4cgo1bWdtTktzMXU4ZWlzTnhaV2F4RzFxQTV3enpJZktO
NW0va3JDejJMV0l1ZEZ0MFdYeXp0TEZNdDZ5d2ZXU2xaQlZodHRPcXcrc1BhCnhKcHJYV045eDRa
cTQyT3p6cWJkNXJXdHFTM2Zkci90ZlR1YVhiRGRGcnRPdTgvMkR2WWkreWI3TVFjOWgzaUh2UTcz
MkhSMktMdUUKZmRVUjYramh1TTd4ak9NSEozc25zZE5KcDkrZFdjNHB6ZzNPb3dzTUYvQVgxQzBZ
Y3RGeDRiZ2NjcEV1WkM2TVgzaHdvZFJWMjVYagpXdXY2ekUzWGplZDJ4RzNFM2RnOTJmMjQreXNQ
U3crUlI0dkhsS2VUNXhyUEMxNklsNjlYa1ZldnQ1TDNZdTlxNzZjK09qNkpQbzArCkU3NTJ2cXQ5
TC9oaC9RTDlkdnJkODlmdzUvclgrMDhFT0FTc0NlZ0twQVJHQkZZSFBnc3lDUklGZFFURHdRSEJ1
NElmTDlKZkpGelUKRmdKQy9FTjJoVHdKTlF4ZEZmcHpHQzRzTkt3bTdIbTRWWGgrZUhjRUxXSkZS
RVBFdTBpUHlOTElSNHVORmtzV2QwYkpSOFZGMVVkTgpSWHRGbDBWTGwxZ3NXYlBrUm94YWpDQ21Q
UllmR3hWN0pIWnlxZmZTM1V1SDQremlDdVB1TGpOY2xyUHMybksxNWFuTHo2NlFYOEZaCmNTb2VH
eDhkM3hEL2lSUENxZVZNcnZSZnVYZmxCTmVUdTRmN2t1ZkdLK2VOOFYzNFpmeVJCSmVFc29UUlJK
ZkVYWWxqU2E1SkZVbmoKQWs5QnRlQjFzbC95Z2VTcGxKQ1VveWt6cWRHcHpXbUV0UGkwMDBJbFlZ
cXdLMTB6UFNlOUw4TTBvekJEdXNwcDFlNVZFNkpBMFpGTQpLSE5aWnJ1WWp2NU05VWlNSkpzbGcx
a0xzMnF5M21kSFpaL0tVY3dSNXZUa211UnV5eDNKODhuN2ZqVm1OWGQxWjc1Mi9vYjh3VFh1CmF3
NnRoZGF1WE51NVRuZGR3YnJoOWI3cmoyMGdiVWpaOE10R3k0MWxHOTl1aXQ3VVVhQlJzTDVnYUxQ
djVzWkN1VUpSNGIwdHpsc08KYk1Wc0ZXenQzV2F6cldyYmx5SmUwZlZpeStLSzRrOGwzSkxyMzFs
OVYvbmR6UGFFN2IybDlxWDdkK0IyQ0hmYzNlbTY4MWlaWWxsZQoyZEN1NEYydDVjenlvdkszdTFm
c3ZsWmhXM0ZnRDJtUFpJKzBNcWl5dlVxdmFrZlZwK3FrNm9FYWo1cm12ZXA3dCsyZDJzZmIxNy9m
CmJYL1RBWTBEeFFjK0hoUWN2SC9JOTFCcnJVRnR4V0hjNGF6RHordWk2cnEvWjM5ZmYwVHRTUEdS
ejBlRlI2WEh3bzkxMVR2VTF6ZW8KTjVRMndvMlN4ckhqY2Nkdi9lRDFRM3NUcStsUU02TzUrQVE0
SVRueDRzZjRIKytlRER6WmVZcDlxdWtuL1ovMnR0QmFpbHFoMXR6VwppYmFrTm1sN1RIdmY2WURU
blIzT0hTMC9tLzk4OUl6Mm1acXp5bWRMejVIT0ZaeWJPWjkzZnZKQ3hvWHhpNGtYaHpwWGRENjZ0
T1RTCm5hNndydDdMZ1pldlh2RzVjcW5idmZ2OFZaZXJaNjQ1WFR0OW5YMjk3WWI5amRZZXU1NldY
K3grYWVtMTcyMjk2WEN6L1pianJZNisKQlgzbitsMzdMOTcydW4zbGp2K2RHd09MQnZydUxyNTcv
MTdjUGVsOTN2M1JCNmtQWGovTWVqajlhUDFqN09PaUp3cFBLcDZxUDYzOQoxZmpYWnFtOTlPeWcx
MkRQczRobmo0YTRReS8vbGZtdlQ4TUZ6Nm5QSzBhMFJ1cEhyVWZQalBtTTNYcXg5TVh3eTR5WDAr
T0Z2eW4rCnR2ZVYwYXVmZm5mN3ZXZGl5Y1R3YTlIcm1UOUszcWkrT2ZyVzltM25aT2prMDNkcDc2
YW5pdDZydmovMmdmMmgrMlAweDVIcDdFLzQKVDVXZmpUOTNmQW44OG5nbWJXYm0zL2VFOC9zS1pX
NWtjM1J5WldGdENtVnVaRzlpYWdveE1DQXdJRzlpYWdveU5qRXlDbVZ1Wkc5aQphZ28zSURBZ2Iy
SnFDbHNnTDBsRFEwSmhjMlZrSURrZ01DQlNJRjBLWlc1a2IySnFDak1nTUNCdlltb0tQRHdnTDFS
NWNHVWdMMUJoCloyVnpJQzlOWldScFlVSnZlQ0JiTUNBd0lESTJJREUxWFNBdlEyOTFiblFnTVNB
dlMybGtjeUJiSURJZ01DQlNJRjBnUGo0S1pXNWsKYjJKcUNqRXhJREFnYjJKcUNqdzhJQzlVZVhC
bElDOURZWFJoYkc5bklDOVFZV2RsY3lBeklEQWdVaUErUGdwbGJtUnZZbW9LTVRJZwpNQ0J2WW1v
S0tFMWhZeUJQVXlCWUlERXdMallnVVhWaGNuUjZJRkJFUmtOdmJuUmxlSFFwQ21WdVpHOWlhZ294
TXlBd0lHOWlhZ29vClJEb3lNREE1TURJd05qSXlNemd6TlZvd01DY3dNQ2NwQ21WdVpHOWlhZ294
SURBZ2IySnFDanc4SUM5UWNtOWtkV05sY2lBeE1pQXcKSUZJZ0wwTnlaV0YwYVc5dVJHRjBaU0F4
TXlBd0lGSWdMMDF2WkVSaGRHVWdNVE1nTUNCU0lENCtDbVZ1Wkc5aWFncDRjbVZtQ2pBZwpNVFFL
TURBd01EQXdNREF3TUNBMk5UVXpOU0JtSUFvd01EQXdNREF6TkRRM0lEQXdNREF3SUc0Z0NqQXdN
REF3TURBeU1URWdNREF3Ck1EQWdiaUFLTURBd01EQXdNekl5TkNBd01EQXdNQ0J1SUFvd01EQXdN
REF3TURJeUlEQXdNREF3SUc0Z0NqQXdNREF3TURBeE9UTWcKTURBd01EQWdiaUFLTURBd01EQXdN
RE14TXlBd01EQXdNQ0J1SUFvd01EQXdNREF6TVRnNUlEQXdNREF3SUc0Z0NqQXdNREF3TURBMApN
RGtnTURBd01EQWdiaUFLTURBd01EQXdNRFExTkNBd01EQXdNQ0J1SUFvd01EQXdNREF6TVRZNElE
QXdNREF3SUc0Z0NqQXdNREF3Ck1ETXpNRFVnTURBd01EQWdiaUFLTURBd01EQXdNek0xTlNBd01E
QXdNQ0J1SUFvd01EQXdNREF6TkRBMUlEQXdNREF3SUc0Z0NuUnkKWVdsc1pYSUtQRHdnTDFOcGVt
VWdNVFFnTDFKdmIzUWdNVEVnTUNCU0lDOUpibVp2SURFZ01DQlNJQzlKUkNCYklEeGlObVEwTUdN
NApOVGM1WmpRNFpqa3lNamxoTkdGbFlUTmxZemd5Tm1Sak1UNEtQR0kyWkRRd1l6ZzFOemxtTkRo
bU9USXlPV0UwWVdWaE0yVmpPREkyClpHTXhQaUJkSUQ0K0NuTjBZWEowZUhKbFpnb3pOVEl5Q2lV
bFJVOUdDZ0FBQUFBQUFBQUFBQ1ZRUkVZdE1TNHpDaVhFNWZMbDY2ZnoKb05ERXhnbzBJREFnYjJK
cUNqdzhJQzlNWlc1bmRHZ2dOU0F3SUZJZ0wwWnBiSFJsY2lBdlJteGhkR1ZFWldOdlpHVWdQajRL
YzNSeQpaV0Z0Q25nQlhaUkpqaVEzREVYM2NRcXR2YUJGVFpSTzBPdGErUUFCdHcwNHE0SHF2ai9n
UjhaVTFVZ2dBNStUUHI4b2ZxUzM5SkV5ClB4MUpMZjM4Ty8yVmZvUUJVL292L2ZudGw2Wi9maVdU
cFZXVGRzbmFOYjNmaGlGOTRIaHRYV294SXBxMFBER2t5MENFTFRjVXNVWXUKRWRYMGMwUVJYZU14
YkI1UmlYemRweEF4ODJkRGxkWWpSVlZ5cDVyVzgzdzh1WUd6bUhYZHNFZWt5VkJvN1VtTHRFTHgw
L0FLUTZPQwprZWlkZUtrejVURlVDRzVOU29pUVpVYXJNaW9sS1VRL1NXa1RpdnVGaS9RWk9sQzNV
UGMzdkJFL1NIdWxxeW9FbmJlTVVoU2pMckk5CjZLRzJVMlJrMnI2cFVuUmwzWjVlcEx2RW4zQmJu
TTN0ZVpwS2NkNVRpbkdFQzhTOW5HZ0hGMlRZYm04R2ttbmVSWllUZFNmbnNZSFIKM0tqTHAzTXFS
ZzF5UFNQRWdUWUVwNldHL1hUN0NEbVpNL2VDSm1mcHkwQmFuMzZ4S3F0Umo2R1k4S1hYTDVPNHAr
OS9NR3BxWmZGWgpiUmFHczRtdEJ6ZnB1YTAwSkpzVmw3dVlvNnF0UUErbFczanI3TzVsZU56YnZG
S1ZPZGVOZHZCUTZ0N2VhdE5SMFZ3Mjd3Y0VCOVJGCm9odWJWYStFQk80ZFpUanF2QWxRYisySVhU
MjhYSHBoek5xZ1VoTW1vQkNrL1VHN0gxZjc3UjB5VjFRYWpBMitRTHk0dWFpNzNYaGsKdksvTGo5
WUtKeXIxc2JqaU9XQU10UXdINURVNjkzTjZ3enU5Wk5rODF5cGFMTW1UYUNxUDZxaFVPcmhSenpE
MjNOTnJDMDBIRHdURwpLeXJEcVpZYmhVN0xPUGZ3d3JHS2xhZ2NQRkJLWWJIRVJ0ekhpZnB4ZDdl
M2NDOVBKZ3ZCMFZrMzBFNS9QR3F2Rk5pZlhWZVVtNUlYCnQrZVlsUlA5RjdLWkVyOTV4dDg3dUJH
RDdQM2RtTFhnM3JaQ1I1M1ZiODk4bm95TmhjWWV1elRmMk5kaVRPUHA3ekk3YWd4aHYvZ2QKbkFp
YnorYURHNXA3N3VsbkczcDA1MHI0eE5SL2ZRUHhMTmlCdFRlb3ROSG45dTQ3MFhHTXh3ekZlMlJu
QjlWdXNLT0syYmg4VStxcwpuclg2eEFQZ0VUWmJrKzRPSDNEcGhPQUIrYmNJTmJZTmd1dU1BNURx
QkxzZkRwTURiaWN2MGpwcEQrdmppSDhKYzNJK0lUWjUzWlBYCmZ0RG5ZMUtIWVpxVExnSTg1QTdm
MFQ3a0RzZ2FHTTM3ME9zVlhlVGl3WGxUTUdBMys4MU5uUnNMcU1iRVoxYWhyeU5IdHdBUFBoUTQK
c1QrYkdyMTRwWVA2OXFXUHVLRzMvd0VzakhiM0NtVnVaSE4wY21WaGJRcGxibVJ2WW1vS05TQXdJ
RzlpYWdvNE1UVUtaVzVrYjJKcQpDaklnTUNCdlltb0tQRHdnTDFSNWNHVWdMMUJoWjJVZ0wxQmhj
bVZ1ZENBeklEQWdVaUF2VW1WemIzVnlZMlZ6SURZZ01DQlNJQzlECmIyNTBaVzUwY3lBMElEQWdV
aUF2VFdWa2FXRkNiM2dnV3pBZ01DQXhOaTR3TURBMUlERTNYUW92UVhKMFFtOTRJRnN3TGpBeU16
a3kKTlRnZ01DNHdNVFkyTURFMklERTFMakF3TmpNZ01UWXVOVGM1TmwwZ1BqNEtaVzVrYjJKcUNq
WWdNQ0J2WW1vS1BEd2dMMUJ5YjJOVApaWFFnV3lBdlVFUkdJRjBnTDBWNGRFZFRkR0YwWlNBOFBD
QXZSM014SURjZ01DQlNJRDQrSUQ0K0NtVnVaRzlpYWdvM0lEQWdiMkpxCkNqdzhJQzlVZVhCbElD
OUZlSFJIVTNSaGRHVWdMMDlRVFNBeElENCtDbVZ1Wkc5aWFnb3pJREFnYjJKcUNqdzhJQzlVZVhC
bElDOVEKWVdkbGN5QXZUV1ZrYVdGQ2IzZ2dXekFnTUNBMk1USWdOemt5WFNBdlEyOTFiblFnTVNB
dlMybGtjeUJiSURJZ01DQlNJRjBnUGo0SwpaVzVrYjJKcUNqZ2dNQ0J2WW1vS1BEd2dMMVI1Y0dV
Z0wwTmhkR0ZzYjJjZ0wxQmhaMlZ6SURNZ01DQlNJRDQrQ21WdVpHOWlhZ281CklEQWdiMkpxQ2ln
ek1ITmxZMkpoWTJ0ZmMyMHBDbVZ1Wkc5aWFnb3hNQ0F3SUc5aWFnb29UV0ZqSUU5VElGZ2dNVEF1
TmlCUmRXRnkKZEhvZ1VFUkdRMjl1ZEdWNGRDa0taVzVrYjJKcUNqRXhJREFnYjJKcUNpaEJaRzlp
WlNCSmJHeDFjM1J5WVhSdmNpQkRVelFwQ21WdQpaRzlpYWdveE1pQXdJRzlpYWdvb1JEb3lNREE1
TURVeE5URXdNVE0wT0Zvd01DY3dNQ2NwQ21WdVpHOWlhZ294SURBZ2IySnFDanc4CklDOVVhWFJz
WlNBNUlEQWdVaUF2VUhKdlpIVmpaWElnTVRBZ01DQlNJQzlEY21WaGRHOXlJREV4SURBZ1VpQXZR
M0psWVhScGIyNUUKWVhSbElERXlJREFnVWlBdlRXOWtSR0YwWlFveE1pQXdJRklnUGo0S1pXNWti
MkpxQ25oeVpXWUtNQ0F4TXdvd01EQXdNREF3TURBdwpJRFkxTlRNMUlHWWdDakF3TURBd01ERTBP
RGtnTURBd01EQWdiaUFLTURBd01EQXdNRGt6TUNBd01EQXdNQ0J1SUFvd01EQXdNREF4Ck1UazFJ
REF3TURBd0lHNGdDakF3TURBd01EQXdNaklnTURBd01EQWdiaUFLTURBd01EQXdNRGt4TVNBd01E
QXdNQ0J1SUFvd01EQXcKTURBeE1EZ3pJREF3TURBd0lHNGdDakF3TURBd01ERXhOVEFnTURBd01E
QWdiaUFLTURBd01EQXdNVEkzT0NBd01EQXdNQ0J1SUFvdwpNREF3TURBeE16STNJREF3TURBd0lH
NGdDakF3TURBd01ERXpOVGNnTURBd01EQWdiaUFLTURBd01EQXdNVFF3TnlBd01EQXdNQ0J1CklB
b3dNREF3TURBeE5EUTNJREF3TURBd0lHNGdDblJ5WVdsc1pYSUtQRHdnTDFOcGVtVWdNVE1nTDFK
dmIzUWdPQ0F3SUZJZ0wwbHUKWm04Z01TQXdJRklnTDBsRUlGc2dQRFl6T1RFM1lUTTVNell4WWpC
bFpHUXdZelptT0RCaE5ETmhNamMzTXpaalBnbzhOak01TVRkaApNemt6TmpGaU1HVmtaREJqTm1Z
NE1HRTBNMkV5Tnpjek5tTStJRjBnUGo0S2MzUmhjblI0Y21WbUNqRTFPVE1LSlNWRlQwWUtBQUFB
CkFBQUFBQ1ZRUkVZdE1TNHpDaVhFNWZMbDY2ZnpvTkRFeGdvMElEQWdiMkpxQ2p3OElDOU1aVzVu
ZEdnZ05TQXdJRklnTDBacGJIUmwKY2lBdlJteGhkR1ZFWldOdlpHVWdQajRLYzNSeVpXRnRDbmdC
VFk4eERzTXdDRVgzbk9LZmdHQk13SjQ3Wk00WklyVWQwaUh5L2FVYQpMN0hZbmg3L3c0MEROOVpY
U3pnYmVFdzdzZTRkZkJyRWlLMG9tRGhud1crQUlnb25kUk5jU0puWVV4aEpSWmlYQnpsdEl1SEV0
ZzFGCnZDdjhvS1JVM2VjY0owdmJCSlpRYXUrK3BtNlRPb05RdEF4U3FlY3JKbEtvbGxFZUgvVHJ2
bmpqK0FNV3hUTEVDbVZ1WkhOMGNtVmgKYlFwbGJtUnZZbW9LTlNBd0lHOWlhZ294TXpjS1pXNWti
MkpxQ2pJZ01DQnZZbW9LUER3Z0wxUjVjR1VnTDFCaFoyVWdMMUJoY21WdQpkQ0F6SURBZ1VpQXZV
bVZ6YjNWeVkyVnpJRFlnTUNCU0lDOURiMjUwWlc1MGN5QTBJREFnVWlBdlRXVmthV0ZDYjNnZ1d6
QWdNQ0F5Ck9TQXhOVjBLUGo0S1pXNWtiMkpxQ2pZZ01DQnZZbW9LUER3Z0wxQnliMk5UWlhRZ1d5
QXZVRVJHSUYwZ0wwTnZiRzl5VTNCaFkyVWcKUER3Z0wwTnpNU0EzSURBZ1VpQStQaUF2UlhoMFIx
TjBZWFJsSUR3OElDOUhjekVnT0NBd0lGSUtQajRnUGo0S1pXNWtiMkpxQ2pnZwpNQ0J2WW1vS1BE
d2dMMVI1Y0dVZ0wwVjRkRWRUZEdGMFpTQXZUMUJOSURFZ1BqNEtaVzVrYjJKcUNqa2dNQ0J2WW1v
S1BEd2dMMHhsCmJtZDBhQ0F4TUNBd0lGSWdMMDRnTXlBdlFXeDBaWEp1WVhSbElDOUVaWFpwWTJW
U1IwSWdMMFpwYkhSbGNpQXZSbXhoZEdWRVpXTnYKWkdVZ1BqNEtjM1J5WldGdENuZ0JuWlozVkZQ
WkZvZlB2VGU5MEJJaUlDWDBHbm9KSU5JN1NCVUVVWWxKZ0ZBQ2hvUW1ka1FGUmhRUgpLVlprVk1B
QlI0Y2lZMFVVQzRPQ1l0Y0o4aEJReHNGUlJFWGwzWXhyQ2UrdE5mUGVtdjNIV2QvWjU3ZlgyV2Z2
ZmRlNkFGRDhnZ1RDCmRGZ0JnRFNoV0JUdTY4RmNFaFBMeFBjQ0dCQUJEbGdCd09GbVpnUkgrRVFD
MVB5OVBabVpxRWpHcy9idUxvQmt1OXNzdjFBbWM5Yi8KZjVFaU4wTWtCZ0FLUmRVMlBING1GK1VD
bEZPenhSa3kvd1RLOUpVcE1vWXhNaGFoQ2FLc0l1UEVyMnoycCtZcnU4bVlseWJrb1JwWgp6aG04
Tko2TXUxRGVtaVhobzR3RW9WeVlKZUJubzN3SFpiMVVTWm9BNWZjbzA5UDRuRXdBTUJTWlg4em5K
cUZzaVRKRkZCbnVpZklDCkFBaVV4RG04Y2c2TCtUbG9uZ0I0cG1ma2lnU0pTV0ttRWRlWWFlWG95
R2I2OGJOVCtXSXhLNVREVGVHSWVFelA5TFFNampBWGdLOXYKbGtVQkpWbHRtV2lSN2EwYzdlMVox
dVpvK2IvWjN4NStVLzA5eUhyN1ZmRW03TStlUVl5ZVdkOXM3S3d2dlJZQTlpUmFteDJ6dnBWVgpB
TFJ0QmtEbDRheFA3eUFBOGdVQXRONmM4eDZHYkY2U3hPSU1Kd3VMN094c2N3R2ZheTRyNkRmN240
SnZ5citHT2ZlWnkrNzdWanVtCkZ6K0JJMGtWTTJWRjVhYW5wa3RFek13TURwZlBaUDMzRVAvandE
bHB6Y25ETEp5ZndCZnhoZWhWVWVpVUNZU0phTHVGUElGWWtDNWsKQ29SLzFlRi9HRFluQnhsK25X
c1VhSFZmQUgyRk9WQzRTUWZJYnowQVF5TURKRzQvZWdKOTYxc1FNUXJJdnJ4b3JaR3ZjNDh5ZXY3
bgoraDhMWElwdTRVeEJJbFBtOWd5UFpISWxvaXdabzkrRWJNRUNFcEFIZEtBS05JRXVNQUlzWUEw
Y2dETndBOTRnQUlTQVNCQURsZ011ClNBSnBRQVN5UVQ3WUFBcEJNZGdCZG9OcWNBRFVnWHJRQkU2
Q05uQUdYQVJYd0Exd0N3eUFSMEFLaHNGTE1BSGVnV2tJZ3ZBUUZhSkIKcXBBV3BBK1pRdFlRRzFv
SWVVTkJVRGdVQThWRGlaQVFra0Q1MENhb0dDcURxcUZEVUQzMEkzUWF1Z2hkZy9xZ0I5QWdOQWI5
QVgyRQpFWmdDMDJFTjJBQzJnTm13T3h3SVI4TEw0RVI0Rlp3SEY4RGI0VXE0Rmo0T3Q4SVg0UnZ3
QUN5Rlg4S1RDRURJQ0FQUlJsZ0lHL0ZFClFwQllKQUVSSVd1UklxUUNxVVdha0E2a0c3bU5TSkZ4
NUFNR2g2RmhtQmdXeGhuamgxbU00V0pXWWRaaVNqRFZtR09ZVmt3WDVqWm0KRURPQitZS2xZdFd4
cGxnbnJEOTJDVFlSbTQwdHhGWmdqMkJic0pleEE5aGg3RHNjRHNmQUdlSWNjSDY0R0Z3eWJqV3VC
TGNQMTR5NwpnT3ZERGVFbThYaThLdDRVNzRJUHdYUHdZbndodmdwL0hIOGUzNDhmeHI4bmtBbGFC
R3VDRHlHV0lDUnNKRlFRR2dqbkNQMkVFY0kwClVZR29UM1FpaGhCNXhGeGlLYkdPMkVHOFNSd21U
cE1VU1lZa0YxSWtLWm0wZ1ZSSmFpSmRKajBtdlNHVHlUcGtSM0lZV1VCZVQ2NGsKbnlCZkpRK1NQ
MUNVS0NZVVQwb2NSVUxaVGpsS3VVQjVRSGxEcFZJTnFHN1VXS3FZdXAxYVQ3MUVmVXA5TDBlVE01
ZnpsK1BKclpPcgprV3VWNjVkN0pVK1UxNWQzbDE4dW55ZGZJWDlLL3FiOHVBSlJ3VURCVTRHanNG
YWhSdUcwd2oyRlNVV2FvcFZpaUdLYVlvbGlnK0kxCnhWRWx2SktCa3JjU1Q2bEE2YkRTSmFVaEdr
TFRwWG5TdUxSTnREcmFaZG93SFVjM3BQdlRrK25GOUIvb3ZmUUpaU1ZsVytVbzVSemwKR3VXenls
SUd3akJnK0ROU0dhV01rNHk3akkvek5PYTV6K1BQMnphdmFWNy92Q21WK1NwdUtueVZJcFZtbFFH
Vmo2cE1WVy9WRk5XZApxbTJxVDlRd2FpWnFZV3JaYXZ2VkxxdU56NmZQZDU3UG5WODAvK1Q4aCtx
d3VvbDZ1UHBxOWNQcVBlcVRHcG9hdmhvWkdsVWFselRHCk5SbWFicHJKbXVXYTV6VEh0R2hhQzdV
RVd1VmE1N1ZlTUpXWjdzeFVaaVd6aXptaHJhN3RweTNSUHFUZHF6MnRZNml6V0dlalRyUE8KRTEy
U0xsczNRYmRjdDFOM1FrOUxMMWd2WDY5Ujc2RStVWit0bjZTL1I3OWJmOHJBMENEYVlJdEJtOEdv
b1lxaHYyR2VZYVBoWXlPcQprYXZSS3FOYW96dkdPR08yY1lyeFB1TmJKckNKblVtU1NZM0pUVlBZ
MU41VVlMclB0TThNYStab0pqU3JOYnZIb3JEY1dWbXNSdGFnCk9jTTh5SHlqZVp2NUt3czlpMWlM
blJiZEZsOHM3U3hUTGVzc0gxa3BXUVZZYmJUcXNQckQyc1NhYTExamZjZUdhdU5qczg2bTNlYTEK
cmFrdDMzYS83WDA3bWwydzNSYTdUcnZQOWc3Mkl2c20rekVIUFlkNGg3ME85OWgwZGlpN2hIM1ZF
ZXZvNGJqTzhZempCeWQ3SjdIVApTYWZmblZuT0tjNE56cU1MREJmd0Y5UXRHSExSY2VHNEhIS1JM
bVF1akY5NGNLSFVWZHVWNDFycitzeE4xNDNuZHNSdHhOM1lQZG45CnVQc3JEMHNQa1VlTHg1U25r
K2Nhend0ZWlKZXZWNUZYcjdlUzkyTHZhdStuUGpvK2lUNk5QaE8rZHI2cmZTLzRZZjBDL1hiNjNm
UFgKOE9mNjEvdFBCRGdFckFub0NxUUVSZ1JXQno0TE1na1NCWFVFdzhFQndidUNIeS9TWHlSYzFC
WUNRdnhEZG9VOENUVU1YUlg2Y3hndQpMRFNzSnV4NXVGVjRmbmgzQkMxaVJVUkR4THRJajhqU3lF
ZUxqUlpMRm5kR3lVZkZSZFZIVFVWN1JaZEZTNWRZTEZtejVFYU1Xb3dnCnBqMFdIeHNWZXlSMmNx
bjMwdDFMaCtQczRncmo3aTR6WEphejdOcHl0ZVdweTgrdWtGL0JXWEVxSGhzZkhkOFEvNGtUd3Fu
bFRLNzAKWDdsMzVRVFhrN3VIKzVMbnhpdm5qZkZkK0dYOGtRU1hoTEtFMFVTWHhGMkpZMG11U1JW
SjR3SlBRYlhnZGJKZjhvSGtxWlNRbEtNcApNNm5ScWMxcGhMVDR0Tk5DSldHS3NDdGRNejBudlMv
RE5LTXdRN3JLYWRYdVZST2lRTkdSVENoeldXYTdtSTcrVFBWSWpDU2JKWU5aCkM3TnFzdDVuUjJX
ZnlsSE1FZWIwNUpya2Jzc2R5ZlBKKzM0MVpqVjNkV2UrZHY2Ry9NRTE3bXNPcllYV3JsemJ1VTUz
WGNHNjRmVysKNjQ5dElHMUkyZkRMUnN1TlpSdmZib3JlMUZHZ1ViQytZR2l6NytiR1FybENVZUc5
TGM1YkRtekZiQlZzN2QxbXM2MXEyNWNpWHRIMQpZc3ZpaXVKUEpkeVM2OTlaZlZmNTNjejJoTzI5
cGZhbCszZmdkZ2gzM04zcHV2TlltV0paWHRuUXJ1QmRyZVhNOHFMeXQ3dFg3TDVXCllWdHhZQTlw
ajJTUHRES29zcjFLcjJwSDFhZnFwT3FCR28rYTVyM3FlN2Z0bmRySDI5ZS8zMjEvMHdHTkE4VUhQ
aDRVSEx4L3lQZFEKYTYxQmJjVmgzT0dzdzgvcm91cTZ2MmQvWDM5RTdVanhrYzlIaFVlbHg4S1Bk
ZFU3MU5jM3FEZVVOc0tOa3NheDQzSEhiLzNnOVVONwpFNnZwVURPanVmZ0VPQ0U1OGVMSCtCL3Zu
Z3c4MlhtS2ZhcnBKLzJmOXJiUVdvcGFvZGJjMW9tMnBEWnBlMHg3MyttQTA1MGR6aDB0ClA1di9m
UFNNOXBtYXM4cG5TOCtSemhXY216bWZkMzd5UXNhRjhZdUpGNGM2VjNRK3VyVGswcDJ1c0s3ZXk0
R1hyMTd4dVhLcDI3MzcKL0ZXWHEyZXVPVjA3ZloxOXZlMkcvWTNXSHJ1ZWxsL3NmbW5wdGU5dHZl
bHdzLzJXNDYyT3ZnVjk1L3BkK3kvZTlycDk1WTcvblJzRAppd2I2N2k2K2UvOWUzRDNwZmQ3OTBR
ZXBEMTQvekhvNC9XajlZK3pqb2ljS1R5cWVxait0L2RYNDEyYXB2ZlRzb05kZ3o3T0laNCtHCnVF
TXYvNVg1cjAvREJjK3B6eXRHdEVicVI2MUh6NHo1ak4xNnNmVEY4TXVNbDlQamhiOHAvcmIzbGRH
cm4zNTMrNzFuWXNuRThHdlIKNjVrL1N0Nm92am42MXZadDUyVG81Tk4zYWUrbXA0cmVxNzQvOW9I
OW9mdGo5TWVSNmV4UCtFK1ZuNDAvZDN3Si9QSjRKbTFtNXQvMwpoUFA3Q21WdVpITjBjbVZoYlFw
bGJtUnZZbW9LTVRBZ01DQnZZbW9LTWpZeE1ncGxibVJ2WW1vS055QXdJRzlpYWdwYklDOUpRME5D
CllYTmxaQ0E1SURBZ1VpQmRDbVZ1Wkc5aWFnb3pJREFnYjJKcUNqdzhJQzlVZVhCbElDOVFZV2Rs
Y3lBdlRXVmthV0ZDYjNnZ1d6QWcKTUNBeU9TQXhOVjBnTDBOdmRXNTBJREVnTDB0cFpITWdXeUF5
SURBZ1VpQmRJRDQrQ21WdVpHOWlhZ294TVNBd0lHOWlhZ284UENBdgpWSGx3WlNBdlEyRjBZV3h2
WnlBdlVHRm5aWE1nTXlBd0lGSWdQajRLWlc1a2IySnFDakV5SURBZ2IySnFDaWhOWVdNZ1QxTWdX
Q0F4Ck1DNDJJRkYxWVhKMGVpQlFSRVpEYjI1MFpYaDBLUXBsYm1Sdlltb0tNVE1nTUNCdlltb0tL
RVE2TWpBd09ERXlNakl5TXpVeU1qWmEKTURBbk1EQW5LUXBsYm1Sdlltb0tNU0F3SUc5aWFnbzhQ
Q0F2VUhKdlpIVmpaWElnTVRJZ01DQlNJQzlEY21WaGRHbHZia1JoZEdVZwpNVE1nTUNCU0lDOU5i
MlJFWVhSbElERXpJREFnVWlBK1BncGxibVJ2WW1vS2VISmxaZ293SURFMENqQXdNREF3TURBd01E
QWdOalUxCk16VWdaaUFLTURBd01EQXdNelE0T0NBd01EQXdNQ0J1SUFvd01EQXdNREF3TWpVeUlE
QXdNREF3SUc0Z0NqQXdNREF3TURNeU5qVWcKTURBd01EQWdiaUFLTURBd01EQXdNREF5TWlBd01E
QXdNQ0J1SUFvd01EQXdNREF3TWpNeklEQXdNREF3SUc0Z0NqQXdNREF3TURBegpOVFFnTURBd01E
QWdiaUFLTURBd01EQXdNekl6TUNBd01EQXdNQ0J1SUFvd01EQXdNREF3TkRVd0lEQXdNREF3SUc0
Z0NqQXdNREF3Ck1EQTBPVFVnTURBd01EQWdiaUFLTURBd01EQXdNekl3T1NBd01EQXdNQ0J1SUFv
d01EQXdNREF6TXpRMklEQXdNREF3SUc0Z0NqQXcKTURBd01ETXpPVFlnTURBd01EQWdiaUFLTURB
d01EQXdNelEwTmlBd01EQXdNQ0J1SUFwMGNtRnBiR1Z5Q2p3OElDOVRhWHBsSURFMApJQzlTYjI5
MElERXhJREFnVWlBdlNXNW1ieUF4SURBZ1VpQXZTVVFnV3lBOFpEWTBaRE0wTkRRM1pHVmpPVGN6
WmpSaE1URmxObVl5Ck9EZGtNbVUwTmpJK0NqeGtOalJrTXpRME5EZGtaV001TnpObU5HRXhNV1Uy
WmpJNE4yUXlaVFEyTWo0Z1hTQStQZ3B6ZEdGeWRIaHkKWldZS016VTJNd29sSlVWUFJnb2xVRVJH
TFRFdU13b2x4T1h5NWV1bjg2RFF4TVlLTkNBd0lHOWlhZ284UENBdlRHVnVaM1JvSURVZwpNQ0JT
SUM5R2FXeDBaWElnTDBac1lYUmxSR1ZqYjJSbElENCtDbk4wY21WaGJRcDRBU1dPT3c2RE1CQkVl
MDd4Ym9BWDRuenFGS21wCk9NQXFrQUlpRWQ5Znl1d2lTelB5ek9qWkJ4TUhSY2V1V09YM1p1Wkwv
MnlHdHl3S3plbGZDdGJHalR1NzFDNXNWR3lRalhucjBvYUEKV0FRZVRHV3hTZkVZRnUxTmpJMFBD
dytSZHFsRmF1cGxHblduQlVXTTRIbDhMOW1xcTRZS1JyMnZZUlhqcEUxL1kzQXA0Z3BsYm1Segpk
SEpsWVcwS1pXNWtiMkpxQ2pVZ01DQnZZbW9LTVRNeENtVnVaRzlpYWdveUlEQWdiMkpxQ2p3OElD
OVVlWEJsSUM5UVlXZGxJQzlRCllYSmxiblFnTXlBd0lGSWdMMUpsYzI5MWNtTmxjeUEySURBZ1Vp
QXZRMjl1ZEdWdWRITWdOQ0F3SUZJZ0wwMWxaR2xoUW05NElGc3cKSURBZ01UWWdNVFZkQ2o0K0Nt
VnVaRzlpYWdvMklEQWdiMkpxQ2p3OElDOVFjbTlqVTJWMElGc2dMMUJFUmlCZElDOURiMnh2Y2xO
dwpZV05sSUR3OElDOURjekVnTnlBd0lGSWdQajRnTDBWNGRFZFRkR0YwWlNBOFBDQXZSM014SURn
Z01DQlNDajQrSUQ0K0NtVnVaRzlpCmFnbzRJREFnYjJKcUNqdzhJQzlVZVhCbElDOUZlSFJIVTNS
aGRHVWdMMDlRVFNBeElENCtDbVZ1Wkc5aWFnbzVJREFnYjJKcUNqdzgKSUM5TVpXNW5kR2dnTVRB
Z01DQlNJQzlPSURNZ0wwRnNkR1Z5Ym1GMFpTQXZSR1YyYVdObFVrZENJQzlHYVd4MFpYSWdMMFpz
WVhSbApSR1ZqYjJSbElENCtDbk4wY21WaGJRcDRBWVdVVFVnVVlSakgvN09OQkxFRzBaY0l4ZERC
SkZRbUMxSUMwL1VyVTdabDFVd0pZcDE5CmQ1MGNaNmVaM1MxRklvVG9tSFdNTGxaRWg0aE80YUZE
cHpwRUJKbDFpYUNqUlJBRlhpSzIvenVUdTJOVXZqQXp2M21lLy90OHZjTUEKVlk5U2ptTkZOR0RL
enJ2SjNwaDJlblJNMi93YVZhaEdGRndwdzNNNkVva0JuNm1Wei9WcjlTMFVhVmxxbExIVyt6Wjhx
M2FaRUZBMApLbmRrQXo0c2VUemc0NUl2NUowOE5XY2tHeE9wTk5raE43aER5VTd5TGZMV2JJakhR
NXdXbmdGVXRWT1RNeHlYY1NJN3lDMUZJeXRqClBpRHJkdHEweWUrbFBlMFpVOVN3MzhnM09RdmF1
UEw5UU5zZVlOT0xpbTNNQXg3Y0EzYlhWV3oxTmNET0VXRHhVTVgyUGVuUFI5bjEKeXNzY2F2YkRL
ZEVZYS9wUUtuMnZBemJmQUg1ZUw1ViszQzZWZnQ1aER0YngxRElLYnRIWHNqRGxKUkRVRyt4bS9P
UWEvWXVEbm54VgpDN0RBT1k1c0FmcXZBRGMvQXZzZkF0c2ZBNGxxWUtnVmtjdHNON2p5NGlMbkFu
VG1uR25YekU3a3RXWmRQNkoxOEdpRjFtY2JUUXBhCnlySTAzK1ZwcnZDRVd4VHBKa3haQmM3Wlg5
dDRqd3A3ZUpCUDloZTVKTHp1MzZ6TXBWTmRuQ1dhMk5hbnRPanFKamVRNzJmTW5qNXkKUGEvM0di
ZG5PR0RsZ0pudkd3bzRjc3EyNGp3WHFZblUyT1B4azJUR1YxUW5INVB6a0R6bkZRZGxUTjkrTG5V
aVFhNmxQVG1aNjVlYQpYZHpiUGpNeHhET1NyRmd6RTUzeDMvekdMU1JsM24zVTNIVXMvNXRuYlpG
bkdJVUZBUk0yN3pZMEpOR0xHQnJod0VVT0dYcE1La3hhCnBWL1Fhc0xENUYrVkZoTGxYUllWdlZq
aG5oVi96M2tVdUZ2R1A0VllISE1LNVFpYS9rNy9vaS9yQy9wZC9mTjhiYUcrNHBseno1ckcKcTJ0
ZkdWZG1sdFhJdUVHTk1yNnNLWWh2c05vT2VpMWthWjNpRmZUa2xmV040ZW95OW54dDJhUEpIT0px
ZkRYVXBRaGxhc1E0NDhtdQpaZmRGc3NVMzRlZGJ5L2F2NlZIN2ZQWkpUU1hYc3JwNFppbjZmRFpj
Q212L3M2dGcwcktyOE9TTmtDNDhhNkh1VlErcWZXcUwyZ3BOClBhYTJxMjFxRjkrT3FnUGxIY09j
bFlrTHJOdGw5U24yWUdPYTNzcEpWMmFMNE4vQ0w0Yi9wVjVoQzljME5Qa1BUYmk1akdrSjN4SGMK
Tm5DSGxQL0RYN01EQ3Q0S1pXNWtjM1J5WldGdENtVnVaRzlpYWdveE1DQXdJRzlpYWdvM09USUta
VzVrYjJKcUNqY2dNQ0J2WW1vSwpXeUF2U1VORFFtRnpaV1FnT1NBd0lGSWdYUXBsYm1Sdlltb0tN
eUF3SUc5aWFnbzhQQ0F2Vkhsd1pTQXZVR0ZuWlhNZ0wwMWxaR2xoClFtOTRJRnN3SURBZ01UWWdN
VFZkSUM5RGIzVnVkQ0F4SUM5TGFXUnpJRnNnTWlBd0lGSWdYU0ErUGdwbGJtUnZZbW9LTVRFZ01D
QnYKWW1vS1BEd2dMMVI1Y0dVZ0wwTmhkR0ZzYjJjZ0wxQmhaMlZ6SURNZ01DQlNJRDQrQ21WdVpH
OWlhZ294SURBZ2IySnFDanc4SUM5UQpjbTlrZFdObGNpQW9UV0ZqSUU5VElGZ2dNVEF1TmlCUmRX
RnlkSG9nVUVSR1EyOXVkR1Y0ZENrZ0wwTnlaV0YwYVc5dVJHRjBaU0FvClJEb3lNREEyTURFek1U
RTFOVFl5TlMwd09DY3dNQ2NwQ2k5TmIyUkVZWFJsSUNoRU9qSXdNRFl3TWpFek1URXhNekV6TFRB
NEp6QXcKSnlrZ1BqNEtaVzVrYjJKcUNuaHlaV1lLTUNBeE1nb3dNREF3TURBd01EQXdJRFkxTlRN
MUlHWWdDakF3TURBd01ERTFOamtnTURBdwpNREFnYmlBS01EQXdNREF3TURJME5pQXdNREF3TUNC
dUlBb3dNREF3TURBeE5ETTRJREF3TURBd0lHNGdDakF3TURBd01EQXdNaklnCk1EQXdNREFnYmlB
S01EQXdNREF3TURJeU55QXdNREF3TUNCdUlBb3dNREF3TURBd016UTRJREF3TURBd0lHNGdDakF3
TURBd01ERTAKTURNZ01EQXdNREFnYmlBS01EQXdNREF3TURRME5DQXdNREF3TUNCdUlBb3dNREF3
TURBd05EZzVJREF3TURBd0lHNGdDakF3TURBdwpNREV6T0RNZ01EQXdNREFnYmlBS01EQXdNREF3
TVRVeE9TQXdNREF3TUNCdUlBcDBjbUZwYkdWeUNqdzhJQzlUYVhwbElERXlJQzlTCmIyOTBJREV4
SURBZ1VpQXZTVzVtYnlBeElEQWdVaUF2U1VRZ1d5QThNekExTkRnek9EYzVNa0kxTVRGRVFVSTRP
VVV3TURCRU9UTTMKTUVGRFFqZytDanhETjBNd09EWTJPVGxEUXpReE1VUkJRVEJETURBd01FUTVN
emN3UVVOQ09ENGdYU0ErUGdwemRHRnlkSGh5WldZSwpNVGN3T1FvbEpVVlBSZ29BQUFBQUFBQWxV
RVJHTFRFdU13b2x4T1h5NWV1bjg2RFF4TVlLTkNBd0lHOWlhZ284UENBdlRHVnVaM1JvCklEVWdN
Q0JTSUM5R2FXeDBaWElnTDBac1lYUmxSR1ZqYjJSbElENCtDbk4wY21WaGJRcDRBUzJNUVE3Q01B
d0U3MzNGL0tBeGJSSjYKNXNDNUp4NFF0WEFJU0NYL2wxaW55SW8zOW83M1lPVWdxQ3hoa2UvR2d3
L2pyUm1sZFNQUUN1TmRpMmR6eEhpN1pDbzJFVjJNUEp5QwpCYTRzY29zMDZSZjdLdzVOWWhmZFYx
N3NVcHM5U2x5VnBjTXFXTVBnUFNraVN6M0c0MlQzVnNUWVJhaW0rWiswL2dCWWFDalJDbVZ1ClpI
TjBjbVZoYlFwbGJtUnZZbW9LTlNBd0lHOWlhZ294TXpBS1pXNWtiMkpxQ2pJZ01DQnZZbW9LUER3
Z0wxUjVjR1VnTDFCaFoyVWcKTDFCaGNtVnVkQ0F6SURBZ1VpQXZVbVZ6YjNWeVkyVnpJRFlnTUNC
U0lDOURiMjUwWlc1MGN5QTBJREFnVWlBdlRXVmthV0ZDYjNnZwpXekFnTUNBeE5pQXhOVjBLUGo0
S1pXNWtiMkpxQ2pZZ01DQnZZbW9LUER3Z0wxQnliMk5UWlhRZ1d5QXZVRVJHSUYwZ0wwTnZiRzl5
ClUzQmhZMlVnUER3Z0wwTnpNU0EzSURBZ1VpQStQaUF2UlhoMFIxTjBZWFJsSUR3OElDOUhjekVn
T0NBd0lGSUtQajRnUGo0S1pXNWsKYjJKcUNqZ2dNQ0J2WW1vS1BEd2dMMVI1Y0dVZ0wwVjRkRWRU
ZEdGMFpTQXZUMUJOSURFZ1BqNEtaVzVrYjJKcUNqa2dNQ0J2WW1vSwpQRHdnTDB4bGJtZDBhQ0F4
TUNBd0lGSWdMMDRnTXlBdlFXeDBaWEp1WVhSbElDOUVaWFpwWTJWU1IwSWdMMFpwYkhSbGNpQXZS
bXhoCmRHVkVaV052WkdVZ1BqNEtjM1J5WldGdENuZ0JoWlJOU0JSaEdNZi9zNDBFc1FiUmx3akYw
TUVrVkNZTFVnTFQ5U3RUdG1YVlRBbGkKblgxM25SeG5wNW5kTFVVaWhPaVlkWXd1VmtTSGlFN2hv
VU9uT2tRRW1YV0pvS05GRUFWZUlyYi9PNU83WTFTK01ETy9lWjcvKzN5OQp3d0JWajFLT1kwVTBZ
TXJPdThuZW1IWjZkRXpiL0JwVnFFWVVYQ25EY3pvU2lRR2ZxWlhQOVd2MUxSUnBXV3FVc2RiN05u
eXJkcGtRClVEUXFkMlFEUGl4NVBPRGpraS9rblR3MVp5UWJFNmswMlNFM3VFUEpUdkl0OHRac2lN
ZERuQmFlQVZTMVU1TXpISmR4SWp2SUxVVWoKSzJNK0lPdDIyclRKNzZVOTdSbFQxTERmeURjNUM5
cTQ4djFBMng1ZzA0dUtiY3dESHR3RGR0ZFZiUFUxd000UllQRlF4Zlk5NmM5SAoyZlhLeXh4cTlz
TXAwUmhyK2xBcWZhOEROdDhBZmw0dmxYN2NMcFYrM21FTzF2SFVNZ3B1MGRleU1PVWxFTlFiN0di
ODVCcjlpNE9lCmZGVUxzTUE1am13QitxOEFOejhDK3g4QzJ4OERpV3BncUJXUnkydzN1UExpSXVj
Q2RPYWNhZGZNVHVTMVpsMC9vblh3YUlYV1p4dE4KQ2xyS3NqVGY1V211OElSYkZPa21URmtGenRs
ZjIzaVBDbnQ0a0UvMkY3a2t2Tzdmck15bFUxMmNKWnJZMXFlMDZPb21ONUR2Wjh5ZQpQbkk5ci9j
WnQyYzRZT1dBbWU4YkNqaHl5cmJpUEJlcGlkVFk0L0dUWk1aWFZDY2ZrL09RUE9jVkIyVk0zMzR1
ZFNKQnJxVTlPWm5yCmw1cGQzTnMrTXpIRU01S3NXRE1UbmZIZi9NWXRKR1hlZmRUY2RTei9tMmR0
a1djWWhRVUJFemJ2TmpRazBZc1lHdUhBUlE0WmVrd3EKVEZxbFg5QnF3c1BrWDVVV0V1VmRGaFc5
V09HZUZYL1BlUlM0VzhZL2hWZ2Njd3JsQ0pyK1R2K2lMK3NMK2wzOTgzeHRvYjdpbVhQUAptc2Fy
YTE4WlYyYVcxY2k0UVkweXZxd3BpRyt3Mmc1NkxXUnBuZUlWOU9TVjlZM2g2akwyZkczWm84a2M0
bXA4TmRTbENHVnF4RGpqCnlhNWw5MFd5eFRmaDUxdkw5cS9wVWZ0ODlrbE5KZGV5dW5obUtmcDhO
bHdLYS8renEyRFNzcXZ3NUkyUUxqeHJvZTVWRDZwOWFvdmEKQ2swOXByYXJiV29YMzQ2cUErVWR3
NXlWaVF1czIyWDFLZlpnWTVyZXlrbFhab3ZnMzhJdmh2K2xYbUVMMXpRMCtROU51TG1NYVFuZgpF
ZHcyY0llVS84TmZzd01LM2dwbGJtUnpkSEpsWVcwS1pXNWtiMkpxQ2pFd0lEQWdiMkpxQ2pjNU1n
cGxibVJ2WW1vS055QXdJRzlpCmFncGJJQzlKUTBOQ1lYTmxaQ0E1SURBZ1VpQmRDbVZ1Wkc5aWFn
b3pJREFnYjJKcUNqdzhJQzlVZVhCbElDOVFZV2RsY3lBdlRXVmsKYVdGQ2IzZ2dXekFnTUNBeE5p
QXhOVjBnTDBOdmRXNTBJREVnTDB0cFpITWdXeUF5SURBZ1VpQmRJRDQrQ21WdVpHOWlhZ294TVNB
dwpJRzlpYWdvOFBDQXZWSGx3WlNBdlEyRjBZV3h2WnlBdlVHRm5aWE1nTXlBd0lGSWdQajRLWlc1
a2IySnFDakVnTUNCdlltb0tQRHdnCkwxQnliMlIxWTJWeUlDaE5ZV01nVDFNZ1dDQXhNQzQySUZG
MVlYSjBlaUJRUkVaRGIyNTBaWGgwS1NBdlEzSmxZWFJwYjI1RVlYUmwKSUNoRU9qSXdNRFl3TVRN
eE1UVTFOalEzTFRBNEp6QXdKeWtLTDAxdlpFUmhkR1VnS0VRNk1qQXdOakF5TVRNeE1URXpOVEV0
TURnbgpNREFuS1NBK1BncGxibVJ2WW1vS2VISmxaZ293SURFeUNqQXdNREF3TURBd01EQWdOalUx
TXpVZ1ppQUtNREF3TURBd01UVTJPQ0F3Ck1EQXdNQ0J1SUFvd01EQXdNREF3TWpRMUlEQXdNREF3
SUc0Z0NqQXdNREF3TURFME16Y2dNREF3TURBZ2JpQUtNREF3TURBd01EQXkKTWlBd01EQXdNQ0J1
SUFvd01EQXdNREF3TWpJMklEQXdNREF3SUc0Z0NqQXdNREF3TURBek5EY2dNREF3TURBZ2JpQUtN
REF3TURBdwpNVFF3TWlBd01EQXdNQ0J1SUFvd01EQXdNREF3TkRReklEQXdNREF3SUc0Z0NqQXdN
REF3TURBME9EZ2dNREF3TURBZ2JpQUtNREF3Ck1EQXdNVE00TWlBd01EQXdNQ0J1SUFvd01EQXdN
REF4TlRFNElEQXdNREF3SUc0Z0NuUnlZV2xzWlhJS1BEd2dMMU5wZW1VZ01USWcKTDFKdmIzUWdN
VEVnTUNCU0lDOUpibVp2SURFZ01DQlNJQzlKUkNCYklEd3pSRFV5TmtWRlJUa3lRalV4TVVSQlFq
ZzVSVEF3TUVRNQpNemN3UVVOQ09ENEtQRVJGTWpSRE4wRTBPVU5ETkRFeFJFRkJNRU13TURBd1JE
a3pOekJCUTBJNFBpQmRJRDQrQ25OMFlYSjBlSEpsClpnb3hOekE0Q2lVbFJVOUdDZ0FBQUFBQUFB
QWxVRVJHTFRFdU13b2x4T1h5NWV1bjg2RFF4TVlLTkNBd0lHOWlhZ284UENBdlRHVnUKWjNSb0lE
VWdNQ0JTSUM5R2FXeDBaWElnTDBac1lYUmxSR1ZqYjJSbElENCtDbk4wY21WaGJRcDRBVDJOTVFy
QUlBeEY5NTdpbjBCagpGS3h6aDg2ZVFXZ2Qwa0c4UDlScWxVRGdmZjVMQ2lJSzlGRU5VZ1gxcVFu
NmJNRmRZYXdpYTBCdE96eGdVbUdmS0JPWlZiQitrOWtlCkRFSHVJaS9kTjl2OUpCaTB5dDhQeHJx
VmNTRytvQkFoU1FwbGJtUnpkSEpsWVcwS1pXNWtiMkpxQ2pVZ01DQnZZbW9LT1RnS1pXNWsKYjJK
cUNqSWdNQ0J2WW1vS1BEd2dMMVI1Y0dVZ0wxQmhaMlVnTDFCaGNtVnVkQ0F6SURBZ1VpQXZVbVZ6
YjNWeVkyVnpJRFlnTUNCUwpJQzlEYjI1MFpXNTBjeUEwSURBZ1VpQXZUV1ZrYVdGQ2IzZ2dXekFn
TUNBeU1TQXlNMTBLUGo0S1pXNWtiMkpxQ2pZZ01DQnZZbW9LClBEd2dMMUJ5YjJOVFpYUWdXeUF2
VUVSR0lGMGdMME52Ykc5eVUzQmhZMlVnUER3Z0wwTnpNU0EzSURBZ1VpQStQaUF2UlhoMFIxTjAK
WVhSbElEdzhJQzlIY3pFZ09DQXdJRklLUGo0Z1BqNEtaVzVrYjJKcUNqZ2dNQ0J2WW1vS1BEd2dM
MVI1Y0dVZ0wwVjRkRWRUZEdGMApaU0F2VDFCTklERWdQajRLWlc1a2IySnFDamtnTUNCdlltb0tQ
RHdnTDB4bGJtZDBhQ0F4TUNBd0lGSWdMMDRnTXlBdlFXeDBaWEp1CllYUmxJQzlFWlhacFkyVlNS
MElnTDBacGJIUmxjaUF2Um14aGRHVkVaV052WkdVZ1BqNEtjM1J5WldGdENuZ0JuWlozVkZQWkZv
ZlAKdlRlOTBCSWlJQ1gwR25vSklOSTdTQlVFVVlsSmdGQUNob1FtZGtRRlJoUVJLVlprVk1BQlI0
Y2lZMFVVQzRPQ1l0Y0o4aEJReHNGUgpSRVhsM1l4ckNlK3ROZlBlbXYzSFdkL1o1N2ZYMldmdmZk
ZTZBRkQ4Z2dUQ2RGZ0JnRFNoV0JUdTY4RmNFaFBMeFBjQ0dCQUJEbGdCCndPRm1aZ1JIK0VRQzFQ
eTlQWm1acUVqR3MvYnVMb0JrdTlzc3YxQW1jOWIvZjVFaU4wTWtCZ0FLUmRVMlBING1GK1VDbEZP
enhSa3kKL3dUSzlKVXBNb1l4TWhhaENhS3NJdVBFcjJ6MnArWXJ1OG1ZbHlia29ScFp6aG04Tko2
TXUxRGVtaVhobzR3RW9WeVlKZUJubzN3SApaYjFVU1pvQTVmY28wOVA0bkV3QU1CU1pYOHpuSnFG
c2lUSkZGQm51aWZJQ0FBaVV4RG04Y2c2TCtUbG9uZ0I0cG1ma2lnU0pTV0ttCkVkZVlhZVhveUdi
NjhiTlQrV0l4SzVURFRlR0llRXpQOUxRTWpqQVhnSzl2bGtVQkpWbHRtV2lSN2EwYzdlMVoxdVpv
K2IvWjN4NSsKVS8wOXlIcjdWZkVtN00rZVFZeWVXZDlzN0t3dnZSWUE5aVJhbXgyenZwVlZBTFJ0
QmtEbDRheFA3eUFBOGdVQXRONmM4eDZHYkY2Uwp4T0lNSnd1TDdPeHNjd0dmYXk0cjZEZjduNEp2
eXIrR09mZVp5Kzc3Vmp1bUZ6K0JJMGtWTTJWRjVhYW5wa3RFek13TURwZlBaUDMzCkVQL2p3RGxw
emNuRExKeWZ3QmZ4aGVoVlVlaVVDWVNKYUx1RlBJRllrQzVrQ29SLzFlRi9HRFluQnhsK25Xc1Vh
SFZmQUgyRk9WQzQKU1FmSWJ6MEFReU1ESkc0L2VnSjk2MXNRTVFySXZyeG9yWkd2YzQ4eWV2N24r
aDhMWElwdTRVeEJJbFBtOWd5UFpISWxvaXdabzkrRQpiTUVDRXBBSGRLQUtOSUV1TUFJc1lBMGNn
RE53QTk0Z0FJU0FTQkFEbGdNdVNBSnBRQVN5UVQ3WUFBcEJNZGdCZG9OcWNBRFVnWHJRCkJFNkNO
bkFHWEFSWHdBMXdDd3lBUjBBS2hzRkxNQUhlZ1drSWd2QVFGYUpCcXBBV3BBK1pRdFlRRzFvSWVV
TkJVRGdVQThWRGlaQVEKa2tENTBDYW9HQ3FEcXFGRFVEMzBJM1FhdWdoZGcvcWdCOUFnTkFiOUFY
MkVFWmdDMDJFTjJBQzJnTm13T3h3SVI4TEw0RVI0Rlp3SApGOERiNFVxNEZqNE90OElYNFJ2d0FD
eUZYOEtUQ0VESUNBUFJSbGdJRy9GRVFwQllKQUVSSVd1UklxUUNxVVdha0E2a0c3bU5TSkZ4CjVB
TUdoNkZobUJnV3hobmpoMW1NNFdKV1lkWmlTakRWbUdPWVZrd1g1alptRURPQitZS2xZdFd4cGxn
bnJEOTJDVFlSbTQwdHhGWmcKajJCYnNKZXhBOWhoN0RzY0RzZkFHZUljY0g2NEdGd3liald1Qkxj
UDE0eTdnT3ZERGVFbThYaThLdDRVNzRJUHdYUHdZbndodmdwLwpISDhlMzQ4ZnhyOG5rQWxhQkd1
Q0R5R1dJQ1JzSkZRUUdnam5DUDJFRWNJMFVZR29UM1FpaGhCNXhGeGlLYkdPMkVHOFNSd21UcE1V
ClNZWWtGMUlrS1ptMGdWUkphaUpkSmowbXZTR1R5VHBrUjNJWVdVQmVUNjRrbnlCZkpRK1NQMUNV
S0NZVVQwb2NSVUxaVGpsS3VVQjUKUUhsRHBWSU5xRzdVV0txWXVwMWFUNzFFZlVwOUwwZVRNNWZ6
bCtQSnJaT3JrV3VWNjVkN0pVK1UxNWQzbDE4dW55ZGZJWDlLL3FiOAp1QUpSd1VEQlU0R2pzRmFo
UnVHMHdqMkZTVVdhb3BWaWlHS2FZb2xpZytJMXhWRWx2SktCa3JjU1Q2bEE2YkRTSmFVaEdrTFRw
WG5TCnVMUk50RHJhWmRvd0hVYzNwUHZUaytuRjlCL292ZlFKWlNWbFcrVW81UnpsR3VXenlsSUd3
akJnK0ROU0dhV01rNHk3akkvek5PYTUKeitQUDJ6YXZhVjcvdkNtVitTcHVLbnlWSXBWbWxRR1Zq
NnBNVlcvVkZOV2RxbTJxVDlRd2FpWnFZV3JaYXZ2VkxxdU56NmZQZDU3UApuVjgwLytUOGgrcXd1
b2w2dVBwcTljUHFQZXFUR3BvYXZob1pHbFVhbHpUR05SbWFicHJKbXVXYTV6VEh0R2hhQzdVRVd1
VmE1N1ZlCk1KV1o3c3hVWmlXeml6bWhyYTd0cHkzUlBxVGRxejJ0WTZpeldHZWpUclBPRTEyU0xs
czNRYmRjdDFOM1FrOUxMMWd2WDY5Ujc2RSsKVVordG42Uy9SNzliZjhyQTBDRGFZSXRCbThHb29Z
cWh2MkdlWWFQaFl5T3FrYXZSS3FOYW96dkdPR08yY1lyeFB1TmJKckNKblVtUwpTWTNKVFZQWTFO
NVVZTHJQdE04TWErWm9KalNyTmJ2SG9yRGNXVm1zUnRhZ09jTTh5SHlqZVp2NUt3czlpMWlMblJi
ZEZsOHM3U3hUCkxlc3NIMWtwV1FWWWJiVHFzUHJEMnNTYWExMWpmY2VHYXVOanM4Nm0zZWExcmFr
dDMzYS83WDA3bWwydzNSYTdUcnZQOWc3Mkl2c20KK3pFSFBZZDRoNzBPOTloMGRpaTdoSDNWRWV2
bzRiak84WXpqQnlkN0o3SFRTYWZmblZuT0tjNE56cU1MREJmd0Y5UXRHSExSY2VHNApISEtSTG1R
dWpGOTRjS0hVVmR1VjQxcnIrc3hOMTQzbmRzUnR4TjNZUGRuOXVQc3JEMHNQa1VlTHg1U25rK2Nh
end0ZWlKZXZWNUZYCnI3ZVM5Mkx2YXUrblBqbytpVDZOUGhPK2RyNnJmUy80WWYwQy9YYjYzZlBY
OE9mNjEvdFBCRGdFckFub0NxUUVSZ1JXQno0TE1na1MKQlhVRXc4RUJ3YnVDSHkvU1h5UmMxQllD
UXZ4RGRvVThDVFVNWFJYNmN4Z3VMRFNzSnV4NXVGVjRmbmgzQkMxaVJVUkR4THRJajhqUwp5RWVM
alJaTEZuZEd5VWZGUmRWSFRVVjdSWmRGUzVkWUxGbXo1RWFNV293Z3BqMFdIeHNWZXlSMmNxbjMw
dDFMaCtQczRncmo3aTR6ClhKYXo3TnB5dGVXcHk4K3VrRi9CV1hFcUhoc2ZIZDhRLzRrVHdxbmxU
SzcwWDdsMzVRVFhrN3VIKzVMbnhpdm5qZkZkK0dYOGtRU1gKaExLRTBVU1h4RjJKWTBtdVNSVko0
d0pQUWJYZ2RiSmY4b0hrcVpTUWxLTXBNNm5ScWMxcGhMVDR0Tk5DSldHS3NDdGRNejBudlMvRApO
S013UTdyS2FkWHVWUk9pUU5HUlRDaHpXV2E3bUk3K1RQVklqQ1NiSllOWkM3TnFzdDVuUjJXZnls
SE1FZWIwNUpya2Jzc2R5ZlBKCiszNDFaalYzZFdlK2R2NkcvTUUxN21zT3JZWFdybHpidVU1M1hj
RzY0ZlcrNjQ5dElHMUkyZkRMUnN1TlpSdmZib3JlMUZHZ1ViQysKWUdpejcrYkdRcmxDVWVHOUxj
NWJEbXpGYkJWczdkMW1zNjFxMjVjaVh0SDFZc3ZpaXVKUEpkeVM2OTlaZlZmNTNjejJoTzI5cGZh
bAorM2ZnZGdoMzNOM3B1dk5ZbVdKWlh0blFydUJkcmVYTThxTHl0N3RYN0w1V1lWdHhZQTlwajJT
UHRES29zcjFLcjJwSDFhZnFwT3FCCkdvK2E1cjNxZTdmdG5kckgyOWUvMzIxLzB3R05BOFVIUGg0
VUhMeC95UGRRYTYxQmJjVmgzT0dzdzgvcm91cTZ2MmQvWDM5RTdVangKa2M5SGhVZWx4OEtQZGRV
NzFOYzNxRGVVTnNLTmtzYXg0M0hIYi8zZzlVTjdFNnZwVURPanVmZ0VPQ0U1OGVMSCtCL3ZuZ3c4
MlhtSwpmYXJwSi8yZjlyYlFXb3Bhb2RiYzFvbTJwRFpwZTB4NzMrbUEwNTBkemgwdFA1di9mUFNN
OXBtYXM4cG5TOCtSemhXY216bWZkMzd5ClFzYUY4WXVKRjRjNlYzUSt1clRrMHAydXNLN2V5NEdY
cjE3eHVYS3AyNzM3L0ZXWHEyZXVPVjA3ZloxOXZlMkcvWTNXSHJ1ZWxsL3MKZm1ucHRlOXR2ZWx3
cy8yVzQ2Mk92Z1Y5NS9wZCt5L2U5cnA5NVk3L25Sc0Rpd2I2N2k2K2UvOWUzRDNwZmQ3OTBRZXBE
MTQvekhvNAovV2o5WSt6am9pY0tUeXFlcWordC9kWDQxMmFwdmZUc29OZGd6N09JWjQrR3VFTXYv
NVg1cjAvREJjK3B6eXRHdEVicVI2MUh6NHo1CmpOMTZzZlRGOE11TWw5UGpoYjhwL3JiM2xkR3Ju
MzUzKzcxbllzbkU4R3ZSNjVrL1N0Nm92am42MXZadDUyVG81Tk4zYWUrbXA0cmUKcTc0LzlvSDlv
ZnRqOU1lUjZleFArRStWbjQwL2Qzd0ovUEo0Sm0xbTV0LzNoUFA3Q21WdVpITjBjbVZoYlFwbGJt
UnZZbW9LTVRBZwpNQ0J2WW1vS01qWXhNZ3BsYm1Sdlltb0tOeUF3SUc5aWFncGJJQzlKUTBOQ1lY
TmxaQ0E1SURBZ1VpQmRDbVZ1Wkc5aWFnb3pJREFnCmIySnFDanc4SUM5VWVYQmxJQzlRWVdkbGN5
QXZUV1ZrYVdGQ2IzZ2dXekFnTUNBeU1TQXlNMTBnTDBOdmRXNTBJREVnTDB0cFpITWcKV3lBeUlE
QWdVaUJkSUQ0K0NtVnVaRzlpYWdveE1TQXdJRzlpYWdvOFBDQXZWSGx3WlNBdlEyRjBZV3h2WnlB
dlVHRm5aWE1nTXlBdwpJRklnUGo0S1pXNWtiMkpxQ2pFeUlEQWdiMkpxQ2loTllXTWdUMU1nV0NB
eE1DNDJJRkYxWVhKMGVpQlFSRVpEYjI1MFpYaDBLUXBsCmJtUnZZbW9LTVRNZ01DQnZZbW9LS0VR
Nk1qQXdPREV5TWpJeU16VXlNalZhTURBbk1EQW5LUXBsYm1Sdlltb0tNU0F3SUc5aWFnbzgKUENB
dlVISnZaSFZqWlhJZ01USWdNQ0JTSUM5RGNtVmhkR2x2YmtSaGRHVWdNVE1nTUNCU0lDOU5iMlJF
WVhSbElERXpJREFnVWlBKwpQZ3BsYm1Sdlltb0tlSEpsWmdvd0lERTBDakF3TURBd01EQXdNREFn
TmpVMU16VWdaaUFLTURBd01EQXdNelEwT0NBd01EQXdNQ0J1CklBb3dNREF3TURBd01qRXlJREF3
TURBd0lHNGdDakF3TURBd01ETXlNalVnTURBd01EQWdiaUFLTURBd01EQXdNREF5TWlBd01EQXcK
TUNCdUlBb3dNREF3TURBd01UazBJREF3TURBd0lHNGdDakF3TURBd01EQXpNVFFnTURBd01EQWdi
aUFLTURBd01EQXdNekU1TUNBdwpNREF3TUNCdUlBb3dNREF3TURBd05ERXdJREF3TURBd0lHNGdD
akF3TURBd01EQTBOVFVnTURBd01EQWdiaUFLTURBd01EQXdNekUyCk9TQXdNREF3TUNCdUlBb3dN
REF3TURBek16QTJJREF3TURBd0lHNGdDakF3TURBd01ETXpOVFlnTURBd01EQWdiaUFLTURBd01E
QXcKTXpRd05pQXdNREF3TUNCdUlBcDBjbUZwYkdWeUNqdzhJQzlUYVhwbElERTBJQzlTYjI5MElE
RXhJREFnVWlBdlNXNW1ieUF4SURBZwpVaUF2U1VRZ1d5QThPRGRpTlRWbU5qWXlPRGMyTVRCaU1E
ZzVOMk15TnpSbE1XSmhabVl5TURBK0NqdzROMkkxTldZMk5qSTROell4Ck1HSXdPRGszWXpJM05H
VXhZbUZtWmpJd01ENGdYU0ErUGdwemRHRnlkSGh5WldZS016VXlNd29sSlVWUFJnb0FBQUFBQUFB
QUFDVlEKUkVZdE1TNHpDaVhFNWZMbDY2ZnpvTkRFeGdvMElEQWdiMkpxQ2p3OElDOU1aVzVuZEdn
Z05TQXdJRklnTDBacGJIUmxjaUF2Um14aApkR1ZFWldOdlpHVWdQajRLYzNSeVpXRnRDbmdCTmNv
eENvQXdEQVhRM1ZQOEU2Ukptd2laSFp3OVEwRWQ2bEI2ZnpBVkpNUG52NStPCkF4MXBHNEk2d04r
TmlyUUhYQUhFNm9aY2lKa1Z6dy9oWlZXMDJjVnNSdXhMUTg3a0pSdEVTTjNueDQwVHh3dXlFeFpR
Q21WdVpITjAKY21WaGJRcGxibVJ2WW1vS05TQXdJRzlpYWdvNE9RcGxibVJ2WW1vS01pQXdJRzlp
YWdvOFBDQXZWSGx3WlNBdlVHRm5aU0F2VUdGeQpaVzUwSURNZ01DQlNJQzlTWlhOdmRYSmpaWE1n
TmlBd0lGSWdMME52Ym5SbGJuUnpJRFFnTUNCU0lDOU5aV1JwWVVKdmVDQmJNQ0F3CklESXpJREl6
WFFvK1BncGxibVJ2WW1vS05pQXdJRzlpYWdvOFBDQXZVSEp2WTFObGRDQmJJQzlRUkVZZ1hTQXZR
MjlzYjNKVGNHRmoKWlNBOFBDQXZRM014SURjZ01DQlNJRDQrSUM5RmVIUkhVM1JoZEdVZ1BEd2dM
MGR6TVNBNElEQWdVZ28rUGlBK1BncGxibVJ2WW1vSwpPQ0F3SUc5aWFnbzhQQ0F2Vkhsd1pTQXZS
WGgwUjFOMFlYUmxJQzlQVUUwZ01TQStQZ3BsYm1Sdlltb0tPU0F3SUc5aWFnbzhQQ0F2ClRHVnVa
M1JvSURFd0lEQWdVaUF2VGlBeklDOUJiSFJsY201aGRHVWdMMFJsZG1salpWSkhRaUF2Um1sc2RH
VnlJQzlHYkdGMFpVUmwKWTI5a1pTQStQZ3B6ZEhKbFlXMEtlQUdkbG5kVVU5a1doOCs5TjczUUVp
SWdKZlFhZWdrZzBqdElGUVJSaVVtQVVBS0doQ1oyUkFWRwpGQkVwVm1SVXdBRkhoeUpqUlJRTGc0
Smkxd255RUZER3dWRkVSZVhkakdzSjc2MDE4OTZhL2NkWjM5bm50OWZaWis5OTE3b0FVUHlDCkJN
SjBXQUdBTktGWUZPN3J3VndTRTh2RTl3SVlFQUVPV0FIQTRXWm1CRWY0UkFMVS9MMDltWm1vU01h
ejl1NHVnR1M3Mnl5L1VDWnoKMXY5L2tTSTNReVFHQUFwRjFUWThmaVlYNVFLVVU3UEZHVEwvQk1y
MGxTa3loakV5RnFFSm9xd2k0OFN2YlBhbjVpdTd5WmlYSnVTaApHbG5PR2J3MG5veTdVTjZhSmVH
ampBU2hYSmdsNEdlamZBZGx2VlJKbWdEbDl5alQwL2ljVEFBd0ZKbGZ6T2Ntb1d5Sk1rVVVHZTZK
CjhnSUFDSlRFT2J4eURvdjVPV2llQUhpbVorU0tCSWxKWXFZUjE1aHA1ZWpJWnZyeHMxUDVZakVy
bE1OTjRZaDRUTS8wdEF5T01CZUEKcjIrV1JRRWxXVzJaYUpIdHJSenQ3Vm5XNW1qNXY5bmZIbjVU
L1QzSWV2dFY4U2JzejU1QmpKNVozMnpzckMrOUZnRDJKRnFiSGJPKwpsVlVBdEcwR1FPWGhyRS92
SUFEeUJRQzAzcHp6SG9ac1hwTEU0Z3duQzR2czdHeHpBWjlyTGl2b04vdWZnbS9LdjRZNTk1bkw3
dnRXCk82WVhQNEVqU1JVelpVWGxwcWVtUzBUTXpBd09sODlrL2ZjUS8rUEFPV25OeWNNc25KL0FG
L0dGNkZWUjZKUUpoSWxvdTRVOGdWaVEKTG1RS2hIL1Y0WDhZTmljSEdYNmRheFJvZFY4QWZZVTVV
TGhKQjhodlBRQkRJd01rYmo5NkFuM3JXeEF4Q3NpK3ZHaXRrYTl6anpKNgovdWY2SHd0Y2ltN2hU
RUVpVStiMkRJOWtjaVdpTEJtajM0UnN3UUlTa0FkMG9BbzBnUzR3QWl4Z0RSeUFNM0FEM2lBQWhJ
QklFQU9XCkF5NUlBbWxBQkxKQlB0Z0FDa0V4MkFGMmcycHdBTlNCZXRBRVRvSTJjQVpjQkZmQURY
QUxESUJIUUFxR3dVc3dBZDZCYVFpQzhCQVYKb2tHcWtCYWtENWxDMWhBYldnaDVRMEZRT0JRRHhV
T0prQkNTUVBuUUpxZ1lLb09xb1VOUVBmUWpkQnE2Q0YyRCtxQUgwQ0EwQnYwQgpmWVFSbUFMVFlR
M1lBTGFBMmJBN0hBaEh3c3ZnUkhnVm5BY1h3TnZoU3JnV1BnNjN3aGZoRy9BQUxJVmZ3cE1JUU1n
SUE5RkdXQWdiCjhVUkNrRmdrQVJFaGE1RWlwQUtwUlpxUURxUWJ1WTFJa1hIa0F3YUhvV0dZR0Ji
R0dlT0hXWXpoWWxaaDFtSktNTldZWTVoV1RCZm0KTm1ZUU00SDVncVZpMWJHbVdDZXNQM1lKTmhH
YmpTM0VWbUNQWUZ1d2w3RUQyR0hzT3h3T3g4QVo0aHh3ZnJnWVhESnVOYTRFdHcvWApqTHVBNjhN
TjRTYnhlTHdxM2hUdmdnL0JjL0JpZkNHK0NuOGNmeDdmangvR3Z5ZVFDVm9FYTRJUElaWWdKR3dr
VkJBYUNPY0kvWVFSCndqUlJnYWhQZENLR0VIbkVYR0lwc1k3WVFieEpIQ1pPa3hSSmhpUVhVaVFw
bWJTQlZFbHFJbDBtUFNhOUlaUEpPbVJIY2hoWlFGNVAKcmlTZklGOGxENUkvVUpRb0poUlBTaHhG
UXRsT09VcTVRSGxBZVVPbFVnMm9idFJZcXBpNm5WcFB2VVI5U24wdlI1TXpsL09YNDhtdAprNnVS
YTVYcmwzc2xUNVRYbDNlWFh5NmZKMThoZjByK3B2eTRBbEhCUU1GVGdhT3dWcUZHNGJUQ1BZVkpS
WnFpbFdLSVlwcGlpV0tECjRqWEZVU1c4a29HU3R4SlBxVURwc05JbHBTRWFRdE9sZWRLNHRFMjBP
dHBsMmpBZFJ6ZWsrOU9UNmNYMEgraTk5QWxsSldWYjVTamwKSE9VYTViUEtVZ2JDTUdENE0xSVpw
WXlUakx1TWovTTA1cm5QNDgvYk5xOXBYdis4S1pYNUttNHFmSlVpbFdhVkFaV1Bxa3hWYjlVVQox
WjJxYmFwUDFEQnFKbXBoYXRscSs5VXVxNDNQcDg5M25zK2RYelQvNVB5SDZyQzZpWHE0K21yMXcr
bzk2cE1hbWhxK0doa2FWUnFYCk5NWTFHWnB1bXNtYTVacm5OTWUwYUZvTHRRUmE1VnJudFY0d2xa
bnV6RlJtSmJPTE9hR3RydTJuTGRFK3BOMnJQYTFqcUxOWVo2Tk8Kczg0VFhaSXVXemRCdDF5M1Uz
ZENUMHN2V0M5ZnIxSHZvVDVSbjYyZnBMOUh2MXQveXNEUUlOcGdpMEdid2FpaGlxRy9ZWjVobytG
agpJNnFScTlFcW8xcWpPOFk0WTdaeGl2RSs0MXNtc0ltZFNaSkpqY2xOVTlqVTNsUmd1cyswend4
cjVtZ21OS3MxdThlaXNOeFpXYXhHCjFxQTV3enpJZktONW0va3JDejJMV0l1ZEZ0MFdYeXp0TEZN
dDZ5d2ZXU2xaQlZodHRPcXcrc1BheEpwclhXTjl4NFpxNDJPenpxYmQKNXJXdHFTM2Zkci90ZlR1
YVhiRGRGcnRPdTgvMkR2WWkreWI3TVFjOWgzaUh2UTczMkhSMktMdUVmZFVSNitqaHVNN3hqT01I
SjNzbgpzZE5KcDkrZFdjNHB6ZzNPb3dzTUYvQVgxQzBZY3RGeDRiZ2NjcEV1WkM2TVgzaHdvZFJW
MjVYald1djZ6RTNYamVkMnhHM0UzZGc5CjJmMjQreXNQU3crUlI0dkhsS2VUNXhyUEMxNklsNjlY
a1ZldnQ1TDNZdTlxNzZjK09qNkpQbzArRTc1MnZxdDlML2hoL1FMOWR2cmQKODlmdzUvclgrMDhF
T0FTc0NlZ0twQVJHQkZZSFBnc3lDUklGZFFURHdRSEJ1NElmTDlKZkpGelVGZ0pDL0VOMmhUd0pO
UXhkRmZwegpHQzRzTkt3bTdIbTRWWGgrZUhjRUxXSkZSRVBFdTBpUHlOTElSNHVORmtzV2QwYkpS
OFZGMVVkTlJYdEZsMFZMbDFnc1diUGtSb3hhCmpDQ21QUllmR3hWN0pIWnlxZmZTM1V1SDQremlD
dVB1TGpOY2xyUHMybksxNWFuTHo2NlFYOEZaY1NvZUd4OGQzeEQvaVJQQ3FlVk0KcnZSZnVYZmxC
TmVUdTRmN2t1ZkdLK2VOOFYzNFpmeVJCSmVFc29UUlJKZkVYWWxqU2E1SkZVbmpBazlCdGVCMXNs
L3lnZVNwbEpDVQpveWt6cWRHcHpXbUV0UGkwMDBJbFlZcXdLMTB6UFNlOUw4TTBvekJEdXNwcDFl
NVZFNkpBMFpGTUtITlpacnVZanY1TTlVaU1KSnNsCmcxa0xzMnF5M21kSFpaL0tVY3dSNXZUa211
UnV5eDNKODhuN2ZqVm1OWGQxWjc1Mi9vYjh3VFh1YXc2dGhkYXVYTnU1VG5kZHdicmgKOWI3cmoy
MGdiVWpaOE10R3k0MWxHOTl1aXQ3VVVhQlJzTDVnYUxQdjVzWkN1VUpSNGIwdHpsc09iTVZzRld6
dDNXYXpyV3JibHlKZQowZlZpeStLSzRrOGwzSkxyMzFsOVYvbmR6UGFFN2IybDlxWDdkK0IyQ0hm
YzNlbTY4MWlaWWxsZTJkQ3U0RjJ0NWN6eW92SzN1MWZzCnZsWmhXM0ZnRDJtUFpJKzBNcWl5dlVx
dmFrZlZwK3FrNm9FYWo1cm12ZXA3dCsyZDJzZmIxNy9mYlgvVEFZMER4UWMrSGhRY3ZIL0kKOTFC
cnJVRnR4V0hjNGF6RHordWk2cnEvWjM5ZmYwVHRTUEdSejBlRlI2WEh3bzkxMVR2VTF6ZW9ONVEy
d28yU3hySGpjY2R2L2VEMQpRM3NUcStsUU02TzUrQVE0SVRueDRzZjRIKytlRER6WmVZcDlxdWtu
L1ovMnR0QmFpbHFoMXR6V2liYWtObWw3VEh2ZjZZRFRuUjNPCkhTMC9tLzk4OUl6Mm1acXp5bWRM
ejVIT0ZaeWJPWjkzZnZKQ3hvWHhpNGtYaHpwWGRENjZ0T1RTbmE2d3J0N0xnWmV2WHZHNWNxbmIK
dmZ2OFZaZXJaNjQ1WFR0OW5YMjk3WWI5amRZZXU1NldYK3grYWVtMTcyMjk2WEN6L1pianJZNitC
WDNuK2wzN0w5NzJ1bjNsanYrZApHd09MQnZydUxyNTcvMTdjUGVsOTN2M1JCNmtQWGovTWVqajlh
UDFqN09PaUp3cFBLcDZxUDYzOTFmalhacW05OU95ZzEyRFBzNGhuCmo0YTRReS8vbGZtdlQ4TUZ6
Nm5QSzBhMFJ1cEhyVWZQalBtTTNYcXg5TVh3eTR5WDArT0Z2eW4rdHZlVjBhdWZmbmY3dldkaXlj
VHcKYTlIcm1UOUszcWkrT2ZyVzltM25aT2prMDNkcDc2YW5pdDZydmovMmdmMmgrMlAweDVIcDdF
LzRUNVdmalQ5M2ZBbjg4bmdtYldibQozL2VFOC9zS1pXNWtjM1J5WldGdENtVnVaRzlpYWdveE1D
QXdJRzlpYWdveU5qRXlDbVZ1Wkc5aWFnbzNJREFnYjJKcUNsc2dMMGxEClEwSmhjMlZrSURrZ01D
QlNJRjBLWlc1a2IySnFDak1nTUNCdlltb0tQRHdnTDFSNWNHVWdMMUJoWjJWeklDOU5aV1JwWVVK
dmVDQmIKTUNBd0lESXpJREl6WFNBdlEyOTFiblFnTVNBdlMybGtjeUJiSURJZ01DQlNJRjBnUGo0
S1pXNWtiMkpxQ2pFeElEQWdiMkpxQ2p3OApJQzlVZVhCbElDOURZWFJoYkc5bklDOVFZV2RsY3lB
eklEQWdVaUErUGdwbGJtUnZZbW9LTVRJZ01DQnZZbW9LS0UxaFl5QlBVeUJZCklERXdMallnVVhW
aGNuUjZJRkJFUmtOdmJuUmxlSFFwQ21WdVpHOWlhZ294TXlBd0lHOWlhZ29vUkRveU1EQTRNVEl5
TWpJek5USXkKTlZvd01DY3dNQ2NwQ21WdVpHOWlhZ294SURBZ2IySnFDanc4SUM5UWNtOWtkV05s
Y2lBeE1pQXdJRklnTDBOeVpXRjBhVzl1UkdGMApaU0F4TXlBd0lGSWdMMDF2WkVSaGRHVWdNVE1n
TUNCU0lENCtDbVZ1Wkc5aWFncDRjbVZtQ2pBZ01UUUtNREF3TURBd01EQXdNQ0EyCk5UVXpOU0Jt
SUFvd01EQXdNREF6TkRNNUlEQXdNREF3SUc0Z0NqQXdNREF3TURBeU1ETWdNREF3TURBZ2JpQUtN
REF3TURBd016SXgKTmlBd01EQXdNQ0J1SUFvd01EQXdNREF3TURJeUlEQXdNREF3SUc0Z0NqQXdN
REF3TURBeE9EVWdNREF3TURBZ2JpQUtNREF3TURBdwpNRE13TlNBd01EQXdNQ0J1SUFvd01EQXdN
REF6TVRneElEQXdNREF3SUc0Z0NqQXdNREF3TURBME1ERWdNREF3TURBZ2JpQUtNREF3Ck1EQXdN
RFEwTmlBd01EQXdNQ0J1SUFvd01EQXdNREF6TVRZd0lEQXdNREF3SUc0Z0NqQXdNREF3TURNeU9U
Y2dNREF3TURBZ2JpQUsKTURBd01EQXdNek0wTnlBd01EQXdNQ0J1SUFvd01EQXdNREF6TXprM0lE
QXdNREF3SUc0Z0NuUnlZV2xzWlhJS1BEd2dMMU5wZW1VZwpNVFFnTDFKdmIzUWdNVEVnTUNCU0lD
OUpibVp2SURFZ01DQlNJQzlKUkNCYklEeG1ZVEEyTXpVeFpqUTRPRFl6TnpJeVlqTXlOREV3Ck5X
RTFZbU14Wmpkak1UNEtQR1poTURZek5URm1ORGc0TmpNM01qSmlNekkwTVRBMVlUVmlZekZtTjJN
eFBpQmRJRDQrQ25OMFlYSjAKZUhKbFpnb3pOVEUwQ2lVbFJVOUdDZ0FsVUVSR0xURXVNd29seE9Y
eTVldW44NkRReE1ZS05DQXdJRzlpYWdvOFBDQXZUR1Z1WjNSbwpJRFVnTUNCU0lDOUdhV3gwWlhJ
Z0wwWnNZWFJsUkdWamIyUmxJRDQrQ25OMGNtVmhiUXA0QVMyTE93NkFJQlFFZTA4eEp4Q2VDdEhh
CndwcktBeEEvQlpvbzkwL2tZN2Jaek93K09CNTBpaGhrNE4xWXVWRnpGSHdzUWhNOWFrbmd5R0Jz
cDhseXBXWmFyUTJCdnJZbVlPbCsKWmhFcHc2enJKWEN5NHo2OE9oaitDbVZ1WkhOMGNtVmhiUXBs
Ym1Sdlltb0tOU0F3SUc5aWFnbzVNUXBsYm1Sdlltb0tNaUF3SUc5aQphZ284UENBdlZIbHdaU0F2
VUdGblpTQXZVR0Z5Wlc1MElETWdNQ0JTSUM5U1pYTnZkWEpqWlhNZ05pQXdJRklnTDBOdmJuUmxi
blJ6CklEUWdNQ0JTSUM5TlpXUnBZVUp2ZUNCYk1DQXdJREUxSURFMFhRbytQZ3BsYm1Sdlltb0tO
aUF3SUc5aWFnbzhQQ0F2VUhKdlkxTmwKZENCYklDOVFSRVlnWFNBdlEyOXNiM0pUY0dGalpTQThQ
Q0F2UTNNeElEY2dNQ0JTSUQ0K0lDOUZlSFJIVTNSaGRHVWdQRHdnTDBkegpNU0E0SURBZ1VnbytQ
aUErUGdwbGJtUnZZbW9LT0NBd0lHOWlhZ284UENBdlZIbHdaU0F2UlhoMFIxTjBZWFJsSUM5UFVF
MGdNU0ErClBncGxibVJ2WW1vS09TQXdJRzlpYWdvOFBDQXZUR1Z1WjNSb0lERXdJREFnVWlBdlRp
QXpJQzlCYkhSbGNtNWhkR1VnTDBSbGRtbGoKWlZKSFFpQXZSbWxzZEdWeUlDOUdiR0YwWlVSbFky
OWtaU0ErUGdwemRISmxZVzBLZUFHRmxFMUlGR0VZeC8rempRU3hCdEdYQ01YUQp3U1JVSmd0U0F0
UDFLMU8yWmRWTUNXS2RmWGVkSEdlbm1kMHRSU0tFNkpoMWpDNVdSSWVJVHVHaFE2YzZSQVNaZFlt
Z28wVVFCVjRpCnR2ODdrN3RqVkw0d003OTVudi83ZkwzREFGV1BVbzVqUlRSZ3lzNjd5ZDZZZG5w
MFROdjhHbFdvUmhSY0tjTnpPaEtKQVorcGxjLzEKYS9VdEZHbFphcFN4MXZzMmZLdDJtUkJRTkNw
M1pBTStMSGs4NE9PU0wrU2RQRFZuSkJzVHFUVFpJVGU0UThsTzhpM3kxbXlJeDBPYwpGcDRCVkxW
VGt6TWNsM0VpTzhndFJTTXJZejRnNjNiYXRNbnZwVDN0R1ZQVXNOL0lOemtMMnJqeS9VRGJIbURU
aTRwdHpBTWUzQU4yCjExVnM5VFhBemhGZzhWREY5ajNwejBmWjljckxIR3Iyd3luUkdHdjZVQ3A5
cndNMjN3QitYaStWZnR3dWxYN2VZUTdXOGRReUNtN1IKMTdJdzVTVVExQnZzWnZ6a0d2MkxnNTU4
VlF1d3dEbU9iQUg2cndBM1B3TDdId0xiSHdPSmFtQ29GWkhMYkRlNDh1SWk1d0owNXB4cAoxOHhP
NUxWbVhUK2lkZkJvaGRabkcwME5Xc3F5Tk4vbGFhN3doRnNVNlNaTVdRWE8yVi9iZUk4S2UzaVFU
L1lYdVNTODd0K3N6S1ZUClhad2xtdGpXcDdUbzZpWTNrTzlueko0K2NqMnY5eG0zWnpoZzVZQ1o3
eHNLT0hMS3R1SThGNm1KMU5qajhaTmt4bGRVSngrVDg1QTgKNXhVSFpVemZmaTUxSWtHdXBUMDVt
ZXVYbWwzYzJ6NHpNY1F6a3F4WU14T2Q4ZC84eGkwa1pkNTkxTngxTFArYloyMlJaeGlGQlFFVApO
dTgyTkNUUml4Z2E0Y0JGRGhsNlRDcE1XcVZmMEdyQ3crUmZsUllTNVYwV0ZiMVk0WjRWZjg5NUZM
aGJ4aitGV0J4ekRlVUltdjVPCi82SXY2d3Y2WGYzemZHMmh2dUtaYzgrYXhxdHJYeGxYWnBiVnlM
aEJqVEsrckNtSWI3RGFEbm90WkdtZDRoWDA1SlgxamVIcU12WjgKYmRtanlSemlhbncxMUtVSVpX
ckVPT1BKcm1YM1JiTEZOK0huVzh2MnIrbFIrM3oyU1UwbDE3SzZlR1lwK253MlhBMXIvN09yWU5L
eQpxL0RralpBdVBHdWg3bFVQcW4xcWk5b0tUVDJtdHF0dGFoZmZqcW9ENVIzRG5KV0pDNnpiWmZV
cDltQmptdDdLU1ZkbWkrRGZ3aStHCi82VmVZUXZYTkRUNUQwMjR1WXhwQ2Q4UjNEWndoNVQvdzEr
ekF3M2VDbVZ1WkhOMGNtVmhiUXBsYm1Sdlltb0tNVEFnTUNCdlltb0sKTnpreUNtVnVaRzlpYWdv
M0lEQWdiMkpxQ2xzZ0wwbERRMEpoYzJWa0lEa2dNQ0JTSUYwS1pXNWtiMkpxQ2pNZ01DQnZZbW9L
UER3ZwpMMVI1Y0dVZ0wxQmhaMlZ6SUM5TlpXUnBZVUp2ZUNCYk1DQXdJREUxSURFMFhTQXZRMjkx
Ym5RZ01TQXZTMmxrY3lCYklESWdNQ0JTCklGMGdQajRLWlc1a2IySnFDakV4SURBZ2IySnFDanc4
SUM5VWVYQmxJQzlEWVhSaGJHOW5JQzlRWVdkbGN5QXpJREFnVWlBK1BncGwKYm1Sdlltb0tNU0F3
SUc5aWFnbzhQQ0F2VUhKdlpIVmpaWElnS0UxaFl5QlBVeUJZSURFd0xqWWdVWFZoY25SNklGQkVS
a052Ym5SbAplSFFwSUM5RGNtVmhkR2x2YmtSaGRHVWdLRVE2TWpBd05qQXlNVFF4TWpNeE5URXRN
RGduTURBbktRb3ZUVzlrUkdGMFpTQW9SRG95Ck1EQTJNREl4TkRFeU16RTFNUzB3T0Njd01DY3BJ
RDQrQ21WdVpHOWlhZ3A0Y21WbUNqQWdNVElLTURBd01EQXdNREF3TUNBMk5UVXoKTlNCbUlBb3dN
REF3TURBeE5USTRJREF3TURBd0lHNGdDakF3TURBd01EQXlNRFVnTURBd01EQWdiaUFLTURBd01E
QXdNVE01TnlBdwpNREF3TUNCdUlBb3dNREF3TURBd01ESXlJREF3TURBd0lHNGdDakF3TURBd01E
QXhPRGNnTURBd01EQWdiaUFLTURBd01EQXdNRE13Ck55QXdNREF3TUNCdUlBb3dNREF3TURBeE16
WXlJREF3TURBd0lHNGdDakF3TURBd01EQTBNRE1nTURBd01EQWdiaUFLTURBd01EQXcKTURRME9D
QXdNREF3TUNCdUlBb3dNREF3TURBeE16UXlJREF3TURBd0lHNGdDakF3TURBd01ERTBOemdnTURB
d01EQWdiaUFLZEhKaAphV3hsY2dvOFBDQXZVMmw2WlNBeE1pQXZVbTl2ZENBeE1TQXdJRklnTDBs
dVptOGdNU0F3SUZJZ0wwbEVJRnNnUEVWRVJqTkZNamxECk9VUTVPREV4UkVFNFFUSkVNREF3UkRr
ek56QkJRMEk0UGdvOFJVUkdRVVZEUXpFNVJEazRNVEZFUVRoQk1rUXdNREJFT1RNM01FRkQKUWpn
K0lGMGdQajRLYzNSaGNuUjRjbVZtQ2pFMk5qZ0tKU1ZGVDBZS0FBQUFBQUFBQUFBQUFBQUFBQUFB
SlZCRVJpMHhMak1LSmNUbAo4dVhycC9PZzBNVEdDalFnTUNCdlltb0tQRHdnTDB4bGJtZDBhQ0Ex
SURBZ1VpQXZSbWxzZEdWeUlDOUdiR0YwWlVSbFkyOWtaU0ErClBncHpkSEpsWVcwS2VBRkZVRHRP
eEZBTTdIT0tPWUhYZmg5LzZoUklTQlNyRkJ3ZzRsTUVwQ1VGMThjdllVR1JuanhqejR5ZEc2NjQK
Z2ZPVERtbjRlc0V6UG5HWmQ4RzZIdzNHdnVMeWtNVGJJSndpRkI5WmRXTHUyRkRQYXRxZ0tMK2NR
dVFZSE8xVHN1RWRyeEFxSGQ4UQpQS0xoYWZpVzRYc0V6c3NaT0MwemhLbTF5SEYyeXpRcDFLU2t2
YlFDcVdRbWFGVE43MEFwMUxIZVlaREtFRldOS1RkeFQ4UlVtdzB5CnBPYmtncUFzYWo1dEpHU2dS
RUlmZjBLb2l1UmR4WTVMQmhnSk1XWEMyWE15S2N5bnIrVlNUSVVqUGJta2hNbFZqeEFqaTVaT1lq
MVQKbkJyWG9lclVRaVluTHphZ2txaGw5dzlHSHJqK0U1WnJlY0xhTmQ5ZUQ1R1IraUM5YU82MTRQ
b0RQdnRjdXdwbGJtUnpkSEpsWVcwSwpaVzVrYjJKcUNqVWdNQ0J2WW1vS01qWTFDbVZ1Wkc5aWFn
b3lJREFnYjJKcUNqdzhJQzlVZVhCbElDOVFZV2RsSUM5UVlYSmxiblFnCk15QXdJRklnTDFKbGMy
OTFjbU5sY3lBMklEQWdVaUF2UTI5dWRHVnVkSE1nTkNBd0lGSWdMMDFsWkdsaFFtOTRJRnN3SURB
Z01UVWcKTVRSZENqNCtDbVZ1Wkc5aWFnbzJJREFnYjJKcUNqdzhJQzlRY205alUyVjBJRnNnTDFC
RVJpQmRJQzlEYjJ4dmNsTndZV05sSUR3OApJQzlEY3pFZ055QXdJRklnUGo0Z0wwVjRkRWRUZEdG
MFpTQThQQ0F2UjNNeUlEZ2dNQ0JTQ2k5SGN6RWdPU0F3SUZJZ1BqNGdQajRLClpXNWtiMkpxQ2pn
Z01DQnZZbW9LUER3Z0wxUjVjR1VnTDBWNGRFZFRkR0YwWlNBdlUwRWdkSEoxWlNBK1BncGxibVJ2
WW1vS09TQXcKSUc5aWFnbzhQQ0F2Vkhsd1pTQXZSWGgwUjFOMFlYUmxJQzlQVUUwZ01TQStQZ3Bs
Ym1Sdlltb0tNVEFnTUNCdlltb0tQRHdnTDB4bApibWQwYUNBeE1TQXdJRklnTDA0Z015QXZRV3gw
WlhKdVlYUmxJQzlFWlhacFkyVlNSMElnTDBacGJIUmxjaUF2Um14aGRHVkVaV052ClpHVWdQajRL
YzNSeVpXRnRDbmdCaFpSTlNCUmhHTWYvczQwRXNRYlJsd2pGME1Fa1ZDWUxVZ0xUOVN0VHRtWFZU
QWxpblgxM25SeG4KcDVuZExVVWloT2lZZFl3dVZrU0hpRTdob1VPbk9rUUVtWFdKb0tORkVBVmVJ
cmIvTzVPN1kxUytNRE8vZVo3LyszeTl3d0JWajFLTwpZMFUwWU1yT3U4bmVtSFo2ZEV6Yi9CcFZx
RVlVWENuRGN6b1NpUUdmcVpYUDlXdjFMUlJwV1dxVXNkYjdObnlyZHBrUVVEUXFkMlFEClBpeDVQ
T0Rqa2kva25UdzFaeVFiRTZrMDJTRTN1RVBKVHZJdDh0WnNpTWREbkJhZUFWUzFVNU16SEpkeElq
dklMVVVqSzJNK0lPdDIKMnJUSjc2VTk3UmxUMUxEZnlEYzVDOXE0OHYxQTJ4NWcwNHVLYmN3REh0
d0RkdGRWYlBVMXdNNFJZUEZReGZZOTZjOUgyZlhLeXh4cQo5c01wMFJocitsQXFmYThETnQ4QWZs
NHZsWDdjTHBWKzNtRU8xdkhVTWdwdTBkZXlNT1VsRU5RYjdHYjg1QnI5aTRPZWZGVUxzTUE1Cmpt
d0IrcThBTno4Qyt4OEMyeDhEaVdwZ3FCV1J5MnczdVBMaUl1Y0NkT2FjYWRmTVR1UzFabDAvb25Y
d2FJWFdaeHRORFZyS3NqVGYKNVdtdThJUmJGT2ttVEZrRnp0bGYyM2lQQ250NGtFLzJGN2trdk83
ZnJNeWxVMTJjSlpyWTFxZTA2T29tTjVEdlo4eWVQbkk5ci9jWgp0MmM0WU9XQW1lOGJDamh5eXJi
aVBCZXBpZFRZNC9HVFpNWlhWQ2Nmay9PUVBPY1ZCMlZNMzM0dWRTSkJycVU5T1pucmw1cGQzTnMr
Ck16SEVNNUtzV0RNVG5mSGYvTVl0SkdYZWZkVGNkU3ovbTJkdGtXY1loUVVCRXpidk5qUWswWXNZ
R3VIQVJRNFpla3dxVEZxbFg5QnEKd3NQa1g1VVdFdVZkRmhXOVdPR2VGWC9QZVJTNFc4WS9oVmdj
Y3czbENKcitUditpTCtzTCtsMzk4M3h0b2I3aW1YUFBtc2FyYTE4WgpWMmFXMWNpNFFZMHl2cXdw
aUcrdzJnNTZMV1JwbmVJVjlPU1Y5WTNoNmpMMmZHM1pvOGtjNG1wOE5kU2xDR1ZxeERqanlhNWw5
MFd5CnhUZmg1MXZMOXEvcFVmdDg5a2xOSmRleXVuaG1LZnA4Tmx3TmEvK3pxMkRTc3F2dzVJMlFM
anhyb2U1VkQ2cDlhb3ZhQ2swOXByYXIKYldvWDM0NnFBK1VkdzV5VmlRdXMyMlgxS2ZaZ1k1cmV5
a2xYWm92ZzM4SXZoditsWG1FTDF6UTArUTlOdUxtTWFRbmZFZHcyY0llVQovOE5mc3dNTjNncGxi
bVJ6ZEhKbFlXMEtaVzVrYjJKcUNqRXhJREFnYjJKcUNqYzVNZ3BsYm1Sdlltb0tOeUF3SUc5aWFn
cGJJQzlKClEwTkNZWE5sWkNBeE1DQXdJRklnWFFwbGJtUnZZbW9LTXlBd0lHOWlhZ284UENBdlZI
bHdaU0F2VUdGblpYTWdMMDFsWkdsaFFtOTQKSUZzd0lEQWdNVFVnTVRSZElDOURiM1Z1ZENBeElD
OUxhV1J6SUZzZ01pQXdJRklnWFNBK1BncGxibVJ2WW1vS01USWdNQ0J2WW1vSwpQRHdnTDFSNWNH
VWdMME5oZEdGc2IyY2dMMUJoWjJWeklETWdNQ0JTSUQ0K0NtVnVaRzlpYWdveElEQWdiMkpxQ2p3
OElDOVFjbTlrCmRXTmxjaUFvVFdGaklFOVRJRmdnTVRBdU5pQlJkV0Z5ZEhvZ1VFUkdRMjl1ZEdW
NGRDa2dMME55WldGMGFXOXVSR0YwWlNBb1JEb3kKTURBMk1ESXhOREV5TXpFeU1pMHdPQ2N3TUNj
cENpOU5iMlJFWVhSbElDaEVPakl3TURZd01qRTBNVEl6TVRJeUxUQTRKekF3SnlrZwpQajRLWlc1
a2IySnFDbmh5WldZS01DQXhNd293TURBd01EQXdNREF3SURZMU5UTTFJR1lnQ2pBd01EQXdNREUz
TmpNZ01EQXdNREFnCmJpQUtNREF3TURBd01ETTRNQ0F3TURBd01DQnVJQW93TURBd01EQXhOak15
SURBd01EQXdJRzRnQ2pBd01EQXdNREF3TWpJZ01EQXcKTURBZ2JpQUtNREF3TURBd01ETTJNU0F3
TURBd01DQnVJQW93TURBd01EQXdORGd5SURBd01EQXdJRzRnQ2pBd01EQXdNREUxT1RZZwpNREF3
TURBZ2JpQUtNREF3TURBd01EVTRPU0F3TURBd01DQnVJQW93TURBd01EQXdOak0ySURBd01EQXdJ
RzRnQ2pBd01EQXdNREEyCk9ERWdNREF3TURBZ2JpQUtNREF3TURBd01UVTNOaUF3TURBd01DQnVJ
QW93TURBd01EQXhOekV6SURBd01EQXdJRzRnQ25SeVlXbHMKWlhJS1BEd2dMMU5wZW1VZ01UTWdM
MUp2YjNRZ01USWdNQ0JTSUM5SmJtWnZJREVnTUNCU0lDOUpSQ0JiSUR4RVF6ZzVSVFkwTmpsRQpP
VGd4TVVSQk9FRXlSREF3TUVRNU16Y3dRVU5DT0Q0S1BFUkRPVUV6TlRJNE9VUTVPREV4UkVFNFFU
SkVNREF3UkRrek56QkJRMEk0ClBpQmRJRDQrQ25OMFlYSjBlSEpsWmdveE9UQXpDaVVsUlU5R0Np
VlFSRVl0TVM0MERTWGk0OC9URFFveElEQWdiMkpxRFR3OEwwMWwKZEdGa1lYUmhJRElnTUNCU0wx
QmhaMlZ6SURNZ01DQlNMMVI1Y0dVdlEyRjBZV3h2Wno0K0RXVnVaRzlpYWcweUlEQWdiMkpxRFR3
OApMMHhsYm1kMGFDQXhPVFl4TlM5VGRXSjBlWEJsTDFoTlRDOVVlWEJsTDAxbGRHRmtZWFJoUGo1
emRISmxZVzBOQ2p3L2VIQmhZMnRsCmRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJW
b2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0NqeDRPbmh0Y0cxbGRHRWcKZUcxc2JuTTZlRDBpWVdS
dlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEUXVNaTR5
TFdNdwpOak1nTlRNdU16VXlOakkwTENBeU1EQTRMekEzTHpNd0xURTRPakExT2pReElDQWdJQ0Fn
SUNBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0CmJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11
YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBnb2cKSUNBZ0lDQThjbVJt
T2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVj
enA0YlhBOQpJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpQ2lBZ0lDQWdJ
Q0FnSUNBZ0lIaHRiRzV6T25odGNFZEpiV2M5CkltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZl
R0Z3THpFdU1DOW5MMmx0Wnk4aVBnb2dJQ0FnSUNBZ0lDQThlRzF3T2tOeVpXRjAKYjNKVWIyOXNQ
a0ZrYjJKbElFbHNiSFZ6ZEhKaGRHOXlJRU5UTkR3dmVHMXdPa055WldGMGIzSlViMjlzUGdvZ0lD
QWdJQ0FnSUNBOAplRzF3T2tOeVpXRjBaVVJoZEdVK01qQXdPUzB4TVMweU0xUXhNem8xTnpveE9D
MHdPRG93TUR3dmVHMXdPa055WldGMFpVUmhkR1UrCkNpQWdJQ0FnSUNBZ0lEeDRiWEE2VFdWMFlX
UmhkR0ZFWVhSbFBqSXdNRGt0TVRFdE1qTlVNVE02TlRjNk1UZ3RNRGc2TURBOEwzaHQKY0RwTlpY
UmhaR0YwWVVSaGRHVStDaUFnSUNBZ0lDQWdJRHg0YlhBNlRXOWthV1o1UkdGMFpUNHlNREE1TFRF
eExUSXpWREV6T2pVMwpPakU0TFRBNE9qQXdQQzk0YlhBNlRXOWthV1o1UkdGMFpUNEtJQ0FnSUNB
Z0lDQWdQSGh0Y0RwVWFIVnRZbTVoYVd4elBnb2dJQ0FnCklDQWdJQ0FnSUNBOGNtUm1Pa0ZzZEQ0
S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhU0J5WkdZNmNHRnljMlZVZVhCbFBTSlMKWlhO
dmRYSmpaU0krQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4NGJYQkhTVzFuT25kcFpIUm9Qakkx
Tmp3dmVHMXdSMGx0WnpwMwphV1IwYUQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BIaHRjRWRK
YldjNmFHVnBaMmgwUGpJeE1qd3ZlRzF3UjBsdFp6cG9aV2xuCmFIUStDaUFnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJRHg0YlhCSFNXMW5PbVp2Y20xaGRENUtVRVZIUEM5NGJYQkhTVzFuT21admNtMWgK
ZEQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BIaHRjRWRKYldjNmFXMWhaMlUrTHpscUx6UkJR
VkZUYTFwS1VtZEJRa0ZuUlVGVApRVUpKUVVGRUx6ZFJRWE5WUjJoMlpFYzVlbUZIT1hkSlJFMTFU
VUZCTkZGcmJFNUJLekJCUVVGQlFVRkNRVUZUUVVGQlFVRkZRU1lqCmVFRTdRVkZDU1VGQlFVRkJV
VUZDTHlzMFFVUnJSbXRpTWtwc1FVZFVRVUZCUVVGQlppOWlRVWxSUVVKblVVVkNRVlZGUW1kVlJr
Sm4KYTBkQ1VWbEtRM2RuUjBKbloweEVRVzlMUTNkdlN5WWplRUU3UkVKQlRVUkJkMDFFUVhkUlJF
RTBVRVZCT0U5RVFrMVVSa0pSVkVWNApkMkpIZUhOalNIZzRaa2g0T0daSWVEaG1TSGRGU0VKM1kw
NUVRVEJaUlVKQldVZG9WVkpHVW05bVNIZzRaaVlqZUVFN1NIZzRaa2g0Ck9HWkllRGhtU0hnNFpr
aDRPR1pJZURobVNIZzRaa2g0T0daSWVEaG1TSGc0WmtoNE9HWkllRGhtU0hnNFpraDRPR1pJZURo
bUx6aEIKUVVWUlowRXhRVVZCUVhkRlVpWWplRUU3UVVGSlVrRlJUVkpCWmk5RlFXRkpRVUZCUVVo
QlVVVkNRVkZGUVVGQlFVRkJRVUZCUVVGUgpSa0YzU1VkQlVVRklRMEZyUzBOM1JVRkJaMGxFUVZG
RlFrRlJSVUZCUVVGQlFVRkJRU1lqZUVFN1FWRkJRMEYzVVVaQ1oyTkpRMUZ2ClRFVkJRVU5CVVUx
RVFXZFJRMEpuWTBSQ1FVbEhRVzVOUWtGblRWSkNRVUZHU1ZKSmVGRldSVWRGTWtWcFkxbEZWVTF3
UjJoQ2VGZDQKVVdsUVFpWWplRUU3VlhSSWFFMTRXbWs0UTFKNVozWkZiRkY2VWxScmNVdDVXVE5R
UTA1VlVXNXJOazk2VG1oa1ZWcElWRVF3ZFVsSgpTbTlOU2tOb1oxcG9TbEpHVW5GVE1GWjBUbFpM
UW5KNU5DOVFSU1lqZUVFN01VOVVNRnBZVjBac1lWY3hlR1JZYkRsWFdqSm9jR0Z0CmRITmlWelYy
V1ROU01XUnVaRFJsV0hBM1prZ3hLMll6VDBWb1dXRklhVWx0UzJrMGVVNXFieXREYXpWVFZteHda
Vmx0V2lZamVFRTcKY1dKdVNqSmxialZMYW5CTFYyMXdObWx3Y1hGMWMzSmhOblp2VWtGQlNVTkJV
VWxFUWxGVlJVSlJXVVZEUVUxRVlsRkZRVUZvUlVSQwpRMFZUVFZWRlJsVlNUbWhKWjFwNFoxcEZl
U1lqZUVFN2IySklkMFpOU0ZJMFUwNURSbFpLYVdOMlJYcEtSRkpFWjJoaFUxVjVWMmxaCk4weERR
ak5RVTA1bFNrVm5lR1JWYTNkblNrTm9aMXBLYWxwR1IybGthMlJHVlRNNGNVOTZkM2xuY0NZamVF
RTdNQ3RRZW1oS1UydDAKVFZSVk5WQlNiR1JaVjFad1lsaEdNV1ZZTVZKc1dtMWtiMkZYY0hKaVJ6
RjFZakpTTVdSdVpEUmxXSEEzWmtneEsyWXpUMFZvV1dGSQphVWx0UzJrMGVVNXFieVlqZUVFN0sw
UnNTbGRYYkRWcFdtMXdkV051V2pabWEzRlBhM0JoWVc1eFMyMXhjVFo1ZEhKeEszWXZZVUZCCmQw
UkJVVUZEUlZGTlVrRkVPRUU1VlRSeE4wWllXWEUzUmxkdVpFVlNibVJuY1NZamVFRTdTME5YV1cx
blFVYzFTa3A0Vm1ncmRDOXUKUml0V0sybEdiREZFZWt4WmNrbDJNbTl2U2xCeVRXZHdNa3RYTkd4
aGRuUlVSbGRDTm5ZdmQwRTFZbVpzYm1GV1YzaDBPVkV4U2k4eQpWeVlqZUVFN2FtaFRTMDB2VFhs
MWFtb3ZRVWxFUmxkSllXNHZkMEUxYlZSSGNUWllOVmhXWmtOWE5uVjVNV1F2TlVWcFdDOXBaVXN3
CmVHWlZVQ3RqZFhaNlRYVkxhVEYwVGsxemJDOWFTMUY1ZVNZamVFRTdVRGxLYTJ4YVppdEdlRlJV
U0RjekwwRktlVlV2VDFNMlFsVmgKTmt4a1J6WnlSR0V5Y1RrMk4wMVpiV05tWm1sMFNrcGpMMjVT
SzJFeGQyRjVaV0ZrVVZoeUwyUjZSMHh5TDNkQldTWWplRUU3SzA5TApNR3hrZUN0WlVHNDJOVmxP
WTJWYVpGWnRXVU5uVFd3M1kwMWhaVWMzYmtaVmRXd3hOMWhLYkVONllXcGtVMHRFVlVzNE1HcERk
bXAxCk1rdHZWMkUyZFZvMlpYWkxPSFpIZGlZamVFRTdTRzE0WVd4bGRFczBjWEJaY1RkR1dGbHhN
bkpOYWtJd1NsWnNUbFpaWWtWRlpFTkUKYVhGTGFqRm1WbTh6UkhnemN6WlBUMnBNU3pSSksydElS
bFZhUkRWMk9FRk9jMEZKWnpGMUx5WWplRUU3YVVSbVlUUllWWGt4Y0RRdwpZa1pWTUhRdmVsZ3ZU
VFpFS3pjNE1UWnpaVzE2TTNNM2FtSjNSSFV4VFZaVVlUQXZVQzg0UVU5SE1GbEhUSHBPWTAxUlUy
WXpNR05GCmR6TkdUMnR6WWlZamVFRTdOSEpUWkRKbU9FRjZiRTRyWWpGMlZERmlNakYyUzJSbVYz
UlphRmhoYlM5d1EwdzFOSEpVU1hKSUwyNU4KV0hweGFFZ3hOMUpPVG5WQlQzWnZLM1pEVkM5M1FV
WktUbWxwYlZVMldpWWplRUU3TDNkQk5XdzJUVFZCTVZCNWVtTXlOQzloWVRKMQpWVzRyTkU5clNE
WTRWbHBxY0VndlFVUnNTaXRWWkN0V1JUazFaR0ZaZWxVeWRUZGFlbEZ1YzFSQ05qUXZTRVpYWkdG
R0sxbHVheVlqCmVFRTdWRmhwY1RaU2NqbHFaVk4wYzBsRmJtbzVXR1p3S3paWmFDOTNlRlpyVDB0
MWVGWXlTM1Y0VmpKTGRYaFdNa3R6VGpndlptMHoKTlVnNGFsRXZOMjAzTkVjcldtVlZWMjB5TkRs
WE5TWWplRUU3WTJSMlowSkJVVWg0WTJkWmNTdGxVRTlRT0VGNmJIbzFkekZCZGtJMQpXbk52WkVa
MGFsVk1ZMU13ZFdKcmFuZ3JTVU5LWm14M1lqVTBjbFI1UkhwRU5USTRNeXRaTTB3Mk4zSkdNeVlq
ZUVFN2NVRktjVWsxCk5WaGhUbFF2UVVwTlpHVkRMMUZOVlhCS2FYSnpWbVJwY25OV1pHbHljMVpr
YVhKelZtUnBjbk5XWkdseWMxWmthWEp6Vm1ScGNuTlcKWkdseWMxWmthWEp6Vm1ScGNpWWplRUU3
YzFaYVVEVmpMMDB6T0hkUVRHSk1LMmgwWlhaTVYwNUxSbUpqZVVkWFJHSXZhVzFZYmtWbQpLMEo0
VmpZNU5WSXZOWGt2T0hoWGNGTkllbFJ3VlU5dmQycGFjblY2VURGbFpXNXBWU1lqZUVFN1VFdE9h
amgxUjB0TFpsRklhMVE0Ck1YWkpMMjVsU0d4dlYyOUxPVEp2TlZNMlpFOVFVM1ZyU0haSFpuUkVM
MHRSYTJVclMzTjFlRll5UzNWNFZqVk9MM3ByU0N0aU9HNXIKVkZGSmNpWWplRUU3U0ZOdFdDOUZi
WEpDYUdGelVVZEdka04xZW5wclNEbHhjRFJ2UkhSWGNDOWFjR2x5TkhOMllqSTRkbkoxWVRoMgpX
ak4xWW5VMFdYbFVlbmx6V0dRelltTnplazVWYXpSd1ZVMVdaQ1lqZUVFN2FYSnpWbVJwY25OV1pH
bHljMVprYVhKelZtUnBjbk5XClpHbHljMVprYVhKelZtUnBjbk5XWkdseWMxWmthWEp6Vm1ScGNu
TldaR2x5YzFaa2FYRjJXVE01TjNBNU5VUmxNazA0YkNZamVFRTcKY21ReU4wSTBUR2xLYVdwdmR6
WkdWMFpEVFZabVlVZ3ZRVVJxTlN0alZDdGxPVVpzTUROV00xZ3ZSWFZzYjNCMVEwRkdLM05SWWt0
egpORlZtZEVFdlF6bE9jVEJRWlcxTFNISnRTeVlqZUVFN2RYaFdPRUptYmtvMWVtWjZaaXRaZFhJ
MmNYTm9aWGxUVlRKMWJrUnpUR0V6ClNsSkRkaXQxWVhZNE1rOUxWMFUwY1RkR1dGbHhOMFpZV1hF
M1JsaFpjVGRHV0ZseE4wWllXWEUzUmlZamVFRTdXRmx4TjBaWVdYRTMKUmxoWmNUZEdXRmx4TjBa
WVdYRTNSbGhaY1RkR1dGbHhOMFpZV1hFM1JsZFZMMnhzTlRCMVVFcHVibVpUT1dacVdTdHFZbmxv
VERKTgpZamczWVZRMFdteHdNeVlqZUVFN1VFRXhXRE5CZUZZcmFFVlZjMk56VTFONFRVaHFhMVZO
YW5GaFozRjNjVU5FTnpSdldYUXJZVE50ClNTdFlVSGsxT0hjMmRXcGpTbTlNVDFKTVpEWXdOSHA2
TDNWWlZEbEZhMmswY1NZamVFRTdMMUJtUmt4elZtUnBjbk5XVW1WdFlWUngKYlhFemFWZFhiVmRy
TVRsbFUyWlpkRGRsVG5CYVJEaHNVVVUwY1RsWk9ITXZPRFJ5Wm0xa2NYbHlUSEZEVnpKcFVVNTJV
emRyTlhwVgpVQ1lqZUVFN2FFaERTazR2V20xWVJtSmxhRFppTDBGTk5HRmhUMmxMWkZRNGVUTkZO
ekFyU1ZjeGRXdEpRamxwTjNwV0t6ZEdRMlJFCkwwRktkeXN2VEZOdEszQTJlbGgyT0VGMk4xZ3ZR
VXhLY3lZamVFRTdWbEU1TXk5M1FUUmtLMUpJV0M5Uk9Wb3hVMFp4WkZwcVlubHAKZG5sWFMweEdW
MHBoTXk5NmFIWnlhMUZNWVVvMWFYUnljekJ4U1RkNVJqZGpNVGhQVlZwdWNqbDNlRmN6YXk5dVJD
WWplRUU3T0c0dgpla1k0YjNFNE1uTTJUazEwYTIwMWRqUkxWREkwU0drd2EyWkpTaTl6Tmxsd1dW
cHBjbk5XWkdseWMxWmthWEp6Vm1ScGNuTldaR2x5ClQyWkxTRFZMWm0xV05YSlRUMkpUT1NZamVF
RTdSMnhxYzNCQ1ZtSTJOM0JpZDBaVUt6QnlVMVZNYWk5VlFuaFdOblJ2Wmk5QlJHaDAKY1hOcGNT
dDFLMWswVEdNdmRGRXlWVVI2TDFJMmEzQm9jQzkzUjB0TVdsWmhaamhCVDBobWF5WWplRUU3UmxW
d1pEWjRjWE42TjJaRwpSVEYwUlZCbVdtOWFaakUwY1hKUUwwRk5OR1ptYkhOVldVcHhiWE54T1VS
NFNtMTBVMEZsTVZGTVdWWXJMMFpWYWpGUUwwRktkekF3Ck1XdFpObGcxYlNZamVFRTdiV2xtT1do
TWNUSlhVVWd5VEVrNFpGQXJRbmhXTlRFMWJpODFlR012VGtoU2EyVmhlbWQwT1dKME1UTnkKV1hs
bWRsRlFaVXRWVW5OVU4wcDVlRlJpZVcwdk1Dc3ZkMEpRZFRWTVR5WWplRUU3TDNSd1lsTTNhVkJI
VnpOdVVtODFSbEJuZVhOQgpVbWx4U0hoV01rdDFlRlk1TTJZNE5DOWxXbTA0ZDJac1VtOXJPSEp0
VXpaelZXSlVOMnR1WXpoeVZUaEZjV1UxVFZoQkwxUnBhQ1lqCmVFRTdhVmd2VDFobGRHWldVSGsz
YzNSTlVuRlRZVzV4UTBKNE5IaFJTVEJxWmpoUWQzaFdPR1paY0dScGNuTldaVFptYkV3dmVtcEkK
Y2xCdFUwdElWMUJPWWxNMlVtOXpaMFIzVjJsblF5WWplRUU3TjNWR1R6Uk9SeTkxVlZCcGQwcFFh
RE40VVN0d1prc3phM3A1ZGpWVwpjMFp6Wmt3cmJYY3lSVUZCUkcxT1pqTnJiRTg0YTJoeE4yNHpX
VzVHVlRaNFZqSkxkWGhXTWt0MWVGWjZTeVlqZUVFN1IwSldaME53ClJrTkVNRWw0VmpRM0syRklM
MDlPV0d4TWVsZHJNUzl2WVZJMlJuSjZWbGxRUlhSTVUxcHhaRXBaYkN0NVUyWXlNRVpsTlVSWmNT
dFMKVUU1SWJGaFlka3NyYzNvMlRpWWplRUU3Y214eE1YQm1NalVyU2tjelZteFFNbGhTYURoTVN6
Tlpha1pMVlRSeE4wWllXWEUzUmxoWgpjWGx1T0hZdmQwRjBMMDVRYm5aV2VIQXJhREl6U2tWdllu
VTViSEYwZGtGd0wyRnJaU1lqZUVFN2FDdG9VbFpxTWtkTGRuSnFPSFIyCksyTmxaa2t2YXpKUFN6
WjFXVll4Y2xoR2IzcFlPVEJuUzBrMEx6TjRRMlZUY0RkRk1XSXplRkU1VTNoV01rdDFlRll5UzNW
NFZqSkwKYzJRNE5TWWplRUU3TDJ3M05WRTROVmRLZEZCTlIyNVNNMVpCVm1oMVlXTmlhVXd2YWto
TFVHcFlabVZzWVVoMVRWWm1TVE0xZHk5cgpRbkl6YTAxMmNXUnBOelp3TlZwS0x6TnpRekJzZERa
dFoxYzBWaVlqZUVFN1pIVndiMGhIZUM5NVpXMUxXR3NyUzNWNFZqbFRaamhCClQwZDFkRGc1VFRo
NE5rZDZMM2RDZUZCQ1psRjRLMUJ5U1Zsd1ExQnNOa3RXZUZGckwzZEVlbTFXY1dobVZ5OU1aV3hD
ZENZamVFRTcKY21VeWJuVnRXRE51YTFkTlJTODRRVWxuTkhGSWVtNXBiREpMZG5GTUwyNUlhamhu
U1VseVpUSTROV1ZpWWxsVFdFVnZSWFZyWVZaTgpkRlpxVlRkd1kxUkxaWEpJY1dsdWNERlBPU1lq
ZUVFN1MwdElNR3BwY25OV1pHbHljMVprYVhKelZtUnBjbk5XWkdseVFpOTNRVEoyCmVYTXdhamgz
ZGt4cU1rNTRlR2N4VnpORVVIQmxiMVVyUzB0VGJqSlhTVVpVUnk5U2VEbFFWVmx4S3lZamVFRTdS
WFJpTUdKVmRFVXgKWVRjd2JsVTBWM1EzSzNscllVYzBhR0p4UjFoM09GRmxiMUJqWWpSd1VVOUxk
WGhXTWt0ek1pOUxhamh5VGxvdlRVeDZRMDVRZEVOaQpabFJ5WVd0dGNEWnBWaVlqZUVFN2NYTk5X
azVCUWk5T1NTODNReTlVTUVKNFZqbDVLMVYyUzFkbksxVTVSSFE1UmpCUE1sY3ljM0pqClprNDFT
QzloYTJ4aU9YQXlOMjRyUjB0Rk5IaFdNa3QxZUZZeVMzVjRWakpMZFNZamVFRTdlRll5UzNGa01X
RXlNVE5pVXpKME1VVnIKT1hSUGFsSjZVWGxMUjFJd1dWVmFWMVUzUlVWWmNTdE1VQ3RqWjFCNVlW
QnJXRmRWTVZCVFNUSmllWGh4Vkd0WE9WTlhLM0pVVlRWSApRaVlqZUVFN2JVODVRMDQwZVdVeU0x
VldTMncxU0dseU1qTXZia1ZxVmxSaEwyMWlZMWRTVUhkaGFuQXdNRmxZTDB4cFpFcFJabTlXClIz
aFZiMVF2Ymt0NUwwNHhLMkpOYzBKT1Vsa3lUblJpWnlZamVFRTdaVUZaVGxBdmVrOTRWVkJJWTFa
bGVtWTROREV2YkZGdWJUZDYKUnpKMU5uUkVObTFuWVVzMmREWmlhWEZZUmpFNWNFbHFXRmx4YmpJ
elNIbElVVFJ4SzNwalZVOTRWakpMZFhoV01pWWplRUU3UzNWNApWakpMZFhoV01rdDFlRll5UzNa
dVNDOUJTbmt4TDB4c1NqZERNamc0Tm1aRUt5OTBVM1J3Y2toRlptRm9XVEJuYldGbkwxbFpPRU5t
ClFYSTBXWEVyVjNOVmRYaFdSelpNYnlZamVFRTdLMjloTVhFeGNIQlBibEpIWlN0MmNGWm5kRFJv
TTJSNlVWWlFXV1ZLZUZZNUsyWnMKY0N0WUsyd3JVbEJMYkhKdlpHbEJPSGRJY1Rab1pHZFZZV1Ux
V1VSdVNXWmlZV2xxYzI5SFN5WWplRUU3UjFaWmNUZEdXRmx4TjBaWQpXWEUzUmxoWmNUZEdXRmx4
TjBaVmJEZzFLMVU1VFRneVpWZGlMMEZOZGpacmIwNTBabEpHUWtwVGNsSjVSR1ZQVm1WdWVFazBS
RVJHCldEVTNaVmxPUkNZamVFRTdkamxDTVhrck1GaFZSVFJZZFc1NmRtSjZaMlJQVTBkc1ZsQmtW
elpuSzBkTFYyRXZPRFE1TXpkWFVEVjMKSzFoS1FXUndXbHBpWkdnMGFXVkRVMUE0UVZkM1QwdHNV
eTlRTWpsT05TWWplRUU3SzJOSWJXRlZiWFpITlZOSGRUTXJOa2xaTkhVegpLM0JwYjFsTVdqSnNl
R1ZZWTBadVlrbGFZbTAxYTFkSFEwcGtlWHAxZDFaV1NIcEtlRllyYUVnMVkyVlROMVI1V2pWT01E
TjVMeVlqCmVFRTdZakJhTjFkTlJ6ZHRXQzlrYkhjdmVGTjJPRUZUTlRKeU1tOU5WVTFzZUZZeVMz
VjRWakpMZGs1UWVrTXZkME5qWjJaNUx6aHMKV0UxdGJucDZVMkZ1Y2tWV1VrcFpWMGxXZWtjemFD
WWplRUU3VGtsNFZrVlFhVXRzYURSWmNUaDZiQzkzUTJNd1NXYzFSVmhzUW0xcQpMMXBhZEZGRGF5
OU5RekpoYmpNMGNIQnRTR3Q2TDBGS2VXOHZUQzlZY25GUGVURlhUMkpSVEcxV1ozTmpiQ1lqZUVF
N2VWWnJkR2xVCk1ISlBkRTlJZW1SUlVHWkdSREphU0ZJd1ZqQlpUV3BCUmxkQ2NVTkVkVU5EVFZa
aWVGWXlTM1Y0Vmt3dlRVOW9NbGQyWVVabU5rNW0KVEhsMFRsRm5hM1ExZEhGclF5WWplRUU3VWxO
MlNWWTNjakZJZG1seU9EWk9XVEIxTnpCdVZuSXpVemQ0WlVZeldWUjVWekEySzBSNApUMVZpT0ZK
cGJFSTBjU3RyWml0alVsQkpTMVF6Vmk4MU1uWlpjWEpoYXpKUGJHTm9kQ1lqZUVFN05tcEJSMlZS
WlRadlVXY3ZNVzE0ClVTdHZjMVprYVhKelZtUnBjVlFyWVhaUFNHeDJlWEJ3WW1Gd05XZDJORGRE
ZWxVNFZsbzJiRzVpY25kcVVsRllaSFphVVdOV1pVbGgKTVM5NmJTWWplRUU3VWpWbFozVkhWRkoy
VERGNlpuZG5NRVV4ZWs5c2NGZ3pRM0ZzZWl0UFMzRlhiR1k0Tld3MlRreGpTM1Z4SzFkaQphVEIw
ZVdacGJIUnljRXhzWjFCSVp6aGtkaTlCVFZONFZqZGtOU1lqZUVFN1R6ZzVaVloyVDA5dFpuQkll
VGxtY0dWUlMxRnplVU54CmVYaE5VbGhxVEVjeFIxVXZUVlZRWVhWTGNEbHBjbk5XWkdseWMxWm1T
bVl2VDFodWF6bGlSSHBXY0ROdFpUTlRhMWR6VVNZamVFRTcKYlVNM1dXUlFja1p6UVVGNEwzZENZ
VXBzU0N0NGVGVlFTaTk1ZDNWNFdpOXRValZYZFVkT1JXb3hWM2sxYld4bWFFMDJRblJvTjBoRwpU
SFo2VUhWNFpDOXRValZ3ZFVaUVNrZ3hZU1lqZUVFN09UbE9aMHRXVVZoRWFHUnFMMnRuV1hGNldD
OUJTbmhuT0hCeWNtNDFiakk1Ck4wMXVUekF3VDBZM09UWTVSRXRMVW5kRU5XZ3pOV292Vm5oVmRu
Um1Sa1J6Vm1ScGNuTldaVW92T0NZamVFRTdOVW92YmtKaksxVmsKU21rNGRUWklUalpZYlVSV1dY
azRkSGRvSzA4eWRHRnNaV0VyUkhsRlJsWlFXVUZ1Y2xSR1dIaDVlazE2Um0xS1RFVXhTazgxU2s5
TApWM05XWkdseU5sY3ZOU1lqZUVFN2VGY3ZUbWsyWVRkSWEweFhTakpzYVdSSGF6QkxWbnBWYjFr
eE5WTlhNVlFyZW5oQ1pGQkRhRWhvCmFXZzVUelJ4TjBaWVdYRTNSbGg0Umk5NmF6TnZTelpVSzJK
bGIzbFNjSGRwTVNZamVFRTdVMGRETDFGa2FWaFlNRFZFT1UxelZFaEcKU1dWV1FVVnJRVU53VDNk
QmVGWXJhR1kxV1N0V1JUaHhaVkYwUmpCSlRIaHRkR0phVkdSbE9YaE1Lemh0VUM5SmVESjRVWGxt
UmxoWgpjU1lqZUVFN04wWlZkVGg0WVM5d2RtdzNVWEkzVnpsVWF6bExlREFyUm5BMU1qZHJTMDVz
VldReVdUQldVak5LZUZZNFJDOXRVQ3RaCmJYVXJaUzlOWXpKeU5uQkpVa1ZEZVZkR2EwUlhUek5u
Y2lZamVFRTdWbFZWWlZBNGVtWjBTRVpNUm1OV1pHbHlTUzlKU0c1eVYzWksKVUcxWE1qRXpVM0JE
U0dsUVJ6VjBhVk5KTlRSVFptcHBhMGhuVWpBNFJGRnFZMWx4S3k5M1JIazNjakp1WlZsT1F5WWpl
RUU3YzJSaQpNRFV2VlhOMFVXaFRaVUZ1Y1VFMGNuaFpSRzk1Ymxwb01rOUxSWGg0VmpKTGRYaFdO
VXd2ZW14RWIwa3hWRGh3Y2pJMVZsRXdNbXRZClJVWTNTRFF3TlN0bk9WQTVhRTFUWmlZamVFRTdi
R2x5TkRNNGRWaElNV0o2UkhCa2VIbExaV3BrZDFOamFERklSMVpVV0RoTlZYSjIKVFRnMWRWQk5k
WEpZUWxsUFduSjVOR3RNYVd4RWVXeFpNVEk0WTFabVZETXZUMGhsWjJrek9DWWplRUU3Y1dFemNt
cExRa3BtTTJsWApjVVU1WmxSMFdTdFdVamRHY0hsUWIzaFJLMmR6Vm1ScGNuTldZM3BDVVZkWlow
dENWV3M1UVUxV1ptNXdLMXAyYlRKWWVtSTFOekZ1CldGZGpkRVJqTXlZamVFRTdSRXhoUVM5ek1q
QllOM1ZHWmtRck4xVldPVGhWYzFoNFZqSkxkWGhXVFhaTVpYUXpUMmhsV1U1T01XMHkKU2tVcmJs
aE5WbmxzVHpWcFkwNVVabmh3VkVaWU5rWlNaV05RUzJ0elV5WWplRUU3VTNCeVJteDRhMVZOZEdK
cFNVZG9SbEp6VjNoUgpkamhCT0ZZclZuWXJjbmhaTHpoQlUxUkVMMEZOTVZseE55OUdabXhpTDBG
TGRrWnFMekJyZHk4NFFVNVhTM1V2ZDBGV0sxWjJLeVlqCmVFRTdjbmhaTHpsS1RWQXZUbGRMZG0x
UUwwRktlVGxzTUhFNE1XcDVNM0ZXYUdWUldGcHJkRGRwTTJ3NVExWktVM1p2ZFdweWVUUkYKTUhJ
MmVIQTRhbWx2WlZVdmJFeHZVelk1SzFwWWJDWWplRUU3ZWxSSVdHNUdUR1Y0ZVZSS05IaFJTREZ3
UWk5M1JWcDRVeTlSWWtaRQpjMVprYVhKelZtWlBNeTlQV1ZCdEsxTXhNRmhUVUV0MGRTOUZObXBK
TVRkbVFXUlVSa0pTV1d4UWN6QnFSaVlqZUVFN2RtMXRTM1pzCldFWk1jMVprYVhKelZtWlhaaTlC
Ukdsc05UUXdPR1ZTVEhwU1pGVjJiMkphZEV4MlIwNXlPVmxzVTFBNFFXTllRMmdyU3poNVN6QnIK
Ukdzd09HTlZVR0pRT0ZZclZpWWplRUU3ZGl0eWVGa3ZPRUZUVkVRdlFVMHhXWEUzTDBabWJHSXZR
VXQyUm1vdk1HdDNMemhCVGxkTApkUzkzUVZZclZuWXJjbmhaTHpsS1RWQXZUbGRMYzJVdlRWUldM
MHN5Y1N0UmRrMVhiaVlqZUVFN1JGWmlTMUkzY2xSeWNVOUtRbU5TClJTdHZXVmM1VDJkRVpGRTVU
VlptUVhSMlRWbE1hVXRaUTNCcFpGaEJVR1pwWVRSd1dGaHJlWHBZWXpoNVFXaGFXa2RrVVdWMFIx
bHIKVm5oV09TWWplRUU3ZHk4NFFVOU9NbTVNV1M5ck4yOVhNVXBNY2paNFkzbEhiRXR0VXpSck5H
NHZaMEYxUzBod2JVdDFlRll5UzNOWQpMMDVJVmpJd2FqaDFaazF0YjBsaFUzYzJaR05EU1RjM1Ux
QkhWU1lqZUVFN1VUZG1OVlJFUmxnMU5sbHdaR2x5YzFaa2FYSnpWbVJwCmNuTldaR2x5YzFaa2FY
SXlVQzl1Umt4VWRuSllOWE40ZWpCeU9WRnpURzAwY2pSamRVMUlhaTkzUVZnMGNWZ3lhR2xvTWlZ
amVFRTcKUzNWNFZqSkxkbWxxTDI1TFdGWnRkblo2WkhaaVdYUjVWRlJNVnpKMFJUaEJSMm9yYzBW
bU9FWlBZMVZvTlVocGNuTldaR2x5YzFaawphWEp6Vm1ScGNuTldaR2x5YzFaa2FYSTNMeVlqZUVF
N1FWQjVXR2xUVURoeFprdDViMHRCTm1SRGVFaFlaREUxVGpFNWVtbG9iVzFMCmRYaFdNa3QyVG5Z
clkycHdWMmt2U21aNlIza3djVlowVlRNNFNIWlpWbEEwU0VaWWQzSnBiREpMZFNZamVFRTdlRll5
UzNWNFZqSkwKZFhoV01rdDFlRll5UzNabVpqaEJia1J4UjNadWFsZHdkVWxRUkZSUFNGQmhielV6
UlZwd09WQkVPRTFWUmpsaVdYRTNSbGhaY1RkRwpXSGRNSzJWTk5XNHZUaVlqZUVFN2NucFJOVmxR
VXpsaFQyOXdMM1YwVmxOdE0yaDRjR2xyVFVkNFZqSkxkWGhXTWt0MWVGWXlTM1Y0ClZqSkxkWGhX
TWt0MWVGWXJaMUExVGsxeVpteFdOVlpMYTBWbWJ6SkJWa2NyTkNZamVFRTdWMmg0VVhwTVJsaFpj
VGRHV0cxdUwwRkUKYTJscWRqaEJhM1ExYWxaQ1ZXZFhha1ZsZVRNd1JFVXZZMDFXWmtNclMxaFpj
VGRHV0ZseE4wWllXWEUzUmxoWmNUZEdXRmx4SzJkUQpLeVlqZUVFN1kwOWFWMGh1VEZoWllVUnBL
MjVDZVdVNVZXNVJSQzlwWlV0REszTTRWbVJwY25OV1pHbHlORU12VDNWRlVTOXRlRFZ3ClVVRm5S
eTlzWm1aNFpXcHVMMEZKYkdsclRVcDRWakpMZFNZamVFRTdlRll5UzNWNFZqSkxkWGhXTWt0MWVG
WXlTM1Y0VmpreVpqZzAKTjFnMk0yNDFUMlZZV0VKeE1FMWpPRVJxZDAxV2VFbG5MelJWUVRSdlpX
bzBjVGRHV0ZseGR6YzROSFJNWmxVdmVTWWplRUU3ZFRoNgpNbWxCUmk4d1prNU5hVzUxTVhWMmNr
RkVNMHBxTW5oV0syWjFTMWhaY1RkR1dGbHhOMFpWTm1vNGJHVmpjRVZYVTFCUlpGSmxUbmRIClVq
RjBTbmxEUkhWRFEwVjRWblk0UVNZamVFRTdkMDQxTVM5M1EzQm1NVXd2UVV0Uk5TOTNSRzFxUmxo
bU5FYzROaTkzUkZWMk5td3YKTUdoNkwwRlFUa2RMZFM5M1RqVXhMelpzTDFWMksydFBaaTl0YWta
VlNuRlFiRGQ2UW5CclV5WWplRUU3ZVRac2NHd3pXWGhQTTBKSwpURzFEVTBwWFlXeGhRWFZ4WjIx
bmVGWTJlQzk2YVZoeFFYUjJlbFZsUVd0bU5tUndkSGhCUVdaR1dHcHRNak5IT1VsalZrdzNUSGhS
Ck4wWllXWEUzUmlZamVFRTdXSGN2TDBGTk5VMDJXV0pJT0RSa1dHdHdlR3AyYnpkaE5tcEhMMlZD
U1RKUE5WQldOREo0VTBoc2JVdDEKZUZZeVMzVjRWa2hoWW05bGREWnlObTQyVFRBck5YWjJValFy
ZERsWGFDWWplRUU3YTIwMFkzRTRaVmhCVGxOMlJUQnlhWEZPTDNkTwpOVEV2Tm13dlZYWXJhMDlt
TDIxcVJsaG1ORWM0Tmk4NVV5OXhXQzlUU0ZBdmVsSnBjblk0UkdWa1ppdHdaakZNTDNCRWJpODFi
eVlqCmVFRTdlRll6SzBKMlQzWXZWWFkyYkM4d2FIb3ZPRUZPUjB0d1duQTJTa3BtTW5sUFQxTlFT
Mmx6Y0RkbmMwRlNhWEZ1WTNkdFF6VnMKYUVvMVIwb3lWR3d3Y25oT1N6UnhLM1IySzJOUlRpWWpl
RUU3WVZjMU9HazJjSEJNU0RrM2NERXJXa0l2ZUdsMVdURkxMM2RFUkhoUQphV2czZW1seWMxWmth
WEY1WlVOTFpVTlRRMXBST0UxeGJFcEZVRkpzV1ZWSlVIcEhTM1o2YmpnMEsxaGliaVlqZUVFN2VU
TTFjREZZClVYSm5SVk5oWkdONVVVRnVPWEJHWWpSSUwzZENhMnhIZUZOckswdDFlRll5UzNCeU5W
WXdUMkpZTDAxMWJEWktSRmd4VGxKMWIySloKUldSb1NUUlZkRGhzUW5KcGNpWWplRUU3T1VoSmIy
ODBiMnRwYWxWS1NFZHZWa1pJVVV0dmIwSnBhR1JwY25OV1pHbHlOVEF2TlhwTQpkWGQxYUN0WFls
QnJVVEF4TVdONlFtRTNSVkpTYjNSaFpUTnhOSEU0VHk5S1VGZDRieVlqZUVFN2RqVnhLMWR5TVc1
RFVuUmxUR0pUClRXVm5VemRWTWpkV09YRlROSEJtWm0xTFNGbHhOMFpZV1hFclduWXJZM2gyUzNw
ck5rWTFjV2xSYkZGSU1IazNaVzVVWTNwUlptWlgKV0VaWWVpWWplRUU3VEdsc01rdDFlRll5UzNa
elRDOXVSV1o1Tmpsb0sxZ3hNM0pGY1d4WU1XMDRXbTlwVWxOelRuTlFVMVV2ZDBSSgplakZOVlZC
alkxWmthWEp6VmxWT1VYWkZjM0pETlhaSVJsVjBieVlqZUVFN2JtMVpaRTV2TVV4SWMyWkVSbGcx
TUN0VmIxZHVPREZoClRrTndRV0ZYSzNSclFsQlJSbkJzUjB0V1NIcEVRVWxPWmpGUFFVRnhTWEox
WkVGd05tcHFTWGR2WTFabGRHWTRORzhyWVNZamVFRTcKYkRCdU9IaHdUa2x0Wm1waU5qZGlUa0Z2
VDNjcmMxRm1kbGwyWWpkSmExVmxOWGhWZG5OdVJrUnpWbVJwY25OV1prNHpMMEZFYkZvcgpWbVI0
WkhGdWJuWlRTVlJKT1haSFNXUmphU1lqZUVFN1VVVjBObE5FT1ROalZUaEZTSGQyTjFWUVdUUnhL
MWhqVlhWNFZqSkxkbTlxCkwyNUZlamgxVEdrMk1XMWllbmhtVWtaaVMzZFdOMlpUYVhjdmRreHBV
VVpLV2taeUszcEhhRXN2VGlZamVFRTdkbGswYjJaV1pVdDEKZUZZeVMzVjRWamhvWmpnMVpXRXJi
RGMxT1RBdlVqUXlOVXB3VG1sRVMxQTFXbkp3ZVRkRUwydFhjMXA0VTBob2ExVnphMDF4VTNoTgpW
V3RxV1U5cWFsbG9iQ1lqZUVFN1RsRlNhWEk1UmxCSk0yMVhTSHBRTlZBd2FsZzBjV1kzYTB4WFQx
ZFNVakJYVjJ4S1ZTOHlUV2RhClkxVktOV2x5YzFaa2FYSklMMUF6YXpaM09EUXJWWFJTT0haWWRu
ZHdaVkl3YUNZamVFRTdiWEJWZUZSSlpWVlZaeTh4V0VGeU5HbHYKTnpSeEwxQXZRVTE1WlZoT1dE
aDBOak5rTmt4eE9FSjBPVkZ6Ymsxak1Gb3pRamhIVlM5MFMzY3pWVGw0YVd4TVRWWmthWEZpSzFV
dgpTeVlqZUVFN0szRXJZVkJOVG14dlYyeFNSMWM0ZG5CQ1IzVXhWbEpsY25sUU5FdHBNVnAyWWta
WU5rVXJWMlpNT1dnMVpEaDJObVp2ClpHZDBURlJVYjBWbmFVbzJkSGRHUXpkbU5WUkhja2d6VHlZ
amVFRTdTMFY2ZUZZeVMzVjRWbWN6TlRSaEszVm9abXhXTldwMlQxRlgKVTJFd1lYcG9jakZNTTFw
RlFYQTNaMU5HZG05NFZqaFlabXhZWWtNMUwwMTZlWEpEVVVOd01XRjVXbXhaVmtKV1lpWWplRUU3
YUVkSgpTVGwzVFZWeFVEVnJNbkIwVUhwRU9Ib3lNamxKZEZkMlZsVjBNVXRwTkdacFpuQkhLMHR3
VW04eWNsaDFhaloyV21GeVdYWTJaRFZaClZIZ3pUblV2WnpoVVFteHlOMVpIS3lZamVFRTdTM1l3
VWpod1pWcE1TSHBPTldFd00xZzNSVEYwZEZKblYxcFdjbGhuZURKbFRTczIKVDBOd09YaHBhRTV6
Vm1ScGNuTldWM2xTZUhsNGRFaEpiMlZPZDFaa1IwRkxjM0JHUTBORU1TWWplRUU3UW5oV05FZ3JX
VzR2VDBveQphV0Y0WkhrMmFqVlRka1l3WVRSc1VFbzVUMjFWZG1GR2FXUjZSMVlyVDBsbE1VZEla
MEpwY25rMllpOUJTbmhSTDA1bFR6UTVTa1l3CksxcExNRGxrVENZamVFRTdhMmhMVm5CWGFtOXlL
eTh5WTFVeWVsUjVVaTk2YVVKTmJIcEdaR1ZqT1ZWcVpVSkRSMkpVWkZCTWJtNHoKTkhaUE5GRnlO
emhXSzFSWmIyWlRWMjAyWWxsaFdsbFJZV1p3T0VOWGRDWWplRUU3YkdGdlNYSmxNMmxCVmtWU1Vs
RkJRVmx4YVdOVwpaR2x5YzFaVllqSTRkR0pIZW01MlluVlJVVEowY2tjNE1YaE5NekpWYW1wVmN6
ZElNa05wZFV0MmVuVTRPR1ZhY0M5T1NHMHZWaVlqCmVFRTdkazFGZDB0dVZXSnNOVmt3WW1Od1Js
aHFSVzRyZDJwRGNqbEhTMVZxZUZZNVUyWTROR2dyWmtWdE1Dc3ZkMFJLVmpOS1UyRXkKV25JM1ZF
RjRObmhQVVVvMGVDOXhkbEkyWmpWU09DWWplRUU3VFZWUWJ5OUdXRmx4TjBaWVdYRjNhamg1TDNs
bk9HOHZiVUphY1hWeAplRTVDY1ZWTE9HSlVWa3hsWjI1cVJtRTRWRmhhTUhGbWMzUTVSa1IyYVhJ
MU5ERjZMMjVGVUhvdlFVZHJlaVlqZUVFN1ptOXRMM05PClZIUnhibWRYV2pkbFZXbDJaRWRXTUVn
dlFVRmxTMkpWT1VjdmQwTmpVblo2UjNVMWJFZHdXR1JvY0hSMldEUXlPVkkxTlV0bFMyOXAKT0ZR
NVRHcEdZbVpSTDNkRFZpWWplRUU3TXpWUEsxWm1lVGh6TTBkdVFuSjJWbUpvVVhRemNYTTBTSEYx
YnpNMFNXOHlhbXB5ZG5oSQpXSFZVVVZsdldqTnBjbk5XWkdseWMxWm1UUzh2UVVSdFJEVXdXR3B3
U0dzMk1tdHhZU1lqZUVFN0wzQk1WVVpDUnpNeWJ6ZGtWQzkzCk4wVm1ObkE0VFZabFV5OXJRbHB0
Tnk5QlJHZzRjM2hEZEZaMVNrcDBhVUowUWtKS1MyVjJPRUZ4V1hCTGJDdGxNV3RpVURnelprMDQK
U2xocFZ5WWplRUU3ZFM5WGNGRnFZV1ZPV25FM0sxQlBkVXRvWjJWTGRtOVVMMjVHV0Rnd2F6QjJW
VFZRU2s5eGVtTmlURlZ3VUZVdwpiVkpxYzJ3eVlVSnZaQ3N3ZDBoM0x6VlJMM2x6VlZCeEwwWllX
U1lqZUVFN2NUZEdXRmx4TjBaWVdYRTNSbGhaY1RkR1dGbHhOMFpZClowZ3ZUMVp1TlcxU1lWcHZT
eXRUZEZCc1FqRklWbEZ6YlhCR1ZIWkdZVXRoYUVRMFIxcG9MM2RKVURneVMzWnJka1pNY3lZamVF
RTcKVmxScWVXZzFiekZNZVhJMWJEQXZXRGxPWVd3eFdWTnBVVXhWWjA5dVUxTk9jV1p6ZFdoTGJq
SlBTM1l3UkRodlpXRjBTemd4SzFoTQpTRmgwVEdadVlWaHpXV05MVTA5VlltcGFOQ1lqZUVFN00z
QXJNR3BCY1dOVlNuaHBjbk5XWkdseWMxWmthWEp6Vm1ScGNuTldaR2x5CmMxWlRkbnBTTldzd2Ru
a3hOV1oyZEdReFUxUXdja2QzYVUxemNEZHpaV2x2ZG1sNmMxRnhhbmhQU3lZamVFRTdkbm8xT0RW
bFlXUlMKT0RFcldqbFJPSGRoYVdFelRpOUxXa05zWVdoRlNIZDRlSEpZYzJsQlMxQnNhV3cyVURo
Qk9EUnhNa3hZVURWME1qaDNSbEphVjFZeApUMlpaVFc5b09GQTRRU1lqZUVFN2FUTkdVM0F2T0VG
UFZYUm9PVmN2VGpZcmJYQlVOamRoTW5NNVpraHFSVWxtSzFwUFMyZzFTR2x4Ck5rOVNORE5YVTA1
cGFtOVJlVTl3YjFGU2RVTkRUVlptV21ZMVFTOXViR0VyWXlZamVFRTdaRkJwTUVSWVNteHFPREZY
YVZWV2JUSkcKTlVkbkwzWkZMM2REVEVGUWRISXZjMmgwVjJsb04wNXBjbk5XWkdseWMxWmthWEp6
Vm1ScGNuTldaR2x5UTJaNlZ5OU9URkptZVNzNApkaVlqZUVFN1VHWXpXbGRtVlRWM2VUWmFjRE5M
YW5wVFJIVmhZbkpIZEdGek16QmtVMDFXWmtOWGRqWTVjVzEyTm5wa05uaHhjelYxClRDczVhMDF6
T0hBNFZEQkJTRnBXUjNkSVdWbHdVeTlHV0NZamVFRTdXWEUzUmxoeFpqVkdMMjVRWXk5c0wzSkVW
MndyV0c0NGMyRm4KTkU0M1FYWjRUa1JLT1d0WVJWTXJTVWQ2WjJaaFNIVkNhWEkzV0RBelZYSkVW
VGREUkZWT1VHNVRObk55Y0VKTVlpWWplRUU3TTBWUwpSRWsyVFV0bloycEdRMHA0VmpKTGRYaFdN
a3QxZUZZeVMzVjRWakpMY2twd2IxbEpXa28xTlVacGFHbFZka3hMTlVOeGNYRkxjM3BOClpHZEJU
M0I0VmpoWkx6aEJUMUZ1TlNZamVFRTdNRWg2ZG5GM01HSlNjRk5RU3l0dVQxTnFhVzhyZEhwcGJ6
bFpaekFyUWxKMFIxQnQKVkRGdlJreDRNMFpZTUV3dlFVMDBZalpqV2xCT1NHMUlWWFZQTVhSWmVG
ZDRZVzVVTm5oT2VpWWplRUU3Y0ZkdVpqWjJORFJ2VEdZdgpRVVJ0VkhCb2FqaDZLMWgwVlhCMFpG
ZFZkSFI1THpWb2NHVm1MMEZIVFRSeFNIcDZhV3d5UzNGMGNHUXpWbTVqZUZoV2NFMDVkbU4zClRV
cEpXalJ0U3lZamVFRTdUMnB4WVdoc1dtRkZSVmx4SzI5MmVXc3ZOWGx0YzNKeFMwaFNkbEJxYVRK
MU1VRlRTRmhHVjJ0VmJtSXYKVTBaWUt6ZGlMMEZETVVoSWVEUTBiMlpTUm5Ka1Z6RXpZbmd6VG5K
TmF5WWplRUU3T1haTmIyVkxZVXBuTms5d05rMXlURlZGWmt4RwpWbFJHV0ZseE4wWllXWEUzUmxo
WmNUaHdMMDVpTDI1SlZIbHdOVXBxYlhOTVJqQXhabnBIUzNGTVIwcHhlRkZPTkRORlp5dDZWQ1lq
CmVFRTdLMUZtUmpoMWRVdDJhbko2V2pWMU1TOTNRVEpoTVU1eVQzVXpWRmhXTjA1elEyUnJhbEZG
YkZrME1UWkxhVEV5UVM5WWFXeEsKT0Zaa2FYSnpWbVJwY25OV1pXd3ZiRWdyWlZodFVDWWplRUU3
T0haeVoxZHdRakZJZVRkTE0wdG1WRWhoYmtGck4zbFhOMGQyUW5aRgpabHBpZG5aMVJsZ3lSalZI
TDAxcWVXZzFNM05RY21WbldIbDZUMjlDZFV4T05rcGpkekUzVTFKRk1VY3ZOeVlqZUVFN1VYRndO
MFUwCmIxcE9hWEp6Vm1ScGNuTldaR2x5YzFaVFpucFVOWGM0ZEN0V1pFMW1WWFJtZGpSeVJ6RlZT
R2xZVUhoNVJVTjJSMDVDVm01aU1sVloKY1N0UkwzcHNMelY1UkRGdWVpWWplRUU3ZHpCMWEyRlJT
azVPT0hKb2REUmhNRzUxY1VoWmVteFVVVXd6T1UxRmFuaHlkRkpUT0dkNApWakpMZG5KTUwyNUVi
bE5xUkRWVE1UTldVM1JRY213NGJIVndjRkZyVnpCUllqZHhNeVlqZUVFN1FuaFJhV1lyWTNZNVJr
NHhOVVF3CmVsWlZSbGN3Tmk5RFVIUXdhblZaTWtKT1pqaEJXR3BSV1hFclVrMVZkWGhXTWt0MWVG
WnNXR3QyT0RCUVVGaHJNbEZJVVU1V2JIUTMKWlhaS055WWplRUU3Umk4emRITjRVRmR6VERoclFs
QTRRVTEwUkRjMGNUbDFPSE12T0RWcWMwVlRUSHBPYjBoS2FGRlFaR0ZrU2xOMgphVkpDVGk5M1Fs
WmpWVlU1UlRCMkwwRktlV1l2UzBNNVFUbGlWU1lqZUVFN2NEbFFXVGxGZFhKWFluSTNiVVphYkVn
ek5IRnVWV1kxCk9HWnNRelpDTVRoNk1tZENOa0pvU1hBck5XdENlRlpETXpNdlQxSklOVTlYWVhO
WU9IaFNlWE5QYVZGUldFMXdTbkJYWnlZamVFRTcKUzFKc1puaDRWbWhRYlVndlFVcDZRVGh0TW5G
TmJXaGhWR1ZoYkZCUk9GaHVTMWR6VG1VeU9WcFlVQzlCUVVGNFZqUjROVFF2TlhsTApMMDF1ZWxa
SVNtRXZXRVl3WmxSYVMyaHlVQ1lqZUVFN1ZIZFphWGx1WVdwNlJXMVdkbU5DWjNBNFRWVXdPSGRL
U2s1VU1YaFdNa3QxCmVGWXlTM1Y0VmpKTGRYaFdNa3R2YmxSMFV6RklWRXg1U3lzd05qVnNjemQ1
UlRodlltMUNNbXByVlNZamVFRTdLMHR6Y0VKSFMzWmEKWmtvdkwwOVdMMjQzVWpCcWREbGpaMmM0
ZDFkeFZVaHhVeTgyVUdNd1NHSXhXWGRWVUhwaFRXNHplRmR1Y1RKcEx6aEJUMWhJTldJegphVXRP
VTNSaUwxTTFkaVlqZUVFN01uVlZVM3A0UkRWT1JYaGpMM2RFUVVSR1JFeE1XQzl1U1ZBNFFVcDVO
VUZOWm0xWFJtRXhMM1paCmNtbE1jQzk0YTJsVVJsWlhXRGdyZG5sb2FWaHJNMjFsTVVseVZEUkNT
elVyTlNZamVFRTdWVXA0Vm1wMWMyWTROVlptYkU1WmNUTXgKVXpSMlRsWmpabHBHY21KUFowcHdO
RE5JYjJKWmNUaDJPRUZPZGpoQmVtd3ZOVzEyUm1WRWVYaHdZMDlzVW01YVluVTFVREZ0WTJZMQpV
eVlqZUVFN2NGSlpiRkFyYzBoNFYyNW9LM1k0UVcxWVdDOUJSRVJtZEhGSGRWZzRLMjlZYW1KbGNr
ODFZMmRtZVhGUGFYSTNTMHRaCmNGTjZSbGhaY1RkR1dETlNMM3BxYW05dk1IWTRiMlJGUkNZamVF
RTdUSGh0ZG1oT1pYa3JMM0pUYzFsNkwwRk5hV2R0UzBVMkwwOUkKZVRSbVRWZzFXaXRaWkV4U1pW
VjZNbXBVTWpZNWVreGlSVlI0WjJZMmVsSm5XWEV2VUROR1RITldaR2x5YzFaa2FTWWplRUU3Y25O
VwpaR2x5YzFaa2FYSnpWbVJwY25OV1pHbHljMVprYVhKelZtUnBjbk5XWkdseWMxWmthWEp6Vm1S
cGNuTldaR2x5YzFaa2FYSnpWbVJwCmNYUmFWMlI0WlROclJtNWljbnAxVENZamVFRTdiVkpKV1ZW
SVpEVkhRM0ZRY0VwNFZpdHJSMmcyVmtSd1IybGhabkJOUnpoUGJqSXcKVG5KRlpXNTNkMUpwVG1a
M1dFWkRUbmhXT0VGbWJrUTFTMnM0Ym1adFJuRXlhMEpEYkdzd2FDWWplRUU3ZFdSUFVGa3lNRFZN
ZURBMgpabGt6VVNzMmJrWk1RemhXWkdseWMxWmthWEp6Vm1ScGNuTldaR2x5YzFaa2FYSnpWbVJw
Y25OV1pHbHljMVprYVhKelZtUnBjbk5XClpHbHljMVprYVNZamVFRTdjbk5XWkdseWMxWmthWEp6
Vm1ScGNqRlVMMjVIZG5scEwyMUVPREJpUXpSa1lUSmxhVUUyYW1OT01qVjQKUlVOQlZqaG1WbHBV
T0dkalZrdzNabmhSTjBaWWJWQTFOV1pyTlVJcldTWWplRUU3WldsU1UxZGljR0psV1hSUFJFZDNk
VXBMYUVwRgpZbVJ2U2xOQlZIaEtNMVV3SzBVdlRUUnhLMDR2VGxCclpucGlOVlYyUkdFcldVNU1i
bk5JUWt0eVNrbDBXVzV3TTJwc1YzTmlhaVlqCmVFRTdMMVpaTkhCVFRFWllXWEUzUmxoWmNUZEdX
Rmx4TjBaWVdYRTNSbGhaY1RkR1dGbHhOMFpZV1hFM1JsaFpjVGRHV0ZseE4wWlkKV1hFM1JsaFpj
VGRHV0ZseE4wWllXWEZ1V0d4cWVTWWplRUU3V2pWeE9EQllaM1JPUVRCMU5ERkRWM1JIVFZOSU1E
QTVOVXBFVWtWSApMMVpwVFZabVlXWTFTQzlzVkVncldIWnNaSEpsTldSS2RHTXhSbXh0TVZObFVH
UlJWa0pGWTB0Rk9WWnFRaVlqZUVFN1R5OWphMjVHClJEQmlSbGhaY1RkR1ZrODFkR0poTjJkbE0z
VnZWVzUwTlVKVFUwZFdVVFpOVUVKc1lXOVBTM05DTVRjNFoxQjViREZ2ZFRndmJDdEgKTUcxaUwy
UjBhWG95ZEVObE5DWWplRUU3VTBseVNEazJOSEYzVUZaMksyTlBMMHB6ZUV4aFdISmtMMXBXTDFw
dVYwczFWVWQyWVdsMwpUbFExYmtaWFNUWnFMM2RCTkdKbFdrbDVNelpPT0hoWFpIbFFNbFJqVVhr
eU9XWnVkeVlqZUVFN1RuaFVSbUpaTTJabU9EUndabTE2CllrVXJha2haTTNSRWMxbE1ibXBZWlcw
emNreEdhVzB3YVhabU9FRnVTRzQ0TkRkVGRuRmxWelZhUVV0clIwZGhNbTF4UVdGa1NUVlgKVDB0
d1VDWWplRUU3WXk5c1JDdGhWblpZTVZCTGJYRk9VVEF2WkZkemMzWllMMnBIY2xseGJGWjZOVXM0
TlZjeFpuSlBaelpxUW5oaQphVE54VjJzMlZWbGthbmxSWWpSeFoxcGtTakZYUm0xWFYzbHVhaVlq
ZUVFN1dtUXlSSGhQY0VjeFpEWnFSbFZLYVhKelZtUnBjbk5XClpHbHljMVprYVhKelZtUnBjVFpQ
UzFkV2VFaEZhazgxTmtsdlNrcHdkakJIUzI5NVNGRjBZbTFDVFU5dU0wMW5XSEozYUNZamVFRTcK
YTJGdU0wUkdWWGgwZGtsSWJuazJUa3hpZVROeGF6VkxPR2RKTjBzMFpqUm1TRFJWVHpJclMzQnVZ
aTlCU2s0dmJYSlBRVlU0Y1RacgpTMnBzS3poME0yb3lVQ3QxUmpNNWMxWlViU1lqZUVFN2VpODFl
SGd2VDFjMlR6TnNOVzlzY2xGMlRtTXljMlJPY1RsRVRIa3JORmx5CllXVlhVQzlQU25ZMWNsaEdV
RmRQYmxka1pYWnlNMHhIYlRGbU9UQjRlUzlNUm1KYVNuQXpMMDlIZFNZamVFRTdkWFYzTDFOUWJW
Y3gKZERFM0wxWTNaVk5qT1M4MU1tYzVjMVZYZVhaVGRpdGpVRkJLVlVwRVlXNXlUMjlZY0VnM1RV
bG9kREZRZW5GemVtWmpZMVphTVc5WQpMMDlRTXpWVFlVMVZaU1lqZUVFN1NIa3ZSR1I2U2xGdFZ5
dGFOM0Z3U0dOd1MzcFNMMk4xUzNNcmRHSlRNSE0wUlhRM1UwZFBNM1EwCk9XdG9hVlZKYVdveVZs
RkJUVlpXWTFaa2FYSnpWbVJwY25OV1pHbHljMVprYVNZamVFRTdjbk5XWkdseWMxWmthWEp6VmxW
eWNqWnkKTmtRdlYzVklNV1k0UVROYU5uUlBTRmgyZVRJMk5IRnNZek1yUkdaVFpqRjJNR1EyVmtS
Nk5TdG9lSEF6Y2xoaVEzRllMemhCU1V4MgpLeVlqZUVFN01VZ3ZNRFpaY1hSckx6VldWalppWlhJ
clozWlViMlZtVERadWVEUXdNM0pZZEdseFFTODFRV0l2TXpkSUwyTjJkMHR4ClVXWTRjVlU1Vm1a
eEwzZEVhSFl4ZGpKUVZDdHZZM1p2Y0NZamVFRTdkbWx4VGk5M1ExRllaamhCWVdvdk5tUk5TM0kw
VURoQmJGZDIKY2t3MlNEWkhPV0YyZDJOUWNYWkxkblJVWmtaVmVXb3ZkM1kyYVN0dU9WSTVVMjgw
WTJaU05XTnhOMVZ3TTNkTGJTWWplRUU3YlV0MQplRll5UzNWNFZqSkxkWGhXTWt0MWVGWXlTM1Y0
VmpKTGRYaFdMeTh5VVQwOVBDOTRiWEJIU1cxbk9tbHRZV2RsUGdvZ0lDQWdJQ0FnCklDQWdJQ0Fn
SUNBOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdQQzl5WkdZNlFXeDBQZ29nSUNBZ0lDQWdJ
Q0E4TDNodGNEcFUKYUhWdFltNWhhV3h6UGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RHbHZi
ajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdgpiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJ
Q0FnSUNBZ0lDQWdlRzFzYm5NNmVHMXdWRkJuUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1ClkyOXRM
M2hoY0M4eExqQXZkQzl3Wnk4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uTjBSR2x0UFNKb2RI
UndPaTh2Ym5NdVlXUnYKWW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlJHbHRaVzV6YVc5dWN5
TWlDaUFnSUNBZ0lDQWdJQ0FnSUhodGJHNXpPbmh0Y0VjOQpJbWgwZEhBNkx5OXVjeTVoWkc5aVpT
NWpiMjB2ZUdGd0x6RXVNQzluTHlJK0NpQWdJQ0FnSUNBZ0lEeDRiWEJVVUdjNlRsQmhaMlZ6ClBq
RThMM2h0Y0ZSUVp6cE9VR0ZuWlhNK0NpQWdJQ0FnSUNBZ0lEeDRiWEJVVUdjNlNHRnpWbWx6YVdK
c1pWUnlZVzV6Y0dGeVpXNWoKZVQ1R1lXeHpaVHd2ZUcxd1ZGQm5Pa2hoYzFacGMybGliR1ZVY21G
dWMzQmhjbVZ1WTNrK0NpQWdJQ0FnSUNBZ0lEeDRiWEJVVUdjNgpTR0Z6Vm1semFXSnNaVTkyWlhK
d2NtbHVkRDVHWVd4elpUd3ZlRzF3VkZCbk9raGhjMVpwYzJsaWJHVlBkbVZ5Y0hKcGJuUStDaUFn
CklDQWdJQ0FnSUR4NGJYQlVVR2M2VFdGNFVHRm5aVk5wZW1VZ2NtUm1PbkJoY25ObFZIbHdaVDBp
VW1WemIzVnlZMlVpUGdvZ0lDQWcKSUNBZ0lDQWdJQ0E4YzNSRWFXMDZkejR4TkRndU1EQXdNREF3
UEM5emRFUnBiVHAzUGdvZ0lDQWdJQ0FnSUNBZ0lDQThjM1JFYVcwNgphRDR4TWpFdU1EQXdNREF3
UEM5emRFUnBiVHBvUGdvZ0lDQWdJQ0FnSUNBZ0lDQThjM1JFYVcwNmRXNXBkRDVRYjJsdWRITThM
M04wClJHbHRPblZ1YVhRK0NpQWdJQ0FnSUNBZ0lEd3ZlRzF3VkZCbk9rMWhlRkJoWjJWVGFYcGxQ
Z29nSUNBZ0lDQWdJQ0E4ZUcxd1ZGQm4KT2xCc1lYUmxUbUZ0WlhNK0NpQWdJQ0FnSUNBZ0lDQWdJ
RHh5WkdZNlUyVnhQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cApQa0pzWVdOclBDOXla
R1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJRHd2Y21SbU9sTmxjVDRLSUNBZ0lDQWdJQ0FnUEM5NGJY
QlVVR2M2ClVHeGhkR1ZPWVcxbGN6NEtJQ0FnSUNBZ0lDQWdQSGh0Y0ZSUVp6cFRkMkYwWTJoSGNt
OTFjSE0rQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHkKWkdZNlUyVnhQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lD
QThjbVJtT214cElISmtaanB3WVhKelpWUjVjR1U5SWxKbGMyOTFjbU5sSWo0SwpJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdQSGh0Y0VjNlozSnZkWEJPWVcxbFBrUmxabUYxYkhRZ1UzZGhkR05vSUVk
eWIzVndQQzk0CmJYQkhPbWR5YjNWd1RtRnRaVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEho
dGNFYzZaM0p2ZFhCVWVYQmxQakE4TDNodGNFYzYKWjNKdmRYQlVlWEJsUGdvZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0E4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ1BDOXlaR1k2VTJWeApQZ29nSUNB
Z0lDQWdJQ0E4TDNodGNGUlFaenBUZDJGMFkyaEhjbTkxY0hNK0NpQWdJQ0FnSUR3dmNtUm1Pa1Js
YzJOeWFYQjBhVzl1ClBnb2dJQ0FnSUNBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkx
ZEQwaUlnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGsKWXowaWFIUjBjRG92TDNCMWNtd3ViM0pu
TDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpUGdvZ0lDQWdJQ0FnSUNBOFpHTTZabTl5YldGMApQbUZ3
Y0d4cFkyRjBhVzl1TDNCa1pqd3ZaR002Wm05eWJXRjBQZ29nSUNBZ0lDQWdJQ0E4WkdNNmRHbDBi
R1UrQ2lBZ0lDQWdJQ0FnCklDQWdJRHh5WkdZNlFXeDBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThj
bVJtT214cElIaHRiRHBzWVc1blBTSjRMV1JsWm1GMWJIUWkKUGtOc2IzTmxaRjlEWVhCMGFXOXVQ
Qzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUR3dmNtUm1Pa0ZzZEQ0S0lDQWdJQ0FnSUNBZwpQ
QzlrWXpwMGFYUnNaVDRLSUNBZ0lDQWdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtDaUFnSUNBZ0lE
eHlaR1k2UkdWelkzSnBjSFJwCmIyNGdjbVJtT21GaWIzVjBQU0lpQ2lBZ0lDQWdJQ0FnSUNBZ0lI
aHRiRzV6T25odGNFMU5QU0pvZEhSd09pOHZibk11WVdSdlltVXUKWTI5dEwzaGhjQzh4TGpBdmJX
MHZJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenB6ZEZKbFpqMGlhSFIwY0RvdkwyNXpMbUZrYjJK
bApMbU52YlM5NFlYQXZNUzR3TDNOVWVYQmxMMUpsYzI5MWNtTmxVbVZtSXlJS0lDQWdJQ0FnSUNB
Z0lDQWdlRzFzYm5NNmMzUkZkblE5CkltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpF
dU1DOXpWSGx3WlM5U1pYTnZkWEpqWlVWMlpXNTBJeUkrQ2lBZ0lDQWcKSUNBZ0lEeDRiWEJOVFRw
U1pXNWthWFJwYjI1RGJHRnpjejV3Y205dlpqcHdaR1k4TDNodGNFMU5PbEpsYm1ScGRHbHZia05z
WVhOegpQZ29nSUNBZ0lDQWdJQ0E4ZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDU0YlhBdVpHbGtPa1kz
TjBZeE1UYzBNRGN5TURZNE1URTVOVVpGClJUQXlSakF3TlRsQk5VRkZQQzk0YlhCTlRUcEViMk4x
YldWdWRFbEVQZ29nSUNBZ0lDQWdJQ0E4ZUcxd1RVMDZTVzV6ZEdGdVkyVkoKUkQ1MWRXbGtPbVJt
WWprNE4ySXhMVEkzWWpVdE9URTBaUzFoWWpsa0xUWXlOVEppTkRCaU9HTTNOend2ZUcxd1RVMDZT
VzV6ZEdGdQpZMlZKUkQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxi
blJKUkQ1NGJYQXVaR2xrT2tZM04wWXhNVGMwCk1EY3lNRFk0TVRFNU5VWkZSVEF5UmpBd05UbEJO
VUZGUEM5NGJYQk5UVHBQY21sbmFXNWhiRVJ2WTNWdFpXNTBTVVErQ2lBZ0lDQWcKSUNBZ0lEeDRi
WEJOVFRwRVpYSnBkbVZrUm5KdmJTQnlaR1k2Y0dGeWMyVlVlWEJsUFNKU1pYTnZkWEpqWlNJK0Np
QWdJQ0FnSUNBZwpJQ0FnSUR4emRGSmxaanB5Wlc1a2FYUnBiMjVEYkdGemN6NXdjbTl2Wmpwd1pH
WThMM04wVW1WbU9uSmxibVJwZEdsdmJrTnNZWE56ClBnb2dJQ0FnSUNBZ0lDQThMM2h0Y0UxTk9r
UmxjbWwyWldSR2NtOXRQZ29nSUNBZ0lDQWdJQ0E4ZUcxd1RVMDZTR2x6ZEc5eWVUNEsKSUNBZ0lD
QWdJQ0FnSUNBZ1BISmtaanBUWlhFK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2tnY21S
bU9uQmhjbk5sVkhsdwpaVDBpVW1WemIzVnlZMlVpUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
OGMzUkZkblE2WVdOMGFXOXVQbk5oZG1Wa1BDOXpkRVYyCmREcGhZM1JwYjI0K0NpQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwcGJuTjBZVzVqWlVsRVBuaHRjQzVwYVdRNlJqYzMKUmpF
eE56UXdOekl3TmpneE1UazFSa1ZGTURKR01EQTFPVUUxUVVVOEwzTjBSWFowT21sdWMzUmhibU5s
U1VRK0NpQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcDNhR1Z1UGpJd01Ea3RNVEV0
TWpOVU1UTTZOVGM2TVRJdE1EZzZNREE4TDNOMFJYWjBPbmRvClpXNCtDaUFnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJRHh6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUGtGa2IySmxJRWxzYkhWemRISmgK
ZEc5eUlFTlRORHd2YzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQ0S0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ1BITjBSWFowT21ObwpZVzVuWldRK0x6d3ZjM1JGZG5RNlkyaGhibWRsWkQ0S0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnCklDQWdJRHd2Y21SbU9sTmxj
VDRLSUNBZ0lDQWdJQ0FnUEM5NGJYQk5UVHBJYVhOMGIzSjVQZ29nSUNBZ0lDQThMM0prWmpwRVpY
TmoKY21sd2RHbHZiajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRY
UTlJaUlLSUNBZ0lDQWdJQ0FnSUNBZwplRzFzYm5NNmNHUm1QU0pvZEhSd09pOHZibk11WVdSdllt
VXVZMjl0TDNCa1ppOHhMak12SWo0S0lDQWdJQ0FnSUNBZ1BIQmtaanBRCmNtOWtkV05sY2o1QlpH
OWlaU0JRUkVZZ2JHbGljbUZ5ZVNBNUxqQXdQQzl3WkdZNlVISnZaSFZqWlhJK0NpQWdJQ0FnSUR3
dmNtUm0KT2tSbGMyTnlhWEIwYVc5dVBnb2dJQ0E4TDNKa1pqcFNSRVkrQ2p3dmVEcDRiWEJ0WlhS
aFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWcKSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnCklDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0NpQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
CklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FLSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdD
aUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZwpJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9n
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnCklDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZwpJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
ZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FLSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2p3L2VIQmhZMnRsZENCbGJtUTlJbmNp
UHo0TgpaVzVrYzNSeVpXRnREV1Z1Wkc5aWFnMHpJREFnYjJKcURUdzhMME52ZFc1MElERXZTMmxr
YzFzMUlEQWdVbDB2Vkhsd1pTOVFZV2RsCmN6NCtEV1Z1Wkc5aWFnMDFJREFnYjJKcURUdzhMMEZ5
ZEVKdmVGc3dMakF5TVRrM01qY2dNQzQwTnpRMk1Ea2dNVFEzTGprME1TQXgKTWpBdU9UWTBYUzlD
YkdWbFpFSnZlRnN3TGpBZ01DNHdJREUwT0M0d0lERXlNUzR3WFM5RGIyNTBaVzUwY3lBMklEQWdV
aTlOWldScApZVUp2ZUZzd0xqQWdNQzR3SURFME9DNHdJREV5TVM0d1hTOVFZWEpsYm5RZ015QXdJ
Rkl2VW1WemIzVnlZMlZ6UER3dlJYaDBSMU4wCllYUmxQRHd2UjFNd0lEY2dNQ0JTUGo0dlVISnZj
R1Z5ZEdsbGN6dzhMMDFETUR3OEwwTnZiRzl5V3pJd01qSTBJRE15TnpZNElEWTEKTlRNMVhTOUVh
VzF0WldRZ1ptRnNjMlV2UldScGRHRmliR1VnZEhKMVpTOVFjbVYyYVdWM0lIUnlkV1V2VUhKcGJu
UmxaQ0IwY25WbApMMVJwZEd4bEtFeGhlV1Z5SURFcEwxWnBjMmxpYkdVZ2RISjFaVDQrUGo0K1Bp
OVVjbWx0UW05NFd6QXVNQ0F3TGpBZ01UUTRMakFnCk1USXhMakJkTDFSNWNHVXZVR0ZuWlQ0K0RX
VnVaRzlpYWcwMklEQWdiMkpxRFR3OEwwWnBiSFJsY2k5R2JHRjBaVVJsWTI5a1pTOU0KWlc1bmRH
Z2dORGt5UGo1emRISmxZVzBOQ2tpSlZGUTdieFl4RU96OUs3Wkc4bVlmZnJZRVJFT0tpSUlhblFJ
RkNWSkN4YjluZkovdApBMTF4bnZQdWVuWm1mWGVmdi8xNWVxTzdoM3VoOXgvdUtid0dJVFVsVFkz
aVdMdzloYS8wQzEvSG8vUXozSDM2SXZUamQzZ0Z1bjFUClZhNDVkekpoS1pMcGVEbmpYMEkwNDVR
TDF0RXphemZTeWtWOXd5U2NsSTZ3Y0VsY2phSXBlNnZVaEpzMlpNL0ZFYlN6NUR4d1JSWHIKbklF
S1hzM0psUk5sWVV0cFJBcm4zaGQrSHRnRTJGSEFxYkVWcDZKSTdCUVIydEpDSUhQbTFyMnR6azNL
S0ZWeHpJS2Irc1NPNW4xRQozNUxCMUR5dDJoTWRvYUQ5aFRvblY3TEVEVTBnclhRMFlTeURBNXE1
NFBPQ1dqaTdENTM5MUdVOFlGQWhsOWFiNHQyNTFqd1VWMEcwCmJzVW52R2pmOEZTOEcxYzBNWVZl
RmJmdU1kdXAyQlErSmpoZTBsSStldWV1NVJJL0ZzUmhlTGI2RVZwaVRKYjhzWXozbG53YzEwWC8K
Y2FEcFdYRHROMHlIK1haZ3d0M0t4TXVCbWJ3Y21NVzNCWEcwTEpkRE9LUzF0bndZMUl1bGJjVG9y
VmplVGl3OHJZamcxREZuUXBjTApSN0NLR1hEcUlGUWRybUJFYXNQd0MwYmxiS0N4TkRBVUVNY0l4
TEdocWF5RTRZNG1odDYxUVlCeEV3RnpHVXF6aWwwSnVLSmNUb002CkhERTBqeHMzMkxWeEk4K0xs
R0hnNUxPanZaeWpoMnJOTWNtNE9JS3p5bW54Lzl5UDhQMWRlQXdmSC9CdmVBeC9CUmdBUTk3TU1n
MWwKYm1SemRISmxZVzBOWlc1a2IySnFEVGNnTUNCdlltb05QRHd2UVVsVElHWmhiSE5sTDBKTkww
NXZjbTFoYkM5RFFTQXhMakF2VDFBZwpabUZzYzJVdlQxQk5JREV2VTBFZ2RISjFaUzlUVFdGemF5
OU9iMjVsTDFSNWNHVXZSWGgwUjFOMFlYUmxMMk5oSURFdU1DOXZjQ0JtCllXeHpaVDQrRFdWdVpH
OWlhZzA0SURBZ2IySnFEVHc4TDBOeVpXRjBhVzl1UkdGMFpTaEVPakl3TURreE1USXpNVE0xTnpF
NExUQTQKSnpBd0p5a3ZRM0psWVhSdmNpaEJaRzlpWlNCSmJHeDFjM1J5WVhSdmNpQkRVelFwTDAx
dlpFUmhkR1VvUkRveU1EQTVNVEV5TXpFegpOVGN4T0Mwd09DY3dNQ2NwTDFCeWIyUjFZMlZ5S0VG
a2IySmxJRkJFUmlCc2FXSnlZWEo1SURrdU1EQXBMMVJwZEd4bEtFTnNiM05sClpGOURZWEIwYVc5
dUtUNCtEV1Z1Wkc5aWFnMTRjbVZtRFRBZ09RMHdNREF3TURBd01EQXdJRFkxTlRNMUlHWU5DakF3
TURBd01EQXcKTVRZZ01EQXdNREFnYmcwS01EQXdNREF3TURBM05pQXdNREF3TUNCdURRb3dNREF3
TURFNU56WTRJREF3TURBd0lHNE5DakF3TURBdwpNREF3TURBZ01EQXdNREFnWmcwS01EQXdNREF4
T1RneE9TQXdNREF3TUNCdURRb3dNREF3TURJd01UYzJJREF3TURBd0lHNE5DakF3Ck1EQXdNakEz
TXpZZ01EQXdNREFnYmcwS01EQXdNREF5TURnME9DQXdNREF3TUNCdURRcDBjbUZwYkdWeURUdzhM
MU5wZW1VZ09TOVMKYjI5MElERWdNQ0JTTDBsdVptOGdPQ0F3SUZJdlNVUmJQRFV3TnpBeU1EaEJR
amswUkRRME9VSkNPVGMxUlVWR01ETkdSamN6TnpVMgpQand6UXpOQ05UUXpOalkyTURJMFFVTkdP
RGt5UXpjNU9UQkZOREl5UmpRM01qNWRQajROYzNSaGNuUjRjbVZtRFRJeE1ESTFEU1VsClJVOUdE
UUFBQUFBQUFBQUFBRlZJaWVWSWl3VUFBQUFBU0lQQUVFaUpCMGlMZnhCSWhmOTBCbDNwQUFBQUFG
M0RabVptWmk0UEg0UUEKQUFBQUFGVklpZVZUVUVpSiswaUxCUUFBQUFCSWc4QVFTSWtEU0l0N0VF
aUYvM1FGNkFBQUFBQklpZDlJZzhRSVcxM3BBQUFBQUdabQpabVl1RHgrRUFBQUFBQUJWU0lubFNJ
UHNJRWlMUlNoSWlVUWtHRWlMUlNCSWlVUWtFRWlMUlJCSWkwMFlTSWxNSkFoSWlRUWs2QUFBCkFB
QklnOFFnWGNObUxnOGZoQUFBQUFBQVZVaUo1VERBWGNNUEg0UUFBQUFBQUZWSWllVklpd1VBQUFB
QVNJUEFFRWlKQjBpTGZ4QkkKaGY5MEJsM3BBQUFBQUYzRFptWm1aaTRQSDRRQUFBQUFBRlZJaWVW
VFVFaUorMGlMQlFBQUFBQklnOEFRU0lrRFNJdDdFRWlGLzNRRgo2QUFBQUFCSWlkOUlnOFFJVzEz
cEFBQUFBR1ptWm1ZdUR4K0VBQUFBQUFCVlNJbmxzQUZkd3c4ZmhBQUFBQUFBVlVpSjVVaUxCUUFB
CkFBQklnOEFRU0lrSFNJdC9FRWlGLzNRR1hla0FBQUFBWGNObVptWm1MZzhmaEFBQUFBQUFWVWlK
NVZOUVNJbjdTSXNGQUFBQUFFaUQKd0JCSWlRTklpM3NRU0lYL2RBWG9BQUFBQUVpSjMwaUR4QWhi
WGVrQUFBQUFabVptWmk0UEg0UUFBQUFBQUZWSWllVklpd1VBQUFBQQo4ZzhRQVBJUEVFZ0lYY05t
TGc4ZmhBQUFBQUFBVlVpSjVVaUxCUUFBQUFCSWc4QVFTSWtIU0l0L0VFaUYvM1FHWGVrQUFBQUFY
Y05tClptWm1MZzhmaEFBQUFBQUFWVWlKNVZOUVNJbjdTSXNGQUFBQUFFaUR3QkJJaVFOSWkzc1FT
SVgvZEFYb0FBQUFBRWlKMzBpRHhBaGIKWGVrQUFBQUFabVptWmk0UEg0UUFBQUFBQUZWSWllVklp
d1VBQUFBQVNJUEFFRWlKQjBpTGZ4QkloZjkwQmwzcEFBQUFBRjNEWm1abQpaaTRQSDRRQUFBQUFB
RlZJaWVWVFVFaUorMGlMQlFBQUFBQklnOEFRU0lrRFNJdDdFRWlGLzNRRjZBQUFBQUJJaWQ5SWc4
UUlXMTNwCkFBQUFBR1ptWm1ZdUR4K0VBQUFBQUFCVlNJbmxTSXNGQUFBQUFFaUR3QkJJaVFkSWkz
OFFTSVgvZEFaZDZRQUFBQUJkdzJabVptWXUKRHgrRUFBQUFBQUJWU0lubFUxQklpZnRJaXdVQUFB
QUFTSVBBRUVpSkEwaUxleEJJaGY5MEJlZ0FBQUFBU0luZlNJUEVDRnRkNlFBQQpBQUJtWm1abUxn
OGZoQUFBQUFBQVZVaUo1VWlMQlFBQUFBQklnOEFRU0lrSFNJdC9FRWlGLzNRR1hla0FBQUFBWGNO
bVptWm1MZzhmCmhBQUFBQUFBVlVpSjVWTlFTSW43U0lzRkFBQUFBRWlEd0JCSWlRTklpM3NRU0lY
L2RBWG9BQUFBQUVpSjMwaUR4QWhiWGVrQUFBQUEKWm1abVppNFBINFFBQUFBQUFGVklpZVh5RHhB
RkpESC8vMTNEWnBCVlNJbmxTSXNGQUFBQUFFaUR3QkJJaVFkSWkzOFFTSVgvZEFaZAo2UUFBQUFC
ZHcyWm1abVl1RHgrRUFBQUFBQUJWU0lubFUxQklpZnRJaXdVQUFBQUFTSVBBRUVpSkEwaUxleEJJ
aGY5MEJlZ0FBQUFBClNJbmZTSVBFQ0Z0ZDZRQUFBQUJtWm1abUxnOGZoQUFBQUFBQVZVaUo1VWlM
QlFBQUFBQklnOEFRU0lrSFNJdC9FRWlGLzNRR1hla0EKQUFBQVhjTm1abVptTGc4ZmhBQUFBQUFB
VlVpSjVWTlFTSW43U0lzRkFBQUFBRWlEd0JCSWlRTklpM3NRU0lYL2RBWG9BQUFBQUVpSgozMGlE
eEFoYlhla0FBQUFBWm1abVppNFBINFFBQUFBQUFGVklpZVZkdzJZdUR4K0VBQUFBQUFCVlNJbmxY
ZWtBQUFBQVpnOGZSQUFBClZVaUo1VWlMQlFBQUFBQklnOEFRU0lrSFNJdC9FRWlGLzNRR1hla0FB
QUFBWGNObVptWm1MZzhmaEFBQUFBQUFWVWlKNVZOUVNJbjcKU0lzRkFBQUFBRWlEd0JCSWlRTklp
M3NRU0lYL2RBWG9BQUFBQUVpSjMwaUR4QWhiWGVrQUFBQUFabVptWmk0UEg0UUFBQUFBQUZWSQpp
ZVZJaXdVQUFBQUFTSVBBRUVpSkIwaUxmeEJJaGY5MEJsM3BBQUFBQUYzRFptWm1aaTRQSDRRQUFB
QUFBRlZJaWVWVFVFaUorMGlMCkJRQUFBQUJJZzhBUVNJa0RTSXQ3RUVpRi8zUUY2QUFBQUFCSWlk
OUlnOFFJVzEzcEFBQUFBR1ptWm1ZdUR4K0VBQUFBQUFCVlNJbmwKOGc4UUJUd3YvLzlkd3dBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdob2FHaG9hNmo4QUFBQUFBQUR3UHhrWkdSa1pHZWsv
QUFBQUFBQUE4RCtTa1pHUgprWkhCUDNFOUN0ZWpjTzAvSGg0ZUhoNGV6ajl4UFFyWG8zRHRQeEVS
RVJFUkViRS9jVDBLMTZOdzdUOFpHUmtaR1JtNVAzRTlDdGVqCmNPMC9GQlFVRkJRVTVEOEFBQUFB
QUFEd1A3eTd1N3U3dStzL0FBQUFBQUFBOEQvWjJOalkyTmpZUHdBQUFBQUFBUEEvRWhJU0VoSVMK
NGo4QUFBQUFBQUR3UHdBQUFBQUFBQUFBTXpNek16TXowejh5aER4YjRNdU5QMVRqcFp2RUlPUS91
QjZGNjFHNHJqOHpNek16TXpQcgpQd3JYbzNBOUNyYy9Nek16TXpNejZ6KzRIb1hyVWJpdVB6TXpN
ek16TStzL0ZCUVVGQlFVNUQ4QUFBQUFBQUR3UDd5N3U3dTd1K3MvCkFBQUFBQUFBOEQvWjJOalky
TmpZUHdBQUFBQUFBUEEvRWhJU0VoSVM0ajhBQUFBQUFBRHdQeEVSRVJFUkViRS9jVDBLMTZOdzdU
OFYKRlJVVkZSWEZQM0U5Q3RlamNPMC9FQkFRRUJBUXNEOHpNek16TXpQVFA5VGR0RmpKQnFFL1ZP
T2xtOFFnNUQ4QUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFB
QUFBQXA4QUFBQ0FBQUFBQUFJQVFBQUFBQUVBRDhBQUFBQUFBQUFBQUFBQUFBQUFBQ09BQUFBQVFM
ZkFBQUEKQkFnREp3QUFBT1lBQUFBQytRUXVBQUFBQmNzQUFBQTVBQUFBQVZRRjdnQUFBRGtBQUFB
QlZRWVlBUUFBQVFkVUFBQUFBMW9BQUFBZwpBUUFBQXdnQ1FBRUFBQVVFQ0dvQUFBQUpjUUFBQUVR
QkFBQUhkZ0FBQUFvRUJEWUxaUUVBQUFFTGd3RUFBQUlMb0FFQUFBZ0x3UUVBCkFCQUFBNFFBQUFE
ZUFRQUFCRHNHQ0FJQUFBRU1GUUlBQUFZaURSc0NBQUFCQnNVT3JBQUFBQmtDQUFBRHJBQUFBQkFD
QUFBRnhnQUEKQnc0QkFBQUhCZ0VBQUF3VkFnQUFCUzBQV0FJQUFBUUZNZ3RRQWdBQUFBQVBhd0lB
QUFRRk13dGpBZ0FBQUFBUUNRTUFBQWdGUlFQSwpBQUFBTkFJQUFBVkhBOWNBQUFBK0FnQUFCVWdS
QWdJQUFCa0JBQUFGaXdJakFBTVNSZ0lBQUFWS0FRRUJFOXdBQUFBQkFCSkdBZ0FBCkJVc0JBUUVU
M0FBQUFBRVVHUUVBQUFBU1JnSUFBQVZOQVFFQkU5d0FBQUFCRk9nQUFBQVVHUUVBQUFBU1JnSUFB
QVZWQVFFQkU5d0EKQUFBQkZQY0FBQUFVR1FFQUFBQVNSZ0lBQUFWYkFRRUJFOXdBQUFBQkZDY0VB
QUFBRWtZQ0FBQUZYZ0VCQVJQY0FBQUFBUlFzQkFBQQpBQkpHQWdBQUJXSUJBUUVUM0FBQUFBRVVP
QVFBQUFBVnBnSUFBTjhDQUFBRlkwZ0VBQUFCQVFFVFR3UUFBQUVBRXZ3Q0FBQUZaUUVCCkFSUGNB
QUFBQVFBU0NRTUFBQVZuQVFFQkRsUUVBQUFIQXdBQUU5d0FBQUFCRkNjRUFBQUFGaDREQUFCREF3
QUFCV2tCQVFFVDNBQUEKQUFFQUZVa0RBQUJ3QXdBQUJXb1pBUUFBQVFFQkU5d0FBQUFCQUJWNEF3
QUFuQU1BQUFWc0dRRUFBQUVCQVJOUEJBQUFBUUFWb0FNQQpBTUlEQUFBRmJSa0JBQUFCQVFFVFR3
UUFBQUVBRjgwREFBRHlBd0FBQlc4WkFRQUFBUUVCQVJOUEJBQUFBUUFWREFRQUFDNEVBQUFGCmNr
Z0VBQUFCQVFFVFR3UUFBQUVBRlRnRUFBQmhCQUFBQlhiSEFnQUFBUUVCRTA4RUFBQUJBQU5aQkFB
QXBBUUFBQVYxRmJnRUFBRGQKQkFBQUJYaGlCQUFBQVFFQkU5d0FBQUFCRkNjRUFBQUFGZWNFQUFB
YkJRQUFCWGxpQkFBQUFRRUJEbFFFQUFBSEF3QUFFOXdBQUFBQgpGQ2NFQUFBQUZUQUZBQURkQkFB
QUJYcGlCQUFBQVFFQkU5d0FBQUFCRkJrQkFBQUFGVk1GQUFEZEJBQUFCWDVpQkFBQUFRRUJFOXdB
CkFBQUJGQ3dFQUFBQUZYY0ZBQUFiQlFBQUJYOWlCQUFBQVFFQkRsUUVBQUFIQXdBQUU5d0FBQUFC
RkN3RUFBQUFGcW9GQUFEUkJRQUEKQllZQkFRRVQzQUFBQUFFVVlnUUFBQUFZMWdVQUFBd0dBQUFG
aVJrQkFBQUJBUU1PVkFRQUFCa0NBQUFBR2RZeEFBRHJBUUFBQVJvZwpSZ0FBQldVVVpRQUFBUUFi
OXpFQUFPc0JBQURWQXdBQUFSb2dSZ0FBQldVVVpRQUFBUndkdFVrQUFBVmxHUUVBQUFBQUdmbytB
QUF6CkFRQUFBUm9nUmdBQUJVb1VaUUFBQVFBYkd6OEFBRE1CQUFBVUJBQUFBUm9nUmdBQUJVb1Va
UUFBQVFBQUJBWUJBQUFlSWdRQUFCOEcKQVFBQURCVUNBQUFISHcrTUFnQUFCQWNsQzNZQ0FBQUFB
QUFDOXdJQUFBSUJCeUlFQUFBSHJBQUFBQ0FaQVFBQUJnRUFBQjRHQVFBQQpCd2tIQUFBR1pRWUFB
QUVIYkFRQUFBTnlCQUFBYndZQUFBUUlCNXNFQUFBRW13UUFBQjZIQkFBQUg1c0VBQUFlbXdRQUFB
MkhCZ0FBCkVBSVBFWU1HQUFBdUFBQUFBaEFDSXdBQkVZVUdBQUF1QUFBQUFoRUNJd2dCSVljR0FB
QUNEd0VCQVFFVGdnUUFBQUVBSVljR0FBQUMKRHdFQkFRRVRnZ1FBQUFFVWpBUUFBQUFoaHdZQUFB
SVBBUUVCQVJPQ0JBQUFBUlNSQkFBQUFDR1BCZ0FBQWc4QkFRRUJFNElFQUFBQgpBQ0tZQmdBQTNR
UUFBQUlQbGdRQUFBRUJBUUVUZ2dRQUFBRVVqQVFBQUFBaXF3WUFBTjBFQUFBQ0Q1WUVBQUFCQVFF
QkU0SUVBQUFCCkZKRUVBQUFBQUFPYkJBQUFod1lBQUFJVEIzWUZBQUFFZGdVQUFCNWlCUUFBSDNZ
RkFBQWVkZ1VBQUEzUEJnQUFFQUlYRWNJR0FBQXUKQUFBQUFoZ0NJd0FCRWNnR0FBQXVBQUFBQWhr
Q0l3Z0JJYzhHQUFBQ0Z3RUJBUUVUWFFVQUFBRUFJYzhHQUFBQ0Z3RUJBUUVUWFFVQQpBQUVVWndV
QUFBQWh6d1lBQUFJWEFRRUJBUk5kQlFBQUFSUnNCUUFBQUNIV0JnQUFBaGNCQVFFQkUxMEZBQUFC
QUNMZUJnQUEzUVFBCkFBSVhjUVVBQUFFQkFRRVRYUVVBQUFFVVp3VUFBQUFpOEFZQUFOMEVBQUFD
RjNFRkFBQUJBUUVCRTEwRkFBQUJGR3dGQUFBQUFBTjIKQlFBQXp3WUFBQUliQjFFR0FBQUVVUVlB
QUI0OUJnQUFIMUVHQUFBZVVRWUFBQTBCQndBQUlBSWZFWHdHQUFCU0JRQUFBaUFDSXdBQgpFYjBH
QUFBdEJnQUFBaUVDSXhBQklRRUhBQUFDSHdFQkFRRVRPQVlBQUFFQUlRRUhBQUFDSHdFQkFRRVRP
QVlBQUFFVVFnWUFBQUFoCkFRY0FBQUlmQVFFQkFSTTRCZ0FBQVJSSEJnQUFBQ0VJQndBQUFoOEJB
UUVCRXpnR0FBQUJBQ0lRQndBQTNRUUFBQUlmVEFZQUFBRUIKQVFFVE9BWUFBQUVVUWdZQUFBQUFB
MUVHQUFBQkJ3QUFCQ01FQ1FjQUFBZjBCZ0FBQTFRRUFBQ1VDUUFBQkFnakNRY0FBTThKQUFBWQpC
RWNrS3dFQUFIOEFBQUFDSXdBQkFSRlVBUUFBYWdBQUFBUmdBaU1JQWhGZEFRQUFvUUFBQUFSaEFp
TU1BaEg2QVFBQUJnRUFBQVJpCkFpTVFBaVVpQmdBQUJFa0JBaEFBQVFFQkNRY0FBQk5uQkFBQUFR
QW1NZ1lBQUY4R0FBQUVTd0lDRUFJQkFRRUpCd0FBRTJjRUFBQUIKRkhjRUFBQVU2UVlBQUFBbkln
Y0FBRThIQUFBRVRFZ0VBQUFCQWhBREFRRUJDUWNBQUJQNUJnQUFBUlRwQmdBQUZGSUZBQUFBSjFj
SApBQUI3QndBQUJFMHRCZ0FBQVFJUUJBRUJBUWtIQUFBVCtRWUFBQUVBRm9jSEFBRENCd0FBQkU4
QkFRRVRad1FBQUFFVW9RQUFBQUFWCnl3Y0FBT2dIQUFBRVVLRUFBQUFCQVFFVCtRWUFBQUVBRnU0
SEFBQU9DQUFBQkZJQkFRRVRad1FBQUFFVWFnQUFBQUFWR0FnQUFEWUkKQUFBRVUyb0FBQUFCQVFF
VCtRWUFBQUVBRlQwSUFBQmVDQUFBQkZWSUJBQUFBUUVCRS9rR0FBQUJBQlZvQ0FBQWlRZ0FBQVJX
U0FRQQpBQUVCQVJQNUJnQUFBUUFWa3dnQUFMUUlBQUFFVjBnRUFBQUJBUUVUK1FZQUFBRUFKcjRJ
QUFEL0NBQUFCRm9CQWhBRkFRRUNDUWNBCkFCUDVCZ0FBQVJSM0JBQUFGT2tHQUFBQUpoY0pBQUJW
Q1FBQUJGc0JBaEFHQVFFQ0NRY0FBQlA1QmdBQUFSUjNCQUFBQUJWeENRQUEKamdrQUFBUmQvZ1lB
QUFFQkFoUDVCZ0FBQVFBV253a0FBTVlKQUFBRVhnRUJBaE5uQkFBQUFSVCtCZ0FBQUNIUENRQUFC
RWNCQVFFQgpFMmNFQUFBQkFBQUhQUWtBQUFROUNRQUFCeUVKQUFBb0J5c0pBQUFwTEFrQUFFUU1B
QUFEVGdFakNRY0FBRXNLQUFCQUF4a3FDUWNBCkFBSWpBQUVQTHdvQUFBUURJd3ZwQ1FBQUFBc0JD
Z0FBQVFzYUNnQUFBZ0FSM2drQUFGSUpBQUFETWdJakdBSVJSQW9BQU9rR0FBQUQKTXdJaklBSVNT
d29BQUFNYkFRRUJFeHdKQUFBQkFDWmxDZ0FBWHdZQUFBTWRBUUlRQWdFQkFUMEpBQUFUSEFrQUFB
RVVkd1FBQUJUcApCZ0FBQUNhZENnQUE0QW9BQUFNZUFRSVFCd0VCQVQwSkFBQVRKZ2tBQUFFVWR3
UUFBQlRwQmdBQUFDZnZDZ0FBZXdjQUFBTWdMUVlBCkFBRUNFQVFCQVFFOUNRQUFFeVlKQUFBQkFD
Y2VDd0FBVmdzQUFBTWhTQVFBQUFFQ0VBZ0JBUUU5Q1FBQUV5WUpBQUFCQUJWckN3QUEKbGdzQUFB
TW9VZ2tBQUFFQkFSTW1DUUFBQVFBbW53c0FBTmNMQUFBREtnRUNFQWtCQVFFOUNRQUFFeHdKQUFB
QkFDZnRDd0FBTWd3QQpBQU10TVFrQUFBRUNFQW9CQVFJOUNRQUFFeHdKQUFBQkZIY0VBQUFVNlFZ
QUFBQVZUZ3dBQUg0TUFBQURMekVKQUFBQkFRSVRKZ2tBCkFBRUFLd0tMREFBQXRnd0FBQU13WHdB
QUFBRUJFeHdKQUFBQkFBQXNpd3dBQUtZS0FBQ2dBQUFBQUFBQUFEb0JBQUFBQUFBQUFWWU0KQ3dB
QUFTMERBUUFBWHdBQUFBSDFBUWtEME5rQ0FBQUFBQUF0d0F3QUFGOEFBQUFCOWdFSkErRFpBZ0FB
QUFBQUxpQkdBQUFCOHdHSQpLd0FBQVdrQUFBQXY5RDRBQU9vQUFBQUFBQUFBR0FFQUFBQUFBQUFC
OWdFd0ZtTUFBQ1lCQUFBQUFBQUFMQUVBQUFBQUFBQUIrQUV4CklFWUFBQU1vam1VQUFBR2ZBQUFB
QUFBRjB3d0FBRGtBQUFBQldnWHVEQUFBT1FBQUFBRmJNcDBLQUFERENRQUFnQWdBQUFBQUFBQ3gK
Q1FBQUFBQUFBQUZXN0FzQUFDMEtEUUFBWHdBQUFBRTlBZ2tEOE5rQ0FBQUFBQUF0VHcwQUFGOEFB
QUFCUGdJSkF3RGFBZ0FBQUFBQQpMVm9OQUFDS0RBQUFBVDhDQ1FNQVNBRUFBQUFBQUMxaERRQUFv
UXdBQUFGQUFna0RFTm9DQUFBQUFBQXVJRVlBQUFFN0FvNWxBQUFCCmhnVUFBRE9mUmdBQUFUc0Nk
d1FBQUx3RkFBQTBwMFlBQUFFN0F1a0dBQUFDa1JBdzV6Y0FBUDRJQUFBQUFBQUFQQWtBQUFBQUFB
QUIKUUFJMURqZ0FBRFlhT0FBQThnVUFBQUF3Rm1NQUFGTUpBQUFBQUFBQVdna0FBQUFBQUFBQlFn
SXhJRVlBQUFNb2ptVUFBQUVWQmdBQQpBQUFGRWcwQUFEa0FBQUFCWFFVd0RRQUFPUUFBQUFGZU4w
QUJBQUFFQlRndUFBQUFPWU1NQUFBREFBWnJEUUFBQVFlV0RBQUFBNXdNCkFBQjJEUUFBQVFnRmhB
MEFBRGtBQUFBQmFBV1hEUUFBT1FBQUFBRmxCYXdOQUFBNUFBQUFBV1l5WlFvQUFKd0pBQUJRRWdB
QUFBQUEKQUk4YUFBQUFBQUFBQVZZQ0RRQUFMY0lOQUFCZkFBQUFBWmtDQ1FNZzJnSUFBQUFBQUM0
Z1JnQUFBWUVDaUNzQUFBRVpDZ0FBTTU5RwpBQUFCZ1FKM0JBQUFZZ29BQURTblJnQUFBWUVDNlFZ
QUFBS1JFRHF4UndBQUFZNENNUWtBQUpjTEFBQTd4VWNBQUFHRkF1a0dBQUE4CisxNEFBSUFDQUFB
Qmh3STB6MGNBQUFHMkFla0dBQUFEa1lCL09qdEhBQUFCdUFFdUFBQUFKd3NBQURvMFJ3QUFBYmtC
TGdBQUFGOEwKQUFBQU1PUmVBQURaRlFBQUFBQUFBT0FWQUFBQUFBQUFBWXNDTVNCR0FBQUVWLzlt
QUFBQnF3b0FBQUF3Rm1NQUFIRVdBQUFBQUFBQQpmaFlBQUFBQUFBQUJrQUl4SUVZQUFBTW9qbVVB
QUFFVERBQUFBREIrTndBQXVSWUFBQUFBQUFBbUZ3QUFBQUFBQUFHUkFqU25SZ0FBCkFVVUI2UVlB
QUFPUm9IOHpZU0lBQUFGRkFURUpBQUROQ3dBQU01OUdBQUFCUlFGM0JBQUFOZ3dBQUFBd3pWNEFB
Q1lYQUFBQUFBQUEKVFJjQUFBQUFBQUFCa3dJeElFWUFBQVJXLzJZQUFBSGhDZ0FBQURDVVhnQUE5
UmNBQUFBQUFBQjNHQUFBQUFBQUFBR1dBajJnWGdBQQpBcEZBUHF0ZUFBRHdDd0FBTnJaZUFBQlpE
QUFBUHNGZUFBQ1BEQUFBQURBV1l3QUFkeGdBQUFBQUFBQ0NHQUFBQUFBQUFBR1lBakVnClJnQUFB
eWlPWlFBQUFiSU1BQUFBTUlKZEFBQlNHUUFBQUFBQUFGMFpBQUFBQUFBQUFaMENNU0JHQUFBRVZm
OW1BQUFCQkFzQUFBQXcKd0FvQUFLOFpBQUFBQUFBQUtCb0FBQUFBQUFBQm5nSXY5RDRBQU40WkFB
QUFBQUFBREJvQUFBQUFBQUFCOWdFd0ZtTUFBQm9hQUFBQQpBQUFBSVJvQUFBQUFBQUFCK0FFeElF
WUFBQU1vam1VQUFBSFZEQUFBQUFBQUJkTU5BQUE1QUFBQUFVc0Y0QTBBQURrQUFBQUJUUVh5CkRR
QUFPUUFBQUFGcUJSVU9BQUE1QUFBQUFXc0ZPZzRBQURrQUFBQUJiQVZlRGdBQU9RQUFBQUZ0QklR
UEFBQUhlZzhBQUNNSkJ3QUEKeHc0QUFFQUROeW85Q1FBQUFpTUFBVDhDNHc0QUFESU1BQUFET1RF
SkFBQUJBaEFLQVFHRUR3QUFFK1lQQUFBQkZIY0VBQUFVNlFZQQpBQUFualE0QUFGWUxBQUFET2tn
RUFBQUJBaEFJQVFFQ2hBOEFBQk4vRHdBQUFRQUFCNFFQQUFBeTR3NEFBSmtQQUFEd0l3QUFBQUFB
CkFCVW5BQUFBQUFBQUFWWWdFQUFBTFlNT0FBQmZBQUFBQWEwQ0NRTXcyZ0lBQUFBQUFDNGdSZ0FB
QWFvQzVqUUFBQUZrRWdBQU01OUcKQUFBQnFnSjNCQUFBbWhJQUFEU25SZ0FBQWFvQzZRWUFBQUtS
RURxV1NBQUFBYmNDL2dZQUFLa1RBQUE2UWtjQUFBRzRBbmNFQUFEdgpFd0FBTC85aUFBQkFKQUFB
QUFBQUFFVWtBQUFBQUFBQUFhOENMdzlnQUFDUUpBQUFBQUFBQUo4a0FBQUFBQUFBQWJJQ01FbGZB
QURNCkpBQUFBQUFBQUlNbEFBQUFBQUFBQWJjQ09qUkhBQUFCWFFJdUFBQUFGaE1BQURvN1J3QUFB
VndDTGdBQUFFNFRBQUE2amdrQUFBRmcKQXY0R0FBQ0dFd0FBT2tKSEFBQUJZZ0ozQkFBQXpCTUFB
RUJQUndBQUFWY0M5R1lBQUR6bFh3QUFzQU1BQUFGY0FrSGFSZ0FBQVUwQwpFR1lBQUFPUnNIOHpu
MFlBQUFGTEFuY0VBQUR6RWdBQUFEeTdYd0FBOEFNQUFBRmRBa0hhUmdBQUFWTUNFR1lBQUFPUnNI
OHpuMFlBCkFBRlJBbmNFQUFEUUVnQUFBQUFBQjJVUkFBQWpDUWNBQURRUEFBQTRBd3dxQ1FjQUFB
SWpBQUVSUkFvQUFPa0dBQUFERlFJakdBTVMKTkE4QUFBTU9BUUVCRTJBUkFBQUJBQ1pURHdBQVh3
WUFBQU1RQVFJUUFnRUJBV1VSQUFBVFlCRUFBQUVVZHdRQUFCVHBCZ0FBQUNzRAprQThBQURJTUFB
QURFLzRHQUFBQkFSTmdFUUFBQVJSM0JBQUFGT2tHQUFBQUFES1FEd0FBd1JFQUFLQW5BQUFBQUFB
QVB5MEFBQUFBCkFBQUJWcDRTQUFBdEtnOEFBSW9NQUFBQjFBSUpBeUJJQVFBQUFBQUFMZG9QQUFD
S0RBQUFBZFVDQ1FOQVNBRUFBQUFBQUMwS0RRQUEKb1F3QUFBSFdBZ2tEUU5vQ0FBQUFBQUF0VHcw
QUFGOEFBQUFCMXdJSkExRGFBZ0FBQUFBQUxSb1FBQUNoREFBQUFkZ0NDUU5nMmdJQQpBQUFBQUMx
WUVBQUFYd0FBQUFIcUFna0RjTm9DQUFBQUFBQXRsaEFBQUY4QUFBQUI2d0lKQTREYUFnQUFBQUFB
TGlCR0FBQUIwZ0xyCk5BQUFBWHNVQUFBem4wWUFBQUhTQW5jRUFBQ3hGQUFBTktkR0FBQUIwZ0xw
QmdBQUFwRVFPa0pIQUFBQjRBSjNCQUFBS1JZQUFERG4KTndBQXlTY0FBQUFBQUFBSEtBQUFBQUFB
QUFIV0FrQnJSZ0FBQVNnQnhHVUFBRHF2SFFBQUFTc0JvUXdBQU9jVUFBQUFNT2MzQUFCVApLQUFB
QUFBQUFKRW9BQUFBQUFBQUFkZ0NRR3RHQUFBQktBSEVaUUFBT3E4ZEFBQUJLd0doREFBQUNoVUFB
QUF2RDJBQUFMY29BQUFBCkFBQUF5U2dBQUFBQUFBQUIyZ0l3U1Y4QUFQQW9BQUFBQUFBQXNDa0FB
QUFBQUFBQjNRSTZORWNBQUFGZEFpNEFBQUJ6RlFBQU9qdEgKQUFBQlhBSXVBQUFBcXhVQUFEcU9D
UUFBQVdBQy9nWUFBT01WQUFBNlFrY0FBQUZpQW5jRUFBQUdGZ0FBUUU5SEFBQUJWd0wwWmdBQQpQ
T1ZmQUFBZ0JBQUFBVndDUWRwR0FBQUJUUUlRWmdBQUE1R3dmek9mUmdBQUFVc0Nkd1FBQUZBVkFB
QUFQTHRmQUFCZ0JBQUFBVjBDClFkcEdBQUFCVXdJUVpnQUFBNUd3ZnpPZlJnQUFBVkVDZHdRQUFD
MFZBQUFBQUR3R1d3QUFrQVFBQUFIdEFrR25SZ0FBQWhBQjIyVUEKQUFPUmtIODBnd1lBQUFJT0FT
NEFBQUFEa2VoK004SUdBQUFDRGdFdUFBQUFUQllBQUVMSUJnQUFBZzRCTGdBQUFBZ0FBQUFBQUFE
dwpQek9GQmdBQUFnNEJMZ0FBQUc4V0FBQUFQQVpiQUFEQUJBQUFBZThDUWFkR0FBQUNFQUhiWlFB
QUE1SHdmalNEQmdBQUFnNEJMZ0FBCkFBT1I2SDR6d2dZQUFBSU9BUzRBQUFDU0ZnQUFRc2dHQUFB
Q0RnRXVBQUFBQ0FBQUFBQUFBUEEvTTRVR0FBQUNEZ0V1QUFBQXRSWUEKQUFBQUJlY1BBQUE1QUFB
QUFYa0ZBQkFBQURrQUFBQUJlZ1VsRUFBQU9RQUFBQUY4QlQ0UUFBQTVBQUFBQVgwRll4QUFBRGtB
QUFBQgpmd1Y4RUFBQU9RQUFBQUdBQXEwUUFBQUhCQVFtRlFBQUIwRVZBQUFFUVJVQUFBYzNGUUFB
SXdrSEFBQzZFQUFBT0FObUtna0hBQUFDCkl3QUJRNkVRQUFBdEZRQUFBM01CQVFNRUFBQUFFVVFL
QUFEcEJnQUFBM1VDSXhnREVyb1FBQUFEYUFFQkFSTXlGUUFBQVFBbTRoQUEKQUY4R0FBQURhZ0VD
RUFJQkFRRkJGUUFBRXpJVkFBQUJGSGNFQUFBVTZRWUFBQUFuS0JFQUFIc0hBQUFEYXkwR0FBQUJB
aEFFQVFFQgpRUlVBQUJNOEZRQUFBUUFuWlJFQUFFOEhBQUFEYkVnRUFBQUJBaEFEQVFFQlFSVUFB
Qk04RlFBQUFSVHBCZ0FBRkZJRkFBQUFHS3NSCkFBRGhFUUFBQTI0dUFBQUFBUUVCRmVnUkFBQXlE
QUFBQTNIK0JnQUFBUUVERXpJVkFBQUJGSGNFQUFBVTZRWUFBQUFBTXVnUkFBQU4KRmdBQVFDOEFB
QUFBQUFDZE5RQUFBQUFBQUFGV3ZoWUFBQzA3RWdBQWlnd0FBQUVUQXdrRFlFZ0JBQUFBQUFBdFNS
SUFBSW9NQUFBQgpGQU1KQTRCSUFRQUFBQUFBTFZZU0FBQ2hEQUFBQVJVRENRT1EyZ0lBQUFBQUFD
MW1FZ0FBb1F3QUFBRVdBd2tEb05vQ0FBQUFBQUF0CnFCSUFBRjhBQUFBQkZ3TUpBN0RhQWdBQUFB
QUFMaUJHQUFBQkVRUDFOQUFBQVRrWUFBQXpuMFlBQUFFUkEzY0VBQUJ2R0FBQU5LZEcKQUFBQkVR
UHBCZ0FBQXBFUU9zSklBQUFCSUFQK0JnQUF3Qm9BQURyUVNBQUFBU0VEZHdRQUFBWWJBQUE2NFJF
QUFBRWxBeTRBQUFBcApHd0FBT2tKSEFBQUJNd04zQkFBQWRCc0FBRHVzU0FBQUFSOERVZ1VBQURE
bk53QUFheThBQUFBQUFBQ3BMd0FBQUFBQUFBRVZBMEJyClJnQUFBU2dCeEdVQUFEcXZIUUFBQVNz
Qm9Rd0FBS1VZQUFBQU1PYzNBQURJTHdBQUFBQUFBQVl3QUFBQUFBQUFBUllEUUd0R0FBQUIKS0FI
RVpRQUFPcThkQUFBQkt3R2hEQUFBeUJnQUFBQXZEMkFBQUZZd0FBQUFBQUFBWlRBQUFBQUFBQUFC
R1FNd1NWOEFBSWt3QUFBQQpBQUFBS3pFQUFBQUFBQUFCSEFNNk5FY0FBQUZkQWk0QUFBQjNHUUFB
T2p0SEFBQUJYQUl1QUFBQXJ4a0FBRHFPQ1FBQUFXQUMvZ1lBCkFPY1pBQUE2UWtjQUFBRmlBbmNF
QUFBS0dnQUFRRTlIQUFBQlZ3TDBaZ0FBUE9WZkFBQWdCUUFBQVZ3Q1FkcEdBQUFCVFFJUVpnQUEK
QTVHb2Z6T2ZSZ0FBQVVzQ2R3UUFBRlFaQUFBQVBMdGZBQUJnQlFBQUFWMENRZHBHQUFBQlV3SVFa
Z0FBQTVHb2Z6T2ZSZ0FBQVZFQwpkd1FBQURFWkFBQUFBREJKWHdBQXRERUFBQUFBQUFCZk1nQUFB
QUFBQUFFZ0F6bzBSd0FBQVYwQ0xnQUFBQzBhQUFBNk8wY0FBQUZjCkFpNEFBQUJsR2dBQU9vNEpB
QUFCWUFMK0JnQUFuUm9BQURwQ1J3QUFBV0lDZHdRQUFPTWFBQUJBVDBjQUFBRlhBdlJtQUFBODVW
OEEKQUpBRkFBQUJYQUpCMmtZQUFBRk5BaEJtQUFBRGthaC9NNTlHQUFBQlN3SjNCQUFBRGhrQUFB
QTh1MThBQU5BRkFBQUJYUUpCMmtZQQpBQUZUQWhCbUFBQURrYWgvTTU5R0FBQUJVUUozQkFBQTZ4
Z0FBQUFBTDRKZEFBQ2dNd0FBQUFBQUFLc3pBQUFBQUFBQUFTOERBQVYxCkVnQUFPUUFBQUFHTUJZ
NFNBQUE1QUFBQUFZMEZ0eElBQURrQUFBQUJrZ1hYRWdBQU9RQUFBQUdUQjQ0WkFBQUVqaGtBQUFl
RUdRQUEKSXdrSEFBQitGQUFBS0FSbEtna0hBQUFDSXdBQkVRWVRBQUFuQUFBQUJIRUNJeGdERVJN
VEFBQW5BQUFBQkhJQ0l5QURGaDRUQUFCSwpFd0FBQkdjQkFRRVRmeGtBQUFFVUp3QUFBQUFWV0JN
QUFJSVRBQUFFYUNjQUFBQUJBUUVUaVJrQUFBRUFGbzBUQUFDM0V3QUFCR29CCkFRRVRmeGtBQUFF
VUp3QUFBQUFWd3hNQUFPb1RBQUFFYXljQUFBQUJBUUVUaVJrQUFBRUFGZk1UQUFBaEZBQUFCRzBu
QUFBQUFRRUIKRTRrWkFBQUJBQlV3RkFBQVd4UUFBQVJ1SndBQUFBRUJBUk9KR1FBQUFSUW5BQUFB
QUVSbkZBQUFCR1VCQWhBQUFRRUJBWTRaQUFBVApmeGtBQUFFQUlYNFVBQUFFWlFFQkFRRVRmeGtB
QUFFQUFBZWFHZ0FBQkpvYUFBQUhrQm9BQUNNSkJ3QUFyQlFBQUVnRFVpcU9HUUFBCkFpTUFBVU9V
RkFBQUxSVUFBQU5nQVFFRENnQUFBRU9nRkFBQUxSVUFBQU5oQVFFREFnQUFBQkZFQ2dBQTZRWUFB
QU5qQWlNb0F4S3MKRkFBQUExUUJBUUVUaXhvQUFBRUFKc2dVQUFCZkJnQUFBMVlCQWhBQ0FRRUJt
aG9BQUJPTEdnQUFBUlIzQkFBQUZPa0dBQUFBR0FJVgpBQURJQmdBQUExZ3VBQUFBQVFFQkdDd1ZB
QUJXRlFBQUExa3VBQUFBQVFFQkZWMFZBQUF5REFBQUExeitCZ0FBQVFFREU0c2FBQUFCCkZIY0VB
QUFVNlFZQUFBQkZBL3NWQUFCSUZnQUFBMTBCQVJPVkdnQUFBUlIzQkFBQUZPa0dBQUFBRmFRVkFB
RGxGUUFBQTE3cEJnQUEKQVFFREU1VWFBQUFCRk9rR0FBQUFBREw3RlFBQVlSc0FBTEE1QUFBQUFB
QUFqVUVBQUFBQUFBQUJWdFFiQUFBdCtCSUFBRjhBQUFBQgpaQU1KQThEYUFnQUFBQUFBTGlCR0FB
QUJYZ05EYVFBQUFYUWRBQUF6bjBZQUFBRmVBM2NFQUFDcUhRQUFOS2RHQUFBQlhnUHBCZ0FBCkFw
RVFPdlpJQUFBQllBTW5BQUFBNEIwQUFEb0lTUUFBQVdnRExnQUFBQ3NlQUFBN3owY0FBQUZsQStr
R0FBQTdEVWtBQUFGbUEra0cKQUFBN0dFa0FBQUZ6QStrR0FBQXdvMWtBQU1nNUFBQUFBQUFBNkRr
QUFBQUFBQUFCWUFORzFWa0FBRUFHQUFBRWJRQTh4a2dBQUhBRwpBQUFCWlFNMHowY0FBQUZXQStr
R0FBQUNrVUFBTUtOWkFBQjRPd0FBQUFBQUFKQTdBQUFBQUFBQUFXWURSdFZaQUFDd0JnQUFCRzBB
CkFESmRGUUFBUGhzQUFPQkNBQUFBQUFBQWJrc0FBQUFBQUFBQlZnNGRBQUF0V2cwQUFJb01BQUFC
ZlFNSkE2QklBUUFBQUFBQUxWOFcKQUFDaERBQUFBWDREQ1FQUTJnSUFBQUFBQUMyNUZnQUFYd0FB
QUFGL0F3a0Q0Tm9DQUFBQUFBQXVJRVlBQUFGN0EyWTFBQUFCZWlBQQpBRE9mUmdBQUFYc0Rkd1FB
QUxBZ0FBQTBwMFlBQUFGN0Era0dBQUFDa1JBNndrZ0FBQUdJQS80R0FBRGVJZ0FBT3RCSUFBQUJp
UU4zCkJBQUFKQ01BQURwQ1J3QUFBWlFEZHdRQUFFY2pBQUE3VDBrQUFBR0hBK2tHQUFBdzV6Y0FB
QXREQUFBQUFBQUFTVU1BQUFBQUFBQUIKZmdOQWEwWUFBQUVvQWNSbEFBQTZyeDBBQUFFckFhRU1B
QURtSUFBQUFDOFBZQUFBbDBNQUFBQUFBQUNwUXdBQUFBQUFBQUdCQXpCSgpYd0FBMEVNQUFBQUFB
QUNRUkFBQUFBQUFBQUdFQXpvMFJ3QUFBVjBDTGdBQUFKVWhBQUE2TzBjQUFBRmNBaTRBQUFETklR
QUFPbzRKCkFBQUJZQUwrQmdBQUJTSUFBRHBDUndBQUFXSUNkd1FBQUNnaUFBQkFUMGNBQUFGWEF2
Um1BQUE4NVY4QUFPQUdBQUFCWEFKQjJrWUEKQUFGTkFoQm1BQUFEa2FoL001OUdBQUFCU3dKM0JB
QUFjaUVBQUFBOHUxOEFBQ0FIQUFBQlhRSkIya1lBQUFGVEFoQm1BQUFEa2FoLwpNNTlHQUFBQlVR
SjNCQUFBVHlFQUFBQUFNRWxmQUFCUFJRQUFBQUFBQUF4R0FBQUFBQUFBQVlnRE9qUkhBQUFCWFFJ
dUFBQUFTeUlBCkFEbzdSd0FBQVZ3Q0xnQUFBSU1pQUFBNmpna0FBQUZnQXY0R0FBQzdJZ0FBT2tK
SEFBQUJZZ0ozQkFBQUFTTUFBRUJQUndBQUFWY0MKOUdZQUFEemxYd0FBVUFjQUFBRmNBa0hhUmdB
QUFVMENFR1lBQUFPUnFIOHpuMFlBQUFGTEFuY0VBQUFzSVFBQUFEeTdYd0FBa0FjQQpBQUZkQWtI
YVJnQUFBVk1DRUdZQUFBT1JxSDh6bjBZQUFBRlJBbmNFQUFBSklRQUFBQUFBQlhJV0FBQTVBQUFB
QVpvRmxSWUFBRGtBCkFBQUJtd1hGRmdBQU9RQUFBQUdkQmQ4V0FBQTVBQUFBQVo0eXlCUUFBUE1h
QUFCd1N3QUFBQUFBQU10TUFBQUFBQUFBQVZhbkh3QUEKTGFnU0FBQmZBQUFBQWFNRENRUHcyZ0lB
QUFBQUFDNGdSZ0FBQWFFRFpqVUFBQUZxSXdBQU01OUdBQUFCb1FOM0JBQUFvQ01BQURTbgpSZ0FB
QWFFRDZRWUFBQUtSRURyclNBQUFBYWNEL2dZQUFOWWpBQUFBT0M0QUFBQTVnd3dBQUFVQUJ3TWdB
QUFFQXlBQUFBZjVId0FBCkl3a0hBQUFHRndBQU9BTjVLZ2tIQUFBQ0l3QUJRL29XQUFBdEZRQUFB
NGNCQVFNRkFBQUFFVVFLQUFEcEJnQUFBNGtDSXhnREVnWVgKQUFBRGV3RUJBUlAwSHdBQUFRQW1J
QmNBQUY4R0FBQURmUUVDRUFJQkFRRURJQUFBRS9RZkFBQUJGSGNFQUFBVTZRWUFBQUFZV0JjQQpB
T0VSQUFBRGZ5NEFBQUFCQVFFckF3b1lBQUF5REFBQUE0TCtCZ0FBQVFFVDlCOEFBQUVVZHdRQUFC
VHBCZ0FBQUJhQUZ3QUFTQllBCkFBT0VBUUVERS80ZkFBQUJGSGNFQUFBVTZRWUFBQUFWeXhjQUFP
VVZBQUFEaGVrR0FBQUJBUU1UL2g4QUFBRVU2UVlBQUFBQU1nb1kKQUFDRElBQUFVRTBBQUFBQUFB
QnVVQUFBQUFBQUFBRldSU0VBQUMxYURRQUE2QjhBQUFHNUF3a0R3RWdCQUFBQUFBQXRYeFlBQUtF
TQpBQUFCdWdNSkF3RGJBZ0FBQUFBQUxhZ1NBQUJmQUFBQUFic0RDUU1RMndJQUFBQUFBQzRnUmdB
QUFiY0QralFBQUFGaUpBQUFNNTlHCkFBQUJ0d04zQkFBQW1DUUFBRFNuUmdBQUFiY0Q2UVlBQUFL
UkVEcENSd0FBQWNNRGR3UUFBUEVrQUFBdzV6Y0FBSGhOQUFBQUFBQUEKdGswQUFBQUFBQUFCdWdO
QWEwWUFBQUVvQWNSbEFBQTZyeDBBQUFFckFhRU1BQURPSkFBQUFDOFBZQUFBKzAwQUFBQUFBQUFG
VGdBQQpBQUFBQUFHOUF3QUZUeGdBQURrQUFBQUJwd1ZuR0FBQU9RQUFBQUdvQllBWUFBQTVBQUFB
QWFvRm1CZ0FBRGtBQUFBQnF3V3ZHQUFBCk9RQUFBQUdzQnhraUFBQUVHU0lBQUFjUElnQUFJd2tI
QUFEV0dBQUFJQU9NS2drSEFBQUNJd0FCRWNjWUFBQXVBQUFBQTVrQ0l4Z0QKRXRZWUFBQURqZ0VC
QVJNS0lnQUFBUUFtL0JnQUFGOEdBQUFEa0FFQ0VBSUJBUUVaSWdBQUV3b2lBQUFCRkhjRUFBQVU2
UVlBQUFBbgpRQmtBQUhzSEFBQURrUzBHQUFBQkFoQUVBUUVCR1NJQUFCTVVJZ0FBQVFBbmV4a0FB
RThIQUFBRGtrZ0VBQUFCQWhBREFRRUJHU0lBCkFCTVVJZ0FBQVJUcEJnQUFGRklGQUFBQUo3OFpB
QURoRVFBQUE1UXVBQUFBQVFJUUJ3RUJBUmtpQUFBVEZDSUFBQUVBS3dQMEdRQUEKTWd3QUFBT1gv
Z1lBQUFFQkV3b2lBQUFCRkhjRUFBQVU2UVlBQUFBQU12UVpBQURpSWdBQUlGTUFBQUFBQUFBcldB
QUFBQUFBQUFGVwpxU01BQUMwN0VnQUFpZ3dBQUFIekF3a0Q4RWdCQUFBQUFBQXRTUklBQUlvTUFB
QUI5QU1KQXhCSkFRQUFBQUFBTFZZU0FBQ2hEQUFBCkFmVURDUU1nMndJQUFBQUFBQzFtRWdBQW9R
d0FBQUgyQXdrRE1Oc0NBQUFBQUFBdHFCSUFBRjhBQUFBQjl3TUpBMERiQWdBQUFBQUEKTGNJTkFB
QmZBQUFBQWZnRENRTlEyd0lBQUFBQUFDNGdSZ0FBQWZFRC96UUFBQUcrSmdBQU01OUdBQUFCOFFO
M0JBQUE5Q1lBQURTbgpSZ0FBQWZFRDZRWUFBQUtSRURyQ0JnQUFBZm9ETGdBQUFKZ25BQUE2eUFZ
QUFBSDdBeTRBQUFEUUp3QUFPbUZKQUFBQi9BTXVBQUFBCjh5Y0FBRHJDU0FBQUFRUUUvZ1lBQUZN
b0FBQTYwRWdBQUFFRkJIY0VBQUIyS0FBQU9rSkhBQUFCRmdSM0JBQUFtU2dBQUR1c1NBQUEKQVFN
RVVnVUFBRHR1U1FBQUFRc0U2UVlBQUREbk53QUFTRk1BQUFBQUFBQ0dVd0FBQUFBQUFBSDFBMEJy
UmdBQUFTZ0J4R1VBQURxdgpIUUFBQVNzQm9Rd0FBRkluQUFBQU1PYzNBQUNsVXdBQUFBQUFBT05U
QUFBQUFBQUFBZllEUUd0R0FBQUJLQUhFWlFBQU9xOGRBQUFCCkt3R2hEQUFBZFNjQUFBQXY5RDRB
QUFKVUFBQUFBQUFBTUZRQUFBQUFBQUFCOXdNdmdsMEFBRFJXQUFBQUFBQUFQMVlBQUFBQUFBQUIK
RVFRQUJVVWFBQUE1QUFBQUFZOEZZQm9BQURrQUFBQUJrQWNSSlFBQUJCRWxBQUFIQnlVQUFDTUpC
d0FBcHhvQUFEZ0RQaW9KQndBQQpBaU1BQVVOOEdnQUFMUlVBQUFOTEFRRURDd0FBQUVPTkdnQUFM
UlVBQUFOTUFRRURBUUFBQUJGRUNnQUE2UVlBQUFOT0FpTVlBeEtuCkdnQUFBMEFCQVFFVEFpVUFB
QUVBSnRJYUFBQmZCZ0FBQTBJQkFoQUNBUUVCRVNVQUFCTUNKUUFBQVJSM0JBQUFGT2tHQUFBQUp4
c2IKQUFCUEJ3QUFBME5JQkFBQUFRSVFBd0VCQVJFbEFBQVREQ1VBQUFFVTZRWUFBQlJTQlFBQUFC
aGtHd0FBNFJFQUFBTkZMZ0FBQUFFQgpBUmlkR3dBQTRCc0FBQU5HTGdBQUFBRUJBU3NEOEJzQUFE
SU1BQUFEU2Y0R0FBQUJBUk1DSlFBQUFSUjNCQUFBRk9rR0FBQUFBREx3Ckd3QUE0Q1VBQUJCYkFB
QUFBQUFBaFYwQUFBQUFBQUFCVms4bUFBQXRXZzBBQUlvTUFBQUJQQVFKQXpCSkFRQUFBQUFBTFVZ
Y0FBQ2gKREFBQUFUMEVDUU5nMndJQUFBQUFBQzRnUmdBQUFUb0U4RFFBQUFFVExnQUFNNTlHQUFB
Qk9nUjNCQUFBU1M0QUFEU25SZ0FBQVRvRQo2UVlBQUFLUkVEcUJTUUFBQVVVRWR3UUFBS0l1QUFB
dzV6Y0FBRFpiQUFBQUFBQUFkRnNBQUFBQUFBQUJQUVJBYTBZQUFBRW9BY1JsCkFBQTZyeDBBQUFF
ckFhRU1BQUIvTGdBQUFDOFBZQUFBaTFzQUFBQUFBQUNXV3dBQUFBQUFBQUUvQkFBeTBob0FBR29s
QUFDUVhRQUEKQUFBQUFMcGZBQUFBQUFBQUFWWVNKd0FBTGNJTkFBQmZBQUFBQVZVRUNRTncyd0lB
QUFBQUFDNGdSZ0FBQVZNRThEUUFBQUhGTGdBQQpNNTlHQUFBQlV3UjNCQUFBK3k0QUFEU25SZ0FB
QVZNRTZRWUFBQUtSRUVHVFNRQUFBVmtFNlFZQUFBS1JRRHJyU0FBQUFWc0UvZ1lBCkFERXZBQUF2
OUQ0QUFMWmRBQUFBQUFBQTVGMEFBQUFBQUFBQlZRUUFCVk1jQUFBNUFBQUFBYk1GZEJ3QUFEa0FB
QUFCdEFlVkp3QUEKSXdrSEFBQ1dIQUFBT0FPY0tna0hBQUFDSXdBQkVVUUtBQURwQmdBQUE2Y0NJ
eGdERXBZY0FBQURuZ0VCQVJPUUp3QUFBUUFtdWh3QQpBRjhHQUFBRG9BRUNFQUlCQVFHVkp3QUFF
NUFuQUFBQkZIY0VBQUFVNlFZQUFBQVkvQndBQU9FUkFBQURveTRBQUFBQkFRTVlMaDBBCkFGWVZB
QUFEcEM0QUFBQUJBUU1yQTJBZEFBQXlEQUFBQTZYK0JnQUFBUUVUa0NjQUFBRVVkd1FBQUJUcEJn
QUFBQUF5WUIwQUFCVW8KQUFCQVlBQUFBQUFBQUkxbUFBQUFBQUFBQVZhYUtBQUFMVm9OQUFDS0RB
QUFBVzRFQ1FOUVNRRUFBQUFBQUMydkhRQUFvUXdBQUFGdgpCQWtEZ05zQ0FBQUFBQUF0dVJZQUFG
OEFBQUFCY0FRSkE1RGJBZ0FBQUFBQUxpQkdBQUFCYkFRRU5RQUFBYjB2QUFBem4wWUFBQUZzCkJI
Y0VBQUR6THdBQU5LZEdBQUFCYkFUcEJnQUFBcEVRUVU5SkFBQUJld1RwQmdBQUE1R0lmenJDU0FB
QUFYY0UvZ1lBQURveEFBQTYKMEVnQUFBRjRCSGNFQUFDb01RQUFPbUZKQUFBQmZBUXVBQUFBeXpF
QUFEcENSd0FBQVlZRWR3UUFBS1F5QUFBdzV6Y0FBR3RnQUFBQQpBQUFBcVdBQUFBQUFBQUFCYndS
QWEwWUFBQUVvQWNSbEFBQTZyeDBBQUFFckFhRU1BQUFwTUFBQUFDOFBZQUFBOTJBQUFBQUFBQUFH
CllRQUFBQUFBQUFGeUJEQkpYd0FBU1dFQUFBQUFBQUFLWWdBQUFBQUFBQUYzQkRvMFJ3QUFBVjBD
TGdBQUFKSXdBQUE2TzBjQUFBRmMKQWk0QUFBREtNQUFBT280SkFBQUJZQUwrQmdBQUFqRUFBRHBD
UndBQUFXSUNkd1FBQUlVeEFBQkFUMGNBQUFGWEF2Um1BQUE4NVY4QQpBQUFJQUFBQlhBSkIya1lB
QUFGTkFoQm1BQUFEa2FoL001OUdBQUFCU3dKM0JBQUFiekFBQUFBOHUxOEFBRUFJQUFBQlhRSkIy
a1lBCkFBRlRBaEJtQUFBRGthaC9NNTlHQUFBQlVRSjNCQUFBVERBQUFBQUFNRWxmQUFDZ1pBQUFB
QUFBQUZwbEFBQUFBQUFBQVlVRU9qUkgKQUFBQlhRSXVBQUFBN2pFQUFEbzdSd0FBQVZ3Q0xnQUFB
Q1l5QUFBNmpna0FBQUZnQXY0R0FBQmVNZ0FBT2tKSEFBQUJZZ0ozQkFBQQpnVElBQUVCUFJ3QUFB
VmNDOUdZQUFEemxYd0FBY0FnQUFBRmNBa0hhUmdBQUFVMENFR1lBQUFPUnFIOHpuMFlBQUFGTEFu
Y0VBQURxCk1nQUFBRHk3WHdBQXNBZ0FBQUZkQWtIYVJnQUFBVk1DRUdZQUFBT1JxSDh6bjBZQUFB
RlJBbmNFQUFESE1nQUFBQUFBQmJnZEFBQTUKQUFBQUFic0YyUjBBQURrQUFBQUJ2QVg3SFFBQU9R
QUFBQUcrQlI4ZUFBQTVBQUFBQWI4eXVod0FBTW9uQUFDUVpnQUFBQUFBQUw1bgpBQUFBQUFBQUFW
WkhLd0FBTGFnU0FBQmZBQUFBQVpJRUNRT2cyd0lBQUFBQUFDNGdSZ0FBQVpBRUJEVUFBQUVOTXdB
QU01OUdBQUFCCmtBUjNCQUFBUXpNQUFEU25SZ0FBQVpBRTZRWUFBQUtSRURyclNBQUFBWllFL2dZ
QUFIa3pBQUFBQnowSkFBQUhwaXNBQUFTbUt3QUEKQjVJckFBQUhDUWNBQUFlT0dRQUFJNllyQUFE
REh3QUFDQVIxSkZJZUFBQi9BQUFBQWlNQUFRRWxaaDRBQUFSM0FRSVFBQUVCQWFZcgpBQUFUalNz
QUFBRUFKblVlQUFDbUhnQUFCSGtCQWhBQ0FRRUJwaXNBQUJPTkt3QUFBUlJxQUFBQUZIY0VBQUFV
NlFZQUFCUW1GUUFBCkFDYXZIZ0FBOFI0QUFBUjZBUUlRQXdFQkFhWXJBQUFUalNzQUFBRVVkd1FB
QUJUcEJnQUFGQ2NBQUFBVUp3QUFBQlFtRlFBQUFDY0oKSHdBQU94OEFBQVI4U0FRQUFBRUNFQVFC
QVFHbUt3QUFFNWNyQUFBQkZHb0FBQUFVNlFZQUFCUlNCUUFBQUNkSEh3QUFld2NBQUFSOQpMUVlB
QUFFQ0VBVUJBUUdtS3dBQUU1Y3JBQUFCRkdvQUFBQUFKMm9mQUFDUUh3QUFCSCtjS3dBQUFnSVFC
Z0VCQWFZckFBQVRseXNBCkFBRVVhZ0FBQUFBbm54OEFBTHdmQUFBRWdLRXJBQUFDQWhBSEFRRUJw
aXNBQUJPWEt3QUFBUUFBQk9nc0FBQUgzaXdBQUNPbUt3QUEKOWg4QUFBZ0RyeXFtS3dBQUFpTUFB
VDhCRENBQUFKQWZBQUFEc1p3ckFBQUJBaEFHQVFIb0xBQUFFK01zQUFBQkZHb0FBQUFBSjlFZgpB
QUM4SHdBQUE3S2hLd0FBQVFJUUJ3RUJBZWdzQUFBVDR5d0FBQUVBQURJTUlBQUEvU3dBQU1CbkFB
QUFBQUFBSld3QUFBQUFBQUFCClZpb3VBQUF0UkI0QUFJZ3JBQUFCcmdRSkE3RGJBZ0FBQUFBQUxU
b2dBQURtTkFBQUFiZ0VDUVBBMndJQUFBQUFBQzFKSUFBQTZ6UUEKQUFIQkJBa0QwTnNDQUFBQUFB
QXRWQ0FBQVBBMEFBQUJ5QVFKQStEYkFnQUFBQUFBTFdzZ0FBRDFOQUFBQWM4RUNRUHcyd0lBQUFB
QQpBQzI4SHdBQStqUUFBQUhXQkFrREFOd0NBQUFBQUFBdGVTQUFBUDgwQUFBQjNRUUpBeERjQWdB
QUFBQUFMWVVnQUFBRU5RQUFBZVFFCkNRTWczQUlBQUFBQUFDMmNJQUFBWVRVQUFBSHJCQWtETU53
Q0FBQUFBQUF1SUVZQUFBR2VCRUZyQUFBQm5ETUFBRE9pU1FBQUFaNEUKYWdBQUFHbzBBQUE2c0Vr
QUFBR2dCSndyQUFDek5BQUFSNUFLQUFCSDRBZ0FBRERoVndBQUIyZ0FBQUFBQUFCT2FBQUFBQUFB
QUFHdQpCRUs5QmdBQUNRc0IwR1VBQUFGQUxpQkdBQUFCN1FHSUt3QUFBZm8yQUFCSXVqOEFBQTlv
QUFBQUFBQUFUbWdBQUFBQUFBQUI4UUc0CkxnQUFMaUJHQUFBQjdRR0lLd0FBQWRjMkFBQXdMV01B
QUE5b0FBQUFBQUFBRjJnQUFBQUFBQUFCOEFGSjd3TUFBQTlvQUFBQUFBQUEKRjJnQUFBQUFBQUFF
UjBvR0JBQUFEMmdBQUFBQUFBQVhhQUFBQUFBQUFBVktBQUFBQUREL1lnQUF4R2tBQUFBQUFBREth
UUFBQUFBQQpBQUd3QkRFZ1JnQUFCRlAvWmdBQUFXTTNBQUFBQUVjUUNRQUFNT0ZYQUFBdWFRQUFB
QUFBQUxacEFBQUFBQUFBQWJnRVFyMEdBQUFKCkN3SFFaUUFBQVVCTHRWY0FBQUZBTndBQVRNSlhB
QUEyYVFBQUFBQUFBTFpwQUFBQUFBQUFBemVOTHdBQVM5UlhBQUFCSFRjQUFFbTYKUHdBQU5ta0FB
QUFBQUFDc2FRQUFBQUFBQUFNM01DMWpBQUEyYVFBQUFBQUFBSFZwQUFBQUFBQUFBZkFCU2U4REFB
QTJhUUFBQUFBQQpBSFZwQUFBQUFBQUFCRWRLQmdRQUFEWnBBQUFBQUFBQWRXa0FBQUFBQUFBRlNn
QUFBQUFBQUVkQUNRQUFNT0ZYQUFEeWFRQUFBQUFBCkFESnFBQUFBQUFBQUFjOEVRcjBHQUFBSkN3
SFFaUUFBQVRndUlFWUFBQUg5QXZVMEFBQUI3emNBQUVqRlJRQUErbWtBQUFBQUFBQXkKYWdBQUFB
QUFBQUVBQTFJd0FBQXVJRVlBQUFIOUF2VTBBQUFCekRjQUFEQXRZd0FBK21rQUFBQUFBQUFDYWdB
QUFBQUFBQUgvQWtudgpBd0FBK21rQUFBQUFBQUFDYWdBQUFBQUFBQVJIU2dZRUFBRDZhUUFBQUFB
QUFBSnFBQUFBQUFBQUJVb0FBQUFBQUVkd0NRQUFNT0ZYCkFBQkhhZ0FBQUFBQUFJZHFBQUFBQUFB
QUFjRUVRcjBHQUFBSkN3SFFaUUFBQVRndUlFWUFBQUhOQXVzMEFBQUJOVGdBQUVpNVJBQUEKVDJv
QUFBQUFBQUNIYWdBQUFBQUFBQUhRQWdZeEFBQXVJRVlBQUFITkF1czBBQUFCRWpnQUFEQXRZd0FB
VDJvQUFBQUFBQUJYYWdBQQpBQUFBQUFIUEFrbnZBd0FBVDJvQUFBQUFBQUJYYWdBQUFBQUFBQVJI
U2dZRUFBQlBhZ0FBQUFBQUFGZHFBQUFBQUFBQUJVb0FBQUFBCkFFZWdDUUFBTU9GWEFBQ2ZhZ0FB
QUFBQUFOOXFBQUFBQUFBQUFjZ0VRcjBHQUFBSkN3SFFaUUFBQVRndUlFWUFBQUV3QlBBMEFBQUIK
ZXpnQUFFaFRUUUFBcDJvQUFBQUFBQURmYWdBQUFBQUFBQUV6QkxveEFBQXVJRVlBQUFFd0JQQTBB
QUFCV0RnQUFEQXRZd0FBcDJvQQpBQUFBQUFDdmFnQUFBQUFBQUFFeUJFbnZBd0FBcDJvQUFBQUFB
QUN2YWdBQUFBQUFBQVJIU2dZRUFBQ25hZ0FBQUFBQUFLOXFBQUFBCkFBQUFCVW9BQUFBQUFFZlFD
UUFBTU9GWEFBRDNhZ0FBQUFBQUFEZHJBQUFBQUFBQUFkWUVRcjBHQUFBSkN3SFFaUUFBQVRndUlF
WUEKQUFHeUEvbzBBQUFCd1RnQUFFajRTUUFBLzJvQUFBQUFBQUEzYXdBQUFBQUFBQUcxQTI0eUFB
QXVJRVlBQUFHeUEvbzBBQUFCbmpnQQpBREF0WXdBQS8yb0FBQUFBQUFBSGF3QUFBQUFBQUFHMEEw
bnZBd0FBLzJvQUFBQUFBQUFIYXdBQUFBQUFBQVJIU2dZRUFBRC9hZ0FBCkFBQUFBQWRyQUFBQUFB
QUFCVW9BQUFBQUFFY0FDZ0FBTU9GWEFBQlBhd0FBQUFBQUFIRnJBQUFBQUFBQUFkMEVRcjBHQUFB
SkN3SFEKWlFBQUFTQXVJRVlBQUFIZEEvODBBQUFCQnprQUFFZ0VTd0FBVjJzQUFBQUFBQUJ4YXdB
QUFBQUFBQUhnQXlJekFBQXVJRVlBQUFIZApBLzgwQUFBQjVEZ0FBREF0WXdBQVYyc0FBQUFBQUFC
ZmF3QUFBQUFBQUFIZkEwbnZBd0FBVjJzQUFBQUFBQUJmYXdBQUFBQUFBQVJIClNnWUVBQUJYYXdB
QUFBQUFBRjlyQUFBQUFBQUFCVW9BQUFBQUFFY3dDZ0FBTU9GWEFBQ0phd0FBQUFBQUFNbHJBQUFB
QUFBQUFlUUUKUXIwR0FBQUpDd0hRWlFBQUFUZ3VJRVlBQUFGbkJBUTFBQUFCVFRrQUFFaXhVQUFB
a1dzQUFBQUFBQURKYXdBQUFBQUFBQUZxQk5ZegpBQUF1SUVZQUFBRm5CQVExQUFBQktqa0FBREF0
WXdBQWtXc0FBQUFBQUFDWmF3QUFBQUFBQUFGcEJFbnZBd0FBa1dzQUFBQUFBQUNaCmF3QUFBQUFB
QUFSSFNnWUVBQUNSYXdBQUFBQUFBSmxyQUFBQUFBQUFCVW9BQUFBQUFFZGdDZ0FBTU9GWEFBRGhh
d0FBQUFBQUFCSnMKQUFBQUFBQUFBZXNFUXIwR0FBQUpDd0hRWlFBQUFTQXhJRVlBQUFPcVlUVUFB
QUdUT1FBQVRBWlhBQURwYXdBQUFBQUFBQkpzQUFBQQpBQUFBQTZxSU5BQUFTeFJYQUFBQmNEa0FB
RW9FU3dBQTZXc0FBQUFBQUFBSWJBQUFBQUFBQUFPcUFBQUFBRERPVmdBQTJHa0FBQUFBCkFBRGZh
UUFBQUFBQUFBSDRCRTAyQ0FBQUJGSnFBQUFBaGpjQUFERWdSZ0FBQkZLY0t3QUFBYWszQUFBQUFB
ZUVEd0FBQjJVUkFBQUgKRVNVQUFBZEJGUUFBQndNZ0FBQUhHU0lBQUFlVkp3QUFCQmcxQUFBSENU
VUFBQWNZTlFBQUl3a0hBQUR4SUFBQUlBT3FLaGtpQUFBQwpJd0FCSjdJZ0FBRGhFUUFBQTZ3dUFB
QUFBUUlRQndFQkFSZzFBQUFURGpVQUFBRUFJZkVnQUFBRHFnRUJBUUVURXpVQUFBRUFBQWNZCk5R
QUFCNW9hQUFBeTBSOEFBQ010QUFDZ2JBQUFBQUFBQUFodEFBQUFBQUFBQVZhZ05RQUFMU0VoQUFC
bU5RQUFBZjhFQ1FOQTNBSUEKQUFBQUFDNGdSZ0FBQWYwRVFXc0FBQUcyT1FBQU1PRlhBQUM3YkFB
QUFBQUFBUGhzQUFBQUFBQUFBZjhFUXIwR0FBQUpDd0hRWlFBQQpBVWd1SUVZQUFBRlJBMlkxQUFB
QkR6b0FBRWlxU0FBQXdHd0FBQUFBQUFENGJBQUFBQUFBQUFGVUF3UTJBQUF1SUVZQUFBRlJBMlkx
CkFBQUI3RGtBQURBTFdnQUF3R3dBQUFBQUFBREliQUFBQUFBQUFBRlRBMGt0WXdBQXdHd0FBQUFB
QUFESWJBQUFBQUFBQUFSbFNlOEQKQUFEQWJBQUFBQUFBQU1oc0FBQUFBQUFBQkVkS0JnUUFBTUJz
QUFBQUFBQUF5R3dBQUFBQUFBQUZTZ0FBQUFBQUFBWTBJUUFBQVFkNApOZ0FBQTM0MkFBQThJUUFB
QVF0T1J5RUFBRzhoQUFBQlN3R1FHZ0FBQUFBQUFBMGNBQUFBQUFBQUFWWXRMaUVBQUlNMkFBQUJU
UUVKCkExRGNBZ0FBQUFBQU01OUdBQUFCU3dGM0JBQUErQXdBQURTblJnQUFBVXNCNlFZQUFBS1JF
RE9rUndBQUFVc0JNUWtBQUM0TkFBQlAKdUJvQUFBQUFBQUE5R3dBQUFBQUFBRUhXUndBQUFVOEJz
bWNBQUFPUitINEFNSlJlQUFCMUd3QUFBQUFBQVBjYkFBQUFBQUFBQVY4QgpVS2RHQUFBQitPa0dB
QUFDa1VoTm4wWUFBQUg0ZHdRQUFHUU5BQUJOcEVjQUFBSDRNUWtBQUljTkFBQlJ6RVlBQUFINjYy
VUFBS29OCkFBQUFBQVY5SVFBQU9RQUFBQUZRQlk0aEFBQTVBQUFBQVZGU3J5RUFBTmtoQUFBQlJR
RUJMWjhoQUFCZkFBQUFBVWNCQ1FOWTNBSUEKQUFBQUFFQ2ZSZ0FBQVVVQmR3UUFBRUNuUmdBQUFV
VUI2UVlBQUVCaElnQUFBVVVCTVFrQUFBQUY2U0VBQURrQUFBQUJVZ1lFSWdBQQpBUWZSTndBQUE5
YzNBQUFSSWdBQUFRaFRJU0lBQUVjaUFBQUJLQUdoREFBQUFTMzVJUUFBM0RjQUFBRXFBUWtEYU53
Q0FBQUFBQUJBCmEwWUFBQUVvQWNSbEFBQTdyeDBBQUFFckFhRU1BQUJBZFVZQUFBRW9BY1JsQUFC
QWdFWUFBQUVvQWRCbEFBQUFWR2NpQUFDQ0lnQUEKQVVYK0JnQUFBVlZoSWdBQS9nWUFBQUZGQ1FO
NDNBSUFBQUFBQUFCVWx5SUFBTGdpQUFBQlJmNEdBQUFCVldFaUFBRCtCZ0FBQVVVSgpBNGpjQWdB
QUFBQUFIU1ZHQUFBQlJhTmxBQUFkUFVZQUFBRkZ1V1VBQUFCVzB5SUFBQzBWQUFBSThoaUNEd0FB
QWhjakFBQUlBUVN4Ck9BQUFPTGc0QUFCWGd3d0FBSUVQQUZqNElnQUF2VGdBQUFpbEZ3a0RjSFFB
QUFBQUFBQWxJd0FBVkVrakFBQmxJd0FBQVViK0JnQUEKQVZWaElnQUEvZ1lBQUFGR0NRT1EzQUlB
QUFBQUFBQlVleU1BQUowakFBQUJSdjRHQUFBQlZXRWlBQUQrQmdBQUFVWUpBNkRjQWdBQQpBQUFB
SFNWR0FBQUJScU5sQUFBZFBVWUFBQUZHdVdVQUFBQld1U01BQUMwVkFBQUlSdzkzRHdBQU9MZzRB
QUJYZ3d3QUFIWVBBRmpmCkl3QUFWamtBQUFqN0RRa0RBSVFBQUFBQUFBRC9Jd0FBVkNRa0FBQkJK
QUFBQVVUK0JnQUFBVlZoSWdBQS9nWUFBQUZFQ1FPbzNBSUEKQUFBQUFBQlVXQ1FBQUhza0FBQUJS
UDRHQUFBQlZXRWlBQUQrQmdBQUFVUUpBN2pjQWdBQUFBQUFIU1ZHQUFBQlJLTmxBQUFkUFVZQQpB
QUZFdVdVQUFBQldtQ1FBQUMwVkFBQUlOeHpaQndBQU9MZzRBQUJYZ3d3QUFOZ0hBRmkvSkFBQTd6
a0FBQWlOR3drRGdKTUFBQUFBCkFBRGdKQUFBVkFZbEFBQW9KUUFBQVVQK0JnQUFBVlZoSWdBQS9n
WUFBQUZEQ1FQQTNBSUFBQUFBQUFCVVJDVUFBR3dsQUFBQlEvNEcKQUFBQlZXRWlBQUQrQmdBQUFV
TUpBOURjQWdBQUFBQUFIU1ZHQUFBQlE2TmxBQUFkUFVZQUFBRkR1V1VBQUFCV2ppVUFBQzBWQUFB
SQppQjJnRHdBQU9MZzRBQUJYZ3d3QUFKOFBBRmk2SlFBQWlEb0FBQWc0SEFrRFlKc0FBQUFBQUFE
Z0pRQUFWQXNtQUFBdEpnQUFBVUwrCkJnQUFBVlZoSWdBQS9nWUFBQUZDQ1FQWTNBSUFBQUFBQUFC
VVNTWUFBSEVtQUFBQlF2NEdBQUFCVldFaUFBRCtCZ0FBQVVJSkEramMKQWdBQUFBQUFIU1ZHQUFB
QlFxTmxBQUFkUFVZQUFBRkN1V1VBQUFCV2t5WUFBQzBWQUFBSXBCYzZDQUFBT0xnNEFBQlhnd3dB
QURrSQpBRmkvSmdBQUlUc0FBQWp5RmdrREFLc0FBQUFBQUFEbEpnQUFWQkFuQUFBekp3QUFBVUgr
QmdBQUFWVmhJZ0FBL2dZQUFBRkJDUVB3CjNBSUFBQUFBQUFCVVVDY0FBSGtuQUFBQlFmNEdBQUFC
VldFaUFBRCtCZ0FBQVVFSkF3RGRBZ0FBQUFBQUhTVkdBQUFCUWFObEFBQWQKUFVZQUFBRkJ1V1VB
QUFCV25DY0FBQzBWQUFBSThSWTVDQUFBT0xnNEFBQlhnd3dBQURnSUFGakpKd0FBdWpzQUFBZy9G
Z2tEUUxNQQpBQUFBQUFEd0p3QUFWQndvQUFBN0tBQUFBVC8rQmdBQUFWVmhJZ0FBL2dZQUFBRS9D
UU1JM1FJQUFBQUFBQUJVVkNnQUFIa29BQUFCClAvNEdBQUFCVldFaUFBRCtCZ0FBQVQ4SkF4amRB
Z0FBQUFBQUhTVkdBQUFCUDZObEFBQWRQVVlBQUFFL3VXVUFBQUJXbUNnQUFDMFYKQUFBSVB4cDRE
d0FBT0xnNEFBQlhnd3dBQUhjUEFGakJLQUFBVXp3QUFBanpHQWtEZ0xzQUFBQUFBQURrS0FBQVZB
d3BBQUFxS1FBQQpBVUQrQmdBQUFWVmhJZ0FBL2dZQUFBRkFDUU1nM1FJQUFBQUFBQUJVUWlrQUFH
WXBBQUFCUVA0R0FBQUJWV0VpQUFEK0JnQUFBVUFKCkF6RGRBZ0FBQUFBQUhTVkdBQUFCUUtObEFB
QWRQVVlBQUFGQXVXVUFBQUJXaENrQUFDMFZBQUFJakJ0dkR3QUFPTGc0QUFCWGd3d0EKQUc0UEFG
aXNLUUFBN0R3QUFBaEFHZ2tEQU1zQUFBQUFBQURPS1FBQVZQVXBBQUFYS2dBQUFUNytCZ0FBQVZW
aElnQUEvZ1lBQUFFKwpDUU00M1FJQUFBQUFBQUJVTXlvQUFGc3FBQUFCUHY0R0FBQUJWV0VpQUFE
K0JnQUFBVDRKQTBqZEFnQUFBQUFBSFNWR0FBQUJQcU5sCkFBQWRQVVlBQUFFK3VXVUFBQUJXZlNv
QUFDMFZBQUFJK2cwUkNBQUFPTGc0QUFCWGd3d0FBQkFJQUZpcEtnQUFoVDBBQUFoTERRa0QKY05v
QUFBQUFBQURQS2dBQVZQb3FBQUFkS3dBQUFUMytCZ0FBQVZWaElnQUEvZ1lBQUFFOUNRTlEzUUlB
QUFBQUFBQlVPaXNBQUdNcgpBQUFCUGY0R0FBQUJWV0VpQUFEK0JnQUFBVDBKQTJEZEFnQUFBQUFB
SFNWR0FBQUJQYU5sQUFBZFBVWUFBQUU5dVdVQUFBQldoaXNBCkFDMFZBQUFJU2cwUUNRQUFPTGc0
QUFCWGd3d0FBQThKQUZpekt3QUFIajRBQUFpR0RBa0RrT0lBQUFBQUFBRGFLd0FBVkFZc0FBQW8K
TEFBQUFUeitCZ0FBQVZWaElnQUEvZ1lBQUFFOENRTm8zUUlBQUFBQUFBQlVSQ3dBQUd3c0FBQUJQ
UDRHQUFBQlZXRWlBQUQrQmdBQQpBVHdKQTNqZEFnQUFBQUFBSFNWR0FBQUJQS05sQUFBZFBVWUFB
QUU4dVdVQUFBQldqaXdBQUMwVkFBQUlQaFpuVXdBQU9MZzRBQUJYCmd3d0FBR1pUQUZpNkxBQUF0
ejRBQUFoSUR3a0RvT3NBQUFBQUFBRGdMQUFBQlFzdEFBQTVBQUFBQVZjRk1TMEFBRGtBQUFBQldG
UlkKTFFBQWV5MEFBQUhCWHdBQUFBRlZUaTBBQUY4QUFBQUJ3d2tEZ04wQ0FBQUFBQUFBTXBndEFB
Q0xDUUFBQUFBQUFBQUFBQUJGQUFBQQpBQUFBQUFGV09UOEFBQzRnUmdBQUFlMEJpQ3NBQUFFQUFB
QUFTTG8vQUFBRUFBQUFBQUFBQUVNQUFBQUFBQUFBQWZFQlpqOEFBRXZJClB3QUFBU01BQUFBd0xX
TUFBQVFBQUFBQUFBQUFEQUFBQUFBQUFBQUI4QUZKN3dNQUFBUUFBQUFBQUFBQURBQUFBQUFBQUFB
RVIwb0cKQkFBQUJBQUFBQUFBQUFBTUFBQUFBQUFBQUFWS0FBQUFBQnU3TFFBQWl3a0FBTWcvQUFB
QldTQkdBQUFCN1FHSUt3QUFBUUF5VGd3QQpBSTBLQUFCQUFRQUFBQUFBQUF3SUFBQUFBQUFBQVZi
MVB3QUFMaUJHQUFBQi9RR09aUUFBQWNJQUFBQTZZU0lBQUFIL0FURUpBQURsCkFBQUFUMjBCQUFB
QUFBQUFCd2dBQUFBQUFBQThSVDRBQUFBQUFBQUJCQUpKYXo0QUFIa0NBQUFBQUFBQTZBSUFBQUFB
QUFBQlBEYVEKUGdBQWhBSUFBRGFiUGdBQXB3SUFBQUFBUEVnN0FBQXdBQUFBQVJNQ1NXNDdBQUQ3
QWdBQUFBQUFBR29EQUFBQUFBQUFBVUUya3pzQQpBTW9DQUFBMm5qc0FBTzBDQUFBQUFEeXNQUUFB
WUFBQUFBRUhBa25TUFFBQWZRTUFBQUFBQUFEc0F3QUFBQUFBQUFFOU52YzlBQUFRCkF3QUFOZ0kr
QUFBekF3QUFBQUE4ZWp3QUFKQUFBQUFCRFFKSm9Ed0FBUDhEQUFBQUFBQUFiZ1FBQUFBQUFBQUJR
RGJGUEFBQVZnTUEKQURiUVBBQUFlUU1BQUFBQVBPUTRBQURBQUFBQUFSOENTUW81QUFDQkJBQUFB
QUFBQVBBRUFBQUFBQUFBQVVZMkx6a0FBSndEQUFBMgpPamtBQUw4REFBQUFBRHcvT0FBQThBQUFB
QUVpQWtsbE9BQUFBd1VBQUFBQUFBQnlCUUFBQUFBQUFBRkZOb280QUFEaUF3QUFOcFU0CkFBQUZC
QUFBQUFBOGZUa0FBQ0FCQUFBQkhBSkpvemtBQUlVRkFBQUFBQUFBOUFVQUFBQUFBQUFCUkRiSU9R
QUFLQVFBQURiVE9RQUEKU3dRQUFBQUFQQlk2QUFCUUFRQUFBUmtDU1R3NkFBQUhCZ0FBQUFBQUFI
WUdBQUFBQUFBQUFVTTJZVG9BQUc0RUFBQTJiRG9BQUpFRQpBQUFBQUR3VFBRQUFnQUVBQUFFS0Fr
azVQUUFBaVFZQUFBQUFBQUQ0QmdBQUFBQUFBQUUrTmw0OUFBQzBCQUFBTm1rOUFBRFhCQUFBCkFB
QTg0VHNBQUxBQkFBQUJFQUpKQnp3QUFBc0hBQUFBQUFBQWVnY0FBQUFBQUFBQlB6WXNQQUFBK2dR
QUFEWTNQQUFBSFFVQUFBQUEKUEs4NkFBRGdBUUFBQVJZQ1NkVTZBQUNLQndBQUFBQUFBUGtIQUFB
QUFBQUFBVUkyK2pvQUFFQUZBQUEyQlRzQUFHTUZBQUFBQUFBQQpNcDhMQUFCRkNnQUFvQThBQUFB
QUFBQ3NEd0FBQUFBQUFBRldwVUlBQUM0Z1JnQUFBVVlDaUNzQUFBRVNDQUFBQURMdEN3QUFZZ29B
CkFMQVBBQUFBQUFBQVJCSUFBQUFBQUFBQlZ0WkNBQUF1SUVZQUFBRm9Bb2dyQUFBQk5RZ0FBRE9m
UmdBQUFXZ0Nkd1FBQUdzSUFBQTAKcDBZQUFBRm9BdWtHQUFBQ2tSQTZoMGNBQUFGeEF2NEdBQUN3
Q1FBQU9wVkhBQUFCY2dKM0JBQUE5Z2tBQURBV1l3QUF5QThBQUFBQQpBQURPRHdBQUFBQUFBQUZx
QWpFZ1JnQUFBeWlPWlFBQUFiUUlBQUFBTHc5Z0FBRDBEd0FBQUFBQUFBSVFBQUFBQUFBQUFXMENN
RWxmCkFBQWxFQUFBQUFBQUFOOFFBQUFBQUFBQUFYRUNObHBmQUFBZENRQUFObVpmQUFCVkNRQUFO
bkpmQUFDTkNRQUFObjVmQUFEVENRQUEKTllwZkFBQTg1VjhBQUJBQ0FBQUJYQUphOWw4QUFBT1Jz
SDgrQW1BQUFQb0lBQUFBUEx0ZkFBQlFBZ0FBQVYwQ1dzeGZBQUFEa2JCLwpQdGhmQUFEWENBQUFB
QUFBTXU4S0FBRHFDUUFBc0NNQUFBQUFBQURzSXdBQUFBQUFBQUZXQjBRQUFDNGdSZ0FBQWFNQ2pt
VUFBQUV1CkVnQUFBRExlTFFBQWlSRUFBQ0FuQUFBQUFBQUFYaWNBQUFBQUFBQUJWamhFQUFBdUlF
WUFBQUhOQXVzMEFBQUJFaFFBQUVpNVJBQUEKSkNjQUFBQUFBQUJjSndBQUFBQUFBQUhRQW1WRUFB
Qkx4MFFBQUFFMUZBQUFNQzFqQUFBa0p3QUFBQUFBQUN3bkFBQUFBQUFBQWM4QwpTZThEQUFBa0p3
QUFBQUFBQUN3bkFBQUFBQUFBQkVkS0JnUUFBQ1FuQUFBQUFBQUFMQ2NBQUFBQUFBQUZTZ0FBQUFB
YkJpNEFBSWtSCkFBREhSQUFBQVZrZ1JnQUFBYzBDNnpRQUFBRUFNbE1QQUFDYUVRQUFRQzBBQUFB
QUFBRDdMUUFBQUFBQUFBRlc5RVFBQUM0Z1JnQUEKQWZRQzZ6UUFBQUhZRmdBQU01OUdBQUFCOUFK
M0JBQUFEaGNBQURTblJnQUFBZlFDNlFZQUFBS1JFQUF5TGk0QUFIY1ZBQUFBTGdBQQpBQUFBQUQ0
dUFBQUFBQUFBQVZaRVJRQUFMaUJHQUFBQi9RTDFOQUFBQVVRWEFBQkl4VVVBQUFRdUFBQUFBQUFB
UEM0QUFBQUFBQUFCCkFBTnhSUUFBUzlORkFBQUJaeGNBQURBdFl3QUFCQzRBQUFBQUFBQU1MZ0FB
QUFBQUFBSC9Ba252QXdBQUJDNEFBQUFBQUFBTUxnQUEKQUFBQUFBUkhTZ1lFQUFBRUxnQUFBQUFB
QUF3dUFBQUFBQUFBQlVvQUFBQUFHMTh1QUFCM0ZRQUEwMFVBQUFGWklFWUFBQUg5QXZVMApBQUFC
QURKbEVRQUEwQlVBQUlBdUFBQUFBQUFBR3k4QUFBQUFBQUFCVmdCR0FBQXVJRVlBQUFFQ0E3Rm9B
QUFCclJjQUFEU25SZ0FBCkFRSUQ2UVlBQUFLUkVFQ21TQUFBQVFJRFVnVUFBRHVzU0FBQUFRUURV
Z1VBQUR5RFdnQUE4QVFBQUFFRkEwS3pTQUFBQWNjQkxnQUEKQUFnQUFBQUFBQUFRUURxOFNBQUFB
Y2tCSndBQUFOQVhBQUE2djBnQUFBSEtBU2NBQUFEekZ3QUFBQUF5S0JFQUFLOFZBQUFnTHdBQQpB
QUFBQURZdkFBQUFBQUFBQVZhYVJnQUFMaUJHQUFBQkNBT3hhQUFBQVJZWUFBQTd2UVlBQUFFS0F5
MEdBQUFBTXVJUUFBQ0lGUUFBCm9EVUFBQUFBQUFCTE9BQUFBQUFBQUFGVzEwWUFBQzRnUmdBQUFU
MEQ5VFFBQUFHWEd3QUFNNTlHQUFBQlBRTjNCQUFBelJzQUFEU24KUmdBQUFUMEQ2UVlBQUFLUkVF
SGdTQUFBQVVJRDZRWUFBQU9Sb0g4NjYwZ0FBQUZFQS80R0FBQi9IQUFBTUFaYkFBQ3ROZ0FBQUFB
QQpBTmsyQUFBQUFBQUFBVU1EUWFkR0FBQUNFQUhiWlFBQUE1R0FmelNEQmdBQUFnNEJMZ0FBQUFP
UitINDBoUVlBQUFJT0FTNEFBQUFECmtmQitOTUlHQUFBQ0RnRXVBQUFBQTVIb2ZqUElCZ0FBQWc0
QkxnQUFBRndjQUFBQU1INDNBQUJSTndBQUFBQUFBTDQzQUFBQUFBQUEKQVVVRE5LZEdBQUFCUlFI
cEJnQUFBcEZBTTU5R0FBQUJSUUYzQkFBQU9Sd0FBQUF3elY0QUFNWTNBQUFBQUFBQXpUY0FBQUFB
QUFBQgpTQU14SUVZQUFBUlcvMllBQUFFREhBQUFBQUF5a0M0QUFPSWFBQUJRT0FBQUFBQUFBSTQ0
QUFBQUFBQUFBVllSU0FBQUxpQkdBQUFCClVRTm1OUUFBQWFJY0FBQklxa2dBQUZRNEFBQUFBQUFB
akRnQUFBQUFBQUFCVkFNK1NBQUFTN2hJQUFBQnhSd0FBREFMV2dBQVZEZ0EKQUFBQUFBQmNPQUFB
QUFBQUFBRlRBMGt0WXdBQVZEZ0FBQUFBQUFCY09BQUFBQUFBQUFSbFNlOERBQUJVT0FBQUFBQUFB
Rnc0QUFBQQpBQUFBQkVkS0JnUUFBRlE0QUFBQUFBQUFYRGdBQUFBQUFBQUZTZ0FBQUFBQUc3VXVB
QURpR2dBQXVFZ0FBQUZaSUVZQUFBRlJBMlkxCkFBQUJBQ3lrRlFBQWdCc0FBTkE0QUFBQUFBQUFz
RGtBQUFBQUFBQUJWdVpJQUFBQkxpQkdBQUFCVmdORGFRQUFBUXNkQUFBMHowY0EKQUFGV0Era0dB
QUFDa1JBOEJsc0FBQUFHQUFBQld3TTBnd1lBQUFJT0FTNEFBQUFDa1hCQ3lBWUFBQUlPQVM0QUFB
QUlBQUFBQUFBQQpKRUF6aFFZQUFBSU9BUzRBQUFBdUhRQUFNOElHQUFBQ0RnRXVBQUFBVVIwQUFB
QUFNdG91QUFBNUlBQUEwRXdBQUFBQUFBQU9UUUFBCkFBQUFBQUZXZDBrQUFDNGdSZ0FBQWJJRCtq
UUFBQUg1SXdBQVNQaEpBQURVVEFBQUFBQUFBQXhOQUFBQUFBQUFBYlVEcEVrQUFFc0cKU2dBQUFS
d2tBQUF3TFdNQUFOUk1BQUFBQUFBQTNFd0FBQUFBQUFBQnRBTko3d01BQU5STUFBQUFBQUFBM0V3
QUFBQUFBQUFFUjBvRwpCQUFBMUV3QUFBQUFBQURjVEFBQUFBQUFBQVZLQUFBQUFCdjlMZ0FBT1NB
QUFBWktBQUFCV1NCR0FBQUJzZ1A2TkFBQUFRQXlJQmNBCkFFb2dBQUF3VVFBQUFBQUFBT3RSQUFB
QUFBQUFBVll6U2dBQUxpQkdBQUFCMUFQNk5BQUFBUlFsQUFBem4wWUFBQUhVQTNjRUFBQksKSlFB
QU5LZEdBQUFCMUFQcEJnQUFBcEVRQURJZ0x3QUFQU0lBQVBCUkFBQUFBQUFBRUZJQUFBQUFBQUFC
Vm9OS0FBQXVJRVlBQUFIZApBLzgwQUFBQmdDVUFBRWdFU3dBQTlGRUFBQUFBQUFBT1VnQUFBQUFB
QUFIZ0E3QktBQUJMRWtzQUFBR2pKUUFBTUMxakFBRDBVUUFBCkFBQUFBUHhSQUFBQUFBQUFBZDhE
U2U4REFBRDBVUUFBQUFBQUFQeFJBQUFBQUFBQUJFZEtCZ1FBQVBSUkFBQUFBQUFBL0ZFQUFBQUEK
QUFBRlNnQUFBQUFiVHk4QUFEMGlBQUFTU3dBQUFWa2dSZ0FBQWQwRC96UUFBQUVBTW5zWkFBQ1dJ
Z0FBTUZJQUFBQUFBQURiVWdBQQpBQUFBQUFGV1Awc0FBQzRnUmdBQUFlSURUV29BQUFIcEpRQUFO
S2RHQUFBQjRnUHBCZ0FBQXBFUVFLWklBQUFCNGdOU0JRQUFPNnhJCkFBQUI1QU5TQlFBQVBJTmFB
QURBQndBQUFlVURPcnhJQUFBQnlRRW5BQUFBSHlZQUFEcS9TQUFBQWNvQkp3QUFBRUltQUFBenMw
Z0EKQUFISEFTNEFBQUJsSmdBQUFBQXlRQmtBQUhVaUFBRGdVZ0FBQUFBQUFCeFRBQUFBQUFBQUFW
YlVTd0FBTGlCR0FBQUI2QU5OYWdBQQpBWWdtQUFBN3ZRWUFBQUhxQXkwR0FBQUFNdndZQUFCT0ln
QUFNRmdBQUFBQUFBQ3BXUUFBQUFBQUFBRldFVXdBQUM0Z1JnQUFBU0FFCi96UUFBQUc4S0FBQU01
OUdBQUFCSUFSM0JBQUE4aWdBQURTblJnQUFBU0FFNlFZQUFBS1JFRHJyU0FBQUFTUUUvZ1lBQUlF
cEFBQXcKZmpjQUFMdFlBQUFBQUFBQUtGa0FBQUFBQUFBQkpRUTBwMFlBQUFGRkFla0dBQUFDa1VB
em4wWUFBQUZGQVhjRUFBQmVLUUFBQURETgpYZ0FBS0ZrQUFBQUFBQUF1V1FBQUFBQUFBQUVuQkRF
Z1JnQUFCRmIvWmdBQUFTZ3BBQUFBQURKK0x3QUFXU1VBQUxCWkFBQUFBQUFBCjdsa0FBQUFBQUFB
QlZ0Sk1BQUF1SUVZQUFBRXdCUEEwQUFBQnBDa0FBRWhUVFFBQXRGa0FBQUFBQUFEc1dRQUFBQUFB
QUFFekJQOU0KQUFCTFlVMEFBQUhIS1FBQU1DMWpBQUMwV1FBQUFBQUFBTHhaQUFBQUFBQUFBVElF
U2U4REFBQzBXUUFBQUFBQUFMeFpBQUFBQUFBQQpCRWRLQmdRQUFMUlpBQUFBQUFBQXZGa0FBQUFB
QUFBRlNnQUFBQUFic2k4QUFGa2xBQUJoVFFBQUFWa2dSZ0FBQVRBRThEUUFBQUVBCk1oc2JBQUNS
SlFBQU1Gb0FBQUFBQUFBRFd3QUFBQUFBQUFGV2prMEFBQzRnUmdBQUFUVUV4Mm9BQUFFTktnQUFO
S2RHQUFBQk5RVHAKQmdBQUFwRVFRS1pJQUFBQk5RUlNCUUFBTUJOWUFBQkRXZ0FBQUFBQUFBRmJB
QUFBQUFBQUFUY0VPa1pKQUFBQjBRRXVBQUFBTUNvQQpBRHBEU1FBQUFkc0JMZ0FBQUdZcUFBQTZT
VWtBQUFIVEFTNEFBQUNjS2dBQVF1RVJBQUFCendFdUFBQUFDQUFBQUFBQUFDUkFPbmhKCkFBQUIz
QUV1QUFBQUt5c0FBRHA3U1FBQUFkUUJMZ0FBQUdFckFBQTZma2tBQUFIYUFTNEFBQUR3S3dBQU9r
eEpBQUFCMlFFdUFBQUEKYkN3QUFEQ0RXZ0FBckZvQUFBQUFBQURTV2dBQUFBQUFBQUhnQVRPRkJn
QUFBZ0lCTGdBQUFPVXFBQUF6Z3dZQUFBSUNBUzRBQUFDaQpMQUFBUXJOSUFBQUJ4d0V1QUFBQUNB
QUFBQUFBQUNSQU9yOUlBQUFCeWdFbkFBQUEreXdBQURxOFNBQUFBY2tCSndBQUFFRXRBQUFBCk1J
TmFBQURTV2dBQUFBQUFBT1JhQUFBQUFBQUFBZUlCTTRVR0FBQUNBZ0V1QUFBQXFpc0FBRE9EQmdB
QUFnSUJMZ0FBQU5nc0FBQTYKdkVnQUFBSEpBU2NBQUFCa0xRQUFRck5JQUFBQnh3RXVBQUFBQ0FB
QUFBQUFBQ1JBT3I5SUFBQUJ5Z0VuQUFBQWh5MEFBQUF3ZzFvQQpBT1JhQUFBQUFBQUE5bG9BQUFB
QUFBQUI1QUV6aFFZQUFBSUNBUzRBQUFETkt3QUFNNE1HQUFBQ0FnRXVBQUFBSml3QUFEcS9TQUFB
CkFjb0JKd0FBQUtvdEFBQkNzMGdBQUFISEFTNEFBQUFJQUFBQUFBQUFKRUE2dkVnQUFBSEpBU2NB
QUFETkxRQUFBRENEV2dBQTlsb0EKQUFBQUFBQUJXd0FBQUFBQUFBSG1BVE9GQmdBQUFnSUJMZ0FB
QUFnckFBQXpnd1lBQUFJQ0FTNEFBQUJKTEFBQU9yOUlBQUFCeWdFbgpBQUFBSGkwQUFEcThTQUFB
QWNrQkp3QUFBUEF0QUFCQ3MwZ0FBQUhIQVM0QUFBQUlBQUFBQUFBQUpFQUFBQUF5NWk4QUFMa25B
QURBClh3QUFBQUFBQVA1ZkFBQUFBQUFBQVZZd1VBQUFMaUJHQUFBQlp3UUVOUUFBQVZRdkFBQklz
VkFBQU1SZkFBQUFBQUFBL0Y4QUFBQUEKQUFBQmFnUmRVQUFBUzc5UUFBQUJkeThBQURBdFl3QUF4
RjhBQUFBQUFBRE1Yd0FBQUFBQUFBRnBCRW52QXdBQXhGOEFBQUFBQUFETQpYd0FBQUFBQUFBUkhT
Z1lFQUFERVh3QUFBQUFBQU14ZkFBQUFBQUFBQlVvQUFBQUFHeE13QUFDNUp3QUF2MUFBQUFGWklF
WUFBQUZuCkJBUTFBQUFCQUZ0QU1BQUFYekFBQUFPdkFRRUIzMUFBQUJPV2VRQUFBUUJjZGpBQUFI
MHdBQUFKRFFFQkFVQzVTUUFBQ1EwQkFGZ0EKQUFCYmpUQUFBRjh3QUFBRHJ3RUJBUk5SQUFBVGxu
a0FBQUVBWGF3d0FBQmZNQUFBQTY4QkFSb2dSZ0FBQTYrUmVRQUFBUUJleXpBQQpBTUFyQUFBYUlF
WUFBQVIzQ0h3QUFBRUFXK0l3QUFBUE1RQUFBNXdCQVFGY1VRQUFFNUFuQUFBQkFGODBNUUFBRHpF
QUFBT2NBUUVCCmRsRUFBQUVUa0NjQUFBRUFZR0V4QUFBUE1RQUFBNXdCQVk5UkFBQUJHaUJHQUFB
RG5BUTFBQUFCQUJtT01RQUFVQWNBQUFFYUlFWUEKQUFSSm5Dc0FBQUVBTXFZeEFBQlFCd0FBNEVN
QkFBQUFBQUFUUkFFQUFBQUFBQUZXMGxFQUFERWdSZ0FBQkVtY0t3QUFBVFpHQUFCTQpobElBQU9s
REFRQUFBQUFBRTBRQkFBQUFBQUFFU2YxUkFBQXhJRVlBQUFSSm5Dc0FBQUdQUmdBQU03bEpBQUFK
RFFFQVdBQUExVVlBCkFFbWNVUUFBNlVNQkFBQUFBQUFGUkFFQUFBQUFBQVJKTVNCR0FBQUVTWndy
QUFBQmJFWUFBRW13QXdBQTkwTUJBQUFBQUFBRlJBRUEKQUFBQUFBUkpTY2NEQUFEM1F3RUFBQUFB
QUFWRUFRQUFBQUFBQldWUnRVa0FBQVZsR1FFQUFMSkdBQUFBQUFBQUFDeStNUUFBVUFjQQpBTEJE
QVFBQUFBQUEwME1CQUFBQUFBQUJWcVpTQUFBQk1TQkdBQUFFU1p3ckFBQUJ6VVVBQUVtY1VRQUF0
RU1CQUFBQUFBRFJRd0VBCkFBQUFBQVJKTVNCR0FBQUVTWndyQUFBQjhFVUFBRW13QXdBQXdrTUJB
QUFBQUFEUlF3RUFBQUFBQUFSSlNjY0RBQURDUXdFQUFBQUEKQU5GREFRQUFBQUFBQldWUnRVa0FB
QVZsR1FFQUFCTkdBQUFBQUFBQVd4Z3lBQUJNTWdBQUF6NEJBUUV3VXdBQUV3SWxBQUFCQUY5NApN
Z0FBVERJQUFBTStBUUVCU2xNQUFBRVRBaVVBQUFFQVlLd3lBQUJNTWdBQUF6NEJBV05UQUFBQkdp
QkdBQUFEUHZBMEFBQUJBREsvCkdRQUF3U0lBQUtCQ0FRQUFBQUFBcmtJQkFBQUFBQUFCVm85VEFB
QXhJRVlBQUFPVVRXb0FBQUhyUWdBQUFGdmdNZ0FBRHpNQUFBT00KQVFFQnNsTUFBQk1LSWdBQUFR
QmZOak1BQUE4ekFBQURqQUVCQWN4VEFBQUJFd29pQUFBQkFHQmxNd0FBRHpNQUFBT01BUUhsVXdB
QQpBUm9nUmdBQUE0ei9OQUFBQVFCYmxETUFBTGN6QUFBRGVRRUJBUVJVQUFBVDlCOEFBQUVBWDlJ
ekFBQzNNd0FBQTNrQkFRRWVWQUFBCkFSUDBId0FBQVFCZzlUTUFBTGN6QUFBRGVRRUJOMVFBQUFF
YUlFWUFBQU41K2pRQUFBRUFXeGcwQUFBOU5BQUFBMUlCQVFGV1ZBQUEKRTRzYUFBQUJBRjlhTkFB
QVBUUUFBQU5TQVFFQmNGUUFBQUVUaXhvQUFBRUFZSDgwQUFBOU5BQUFBMUlCQVlsVUFBQUJHaUJH
QUFBRApVbVkxQUFBQkFCbWtOQUFBWGhvQUFBRWFJRVlBQUFSbG9Tc0FBQUVBVzhNMEFBRDBOQUFB
QTJZQkFRRy9WQUFBRXpJVkFBQUJBRjhkCk5RQUE5RFFBQUFObUFRRUIyVlFBQUFFVE1oVUFBQUVB
WUU0MUFBRDBOQUFBQTJZQkFmSlVBQUFCR2lCR0FBQURadlUwQUFBQkFESlgKQndBQXV3Y0FBTUJB
QVFBQUFBQUExa0FCQUFBQUFBQUJWaDVWQUFBeElFWUFBQVJOLzJZQUFBRWNQZ0FBQUZ0L05RQUFw
elVBQUFNTQpBUUVCUVZVQUFCTmdFUUFBQVFCZnh6VUFBS2MxQUFBRERBRUJBVnRWQUFBQkUyQVJB
QUFCQUdEdk5RQUFwelVBQUFNTUFRRjBWUUFBCkFSb2dSZ0FBQXd6ck5BQUFBUUF5alE0QUFNUVBB
QUJBUUFFQUFBQUFBRWhBQVFBQUFBQUFBVmFnVlFBQU1TQkdBQUFET29odUFBQUIKemp3QUFBQmJG
ellBQUR3MkFBQUROd0VCQWNOVkFBQVQ1ZzhBQUFFQVgxazJBQUE4TmdBQUF6Y0JBUUhkVlFBQUFS
UG1Ed0FBQVFCZwpmallBQUR3MkFBQUROd0VCOWxVQUFBRWFJRVlBQUFNMzVqUUFBQUVBWUtNMkFB
REdOZ0FBQXhrQkFSVldBQUFCR2lCR0FBQURHWWdyCkFBQUJBREllQ3dBQUN3b0FBTUEvQVFBQUFB
QUF5RDhCQUFBQUFBQUJWa0ZXQUFBeElFWUFBQU1oam1VQUFBR0FPd0FBQURJaUJ3QUEKa0FjQUFJ
QS9BUUFBQUFBQXRqOEJBQUFBQUFBQlZuRldBQUF4SUVZQUFBUk0vMllBQUFGZE93QUFVTTlIQUFB
RVRPa0dBQUFDa1JCaApwa2dBQUFSTVVnVUFBQUJiNFRZQUFNWTJBQUFER1FFQkFhMVdBQUFUSEFr
QUFBRUFYd1EzQUFER05nQUFBeGtCQVFISFZnQUFBUk1jCkNRQUFBUUFaN2djQUFBOElBQUFCR2lC
R0FBQUVVcHdyQUFBQllUWUlBQUFFVW1vQUFBQUFYaWMzQUFCT05RQUFHaUJHQUFBRHFtRTEKQUFB
QkFCdGdOd0FBVGpVQUFCUlhBQUFCR2lCR0FBQURxbUUxQUFBQkFES3lJQUFBTFRVQUFKQkVBUUFB
QUFBQW5rUUJBQUFBQUFBQgpWa0JYQUFBeElFWUFBQU9zMTNzQUFBRWpTQUFBQUZ1Wk53QUEwamNB
QUFPcUFRRUJZMWNBQUJNVE5RQUFBUUJmQXpnQUFOSTNBQUFECnFnRUJBWDFYQUFBQkV4TTFBQUFC
QUdBOE9BQUEwamNBQUFPcUFRR1dWd0FBQVJvZ1JnQUFBNnBoTlFBQUFRQmdkVGdBQU1jT0FBQUQK
TndFQnRWY0FBQUVhSUVZQUFBTTM1alFBQUFFQVlKbzRBQURIRGdBQUF6Y0JBZFJYQUFBQkdpQkdB
QUFETitZMEFBQUJBR0svT0FBQQp4VGdBQUFrTEFRQllBQUFCQVVDOUJnQUFDUXNCMEdVQUFBQmpa
SjBiQUFET0pRQUFaR1FiQUFDOEpRQUFVOUk0QUFEK09BQUFBYzhCClNBUUFBQUZBcDBZQUFBSFBB
ZWtHQUFCQTRSRUFBQUhQQVM0QUFBQkFwa2dBQUFIUEFWSUZBQUE3UmtrQUFBSFJBUzRBQUFBN1NV
b0EKQUFIU0FTNEFBQUE3U1VrQUFBSFRBUzRBQUFBN2Uwa0FBQUhVQVM0QUFBQTdURWtBQUFIWkFT
NEFBQUE3ZmtrQUFBSGFBUzRBQUFBNwpRMGtBQUFIYkFTNEFBQUE3ZUVrQUFBSGNBUzRBQUFBQVpG
Z1hBQUJ4SUFBQVpSVTVBQUJhT1FBQUFlditCZ0FBY0ZBQUFBQUFBQUFpClVRQUFBQUFBQUFGV1lW
bEpBQUFCNi9SbUFBQmhuMFlBQUFIcmR3UUFBR0duUmdBQUFldnBCZ0FBQUU1Mk9RQUFwamtBQUFH
aEFaQkIKQUFBQUFBQUEyRUlBQUFBQUFBQUJWak9mUmdBQUFhRUJkd1FBQUdNZUFBQTBwMFlBQUFH
aEFla0dBQUFDa1JBejRSRUFBQUdoQVM0QQpBQUNzSGdBQU9pTkpBQUFCb3dGWWFRQUFNUjhBQURw
QVNRQUFBYVVCTGdBQUFGUWZBQUE2UTBrQUFBR29BUzRBQUFDZUh3QUFPa1pKCkFBQUJwZ0V1QUFB
QTFSOEFBRHBKU1FBQUFha0JMZ0FBQUF3Z0FBQTZURWtBQUFHbkFTNEFBQUJESUFBQUFCbnpFd0FB
SnhvQUFBRWEKSUVZQUFBUnRTR2tBQUFFQUcxZ1RBQURiR1FBQXlGa0FBQUVhSUVZQUFBUm9TR2tB
QUFFQUc4TVRBQUFPR2dBQTQxa0FBQUVhSUVZQQpBQVJyU0drQUFBRUFaQUlWQUFBYUd3QUFaQ3dW
QUFBc0d3QUFaS3NSQUFEN0ZRQUFHYjQ1QUFCNEdnQUFBUm9nUmdBQUJHV2hLd0FBCkFRQmUzVGtB
QUY0YUFBQWFJRVlBQUFSbG9Tc0FBQUVBWHZ3NUFBQmVHZ0FBR2lCR0FBQUVaYUVyQUFBQkFHWWJP
Z0FBTFRvQUFBSUkKQVMwR0FBQkF3Z1lBQUFJSUFTNEFBQUJBeUFZQUFBSUlBUzRBQUFBN3ZRWUFB
QUlLQVMwR0FBQUFVemc2QUFCbE9nQUFBY2NCU0FRQQpBQUZBVEVvQUFBSEhBVklGQUFCQVQwb0FB
QUhIQVZJRkFBQkFzMGdBQUFISEFTNEFBQUE3dkVnQUFBSEpBU2NBQUFBN3YwZ0FBQUhLCkFTY0FB
QUFBWm9JNkFBQ1ZPZ0FBQWdJQlVnVUFBRUNEQmdBQUFnSUJMZ0FBQUVDRkJnQUFBZ0lCTGdBQUFE
dTVTUUFBQWdRQlVnVUEKQUFCVG9Ub0FBTFU2QUFBQ0RnSHBCZ0FBQVR1blJnQUFBaEFCMjJVQUFF
Q0ZCZ0FBQWc0QkxnQUFBRUNEQmdBQUFnNEJMZ0FBQUVESQpCZ0FBQWc0QkxnQUFBRURDQmdBQUFn
NEJMZ0FBQUFCT3dEb0FBUFk2QUFBQkZ3RkFJQUFBQUFBQUFLRWpBQUFBQUFBQUFWWXpuMFlBCkFB
RVhBWGNFQUFCdUR3QUFOSXhJQUFBQkZ3SHBCZ0FBQXBFUU02UkhBQUFCRndFeENRQUFwQThBQURN
NFNBQUFBUmdCTGdBQUFOb1AKQUFBenVSWUFBQUVZQVY4QUFBQVNFQUFBUUVOSUFBQUJGd0V0QmdB
QVBOWmNBQUJBQXdBQUFSNEJXdU5jQUFBRGtaQi9QdTljQUFCKwpFQUFBUHZ0Y0FBQ2hFQUFBTmdk
ZEFBRHVFQUFBTmhOZEFBQVJFUUFBTmg5ZEFBQTBFUUFBTml0ZEFBQlhFUUFBTmpkZEFBQjZFUUFB
CloxQmRBQUFRQXdBQUFSUUJBRHlnWEFBQWNBTUFBQUVnQVRNblNBQUFBUUlCTGdBQUFKMFJBQUFB
TUpSZUFBQU1Jd0FBQUFBQUFJa2oKQUFBQUFBQUFBU1FCVUtkR0FBQUIrT2tHQUFBQ2tVQk5uMFlB
QUFINGR3UUFBRnNRQUFCTnBFY0FBQUg0TVFrQUFOVVJBQUJSekVZQQpBQUg2NjJVQUFQZ1JBQUFB
QUZNQk93QUFMRHNBQUFFQ0Fla0dBQUFCUUNkSUFBQUJBZ0V1QUFBQVFLZEdBQUFCQWdIcEJnQUFR
RllWCkFBQUJBZ0V0QmdBQUFGSkRPd0FBZGpzQUFBRUhBUUU3VzBnQUFBRUxBUkJtQUFCQW4wWUFB
QUVIQVhjRUFBQkFhVWdBQUFFSEFiMW4KQUFBN2RFZ0FBQUVQQVM0QUFBQTdka2dBQUFFT0FTNEFB
QUE3ZUVnQUFBRVFBUzRBQUFBN2VrZ0FBQUVOQVM0QUFBQTdmRWdBQUFFUgpBUzRBQUFCQVEwZ0FB
QUVIQWNKbkFBQUFWSTg3QUFETE93QUFDb2d0QmdBQUFXRzlCZ0FBQ29ndEJnQUFZVkpLQUFBS2lC
Qm1BQUFkClZFb0FBQXFLTFFZQUFBQVpQUWdBQUVJSUFBQUJHaUJHQUFBRVZmOW1BQUFCQUU3b093
QUFJendBQUFFd0FSQWNBQUFBQUFBQU55QUEKQUFBQUFBQUJWak9mUmdBQUFUQUJkd1FBQU9BTkFB
QTBMRWdBQUFFd0Fla0dBQUFDa1JBenBFY0FBQUV3QVRFSkFBQVdEZ0FBTXpoSQpBQUFCTVFFdUFB
QUFUQTRBQURPNUZnQUFBVEVCWHdBQUFJUU9BQUJBUTBnQUFBRXhBUzBHQUFBOG9Gd0FBTEFDQUFB
Qk13RStzVndBCkFMb09BQUFBVHdBZEFBQUFBQUFBSlNBQUFBQUFBQUJCVUVnQUFBRTJBZWtHQUFB
RGtmaCtQSlJlQUFEZ0FnQUFBVG9CVUtkR0FBQUIKK09rR0FBQURrYmgvVFo5R0FBQUIrSGNFQUFE
eURnQUFUYVJIQUFBQitERUpBQUFWRHdBQVVjeEdBQUFCK3V0bEFBQTREd0FBQUFBQQphRE04QUFC
ZVBBQUFBZmdCWWFkR0FBQUIrT2tHQUFCaHBFY0FBQUg0TVFrQUFCM01SZ0FBQWZyclpRQUFZWjlH
QUFBQitIY0VBQUFBCkdXZ0lBQUJiQ0FBQUFSb2dSZ0FBQkZiL1pnQUFBUUFaa3dnQUFIUUlBQUFC
R2lCR0FBQUVWLzltQUFBQkFGTnZQQUFBcFR3QUFBRzIKQWVrR0FBQUJRTTlIQUFBQnRnSHBCZ0FB
UUZaS0FBQUJ0Z0V0QmdBQU96dEhBQUFCdUFFdUFBQUFPelJIQUFBQnVRRXVBQUFBTzJKSwpBQUFC
dWdIYlpRQUFBRlBJUEFBQUJ6MEFBQUZYQXY0R0FBQUJPelJIQUFBQlhRSXVBQUFBT3p0SEFBQUJY
QUl1QUFBQU80NEpBQUFCCllBTCtCZ0FBTzBKSEFBQUJZZ0ozQkFBQVFFOUhBQUFCVndMMFpnQUFR
SjlHQUFBQlZ3SjNCQUFBUUwwR0FBQUJWd0l0QmdBQU8zeEgKQUFBQlhnSXRCZ0FBQUZNZFBRQUFQ
VDBBQUFGUkFpNEFBQUFCTzlwR0FBQUJVd0lRWmdBQVFKOUdBQUFCVVFKM0JBQUFBRk5OUFFBQQpi
VDBBQUFGTEFpNEFBQUFCTzlwR0FBQUJUUUlRWmdBQVFKOUdBQUFCU3dKM0JBQUFBRk45UFFBQW56
MEFBQUllQVVnRUFBQUJRR3hLCkFBQUNIZ0V0QmdBQVFISktBQUFDSGdFdEJnQUFBRTZ6UFFBQUNq
NEFBQUZqQWNBSkFBQUFBQUFBa1E4QUFBQUFBQUFCVmtLc1JnQUEKQVdNQjRHVUFBQUVCUXJGR0FB
QUJaQUV1QUFBQUNBQUFBQUFBQU9BL1FKOUdBQUFCWXdGM0JBQUFRS2RHQUFBQll3SHBCZ0FBUUxw
RwpBQUFCWkFFeENRQUFRTUZHQUFBQlpBRmZBQUFBUU1oR0FBQUJaQUV4Q1FBQVQzTUxBQUFBQUFB
QTZRd0FBQUFBQUFBNnpFWUFBQUdICkFldGxBQUJ3QmdBQVQ0d0xBQUFBQUFBQVlRd0FBQUFBQUFB
d0Jsc0FBQVVNQUFBQUFBQUFNUXdBQUFBQUFBQUJpd0ZhRjFzQUFBT1IKdUg4OUkxc0FBQU9SMkg0
OUwxc0FBQU9Sd0g0K08xc0FBS1lHQUFBK1Ixc0FBTjRHQUFBQUFBQlBKUTBBQUFBQUFBRHlEUUFB
QUFBQQpBREFHV3dBQW13MEFBQUFBQUFESERRQUFBQUFBQUFHU0FWb1hXd0FBQTVHWWZ6NGpXd0FB
T0FZQUFEMHZXd0FBQTVIWWZqNDdXd0FBCk9RY0FBRDVIV3dBQWNRY0FBQUFBVC9zTkFBQUFBQUFB
ZHc4QUFBQUFBQUE2ekVZQUFBR1ZBZXRsQUFDVUJ3QUFUeFFPQUFBQUFBQUEKN3c0QUFBQUFBQUF3
QmxzQUFJME9BQUFBQUFBQXZBNEFBQUFBQUFBQm1RRmFGMXNBQUFPUitINCtJMXNBQUFFSEFBQTlM
MXNBQUFPUgo2SDQrTzFzQUFNb0hBQUErUjFzQUFPOEhBQUFBQUFBQVpTNCtBQUJsUGdBQUFjZitC
Z0FBRUcwQUFBQUFBQUFyY1FBQUFBQUFBQUZXClRUMUdBQUFCeDdsbEFBQkdTQUFBYWJ0SkFBQUIw
K2tHQUFBRGtiaC9hZHBHQUFBQjFSQm1BQUFEa2NoK2FjWkpBQUFCMXVrR0FBQUQKa2FoK1VkWkpB
QUFCeWVkN0FBQnBTQUFBVWY1SkFBQUJ6ZjE3QUFDTVNBQUFVUnBLQUFBQjFDNEFBQUN2U0FBQVVZ
NEpBQUFCMnY0RwpBQURuU0FBQVVaOUdBQUFCMzNjRUFBQWRTUUFBSFNoS0FBQUIxMUlGQUFBZE9V
b0FBQUhZTFFZQUFFYk5ZZ0FBd0FvQUFBSFhBRlNHClBnQUF4RDRBQUFwK1VnVUFBQUZocGtnQUFB
cCtVZ1VBQUdGU1NnQUFDbjRRWmdBQUhibEpBQUFLZ0ZJRkFBQUFHUmdJQUFBcENBQUEKQVJvZ1Jn
QUFCRlAvWmdBQUFRQVphd3NBQUN3S0FBQUJHaUJHQUFBREtJNWxBQUFCQUJuaVBnQUFDUWtBQUFF
YUlFWUFBQVJIbkNzQQpBQUVBRDVsQkFBQUVDMVVMUEQ4QUFBQUxUejhBQUFFTFpEOEFBQUlMZHo4
QUFBTUxpejhBQUFRTG5qOEFBQVVMc2o4QUFBWUx5VDhBCkFBY0wzejhBQUFnTDlUOEFBQWtMQzBB
QUFBb0xJa0FBQUFzTE9FQUFBQXdMU0VBQUFBMExYMEFBQUE0TGNVQUFBQThMaUVBQUFCQUwKbWtB
QUFCRUxxMEFBQUJJTHdFQUFBQk1MMWtBQUFCUUw3VUFBQUJVTENVRUFBQllMSTBFQUFCY0xQa0VB
QUJnTFdrRUFBQmtMYWtFQQpBQm9MZ1VFQUFCc0FEK0ZCQUFBRUFpY0xwVUVBQUFBTHRFRUFBQUVM
dzBFQUFBSUwwa0VBQUFNQUNnUUVFd3ZzUVFBQUFBc0tRZ0FBCkFRc2lRZ0FBQWdzNlFnQUFBd3RX
UWdBQUJBdDFRZ0FBQlF1UlFnQUFCZ3V5UWdBQUJ3dk1RZ0FBQ0F2dVFnQUFDUXNVUXdBQUNnczYK
UXdBQUN3dFVRd0FBREF0dFF3QUFEUXVGUXdBQURndWxRd0FBRHd2SFF3QUFFQXZpUXdBQUVRdjlR
d0FBRWdzZ1JBQUFFd3M2UkFBQQpGQXRaUkFBQUZRdDlSQUFBRmd1bVJBQUFGd3ZLUkFBQUdBdnhS
QUFBR1FzUFJRQUFHZ0FQWDBVQUFBUU1NUXN4UlFBQUFBdEdSUUFBCkFRQVB2RVVBQUFRTUtndHZS
UUFBQUF1SVJRQUFBUXVpUlFBQUFnQVBGMFlBQUFRTkVBdlFSUUFBQUF2ZlJRQUFBUXZ0UlFBQUFn
djgKUlFBQUF3c0tSZ0FBQkFBSEJnRUFBR3E2UHdBQVVBQUFBQUFBQUFDVkFBQUFBQUFBQUFGV05H
VUFBQzRnUmdBQUFlMEJpQ3NBQUFGRwpBQUFBTUMxakFBQlVBQUFBQUFBQUFGd0FBQUFBQUFBQUFm
QUJTZThEQUFCVUFBQUFBQUFBQUZ3QUFBQUFBQUFBQkVkS0JnUUFBRlFBCkFBQUFBQUFBWEFBQUFB
QUFBQUFGU2dBQUFBY2hDUUFBQmlwR0FBQUJCSk5sQUFBSG1XVUFBQU9lWlFBQU0wWUFBQUVOQmtw
R0FBQUIKQjY1bEFBQUR0R1VBQUZsR0FBQUJDQWM1QUFBQUFvWkdBQUFIQ0FQSlpRQUFtRVlBQUFr
cUh1a0dBQUFEOVdNQUFPRkJBQUFCS2luSgpaUUFBMFVZQUFBRkhBUWNRWmdBQUJCQm1BQUFlL0dV
QUFCOFFaZ0FBSGhCbUFBQU44a1lBQURBS0R4SGtSZ0FBTGdBQUFBb1FBaU1BCkFSSG1SZ0FBTGdB
QUFBb1FBaU1JQVJIb1JnQUFMZ0FBQUFvUUFpTVFBUkhxUmdBQUxnQUFBQW9RQWlNWUFSSHNSZ0FB
TGdBQUFBb1IKQWlNZ0FSSHZSZ0FBTGdBQUFBb1JBaU1vQVNIeVJnQUFDZzhCQVFFQkUvZGxBQUFC
QUNIeVJnQUFDZzhCQVFFQkUvZGxBQUFCRkFGbQpBQUFBSWZKR0FBQUtEd0VCQVFFVDkyVUFBQUVV
Qm1ZQUFBQWhCRWNBQUFvUEFRRUJBUlAzWlFBQUFRQWlGMGNBQU4wRUFBQUtEd3RtCkFBQUJBUUVC
RS9kbEFBQUJGQVptQUFBQUFBWmRSd0FBQVFUa1pnQUFCK3BtQUFBRDcyWUFBR3hIQUFBQnRRZjBC
Z0FBQTcxa0FBQmYKUlFBQUREVUQwbVFBQUx4RkFBQU1Md2NmWndBQURSWklBQUJRRERjUjVVY0FB
Q1lWQUFBTU9BSWpBQUVSN1VjQUFBUm5BQUFNT1FJagpCQUVSOGtjQUFBOW5BQUFNT2dJakNBRVIr
MGNBQUM0QUFBQU1Pd0lqRUFFUjRSRUFBQzRBQUFBTVBBSWpHQUVSQVVnQUFDNEFBQUFNClBRSWpJ
QUVSejBjQUFPa0dBQUFNUGdJaktBRVJDMGdBQUdvQUFBQU1Qd0lqU0FFaEZrZ0FBQXczQVFFQkFS
TWFad0FBQVFBQUF4OW4KQUFBV1NBQUFBVUllTGdBQUFCNHRCZ0FBYXJsRUFBQmdKd0FBQUFBQUFK
NG5BQUFBQUFBQUFWYmlad0FBTGlCR0FBQUJ6UUxyTkFBQQpBVmdVQUFBd0xXTUFBR1FuQUFBQUFB
QUFiQ2NBQUFBQUFBQUJ6d0pKN3dNQUFHUW5BQUFBQUFBQWJDY0FBQUFBQUFBRVIwb0dCQUFBClpD
Y0FBQUFBQUFCc0p3QUFBQUFBQUFWS0FBQUFhc1ZGQUFCQUxnQUFBQUFBQUg0dUFBQUFBQUFBQVZa
WGFBQUFMaUJHQUFBQi9RTDEKTkFBQUFZb1hBQUF3TFdNQUFFUXVBQUFBQUFBQVRDNEFBQUFBQUFB
Qi93Sko3d01BQUVRdUFBQUFBQUFBVEM0QUFBQUFBQUFFUjBvRwpCQUFBUkM0QUFBQUFBQUJNTGdB
QUFBQUFBQVZLQUFBQUJ6Y1ZBQUJxcWtnQUFKQTRBQUFBQUFBQXpqZ0FBQUFBQUFBQlZ0Rm9BQUF1
CklFWUFBQUZSQTJZMUFBQUI2QndBQURBTFdnQUFsRGdBQUFBQUFBQ2NPQUFBQUFBQUFBRlRBMGt0
WXdBQWxEZ0FBQUFBQUFDY09BQUEKQUFBQUFBUmxTZThEQUFDVU9BQUFBQUFBQUp3NEFBQUFBQUFB
QkVkS0JnUUFBSlE0QUFBQUFBQUFuRGdBQUFBQUFBQUZTZ0FBQUFBSAprQm9BQUFlRUdRQUFCaWhK
QUFBQkIwMXBBQUFEVTJrQUFDOUpBQUFCQ0dyNFNRQUFFRTBBQUFBQUFBQk9UUUFBQUFBQUFBRldm
bWtBCkFDNGdSZ0FBQWJJRCtqUUFBQUUvSkFBQU1DMWpBQUFVVFFBQUFBQUFBQnhOQUFBQUFBQUFB
YlFEU2U4REFBQVVUUUFBQUFBQUFCeE4KQUFBQUFBQUFCRWRLQmdRQUFCUk5BQUFBQUFBQUhFMEFB
QUFBQUFBRlNnQUFBR29FU3dBQUVGSUFBQUFBQUFBd1VnQUFBQUFBQUFGVwo4MmtBQUM0Z1JnQUFB
ZDBEL3pRQUFBSEdKUUFBTUMxakFBQVVVZ0FBQUFBQUFCeFNBQUFBQUFBQUFkOERTZThEQUFBVVVn
QUFBQUFBCkFCeFNBQUFBQUFBQUJFZEtCZ1FBQUJSU0FBQUFBQUFBSEZJQUFBQUFBQUFGU2dBQUFB
Y1BJZ0FBYWxOTkFBRHdXUUFBQUFBQUFDNWEKQUFBQUFBQUFBVlp0YWdBQUxpQkdBQUFCTUFUd05B
QUFBZW9wQUFBd0xXTUFBUFJaQUFBQUFBQUEvRmtBQUFBQUFBQUJNZ1JKN3dNQQpBUFJaQUFBQUFB
QUEvRmtBQUFBQUFBQUVSMG9HQkFBQTlGa0FBQUFBQUFEOFdRQUFBQUFBQUFWS0FBQUFCd2NsQUFC
cXNWQUFBQUJnCkFBQUFBQUFBUG1BQUFBQUFBQUFCVnVkcUFBQXVJRVlBQUFGbkJBUTFBQUFCbWk4
QUFEQXRZd0FBQkdBQUFBQUFBQUFNWUFBQUFBQUEKQUFGcEJFbnZBd0FBQkdBQUFBQUFBQUFNWUFB
QUFBQUFBQVJIU2dZRUFBQUVZQUFBQUFBQUFBeGdBQUFBQUFBQUJVb0FBQUFIM2l3QQpBR3UwVmdB
QUVEOEJBQUFBQUFBelB3RUFBQUFBQUFGV1lXc0FBREVnUmdBQUF4bUlLd0FBQVRJNkFBQkpBMVlB
QUJRL0FRQUFBQUFBCk1UOEJBQUFBQUFBREdVc1ZWZ0FBQVZVNkFBQkpuRkVBQUJRL0FRQUFBQUFB
TVQ4QkFBQUFBQUFER1Vtd0F3QUFJajhCQUFBQUFBQXgKUHdFQUFBQUFBQVJKU2NjREFBQWlQd0VB
QUFBQUFERS9BUUFBQUFBQUJXVTI0Z01BQUhnNkFBQUFBQUFBQUd1YlZnQUFRRDhCQUFBQQpBQUJ6
UHdFQUFBQUFBQUZXQUd3QUFERWdSZ0FBQXhtSUt3QUFBWnM2QUFCTXRGWUFBRWsvQVFBQUFBQUFj
ejhCQUFBQUFBQURHU3RzCkFBQXhJRVlBQUFNWmlDc0FBQUgwT2dBQU03bEpBQUFKRFFFQVdBQUFP
anNBQUVrRFZnQUFTVDhCQUFBQUFBQmxQd0VBQUFBQUFBTVoKTVNCR0FBQURHWWdyQUFBQjBUb0FB
RW1jVVFBQVNUOEJBQUFBQUFCbFB3RUFBQUFBQUFNWlNiQURBQUJYUHdFQUFBQUFBR1UvQVFBQQpB
QUFBQkVsSnh3TUFBRmMvQVFBQUFBQUFaVDhCQUFBQUFBQUZaVkcxU1FBQUJXVVpBUUFBRnpzQUFB
QUFBQUFBQUd2S1ZRQUEwRDhCCkFBQUFBQUR6UHdFQUFBQUFBQUZXNTJ3QUFERWdSZ0FBQXpmbU5B
QUFBYU03QUFCSjVGVUFBTlEvQVFBQUFBQUE4VDhCQUFBQUFBQUQKTjB2MlZRQUFBY1k3QUFCSkEx
WUFBTlEvQVFBQUFBQUE4VDhCQUFBQUFBQUROMG1jVVFBQTFEOEJBQUFBQUFEeFB3RUFBQUFBQUFN
WgpTYkFEQUFEaVB3RUFBQUFBQVBFL0FRQUFBQUFBQkVsSnh3TUFBT0kvQVFBQUFBQUE4VDhCQUFB
QUFBQUZaVkcxU1FBQUJXVVpBUUFBCjZUc0FBQUFBQUFBQUFHdXhWUUFBQUVBQkFBQUFBQUF6UUFF
QUFBQUFBQUZXcEcwQUFERWdSZ0FBQXpmbU5BQUFBUXc4QUFCTXlsVUEKQUFsQUFRQUFBQUFBTTBB
QkFBQUFBQUFETjg5dEFBQXhJRVlBQUFNMzVqUUFBQUZsUEFBQU03bEpBQUFKRFFFQVdBQUFxendB
QUVuawpWUUFBQ1VBQkFBQUFBQUFsUUFFQUFBQUFBQU0zTVNCR0FBQUROK1kwQUFBQlFqd0FBRWtE
VmdBQUNVQUJBQUFBQUFBbFFBRUFBQUFBCkFBTTNTWnhSQUFBSlFBRUFBQUFBQUNWQUFRQUFBQUFB
QXhsSnNBTUFBQmRBQVFBQUFBQUFKVUFCQUFBQUFBQUVTVW5IQXdBQUYwQUIKQUFBQUFBQWxRQUVB
QUFBQUFBVmxVYlZKQUFBRlpSa0JBQUNJUEFBQUFBQUFBQUFBQUFkNkR3QUFhMGhWQUFCUVFBRUFB
QUFBQUhOQQpBUUFBQUFBQUFWYW9iZ0FBTVNCR0FBQURET3MwQUFBQjhUd0FBRWxpVlFBQVZFQUJB
QUFBQUFCeFFBRUFBQUFBQUFNTVMzUlZBQUFCCkZEMEFBRW1jVVFBQVZFQUJBQUFBQUFCeFFBRUFB
QUFBQUFNTVNiQURBQUJpUUFFQUFBQUFBSEZBQVFBQUFBQUFCRWxKeHdNQUFHSkEKQVFBQUFBQUFj
VUFCQUFBQUFBQUZaVkcxU1FBQUJXVVpBUUFBTnowQUFBQUFBQUFBYXk5VkFBQ0FRQUVBQUFBQUFM
TkFBUUFBQUFBQQpBVlpOYndBQU1TQkdBQUFERE9zMEFBQUJXajBBQUV4SVZRQUFpVUFCQUFBQUFB
Q3pRQUVBQUFBQUFBTU1lRzhBQURFZ1JnQUFBd3pyCk5BQUFBYk05QUFBenVVa0FBQWtOQVFCWUFB
RDVQUUFBU1dKVkFBQ0pRQUVBQUFBQUFLVkFBUUFBQUFBQUF3d3hJRVlBQUFNTTZ6UUEKQUFHUVBR
QUFTWnhSQUFDSlFBRUFBQUFBQUtWQUFRQUFBQUFBQXd4SnNBTUFBSmRBQVFBQUFBQUFwVUFCQUFB
QUFBQUVTVW5IQXdBQQpsMEFCQUFBQUFBQ2xRQUVBQUFBQUFBVmxVYlZKQUFBRlpSa0JBQURXUFFB
QUFBQUFBQUFBYThaVUFBRGdRQUVBQUFBQUFBTkJBUUFBCkFBQUFBVlkwY0FBQU1TQkdBQUFEWnZV
MEFBQUJQejRBQUVuZ1ZBQUE1RUFCQUFBQUFBQUJRUUVBQUFBQUFBTm1TL0pVQUFBQllqNEEKQUVt
Y1VRQUE1RUFCQUFBQUFBQUJRUUVBQUFBQUFBTm1TYkFEQUFEeVFBRUFBQUFBQUFGQkFRQUFBQUFB
QkVsSnh3TUFBUEpBQVFBQQpBQUFBQVVFQkFBQUFBQUFGWlZHMVNRQUFCV1VaQVFBQWhUNEFBQUFB
QUFBQWE2MVVBQUFRUVFFQUFBQUFBRU5CQVFBQUFBQUFBVmJaCmNBQUFNU0JHQUFBRFp2VTBBQUFC
cUQ0QUFFekdWQUFBR1VFQkFBQUFBQUJEUVFFQUFBQUFBQU5tQkhFQUFERWdSZ0FBQTJiMU5BQUEK
QVFFL0FBQXp1VWtBQUFrTkFRQllBQUJIUHdBQVNlQlVBQUFaUVFFQUFBQUFBRFZCQVFBQUFBQUFB
Mll4SUVZQUFBTm05VFFBQUFIZQpQZ0FBU1p4UkFBQVpRUUVBQUFBQUFEVkJBUUFBQUFBQUEyWkpz
QU1BQUNkQkFRQUFBQUFBTlVFQkFBQUFBQUFFU1VuSEF3QUFKMEVCCkFBQUFBQUExUVFFQUFBQUFB
QVZsVWJWSkFBQUZaUmtCQUFBa1B3QUFBQUFBQUFBQWExMVVBQUJRUVFFQUFBQUFBSE5CQVFBQUFB
QUEKQVZiQWNRQUFNU0JHQUFBRFVtWTFBQUFCYWo4QUFFbDNWQUFBVkVFQkFBQUFBQUJ4UVFFQUFB
QUFBQU5TUzRsVUFBQUJqVDhBQUVtVwpWQUFBVkVFQkFBQUFBQUJ4UVFFQUFBQUFBQU5TU1p4UkFB
QlVRUUVBQUFBQUFIRkJBUUFBQUFBQUJHVkpzQU1BQUdKQkFRQUFBQUFBCmNVRUJBQUFBQUFBRVNV
bkhBd0FBWWtFQkFBQUFBQUJ4UVFFQUFBQUFBQVZsVWJWSkFBQUZaUmtCQUFDd1B3QUFBQUFBQUFB
QWEwUlUKQUFDQVFRRUFBQUFBQUxOQkFRQUFBQUFBQVZaOWNnQUFNU0JHQUFBRFVtWTFBQUFCMHo4
QUFFeGRWQUFBaVVFQkFBQUFBQUN6UVFFQQpBQUFBQUFOU3FISUFBREVnUmdBQUExSm1OUUFBQVN4
QUFBQXp1VWtBQUFrTkFRQllBQUJ5UUFBQVNYZFVBQUNKUVFFQUFBQUFBS1ZCCkFRQUFBQUFBQTFJ
eElFWUFBQU5TWmpVQUFBRUpRQUFBU1paVUFBQ0pRUUVBQUFBQUFLVkJBUUFBQUFBQUExSkpuRkVB
QUlsQkFRQUEKQUFBQXBVRUJBQUFBQUFBRVpVbXdBd0FBbDBFQkFBQUFBQUNsUVFFQUFBQUFBQVJK
U2NjREFBQ1hRUUVBQUFBQUFLVkJBUUFBQUFBQQpCV1ZSdFVrQUFBVmxHUUVBQUU5QUFBQUFBQUFB
QUFBQWF3dFVBQURBUVFFQUFBQUFBT05CQVFBQUFBQUFBVlo4Y3dBQU1TQkdBQUFECmVmbzBBQUFC
bFVBQUFFa2xWQUFBeEVFQkFBQUFBQURoUVFFQUFBQUFBQU41U3pkVUFBQUJ1RUFBQUVtY1VRQUF4
RUVCQUFBQUFBRGgKUVFFQUFBQUFBQU41U2JBREFBRFNRUUVBQUFBQUFPRkJBUUFBQUFBQUJFbEp4
d01BQU5KQkFRQUFBQUFBNFVFQkFBQUFBQUFGWlZHMQpTUUFBQldVWkFRQUEyMEFBQUFBQUFBQUFh
L0pUQUFEd1FRRUFBQUFBQUNOQ0FRQUFBQUFBQVZZaGRBQUFNU0JHQUFBRGVmbzBBQUFCCi9rQUFB
RXdMVkFBQStVRUJBQUFBQUFBalFnRUFBQUFBQUFONVRIUUFBREVnUmdBQUEzbjZOQUFBQVZkQkFB
QXp1VWtBQUFrTkFRQlkKQUFDZFFRQUFTU1ZVQUFENVFRRUFBQUFBQUJWQ0FRQUFBQUFBQTNreElF
WUFBQU41K2pRQUFBRTBRUUFBU1p4UkFBRDVRUUVBQUFBQQpBQlZDQVFBQUFBQUFBM2xKc0FNQUFB
ZENBUUFBQUFBQUZVSUJBQUFBQUFBRVNVbkhBd0FBQjBJQkFBQUFBQUFWUWdFQUFBQUFBQVZsClVi
VkpBQUFGWlJrQkFBQjZRUUFBQUFBQUFBQUFhN2xUQUFBd1FnRUFBQUFBQUZOQ0FRQUFBQUFBQVZZ
SWRRQUFNU0JHQUFBRGpQODAKQUFBQndFRUFBRW5UVXdBQU5FSUJBQUFBQUFCUlFnRUFBQUFBQUFP
TVMrVlRBQUFCNDBFQUFFbWNVUUFBTkVJQkFBQUFBQUJSUWdFQQpBQUFBQUFPTVNiQURBQUJDUWdF
QUFBQUFBRkZDQVFBQUFBQUFCRWxKeHdNQUFFSkNBUUFBQUFBQVVVSUJBQUFBQUFBRlpWRzFTUUFB
CkJXVVpBUUFBQmtJQUFBQUFBQUFBYTZCVEFBQmdRZ0VBQUFBQUFKTkNBUUFBQUFBQUFWYXRkUUFB
TVNCR0FBQURqUDgwQUFBQktVSUEKQUV5NVV3QUFhVUlCQUFBQUFBQ1RRZ0VBQUFBQUFBT00ySFVB
QURFZ1JnQUFBNHovTkFBQUFZSkNBQUF6dVVrQUFBa05BUUJZQUFESQpRZ0FBU2ROVEFBQnBRZ0VB
QUFBQUFJVkNBUUFBQUFBQUE0d3hJRVlBQUFPTS96UUFBQUZmUWdBQVNaeFJBQUJwUWdFQUFBQUFB
SVZDCkFRQUFBQUFBQTR4SnNBTUFBSGRDQVFBQUFBQUFoVUlCQUFBQUFBQUVTVW5IQXdBQWQwSUJB
QUFBQUFDRlFnRUFBQUFBQUFWbFViVkoKQUFBRlpSa0JBQUNsUWdBQUFBQUFBQUFBYXpkVEFBQ3dR
Z0VBQUFBQUFOTkNBUUFBQUFBQUFWYVVkZ0FBTVNCR0FBQURQdkEwQUFBQgpEa01BQUVsUlV3QUF0
RUlCQUFBQUFBRFJRZ0VBQUFBQUFBTStTMk5UQUFBQk1VTUFBRW1jVVFBQXRFSUJBQUFBQUFEUlFn
RUFBQUFBCkFBTStTYkFEQUFEQ1FnRUFBQUFBQU5GQ0FRQUFBQUFBQkVsSnh3TUFBTUpDQVFBQUFB
QUEwVUlCQUFBQUFBQUZaVkcxU1FBQUJXVVoKQVFBQVZFTUFBQUFBQUFBQWF4NVRBQURnUWdFQUFB
QUFBQk5EQVFBQUFBQUFBVlk1ZHdBQU1TQkdBQUFEUHZBMEFBQUJkME1BQUV3MwpVd0FBNlVJQkFB
QUFBQUFUUXdFQUFBQUFBQU0rWkhjQUFERWdSZ0FBQXo3d05BQUFBZEJEQUFBenVVa0FBQWtOQVFC
WUFBQVdSQUFBClNWRlRBQURwUWdFQUFBQUFBQVZEQVFBQUFBQUFBejR4SUVZQUFBTSs4RFFBQUFH
dFF3QUFTWnhSQUFEcFFnRUFBQUFBQUFWREFRQUEKQUFBQUF6NUpzQU1BQVBkQ0FRQUFBQUFBQlVN
QkFBQUFBQUFFU1VuSEF3QUE5MElCQUFBQUFBQUZRd0VBQUFBQUFBVmxVYlZKQUFBRgpaUmtCQUFE
elF3QUFBQUFBQUFBQWEyTlJBQUFnUXdFQUFBQUFBRU5EQVFBQUFBQUFBVllnZUFBQU1TQkdBQUFE
bkFRMUFBQUJPVVFBCkFFbDlVUUFBSkVNQkFBQUFBQUJCUXdFQUFBQUFBQU9jUzQ5UkFBQUJYRVFB
QUVtY1VRQUFKRU1CQUFBQUFBQkJRd0VBQUFBQUFBT2MKU2JBREFBQXlRd0VBQUFBQUFFRkRBUUFB
QUFBQUJFbEp4d01BQURKREFRQUFBQUFBUVVNQkFBQUFBQUFGWlZHMVNRQUFCV1VaQVFBQQpmMFFB
QUFBQUFBQUFhMHBSQUFCUVF3RUFBQUFBQUlOREFRQUFBQUFBQVZiRmVBQUFNU0JHQUFBRG5BUTFB
QUFCb2tRQUFFeGpVUUFBCldVTUJBQUFBQUFDRFF3RUFBQUFBQUFPYzhIZ0FBREVnUmdBQUE1d0VO
UUFBQWZ0RUFBQXp1VWtBQUFrTkFRQllBQUJCUlFBQVNYMVIKQUFCWlF3RUFBQUFBQUhWREFRQUFB
QUFBQTV3eElFWUFBQU9jQkRVQUFBSFlSQUFBU1p4UkFBQlpRd0VBQUFBQUFIVkRBUUFBQUFBQQpB
NXhKc0FNQUFHZERBUUFBQUFBQWRVTUJBQUFBQUFBRVNVbkhBd0FBWjBNQkFBQUFBQUIxUXdFQUFB
QUFBQVZsVWJWSkFBQUZaUmtCCkFBQWVSUUFBQUFBQUFBQUFCK2dzQUFBSDZDd0FBR3NCVVFBQWtF
TUJBQUFBQUFDV1F3RUFBQUFBQUFGV3Rua0FBREVnUmdBQUE2K1IKZVFBQUFXUkZBQUFBYTgxUUFB
Q2dRd0VBQUFBQUFLcERBUUFBQUFBQUFWYmllUUFBTVNCR0FBQURyNUY1QUFBQmgwVUFBRW5tVUFB
QQpwRU1CQUFBQUFBQ2xRd0VBQUFBQUFBT3ZNN2xKQUFBSkRRRUFXQUFBcWtVQUFBQUFhMnBYQUFB
Z1JBRUFBQUFBQUVORUFRQUFBQUFBCkFWWTJlZ0FBTVNCR0FBQURxbUUxQUFBQitFWUFBRW1FVndB
QUpFUUJBQUFBQUFCQlJBRUFBQUFBQUFPcVM1WlhBQUFCRzBjQUFFblQKVXdBQUpFUUJBQUFBQUFC
QlJBRUFBQUFBQUFPcVNaeFJBQUFrUkFFQUFBQUFBRUZFQVFBQUFBQUFBNHhKc0FNQUFESkVBUUFB
QUFBQQpRVVFCQUFBQUFBQUVTVW5IQXdBQU1rUUJBQUFBQUFCQlJBRUFBQUFBQUFWbFViVkpBQUFG
WlJrQkFBQStSd0FBQUFBQUFBQUFhMUZYCkFBQlFSQUVBQUFBQUFJTkVBUUFBQUFBQUFWYnplZ0FB
TVNCR0FBQURxbUUxQUFBQllVY0FBRXhxVndBQVdVUUJBQUFBQUFDRFJBRUEKQUFBQUFBT3FIbnNB
QURFZ1JnQUFBNnBoTlFBQUFicEhBQUF6dVVrQUFBa05BUUJZQUFBQVNBQUFTWVJYQUFCWlJBRUFB
QUFBQUhWRQpBUUFBQUFBQUE2b3hJRVlBQUFPcVlUVUFBQUdYUndBQVNkTlRBQUJaUkFFQUFBQUFB
SFZFQVFBQUFBQUFBNnBKbkZFQUFGbEVBUUFBCkFBQUFkVVFCQUFBQUFBQURqRW13QXdBQVowUUJB
QUFBQUFCMVJBRUFBQUFBQUFSSlNjY0RBQUJuUkFFQUFBQUFBSFZFQVFBQUFBQUEKQldWUnRVa0FB
QVZsR1FFQUFOMUhBQUFBQUFBQUFBQUFCd2sxQUFBRzMwa0FBQUVIM0hzQUFBUGlld0FBN1VrQUFB
RUlCZ05LQUFBQgpCL0o3QUFBRCtIc0FBQTFLQUFBQkNBZW1Ld0FBQUFFUkFTVU9Fd1VERGhFQkVB
WWJEdUYvREFBQUFpUUFBdzQrQ3dzTEFBQURGZ0JKCkV3TU9PZ3M3Q3dBQUJDWUFTUk1BQUFVMEFB
TU9TUk02Q3pzTEFBQUdFd0FERGp3TUFBQUhEd0JKRXdBQUNCVUFTUk1BQUFrUEFFa1QKQXc0QUFB
b0VBUXNMT2dzN0N3QUFDeWdBQXc0Y0RRQUFERGtCQXc0NkN6c0xBQUFORXdFRERnc0xPZ3M3Q3dB
QURpOEFTUk1ERGdBQQpEd1FCQXc0TEN6b0xPd3NBQUJBQ0FRTU9Dd3M2Q3pzTEFBQVJEUUFERGtr
VE9nczdDemdLTWdzQUFCSXVBUU1PT2dzN0N6d01Qd3d5CkN3QUFFd1VBU1JNMERBQUFGQVVBU1JN
QUFCVXVBWWRBRGdNT09nczdDMGtUUEF3L0RESUxBQUFXTGdHSFFBNEREam9MT3dzOEREOE0KTWdz
QUFCY3VBWWRBRGdNT09nczdDMGtUUEF3L0RESUxZd3dBQUJndUFJZEFEZ01PT2dzN0Mwa1RQQXcv
RERJTEFBQVpMZ0dIUUE1SApFeUFMQUFBYUJRQUREam9MT3d0SkV6UU1BQUFiTGdHSFFBNUhFMlFU
SUFzQUFCd0xBUUFBSFRRQUF3NDZDenNMU1JNQUFCNFFBRWtUCkFBQWZRZ0JKRXdBQUlCOEFTUk1k
RXdBQUlTNEJBdzQ2Q3pzTFBBdzBERDhNTWdzQUFDSXVBWWRBRGdNT09nczdDMGtUUEF3MEREOE0K
TWdzQUFDTUNBUjBUQXc0TEN6b0xPd3NBQUNRTkFBTU9TUk00Q2pJTE5Bd0FBQ1V1QVFNT09nczdD
MHdMVFFvOEREOE1NZ3NkRXdBQQpKaTRCaDBBT0F3NDZDenNMVEF0TkNqd01Qd3d5Q3gwVEFBQW5M
Z0dIUUE0RERqb0xPd3RKRTB3TFRRbzhERDhNTWdzZEV3QUFLQ1lBCkFBQXBGZ0JKRXdNT09nczdC
UUFBS2h3QVNSTTRDaklMQUFBckxnRXlDNGRBRGdNT09nczdDMGtUUEF3L0RBQUFMQzRCaDBBT1J4
TVIKQVJJQlFBcGtFeUFMQUFBdE5BQUREa2tUT2dzN0JRSUtBQUF1QlFBRERqb0xPd1ZKRXpRTUFn
WUFBQzhkQURFVEVRRVNBVmdMV1FVQQpBREFkQVRFVEVRRVNBVmdMV1FVQUFERUZBQU1PT2dzN0Mw
a1ROQXdDQmdBQU1pNEJoMEFPUnhNUkFSSUJRQXBrRXdBQU13VUFBdzQ2CkN6c0ZTUk1DQmdBQU5B
VUFBdzQ2Q3pzRlNSTUNDZ0FBTlFVQU1STUFBRFkwQURFVEFnWUFBRGNrQUFNT0N3cytDd0FBT0FF
QlNSTUEKQURraEFFa1RMd3NBQURvMEFBTU9PZ3M3QlVrVEFnWUFBRHMwQUFNT09nczdCVWtUQUFB
OEhRRXhFMVVHV0F0WkJRQUFQUVVBTVJNQwpDZ0FBUGdVQU1STUNCZ0FBUHk0Qk1ndUhRQTRERGpv
TE93dEpFMHdMVFFvOEREOE1IUk1BQUVBRkFBTU9PZ3M3QlVrVEFBQkJOQUFECkRqb0xPd1ZKRXdJ
S0FBQkNCUUFERGpvTE93VkpFeHdLQUFCRERRQUREa2tUT2dzN0N6OE1QQXd5Q3h3R0FBQkVMZ0VE
RGpvTE93dE0KQzAwS1BBdzBERDhNTWdzZEV3QUFSUzRCTWd1SFFBNEREam9MT3dzOEREOE1BQUJH
SFFBeEUxVUdXQXRaQ3dBQVJ3c0JWUVlBQUVnZApBVEVURVFFU0FWZ0xXUVZrRXdBQVNSMEJNUk1S
QVJJQldBdFpDd0FBU2gwQU1STVJBUklCV0F0WkN3QUFTd1VBTVJNMERBSUdBQUJNCkhRRXhFeEVC
RWdGWUMxa0xaQk1BQUUwRkFBTU9PZ3M3QzBrVEFnWUFBRTR1QVlkQURnTU9PZ3M3QlJFQkVnRkFD
Z0FBVHdzQkVRRVMKQVFBQVVBVUFBdzQ2Q3pzTFNSTUNDZ0FBVVRRQUF3NDZDenNMU1JNQ0JnQUFV
aTRCaDBBT0F3NDZDenNGSUFzQUFGTXVBWWRBRGdNTwpPZ3M3QlVrVElBc0FBRlF1QVlkQURnTU9P
Z3M3QzBrVElBc0FBRlUwQUFNT1NSTTZDenNMQWdvQUFGWTBBQU1PU1JNNkN6c0ZIQVlBCkFGY2hB
RWtUTHdVQUFGZzBBQU1PU1JNNkN6c0ZBZ3FIUUE0QUFGa0ZBQU1PT2dzN0JVa1ROQXdBQUZvMEFE
RVRBZ29BQUZzdUFZZEEKRGdNT09nczdDelFNUHd3OERHUVRBQUJjTGdHSFFBNEREam9MT3dVL0RD
QUxBQUJkTGdHSFFBNEREam9MT3dzMEREOE1BQUJlTGdHSApRQTVIRXdBQVh5NEJoMEFPQXc0NkN6
c0xOQXcvRER3TVpCTWdDd0FBWUM0QmgwQU9BdzQ2Q3pzTE5Bdy9ER1FUSUFzQUFHRUZBQU1PCk9n
czdDMGtUQUFCaUxnR0hRQTRERGpvTE93VkpFejhNSUFzQUFHTVBBQUFBWkM0QWgwQU9SeE1BQUdV
dUFZZEFEZ01PT2dzN0Mwa1QKRVFFU0FVQUtBQUJtTGdHSFFBNEREam9MT3dWSkV3QUFaeDBBTVJO
VkJsZ0xXUVVBQUdndUFZZEFEZ01PT2dzN0N5QUxBQUJwTkFBRApEam9MT3d0SkV3SUtBQUJxTGdF
eEV4RUJFZ0ZBQ21RVEFBQnJMZ0ZIRXhFQkVnRkFDbVFUQUFBQThCQUFBQUlBcFFJQUFBRUIrdzRO
CkFBRUJBUUVBQUFBQkFBQUJMMVZ6WlhKekwyRnNaWGhqYUhKcGMzUmxibk5sYmk5M1pXSnJhWFF2
U1c1MFpYSnVZV3d2VjJWaVMybDAKVTNsemRHVnRTVzUwWlhKbVlXTmxBQzlUZVhOMFpXMHZUR2xp
Y21GeWVTOUdjbUZ0WlhkdmNtdHpMMEZ3Y0d4cFkyRjBhVzl1VTJWeQpkbWxqWlhNdVpuSmhiV1Yz
YjNKckwwWnlZVzFsZDI5eWEzTXZRMjl5WlVkeVlYQm9hV056TG1aeVlXMWxkMjl5YXk5SVpXRmta
WEp6CkFDOVZjMlZ5Y3k5aGJHVjRZMmh5YVhOMFpXNXpaVzR2ZDJWaWEybDBMMDl3Wlc1VGIzVnlZ
MlV2VjJWaVMybDBRblZwYkdRdlVtVnMKWldGelpTOTFjM0l2Ykc5allXd3ZhVzVqYkhWa1pTOTNk
R1lBTDFWelpYSnpMMkZzWlhoamFISnBjM1JsYm5ObGJpOTNaV0pyYVhRdgpUM0JsYmxOdmRYSmpa
UzlYWldKTGFYUkNkV2xzWkM5U1pXeGxZWE5sTDBSbGNtbDJaV1JUYjNWeVkyVnpMMWRsWWt0cGRG
TjVjM1JsCmJVbHVkR1Z5Wm1GalpRQXZVM2x6ZEdWdEwweHBZbkpoY25rdlJuSmhiV1YzYjNKcmN5
OUJjSEJzYVdOaGRHbHZibE5sY25acFkyVnoKTG1aeVlXMWxkMjl5YXk5R2NtRnRaWGR2Y210ekww
TnZjbVZIY21Gd2FHbGpjeTVtY21GdFpYZHZjbXN2VUhKcGRtRjBaVWhsWVdSbApjbk1BQUZOb1lY
SmxaRTFsWkdsaFZVa3VZM0J3QUFFQUFFTkhSMlZ2YldWMGNua3VhQUFDQUFCVGFHRnlaV1JOWldS
cFlWVkpMbWdBCkFRQUFUV1ZrYVdGVlNTNW9BQUVBQUZKbGRHRnBibEIwY2k1b0FBTUFBRlI1Y0dW
VWNtRnBkSE11YUFBREFBQlNaV1pRZEhJdWFBQUQKQUFCTlpXUnBZVWx0WVdkbGN5NW9BQVFBQUVa
aGMzUk5ZV3hzYjJNdWFBQURBQUJEUjBGbVptbHVaVlJ5WVc1elptOXliUzVvQUFJQQpBRU5IUTI5
dWRHVjRkQzVvQUFJQUFFTkhVM1I1YkdVdWFBQUZBQUJEUjFCRVJsQmhaMlV1YUFBQ0FBQUFBQWtD
QUFBQUFBQUFBQUFECjd3TUJCQVVLQTlwOFNnUUJBNllEZ2dJM0U4Y0VCUW9EMm54S0JBRURwZ09D
QWpjVHl3b0lud2k3TVFQS2ZmSXZDSUVEc3dJSUxnUUQKQTdKODFnUUJBOUVEWm5iTEJRMEtUUVVB
QTd0OEFpa0JDSWNJZmdpRkNJZ0lnUWlCQ0lFSWZRaURDSVVEZWdnZ0FtOFNDRE1DYnhJSQpLZ0p2
RWdneEFtOFNDRFFDYnhJSUxRSnZFZ2d0QW04U0NDMENieElJS1FKdkVnZ3ZBbThTOVFKdkVnUDJB
OVlDZVJZS0FpMFRBaTBUCkEreDlBaVFCTDQ4SXV3T1ZBZ2hZQkFNRDZIc0laZ1FCQlNRRG1nUzZC
UUNEQWo4VEE2RitDSkFLQWlRVEF4aFlBakFUQW1BVEFtQVQKQWpBVW53STZEUUltR3E1V1BtZXRC
QUlEaG44Q2JnRUlrUVFCQS9rQUNDQUNNQlNmQTNJQ2pnRUJBeEFDSXdHUmd3UUNBLzkrQW00QgpD
SkVFQVFPQUFRZ2dBaXNVa2E1V1BtZXRCQUlEK0g0Q2JnRUl1d1FCQTRjQkNDQUNNeE9mQW40Vmd3
T29BUWp5Q21jRElaNEVBd29ECnYzc0lkQVFCQlFrRHdnUm1CUUF2QlFrSUZBUUNCUUFEczMwSUxn
UUJBODBDQ0t3RFlBaEtnd2pON2ZnRGVnSWxBUVVaQXhBSVNnVUEKeXNxREF3OElkSzRDZkJUSkFs
a1VBaklVclFJakZJTUlyd29JZFFJcEZRaExBN0YrQW5BQkFqUVRBaU1SZ3dJcEZXY0NNQk1DSXhI
egpBOHNCQXBZQkFRTzNmZ2prQWpBVEJSb0NJeEVGQUFoMUJBUURsbjBDc1FFQkJBRUR0UVRraEFR
REE1cDdBb0VCQVFRQkEra0VDRW9ECnRuMENNd0V2Q0RzSUx3UUVBNDUrQWtRQkJBRUR2Z1FDSndF
Q2VoUUQ1SHdDTGdIMG53SXdFNThFQXdPcGZnSXVBUVFCQS9FRUNDQXYKQ0lFQ0l4TUVCQU83ZXdL
TEFRRUVBUVBKQkt3RDEzNENVZ0VJdXpFRHluM3lMd2lCQTdNQ0NDNEVBd095Zk5ZRUFRUFJBM1FE
cFFGMApBa3NVdXdPcmZRZ1NDZ2lTMlorZkNCUFgxMHNDTFJOMnZZUGxBNXQvQ1BMMG53SXdFNThE
NFFBQ0xnR0RBMUVJRWdVTUNnTlNBam9CCkJRQURNUUkrQVFVTUEwOVlCUUFETVVvQ2J4TUMyQUlU
QWpBVUEwSElBOEFBUEFOQUFpSUJycDhDTUJPZkF6d0NMZ0hKclFJeEU4a0MKa0FFVWhBTldDSjRL
QWpNVEEzRzZBdndCRldXZkNPZUJDQ3NJSkFRS0EvdCtDSjcvQkFFRGhnR0NCQW9EK241SzVRUUJC
UXdEK0FBSQpJQVVBQXczSTlBVU1BM0dDQlFBREhRanlCUXdEWTRJRkFBTWRTZ0pQRXdJb0ZBTldD
Q0N1bndJd0U1OERKZ0l1QVlNRC9nSUkxZ3FSCm53Z2g4NjhLQWpJVUJBUURwbnNJeUFRQkJRa0Qz
QVJZQlFBdkJRa0NOaFFFQWdVQUErNThDQzRFQVFPU0F3aklDQlVEbUgvSXV3aVYKZ3dONkNNajRB
M3BLQlJrREVBaTZCUURLeW9NRDFRQUlkSzZnQW53VHlnSlpGTW5sQWpFVWhLMENJeFNEQ0tJRUJR
b0QrM3BLQkFFRApoUVdDQWpBVFNRUUZDZ1A3ZWtvRUFRT0ZCWUlDTUJOTkNnUFhmQUlwQVMrUENM
c0Rxd01JV0FJb0V3UFRmQUlrQVMrUENMc0RyUU1JCldBVUpDQ0lFQWdVQUE4WjhDRHdFQVFPNkF3
SWtBUVB6ZmdoS2d3ak43ZmdEZWdJbEFRVVpBeEFJZEFVQTlNcURBL29BQ0hTdENOZ0kKTUFKNkV3
SXFGTWtDUHhRSTVnSXRFd2d2NVFRQ0E2UjhBbzhCQVFRQkE5d0RDRW9FQWdPa2ZJSlpCQUVEMndP
UUFpc1Q1UVFDQTZKOApBb1VCQVFRQkE5NERDSFFFQWdPaWZJS0RCQUVEM1FPUUFqRVVnd2dWQ2dn
VEFpa1VBbXdVdTlvRUJRb0R5M3BLQkFFRHRRV0NBakFUClNRUUZDZ1BMZWtvRUFRTzFCWUlDTUJO
TkNnZ2hBOFY5QWxBQlRRTzRBcEFEeG4wSUlFd0R1UUx5c0FvSVFiNEtBNWg4QWlzQkw0OEkKdXdQ
cUF3aFlBNVY4Q05Zdmp3aTdBK3NEQ0ZnQ0xCTUZDUWd3QkFJRkFBT0hmQWdTQkFFRCtRTUl5QU8w
ZmdoS2d3aDV3ODREZWdJaQpBUVVaQXhDQ0JRQUlhTXFEQTdrQkNDQ3RDT1lEcm40Q1hnRzdDR3VE
QTNvSXlNNERla29GR1FNUUNKQUZBTXJLZ3dPK0FRaEtyZ0oyCkZBSXRFOGVFQ0o4SVp3aXRDQ0dF
QlRLRUJBUUZBQU9tZXRZRUFRVXlBOW9GckFVQWRRSmFFd0owRkFnd0FuWVRBallUQWp3VGhJTUkK
VFFvSWRRSXBGTHVEQkFJRHpuc0N1QUVCQ0pFRUFRT3hCQWdnQWlzVEFqVVRBNEo4Q0hRdkNEc0lM
d1ArQXdKRUFRUUVBNUI2Z2dRQgpBL01GZEFJeEZBSXhGTHNJVHdRRkNnUDNlVW9FQVFPSkJvSUNN
Qk5KQkFVS0EvZDVTZ1FCQTRrR2dnSXdFMDBLdXdJdEV3SXRFd0lqCkVNb0VBZ08zZXdnOEJBRUR5
QVRXQkFJRHVIdUNCQUVEeVFSWUJBSUR1SHVDQkFFRHlRU1FvZ1FFQ2dPTWVnaDBvTFZyQkFFRkpB
UHoKQmJvRkFFc0NNaFVJTHdOekNOWUNMeE1DT2hNQ0l4RDBBd3pJQTNNSVNnTU5nZ04weUFNTWdn
UUVBNFY2QWtVQmFIMXJCQUVEK1FWSwpBbU1UQW1jUmczTUlQUVU5QW1zVEJRQUlvQWh4aFFVOUF0
OEJFQVVBaEFqbEFpY1RBaW9SODhzQ2h3SVRBamNVZ3dLYkFSTUljL01DClRoU0Q1UU9xZkFLS0FR
RUtDQytFV3dpcmtxQUlOMDBDSXhVSXA1WUNKeE1JOHdJdUU0U3RBOGtEQ0hRS0E2NTdBaXNCTDQ4
SXV3UFQKQkFoWUFpY1RCUWtJTUFRQ0JRQURuM3NJUEFRQkErRUVBaVFCQTh4OUNFcURDTTN0K0FO
NkFpVUJCUmtERUFoMEJRRDB5b01Eb1FJSQpkSzBJNWdQR2ZRS1VBUUc3Q0pXREEzb0l5UGdEZWtv
RkdRTVE4Z1VBQ09iS2d3T21BZ2gwQ0xqMkFvUUNGQUo0RklSMUFvRUVGQWd3CkFud1VBbmtVQW44
VWhJTUlQd29DTXhNSU1BSXZGQUk0RXdJNkZBSXRGQUl0Rk1rSUpRUUZDZ09XZVVvRUFRUHFCb0lD
TUJOSkJBVUsKQTVaNVNnUUJBK29HZ2dJd0UwMEtBL0o2QWlnQkw0OEl1d09QQlFoWUFpd1RCUWtJ
TUFRQ0JRQUQ0M3BtQkFFRkNRT2RCWjRGQUFnOApDQlVDTmhNSTVnZ3Y4d0lyRTRNQ2VCTUlQZ0pt
RXdndmc0UUNiQlNEQTVwNkNCSUs4d0l2RXdpN3JZUUlJUUlqRkFQZ0JRaXNDZ2dUCkFpa1VBbXdV
dTlvRUJRb0Q2M2hLQkFFRGxRZUNDQ0V0QkFVS0ErdDRTZ1FCQTVVSGdnZ2hNUW9JV1FQbGV3SlFB
VTBEbUFTUUErWjcKbmt3RG1RVFdBK2Q3a0FPWkJMcStDcEVJNW9CT3NBb0R1SG9DS0FFdmp3aTdB
OG9GQ0ZnRHRYb0kxaStQQ0xzRHl3VUlXQVBOZVFqVwpMd2lCQTdRR0NDNENMQk1JTUFJc0V3SXNF
N3dDSkJXdUFsZ1RBakVUcm9NRkdBam5CUUFJZ3dJL0U0UUZNb1FFQkFVQUE4UjQxZ1FCCkJUSUR2
QWVzQlFCMUFsZ1RBbklVQWpZVENEQUNOUk1GT0FKREV3VUFBanNUaElNSVB3b0lTd0lwRkFJMUV3
T2llZ2gwTHdnN0NDOEUKQkFPT2ZnSkVBUVFCQTlJSFpnSXhGQUl4RkxzSVFRUUZDZ09ZZUVvRUFR
UG9CNElDTUJOSkJBVUtBNWg0U2dRQkErZ0hnZ0l3RTAwSwpTd09qZStRRGVicVJDRm9JUUlHakEy
d0lkRXhIVFFpT1ROTk4xZ1ByQkt6b0NnUHZlUUltQVMrUENMc0RrZ1lJV0FVSkNDSUVBZ1VBCkEr
RjVXQVFCQlFrRG53YXNCUUFJUEFnVkFqVVRBaU1VQ0tBQ0toT0V5UUxSQVJVQ01oU0RDSGNLQSs5
NEFpWUJMd2lCQTVJSENDNEkKSWdJK0ZBSXVGQUl4RXdJMkV3Sk1GQUpoRXdoMXJZUzdDRElFQlFv
RDRYZEtCQUVEbndpQ0FqQVRTUVFGQ2dQaGQwb0VBUU9mQ0lJQwpNQk5OQ2dPOWVRSXJBUytQQ0xz
RHhBWUlXQUluRXdVSkNEQUVBZ1VBQTY1NUNEd0VBUVBTQmdqSUNCVUQySHNDSXdHRENNMkRBM29J
CnlQZ0Rla29GR1FNUThnVUFDTHdJUG9NRGxRUUlkSzBDaGdFVUFpc1RBclFCRXdJakVZT0VoSFVD
WUJNRHluc0NoQUVCdXdpVmd3TjYKQ01qNEEzcEtCUmtERUFqa0JRREt5b01Eb2dRSWRLMElMd055
QWswQkF3NkNBM0xXQXc2Q0NCUUNQQk1DT3hPRWd3aE5DZ0l6RXdndwpBaThVQWpnVEFqb1VBaTBV
eWVjS0NKTUREQWlRTHdRSkE5eDRDQklFQlFPL2ZvSUVBUU9tQTRJRHZnVUNOd0VEQ2dpUVp3TVdD
QzVuCkEzRUlMbWNJTkdjRERRZ3Vad2cwWndnMFp3ZzBad1FKQTU5NENCSUVCUU8vZm9JRUFRT21B
d0kvQVFRREE4ZDhBamNCQkFFRGdRbWUKQkFRRG0zZldCQUVEM2dobUE4WUFrQVFFQTl0MldBUUJB
NmdKZEFRSkE1RjRDQzRFQlFPL2ZvSUVBUU8xQllJRDBBTUNNQUVFQ1FPOAplQWhLQkFVRHYzNkNC
QUVEaFFXQ0EvSURBakFCQkFrRHluZ0lkQVFGQTc5K2dnUUJBK2dIZ2dPV0FRSXdBUVFKQThONENI
UUVCUU8vCmZvSUVBUVBxQm9JRG9nSUNNQUVFQ1FPMWVBaDBCQVVEdjM2Q0JBRURsUWVDQS80QkND
QUVDUU91ZUFoMEJBVUR2MzZDQkFFRG53aUMKQS9zQUFqQUJCQWtEcDNnSWRBUUJBOVFGZ2dRREE4
dDVDTllFQVFQQkNKNERFd0tPQVFFS3JUQUVDUU9LZU5ZRUJRTy9mbGdFQVFPSgpCb0lEckFNQ01B
SFlBOGQzbmdwTEFpTVdDTUFDY1JNQ0t4TzdCU0FDY2hNRkFBSnlFd2l1QkFvRHFIOElnZ1FCQTkw
QUFqQUJDREFFCkNnT2dmL0lFQVFQZ0FBSW9BUUp2RXdLb0FSTUNUeE91QTJuSUF4cUNBaFVBQVFF
RUF3QUpBaEEvQVFBQUFBQUFBeGdCQkFRS0F6QksKQkFVREhOWUVBd08wZitUa0JBUUtBekNRQkFV
REhOWUVDUU9vQWRZRUJBTy9mZ2llQ2tvRUF3TlZBandCQ21ZREZwNEVCQW9ERWtvRQpCUU1jMWdR
REExTGs1QVFFQ2dNU2tBUUZBeHpXQkFrRHFBSFdCQU1Eclg0SW5ncG1BMUtlQkFRS0F6MUtCQVVE
SE5ZRUF3T25mK1RrCkJBUUtBejJRQkFVREhOWUVDUU9vQWRZRUJBUEFmZ2llQ2tvRUF3TVpDS3dF
QkFvRFkwb0VCUU1jMWdRRDVlUUVCQW9EWTVBRUJRTWMKMWdRSkE2Z0IxZ1FEQThWK0NKNEVCQW9E
ZDBvRUJRTWMxZ1FEQTIzazVBUUVDZ04za0FRRkF4eldCQWtEcUFIV0JBTUQ3SDRJbmdRRQpDZ05R
U2dRRkF4eldCQU1ERk9Ua0JBUUtBMUNRQkFVREhOWUVDUU9vQWRZRUF3UC9mZ2llQkFRS0E3MS9T
Z1FGQXh6V0JBTURKK1RrCkJBUUtBNzEva0FRRkF4eldCQWtEcUFIV0JBTURoMzhJbmdxNkE2cC9T
Z1FFQ2dNTFNnUUZBeHpXQkFNRFdlVGtCQVFLQXd1UUJBVUQKSE5ZRUNRT29BZFlFQXdPUGZ3aWVC
QVFLQTYxL1NnUUZBeHpXQkFNRE4rVGtCQVFLQTYxL2tBUUZBeHpXQkFrRHFBSFdCQU1Eb244SQpu
Z3BLdWdRSkNnUGVBRW9FQXdPaWZ5QUVCQU9hZjZ3S1NnUUZBeHpXQkFRRFpPVGtDcEFFQlFNYzFn
UUpBNmdCMWdRREE1MS9DSjRFCkJBb0RuMzlLQkFVREhOWUVBd1BGQU9Ua0JBUUtBNTkva0FRRkF4
eldCQWtEcUFIV0JBTURuMzhJbmdxNkFnSUFBUUVBQUFBQUFBQUEKQUVVQUFBQUFBQUFBQVFCVkFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBUlFBQUFBQUFBQUFCQUZVQUFBQUFBQUFBQUFB
QQpBQUFBQUFBQVVBQUFBQUFBQUFDVkFBQUFBQUFBQUFFQVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFD
Z0FBQUFBQUFBQUtrQUFBQUFBQUFBCkFRQlZxUUFBQUFBQUFBQXNBUUFBQUFBQUFBRUFVd0FBQUFB
QUFBQUFBQUFBQUFBQUFBQW1BUUFBQUFBQUFDd0JBQUFBQUFBQUFRQlQKQUFBQUFBQUFBQUFBQUFB
QUFBQUFBRUFCQUFBQUFBQUFWZ0VBQUFBQUFBQUJBRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFUQUVB
QUFBQQpBQUJtQVFBQUFBQUFBQUVBVUhvQkFBQUFBQUFBZndFQUFBQUFBQUFCQUZDVEFRQUFBQUFB
QUpnQkFBQUFBQUFBQVFCUXJBRUFBQUFBCkFBQ3hBUUFBQUFBQUFBRUFVTVVCQUFBQUFBQUF5Z0VB
QUFBQUFBQUJBRkRlQVFBQUFBQUFBT01CQUFBQUFBQUFBUUJRRUFJQUFBQUEKQUFBVkFnQUFBQUFB
QUFFQVVDa0NBQUFBQUFBQUxnSUFBQUFBQUFBQkFGQkNBZ0FBQUFBQUFFY0NBQUFBQUFBQUFRQlFX
d0lBQUFBQQpBQUJnQWdBQUFBQUFBQUVBVUhRQ0FBQUFBQUFBZVFJQUFBQUFBQUFCQUZEMkFnQUFB
QUFBQVBzQ0FBQUFBQUFBQVFCUWVBTUFBQUFBCkFBQjlBd0FBQUFBQUFBRUFVUG9EQUFBQUFBQUEv
d01BQUFBQUFBQUJBRkI4QkFBQUFBQUFBSUVFQUFBQUFBQUFBUUJRL2dRQUFBQUEKQUFBREJRQUFB
QUFBQUFFQVVBSUdBQUFBQUFBQUJ3WUFBQUFBQUFBQkFGQ0VCZ0FBQUFBQUFJa0dBQUFBQUFBQUFR
QlFCZ2NBQUFBQQpBQUFMQndBQUFBQUFBQUVBVUlnSEFBQUFBQUFBaWdjQUFBQUFBQUFCQUZBSENB
QUFBQUFBQUFjSUFBQUFBQUFBQVFCUUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFLMENBQUFBQUFBQTRR
SUFBQUFBQUFBQkFGNEFBQUFBQUFBQUFBQUFBQUFBQUFBQXVBSUFBQUFBQUFEVUFnQUEKQUFBQUFB
RUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQXZBd0FBQUFBQUFHTURBQUFBQUFBQUFRQmVBQUFBQUFB
QUFBQUFBQUFBQUFBQQpBRG9EQUFBQUFBQUFWZ01BQUFBQUFBQUJBRk1BQUFBQUFBQUFBQUFBQUFB
QUFBQUFzUU1BQUFBQUFBRGxBd0FBQUFBQUFBRUFYZ0FBCkFBQUFBQUFBQUFBQUFBQUFBQUM4QXdB
QUFBQUFBTmdEQUFBQUFBQUFBUUJUQUFBQUFBQUFBQUFBQUFBQUFBQUFBRE1FQUFBQUFBQUEKWndR
QUFBQUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBUGdRQUFBQUFBQUJhQkFBQUFBQUFBQUVB
VXdBQUFBQUFBQUFBQUFBQQpBQUFBQUFDMUJBQUFBQUFBQU9rRUFBQUFBQUFBQVFCZUFBQUFBQUFB
QUFBQUFBQUFBQUFBQU1BRUFBQUFBQUFBM0FRQUFBQUFBQUFCCkFGTUFBQUFBQUFBQUFBQUFBQUFB
QUFBQU53VUFBQUFBQUFCckJRQUFBQUFBQUFFQVhnQUFBQUFBQUFBQUFBQUFBQUFBQUFCQ0JRQUEK
QUFBQUFGNEZBQUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFMa0ZBQUFBQUFBQTdRVUFB
QUFBQUFBQkFGNEFBQUFBQUFBQQpBQUFBQUFBQUFBQUF4QVVBQUFBQUFBRGdCUUFBQUFBQUFBRUFV
d0FBQUFBQUFBQUFBQUFBQUFBQUFBQTdCZ0FBQUFBQUFHOEdBQUFBCkFBQUFBUUJlQUFBQUFBQUFB
QUFBQUFBQUFBQUFBRVlHQUFBQUFBQUFZZ1lBQUFBQUFBQUJBRk1BQUFBQUFBQUFBQUFBQUFBQUFB
QUEKdlFZQUFBQUFBQUR4QmdBQUFBQUFBQUVBWGdBQUFBQUFBQUFBQUFBQUFBQUFBQURJQmdBQUFB
QUFBT1FHQUFBQUFBQUFBUUJUQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUQ4SEFBQUFBQUFBY3djQUFB
QUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBU2djQUFBQUFBQUJtCkJ3QUFBQUFBQUFFQVV3
QUFBQUFBQUFBQUFBQUFBQUFBQUFDK0J3QUFBQUFBQVBJSEFBQUFBQUFBQVFCZUFBQUFBQUFBQUFB
QUFBQUEKQUFBQUFNa0hBQUFBQUFBQTVRY0FBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFB
QWdBZ0FBQUFBQUFDVENBQUFBQUFBQUFFQQpWWk1JQUFBQUFBQUFXZ2tBQUFBQUFBQUJBRjRBQUFB
QUFBQUFBQUFBQUFBQUFBQUFnQWdBQUFBQUFBQ1FDQUFBQUFBQUFBRUFWSkFJCkFBQUFBQUFBcndr
QUFBQUFBQUFCQUY4QUFBQUFBQUFBQUFBQUFBQUFBQUFBUEFrQUFBQUFBQUJLQ1FBQUFBQUFBQUVB
VUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFCT0NRQUFBQUFBQUZvSkFBQUFBQUFBQVFCZUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUdVTEFBQUFBQUFBYlFzQQpBQUFBQUFBQkFHRnRDd0FBQUFBQUFKRVBBQUFB
QUFBQUF3QjI2SDRBQUFBQUFBQUFBQUFBQUFBQUFBQUFmZ3NBQUFBQUFBQ01Dd0FBCkFBQUFBQUVB
VTJFTUFBQUFBQUFBYXd3QUFBQUFBQUFCQUZNQUFBQUFBQUFBQUFBQUFBQUFBQUFBMmdzQUFBQUFB
QURpQ3dBQUFBQUEKQUFFQVllSUxBQUFBQUFBQWtROEFBQUFBQUFBREFIYTRmZ0FBQUFBQUFBQUFB
QUFBQUFBQUFBQUZEQUFBQUFBQUFDd01BQUFBQUFBQQpBUUJoQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QTBOQUFBQUFBQUFGUTBBQUFBQUFBQUJBR01WRFFBQUFBQUFBSkVQQUFBQUFBQUFBd0IyCjhINEFB
QUFBQUFBQUFBQUFBQUFBQUFBQWNBMEFBQUFBQUFCNERRQUFBQUFBQUFFQVlYZ05BQUFBQUFBQWtR
OEFBQUFBQUFBREFIYlEKZmdBQUFBQUFBQUFBQUFBQUFBQUFBQUNiRFFBQUFBQUFBTUlOQUFBQUFB
QUFBUUJoQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlPQUFBQQpBQUFBRkE0QUFBQUFBQUFCQUZQdkRn
QUFBQUFBQVBrT0FBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUdvT0FBQUFBQUFBCmtR
OEFBQUFBQUFBREFIYmdmZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQ05EZ0FBQUFBQUFMY09BQUFBQUFB
QUFRQmhBQUFBQUFBQUFBQUEKQUFBQUFBQUFBS0FQQUFBQUFBQUFyQThBQUFBQUFBQUJBRlVBQUFB
QUFBQUFBQUFBQUFBQUFBQUFzQThBQUFBQUFBRElEd0FBQUFBQQpBQUVBVmNnUEFBQUFBQUFBTEJJ
QUFBQUFBQUFCQUZNQUFBQUFBQUFBQUFBQUFBQUFBQUFBc0E4QUFBQUFBQURGRHdBQUFBQUFBQUVB
ClZNVVBBQUFBQUFBQTBBOEFBQUFBQUFBQkFGN2REd0FBQUFBQUFDd1NBQUFBQUFBQUFRQmVBQUFB
QUFBQUFBQUFBQUFBQUFBQUFNZ1AKQUFBQUFBQUEwQThBQUFBQUFBQUJBRk1BQUFBQUFBQUFBQUFB
QUFBQUFBQUFKUkFBQUFBQUFBQXNFZ0FBQUFBQUFBRUFYZ0FBQUFBQQpBQUFBQUFBQUFBQUFBQUFs
RUFBQUFBQUFBTDhRQUFBQUFBQUFBUUJlQUFBQUFBQUFBQUFBQUFBQUFBQUFBSVVRQUFBQUFBQUFz
aEFBCkFBQUFBQUFCQUdPeUVBQUFBQUFBQUVRU0FBQUFBQUFBQXdCMjhINEFBQUFBQUFBQUFBQUFB
QUFBQUFBQW1CQUFBQUFBQUFDcEVBQUEKQUFBQUFBRUFZcWtRQUFBQUFBQUFSQklBQUFBQUFBQURB
SGI0ZmdBQUFBQUFBQUFBQUFBQUFBQUFBQUMvRUFBQUFBQUFBQ3dTQUFBQQpBQUFBQVFCZUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUw4UUFBQUFBQUFBTEJJQUFBQUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFB
QUFBQUFBCnh4QUFBQUFBQUFEbkVBQUFBQUFBQUFFQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFEcUVB
QUFBQUFBQUN3U0FBQUFBQUFBQVFCZkFBQUEKQUFBQUFBQUFBQUFBQUFBQUFGQVNBQUFBQUFBQWFC
SUFBQUFBQUFBQkFGVm9FZ0FBQUFBQUFMY1lBQUFBQUFBQUFRQmZ4eGdBQUFBQQpBQUNOR2dBQUFB
QUFBQUVBWHdBQUFBQUFBQUFBQUFBQUFBQUFBQUJRRWdBQUFBQUFBR1VTQUFBQUFBQUFBUUJVWlJJ
QUFBQUFBQUMzCkdBQUFBQUFBQUFFQVhzY1lBQUFBQUFBQWl4b0FBQUFBQUFBQkFGNEFBQUFBQUFB
QUFBQUFBQUFBQUFBQWFCSUFBQUFBQUFDbUVnQUEKQUFBQUFBRUFYOEVWQUFBQUFBQUE0QlVBQUFB
QUFBQUJBRjhBQUFBQUFBQUFBQUFBQUFBQUFBQUFhQklBQUFBQUFBQ21FZ0FBQUFBQQpBQUVBWHdB
QUFBQUFBQUFBQUFBQUFBQUFBQUJvRWdBQUFBQUFBS1lTQUFBQUFBQUFBUUJmQUFBQUFBQUFBQUFB
QUFBQUFBQUFBSFVUCkFBQUFBQUFBZlJNQUFBQUFBQUFCQUdGOUV3QUFBQUFBQUk4YUFBQUFBQUFB
QXdCMnlIMEFBQUFBQUFBQUFBQUFBQUFBQUFBQWpoTUEKQUFBQUFBQ2VFd0FBQUFBQUFBRUFZWjRU
QUFBQUFBQUFqeG9BQUFBQUFBQURBSGJBZlFBQUFBQUFBQUFBQUFBQUFBQUFBQUJ4RmdBQQpBQUFB
QUxjWUFBQUFBQUFBQVFCY3h4Z0FBQUFBQUFCekdnQUFBQUFBQUFFQVhBQUFBQUFBQUFBQUFBQUFB
QUFBQUFCeEZnQUFBQUFBCkFDWVhBQUFBQUFBQUFRQmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFIRVdB
QUFBQUFBQWZoWUFBQUFBQUFBQkFGd0FBQUFBQUFBQUFBQUEKQUFBQUFBQUFkUllBQUFBQUFBQitG
Z0FBQUFBQUFBRUFYd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUZGd0FBQUFBQUFDWVhBQUFBQUFBQQpB
UUJlQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVZQUFBQUFBQUFEeGdBQUFBQUFBQUJBRk0vR0FBQUFB
QUFBRWtZQUFBQUFBQUFBUUJUCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUd3WUFBQUFBQUFBZHhnQUFB
QUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBZHhnQUFBQUEKQUFDQ0dBQUFBQUFBQUFFQVh3
QUFBQUFBQUFBQUFBQUFBQUFBQUFBYUdnQUFBQUFBQUNFYUFBQUFBQUFBQVFCZkFBQUFBQUFBQUFB
QQpBQUFBQUFBQUFKQWFBQUFBQUFBQXBob0FBQUFBQUFBQkFGV21HZ0FBQUFBQUFBc2NBQUFBQUFB
QUFRQmZBQUFBQUFBQUFBQUFBQUFBCkFBQUFBSkFhQUFBQUFBQUFveG9BQUFBQUFBQUJBRlNqR2dB
QUFBQUFBUGNiQUFBQUFBQUFBUUJlQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUQwYkFBQUFBQUFBOXhz
QUFBQUFBQUFCQUY4QUFBQUFBQUFBQUFBQUFBQUFBQUFBZFJzQUFBQUFBQUQzR3dBQUFBQUFBQUVB
WGdBQQpBQUFBQUFBQUFBQUFBQUFBQUFDRkd3QUFBQUFBQUk4YkFBQUFBQUFBQVFCVHZ4c0FBQUFB
QUFESkd3QUFBQUFBQUFFQVV3QUFBQUFBCkFBQUFBQUFBQUFBQUFBQVFIQUFBQUFBQUFFVWNBQUFB
QUFBQUFRQlZSUndBQUFBQUFBQWxJQUFBQUFBQUFBRUFYQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFR
SEFBQUFBQUFBRUljQUFBQUFBQUFBUUJVUWh3QUFBQUFBQUFsSUFBQUFBQUFBQUVBWGdBQUFBQUFB
QUFBQUFBQQpBQUFBQUFBUUhBQUFBQUFBQUprY0FBQUFBQUFBQVFCam1Sd0FBQUFBQUFBM0lBQUFB
QUFBQUFNQWR0QjlBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQkFjQUFBQUFBQUFKeHdBQUFBQUFBQUJB
RkVuSEFBQUFBQUFBQ1VnQUFBQUFBQUFBUUJmQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUVVY0FBQUFB
QUFBbVJ3QUFBQUFBQUFCQUdPWkhBQUFBQUFBQURjZ0FBQUFBQUFBQXdCMjBIMEFBQUFBQUFBQUFB
QUFBQUFBQUFBQQpwaDBBQUFBQUFBQTNId0FBQUFBQUFBRUFYQUFBQUFBQUFBQUFBQUFBQUFBQUFB
Q1ZIZ0FBQUFBQUFEY2ZBQUFBQUFBQUFRQmVBQUFBCkFBQUFBQUFBQUFBQUFBQUFBTVVlQUFBQUFB
QUF6eDRBQUFBQUFBQUJBRlAvSGdBQUFBQUFBQWtmQUFBQUFBQUFBUUJUQUFBQUFBQUEKQUFBQUFB
QUFBQUFBQUVBZ0FBQUFBQUFBY3lBQUFBQUFBQUFCQUZWeklBQUFBQUFBQUpzakFBQUFBQUFBQVFC
Y0FBQUFBQUFBQUFBQQpBQUFBQUFBQUFFQWdBQUFBQUFBQWNDQUFBQUFBQUFBQkFGUndJQUFBQUFB
QUFJa2pBQUFBQUFBQUFRQmVBQUFBQUFBQUFBQUFBQUFBCkFBQUFBRUFnQUFBQUFBQUFYU0FBQUFB
QUFBQUJBR05kSUFBQUFBQUFBS0VqQUFBQUFBQUFBd0IyMkgwQUFBQUFBQUFBQUFBQUFBQUEKQUFB
QVFDQUFBQUFBQUFCVklBQUFBQUFBQUFFQVVWVWdBQUFBQUFBQThDSUFBQUFBQUFBQkFGL3dJZ0FB
QUFBQUFBd2pBQUFBQUFBQQpBUUJVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSE1nQUFBQUFBQUFpU01B
QUFBQUFBQUJBRndBQUFBQUFBQUFBQUFBQUFBQUFBQUFjeUFBCkFBQUFBQUFNSXdBQUFBQUFBQUVB
WEFBQUFBQUFBQUFBQUFBQUFBQUFBQUIvSUFBQUFBQUFBRllpQUFBQUFBQUFBd0IyMkgxV0lnQUEK
QUFBQUFJTWlBQUFBQUFBQUFRQmxneUlBQUFBQUFBQ2hJd0FBQUFBQUFBTUFkdGg5QUFBQUFBQUFB
QUFBQUFBQUFBQUFBS01oQUFBQQpBQUFBRENNQUFBQUFBQUFCQUdNQUFBQUFBQUFBQUFBQUFBQUFB
QUFBb3lFQUFBQUFBQUMzSVFBQUFBQUFBQUVBWXdBQUFBQUFBQUFBCkFBQUFBQUFBQUFER0lRQUFB
QUFBQUdvaUFBQUFBQUFBQVFCa0FBQUFBQUFBQUFBQUFBQUFBQUFBQU5naEFBQUFBQUFBRUNJQUFB
QUEKQUFBQkFHTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVRpSUFBQUFBQUFCV0lnQUFBQUFBQUFFQVpR
QUFBQUFBQUFBQUFBQUFBQUFBQUFCVwpJZ0FBQUFBQUFJTWlBQUFBQUFBQUFRQmxneUlBQUFBQUFB
Q2hJd0FBQUFBQUFBTUFkdGg5QUFBQUFBQUFBQUFBQUFBQUFBQUFBUGNpCkFBQUFBQUFBaVNNQUFB
QUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBRnlNQUFBQUFBQUFoSXdBQUFBQUFBQUVBVTFF
akFBQUEKQUFBQVd5TUFBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNDTUFBQUFBQUFD
NUl3QUFBQUFBQUFFQVZia2pBQUFBQUFBQQoxU01BQUFBQUFBQUJBRk1BQUFBQUFBQUFBQUFBQUFB
QUFBQUE4Q01BQUFBQUFBQUlKQUFBQUFBQUFBRUFWUWdrQUFBQUFBQUEvU1lBCkFBQUFBQUFCQUY4
QUFBQUFBQUFBQUFBQUFBQUFBQUFBOENNQUFBQUFBQUFGSkFBQUFBQUFBQUVBVkFVa0FBQUFBQUFB
L1NZQUFBQUEKQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFBQXpDUUFBQUFBQUFEOUpnQUFBQUFB
QUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFETQpKQUFBQUFBQUFJNGxBQUFBQUFBQUFRQlRBQUFB
QUFBQUFBQUFBQUFBQUFBQUFDd2xBQUFBQUFBQVZpVUFBQUFBQUFBQkFHTldKUUFBCkFBQUFBQlVu
QUFBQUFBQUFBd0IyOEg0QUFBQUFBQUFBQUFBQUFBQUFBQUFBUENVQUFBQUFBQUJOSlFBQUFBQUFB
QUVBWWswbEFBQUEKQUFBQUZTY0FBQUFBQUFBREFIYjRmZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQmpK
UUFBQUFBQUFQMG1BQUFBQUFBQUFRQmVBQUFBQUFBQQpBQUFBQUFBQUFBQUFBR01sQUFBQUFBQUEv
U1lBQUFBQUFBQUJBRjRBQUFBQUFBQUFBQUFBQUFBQUFBQUFheVVBQUFBQUFBQ0xKUUFBCkFBQUFB
QUVBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNPSlFBQUFBQUFBUDBtQUFBQUFBQUFBUUJUQUFBQUFB
QUFBQUFBQUFBQUFBQUEKQUNBbkFBQUFBQUFBWGljQUFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFB
QUFBQUFBSkNjQUFBQUFBQUJlSndBQUFBQUFBQUVBVlFBQQpBQUFBQUFBQUFBQUFBQUFBQUFCZ0p3
QUFBQUFBQUo0bkFBQUFBQUFBQVFCVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUtBbkFBQUFBQUFBCnVD
Y0FBQUFBQUFBQkFGVzRKd0FBQUFBQUFDY3RBQUFBQUFBQUFRQmVBQUFBQUFBQUFBQUFBQUFBQUFB
QUFLQW5BQUFBQUFBQXRTY0EKQUFBQUFBQUJBRlMxSndBQUFBQUFBUEVxQUFBQUFBQUFBUUJUQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQWNvQUFBQUFBQUFGU2dBQUFBQQpBQUFCQUZBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBa1NnQUFBQUFBQUNmS0FBQUFBQUFBQUVBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR3
CktBQUFBQUFBQVBFcUFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQVBBb0FBQUFBQUFB
a0NrQUFBQUFBQUFCQUZNQUFBQUEKQUFBQUFBQUFBQUFBQUFBQVVDa0FBQUFBQUFDREtRQUFBQUFB
QUFFQVk0TXBBQUFBQUFBQVB5MEFBQUFBQUFBREFIYlFmZ0FBQUFBQQpBQUFBQUFBQUFBQUFBQUJq
S1FBQUFBQUFBSGNwQUFBQUFBQUFBUUJpZHlrQUFBQUFBQUEvTFFBQUFBQUFBQU1BZHRoK0FBQUFB
QUFBCkFBQUFBQUFBQUFBQUFKQXBBQUFBQUFBQTdTa0FBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFB
QUFBQUFBQW1Da0FBQUFBQUFDL0tRQUEKQUFBQUFBRUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHRL
UUFBQUFBQUFDY3RBQUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQQpBTkVyQUFBQUFBQUFa
eXdBQUFBQUFBQUJBR0VBQUFBQUFBQUFBQUFBQUFBQUFBQUErQ3NBQUFBQUFBRE5MQUFBQUFBQUFB
RUFZZ0FBCkFBQUFBQUFBQUFBQUFBQUFBQURGTEFBQUFBQUFBQ2N0QUFBQUFBQUFBUUJoQUFBQUFB
QUFBQUFBQUFBQUFBQUFBT1VzQUFBQUFBQUEKSnkwQUFBQUFBQUFCQUdJQUFBQUFBQUFBQUFBQUFB
QUFBQUFBUUMwQUFBQUFBQUJSTFFBQUFBQUFBQUVBVlZFdEFBQUFBQUFBOXkwQQpBQUFBQUFBQkFG
TUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFDMEFBQUFBQUFCT0xRQUFBQUFBQUFFQVZFNHRBQUFBQUFB
QStTMEFBQUFBCkFBQUJBRjRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQzRBQUFBQUFBQStMZ0FBQUFB
QUFBRUFWUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUUKTGdBQUFBQUFBRDR1QUFBQUFBQUFBUUJWQUFB
QUFBQUFBQUFBQUFBQUFBQUFBRUF1QUFBQUFBQUFmaTRBQUFBQUFBQUJBRlVBQUFBQQpBQUFBQUFB
QUFBQUFBQUFBZ0M0QUFBQUFBQUFiTHdBQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQURt
TGdBQUFBQUFBT291CkFBQUFBQUFBQVFCaUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVdkFBQUFBQUFB
Q1M4QUFBQUFBQUFCQUdNQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUlDOEFBQUFBQUFBMkx3QUFBQUFB
QUFFQVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUx3QUFBQUFBQUZvdkFBQUFBQUFBQVFCVgpXaThB
QUFBQUFBQ0ROUUFBQUFBQUFBRUFYd0FBQUFBQUFBQUFBQUFBQUFBQUFBQkFMd0FBQUFBQUFGY3ZB
QUFBQUFBQUFRQlVWeThBCkFBQUFBQUNETlFBQUFBQUFBQUVBWGdBQUFBQUFBQUFBQUFBQUFBQUFB
QUNwTHdBQUFBQUFBTGN2QUFBQUFBQUFBUUJRQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFZd0FBQUFB
QUFBRkRBQUFBQUFBQUFCQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBaVRBQUFBQUFBQUNETlFBQQpB
QUFBQUFFQVhnQUFBQUFBQUFBQUFBQUFBQUFBQUFDSk1BQUFBQUFBQUlNMUFBQUFBQUFBQVFCZUFB
QUFBQUFBQUFBQUFBQUFBQUFBCkFJa3dBQUFBQUFBQWd6VUFBQUFBQUFBQkFGNEFBQUFBQUFBQUFB
QUFBQUFBQUFBQWlUQUFBQUFBQUFCQ01nQUFBQUFBQUFFQVhnQUEKQUFBQUFBQUFBQUFBQUFBQUFB
RGRNQUFBQUFBQUFBUXhBQUFBQUFBQUFRQmpCREVBQUFBQUFBQ2ROUUFBQUFBQUFBTUFkcEIvQUFB
QQpBQUFBQUFBQUFBQUFBQUFBQU8wd0FBQUFBQUFBK3pBQUFBQUFBQUFCQUdMN01BQUFBQUFBQUow
MUFBQUFBQUFBQXdCMm1IOEFBQUFBCkFBQUFBQUFBQUFBQUFBQUFFVEVBQUFBQUFBQnFNZ0FBQUFB
QUFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQVpNUUFBQUFBQUFEb3gKQUFBQUFBQUFBUUJRQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQTR5QUFBQUFBQUFOVElBQUFBQUFBQUJBR00xTWdBQUFBQUFBSjAx
QUFBQQpBQUFBQXdCMitINEFBQUFBQUFBQUFBQUFBQUFBQUFBQUhqSUFBQUFBQUFBc01nQUFBQUFB
QUFFQVlpd3lBQUFBQUFBQW5UVUFBQUFBCkFBQURBSGFBZndBQUFBQUFBQUFBQUFBQUFBQUFBQUJD
TWdBQUFBQUFBSU0xQUFBQUFBQUFBUUJlQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUVJeUFBQUFBQUFB
Z3pVQUFBQUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBU2pJQUFBQUFBQUJuTWdBQUFBQUFB
QUVBVUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFCcU1nQUFBQUFBQUpNMEFBQUFBQUFBQVFCVEFBQUFB
QUFBQUFBQUFBQUFBQUFBQUNJekFBQUFBQUFBCk1ETUFBQUFBQUFBQkFHSXdNd0FBQUFBQUFIQXpB
QUFBQUFBQUF3QjJvSDl3TXdBQUFBQUFBSFV6QUFBQUFBQUFBUUJpQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUpNMEFBQUFBQUFBZ3pVQUFBQUFBQUFCQUZNQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0RVQUFB
QUFBQUM0TlFBQQpBQUFBQUFFQVZiZzFBQUFBQUFBQVJ6Z0FBQUFBQUFBQkFGNEFBQUFBQUFBQUFB
QUFBQUFBQUFBQW9EVUFBQUFBQUFDMU5RQUFBQUFBCkFBRUFWTFUxQUFBQUFBQUFRemdBQUFBQUFB
QUJBRk1BQUFBQUFBQUFBQUFBQUFBQUFBQUF1RFVBQUFBQUFBQlROd0FBQUFBQUFBRUEKWG5vM0FB
QUFBQUFBelRjQUFBQUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBM2pVQUFBQUFBQUROTndB
QUFBQUFBQUVBVXdBQQpBQUFBQUFBQUFBQUFBQUFBQUFDdE5nQUFBQUFBQUQwM0FBQUFBQUFBQVFC
aEFBQUFBQUFBQUFBQUFBQUFBQUFBQURVM0FBQUFBQUFBClNUZ0FBQUFBQUFBQkFGOEFBQUFBQUFB
QUFBQUFBQUFBQUFBQVVEZ0FBQUFBQUFDT09BQUFBQUFBQUFFQVZRQUFBQUFBQUFBQUFBQUEKQUFB
QUFBQlVPQUFBQUFBQUFJNDRBQUFBQUFBQUFRQlZBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQTRBQUFB
QUFBQXpqZ0FBQUFBQUFBQgpBRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUEwRGdBQUFBQUFBQ3dPUUFB
QUFBQUFBRUFWQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1FPUUFBCkFBQUFBTEE1QUFBQUFBQUFBUUJp
QUFBQUFBQUFBQUFBQUFBQUFBQUFBSjA1QUFBQUFBQUFzRGtBQUFBQUFBQUJBR0VBQUFBQUFBQUEK
QUFBQUFBQUFBQUFBc0RrQUFBQUFBQURJT1FBQUFBQUFBQUVBVmNnNUFBQUFBQUFBa0RzQUFBQUFB
QUFCQUY4QUFBQUFBQUFBQUFBQQpBQUFBQUFBQXNEa0FBQUFBQUFERk9RQUFBQUFBQUFFQVZNVTVB
QUFBQUFBQWZVRUFBQUFBQUFBQkFGNEFBQUFBQUFBQUFBQUFBQUFBCkFBQUE5RGtBQUFBQUFBQUFP
Z0FBQUFBQUFBRUFZd0E2QUFBQUFBQUFHejBBQUFBQUFBQURBSGFRZlJzOUFBQUFBQUFBSXowQUFB
QUEKQUFBQkFHRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNqNEFBQUFBQUFBV1BnQUFBQUFBQUFFQVlo
WStBQUFBQUFBQWpVRUFBQUFBQUFBRApBSGJnZkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNRUVFBQUFB
QUFBS05CQUFBQUFBQUFBUUJWbzBFQUFBQUFBQURBUWdBQUFBQUFBQUVBClhzQkNBQUFBQUFBQXkw
SUFBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUFBQUFBQUFBQWtFRUFBQUFBQUFDZ1FRQUFBQUFBQUFF
QVlhQkIKQUFBQUFBQUE3a0VBQUFBQUFBQUNBSFpvN2tFQUFBQUFBQUFpUWdBQUFBQUFBQUVBWXlK
Q0FBQUFBQUFBTmtJQUFBQUFBQUFDQUhabwpOa0lBQUFBQUFBQlJRZ0FBQUFBQUFBRUFZMUZDQUFB
QUFBQUEyRUlBQUFBQUFBQUNBSFpvQUFBQUFBQUFBQUFBQUFBQUFBQUFBS3RCCkFBQUFBQUFBMEVJ
QUFBQUFBQUFCQUZNQUFBQUFBQUFBQUFBQUFBQUFBQUFBc0VFQUFBQUFBQURrUVFBQUFBQUFBQUVB
WWVSQkFBQUEKQUFBQTgwRUFBQUFBQUFBQ0FIWmc4MEVBQUFBQUFBRDNRUUFBQUFBQUFBRUFZUUFB
QUFBQUFBQUFBQUFBQUFBQUFBRENRUUFBQUFBQQpBT1JCQUFBQUFBQUFBUUJpNUVFQUFBQUFBQURZ
UWdBQUFBQUFBQUlBZGtnQUFBQUFBQUFBQUFBQUFBQUFBQUFBOTBFQUFBQUFBQUFpClFnQUFBQUFB
QUFFQVlTSkNBQUFBQUFBQTJFSUFBQUFBQUFBQ0FIWmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVkNB
QUFBQUFBQUlrSUEKQUFBQUFBQUJBR0lpUWdBQUFBQUFBTmhDQUFBQUFBQUFBZ0IyVUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUE2UWdBQUFBQUFBRVJDQUFBQQpBQUFBQVFCaFJFSUFBQUFBQUFEWVFnQUFB
QUFBQUFJQWRsZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQTRFSUFBQUFBQUFENlFnQUFBQUFBCkFBRUFW
ZnBDQUFBQUFBQUFWRXNBQUFBQUFBQUJBRjhBQUFBQUFBQUFBQUFBQUFBQUFBQUE0RUlBQUFBQUFB
RDNRZ0FBQUFBQUFBRUEKVlBkQ0FBQUFBQUFBVkVzQUFBQUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFB
QUFBQUFBU1VNQUFBQUFBQUJYUXdBQUFBQUFBQUVBVUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFEUVF3
QUFBQUFBQUZSTEFBQUFBQUFBQVFCZUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5CREFBQUFBQUFBClZF
c0FBQUFBQUFBQkFGNEFBQUFBQUFBQUFBQUFBQUFBQUFBQTBFTUFBQUFBQUFCVVN3QUFBQUFBQUFF
QVhnQUFBQUFBQUFBQUFBQUEKQUFBQUFBRFFRd0FBQUFBQUFPeEZBQUFBQUFBQUFRQmVBQUFBQUFB
QUFBQUFBQUFBQUFBQUFEQkVBQUFBQUFBQVkwUUFBQUFBQUFBQgpBR05qUkFBQUFBQUFBRzVMQUFB
QUFBQUFBd0IyNkh3QUFBQUFBQUFBQUFBQUFBQUFBQUFBUTBRQUFBQUFBQUJYUkFBQUFBQUFBQUVB
CllsZEVBQUFBQUFBQWJrc0FBQUFBQUFBREFIYndmQUFBQUFBQUFBQUFBQUFBQUFBQUFBQndSQUFB
QUFBQUFCZEdBQUFBQUFBQUFRQlQKQUFBQUFBQUFBQUFBQUFBQUFBQUFBSGhFQUFBQUFBQUFuMFFB
QUFBQUFBQUJBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFyMFVBQUFBQQpBQURmUlFBQUFBQUFBQUVB
WTk5RkFBQUFBQUFBYmtzQUFBQUFBQUFEQUhiZ2ZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDL1JRQUFB
QUFBCkFOTkZBQUFBQUFBQUFRQmkwMFVBQUFBQUFBQnVTd0FBQUFBQUFBTUFkdWg4QUFBQUFBQUFB
QUFBQUFBQUFBQUFBT3hGQUFBQUFBQUEKVkVzQUFBQUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFB
QUFBN0VVQUFBQUFBQUJVU3dBQUFBQUFBQUVBWGdBQUFBQUFBQUFBQUFBQQpBQUFBQUFEMFJRQUFB
QUFBQUJSR0FBQUFBQUFBQVFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJkR0FBQUFBQUFBMkVrQUFB
QUFBQUFCCkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFBQTJFa0FBQUFBQUFCVVN3QUFBQUFBQUFFQVV3
QUFBQUFBQUFBQUFBQUFBQUFBQUFCd1N3QUEKQUFBQUFJVkxBQUFBQUFBQUFRQlZoVXNBQUFBQUFB
REZUQUFBQUFBQUFBRUFYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQndTd0FBQUFBQQpBSUpMQUFBQUFB
QUFBUUJVZ2tzQUFBQUFBQURIVEFBQUFBQUFBQUVBWGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFWVEFB
QUFBQUFBTWxNCkFBQUFBQUFBQVFCZkFBQUFBQUFBQUFBQUFBQUFBQUFBQU5CTUFBQUFBQUFBRGsw
QUFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUEKQUFBQTFFd0FBQUFBQUFBT1RRQUFBQUFBQUFF
QVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVRRQUFBQUFBQUU1TkFBQUFBQUFBQVFCVgpBQUFBQUFB
QUFBQUFBQUFBQUFBQUFGQk5BQUFBQUFBQVowMEFBQUFBQUFBQkFGVm5UUUFBQUFBQUFGZFFBQUFB
QUFBQUFRQmZBQUFBCkFBQUFBQUFBQUFBQUFBQUFBRkJOQUFBQUFBQUFaRTBBQUFBQUFBQUJBRlJr
VFFBQUFBQUFBRmRRQUFBQUFBQUFBUUJlQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUxaTkFBQUFBQUFB
eEUwQUFBQUFBQUFCQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBazA0QUFBQUFBQUJYVUFBQQpBQUFB
QUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBd1VRQUFBQUFBQUVGUkFBQUFBQUFBQVFCVlFWRUFB
QUFBQUFEblVRQUFBQUFBCkFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQXdVUUFBQUFBQUFENVJB
QUFBQUFBQUFRQlVQbEVBQUFBQUFBRHBVUUFBQUFBQUFBRUEKWGdBQUFBQUFBQUFBQUFBQUFBQUFB
QUR3VVFBQUFBQUFBQkJTQUFBQUFBQUFBUUJWQUFBQUFBQUFBQUFBQUFBQUFBQUFBUFJSQUFBQQpB
QUFBRUZJQUFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUZJQUFBQUFBQUF3VWdBQUFB
QUFBQUVBVlFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBd1VnQUFBQUFBQUVaU0FBQUFBQUFBQVFCVlJs
SUFBQUFBQUFEWlVnQUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUEKQUFBQUFBQ2FVZ0FBQUFBQUFK
NVNBQUFBQUFBQUFRQmlBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRlNBQUFBQUFBQXRWSUFBQUFBQUFB
QgpBR0lBQUFBQUFBQUFBQUFBQUFBQUFBQUF5RklBQUFBQUFBRE1VZ0FBQUFBQUFBRUFZUUFBQUFB
QUFBQUFBQUFBQUFBQUFBRGdVZ0FBCkFBQUFBT2xTQUFBQUFBQUFBUUJWNlZJQUFBQUFBQUFhVXdB
QUFBQUFBQUVBVXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFnVXdBQUFBQUEKQURkVEFBQUFBQUFBQVFC
Vk4xTUFBQUFBQUFBVVdBQUFBQUFBQUFFQVh3QUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1V3QUFBQUFB
QURSVApBQUFBQUFBQUFRQlVORk1BQUFBQUFBQi9WUUFBQUFBQUFBRUFVMzlWQUFBQUFBQUFnMVVB
QUFBQUFBQUJBRldEVlFBQUFBQUFBQ3RZCkFBQUFBQUFBQXdCMm1IOEFBQUFBQUFBQUFBQUFBQUFB
QUFBQWhsTUFBQUFBQUFDVVV3QUFBQUFBQUFFQVVBQUFBQUFBQUFBQUFBQUEKQUFBQUFBRGpVd0FB
QUFBQUFQRlRBQUFBQUFBQUFRQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKdFVBQUFBQUFBQXgxUUFB
QUFBQUFBRApBSGF3ZjhkVUFBQUFBQUFBeTFRQUFBQUFBQUFCQUdJQUFBQUFBQUFBQUFBQUFBQUFB
QUFBd2xRQUFBQUFBQURlVkFBQUFBQUFBQUVBCllRQUFBQUFBQUFBQUFBQUFBQUFBQUFEVFZBQUFB
QUFBQU9KVUFBQUFBQUFBQVFCaTRsUUFBQUFBQUFEOFZBQUFBQUFBQUFNQWRyQi8KQWxVQUFBQUFB
QUMrVlFBQUFBQUFBQU1BZHJCL3ZsVUFBQUFBQUFBRVZ3QUFBQUFBQUFFQVlnQUFBQUFBQUFBQUFB
QUFBQUFBQUFDTApWUUFBQUFBQUFCUllBQUFBQUFBQUFRQmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFK
WlZBQUFBQUFBQVdWY0FBQUFBQUFBQkFGTUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFXVmNBQUFBQUFB
QVVXQUFBQUFBQUFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQXdXQUFBQUFBQUFFVlkKQUFBQUFB
QUFBUUJWUlZnQUFBQUFBQUNoV1FBQUFBQUFBQUVBVXdBQUFBQUFBQUFBQUFBQUFBQUFBQUF3V0FB
QUFBQUFBRUpZQUFBQQpBQUFBQVFCVVFsZ0FBQUFBQUFDbFdRQUFBQUFBQUFFQVhnQUFBQUFBQUFB
QUFBQUFBQUFBQUFCRldBQUFBQUFBQUwxWUFBQUFBQUFBCkFRQlQ1RmdBQUFBQUFBQXVXUUFBQUFB
QUFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQnJXQUFBQUFBQUFDNVpBQUFBQUFBQUFRQmUKQUFB
QUFBQUFBQUFBQUFBQUFBQUFBSjlZQUFBQUFBQUFwMWtBQUFBQUFBQUJBRjhBQUFBQUFBQUFBQUFB
QUFBQUFBQUFzRmtBQUFBQQpBQUR1V1FBQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUMw
V1FBQUFBQUFBTzVaQUFBQUFBQUFBUUJWQUFBQUFBQUFBQUFBCkFBQUFBQUFBQVBCWkFBQUFBQUFB
TGxvQUFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUZvQUFBQUFBQUFEV3dBQUFBQUEK
QUFFQVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBNVdnQUFBQUFBQUhSYUFBQUFBQUFBQVFCbGdsb0FB
QUFBQUFDU1dnQUFBQUFBQUFFQQpaUUFBQUFBQUFBQUFBQUFBQUFBQUFBQStXZ0FBQUFBQUFIUmFB
QUFBQUFBQUFRQm5nbG9BQUFBQUFBQ2FXZ0FBQUFBQUFBRUFad0FBCkFBQUFBQUFBQUFBQUFBQUFB
QUJUV2dBQUFBQUFBSFJhQUFBQUFBQUFBUUJrZ2xvQUFBQUFBQUNhV2dBQUFBQUFBQUVBWkt4YUFB
QUEKQUFBQXNGb0FBQUFBQUFBQkFHUUFBQUFBQUFBQUFBQUFBQUFBQUFBQVUxb0FBQUFBQUFCdVdn
QUFBQUFBQUFFQVpBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQlRXZ0FBQUFBQUFHNWFBQUFBQUFBQUFR
QmtBQUFBQUFBQUFBQUFBQUFBQUFBQUFGeGFBQUFBQUFBQWRGb0FBQUFBCkFBQUJBR2lDV2dBQUFB
QUFBSnBhQUFBQUFBQUFBUUJvQUFBQUFBQUFBQUFBQUFBQUFBQUFBR2hhQUFBQUFBQUFkRm9BQUFB
QUFBQUIKQUdhQ1dnQUFBQUFBQUpwYUFBQUFBQUFBQVFCbXJGb0FBQUFBQUFEV1dnQUFBQUFBQUFF
QVpnQUFBQUFBQUFBQUFBQUFBQUFBQUFCbwpXZ0FBQUFBQUFHNWFBQUFBQUFBQUFRQm1BQUFBQUFB
QUFBQUFBQUFBQUFBQUFHaGFBQUFBQUFBQWJsb0FBQUFBQUFBQkFHWUFBQUFBCkFBQUFBQUFBQUFB
QUFBQUFpbG9BQUFBQUFBQ2FXZ0FBQUFBQUFBRUFZNnhhQUFBQUFBQUE2Rm9BQUFBQUFBQUJBR01B
QUFBQUFBQUEKQUFBQUFBQUFBQUFBaWxvQUFBQUFBQUNhV2dBQUFBQUFBQUVBWXdBQUFBQUFBQUFB
QUFBQUFBQUFBQUNLV2dBQUFBQUFBSnBhQUFBQQpBQUFBQVFCakFBQUFBQUFBQUFBQUFBQUFBQUFB
QUpKYUFBQUFBQUFBbWxvQUFBQUFBQUFCQUdXc1dnQUFBQUFBQUxoYUFBQUFBQUFBCkFRQmxBQUFB
QUFBQUFBQUFBQUFBQUFBQUFKSmFBQUFBQUFBQW1sb0FBQUFBQUFBQkFHV3NXZ0FBQUFBQUFOSmFB
QUFBQUFBQUFRQmwKQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkphQUFBQUFBQUFtbG9BQUFBQUFBQUJB
R1VBQUFBQUFBQUFBQUFBQUFBQUFBQUFzRm9BQUFBQQpBQURTV2dBQUFBQUFBQUVBWkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUN3V2dBQUFBQUFBTFJhQUFBQUFBQUFBUUJrQUFBQUFBQUFBQUFBCkFBQUFB
QUFBQUxoYUFBQUFBQUFBMGxvQUFBQUFBQUFCQUdVQUFBQUFBQUFBQUFBQUFBQUFBQUFBdUZvQUFB
QUFBQUM4V2dBQUFBQUEKQUFFQVpRQUFBQUFBQUFBQUFBQUFBQUFBQUFEV1dnQUFBQUFBQU9SYUFB
QUFBQUFBQVFCbUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5aYQpBQUFBQUFBQTJsb0FBQUFBQUFBQkFH
WUFBQUFBQUFBQUFBQUFBQUFBQUFBQTZGb0FBQUFBQUFEMldnQUFBQUFBQUFFQVl3QUFBQUFBCkFB
QUFBQUFBQUFBQUFBRG9XZ0FBQUFBQUFPeGFBQUFBQUFBQUFRQmpBQUFBQUFBQUFBQUFBQUFBQUFB
QUFCQmJBQUFBQUFBQUpWc0EKQUFBQUFBQUJBRlVsV3dBQUFBQUFBSEJkQUFBQUFBQUFBUUJjQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQkJiQUFBQUFBQUFJbHNBQUFBQQpBQUFCQUZRaVd3QUFBQUFBQUNa
Y0FBQUFBQUFBQVFCZUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhSYkFBQUFBQUFBZ2xzQUFBQUFBQUFC
CkFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpsd0FBQUFBQUFCd1hRQUFBQUFBQUFFQVhnQUFBQUFB
QUFBQUFBQUFBQUFBQUFDUVhRQUEKQUFBQUFLVmRBQUFBQUFBQUFRQlZwVjBBQUFBQUFBQzJYd0FB
QUFBQUFBRUFYZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQ1FYUUFBQUFBQQpBS0pkQUFBQUFBQUFBUUJV
b2wwQUFBQUFBQUM0WHdBQUFBQUFBQUVBWHdBQUFBQUFBQUFBQUFBQUFBQUFBQUNUWGdBQUFBQUFB
TEpmCkFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQU1CZkFBQUFBQUFBL2w4QUFBQUFB
QUFCQUZVQUFBQUFBQUFBQUFBQUFBQUEKQUFBQXhGOEFBQUFBQUFEK1h3QUFBQUFBQUFFQVZRQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQVlBQUFBQUFBQUQ1Z0FBQUFBQUFBQVFCVgpBQUFBQUFBQUFBQUFB
QUFBQUFBQUFFQmdBQUFBQUFBQVdtQUFBQUFBQUFBQkFGVmFZQUFBQUFBQUFITm1BQUFBQUFBQUFR
QmRBQUFBCkFBQUFBQUFBQUFBQUFBQUFBRUJnQUFBQUFBQUFWMkFBQUFBQUFBQUJBRlJYWUFBQUFB
QUFBSGhsQUFBQUFBQUFBUUJlQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUtsZ0FBQUFBQUFBdDJBQUFB
QUFBQUFCQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU1dFQUFBQUFBQUFvWXdBQQpBQUFBQUFFQVhn
QUFBQUFBQUFBQUFBQUFBQUFBQUFCSllRQUFBQUFBQUNoakFBQUFBQUFBQVFCZUFBQUFBQUFBQUFB
QUFBQUFBQUFBCkFLbGhBQUFBQUFBQTFtRUFBQUFBQUFBQkFHUFdZUUFBQUFBQUFJMW1BQUFBQUFB
QUF3QjI0SDRBQUFBQUFBQUFBQUFBQUFBQUFBQUEKdVdFQUFBQUFBQUROWVFBQUFBQUFBQUVBWXMx
aEFBQUFBQUFBaldZQUFBQUFBQUFEQUhib2ZnQUFBQUFBQUFBQUFBQUFBQUFBQUFEagpZUUFBQUFB
QUFBMWlBQUFBQUFBQUFRQlREV0lBQUFBQUFBQ05aZ0FBQUFBQUFBTUFkdkIrQUFBQUFBQUFBQUFB
QUFBQUFBQUFBT05oCkFBQUFBQUFBRFdJQUFBQUFBQUFCQUZNTllnQUFBQUFBQUNCbUFBQUFBQUFB
QXdCMjhINGdaZ0FBQUFBQUFITm1BQUFBQUFBQUFRQlQKQUFBQUFBQUFBQUFBQUFBQUFBQUFBUEpo
QUFBQUFBQUFFbUlBQUFBQUFBQUJBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGV0lBQUFBQQpBQUJ6
WmdBQUFBQUFBQUVBWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUNsWXdBQUFBQUFBT1JqQUFBQUFBQUFB
UUJoQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFCbEFBQUFBQUFBTFdVQUFBQUFBQUFCQUdNdFpRQUFB
QUFBQUkxbUFBQUFBQUFBQXdCMjRINEFBQUFBQUFBQUFBQUEKQUFBQUFBQUFFR1VBQUFBQUFBQWta
UUFBQUFBQUFBRUFZaVJsQUFBQUFBQUFqV1lBQUFBQUFBQURBSGJvZmdBQUFBQUFBQUFBQUFBQQpB
QUFBQUFBNlpRQUFBQUFBQUNCbUFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUVKbEFB
QUFBQUFBYldVQUFBQUFBQUFCCkFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWVHVUFBQUFBQUFCelpn
QUFBQUFBQUFFQVhnQUFBQUFBQUFBQUFBQUFBQUFBQUFCN1pnQUEKQUFBQUFJMW1BQUFBQUFBQUFR
QmVBQUFBQUFBQUFBQUFBQUFBQUFBQUFIdG1BQUFBQUFBQWlXWUFBQUFBQUFBQkFGNEFBQUFBQUFB
QQpBQUFBQUFBQUFBQUFrR1lBQUFBQUFBQ2xaZ0FBQUFBQUFBRUFWYVZtQUFBQUFBQUF1R2NBQUFB
QUFBQUJBRndBQUFBQUFBQUFBQUFBCkFBQUFBQUFBa0dZQUFBQUFBQUNpWmdBQUFBQUFBQUVBVktK
bUFBQUFBQUFBdW1jQUFBQUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUEKQUFBQU5XY0FBQUFBQUFD
OFp3QUFBQUFBQUFFQVh3QUFBQUFBQUFBQUFBQUFBQUFBQUFEQVp3QUFBQUFBQUFkb0FBQUFBQUFB
QVFCVgpZV2dBQUFBQUFBQXVhUUFBQUFBQUFBRUFWY1JwQUFBQUFBQUEwR2tBQUFBQUFBQUJBRlhU
YVFBQUFBQUFBUEpwQUFBQUFBQUFBUUJWClFtb0FBQUFBQUFCSGFnQUFBQUFBQUFFQVZacHFBQUFB
QUFBQW4yb0FBQUFBQUFBQkFGWHlhZ0FBQUFBQUFQZHFBQUFBQUFBQUFRQlYKU21zQUFBQUFBQUJQ
YXdBQUFBQUFBQUVBVllSckFBQUFBQUFBaVdzQUFBQUFBQUFCQUZYY2F3QUFBQUFBQU9GckFBQUFB
QUFBQVFCVgpBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQm5BQUFBQUFBQXpXY0FBQUFBQUFBQkFGVE5a
d0FBQUFBQUFOOXBBQUFBQUFBQUFRQmY3V2tBCkFBQUFBQUFsYkFBQUFBQUFBQUVBWHdBQUFBQUFB
QUFBQUFBQUFBQUFBQURRWndBQUFBQUFBSTVvQUFBQUFBQUFBUUJlam1nQUFBQUEKQUFDVGFBQUFB
QUFBQUFFQVU1Tm9BQUFBQUFBQXAyZ0FBQUFBQUFBQkFGNm5hQUFBQUFBQUFLeG9BQUFBQUFBQUFR
QlRyR2dBQUFBQQpBQURBYUFBQUFBQUFBQUVBWHNCb0FBQUFBQUFBeFdnQUFBQUFBQUFCQUZQRmFB
QUFBQUFBQU5sb0FBQUFBQUFBQVFCZTJXZ0FBQUFBCkFBRGVhQUFBQUFBQUFBRUFVOTVvQUFBQUFB
QUE4bWdBQUFBQUFBQUJBRjd5YUFBQUFBQUFBUGRvQUFBQUFBQUFBUUJUOTJnQUFBQUEKQUFBTGFR
QUFBQUFBQUFFQVhndHBBQUFBQUFBQUVHa0FBQUFBQUFBQkFGTVFhUUFBQUFBQUFNUnBBQUFBQUFB
QUFRQmV4R2tBQUFBQQpBQURUYVFBQUFBQUFBQUVBVTlOcEFBQUFBQUFBMkdrQUFBQUFBQUFCQUY3
dGFRQUFBQUFBQUVCcUFBQUFBQUFBQVFCZVFHb0FBQUFBCkFBQkNhZ0FBQUFBQUFBRUFVMEpxQUFB
QUFBQUFsV29BQUFBQUFBQUJBRjZWYWdBQUFBQUFBSnBxQUFBQUFBQUFBUUJUbW1vQUFBQUEKQUFE
dGFnQUFBQUFBQUFFQVh1MXFBQUFBQUFBQThtb0FBQUFBQUFBQkFGUHlhZ0FBQUFBQUFFVnJBQUFB
QUFBQUFRQmVSV3NBQUFBQQpBQUJLYXdBQUFBQUFBQUVBVTBwckFBQUFBQUFBZjJzQUFBQUFBQUFC
QUY1L2F3QUFBQUFBQUlSckFBQUFBQUFBQVFCVGhHc0FBQUFBCkFBRFhhd0FBQUFBQUFBRUFYdGRy
QUFBQUFBQUEzR3NBQUFBQUFBQUJBRlBjYXdBQUFBQUFBQ1ZzQUFBQUFBQUFBUUJlQUFBQUFBQUEK
QUFBQUFBQUFBQUFBQUE5b0FBQUFBQUFBWVdnQUFBQUFBQUFCQUZNQUFBQUFBQUFBQUFBQUFBQUFB
QUFBRDJnQUFBQUFBQUJoYUFBQQpBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBMmFRQUFB
QUFBQU1ScEFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBCkFEWnBBQUFBQUFBQXhHa0FB
QUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFBQXhHa0FBQUFBQUFES2FRQUFBQUFBQUFFQVV3
QUEKQUFBQUFBQUFBQUFBQUFBQUFBRGNhUUFBQUFBQUFOOXBBQUFBQUFBQUFRQmZBQUFBQUFBQUFB
QUFBQUFBQUFBQUFOOXBBQUFBQUFBQQo2V2tBQUFBQUFBQUJBRjRBQUFBQUFBQUFBQUFBQUFBQUFB
QUErbWtBQUFBQUFBQkNhZ0FBQUFBQUFBRUFVd0FBQUFBQUFBQUFBQUFBCkFBQUFBQUQ2YVFBQUFB
QUFBRUpxQUFBQUFBQUFBUUJUQUFBQUFBQUFBQUFBQUFBQUFBQUFBRTlxQUFBQUFBQUFtbW9BQUFB
QUFBQUIKQUZNQUFBQUFBQUFBQUFBQUFBQUFBQUFBVDJvQUFBQUFBQUNhYWdBQUFBQUFBQUVBVXdB
QUFBQUFBQUFBQUFBQUFBQUFBQUNuYWdBQQpBQUFBQVBKcUFBQUFBQUFBQVFCVEFBQUFBQUFBQUFB
QUFBQUFBQUFBQUtkcUFBQUFBQUFBOG1vQUFBQUFBQUFCQUZNQUFBQUFBQUFBCkFBQUFBQUFBQUFB
QS8yb0FBQUFBQUFCS2F3QUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFEL2FnQUFBQUFB
QUVwckFBQUEKQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFGZHJBQUFBQUFBQWhHc0FBQUFB
QUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpWMnNBQUFBQUFBQ0Vhd0FBQUFBQUFBRUFVd0FB
QUFBQUFBQUFBQUFBQUFBQUFBQ1Jhd0FBQUFBQUFOeHJBQUFBQUFBQUFRQlRBQUFBCkFBQUFBQUFB
QUFBQUFBQUFBSkZyQUFBQUFBQUEzR3NBQUFBQUFBQUJBRk1BQUFBQUFBQUFBQUFBQUFBQUFBQUE2
V3NBQUFBQUFBQWwKYkFBQUFBQUFBQUVBVXdBQUFBQUFBQUFBQUFBQUFBQUFBQURwYXdBQUFBQUFB
Q1ZzQUFBQUFBQUFBUUJUQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUtCc0FBQUFBQUFBdTJ3QUFBQUFB
QUFCQUZVR2JRQUFBQUFBQUFodEFBQUFBQUFBQVFCVkFBQUFBQUFBQUFBQUFBQUFBQUFBCkFNQnNB
QUFBQUFBQUNHMEFBQUFBQUFBQkFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdHd0FBQUFBQUFBSWJR
QUFBQUFBQUFFQVVBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQVFQd0VBQUFBQUFDcy9BUUFBQUFBQUFR
QlZBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUS9BUUFBQUFBQQpKajhCQUFBQUFBQUJBRlVBQUFBQUFB
QUFBQUFBQUFBQUFBQUFKajhCQUFBQUFBQXhQd0VBQUFBQUFBRUFWUUFBQUFBQUFBQUFBQUFBCkFB
QUFBQUJBUHdFQUFBQUFBRWsvQVFBQUFBQUFBUUJWU1Q4QkFBQUFBQUJ6UHdFQUFBQUFBQUVBVXdB
QUFBQUFBQUFBQUFBQUFBQUEKQUFCSlB3RUFBQUFBQUdVL0FRQUFBQUFBQVFCVEFBQUFBQUFBQUFB
QUFBQUFBQUFBQUVrL0FRQUFBQUFBY3o4QkFBQUFBQUFCQUZNQQpBQUFBQUFBQUFBQUFBQUFBQUFB
QVd6OEJBQUFBQUFCbFB3RUFBQUFBQUFFQVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFCbFB3RUFBQUFB
CkFHMC9BUUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQS9BUUFBQUFBQXRqOEJBQUFB
QUFBQkFGVUFBQUFBQUFBQUFBQUEKQUFBQUFBQUF3RDhCQUFBQUFBRElQd0VBQUFBQUFBRUFWUUFB
QUFBQUFBQUFBQUFBQUFBQUFBRFFQd0VBQUFBQUFPcy9BUUFBQUFBQQpBUUJWQUFBQUFBQUFBQUFB
QUFBQUFBQUFBTlEvQVFBQUFBQUE1ajhCQUFBQUFBQUJBRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUE1
ajhCCkFBQUFBQUR4UHdFQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFFQUFBQUFB
QWxBQVFBQUFBQUFBUUJWQ1VBQkFBQUEKQUFBelFBRUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFB
QUFBQUFBSlFBRUFBQUFBQUNWQUFRQUFBQUFBQVFCVEFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBbEFB
UUFBQUFBQU0wQUJBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUcwQUJBQUFBQUFBbFFB
RUFBQUFBCkFBRUFWUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWxRQUVBQUFBQUFDMUFBUUFBQUFBQUFR
QlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQkEKQVFBQUFBQUFTRUFCQUFBQUFBQUJBRlVBQUFBQUFB
QUFBQUFBQUFBQUFBQUFVRUFCQUFBQUFBQnJRQUVBQUFBQUFBRUFWUUFBQUFBQQpBQUFBQUFBQUFB
QUFBQUJVUUFFQUFBQUFBR1pBQVFBQUFBQUFBUUJWQUFBQUFBQUFBQUFBQUFBQUFBQUFBR1pBQVFB
QUFBQUFjVUFCCkFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0VBQkFBQUFBQUNKUUFF
QUFBQUFBQUVBVllsQUFRQUFBQUFBczBBQkFBQUEKQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFB
QWlVQUJBQUFBQUFDbFFBRUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFDSgpRQUVBQUFB
QUFMTkFBUUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFKdEFBUUFBQUFBQXBVQUJBQUFB
QUFBQkFGVUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFwVUFCQUFBQUFBQ3RRQUVBQUFBQUFBRUFVd0FB
QUFBQUFBQUFBQUFBQUFBQUFBREFRQUVBQUFBQUFOWkEKQVFBQUFBQUFBUUJWQUFBQUFBQUFBQUFB
QUFBQUFBQUFBT0JBQVFBQUFBQUErMEFCQUFBQUFBQUJBRlVBQUFBQUFBQUFBQUFBQUFBQQpBQUFB
NUVBQkFBQUFBQUQyUUFFQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUQyUUFFQUFBQUFB
QUZCQVFBQUFBQUFBUUJWCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQkFRQUFBQUFBR1VFQkFBQUFB
QUFCQUZVWlFRRUFBQUFBQUVOQkFRQUFBQUFBQVFCVEFBQUEKQUFBQUFBQUFBQUFBQUFBQUFCbEJB
UUFBQUFBQU5VRUJBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdVRUJBQUFBQUFCRApR
UUVBQUFBQUFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQXJRUUVBQUFBQUFEVkJBUUFBQUFBQUFR
QlZBQUFBQUFBQUFBQUFBQUFBCkFBQUFBRFZCQVFBQUFBQUFQVUVCQUFBQUFBQUJBRk1BQUFBQUFB
QUFBQUFBQUFBQUFBQUFVRUVCQUFBQUFBQnJRUUVBQUFBQUFBRUEKVlFBQUFBQUFBQUFBQUFBQUFB
QUFBQUJVUVFFQUFBQUFBR1pCQVFBQUFBQUFBUUJWQUFBQUFBQUFBQUFBQUFBQUFBQUFBR1pCQVFB
QQpBQUFBY1VFQkFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0VFQkFBQUFBQUNKUVFF
QUFBQUFBQUVBVllsQkFRQUFBQUFBCnMwRUJBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFB
QWlVRUJBQUFBQUFDbFFRRUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUEKQUFBQUFBQ0pRUUVBQUFB
QUFMTkJBUUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFKdEJBUUFBQUFBQXBVRUJBQUFB
QUFBQgpBRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFwVUVCQUFBQUFBQ3RRUUVBQUFBQUFBRUFVd0FB
QUFBQUFBQUFBQUFBQUFBQUFBREFRUUVBCkFBQUFBTnRCQVFBQUFBQUFBUUJWQUFBQUFBQUFBQUFB
QUFBQUFBQUFBTVJCQVFBQUFBQUExa0VCQUFBQUFBQUJBRlVBQUFBQUFBQUEKQUFBQUFBQUFBQUFB
MWtFQkFBQUFBQURoUVFFQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUR3UVFFQUFBQUFB
UGxCQVFBQQpBQUFBQVFCVitVRUJBQUFBQUFBalFnRUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFB
QUFBQUFENVFRRUFBQUFBQUJWQ0FRQUFBQUFBCkFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFQbEJB
UUFBQUFBQUkwSUJBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUMwSUIKQUFBQUFBQVZR
Z0VBQUFBQUFBRUFWUUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZRZ0VBQUFBQUFCMUNBUUFBQUFBQUFR
QlRBQUFBQUFBQQpBQUFBQUFBQUFBQUFBREJDQVFBQUFBQUFTMElCQUFBQUFBQUJBRlVBQUFBQUFB
QUFBQUFBQUFBQUFBQUFORUlCQUFBQUFBQkdRZ0VBCkFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFB
QUFBQUJHUWdFQUFBQUFBRkZDQVFBQUFBQUFBUUJWQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUdCQ0FR
QUFBQUFBYVVJQkFBQUFBQUFCQUZWcFFnRUFBQUFBQUpOQ0FRQUFBQUFBQVFCVEFBQUFBQUFBQUFB
QUFBQUFBQUFBQUdsQwpBUUFBQUFBQWhVSUJBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFB
QWFVSUJBQUFBQUFDVFFnRUFBQUFBQUFFQVV3QUFBQUFBCkFBQUFBQUFBQUFBQUFBQjdRZ0VBQUFB
QUFJVkNBUUFBQUFBQUFRQlZBQUFBQUFBQUFBQUFBQUFBQUFBQUFJVkNBUUFBQUFBQWpVSUIKQUFB
QUFBQUJBRk1BQUFBQUFBQUFBQUFBQUFBQUFBQUFvRUlCQUFBQUFBQ3VRZ0VBQUFBQUFBRUFWUUFB
QUFBQUFBQUFBQUFBQUFBQQpBQUN3UWdFQUFBQUFBTXRDQVFBQUFBQUFBUUJWQUFBQUFBQUFBQUFB
QUFBQUFBQUFBTFJDQVFBQUFBQUF4a0lCQUFBQUFBQUJBRlVBCkFBQUFBQUFBQUFBQUFBQUFBQUFB
eGtJQkFBQUFBQURSUWdFQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQURnUWdFQUFBQUEK
QU9sQ0FRQUFBQUFBQVFCVjZVSUJBQUFBQUFBVFF3RUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFB
QUFBQUFEcFFnRUFBQUFBQUFWRApBUUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFPbENB
UUFBQUFBQUUwTUJBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBCkFBQUErMElCQUFBQUFBQUZR
d0VBQUFBQUFBRUFWUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZRd0VBQUFBQUFBMURBUUFBQUFBQUFR
QlQKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JEQVFBQUFBQUFPME1CQUFBQUFBQUJBRlVBQUFBQUFB
QUFBQUFBQUFBQUFBQUFKRU1CQUFBQQpBQUEyUXdFQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFB
QUFBQUEyUXdFQUFBQUFBRUZEQVFBQUFBQUFBUUJWQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUZCREFR
QUFBQUFBV1VNQkFBQUFBQUFCQUZWWlF3RUFBQUFBQUlOREFRQUFBQUFBQVFCVEFBQUFBQUFBQUFB
QUFBQUEKQUFBQUFGbERBUUFBQUFBQWRVTUJBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFB
QVdVTUJBQUFBQUFDRFF3RUFBQUFBQUFFQQpVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQnJRd0VBQUFB
QUFIVkRBUUFBQUFBQUFRQlZBQUFBQUFBQUFBQUFBQUFBQUFBQUFIVkRBUUFBCkFBQUFmVU1CQUFB
QUFBQUJBRk1BQUFBQUFBQUFBQUFBQUFBQUFBQUFrRU1CQUFBQUFBQ1dRd0VBQUFBQUFBRUFWUUFB
QUFBQUFBQUEKQUFBQUFBQUFBQUNnUXdFQUFBQUFBS3BEQVFBQUFBQUFBUUJWQUFBQUFBQUFBQUFB
QUFBQUFBQUFBS1JEQVFBQUFBQUFxa01CQUFBQQpBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFB
c0VNQkFBQUFBQURMUXdFQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUMwClF3RUFBQUFB
QU1aREFRQUFBQUFBQVFCVkFBQUFBQUFBQUFBQUFBQUFBQUFBQU1aREFRQUFBQUFBMFVNQkFBQUFB
QUFCQUZVQUFBQUEKQUFBQUFBQUFBQUFBQUFBQTRFTUJBQUFBQUFEcFF3RUFBQUFBQUFFQVZlbERB
UUFBQUFBQUUwUUJBQUFBQUFBQkFGTUFBQUFBQUFBQQpBQUFBQUFBQUFBQUE2VU1CQUFBQUFBQUZS
QUVBQUFBQUFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBRHBRd0VBQUFBQUFCTkVBUUFBCkFBQUFB
UUJUQUFBQUFBQUFBQUFBQUFBQUFBQUFBUHREQVFBQUFBQUFCVVFCQUFBQUFBQUJBRlVBQUFBQUFB
QUFBQUFBQUFBQUFBQUEKQlVRQkFBQUFBQUFOUkFFQUFBQUFBQUVBVXdBQUFBQUFBQUFBQUFBQUFB
QUFBQUFnUkFFQUFBQUFBRHRFQVFBQUFBQUFBUUJWQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUNSRUFR
QUFBQUFBTmtRQkFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBTmtRQkFBQUFBQUJCClJB
RUFBQUFBQUFFQVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFCUVJBRUFBQUFBQUZsRUFRQUFBQUFBQVFC
VldVUUJBQUFBQUFDRFJBRUEKQUFBQUFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQlpSQUVBQUFB
QUFIVkVBUUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQQpBRmxFQVFBQUFBQUFnMFFCQUFB
QUFBQUJBRk1BQUFBQUFBQUFBQUFBQUFBQUFBQUFhMFFCQUFBQUFBQjFSQUVBQUFBQUFBRUFWUUFB
CkFBQUFBQUFBQUFBQUFBQUFBQUIxUkFFQUFBQUFBSDFFQVFBQUFBQUFBUUJUQUFBQUFBQUFBQUFB
QUFBQUFBQUFBSkJFQVFBQUFBQUEKbmtRQkFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFB
RUcwQUFBQUFBQUEzYlFBQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBc2JRQUFBQUFB
QUJaeEFBQUFBQUFBQVFCZUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVkdEFBQUFBQUFBRG5FQUFBQUFB
QUFCCkFGOEFBQUFBQUFBQUFBQUFBQUFBQUFBQTZHMEFBQUFBQUFEd2JRQUFBQUFBQUFFQVlmQnRB
QUFBQUFBQUszRUFBQUFBQUFBREFIYW8KZlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFYndBQUFBQUFB
QXh4QUFBQUFBQUFBUUJkREhFQUFBQUFBQUFPY1FBQUFBQUFBQUVBVXdBQQpBQUFBQUFBQUFBQUFB
QUFBQUFCUWJ3QUFBQUFBQUE1eEFBQUFBQUFBQVFCY0FBQUFBQUFBQUFBQUFBQUFBQUFBQU1RQ0FB
QUNBQUFBCkFBQU9mQUFBT0FRQUFFaGhjMmhVWVdKc1pVUmxiR1YwWldSV1lXeDFaVlI1Y0dVQVBR
a0FBRTFsWkdsaFUyaGhjbVZrVlVsSmJXRm4KWlVWc1pXMWxiblFBQmdFQUFGSmxkR0ZwYmxCMGNq
eERSMHhoZVdWeUlDbytBQWtIQUFCTlpXUnBZVlZKUld4bGJXVnVkQURvTEFBQQpUV1ZrYVdGVGFH
RnlaV1JWU1VOdmJuUnliMnh6QUI5bkFBQkRSMFp2WTNWelVtbHVaMU4wZVd4bEFQVmpBQUJEUjFK
bFkzUkZaR2RsCkFKc0VBQUJEUjFCdmFXNTBBS1lyQUFCTlpXUnBZVU52Ym5SeWIyeHpBTkprQUFC
RFIwWnZZM1Z6VW1sdVowOXlaR1Z5YVc1bkFGRUcKQUFCRFIxSmxZM1FBdldRQUFFTkhSbTlqZFhO
U2FXNW5WR2x1ZEFDVkp3QUFUV1ZrYVdGVGFHRnlaV1JWU1VaMWJHeFRZM0psWlc1VwpiMngxYldW
VGJHbGtaWElBZGdVQUFFTkhVMmw2WlFDRUR3QUFUV1ZrYVdGVGFHRnlaV1JWU1VORFNXMWhaMlZG
YkdWdFpXNTBBQmcxCkFBQk5aV1JwWVZOb1lYSmxaRlZKUm5Wc2JGTmpjbVZsYmxadmJIVnRaVk5z
YVdSbGNsUm9kVzFpUld4bGJXVnVkQUNhR2dBQVRXVmsKYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVs
VTJ4cFpHVnlBQU1nQUFCTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5QUJCbQpBQUJE
UjBGbVptbHVaVlJ5WVc1elptOXliUUQzQUFBQVFXUnZjSFJPVTFSaFp3Q09HUUFBVFdWa2FXRlZT
VlJwYldWc2FXNWxVMnhwClpHVnlBRUVWQUFCTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRi
R2xrWlhKVWFIVnRZa1ZzWlcxbGJuUUFFU1VBQUUxbFpHbGgKVTJoaGNtVmtWVWxXYjJ4MWJXVlRi
R2xrWlhKQ1lXTnJaM0p2ZFc1a1JXeGxiV1Z1ZEFBWklnQUFUV1ZrYVdGVGFHRnlaV1JWU1Zadgpi
SFZ0WlZOc2FXUmxjbFJvZFcxaVJXeGxiV1Z1ZEFEb0FBQUFRV1J2Y0hSRFJsUmhad0JsRVFBQVRX
VmthV0ZUYUdGeVpXUlZTVUpoClkydG5jbTkxYm1SRmJHVnRaVzUwQUFBQUFBQkJjSEJzWlNCTVRG
Wk5JSFpsY25OcGIyNGdOUzR3SUNoamJHRnVaeTAxTURBdU1DNDIKTUNrZ0tHSmhjMlZrSUc5dUlF
eE1WazBnTXk0emMzWnVLUUF2VlhObGNuTXZZV3hsZUdOb2NtbHpkR1Z1YzJWdUwzZGxZbXRwZEM5
SgpiblJsY201aGJDOVhaV0pMYVhSVGVYTjBaVzFKYm5SbGNtWmhZMlV2VTJoaGNtVmtUV1ZrYVdG
VlNTNWpjSEFBTDFWelpYSnpMMkZzClpYaGphSEpwYzNSbGJuTmxiaTkzWldKcmFYUXZTVzUwWlhK
dVlXd3ZWMlZpUzJsMFUzbHpkR1Z0U1c1MFpYSm1ZV05sQUdacGJHeFMKWlhCc1lXTmxSMnh2ZDBk
eVlYa0FaRzkxWW14bEFFTkhSbXh2WVhRQVptbHNiRkpsY0d4aFkyVkhiRzkzUVd4d2FHRUFabWxz
YkZKbApjR3hoWTJWSGJHOTNRMjlzYjNJQVEwZERiMnh2Y2dCRFIwTnZiRzl5VW1WbUFGOTJjSFJ5
SkUxbFpHbGhWVWxGYkdWdFpXNTBBR2x1CmRBQmZYM1owWW14ZmNIUnlYM1I1Y0dVQWJWOXdZWEow
U1VRQWJWOXpkR0YwWlFCWFMwMWxaR2xoUTI5dWRISnZiR3hsY2tac1lXZEUKYVhOaFlteGxaQUJY
UzAxbFpHbGhRMjl1ZEhKdmJHeGxja1pzWVdkUWNtVnpjMlZrQUZkTFRXVmthV0ZEYjI1MGNtOXNi
R1Z5Um14aApaMFJ5WVhkRmJtUkRZWEJ6QUZkTFRXVmthV0ZEYjI1MGNtOXNiR1Z5Um14aFowWnZZ
M1Z6WldRQVYwdE5aV1JwWVVOdmJuUnliMnhzClpYSlVhR1Z0WlZOMFlYUmxBRzFmYkdGNVpYSUFi
Vjl3ZEhJQVEwZE1ZWGxsY2dCVWVYQmxBRmRVUmdCVUFGSmxiVzkyWlZCdmFXNTAKWlhJOFEwZE1Z
WGxsY2lBcVBnQldZV3gxWlZSNWNHVUFVSFJ5Vkhsd1pRQlNaWFJoYVc1UWRISUFRV1J2Y0hSRFJn
QkJaRzl3ZEVORwpWR0ZuQUVGa2IzQjBUbE1BUVdSdmNIUk9VMVJoWndCSVlYTm9WR0ZpYkdWRVpX
eGxkR1ZrVm1Gc2RXVUFTR0Z6YUZSaFlteGxSR1ZzClpYUmxaRlpoYkhWbFZIbHdaUUJmV2s1TE0x
ZFVSamxTWlhSaGFXNVFkSEpKVURkRFIweGhlV1Z5UlRJemFYTklZWE5vVkdGaWJHVkUKWld4bGRH
VmtWbUZzZFdWRmRnQnBjMGhoYzJoVVlXSnNaVVJsYkdWMFpXUldZV3gxWlFCaWIyOXNBSDVTWlhS
aGFXNVFkSElBVlFCUwpaWFJoYVc1UWRISThRMGRNWVhsbGNpQXFQZ0JmV2s0elYxUkdPVkpsZEdG
cGJsQjBja2xRTjBOSFRHRjVaWEpGTldOc1pXRnlSWFlBClkyeGxZWElBWDFwT00xZFVSamxTWlhS
aGFXNVFkSEpKVURkRFIweGhlV1Z5UlRkc1pXRnJVbVZtUlhZQWJHVmhhMUpsWmdCZldrNUwKTTFk
VVJqbFNaWFJoYVc1UWRISkpVRGREUjB4aGVXVnlSVE5uWlhSRmRnQm5aWFFBWDFwT1N6TlhWRVk1
VW1WMFlXbHVVSFJ5U1ZBMwpRMGRNWVhsbGNrVndkRVYyQUc5d1pYSmhkRzl5TFQ0QVgxcE9Tek5Y
VkVZNVVtVjBZV2x1VUhSeVNWQTNRMGRNWVhsbGNrVmpkbE15ClgwVjJBRzl3WlhKaGRHOXlJSE4w
Y25WamRDQkRSMHhoZVdWeUlDb0FYMXBPU3pOWFZFWTVVbVYwWVdsdVVIUnlTVkEzUTBkTVlYbGwK
Y2tWdWRFVjJBRzl3WlhKaGRHOXlJUUJmV2s1TE0xZFVSamxTWlhSaGFXNVFkSEpKVURkRFIweGhl
V1Z5UldOMlRWTXpYMU15WDBWMgpBRzl3WlhKaGRHOXlJSE4wY25WamRDQkRSMHhoZVdWeUlDcGpi
R0Z6Y3lCWFZFWTZPbEpsZEdGcGJsQjBjanh6ZEhKMVkzUWdRMGRNCllYbGxjaUFxUGpvNktnQlZi
bk53WldOcFptbGxaRUp2YjJ4VWVYQmxBRjlhVGpOWFZFWTVVbVYwWVdsdVVIUnlTVkEzUTBkTVlY
bGwKY2tWaFUwVlNTMU16WHdCdmNHVnlZWFJ2Y2owQVgxcE9NMWRVUmpsU1pYUmhhVzVRZEhKSlVE
ZERSMHhoZVdWeVJXRlRTVk15WDBWRgpVbE16WDFKTFRsTXdYMGxVWDBWRkFHOXdaWEpoZEc5eVBU
eERSMHhoZVdWeUlDbytBRjlhVGpOWFZFWTVVbVYwWVdsdVVIUnlTVkEzClEwZE1ZWGxsY2tWaFUw
VlRNbDhBWDFwT00xZFVSamxTWlhSaGFXNVFkSEpKVURkRFIweGhlV1Z5UldGVFJVOVRNMThBWDFw
T00xZFUKUmpsU1pYUmhhVzVRZEhKSlVEZERSMHhoZVdWeVJXRlRTVk15WDBWRlVsTXpYMDlPVXpC
ZlNWUmZSVVVBWDFwT00xZFVSamxTWlhSaAphVzVRZEhKSlVEZERSMHhoZVdWeVJUUnpkMkZ3UlZK
VE0xOEFjM2RoY0FCZldrNHpWMVJHT1ZKbGRHRnBibEIwY2tsUU4wTkhUR0Y1ClpYSkZNakZvWVhO
b1ZHRmliR1ZFWld4bGRHVmtWbUZzZFdWRmRnQm9ZWE5vVkdGaWJHVkVaV3hsZEdWa1ZtRnNkV1VB
ZmsxbFpHbGgKVlVsRmJHVnRaVzUwQUY5YVRqRTBUV1ZrYVdGVlNVVnNaVzFsYm5RMWNHRnBiblJG
VURsRFIwTnZiblJsZUhRMlEwZFNaV04wQUhCaAphVzUwQUVOSFEyOXVkR1Y0ZEFCRFIwTnZiblJs
ZUhSU1pXWUFiM0pwWjJsdUFIZ0FlUUJEUjFCdmFXNTBBSDVEUjFCdmFXNTBBRjlhClRqZERSMUJ2
YVc1MFlWTkZVa3RUWHdCZldrNDNRMGRRYjJsdWRHRlRSVTlUWHdCemFYcGxBSGRwWkhSb0FHaGxh
V2RvZEFCRFIxTnAKZW1VQWZrTkhVMmw2WlFCZldrNDJRMGRUYVhwbFlWTkZVa3RUWHdCZldrNDJR
MGRUYVhwbFlWTkZUMU5mQUVOSFVtVmpkQUIrUTBkUwpaV04wQUY5YVRqWkRSMUpsWTNSaFUwVlNT
MU5mQUY5YVRrc3hORTFsWkdsaFZVbEZiR1Z0Wlc1ME4yaHBkRlJsYzNSRk5rTkhVbVZqCmREZERS
MUJ2YVc1MEFHaHBkRlJsYzNRQVgxcE9TekUwVFdWa2FXRlZTVVZzWlcxbGJuUXhNVzVoZEhWeVlX
eFRhWHBsUlhZQWJtRjAKZFhKaGJGTnBlbVVBWDFwT01UUk5aV1JwWVZWSlJXeGxiV1Z1ZERoelpY
UlRkR0YwWlVVeU4xZExUV1ZrYVdGRGIyNTBjbTlzYkdWeQpWR2hsYldWVGRHRjBaUUJ6WlhSVGRH
RjBaUUJmV2s1TE1UUk5aV1JwWVZWSlJXeGxiV1Z1ZERWemRHRjBaVVYyQUhOMFlYUmxBRjlhClRq
RTBUV1ZrYVdGVlNVVnNaVzFsYm5RNWMyVjBVR0Z5ZEVsRVJXa0FjMlYwVUdGeWRFbEVBRjlhVGtz
eE5FMWxaR2xoVlVsRmJHVnQKWlc1ME5uQmhjblJKUkVWMkFIQmhjblJKUkFCZldrNUxNVFJOWldS
cFlWVkpSV3hsYldWdWREbHBjMUJ5WlhOelpXUkZkZ0JwYzFCeQpaWE56WldRQVgxcE9TekUwVFdW
a2FXRlZTVVZzWlcxbGJuUTVhWE5HYjJOMWMyVmtSWFlBYVhOR2IyTjFjMlZrQUY5YVRrc3hORTFs
ClpHbGhWVWxGYkdWdFpXNTBPV2x6Ulc1aFlteGxaRVYyQUdselJXNWhZbXhsWkFCZldrNUxNVFJO
WldScFlWVkpSV3hsYldWdWRESXoKYzJWMFZYQkRiMjUwWlhoMFJtOXlVR0ZwYm5ScGJtZEZVRGxE
UjBOdmJuUmxlSFEyUTBkU1pXTjBBSE5sZEZWd1EyOXVkR1Y0ZEVadgpjbEJoYVc1MGFXNW5BRjlh
VGtzeE5FMWxaR2xoVlVsRmJHVnRaVzUwTWpkeVpYTjBiM0psUTI5dWRHVjRkRUZtZEdWeVVHRnBi
blJwCmJtZEZVRGxEUjBOdmJuUmxlSFFBY21WemRHOXlaVU52Ym5SbGVIUkJablJsY2xCaGFXNTBh
VzVuQUY5YVRrc3hORTFsWkdsaFZVbEYKYkdWdFpXNTBOV3hoZVdWeVJYWUFiR0Y1WlhJQVEwZE1Z
WGxsY2xKbFpnQmZXazR4TkUxbFpHbGhWVWxGYkdWdFpXNTBPSE5sZEV4aAplV1Z5UlZBM1EwZE1Z
WGxsY2dCelpYUk1ZWGxsY2dCTlpXUnBZVlZKUld4bGJXVnVkQUJ0WDJacGJHeE5iMlJsQUUxbFpH
bGhWVWxKCmJXRm5aVVpwYkd4U1pYQnNZV05sQUUxbFpHbGhWVWxKYldGblpVWnBiR3hOZFd4MGFY
QnNlUUJOWldScFlWVkpTVzFoWjJWR2FXeHMKVG05dVpRQk5aV1JwWVZWSlNXMWhaMlZHYVd4c1RX
OWtaUUJ0WDNKbFkzUUFUV1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdQpkQUJmV2s0eU5V
MWxaR2xoVTJoaGNtVmtWVWxKYldGblpVVnNaVzFsYm5RMWNHRnBiblJGVURsRFIwTnZiblJsZUhR
MlEwZFNaV04wCkFGOWFUa3N5TlUxbFpHbGhVMmhoY21Wa1ZVbEpiV0ZuWlVWc1pXMWxiblF4TkdS
eVlYZENZV05yWjNKdmRXNWtSVkE1UTBkRGIyNTAKWlhoME5rTkhVbVZqZEFCa2NtRjNRbUZqYTJk
eWIzVnVaQUJmV2s1TE1qVk5aV1JwWVZOb1lYSmxaRlZKU1cxaFoyVkZiR1Z0Wlc1MApNVEZ1WVhS
MWNtRnNVMmw2WlVWMkFGOWFUa3N5TlUxbFpHbGhVMmhoY21Wa1ZVbEpiV0ZuWlVWc1pXMWxiblF5
TUdOdmJuTjBjbUZwCmJrRnpjR1ZqZEZKaGRHbHZSWFlBWTI5dWMzUnlZV2x1UVhOd1pXTjBVbUYw
YVc4QVgxcE9TekkxVFdWa2FXRlRhR0Z5WldSVlNVbHQKWVdkbFJXeGxiV1Z1ZERobWFXeHNUVzlr
WlVWMkFHWnBiR3hOYjJSbEFGOWFUakkxVFdWa2FXRlRhR0Z5WldSVlNVbHRZV2RsUld4bApiV1Z1
ZERJeGFXNTJZV3hwWkdGMFpVTmhZMmhsWkVsdFlXZGxSWFlBYVc1MllXeHBaR0YwWlVOaFkyaGxa
RWx0WVdkbEFGOWFUakkxClRXVmthV0ZUYUdGeVpXUlZTVWx0WVdkbFJXeGxiV1Z1ZERFM2JHRjVa
WEpYYVhSb1EyOXVkR1Z1ZEhORlVEbERSME52Ym5SbGVIUTIKUTBkU1pXTjBBR3hoZVdWeVYybDBh
RU52Ym5SbGJuUnpBRU5HVkhsd1pWSmxaZ0JmV2s1TE1qVk5aV1JwWVZOb1lYSmxaRlZKU1cxaApa
MlZGYkdWdFpXNTBNVEprWldaaGRXeDBTVzFoWjJWRmRnQmtaV1poZFd4MFNXMWhaMlVBWDFwT01q
Vk5aV1JwWVZOb1lYSmxaRlZKClNXMWhaMlZGYkdWdFpXNTBPV2RzYjNkRGIyeHZja1YyQUdkc2Iz
ZERiMnh2Y2dCdmRHaGxja1pwYkd4SGJHOTNRMjlzYjNJQWFXMWgKWjJWQ1lXTnJaM0p2ZFc1a1ZH
OXdSbWxzYkVkeVlYa0FhVzFoWjJWQ1lXTnJaM0p2ZFc1a1ZHOXdSbWxzYkVGc2NHaGhBSFJ2Y0Va
cApiR3dBYVcxaFoyVkNZV05yWjNKdmRXNWtUV2xrWkd4bFJtbHNiRWR5WVhrQWFXMWhaMlZDWVdO
clozSnZkVzVrVFdsa1pHeGxSbWxzCmJFRnNjR2hoQUcxcFpHUnNaVVpwYkd3QVkyOXNiM0p6QUd4
dmQyVnlSbWxzYkFCRFIwZHlZV1JwWlc1MEFFTkhSM0poWkdsbGJuUlMKWldZQWFXMWhaMlZFYVhO
aFlteGxaRUZzY0doaEFHbHRZV2RsU1c1dVpYSlRhR0ZrYjNkSGNtRjVBR2x0WVdkbFNXNXVaWEpU
YUdGawpiM2RCYkhCb1lRQnBibTVsY2xOb1lXUnZkME52Ykc5eUFHNXZVMmhoWkc5M1FteDFjZ0J3
Y21WemMyVmtVMmhoWkc5M1FteDFjZ0JqCllYQjBhVzl1YzBKMWRIUnZibEJ5WlhOelpXUkNZV05y
WjNKdmRXNWtVbVZrQUdOaGNIUnBiMjV6UW5WMGRHOXVVSEpsYzNObFpFSmgKWTJ0bmNtOTFibVJI
Y21WbGJnQmpZWEIwYVc5dWMwSjFkSFJ2YmxCeVpYTnpaV1JDWVdOclozSnZkVzVrUW14MVpRQmpZ
WEIwYVc5dQpjMEoxZEhSdmJsQnlaWE56WldSQ1lXTnJaM0p2ZFc1a1FXeHdhR0VBWW14MVpVTnZi
Rzl5QUY5YVRrc3lOMDFsWkdsaFUyaGhjbVZrClZVbERRMGx0WVdkbFJXeGxiV1Z1ZERJd1kyOXVj
M1J5WVdsdVFYTndaV04wVW1GMGFXOUZkZ0JOWldScFlWTm9ZWEpsWkZWSlEwTkoKYldGblpVVnNa
VzFsYm5RQVgxcE9NamROWldScFlWTm9ZWEpsWkZWSlEwTkpiV0ZuWlVWc1pXMWxiblF4TjJ4aGVX
VnlWMmwwYUVOdgpiblJsYm5SelJWQTVRMGREYjI1MFpYaDBOa05IVW1WamRBQjBiM0JEYjJ4dmNu
TUFUV1ZrYVdGVGFHRnlaV1JWU1VKaFkydG5jbTkxCmJtUkZiR1Z0Wlc1MEFGOWFUak13VFdWa2FX
RlRhR0Z5WldSVlNVSmhZMnRuY205MWJtUkZiR1Z0Wlc1ME5YQmhhVzUwUlZBNVEwZEQKYjI1MFpY
aDBOa05IVW1WamRBQmZXazR6TUUxbFpHbGhVMmhoY21Wa1ZVbENZV05yWjNKdmRXNWtSV3hsYldW
dWRERTNiR0Y1WlhKWAphWFJvUTI5dWRHVnVkSE5GVURsRFIwTnZiblJsZUhRMlEwZFNaV04wQUdK
dmRIUnZiVU52Ykc5eWN3QmlZV05yWjNKdmRXNWtUV2xrClpHeGxSbWxzYkVkeVlYa0FZbUZqYTJk
eWIzVnVaRTFwWkdSc1pVWnBiR3hCYkhCb1lRQmliM1IwYjIxR2FXeHNBR0poWTJ0bmNtOTEKYm1S
VWIzQkNiM0prWlhJeFIzSmhlUUJpWVdOclozSnZkVzVrVkc5d1FtOXlaR1Z5TVVGc2NHaGhBSFJ2
Y0VKdmNtUmxjakVBWW1GagphMmR5YjNWdVpGUnZjRUp2Y21SbGNqSkhjbUY1QUdKaFkydG5jbTkx
Ym1SVWIzQkNiM0prWlhJeVFXeHdhR0VBZEc5d1FtOXlaR1Z5Ck1nQjBhSFZ0WWxKaFpHbDFjd0Ix
Ym5OcFoyNWxaQ0JwYm5RQVRXVmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVZHaDEK
YldKRmJHVnRaVzUwQUY5YVRqTTVUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVsVTJ4cFpHVnlW
R2gxYldKRmJHVnRaVzUwTlhCaAphVzUwUlZBNVEwZERiMjUwWlhoME5rTkhVbVZqZEFCZldrNUxN
emxOWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpVCmFIVnRZa1ZzWlcxbGJuUXhN
VzVoZEhWeVlXeFRhWHBsUlhZQVgxcE9Tek01VFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzYVc1bFUy
eHAKWkdWeVZHaDFiV0pGYkdWdFpXNTBOMmhwZEZSbGMzUkZOa05IVW1WamREZERSMUJ2YVc1MEFG
OWFUak01VFdWa2FXRlRhR0Z5WldSVgpTVlJwYldWc2FXNWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpX
NTBObkpoWkdsMWMwVjJBSEpoWkdsMWN3QmZXazR6T1UxbFpHbGhVMmhoCmNtVmtWVWxVYVcxbGJH
bHVaVk5zYVdSbGNsUm9kVzFpUld4bGJXVnVkREUzYkdGNVpYSlhhWFJvUTI5dWRHVnVkSE5GVURs
RFIwTnYKYm5SbGVIUTJRMGRTWldOMEFIQnlaWE56WldSRGIyeHZjbk1BYm05eWJXRnNRMjlzYjNK
ekFIQnlaWE56WldSSGNtRmthV1Z1ZEFCdQpiM0p0WVd4SGNtRmthV1Z1ZEFCemJHbGtaWEpVYUhW
dFlraHBaMmhzYVdkb2RFZHlZWGtBYzJ4cFpHVnlWR2gxYldKSWFXZG9iR2xuCmFIUkJiSEJvWVFC
b2FXZG9iR2xuYUhSRGIyeHZjZ0IwYVcxbGJHbHVaVk5zYVdSbGNsVnViRzloWkdWa1VtRnVaMlZI
Y21GNUFIUnAKYldWc2FXNWxVMnhwWkdWeVZXNXNiMkZrWldSU1lXNW5aVUZzY0doaEFHZHlZWGxH
YVd4c1EyOXNiM0lBYlY5MGFXMWxURzloWkdWawpBRzFmWkhWeVlYUnBiMjRBWDFwT01qRk5aV1Jw
WVZWSlZHbHRaV3hwYm1WVGJHbGtaWEl4TTNObGRGUnBiV1ZNYjJGa1pXUkZaQUJ6ClpYUlVhVzFs
VEc5aFpHVmtBRjlhVGtzeU1VMWxaR2xoVlVsVWFXMWxiR2x1WlZOc2FXUmxjakV3ZEdsdFpVeHZZ
V1JsWkVWMkFIUnAKYldWTWIyRmtaV1FBWDFwT01qRk5aV1JwWVZWSlZHbHRaV3hwYm1WVGJHbGta
WEl4TVhObGRFUjFjbUYwYVc5dVJXUUFjMlYwUkhWeQpZWFJwYjI0QVgxcE9Tekl4VFdWa2FXRlZT
VlJwYldWc2FXNWxVMnhwWkdWeU9HUjFjbUYwYVc5dVJYWUFaSFZ5WVhScGIyNEFYMXBPClN6SXhU
V1ZrYVdGVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5TVRSbWNtRmpkR2x2Ymt4dllXUmxaRVYyQUdaeVlX
TjBhVzl1VEc5aFpHVmsKQUY5YVRrc3lNVTFsWkdsaFZVbFVhVzFsYkdsdVpWTnNhV1JsY2pFeGNH
VnlZMlZ1ZEZScGJXVkZaQUJ3WlhKalpXNTBWR2x0WlFCKwpUV1ZrYVdGVlNWUnBiV1ZzYVc1bFUy
eHBaR1Z5QUUxbFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNnQjBjbUZqYTBobGFXZG9kQUIwCmNt
RmphMDltWm5ObGRBQk5aV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUYkdsa1pYSUFYMXBPTWpk
TlpXUnBZVk5vWVhKbFpGVkoKVkdsdFpXeHBibVZUYkdsa1pYSTFjR0ZwYm5SRlVEbERSME52Ym5S
bGVIUTJRMGRTWldOMEFGOWFUakkzVFdWa2FXRlRhR0Z5WldSVgpTVlJwYldWc2FXNWxVMnhwWkdW
eU5taGxhV2RvZEVWMkFGOWFUakkzVFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5
Ck5tOW1abk5sZEVWMkFHOW1abk5sZEFCZldrNHlOMDFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1
WlZOc2FXUmxjakUzYkdGNVpYSlgKYVhSb1EyOXVkR1Z1ZEhORlVEbERSME52Ym5SbGVIUTJRMGRT
WldOMEFGOWFUa3N5TjAxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkdsdQpaVk5zYVdSbGNqSXhkR2x0
Wld4cGJtVlNaV04wUm05eVFtOTFibVJ6UlRaRFIxSmxZM1FBZEdsdFpXeHBibVZTWldOMFJtOXlR
bTkxCmJtUnpBRjlhVGtzeU4wMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5zYVdSbGNqSXlh
R2xuYUd4cFoyaDBWVzVzYjJGa1pXUlMKWVc1blpVVlFPVU5IUTI5dWRHVjRkRFpEUjFKbFkzUUFh
R2xuYUd4cFoyaDBWVzVzYjJGa1pXUlNZVzVuWlFCaVlXTnJaM0p2ZFc1awpSM0poWkdsbGJuUUFk
R2x0Wld4cGJtVlRiR2xrWlhKQ1lXTnJaM0p2ZFc1a1UyaGhaRzkzUjNKaGVRQjBhVzFsYkdsdVpW
TnNhV1JsCmNrSmhZMnRuY205MWJtUlRhR0ZrYjNkQmJIQm9ZUUJ6YUdGa2IzZERiMnh2Y2dCMGFX
MWxiR2x1WlZOc2FXUmxja2hwYkdsbmFIUkgKY21GNUFIUnBiV1ZzYVc1bFUyeHBaR1Z5U0dsc2FX
ZG9kRUZzY0doaEFIUnlZV05yVW1Ga2FYVnpBRTFsWkdsaFUyaGhjbVZrVlVsVwpiMngxYldWVGJH
bGtaWElBWDFwT01qVk5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeU5YQmhhVzUwUlZB
NVEwZERiMjUwClpYaDBOa05IVW1WamRBQmZXazR5TlUxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldW
VGJHbGtaWEkyY21Ga2FYVnpSWFlBWDFwT1N6STEKVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZO
c2FXUmxjakl5YUdsbmFHeHBaMmgwVlc1c2IyRmtaV1JTWVc1blpVVlFPVU5IUTI5dQpkR1Y0ZERa
RFIxSmxZM1FBWDFwT1N6STFUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5zYVdSbGNqSXhkR2x0
Wld4cGJtVlNaV04wClJtOXlRbTkxYm1SelJUWkRSMUpsWTNRQVgxcE9NalZOWldScFlWTm9ZWEps
WkZWSlZtOXNkVzFsVTJ4cFpHVnlNVGRzWVhsbGNsZHAKZEdoRGIyNTBaVzUwYzBWUU9VTkhRMjl1
ZEdWNGREWkRSMUpsWTNRQWRtOXNkVzFsVTJ4cFpHVnlTR2xzYVdkb2RFZHlZWGtBZG05cwpkVzFs
VTJ4cFpHVnlTR2xzYVdkb2RFRnNjR2hoQUhadmJIVnRaVk5zYVdSbGNrSnZjbVJsY2tsdWMyVjBB
SFp2YkhWdFpWTnNhV1JsCmNrSnZjbVJsY2tkeVlYa0FkbTlzZFcxbFUyeHBaR1Z5UW05eVpHVnlR
V3h3YUdFQWJWOXpZMkZzWldSU1lXUnBkWE1BVFdWa2FXRlQKYUdGeVpXUlZTVlp2YkhWdFpWTnNh
V1JsY2xSb2RXMWlSV3hsYldWdWRBQmZXazR6TjAxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVApi
R2xrWlhKVWFIVnRZa1ZzWlcxbGJuUTFjR0ZwYm5SRlVEbERSME52Ym5SbGVIUTJRMGRTWldOMEFG
OWFUa3N6TjAxbFpHbGhVMmhoCmNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJu
UXhNVzVoZEhWeVlXeFRhWHBsUlhZQVgxcE9Tek0zVFdWa2FXRlQKYUdGeVpXUlZTVlp2YkhWdFpW
TnNhV1JsY2xSb2RXMWlSV3hsYldWdWREZG9hWFJVWlhOMFJUWkRSMUpsWTNRM1EwZFFiMmx1ZEFC
ZgpXazVMTXpkTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1
ME5uSmhaR2wxYzBWMkFGOWFUak0zClRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsY2xS
b2RXMWlSV3hsYldWdWRERTNiR0Y1WlhKWGFYUm9RMjl1ZEdWdWRITkYKVURsRFIwTnZiblJsZUhR
MlEwZFNaV04wQUhOc2FXUmxjbFJvZFcxaVNXNXVaWEpUYUdGa2IzZEhjbUY1QUhOc2FXUmxjbFJv
ZFcxaQpTVzV1WlhKVGFHRmtiM2RCYkhCb1lRQmlZV05yWjNKdmRXNWtVbUZrYVhWekFHSmhZMnRu
Y205MWJtUlRkSEp2YTJWVWFHbGphMjVsCmMzTUFUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5z
YVdSbGNrSmhZMnRuY205MWJtUkZiR1Z0Wlc1MEFGOWFUalF5VFdWa2FXRlQKYUdGeVpXUlZTVlp2
YkhWdFpWTnNhV1JsY2tKaFkydG5jbTkxYm1SRmJHVnRaVzUwTlhCaGFXNTBSVkE1UTBkRGIyNTBa
WGgwTmtOSApVbVZqZEFCZldrNUxOREpOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlR
bUZqYTJkeWIzVnVaRVZzWlcxbGJuUTNhR2wwClZHVnpkRVUyUTBkU1pXTjBOME5IVUc5cGJuUUFY
MXBPTkRKTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5UW1GamEyZHkKYjNWdVpFVnNa
VzFsYm5RMmNtRmthWFZ6UlhZQVgxcE9OREpOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpH
VnlRbUZqYTJkeQpiM1Z1WkVWc1pXMWxiblF4TlhOMGNtOXJaVlJvYVdOcmJtVnpjMFYyQUhOMGNt
OXJaVlJvYVdOcmJtVnpjd0JmV2s0ME1rMWxaR2xoClUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsa1pY
SkNZV05yWjNKdmRXNWtSV3hsYldWdWRERTNiR0Y1WlhKWGFYUm9RMjl1ZEdWdWRITkYKVURsRFIw
TnZiblJsZUhRMlEwZFNaV04wQUdacGJHeEhjbUZrYVdWdWRBQjJiMngxYldWVGJHbGtaWEpDWVdO
clozSnZkVzVrUW05eQpaR1Z5UjNKaGVRQjJiMngxYldWVGJHbGtaWEpDWVdOclozSnZkVzVrUW05
eVpHVnlRV3h3YUdFQVRXVmthV0ZUYUdGeVpXUlZTVVoxCmJHeFRZM0psWlc1V2IyeDFiV1ZUYkds
a1pYSUFYMXBPTXpWTlpXUnBZVk5vWVhKbFpGVkpSblZzYkZOamNtVmxibFp2YkhWdFpWTnMKYVdS
bGNqVndZV2x1ZEVWUU9VTkhRMjl1ZEdWNGREWkRSMUpsWTNRQVgxcE9NelZOWldScFlWTm9ZWEps
WkZWSlJuVnNiRk5qY21WbApibFp2YkhWdFpWTnNhV1JsY2paeVlXUnBkWE5GZGdCZldrNHpOVTFs
WkdsaFUyaGhjbVZrVlVsR2RXeHNVMk55WldWdVZtOXNkVzFsClUyeHBaR1Z5Tm05bVpuTmxkRVYy
QUY5YVRqTTFUV1ZrYVdGVGFHRnlaV1JWU1VaMWJHeFRZM0psWlc1V2IyeDFiV1ZUYkdsa1pYSXgK
TjJ4aGVXVnlWMmwwYUVOdmJuUmxiblJ6UlZBNVEwZERiMjUwWlhoME5rTkhVbVZqZEFCbmNtRmth
V1Z1ZEFCbWRXeHNVMk55WldWdQpWbTlzZFcxbFUyeHBaR1Z5VTJoaFpHOTNSM0poZVFCbWRXeHNV
Mk55WldWdVZtOXNkVzFsVTJ4cFpHVnlVMmhoWkc5M1FXeHdhR0VBClpuVnNiRk5qY21WbGJsWnZi
SFZ0WlZOc2FXUmxja2hwWjJoc2FXZG9kRWR5WVhrQVpuVnNiRk5qY21WbGJsWnZiSFZ0WlZOc2FX
UmwKY2tocFoyaHNhV2RvZEVGc2NHaGhBR2RsYm1WeWFXTkNkWFIwYjI0QVgzWndkSElrVFdWa2FX
RkRiMjUwY205c2N3QitUV1ZrYVdGRApiMjUwY205c2N3QmZXazR4TTAxbFpHbGhRMjl1ZEhKdmJI
TTRaSEpoZDFCaGNuUkZhVkE1UTBkRGIyNTBaWGgwTmtOSFVtVmpkR29BClpISmhkMUJoY25RQVgx
cE9NVE5OWldScFlVTnZiblJ5YjJ4ek1qTmtjbUYzVkdsdFpXeHBibVZUYkdsa1pYSlVjbUZqYTBW
UU9VTkgKUTI5dWRHVjRkRFpEUjFKbFkzUmtaR29BWkhKaGQxUnBiV1ZzYVc1bFUyeHBaR1Z5VkhK
aFkyc0FYMXBPU3pFelRXVmthV0ZEYjI1MApjbTlzY3pFeGFHbDBWR1Z6ZEZCaGNuUkZhVFpEUjFK
bFkzUTNRMGRRYjJsdWRBQm9hWFJVWlhOMFVHRnlkQUJmV2s1TE1UTk5aV1JwCllVTnZiblJ5YjJ4
ek1URnVZWFIxY21Gc1UybDZaVVZwQUY5YVRrc3hNMDFsWkdsaFEyOXVkSEp2YkhNeE5HTnZiblJ5
YjJ4R2IzSlEKWVhKMFJXa0FZMjl1ZEhKdmJFWnZjbEJoY25RQVgxcE9TekV6VFdWa2FXRkRiMjUw
Y205c2N6WnpiR2xrWlhKRmRnQnpiR2xrWlhJQQpUV1ZrYVdGRGIyNTBjbTlzY3dCZldrNUxNakZO
WldScFlWTm9ZWEpsWkZWSlEyOXVkSEp2YkhNMmMyeHBaR1Z5UlhZQVRXVmthV0ZUCmFHRnlaV1JW
U1VOdmJuUnliMnh6QUY5YVRrc3lNVTFsWkdsaFUyaGhjbVZrVlVsRGIyNTBjbTlzY3pFMFkyOXVk
SEp2YkVadmNsQmgKY25SRmFRQmpZWEIwYVc5dWMwSjFkSFJ2YmdCaVlXTnJaM0p2ZFc1a0FIWnZi
SFZ0WlZOc2FXUmxja0poWTJ0bmNtOTFibVFBZEdsdApaV3hwYm1WVWFIVnRZZ0IyYjJ4MWJXVlVh
SFZ0WWdCbWRXeHNVMk55WldWdVZtOXNkVzFsVTJ4cFpHVnlBR1oxYkd4VFkzSmxaVzVXCmIyeDFi
V1ZVYUhWdFlnQmZXazVMTkRkTlpXUnBZVk5vWVhKbFpGVkpSblZzYkZOamNtVmxibFp2YkhWdFpW
TnNhV1JsY2xSb2RXMWkKUld4bGJXVnVkRFp5WVdScGRYTkZkZ0JOWldScFlWTm9ZWEpsWkZWSlJu
VnNiRk5qY21WbGJsWnZiSFZ0WlZOc2FXUmxjbFJvZFcxaQpSV3hsYldWdWRBQnphR0Z5WldSVGJH
bGtaWElBYzNSNWJHVUFRMGRUZEhsc1pRQkRSMU4wZVd4bFVtVm1BRjlhVERFelpISmhkMFp2Clkz
VnpVbWx1WjFBNVEwZERiMjUwWlhoME5rTkhVbVZqZEZCTGRnQmtjbUYzUm05amRYTlNhVzVuQUc5
MWRHVnlVMmhoWkc5M1FteGgKWTJzQWIzVjBaWEpUYUdGa2IzZEJiSEJvWVFCdmRYUmxjbE5vWVdS
dmQwZHlZWGtBWDFwTU1UVmtjbUYzVDNWMFpYSlRhR0ZrYjNkUQpPVU5IUTI5dWRHVjRkRFpEUjFK
bFkzUlFTM1lBWkhKaGQwOTFkR1Z5VTJoaFpHOTNBRzkxZEdWeVUyaGhaRzkzUW14MWNnQmpiMnh2
CmNsTndZV05sQUVOSFEyOXNiM0pUY0dGalpRQkRSME52Ykc5eVUzQmhZMlZTWldZQVgxcE1NalZq
Y21WaGRHVkhaVzVsY21salIzSmgKZVVkeVlXUnBaVzUwVUV0a1V6QmZiUUJqY21WaGRHVkhaVzVs
Y21salIzSmhlVWR5WVdScFpXNTBBR2x0WVdkbEFGOWFUREl3YldWawphV0ZRUkVaR2IzSjNZWEpr
U1cxaFoyVjJBRzFsWkdsaFVFUkdSbTl5ZDJGeVpFbHRZV2RsQUY5YVRESTJZM0psWVhSbFRXVmth
V0ZRClJFWkdiM0ozWVhKa1NXMWhaMlYyQUdOeVpXRjBaVTFsWkdsaFVFUkdSbTl5ZDJGeVpFbHRZ
V2RsQUUxbFpHbGhUbVYzVlVsR2IzSjMKWVhKa1NXMWhaMlZFWVhSaFRHVnVaM1JvWDNCa1pnQk5a
V1JwWVU1bGQxVkpSbTl5ZDJGeVpFbHRZV2RsUkdGMFlWOXdaR1lBZFc1egphV2R1WldRZ1kyaGhj
Z0JmV2t3ek1FMWxaR2xoVG1WM1ZVbEdiM0ozWVhKa1NXMWhaMlZFWVhSaFgzQmtaZ0JmV2t3eU1X
MWxaR2xoClVFUkdRbUZqYTNkaGNtUkpiV0ZuWlhZQWJXVmthV0ZRUkVaQ1lXTnJkMkZ5WkVsdFlX
ZGxBRjlhVERJM1kzSmxZWFJsVFdWa2FXRlEKUkVaQ1lXTnJkMkZ5WkVsdFlXZGxkZ0JqY21WaGRH
Vk5aV1JwWVZCRVJrSmhZMnQzWVhKa1NXMWhaMlVBVFdWa2FXRk9aWGRWU1VKaApZMnQzWVhKa1NX
MWhaMlZFWVhSaFRHVnVaM1JvWDNCa1pnQk5aV1JwWVU1bGQxVkpRbUZqYTNkaGNtUkpiV0ZuWlVS
aGRHRmZjR1JtCkFGOWFURE14VFdWa2FXRk9aWGRWU1VKaFkydDNZWEprU1cxaFoyVkVZWFJoWDNC
a1pnQmZXa3d5TW0xbFpHbGhVRVJHVW1WMGNtVmgKZERNd1NXMWhaMlYyQUcxbFpHbGhVRVJHVW1W
MGNtVmhkRE13U1cxaFoyVUFYMXBNTWpoamNtVmhkR1ZOWldScFlWQkVSbEpsZEhKbApZWFF6TUVs
dFlXZGxkZ0JqY21WaGRHVk5aV1JwWVZCRVJsSmxkSEpsWVhRek1FbHRZV2RsQUUxbFpHbGhUbVYz
VlVsU1pYUnlaV0YwCk16QkpiV0ZuWlVSaGRHRk1aVzVuZEdoZmNHUm1BRTFsWkdsaFRtVjNWVWxT
WlhSeVpXRjBNekJKYldGblpVUmhkR0ZmY0dSbUFGOWEKVERNeVRXVmthV0ZPWlhkVlNWSmxkSEps
WVhRek1FbHRZV2RsUkdGMFlWOXdaR1lBWDFwTU1qZHRaV1JwWVZCRVJsTmxaV3RVYjFKbApZV3gw
YVcxbFNXMWhaMlYyQUcxbFpHbGhVRVJHVTJWbGExUnZVbVZoYkhScGJXVkpiV0ZuWlFCZldrd3pN
Mk55WldGMFpVMWxaR2xoClVFUkdVMlZsYTFSdlVtVmhiSFJwYldWSmJXRm5aWFlBWTNKbFlYUmxU
V1ZrYVdGUVJFWlRaV1ZyVkc5U1pXRnNkR2x0WlVsdFlXZGwKQUUxbFpHbGhUbVYzVlVsVFpXVnJW
RzlTWldGc2RHbHRaVWx0WVdkbFJHRjBZVXhsYm1kMGFGOXdaR1lBVFdWa2FXRk9aWGRWU1ZObApa
V3RVYjFKbFlXeDBhVzFsU1cxaFoyVkVZWFJoWDNCa1pnQmZXa3d6TjAxbFpHbGhUbVYzVlVsVFpX
VnJWRzlTWldGc2RHbHRaVWx0CllXZGxSR0YwWVY5d1pHWUFYMXBNTWpkdFpXUnBZVkJFUmtWNGFY
UkdkV3hzYzJOeVpXVnVTVzFoWjJWMkFHMWxaR2xoVUVSR1JYaHAKZEVaMWJHeHpZM0psWlc1SmJX
Rm5aUUJmV2t3ek0yTnlaV0YwWlUxbFpHbGhVRVJHUlhocGRFWjFiR3h6WTNKbFpXNUpiV0ZuWlhZ
QQpZM0psWVhSbFRXVmthV0ZRUkVaRmVHbDBSblZzYkhOamNtVmxia2x0WVdkbEFFMWxaR2xoVG1W
M1ZVbEZlR2wwUm5Wc2JITmpjbVZsCmJrbHRZV2RsUkdGMFlVeGxibWQwYUY5d1pHWUFUV1ZrYVdG
T1pYZFZTVVY0YVhSR2RXeHNjMk55WldWdVNXMWhaMlZFWVhSaFgzQmsKWmdCZldrd3pOMDFsWkds
aFRtVjNWVWxGZUdsMFJuVnNiSE5qY21WbGJrbHRZV2RsUkdGMFlWOXdaR1lBWDFwTU1qaHRaV1Jw
WVZCRQpSa1Z1ZEdWeVJuVnNiSE5qY21WbGJrbHRZV2RsZGdCdFpXUnBZVkJFUmtWdWRHVnlSblZz
YkhOamNtVmxia2x0WVdkbEFGOWFURE0wClkzSmxZWFJsVFdWa2FXRlFSRVpGYm5SbGNrWjFiR3h6
WTNKbFpXNUpiV0ZuWlhZQVkzSmxZWFJsVFdWa2FXRlFSRVpGYm5SbGNrWjEKYkd4elkzSmxaVzVK
YldGblpRQk5aV1JwWVU1bGQxVkpSVzUwWlhKR2RXeHNjMk55WldWdVNXMWhaMlZFWVhSaFRHVnVa
M1JvWDNCawpaZ0JOWldScFlVNWxkMVZKUlc1MFpYSkdkV3hzYzJOeVpXVnVTVzFoWjJWRVlYUmhY
M0JrWmdCZldrd3pPRTFsWkdsaFRtVjNWVWxGCmJuUmxja1oxYkd4elkzSmxaVzVKYldGblpVUmhk
R0ZmY0dSbUFGOWFUREkwYldWa2FXRlFSRVpRWVhWelpVSjFkSFJ2YmtsdFlXZGwKZGdCdFpXUnBZ
VkJFUmxCaGRYTmxRblYwZEc5dVNXMWhaMlVBWDFwTU16QmpjbVZoZEdWTlpXUnBZVkJFUmxCaGRY
TmxRblYwZEc5dQpTVzFoWjJWMkFHTnlaV0YwWlUxbFpHbGhVRVJHVUdGMWMyVkNkWFIwYjI1SmJX
Rm5aUUJOWldScFlVNWxkMVZKVUdGMWMyVkNkWFIwCmIyNUpiV0ZuWlVSaGRHRk1aVzVuZEdoZmNH
Um1BRTFsWkdsaFRtVjNWVWxRWVhWelpVSjFkSFJ2YmtsdFlXZGxSR0YwWVY5d1pHWUEKWDFwTU16
Uk5aV1JwWVU1bGQxVkpVR0YxYzJWQ2RYUjBiMjVKYldGblpVUmhkR0ZmY0dSbUFGOWFUREl6YldW
a2FXRlFSRVpRYkdGNQpRblYwZEc5dVNXMWhaMlYyQUcxbFpHbGhVRVJHVUd4aGVVSjFkSFJ2Ymts
dFlXZGxBRjlhVERJNVkzSmxZWFJsVFdWa2FXRlFSRVpRCmJHRjVRblYwZEc5dVNXMWhaMlYyQUdO
eVpXRjBaVTFsWkdsaFVFUkdVR3hoZVVKMWRIUnZia2x0WVdkbEFFMWxaR2xoVG1WM1ZVbFEKYkdG
NVFuVjBkRzl1U1cxaFoyVkVZWFJoVEdWdVozUm9YM0JrWmdCTlpXUnBZVTVsZDFWSlVHeGhlVUox
ZEhSdmJrbHRZV2RsUkdGMApZVjl3WkdZQVgxcE1Nek5OWldScFlVNWxkMVZKVUd4aGVVSjFkSFJ2
YmtsdFlXZGxSR0YwWVY5d1pHWUFYMXBNTWpkdFpXUnBZVkJFClJrRjFaR2x2Vm05c2RXMWxUMlpt
U1cxaFoyVjJBRzFsWkdsaFVFUkdRWFZrYVc5V2IyeDFiV1ZQWm1aSmJXRm5aUUJmV2t3ek0yTnkK
WldGMFpVMWxaR2xoVUVSR1FYVmthVzlXYjJ4MWJXVlBabVpKYldGblpYWUFZM0psWVhSbFRXVmth
V0ZRUkVaQmRXUnBiMVp2YkhWdApaVTltWmtsdFlXZGxBRTFsWkdsaFRtVjNWVWxCZFdScGIxWnZi
SFZ0WlU5bVprbHRZV2RsUkdGMFlVeGxibWQwYUY5d1pHWUFUV1ZrCmFXRk9aWGRWU1VGMVpHbHZW
bTlzZFcxbFQyWm1TVzFoWjJWRVlYUmhYM0JrWmdCZldrd3pOMDFsWkdsaFRtVjNWVWxCZFdScGIx
WnYKYkhWdFpVOW1aa2x0WVdkbFJHRjBZVjl3WkdZQVgxcE1Namh0WldScFlWQkVSa0YxWkdsdlZt
OXNkVzFsU0dsbmFFbHRZV2RsZGdCdApaV1JwWVZCRVJrRjFaR2x2Vm05c2RXMWxTR2xuYUVsdFlX
ZGxBRjlhVERNMFkzSmxZWFJsVFdWa2FXRlFSRVpCZFdScGIxWnZiSFZ0ClpVaHBaMmhKYldGblpY
WUFZM0psWVhSbFRXVmthV0ZRUkVaQmRXUnBiMVp2YkhWdFpVaHBaMmhKYldGblpRQk5aV1JwWVU1
bGQxVkoKUVhWa2FXOVdiMngxYldWSWFXZG9TVzFoWjJWRVlYUmhUR1Z1WjNSb1gzQmtaZ0JOWldS
cFlVNWxkMVZKUVhWa2FXOVdiMngxYldWSQphV2RvU1cxaFoyVkVZWFJoWDNCa1pnQmZXa3d6T0Ux
bFpHbGhUbVYzVlVsQmRXUnBiMVp2YkhWdFpVaHBaMmhKYldGblpVUmhkR0ZmCmNHUm1BRjlhVERJ
M2JXVmthV0ZRUkVaRGJHOXpaV1JEWVhCMGFXOXVjMGx0WVdkbGRnQnRaV1JwWVZCRVJrTnNiM05s
WkVOaGNIUnAKYjI1elNXMWhaMlVBWDFwTU16TmpjbVZoZEdWTlpXUnBZVkJFUmtOc2IzTmxaRU5o
Y0hScGIyNXpTVzFoWjJWMkFHTnlaV0YwWlUxbApaR2xoVUVSR1EyeHZjMlZrUTJGd2RHbHZibk5K
YldGblpRQk5aV1JwWVU1bGQxVkpRMnh2YzJWa1EyRndkR2x2Ym5OSmJXRm5aVVJoCmRHRk1aVzVu
ZEdoZmNHUm1BRTFsWkdsaFRtVjNWVWxEYkc5elpXUkRZWEIwYVc5dWMwbHRZV2RsUkdGMFlWOXda
R1lBWDFwTU16ZE4KWldScFlVNWxkMVZKUTJ4dmMyVmtRMkZ3ZEdsdmJuTkpiV0ZuWlVSaGRHRmZj
R1JtQUdacFpuUjVVR1Z5WTJWdWRGUnlZVzV6Y0dGeQpaVzUwVjJocGRHVkhjbUY1VEdWMlpXd0Fa
bWxtZEhsUVpYSmpaVzUwVkhKaGJuTndZWEpsYm5SQmJIQm9ZUUJuY21GNVEyOXNiM0lBClgxcE1N
amhtYVdaMGVWQmxjbU5sYm5SVWNtRnVjM0JoY21WdWRGZG9hWFJsZGdCbWFXWjBlVkJsY21ObGJu
UlVjbUZ1YzNCaGNtVnUKZEZkb2FYUmxBRjlhVGpJMVRXVmthV0ZUYUdGeVpXUlZTVWx0WVdkbFJX
eGxiV1Z1ZEVNeFJYWUFYMXBPTWpWTlpXUnBZVk5vWVhKbApaRlZKU1cxaFoyVkZiR1Z0Wlc1MFF6
SkZkZ0JmV2s0ek1FMWxaR2xoVTJoaGNtVmtWVWxDWVdOclozSnZkVzVrUld4bGJXVnVkRU14ClJY
WUFYMXBPTXpCTlpXUnBZVk5vWVhKbFpGVkpRbUZqYTJkeWIzVnVaRVZzWlcxbGJuUkRNa1YyQUY5
YVRqTTVUV1ZrYVdGVGFHRnkKWldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1
MFF6RkZkZ0JmV2s0ek9VMWxaR2xoVTJoaGNtVmtWVWxVYVcxbApiR2x1WlZOc2FXUmxjbFJvZFcx
aVJXeGxiV1Z1ZEVNeVJYWUFYMXBPTWpkTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRiR2xr
ClpYSkRNVVYyQUY5YVRqSTNUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVsVTJ4cFpHVnlRekpG
ZGdCZldrNHlOVTFsWkdsaFUyaGgKY21Wa1ZVbFdiMngxYldWVGJHbGtaWEpETVVWMkFGOWFUakkx
VFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmxja015UlhZQQpYMXBPTXpkTlpXUnBZVk5v
WVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1MFF6RkZkZ0JmV2s0ek4wMWxa
R2xoClUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsa1pYSlVhSFZ0WWtWc1pXMWxiblJETWtWMkFGOWFU
alF5VFdWa2FXRlRhR0Z5WldSVlNWWnYKYkhWdFpWTnNhV1JsY2tKaFkydG5jbTkxYm1SRmJHVnRa
VzUwUXpGRmRnQmZXazQwTWsxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVApiR2xrWlhKQ1lXTnJa
M0p2ZFc1a1JXeGxiV1Z1ZEVNeVJYWUFYMXBPTXpWTlpXUnBZVk5vWVhKbFpGVkpSblZzYkZOamNt
VmxibFp2CmJIVnRaVk5zYVdSbGNrTXhSWFlBWDFwT016Vk5aV1JwWVZOb1lYSmxaRlZKUm5Wc2JG
TmpjbVZsYmxadmJIVnRaVk5zYVdSbGNrTXkKUlhZQVgxcE9NakZOWldScFlWTm9ZWEpsWkZWSlEy
OXVkSEp2YkhORU1FVjJBSDVOWldScFlWTm9ZWEpsWkZWSlEyOXVkSEp2YkhNQQpYMXBrYkZCMkFH
OXdaWEpoZEc5eUlHUmxiR1YwWlFCZldrNHlNVTFsWkdsaFUyaGhjbVZrVlVsRGIyNTBjbTlzYzBR
eFJYWUFYMXBPCk1qRk5aV1JwWVZOb1lYSmxaRlZKUTI5dWRISnZiSE5FTWtWMkFGOWFUakV6VFdW
a2FXRkRiMjUwY205c2MwUXlSWFlBWDFwT016Vk4KWldScFlWTm9ZWEpsWkZWSlJuVnNiRk5qY21W
bGJsWnZiSFZ0WlZOc2FXUmxja1F3UlhZQWZrMWxaR2xoVTJoaGNtVmtWVWxHZFd4cwpVMk55WldW
dVZtOXNkVzFsVTJ4cFpHVnlBRjlhVGpNMVRXVmthV0ZUYUdGeVpXUlZTVVoxYkd4VFkzSmxaVzVX
YjJ4MWJXVlRiR2xrClpYSkVNVVYyQUY5YVRqTTFUV1ZrYVdGVGFHRnlaV1JWU1VaMWJHeFRZM0ps
Wlc1V2IyeDFiV1ZUYkdsa1pYSkVNa1YyQUY5YVRqRTAKVFdWa2FXRlZTVVZzWlcxbGJuUkVNa1Yy
QUY5YVRqRTBUV1ZrYVdGVlNVVnNaVzFsYm5SRU1FVjJBRjlhVGpFMFRXVmthV0ZWU1VWcwpaVzFs
Ym5SRU1VVjJBRjlhVGpOWFZFWTVVbVYwWVdsdVVIUnlTVkEzUTBkTVlYbGxja1ZFTVVWMkFGOWFU
ak5YVkVZNVVtVjBZV2x1ClVIUnlTVkEzUTBkTVlYbGxja1ZFTWtWMkFGOWFUalF5VFdWa2FXRlRh
R0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmxja0poWTJ0bmNtOTEKYm1SRmJHVnRaVzUwUkRCRmRnQitU
V1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5zYVdSbGNrSmhZMnRuY205MWJtUkZiR1Z0Wlc1MApB
RjlhVGpReVRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsY2tKaFkydG5jbTkxYm1SRmJH
VnRaVzUwUkRGRmRnQmZXazQwCk1rMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKQ1lX
TnJaM0p2ZFc1a1JXeGxiV1Z1ZEVReVJYWUFYMXBPTXpkTlpXUnAKWVZOb1lYSmxaRlZKVm05c2RX
MWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTBSREJGZGdCK1RXVmthV0ZUYUdGeVpXUlZTVlp2YkhW
dApaVk5zYVdSbGNsUm9kVzFpUld4bGJXVnVkQUJmV2s0ek4wMWxaR2xoVTJoaGNtVmtWVWxXYjJ4
MWJXVlRiR2xrWlhKVWFIVnRZa1ZzClpXMWxiblJFTVVWMkFGOWFUak0zVFdWa2FXRlRhR0Z5WldS
VlNWWnZiSFZ0WlZOc2FXUmxjbFJvZFcxaVJXeGxiV1Z1ZEVReVJYWUEKWDFwT01qVk5aV1JwWVZO
b1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeVJEQkZkZ0IrVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0
WlZOcwphV1JsY2dCZldrNHlOVTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsa1pYSkVNVVYy
QUY5YVRqSTFUV1ZrYVdGVGFHRnlaV1JWClNWWnZiSFZ0WlZOc2FXUmxja1F5UlhZQVgxcE9NamRO
WldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpFTUVWMkFINU4KWldScFlWTm9ZWEps
WkZWSlZHbHRaV3hwYm1WVGJHbGtaWElBWDFwT01qZE5aV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBi
bVZUYkdsawpaWEpFTVVWMkFGOWFUakkzVFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzYVc1bFUyeHBa
R1Z5UkRKRmRnQmZXazR5TVUxbFpHbGhWVWxVCmFXMWxiR2x1WlZOc2FXUmxja1F5UlhZQVgxcE9N
emxOWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpVYUhWdFlrVnMKWlcxbGJuUkVN
RVYyQUg1TlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJu
UUFYMXBPTXpsTgpaV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUYkdsa1pYSlVhSFZ0WWtWc1pX
MWxiblJFTVVWMkFGOWFUak01VFdWa2FXRlRhR0Z5ClpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVZH
aDFiV0pGYkdWdFpXNTBSREpGZGdCZldrNHpNRTFsWkdsaFUyaGhjbVZrVlVsQ1lXTnIKWjNKdmRX
NWtSV3hsYldWdWRFUXdSWFlBZmsxbFpHbGhVMmhoY21Wa1ZVbENZV05yWjNKdmRXNWtSV3hsYldW
dWRBQmZXazR6TUUxbApaR2xoVTJoaGNtVmtWVWxDWVdOclozSnZkVzVrUld4bGJXVnVkRVF4UlhZ
QVgxcE9NekJOWldScFlWTm9ZWEpsWkZWSlFtRmphMmR5CmIzVnVaRVZzWlcxbGJuUkVNa1YyQUY5
YVRqSTNUV1ZrYVdGVGFHRnlaV1JWU1VORFNXMWhaMlZGYkdWdFpXNTBSREJGZGdCK1RXVmsKYVdG
VGFHRnlaV1JWU1VORFNXMWhaMlZGYkdWdFpXNTBBRjlhVGpJM1RXVmthV0ZUYUdGeVpXUlZTVU5E
U1cxaFoyVkZiR1Z0Wlc1MApSREZGZGdCZldrNHlOMDFsWkdsaFUyaGhjbVZrVlVsRFEwbHRZV2Rs
Uld4bGJXVnVkRVF5UlhZQVgxcE9NalZOWldScFlWTm9ZWEpsClpGVkpTVzFoWjJWRmJHVnRaVzUw
UkRKRmRnQitUV1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWRBQmZXazR5TlUxbFpHbGgK
VTJoaGNtVmtWVWxKYldGblpVVnNaVzFsYm5SRU1FVjJBRjlhVGpJMVRXVmthV0ZUYUdGeVpXUlZT
VWx0WVdkbFJXeGxiV1Z1ZEVReApSWFlBWDFwT05EZE5aV1JwWVZOb1lYSmxaRlZKUm5Wc2JGTmpj
bVZsYmxadmJIVnRaVk5zYVdSbGNsUm9kVzFpUld4bGJXVnVkRU14ClJYWUFYMXBPTkRkTlpXUnBZ
Vk5vWVhKbFpGVkpSblZzYkZOamNtVmxibFp2YkhWdFpWTnNhV1JsY2xSb2RXMWlSV3hsYldWdWRF
TXkKUlhZQVgxcE9ORGROWldScFlWTm9ZWEpsWkZWSlJuVnNiRk5qY21WbGJsWnZiSFZ0WlZOc2FX
UmxjbFJvZFcxaVJXeGxiV1Z1ZEVRdwpSWFlBZmsxbFpHbGhVMmhoY21Wa1ZVbEdkV3hzVTJOeVpX
VnVWbTlzZFcxbFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1MEFGOWFUalEzClRXVmthV0ZUYUdGeVpX
UlZTVVoxYkd4VFkzSmxaVzVXYjJ4MWJXVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUkVNVVYyQUY5
YVRqUTMKVFdWa2FXRlRhR0Z5WldSVlNVWjFiR3hUWTNKbFpXNVdiMngxYldWVGJHbGtaWEpVYUhW
dFlrVnNaVzFsYm5SRU1rVjJBRjlhVGpJMwpUV1ZrYVdGVGFHRnlaV1JWU1VORFNXMWhaMlZGYkdW
dFpXNTBRekZGZGdCZldrNHlOMDFsWkdsaFUyaGhjbVZrVlVsRFEwbHRZV2RsClJXeGxiV1Z1ZEVN
eVJYWUFYMXB1ZDIwQWIzQmxjbUYwYjNJZ2JtVjNBRjlhVERJeWNtOTFibVJTWldOMFEyOXVkR0Zw
Ym5OUWIybHUKZERaRFIxSmxZM1JrTjBOSFVHOXBiblFBY205MWJtUlNaV04wUTI5dWRHRnBibk5R
YjJsdWRBQmZXa3d5TjJOeVpXRjBaVU52YlhCaApkR2xpYkdWTVlYbGxja2x1VW1WamRGQTVRMGRE
YjI1MFpYaDBOa05IVW1WamRGQkxNVFJmWDBOR1JHbGpkR2x2Ym1GeWVRQmpjbVZoCmRHVkRiMjF3
WVhScFlteGxUR0Y1WlhKSmJsSmxZM1FBWDFwTU1qTmhaR1JTYjNWdVpHVmtVbVZqZEZSdlEyOXVk
R1Y0ZEZBNVEwZEQKYjI1MFpYaDBOa05IVW1WamRHUUFZV1JrVW05MWJtUmxaRkpsWTNSVWIwTnZi
blJsZUhRQVgxcE9NakZOWldScFlWVkpWR2x0Wld4cApibVZUYkdsa1pYSkRNa1YyQUY5YVRqSXhU
V1ZrYVdGVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5UkRCRmRnQmZXazR5TVUxbFpHbGhWVWxVCmFXMWxi
R2x1WlZOc2FXUmxja1F4UlhZQVgxcE1NVEJEUjFOcGVtVk5ZV3RsWkdRQVEwZFRhWHBsVFdGclpR
QmZXa3d5T0hCdmFXNTAKU1hOWGFYUm9hVzVFYVhOMFlXNWpaVTltVUc5cGJuUTNRMGRRYjJsdWRG
TmZaQUJ3YjJsdWRFbHpWMmwwYUdsdVJHbHpkR0Z1WTJWUApabEJ2YVc1MEFGOWFUREV4UTBkUWIy
bHVkRTFoYTJWa1pBQkRSMUJ2YVc1MFRXRnJaUUJmV2t3eE1FTkhVbVZqZEUxaGEyVmtaR1JrCkFF
TkhVbVZqZEUxaGEyVUFYMXBNTVRCa2NtRjNVMmhoWkc5M1VEbERSME52Ym5SbGVIUTJRMGRTWldO
MFVFdDJOa05IVTJsNlpXUlEKTjBOSFEyOXNiM0lBWkhKaGQxTm9ZV1J2ZHdCZldrd3lNbkpsWTNS
R2IzSlRhR0ZrYjNkUGNHVnlZWFJwYjI0MlEwZFNaV04wTmtOSApVMmw2WldRQWNtVmpkRVp2Y2xO
b1lXUnZkMDl3WlhKaGRHbHZiZ0JmV2t3eU5ITm9ZV1J2ZDBSbGRHRnBiSE5KYmtKaGMyVlRjR0Zq
ClpWQTVRMGREYjI1MFpYaDBVbVJTTmtOSFUybDZaUUJ6YUdGa2IzZEVaWFJoYVd4elNXNUNZWE5s
VTNCaFkyVUFYMXBNTWpoZlgwTkgKVTJsNlpVRndjR3g1UVdabWFXNWxWSEpoYm5ObWIzSnROa05I
VTJsNlpURTNRMGRCWm1acGJtVlVjbUZ1YzJadmNtMEFYMTlEUjFOcAplbVZCY0hCc2VVRm1abWx1
WlZSeVlXNXpabTl5YlFCZldrd3hOV1J5WVhkSmJtNWxjbE5vWVdSdmQxQTVRMGREYjI1MFpYaDBO
a05IClVtVmpkRkJMZGpaRFIxTnBlbVZrVURkRFIwTnZiRzl5QUdSeVlYZEpibTVsY2xOb1lXUnZk
d0JmV2t3eE5tUnlZWGRKYldGblpVOXkKVEdGNVpYSlFPVU5IUTI5dWRHVjRkRFpEUjFKbFkzUlFT
M1lBWkhKaGQwbHRZV2RsVDNKTVlYbGxjZ0JmV2t3ek5HTnZibk4wY21GcApibEpsWTNSUWNtVnpa
WEoyYVc1blFYTndaV04wVW1GMGFXODJRMGRTWldOME5rTkhVMmw2WlFCamIyNXpkSEpoYVc1U1pX
TjBVSEpsCmMyVnlkbWx1WjBGemNHVmpkRkpoZEdsdkFGOWFUREl4WTNKbFlYUmxRMjl0Y0dGMGFX
SnNaVXhoZVdWeVVEbERSME52Ym5SbGVIUTIKUTBkVGFYcGxVRXN4TkY5ZlEwWkVhV04wYVc5dVlY
SjVBR055WldGMFpVTnZiWEJoZEdsaWJHVk1ZWGxsY2dCZldrd3hOWGxUWTJGcwpaVWx1UTI5dWRH
VjRkRkE1UTBkRGIyNTBaWGgwQUhsVFkyRnNaVWx1UTI5dWRHVjRkQUJmV2t3eE5YaFRZMkZzWlVs
dVEyOXVkR1Y0CmRGQTVRMGREYjI1MFpYaDBBSGhUWTJGc1pVbHVRMjl1ZEdWNGRBQmZXa3d4T1Y5
ZlEwZFRhWHBsUlhGMVlXeFViMU5wZW1VMlEwZFQKYVhwbFUxOEFYMTlEUjFOcGVtVkZjWFZoYkZS
dlUybDZaUUJmV2t3ek5XUnlZWGN6VUdGeWRFSmhibTVsY2tsdVVtVmpkRkpsYkdGMAphWFpsVkc5
RlpHZGxVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBNVEJEUjFKbFkzUkZaR2RsWkZCTGRsQTNRMGRE
YjJ4dmNsTTBYd0JrCmNtRjNNMUJoY25SQ1lXNXVaWEpKYmxKbFkzUlNaV3hoZEdsMlpWUnZSV1Ju
WlFCZldrd3pNbU55WldGMFpVTkhUR0Y1WlhKR2NtOXQKVUVSR1JHRjBZVkJ5YjNacFpHVnlVREUw
UTBkRVlYUmhVSEp2ZG1sa1pYSUFZM0psWVhSbFEwZE1ZWGxsY2taeWIyMVFSRVpFWVhSaApVSEp2
ZG1sa1pYSUFYMXBNTWpsZlgwTkhVRzlwYm5SQmNIQnNlVUZtWm1sdVpWUnlZVzV6Wm05eWJUZERS
MUJ2YVc1ME1UZERSMEZtClptbHVaVlJ5WVc1elptOXliUUJmWDBOSFVHOXBiblJCY0hCc2VVRm1a
bWx1WlZSeVlXNXpabTl5YlFCZldrNHhORTFsWkdsaFZVbEYKYkdWdFpXNTBRekpGZGdCZldrNHpW
MVJHT1ZKbGRHRnBibEIwY2tsUU4wTkhUR0Y1WlhKRlF6RkZkZ0JmV2s0elYxUkdPVkpsZEdGcApi
bEIwY2tsUU4wTkhUR0Y1WlhKRlF6SkZkZ0JyUTBkQ2JHVnVaRTF2WkdWT2IzSnRZV3dBYTBOSFFt
eGxibVJOYjJSbFRYVnNkR2x3CmJIa0FhME5IUW14bGJtUk5iMlJsVTJOeVpXVnVBR3REUjBKc1pX
NWtUVzlrWlU5MlpYSnNZWGtBYTBOSFFteGxibVJOYjJSbFJHRnkKYTJWdUFHdERSMEpzWlc1a1RX
OWtaVXhwWjJoMFpXNEFhME5IUW14bGJtUk5iMlJsUTI5c2IzSkViMlJuWlFCclEwZENiR1Z1WkUx
dgpaR1ZEYjJ4dmNrSjFjbTRBYTBOSFFteGxibVJOYjJSbFUyOW1kRXhwWjJoMEFHdERSMEpzWlc1
a1RXOWtaVWhoY21STWFXZG9kQUJyClEwZENiR1Z1WkUxdlpHVkVhV1ptWlhKbGJtTmxBR3REUjBK
c1pXNWtUVzlrWlVWNFkyeDFjMmx2YmdCclEwZENiR1Z1WkUxdlpHVkkKZFdVQWEwTkhRbXhsYm1S
TmIyUmxVMkYwZFhKaGRHbHZiZ0JyUTBkQ2JHVnVaRTF2WkdWRGIyeHZjZ0JyUTBkQ2JHVnVaRTF2
WkdWTQpkVzFwYm05emFYUjVBR3REUjBKc1pXNWtUVzlrWlVOc1pXRnlBR3REUjBKc1pXNWtUVzlr
WlVOdmNIa0FhME5IUW14bGJtUk5iMlJsClUyOTFjbU5sU1c0QWEwTkhRbXhsYm1STmIyUmxVMjkx
Y21ObFQzVjBBR3REUjBKc1pXNWtUVzlrWlZOdmRYSmpaVUYwYjNBQWEwTkgKUW14bGJtUk5iMlJs
UkdWemRHbHVZWFJwYjI1UGRtVnlBR3REUjBKc1pXNWtUVzlrWlVSbGMzUnBibUYwYVc5dVNXNEFh
ME5IUW14bApibVJOYjJSbFJHVnpkR2x1WVhScGIyNVBkWFFBYTBOSFFteGxibVJOYjJSbFJHVnpk
R2x1WVhScGIyNUJkRzl3QUd0RFIwSnNaVzVrClRXOWtaVmhQVWdCclEwZENiR1Z1WkUxdlpHVlFi
SFZ6UkdGeWEyVnlBR3REUjBKc1pXNWtUVzlrWlZCc2RYTk1hV2RvZEdWeUFFTkgKUW14bGJtUk5i
MlJsQUVOSFVtVmpkRTFwYmxoRlpHZGxBRU5IVW1WamRFMXBibGxGWkdkbEFFTkhVbVZqZEUxaGVG
aEZaR2RsQUVOSApVbVZqZEUxaGVGbEZaR2RsQUVOSFVtVmpkRVZrWjJVQVYwdE5aV1JwWVZWSlVH
RnlkRVoxYkd4elkzSmxaVzVDZFhSMGIyNEFWMHROClpXUnBZVlZKVUdGeWRFMTFkR1ZDZFhSMGIy
NEFWMHROWldScFlWVkpVR0Z5ZEZCc1lYbENkWFIwYjI0QVYwdE5aV1JwWVZWSlVHRnkKZEZObFpX
dENZV05yUW5WMGRHOXVBRmRMVFdWa2FXRlZTVkJoY25SVFpXVnJSbTl5ZDJGeVpFSjFkSFJ2YmdC
WFMwMWxaR2xoVlVsUQpZWEowVkdsdFpXeHBibVZUYkdsa1pYSUFWMHROWldScFlWVkpVR0Z5ZEZS
cGJXVnNhVzVsVTJ4cFpHVnlWR2gxYldJQVYwdE5aV1JwCllWVkpVR0Z5ZEZKbGQybHVaRUoxZEhS
dmJnQlhTMDFsWkdsaFZVbFFZWEowVTJWbGExUnZVbVZoYkhScGJXVkNkWFIwYjI0QVYwdE4KWldS
cFlWVkpVR0Z5ZEZOb2IzZERiRzl6WldSRFlYQjBhVzl1YzBKMWRIUnZiZ0JYUzAxbFpHbGhWVWxR
WVhKMFNHbGtaVU5zYjNObApaRU5oY0hScGIyNXpRblYwZEc5dUFGZExUV1ZrYVdGVlNWQmhjblJW
YmsxMWRHVkNkWFIwYjI0QVYwdE5aV1JwWVZWSlVHRnlkRkJoCmRYTmxRblYwZEc5dUFGZExUV1Zr
YVdGVlNWQmhjblJDWVdOclozSnZkVzVrQUZkTFRXVmthV0ZWU1ZCaGNuUkRkWEp5Wlc1MFZHbHQK
WlVScGMzQnNZWGtBVjB0TlpXUnBZVlZKVUdGeWRGUnBiV1ZTWlcxaGFXNXBibWRFYVhOd2JHRjVB
RmRMVFdWa2FXRlZTVkJoY25SVApkR0YwZFhORWFYTndiR0Y1QUZkTFRXVmthV0ZWU1ZCaGNuUkRi
MjUwY205c2MxQmhibVZzQUZkTFRXVmthV0ZWU1ZCaGNuUldiMngxCmJXVlRiR2xrWlhKRGIyNTBZ
V2x1WlhJQVYwdE5aV1JwWVZWSlVHRnlkRlp2YkhWdFpWTnNhV1JsY2dCWFMwMWxaR2xoVlVsUVlY
SjAKVm05c2RXMWxVMnhwWkdWeVZHaDFiV0lBVjB0TlpXUnBZVlZKVUdGeWRFWjFiR3hUWTNKbFpX
NVdiMngxYldWVGJHbGtaWElBVjB0TgpaV1JwWVZWSlVHRnlkRVoxYkd4VFkzSmxaVzVXYjJ4MWJX
VlRiR2xrWlhKVWFIVnRZZ0JYUzAxbFpHbGhWVWxRWVhKMFZtOXNkVzFsClUyeHBaR1Z5VFhWMFpV
SjFkSFJ2YmdCWFMwMWxaR2xoVlVsUVlYSjBWR1Y0ZEZSeVlXTnJSR2x6Y0d4aGVVTnZiblJoYVc1
bGNnQlgKUzAxbFpHbGhWVWxRWVhKMFZHVjRkRlJ5WVdOclJHbHpjR3hoZVFCWFMwMWxaR2xoVlVs
UVlYSjBSWGhwZEVaMWJHeHpZM0psWlc1QwpkWFIwYjI0QWEwTkhSbTlqZFhOU2FXNW5WR2x1ZEVK
c2RXVUFhME5IUm05amRYTlNhVzVuVkdsdWRFZHlZWEJvYVhSbEFFTkhSbTlqCmRYTlNhVzVuVkds
dWRBQnJRMGRHYjJOMWMxSnBibWRQY21SbGNtbHVaMDV2Ym1VQWEwTkhSbTlqZFhOU2FXNW5UM0pr
WlhKcGJtZEMKWld4dmR3QnJRMGRHYjJOMWMxSnBibWRQY21SbGNtbHVaMEZpYjNabEFFTkhSbTlq
ZFhOU2FXNW5UM0prWlhKcGJtY0FhME5IVUVSRwpUV1ZrYVdGQ2IzZ0FhME5IVUVSR1EzSnZjRUp2
ZUFCclEwZFFSRVpDYkdWbFpFSnZlQUJyUTBkUVJFWlVjbWx0UW05NEFHdERSMUJFClJrRnlkRUp2
ZUFCRFIxQkVSa0p2ZUFCMGFHbHpBR1JoZEdFQVgxOURSa1JoZEdFQVEwWkVZWFJoVW1WbUFHUmhk
R0ZRY205MmFXUmwKY2dCRFIwUmhkR0ZRY205MmFXUmxjZ0JEUjBSaGRHRlFjbTkyYVdSbGNsSmxa
Z0JzYjJOaGRHbHZibk1BWTI5dGNHOXVaVzUwY3dCagpiM1Z1ZEFCc2IyNW5JSFZ1YzJsbmJtVmtJ
R2x1ZEFCemFYcGxYM1FBWTI5dWRHVjRkQUJ5WldOMEFHVmtaMlVBWm5KaFkzUnBiMjRBClltOTBk
Rzl0QUcxcFpHUnNaUUIwYjNBQWRIbHdaUUJEUmxSNWNHVkpSQUIwY21GdWMyWnZjbTBBWVFCaUFH
TUFaQUIwZUFCMGVRQkQKUjBGbVptbHVaVlJ5WVc1elptOXliUUIrUTBkQlptWnBibVZVY21GdWMy
WnZjbTBBWDFwT01UZERSMEZtWm1sdVpWUnlZVzV6Wm05eQpiV0ZUUlU5VFh3QjVVMk5oYkdVQWVG
TmpZV3hsQUd4aGVXVnlRMjl1ZEdWNGRBQmhkWGhwYkdsaGNubEpibVp2QUY5ZlEwWkVhV04wCmFX
OXVZWEo1QUVOR1JHbGpkR2x2Ym1GeWVWSmxaZ0J6WTJGc1pXUlRhWHBsQUd4aGVXVnlSbTl5U1cx
aFoyVUFjbVZqYjJ4dmNrTnYKYm5SbGVIUUFhVzFoWjJWUGNreGhlV1Z5QUdsdFlXZGxWMmwwYUVK
aFkydG5jbTkxYm1RQWNHRnBiblJTWldOMEFHSnZkVzVrY3dCbQpiMk4xYzFKcGJtZFRkSGxzWlFC
MlpYSnphVzl1QUhScGJuUUFiM0prWlhKcGJtY0FZV3h3YUdFQWRHaHlaWE5vYjJ4a0FHRmpZM1Z0
CmRXeGhkR1VBUTBkR2IyTjFjMUpwYm1kVGRIbHNaUUJpYkhWeUFHTnZiblJsYm5SU1pXTjBBSE5v
WVdSdmQwSnNkWElBYzJoaFpHOTMKVDJabWMyVjBBR1JsZG1salpWSmxZM1FBZFhObGNsUnZRbUZ6
WlVOVVRRQmliSFZ5VW1Ga2FYVnpBRU1BUWdCRUFFRUFjMjFoYkd4RgphV2RsYm5aaGJIVmxBR2x0
WVdkbFVtVmpkQUJpWVdOclozSnZkVzVrVEdGNVpYSUFjRzlwYm5RQVkyVnVkR1Z5QUdScGMzUmhi
bU5sCkFHUjRBR1I1QUdkeVlXUnBaVzUwVEdGNVpYSUFaM0poWkdsbGJuUkRiMjUwWlhoMEFHTnNh
WEJDYjNWdVpITUFhVzFoWjJWTVlYbGwKY2dCbWNtRmpkR2x2YmxKbGJXRnBibWx1WndCemJHOXdB
R3h2WVdSbFpGSmxZM1FBYUdsc2FYUmxVbVZqZEFCd1lYUm9BRU5IVUdGMAphQUJEUjAxMWRHRmli
R1ZRWVhSb1VtVm1BSGd3QUhreEFIZ3hBSGt5QUhneUFHbHVibVZ5VW1WamRBQnZjSFJwYjI1ekFI
TmpZV3hsClpGSmhaR2wxY3dCMGFIVnRZbEpsWTNRQWVUUUFlVE1BZURNQVltRmphMmR5YjNWdVpF
TnZiblJsZUhRQVltRmphMmR5YjNWdVpGSmwKWTNRQVkyOXVkSEp2YkZCaGNuUkpSQUJ3WVhKMEFI
QjBjZ0J3QUhOdmRYSmpaVkpsWTNRQVpHVnpkR2x1WVhScGIyNVNaV04wQUdSdgpZM1Z0Wlc1MEFF
TkhVRVJHUkc5amRXMWxiblFBUTBkUVJFWkViMk4xYldWdWRGSmxaZ0J3WVdkbEFFTkhVRVJHVUdG
blpRQkRSMUJFClJsQmhaMlZTWldZQWNtOTBZWFJwYjI1QmJtZHNaUUJrWlhOMGFXNWhkR2x2YmxC
dmFXNTBBR1JsYzNScGJtRjBhVzl1VTJsNlpRQjQKTkFCd01RQndNZ0IwQUhNQVlYTndaV04wVW1G
MGFXOEFjMmw2WldSU1pXTjBBSE5wZW1VeEFITnBlbVV5QUcwQkFBQUFBQUFBZndFQQpBQUFBQUFC
NUFnQUFBQUFBQVBzQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSVlCQUFBQUFBQUFtQUVB
QUFBQUFBRDdBZ0FBCkFBQUFBSDBEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKOEJBQUFB
QUFBQXNRRUFBQUFBQUFCOUF3QUFBQUFBQVA4REFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUxnQkFBQUFBQUFBeWdFQUFBQUFBQUQvQXdBQUFBQUFBSUVFQUFBQUFBQUFBQUFBQUFBQQpBQUFB
QUFBQUFBQUFBTkVCQUFBQUFBQUE0d0VBQUFBQUFBQ0JCQUFBQUFBQUFBTUZBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBCkFPb0JBQUFBQUFBQS9BRUFBQUFBQUFBREJRQUFBQUFBQUlVRkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1DQUFBQUFBQUEKRlFJQUFBQUFBQUNGQlFBQUFBQUFB
QWNHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCd0NBQUFBQUFBQUxnSUFBQUFBQUFBSApC
Z0FBQUFBQUFJa0dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURVQ0FBQUFBQUFBUndJQUFB
QUFBQUNKQmdBQUFBQUFBQXNICkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRTRDQUFBQUFB
QUFZQUlBQUFBQUFBQUxCd0FBQUFBQUFJb0hBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFH
Y0NBQUFBQUFBQWVRSUFBQUFBQUFDS0J3QUFBQUFBQUFjSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QQpBQUFBQUNVUUFBQUFBQUFBU3hBQUFBQUFBQUJiRUFBQUFBQUFBR3NRQUFBQUFBQUFrQkFBQUFB
QUFBQ2xFQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQkxFQUFBQUFBQUFGc1FBQUFBQUFB
QWF4QUFBQUFBQUFDUUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBV0V3QUFBQUFBQUow
VUFBQUFBQUFBdlJRQUFBQUFBQURCRlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQktIQUFB
QUFBQQpBSWdjQUFBQUFBQUFqUndBQUFBQUFBQ1JIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFDVkhnQUFBQUFBQUpnZUFBQUFBQUFBCnVoNEFBQUFBQUFBM0h3QUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUR6SVFBQUFBQUFBQXdpQUFBQUFBQUFFQ0lBQUFBQUFBQXgKSWdBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQi9JQUFBQUFBQUFERWlBQUFBQUFBQVBpSUFBQUFBQUFCV0lnQUFB
QUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBeElnQUFBQUFBQUQ0aUFBQUFBQUFBVmlJQUFBQUFB
QUIzSWdBQUFBQUFBSDhpQUFBQUFBQUFneUlBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF6
Q1FBQUFBQUFBRHlKQUFBQUFBQUFCZ2xBQUFBQUFBQUtDVUFBQUFBQUFBc0pRQUEKQUFBQUFFa2xB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBJa0FBQUFBQUFBR0NVQUFBQUFBQUFvSlFBQUFB
QUFBQ3dsQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUEFvQUFBQUFBQUFGaWtBQUFBQUFB
QW1LUUFBQUFBQUFEWXBBQUFBQUFBQVd5a0FBQUFBCkFBQnpLUUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBV0tRQUFBQUFBQUNZcEFBQUFBQUFBTmlrQUFBQUFBQUJiS1FBQUFBQUEKQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQURiS3dBQUFBQUFBUEFyQUFBQUFBQUErQ3NBQUFBQUFBQUdMQUFBQUFB
QUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBREZMQUFBQUFBQUFOMHNBQUFBQUFBQTVTd0FBQUFBQUFE
MkxBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURpCkxnQUFBQUFBQU84dUFBQUFBQUFBQVM4
QUFBQUFBQUFWTHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0pNQUFBQUFBQUFLa3cKQUFB
QUFBQUF0akFBQUFBQUFBRERNQUFBQUFBQUFPVXdBQUFBQUFBQTdUQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBcVRBQQpBQUFBQUFDMk1BQUFBQUFBQU1Nd0FBQUFBQUFBNVRBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUF0REVBQUFBQUFBRFhNUUFBCkFBQUFBUDB4QUFBQUFBQUFDaklB
QUFBQUFBQU9NZ0FBQUFBQUFDZ3lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5jeEFBQUEK
QUFBQS9URUFBQUFBQUFBS01nQUFBQUFBQUE0eUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
SG81QUFBQUFBQUFpRGtBQUFBQQpBQUNRT1FBQUFBQUFBSlU1QUFBQUFBQUFuVGtBQUFBQUFBQ21P
UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFESU9RQUFBQUFBCkFOSTVBQUFBQUFBQTNqa0FB
QUFBQUFEa09RQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJZT2dBQUFBQUFBQUU3QUFBQUFB
QUEKRmpzQUFBQUFBQUFlT3dBQUFBQUFBQ3M3QUFBQUFBQUFNenNBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQWVEc0FBQUFBQUFCKwpPd0FBQUFBQUFJWTdBQUFBQUFBQWpEc0FBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBMEVNQUFBQUFBQUQyUXdBQUFBQUFBQVpFCkFBQUFBQUFBRmtRQUFB
QUFBQUE3UkFBQUFBQUFBRk5FQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQWkRBQUFBQUFB
QUJrUUEKQUFBQUFBQVdSQUFBQUFBQUFEdEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUU5
RkFBQUFBQUFBZFVVQUFBQUFBQUNiUlFBQQpBQUFBQUt0RkFBQUFBQUFBcjBVQUFBQUFBQUMvUlFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjFSUUFBQUFBQUFKdEZBQUFBCkFBQUFxMFVBQUFB
QUFBQ3ZSUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDV1VnQUFBQUFBQUtOU0FBQUFBQUFB
clZJQUFBQUEKQUFDL1VnQUFBQUFBQU1oU0FBQUFBQUFBMUZJQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFTV0VBQUFBQUFBQnZZUUFBQUFBQQpBSlZoQUFBQUFBQUFwV0VBQUFBQUFBQ3BZUUFB
QUFBQUFMbGhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUc5aEFBQUFBQUFBCmxXRUFBQUFB
QUFDbFlRQUFBQUFBQUtsaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0JrQUFBQUFBQUF4
bVFBQUFBQUFBRHMKWkFBQUFBQUFBUHhrQUFBQUFBQUFBR1VBQUFBQUFBQWdaUUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFER1pBQUFBQUFBQU94awpBQUFBQUFBQS9HUUFBQUFBQUFBQVpRQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQwWndBQUFBQUFBR0ZvQUFBQUFBQUF4R2tBCkFBQUFB
QURUYVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQm9hQUFBQUFBQUFIcG9BQUFBQUFBQUxt
a0FBQUFBQUFERWFRQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQmFBQUFBQUFBQUpOb0FB
QUFBQUFBOG1rQUFBQUFBQUJDYWdBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUNhYUFBQUFB
QUFBS3hvQUFBQUFBQUFSMm9BQUFBQUFBQ2FhZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFB
Q3phQUFBQUFBQUFNVm9BQUFBQUFBQW4yb0FBQUFBQUFEeWFnQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQURNYUFBQUFBQUEKQU41b0FBQUFBQUFBOTJvQUFBQUFBQUJLYXdBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBRGxhQUFBQUFBQUFQZG9BQUFBQUFBQQpUMnNBQUFBQUFBQ0Vhd0FBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEK2FBQUFBQUFBQUJCcEFBQUFBQUFBaVdzQUFBQUFBQURj
CmF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFYYVFBQUFBQUFBQ2xwQUFBQUFBQUE0V3NB
QUFBQUFBQWxiQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBRDBad0FBQUFBQUFOTnBBQUFB
QUFBQThta0FBQUFBQUFBbGJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBVmJ3QUFBQUFB
QUVWdkFBQUFBQUFBYUc4QUFBQUFBQUNRYndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREFF
Z0FBCkFnQUlHejhBQUVZQ0FBQVpuejhBQUFRQUFBQUFBQUFBZEdVQUFGUUFBQUFBQUFBQW5rUUFB
Q1FuQUFBQUFBQUFJbWdBQUdRbkFBQUEKQUFBQXFrVUFBQVF1QUFBQUFBQUFsMmdBQUVRdUFBQUFB
QUFBamtnQUFGUTRBQUFBQUFBQUtHa0FBSlE0QUFBQUFBQUEzVWtBQU5STQpBQUFBQUFBQXZta0FB
QlJOQUFBQUFBQUE2VW9BQVBSUkFBQUFBQUFBTTJvQUFCUlNBQUFBQUFBQU9FMEFBTFJaQUFBQUFB
QUFyV29BCkFQUlpBQUFBQUFBQWxsQUFBTVJmQUFBQUFBQUFKMnNBQUFSZ0FBQUFBQUFBK0M0QUFB
OW9BQUFBQUFBQTNTOEFBRFpwQUFBQUFBQUEKa2pBQUFQcHBBQUFBQUFBQVJqRUFBRTlxQUFBQUFB
QUErakVBQUtkcUFBQUFBQUFBcmpJQUFQOXFBQUFBQUFBQVlqTUFBRmRyQUFBQQpBQUFBRmpRQUFK
RnJBQUFBQUFBQVd6WUFBTUJzQUFBQUFBQUErajRBQUVZQ0FBQVppRDhBQUFRQUFBQUFBQUFBWFdV
QUFGUUFBQUFBCkFBQUFoMFFBQUNRbkFBQUFBQUFBQzJnQUFHUW5BQUFBQUFBQWswVUFBQVF1QUFB
QUFBQUFnR2dBQUVRdUFBQUFBQUFBZDBnQUFGUTQKQUFBQUFBQUFFV2tBQUpRNEFBQUFBQUFBeGtr
QUFOUk1BQUFBQUFBQXAya0FBQlJOQUFBQUFBQUEwa29BQVBSUkFBQUFBQUFBSEdvQQpBQlJTQUFB
QUFBQUFJVTBBQUxSWkFBQUFBQUFBbG1vQUFQUlpBQUFBQUFBQWYxQUFBTVJmQUFBQUFBQUFFR3NB
QUFSZ0FBQUFBQUFBCjRTNEFBQTlvQUFBQUFBQUF4aThBQURacEFBQUFBQUFBZXpBQUFQcHBBQUFB
QUFBQUx6RUFBRTlxQUFBQUFBQUE0ekVBQUtkcUFBQUEKQUFBQWx6SUFBUDlxQUFBQUFBQUFTek1B
QUZkckFBQUFBQUFBL3pNQUFKRnJBQUFBQUFBQVJEWUFBTUJzQUFBQUFBQUE0ajRBQU04SgpBQUFa
Y0Q4QUFBUUFBQUFBQUFBQVJXVUFBRlFBQUFBQUFBQUFiMFFBQUNRbkFBQUFBQUFBODJjQUFHUW5B
QUFBQUFBQWUwVUFBQVF1CkFBQUFBQUFBYUdnQUFFUXVBQUFBQUFBQVlFZ0FBRlE0QUFBQUFBQUEr
bWdBQUpRNEFBQUFBQUFBcmtrQUFOUk1BQUFBQUFBQWoya0EKQUJSTkFBQUFBQUFBdWtvQUFQUlJB
QUFBQUFBQUJHb0FBQlJTQUFBQUFBQUFDVTBBQUxSWkFBQUFBQUFBZm1vQUFQUlpBQUFBQUFBQQpa
MUFBQU1SZkFBQUFBQUFBK0dvQUFBUmdBQUFBQUFBQXlTNEFBQTlvQUFBQUFBQUFyaThBQURacEFB
QUFBQUFBWXpBQUFQcHBBQUFBCkFBQUFGekVBQUU5cUFBQUFBQUFBeXpFQUFLZHFBQUFBQUFBQWZ6
SUFBUDlxQUFBQUFBQUFNek1BQUZkckFBQUFBQUFBNXpNQUFKRnIKQUFBQUFBQUFMVFlBQU1Cc0FB
QUFBQUFBdXkwQUFFc0tBQUFEU2o4QUFBUUFBQUFBQUFBQW5DNEFBQTlvQUFBQUFBQUFseThBQURa
cApBQUFBQUFBQVdDMEFBSHN0QUFBRUhRc0FBT29BQUFBQUFBQUE5UTRBQU40WkFBQUFBQUFBdXlR
QUFBSlVBQUFBQUFBQVlTY0FBTFpkCkFBQUFBQUFBYXdzQUFKWUxBQUFHTlFzQUFDWUJBQUFBQUFB
QVF3d0FBRk1KQUFBQUFBQUFKa01BQU1nUEFBQUFBQUFBdEEwQUFIRVcKQUFBQUFBQUFpdzRBQUhj
WUFBQUFBQUFBRFE4QUFCb2FBQUFBQUFBQVJDd0FBR3dzQUFBQk0wQUFBSGtDQUFBQUFBQUFCaXdB
QUNncwpBQUFCSjBBQUFHMEJBQUFBQUFBQVVDY0FBSGtuQUFBQmFrQUFBUHNDQUFBQUFBQUFFQ2NB
QURNbkFBQUJYa0FBQUlZQkFBQUFBQUFBCk9pc0FBR01yQUFBQm9VQUFBSDBEQUFBQUFBQUEraW9B
QUIwckFBQUJsVUFBQUo4QkFBQUFBQUFBUWlrQUFHWXBBQUFCMkVBQUFQOEQKQUFBQUFBQUFEQ2tB
QUNvcEFBQUJ6RUFBQUxnQkFBQUFBQUFBZXlNQUFKMGpBQUFCRDBFQUFJRUVBQUFBQUFBQVNTTUFB
R1VqQUFBQgpBMEVBQU5FQkFBQUFBQUFBbHlJQUFMZ2lBQUFCUmtFQUFBTUZBQUFBQUFBQVp5SUFB
SUlpQUFBQk9rRUFBT29CQUFBQUFBQUFXQ1FBCkFIc2tBQUFCZlVFQUFJVUZBQUFBQUFBQUpDUUFB
RUVrQUFBQmNVRUFBQU1DQUFBQUFBQUFSQ1VBQUd3bEFBQUJ0RUVBQUFjR0FBQUEKQUFBQUJpVUFB
Q2dsQUFBQnFFRUFBQndDQUFBQUFBQUFNeW9BQUZzcUFBQUI2MEVBQUlrR0FBQUFBQUFBOVNrQUFC
Y3FBQUFCMzBFQQpBRFVDQUFBQUFBQUFWQ2dBQUhrb0FBQUJJa0lBQUFzSEFBQUFBQUFBSENnQUFE
c29BQUFCRmtJQUFFNENBQUFBQUFBQVNTWUFBSEVtCkFBQUJXVUlBQUlvSEFBQUFBQUFBQ3lZQUFD
MG1BQUFCVFVJQUFHY0NBQUFBQUFBQUlTSUFBRWNpQUFBTEhBd0FBUDRJQUFBQUFBQUEKM2hJQUFN
a25BQUFBQUFBQUV4TUFBRk1vQUFBQUFBQUFPaGNBQUdzdkFBQUFBQUFBYnhjQUFNZ3ZBQUFBQUFB
QWVoMEFBQXREQUFBQQpBQUFBaFNFQUFIaE5BQUFBQUFBQVVTUUFBRWhUQUFBQUFBQUFoaVFBQUtW
VEFBQUFBQUFBanlZQUFEWmJBQUFBQUFBQUdpa0FBR3RnCkFBQUFBQUFBb1RvQUFMVTZBQUFINkdB
QUFBVU1BQUFBQUFBQVFXRUFBSnNOQUFBQUFBQUF1bUVBQUkwT0FBQUFBQUFBSHhRQUFOc3IKQUFB
QUFBQUFnUlFBQU1Vc0FBQUFBQUFBSjBjQUFLMDJBQUFBQUFBQUJra0FBSG81QUFBQUFBQUFmVDBB
QUo4OUFBQUlUME1BQVBRUApBQUFBQUFBQWlCQUFBSkFrQUFBQUFBQUFTQk1BQUxjb0FBQUFBQUFB
cEJjQUFGWXdBQUFBQUFBQXJ4MEFBSmREQUFBQUFBQUF1aUVBCkFQdE5BQUFBQUFBQXhDWUFBSXRi
QUFBQUFBQUFUeWtBQVBkZ0FBQUFBQUFBVFQwQUFHMDlBQUFKcUVNQUFDVVFBQUFBQUFBQUJCRUEK
QU13a0FBQUFBQUFBeEJNQUFQQW9BQUFBQUFBQUlCZ0FBSWt3QUFBQUFBQUEzeGdBQUxReEFBQUFB
QUFBS3g0QUFOQkRBQUFBQUFBQQo2aDRBQUU5RkFBQUFBQUFBeXlrQUFFbGhBQUFBQUFBQWlpb0FB
S0JrQUFBQUFBQUFIVDBBQUQwOUFBQUp4ME1BQUVzUUFBQUFBQUFBCk1SRUFBUElrQUFBQUFBQUE4
Uk1BQUJZcEFBQUFBQUFBVFJnQUFLa3dBQUFBQUFBQURCa0FBTmN4QUFBQUFBQUFXQjRBQVBaREFB
QUEKQUFBQUZ4OEFBSFZGQUFBQUFBQUErQ2tBQUc5aEFBQUFBQUFBdHlvQUFNWmtBQUFBQUFBQXlE
d0FBQWM5QUFBSlowTUFBQ1VRQUFBQQpBQUFBb0JBQUFNd2tBQUFBQUFBQVlCTUFBUEFvQUFBQUFB
QUF2QmNBQUlrd0FBQUFBQUFBZXhnQUFMUXhBQUFBQUFBQXh4MEFBTkJECkFBQUFBQUFBaGg0QUFF
OUZBQUFBQUFBQVp5a0FBRWxoQUFBQUFBQUFKaW9BQUtCa0FBQUFBQUFBYnp3QUFLVThBQUFCVGcw
QUFCWVQKQUFBQUFBQUFrd2dBQUxRSUFBQUJpdzBBQU5rVkFBQUFBQUFBcnlFQUFOa2hBQUFEM1Ew
QUFMa1dBQUFBQUFBQWtFY0FBRkUzQUFBQQpBQUFBVVV3QUFMdFlBQUFBQUFBQWFBZ0FBSWtJQUFB
REpnNEFBQ1lYQUFBQUFBQUF5RWNBQU1ZM0FBQUFBQUFBaVV3QUFDaFpBQUFBCkFBQUFNendBQUY0
OEFBQUVUdzRBQVBVWEFBQUFBQUFBRXpjQUFIVWJBQUFBQUFBQVNWNEFBSlVlQUFBQUFBQUFTMXdB
QUF3akFBQUEKQUFBQVBRZ0FBRjRJQUFBRHRBNEFBRklaQUFBQUFBQUFPaGtBQUtBekFBQUFBQUFB
MHlRQUFEUldBQUFBQUFBQWl3d0FBTFlNQUFBQgozUTRBQUs4WkFBQUFBQUFBQVRzQUFDdzdBQUFD
RWw0QUFFb2NBQUFBQUFBQUxsd0FBREVpQUFBQUFBQUFqenNBQU1zN0FBQUJJVndBCkFQTWhBQUFB
QUFBQVF6c0FBSFk3QUFBQnpWc0FBSDhnQUFBQUFBQUFHQWdBQURZSUFBQUNjQkFBQUVBa0FBQUFB
QUFBRXk4QUFNUnAKQUFBQUFBQUFCaTRBQURRUEFBQUNTVVFBQUNRbkFBQUFBQUFBNmpBQUFFOXFB
QUFBQUFBQVh5NEFBTG9RQUFBQ1ZVVUFBQVF1QUFBQQpBQUFBTmpBQUFQcHBBQUFBQUFBQU9Eb0FB
R1U2QUFBR09FWUFBT0l1QUFBQUFBQUFkMHNBQUpaU0FBQUFBQUFBVjA0QUFLeGFBQUFBCkFBQUF4
VTRBQU5KYUFBQUFBQUFBTTA4QUFPUmFBQUFBQUFBQW9VOEFBUFphQUFBQUFBQUF2amtBQUg0VUFB
QURTRWdBQUZRNEFBQUEKQUFBQTRtZ0FBSlE0QUFBQUFBQUFGVFlBQU1Cc0FBQUFBQUFBdFM0QUFL
d1VBQUFDSWtnQUFGUTRBQUFBQUFBQTZEVUFBTUJzQUFBQQpBQUFBd3hNQUFPb1RBQUFDWUJ3QUFN
ZzVBQUFBQUFBQW9Cd0FBSGc3QUFBQUFBQUE4eE1BQUNFVUFBQUNTQndBQU1nNUFBQUFBQUFBCmlC
d0FBSGc3QUFBQUFBQUFwQlVBQU9VVkFBQUJiQndBQUZnNkFBQUFBQUFBL1M0QUFBWVhBQUFDaUVr
QUFOUk1BQUFBQUFBQVVqSUEKQVA5cUFBQUFBQUFBVHk4QUFOWVlBQUFEbEVvQUFQUlJBQUFBQUFB
QUJqTUFBRmRyQUFBQUFBQUFralFBQU9sckFBQUFBQUFBc2k4QQpBS2NhQUFBQzQwd0FBTFJaQUFB
QUFBQUFuakVBQUtkcUFBQUFBQUFBMGpnQUFQNDRBQUFCdWswQUFFTmFBQUFBQUFBQUV6QUFBSllj
CkFBQUNRVkFBQU1SZkFBQUFBQUFBdWpNQUFKRnJBQUFBQUFBQXZ6Z0FBTVU0QUFBS1pTNEFBQWRv
QUFBQUFBQUFRaThBQUM1cEFBQUEKQUFBQS95OEFBUEpwQUFBQUFBQUFzekFBQUVkcUFBQUFBQUFB
WnpFQUFKOXFBQUFBQUFBQUd6SUFBUGRxQUFBQUFBQUF6eklBQUU5cgpBQUFBQUFBQWd6TUFBSWxy
QUFBQUFBQUFOelFBQU9GckFBQUFBQUFBc1RVQUFMdHNBQUFBQUFBQW1qZ0FBTWNPQUFBQmNpOEFB
RFpwCkFBQUFBQUFBWURjQUFQRWdBQUFCYlRRQUFPbHJBQUFBQUFBQTdnY0FBQTRJQUFBQnJUUUFB
TmhwQUFBQUFBQUE5ekVBQVB3Q0FBQVcKd0dzQUFDSS9BUUFBQUFBQW9Hd0FBRmMvQVFBQUFBQUFY
VzBBQU9JL0FRQUFBQUFBVzI0QUFCZEFBUUFBQUFBQUIyOEFBR0pBQVFBQQpBQUFBN1c4QUFKZEFB
UUFBQUFBQWszQUFBUEpBQVFBQUFBQUFlWEVBQUNkQkFRQUFBQUFBTm5JQUFHSkJBUUFBQUFBQU5I
TUFBSmRCCkFRQUFBQUFBMjNNQUFOSkJBUUFBQUFBQXdYUUFBQWRDQVFBQUFBQUFaM1VBQUVKQ0FR
QUFBQUFBVFhZQUFIZENBUUFBQUFBQTgzWUEKQU1KQ0FRQUFBQUFBMlhjQUFQZENBUUFBQUFBQWYz
Z0FBREpEQVFBQUFBQUFaWGtBQUdkREFRQUFBQUFBOUZJQUFNSkRBUUFBQUFBQQpXMUlBQVBkREFR
QUFBQUFBckhvQUFESkVBUUFBQUFBQXFuc0FBR2RFQVFBQUFBQUExakVBQVB3Q0FBQVdxV3NBQUNJ
L0FRQUFBQUFBCmlXd0FBRmMvQVFBQUFBQUFSbTBBQU9JL0FRQUFBQUFBUkc0QUFCZEFBUUFBQUFB
QThHNEFBR0pBQVFBQUFBQUExbThBQUpkQUFRQUEKQUFBQWZIQUFBUEpBQVFBQUFBQUFZbkVBQUNk
QkFRQUFBQUFBSDNJQUFHSkJBUUFBQUFBQUhYTUFBSmRCQVFBQUFBQUF4SE1BQU5KQgpBUUFBQUFB
QXFuUUFBQWRDQVFBQUFBQUFVSFVBQUVKQ0FRQUFBQUFBTm5ZQUFIZENBUUFBQUFBQTNIWUFBTUpD
QVFBQUFBQUF3bmNBCkFQZENBUUFBQUFBQWFIZ0FBREpEQVFBQUFBQUFUbmtBQUdkREFRQUFBQUFB
M1ZJQUFNSkRBUUFBQUFBQVJGSUFBUGREQVFBQUFBQUEKbFhvQUFESkVBUUFBQUFBQWszc0FBR2RF
QVFBQUFBQUFqakVBQUNJR0FBQVdrbXNBQUJRL0FRQUFBQUFBY213QUFFay9BUUFBQUFBQQpMMjBB
QU5RL0FRQUFBQUFBTFc0QUFBbEFBUUFBQUFBQTJXNEFBRlJBQVFBQUFBQUF2MjhBQUlsQUFRQUFB
QUFBWlhBQUFPUkFBUUFBCkFBQUFTM0VBQUJsQkFRQUFBQUFBQ0hJQUFGUkJBUUFBQUFBQUJuTUFB
SWxCQVFBQUFBQUFyWE1BQU1SQkFRQUFBQUFBazNRQUFQbEIKQVFBQUFBQUFPWFVBQURSQ0FRQUFB
QUFBSDNZQUFHbENBUUFBQUFBQXhYWUFBTFJDQVFBQUFBQUFxM2NBQU9sQ0FRQUFBQUFBVVhnQQpB
Q1JEQVFBQUFBQUFOM2tBQUZsREFRQUFBQUFBdGxJQUFMUkRBUUFBQUFBQUhWSUFBT2xEQVFBQUFB
QUFmbm9BQUNSRUFRQUFBQUFBCmZIc0FBRmxFQVFBQUFBQUFvellBQU1ZMkFBQUVjV3NBQUJRL0FR
QUFBQUFBUzJ3QUFFay9BUUFBQUFBQUdHMEFBTlEvQVFBQUFBQUEKRm00QUFBbEFBUUFBQUFBQUJE
Y0FBTVkyQUFBQkVHd0FBRWsvQVFBQUFBQUFmallBQUR3MkFBQUM5MndBQU5RL0FRQUFBQUFBNzIw
QQpBQWxBQVFBQUFBQUFXVFlBQUR3MkFBQUJ0RzBBQUFsQUFRQUFBQUFBN3pVQUFLYzFBQUFDdUc0
QUFGUkFBUUFBQUFBQW1HOEFBSWxBCkFRQUFBQUFBeHpVQUFLYzFBQUFCWFc4QUFJbEFBUUFBQUFB
QVRqVUFBUFEwQUFBQ1JIQUFBT1JBQVFBQUFBQUFKSEVBQUJsQkFRQUEKQUFBQUhUVUFBUFEwQUFB
QjZYQUFBQmxCQVFBQUFBQUFwRFFBQUdjVUFBQUM4WEVBQUZSQkFRQUFBQUFBNzNJQUFJbEJBUUFB
QUFBQQpmelFBQUQwMEFBQUMwSEVBQUZSQkFRQUFBQUFBeUhJQUFJbEJBUUFBQUFBQVdqUUFBRDAw
QUFBQmpYSUFBSWxCQVFBQUFBQUE5VE1BCkFMY3pBQUFDakhNQUFNUkJBUUFBQUFBQWJIUUFBUGxC
QVFBQUFBQUEwak1BQUxjekFBQUJNWFFBQVBsQkFRQUFBQUFBWlRNQUFBOHoKQUFBRUdIVUFBRFJD
QVFBQUFBQUErSFVBQUdsQ0FRQUFBQUFBWjNvQUFDUkVBUUFBQUFBQVpYc0FBRmxFQVFBQUFBQUFO
ak1BQUE4egpBQUFCdlhVQUFHbENBUUFBQUFBQXJESUFBRXd5QUFBQ3BIWUFBTFJDQVFBQUFBQUFo
SGNBQU9sQ0FRQUFBQUFBZURJQUFFd3lBQUFCClNYY0FBT2xDQVFBQUFBQUFZVEVBQUE4eEFBQUNN
SGdBQUNSREFRQUFBQUFBRUhrQUFGbERBUUFBQUFBQU5ERUFBQTh4QUFBQjFYZ0EKQUZsREFRQUFB
QUFBZGpBQUFIMHdBQUFCOG5rQUFLUkRBUUFBQUFBQXZqRUFBQ0lHQUFBQjRsRUFBT2xEQVFBQUFB
QUFQRGdBQU5JMwpBQUFDUm5vQUFDUkVBUUFBQUFBQVBuc0FBRmxFQVFBQUFBQUFBemdBQU5JM0FB
QUJBM3NBQUZsRUFRQUFBQUFBaGo0QUFNUStBQUFCCndXSUFBQlZ2QUFBQUFBQUFTRk5CU0FFQUFB
Q1pBQUFBTXdFQUFBd0FBQUFBQUFBQUFRQUFBQUVBQmdBQUFBQUFBZ0FBQUFNQUFBQUgKQUFBQUNR
QUFBQXdBQUFBTkFBQUFFQUFBQUJJQUFBQVRBQUFBLy8vLy8vLy8vLzhYQUFBQUdBQUFBQm9BQUFB
Y0FBQUFIZ0FBQVAvLwovLzhnQUFBQUlnQUFBQ1FBQUFBckFBQUFNUUFBQURRQUFBQTNBQUFBT0FB
QUFQLy8vLzg4QUFBQVB3QUFBUC8vLy85QkFBQUFRd0FBCkFFUUFBQUJHQUFBQVJ3QUFBRWdBQUFC
S0FBQUEvLy8vLzAwQUFBQk9BQUFBVVFBQUFGWUFBQUJZQUFBQVhBQUFBUC8vLy85ZUFBQUEKWVFB
QUFHTUFBQUJrQUFBQVpnQUFBR2dBQUFCckFBQUEvLy8vLzJ3QUFBQnRBQUFBYndBQUFQLy8vLzl4
QUFBQWRRQUFBSFlBQUFCNQpBQUFBLy8vLy8zMEFBQUIrQUFBQWdBQUFBSUlBQUFDRkFBQUFod0FB
QUlnQUFBRC8vLy8vaXdBQUFKRUFBQUNTQUFBQS8vLy8vNU1BCkFBQ1VBQUFBbHdBQUFKZ0FBQUNh
QUFBQW5RQUFBS0FBQUFDaUFBQUFwQUFBQUtVQUFBQ25BQUFBcWdBQUFQLy8vLyt1QUFBQXJ3QUEK
QUxNQUFBQzNBQUFBdVFBQUFMb0FBQUM3QUFBQXdRQUFBTU1BQUFESUFBQUF5UUFBQU13QUFBRE9B
QUFBendBQUFOQUFBQURTQUFBQQoxQUFBQVAvLy8vLy8vLy8vMXdBQUFOb0FBQURlQUFBQTRBQUFB
T01BQUFEbEFBQUE2QUFBQVAvLy8vL3BBQUFBN0FBQUFPNEFBQUR2CkFBQUE4UUFBQVBRQUFBRDJB
QUFBK2dBQUFQc0FBQUQ4QUFBQS9nQUFBUC8vLy84QkFRQUEvLy8vL3dNQkFBQUZBUUFBQmdFQUFB
a0IKQUFBS0FRQUFEZ0VBQUJBQkFBQVVBUUFBRlFFQUFCY0JBQUFaQVFBQUhBRUFBQjRCQUFBZkFR
QUFJQUVBQUNFQkFBQWtBUUFBSmdFQQpBQ2NCQUFELy8vLy8vLy8vL3lrQkFBQXRBUUFBTUFFQUFE
RUJBQURldmdLVFhQcXRMb2VIOGN5SWgvSE15QW5UajUwMk41RHJDeUxvCk0yK2J4Q2VpVGg0Z2cz
Y2NnZlV4OUJhdllSQ0E1dm84c20raURzWllDVVR2SWE2c2liek1KMzVvUTBQVVVwY1cvNVdacHUx
QkpSdUsKZUdscFhRV1pwbnlueitUTzFYcUhVV2h3NG5YZklNdFY5KzdSRHZrM2FaV3IrcDloTStw
ZGZHS0UzL3R0clM2ZC9xMHVvbHRqR0NyWgoyek1MQU5FRVhDc0loTmRxTFFzUm1hWmNwREJ4TkpG
eVkzbFpCNzFjNElrNzFYY3BpMDhja0V2cHhoVk9IbWltVGg2aGRXbjZJR2t4CjlNTDVNZlJIalYy
d1V5eU9iK2hGWkxlVzVwZWI4M09pRGlaMk9FVDJsaVVBeXNETUo5QkNDR1F0cFVDaGRKbjhkcDRK
bWFiK2dEZisKclRrQWFCWDZtWFQwWVE3c05hY1BNMm5GZjNFVVV5RExEMXFFLzJUQm5QaEFSWkVN
d21ZeXgzRE42R004Y3EwdWYxNlRHVDJWWGx2UgprV2ZDWGlFNDFRY2FUaDVoYlRIMFFXd2ZXeWpt
L1J2VmE5Q3ZpSkZkc0NLaE1RR0tXRlR4SUg4TkY1TG5vUTZjRHpLeU5IaWlEakdjCncyWnBOTXdu
cGl5YUpteEFsN1VsM2xxYmQxaDJHL1ZtNDRjQnA2ODkvUytnK3lkQzBJOEpNM2RLRFNVZ1JRNnRt
a0wybzhVRk1DMGEKaDZzRkRVS3NpWGRVc3krRk5Hb0Q1WHhJU1RHbm5pZkZFbFFKaHJzeWQ2bmx0
M0NCai84NmVWS0VreWI3TjBJL3RjL1VlT3IxdlBsYgpXK1huRXpWYVhZTEw3RmdyMCt1aER1Z0VD
RW10UkplMWZiMGhyMHAvU1dEdzI3OU5mUzBGOXpUSjdPOU1qWWVzODQ1S0Q0VWJISVVvClg2VGpk
SVBweUN3NTFxRmZtZXozb1Zxa3BZQzFidFE4dG9GcnY4aENGY1JaLzF0NFlydXZOZmp0OS9RemhU
U1RlL3B6SUtUTVU5Z3kKeFVkQVAzbFNLdjFzdDR6VjArTkdYeDZKL1R5MHhZaUVDd1A1aG1Gc3VH
NkdibDNORmtHN3Rkc0NySDFzN0FQUEY4enVTSmUxRWorUwpPcWRjSWNiczE1R1dOMG85K25UZGxH
M1RIUGllMVVjWUg2RzJJQkRQeGxLZndRTkRUVm9wbnYrckMrNnhCRUZBQmdWZS8xdlJuMHcwCjgw
VXd1OFhrczVRWE1qUGMxRFhxbDQ3enJGMlRwNFEwTlRpRk5Ic2NLdi9IcFlVRGQvMHA4VnZPU1ZC
NFZORWwzN0o0VXArcUl2Q0IKUTNsU1JPWWczMTJuRE9aRXdBcnB4OEVUankwblNGeC8xT0gxY1Jz
cnB5Skh1S1NJZW9NT1p2MFRIU0VTYjFnTTZCUlpuZGFhSUkyOApsclU3cDI1R1ovY0pZeHNQRTQ3
VDJ6Y1pLRDRxMVhUSk9vaVI0a0ZMSDhXalJVWmkvMXV6RWJHTnBOSCtXM1YvM3BjaURGeXQxNFVo
CjdQTnV1YlhVcTRRMGNNWDkwWTE1V2FhOEhCTG9CQ3M0YkcwSjN4aTFrVHE1RjhqUUpSMU5lNGtn
dDNoU1Bvbm92L2doM3QrT2tmWmIKWGQ4Q3pPUDUyQ01TM0RBaFZlR3N3N1NYQ3V0cjhzNFZxSHlv
RHduZlJPSXZ0WnhiZkxoc1BOU0lBMzNWNGtsRFhnVjVhTURQYWhlLwpNM1lQYlV1L1oyYVRxdFhm
TGozOGFZNDhGR0lGb1EzbDFmNWJnMnNmMUgyTm1hWisyV2tqRUIvWTNncmR1RVlwbjcvNGhSZCta
d1NpCktMTUxIb0k5ODlZZ3l5MEY5bHZQbGZaYmNTN1VFTkJWNlE3Nmx0Y2NLS2RKMGczSUpWaHZS
djgzU3Q0Q0tNb3ZEckViOXEwdXFrUFIKWWt2azhRRE50U2lxR2RPcHZ4RmFuazNtblU0ZVRLQ2lZ
VUR4TWZRaGx4QmNheFBHclRkNzQvWkl1TXduazNxcmIvMm9CVW8vbzYvSgpwS2d4RXI2Um1hYU00
am5vdlBCQ2J4NU5qRFEwMnlETGtGMFNML3RIc2RNckVUSW4zQ1NOMUc0Sjlsc3c3dzNQTUZQR1Rk
ME0rQnh6CmF2VmVIQXdBQUN3TUFBQkFEQUFBVUF3QUFHQU1BQUI4REFBQWpBd0FBS2dNQUFDNERB
QUF6QXdBQU53TUFBRHdEQUFBQUEwQUFCUU4KQUFBa0RRQUFQQTBBQUV3TkFBQmdEUUFBTkE0QUFF
UU9BQUJZRGdBQWFBNEFBSUFPQUFDUURnQUFwQTRBQUxRT0FBRElEZ0FBM0E0QQpBT3dPQUFEOERn
QUFHQThBQUVnUEFBQmNEd0FBYkE4QUFJQVBBQUNnRHdBQXNBOEFBTVFQQUFDQUVBQUF1QkFBQU1n
UUFBRFlFQUFBCkFCRUFBQkFSQUFBZ0VRQUFNQkVBQUVBUkFBQlFFUUFBWkJFQUFIUVJBQUNFRVFB
QW1CRUFBS2dSQUFDOEVRQUF6QkVBQVB3UkFBQVEKRWdBQU1CSUFBRUFTQUFDa0VnQUF0QklBQU1n
U0FBRFlFZ0FBOEJJQUFBQVRBQUFRRXdBQUlCTUFBREFUQUFCQUV3QUFWQk1BQUdRVApBQUIwRXdB
QWlCTUFBSmdUQUFDb0V3QUF1Qk1BQU5BVEFBRGdFd0FBQ0JRQUFCZ1VBQUFvRkFBQVFCUUFBRmdV
QUFCc0ZBQUFnQlFBCkFKQVVBQUNnRkFBQTBCUUFBT2dVQUFENEZBQUFDQlVBQUJnVkFBQXNGUUFB
WkJVQUFOUVZBQURrRlFBQTlCVUFBQ1FXQUFBMEZnQUEKU0JZQUFGZ1dBQUJvRmdBQWVCWUFBSWdX
QUFDWUZnQUFxQllBQUxnV0FBRElGZ0FBT0JjQUFFZ1hBQUJZRndBQWFCY0FBSUFYQUFDUQpGd0FB
ckJjQUFNd1hBQURjRndBQTdCY0FBUHdYQUFBWUdBQUFLQmdBQURnWUFBQk1HQUFBWEJnQUFHd1lB
QUNFR0FBQWxCZ0FBS2dZCkFBQzRHQUFBekJnQUFOd1lBQUR3R0FBQUFCa0FBREFaQUFCQUdRQUFh
QmtBQUhnWkFBQ0lHUUFBbUJrQUFMZ1pBQURJR1FBQTJCa0EKQU9nWkFBQUVHZ0FBRkJvQUFDUWFB
QUEwR2dBQVNCb0FBRmdhQUFCb0dnQUFlQm9BQUl3YUFBQ2NHZ0FBckJvQUFMd2FBQURNR2dBQQoz
Qm9BQVBBYUFBQVVHd0FBTEJzQUFEd2JBQUJNR3dBQVhCc0FBSEFiQUFDQUd3QUFvQnNBQUxBYkFB
RElHd0FBMkJzQUFPZ2JBQUQ0Ckd3QUFKQndBQURRY0FBQkVIQUFBY0J3QUFJQWNBQUNRSEFBQXBC
d0FBTWdjQUFEWUhBQUE2QndBQUFRZEFBQVVIUUFBUkIwQUFGUWQKQUFCb0hRQUFlQjBBQUlnZEFB
Q1lIUUFBcUIwQUFMd2RBQURNSFFBQTRCMEFBUHdkQUFBTUhnQUFKQjRBQURRZUFBQklIZ0FBV0I0
QQpBR2dlQUFCNEhnQUFpQjRBQUt3ZUFBQzhIZ0FBekI0QUFPQWVBQUR3SGdBQUFCOEFBQlFmQUFB
a0h3QUFUQjhBQUZ3ZkFBQnNId0FBCmZCOEFBSXdmQUFDY0h3QUF1QjhBQU1nZkFBRFlId0FBNkI4
QUFQZ2ZBQUFJSUFBQUdDQUFBREFnQUFCUUlBQUFZQ0FBQUhRZ0FBQ2sKSUFBQXVDQUFBTWdnQUFE
Z0lBQUE4Q0FBQUF3aEFBQWNJUUFBTENFQUFKQWhBQUN3SVFBQXdDRUFBTkFoQUFEZ0lRQUE4Q0VB
QUFRaQpBQUJvSWdBQWVDSUFBSWdpQUFDb0lnQUF4Q0lBQU5RaUFBRGtJZ0FBOUNJQUFBUWpBQUFV
SXdBQUpDTUFBRFFqQUFCSUl3QUFXQ01BCkFIUWpBQUNFSXdBQWxDTUFBTUFqQUFEUUl3QUE3Q01B
QVB3akFBQU1KQUFBS0NRQUFEZ2tBQUJJSkFBQXVDUUFBQndsQUFBc0pRQUEKWUNVQUFIQWxBQUNB
SlFBQThDVUFBQUFtQUFBWUpnQUFLQ1lBQURnbUFBQklKZ0FBV0NZQUFHZ21BQUI0SmdBQWpDWUFB
SndtQUFDcwpKZ0FBdkNZQUFNd21BQURzSmdBQURDY0FBQnduQUFBc0p3QUFQQ2NBQUdBbkFBQndK
d0FBaENjQUFKUW5BQUMwSndBQTBDY0FBT1FuCkFBRDBKd0FBS0NnQUFEZ29BQUJJS0FBQXVDZ0FB
TlFvQUFEa0tBQUE5Q2dBQUYwVkFBQUJBQUFBclJ3QUFBQUFBQUI0TWdBQUFnQUEKQUhsMkFBQkpk
d0FBQUFBQUFGZ1FBQUFCQUFBQWNoSUFBQUFBQUFDV0VBQUFBUUFBQUlnU0FBQUFBQUFBbGh3QUFB
UUFBQUM2TXdBQQpFVkFBQUVGUUFBRE1hZ0FBQUFBQUFBb1lBQUFCQUFBQTVDQUFBQUFBQUFCN0xR
QUFCQUFBQUIwTEFBRDFEZ0FBdXlRQUFHRW5BQUFBCkFBQUE0QW9BQUFFQUFBQjFDd0FBQUFBQUFE
UXhBQUFDQUFBQUJYZ0FBTlY0QUFBQUFBQUFWQ0FBQUFFQUFBQ21MUUFBQUFBQUFCMDEKQUFBQ0FB
QUFHWEFBQU9sd0FBQUFBQUFBTGlFQUFBRUFBQUNzTmdBQUFBQUFBRWtTQUFBQ0FBQUFaaFlBQURz
akFBQUFBQUFBbERNQQpBQUVBQUFBR2RBQUFBQUFBQU1JTkFBQURBQUFBN0F3QUFKTWpBQUQ4SmdB
QUFBQUFBSFk3QUFBQkFBQUF6VnNBQUFBQUFBQytNUUFBCkFnQUFBT0pSQUFDR1VnQUFBQUFBQUVZ
Q0FBQXlBQUFBNFM0QUFQZ3VBQURHTHdBQTNTOEFBSHN3QUFDU01BQUFMekVBQUVZeEFBRGoKTVFB
QStqRUFBSmN5QUFDdU1nQUFTek1BQUdJekFBRC9Nd0FBRmpRQUFFUTJBQUJiTmdBQWlEOEFBSjgv
QUFDSFJBQUFua1FBQUpORgpBQUNxUlFBQWQwZ0FBSTVJQUFER1NRQUEzVWtBQU5KS0FBRHBTZ0FB
SVUwQUFEaE5BQUIvVUFBQWxsQUFBRjFsQUFCMFpRQUFDMmdBCkFDSm9BQUNBYUFBQWwyZ0FBQkZw
QUFBb2FRQUFwMmtBQUw1cEFBQWNhZ0FBTTJvQUFKWnFBQUN0YWdBQUVHc0FBQ2RyQUFBQUFBQUEK
anpzQUFBRUFBQUFoWEFBQUFBQUFBTzgxQUFBQ0FBQUF1RzRBQUpodkFBQUFBQUFBc3lzQUFBRUFB
QUFyUGdBQUFBQUFBSzhoQUFBRApBQUFBM1EwQUFKQkhBQUJSVEFBQUFBQUFBTjR0QUFBQkFBQUFH
VVFBQUFBQUFBQm1FZ0FBQWdBQUFKSVdBQUJuSXdBQUFBQUFBRlFvCkFBQUJBQUFBSWtJQUFBQUFB
QUR6RXdBQUFnQUFBRWdjQUFDSUhBQUFBQUFBQUR3NEFBQUNBQUFBUm5vQUFENTdBQUFBQUFBQXBq
a0EKQUFFQUFBRDFXQUFBQUFBQUFFSXBBQUFCQUFBQTJFQUFBQUFBQUFBR0Z3QUFCQUFBQUZJeUFB
QllTUUFBaUVrQUFHTnBBQUFBQUFBQQpiVDBBQUFrQUFBQUVFUUFBeEJNQUFDQVlBQURmR0FBQUt4
NEFBT29lQUFETEtRQUFpaW9BQUtoREFBQUFBQUFBcEJVQUFBSUFBQUJzCkhBQUF4a2dBQUFBQUFB
QitMd0FBQVFBQUFMTk1BQUFBQUFBQXJESUFBQUlBQUFDa2RnQUFoSGNBQUFBQUFBQ25OUUFBQlFB
QUFJMXUKQUFDNGJnQUFNbThBQUYxdkFBQ1lid0FBQUFBQUFOSTRBQUFCQUFBQXVrMEFBQUFBQUFE
cUV3QUFBZ0FBQUdBY0FBQ2dIQUFBQUFBQQpBUHdDQUFBc0FBQUFSRklBQUZ0U0FBRGRVZ0FBOUZJ
QUFLbHJBQURBYXdBQWlXd0FBS0JzQUFCR2JRQUFYVzBBQUVSdUFBQmJiZ0FBCjhHNEFBQWR2QUFE
V2J3QUE3VzhBQUh4d0FBQ1RjQUFBWW5FQUFIbHhBQUFmY2dBQU5uSUFBQjF6QUFBMGN3QUF4SE1B
QU50ekFBQ3EKZEFBQXdYUUFBRkIxQUFCbmRRQUFObllBQUUxMkFBRGNkZ0FBODNZQUFNSjNBQURa
ZHdBQWFIZ0FBSDk0QUFCT2VRQUFaWGtBQUpWNgpBQUNzZWdBQWszc0FBS3A3QUFBQUFBQUFSeUlB
QUFzQUFBQWNEQUFBM2hJQUFCTVRBQUE2RndBQWJ4Y0FBSG9kQUFDRklRQUFVU1FBCkFJWWtBQUNQ
SmdBQUdpa0FBQUFBQUFENktnQUFBUUFBQUpWQUFBQUFBQUFBQmlVQUFBRUFBQUNvUVFBQUFBQUFB
S0U2QUFBSEFBQUEKSHhRQUFJRVVBQUFuUndBQUJra0FBT2hnQUFCQllRQUF1bUVBQUFBQUFBQjdJ
d0FBQVFBQUFBOUJBQUFBQUFBQUF3RUFBQUVBQUFEZwpDZ0FBQUFBQUFFNHRBQUFCQUFBQUJEOEFB
QUFBQUFCcklBQUFBUUFBQUx3dEFBQUFBQUFBNWk4QUFBRUFBQUFSVUFBQUFBQUFBR0V4CkFBQUNB
QUFBTUhnQUFCQjVBQUFBQUFBQUJpd0FBQUVBQUFBblFBQUFBQUFBQUM0dUFBQUJBQUFBSlVVQUFB
QUFBQUJPTlFBQUFnQUEKQUVSd0FBQWtjUUFBQUFBQUFFQXdBQUFCQUFBQXgza0FBQUFBQUFCZkZn
QUFBZ0FBQU9JY0FBQVpJUUFBQUFBQUFMSWdBQUFCQUFBQQpJVmNBQUFBQUFBQUhQUUFBQ1FBQUFL
QVFBQUJnRXdBQXZCY0FBSHNZQUFESEhRQUFoaDRBQUdjcEFBQW1LZ0FBWjBNQUFBQUFBQURTCk13
QUFBZ0FBQUdGekFBQXhkQUFBQUFBQUFBOHhBQUFGQUFBQUJYZ0FBREI0QUFDcWVBQUExWGdBQUJC
NUFBQUFBQUFBWlJFQUFBRUEKQUFEaFJRQUFBQUFBQUk0eEFBQVdBQUFBSFZJQUFMWlNBQUNTYXdB
QWNtd0FBQzl0QUFBdGJnQUEyVzRBQUw5dkFBQmxjQUFBUzNFQQpBQWh5QUFBR2N3QUFyWE1BQUpO
MEFBQTVkUUFBSDNZQUFNVjJBQUNyZHdBQVVYZ0FBRGQ1QUFCK2VnQUFmSHNBQUFBQUFBRDVJUUFB
CkFRQUFBUGczQUFBQUFBQUFPeElBQUFJQUFBQlFGZ0FBSlNNQUFBQUFBQUJuSWdBQUFRQUFBRHBC
QUFBQUFBQUFCaTRBQUFNQUFBRHEKTUFBQVNVUUFBTWRuQUFBQUFBQUF1aXdBQUFFQUFBREVQZ0FB
QUFBQUFKOGhBQUFCQUFBQWl6Y0FBQUFBQUFCRUpRQUFBUUFBQUxSQgpBQUFBQUFBQWRqQUFBQUVB
QUFEeWVRQUFBQUFBQUkwT0FBQUJBQUFBZ1ZVQUFBQUFBQUJXRWdBQUFnQUFBSHdXQUFCUkl3QUFB
QUFBCkFHQTNBQUFCQUFBQWJUUUFBQUFBQUFEN0ZRQUFBUUFBQUo4YkFBQUFBQUFBSVJRQUFBSUFB
QUJJSEFBQWlCd0FBQUFBQUFCakt3QUEKQVFBQUFLRkFBQUFBQUFBQU9pQUFBQUVBQUFCNkxRQUFB
QUFBQUhza0FBQUJBQUFBZlVFQUFBQUFBQUN5THdBQUF3QUFBSjR4QUFEagpUQUFBVW1vQUFBQUFB
QUNUQ0FBQUFRQUFBSXNOQUFBQUFBQUFEek1BQUFjQUFBRHRkQUFBR0hVQUFKSjFBQUM5ZFFBQStI
VUFBR2Q2CkFBQmxld0FBQUFBQUFHQWRBQUFCQUFBQU9TZ0FBQUFBQUFENEVnQUFBUUFBQUw0YkFB
QUFBQUFBRXpBQUFBTUFBQUM2TXdBQVFWQUEKQU14cUFBQUFBQUFBWHk0QUFBTUFBQUEyTUFBQVZV
VUFBRHhvQUFBQUFBQUFpd3dBQUFJQUFBREFDZ0FBM1E0QUFBQUFBQUM4SHdBQQpBZ0FBQU5JdEFB
QnJOUUFBQUFBQUFDTThBQUFCQUFBQW1WMEFBQUFBQUFDTk1BQUFBUUFBQUp0NUFBQUFBQUFBUFQw
QUFBa0FBQUF4CkVRQUE4Uk1BQUUwWUFBQU1HUUFBV0I0QUFCY2ZBQUQ0S1FBQXR5b0FBTWREQUFB
QUFBQUFpUWdBQUFNQUFBQW1EZ0FBeUVjQUFJbE0KQUFBQUFBQUFKU01BQUFFQUFBREtPQUFBQUFB
QUFOb3VBQUFCQUFBQVdFa0FBQUFBQUFBN0tBQUFBUUFBQUJaQ0FBQUFBQUFBOVRNQQpBQUlBQUFD
TWN3QUFiSFFBQUFBQUFBQWhJZ0FBQ3dBQUFCd01BQURlRWdBQUV4TUFBRG9YQUFCdkZ3QUFlaDBB
QUlVaEFBQlJKQUFBCmhpUUFBSThtQUFBYUtRQUFBQUFBQU9JK0FBQVpBQUFBeVM0QUFLNHZBQUJq
TUFBQUZ6RUFBTXN4QUFCL01nQUFNek1BQU9jekFBQXQKTmdBQWNEOEFBRzlFQUFCN1JRQUFZRWdB
QUs1SkFBQzZTZ0FBQ1UwQUFHZFFBQUJGWlFBQTgyY0FBR2hvQUFENmFBQUFqMmtBQUFScQpBQUIr
YWdBQStHb0FBQUFBQUFCT0RBQUFBUUFBQU5ZL0FBQUFBQUFBRnpZQUFBRUFBQUNKYlFBQUFBQUFB
QjA5QUFBSkFBQUFNUkVBCkFQRVRBQUJOR0FBQURCa0FBRmdlQUFBWEh3QUErQ2tBQUxjcUFBREhR
d0FBQUFBQUFORWZBQUFCQUFBQWF6VUFBQUFBQUFCV0N3QUEKQWdBQUFJRlZBQUFpVmdBQUFBQUFB
Qm9RQUFBQkFBQUFYQklBQUFBQUFBQjVJQUFBQVFBQUFPZ3RBQUFBQUFBQWVTY0FBQUVBQUFCcQpR
QUFBQUFBQUFIWTVBQUFCQUFBQTlWZ0FBQUFBQUFESERnQUFBUUFBQUhJdkFBQUFBQUFBbHlJQUFB
RUFBQUJHUVFBQUFBQUFBRWdXCkFBQUJBQUFBbnhzQUFBQUFBQUI1S0FBQUFRQUFBQ0pDQUFBQUFB
QUFJZ1lBQUJrQUFBQ3pVUUFBNGxFQUFCMVNBQUNHVWdBQXRsSUEKQUpKckFBQnliQUFBTDIwQUFD
MXVBQURaYmdBQXYyOEFBR1Z3QUFCTGNRQUFDSElBQUFaekFBQ3Rjd0FBazNRQUFEbDFBQUFmZGdB
QQp4WFlBQUt0M0FBQlJlQUFBTjNrQUFINTZBQUI4ZXdBQUFBQUFBSU1PQUFBQkFBQUFDaEFBQUFB
QUFBQVlOQUFBQVFBQUFHSnlBQUFBCkFBQUFLZzhBQUFFQUFBQUVFZ0FBQUFBQUFOa2hBQUFEQUFB
QTNRMEFBSkJIQUFCUlRBQUFBQUFBQUNJSEFBQUJBQUFBVWxZQUFBQUEKQUFCZVBBQUFCQUFBQUU4
T0FBQVROd0FBUzF3QUFFbGVBQUFBQUFBQVBUUUFBQVVBQUFDbGNRQUEwSEVBQUdKeUFBQ05jZ0FB
eUhJQQpBQUFBQUFDQ0lnQUFBUUFBQURwQkFBQUFBQUFBNERJQUFBRUFBQUNTZFFBQUFBQUFBUDQ0
QUFBQkFBQUF1azBBQUFBQUFBQjdCd0FBCkJBQUFBT2hEQUFCN1JnQUF0VXNBQVA5VUFBQUFBQUFB
N3dvQUFBRUFBQURvUXdBQUFBQUFBS3dwQUFBQkFBQUErVHdBQUFBQUFBQlAKRFFBQUFnQUFBS29M
QUFCR0VnQUFBQUFBQUF3Z0FBQUJBQUFBUlMwQUFBQUFBQUQxS1FBQUFRQUFBTjlCQUFBQUFBQUEv
UzRBQUFNQQpBQUJTTWdBQWlFa0FBR05wQUFBQUFBQUFxU29BQUFFQUFBQ1NQUUFBQUFBQUFGazJB
QUFDQUFBQXpHd0FBTFJ0QUFBQUFBQUFLQ3dBCkFBRUFBQUFuUUFBQUFBQUFBTGtXQUFBQ0FBQUEr
QndBQUlRb0FBQUFBQUFBdnlZQUFBRUFBQUF1T3dBQUFBQUFBTFlNQUFBQ0FBQUEKd0FvQUFOME9B
QUFBQUFBQWJDVUFBQUVBQUFDMFFRQUFBQUFBQURJTUFBQUpBQUFBNnc4QUFPVVJBQUF4RmdBQXJS
d0FBT1FnQUFBRwpJd0FBQkNZQUFEa29BQUMzUWdBQUFBQUFBSVVnQUFBQkFBQUEvaTBBQUFBQUFB
REdOZ0FBQndBQUFFWnJBQUJ4YXdBQTVXc0FBQkJzCkFBQkxiQUFBR0cwQUFCWnVBQUFBQUFBQWtB
OEFBQUVBQUFEbEVRQUFBQUFBQUlZK0FBQUJBQUFBd1dJQUFBQUFBQUMwQ0FBQUFRQUEKQUlzTkFB
QUFBQUFBMWhnQUFBVUFBQUFHTXdBQWtqUUFBR1JLQUFDVVNnQUEyR2tBQUFBQUFBQzZKUUFBQVFB
QUFKVTZBQUFBQUFBQQp6aWtBQUFFQUFBRDVQQUFBQUFBQUFETXFBQUFCQUFBQTYwRUFBQUFBQUFD
bkdnQUFCQUFBQUo0eEFBQ3pUQUFBNDB3QUFGSnFBQUFBCkFBQUE0VFlBQUFFQUFBRGxhd0FBQUFB
QUFMTTlBQUFCQUFBQU9XQUFBQUFBQUFDZEl3QUFBUUFBQUE5QkFBQUFBQUFBV2pRQUFBSUEKQUFD
bGNRQUFqWElBQUFBQUFBRExPd0FBQVFBQUFDRmNBQUFBQUFBQUtDVUFBQUVBQUFDb1FRQUFBQUFB
QUJBbkFBQUJBQUFBWGtBQQpBQUFBQUFBMk13QUFBZ0FBQU8xMEFBQzlkUUFBQUFBQUFQUVpBQUFC
QUFBQUJpTUFBQUFBQUFBVk9RQUFBUUFBQUxKWUFBQUFBQUFBCjhCc0FBQUVBQUFBRUpnQUFBQUFB
QUJ3b0FBQUJBQUFBRmtJQUFBQUFBQUJtS1FBQUFRQUFBTmhBQUFBQUFBQUFHQWdBQUFJQUFBQncK
RUFBQUV5OEFBQUFBQUFBNE9nQUFCZ0FBQURoR0FBQjNTd0FBVjA0QUFNVk9BQUF6VHdBQW9VOEFB
QUFBQUFCb0NBQUFBd0FBQUNZTwpBQURJUndBQWlVd0FBQUFBQUFBa0pBQUFBUUFBQUhGQkFBQUFB
QUFBSFNzQUFBRUFBQUNWUUFBQUFBQUFBRzhoQUFBQkFBQUFqallBCkFBQUFBQUIrTmdBQUFnQUFB
UGRzQUFEdmJRQUFBQUFBQUVRc0FBQUJBQUFBTTBBQUFBQUFBQUJMQ2dBQUJRQUFBSnd1QUFDWEx3
QUEKR2o4QUFFby9BQUFaWlFBQUFBQUFBQW8rQUFBQkFBQUFPV0FBQUFBQUFBQmVDQUFBQXdBQUFM
UU9BQUE2R1FBQTB5UUFBQUFBQUFBTQpLUUFBQVFBQUFNeEFBQUFBQUFBQUN5WUFBQUVBQUFCTlFn
QUFBQUFBQUE0SUFBQUJBQUFBclRRQUFBQUFBQUJmQmdBQUNBQUFBTTBNCkFBQnlId0FBM1NZQUFC
SXJBQURWUkFBQXVFWUFBQlJLQUFEeVN3QUFBQUFBQUo4TEFBQUJBQUFBaGtJQUFBQUFBQURYQ3dB
QUFRQUEKQUlaQ0FBQUFBQUFBZlQwQUFBZ0FBQUNJRUFBQVNCTUFBS1FYQUFDdkhRQUF1aUVBQU1R
bUFBQlBLUUFBVDBNQUFBQUFBQURvRVFBQQpBUUFBQURFV0FBQUFBQUFBOENjQUFBRUFBQURIT3dB
QUFBQUFBQVEzQUFBQ0FBQUFSbXNBQUJCc0FBQUFBQUFBbGdzQUFBWUFBQUExCkN3QUFRd3dBQUxR
TkFBQ0xEZ0FBRFE4QUFDWkRBQUFBQUFBQXJ4MEFBQUVBQUFCdUtBQUFBQUFBQU1BNkFBQUJBQUFB
VkZzQUFBQUEKQUFBelBBQUFCQUFBQUU4T0FBQVROd0FBUzF3QUFFbGVBQUFBQUFBQXlTY0FBQUVB
QUFESE93QUFBQUFBQU1nOEFBQUpBQUFBb0JBQQpBR0FUQUFDOEZ3QUFleGdBQU1jZEFBQ0dIZ0FB
WnlrQUFDWXFBQUJuUXdBQUFBQUFBSkF1QUFBQkFBQUE4a2NBQUFBQUFBQi9OQUFBCkFnQUFBTkJ4
QUFESWNnQUFBQUFBQUZzcUFBQUJBQUFBNjBFQUFBQUFBQURnSkFBQUFRQUFBUHc1QUFBQUFBQUF6
eW9BQUFFQUFBQ1MKUFFBQUFBQUFBRm81QUFBQkFBQUFzbGdBQUFBQUFBQ2tOQUFBQWdBQUFQRnhB
QUR2Y2dBQUFBQUFBQ0F2QUFBQkFBQUFaRW9BQUFBQQpBQUFLRFFBQUFnQUFBSlFMQUFBd0VnQUFB
QUFBQUdVekFBQUVBQUFBR0hVQUFQaDFBQUJuZWdBQVpYc0FBQUFBQUFCSkpnQUFBUUFBCkFGbENB
QUFBQUFBQWZoUUFBQU1BQUFBVk5nQUFTRWdBQU9Kb0FBQUFBQUFBa0I4QUFBRUFBQUJGTFFBQUFB
QUFBQUU3QUFBQ0FBQUEKTGx3QUFCSmVBQUFBQUFBQWZnd0FBQUVBQUFEV1B3QUFBQUFBQU9VbUFB
QUJBQUFBTGpzQUFBQUFBQUFiR3dBQUFRQUFBRzlOQUFBQQpBQUFBM3lNQUFBRUFBQUJqT1FBQUFB
QUFBR1U2QUFBR0FBQUFPRVlBQUhkTEFBQlhUZ0FBeFU0QUFETlBBQUNoVHdBQUFBQUFBTUFNCkFB
QUJBQUFBOWdvQUFBQUFBQUJsSXdBQUFRQUFBQU5CQUFBQUFBQUFYekFBQUFJQUFBQ2JlUUFBeDNr
QUFBQUFBQUMvSkFBQUFRQUEKQVB3NUFBQUFBQUFBbWpnQUFBRUFBQUJ5THdBQUFBQUFBR2NVQUFB
Q0FBQUE4WEVBQU85eUFBQUFBQUFBRnlvQUFBRUFBQURmUVFBQQpBQUFBQUxVNkFBQUhBQUFBSHhR
QUFJRVVBQUFuUndBQUJra0FBT2hnQUFCQllRQUF1bUVBQUFBQUFBQzZIQUFBQVFBQUFCSXJBQUFB
CkFBQUFwVHdBQUFFQUFBQk9EUUFBQUFBQUFDb3BBQUFCQUFBQXpFQUFBQUFBQUFCc0xBQUFBUUFB
QUROQUFBQUFBQUFBSUJjQUFBRUEKQUFBVVNnQUFBQUFBQUtNMkFBQUVBQUFBY1dzQUFFdHNBQUFZ
YlFBQUZtNEFBQUFBQUFCWEJ3QUFBUUFBQVA5VUFBQUFBQUFBbUMwQQpBQUVBQUFBYVB3QUFBQUFB
QUhzWkFBQUJBQUFBSUVzQUFBQUFBQURFUGdBQUFRQUFBTUZpQUFBQUFBQUE0dzRBQUFFQUFBRHJE
d0FBCkFBQUFBR1UrQUFBQkFBQUFBMklBQUFBQUFBQzFMZ0FBQXdBQUFPZzFBQUFpU0FBQXRtZ0FB
QUFBQUFEU053QUFCUUFBQUJ0NkFBQkcKZWdBQTJIb0FBQU43QUFBK2V3QUFBQUFBQU9Bc0FBQUJB
QUFBeEQ0QUFBQUFBQURsRlFBQUFnQUFBR3djQUFER1NBQUFBQUFBQUUwOQpBQUFKQUFBQUJCRUFB
TVFUQUFBZ0dBQUEzeGdBQUNzZUFBRHFIZ0FBeXlrQUFJb3FBQUNvUXdBQUFBQUFBT0VSQUFBQ0FB
QUFjRk1BCkFDRlhBQUFBQUFBQVF6c0FBQUVBQUFETld3QUFBQUFBQUw0NUFBQURBQUFBRlRZQUFF
aElBQURpYUFBQUFBQUFBTm9yQUFBQkFBQUEKS3o0QUFBQUFBQUJQTHdBQUJBQUFBQVl6QUFDU05B
QUFsRW9BQU5ocEFBQUFBQUFBUkI0QUFBRUFBQUJrTFFBQUFBQUFBUGdpQUFBQgpBQUFBeWpnQUFB
QUFBQURXTVFBQUZnQUFBRVJTQUFEZFVnQUFxV3NBQUlsc0FBQkdiUUFBUkc0QUFQQnVBQURXYndB
QWZIQUFBR0p4CkFBQWZjZ0FBSFhNQUFNUnpBQUNxZEFBQVVIVUFBRFoyQUFEY2RnQUF3bmNBQUdo
NEFBQk9lUUFBbFhvQUFKTjdBQUFBQUFBQVRESUEKQUFVQUFBQjVkZ0FBcEhZQUFCNTNBQUJKZHdB
QWhIY0FBQUFBQUFCSElRQUFBUUFBQUk0MkFBQUFBQUFBOFNBQUFBRUFBQUJ0TkFBQQpBQUFBQUZn
a0FBQUJBQUFBZlVFQUFBQUFBQUMvR1FBQUFRQUFBSEJUQUFBQUFBQUF3eE1BQUFJQUFBQmdIQUFB
b0J3QUFBQUFBQUJoCklnQUFGZ0FBQUU4NEFBQjFPQUFBOURnQUFCbzVBQUNOT1FBQXN6a0FBQ1k2
QUFCTU9nQUF2em9BQU9VNkFBQllPd0FBZmpzQUFQRTcKQUFBWFBBQUFpandBQUxBOEFBQWpQUUFB
U1QwQUFMdzlBQURpUFFBQVZUNEFBSHMrQUFBQUFBQUE1Q2dBQUFFQUFBQmdQQUFBQUFBQQpBTzBM
QUFBQkFBQUF0MElBQUFBQUFBRDBOQUFBQlFBQUFCbHdBQUJFY0FBQXZuQUFBT2x3QUFBa2NRQUFB
QUFBQUt3VUFBQUVBQUFBCjZEVUFBUEpIQUFBaVNBQUF0bWdBQUFBQUFBQmhEUUFBQVFBQUFOWUxB
QUFBQUFBQW5Rb0FBQUVBQUFCMUN3QUFBQUFBQU1nVUFBQUIKQUFBQWNoOEFBQUFBQUFCSkl3QUFB
UUFBQUFOQkFBQUFBQUFBNGhBQUFBRUFBQUM0UmdBQUFBQUFBT2c3QUFBQkFBQUFtVjBBQUFBQQpB
QUFoSVFBQUFRQUFBSW8xQUFBQUFBQUFOZ2dBQUFJQUFBQndFQUFBRXk4QUFBQUFBQUE2S3dBQUFR
QUFBS0ZBQUFBQUFBQUF1eTBBCkFBUUFBQUNjTGdBQWx5OEFBRW8vQUFBWlpRQUFBQUFBQUhFbUFB
QUJBQUFBV1VJQUFBQUFBQUIvTlFBQUFRQUFBREp2QUFBQUFBQUEKbnowQUFBZ0FBQUNJRUFBQVNC
TUFBS1FYQUFDdkhRQUF1aUVBQU1RbUFBQlBLUUFBVDBNQUFBQUFBQUR1QndBQUFRQUFBSzAwQUFB
QQpBQUFBVHdjQUFBUUFBQURoUlFBQUlFc0FBRzlOQUFCU1ZnQUFBQUFBQUZBbkFBQUJBQUFBYWtB
QUFBQUFBQUJKSUFBQUFRQUFBSkF0CkFBQUFBQUFBTkE4QUFBUUFBQURxTUFBQUdVUUFBRWxFQUFE
SFp3QUFBQUFBQUNnUkFBQUJBQUFBZTBZQUFBQUFBQUNaTndBQUFRQUEKQU5oNkFBQUFBQUFBK2o0
QUFCa0FBQURoTGdBQXhpOEFBSHN3QUFBdk1RQUE0ekVBQUpjeUFBQkxNd0FBL3pNQUFFUTJBQUNJ
UHdBQQpoMFFBQUpORkFBQjNTQUFBeGtrQUFOSktBQUFoVFFBQWYxQUFBRjFsQUFBTGFBQUFnR2dB
QUJGcEFBQ25hUUFBSEdvQUFKWnFBQUFRCmF3QUFBQUFBQVBjeEFBQVdBQUFBVzFJQUFQUlNBQURB
YXdBQW9Hd0FBRjF0QUFCYmJnQUFCMjhBQU8xdkFBQ1RjQUFBZVhFQUFEWnkKQUFBMGN3QUEyM01B
QU1GMEFBQm5kUUFBVFhZQUFQTjJBQURaZHdBQWYzZ0FBR1Y1QUFDc2VnQUFxbnNBQUFBQUFBQmxD
Z0FBQVFBQQpBTTBNQUFBQUFBQUF2emdBQUFvQUFBQmxMZ0FBUWk4QUFQOHZBQUN6TUFBQVp6RUFB
QnN5QUFEUE1nQUFnek1BQURjMEFBQ3hOUUFBCkFBQUFBRVljQUFBQkFBQUFPU1lBQUFBQUFBRFNH
Z0FBQVFBQUFOMG1BQUFBQUFBQXp3a0FBQmtBQUFESkxnQUFyaThBQUdNd0FBQVgKTVFBQXl6RUFB
SDh5QUFBek13QUE1ek1BQUMwMkFBQndQd0FBYjBRQUFIdEZBQUJnU0FBQXJra0FBTHBLQUFBSlRR
QUFaMUFBQUVWbApBQUR6WndBQWFHZ0FBUHBvQUFDUGFRQUFCR29BQUg1cUFBRDRhZ0FBQUFBQUFD
MG1BQUFCQUFBQVRVSUFBQUFBQUFBOUNBQUFBd0FBCkFMUU9BQUE2R1FBQTB5UUFBQUFBQUFCVER3
QUFBUUFBQU5WRUFBQUFBQUFBR0RJQUFBRUFBQUFlZHdBQUFBQUFBRUFaQUFBQkFBQUEKdFVzQUFB
QUFBQUM0SWdBQUFRQUFBRVpCQUFBQUFBQUFIZ3NBQUFFQUFBQWlWZ0FBQUFBQUFQWTZBQUFCQUFB
QVZGc0FBQUFBQUFBcwpPd0FBQWdBQUFDNWNBQUFTWGdBQUFBQUFBT0l3QUFBQkFBQUFxbmdBQUFB
QUFBRGFEd0FBQVFBQUFCb1NBQUFBQUFBQXd6UUFBQUVBCkFBQytjQUFBQUFBQUFDNCtBQUFCQUFB
QUEySUFBQUFBQUFBOE5nQUFCUUFBQU14c0FBRDNiQUFBaVcwQUFMUnRBQUR2YlFBQUFBQUEKQUZv
TkFBQUZBQUFBd0FzQUFNd2NBQUFESVFBQUl5WUFBRmdvQUFBQUFBQUFwakVBQUFFQUFBQ3pVUUFB
QUFBQUFETW5BQUFCQUFBQQpYa0FBQUFBQUFBQnZQQUFBQVFBQUFFNE5BQUFBQUFBQWF3c0FBQVlB
QUFBMUN3QUFRd3dBQUxRTkFBQ0xEZ0FBRFE4QUFDWkRBQUFBCkFBQUFmVEFBQUFFQUFBRHllUUFB
QUFBQUFNYzFBQUFDQUFBQWpXNEFBRjF2QUFBQUFBQUEvQmdBQUFFQUFBRHlTd0FBQUFBQUFLZ1MK
QUFBRkFBQUFxQllBQUpFZkFBQXZJUUFBZlNNQUFERXJBQUFBQUFBQXVoQUFBQVFBQUFBMk1BQUFK
VVVBQUZWRkFBQThhQUFBQUFBQQpBQU00QUFBQ0FBQUFHM29BQUFON0FBQUFBQUFBbkNBQUFBRUFB
QUFVTGdBQUFBQUFBTVU0QUFBS0FBQUFaUzRBQUVJdkFBRC9Md0FBCnN6QUFBR2N4QUFBYk1nQUF6
eklBQUlNekFBQTNOQUFBc1RVQUFBQUFBQUQvSXdBQUFRQUFBR001QUFBQUFBQUFRU1FBQUFFQUFB
QngKUVFBQUFBQUFBQnMvQUFBWkFBQUErQzRBQU4wdkFBQ1NNQUFBUmpFQUFQb3hBQUN1TWdBQVlq
TUFBQlkwQUFCYk5nQUFuejhBQUo1RQpBQUNxUlFBQWprZ0FBTjFKQUFEcFNnQUFPRTBBQUpaUUFB
QjBaUUFBSW1nQUFKZG9BQUFvYVFBQXZta0FBRE5xQUFDdGFnQUFKMnNBCkFBQUFBQUJZTFFBQUJB
QUFBQjBMQUFEMURnQUF1eVFBQUdFbkFBQUFBQUFBNENVQUFBRUFBQUNWT2dBQUFBQUFBTUVvQUFB
QkFBQUEKWUR3QUFBQUFBQUMzTXdBQUJRQUFBR0Z6QUFDTWN3QUFCblFBQURGMEFBQnNkQUFBQUFB
QUFFaFRRVWdCQUFBQUFRQUFBQUFBQUFBTQpBQUFBQUFBQUFBRUFBQUFCQUFZQS8vLy8vMGhUUVVn
QkFBQUFBUUFBQUFFQUFBQU1BQUFBQUFBQUFBRUFBQUFCQUFZQUFBQUFBQll3CmlBc3NBQUFBRlFJ
QUFBTUFBQUN5QUFBQTRRQUFBREVFQUFBQUFBQUFTRk5CU0FFQUFBQWRBQUFBT2dBQUFCUUFBQUFB
QUFBQUF3QUEKQUFFQUJnQURBQVVBQlFBTEFBQUFBQUFEQUFBQUJBQUFBQWdBQUFBSkFBQUEvLy8v
L3d3QUFBQVBBQUFBRVFBQUFCTUFBQUFVQUFBQQpGUUFBQUJnQUFBQWFBQUFBR3dBQUFCMEFBQUFm
QUFBQUlBQUFBQ01BQUFBa0FBQUFKUUFBQUNnQUFBQXFBQUFBTEFBQUFDMEFBQUF4CkFBQUFOUUFB
QURjQUFBRC8vLy8vaVRiMUFsSC94US9pVWJZTW82a1U1eTdvc3ZoOURjZ29uU1JjcVowVnpDOVN1
QTZPNnNSY3FmcVUKUis4RW9paXo1WmtMMU0yVFBMSlgzWGJXa2JPVWZBMGxJRVdUOHRBYlVSVEhQ
QjVOakRTQ1pubnVwME15c1YybkRPWUw4clhNcFc3MwpJVENBaUF1Z3A4djVIMEhZRXIvSVFoV1Fk
RW5KSDBwSnVnM0lKVmlaaHdVTU9SekMxSVFwclNvOXFSZ3ExSWdEZlNXUjFHV0JNTTFPClg1bnM5
MUY3MlFNZ1d6MzV6ZnN0YmVjd2pYd1NtZWRwL25hR3VCTGNNQ0Y1TlE2L2xhdjZuOE1YWHV2SlV4
dll5QW5UanhvWDVvS24KWENIRytRb205TDE4TmZ0VVNGS1Y4dDUvazJ3Q0FBQi9BZ0FBa2dJQUFL
VUNBQUM0QWdBQXl3SUFBTjRDQUFENEFnQUFDd01BQUNVRApBQUEvQXdBQVVnTUFBR1VEQUFCNEF3
QUFpd01BQUo0REFBQ3hBd0FBeEFNQUFOY0RBQURxQXdBQS9RTUFBQkFFQUFBakJBQUFOZ1FBCkFF
a0VBQUJjQkFBQWJ3UUFBSUlFQUFDVkJBQUFxQVFBQU1JRUFBRFZCQUFBNkFRQUFQc0VBQUFWQlFB
QUtBVUFBRHNGQUFCT0JRQUEKWVFVQUFIUUZBQUNIQlFBQW1nVUFBSzBGQUFEQUJRQUEwd1VBQU9Z
RkFBQUFCZ0FBRXdZQUFDWUdBQUE1QmdBQVRBWUFBRjhHQUFCeQpCZ0FBaFFZQUFKZ0dBQUN5QmdB
QXhRWUFBTmdHQUFDVUNRQUFBUUFBQVA0R0FBQVdBQUFBQUFBQWJ3WUFBQUVBQUFCM0JBQUFGZ0FB
CkFBQUFBS1FFQUFBQkFBQUF4d0lBQUJZQUFBQUFBQUF2U1FBQUFRQUFBRmhwQUFBV0FBQUFBQUFB
OWg4QUFBRUFBQURvTEFBQUFnQUMKQUFBQUFENENBQUFCQUFBQUdRRUFBQllBQUFBQUFBQUJCd0FB
QWdBQUFGRUdBQUFUQUFMcEJnQUFGZ0FBQUFBQUFEd2hBQUFCQUFBQQpnellBQUJZQUFBQUFBQURo
UVFBQUFnQUFBUFZqQUFBRUFBTGdaUUFBRmdBQUFBQUFBTThHQUFBQ0FBQUFkZ1VBQUJNQUFpMEdB
QUFXCkFBQUFBQUFBYXdJQUFBRUFBQUQzQUFBQUJBQUNBQUFBQURRUEFBQUJBQUFBWlJFQUFBSUFB
Z0FBQUFEbUFBQUFBUUFBQUM0QUFBQVcKQUFBQUFBQUFyUkFBQUFFQUFBQW1GUUFBSkFBQUFBQUFB
QkVpQUFBQkFBQUEzRGNBQUJZQUFBQUFBQUQzQWdBQUFRQUFBRWdFQUFBawpBQUFBQUFBQXh3NEFB
QUVBQUFDRUR3QUFBZ0FDQUFBQUFKaEdBQUFCQUFBQTBHVUFBQllBQUFBQUFBQkVBUUFBQVFBQUFI
WUFBQUFQCkFBQUFBQUFBdWhBQUFBRUFBQUJCRlFBQUFnQUNBQUFBQUZnQ0FBQUJBQUFBNkFBQUFB
UUFBZ0FBQUFDTUFnQUFBUUFBQURnRUFBQUUKQUFJQUFBQUFmaFFBQUFFQUFBQ09HUUFBQWdBQ0FB
QUFBQ0FCQUFBQkFBQUFYd0FBQUJZQUFBQUFBQUR0U1FBQUFRQUFBT2Q3QUFBVwpBQUFBQUFBQVFB
RUFBQUVBQUFCcUFBQUFKQUFBQUFBQUFCY2pBQUFCQUFBQXNUZ0FBQ1FBQUFBQUFBRGVBUUFBQVFB
QUFLRUFBQUFXCkFBQUFBQUFBcHhvQUFBRUFBQUFSSlFBQUFnQUNBQUFBQUJaSUFBQUNBQUFBSDJj
QUFCTUFBckpuQUFBV0FBQUFBQUFBR3dJQUFBRUEKQUFDNUFBQUFFd0FDQUFBQUFNOEpBQUFCQUFB
QUNRY0FBQUlBQWdBQUFBQ1pRUUFBQVFBQUFFUmpBQUFFQUFJQUFBQUFod1lBQUFJQQpBQUNiQkFB
QUV3QUNVZ1VBQUJZQUFBQUFBQUEwQWdBQUFRQUFBQTRCQUFBV0FBQUFBQUFBMFVZQUFBRUFBQURy
WlFBQUZnQUFBQUFBCkFLd1VBQUFCQUFBQW1ob0FBQUlBQWdBQUFBQXpSZ0FBQVFBQUFLTmxBQUFX
QUFBQUFBQUFiRWNBQUFFQUFBRDBaZ0FBRmdBQUFBQUEKQU5ZWUFBQUJBQUFBR1NJQUFBSUFBZ0FB
QUFCWlJnQUFBUUFBQUxsbEFBQVdBQUFBQUFBQTN3QUFBQUVBQUFBbkFBQUFKQUFBQUFBQQpBRVFN
QUFBQkFBQUFNUWtBQUJZQUFBQUFBQUFRQWdBQUFRQUFBTW9BQUFBV0FBQUFBQUFBRjBZQUFBRUFB
QUR0WkFBQUJBQUNBQUFBCkFGOUZBQUFDQUFBQXZXUUFBQVFBQWdSbkFBQVdBQUFBQUFBQThTQUFB
QUVBQUFBWU5RQUFBZ0FDQUFBQUFNTWZBQUFCQUFBQXBpc0EKQUFJQUFnQUFBQUFHRndBQUFRQUFB
QU1nQUFBQ0FBSUFBQUFBRFVvQUFBRUFBQUQ5ZXdBQUZnQUFBQUFBQUFrREFBQUJBQUFBQmdFQQpB
QUlBQWdBQUFBQ1dIQUFBQVFBQUFKVW5BQUFDQUFJQUFBQUFkZzBBQUFFQUFBQ2hEQUFBRmdBQUFB
QUFBRXNLQUFBQkFBQUFQUWtBCkFBSUFBZ0FBQUFDOFJRQUFBZ0FBQU5Ka0FBQUVBQUlQWndBQUZn
QUFBQUFBQUlaR0FBQUJBQUFBeVdVQUFDUUFBQUFBQUFEeVJnQUEKQVFBQUFCQm1BQUFUQUFJQUFB
QUFMd29BQUFFQUFBQlNDUUFBQkFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUVVQUFBQUFBQUFCQUFB
QQpBQUFBQUFBQUFBQUFBQUFBQUZBQUFBQUFBQUFBUlFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFB
QUFBQUFvQUFBQUFBQUFBQ2FBQUFBCkFRQUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBUUFBQUFB
QUFNd0dBQUFoQUFJQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBSUFBQUEKQUFBQU1RRUFBR0VCQXdF
QUFBQUFBQUFBQUFBQUFBQUFBQUFBd0FrQUFBQUFBQURSQlFBQTBWZ0ZBUUFBQUFBQUFBQUFBQUFB
QUFBQQpBQUNnRHdBQUFBQUFBQXdBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFMQVBBQUFB
QUFBQWxBSUFBQkVMQkFFQUFBQUFBQUFBCkFBQUFBQUFBQUFBQVVCSUFBQUFBQUFBL0NBQUFFUXNF
QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUNRR2dBQUFBQUFBSDBCQUFCaEFRTUIKQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQkFjQUFBQUFBQUFKd1FBQU5GWUJRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFDQUFB
QUFBQUFCaApBd0FBRVFzRUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFDd0l3QUFBQUFBQUR3QUFBQUJB
QUVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBUEFqCkFBQUFBQUFBSlFNQUFCRUxCQUVBQUFBQUFBQUFB
QUFBQUFBQUFBQUFJQ2NBQUFBQUFBQStBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUEKQUFBQUFBQmdK
d0FBQUFBQUFENEFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUtBbkFBQUFBQUFBbndVQUFC
RUxCQUVBQUFBQQpBQUFBQUFBQUFBQUFBQUFBUUMwQUFBQUFBQUM3QUFBQUlRQUNBUUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFMZ0FBQUFBQUFENEFBQUFBCkFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFF
QXVBQUFBQUFBQVBnQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0M0QUFBQUEKQUFDYkFB
QUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnTHdBQUFBQUFBQllBQUFBQUFBQUJBQUFBQUFB
QUFBQUFBQUFBQUFBQQpBRUF2QUFBQUFBQUFYUVlBQU5GWUJRRUFBQUFBQUFBQUFBQUFBQUFBQUFB
QW9EVUFBQUFBQUFDckFnQUFFUXNFQVFBQUFBQUFBQUFBCkFBQUFBQUFBQUFCUU9BQUFBQUFBQUQ0
QUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkE0QUFBQUFBQUFQZ0FBQUFBQUFBRUEKQUFB
QUFBQUFBQUFBQUFBQUFBQUEwRGdBQUFBQUFBRGdBQUFBQVFBQkFRQUFBQUFBQUFBQUFBQUFBQUFB
QUFDd09RQUFBQUFBQU4wSApBQUFSQ3dRQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUpCQkFBQUFBQUFB
U0FFQUFDRUFBZ0VBQUFBQUFBQUFBQUFBQUFBQUFBQUE0RUlBCkFBQUFBQUNPQ0FBQTBWZ0ZBUUFB
QUFBQUFBQUFBQUFBQUFBQUFBQndTd0FBQUFBQUFGc0JBQUFSQ3dRQkFBQUFBQUFBQUFBQUFBQUEK
QUFBQUFOQk1BQUFBQUFBQVBnQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUUwQUFBQUFB
QUErQUFBQUFBQUFBUUFBQUFBQQpBQUFBQUFBQUFBQUFBQUJRVFFBQUFBQUFBQjREQUFEUldBVUJB
QUFBQUFBQUFBQUFBQUFBQUFBQUFIQlFBQUFBQUFBQXNnQUFBR0VCCkF3RUFBQUFBQUFBQUFBQUFB
QUFBQUFBQU1GRUFBQUFBQUFDN0FBQUFJUUFDQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUR3VVFBQUFB
QUEKQUNBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJTQUFBQUFBQUFJQUFBQUFBQUFB
RUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpNRklBQUFBQUFBQ3JBQUFBQVFBQkFRQUFBQUFBQUFBQUFB
QUFBQUFBQUFEZ1VnQUFBQUFBQUR3QUFBQUJBQUVCQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUNCVEFB
QUFBQUFBQ3dVQUFORllCUUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFNRmdBQUFBQUFBQjVBUUFBRVFz
RUFRQUEKQUFBQUFBQUFBQUFBQUFBQUFBQ3dXUUFBQUFBQUFENEFBQUFBQUFBQkFBQUFBQUFBQUFB
QUFBQUFBQUFBQVBCWkFBQUFBQUFBUGdBQQpBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUZv
QUFBQUFBQURUQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFXd0FBCkFBQUFBSFVDQUFB
UkN3UUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQmRBQUFBQUFBQUtnSUFBQkVMQkFFQUFBQUFBQUFB
QUFBQUFBQUEKQUFBQXdGOEFBQUFBQUFBK0FBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
WUFBQUFBQUFBRDRBQUFBQUFBQUJBQUFBQUFBQQpBQUFBQUFBQUFBQUFBRUJnQUFBQUFBQUFUUVlB
QU5GWUJRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQWtHWUFBQUFBQUFBdUFRQUFFUXNFCkFRQUFBQUFB
QUFBQUFBQUFBQUFBQUFEQVp3QUFBQUFBQUdVRUFBQmhBUU1CQUFBQUFBQUFBQUFBQUFBQUFBQUFB
S0JzQUFBQUFBQUEKYUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRDhCQUFBQUFBQWpB
QUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFCQQpQd0VBQUFBQUFETUFBQUFCQUFFQkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUlBL0FRQUFBQUFBTmdBQUFBQUFBQUVBQUFBQUFBQUFBQUFBCkFBQUFB
QUFBd0Q4QkFBQUFBQUFJQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBRFFQd0VBQUFBQUFD
TUFBQUFBQUFBQkFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQkFBUUFBQUFBQU13QUFBQUVBQVFFQUFB
QUFBQUFBQUFBQUFBQUFBQUFBUUVBQkFBQUFBQUFJQUFBQQpBQUFBQVFBQUFBQUFBQUFBQUFBQUFB
QUFBQUJRUUFFQUFBQUFBQ01BQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQkFBUUFBCkFB
QUFNd0FBQUFFQUFRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdFQUJBQUFBQUFBV0FBQUFBQUFBQVFB
QUFBQUFBQUFBQUFBQUFBQUEKQUFEZ1FBRUFBQUFBQUNNQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQkJCQVFBQUFBQUFNd0FBQUFFQUFRRUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFVRUVCQUFB
QUFBQWpBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFDQVFRRUFBQUFBQURNQUFBQUJBQUVC
CkFBQUFBQUFBQUFBQUFBQUFBQUFBQU1CQkFRQUFBQUFBSXdBQUFBQUFBQUVBQUFBQUFBQUFBQUFB
QUFBQUFBQUE4RUVCQUFBQUFBQXoKQUFBQUFRQUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdRZ0VB
QUFBQUFDTUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUdCQwpBUUFBQUFBQU13QUFBQUVB
QVFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0VJQkFBQUFBQUFPQUFBQUFBQUFBUUFBQUFBQUFBQUFB
QUFBCkFBQUFBQUN3UWdFQUFBQUFBQ01BQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQkNB
UUFBQUFBQU13QUFBQUVBQVFFQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUlFTUJBQUFBQUFBakFBQUFB
QUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRUXdFQUFBQUFBRE1BQUFBQgpBQUVCQUFBQUFBQUFB
QUFBQUFBQUFBQUFBSkJEQVFBQUFBQUFCZ0FBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9F
TUJBQUFBCkFBQUtBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFDd1F3RUFBQUFBQUNNQUFB
QUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUEKQU9CREFRQUFBQUFBTXdBQUFBRUFBUUVBQUFBQUFB
QUFBQUFBQUFBQUFBQUFJRVFCQUFBQUFBQWpBQUFBQUFBQUFRQUFBQUFBQUFBQQpBQUFBQUFBQUFB
QlFSQUVBQUFBQUFETUFBQUFCQUFFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUpCRUFRQUFBQUFBRGdB
QUFBQUFBQUVBCkFBQUFBQUFBQUFBQUFBQUFBQUFBRUcwQUFBQUFBQUFiQkFBQTBWZ0ZBUUFBQUFB
QUFBQUFBQUFBQUFBQUFBQVVBQUFBQUFBQUFBRjYKVWdBQmVCQUJFQXdIQ0pBQkFBQWtBQUFBSEFB
QUFPZ3ovZi8vLy8vL1JRQUFBQUFBQUFBQVFRNFFoZ0pERFFZQUFBQUFBQUFBSkFBQQpBRVFBQUFB
UU5QMy8vLy8vLzBVQUFBQUFBQUFBQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ1FBQUFCc0FBQUFPRFQ5
Ly8vLy8vK2FBQUFBCkFBQUFBQUJCRGhDR0FrTU5Ca0tEQXdBQUFBQWtBQUFBbEFBQUFMQTAvZi8v
Ly8vL3pBWUFBQUFBQUFBQVFRNFFoZ0pERFFaRGd3U08KQXdBQUpBQUFBTHdBQUFESU8vMy8vLy8v
L3pFQkFBQUFBQUFBQUVFT0VJWUNRdzBHU1lNRmpnU1BBeXdBQUFEa0FBQUE0RHo5Ly8vLwovLy9S
QlFBQUFBQUFBQUJCRGhDR0FrTU5CbENEQjR3R2pRV09CSThEQUFBQUFDUUFBQUFVQVFBQWtFTDkv
Ly8vLy84TUFBQUFBQUFBCkFBQkJEaENHQWtNTkJnQUFBQUFBQUFBc0FBQUFQQUVBQUhoQy9mLy8v
Ly8vbEFJQUFBQUFBQUFBUVE0UWhnSkREUVpPZ3dhTUJZNEUKandNQUFBQUFBQUFzQUFBQWJBRUFB
T2hFL2YvLy8vLy9Qd2dBQUFBQUFBQUFRUTRRaGdKRERRWk9nd2FNQlk0RWp3TUFBQUFBQUFBawpB
QUFBbkFFQUFQaE0vZi8vLy8vL2ZRRUFBQUFBQUFBQVFRNFFoZ0pERFFaTWd3V09CSThETEFBQUFN
UUJBQUJRVHYzLy8vLy8veWNFCkFBQUFBQUFBQUVFT0VJWUNRdzBHVUlNSGpBYU5CWTRFandNQUFB
QUFMQUFBQVBRQkFBQlFVdjMvLy8vLy8yRURBQUFBQUFBQUFFRU8KRUlZQ1F3MEdUb01HakFXT0JJ
OERBQUFBQUFBQUpBQUFBQ1FDQUFDUVZmMy8vLy8vL3p3QUFBQUFBQUFBQUVFT0VJWUNRdzBHUW9N
RApBQUFBQUN3QUFBQk1BZ0FBcUZYOS8vLy8vLzhsQXdBQUFBQUFBQUJCRGhDR0FrTU5CazZEQm93
RmpnU1BBd0FBQUFBQUFDUUFBQUI4CkFnQUFxRmo5Ly8vLy8vOCtBQUFBQUFBQUFBQkJEaENHQWtN
TkJnQUFBQUFBQUFBa0FBQUFwQUlBQU1CWS9mLy8vLy8vUGdBQUFBQUEKQUFBQVFRNFFoZ0pERFFZ
QUFBQUFBQUFBTEFBQUFNd0NBQURZV1AzLy8vLy8vNThGQUFBQUFBQUFBRUVPRUlZQ1F3MEdUb01H
akFXTwpCSThEQUFBQUFBQUFKQUFBQVB3Q0FBQklYdjMvLy8vLy83c0FBQUFBQUFBQUFFRU9FSVlD
UXcwR1I0TUVqZ01BQUNRQUFBQWtBd0FBCjRGNzkvLy8vLy84K0FBQUFBQUFBQUFCQkRoQ0dBa01O
QmdBQUFBQUFBQUFrQUFBQVRBTUFBUGhlL2YvLy8vLy9QZ0FBQUFBQUFBQUEKUVE0UWhnSkREUVlB
QUFBQUFBQUFKQUFBQUhRREFBQVFYLzMvLy8vLy81c0FBQUFBQUFBQUFFRU9FSVlDUXcwR0FBQUFB
QUFBQUNRQQpBQUNjQXdBQWlGLzkvLy8vLy84V0FBQUFBQUFBQUFCQkRoQ0dBa01OQmdBQUFBQUFB
QUFzQUFBQXhBTUFBSUJmL2YvLy8vLy9YUVlBCkFBQUFBQUFBUVE0UWhnSkREUVpRZ3dlTUJvMEZq
Z1NQQXdBQUFBQXNBQUFBOUFNQUFMQmwvZi8vLy8vL3F3SUFBQUFBQUFBQVFRNFEKaGdKRERRWk9n
d2FNQlk0RWp3TUFBQUFBQUFBa0FBQUFKQVFBQURCby9mLy8vLy8vUGdBQUFBQUFBQUFBUVE0UWhn
SkREUVlBQUFBQQpBQUFBSkFBQUFFd0VBQUJJYVAzLy8vLy8vejRBQUFBQUFBQUFBRUVPRUlZQ1F3
MEdBQUFBQUFBQUFDUUFBQUIwQkFBQVlHajkvLy8vCi8vL2dBQUFBQUFBQUFBQkJEaENHQWtNTkJr
V0RBd0FBQUFBc0FBQUFuQVFBQUJocC9mLy8vLy8vM1FjQUFBQUFBQUFBUVE0UWhnSkQKRFFaT2d3
YU1CWTRFandNQUFBQUFBQUFrQUFBQXpBUUFBTWh3L2YvLy8vLy9TQUVBQUFBQUFBQUFRUTRRaGdK
RERRWkhnd1NPQXdBQQpMQUFBQVBRRUFBRHdjZjMvLy8vLy80NElBQUFBQUFBQUFFRU9FSVlDUXcw
R1VJTUhqQWFOQlk0RWp3TUFBQUFBTEFBQUFDUUZBQUJRCmV2My8vLy8vLzFzQkFBQUFBQUFBQUVF
T0VJWUNRdzBHUzRNR2pBV09CSThEQUFBQUFBQUFKQUFBQUZRRkFBQ0FlLzMvLy8vLy96NEEKQUFB
QUFBQUFBRUVPRUlZQ1F3MEdBQUFBQUFBQUFDUUFBQUI4QlFBQW1IdjkvLy8vLy84K0FBQUFBQUFB
QUFCQkRoQ0dBa01OQmdBQQpBQUFBQUFBc0FBQUFwQVVBQUxCNy9mLy8vLy8vSGdNQUFBQUFBQUFB
UVE0UWhnSkREUVpOZ3dlTUJvMEZqZ1NQQXdBQUFBQWtBQUFBCjFBVUFBS0IrL2YvLy8vLy9zZ0FB
QUFBQUFBQUFRUTRRaGdKRERRWkpnd1dPQkk4REpBQUFBUHdGQUFBNGYvMy8vLy8vLzdzQUFBQUEK
QUFBQUFFRU9FSVlDUXcwR1I0TUVqZ01BQUNRQUFBQWtCZ0FBMEgvOS8vLy8vLzhnQUFBQUFBQUFB
QUJCRGhDR0FrTU5CZ0FBQUFBQQpBQUFrQUFBQVRBWUFBTWgvL2YvLy8vLy9JQUFBQUFBQUFBQUFR
UTRRaGdKRERRWUFBQUFBQUFBQUpBQUFBSFFHQUFEQWYvMy8vLy8vCi82c0FBQUFBQUFBQUFFRU9F
SVlDUXcwR1JZTURBQUFBQUNRQUFBQ2NCZ0FBU0lEOS8vLy8vLzg4QUFBQUFBQUFBQUJCRGhDR0Fr
TU4KQmtLREF3QUFBQUFzQUFBQXhBWUFBR0NBL2YvLy8vLy9Dd1VBQUFBQUFBQUFRUTRRaGdKRERR
Wk5nd2VNQm8wRmpnU1BBd0FBQUFBcwpBQUFBOUFZQUFFQ0YvZi8vLy8vL2VRRUFBQUFBQUFBQVFR
NFFoZ0pERFFaTGd3YU1CWTRFandNQUFBQUFBQUFrQUFBQUpBY0FBSkNHCi9mLy8vLy8vUGdBQUFB
QUFBQUFBUVE0UWhnSkREUVlBQUFBQUFBQUFKQUFBQUV3SEFBQ29odjMvLy8vLy96NEFBQUFBQUFB
QUFFRU8KRUlZQ1F3MEdBQUFBQUFBQUFDUUFBQUIwQndBQXdJYjkvLy8vLy8vVEFBQUFBQUFBQUFC
QkRoQ0dBa01OQmdBQUFBQUFBQUFzQUFBQQpuQWNBQUhpSC9mLy8vLy8vZFFJQUFBQUFBQUFBUVE0
UWhnSkREUVpMZ3dhTUJZNEVqd01BQUFBQUFBQXNBQUFBekFjQUFNaUovZi8vCi8vLy9LZ0lBQUFB
QUFBQUFRUTRRaGdKRERRWkxnd2FNQlk0RWp3TUFBQUFBQUFBa0FBQUEvQWNBQU1pTC9mLy8vLy8v
UGdBQUFBQUEKQUFBQVFRNFFoZ0pERFFZQUFBQUFBQUFBSkFBQUFDUUlBQURnaS8zLy8vLy8vejRB
QUFBQUFBQUFBRUVPRUlZQ1F3MEdBQUFBQUFBQQpBQ3dBQUFCTUNBQUErSXY5Ly8vLy8vOU5CZ0FB
QUFBQUFBQkJEaENHQWtNTkJsQ0RCNHdHalFXT0JJOERBQUFBQUN3QUFBQjhDQUFBCkdKTDkvLy8v
Ly84dUFRQUFBQUFBQUFCQkRoQ0dBa01OQmt1REJvd0ZqZ1NQQXdBQUFBQUFBQ1FBQUFDc0NBQUFH
SlA5Ly8vLy8vOWwKQkFBQUFBQUFBQUJCRGhDR0FrTU5Ca2FEQlk0RWp3TWtBQUFBMUFnQUFOQ1gv
Zi8vLy8vL2FBQUFBQUFBQUFBQVFRNFFoZ0pERFFZQQpBQUFBQUFBQUpBQUFBUHdJQUFBWWF2Ny8v
Ly8vL3lNQUFBQUFBQUFBQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ1FBQUFBa0NRQUFJR3IrCi8vLy8v
Lzh6QUFBQUFBQUFBQUJCRGhDR0FrTU5Ca0tEQXdBQUFBQWtBQUFBVEFrQUFEaHEvdi8vLy8vL05n
QUFBQUFBQUFBQVFRNFEKaGdKRERRWUFBQUFBQUFBQUpBQUFBSFFKQUFCUWF2Ny8vLy8vL3dnQUFB
QUFBQUFBQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ1FBQUFDYwpDUUFBT0dyKy8vLy8vLzhqQUFBQUFB
QUFBQUJCRGhDR0FrTU5CZ0FBQUFBQUFBQWtBQUFBeEFrQUFFQnEvdi8vLy8vL013QUFBQUFBCkFB
QUFRUTRRaGdKRERRWkNnd01BQUFBQUpBQUFBT3dKQUFCWWF2Ny8vLy8vL3dnQUFBQUFBQUFBQUVF
T0VJWUNRdzBHQUFBQUFBQUEKQUNRQUFBQVVDZ0FBUUdyKy8vLy8vLzhqQUFBQUFBQUFBQUJCRGhD
R0FrTU5CZ0FBQUFBQUFBQWtBQUFBUEFvQUFFaHEvdi8vLy8vLwpNd0FBQUFBQUFBQUFRUTRRaGdK
RERRWkNnd01BQUFBQUpBQUFBR1FLQUFCZ2F2Ny8vLy8vL3hZQUFBQUFBQUFBQUVFT0VJWUNRdzBH
CkFBQUFBQUFBQUNRQUFBQ01DZ0FBV0dyKy8vLy8vLzhqQUFBQUFBQUFBQUJCRGhDR0FrTU5CZ0FB
QUFBQUFBQWtBQUFBdEFvQUFHQnEKL3YvLy8vLy9Nd0FBQUFBQUFBQUFRUTRRaGdKRERRWkNnd01B
QUFBQUpBQUFBTndLQUFCNGF2Ny8vLy8vL3lNQUFBQUFBQUFBQUVFTwpFSVlDUXcwR0FBQUFBQUFB
QUNRQUFBQUVDd0FBZ0dyKy8vLy8vLzh6QUFBQUFBQUFBQUJCRGhDR0FrTU5Ca0tEQXdBQUFBQWtB
QUFBCkxBc0FBSmhxL3YvLy8vLy9Jd0FBQUFBQUFBQUFRUTRRaGdKRERRWUFBQUFBQUFBQUpBQUFB
RlFMQUFDZ2F2Ny8vLy8vL3pNQUFBQUEKQUFBQUFFRU9FSVlDUXcwR1FvTURBQUFBQUNRQUFBQjhD
d0FBdUdyKy8vLy8vLzhqQUFBQUFBQUFBQUJCRGhDR0FrTU5CZ0FBQUFBQQpBQUFrQUFBQXBBc0FB
TUJxL3YvLy8vLy9Nd0FBQUFBQUFBQUFRUTRRaGdKRERRWkNnd01BQUFBQUpBQUFBTXdMQUFEWWF2
Ny8vLy8vCi93NEFBQUFBQUFBQUFFRU9FSVlDUXcwR0FBQUFBQUFBQUNRQUFBRDBDd0FBd0dyKy8v
Ly8vLzhqQUFBQUFBQUFBQUJCRGhDR0FrTU4KQmdBQUFBQUFBQUFrQUFBQUhBd0FBTWhxL3YvLy8v
Ly9Nd0FBQUFBQUFBQUFRUTRRaGdKRERRWkNnd01BQUFBQUpBQUFBRVFNQUFEZwphdjcvLy8vLy95
TUFBQUFBQUFBQUFFRU9FSVlDUXcwR0FBQUFBQUFBQUNRQUFBQnNEQUFBNkdyKy8vLy8vLzh6QUFB
QUFBQUFBQUJCCkRoQ0dBa01OQmtLREF3QUFBQUFrQUFBQWxBd0FBQUJyL3YvLy8vLy9CZ0FBQUFB
QUFBQUFRUTRRaGdKRERRWUFBQUFBQUFBQUpBQUEKQUx3TUFBRG9hdjcvLy8vLy93b0FBQUFBQUFB
QUFFRU9FSVlDUXcwR0FBQUFBQUFBQUNRQUFBRGtEQUFBMEdyKy8vLy8vLzhqQUFBQQpBQUFBQUFC
QkRoQ0dBa01OQmdBQUFBQUFBQUFrQUFBQURBMEFBTmhxL3YvLy8vLy9Nd0FBQUFBQUFBQUFRUTRR
aGdKRERRWkNnd01BCkFBQUFKQUFBQURRTkFBRHdhdjcvLy8vLy95TUFBQUFBQUFBQUFFRU9FSVlD
UXcwR0FBQUFBQUFBQUNRQUFBQmNEUUFBK0dyKy8vLy8KLy84ekFBQUFBQUFBQUFCQkRoQ0dBa01O
QmtLREF3QUFBQUFrQUFBQWhBMEFBQkJyL3YvLy8vLy9EZ0FBQUFBQUFBQUFRUTRRaGdKRApEUVlB
QUFBQUFBQUFMQUFBQUt3TkFBQm9rLzMvLy8vLy94c0VBQUFBQUFBQUFFRU9FSVlDUXcwR1VJTUhq
QWFOQlk0RWp3TUFBQUFBCkVuRUFBRVFCQUMwRmNRQUFSQUVBTGYxd0FBQmdBUUF0OG5BQUFGZ0JB
QzFQY0FBQVNRRUFMYUJ2QUFCSUFRQXRTVzhBQUhrQkFDMzkKYmdBQWVBRUFMV2h1QUFDR0FRQXQ4
VzBBQUVjQkFDM2tiUUFBQWdBQUZkeHRBQUFDQUFBVnlXMEFBSUFCQUMzQmJRQUFrd0VBTFc1dApB
QUIvQVFBdFdtMEFBSDhCQUMxQWJRQUFmZ0VBTFNWdEFBQjlBUUF0QVcwQUFKTUFBRzM3YkFBQWxB
QUFIZFZzQUFDV0FRQTl5MndBCkFEc0JBQjI4YkFBQW5BRUFMYkJzQUFDVUFBQWRwbXdBQUpNQUFH
MGJiQUFBa1FBQWJSVnNBQUNTQUFBZEMyd0FBRUVCQUIzaWF3QUEKbkFFQUxkSnJBQUNQQUFCdHpH
c0FBSkFBQUIybWF3QUFsZ0VBUFp4ckFBQTlBUUFkaW1zQUFKd0JBQzE2YXdBQWpRQUFiWFJyQUFD
TwpBQUFkWW1zQUFENEJBQjFRYXdBQW5BRUFMVUJyQUFDTEFBQnRPbXNBQUl3QUFCMFVhd0FBbGdF
QVBRcHJBQUE1QVFBZCtHb0FBSndCCkFDM29hZ0FBaVFBQWJlSnFBQUNLQUFBZHZHb0FBSllCQUQy
eWFnQUFRQUVBSGFCcUFBQ2NBUUF0a0dvQUFJY0FBRzJLYWdBQWlBQUEKSFdScUFBQ1dBUUE5V21v
QUFEd0JBQjFJYWdBQW5BRUFMVHRxQUFDRkFBQnROV29BQUlZQUFCMFBhZ0FBbGdFQVBRVnFBQUEv
QVFBZAo4MmtBQUp3QkFDMi9hUUFBZ3dBQWJibHBBQUNFQUFBZHIya0FBRG9CQUIySmFRQUFsZ0VB
UFhocEFBQTRBUUFkTDJrQUFKd0JBQzBnCmFRQUFrZ0FBSFJKcEFBQ1JBQUJ0QjJrQUFKQUFBQjM1
YUFBQWp3QUFiZTVvQUFDT0FBQWQ0R2dBQUkwQUFHM1ZhQUFBakFBQUhjZG8KQUFDTEFBQnR2R2dB
QUlvQUFCMnVhQUFBaVFBQWJhTm9BQUNJQUFBZGxXZ0FBSWNBQUcyS2FBQUFoZ0FBSFh4b0FBQ0ZB
QUJ0Y1dnQQpBSVFBQUIxamFBQUFnd0FBYlZkb0FBQ0JBQUJ0VVdnQUFJSUFBQjByYUFBQWxnRUFQ
UnBvQUFBNEFRQWRDR2dBQUp3QkFDMzVad0FBCmdnQUFIZTluQUFDQkFBQnRvR2NBQUY0QkFDMXpa
d0FBUHdBQUxVQm5BQUNBQUFBZE9XY0FBQUlBQUJVdVp3QUEzd0FBTGRGbUFBQi8KQUFCdHkyWUFB
SUFBQUIzRVpnQUFTZ0VBTGI5bUFBQUNBQUFWdDJZQUFBSUFBQldyWmdBQWZ3QUFIWGRtQUFDaUFR
QXRiMllBQUh3QgpBQzFuWmdBQVF3QUFMVE5tQUFCK0FBQWRMR1lBQUFJQUFCVWtaZ0FBWGdFQUxm
QmxBQUJ6QVFBdDMyVUFBQU1BQUJYWFpRQUFqZ0VBCkxjbGxBQUFEQUFBVm0yVUFBSTBCQUMxeFpR
QUFlUUVBTFdsbEFBQ2lBUUF0WVdVQUFKc0JBQzFXWlFBQWFRRUFMVDVsQUFCNUFRQXQKTTJVQUFI
Z0JBQzNLWkFBQVpBRUFMYVJrQUFCa0FRQXRtR1FBQUY4QkFDMXdaQUFBaWdFQUxVQmtBQUNMQVFB
dEVHUUFBSTRCQUMzZwpZd0FBaXdFQUxiaGpBQUI4QUFBZHNXTUFBRlVCQUMycFl3QUFYUUFBTGFG
akFBQUNBQUFWZG1NQUFJZ0JBQzFNWXdBQWp3RUFMUnBqCkFBQ0lBUUF0Nm1JQUFJOEJBQzNDWWdB
QWtRRUFMWmRpQUFBQ0FBQVZpMklBQUhNQkFDMTdZZ0FBQXdBQUZXOWlBQUNPQVFBdFltSUEKQUFN
QUFCVTRZZ0FBalFFQUxRNWlBQUI1QVFBdEJtSUFBR2tCQUMzdVlRQUFlUUVBTGR4aEFBQjRBUUF0
YzJFQUFHUUJBQzFOWVFBQQpaQUVBTFJsaEFBQ2lBUUF0M21BQUFIMEFBRzNZWUFBQWZnQUFIZEZn
QUFCS0FRQXR5V0FBQUFJQUFCVzlZQUFBZlFBQUhiSmdBQUI2CkFBQnRyR0FBQUh3QUFCMmxZQUFB
ZFFFQUxaWmdBQUI3QUFBZGptQUFBRGdBQUcySVlBQUFPUUFBSFlGZ0FBQk9BUUF0ZVdBQUFLWUIK
QUQxd1lBQUFPUUFBSFdaZ0FBQTRBQUJ0WEdBQUFIb0FBQjBaWUFBQWxnRUFQUTlnQUFBOUFRQWQy
VjhBQUpZQkFEM1BYd0FBUFFFQQpIWjFmQUFCeUFRQXRsVjhBQUcwQkFDMktYd0FBQWdBQUZZSmZB
QUJ1QVFBdGZWOEFBQUlBQUJWeVh3QUFYUUFBTFVkZkFBQUNBQUFWClAxOEFBSkVCQUMwUlh3QUFB
Z0FBRlFWZkFBQkRBQUF0QUY4QUFBSUFBQlhNWGdBQWVRQUFIY1ZlQUFBQ0FBQVZ2VjRBQUY0QkFD
Mk0KWGdBQUF3RUFMVjVlQUFDUkFRQXRNRjRBQUFJQUFCWHRYUUFBZUFBQWJlZGRBQUI1QUFBZDMx
MEFBQVFBQUczWlhRQUFCUUFBSGRKZApBQUJLQVFBdHpWMEFBQUlBQUJYRlhRQUFBZ0FBRmJ0ZEFB
QUZBQUFkc1YwQUFBUUFBRzJuWFFBQWVBQUFIWFJkQUFDaUFRQXRiRjBBCkFGMEFBQzFuWFFBQUFn
QUFGVHBkQUFCZkFRQXRHMTBBQUlvQkFDM3ZYQUFBaXdFQUxjTmNBQUNPQVFBdGwxd0FBSXNCQUMx
d1hBQUEKZHdBQUhXbGNBQUJyQVFBdFhGd0FBRlVCQUMxVVhBQUFYUUFBTFNwY0FBQUNBQUFWSDF3
QUFIa0JBQzBYWEFBQW9nRUFMZXhiQUFDYgpBUUF0NFZzQUFHb0FBQzJ1V3dBQW9nRUFMWDFiQUFC
MUFBQnRkMXNBQUhjQUFCMXdXd0FBZFFFQUxXRmJBQUIyQUFBZFdWc0FBRGdBCkFHMVRXd0FBT1FB
QUhVeGJBQUJPQVFBdFJGc0FBS1lCQUQwN1d3QUFPUUFBSFRGYkFBQTRBQUJ0SjFzQUFIVUFBQjNJ
V2dBQUFnQUEKRlk1YUFBQUNBQUFWaGxvQUFBSUFBQlZnV2dBQUFnQUFGVXRhQUFBQ0FBQVZDVm9B
QUpZQkFEMy9XUUFBUUFFQUhjbFpBQUNXQVFBOQp2MWtBQUVBQkFCMk1XUUFBWGdFQUxWdFpBQUJB
QUFBdEpGa0FBRDhBQUMwVFdRQUFBZ0FBRlF0WkFBQUNBQUFWMzFnQUFEMEFBRzNaCldBQUFQZ0FB
SGRKWUFBQktBUUF0eWxnQUFBSUFBQlhBV0FBQVBnQUFIYlZZQUFBOUFBQWRtRmdBQU9zQUFDMFlX
QUFBb2dFQUxSQlkKQUFCOEFRQXRDRmdBQUVNQUFDM1VWd0FBZEFBQUhjMVhBQUFDQUFBVnhWY0FB
RU1BQUMyUlZ3QUFjZ0FBSFlwWEFBQUNBQUFWZ2xjQQpBRjRCQUMxU1Z3QUFlUUVBTFVwWEFBQ2lB
UUF0UWxjQUFKc0JBQzAzVndBQWFnQUFMUXhYQUFCZkFRQXQ3VllBQUlvQkFDM0JWZ0FBCml3RUFM
WlZXQUFDT0FRQXRhVllBQUlzQkFDMHdWZ0FBY0FBQUhTbFdBQUJ0QUFBZElsWUFBRlVCQUMwYVZn
QUFWd0VBTFJKV0FBQlAKQVFBdHRWVUFBR1lCQUMyYVZRQUFVZ0VBTFk5VkFBQjVBUUF0aEZVQUFH
b0FBQzFSVlFBQWpBRUFMU1ZWQUFDTEFRQXQ2bFFBQUtJQgpBQzNQVkFBQUFnQUFGYjVVQUFDSUFR
QXRrbFFBQUk4QkFDMXFWQUFBY3dBQWJXUlVBQUIwQUFBZFhWUUFBRW9CQUMxWVZBQUFBZ0FBCkZW
QlVBQUFDQUFBVlJGUUFBSE1BQUIwNVZBQUFjUUFBYlROVUFBQnlBQUFkSzFRQUFBUUFBRzBsVkFB
QUJRQUFIUjVVQUFCS0FRQXQKR1ZRQUFBSUFBQlVSVkFBQUFnQUFGUWRVQUFBRkFBQWQvVk1BQUFR
QUFHM3pVd0FBY1FBQUhleFRBQUJ1QUFCdDVsTUFBSEFBQUIzZgpVd0FBZFFFQUxkQlRBQUJ2QUFB
ZHlGTUFBRGdBQUczQ1V3QUFPUUFBSGJ0VEFBQk9BUUF0czFNQUFLWUJBRDJxVXdBQU9RQUFIYUJU
CkFBQTRBQUJ0bGxNQUFHNEFBQjJQVXdBQWF3QUFiWWxUQUFCdEFBQWRnbE1BQUhVQkFDMXpVd0FB
YkFBQUhXdFRBQUE0QUFCdFpWTUEKQURrQUFCMWVVd0FBVGdFQUxWWlRBQUNtQVFBOVRWTUFBRGtB
QUIxRFV3QUFPQUFBYlRsVEFBQnJBQUFkRFZNQUFBSUFBQldrVWdBQQpqQUVBTFdwU0FBQ0xBUUF0
SDFJQUFENEJBQjMvVVFBQVBnRUFIZEpSQUFCZUFRQXRwRkVBQUxVQUFDMFFVUUFBY3dFQUxmVlFB
QUFECkFBQVY3VkFBQUdrQkFDM2JVQUFBZWdFQUxkQlFBQUI1QVFBdHhWQUFBSGdCQUMyelVBQUFB
d0FBRmF0UUFBQmJBUUF0VzFBQUFLSUIKQUMxVFVBQUFQd0FBTFI1UUFBQnBBQUFkRjFBQUFBSUFB
QlVQVUFBQW9nRUFMZWRQQUFCeUFRQXQzMDhBQUc0QkFDM1hUd0FBQWdBQQpGYzlQQUFCdEFRQXR4
RThBQUFJQUFCVzhUd0FBWFFBQUxiZFBBQUFDQUFBVmlVOEFBSkVCQUMxZVR3QUFBZ0FBRlZKUEFB
Qm5BUUF0ClNrOEFBRjhCQUMwdVR3QUFpUUVBTFFGUEFBQ05BUUF0MlU0QUFHY0FBQjNTVGdBQVZR
RUFMY3BPQUFCZEFBQXRuMDRBQUFJQUFCV1gKVGdBQWFBRUFMWXhPQUFCNUFRQXRoRTRBQUtJQkFD
MWNUZ0FBbXdFQUxWRk9BQUJxQUFBdEhVNEFBS0lCQUMzd1RRQUFhQUFBYmVwTgpBQUJwQUFBZDQw
MEFBRW9CQUMzZVRRQUFBZ0FBRmRaTkFBQUNBQUFWeWswQUFHZ0FBQjIvVFFBQVpRQUFiYmxOQUFC
bkFBQWRzazBBCkFIVUJBQzJqVFFBQVpnQUFIWnROQUFBNEFBQnRsVTBBQURrQUFCMk9UUUFBVGdF
QUxZWk5BQUNtQVFBOWZVMEFBRGtBQUIxelRRQUEKT0FBQWJXbE5BQUJsQUFBZEtVMEFBSllCQUQw
ZlRRQUFPUUVBSGVsTUFBQ1dBUUE5MzB3QUFEa0JBQjJ0VEFBQUp3RUFMWUJNQUFCZQpBUUF0VTB3
QUFEOEFBQzBnVEFBQVpBQUFIUmxNQUFBQ0FBQVZEa3dBQU1jQUFDMnhTd0FBWXdBQWJhdExBQUJr
QUFBZHBFc0FBRW9CCkFDMmZTd0FBQWdBQUZaZExBQUFDQUFBVmkwc0FBR01BQUIxWVN3QUFvZ0VB
TFZCTEFBQjhBUUF0U0VzQUFFTUFBQzBIU3dBQVlnQUEKSGNsS0FBQUNBQUFWd1VvQUFGNEJBQzFR
U2dBQWN3RUFMVHhLQUFBREFBQVZORW9BQUk0QkFDMG5TZ0FBQXdBQUZmeEpBQUNOQVFBdAowVWtB
QUhrQkFDM0pTUUFBb2dFQUxjRkpBQUJmQVFBdGxVa0FBSW9CQUMwWVNRQUFpd0VBTGFWSUFBQ09B
UUF0TWtnQUFJc0JBQzNBClJ3QUFZQUFBSGJsSEFBQlZBUUF0c1VjQUFGMEFBQzA1UndBQUFnQUFG
VEZIQUFCekFRQXRJVWNBQUFNQUFCVVZSd0FBamdFQUxRaEgKQUFBREFBQVZra1lBQUkwQkFDMDFS
Z0FBQWdBQUZTMUdBQUFDQUFBVkVFWUFBSGtCQUMwSVJnQUFhUUVBTGZCRkFBQjVBUUF0NVVVQQpB
SGdCQUMzWFJRQUFBZ0FBRlhsRkFBQmtBUUF0VTBVQUFHUUJBQzAvUlFBQWp3RUFMUTlGQUFDT0FR
QXQzMFFBQUkwQkFDMlhSQUFBCm13RUFMWXhFQUFCcEFRQXRkRVFBQUhrQkFDMXBSQUFBZUFFQUxm
cERBQUJrQVFBdDFFTUFBR1FCQUMyL1F3QUFvZ0VBTFg1REFBQmgKQUFCdGVFTUFBR0lBQUIxeFF3
QUFTZ0VBTFdsREFBQUNBQUFWWFVNQUFHRUFBQjFTUXdBQVhnQUFiVXhEQUFCZ0FBQWRSVU1BQUhV
QgpBQzAyUXdBQVh3QUFIUzVEQUFBNEFBQnRLRU1BQURrQUFCMGhRd0FBVGdFQUxSbERBQUNtQVFB
OUVFTUFBRGtBQUIwR1F3QUFPQUFBCmJmeENBQUJlQUFBZDFFSUFBSVVCQUMzRVFnQUFVUUVBTGJs
Q0FBQ0NBUUF0c1VJQUFJRUJBQzJuUWdBQUFnQUFGWjlDQUFBQ0FBQVYKZzBJQUFJRUJBQzFpUWdB
QUFnQUFGVnBDQUFDQkFRQXRUVUlBQUFJQUFCVW9RZ0FBZ1FFQUxSWkNBQUFDQUFBVkRrSUFBQUlB
QUJYbApRUUFBaEFFQUxhUkJBQUNEQVFBdGVVRUFBR0lCQUMwQ1FRQUFiQUVBTGZwQUFBQmNBQUFk
ODBBQUFGVUJBQzNyUUFBQVhRQUFMWjFBCkFBQUNBQUFWbFVBQUFBSUFBQlYxUUFBQUFnQUFGVjlB
QUFDUEFRQXRNRUFBQUk0QkFDMEJRQUFBalFFQUxkby9BQUJTQVFBdHdqOEEKQUlrQkFDMkZQd0FB
aVFFQUxRZy9BQUNKQVFBdGxENEFBSTBCQUMxTlBnQUFqUUVBTFFZK0FBQUNBQUFWOWowQUFJMEJB
QzJEUFFBQQpqUUVBTGZjOEFBQmNBUUF0N3p3QUFBSUFBQlhjUEFBQWlBRUFMYTA4QUFDUEFRQXRG
andBQUk0QkFDM25Pd0FBandFQUxXZzdBQUNOCkFRQXRMenNBQUFJQUFCVWFPd0FBQWdBQUZmMDZB
QUNQQVFBdDhEb0FBQUlBQUJXck9nQUFqZ0VBTFhzNkFBQ05BUUF0TkRvQUFGc0EKQUcwdU9nQUFY
QUFBSFNjNkFBQktBUUF0SWpvQUFBSUFBQlVhT2dBQUFnQUFGUTQ2QUFCYkFBQWQ3RGtBQUFJQUFC
V1pPUUFBQWdBQQpGWXc1QUFBQ0FBQVZiRGtBQUk4QkFDMWlPUUFBQWdBQUZTMDVBQUNPQVFBdEFE
a0FBSTBCQUMycE9BQUFsZ0VBUFo4NEFBQTdBUUFkCmFUZ0FBSllCQUQxZk9BQUFPd0VBSFNzNEFB
QmVBUUF0K2pjQUFFQUFBQzNDTndBQVp3RUFMYm8zQUFBL0FBQXRxVGNBQUFJQUFCV2gKTndBQUFn
QUFGWFUzQUFBOUFBQnRiemNBQUQ0QUFCMW9Od0FBU2dFQUxXQTNBQUFDQUFBVlZqY0FBRDRBQUIx
TE53QUFQUUFBSFM0MwpBQUQzQUFBdEFEY0FBRllCQUMycE5nQUFpQUVBTFhrMkFBQ1BBUUF0U1RZ
QUFJNEJBQzBaTmdBQWpRRUFMZkUxQUFCbEFRQXQ1VFVBCkFHZ0JBQzJITlFBQW9nRUFMWDgxQUFC
OEFRQXRkelVBQUVNQUFDMUNOUUFBV2dBQUhUczFBQUFDQUFBVk16VUFBRjRCQUMwRk5RQUEKY3dF
QUxmUTBBQUFEQUFBVjdEUUFBSTRCQUMzaU5BQUFBd0FBRmJjMEFBQ05BUUF0akRRQUFIa0JBQzJF
TkFBQW9nRUFMWHcwQUFCZgpBUUF0WFRRQUFJb0JBQzB3TkFBQWl3RUFMUU0wQUFDT0FRQXQxak1B
QUlzQkFDMmNNd0FBV0FBQUhaVXpBQUJWQUFBZGpqTUFBRlVCCkFDMkdNd0FBVndFQUxYNHpBQUJR
QVFBdFp6TUFBRkFCQUMxUU13QUFVQUVBTFRrekFBQm1BUUF0SGpNQUFBSUFBQlVSTXdBQVVnRUEK
TFFRekFBQ0lBUUF0M0RJQUFITUJBQzNQTWdBQUF3QUFGY015QUFDT0FRQXR1VElBQUFNQUFCV09N
Z0FBalFFQUxXTXlBQUI1QVFBdApXeklBQUdrQkFDMUdNZ0FBZVFFQUxUc3lBQUI0QVFBdDJ6RUFB
R1FCQUMyNE1RQUFaQUVBTGFjeEFBQ01BUUF0ZWpFQUFJc0JBQzB5Ck1RQUFtd0VBTFNjeEFBQnBB
UUF0RlRFQUFIa0JBQzBLTVFBQWVBRUFMYTB3QUFCa0FRQXRqVEFBQUdRQkFDMTRNQUFBb2dFQUxV
QXcKQUFCWkFBQnRPakFBQUZvQUFCMHpNQUFBU2dFQUxTNHdBQUFDQUFBVkpqQUFBQUlBQUJVYU1B
QUFXUUFBSFE4d0FBQldBQUJ0Q1RBQQpBRmdBQUIwQ01BQUFkUUVBTGZNdkFBQlhBQUFkNnk4QUFE
Z0FBRzNsTHdBQU9RQUFIZDR2QUFCT0FRQXQxaThBQUtZQkFEM05Md0FBCk9RQUFIY012QUFBNEFB
QnR1UzhBQUZZQUFCMnlMd0FBVXdBQWJhd3ZBQUJWQUFBZHBTOEFBSFVCQUMyV0x3QUFWQUFBSFk0
dkFBQTQKQUFCdGlDOEFBRGtBQUIyQkx3QUFUZ0VBTFhrdkFBQ21BUUE5Y0M4QUFEa0FBQjFtTHdB
QU9BQUFiVnd2QUFCVEFBQWRNQzhBQUFJQQpBQlVvTHdBQUFnQUFGZmd1QUFBQ0FBQVY4QzRBQUl3
QkFDMjJMZ0FBaXdFQUxWa3VBQUNXQVFBOVR5NEFBRDhCQUIwWkxnQUFsZ0VBClBROHVBQUEvQVFB
ZDRpMEFBRjRCQUMyMExRQUEwd0FBTFNzdEFBQ2lBUUF0SXkwQUFHSUJBQzNoTEFBQUFnQUFGY0Vz
QUFDUEFRQXQKa2l3QUFJb0JBQzFqTEFBQWpRRUFMVHdzQUFCc0FRQXROQ3dBQUZJQUFCMHRMQUFB
WWdFQUxmUXJBQUFDQUFBVnpTc0FBSThCQUMyZQpLd0FBaWdFQUxXOHJBQUNOQVFBdFNDc0FBR3dC
QUMxQUt3QUFVQUFBSFRnckFBQlJBQUJ0TWlzQUFGSUFBQjByS3dBQVNnRUFMU1lyCkFBQUNBQUFW
SGlzQUFBSUFBQlVTS3dBQVVRQUFIUXNyQUFCUEFBQnRCU3NBQUZBQUFCMytLZ0FBU2dFQUxmVXFB
QUFDQUFBVjZTb0EKQUU4QUFCM2pLZ0FBYXdFQUxka3FBQUE4QUFBdHJ5b0FBRTRBQUIyb0tnQUFT
d0FBSGFFcUFBQkpBQUFkbWlvQUFHc0JBQzJOS2dBQQpWZ0VBTFdNcUFBQnpBUUF0VHlvQUFBTUFB
QlZIS2dBQWpnRUFMVG9xQUFBREFBQVZFQ29BQUkwQkFDM21LUUFBZVFFQUxkNHBBQUNpCkFRQXR0
eWtBQUpzQkFDMnNLUUFBYVFFQUxaUXBBQUI1QVFBdGlTa0FBSGdCQUMwYUtRQUFaQUVBTGZRb0FB
QmtBUUF0M3lnQUFLSUIKQUMyYUtBQUFUQUFBYlpRb0FBQk9BQUFkalNnQUFIVUJBQzErS0FBQVRR
QUFIWFlvQUFBNEFBQnRjQ2dBQURrQUFCMXBLQUFBVGdFQQpMV0VvQUFDbUFRQTlXQ2dBQURrQUFC
MU9LQUFBT0FBQWJVUW9BQUJNQUFBZFBTZ0FBRW9BQUcwM0tBQUFTd0FBSFRBb0FBQktBUUF0Ckt5
Z0FBQUlBQUJVaktBQUFBZ0FBRlJjb0FBQktBQUFkRUNnQUFFY0FBRzBLS0FBQVNRQUFIUU1vQUFC
MUFRQXQ5Q2NBQUVnQUFCM3MKSndBQU9BQUFiZVluQUFBNUFBQWQzeWNBQUU0QkFDM1hKd0FBcGdF
QVBjNG5BQUE1QUFBZHhDY0FBRGdBQUcyNkp3QUFSd0FBSFhrbgpBQUNXQVFBOWJ5Y0FBRHdCQUIw
NUp3QUFsZ0VBUFM4bkFBQThBUUFkQVNjQUFLSUJBQzNXSmdBQW13RUFMY3NtQUFCaEFRQXR3eVlB
CkFHSUJBQzJaSmdBQWtBRUFQWkltQUFCc0FRQXRpaVlBQUVZQUFCMkRKZ0FBYXdFQUxYWW1BQUJl
QVFBdFNDWUFBQjBCQUMwZEpnQUEKYXdFQUxSQW1BQUJ6QVFBdC95VUFBQU1BQUJYM0pRQUFqZ0VB
TGUwbEFBQURBQUFWdnlVQUFJMEJBQzJVSlFBQVV3RUFMWWNsQUFCNQpBUUF0ZnlVQUFHa0JBQzFu
SlFBQWVRRUFMVndsQUFCNEFRQXQ5aVFBQUdRQkFDM1FKQUFBWkFFQUxiSWtBQUNpQVFBdGRDUUFB
S1VBCkFDMDNKQUFBUlFBQWJURWtBQUJHQUFBZEtpUUFBRXNCQUMwZUpBQUFBZ0FBRlJZa0FBQUNB
QUFWQ2lRQUFFVUFBQjNZSXdBQWx3RUEKUGM4akFBQjZBUUF0eHlNQUFCMEJBQzI2SXdBQUhRRUFM
WTBqQUFCbkFRQXRoU01BQUY0QkFDMVNJd0FBZXdFQUxVc2pBQUJkQVFBdApHQ01BQUhjQkFDMFFJ
d0FBUXdFQUxmRWlBQUJ2QVFBdHppSUFBRllCQUMxR0lnQUFBZ0FBRmFjaEFBQUNBQUFWZHlFQUFF
VUJBQzNsCklBQUFSZ0VBTFpJZ0FBQmpBUUF0Z3lBQUFHUUJBQzEwSUFBQWFBRUFMU0VnQUFCaEFR
QXRHU0FBQUQ4QUFDM0VId0FBVEFFQUxaQWYKQUFDbkFRQTlpUjhBQUdzQkFDMThId0FBWWdFQUxW
SWZBQUNRQVFBOVN4OEFBR3dCQUMxQUh3QUFhd0VBTFRNZkFBQmVBUUF0QUI4QQpBSHNCQUMzNUhn
QUFYUUVBTGNZZUFBQjNBUUF0dmg0QUFFTUJBQzJSSGdBQWF3RUFMWVFlQUFCVUFRQXRVaDRBQUZv
QkFDMFVIZ0FBCmtnRUFMZGtkQUFCWkFRQXRteDBBQUpVQkFDM3dIQUFBbEFFQUxmc2JBQUJuQVFB
dDh4c0FBRjRCQUMzQUd3QUFld0VBTGJrYkFBQmQKQVFBdGhoc0FBSGNCQUMxK0d3QUFRd0VBTFZB
YkFBQnhBUUF0U0JzQUFFUUFBQjFCR3dBQWFBRUFMVGtiQUFCRUFBQWRNaHNBQUpnQgpBQzBBR3dB
QWxnRUFQYTBhQUFCRUFBQnRieG9BQUQ4QUFDMWJHZ0FBQWdBQUZTUWFBQUFCQUFBZEZSb0FBQUlB
QUcwUEdnQUFBd0FBCkhRY2FBQUFFQUFCdEFSb0FBQVVBQUIzNkdRQUFTZ0VBTGZVWkFBQUNBQUFW
N1JrQUFBSUFBQlhqR1FBQUJRQUFIZGtaQUFBRUFBQnQKMFJrQUFBTUFBQjNIR1FBQUFnQUFiY0Fa
QUFBQUFBQnR1aGtBQUFFQUFCMnpHUUFBU2dFQUxhc1pBQUFDQUFBVm54a0FBQUFBQUIxTwpHUUFB
UXdBQUxSSVpBQUFDQUFBVnNoZ0FBRUVBQUcyc0dBQUFRZ0FBSGFVWUFBQktBUUF0b0JnQUFBSUFB
QldZR0FBQUFnQUFGWTRZCkFBQkNBQUFkaEJnQUFFRUFBRzF6R0FBQVhnRUFMVUFZQUFCN0FRQXRP
UmdBQUYwQkFDMEdHQUFBZHdFQUxmNFhBQUJEQVFBdG94Y0EKQUVBQUFDMGlGd0FBUHdBQUxSRVhB
QUFDQUFBVkNSY0FBQUlBQUJYZEZnQUFQUUFBYmRjV0FBQStBQUFkMEJZQUFFb0JBQzNJRmdBQQpB
Z0FBRmI0V0FBQStBQUFkdEJZQUFEMEFBRzNzRlFBQWFnRUFMZVFWQUFBQ0FBQVZyUlVBQUFJQUFC
V0pGUUFBamdFQUxWa1ZBQUNQCkFRQXRLUlVBQUkwQkFDM2hGQUFBaUFFQUxZd1VBQUFDQUFBVmNC
UUFBSWdCQUMxQUZBQUFqZ0VBTFJBVUFBQ05BUUF0eUJNQUFJOEIKQUMxK0V3QUFpQUVBTFVZVEFB
Q1BBUUF0TUJJQUFLSUJBQzBGRWdBQW13RUFMY2dSQUFCZUFRQXRtaEVBQUIwQkFDMXZFUUFBYXdF
QQpMV0lSQUFCekFRQXRVUkVBQUFNQUFCVkpFUUFBamdFQUxUOFJBQUFEQUFBVkVSRUFBSTBCQUMz
akVBQUFlUUVBTGRzUUFBQnBBUUF0Cnd4QUFBSGtCQUMyNEVBQUFlQUVBTFU4UUFBQmtBUUF0S1JB
QUFHUUJBQzBVRUFBQW9nRUFMZFFQQUFBZEFRQXRxQThBQUpzQkFDMTcKRHdBQVp3RUFMWE1QQUFC
ZkFRQXRTdzhBQUlzQkFDMGNEd0FBaXdFQUxmQU9BQUIyQVFBdDVnNEFBR0lCQUMySkRnQUFqd0VB
TFVJTwpBQUNOQVFBdEd3NEFBR3dCQUMwSERnQUFUUUVBTGY4TkFBQkRBUUF0N2cwQUFHSUJBQzJY
RFFBQWp3RUFMVkFOQUFDTkFRQXRLUTBBCkFHd0JBQzMxREFBQUFnQUFGZVVNQUFCZkFRQXR2UXdB
QUlzQkFDMk9EQUFBaXdFQUxXSU1BQUIyQVFBdFdBd0FBR0lCQUMwQkRBQUEKandFQUxib0xBQUNO
QVFBdGt3c0FBR3dCQUMxL0N3QUFUUUVBTFhjTEFBQkRBUUF0WVFzQUFBSUFBQlZSQ3dBQUFnQUFG
VG9MQUFCVwpBUUF0RHdzQUFIQUJBQzM5Q2dBQWlnRUFMYzBLQUFDSUFRQXRuUW9BQUk0QkFDMXRD
Z0FBaUFFQUxUMEtBQUNPQVFBdERRb0FBSTRCCkFDM2xDUUFBYUFFQUxhSUpBQUE4QUFBdGVBa0FB
RHNBQUIxeENRQUFOZ0FBSFdvSkFBQTBBQUFkWXdrQUFHc0JBQzFGQ1FBQU53QUEKYlQ4SkFBQTdB
QUFkT0FrQUFIVUJBQzBwQ1FBQU9nQUFIU0VKQUFBNEFBQnRHd2tBQURrQUFCMFVDUUFBVGdFQUxR
d0pBQUNtQVFBOQpBd2tBQURrQUFCMzVDQUFBT0FBQWJlOElBQUEzQUFBZDZBZ0FBRFVBQUczaUNB
QUFOZ0FBSGRzSUFBQktBUUF0MWdnQUFBSUFBQlhPCkNBQUFBZ0FBRmNJSUFBQTFBQUFkdXdnQUFE
TUFBRzIxQ0FBQU5BQUFIYTRJQUFCS0FRQXRxUWdBQUFJQUFCV2hDQUFBQWdBQUZaVUkKQUFBekFB
QWRBZ2dBQUJvQUFHMzhCd0FBR3dBQUhmVUhBQUF4QUFBZDdnY0FBRVFCQUMzaEJ3QUFSQUVBTGRR
SEFBQXhBQUFkelFjQQpBQjRBQUMzQ0J3QUFkQUVBTGJjSEFBQkNBUUF0clFjQUFESUFBQjJqQndB
QXBRRUFQWmtIQUFDa0FRQTlqUWNBQURFQUFCMkRCd0FBCkdBQUFiWDBIQUFBWkFBQWRkZ2NBQUM4
QUFCMXZCd0FBUkFFQUxXSUhBQUJFQVFBdFZRY0FBQzhBQUIxT0J3QUFIZ0FBTFVNSEFBQjAKQVFB
dE9BY0FBRUlCQUMwdUJ3QUFNQUFBSFNRSEFBQ2xBUUE5R2djQUFLUUJBRDBPQndBQUx3QUFIUUVI
QUFBV0FBQnQrd1lBQUJjQQpBQjMwQmdBQUxRQUFIZTBHQUFCRUFRQXQ0QVlBQUVRQkFDM1RCZ0FB
TFFBQUhjd0dBQUFlQUFBdHdRWUFBSFFCQUMyMkJnQUFRZ0VBCkxhd0dBQUF1QUFBZG9nWUFBS1VC
QUQyWUJnQUFwQUVBUFl3R0FBQXRBQUFkZndZQUFCUUFBRzE1QmdBQUZRQUFIWElHQUFBckFBQWQK
YXdZQUFFUUJBQzFlQmdBQVJBRUFMVkVHQUFBckFBQWRTZ1lBQUI0QUFDMC9CZ0FBZEFFQUxUUUdB
QUJDQVFBdEtnWUFBQ3dBQUIwZwpCZ0FBcFFFQVBSWUdBQUNrQVFBOUNnWUFBQ3NBQUIzOUJRQUFF
Z0FBYmZjRkFBQVRBQUFkOEFVQUFDa0FBQjNwQlFBQVJBRUFMZHdGCkFBQkVBUUF0endVQUFDa0FB
QjNJQlFBQUhnQUFMYjBGQUFCMEFRQXRzZ1VBQUVJQkFDMm9CUUFBS2dBQUhaNEZBQUNsQVFBOWxB
VUEKQUtRQkFEMklCUUFBS1FBQUhYc0ZBQUFRQUFCdGRRVUFBQkVBQUIxdUJRQUFKd0FBSFdjRkFB
QkVBUUF0V2dVQUFFUUJBQzFOQlFBQQpKd0FBSFVZRkFBQWVBQUF0T3dVQUFIUUJBQzB3QlFBQVFn
RUFMU1lGQUFBb0FBQWRIQVVBQUtVQkFEMFNCUUFBcEFFQVBRWUZBQUFuCkFBQWQrUVFBQUE0QUFH
M3pCQUFBRHdBQUhld0VBQUFsQUFBZDVRUUFBRVFCQUMzWUJBQUFSQUVBTGNzRUFBQWxBQUFkeEFR
QUFCNEEKQUMyNUJBQUFkQUVBTGE0RUFBQkNBUUF0cEFRQUFDWUFBQjJhQkFBQXBRRUFQWkFFQUFD
a0FRQTloQVFBQUNVQUFCMTNCQUFBREFBQQpiWEVFQUFBTkFBQWRhZ1FBQUNNQUFCMWpCQUFBUkFF
QUxWWUVBQUJFQVFBdFNRUUFBQ01BQUIxQ0JBQUFIZ0FBTFRjRUFBQjBBUUF0CkxBUUFBRUlCQUMw
aUJBQUFKQUFBSFJnRUFBQ2xBUUE5RGdRQUFLUUJBRDBDQkFBQUl3QUFIZlVEQUFBS0FBQnQ3d01B
QUFzQUFCM28KQXdBQUlRQUFIZUVEQUFCRUFRQXQxQU1BQUVRQkFDM0hBd0FBSVFBQUhjQURBQUFl
QUFBdHRRTUFBSFFCQUMycUF3QUFRZ0VBTGFBRApBQUFpQUFBZGxnTUFBS1VCQUQyTUF3QUFwQUVB
UFlBREFBQWhBQUFkY3dNQUFBZ0FBRzF0QXdBQUNRQUFIV1lEQUFBZkFBQWRYd01BCkFFUUJBQzFT
QXdBQVJBRUFMVVVEQUFBZkFBQWRQZ01BQUI0QUFDMHpBd0FBZEFFQUxTZ0RBQUJDQVFBdEhnTUFB
Q0FBQUIwVUF3QUEKcFFFQVBRb0RBQUNrQVFBOS9nSUFBQjhBQUIzeEFnQUFCZ0FBYmVzQ0FBQUhB
QUFkNUFJQUFCd0FBQjNkQWdBQVJBRUFMZEFDQUFCRQpBUUF0d3dJQUFCd0FBQjI4QWdBQUhnQUFM
YkVDQUFCMEFRQXRwZ0lBQUVJQkFDMmNBZ0FBSFFBQUhaSUNBQUNsQVFBOWlBSUFBS1FCCkFEMThB
Z0FBSEFBQUhYQUNBQUFiQUFBZFlnSUFBQm9BQUcxWEFnQUFHUUFBSFVrQ0FBQVlBQUJ0UGdJQUFC
Y0FBQjB3QWdBQUZnQUEKYlNVQ0FBQVZBQUFkRndJQUFCUUFBRzBNQWdBQUV3QUFIZjRCQUFBU0FB
QnQ4d0VBQUJFQUFCM2xBUUFBRUFBQWJkb0JBQUFQQUFBZAp6QUVBQUE0QUFHM0JBUUFBRFFBQUhi
TUJBQUFNQUFCdHFBRUFBQXNBQUIyYUFRQUFDZ0FBYlk4QkFBQUpBQUFkZ1FFQUFBZ0FBRzEyCkFR
QUFCd0FBSFdnQkFBQUdBQUJ0THdFQUFBRUFBQjBoQVFBQUFnQUFiUnNCQUFBREFBQWRFd0VBQUFR
QUFHME5BUUFBQlFBQUhRWUIKQUFCS0FRQXRBUUVBQUFJQUFCWDVBQUFBQWdBQUZlOEFBQUFGQUFB
ZDVRQUFBQVFBQUczZEFBQUFBd0FBSGRNQUFBQUNBQUJ0ekFBQQpBQUFBQUczR0FBQUFBUUFBSGI4
QUFBQktBUUF0dHdBQUFBSUFBQldyQUFBQUFBQUFIWEFBQUFDV0FRQTlYd0FBQURnQkFCMGdBQUFB
CmxnRUFQUThBQUFBNEFRQWRpQVVBQUFJQUFCVnZCUUFBblFFQUxXRUZBQUJFQVFBdFRBVUFBS01C
QUQwdEJRQUFSQUVBTFJjRkFBQ2oKQVFBOS93UUFBSjBCQUMzeEJBQUFSQUVBTGR3RUFBQ2pBUUE5
dlFRQUFFUUJBQzJuQkFBQW93RUFQWllFQUFDZEFRQXRid1FBQUowQgpBQzFoQkFBQVJBRUFMVXdF
QUFDakFRQTlMUVFBQUVRQkFDMFhCQUFBb3dFQVBmOERBQUNkQVFBdDhRTUFBRVFCQUMzY0F3QUFv
d0VBClBiMERBQUJFQVFBdHB3TUFBS01CQUQyWUF3QUFBZ0FBRlg4REFBQ2RBUUF0Y1FNQUFFUUJB
QzFjQXdBQW93RUFQVDBEQUFCRUFRQXQKSndNQUFLTUJBRDBQQXdBQW5RRUFMUUVEQUFCRUFRQXQ3
QUlBQUtNQkFEM05BZ0FBUkFFQUxiY0NBQUNqQVFBOW53SUFBSjBCQUMyUgpBZ0FBUkFFQUxYd0NB
QUNqQVFBOVhRSUFBRVFCQUMxSEFnQUFvd0VBUFM4Q0FBQ2RBUUF0SVFJQUFFUUJBQzBNQWdBQW93
RUFQZTBCCkFBQkVBUUF0MXdFQUFLTUJBRDIzQVFBQWx3RUFQWjhCQUFDZEFRQXRrUUVBQUVRQkFD
MThBUUFBb3dFQVBWMEJBQUJFQVFBdFJ3RUEKQUtNQkFEMGZBUUFBblFFQUxSRUJBQUJFQVFBdC9B
QUFBS01CQUQzZEFBQUFSQUVBTGNjQUFBQ2pBUUE5bkFBQUFJY0JBQzFmQUFBQQpuUUVBTFZFQUFB
QkVBUUF0UEFBQUFLTUJBRDBkQUFBQVJBRUFMUWNBQUFDakFRQTlXQU1BQUJrQkFBNVFBd0FBRndF
QURrZ0RBQUNmCkFRQU9RQU1BQUo0QkFBNDRBd0FBbVFFQURqQURBQUNhQVFBT0tBTUFBS0VBQUE0
Z0F3QUFvd0FBRGdBREFBREJBQUFPK0FJQUFLY0EKQUE3d0FnQUFJd0VBRHVnQ0FBQWZBUUFPNEFJ
QUFLRUJBQTdZQWdBQW9BRUFEdEFDQUFBYkFRQU95QUlBQUJVQkFBN0FBZ0FBcVFBQQpEcmdDQUFE
REFBQU9zQUlBQU1VQUFBNlFBZ0FBb1FFQURvZ0NBQUNnQVFBT2dBSUFBQk1CQUE1NEFnQUFGUUVB
RG5BQ0FBRGhBQUFPCmFBSUFBT2NBQUE1Z0FnQUE2UUFBRGtBQ0FBQ2hBUUFPT0FJQUFLQUJBQTR3
QWdBQUV3RUFEaWdDQUFBekFRQU9JQUlBQUFVQkFBNFkKQWdBQUN3RUFEaEFDQUFBTkFRQU8rQUVB
QUNzQkFBN3dBUUFBb1FFQUR1Z0JBQUNnQVFBTzRBRUFBQ2tCQUE3WUFRQUFMUUVBRHRBQgpBQUR0
QUFBT3lBRUFBUE1BQUE3QUFRQUE5UUFBRHFBQkFBQ2hBUUFPbUFFQUFLQUJBQTZRQVFBQUV3RUFE
b2dCQUFBVkFRQU9nQUVBCkFMY0FBQTU0QVFBQXZRQUFEbkFCQUFDL0FBQU9VQUVBQUtFQkFBNUlB
UUFBb0FFQURrQUJBQUFUQVFBT09BRUFBQlVCQUE0d0FRQUEKeVFBQURpZ0JBQURQQUFBT0lBRUFB
TkVBQUE0QUFRQUFvUUVBRHZnQUFBQ2dBUUFPOEFBQUFDOEJBQTdvQUFBQU1RRUFEdUFBQUFENQpB
QUFPMkFBQUFQOEFBQTdRQUFBQUFRRUFEckFBQUFDaEFRQU9xQUFBQUtBQkFBNmdBQUFBRXdFQURw
Z0FBQUFWQVFBT2tBQUFBTlVBCkFBNklBQUFBMndBQURvQUFBQURkQUFBT1lBQUFBS1VBQUE1WUFB
QUFwd0FBRGxBQUFBQWhBUUFPU0FBQUFCOEJBQTVBQUFBQW9RRUEKRGpnQUFBQ2dBUUFPTUFBQUFC
c0JBQTRvQUFBQUZRRUFEaUFBQUFDcEFBQU9HQUFBQUxFQUFBNFFBQUFBc3dBQURrZ0FBQUExQVFB
TwpRQUFBQUtFQkFBNDRBQUFBb0FFQURqQUFBQUFwQVFBT0tBQUFBQzBCQUE0Z0FBQUE3UUFBRGhn
QUFBQVBBUUFPRUFBQUFCRUJBQTYzCmV3QUFCQUFBQnE5N0FBQUVBQUFHb0hzQUFBUUFBQWFZZXdB
QUJBQUFCb2w3QUFBRUFBQUdnWHNBQUFRQUFBWnlld0FBQkFBQUJtcDcKQUFBRUFBQUdTM3NBQUFR
QUFBWkRld0FBQkFBQUJoQjdBQUFFQUFBR0NIc0FBQVFBQUFibGVnQUFCQUFBQnQxNkFBQUVBQUFH
dVhvQQpBQVFBQUFheGVnQUFCQUFBQnFKNkFBQUVBQUFHbW5vQUFBUUFBQWFMZWdBQUJBQUFCb042
QUFBRUFBQUdkSG9BQUFRQUFBWnNlZ0FBCkJBQUFCbE42QUFBRUFBQUdTM29BQUFRQUFBWW9lZ0FB
QkFBQUJpQjZBQUFFQUFBRy8za0FBQVFBQUFiM2VRQUFCQUFBQnRSNUFBQUUKQUFBR3pIa0FBQVFB
QUFhb2VRQUFCQUFBQnFCNUFBQUVBQUFHY25rQUFBUUFBQVpxZVFBQUJBQUFCbHQ1QUFBRUFBQUdV
M2tBQUFRQQpBQVpFZVFBQUJBQUFCang1QUFBRUFBQUdIWGtBQUFRQUFBWVZlUUFBQkFBQUJ1SjRB
QUFFQUFBRzJuZ0FBQVFBQUFhM2VBQUFCQUFBCkJxOTRBQUFFQUFBR2pIZ0FBQVFBQUFhRWVBQUFC
QUFBQm5WNEFBQUVBQUFHYlhnQUFBUUFBQVplZUFBQUJBQUFCbFo0QUFBRUFBQUcKUFhnQUFBUUFB
QVkxZUFBQUJBQUFCaEo0QUFBRUFBQUdDbmdBQUFRQUFBYm1kd0FBQkFBQUJ0NTNBQUFFQUFBR3oz
Y0FBQVFBQUFiSApkd0FBQkFBQUJyaDNBQUFFQUFBR3NIY0FBQVFBQUFhUmR3QUFCQUFBQm9sM0FB
QUVBQUFHVm5jQUFBUUFBQVpPZHdBQUJBQUFCaXQzCkFBQUVBQUFHSTNjQUFBUUFBQVlBZHdBQUJB
QUFCdmgyQUFBRUFBQUc2WFlBQUFRQUFBYmhkZ0FBQkFBQUJ0SjJBQUFFQUFBR3luWUEKQUFRQUFB
YXhkZ0FBQkFBQUJxbDJBQUFFQUFBR2huWUFBQVFBQUFaK2RnQUFCQUFBQmxwMkFBQUVBQUFHVW5Z
QUFBUUFBQVpEZGdBQQpCQUFBQmp0MkFBQUVBQUFHTEhZQUFBUUFBQVlrZGdBQUJBQUFCZ1YyQUFB
RUFBQUcvWFVBQUFRQUFBYktkUUFBQkFBQUJzSjFBQUFFCkFBQUduM1VBQUFRQUFBYVhkUUFBQkFB
QUJuUjFBQUFFQUFBR2JIVUFBQVFBQUFaZGRRQUFCQUFBQmxWMUFBQUVBQUFHUm5VQUFBUUEKQUFZ
K2RRQUFCQUFBQmlWMUFBQUVBQUFHSFhVQUFBUUFBQWI2ZEFBQUJBQUFCdkowQUFBRUFBQUd6blFB
QUFRQUFBYkdkQUFBQkFBQQpCcmQwQUFBRUFBQUdyM1FBQUFRQUFBYWdkQUFBQkFBQUJwaDBBQUFF
QUFBR2VYUUFBQVFBQUFaeGRBQUFCQUFBQmo1MEFBQUVBQUFHCk5uUUFBQVFBQUFZVGRBQUFCQUFB
Qmd0MEFBQUVBQUFHNkhNQUFBUUFBQWJnY3dBQUJBQUFCdEZ6QUFBRUFBQUd5WE1BQUFRQUFBYTYK
Y3dBQUJBQUFCckp6QUFBRUFBQUdtWE1BQUFRQUFBYVJjd0FBQkFBQUJtNXpBQUFFQUFBR1puTUFB
QVFBQUFaQmN3QUFCQUFBQmpsegpBQUFFQUFBR0tuTUFBQVFBQUFZaWN3QUFCQUFBQmhOekFBQUVB
QUFHQzNNQUFBUUFBQWI4Y2dBQUJBQUFCdlJ5QUFBRUFBQUcxWElBCkFBUUFBQWJOY2dBQUJBQUFC
cHB5QUFBRUFBQUdrbklBQUFRQUFBWnZjZ0FBQkFBQUJtZHlBQUFFQUFBR1EzSUFBQVFBQUFZN2Nn
QUEKQkFBQUJpeHlBQUFFQUFBR0pISUFBQVFBQUFZVmNnQUFCQUFBQmcxeUFBQUVBQUFHL25FQUFB
UUFBQWIyY1FBQUJBQUFCdDF4QUFBRQpBQUFHMVhFQUFBUUFBQWF5Y1FBQUJBQUFCcXB4QUFBRUFB
QUdobkVBQUFRQUFBWitjUUFBQkFBQUJtOXhBQUFFQUFBR1ozRUFBQVFBCkFBWlljUUFBQkFBQUJs
QnhBQUFFQUFBR01YRUFBQVFBQUFZcGNRQUFCQUFBQnZad0FBQUVBQUFHN25BQUFBUUFBQWJMY0FB
QUJBQUEKQnNOd0FBQUVBQUFHb0hBQUFBUUFBQWFZY0FBQUJBQUFCb2x3QUFBRUFBQUdnWEFBQUFR
QUFBWnljQUFBQkFBQUJtcHdBQUFFQUFBRwpVWEFBQUFRQUFBWkpjQUFBQkFBQUJpWndBQUFFQUFB
R0huQUFBQVFBQUFiNmJ3QUFCQUFBQnZKdkFBQUVBQUFHNDI4QUFBUUFBQWJiCmJ3QUFCQUFBQnN4
dkFBQUVBQUFHeEc4QUFBUUFBQWFsYndBQUJBQUFCcDF2QUFBRUFBQUdhbThBQUFRQUFBWmlid0FB
QkFBQUJqOXYKQUFBRUFBQUdOMjhBQUFRQUFBWVVid0FBQkFBQUJneHZBQUFFQUFBRy9XNEFBQVFB
QUFiMWJnQUFCQUFBQnVadUFBQUVBQUFHM200QQpBQVFBQUFiRmJnQUFCQUFBQnIxdUFBQUVBQUFH
bW00QUFBUUFBQWFTYmdBQUJBQUFCbWh1QUFBRUFBQUdZRzRBQUFRQUFBWlJiZ0FBCkJBQUFCa2x1
QUFBRUFBQUdPbTRBQUFRQUFBWXliZ0FBQkFBQUJpTnVBQUFFQUFBR0cyNEFBQVFBQUFiOGJRQUFC
QUFBQnZSdEFBQUUKQUFBR3dXMEFBQVFBQUFhNWJRQUFCQUFBQnBadEFBQUVBQUFHam0wQUFBUUFB
QVpxYlFBQUJBQUFCbUp0QUFBRUFBQUdVMjBBQUFRQQpBQVpMYlFBQUJBQUFCanh0QUFBRUFBQUdO
RzBBQUFRQUFBWWxiUUFBQkFBQUJoMXRBQUFFQUFBR0JHMEFBQVFBQUFiOGJBQUFCQUFBCkJ0bHNB
QUFFQUFBRzBXd0FBQVFBQUFhdGJBQUFCQUFBQnFWc0FBQUVBQUFHbG13QUFBUUFBQWFPYkFBQUJB
QUFCbjlzQUFBRUFBQUcKZDJ3QUFBUUFBQVpZYkFBQUJBQUFCbEJzQUFBRUFBQUdIV3dBQUFRQUFB
WVZiQUFBQkFBQUJ2SnJBQUFFQUFBRzZtc0FBQVFBQUFiTgphd0FBQkFBQUJzVnJBQUFFQUFBR3Rt
c0FBQVFBQUFhdWF3QUFCQUFBQnA5ckFBQUVBQUFHbDJzQUFBUUFBQVorYXdBQUJBQUFCblpyCkFB
QUVBQUFHVTJzQUFBUUFBQVpMYXdBQUJBQUFCalJyQUFBQkFBQUdMR3NBQUFFQUFBWWRhd0FBQVFB
QUJoVnJBQUFCQUFBR0JXc0EKQUFFQUFBYjlhZ0FBQVFBQUJ0bHFBQUFCQUFBRzBXb0FBQUVBQUFh
NmFnQUFBUUFBQnJKcUFBQUJBQUFHbzJvQUFBRUFBQWFiYWdBQQpBUUFBQm90cUFBQUJBQUFHZzJv
QUFBRUFBQVpmYWdBQUFRQUFCbGRxQUFBQkFBQUdRR29BQUFFQUFBWTRhZ0FBQVFBQUJpbHFBQUFC
CkFBQUdJV29BQUFFQUFBWVJhZ0FBQVFBQUJnbHFBQUFCQUFBRzVXa0FBQUVBQUFiZGFRQUFBUUFB
QnN0cEFBQUJBQUFHdzJrQUFBRUEKQUFhMGFRQUFBUUFBQnF4cEFBQUJBQUFHbkdrQUFBRUFBQWFV
YVFBQUFRQUFCbkJwQUFBQkFBQUdhR2tBQUFFQUFBWTFhUUFBQVFBQQpCaTFwQUFBQkFBQUdIbWtB
QUFFQUFBWVdhUUFBQVFBQUJnZHBBQUFCQUFBRy8yZ0FBQUVBQUFidmFBQUFBUUFBQnVkb0FBQUJB
QUFHCncyZ0FBQUVBQUFhN2FBQUFBUUFBQnFSb0FBQUJBQUFHbkdnQUFBRUFBQWFOYUFBQUFRQUFC
b1ZvQUFBQkFBQUdkV2dBQUFFQUFBWnQKYUFBQUFRQUFCa2xvQUFBQkFBQUdRV2dBQUFFQUFBWXZh
QUFBQVFBQUJpZG9BQUFCQUFBR0dHZ0FBQUVBQUFZUWFBQUFBUUFBQmdCbwpBQUFCQUFBRytHY0FB
QUVBQUFiVVp3QUFBUUFBQnN4bkFBQUJBQUFHZ1dVQUFBRUFBQVo1WlFBQUFRQUFCbXBsQUFBQkFB
QUdZbVVBCkFBRUFBQVpTWlFBQUFRQUFCa3BsQUFBQkFBQUdKbVVBQUFFQUFBWWVaUUFBQVFBQUJo
cGlBQUFCQUFBR0VtSUFBQUVBQUFiSFlRQUEKQVFBQUJyOWhBQUFCQUFBR3NtRUFBQUVBQUFhcVlR
QUFBUUFBQnBGaEFBQUJBQUFHaVdFQUFBRUFBQVpPWVFBQUFRQUFCa1poQUFBQgpBQUFHT1dFQUFB
RUFBQVl4WVFBQUFRQUFCdlZnQUFBQkFBQUc3V0FBQUFFQUFBYmdZQUFBQVFBQUJ0aGdBQUFCQUFB
R3YyQUFBQUVBCkFBYTNZQUFBQVFBQUJrMWdBQUFCQUFBR1JXQUFBQUVBQUFZeFhnQUFBUUFBQmls
ZUFBQUJBQUFHclYwQUFBRUFBQWFsWFFBQUFRQUEKQmxoY0FBQUJBQUFHVUZ3QUFBRUFBQVpvV3dB
QUFRQUFCbUJiQUFBQkFBQUdDVmtBQUFFQUFBWUJXUUFBQVFBQUJzbFlBQUFCQUFBRwp3VmdBQUFF
QUFBWXlWd0FBQkFBQUJpcFhBQUFFQUFBR1kxWUFBQVFBQUFaYlZnQUFCQUFBQmpOV0FBQUVBQUFH
SzFZQUFBUUFBQWFTClZRQUFCQUFBQm9wVkFBQUVBQUFHRUZVQUFBUUFBQVlJVlFBQUJBQUFCb0ZU
QUFBRUFBQUdlVk1BQUFRQUFBWUJVd0FBQkFBQUJ2bFMKQUFBRUFBQUc2bElBQUFRQUFBYmlVZ0FB
QkFBQUJzTlNBQUFFQUFBR3UxSUFBQVFBQUFhWFVnQUFCQUFBQm85U0FBQUVBQUFHYUZJQQpBQVFB
QUFaZ1VnQUFCQUFBQmxGU0FBQUVBQUFHU1ZJQUFBUUFBQVlxVWdBQUJBQUFCaUpTQUFBRUFBQUc3
MUVBQUFRQUFBYm5VUUFBCkJBQUFCc1JSQUFBRUFBQUd2RkVBQUFRQUFBYWpVQUFBQVFBQUJwdFFB
QUFCQUFBR2pGQUFBQUVBQUFhRVVBQUFBUUFBQm5SUUFBQUIKQUFBR2JGQUFBQUVBQUFaT1VBQUFB
UUFBQmtaUUFBQUJBQUFHSWxBQUFBRUFBQVlhVUFBQUFRQUFCcTVQQUFBQkFBQUdwazhBQUFFQQpB
QVpBVHdBQUFRQUFCamhQQUFBQkFBQUcwazRBQUFFQUFBYktUZ0FBQVFBQUJtUk9BQUFCQUFBR1hF
NEFBQUVBQUFiSFRRQUFBUUFBCkJyOU5BQUFCQUFBR2dFMEFBQUVBQUFaNFRRQUFBUUFBQmtWTkFB
QUJBQUFHUFUwQUFBRUFBQVl1VFFBQUFRQUFCaVpOQUFBQkFBQUcKRmswQUFBRUFBQVlPVFFBQUFR
QUFCdkJNQUFBQkFBQUc2RXdBQUFFQUFBYkVUQUFBQVFBQUJyeE1BQUFCQUFBR2xrd0FBQUVBQUFh
TwpUQUFBQVFBQUJsNU1BQUFCQUFBR1Zrd0FBQUVBQUFZRFRBQUFBUUFBQnZ0TEFBQUJBQUFHeGtz
QUFBRUFBQWErU3dBQUFRQUFCakZMCkFBQUJBQUFHS1VzQUFBRUFBQWIyU2dBQUFRQUFCdTVLQUFB
QkFBQUczMG9BQUFFQUFBYlhTZ0FBQVFBQUJzZEtBQUFCQUFBR3Ywb0EKQUFFQUFBYWhTZ0FBQVFB
QUJwbEtBQUFCQUFBR2RVb0FBQUVBQUFadFNnQUFBUUFBQmlWS0FBQUJBQUFHSFVvQUFBRUFBQWJx
U1FBQQpBUUFBQnVKSkFBQUJBQUFHMDBrQUFBRUFBQWJMU1FBQUFRQUFCcnRKQUFBQkFBQUdzMGtB
QUFFQUFBYVZTUUFBQVFBQUJvMUpBQUFCCkFBQUdhVWtBQUFFQUFBWmhTUUFBQVFBQUJ0ZElBQUFC
QUFBR3owZ0FBQUVBQUFhYlNBQUFBUUFBQnBOSUFBQUJBQUFHaEVnQUFBRUEKQUFaOFNBQUFBUUFB
Qm0xSUFBQUJBQUFHWlVnQUFBRUFBQVpWU0FBQUFRQUFCazFJQUFBQkFBQUdMMGdBQUFFQUFBWW5T
QUFBQVFBQQpCZ05JQUFBQkFBQUcrMGNBQUFFQUFBYlZSd0FBQVFBQUJzMUhBQUFCQUFBR25VY0FB
QUVBQUFhVlJ3QUFBUUFBQmpSSEFBQUJBQUFHCkxFY0FBQUVBQUFiSlJnQUFBUUFBQnNGR0FBQUJB
QUFHakVZQUFBRUFBQWFFUmdBQUFRQUFCdkpGQUFBQkFBQUc2a1VBQUFFQUFBYTMKUlFBQUFRQUFC
cTlGQUFBQkFBQUdvRVVBQUFFQUFBYVlSUUFBQVFBQUJvaEZBQUFCQUFBR2dFVUFBQUVBQUFaaVJR
QUFBUUFBQmxwRgpBQUFCQUFBR05rVUFBQUVBQUFZdVJRQUFBUUFBQnVaRUFBQUJBQUFHM2tRQUFB
RUFBQWFyUkFBQUFRQUFCcU5FQUFBQkFBQUdsRVFBCkFBRUFBQWFNUkFBQUFRQUFCbnhFQUFBQkFB
QUdkRVFBQUFFQUFBWldSQUFBQVFBQUJrNUVBQUFCQUFBR0trUUFBQUVBQUFZaVJBQUEKQVFBQUJ2
bERBQUFCQUFBRzhVTUFBQUVBQUFaMFF3QUFBUUFBQm14REFBQUJBQUFHWEVNQUFBRUFBQVpVUXdB
QUFRQUFCak5EQUFBQgpBQUFHSzBNQUFBRUFBQWJJUWdBQUFRQUFCc0JDQUFBQkFBQUdsMElBQUFF
QUFBYVBRZ0FBQVFBQUJtWkNBQUFCQUFBR1hrSUFBQUVBCkFBWXZRZ0FBQVFBQUJpZENBQUFCQUFB
RytFRUFBQUVBQUFid1FRQUFBUUFBQnNGQkFBQUJBQUFHdVVFQUFBRUFBQWFLUVFBQUFRQUEKQm9K
QkFBQUJBQUFHVTBFQUFBRUFBQVpMUVFBQUFRQUFCaHhCQUFBQkFBQUdGRUVBQUFFQUFBYmxRQUFB
QVFBQUJ0MUFBQUFCQUFBRwpya0FBQUFFQUFBYW1RQUFBQVFBQUJuZEFBQUFCQUFBR2IwQUFBQUVB
QUFaQVFBQUFBUUFBQmpoQUFBQUJBQUFHSDBBQUFBRUFBQVlYClFBQUFBUUFBQnVjL0FBQUJBQUFH
M3o4QUFBRUFBQWFzUHdBQUFRQUFCcVEvQUFBQkFBQUdsVDhBQUFFQUFBYU5Qd0FBQVFBQUJuMC8K
QUFBQkFBQUdkVDhBQUFFQUFBWlhQd0FBQVFBQUJrOC9BQUFCQUFBR0t6OEFBQUVBQUFZalB3QUFB
UUFBQmhFL0FBQUdBQUFHMGo0QQpBQU1BQUFhSVBnQUFCZ0FBQm1JK0FBQUdBQUFHT1Q0QUFBTUFB
QWJ2UFFBQUJnQUFCc2s5QUFBR0FBQUdvRDBBQUFNQUFBWldQUUFBCkJnQUFCakE5QUFBR0FBQUdC
ejBBQUFNQUFBYTlQQUFBQmdBQUJwYzhBQUFHQUFBR2Jqd0FBQU1BQUFZa1BBQUFCZ0FBQnY0N0FB
QUcKQUFBRzFUc0FBQU1BQUFhTE93QUFCZ0FBQm1VN0FBQUdBQUFHUERzQUFBTUFBQWJ5T2dBQUJn
QUFCc3c2QUFBR0FBQUdvem9BQUFNQQpBQVpaT2dBQUJnQUFCak02QUFBR0FBQUdDam9BQUFNQUFB
YkFPUUFBQmdBQUJwbzVBQUFHQUFBR2NUa0FBQU1BQUFZbk9RQUFCZ0FBCkJnRTVBQUFHQUFBRzJE
Z0FBQU1BQUFhQ09BQUFCZ0FBQmx3NEFBQUdBQUFHQmpnQUFBWUFBQWFaTndBQUJnQUFCaUEzQUFB
QkFBQUcKR0RjQUFBRUFBQWI2TmdBQUFRQUFCdkkyQUFBQkFBQUd1allBQUFZQUFBYWlOZ0FBQVFB
QUJwbzJBQUFCQUFBR2FEWUFBQUVBQUFaZwpOZ0FBQVFBQUJsRTJBQUFCQUFBR1NUWUFBQUVBQUFZ
Nk5nQUFBUUFBQmpJMkFBQUJBQUFHSWpZQUFBRUFBQVlhTmdBQUFRQUFCdlUxCkFBQUJBQUFHN1RV
QUFBRUFBQWErTlFBQUFRQUFCclkxQUFBQkFBQUdtRFVBQUFZQUFBWjhOUUFBQVFBQUJuUTFBQUFC
QUFBR3VqUUEKQUFFQUFBYXlOQUFBQVFBQUJwODBBQUFCQUFBR2x6UUFBQUVBQUFaNk5BQUFBUUFB
Qm5JMEFBQUJBQUFHUkRRQUFBRUFBQVk4TkFBQQpBUUFBQmlNMEFBQUJBQUFHR3pRQUFBRUFBQVlN
TkFBQUFRQUFCZ1EwQUFBQkFBQUc5RE1BQUFFQUFBYnNNd0FBQVFBQUJzY3pBQUFCCkFBQUd2ek1B
QUFFQUFBYVFNd0FBQVFBQUJvZ3pBQUFCQUFBR2J6TUFBQUVBQUFabk13QUFBUUFBQmxnekFBQUJB
QUFHVURNQUFBRUEKQUFaQU13QUFBUUFBQmpnekFBQUJBQUFHRXpNQUFBRUFBQVlMTXdBQUFRQUFC
dHd5QUFBQkFBQUcxRElBQUFFQUFBYTdNZ0FBQVFBQQpCck15QUFBQkFBQUdwRElBQUFFQUFBYWNN
Z0FBQVFBQUJvd3lBQUFCQUFBR2hESUFBQUVBQUFaZk1nQUFBUUFBQmxjeUFBQUJBQUFHCktESUFB
QUVBQUFZZ01nQUFBUUFBQmdjeUFBQUJBQUFHL3pFQUFBRUFBQWJ3TVFBQUFRQUFCdWd4QUFBQkFB
QUcyREVBQUFFQUFBYlEKTVFBQUFRQUFCcXN4QUFBQkFBQUdvekVBQUFFQUFBWjBNUUFBQVFBQUJt
d3hBQUFCQUFBR1V6RUFBQUVBQUFaTE1RQUFBUUFBQmp3eApBQUFCQUFBR05ERUFBQUVBQUFZa01R
QUFBUUFBQmh3eEFBQUJBQUFHOXpBQUFBRUFBQWJ2TUFBQUFRQUFCc0F3QUFBQkFBQUd1REFBCkFB
RUFBQWFmTUFBQUFRQUFCcGN3QUFBQkFBQUdpREFBQUFFQUFBYUFNQUFBQVFBQUJuQXdBQUFCQUFB
R2FEQUFBQUVBQUFaRE1BQUEKQVFBQUJqc3dBQUFCQUFBR0REQUFBQUVBQUFZRU1BQUFBUUFBQnVv
dkFBQUJBQUFHNGk4QUFBRUFBQWJUTHdBQUFRQUFCc3N2QUFBQgpBQUFHdXk4QUFBRUFBQWF6THdB
QUFRQUFCcVF2QUFBQkFBQUduQzhBQUFFQUFBWi9Md0FBQVFBQUJuY3ZBQUFCQUFBR1R5OEFBQUVB
CkFBWkhMd0FBQVFBQUJpQXZBQUFCQUFBR0dDOEFBQUVBQUFZRkx3QUFBUUFBQnYwdUFBQUJBQUFH
N2k0QUFBRUFBQWJtTGdBQUFRQUEKQnRZdUFBQUJBQUFHemk0QUFBRUFBQWFwTGdBQUFRQUFCcUV1
QUFBQkFBQUdjaTRBQUFFQUFBWnFMZ0FBQVFBQUJpSXVBQUFHQUFBRwpEQzRBQUFZQUFBYjJMUUFB
QmdBQUJ1QXRBQUFHQUFBR3lpMEFBQVlBQUFhMExRQUFCZ0FBQnA0dEFBQUdBQUFHaUMwQUFBWUFB
QVp5CkxRQUFCZ0FBQmxZdEFBQUJBQUFHVGkwQUFBRUFBQVkvS3dBQUJnQUFCaU1yQUFBQkFBQUdH
eXNBQUFFQUFBWXpLZ0FBQVFBQUJpc3EKQUFBQkFBQUdkQ2tBQUFFQUFBWnNLUUFBQVFBQUJsd3BB
QUFCQUFBR1ZDa0FBQUVBQUFZbktRQUFBUUFBQmg4cEFBQUJBQUFHa2lnQQpBQVlBQUFaOEtBQUFC
Z0FBQm1Zb0FBQUhBQUFHU2lnQUFBRUFBQVpDS0FBQUFRQUFCbTRuQUFBQkFBQUdaaWNBQUFFQUFB
WUtKd0FBCkJnQUFCdTRtQUFBQkFBQUc1aVlBQUFFQUFBYlJKZ0FBQVFBQUJza21BQUFCQUFBR25D
WUFBQUVBQUFhVUpnQUFBUUFBQmtjbUFBQUcKQUFBR01TWUFBQWNBQUFZVkpnQUFBUUFBQmcwbUFB
QUJBQUFHNENRQUFBRUFBQWJZSkFBQUFRQUFCc2drQUFBQkFBQUd3Q1FBQUFFQQpBQWFUSkFBQUFR
QUFCb3NrQUFBQkFBQUdYaVFBQUFFQUFBWldKQUFBQVFBQUJxRWpBQUFHQUFBR2l5TUFBQVlBQUFa
MUl3QUFCZ0FBCkJsOGpBQUFHQUFBR1NTTUFBQWNBQUFZekl3QUFCd0FBQmhjakFBQUJBQUFHRHlN
QUFBRUFBQWJISVFBQUFRQUFCcjhoQUFBQkFBQUcKa2lFQUFBRUFBQWFLSVFBQUFRQUFCajBoQUFB
R0FBQUdKeUVBQUFZQUFBWVJJUUFBQndBQUJ2VWdBQUFCQUFBRzdTQUFBQUVBQUFhZgpId0FBQmdB
QUJvTWZBQUFCQUFBR2V4OEFBQUVBQUFhVEhnQUFBUUFBQm9zZUFBQUJBQUFHMUIwQUFBRUFBQWJN
SFFBQUFRQUFCcndkCkFBQUJBQUFHdEIwQUFBRUFBQWFISFFBQUFRQUFCbjhkQUFBQkFBQUdCaDBB
QUFZQUFBYndIQUFBQmdBQUJ0b2NBQUFIQUFBR3Zod0EKQUFFQUFBYTJIQUFBQVFBQUJwVWNBQUFC
QUFBR2pSd0FBQUVBQUFaVkhBQUFBUUFBQmswY0FBQUJBQUFHekJzQUFBWUFBQWF3R3dBQQpBUUFB
QnFnYkFBQUJBQUFHUnhrQUFBRUFBQVkvR1FBQUFRQUFCb2dZQUFBQkFBQUdnQmdBQUFFQUFBYkpG
d0FBQVFBQUJzRVhBQUFCCkFBQUdzUmNBQUFFQUFBYXBGd0FBQVFBQUJud1hBQUFCQUFBR2RCY0FB
QUVBQUFaSEZ3QUFBUUFBQmo4WEFBQUJBQUFHdGhZQUFBWUEKQUFhZ0ZnQUFCZ0FBQm9vV0FBQUdB
QUFHZEJZQUFBY0FBQVplRmdBQUJ3QUFCa0lXQUFBQkFBQUdPaFlBQUFFQUFBWnRFd0FBQVFBQQpC
bVVUQUFBQkFBQUdWUk1BQUFFQUFBWk5Fd0FBQVFBQUJpQVRBQUFCQUFBR0dCTUFBQUVBQUFickVn
QUFBUUFBQnVNU0FBQUJBQUFHCmxoSUFBQVlBQUFhQUVnQUFCZ0FBQm1vU0FBQUdBQUFHVkJJQUFB
WUFBQVkrRWdBQUJnQUFCaWdTQUFBSEFBQUdFaElBQUFjQUFBYjIKRVFBQUFRQUFCdTRSQUFBQkFB
QUdyUkFBQUFFQUFBYWxFQUFBQVFBQUJwVVFBQUFCQUFBR2pSQUFBQUVBQUFaOUVBQUFBUUFBQm5V
UQpBQUFCQUFBR0dCQUFBQVlBQUFiOER3QUFBUUFBQnZRUEFBQUJBQUFHR2c4QUFBRUFBQVlTRHdB
QUFRQUFCZ0lQQUFBQkFBQUcrZzRBCkFBRUFBQWJxRGdBQUFRQUFCdUlPQUFBQkFBQUd3UTRBQUFF
QUFBYTVEZ0FBQVFBQUJwZ09BQUFCQUFBR2tBNEFBQUVBQUFaY0RnQUEKQVFBQUJsUU9BQUFCQUFB
R013NEFBQUVBQUFZckRnQUFBUUFBQnVvTkFBQUJBQUFHNGcwQUFBRUFBQWJCRFFBQUFRQUFCcmtO
QUFBQgpBQUFHbUEwQUFBRUFBQWFRRFFBQUFRQUFCdm9NQUFBR0FBQUczZ3dBQUFFQUFBYldEQUFB
QVFBQUJsQU1BQUFCQUFBR1NBd0FBQUVBCkFBWXBEQUFBQVFBQUJpRU1BQUFCQUFBRzVBc0FBQVlB
QUFiT0N3QUFCd0FBQnJnTEFBQUdBQUFHb2dzQUFBWUFBQWFHQ3dBQUFRQUEKQm40TEFBQUJBQUFH
UWdzQUFBRUFBQVk2Q3dBQUFRQUFCaW9MQUFBQkFBQUdJZ3NBQUFFQUFBWUVDd0FBQmdBQUJ1NEtB
QUFHQUFBRwowUW9BQUFFQUFBYkpDZ0FBQVFBQUJ1a09BQUFFQUFBR3NnSUFBQUVBQUFZbFNRQUFB
UUFBQmgxSkFBQUJBQUFHQWtrQUFBRUFBQWI2ClNBQUFBUUFBQnU5SUFBQUJBQUFHNTBnQUFBRUFB
QWJLU0FBQUFRQUFCc0pJQUFBQkFBQUd0MGdBQUFFQUFBYXZTQUFBQVFBQUJwUkkKQUFBQkFBQUdq
RWdBQUFFQUFBWnhTQUFBQVFBQUJtbElBQUFCQUFBR1RrZ0FBQUVBQUFaR1NBQUFBUUFBQml0SUFB
QUVBQUFHSTBnQQpBQVFBQUFZSVNBQUFCQUFBQmdCSUFBQUVBQUFHNVVjQUFBUUFBQWJkUndBQUJB
QUFCc0pIQUFBRUFBQUd1a2NBQUFRQUFBYWZSd0FBCkJBQUFCcGRIQUFBRUFBQUdmRWNBQUFRQUFB
WjBSd0FBQkFBQUJtbEhBQUFFQUFBR1lVY0FBQVFBQUFaR1J3QUFCQUFBQmo1SEFBQUUKQUFBR0kw
Y0FBQVFBQUFZYlJ3QUFCQUFBQmdCSEFBQUVBQUFHK0VZQUFBUUFBQWJkUmdBQUJBQUFCdFZHQUFB
RUFBQUd1a1lBQUFRQQpBQWF5UmdBQUJBQUFCcGRHQUFBRUFBQUdqMFlBQUFRQUFBWjBSZ0FBQkFB
QUJteEdBQUFFQUFBR1VVWUFBQVFBQUFaSlJnQUFCQUFBCkJqNUdBQUFFQUFBR05rWUFBQVFBQUFZ
YlJnQUFCQUFBQmhOR0FBQUVBQUFHK0VVQUFBUUFBQWJ3UlFBQUJBQUFCdFZGQUFBRUFBQUcKelVV
QUFBUUFBQWF5UlFBQUJBQUFCcXBGQUFBRUFBQUdqMFVBQUFRQUFBYUhSUUFBQkFBQUJteEZBQUFF
QUFBR1pFVUFBQVFBQUFaSgpSUUFBQkFBQUJrRkZBQUFFQUFBR0prVUFBQVFBQUFZZVJRQUFCQUFB
QmdORkFBQUVBQUFHKzBRQUFBUUFBQWJnUkFBQUJBQUFCdGhFCkFBQUVBQUFHdlVRQUFBUUFBQWEx
UkFBQUJBQUFCcXBFQUFBRUFBQUdva1FBQUFRQUFBYUhSQUFBQkFBQUJuOUVBQUFFQUFBR1pFUUEK
QUFRQUFBWmNSQUFBQkFBQUJrRkVBQUFFQUFBR09VUUFBQVFBQUFZZVJBQUFCQUFBQmhaRUFBQUVB
QUFHKzBNQUFBUUFBQWJ6UXdBQQpCQUFBQnRoREFBQUVBQUFHMEVNQUFBUUFBQWExUXdBQUJBQUFC
cTFEQUFBRUFBQUdra01BQUFRQUFBYUtRd0FBQkFBQUJuOURBQUFFCkFBQUdkME1BQUFRQUFBWmNR
d0FBQkFBQUJsUkRBQUFFQUFBR09VTUFBQVFBQUFZeFF3QUFCQUFBQmhaREFBQUVBQUFHRGtNQUFB
UUEKQUFielFnQUFCQUFBQnV0Q0FBQUVBQUFHMEVJQUFBUUFBQWJJUWdBQUJBQUFCcTFDQUFBRUFB
QUdwVUlBQUFRQUFBYUtRZ0FBQkFBQQpCb0pDQUFBRUFBQUdaMElBQUFRQUFBWmZRZ0FBQkFBQUJr
UkNBQUFFQUFBR1BFSUFBQVFBQUFZeFFnQUFCQUFBQmlsQ0FBQUVBQUFHCkRrSUFBQVFBQUFZR1Fn
QUFCQUFBQnV0QkFBQUVBQUFHNDBFQUFBUUFBQWJJUVFBQUJBQUFCc0JCQUFBRUFBQUdwVUVBQUFR
QUFBYWQKUVFBQUJBQUFCb0pCQUFBRUFBQUdla0VBQUFRQUFBWmZRUUFBQkFBQUJsZEJBQUFFQUFB
R1BFRUFBQVFBQUFZMFFRQUFCQUFBQmhsQgpBQUFFQUFBR0VVRUFBQVFBQUFZR1FRQUFCQUFBQnY1
QUFBQUVBQUFHNDBBQUFBUUFBQWJiUUFBQUJBQUFCc0JBQUFBRUFBQUd1RUFBCkFBUUFBQWFkUUFB
QUJBQUFCcFZBQUFBRUFBQUdla0FBQUFRQUFBWnlRQUFBQkFBQUJsZEFBQUFFQUFBR1QwQUFBQVFB
QUFZMFFBQUEKQkFBQUJpeEFBQUFFQUFBR0VVQUFBQVFBQUFZSlFBQUFCQUFBQnU0L0FBQUVBQUFH
NWo4QUFBUUFBQWJiUHdBQUJBQUFCdE0vQUFBRQpBQUFHdUQ4QUFBUUFBQWF3UHdBQUJBQUFCcFUv
QUFBRUFBQUdqVDhBQUFRQUFBWnlQd0FBQkFBQUJtby9BQUFFQUFBR1R6OEFBQVFBCkFBWkhQd0FB
QkFBQUJpdy9BQUFFQUFBR0pEOEFBQVFBQUFZSlB3QUFCQUFBQmdFL0FBQUVBQUFHNWo0QUFBUUFB
QWJlUGdBQUJBQUEKQnNNK0FBQUVBQUFHdXo0QUFBUUFBQWF3UGdBQUJBQUFCcWcrQUFBRUFBQUdq
VDRBQUFRQUFBYUZQZ0FBQkFBQUJtbytBQUFFQUFBRwpZajRBQUFRQUFBWkhQZ0FBQkFBQUJqOCtB
QUFFQUFBR0pENEFBQVFBQUFZY1BnQUFCQUFBQmdFK0FBQUVBQUFHK1QwQUFBUUFBQWJlClBRQUFC
QUFBQnRZOUFBQUVBQUFHdXowQUFBUUFBQWF6UFFBQUJBQUFCcGc5QUFBRUFBQUdrRDBBQUFRQUFB
WjFQUUFBQkFBQUJtMDkKQUFBRUFBQUdZajBBQUFRQUFBWmFQUUFBQkFBQUJqODlBQUFFQUFBR056
MEFBQVFBQUFZY1BRQUFCQUFBQmhROUFBQUVBQUFHK1R3QQpBQVFBQUFieFBBQUFCQUFBQnRZOEFB
QUVBQUFHemp3QUFBUUFBQWF6UEFBQUJBQUFCcXM4QUFBRUFBQUdrRHdBQUFRQUFBYUlQQUFBCkJB
QUFCbTA4QUFBRUFBQUdaVHdBQUFRQUFBWktQQUFBQkFBQUJrSThBQUFFQUFBR0p6d0FBQVFBQUFZ
ZlBBQUFCQUFBQmhROEFBQUUKQUFBR0REd0FBQVFBQUFieE93QUFCQUFBQnVrN0FBQUVBQUFHempz
QUFBUUFBQWJHT3dBQUJBQUFCcXM3QUFBRUFBQUdvenNBQUFRQQpBQWFJT3dBQUJBQUFCb0E3QUFB
RUFBQUdaVHNBQUFRQUFBWmRPd0FBQkFBQUJrSTdBQUFFQUFBR09qc0FBQVFBQUFZZk93QUFCQUFB
CkJoYzdBQUFFQUFBRy9Eb0FBQVFBQUFiME9nQUFCQUFBQnRrNkFBQUVBQUFHMFRvQUFBUUFBQWEy
T2dBQUJBQUFCcTQ2QUFBRUFBQUcKb3pvQUFBUUFBQWFiT2dBQUJBQUFCb0E2QUFBRUFBQUdlRG9B
QUFRQUFBWmRPZ0FBQkFBQUJsVTZBQUFFQUFBR09qb0FBQVFBQUFZeQpPZ0FBQkFBQUJoYzZBQUFC
QUFBR0R6b0FBQUVBQUFiME9RQUFBUUFBQnV3NUFBQUJBQUFHMFRrQUFBRUFBQWJKT1FBQUFRQUFC
cjQ1CkFBQUJBQUFHdGprQUFBRUFBQWFiT1FBQUFRQUFCcE01QUFBQkFBQUdlRGtBQUFFQUFBWndP
UUFBQVFBQUJsVTVBQUFCQUFBR1RUa0EKQUFFQUFBWXlPUUFBQVFBQUJpbzVBQUFCQUFBR0R6a0FB
QUVBQUFZSE9RQUFBUUFBQnV3NEFBQUJBQUFHNURnQUFBRUFBQWJKT0FBQQpBUUFBQnNFNEFBQUJB
QUFHcGpnQUFBRUFBQWFlT0FBQUFRQUFCb000QUFBQkFBQUdlemdBQUFFQUFBWmdPQUFBQVFBQUJs
ZzRBQUFCCkFBQUdQVGdBQUFFQUFBWTFPQUFBQVFBQUJobzRBQUFCQUFBR0VqZ0FBQUVBQUFiM053
QUFBUUFBQnU4M0FBQUJBQUFHMURjQUFBRUEKQUFiTU53QUFBUUFBQnJFM0FBQUJBQUFHcVRjQUFB
RUFBQWFPTndBQUFRQUFCb1kzQUFBQkFBQUdhemNBQUFFQUFBWmpOd0FBQVFBQQpCa2czQUFBQkFB
QUdRRGNBQUFFQUFBWWxOd0FBQVFBQUJoMDNBQUFCQUFBR0FqY0FBQUVBQUFiNk5nQUFBUUFBQnQ4
MkFBQUJBQUFHCjF6WUFBQUVBQUFhOE5nQUFBUUFBQnJRMkFBQUJBQUFHcVRZQUFBRUFBQWFoTmdB
QUFRQUFCcFkyQUFBQkFBQUdqallBQUFFQUFBYUQKTmdBQUFRQUFCbnMyQUFBQkFBQUdjRFlBQUFF
QUFBWm9OZ0FBQVFBQUJsMDJBQUFCQUFBR1ZUWUFBQUVBQUFaS05nQUFBUUFBQmtJMgpBQUFCQUFB
R056WUFBQUVBQUFZdk5nQUFBUUFBQmlRMkFBQUJBQUFHSERZQUFBRUFBQVlSTmdBQUFRQUFCZ2sy
QUFBQkFBQUcvalVBCkFBRUFBQWIyTlFBQUFRQUFCdXMxQUFBQkFBQUc0elVBQUFFQUFBYllOUUFB
QVFBQUJ0QTFBQUFCQUFBR3hUVUFBQUVBQUFhOU5RQUEKQVFBQUJySTFBQUFCQUFBR3FqVUFBQUVB
QUFhZk5RQUFBUUFBQnBjMUFBQUJBQUFHakRVQUFBRUFBQWFFTlFBQUFRQUFCbmsxQUFBQgpBQUFH
Y1RVQUFBRUFBQVptTlFBQUFRQUFCbDQxQUFBQkFBQUdVelVBQUFFQUFBWkxOUUFBQVFBQUJrQTFB
QUFCQUFBR09EVUFBQUVBCkFBWXROUUFBQVFBQUJpVTFBQUFCQUFBR0dqVUFBQUVBQUFZU05RQUFB
UUFBQmdjMUFBQUJBQUFHL3pRQUFBRUFBQWIwTkFBQUFRQUEKQnV3MEFBQUJBQUFHNFRRQUFBRUFB
QWJaTkFBQUFRQUFCczQwQUFBQkFBQUd4alFBQUFFQUFBYTdOQUFBQVFBQUJyTTBBQUFCQUFBRwpt
RFFBQUFFQUFBYVFOQUFBQVFBQUJvVTBBQUFCQUFBR2ZUUUFBQUVBQUFaeU5BQUFBUUFBQm1vMEFB
QUJBQUFHVHpRQUFBRUFBQVpICk5BQUFBUUFBQmp3MEFBQUJBQUFHTkRRQUFBRUFBQVlwTkFBQUFR
QUFCaUUwQUFBQkFBQUdGalFBQUFFQUFBWU9OQUFBQVFBQUJnTTAKQUFBQkFBQUcrek1BQUFFQUFB
YndNd0FBQVFBQUJ1Z3pBQUFCQUFBRzNUTUFBQUVBQUFiVk13QUFBUUFBQnNvekFBQUJBQUFHd2pN
QQpBQUVBQUFhM013QUFBUUFBQnE4ekFBQUJBQUFHcERNQUFBRUFBQWFjTXdBQUFRQUFCb0V6QUFB
QkFBQUdlVE1BQUFFQUFBWmVNd0FBCkFRQUFCbFl6QUFBQkFBQUdTek1BQUFFQUFBWkRNd0FBQVFB
QUJpZ3pBQUFCQUFBR0lETUFBQUVBQUFZVk13QUFBUUFBQmcwekFBQUIKQUFBRzhqSUFBQUVBQUFi
cU1nQUFBUUFBQnM4eUFBQUJBQUFHeHpJQUFBRUFBQWFzTWdBQUFRQUFCcVF5QUFBQkFBQUdpVElB
QUFFQQpBQWFCTWdBQUFRQUFCbVl5QUFBQkFBQUdYaklBQUFFQUFBWkJNZ0FBQVFBQUJqa3lBQUFC
QUFBR0xqSUFBQUVBQUFZbU1nQUFBUUFBCkJna3lBQUFCQUFBR0FUSUFBQUVBQUFiMk1RQUFBUUFB
QnU0eEFBQUJBQUFHMHpFQUFBRUFBQWJMTVFBQUFRQUFCckF4QUFBQkFBQUcKcURFQUFBRUFBQWFO
TVFBQUFRQUFCb1V4QUFBQkFBQUdhakVBQUFFQUFBWmlNUUFBQVFBQUJsVXhBQUFCQUFBR1RURUFB
QUVBQUFaQwpNUUFBQVFBQUJqb3hBQUFCQUFBR0hURUFBQUVBQUFZVk1RQUFBUUFBQmdveEFBQUJB
QUFHQWpFQUFBRUFBQWJsTUFBQUFRQUFCdDB3CkFBQUJBQUFHMGpBQUFBRUFBQWJLTUFBQUFRQUFC
cTB3QUFBQkFBQUdwVEFBQUFFQUFBYWFNQUFBQVFBQUJwSXdBQUFCQUFBR2R6QUEKQUFFQUFBWnZN
QUFBQVFBQUJsUXdBQUFCQUFBR1REQUFBQUVBQUFZeE1BQUFBUUFBQmlrd0FBQUJBQUFHRGpBQUFB
RUFBQVlHTUFBQQpBUUFBQnZzdkFBQUJBQUFHOHk4QUFBRUFBQWJZTHdBQUFRQUFCdEF2QUFBQkFB
QUd4UzhBQUFFQUFBYTlMd0FBQVFBQUJxSXZBQUFCCkFBQUdtaThBQUFFQUFBWi9Md0FBQVFBQUJu
Y3ZBQUFCQUFBR1hDOEFBQUVBQUFaVUx3QUFBUUFBQmprdkFBQUJBQUFHTVM4QUFBRUEKQUFZV0x3
QUFBUUFBQmc0dkFBQUJBQUFHQXk4QUFBRUFBQWI3TGdBQUFRQUFCdUF1QUFBQkFBQUcyQzRBQUFF
QUFBYk5MZ0FBQVFBQQpCc1V1QUFBQkFBQUdxaTRBQUFFQUFBYWlMZ0FBQVFBQUJvY3VBQUFCQUFB
R2Z5NEFBQUVBQUFaa0xnQUFBUUFBQmx3dUFBQUJBQUFHClVTNEFBQUVBQUFaSkxnQUFBUUFBQmk0
dUFBQUJBQUFHSmk0QUFBRUFBQVliTGdBQUFRQUFCaE11QUFBQkFBQUcrQzBBQUFFQUFBYncKTFFB
QUFRQUFCdFV0QUFBQkFBQUd6UzBBQUFFQUFBYXlMUUFBQVFBQUJxb3RBQUFCQUFBR2p5MEFBQUVB
QUFhSExRQUFBUUFBQm13dApBQUFCQUFBR1pDMEFBQUVBQUFaSkxRQUFBUUFBQmtFdEFBQUJBQUFH
SmkwQUFBRUFBQVllTFFBQUFRQUFCZ010QUFBQkFBQUcreXdBCkFBRUFBQWJnTEFBQUFRQUFCdGdz
QUFBQkFBQUd2U3dBQUFFQUFBYTFMQUFBQVFBQUJxb3NBQUFCQUFBR29pd0FBQUVBQUFhSExBQUEK
QVFBQUJuOHNBQUFCQUFBR2RDd0FBQUVBQUFac0xBQUFBUUFBQmxFc0FBQUJBQUFHU1N3QUFBRUFB
QVl1TEFBQUFRQUFCaVlzQUFBQgpBQUFHQ3l3QUFBRUFBQVlETEFBQUFRQUFCdmdyQUFBQkFBQUc4
Q3NBQUFFQUFBYlZLd0FBQVFBQUJzMHJBQUFCQUFBR3Npc0FBQUVBCkFBYXFLd0FBQVFBQUJvOHJB
QUFCQUFBR2h5c0FBQUVBQUFaOEt3QUFBUUFBQm5RckFBQUJBQUFHYVNzQUFBRUFBQVpoS3dBQUFR
QUEKQmtZckFBQUJBQUFHUGlzQUFBRUFBQVl6S3dBQUFRQUFCaXNyQUFBQkFBQUdFQ3NBQUFFQUFB
WUlLd0FBQVFBQUJ1MHFBQUFCQUFBRwo1U29BQUFFQUFBYktLZ0FBQVFBQUJzSXFBQUFCQUFBR3R5
b0FBQUVBQUFhdktnQUFBUUFBQnFRcUFBQUJBQUFHbkNvQUFBRUFBQWFCCktnQUFBUUFBQm5rcUFB
QUJBQUFHYmlvQUFBRUFBQVptS2dBQUFRQUFCa3NxQUFBQkFBQUdReW9BQUFFQUFBWTRLZ0FBQVFB
QUJqQXEKQUFBQkFBQUdGU29BQUFFQUFBWU5LZ0FBQVFBQUJ2SXBBQUFCQUFBRzZpa0FBQUVBQUFi
UEtRQUFBUUFBQnNjcEFBQUJBQUFHckNrQQpBQUVBQUFha0tRQUFBUUFBQm9rcEFBQUJBQUFHZ1Nr
QUFBRUFBQVptS1FBQUFRQUFCbDRwQUFBQkFBQUdReWtBQUFFQUFBWTdLUUFBCkFRQUFCakFwQUFB
QkFBQUdLQ2tBQUFFQUFBWU5LUUFBQVFBQUJnVXBBQUFCQUFBRytpZ0FBQUVBQUFieUtBQUFBUUFB
QnRjb0FBQUIKQUFBR3p5Z0FBQUVBQUFiRUtBQUFBUUFBQnJ3b0FBQUJBQUFHb1NnQUFBRUFBQWFa
S0FBQUFRQUFCbjRvQUFBQkFBQUdkaWdBQUFFQQpBQVpiS0FBQUFRQUFCbE1vQUFBQkFBQUdPQ2dB
QUFFQUFBWXdLQUFBQVFBQUJpTW9BQUFCQUFBR0d5Z0FBQUVBQUFZT0tBQUFBUUFBCkJnWW9BQUFC
QUFBRyt5Y0FBQUVBQUFiekp3QUFBUUFBQnRnbkFBQUJBQUFHMENjQUFBRUFBQWExSndBQUFRQUFC
cTBuQUFBQkFBQUcKb0NjQUFBRUFBQWFZSndBQUFRQUFCbjBuQUFBQkFBQUdkU2NBQUFFQUFBWmFK
d0FBQVFBQUJsSW5BQUFCQUFBR05TY0FBQUVBQUFZdApKd0FBQVFBQUJpSW5BQUFCQUFBR0dpY0FB
QUVBQUFZUEp3QUFBUUFBQmdjbkFBQUJBQUFHL0NZQUFBRUFBQWIwSmdBQUFRQUFCdGttCkFBQUJB
QUFHMFNZQUFBRUFBQWJHSmdBQUFRQUFCcjRtQUFBQkFBQUdveVlBQUFFQUFBYWJKZ0FBQVFBQUJw
QW1BQUFCQUFBR2lDWUEKQUFFQUFBWnRKZ0FBQVFBQUJtVW1BQUFCQUFBR1NpWUFBQUVBQUFaQ0pn
QUFBUUFBQmljbUFBQUJBQUFHSHlZQUFBRUFBQVlFSmdBQQpBUUFBQnZ3bEFBQUJBQUFHOFNVQUFB
RUFBQWJwSlFBQUFRQUFCczRsQUFBQkFBQUd4aVVBQUFFQUFBYXJKUUFBQVFBQUJxTWxBQUFCCkFB
QUdpQ1VBQUFFQUFBYUFKUUFBQVFBQUJtVWxBQUFCQUFBR1hTVUFBQUVBQUFaU0pRQUFBUUFBQmtv
bEFBQUJBQUFHTHlVQUFBRUEKQUFZbkpRQUFBUUFBQmh3bEFBQUJBQUFHRkNVQUFBRUFBQWI1SkFB
QUFRQUFCdkVrQUFBQkFBQUcxaVFBQUFFQUFBYk9KQUFBQVFBQQpCck1rQUFBQkFBQUdxeVFBQUFF
QUFBYWdKQUFBQVFBQUJwZ2tBQUFCQUFBR2ZTUUFBQUVBQUFaMUpBQUFBUUFBQm1va0FBQUJBQUFH
CllpUUFBQUVBQUFaSEpBQUFBUUFBQmo4a0FBQUJBQUFHSkNRQUFBRUFBQVljSkFBQUFRQUFCZ0Vr
QUFBQkFBQUcrU01BQUFFQUFBYmUKSXdBQUFRQUFCdFlqQUFBQkFBQUd1eU1BQUFFQUFBYXpJd0FB
QVFBQUJxZ2pBQUFCQUFBR29DTUFBQUVBQUFhRkl3QUFBUUFBQm4wagpBQUFCQUFBR2NpTUFBQUVB
QUFacUl3QUFBUUFBQms4akFBQUJBQUFHUnlNQUFBRUFBQVlzSXdBQUFRQUFCaVFqQUFBQkFBQUdD
U01BCkFBRUFBQVlCSXdBQUFRQUFCdVlpQUFBQkFBQUczaUlBQUFFQUFBYkRJZ0FBQVFBQUJyc2lB
QUFCQUFBR25pSUFBQUVBQUFhV0lnQUEKQVFBQUJvc2lBQUFCQUFBR2d5SUFBQUVBQUFabUlnQUFB
UUFBQmw0aUFBQUJBQUFHVXlJQUFBRUFBQVpMSWdBQUFRQUFCakFpQUFBQgpBQUFHS0NJQUFBRUFB
QVlOSWdBQUFRQUFCZ1VpQUFBQkFBQUc2Q0VBQUFFQUFBYmdJUUFBQVFBQUJ0VWhBQUFCQUFBR3pT
RUFBQUVBCkFBYXdJUUFBQVFBQUJxZ2hBQUFCQUFBR25TRUFBQUVBQUFhVklRQUFBUUFBQm5vaEFB
QUJBQUFHY2lFQUFBRUFBQVpYSVFBQUFRQUEKQms4aEFBQUJBQUFHTkNFQUFBRUFBQVlzSVFBQUFR
QUFCaEVoQUFBQkFBQUdDU0VBQUFFQUFBYnVJQUFBQVFBQUJ1WWdBQUFCQUFBRwp5eUFBQUFFQUFB
YkRJQUFBQVFBQUJyZ2dBQUFCQUFBR3NDQUFBQUVBQUFhVklBQUFBUUFBQm8wZ0FBQUJBQUFHZ2lB
QUFBRUFBQVo2CklBQUFBUUFBQmw0Z0FBQUJBQUFHVmlBQUFBRUFBQVpMSUFBQUFRQUFCa01nQUFB
QkFBQUdKeUFBQUFFQUFBWWZJQUFBQVFBQUJoUWcKQUFBQkFBQUdEQ0FBQUFFQUFBYndId0FBQVFB
QUJ1Z2ZBQUFCQUFBRzNSOEFBQUVBQUFiVkh3QUFBUUFBQnJrZkFBQUJBQUFHc1I4QQpBQUVBQUFh
bUh3QUFBUUFBQnA0ZkFBQUJBQUFHZ3g4QUFBRUFBQVo3SHdBQUFRQUFCbThmQUFBQkFBQUdaeDhB
QUFFQUFBWmNId0FBCkFRQUFCbFFmQUFBQkFBQUdPUjhBQUFFQUFBWXhId0FBQVFBQUJoVWZBQUFC
QUFBR0RSOEFBQUVBQUFZQ0h3QUFBUUFBQnZvZUFBQUIKQUFBRzdoNEFBQUVBQUFibUhnQUFBUUFB
QnRzZUFBQUJBQUFHMHg0QUFBRUFBQWJISGdBQUFRQUFCcjhlQUFBQkFBQUd0QjRBQUFFQQpBQWFz
SGdBQUFRQUFCcEVlQUFBQkFBQUdpUjRBQUFFQUFBWitIZ0FBQVFBQUJuWWVBQUFCQUFBR2F4NEFB
QUVBQUFaakhnQUFBUUFBCkJrWWVBQUFCQUFBR1BoNEFBQUVBQUFZekhnQUFBUUFBQmlzZUFBQUJB
QUFHRUI0QUFBRUFBQVlJSGdBQUFRQUFCdnNkQUFBQkFBQUcKOHgwQUFBRUFBQWJvSFFBQUFRQUFC
dUFkQUFBQkFBQUd4UjBBQUFFQUFBYTlIUUFBQVFBQUJySWRBQUFCQUFBR3FoMEFBQUVBQUFhUApI
UUFBQVFBQUJvY2RBQUFCQUFBR2ZCMEFBQUVBQUFaMEhRQUFBUUFBQmxrZEFBQUJBQUFHVVIwQUFB
RUFBQVkySFFBQUFRQUFCaTRkCkFBQUJBQUFHRXgwQUFBRUFBQVlMSFFBQUFRQUFCdkFjQUFBQkFB
QUc2QndBQUFFQUFBYk5IQUFBQVFBQUJzVWNBQUFCQUFBR3Fod0EKQUFFQUFBYWlIQUFBQVFBQUJv
Y2NBQUFCQUFBR2Z4d0FBQUVBQUFaa0hBQUFBUUFBQmx3Y0FBQUJBQUFHUVJ3QUFBRUFBQVk1SEFB
QQpBUUFBQmg0Y0FBQUJBQUFHRmh3QUFBRUFBQVlMSEFBQUFRQUFCZ01jQUFBQkFBQUc2QnNBQUFF
QUFBYmdHd0FBQVFBQUJ0VWJBQUFCCkFBQUd6UnNBQUFFQUFBYXlHd0FBQVFBQUJxb2JBQUFCQUFB
R254c0FBQUVBQUFhWEd3QUFBUUFBQm53YkFBQUJBQUFHZEJzQUFBRUEKQUFaWkd3QUFBUUFBQmxF
YkFBQUJBQUFHUkJzQUFBRUFBQVk4R3dBQUFRQUFCakViQUFBQkFBQUdLUnNBQUFFQUFBWU9Hd0FB
QVFBQQpCZ1liQUFBQkFBQUc2eG9BQUFFQUFBYmpHZ0FBQVFBQUJzZ2FBQUFCQUFBR3dCb0FBQUVB
QUFhbEdnQUFBUUFBQnAwYUFBQUJBQUFHCmdCb0FBQUVBQUFaNEdnQUFBUUFBQm0wYUFBQUJBQUFH
WlJvQUFBRUFBQVpJR2dBQUFRQUFCa0FhQUFBQkFBQUdOUm9BQUFFQUFBWXQKR2dBQUFRQUFCaElh
QUFBQkFBQUdDaG9BQUFFQUFBYnZHUUFBQVFBQUJ1Y1pBQUFCQUFBR3loa0FBQUVBQUFiQ0dRQUFB
UUFBQnJjWgpBQUFCQUFBR3J4a0FBQUVBQUFhU0dRQUFBUUFBQm9vWkFBQUJBQUFHZnhrQUFBRUFB
QVozR1FBQUFRQUFCbHdaQUFBQkFBQUdWQmtBCkFBRUFBQVk1R1FBQUFRQUFCakVaQUFBQkFBQUdG
aGtBQUFFQUFBWU9HUUFBQVFBQUJ2TVlBQUFCQUFBRzZ4Z0FBQUVBQUFiUUdBQUEKQVFBQUJzZ1lB
QUFCQUFBR3JSZ0FBQUVBQUFhbEdBQUFBUUFBQm9vWUFBQUJBQUFHZ2hnQUFBRUFBQVozR0FBQUFR
QUFCbThZQUFBQgpBQUFHVkJnQUFBRUFBQVpNR0FBQUFRQUFCa0VZQUFBQkFBQUdPUmdBQUFFQUFB
WWVHQUFBQVFBQUJoWVlBQUFCQUFBRyt4Y0FBQUVBCkFBYnpGd0FBQVFBQUJ0Z1hBQUFCQUFBRzBC
Y0FBQUVBQUFhMUZ3QUFBUUFBQnEwWEFBQUJBQUFHa2hjQUFBRUFBQWFLRndBQUFRQUEKQm04WEFB
QUJBQUFHWnhjQUFBRUFBQVpNRndBQUFRQUFCa1FYQUFBQkFBQUdLUmNBQUFFQUFBWWhGd0FBQVFB
QUJoWVhBQUFCQUFBRwpEaGNBQUFFQUFBYnpGZ0FBQVFBQUJ1c1dBQUFCQUFBRzRCWUFBQUVBQUFi
WUZnQUFBUUFBQnIwV0FBQUJBQUFHdFJZQUFBRUFBQWFhCkZnQUFBUUFBQnBJV0FBQUJBQUFHZHhZ
QUFBRUFBQVp2RmdBQUFRQUFCbFFXQUFBQkFBQUdUQllBQUFFQUFBWXhGZ0FBQVFBQUJpa1cKQUFB
QkFBQUdEaFlBQUFFQUFBWUdGZ0FBQVFBQUJ1c1ZBQUFCQUFBRzR4VUFBQUVBQUFiR0ZRQUFBUUFB
QnI0VkFBQUJBQUFHc3hVQQpBQUVBQUFhckZRQUFBUUFBQm80VkFBQUJBQUFHaGhVQUFBRUFBQVo3
RlFBQUFRQUFCbk1WQUFBQkFBQUdXQlVBQUFFQUFBWlFGUUFBCkFRQUFCalVWQUFBQkFBQUdMUlVB
QUFFQUFBWVNGUUFBQVFBQUJnb1ZBQUFCQUFBRzd4UUFBQUVBQUFibkZBQUFBUUFBQnN3VUFBQUIK
QUFBR3hCUUFBQUVBQUFhNUZBQUFBUUFBQnJFVUFBQUJBQUFHbGhRQUFBRUFBQWFPRkFBQUFRQUFC
b01VQUFBQkFBQUdleFFBQUFFQQpBQVpnRkFBQUFRQUFCbGdVQUFBQkFBQUdQUlFBQUFFQUFBWTFG
QUFBQVFBQUJob1VBQUFCQUFBR0VoUUFBQUVBQUFiM0V3QUFBUUFBCkJ1OFRBQUFCQUFBRzFCTUFB
QUVBQUFiTUV3QUFBUUFBQnJFVEFBQUJBQUFHcVJNQUFBRUFBQWFPRXdBQUFRQUFCb1lUQUFBQkFB
QUcKYVJNQUFBRUFBQVpoRXdBQUFRQUFCbFlUQUFBQkFBQUdUaE1BQUFFQUFBWXhFd0FBQVFBQUJp
a1RBQUFCQUFBR0hoTUFBQUVBQUFZVwpFd0FBQVFBQUJ2c1NBQUFCQUFBRzh4SUFBQUVBQUFiWUVn
QUFBUUFBQnRBU0FBQUJBQUFHdFJJQUFBRUFBQWF0RWdBQUFRQUFCcUlTCkFBQUJBQUFHbWhJQUFB
RUFBQVovRWdBQUFRQUFCbmNTQUFBQkFBQUdiQklBQUFFQUFBWmtFZ0FBQVFBQUJra1NBQUFCQUFB
R1FSSUEKQUFFQUFBWTJFZ0FBQVFBQUJpNFNBQUFCQUFBR0V4SUFBQUVBQUFZTEVnQUFBUUFBQmdB
U0FBQUJBQUFHK0JFQUFBRUFBQWJkRVFBQQpBUUFBQnRVUkFBQUJBQUFHdUJFQUFBRUFBQWF3RVFB
QUFRQUFCcVVSQUFBQkFBQUduUkVBQUFFQUFBYUNFUUFBQVFBQUJub1JBQUFCCkFBQUdYeEVBQUFF
QUFBWlhFUUFBQVFBQUJqd1JBQUFCQUFBR05CRUFBQUVBQUFZWkVRQUFBUUFBQmhFUkFBQUJBQUFH
OWhBQUFBRUEKQUFidUVBQUFBUUFBQnRFUUFBQUJBQUFHeVJBQUFBRUFBQWErRUFBQUFRQUFCcllR
QUFBQkFBQUdxUkFBQUFFQUFBYWhFQUFBQVFBQQpCb1lRQUFBQkFBQUdmaEFBQUFFQUFBWmpFQUFB
QVFBQUJsc1FBQUFCQUFBR1FCQUFBQUVBQUFZNEVBQUFBUUFBQmkwUUFBQUJBQUFHCkpSQUFBQUVB
QUFZYUVBQUFBUUFBQmhJUUFBQUJBQUFHOVE4QUFBRUFBQWJ0RHdBQUFRQUFCdUlQQUFBQkFBQUcy
ZzhBQUFFQUFBYS8KRHdBQUFRQUFCcmNQQUFBQkFBQUdyQThBQUFFQUFBYWtEd0FBQVFBQUJva1BB
QUFCQUFBR2dROEFBQUVBQUFaMkR3QUFBUUFBQm00UApBQUFCQUFBR1V3OEFBQUVBQUFaTER3QUFB
UUFBQmtBUEFBQUJBQUFHT0E4QUFBRUFBQVlkRHdBQUFRQUFCaFVQQUFBQkFBQUcrZzRBCkFBRUFB
QWJ5RGdBQUFRQUFCdFVPQUFBQkFBQUd6UTRBQUFFQUFBYkNEZ0FBQVFBQUJyb09BQUFCQUFBR253
NEFBQUVBQUFhWERnQUEKQVFBQUJvd09BQUFCQUFBR2hBNEFBQUVBQUFabkRnQUFBUUFBQmw4T0FB
QUJBQUFHVkE0QUFBRUFBQVpNRGdBQUFRQUFCakVPQUFBQgpBQUFHS1E0QUFBRUFBQVllRGdBQUFR
QUFCaFlPQUFBQkFBQUcrdzBBQUFFQUFBYnpEUUFBQVFBQUJ1Z05BQUFCQUFBRzRBMEFBQUVBCkFB
YkZEUUFBQVFBQUJyME5BQUFCQUFBR3NnMEFBQUVBQUFhcURRQUFBUUFBQm84TkFBQUJBQUFHaHcw
QUFBRUFBQVpzRFFBQUFRQUEKQm1RTkFBQUJBQUFHU1EwQUFBRUFBQVpCRFFBQUFRQUFCallOQUFB
QkFBQUdMZzBBQUFFQUFBWVREUUFBQVFBQUJnc05BQUFCQUFBRwpBQTBBQUFFQUFBYjREQUFBQVFB
QUJ0ME1BQUFCQUFBRzFRd0FBQUVBQUFhNkRBQUFBUUFBQnJJTUFBQUJBQUFHbHd3QUFBRUFBQWFQ
CkRBQUFBUUFBQm5RTUFBQUJBQUFHYkF3QUFBRUFBQVpoREFBQUFRQUFCbGtNQUFBQkFBQUdQZ3dB
QUFFQUFBWTJEQUFBQVFBQUJoc00KQUFBQkFBQUdFd3dBQUFFQUFBYjRDd0FBQVFBQUJ2QUxBQUFC
QUFBRzFRc0FBQUVBQUFiTkN3QUFBUUFBQnJJTEFBQUJBQUFHcWdzQQpBQUVBQUFhZkN3QUFBUUFB
QnBjTEFBQUJBQUFHZWdzQUFBRUFBQVp5Q3dBQUFRQUFCbWNMQUFBQkFBQUdYd3NBQUFFQUFBWkND
d0FBCkFRQUFCam9MQUFBQkFBQUdMd3NBQUFFQUFBWW5Dd0FBQVFBQUJnd0xBQUFCQUFBR0JBc0FB
QUVBQUFicENnQUFBUUFBQnVFS0FBQUIKQUFBR3hnb0FBQUVBQUFhK0NnQUFBUUFBQnJNS0FBQUJB
QUFHcXdvQUFBRUFBQWFRQ2dBQUFRQUFCb2dLQUFBQkFBQUdmUW9BQUFFQQpBQVoxQ2dBQUFRQUFC
bW9LQUFBQkFBQUdZZ29BQUFFQUFBWkhDZ0FBQVFBQUJqOEtBQUFCQUFBR05Bb0FBQUVBQUFZc0Nn
QUFBUUFBCkJpRUtBQUFCQUFBR0dRb0FBQUVBQUFiK0NRQUFBUUFBQnZZSkFBQUJBQUFHMndrQUFB
RUFBQWJUQ1FBQUFRQUFCcmdKQUFBQkFBQUcKc0FrQUFBRUFBQWFWQ1FBQUFRQUFCbzBKQUFBQkFB
QUdjQWtBQUFFQUFBWm9DUUFBQVFBQUJsMEpBQUFCQUFBR1ZRa0FBQUVBQUFZNApDUUFBQVFBQUJq
QUpBQUFCQUFBR0pRa0FBQUVBQUFZZENRQUFBUUFBQmdJSkFBQUJBQUFHK2dnQUFBRUFBQWJmQ0FB
QUFRQUFCdGNJCkFBQUJBQUFHdkFnQUFBRUFBQWEwQ0FBQUFRQUFCcGtJQUFBQkFBQUdrUWdBQUFF
QUFBYUdDQUFBQVFBQUJuNElBQUFCQUFBR2N3Z0EKQUFFQUFBWnJDQUFBQVFBQUJsQUlBQUFCQUFB
R1NBZ0FBQUVBQUFZOUNBQUFBUUFBQmpVSUFBQUJBQUFHR2dnQUFBRUFBQVlTQ0FBQQpBUUFBQnZj
SEFBQUJBQUFHN3djQUFBRUFBQWJTQndBQUFRQUFCc29IQUFBQkFBQUdyd2NBQUFFQUFBYW5Cd0FB
QVFBQUJwd0hBQUFCCkFBQUdsQWNBQUFFQUFBWjVCd0FBQVFBQUJuRUhBQUFCQUFBR1ZBY0FBQUVB
QUFaTUJ3QUFBUUFBQmtFSEFBQUJBQUFHT1FjQUFBRUEKQUFZY0J3QUFBUUFBQmhRSEFBQUJBQUFH
Q1FjQUFBRUFBQVlCQndBQUFRQUFCdVlHQUFBQkFBQUczZ1lBQUFFQUFBYkJCZ0FBQVFBQQpCcmtH
QUFBQkFBQUdyZ1lBQUFFQUFBYW1CZ0FBQVFBQUJvc0dBQUFCQUFBR2d3WUFBQUVBQUFaNEJnQUFB
UUFBQm5BR0FBQUJBQUFHClV3WUFBQUVBQUFaTEJnQUFBUUFBQmtBR0FBQUJBQUFHT0FZQUFBRUFB
QVlkQmdBQUFRQUFCaFVHQUFBQkFBQUcrZ1VBQUFFQUFBYnkKQlFBQUFRQUFCdGNGQUFBQkFBQUd6
d1VBQUFFQUFBYkVCUUFBQVFBQUJyd0ZBQUFCQUFBR29RVUFBQUVBQUFhWkJRQUFBUUFBQm80RgpB
QUFCQUFBR2hnVUFBQUVBQUFackJRQUFBUUFBQm1NRkFBQUJBQUFHU0FVQUFBRUFBQVpBQlFBQUFR
QUFCaVVGQUFBQkFBQUdIUVVBCkFBRUFBQVlDQlFBQUFRQUFCdm9FQUFBQkFBQUczd1FBQUFFQUFB
YlhCQUFBQVFBQUJyd0VBQUFCQUFBR3RBUUFBQUVBQUFhWkJBQUEKQVFBQUJwRUVBQUFCQUFBR2Rn
UUFBQUVBQUFadUJBQUFBUUFBQmxNRUFBQUJBQUFHU3dRQUFBRUFBQVl3QkFBQUFRQUFCaWdFQUFB
QgpBQUFHRFFRQUFBRUFBQVlGQkFBQUFRQUFCdW9EQUFBQkFBQUc0Z01BQUFFQUFBYkhBd0FBQVFB
QUJyOERBQUFCQUFBR3BBTUFBQUVBCkFBYWNBd0FBQVFBQUJvRURBQUFCQUFBR2VRTUFBQUVBQUFa
ZUF3QUFBUUFBQmxZREFBQUJBQUFHT3dNQUFBRUFBQVl6QXdBQUFRQUEKQmhnREFBQUJBQUFHRUFN
QUFBRUFBQWIxQWdBQUFRQUFCdTBDQUFBQkFBQUcwZ0lBQUFFQUFBYktBZ0FBQVFBQUJxOENBQUFC
QUFBRwpwd0lBQUFFQUFBYU1BZ0FBQVFBQUJvUUNBQUFCQUFBR2FRSUFBQUVBQUFaaEFnQUFBUUFB
QmxZQ0FBQUJBQUFHVGdJQUFBRUFBQVpECkFnQUFBUUFBQmpzQ0FBQUJBQUFHTUFJQUFBRUFBQVlv
QWdBQUFRQUFCaDBDQUFBQkFBQUdGUUlBQUFFQUFBWUtBZ0FBQVFBQUJnSUMKQUFBQkFBQUc5d0VB
QUFFQUFBYnZBUUFBQVFBQUJ1UUJBQUFCQUFBRzNBRUFBQUVBQUFiUkFRQUFBUUFBQnNrQkFBQUJB
QUFHdmdFQQpBQUVBQUFhMkFRQUFBUUFBQnFzQkFBQUJBQUFHb3dFQUFBRUFBQWFZQVFBQUFRQUFC
cEFCQUFBQkFBQUdoUUVBQUFFQUFBWjlBUUFBCkFRQUFCbklCQUFBQkFBQUdhZ0VBQUFFQUFBWmZB
UUFBQVFBQUJsY0JBQUFCQUFBR1RBRUFBQUVBQUFaRUFRQUFBUUFBQmprQkFBQUIKQUFBR01RRUFB
QUVBQUFZbUFRQUFBUUFBQmg0QkFBQUJBQUFHRXdFQUFBRUFBQVlMQVFBQUFRQUFCZ0FCQUFBQkFB
QUcrQUFBQUFFQQpBQWJ0QUFBQUFRQUFCdVVBQUFBQkFBQUd5Z0FBQUFFQUFBYkNBQUFBQVFBQUJx
Y0FBQUFCQUFBR253QUFBQUVBQUFhRUFBQUFBUUFBCkJud0FBQUFCQUFBR2NRQUFBQUVBQUFacEFB
QUFBUUFBQms0QUFBQUJBQUFHUmdBQUFBRUFBQVlyQUFBQUFRQUFCaU1BQUFBQkFBQUcKQ0FBQUFB
RUFBQVlBQUFBQUFRQUFCdGdLQUFBQkFBQUcwQW9BQUFFQUFBYklDZ0FBQVFBQUJzQUtBQUFCQUFB
R3FBb0FBQUVBQUFhZwpDZ0FBQVFBQUJwZ0tBQUFCQUFBR2tBb0FBQUVBQUFaNENnQUFBUUFBQm5B
S0FBQUJBQUFHYUFvQUFBRUFBQVpnQ2dBQUFRQUFCa2dLCkFBQUJBQUFHUUFvQUFBRUFBQVk0Q2dB
QUFRQUFCakFLQUFBQkFBQUdHQW9BQUFFQUFBWVFDZ0FBQVFBQUJnZ0tBQUFCQUFBR0FBb0EKQUFF
QUFBYm9DUUFBQVFBQUJ1QUpBQUFCQUFBRzJBa0FBQUVBQUFiUUNRQUFBUUFBQnJnSkFBQUJBQUFH
c0FrQUFBRUFBQWFvQ1FBQQpBUUFBQnFBSkFBQUJBQUFHaUFrQUFBRUFBQWFBQ1FBQUFRQUFCbmdK
QUFBQkFBQUdjQWtBQUFFQUFBWllDUUFBQVFBQUJsQUpBQUFCCkFBQUdTQWtBQUFFQUFBWkFDUUFB
QVFBQUJpZ0pBQUFCQUFBR0lBa0FBQUVBQUFZWUNRQUFBUUFBQmhBSkFBQUJBQUFHK0FnQUFBRUEK
QUFid0NBQUFBUUFBQnVnSUFBQUJBQUFHNEFnQUFBRUFBQWJJQ0FBQUFRQUFCc0FJQUFBQkFBQUd1
QWdBQUFFQUFBYXdDQUFBQVFBQQpCcGdJQUFBQkFBQUdrQWdBQUFFQUFBYUlDQUFBQVFBQUJvQUlB
QUFCQUFBR2VBZ0FBQUVBQUFad0NBQUFBUUFBQmxnSUFBQUJBQUFHClVBZ0FBQUVBQUFaSUNBQUFB
UUFBQmtBSUFBQUJBQUFHS0FnQUFBRUFBQVlnQ0FBQUFRQUFCaGdJQUFBQkFBQUdFQWdBQUFFQUFB
WUkKQ0FBQUFRQUFCZ0FJQUFBQkFBQUc2QWNBQUFFQUFBYmdCd0FBQVFBQUJ0Z0hBQUFCQUFBRzBB
Y0FBQUVBQUFiSUJ3QUFBUUFBQnNBSApBQUFCQUFBR3FBY0FBQUVBQUFhZ0J3QUFBUUFBQnBnSEFB
QUJBQUFHa0FjQUFBRUFBQVo0QndBQUFRQUFCbkFIQUFBQkFBQUdhQWNBCkFBRUFBQVpnQndBQUFR
QUFCbGdIQUFBQkFBQUdVQWNBQUFFQUFBWTRCd0FBQVFBQUJqQUhBQUFCQUFBR0tBY0FBQUVBQUFZ
Z0J3QUEKQVFBQUJnZ0hBQUFCQUFBR0FBY0FBQUVBQUFiNEJnQUFBUUFBQnZBR0FBQUJBQUFHNkFZ
QUFBRUFBQWJnQmdBQUFRQUFCc2dHQUFBQgpBQUFHd0FZQUFBRUFBQWE0QmdBQUFRQUFCckFHQUFB
QkFBQUdtQVlBQUFFQUFBYVFCZ0FBQVFBQUJvZ0dBQUFCQUFBR2dBWUFBQUVBCkFBWjRCZ0FBQVFB
QUJuQUdBQUFCQUFBR1dBWUFBQUVBQUFaUUJnQUFBUUFBQmtnR0FBQUJBQUFHUUFZQUFBRUFBQVlv
QmdBQUFRQUEKQmlBR0FBQUJBQUFHR0FZQUFBRUFBQVlRQmdBQUFRQUFCZ2dHQUFBQkFBQUdBQVlB
QUFFQUFBYm9CUUFBQVFBQUJ1QUZBQUFCQUFBRwoyQVVBQUFFQUFBYlFCUUFBQVFBQUJyZ0ZBQUFC
QUFBR3NBVUFBQUVBQUFhb0JRQUFBUUFBQnFBRkFBQUJBQUFHbUFVQUFBRUFBQWFRCkJRQUFBUUFB
Qm5nRkFBQUJBQUFHY0FVQUFBRUFBQVpvQlFBQUFRQUFCbUFGQUFBQkFBQUdTQVVBQUFFQUFBWkFC
UUFBQVFBQUJqZ0YKQUFBQkFBQUdNQVVBQUFFQUFBWW9CUUFBQVFBQUJpQUZBQUFCQUFBR0NBVUFB
QUVBQUFZQUJRQUFBUUFBQnZnRUFBQUJBQUFHOEFRQQpBQUVBQUFiWUJBQUFBUUFBQnRBRUFBQUJB
QUFHeUFRQUFBRUFBQWJBQkFBQUFRQUFCcWdFQUFBQkFBQUdvQVFBQUFFQUFBYVlCQUFBCkFRQUFC
cEFFQUFBQkFBQUdlQVFBQUFFQUFBWndCQUFBQVFBQUJtZ0VBQUFCQUFBR1lBUUFBQUVBQUFaSUJB
QUFBUUFBQmtBRUFBQUIKQUFBR09BUUFBQUVBQUFZd0JBQUFBUUFBQmlnRUFBQUJBQUFHSUFRQUFB
RUFBQVlJQkFBQUFRQUFCZ0FFQUFBQkFBQUcrQU1BQUFFQQpBQWJ3QXdBQUFRQUFCdGdEQUFBQkFB
QUcwQU1BQUFFQUFBYklBd0FBQVFBQUJzQURBQUFCQUFBR3VBTUFBQUVBQUFhd0F3QUFBUUFBCkJw
Z0RBQUFCQUFBR2tBTUFBQUVBQUFhSUF3QUFBUUFBQm9BREFBQUJBQUFHZUFNQUFBRUFBQVp3QXdB
QUFRQUFCbGdEQUFBQkFBQUcKVUFNQUFBRUFBQVpJQXdBQUFRQUFCa0FEQUFBQkFBQUdLQU1BQUFF
QUFBWWdBd0FBQVFBQUJoZ0RBQUFCQUFBR0VBTUFBQUVBQUFiNApBZ0FBQVFBQUJ2QUNBQUFCQUFB
RzZBSUFBQUVBQUFiZ0FnQUFBUUFBQnNnQ0FBQUJBQUFHd0FJQUFBRUFBQWE0QWdBQUFRQUFCckFD
CkFBQUJBQUFHbUFJQUFBRUFBQWFRQWdBQUFRQUFCb2dDQUFBQkFBQUdnQUlBQUFFQUFBWm9BZ0FB
QVFBQUJtQUNBQUFCQUFBR1dBSUEKQUFFQUFBWlFBZ0FBQVFBQUJqZ0NBQUFCQUFBR01BSUFBQUVB
QUFZb0FnQUFBUUFBQmlBQ0FBQUJBQUFHR0FJQUFBRUFBQVlRQWdBQQpBUUFBQnZnQkFBQUJBQUFH
OEFFQUFBRUFBQWJvQVFBQUFRQUFCdUFCQUFBQkFBQUd5QUVBQUFFQUFBYkFBUUFBQVFBQUJyZ0JB
QUFCCkFBQUdzQUVBQUFFQUFBYVlBUUFBQVFBQUJwQUJBQUFCQUFBR2lBRUFBQUVBQUFhQUFRQUFB
UUFBQm1nQkFBQUJBQUFHWUFFQUFBRUEKQUFaWUFRQUFBUUFBQmxBQkFBQUJBQUFHT0FFQUFBRUFB
QVl3QVFBQUFRQUFCaWdCQUFBQkFBQUdJQUVBQUFFQUFBWUlBUUFBQVFBQQpCZ0FCQUFBQkFBQUcr
QUFBQUFFQUFBYndBQUFBQVFBQUJ0Z0FBQUFCQUFBRzBBQUFBQUVBQUFiSUFBQUFBUUFBQnNBQUFB
QUJBQUFHCnFBQUFBQUVBQUFhZ0FBQUFBUUFBQnBnQUFBQUJBQUFHa0FBQUFBRUFBQVo0QUFBQUFR
QUFCbkFBQUFBQkFBQUdhQUFBQUFFQUFBWmcKQUFBQUFRQUFCa2dBQUFBQkFBQUdRQUFBQUFFQUFB
WTRBQUFBQVFBQUJqQUFBQUFCQUFBR0dBQUFBQUVBQUFZUUFBQUFBUUFBQmdnQQpBQUFCQUFBR0FB
QUFBQUVBQUFhOEVnQUFBUUFBQnFjU0FBQUVBQUFHa2hJQUFBUUFBQWFHRWdBQUJBQUFCbkVTQUFB
RUFBQUdYQklBCkFBUUFBQVpIRWdBQUJBQUFCaklTQUFBRUFBQUdKaElBQUFRQUFBWVJFZ0FBQkFB
QUJ2d1JBQUFFQUFBRzhCRUFBQVFBQUFiYkVRQUEKQkFBQUJzWVJBQUFFQUFBR3VoRUFBQVFBQUFh
dUVRQUFCQUFBQnFJUkFBQUVBQUFHalJFQUFBUUFBQVo0RVFBQUJBQUFCbXdSQUFBRQpBQUFHVnhF
QUFBUUFBQVpDRVFBQUJBQUFCallSQUFBRUFBQUdJUkVBQUFRQUFBWVZFUUFBQkFBQUJnQVJBQUFF
QUFBRzZ4QUFBQVFBCkFBYmZFQUFBQkFBQUJzb1FBQUFFQUFBR3RSQUFBQVFBQUFhcEVBQUFCQUFB
QnBRUUFBQUVBQUFHZnhBQUFBUUFBQVp6RUFBQUJBQUEKQmw0UUFBQUVBQUFHU1JBQUFBUUFBQVk5
RUFBQUJBQUFCakVRQUFBRUFBQUdKUkFBQUFRQUFBWVFFQUFBQkFBQUJnUVFBQUFFQUFBRworQThB
QUFRQUFBYnNEd0FBQkFBQUJ1QVBBQUFFQUFBRzFBOEFBQVFBQUFiSUR3QUFCQUFBQnJ3UEFBQUVB
QUFHc0E4QUFBUUFBQWFrCkR3QUFCQUFBQnBnUEFBQUVBQUFHakE4QUFBUUFBQWFBRHdBQUJBQUFC
blFQQUFBRUFBQUdhQThBQUFRQUFBWmNEd0FBQkFBQUJsQVAKQUFBRUFBQUdSQThBQUFRQUFBWTRE
d0FBQkFBQUJpd1BBQUFFQUFBR0lBOEFBQVFBQUFZVUR3QUFCQUFBQnY4T0FBQUVBQUFHOHc0QQpB
QVFBQUFibkRnQUFCQUFBQnRzT0FBQUVBQUFHenc0QUFBUUFBQWJERGdBQUJBQUFCcmNPQUFBRUFB
QUdxdzRBQUFRQUFBYWZEZ0FBCkJBQUFCcE1PQUFBRUFBQUdodzRBQUFRQUFBWjdEZ0FBQkFBQUJt
OE9BQUFFQUFBR1l3NEFBQVFBQUFaWERnQUFCQUFBQmtzT0FBQUUKQUFBR1B3NEFBQVFBQUFZekRn
QUFCQUFBQmljT0FBQUVBQUFHR3c0QUFBUUFBQVlQRGdBQUJBQUFCZ01PQUFBRUFBQUc3ZzBBQUFR
QQpBQWJpRFFBQUJBQUFCdFlOQUFBRUFBQUd5ZzBBQUFRQUFBYStEUUFBQkFBQUJySU5BQUFFQUFB
R3BnMEFBQVFBQUFhYURRQUFCQUFBCkJvNE5BQUFFQUFBR2dnMEFBQVFBQUFaMkRRQUFCQUFBQm1v
TkFBQUVBQUFHWGcwQUFBUUFBQVpTRFFBQUJBQUFCa1lOQUFBRUFBQUcKT2cwQUFBUUFBQVl1RFFB
QUJBQUFCaUlOQUFBRUFBQUdGZzBBQUFRQUFBWUtEUUFBQkFBQUJ2NE1BQUFFQUFBRzhnd0FBQVFB
QUFiZApEQUFBQVFBQUJzZ01BQUFCQUFBR3N3d0FBQUVBQUFhZURBQUFBUUFBQnBJTUFBQUJBQUFH
aGd3QUFBRUFBQVo2REFBQUFRQUFCbTRNCkFBQUJBQUFHWWd3QUFBRUFBQVpXREFBQUFRQUFCa29N
QUFBQkFBQUdQZ3dBQUFFQUFBWXlEQUFBQVFBQUJoME1BQUFCQUFBR0VRd0EKQUFFQUFBYjhDd0FB
QVFBQUJ1Y0xBQUFCQUFBRzJ3c0FBQUVBQUFiR0N3QUFBUUFBQnJvTEFBQUJBQUFHcmdzQUFBRUFB
QWFaQ3dBQQpBUUFBQm8wTEFBQUJBQUFHZUFzQUFBRUFBQVpqQ3dBQUFRQUFCbGNMQUFBQkFBQUdR
Z3NBQUFFQUFBWTJDd0FBQVFBQUJpRUxBQUFCCkFBQUdGUXNBQUFFQUFBWUFDd0FBQVFBQUJ2UUtB
QUFCQUFBRzZBb0FBQUVBQUFiVENnQUFBUUFBQnNjS0FBQUJBQUFHdXdvQUFBRUEKQUFhdkNnQUFB
UUFBQnFNS0FBQUJBQUFHbHdvQUFBRUFBQWFDQ2dBQUFRQUFCbllLQUFBQkFBQUdZUW9BQUFFQUFB
WlZDZ0FBQVFBQQpCa0FLQUFBQkFBQUdOQW9BQUFFQUFBWWZDZ0FBQVFBQUJnb0tBQUFCQUFBRzlR
a0FBQUVBQUFicENRQUFBUUFBQnRRSkFBQUJBQUFHCnZ3a0FBQUVBQUFhekNRQUFBUUFBQnFjSkFB
QUJBQUFHa2drQUFBRUFBQWFHQ1FBQUFRQUFCbm9KQUFBQkFBQUdiZ2tBQUFFQUFBWloKQ1FBQUFR
QUFCazBKQUFBQkFBQUdRUWtBQUFFQUFBWXNDUUFBQVFBQUJpQUpBQUFCQUFBR0ZBa0FBQUVBQUFi
L0NBQUFBUUFBQnVvSQpBQUFCQUFBRzFRZ0FBQUVBQUFiSkNBQUFBUUFBQnIwSUFBQUJBQUFHc1Fn
QUFBRUFBQWFsQ0FBQUFRQUFCcGtJQUFBQkFBQUdqUWdBCkFBRUFBQWFCQ0FBQUFRQUFCblVJQUFB
QkFBQUdZQWdBQUFFQUFBWlVDQUFBQVFBQUJrZ0lBQUFCQUFBR1BBZ0FBQUVBQUFZd0NBQUEKQVFB
QUJpUUlBQUFCQUFBR0dBZ0FBQUVBQUFZTUNBQUFBUUFBQmdBSUFBQUJBQUFHNndjQUFBRUFBQWJm
QndBQUFRQUFCdE1IQUFBQgpBQUFHeHdjQUFBRUFBQWE3QndBQUFRQUFCcThIQUFBQkFBQUdvd2NB
QUFFQUFBYVhCd0FBQVFBQUJvc0hBQUFCQUFBR2RnY0FBQUVBCkFBWnFCd0FBQVFBQUJsNEhBQUFC
QUFBR1VnY0FBQUVBQUFaR0J3QUFBUUFBQmpvSEFBQUJBQUFHTGdjQUFBRUFBQVlpQndBQUFRQUEK
QmcwSEFBQUJBQUFHQVFjQUFBRUFBQWIxQmdBQUFRQUFCdWtHQUFBQkFBQUczUVlBQUFFQUFBYlJC
Z0FBQVFBQUJzVUdBQUFCQUFBRwpzQVlBQUFFQUFBYWtCZ0FBQVFBQUJwZ0dBQUFCQUFBR2pBWUFB
QUVBQUFhQUJnQUFBUUFBQm5RR0FBQUJBQUFHYUFZQUFBRUFBQVpjCkJnQUFBUUFBQmxBR0FBQUJB
QUFHUkFZQUFBRUFBQVk0QmdBQUFRQUFCaU1HQUFBQkFBQUdEZ1lBQUFFQUFBYjVCUUFBQVFBQUJ1
UUYKQUFBQkFBQUd6d1VBQUFFQUFBYTZCUUFBQVFBQUJxVUZBQUFCQUFBR2tBVUFBQUVBQUFaN0JR
QUFBUUFBQm1ZRkFBQUJBQUFHVVFVQQpBQUVBQUFZOEJRQUFBUUFBQmljRkFBQUJBQUFHRWdVQUFB
RUFBQWI5QkFBQUFRQUFCdWdFQUFBQkFBQUcwd1FBQUFFQUFBYStCQUFBCkFRQUFCcWtFQUFBQkFB
QUdsQVFBQUFFQUFBWi9CQUFBQVFBQUJtb0VBQUFCQUFBR1ZRUUFBQUVBQUFaSkJBQUFBUUFBQmow
RUFBQUIKQUFBR01RUUFBQUVBQUFZbEJBQUFBUUFBQmhrRUFBQUJBQUFHQkFRQUFBRUFBQWI0QXdB
QUFRQUFCdXdEQUFBQkFBQUc0QU1BQUFFQQpBQWJMQXdBQUFRQUFCcjhEQUFBQkFBQUdzd01BQUFF
QUFBYWVBd0FBQVFBQUJwSURBQUFCQUFBR2hnTUFBQUVBQUFaNkF3QUFBUUFBCkJtNERBQUFCQUFB
R1lnTUFBQUVBQUFaV0F3QUFBUUFBQmtvREFBQUJBQUFHUGdNQUFBRUFBQVl5QXdBQUFRQUFCaVlE
QUFBQkFBQUcKR2dNQUFBRUFBQVlPQXdBQUFRQUFCZ0lEQUFBQkFBQUc5Z0lBQUFFQUFBYnFBZ0FB
QVFBQUJ0NENBQUFCQUFBRzBnSUFBQUVBQUFiRwpBZ0FBQVFBQUJyb0NBQUFCQUFBR3JnSUFBQUVB
QUFhaUFnQUFBUUFBQnBZQ0FBQUJBQUFHaWdJQUFBRUFBQVorQWdBQUFRQUFCbWtDCkFBQUJBQUFH
WFFJQUFBRUFBQVpSQWdBQUFRQUFCa1VDQUFBQkFBQUdPUUlBQUFFQUFBWXRBZ0FBQVFBQUJpRUNB
QUFCQUFBR0ZRSUEKQUFFQUFBWUpBZ0FBQVFBQUJ2MEJBQUFCQUFBRzhRRUFBQUVBQUFibEFRQUFB
UUFBQnRrQkFBQUJBQUFHelFFQUFBRUFBQWJCQVFBQQpBUUFBQnJVQkFBQUJBQUFHcVFFQUFBRUFB
QWFkQVFBQUFRQUFCcEVCQUFBQkFBQUdoUUVBQUFFQUFBWjVBUUFBQVFBQUJtMEJBQUFCCkFBQUdZ
UUVBQUFFQUFBWlZBUUFBQVFBQUJra0JBQUFCQUFBR05BRUFBQUVBQUFZb0FRQUFBUUFBQmh3QkFB
QUJBQUFHRUFFQUFBRUEKQUFZRUFRQUFBUUFBQnZnQUFBQUJBQUFHN0FBQUFBRUFBQWJnQUFBQUFR
QUFCdFFBQUFBQkFBQUd5QUFBQUFFQUFBYThBQUFBQVFBQQpCckFBQUFBQkFBQUdwQUFBQUFFQUFB
YVlBQUFBQVFBQUJvd0FBQUFCQUFBR2dBQUFBQUVBQUFaMEFBQUFBUUFBQm1nQUFBQUJBQUFHClhB
QUFBQUVBQUFaUUFBQUFBUUFBQmtRQUFBQUJBQUFHT0FBQUFBRUFBQVlzQUFBQUFRQUFCaUFBQUFB
QkFBQUdGQUFBQUFFQUFBWVkKREFBQUV3QUFWQmdNQUFBVEFBQUVGQXdBQUJNQUFGUVVEQUFBRXdB
QUJCQU1BQUFUQUFCVUVBd0FBQk1BQUFRTURBQUFFd0FBVkF3TQpBQUFUQUFBRUNBd0FBQk1BQUZR
SURBQUFFd0FBQkFRTUFBQVRBQUJVQkF3QUFCTUFBQVFBREFBQUV3QUFWQUFNQUFBVEFBQUUvQXNB
CkFCTUFBRlQ4Q3dBQUV3QUFCUGdMQUFBVEFBQlUrQXNBQUJNQUFBVDBDd0FBRXdBQVZQUUxBQUFU
QUFBRThBc0FBQk1BQUZUd0N3QUEKRXdBQUJPd0xBQUFUQUFCVTdBc0FBQk1BQUFUb0N3QUFFd0FB
Vk9nTEFBQVRBQUFFNUFzQUFCTUFBRlRrQ3dBQUV3QUFCT0FMQUFBVApBQUJVNEFzQUFCTUFBQVRj
Q3dBQUV3QUFWTndMQUFBVEFBQUUyQXNBQUJNQUFGVFlDd0FBRXdBQUJOUUxBQUFUQUFCVTFBc0FB
Qk1BCkFBVFFDd0FBRXdBQVZOQUxBQUFUQUFBRXpBc0FBQk1BQUZUTUN3QUFFd0FBQk1nTEFBQVRB
QUJVeUFzQUFCTUFBQVRFQ3dBQUV3QUEKVk1RTEFBQVRBQUFFd0FzQUFCTUFBRlRBQ3dBQUV3QUFC
THdMQUFBVEFBQlV2QXNBQUJNQUFBUzRDd0FBRXdBQVZMZ0xBQUFUQUFBRQp0QXNBQUJNQUFGUzBD
d0FBRXdBQUJMQUxBQUFUQUFCVXNBc0FBQk1BQUFTc0N3QUFFd0FBVkt3TEFBQVRBQUFFcUFzQUFC
TUFBRlNvCkN3QUFFd0FBQktRTEFBQVRBQUJVcEFzQUFCTUFBQVNnQ3dBQUV3QUFWS0FMQUFBVEFB
QUVuQXNBQUJNQUFGU2NDd0FBRXdBQUJKZ0wKQUFBVEFBQlVtQXNBQUJNQUFBU1VDd0FBRXdBQVZK
UUxBQUFUQUFBRWtBc0FBQk1BQUZTUUN3QUFFd0FBQkl3TEFBQVRBQUJVakFzQQpBQk1BQUFTSUN3
QUFFd0FBVklnTEFBQVRBQUFFaEFzQUFCTUFBRlNFQ3dBQUV3QUFCSUFMQUFBVEFBQlVnQXNBQUJN
QUFBUjhDd0FBCkV3QUFWSHdMQUFBVEFBQUVlQXNBQUJNQUFGUjRDd0FBRXdBQUJIUUxBQUFUQUFC
VWRBc0FBQk1BQUFSd0N3QUFFd0FBVkhBTEFBQVQKQUFBRWJBc0FBQk1BQUZSc0N3QUFFd0FBQkdn
TEFBQVRBQUJVYUFzQUFCTUFBQVJrQ3dBQUV3QUFWR1FMQUFBVEFBQUVZQXNBQUJNQQpBRlJnQ3dB
QUV3QUFCRndMQUFBVEFBQlVYQXNBQUJNQUFBUllDd0FBRXdBQVZGZ0xBQUFUQUFBRVZBc0FBQk1B
QUZSVUN3QUFFd0FBCkJGQUxBQUFUQUFCVVVBc0FBQk1BQUFSTUN3QUFFd0FBVkV3TEFBQVRBQUFF
U0FzQUFCTUFBRlJJQ3dBQUV3QUFCRVFMQUFBVEFBQlUKUkFzQUFCTUFBQVJBQ3dBQUV3QUFWRUFM
QUFBVEFBQUVQQXNBQUJNQUFGUThDd0FBRXdBQUJEZ0xBQUFUQUFCVU9Bc0FBQk1BQUFRMApDd0FB
RXdBQVZEUUxBQUFUQUFBRU1Bc0FBQk1BQUZRd0N3QUFFd0FBQkN3TEFBQVRBQUJVTEFzQUFCTUFB
QVFvQ3dBQUV3QUFWQ2dMCkFBQVRBQUFFSkFzQUFCTUFBRlFrQ3dBQUV3QUFCQ0FMQUFBVEFBQlVJ
QXNBQUJNQUFBUWNDd0FBRXdBQVZCd0xBQUFUQUFBRUdBc0EKQUJNQUFGUVlDd0FBRXdBQUJCUUxB
QUFUQUFCVUZBc0FBQk1BQUFRUUN3QUFFd0FBVkJBTEFBQVRBQUFFREFzQUFCTUFBRlFNQ3dBQQpF
d0FBQkFnTEFBQVRBQUJVQ0FzQUFCTUFBQVFFQ3dBQUV3QUFWQVFMQUFBVEFBQUVBQXNBQUJNQUFG
UUFDd0FBRXdBQUJQd0tBQUFUCkFBQlUvQW9BQUJNQUFBVDRDZ0FBRXdBQVZQZ0tBQUFUQUFBRTlB
b0FBQk1BQUZUMENnQUFFd0FBQlBBS0FBQVRBQUJVOEFvQUFCTUEKQUFUc0NnQUFFd0FBVk93S0FB
QVRBQUFFNkFvQUFCTUFBRlRvQ2dBQUV3QUFCT1FLQUFBVEFBQlU1QW9BQUJNQUFBVGdDZ0FBRXdB
QQpWT0FLQUFBVEFBQUUzQW9BQUJNQUFGVGNDZ0FBRXdBQUJOZ0tBQUFUQUFCVTJBb0FBQk1BQUFU
VUNnQUFFd0FBVk5RS0FBQVRBQUFFCjBBb0FBQk1BQUZUUUNnQUFFd0FBQk13S0FBQVRBQUJVekFv
QUFCTUFBQVRJQ2dBQUV3QUFWTWdLQUFBVEFBQUV4QW9BQUJNQUFGVEUKQ2dBQUV3QUFCTUFLQUFB
VEFBQlV3QW9BQUJNQUFBUzhDZ0FBRXdBQVZMd0tBQUFUQUFBRXVBb0FBQk1BQUZTNENnQUFFd0FB
QkxRSwpBQUFUQUFCVXRBb0FBQk1BQUFTd0NnQUFFd0FBVkxBS0FBQVRBQUFFckFvQUFCTUFBRlNz
Q2dBQUV3QUFCS2dLQUFBVEFBQlVxQW9BCkFCTUFBQVNrQ2dBQUV3QUFWS1FLQUFBVEFBQUVvQW9B
QUJNQUFGU2dDZ0FBRXdBQUJKd0tBQUFUQUFCVW5Bb0FBQk1BQUFTWUNnQUEKRXdBQVZKZ0tBQUFU
QUFBRWxBb0FBQk1BQUZTVUNnQUFFd0FBQkpBS0FBQVRBQUJVa0FvQUFCTUFBQVNNQ2dBQUV3QUFW
SXdLQUFBVApBQUFFaUFvQUFCTUFBRlNJQ2dBQUV3QUFCSVFLQUFBVEFBQlVoQW9BQUJNQUFBU0FD
Z0FBRXdBQVZJQUtBQUFUQUFBRWZBb0FBQk1BCkFGUjhDZ0FBRXdBQUJIZ0tBQUFUQUFCVWVBb0FB
Qk1BQUFSMENnQUFFd0FBVkhRS0FBQVRBQUFFY0FvQUFCTUFBRlJ3Q2dBQUV3QUEKQkd3S0FBQVRB
QUJVYkFvQUFCTUFBQVJvQ2dBQUV3QUFWR2dLQUFBVEFBQUVaQW9BQUJNQUFGUmtDZ0FBRXdBQUJH
QUtBQUFUQUFCVQpZQW9BQUJNQUFBUmNDZ0FBRXdBQVZGd0tBQUFUQUFBRVdBb0FBQk1BQUZSWUNn
QUFFd0FBQkZRS0FBQVRBQUJVVkFvQUFCTUFBQVJRCkNnQUFFd0FBVkZBS0FBQVRBQUFFVEFvQUFC
TUFBRlJNQ2dBQUV3QUFCRWdLQUFBVEFBQlVTQW9BQUJNQUFBUkVDZ0FBRXdBQVZFUUsKQUFBVEFB
QUVRQW9BQUJNQUFGUkFDZ0FBRXdBQUJEd0tBQUFUQUFCVVBBb0FBQk1BQUFRNENnQUFFd0FBVkRn
S0FBQVRBQUFFTkFvQQpBQk1BQUZRMENnQUFFd0FBQkRBS0FBQVRBQUJVTUFvQUFCTUFBQVFzQ2dB
QUV3QUFWQ3dLQUFBVEFBQUVLQW9BQUJNQUFGUW9DZ0FBCkV3QUFCQ1FLQUFBVEFBQlVKQW9BQUJN
QUFBUWdDZ0FBRXdBQVZDQUtBQUFUQUFBRUhBb0FBQk1BQUZRY0NnQUFFd0FBQkJnS0FBQVQKQUFC
VUdBb0FBQk1BQUFRVUNnQUFFd0FBVkJRS0FBQVRBQUFFRUFvQUFCTUFBRlFRQ2dBQUV3QUFCQXdL
QUFBVEFBQlVEQW9BQUJNQQpBQVFJQ2dBQUV3QUFWQWdLQUFBVEFBQUVCQW9BQUJNQUFGUUVDZ0FB
RXdBQUJBQUtBQUFUQUFCVUFBb0FBQk1BQUFUOENRQUFFd0FBClZQd0pBQUFUQUFBRStBa0FBQk1B
QUZUNENRQUFFd0FBQlBRSkFBQVRBQUJVOUFrQUFCTUFBQVR3Q1FBQUV3QUFWUEFKQUFBVEFBQUUK
N0FrQUFCTUFBRlRzQ1FBQUV3QUFCT2dKQUFBVEFBQlU2QWtBQUJNQUFBVGtDUUFBRXdBQVZPUUpB
QUFUQUFBRTRBa0FBQk1BQUZUZwpDUUFBRXdBQUJOd0pBQUFUQUFCVTNBa0FBQk1BQUFUWUNRQUFF
d0FBVk5nSkFBQVRBQUFFMUFrQUFCTUFBRlRVQ1FBQUV3QUFCTkFKCkFBQVRBQUJVMEFrQUFCTUFB
QVRNQ1FBQUV3QUFWTXdKQUFBVEFBQUV5QWtBQUJNQUFGVElDUUFBRXdBQUJNUUpBQUFUQUFCVXhB
a0EKQUJNQUFBVEFDUUFBRXdBQVZNQUpBQUFUQUFBRXZBa0FBQk1BQUZTOENRQUFFd0FBQkxnSkFB
QVRBQUJVdUFrQUFCTUFBQVMwQ1FBQQpFd0FBVkxRSkFBQVRBQUFFc0FrQUFCTUFBRlN3Q1FBQUV3
QUFCS3dKQUFBVEFBQlVyQWtBQUJNQUFBU29DUUFBRXdBQVZLZ0pBQUFUCkFBQUVwQWtBQUJNQUFG
U2tDUUFBRXdBQUJLQUpBQUFUQUFCVW9Ba0FBQk1BQUFTY0NRQUFFd0FBVkp3SkFBQVRBQUFFbUFr
QUFCTUEKQUZTWUNRQUFFd0FBQkpRSkFBQVRBQUJVbEFrQUFCTUFBQVNRQ1FBQUV3QUFWSkFKQUFB
VEFBQUVqQWtBQUJNQUFGU01DUUFBRXdBQQpCSWdKQUFBVEFBQlVpQWtBQUJNQUFBU0VDUUFBRXdB
QVZJUUpBQUFUQUFBRWdBa0FBQk1BQUZTQUNRQUFFd0FBQkh3SkFBQVRBQUJVCmZBa0FBQk1BQUFS
NENRQUFFd0FBVkhnSkFBQVRBQUFFZEFrQUFCTUFBRlIwQ1FBQUV3QUFCSEFKQUFBVEFBQlVjQWtB
QUJNQUFBUnMKQ1FBQUV3QUFWR3dKQUFBVEFBQUVhQWtBQUJNQUFGUm9DUUFBRXdBQUJHUUpBQUFU
QUFCVVpBa0FBQk1BQUFSZ0NRQUFFd0FBVkdBSgpBQUFUQUFBRVhBa0FBQk1BQUZSY0NRQUFFd0FB
QkZnSkFBQVRBQUJVV0FrQUFCTUFBQVJVQ1FBQUV3QUFWRlFKQUFBVEFBQUVVQWtBCkFCTUFBRlJR
Q1FBQUV3QUFCRXdKQUFBVEFBQlVUQWtBQUJNQUFBUklDUUFBRXdBQVZFZ0pBQUFUQUFBRVJBa0FB
Qk1BQUZSRUNRQUEKRXdBQUJFQUpBQUFUQUFCVVFBa0FBQk1BQUFROENRQUFFd0FBVkR3SkFBQVRB
QUFFT0FrQUFCTUFBRlE0Q1FBQUV3QUFCRFFKQUFBVApBQUJVTkFrQUFCTUFBQVF3Q1FBQUV3QUFW
REFKQUFBVEFBQUVMQWtBQUJNQUFGUXNDUUFBRXdBQUJDZ0pBQUFUQUFCVUtBa0FBQk1BCkFBUWtD
UUFBRXdBQVZDUUpBQUFUQUFBRUlBa0FBQk1BQUZRZ0NRQUFFd0FBQkJ3SkFBQVRBQUJVSEFrQUFC
TUFBQVFZQ1FBQUV3QUEKVkJnSkFBQVRBQUFFRkFrQUFCTUFBRlFVQ1FBQUV3QUFCQkFKQUFBVEFB
QlVFQWtBQUJNQUFBUU1DUUFBRXdBQVZBd0pBQUFUQUFBRQpDQWtBQUJNQUFGUUlDUUFBRXdBQUJB
UUpBQUFUQUFCVUJBa0FBQk1BQUFRQUNRQUFFd0FBVkFBSkFBQVRBQUFFL0FnQUFCTUFBRlQ4CkNB
QUFFd0FBQlBnSUFBQVRBQUJVK0FnQUFCTUFBQVQwQ0FBQUV3QUFWUFFJQUFBVEFBQUU4QWdBQUJN
QUFGVHdDQUFBRXdBQUJPd0kKQUFBVEFBQlU3QWdBQUJNQUFBVG9DQUFBRXdBQVZPZ0lBQUFUQUFB
RTVBZ0FBQk1BQUZUa0NBQUFFd0FBQk9BSUFBQVRBQUJVNEFnQQpBQk1BQUFUY0NBQUFFd0FBVk53
SUFBQVRBQUFFMkFnQUFCTUFBRlRZQ0FBQUV3QUFCTlFJQUFBVEFBQlUxQWdBQUJNQUFBVFFDQUFB
CkV3QUFWTkFJQUFBVEFBQUV6QWdBQUJNQUFGVE1DQUFBRXdBQUJNZ0lBQUFUQUFCVXlBZ0FBQk1B
QUFURUNBQUFFd0FBVk1RSUFBQVQKQUFBRXdBZ0FBQk1BQUZUQUNBQUFFd0FBQkx3SUFBQVRBQUJV
dkFnQUFCTUFBQVM0Q0FBQUV3QUFWTGdJQUFBVEFBQUV0QWdBQUJNQQpBRlMwQ0FBQUV3QUFCTEFJ
QUFBVEFBQlVzQWdBQUJNQUFBU3NDQUFBRXdBQVZLd0lBQUFUQUFBRXFBZ0FBQk1BQUZTb0NBQUFF
d0FBCkJLUUlBQUFUQUFCVXBBZ0FBQk1BQUFTZ0NBQUFFd0FBVktBSUFBQVRBQUFFbkFnQUFCTUFB
RlNjQ0FBQUV3QUFCSmdJQUFBVEFBQlUKbUFnQUFCTUFBQVNVQ0FBQUV3QUFWSlFJQUFBVEFBQUVr
QWdBQUJNQUFGU1FDQUFBRXdBQUJJd0lBQUFUQUFCVWpBZ0FBQk1BQUFTSQpDQUFBRXdBQVZJZ0lB
QUFUQUFBRWhBZ0FBQk1BQUZTRUNBQUFFd0FBQklBSUFBQVRBQUJVZ0FnQUFCTUFBQVI4Q0FBQUV3
QUFWSHdJCkFBQVRBQUFFZUFnQUFCTUFBRlI0Q0FBQUV3QUFCSFFJQUFBVEFBQlVkQWdBQUJNQUFB
UndDQUFBRXdBQVZIQUlBQUFUQUFBRWJBZ0EKQUJNQUFGUnNDQUFBRXdBQUJHZ0lBQUFUQUFCVWFB
Z0FBQk1BQUFSa0NBQUFFd0FBVkdRSUFBQVRBQUFFWUFnQUFCTUFBRlJnQ0FBQQpFd0FBQkZ3SUFB
QVRBQUJVWEFnQUFCTUFBQVJZQ0FBQUV3QUFWRmdJQUFBVEFBQUVWQWdBQUJNQUFGUlVDQUFBRXdB
QUJGQUlBQUFUCkFBQlVVQWdBQUJNQUFBUk1DQUFBRXdBQVZFd0lBQUFUQUFBRVNBZ0FBQk1BQUZS
SUNBQUFFd0FBQkVRSUFBQVRBQUJVUkFnQUFCTUEKQUFSQUNBQUFFd0FBVkVBSUFBQVRBQUFFUEFn
QUFCTUFBRlE4Q0FBQUV3QUFCRGdJQUFBVEFBQlVPQWdBQUJNQUFBUTBDQUFBRXdBQQpWRFFJQUFB
VEFBQUVNQWdBQUJNQUFGUXdDQUFBRXdBQUJDd0lBQUFUQUFCVUxBZ0FBQk1BQUFRb0NBQUFFd0FB
VkNnSUFBQVRBQUFFCkpBZ0FBQk1BQUZRa0NBQUFFd0FBQkNBSUFBQVRBQUJVSUFnQUFCTUFBQVFj
Q0FBQUV3QUFWQndJQUFBVEFBQUVHQWdBQUJNQUFGUVkKQ0FBQUV3QUFCQlFJQUFBVEFBQlVGQWdB
QUJNQUFBUVFDQUFBRXdBQVZCQUlBQUFUQUFBRURBZ0FBQk1BQUZRTUNBQUFFd0FBQkFnSQpBQUFU
QUFCVUNBZ0FBQk1BQUFRRUNBQUFFd0FBVkFRSUFBQVRBQUFFQUFnQUFCTUFBRlFBQ0FBQUV3QUFC
UHdIQUFBVEFBQlUvQWNBCkFCTUFBQVQ0QndBQUV3QUFWUGdIQUFBVEFBQUU5QWNBQUJNQUFGVDBC
d0FBRXdBQUJQQUhBQUFUQUFCVThBY0FBQk1BQUFUc0J3QUEKRXdBQVZPd0hBQUFUQUFBRTZBY0FB
Qk1BQUZUb0J3QUFFd0FBQk9RSEFBQVRBQUJVNUFjQUFCTUFBQVRnQndBQUV3QUFWT0FIQUFBVApB
QUFFM0FjQUFCTUFBRlRjQndBQUV3QUFCTmdIQUFBVEFBQlUyQWNBQUJNQUFBVFVCd0FBRXdBQVZO
UUhBQUFUQUFBRTBBY0FBQk1BCkFGVFFCd0FBRXdBQUJNd0hBQUFUQUFCVXpBY0FBQk1BQUFUSUJ3
QUFFd0FBVk1nSEFBQVRBQUFFeEFjQUFCTUFBRlRFQndBQUV3QUEKQk1BSEFBQVRBQUJVd0FjQUFC
TUFBQVM4QndBQUV3QUFWTHdIQUFBVEFBQUV1QWNBQUJNQUFGUzRCd0FBRXdBQUJMUUhBQUFUQUFC
VQp0QWNBQUJNQUFBU3dCd0FBRXdBQVZMQUhBQUFUQUFBRXJBY0FBQk1BQUZTc0J3QUFFd0FBQktn
SEFBQVRBQUJVcUFjQUFCTUFBQVNrCkJ3QUFFd0FBVktRSEFBQVRBQUFFb0FjQUFCTUFBRlNnQndB
QUV3QUFCSndIQUFBVEFBQlVuQWNBQUJNQUFBU1lCd0FBRXdBQVZKZ0gKQUFBVEFBQUVsQWNBQUJN
QUFGU1VCd0FBRXdBQUJKQUhBQUFUQUFCVWtBY0FBQk1BQUFTTUJ3QUFFd0FBVkl3SEFBQVRBQUFF
aUFjQQpBQk1BQUZTSUJ3QUFFd0FBQklRSEFBQVRBQUJVaEFjQUFCTUFBQVNBQndBQUV3QUFWSUFI
QUFBVEFBQUVmQWNBQUJNQUFGUjhCd0FBCkV3QUFCSGdIQUFBVEFBQlVlQWNBQUJNQUFBUjBCd0FB
RXdBQVZIUUhBQUFUQUFBRWNBY0FBQk1BQUZSd0J3QUFFd0FBQkd3SEFBQVQKQUFCVWJBY0FBQk1B
QUFSb0J3QUFFd0FBVkdnSEFBQVRBQUFFWkFjQUFCTUFBRlJrQndBQUV3QUFCR0FIQUFBVEFBQlVZ
QWNBQUJNQQpBQVJjQndBQUV3QUFWRndIQUFBVEFBQUVXQWNBQUJNQUFGUllCd0FBRXdBQUJGUUhB
QUFUQUFCVVZBY0FBQk1BQUFSUUJ3QUFFd0FBClZGQUhBQUFUQUFBRUtBQUFBQlVBQUZRb0FBQUFG
UUFBQkdnQ0FBQVdBQUJVYUFJQUFCWUFBQVJrQWdBQUZnQUFWR1FDQUFBV0FBQUUKWUFJQUFCWUFB
RlJnQWdBQUZnQUFCRndDQUFBV0FBQlVYQUlBQUJZQUFBUllBZ0FBRmdBQVZGZ0NBQUFXQUFBRVZB
SUFBQllBQUZSVQpBZ0FBRmdBQUJGQUNBQUFXQUFCVVVBSUFBQllBQUFSTUFnQUFGZ0FBVkV3Q0FB
QVdBQUFFU0FJQUFCWUFBRlJJQWdBQUZnQUFCRVFDCkFBQVdBQUJVUkFJQUFCWUFBQVJBQWdBQUZn
QUFWRUFDQUFBV0FBQUVQQUlBQUJZQUFGUThBZ0FBRmdBQUJEZ0NBQUFXQUFCVU9BSUEKQUJZQUFB
UTBBZ0FBRmdBQVZEUUNBQUFXQUFBRU1BSUFBQllBQUZRd0FnQUFGZ0FBQkN3Q0FBQVdBQUJVTEFJ
QUFCWUFBQVFvQWdBQQpGZ0FBVkNnQ0FBQVdBQUFFSkFJQUFCWUFBRlFrQWdBQUZnQUFCQ0FDQUFB
V0FBQlVJQUlBQUJZQUFBUWNBZ0FBRmdBQVZCd0NBQUFXCkFBQUVHQUlBQUJZQUFGUVlBZ0FBRmdB
QUJCUUNBQUFXQUFCVUZBSUFBQllBQUFRUUFnQUFGZ0FBVkJBQ0FBQVdBQUFFREFJQUFCWUEKQUZR
TUFnQUFGZ0FBQkFnQ0FBQVdBQUJVQ0FJQUFCWUFBQVFFQWdBQUZnQUFWQVFDQUFBV0FBQUVBQUlB
QUJZQUFGUUFBZ0FBRmdBQQpCUHdCQUFBV0FBQlUvQUVBQUJZQUFBVDRBUUFBRmdBQVZQZ0JBQUFX
QUFBRTlBRUFBQllBQUZUMEFRQUFGZ0FBQlBBQkFBQVdBQUJVCjhBRUFBQllBQUFUc0FRQUFGZ0FB
Vk93QkFBQVdBQUFFNkFFQUFCWUFBRlRvQVFBQUZnQUFCT1FCQUFBV0FBQlU1QUVBQUJZQUFBVGcK
QVFBQUZnQUFWT0FCQUFBV0FBQUUzQUVBQUJZQUFGVGNBUUFBRmdBQUJOZ0JBQUFXQUFCVTJBRUFB
QllBQUFUVUFRQUFGZ0FBVk5RQgpBQUFXQUFBRTBBRUFBQllBQUZUUUFRQUFGZ0FBQk13QkFBQVdB
QUJVekFFQUFCWUFBQVRJQVFBQUZnQUFWTWdCQUFBV0FBQUV4QUVBCkFCWUFBRlRFQVFBQUZnQUFC
TUFCQUFBV0FBQlV3QUVBQUJZQUFBUzhBUUFBRmdBQVZMd0JBQUFXQUFBRXVBRUFBQllBQUZTNEFR
QUEKRmdBQUJMUUJBQUFXQUFCVXRBRUFBQllBQUFTd0FRQUFGZ0FBVkxBQkFBQVdBQUFFckFFQUFC
WUFBRlNzQVFBQUZnQUFCS2dCQUFBVwpBQUJVcUFFQUFCWUFBQVNrQVFBQUZnQUFWS1FCQUFBV0FB
QUVvQUVBQUJZQUFGU2dBUUFBRmdBQUJKd0JBQUFXQUFCVW5BRUFBQllBCkFBU1lBUUFBRmdBQVZK
Z0JBQUFXQUFBRWxBRUFBQllBQUZTVUFRQUFGZ0FBQkpBQkFBQVdBQUJVa0FFQUFCWUFBQVNNQVFB
QUZnQUEKVkl3QkFBQVdBQUFFaUFFQUFCWUFBRlNJQVFBQUZnQUFCSVFCQUFBV0FBQlVoQUVBQUJZ
QUFBUmdDZ0FBQVFBQUJrQUtBQUFFQUFBRwpJQW9BQUFRQUFBWUFDZ0FBQkFBQUJ1QUpBQUFFQUFB
R3dBa0FBQVFBQUFhZ0NRQUFCQUFBQm9BSkFBQUVBQUFHWUFrQUFBUUFBQVpBCkNRQUFCQUFBQmlB
SkFBQUVBQUFHQUFrQUFBUUFBQWJnQ0FBQUJBQUFCc0FJQUFBRUFBQUdvQWdBQUFRQUFBYUFDQUFB
QkFBQUJtQUkKQUFBRUFBQUdRQWdBQUFRQUFBWWdDQUFBQkFBQUJnQUlBQUFFQUFBRzRBY0FBQVFB
QUFiQUJ3QUFCQUFBQnFBSEFBQUVBQUFHZ0FjQQpBQVFBQUFaZ0J3QUFCQUFBQmtBSEFBQUVBQUFH
SUFjQUFBUUFBQVlBQndBQUJBQUFCdUFHQUFBRUFBQUd3QVlBQUFRQUFBYWdCZ0FBCkJBQUFCb0FH
QUFBQkFBQUdZQVlBQUFFQUFBWkFCZ0FBQVFBQUJpQUdBQUFCQUFBR0FBWUFBQUVBQUFiZ0JRQUFB
UUFBQnNBRkFBQUIKQUFBR29BVUFBQUVBQUFhQUJRQUFBUUFBQm1BRkFBQUJBQUFHUUFVQUFBRUFB
QVlnQlFBQUFRQUFCZ0FGQUFBQkFBQUc0QVFBQUFFQQpBQWJBQkFBQUFRQUFCcUFFQUFBQkFBQUdn
QVFBQUFFQUFBWmdCQUFBQVFBQUJrQUVBQUFCQUFBR0lBUUFBQUVBQUFZQUJBQUFBUUFBCkJ1QURB
QUFCQUFBR3dBTUFBQUVBQUFhZ0F3QUFBUUFBQm9BREFBQUJBQUFHWUFNQUFBRUFBQVpBQXdBQUFR
QUFCaUFEQUFBQkFBQUcKQUFNQUFBRUFBQWJnQWdBQUFRQUFCc0FDQUFBQkFBQUdvQUlBQUFFQUFB
YUFBZ0FBQVFBQUJtQUNBQUFCQUFBR1FBSUFBQUVBQUFZZwpBZ0FBQVFBQUJnQUNBQUFCQUFBRzRB
RUFBQUVBQUFiQUFRQUFBUUFBQnFBQkFBQUJBQUFHZ0FFQUFBRUFBQVpnQVFBQUFRQUFCa0FCCkFB
QUJBQUFHSUFFQUFBRUFBQVlBQVFBQUFRQUFCdUFBQUFBQkFBQUd3QUFBQUFFQUFBYWdBQUFBQVFB
QUJvQUFBQUFCQUFBR1lBQUEKQUFFQUFBWkFBQUFBQVFBQUJpQUFBQUFCQUFBR0FBQUFBQUVBQUFZ
VkxBQUFEZ1lBQU5qWkFnQUFBQUFBV3l3QUFBNEdBQURRMlFJQQpBQUFBQUo4c0FBQU9CZ0FBNk5r
Q0FBQUFBQURqTEFBQURnWUFBT0RaQWdBQUFBQUFKUzBBQUE0R0FBQ0kzUUlBQUFBQUFGY3RBQUFP
CkJnQUFnTjBDQUFBQUFBQ0hMUUFBRGdZQUFIRGRBZ0FBQUFBQXRDMEFBQTRHQUFCbzNRSUFBQUFB
QU44dEFBQU9CZ0FBK053Q0FBQUEKQUFBTkxnQUFEZ1lBQVBEY0FnQUFBQUFBT1M0QUFBNEdBQUJZ
M1FJQUFBQUFBR2N1QUFBT0JnQUFVTjBDQUFBQUFBQ1RMZ0FBRGdZQQpBQ2pkQWdBQUFBQUF2QzRB
QUE0R0FBQWczUUlBQUFBQUFPTXVBQUFPQmdBQW1Od0NBQUFBQUFBS0x3QUFEZ1lBQUpEY0FnQUFB
QUFBCkx5OEFBQTRHQUFDQTNBSUFBQUFBQUZVdkFBQU9CZ0FBZU53Q0FBQUFBQUI1THdBQURnWUFB
TERjQWdBQUFBQUFvUzhBQUE0R0FBQ28KM0FJQUFBQUFBTWN2QUFBT0JnQUF5TndDQUFBQUFBRDBM
d0FBRGdZQUFNRGNBZ0FBQUFBQUh6QUFBQTRHQUFCQTNRSUFBQUFBQUV3dwpBQUFPQmdBQU9OMENB
QUFBQUFCM01BQUFEZ1lBQUJEZEFnQUFBQUFBb1RBQUFBNEdBQUFJM1FJQUFBQUFBTWt3QUFBT0Jn
QUE0TndDCkFBQUFBQUQyTUFBQURnWUFBTmpjQWdBQUFBQUFJVEVBQUE0R0FBQjQzUUlBQUFBQUFG
SXhBQUFPQXdBQW9Pc0FBQUFBQUFCK01RQUEKRGdFQUFCQnRBQUFBQUFBQXRqRUFBQTRHQUFBQTNR
SUFBQUFBQU9neEFBQU9Bd0FBUUxNQUFBQUFBQUFWTWdBQURnWUFBR0RkQWdBQQpBQUFBUnpJQUFB
NERBQUNRNGdBQUFBQUFBSFF5QUFBT0JnQUFNTjBDQUFBQUFBQ2hNZ0FBRGdNQUFBRExBQUFBQUFB
QXlUSUFBQTRHCkFBQ2czQUlBQUFBQUFQUXlBQUFPQXdBQUFJUUFBQUFBQUFBYU13QUFEZ1lBQUlq
Y0FnQUFBQUFBUkRNQUFBNERBQUJ3ZEFBQUFBQUEKQUdrekFBQU9CZ0FBdU53Q0FBQUFBQUNWTXdB
QURnTUFBSUNUQUFBQUFBQUF2RE1BQUE0R0FBRFEzQUlBQUFBQUFPMHpBQUFPQXdBQQpZSnNBQUFB
QUFBQVpOQUFBRGdZQUFFamRBZ0FBQUFBQVNqUUFBQTREQUFCdzJnQUFBQUFBQUhZMEFBQU9CZ0FB
R04wQ0FBQUFBQUNrCk5BQUFEZ01BQUlDN0FBQUFBQUFBelRRQUFBNEdBQURvM0FJQUFBQUFBUDQw
QUFBT0F3QUFBS3NBQUFBQUFBQXFOUUFBRGdZQUFQaloKQWdBQUFBQUFlalVBQUE0R0FBRHcyUUlB
QUFBQUFNZzFBQUFPQmdBQUNOb0NBQUFBQUFBY05nQUFEZ1lBQUFEYUFnQUFBQUFBYmpZQQpBQTRH
QUFBWTJnSUFBQUFBQU1BMkFBQU9CZ0FBY053Q0FBQUFBQUQzTmdBQURnWUFBR2pjQWdBQUFBQUFM
RGNBQUE0SEFBQUFTQUVBCkFBQUFBSGszQUFBT0JnQUFFTm9DQUFBQUFBREpOd0FBRGdFQUFNQUpB
QUFBQUFBQUlUZ0FBQTRHQUFCZzNBSUFBQUFBQUdFNEFBQU8KQmdBQVdOd0NBQUFBQUFDZk9BQUFE
Z0VBQUVBZ0FBQUFBQUFBMWpnQUFBNEJBQUNRR2dBQUFBQUFBUDg0QUFBT0JnQUFLTm9DQUFBQQpB
QUJPT1FBQURnWUFBQ0RhQWdBQUFBQUFtemtBQUE0QkFBQVFIQUFBQUFBQUFOYzVBQUFPQmdBQVVO
d0NBQUFBQUFBSU9nQUFEZ1lBCkFEamFBZ0FBQUFBQVhqb0FBQTRHQUFBdzJnSUFBQUFBQUxJNkFB
QU9CZ0FBU05vQ0FBQUFBQUFKT3dBQURnY0FBQ0JJQVFBQUFBQUEKWURzQUFBNEdBQUJBMmdJQUFB
QUFBTFU3QUFBT0JnQUFXTm9DQUFBQUFBQVFQQUFBRGdZQUFGRGFBZ0FBQUFBQWFUd0FBQTRHQUFC
bwoyZ0lBQUFBQUFNUThBQUFPQndBQVFFZ0JBQUFBQUFBZlBRQUFEZ1lBQUdEYUFnQUFBQUFBZUQw
QUFBNEdBQUI0MmdJQUFBQUFBTk05CkFBQU9CZ0FBY05vQ0FBQUFBQUFzUGdBQURnWUFBSWphQWdB
QUFBQUFoejRBQUE0R0FBQ0EyZ0lBQUFBQUFPQStBQUFPQmdBQW1Ob0MKQUFBQUFBQkpQd0FBRGdj
QUFHQklBUUFBQUFBQXJqOEFBQTRHQUFDUTJnSUFBQUFBQUJWQUFBQU9CZ0FBcU5vQ0FBQUFBQUI5
UUFBQQpEZ2NBQUlCSUFRQUFBQUFBNFVBQUFBNEdBQUNnMmdJQUFBQUFBRWRCQUFBT0JnQUF1Tm9D
QUFBQUFBQ3ZRUUFBRGdZQUFMRGFBZ0FBCkFBQUFGVUlBQUE0R0FBREkyZ0lBQUFBQUFIWkNBQUFP
QmdBQXdOb0NBQUFBQUFEVlFnQUFEZ0VBQUpCQkFBQUFBQUFBQmtNQUFBNEcKQUFEWTJnSUFBQUFB
QUdaREFBQU9Cd0FBb0VnQkFBQUFBQUMzUXdBQURnWUFBTkRhQWdBQUFBQUFGVVFBQUE0R0FBRG8y
Z0lBQUFBQQpBRzVFQUFBT0JnQUE0Tm9DQUFBQUFBREZSQUFBRGdZQUFQamFBZ0FBQUFBQUZFVUFB
QTRHQUFEdzJnSUFBQUFBQUdGRkFBQU9CZ0FBCkNOc0NBQUFBQUFDL1JRQUFEZ2NBQU1CSUFRQUFB
QUFBRGtZQUFBNEdBQUFBMndJQUFBQUFBR3BHQUFBT0JnQUFHTnNDQUFBQUFBREUKUmdBQURnWUFB
QkRiQWdBQUFBQUFIRWNBQUE0QkFBQndVQUFBQUFBQUFHSkhBQUFPQmdBQUtOc0NBQUFBQUFESlJ3
QUFEZ2NBQVBCSQpBUUFBQUFBQUxFZ0FBQTRHQUFBZzJ3SUFBQUFBQUpGSUFBQU9CZ0FBT05zQ0FB
QUFBQUQzU0FBQURnY0FBQkJKQVFBQUFBQUFXVWtBCkFBNEdBQUF3MndJQUFBQUFBTDFKQUFBT0Jn
QUFTTnNDQUFBQUFBQWpTZ0FBRGdZQUFFRGJBZ0FBQUFBQWgwb0FBQTRHQUFCWTJ3SUEKQUFBQUFP
OUtBQUFPQmdBQVVOc0NBQUFBQUFCVlN3QUFEZ1lBQUdqYkFnQUFBQUFBdmtzQUFBNEhBQUF3U1FF
QUFBQUFBQjVNQUFBTwpCZ0FBWU5zQ0FBQUFBQUNGVEFBQURnWUFBSGpiQWdBQUFBQUE1VXdBQUE0
R0FBQncyd0lBQUFBQUFFTk5BQUFPQmdBQWlOc0NBQUFBCkFBQ2dUUUFBRGdjQUFGQkpBUUFBQUFB
QStVMEFBQTRHQUFDQTJ3SUFBQUFBQUZST0FBQU9CZ0FBbU5zQ0FBQUFBQUMxVGdBQURnWUEKQUpE
YkFnQUFBQUFBRkU4QUFBNEdBQUNvMndJQUFBQUFBR3RQQUFBT0JnQUFvTnNDQUFBQUFBREFUd0FB
RGdZQUFMamJBZ0FBQUFBQQpBbEFBQUE0R0FBQ3cyd0lBQUFBQUFFSlFBQUFPQmdBQXlOc0NBQUFB
QUFDRlVBQUFEZ1lBQU1EYkFnQUFBQUFBeGxBQUFBNEdBQUQ0CjJ3SUFBQUFBQUFoUkFBQU9CZ0FB
OE5zQ0FBQUFBQUJJVVFBQURnWUFBTmpiQWdBQUFBQUFoMUVBQUE0R0FBRFEyd0lBQUFBQUFNUlIK
QUFBT0JnQUE2TnNDQUFBQUFBQVBVZ0FBRGdZQUFPRGJBZ0FBQUFBQVdGSUFBQTRHQUFBSTNBSUFB
QUFBQUpKU0FBQU9CZ0FBQU53QwpBQUFBQUFES1VnQUFEZ1lBQUJqY0FnQUFBQUFBQ2xNQUFBNEdB
QUFRM0FJQUFBQUFBRWhUQUFBT0JnQUFLTndDQUFBQUFBQ1RVd0FBCkRnWUFBQ0RjQWdBQUFBQUEz
Rk1BQUE0R0FBQTQzQUlBQUFBQUFDWlVBQUFPQmdBQU1Od0NBQUFBQUFCdVZBQUFEZ1lBQUVqY0Fn
QUEKQUFBQXBsUUFBQTRHQUFCQTNBSUFBQUFBQU54VUFBQU9HQUFBK01zQ0FBQUFBQURtVkFBQURo
Z0FBTmpNQWdBQUFBQUFRVlVBQUE0WQpBQUNRelFJQUFBQUFBRzFWQUFBT0dBQUF1TTBDQUFBQUFB
Q3NWUUFBRGhnQUFPak5BZ0FBQUFBQTVsVUFBQTRZQUFEQTBBSUFBQUFBCkFCcFdBQUFPR0FBQXlO
RUNBQUFBQUFCalZnQUFEaGdBQUtEWkFnQUFBQUFBQmhnQUFCOEVnQURnUXdFQUFBQUFBRHdyQUFB
ZkdJQUEKQU5rQ0FBQUFBQUR0RndBQUh3U0FBTEJEQVFBQUFBQUFJQ3NBQUI4WWdBRFkyQUlBQUFB
QUFNMFhBQUFmQklBQW9FTUJBQUFBQUFEOQpLZ0FBSHhpQUFMRFlBZ0FBQUFBQXJSY0FBQjhFZ0FD
UVF3RUFBQUFBQU5vcUFBQWZHSUFBaU5nQ0FBQUFBQUN6QXdBQUh3RUFBTEFQCkFBQUFBQUFBakJ3
QUFCOFlBQUF3elFJQUFBQUFBRklEQUFBZkFRQUFvQThBQUFBQUFBQlFIQUFBSHhnQUFBak5BZ0FB
QUFBQW1RUUEKQUI4QkFBQlFFZ0FBQUFBQUFOVWNBQUFmR0FBQVlNMENBQUFBQUFCMkFBQUFId0VB
QUtBQUFBQUFBQUFBcGhzQUFCOFlBQUJnekFJQQpBQUFBQUFFQUFBQWZBUUFBQUFBQUFBQUFBQUJZ
R3dBQUh4Z0FBQkRNQWdBQUFBQUFVZ0FBQUI4QkFBQlFBQUFBQUFBQUFIOGJBQUFmCkdBQUFPTXdD
QUFBQUFBQ21Fd0FBSHdTQUFFQS9BUUFBQUFBQXV5WUFBQjhZZ0FBWTFRSUFBQUFBQUd3VEFBQWZC
SUFBRUQ4QkFBQUEKQUFDVUpnQUFIeGlBQVBEVUFnQUFBQUFBVFEwQUFCOEJBQUJRVFFBQUFBQUFB
TXNoQUFBZkdBQUFtTkVDQUFBQUFBQU1EZ0FBSHdFQQpBREJSQUFBQUFBQUFGQ0lBQUI4WUFBRHcw
UUlBQUFBQUFPUU1BQUFmQVFBQTBFd0FBQUFBQUFCOUlRQUFIeGdBQUVqUkFnQUFBQUFBCktRMEFB
QjhCQUFBUVRRQUFBQUFBQUtRaEFBQWZHQUFBY05FQ0FBQUFBQUF0RmdBQUh3U0FBUEJCQVFBQUFB
QUFRaWtBQUI4WWdBQkkKMXdJQUFBQUFBQWtXQUFBZkJJQUF3RUVCQUFBQUFBQWJLUUFBSHhpQUFD
RFhBZ0FBQUFBQTd3WUFBQjhCQUFEd0l3QUFBQUFBQUVRZApBQUFmR0FBQVFNNENBQUFBQUFDQkZB
QUFId1NBQUFCQUFRQUFBQUFBZUNjQUFCOFlnQUM0MVFJQUFBQUFBRnNVQUFBZkJJQUEwRDhCCkFB
QUFBQUJQSndBQUh4aUFBSkRWQWdBQUFBQUFZUXdBQUI4QkFBRGdRZ0FBQUFBQUFQUWdBQUFmR0FB
QTZOQUNBQUFBQUFDcERBQUEKSHdFQUFIQkxBQUFBQUFBQVB5RUFBQjhZQUFBWTBRSUFBQUFBQU1j
S0FBQWZBUUFBVURnQUFBQUFBQUFNSUFBQUh4Z0FBQmpRQWdBQQpBQUFBRUFzQUFCOEJBQUNRT0FB
QUFBQUFBRFVnQUFBZkdBQUFRTkFDQUFBQUFBRGpGUUFBSHdTQUFJQkJBUUFBQUFBQThpZ0FBQjhZ
CmdBRDQxZ0lBQUFBQUFMMFZBQUFmQklBQVVFRUJBQUFBQUFESktBQUFIeGlBQU5EV0FnQUFBQUFB
NlFjQUFCOEJBQUNnSndBQUFBQUEKQU9jZEFBQWZHQUFBd000Q0FBQUFBQUEwQ0FBQUh3RUFBRUF0
QUFBQUFBQUFOUjRBQUI4WUFBRHd6Z0lBQUFBQUFIRUhBQUFmQVFBQQpJQ2NBQUFBQUFBQ1BIUUFB
SHhnQUFIRE9BZ0FBQUFBQXdBY0FBQjhCQUFCZ0p3QUFBQUFBQUxzZEFBQWZHQUFBbU00Q0FBQUFB
QUFMCkZRQUFId1NBQUlCQUFRQUFBQUFBQ3lnQUFCOFlnQUF3MWdJQUFBQUFBT0lVQUFBZkJJQUFV
RUFCQUFBQUFBRGZKd0FBSHhpQUFBalcKQWdBQUFBQUFFeElBQUI4QkFBQkFZQUFBQUFBQUFLQWxB
QUFmR0FBQVFOUUNBQUFBQUFCakVnQUFId0VBQUpCbUFBQUFBQUFBOHlVQQpBQjhZQUFCdzFBSUFB
QUFBQUl3UkFBQWZBUUFBd0Y4QUFBQUFBQUErSlFBQUh4Z0FBUERUQWdBQUFBQUE1UkVBQUI4QkFB
QUFZQUFBCkFBQUFBRzhsQUFBZkdBQUFHTlFDQUFBQUFBQi9Gd0FBSHdTQUFGQkRBUUFBQUFBQXFT
b0FBQjhZZ0FCZzJBSUFBQUFBQUZFWEFBQWYKQklBQUlFTUJBQUFBQUFCNEtnQUFIeGlBQURqWUFn
QUFBQUFBVXc4QUFCOEJBQUFnVXdBQUFBQUFBRDBqQUFBZkdBQUF1TklDQUFBQQpBQURBRHdBQUh3
RUFBREJZQUFBQUFBQUFraU1BQUI4WUFBRG8wZ0lBQUFBQUFFVU9BQUFmQVFBQThGRUFBQUFBQUFC
UUlnQUFIeGdBCkFCalNBZ0FBQUFBQW9nNEFBQjhCQUFBUVVnQUFBQUFBQUlNaUFBQWZHQUFBUU5J
Q0FBQUFBQUNCRmdBQUh3U0FBR0JDQVFBQUFBQUEKbkNrQUFCOFlnQUNZMXdJQUFBQUFBRkVXQUFB
ZkJJQUFNRUlCQUFBQUFBQnBLUUFBSHhpQUFIRFhBZ0FBQUFBQW1Ra0FBQjhCQUFCQQpMd0FBQUFB
QUFHc2ZBQUFmR0FBQXVNOENBQUFBQUFCakNnQUFId0VBQUtBMUFBQUFBQUFBd2g4QUFCOFlBQURv
endJQUFBQUFBSElJCkFBQWZBUUFBQUM0QUFBQUFBQUIySGdBQUh4Z0FBQmpQQWdBQUFBQUEwd2dB
QUI4QkFBQkFMZ0FBQUFBQUFLc2VBQUFmR0FBQVFNOEMKQUFBQUFBQ0xGUUFBSHdTQUFCQkJBUUFB
QUFBQWxDZ0FBQjhZZ0FDbzFnSUFBQUFBQUZrVkFBQWZCSUFBNEVBQkFBQUFBQUJmS0FBQQpIeGlB
QUlEV0FnQUFBQUFBNnhBQUFCOEJBQUFRV3dBQUFBQUFBSmNrQUFBZkdBQUFrTk1DQUFBQUFBQkNF
UUFBSHdFQUFKQmRBQUFBCkFBQUE4U1FBQUI4WUFBREEwd0lBQUFBQUFBVVFBQUFmQVFBQXNGa0FB
QUFBQUFEYUl3QUFIeGdBQUJqVEFnQUFBQUFBYkJBQUFCOEIKQUFEd1dRQUFBQUFBQUJJa0FBQWZH
QUFBUU5NQ0FBQUFBQUFjRndBQUh3U0FBT0JDQVFBQUFBQUFRQ29BQUI4WWdBQVEyQUlBQUFBQQpB
T2NXQUFBZkJJQUFzRUlCQUFBQUFBQUlLZ0FBSHhpQUFPalhBZ0FBQUFBQVdSZ0FBQjhFZ0FCUVJB
RUFBQUFBQUpVckFBQWZHSUFBClVOa0NBQUFBQUFBZkdBQUFId1NBQUNCRUFRQUFBQUFBV0NzQUFC
OFlnQUFvMlFJQUFBQUFBRFFWQUFBZkJJQUF3RUFCQUFBQUFBQTMKS0FBQUh4aUFBRmpXQWdBQUFB
QUEzeE1BQUI4RWdBQ0FQd0VBQUFBQUFPSW1BQUFmR0lBQVFOVUNBQUFBQUFDbUVnQUFId0VBQU1C
bgpBQUFBQUFBQU9TWUFBQjhZQUFDZzFBSUFBQUFBQUVZVEFBQWZBUUFBb0d3QUFBQUFBQUJySmdB
QUh4Z0FBTWpVQWdBQUFBQUFvd1lBCkFCOEJBQUN3SXdBQUFBQUFBQkVkQUFBZkdBQUFHTTRDQUFB
QUFBQzhBQUFBSHdFQUFFQUJBQUFBQUFBQTFSc0FBQjhZQUFDSXpBSUEKQUFBQUFGd0JBQUFmQVFB
QWdBZ0FBQUFBQUFBSkhBQUFIeGdBQUxETUFnQUFBQUFBSWhRQUFCOEVnQURBUHdFQUFBQUFBQk1u
QUFBZgpHSUFBYU5VQ0FBQUFBQUNuRkFBQUh3U0FBRUJBQVFBQUFBQUFvU2NBQUI4WWdBRGcxUUlB
QUFBQUFEWUxBQUFmQVFBQTBEZ0FBQUFBCkFBQmVJQUFBSHhnQUFHalFBZ0FBQUFBQWVBc0FBQjhC
QUFDd09RQUFBQUFBQUtNZ0FBQWZHQUFBa05BQ0FBQUFBQUFYRHdBQUh3RUEKQU9CU0FBQUFBQUFB
L2lJQUFCOFlBQUNRMGdJQUFBQUFBTEVXQUFBZkJJQUFvRUlCQUFBQUFBRFBLUUFBSHhpQUFNRFhB
Z0FBQUFBQQowZzRBQUI4QkFBQXdVZ0FBQUFBQUFMWWlBQUFmR0FBQWFOSUNBQUFBQUFCYkNRQUFI
d0VBQUNBdkFBQUFBQUFBS2g4QUFCOFlBQUNRCnp3SUFBQUFBQUFVSkFBQWZBUUFBZ0M0QUFBQUFB
QURnSGdBQUh4Z0FBR2pQQWdBQUFBQUFvUkFBQUI4QkFBQXdXZ0FBQUFBQUFFb2sKQUFBZkdBQUFh
Tk1DQUFBQUFBQ1RHQUFBSHdTQUFKQkVBUUFBQUFBQTBpc0FBQjhZZ0FCNDJRSUFBQUFBQUc4YUFB
QWZCUUFBc0VjQgpBQUFBQUFBbEFBQUFId1VBQUtCRUFRQUFBQUFBQ0EwQUFCOEZBQUFBUmdFQUFB
QUFBT3dTQUFBZkJRQUFRRWNCQUFBQUFBRHRDZ0FBCkh3VUFBTEJGQVFBQUFBQUFtZ2NBQUI4RkFB
QVFSUUVBQUFBQUFMb1JBQUFmQlFBQThFWUJBQUFBQUFCMURnQUFId1VBQUZCR0FRQUEKQUFBQXBB
Z0FBQjhGQUFCZ1JRRUFBQUFBQURvUUFBQWZCUUFBb0VZQkFBQUFBQUFQRXdBQUh3aUFBSEJKQVFB
QUFBQUFGQUVBQUFFQQpBQUFBQUFBQUFBQUFBSWdDQUFBQkFBQUFBQUFBQUFBQUFBQlJBUUFBQVFB
QUFBQUFBQUFBQUFBQWJRWUFBQUVBQUFBQUFBQUFBQUFBCkFGUUdBQUFCQUFBQUFBQUFBQUFBQUFC
T0dRQUFBUUFBQUFBQUFBQUFBQUFBaVJrQUFBRUFBQUFBQUFBQUFBQUFBS3NaQUFBQkFBQUEKQUFB
QUFBQUFBQUNpQUFBQUFRQUFBQUFBQUFBQUFBQUFOd2NBQUFFQUFBQUFBQUFBQUFBQUFBY0dBQUFC
QUFBQUFBQUFBQUFBQUFDVgpBZ0FBQVFBQUFBQUFBQUFBQUFBQXVnRUFBQUVBQUFBQUFBQUFBQUFB
QUtVUEFBQUJBQUFBQUFBQUFBQUFBQUFYQ2dBQUFRQUFBQUFBCkFBQUFBQUFBUUF3QUFBRUFBQUFB
QUFBQUFBQUFBTzBKQUFBQkFBQUFBQUFBQUFBQUFBQlFCd0FBQVFBQUFBQUFBQUFBQUFBQXZ3VUEK
QUFFQUFBQUFBQUFBQUFBQUFFUUtBQUFCQUFBQUFBQUFBQUFBQUFCekFnQUFBUUFBQUFBQUFBQUFB
QUFBTUFvQUFBRUFBQUFBQUFBQQpBQUFBQU1RWkFBQUJBQUFBQUFBQUFBQUFBQUJyQlFBQUFRQUFB
QUFBQUFBQUFBQUFuZ1VBQUFFQUFBQUFBQUFBQUFBQUFPa05BQUFCCkFBQUFBQUFBQUFBQUFBREdD
d0FBQVFBQUFBQUFBQUFBQUFBQTl3UUFBQUVBQUFBQUFBQUFBQUFBQUg4RUFBQUJBQUFBQUFBQUFB
QUEKQUFBZEF3QUFBUUFBQUFBQUFBQUFBQUFBMkJrQUFBRUFBQUFBQUFBQUFBQUFBQ0FHQUFBQkFB
QUFBQUFBQUFBQUFBRG1BZ0FBQVFBQQpBQUFBQUFBQUFBQUFQd1lBQUFFQUFBQUFBQUFBQUFBQUFC
Y0VBQUFCQUFBQUFBQUFBQUFBQUFDcUNnQUFBUUFBQUFBQUFBQUFBQUFBCkFRb0FBQUVBQUFBQUFB
QUFBQUFBQURvREFBQUJBQUFBQUFBQUFBQUFBQUFTQWdBQUFRQUFBQUFBQUFBQUFBQUFWUVFBQUFF
QUFBQUEKQUFBQUFBQUFBTklFQUFBQkFBQUFBQUFBQUFBQUFBRDdBUUFBQVFBQUFBQUFBQUFBQUFB
QXB3SUFBQUVBQUFBQUFBQUFBQUFBQUtBTgpBQUFCQUFBQUFBQUFBQUFBQUFDOURRQUFBUUFBQUFB
QUFBQUFBQUFBaGdZQUFBRUFBQUFBQUFBQUFBQUFBRllDQUFBQkFBQUFBQUFBCkFBQUFBQUExQlFB
QUFRQUFBQUFBQUFBQUFBQUExQTBBQUFFQUFBQUFBQUFBQUFBQUFHZ0VBQUFCQUFBQUFBQUFBQUFB
QUFBeEFRQUEKQVFBQUFBQUFBQUFBQUFBQTFnRUFBQUVBQUFBQUFBQUFBQUFBQVBrQ0FBQUJBQUFB
QUFBQUFBQUFBQURsQkFBQUFRQUFBQUFBQUFBQQpBQUFBS0FRQUFBRUFBQUFBQUFBQUFBQUFBRUlF
QUFBQkFBQUFBQUFBQUFBQUFBRFRCZ0FBQVFBQUFBQUFBQUFBQUFBQUN3VUFBQUVBCkFBQUFBQUFB
QUFBQUFGTUtBQUFCQUFBQUFBQUFBQUFBQUFEVEdBQUFBUUFBQUFBQUFBQUFBQUFBOUJnQUFBRUFB
QUFBQUFBQUFBQUEKQUFvWkFBQUJBQUFBQUFBQUFBQUFBQUF6R1FBQUFRQUFBQUFBQUFBQUFBQUFI
Z3dBQUFFQUFBQUFBQUFBQUFBQUFDd01BQUFCQUFBQQpBQUFBQUFBQUFBRDJDd0FBQVFBQUFBQUFB
QUFBQUFBQUN3d0FBQUVBQUFBQUFBQUFBQUFBQUZJTUFBQUJBQUFBQUFBQUFBQUFBQUJ0CkdRQUFB
UUFBQUFBQUFBQUFBQUFBRFJRQUFBRUFBQUFBQUFBQUFBQUFBRFlDQUFBQkFBQUFBQUFBQUFBQUFB
RG5Dd0FBQVFBQUFBQUEKQUFBQUFBQUFSd0lBQUFFQUFBQUFBQUFBQUFBQUFBNERBQUFCQUFBQUFB
QUFBQUFBQUFCTUNRQUFBUUFBQUFBQUFBQUFBQUFBeHdJQQpBQUVBQUFBQUFBQUFBQUFBQUNjQ0FB
QUJBQUFBQUFBQUFBQUFBQURXQWdBQUFRQUFBQUFBQUFBQUFBQUE2QVVBQUFFQUFBQUFBQUFBCkFB
QUFBSk1OQUFBQkFBQUFBQUFBQUFBQUFBQ09CUUFBQVFBQUFBQUFBQUFBQUFBQUh4a0FBQUVBQUFB
QUFBQUFBQUFBQUVnRkFBQUIKQUFBQUFBQUFBQUFBQUFCZUJRQUFBUUFBQUFBQUFBQUFBQUFBUmdB
QUFBRUFBQUFBQUFBQUFBQUFBT01HQUFBQkFBQUFBQUFBQUFBQQpBQUFkQlFBQUFRQUFBQUFBQUFB
QUFBQUF2aG9BQUFFQUFBQUFBQUFBQUFBQUFJd2FBQUFCQUFBQUFBQUFBQUFBQUFDTEF3QUFBUUFB
CkFBQUFBQUFBQUFBQTFSSUFBQUVBQUFBQUFBQUFBQUFBQU1vVEFBQUJBQUFBQUFBQUFBQUFBQUFC
R3dBQUFRQUFBQUFBQUFBQUFBQUEKTkJzQUFBRUFBQUFBQUFBQUFBQUFBTzRaQUFBQkFBQUFBQUFB
QUFBQUFBQXdHZ0FBQVFBQUFBQUFBQUFBQUFBQStRTUFBQUVBQUFBQQpBQUFBQUFBQUFKQVRBQUFC
QUFBQUFBQUFBQUFBQUFEdEFBQUFBUUFBQUFBQUFBQUFBQUFBQWdFQUFBRUFBQUFBQUFBQUFBQUFB
S0FCCkFBQUJBQUFBQUFBQUFBQUFBQUQ0QlFBQUFRQUFBQUFBQUFBQUFBQUFBRjlmV2s0eU5VMWxa
R2xoVTJoaGNtVmtWVWxKYldGblpVVnMKWlcxbGJuUkRNVVYyQUY5ZldsUldNalZOWldScFlWTm9Z
WEpsWkZWSlNXMWhaMlZGYkdWdFpXNTBBRjlEUjFKbFkzUmFaWEp2QUY5ZgpXazR5TlUxbFpHbGhV
MmhoY21Wa1ZVbEpiV0ZuWlVWc1pXMWxiblJETWtWMkFGOWZXazR5TlUxbFpHbGhVMmhoY21Wa1ZV
bEpiV0ZuClpVVnNaVzFsYm5RNVoyeHZkME52Ykc5eVJYWUFYME5IUTI5c2IzSkRjbVZoZEdWSFpX
NWxjbWxqUjNKaGVRQmZYMXBPU3pJMVRXVmsKYVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWRE
RXlaR1ZtWVhWc2RFbHRZV2RsUlhZQVgydERSa0ZzYkc5allYUnZja1JsWm1GMQpiSFFBWDJ0RFJr
RnNiRzlqWVhSdmNrNTFiR3dBWDBOR1JHRjBZVU55WldGMFpWZHBkR2hDZVhSbGMwNXZRMjl3ZVFC
ZlEwZEVZWFJoClVISnZkbWxrWlhKRGNtVmhkR1ZYYVhSb1EwWkVZWFJoQUY5RFJsSmxiR1ZoYzJV
QVgxOWFUa3N5TlUxbFpHbGhVMmhoY21Wa1ZVbEoKYldGblpVVnNaVzFsYm5ReE5HUnlZWGRDWVdO
clozSnZkVzVrUlZBNVEwZERiMjUwWlhoME5rTkhVbVZqZEFCZmEwTkhRMjlzYjNKVApjR0ZqWlVk
bGJtVnlhV05IY21GNUFGOURSME52Ykc5eVUzQmhZMlZEY21WaGRHVlhhWFJvVG1GdFpRQmZRMGRI
Y21Ga2FXVnVkRU55ClpXRjBaVmRwZEdoRGIyeHZja052YlhCdmJtVnVkSE1BWDBOSFEyOXVkR1Y0
ZEZObGRFSnNaVzVrVFc5a1pRQmZRMGREYjI1MFpYaDAKVTJGMlpVZFRkR0YwWlFCZlEwZFNaV04w
UjJWMFRXbHVXUUJmUTBkU1pXTjBSMlYwU0dWcFoyaDBBRjlEUjFKbFkzUkhaWFJOWVhoWgpBRjlE
UjBOdmJuUmxlSFJUWlhSVGFHOTFiR1JCYm5ScFlXeHBZWE1BWDBOSFEyOXVkR1Y0ZEVOc2FYQlVi
MUpsWTNRQVgwTkdSMlYwClZIbHdaVWxFQUY5RFIwTnZiRzl5UjJWMFZIbHdaVWxFQUY5RFIwTnZi
blJsZUhSVFpYUkdhV3hzUTI5c2IzSlhhWFJvUTI5c2IzSUEKWDBOSFVtVmpkRWRsZEUxcGJsZ0FY
ME5IVW1WamRFZGxkRmRwWkhSb0FGOURSME52Ym5SbGVIUkdhV3hzVW1WamRBQmZRMGRIY21Gawph
V1Z1ZEVkbGRGUjVjR1ZKUkFCZlEwZFNaV04wUjJWMFRXbGtXQUJmUTBkRGIyNTBaWGgwUkhKaGQw
eHBibVZoY2tkeVlXUnBaVzUwCkFGOURSME52Ym5SbGVIUlNaWE4wYjNKbFIxTjBZWFJsQUY5Zldr
NHlOVTFsWkdsaFUyaGhjbVZrVlVsSmJXRm5aVVZzWlcxbGJuUXkKTVdsdWRtRnNhV1JoZEdWRFlX
Tm9aV1JKYldGblpVVjJBRjlmV2s0eE5FMWxaR2xoVlVsRmJHVnRaVzUwT0hObGRFeGhlV1Z5UlZB
MwpRMGRNWVhsbGNnQmZYMXBPTWpWTlpXUnBZVk5vWVhKbFpGVkpTVzFoWjJWRmJHVnRaVzUwTVRk
c1lYbGxjbGRwZEdoRGIyNTBaVzUwCmMwVlFPVU5IUTI5dWRHVjRkRFpEUjFKbFkzUUFYMTlhVGtz
eE5FMWxaR2xoVlVsRmJHVnRaVzUwTld4aGVXVnlSWFlBWDBOSFEyOXUKZEdWNGRFZGxkRU5VVFFC
ZlEwZE1ZWGxsY2tOeVpXRjBaVmRwZEdoRGIyNTBaWGgwQUY5RFIweGhlV1Z5UjJWMFEyOXVkR1Y0
ZEFCZgpRMGREYjI1MFpYaDBVMk5oYkdWRFZFMEFYME5IUTI5dWRHVjRkRlJ5WVc1emJHRjBaVU5V
VFFCZlEwZERiMjUwWlhoMFJISmhkMHhoCmVXVnlTVzVTWldOMEFGOWZXazR5TlUxbFpHbGhVMmho
Y21Wa1ZVbEpiV0ZuWlVWc1pXMWxiblExY0dGcGJuUkZVRGxEUjBOdmJuUmwKZUhRMlEwZFNaV04w
QUY5RFIwTnZiblJsZUhSVFpYUkJiSEJvWVFCZlEwZEpiV0ZuWlVkbGRGUjVjR1ZKUkFCZlEwZERi
MjUwWlhoMApSSEpoZDBsdFlXZGxBRjlEUjB4aGVXVnlSMlYwVkhsd1pVbEVBRjlEUjFOMGVXeGxR
M0psWVhSbFJtOWpkWE5TYVc1bkFGOURSME52CmJuUmxlSFJUWlhSVGRIbHNaUUJmUTBkU1pXTjBT
VzUwWlhKelpXTjBjMUpsWTNRQVgwTkhVbVZqZEZWdWFXOXVBRjlEUjBOdmJuUmwKZUhSRGIyNTJa
WEowVW1WamRGUnZSR1YyYVdObFUzQmhZMlVBWDBOSFVtVmpkRWx1ZEdWbmNtRnNBRjlEUjBOdmJu
UmxlSFJEYjI1MgpaWEowVW1WamRGUnZWWE5sY2xOd1lXTmxBRjlEUjBOdmJuUmxlSFJDWldkcGJs
UnlZVzV6Y0dGeVpXNWplVXhoZVdWeVYybDBhRkpsClkzUUFYME5IVW1WamRFbHVabWx1YVhSbEFG
OXJRMGREYjJ4dmNsZG9hWFJsQUY5RFIwTnZiRzl5UjJWMFEyOXVjM1JoYm5SRGIyeHYKY2dCZlEw
ZERiMjUwWlhoMFJXNWtWSEpoYm5Od1lYSmxibU41VEdGNVpYSUFYME5IUTI5dWRHVjRkRWRsZEVK
aGMyVkRWRTBBWDBOSApRV1ptYVc1bFZISmhibk5tYjNKdFNXNTJaWEowQUY5RFIwRm1abWx1WlZS
eVlXNXpabTl5YlVOdmJtTmhkQUJmUTBkRGIyNTBaWGgwClUyVjBVMmhoWkc5M1YybDBhRU52Ykc5
eUFGOWZXazVMTWpWTlpXUnBZVk5vWVhKbFpGVkpTVzFoWjJWRmJHVnRaVzUwTVRGdVlYUjEKY21G
c1UybDZaVVYyQUY5RFIweGhlV1Z5UjJWMFUybDZaUUJmUTBkVGFYcGxXbVZ5YndCZlgxcE9NamRO
WldScFlWTm9ZWEpsWkZWSgpRME5KYldGblpVVnNaVzFsYm5ReE4yeGhlV1Z5VjJsMGFFTnZiblJs
Ym5SelJWQTVRMGREYjI1MFpYaDBOa05IVW1WamRBQmZRMGRECmIyeHZja055WldGMFpVZGxibVZ5
YVdOU1IwSUFYME5IUTI5dWRHVjRkRUpsWjJsdVZISmhibk53WVhKbGJtTjVUR0Y1WlhJQVgxOWEK
VGpNd1RXVmthV0ZUYUdGeVpXUlZTVUpoWTJ0bmNtOTFibVJGYkdWdFpXNTBRekZGZGdCZlgxcFVW
ak13VFdWa2FXRlRhR0Z5WldSVgpTVUpoWTJ0bmNtOTFibVJGYkdWdFpXNTBBRjlmV2s0ek1FMWxa
R2xoVTJoaGNtVmtWVWxDWVdOclozSnZkVzVrUld4bGJXVnVkRU15ClJYWUFYMTlhVGpNd1RXVmth
V0ZUYUdGeVpXUlZTVUpoWTJ0bmNtOTFibVJGYkdWdFpXNTBNVGRzWVhsbGNsZHBkR2hEYjI1MFpX
NTAKYzBWUU9VTkhRMjl1ZEdWNGREWkRSMUpsWTNRQVgxOWFUak13VFdWa2FXRlRhR0Z5WldSVlNV
SmhZMnRuY205MWJtUkZiR1Z0Wlc1MApOWEJoYVc1MFJWQTVRMGREYjI1MFpYaDBOa05IVW1WamRB
QmZYMXBPTXpsTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRiR2xrClpYSlVhSFZ0WWtWc1pX
MWxiblJETVVWMkFGOWZXbFJXTXpsTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRiR2xrWlhK
VWFIVnQKWWtWc1pXMWxiblFBWDE5YVRqTTVUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVsVTJ4
cFpHVnlWR2gxYldKRmJHVnRaVzUwUXpKRgpkZ0JmWDFwT1N6TTVUV1ZrYVdGVGFHRnlaV1JWU1ZS
cGJXVnNhVzVsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwTjJocGRGUmxjM1JGCk5rTkhVbVZqZERk
RFIxQnZhVzUwQUY5RFIxSmxZM1JIWlhSTmFXUlpBRjlmV2s1TE16bE5aV1JwWVZOb1lYSmxaRlZK
VkdsdFpXeHAKYm1WVGJHbGtaWEpVYUhWdFlrVnNaVzFsYm5ReE1XNWhkSFZ5WVd4VGFYcGxSWFlB
WDE5YVRqTTVUV1ZrYVdGVGFHRnlaV1JWU1ZScApiV1ZzYVc1bFUyeHBaR1Z5VkdoMWJXSkZiR1Z0
Wlc1ME1UZHNZWGxsY2xkcGRHaERiMjUwWlc1MGMwVlFPVU5IUTI5dWRHVjRkRFpEClIxSmxZM1FB
WDBOSFEyOXVkR1Y0ZEVKbFoybHVVR0YwYUFCZlEwZERiMjUwWlhoMFRXOTJaVlJ2VUc5cGJuUUFY
ME5IUTI5dWRHVjQKZEVGa1pFeHBibVZVYjFCdmFXNTBBRjlEUjBOdmJuUmxlSFJEYkc5elpWQmhk
R2dBWDBOSFEyOXVkR1Y0ZEVOc2FYQUFYME5IVEdGNQpaWEpTWld4bFlYTmxBRjlmV2s0ek9VMWxa
R2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5zYVdSbGNsUm9kVzFpUld4bGJXVnVkRFZ3CllXbHVk
RVZRT1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1FBWDBOSFEyOXVkR1Y0ZEVkbGRFTnNhWEJDYjNWdVpH
bHVaMEp2ZUFCZlgxcE8KTWpkTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRiR2xrWlhKRE1V
VjJBRjlmV2xSV01qZE5aV1JwWVZOb1lYSmxaRlZKVkdsdApaV3hwYm1WVGJHbGtaWElBWDE5YVRq
STNUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVsVTJ4cFpHVnlRekpGZGdCZlgxcE9TekkzClRX
VmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeU1qRjBhVzFsYkdsdVpWSmxZM1JHYjNK
Q2IzVnVaSE5GTmtOSFVtVmoKZEFCZlgxcE9TekkzVFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzYVc1
bFUyeHBaR1Z5TWpKb2FXZG9iR2xuYUhSVmJteHZZV1JsWkZKaApibWRsUlZBNVEwZERiMjUwWlho
ME5rTkhVbVZqZEFCZlEwZERiMjUwWlhoMFEyOXVkbVZ5ZEZOcGVtVlViMVZ6WlhKVGNHRmpaUUJm
ClEwZFNaV04wUjJWMFRXRjRXQUJmUTBkUVlYUm9RM0psWVhSbFRYVjBZV0pzWlFCZlEwZFFZWFJv
VFc5MlpWUnZVRzlwYm5RQVgwTkgKVUdGMGFFRmtaRUZ5WXdCZlEwZFFZWFJvUTJ4dmMyVlRkV0p3
WVhSb0FGOURSME52Ym5SbGVIUkJaR1JRWVhSb0FGOURSMUJoZEdoUwpaV3hsWVhObEFGOWZXazR5
TjAxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkdsdVpWTnNhV1JsY2pFM2JHRjVaWEpYYVhSb1EyOXVk
R1Z1CmRITkZVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBBRjlmV2s0eU4wMWxaR2xoVTJoaGNtVmtW
VWxVYVcxbGJHbHVaVk5zYVdSbGNqVncKWVdsdWRFVlFPVU5IUTI5dWRHVjRkRFpEUjFKbFkzUUFY
MTlhVGpJMVRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsY2tNeApSWFlBWDE5YVZGWXlO
VTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsa1pYSUFYMTlhVGpJMVRXVmthV0ZUYUdGeVpX
UlZTVlp2CmJIVnRaVk5zYVdSbGNrTXlSWFlBWDE5YVRqSTFUV1ZrYVdGVGFHRnlaV1JWU1ZadmJI
VnRaVk5zYVdSbGNqRTNiR0Y1WlhKWGFYUm8KUTI5dWRHVnVkSE5GVURsRFIwTnZiblJsZUhRMlEw
ZFNaV04wQUY5RFIxSmxZM1JKYm5ObGRBQmZRMGREYjI1MFpYaDBVMlYwUjNKaAplVk4wY205clpV
TnZiRzl5QUY5RFIwTnZiblJsZUhSVFpYUk1hVzVsVjJsa2RHZ0FYME5IUTI5dWRHVjRkRk4wY205
clpWQmhkR2dBClgwTkhRMjl1ZEdWNGRFTnZiblpsY25SVGFYcGxWRzlFWlhacFkyVlRjR0ZqWlFC
ZlgxcE9NalZOWldScFlWTm9ZWEpsWkZWSlZtOXMKZFcxbFUyeHBaR1Z5TlhCaGFXNTBSVkE1UTBk
RGIyNTBaWGgwTmtOSFVtVmpkQUJmWDFwT016ZE5aV1JwWVZOb1lYSmxaRlZKVm05cwpkVzFsVTJ4
cFpHVnlWR2gxYldKRmJHVnRaVzUwUXpGRmRnQmZYMXBVVmpNM1RXVmthV0ZUYUdGeVpXUlZTVlp2
YkhWdFpWTnNhV1JsCmNsUm9kVzFpUld4bGJXVnVkQUJmWDFwT016ZE5aV1JwWVZOb1lYSmxaRlZK
Vm05c2RXMWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTAKUXpKRmRnQmZYMXBPU3pNM1RXVmthV0ZU
YUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsY2xSb2RXMWlSV3hsYldWdWREZG9hWFJVWlhOMApSVFpE
UjFKbFkzUTNRMGRRYjJsdWRBQmZYMXBPU3pNM1RXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNh
V1JsY2xSb2RXMWlSV3hsCmJXVnVkREV4Ym1GMGRYSmhiRk5wZW1WRmRnQmZYMXBPTXpkTlpXUnBZ
Vk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5VkdoMWJXSkYKYkdWdFpXNTBNVGRzWVhsbGNsZHBk
R2hEYjI1MFpXNTBjMFZRT1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1FBWDBOSFEyOXVkR1Y0ZEVGawpa
RVZzYkdsd2MyVkpibEpsWTNRQVgxOWFUak0zVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FX
UmxjbFJvZFcxaVJXeGxiV1Z1CmREVndZV2x1ZEVWUU9VTkhRMjl1ZEdWNGREWkRSMUpsWTNRQVgx
OWFUalF5VFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmwKY2tKaFkydG5jbTkxYm1SRmJH
VnRaVzUwUXpGRmRnQmZYMXBVVmpReVRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsY2tK
aApZMnRuY205MWJtUkZiR1Z0Wlc1MEFGOWZXazQwTWsxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldW
VGJHbGtaWEpDWVdOclozSnZkVzVrClJXeGxiV1Z1ZEVNeVJYWUFYMTlhVGtzME1rMWxaR2xoVTJo
aGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKQ1lXTnJaM0p2ZFc1a1JXeGwKYldWdWREZG9hWFJVWlhO
MFJUWkRSMUpsWTNRM1EwZFFiMmx1ZEFCZlgxcE9OREpOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFs
VTJ4cApaR1Z5UW1GamEyZHliM1Z1WkVWc1pXMWxiblF4TjJ4aGVXVnlWMmwwYUVOdmJuUmxiblJ6
UlZBNVEwZERiMjUwWlhoME5rTkhVbVZqCmRBQmZYMXBPTkRKTlpXUnBZVk5vWVhKbFpGVkpWbTlz
ZFcxbFUyeHBaR1Z5UW1GamEyZHliM1Z1WkVWc1pXMWxiblExY0dGcGJuUkYKVURsRFIwTnZiblJs
ZUhRMlEwZFNaV04wQUY5ZldrNHpOVTFsWkdsaFUyaGhjbVZrVlVsR2RXeHNVMk55WldWdVZtOXNk
VzFsVTJ4cApaR1Z5UXpGRmRnQmZYMXBVVmpNMVRXVmthV0ZUYUdGeVpXUlZTVVoxYkd4VFkzSmxa
VzVXYjJ4MWJXVlRiR2xrWlhJQVgxOWFUak0xClRXVmthV0ZUYUdGeVpXUlZTVVoxYkd4VFkzSmxa
VzVXYjJ4MWJXVlRiR2xrWlhKRE1rVjJBRjlmV2s0ek5VMWxaR2xoVTJoaGNtVmsKVlVsR2RXeHNV
Mk55WldWdVZtOXNkVzFsVTJ4cFpHVnlNVGRzWVhsbGNsZHBkR2hEYjI1MFpXNTBjMFZRT1VOSFEy
OXVkR1Y0ZERaRApSMUpsWTNRQVgxOWFUak0xVFdWa2FXRlRhR0Z5WldSVlNVWjFiR3hUWTNKbFpX
NVdiMngxYldWVGJHbGtaWEkxY0dGcGJuUkZVRGxEClIwTnZiblJsZUhRMlEwZFNaV04wQUY5Zldr
NUxNakZOWldScFlWTm9ZWEpsWkZWSlEyOXVkSEp2YkhNeE5HTnZiblJ5YjJ4R2IzSlEKWVhKMFJX
a0FYMTlhVGpOWFZFWXhNR1poYzNSTllXeHNiMk5GYlFCZlgxcFVWakkzVFdWa2FXRlRhR0Z5WldS
VlNVTkRTVzFoWjJWRgpiR1Z0Wlc1MEFGOWZXbFJXTkRkTlpXUnBZVk5vWVhKbFpGVkpSblZzYkZO
amNtVmxibFp2YkhWdFpWTnNhV1JsY2xSb2RXMWlSV3hsCmJXVnVkQUJmWDFwT1N6SXhUV1ZrYVdG
VGFHRnlaV1JWU1VOdmJuUnliMnh6Tm5Oc2FXUmxja1YyQUY5ZldrNHlOVTFsWkdsaFUyaGgKY21W
a1ZVbEpiV0ZuWlVWc1pXMWxiblJFTVVWMkFGOWZXbFJXTVRSTlpXUnBZVlZKUld4bGJXVnVkQUJm
WDFwT01qVk5aV1JwWVZObwpZWEpsWkZWSlNXMWhaMlZGYkdWdFpXNTBSREJGZGdCZlgxcE9NMWRV
UmpobVlYTjBSbkpsWlVWUWRnQmZYMXBPU3pFMFRXVmthV0ZWClNVVnNaVzFsYm5RM2FHbDBWR1Z6
ZEVVMlEwZFNaV04wTjBOSFVHOXBiblFBWDBOSFVtVmpkRU52Ym5SaGFXNXpVRzlwYm5RQVgxOWEK
VGtzeU5VMWxaR2xoVTJoaGNtVmtWVWxKYldGblpVVnNaVzFsYm5ReU1HTnZibk4wY21GcGJrRnpj
R1ZqZEZKaGRHbHZSWFlBWDE5YQpUakkzVFdWa2FXRlRhR0Z5WldSVlNVTkRTVzFoWjJWRmJHVnRa
VzUwUkRGRmRnQmZYMXBPTWpkTlpXUnBZVk5vWVhKbFpGVkpRME5KCmJXRm5aVVZzWlcxbGJuUkVN
RVYyQUY5ZldrNUxNamROWldScFlWTm9ZWEpsWkZWSlEwTkpiV0ZuWlVWc1pXMWxiblF5TUdOdmJu
TjAKY21GcGJrRnpjR1ZqZEZKaGRHbHZSWFlBWDE5YVRqTXdUV1ZrYVdGVGFHRnlaV1JWU1VKaFky
dG5jbTkxYm1SRmJHVnRaVzUwUkRGRgpkZ0JmWDFwT016Qk5aV1JwWVZOb1lYSmxaRlZKUW1GamEy
ZHliM1Z1WkVWc1pXMWxiblJFTUVWMkFGOWZXazVMTVRSTlpXUnBZVlZKClJXeGxiV1Z1ZERFeGJt
RjBkWEpoYkZOcGVtVkZkZ0JmWDFwT016bE5aV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUYkds
a1pYSlUKYUhWdFlrVnNaVzFsYm5SRU1VVjJBRjlmV2s0ek9VMWxaR2xoVTJoaGNtVmtWVWxVYVcx
bGJHbHVaVk5zYVdSbGNsUm9kVzFpUld4bApiV1Z1ZEVRd1JYWUFYMTlhVGpJM1RXVmthV0ZUYUdG
eVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVJERkZkZ0JmWDFwT01qZE5aV1JwCllWTm9ZWEpsWkZW
SlZHbHRaV3hwYm1WVGJHbGtaWEpFTUVWMkFGOWZXazR5TlUxbFpHbGhVMmhoY21Wa1ZVbFdiMngx
YldWVGJHbGsKWlhKRU1VVjJBRjlmV2s0eU5VMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xr
WlhKRU1FVjJBRjlmV2s0ek4wMWxaR2xoVTJoaApjbVZrVlVsV2IyeDFiV1ZUYkdsa1pYSlVhSFZ0
WWtWc1pXMWxiblJFTVVWMkFGOWZXazR6TjAxbFpHbGhVMmhoY21Wa1ZVbFdiMngxCmJXVlRiR2xr
WlhKVWFIVnRZa1ZzWlcxbGJuUkVNRVYyQUY5ZldrNUxNemROWldScFlWTm9ZWEpsWkZWSlZtOXNk
VzFsVTJ4cFpHVnkKVkdoMWJXSkZiR1Z0Wlc1ME5uSmhaR2wxYzBWMkFGOWZXazQwTWsxbFpHbGhV
MmhoY21Wa1ZVbFdiMngxYldWVGJHbGtaWEpDWVdOcgpaM0p2ZFc1a1JXeGxiV1Z1ZEVReFJYWUFY
MTlhVGpReVRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsY2tKaFkydG5jbTkxCmJtUkZi
R1Z0Wlc1MFJEQkZkZ0JmWDFwT016Vk5aV1JwWVZOb1lYSmxaRlZKUm5Wc2JGTmpjbVZsYmxadmJI
VnRaVk5zYVdSbGNrUXgKUlhZQVgxOWFUak0xVFdWa2FXRlRhR0Z5WldSVlNVWjFiR3hUWTNKbFpX
NVdiMngxYldWVGJHbGtaWEpFTUVWMkFGOWZXazR5TVUxbApaR2xoVTJoaGNtVmtWVWxEYjI1MGNt
OXNjMFF4UlhZQVgxOWFUakl4VFdWa2FXRlRhR0Z5WldSVlNVTnZiblJ5YjJ4elJEQkZkZ0JmClgx
cE9NVFJOWldScFlWVkpSV3hsYldWdWRFUXhSWFlBWDE5YVRqRTBUV1ZrYVdGVlNVVnNaVzFsYm5S
RU1FVjJBRjlmV2s0ME4wMWwKWkdsaFUyaGhjbVZrVlVsR2RXeHNVMk55WldWdVZtOXNkVzFsVTJ4
cFpHVnlWR2gxYldKRmJHVnRaVzUwUkRGRmRnQmZYMXBPTkRkTgpaV1JwWVZOb1lYSmxaRlZKUm5W
c2JGTmpjbVZsYmxadmJIVnRaVk5zYVdSbGNsUm9kVzFpUld4bGJXVnVkRVF3UlhZQVgxOWFUa3Mw
Ck4wMWxaR2xoVTJoaGNtVmtWVWxHZFd4c1UyTnlaV1Z1Vm05c2RXMWxVMnhwWkdWeVZHaDFiV0pG
YkdWdFpXNTBObkpoWkdsMWMwVjIKQUY5RFIxQkVSa1J2WTNWdFpXNTBRM0psWVhSbFYybDBhRkJ5
YjNacFpHVnlBRjlEUjFCRVJrUnZZM1Z0Wlc1MFIyVjBVR0ZuWlFCZgpRMGRRUkVaUVlXZGxSMlYw
UW05NFVtVmpkQUJmUTBkU1pXTjBTVzUwWlhKelpXTjBhVzl1QUY5RFIxQkVSbEJoWjJWSFpYUlNi
M1JoCmRHbHZia0Z1WjJ4bEFGOURSMEZtWm1sdVpWUnlZVzV6Wm05eWJVMWhhMlZTYjNSaGRHbHZi
Z0JmUTBkU1pXTjBRWEJ3YkhsQlptWnAKYm1WVWNtRnVjMlp2Y20wQVgwTkhRV1ptYVc1bFZISmhi
bk5tYjNKdFRXRnJaVlJ5WVc1emJHRjBhVzl1QUY5RFIwRm1abWx1WlZSeQpZVzV6Wm05eWJWSnZk
R0YwWlFCZlEwZERiMjUwWlhoMFEyOXVZMkYwUTFSTkFGOURSME52Ym5SbGVIUkVjbUYzVUVSR1VH
Rm5aUUJmClgxcE9TekUwVFdWa2FXRlZTVVZzWlcxbGJuUXlNM05sZEZWd1EyOXVkR1Y0ZEVadmNs
QmhhVzUwYVc1blJWQTVRMGREYjI1MFpYaDAKTmtOSFVtVmpkQUJmWDFwT1N6RTBUV1ZrYVdGVlNV
VnNaVzFsYm5ReU4zSmxjM1J2Y21WRGIyNTBaWGgwUVdaMFpYSlFZV2x1ZEdsdQpaMFZRT1VOSFEy
OXVkR1Y0ZEFCZlgxcFVWakl4VFdWa2FXRlRhR0Z5WldSVlNVTnZiblJ5YjJ4ekFGOWZXazR4TTAx
bFpHbGhRMjl1CmRISnZiSE00WkhKaGQxQmhjblJGYVZBNVEwZERiMjUwWlhoME5rTkhVbVZqZEdv
QVgxOWFUakV6VFdWa2FXRkRiMjUwY205c2N6SXoKWkhKaGQxUnBiV1ZzYVc1bFUyeHBaR1Z5VkhK
aFkydEZVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBaR1JxQUY5ZldrNUxNVE5OWldScApZVU52Ym5S
eWIyeHpNVEZvYVhSVVpYTjBVR0Z5ZEVWcE5rTkhVbVZqZERkRFIxQnZhVzUwQUY5ZldrNUxNVE5O
WldScFlVTnZiblJ5CmIyeHpNVEZ1WVhSMWNtRnNVMmw2WlVWcEFGOWZXazR5TlUxbFpHbGhVMmho
Y21Wa1ZVbEpiV0ZuWlVWc1pXMWxiblJETVVWMkxtVm8KQUY5ZldrNHlOVTFsWkdsaFUyaGhjbVZr
VlVsSmJXRm5aVVZzWlcxbGJuUkRNa1YyTG1Wb0FGOWZXazR5TlUxbFpHbGhVMmhoY21WawpWVWxK
YldGblpVVnNaVzFsYm5RNVoyeHZkME52Ykc5eVJYWXVaV2dBWDE5YVRrc3lOVTFsWkdsaFUyaGhj
bVZrVlVsSmJXRm5aVVZzClpXMWxiblF4TW1SbFptRjFiSFJKYldGblpVVjJMbVZvQUY5ZldrNUxN
alZOWldScFlWTm9ZWEpsWkZWSlNXMWhaMlZGYkdWdFpXNTAKTVRSa2NtRjNRbUZqYTJkeWIzVnVa
RVZRT1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1F1WldnQVgxOWFUakkxVFdWa2FXRlRhR0Z5WldSVgpT
VWx0WVdkbFJXeGxiV1Z1ZERJeGFXNTJZV3hwWkdGMFpVTmhZMmhsWkVsdFlXZGxSWFl1WldnQVgx
OWFUakkxVFdWa2FXRlRhR0Z5ClpXUlZTVWx0WVdkbFJXeGxiV1Z1ZERFM2JHRjVaWEpYYVhSb1Ey
OXVkR1Z1ZEhORlVEbERSME52Ym5SbGVIUTJRMGRTWldOMExtVm8KQUY5ZldrNHlOVTFsWkdsaFUy
aGhjbVZrVlVsSmJXRm5aVVZzWlcxbGJuUTFjR0ZwYm5SRlVEbERSME52Ym5SbGVIUTJRMGRTWldO
MApMbVZvQUY5ZldrNUxNalZOWldScFlWTm9ZWEpsWkZWSlNXMWhaMlZGYkdWdFpXNTBNVEZ1WVhS
MWNtRnNVMmw2WlVWMkxtVm9BRjlmCldrNHlOMDFsWkdsaFUyaGhjbVZrVlVsRFEwbHRZV2RsUld4
bGJXVnVkREUzYkdGNVpYSlhhWFJvUTI5dWRHVnVkSE5GVURsRFIwTnYKYm5SbGVIUTJRMGRTWldO
MExtVm9BRjlmV2s0ek1FMWxaR2xoVTJoaGNtVmtWVWxDWVdOclozSnZkVzVrUld4bGJXVnVkRU14
UlhZdQpaV2dBWDE5YVRqTXdUV1ZrYVdGVGFHRnlaV1JWU1VKaFkydG5jbTkxYm1SRmJHVnRaVzUw
UXpKRmRpNWxhQUJmWDFwT016Qk5aV1JwCllWTm9ZWEpsWkZWSlFtRmphMmR5YjNWdVpFVnNaVzFs
Ym5ReE4yeGhlV1Z5VjJsMGFFTnZiblJsYm5SelJWQTVRMGREYjI1MFpYaDAKTmtOSFVtVmpkQzVs
YUFCZlgxcE9NekJOWldScFlWTm9ZWEpsWkZWSlFtRmphMmR5YjNWdVpFVnNaVzFsYm5RMWNHRnBi
blJGVURsRApSME52Ym5SbGVIUTJRMGRTWldOMExtVm9BRjlmV2s0ek9VMWxaR2xoVTJoaGNtVmtW
VWxVYVcxbGJHbHVaVk5zYVdSbGNsUm9kVzFpClJXeGxiV1Z1ZEVNeFJYWXVaV2dBWDE5YVRqTTVU
V1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVsVTJ4cFpHVnlWR2gxYldKRmJHVnQKWlc1MFF6SkZk
aTVsYUFCZlgxcE9Tek01VFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5VkdoMWJX
SkZiR1Z0Wlc1MApOMmhwZEZSbGMzUkZOa05IVW1WamREZERSMUJ2YVc1MExtVm9BRjlmV2s1TE16
bE5aV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUCmJHbGtaWEpVYUhWdFlrVnNaVzFsYm5ReE1X
NWhkSFZ5WVd4VGFYcGxSWFl1WldnQVgxOWFUak01VFdWa2FXRlRhR0Z5WldSVlNWUnAKYldWc2FX
NWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTBNVGRzWVhsbGNsZHBkR2hEYjI1MFpXNTBjMFZRT1VO
SFEyOXVkR1Y0ZERaRApSMUpsWTNRdVpXZ0FYMTlhVGpNNVRXVmthV0ZUYUdGeVpXUlZTVlJwYldW
c2FXNWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTBOWEJoCmFXNTBSVkE1UTBkRGIyNTBaWGgwTmtO
SFVtVmpkQzVsYUFCZlgxcE9NamROWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGsKWlhK
RE1VVjJMbVZvQUY5ZldrNHlOMDFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmxja015
UlhZdVpXZ0FYMTlhVGtzeQpOMDFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmxjakl4
ZEdsdFpXeHBibVZTWldOMFJtOXlRbTkxYm1SelJUWkRSMUpsClkzUXVaV2dBWDE5YVRrc3lOMDFs
WkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmxjakl5YUdsbmFHeHBaMmgwVlc1c2IyRmsK
WldSU1lXNW5aVVZRT1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1F1WldnQVgxOWFUakkzVFdWa2FXRlRh
R0Z5WldSVlNWUnBiV1ZzYVc1bApVMnhwWkdWeU1UZHNZWGxsY2xkcGRHaERiMjUwWlc1MGMwVlFP
VU5IUTI5dWRHVjRkRFpEUjFKbFkzUXVaV2dBWDE5YVRqSTNUV1ZrCmFXRlRhR0Z5WldSVlNWUnBi
V1ZzYVc1bFUyeHBaR1Z5TlhCaGFXNTBSVkE1UTBkRGIyNTBaWGgwTmtOSFVtVmpkQzVsYUFCZlgx
cE8KTWpWTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5UXpGRmRpNWxhQUJmWDFwT01q
Vk5aV1JwWVZOb1lYSmxaRlZKVm05cwpkVzFsVTJ4cFpHVnlRekpGZGk1bGFBQmZYMXBPTWpWTlpX
UnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5TVRkc1lYbGxjbGRwCmRHaERiMjUwWlc1MGMw
VlFPVU5IUTI5dWRHVjRkRFpEUjFKbFkzUXVaV2dBWDE5YVRqSTFUV1ZrYVdGVGFHRnlaV1JWU1Za
dmJIVnQKWlZOc2FXUmxjalZ3WVdsdWRFVlFPVU5IUTI5dWRHVjRkRFpEUjFKbFkzUXVaV2dBWDE5
YVRqTTNUV1ZrYVdGVGFHRnlaV1JWU1ZadgpiSFZ0WlZOc2FXUmxjbFJvZFcxaVJXeGxiV1Z1ZEVN
eFJYWXVaV2dBWDE5YVRqTTNUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5zCmFXUmxjbFJvZFcx
aVJXeGxiV1Z1ZEVNeVJYWXVaV2dBWDE5YVRrc3pOMDFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZU
Ykdsa1pYSlUKYUhWdFlrVnNaVzFsYm5RM2FHbDBWR1Z6ZEVVMlEwZFNaV04wTjBOSFVHOXBiblF1
WldnQVgxOWFUa3N6TjAxbFpHbGhVMmhoY21WawpWVWxXYjJ4MWJXVlRiR2xrWlhKVWFIVnRZa1Zz
WlcxbGJuUXhNVzVoZEhWeVlXeFRhWHBsUlhZdVpXZ0FYMTlhVGpNM1RXVmthV0ZUCmFHRnlaV1JW
U1ZadmJIVnRaVk5zYVdSbGNsUm9kVzFpUld4bGJXVnVkREUzYkdGNVpYSlhhWFJvUTI5dWRHVnVk
SE5GVURsRFIwTnYKYm5SbGVIUTJRMGRTWldOMExtVm9BRjlmV2s0ek4wMWxaR2xoVTJoaGNtVmtW
VWxXYjJ4MWJXVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbApiblExY0dGcGJuUkZVRGxEUjBOdmJuUmxl
SFEyUTBkU1pXTjBMbVZvQUY5ZldrNDBNazFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUCmJHbGta
WEpDWVdOclozSnZkVzVrUld4bGJXVnVkRU14UlhZdVpXZ0FYMTlhVGpReVRXVmthV0ZUYUdGeVpX
UlZTVlp2YkhWdFpWTnMKYVdSbGNrSmhZMnRuY205MWJtUkZiR1Z0Wlc1MFF6SkZkaTVsYUFCZlgx
cE9TelF5VFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOcwphV1JsY2tKaFkydG5jbTkxYm1SRmJH
VnRaVzUwTjJocGRGUmxjM1JGTmtOSFVtVmpkRGREUjFCdmFXNTBMbVZvQUY5ZldrNDBNazFsClpH
bGhVMmhoY21Wa1ZVbFdiMngxYldWVGJHbGtaWEpDWVdOclozSnZkVzVrUld4bGJXVnVkREUzYkdG
NVpYSlhhWFJvUTI5dWRHVnUKZEhORlVEbERSME52Ym5SbGVIUTJRMGRTWldOMExtVm9BRjlmV2s0
ME1rMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKQwpZV05yWjNKdmRXNWtSV3hsYldW
dWREVndZV2x1ZEVWUU9VTkhRMjl1ZEdWNGREWkRSMUpsWTNRdVpXZ0FYMTlhVGpNMVRXVmthV0ZU
CmFHRnlaV1JWU1VaMWJHeFRZM0psWlc1V2IyeDFiV1ZUYkdsa1pYSkRNVVYyTG1Wb0FGOWZXazR6
TlUxbFpHbGhVMmhoY21Wa1ZVbEcKZFd4c1UyTnlaV1Z1Vm05c2RXMWxVMnhwWkdWeVF6SkZkaTVs
YUFCZlgxcE9NelZOWldScFlWTm9ZWEpsWkZWSlJuVnNiRk5qY21WbApibFp2YkhWdFpWTnNhV1Js
Y2pFM2JHRjVaWEpYYVhSb1EyOXVkR1Z1ZEhORlVEbERSME52Ym5SbGVIUTJRMGRTWldOMExtVm9B
RjlmCldrNHpOVTFsWkdsaFUyaGhjbVZrVlVsR2RXeHNVMk55WldWdVZtOXNkVzFsVTJ4cFpHVnlO
WEJoYVc1MFJWQTVRMGREYjI1MFpYaDAKTmtOSFVtVmpkQzVsYUFCZlgxcE9Tekl4VFdWa2FXRlRh
R0Z5WldSVlNVTnZiblJ5YjJ4ek1UUmpiMjUwY205c1JtOXlVR0Z5ZEVWcApMbVZvQUY5ZldrNUxN
akZOWldScFlWTm9ZWEpsWkZWSlEyOXVkSEp2YkhNMmMyeHBaR1Z5UlhZdVpXZ0FYMTlhVGpJMVRX
VmthV0ZUCmFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWRFUXhSWFl1WldnQVgxOWFUakkxVFdWa2FX
RlRhR0Z5WldSVlNVbHRZV2RsUld4bGJXVnUKZEVRd1JYWXVaV2dBWDE5YVRrc3hORTFsWkdsaFZV
bEZiR1Z0Wlc1ME4yaHBkRlJsYzNSRk5rTkhVbVZqZERkRFIxQnZhVzUwTG1WbwpBRjlmV2s1TE1q
Vk5aV1JwWVZOb1lYSmxaRlZKU1cxaFoyVkZiR1Z0Wlc1ME1qQmpiMjV6ZEhKaGFXNUJjM0JsWTNS
U1lYUnBiMFYyCkxtVm9BRjlmV2s0eU4wMWxaR2xoVTJoaGNtVmtWVWxEUTBsdFlXZGxSV3hsYldW
dWRFUXhSWFl1WldnQVgxOWFUakkzVFdWa2FXRlQKYUdGeVpXUlZTVU5EU1cxaFoyVkZiR1Z0Wlc1
MFJEQkZkaTVsYUFCZlgxcE9TekkzVFdWa2FXRlRhR0Z5WldSVlNVTkRTVzFoWjJWRgpiR1Z0Wlc1
ME1qQmpiMjV6ZEhKaGFXNUJjM0JsWTNSU1lYUnBiMFYyTG1Wb0FGOWZXazR6TUUxbFpHbGhVMmho
Y21Wa1ZVbENZV05yClozSnZkVzVrUld4bGJXVnVkRVF4UlhZdVpXZ0FYMTlhVGpNd1RXVmthV0ZU
YUdGeVpXUlZTVUpoWTJ0bmNtOTFibVJGYkdWdFpXNTAKUkRCRmRpNWxhQUJmWDFwT1N6RTBUV1Zr
YVdGVlNVVnNaVzFsYm5ReE1XNWhkSFZ5WVd4VGFYcGxSWFl1WldnQVgxOWFUak01VFdWawphV0ZU
YUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTBSREZGZGk1bGFBQmZY
MXBPTXpsTlpXUnBZVk5vCllYSmxaRlZKVkdsdFpXeHBibVZUYkdsa1pYSlVhSFZ0WWtWc1pXMWxi
blJFTUVWMkxtVm9BRjlmV2s0eU4wMWxaR2xoVTJoaGNtVmsKVlVsVWFXMWxiR2x1WlZOc2FXUmxj
a1F4UlhZdVpXZ0FYMTlhVGpJM1RXVmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeQpS
REJGZGk1bGFBQmZYMXBPTWpWTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5UkRGRmRp
NWxhQUJmWDFwT01qVk5aV1JwCllWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlSREJGZGk1bGFB
QmZYMXBPTXpkTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHAKWkdWeVZHaDFiV0pGYkdWdFpX
NTBSREZGZGk1bGFBQmZYMXBPTXpkTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5Vkdo
MQpiV0pGYkdWdFpXNTBSREJGZGk1bGFBQmZYMXBPU3pNM1RXVmthV0ZUYUdGeVpXUlZTVlp2YkhW
dFpWTnNhV1JsY2xSb2RXMWlSV3hsCmJXVnVkRFp5WVdScGRYTkZkaTVsYUFCZlgxcE9OREpOWldS
cFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlRbUZqYTJkeWIzVnUKWkVWc1pXMWxiblJFTVVW
MkxtVm9BRjlmV2s0ME1rMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKQ1lXTnJaM0p2
ZFc1awpSV3hsYldWdWRFUXdSWFl1WldnQVgxOWFUak0xVFdWa2FXRlRhR0Z5WldSVlNVWjFiR3hU
WTNKbFpXNVdiMngxYldWVGJHbGtaWEpFCk1VVjJMbVZvQUY5ZldrNHpOVTFsWkdsaFUyaGhjbVZr
VlVsR2RXeHNVMk55WldWdVZtOXNkVzFsVTJ4cFpHVnlSREJGZGk1bGFBQmYKWDFwT01qRk5aV1Jw
WVZOb1lYSmxaRlZKUTI5dWRISnZiSE5FTVVWMkxtVm9BRjlmV2s0eU1VMWxaR2xoVTJoaGNtVmtW
VWxEYjI1MApjbTlzYzBRd1JYWXVaV2dBWDE5YVRqRTBUV1ZrYVdGVlNVVnNaVzFsYm5SRU1VVjJM
bVZvQUY5ZldrNHhORTFsWkdsaFZVbEZiR1Z0ClpXNTBSREJGZGk1bGFBQmZYMXBPTkRkTlpXUnBZ
Vk5vWVhKbFpGVkpSblZzYkZOamNtVmxibFp2YkhWdFpWTnNhV1JsY2xSb2RXMWkKUld4bGJXVnVk
RVF4UlhZdVpXZ0FYMTlhVGpRM1RXVmthV0ZUYUdGeVpXUlZTVVoxYkd4VFkzSmxaVzVXYjJ4MWJX
VlRiR2xrWlhKVQphSFZ0WWtWc1pXMWxiblJFTUVWMkxtVm9BRjlmV2s1TE5EZE5aV1JwWVZOb1lY
SmxaRlZKUm5Wc2JGTmpjbVZsYmxadmJIVnRaVk5zCmFXUmxjbFJvZFcxaVJXeGxiV1Z1ZERaeVlX
UnBkWE5GZGk1bGFBQmZYMXBIVmxwT01qVk5aV1JwWVZOb1lYSmxaRlZKU1cxaFoyVkYKYkdWdFpX
NTBPV2RzYjNkRGIyeHZja1YyUlRJd1ptbHNiRkpsY0d4aFkyVkhiRzkzUTI5c2IzSUFYMTlhV2s0
eU5VMWxaR2xoVTJoaApjbVZrVlVsSmJXRm5aVVZzWlcxbGJuUTVaMnh2ZDBOdmJHOXlSWFpGTWpC
bWFXeHNVbVZ3YkdGalpVZHNiM2REYjJ4dmNnQmZYMXBIClZscE9NalZOWldScFlWTm9ZWEpsWkZW
SlNXMWhaMlZGYkdWdFpXNTBPV2RzYjNkRGIyeHZja1YyUlRFNGIzUm9aWEpHYVd4c1IyeHYKZDBO
dmJHOXlBRjlmV2xwT01qVk5aV1JwWVZOb1lYSmxaRlZKU1cxaFoyVkZiR1Z0Wlc1ME9XZHNiM2RE
YjJ4dmNrVjJSVEU0YjNSbwpaWEpHYVd4c1IyeHZkME52Ykc5eUFGOWZXa2RXV2t3eU9HWnBablI1
VUdWeVkyVnVkRlJ5WVc1emNHRnlaVzUwVjJocGRHVjJSVGxuCmNtRjVRMjlzYjNJQVgxOWFXa3d5
T0dacFpuUjVVR1Z5WTJWdWRGUnlZVzV6Y0dGeVpXNTBWMmhwZEdWMlJUbG5jbUY1UTI5c2IzSUEK
WDE5YVIxWmFUREkzYldWa2FXRlFSRVpEYkc5elpXUkRZWEIwYVc5dWMwbHRZV2RsZGtVMWFXMWha
MlVBWDE5YVdrd3lOMjFsWkdsaApVRVJHUTJ4dmMyVmtRMkZ3ZEdsdmJuTkpiV0ZuWlhaRk5XbHRZ
V2RsQUY5ZldrZFdXa3d5T0cxbFpHbGhVRVJHUlc1MFpYSkdkV3hzCmMyTnlaV1Z1U1cxaFoyVjJS
VFZwYldGblpRQmZYMXBhVERJNGJXVmthV0ZRUkVaRmJuUmxja1oxYkd4elkzSmxaVzVKYldGblpY
WkYKTldsdFlXZGxBRjlmV2tkV1drd3lPRzFsWkdsaFVFUkdRWFZrYVc5V2IyeDFiV1ZJYVdkb1NX
MWhaMlYyUlRWcGJXRm5aUUJmWDFwYQpUREk0YldWa2FXRlFSRVpCZFdScGIxWnZiSFZ0WlVocFoy
aEpiV0ZuWlhaRk5XbHRZV2RsQUY5ZldrZFdXa3d5TTIxbFpHbGhVRVJHClVHeGhlVUoxZEhSdmJr
bHRZV2RsZGtVMWFXMWhaMlVBWDE5YVdrd3lNMjFsWkdsaFVFUkdVR3hoZVVKMWRIUnZia2x0WVdk
bGRrVTEKYVcxaFoyVUFYMTlhUjFaYVRESXhiV1ZrYVdGUVJFWkNZV05yZDJGeVpFbHRZV2RsZGtV
MWFXMWhaMlVBWDE5YVdrd3lNVzFsWkdsaApVRVJHUW1GamEzZGhjbVJKYldGblpYWkZOV2x0WVdk
bEFGOWZXa2RXV2t3eU1HMWxaR2xoVUVSR1JtOXlkMkZ5WkVsdFlXZGxka1UxCmFXMWhaMlVBWDE5
YVdrd3lNRzFsWkdsaFVFUkdSbTl5ZDJGeVpFbHRZV2RsZGtVMWFXMWhaMlVBWDE5YVIxWmFUREl5
YldWa2FXRlEKUkVaU1pYUnlaV0YwTXpCSmJXRm5aWFpGTldsdFlXZGxBRjlmV2xwTU1qSnRaV1Jw
WVZCRVJsSmxkSEpsWVhRek1FbHRZV2RsZGtVMQphVzFoWjJVQVgxOWFSMVphVERJM2JXVmthV0ZR
UkVaVFpXVnJWRzlTWldGc2RHbHRaVWx0WVdkbGRrVTFhVzFoWjJVQVgxOWFXa3d5Ck4yMWxaR2xo
VUVSR1UyVmxhMVJ2VW1WaGJIUnBiV1ZKYldGblpYWkZOV2x0WVdkbEFGOWZXa2RXV2t3eU4yMWxa
R2xoVUVSR1FYVmsKYVc5V2IyeDFiV1ZQWm1aSmJXRm5aWFpGTldsdFlXZGxBRjlmV2xwTU1qZHRa
V1JwWVZCRVJrRjFaR2x2Vm05c2RXMWxUMlptU1cxaApaMlYyUlRWcGJXRm5aUUJmWDFwSFZscE1N
alJ0WldScFlWQkVSbEJoZFhObFFuVjBkRzl1U1cxaFoyVjJSVFZwYldGblpRQmZYMXBhClRESTBi
V1ZrYVdGUVJFWlFZWFZ6WlVKMWRIUnZia2x0WVdkbGRrVTFhVzFoWjJVQVgxOWFSMVphVERJM2JX
VmthV0ZRUkVaRmVHbDAKUm5Wc2JITmpjbVZsYmtsdFlXZGxka1UxYVcxaFoyVUFYMTlhV2t3eU4y
MWxaR2xoVUVSR1JYaHBkRVoxYkd4elkzSmxaVzVKYldGbgpaWFpGTldsdFlXZGxBRjlmV2xwTU16
TmpjbVZoZEdWTlpXUnBZVkJFUmtOc2IzTmxaRU5oY0hScGIyNXpTVzFoWjJWMlJUVnBiV0ZuClpR
QmZYMXBNTXpkTlpXUnBZVTVsZDFWSlEyeHZjMlZrUTJGd2RHbHZibk5KYldGblpVUmhkR0ZmY0dS
bUFGOWZXa3d6TW1OeVpXRjAKWlVOSFRHRjVaWEpHY205dFVFUkdSR0YwWVZCeWIzWnBaR1Z5VURF
MFEwZEVZWFJoVUhKdmRtbGtaWElBWDE5YVdrd3pOR055WldGMApaVTFsWkdsaFVFUkdSVzUwWlhK
R2RXeHNjMk55WldWdVNXMWhaMlYyUlRWcGJXRm5aUUJmWDFwTU16aE5aV1JwWVU1bGQxVkpSVzUw
ClpYSkdkV3hzYzJOeVpXVnVTVzFoWjJWRVlYUmhYM0JrWmdCZlgxcGFURE0wWTNKbFlYUmxUV1Zr
YVdGUVJFWkJkV1JwYjFadmJIVnQKWlVocFoyaEpiV0ZuWlhaRk5XbHRZV2RsQUY5Zldrd3pPRTFs
WkdsaFRtVjNWVWxCZFdScGIxWnZiSFZ0WlVocFoyaEpiV0ZuWlVSaApkR0ZmY0dSbUFGOWZXbHBN
TWpsamNtVmhkR1ZOWldScFlWQkVSbEJzWVhsQ2RYUjBiMjVKYldGblpYWkZOV2x0WVdkbEFGOWZX
a3d6Ck0wMWxaR2xoVG1WM1ZVbFFiR0Y1UW5WMGRHOXVTVzFoWjJWRVlYUmhYM0JrWmdCZlgxcGFU
REkzWTNKbFlYUmxUV1ZrYVdGUVJFWkMKWVdOcmQyRnlaRWx0WVdkbGRrVTFhVzFoWjJVQVgxOWFU
RE14VFdWa2FXRk9aWGRWU1VKaFkydDNZWEprU1cxaFoyVkVZWFJoWDNCawpaZ0JmWDFwYVRESTJZ
M0psWVhSbFRXVmthV0ZRUkVaR2IzSjNZWEprU1cxaFoyVjJSVFZwYldGblpRQmZYMXBNTXpCTlpX
UnBZVTVsCmQxVkpSbTl5ZDJGeVpFbHRZV2RsUkdGMFlWOXdaR1lBWDE5YVdrd3lPR055WldGMFpV
MWxaR2xoVUVSR1VtVjBjbVZoZERNd1NXMWgKWjJWMlJUVnBiV0ZuWlFCZlgxcE1NekpOWldScFlV
NWxkMVZKVW1WMGNtVmhkRE13U1cxaFoyVkVZWFJoWDNCa1pnQmZYMXBhVERNegpZM0psWVhSbFRX
VmthV0ZRUkVaVFpXVnJWRzlTWldGc2RHbHRaVWx0WVdkbGRrVTFhVzFoWjJVQVgxOWFURE0zVFdW
a2FXRk9aWGRWClNWTmxaV3RVYjFKbFlXeDBhVzFsU1cxaFoyVkVZWFJoWDNCa1pnQmZYMXBhVERN
elkzSmxZWFJsVFdWa2FXRlFSRVpCZFdScGIxWnYKYkhWdFpVOW1aa2x0WVdkbGRrVTFhVzFoWjJV
QVgxOWFURE0zVFdWa2FXRk9aWGRWU1VGMVpHbHZWbTlzZFcxbFQyWm1TVzFoWjJWRQpZWFJoWDNC
a1pnQmZYMXBhVERNd1kzSmxZWFJsVFdWa2FXRlFSRVpRWVhWelpVSjFkSFJ2YmtsdFlXZGxka1Ux
YVcxaFoyVUFYMTlhClRETTBUV1ZrYVdGT1pYZFZTVkJoZFhObFFuVjBkRzl1U1cxaFoyVkVZWFJo
WDNCa1pnQmZYMXBhVERNelkzSmxZWFJsVFdWa2FXRlEKUkVaRmVHbDBSblZzYkhOamNtVmxia2x0
WVdkbGRrVTFhVzFoWjJVQVgxOWFURE0zVFdWa2FXRk9aWGRWU1VWNGFYUkdkV3hzYzJOeQpaV1Z1
U1cxaFoyVkVZWFJoWDNCa1pnQmZYMXBIVmxwT1N6STFUV1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGxS
V3hsYldWdWRERTBaSEpoCmQwSmhZMnRuY205MWJtUkZVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBS
VGQwYjNCR2FXeHNBRjlmV2xwT1N6STFUV1ZrYVdGVGFHRnkKWldSVlNVbHRZV2RsUld4bGJXVnVk
REUwWkhKaGQwSmhZMnRuY205MWJtUkZVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBSVGQwYjNCRwph
V3hzQUY5ZldrZFdXazVMTWpWTlpXUnBZVk5vWVhKbFpGVkpTVzFoWjJWRmJHVnRaVzUwTVRSa2Nt
RjNRbUZqYTJkeWIzVnVaRVZRCk9VTkhRMjl1ZEdWNGREWkRSMUpsWTNSRk1UQnRhV1JrYkdWR2FX
eHNBRjlmV2xwT1N6STFUV1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGwKUld4bGJXVnVkREUwWkhKaGQw
SmhZMnRuY205MWJtUkZVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBSVEV3Yldsa1pHeGxSbWxzYkFC
ZgpYMXBIVmxwT1N6STFUV1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWRERTBaSEpoZDBK
aFkydG5jbTkxYm1SRlVEbERSME52CmJuUmxlSFEyUTBkU1pXTjBSVGxzYjNkbGNrWnBiR3dBWDE5
YVIxWmFUREkxWTNKbFlYUmxSMlZ1WlhKcFkwZHlZWGxIY21Ga2FXVnUKZEZCTFpGTXdYMjFGTVRC
amIyeHZjbE53WVdObEFGOWZXbHBNTWpWamNtVmhkR1ZIWlc1bGNtbGpSM0poZVVkeVlXUnBaVzUw
VUV0awpVekJmYlVVeE1HTnZiRzl5VTNCaFkyVUFYMTlhV2s1TE1qVk5aV1JwWVZOb1lYSmxaRlZK
U1cxaFoyVkZiR1Z0Wlc1ME1UUmtjbUYzClFtRmphMmR5YjNWdVpFVlFPVU5IUTI5dWRHVjRkRFpE
UjFKbFkzUkZObU52Ykc5eWN3QmZYMXBhVGtzeU5VMWxaR2xoVTJoaGNtVmsKVlVsSmJXRm5aVVZz
WlcxbGJuUXhOR1J5WVhkQ1lXTnJaM0p2ZFc1a1JWQTVRMGREYjI1MFpYaDBOa05IVW1WamRFVTVi
RzkzWlhKRwphV3hzQUY5Zldrd3pOV1J5WVhjelVHRnlkRUpoYm01bGNrbHVVbVZqZEZKbGJHRjBh
WFpsVkc5RlpHZGxVRGxEUjBOdmJuUmxlSFEyClEwZFNaV04wTVRCRFIxSmxZM1JGWkdkbFpGQkxk
bEEzUTBkRGIyeHZjbE0wWHdCZlgxcEhWbHBNTVRWa2NtRjNUM1YwWlhKVGFHRmsKYjNkUU9VTkhR
Mjl1ZEdWNGREWkRSMUpsWTNSUVMzWkZNVFZ2ZFhSbGNsTm9ZV1J2ZDBkeVlYa0FYMTlhV2t3eE5X
UnlZWGRQZFhSbApjbE5vWVdSdmQxQTVRMGREYjI1MFpYaDBOa05IVW1WamRGQkxka1V4Tlc5MWRH
VnlVMmhoWkc5M1IzSmhlUUJmWDFwTU1UQmtjbUYzClUyaGhaRzkzVURsRFIwTnZiblJsZUhRMlEw
ZFNaV04wVUV0Mk5rTkhVMmw2WldSUU4wTkhRMjlzYjNJQVgxOWFUREV6WkhKaGQwWnYKWTNWelVt
bHVaMUE1UTBkRGIyNTBaWGgwTmtOSFVtVmpkRkJMZGdCZlgxcEhWbHBPTWpWTlpXUnBZVk5vWVhK
bFpGVkpTVzFoWjJWRgpiR1Z0Wlc1ME5YQmhhVzUwUlZBNVEwZERiMjUwWlhoME5rTkhVbVZqZEVV
eE5tbHVibVZ5VTJoaFpHOTNRMjlzYjNJQVgxOWFXazR5Ck5VMWxaR2xoVTJoaGNtVmtWVWxKYldG
blpVVnNaVzFsYm5RMWNHRnBiblJGVURsRFIwTnZiblJsZUhRMlEwZFNaV04wUlRFMmFXNXUKWlhK
VGFHRmtiM2REYjJ4dmNnQmZYMXBNTVRWa2NtRjNTVzV1WlhKVGFHRmtiM2RRT1VOSFEyOXVkR1Y0
ZERaRFIxSmxZM1JRUzNZMgpRMGRUYVhwbFpGQTNRMGREYjJ4dmNnQmZYMXBhVERFelpISmhkMFp2
WTNWelVtbHVaMUE1UTBkRGIyNTBaWGgwTmtOSFVtVmpkRkJMCmRrVTFjM1I1YkdVQVgxOWFSMVph
VGpJM1RXVmthV0ZUYUdGeVpXUlZTVU5EU1cxaFoyVkZiR1Z0Wlc1ME1UZHNZWGxsY2xkcGRHaEQK
YjI1MFpXNTBjMFZRT1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1JGT1dKc2RXVkRiMnh2Y2dCZlgxcGFU
akkzVFdWa2FXRlRhR0Z5WldSVgpTVU5EU1cxaFoyVkZiR1Z0Wlc1ME1UZHNZWGxsY2xkcGRHaERi
MjUwWlc1MGMwVlFPVU5IUTI5dWRHVjRkRFpEUjFKbFkzUkZPV0pzCmRXVkRiMnh2Y2dCZlgxcEhW
bHBPTXpCTlpXUnBZVk5vWVhKbFpGVkpRbUZqYTJkeWIzVnVaRVZzWlcxbGJuUXhOMnhoZVdWeVYy
bDAKYUVOdmJuUmxiblJ6UlZBNVEwZERiMjUwWlhoME5rTkhVbVZqZEVVM2RHOXdSbWxzYkFCZlgx
cGFUak13VFdWa2FXRlRhR0Z5WldSVgpTVUpoWTJ0bmNtOTFibVJGYkdWdFpXNTBNVGRzWVhsbGNs
ZHBkR2hEYjI1MFpXNTBjMFZRT1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1JGCk9YUnZjRU52Ykc5eWN3
QmZYMXBhVGpNd1RXVmthV0ZUYUdGeVpXUlZTVUpoWTJ0bmNtOTFibVJGYkdWdFpXNTBNVGRzWVhs
bGNsZHAKZEdoRGIyNTBaVzUwYzBWUU9VTkhRMjl1ZEdWNGREWkRSMUpsWTNSRk4zUnZjRVpwYkd3
QVgxOWFSMVphVGpNd1RXVmthV0ZUYUdGeQpaV1JWU1VKaFkydG5jbTkxYm1SRmJHVnRaVzUwTVRk
c1lYbGxjbGRwZEdoRGIyNTBaVzUwYzBWUU9VTkhRMjl1ZEdWNGREWkRSMUpsClkzUkZNVEJ0YVdS
a2JHVkdhV3hzQUY5ZldscE9NekJOWldScFlWTm9ZWEpsWkZWSlFtRmphMmR5YjNWdVpFVnNaVzFs
Ym5ReE4yeGgKZVdWeVYybDBhRU52Ym5SbGJuUnpSVkE1UTBkRGIyNTBaWGgwTmtOSFVtVmpkRVV4
TUcxcFpHUnNaVVpwYkd3QVgxOWFSMVphVGpNdwpUV1ZrYVdGVGFHRnlaV1JWU1VKaFkydG5jbTkx
Ym1SRmJHVnRaVzUwTVRkc1lYbGxjbGRwZEdoRGIyNTBaVzUwYzBWUU9VTkhRMjl1CmRHVjRkRFpE
UjFKbFkzUkZNVEJpYjNSMGIyMUdhV3hzQUY5ZldscE9NekJOWldScFlWTm9ZWEpsWkZWSlFtRmph
MmR5YjNWdVpFVnMKWlcxbGJuUXhOMnhoZVdWeVYybDBhRU52Ym5SbGJuUnpSVkE1UTBkRGIyNTBa
WGgwTmtOSFVtVmpkRVV4TW1KdmRIUnZiVU52Ykc5eQpjd0JmWDFwYVRqTXdUV1ZrYVdGVGFHRnla
V1JWU1VKaFkydG5jbTkxYm1SRmJHVnRaVzUwTVRkc1lYbGxjbGRwZEdoRGIyNTBaVzUwCmMwVlFP
VU5IUTI5dWRHVjRkRFpEUjFKbFkzUkZNVEJpYjNSMGIyMUdhV3hzQUY5ZldrZFdXazR6TUUxbFpH
bGhVMmhoY21Wa1ZVbEMKWVdOclozSnZkVzVrUld4bGJXVnVkREUzYkdGNVpYSlhhWFJvUTI5dWRH
VnVkSE5GVURsRFIwTnZiblJsZUhRMlEwZFNaV04wUlRFdwpkRzl3UW05eVpHVnlNUUJmWDFwYVRq
TXdUV1ZrYVdGVGFHRnlaV1JWU1VKaFkydG5jbTkxYm1SRmJHVnRaVzUwTVRkc1lYbGxjbGRwCmRH
aERiMjUwWlc1MGMwVlFPVU5IUTI5dWRHVjRkRFpEUjFKbFkzUkZNVEIwYjNCQ2IzSmtaWEl4QUY5
ZldrZFdXazR6TUUxbFpHbGgKVTJoaGNtVmtWVWxDWVdOclozSnZkVzVrUld4bGJXVnVkREUzYkdG
NVpYSlhhWFJvUTI5dWRHVnVkSE5GVURsRFIwTnZiblJsZUhRMgpRMGRTWldOMFJURXdkRzl3UW05
eVpHVnlNZ0JmWDFwYVRqTXdUV1ZrYVdGVGFHRnlaV1JWU1VKaFkydG5jbTkxYm1SRmJHVnRaVzUw
Ck1UZHNZWGxsY2xkcGRHaERiMjUwWlc1MGMwVlFPVU5IUTI5dWRHVjRkRFpEUjFKbFkzUkZNVEIw
YjNCQ2IzSmtaWEl5QUY5ZldrZFcKV2s0ek9VMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5z
YVdSbGNsUm9kVzFpUld4bGJXVnVkREUzYkdGNVpYSlhhWFJvUTI5dQpkR1Z1ZEhORlVEbERSME52
Ym5SbGVIUTJRMGRTWldOMFJURTFjSEpsYzNObFpFZHlZV1JwWlc1MEFGOWZXbHBPTXpsTlpXUnBZ
Vk5vCllYSmxaRlZKVkdsdFpXeHBibVZUYkdsa1pYSlVhSFZ0WWtWc1pXMWxiblF4TjJ4aGVXVnlW
MmwwYUVOdmJuUmxiblJ6UlZBNVEwZEQKYjI1MFpYaDBOa05IVW1WamRFVXhNM0J5WlhOelpXUkRi
Mnh2Y25NQVgxOWFXazR6T1UxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkdsdQpaVk5zYVdSbGNsUm9k
VzFpUld4bGJXVnVkREUzYkdGNVpYSlhhWFJvUTI5dWRHVnVkSE5GVURsRFIwTnZiblJsZUhRMlEw
ZFNaV04wClJURTFjSEpsYzNObFpFZHlZV1JwWlc1MEFGOWZXa2RXV2s0ek9VMWxaR2xoVTJoaGNt
VmtWVWxVYVcxbGJHbHVaVk5zYVdSbGNsUm8KZFcxaVJXeGxiV1Z1ZERFM2JHRjVaWEpYYVhSb1Ey
OXVkR1Z1ZEhORlVEbERSME52Ym5SbGVIUTJRMGRTWldOMFJURTBibTl5YldGcwpSM0poWkdsbGJu
UUFYMTlhV2s0ek9VMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5zYVdSbGNsUm9kVzFpUld4
bGJXVnVkREUzCmJHRjVaWEpYYVhSb1EyOXVkR1Z1ZEhORlVEbERSME52Ym5SbGVIUTJRMGRTWldO
MFJURXlibTl5YldGc1EyOXNiM0p6QUY5ZldscE8KTXpsTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4
cGJtVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUXhOMnhoZVdWeVYybDBhRU52Ym5SbApiblJ6UlZB
NVEwZERiMjUwWlhoME5rTkhVbVZqZEVVeE5HNXZjbTFoYkVkeVlXUnBaVzUwQUY5ZldrZFdXazR6
T1UxbFpHbGhVMmhoCmNtVmtWVWxVYVcxbGJHbHVaVk5zYVdSbGNsUm9kVzFpUld4bGJXVnVkREUz
YkdGNVpYSlhhWFJvUTI5dWRHVnVkSE5GVURsRFIwTnYKYm5SbGVIUTJRMGRTWldOMFJURTBhR2xu
YUd4cFoyaDBRMjlzYjNJQVgxOWFXazR6T1UxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkdsdQpaVk5z
YVdSbGNsUm9kVzFpUld4bGJXVnVkREUzYkdGNVpYSlhhWFJvUTI5dWRHVnVkSE5GVURsRFIwTnZi
blJsZUhRMlEwZFNaV04wClJURTBhR2xuYUd4cFoyaDBRMjlzYjNJQVgxOWFSMVphVGtzeU4wMWxa
R2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5zYVdSbGNqSXkKYUdsbmFHeHBaMmgwVlc1c2IyRmta
V1JTWVc1blpVVlFPVU5IUTI5dWRHVjRkRFpEUjFKbFkzUkZNVE5uY21GNVJtbHNiRU52Ykc5eQpB
RjlmV2xwT1N6STNUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVsVTJ4cFpHVnlNakpvYVdkb2JH
bG5hSFJWYm14dllXUmxaRkpoCmJtZGxSVkE1UTBkRGIyNTBaWGgwTmtOSFVtVmpkRVV4TTJkeVlY
bEdhV3hzUTI5c2IzSUFYMTlhVERJellXUmtVbTkxYm1SbFpGSmwKWTNSVWIwTnZiblJsZUhSUU9V
TkhRMjl1ZEdWNGREWkRSMUpsWTNSa0FGOWZXa2RXV2s0eU4wMWxaR2xoVTJoaGNtVmtWVWxVYVcx
bApiR2x1WlZOc2FXUmxjakUzYkdGNVpYSlhhWFJvUTI5dWRHVnVkSE5GVURsRFIwTnZiblJsZUhR
MlEwZFNaV04wUlRFNFltRmphMmR5CmIzVnVaRWR5WVdScFpXNTBBRjlmV2xwT01qZE5aV1JwWVZO
b1lYSmxaRlZKVkdsdFpXeHBibVZUYkdsa1pYSXhOMnhoZVdWeVYybDAKYUVOdmJuUmxiblJ6UlZB
NVEwZERiMjUwWlhoME5rTkhVbVZqZEVVMlkyOXNiM0p6QUY5ZldscE9NamROWldScFlWTm9ZWEps
WkZWSgpWR2x0Wld4cGJtVlRiR2xrWlhJeE4yeGhlV1Z5VjJsMGFFTnZiblJsYm5SelJWQTVRMGRE
YjI1MFpYaDBOa05IVW1WamRFVXhPR0poClkydG5jbTkxYm1SSGNtRmthV1Z1ZEFCZlgxcEhWbHBP
TWpkTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRiR2xrWlhJeE4yeGgKZVdWeVYybDBhRU52
Ym5SbGJuUnpSVkE1UTBkRGIyNTBaWGgwTmtOSFVtVmpkRVV4TVhOb1lXUnZkME52Ykc5eUFGOWZX
bHBPTWpkTgpaV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUYkdsa1pYSXhOMnhoZVdWeVYybDBh
RU52Ym5SbGJuUnpSVkE1UTBkRGIyNTBaWGgwCk5rTkhVbVZqZEVVeE1YTm9ZV1J2ZDBOdmJHOXlB
RjlmV2tkV1drNHlOMDFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmwKY2pWd1lXbHVk
RVZRT1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1JGTVRSb2FXZG9iR2xuYUhSRGIyeHZjZ0JmWDFwYVRq
STNUV1ZrYVdGVAphR0Z5WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5TlhCaGFXNTBSVkE1UTBkRGIy
NTBaWGgwTmtOSFVtVmpkRVV4TkdocFoyaHNhV2RvCmRFTnZiRzl5QUY5ZldrZFdXazR5TlUxbFpH
bGhVMmhoY21Wa1ZVbFdiMngxYldWVGJHbGtaWEl4TjJ4aGVXVnlWMmwwYUVOdmJuUmwKYm5SelJW
QTVRMGREYjI1MFpYaDBOa05IVW1WamRFVXhPR0poWTJ0bmNtOTFibVJIY21Ga2FXVnVkQUJmWDFw
YVRqSTFUV1ZrYVdGVAphR0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmxjakUzYkdGNVpYSlhhWFJvUTI5
dWRHVnVkSE5GVURsRFIwTnZiblJsZUhRMlEwZFNaV04wClJUWmpiMnh2Y25NQVgxOWFXazR5TlUx
bFpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVGJHbGtaWEl4TjJ4aGVXVnlWMmwwYUVOdmJuUmwKYm5S
elJWQTVRMGREYjI1MFpYaDBOa05IVW1WamRFVXhPR0poWTJ0bmNtOTFibVJIY21Ga2FXVnVkQUJm
WDFwSFZscE9NalZOWldScApZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5TVRkc1lYbGxjbGRw
ZEdoRGIyNTBaVzUwYzBWUU9VTkhRMjl1ZEdWNGREWkRSMUpsClkzUkZNVFJvYVdkb2JHbG5hSFJE
YjJ4dmNnQmZYMXBhVGpJMVRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsY2pFM2JHRjUK
WlhKWGFYUm9RMjl1ZEdWdWRITkZVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBSVEUwYUdsbmFHeHBa
MmgwUTI5c2IzSUFYMTlhVERJMwpZM0psWVhSbFEyOXRjR0YwYVdKc1pVeGhlV1Z5U1c1U1pXTjBV
RGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBVRXN4TkY5ZlEwWkVhV04wCmFXOXVZWEo1QUY5ZldrZFdX
azR6TjAxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVGJHbGtaWEpVYUhWdFlrVnNaVzFsYm5ReE4y
eGgKZVdWeVYybDBhRU52Ym5SbGJuUnpSVkE1UTBkRGIyNTBaWGgwTmtOSFVtVmpkRVV4TlhCeVpY
TnpaV1JIY21Ga2FXVnVkQUJmWDFwYQpUak0zVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FX
UmxjbFJvZFcxaVJXeGxiV1Z1ZERFM2JHRjVaWEpYYVhSb1EyOXVkR1Z1CmRITkZVRGxEUjBOdmJu
UmxlSFEyUTBkU1pXTjBSVEV6Y0hKbGMzTmxaRU52Ykc5eWN3QmZYMXBhVGpNM1RXVmthV0ZUYUdG
eVpXUlYKU1ZadmJIVnRaVk5zYVdSbGNsUm9kVzFpUld4bGJXVnVkREUzYkdGNVpYSlhhWFJvUTI5
dWRHVnVkSE5GVURsRFIwTnZiblJsZUhRMgpRMGRTWldOMFJURTFjSEpsYzNObFpFZHlZV1JwWlc1
MEFGOWZXa2RXV2s0ek4wMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrClpYSlVhSFZ0WWtW
c1pXMWxiblF4TjJ4aGVXVnlWMmwwYUVOdmJuUmxiblJ6UlZBNVEwZERiMjUwWlhoME5rTkhVbVZq
ZEVVeE5HNXYKY20xaGJFZHlZV1JwWlc1MEFGOWZXbHBPTXpkTlpXUnBZVk5vWVhKbFpGVkpWbTlz
ZFcxbFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1MApNVGRzWVhsbGNsZHBkR2hEYjI1MFpXNTBjMFZR
T1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1JGTVRKdWIzSnRZV3hEYjJ4dmNuTUFYMTlhCldrNHpOMDFs
WkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsa1pYSlVhSFZ0WWtWc1pXMWxiblF4TjJ4aGVXVnlW
MmwwYUVOdmJuUmwKYm5SelJWQTVRMGREYjI1MFpYaDBOa05IVW1WamRFVXhORzV2Y20xaGJFZHlZ
V1JwWlc1MEFGOWZXa2RXV2s0ek4wMWxaR2xoVTJoaApjbVZrVlVsV2IyeDFiV1ZUYkdsa1pYSlVh
SFZ0WWtWc1pXMWxiblF4TjJ4aGVXVnlWMmwwYUVOdmJuUmxiblJ6UlZBNVEwZERiMjUwClpYaDBO
a05IVW1WamRFVXhOR2hwWjJoc2FXZG9kRU52Ykc5eUFGOWZXbHBPTXpkTlpXUnBZVk5vWVhKbFpG
VkpWbTlzZFcxbFUyeHAKWkdWeVZHaDFiV0pGYkdWdFpXNTBNVGRzWVhsbGNsZHBkR2hEYjI1MFpX
NTBjMFZRT1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1JGTVRSbwphV2RvYkdsbmFIUkRiMnh2Y2dCZlgx
cEhWbHBPTXpkTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5VkdoMWJXSkZiR1Z0ClpX
NTBNVGRzWVhsbGNsZHBkR2hEYjI1MFpXNTBjMFZRT1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1JGTVRa
cGJtNWxjbE5vWVdSdmQwTnYKYkc5eUFGOWZXbHBPTXpkTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcx
bFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1ME1UZHNZWGxsY2xkcApkR2hEYjI1MFpXNTBjMFZRT1VO
SFEyOXVkR1Y0ZERaRFIxSmxZM1JGTVRacGJtNWxjbE5vWVdSdmQwTnZiRzl5QUY5ZldrZFdXazQw
Ck1rMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKQ1lXTnJaM0p2ZFc1a1JXeGxiV1Z1
ZERFM2JHRjVaWEpYYVhSb1EyOXUKZEdWdWRITkZVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBSVEV5
Wm1sc2JFZHlZV1JwWlc1MEFGOWZXbHBPTkRKTlpXUnBZVk5vWVhKbApaRlZKVm05c2RXMWxVMnhw
WkdWeVFtRmphMmR5YjNWdVpFVnNaVzFsYm5ReE4yeGhlV1Z5VjJsMGFFTnZiblJsYm5SelJWQTVR
MGRECmIyNTBaWGgwTmtOSFVtVmpkRVUyWTI5c2IzSnpBRjlmV2xwT05ESk5aV1JwWVZOb1lYSmxa
RlZKVm05c2RXMWxVMnhwWkdWeVFtRmoKYTJkeWIzVnVaRVZzWlcxbGJuUXhOMnhoZVdWeVYybDBh
RU52Ym5SbGJuUnpSVkE1UTBkRGIyNTBaWGgwTmtOSFVtVmpkRVV4TW1acApiR3hIY21Ga2FXVnVk
QUJmWDFwSFZscE9OREpOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlRbUZqYTJkeWIz
VnVaRVZzClpXMWxiblExY0dGcGJuUkZVRGxEUjBOdmJuUmxlSFEyUTBkU1pXTjBSVEUyYVc1dVpY
SlRhR0ZrYjNkRGIyeHZjZ0JmWDFwYVRqUXkKVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FX
Umxja0poWTJ0bmNtOTFibVJGYkdWdFpXNTBOWEJoYVc1MFJWQTVRMGREYjI1MApaWGgwTmtOSFVt
VmpkRVV4Tm1sdWJtVnlVMmhoWkc5M1EyOXNiM0lBWDE5YVIxWmFUak0xVFdWa2FXRlRhR0Z5WldS
VlNVWjFiR3hUClkzSmxaVzVXYjJ4MWJXVlRiR2xrWlhJeE4yeGhlV1Z5VjJsMGFFTnZiblJsYm5S
elJWQTVRMGREYjI1MFpYaDBOa05IVW1WamRFVTQKWjNKaFpHbGxiblFBWDE5YVdrNHpOVTFsWkds
aFUyaGhjbVZrVlVsR2RXeHNVMk55WldWdVZtOXNkVzFsVTJ4cFpHVnlNVGRzWVhsbApjbGRwZEdo
RGIyNTBaVzUwYzBWUU9VTkhRMjl1ZEdWNGREWkRSMUpsWTNSRk5tTnZiRzl5Y3dCZlgxcGFUak0x
VFdWa2FXRlRhR0Z5ClpXUlZTVVoxYkd4VFkzSmxaVzVXYjJ4MWJXVlRiR2xrWlhJeE4yeGhlV1Z5
VjJsMGFFTnZiblJsYm5SelJWQTVRMGREYjI1MFpYaDAKTmtOSFVtVmpkRVU0WjNKaFpHbGxiblFB
WDE5YVIxWmFUak0xVFdWa2FXRlRhR0Z5WldSVlNVWjFiR3hUWTNKbFpXNVdiMngxYldWVApiR2xr
WlhJeE4yeGhlV1Z5VjJsMGFFTnZiblJsYm5SelJWQTVRMGREYjI1MFpYaDBOa05IVW1WamRFVXhN
WE5vWVdSdmQwTnZiRzl5CkFGOWZXbHBPTXpWTlpXUnBZVk5vWVhKbFpGVkpSblZzYkZOamNtVmxi
bFp2YkhWdFpWTnNhV1JsY2pFM2JHRjVaWEpYYVhSb1EyOXUKZEdWdWRITkZVRGxEUjBOdmJuUmxl
SFEyUTBkU1pXTjBSVEV4YzJoaFpHOTNRMjlzYjNJQVgxOWFSMVphVGpNMVRXVmthV0ZUYUdGeQpa
V1JWU1VaMWJHeFRZM0psWlc1V2IyeDFiV1ZUYkdsa1pYSTFjR0ZwYm5SRlVEbERSME52Ym5SbGVI
UTJRMGRTWldOMFJURTBhR2xuCmFHeHBaMmgwUTI5c2IzSUFYMTlhV2s0ek5VMWxaR2xoVTJoaGNt
VmtWVWxHZFd4c1UyTnlaV1Z1Vm05c2RXMWxVMnhwWkdWeU5YQmgKYVc1MFJWQTVRMGREYjI1MFpY
aDBOa05IVW1WamRFVXhOR2hwWjJoc2FXZG9kRU52Ykc5eUFGOWZXa2RXV2s1TE1qRk5aV1JwWVZO
bwpZWEpsWkZWSlEyOXVkSEp2YkhNeE5HTnZiblJ5YjJ4R2IzSlFZWEowUldsRk1UTm5aVzVsY21s
alFuVjBkRzl1QUY5ZldscE9Tekl4ClRXVmthV0ZUYUdGeVpXUlZTVU52Ym5SeWIyeHpNVFJqYjI1
MGNtOXNSbTl5VUdGeWRFVnBSVEV6WjJWdVpYSnBZMEoxZEhSdmJnQmYKWDFwSFZscE9Tekl4VFdW
a2FXRlRhR0Z5WldSVlNVTnZiblJ5YjJ4ek1UUmpiMjUwY205c1JtOXlVR0Z5ZEVWcFJURTBZMkZ3
ZEdsdgpibk5DZFhSMGIyNEFYMTlhV2s1TE1qRk5aV1JwWVZOb1lYSmxaRlZKUTI5dWRISnZiSE14
TkdOdmJuUnliMnhHYjNKUVlYSjBSV2xGCk1UUmpZWEIwYVc5dWMwSjFkSFJ2YmdCZlgxcEhWbHBP
U3pJeFRXVmthV0ZUYUdGeVpXUlZTVU52Ym5SeWIyeHpNVFJqYjI1MGNtOXMKUm05eVVHRnlkRVZw
UlRFemRHbHRaV3hwYm1WVWFIVnRZZ0JmWDFwYVRrc3lNVTFsWkdsaFUyaGhjbVZrVlVsRGIyNTBj
bTlzY3pFMApZMjl1ZEhKdmJFWnZjbEJoY25SRmFVVXhNM1JwYldWc2FXNWxWR2gxYldJQVgxOWFS
MVphVGtzeU1VMWxaR2xoVTJoaGNtVmtWVWxECmIyNTBjbTlzY3pFMFkyOXVkSEp2YkVadmNsQmhj
blJGYVVVeE1HSmhZMnRuY205MWJtUUFYMTlhV2s1TE1qRk5aV1JwWVZOb1lYSmwKWkZWSlEyOXVk
SEp2YkhNeE5HTnZiblJ5YjJ4R2IzSlFZWEowUldsRk1UQmlZV05yWjNKdmRXNWtBRjlmV2tkV1dr
NUxNakZOWldScApZVk5vWVhKbFpGVkpRMjl1ZEhKdmJITXhOR052Ym5SeWIyeEdiM0pRWVhKMFJX
bEZNakoyYjJ4MWJXVlRiR2xrWlhKQ1lXTnJaM0p2CmRXNWtBRjlmV2xwT1N6SXhUV1ZrYVdGVGFH
RnlaV1JWU1VOdmJuUnliMnh6TVRSamIyNTBjbTlzUm05eVVHRnlkRVZwUlRJeWRtOXMKZFcxbFUy
eHBaR1Z5UW1GamEyZHliM1Z1WkFCZlgxcEhWbHBPU3pJeFRXVmthV0ZUYUdGeVpXUlZTVU52Ym5S
eWIyeHpNVFJqYjI1MApjbTlzUm05eVVHRnlkRVZwUlRaemJHbGtaWElBWDE5YVdrNUxNakZOWldS
cFlWTm9ZWEpsWkZWSlEyOXVkSEp2YkhNeE5HTnZiblJ5CmIyeEdiM0pRWVhKMFJXbEZObk5zYVdS
bGNnQmZYMXBIVmxwT1N6SXhUV1ZrYVdGVGFHRnlaV1JWU1VOdmJuUnliMnh6TVRSamIyNTAKY205
c1JtOXlVR0Z5ZEVWcFJURXhkbTlzZFcxbFZHaDFiV0lBWDE5YVdrNUxNakZOWldScFlWTm9ZWEps
WkZWSlEyOXVkSEp2YkhNeApOR052Ym5SeWIyeEdiM0pRWVhKMFJXbEZNVEYyYjJ4MWJXVlVhSFZ0
WWdCZlgxcEhWbHBPU3pJeFRXVmthV0ZUYUdGeVpXUlZTVU52CmJuUnliMnh6TVRSamIyNTBjbTlz
Um05eVVHRnlkRVZwUlRJeVpuVnNiRk5qY21WbGJsWnZiSFZ0WlZOc2FXUmxjZ0JmWDFwYVRrc3kK
TVUxbFpHbGhVMmhoY21Wa1ZVbERiMjUwY205c2N6RTBZMjl1ZEhKdmJFWnZjbEJoY25SRmFVVXlN
bVoxYkd4VFkzSmxaVzVXYjJ4MQpiV1ZUYkdsa1pYSUFYMTlhUjFaYVRrc3lNVTFsWkdsaFUyaGhj
bVZrVlVsRGIyNTBjbTlzY3pFMFkyOXVkSEp2YkVadmNsQmhjblJGCmFVVXlNV1oxYkd4VFkzSmxa
VzVXYjJ4MWJXVlVhSFZ0WWdCZlgxcGFUa3N5TVUxbFpHbGhVMmhoY21Wa1ZVbERiMjUwY205c2N6
RTAKWTI5dWRISnZiRVp2Y2xCaGNuUkZhVVV5TVdaMWJHeFRZM0psWlc1V2IyeDFiV1ZVYUhWdFln
QmZYMXBIVmxwT1N6SXhUV1ZrYVdGVAphR0Z5WldSVlNVTnZiblJ5YjJ4ek5uTnNhV1JsY2tWMlJU
RXljMmhoY21Wa1UyeHBaR1Z5QUY5ZldscE9Tekl4VFdWa2FXRlRhR0Z5ClpXUlZTVU52Ym5SeWIy
eHpObk5zYVdSbGNrVjJSVEV5YzJoaGNtVmtVMnhwWkdWeUFFVklYMlp5WVcxbE1BQmZYMXBNTXpW
a2NtRjMKTTFCaGNuUkNZVzV1WlhKSmJsSmxZM1JTWld4aGRHbDJaVlJ2UldSblpWQTVRMGREYjI1
MFpYaDBOa05IVW1WamRERXdRMGRTWldOMApSV1JuWldSUVMzWlFOME5IUTI5c2IzSlRORjh1Wldn
QVgxOWFUREV6WkhKaGQwWnZZM1Z6VW1sdVoxQTVRMGREYjI1MFpYaDBOa05IClVtVmpkRkJMZGk1
bGFBQmZYMXBNTVRWa2NtRjNTVzV1WlhKVGFHRmtiM2RRT1VOSFEyOXVkR1Y0ZERaRFIxSmxZM1JR
UzNZMlEwZFQKYVhwbFpGQTNRMGREYjJ4dmNpNWxhQUJmWDFwTU1UQmtjbUYzVTJoaFpHOTNVRGxE
UjBOdmJuUmxlSFEyUTBkU1pXTjBVRXQyTmtOSApVMmw2WldSUU4wTkhRMjlzYjNJdVpXZ0FYMTlh
VERJellXUmtVbTkxYm1SbFpGSmxZM1JVYjBOdmJuUmxlSFJRT1VOSFEyOXVkR1Y0CmREWkRSMUps
WTNSa0xtVm9BRjlmV2t3eU4yTnlaV0YwWlVOdmJYQmhkR2xpYkdWTVlYbGxja2x1VW1WamRGQTVR
MGREYjI1MFpYaDAKTmtOSFVtVmpkRkJMTVRSZlgwTkdSR2xqZEdsdmJtRnllUzVsYUFCZlgxcE1N
ekpqY21WaGRHVkRSMHhoZVdWeVJuSnZiVkJFUmtSaApkR0ZRY205MmFXUmxjbEF4TkVOSFJHRjBZ
VkJ5YjNacFpHVnlMbVZvQUFBQUl6RXZNamdnSUNBZ0lDQWdJQ0FnSURFek56RTNOell3Ck16UWdJ
RFV3TVNBZ0lESXdJQ0FnSURFd01EWTBOQ0FnTWprNU5ERXlJQ0FnSUdBS1YyVmlTMmwwVTNsemRH
VnRTVzUwWlhKbVlXTmwKTG04QUFBQUFBTS82N2Y0SEFBQUJBd0FBQUFFQUFBQURBQUFBQUFzQUFB
QWdBQUFBQUFBQUdRQUFBSmdLQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFDZ0lB
TUFBQUFBQUNBTEFBQUFBQUFBY0I4REFBQUFBQUFIQUFBQUJ3QUFBQ0VBQUFBQUFBQUFYMTkwClpY
aDBBQUFBQUFBQUFBQUFBRjlmVkVWWVZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQmhBQUFBQUFB
QUlBc0FBQVFBQUFDUUtnTUEKNFFVQUFBQUVBSUFBQUFBQUFBQUFBQUFBQUFCZlgyeHBkR1Z5WVd3
NEFBQUFBQUFBWDE5VVJWaFVBQUFBQUFBQUFBQUFBRUJoQUFBQQpBQUFBeUFBQUFBQUFBQUJnYkFB
QUF3QUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFGOWZiR2wwWlhKaGJEUUFBQUFB
CkFBQmZYMVJGV0ZRQUFBQUFBQUFBQUFBQUNHSUFBQUFBQUFBSUFBQUFBQUFBQUNodEFBQUNBQUFB
QUFBQUFBQUFBQUFEQUFBQUFBQUEKQUFBQUFBQUFBQUFBWDE5amIyNXpkQUFBQUFBQUFBQUFBRjlm
VkVWWVZBQUFBQUFBQUFBQUFBQVFZZ0FBQUFBQUFFZ0FBQUFBQUFBQQpNRzBBQUFRQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCZlgySnpjd0FBQUFBQUFBQUFBQUFBWDE5RVFWUkJB
QUFBCkFBQUFBQUFBQUhBZkF3QUFBQUFBTUFFQUFBQUFBQUFBQUFBQUF3QUFBQUFBQUFBQUFBQUFB
UUFBQUFBQUFBQUFBQUFBQUFBQUFGOWYKWTNOMGNtbHVad0FBQUFBQUFBQmZYMVJGV0ZRQUFBQUFB
QUFBQUFBQVdHSUFBQUFBQUFDK0NnQUFBQUFBQUhodEFBQUFBQUFBQUFBQQpBQUFBQUFBQ0FBQUFB
QUFBQUFBQUFBQUFBQUFBWDE5dlltcGpYMk5zWVhOemNtVm1jMTlmUkVGVVFRQUFBQUFBQUFBQUFB
QVliUUFBCkFBQUFBTkFBQUFBQUFBQUFPSGdBQUFNQUFBQ1lXUU1BR2dBQUFBQUFBQkFBQUFBQUFB
QUFBQUFBQUFCZlgyOWlhbU5mYldWMGFHNWgKYldVQVgxOVVSVmhVQUFBQUFBQUFBQUFBQU9odEFB
QUFBQUFBbXdvQUFBQUFBQUFJZVFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQQpBQUFBQUFBQUFB
QUFBRjlmYjJKcVkxOXpaV3h5WldaekFBQmZYMFJCVkVFQUFBQUFBQUFBQUFBQWlIZ0FBQUFBQUFC
UUJBQUFBQUFBCkFLaURBQUFEQUFBQWFGb0RBSW9BQUFBRkFBQVFBQUFBQUFBQUFBQUFBQUFBWDE5
dlltcGpYMjF6WjNKbFpuTUFBRjlmUkVGVVFRQUEKQUFBQUFBQUFBQURnZkFBQUFBQUFBTkFBQUFB
QUFBQUFBSWdBQUFRQUFBQzRYZ01BR2dBQUFBc0FBQUFBQUFBQUFBQUFBQUFBQUFCZgpYMk5tYzNS
eWFXNW5BQUFBQUFBQVgxOUVRVlJCQUFBQUFBQUFBQUFBQUxCOUFBQUFBQUFBZ0FNQUFBQUFBQURR
aUFBQUJBQUFBSWhmCkF3QTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRjlmYjJKcVkxOWpiR0Z6
YzI1aGJXVmZYMVJGV0ZRQUFBQUFBQUFBQUFBQU1JRUEKQUFBQUFBQVdBQUFBQUFBQUFGQ01BQUFB
QUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBWDE5dlltcGpYMjFsZEdoMAplWEJs
QUY5ZlZFVllWQUFBQUFBQUFBQUFBQUJHZ1FBQUFBQUFBQmNBQUFBQUFBQUFab3dBQUFBQUFBQUFB
QUFBQUFBQUFBSUFBQUFBCkFBQUFBQUFBQUFBQUFBQmZYMjlpYW1OZlkyOXVjM1FBQUFBQVgxOUVR
VlJCQUFBQUFBQUFBQUFBQUdDQkFBQUFBQUFBVUFBQUFBQUEKQUFDQWpBQUFBd0FBQUVoaEF3QUdB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRjlmWkdGMFlRQUFBQUFBQUFBQUFBQmZYMFJCVkVFQQpB
QUFBQUFBQUFBQUFzSUVBQUFBQUFBQVFBQUFBQUFBQUFOQ01BQUFEQUFBQWVHRURBQUlBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBClgxOXZZbXBqWDJOaGRHeHBjM1FBQUY5ZlJFRlVRUUFBQUFBQUFB
QUFBQURBZ1FBQUFBQUFBQWdBQUFBQUFBQUE0SXdBQUFNQUFBQ0kKWVFNQUFRQUFBQUFBQUJBQUFB
QUFBQUFBQUFBQUFBQmZYMjlpYW1OZmFXMWhaMlZwYm1adlgxOUVRVlJCQUFBQUFBQUFBQUFBQU1p
QgpBQUFBQUFBQUNBQUFBQUFBQUFEb2pBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFB
QUFBQUFBRjlmWkdWaWRXZGZhVzVtCmJ3QUFBQUJmWDBSWFFWSkdBQUFBQUFBQUFBQUEwSUVBQUFB
QUFBQnl4UUFBQUFBQUFQQ01BQUFBQUFBQWtHRURBRlFDQUFBQUFBQUMKQUFBQUFBQUFBQUFBQUFB
QVgxOWtaV0oxWjE5aFltSnlaWFlBQUY5ZlJGZEJVa1lBQUFBQUFBQUFBQUJDUndFQUFBQUFBTk1G
QUFBQQpBQUFBWWxJQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQmZYMlJs
WW5WblgyRnlZVzVuWlhNQVgxOUVWMEZTClJnQUFBQUFBQUFBQUFCVk5BUUFBQUFBQUFBQUFBQUFB
QUFBMVdBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUEKQUY5ZlpHVmlkV2Rm
YldGamFXNW1id0JmWDBSWFFWSkdBQUFBQUFBQUFBQUFGVTBCQUFBQUFBQUFBQUFBQUFBQUFEVllB
UUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQVgxOWtaV0oxWjE5c2FXNWxB
QUFBQUY5ZlJGZEJVa1lBQUFBQUFBQUFBQUFWClRRRUFBQUFBQUU4WkFBQUFBQUFBTlZnQkFBQUFB
QUF3ZEFNQUFRQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQmZYMlJsWW5WblgyeHYKWXdBQUFBQUFY
MTlFVjBGU1JnQUFBQUFBQUFBQUFHUm1BUUFBQUFBQXJGNEFBQUFBQUFDRWNRRUFBQUFBQURoMEF3
Q0tCZ0FBQUFBQQpBZ0FBQUFBQUFBQUFBQUFBQUY5ZlpHVmlkV2RmY0hWaWRIbHdaWE5mWDBSWFFW
SkdBQUFBQUFBQUFBQUFFTVVCQUFBQUFBQ2RCd0FBCkFBQUFBRERRQVFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFDQUFBQUFBQUFBQUFBQUFBQVgxOWtaV0oxWjE5emRISUFBQUFBQUY5ZlJGZEIKVWtZQUFB
QUFBQUFBQUFDdHpBRUFBQUFBQUVyRkFBQUFBQUFBemRjQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJ
QUFBQUFBQUFBQUFBQQpBQUJmWDJSbFluVm5YM0poYm1kbGN3QUFYMTlFVjBGU1JnQUFBQUFBQUFB
QUFQZVJBZ0FBQUFBQU1BZ0FBQUFBQUFBWG5RSUFBQUFBCkFJaW9Bd0MwQUFBQUFBQUFBZ0FBQUFB
QUFBQUFBQUFBQUY5ZlpHVmlkV2RmYVc1c2FXNWxaQUJmWDBSWFFWSkdBQUFBQUFBQUFBQUEKSjVv
Q0FBQUFBQUNNQlFBQUFBQUFBRWVsQWdBQUFBQUFLSzREQUZFQUFBQUFBQUFDQUFBQUFBQUFBQUFB
QUFBQVgxOWhjSEJzWlY5dQpZVzFsY3dBQUFGOWZSRmRCVWtZQUFBQUFBQUFBQUFDem53SUFBQUFB
QUp3ZUFBQUFBQUFBMDZvQ0FBQUFBQUN3c0FNQVNnSUFBQUFBCkFBSUFBQUFBQUFBQUFBQUFBQUJm
WDJGd2NHeGxYMjlpYW1NQUFBQUFYMTlFVjBGU1JnQUFBQUFBQUFBQUFFKytBZ0FBQUFBQVdBQUEK
QUFBQUFBQnZ5UUlBQUFBQUFBRERBd0FFQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUY5ZllYQndi
R1ZmYm1GdFpYTndZV05mWDBSWApRVkpHQUFBQUFBQUFBQUFBcDc0Q0FBQUFBQUFrQUFBQUFBQUFB
TWZKQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBCkFBQUFYMTloY0hCc1pWOTBl
WEJsY3dBQUFGOWZSRmRCVWtZQUFBQUFBQUFBQUFETHZnSUFBQUFBQUVrakFBQUFBQUFBNjhrQ0FB
QUEKQUFBZ3d3TUFaQUlBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUJmWDJOdmJYQmhZM1JmZFc1M2FX
NWtYMTlNUkFBQUFBQUFBQUFBQUFBQQpBQmppQWdBQUFBQUF3Qm9BQUFBQUFBQTQ3UUlBQXdBQUFF
RFdBd0RXQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUY5ZlpXaGZabkpoCmJXVUFBQUFBQUFCZlgx
UkZXRlFBQUFBQUFBQUFBQUFBMlB3Q0FBQUFBQUNZSWdBQUFBQUFBUGdIQXdBREFBQUFBQUFBQUFB
QUFBQUwKQUFCb0FBQUFBQUFBQUFBQUFBQUFBZ0FBQUJnQUFBRHczQU1BRVFRQUFBQWVCQUIwY3dB
QUN3QUFBRkFBQUFBQUFBQUFRQUVBQUVBQgpBQUNrQVFBQTVBSUFBQzBCQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUJWU0lu
bFNJc0ZBQUFBQUVpRndIUURYZi9nU0kwOUFBQUFBRWlOTlFBQUFBQklqUTBBQUFBQXV1a0FBQURv
QUFBQUFHWm0KWm1abUxnOGZoQUFBQUFBQVZVaUo1VUZYUVZaQlZVRlVVMGlEN0JoSmlmNUlpd1VB
QUFBQVNJc0FTSWxGMEVpTEJRQUFBQUJJaXdCSQppVVhJU0lzRkFBQUFBRWlMQUVpSlJjQklpd1VB
QUFBQVRJczRTSTExeUVpTlZjQk1pd1VBQUFBQVRJc05BQUFBQUV5Si83a0JBQUFBCjZBQUFBQUJJ
aWNOTWlmOU1pZlpJaWRyb0FBQUFBRW1KeEVpSjMrZ0FBQUFBUlRIMlRZWGtENFNzQUFBQVRJbi9U
SW5tNkFBQUFBQkkKaWNOSWhkc1BoSTBBQUFCRk1mWklpZDh4OXVnQUFBQUFTSXMxaW5jQUFFaUxQ
Uk5zQUFCTWl5MEFBQUFBUWYvVlNJczFlbmNBQUVpSgp4MEgvMVVpSjMwaUp4dWdBQUFBQVNJbmY2
QUFBQUFCTWlmOU1pZWJvQUFBQUFFaUp3MGlGMjNRMVNJczFUM2NBQUVpTFBkQnJBQUJCCi85Vklp
elZHZHdBQVNJbkhRZi9WU0luZmljYm9BQUFBQUVpSjMrZ0FBQUFBVFlubTZ3aE1pZWZvQUFBQUFF
aUxCUUFBQUFCSWl3QkkKTzBYUWRSSk1pZkJJZzhRWVcwRmNRVjFCWGtGZlhjUG9BQUFBQUdZdUR4
K0VBQUFBQUFCVlNJbmxRVmRCVmxOUVNJbndTWW4rVFlYMgpkQVZJaGNCMUdraUxOZGQyQUFCSWlj
ZElnOFFJVzBGZVFWOWQveVVBQUFBQVNJczF4WFlBQUV5TFBRQUFBQUJJaWNkQi85ZElpdzBBCkFB
QUFTSXM1U0luRzZBQUFBQUJJaWNOSWlkOU1pZmJvQUFBQUFFaU5OUUFBQUFCSWl6MENhd0FBL3hV
QUFBQUFTSXMxaFhZQUFFaUoKeDBpSjJrSC8xMG1KeGtpSjMrZ0FBQUFBVElud1NJUEVDRnRCWGtG
ZlhjTm1aaTRQSDRRQUFBQUFBRlZJaWVWQlZsTkppZlpJaWZoSQpoY0FQaElrQUFBQklpdzBBQUFB
QVNJczVTSW5HNkFBQUFBQklpY05JaXpVZWRnQUFUSW4zL3hVQUFBQUFTSW5mU0luRzZBQUFBQUJK
CmljWklpZC9vQUFBQUFESEFUWVgyZEVKSWl6MXhhZ0FBU0kwMUFBQUFBUDhWQUFBQUFFaUxOZlYx
QUFCSWljZE1pZkwvRlFBQUFBQkkKaWNOTWlmZm9BQUFBQUVpTk5RQUFBQUJJaWQvL0ZRQUFBQUJi
UVY1ZHcwaUxOWUoxQUFCSWl6MExhZ0FBU0lzZEFBQUFBRWlKMlAvUQpTSXMxb0hVQUFFaUp4MHlK
OGtpSjJGdEJYbDMvNEpCVlNJbmxTSW40U0lYQWRCTklpdzBBQUFBQVNJczVTSW5HWGVrQUFBQUFN
Y0JkCncyWm1abVl1RHgrRUFBQUFBQUJWU0lubFUxQkloZjkwQzBpRHhBaGJYZWtBQUFBQVNJczFH
M1VBQUVpTFBaeHBBQUJJaXgwQUFBQUEKU0luWS85QklpelVKZFFBQVNJbkhTSW5ZU0lQRUNGdGQv
K0JtWmk0UEg0UUFBQUFBQUZWSWllVmQ2UUFBQUFCbUR4OUVBQUJWU0lubApRVlpUU0lYL2RETG9B
QUFBQUVpSncwaUxOZjEwQUFCSWl6MVdhUUFBU0luYS94VUFBQUFBU1luR1NJbmY2QUFBQUFCTWlm
QmJRVjVkCncwaUxOWk4wQUFCSWl6MFVhUUFBU0lzZEFBQUFBRWlKMlAvUVNJczFzWFFBQUVpSngw
aUoyRnRCWGwzLzRBOGZSQUFBVlVpSjVVRlgKUVZaQlZVRlVVMUJKaWZWSmlmNU5oZllQaElBQUFB
QklpeldVZEFBQVRJc2xBQUFBQUV5SjcwSC8xRW1KeDBpTE5ZVjBBQUJNaWU5QgovOVJJaXpXQWRB
QUFTSTBWTVhrQUFFaUp4MEgvMUVpRndBK1V3QSsyMEV5SjkweUovdWdBQUFBQVNJbkRTSXMxTlhR
QUFFaUxQWTVvCkFBQklpZHBCLzlSSmljWklpZC9vQUFBQUFFeUo4RWlEeEFoYlFWeEJYVUZlUVY5
ZHcwaUxOY1J6QUFCSWl6MUZhQUFBU0lzZEFBQUEKQUVpSjJQL1FTSXMxOG5NQUFFaUp4MHlKNmtp
SjJFaUR4QWhiUVZ4QlhVRmVRVjlkLytCbUR4K0VBQUFBQUFCVlNJbmxRVmRCVmtGVgpRVlJUVUVt
SnpVbUoxMG1KOWttSi9FMkY1SFJmU0lzMTBuTUFBRWlMUGZ0bkFBQklpeDBBQUFBQVRJbnkvOU5K
aWNaSWl6V1Zjd0FBClRJbi8vOU5KaWNkSWl6V0djd0FBVEludi85Tk1pZWRNaWZaTWlmcElpY0hv
QUFBQUFFeUo5MGlEeEFoYlFWeEJYVUZlUVY5ZDZRQUEKQUFCSWl6VURjd0FBU0lzOWhHY0FBRWlM
SFFBQUFBQklpZGovMEVpTE5WRnpBQUJJaWNkTWlmSk1pZmxOaWVoSWlkaElnOFFJVzBGYwpRVjFC
WGtGZlhmL2dacEJWU0lubFFWWlRTWW4yU0luN1NJWGJkQjlJaXpVdmN3QUFUSW4zL3hVQUFBQUFT
SW5mU0luR1cwRmVYZWtBCkFBQUFTSXMxa0hJQUFFaUxQUkZuQUFCSWl4MEFBQUFBU0luWS85Qklp
elh1Y2dBQVNJbkhUSW55U0luWVcwRmVYZi9nWm1abVptWm0KTGc4ZmhBQUFBQUFBVlVpSjVVRlhR
VlpCVlVGVVUwaUI3TWdBQUFCSWl3VUFBQUFBU0lzQVNJbEYwRWlGLzNRSzZBQUFBQURwNlFBQQpB
RWlMTlNCeUFBQklpejJoWmdBQVNJc2RBQUFBQVAvVFNZbkdTSXMxUG5JQUFFeUo5Ly9UU1luRVRZ
WGtENFMzQUFBQUQxZkFEeWxGCndBOHBSYkFQS1VXZ0R5bEZrRWlOTlFBQUFBQklqVldRU0kyTkVQ
Ly8vMHlKNTBHNEVBQUFBUDhWQUFBQUFFaUp3MGlGMjNSN1NJdEYKb0V5TEtHWXVEeCtFQUFBQUFB
QkZNZjltWm1abUxnOGZoQUFBQUFBQVNJdEZvRXc1S0hRSVRJbm42QUFBQUFCSWkwV1lTb3NVK0V5
Sgo5MGlMTmUxeEFBRC9GUUFBQUFCSi84ZEpPZDl5ejB5SjUwaU5OUUFBQUFCSWpWV1FTSTJORVAv
Ly8wRzRFQUFBQVA4VkFBQUFBRWlKCncwaUYyM1dXU0lzRkFBQUFBRWlMQUVnN1JkQjFFa2lCeE1n
QUFBQmJRVnhCWFVGZVFWOWR3K2dBQUFBQVptWm1abVptTGc4ZmhBQUEKQUFBQVZVaUo1VWlEN0JC
SWpYWDhTSTFWK0VpTlRmUk1qVVh3NkFBQUFBQ0xUZkNMVmZTTGRmaUxmZnpvQUFBQUFFaUR4QkJk
dzJabQpaaTRQSDRRQUFBQUFBRlZJaWVWZDZRQUFBQUJtRHg5RUFBQlZTSW5sUVZaVFNZbitTSXMx
TDNFQUFFaUxQVWhsQUFCSWl4MEFBQUFBClNJblkvOUJJaXpVZGNRQUFTSW5IVElueVNJbllXMEZl
WGYvZ1pnOGZSQUFBVlVpSjVVRldVMG1KL2tpTE5mOXdBQUJJalJXWWRRQUEKdVFNQUFBRC9GUUFB
QUFCSWhjQjBVVWlMTmVGd0FBQklqUlc2ZFFBQVRJbjN1UU1BQUFEL0ZRQUFBQUJJaGNCMFIwaUxO
YkJ3QUFCSQppejNKWkFBQVNJc2RBQUFBQUVpSjJQL1FTSXMxdG5BQUFFaUp4MHlKOGtpSjJGdEJY
bDMvNEVpTE5aaHdBQUJJaXoyaFpBQUFTSTBWClFuVUFBT3NWU0lzMWdYQUFBRWlMUFlwa0FBQklq
UlZyZFFBQS94VUFBQUFBVzBGZVhjTlZTSW5sUVZaVFNZbitTSXMxVDNBQUFFaU4KRlFoMUFBQzVB
d0FBQVA4VkFBQUFBRWlGd0hSUlNJczFNWEFBQUVpTkZTcDFBQUJNaWZlNUF3QUFBUDhWQUFBQUFF
aUZ3SFE1U0lzMQpBSEFBQUVpTFBSbGtBQUJJaXgwQUFBQUFTSW5ZLzlCSWl6VU9jQUFBU0luSFRJ
bnlTSW5ZVzBGZVhmL2dTSTBGZ0hRQUFPc0hTSTBGCnQzUUFBRnRCWGwzRFpwQlZTSW5sU0lzMTVX
OEFBRjMvSlFBQUFBQm1abVptWmk0UEg0UUFBQUFBQUZWSWllVklpelhOYndBQVhmOGwKQUFBQUFH
Wm1abVptTGc4ZmhBQUFBQUFBVlVpSjVVRldVMGlKKzBpTEZhOXZBQUJJalRVQUFBQUEveFVBQUFB
QVJUSDJoTUIwTFVpTApOWlJ2QUFCSWlkLy9GUUFBQUFCSWhjQjBHRWlKeCtnQUFBQUFTSVhBZEF0
SWljZm9BQUFBQUVtSnhreUo4RnRCWGwzRFpnOGZSQUFBClZVaUo1VUZYUVZaQlZGTklnK3dRU0lu
N1NJc1ZSMjhBQUVpTk5RQUFBQUQvRlFBQUFBQkZNZmFFd0ErRTR3QUFBRWlMTlNodkFBQkkKaWQv
L0ZRQUFBQUJJaGNBUGhNb0FBQUJJaWNmb0FBQUFBRWlKdzBpRjJ3K0V0Z0FBQUVpTEJRQUFBQUJJ
aXpCSWlkL29BQUFBQUVtSgp4MDJGLzNSNFNJMTEzRXlKLytnQUFBQUFoY0FQaFlnQUFBQ0RmZHdB
ZFJCSWpYWGNUSW4vNkFBQUFBQ0Z3SFZ5VEluLzZBQUFBQUJKCmljUXgyMGlMRlFBQUFBQXgvMHlK
NXVnQUFBQUFTWW5HVFlYa2Zrd1BINFFBQUFBQUFFeUovMGlKM3VnQUFBQUFUSW4zU0luRzZBQUEK
QUFCSS84TkpPZHgxNHVza1NJc0ZBQUFBQUVpTE1FaUozK2dBQUFBQVNJWEFkQTB4LzBpSnh1Z0FB
QUFBU1luR1RJbndTSVBFRUZ0QgpYRUZlUVY5ZHcyWm1aaTRQSDRRQUFBQUFBRlZJaWVWSWcrd2d4
MFg4QUFBQUFNZEYrQUFBQUFCSWpYMzhTSTExK09nQUFBQUFENzk5CitFaU5kZlJJalUzb3VnRUFB
QURvQUFBQUFHYUZ3SFFPeDBYMEFRSUFBTGdCQWdBQTZ3T0xSZlJJZzhRZ1hjTm1aaTRQSDRRQUFB
QUEKQUZWSWllVkJWMEZXUVZWQlZGTlFTWW4wU1luK01mOUlpZGJvQUFBQUFFbUp4MDJGL3crRUJB
RUFBRWlMUFk5aEFBQklqVFVBQUFBQQoveFVBQUFBQVNJczFrMjBBQUVpSngweUo4akhKTU1EL0ZR
QUFBQUJJaWNOTmhlUjBFMGlOTlFBQUFBQklpZDlNaWVML0ZRQUFBQUJJCml3VUFBQUFBU0lzd1RJ
bi9TSW5hNkFBQUFBQk1qVFVBQUFBQVNJbmZUSW4yL3hVQUFBQUFTSXM5S1dFQUFFeU5KUUFBQUFC
TWllYi8KRlFBQUFBQklpeDBBQUFBQVNJczFJMjBBQUVpSngvL1RTWW5GU0lzOTdHQUFBRXlKNXY4
VkFBQUFBRWlMTmZ4c0FBQklpY2RNaWVveAp5VERBLzlOSWljTk1pZTlNaWZiL0ZRQUFBQUJJaXdV
QUFBQUFTSXN3VEluL1NJbmE2QUFBQUFCSWlkOU1pZmIvRlFBQUFBQk1pZjlJCmc4UUlXMEZjUVYx
QlhrRmZYZWtBQUFBQVNJUEVDRnRCWEVGZFFWNUJYMTNERHg4QVZVaUo1WW53U0lzMW0yd0FBSW5D
WGY4bEFBQUEKQUdZdUR4K0VBQUFBQUFCVlNJbmxYZWtBQUFBQVpnOGZSQUFBVlVpSjVVRlhRVlpU
VUV5TE5RQUFBQUJKaXo1SWl6VmxiQUFBL3hVQQpBQUFBaGNCMFIwbUxQa2lMTlZGc0FBQk1pejBB
QUFBQVFmL1hpY05KaXo1SWl6VTdiQUFBUWYvWFNJc05BQUFBQUVpTENVaU5GZmR3CkFBQ0ozNG5H
U0lQRUNGdEJYa0ZmWGVrQUFBQUFTSVBFQ0Z0QlhrRmZYY05tRHgrRUFBQUFBQUJWU0lubFNJbjRT
SXMxK21zQUFFaUwKUGN0ZkFBQklpY0pkL3lVQUFBQUFrRlZJaWVWQlZsT0o4RW1KL2tpTE5kMXJB
QUJJaXoydVh3QUFTSXNkQUFBQUFJbkNTSW5ZLzlCSQpqUTJoY0FBQVNJczF3bXNBQUV5SjkwaUp3
a2lKMkZ0QlhsMy80R1ptTGc4ZmhBQUFBQUFBVlVpSjVVRlhRVlpCVkZOSWcreEFTWW4rClNJc1Zs
MnNBQUVpTk5RQUFBQUQvRlFBQUFBQ0V3QStFUUFJQUFFaUxIUUFBQUFCSWhkc1BoYjRCQUFCSWl6
MEFBQUFBU0lYL0Q0WEgKQUFBQVNJMDlBQUFBQU9nQUFBQUFTSTAxQUFBQUFFaUp4K2dBQUFBQVNJ
czlBQUFBQUVpRi93K0ZuQUFBQUVpTFBYQmZBQUJJalIwQQpBQUFBU0luZS94VUFBQUFBU0kwMUFB
QUFBRWlKeHpIUzZBQUFBQUJJalRVQUFBQUFTSW5INkFBQUFBQklpejA1WHdBQVNJbmUveFVBCkFB
QUFTSXMxQVc0QUFFaUp4K2dBQUFBQVRJczk4bTBBQUVpTEhRQUFBQUJJaWNmb0FBQUFBRWlORlFB
QUFBQklpZDlNaWY1SWljSG8KQUFBQUFJVEFENFNMQVFBQVNJczlBQUFBQU9nQUFBQUFTSXM5QUFB
QUFFeU5KUUFBQUFCTWllYi9GUUFBQUFCSWl6V1ViUUFBU0lzZApBQUFBQUVpTFN4QklpMU1ZU0ls
VUpCaElpVXdrRUVpTEMwaUxVd2hJaVZRa0NFaUpEQ1JNaXowQUFBQUFTSW5ITWRLNUFnQUFBRUc0
CkFRQUFBRUgvMTBpTk5RQUFBQUJJaWNmb0FBQUFBRWlMTlVOdEFBQklpejBBQUFBQVFmL1hTSXM5
VWw0QUFFeUo1djhWQUFBQUFFaUwKTlNwdEFBQklpMHNZU0lsTUpCaElpMHNRU0lsTUpCQklpd3RJ
aTFNSVNJbFVKQWhJaVF3a1NJbkhRZi9YU0luRFNJczFBRzBBQUVpTApQUUFBQUFCSWlkcEIvOWRJ
alRVQUFBQUFTSW5mL3hVQUFBQUFTSXNkQUFBQUFFaUxOYlZwQUFCTWl6MEFBQUFBU0luZlRJbnlR
Zi9YClNJczFwbWtBQUVpSjMwSC8xMGlMTmFGcEFBQk1pZmRJaWNKQi85ZElpeldaYVFBQVNJczlL
bDBBQUVILzEwaU5WY0R5RHhGRndQSVAKRVVYSThnOFJSZEJJaXpWVmFRQUFUSW4zUWYvWFNJUEVR
RnRCWEVGZVFWOWR3MGlOUFFBQUFBQklqVFVBQUFBQVNJME5BQUFBQUxxcgpBZ0FBNkFBQUFBQklq
VDBBQUFBQVNJMDFBQUFBQUVpTkRRQUFBQUM2andJQUFPZ0FBQUFBRHg5QUFGVklpZVZJaXdVQUFB
QUFTSXNBClhjTlZTSW5sU0lzRkFBQUFBRWlMQUYzRFZVaUo1VWlMQlFBQUFBQklpd0JkdzFWSWll
V0o4RWlMTmV0b0FBQ0p3bDMvSlFBQUFBQm0KTGc4ZmhBQUFBQUFBVlVpSjVWM3BBQUFBQUdZUEgw
UUFBRlZJaWVWZDZRQUFBQUJtRHg5RUFBQlZTSW5sU0lud1NJbjVNZjlJaWM1SQppY0pkNlFBQUFB
QVBINFFBQUFBQUFGVklpZVZCVjBGV1FWVkJWRk5RU1luWFNZbjJTSW43UlREdFNJWGJkRkJJaWQv
b0FBQUFBRW1KCnhPZ0FBQUFBU1RuRWRVNUlpZC9vQUFBQUFFbUp4T2dBQUFBQVNUbkVkU1pJaWQv
b0FBQUFBRXc1K0hVWlNJbmY2QUFBQUFCTWlmZEkKaWNaTWlmcm9BQUFBQUVHMUFVRVB0c1ZJZzhR
SVcwRmNRVjFCWGtGZlhjTklqVDBBQUFBQVNJMDFBQUFBQUVpTkRRQUFBQUM2NWdJQQpBT2dBQUFB
QVptWm1abVptTGc4ZmhBQUFBQUFBVlVpSjVVaUo4RWlKK1RIL1NJbk9TSW5DWGVrQUFBQUFEeCtF
QUFBQUFBQlZTSW5sClhla0FBQUFBWmc4ZlJBQUFWVWlKNVYzcEFBQUFBR1lQSDBRQUFGVklpZVZk
NlFBQUFBQm1EeDlFQUFCVlNJbmxYZWtBQUFBQVpnOGYKUkFBQVZVaUo1VjNwQUFBQUFHWVBIMFFB
QUZWSWllVkJWbE5KaWY1TmhmWjBVa2lMTldwbkFBQklpejNiV2dBQVNJMFZIR3dBQUVpTgpEVFZz
QUFCRk1jQXd3UDhWQUFBQUFFaUp4K2dBQUFBQVNJbkRTSW5mVEluMjZBQUFBQUJKaWNaSWpUVUFB
QUFBU0luZi94VUFBQUFBCjZ3TkZNZlpNaWZCYlFWNWR3dzhmUUFCVlNJbmxTSXMxQldjQUFFaUxQ
WFphQUFCSWpSVzNhd0FBU0kwTjBHc0FBRVV4d0REQS94VUEKQUFBQVNJbkg2QUFBQUFCSWpUVUFB
QUFBU0lzTkFBQUFBRWlKeDEzLzRXWVBINFFBQUFBQUFGVklpZVZUVUVpTlBiTnJBQURvQUFBQQpB
RWlKdzBpTEZheG1BQUJJalRVQUFBQUFTSW5mL3hVQUFBQUFoTUIwRzBpTE5aRm1BQUJJaWQrNkFR
QUFBRWlEeEFoYlhmOGxBQUFBCkFFaUR4QWhiWGNObVptWm1aaTRQSDRRQUFBQUFBRlZJaWVWQlZs
TkppZjVJalQxUGF3QUE2QUFBQUFCSWljTklpeFZRWmdBQVNJMDEKQUFBQUFFaUozLzhWQUFBQUFJ
VEFkQmRJaXpVMVpnQUFTSW5mVElueVcwRmVYZjhsQUFBQUFESEFXMEZlWGNObVptWm1aaTRQSDRR
QQpBQUFBQUZWSWllVkJWbE5KaWY1SWpUVUFBQUFBL3hVQUFBQUFTSVhBZEhSSWpUM2RhZ0FBNkFB
QUFBQklqVFVBQUFBQVNJbkgveFVBCkFBQUFTSW5EU0lzVjFtVUFBRWlOTlFBQUFBQklpZC8vRlFB
QUFBQ0V3SFFxU0lzMXUyVUFBRWlKMzB5Sjh2OFZBQUFBQUVpTk5RQUEKQUFCSWl3MEFBQUFBU0lu
SFcwRmVYZi9oU0kwMUFBQUFBRWlKMy84VkFBQUFBREhBVzBGZVhjTm1EeCtFQUFBQUFBQlZTSW5s
VTFCSQppZnRJaXhWd1pRQUFTSTAxQUFBQUFQOFZBQUFBQUlUQWRCWklpelZZWlFBQVNJbmZTSVBF
Q0Z0ZC95VUFBQUFBTWNCSWc4UUlXMTNEClZVaUo1VUZYUVZaVFVFbUo5MG1KL2tpTEZURmxBQUJJ
alRVQUFBQUFUSW4vL3hVQUFBQUFoTUIwVUVpTEZSNWxBQUJJalRVQUFBQUEKVEluLy94VUFBQUFB
aE1CME5VaUxOZnRrQUFCSWl4MEFBQUFBVEluL1RJbnlTSW5ZLzlCSWl6WHFaQUFBVEluL1RJbnlT
SW5ZU0lQRQpDRnRCWGtGZlhmL2dTSVBFQ0Z0QlhrRmZYY05tTGc4ZmhBQUFBQUFBVlVpSjVVRlhR
VlpUVUVHSjlrR0ovMGlOUFhscEFBRG9BQUFBCkFFaUp3MGlMRmFKa0FBQklqVFVBQUFBQVNJbmYv
eFVBQUFBQWhNQjBLVWlMRlk5a0FBQklqVFVBQUFBQVNJbmYveFVBQUFBQWhNQjAKRGtXRS8zUVVT
SXMxWjJRQUFPc1NTSVBFQ0Z0QlhrRmZYY05JaXpWYlpBQUFTSW5mUklueVNJUEVDRnRCWGtGZlhm
OGxBQUFBQUE4ZgpSQUFBVlVpSjVVRldVMEdKOWtpSiswaUxGVFJrQUFCSWpUVUFBQUFBL3hVQUFB
QUFoTUIwRjBpTE5SeGtBQUJJaWQ5RWlmSmJRVjVkCi95VUFBQUFBVzBGZVhjTm1abVptWm1ZdUR4
K0VBQUFBQUFCVlNJbmxYY05tTGc4ZmhBQUFBQUFBVlVpSjViNFFBQUFBTWRKZDZRQUEKQUFCbVpt
Wm1abVl1RHgrRUFBQUFBQUJWU0lubHZnSUFBQUF4MGwzcEFBQUFBR1ptWm1abVppNFBINFFBQUFB
QUFGVklpZVZJaWZDKwpDQUFBQUVpSndsM3BBQUFBQUdabUxnOGZoQUFBQUFBQVZVaUo1VWlCN0lB
QUFBQkl4MFdJQVFBQUFFaUpmWkJJaVhXWVNNZEZvQUFBCkFBQklpVldvU01kRnNBQUFBQUJJalhX
SVNJdFZJRWlMUlJoSWkzMFFTSWxOdUVqSFJjQUFBQUFBVElsRnlFeUpUZEJJeDBYb0FBQUEKQUVq
SFJlQUFBQUFBU01kRjJBQUFBQUJJaVgzd1NJbEYrREgvNkFBQUFBQklnY1NBQUFBQVhjTm1abVpt
TGc4ZmhBQUFBQUFBVlVpSgo1VUZYUVZaQlZGTklnZXlRQUFBQVFZblhTWW4yU1luOE1NQk5oZlox
RzBpTE5kZGlBQUJJaXowZ1ZnQUEveFVBQUFBQVNJUDRBUStWCndNZEZrQUFBQUFBUHRzQ0pSWlRI
UlpnQUFBQUFTTGlhbVptWm1abnBQMGlKUmFCRmhmOTBCL0pCRHlySDZ3anlEeEFGclVrQUFQSVAK
RVlWWS8vLy84ZzhSUmFoSXVBQUFBQUFBQU9BL1NJbEZzRWlMQlFBQUFBQklpMGdZU0lsTjBFaUxT
QkJJaVUzSVNJc0lTSXRBQ0VpSgpSY0JJaVUyNHgwWFkvLy8vLzBpTnZXRC8vLzlNaWVib0FBQUFB
UElQRUNWV1NRQUE4ZzhRbFhELy8vL3lEeENGWVAvLy8vSVBFSTFvCi8vLy9EeWpwOGc5WjZ2SVBF
SjE0Ly8vL0R5anc4ZzlaOC9JUFhQWHlEMUh1OGc5WnJWai8vLzltRHk3bGRoTklqVDJ6WmdBQVJJ
bisKc0FUb0FBQUFBT3RHU0kxOWtFMkY5blFLVEluMjZBQUFBQURyQmVnQUFBQUFTSW5EVElubjZB
QUFBQUJNaWVkSWlkN29BQUFBQUV5Sgo1K2dBQUFBQVRJbm42QUFBQUFCSWlkL29BQUFBQUVpQnhK
QUFBQUJiUVZ4QlhrRmZYY09RVlVpSjVVRlhRVlpCVlVGVVUwaUI3TWdBCkFBRHlEeEdOUVAvLy8v
SVBFWVZJLy8vL1NZbitTSXMxV21FQUFFeUxQUUFBQUFCQi85ZnlEeEdGVVAvLy8vSVBFWTFZLy8v
L0QxZlMKRHlsVnNQSVBFVVhBOGc4UlRjaElpelV3WVFBQVNJdEZ5RWlKUkNRWVNJdEZ3RWlKUkNR
UVNJdEZzRWlMVGJoSWlVd2tDRWlKQkNSTQppZmN4MGpISlFmL1hTSW5EOGc4UWhWai8vLy95RDF5
RlFQLy8vL0lQRVlVNC8vLy9TSVhiZEdsSWl6MGtWQUFBU0kwMUFBQUFBUDhWCkFBQUFBRWlOTlFB
QUFBQklpZDlJaWNML0ZRQUFBQUNFd0hRK1NJczFxV0FBQUVpSjMvOFZBQUFBQVBJUEVKVlEvLy8v
OGc4UW5Wai8KLy8vb0FBQUFBSVRBZEJWSWpUVUFBQUFBU0luZi94VUFBQUFBUlREMjYzUklpelY3
WUFBQVRJbjNRZi9YU0lzOXJsTUFBRWlOTlFBQQpBQUQvRlFBQUFBQklpelZpWUFBQVNJdE55RWlK
VENRWVNJdE53RWlKVENRUVNJdE5zRWlMVmJoSWlWUWtDRWlKRENSSWljZEIvOWRJCmljTklpelUz
WUFBQVRJbjNRZi9YU0kwMUFBQUFBRXlKOS84VkFBQUFBRUdJeGtpRjJ3K0VhZ0lBQU1lRmFQLy8v
d0VBQUFCSWl6VU0KWUFBQVNJbmZRZi9YaVlWcy8vLy9TSXMxQVdBQUFFaUozMEgvMTRtRmNQLy8v
MGlMTmZaZkFBQklpZDlCLzllSmhYVC8vLzlJaXpYcgpYd0FBU0luZlFmL1hpWVY0Ly8vL1NJczE0
RjhBQUVpSjMwSC8xNG1GZlAvLy8waUxOZFZmQUFCSWlkOUIvOWVKUllCSWl6WE5Yd0FBClNJbmZR
Zi9YaUVXRVNJczF4VjhBQUVpSjMwSC8xMGlOVllpSVJZVklpelc1WHdBQVNJbmZRZi9YUllUMkQ0
VDJBQUFBU0ltZFFQLy8KLzB5TGZZQkpZLy9vQUFBQUFFbUp4c2VGVVAvLy93RUFBQUJJdUFBQUFB
RC9BQUFBVElYNGRCU0xoWGovLy8rSmhWRC8vLytGd0ErTwpwQUFBQURISmk0VncvLy8vWm1abVpt
Wm1MZzhmaEFBQUFBQUFnL2dDZkd0TWkyVE5pRWlKalZqLy8vLy95RUVQcjhkSVk5aE1BZU5GCk1l
MUpZOWRNaWVkTWlmYm9BQUFBQUVoalZZQklpZDlNaWVib0FBQUFBRWhqVllCTWlmZElpZDdvQUFB
QUFFSC94VXhqZllCTUtmdE4KQWZ5TGhYRC8vLytKd2NIcEh3SEIwZmxCT2MxOHMrc0lrRWlKalZq
Ly8vOUlpNDFZLy8vL1NQL0JPNDFRLy8vL0Q0VnovLy8vVEluMwo2QUFBQUFCSWk1MUEvLy8vU0kx
OXNFaU50V0QvLy8vb0FBQUFBSVhBRDRYSUFBQUE4ZzhRQlZSRkFBRHlEMXlGU1AvLy8vSVBFWVZZ
Ci8vLy82QUFBQUFCSmljYnlEeENGV1AvLy8rZ0FBQUFBOGc4UmhWai8vLy95RHhBRkgwVUFBUElQ
WElVNC8vLy82QUFBQUFBUEtNaEkKaTVWZy8vLy9TSTIxYVAvLy8vTVBFQld4UlFBQVRJbjM4ZzhR
aFZqLy8vL29BQUFBQUVHSnhraUx2V0QvLy8vb0FBQUFBRVdGOW5WZwpTSTAxQUFBQUFFaUozLzhW
QUFBQUFFaUJ4TWdBQUFCYlFWeEJYVUZlUVY5ZHcwaU5QUUFBQUFCSWpUVUFBQUFBU0kwTkFBQUFB
THJ6CkF3QUE2QUFBQUFCSWpUMEFBQUFBU0kwMUFBQUFBRWlORFFBQUFBQzZCd1FBQU9nQUFBQUFT
STA5QUFBQUFFaU5OUUFBQUFCSWpRMEEKQUFBQXVoVUVBQURvQUFBQUFHWVBIMFFBQUZWSWllVytB
UUFBQUYzcEFBQUFBSkJWU0lubFFWWlRTSVBzSUVtSi9raUxOWE5kQUFCSQppejFVVUFBQVNJc2RB
QUFBQUVpSjJQL1FTSXMxWVYwQUFFaUxSU2hJaVVRa0dFaUxSU0JJaVVRa0VFaUxSUkJJaTAwWVNJ
bE1KQWhJCmlRUWtUSW4zU0luWS85QklpelUzWFFBQVNJczlDRkFBQUVpSjJFaUR4Q0JiUVY1ZC8r
Qm1aaTRQSDRRQUFBQUFBRlZJaWVXK0FRQUEKQUxvQkFBQUFYZWtBQUFBQVptWm1MZzhmaEFBQUFB
QUFWVWlKNVVGWFFWWkJWVUZVVTBpRDdCaEppYzVCaWRSSmlmZnpEeEZWeFBJUApFVTNROGc4UlJj
aElpZnRJaXpYTlhBQUFUSXN0QUFBQUFFeUo2UC9ROHc4UVJjVHpEMXJRVFdQRVNJczF0bHdBQUVp
SngwaUoydklQCkVFWEk4ZzhRVGRCTWlmbE5pZkZNaWVoSWc4UVlXMEZjUVYxQlhrRmZYZi9nRHg5
RUFBQlZTSW5sU0lQc0VFakhSQ1FJQUFBQUFFakgKQkNRRUFBQUFNZll4MGtqSHdmLy8vLzlGTWNB
UFY5SkZNY25vQUFBQUFFaUR4QkJkd3c4ZmhBQUFBQUFBVlVpSjVVRlhRVlpCVkZOSQpnK3h3U1lu
KzhnOFFUU2p5RHhGTnFQSVBFQVhFUWdBQVpnOHV3UStIY3dNQUFFeU5aUkJNaWZmb0FBQUFBT2dB
QUFBQVNJbkQ4ZzhRCkJhWkNBQUR5RHhBTnBrSUFBRWlKM3pIMjZBQUFBQUR5RHhBRm5FSUFBUElQ
RUJXY1FnQUE4ZzhRSlp4Q0FBQklpZDh4OWc4b3lBOVgKMnpIUzZBQUFBQUR5RHhBbGlrSUFBRWlK
M3pIMjhnOFFCVjFDQUFEeUR4QU5YVUlBQVBJUEVCVmRRZ0FBOGc4UUhWMUNBQUF4MHVnQQpBQUFB
OGc4UUpWNUNBQUJJaWQ4eDl2SVBFQVVwUWdBQUR5akk4ZzhRRlM1Q0FBRHlEeEFkTmtJQUFESFM2
QUFBQUFCSWlkOHg5dklQCkVBVUtRZ0FBOGc4UURmcEJBQUR5RHhBVkFrSUFBUElQRUIwU1FnQUFE
MWZrTWRMb0FBQUFBUElQRUFVSVFnQUE4ZzhRRFFoQ0FBQkkKaWQ4eDl1Z0FBQUFBOGc4UURmNUJB
QUJJaWQ4eDl2SVBFQVhCUVFBQTZBQUFBQUR5RHhBRjdFRUFBRWlKM3pIMjhnOFFEZGRCQUFEbwpB
QUFBQVBJUEVBM2FRUUFBU0luZk1mYnlEeEFGeFVFQUFPZ0FBQUFBOGc4UUJjaEJBQUJJaWQ4eDl2
SVBFQTJ6UVFBQTZBQUFBQUJJCmlkOHg5dklQRUFXcFFRQUE4ZzhRRFlsQkFBRG9BQUFBQVBJUEVB
V2NRUUFBU0luZk1mYnlEeEFOYjBFQUFPZ0FBQUFBU0luZk1mYnkKRHhBRlRVRUFBUElQRUExTlFR
QUE2QUFBQUFEeUR4QU5jRUVBQUVpSjN6SDI4ZzhRQlZOQkFBRG9BQUFBQUVpSjN6SDI4ZzhRQlRG
QgpBQUR5RHhBTlNVRUFBT2dBQUFBQThnOFFEVVJCQUFCSWlkOHg5dklQRUFVUFFRQUE2QUFBQUFC
SWlkOHg5dklQRUFVTlFRQUE4ZzhRCkRSMUJBQURvQUFBQUFFaUozekgyOGc4UUJmTkFBQUR5RHhB
TiswQUFBT2dBQUFBQThnOFFSYWp5RDE0RitVQUFBRXlOZmJEeUQxckEKRDFmSjh3OWF5UElQRVUy
bzh3OVpCUWxCQUFEekQxckE4ZzhSUmFCSmkwUWtHRWlKUkNRWVNZdEVKQkJJaVVRa0VFbUxCQ1JK
aTB3awpDRWlKVENRSVNJa0VKT2dBQUFBQThnOFJSWmhKaTBRa0dFaUpSQ1FZU1l0RUpCQklpVVFr
RUVtTEJDUkppMHdrQ0VpSlRDUUlTSWtFCkpPZ0FBQUFBOGc4UVRhanlEeEZOc1BJUEVGV1k4ZzlZ
VmFCSXgwWEFBQUFBQUVqSFJiZ0FBQUFBOGc4UlRjZ1BWOG55RDFySzh3OWEKeWZJUEVVM1E4Zzlh
d1BNUFdzRHlEeEZGMk9nQUFBQUFTWW5FVElublRJbitTSW5hNkFBQUFBQklpZC9vQUFBQUFQSVBF
QjBWUUFBQQpUSW4zWmc5WHdHWVBWOGtQVjlMb0FBQUFBRXlKOStnQUFBQUFUSW4zVElubTZBQUFB
QUJNaWZmb0FBQUFBRXlKNStnQUFBQUFUSW4zCjZBQUFBQUJJZzhSd1cwRmNRVjVCWDEzRFpwQlZT
SW5sVTFCSWpSMEFBQUFBU0luZnZ0d0ZBQUF4MHVnQUFBQUFTSW5mdnQwRkFBQXgKMGtpRHhBaGJY
ZWtBQUFBQVptWm1abVptTGc4ZmhBQUFBQUFBVlVpSjVVRldVNEgvM0FVQUFIVUpUSTAxZWw0QUFP
c1BnZi9kQlFBQQpkVGxNalRXSlhnQUFTSXMxRWxvQUFFaUxQVHRMQUFCSWl4MEFBQUFBU0luWS85
QklpelVBV2dBQVNJbkhUSW55TWNsSWlkaGJRVjVkCi8rQklqVDBBQUFBQVNJMDFBQUFBQUVpTkRR
QUFBQUM2ZXdRQUFPZ0FBQUFBRHgrRUFBQUFBQUJWU0lubFFWZEJWa0ZVVTAySnhrbUoKejBtSjFF
aUorN29OQUFBQVNJWDJkQzFJaXdXNFZ3QUFTSW4zU0luRy94VUFBQUFBTWRKSWcvZ0NkQkpJZy9n
RGRRZTZBUUFBQU9zRgp1ZzBBQUFCSWlkOU1pZVpNaWZsQnVBRUFBQUJOaWZIb0FBQUFBQSsyd0Z0
QlhFRmVRVjlkdzJabVptWm1aaTRQSDRRQUFBQUFBRlZJCmllVkJWMEZXVTFCSWlmTkppZjVNaXow
UlNnQUFTSTAxQUFBQUFFaUozLzhWQUFBQUFFaUxOVHBYQUFCSXh3UWtBQUFBQUV5Si8weUoKOGtp
SjJVVXh3RW1Kd2Y4VkFBQUFBRWlEeEFoYlFWNUJYMTNEWmk0UEg0UUFBQUFBQUZWSWllV0o4RWlK
K1VpTE5RQlhBQUJJaXoyeApTUUFBU0luS2ljRkZNY0JkL3lVQUFBQUFaaTRQSDRRQUFBQUFBRlZJ
aWVWQlYwRldRVlJUU0lQc01FR0oxa21KL0VpTEJiUldBQUJJCmlmZElpY2IvRlFBQUFBQkppY2RK
Zy84Q2RROU1pZWN4OXVnQUFBQUE2ZFFBQUFCTWllZStBUUFBQU9nQUFBQUFTSTE5c0V5SjV1Z0EK
QUFBQThnOFFSYkR5RDFySU1NRHpEeXpKOHc4cTBROHUwWFU2ZWpqeUR4Qk55UElQV3NuekR5ekpE
MWZTOHc4cTBROHUwWFVmZWgwUApWOG55RHhCVnVHWVBMdEYxRDNvTjhnL0NUY0FBWmc5K3lJUGdB
UTlYeWZJUEVGVzRaZzh1MFhVUmVnK3hBZklQRUZYQVpnOHUwWFVDCmV4c3d5V1lQTHNGMUUzb1Ja
ZzlYd1BJUHdrWElBR1lQZnNHRDRRR3pBWVRBZFFoRmhQWVBsY01neXpRQlNZUC9BdytWd1FqQkQ3
YngKVElubjZBQUFBQUFQdHZOTWllZm9BQUFBQUVpRHhEQmJRVnhCWGtGZlhjTm1abVptWm1ZdUR4
K0VBQUFBQUFCVlNJbmxYZWtBQUFBQQpaZzhmUkFBQVZVaUo1VjNwQUFBQUFHWVBIMFFBQUZWSWll
WG9BQUFBQUYzRER4OUVBQUJWU0lubFFWZEJWa0ZVVTBpRDdFQklpY2hGCk1mWkloZjkwZmNjRUpB
SWdBQUJCaWZSQmlkZE1pZVpNaWZxNUNBQUFBRUc0SUFBQUFFbUp3ZWdBQUFBQVNJbkRTSVhiZEU4
UFY4QVAKS1VYQUQxZkE4a2tQS3NUeUR4RkYwQTlYd1BKSkR5ckg4ZzhSUmRoSWkwWFlTSWxFSkJo
SWkwWFFTSWxFSkJCSWkwWEFTSXROeUVpSgpUQ1FJU0lrRUpFaUozK2dBQUFBQVNZbmVUSW53U0lQ
RVFGdEJYRUZlUVY5ZHcyWVBINFFBQUFBQUFGVklpZVZkNlFBQUFBQm1EeDlFCkFBQlZTSW5sNkFB
QUFBQVB0c0JkdzJhUVZVaUo1VjNwQUFBQUFHWVBIMFFBQUZWSWllVkJWbE5JZ2V3d0FRQUE4ZzhS
alNELy8vL3kKRHhHRktQLy8vMG1KL2tpTmZjQk1pZmJvQUFBQUFFaU52V0QvLy85TWlmYm9BQUFB
QUVpTmZaQklpMFdBU0l0TmlFaUpUQ1FvU0lsRQpKQ0JJaTRWNC8vLy9TSWxFSkJoSWk0VncvLy8v
U0lsRUpCQklpNFZnLy8vL1NJdU5hUC8vLzBpSlRDUUlTSWtFSk9nQUFBQUFTSTI5Ck1QLy8vMHlM
UmVCTWkwM29USXRWa0VpTGRaaElpMTJnU0l0RnFFaUxUYkJJaTFXNFNJbFVKRmhJaVV3a1VFaUpS
Q1JJU0lsY0pFQkkKaVhRa09FeUpWQ1F3VElsTUpDaE1pVVFrSUVpTFJkaElpVVFrR0VpTFJkQklp
VVFrRUVpTFJjQklpMDNJU0lsTUpBaElpUVFrNkFBQQpBQUR5RHhDRlFQLy8vL0lQRUowZy8vLy84
Zzlady9JUEVKVXcvLy8vOGc4UXBTai8vLy95RDFuVThnOVkwUElQRUlWUS8vLy84ZzhRCmpWai8v
Ly95RDFqQzhnOVpuVWovLy84UEtOVHlEMW1WT1AvLy8vSVBXTlB5RDFqS1RJbjM2QUFBQUFCSWdj
UXdBUUFBVzBGZVhjTVAKSDBBQVZVaUo1VUZXVTBpQjdQQUFBQUJJaWZOSmlmNUlqWDNBNkFBQUFB
QklqYjFnLy8vL1NJbmU2QUFBQUFCSWpYMlFTSXRGZ0VpTApUWWhJaVV3a0tFaUpSQ1FnU0l1RmVQ
Ly8vMGlKUkNRWVNJdUZjUC8vLzBpSlJDUVFTSXVGWVAvLy8waUxqV2ovLy85SWlVd2tDRWlKCkJD
VG9BQUFBQUV5TFJlQk1pMDNvU0l0VmtFaUxkWmhJaTMyZ1NJdGRxRWlMUmJCSWkwMjRTSWxNSkZo
SWlVUWtVRWlKWENSSVNJbDgKSkVCSWlYUWtPRWlKVkNRd1RJbE1KQ2hNaVVRa0lFaUxSZGhJaVVR
a0dFaUxSZEJJaVVRa0VFaUxSY0JJaTAzSVNJbE1KQWhJaVFRawpUSW4zNkFBQUFBQk1pZkJJZ2NU
d0FBQUFXMEZlWGNNUEg0UUFBQUFBQUZWSWllVmQ2UUFBQUFCbUR4OUVBQUJWU0lubFNJc0ZBQUFB
CkFFaUZ3SFFFLzlCZHcwaU5QUUFBQUFCSWpUVUFBQUFBU0kwTkFBQUFBTG9aQlFBQTZBQUFBQUJt
Wm1abUxnOGZoQUFBQUFBQVZVaUoKNVVGWFFWWkJWVUZVVTFCSmljNUppZGRKaWZSSmlmMUlpeDBB
QUFBQWdEMy8vLy8vQUhWVlNJWGJkWFJJaXdVQUFBQUFTSVhBZFIxSQpqVDBBQUFBQXZnSUFBQURv
QUFBQUFFaUpCUUFBQUFCSWhjQjBha2lOTlFBQUFBQklpY2ZvQUFBQUFFaUp3MGlKSFFBQUFBQXd3
RWlGCjJ3K1ZCUUFBQUFCMEZVaUYyM1JkVEludlRJbm1USW42VElueC85T3dBVWlEeEFoYlFWeEJY
VUZlUVY5ZHcwaU5QUUFBQUFCSWpUVUEKQUFBQVNJME5BQUFBQUxvWkJRQUE2QUFBQUFCSWpUMEFB
QUFBU0kwMUFBQUFBRWlORFFBQUFBQzZHQVVBQU9nQUFBQUFTSTA5QUFBQQpBRWlOTlFBQUFBQklq
UTBBQUFBQXVoa0ZBQURvQUFBQUFGVklpZVZkNlFBQUFBQm1EeDlFQUFCVlNJbmw2QUFBQUFCZHd3
OGZSQUFBClZVaUo1VjNwQUFBQUFHWVBIMFFBQUZWSWllVmQ2UUFBQUFCbUR4OUVBQUJWU0lubFFW
ZEJWbE5RU1luV1NZbi9USW4zNkFBQUFBQkkKaXdVQUFBQUFTSXNZU1lzOEgrZ0FBQUFBVFlrMEgw
aUR4QWhiUVY1QlgxM0RaZzhmUkFBQVZVaUo1VUZYUVZaQlZGTkppZlpJaXpWVApVQUFBVElzbEFB
QUFBRUgvMUVtSngwaUxOVWRRQUFCTWlmOUIvOVJJaWNOSWlkL29BQUFBQUVpTE5UZFFBQUJNaWY5
TWlmSkIvOVJJCmlkaGJRVnhCWGtGZlhjTm1MZzhmaEFBQUFBQUFWVWlKNVVGV1UwaUo4MGlMTmZk
UEFBQk1pelVBQUFBQVFmL1dTSXMxOWs4QUFFaUoKeDBpSjJrSC8xa2lKMzF0QlhsM3BBQUFBQUdZ
UEg0UUFBQUFBQUZWSWllVklpelhWVHdBQU1kSmQveVVBQUFBQVptWm1MZzhmaEFBQQpBQUFBVlVp
SjVlZ0FBQUFBZy9nRUQ1VEFEN2JBWGNObVptWXVEeCtFQUFBQUFBQlZTSW5sUVZkQlZrRlZRVlJU
VUVtSnprbUoxMG1KCjlFaUorMGlGMncrRXBnQUFBRTJGNUErRW5RQUFBRTJGL3crRWxBQUFBRTJG
OWcrRWl3QUFBRWlMTmZOUUFBQklpZC8vRlFBQUFBQ0UKd0hRdlNJczE1MUFBQUV5TExRQUFBQUJJ
aWQ5Qi85WHlEMXJBODBFUEVRUWtTSXMxMFZBQUFFaUozMEgvMWJBQjZ5MUlpelVnVHdBQQpUSXN0
QUFBQUFFaUozMEgvMWZJUFdzRHpRUThSQkNSSWl6VUtUd0FBU0luZlFmL1ZNTUR5RDFyQTgwRVBF
UWRCaUFaSWc4UUlXMEZjClFWMUJYa0ZmWGNOSWpUMEFBQUFBU0kwMUFBQUFBRWlORFFBQUFBQzY1
Z1VBQU9nQUFBQUFEeCtFQUFBQUFBQlZTSW5sNkFBQUFBQVAKdnNCZHcyYVFWVWlKNWJnQUFRQUFY
Y01QSDBRQUFGVklpZVZJaXpXZFRnQUFYZjhsQUFBQUFHWm1abVptTGc4ZmhBQUFBQUFBVlVpSgo1
VUZYUVZaQlZVRlVVMGlEN0ZoSWlmdElpeFYxVGdBQVNJMDFBQUFBQVA4VkFBQUFBSVRBRDRUVEFB
QUFTSXMxV1U0QUFFaUozLzhWCkFBQUFBRW1KeGtpTk5RQUFBQUJNaWZmL0ZRQUFBQUJKaWNkbUQx
ZkE4ZzhSUlloRmhmOFBqcEFBQUFCbUQxZkE4ZzhSUllneDIweU4KTFFBQUFBQk1qV1dvWnBCTWlm
ZE1pZTVJaWRyL0ZRQUFBQUJJaGNCMFhFeUo1MGlKeGtpTEZWOVBBQURvQUFBQUFFaUxSYkJJaGNC
MApRVWlMVGNoSWhjbDBPUEpJRHlyQjhrZ1BLazNBOGc5ZXlQSklEeXJROGtnUEtrV284Zzlld3ZJ
UFdNRm1EeTVGaUhZUDhnOFJSWWhtCkxnOGZoQUFBQUFBQVNQL0RRVG5mZFlqeUR4QkZpUElQV3NE
clIwaUYyM1F3U0lzVmlVMEFBRWlOZlpCSWlkN29BQUFBQUE5WHdFaUwKUlpoSWhjQjBJL05JRHly
STgwZ1BLa1dROHc5ZXdlc1NEMWZBRHlsRmtFakhSYUFBQUFBQUQxZkFTSVBFV0Z0QlhFRmRRVjVC
WDEzRApEeCtBQUFBQUFGVklpZVZCVjBGV1FWVkJWRk5JZyt3NFNJbjdTSXNWSlUwQUFFaU5OUUFB
QUFEL0ZRQUFBQUNFd0ErRTB3QUFBRWlMCk5RbE5BQUJJaWQvL0ZRQUFBQUJKaWNaSWpUVUFBQUFB
VEluMy94VUFBQUFBU1luSFpnOVh3UElQRVVXZ1JZWC9ENDZRQUFBQVpnOVgKd1BJUEVVV2dNZHRN
alMwQUFBQUFUSTFscUdhUVRJbjNUSW51U0luYS94VUFBQUFBU0lYQWRGeE1pZWRJaWNaSWl4WC9U
UUFBNkFBQQpBQUJJaTBXd1NJWEFkRUZJaTAzSVNJWEpkRGp5U0E4cXdmSklEeXBOd1BJUFhzanlT
QThxMFBKSUR5cEZxUElQWHNMeUQxakJaZzh1ClJhQjJEL0lQRVVXZ1ppNFBINFFBQUFBQUFFai93
MEU1MzNXSThnOFFSYUR5RDFyQTZ3aElpZC9vQUFBQUFFaUR4RGhiUVZ4QlhVRmUKUVY5ZHcyWVBI
MFFBQUZWSWllVkJWbE5CaWZaSWlmdElpeFVVVEFBQVNJMDFBQUFBQVA4VkFBQUFBSVRBZEJSQkQ3
N1dTSXMxK0VzQQpBRWlKMy84VkFBQUFBRWlMRmZCTEFBQklqVFVBQUFBQVNJbmYveFVBQUFBQWhN
QjBHRUVQdnRaSWl6WFJTd0FBU0luZlcwRmVYZjhsCkFBQUFBRnRCWGwzRFptWm1abVptTGc4ZmhB
QUFBQUFBVlVpSjVWTlFTSW43U0lYYmRFaElpeFdqU3dBQVNJMDFBQUFBQUVpSjMvOFYKQUFBQUFJ
akJ1QUVBQUFDRXlYUVhTSXMxZ1VzQUFFaUozLzhWQUFBQUFQL0lnL2dEZHc5SVk4QklqUTBFQUFB
QWl3U0I2d0l4d0VpRAp4QWhiWGNPUVZVaUo1VUZXVTBpRDdEQklpZnRJalQwYlR3QUE2QUFBQUFC
SmljWklpeFU4U3dBQVNJMDFBQUFBQUV5SjkvOFZBQUFBCkFJVEFkRDFJaXpVaFN3QUFpME1RaVVY
b1NJc0RTSXRMQ0VpSlRlQklpVVhZaTBYb2lVUWtFRWlMUmRoSWkwM2dTSWxNSkFoSWlRUWsKVElu
My94VUFBQUFBU0lQRU1GdEJYbDNEWnBCVlNJbmxVMUJJaWZ0SWl4WFlTZ0FBU0kwMUFBQUFBUDhW
QUFBQUFJVEFkQlpJaXpYQQpTZ0FBU0luZlNJUEVDRnRkL3lVQUFBQUFNY0JJZzhRSVcxM0RWVWlK
NVZOUVNJczEyMGNBQUVpTFBXUThBQUQvRlFBQUFBQklpY05JCml4VzBTd0FBU0kwMUFBQUFBRWlK
My84VkFBQUFBSVRBZENOSWl6V1pTd0FBU0luZi94VUFBQUFBU0lYQWRBNUlpY2RJZzhRSVcxM3AK
QUFBQUFESEFTSVBFQ0Z0ZHcyWm1aaTRQSDRRQUFBQUFBRlZJaWVWQlZsTkppZjVJaXdVQUFBQUFT
SXNZNkFBQUFBQy8vdi8vLzBpSgp4a2lKMmt5SjhVVXh3RnRCWGwzcEFBQUFBR1ptWm1ZdUR4K0VB
QUFBQUFCVlNJbmxRVlpUU1luMlNJbjc2QUFBQUFDLy92Ly8vMGlKCnhraUoya3lKOFVVeHdGdEJY
bDNwQUFBQUFBOGZRQUJWU0lubFhla0FBQUFBWmc4ZlJBQUFWVWlKNVVpSjhESDJTSW5DTWNsZDZR
QUEKQUFCbVptWXVEeCtFQUFBQUFBQlZTSW5sNkFBQUFBQ0V3SFFHWGVrQUFBQUFNY0JkdzJZUEg0
UUFBQUFBQUZWSWllVkJWMEZXVTFCQgppZjVJaXpWc1NRQUFTSXM5cFRzQUFFeUxQUUFBQUFCQi85
ZElpY05JaXpWWlNRQUFTSW5mUklueVFmL1hTSW5ZU0lQRUNGdEJYa0ZmClhjTm1MZzhmaEFBQUFB
QUFWVWlKNVVGWFFWWkJWVUZVVTFCQmlmNi9FQUFBQU9nQUFBQUFTWW5FU0lzMUcwa0FBRWlMUFV3
N0FBRC8KRlFBQUFBQklpY2RNaWVib0FBQUFBRW1MUENSSWhmOTBDK2dBQUFBQVRZczhKT3NEUlRI
L1NJczExVWdBQUVpTFBRNDdBQUJNaXkwQQpBQUFBUWYvVlNJbkRTSXMxd2tnQUFFaUozMFNKOGtI
LzFVaUxOY0pJQUFCTWlmOUlpZHBCLzlVeC8rZ0FBQUFBU1lsRUpBaE1pZUJJCmc4UUlXMEZjUVYx
QlhrRmZYY01QSHdCVlNJbmxVMUJJaWZ0SWl6dEloZjkwQmVnQUFBQUFTSXQ3Q09nQUFBQUFTSW5m
U0lQRUNGdGQKNlFBQUFBQVBId0JWU0lubFFWZEJWa0ZVVTBtSjlrbUovK2dBQUFBQVRJMWxFREgv
TWZZeDBqSEpUWW5nNkFBQUFBQklpY05KaXo5SQppelU1U0FBQS94VUFBQUFBU0luZlNJbkc2QUFB
QUFCSWlkOU1pZWJvQUFBQUFFbUxmd2hJaWQ1TWlmTG9BQUFBQUVpSjMxdEJYRUZlClFWOWQ2UUFB
QUFCbVptWm1aaTRQSDRRQUFBQUFBRlZJaWVWQlYwRldRVlZCVkZOSWcrd29pZnRNaXlVQUFBQUFT
WXNFSkVpSlJkQkkKaXdVQUFBQUFTSXM0VEkxMXNFeUo5dWdBQUFBQVNJMDljVXNBQUV5TmZjQk1p
ZjdvQUFBQUFFaU5kYmhJaXdVQUFBQUFTSXM0NkFBQQpBQUJNaXkwQUFBQUFTSXMxakVjQUFFaUxQ
WFU1QUFDSjJrSC8xVWlOZGNoSWljZm9BQUFBQUVpTE5YVkhBQUJJaXoyT09RQUFUSW42ClRJbnhR
YmdDQUFBQVFmL1ZTSXMxWUVjQUFFaUxQV2s1QUFCSWljSkIvOVZKaXd3a1NEdE4wSFVQU0lQRUtG
dEJYRUZkUVY1QlgxM0QKNkFBQUFBQm1abVptTGc4ZmhBQUFBQUFBVlVpSjVVRlhRVlpCVkZOSWcr
d2dUSXM5QUFBQUFFbUxCMGlKUmRoSWl3VUFBQUFBU0lzNApUSTExeUV5Sjl1Z0FBQUFBU0kwOWxr
b0FBRWlOWGRCSWlkN29BQUFBQUV5TEpRQUFBQUJJaXpYTVJnQUFTSXM5NVRnQUFFaUoya3lKCjhV
RzRBUUFBQUVILzFFbUp4a2lMSGNRNEFBRG9BQUFBQUVpTE5iQkdBQUJJaWQrSndreUo4VUgvMUVt
TEQwZzdUZGgxRFVpRHhDQmIKUVZ4QlhrRmZYY1BvQUFBQUFHWXVEeCtFQUFBQUFBQlZTSW5sU0lz
MWZVWUFBRjMvSlFBQUFBQm1abVptWmk0UEg0UUFBQUFBQUZWSQppZVZJaXpWbFJnQUFYZjhsQUFB
QUFHWm1abVptTGc4ZmhBQUFBQUFBVlVpSjVVaUo4RWlMTlFwR0FBQklpY0pkL3lVQUFBQUFEeCtF
CkFBQUFBQUJWU0lubFNJczExVVVBQUYzL0pRQUFBQUJtWm1abVppNFBINFFBQUFBQUFGVklpZVZJ
aWZCSWl6VUtSZ0FBU0luQ1hmOGwKQUFBQUFBOGZoQUFBQUFBQVZVaUo1VWlMTmZWRkFBQmQveVVB
QUFBQVptWm1abVl1RHgrRUFBQUFBQUJWU0lubFhla0FBQUFBWmc4ZgpSQUFBVlVpSjVVRlhRVlpC
VkZOSWdlendBQUFBU1luVVNZbjNTSXMxdVVVQUFQOFZBQUFBQUVtSnhrMkY5ZytFTVFFQUFFaU52
V0QvCi8vOU1pZjdvQUFBQUFFaUxoWGovLy85SWkwMkFTSXRWaUVpSlZDUW9TSWxNSkNCSWlVUWtH
RWlMaFhELy8vOUlpVVFrRUVpTGhXRC8KLy85SWk0MW8vLy8vU0lsTUpBaElpUVFrU0kxOWtPZ0FB
QUFBVEluMzZBQUFBQUJKaWNaTWlmZm9BQUFBQUVpRndBK0VzZ0FBQUV5Tgp2VUQvLy84UEh3Qk1p
MEFZVEl0TmtFaUxkWmhJaTMyZ1NJdGRxRWlMVGJCSWkxVzRTSWxVSkVoSWlVd2tRRWlKWENRNFNJ
bDhKREJJCmlYUWtLRXlKVENRZ1RJbEVKQmhJaTBnUVNJbE1KQkJJaXdoSWkwQUlTSWxFSkFoSWlR
d2tUSW4vNkFBQUFBQklpNFZZLy8vL1NJbEUKSkJoSWk0VlEvLy8vU0lsRUpCQklpNFZBLy8vL1NJ
dU5TUC8vLzBpSlRDUUlTSWtFSkV5SjUwSC9WQ1FRVEluMzZBQUFBQUJJaGNBUApoVmovLy85TWlm
Zm9BQUFBQU9zM1NJMTl3RXlKL3VnQUFBQUFTSXRGMkVpSlJDUVlTSXRGMEVpSlJDUVFTSXRGd0Vp
TFRjaElpVXdrCkNFaUpCQ1JNaWVkQi8xUWtFRWlCeFBBQUFBQmJRVnhCWGtGZlhjTVBINEFBQUFB
QVZVaUo1VUZYUVZaQlZGTkppZGRKaWZSSmlmNi8KR0FBQUFPZ0FBQUFBU0luRFRJa2pUSWw3Q0Vp
TEJRQUFBQUJJaVVNUVNJa2RBQUFBQUV5TFBRQUFBQUJJaXpYb1F3QUFUSW4zUWYvWApTSXMxaTBN
QUFFaUp4MEgvMTBpTkZRQUFBQUF4LzBpSnhraUoyVnRCWEVGZVFWOWQ2UUFBQUFCbUR4K0VBQUFB
QUFCVlNJbmxTSXQrCkNGMy9KZzhmUkFBQVZVaUo1VUZYUVZaVFVFeUxOUUFBQUFCTmhmWjBLRWlO
SFFBQUFBQVBId0JKT1RaMUJrazVWZ2gwSGttTFJoQk0KaWZOSWc4TVFTSVhBU1luR2RlSklnOFFJ
VzBGZVFWOWR3MGlMTlZCREFBQk1pejBBQUFBQVFmL1hTSXMxNzBJQUFFaUp4MEgvMTBpTgpGUUFB
QUFBeC8waUp4a3lKOGVnQUFBQUFTWXRHRUVpSkEweUo5MGlEeEFoYlFWNUJYMTNwQUFBQUFHWm1a
aTRQSDRRQUFBQUFBRlZJCmllVkJWbE5KaWY2L09BQUFBT2dBQUFBQVNJbkRUSW4zU0luZTZBQUFB
QUJJaXp0SWl6WGNRZ0FBL3hVQUFBQUFTWW5HNkFBQUFBQkkKalZNSWljZEVpZmJvQUFBQUFFaUoy
RnRCWGwzRFZVaUo1VjNwQUFBQUFHWVBIMFFBQUZWSWllVkJWbE5JZ2V3d0FRQUFTWW4rOGc4UQpE
YmNvQUFCbUR5N0laZzhveUhjTThnOFFEYTBvQUFEeUQxeklaZzh1QmFFb0FBQnpQUElQV01ueUR4
R05HUC8vLzBtTE5raUY5blJWClNJc1ZYRUlBQUVpTmZZRG9BQUFBQVBKRUR4QkZnUEpFRHhCTmlQ
SVBFRldZOGc4UWJaRHJTVW1MUmloSmkwNHdTSWxOeUVpSlJjQkoKaTBZZ1NJbEZ1RW1MUmhoSWlV
V3dTWXRHQ0VtTFRoRHA0UUlBQUdZUFY4Qm1EeWxGa0dZUEtVV0FSUTlYeVVVUFY4QVBWOUlQVisz
eQpEeEd0Q1AvLy8vSVBFWlg0L3YvLzhnOFFOUW9vQUFBUEtOcnlEMW5lRHlqSzhnOWN5L0lQWE5y
eUQxbjFEeWppRHlqVjhnOWMxdklQClhQWHlEeEFGemljQUFQSVBXZER5RHhDOUdQLy8vL0lQV2Qv
eUQxbkk4ZzlaejBpTE5TOUNBQUR5RDFqYzhnOFJuUkQvLy8veUQxblgKOGc5WjkwaUxQV3d6QUFE
eUQxajE4ZzhSdGZEKy8vL3lRUTlZeWZJUEVZMFkvLy8vOGtFUFdORHlEeEdWQVAvLy8vOFZBQUFB
QUVpSgp3MGlOTlFBQUFBQklpZC8vRlFBQUFBQkloY0IwWDBpTk5RQUFBQUJJaWQ4eDB2OFZBQUFB
QUVpRndIUWZTSXNWRWtFQUFFaU5mZEJJCmljYm9BQUFBQVBJUEVFM1k4ZzhRUmVqckVROVh3QThw
UmVBUEtVWFFEMWZBRDFmSjhnOFFsUmovLy8veUQxakk4ZzljeXZJUEVZMFkKLy8vLzhnOFFoUWov
Ly85SWl3VUFBQUFBVElzQVNJdFFDRWlMY0JCSWkzZ1lTSXRZSUVpTFNDaElpVTNJU0lsZHdFaUpm
YmhJaVhXdwpTSWxWcUV5SlJhRHlEeENWRVAvLy8vSVBYcFg0L3YvLzhnOFFuZkQrLy8veUQxN1lT
SXRJSUVpTFVDanlEeEFOanlZQUFFaU52VkQvCi8vOFBLTUh5RDE3RDhnOWV5a2lKVkNRb1NJbE1K
Q0JJaTBnWVNJbE1KQmhJaTBnUVNJbE1KQkJJaXdoSWkwQUlTSWxFSkFoSWlRd2sKNkFBQUFBRHlE
eENOR1AvLy8vSVBYSTBRLy8vLzhnOFFGVXdtQUFEeUR4Q0ZBUC8vLzJZUFY4Sm1EMWZLU0kyOUlQ
Ly8vMGlMaFhELwovLzlJaTQxNC8vLy9TSWxOeUVpSlJjQklpNFZvLy8vL1NJbEZ1RWlMaFdELy8v
OUlpVVd3U0l1RlVQLy8vMGlMalZqLy8vOUlpVTJvClNJbEZvRWlMaFhELy8vOUlpNDE0Ly8vL1NJ
bE1KQ2hJaVVRa0lFaUxoV2ovLy85SWlVUWtHRWlMaFdELy8vOUlpVVFrRUVpTGhWRC8KLy85SWk0
MVkvLy8vU0lsTUpBaElpUVFrNkFBQUFBQklpNFZBLy8vL1NJdU5TUC8vLzBpSlRjaElpVVhBU0l1
Rk9QLy8vMGlKUmJoSQppNFV3Ly8vL1NJbEZzRWlMaFNELy8vOUlpNDBvLy8vL1NJbE5xRWlKUmFC
Sml6NUlpelVUUHdBQS94VUFBQUFBU0luRDZBQUFBQUJJCmkwMjRTSXRWd0VpTGRjaElpWFFrS0Vp
SlZDUWdTSWxNSkJoSWkwMndTSWxNSkJCSWkwMmdTSXRWcUVpSlZDUUlTSWtNSkluSGlkN28KQUFB
QUFFaUJ4REFCQUFCYlFWNWR3dzhmQUZWSWllVlRTSVBzS0VpTE5hZytBQUQvRlFBQUFBQklpY01Q
S0VVUUR5aE5JQThwVGVBUApLVVhRU0kxOTBFaU5kZkRvQUFBQUFPZ0FBQUFBU0l0VjhJbkhpZDdv
QUFBQUFFaUxmZkRvQUFBQUFFaUR4Q2hiWGNNUEg0UUFBQUFBCkFGVklpZVdKOEVpSitUSC9NZlpJ
aWNveHlVR0p3RVV4eVYzcEFBQUFBR2FRVlVpSjViZ2ZCZ0FBWGNNUEgwUUFBRlZJaWVWVFNJUHMK
R0VpTE5TZytBQUQvRlFBQUFBQklpY05JaGR0MGFFakhSZkFBQUFBQVNNY0VKQUFBQUFCTWpVM3dT
SW5mdm5Kb1kydTZWRmhGVkRISgpSVEhBNkFBQUFBQ0Z3SFU1U0lOOThBRjFNc1pGN3dCSWpVWHZT
SWtFSkV5TlRmQklpZCsrY21oamE3cFVXRVZVTWNsQnVBRUFBQURvCkFBQUFBSVhBZEEwd3dPc01N
Y0JJZzhRWVcxM0Rpa1h2RDdiQTYvRm1EeCtFQUFBQUFBQlZTSW5sUVZaVFNJbndTWW4rU0lzMWpE
MEEKQUVpTFBVMHZBQUJJaXgwQUFBQUFTSW5DU0luWS85QklpelYzUFFBQVRJbjNTSW5DU0luWVcw
RmVYZi9nVlVpSjVZbjRNZitKeHVnQQpBQUFBTWY5ZDZRQUFBQUJtRHgrRUFBQUFBQUJWU0lubFNJ
WC9kQWZvQUFBQUFPc0NNY0JkdzJabVppNFBINFFBQUFBQUFGVklpZVZUClVFaUorMGlGMjNRalNH
UDJTSW5mNkFBQUFBQklpZCsrQVFBQUFMb0JBQUFBU0lQRUNGdGQ2UUFBQUFCSWc4UUlXMTNERHgr
RUFBQUEKQUFCVlNJbmxpZmkvQXdBQUFJbkdYZWtBQUFBQVptWm1aaTRQSDRRQUFBQUFBRlZJaWVW
ZHcyWXVEeCtFQUFBQUFBQlZTSW5sUVZkQgpWbE5JZyt3b1NZbitUSXM5QUFBQUFFbUxCMGlKUmVC
SWl3VUFBQUFBU0lzQVNJbEYwRWlMQlFBQUFBQklpd0JJaVVYWVNJbDF3RWlKClZjaElqWFhRU0kx
VndFeUxCUUFBQUFCTWl3MEFBQUFBTWYrNUFnQUFBT2dBQUFBQVNJbkRTSXNGQUFBQUFFaUxNRXlK
OTBpSjJ1Z0EKQUFBQVNJbmY2QUFBQUFCSml3ZElPMFhnZFF0SWc4UW9XMEZlUVY5ZHcrZ0FBQUFB
RHg4QVZVaUo1VUZYUVZaQlZVRlVVMGlEN0JoSgppZlJKaWY1SWl3VUFBQUFBU0lzQVNJbEYwRWlM
QlFBQUFBQk1pemhNaWY3b0FBQUFBRWlKd3pIL01mWklpZHJvQUFBQUFFbUp4VWlKCjMrZ0FBQUFB
U0kxMXlFaU5WY0JNaXdVQUFBQUFTSTBGR1Q4QUFFaUpSY2hNaXcwQUFBQUFUSWxsd0RIL3VRRUFB
QURvQUFBQUFFaUoKdzBpTEJRQUFBQUJJaXpCTWllOUlpZHJvQUFBQUFFaUozK2dBQUFBQVRJbjNU
SW4rVElucTZBQUFBQUJNaWUvb0FBQUFBRWlMQlFBQQpBQUJJaXdCSU8wWFFkUTlJZzhRWVcwRmNR
VjFCWGtGZlhjUG9BQUFBQUE4ZlFBQlZTSW5sUVZkQlZrRlVVMG1KemttSjEwaUo4MGlMCkJRQUFB
QUJJaXpEb0FBQUFBRW1KeEV5SjUwaUozdWdBQUFBQWdEMy8vLy8vQUhWZFNJTTkvLy8vL3dBUGhh
a0FBQUJJaXdVQUFBQUEKU0lYQWRTRklqVDBBQUFBQXZnSUFBQURvQUFBQUFFaUpCUUFBQUFCSWhj
QVBoSnNBQUFCSWpUVUFBQUFBU0luSDZBQUFBQUJJaVFVQQpBQUFBU0lYQUQ1VUZBQUFBQUhST1NJ
MFZJajRBQURIL01mWk1pZmxOaWZBd3dPZ0FBQUFBU1luR01mOU1pZll4MHVnQUFBQUFTSW5EClNJ
c0ZBQUFBQUVpRndIUmlUSW5uU0luZS85Qk1pZmZvQUFBQUFFaUozK2dBQUFBQVRJbmdXMEZjUVY1
QlgxM0RTSTA5QUFBQUFFaU4KTlFBQUFBQklqUTBBQUFBQXV1a0FBQURvQUFBQUFFaU5QUUFBQUFC
SWpUVUFBQUFBU0kwTkFBQUFBTHJtQUFBQTZBQUFBQUJJalQwQQpBQUFBU0kwMUFBQUFBRWlORFFB
QUFBQzY2UUFBQU9nQUFBQUFacEJWU0lubFFWWlRTSVBzRVBNUEVVWHNTWW4raXgwQUFBQUFoZHQx
CkRlZ0FBQUFBaWNPSkhRQUFBQUJJaXpXWE9RQUFUSW4zL3hVQUFBQUFpZCtKeHZNUEVFWHNTSVBF
RUZ0QlhsM3BBQUFBQUZWSWllVkIKVjBGV1FWUlRTSUhzc0FBQUFFbUova3lMUFFBQUFBQkppd2RJ
aVVYWVNJdEZLRWlMVFRCSWkxVTRTSXQxUUVpTGZVaElpWHdrT0VpSgpkQ1F3U0lsVUpDaElpVXdr
SUVpSlJDUVlTSXRGSUVpSlJDUVFTSXRGRUVpTFRSaElpVXdrQ0VpSkJDVG9BQUFBQUlUQWREZUxI
UUFBCkFBQ0YyM1VONkFBQUFBQ0p3NGtkQUFBQUFFaUxOZWM0QUFCTWlmZi9GUUFBQUFDSjM0bkdN
ZEl4eVVVeHdPbktBUUFBVEkxbE1FaU4KWFJCSWl6Vm5PUUFBU0lzOXVDb0FBUDhWQUFBQUFFaU5O
UUFBQUFCSWljY3gwdjhWQUFBQUFFaUZ3SFFmU0lzVm5EZ0FBRWlOZmJCSQppY2JvQUFBQUFQSVBF
RVc0OGc4UVRjanJFUTlYd0E4cFJjQVBLVVd3RDFmSkQxZkE4ZzlZd2ZJUEVFc0k4ZzlZU3hqeUQx
ekI4ZzhSClF3aElpelgxT0FBQVNJczlSaW9BQVA4VkFBQUFBRWlOTlFBQUFBQklpY2N4MHY4VkFB
QUFBRWlGd0hRZlNJc1ZLamdBQUVpTmZiQkkKaWNib0FBQUFBUElQRUUyNDhnOFFSY2pyRVE5WHdB
OHBSY0FQS1VXd0QxZkFEMWZKOGc5WXlQSkJEeEJVSkJnUFY4RHlEMXJDOGtFUApXRlFrQ1BJUFhN
cnlRUThSVENRSXg0VncvLy8vQUFBQUFQSVBFQ01QVjlMeUQxclU4dzhSbFhqLy8vL0hoWFQvLy84
QUFBQUE4ZzhRClN3anlEMXJwOHc4UnJYei8vLy95UVE4UVhDUVE4ZzlhMi9NUEVWMkE4ZzlZWXhE
eUQxcms4dzhSWllqSFJZUUFBQUFBOHc4UmJZekgKUlpBQUFBQUE4dzhSVlpqekR4RkZsUElQV0Vz
WThnOWF5Zk1QRVUyYzh3OFJYYUR6RHhGbHFQTVBFVVdrOHc4UlRheUxIUUFBQUFDRgoyM1VONkFB
QUFBQ0p3NGtkQUFBQUFFaUxOU0kzQUFCTWlmZi9GUUFBQUFCTWpZVncvLy8vaWQrSnhyb0NBQUFB
dVFJQUFBRG9BQUFBCkFFbUxCMGc3UmRoMUVFaUJ4TEFBQUFCYlFWeEJYa0ZmWGNQb0FBQUFBR1lQ
SDRRQUFBQUFBRlZJaWVWVFVFaUxOZk0yQUFCSWl4MEEKQUFBQVNJblkvOUJJaXpYb05nQUFTSW5I
U0luWVNJUEVDRnRkLytCbWtGVklpZVZUVUVpTEJRQUFBQUJJaXhqb0FBQUFBRWlORlZRNgpBQUNK
eDRuR1NJblpTSVBFQ0Z0ZDZRQUFBQUJta0ZWSWllVlRTSVBzS0VpSjgwaUxOVTB6QUFEL0ZRQUFB
QUJJalZYd1NJMU42RXlOClJlQk1qVTNZdndBQUFBQklpY2JvQUFBQUFFaUxUZGhJaTFYZ1NJdDE2
RWlMZmZCSWlSd2tSVEhBUlRISjZBQUFBQUJJZzhRb1cxM0QKRHg5QUFGVklpZVZCVjBGV1FWVkJW
Rk5JZyt3b1RJbE53RXlKUmJoSWlVMndTSW5UU0lsMXlFaUpmZEJJaXhVQUFBQUFNZjh4OXVnQQpB
QUFBU1luR1NJWGJma2xNaTMwUVRJdHR5QThmaEFBQUFBQUFUWXRsQUV5SjkwMkY1SFVVVEluKzZB
QUFBQURyR21ZdUR4K0VBQUFBCkFBQk1pZWJvQUFBQUFFeUo1K2dBQUFBQVNZUEZDRWoveTNYSFNJ
c1ZBQUFBQUVpTERRQUFBQUF4L3pIMjZBQUFBQUJKaWNkSWpWWFEKTWYrK0RnQUFBT2dBQUFBQVNJ
bkRTSTAxNHprQUFFeUovMGlKMnVnQUFBQUFTSW5mNkFBQUFBQklqVFhwT1FBQVRJbi9USW55NkFB
QQpBQUJNaWZmb0FBQUFBRWlMWGJCSWhkdDBHa2lOTmVZNUFBQk1pZjlJaWRyb0FBQUFBRWlKMytn
QUFBQUFTSXRkdUVpRjIweUxkY0IwCkdraU5OZDg1QUFCTWlmOUlpZHJvQUFBQUFFaUozK2dBQUFB
QVRZWDJkQnBJalRYZ09RQUFUSW4vVElueTZBQUFBQUJNaWZmb0FBQUEKQURIL1NJdDF5T2dBQUFB
QVRJbjRTSVBFS0Z0QlhFRmRRVjVCWDEzRFZVaUo1VUZYUVZaVFNJUHNPRWpIUkNRSUFBQUFBRWpI
QkNRQQpBQUFBU0kxVjRFaU5UZGhNalVYUVRJMU55T2dBQUFBQVJUSC9oTUIwY2t5TFJjaElpMDNR
U0l0ZDJFaUxkZUJGTWY4eC8waUoydWdBCkFBQUFTWW5HU0luZjZBQUFBQUJOaGZaMFJVaUxQWm9s
QUFCSWpUVUFBQUFBL3hVQUFBQUFTSXMxRmpFQUFFaUp4MHlKOHY4VkFBQUEKQUVpSncweUo5K2dB
QUFBQVNJMDFBQUFBQUVpSjMvOFZBQUFBQUVtSngweUorRWlEeERoYlFWNUJYMTNEWmc4ZlJBQUFW
VWlKNVVGWApRVlpCVlVGVVUwaUQ3Q2hNaVUzSVRZbkdTWW5NU0lsVnVFaUpkY0JJaWZ0SWlWM1E2
QUFBQUFCSmljZElqVFUzT0FBQVNJbmY2QUFBCkFBQkppY1V3MjAyRjdRK0Vjd0VBQUV5SjcrZ0FB
QUFBVERuNEQ0VmlBUUFBVEludnZnNEFBQUJJaTFXNDZBQUFBQUNFd0ErRVNRRUEKQU9nQUFBQUFT
WW5IU0kwMUNEZ0FBRWlMZmREb0FBQUFBRW1KeFUyRjdRK0VKUUVBQUV5SjcrZ0FBQUFBVERuNFRZ
bm5ENFVSQVFBQQpUSW52NkFBQUFBQklpY05KaVI1SWpUemRBQUFBQU9nQUFBQUFTWWtIU0lYYlRJ
dGx3RXlKK240eFJUSC9acEJNaWU5TWlmNUlpZFBvCkFBQUFBRWlKMmt3NTRMa0FBQUFBU0E5RXdV
aUxDa3FKQlBsSi84ZE5PejU4MUV5TGZjaE5oZjlNaTJYUWRESG9BQUFBQUVtSnhraU4KTllnM0FB
Qk1pZWZvQUFBQUFFaUp3MGlGMjNRTlNJbmY2QUFBQUFCTU9mQjBBakhiU1lrZlRJdDlFRTJGLzNR
eDZBQUFBQUJKaWNaSQpqVFZ1TndBQVRJbm42QUFBQUFCSWljTkloZHQwRFVpSjMrZ0FBQUFBVERu
d2RBSXgyMG1KSDB5TGZSaXpBVTJGLzNRejZBQUFBQUJKCmljWklqVFZTTndBQVRJbm42QUFBQUFC
SWljTkloZHQwRFVpSjMrZ0FBQUFBVERud2RBSXgyMG1KSDdNQmlOaElnOFFvVzBGY1FWMUIKWGtG
ZlhjTm1abVptTGc4ZmhBQUFBQUFBVlVpSjVVRlhRVlpUU0lQc0tFbUo5a2lMTllrdkFBRC9GUUFB
QUFCSWljTkZNZjlJalZYZwpTSTFOMkV5TlJkQy9BQUFBQUVpSjN1Z0FBQUFBU0luZjZBQUFBQUJJ
aVVYSVNJc05BQUFBQUVnN0FYUVRTSTFWeURIL3Znc0FBQURvCkFBQUFBRW1KeDBpSjMrZ0FBQUFB
U0luRFNJWGJkQWhJaWQvb0FBQUFBRWlMVmRCSWkzWFlTSXQ5NEV5Sk5DUXh5VTJKK0VtSjJlZ0EK
QUFBQVNJUEVLRnRCWGtGZlhjTm1EeCtFQUFBQUFBQlZTSW5sUVZkQlZsTklnK3hJU0kxRnlFaU5U
Y0JJaVV3a0NFaUpCQ1JJalZYZwpTSTFOMkV5TlJkQkZNZlpGTWNub0FBQUFBSVRBRDRTTEFBQUFT
SXROMEVpTFhkaElpM1hnUlRIMk1mOUlpZHJvQUFBQUFFbUp4MGlKCjMrZ0FBQUFBVFlYL2RHSklp
MzNJU0lYL2RDWkl4MFc0QUFBQUFFaU5WYmkrQ3dBQUFPZ0FBQUFBaE1CMERFaUxkYmhNaWYvb0FB
QUEKQUVpTGRjQkloZlowQ0V5Si8rZ0FBQUFBU0lzMTR6QUFBRWlMUFl3aUFBQk1pZnIvRlFBQUFB
QkppY1pNaWYvb0FBQUFBRXlKOEVpRAp4RWhiUVY1QlgxM0RaaTRQSDRRQUFBQUFBRlZJaWVWQlZs
TkppZjVJaXpVbkxRQUFTSXM5c0NFQUFQOFZBQUFBQUVpSncwaUxGUUF4CkFBQklqVFVBQUFBQVNJ
bmYveFVBQUFBQWhNQjBKRWlMTmVVd0FBQklpZC8vRlFBQUFBQkloY0IwRDBpSngweUo5bHRCWGwz
cEFBQUEKQUZ0QlhsM0RabVl1RHgrRUFBQUFBQUJWU0lubFUxQklpelc3TEFBQVNJczlSQ0VBQVA4
VkFBQUFBRWlKdzBpTEZaUXdBQUJJalRVQQpBQUFBU0luZi94VUFBQUFBaE1CMEkwaUxOWGt3QUFC
SWlkLy9GUUFBQUFCSWhjQjBEa2lKeDBpRHhBaGJYZWtBQUFBQVNJc1ZBQUFBCkFESC9NZlpJZzhR
SVcxM3BBQUFBQUdabVptWm1aaTRQSDRRQUFBQUFBRlZJaWVWZDZRQUFBQUJtRHg5RUFBQlZTSW5s
WGVrQUFBQUEKWmc4ZlJBQUFWVWlKNVYzcEFBQUFBR1lQSDBRQUFGVklpZVZkNlFBQUFBQm1EeDlF
QUFCVlNJbmxYZWtBQUFBQVpnOGZSQUFBVlVpSgo1VWlKK0VpRndIUUZTSVgyZFFKZHcwaUo5MGlK
eGwzcEFBQUFBSkJWU0lubFNJc0ZBQUFBQUVpTE9GM3BBQUFBQUdabVppNFBINFFBCkFBQUFBRlZJ
aWVWQlZsTkppZjR4LytnQUFBQUFTSW5EU0luZlRJbjI2QUFBQUFCSmljWklpZC9vQUFBQUFFeUo4
RnRCWGwzRFptWm0KWm1ZdUR4K0VBQUFBQUFCVlNJbmxTSXNGQUFBQUFFQ0U5a2dQUlFVQUFBQUFT
SXNRU0kwMVFERUFBRjNwQUFBQUFHWXVEeCtFQUFBQQpBQUJWU0lubFhla0FBQUFBWmc4ZlJBQUFW
VWlKNVYzcEFBQUFBR1lQSDBRQUFGVklpZVZJaXdVQUFBQUFpd0JkdzVCVlNJbmxRVlpUCmlmQklp
ZjVGTWZhRCtBRjFDVWlMQlFBQUFBRHJDNFhBZFM1SWl3VUFBQUFBU0lzNE1kTG9BQUFBQUVpSncw
aUYyM1FWdndFQUFBQysKRUFBQUFPZ0FBQUFBU1luR1NZa2VUSW53VzBGZVhjTm1EeCtFQUFBQUFB
QlZTSW5sVTFCSWlmdElpenZvQUFBQUFFaUozMGlEeEFoYgpYZWtBQUFBQWtGVklpZVZUVUVpSisw
aUxPK2dBQUFBQVNJbERDRWlGd0ErVndFaUR4QWhiWGNObVptWm1aaTRQSDRRQUFBQUFBRlZJCmll
VlRVRWlKKzBpTGV3am9BQUFBQUVqSFF3Z0FBQUFBaGNBUGxNQklnOFFJVzEzRFppNFBINFFBQUFB
QUFGVklpZVZCVmxOSmlmWkkKaXg5SWlkL29BQUFBQUVtSkJraUoyRnRCWGwzRFZVaUo1VUZYUVZa
VFVFbUo5a21KLzc4UUFBQUE2QUFBQUFCSWljTkl4ME1JQUFBQQpBRXlKLzB5Sjl1Z0FBQUFBU0lr
RFNJbllTSVBFQ0Z0QlhrRmZYY05tWm1abVptWXVEeCtFQUFBQUFBQlZTSW5sUVZaVDZBQUFBQUJJ
CmljTklpZC9vQUFBQUFFR0p4a1dGOW5VZ1NJbmZ2Z0lBQUFEb0FBQUFBRUdKeGtXRjluVUxTSW5m
NkFBQUFBQkJpY1pJaWQvb0FBQUEKQUVTSjhGdEJYbDNEa0ZWSWllVmQ2UUFBQUFCbUR4OUVBQUJW
U0lubHZ3Y0FBQURvQUFBQUFJVEFENVRBWGNObVppNFBINFFBQUFBQQpBRlZJaWVWQlYwRldRVlZC
VkZOUVNZbk9TWW5YU1luMVNZbjhpZ1VBQUFBQWhNQjFYMGlOUGFVd0FBRG9BQUFBQURIYlNJWEFk
RFpJCml6WGlMQUFBU0lzOU94NEFBRWlKd3Y4VkFBQUFBRWlGd0hRYVNJczF6aXdBQUVpTkZZOHdB
QUJJaWNmL0ZRQUFBQUJJaWNOSWpUVUEKQUFBQVNJbmY2QUFBQUFER0JmLy8vLzhCU0lzOUFBQUFB
RWlGLzNRaFNJczFNaXdBQUV5SjRreUo2VTJKK0UySjhmOFZBQUFBQUVtSgp4VWlKMCtzTU1kc3gv
MHlKOXVnQUFBQUFUSW5vU0luYVNJUEVDRnRCWEVGZFFWNUJYMTNEWm1abVptWm1MZzhmaEFBQUFB
QUFWVWlKCjVVRlhRVlpUU0lQc0dFbUo5dklQRVUzZzhnOFJSZGhKaWYrS0JRQUFBQUNFd0hWZlNJ
MDl3aThBQU9nQUFBQUFNZHRJaGNCME5raUwKTmY4ckFBQklpejFZSFFBQVNJbkMveFVBQUFBQVNJ
WEFkQnBJaXpYckt3QUFTSTBWckM4QUFFaUp4LzhWQUFBQUFFaUp3MGlOTlFBQQpBQUJJaWQvb0FB
QUFBTVlGLy8vLy93RklpelZqS3dBQVNJczlBQUFBQUV5Sit2SVBFRVhZOGc4UVRlQk1pZkZJZzhR
WVcwRmVRVjlkCi95VUFBQUFBWm1abUxnOGZoQUFBQUFBQVZVaUo1WUE5Ly8vLy93RjFGVWlMTlNR
ckFBQklpejBBQUFBQVhmOGxBQUFBQUYzRFptWm0KTGc4ZmhBQUFBQUFBVlVpSjVVRldVMGlMQlFB
QUFBQklpemd4OXVnQUFBQUFTSW5EU0lYYmREbElpd1VBQUFBQVNJc3dTSW5mNkFBQQpBQUJJaGNC
MEdqSC9TSW5HNkFBQUFBQkppY1pJaWQvb0FBQUFBRXlKOE9zVVNJbmY2QUFBQUFCSWpUMUFMZ0FB
NkFBQUFBQmJRVjVkCncyWVBIMFFBQUZWSWllVlRVRWlKKzBpTEZaQXFBQUJJalRVQUFBQUEveFVB
QUFBQWhNQjBGa2lMTlhncUFBQklpZDlJZzhRSVcxMy8KSlFBQUFBQXh3RWlEeEFoYlhjTlZTSW5s
UVZkQlZrRlVVMGlKKzBpTk5RQUFBQURvQUFBQUFJWEFENFN5QVFBQVNJMDFBQUFBQUVpSgozK2dB
QUFBQWhjQVBoS2NCQUFCSWpUVUFBQUFBU0luZjZBQUFBQUNGd0ErRW5BRUFBRWlOTlFBQUFBQklp
ZC9vQUFBQUFJWEFENFNSCkFRQUFTSTAxQUFBQUFFaUozK2dBQUFBQWhjQVBoSU1CQUFCSWpUVUFB
QUFBU0luZjZBQUFBQUNGd0ErRWRRRUFBRWlOTlFBQUFBQkkKaWQvb0FBQUFBSVhBRDRSbkFRQUFT
STAxQUFBQUFFaUozK2dBQUFBQWhjQVBoRmtCQUFCSWpUVUFBQUFBU0luZjZBQUFBQUNGd0ErRQpT
d0VBQUVpTk5RQUFBQUJJaWQvb0FBQUFBSVhBRDRROUFRQUFTSTAxQUFBQUFFaUozK2dBQUFBQWhj
QVBoQzhCQUFCSWpUVUFBQUFBClNJbmY2QUFBQUFDRndBK0VJUUVBQUVpTk5RQUFBQUJJaWQvb0FB
QUFBSVhBRDRRVEFRQUFTSTAxQUFBQUFFaUozK2dBQUFBQWhjQVAKaEFVQkFBQklqVFVBQUFBQVNJ
bmY2QUFBQUFDRndBK0U5d0FBQUVpTk5RQUFBQUJJaWQvb0FBQUFBSVhBRDRUcEFBQUFTSTAxQUFB
QQpBRWlKMytnQUFBQUFoY0FQaE5zQUFBQklqVFVBQUFBQVNJbmY2QUFBQUFDRndBK0V6UUFBQUVp
Tk5RQUFBQUJJaWQvb0FBQUFBSW5CClNJMGRBQUFBQURIQWhjbElEMFhZRDRWeUFRQUE2YWtBQUFC
SWpSMEFBQUFBNlowQUFBQklqUjBBQUFBQTZaRUFBQUJJalIwQUFBQUEKNllVQUFBQklqUjBBQUFB
QTYzeElqUjBBQUFBQTYzTklqUjBBQUFBQTYycElqUjBBQUFBQTYyRklqUjBBQUFBQTYxaElqUjBB
QUFBQQo2MDlJalIwQUFBQUE2MFpJalIwQUFBQUE2ejFJalIwQUFBQUE2elJJalIwQUFBQUE2eXRJ
alIwQUFBQUE2eUpJalIwQUFBQUE2eGxJCmpSMEFBQUFBNnhCSWpSMEFBQUFBNndkSWpSMEFBQUFB
U0lzRFNJWEFENFc0QUFBQVNJMDlBQUFBQU9nQUFBQUFTWW5HVFlYMmRYWkkKaXoxVUdRQUFUSTBs
QUFBQUFFeUo1djhWQUFBQUFFaU5OUUFBQUFCSWljY3gwdWdBQUFBQVNZbkdUSXM5eVNjQUFFaUxQ
U0laQUFCTQppZWIvRlFBQUFBQklpeld5SndBQVNJbkg2QUFBQUFCSWljZm9BQUFBQUVpTkZRQUFB
QUJNaWZkTWlmNUlpY0hvQUFBQUFFeUo5K2dBCkFBQUFTSTAxQUFBQUFFeUo5LzhWQUFBQUFFaUxO
WVlrQUFCSWljZi9GUUFBQUFCSWljZElpZDdvQUFBQUFFaUxBMXRCWEVGZVFWOWQKdzJZUEgwUUFB
RlZJaWVWSWl6MEFBQUFBU0lzTkFBQUFBREgydWdBQUFJQmQ2UUFBQUFDUVZVaUo1VWlMUFFBQUFB
QklpdzBBQUFBQQpNZmE2QkFBQUFGM3BBQUFBQUpCVlNJbmx2d2dBQUFEb0FBQUFBSVRBRDVUQVhj
Tm1aaTRQSDRRQUFBQUFBRlZJaWVXL0NRQUFBT2dBCkFBQUFoTUFQbE1CZHcyWm1MZzhmaEFBQUFB
QUFWVWlKNVYzcEFBQUFBR1lQSDBRQUFGVklpZVZJaXdVQUFBQUFTSXN3U0lzRkFBQUEKQUVpTEVG
M3BBQUFBQUdhUVZVaUo1VWlMTlYwbUFBRC9GUUFBQUFDRCtBSVBsTUFQdHNCZHd3OGZRQUJWU0lu
bFNJczFSU1lBQVA4VgpBQUFBQUErK3dGM0RaaTRQSDRRQUFBQUFBRlZJaWVWSWlmQklpelVxSmdB
QVNJbkNYZjhsQUFBQUFBOGZoQUFBQUFBQVZVaUo1VWlMCk5SVW1BQUJkL3lVQUFBQUFabVptWm1Z
dUR4K0VBQUFBQUFCVlNJbmxNTUQvRlFBQUFBQklpelgxSlFBQVNJbkgveFVBQUFBQUQ3N0EKWGNO
bVptWm1abVl1RHgrRUFBQUFBQUJWU0lubFUxQklpZnN3d1A4VkFBQUFBRWlOTlFBQUFBQklpY2Yv
RlFBQUFBQklpelc0SlFBQQpTSW5IU0luYVNJUEVDRnRkL3lVQUFBQUFaZzhmUkFBQVZVaUo1VjNw
QUFBQUFHWVBIMFFBQUZWSWllVmQ2UUFBQUFCbUR4OUVBQUJWClNJbmxYZWtBQUFBQVpnOGZSQUFB
VlVpSjVVRlhRVlpCVkZOSmlmWkJpZi9vQUFBQUFFR0p4SW9GQUFBQUFJVEFkUzlFaWVlK0FRQUEK
QURIUzZBQUFBQUF3MjRYQWRUOUVpZWUrQVFBQUFESFM2QUFBQUFDRndIVXN4Z1gvLy8vL0FVR0Qv
d1YzRFVsangwaU5EU0FBQUFDTApGSUZFaWVkTWlmWXh5ZWdBQUFBQWhjQVBsTU9JMkZ0QlhFRmVR
VjlkdzJabVptWm1MZzhmaEFBQUFBQUFWVWlKNVVGV1UwbUo5b243CjZBQUFBQUNEK3dWM0RVaGp5
MGlORlNBQUFBQ0xGSXFKeDB5SjlqSEo2QUFBQUFDRndBK1V3RnRCWGwzRER4K0FBQUFBQUZWSWll
VkIKVmxOSWcrd1FTWW4yU0luN3hrWHZBZWdBQUFBQVNJMU43NG5IaWQ2NkFRQUFBT2dBQUFBQWhj
QVBsY0ZOaGZaMERZVEpkUW1LVGUrQQo4UUZCaUE2RndBK1V3RWlEeEJCYlFWNWR3MlptWm1abVpp
NFBINFFBQUFBQUFGVklpZVZkNlFBQUFBQm1EeDlFQUFCVlNJbmxTSXNGCkFBQUFBRWlGd0hRSC85
QVB0c0JkdzBpTlBRQUFBQUJJalRVQUFBQUFTSTBOQUFBQUFMcFJDd0FBNkFBQUFBQm1MZzhmaEFB
QUFBQUEKVlVpSjVVaUxCUUFBQUFCSWhjQjBBMTMvNEVpTlBRQUFBQUJJalRVQUFBQUFTSTBOQUFB
QUFMcFNDd0FBNkFBQUFBQm1abVptWmk0UApINFFBQUFBQUFGVklpZVZJaXdVQUFBQUFTSVhBZEFO
ZC8rQklqVDBBQUFBQVNJMDFBQUFBQUVpTkRRQUFBQUM2VXdzQUFPZ0FBQUFBClptWm1abVl1RHgr
RUFBQUFBQUJWU0lubFNJc0ZBQUFBQUVpRndIUURYZi9nU0kwOUFBQUFBRWlOTlFBQUFBQklqUTBB
QUFBQXVsUUwKQUFEb0FBQUFBR1ptWm1abUxnOGZoQUFBQUFBQVZVaUo1Vk5RU0luN1NJc05BQUFB
QUlBOS8vLy8vd0IxVlVpRnlYVm1TSXNGQUFBQQpBRWlGd0hVZFNJMDlBQUFBQUw0Q0FBQUE2QUFB
QUFCSWlRVUFBQUFBU0lYQWRGeElqVFVBQUFBQVNJbkg2QUFBQUFCSWljRklpUTBBCkFBQUFNTUJJ
aGNrUGxRVUFBQUFBZEE5SWhjbDBUMGlKMy8vUmhNQVBsY0JJZzhRSVcxM0RTSTA5QUFBQUFFaU5O
UUFBQUFCSWpRMEEKQUFBQXVsRUxBQURvQUFBQUFFaU5QUUFBQUFCSWpUVUFBQUFBU0kwTkFBQUFB
THJtQUFBQTZBQUFBQUJJalQwQUFBQUFTSTAxQUFBQQpBRWlORFFBQUFBQzZVUXNBQU9nQUFBQUFa
bVptWm1abUxnOGZoQUFBQUFBQVZVaUo1VUZYUVZaVFVFbUo5a21KLzRBOS8vLy8vd0IxClhVaURQ
Zi8vLy84QUQ0WENBQUFBU0lzRkFBQUFBRWlGd0hVaFNJMDlBQUFBQUw0Q0FBQUE2QUFBQUFCSWlR
VUFBQUFBU0lYQUQ0UzAKQUFBQVNJMDFBQUFBQUVpSngrZ0FBQUFBU0lrRkFBQUFBRWlGd0ErVkJR
QUFBQUIwYUVpTE5mc2RBQUJJaXoyRUVnQUEveFVBQUFBQQpTSW5EU0lzVjFDRUFBRWlOTlFBQUFB
QklpZC8vRlFBQUFBQ0V3SFEyU0lzMXVTRUFBRWlKMy84VkFBQUFBRWlGd0hRaFNJc05BQUFBCkFF
aUZ5WFJlU0luSFRJbitUSW55U0lQRUNGdEJYa0ZmWGYvaFNJUEVDRnRCWGtGZlhjTklqVDBBQUFB
QVNJMDFBQUFBQUVpTkRRQUEKQUFDNlVnc0FBT2dBQUFBQVNJMDlBQUFBQUVpTk5RQUFBQUJJalEw
QUFBQUF1dVlBQUFEb0FBQUFBRWlOUFFBQUFBQklqVFVBQUFBQQpTSTBOQUFBQUFMcFNDd0FBNkFB
QUFBQm1MZzhmaEFBQUFBQUFWVWlKNVVGV1UwbUova2lMTlJjZEFBQklpejJnRVFBQS94VUFBQUFB
ClNJbkRTSXNWOENBQUFFaU5OUUFBQUFCSWlkLy9GUUFBQUFDRXdBK0V0QUFBQUVpTE5kRWdBQUJJ
aWQvL0ZRQUFBQUJJaWNOSWhkc1AKaEpnQUFBQklpd1VBQUFBQWdEMy8vLy8vQUhWWVNJWEFENFdU
QUFBQVNJc0ZBQUFBQUVpRndIVWhTSTA5QUFBQUFMNENBQUFBNkFBQQpBQUJJaVFVQUFBQUFTSVhB
RDRTRkFBQUFTSTAxQUFBQUFFaUp4K2dBQUFBQVNJa0ZBQUFBQUVpRndBK1ZCUUFBQUFCMEVVaUZ3
SFI5ClNJbmZUSW4yVzBGZVhmL2dTSTAxbENNQUFFeUo5K2dBQUFBQWhNQjBERWlKMzF0QlhsM3BB
QUFBQUVpTEZRQUFBQUF4L3pIMlcwRmUKWGVrQUFBQUFTSTA5QUFBQUFFaU5OUUFBQUFCSWpRMEFB
QUFBdWxNTEFBRG9BQUFBQUVpTlBRQUFBQUJJalRVQUFBQUFTSTBOQUFBQQpBTHJtQUFBQTZBQUFB
QUJJalQwQUFBQUFTSTAxQUFBQUFFaU5EUUFBQUFDNlV3c0FBT2dBQUFBQVptWXVEeCtFQUFBQUFB
QlZTSW5sCk1NQmQveVVBQUFBQUR4OEFWVWlKNVVGWFFWWlRVRW1KLzBpTE5aUWJBQUJJaXowZEVB
QUEveFVBQUFBQVNJbkRTSXNWYlI4QUFFaU4KTlFBQUFBQklpZC8vRlFBQUFBQ0V3QStFbndBQUFF
aUxOVTRmQUFCSWlkLy9GUUFBQUFCSmljWk5oZllQaElNQUFBQklpd1VBQUFBQQpnRDMvLy8vL0FI
VllTSVhBRDRXK0FBQUFTSXNGQUFBQUFFaUZ3SFVoU0kwOUFBQUFBTDRDQUFBQTZBQUFBQUJJaVFV
QUFBQUFTSVhBCkQ0U3dBQUFBU0kwMUFBQUFBRWlKeCtnQUFBQUFTSWtGQUFBQUFFaUZ3QStWQlFB
QUFBQjBRVWlGd0ErRXBBQUFBRXlKOTB5Si9raUQKeEFoYlFWNUJYMTMvNEVpTEZRQUFBQUF4L3pI
MjZBQUFBQUJKaTA4UVRJbi9TSW5HU0lQRUNGdEJYa0ZmWGYvaFNJc1ZBQUFBQURILwpNZmJvQUFB
QUFFaUp3MGlOTmM0aEFBQklpZC9vQUFBQUFFbUxSeEJNaWY5SWlkN3JvRWlOUFFBQUFBQklqVFVB
QUFBQVNJME5BQUFBCkFMcFVDd0FBNkFBQUFBQklqVDBBQUFBQVNJMDFBQUFBQUVpTkRRQUFBQUM2
NWdBQUFPZ0FBQUFBU0kwOUFBQUFBRWlOTlFBQUFBQkkKalEwQUFBQUF1bFFMQUFEb0FBQUFBR1pt
Wm1ZdUR4K0VBQUFBQUFCVlNJbmxTSXNGQUFBQUFFaUZ3SFVkU0kwOUFBQUFBTDRDQUFBQQo2QUFB
QUFCSWlRVUFBQUFBU0lYQWREZElqVFVBQUFBQVNJbkg2QUFBQUFCSWlRVUFBQUFBU0lYQWRCTklq
UTBBQUFBQVNJa05BQUFBCkFFaUxBRjNEU0kwRkRpRUFBRjNEU0kwOUFBQUFBRWlOTlFBQUFBQklq
UTBBQUFBQXV1WUFBQURvQUFBQUFHWm1abVl1RHgrRUFBQUEKQUFCVlNJbmxTSXNGQUFBQUFFaUxB
RjNEVlVpSjVVaURQZi8vLy84QWRSMUlqVDBBQUFBQXZnSUFBQURvQUFBQUFFaUpCUUFBQUFCSQpo
Y0IwTjBpTlBRQUFBQURvQUFBQUFFaU5OUUFBQUFCSWljZm9BQUFBQUVpTEJRQUFBQUJJaGNCMEww
aU5EUUFBQUFCSWlRMEFBQUFBClhjTklqVDBBQUFBQVNJMDFBQUFBQUVpTkRRQUFBQUM2MndvQUFP
Z0FBQUFBU0kwOUFBQUFBRWlOTlFBQUFBQklqUTBBQUFBQXV0d0sKQUFEb0FBQUFBRlZJaWVWSWl3
VUFBQUFBWGNNUEh3QlZTSW5sdUFRQUFBQklPVDBBQUFBQUQ0UXNBUUFBdUFJQUFBQklPVDBBQUFB
QQpENFFhQVFBQXVDY0FBQUJJT1QwQUFBQUFENFFJQVFBQXVCc0FBQUJJT1QwQUFBQUFENFQyQUFB
QXVCd0FBQUJJT1QwQUFBQUFENFRrCkFBQUF1QjhBQUFCSU9UMEFBQUFBRDRUU0FBQUF1Q0FBQUFC
SU9UMEFBQUFBRDRUQUFBQUF1QjBBQUFCSU9UMEFBQUFBRDRTdUFBQUEKdUI0QUFBQklPVDBBQUFB
QUQ0U2NBQUFBdUNFQUFBQklPVDBBQUFBQUQ0U0tBQUFBdUNJQUFBQklPVDBBQUFBQWRIeTRKQUFB
QUVnNQpQUUFBQUFCMGJyZ2pBQUFBU0RrOUFBQUFBSFJndUNVQUFBQklPVDBBQUFBQWRGSzRKZ0FB
QUVnNVBRQUFBQUIwUkxncEFBQUFTRGs5CkFBQUFBSFEydUNnQUFBQklPVDBBQUFBQWRDaTRLZ0FB
QUVnNVBRQUFBQUIwR3JrckFBQUFTTGovLy8vLy8vLy9mMGc1UFFBQUFBQkkKRDBUQlhjTm1abVl1
RHgrRUFBQUFBQUJWU0lubFNJc0ZBQUFBQUVpTE9FaUxOWnNiQUFEL0ZRQUFBQUFQdnNCZHd3QUFB
QUFBQUFCQQpBQUFBQUFBQTREOEFBQUFBQUFEZ1B3QUFBQUFBQUNaQUFBQUFBQUNBTUVBQUFBQUFB
QUFTUUFBQUFBQUFBQ2xBQUFBQUFBQUFFRUFBCkFBQlIreUg1UHdBQUFGSDdJUWxBQUFEQWZIelpF
a0FBQUFBQUFBQWhRQUFBQUFBQUFBQkFBQUFBQUFBQUhFQUFBQUFBQUFBWlFBQUEKQUFBQWdDUkFB
QUFBQUFDQUpVQUFBQUFBQUFBcVFBQUFBQUFBQUNoQUFBQUFBQUNBTEVBQUFBQUFBQUF4UUpxWm1a
bVptZGsvQUFBQQpBQUFBNEQ4QUFBQUFBQUR3UHdBQUFBQUFBUGcvQUFDQVB3QUFpTUVBQUFBQUFB
QUFnQUFBQUFBQUFBQ0FBQUNJUVFFQUFBQUJBQUFBCkF3QUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFB
Q0lBd0FBaVFNQUFJb0RBQUNMQXdBQWtBTUFBSkVEQUFCZlEwWklWRlJRVFdWemMyRm4KWlZObGRG
SmxjM0J2Ym5ObFVISnZlSGxWVWt3QUwxVnpaWEp6TDJGc1pYaGphSEpwYzNSbGJuTmxiaTkzWldK
cmFYUXZTVzUwWlhKdQpZV3d2VjJWaVMybDBVM2x6ZEdWdFNXNTBaWEptWVdObEwxZGxZa3RwZEZO
NWMzUmxiVWx1ZEdWeVptRmpaUzV0QUhOdlpuUk1hVzVyClgwTkdTRlJVVUUxbGMzTmhaMlZUWlhS
U1pYTndiMjV6WlZCeWIzaDVWVkpNQUdoMGRIQnpBSFpwWkdWdkwzZ3RiVFIyQUcwMGRnQmgKZFdS
cGJ5OTRMVzAwWVFCdE5HRUFSR2x6WVdKc1pVUmxabVZ5Y21Wa1ZYQmtZWFJsY3dCZmEwTkdWVkpN
UTI5dWJtVmpkR2x2YmxCeQpiM0JsY25SNVUyaHZkV3hrVTI1cFptWUFWMHRCWkhaaGJtTmxSR1Zt
WVhWc2RFSjFkSFJ2YmxCMWJITmxRVzVwYldGMGFXOXVBRnRpCmRYUjBiMjRnY21WemNHOXVaSE5V
YjFObGJHVmpkRzl5T2tCelpXeGxZM1J2Y2lob1pXRnlkRUpsWVhRNktWMEFWMHRIWlhSQ2VYUmwK
YzBaeWIyMUJXRlJsZUhSTllYSnJaWElBUTBaSFpYUlVlWEJsU1VRb2NtVm1LU0E5UFNCQldGUmxl
SFJOWVhKclpYSkhaWFJVZVhCbApTVVFvS1FCV2IybGpaVWR5YjNWd1JHVm1ZWFZzZEFCV2IybGpa
VWR5YjNWd1EyOXRjR0ZqZEFCT1UwRmpZMlZ6YzJsaWFXeHBkSGxTClpXMXZkR1ZWU1VWc1pXMWxi
blFBUlZKU1QxSTZJRlJ5ZVdsdVp5QjBieUJrY21GM0lHRWdabTlqZFhNZ2NtbHVaeUIzYVhSb0lI
SmgKWkdsMWN5QWxaQ0JoYm1RZ1lTQmlZWE5sSUcxaGRISnBlQ0J2WmlCYkpXWXNJQ1ZtTENBbFpp
d2dKV1pkQUZkTFUyVjBSSEpoWjBsdApZV2RsQUdKcGRHMWhjRWx0WVdkbEFHVnljbTl5SUQwOUlH
dERSMFZ5Y205eVUzVmpZMlZ6Y3dCRFZFWnZiblJIWlhSV1pYSjBhV05oCmJFZHNlWEJvYzBadmNr
Tm9ZWEpoWTNSbGNuTUFjMjltZEV4cGJtdERWRVp2Ym5SSFpYUldaWEowYVdOaGJFZHNlWEJvYzBa
dmNrTm8KWVhKaFkzUmxjbk1BVjB0SFpYUlhhR1ZsYkVWMlpXNTBSR1ZzZEdGekFHVjJaVzUwSUNZ
bUlHUmxiSFJoV0NBbUppQmtaV3gwWVZrZwpKaVlnWTI5dWRHbHVkVzkxY3dCUlZFMXZkbWxsQUds
bmJtOXlaUUJRY205NGVTMUJkWFJvYjNKcGVtRjBhVzl1QUdoMGRIQnpPaTh2CkpVQTZKVUFBVTJW
MGMwTjFjbk52Y2tsdVFtRmphMmR5YjNWdVpBQkhiMjluYkdVQVFuVnplVUoxZEVOc2FXTnJZV0pz
WlFCTllXdGwKUVd4cFlYTUFUVzkyWlFCU1pYTnBlbVZGWVhOMEFGSmxjMmw2WlVWaGMzUlhaWE4w
QUZKbGMybDZaVTV2Y25Sb0FGSmxjMmw2WlU1dgpjblJvVTI5MWRHZ0FVbVZ6YVhwbFRtOXlkR2hs
WVhOMEFGSmxjMmw2WlU1dmNuUm9aV0Z6ZEZOdmRYUm9kMlZ6ZEFCU1pYTnBlbVZPCmIzSjBhSGRs
YzNRQVVtVnphWHBsVG05eWRHaDNaWE4wVTI5MWRHaGxZWE4wQUZKbGMybDZaVk52ZFhSb0FGSmxj
Mmw2WlZOdmRYUm8KWldGemRBQlNaWE5wZW1WVGIzVjBhSGRsYzNRQVVtVnphWHBsVjJWemRBQkRa
V3hzQUVobGJIQUFXbTl2YlVsdUFGcHZiMjFQZFhRQQpYME5HU0c5emRFbHpSRzl0WVdsdVZHOXdU
R1YyWld3QWMyOW1kRXhwYm10ZlEwWkliM04wU1hORWIyMWhhVzVVYjNCTVpYWmxiQUJmClEwWlZV
a3hEWVdOb1pVUmxiR1YwWlVodmMzUk9ZVzFsYzBsdVVHVnljMmx6ZEdWdWRGTjBiM0psUm05eVVH
RnlkR2wwYVc5dUFITnYKWm5STWFXNXJYME5HVlZKTVEyRmphR1ZFWld4bGRHVkliM04wVG1GdFpY
TkpibEJsY25OcGMzUmxiblJUZEc5eVpVWnZjbEJoY25ScApkR2x2YmdCZlEwWlZVa3hEWVdOb1pV
TnZjSGxCYkd4SWIzTjBUbUZ0WlhOSmJsQmxjbk5wYzNSbGJuUlRkRzl5WlVadmNsQmhjblJwCmRH
bHZiZ0J6YjJaMFRHbHVhMTlEUmxWU1RFTmhZMmhsUTI5d2VVRnNiRWh2YzNST1lXMWxjMGx1VUdW
eWMybHpkR1Z1ZEZOMGIzSmwKUm05eVVHRnlkR2wwYVc5dUFGOURSbFZTVEVOaFkyaGxRMjl3ZVVG
c2JGQmhjblJwZEdsdmJrNWhiV1Z6QUhOdlpuUk1hVzVyWDBORwpWVkpNUTJGamFHVkRiM0I1UVd4
c1VHRnlkR2wwYVc5dVRtRnRaWE1BQUdsdWFYUmZRMFpWVWt4RFlXTm9aVU52Y0hsQmJHeFFZWEow
CmFYUnBiMjVPWVcxbGN3QWhjMjltZEV4cGJtdGZRMFpWVWt4RFlXTm9aVU52Y0hsQmJHeFFZWEow
YVhScGIyNU9ZVzFsY3dBdlUzbHoKZEdWdEwweHBZbkpoY25rdlJuSmhiV1YzYjNKcmN5OURSazVs
ZEhkdmNtc3VabkpoYldWM2IzSnJMME5HVG1WMGQyOXlhd0JEUms1bApkSGR2Y210TWFXSnlZWEo1
QUdaeVlXMWxkMjl5YTB4cFluSmhjbmtBWDJ0RFJsVlNURU5oWTJobFVHRnlkR2wwYVc5dVMyVjVB
RmRMClEyRmphR1ZRWVhKMGFYUnBiMjVMWlhrQWFXNXBkRjlEUmxWU1RFTmhZMmhsUTI5d2VVRnNi
RWh2YzNST1lXMWxjMGx1VUdWeWMybHoKZEdWdWRGTjBiM0psUm05eVVHRnlkR2wwYVc5dUFDRnpi
MlowVEdsdWExOURSbFZTVEVOaFkyaGxRMjl3ZVVGc2JFaHZjM1JPWVcxbApjMGx1VUdWeWMybHpk
R1Z1ZEZOMGIzSmxSbTl5VUdGeWRHbDBhVzl1QUdsdWFYUmZRMFpWVWt4RFlXTm9aVVJsYkdWMFpV
aHZjM1JPCllXMWxjMGx1VUdWeWMybHpkR1Z1ZEZOMGIzSmxSbTl5VUdGeWRHbDBhVzl1QUNGemIy
WjBUR2x1YTE5RFJsVlNURU5oWTJobFJHVnMKWlhSbFNHOXpkRTVoYldWelNXNVFaWEp6YVhOMFpX
NTBVM1J2Y21WR2IzSlFZWEowYVhScGIyNEFhVzVwZEY5RFJraHZjM1JKYzBSdgpiV0ZwYmxSdmNF
eGxkbVZzQUNGemIyWjBUR2x1YTE5RFJraHZjM1JKYzBSdmJXRnBibFJ2Y0V4bGRtVnNBRmRsWWta
cGJIUmxja1YyCllXeDFZWFJ2Y2dCcGJtbDBWMlZpUm1sc2RHVnlSWFpoYkhWaGRHOXlBR05zWVhO
elYyVmlSbWxzZEdWeVJYWmhiSFZoZEc5eUFDOVQKZVhOMFpXMHZUR2xpY21GeWVTOVFjbWwyWVhS
bFJuSmhiV1YzYjNKcmN5OVhaV0pEYjI1MFpXNTBRVzVoYkhsemFYTXVabkpoYldWMwpiM0pyTDFk
bFlrTnZiblJsYm5SQmJtRnNlWE5wY3dCWFpXSkRiMjUwWlc1MFFXNWhiSGx6YVhOTWFXSnlZWEo1
QUZkTFEyOXlaVU4xCmNuTnZjZ0JNYjI5cmRYQXVabkpoYldWM2IzSnJBRXhWVEc5dmEzVndSR1Zt
YVc1cGRHbHZiazF2WkhWc1pRQjJaWEp6YVc5dUFHRnkKWTJocGRtVk1hWE4wQUhCeWIzUnZZMjlz
VUhKdmNHVnlkR2xsY3dCbGVIQmxZM1JsWkVOdmJuUmxiblJNWlc1bmRHZ0FiV2x0WlZSNQpjR1VB
YVc1cGRGOURSa2hVVkZCTlpYTnpZV2RsVTJWMFVtVnpjRzl1YzJWUWNtOTRlVlZTVEFBaGMyOW1k
RXhwYm10ZlEwWklWRlJRClRXVnpjMkZuWlZObGRGSmxjM0J2Ym5ObFVISnZlSGxWVWt3QWFXNXBk
RU5VUm05dWRFZGxkRlpsY25ScFkyRnNSMng1Y0doelJtOXkKUTJoaGNtRmpkR1Z5Y3dBaGMyOW1k
RXhwYm10RFZFWnZiblJIWlhSV1pYSjBhV05oYkVkc2VYQm9jMFp2Y2tOb1lYSmhZM1JsY25NQQpM
MU41YzNSbGJTOU1hV0p5WVhKNUwwWnlZVzFsZDI5eWEzTXZRWEJ3YkdsallYUnBiMjVUWlhKMmFX
TmxjeTVtY21GdFpYZHZjbXN2ClFYQndiR2xqWVhScGIyNVRaWEoyYVdObGN3QkJjSEJzYVdOaGRH
bHZibE5sY25acFkyVnpUR2xpY21GeWVRQlhaV0pNYjJkcGJsZHAKYm1SdmQwUnBaRk4zYVhSamFG
UnZWWE5sY2s1dmRHbG1hV05oZEdsdmJnQlhaV0pNYjJkcGJsZHBibVJ2ZDBScFpGTjNhWFJqYUVa
eQpiMjFWYzJWeVRtOTBhV1pwWTJGMGFXOXVBRU52Ym5OdmJHVkRiMjV1WldOMGFXOXVRMmhoYm1k
bFRtOTBhV1o1VUhKdll3QXdBRmRMClFYQndTMmwwUkhKaGQwUmxZMjk1VjJsdVpHOTNBR2RsZEVG
d2NFdHBkRVJ5WVhkRVpXTnZlVmRwYm1SdmQwTnNZWE56QUdaaGJITmwKQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFITm9ZWEpsWkZWU1RFTmhZ
MmhsQUcxbApiVzl5ZVVOaGNHRmphWFI1QUhOb1lYSmxaRWhVVkZCRGIyOXJhV1ZUZEc5eVlXZGxB
R052YjJ0cFpVRmpZMlZ3ZEZCdmJHbGplUUJqCmIzQjVBRjlEUmxWU1RGSmxjWFZsYzNRQVlXeHNi
Mk1BWDJsdWFYUlhhWFJvUTBaVlVreFNaWEYxWlhOME9nQmpZV05vWldSU1pYTncKYjI1elpVWnZj
bEpsY1hWbGMzUTZBRjlwYm1sMFYybDBhRU5HUTJGamFHVmtWVkpNVW1WemNHOXVjMlU2QUdGMWRH
OXlaV3hsWVhObApBR052YjJ0cFpYTUFYMk5tTW01elEyOXZhMmxsY3pvQVkyOXZhMmxsYzBadmNs
VlNURG9BWDJObWRYSnNBSE5qYUdWdFpRQmpZWE5sClNXNXpaVzV6YVhScGRtVkRiMjF3WVhKbE9n
QnpaWFJEYjI5cmFXVnpPbVp2Y2xWU1REcHRZV2x1Ukc5amRXMWxiblJWVWt3NkFGOXUKY3pKalpr
TnZiMnRwWlhNNkFHUmxiR1YwWlVOdmIydHBaVG9BWDBkbGRFbHVkR1Z5Ym1Gc1EwWklWRlJRUTI5
dmEybGxBR052ZFc1MApRbmxGYm5WdFpYSmhkR2x1WjFkcGRHaFRkR0YwWlRwdlltcGxZM1J6T21O
dmRXNTBPZ0J6YUdGeVpXUk5ZWEJ3YVc1bmN3QndjbVZtClpYSnlaV1JGZUhSbGJuTnBiMjVHYjNK
TlNVMUZWSGx3WlRvQVkyOXRjR0Z5WlRwdmNIUnBiMjV6T2dCaGNuSmhlVmRwZEdoUFltcGwKWTNR
NkFHVjRkR1Z1YzJsdmJuTkdiM0pOU1UxRlZIbHdaVG9BVFVsTlJWUjVjR1ZHYjNKRmVIUmxibk5w
YjI0NkFGOXNZWE4wVFc5awphV1pwWldSRVlYUmxBRjltY21WemFHNWxjM05NYVdabGRHbHRaUUJm
UTBaVlVreFNaWE53YjI1elpRQnlaWE53YjI1a2MxUnZVMlZzClpXTjBiM0k2QUdsdWFYUlhhWFJv
VDJKcVpXTjBjem9BWVdSa1QySnFaV04wT2dCeVpXeGxZWE5sQUdsdWFYUUFjMlYwUkdWbVpYSnoK
UTJGc2JHSmhZMnR6T2dCamIyNTBaWGgwU1VRQVgzQnliM1J2WTI5c1EyeGhjM05HYjNKU1pYRjFa
WE4wT2dCdWRXMWlaWEpYYVhSbwpRbTl2YkRvQVgzTmxkRkJ5YjNCbGNuUjVPbVp2Y2t0bGVUb0Fh
R1ZoY25SQ1pXRjBPZ0J6WlhSRVpXWmhkV3gwUW5WMGRHOXVRMlZzCmJEb0FZMjl1ZEdWdWRGWnBa
WGNBYzJWMFEyOXVkSEp2YkZacFpYYzZBSFJwYldWSmJuUmxjblpoYkZOcGJtTmxVbVZtWlhKbGJt
TmwKUkdGMFpRQmZjMlYwVTJodmRXeGtVRzl6ZEVWMlpXNTBUbTkwYVdacFkyRjBhVzl1Y3pvQVlY
SnlZWGxYYVhSb1QySnFaV04wY3pvQQpjMlYwVW1WdGIzUmxWVWxCY0hBNkFISmxiVzkwWlZSdmEy
VnVSbTl5VEc5allXeFZTVVZzWlcxbGJuUTZBR3hsYm1kMGFBQnBibWwwClYybDBhRkpsYlc5MFpW
UnZhMlZ1T2dCd2NtOWpaWE56U1dSbGJuUnBabWxsY2dCelpYUlhhVzVrYjNkVlNVVnNaVzFsYm5R
NkFITmwKZEZSdmNFeGxkbVZzVlVsRmJHVnRaVzUwT2dCeVpXZHBjM1JsY2xKbGJXOTBaVlZKVUhK
dlkyVnpjMGxrWlc1MGFXWnBaWEk2QUhWdQpjbVZuYVhOMFpYSlNaVzF2ZEdWVlNWQnliMk5sYzNO
SlpHVnVkR2xtYVdWeU9nQmhZMk5sYzNOcFltbHNhWFI1VTJWMFVISmxjMlZ1CmRHVnlVSEp2WTJW
emMwbGtaVzUwYVdacFpYSTZBR04xY25KbGJuUkRiMjUwY205c1ZHbHVkQUJ6YVhwbEFHSmxjM1JT
WlhCeVpYTmwKYm5SaGRHbHZia1p2Y2xKbFkzUTZZMjl1ZEdWNGREcG9hVzUwY3pvQVkyeGhjM01B
YVhOTGFXNWtUMlpEYkdGemN6b0FiRzlqYTBadgpZM1Z6QUdsdWFYUlhhWFJvUm05amRYTmxaRlpw
WlhkU1pXTjBPZ0IxYm14dlkydEdiMk4xY3dCcGMwWnNhWEJ3WldRQWNtVjBZV2x1CkFIQnBlR1Zz
YzFkcFpHVUFjR2w0Wld4elNHbG5hQUJpYVhSelVHVnlVMkZ0Y0d4bEFITmhiWEJzWlhOUVpYSlFh
WGhsYkFCaWFYUnoKVUdWeVVHbDRaV3dBWW5sMFpYTlFaWEpTYjNjQWFYTlFiR0Z1WVhJQWFHRnpR
V3h3YUdFQVoyVjBRbWwwYldGd1JHRjBZVkJzWVc1bApjem9BYzJGMlpVZHlZWEJvYVdOelUzUmhk
R1VBWDJSeVlYZEdiMk4xYzFKcGJtZFhhWFJvUm5KaGJXVTZBSEpsYzNSdmNtVkhjbUZ3CmFHbGpj
MU4wWVhSbEFGOXRaVzUxU1cxd2JBQndiM0JWY0UxbGJuVTZZWFJNYjJOaGRHbHZianAzYVdSMGFE
cG1iM0pXYVdWM09uZHAKZEdoVFpXeGxZM1JsWkVsMFpXMDZkMmwwYUVadmJuUTZBSEpsYm1SbGNt
bHVaMDF2WkdVQVptbHVaRVp2Ym5STWFXdGxPbVp2Y2xOMApjbWx1WnpwM2FYUm9VbUZ1WjJVNmFX
NU1ZVzVuZFdGblpUb0FabWx1WkVadmJuUk1hV3RsT21admNrTm9ZWEpoWTNSbGNqcHBia3hoCmJt
ZDFZV2RsT2dCZlYyVmlTMmwwVTNsemRHVnRTVzUwWlhKbVlXTmxYM05sZEVkeVlYQm9hV056VUc5
eWREb0FaM0poY0docFkzTkQKYjI1MFpYaDBBR2R5WVhCb2FXTnpVRzl5ZEFCelpYUkNiM1IwYjIx
RGIzSnVaWEpTYjNWdVpHVmtPZ0JrWld4MFlWZ0FaR1ZzZEdGWgpBR1JoZEdGU1lYUmxBR3h2WVdS
bFpGSmhibWRsY3dCdFlYaFVhVzFsVEc5aFpHVmtBR0YyWVdsc1lXSnNaVkpoYm1kbGN3QnpaWFJF
CmNtRjNVM2x1WTJoeWIyNXZkWE5zZVRvQWMyVjBSSEpoZDFkcGRHaERSMGx0WVdkbE9nQnRiM1pw
WlZSNWNHVUFaR2x6WVdKc1pVTnYKYlhCdmJtVnVkRG9BVlZKTUFHeGhlV1Z5QUhObGRFTnZiblJs
ZUhSSlpEb0FiRzlqWVd4RGIyNTBaWGgwQUhObGRFeGhlV1Z5T2dCeQpaVzVrWlhKRGIyNTBaWGgw
QUc1MWJXSmxjbGRwZEdoVmJuTnBaMjVsWkVsdWREb0FaR2xqZEdsdmJtRnllVmRwZEdoUFltcGxZ
M1J6Ck9tWnZja3RsZVhNNlkyOTFiblE2QUhKbGJXOTBaVU52Ym5SbGVIUlhhWFJvVDNCMGFXOXVj
em9BWTI5dWRHVjRkRmRwZEdoRFIxTkQKYjI1dVpXTjBhVzl1T205d2RHbHZibk02QUdsdWRtRnNh
V1JoZEdVQVkyOXVkR1Y0ZEVsa0FITmxkRU52Ykc5eVUzQmhZMlU2QUdOdgpiRzl5VTNCaFkyVUFj
bVZuYVc5dVFtVnBibWRFY21GM2JnQmpiMjUwWlhoMEFIZHBibVJ2ZDA1MWJXSmxjZ0JtY21GdFpR
QmZaWFpsCmJuUlNaV1lBWm5WdVkzUnBiMjVYYVhSb1RtRnRaVG9BYzJWMFZtRnNkV1ZHZFc1amRH
bHZiam9BWDNOMWNtWmhZMlVBYzNsdVkxUnYKVm1sbGQxVnVZMjl1WkdsMGFXOXVZV3hzZVFCZmNt
VnpjRzl1YzJWWGFYUm9RMFpWVWt4U1pYTndiMjV6WlRvQWRHOXJaVzVTWVc1bgpaVVp2Y2xOMGNt
bHVaenB5WVc1blpUcHZjSFJwYjI1ek9nQnphRzkzUkdWbWFXNXBkR2x2YmtadmNsUmxjbTA2WVhS
TWIyTmhkR2x2CmJqcHZjSFJwYjI1ek9nQm9hV1JsUkdWbWFXNXBkR2x2YmdCeVpYTnZiSFpsWkZW
U1RBQm1hV3gwWlhKVGRHRjBaUUIzWVhOQ2JHOWoKYTJWa0FHRmtaRVJoZEdFNkFHUmhkR0ZEYjIx
d2JHVjBaUUJwYzAxaGJtRm5aV1JUWlhOemFXOXVBR2x1YVhSWGFYUm9VbVZ6Y0c5dQpjMlU2QUY5
amIzSmxRM1Z5YzI5eVZIbHdaUUJpZFc1a2JHVlhhWFJvVUdGMGFEb0FZMnhoYzNOT1lXMWxaRG9B
YzJOeVpXVnVjd0J2ClltcGxZM1JCZEVsdVpHVjRPZ0JqYjNWdWRBQmZRMFpWVWt4RFlXTm9aUUJS
VkZScGJXVlNZVzVuWlZaaGJIVmxBR2hoYzFCeVpXTnAKYzJWVFkzSnZiR3hwYm1kRVpXeDBZWE1B
YzJOeWIyeHNhVzVuUkdWc2RHRllBSE5qY205c2JHbHVaMFJsYkhSaFdRQmtaV1poZFd4MApRMlZ1
ZEdWeUFIQnZjM1JPYjNScFptbGpZWFJwYjI1T1lXMWxPbTlpYW1WamREb0FhVzVwZEZkcGRHaERi
MjUwWlc1MFVtVmpkRHB6CmRIbHNaVTFoYzJzNlltRmphMmx1Wnpwa1pXWmxjam9BYVhOTFpYbFhh
VzVrYjNjQWFXNXBkRmRwZEdoR2NtRnRaVG9BYzJWMFEyOXUKZEdWdWRGWnBaWGM2QUdselFXTjBh
WFpsQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEK
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURJQndBQUFBQUFBQUFBQUFBQUFB
QUEKQlFBQUFBQUFBQUFBQUFBQUFBQUFBTWdIQUFBQUFBQUFBQUFBQUFBQUFBQUxBQUFBQUFBQUFB
QUFBQUFBQUFBQXlBY0FBQUFBQUFBQQpBQUFBQUFBQUFBTUFBQUFBQUFBQUFBQUFBQUFBQUFESUJ3
QUFBQUFBQUFBQUFBQUFBQUFBQ3dBQUFBQUFBQUFBQUFBQUFBQUFBTWdICkFBQUFBQUFBQUFBQUFB
QUFBQUFEQUFBQUFBQUFBQUFBQUFBQUFBQUF5QWNBQUFBQUFBQUFBQUFBQUFBQUFCWUFBQUFBQUFB
QUFBQUEKQUFBQUFBRElCd0FBQUFBQUFBQUFBQUFBQUFBQUpBQUFBQUFBQUFBQUFBQUFBQUFBQU1n
SEFBQUFBQUFBQUFBQUFBQUFBQUFSQUFBQQpBQUFBQUFBQUFBQUFBQUFBeUFjQUFBQUFBQUFBQUFB
QUFBQUFBQkVBQUFBQUFBQUFBQUFBQUFBQUFBRElCd0FBQUFBQUFBQUFBQUFBCkFBQUFIZ0FBQUFB
QUFBQUFBQUFBQUFBQUFNZ0hBQUFBQUFBQUFBQUFBQUFBQUFCWEFBQUFBQUFBQUFBQUFBQUFBQUFB
eUFjQUFBQUEKQUFBQUFBQUFBQUFBQUFjQUFBQUFBQUFBQUFBQUFBQUFBQURJQndBQUFBQUFBQUFB
QUFBQUFBQUFCZ0FBQUFBQUFBQUFBQUFBQUFBQQpBTWdIQUFBQUFBQUFBQUFBQUFBQUFBQVRBQUFB
QUFBQUFBQUFBQUFBQUFBQXlBY0FBQUFBQUFBQUFBQUFBQUFBQUEwQUFBQUFBQUFBCkFBQUFBQUFB
QUFESUJ3QUFBQUFBQUFBQUFBQUFBQUFBRmdBQUFBQUFBQUFBQUFBQUFBQUFBTWdIQUFBQUFBQUFB
QUFBQUFBQUFBQUcKQUFBQUFBQUFBQUFBQUFBQUFBQUF5QWNBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFESUJ3QUFBQUFBQUFBQQpBQUFBQUFBQUV3QUFBQUFBQUFBQUFBQUFB
QUFBQU1nSEFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUF5QWNBCkFBQUFB
QUFBQUFBQUFBQUFBQmdBQUFBQUFBQUFBQUFBQUFBQUFBRElCd0FBQUFBQUFBQUFBQUFBQUFBQUJ3
QUFBQUFBQUFBQUFBQUEKQUFBQUFNZ0hBQUFBQUFBQUFBQUFBQUFBQUFBTEFBQUFBQUFBQUFBQUFB
QUFBQUFBeUFjQUFBQUFBQUFBQUFBQUFBQUFBQklBQUFBQQpBQUFBQUFBQUFBQUFBQURJQndBQUFB
QUFBQUFBQUFBQUFBQUFGUUFBQUFBQUFBQUFBQUFBQUFBQUFNZ0hBQUFBQUFBQUFBQUFBQUFBCkFB
QUlBQUFBQUFBQUFBQUFBQUFBQUFBQXlBY0FBQUFBQUFBQUFBQUFBQUFBQUNrQUFBQUFBQUFBQUFB
QUFBQUFBQURJQndBQUFBQUEKQUFBQUFBQUFBQUFBS3dBQUFBQUFBQUJYWldKTGFYUlRlWE4wWlcx
SmJuUmxjbVpoWTJVQWRqSTBRREE2T0Y1N1EwZERiMjUwWlhoMApQWDB4TmdBQUFBQVlBQUFBQVFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
CkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQ0FBQUFic1VBQUFJQUFBQUFBQWdCQUFBQUFCQUFQd0FB
QUFBQUFBQUFBQUFBQUFBQUFKUUFBQUFCQWdMbkFBQUFCQVFES0FBQQpBQVRSQUFBQUx3QUFBQUVC
NGdrRElHSUFBQUFBQUFBRjdRQUFBQzhBQUFBQjRRYjFBQUFBTHdBQUFBRmRCd2NJQVFsaEFBQUFB
QXBpCkFBQUFDeW9CQUFBWUFSZ0hEQlFCQUFCcUFBQUFBUmtIQWlNQUFRd2RBUUFBWVFBQUFBRWFC
d0lqQ0FFTUpRRUFBS2tBQUFBQkd3Y0MKSXhBQkFBcHZBQUFBRFFNQkFBQ3BBQUFBQVFFZUJ3a0RB
QUFBQUFBQUFBQU9ZQUVBQUFFS3hRQUFBQS9MQUFBQWF3RUFBQUVVQVJCeApBUUFBQ0FJeUVCRmNB
UUFBMEFBQUFBSXpBaU1BQWdBQ2hRRUFBQVFJRXZVQUFBQ01BUUFBQS9rVGxnRUFBQkFERHhHREFR
QUEvQUFBCkFBTVFBaU1BQVJHVUFRQUEvQUFBQUFNUkFpTUlBUUFTQndFQUFKWUJBQUFERXhJdUFR
QUFuZ0VBQUFFU0Fyc0JBQUFIQkJQaUFRQUEKQkFRU0ZLMEJBQUJFQVFBQUJCTUVBUjhDSXdBQkZN
Z0JBQUJFQVFBQUJCUUVBUjRDSXdBQkZOY0JBQUJFQVFBQUJCVUVDQllDSXdBQgpBQXJGQUFBQUZm
WUJBQUFBRmx3QkFBQ0tBUUFBQWlNQUFRQUtqd0VBQUErakFRQUFBZ0lBQUFHcUFoQUZBZ0FBS0FR
UEVCZmNBQUFBCkFpTUFBUkY2QVFBQU9RRUFBQVFSQWlNQUFoR21BUUFBU3dFQUFBUVhBaU1BQWhI
dkFRQUFxQUVBQUFRWUFpTUFBZ0FLdEFFQUFCaEYKQVFBQTlBRUFBQUVRQ2drRGlCOERBQUFBQUFB
WURnSUFBUFFCQUFBQkVRb0pBNUFmQXdBQUFBQUFHQjRDQUFEMEFRQUFBUklLQ1FPWQpId01BQUFB
QUFCZ3BBZ0FBOUFFQUFBRVRDZ2tEb0I4REFBQUFBQUFZT2dJQUFQUUJBQUFCRkFvSkE2Z2ZBd0FB
QUFBQUdFOENBQUQwCkFRQUFBUlVLQ1FPd0h3TUFBQUFBQUJoaEFnQUE5QUVBQUFFV0Nna0R1QjhE
QUFBQUFBQVllQUlBQVBRQkFBQUJGd29KQThBZkF3QUEKQUFBQUdJNENBQUQwQVFBQUFSZ0tDUVBJ
SHdNQUFBQUFBQml0QWdBQTlBRUFBQUVaQ2drRDBCOERBQUFBQUFBWXd3SUFBUFFCQUFBQgpHZ29K
QTlnZkF3QUFBQUFBR09JQ0FBRDBBUUFBQVJzS0NRUGdId01BQUFBQUFCajBBZ0FBOUFFQUFBRWND
Z2tENkI4REFBQUFBQUFZCkNnTUFBUFFCQUFBQkhRb0pBL0FmQXdBQUFBQUFHQ0FEQUFEMEFRQUFB
UjRLQ1FQNEh3TUFBQUFBQUJneEF3QUE5QUVBQUFFZ0Nna0QKQUNBREFBQUFBQUFZUEFNQUFQUUJB
QUFCSVFvSkF3Z2dBd0FBQUFBQUdFY0RBQUQwQVFBQUFTSUtDUU1RSUFNQUFBQUFBQmhVQXdBQQo5
QUVBQUFFakNna0RHQ0FEQUFBQUFBQUNhUU1BQUFJQkdXOERBQUFCVkF1YkF3QUFBUmhpQXdBQW13
TUFBQUZVQ3drRFNDQURBQUFBCkFBQUFHcWdEQUFBQjVtRUFBQUFCRzVjREFBQmhBQUFBQWVZSkEx
QWdBd0FBQUFBQUFBN1ZBd0FBQVFQb0F3QUFDdTREQUFBUDh3TUEKQU9BREFBQUJVQUVjK0FNQUFC
MEFDZ1FFQUFBWXVRTUFBQXNFQUFBQlZRc0pBN2lCQUFBQUFBQUFDdmdEQUFBWTdBTUFBQ1lFQUFB
QgpWUXNKQTFnZ0F3QUFBQUFBR1EwRUFBQUJVd3ViQXdBQUFSaGlBd0FBbXdNQUFBRlRDd2tEWUNB
REFBQUFBQUFBR1UwRUFBQUJVZ3ViCkF3QUFBUmhpQXdBQW13TUFBQUZTQ3drRFlTQURBQUFBQUFB
QUdZd0VBQUFCVVF1YkF3QUFBUmhpQXdBQW13TUFBQUZSQ3drRFlpQUQKQUFBQUFBQUFEdFFFQUFB
QkE2MEVBQUFLc3dRQUFCSzRCQUFBNEFRQUFBRVdBdndFQUFBRkJBSXJCUUFBQndnZUFVSUZBQUFR
QWJFQwpGaUlGQUFEUEJBQUFBaU1BQVJZOUJRQUF6d1FBQUFJakNBRUFDdFlFQUFBZUFWVUZBQUFn
QWJFQ0Z1NEVBQUJoQUFBQUFpTUFBUmIwCkJBQUF5QVFBQUFJakNBRVdBQVVBQU1nRUFBQUNJd3dC
RmdzRkFBQmhBQUFBQWlNUUFRd1ZCUUFBK3dRQUFBR3hBZ0lqR0FFQUNnQUYKQUFBU1R3VUFBRzBG
QUFBQnJRZ0JDYjBFQUFBSlZBVUFBQUFLWHdVQUFCaXJCQUFBYkFVQUFBRlVDd2tEUUNBREFBQUFB
QUFPNFFVQQpBQUVEaHdVQUFBcU5CUUFBRXBJRkFBRHJCUUFBQVd3Zmx3VUFBQUVKdlFRQUFBbjRB
d0FBQUFxaUJRQUFHS0FGQUFDekJRQUFBVk1MCkNRTTRJQU1BQUFBQUFBZ0JDYjBFQUFBSmx3VUFB
QW40QXdBQUFBck9CUUFBR1BZRkFBRGdCUUFBQVZJTENRTXdJQU1BQUFBQUFBSlcKQmdBQUNBRVAr
d1VBQUdRR0FBQUJMQUVmQWdZQUFBRUorQU1BQUFBS0RnWUFBQmcyQmdBQUdnWUFBQUZSQ3drREtD
QURBQUFBQUFBYwowQUFBQUIwQUNqVUdBQUFZYkFZQUFEd0dBQUFCM0FvSkE3Q0JBQUFBQUFBQUdJ
Y0dBQURRQUFBQUFkd0tDUU5vSUFNQUFBQUFBQm1mCkJnQUFBZHNLWVFBQUFBRVlsd01BQUdFQUFB
QUIyd29KQTNBZ0F3QUFBQUFBQUNERkJnQUFBZFlKQWRBQUFBQUJHTGtHQUFEUUFBQUEKQWRnSkNR
TjRJQU1BQUFBQUFBQVNSQUVBQU9rR0FBQUJIeEsyQmdBQThnWUFBQUVZSUFJSEFBQUJFZ2dCd1FZ
QUFBRVk0d1lBQU1FRwpBQUFCRkFnSkE0QWdBd0FBQUFBQUFCb2ZCd0FBQWVtYkF3QUFBUnRpQXdB
QW13TUFBQUhwQ1FPRUlBTUFBQUFBQUFBWlNBY0FBQUVaCkJac0RBQUFCR0dJREFBQ2JBd0FBQVJr
RkNRT0ZJQU1BQUFBQUFBQVpkQWNBQUFFWUJXRUFBQUFCR0pjREFBQmhBQUFBQVJnRkNRT0kKSUFN
QUFBQUFBQUFPdkFjQUFBRURXd2NBQUFwaEJ3QUFFbVlIQUFERkJ3QUFBU29DendjQUFBY0NFbllI
QUFEZUJ3QUFBV3dQZlFjQQpBT1VIQUFBQndnRURpQWNBQUFxVUJ3QUFFbllIQUFEdEJ3QUFBUTRT
bmdjQUFQa0hBQUFCRWdxcEJ3QUFBZ0VJQUFBRkNBKzVCd0FBCkNnZ0FBQUZLQVIrYkF3QUFBUWxy
QndBQUNaa0hBQUFKdEFjQUFBbkFCd0FBQUFyTUJ3QUFHSThIQUFEbkJ3QUFBUmtGQ1FONEh3TUEK
QUFBQUFCQW9DQUFBRUFVTkVCZmNBQUFBQWlNQUFSRVpDQUFBcUFFQUFBVVFBaU1BQWdBVFZBZ0FB
QkFERnhGSENBQUEvQUFBQUFNWQpBaU1BQVJGTkNBQUEvQUFBQUFNWkFpTUlBUUFTSkFnQUFGUUlB
QUFCR3hOYkNBQUFJQU1mRVRzSUFBQXVBUUFBQXlBQ0l3QUJFVUlJCkFBQkxDQUFBQXlFQ0l4QUJB
QkpXQ0FBQVd3Z0FBQUVqRW4wSUFBQmlDQUFBQVJ3S0FnZ0FBQk52Q1FBQWdBa1JFUzhKQUFEOEFB
QUEKQ1JNQ0l3QUJFVE1KQUFEOEFBQUFDUk1DSXdnQkVUY0pBQUQ4QUFBQUNSTUNJeEFCRVRzSkFB
RDhBQUFBQ1JNQ0l4Z0JFVDhKQUFEOApBQUFBQ1JRQ0l5QUJFVU1KQUFEOEFBQUFDUlFDSXlnQkVV
Y0pBQUQ4QUFBQUNSUUNJekFCRVVzSkFBRDhBQUFBQ1JRQ0l6Z0JFVThKCkFBRDhBQUFBQ1JVQ0kw
QUJFVk1KQUFEOEFBQUFDUlVDSTBnQkVWY0pBQUQ4QUFBQUNSVUNJMUFCRVZzSkFBRDhBQUFBQ1JV
Q0kxZ0IKRVY4SkFBRDhBQUFBQ1JZQ0kyQUJFV01KQUFEOEFBQUFDUllDSTJnQkVXY0pBQUQ4QUFB
QUNSWUNJM0FCRVdzSkFBRDhBQUFBQ1JZQwpJM2dCQUJLWUNBQUFid2tBQUFnWkFvb0pBQUFHQVJL
Y0NRQUFsZ2tBQUFFOUVOc0pBQUFJQ2c0UUY5d0FBQUFDSXdBQkFBcXVDUUFBCkVDNEtBQUFJQzBv
UUY5d0FBQUFDSXdBQkFBckdDUUFBRHUwS0FBQUJDdDRKQUFBUzVBa0FBUFVLQUFBSUNBNjdDd0FB
QVFQMENRQUEKQ3ZvSkFBQVMvd2tBQU1JTEFBQUlDUkR6Q3dBQUNBd01FQmZjQUFBQUFpTUFBUUFL
RHdvQUFCTElCQUFBSXd3QUFBZ2VFemNNQUFBUQpDQ2tSR2d3QUFDY0tBQUFJS2dJakFBRVJLd3dB
QUxZR0FBQUlLd0lqQkFFUk1Rd0FBR0VBQUFBSUxBSWpDQUVBRUVVTUFBQVlDQ1lRCkY5d0FBQUFD
SXdBQklmSUlBQUI5Q0FBQUNJc01JZmtJQUFBdUFRQUFDSkFNSVFJSkFBRDhBQUFBQ0pVTUlRd0pB
QUF1QVFBQUNKd00KSVJnSkFBRDhBQUFBQ0tFTUlTVUpBQUNSQ1FBQUNLWU1JWDBKQUFCOUNBQUFD
TE1NSVlNSkFBQ2pDUUFBQ0xnT0lac0pBQUNqQ1FBQQpDTDBPSWFjSkFBQ2pDUUFBQ01VT0lyY0pB
QUR5REFBQUNOYkNDUUFBQVNIUkNRQUF3UWtBQUFqaktDUGpDUUFBa1FrQUFBZ0NBUXdqCjlRa0FB
UElNQUFBSURBRVlJL29KQUFDakNRQUFDQlFCRENNSUNnQUFxQUVBQUFnMUFSZ2pFUW9BQUgwSUFB
QUlQZ0VNSXg0S0FBRFoKQ1FBQUNFY0JLQ00zQ2dBQS9BQUFBQWhSQVF3alJRb0FBSDBJQUFBSVpn
RU1JMVFLQUFEWkNRQUFDRzRCS0NObkNnQUEyUWtBQUFodQpBU2dqZXdvQUFDZ0FBQUFJZEFFTUk1
SUtBQUNqQ1FBQUNIb0JEaU9aQ2dBQW93a0FBQWlVQVF3anRBb0FBS01KQUFBSW5RRU1JOGdLCkFB
QkVBUUFBQ0xnQkRDUGRDZ0FBNlFrQUFBaTlBUXdqQUFzQUFQd0FBQUFJd3dFTUl3MExBQUQ4QUFB
QUNNb0JEQ01aQ3dBQTZRa0EKQUFqUEFRd2pKUXNBQUNnQUFBQUkxUUVNSXkwTEFBQ29BUUFBQ09J
QkdDTS9Dd0FBd1FrQUFBam5BU2dqUndzQUFNRUpBQUFJN0FFbwpJMWtMQUFDakNRQUFDUDRCRENO
cEN3QUEvQUFBQUFnRUFnd2pmQXNBQU9rSkFBQUlDd0lNSTRnTEFBQW9BQUFBQ0JBQ0RDT1dDd0FB
ClN3Z0FBQWdVQWd3am93c0FBUHdBQUFBSUdBSU1JN0FMQUFBRUNnQUFDQ0VDRENQTUN3QUFSQUVB
QUFncEFnd2ozUXNBQUtnQkFBQUkKTUFJWUkrc0xBQUFpQ2dBQUNKa0NLQ01BREFBQTJRa0FBQWpH
QWlnakJRd0FBS2dCQUFBSXpBSU1JdzRNQUFBaUNnQUFDTmdDS0JFVQpEQUFBTWdvQUFBZ3dBaU1B
QXdBS2FBb0FBQ1JuREFBQUFSQUs5d3dBQUJQOERRQUFCQWRGRklBTUFBQkVBUUFBQjE0RUFSOENJ
d0FCCkZJNE1BQUJFQVFBQUIxOEVBUjRDSXdBQkZKY01BQUJFQVFBQUIyQUVCUmtDSXdBQkZKOE1B
QUJFQVFBQUIyRUVBUmdDSXdBQkZMa00KQUFCRUFRQUFCMklFQVJjQ0l3QUJGTWNNQUFCRUFRQUFC
Mk1FQVJZQ0l3QUJGTmdNQUFCRUFRQUFCMlFFQVJVQ0l3QUJGTzRNQUFCRQpBUUFBQjJVRUFSUUNJ
d0FCRlBnTUFBQkVBUUFBQjJZRUFSTUNJd0FCRkJRTkFBQkVBUUFBQjJjRUFSSUNJd0FCRkNvTkFB
QkVBUUFBCkIyZ0VBUkVDSXdBQkZFVU5BQUJFQVFBQUIya0VBUkFDSXdBQkZFME5BQUJFQVFBQUIy
b0VBUThDSXdBQkZHSU5BQUJFQVFBQUIyc0UKQVE0Q0l3QUJGSHdOQUFCRUFRQUFCMndFQVEwQ0l3
QUJGSlVOQUFCRUFRQUFCMjBFQWdzQ0l3QUJGSjBOQUFCRUFRQUFCMjRFQVFvQwpJd0FCRktvTkFB
QkVBUUFBQjI4RUFRa0NJd0FCRkxZTkFBQkVBUUFBQjNBRUFRZ0NJd0FCRk1rTkFBQkVBUUFBQjNF
RUJnSUNJd0FCCkZOUU5BQUJFQVFBQUIzSUVBUUVDSXdBQkZPd05BQUJFQVFBQUIzTUVBUUFDSXdB
QkFCSUREUUFBQlE0QUFBRjFFM1lPQUFBRUI0b1UKRmc0QUFFUUJBQUFIaXdRT0VnSWpBQUVVS2c0
QUFFUUJBQUFIakFRT0JBSWpBQUVVUWc0QUFFUUJBQUFIalFRQkF3SWpBQUVVVUE0QQpBRVFCQUFB
SGpnUUJBZ0lqQUFFVVd3NEFBRVFCQUFBSGp3UUJBUUlqQUFFVWF3NEFBRVFCQUFBSGtBUUJBQUlq
QUFFQUVJQU9BQUNZCkIzd1FGd0lJQUFBQ0l3QUJJNTBJQUFDSUNBQUFCOUlCREJFMENBQUFpQWdB
QUFkL0FpTUFBaEd4Q0FBQWlBZ0FBQWVBQWlNQUFoRzUKQ0FBQXFBRUFBQWVCQWlNQUFoSEVDQUFB
cUFFQUFBZUNBaU1BQWhIT0NBQUExaklBQUFlREFpTUFBaEhXQ0FBQXFBRUFBQWVFQWlNQQpBaEhl
Q0FBQXFBRUFBQWVGQWlNQUFoSHJDQUFBOGd3QUFBZUdBaU1BQWhGTkRBQUFxQUVBQUFlSEFpTUFB
aEZZREFBQS9nd0FBQWVJCkFpTUFBaEY0REFBQW1BNEFBQWVKQWlNQUFoRU5EZ0FBb3c0QUFBZVJB
aU1BQWdBS0dBOEFBQks1QndBQXlBNEFBQTBNRU9vT0FBQUkKRGl3UUY5d0FBQUFDSXdBQkFBcjhE
d0FBRWtzSUFBQnBEd0FBQVJjVHZ4QUFBQVFQTFJSd0R3QUFSQUVBQUE4dUJBRWZBaU1BQVJSNQpE
d0FBUkFFQUFBOHZCQUVlQWlNQUFSU0dEd0FBUkFFQUFBOHdCQUVkQWlNQUFSU1REd0FBUkFFQUFB
OHhCQUVjQWlNQUFSU29Ed0FBClJBRUFBQTh5QkFFYkFpTUFBUlN3RHdBQVJBRUFBQTh6QkFFYUFp
TUFBUlMrRHdBQVJBRUFBQTgwQkFFWkFpTUFBUlRaRHdBQVJBRUEKQUE4MUJBRVlBaU1BQVJUMkR3
QUFSQUVBQUE4MkJBRVhBaU1BQVJRS0VBQUFSQUVBQUE4M0JBRVdBaU1BQVJRbEVBQUFSQUVBQUE4
NApCQUVWQWlNQUFSUTZFQUFBUkFFQUFBODVCQUVVQWlNQUFSUklFQUFBUkFFQUFBODZCQUVUQWlN
QUFSUmNFQUFBUkFFQUFBODdCQUVTCkFpTUFBUlJrRUFBQVJBRUFBQTg4QkFFUkFpTUFBUlJzRUFB
QVJBRUFBQTg5QkFFUUFpTUFBUlIwRUFBQVJBRUFBQTgrQkFJT0FpTUEKQVJSK0VBQUFSQUVBQUE4
L0JBTUxBaU1BQVJTSkVBQUFSQUVBQUE5QUJBRUtBaU1BQVJTYkVBQUFSQUVBQUE5QkJBRUpBaU1B
QVJTbQpFQUFBUkFFQUFBOUNCQUVJQWlNQUFSUzFFQUFBUkFFQUFBOURCQWdBQWlNQUFRQWxxQUVB
QUNUaUVBQUFBUkFLdVJFQUFCRDBFQUFBCk9BOG9FQmZjQUFBQUFpTUFBUkZkRHdBQTJRa0FBQThy
QWlNQUFoRmpEd0FBRkJBQUFBOHNBaU1BQWhHbUFRQUFIeEFBQUE5RUFpTUEKQWhITUVBQUF0QkVB
QUE5RkFpTUFBaEhTRUFBQXdCRUFBQTlHQWlNQUFnQUt4UkVBQUJBRUVRQUFDQkFNRUJmY0FBQUFB
aU1BQVFBUQpDaEVBQUFnUVJSQVhLQklBQUFJakFBRUFDanNTQUFBUVRoRUFBQ2dSRVJBWDNBQUFB
QUlqQUFFUkp4RUFBTmtKQUFBUkZBSWpBQUlSCk1oRUFBS0lTQUFBUkZRSWpBQUlST3hFQUFHRUFB
QUFSRmdJakFBSVJSQkVBQUdFQUFBQVJGd0lqQUFJQUNsTVNBQUFLRkJBQUFCT3EKRlFBQUNBYmtG
SWdSQUFCRUFRQUFCdVVFQWg0Q0l3QUJGSkFSQUFCRUFRQUFCdVlFQVIwQ0l3QUJGSmdSQUFCRUFR
QUFCdWNFQVJ3QwpJd0FCRktVUkFBQkVBUUFBQnVnRUFSc0NJd0FCRkxFUkFBQkVBUUFBQnVrRUFS
b0NJd0FCRk1NUkFBQkVBUUFBQnVvRUFSa0NJd0FCCkZOWVJBQUJFQVFBQUJ1c0VBUmdDSXdBQkZO
NFJBQUJFQVFBQUJ1d0VBUmNDSXdBQkZPY1JBQUJFQVFBQUJ1MEVBUllDSXdBQkZQc1IKQUFCRUFR
QUFCdTRFQVJVQ0l3QUJGQThTQUFCRUFRQUFCdThFQVJRQ0l3QUJGQ0FTQUFCRUFRQUFCdkFFQVJN
Q0l3QUJGQ29TQUFCRQpBUUFBQnZFRUFSSUNJd0FCRkR3U0FBQkVBUUFBQnZJRUFSRUNJd0FCRkVz
U0FBQkVBUUFBQnZNRUFSQUNJd0FCRkZ3U0FBQkVBUUFBCkJ2UUVBUThDSXdBQkZHY1NBQUJFQVFB
QUJ2VUVBUTRDSXdBQkZIZ1NBQUJFQVFBQUJ2WUVBUTBDSXdBQkZJb1NBQUJFQVFBQUJ2Y0UKQVF3
Q0l3QUJGSjBTQUFCRUFRQUFCdmdFQVFzQ0l3QUJGS2tTQUFCRUFRQUFCdmtFQVFvQ0l3QUJGTFFT
QUFCRUFRQUFCdm9FQVFrQwpJd0FCRk1JU0FBQkVBUUFBQnZzRUFRZ0NJd0FCRk5nU0FBQkVBUUFB
QnZ3RUFRY0NJd0FCRk9zU0FBQkVBUUFBQnYwRUFRWUNJd0FCCkZQc1NBQUJFQVFBQUJ2NEVBUVVD
SXdBQkZCWVRBQUJFQVFBQUJ2OEVBUVFDSXdBQkppNFRBQUJFQVFBQUJnQUJCQVFBQWlNQUFTWTUK
RXdBQVJBRUFBQVlCQVFRQkh3SWpCQUVtVnhNQUFFUUJBQUFHQWdFRUFSNENJd1FCSm1jVEFBQkVB
UUFBQmdNQkJBRWRBaU1FQVNaMwpFd0FBUkFFQUFBWUVBUVFCSEFJakJBRW1rQk1BQUVRQkFBQUdC
UUVFQVJzQ0l3UUJKcVFUQUFCRUFRQUFCZ1lCQkFFYUFpTUVBU2JCCkV3QUFSQUVBQUFZSEFRUUJH
UUlqQkFFbTBoTUFBRVFCQUFBR0NBRUVBUmdDSXdRQkp1Y1RBQUJFQVFBQUJna0JCQUVYQWlNRUFT
YjMKRXdBQVJBRUFBQVlLQVFRQkZnSWpCQUVtQmhRQUFFUUJBQUFHQ3dFRUFSVUNJd1FCSmgwVUFB
QkVBUUFBQmd3QkJBRVVBaU1FQVNZNgpGQUFBUkFFQUFBWU5BUVFCRXdJakJBRW1WeFFBQUVRQkFB
QUdEZ0VFQVJJQ0l3UUJKbU1VQUFCRUFRQUFCZzhCQkFFUkFpTUVBU1owCkZBQUFSQUVBQUFZUUFR
UUJFQUlqQkFFbWdSUUFBRVFCQUFBR0VRRUVBUThDSXdRQkpwd1VBQUJFQVFBQUJoSUJCQUlOQWlN
RUFTYWsKRkFBQVJBRUFBQVlUQVFRQ0N3SWpCQUVtdmhRQUFFUUJBQUFHRkFFRUFRb0NJd1FCSnVV
VUFBQkVBUUFBQmhVQkJBRUpBaU1FQVNZQgpGUUFBUkFFQUFBWVdBUVFCQ0FJakJBRW1FQlVBQUVR
QkFBQUdGd0VFQVFjQ0l3UUJKaDhWQUFCRUFRQUFCaGdCQkFFR0FpTUVBU1l4CkZRQUFSQUVBQUFZ
WkFRUUJCUUlqQkFFbVB4VUFBRVFCQUFBR0dnRUVBUVFDSXdRQkpsNFZBQUJFQVFBQUJoc0JCQUVE
QWlNRUFTWi8KRlFBQVJBRUFBQVljQVFRQkFnSWpCQUVtaVJVQUFFUUJBQUFHSFFFRUFRRUNJd1FC
SnFNVkFBQkVBUUFBQmg0QkJBRUFBaU1FQVFBbgpCQk1hRkZrV0FBQkVBUUFBRXhzRUFSOENJd0FC
RkNJRkFBQkVBUUFBRXh3RUh3QUNJd0FCQUNqOEJBQUFCQVVwcUFFQUFDb1JGd0FBCkF3QVFpUllB
QUhnVEVoQVgzQUFBQUFJakFBRVJGUllBQUtnQkFBQVRGQUlqQUFNUkhCWUFBR0VBQUFBVEZRSWpB
QU1SYVFnQUFPd1AKQUFBVEZnSWpBQU1STEJZQUFPd1BBQUFURndJakFBTVJOeFlBQU93UEFBQVRH
QUlqQUFNUlJSWUFBTmtKQUFBVEdRSWpBQU1SVVJZQQpBT2dXQUFBVEhRSWpBQU1SWnhZQUFCUVFB
QUFUSGdJakFBTVJkUllBQUtnQkFBQVRId0lqQUFNUklnVUFBQmdYQUFBVElBSWpBQU1BCkNpUVhB
QUFrbmhZQUFBRVFDdElYQUFBa0FCY0FBQUVRQ3Q0WEFBQUNXeGNBQUFjSUV1b1hBQUJ5RndBQUFS
OFF1QmNBQUVnVUZ4QVgKM0FBQUFBSWpBQUVSSUJjQUFLZ0JBQUFVR1FJakFBTVJLeGNBQUtnQkFB
QVVHZ0lqQUFNUk5oY0FBTUVKQUFBVUd3SWpBQU1SUkJjQQpBUEVYQUFBVUhBSWpBQU1SZXhjQUFL
Z0JBQUFVSFFJakFBTVJneGNBQUtnQkFBQVVIZ0lqQUFNUmloY0FBR0VBQUFBVUh3SWpBQU1SCm9S
Y0FBR0VBQUFBVUlBSWpBQU1BQ3Z3WEFBQVFMUmdBQUFnTVZ4QVhEd29BQUFJakFBRUFDb3dZQUFB
UVN4Z0FBQmdYVHhBWDNBQUEKQUFJakFBRVJJUmdBQUo4WUFBQVhVUUlqQUFNUlFSZ0FBS2dCQUFB
WFVnSWpBQU1BQ3FRWUFBQVRNUmtBQUFRV1poU3RHQUFBUkFFQQpBQlpuQkFFZkFpTUFBUlMxR0FB
QVJBRUFBQlpvQkFFZUFpTUFBUlNqRlFBQVJBRUFBQlpwQkFFZEFpTUFBUlRFR0FBQVJBRUFBQlpx
CkJBRWNBaU1BQVJUWkdBQUFSQUVBQUJackJBRWJBaU1BQVJUdEdBQUFSQUVBQUJac0JBRWFBaU1B
QVJRSEdRQUFSQUVBQUJadEJBRVoKQWlNQUFSUW9HUUFBUkFFQUFCWnVCQmtBQWlNQUFRQVFUeGtB
QUdnV1doQVgzQUFBQUFJakFBRVJ6Z2dBQU5ZeUFBQVdYQUlqQUFNUgo4QmNBQUtnQkFBQVdYUUlq
QUFNUkF4Z0FBS0lTQUFBV1hnSWpBQU1SREJnQUFOa0pBQUFXWHdJakFBTVJGaGdBQU5VWUFBQVdZ
QUlqCkFBTVJWeGdBQUxrSEFBQVdZUUlqQUFNUmFSZ0FBT3dQQUFBV1lnSWpBQU1SZkJnQUFLZ0JB
QUFXWXdJakFBTVJpUmdBQUtnQkFBQVcKWkFJakFBTVJsaGdBQUljWUFBQVdaUUlqQUFNUm94Z0FB
Tm9ZQUFBV2J3SWpBQU1SUEJrQUFOa0pBQUFXY0FJakFBTUFDbk1aQUFBVApzQmtBQUFRVkZCUjBH
UUFBUkFFQUFCVVZCQUVmQWlNQUFSU0lHUUFBUkFFQUFCVVdCQUVlQWlNQUFSU1dHUUFBUkFFQUFC
VVhCQUVkCkFpTUFBUlNpR1FBQVJBRUFBQlVZQkFFY0FpTUFBUlFvR1FBQVJBRUFBQlVaQkJ3QUFp
TUFBUUFRelJrQUFGQVZEUkFYQWdnQUFBSWoKQUFFUnpnZ0FBTll5QUFBVkR3SWpBQU1SMXhjQUFO
a0pBQUFWRUFJakFBTVI1aGNBQURvYUFBQVZFUUlqQUFNUldoa0FBTUVKQUFBVgpFZ0lqQUFNUkZS
WUFBS2dCQUFBVkV3SWpBQU1SYXhrQUFEOGFBQUFWR2dJakFBTVJ1aGtBQU5rSkFBQVZHd0lqQUFN
UlFSZ0FBS2dCCkFBQVZIQUlqQUFNQUNxSWFBQUFROUJrQUFCQVlNUkFYM0FBQUFBSWpBQUVSN2hr
QUFHRUFBQUFZTXdJakFBTUFDakliQUFBT05Sb0EKQUFFS1dSc0FBQkpmR3dBQVNSb0FBQUVXRUlv
YUFBQUlHU2NRRjl3QUFBQUNJd0FCQUFwdkd3QUFFSzhhQUFBSUdpSVFGOXdBQUFBQwpJd0FCQUFx
SEd3QUFKT2NhQUFBQkVBcWZHd0FBRUJZYkFBQUlDblFRRjY0SkFBQUNJd0FCQUFxckd3QUFFdlVB
QUFCK0d3QUFBUTBTCnd4c0FBSTBiQUFBQkRnSUVIQUFBQlFJbkNCc2hGRTRjQUFCRUFRQUFHeUlF
Q0JnQ0l3QUJGRnNjQUFCRUFRQUFHeU1FQXhVQ0l3QUIKRkdjY0FBQkVBUUFBR3lRRUFSUUNJd0FC
QUNsaEFBQUFLaEVYQUFBREFCQ2pIQUFBU0JzZkVCZmNBQUFBQWlNQUFSRkZIQUFBcUFFQQpBQnNn
QWlNQUFoR21BUUFBNEJzQUFCc3BBaU1BQWhHQkhBQUFZUUFBQUJzcUFpTUFBaEdRSEFBQVlRQUFB
QnNyQWlNQUFoRkVFUUFBCkd4d0FBQnNzQWlNQUFnQUtKeHdBQUJOREtBQUFHQkw2RkNRZEFBQkVB
UUFBRXZzRUFSOENJd0FCRkM0ZEFBQkVBUUFBRXZ3RUFSNEMKSXdBQkZFSWRBQUJFQVFBQUV2MEVB
UjBDSXdBQkZFd2RBQUJFQVFBQUV2NEVBUndDSXdBQkZHRWRBQUJFQVFBQUV2OEVBUnNDSXdBQgpK
bkVkQUFCRUFRQUFFZ0FCQkFFYUFpTUFBU2FNSFFBQVJBRUFBQklCQVFRQkdRSWpBQUVtb2gwQUFF
UUJBQUFTQWdFRUFSZ0NJd0FCCkpyb2RBQUJFQVFBQUVnTUJCQUVYQWlNQUFTYlFIUUFBUkFFQUFC
SUVBUVFCRmdJakFBRW01aDBBQUVRQkFBQVNCUUVFQVJVQ0l3QUIKSmdFZUFBQkVBUUFBRWdZQkJB
RVVBaU1BQVNZUUhnQUFSQUVBQUJJSEFRUUJFd0lqQUFFbUloNEFBRVFCQUFBU0NBRUVBUklDSXdB
QgpKalllQUFCRUFRQUFFZ2tCQkFFUkFpTUFBU1krSGdBQVJBRUFBQklLQVFRQkVBSWpBQUVtamd3
QUFFUUJBQUFTQ3dFRUFROENJd0FCCkprY2VBQUJFQVFBQUVnd0JCQUVPQWlNQUFTWmxIZ0FBUkFF
QUFCSU5BUVFCRFFJakFBRW1keDRBQUVRQkFBQVNEZ0VFQVF3Q0l3QUIKSm9ZZUFBQkVBUUFBRWc4
QkJBRUxBaU1BQVNhVEhnQUFSQUVBQUJJUUFRUUJDZ0lqQUFFbW94NEFBRVFCQUFBU0VRRUVBUWtD
SXdBQgpKcndlQUFCRUFRQUFFaElCQkFFSUFpTUFBU2JYSGdBQVJBRUFBQklUQVFRQkJ3SWpBQUVt
NXg0QUFFUUJBQUFTRkFFRUFRWUNJd0FCCkp2WWVBQUJFQVFBQUVoVUJCQUVGQWlNQUFTWUxId0FB
UkFFQUFCSVdBUVFCQkFJakFBRW1JeDhBQUVRQkFBQVNGd0VFQVFNQ0l3QUIKSmpjZkFBQkVBUUFB
RWhnQkJBRUNBaU1BQVNaTEh3QUFSQUVBQUJJWkFRUUJBUUlqQUFFbVhoOEFBRVFCQUFBU0dnRUVB
UUFDSXdBQgpKbkVmQUFCRUFRQUFFaHNCQkFFZkFpTUVBU2FJSHdBQVJBRUFBQkljQVFRQkhnSWpC
QUVtcHg4QUFFUUJBQUFTSFFFRUJCb0NJd1FCCkpyUWZBQUJFQVFBQUVoNEJCQUVaQWlNRUFTYkJI
d0FBUkFFQUFCSWZBUVFCR0FJakJBRW02UjhBQUVRQkFBQVNJQUVFQVJjQ0l3UUIKSnYwZkFBQkVB
UUFBRWlFQkJBRVdBaU1FQVNZVklBQUFSQUVBQUJJaUFRUUJGUUlqQkFFbUxTQUFBRVFCQUFBU0l3
RUVBUlFDSXdRQgpKa1lnQUFCRUFRQUFFaVFCQkFFVEFpTUVBU1pjSUFBQVJBRUFBQklsQVFRQkVn
SWpCQUVtY2lBQUFFUUJBQUFTSmdFRUFSRUNJd1FCCkpvMGdBQUJFQVFBQUVpY0JCQUVRQWlNRUFT
YWZJQUFBUkFFQUFCSW9BUVFCRHdJakJBRW1zU0FBQUVRQkFBQVNLUUVFQVE0Q0l3UUIKSnI4Z0FB
QkVBUUFBRWlvQkJBRU5BaU1FQVNiZElBQUFSQUVBQUJJckFRUUJEQUlqQkFFbS9pQUFBRVFCQUFB
U0xBRUVBUXNDSXdRQgpKaG9oQUFCRUFRQUFFaTBCQkFFS0FpTUVBU1l4SVFBQVJBRUFBQkl1QVFR
QkNRSWpCQUVtVUNFQUFFUUJBQUFTTHdFRUFRZ0NJd1FCCkptc2hBQUJFQVFBQUVqQUJCQUVIQWlN
RUFTYU1JUUFBUkFFQUFCSXhBUVFCQmdJakJBRW1ueUVBQUVRQkFBQVNNZ0VFQVFVQ0l3UUIKSnJZ
aEFBQkVBUUFBRWpNQkJBRUVBaU1FQVNiR0lRQUFSQUVBQUJJMEFRUUJBd0lqQkFFbTVDRUFBRVFC
QUFBU05RRUVBUUlDSXdRQgpKdmtoQUFCRUFRQUFFallCQkFFQkFpTUVBU1lXSWdBQVJBRUFBQkkz
QVFRQkFBSWpCQUVtS1NJQUFFUUJBQUFTT0FFRUFSOENJd2dCCkprb2lBQUJFQVFBQUVqa0JCQUlk
QWlNSUFTWldJZ0FBUkFFQUFCSTZBUVFDR3dJakNBRW1ieUlBQUVRQkFBQVNPd0VFQVJvQ0l3Z0IK
Sm9JaUFBQkVBUUFBRWp3QkJBRVpBaU1JQVNhS0lnQUFSQUVBQUJJOUFRUUJHQUlqQ0FFbW1pSUFB
RVFCQUFBU1BnRUVBUmNDSXdnQgpKcThpQUFCRUFRQUFFajhCQkFFV0FpTUlBU2JESWdBQVJBRUFB
QkpBQVFRQkZRSWpDQUVtNWlJQUFFUUJBQUFTUVFFRUFSUUNJd2dCCkpnd2pBQUJFQVFBQUVrSUJC
QUlTQWlNSUFTWWRJd0FBUkFFQUFCSkRBUVFDRUFJakNBRW1MU01BQUVRQkFBQVNSQUVFQVE4Q0l3
Z0IKSmtVakFBQkVBUUFBRWtVQkJBRU9BaU1JQVNaZ0l3QUFSQUVBQUJKR0FRUUJEUUlqQ0FFbWRD
TUFBRVFCQUFBU1J3RUVDd0lDSXdnQgpKb2NqQUFCRUFRQUFFa2dCQkFZYUFpTU1BU2FUSXdBQVJB
RUFBQkpKQVFRQkdRSWpEQUVtcUNNQUFFUUJBQUFTU2dFRUFSZ0NJd3dCCkpzTWpBQUJFQVFBQUVr
c0JCQUVYQWlNTUFTYmZJd0FBUkFFQUFCSk1BUVFCRmdJakRBRW0raU1BQUVRQkFBQVNUUUVFQVJV
Q0l3d0IKSmhva0FBQkVBUUFBRWs0QkJBRVVBaU1NQVNZdEpBQUFSQUVBQUJKUEFRUUVFQUlqREFF
bVJTUUFBRVFCQUFBU1VBRUVCQXdDSXd3QgpKbHNrQUFCRUFRQUFFbEVCQkFFTEFpTU1BU2J0R0FB
QVJBRUFBQkpTQVFRQkNnSWpEQUVtQnhrQUFFUUJBQUFTVXdFRUFRa0NJd3dCCkptZ2tBQUJFQVFB
QUVsUUJCQUVJQWlNTUFTYUxKQUFBUkFFQUFCSlZBUVFCQndJakRBRW1xU1FBQUVRQkFBQVNWZ0VF
QVFZQ0l3d0IKSnJra0FBQkVBUUFBRWxjQkJBRUZBaU1NQVNiSkpBQUFSQUVBQUJKWUFRUUJCQUlq
REFFbTNTUUFBRVFCQUFBU1dRRUVBUU1DSXd3QgpKdndrQUFCRUFRQUFFbG9CQkFFQ0FpTU1BU1lW
SlFBQVJBRUFBQkpiQVFRQkFRSWpEQUVtSkNVQUFFUUJBQUFTWEFFRUFRQUNJd3dCCkprSWxBQUJF
QVFBQUVsMEJCQUVmQWlNUUFTWmFKUUFBUkFFQUFCSmVBUVFCSGdJakVBRW1iU1VBQUVRQkFBQVNY
d0VFQVIwQ0l4QUIKSm9nbEFBQkVBUUFBRW1BQkJBRWNBaU1RQVNhYkpRQUFSQUVBQUJKaEFRUUJH
d0lqRUFFbXRDVUFBRVFCQUFBU1lnRUVBUm9DSXhBQgpKdGdsQUFCRUFRQUFFbU1CQkFFWkFpTVFB
U2JzSlFBQVJBRUFBQkprQVFRQkdBSWpFQUVtL3lVQUFFUUJBQUFTWlFFRUFSY0NJeEFCCkpoTW1B
QUJFQVFBQUVtWUJCQUVXQWlNUUFTWWtKZ0FBUkFFQUFCSm5BUVFCRlFJakVBRW1QU1lBQUVRQkFB
QVNhQUVFQVJRQ0l4QUIKSmtZbUFBQkVBUUFBRW1rQkJBUVFBaU1RQVNaZEpnQUFSQUVBQUJKcUFR
UUJEd0lqRUFFbWZpWUFBRVFCQUFBU2F3RUVBUTRDSXhBQgpKcGttQUFCRUFRQUFFbXdCQkFFTkFp
TVFBU2EySmdBQVJBRUFBQkp0QVFRQkRBSWpFQUVtNGlZQUFFUUJBQUFTYmdFRUNnSUNJeEFCCkpn
QW5BQUJFQVFBQUVtOEJCQUVCQWlNUUFTWWNKd0FBUkFFQUFCSndBUVFCQUFJakVBRW1MU2NBQUVR
QkFBQVNjUUVFQVI4Q0l4UUIKSmo4bkFBQkVBUUFBRW5JQkJBRWVBaU1VQVNaTEp3QUFSQUVBQUJK
ekFRUUJIUUlqRkFFbVdDY0FBRVFCQUFBU2RBRUVBUndDSXhRQgpKblFuQUFCRUFRQUFFblVCQkFF
YkFpTVVBU2FXSndBQVJBRUFBQkoyQVFRQkdnSWpGQUVtdENjQUFFUUJBQUFTZHdFRUFSa0NJeFFC
CkpzSW5BQUJFQVFBQUVuZ0JCQUVZQWlNVUFTYmNKd0FBUkFFQUFCSjVBUVFCRndJakZBRW0vaWNB
QUVRQkFBQVNlZ0VFQVJZQ0l4UUIKSmhFb0FBQkVBUUFBRW5zQkJBRVZBaU1VQVNZbEtBQUFSQUVB
QUJKOEFRUUJGQUlqRkFFQUNvY0ZBQUFTTkNZQUFId29BQUFCY2hNdQpMQUFBQkJ3bkZJQXBBQUJF
QVFBQUhDZ0VBUjhDSXdBQkZKZ3BBQUJFQVFBQUhDa0VBUjRDSXdBQkZMRXBBQUJFQVFBQUhDb0VB
UjBDCkl3QUJGTW9wQUFCRUFRQUFIQ3NFQVJ3Q0l3QUJGT0VwQUFCRUFRQUFIQ3dFQVJzQ0l3QUJG
QUFxQUFCRUFRQUFIQzBFQVJvQ0l3QUIKRkI4cUFBQkVBUUFBSEM0RUFSa0NJd0FCRkQ0cUFBQkVB
UUFBSEM4RUFSZ0NJd0FCRkZzcUFBQkVBUUFBSERBRUFSY0NJd0FCRkd3cQpBQUJFQVFBQUhERUVB
UllDSXdBQkZJRXFBQUJFQVFBQUhESUVBUlVDSXdBQkZLRXFBQUJFQVFBQUhETUVBUlFDSXdBQkZM
MHFBQUJFCkFRQUFIRFFFQVJNQ0l3QUJGTklxQUFCRUFRQUFIRFVFQVJJQ0l3QUJGUFFxQUFCRUFR
QUFIRFlFQVJFQ0l3QUJGQWNyQUFCRUFRQUEKSERjRUFSQUNJd0FCRkNRckFBQkVBUUFBSERnRUFR
OENJd0FCRkVRckFBQkVBUUFBSERrRUFRNENJd0FCRkNJRkFBQkVBUUFBSERvRQpBZ3dDSXdBQkZG
TXJBQUJFQVFBQUhEc0VBUXNDSXdBQkZHSXJBQUJFQVFBQUhEd0VBUW9DSXdBQkZId3JBQUJFQVFB
QUhEMEVBUWtDCkl3QUJGS1lyQUFCRUFRQUFIRDRFQWdjQ0l3QUJGTElyQUFCRUFRQUFIRDhFQWdV
Q0l3QUJGTHNyQUFCRUFRQUFIRUFFQVFRQ0l3QUIKRk5ZckFBQkVBUUFBSEVFRUFRTUNJd0FCRlBR
ckFBQkVBUUFBSEVJRUFRSUNJd0FCRkE4c0FBQkVBUUFBSEVNRUFRRUNJd0FCRkNBcwpBQUJFQVFB
QUhFUUVBUUFDSXdBQkFCQmRMQUFBZ0J3VUVCZmNBQUFBQWlNQUFSSFFLQUFBMlFrQUFCd1dBaU1B
QXhIaktBQUF2aHNBCkFCd1lBaU1BQXhIeEtBQUF2aHNBQUJ3WkFpTUFBeEVKS1FBQXFBRUFBQndi
QWlNQUF4RVBLUUFBcUFFQUFCd2NBaU1BQXhFVktRQUEKMlFrQUFCd2VBaU1BQXhFdEtRQUFZUUFB
QUJ3ZkFpTUFBeEYyQ0FBQXFBRUFBQndoQWlNQUF4RTJLUUFBMWpJQUFCd2lBaU1BQXhGRgpLUUFB
cUFFQUFCd2pBaU1BQXhGVUtRQUFxQUVBQUJ3a0FpTUFBeEZoS1FBQThROEFBQndsQWlNQUF4RjNL
UUFBUkNZQUFCeEZBaU1BCkF4RTRMQUFBOFE4QUFCeEhBaU1BQXhGUkxBQUFxQUVBQUJ4SUFpTUFB
d0FLVnlnQUFBN2JMQUFBQVFwUUtRQUFFbFlwQUFEb0xBQUEKQVEwT0N5MEFBQUVLWmlrQUFCSnNL
UUFBSFMwQUFBRVVKTHd0QUFBQkVBcDhLUUFBRXZFUEFBRHJMUUFBQVl3UVRpNEFBQWdkUkJBWAoz
QUFBQUFJakFBRUFDcE1wQUFBUW1pNEFBQ2dlSkJBWDNBQUFBQUlqQUFFUlJCRUFBR0VBQUFBZUpn
SWpBQU1SZ2k0QUFQRVBBQUFlCkp3SWpBQU1SaUM0QUFOa0pBQUFlS0FJakFBTVJrQzRBQUNJS0FB
QWVLUUlqQUFNQUNxc3BBQUFrT2k4QUFBRVFDdjhwQUFBT2FpOEEKQUFFU0N5b0FBSEl2QUFBQkNn
b1JLZ0FBRXM4RUFBQzNNUUFBQ3cwcklTb0FBQUhDTVFBQUNCOUNMSmN2QUFBQUxMZ3ZBQUFCTE40
dgpBQUFDTEFBd0FBQUVMQ2t3QUFBSUxFNHdBQUFRTEhnd0FBQWdMS2t3QUFEQUFDelRNQUFBZ0FF
c0JqRUFBSUFDTERZeEFBQ0FCQ3hxCk1RQUFnQWdzampFQUFJQVFBQklzS2dBQXdqRUFBQUZDRUVn
eUFBQklJUXNRRjl3QUFBQUNJd0FCRWFZQkFBQWhLZ0FBSVEwQ0l3QUQKRWZjeEFBQ29BUUFBSVE0
Q0l3QURFUUV5QUFBaEtnQUFJUThDSXdBREVRd3lBQURRQUFBQUlSQUNJd0FERVJ3eUFBQ29BUUFB
SVJFQwpJd0FERVNreUFBQ29BUUFBSVJJQ0l3QURFVGN5QUFDb0FRQUFJUk1DSXdBREVVSXlBQUNv
QVFBQUlSUUNJd0FEQUFxWktnQUFFRm95CkFBQW9JQTRRRjl3QUFBQUNJd0FCRVYwUEFBRFpDUUFB
SUJBQ0l3QURFZTh4QUFBa0t3QUFJQkVDSXdBREVWRXlBQUJoQUFBQUlCSUMKSXdBREVVUVJBQUNv
QVFBQUlCTUNJd0FEQUFvcEt3QUFMUWN6QUFBb0F4TFBFQmZjQUFBQUFpTUFBUkh2RlFBQTJRa0FB
QkxSQWlNQQpBUkVNRmdBQXpSY0FBQkxTQWlNQUFSR1VGZ0FBMlJjQUFCTFRBaU1BQVJHd0ZnQUFp
QWdBQUJMVUFpTUFBUkcrRmdBQXlBUUFBQkxWCkFpTUFBUkhQRmdBQVJBRUFBQkxXQWlNQUFSSHVG
Z0FBNVJjQUFCTFhBaU1BQVJFVUZ3QUFoeGdBQUJMWUFpTUFBUkhHRndBQUxSc0EKQUJMWkFpTUFB
UkhnR1FBQVZCc0FBQkxhQWlNQUFSRUVHZ0FBcUFFQUFCTGJBaU1BQVJFZUdnQUFaQnNBQUJMY0Fp
TUFBUkZlR2dBQQpaQnNBQUJMZEFpTUFBUkYxR2dBQWdoc0FBQkxlQWlNQUFSR2NHZ0FBbWhzQUFC
TGZBaU1BQVJHNkdnQUE3QThBQUJMZ0FpTUFBUkhOCkdnQUFwaHNBQUJMaEFpTUFBUkh3R2dBQTFq
SUFBQkxpQWlNQUFSSDZHZ0FBMWpJQUFCTGpBaU1BQVJFR0d3QUF2aHNBQUJMa0FpTUEKQVJFbEd3
QUF2aHNBQUJMbEFpTUFBUkV6R3dBQTJRa0FBQkxtQWlNQUFSRkRHd0FBdmhzQUFCTG5BaU1BQVJG
Vkd3QUFnaHNBQUJMbwpBaU1BQVJGdEd3QUF6aHNBQUJMcEFpTUFBUkdjR3dBQU9RRUFBQkxxQWlN
QUFSR3FHd0FBcUFFQUFCTHJBaU1BQVJHMkd3QUFZUUFBCkFCTHNBaU1BQVJISEd3QUFZUUFBQUJM
c0FpTUFBUkhkR3dBQVJBRUFBQkx0QWlNQUFSSHVHd0FBMlJzQUFCTHVBaU1BQVJFS0hBQUEKZGdj
QUFCTHZBaU1BQVJFbUhBQUFxQUVBQUJMd0FpTUFBUkU2SEFBQWhSd0FBQkx4QWlNQUFSR3dIQUFB
L0FBQUFCTHlBaU1BQVJHMgpIQUFBT1FFQUFCTHpBaU1BQVJIR0hBQUFEeEFBQUJMMEFpTUFBUkhP
SEFBQXFBRUFBQkwxQWlNQUFSSGVIQUFBcUFFQUFCTDJBaU1BCkFSSHNIQUFBMWpJQUFCTDNBaU1B
QVJINUhBQUE3QThBQUJMNEFpTUFBUkVISFFBQUR4QUFBQkw1QWlNQUFRd1pIUUFBaWh3QUFCSjkK
QVFJakFBRU1UeWdBQUdFQUFBQVNmZ0VDSXdBQkRGb29BQUQ4QUFBQUVuOEJBaU1BQVF4bktBQUFP
U1lBQUJLQUFRSWpBQUVNamlnQQpBS1liQUFBU2dRRUNJd0FCREtJb0FBQ21Hd0FBRW9JQkFpTUFB
UXkrS0FBQWlBZ0FBQktEQVFJakFBRU15Q2dBQUVzcEFBQVNoQUVDCkl3QUJER2NzQUFDSUNBQUFF
b1VCQWlNQUFReHpMQUFBVGhJQUFCS0dBUUlqQUFFTWh5d0FBTDRiQUFBU2h3RUNJd0FCREpRc0FB
QysKR3dBQUVvZ0JBaU1BQVF5aUxBQUF2aHNBQUJLSkFRSWpBQUVNc2l3QUFDSUtBQUFTaWdFQ0l3
QUJETWdzQUFCYktRQUFFb3NCQWlNQQpBUXoyTEFBQWNTa0FBQktNQVFJakFBRU1NQzBBQUU0U0FB
QVNqUUVDSXdBQkRFMHRBQUJPRWdBQUVvNEJBaU1BQVF4aExRQUE3QThBCkFCS1BBUUlqQUFFTWJT
MEFBT3dQQUFBU2tBRUNJd0FCRElrdEFBQ29BUUFBRXBFQkFpTUFBUXliTFFBQWd5a0FBQktTQVFJ
akFBRU0KMkMwQUFJZ3BBQUFTa3dFQ0l3QUJEQVV1QUFEUUFBQUFFcFFCQWlNQUFRd1dMZ0FBdGdZ
QUFCS1ZBUUlqQUFFTUt5NEFBTFlHQUFBUwpsZ0VDSXdBQkREc3VBQUNtS1FBQUVwY0JBaU1BQVF4
VkxnQUE4UThBQUJLWkFRSWpBQUVNYWk0QUFQb3BBQUFTbWdFQ0l3QUJES0l1CkFBRDZLUUFBRXBz
QkFpTUFBUXk0TGdBQTdBOEFBQktkQVFJakFBRU0waTRBQUU4RkFBQVNud0VDSXdBQkRPNHVBQUJr
R3dBQUVxQUIKQWlNQUFRd0dMd0FBa3dnQUFCS2hBUUlqQUFFTUdpOEFBS2dCQUFBU293RUNJd0FC
REMwdkFBQUdLZ0FBRXFVQkFpTUFBUXhKTHdBQQovQUFBQUJLbUFRSWpBQUVNWHk4QUFCd3FBQUFT
cHdFQ0l3QUJESGt2QUFDT0tnQUFFcWdCQWlNQUFRempNUUFBZUNzQUFCS3FBUUlqCkFBRU1aeklB
QUNFcUFBQVNxd0VDSXdBQkRJMHlBQUR4RHdBQUVxMEJBaU1BQVF5aE1nQUFGQkFBQUJLdUFRSWpB
QUVNc0RJQUFCUVEKQUFBU3J3RUNJd0FCREw4eUFBRElCQUFBRXJBQkFpTUFBUXpSTWdBQThSY0FB
Qkt4QVFJakFBRU05aklBQUNFcUFBQVNzZ0VDSXdBQgpBQXA5S3dBQUxSa3pBQUFBQVFiSEVCY0ND
QUFBQWlNQUFSRTBDQUFBaUFnQUFBYktBaU1BQWhGcENBQUFxQUVBQUFiTEFpTUFBaEYyCkNBQUFx
QUVBQUFiTUFpTUFBaEdBQ0FBQWt3Z0FBQWJOQWlNQUFoR1FDQUFBN0E4QUFBYk9BaU1BQWhHSERn
QUE3QThBQUFiUEFpTUEKQWhHVkRnQUFxQUVBQUFiUUFpTUFBaEdpRGdBQXFBRUFBQWJSQWlNQUFo
R3ZEZ0FBeUFRQUFBYlNBaU1BQWhHOURnQUE4UThBQUFiVApBaU1BQWhIU0RnQUF5QVFBQUFiVUFp
TUFBaEhaRGdBQUR4QUFBQWJWQWlNQUFoSHlEZ0FBcUFFQUFBYldBaU1BQWhIK0RnQUErd1VBCkFB
YlhBaU1BQWhFUER3QUErd1VBQUFiWUFpTUFBaEVhRHdBQSt3VUFBQWJaQWlNQUFoRXBEd0FBK3dV
QUFBYmFBaU1BQWhFNkR3QUEKWVFBQUFBYmJBaU1BQWhGSER3QUFZUUFBQUFiY0FpTUFBaEZURHdB
QUl4SUFBQWJkQWlNQUFoSDhFQUFBSndvQUFBYmVBaU1BQWhGTgpEQUFBVGhJQUFBYmZBaU1BQWhF
WEVRQUFvaElBQUFiZ0FpTUFBaEZVRVFBQXB4SUFBQWJoQWlNQUFoRmdFUUFBMlFrQUFBYmlBaU1B
CkFoRnZFUUFBcUFFQUFBYmpBaU1BQWd5QUVRQUFyQklBQUFZZkFRSWpBQUlNc3hVQUFLZ0JBQUFH
SUFFQ0l3QUNETVlWQUFEc0R3QUEKQmlFQkFpTUFBZ3pkRlFBQTl6QUFBQVlpQVFJakFBSUFDdnd3
QUFBWklqTUFBQUdhQXRZeUFBQUJHQklJQUFEV01nQUFBWndDQ1FPUQpJQU1BQUFBQUFDNUR4QUFB
QWFFQ2JNVUFBQUFnU1RNQUFBRi9BZ0hRQUFBQUFSZ3VNd0FBMEFBQUFBR0JBZ2tEbUNBREFBQUFB
QUF2Ckx5NEdvZ0FBQVlvQy9LQUFBQUFBQUE2Uk13QUFBUXBBTXdBQUVrWXpBQUNoTXdBQUFiY09z
ak1BQUFFRFZqTUFBQXBjTXdBQUVtRXoKQUFDNk13QUFBUllJQVFsTE13QUFDV1l6QUFBQUNuRXpB
QUFiWnpNQUFINHpBQUFCNlFrRGNCOERBQUFBQUFBd3d6TUFBQUhwQVFFQQpBQUFBQUFBQUFESUFB
QUFBQUFBQUFWWUJNZkNkQUFBQjZVc3pBQUFBQUFBQU1mbWRBQUFCNldZekFBQWpBQUFBQURMbE13
QUFBZXdCCmF6UUFBQUZBQUFBQUFBQUFBS1lCQUFBQUFBQUFBVll4QXA0QUFBSHMrQU1BQUVZQUFB
QXpEWjRBQUFIdVZKOEFBQUtSU0RNaG5nQUEKQWU5VW53QUFBcEZBTkRlZUFBQUI4R3BxQUFDUEFB
QUFORW1lQUFBQjhXQ2ZBQUN5QUFBQU5GaWVBQUFCL3IwRUFBRDdBQUFBTlY2ZQpBQUFCQndGcm53
QUFIZ0VBQUFBT0F6UUFBQUVEV3pRQUFBcGhOQUFBRW1ZMEFBQVpOQUFBQWZNMk1EUUFBQUVUQVFF
Qk5RQUFBYkFCCkFBQUFBQUFBVlFJQUFBQUFBQUFCVmpkSm5nQUFBUk1CWUo4QUFFRUJBQUEzYko0
QUFBRVRBUUUxQUFDS0FRQUFOWGFlQUFBQkdBR0IKbndBQXdBRUFBQzZsbmdBQUFSb0JBVFVBQUFB
a1dqUUFBQUVRQ3RNMEFBQVFielFBQUJBaXJ4QVgzQUFBQUFJakFBRVJVRFFBQU5vMApBQUFpc2dJ
akFBTUFDdDgwQUFBMmZEUUFBQUVnQVFHaE5RQUFBV0FDQUFBQUFBQUFMd01BQUFBQUFBQUJWamRK
bmdBQUFTQUJZSjhBCkFPTUJBQUEzYko0QUFBRWdBUUUxQUFBWkFnQUFOYkNlQUFBQkpRRzlCQUFB
WWdJQUFEVzRuZ0FBQVNZQm5aOEFBSVVDQUFBdTlaNEEKQUFFckFhRTFBQUFBSkpjMEFBQUJFQXB6
TlFBQUVMTTBBQUFRSXpJUUY5d0FBQUFDSXdBQkVWQTBBQUI2TlFBQUl6VUNJd0FEQUFwLwpOUUFB
TnNjMEFBQUJNQUVCNGpVQUFBRXdBd0FBQUFBQUFGTURBQUFBQUFBQUFWWTNTWjRBQUFFd0FXQ2ZB
QUNvQWdBQUFBN2ZOQUFBCkFRclhOUUFBRXQwMUFBRDVOQUFBQWZrMkVEVUFBQUU0QVFGRUFRQUFB
V0FEQUFBQUFBQUFwUU1BQUFBQUFBQUJWamRlbmdBQUFUZ0IKYTU4QUFONENBQUFBT0N3MUFBQUJR
Z0VCQWJBREFBQUFBQUFBdWdNQUFBQUFBQUFCVmpkZW5nQUFBVUlCYTU4QUFCUURBQUEzQnA4QQpB
QUZDQVVRQkFBQTNBd0FBQURaSU5RQUFBVWNCQWNFSkFBQUJ3QU1BQUFBQUFBQXJCQUFBQUFBQUFB
RldOMTZlQUFBQlJ3RnJud0FBCldnTUFBRFVObndBQUFVNEJsd1VBQUgwREFBQTFGWjhBQUFGUEFj
RUpBQUNnQXdBQUFEWldOUUFBQVZVQkFjRUpBQUFCTUFRQUFBQUEKQUFBSEJRQUFBQUFBQUFGV04x
NmVBQUFCVlFGcm53QUF3d01BQURjZm53QUFBVlVCb2hJQUFQa0RBQUExRFo4QUFBRmNBWmNGQUFC
QwpCQUFBTlJXZkFBQUJYUUhCQ1FBQVpRUUFBQUE0YWpVQUFBRmpBUUVCRUFVQUFBQUFBQURPQlFB
QUFBQUFBQUZXTjE2ZUFBQUJZd0ZyCm53QUFpQVFBQURjTm53QUFBV01Cd1FrQUFMNEVBQUEzSDU4
QUFBRmpBYUlTQUFBSEJRQUFOeU9mQUFBQll3R2lFZ0FBVUFVQUFEVXoKbndBQUFXc0Jsd1VBQUpr
RkFBQUFPSUUxQUFBQmNBRUJBZEFGQUFBQUFBQUFNUVlBQUFBQUFBQUJWamRlbmdBQUFYQUJhNThB
QUx3RgpBQUEzUFo4QUFBRndBZGFmQUFEeUJRQUFBRGlVTlFBQUFYc0JBUUZBQmdBQUFBQUFBSUVI
QUFBQUFBQUFBVlkzWHA0QUFBRjdBV3VmCkFBQTdCZ0FBT1hFR0FBQUFBQUFBV2djQUFBQUFBQUEx
WHA0QUFBRi9BUW1nQUFCZUJnQUFOUTJmQUFBQmdBSEJDUUFBZ1FZQUFEbW0KQmdBQUFBQUFBRm9I
QUFBQUFBQUFOVDJmQUFBQmhBSFdud0FBcEFZQUFBQUFBRGFyTlFBQUFZd0JBZmdEQUFBQmtBY0FB
QUFBQUFERQpCd0FBQUFBQUFBRldONldmQUFBQmpBSDRBd0FBeHdZQUFEcXlud0FBQVk0QnJWa0FB
QUtSZkRxL253QUFBWThCclZrQUFBS1JlRHJLCm53QUFBWkFCclZrQUFBS1JkRHJWbndBQUFaRUJY
andBQUFLUmNEcXlud0FBQVk0QnJWa0FBQUtSZkRxL253QUFBWThCclZrQUFBS1IKZURyS253QUFB
WkFCclZrQUFBS1JkRHJWbndBQUFaRUJYandBQUFLUmNBQTR6VFVBQUFHWEFRRUIwQWNBQUFBQUFB
RGFCd0FBQUFBQQpBQUZXTjZXZkFBQUJsd0g0QXdBQTZnWUFBQUEyNWpVQUFBR2NBUUhaQ1FBQUFl
QUhBQUFBQUFBQUdnZ0FBQUFBQUFBQlZqZmtud0FBCkFad0IyUWtBQUEwSEFBQUFOZ2syQUFBQm9R
RUJ3UWtBQUFFZ0NBQUFBQUFBQU5BSUFBQUFBQUFBQVZZMzVKOEFBQUdoQWRrSkFBQlcKQndBQUFE
WWtOZ0FBQWEwQkFka0pBQUFCMEFnQUFBQUFBQUJlQ1FBQUFBQUFBQUZXTittZkFBQUJyUUhaQ1FB
QWpBY0FBQUEyUGpZQQpBQUc1QVFIbE9RQUFBV0FKQUFBQUFBQUFjZ2tBQUFBQUFBQUJWamZ3blFB
QUFia0JxRzBBQU1JSEFBQUFFR0UyQUFBSUpBOFFGOXdBCkFBQUNJd0FCQUFyU09RQUFObWcyQUFB
QnZnRUJHem9BQUFHQUNRQUFBQUFBQUpJSkFBQUFBQUFBQVZZMzhKMEFBQUcrQWFodEFBRGwKQndB
QUFCTDFBQUFBakRZQUFBRUxOcHMyQUFBQnd3RUIyUWtBQUFHZ0NRQUFBQUFBQVBvSkFBQUFBQUFB
QVZZMzhKMEFBQUhEQWFodApBQUFJQ0FBQU5mT2ZBQUFCeVFFWm9BQUFQZ2dBQURVZW9BQUFBYzBC
U3pNQUFHRUlBQUFBTnJrMkFBQUIxQUVCbHdVQUFBRUFDZ0FBCkFBQUFBQ1FMQUFBQUFBQUFBVlkz
OEowQUFBSFVBYWh0QUFDRUNBQUFPaXlnQUFBQjdBRWtvQUFBQXBGY09peWdBQUFCN0FFa29BQUEK
QXBGY05mT2ZBQUFCMlFFWm9BQUF1Z2dBQURVZEFRQUFBZDBCYW1vQUFOMElBQUExVDZBQUFBSHJB
YmhaQUFBVENRQUFOVmFnQUFBQgo5d0hBQndBQVNRa0FBRFZjb0FBQUFmZ0JPU1lBQUd3SkFBQXVi
YUFBQUFIaEFUcWdBQUE1MEFvQUFBQUFBQUR3Q2dBQUFBQUFBRFdLCm9BQUFBZmtCd0FjQUFJOEpB
QUE1MEFvQUFBQUFBQURtQ2dBQUFBQUFBRFdNb0FBQUFmb0JVS0FBQU1ZSkFBQUFBRG53Q2dBQUFB
QUEKQUJRTEFBQUFBQUFBTmNLZ0FBQUI1UUdYQlFBQTZRa0FBQUFBTnQwMkFBQUJBUUlCWGp3QUFB
RXdDd0FBQUFBQUFJVUxBQUFBQUFBQQpBVlk2MEtBQUFBRURBbE04QUFBQ2tYdzYxNkFBQUFFRUFs
TThBQUFDa1hnNjNxQUFBQUVGQWx1Z0FBQUNrWFE2OUtBQUFBRUhBbWVnCkFBQUNrV2c2MTZBQUFB
RUVBbE04QUFBQ2tYZzYzcUFBQUFFRkFsdWdBQUFDa1hRNjNxQUFBQUVGQWx1Z0FBQUNrWFF1QjZF
QUFBRUcKQW42Z0FBQTdvNGtBQUU0TEFBQUFBQUFBVXdzQUFBQUFBQUFCQ3dJOEdLRUFBQ3dlaXFB
QUFBS1JmRHdsb1FBQUxCNktvQUFBQXBGNApBQUFTUkFFQUFQMDJBQUFCY0JKVFBBQUFCRGNBQUFG
ZE9CVTNBQUFCRWdJQkFaQUxBQUFBQUFBQXpRd0FBQUFBQUFBQlZqY3lvUUFBCkFSSUMyUWtBQUF3
S0FBQTNQS0VBQUFFU0F0a0pBQUJDQ2dBQU4wV2hBQUFCRWdMWkNRQUFlQW9BQURWS29RQUFBUlFD
bXFBQUFLNEsKQUFBdVlxRUFBQUVZQXI0YkFBQXVkYUVBQUFFZ0F1VTVBQUF1Z2FFQUFBRWhBc0VK
QUFBQU9DWTNBQUFCS2dJQkFkQU1BQUFBQUFBQQo1Z3dBQUFBQUFBQUJWamVQb1FBQUFTb0MwNkFB
QU5FS0FBQTN3cUVBQUFFcUFxTUpBQUQwQ2dBQUFEMUtOd0FBQVM4Q0FRSHdEQUFBCkFBQUFBUG9N
QUFBQUFBQUFBVlk0V3pjQUFBRmNBZ0VCQUEwQUFBQUFBQUIzRFFBQUFBQUFBQUZXTmNtaEFBQUJY
Z0xCQmdBQVBRc0EKQURYVG9RQUFBV0lDK0FNQUFHQUxBQUFBTm5ZM0FBQUJaZ0lCMEFBQUFBR0FE
UUFBQUFBQUFKOE5BQUFBQUFBQUFWWTMxNkVBQUFGbQpBZ0UxQUFDREN3QUFBRGlWTndBQUFXc0NB
UUdnRFFBQUFBQUFBT1VOQUFBQUFBQUFBVlkzMTZFQUFBRnJBdXlnQUFETUN3QUFOL09oCkFBQUJh
d0tqQ1FBQUZRd0FBQUE0dVRjQUFBR3BBZ0VCOEEwQUFBQUFBQUNjRUFBQUFBQUFBQUZXTnpTaUFB
QUJxUUpXcUFBQVhnd0EKQURvcXFBQUFBYllDeGFnQUFBS1JRRFVTQ0FBQUFiRUMxaklBQUxjTUFB
QSsyeklBQURBQUFBQUJzUUkrQ3pNQUFBQUFBQUFCbmdJLwpNVE1BQUpRTUFBQUFBQUJBM2pjQUFB
RytBZ0haQ1FBQUFhQVFBQUFBQUFBQXNCQUFBQUFBQUFBQlZrRDNOd0FBQWNNQ0Fka0pBQUFCCnNC
QUFBQUFBQUFEQUVBQUFBQUFBQUFGV1FCMDRBQUFCeUFJQjJRa0FBQUhBRUFBQUFBQUFBTkFRQUFB
QUFBQUFBVlk0UkRnQUFBSE4KQWdFQjBCQUFBQUFBQUFEbUVBQUFBQUFBQUFGV054SUlBQUFCelFM
V01nQUEyZ3dBQURkK3FBQUFBYzBDb3drQUFQME1BQUFBUUc0NApBQUFCMGdJQkdqOEFBQUh3RUFB
QUFBQUFBUG9RQUFBQUFBQUFBVllQendRQUFJWTRBQUFCUndGQWp6Z0FBQUhYQWdFYVB3QUFBUUFS
CkFBQUFBQUFBQ2hFQUFBQUFBQUFCVmphc09BQUFBZHdDQVkwL0FBQUJFQkVBQUFBQUFBQW9FUUFB
QUFBQUFBRldONE9vQUFBQjNBS0kKUHdBQVJnMEFBRGVKcUFBQUFkd0MyNmdBQUk4TkFBQUFRUXFI
UHdBQUQ0Zy9BQURCT0FBQUFVNEJOc3M0QUFBQjRRSUJvd2tBQUFFdwpFUUFBQUFBQUFORVJBQUFB
QUFBQUFWWTNwS2dBQUFIaEFvMC9BQURZRFFBQU40T29BQUFCNFFKaEFBQUFEZzRBQURlNlRBQUFB
ZUVDCjI2Z0FBRVFPQUFBMXI2Z0FBQUhwQXNBSEFBQjZEZ0FBTHI2b0FBQUI1UUwycUFBQUFEYm1P
QUFBQWZBQ0FZMC9BQUFCNEJFQUFBQUEKQUFENEVRQUFBQUFBQUFGV04rR29BQUFCOEFLTlB3QUFz
QTRBQURmbnFBQUFBZkFDalQ4QUFQa09BQUFBTmdBNUFBQUI5UUlCalQ4QQpBQUVBRWdBQUFBQUFB
QW9TQUFBQUFBQUFBVlkzNjZnQUFBSDFBbzAvQUFCQ0R3QUFBRFlkT1FBQUFmb0NBWTAvQUFBQkVC
SUFBQUFBCkFBQWFFZ0FBQUFBQUFBRldOK3VvQUFBQitnS05Qd0FBWlE4QUFBQTlPRGtBQUFIL0Fn
RUJJQklBQUFBQUFBQXFFZ0FBQUFBQUFBRlcKTmxvNUFBQUJCQU1CQmtFQUFBRXdFZ0FBQUFBQUFE
b1NBQUFBQUFBQUFWWTM4YWdBQUFFRUE2Z0JBQUNJRHdBQUFBNXhPUUFBQVFQMgpRQUFBQ3Z4QUFB
QVNBVUVBQUg4NUFBQUJYVGlPT1FBQUFRa0RBUUZBRWdBQUFBQUFBRW9TQUFBQUFBQUFBVlkzOGFn
QUFBRUpBNmdCCkFBQ3JEd0FBQURhdE9RQUFBUTREQWRrSkFBQUJVQklBQUFBQUFBQzhFZ0FBQUFB
QUFBRldOL21vQUFBQkRnTVVxUUFBemc4QUFEVUMKbmdBQUFSVUQyUWtBQUFRUUFBQXVEYWtBQUFF
VEE4RUpBQUF1R2FrQUFBRVVBOEVKQUFBQU51RTVBQUFCR3dNQndRa0FBQUhBRWdBQQpBQUFBQUFj
VEFBQUFBQUFBQVZZdUk2a0FBQUVoQThFSkFBQXVHYWtBQUFFaUE4RUpBQUFBT0FZNkFBQUJNd01C
QVJBVEFBQUFBQUFBClloTUFBQUFBQUFBQlZqVXFxUUFBQVRVRDBBQUFBQ2NRQUFBQU5odzZBQUFC
T2dNQnBpa0FBQUZ3RXdBQUFBQUFBTUlUQUFBQUFBQUEKQVZZMzhhZ0FBQUU2QTZnQkFBQktFQUFB
TlNxcEFBQUJQQVBRQUFBQWdCQUFBQUEyTmpvQUFBRkRBd0dvQVFBQUFkQVRBQUFBQUFBQQpaeFFB
QUFBQUFBQUJWamNiU3dBQUFVTURwaWtBQUtNUUFBQTFLcWtBQUFGSEE5QUFBQURaRUFBQU5UK3BB
QUFCU0FPb0FRQUEvQkFBCkFBQTJVRG9BQUFGVUF3SFdRZ0FBQVhBVUFBQUFBQUFBc0JRQUFBQUFB
QUFCVmpkTXFRQUFBVlFEcUFFQUFESVJBQUFBRXNnRUFBQnMKT2dBQUFTd1N3RUlBQUhZNkFBQUJi
eExMUWdBQWhUb0FBQUVlT0lzNkFBQUJXd01CQWJBVUFBQUFBQUFBTmhVQUFBQUFBQUFCVmpkYQpx
UUFBQVZzRHFBRUFBR2dSQUFBM1RLa0FBQUZiQTZnQkFBQ2VFUUFBQURpcE9nQUFBV01EQVFGQUZR
QUFBQUFBQU1zVkFBQUFBQUFBCkFWWTNaNmtBQUFGakE1c0RBQURVRVFBQU4zZXBBQUFCWXdQV1Fn
QUFIUklBQURVcXFRQUFBV1VEMEFBQUFHWVNBQUFBT01NNkFBQUIKYndNQkFkQVZBQUFBQUFBQUVS
WUFBQUFBQUFBQlZqZnhxQUFBQVc4RHFBRUFBSndTQUFBM2Q2a0FBQUZ2QTlaQ0FBRFNFZ0FBQUQz
cApPZ0FBQVhVREFRRWdGZ0FBQUFBQUFDWVdBQUFBQUFBQUFWWTQram9BQUFHQkF3RUJNQllBQUFB
QUFBQkJGZ0FBQUFBQUFBRldOM3VwCkFBQUJnUU1rUlFBQUNCTUFBQUE0RWpzQUFBR0dBd0VCVUJZ
QUFBQUFBQUJoRmdBQUFBQUFBQUZXTjN1cEFBQUJoZ01rUlFBQUt4TUEKQUFBNEx6c0FBQUdMQXdF
QmNCWUFBQUFBQUFDRkZnQUFBQUFBQUFGV04zdXBBQUFCaXdNa1JRQUFUaE1BQURlQ3FRQUFBWXNE
UzZrQQpBSEVUQUFBQU5razdBQUFCa0FNQkpFVUFBQUdRRmdBQUFBQUFBQk1YQUFBQUFBQUFBVlkz
bmFrQUFBR1FBMkdwQUFDNkV3QUFONmlwCkFBQUJrUU56cVFBQTNSTUFBRGUxcVFBQUFaSURtS2tB
QUFBVUFBQTN2cWtBQUFHVEE4ZXBBQUFqRkFBQU44ZXBBQUFCbEFQZHFRQUEKUmhRQUFEZlRxUUFB
QVpVRGM2a0FBR2tVQUFCQzNha0FBQUdXQXcrcUFBQUNrUkJDQTZvQUFBR1hBdytxQUFBQ2tSaENI
UUVBQUFHWApBMkVBQUFBQ2tTQTZFcW9BQUFHWkE4R3JBQUFEa1loL0FBNWtPd0FBQVFvWlJRQUFF
aDlGQUFCek93QUFBVEE0Z3pzQUFBR2VBd0VCCklCY0FBQUFBQUFDZkdBQUFBQUFBQUFGV054MEJB
QUFCbmdORlRnQUFqQlFBQURmZHFnQUFBWjRENlFrQUFPZ1VBQUEzNDZvQUFBR2UKQThnRUFBQXhG
UUFBT3VxcUFBQUJwUU5qckFBQUE1R1Fmem90cXdBQUFiQURJbEFBQUFPUjRINDFPS3NBQUFHeEEv
VUFBQUJuRlFBQQpOUTRNQUFBQnR3TjVyQUFBaWhVQUFDNVhxd0FBQWFNRG93a0FBQUE0a3pzQUFB
SFlBd0VCb0JnQUFBQUFBQUQ2SEFBQUFBQUFBQUZXCk4yQ3JBQUFCMkFNakVnQUFyUlVBQURwbXF3
QUFBZHdEZlFnQUFBT1JzSDg2Y0tzQUFBSGVBenF0QUFBRGtlaCtPdkNyQUFBQjN3TlIKclFBQUE1
SGdmanJ3cXdBQUFkOERVYTBBQUFPUjRINDY4S3NBQUFIZkExR3RBQUFEa2VCK05SaXNBQUFCNEFP
akNRQUE5aFVBQURVaQpyQUFBQWQwRHRxOEFBQzBXQUFBMWdxa0FBQUhoQTdoWkFBQXFGd0FBUTdt
dEFBQUIyQU01QVFBQUxzQ3RBQUFCMmdNVUVBQUFMc3F0CkFBQUIyd011QVFBQU94aUpBQURyR0FB
QUFBQUFBUGtZQUFBQUFBQUFBZHdEUklNQkFBQUREZ0g4QUFBQUNBQUFBQUFBQUFBQVJKUUIKQUFB
RERnSDhBQUFBQ0FBQUFBQUFBQUFBQURudEdnQUFBQUFBQU53YkFBQUFBQUFBTzZHSUFBRHRHZ0FB
QUFBQUFOd2JBQUFBQUFBQQpBUU1FUW5DckFBQUJ3d083cndBQUE1SG9malhXclFBQUFjY0R3SzhB
QUZBV0FBQkYzcTBBQUFIS0E4Z0VBQUFFQUFBQUFEV0tvQUFBCkFjNER5QVFBQUlZV0FBQTE0SzBB
QUFITUE4Q3ZBQURSRmdBQU5lZXRBQUFCelFQQXJ3QUFCeGNBQUFBQUFEaWlPd0FBQVJvRUFRRUEK
SFFBQUFBQUFBQThkQUFBQUFBQUFBVlpDN3EwQUFBRWFCSWdJQUFBQ2tSQTM4NjBBQUFFYUJLTUpB
QUJnRndBQUFEaTlPd0FBQVI4RQpBUUVRSFFBQUFBQUFBSVVkQUFBQUFBQUFBVlkzKzYwQUFBRWZC
QXF4QUFDREZ3QUFRdTZ0QUFBQkh3U0lDQUFBQXBFUUFEamFPd0FBCkFTWUVBUUdRSFFBQUFBQUFB
S1FkQUFBQUFBQUFBVlpDN3EwQUFBRW1CSWdJQUFBQ2tSQTM4NjBBQUFFbUJLTUpBQURNRndBQUFE
ancKT3dBQUFTc0VBUUd3SFFBQUFBQUFBQ3NlQUFBQUFBQUFBVlkzR3E4QUFBRXJCTW15QUFEdkZ3
QUFOMGNJQUFBQkt3UW9BQUFBSlJnQQpBRGQ1c0FBQUFTc0U3QThBQUZ3WUFBQTNmckFBQUFFckJN
Z0VBQUNsR0FBQU40dXdBQUFCS3dSNlN3QUEyeGdBQUVPeFRBQUFBU3NFCk9RRUFBQUE0L0RzQUFB
RTFCQUVCTUI0QUFBQUFBQUJvSGdBQUFBQUFBQUZXTnhxdkFBQUJOUVRKc2dBQUpCa0FBRU9Rc0FB
QUFUVUUKT1FFQUFBQTREendBQUFFNkJBRUJjQjRBQUFBQUFBQWVJZ0FBQUFBQUFBRldOeDBCQUFB
Qk9nUkZUZ0FBUnhrQUFFTHVyUUFBQVRvRQpmUWdBQUFLUkVEcWZzQUFBQVdBRUlsQUFBQU9Sc0g4
MXdiQUFBQUZDQk5PeUFBQjlHUUFBTmQrd0FBQUJYQVFvQUFBQW9Ca0FBRFhsCnNBQUFBVjRFS0FB
QUFNTVpBQUExN2JBQUFBRmZCQ2dBQUFEbUdRQUFOVVdoQUFBQll3VFRzZ0FBQ1JvQUFDNzFzQUFB
QVYwRUtBQUEKQUQ1R2lBQUFZQUFBQUFGZ0JFWjBQZ0FBSm5UOEFBQUFDQUFBQUFBQUFBQUFSblkr
QUFBbWRQd0FBQUFJQUFBQUFBQUFBQUFBQUQwbgpQQUFBQVlBRUFRRWdJZ0FBQUFBQUFGRWlBQUFB
QUFBQUFWWTJSVHdBQUFHY0JBR2pDUUFBQWVBaUFBQUFBQUFBVVNNQUFBQUFBQUFCClZqZEZzUUFB
QVp3RUNyTUFBQVFiQUFBM2k3QUFBQUdjQkhwTEFBQTZHd0FBTjEyeEFBQUJuQVFWc3dBQVhSc0FB
RGRmc1FBQUFad0UKSnJNQUFKTWJBQUEzY2JFQUFBR2NCQ3V6QUFESkd3QUFOUTRNQUFBQm5nUXdz
d0FBL3hzQUFBQTJZendBQUFHd0JBRjZTd0FBQVdBagpBQUFBQUFBQXRpTUFBQUFBQUFBQlZqZUxz
QUFBQWJBRWVrc0FBQ01jQUFBM2pyRUFBQUd3Qk5rSkFBQnNIQUFBUSt1b0FBQUJzQVJHCmRBQUFB
QlB2UEFBQUJDVTFGSlE4QUFCRUFRQUFKVFlFQVI4Q0l3QUJGS0k4QUFCRUFRQUFKVGNFQ0JjQ0l3
QUJGTEk4QUFCRUFRQUEKSlRnRUJCTUNJd0FCRkwwOEFBQkVBUUFBSlRrRUFSSUNJd0FCRk04OEFB
QkVBUUFBSlRvRUF3OENJd0FCRk40OEFBQkVBUUFBSlRzRQpBUTRDSXdBQkZBRXlBQUJFQVFBQUpU
d0VEZ0FDSXdBQkFCRDRQQUFBTUNVd0VCZmNBQUFBQWlNQUFSRmREd0FBMlFrQUFDVXlBaU1BCkFo
RmpEd0FBL0FBQUFDVXpBaU1BQWhGL1BBQUE4UThBQUNVMEFpTUFBaEdNUEFBQWxVb0FBQ1U5QWlN
QUFoRlJNZ0FBcUFFQUFDVSsKQWlNQUFnQUtIRXNBQURiL1BBQUFBYlVFQVhwTEFBQUJ3Q01BQUFB
QUFBRG1Jd0FBQUFBQUFBRldONHV3QUFBQnRRUjZTd0FBb2h3QQpBRGVWc1FBQUFiVUVpQWNBQU9z
Y0FBQUFPQjg5QUFBQnZ3UUJBZkFqQUFBQUFBQUFFU1VBQUFBQUFBQUJWamVZc1FBQUFiOEVSVTRB
CkFEUWRBQUEzaTdBQUFBRy9CSHBMQUFCcUhRQUFONkt4QUFBQnZ3U2pDUUFBb0IwQUFEcTVzUUFB
QWNrRUlsQUFBQU9Sc0g4MXlyRUEKQUFIQkJEdXpBQUQ4SFFBQUx1eXhBQUFCeWdTakNRQUFMZ215
QUFBQnl3U2pDUUFBTGhPeUFBQUJ6QVNqQ1FBQU82R0hBQUJVSkFBQQpBQUFBQUZ3a0FBQUFBQUFB
QWNvRU55cXlBQUFCdWdRb0FBQUFNaDRBQUFBN29ZY0FBR3drQUFBQUFBQUFkeVFBQUFBQUFBQUJ5
Z1EzCktySUFBQUc2QkNnQUFBQlZIZ0FBQUFBMk9EMEFBQUhTQkFIK1RBQUFBU0FsQUFBQUFBQUFL
aVVBQUFBQUFBQUJWamRncXdBQUFkSUUKakU0QUFIZ2VBQUJDSlFrQUFBSFNCQ0pRQUFBQ2tSQTNN
TElBQUFIU0JNZ0VBQUNiSGdBQUFBNWZQUUFBQVFyelRBQUFFdmxNQUFCcApQUUFBQVFnNGRqMEFB
QUhYQkFFQk1DVUFBQUFBQUFBNkpRQUFBQUFBQUFGV054MEJBQUFCMXdSRlRnQUF2aDRBQUFBMml6
MEFBQUhkCkJBR2JBd0FBQVVBbEFBQUFBQUFBU3lVQUFBQUFBQUFCVmplWXNRQUFBZDBFUlU0QUFP
RWVBQUFBTnJROUFBQUI1QVFCUlU0QUFBRlEKSlFBQUFBQUFBUGNsQUFBQUFBQUFBVlkzTjdJQUFB
SGtCRkd6QUFBRUh3QUFOMGNJQUFBQjVBUkVBUUFBSng4QUFEZE5DQUFBQWVRRQpSQUVBQUVvZkFB
QTNPaHdBQUFIa0JMOWFBQUJ0SHdBQVJWaXlBQUFCNkFSY3N3QUFBb0pBUldPeUFBQUI2UVRicUFB
QUFRaEZycXNBCkFBSHFCTnVvQUFBQklEVjBzZ0FBQWVzRVJVNEFBS01mQUFBK0dJa0FBTEFBQUFB
QjdnUkVnd0VBQUFNT0Fmd0FBQUFJQUFBQUFBQUEKQUFCRWxBRUFBQU1PQWZ3QUFBQUlBQUFBQUFB
QUFBQUFBQTdOUFFBQUFRbzZUZ0FBRWtCT0FBRFhQUUFBQVFnMjVEMEFBQUh5QkFHTQpUZ0FBQVFB
bUFBQUFBQUFBQ2lZQUFBQUFBQUFCVmpjZEFRQUFBZklFUlU0QUFOa2ZBQUFBRGdJK0FBQUJDb0ZP
QUFBU2gwNEFBQW8rCkFBQUJDRFlWUGdBQUFmZ0VBYU1KQUFBQkVDWUFBQUFBQUFBZUpnQUFBQUFB
QUFGV041aXhBQUFCK0FSRlRnQUEvQjhBQUFBNE5UNEEKQUFIOUJBRUJJQ1lBQUFBQUFBQXFKZ0FB
QUFBQUFBRldOeDBCQUFBQi9RUkZUZ0FBSHlBQUFFSWxDUUFBQWYwRUlsQUFBQUtSRUFBNApRajRB
QUFFQ0JRRUJNQ1lBQUFBQUFBQ2NKd0FBQUFBQUFBRldOeDBCQUFBQkFnVkZUZ0FBUWlBQUFEcDRz
Z0FBQVFRRklsQUFBQU9SCnNINURnN0lBQUFFQ0JTNEJBQUF1anJJQUFBRUZCUzRCQUFBN28wOEFB
RlVtQUFBQUFBQUFQU2NBQUFBQUFBQUJCQVZIc2s4QUFIZ2cKQUFBQU8zS0hBQUE5SndBQUFBQUFB
SWduQUFBQUFBQUFBUVVGUEpTeUFBQW1maUpRQUFBRGtiQitBQUJJWHo0QUFBRUtCUUVpVUFBQQpB
UUZESFFFQUFBRUtCVVZPQUFBQUU0QStBQUF3Smc4UmNqNEFBUHdBQUFBbUVBSWpBQUVSZEQ0QUFQ
d0FBQUFtRUFJakNBRVJkajRBCkFQd0FBQUFtRUFJakVBRVJlRDRBQVB3QUFBQW1FQUlqR0FFUmVq
NEFBUHdBQUFBbUVRSWpJQUVSZlQ0QUFQd0FBQUFtRVFJaktBRUEKRXI5UEFBQ0FQZ0FBQVFnNGtq
NEFBQUVRQlFFQm9DZ0FBQUFBQUFDcUtBQUFBQUFBQUFGV040dXdBQUFCRUFVS3N3QUEwU0FBQURl
VwpzZ0FBQVJBRm1RY0FBUFFnQUFBM21MSUFBQUVRQmJRSEFBQVhJUUFBTjFhZ0FBQUJFQVhicUFB
QU9pRUFBQUJKcXo0QUFBRVpCUUdiCkF3QUFBYkFvQUFBQUFBQUE0eWdBQUFBQUFBQUJWZ0UzaTdB
QUFBRVpCV3NIQUFCZElRQUFONSt5QUFBQkdRV1pCd0FBZ0NFQUFEZVkKc2dBQUFSa0Z0QWNBQUtN
aEFBQTNWcUFBQUFFWkJjQUhBQURHSVFBQUFEYlFQZ0FBQVJ3RkFac0RBQUFCOENnQUFBQUFBQUR3
S1FBQQpBQUFBQUFGV040dXdBQUFCSEFWckJ3QUE2U0VBQURlZnNnQUFBUndGbVFjQUFCOGlBQUEz
bUxJQUFBRWNCYlFIQUFCVklnQUFOMWFnCkFBQUJIQVhicUFBQWl5SUFBRDRUQndBQVlBRUFBQUVm
QlQ0bWh3QUFJQUVBQUFFWkJUOHpod0FBd1NJQUFFbzNCd0FBOEFBQUFBRVoKQlFBQVBvcFFBQUNR
QVFBQUFTSUZOMWFnQUFBQkdRWEFCd0FBNUNJQUFEZVlzZ0FBQVJrRnRBY0FBQWNqQUFBM243SUFB
QUVaQlprSApBQUFxSXdBQU40dXdBQUFCR1FWckJ3QUFUU01BQUFBQU52RStBQUFCS1FVQktsSUFB
QUh3S1FBQUFBQUFBUG9wQUFBQUFBQUFBVlkzCnFySUFBQUVwQmErekFBQndJd0FBTjdLeUFBQUJL
UVhCc3dBQWt5TUFBRGU2c2dBQUFTa0ZZUUFBQUxZakFBQUFEaE0vQUFBQkF4cFMKQUFBS0lGSUFB
QklsVWdBQUhEOEFBQUVqTmlZL0FBQUJNZ1VCbXdNQUFBRUFLZ0FBQUFBQUFBc3FBQUFBQUFBQUFW
WTNpN0FBQUFFeQpCV3NIQUFEWkl3QUFONWl5QUFBQk1nVzBCd0FBL0NNQUFEZkJzZ0FBQVRJRks3
TUFBQjhrQUFBM1ZxQUFBQUV5QmNBSEFBQkNKQUFBCk4rMUNBQUFCTWdYR3N3QUFaU1FBQUFBMlBq
OEFBQUU1QlFFWFV3QUFBUkFxQUFBQUFBQUFHaW9BQUFBQUFBQUJWamVxc2dBQUFUa0YKcjdNQUFJ
Z2tBQUEzc3JJQUFBRTVCY0d6QUFDckpBQUFON3F5QUFBQk9RVmhBQUFBemlRQUFEZnRRZ0FBQVRr
RmFtb0FBUEVrQUFBQQpEbkEvQUFBQkF3ZFRBQUFLRFZNQUFCSVNVd0FBZno4QUFBRWhObzgvQUFB
QlB3VUJTd2dBQUFFZ0tnQUFBQUFBQUNvcUFBQUFBQUFBCkFWWTM0N0lBQUFFL0JlR3pBQUFVSlFB
QUFFdW9Qd0FBQWFVRkFUQXFBQUFBQUFBQWFpb0FBQUFBQUFBQlZuSlRBQUJNK0xJQUFBR2wKQlhT
MEFBQUJOeVVBQUV5ZHN3QUFBYVVGQzZVQUFBRnRKUUFBTngwQkFBQUJwUVZGVGdBQWtDVUFBQUEy
QWtBQUFBR3VCUUZGVGdBQQpBWEFxQUFBQUFBQUF4aW9BQUFBQUFBQUJWamNTQ0FBQUFhNEYxaklB
QU1ZbEFBQTNIUUVBQUFHdUJVVk9BQURwSlFBQU5hS3pBQUFCCnNRVkZUZ0FBTWlZQUFDNnZzd0FB
QWJBRmRMUUFBQUE0SGtBQUFBRzNCUUVCMENvQUFBQUFBQUFIS3dBQUFBQUFBQUZXTnhJSUFBQUIK
dHdYV01nQUFWU1lBQURlaXN3QUFBYmNGUlU0QUFIZ21BQUF1cjdNQUFBRzVCWFMwQUFBQU9EbEFB
QUFCdndVQkFSQXJBQUFBQUFBQQpKQ3NBQUFBQUFBQUJWamNTQ0FBQUFiOEYxaklBQUs0bUFBQUFO
bHRBQUFBQnhRVUJvd2tBQUFFd0t3QUFBQUFBQUVRckFBQUFBQUFBCkFWWTNIUUVBQUFIRkJVVk9B
QURSSmdBQUFEaDJRQUFBQWVRRkFRRlFLd0FBQUFBQUFEZ3NBQUFBQUFBQUFWWTN2N01BQUFIa0JZ
RzQKQUFEMEpnQUFOMHUwQUFBQjVBV0d1QUFBS2ljQUFEZFN0QUFBQWVRRmhyZ0FBR0FuQUFBM3Q2
SUFBQUhrQll1NEFBQ1dKd0FBUHZPRwpBQURBQVFBQUFlZ0ZSd0dIQUFETUp3QUFSdzJIQUFEdkp3
QUFSeG1IQUFBU0tBQUFBQUEyakVBQUFBSHlCUUdqQ1FBQUFVQXNBQUFBCkFBQUFUaXdBQUFBQUFB
QUJWamRQdFFBQUFmSUYyUWtBQURVb0FBQTNXTFVBQUFIeUJjZ0VBQUJZS0FBQU4zSzFBQUFCOGdY
MUFBQUEKZXlnQUFBQkFwa0FBQUFINkJRRkVBUUFBQVZBc0FBQUFBQUFBV3l3QUFBQUFBQUFCVmpi
S1FBQUFBZjhGQWNnRUFBQUJZQ3dBQUFBQQpBQUJ5TEFBQUFBQUFBQUZXTjRpMUFBQUIvd1VIdWdB
QW5pZ0FBQUEyM0VBQUFBRWNCZ0VvQUFBQUFZQXNBQUFBQUFBQTJTMEFBQUFBCkFBQUJWamVJdFFB
QUFSd0dCN29BQU1Fb0FBQTFvTFlBQUFFZUJpZ0FBQUFLS1FBQU9iQXNBQUFBQUFBQWd5MEFBQUFB
QUFBMW1iWUEKQUFFaEJzRUpBQUNIS1FBQU80aUdBQURETEFBQUFBQUFBSGd0QUFBQUFBQUFBU0lH
VGRXR0FBQURrYWgvUjVhR0FBQlJLUUFBUDZLRwpBQUM5S1FBQVA2NkdBQUFFS2dBQVRydUdBQUFF
QUFBQUFEL2loZ0FBT2lvQUFBQUFPWU10QUFBQUFBQUF5aTBBQUFBQUFBQTZ1N1lBCkFBRWtCbGE2
QUFBRGtaQi9BQUEyODBBQUFBRXJCZ0VvQUFBQUFlQXRBQUFBQUFBQStpNEFBQUFBQUFBQlZqZUl0
UUFBQVNzR0I3b0EKQUYwcUFBQTFvTFlBQUFFdEJpZ0FBQUNtS2dBQU9SQXVBQUFBQUFBQTR5NEFB
QUFBQUFBMW1iWUFBQUV3QnNFSkFBQklLd0FBTzRpRwpBQUFqTGdBQUFBQUFBTmd1QUFBQUFBQUFB
VEVHT3V1b0FBQUJEZ2FFdWdBQUE1R29memVadGdBQUFRVUd3UWtBQUJJckFBQTFvTFlBCkFBRUhC
dlVBQUFCK0t3QUFOVmFnQUFBQkNBYklCQUFBeFNzQUFFV2t0Z0FBQVFrR3lBUUFBQVFBQUFBQU5m
YTJBQUFCRWdiMUFBQUEKK3lzQUFBQUFBRGdNUVFBQUFUa0dBUUVBTHdBQUFBQUFBSEV2QUFBQUFB
QUFBVlkzZWJBQUFBRTVCbjI3QUFBZUxBQUFONyszQUFBQgpPUWFqQ1FBQVZDd0FBQUEyTGtFQUFB
RkJCZ0hJQkFBQUFZQXZBQUFBQUFBQTN5OEFBQUFBQUFBQlZqZUl0UUFBQVVFR0I3b0FBSjBzCkFB
QTF4TGNBQUFGR0JsTThBQURUTEFBQUFEZy9RUUFBQVYwR0FRSGdMd0FBQUFBQUFGNHdBQUFBQUFB
QUFWWTN6cmNBQUFGZEJvSzcKQUFBZUxRQUFOZEczQUFBQlh3YlFBQUFBVkMwQUFBQTJXVUVBQUFG
a0JnR2lFZ0FBQVdBd0FBQUFBQUFBb0RBQUFBQUFBQUFCVmplSQp0UUFBQVdRR0I3b0FBSGN0QUFB
QU5tNUJBQUFCZGdZQitBTUFBQUdnTUFBQUFBQUFBQVF4QUFBQUFBQUFBVlkxc0o0QUFBRjRCcjBF
CkFBRFFMUUFBTzIyR0FBQ2tNQUFBQUFBQUFPMHdBQUFBQUFBQUFYZ0dQM3VHQUFDdExRQUFBQUE0
alVFQUFBRi9CZ0VCRURFQUFBQUEKQUFCRE1RQUFBQUFBQUFGV04vKzNBQUFCZndiNEF3QUE4eTBB
QUFBNHFVRUFBQUdFQmdFQlVERUFBQUFBQUFCOE1RQUFBQUFBQUFGVwpOOU9oQUFBQmhBYjRBd0FB
UEM0QUFEY3FzZ0FBQVlRR2pUOEFBSVV1QUFBQU5zbEJBQUFCaVFZQlpqTUFBQUdBTVFBQUFBQUFB
SW94CkFBQUFBQUFBQVZZM0g1OEFBQUdKQm1ZekFBRE9MZ0FBQURicFFRQUFBWTRHQWJoWkFBQUJr
REVBQUFBQUFBQ2tNUUFBQUFBQUFBRlcKTncrNEFBQUJqZ2FVdlFBQThTNEFBRGMzdVFBQUFZNEdS
VTRBQUJRdkFBQTNRYmtBQUFHT0JzZ0VBQUJkTHdBQUFCTElCQUFBK2tFQQpBQUZ4RDYxWkFBQUJR
Z0FBQVE0QlFBcENBQUFCbFFZQkJWb0FBQUd3TVFBQUFBQUFBTWN4QUFBQUFBQUFBVllTUkFFQUFD
TkNBQUFCCk1oTGtXUUFBTmtJQUFBRnJFdTlaQUFCUVFnQUFBV3dTK2xrQUFHVkNBQUFCTVVseFFn
QUFBWjBHQWZJTUFBQUIwREVBQUFBQUFBQVcKTWdBQUFBQUFBQUZXQVRmSm9RQUFBWjBHdGdZQUFJ
QXZBQUF1VHJrQUFBR2ZCcmk5QUFBQU5vTkNBQUFCcWdZQmgxc0FBQUVnTWdBQQpBQUFBQU0weUFB
QUFBQUFBQVZZM3lhRUFBQUdxQnJZR0FBREpMd0FBTG1TNUFBQUJyQWFIV3dBQU94QmFBQUIwTWdB
QUFBQUFBSjh5CkFBQUFBQUFBQWJJR044bWhBQUFCblFhMkJnQUEveThBQUFBQUR0QkNBQUFCQ3JS
YUFBQVN1bG9BQU4xQ0FBQUJDQkFSUXdBQUNDY1IKRUJmY0FBQUFBaU1BQVNLZVFnQUF0Z1lBQUNk
QXFFSUFBQUVoTVF3QUFQSU1BQUFuUkJnaHRrSUFBTFlHQUFBblNBd2h4RUlBQUxZRwpBQUFuVEF3
aE9od0FBTDlhQUFBblVBd2k3VUlBQUNJS0FBQW5XL1ZDQUFBQklnRkRBQUNqQ1FBQUoyQUhRd0FB
QVFBS3lsb0FBQTRwClF3QUFBUkpDV3dBQVBFTUFBQUVQQ2toYkFBQUxUa01BQUJBQnBRWU1IUUVB
QUQxYkFBQUJwZ1lDSXdBQkRCdERBQUJUV3dBQUFhY0cKQWlNSUFRQUtXRnNBQUErQ1d3QUFhRU1B
QUFGV0FUaUFRd0FBQWJrR0FRSFFNZ0FBQUFBQUFQMHlBQUFBQUFBQUFWWTNaTGtBQUFHNQpCb2Ri
QUFBaU1BQUFBRGljUXdBQUFjTUdBUUVBTXdBQUFBQUFBSEl6QUFBQUFBQUFBVlkzWkxrQUFBSERC
b2RiQUFCWU1BQUFOeDBCCkFBQUJ3d1pGVGdBQWpqQUFBRUx1clFBQUFjTUdmUWdBQUFLUkVEVnR1
UUFBQWNVR3pyMEFBTmN3QUFBQU5yZERBQUFCekFZQmFGd0EKQUFHQU13QUFBQUFBQUZNMEFBQUFB
QUFBQVZZM2s3a0FBQUhNQmdWYUFBRDZNQUFBTmUxQ0FBQUJ6d1lpQ2dBQVF6RUFBQUFPMjBNQQpB
QUVLWFZ3QUFBOWpYQUFBN0VNQUFBRmNBVGI3UXdBQUFkY0dBV2hjQUFBQllEUUFBQUFBQUFBR05R
QUFBQUFBQUFGV05lMUNBQUFCCjJnWWlDZ0FBWmpFQUFBQTRJRVFBQUFIaUJnRUJFRFVBQUFBQUFB
QWlOUUFBQUFBQUFBRldOeDBCQUFBQjRnWm9YQUFBaVRFQUFBQTIKTmtRQUFBSG5CZ0cyQmdBQUFU
QTFBQUFBQUFBQVFqVUFBQUFBQUFBQlZqY2RBUUFBQWVjR2FGd0FBS3d4QUFBQU9FNUVBQUFCN0FZ
QgpBVkExQUFBQUFBQUFhRFVBQUFBQUFBQUJWamNkQVFBQUFld0dhRndBQU04eEFBQTNNUXdBQUFI
c0J2SU1BQUR5TVFBQUFEWmlSQUFBCkFmRUdBZklNQUFBQmNEVUFBQUFBQUFDQ05RQUFBQUFBQUFG
V054MEJBQUFCOFFab1hBQUFPeklBQUFBNGRrUUFBQUgyQmdFQmtEVUEKQUFBQUFBQ29OUUFBQUFB
QUFBRldOeDBCQUFBQjlnWm9YQUFBWGpJQUFEYzZIQUFBQWZZR3Yxb0FBSUV5QUFBQU5vOUVBQUFC
K3dZQgp2MW9BQUFHd05RQUFBQUFBQU1JMUFBQUFBQUFBQVZZM0hRRUFBQUg3Qm1oY0FBREtNZ0FB
QUQyb1JBQUFBUUFIQVFIUU5RQUFBQUFBCkFObzFBQUFBQUFBQUFWWTR4RVFBQUFFRkJ3RUI0RFVB
QUFBQUFBQ0pOd0FBQUFBQUFBRldOekVNQUFBQkJRZnlEQUFBN1RJQUFEY2QKQVFBQUFRVUhSVTRB
QUJBekFBQTNucmtBQUFFRkIwOEZBQUJaTXdBQU9xUzVBQUFCRFFjaVVBQUFBNUdRZnpYWG9BQUFB
UWNIVWEwQQpBS0l6QUFBMXRia0FBQUVPQjk2OUFBREZNd0FBTmZHNUFBQUJEd2Z1dlFBQTZETUFB
RG1RTmdBQUFBQUFBQ2MzQUFBQUFBQUFPdnE1CkFBQUJFUWQ5Q0FBQUE1SEFmZ0FBT085RUFBQUJK
d2NCQVpBM0FBQUFBQUFBQnpnQUFBQUFBQUFCVmpka3VRQUFBU2NIT0w0QUFBczAKQUFBM0ZBRUFB
QUVuQjJvQUFBQlVOQUFBTngwQkFBQUJKd2RoQUFBQWlqUUFBRFVmdWdBQUFTa0hxUUFBQU1BMEFB
QTFMN29BQUFFeQpCejIrQUFEak5BQUFBRGdaUlFBQUFUWUhBUUVnT0FBQUFBQUFBTFE0QUFBQUFB
QUFBVlkzWkxrQUFBRTJCemkrQUFCdk5RQUFOeFFCCkFBQUJOZ2RxQUFBQXBUVUFBRGNkQVFBQUFU
WUhZUUFBQU1nMUFBQTFIN29BQUFFNEI2a0FBQUFoTmdBQVR5QUNBQUExWUxvQUFBRTUKQjBpK0FB
RHJOUUFBVC9BQkFBQTVhVGdBQUFBQUFBQzBPQUFBQUFBQUFEVXZ1Z0FBQVRzSFBiNEFBR28yQUFB
QUFBQUFOa1pGQUFBQgpUUWNCTW1BQUFBSEFPQUFBQUFBQUFCQTVBQUFBQUFBQUFWWTNFZ2dBQUFG
TkI5WXlBQUNOTmdBQU5SMEJBQUFCVHdjeVlBQUExallBCkFEVmt1Z0FBQVZJSHlBUUFBUGsyQUFB
QUMzNUZBQUE0QVVnSERCSUlBQURXTWdBQUFVa0hBaU1BQVF4clJRQUFJbEFBQUFGS0J3SWoKQ0FF
QUNnTmdBQUFQTFdBQUFKOUZBQUFCYndFNHdVVUFBQUZZQndFQkVEa0FBQUFBQUFBYU9RQUFBQUFB
QUFGV054MEJBQUFCV0FjeQpZQUFBSERjQUFBQTQ1MFVBQUFGdEJ3RUJJRGtBQUFBQUFBQU5QUUFB
QUFBQUFBRldOeDBCQUFBQmJRY3lZQUFBUHpjQUFEZDN1Z0FBCkFXMEg5UUFBQUs0M0FBQTZpYm9B
QUFGMEJ5SlFBQUFEa2FCL05aYTZBQUFCY0FmOEFBQUEwVGNBQURWa3VnQUFBWThIeUFRQUFDQTYK
QUFCUHdBSUFBRHFrdWdBQUFYb0hpQWdBQUFPUmdIODFzYm9BQUFGN0Ivd0FBQUFjT0FBQU5iNjZB
QUFCZmdmOEFBQUFaemdBQURYTgp1Z0FBQVgwSC9BQUFBSW80QUFBNjI3b0FBQUY4Qi93QUFBQURr
Zmg5THVtNkFBQUJmd2VJQ0FBQUx2SzZBQUFCaFFjdUFRQUFPNUtGCkFBQjlPUUFBQUFBQUFJTTVB
QUFBQUFBQUFYOEhVSitGQUFBRGtZQi9BRHQ1aFFBQWd6a0FBQUFBQUFDSk9RQUFBQUFBQUFHQUJ6
eHgKdWdBQUs1eUlDQUFBQTVHQWZ6SDd1Z0FBSzMvOEFBQUFyVGdBQURIOXVnQUFLMy84QUFBQTVU
Z0FBREdVQVFBQUszLzhBQUFBSFRrQQpBREdEQVFBQUszLzhBQUFBVlRrQUFBQTc3NFVBQUlrNUFB
QUFBQUFBamprQUFBQUFBQUFCZkFkUS9JVUFBQU9SZ0g4QU93aUdBQUNPCk9RQUFBQUFBQUpVNUFB
QUFBQUFBQVhzSFVCV0dBQUFEa1lCL0FENGdoUUFBZ0FJQUFBR0ZCelgvdWdBQUFXRUh3UWtBQU1V
NUFBQSsKZVlRQUFGQUNBQUFCYWdjOGNib0FBQ3VNaUFnQUFBS1JVRGVEQVFBQUF3SUIvQUFBQUkw
NUFBQTNsQUVBQUFNQ0Fmd0FBQURvT1FBQQpBQUFBQURnVFJnQUFBWk1IQVFFUVBRQUFBQUFBQUdn
OUFBQUFBQUFBQVZZM0VnZ0FBQUdUQjlZeUFBQkRPZ0FBUWdlN0FBQUJrd2VJCkNBQUFBcEVRT2hD
N0FBQUJsZ2RSclFBQUFwRndPaGE3QUFBQmx3ZDlDQUFBQXBGUU9oQzdBQUFCbGdkUnJRQUFBcEZ3
T2hDN0FBQUIKbGdkUnJRQUFBcEZ3TldTNkFBQUJsUWNPdEFBQVpqb0FBQUEySjBZQUFBR2VCd0Z4
S1FBQUFYQTlBQUFBQUFBQWpqMEFBQUFBQUFBQgpWamNodXdBQUFaNEgwTUFBQUlrNkFBQTNrN2tB
QUFHZUJ3VmFBQURTT2dBQUFFQS9SZ0FBQWFRSEFTRXFBQUFCa0QwQUFBQUFBQUNiClBRQUFBQUFB
QUFGV05scEdBQUFCcVFjQjJXTUFBQUdnUFFBQUFBQUFBRGMrQUFBQUFBQUFBVlkzdjdNQUFBR3BC
NEc0QUFBYk93QUEKT2tTOUFBQUJyd2Zid0FBQUFwRndPbHU5QUFBQnRRZlpZd0FBQXBGdk9rUzlB
QUFCcndmYndBQUFBcEZ3T2tTOUFBQUJyd2Zid0FBQQpBcEZ3T2x1OUFBQUJ0UWZaWXdBQUFwRnZM
bU85QUFBQnF3Znl3QUFBQUJMN0JRQUFia1lBQUFGcU9IUkdBQUFCdkFjQkFVQStBQUFBCkFBQUFn
RDRBQUFBQUFBQUJWamVFdlFBQUFid0hEY0lBQUQ0N0FBQTNWYjRBQUFHOEI5a0pBQUNIT3dBQUFE
YVNSZ0FBQWNFSEFVUUIKQUFBQmdENEFBQUFBQUFDWFBnQUFBQUFBQUFGV04xNitBQUFCd1FkRUFR
QUEwRHNBQUFBMndFWUFBQUhIQndISUJBQUFBYUErQUFBQQpBQUFBdEQ0QUFBQUFBQUFCVmpkMm5n
QUFBY2NISE1JQUFCazhBQUExaDc0QUFBSExCeWZDQUFBOFBBQUFBRGpjUmdBQUFjOEhBUUhBClBn
QUFBQUFBQVBnK0FBQUFBQUFBQVZZM2RwNEFBQUhQQnh6Q0FBQmZQQUFBTjRlK0FBQUJ6d2ZJQkFB
QWxUd0FBQUE0K0VZQUFBSFgKQndFQkFEOEFBQUFBQUFBVFB3QUFBQUFBQUFGV042VytBQUFCMXdm
SUJBQUF1RHdBQUFBNEcwY0FBQUhjQndFQklEOEFBQUFBQUFBbQpQd0FBQUFBQUFBRldONGUrQUFB
QjNBZklCQUFBQVQwQUFBQTRSa2NBQUFIakJ3RUJNRDhBQUFBQUFBRE5Qd0FBQUFBQUFBRldOM3Vw
CkFBQUI0d2NrUlFBQUpEMEFBRGUxdmdBQUFlTUgrQU1BQUcwOUFBQTN2NzRBQUFIakIwTENBQUNR
UFFBQU91QytBQUFCNVFkTndnQUEKQXBGUU91cStBQUFCNWdkTndnQUFBcEZBTmZhK0FBQUI1d2Rx
YWdBQXN6MEFBQUE0WVVjQUFBSHNCd0VCMEQ4QUFBQUFBQUNzUUFBQQpBQUFBQUFGV04zdXBBQUFC
N0Fja1JRQUExajBBQURjSXZ3QUFBZXdIK0FNQUFBdytBQUE2SWI4QUFBSHlCMVNmQUFBQ2tVZzZN
cjhBCkFBSHpCMVNmQUFBQ2tVQTFSTDhBQUFIdUIycHFBQUJDUGdBQU5mYStBQUFCN3dkdWhBQUFa
VDRBQURWZXZ3QUFBZlFIYW1vQUFJZysKQUFBQU5vbEhBQUFCL1FjQlN6TUFBQUd3UUFBQUFBQUFB
UDVCQUFBQUFBQUFBVlkzZTZrQUFBSDlCeVJGQUFDclBnQUFOM1cvQUFBQgovUWRtTXdBQXpqNEFB
RGUxdmdBQUFmMEgrQU1BQUJjL0FBQTN2NzRBQUFIOUIwTENBQUJOUHdBQU5ZRy9BQUFCL3dkTE13
QUFnejhBCkFEN3hCZ0FBVUFNQUFBRUZDRkhDaEFBQUlBTUFBQUhwUDg2RUFBRGNQd0FBVXNZREFB
RHdBZ0FBQWVrQUFFK3dBd0FBTlltL0FBQUIKQndqNEF3QUEvejhBQURYNW5RQUFBUWdJWmpNQUFF
VkFBQUErbURNQUFJQURBQUFCQ1FneDhKMEFBQUhwU3pNQUFLWS9BQUF4K1owQQpBQUhwWmpNQUFD
SkFBQUFBQUFBNHBFY0FBQUVhQ0FFQkFFSUFBQUFBQUFCUVFnQUFBQUFBQUFGV054SUlBQUFCR2dq
V01nQUFhRUFBCkFEZVl2d0FBQVJvSUtBQUFBSjVBQUFCVHpBWUFBQk5DQUFBQUFBQUFLa0lBQUFB
QUFBQUJIQWdBT0xWSEFBQUJKQWdCQVZCQ0FBQUEKQUFBQTUwUUFBQUFBQUFBQlZqY1NDQUFBQVNR
STFqSUFBTlZBQUFCQ283OEFBQUVrQ0lnSUFBQUNrUkJDcnI4QUFBRWtDSWdJQUFBQwprVEE2dmI4
QUFBRXJDRm5DQUFBRGtmQitPY05DQUFBQUFBQUEra0lBQUFBQUFBQlR6QVlBQU1OQ0FBQUFBQUFB
MmtJQUFBQUFBQUFCCkp3Z0FPNnVFQUFBQ1F3QUFBQUFBQUhSREFBQUFBQUFBQVMwSU4rNnRBQUFC
SHdobHdnQUFDMEVBQUQ1NWhBQUE0QU1BQUFFaENEeHgKdWdBQUs0eUlDQUFBQTVHd2Z3QlRlWVFB
QUdaREFBQUFBQUFBYTBNQUFBQUFBQUFCSVFnQVBxdUVBQUJBQkFBQUFTNElOKzZ0QUFBQgpId2hs
d2dBQUxrRUFBRDU1aEFBQUVBUUFBQUVoQ0R4eHVnQUFLNHlJQ0FBQUE1R3dmd0JUZVlRQUFPRkRB
QUFBQUFBQTZFTUFBQUFBCkFBQUJJUWdBVTVLRkFBRDlRd0FBQUFBQUFBRkVBQUFBQUFBQUFURUlV
M21GQUFBYVJBQUFBQUFBQUI5RUFBQUFBQUFBQVRJSVV3aUcKQUFBclJBQUFBQUFBQURKRUFBQUFB
QUFBQVRVSVU1S0VBQUE3UkFBQUFBQUFBRUJFQUFBQUFBQUFBVFVJVTNtRUFBQm1SQUFBQUFBQQpB
R3RFQUFBQUFBQUFBVG9JVTh3R0FBQ0lSQUFBQUFBQUFKOUVBQUFBQUFBQUFVRUlBRGpNUndBQUFV
UUlBUUh3UkFBQUFBQUFBQjVGCkFBQUFBQUFBQVZZM2ViQUFBQUZFQ093UEFBQlJRUUFBQURqZ1J3
QUFBVWtJQVFFZ1JRQUFBQUFBQUU1RkFBQUFBQUFBQVZZMXdyOEEKQUFGTkNNRUdBQUIwUVFBQUFE
WUdTQUFBQWFrSUFXcHFBQUFCVUVVQUFBQUFBQUNzUlFBQUFBQUFBQUZXTjllaEFBQUJxUWdCTlFB
QQpsMEVBQURmR3Z3QUFBYWtJalQ4QUFMcEJBQUE2SEtvQUFBR3RDTUFIQUFBQ2tYQTYwTDhBQUFH
dUNHckNBQUFDa1dnNjJMOEFBQUd2CkNNQUhBQUFDa1dBNjVMOEFBQUd3Q0dwcUFBQUNrVmc2SEtv
QUFBR3RDTUFIQUFBQ2tYQTYwTDhBQUFHdUNHckNBQUFDa1dnNjJMOEEKQUFHdkNNQUhBQUFDa1dB
NjVMOEFBQUd3Q0dwcUFBQUNrVmcxZHA0QUFBR3JDQnpDQUFEd1FRQUFBQTQxU0FBQUFRTmFhZ0FB
Q21CcQpBQUFTWldvQUFFUklBQUFCdFRaVVNBQUFBYndJQVFFMUFBQUJJRWNBQUFBQUFBRGFSd0FB
QUFBQUFBRldOMERBQUFBQnZBaHFhZ0FBCk5VUUFBRGZHdndBQUFid0lqVDhBQUZoRUFBQTZIS29B
QUFHK0NNQUhBQUFDa1dBNjBMOEFBQUcvQ0dyQ0FBQUNrVmc2Mkw4QUFBSEEKQ01BSEFBQUNrVkE2
NUw4QUFBSEJDR3BxQUFBQ2tVZzZIS29BQUFHK0NNQUhBQUFDa1dBNjBMOEFBQUcvQ0dyQ0FBQUNr
Vmc2MEw4QQpBQUcvQ0dyQ0FBQUNrVmc2Mkw4QUFBSEFDTUFIQUFBQ2tWQTY1TDhBQUFIQkNHcHFB
QUFDa1VnMWRwNEFBQUhHQ0J6Q0FBQjdSQUFBCkx0ZWhBQUFCekFnQk5RQUFBRGFCU0FBQUFkSUlB
V3BxQUFBQndFa0FBQUFBQUFCblNnQUFBQUFBQUFGV04vQ2RBQUFCMGdpb2JRQUEKWTBrQUFEZkd2
d0FBQWRJSWpUOEFBSVpKQUFBNkhLb0FBQUhXQ01BSEFBQUNrV0E2MEw4QUFBSFhDR3JDQUFBQ2tW
ZzYyTDhBQUFIWQpDTUFIQUFBQ2tWQTY5NzhBQUFIYkNIbkNBQUFDa1VnNkhLb0FBQUhXQ01BSEFB
QUNrV0E2MEw4QUFBSFhDR3JDQUFBQ2tWZzYyTDhBCkFBSFlDTUFIQUFBQ2tWQTE4NThBQUFIVUNC
bWdBQUM4U1FBQU5WYkFBQUFCM0FoQ3dnQUEzMGtBQURVTndBQUFBZUFJK0FNQUFCVksKQUFBQU5y
RklBQUFCNkFnQnFHMEFBQUZ3U2dBQUFBQUFBRVpMQUFBQUFBQUFBVlkzUU1BQUFBSG9DR3BxQUFB
NFNnQUFOOGEvQUFBQgo2QWlOUHdBQVcwb0FBRG9jcWdBQUFlb0l3QWNBQUFLUllEclF2d0FBQWVz
SWFzSUFBQUtSV0RyWXZ3QUFBZXdJd0FjQUFBS1JVRHBXCndBQUFBZTBJUXNJQUFBS1JTRG9Od0FB
QUFlNEkrQU1BQUFLUlFEb2NxZ0FBQWVvSXdBY0FBQUtSWURyUXZ3QUFBZXNJYXNJQUFBS1IKV0Ry
UXZ3QUFBZXNJYXNJQUFBS1JXRHJZdndBQUFld0l3QWNBQUFLUlVEcFd3QUFBQWUwSVFzSUFBQUtS
U0RvTndBQUFBZTRJK0FNQQpBQUtSUURYem53QUFBZk1JR2FBQUFINUtBQUExOEowQUFBRURDYWh0
QUFDaFNnQUFPZDlLQUFBQUFBQUFCVXNBQUFBQUFBQTY5NzhBCkFBSDdDSG5DQUFBRGtiaC9PbGJB
QUFBQjdRaEN3Z0FBQXBGSU92ZS9BQUFCK3doNXdnQUFBNUc0ZndBQUpOOUlBQUFCRUFwNmJRQUEK
RVBWSUFBQVFLQjhRRjl3QUFBQUNJd0FCRVZBMEFBQ0JiUUFBS0NJQ0l3QUJBQXFHYlFBQU9BTkpB
QUFCR2drQkFWQkxBQUFBQUFBQQp0VXNBQUFBQUFBQUJWamR5d0FBQUFSb0psd1VBQU1SS0FBQTFX
SjRBQUFFY0NiMEVBQUFkU3dBQU8yMkdBQUJhU3dBQUFBQUFBS0ZMCkFBQUFBQUFBQVJ3Sk5kbTNB
QUFCYndhMXV3QUEra29BQUFBQU5qQkpBQUFCSXdrQmx3VUFBQUhBU3dBQUFBQUFBREZNQUFBQUFB
QUEKQVZZMVdKNEFBQUVsQ2IwRUFBQmpTd0FBTzIyR0FBREVTd0FBQUFBQUFBMU1BQUFBQUFBQUFT
VUpOZG0zQUFBQmJ3YTF1d0FBUUVzQQpBQUFBTmw1SkFBQUJMQWtCK0FNQUFBRkFUQUFBQUFBQUFF
cE1BQUFBQUFBQUFWWTM4NThBQUFFc0NSbWdBQUNHU3dBQUFEWjVTUUFBCkFURUpBV1l6QUFBQlVF
d0FBQUFBQUFCYVRBQUFBQUFBQUFGV04vT2ZBQUFCTVFrWm9BQUFxVXNBQUFBMmowa0FBQUUyQ1FG
TE13QUEKQVdCTUFBQUFBQUFBYWt3QUFBQUFBQUFCVmpmem53QUFBVFlKR2FBQUFNeExBQUFBTnE1
SkFBQUJPd2tCK0FNQUFBRndUQUFBQUFBQQpBSHBNQUFBQUFBQUFBVlkzODU4QUFBRTdDUm1nQUFE
dlN3QUFBRGpUU1FBQUFVQUpBUUdBVEFBQUFBQUFBSXBNQUFBQUFBQUFBVlkzCjg1OEFBQUZBQ1Jt
Z0FBQVNUQUFBTnczQUFBQUJRQW40QXdBQU5Vd0FBQUE0N2trQUFBRkZDUUVCa0V3QUFBQUFBQUN2
VEFBQUFBQUEKQUFGV04wbWVBQUFCUlFsZ253QUFXRXdBQURmWG9RQUFBVVVKZ1o4QUFLRk1BQUFB
UUFsS0FBQUJUQWtCNGpVQUFBR3dUQUFBQUFBQQpBTVJNQUFBQUFBQUFBVlkySjBvQUFBRlJDUUVu
Y0FBQUFkQk1BQUFBQUFBQUFrMEFBQUFBQUFBQlZqZDh3QUFBQVZFSmo4SUFBTmRNCkFBQTF1c0FB
QUFGVENhWENBQUFnVFFBQU5mVEFBQUFCVkFtNndnQUFRMDBBQUFBT1Qwb0FBQUVLSEhBQUFCSWlj
QUFBWUVvQUFBRVkKT0hWS0FBQUJXUWtCQVJCTkFBQUFBQUFBTmswQUFBQUFBQUFCVmpmWG9RQUFB
VmtKZ1o4QUFHWk5BQUEzRXNFQUFBRlpDWnNEQUFDSgpUUUFBQURhWlNnQUFBVjRKQVpjRkFBQUJR
RTBBQUFBQUFBQktUUUFBQUFBQUFBRldOOWVoQUFBQlhna2N3Z0FBdjAwQUFBQTR3RW9BCkFBRmpD
UUVCVUUwQUFBQUFBQUJhVFFBQUFBQUFBQUZXTjllaEFBQUJZd21CbndBQTRrMEFBRGNYd1FBQUFX
TUpsd1VBQUFWT0FBQUEKUU9aS0FBQUJhQWtCL1hBQUFBRmdUUUFBQUFBQUFHOU5BQUFBQUFBQUFW
WVN5QVFBQVBsS0FBQUJHellDU3dBQUFYSUpBYlp4QUFBQgpjRTBBQUFBQUFBREhUUUFBQUFBQUFB
RldOMFdoQUFBQmNnbW5jZ0FBS0U0QUFEZmtud0FBQVhJSnhjSUFBRjVPQUFBMU9NRUFBQUYwCkNY
QnhBQUNuVGdBQU5lbWZBQUFCZ2dtMmNRQUEzVTRBQUFBQ0lVc0FBQVlCQ21seEFBQUNMVXNBQUFV
SUVuVnhBQUE3U3dBQUFSNEwKUTBzQUFCQUJiUWtNRzBzQUFIQnhBQUFCYmdrQ0l3QUJEQ1pMQUFC
OGNRQUFBVzhKQWlNSUFRQUtoM0VBQUEreGNRQUFXRXNBQUFHcwpBVGh1U3dBQUFZZ0pBUUhRVFFB
QUFBQUFBTzlOQUFBQUFBQUFBVlkzUjhFQUFBR0lDYlp4QUFBQVR3QUFBRGFJU3dBQUFZNEpBWnNE
CkFBQUI4RTBBQUFBQUFBQVNUZ0FBQUFBQUFBRldOMGZCQUFBQmpnbTJjUUFBTms4QUFBQTJva3NB
QUFHVUNRR2JBd0FBQVNCT0FBQUEKQUFBQVJrNEFBQUFBQUFBQlZqZEh3UUFBQVpRSnRuRUFBR3hQ
QUFBMWdxa0FBQUdXQ2NnRUFBQ2lUd0FBQURhL1N3QUFBWnNKQWFkeQpBQUFCVUU0QUFBQUFBQUJ3
VGdBQUFBQUFBQUZXTjBmQkFBQUJtd20yY1FBQXhVOEFBRGU2VEFBQUFac0owY0lBQU9oUEFBQUFB
Mmx4CkFBQUtvbklBQURibFN3QUFBYUVKQWJaeEFBQUJjRTRBQUFBQUFBQ3hUZ0FBQUFBQUFBRldO
MWpCQUFBQm9RbW5jZ0FBSGxBQUFEZTYKVEFBQUFhRUoyNmdBQUdkUUFBQTE2WjhBQUFHakNiWnhB
QUN3VUFBQUFEWVNUQUFBQWFrSkFiaFpBQUFCd0U0QUFBQUFBQUFQVHdBQQpBQUFBQUFGV05XYkJB
QUFCckFuaHdnQUEwMUFBQURXQ3FRQUFBYXNKeUFRQUFQWlFBQUFBUURWTUFBQUJ2d2tCeUFRQUFB
RVFUd0FBCkFBQUFBQnBQQUFBQUFBQUFBVlpBVUV3QUFBSEVDUUdiQXdBQUFTQlBBQUFBQUFBQU5V
OEFBQUFBQUFBQlZqWjdUQUFBQWVBSkFVWjAKQUFBQlFFOEFBQUFBQUFBUlVBQUFBQUFBQUFGV041
ZkJBQUFCNEFuWkNRQUFQMUVBQURmdFFnQUFBZUFKN2NJQUFIVlJBQUExdVFZQQpBQUhpQ2RBQUFB
RHhVUUFBUSt1b0FBQUI0QWxHZEFBQU81RUdBQUJrVHdBQUFBQUFBTTlQQUFBQUFBQUFBZUlKTy9T
QUFBQmtUd0FBCkFBQUFBSzFQQUFBQUFBQUFBZG9KUHdLQkFBQ3JVUUFBUHc2QkFBRE9VUUFBQUFB
QUU4Rk1BQUFRS1FvUnNVd0FBQ0VxQUFBcEN3SWoKQUFFUnVrd0FBQ0VxQUFBcERBSWpDQUVBRWg5
MEFBREtUQUFBQVEwNDBrd0FBQUhxQ1FFQklGQUFBQUFBQUFEVVVBQUFBQUFBQUFGVwpONlhCQUFB
QjZna0Z3d0FBRkZJQUFEZnRRZ0FBQWVvSklnb0FBRXBTQUFCRHZjRUFBQUhxQ1RrQkFBQStrUVlB
QUhBRUFBQUI3QWs3CjlJQUFBRWRRQUFBQUFBQUFrRkFBQUFBQUFBQUIyZ2sxUmFFQUFBSExDZGtK
QUFDQVVnQUFOWkRCQUFBQnpna2tLd0FBbzFJQUFBQUEKQURqdFRBQUFBZThKQVFIZ1VBQUFBQUFB
QUFSUkFBQUFBQUFBQVZaVGtRWUFBUFJRQUFBQUFBQUErMUFBQUFBQUFBQUI4Z2tBTmdoTgpBQUFC
OVFrQitBTUFBQUVRVVFBQUFBQUFBSHBSQUFBQUFBQUFBVlkxeWNFQUFBSDRDV3BxQUFER1VnQUFO
ZGJCQUFBQi9BbjRBd0FBCjZWSUFBQUEyTDAwQUFBRUpDZ0dpRWdBQUFZQlJBQUFBQUFBQXdGRUFB
QUFBQUFBQlZqZml3UUFBQVFrS0FNUUFBQjlUQUFBQU5rUk4KQUFBQmNRb0I5QUVBQUFIQVVRQUFB
QUFBQUFwVkFBQUFBQUFBQVZZM0FBd0FBQUZ4Q3FkeUFBQlZVd0FBTmUzQ0FBQUJjd29GeEFBQQpp
MU1BQUR0K2dBQUFTVlFBQUFBQUFBRFRWQUFBQUFBQUFBR25DaitNZ0FBQXdWTUFBRHVaZ0FBQVhW
UUFBQUFBQUFEVFZBQUFBQUFBCkFBRnRDaituZ0FBQTkxTUFBQUFBQUVCTlRRQUFBYXNLQVRkMkFB
QUJFRlVBQUFBQUFBQXZWUUFBQUFBQUFBRldEbk5OQUFBQkNpeDIKQUFBU01uWUFBSVZOQUFBQk4w
Q1hUUUFBQWJFS0FUZDJBQUFCTUZVQUFBQUFBQUJQVlFBQUFBQUFBQUZXUU05TkFBQUJ1UW9CbXdN
QQpBQUZRVlFBQUFBQUFBR1ZWQUFBQUFBQUFBVlpBODAwQUFBSEJDZ0diQXdBQUFYQlZBQUFBQUFB
QWhWVUFBQUFBQUFBQlZqZ2ZUZ0FBCkFjZ0tBUUdRVlFBQUFBQUFBSnBWQUFBQUFBQUFBVlkzUmFF
QUFBSElDdE95QUFBYVZBQUFOL0xDQUFBQnlBb1B4QUFBUFZRQUFFTHUKclFBQUFjZ0tmUWdBQUFL
UkVEZjV3Z0FBQWNnSy9BQUFBR0JVQUFBM0JjTUFBQUhJQ3Z3QUFBQ0RWQUFBQURnMlRnQUFBYzhL
QVFHZwpWUUFBQUFBQUFMNVZBQUFBQUFBQUFWWTMxNkVBQUFIUENoekNBQUNtVkFBQUFEWllUZ0FB
QWQ0S0FhTUpBQUFCd0ZVQUFBQUFBQURjClZRQUFBQUFBQUFGV054TERBQUFCM2dxNGVBQUF5VlFB
QUFBMmJFNEFBQUhqQ2dHakNRQUFBZUJWQUFBQUFBQUE5bFVBQUFBQUFBQUIKVmpjU3d3QUFBZU1L
dUhnQUFPeFVBQUFBTm45T0FBQUI2QW9CcGlrQUFBRUFWZ0FBQUFBQUFCaFdBQUFBQUFBQUFWWTNF
c01BQUFIbwpDcmg0QUFBUFZRQUFOOW1yQUFBQjZBcW1LUUFBTWxVQUFBQTJqMDRBQUFIdENnR21L
UUFBQVNCV0FBQUFBQUFBTWxZQUFBQUFBQUFCClZqY1N3d0FBQWUwS3VIZ0FBSHRWQUFBQVFLUk9B
QUFCOGdvQm93a0FBQUZBVmdBQUFBQUFBR0ZXQUFBQUFBQUFBVlkydlU0QUFBSDMKQ2dHNGVBQUFB
WEJXQUFBQUFBQUFxbFlBQUFBQUFBQUJWamZ3blFBQUFmY0txRzBBQUo1VkFBQUFFTzVPQUFBSUhh
WVFGNU1wQUFBQwpJd0FCQUFwZ2VBQUFFUHhPQUFBZ0toUVFGOXdBQUFBQ0l3QUJFZFJPQUFBaEtn
QUFLaFlDSXdBQ0VlRk9BQUNpRWdBQUtoZ0NJd0FDCkVlWk9BQUJ6ZUFBQUtoa0NJd0FDQUFwNGVB
QUFOZzlQQUFBQi9Bb0IvQUFBQUFHd1ZnQUFBQUFBQUxwV0FBQUFBQUFBQVZZM0djTUEKQUFIOEN2
d0FBQURuVlFBQU55bkRBQUFCL0FyOEFBQUFDbFlBQURjNXd3QUFBZndLL0FBQUFDMVdBQUFBTml4
UEFBQUJBUXNCL0FBQQpBQUhBVmdBQUFBQUFBTXBXQUFBQUFBQUFBVlkzUmNNQUFBRUJDL3dBQUFC
UVZnQUFBRFpNVHdBQUFRWUxBZndBQUFBQjBGWUFBQUFBCkFBRGFWZ0FBQUFBQUFBRldOMFhEQUFB
QkJndjhBQUFBYzFZQUFBQTJiRThBQUFFaEN3R2JBd0FBQWVCV0FBQUFBQUFBWWxjQUFBQUEKQUFB
QlZqZmtud0FBQVNFTEZNUUFBSlpXQUFBM1o4TUFBQUVoQzBIRUFBRE1WZ0FBTlk3REFBQUJJd3ZC
QmdBQUFsY0FBRFdkd3dBQQpBUzBMS29BQUFFaFhBQUE3RDRBQUFESlhBQUFBQUFBQVJWY0FBQUFB
QUFBQkxRdEhIWUFBQUNWWEFBQUFBRGFUVHdBQUFURUxBWnNECkFBQUJjRmNBQUFBQUFBQ3BWd0FB
QUFBQUFBRldOK1NmQUFBQk1Rc1V4QUFBYTFjQUFEZG53d0FBQVRFTFFjUUFBS0ZYQUFBMWpzTUEK
QUFFekM4RUdBQUQ2VndBQU5aM0RBQUFCTkFzcWdBQUFIVmdBQURzUGdBQUFobGNBQUFBQUFBQ1RW
d0FBQUFBQUFBRTBDemZrbndBQQpBUTBMRk1RQUFOZFhBQUFBQURhOFR3QUFBVGdMQVpzREFBQUJz
RmNBQUFBQUFBQUJXQUFBQUFBQUFBRldONlhEQUFBQk9BdnhEd0FBClFGZ0FBRGV1d3dBQUFUZ0xU
Y1FBQUlsWUFBQTZ4OE1BQUFFNkM1c0RBQUFDa1c4Nng4TUFBQUU2QzVzREFBQUNrVzgxanNNQUFB
RTcKQzhFR0FBQy9XQUFBTllLcEFBQUJQQXRTeEFBQTRsZ0FBQzdsd3dBQUFUMExtd01BQUFBNDRV
OEFBQUZFQ3dFQkVGZ0FBQUFBQUFBYQpXQUFBQUFBQUFBRldOKzNEQUFBQlJBdHFhZ0FBQlZrQUFB
QkpDMUFBQUFGUkN3RUNCZ0FBQVNCWUFBQUFBQUFBVmxnQUFBQUFBQUFCClZnRTMrOE1BQUFGUkMv
Z0RBQUFvV1FBQUFGUWpVQUFBQVZJTEFRRmdXQUFBQUFBQUFKSllBQUFBQUFBQUFWWUJOMWllQUFB
QlVndTkKQkFBQVMxa0FBRGR5d0FBQUFWSUxsd1VBQUc1WkFBQTNBTVFBQUFGU0MvZ0RBQUNSV1FB
QUFFbGJVQUFBQVZNTEFaY0ZBQUFCb0ZnQQpBQUFBQUFEU1dBQUFBQUFBQUFGV0FUZFluZ0FBQVZN
THZRUUFBTFJaQUFBM0FNUUFBQUZUQy9nREFBRFhXUUFBQUZTVVVBQUFBVlFMCkFRSGdXQUFBQUFB
QUFCSlpBQUFBQUFBQUFWWUJOMWllQUFBQlZBdTlCQUFBK2xrQUFEY0t4QUFBQVZRTFZBVUFBQjFh
QUFBQU5yVlEKQUFBQlZ3c0Jtd01BQUFFZ1dRQUFBQUFBQUFGYUFBQUFBQUFBQVZZM2lLa0FBQUZY
QzlrSkFBQkFXZ0FBUG9rRUFBQVFCUUFBQVZrTApQdlYvQUFEUUJBQUFBVkVMUHdLQUFBQjJXZ0FB
U3NZREFBQ2dCQUFBQVZFTEFBQStOWHNBQUVBRkFBQUJYQXMzKzhNQUFBRlJDL2dECkFBQ1pXZ0FB
QUFBNHhsQUFBQUZmQ3dFQkVGb0FBQUFBQUFCV1d3QUFBQUFBQUFGV04zTEFBQUFCWHd1WEJRQUF2
Rm9BQURjQXhBQUEKQVY4TCtBTUFBUEphQUFBMVdKNEFBQUZrQzcwRUFBQnVXd0FBUG1VRUFBRFFC
UUFBQVdFTFB0dC9BQUNnQlFBQUFWSUxQK2gvQUFBbwpXd0FBU3NZREFBQndCUUFBQVZJTEFBQTdi
WVlBQUlaYUFBQUFBQUFBelZvQUFBQUFBQUFCWkFzMTJiY0FBQUZ2QnJXN0FBQkxXd0FBCkFENW5l
d0FBQUFZQUFBRm9DemRZbmdBQUFWSUx2UVFBQUpGYkFBQTNjc0FBQUFGU0M1Y0ZBQUMwV3dBQU53
REVBQUFCVWd2NEF3QUEKMTFzQUFBQUFOdjlRQUFBQmF3c0Jsd1VBQUFGZ1d3QUFBQUFBQU1WY0FB
QUFBQUFBQVZZM0FNUUFBQUZyQy9nREFBRDZXd0FBTlZpZQpBQUFCYlF1OUJBQUFVMXdBQUR0dGhn
QUFhbHNBQUFBQUFBQzhXd0FBQUFBQUFBRnRDelhadHdBQUFXOEd0YnNBQURCY0FBQUFQa0VFCkFB
Q2dCZ0FBQVhBTFBzRi9BQUJnQmdBQUFWTUxQODUvQUFDc1hBQUFTc1lEQUFBd0JnQUFBVk1MQUFB
K3RYc0FBTkFHQUFBQmRnczMKV0o0QUFBRlRDNzBFQUFDSlhBQUFOd0RFQUFBQlV3djRBd0FBejF3
QUFBQUFRRGxSQUFBQmVRc0IrQU1BQUFIUVhBQUFBQUFBQU4xYwpBQUFBQUFBQUFWWTRUVkVBQUFG
K0N3RUI0RndBQUFBQUFBQnpYZ0FBQUFBQUFBRldOd3JFQUFBQmZndFVCUUFBOGx3QUFEVlluZ0FB
CkFZQUx2UVFBQUhGZEFBQTdiWVlBQU8xY0FBQUFBQUFBUDEwQUFBQUFBQUFCZ0FzMTJiY0FBQUZ2
QnJXN0FBQk9YUUFBQUQ2aUF3QUEKY0FjQUFBR0ZDejVlZndBQU1BY0FBQUZVQ3o5cmZ3QUF0MTBB
QUVyR0F3QUFBQWNBQUFGVUN3QUFQdmQ3QUFDZ0J3QUFBWXdMTjFpZQpBQUFCVkF1OUJBQUFsRjBB
QURjS3hBQUFBVlFMVkFVQUFOcGRBQUFBT2VoZEFBQUFBQUFBRmw0QUFBQUFBQUExRjhRQUFBR0dD
emttCkFBRDlYUUFBQUFBWmIxRUFBQUZVQzVzREFBQUJMcGNEQUFBQlZBdGhBQUFBQUZXVVVRQUFB
VlVMK0FNQUFJQmVBQUFBQUFBQUExOEEKQUFBQUFBQUJWa3JHQXdBQTBBY0FBQUZWQ3dCV3NWRUFB
QUZWQy9nREFBQVFYd0FBQUFBQUFDQmZBQUFBQUFBQUFWWVowbEVBQUFGVApDNXNEQUFBQkxwY0RB
QUFCVXd0aEFBQUFBQmtQVWdBQUFWSUxtd01BQUFFdWx3TUFBQUZTQzJFQUFBQUFHVXRTQUFBQlVR
dWJBd0FBCkFTNlhBd0FBQVZFTFlRQUFBQUFnWjFJQUFBRU5Dd0VxZ0FBQUFVUGtud0FBQVEwTEZN
UUFBQUFTdGdZQUFKbFNBQUFCUUZXdFVnQUEKQWR3SzBBQUFBQ0JmQUFBQUFBQUF3RjhBQUFBQUFB
QUJWa3B0QmdBQUFBZ0FBQUhjQ2dCV3hGSUFBQUhjQ3RBQUFBREFYd0FBQUFBQQpBTTFmQUFBQUFB
QUFBVllnMzFJQUFBRnBDZ0hRQUFBQUFTN2ZVZ0FBQVdzSzBBQUFBQUFnNzFJQUFBRmdDZ0hRQUFB
QUFTN2ZVZ0FBCkFXSUswQUFBQUFCWEJWTUFBQUVsQ2dIeER3QUEwRjhBQUFBQUFBQVVZUUFBQUFB
QUFBRldOL2l5QUFBQkpRcW9BUUFBSUY0QUFEZWQKc3dBQUFTVUtDNlVBQUVOZUFBQUFJQ0ZUQUFB
QnlRa0IwQUFBQUFFdVJhRUFBQUhMQ2RrSkFBQXVrTUVBQUFIT0NTUXJBQUFBVjBOVApBQUFCaGdn
Qm13TUFBT0JIQUFBQUFBQUFzMGtBQUFBQUFBQUJWamRBd0FBQUFZWUlhbW9BQUo1RUFBQTN4cjhB
QUFHR0NJMC9BQUQ3ClJBQUFOeHlxQUFBQmhnaFBxZ0FBUlVVQUFEZlF2d0FBQVlZSWI4SUFBSDFG
QUFBMzJMOEFBQUdHQ0UrcUFBRC9SUUFBTitTL0FBQUIKaGdpUHN3QUFOVVlBQURmM3Z3QUFBWVlJ
ZE1JQUFFdElBQUEzRGNBQUFBR0dDQ1lFQUFEWFNBQUFOVExBQUFBQmlBaEN3Z0FBL0VZQQpBRFVX
d0FBQUFZOElsd1VBQUdWSEFBQTdJb01BQUJKSUFBQUFBQUFBUUVnQUFBQUFBQUFCaUFoSE1JTUFB
SDlHQUFCSFBJTUFBS0pHCkFBQS9TSU1BQU5sR0FBQUFPeUtEQUFCaFNBQUFBQUFBQUpGSUFBQUFB
QUFBQVk4SVJ6Q0RBQUFmUndBQVVEeURBQUFDa1ZBL1NJTUEKQUVKSEFBQUFPY0JJQUFBQUFBQUE3
RWdBQUFBQUFBQTFpcUFBQUFHVkNNQUhBQUNJUndBQU9jQklBQUFBQUFBQTVFZ0FBQUFBQUFBMQpS
Ym9BQUFHV0NJMC9BQUMvUndBQUFBQTdJb01BQUFGSkFBQUFBQUFBSlVrQUFBQUFBQUFCbmdoSE1J
TUFBT0pIQUFCSFBJTUFBQVZJCkFBQS9TSU1BQUNoSUFBQUFPeUtEQUFBN1NRQUFBQUFBQUY5SkFB
QUFBQUFBQWFFSVJ6Q0RBQUJ1U0FBQVJ6eURBQUNSU0FBQVAwaUQKQUFDMFNBQUFBRHNpZ3dBQWQw
a0FBQUFBQUFDYlNRQUFBQUFBQUFHa0NFY3dnd0FBK2tnQUFFYzhnd0FBSFVrQUFEOUlnd0FBUUVr
QQpBQUFBSUZWVEFBQUJmUWdCalQ4QUFBRkQ1SjhBQUFGOUNCby9BQUJESjhBQUFBRjlDR3BxQUFB
dUtySUFBQUYvQ0kwL0FBQkQwNkVBCkFBRjlDUGdEQUFBQVYydFRBQUFCVVFnQmJvUUFBTEJGQUFB
QUFBQUFJRWNBQUFBQUFBQUJWa0ljcWdBQUFWRUl3QWNBQUFLUlVEZlEKdndBQUFWRUlhc0lBQUJO
Q0FBQTMyTDhBQUFGUkNNQUhBQUJLUWdBQU4rUy9BQUFCVVFocWFnQUFnRUlBQURmM3Z3QUFBVkVJ
UXNJQQpBTXRDQUFBM0RjQUFBQUZSQ1BnREFBQVdRd0FBTjhhL0FBQUJVUWlOUHdBQWxrTUFBRFVX
d0FBQUFWTUlPU1lBQUdCREFBQTFKOEFBCkFBRmdDRzZFQUFEdlF3QUFOVExBQUFBQllnaEN3Z0FB
RWtRQUFEbjRSUUFBQUFBQUFEbEdBQUFBQUFBQVJZcWdBQUFCVlFqQUJ3QUEKQ0FBQUFBQUFBQUFB
T2ZoRkFBQUFBQUFBTUVZQUFBQUFBQUExUmJvQUFBRldDSTAvQUFETVF3QUFBQUFBQ2xwcUFBQVNh
WVFBQUl4VApBQUFCdTFpalV3QUFLNHdCL0FBQUFBRlpjYm9BQUN1TWlBZ0FBQUJZcWxNQUFDdUlB
ZndBQUFBQldYRzZBQUFyaUlnSUFBQUFXckZUCkFBQUJId2dCQVVQdXJRQUFBUjhJWmNJQUFBQWF1
bE1BQUFIcG13TUFBQUZibHdNQUFBSHBZUUFBQUFCYzRGTUFBQ3V0QVgwSUFBQloKSXNRQUFDdXRp
QWdBQUFCYzcxTUFBQ3R4QVRrQkFBQlpnd0VBQUN0eC9BQUFBRm1VQVFBQUszSDhBQUFBVzk2dEFB
QXJjamtCQUFBQQpJUHRUQUFBQlh3Y0JMZ0VBQUFGREtjUUFBQUZmQnprQkFBQXUvN29BQUFGaEI4
RUpBQUFBWFNkVUFBQURBZ0VCTGdFQUFFT0RBUUFBCkF3SUIvQUFBQUVPVUFRQUFBd0lCL0FBQUFD
N2VyUUFBQXdRQkxnRUFBQUJZTTFRQUFDdWNBZndBQUFBQldYRzZBQUFybklnSUFBQUEKV0RwVUFB
QXJtQUg4QUFBQUFWbHh1Z0FBSzVpSUNBQUFBRnhCVkFBQUszOEJpQWdBQUZtREFRQUFLMy84QUFB
QVdaUUJBQUFyZi93QQpBQUJaL2JvQUFDdC8vQUFBQUZuN3VnQUFLMy84QUFBQVd5L0VBQUFyZ0ln
SUFBQUFXRXhVQUFBcnBBSDhBQUFBQVZseHVnQUFLNlNJCkNBQUFBRmhWVkFBQUs2QUIvQUFBQUFG
WmNib0FBQ3VnaUFnQUFBQmVYVlFBQUFFZ0J3RVFPQUFBQUFBQUFCczRBQUFBQUFBQUFWWTMKUmJv
QUFBRWdCejIrQUFBR05RQUFOMHk2QUFBQklBZGhBQUFBS1RVQUFEZFJ1Z0FBQVNBSFlRQUFBRXcx
QUFBQUlIUlVBQUFCYlFZQgp2UVFBQUFFdTJiY0FBQUZ2QnJXN0FBQUFJSDlVQUFBQkJRWUI5UUFB
QUFGRG1iWUFBQUVGQnNFSkFBQXVvTFlBQUFFSEJ2VUFBQUF1ClZxQUFBQUVJQnNnRUFBQXZMcVMy
QUFBQkNRYklCQUFBTHk2b3RnQUFBUXdHSDdvQUFDOHU2NmdBQUFFT0JvUzZBQUF2THZhMkFBQUIK
RWdiMUFBQUFBQUFBQUFBZ2xWUUFBQUhNQlFHakNRQUFBVU8vc3dBQUFjd0ZnYmdBQUVOTHRBQUFB
Y3dGaHJnQUFFTlN0QUFBQWN3RgpocmdBQUFBWnIxUUFBQUVaQlpzREFBQUJMcGNEQUFBQkdRVmhB
QUFBQUYzWVZBQUFBd2dCQVVzSUFBQkRSd2dBQUFNSUFmd0FBQUJEClRRZ0FBQU1JQWZ3QUFBQXVR
Z2dBQUFNS0FVc0lBQUFBV09OVUFBQW1mZ0V1QVFBQUFWa3B4QUFBSm40dUFRQUFXWlN5QUFBbWZp
SlEKQUFCYjNxMEFBQ2FBTGdFQUFBQWdBVlVBQUFHNkJBR2JBd0FBQVVNcXNnQUFBYm9FS0FBQUFB
QmNERlVBQUNrUkFVWjBBQUJaTWNRQQpBQ2tSSVNvQUFGbUpxQUFBS1JFaEtnQUFXeS9FQUFBcEVr
WjBBQUFBWGhoVkFBQUJjd1FCWUNJQUFBQUFBQURZSWdBQUFBQUFBQUZXCk4rU2ZBQUFCY3dRcWdB
QUFMQm9BQURmWnF3QUFBWE1FM3JJQUFHSWFBQUEzRnJFQUFBRnpCT215QUFDWUdnQUFOeTZ4QUFB
QmN3VDAKc2dBQXpob0FBQUJZT2xVQUFDWjBBU0pRQUFBQldYSStBQUFtZFB3QUFBQlpkRDRBQUNa
MC9BQUFBRmwyUGdBQUpuVDhBQUFBV1hnKwpBQUFtZFB3QUFBQlplajRBQUNaMS9BQUFBRmw5UGdB
QUpuWDhBQUFBVzVTeUFBQW1keUpRQUFBQVdsSlZBQUFCd3dNQkFVTndxd0FBCkFjTUR1NjhBQUM3
V3JRQUFBY2NEd0s4QUFDNDF4QUFBQWNnRHlBUUFBQzdlclFBQUFjb0R5QVFBQUM3Z3JRQUFBY3dE
d0s4QUFDN24KclFBQUFjMER3SzhBQUM2S29BQUFBYzREeUFRQUFBQmNZRlVBQUN1b0FZZ0lBQUJa
UE1RQUFDdW9mUWdBQUFBZ2NWVUFBQU1PQVFGOQpDQUFBQVVPREFRQUFBdzRCL0FBQUFFT1VBUUFB
QXc0Qi9BQUFBRU5IQ0FBQUF3NEIvQUFBQUVOTkNBQUFBdzRCL0FBQUFDN3VyUUFBCkF4QUJmUWdB
QUFCWGZGVUFBQUY2QWdHakNRQUFJR0VBQUFBQUFBQkFZUUFBQUFBQUFBRldOL2l5QUFBQmVnS29B
UUFBWmw0QUFEZWQKc3dBQUFYb0NDNlVBQUlsZUFBQUFYNkJWQUFBc0hnRUJXUmloQUFBc0hvcWdB
QUJaSmFFQUFDd2VpcUFBQUFBcklTb0FBQUdEVmdBQQpDQXNVTE1GVkFBQUJMTmxWQUFBQ0xPbFZB
QUFFTFB0VkFBQUlMQXhXQUFEQUFDd2NWZ0FBZ0FFc09WWUFBSUFDTEZKV0FBQ0FCQ3hwClZnQUFn
QWdBWVBFUEFBQUJ6MVlBQUFnTmZBRXNtbFlBQUg4c3JWWUFBQUFzdTFZQUFBRUFZUVF0L3l6aVZn
QUFBQ3p3VmdBQWZDd0UKVndBQVhpd1NWd0FBWEN3YlZ3QUFUaXduVndBQVF5dzBWd0FBbEg4c1Ex
Y0FBSUIvTEZaWEFBRHplQ3hqVndBQTZtOHNlMWNBQUtCWgpMSmRYQUFDMXVuNHNxbGNBQUxTNmZp
eTVWd0FBczdwK0xNcFhBQUN5dW40czMxY0FBTEc2Zml6MVZ3QUFzTHArTEExWUFBQ3Z1bjRzCkpW
Z0FBSzY2Zml3N1dBQUFyYnArTEU5WUFBQ3N1bjRzWWxnQUFLdTZmaXgzV0FBQXFycCtMSXBZQUFD
cHVuNHNtMWdBQUtpNmZpeXcKV0FBQXA3cCtMTWRZQUFDbXVuNHMyVmdBQUtXNmZpenhXQUFBcExw
K0xBMVpBQUNqdW40c0lGa0FBS0s2Zml3MldRQUFvYnArTEU1WgpBQUNndW40c1pGa0FBSis2Zml4
K1dRQUFucnArTEpOWkFBQ2R1bjRzclZrQUFKeTZmaXpFV1FBQW03cCtMTnhaQUFDYXVuNHM5RmtB
CkFKbTZmaXdOV2dBQW1McCtMQjVhQUFEb3VuNHNNVm9BQU9lNmZpeEdXZ0FBNXJwK0xHQmFBQURs
dW40c2Rsb0FBT1M2Zml5TldnQUEKNDdwK0xLVmFBQURZdW40c3ZWb0FBTmU2Zml6UldnQUExcnAr
TE9aYUFBRFZ1bjRzL1ZvQUFOUzZmaXdXV3dBQTA3cCtMQzliQUFEUwp1bjRzU2xzQUFORzZmaXhn
V3dBQTBMcCtMSHBiQUFEbHNuNHNpbHNBQU4yeWZpeVhXd0FBLys5N0xMRmJBQUQrNzNzc3pGc0FB
UDN2CmV5emVXd0FBL085N0xQRmJBQUQ3NzNzc0RWd0FBUHJ2ZXl3c1hBQUErZTk3TEVsY0FBRDQ3
M3NzYUZ3QUFQZnZleXlGWEFBQTl1OTcKTEp0Y0FBRDE3M3NzdEZ3QUFGNHN3MXdBQVBUdmV5elhY
QUFBOCs5N0xPaGNBQUR5NzNzc0FsMEFBUEh2ZXl3WFhRQUE4Tzk3TERaZApBQUR2NzNzc1VGMEFB
Tzd2ZXl4blhRQUE3ZTk3TElwZEFBRHM3M3NzbzEwQUFPdnZleXkrWFFBQTZ1OTdMTnBkQUFEcDcz
c3M5RjBBCkFPanZleXdUWGdBQTUrOTdMREZlQUFEbTczc3NTRjRBQU9YdmV5eHJYZ0FBNU85N0xI
MWVBQURqNzNzc2psNEFBT0x2ZXl5alhnQUEKNGU5N0xMVmVBQURnNzNzc3lWNEFBTi92ZXl6Wlhn
QUEzdTk3TFBSZUFBRGQ3M3NzRGw4QUFOenZleXdpWHdBQTIrOTdMRGhmQUFEYQo3M3NzU1Y4QUFO
bnZleXhyWHdBQTJPOTdMSXBmQUFEWDczc3NvVjhBQU5idmV5ekFYd0FBMWU5N0xOcGZBQURVNzNz
cy9GOEFBTlB2CmV5d1pZQUFBMHU5N0xDOWdBQURSNzNzc1JHQUFBTkR2ZXl4YVlBQUF6Kzk3TEhk
Z0FBRE83M3NzaDJBQUFNM3ZleXlyWUFBQXpPOTcKTE1CZ0FBREw3M3NzM1dBQUFNcnZleXp5WUFB
QXllOTdMQXRoQUFESTczc3NIbUVBQU1mdmV5dytZUUFBeHU5N0xGOWhBQURGNzNzcwplMkVBQU1U
dmV5eWdZUUFBdys5N0xNQmhBQURDNzNzczRHRUFBTUh2ZXl3RVlnQUF3Tzk3TENoaUFBQy83M3Nz
VVdJQUFMN3ZleXgxCllnQUF2ZTk3TEpKaUFBQzg3M3NzdDJJQUFMdnZleXpZWWdBQXV1OTdMTzlp
QUFDNTczc3NDR01BQUxqdmV5d3NZd0FBdCs5N0xFaGoKQUFDMjczc3NhR01BQUxYdmV5eUNZd0FB
dE85N0xLTmpBQUN6NzNzc3hXTUFBTEx2ZXl6a1l3QUFzZTk3TEFoa0FBQ3c3M3NzSjJRQQpBSy92
ZXl4R1pBQUFydTk3TEd0a0FBQ3Q3M3NzZ0dRQUFLenZleXlaWkFBQXErOTdMTE5rQUFDcTczc3N6
MlFBQUtudmV5empaQUFBCnFPOTdMUFZrQUFDbjczc3NCMlVBQUtidmV5d1daUUFBcGU5N0xDdGxB
QUNrNzNzc1FXVUFBS1B2ZXl4V1pRQUFvdTk3TEhkbEFBQ2gKNzNzc2lXVUFBS0R2ZXl5ZFpRQUFu
Kzk3TExGbEFBQ2U3M3NzekdVQUFKM3ZleXpvWlFBQW5POTdMUDlsQUFDYjczc3NHMllBQUpydgpl
eXcxWmdBQW1lOTdMRVptQUFDWTczc3NYV1lBQUpmdmV5eHZaZ0FBbHU5N0xJdG1BQUNWNzNzc3FX
WUFBSlR2ZXl5N1pnQUFrKzk3CkxNNW1BQUNTNzNzczRXWUFBSkh2ZXl6MlpnQUFrTzk3TEF4bkFB
Q1A3M3NzSTJjQUFJN3ZleXcyWndBQWplOTdMRXhuQUFDTTczc3MKYTJjQUFJdnZleXgvWndBQWl1
OTdMSkJuQUFDSjczc3NxV2NBQUlqdmV5ekRad0FBaCs5N0xOMW5BQUNHNzNzczhHY0FBSVh2ZXl3
TAphQUFBaE85N0xCeG9BQUNENzNzc01HZ0FBSUx2ZXl4R2FBQUFnZTk3TEZ4b0FBQ0E3M3NzY0dn
QUFQL3VleXlLYUFBQS91NTdMS0pvCkFBRDk3bnNzd1dnQUFQenVleXpoYUFBQSsrNTdMUHBvQUFE
Njduc3NFR2tBQVBudWV5d3FhUUFBK081N0xFWnBBQUQzN25zc2Fta0EKQVBidWV5eUdhUUFBOWU1
N0xLNXBBQUQwN25zc3hXa0FBUFB1ZXl6ZGFRQUE4dTU3TFBscEFBRHg3bnNzQzJvQUFQRHVleXdp
YWdBQQo3KzU3TERScUFBRHU3bnNzVEdvQUFPM3VleXhrYWdBQTdPNTdMSDlxQUFEcjduc3NtMm9B
QU9ydWV5eTJhZ0FBNmU1N0xNOXFBQURvCjduc3M2V29BQU9mdWV5d0hhd0FBNXU1N0xDVnJBQURs
N25zc1Iyc0FBT1R1ZXl4ZGF3QUE0KzU3TEhkckFBRGk3bnNzam1zQUFPSHUKZXl5dmF3QUE0TzU3
TE1ockFBRGY3bnNzNG1zQUFON3VleXozYXdBQTNlNTdMQTVzQUFEYzduc3NLR3dBQU52dWV5eENi
QUFBMnU1NwpMR05zQUFEWjduc3NoR3dBQU5qdWV5eWZiQUFBMSs1N0xMcHNBQURXN25zczJHd0FB
Tlh1ZXl6MmJBQUExTzU3TEJOdEFBRFQ3bnNzCk1HMEFBTkx1ZXl4TGJRQUEwZTU3TEdadEFBRFE3
bnNzaDIwQUFNL3VleXlvYlFBQXp1NTdMTWh0QUFETjduc3M2RzBBQU16dWV5d0kKYmdBQXkrNTdM
Q2h1QUFESzduc3NTVzRBQU1udWV5eHFiZ0FBeU81N0xJZHVBQURIN25zc3BHNEFBTWJ1ZXl6QWJn
QUF4ZTU3TE54dQpBQURFN25zcytHNEFBTVB1ZXl3VWJ3QUF3dTU3TERKdkFBREI3bnNzVUc4QUFN
RHVleXhyYndBQXYrNTdMSVp2QUFDKzduc3NxbThBCkFMM3VleXpPYndBQXZPNTdMTzV2QUFDNzdu
c3NEbkFBQUxydWV5d3NjQUFBdWU1N0xFcHdBQUM0N25zc2FIQUFBTGZ1ZXl5R2NBQUEKdHU1N0xL
SndBQUMxN25zc3ZuQUFBTFR1ZXl6WmNBQUFzKzU3TFBSd0FBQ3k3bnNzRTNFQUFMSHVleXd5Y1FB
QXNPNTdMRmR4QUFDdgo3bnNzZkhFQUFLN3VleXlkY1FBQXJlNTdMTDV4QUFDczduc3M1bkVBQUt2
dWV5d09jZ0FBcXU1N0xEUnlBQUNwN25zc1duSUFBS2p1CmV5eUJjZ0FBcCs1N0xLaHlBQUNtN25z
czBYSUFBS1h1ZXl6NmNnQUFwTzU3TENGekFBQ2o3bnNzU0hNQUFLTHVleXhvY3dBQW9lNTcKTElo
ekFBQ2c3bnNzbTNNQUFKL3VleXl5Y3dBQW51NTdMTXB6QUFDZDduc3M1bk1BQUp6dWV5ei9jd0FB
bSs1N0xCWjBBQUNhN25zcwpMSFFBQUpudWV5eEpkQUFBbU81N0xGOTBBQUNYN25zc2ZuUUFBSmJ1
ZXl5WGRBQUFsZTU3TExSMEFBQ1U3bnNzelhRQUFKUHVleXpvCmRBQUFrdTU3TEFaMUFBQ1I3bnNz
R25VQUFKRHVleXd4ZFFBQWorNTdMRXAxQUFDTzduc3NaWFVBQUkzdWV5eCtkUUFBak81N0xKZDEK
QUFDTDduc3NySFVBQUlydWV5eTlkUUFBaWU1N0xOTjFBQUNJN25zczQzVUFBSWZ1ZXl6N2RRQUFo
dTU3TEE1MkFBQ0Y3bnNzTFhZQQpBSVR1ZXl4RmRnQUFnKzU3TEZsMkFBQ0M3bnNzZEhZQUFJSHVl
eXlRZGdBQWdPNTdMS3AyQUFELzdYc3N2WFlBQVA3dGV5emRkZ0FBCi9lMTdMTzUyQUFEODdYc3NC
M2NBQVB2dGV5d2Fkd0FBK3UxN0xDeDNBQUQ1N1hzc1FuY0FBUGp0ZXl4ZmR3QUE5KzE3TEhoM0FB
RDIKN1hzc2tIY0FBUFh0ZXl5bWR3QUE5TzE3TE1WM0FBRHo3WHNzMjNjQUFQTHRleXozZHdBQThl
MTdMQTU0QUFEdzdYc3NKbmdBQU8vdApleXcrZUFBQTd1MTdMRlI0QUFEdDdYc3NhSGdBQU96dGV5
eUZlQUFBNisxN0xLQjRBQURxN1hzc3VuZ0FBT250ZXl6WmVBQUE2TzE3CkxQVjRBQURuN1hzc0ZY
a0FBT2J0ZXl3eWVRQUE1ZTE3TEZCNUFBRGs3WHNzYTNrQUFPUHRleXlBZVFBQTR1MTdMSlo1QUFE
aDdYc3MKcVhrQUFPRHRleXpHZVFBQTMrMTdMT2w1QUFEZTdYc3NBM29BQU4zdGV5d2JlZ0FBM08x
N0xEWjZBQURiN1hzc1RYb0FBTnJ0ZXl4agplZ0FBMmUxN0xIdDZBQURZN1hzc21ub0FBTmZ0ZXl5
OGVnQUExdTE3TE5ONkFBRFY3WHNzNm5vQUFOVHRleXdFZXdBQTArMTdMQ2Q3CkFBRFM3WHNzUFhz
QUFOSHRleXhYZXdBQTBPMTdMSFI3QUFEUDdYc3NsSHNBQU03dGV5eTBld0FBemUxN0xOZDdBQURN
N1hzcytuc0EKQU12dGV5d1hmQUFBeXUxN0xEQjhBQURKN1hzc1NYd0FBTWp0ZXl4Z2ZBQUF4KzE3
TElGOEFBREc3WHNBWVFRdVV5eW5mQUFBQUN5KwpmQUFBQVN6VmZBQUFBaXpzZkFBQUF5d0FmUUFB
QkN3YmZRQUFCU3hDZlFBQUJpeGpmUUFBQndCaUJDOTFBU3g5ZlFBQUFBQXJYandBCkFBSHRmZ0FB
QkRCakxJTjlBQUFBTEoxOUFBQ0FDaXk4ZlFBQWdRUXMxMzBBQUlFV0xQWjlBQUNBREN3TmZnQUFn
QUlzSm40QUFJQ0MKZ01BQUxEeCtBQUQvRnl4YmZnQUFnQUlzY240QUFJQ0NnSUFCTEl0K0FBQ0Fn
b0NnQVN5a2ZnQUFnSUtBNEFBc3UzNEFBSUNDZ01BQgpMTlIrQUFDQWdvRGdBUUFQendRQUFLdC9B
QUF4U0FFcmlaWUFBQUc1ZndBQUNERWZMQVovQUFBQUxCbC9BQUFCTERWL0FBQUNMRlYvCkFBQUVM
SEovQUFBSUxJNS9BQUFRQUdFRU1sMHN5MzhBQUFBczRIOEFBQUVzOG44QUFBWXNDSUFBQUFjQVkw
bUFBQUFFTXpFc0c0QUEKQUFBc01JQUFBQUVBWTZhQUFBQUVNeW9zV1lBQUFBQXNjb0FBQUFFc2pJ
QUFBQUlBWWdRMGZBRXN1b0FBQUFFQVk4S0JBQUFFTlEwcwoxNEFBQUFBczU0QUFBT2dITFBlQUFB
RHBCeXdQZ1FBQTZnY3NLWUVBQU9zSExFQ0JBQURzQnl4WGdRQUE3Z2NzYm9FQUFPOEhMSUdCCkFB
RHdCeXlUZ1FBQThnY3NySUVBQVBNSEFHSUVOaWtCTE11QkFBQUFMT0tCQUFBQkxQZUJBQUFDTEJD
Q0FBQURMQ2lDQUFBRUxEK0MKQUFBUUxHU0NBQUFnQUdFRU54TXNpNElBQU9RQUxLR0NBQURrQUN5
K2dnQUF4d0VzMm9JQUFNZ0JMUFdDQUFDckFpd1Bnd0FBckFJcwpMNE1BQUk4RExFNkRBQUNRQXl4
bmd3QUE4d01zZjRNQUFQUURMSnlEQUFEWEJDeTRnd0FBMkFRczFvTUFBTHNGTFBPREFBQzhCU3dP
CmhBQUFud1lzS0lRQUFLQUdMRVNFQUFDREJ5eGZoQUFBaEFjc2Y0UUFBT2NITEo2RUFBRG9CeXpB
aEFBQXl3Z3M0WVFBQU13SUxBU0YKQUFDdkNTd21oUUFBc0Frc1FJVUFBSk1LTEZtRkFBQ1VDaXgz
aFFBQTl3b3NsSVVBQVBnS0xMT0ZBQURiQ3l6UmhRQUEzQXNzN29VQQpBTDhNTEFxR0FBREFEQ3dy
aGdBQW93MHNTNFlBQUtRTkxHdUdBQUNIRGl5S2hnQUFpQTRzcm9ZQUFPc09MTkdHQUFEc0Rpenlo
Z0FBCnp3OHNFb2NBQU5BUExET0hBQUN6RUN4VGh3QUFzeEFBWVFRNENpeG9od0FBQVN5S2h3QUFB
aXlwaHdBQUJDelNod0FBQ0N6OGh3QUEKZ0FRc0lJZ0FBSThFQUdFRUpTY3NPb2dBQUFBc1ZZZ0FB
QUVzZElnQUFBSXNtNGdBQUFNQUs3WUdBQUFCbElrQUFBUTVHeXpOaUFBQQpIeXpraUFBQWdBSXMv
WWdBQUlEZ0FTd1VpUUFBQUN3dWlRQUFnQ0FzU1lrQUFJREFBQ3hraVFBQWdPQUFMSHlKQUFDQWdB
RUFLN1lHCkFBQUJYb29BQUFRNUVDeWhpUUFBQUN5emlRQUFBU3pTaVFBQUFpenlpUUFBQXl3RWln
QUFCQ3dYaWdBQUJTd3hpZ0FBQml4TWlnQUEKQndCalM0c0FBQVE2Q1N4dmlnQUFBQ3lGaWdBQUFT
eVhpZ0FBQWl5d2lnQUFBeXpGaWdBQUJDemFpZ0FBQlN6cmlnQUFCaXdGaXdBQQpCeXdmaXdBQUND
dzNpd0FBQ1FCaEJEdlRMRm1MQUFBUUxIV0xBQUFnTEpHTEFBREFBQ3l6aXdBQWdBRXN6b3NBQUlB
Q0xPMkxBQUNBCkJBQmhCRHphTEFpTUFBQUFMQnVNQUFBQkxDK01BQUFDTEVlTUFBQURBR0VFTytj
c1hZd0FBQUFzY0l3QUFBRXNnWXdBQUFJc2xvd0EKQUFNc3JJd0FBQVFBWXlPTkFBQUVQWUlzeEl3
QUFBQXMySXdBQUg4czdJd0FBSDRzQUkwQUFIMHNFbzBBQUh3QVlRUStNU3d2alFBQQpBQ3hKalFB
QUFRQmtCNDRBQUFRL2lBRXNaWTBBQUFBc2Y0MEFBQUVzbVkwQUFBSXN0WTBBQUFNczBvMEFBQVFz
N1kwQUFBVUFZUVFHCkhpd2dqZ0FBQUN3M2pnQUFBU3hLamdBQUFpeGZqZ0FBQkN4NmpnQUFDQUJo
QkJKZUxKQ09BQUNBZ0lDQWVDeWlqZ0FBZ0lDQWdBUXMKdEk0QUFJQ0FnSUFDTE1lT0FBQ0FnSUNB
QVN6YWpnQUFnSUNBd0FBczhvNEFBSUNBZ0NBc0M0OEFBSUNBZ0JBc0g0OEFBSUNBZ0FncwpOSThB
QUlDQWdBUXNTSThBQUlDQWdBSXNYSThBQUlDQWdBRXNlWThBQUlBRUxKR1BBQUNBQ0FCaEJFQkdM
S09QQUFBUUxMZVBBQURBCkFBQmlCRUZ5QVN6TWp3QUE1TjZOMndZczM0OEFBUExRamRzR0xQcVBB
QURrM3JYYkJpd1NrQUFBNmR6VjJ3WXNLWkFBQVBUSWlkc0cKTEVHUUFBRGswcTNEQmdCaEJFSWxM
Rk9RQUFEczNyMlRCaXhma0FBQTFMQ1ZvZ1VBWXptUkFBQUVReVVzYUpBQUFBQXNkNUFBQUFFcwps
SkFBQUFJc3NKQUFBQU1zeDVBQUFBUXMyWkFBQUFVczlwQUFBQVlzRjVFQUFBY0FLOEFIQUFBQnBw
SUFBQWhFR2l4V2tRQUFBU3hwCmtRQUFBaXg5a1FBQUF5eVJrUUFBQkN5bGtRQUFCU3k2a1FBQUJp
elBrUUFBQnl6aGtRQUFDQ3owa1FBQUNTd0ZrZ0FBQ2l3WGtnQUEKQ3l3dGtnQUFEQ3hBa2dBQURT
eFVrZ0FBRGl4cGtnQUFEeXlBa2dBQUVDeVZrZ0FBRUFCaUJEeW9BU3l6a2dBQUFDelNrZ0FBQVFC
agp4cE1BQUFSRk9DenlrZ0FBQVN3RWt3QUFBaXdWa3dBQUJDd2prd0FBQ0N3NWt3QUFFQ3hUa3dB
QUlDeHFrd0FBd0FBc2daTUFBQjhzCm1wTUFBUDhBTEs2VEFBQVlBR0RBQndBQUFTT1dBQUFJUmlB
QkxOQ1RBQUFBTE9lVEFBQUJMUHVUQUFBQ0xCR1VBQUFETENpVUFBQUUKTEQyVUFBQUZMRlNVQUFB
R0xHK1VBQUFITElXVUFBQUhMSm1VQUFBSUxMV1VBQUFJTE1pVUFBQUpMTnVVQUFBS0xPNlVBQURv
Qnl3SgpsUUFBNkFjc0k1VUFBT2tITER1VkFBRHFCeXhVbFFBQTZ3Y3NhNVVBQU8wSExIK1ZBQUR1
Qnl5VWxRQUE3d2NzcXBVQUFQQUhMTUdWCkFBRHlCeXphbFFBQTlBY3M4SlVBQVBjSExBaVdBQUQ0
QndCaUJFY0lBU3d6bGdBQWdJQ0FnSGdBWWdSSEZ3RXNTSllBQUFFc2JwWUEKQUFJc2twWUFBQVFB
WVFRcUN5eTZsZ0FBQUN6TGxnQUFBU3pjbGdBQUFpenZsZ0FBQXdCaUJEenFBU3dEbHdBQUFDdzNs
d0FBQVN4cwpsd0FBQWl5dGx3QUFBeXp1bHdBQUJDd2RtQUFBQlFCaUJFaUxBU3hObUFBQWlBY3Nj
SmdBQUlrSExKU1lBQUNLQnl5OW1BQUFpd2NzCjVwZ0FBSkFITFA2WUFBQ1JCd0JoQkVrakxCZVpB
QUFBTEM2WkFBQUFMRCtaQUFBQkxGQ1pBQUFDTEdXWkFBQURMSHVaQUFBRUxKZVoKQUFBRkxLZVpB
QUFITE1hWkFBQUlMT3VaQUFBSkxBZWFBQUFLTENtYUFBQUxMRCthQUFBTUxGT2FBQUFOTEd1YUFB
QU9MSVdhQUFBUApMS0dhQUFBUUxNS2FBQUFSTE5pYUFBQVNMTythQUFBVExBcWJBQUFVTEJ1YkFB
QVZMQytiQUFBV0xFV2JBQUFYTEYyYkFBQVlMSGViCkFBQVpMSWViQUFBYUxLQ2JBQUFiTEx5YkFB
QWNMTnliQUFBZExQMmJBQUFlTENlY0FBQWZMRVNjQUFBZ0xHYWNBQUFoTEllY0FBQWkKTExHY0FB
QWpMTktjQUFBa0xPK2NBQUFsTEJDZEFBQW1MQ3lkQUFBbkxFS2RBQUFvTEZLZEFBQXBMR0tkQUFB
cUxIU2RBQUFyTEllZApBQUFyQUdJSURZOEJMSjJkQUFCL0FHRUVTaU1zcUowQUFBQXN2NTBBQUFF
czJaMEFBQUlBS1lnL0FBQXFFUmNBQUFBQUVtWTBBQUFaCk5BQUFBUmNTM1RVQUFQazBBQUFCTnc2
QW5nQUFBUXAybndBQUQzeWZBQUNPbmdBQUFRRUNEc21lQUFBQkE0MmZBQUFLazU4QUFCS1kKbndB
QTNwNEFBQUUwSkZPZkFBQUJFQXFvbndBQUVHaWZBQUFRUzJvUUY5d0FBQUFDSXdBQkVVU2ZBQUN2
bndBQVMyMENJd0FEQUFxMApud0FBSkhXZkFBQUJFQXJibndBQUVKR2ZBQUFRVENnUUY5d0FBQUFD
SXdBQkVWQTBBQURpbndBQVRDc0NJd0FEQUFybm53QUFEdjZmCkFBQUJDZzZnQUFBU0ZLQUFBQTJn
QUFBQlVSSzJCZ0FBUEtBQUFBRlNEbk9nQUFBQkNpK2dBQUFTTmFBQUFINmdBQUFCWWc2WW9BQUEK
QVFwRm9BQUFFa3VnQUFDd29BQUFBWUVQVXp3QUFPZWdBQUFCUGdJUHp3UUFBUDJnQUFBQkdBRVMy
UnNBQUF1aEFBQUJiUTl6b0FBQQpFcUVBQUFFTkFRcFRQQUFBRGsraEFBQUJDbytnQUFBU2xhQUFB
RmloQUFBQlJpU2FvUUFBQVJBS3BhQUFBQkN5b1FBQUVFMXFFQmZjCkFBQUFBaU1BQVJGUU5BQUFy
S0FBQUUxdEFpTUFBd0FLc2FBQUFHWGZvUUFBRUNKT0FSQVgzelFBQUFJakFBRUFDdGlnQUFBT0lh
SUEKQUFFSzhhQUFBQkwzb0FBQUxhSUFBQUVzRWlFcUFBQnhvZ0FBTWlBU0lTb0FBQVdqQUFBeUhC
SWhLZ0FBRzZRQUFESWtFME9sQUFBSQpNbXdVVGFJQUFFUUJBQUF5YlFRQkh3SWpBQUVVVTZJQUFF
UUJBQUF5YmdRQkhnSWpBQUVVWDZJQUFFUUJBQUF5YndRQkhRSWpBQUVVCmFLSUFBRVFCQUFBeWNB
UUJIQUlqQUFFVTVKOEFBQWVoQUFBeWNRZ0NPZ0lqQUFFVWZLSUFBRVFCQUFBeWNnUUJHUUlqQUFF
VWhxSUEKQUVRQkFBQXljd1FCR0FJakFBRVVrS0lBQUVRQkFBQXlkQVFCRndJakFBRVVtYUlBQUVR
QkFBQXlkUVFCRmdJakFBRVVvYUlBQUVRQgpBQUF5ZGdRQkZRSWpBQUVVcktJQUFFUUJBQUF5ZHdR
QkZBSWpBQUVVdDZJQUFFUUJBQUF5ZUFRQkV3SWpBQUVVd3FJQUFFUUJBQUF5CmVRUUJFZ0lqQUFF
VTBhSUFBRVFCQUFBeWVnUUJFUUlqQUFFVTJLSUFBRVFCQUFBeWV3UUJFQUlqQUFFVTY2SUFBRVFC
QUFBeWZBUUIKRHdJakFBRVU5NklBQUJLaEFBQXlmUWdETEFJakFBRVVGYU1BQUVRQkFBQXlmZ1FC
Q3dJakFBRVVJNk1BQUVRQkFBQXlmd1FCQ2dJagpBQUVVTzZNQUFFUUJBQUF5Z0FRQkNRSWpBQUVV
U3FNQUFFUUJBQUF5Z1FRQkNBSWpBQUVVWEtNQUFFUUJBQUF5Z2dRQkJ3SWpBQUVVClphTUFBRVFC
QUFBeWd3UUJCZ0lqQUFFVWRxTUFBRVFCQUFBeWhBUUJCUUlqQUFFVWg2TUFBRVFCQUFBeWhRUUJC
QUlqQUFFVWo2TUEKQUVRQkFBQXloZ1FCQXdJakFBRVVwS01BQUVRQkFBQXlod1FCQWdJakFBRVV1
S01BQUVRQkFBQXlpQVFDQUFJakFBRVV4cU1BQUVRQgpBQUF5aVFRQkh3SWpCQUVVMUtNQUFFUUJB
QUF5aWdRQkhnSWpCQUVVNWFNQUFFUUJBQUF5aXdRQkhRSWpCQUVVQWFRQUFFUUJBQUF5CmpBUUJI
QUlqQkFFVUVhUUFBQjJoQUFBeWpRZ0RHUUlqQUFFVUs2UUFBRVFCQUFBeWpnUUJHQUlqQkFFVVBx
UUFBRVFCQUFBeWp3UUQKRlFJakJBRVVUcVFBQUVRQkFBQXlrQVFFRVFJakJBRVVYS1FBQUVRQkFB
QXlrUVFCRUFJakJBRVVjcVFBQUVRQkFBQXlrZ1FCRHdJagpCQUVVaDZRQUFFUUJBQUF5a3dRQkRn
SWpCQUVVbHFRQUFFUUJBQUF5bEFRQkRRSWpCQUVVcDZRQUFFUUJBQUF5bFFRQkRBSWpCQUVVCnVL
UUFBRVFCQUFBeWxnUUJDd0lqQkFFVXhhUUFBRVFCQUFBeWx3UUJDZ0lqQkFFVTNhUUFBRVFCQUFB
eW1BUUJDUUlqQkFFVWF3NEEKQUVRQkFBQXltUVFCQ0FJakJBRVU2cVFBQUVRQkFBQXltZ1FEQlFJ
akJBRVU5cVFBQUVRQkFBQXltd1FDQXdJakJBRVVBcVVBQUVRQgpBQUF5bkFRQkFnSWpCQUVVRnFV
QUFFUUJBQUF5blFRQkFRSWpCQUVVS3FVQUFFUUJBQUF5bmdRQkFBSWpCQUVBRWlpaEFBQk1wUUFB
CkFaOFFYYVVBQUNBeW94QVgzQUFBQUFJakFBRVJPNklBQUtnQkFBQXlwZ0lqQUFJUlJhSUFBTFdr
QUFBeXB3SWpBQUlSVktVQUFLZ0IKQUFBeXF3SWpBQU1BRG5HbEFBQUJDZ0NsQUFBUEJxVUFBSCts
QUFBQnFnSVFrS1VBQUVCT0NoQVh3S1FBQUFJakFBRVJaS1VBQVBFUApBQUJPRFFJakFBSVJleGNB
QUtnQkFBQk9EZ0lqQUFJUmFhVUFBQXVsQUFCT0R3SWpBQUlSZzZVQUFLZ0JBQUJPRUFJakFBSUFF
elNtCkFBQUVUMmdVeXFVQUFFUUJBQUJQY1FRREhRSWpBQUVVMWFVQUFFUUJBQUJQY2dRQkhBSWpB
QUVVOWFVQUFFUUJBQUJQY3dRQkd3SWoKQUFFVUFhWUFBRVFCQUFCUGRBUUJHZ0lqQUFFVURhWUFB
RVFCQUFCUGRRUUNHQUlqQUFFVUdxWUFBRVFCQUFCUGRnUVlBQUlqQUFFQQpFbWFsQUFBL3BnQUFB
WGdUMnFjQUFBUlBNQlFBQlFBQVJBRUFBRTlNQkFjWkFpTUFBUlJ6cGdBQVJBRUFBRTlOQkFFWUFp
TUFBUlNDCnBnQUFSQUVBQUU5T0JBRVhBaU1BQVJTWHBnQUFSQUVBQUU5UEJBRVdBaU1BQVJTcHBn
QUFSQUVBQUU5UUJBRVZBaU1BQVJTOXBnQUEKUkFFQUFFOVJCQUVVQWlNQUFSVFhwZ0FBUkFFQUFF
OVNCQUVUQWlNQUFSVG5wZ0FBUkFFQUFFOVRCQUlSQWlNQUFSVHRwZ0FBUkFFQQpBRTlVQkFFUUFp
TUFBUlQ1cGdBQVJBRUFBRTlWQkFFUEFpTUFBUlFTcHdBQVJBRUFBRTlXQkFFT0FpTUFBUlF4cHdB
QVJBRUFBRTlYCkJBRU5BaU1BQVJRL3B3QUFSQUVBQUU5WUJBRU1BaU1BQVJSTXB3QUFSQUVBQUU5
WkJBRUxBaU1BQVJSWnB3QUFSQUVBQUU5YUJBRUsKQWlNQUFSUmtwd0FBUkFFQUFFOWJCQUVKQWlN
QUFSU1FvZ0FBUkFFQUFFOWNCQUVJQWlNQUFSUnlwd0FBUkFFQUFFOWRCQUVIQWlNQQpBUlI2cHdB
QVJBRUFBRTllQkFFR0FpTUFBUlNHcHdBQVJBRUFBRTlmQkFFRkFpTUFBUlNZcHdBQVJBRUFBRTln
QkFFRUFpTUFBUlNvCnB3QUFSQUVBQUU5aEJBRURBaU1BQVJTenB3QUFSQUVBQUU5aUJBRUNBaU1B
QVJURXB3QUFSQUVBQUU5akJBRUJBaU1BQVJUVHB3QUEKUkFFQUFFOWtCQUVBQWlNQUFRQVM1cVVB
QU9TbkFBQUJaaEFkcUFBQWVFOTZFQmNYcFFBQUFpTUFBUkdkcFFBQTJRa0FBRTk5QWlNQQpBaEdx
cFFBQXFBRUFBRTkrQWlNQUFoR3hwUUFBMlFrQUFFOS9BaU1BQWhIQXBRQUEyNlVBQUUrQUFpTUFB
aEZKcGdBQWRnY0FBRStCCkFpTUFBaEZZcGdBQWRnY0FBRStDQWlNQUFoRnFwZ0FBc2FjQUFFK0RB
aU1BQWhIdHB3QUFJeElBQUUrRUFpTUFBaEg2cHdBQXFBRUEKQUUrRkFpTUFBZ0FLdktjQUFDY2dV
QkVSUGFnQUFCczZBQUJRRWdJakFBRVJTcWdBQUJzNkFBQlFFd0lqQ0FFUlZhZ0FBQnM2QUFCUQpG
QUlqRUFFbkJGQVZGRitvQUFCRUFRQUFVQllFQVI4Q0l3QUJGRVFSQUFCRUFRQUFVQmdFSHdBQ0l3
QUJBQkdtQVFBQWpLZ0FBRkFaCkFpTVlBUUFTVzZnQUFHaW9BQUFCR2hMUEJBQUFqYWdBQUFGY0V0
Q29BQUNkcUFBQUFSNE93cWdBQUFFRDVxZ0FBQXJzcUFBQUV2R28KQUFEUnFBQUFBUklRQktrQUFB
aFJEQkFYM0FBQUFBSWpBQUVBQ2dHcEFBQm1FREVRQVF5SXFRQUF3QWNBQURFUkFRSWpBQUVNZ3Fr
QQpBSzFaQUFBeEVnRUNJd2dCQUE4WnFRQUFqNmtBQUFFVEFRby9xUUFBSDJFQUFBQUJDU1JGQUFB
SllRQUFBQUFLVUtrQUFBZ0JDU1JGCkFBQUpZUUFBQUFBS1pxa0FBQW9DQmdBQUh3SUdBQUFCQ1NS
RkFBQUpTNmtBQUFsNHFRQUFDV0VBQUFBQUNuMnBBQUFLMldNQUFCL0EKQndBQUFRa2tSUUFBQ1oy
cEFBQUp3QWNBQUFsTHFRQUFDWGlwQUFBSllRQUFBQUFLb3FrQUFCOENCZ0FBQVFra1JRQUFDV0VB
QUFBQQpDc3lwQUFBTzZxa0FBQUVLNHFrQUFCTG9xUUFBOXFrQUFBRVNDQUVKSkVVQUFBbnRxUUFB
Q2ZnREFBQUpZUUFBQUFBSytLa0FBQi80CkF3QUFBUWtrUlFBQUNXRUFBQUFBQ2hTcUFBQWZBZ1lB
QUFFSkpFVUFBQWxMcVFBQUNXRUFBQUFBQ2lxcUFBQUQyV01BQUFwRnFnQUEKQ3NBSEFBQWZTcW9B
QUFFSkpFVUFBQW5BQndBQUNVK3FBQUFKUzZrQUFBbDRxUUFBQ1dFQUFBQUFDbFNxQUFBZmpUOEFB
QUVKSkVVQQpBQW40QXdBQUNXRUFBQUFBQ242cUFBQWZBZ1lBQUFFSkpFVUFBQW40QXdBQUNZMC9B
QUFKWVFBQUFBQUttYW9BQUFnQkNTUkZBQUFKCmlaWUFBQWxoQUFBQUFBcTVxZ0FBSjNoU2Z4RWNx
Z0FBd0FjQUFGS0FBaU1BQVJFa3FnQUFZYWtBQUZLQkFpTUlBUkVycWdBQWM2a0EKQUZLQ0FpTVFB
UkUwcWdBQUphb0FBRktEQWlNWUFSRkVxZ0FBbUtrQUFGS0VBaU1nQVJGSnFnQUFRS29BQUZLRkFp
TW9BUkZYcWdBQQp4NmtBQUZLR0FpTXdBUkZjcWdBQWVhb0FBRktIQWlNNEFSRm1xZ0FBM2FrQUFG
S0lBaU5BQVJGdXFnQUFjNmtBQUZLSkFpTklBUkYwCnFnQUFsS29BQUZLS0FpTlFBUkdCcWdBQXRL
b0FBRktMQWlOWUFSR05xZ0FBeTZvQUFGS01BaU5nQVJHYnFnQUFENm9BQUZLTkFpTm8KQVJHa3Fn
QUFENm9BQUZLT0FpTndBUUFTMEtvQUFLK3FBQUFCanhLMnF3QUF4Nm9BQUFHNUV1U1dBQUJKZ0FB
QU16VVMrWllBQUthQQpBQUF6THhNY3F3QUFVRE0zRVJ5cUFBQkVBUUFBTXpnQ0l3QUJFZm1xQUFE
TXF3QUFNemtDSXdRQkVmNnFBQURYcXdBQU16b0NJd2dCCkViQWNBQUQ4QUFBQU16c0NJeEFCRWVP
cUFBRDhBQUFBTXp3Q0l4Z0JFUWVyQUFEOEFBQUFNejBDSXlBQkVmSUlBQUI5Q0FBQU16NEMKSXln
QkVSR3JBQURJQkFBQU16OENJMGdCQUJMaXF3QUFIS3NBQUFGQ0RrU3JBQUFCQ202c0FBQVNkS3dB
QUV5ckFBQUJDeWxLcWdBQQpLaEVYQUFBRUFBdmVxd0FBU0RTQkFRd2NxZ0FBVXp3QUFEU0RBUUlq
QUFFTWVxc0FBSzFaQUFBMGhBRUNJd1FCRElXckFBQ3RXUUFBCk5JVUJBaU1JQVF5UXF3QUFyVmtB
QURTR0FRSWpEQUVNbnFzQUFLMVpBQUEwaHdFQ0l4QUJESzZyQUFDdFdRQUFOSWdCQWlNVUFReTcK
cXdBQXJWa0FBRFNKQVFJakdBRU14NnNBQUFJR0FBQTBpZ0VDSXh3QkROQ3JBQUFDQmdBQU5Jc0JB
aU1kQVF6WnF3QUFoS3dBQURTTQpBUUlqSUFFQUQ1Q3NBQURlcXdBQUFZNEJEdnVyQUFBQkNrYXRB
QUFTVEswQUFBdXNBQUFCQ0JPQXJBQUFCRk1ZRk5DckFBQkVBUUFBClV4a0VBUjhDSXdBQkZJNE1B
QUJFQVFBQVV4b0VBUjRDSXdBQkZEaXNBQUJFQVFBQVV4c0VBUjBDSXdBQkZFeXNBQUJFQVFBQVV4
d0UKQVJ3Q0l3QUJGRitzQUFCRUFRQUFVeDBFQWhvQ0l3QUJGR21zQUFCRUFRQUFVeDRFQVJrQ0l3
QUJGQ0lGQUFCRUFRQUFVeDhFQVJnQwpJd0FCRkpDckFBQkVBUUFBVXlBRUNCQUNJd0FCRkhtc0FB
QkVBUUFBVXlFRUVBQUNJd0FCQUJDenJBQUFNRk1XRUJmY0FBQUFBaU1BCkFSRXVyQUFBWEswQUFG
TWlBaU1BQWhHTHJBQUEyUWtBQUZNakFpTUFBaEZqRHdBQUZCQUFBRk1rQWlNQUFoR2JyQUFBeUFR
QUFGTWwKQWlNQUFoR25yQUFBeUFRQUFGTW1BaU1BQWdBVGE2MEFBQWhVUnhTdXF3QUFSQUVBQUZS
SUJBZ1lBaU1BQVJUSHF3QUFSQUVBQUZSSgpCQUVYQWlNQUFSVE1yQUFBUkFFQUFGUktCQUVXQWlN
QUFSVGJyQUFBUkFFQUFGUkxCQUVWQWlNQUFSVHdyQUFBUkFFQUFGUk1CQUVVCkFpTUFBUlQ3ckFB
QVJBRUFBRlJOQkFRUUFpTUFBUlFHclFBQVJBRUFBRlJPQkFFUEFpTUFBUlFhclFBQVJBRUFBRlJQ
QkFFT0FpTUEKQVJRanJRQUFSQUVBQUZSUUJBNEFBaU1BQVJRMXJRQUFSQUVBQUZSUkJBZ1lBaU1F
QVJSQnJRQUFSQUVBQUZSU0JBTVZBaU1FQVJSTwpyUUFBUkFFQUFGUlRCQUVVQWlNRUFSUmZyUUFB
UkFFQUFGUlVCQlFBQWlNRUFRQVFxSzBBQUZoVVJSQVhCNjRBQUFJakFBRVJ2cXdBCkFHV3VBQUJV
VlFJakFBSVJmSzBBQUVRQkFBQlVWZ0lqQUFJUmlhMEFBTFFSQUFCVVZ3SWpBQUlSa3EwQUFLWXBB
QUJVV0FJakFBSVIKbkswQUFLZ0JBQUJVV1FJakFBSUFDbGl2QUFBS09xMEFBQXI3QlFBQUV3Q3ZB
QUFFVlJZVUZLNEFBRVFCQUFCVkZ3UUJId0lqQUFFVQp5cVVBQUVRQkFBQlZHQVFESEFJakFBRVVK
SzRBQUVRQkFBQlZHUVFDR2dJakFBRVVOYTRBQUVRQkFBQlZHZ1FFRmdJakFBRVVSYTRBCkFFUUJB
QUJWR3dRQkZRSWpBQUVVU3E0QUFFUUJBQUJWSEFRQkZBSWpBQUVVYks0QUFFUUJBQUJWSFFRQkV3
SWpBQUVVZ2E0QUFFUUIKQUFCVkhnUUJFZ0lqQUFFVW1xNEFBRVFCQUFCVkh3UUJFUUlqQUFFVXE2
NEFBRVFCQUFCVklBUUJFQUlqQUFFVXhhNEFBRVFCQUFCVgpJUVFCRHdJakFBRVV6NjRBQUVRQkFB
QlZJZ1FCRGdJakFBRVUzSzRBQUVRQkFBQlZJd1FCRFFJakFBRVU2cTRBQUVRQkFBQlZKQVFOCkFB
SWpBQUVBRUFxdkFBQllWUklRRnhlbEFBQUNJd0FCRWRrT0FBQVBFQUFBVlJRQ0l3QUNFUUN1QUFB
UEVBQUFWUlVDSXdBQ0VRdXUKQUFERnJ3QUFWU1VDSXdBQ0FBcktzQUFBRTJPd0FBQUVWaG9VUzY4
QUFFUUJBQUJXR3dRQkh3SWpBQUVVV0s4QUFFUUJBQUJXSEFRQgpIZ0lqQUFFVVg2OEFBRVFCQUFC
V0hRUUJIUUlqQUFFVWRhOEFBRVFCQUFCV0hnUUJIQUlqQUFFVVg2SUFBRVFCQUFCV0h3UUJHd0lq
CkFBRVVpSzhBQUVRQkFBQldJQVFCR2dJakFBRVVsYThBQUVRQkFBQldJUVFCR1FJakFBRVVxYThB
QUVRQkFBQldJZ1FCR0FJakFBRVUKdks4QUFFUUJBQUJXSXdRQkZ3SWpBQUVVMEs4QUFFUUJBQUJX
SkFRQkZnSWpBQUVVNTY4QUFFUUJBQUJXSlFRQkZRSWpBQUVVK2E4QQpBRVFCQUFCV0pnUUJGQUlq
QUFFVUNyQUFBRVFCQUFCV0p3UUNFZ0lqQUFFVUY3QUFBRVFCQUFCV0tBUUNFQUlqQUFFVUxiQUFB
RVFCCkFBQldLUVFCRHdJakFBRVVSckFBQUVRQkFBQldLZ1FCRGdJakFBRVVVN0FBQUVRQkFBQldL
d1FCRFFJakFBRVVLQmtBQUVRQkFBQlcKTEFRTkFBSWpBQUVBRUhLd0FBQTRWaElRRjl3QUFBQUNJ
d0FCRVIrdkFBREpzZ0FBVmhZQ0l3QURFU3F2QUFEWkNRQUFWaGNDSXdBRApFVEd2QUFDb0FRQUFW
aGdDSXdBREVUeXZBQUNvQVFBQVZoa0NJd0FERVVPdkFBQVBzUUFBVmkwQ0l3QURFV3l3QUFEWkNR
QUFWaTRDCkl3QURBQXBjc2dBQUN2UUpBQUFTenJJQUFNNndBQUFCQ0JKaEFBQUFBckVBQUFGQkVy
WUdBQUFoc1FBQUFWb1NZUUFBQURLeEFBQUIKUWc1TXNRQUFBUXIvc2dBQUVnV3pBQUJUc1FBQUFR
b0tJbEFBQUE5OUJ3QUFaYkVBQUFFSUFRb2Fzd0FBQ2tzSUFBQVN0Z1lBQUhteApBQUFCRWhJaEtn
QUEyTEVBQUFFdERqK3lBQUFCQ2thekFBQVNUTE1BQUV1eUFBQUJFQklZbVFBQWxJa0FBQUViWjZO
UEFBQ2dKd0FBCkFBQUFBSmdvQUFBQUFBQUFBVlkzSFFFQUFBRUtCVVZPQUFDYklBQUFBQXBxYWdB
QUg1a0hBQUFCQ2NBSEFBQUpUNm9BQUFtUHN3QUEKQ1dFQUFBQUFDcFN6QUFBSUFRbVpCd0FBQ1dF
QUFBQUFDclN6QUFBU3lBUUFBTXF5QUFBQnBBN25zZ0FBQVFQUnN3QUFDdGV6QUFBUwozTE1BQU8r
eUFBQUJJaEFKc3dBQUVGZEZFQmR2R3dBQUFpTUFBUkg5c2dBQVJVNEFBRmRHQWlNQUFnQVN0Z1lB
QUNPekFBQUJIU1JwCnN3QUFBUkFLR2JRQUFCQ0Zzd0FBS0ZkTkVCZnNzd0FBQWlNQUFSRVdzd0FB
RHJRQUFGZE9BaU1BQWhFdnN3QUFSQUVBQUZkUEFpTUEKQWhGTHN3QUFSQUVBQUZkUUFpTUFBaEZl
c3dBQUlMUUFBRmRSQWlNQUFnQUtKYlFBQUJJaEtnQUF5N01BQUFFNEtjZ0VBQUFxRVJjQQpBQUlB
S2NnRUFBQXFFUmNBQUFRQUtjZ0VBQUFxRVJjQUFBVUFLY2dFQUFBcUVSY0FBQVlBS2NnRUFBQXFF
UmNBQUEwQWFEaFl0aWM0CldMY1JLN1FBQU1nRUFBQll1QUlqQUFFUk43UUFBTWdFQUFCWXVRSWpC
QUVSUXJRQUFDZ0FBQUJZdWdJakNBRVJTN1FBQVB3QUFBQlkKdkFJakVBRVJVclFBQVB3QUFBQll2
UUlqR0FFUldiUUFBTWdFQUFCWXZnSWpJQUVSWWJRQUFOa2JBQUJZdndJakpBRVJ0UkFBQU5rYgpB
QUJZd0FJakpnRVJiclFBQUlTMEFBQll3UUlqS0FFQUVTVzBBQURFdEFBQVdNTUNJd0FCSnpCWXhC
RjR0QUFBMlFrQUFGakZBaU1BCkFSRjl0QUFBMlFrQUFGakdBaU1JQVJHSHRBQUFkZ2NBQUZqSEFp
TVFBUkdQdEFBQW93a0FBRmpJQWlNU0FSR1p0QUFBeUFRQUFGaksKQWlNVUFSRWlCUUFBa0xRQUFG
akxBaU1ZQVFBUjA2RUFBRisxQUFCWXpRSWpBQUVuTUZqT0VTdTBBQURJQkFBQVdNOENJd0FCRWEy
MApBQUR4RHdBQVdOQUNJd2dCRWJ5MEFBQmhBQUFBV05FQ0l4QUJFU0lGQUFDY3RBQUFXTk1DSXhn
QkFCR2t0QUFBemJVQUFGalZBaU1BCkFTYzRXTllSUzdRQUFQd0FBQUJZMXdJakFBRVJVclFBQVB3
QUFBQlkyQUlqQ0FFUjBiUUFBUHdBQUFCWTJRSWpFQUVSV2JRQUFOa2IKQUFCWTJ3SWpHQUVSdFJB
QUFOa2JBQUJZM0FJakdnRVJiclFBQUp5MEFBQlkzUUlqSEFFQUVjVzBBQUFkdGdBQVdOOENJd0FC
SnpoWQo0QkZMdEFBQS9BQUFBRmpoQWlNQUFSRlN0QUFBL0FBQUFGamlBaU1JQVJIUnRBQUEvQUFB
QUZqakFpTVFBUkVpQlFBQXFMUUFBRmpsCkFpTVlBUUFSMkxRQUFJdTJBQUJZNXdJakFBRW5LRmpv
RVZtMEFBRFpHd0FBV09rQ0l3QUJFZkMwQUFDakNRQUFXT29DSXdJQkVTSUYKQUFDakNRQUFXT3ND
SXdNQkVTcXlBQURJQkFBQVdPd0NJd1FCRWYyMEFBQW9BQUFBV08wQ0l3Z0JFVzYwQUFDb3RBQUFX
TzhDSXd3QgpBQkhrdEFBQTI3WUFBRmp4QWlNQUFTY3dXUElSV2JRQUFNZ0VBQUJZOHdJakFBRVJE
YlVBQVBFUEFBQlk5QUlqQ0FFUkU3VUFBUEVQCkFBQlk5UUlqRUFFUklnVUFBSnkwQUFCWTl3SWpH
QUVBRVFpMUFBQkp0d0FBV1BrQ0l3QUJFUm0xQUFDMHRBQUFXUHNDSXdBQkVTbTEKQUFDMHRBQUFX
UHdDSXdBQkFCQkh0UUFBb0Zpc0VCZmNBQUFBQWlNQUFSSEZzd0FBZWJRQUFGaXVBaU1BQWhIWHN3
QUFPUUVBQUZpdgpBaU1BQWhIaHN3QUFSQUVBQUZpd0FpTUFBaEh3c3dBQXFBRUFBRml4QWlNQUFo
SDlzd0FBR3pvQUFGaXlBaU1BQWhFSXRBQUE4UThBCkFGaXpBaU1BQWhIT0NBQUExaklBQUZpMEFp
TUFBaEVXdEFBQWdoc0FBRmkxQWlNQUFoRWZ0QUFBd0xRQUFGaitBaU1BQWhFOXRRQUEKWVFBQUFG
ai9BaU1BQWd5MUVBQUFZUUFBQUZnQkFRSWpBQUlNYnJRQUFHRUFBQUJZQWdFQ0l3QUNBQXE0dHdB
QUNpZ0FBQUFLb3drQQpBQ1NpdFFBQUFSQUtrTGdBQUE3U3RRQUFBUU9jdUFBQUNxSzRBQUFTcDdn
QUFONjFBQUFCRFNUMXRRQUFBUkFLdDdnQUFHV1J0Z0FBCm9GbkRBaEFYM0FBQUFBSWpBQUVNanJV
QUFMa0hBQUJaeVFJQ0l3QURESlcxQUFDWHVBQUFXY29DQWlNQUF3eTF0UUFBckxnQUFGbkwKQWdJ
akFBTU02N1VBQUw2NEFBQlp6QUlDSXdBRERMSThBQUM1QndBQVdjMENBaU1BQXd3Qk1nQUF1UWNB
QUZuT0FnSWpBQU1NTnpJQQpBTGtIQUFCWnp3SUNJd0FEREFlMkFBQzVCd0FBV2RBQ0FpTUFBd3dT
dGdBQXVRY0FBRm5SQWdJakFBTU1IYllBQUxrSEFBQlowZ0lDCkl3QUREQ2kyQUFDNUJ3QUFXZE1D
QWlNQUF3d3p0Z0FBdVFjQUFGblVBZ0lqQUFNTVByWUFBTGtIQUFCWjFRSUNJd0FEREVtMkFBQzUK
QndBQVdkWUNBaU1BQXd4VnRnQUF1UWNBQUZuWEFnSWpBQU1NWWJZQUFMa0hBQUJaMkFJQ0l3QURE
RzIyQUFDNUJ3QUFXZGtDQWlNQQpBd3g1dGdBQXVRY0FBRm5hQWdJakFBTU1oYllBQUxrSEFBQloy
d0lDSXdBREFBckR1QUFBRUxPMkFBQUlXZ2tRRjl3QUFBQUNJd0FCCkFBb011Z0FBSnhoYkhCSEF0
Z0FBZFhFQUFGc2RBaU1BQVJIS3RnQUF1UWNBQUZzZUFpTUlBUkhVdGdBQXVRY0FBRnNmQWlNUUFR
QVMKSkxvQUFOcTJBQUFCSUNjd1hCZ1J1N1lBQUZhNkFBQmNHUUlqQUFFUjRiWUFBRmE2QUFCY0dn
SWpHQUVBRW1HNkFBRHF0Z0FBQVJzawpSYmNBQUFFUUNvKzZBQUFrbmJjQUFBRVFDcHU2QUFBUXM3
Y0FBUEJkSGhBWEdBOEFBQUlqQUFFUi83WUFBQWU2QUFCZEpBSWpBQU1SCkJyY0FBQThRQUFCZEpn
SWpBQU1SRWJjQUFLTUpBQUJkSndJakFBTVJKTGNBQUtNSkFBQmRLQUlqQUFNUk9yY0FBQ0VxQUFC
ZExnSWoKQUFNUlVEUUFBSmE2QUFCZEx3SWpBQU1STnpJQUFMa0hBQUJkTUFJakFBTVJkZ2dBQUtn
QkFBQmRNUUlqQUFNUmd4Y0FBQ2NLQUFCZApNd0lqQUFNUldiY0FBQ2NLQUFCZE5BSWpBQU1SYUxj
QUFLTUpBQUJkTlFJakFBTVJlcmNBQU93UEFBQmROZ0lqQUFNUmlMY0FBS0s2CkFBQmROd0lqQUFN
QUNxZTZBQUFLdGdZQUFDVGh0d0FBQVJBS2g3c0FBQkQwdHdBQUVDTjJFQmZjQUFBQUFpTUFBUkZR
TkFBQWpyc0EKQUNONUFpTUFBd0FLazdzQUFBOTlCd0FBSDdnQUFENmlCQko5Q0FBQUxyZ0FBRDVI
RDMwSEFBQkV1QUFBUGdNRkQ5bGpBQUJsdUFBQQpQcTRFRDlsakFBQ3J1QUFBWHNNRUM4QzRBQUFH
WGc4RkRKZTRBQUN0V1FBQVhoUUZBaU1BQVF5Z3VBQUE2YnNBQUY0WkJRSWpCQUVBCkQvVzdBQURB
dUFBQVBoc0ZEOWxqQUFEanVBQUFYczRFQy9lNEFBQUNYaWNGRE5xNEFBQXJ2QUFBWGl3RkFpTUFB
UXlndUFBQTZic0EKQUY0eEJRSWpBUUVBRHplOEFBRDN1QUFBUGpNRkN4QzVBQUFCWGo4RkRJNnlB
QURaWXdBQVhrUUZBaU1BQVFBUGJid0FBQkM1QUFBKwpSZ1VMSXJrQUFFQStFUUVNSEtvQUFGTThB
QUErRmdFQ0l3QUJEQnE0QUFDNnV3QUFQaHNCQWlNRUFRenlDQUFBeHJzQUFENGhBUUlqCkJnRU1O
YmdBQUsxWkFBQStKZ0VDSXlZQkRLQzJBQUN0V1FBQVBpc0JBaU1xQVF3cXNnQUFyVmtBQUQ0d0FR
SWpMZ0VNSWdVQUFGTTgKQUFBK05RRUNJeklCRERtNEFBRFJ1d0FBUGp3QkFpTTJBUXhadUFBQTNi
c0FBRDVDQVFJak9BRU1lN2dBQU5sakFBQStSd0VDSXprQgphUVkrU1FFTWpiZ0FBQis4QUFBK1Nn
RUNJd0FCRE5PNEFBQmh2QUFBUGtzQkFpTUFBUXdIdVFBQWg3d0FBRDVNQVFJakFBRUFESU80CkFB
QTh2UUFBUGswQkFpTTZBUUFQazd3QUFDSzVBQUFCVHdFRGc3MEFBQXFQdlFBQUVGaTVBQUFZWHdn
UUYyZ0tBQUFDSXdBQklaNUMKQUFDMkJnQUFYeEVNQUFxWnZRQUFEblM1QUFBQkVyMjlBQUNFdVFB
QUFYTUt3NzBBQUE3QXVRQUFBUXJUdlFBQUV0bTlBQURhdVFBQQpBUWtEZlFnQUFBcnB2UUFBRGdX
NkFBQUJDdk85QUFBUUZMb0FBQkJnSmhBWDNBQUFBQUlqQUFFaE1Rd0FBUElNQUFCZ05CZ2g4Z2dB
CkFIMElBQUJnT0F3Ujdoa0FBUG05QUFCZ0tRSWpBQU1BQ3Y2OUFBQVNZUUFBQURtNkFBQUJiUXFw
QUFBQUVrUUJBQUE4dXdBQVlhOFMKNUZrQUFGYTdBQUJoWFJKWXZnQUFZTHNBQUdHd0VzZ0VBQUNu
dXdBQVlWNFNicjRBQUxHN0FBQmhzV1lZWVV3QkRESzdBQUJOdmdBQQpZVTRCQWlNQUFReE11d0FB
WTc0QUFHRlBBUUlqQkFFTWNMc0FBQVZhQUFCaFVBRUNJd2dCRElHN0FBQUZXZ0FBWVZFQkFpTU1B
UXlSCnV3QUFZNzRBQUdGU0FRSWpFQUVNbjdzQUFIbStBQUJoVXdFQ0l4UUJBQStFdmdBQXY3c0FB
R0pVQVFycXZnQUFDQUVKOXI0QUFBbjIKdmdBQUFBcjd2Z0FBRWdpL0FBRFJ1d0FBWWxBU0RiOEFB
T1M3QUFCaVV4OFl2d0FBQVFuMnZnQUFBQW9qdndBQUVpKy9BQUR5dXdBQQpZbG9TendRQUFBKzhB
QUJpSGhJL3Z3QUFHYndBQUdKbEVrcS9BQUFsdkFBQVlpa1N5QVFBQUVlOEFBQmlSMnBndndBQUFR
cHJ2d0FBCkVuRy9BQUJWdkFBQVltRVNSQUVBQUorOEFBQmgxaWNNWWQ4UmtMd0FBRmkrQUFCaDRR
SWpBQUVSbGJ3QUFHTytBQUJoNGdJakJBRVUKbXJ3QUFFUUJBQUJoNHdRWUNBSWpDQUVVNUo4QUFJ
Ry9BQUJoNUFRSUFBSWpDQUVBRW95L0FBQzZ2QUFBWXVVSzA3OEFBQkxldndBQQoxYndBQUdKa0Uv
eThBQUFvWW1rUk9yd0FBSGEvQUFCaWFnSWpBQUVSYUx3QUFBMi9BQUJpYXdJakNBRVJkYndBQUVR
QkFBQmliQUlqCkVBRVJlcndBQUVRQkFBQmliUUlqRkFFUmhyd0FBT08vQUFCaWJ3SWpHQUVSN3J3
QUFFUUJBQUJpY0FJaklBRUFFdTYvQUFBUHZRQUEKWW5RcFVjQUFBQ29SRndBQUFBQVRKcjBBQUVo
aWVSRXJ1d0FBTkw4QUFHSjZBaU1BQVJIaHFBQUFlYjRBQUdKN0FpTUlBUkhucUFBQQplYjRBQUdK
OEFpTU1BUkVIdkFBQVk3NEFBR0o5QWlNUUFSRWlCUUFBVmI4QUFHSitBaU1ZQVJFeXZBQUFYTUFB
QUdLQUFpTWdBUUFLCmFNQUFBQkxMd0FBQU5MMEFBQUdCRDg4RUFBQlJ2UUFBQVJNQkRteTlBQUFC
Q3VmQUFBQVM3Y0FBQUh1OUFBQUJLZzZkdlFBQUFRcjkKd0FBQUVMcTlBQUFRWXhFUUY5d0FBQUFD
SXdBQkVlNFpBQUFEd1FBQVl4UUNJd0FEQUFvSXdRQUFFT1M5QUFBWVpBMFFGOXdBQUFBQwpJd0FC
SVk2OUFBQXF3UUFBWkNJWUlRVU1BQUNvQVFBQVpDZ1lJZEM5QUFDakNRQUFaQzBPRVJRTUFBQmhB
QUFBWkJFQ0l3QURFYVlCCkFBQzJCZ0FBWkJJQ0l3QURBQkF4dmdBQUdHVUpFQmZjQUFBQUFpTUFB
U0lBREFBQTJRa0FBR1VTR3I0QUFBRVJJNzRBQU5rSkFBQmwKREFJakFBSVJLNzRBQUdFQUFBQmxE
UUlqQUFJQUNvVEJBQUFRUWI0QUFCaGtSUkFYTDhFQUFBSWpBQUVoOEwwQUFOa0pBQUJrVGlnaAor
TDBBQUtNSkFBQmtWZzRoQWI0QUFLTUpBQUJrWGc0aERMNEFBTVhCQUFCa1pCZ0FDc3JCQUFBRGRw
OEFBQW9Td2dBQUVoZkNBQUIzCnZnQUFBUlVTd0FjQUFKQytBQUFCYnc3SnZnQUFBUU15d2dBQUNq
akNBQUFTUGNJQUFOUytBQUFCTVNtSVB3QUFLaEVYQUFBQkFDa28KQUFBQUtoRVhBQUFQQUFxSUNB
QUFDbzAvQUFBS2FzSUFBQXBDd2dBQUVuVnhBQUJQd0FBQUFhUU9qTUFBQUFFS2hNSUFBQktLd2dB
QQpvc0FBQUFFd0RzTEFBQUFCQ3ByQ0FBQVNvTUlBQU5yQUFBQUJQQU1jY0FBQUNyRENBQUFTdGNJ
QUFQL0FBQUFCTkE5dW5BQUFJY0VBCkFBR3JBUXJicUFBQURudkJBQUFCQ3RiQ0FBQVAzTUlBQUlY
QkFBQUJ0QUVLSWdvQUFCQ3F3UUFBQ0dZS0VCZmNBQUFBQWlNQUFRQUsKOHNJQUFCSjhjUUFBNk1F
QUFHY3JFaWNLQUFEK3dRQUFaeklTdGdZQUFBckNBQUJuVUJKOGNRQUFITUlBQUdjNUp4aG5WaEVx
c2dBQQpDc01BQUdkWUFpTUFBUkgwd1FBQUZjTUFBR2RaQWlNSUFSSFV0Z0FBSU1NQUFHZGFBaU1N
QVJFV3dnQUFLOE1BQUdkYkFpTVFBUUFTCk5zTUFBQ2pDQUFCb1lDVFZ3Z0FBQVJBS2dzTUFBQkRs
d2dBQUVHZzRFQmZjQUFBQUFpTUFBU0xodGdBQWQ4TUFBR2hLTDhJQUFBRWkKUE1JQUFDZ0FBQUJv
VGtyQ0FBQUJJbHpDQUFBb0FBQUFhRkpzd2dBQUFTS0F3Z0FBSWxBQUFHaFdrOElBQUFFaXFzSUFB
RXNJQUFCbwpXcmJDQUFBQkVjYkNBQUNKd3dBQWFEc0NJd0FEQUFxT3d3QUFDdlFCQUFBRElsQUFB
QW9LeEFBQUQ4U2RBQUJMd3dBQUFmRUJDQUVKCnRnWUFBQWxoQUFBQUNiWUdBQUFKWVFBQUFBbTJC
Z0FBQUFvZ3hBQUFEenpFQUFCdnd3QUFBZlVCQ3BzREFBQVNKd29BQU4zREFBQUIKR2hQZXhBQUFC
R2tTRlBPdEFBQkVBUUFBYVJNRUFSOENJd0FCRkZ2RUFBQkVBUUFBYVJRRUFSNENJd0FCRkd6RUFB
QkVBUUFBYVJVRQpBUjBDSXdBQkZIWEVBQUJFQVFBQWFSWUVBUndDSXdBQkZJWEVBQUJFQVFBQWFS
Y0VBUnNDSXdBQkZKREVBQUJFQVFBQWFSZ0VBUm9DCkl3QUJGS0RFQUFCRUFRQUFhUmtFQVJrQ0l3
QUJGTDNFQUFCRUFRQUFhUm9FQVJnQ0l3QUJGTWZFQUFCRUFRQUFhUnNFQVJjQ0l3QUIKRk5IRUFB
QkVBUUFBYVJ3RUFSWUNJd0FCRkNJRkFBQkVBUUFBYVIwRUZnQUNJd0FCQUJEcHhBQUFzR2tORUJj
WUR3QUFBaU1BQVJGawpwUUFBOFE4QUFHa1FBaU1BQWhGTHhBQUFxQUVBQUdrUkFpTUFBaEZSeEFB
QVhjUUFBR2tlQWlNQUFnQUtMTVVBQUFBQkVRRWxEaE1GCkF3NFJBUkFHR3c3aGZ3emxmd3NBQUFJ
a0FBTU9QZ3NMQ3dBQUF5WUFTUk1BQUFRMEFBTU9TUk0vRERvTE93c0NDZ0FBQlRRQUF3NUoKRXpv
TE93c0FBQVkwQUFNT1NSTTZDenNGQUFBSER3QUFBQWdWQVNjTUFBQUpCUUJKRXdBQUNnOEFTUk1B
QUFzVEFRTU9Dd3M2Q3pzRgpBQUFNRFFBRERra1RPZ3M3QlRnS01nc0FBQTAwQUFNT1NSTS9ERG9M
T3dVQ0NnQUFEaE1BQXc0OERBQUFEeFlBU1JNRERqb0xPd1VBCkFCQVRBUU1PQ3dzNkN6c0w1bjhM
QUFBUkRRQUREa2tUT2dzN0N6Z0tNZ3NBQUJJV0FFa1RBdzQ2Q3pzTEFBQVRFd0VERGdzTE9nczcK
Q3dBQUZBMEFBdzVKRXpvTE93c0xDdzBMREFzNENqSUxBQUFWRXdFRERnc0xBQUFXRFFBRERra1RP
QW95Q3dBQUZ4d0FTUk00Q2pJTApBQUFZTkFBRERra1RPZ3M3QlFJS0FBQVpMZ0VERGpvTE93VkpF
eUFMQUFBYUxnRUREam9MT3d0SkV5QUxBQUFiTkFBRERra1RPZ3M3CkN3SUtBQUFjRlFGSkV3QUFI
UmdBQUFBZUV3SGtmd3dERGdzTE9nczdCUUFBSHhVQlNSTW5EQUFBSUM0QkF3NDZDenNGSnd4SkV5
QUwKQUFBaGdJUUJBT2gvRGtrVE9nczdDK3QvQ3dBQUlvQ0VBUURvZnc1SkV6b0xPd3ZxZnc3cmZ3
c0FBQ09BaEFFQTZIOE9TUk02Q3pzRgo2MzhMQUFBa0V3QUREandNNW44TEFBQWxOUUJKRXdBQUpn
MEFBdzVKRXpvTE93VUxDdzBMREFzNENqSUxBQUFuRXdFTEN6b0xPd3NBCkFDZ2tBQU1PQ3dzK0N3
QUFLUUVCU1JNQUFDb2hBRWtUTHdzQUFDc0VBVWtUYlF3RERnc0xPZ3M3Q3dBQUxDZ0FBdzRjRFFB
QUxSTUIKQXc0TEJUb0xPd3ZtZndzQUFDNDBBQU1PT2dzN0JVa1RBQUF2Q3dFQUFEQXVBUU1PT2dz
N0N5Y01Qd3dSQVJJQlFBb2dDd0FBTVFVQQpBdzQ2Q3pzTFNSTUNCZ0FBTWk0QkF3NDZDenNMSnd4
SkV6OE1FUUVTQVVBS0FBQXpOQUFERGpvTE93dEpFd0lLQUFBME5BQUREam9MCk93dEpFd0lHQUFB
MU5BQUREam9MT3dWSkV3SUdBQUEyTGdFRERqb0xPd1VuREVrVFB3d1JBUklCUUFvQUFEY0ZBQU1P
T2dzN0JVa1QKQWdZQUFEZ3VBUU1PT2dzN0JTY01Qd3dSQVJJQlFBb0FBRGtMQVJFQkVnRUFBRG8w
QUFNT09nczdCVWtUQWdvQUFEc2RBVEVURVFFUwpBVmdMV1FVQUFEd0ZBQU1PT2dzN0Mwa1RBZ29B
QUQwdUFBTU9PZ3M3QlNjTVB3d1JBUklCUUFvQUFENGRBVEVUVlFaWUMxa0ZBQUEvCk5BQXhFd0lH
QUFCQUxnQUREam9MT3dVbkRFa1RQd3dSQVJJQlFBb0FBRUVtQUFBQVFnVUFBdzQ2Q3pzRlNSTUND
Z0FBUXdVQUF3NDYKQ3pzRlNSTUFBRVFGQUFNT09nczdCVWtUSEFvQUFFVTBBQU1PT2dzN0JVa1RI
QW9BQUVZRkFBTU9PZ3M3QzBrVEhBb0FBRWNGQURFVApBZ1lBQUVndUFRTU9PZ3M3QlNjTVNSTS9E
Q0FMQUFCSkxnRUREam9MT3dVbkRFa1RQd3dSQVJJQlFBb2dDd0FBU2gwQU1STlZCbGdMCldRVUFB
RXN1QVFNT09nczdCU2NNRVFFU0FVQUtaQk1BQUV3RkFBTU9PZ3M3QlVrVE5Bd0NCZ0FBVFRRQU1S
TUNDZ0FBVGpRQU1STWMKQ2dBQVR3c0JWUVlBQUZBRkFERVRBZ29BQUZFZEFURVRWUVpZQzFrTEFB
QlNIUUF4RTFVR1dBdFpDd0FBVXgwQU1STVJBUklCV0F0WgpCUUFBVkM0QkF3NDZDenNGSnd3L0RC
RUJFZ0ZBQ2lBTEFBQlZMZ0VERGpvTE93VkpFeEVCRWdGQUNnQUFWaTRBQXc0NkN6c0ZTUk1SCkFS
SUJRQW9BQUZjdUFRTU9PZ3M3QlNjTVNSTVJBUklCUUFvQUFGZ3VBUU1PT2dzN0N5Y01TUk1nQ3dB
QVdRVUFBdzQ2Q3pzTFNSTUEKQUZvdUFRTU9PZ3M3QlNjTUlBc0FBRnMwQUFNT09nczdDMGtUQUFC
Y0xnRUREam9MT3dzbkRFa1RBQUJkTGdFRERqb0xPd1VuREVrVApBQUJlTGdFRERqb0xPd1VuREJF
QkVnRkFDZ0FBWHk0QkF3NDZDenNMSnd3Z0N3QUFZQVFCU1JOdERBTU9Dd3M2Q3pzRkFBQmhCQUVM
CkN6b0xPd3NBQUdJRUFRc0xPZ3M3QlFBQVl3UUJBdzRMQ3pvTE93c0FBR1FFQVFNT0N3czZDenNG
QUFCbEV3RUREZ3NMT2dzN0JlWi8KQ3dBQVpoTUJDd3M2Q3pzRkFBQm5MZ0V4RXhFQkVnRkFDZ0FB
YUJjQkN3czZDenNMQUFCcEZ3RUxDem9MT3dVQUFHb1ZBRWtUSnd3QQpBQUJMR1FBQUFnQWNEUUFB
QVFIN0RnMEFBUUVCQVFBQUFBRUFBQUV2VlhObGNuTXZZV3hsZUdOb2NtbHpkR1Z1YzJWdUwzZGxZ
bXRwCmRDOUpiblJsY201aGJDOVhaV0pMYVhSVGVYTjBaVzFKYm5SbGNtWmhZMlVBTDNWemNpOXBi
bU5zZFdSbEwyOWlhbU1BTDFONWMzUmwKYlM5TWFXSnlZWEo1TDBaeVlXMWxkMjl5YTNNdlFYQndi
R2xqWVhScGIyNVRaWEoyYVdObGN5NW1jbUZ0WlhkdmNtc3ZSbkpoYldWMwpiM0pyY3k5RGIzSmxS
M0poY0docFkzTXVabkpoYldWM2IzSnJMMGhsWVdSbGNuTUFMMU41YzNSbGJTOU1hV0p5WVhKNUww
WnlZVzFsCmQyOXlhM012UVhCd1MybDBMbVp5WVcxbGQyOXlheTlJWldGa1pYSnpBQzlUZVhOMFpX
MHZUR2xpY21GeWVTOUdjbUZ0WlhkdmNtdHoKTDFGMVlYSjBla052Y21VdVpuSmhiV1YzYjNKckww
aGxZV1JsY25NQUwxTjVjM1JsYlM5TWFXSnlZWEo1TDBaeVlXMWxkMjl5YTNNdgpSbTkxYm1SaGRH
bHZiaTVtY21GdFpYZHZjbXN2U0dWaFpHVnljd0F2VTNsemRHVnRMMHhwWW5KaGNua3ZSbkpoYldW
M2IzSnJjeTlCCmNIQkxhWFF1Wm5KaGJXVjNiM0pyTDFCeWFYWmhkR1ZJWldGa1pYSnpBQzlUZVhO
MFpXMHZUR2xpY21GeWVTOUdjbUZ0WlhkdmNtdHoKTDFGMVlYSjBla052Y21VdVpuSmhiV1YzYjNK
ckwxQnlhWFpoZEdWSVpXRmtaWEp6QUM5VGVYTjBaVzB2VEdsaWNtRnllUzlRY21sMgpZWFJsUm5K
aGJXVjNiM0pyY3k5WFpXSkRiMjUwWlc1MFFXNWhiSGx6YVhNdVpuSmhiV1YzYjNKckwwaGxZV1Js
Y25NQUwxTjVjM1JsCmJTOU1hV0p5WVhKNUwwWnlZVzFsZDI5eWEzTXZRMjl5WlVadmRXNWtZWFJw
YjI0dVpuSmhiV1YzYjNKckwxQnlhWFpoZEdWSVpXRmsKWlhKekFDOVRlWE4wWlcwdlRHbGljbUZ5
ZVM5R2NtRnRaWGR2Y210ekwxTmxZM1Z5YVhSNUxtWnlZVzFsZDI5eWF5OUlaV0ZrWlhKegpBQzkx
YzNJdmFXNWpiSFZrWlFBdlUzbHpkR1Z0TDB4cFluSmhjbmt2Um5KaGJXVjNiM0pyY3k5RGIzSmxS
bTkxYm1SaGRHbHZiaTVtCmNtRnRaWGR2Y21zdlNHVmhaR1Z5Y3dBdlUzbHpkR1Z0TDB4cFluSmhj
bmt2Um5KaGJXVjNiM0pyY3k5QmNIQnNhV05oZEdsdmJsTmwKY25acFkyVnpMbVp5WVcxbGQyOXlh
eTlHY21GdFpYZHZjbXR6TDBOdmNtVkhjbUZ3YUdsamN5NW1jbUZ0WlhkdmNtc3ZVSEpwZG1GMApa
VWhsWVdSbGNuTUFMMU41YzNSbGJTOU1hV0p5WVhKNUwwWnlZVzFsZDI5eWEzTXZRWEJ3YkdsallY
UnBiMjVUWlhKMmFXTmxjeTVtCmNtRnRaWGR2Y21zdlJuSmhiV1YzYjNKcmN5OUlTVk5sY25acFky
VnpMbVp5WVcxbGQyOXlheTlRY21sMllYUmxTR1ZoWkdWeWN3QXYKVTNsemRHVnRMMHhwWW5KaGNu
a3ZSbkpoYldWM2IzSnJjeTlSVkV0cGRDNW1jbUZ0WlhkdmNtc3ZVSEpwZG1GMFpVaGxZV1JsY25N
QQpMMU41YzNSbGJTOU1hV0p5WVhKNUwwWnlZVzFsZDI5eWEzTXZRMjl5WlZObGNuWnBZMlZ6TG1a
eVlXMWxkMjl5YXk5R2NtRnRaWGR2CmNtdHpMMHhoZFc1amFGTmxjblpwWTJWekxtWnlZVzFsZDI5
eWF5OVFjbWwyWVhSbFNHVmhaR1Z5Y3dBdlUzbHpkR1Z0TDB4cFluSmgKY25rdlJuSmhiV1YzYjNK
cmN5OURZWEppYjI0dVpuSmhiV1YzYjNKckwwWnlZVzFsZDI5eWEzTXZTRWxVYjI5c1ltOTRMbVp5
WVcxbApkMjl5YXk5SVpXRmtaWEp6QUM5VGVYTjBaVzB2VEdsaWNtRnllUzlHY21GdFpYZHZjbXR6
TDBOdmNtVlRaWEoyYVdObGN5NW1jbUZ0ClpYZHZjbXN2Um5KaGJXVjNiM0pyY3k5QlJTNW1jbUZ0
WlhkdmNtc3ZTR1ZoWkdWeWN3QXZVM2x6ZEdWdEwweHBZbkpoY25rdlJuSmgKYldWM2IzSnJjeTlE
Ums1bGRIZHZjbXN1Wm5KaGJXVjNiM0pyTDFCeWFYWmhkR1ZJWldGa1pYSnpBQzkxYzNJdmJHOWpZ
V3d2YVc1agpiSFZrWlFBdmRYTnlMMnh2WTJGc0wybHVZMngxWkdVdlpHbHpjR0YwWTJnQUwxTjVj
M1JsYlM5TWFXSnlZWEo1TDBaeVlXMWxkMjl5CmEzTXZVVlJMYVhRdVpuSmhiV1YzYjNKckwwaGxZ
V1JsY25NQUwzVnpjaTlwYm1Oc2RXUmxMMjFoWTJnQUwxTjVjM1JsYlM5TWFXSnkKWVhKNUwwWnlZ
VzFsZDI5eWEzTXZRMjl5WlUxbFpHbGhMbVp5WVcxbGQyOXlheTlJWldGa1pYSnpBQzlUZVhOMFpX
MHZUR2xpY21GeQplUzlHY21GdFpYZHZjbXR6TDBGV1JtOTFibVJoZEdsdmJpNW1jbUZ0WlhkdmNt
c3ZTR1ZoWkdWeWN3QUFWMlZpUzJsMFUzbHpkR1Z0ClNXNTBaWEptWVdObExtMEFBUUFBVGxOUFlt
cGxZM1F1YUFBQ0FBQkRSMGRsYjIxbGRISjVMbWdBQXdBQVRsTkRkWEp6YjNJdWFBQUUKQUFCT1Ux
SmxjM0J2Ym1SbGNpNW9BQVFBQUU1VFYybHVaRzkzTG1nQUJBQUFUbE5XYVdWM0xtZ0FCQUFBUTBG
TVlYbGxjaTVvQUFVQQpBRU5CVkhKaGJuTm1iM0p0TTBRdWFBQUZBQUJPVTBGeWNtRjVMbWdBQmdB
QVRsTlRkSEpwYm1jdWFBQUdBQUJPVTBScFkzUnBiMjVoCmNua3VhQUFHQUFCT1UwOWlha05TZFc1
MGFXMWxMbWdBQmdBQVRsTkRiMnh2Y2k1b0FBUUFBRTVUU1cxaFoyVXVhQUFFQUFCT1UxTmwKZEM1
b0FBWUFBRTVUVlZKTUxtZ0FCZ0FBVGxOWGFXNWtiM2RmVUhKcGRtRjBaUzVvQUFjQUFFNVRSRzlq
YTFScGJHVXVhQUFFQUFCTwpVMVZ1Wkc5TllXNWhaMlZ5TG1nQUJnQUFUbE5YYVc1a2IzZERiMjUw
Y205c2JHVnlMbWdBQkFBQVRsTkViMk4xYldWdWRDNW9BQVFBCkFFNVRVSEpwYm5SSmJtWnZMbWdB
QkFBQVRsTk1iMk5yTG1nQUJnQUFUbE5IY21Gd2FHbGpjME52Ym5SbGVIUXVhQUFFQUFCT1UwMWgK
Y0ZSaFlteGxMbWdBQmdBQVRsTkRiMnh2Y2xOd1lXTmxMbWdBQkFBQVRsTlViMjlzWW1GeUxtZ0FC
QUFBVGxORVlYUmhMbWdBQmdBQQpUbE5GY25KdmNpNW9BQVlBQUU1VFFYQndiR2xqWVhScGIyNHVh
QUFFQUFCT1UwRndjR1ZoY21GdVkyVXVhQUFFQUFCT1UwSjFibVJzClpTNW9BQVlBQUU1VFZWSk1V
bVZ4ZFdWemRDNW9BQVlBQUU1VFZWSk1RMkZqYUdVdWFBQUdBQUJPVTBSaGRHVXVhQUFHQUFCT1Uw
WnYKYm5RdWFBQUVBQUJEUjBGbVptbHVaVlJ5WVc1elptOXliUzVvQUFNQUFFTkJRMjl1ZEdWNGRD
NW9BQWdBQUU1VFZWSk1VbVZ6Y0c5dQpjMlV1YUFBR0FBQk9VMUpoYm1kbExtZ0FCZ0FBVjJWaVJt
bHNkR1Z5UlhaaGJIVmhkRzl5TG1nQUNRQUFUbE5IWlc5dFpYUnllUzVvCkFBWUFBRU5HVTNSeWFX
NW5SR1ZtWVhWc2RFVnVZMjlrYVc1bkxtZ0FDZ0FBVTJWalFtRnpaUzVvQUFzQUFGTmxZMVJ5ZFhO
MExtZ0EKQ3dBQVRXRmpWSGx3WlhNdWFBQU1BQUJEUmxOMGNtbHVaeTVvQUEwQUFFTkdVM1J5WldG
dExtZ0FEUUFBVGxORFpXeHNMbWdBQkFBQQpRMGRUZEhsc1pTNW9BQTRBQUVOdmNtVkVjbUZuTG1n
QUR3QUFRMGRGY25KdmNpNW9BQU1BQUU1VFRXVnVkVjlRY21sMllYUmxMbWdBCkJ3QUFRMGRUVG05
MGFXWnBaWEl1YUFBT0FBQkRSMFp2Ym5SU1pXNWtaWEpwYm1jdWFBQU9BQUJEUjBsdFlXZGxMbWdB
QXdBQVEwZEQKYjI1MFpYaDBVSEpwZG1GMFpTNW9BQTRBQUZGVVRXOTJhV1ZmVUhKcGRtRjBaUzVv
QUJBQUFGZGxZa3RwZEZONWMzUmxiVWx1ZEdWeQpabUZqWlM1b0FBRUFBRXhUUVhCd2JHbGpZWFJw
YjI1VFpYSjJhV05sYzFCeWFYWXVhQUFSQUFCSVNWUm9aVzFsTG1nQUVnQUFRMEZTClpXNWtaWEl1
YUFBSUFBQk9VMUJoYm1Wc0xtZ0FCQUFBUTJGeVltOXVSWFpsYm5SekxtZ0FFZ0FBUVVWRVlYUmhU
VzlrWld3dWFBQVQKQUFCRFJrNWxkSGR2Y210RGIyNXVaV04wYVc5dVEyRmphR1ZRY21sMkxtZ0FG
QUFBUTBaT2RXMWlaWEl1YUFBTkFBQnhkV0Z5WVc1MAphVzVsTG1nQUZRQUFRMFpRY21sMkxtZ0FD
Z0FBYzI5MWNtTmxYM0J5YVhaaGRHVXVhQUFXQUFCRFIxTlFZV05yWVdkbGN5NW9BQTRBCkFFTnZj
bVZEZFhKemIzSXVhQUFQQUFCT1UwZHlZWEJvYVdOekxtZ0FCQUFBVGxOSVZGUlFRMjl2YTJsbExt
Z0FCZ0FBVGxOSVZGUlEKUTI5dmEybGxVM1J2Y21GblpTNW9BQVlBQUU1VFZWSk1RMjl1Ym1WamRH
bHZiaTVvQUFZQUFFNVRRV04wYVc5dVEyVnNiQzVvQUFRQQpBRTVUUW5WMGRHOXVRMlZzYkM1b0FB
UUFBRTVUVlVsSVpXRnlkRUpsWVhRdWFBQUhBQUJPVTB4dlkyRnNaUzVvQUFZQUFFTkdVM1J5ClpX
RnRRV0p6ZEhKaFkzUXVhQUFLQUFCT1UwbHRZV2RsVW1Wd0xtZ0FCQUFBVGxOQ2FYUnRZWEJKYldG
blpWSmxjQzVvQUFRQUFFNVQKVkdWNGRFWnBaV3hrUTJWc2JDNW9BQVFBQUU1VFRXVnVkUzVvQUFR
QUFFNVRSM0poY0docFkzTkRiMjUwWlhoMFVISnBkbUYwWlM1bwpBQWNBQUU1VFJYWmxiblF1YUFB
RUFBQlJWRTF2ZG1sbExtZ0FGd0FBVGxOV1lXeDFaUzVvQUFZQUFGRlVWR2x0WlM1b0FCY0FBRkZV
ClZHbHRaVkpoYm1kbExtZ0FGd0FBVVZSTmIzWnBaVlpwWlhjdWFBQVhBQUJCY0hCbFlYSmhibU5s
TG1nQUVnQUFRMEZNWVhsbGNraHYKYzNRdWFBQUlBQUJEUVZKbGJtUmxjbVZ5TG1nQUJRQUFiV1Z6
YzJGblpTNW9BQmdBQUcxcFp5NW9BQmdBQUVOQlRXVmthV0ZVYVcxcApibWRHZFc1amRHbHZiaTVv
QUFVQUFFTkJRVzVwYldGMGFXOXVMbWdBQlFBQVEwRldZV3gxWlVaMWJtTjBhVzl1TG1nQUJRQUFU
bE5CCmRIUnlhV0oxZEdWa1UzUnlhVzVuTG1nQUJnQUFRMDFVYVcxbExtZ0FHUUFBUVZaQmMzTmxk
QzVvQUJvQUFFNVRRMjl1ZEhKdmJDNW8KQUFRQUFBQUFDUUlBQUFBQUFBQUFBQVBvQVFFS1NnSThG
Z29DSWhQWDF3SXdFd2dUcXdNTmtBaVZud0l3RTRRSU5BSW9Fd055eUFNUgpDSFFJOVFvSWtnaVNB
aWtUclFJbkU0VUloUXJ6YVFoTENNbWRYUUlxRTRQekEzVllBdzRDTVFFS3ZnaEw1d3FSTTZrQ09o
a0tTeDZ5CkNwOHpnd2lSaFFONGdnTUxBaklCQ2dobmF3SlBFd2huaFFONENDQURDd0pEQVFvSTNR
aTdBaXdUQTNvSVdBTUtBa0lCQ2dnbkNOSUMKUHhvS0F3MENKd0VEZHA0SWtRaWlBbk1UQWxFV0Fp
WVdDZ2g2V1FJakZncExIcklLbndJMkZncWhDTW9JOVFJd0RnaG9DS0ZiQ3FFSQp5Z2oxQWtBVGR3
cExDTEFLU3dpd0NxQUlvUWhPekszWkNnZ2hDTmtJaGdoQUF3d0l5UGFmdjhrSU84dXRxZ05zbmdp
RkF4ZXNDSzhLClM2MEVMQU9hZk9RRUFRUHVBMWdJV1ZuWENFQUtDRm5YYVFJdUUxa0lNQWhMQ0RF
Q0xSTUNKaE83Q0V1OUFpZ1dDbWNJbEFwTEF5eTYKQ2tzSTl3SmJGZ3AxQ0lZS3V3TTlBa1FCQ2dn
aEEzSUlyQU5sOHZRSW9mTUNOeFFJMmRjQ0pSYStmQUpwRkFnVEFrSVRDRDMxQXcxMApDR2NJdlFp
UldWckpBMi9JQTJRSTFnTXdBaU1CQ2t1K0NrdStDa3UrQ21jSWxBcEx2Z3BMdmdxN0NFQUtDTm9J
U3doTnlnaURBM2tJCkxnTUxBaTRCQ3JzSVFBcExIcklLU3g2eUNrdStDa3Nlc2dwTEhySUs2QUlu
RTYzWENFMjlDazhDSnhPREF4RUl1Z3BMQ0JNSW53aWYKQ0UwS24rVUlud2lGQ0RFS253Z2l1d2d3
Q0o4Q0toUUlKZGtLa1FoMUNIWjNDdk1DTmhNSWd3aXVDRTBLOCtVQ05oVlprZ2dlQ0tRSwp5UWgx
Q0djSVB3b0RDVXE5Q3EwSVRncXRDRTRLdXdNTENEd0tUQUp4RTFrSVd3b0NJaFlJb1hWbkNCTkxB
aXNUU3dJbUU5bnpBaklUCkNDRUlsaTJmaElPdGc0U0RBeGdJRWdvQ0p4TUVBd081ZWdJa0FRUUJC
VWdEMFFYV0JRQURkd0kzQVFWSUF3a0lkQVVBV1FNTUFsUUIKQTNZSVNza0NSeFBNQ0RTU253Z3ZD
QzhJTHdndkNDL3o4OGxKUGN3RFJmSUNJeE1Jb3doTVZidm4xK1hoQWpJT0F3cmtBekVJa0hYZQo5
bjRJdS9VQ0tSTzVQakR6QTFzSUlBTVVDTllERGdqV0FpVVlDcEY0Q3RjSWtRSXlFd0ltRmdyWEND
UUtBaXdUQXdrQ1ZBRUtTd0l1CkU5a0tDQ0lJNTRRSWR3SWlFd2lSQWpRVEFpY1RBajhWQ0NFSWtR
aVJDSkVJSVFJaUV3Z2hBaUlWQ0NFQ0loTUlJUWlSQ05nRk8vWUYKQUhISkFqa1RCQ1lEbW5nQ01B
RUVBUVBsQjU0RUpnT2JlRmdFQVFQbEJ3aEtCVHQyQkNZRkFBT1plRW9FQVFQbUIxZ0ZPMHNFSmdV
QQpBNWw0U2dRQkErb0hXSVBYOUFndmc2MkRoSU1ERStRS1N3aDFBM0VDSkFFS0F3a0NKd0VDTWhB
RElnSW5BUW9JOVFNTUFpMEJBaklYCkN2TUZRWFFGQUFKSkZncVJBd2tDSndFS0NFc0lrUy9vQ0JR
RktZTUZBQU55ckFVcEF3NkNCVXQwQlFBRGNwQUZTd01PckFVQUFpY1QKQWprVHZBaFpyUWl2Q2tz
ZXNncExIck1LUzhBS0NKWUVBd09vZUFJeEFRUUJCUjBEMndkS0JBTUZBQU9sZUlJRUFRVWRBOXNI
V0FRRApCUUFEcFhpQ0JBRUZIUVBiQjFnRkFBSXVGQWlGQ2tzZXN3cEx2Z3BMSHJJS0F3a0NKUUVF
SmdQMWRnTG9BUUVDSkJPQlN3UUJCU2NECmhRa0luZ1VBZy9VS0NIVUM2QUVYQ2tzZUF3bXNDa29D
UEJZS0NJeDBrRmNDS1JNSXlKQURDZ2hLQTNia0NOVUkxd01SQ05ZS1N4NEQKQ3F3S1M4QUtTeDZ6
Q2tzZUErWUFyQXIwZ3dndlN3Z1hDdGNJUGZPRDh3aGNDcDhJRS9NSVR3cExDTEVLU3dNZUNLd0tB
MmtDUGdFSQpQd2pKQXhvSUVnakpBMlhrQXh0S1ZFTURkdVFERFFJbkFRcEx3UXFSZUFwTEF4d0ly
QW9JUHdpdEEyY0lMZ0l3RmdqMENDSUlJZ041CkFqZ0JBeGVDcmdpZkNMbm9DRndLQ0Q4SXJRTllD
QzRDTUJZSTlBZ2lDQ0lEZVFJNEFRTW1ncTZFQ0U4S3lRaDFDRDBJbndoMUNEOEsKM0FJaUUvUURE
UWgwaUFyWDVRaWZBajBUcndxUkNIVUlkZ01PZEFvRGVFb0lnd2loQXdrSVN2TUlNUXFmQWpZV0Nz
a0NJeFlLU3g2eQpDcEVJYkFwTGs0T3ZDc2tJbi9RRENRaDBDZ2haaEFqWGtWb0RiWkFJbndNUzhn
Z2lvQWhPQ3BHRFdwSUlGZ29JRXdpdENKK3Q1UWpNCkNnSWlGQUovRndJL0Znb0l2QUpRRndKREZn
cExDTEFLU3dpd0NuVUloZ3BMQ0xBS2RRaUdDa3NJc0FwTHZnb0lkUWpxQWxJVHJnaWYKQW1BVEFq
Y1FDQmNEZE5ZRERRSXpBUU1TQ0dZS0NJT0VQVXl0ZHdqekEyNENKUUVLVFFNVHVncE1DSzJyQ0M2
dUNNc0lQbllEREFqSQpDdVdFclFndkNEQ0dDa3NlQXhhc0NnSXJGazJid2dRckE1OXlDSFJxYmxR
RUFRUFdEWFFDTVJVQ01CWUZKbllGQUtrRkpuWjF1YnNGCkFBTmh1Z1VtQXg5MHVVc0ZBQU5oU2dV
bUF4OTBDSUVGQUFOaXlKSUZJUWhSQkNzRkFBT2pjZ0lxQVFRQkJTRUQzUTNrQkNzRkFBT2oKY2do
WUJBRUZJUVBkRFVvRkFBTWZDRHdGYmdJMkV3VkVDSFFGYmtvRlJBaG1CVzUwQlVBQ1BRNEZWWWNG
UXZJRlZVb0ZicXNGVlFKQwpFd1VBQW80QkZnZ3ZBa01UNXdwTEJSa0lUQVVBQ0hWWkNDR1I2QXJK
Q0RNS2tYZ0tTd2lVZ3dJdUY0TUNNeFU1M1FySkFqTVdDb09SCjZBcVRrdGtLMmEwQ0p4WUtyUWhP
Q2s2OUNnakpDSzN6Q0xzSVN3Z1RDREVLQWlVVENJT3Q5bkt1YzYyRUNFdUUxd2gxQ0hjS0NEMEkK
SXdQbmNheVEwd0l0RlFpQ0E1NE9rQWk3QStGeHlBT2hEZ2c4ZzRZRDJuRzZDTk1JMlFPeURnanlD
Z042Q0M2ZnpnTUpBaVlCQ2dJagpFd052QWxBQm53TVJ5QVVXQTNvQ0tBRUVLd1VBQSt4d0FqNEJC
QUVGRmdPVUQrUUVLd1VBQSt4dzFnUUJCVmtEbEE5S0JDc0ZBQVBzCmNGZ0VBUVZaQTVRUFdBVVdr
QVFyQlFBRDdIQUNQZ0VFQVFVV0E1UVA1QVFyQlFBRDdIRFdCQUVGV1FPVUQwb0ZEd01aZEFRckJR
QUQKMDNCMEJBRUZXUU9VRDNRRkFBTVFyQVFyQStod25nUUJCVFFEbUE5S0JRRGxCQ3NENjNDZUJB
RUZOQU9WRDFnRUt3VUFBKzl3dWdRQgpCUThEbEE5MEJDc0ZBQVBVY0pBRUFRVTBBNndQV0FVQWtR
VTBkQVVBV3dVMWRBVVBXUVFyQlFBRDAzQllCQUVGTlFPdEQxZ0ZFSk1GCk5WZ0ZFRmtGTlZnRkFB
TlhXSjhESzhnQ014TUl5d3BMQWl3V0NrNjVXUVBjQUFpZUNyc0RDd0lpQVlVRG1YOENLZ0VLQWln
VEFpZ1YKVUFONlBGNElPSU4rQXd1UUFpVVVnd2doaEFnaHZGa0lJYjJSQ0NHRldRZ2hvWklEd3dB
SUlBcFFBallWQ09XQlhnSXFFNFFJTHdPMwpmd2c4Q2dJcUV3TjNnZ2k3QXd3SUVnaUZBM0NDQ0sw
REV3ZzgxL0VJRlFpRXFjS1JBMkdDQ0djREh1UjJXUU5lZ2dobkF5SGtrbGtEClc0SUlad01rNUZv
RExRaklDdk1DSkJlRXZITDFoUFNGQWpFV0NnaFJBaWdWQ0s2QVg1RUlFNUc5a1lRSWtZVURGQWgw
Q2dQVWVwNEkKWndpaEE2MEZDRW9JMmdvRHkzcEtDSU1Jb1FPMkJRaEsxQUlsR0FwTEhySUtTeDZ5
Q2tzZXNncExIcklLU3g2eUNnZ1Y2QXBMQ0xBSwp1NFBYZ3doY0Nrc0NMQllLU3g2eUNrc2VzZ3BM
QXdtNkNnaEV4WGZNNTRNL0NCVUtrWVBvQ3BIbENIZ0trWkdCTUFoQUNwL1hoZ29JClM0T0Qxd2kr
Q2t5dDl3aFJyb1NUQ2t1K0NwRURHd2htQ2dOcUFpUUJDREVJcndNSkNKQUlXd01LdWdJbEQ0WUNK
QlVLQTJBQ0p3RUkKTVFpdkF3a0lrQU1TQ0ZnRGNYUUREM1FDTEJZS3lnTnJkQU1WZEhYWkNrd0lz
QWlJcm9VRGQxaCtBdzI2cndxUkNIVUlkZ1BrQUhRSwoyUWcrQ0dnSWFBaG9DR2dJYUFob0NHZ0lh
QWhvQ0dnSWFBaG9DR2dEQ1FobUNHZ0lhQWhvQXRRQkdBTkZ1Z04zQ0R3Q0t4TjFBandUCkE4SUFn
Z0lyRXozbkNrc0lzUXBMQ0xNS2tRaHRDcEVJYkFwTEhyUUtUd01LQ0t3S1N3aXdDa3NJc0FwMUNJ
WUtTd2l3Q21jQ0toWUsKclFJMUZncExIcklLU3g2eUNrc2VBeHlzQ2dnVENDTUlUQU5uQ0pBREh3
Z3VDQ0VJaFFxN0ExeWVBeWJJQ0w0S0NCTkxrZlM3MXdoNQpDa3dkQXcyc0Nrb0NQQk1LU2dJOEV3
cEtBandUQ2tvQ1BCWUtBM21RZEpBRGxXdFlBK3NVQWlrQkNNaVFBd3U2UFFOMGRBT1Zhd2pXCkEr
c1VDTllERHdJdUFRb0RjdktRQTVScjFnUHNGQUl0QVFpQ0E1MTJrQWhuQ0tFRDN3a0lTZ01XQ1BJ
RGFxd0RsR3NJMWdQc0ZBalcKQXhvQ0tRRUtBNE4ybmdobkNOa0Q0QWtJckhTUUE1TnJrQVB0RkFJ
dEFRaUNrQU1lQ0JJSUw3Y0RaQWc4QTVOckNOWUQ3UlFJMWdNbgpBaW9CQ21laUNnUHdkY2dJWndq
WkErRUpDS3gwa0FPU2E1QUQ3aFFDTFFFSWdwQURMZ2llQWlZV0NDL2xBMHk2QTVKckNOWUQ3aFFJ
CjFnSXNFd29Ea1d0S0ErOFVBaWtCQTVGckFqY0JBKzhVQWl3QkNrb0RoMys2Q2trQ0p4TUNOeEVJ
MXdqV0Nrb0R5bjY2Q3BFSUlnZ2kKQ0NJSUlnZ2lDQ0lJSWdnaUNDSUlJdGpZMk5nREVOYlkyQWgy
ZFUwRG5uRFdDa3NDSEFBQkFRQUFBQUFBQUFBQUV3QUFBQUFBQUFBQgpBRlVBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQVRBQUFBQUFBQUFBRUFWQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFB
QUFBCkFBQUFBRlFBQUFBQUFBQUFBUUJWVkFBQUFBQUFBQUMwQUFBQUFBQUFBQUVBWHJRQUFBQUFB
QUFBMHdBQUFBQUFBQUFCQUZRQUFBQUEKQUFBQUFBQUFBQUFBQUFBQXJnQUFBQUFBQUFEVEFBQUFB
QUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFDL0FBQUFBQUFBQUhVQgpBQUFBQUFBQUFRQmNk
UUVBQUFBQUFBQjNBUUFBQUFBQUFBRUFYbmNCQUFBQUFBQUFmd0VBQUFBQUFBQUJBRndBQUFBQUFB
QUFBQUFBCkFBQUFBQUFBNFFBQUFBQUFBQUE5QVFBQUFBQUFBQUVBVXdBQUFBQUFBQUFBQUFBQUFB
QUFBQUE5QVFBQUFBQUFBSGNCQUFBQUFBQUEKQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUxBQkFB
QUFBQUFBd0FFQUFBQUFBQUFCQUZYQUFRQUFBQUFBQU1vQkFBQUFBQUFBQVFCZQo1QUVBQUFBQUFB
QS9BZ0FBQUFBQUFBRUFYZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQ3dBUUFBQUFBQUFMMEJBQUFBQUFB
QUFRQlV2UUVBCkFBQUFBQUQ0QVFBQUFBQUFBQUVBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOQWdB
QUFBQUFBRThDQUFBQUFBQUFBUUJUQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUdBQ0FBQUFBQUFBYlFJ
QUFBQUFBQUFCQUZWdEFnQUFBQUFBQUlnQ0FBQUFBQUFBQVFCUUFBQUFBQUFBQUFBQQpBQUFBQUFB
QUFHQUNBQUFBQUFBQWFnSUFBQUFBQUFBQkFGUnFBZ0FBQUFBQUFLa0NBQUFBQUFBQUFRQmUvd0lB
QUFBQUFBQXNBd0FBCkFBQUFBQUVBWGdBQUFBQUFBQUFBQUFBQUFBQUFBQUNMQWdBQUFBQUFBTGdD
QUFBQUFBQUFBUUJUQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUtrQ0FBQUFBQUFBK2dJQUFBQUFBQUFC
QUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFNQUFBQUFBQUEzQXdBQUFBQUFBQUVBVlRjRApBQUFB
QUFBQVR3TUFBQUFBQUFBQkFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlBTUFBQUFBQUFCckF3QUFB
QUFBQUFFQVZXOERBQUFBCkFBQUFkZ01BQUFBQUFBQUJBRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFz
QU1BQUFBQUFBQzZBd0FBQUFBQUFBRUFWUUFBQUFBQUFBQUEKQUFBQUFBQUFBQUN3QXdBQUFBQUFB
TG9EQUFBQUFBQUFBUUJVQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFEQUFBQUFBQUE0Z01BQUFBQQpB
QUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBMUFNQUFBQUFBQUQ2QXdBQUFBQUFBQUVBVXdBQUFB
QUFBQUFBQUFBQUFBQUFBQUR1CkF3QUFBQUFBQVB3REFBQUFBQUFBQVFCZUFBQUFBQUFBQUFBQUFB
QUFBQUFBQURBRUFBQUFBQUFBUkFRQUFBQUFBQUFCQUZWRUJBQUEKQUFBQUFMTUVBQUFBQUFBQUFR
QmVBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQUVBQUFBQUFBQVFRUUFBQUFBQUFBQkFGUkJCQUFBQUFB
QQpBTWNFQUFBQUFBQUFBUUJkelFRQUFBQUFBQUFBQlFBQUFBQUFBQUVBWFFBQUFBQUFBQUFBQUFB
QUFBQUFBQUNjQkFBQUFBQUFBTU1FCkFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUxN
RUFBQUFBQUFBeVFRQUFBQUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUEKQUFBQUVBVUFBQUFBQUFB
cUJRQUFBQUFBQUFFQVZTb0ZBQUFBQUFBQWdnVUFBQUFBQUFBQkFGd0FBQUFBQUFBQUFBQUFBQUFB
QUFBQQpFQVVBQUFBQUFBQW5CUUFBQUFBQUFBRUFWQ2NGQUFBQUFBQUFUQVVBQUFBQUFBQUJBRjZP
QlFBQUFBQUFBTWtGQUFBQUFBQUFBUUJlCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBRkFBQUFBQUFB
SkFVQUFBQUFBQUFCQUZFa0JRQUFBQUFBQUZzRkFBQUFBQUFBQVFCZmpnVUEKQUFBQUFBRExCUUFB
QUFBQUFBRUFYd0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFCUUFBQUFBQUFDRUZBQUFBQUFBQUFRQlNJ
UVVBQUFBQQpBQUNFQlFBQUFBQUFBQUVBWFk0RkFBQUFBQUFBeHdVQUFBQUFBQUFCQUYwQUFBQUFB
QUFBQUFBQUFBQUFBQUFBVEFVQUFBQUFBQUNHCkJRQUFBQUFBQUFFQVhnQUFBQUFBQUFBQUFBQUFB
QUFBQUFEUUJRQUFBQUFBQU4wRkFBQUFBQUFBQVFCVjNRVUFBQUFBQUFENUJRQUEKQUFBQUFBRUFV
d0FBQUFBQUFBQUFBQUFBQUFBQUFBRFFCUUFBQUFBQUFOb0ZBQUFBQUFBQUFRQlUyZ1VBQUFBQUFB
RDdCUUFBQUFBQQpBQUVBWGdFR0FBQUFBQUFBTGdZQUFBQUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFB
QUFBQUFBUUFZQUFBQUFBQUJ4QmdBQUFBQUFBQUVBClZRQUFBQUFBQUFBQUFBQUFBQUFBQUFDTEJn
QUFBQUFBQU9ZR0FBQUFBQUFBQVFCZUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpvR0FBQUEKQUFBQTVn
WUFBQUFBQUFBQkFGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUdRY0FBQUFBQUFBeEJ3QUFBQUFBQUFF
QVVRQUFBQUFBQUFBQQpBQUFBQUFBQUFBQ1FCd0FBQUFBQUFMa0hBQUFBQUFBQUFRQlZBQUFBQUFB
QUFBQUFBQUFBQUFBQUFOQUhBQUFBQUFBQTJnY0FBQUFBCkFBQUJBRlVBQUFBQUFBQUFBQUFBQUFB
QUFBQUE0QWNBQUFBQUFBRHFCd0FBQUFBQUFBRUFWZW9IQUFBQUFBQUFFUWdBQUFBQUFBQUIKQUY0
UkNBQUFBQUFBQUJvSUFBQUFBQUFBQVFCUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFBQUFBQUFB
S2dnQUFBQUFBQUFCQUZVcQpDQUFBQUFBQUFKWUlBQUFBQUFBQUFRQmVBQUFBQUFBQUFBQUFBQUFB
QUFBQUFOQUlBQUFBQUFBQTJnZ0FBQUFBQUFBQkFGWGFDQUFBCkFBQUFBRVlKQUFBQUFBQUFBUUJl
QUFBQUFBQUFBQUFBQUFBQUFBQUFBR0FKQUFBQUFBQUFjZ2tBQUFBQUFBQUJBRlVBQUFBQUFBQUEK
QUFBQUFBQUFBQUFBZ0FrQUFBQUFBQUNTQ1FBQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFB
QUNnQ1FBQUFBQUFBS29KQUFBQQpBQUFBQVFCVnFna0FBQUFBQUFEYUNRQUFBQUFBQUFFQVV3QUFB
QUFBQUFBQUFBQUFBQUFBQUFEVkNRQUFBQUFBQU9JSkFBQUFBQUFBCkFRQlFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFPSUpBQUFBQUFBQTd3a0FBQUFBQUFBQkFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
b0EKQUFBQUFBQVNDZ0FBQUFBQUFBRUFWUklLQUFBQUFBQUFTZ29BQUFBQUFBQUJBRk1BQUFBQUFB
QUFBQUFBQUFBQUFBQUFRUW9BQUFBQQpBQUJTQ2dBQUFBQUFBQUVBVUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUJWQ2dBQUFBQUFBSGdLQUFBQUFBQUFBUUJUOEFvQUFBQUFBQUFICkN3QUFBQUFBQUFFQVV3
QUFBQUFBQUFBQUFBQUFBQUFBQUFDRUNnQUFBQUFBQUl3S0FBQUFBQUFBQVFCUW5nb0FBQUFBQUFD
aUNnQUEKQUFBQUFBRUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3RDZ0FBQUFBQUFQQUtBQUFBQUFB
QUFRQmNBQUFBQUFBQUFBQUFBQUFBQUFBQQpBTU1LQUFBQUFBQUE4QW9BQUFBQUFBQUJBRjRBQUFB
QUFBQUFBQUFBQUFBQUFBQUF4Z29BQUFBQUFBRHBDZ0FBQUFBQUFBSUFFQURwCkNnQUFBQUFBQVBB
S0FBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQU5zS0FBQUFBQUFBOEFvQUFBQUFBQUFC
QUZBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUJ3c0FBQUFBQUFBUkN3QUFBQUFBQUFFQVVBQUFBQUFB
QUFBQUFBQUFBQUFBQUFDUUN3QUFBQUFBQUtRTApBQUFBQUFBQUFRQlZwQXNBQUFBQUFBRHRDd0FB
QUFBQUFBRUFYZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQ1FDd0FBQUFBQUFLRUxBQUFBCkFBQUFBUUJV
b1FzQUFBQUFBQUFBREFBQUFBQUFBQUVBWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUNRQ3dBQUFBQUFB
S2tMQUFBQUFBQUEKQVFCUnFRc0FBQUFBQUFDNkN3QUFBQUFBQUFFQVZBQUFBQUFBQUFBQUFBQUFB
QUFBQUFDeEN3QUFBQUFBQUxnTUFBQUFBQUFBQVFCZgpBQUFBQUFBQUFBQUFBQUFBQUFBQUFOQU1B
QUFBQUFBQTVnd0FBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUFBQUFBQUFBQTBBd0FBQUFBCkFBRFdE
QUFBQUFBQUFBRUFWTllNQUFBQUFBQUEzd3dBQUFBQUFBQUJBRkRmREFBQUFBQUFBT1lNQUFBQUFB
QUFBUUJSQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUNFTkFBQUFBQUFBSlEwQUFBQUFBQUFCQUZBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBV1EwQUFBQUFBQUJzRFFBQQpBQUFBQUFFQVVRQUFBQUFBQUFBQUFB
QUFBQUFBQUFDQURRQUFBQUFBQUljTkFBQUFBQUFBQVFCVmh3MEFBQUFBQUFDWURRQUFBQUFBCkFB
RUFVSmdOQUFBQUFBQUFudzBBQUFBQUFBQUJBRkVBQUFBQUFBQUFBQUFBQUFBQUFBQUFvQTBBQUFB
QUFBQ3NEUUFBQUFBQUFBRUEKVmF3TkFBQUFBQUFBMlEwQUFBQUFBQUFCQUY3WkRRQUFBQUFBQU9V
TkFBQUFBQUFBQVFCVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUtBTgpBQUFBQUFBQXFRMEFBQUFBQUFB
QkFGU3BEUUFBQUFBQUFNTU5BQUFBQUFBQUFRQlF3dzBBQUFBQUFBRGNEUUFBQUFBQUFBRUFVUUFB
CkFBQUFBQUFBQUFBQUFBQUFBQUR3RFFBQUFBQUFBQUlPQUFBQUFBQUFBUUJWQWc0QUFBQUFBQUJh
RUFBQUFBQUFBQUVBWGdBQUFBQUEKQUFBQUFBQUFBQUFBQUFDL0RnQUFBQUFBQU5VT0FBQUFBQUFB
QVFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBNUEFBQUFBQUFBVmhBQQpBQUFBQUFBQkFGTUFBQUFB
QUFBQUFBQUFBQUFBQUFBQTBCQUFBQUFBQUFEbUVBQUFBQUFBQUFFQVZRQUFBQUFBQUFBQUFBQUFB
QUFBCkFBRFFFQUFBQUFBQUFOWVFBQUFBQUFBQUFRQlUxaEFBQUFBQUFBRGZFQUFBQUFBQUFBRUFV
TjhRQUFBQUFBQUE1aEFBQUFBQUFBQUIKQUZFQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJFQUFBQUFB
QUFhRVFBQUFBQUFBQUVBVlJvUkFBQUFBQUFBSHhFQUFBQUFBQUFCQUZJZgpFUUFBQUFBQUFDZ1JB
QUFBQUFBQUFRQlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQVJBQUFBQUFBQUZ4RUFBQUFBQUFBQkFG
UVhFUUFBCkFBQUFBQ0lSQUFBQUFBQUFBUUJRSWhFQUFBQUFBQUFvRVFBQUFBQUFBQUVBVVFBQUFB
QUFBQUFBQUFBQUFBQUFBQUF3RVFBQUFBQUEKQUVjUkFBQUFBQUFBQVFCVlJ4RUFBQUFBQUFDZkVR
QUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBd0VRQUFBQUFBQUVRUgpBQUFBQUFBQUFR
QlVSQkVBQUFBQUFBQ2ZFUUFBQUFBQUFBRUFYZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQXdFUUFBQUFB
QUFFRVJBQUFBCkFBQUFBUUJSUVJFQUFBQUFBQUNmRVFBQUFBQUFBQUVBWHdBQUFBQUFBQUFBQUFB
QUFBQUFBQUErRVFBQUFBQUFBRUVSQUFBQUFBQUEKQVFCUlFSRUFBQUFBQUFDZkVRQUFBQUFBQUFF
QVh3QUFBQUFBQUFBQUFBQUFBQUFBQUFEZ0VRQUFBQUFBQU9vUkFBQUFBQUFBQVFCVgo2aEVBQUFB
QUFBRHZFUUFBQUFBQUFBRUFVdThSQUFBQUFBQUErQkVBQUFBQUFBQUJBRlFBQUFBQUFBQUFBQUFB
QUFBQUFBQUE0QkVBCkFBQUFBQURuRVFBQUFBQUFBQUVBVk9jUkFBQUFBQUFBOGhFQUFBQUFBQUFC
QUZEeUVRQUFBQUFBQVBnUkFBQUFBQUFBQVFCUkFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQVNBQUFB
QUFBQUNoSUFBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCSUFBQUFBQUFBYQpFZ0FB
QUFBQUFBRUFWUUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdFZ0FBQUFBQUFEb1NBQUFBQUFBQUFRQlZB
QUFBQUFBQUFBQUFBQUFBCkFBQUFBRUFTQUFBQUFBQUFTaElBQUFBQUFBQUJBRlVBQUFBQUFBQUFB
QUFBQUFBQUFBQUFVQklBQUFBQUFBQmFFZ0FBQUFBQUFBRUEKVlZvU0FBQUFBQUFBbnhJQUFBQUFB
QUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBbnhJQUFBQUFBQUN4RWdBQUFBQUFBQUVBWGdBQQpB
QUFBQUFBQUFBQUFBQUFBQUFBbEV3QUFBQUFBQUZRVEFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFB
QUFBQUFBQUhBVEFBQUFBQUFBCmVoTUFBQUFBQUFBQkFGVjZFd0FBQUFBQUFMUVRBQUFBQUFBQUFR
QmVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJa1RBQUFBQUFBQXNoTUEKQUFBQUFBQUJBRk1BQUFBQUFB
QUFBQUFBQUFBQUFBQUEwQk1BQUFBQUFBRGFFd0FBQUFBQUFBRUFWZG9UQUFBQUFBQUFUUlFBQUFB
QQpBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBK0JNQUFBQUFBQUFJRkFBQUFBQUFBQUVBVUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFMCkZBQUFBQUFBQUVzVUFBQUFBQUFBQVFCVFVCUUFBQUFBQUFC
Z0ZBQUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFCd0ZBQUEKQUFBQUFIa1VBQUFBQUFB
QUFRQlZlUlFBQUFBQUFBQ2dGQUFBQUFBQUFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ3dGQUFB
QUFBQQpBTUFVQUFBQUFBQUFBUUJWd0JRQUFBQUFBQUFtRlFBQUFBQUFBQUVBWGdBQUFBQUFBQUFB
QUFBQUFBQUFBQUN3RkFBQUFBQUFBTDBVCkFBQUFBQUFBQVFCVXZSUUFBQUFBQUFBb0ZRQUFBQUFB
QUFFQVh3QUFBQUFBQUFBQUFBQUFBQUFBQUFCQUZRQUFBQUFBQUZBVkFBQUEKQUFBQUFRQlZVQlVB
QUFBQUFBQ1ZGUUFBQUFBQUFBRUFYNVVWQUFBQUFBQUFtaFVBQUFBQUFBQUJBRjhBQUFBQUFBQUFB
QUFBQUFBQQpBQUFBUUJVQUFBQUFBQUJORlFBQUFBQUFBQUVBVkUwVkFBQUFBQUFBb3hVQUFBQUFB
QUFCQUY2dUZRQUFBQUFBQUxVVkFBQUFBQUFBCkFRQmVBQUFBQUFBQUFBQUFBQUFBQUFBQUFGOFZB
QUFBQUFBQW94VUFBQUFBQUFBQkFGT3VGUUFBQUFBQUFMVVZBQUFBQUFBQUFRQlQKQUFBQUFBQUFB
QUFBQUFBQUFBQUFBTkFWQUFBQUFBQUEzUlVBQUFBQUFBQUJBRlhkRlFBQUFBQUFBQU1XQUFBQUFB
QUFBUUJUQUFBQQpBQUFBQUFBQUFBQUFBQUFBQU5BVkFBQUFBQUFBMmhVQUFBQUFBQUFCQUZUYUZR
QUFBQUFBQUFVV0FBQUFBQUFBQVFCZUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFEQVdBQUFBQUFBQVFS
WUFBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVCWUFBQUFBQUFCaEZnQUEKQUFBQUFB
RUFWUUFBQUFBQUFBQUFBQUFBQUFBQUFBQndGZ0FBQUFBQUFJVVdBQUFBQUFBQUFRQlZBQUFBQUFB
QUFBQUFBQUFBQUFBQQpBSEFXQUFBQUFBQUFkeFlBQUFBQUFBQUJBRlIzRmdBQUFBQUFBSDhXQUFB
QUFBQUFBUUJRZnhZQUFBQUFBQUNGRmdBQUFBQUFBQUVBClVRQUFBQUFBQUFBQUFBQUFBQUFBQUFD
UUZnQUFBQUFBQU04V0FBQUFBQUFBQVFCVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUpBV0FBQUEKQUFB
QXd4WUFBQUFBQUFBQkFGUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWtCWUFBQUFBQUFESEZnQUFBQUFB
QUFFQVVRQUFBQUFBQUFBQQpBQUFBQUFBQUFBQ1FGZ0FBQUFBQUFCTVhBQUFBQUFBQUFRQlNBQUFB
QUFBQUFBQUFBQUFBQUFBQUFKQVdBQUFBQUFBQUV4Y0FBQUFBCkFBQUJBRmdBQUFBQUFBQUFBQUFB
QUFBQUFBQUFrQllBQUFBQUFBQVRGd0FBQUFBQUFBRUFXUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWcK
RndBQUFBQUFBRHNYQUFBQUFBQUFBUUJWT3hjQUFBQUFBQUEyR0FBQUFBQUFBQUVBWEVrWUFBQUFB
QUFBVWhnQUFBQUFBQUFCQUZ4awpHQUFBQUFBQUFJOFlBQUFBQUFBQUFRQmNBQUFBQUFBQUFBQUFB
QUFBQUFBQUFDQVhBQUFBQUFBQU9CY0FBQUFBQUFBQkFGUTRGd0FBCkFBQUFBRFlZQUFBQUFBQUFB
UUJlU1JnQUFBQUFBQUJTR0FBQUFBQUFBQUVBWGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFnRndBQUFB
QUEKQURVWEFBQUFBQUFBQVFCUk5SY0FBQUFBQUFCSkdBQUFBQUFBQUFFQVh3QUFBQUFBQUFBQUFB
QUFBQUFBQUFBa0dBQUFBQUFBQURZWQpBQUFBQUFBQUFRQm5BQUFBQUFBQUFBQUFBQUFBQUFBQUFH
d1lBQUFBQUFBQWp4Z0FBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFvQmdBQUFBQUFB
REhHQUFBQUFBQUFBRUFWY2NZQUFBQUFBQUFvUmtBQUFBQUFBQUJBRjYyR1FBQUFBQUFBQ29hQUFB
QUFBQUEKQVFCZUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtFWkFBQUFBQUFBS2hvQUFBQUFBQUFDQUJB
QUtob0FBQUFBQUFBcUdnQUFBQUFBQUFFQQpYZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUtHZ0FBQUFB
QUFDb2FBQUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFQd2FBQUFBCkFBQUFyeHNBQUFB
QUFBQUJBRjYzR3dBQUFBQUFBTndiQUFBQUFBQUFBUUJlQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFi
QUFBQUFBQUEKanhzQUFBQUFBQUFDQUJBQWp4c0FBQUFBQUFDdkd3QUFBQUFBQUFFQVhiY2JBQUFB
QUFBQStod0FBQUFBQUFBQ0FCQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBRW9iQUFBQUFBQUFZQnNB
QUFBQUFBQUJBRnlaR3dBQUFBQUFBSzhiQUFBQUFBQUFBUUJjQUFBQUFBQUFBQUFBCkFBQUFBQUFB
QUpZYkFBQUFBQUFBcnhzQUFBQUFBQUFCQUZNQUFBQUFBQUFBQUFBQUFBQUFBQUFBN0JzQUFBQUFB
QUQwR3dBQUFBQUEKQUFFQVVHb2NBQUFBQUFBQWV4d0FBQUFBQUFBQkFGNEFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFCMEFBQUFBQUFBUEhRQUFBQUFBQUFFQQpWUUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFI
UUFBQUFBQUFCNGRBQUFBQUFBQUFRQlZIaDBBQUFBQUFBQmxIUUFBQUFBQUFBRUFYbVVkCkFBQUFB
QUFBZUIwQUFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0IwQUFBQUFBQUNrSFFBQUFB
QUFBQUVBVlFBQUFBQUEKQUFBQUFBQUFBQUFBQUFDd0hRQUFBQUFBQU53ZEFBQUFBQUFBQVFCVjNC
MEFBQUFBQUFBZ0hnQUFBQUFBQUFFQVV3QUFBQUFBQUFBQQpBQUFBQUFBQUFBQ3dIUUFBQUFBQUFN
OGRBQUFBQUFBQUFRQmp6eDBBQUFBQUFBQXJIZ0FBQUFBQUFBSUFka1FBQUFBQUFBQUFBQUFBCkFB
QUFBQUFBc0IwQUFBQUFBQURLSFFBQUFBQUFBQUVBVk1vZEFBQUFBQUFBRlI0QUFBQUFBQUFCQUY4
VkhnQUFBQUFBQUNzZUFBQUEKQUFBQUFRQlNBQUFBQUFBQUFBQUFBQUFBQUFBQUFMQWRBQUFBQUFB
QXh4MEFBQUFBQUFBQkFGSEhIUUFBQUFBQUFDSWVBQUFBQUFBQQpBUUJjQUFBQUFBQUFBQUFBQUFB
QUFBQUFBTEFkQUFBQUFBQUF4QjBBQUFBQUFBQUJBRkxFSFFBQUFBQUFBQmdlQUFBQUFBQUFBUUJl
CkdCNEFBQUFBQUFBckhnQUFBQUFBQUFFQVdRQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0hnQUFBQUFB
QUdnZUFBQUFBQUFBQVFCVkFBQUEKQUFBQUFBQUFBQUFBQUFBQUFIQWVBQUFBQUFBQWdoNEFBQUFB
QUFBQkFGV0NIZ0FBQUFBQUFCRWlBQUFBQUFBQUFRQmVBQUFBQUFBQQpBQUFBQUFBQUFBQUFBTEll
QUFBQUFBQUFFU0lBQUFBQUFBQUJBRk1BQUFBQUFBQUFBQUFBQUFBQUFBQUE5aUFBQUFBQUFBQURJ
UUFBCkFBQUFBQUVBWVFBQUFBQUFBQUFBQUFBQUFBQUFBQUNYSVFBQUFBQUFBSnNoQUFBQUFBQUFB
UUJpQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUtRaEFBQUFBQUFBcUNFQUFBQUFBQUFCQUdFQUFBQUFB
QUFBQUFBQUFBQUFBQUFBdFNFQUFBQUFBQUFSSWdBQUFBQUFBQUVBWEFBQQpBQUFBQUFBQUFBQUFB
QUFBQUFCZ0lnQUFBQUFBQUc4aUFBQUFBQUFBQVFCVmVDSUFBQUFBQUFDQUlnQUFBQUFBQUFFQVZR
QUFBQUFBCkFBQUFBQUFBQUFBQUFBQmdJZ0FBQUFBQUFJNGlBQUFBQUFBQUFRQlV1U0lBQUFBQUFB
REhJZ0FBQUFBQUFBRUFWQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUJnSWdBQUFBQUFBSzRpQUFBQUFB
QUFBUUJSdVNJQUFBQUFBQURUSWdBQUFBQUFBQUVBVVFBQUFBQUFBQUFBQUFBQQpBQUFBQUFCZ0ln
QUFBQUFBQUxBaUFBQUFBQUFBQVFCU3VTSUFBQUFBQUFET0lnQUFBQUFBQUFFQVVnQUFBQUFBQUFB
QUFBQUFBQUFBCkFBRGdJZ0FBQUFBQUFQY2lBQUFBQUFBQUFRQlY5eUlBQUFBQUFBQkpJd0FBQUFB
QUFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBRGcKSWdBQUFBQUFBQTRqQUFBQUFBQUFBUUJVQUFB
QUFBQUFBQUFBQUFBQUFBQUFBT0FpQUFBQUFBQUE5Q0lBQUFBQUFBQUJBRkgwSWdBQQpBQUFBQUVz
akFBQUFBQUFBQVFCY0FBQUFBQUFBQUFBQUFBQUFBQUFBQU9BaUFBQUFBQUFBOFNJQUFBQUFBQUFC
QUZMeElnQUFBQUFBCkFFOGpBQUFBQUFBQUFRQmZBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQWlBQUFB
QUFBQTdpSUFBQUFBQUFBQkFGanVJZ0FBQUFBQUFFMGoKQUFBQUFBQUFBUUJlQUFBQUFBQUFBQUFB
QUFBQUFBQUFBUGNpQUFBQUFBQUFVU01BQUFBQUFBQUNBQkFOQUFBQUFBQUFBQUFBQUFBQQpBQUFB
QUdBakFBQUFBQUFBY0NNQUFBQUFBQUFCQUZWd0l3QUFBQUFBQUp3akFBQUFBQUFBQVFCZW5DTUFB
QUFBQUFDMkl3QUFBQUFBCkFBRUFVUUFBQUFBQUFBQUFBQUFBQUFBQUFBQmdJd0FBQUFBQUFHMGpB
QUFBQUFBQUFRQlViU01BQUFBQUFBQ3dJd0FBQUFBQUFBRUEKVXdBQUFBQUFBQUFBQUFBQUFBQUFB
QURBSXdBQUFBQUFBTWtqQUFBQUFBQUFBUUJWeVNNQUFBQUFBQURhSXdBQUFBQUFBQUVBVXRvagpB
QUFBQUFBQTVpTUFBQUFBQUFBQkFGRUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdDTUFBQUFBQUFER0l3
QUFBQUFBQUFFQVZNWWpBQUFBCkFBQUEzQ01BQUFBQUFBQUJBRkRjSXdBQUFBQUFBT1lqQUFBQUFB
QUFBUUJTQUFBQUFBQUFBQUFBQUFBQUFBQUFBUEFqQUFBQUFBQUEKQlNRQUFBQUFBQUFCQUZVRkpB
QUFBQUFBQUFRbEFBQUFBQUFBQVFCY0FBQUFBQUFBQUFBQUFBQUFBQUFBQVBBakFBQUFBQUFBRHlR
QQpBQUFBQUFBQkFGUVBKQUFBQUFBQUFDRWtBQUFBQUFBQUFRQlZBQUFBQUFBQUFBQUFBQUFBQUFB
QUFQQWpBQUFBQUFBQUFpUUFBQUFBCkFBQUJBRkVDSkFBQUFBQUFBQ0VrQUFBQUFBQUFBUUJlTUNR
QUFBQUFBQUNiSkFBQUFBQUFBQUVBWHBza0FBQUFBQUFBNHlRQUFBQUEKQUFBQkFGNEFBQUFBQUFB
QUFBQUFBQUFBQUFBQUd5UUFBQUFBQUFBaEpBQUFBQUFBQUFFQVh6QWtBQUFBQUFBQUJDVUFBQUFB
QUFBQgpBRjhBQUFBQUFBQUFBQUFBQUFBQUFBQUFVaVFBQUFBQUFBQmpKQUFBQUFBQUFBRUFZZ0FB
QUFBQUFBQUFBQUFBQUFBQUFBQnNKQUFBCkFBQUFBSDRrQUFBQUFBQUFBUUJpQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQ0FsQUFBQUFBQUFLaVVBQUFBQUFBQUJBRlVBQUFBQUFBQUEKQUFBQUFBQUFBQUFB
SUNVQUFBQUFBQUFxSlFBQUFBQUFBQUVBVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3SlFBQUFBQUFB
RG9sQUFBQQpBQUFBQVFCVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBbEFBQUFBQUFBU3lVQUFBQUFB
QUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBClVDVUFBQUFBQUFDWUpRQUFBQUFBQUFFQVZRQUFB
QUFBQUFBQUFBQUFBQUFBQUFCUUpRQUFBQUFBQUhvbEFBQUFBQUFBQVFCVUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFGQWxBQUFBQUFBQWZTVUFBQUFBQUFBQkFGRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVD
VUFBQUFBQUFCaQpKUUFBQUFBQUFBRUFVbUlsQUFBQUFBQUFrQ1VBQUFBQUFBQUJBRkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFreVVBQUFBQUFBRG5KUUFBCkFBQUFBQUVBVStjbEFBQUFBQUFBNXlVQUFB
QUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNZQUFBQUFBQUFLSmdBQUFBQUEKQUFFQVZR
QUFBQUFBQUFBQUFBQUFBQUFBQUFBUUpnQUFBQUFBQUI0bUFBQUFBQUFBQVFCVkFBQUFBQUFBQUFB
QUFBQUFBQUFBQUNBbQpBQUFBQUFBQUtpWUFBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUFBQUFBQUFB
QU1DWUFBQUFBQUFCUkpnQUFBQUFBQUFFQVZWRW1BQUFBCkFBQUFuQ2NBQUFBQUFBQUJBRjRBQUFB
QUFBQUFBQUFBQUFBQUFBQUFWU1lBQUFBQUFBQ2FKd0FBQUFBQUFBRUFYZ0FBQUFBQUFBQUEKQUFB
QUFBQUFBQUNnSndBQUFBQUFBTEVuQUFBQUFBQUFBUUJVc1NjQUFBQUFBQUF1S0FBQUFBQUFBQUVB
VXdBQUFBQUFBQUFBQUFBQQpBQUFBQUFDZ0tBQUFBQUFBQUtvb0FBQUFBQUFBQVFCVkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUtBb0FBQUFBQUFBcWlnQUFBQUFBQUFCCkFGUUFBQUFBQUFBQUFBQUFBQUFB
QUFBQW9DZ0FBQUFBQUFDcUtBQUFBQUFBQUFFQVVRQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ0tBQUEK
QUFBQUFLb29BQUFBQUFBQUFRQlNBQUFBQUFBQUFBQUFBQUFBQUFBQUFMQW9BQUFBQUFBQXhDZ0FB
QUFBQUFBQkFGVUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFzQ2dBQUFBQUFBREVLQUFBQUFBQUFBRUFW
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3dLQUFBQUFBQUFNUW9BQUFBCkFBQUFBUUJSQUFBQUFBQUFB
QUFBQUFBQUFBQUFBTEFvQUFBQUFBQUF4Q2dBQUFBQUFBQUJBRklBQUFBQUFBQUFBQUFBQUFBQUFB
QUEKOENnQUFBQUFBQUFLS1FBQUFBQUFBQUVBVlFvcEFBQUFBQUFBaENrQUFBQUFBQUFCQUYwQUFB
QUFBQUFBQUFBQUFBQUFBQUFBOENnQQpBQUFBQUFBSEtRQUFBQUFBQUFFQVZBY3BBQUFBQUFBQWhD
a0FBQUFBQUFBQkFGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQThDZ0FBQUFBCkFBQUVLUUFBQUFBQUFB
RUFVUVFwQUFBQUFBQUFoQ2tBQUFBQUFBQUJBRjhBQUFBQUFBQUFBQUFBQUFBQUFBQUE4Q2dBQUFB
QUFBQUIKS1FBQUFBQUFBQUVBVWdFcEFBQUFBQUFBaENrQUFBQUFBQUFCQUY0QUFBQUFBQUFBQUFB
QUFBQUFBQUFBU0NrQUFBQUFBQUJYS1FBQQpBQUFBQUFFQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFC
MEtRQUFBQUFBQUlRcEFBQUFBQUFBQVFCZUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFIUXBBQUFBQUFB
QWhDa0FBQUFBQUFBQkFGOEFBQUFBQUFBQUFBQUFBQUFBQUFBQWRDa0FBQUFBQUFDRUtRQUFBQUFB
QUFFQVhBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQjBLUUFBQUFBQUFJUXBBQUFBQUFBQUFRQmRBQUFB
QUFBQUFBQUFBQUFBQUFBQUFQQXBBQUFBQUFBQQoraWtBQUFBQUFBQUJBRlVBQUFBQUFBQUFBQUFB
QUFBQUFBQUE4Q2tBQUFBQUFBRDZLUUFBQUFBQUFBRUFWQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUR3
S1FBQUFBQUFBUG9wQUFBQUFBQUFBUUJSQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFxQUFBQUFBQUFD
eW9BQUFBQUFBQUIKQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNvQUFBQUFBQUFMS2dBQUFBQUFB
QUVBVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS2dBQQpBQUFBQUFzcUFBQUFBQUFBQVFCUkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBcUFBQUFBQUFBQ3lvQUFBQUFBQUFCQUZJQUFBQUFBQUFBCkFBQUFB
QUFBQUFBQUFDb0FBQUFBQUFBTEtnQUFBQUFBQUFFQVdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUtn
QUFBQUFBQUJvcUFBQUEKQUFBQUFRQlZBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQXFBQUFBQUFBQUdp
b0FBQUFBQUFBQkFGUUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpFQ29BQUFBQUFBQWFLZ0FBQUFBQUFB
RUFVUUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFLZ0FBQUFBQUFCb3FBQUFBQUFBQUFRQlNBQUFBCkFB
QUFBQUFBQUFBQUFBQUFBQ0FxQUFBQUFBQUFLaW9BQUFBQUFBQUJBRlVBQUFBQUFBQUFBQUFBQUFB
QUFBQUFNQ29BQUFBQUFBQkEKS2dBQUFBQUFBQUVBVlVBcUFBQUFBQUFBYUNvQUFBQUFBQUFCQUY4
QUFBQUFBQUFBQUFBQUFBQUFBQUFBTUNvQUFBQUFBQUJxS2dBQQpBQUFBQUFFQVZBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBd0tnQUFBQUFBQUQwcUFBQUFBQUFBQVFCUlBTb0FBQUFBQUFCbUtnQUFBQUFB
CkFBRUFYZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQndLZ0FBQUFBQUFKd3FBQUFBQUFBQUFRQlZBQUFB
QUFBQUFBQUFBQUFBQUFBQUFIQXEKQUFBQUFBQUFmaW9BQUFBQUFBQUJBRlIrS2dBQUFBQUFBTGNx
QUFBQUFBQUFBUUJldHlvQUFBQUFBQURHS2dBQUFBQUFBQUVBVVFBQQpBQUFBQUFBQUFBQUFBQUFB
QUFDaUtnQUFBQUFBQUw0cUFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQU5BcUFBQUFB
QUFBCjlTb0FBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUFBQUFBQUFBQTBDb0FBQUFBQUFEYUtnQUFB
QUFBQUFFQVZOb3FBQUFBQUFBQS95b0EKQUFBQUFBQUJBRk1BQUFBQUFBQUFBQUFBQUFBQUFBQUFF
Q3NBQUFBQUFBQWtLd0FBQUFBQUFBRUFWUUFBQUFBQUFBQUFBQUFBQUFBQQpBQUF3S3dBQUFBQUFB
RVFyQUFBQUFBQUFBUUJWQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFyQUFBQUFBQUFhaXNBQUFBQUFB
QUJBRlZxCkt3QUFBQUFBQVA0ckFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBckFB
QUFBQUFBWnlzQUFBQUFBQUFCQUZSbkt3QUEKQUFBQUFQNHJBQUFBQUFBQUFRQmNBQUFBQUFBQUFB
QUFBQUFBQUFBQUFGQXJBQUFBQUFBQVpDc0FBQUFBQUFBQkFGRmtLd0FBQUFBQQpBQmtzQUFBQUFB
QUFBUUJmQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFyQUFBQUFBQUFZU3NBQUFBQUFBQUJBRkpoS3dB
QUFBQUFBQlVzCkFBQUFBQUFBQVFCZUFBQUFBQUFBQUFBQUFBQUFBQUFBQUk0ckFBQUFBQUFBMFNz
QUFBQUFBQUFCQUZNQUFBQUFBQUFBQUFBQUFBQUEKQUFBQW9pc0FBQUFBQUFEUkt3QUFBQUFBQUFF
QVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFEK0t3QUFBQUFBQUJjc0FBQUFBQUFBQVFCZgpBQUFBQUFB
QUFBQUFBQUFBQUFBQUFFQXNBQUFBQUFBQVRpd0FBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUFBQUFB
QUFBQVFDd0FBQUFBCkFBQk9MQUFBQUFBQUFBRUFWQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFMQUFB
QUFBQUFFNHNBQUFBQUFBQUFRQmhBQUFBQUFBQUFBQUEKQUFBQUFBQUFBR0FzQUFBQUFBQUFjaXdB
QUFBQUFBQUJBRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ3dBQUFBQUFBQ1VMQUFBQUFBQQpBQUVB
VlpRc0FBQUFBQUFBNkN3QUFBQUFBQUFCQUZPRExRQUFBQUFBQUtjdEFBQUFBQUFBQVFCVEFBQUFB
QUFBQUFBQUFBQUFBQUFBCkFKUXNBQUFBQUFBQWdTMEFBQUFBQUFBQUFJRXRBQUFBQUFBQWd5MEFB
QUFBQUFBQkFHR0RMUUFBQUFBQUFOa3RBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUF3
eXdBQUFBQUFBQmhMUUFBQUFBQUFBRUFYbkF0QUFBQUFBQUFlQzBBQUFBQUFBQUJBRjRBQUFBQQpB
QUFBQUFBQUFBQUFBQUFBd3l3QUFBQUFBQUJoTFFBQUFBQUFBQUVBWG5BdEFBQUFBQUFBZUMwQUFB
QUFBQUFCQUY0QUFBQUFBQUFBCkFBQUFBQUFBQUFBQXd5d0FBQUFBQUFCYUxRQUFBQUFBQUFBQVdp
MEFBQUFBQUFCaExRQUFBQUFBQUFFQVlYQXRBQUFBQUFBQTJTMEEKQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBRFdMQUFBQUFBQUFHRXRBQUFBQUFBQUFRQmZjQzBBQUFBQUFBQjRMUUFBQUFB
QQpBQUVBWHdBQUFBQUFBQUFBQUFBQUFBQUFBQUJhTFFBQUFBQUFBR0V0QUFBQUFBQUFBUUJoQUFB
QUFBQUFBQUFBQUFBQUFBQUFBT0F0CkFBQUFBQUFBOUMwQUFBQUFBQUFCQUZYMExRQUFBQUFBQUVn
dUFBQUFBQUFBQVFCVDR5NEFBQUFBQUFEckxnQUFBQUFBQUFFQVV3QUEKQUFBQUFBQUFBQUFBQUFB
QUFBRDBMUUFBQUFBQUFPRXVBQUFBQUFBQUFBRGhMZ0FBQUFBQUFPTXVBQUFBQUFBQUFRQmg0eTRB
QUFBQQpBQURyTGdBQUFBQUFBQUFBNnk0QUFBQUFBQURyTGdBQUFBQUFBQUVBWWU4dUFBQUFBQUFB
K2k0QUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBakxnQUFBQUFBQU1FdUFBQUFBQUFB
QVFCZTBDNEFBQUFBQUFEWUxnQUFBQUFBQUFFQVhnQUFBQUFBQUFBQUFBQUEKQUFBQUFBQWpMZ0FB
QUFBQUFNRXVBQUFBQUFBQUFRQmUwQzRBQUFBQUFBRFlMZ0FBQUFBQUFBRUFYZ0FBQUFBQUFBQUFB
QUFBQUFBQQpBQUFqTGdBQUFBQUFBTG91QUFBQUFBQUFBQUM2TGdBQUFBQUFBTUV1QUFBQUFBQUFB
UUJoMEM0QUFBQUFBQUQ2TGdBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQURZdUFBQUFB
QUFBd1M0QUFBQUFBQUFCQUYvUUxnQUFBQUFBQU5ndUFBQUFBQUFBQVFCZkFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFMb3VBQUFBQUFBQXdTNEFBQUFBQUFBQkFHRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFD
OEFBQUFBQUFBTgpMd0FBQUFBQUFBRUFWUTB2QUFBQUFBQUFZeThBQUFBQUFBQUJBRk1BQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQzhBQUFBQUFBQUtMd0FBCkFBQUFBQUVBVkFvdkFBQUFBQUFBSVM4QUFB
QUFBQUFCQUY0aEx3QUFBQUFBQUdVdkFBQUFBQUFBQVFCZUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFJ
QXZBQUFBQUFBQWlTOEFBQUFBQUFBQkFGV0pMd0FBQUFBQUFNY3ZBQUFBQUFBQUFRQlRBQUFBQUFB
QUFBQUFBQUFBQUFBQQpBSTR2QUFBQUFBQUF3QzhBQUFBQUFBQUNBQkFDd0M4QUFBQUFBQURDTHdB
QUFBQUFBQUVBVU1jdkFBQUFBQUFBM3k4QUFBQUFBQUFDCkFCQUNBQUFBQUFBQUFBQUFBQUFBQUFB
QUFPQXZBQUFBQUFBQTdpOEFBQUFBQUFBQkFGWHVMd0FBQUFBQUFGVXdBQUFBQUFBQUFRQlQKQUFB
QUFBQUFBQUFBQUFBQUFBQUFBUDB2QUFBQUFBQUFWVEFBQUFBQUFBQUJBRjRBQUFBQUFBQUFBQUFB
QUFBQUFBQUFZREFBQUFBQQpBQUJwTUFBQUFBQUFBQUVBVldrd0FBQUFBQUFBa0RBQUFBQUFBQUFC
QUZNQUFBQUFBQUFBQUFBQUFBQUFBQUFBdlRBQUFBQUFBQUR0Ck1BQUFBQUFBQUFFQVV3QUFBQUFB
QUFBQUFBQUFBQUFBQUFEb01BQUFBQUFBQVBzd0FBQUFBQUFBQVFCUUFBQUFBQUFBQUFBQUFBQUEK
QUFBQUFCQXhBQUFBQUFBQUdqRUFBQUFBQUFBQkFGVWFNUUFBQUFBQUFEY3hBQUFBQUFBQUFRQmVO
ekVBQUFBQUFBQkRNUUFBQUFBQQpBQUVBVWdBQUFBQUFBQUFBQUFBQUFBQUFBQUJRTVFBQUFBQUFB
RjB4QUFBQUFBQUFBUUJWWFRFQUFBQUFBQUJ0TVFBQUFBQUFBQUVBClUyMHhBQUFBQUFBQWZERUFB
QUFBQUFBQkFGRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVERUFBQUFBQUFCYU1RQUFBQUFBQUFFQVZG
b3gKQUFBQUFBQUFjREVBQUFBQUFBQUJBRjV3TVFBQUFBQUFBSHd4QUFBQUFBQUFBUUJTQUFBQUFB
QUFBQUFBQUFBQUFBQUFBSUF4QUFBQQpBQUFBaWpFQUFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFB
QUFBQUFBa0RFQUFBQUFBQUNrTVFBQUFBQUFBQUVBVlFBQUFBQUFBQUFBCkFBQUFBQUFBQUFDUU1R
QUFBQUFBQUpjeEFBQUFBQUFBQVFCVWx6RUFBQUFBQUFDY01RQUFBQUFBQUFFQVVKd3hBQUFBQUFB
QXBERUEKQUFBQUFBQUJBRkVBQUFBQUFBQUFBQUFBQUFBQUFBQUFrREVBQUFBQUFBQ2NNUUFBQUFB
QUFBRUFVUUFBQUFBQUFBQUFBQUFBQUFBQQpBQURRTVFBQUFBQUFBTjB4QUFBQUFBQUFBUUJWM1RF
QUFBQUFBQUFGTWdBQUFBQUFBQUVBWGdVeUFBQUFBQUFBRmpJQUFBQUFBQUFCCkFGRUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUlESUFBQUFBQUFBeE1nQUFBQUFBQUFFQVZURXlBQUFBQUFBQXpUSUFBQUFB
QUFBQkFGNEEKQUFBQUFBQUFBQUFBQUFBQUFBQUFsaklBQUFBQUFBREpNZ0FBQUFBQUFBRUFYZ0FB
QUFBQUFBQUFBQUFBQUFBQUFBRFFNZ0FBQUFBQQpBTmt5QUFBQUFBQUFBUUJWMlRJQUFBQUFBQUQz
TWdBQUFBQUFBQUVBVXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXdBQUFBQUFBQkV6CkFBQUFBQUFB
QVFCVkVUTUFBQUFBQUFCc013QUFBQUFBQUFFQVh3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQU13QUFB
QUFBQUE0ekFBQUEKQUFBQUFRQlVEak1BQUFBQUFBQmRNd0FBQUFBQUFBRUFYbDB6QUFBQUFBQUFj
ak1BQUFBQUFBQUJBRkVBQUFBQUFBQUFBQUFBQUFBQQpBQUFBTFRNQUFBQUFBQUJtTXdBQUFBQUFB
QUVBVXdBQUFBQUFBQUFBQUFBQUFBQUFBQUNBTXdBQUFBQUFBSk16QUFBQUFBQUFBUUJWCmt6TUFB
QUFBQUFEMU13QUFBQUFBQUFFQVUvVXpBQUFBQUFBQUZUUUFBQUFBQUFBQkFGRUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUlUUUEKQUFBQUFBQTFOQUFBQUFBQUFBRUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFB
RE5OQUFBQUFBQUFQUTBBQUFBQUFBQUFRQmVBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQkExQUFBQUFB
QUFJalVBQUFBQUFBQUJBRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFNRFVBQUFBQUFBQkNOUUFBCkFB
QUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRTlFBQUFBQUFBR2cxQUFBQUFBQUFBUUJWQUFB
QUFBQUFBQUFBQUFBQUFBQUEKQUZBMUFBQUFBQUFBVnpVQUFBQUFBQUFCQUZSWE5RQUFBQUFBQUdF
MUFBQUFBQUFBQVFCUVlUVUFBQUFBQUFCb05RQUFBQUFBQUFFQQpVUUFBQUFBQUFBQUFBQUFBQUFB
QUFBQndOUUFBQUFBQUFJSTFBQUFBQUFBQUFRQlZBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQTFBQUFB
CkFBQUFxRFVBQUFBQUFBQUJBRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFrRFVBQUFBQUFBQ1hOUUFB
QUFBQUFBRUFWSmMxQUFBQUFBQUEKb1RVQUFBQUFBQUFCQUZDaE5RQUFBQUFBQUtnMUFBQUFBQUFB
QVFCUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUxBMUFBQUFBQUFBd2pVQQpBQUFBQUFBQkFGVUFBQUFB
QUFBQUFBQUFBQUFBQUFBQTREVUFBQUFBQUFBUk5nQUFBQUFBQUFFQVZRQUFBQUFBQUFBQUFBQUFB
QUFBCkFBRGdOUUFBQUFBQUFQZzFBQUFBQUFBQUFRQlUrRFVBQUFBQUFBQ0dOZ0FBQUFBQUFBRUFY
MEkzQUFBQUFBQUFlVGNBQUFBQUFBQUIKQUY4QUFBQUFBQUFBQUFBQUFBQUFBQUFBNERVQUFBQUFB
QUQxTlFBQUFBQUFBQUVBVWZVMUFBQUFBQUFBT0RjQUFBQUFBQUFCQUZ4QwpOd0FBQUFBQUFIazNB
QUFBQUFBQUFRQmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFHbzJBQUFBQUFBQWRUWUFBQUFBQUFBQkFG
NEFBQUFBCkFBQUFBQUFBQUFBQUFBQUFkVFlBQUFBQUFBQkNOd0FBQUFBQUFBRUFYZ0FBQUFBQUFB
QUFBQUFBQUFBQUFBQjlOZ0FBQUFBQUFOODIKQUFBQUFBQUFBUUJRQUFBQUFBQUFBQUFBQUFBQUFB
QUFBSkEzQUFBQUFBQUFwRGNBQUFBQUFBQUJBRldrTndBQUFBQUFBTnMzQUFBQQpBQUFBQVFCZTJ6
Y0FBQUFBQUFEb053QUFBQUFBQUFFQVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFDUU53QUFBQUFBQUtF
M0FBQUFBQUFBCkFRQlVvVGNBQUFBQUFBRDlOd0FBQUFBQUFBRUFYQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQ1FOd0FBQUFBQUFKNDNBQUFBQUFBQUFRQlIKbmpjQUFBQUFBQURSTndBQUFBQUFBQUVBWHdB
QUFBQUFBQUFBQUFBQUFBQUFBQUN4TndBQUFBQUFBUHMzQUFBQUFBQUFBUUJUQUFBQQpBQUFBQUFB
QUFBQUFBQUFBQU9zM0FBQUFBQUFBQnpnQUFBQUFBQUFCQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
RURnQUFBQUFBQUFZCk9BQUFBQUFBQUFFQVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBUU9BQUFBQUFB
QUJzNEFBQUFBQUFBQVFCVUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFCQTRBQUFBQUFBQUd6Z0FBQUFB
QUFBQkFGRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlEZ0FBQUFBQUFCZU9BQUFBQUFBQUFFQQpWV2s0
QUFBQUFBQUFoRGdBQUFBQUFBQUJBRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRGdBQUFBQUFBQmVP
QUFBQUFBQUFBRUFWQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFnT0FBQUFBQUFBRjQ0QUFBQUFBQUFB
UUJSQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDA0QUFBQUFBQUEKUFRnQUFBQUFBQUFCQUZOTE9BQUFB
QUFBQUZJNEFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUQwNEFBQUFBQUFBVWpnQQpB
QUFBQUFBQkFGNVNPQUFBQUFBQUFGWTRBQUFBQUFBQUFRQlRhVGdBQUFBQUFBQ3NPQUFBQUFBQUFB
RUFYZ0FBQUFBQUFBQUFBQUFBCkFBQUFBQUNIT0FBQUFBQUFBSjg0QUFBQUFBQUFBUUJRQUFBQUFB
QUFBQUFBQUFBQUFBQUFBTUE0QUFBQUFBQUF5amdBQUFBQUFBQUIKQUZYS09BQUFBQUFBQU5vNEFB
QUFBQUFBQVFCZTJqZ0FBQUFBQUFEbE9BQUFBQUFBQUFFQVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFE
WApPQUFBQUFBQUFBdzVBQUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFQVTRBQUFBQUFB
QURqa0FBQUFBQUFBQkFGNEFBQUFBCkFBQUFBQUFBQUFBQUFBQUFFRGtBQUFBQUFBQWFPUUFBQUFB
QUFBRUFWUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdPUUFBQUFBQUFERTUKQUFBQUFBQUFBUUJWTVRr
QUFBQUFBQURuT2dBQUFBQUFBQUVBWHU4NkFBQUFBQUFBL3pvQUFBQUFBQUFCQUY0SE93QUFBQUFB
QUtNOApBQUFBQUFBQUFRQmVxendBQUFBQUFBQUxQUUFBQUFBQUFBRUFYZ0FBQUFBQUFBQUFBQUFB
QUFBQUFBQWdPUUFBQUFBQUFGazVBQUFBCkFBQUFBUUJoQUFBQUFBQUFBQUFBQUFBQUFBQUFBRjA1
QUFBQUFBQUFaVGtBQUFBQUFBQUJBR0psT1FBQUFBQUFBQzQ2QUFBQUFBQUEKQXdCMm1INHVPZ0FB
QUFBQUFLQTZBQUFBQUFBQUFRQm9BQUFBQUFBQUFBQUFBQUFBQUFBQUFONDVBQUFBQUFBQWFEb0FB
QUFBQUFBQgpBR1pvT2dBQUFBQUFBQWM3QUFBQUFBQUFBd0IyaUg0SE93QUFBQUFBQUhNN0FBQUFB
QUFBQVFCaEFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBUTZBQUFBQUFBQUNEb0FBQUFBQUFBQkFHUUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUREb0FBQUFBQUFBYU9nQUFBQUFBQUFFQVp3QUEKQUFBQUFBQUFB
QUFBQUFBQUFBQkZPZ0FBQUFBQUFFMDZBQUFBQUFBQUFRQmtUVG9BQUFBQUFBQU5QUUFBQUFBQUFB
TUFkcEIrQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUdBNkFBQUFBQUFBYURvQUFBQUFBQUFCQUdkb09n
QUFBQUFBQUEwOUFBQUFBQUFBQXdCMjhIMEFBQUFBCkFBQUFBQUFBQUFBQUFBQUFiVG9BQUFBQUFB
QjFPZ0FBQUFBQUFBRUFZblU2QUFBQUFBQUFEVDBBQUFBQUFBQURBSGFZZmdBQUFBQUEKQUFBQUFB
QUFBQUFBQUFCNk9nQUFBQUFBQUlJNkFBQUFBQUFBQVFCamdqb0FBQUFBQUFBTlBRQUFBQUFBQUFN
QWRvQitBQUFBQUFBQQpBQUFBQUFBQUFBQUFBSG82QUFBQUFBQUFnam9BQUFBQUFBQUJBR09DT2dB
QUFBQUFBQTA5QUFBQUFBQUFBd0IyZ0g0QUFBQUFBQUFBCkFBQUFBQUFBQUFBQWl6b0FBQUFBQUFD
M09nQUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFEM09nQUFBQUFBQVA4NkFBQUEKQUFB
QUFRQmkvem9BQUFBQUFBQU5QUUFBQUFBQUFBTUFkcGgrQUFBQUFBQUFBQUFBQUFBQUFBQUFBUGc4
QUFBQUFBQUFDVDBBQUFBQQpBQUFCQUZNQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUQwQUFBQUFBQUE5
UFFBQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUJHClBRQUFBQUFBQUdZOUFBQUFBQUFB
QVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUhBOUFBQUFBQUFBZVQwQUFBQUFBQUFCQUZWNVBRQUEK
QUFBQUFJQTlBQUFBQUFBQUFRQlNnRDBBQUFBQUFBQ09QUUFBQUFBQUFBRUFVUUFBQUFBQUFBQUFB
QUFBQUFBQUFBQndQUUFBQUFBQQpBSFk5QUFBQUFBQUFBUUJVZGowQUFBQUFBQUNGUFFBQUFBQUFB
QUVBVUlVOUFBQUFBQUFBamowQUFBQUFBQUFCQUZnQUFBQUFBQUFBCkFBQUFBQUFBQUFBQW9EMEFB
QUFBQUFDK1BRQUFBQUFBQUFFQVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFCQVBnQUFBQUFBQUUwK0FB
QUEKQUFBQUFRQlZUVDRBQUFBQUFBQjBQZ0FBQUFBQUFBRUFYblErQUFBQUFBQUFnRDRBQUFBQUFB
QUJBRlVBQUFBQUFBQUFBQUFBQUFBQQpBQUFBUUQ0QUFBQUFBQUJLUGdBQUFBQUFBQUVBVkVvK0FB
QUFBQUFBWlQ0QUFBQUFBQUFCQUZCbFBnQUFBQUFBQUhjK0FBQUFBQUFBCkFRQlJBQUFBQUFBQUFB
QUFBQUFBQUFBQUFJQStBQUFBQUFBQWhqNEFBQUFBQUFBQkFGV0dQZ0FBQUFBQUFJbytBQUFBQUFB
QUFRQlEKaWo0QUFBQUFBQUNYUGdBQUFBQUFBQUVBVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnUGdB
QUFBQUFBTEErQUFBQUFBQUFBUUJWQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUs0K0FBQUFBQUFBc0Q0
QUFBQUFBQUFCQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0Q0QUFBQUFBQURKClBnQUFBQUFBQUFF
QVZjaytBQUFBQUFBQTZ6NEFBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdENEFBQUFB
QUFEUlBnQUEKQUFBQUFBRUFWQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQd0FBQUFBQUFBWS9BQUFB
QUFBQUFRQlZCajhBQUFBQUFBQU5Qd0FBQUFBQQpBQUVBVUEwL0FBQUFBQUFBRXo4QUFBQUFBQUFC
QUZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUQ4QUFBQUFBQUFtUHdBQUFBQUFBQUVBClZRQUFBQUFB
QUFBQUFBQUFBQUFBQUFBd1B3QUFBQUFBQUVBL0FBQUFBQUFBQVFCVlFEOEFBQUFBQUFDa1B3QUFB
QUFBQUFFQVhxUS8KQUFBQUFBQUFyejhBQUFBQUFBQUJBRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFN
RDhBQUFBQUFBQjJQd0FBQUFBQUFBRUFWQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUF3UHdBQUFBQUFB
SG8vQUFBQUFBQUFBUUJSQUFBQUFBQUFBQUFBQUFBQUFBQUFBSmMvQUFBQUFBQUF2VDhBCkFBQUFB
QUFCQUZNQUFBQUFBQUFBQUFBQUFBQUFBQUFBMEQ4QUFBQUFBQURuUHdBQUFBQUFBQUVBVmVjL0FB
QUFBQUFBbUVBQUFBQUEKQUFBQkFGNEFBQUFBQUFBQUFBQUFBQUFBQUFBQTBEOEFBQUFBQUFEa1B3
QUFBQUFBQUFFQVZPUS9BQUFBQUFBQW1FQUFBQUFBQUFBQgpBRndBQUFBQUFBQUFBQUFBQUFBQUFB
QUFDa0FBQUFBQUFBQlZRQUFBQUFBQUFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQVpRQUFBCkFB
QUFBSmhBQUFBQUFBQUFBUUJkQUFBQUFBQUFBQUFBQUFBQUFBQUFBRlZBQUFBQUFBQUFtRUFBQUFB
QUFBQUJBRk1BQUFBQUFBQUEKQUFBQUFBQUFBQUFBc0VBQUFBQUFBQURaUUFBQUFBQUFBQUVBVlFB
QUFBQUFBQUFBQUFBQUFBQUFBQUN3UUFBQUFBQUFBTVJBQUFBQQpBQUFBQVFCVXhFQUFBQUFBQUFE
Y1FBQUFBQUFBQUFFQVU5eEFBQUFBQUFBQTZrQUFBQUFBQUFBQkFGUUFBQUFBQUFBQUFBQUFBQUFB
CkFBQUFzRUFBQUFBQUFBREJRQUFBQUFBQUFBRUFVY0ZBQUFBQUFBQUFmVUVBQUFBQUFBQUJBRjhB
QUFBQUFBQUFBQUFBQUFBQUFBQUEKc0VBQUFBQUFBQUMrUUFBQUFBQUFBQUVBVXI1QUFBQUFBQUFB
WWtFQUFBQUFBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBMWtBQQpBQUFBQUFDYlFRQUFBQUFB
QUFFQVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFEV1FBQUFBQUFBQU9wQUFBQUFBQUFBQVFCY1IwRUFB
QUFBCkFBQ1ZRUUFBQUFBQUFBRUFYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWxRUUFBQUFBQUFEUkJB
QUFBQUFBQUFRQlFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBR0pCQUFBQUFBQUFsVUVBQUFBQUFBQUJB
RjRBQUFBQUFBQUFBQUFBQUFBQUFBQUFjVUVBQUFBQUFBQ1ZRUUFBQUFBQQpBQUVBVXdBQUFBQUFB
QUFBQUFBQUFBQUFBQUJ4UVFBQUFBQUFBSlZCQUFBQUFBQUFBUUJUQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUJDCkFBQUFBQUFBRTBJQUFBQUFBQUFCQUZVVFFnQUFBQUFBQUVwQ0FBQUFBQUFBQVFCZUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFCQ0FBQUEKQUFBQUVFSUFBQUFBQUFBQkFHRVFRZ0FBQUFBQUFG
QkNBQUFBQUFBQUFnQjJiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFRZ0FBQUFBQQpBR1ZDQUFBQUFB
QUFBUUJWWlVJQUFBQUFBQURFUkFBQUFBQUFBQUVBWGdBQUFBQUFBQUFBQUFBQUFBQUFBQUJkUXdB
QUFBQUFBSjlECkFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQU05REFBQUFBQUFBa2tR
QUFBQUFBQUFCQUZ3QUFBQUFBQUFBQUFBQUFBQUEKQUFBQThFUUFBQUFBQUFBVFJRQUFBQUFBQUFF
QVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBMVJRQUFBQUFBQUU1RkFBQUFBQUFBQVFCUQpBQUFBQUFB
QUFBQUFBQUFBQUFBQUFGQkZBQUFBQUFBQWZrVUFBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUFBQUFB
QUFBQVVFVUFBQUFBCkFBQmNSUUFBQUFBQUFBRUFWRnhGQUFBQUFBQUFxa1VBQUFBQUFBQUJBRk1B
QUFBQUFBQUFBQUFBQUFBQUFBQUFhVVVBQUFBQUFBQ2wKUlFBQUFBQUFBQUVBVUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUN3UlFBQUFBQUFBTlJGQUFBQUFBQUFBUUJVMUVVQUFBQUFBQUFnUndBQQpBQUFB
QUFJQWRrZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQXNFVUFBQUFBQUFEUVJRQUFBQUFBQUFFQVVkQkZB
QUFBQUFBQStFVUFBQUFBCkFBQUJBRk1BQUFBQUFBQUFBQUFBQUFBQUFBQUFzRVVBQUFBQUFBRE5S
UUFBQUFBQUFBRUFVczFGQUFBQUFBQUFua1lBQUFBQUFBQUQKQUhhd2Y1NUdBQUFBQUFBQXZVWUFB
QUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNFVUFBQUFBQUFESlJRQUFBQUFBQUFFQQpX
TWxGQUFBQUFBQUF3VVlBQUFBQUFBQURBSGE0ZjhGR0FBQUFBQUFBNUVZQUFBQUFBQUFCQUZNQUFB
QUFBQUFBQUFBQUFBQUFBQUFBCnNFVUFBQUFBQUFERlJRQUFBQUFBQUFFQVdjVkZBQUFBQUFBQXlF
WUFBQUFBQUFBQ0FIWkF5RVlBQUFBQUFBQURSd0FBQUFBQUFBRUEKWGdBQUFBQUFBQUFBQUFBQUFB
QUFBQURyUlFBQUFBQUFBQXhHQUFBQUFBQUFBUUJlTUVZQUFBQUFBQUNqUmdBQUFBQUFBQUVBWGdB
QQpBQUFBQUFBQUFBQUFBQUFBQUFDd1JRQUFBQUFBQUF4R0FBQUFBQUFBQVFCZk1FWUFBQUFBQUFB
NVJnQUFBQUFBQUFFQVh3QUFBQUFBCkFBQUFBQUFBQUFBQUFBQUVSZ0FBQUFBQUFBeEdBQUFBQUFB
QUFRQmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFGTkdBQUFBQUFBQUhrY0EKQUFBQUFBQUJBRjhBQUFB
QUFBQUFBQUFBQUFBQUFBQUFaa1lBQUFBQUFBQ2VSZ0FBQUFBQUFBRUFVd0FBQUFBQUFBQUFBQUFB
QUFBQQpBQUFnUndBQUFBQUFBRnBIQUFBQUFBQUFBUUJWQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JI
QUFBQUFBQUFXa2NBQUFBQUFBQUJBRlFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBZWtjQUFBQUFBQURN
UndBQUFBQUFBQUVBWGdBQUFBQUFBQUFBQUFBQUFBQUFBQURnUndBQUFBQUEKQUFaSUFBQUFBQUFB
QVFCVkJrZ0FBQUFBQUFBY1NBQUFBQUFBQUFFQVV4eElBQUFBQUFBQTkwZ0FBQUFBQUFBQ0FIWlE5
MGdBQUFBQQpBQUNPU1FBQUFBQUFBQUVBWEFBQUFBQUFBQUFBQUFBQUFBQUFBQURnUndBQUFBQUFB
QU5JQUFBQUFBQUFBUUJVQTBnQUFBQUFBQUMyClNBQUFBQUFBQUFJQWRrQzJTQUFBQUFBQUFPeElB
QUFBQUFBQUFRQmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQkhBQUFBQUFBQS8wY0EKQUFBQUFBQUJB
RkgvUndBQUFBQUFBTE5KQUFBQUFBQUFBd0IydUg4QUFBQUFBQUFBQUFBQUFBQUFBQUFBNEVjQUFB
QUFBQUQ3UndBQQpBQUFBQUFFQVV2dEhBQUFBQUFBQWkwZ0FBQUFBQUFBQkFGeUxTQUFBQUFBQUFM
bElBQUFBQUFBQUFRQmZ1VWdBQUFBQUFBREpTQUFBCkFBQUFBQUVBVWNsSUFBQUFBQUFBMFVnQUFB
QUFBQUFCQUZQUlNBQUFBQUFBQU94SUFBQUFBQUFBQVFCUkFBQUFBQUFBQUFBQUFBQUEKQUFBQUFP
QkhBQUFBQUFBQStFY0FBQUFBQUFBQkFGajRSd0FBQUFBQUFPeElBQUFBQUFBQUFRQmVBQUFBQUFB
QUFBQUFBQUFBQUFBQQpBT0JIQUFBQUFBQUE5VWNBQUFBQUFBQUJBRm4xUndBQUFBQUFBUEJJQUFB
QUFBQUFBZ0IyU1BCSUFBQUFBQUFBS2trQUFBQUFBQUFCCkFGOEFBQUFBQUFBQUFBQUFBQUFBQUFB
QUVrZ0FBQUFBQUFCQVNBQUFBQUFBQUFFQVh3QUFBQUFBQUFBQUFBQUFBQUFBQUFBU1NBQUEKQUFB
QUFCeElBQUFBQUFBQUFRQlRIRWdBQUFBQUFBQ3pTUUFBQUFBQUFBSUFkbEFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFKRWdBQUFBQQpBQUJBU0FBQUFBQUFBQUVBWFFBQUFBQUFBQUFBQUFBQUFBQUFBQUJB
U0FBQUFBQUFBRmxJQUFBQUFBQUFBUUJkQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUdGSUFBQUFBQUFB
aTBnQUFBQUFBQUFCQUY4QUFBQUFBQUFBQUFBQUFBQUFBQUFBZEVnQUFBQUFBQUNSU0FBQUFBQUEK
QUFFQVhRQUFBQUFBQUFBQUFBQUFBQUFBQUFDUlNBQUFBQUFBQU94SUFBQUFBQUFBQVFCZEFBQUFB
QUFBQUFBQUFBQUFBQUFBQUs5SQpBQUFBQUFBQTUwZ0FBQUFBQUFBQ0FCQUE1MGdBQUFBQUFBRHNT
QUFBQUFBQUFBRUFYd0FBQUFBQUFBQUFBQUFBQUFBQUFBRFJTQUFBCkFBQUFBTjFJQUFBQUFBQUFB
UUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZKQUFBQUFBQUFKVWtBQUFBQUFBQUJBRjRBQUFBQUFB
QUEKQUFBQUFBQUFBQUFBQVVrQUFBQUFBQUFsU1FBQUFBQUFBQUVBWEFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFUU1FBQUFBQUFBQ1ZKQUFBQQpBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQU9CSEFB
QUFBQUFBWkVrQUFBQUFBQUFCQUY4QUFBQUFBQUFBQUFBQUFBQUFBQUFBCk8wa0FBQUFBQUFCZlNR
QUFBQUFBQUFFQVhnQUFBQUFBQUFBQUFBQUFBQUFBQUFBN1NRQUFBQUFBQUY5SkFBQUFBQUFBQVFC
Y0FBQUEKQUFBQUFBQUFBQUFBQUFBQUFFMUpBQUFBQUFBQVgwa0FBQUFBQUFBQkFGTUFBQUFBQUFB
QUFBQUFBQUFBQUFBQTRFY0FBQUFBQUFDaQpTUUFBQUFBQUFBRUFYd0FBQUFBQUFBQUFBQUFBQUFB
QUFBQjNTUUFBQUFBQUFKdEpBQUFBQUFBQUFRQmVBQUFBQUFBQUFBQUFBQUFBCkFBQUFBSGRKQUFB
QUFBQUFqa2tBQUFBQUFBQUJBRndBQUFBQUFBQUFBQUFBQUFBQUFBQUFpVWtBQUFBQUFBQ2JTUUFB
QUFBQUFBRUEKVXdBQUFBQUFBQUFBQUFBQUFBQUFBQURBU1FBQUFBQUFBUFJKQUFBQUFBQUFBUUJW
QUFBQUFBQUFBQUFBQUFBQUFBQUFBTUJKQUFBQQpBQUFBMEVrQUFBQUFBQUFCQUZUUVNRQUFBQUFB
QUdOS0FBQUFBQUFBQVFCZUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9CSkFBQUFBQUFBCk1rb0FBQUFB
QUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFBQTQwa0FBQUFBQUFBVVNnQUFBQUFBQUFFQVh5ZEtB
QUFBQUFBQUowb0EKQUFBQUFBQUJBRjhBQUFBQUFBQUFBQUFBQUFBQUFBQUFNa29BQUFBQUFBQmhT
Z0FBQUFBQUFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQQpBQUJ3U2dBQUFBQUFBSzFLQUFBQUFBQUFB
UUJWQUFBQUFBQUFBQUFBQUFBQUFBQUFBSEJLQUFBQUFBQUFyVW9BQUFBQUFBQUJBRlFBCkFBQUFB
QUFBQUFBQUFBQUFBQUFBeVVvQUFBQUFBQUE0U3dBQUFBQUFBQUVBWHdBQUFBQUFBQUFBQUFBQUFB
QUFBQUF3U3dBQUFBQUEKQURoTEFBQUFBQUFBQVFCZUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZCTEFB
QUFBQUFBV2tzQUFBQUFBQUFCQUZWYVN3QUFBQUFBQUtwTApBQUFBQUFBQUFRQmVBQUFBQUFBQUFB
QUFBQUFBQUFBQUFIRkxBQUFBQUFBQW9Vc0FBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBCkFB
QUFuRXNBQUFBQUFBQ3dTd0FBQUFBQUFBRUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGRTd0FBQUFB
QUFBMU1BQUFBQUFBQUFRQlQKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWhNQUFBQUFBQUFHMHdBQUFB
QUFBQUJBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRXdBQUFBQQpBQUJLVEFBQUFBQUFBQUVBVlFB
QUFBQUFBQUFBQUFBQUFBQUFBQUJRVEFBQUFBQUFBRnBNQUFBQUFBQUFBUUJWQUFBQUFBQUFBQUFB
CkFBQUFBQUFBQUdCTUFBQUFBQUFBYWt3QUFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFB
Y0V3QUFBQUFBQUI2VEFBQUFBQUEKQUFFQVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFDQVRBQUFBQUFB
QUlwTUFBQUFBQUFBQVFCVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUlCTQpBQUFBQUFBQWlrd0FBQUFB
QUFBQkFGUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWtFd0FBQUFBQUFDWFRBQUFBQUFBQUFFQVZaZE1B
QUFBCkFBQUFvVXdBQUFBQUFBQUJBRkNqVEFBQUFBQUFBSzlNQUFBQUFBQUFBUUJRQUFBQUFBQUFB
QUFBQUFBQUFBQUFBSkJNQUFBQUFBQUEKb1V3QUFBQUFBQUFCQUZTalRBQUFBQUFBQUtsTUFBQUFB
QUFBQVFCVUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5CTUFBQUFBQUFBMmt3QQpBQUFBQUFBQkFGWGFU
QUFBQUFBQUFPcE1BQUFBQUFBQUFRQmU2a3dBQUFBQUFBQUNUUUFBQUFBQUFBRUFWQUFBQUFBQUFB
QUFBQUFBCkFBQUFBQURrVEFBQUFBQUFBUDVNQUFBQUFBQUFBUUJUQUFBQUFBQUFBQUFBQUFBQUFB
QUFBUEpNQUFBQUFBQUFBRTBBQUFBQUFBQUIKQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBRUUwQUFB
QUFBQUEyVFFBQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRVFFBQQpBQUFBQUJSTkFB
QUFBQUFBQVFCVUZFMEFBQUFBQUFBd1RRQUFBQUFBQUFFQVZBQUFBQUFBQUFBQUFBQUFBQUFBQUFC
QVRRQUFBQUFBCkFFcE5BQUFBQUFBQUFRQlZBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQk5BQUFBQUFB
QVdrMEFBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFVRTBBQUFBQUFBQmFUUUFBQUFB
QUFBRUFWQUFBQUFBQUFBQUFBQUFBQUFBQUFBQndUUUFBQUFBQUFIeE5BQUFBQUFBQQpBUUJWZkUw
QUFBQUFBQUNZVFFBQUFBQUFBQUVBVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUJ3VFFBQUFBQUFBSGxO
QUFBQUFBQUFBUUJVCmVVMEFBQUFBQUFDRVRRQUFBQUFBQUFFQVVJMU5BQUFBQUFBQWtVMEFBQUFB
QUFBQkFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXBVMEEKQUFBQUFBQ2xUUUFBQUFBQUFBRUFVNlZO
QUFBQUFBQUFxazBBQUFBQUFBQUJBRjRBQUFBQUFBQUFBQUFBQUFBQUFBQUF2RTBBQUFBQQpBQUMv
VFFBQUFBQUFBQUVBWGdBQUFBQUFBQUFBQUFBQUFBQUFBQURRVFFBQUFBQUFBTmxOQUFBQUFBQUFB
UUJWMlUwQUFBQUFBQURwClRRQUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFEd1RRQUFB
QUFBQVBsTkFBQUFBQUFBQVFCVitVMEFBQUFBQUFBUVRnQUEKQUFBQUFBRUFVd0FBQUFBQUFBQUFB
QUFBQUFBQUFBQWdUZ0FBQUFBQUFDbE9BQUFBQUFBQUFRQlZLVTRBQUFBQUFBQkVUZ0FBQUFBQQpB
QUVBVXdBQUFBQUFBQUFBQUFBQUFBQUFBQUF5VGdBQUFBQUFBRDlPQUFBQUFBQUFBUUJRQUFBQUFB
QUFBQUFBQUFBQUFBQUFBRkJPCkFBQUFBQUFBWUU0QUFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFB
QUFBQUFBVUU0QUFBQUFBQUJhVGdBQUFBQUFBQUVBVkZwT0FBQUEKQUFBQWJrNEFBQUFBQUFBQkFG
NEFBQUFBQUFBQUFBQUFBQUFBQUFBQWNFNEFBQUFBQUFDQVRnQUFBQUFBQUFFQVZZQk9BQUFBQUFB
QQptRTRBQUFBQUFBQUJBRitZVGdBQUFBQUFBTEZPQUFBQUFBQUFBUUJWQUFBQUFBQUFBQUFBQUFB
QUFBQUFBSEJPQUFBQUFBQUFmVTRBCkFBQUFBQUFCQUZSOVRnQUFBQUFBQUp0T0FBQUFBQUFBQVFC
ZW0wNEFBQUFBQUFDeFRnQUFBQUFBQUFFQVZBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQ05UZ0FBQUFB
QUFLdE9BQUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFNOU9BQUFBQUFBQS8wNEFBQUFB
QUFBQgpBRk1BQUFBQUFBQUFBQUFBQUFBQUFBQUEyazRBQUFBQUFBRGZUZ0FBQUFBQUFBRUFYdTlP
QUFBQUFBQUE5RTRBQUFBQUFBQUJBRjcvClRnQUFBQUFBQUExUEFBQUFBQUFBQVFCZUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUVCUEFBQUFBQUFBV2s4QUFBQUFBQUFCQUZWYVR3QUEKQUFBQUFQQlBBQUFB
QUFBQUFRQmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQlBBQUFBQUFBQVVVOEFBQUFBQUFBQkFGSlJU
d0FBQUFBQQpBUHhQQUFBQUFBQUFBUUJlQUFBQUFBQUFBQUFBQUFBQUFBQUFBSEJQQUFBQUFBQUFq
azhBQUFBQUFBQUJBRkFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBams4QUFBQUFBQUNxVHdBQUFBQUFB
QUVBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQURLVHdBQUFBQUFBUEJQQUFBQUFBQUEKQVFCVkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUNCUUFBQUFBQUFBUFZBQUFBQUFBQUFCQUZVOVVBQUFBQUFBQU0xUUFB
QUFBQUFBQVFCZgpBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQlFBQUFBQUFBQU1GQUFBQUFBQUFBQkFG
UXdVQUFBQUFBQUFNdFFBQUFBQUFBQUFRQmVBQUFBCkFBQUFBQUFBQUFBQUFBQUFBRk5RQUFBQUFB
QUFjVkFBQUFBQUFBQUJBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFjVkFBQUFBQUFBQ04KVUFBQUFB
QUFBQUVBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFyVVFBQUFBQUFBR2xSQUFBQUFBQUFBUUJUQUFB
QUFBQUFBQUFBQUFBQQpBQUFBQUVkUkFBQUFBQUFBVVZFQUFBQUFBQUFCQUZCVVVRQUFBQUFBQUdG
UkFBQUFBQUFBQVFCZUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFJQlJBQUFBQUFBQWlWRUFBQUFBQUFB
QkFGV0pVUUFBQUFBQUFMQlJBQUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQlIKQUFB
QUFBQUF6bEVBQUFBQUFBQUJBRlhPVVFBQUFBQUFBSUZUQUFBQUFBQUFBUUJUQUFBQUFBQUFBQUFB
QUFBQUFBQUFBSUZUQUFBQQpBQUFBaVZNQUFBQUFBQUFCQUZPSlV3QUFBQUFBQUpSVEFBQUFBQUFB
QVFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZoVUFBQUFBQUFBClhWUUFBQUFBQUFBQkFGNklWQUFB
QUFBQUFOTlVBQUFBQUFBQUFRQmVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJaFVBQUFBQUFBQTAxUUEK
QUFBQUFBQUJBRjRBQUFBQUFBQUFBQUFBQUFBQUFBQUFrRlVBQUFBQUFBQ2FWUUFBQUFBQUFBRUFW
UUFBQUFBQUFBQUFBQUFBQUFBQQpBQUNRVlFBQUFBQUFBSnBWQUFBQUFBQUFBUUJVQUFBQUFBQUFB
QUFBQUFBQUFBQUFBSkJWQUFBQUFBQUFtbFVBQUFBQUFBQUJBR0VBCkFBQUFBQUFBQUFBQUFBQUFB
QUFBa0ZVQUFBQUFBQUNhVlFBQUFBQUFBQUVBWWdBQUFBQUFBQUFBQUFBQUFBQUFBQUNnVlFBQUFB
QUEKQUw1VkFBQUFBQUFBQVFCVkFBQUFBQUFBQUFBQUFBQUFBQUFBQU1CVkFBQUFBQUFBM0ZVQUFB
QUFBQUFCQUZVQUFBQUFBQUFBQUFBQQpBQUFBQUFBQTRGVUFBQUFBQUFEMlZRQUFBQUFBQUFFQVZR
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZnQUFBQUFBQUJoV0FBQUFBQUFBCkFRQlZBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQldBQUFBQUFBQUIxWUFBQUFBQUFBQkFGUUhWZ0FBQUFBQUFCRldBQUFBQUFB
QUFRQlEKRVZZQUFBQUFBQUFZVmdBQUFBQUFBQUVBVVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnVmdB
QUFBQUFBREpXQUFBQUFBQUFBUUJWQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUhCV0FBQUFBQUFBZVZZ
QUFBQUFBQUFCQUZWNVZnQUFBQUFBQUtKV0FBQUFBQUFBQVFCVG9sWUFBQUFBCkFBQ3FWZ0FBQUFB
QUFBRUFVUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3dWZ0FBQUFBQUFMcFdBQUFBQUFBQUFRQmhBQUFB
QUFBQUFBQUEKQUFBQUFBQUFBTEJXQUFBQUFBQUF1bFlBQUFBQUFBQUJBR0lBQUFBQUFBQUFBQUFB
QUFBQUFBQUFzRllBQUFBQUFBQzZWZ0FBQUFBQQpBQUVBWXdBQUFBQUFBQUFBQUFBQUFBQUFBQURB
VmdBQUFBQUFBTXBXQUFBQUFBQUFBUUJoQUFBQUFBQUFBQUFBQUFBQUFBQUFBTkJXCkFBQUFBQUFB
MmxZQUFBQUFBQUFCQUdFQUFBQUFBQUFBQUFBQUFBQUFBQUFBNEZZQUFBQUFBQUR4VmdBQUFBQUFB
QUVBVmZGV0FBQUEKQUFBQVJWY0FBQUFBQUFBQkFGOEFBQUFBQUFBQUFBQUFBQUFBQUFBQTRGWUFB
QUFBQUFEdVZnQUFBQUFBQUFFQVZPNVdBQUFBQUFBQQpWMWNBQUFBQUFBQUJBRjRBQUFBQUFBQUFB
QUFBQUFBQUFBQUErVllBQUFBQUFBQlhWd0FBQUFBQUFBRUFYQUFBQUFBQUFBQUFBQUFBCkFBQUFB
QUF5VndBQUFBQUFBRVZYQUFBQUFBQUFBUUJmQUFBQUFBQUFBQUFBQUFBQUFBQUFBRVZYQUFBQUFB
QUFWMWNBQUFBQUFBQUIKQUZFQUFBQUFBQUFBQUFBQUFBQUFBQUFBY0ZjQUFBQUFBQUI4VndBQUFB
QUFBQUVBVlh4WEFBQUFBQUFBazFjQUFBQUFBQUFCQUZNQQpBQUFBQUFBQUFBQUFBQUFBQUFBQWNG
Y0FBQUFBQUFCNlZ3QUFBQUFBQUFFQVZIcFhBQUFBQUFBQXAxY0FBQUFBQUFBQkFGNEFBQUFBCkFB
QUFBQUFBQUFBQUFBQUFnVmNBQUFBQUFBQ1RWd0FBQUFBQUFBRUFVd0FBQUFBQUFBQUFBQUFBQUFB
QUFBQ0JWd0FBQUFBQUFKOVgKQUFBQUFBQUFBUUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBSk5YQUFB
QUFBQUFxVmNBQUFBQUFBQUJBRkVBQUFBQUFBQUFBQUFBQUFBQQpBQUFBc0ZjQUFBQUFBQURCVndB
QUFBQUFBQUVBVmNGWEFBQUFBQUFBeWxjQUFBQUFBQUFCQUZQS1Z3QUFBQUFBQU9aWEFBQUFBQUFB
CkFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFMQlhBQUFBQUFBQXZsY0FBQUFBQUFBQkFGUytWd0FB
QUFBQUFQTlhBQUFBQUFBQUFRQmUKQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXBYQUFBQUFBQUEzRmNB
QUFBQUFBQUJBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUEzRmNBQUFBQQpBQUQ0VndBQUFBQUFBQUVB
VUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRV0FBQUFBQUFBQnBZQUFBQUFBQUFBUUJWQUFBQUFBQUFB
QUFBCkFBQUFBQUFBQUNCWUFBQUFBQUFBTjFnQUFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFB
QUFBWUZnQUFBQUFBQUJ6V0FBQUFBQUEKQUFFQVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFCZ1dBQUFB
QUFBQUhOWUFBQUFBQUFBQVFCVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdCWQpBQUFBQUFBQWMxZ0FB
QUFBQUFBQkFGRUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9GZ0FBQUFBQUFDeldBQUFBQUFBQUFFQVZR
QUFBQUFBCkFBQUFBQUFBQUFBQUFBQ2dXQUFBQUFBQUFMTllBQUFBQUFBQUFRQlVBQUFBQUFBQUFB
QUFBQUFBQUFBQUFPQllBQUFBQUFBQTgxZ0EKQUFBQUFBQUJBRlVBQUFBQUFBQUFBQUFBQUFBQUFB
QUE0RmdBQUFBQUFBRHpXQUFBQUFBQUFBRUFWQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFnV1FBQUFB
QUFBQ2xaQUFBQUFBQUFBUUJWS1ZrQUFBQUFBQUNkV1FBQUFBQUFBQUVBVXdBQUFBQUFBQUFBQUFB
QUFBQUFBQUJuCldRQUFBQUFBQUhaWkFBQUFBQUFBQVFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpO
WkFBQUFBQUFBblZrQUFBQUFBQUFCQUZNQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUVGb0FBQUFBQUFB
Z1dnQUFBQUFBQUFFQVZTQmFBQUFBQUFBQTdsb0FBQUFBQUFBQkFGOEFBQUFBQUFBQQpBQUFBQUFB
QUFBQUFFRm9BQUFBQUFBQWRXZ0FBQUFBQUFBRUFWQjFhQUFBQUFBQUE3bG9BQUFBQUFBQUJBRjRB
QUFBQUFBQUFBQUFBCkFBQUFBQUFBWkZvQUFBQUFBQUJ6V2dBQUFBQUFBQUVBVUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUNkV2dBQUFBQUFBTTFhQUFBQUFBQUEKQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFB
QU1oYUFBQUFBQUFBN2xvQUFBQUFBQUFCQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBeUZvQQpBQUFB
QUFEdVdnQUFBQUFBQUFFQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFEWldnQUFBQUFBQU90YUFBQUFB
QUFBQVFCZkFBQUFBQUFBCkFBQUFBQUFBQUFBQUFObGFBQUFBQUFBQTZWb0FBQUFBQUFBQkFGNEFB
QUFBQUFBQUFBQUFBQUFBQUFBQVlGc0FBQUFBQUFCcVd3QUEKQUFBQUFBRUFWV3BiQUFBQUFBQUFT
RndBQUFBQUFBQUJBRjRBQUFBQUFBQUFBQUFBQUFBQUFBQUFnVnNBQUFBQUFBQ3pXd0FBQUFBQQpB
QUVBVXdBQUFBQUFBQUFBQUFBQUFBQUFBQUN6V3dBQUFBQUFBREJjQUFBQUFBQUFBUUJUTlZ3QUFB
QUFBQUJNWEFBQUFBQUFBQUVBClV3QUFBQUFBQUFBQUFBQUFBQUFBQUFDeld3QUFBQUFBQUx4YkFB
QUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKY0FBQUEKQUFBQUVWd0FBQUFBQUFBQkFG
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtWd0FBQUFBQUFBeVhBQUFBQUFBQUFFQVhnQUFBQUFBQUFB
QQpBQUFBQUFBQUFBRGdYQUFBQUFBQUFPMWNBQUFBQUFBQUFRQlY3VndBQUFBQUFBQzJYUUFBQUFB
QUFBRUFYOEpkQUFBQUFBQUE1VjBBCkFBQUFBQUFCQUYvb1hRQUFBQUFBQUJaZUFBQUFBQUFBQVFC
ZkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSZEFBQUFBQUFBUDEwQUFBQUEKQUFBQkFGTUFBQUFBQUFB
QUFBQUFBQUFBQUFBQU5sMEFBQUFBQUFDMlhRQUFBQUFBQUFFQVhnQUFBQUFBQUFBQUFBQUFBQUFB
QUFBMgpYUUFBQUFBQUFEOWRBQUFBQUFBQUFRQmVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJVmRBQUFB
QUFBQWxGMEFBQUFBQUFBQkFGQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFzRjBBQUFBQUFBQzJYUUFB
QUFBQUFBRUFYd0FBQUFBQUFBQUFBQUFBQUFBQUFBRDdYUUFBQUFBQUFCWmUKQUFBQUFBQUFBUUJU
QUFBQUFBQUFBQUFBQUFBQUFBQUFBTkJmQUFBQUFBQUFFbUVBQUFBQUFBQUJBRlVBQUFBQUFBQUFB
QUFBQUFBQQpBQUFBMEY4QUFBQUFBQUFVWVFBQUFBQUFBQUVBVkFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFnWVFBQUFBQUFBQzVoQUFBQUFBQUFBUUJWCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCaEFBQUFB
QUFBTldFQUFBQUFBQUFCQUZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBbVFjQUFBSUEKQUFBQUFITEZB
QUQ4RHdBQVRsTkRiMnh2Y2dEYUdBQUFYMTlrYjJOR2JHRm5jd0RGcndBQVgxOTBaa1pzWVdkekFN
ckJBQUJEUVZCeQpiM0JsY25SNVFXNXBiV0YwYVc5dUFLc2JBQUJPVTAxMWRHRmliR1ZCY25KaGVR
Qm93QUFBYldsblgzTjFZbk41YzNSbGJRQW5IQUFBClRsTkRiMnh2Y2xOd1lXTmxBQjhRQUFCZlgy
bHRZV2RsUm14aFozTUFYY1FBQUY5ZlkyOXVSbXhoWjNNQW93NEFBRjlmVmtac1lXZHoKTWdDUEFR
QUFiMkpxWTE5dlltcGxZM1FBVnlnQUFFNVRWRzl2YkdKaGNnQVltUUFBUTBkQ2FYUnRZWEJKYm1a
dkFQbVdBQUJEUjBadgpZM1Z6VW1sdVowOXlaR1Z5YVc1bkFJN0RBQUJCVmtGemMyVjBBQU5nQUFC
ZlgxZExWMmx1Wkc5M1FtOTFibU5sUVc1cGJXRjBhVzl1ClEyOXVkR1Y0ZEFBWHBRQUFUbE5CWTNS
cGIyNURaV3hzQUl3WUFBQk9VMDExZEdGaWJHVkVhV04wYVc5dVlYSjVBQ1FJQUFCRFIxTnAKZW1V
QWs3c0FBRTVUVlZKTVEyRmphR1VBQjY0QUFFNVRTVzFoWjJWU1pYQUFoM0VBQUY5ZlYwdFRZVzVr
WW05NFJYaDBaVzV6YVc5dQpBQjkwQUFCZlRsTlNZVzVuWlFEbm53QUFUbE5JVkZSUVEyOXZhMmxs
VTNSdmNtRm5aUUFJd1FBQVEwRk5aV1JwWVZScGJXbHVaMFoxCmJtTjBhVzl1QUFJSUFBQk9VMUps
YzNCdmJtUmxjZ0JURWdBQVRsTlZVa3dBZUhnQUFGZGxZa1pwYkhSbGNrVjJZV3gxWVhSdmNnRGMK
QUFBQVRsTlBZbXBsWTNRQXhna0FBRTVUVTNSeWFXNW5BQnhMQUFCT1UwWnZiblFBM3pRQUFFNVRW
VkpNVW1WeGRXVnpkQUFQc1FBQQpYMTl0Um14aFozTUF3S1FBQUU1VFEyVnNiQUJZV3dBQVgxOVhT
MU52Wm5SM1lYSmxRMEZTWlc1a1pYSmxjbEpsWmdBdndRQUFRMEZCCmJtbHRZWFJwYjI0QUtCSUFB
RTVUVTJWMEFJb2NBQUJmWDJGMWVGZEdiR0ZuY3dCOUt3QUFUbE5YYVc1a2IzZEJkWGhwYkdsaGNu
a0EKL0JjQUFFNVRWVzVrYjAxaGJtRm5aWElBNXFVQUFGOWZRa05HYkdGbmN3QXBLd0FBVGxOQmNI
QmxZWEpoYm1ObEFGeXlBQUJPVTAxbApiblVBQWFrQUFFNVRURzlqWVd4bEFQNjlBQUJEUVZKbGJt
UmxjbVZ5QUxRQkFBQk9VME4xY25OdmNnQ0diUUFBVGxOVlVreFNaWE53CmIyNXpaUURGRVFBQVRs
TkpiV0ZuWlFBeUNnQUFYME5CVEdGNVpYSkpkbUZ5Y3dBL0dnQUFYMTkzWTBac1lXZHpBTXF3QUFC
T1UxUmwKZUhSR2FXVnNaRU5sYkd3QVphNEFBRjlmWW1sMGJXRndVbVZ3Um14aFozTUFid0FBQUVO
b1lXNW5aVTV2ZEdsbWFXTmhkR2x2Yms5aQpjMlZ5ZG1WeUFHOGJBQUJPVTBkeVlYQm9hV056UTI5
dWRHVjRkQUIvTlFBQVRsTkRZV05vWldSVlVreFNaWE53YjI1elpRQ2lHZ0FBClRsTlhhVzVrYjNk
RGIyNTBjbTlzYkdWeUFFUW1BQUJmWDNSaVJteGhaM01BckJJQUFGOWZkMFpzWVdkekFHYWxBQUJm
WDBKRFJteGgKWjNNeUFPNi9BQUJ5YjNWMGFXNWxYMlJsYzJOeWFYQjBiM0lBWUhnQUFFNVRUWFYw
WVdKc1pVUmhkR0VBaE1FQUFFTkJWbUZzZFdWRwpkVzVqZEdsdmJnRGlxd0FBUTBkR2IyTjFjMUpw
Ym1kVGRIbHNaUUQ4TUFBQVRsTlhhVzVrYjNjQTVKWUFBRU5IUm05amRYTlNhVzVuClZHbHVkQUNU
S1FBQVRsTkVZWFJoQUJnUEFBQk9VMVpwWlhjQXZLY0FBRTVUUW5WMGRHOXVRMlZzYkFDMG53QUFU
bE5JVkZSUVEyOXYKYTJsbEFOSTVBQUJPVTBSaGRHVUFjeGtBQUU1VFJHOWpkVzFsYm5RQWFBb0FB
RU5CVEdGNVpYSUFMTVVBQUU1VFEyOXVkSEp2YkFDeApvQUFBVGxOVlVreERiMjV1WldOMGFXOXVB
TU80QUFCUlZFMXZkbWxsQVBXN0FBQlRZM0p2Ykd4Q1lYSlVjbUZqYTBsdVptOEEyS0FBCkFFNVRU
WFYwWVdKc1pWVlNURkpsY1hWbGMzUUF5bG9BQUVOQlEyOXVkR1Y0ZEFCTEFRQUFYMk4xY25OdmNr
WnNZV2R6QUtzcEFBQk8KVTBWeWNtOXlBRGU4QUFCVGJHbGtaWEpVY21GamEwbHVabThBdjA4QUFF
TkhRV1ptYVc1bFZISmhibk5tYjNKdEFDVzBBQUJPVTFkcApibVJ2ZDBkeVlYQm9hV056UTI5dWRH
VjRkQUNUdkFBQVNFbFVhR1Z0WlZSeVlXTnJSSEpoZDBsdVptOEFiYndBQUZCeWIyZHlaWE56ClZI
SmhZMnRKYm1adkFBOEtBQUJPVTBScFkzUnBiMjVoY25rQUxDb0FBRTVUUVhCd2JHbGpZWFJwYjI1
UWNtVnpaVzUwWVhScGIyNVAKY0hScGIyNXpBQU1OQUFCZlgxWkdiR0ZuY3dBeUd3QUFUbE5TWldO
MWNuTnBkbVZNYjJOckFPeXpBQUJPVTBOSFUwTnZiblJsZUhRQQp1TGNBQUU1VFJYWmxiblFBMWdR
QUFGOWZZbXh2WTJ0ZlpHVnpZM0pwY0hSdmNnQW9vUUFBWDE5RFJteGhaM01BSkJjQUFFNVRSRzlq
CmExUnBiR1VBQUFVQUFGOWZZbXh2WTJ0ZmJHbDBaWEpoYkY5blpXNWxjbWxqQUpWS0FBQmZYMlpH
YkdGbmN3RHl3Z0FBVGxOQmRIUnkKYVdKMWRHVmtVM1J5YVc1bkFBY0JBQUJEUjFCdmFXNTBBSkNz
QUFCRGIzSmxSSEpoWjBsdFlXZGxVM0JsWXdCV0NBQUFRMGRTWldOMApBSm05QUFCRFFVeGhlV1Z5
U0c5emRBQ3VDUUFBVGxOQmNuSmhlUUNudWdBQVVWUk5iM1pwWlZacFpYY0FoeHNBQUU1VFRXRndW
R0ZpCmJHVUFXSzhBQUU1VFFtbDBiV0Z3U1cxaFoyVlNaWEFBWEswQUFGOWZjbVZ3Um14aFozTUFP
eElBQUU1VFRYVjBZV0pzWlZObGRBQ1kKQ0FBQVEwRlVjbUZ1YzJadmNtMHpSQUNrR0FBQVRsTlFj
bWx1ZEVsdVptOEFtU29BQUU1VFFuVnVaR3hsQUF5NkFBQk9VMVpoYkhWbApBQUFBQUFCQmNIQnNa
U0JNVEZaTklIWmxjbk5wYjI0Z05TNHdJQ2hqYkdGdVp5MDFNREF1TUM0Mk1Da2dLR0poYzJWa0lH
OXVJRXhNClZrMGdNeTR6YzNadUtRQXZWWE5sY25NdllXeGxlR05vY21semRHVnVjMlZ1TDNkbFlt
dHBkQzlKYm5SbGNtNWhiQzlYWldKTGFYUlQKZVhOMFpXMUpiblJsY21aaFkyVXZWMlZpUzJsMFUz
bHpkR1Z0U1c1MFpYSm1ZV05sTG0wQUwxVnpaWEp6TDJGc1pYaGphSEpwYzNSbApibk5sYmk5M1pX
SnJhWFF2U1c1MFpYSnVZV3d2VjJWaVMybDBVM2x6ZEdWdFNXNTBaWEptWVdObEFHTmhjSE5NYjJO
clNXNWthV05oCmRHOXlVMmw2WlFCbWJHOWhkQUJrWldjeWNtRmtBRzFwWkZCMWJITmxVMk5oYkdV
QWIySnpaWEoyWlhKRGIyNTBaWGgwY3dCallXeHMKWW1GamF3QmpiMjUwWlhoMEFHNWxlSFFBUTJo
aGJtZGxUbTkwYVdacFkyRjBhVzl1VDJKelpYSjJaWElBWW5WemVVSjFkRU5zYVdOcgpZV0pzWlVO
MWNuTnZjZ0JwYzJFQWIySnFZMTlqYkdGemN3QkRiR0Z6Y3dCT1UwOWlhbVZqZEFCZmFHOTBVM0J2
ZEFCNEFHUnZkV0pzClpRQkRSMFpzYjJGMEFIa0FRMGRRYjJsdWRBQk9VMUJ2YVc1MEFGOW1iR0Zu
Y3dCdmJrMXZkWE5sUlhocGRHVmtBSFZ1YzJsbmJtVmsKSUdsdWRBQnZiazF2ZFhObFJXNTBaWEps
WkFCamRYSnpiM0pVZVhCbEFGOWpkWEp6YjNKR2JHRm5jd0JmYVcxaFoyVUFiMkpxWTE5dgpZbXBs
WTNRQWFXUUFUbE5EZFhKemIzSUFiV0ZyWlVGc2FXRnpRM1Z5YzI5eUFHMXZkbVZEZFhKemIzSUFj
bVZ6YVhwbFJXRnpkRU4xCmNuTnZjZ0J5WlhOcGVtVkZZWE4wVjJWemRFTjFjbk52Y2dCeVpYTnBl
bVZPYjNKMGFFTjFjbk52Y2dCeVpYTnBlbVZPYjNKMGFGTnYKZFhSb1EzVnljMjl5QUhKbGMybDZa
VTV2Y25Sb1pXRnpkRU4xY25OdmNnQnlaWE5wZW1WT2IzSjBhR1ZoYzNSVGIzVjBhSGRsYzNSRApk
WEp6YjNJQWNtVnphWHBsVG05eWRHaDNaWE4wUTNWeWMyOXlBSEpsYzJsNlpVNXZjblJvZDJWemRG
TnZkWFJvWldGemRFTjFjbk52CmNnQnlaWE5wZW1WVGIzVjBhRU4xY25OdmNnQnlaWE5wZW1WVGIz
VjBhR1ZoYzNSRGRYSnpiM0lBY21WemFYcGxVMjkxZEdoM1pYTjAKUTNWeWMyOXlBSEpsYzJsNlpW
ZGxjM1JEZFhKemIzSUFZMlZzYkVOMWNuTnZjZ0JvWld4d1EzVnljMjl5QUhwdmIyMUpia04xY25O
dgpjZ0I2YjI5dFQzVjBRM1Z5YzI5eUFHeHZZV1JsWkFCZlFtOXZiQUJqWVc1TWIyRmtYME5HVlZK
TVEyRmphR1ZEYjNCNVFXeHNVR0Z5CmRHbDBhVzl1VG1GdFpYTUFabkpoYldWM2IzSnJUR2xpY21G
eWVRQkRSazVsZEhkdmNtdE1hV0p5WVhKNUFHZGxkRjlyUTBaVlVreEQKWVdOb1pWQmhjblJwZEds
dmJrdGxlUUJmWDBOR1UzUnlhVzVuQUVOR1UzUnlhVzVuVW1WbUFHTnZibk4wWVc1MFgydERSbFZT
VEVOaApZMmhsVUdGeWRHbDBhVzl1UzJWNUFHTmhia3h2WVdSZlEwWlZVa3hEWVdOb1pVTnZjSGxC
Ykd4SWIzTjBUbUZ0WlhOSmJsQmxjbk5wCmMzUmxiblJUZEc5eVpVWnZjbEJoY25ScGRHbHZiZ0Jq
WVc1TWIyRmtYME5HVlZKTVEyRmphR1ZFWld4bGRHVkliM04wVG1GdFpYTkoKYmxCbGNuTnBjM1Js
Ym5SVGRHOXlaVVp2Y2xCaGNuUnBkR2x2YmdCallXNU1iMkZrWDBOR1NHOXpkRWx6Ukc5dFlXbHVW
Rzl3VEdWMgpaV3dBYzI5bWRFeHBibXRmUTBaVlVreERZV05vWlVOdmNIbEJiR3hRWVhKMGFYUnBi
MjVPWVcxbGN3QmZRMFpWVWt4RFlXTm9aUUJEClJsVlNURU5oWTJobFVtVm1BRjlmYVhOaEFGOWZa
bXhoWjNNQWFXNTBBRjlmY21WelpYSjJaV1FBWDE5R2RXNWpVSFJ5QUY5ZlpHVnoKWTNKcGNIUnZj
Z0J5WlhObGNuWmxaQUJzYjI1bklIVnVjMmxuYm1Wa0lHbHVkQUJUYVhwbEFGOWZZbXh2WTJ0ZlpH
VnpZM0pwY0hSdgpjZ0JmWDJKc2IyTnJYMnhwZEdWeVlXeGZaMlZ1WlhKcFl3QkRSbFZTVEVOaFky
aGxRMjl3ZVVGc2JGQmhjblJwZEdsdmJrNWhiV1Z6ClVtVnpkV3gwYzA1dmRHbG1hV05oZEdsdmJn
QnpiMlowVEdsdWExOURSbFZTVEVOaFkyaGxRMjl3ZVVGc2JFaHZjM1JPWVcxbGMwbHUKVUdWeWMy
bHpkR1Z1ZEZOMGIzSmxSbTl5VUdGeWRHbDBhVzl1QUY5ZlEwWkJjbkpoZVFCRFJrRnljbUY1VW1W
bUFITnZablJNYVc1cgpYME5HVlZKTVEyRmphR1ZFWld4bGRHVkliM04wVG1GdFpYTkpibEJsY25O
cGMzUmxiblJUZEc5eVpVWnZjbEJoY25ScGRHbHZiZ0J6CmIyWjBUR2x1YTE5RFJraHZjM1JKYzBS
dmJXRnBibFJ2Y0V4bGRtVnNBSFZ1YzJsbmJtVmtJR05vWVhJQVFtOXZiR1ZoYmdCblpYUlgKWldK
R2FXeDBaWEpGZG1Gc2RXRjBiM0pEYkdGemN3QmpiR0Z6YzFkbFlrWnBiSFJsY2tWMllXeDFZWFJ2
Y2dCWFpXSkRiMjUwWlc1MApRVzVoYkhsemFYTk1hV0p5WVhKNUFHMXZaSFZzWlVOc1lYTnpBRXhW
VEc5dmEzVndSR1ZtYVc1cGRHbHZiazF2WkhWc1pVTnNZWE56CkFHTm5jMGxrQUhWcGJuUXpNbDkw
QUVOSFUwTnZibTVsWTNScGIyNUpSQUJ0WVdsdVYybHVaRzkzVTJWeWRtVnlRMjl1Ym1WamRHbHYK
YmtsRUFHTmhia3h2WVdSZlEwWklWRlJRVFdWemMyRm5aVk5sZEZKbGMzQnZibk5sVUhKdmVIbFZV
a3dBWTJGdVRHOWhaRU5VUm05dQpkRWRsZEZabGNuUnBZMkZzUjJ4NWNHaHpSbTl5UTJoaGNtRmpk
R1Z5Y3dCQmNIQnNhV05oZEdsdmJsTmxjblpwWTJWelRHbGljbUZ5CmVRQnpiMlowVEdsdWEwTlVS
bTl1ZEVkbGRGWmxjblJwWTJGc1IyeDVjR2h6Um05eVEyaGhjbUZqZEdWeWN3QmZYME5VUm05dWRB
QkQKVkVadmJuUlNaV1lBZFc1emFXZHVaV1FnYzJodmNuUUFWVWx1ZERFMkFGVnVhVU5vWVhJQVEw
ZEdiMjUwU1c1a1pYZ0FRMGRIYkhsdwphQUJzYjI1bklHbHVkQUJEUmtsdVpHVjRBSGRwYm1SdmR3
QmZibVY0ZEZKbGMzQnZibVJsY2dCT1UxSmxjM0J2Ym1SbGNnQmZabkpoCmJXVUFiM0pwWjJsdUFI
TnBlbVVBZDJsa2RHZ0FhR1ZwWjJoMEFFTkhVMmw2WlFCRFIxSmxZM1FBVGxOU1pXTjBBRjlqYjI1
MFpXNTAKVm1sbGR3QmZaR1ZzWldkaGRHVUFYMlpwY25OMFVtVnpjRzl1WkdWeUFGOXNZWE4wVEdW
bWRFaHBkQUJ3Y21Wd1lYSmxaRU52Ym5SbApiblJTWldOMEFGOWliM1Z1WkhNQVgzTjFjR1Z5ZG1s
bGR3QmZjM1ZpZG1sbGQzTUFYM2RwYm1SdmR3QmZaMU4wWVhSbEFGOW1jbUZ0ClpVMWhkSEpwZUFC
ZmJHRjVaWElBWW05MWJtUnpBSEJ2YzJsMGFXOXVBSHBRYjNOcGRHbHZiZ0JoYm1Ob2IzSlFiMmx1
ZEFCaGJtTm8KYjNKUWIybHVkRm9BZEhKaGJuTm1iM0p0QUcweE1RQnRNVElBYlRFekFHMHhOQUJ0
TWpFQWJUSXlBRzB5TXdCdE1qUUFiVE14QUcwegpNZ0J0TXpNQWJUTTBBRzAwTVFCdE5ESUFiVFF6
QUcwME5BQkRRVlJ5WVc1elptOXliVE5FQUdaeVlXMWxBR2hwWkdSbGJnQnphV2R1ClpXUWdZMmho
Y2dCQ1QwOU1BR1J2ZFdKc1pWTnBaR1ZrQUdkbGIyMWxkSEo1Um14cGNIQmxaQUJ6ZFhCbGNteGhl
V1Z5QUhObGRGTjEKY0dWeWJHRjVaWEk2QUhOMVlteGhlV1Z5Y3dCT1UwRnljbUY1QUhOMVlteGhl
V1Z5VkhKaGJuTm1iM0p0QUcxaGMyc0FiV0Z6YTNOVQpiMEp2ZFc1a2N3QmpiMjUwWlc1MGN3Qmpi
MjUwWlc1MGMxSmxZM1FBWTI5dWRHVnVkSE5IY21GMmFYUjVBRTVUVTNSeWFXNW5BR052CmJuUmxi
blJ6VTJOaGJHVUFZMjl1ZEdWdWRITkRaVzUwWlhJQWJXbHVhV1pwWTJGMGFXOXVSbWxzZEdWeUFH
MWhaMjVwWm1sallYUnAKYjI1R2FXeDBaWElBYldsdWFXWnBZMkYwYVc5dVJtbHNkR1Z5UW1saGN3
QnZjR0Z4ZFdVQWJtVmxaSE5FYVhOd2JHRjVUMjVDYjNWdQpaSE5EYUdGdVoyVUFaSEpoZDNOQmMz
bHVZMmh5YjI1dmRYTnNlUUJsWkdkbFFXNTBhV0ZzYVdGemFXNW5UV0Z6YXdCaVlXTnJaM0p2CmRX
NWtRMjlzYjNJQVEwZERiMnh2Y2dCRFIwTnZiRzl5VW1WbUFHTnZjbTVsY2xKaFpHbDFjd0JpYjNK
a1pYSlhhV1IwYUFCaWIzSmsKWlhKRGIyeHZjZ0J2Y0dGamFYUjVBR052YlhCdmMybDBhVzVuUm1s
c2RHVnlBR1pwYkhSbGNuTUFZbUZqYTJkeWIzVnVaRVpwYkhSbApjbk1BYzJodmRXeGtVbUZ6ZEdW
eWFYcGxBSEpoYzNSbGNtbDZZWFJwYjI1VFkyRnNaUUJ6YUdGa2IzZERiMnh2Y2dCemFHRmtiM2RQ
CmNHRmphWFI1QUhOb1lXUnZkMDltWm5ObGRBQnphR0ZrYjNkU1lXUnBkWE1BYzJoaFpHOTNVR0Yw
YUFCRFIxQmhkR2dBUTBkUVlYUm8KVW1WbUFHRjFkRzl5WlhOcGVtbHVaMDFoYzJzQWJHRjViM1Yw
VFdGdVlXZGxjZ0JoWTNScGIyNXpBRTVUUkdsamRHbHZibUZ5ZVFCdQpZVzFsQUdSbGJHVm5ZWFJs
QUhOMGVXeGxBRjloZEhSeUFISmxabU52ZFc1MEFHbHVkRE15WDNRQWJXRm5hV01BYkdGNVpYSUFY
ME5CClRHRjVaWEpKZG1GeWN3QkRRVXhoZVdWeUFGOWtjbUZuVkhsd1pYTUFYM1pwWlhkQmRYaHBi
R2xoY25rQVgwNVRWbWxsZDBGMWVHbHMKYVdGeWVRQmZka1pzWVdkekFHRmliM1YwVkc5U1pYTnBl
bVVBYVhOUGNHRnhkV1VBZFc1MWMyVmtNd0JvWVhOT2IzUk5aWE56WldSWAphWFJvU1hOR2JHbHdj
R1ZrQUdsbmJtOXlaVWhwZEZSbGMzUUFjM0JsWTJsaGJFRnlZMmhwZG1sdVp3QnVaV1ZrYzBScGMz
QnNZWGxHCmIzSkNiM1Z1WkhNQWFYTkdiR2x3Y0dWa0FISmxiVzkyYVc1blYybDBhRzkxZEVsdWRt
RnNhV1JoZEdsdmJnQnVaV1ZrYzBKdmRXNWsKYzBOb1lXNW5aVTV2ZEdVQVltOTFibVJ6UTJoaGJt
ZGxUbTkwWlhOVGRYTndaVzVrWldRQWRXNTFjMlZrTWdCdVpXVmtjMFp5WVcxbApRMmhoYm1kbFRt
OTBaUUJtY21GdFpVTm9ZVzVuWlU1dmRHVnpVM1Z6Y0dWdVpHVmtBR05oYmtSeVlYZFRkV0oyYVdW
M2MwbHVkRzlNCllYbGxjZ0IxYm5WelpXUXhBRzVsWldSelJHbHpjR3hoZVFCM1lXNTBjMGRUZEdG
MFpRQmhkWFJ2Y21WemFYcGxVM1ZpZG1sbGQzTUEKWVhWMGIzTnBlbWx1WndCeWIzUmhkR1ZrVDNK
VFkyRnNaV1JHY205dFFtRnpaUUJ5YjNSaGRHVmtSbkp2YlVKaGMyVUFYMTlXUm14aApaM01BWDFa
R2JHRm5jd0JmZGtac1lXZHpNZ0J1WlhoMFMyVjVWbWxsZDFKbFprTnZkVzUwQUhCeVpYWnBiM1Z6
UzJWNVZtbGxkMUpsClprTnZkVzUwQUdselZtbHphV0pzWlZKbFkzUUFhR0Z6Vkc5dmJGUnBjQUJq
WVdOb1pXUkpjMFpzYVhCd1pXUUFiV1Z1ZFZkaGMxTmwKZEFCZlgxWkdiR0ZuY3pJQVRsTldhV1Yz
QUY5c1lYTjBVbWxuYUhSSWFYUUFYMk52ZFc1MFpYSndZWEowQUY5bWFXVnNaRVZrYVhSdgpjZ0Jm
ZDJsdVJYWmxiblJOWVhOckFGOTNhVzVrYjNkT2RXMEFUbE5KYm5SbFoyVnlBRjlzWlhabGJBQmZZ
bUZqYTJkeWIzVnVaRU52CmJHOXlBRTVUUTI5c2IzSUFYMkp2Y21SbGNsWnBaWGNBWDNCdmMzUnBi
bWRFYVhOaFlteGxaQUJmYzNSNWJHVk5ZWE5yQUY5bWJIVnoKYUVScGMyRmliR1ZrQUY5eVpYTmxj
blpsWkZkcGJtUnZkekVBWDJOMWNuTnZjbEpsWTNSekFGOTBjbVZqZEZSaFlteGxBRjl0YVc1cApT
V052YmdCZmJtRnRaUUJmYzJsNlpRQk9VMU5wZW1VQWMyTmhiR0ZpYkdVQVpHRjBZVkpsZEdGcGJt
VmtBSFZ1YVhGMVpWZHBibVJ2CmR3QnphWHBsVjJGelJYaHdiR2xqYVhSc2VWTmxkQUJpZFdsc2RF
bHVBRzVsWldSelZHOUZlSEJoYm1RQWRYTmxSVkJUVDI1U1pYTnYKYkhWMGFXOXVUV2x6YldGMFky
Z0FiV0YwWTJobGMwOXViSGxQYmtKbGMzUkdhWFIwYVc1blFYaHBjd0JqYjJ4dmNrMWhkR05vVUhK
bApabVZ5Y21Wa0FHMTFiSFJwY0d4bFVtVnpiMngxZEdsdmJrMWhkR05vYVc1bkFHWnZZM1Z6WldS
WGFHbHNaVkJ5YVc1MGFXNW5BR0Z5ClkyaHBkbVZDZVU1aGJXVUFkVzVpYjNWdVpHVmtRMkZqYUdW
RVpYQjBhQUJtYkdsd2NHVmtBR0ZzYVdGelpXUUFaR2x5ZEdsbFpBQmoKWVdOb1pVMXZaR1VBYzJG
dGNHeGxUVzlrWlFCeVpYTk5ZWFJqYUZCeVpXWmxjbkpsWkFCcGMxUmxiWEJzWVhSbEFHWmhhV3hs
WkZSdgpSWGh3WVc1a0FISmxjMlZ5ZG1Wa01RQmZYMmx0WVdkbFJteGhaM01BWDNKbGNITUFYMmx0
WVdkbFFYVjRhV3hwWVhKNUFGOU9VMGx0CllXZGxRWFY0YVd4cFlYSjVBRTVUU1cxaFoyVUFYMkpo
YldKdmJ3Qk9VMU5sZEFCT1UwMTFkR0ZpYkdWVFpYUUFYM0psY0hKbGMyVnUKZEdWa1ZWSk1BRjkx
Y214VGRISnBibWNBWDJKaGMyVlZVa3dBWDJOc2FXVnVkSE1BWDNKbGMyVnlkbVZrQUU1VFZWSk1B
Rjl6YVhwbApUR2x0YVhSekFGOW1jbUZ0WlZOaGRtVk9ZVzFsQUY5eVpYTmxjblpsWkZkcGJtUnZk
eklBWDNkR2JHRm5jd0JpWVdOcmFXNW5BSFpwCmMybGliR1VBYVhOTllXbHVWMmx1Wkc5M0FHbHpT
MlY1VjJsdVpHOTNBR2hwWkdWelQyNUVaV0ZqZEdsMllYUmxBR1J2Ym5SR2NtVmwKVjJobGJrTnNi
M05sWkFCdmJtVlRhRzkwQUdSbFptVnljbVZrQUdOMWNuTnZjbEpsWTNSelJHbHpZV0pzWldRQWFH
RjJaVVp5WldWRApkWEp6YjNKU1pXTjBjd0IyWVd4cFpFTjFjbk52Y2xKbFkzUnpBR1J2WTBWa2FY
UmxaQUJrZVc1aGJXbGpSR1Z3ZEdoTWFXMXBkQUIzCmIzSnJjMWRvWlc1TmIyUmhiQUJzYVcxcGRH
VmtRbVZqYjIxbFMyVjVBRzVsWldSelJteDFjMmdBZG1sbGQzTk9aV1ZrUkdsemNHeGgKZVFCcFoy
NXZjbVZrUm1seWMzUk5iM1Z6WlFCeVpYQnZjM1JsWkVacGNuTjBUVzkxYzJVQWQybHVaRzkzUkhs
cGJtY0FkR1Z0Y0VocApaR1JsYmdCbWJHOWhkR2x1WjFCaGJtVnNBSGRoYm5SelZHOUNaVTl1VFdG
cGJsTmpjbVZsYmdCdmNIUnBiV2w2WldSRWNtRjNhVzVuClQyc0FiM0IwYVcxcGVtVkVjbUYzYVc1
bkFIUnBkR3hsU1hOU1pYQnlaWE5sYm5SbFpFWnBiR1Z1WVcxbEFHVjRZMngxWkdWa1JuSnYKYlZk
cGJtUnZkM05OWlc1MUFHUmxjSFJvVEdsdGFYUUFaR1ZzWldkaGRHVlNaWFIxY201elZtRnNhV1JT
WlhGMVpYTjBiM0lBYkcxdgpkWE5sZFhCUVpXNWthVzVuQUhKdGIzVnpaWFZ3VUdWdVpHbHVad0Iz
WVc1MGMxUnZSR1Z6ZEhKdmVWSmxZV3hYYVc1a2IzY0FkMkZ1CmRITlViMUpsWjBSeVlXZFVlWEJs
Y3dCelpXNTBTVzUyWVd4cFpHRjBaVU4xY25OdmNsSmxZM1J6VFhObkFHRjJiMmxrYzBGamRHbDIK
WVhScGIyNEFabkpoYldWVFlYWmxaRlZ6YVc1blZHbDBiR1VBWkdsa1VtVm5SSEpoWjFSNWNHVnpB
R1JsYkdGNVpXUlBibVZUYUc5MApBSEJ2YzNSbFpFNWxaV1J6UkdsemNHeGhlVTV2ZEdVQWNHOXpk
R1ZrU1c1MllXeHBaRU4xY25OdmNsSmxZM1J6VG05MFpRQnBibWwwCmFXRnNSbWx5YzNSU1pYTndi
MjVrWlhKVVpXMXdVMlYwQUdGMWRHOWthWE53YkdGNUFIUnZjM05sWkVacGNuTjBSWFpsYm5RQWFY
TkoKYldGblpVTmhZMmhsQUdGMWRHOXNZWGx2ZFhSRmJtZGhaMlZrVTI5dFpYZG9aWEpsQUY5MWJu
VnpaV1FBYTJWNVZtbGxkMU5sYkdWagpkR2x2YmtScGNtVmpkR2x2YmdCa1pXWmhkV3gwUW5WMGRH
OXVRMlZzYkV0RlZHVnRjRzl5WVhKcGJIbEVhWE5oWW14bFpBQmtaV1poCmRXeDBRblYwZEc5dVEy
VnNiRXRGUkdsellXSnNaV1FBYldWdWRVaGhjMEpsWlc1VFpYUUFkMkZ1ZEhOVWIwSmxUVzlrWVd3
QWMyaHYKZDJsdVowMXZaR0ZzUm5KaGJXVUFhWE5VWlhKdGFXNWhkR2x1WndCM2FXNHpNazF2ZFhO
bFFXTjBhWFpoZEdsdmJrbHVVSEp2WjNKbApjM01BYldGcmFXNW5SbWx5YzNSU1pYTndiMjVrWlhK
R2IzSk5iM1Z6WlVSdmQyNEFibVZsWkhOYWIyOXRBSE5sYm5SWGFXNWtiM2RPClpXVmtjMFJwYzNC
c1lYbE5jMmNBZFc1MWMyVmtBRjlmZDBac1lXZHpBRjlrWldaaGRXeDBRblYwZEc5dVEyVnNiQUJm
YVc1cGRHbGgKYkVacGNuTjBVbVZ6Y0c5dVpHVnlBRjloZFhocGJHbGhjbmxUZEc5eVlXZGxBRjkx
YzJWeVNXNTBaWEptWVdObFNYUmxiVWxrWlc1MAphV1pwWlhJQVpHOWphMVJwYkdVQVgyOTNibVZ5
QUY5a2IyTnJRMjl1ZEdWNGRGSmxaZ0JmWm5KaGJXVldhV1YzQUY5aVlXTnJjM1J2CmNGWnBaWGNB
WDJKaFpHZGxUR0ZpWld3QVgyUkdiR0ZuY3dCemFHOTNjMEZ3Y0VKaFpHZGxBRjlrYjJOclZHbHNa
Vk5wZW1VQVgyMXAKYm1sV2FXVjNRMjl1ZEhKdmJHeGxjZ0JPVTBSdlkydFVhV3hsQUY5aGJtbHRZ
WFJ2Y2dCZlRsTlhhVzVrYjNkQmJtbHRZWFJ2Y2dCegpkR0Z1WkdGeVpFWnlZVzFsQUhKbFlXeFhh
VzVrYjNkT2RXMWlaWElBWDNKbGJXVnRZbVZ5WldSR2FYSnpkRkpsYzNCdmJtUmxjbE4wCllYUmxB
SFpwWlhkSWFXVnlZWEpqYUhsTWIyTnJBRTVUVm1sbGQwaHBaWEpoY21Ob2VVeHZZMnNBZFc1a2Iw
MWhibUZuWlhJQVgzVnUKWkc5VGRHRmphd0JmY21Wa2IxTjBZV05yQUY5eWRXNU1iMjl3VFc5a1pY
TUFYMDVUVlc1a2IwMWhibUZuWlhKUWNtbDJZWFJsTVFCcwpiMjVuSUd4dmJtY2dkVzV6YVdkdVpX
UWdhVzUwQUhWcGJuUTJORjkwQUY5MFlYSm5aWFFBWDNCeWIzaDVBRjlPVTFWdVpHOU5ZVzVoCloy
VnlVSEpwZG1GMFpUSUFYMDVUVlc1a2IwMWhibUZuWlhKUWNtbDJZWFJsTXdCT1UxVnVaRzlOWVc1
aFoyVnlBSGRwYm1SdmQwTnYKYm5SeWIyeHNaWElBWDNkcGJtUnZkMDVwWWs1aGJXVUFYMlJ2WTNW
dFpXNTBBRjkzYVc1a2IzZERiMjUwY205c2JHVnljd0JmWm1scwpaVlZTVEFCZlptbHNaVlI1Y0dV
QVgzQnlhVzUwU1c1bWJ3QmZZWFIwY21saWRYUmxjd0JPVTAxMWRHRmliR1ZFYVdOMGFXOXVZWEo1
CkFGOXRiM0psVm1GeWN3Qk9VMUJ5YVc1MFNXNW1id0JmWkc5amRXMWxiblJTWlhObGNuWmxaQUJ6
WVhabFVHRnVaV3hCWTJObGMzTnYKY25rQVgyUnBjM0JzWVhsT1lXMWxBRjl3Y21sMllYUmxSR0Yw
WVFCZmRXNWtiMDFoYm1GblpYSUFYMlJ2WTBac1lXZHpBR2x1UTJ4dgpjMlVBYUdGelZXNWtiMDFo
Ym1GblpYSUFjbVZqYjI1amFXeGxaRlJ2Um1sc1pVNWhiV1VBWTJobFkydHBibWRFYVhOd2JHRjVU
bUZ0ClpRQm9ZWE5KYm5aaGJHbGtVbVZ6ZEc5eVlXSnNaVk4wWVhSbEFHaGhjMFYyWlhKSVlXUkpi
blpoYkdsa1VtVnpkRzl5WVdKc1pWTjAKWVhSbEFGSkZVMFZTVmtWRUFGOWZaRzlqUm14aFozTUFY
M05oZG1WUVlXNWxiRk5oZG1WVWVYQmxBRTVUUkc5amRXMWxiblFBWDNSdgpjRXhsZG1Wc1QySnFa
V04wY3dCZmQyTkdiR0ZuY3dCemFHOTFiR1JEYkc5elpVUnZZM1Z0Wlc1MEFITm9iM1ZzWkVOaGMy
TmhaR1VBCmJtbGlTWE5NYjJGa1pXUUFibWxpVG1GdFpVbHpVR0YwYUFCZlgzZGpSbXhoWjNNQVgy
WnlZVzFsUVhWMGIzTmhkbVZPWVcxbEFFNVQKVjJsdVpHOTNRMjl1ZEhKdmJHeGxjZ0J5WlhOd2Iy
NWtaWEpNYjJOckFGOXdjbWwyQUU1VFVtVmpkWEp6YVhabFRHOWphd0JmY21WdApaVzFpWlhKbFpF
WnBjbk4wVW1WemNHOXVaR1Z5QUY5M2FXNWtiM2RFYVhOd2JHRjVUMkp6WlhKMlpYSUFYMTlEUmxK
MWJreHZiM0JQClluTmxjblpsY2dCRFJsSjFia3h2YjNCUFluTmxjblpsY2xKbFpnQmZhVzUyWVd4
cFpFTjFjbk52Y2s5aWMyVnlkbVZ5QUY5aGNIQnIKYVhSVWFISmxZV1JEYjI1MFpYaDBBRTVUUjNK
aGNHaHBZM05EYjI1MFpYaDBBRjl6ZFdKMGFISmxZV1JEYjI1MFpYaDBjd0JPVTAxaApjRlJoWW14
bEFGOXNZWE4wUm05amRYTlNhVzVuVm1sbGR3QmZiR0Z6ZEVadlkzVnpVbWx1WjBKc1pXVmtVbVZu
YVc5dUFFNVRVbVZuCmFXOXVBR1J2WTFkcGJtUnZkd0J6YUdWbGRGZHBibVJ2ZHdCZllYUjBZV05v
WldSVGFHVmxkSE1BVGxOTmRYUmhZbXhsUVhKeVlYa0EKWDNGMVpYVmxaRk5vWldWMGN3QmtiMk5y
VjJsdVpHOTNWR2wwYkdVQVgyaGxZWEowUW1WaGRFTnNhV1Z1ZEhNQVgyaGxZWEowUW1WaApkRlJv
Y21WaFpFTnZiblJsZUhRQVgyeGhjM1JFYVhOd2JHRjVWR2x0WlFCRFJsUnBiV1ZKYm5SbGNuWmhi
QUJEUmtGaWMyOXNkWFJsClZHbHRaUUJ6ZEdGemFHVmtUM0pwWjJsdUFGOXRiM1psU0dWc2NHVnlB
SGRwYm1SdmQwaGhibVJzWlhKU1pXWUFjbTl2ZEUxbGRISnAKWTNOSVlXNWtiR1Z5VW1WbUFHRjFk
RzlRYjNOcGRHbHZiazFoYzJzQVgzUnZiMnhVYVhCRWFYTmhZbXhsWkVOdmRXNTBBSE5vYjNKMApB
RjlrWld4aGVXVmtSR2x6Y0d4aGVVUnBjMkZpYkdWRGIzVnVkQUIwYVcxbFRXRmphR2x1WlVSbGJH
Vm5ZWFJsQUdOdmJHOXlVM0JoClkyVUFYM0J5YjJacGJHVUFZMjlzYjNKVGNHRmpaVWxFQUhOMGIz
SmhaMlZVZVhCbEFISmxjR3hoWTJWa1JIVnlhVzVuVlc1aGNtTm8KYVhacGJtY0FYMTlqWjBOdmJH
OXlVM0JoWTJVQVgxOWpaME52Ykc5eVZISmhibk5tYjNKdEFFNVRRMjlzYjNKVGNHRmpaUUJoYkhC
bwpZUUJqYjJ4c1lYQnpaV1JQY21sbmFXNEFjR0YwZEdWeWJnQmZZbWx1WkdsdVowRmtZWEIwYjNJ
QVgyZHliM2RDYjNoUGQyNWxjZ0J3CllYSmxiblJYYVc1a2IzY0FYMnhoYzNSUGRHaGxja2hwZEFC
amIyMXdiM05wZEdWa1VHRjBkR1Z5YmdCZllYVjRWMFpzWVdkekFHaGgKYzFOb1lXUnZkd0JtYjNK
alpVRmpkR2wyWlVOdmJuUnliMnh6QUcxcGJtbHRhWHBsWkFCclpXVndRMmhwYkdSeVpXNUJkSFJo
WTJobApaQUJ5WlhOMGIzSmxURzlqWVhScGIyNEFaWGh3YkdsamFYUkRiMnhzWldOMGFXOXVRbVZv
WVhacGIzSUFjbVZ6YVdkdWFXNW5TMlY1ClJtOWpkWE5QYm14NUFHMXBibWxYYVc1a2IzZFVhWFJz
WlVselFVZDFaWE56QUdSdmJuUlRlVzVqVTNWeVptRmpaVlJ2Vm1sbGR3QjMKYVc1a2IzZFFiM05w
ZEdsdmJrbHpVM1JoYkdVQWJXbHVhVmRwYm1SdmQxUnBkR3hsVG1WbFpITlZjR1JoZEdVQVlteHZZ
MnRJWldGeQpkRUpsWVhRQWNtVnphWHBsUTI5eWJtVnlVMmh2ZDI0QWJHOWpZWFJwYjI1SmMxUmxi
WEJ2Y21GeWVRQmpZVzVJYVdSbEFHRjFkRzltCmFXeHNBSEpsWTJWcGRtVmtSRzlqYTBSbFlYUm9U
bTkwYVdacFkyRjBhVzl1QUcxcGJtbHRhWHBsUTI5dGNHeGxkR1ZrQUcxcGJtbHQKYVhwbFJtRnBi
R1ZrQUhkcGJtUnZkME5zYjNObFpBQnZiVzkxYzJWMWNGQmxibVJwYm1jQVltOXlaR1Z5Vm1sbGQw
aGhjMFJwYzNCcwpZWGxPWVcxbEFHUmxiR1ZuWVhSbFVtVjBkWEp1YzBacFpXeGtSV1JwZEc5eUFH
NWxaV1J6UTI5dWMzUnlZV2x1ZEFCdmQyNXpVbVZoCmJGZHBibVJ2ZHdCcGJuWmhiR2xrVm1sbGQw
aHBaWEpoY21Ob2VRQnRhV2RvZEVKbFRXOTJhVzVuUTJ4cFpXNTBVMmxrWlFCa1pXWmgKZFd4MFFu
VjBkRzl1VUdGMWMyVmtBRzF2ZG1GaWJHVkNlVUpoWTJ0bmNtOTFibVFBY0hKbGRtVnVkSE5CWTNS
cGRtRjBhVzl1QUdsbgpibTl5WlhOTmIzVnpaVVYyWlc1MGN3QnJaWGxYYVc1a2IzZEpaMjV2Y21s
dVowWnZZM1Z6QUd4cGRtVlNaWE5wZW1WSmJXRm5aVU5oClkyaGxhVzVuUlc1aFlteGxaQUJqZFhK
eVpXNTBSR1Z3ZEdnQWJtVmxaSE5UWTJGc2FXNW5BR0ZzYkc5M2MxUnZiMnhVYVhCelYyaGwKYmtG
d2NHeHBZMkYwYVc5dVNYTkpibUZqZEdsMlpRQnVaV1ZrYzFSdlUyVjBTV2R1YjNKbFZHRm5BRzVs
WldSelZHOVNaWE5sZEVSeQpZV2ROWVhKbmFXNXpBRzlqWTJ4MWMybHZibE4wWVhSbFNYTldhWE5w
WW14bEFHNWxaV1J6Vkc5U1pXMXZkbVZHYVdWc1pFVmthWFJ2CmNnQjNZVzUwYzBocFpHVlBia1Js
WVdOMGFYWmhkR1VBWVhOd1pXTjBVbUYwYVc5R2IzSkRiMjUwWlc1MEFISmxjMmw2WlVsdVkzSmwK
YldWdWRITkdiM0pEYjI1MFpXNTBBRzFwYmxOcGVtVkdiM0pEYjI1MFpXNTBBRzFoZUZOcGVtVkdi
M0pEYjI1MFpXNTBBRzF2WkdGcwpTWE5CWTNScGRtVUFaWGhqYkhWa1pXUkdjbTl0Vm1semFXSnNa
VmRwYm1SdmQweHBjM1FBY0hKbGMyVnlkbVZ6UTI5dWRHVnVkRVIxCmNtbHVaMHhwZG1WU1pYTnBl
bVVBWVhWMGIzSmxZMkZzWTNWc1lYUmxjMHRsZVZacFpYZE1iMjl3QUd0bGVWWnBaWGRNYjI5d1Rt
VmwKWkhOU1pXTmhiR01BYTJWNVZtbGxkMGR5YjNWd1FtOTFibVJoY25sT1pXVmtVbVZqWVd4akFH
dGxlVlpwWlhkU1pXUnBjbVZqZEdsdgpia1JwYzJGaWJHVmtBR1JwYzNCc1lYbHpWMmhsYmxOamNt
VmxibEJ5YjJacGJHVkRhR0Z1WjJWekFHaHBaR1Z6Vkc5dmJHSmhja0oxCmRIUnZiZ0JrYVhKMGVV
UmxabUYxYkhSQ2RYUjBiMjVEWld4c0FHNXZSR1ZtWVhWc2RFSjFkSFJ2YmdCaGJHeHZkM05EZFhK
emIzSlMKWldOMGMxZG9aVzVKYm1GamRHbDJaUUJ6YUdGeVpYTlFZWEpsYm5STFpYbFRkR0YwWlFC
allXNUNaV052YldWV2FYTnBZbXhsVjJsMAphRzkxZEV4dloybHVBSFJ5WVdOcmFXNW5RWEpsWVhO
RWFYSjBlUUIzWVc1MGMwMXZkWE5sVFc5MlpVVjJaVzUwYzBsdVFtRmphMmR5CmIzVnVaQUJ6YUdG
eWFXNW5WSGx3WlFCd2NtVm1aWEp5WldSQ1lXTnJhVzVuVEc5allYUnBiMjRBYjNKa1pYSlBkWFJK
YmxCeWIyZHkKWlhOekFHMXZkbUZpYkdVQWMyaHZkM05NYjJOclFuVjBkRzl1QUhkaGMwTkhUM0pr
WlhKcGJtZEZibUZpYkdWa0FIZGhjMUpsYzJoaApjR2x1WjBWdVlXSnNaV1FBWVhWMGIzSmxZMkZz
WTNWc1lYUmxjMVJ2Y0VKdmNtUmxjbFJvYVdOcmJtVnpjd0JoZFhSdmNtVmpZV3hqCmRXeGhkR1Z6
UW05MGRHOXRRbTl5WkdWeVZHaHBZMnR1WlhOekFISmxiR0YwYVhabFQzSmtaWEpwYm1jQWNtVnph
WHBsVjJWcFoyaDAKYVc1bkFITm9iM2R6Vkc5d1FtOXlaR1Z5VTJWd1lYSmhkRzl5QUhOb2IzZHpR
bTkwZEc5dFFtOXlaR1Z5VTJWd1lYSmhkRzl5QUd4cApaMmgwUW05MGRHOXRSM0poWkdsbGJuUUFZ
MjlzYkdWamRHbHZia0psYUdGMmFXOXlBSE5vWVdSdmQxTjBlV3hsQUhCbGJtUnBibWRVCmNtRmph
Mmx1WjBGeVpXRnpBR2hoYm1Sc2FXNW5TVzUyWVd4cFpFTjFjbk52Y2xKbFkzUnpBR0ZzYkc5M2Mw
TnZibU4xY25KbGJuUlcKYVdWM1JISmhkMmx1WndCaGJubFdhV1YzUTJGdVJISmhkME52Ym1OMWNu
SmxiblJzZVFCd2NtVjJaVzUwYzBGd2NGUmxjbTFwYm1GMAphVzl1VjJobGJrMXZaR0ZzQUdWNGNH
eHBZMmwwUTI5c2IzSlRjR0ZqWlFCdmNtUmxja1p5YjI1MFFXNXBiV0YwYVc5dVZIbHdaUUJ2CmNt
UmxjazkxZEVGdWFXMWhkR2x2YmxSNWNHVUFhWE5TWlhOMGIzSmhZbXhsQUdOdmJuUmxiblJ6U0dG
MlpVbHVkbUZzYVdSUVpYSnoKYVhOMFpXNTBVM1JoZEdVQWQybHVaRzkzVjJGelFXTnhkV2x5WldS
R2NtOXRWR0ZzWVdkbGJuUUFaWGhwYzNSbFpFRjBUR0YxYm1ObwpBR0ZzY0doaFNHRnpRMmhoYm1k
bFpBQnphRzkzYzBGMWRHOXpZWFpsUW5WMGRHOXVBSEJ5WlhabGJuUnBibWRCZFhSdmJXRjBhV05V
ClpYSnRhVzVoZEdsdmJnQmhkWFJ2YldGMGFXTlVaWEp0YVc1aGRHbHZibE5oWm1VQWJXOTJaV1JQ
Wm1aelkzSmxaVzRBWVdOalpYTnoKYVdKcGJHbDBlVlJwZEd4bFEyVnNiRkpsYlc5MlpXUUFaRzlw
Ym1kRFlXTm9aVVJwYzNCc1lYbEpibEpsWTNRQWFXZHViM0psUTNWeQpjbVZ1ZEVWMlpXNTBBSE5v
WVhKbGMxQmhjbVZ1ZEVacGNuTjBVbVZ6Y0c5dVpHVnlBSFpwWlhkelRHRjViM1YwU1hORGJHVmhi
Z0IyCmFXVjNjME52Ym5OMGNtRnBiblJ6UVhKbFEyeGxZVzRBZG1sbGQzTk1ZWGx2ZFhSRVpYQmxi
bVJsYm5STlpYUnlhV056UVhKbFEyeGwKWVc0QVptOXlZMlZOWVdsdVFYQndaV0Z5WVc1alpRQlNW
RXhNWVhsdmRYUkVhWEpsWTNScGIyNEFabTl5WTJWSmJtRmpkR2wyWlZObwpZV1J2ZHdCcGJrWjFi
R3hUWTNKbFpXNU5iMlJsQUdselNXNWhZM1JwZG1WU1pYWnBjMmx2YmxkcGJtUnZkd0JwYzBOc2Iz
TmxaQUJqCmRYSnlaVzUwVEdsMlpWSmxjMmw2WlVWa1oyVnpBSGRoYm5SelJuVnNiRk5qY21WbGJr
MXZaR1ZKWmtGd2NISnZjSEpwWVhSbEFHWnkKWldWUGJrTnNiM05sVjJsdVpHOTNTWE5EYkc5emFX
NW5BSGRoYzFacGMybGliR1ZDWldadmNtVk5hVzVwYldsNllYUnBiMjRBWkdWcwpaV2RoZEdWU1pY
TndiMjVrYzFSdlYybHNiRVZ1WTI5a1pWSmxjM1J2Y21GaWJHVlRkR0YwWlFCc1lYTjBRWEJ3Ykds
bFpFTnZiR3hsClkzUnBiMjVDWldoaGRtbHZjZ0IzWVhOQlkzUnBkbVZDWldadmNtVkRkWEp5Wlc1
MFJYWmxiblFBYUdGelMyVjVRWEJ3WldGeVlXNWoKWlFCb1lYTk5ZV2x1UVhCd1pXRnlZVzVqWlFC
b1lYTkxaWGxHYjJOMWN3Qm9ZWE5OWVdsdVJtOWpkWE1BWTJGdVNHOXpkRXhoZVdWeQpjMGx1VjJs
dVpHOTNVMlZ5ZG1WeUFHaGhjMGx1WTI5dGNHRjBhV0pzWlVGd2NHVmhjbUZ1WTJWUGRtVnljbWxr
WlFCb1lYTkRkWE4wCmIyMUJjSEJsWVhKaGJtTmxTVzVCVTNWaWRtbGxkd0J6ZEc5c1pVdGxlVVp2
WTNWekFHUnZZM1Z0Wlc1MFUyaHZkM05RWVc1bGJFOXUKUTJ4dmMyVUFkWE5sYzFCdmFXNTBTVzUw
WldkeVlXeHBlbUYwYVc5dVJtOXlUR0Y1YjNWMEFHbG5ibTl5WlV4aGVXVnlWWEJrWVhSbApjd0J6
Y0dGalpVRnpjMmxuYm0xbGJuUkViMjVsQUdoaGMwNXZia052YlhCdmMybDBhVzVuUW1GamEybHVa
MU4wYjNKbEFGOWZZWFY0ClYwWnNZV2R6QUY5M2FXNWtiM2RTWldZQVgzTmpZV3hsUm1GamRHOXlB
Rjl0YjNWelpVMXZkbVZrVEdsemRHVnVaWEp6QUVOR1RYVjAKWVdKc1pVRnljbUY1VW1WbUFGOXVa
V1ZrYzBScGMzQnNZWGxTWldkcGIyNEFYMlJsWm1WeWNtVmtUbVZsWkhORWFYTndiR0Y1VW1Wbgph
Vzl1QUhWelpYSkdjbUZ0WlFCMGIyOXNZbUZ5QUY5MGIyOXNZbUZ5U1dSbGJuUnBabWxsY2dCZlkz
VnljbVZ1ZEVsMFpXMXpBRjlqCmRYSnlaVzUwU1hSbGJVbGtaVzUwYVdacFpYSnpBRjl5WlhNeEFG
OXlaWE15QUY5elpXeGxZM1JsWkVsMFpXMUpaR1Z1ZEdsbWFXVnkKQUY5dFpYUnlhV056QUY5c2Iy
ZHBZMkZzVjJsdVpHOTNBRjlqYjI1bWFXZFFZV3hsZEhSbEFGOTBiMjlzWW1GeVZtbGxkd0JmYzNs
dQpZMUJ2YzNSRmJtRmliR1ZrUTI5MWJuUUFYM1JpUm14aFozTUFZV3hzYjNkelZYTmxja04xYzNS
dmJXbDZZWFJwYjI0QVlYVjBiM05oCmRtVnpWWE5wYm1kSlpHVnVkR2xtYVdWeUFHbHVhWFJwWVd4
RGIyNW1hV2QxY21GMGFXOXVSRzl1WlFCa2IyVnpUbTkwUVhSMFlXTm8KVkc5TlpXNTFRbUZ5QUdS
bGJHVm5ZWFJsUkdWbVlYVnNkRWwwWlcxSlpHVnVkR2xtYVdWeWN3QmtaV3hsWjJGMFpVRnNiRzkz
WldSSgpkR1Z0U1dSbGJuUnBabWxsY25NQVpHVnNaV2RoZEdWSmRHVnRWMmwwYUVsMFpXMUpaR1Z1
ZEdsbWFXVnlBR1JsYkdWbllYUmxUbTkwCmFXWnBZMkYwYVc5dWMwVnVZV0pzWldRQWNISmxabVZ5
YzFSdlFtVlRhRzkzYmdCc2IyRmtTWFJsYlhOSmJXMWxaR2xoZEdWc2VRQmoKZFhKeVpXNTBTWFJs
YlhORGIyNTBZV2x1YzFCc1lXTmxhRzlzWkdWeUFHTjFjM1J2YldsNllYUnBiMjVRWVc1bGJFbHpV
blZ1Ym1sdQpad0IxYzJWelEzVnpkRzl0VTJobFpYUlhhV1IwYUFCamJHbGphMEZ1WkVSeVlXZFFa
WEptYjNKdGMwTjFjM1J2YldsNllYUnBiMjRBCmMyaHZkM05PYjBOdmJuUmxlSFJOWlc1MUFHTjFj
bkpsYm5Sc2VVeHZZV1JwYm1kUWJHRmpaV2h2YkdSbGNuTUFaR1ZzWldkaGRHVkoKZEdWdFYybDBh
RWwwWlcxSlpHVnVkR2xtYVdWeU1nQnBia2RzYjJKaGJGZHBibVJ2ZHdCMWMybHVaMFpUVFdWMGNt
bGpjd0JyWlhsaQpiMkZ5WkV4dmIzQk9aV1ZrYzFWd1pHRjBhVzVuQUhOb2IzZElhV1JsUkhWeWFX
NW5RMjl1Wm1sbmRYSmhkR2x2YmtOb1lXNW5aVVJwCmMyRmliR1ZrQUdScGMzQnNZWGxOYjJSbEFI
TnBlbVZOYjJSbEFHUnZUbTkwVTJodmQwSmhjMlZzYVc1bFUyVndZWEpoZEc5eUFHaHAKWkdWWGFY
Um9iM1YwVW1WemFYcHBibWRYYVc1a2IzZElhVzUwQUdGMWRHOTJZV3hwWkdGMFpYTkpkR1Z0YzBS
cGMyRmliR1ZrQUdsdQpRWFYwYjNaaGJHbGtZWFJwYjI0QWJHOWhaR1ZrVFdWMGNtbGpjd0JmWDNS
aVJteGhaM01BWDJOMWMzUnZiV2w2WVhScGIyNVRhR1ZsCmRGZHBaSFJvQUY5MFlsSmxjMlZ5ZG1W
a0FFNVRWRzl2YkdKaGNnQnpZM0psWlc1R2NtRnRaUUJmWTNWemRHOXRSbWxsYkdSRlpHbDAKYjNK
ekFHTm9hV3hrVjJsdVpHOTNjd0JqYUdsc1pFOXlaR1Z5YVc1bkFGOTBiM1ZqYUV4cGMzUmxibVZ5
Y3dCZllXNXBiV0YwYVc5dQpjMFJwWTNScGIyNWhjbmtBWTJ4cFpXNTBVMmxrWlVSeVlXZFFiM0ow
QUY5ZlEwWk5ZV05vVUc5eWRBQkRSazFoWTJoUWIzSjBVbVZtCkFHTnNhV1Z1ZEZOcFpHVkVjbUZu
VTI5MWNtTmxBRjlmUTBaU2RXNU1iMjl3VTI5MWNtTmxBRU5HVW5WdVRHOXZjRk52ZFhKalpWSmwK
WmdCemRYSm1ZV05sYzFSb1lYUkpiblJsY25ObFkzUkhjbTkzUW05NEFIWnBaWGRDWVdOcmFXNW5V
M1Z5Wm1GalpYTUFaM0p2ZDBKdgplRlpwWlhjQVgyeGhkR05vWldSV2FXVjNSbTl5VTJOeWIyeHNS
WFpsYm5SekFHWjFiR3hUWTNKbFpXNVRkRzl5WVdkbEFGOXlkVzV1CmFXNW5WMmx1Wkc5M1ZISmhi
bk5tYjNKdFFXNXBiV0YwYVc5dUFGOU9VMWRwYm1SdmQxUnlZVzV6Wm05eWJVRnVhVzFoZEdsdmJn
QmYKWVc1cGJXRjBhVzl1UW1Wb1lYWnBiM0lBVGxOWGFXNWtiM2RCYm1sdFlYUnBiMjVDWldoaGRt
bHZjZ0J5WlhOMGIzSmhkR2x2YmtOcwpZWE56QUhCbGNuTnBjM1JsYm5SVlNWZHBibVJ2ZDBsRUFH
MXZkbVZ0Wlc1MFIzSnZkWEJKUkFCc1lYTjBSSEpoWjFKbFoybHZia1JoCmRHRUFUbE5FWVhSaEFH
UnZZM1Z0Wlc1MFJXUnBkR2x1WjFOMFlYUmxBR1J2WTNWdFpXNTBRWFYwYjNOaGRtbHVaMFZ5Y205
eUFGOWoKYjJSbEFGOWtiMjFoYVc0QVgzVnpaWEpKYm1adkFFNVRSWEp5YjNJQWJtOXVUVzlrWVd4
RWIyTjFiV1Z1ZEVWeWNtOXlBSFJwZEd4bApSbWxsYkdSUWJHRmpaV2h2YkdSbGNsWnBaWGNBZEhK
aGJuTm1iM0p0Ukdsa1EyOXRjR3hsZEdWSVlXNWtiR1Z5QUY5M2FXNWtiM2RFCmNtRm5WSGx3WlU5
aWMyVnlkbVZ5QUhOaGRtVmtSbWx5YzNSU1pYTndiMjVrWlhJQVpuVnNiRk5qY21WbGJrRnVhVzFo
ZEc5eUFHbHUKYzNCbFkzUnZja0poY2dCT1UwbHVjM0JsWTNSdmNrSmhjZ0JmWm5KaGJXVjNiM0py
VTJOaGJHVkdZV04wYjNJQVkzVnljMjl5V205dQpaUUJmVGxOYWIyNWxBRTVUV205dVpRQm1kV3hz
VTJOeVpXVnVVSEpsYzJWdWRHRjBhVzl1VDNCMGFXOXVjd0JPVTBGd2NHeHBZMkYwCmFXOXVVSEps
YzJWdWRHRjBhVzl1UkdWbVlYVnNkQUJPVTBGd2NHeHBZMkYwYVc5dVVISmxjMlZ1ZEdGMGFXOXVR
WFYwYjBocFpHVkUKYjJOckFFNVRRWEJ3YkdsallYUnBiMjVRY21WelpXNTBZWFJwYjI1SWFXUmxS
RzlqYXdCT1UwRndjR3hwWTJGMGFXOXVVSEpsYzJWdQpkR0YwYVc5dVFYVjBiMGhwWkdWTlpXNTFR
bUZ5QUU1VFFYQndiR2xqWVhScGIyNVFjbVZ6Wlc1MFlYUnBiMjVJYVdSbFRXVnVkVUpoCmNnQk9V
MEZ3Y0d4cFkyRjBhVzl1VUhKbGMyVnVkR0YwYVc5dVJHbHpZV0pzWlVGd2NHeGxUV1Z1ZFFCT1Uw
RndjR3hwWTJGMGFXOXUKVUhKbGMyVnVkR0YwYVc5dVJHbHpZV0pzWlZCeWIyTmxjM05UZDJsMFky
aHBibWNBVGxOQmNIQnNhV05oZEdsdmJsQnlaWE5sYm5SaApkR2x2YmtScGMyRmliR1ZHYjNKalpW
RjFhWFFBVGxOQmNIQnNhV05oZEdsdmJsQnlaWE5sYm5SaGRHbHZia1JwYzJGaWJHVlRaWE56CmFX
OXVWR1Z5YldsdVlYUnBiMjRBVGxOQmNIQnNhV05oZEdsdmJsQnlaWE5sYm5SaGRHbHZia1JwYzJG
aWJHVklhV1JsUVhCd2JHbGoKWVhScGIyNEFUbE5CY0hCc2FXTmhkR2x2YmxCeVpYTmxiblJoZEds
dmJrUnBjMkZpYkdWTlpXNTFRbUZ5VkhKaGJuTndZWEpsYm1ONQpBRTVUUVhCd2JHbGpZWFJwYjI1
UWNtVnpaVzUwWVhScGIyNUdkV3hzVTJOeVpXVnVBRTVUUVhCd2JHbGpZWFJwYjI1UWNtVnpaVzUw
CllYUnBiMjVCZFhSdlNHbGtaVlJ2YjJ4aVlYSUFUbE5WU1c1MFpXZGxjZ0JPVTBGd2NHeHBZMkYw
YVc5dVVISmxjMlZ1ZEdGMGFXOXUKVDNCMGFXOXVjd0JmWVhCd1pXRnlZVzVqWlFCZlluVnVaR3hs
QUY5alprSjFibVJzWlFCZmNtVnpaWEoyWldReUFGOXdjbWx1WTJsdwpZV3hEYkdGemN3QmZhVzVw
ZEdsaGJGQmhkR2dBWDNKbGMyOXNkbVZrVUdGMGFBQmZjbVZ6WlhKMlpXUXpBRjlzYjJOckFFNVRR
blZ1ClpHeGxBRjl3Y21sMllYUmxBRTVUUVhCd1pXRnlZVzVqWlFCZmFHOXpkSE5NWVhsbGNuTkpi
bGRwYm1SdmQxTmxjblpsY2xOMWMzQmwKYm5OcGIyNXpBRjkyYVdWM1UyTnliMnhzYVc1blEyOTFi
blFBWDJ4aGVXOTFkRTFwYmxOcGVtVUFYMnhoZVc5MWRFMWhlRk5wZW1VQQpjMkYyWldSVFkzSmxa
VzVPZFcxaVpYSUFjMk55WldWdVZYQmtZWFJsYzBScGMyRmliR1ZrVlc1MGFXeEdiSFZ6YUZSdmEy
VnVBRjlzCmFYWmxVbVZ6YVhwbFEyOTFiblFBVGxOWGFXNWtiM2RCZFhocGJHbGhjbmtBVGxOWGFX
NWtiM2NBWkdWamIzbFhhVzVrYjNjQVlYQncKUzJsMFJISmhkMFJsWTI5NVYybHVaRzkzUTJ4aGMz
TUFaMlYwUVhCd1MybDBSSEpoZDBSbFkyOTVWMmx1Wkc5M1EyeGhjM01BYzI5bQpkRXhwYm10ZlEw
WklWRlJRVFdWemMyRm5aVk5sZEZKbGMzQnZibk5sVUhKdmVIbFZVa3dBWDE5RFJraFVWRkJOWlhO
ellXZGxBRU5HClNGUlVVRTFsYzNOaFoyVlNaV1lBWDE5RFJsVlNUQUJEUmxWU1RGSmxaZ0JmUTBa
SVZGUlFUV1Z6YzJGblpWTmxkRkpsYzNCdmJuTmwKVUhKdmVIbFZVa3dBVjB0RGNtVmhkR1ZRY21s
MllYUmxVM1J2Y21GblpWTmxjM05wYjI0QVgxOURSbFZTVEZOMGIzSmhaMlZUWlhOegphVzl1QUVO
R1ZWSk1VM1J2Y21GblpWTmxjM05wYjI1U1pXWUFWMHREYjNCNVVtVnhkV1Z6ZEZkcGRHaFRkRzl5
WVdkbFUyVnpjMmx2CmJnQmZhVzUwWlhKdVlXd0FUbE5WVWt4U1pYRjFaWE4wU1c1MFpYSnVZV3dB
VGxOVlVreFNaWEYxWlhOMEFGZExRMkZqYUdWa1VtVnoKY0c5dWMyVkdiM0pTWlhGMVpYTjBBRTVU
UTJGamFHVmtWVkpNVW1WemNHOXVjMlZKYm5SbGNtNWhiQUJPVTBOaFkyaGxaRlZTVEZKbApjM0J2
Ym5ObEFGZExRMjl3ZVVoVVZGQkRiMjlyYVdWVGRHOXlZV2RsQUU5d1lYRjFaVU5HU0ZSVVVFTnZi
MnRwWlZOMGIzSmhaMlVBClEwWklWRlJRUTI5dmEybGxVM1J2Y21GblpWSmxaZ0JYUzBkbGRFaFVW
RkJEYjI5cmFXVkJZMk5sY0hSUWIyeHBZM2tBVjB0VFpYUkkKVkZSUVEyOXZhMmxsUVdOalpYQjBV
RzlzYVdONUFGZExTRlJVVUVOdmIydHBaWE1BVjB0SVZGUlFRMjl2YTJsbGMwWnZjbFZTVEFCWApT
MU5sZEVoVVZGQkRiMjlyYVdWelJtOXlWVkpNQUZkTFJHVnNaWFJsU0ZSVVVFTnZiMnRwWlFCWFMw
UmxiR1YwWlVGc2JFaFVWRkJECmIyOXJhV1Z6QUZkTFEyOXdlVU5HVEc5allXeHBlbUYwYVc5dVVI
SmxabVZ5Y21Wa1RtRnRaUUJYUzFObGRFUmxabUYxYkhSTWIyTmgKYkdsNllYUnBiMjRBVjB0SFpY
UlFjbVZtWlhKeVpXUkZlSFJsYm5OcGIyNUdiM0pOU1UxRlZIbHdaUUJYUzBkbGRFVjRkR1Z1YzJs
dgpibk5HYjNKTlNVMUZWSGx3WlFCWFMwZGxkRTFKVFVWVWVYQmxSbTl5UlhoMFpXNXphVzl1QUZk
TFIyVjBUbE5WVWt4U1pYTndiMjV6ClpVeGhjM1JOYjJScFptbGxaRVJoZEdVQVRsTkVZWFJsQUZk
TFIyVjBUbE5WVWt4U1pYTndiMjV6WlVaeVpYTm9ibVZ6YzB4cFptVjAKYVcxbEFFNVRWR2x0WlVs
dWRHVnlkbUZzQUZkTFEyOXdlVTVUVlZKTVVtVnpjRzl1YzJWVGRHRjBkWE5NYVc1bEFGZExRMjl3
ZVU1VApWVkpNVW1WemNHOXVjMlZEWlhKMGFXWnBZMkYwWlVOb1lXbHVBRmRMUjJWMFYyVmlSR1Zt
WVhWc2RFTkdVM1J5YVc1blJXNWpiMlJwCmJtY0FWVWx1ZERNeUFFTkdVM1J5YVc1blJXNWpiMlJw
Ym1jQVYwdFRaWFJOWlhSaFpHRjBZVlZTVEFCWFMxTmxkRTVUVlZKTVEyOXUKYm1WamRHbHZia1Js
Wm1WeWMwTmhiR3hpWVdOcmN3QlhTMU5vYjNkTFpYbEJibVJOWVdsdUFGZExSR2x6WVdKc1pVTkhS
R1ZtWlhKeQpaV1JWY0dSaGRHVnpBRmRMVGxOVlVreFFjbTkwYjJOdmJFTnNZWE56Um05eVVtVnhk
V1Z6ZEFCWFMxTmxkRTVUVlZKTVVtVnhkV1Z6CmRGTm9iM1ZzWkVOdmJuUmxiblJUYm1sbVpnQlhT
MEZrZG1GdVkyVkVaV1poZFd4MFFuVjBkRzl1VUhWc2MyVkJibWx0WVhScGIyNEEKVjB0TmIzVnpa
VTF2ZG1Wa1RtOTBhV1pwWTJGMGFXOXVBRmRMVjJsdVpHOTNWMmxzYkU5eVpHVnlUMjVUWTNKbFpX
NU9iM1JwWm1sagpZWFJwYjI0QVYwdFhhVzVrYjNkWGFXeHNUM0prWlhKUFptWlRZM0psWlc1T2Iz
UnBabWxqWVhScGIyNEFWMHRUWlhST1UxZHBibVJ2CmQxTm9iM1ZzWkZCdmMzUkZkbVZ1ZEU1dmRH
bG1hV05oZEdsdmJuTUFWMHRIWlhSQldGUmxlSFJOWVhKclpYSlVlWEJsU1VRQVEwWlUKZVhCbFNV
UUFWMHRIWlhSQldGUmxlSFJOWVhKclpYSlNZVzVuWlZSNWNHVkpSQUJYUzBOeVpXRjBaVUZZVkdW
NGRFMWhjbXRsY2dCRApSbFI1Y0dWU1pXWUFWMHRIWlhSQ2VYUmxjMFp5YjIxQldGUmxlSFJOWVhK
clpYSUFWMHREY21WaGRHVkJXRlJsZUhSTllYSnJaWEpTCllXNW5aUUJYUzBOdmNIbEJXRlJsZUhS
TllYSnJaWEpTWVc1blpWTjBZWEowQUZkTFEyOXdlVUZZVkdWNGRFMWhjbXRsY2xKaGJtZGwKUlc1
a0FGZExRV05qWlhOemFXSnBiR2wwZVVoaGJtUnNaVVp2WTNWelEyaGhibWRsWkFCWFMwTnlaV0Yw
WlVGWVZVbEZiR1Z0Wlc1MApVbVZtQUY5ZlFWaFZTVVZzWlcxbGJuUUFRVmhWU1VWc1pXMWxiblJT
WldZQVYwdFZibkpsWjJsemRHVnlWVzVwY1hWbFNXUkdiM0pGCmJHVnRaVzUwQUZkTFUzQmxaV05v
VTNsdWRHaGxjMmx6UjJWMFJHVm1ZWFZzZEZadmFXTmxTV1JsYm5ScFptbGxja1p2Y2t4dlkyRnMK
WlFCWFMxTndaV1ZqYUZONWJuUm9aWE5wYzBkbGRGWnZhV05sU1dSbGJuUnBabWxsY25NQVYwdEJX
RkpsWjJsemRHVnlVbVZ0YjNSbApRWEJ3QUZkTFFWaFNaVzF2ZEdWVWIydGxia1p2Y2tWc1pXMWxi
blFBVjB0QldGSmxiVzkwWlVWc1pXMWxiblJHYjNKVWIydGxiZ0JYClMwRllVbVZ0YjNSbFVISnZZ
MlZ6YzBsa1pXNTBhV1pwWlhJQVgxOXBiblF6TWw5MEFGOWZaR0Z5ZDJsdVgzQnBaRjkwQUhCcFpG
OTAKQUZkTFFWaFRaWFJYYVc1a2IzZEdiM0pTWlcxdmRHVkZiR1Z0Wlc1MEFGZExRVmhTWldkcGMz
UmxjbEpsYlc5MFpWQnliMk5sYzNNQQpWMHRCV0VsdWFYUnBZV3hwZW1WRmJHVnRaVzUwVjJsMGFG
QnlaWE5sYm5SbGNsQnBaQUJYUzFObGRGVndSbTl1ZEVOaFkyaGxBRmRMClUybG5ibUZzUTBaU1pX
RmtVM1J5WldGdFJXNWtBRmRMVTJsbmJtRnNRMFpTWldGa1UzUnlaV0Z0U0dGelFubDBaWE1BVjB0
VGFXZHUKWVd4RFJsSmxZV1JUZEhKbFlXMUZjbkp2Y2dCWFMwTnlaV0YwWlVOMWMzUnZiVU5HVW1W
aFpGTjBjbVZoYlFCZlgwTkdVbVZoWkZOMApjbVZoYlFCRFJsSmxZV1JUZEhKbFlXMVNaV1lBVjB0
RWNtRjNSbTlqZFhOU2FXNW5BRmRMVTJWMFJISmhaMGx0WVdkbEFGZExSSEpoCmQwSmxlbVZzWldS
VVpYaDBSbWxsYkdSRFpXeHNBRmRMUkhKaGQxUmxlSFJHYVdWc1pFTmxiR3hHYjJOMWMxSnBibWNB
VjB0RWNtRjMKUW1WNlpXeGxaRlJsZUhSQmNtVmhBRmRMVUc5d2RYQk5aVzUxQUZkTFVHOXdkWEJE
YjI1MFpYaDBUV1Z1ZFFCWFMwUnlZWGREWVhCegpURzlqYTBsdVpHbGpZWFJ2Y2dCWFMxTmxibVJW
YzJWeVEyaGhibWRsVG05MGFXWnBZMkYwYVc5dWN3QlhTMGRsZEVkc2VYQm9WSEpoCmJuTm1iM0p0
WldSQlpIWmhibU5sY3dCWFMwZGxkRVp2Ym5SSmJreGhibWQxWVdkbFJtOXlVbUZ1WjJVQVgzSmxk
R0ZwYmtOdmRXNTAKQUY5bVJteGhaM01BWDJselUyTnlaV1Z1Um05dWRBQmZjM2x6ZEdWdFJtOXVk
RlI1Y0dVQVgzSmxjMlZ5ZG1Wa01RQmZiV0YwY21sNApTWE5KWkdWdWRHbDBlUUJmY21WdVpHVnlh
VzVuVFc5a1pRQmZhVzVKYm5OMFlXNWpaVU5oWTJobEFGOWZaa1pzWVdkekFFNVRSbTl1CmRBQlhT
MGRsZEVadmJuUkpia3hoYm1kMVlXZGxSbTl5UTJoaGNtRmpkR1Z5QUZkTFUyVjBRMGRHYjI1MFVt
VnVaR1Z5YVc1blRXOWsKWlFCWFMwTkhVR0YwZEdWeWJrTnlaV0YwWlZkcGRHaEpiV0ZuWlVGdVpG
UnlZVzV6Wm05eWJRQkRSMUJoZEhSbGNtNEFRMGRRWVhSMApaWEp1VW1WbUFGZExRMGREYjI1MFpY
aDBVbVZ6WlhSRGJHbHdBRmRMUTBkRGIyNTBaWGgwUkhKaGQzTlhhWFJvUTI5eWNtVmpkRk5vCllX
UnZkMDltWm5ObGRITUFWMHRKVDFOMWNtWmhZMlZEYjI1MFpYaDBRM0psWVhSbEFFTkhRMjl1ZEdW
NGRBQkRSME52Ym5SbGVIUlMKWldZQVYwdEpUMU4xY21aaFkyVkRiMjUwWlhoMFEzSmxZWFJsU1cx
aFoyVUFRMGRKYldGblpRQkRSMGx0WVdkbFVtVm1BRmRMUTBkRApiMjUwWlhoMFIyVjBVMmh2ZFd4
a1UyMXZiM1JvUm05dWRITUFWMHRUWlhSQ1lYTmxRMVJOQUZkTFUyVjBVR0YwZEdWeWJsQm9ZWE5s
ClNXNVZjMlZ5VTNCaFkyVUFWMHRIWlhSVmMyVnlWRzlDWVhObFExUk5BR0VBWWdCakFHUUFkSGdB
ZEhrQVEwZEJabVpwYm1WVWNtRnUKYzJadmNtMEFWMHRIWlhSSGJIbHdhSE5HYjNKRGFHRnlZV04w
WlhKekFFTlVSbTl1ZEVkbGRGWmxjblJwWTJGc1IyeDVjR2h6Um05eQpRMmhoY21GamRHVnljd0JY
UzBkbGRGWmxjblJwWTJGc1IyeDVjR2h6Um05eVEyaGhjbUZqZEdWeWN3QlhTME55WldGMFpVTlVU
R2x1ClpWZHBkR2hWYm1sRGFHRnlVSEp2ZG1sa1pYSUFYMTlEVkV4cGJtVUFRMVJNYVc1bFVtVm1B
RmRMUTFSR2IyNTBWSEpoYm5ObWIzSnQKUjJ4NWNHaHpBRmRMUTNKbFlYUmxRMVJVZVhCbGMyVjBk
R1Z5VjJsMGFGVnVhVU5vWVhKUWNtOTJhV1JsY2tGdVpFOXdkR2x2Ym5NQQpYMTlEVkZSNWNHVnpa
WFIwWlhJQVExUlVlWEJsYzJWMGRHVnlVbVZtQUZkTFExUlNkVzVIWlhSSmJtbDBhV0ZzUVdSMllX
NWpaUUF0ClcwNVRWMmx1Wkc5M1IzSmhjR2hwWTNORGIyNTBaWGgwS0ZkbFlrdHBkRk41YzNSbGJV
bHVkR1Z5Wm1GalpTa2dYMWRsWWt0cGRGTjUKYzNSbGJVbHVkR1Z5Wm1GalpWOXpaWFJIY21Gd2FH
bGpjMUJ2Y25RNlhRQlhTMDVUVjJsdVpHOTNUM1psY25KcFpHVkRSME52Ym5SbAplSFFBVjB0T1Ux
ZHBibVJ2ZDFKbGMzUnZjbVZEUjBOdmJuUmxlSFFBVjB0T1UxZHBibVJ2ZDAxaGEyVkNiM1IwYjIx
RGIzSnVaWEp6ClUzRjFZWEpsQUZkTFEwZERiMjUwWlhoMFNYTkNhWFJ0WVhCRGIyNTBaWGgwQUZk
TFIyVjBWMmhsWld4RmRtVnVkRVJsYkhSaGN3QlgKUzBGd2NGWmxjbk5wYjI1RGFHVmphMHhsYzNO
VWFHRnVBRmRMVVZSSmJtTnNkV1JsVDI1c2VVMXZaR1Z5YmsxbFpHbGhSbWxzWlZSNQpjR1Z6QUZk
TFVWUk5iM1pwWlVSaGRHRlNZWFJsQUZkTFVWUk5iM1pwWlUxaGVGUnBiV1ZNYjJGa1pXUUFWMHRS
VkUxdmRtbGxUV0Y0ClZHbHRaVk5sWld0aFlteGxBRmRMVVZSTmIzWnBaVlpwWlhkVFpYUkVjbUYz
VTNsdVkyaHliMjV2ZFhOc2VRQlhTMUZVVFc5MmFXVkgKWlhSVWVYQmxBRmRMVVZSTmIzWnBaVVJw
YzJGaWJHVkRiMjF3YjI1bGJuUUFWMHRSVkUxdmRtbGxVbVZ6YjJ4MlpXUlZVa3dBVjB0RApiM0I1
Um05MWJtUmhkR2x2YmtOaFkyaGxSR2x5WldOMGIzSjVBRmRMVTJWMFZtbHphV0pzWlVGd2NHeHBZ
MkYwYVc5dVRtRnRaUUJYClMxTmxkRUZ3Y0d4cFkyRjBhVzl1U1c1bWIzSnRZWFJwYjI1SmRHVnRB
RmRMUTI5d2VVSjFibVJzWlZWU1RFWnZja1Y0WldOMWRHRmkKYkdWVlVrd0FWMHRVYUdWdFpVUnlZ
WGRVY21GamF3QlRTVzUwTXpJQVQxTlRkR0YwZFhNQVYwdEpibWwwYVdGc2FYcGxVbVZ1WkdWeQpV
MlZ5ZG1WeUFGOWZaR0Z5ZDJsdVgyNWhkSFZ5WVd4ZmRBQmZYMlJoY25kcGJsOXRZV05vWDNCdmNu
UmZibUZ0WlY5MEFGOWZaR0Z5CmQybHVYMjFoWTJoZmNHOXlkRjkwQUcxaFkyaGZjRzl5ZEY5MEFG
ZExUV0ZyWlZKbGJtUmxja3hoZVdWeUFGZExVMjltZEhkaGNtVkQKUVZKbGJtUmxjbVZ5UTNKbFlY
UmxBR052Ym5SbGVIUkpaQUJ6WlhSRGIyNTBaWGgwU1dRNkFHUnBjM0JzWVhsT2RXMWlaWElBWkds
egpjR3hoZVUxaGMyc0FRMGREYjJ4dmNsTndZV05sQUVOSFEyOXNiM0pUY0dGalpWSmxaZ0J2Y0hS
cGIyNXpBSE5sZEU5d2RHbHZibk02CkFIWmhiR2xrQUhObGRGWmhiR2xrT2dCRFFVTnZiblJsZUhR
QWNtVnVaR1Z5UTI5dWRHVjRkQUJmUTBGU1pXNWtaWEpEUjBOdmJuUmwKZUhRQVEwRlNaVzVrWlhK
RFIwTnZiblJsZUhRQVgxOVhTMU52Wm5SM1lYSmxRMEZTWlc1a1pYSmxjbEpsWmdCWFMxTnZablIz
WVhKbApRMEZTWlc1a1pYSmxjbEpsWmdCWFMxTnZablIzWVhKbFEwRlNaVzVrWlhKbGNrUmxjM1J5
YjNrQVYwdFRiMlowZDJGeVpVTkJVbVZ1ClpHVnlaWEpTWlc1a1pYSUFWMHREUVVOdmJuUmxlSFJO
WVd0bFVtVnRiM1JsVjJsMGFGTmxjblpsY2xCdmNuUUFYMTlYUzBOQlEyOXUKZEdWNGRGSmxaZ0JY
UzBOQlEyOXVkR1Y0ZEZKbFpnQlhTME5CUTI5dWRHVjRkRTFoYTJWU1pXMXZkR1ZHYjNKWGFXNWti
M2RUWlhKMgpaWElBVjB0RFFVTnZiblJsZUhSSmJuWmhiR2xrWVhSbEFGZExRMEZEYjI1MFpYaDBS
MlYwUTI5dWRHVjRkRWxrQUZkTFEwRkRiMjUwClpYaDBVMlYwVEdGNVpYSUFWMHREUVVOdmJuUmxl
SFJIWlhSTVlYbGxjZ0JYUzBOQlEyOXVkR1Y0ZEZObGRFTnZiRzl5VTNCaFkyVUEKVjB0RFFVTnZi
blJsZUhSSFpYUkRiMnh2Y2xOd1lXTmxBRmRMUkdWemRISnZlVkpsYm1SbGNtbHVaMUpsYzI5MWNt
Tmxjd0JYUzBOQgpUR0Y1WlhKRmJuVnRaWEpoZEdWU1pXTjBjMEpsYVc1blJISmhkMjVYYVhSb1Ft
eHZZMnNBVjB0RFFWSmxibVJsY21WeVFXUmtRMmhoCmJtZGxUbTkwYVdacFkyRjBhVzl1VDJKelpY
SjJaWElBVjB0RFFWSmxibVJsY21WeVVtVnRiM1psUTJoaGJtZGxUbTkwYVdacFkyRjAKYVc5dVQy
SnpaWEoyWlhJQVYwdFhhVzVrYjNkQ2IzVnVZMlZCYm1sdFlYUnBiMjVEYjI1MFpYaDBRM0psWVhS
bEFIQnlaVUp2ZFc1agpaVlJ5WVc1elptOXliUUJmWDFkTFYybHVaRzkzUW05MWJtTmxRVzVwYldG
MGFXOXVRMjl1ZEdWNGRBQlhTMWRwYm1SdmQwSnZkVzVqClpVRnVhVzFoZEdsdmJrTnZiblJsZUhS
U1pXWUFWMHRYYVc1a2IzZENiM1Z1WTJWQmJtbHRZWFJwYjI1RGIyNTBaWGgwUkdWemRISnYKZVFC
WFMxZHBibVJ2ZDBKdmRXNWpaVUZ1YVcxaGRHbHZibE5sZEVGdWFXMWhkR2x2YmxCeWIyZHlaWE56
QUZkTFYybHVaRzkzVTJWMApRMnhwY0ZKbFkzUUFWMHREY21WaGRHVk5TVWRUWlhKMlpYSlRiM1Z5
WTJVQVYwdEhaWFJKYm5CMWRGQmhibVZzVjJsdVpHOTNVM1I1CmJHVUFWMHRIWlhST1UwVjJaVzUw
UzJWNVEyaGhjZ0JWU1c1ME9BQlhTMU5sZEVOQlFXNXBiV0YwYVc5dVZtRnNkV1ZHZFc1amRHbHYK
YmdCWFMwbHVhWFJwWVd4cGVtVk5ZWGhwYlhWdFNGUlVVRU52Ym01bFkzUnBiMjVEYjNWdWRGQmxj
a2h2YzNRQVYwdEhaWFJJVkZSUQpVR2x3Wld4cGJtbHVaMUJ5YVc5eWFYUjVBRmRMVTJWMFNGUlVV
RkJwY0dWc2FXNXBibWRRY21sdmNtbDBlUUJYUzFObGRFaFVWRkJRCmFYQmxiR2x1YVc1blRXRjRh
VzExYlZCeWFXOXlhWFI1QUZkTFUyVjBTRlJVVUZCcGNHVnNhVzVwYm1kTmFXNXBiWFZ0Um1GemRF
eGgKYm1WUWNtbHZjbWwwZVFCWFMxTmxkRU5QVGs1RlExUlFjbTk0ZVVadmNsTjBjbVZoYlFCWFMx
TmxkRU5QVGs1RlExUlFjbTk0ZVVGMQpkR2h2Y21sNllYUnBiMjVHYjNKVGRISmxZVzBBVjB0RGIz
QjVRMDlPVGtWRFZGQnliM2g1VW1WemNHOXVjMlVBVjB0WGFXNWtiM2RUClpYUkJiSEJvWVFCWFMx
ZHBibVJ2ZDFObGRGTmpZV3hsWkVaeVlXMWxBRmRMVTNsdVkxTjFjbVpoWTJWVWIxWnBaWGNBVjB0
RmJtRmkKYkdWVFpYUjBhVzVuUTNWeWMyOXlWMmhsYmtsdVFtRmphMmR5YjNWdVpBQlhTMDVUVlZK
TVVtVnhkV1Z6ZEVOeVpXRjBaVk5sY21saApiR2w2WVdKc1pWSmxjSEpsYzJWdWRHRjBhVzl1QUY5
ZlEwWkVhV04wYVc5dVlYSjVBRU5HUkdsamRHbHZibUZ5ZVZKbFpnQlhTMDVUClZWSk1VbVZ4ZFdW
emRFWnliMjFUWlhKcFlXeHBlbUZpYkdWU1pYQnlaWE5sYm5SaGRHbHZiZ0JYUzA1VFZWSk1VbVZ6
Y0c5dWMyVkQKY21WaGRHVlRaWEpwWVd4cGVtRmliR1ZTWlhCeVpYTmxiblJoZEdsdmJnQlhTMDVU
VlZKTVVtVnpjRzl1YzJWR2NtOXRVMlZ5YVdGcwphWHBoWW14bFVtVndjbVZ6Wlc1MFlYUnBiMjRB
VGxOVlVreFNaWE53YjI1elpVbHVkR1Z5Ym1Gc0FFNVRWVkpNVW1WemNHOXVjMlVBClYwdERSbFZT
VEVOaFkyaGxSR1ZzWlhSbFNHOXpkRTVoYldWelNXNVFaWEp6YVhOMFpXNTBVM1J2Y21VQVYwdERS
bFZTVEVOaFkyaGwKUTI5d2VVRnNiRWh2YzNST1lXMWxjMGx1VUdWeWMybHpkR1Z1ZEZOMGIzSmxB
RmRMUjJWMFEwWlZVa3hTWlhOd2IyNXpaVTFKVFVWVQplWEJsQUZkTFIyVjBRMFpWVWt4U1pYTndi
MjV6WlZWU1RBQlhTMGRsZEVOR1ZWSk1VbVZ6Y0c5dWMyVklWRlJRVW1WemNHOXVjMlVBClYwdERi
M0I1UTBaVlVreFNaWE53YjI1elpWTjFaMmRsYzNSbFpFWnBiR1Z1WVcxbEFGZExVMlYwUTBaVlVr
eFNaWE53YjI1elpVMUoKVFVWVWVYQmxBRmRMVTJWMFVtVnhkV1Z6ZEZOMGIzSmhaMlZUWlhOemFX
OXVBRmRMUjJWMFJHVm1ZWFZzZEVoVVZGQkRiMjlyYVdWVApkRzl5WVdkbEFGZExRMjl3ZVVOeVpX
UmxiblJwWVd4R2NtOXRRMFpRWlhKemFYTjBaVzUwVTNSdmNtRm5aUUJmUTBaVlVreERjbVZrClpX
NTBhV0ZzQUZkTFEwWlZVa3hEY21Wa1pXNTBhV0ZzVW1WbUFGZExVMlYwUTBaVlVreFNaWEYxWlhO
MFUyaHZkV3hrUTI5dWRHVnUKZEZOdWFXWm1BRmRMUTBaVlVreFNaWEYxWlhOMFEyOXdlVWhVVkZC
U1pYRjFaWE4wUW05a2VWQmhjblJ6QUZkTFEwWlZVa3hTWlhGMQpaWE4wVTJWMFNGUlVVRkpsY1hW
bGMzUkNiMlI1VUdGeWRITUFWMHREU1VkbGRGSkhRa0U0Um05eWJXRjBBRU5KUm05eWJXRjBBRmRM
ClUyRnVaR0p2ZUVWNGRHVnVjMmx2YmtOeVpXRjBaUUIwYjJ0bGJnQmphR0Z5QUdoaGJtUnNaUUJz
YjI1bklHeHZibWNnYVc1MEFHbHUKZERZMFgzUUFYMTlYUzFOaGJtUmliM2hGZUhSbGJuTnBiMjRB
VjB0VFlXNWtZbTk0UlhoMFpXNXphVzl1VW1WbUFGZExVMkZ1WkdKdgplRVY0ZEdWdWMybHZia1Js
YzNSeWIza0FWMHRUWVc1a1ltOTRSWGgwWlc1emFXOXVRMjl1YzNWdFpRQlhTMU5oYm1SaWIzaEZl
SFJsCmJuTnBiMjVKYm5aaGJHbGtZWFJsQUZkTFUyRnVaR0p2ZUVWNGRHVnVjMmx2YmtkbGRGTmxj
bWxoYkdsNlpXUkdiM0p0WVhRQVYwdFQKWVc1a1ltOTRSWGgwWlc1emFXOXVRM0psWVhSbFJuSnZi
Vk5sY21saGJHbDZaV1JHYjNKdFlYUUFWMHRGYm1GaWJHVlRZVzVrWW05NApVM1I1YkdWR2FXeGxV
WFZoY21GdWRHbHVaUUJYUzFKbFkyOXRiV1Z1WkdWa1UyTnliMnhzWlhKVGRIbHNaUUJYUzBWNFpX
TjFkR0ZpCmJHVlhZWE5NYVc1clpXUlBiazl5UW1WbWIzSmxVMjV2ZDB4bGIzQmhjbVFBVjB0RmVI
UnlZV04wVjI5eVpFUmxabWx1YVhScGIyNVUKYjJ0bGJsSmhibWRsUm5KdmJVTnZiblJsZUhSMVlX
eFRkSEpwYm1jQWJHOWpZWFJwYjI0QWJHVnVaM1JvQUY5T1UxSmhibWRsQUU1VApVbUZ1WjJVQVYw
dFRhRzkzVjI5eVpFUmxabWx1YVhScGIyNVhhVzVrYjNjQVYwdElhV1JsVjI5eVpFUmxabWx1YVhS
cGIyNVhhVzVrCmIzY0FWMHREYjNCNVJHVm1ZWFZzZEZObFlYSmphRkJ5YjNacFpHVnlSR2x6Y0d4
aGVVNWhiV1VBVjB0QlZrRnpjMlYwVW1WemIyeDIKWldSVlVrd0FWMHREZFhKemIzSUFWMHREY21W
aGRHVldUVkJ5WlhOemRYSmxSR2x6Y0dGMFkyaFBiazFoYVc1UmRXVjFaUUJrYVhOdwpZWFJqYUY5
emIzVnlZMlZmY3dCa2FYTndZWFJqYUY5emIzVnlZMlZmZEFCWFMwTnlaV0YwWlUxbGJXOXllVk4w
WVhSMWMxQnlaWE56CmRYSmxRM0pwZEdsallXeEVhWE53WVhSamFFOXVUV0ZwYmxGMVpYVmxBRmRM
UlhobFkzVjBZV0pzWlZkaGMweHBibXRsWkU5dVQzSkMKWldadmNtVk1hVzl1QUZkTFJYaGxZM1Yw
WVdKc1pWZGhjMHhwYm10bFpFOXVUM0pDWldadmNtVk5iM1Z1ZEdGcGJreHBiMjRBVjB0RApSMUJo
ZEdoQlpHUlNiM1Z1WkdWa1VtVmpkQUJYUzBOR1ZWSk1VbVZ4ZFdWemRFRnNiRzkzUVd4c1VHOXpk
RU5oWTJocGJtY0FWMHRHCmFXeDBaWEpKYzBKMVptWmxjbWx1WndCWFMwWnBiSFJsY2xkaGMwSnNi
Mk5yWldRQVYwdEdhV3gwWlhKQlpHUkVZWFJoQUZkTFJtbHMKZEdWeVJHRjBZVU52YlhCc1pYUmxB
RmRMUm1sc2RHVnlTWE5OWVc1aFoyVmtVMlZ6YzJsdmJnQlhTMFpwYkhSbGNrTnlaV0YwWlVsdQpj
M1JoYm1ObEFGOW1hV3gwWlhKVGRHRjBaUUJmZFhKc0FGOWlkV1ptWlhJQVRsTk5kWFJoWW14bFJH
RjBZUUJYWldKR2FXeDBaWEpGCmRtRnNkV0YwYjNJQVYwdE9VMFZzWVhOMGFXTkVaV3gwWVVadmNs
UnBiV1ZFWld4MFlRQlhTMDVUUld4aGMzUnBZMFJsYkhSaFJtOXkKVW1WaWIzVnVaRVJsYkhSaEFG
ZExUbE5TWldKdmRXNWtSR1ZzZEdGR2IzSkZiR0Z6ZEdsalJHVnNkR0VBVjB0U1pXZHBjM1JsY2s5
agpZMngxYzJsdmJrNXZkR2xtYVdOaGRHbHZia2hoYm1Sc1pYSUFWMHRWYm5KbFoybHpkR1Z5VDJO
amJIVnphVzl1VG05MGFXWnBZMkYwCmFXOXVTR0Z1Wkd4bGNnQlhTMFZ1WVdKc1pWZHBibVJ2ZDA5
alkyeDFjMmx2Yms1dmRHbG1hV05oZEdsdmJuTUFWMHREUms1bGRIZHYKY210VFpYUlBkbVZ5Y21s
a1pWTjVjM1JsYlZCeWIzaDVVMlYwZEdsdVozTUFYME5HU0c5emRFbHpSRzl0WVdsdVZHOXdUR1Yy
Wld3QQpYME5HVlZKTVEyRmphR1ZFWld4bGRHVkliM04wVG1GdFpYTkpibEJsY25OcGMzUmxiblJU
ZEc5eVpVWnZjbEJoY25ScGRHbHZiZ0JmClEwWlZVa3hEWVdOb1pVTnZjSGxCYkd4SWIzTjBUbUZ0
WlhOSmJsQmxjbk5wYzNSbGJuUlRkRzl5WlVadmNsQmhjblJwZEdsdmJnQmYKUTBaVlVreERZV05v
WlVOdmNIbEJiR3hRWVhKMGFYUnBiMjVPWVcxbGN3QlhTMGx6VUhWaWJHbGpVM1ZtWm1sNEFGZExR
MFpWVWt4RApZV05vWlVSbGJHVjBaVWh2YzNST1lXMWxjMGx1VUdWeWMybHpkR1Z1ZEZOMGIzSmxS
bTl5VUdGeWRHbDBhVzl1QUZkTFEwWlZVa3hECllXTm9aVU52Y0hsQmJHeEliM04wVG1GdFpYTkpi
bEJsY25OcGMzUmxiblJUZEc5eVpVWnZjbEJoY25ScGRHbHZiZ0JYUzBOaFkyaGwKVUdGeWRHbDBh
Vzl1UzJWNUFGZExRMFpWVWt4RFlXTm9aVU52Y0hsQmJHeFFZWEowYVhScGIyNU9ZVzFsY3dCcGJt
bDBYME5HVlZKTQpRMkZqYUdWRGIzQjVRV3hzVUdGeWRHbDBhVzl1VG1GdFpYTUFhVzVwZEY5clEw
WlZVa3hEWVdOb1pWQmhjblJwZEdsdmJrdGxlUUJmCmEwTkdWVkpNUTJGamFHVlFZWEowYVhScGIy
NUxaWGxHZFc1amRHbHZiZ0JwYm1sMFgwTkdWVkpNUTJGamFHVkRiM0I1UVd4c1NHOXoKZEU1aGJX
VnpTVzVRWlhKemFYTjBaVzUwVTNSdmNtVkdiM0pRWVhKMGFYUnBiMjRBYVc1cGRGOURSbFZTVEVO
aFkyaGxSR1ZzWlhSbApTRzl6ZEU1aGJXVnpTVzVRWlhKemFYTjBaVzUwVTNSdmNtVkdiM0pRWVhK
MGFYUnBiMjRBYVc1cGRGOURSa2h2YzNSSmMwUnZiV0ZwCmJsUnZjRXhsZG1Wc0FHTm5jMDV2ZEds
bWFXTmhkR2x2YmxSNWNHVkdiM0pYUzA5alkyeDFjMmx2Yms1dmRHbG1hV05oZEdsdmJsUjUKY0dV
QVEwZFRUbTkwYVdacFkyRjBhVzl1Vkhsd1pRQnBibWwwVjJWaVJtbHNkR1Z5UlhaaGJIVmhkRzl5
QUZkbFlrWnBiSFJsY2tWMgpZV3gxWVhSdmNrWjFibU4wYVc5dUFHTnZjbVZEZFhKemIzSkRiR0Z6
Y3dCamNtVmhkR1ZEYjNKbFEzVnljMjl5UTJ4aGMzTUFWMHRECmIzSmxRM1Z5YzI5eVgyTnZjbVZE
ZFhKemIzSlVlWEJsQUdacGJtUk1WVXh2YjJ0MWNFUmxabWx1YVhScGIyNU5iMlIxYkdWRGJHRnoK
Y3dCamNtVmhkR1ZCY21Ob2FYWmxUR2x6ZEFCa2FXTjBhVzl1WVhKNVZtRnNkV1ZQWmxSNWNHVUFZ
M0psWVhSbFUyVnlhV0ZzYVhwaApZbXhsVW1Wd2NtVnpaVzUwWVhScGIyNEFRMFpOZFhSaFlteGxS
R2xqZEdsdmJtRnllVkpsWmdCT1UwMWhlRmtBVGxOTllYaFlBR1pzCmFYQlNaV04wQUdsdWFYUmZR
MFpJVkZSUVRXVnpjMkZuWlZObGRGSmxjM0J2Ym5ObFVISnZlSGxWVWt3QVRsTlNaV04wVkc5RFIx
SmwKWTNRQVRsTk5ZV3RsVUc5cGJuUUFZMjl5WlVkeVlYQm9hV056VTJOeVpXVnVVRzlwYm5SR2Iz
SkJjSEJMYVhSVFkzSmxaVzVRYjJsdQpkQUJEUjFCdmFXNTBUV0ZyWlFCT1UwMXBibGtBVGxOTmFX
NVlBRTVUVFdGclpWSmxZM1FBVGxOSVpXbG5hSFFBVGxOWGFXUjBhQUJ5ClpXNWtaWEpEYjI1MFpY
aDBSR2xrUTJoaGJtZGxBR05tVlZKTVEyRmphR1VBYldGNFZtRnNkV1ZHYjNKVWFXMWxVbUZ1WjJW
ekFHZGwKZEZCeVpXTnBjMlZUWTNKdmJHeHBibWRFWld4MFlYTUFhVzVwZEVOVVJtOXVkRWRsZEZa
bGNuUnBZMkZzUjJ4NWNHaHpSbTl5UTJoaApjbUZqZEdWeWN3QkRSMU5wZW1WTllXdGxBRjlmUTBk
UWIybHVkRUZ3Y0d4NVFXWm1hVzVsVkhKaGJuTm1iM0p0QUdselNXNTBaV2R5CllXd0FUbE5OWVd0
bFVtRnVaMlVBUTI5dWMyOXNaVU52Ym01bFkzUnBiMjVEYUdGdVoyVk9iM1JwWm5sUWNtOWpBRjlm
UTBkQlptWnAKYm1WVWNtRnVjMlp2Y20xTllXdGxBRVpzYVhCSmJXRm5aVk53WldNQVRsTlNaV04w
Um5KdmJVTkhVbVZqZEFCRFIxSmxZM1JOWVd0bApBRmRMUVhCd1MybDBSSEpoZDBSbFkyOTVWMmx1
Wkc5M1gybHpTMlY1VjJsdVpHOTNBRjlmUTBaVGRISnBibWRIWlhSVmMyVnlSR1ZtCllYVnNkRVZ1
WTI5a2FXNW5BRTVUUTJGelpVbHVjMlZ1YzJsMGFYWmxVMlZoY21Ob0FFNVRUR2wwWlhKaGJGTmxZ
WEpqYUFCT1UwSmgKWTJ0M1lYSmtjMU5sWVhKamFBQk9VMEZ1WTJodmNtVmtVMlZoY21Ob0FFNVRU
blZ0WlhKcFkxTmxZWEpqYUFCT1UwUnBZV055YVhScApZMGx1YzJWdWMybDBhWFpsVTJWaGNtTm9B
RTVUVjJsa2RHaEpibk5sYm5OcGRHbDJaVk5sWVhKamFBQk9VMFp2Y21ObFpFOXlaR1Z5CmFXNW5V
MlZoY21Ob0FFNVRVbVZuZFd4aGNrVjRjSEpsYzNOcGIyNVRaV0Z5WTJnQVRsTlRkSEpwYm1kRGIy
MXdZWEpsVDNCMGFXOXUKY3dCT1UwOXlaR1Z5WldSQmMyTmxibVJwYm1jQVRsTlBjbVJsY21Wa1Uy
RnRaUUJPVTA5eVpHVnlaV1JFWlhOalpXNWthVzVuQUU1VApRMjl0Y0dGeWFYTnZibEpsYzNWc2RB
QmxjbkpUWldOVGRXTmpaWE56QUdWeWNsTmxZMVZ1YVcxd2JHVnRaVzUwWldRQVpYSnlVMlZqClJI
TnJSblZzYkFCbGNuSlRaV05KVHdCbGNuSlRaV05RWVhKaGJRQmxjbkpUWldOWGNsQmxjbTBBWlhK
eVUyVmpRV3hzYjJOaGRHVUEKWlhKeVUyVmpWWE5sY2tOaGJtTmxiR1ZrQUdWeWNsTmxZMEpoWkZK
bGNRQmxjbkpUWldOSmJuUmxjbTVoYkVOdmJYQnZibVZ1ZEFCbApjbkpUWldORGIzSmxSbTkxYm1S
aGRHbHZibFZ1YTI1dmQyNEFaWEp5VTJWalRtOTBRWFpoYVd4aFlteGxBR1Z5Y2xObFkxSmxZV1JQ
CmJteDVBR1Z5Y2xObFkwRjFkR2hHWVdsc1pXUUFaWEp5VTJWalRtOVRkV05vUzJWNVkyaGhhVzRB
WlhKeVUyVmpTVzUyWVd4cFpFdGwKZVdOb1lXbHVBR1Z5Y2xObFkwUjFjR3hwWTJGMFpVdGxlV05v
WVdsdUFHVnljbE5sWTBSMWNHeHBZMkYwWlVOaGJHeGlZV05yQUdWeQpjbE5sWTBsdWRtRnNhV1JE
WVd4c1ltRmphd0JsY25KVFpXTkVkWEJzYVdOaGRHVkpkR1Z0QUdWeWNsTmxZMGwwWlcxT2IzUkdi
M1Z1ClpBQmxjbkpUWldOQ2RXWm1aWEpVYjI5VGJXRnNiQUJsY25KVFpXTkVZWFJoVkc5dlRHRnla
MlVBWlhKeVUyVmpUbTlUZFdOb1FYUjAKY2dCbGNuSlRaV05KYm5aaGJHbGtTWFJsYlZKbFpnQmxj
bkpUWldOSmJuWmhiR2xrVTJWaGNtTm9VbVZtQUdWeWNsTmxZMDV2VTNWagphRU5zWVhOekFHVnlj
bE5sWTA1dlJHVm1ZWFZzZEV0bGVXTm9ZV2x1QUdWeWNsTmxZMGx1ZEdWeVlXTjBhVzl1VG05MFFX
eHNiM2RsClpBQmxjbkpUWldOU1pXRmtUMjVzZVVGMGRISUFaWEp5VTJWalYzSnZibWRUWldOV1pY
SnphVzl1QUdWeWNsTmxZMHRsZVZOcGVtVk8KYjNSQmJHeHZkMlZrQUdWeWNsTmxZMDV2VTNSdmNt
Rm5aVTF2WkhWc1pRQmxjbkpUWldOT2IwTmxjblJwWm1sallYUmxUVzlrZFd4bApBR1Z5Y2xObFkw
NXZVRzlzYVdONVRXOWtkV3hsQUdWeWNsTmxZMGx1ZEdWeVlXTjBhVzl1VW1WeGRXbHlaV1FBWlhK
eVUyVmpSR0YwCllVNXZkRUYyWVdsc1lXSnNaUUJsY25KVFpXTkVZWFJoVG05MFRXOWthV1pwWVdK
c1pRQmxjbkpUWldORGNtVmhkR1ZEYUdGcGJrWmgKYVd4bFpBQmxjbkpUWldOSmJuWmhiR2xrVUhK
bFpuTkViMjFoYVc0QVpYSnlVMlZqU1c1RVlYSnJWMkZyWlFCbGNuSlRaV05CUTB4TwpiM1JUYVcx
d2JHVUFaWEp5VTJWalVHOXNhV041VG05MFJtOTFibVFBWlhKeVUyVmpTVzUyWVd4cFpGUnlkWE4w
VTJWMGRHbHVad0JsCmNuSlRaV05PYjBGalkyVnpjMFp2Y2tsMFpXMEFaWEp5VTJWalNXNTJZV3hw
WkU5M2JtVnlSV1JwZEFCbGNuSlRaV05VY25WemRFNXYKZEVGMllXbHNZV0pzWlFCbGNuSlRaV05W
Ym5OMWNIQnZjblJsWkVadmNtMWhkQUJsY25KVFpXTlZibXR1YjNkdVJtOXliV0YwQUdWeQpjbE5s
WTB0bGVVbHpVMlZ1YzJsMGFYWmxBR1Z5Y2xObFkwMTFiSFJwY0d4bFVISnBka3RsZVhNQVpYSnlV
MlZqVUdGemMzQm9jbUZ6ClpWSmxjWFZwY21Wa0FHVnljbE5sWTBsdWRtRnNhV1JRWVhOemQyOXla
RkpsWmdCbGNuSlRaV05KYm5aaGJHbGtWSEoxYzNSVFpYUjAKYVc1bmN3QmxjbkpUWldOT2IxUnlk
WE4wVTJWMGRHbHVaM01BWlhKeVUyVmpVR3RqY3pFeVZtVnlhV1o1Um1GcGJIVnlaUUJsY25KVApa
V05PYjNSVGFXZHVaWElBWlhKeVUyVmpSR1ZqYjJSbEFHVnljbE5sWTFObGNuWnBZMlZPYjNSQmRt
RnBiR0ZpYkdVQVpYSnlVMlZqClNXNXpkV1ptYVdOcFpXNTBRMnhwWlc1MFNVUUFaWEp5VTJWalJH
VjJhV05sVW1WelpYUUFaWEp5VTJWalJHVjJhV05sUm1GcGJHVmsKQUdWeWNsTmxZMEZ3Y0d4bFFX
UmtRWEJ3UVVOTVUzVmlhbVZqZEFCbGNuSlRaV05CY0hCc1pWQjFZbXhwWTB0bGVVbHVZMjl0Y0d4
bApkR1VBWlhKeVUyVmpRWEJ3YkdWVGFXZHVZWFIxY21WTmFYTnRZWFJqYUFCbGNuSlRaV05CY0hC
c1pVbHVkbUZzYVdSTFpYbFRkR0Z5CmRFUmhkR1VBWlhKeVUyVmpRWEJ3YkdWSmJuWmhiR2xrUzJW
NVJXNWtSR0YwWlFCbGNuSlRaV05EYjI1MlpYSnphVzl1UlhKeWIzSUEKWlhKeVUyVmpRWEJ3YkdW
VFUweDJNbEp2Ykd4aVlXTnJBR1Z5Y2xObFkwUnBjMnRHZFd4c0FHVnljbE5sWTFGMWIzUmhSWGhq
WldWawpaV1FBWlhKeVUyVmpSbWxzWlZSdmIwSnBad0JsY25KVFpXTkpiblpoYkdsa1JHRjBZV0po
YzJWQ2JHOWlBR1Z5Y2xObFkwbHVkbUZzCmFXUkxaWGxDYkc5aUFHVnljbE5sWTBsdVkyOXRjR0Yw
YVdKc1pVUmhkR0ZpWVhObFFteHZZZ0JsY25KVFpXTkpibU52YlhCaGRHbGkKYkdWTFpYbENiRzlp
QUdWeWNsTmxZMGh2YzNST1lXMWxUV2x6YldGMFkyZ0FaWEp5VTJWalZXNXJibTkzYmtOeWFYUnBZ
MkZzUlhoMApaVzV6YVc5dVJteGhad0JsY25KVFpXTk9iMEpoYzJsalEyOXVjM1J5WVdsdWRITUFa
WEp5VTJWalRtOUNZWE5wWTBOdmJuTjBjbUZwCmJuUnpRMEVBWlhKeVUyVmpTVzUyWVd4cFpFRjFk
R2h2Y21sMGVVdGxlVWxFQUdWeWNsTmxZMGx1ZG1Gc2FXUlRkV0pxWldOMFMyVjUKU1VRQVpYSnlV
MlZqU1c1MllXeHBaRXRsZVZWellXZGxSbTl5VUc5c2FXTjVBR1Z5Y2xObFkwbHVkbUZzYVdSRmVI
UmxibVJsWkV0bAplVlZ6WVdkbEFHVnljbE5sWTBsdWRtRnNhV1JKUkV4cGJtdGhaMlVBWlhKeVUy
VmpVR0YwYUV4bGJtZDBhRU52Ym5OMGNtRnBiblJGCmVHTmxaV1JsWkFCbGNuSlRaV05KYm5aaGJH
bGtVbTl2ZEFCbGNuSlRaV05EVWt4RmVIQnBjbVZrQUdWeWNsTmxZME5TVEU1dmRGWmgKYkdsa1dX
VjBBR1Z5Y2xObFkwTlNURTV2ZEVadmRXNWtBR1Z5Y2xObFkwTlNURk5sY25abGNrUnZkMjRBWlhK
eVUyVmpRMUpNUW1GawpWVkpKQUdWeWNsTmxZMVZ1YTI1dmQyNURaWEowUlhoMFpXNXphVzl1QUdW
eWNsTmxZMVZ1YTI1dmQyNURVa3hGZUhSbGJuTnBiMjRBClpYSnlVMlZqUTFKTVRtOTBWSEoxYzNS
bFpBQmxjbkpUWldORFVreFFiMnhwWTNsR1lXbHNaV1FBWlhKeVUyVmpTVVJRUm1GcGJIVnkKWlFC
bGNuSlRaV05UVFVsTlJVVnRZV2xzUVdSa2NtVnpjMlZ6VG05MFJtOTFibVFBWlhKeVUyVmpVMDFK
VFVWQ1lXUkZlSFJsYm1SbApaRXRsZVZWellXZGxBR1Z5Y2xObFkxTk5TVTFGUW1Ga1MyVjVWWE5o
WjJVQVpYSnlVMlZqVTAxSlRVVkxaWGxWYzJGblpVNXZkRU55CmFYUnBZMkZzQUdWeWNsTmxZMU5O
U1UxRlRtOUZiV0ZwYkVGa1pISmxjM01BWlhKeVUyVmpVMDFKVFVWVGRXSnFRV3gwVG1GdFpVNXYK
ZEVOeWFYUnBZMkZzQUdWeWNsTmxZMU5UVEVKaFpFVjRkR1Z1WkdWa1MyVjVWWE5oWjJVQVpYSnlV
MlZqVDBOVFVFSmhaRkpsYzNCdgpibk5sQUdWeWNsTmxZMDlEVTFCQ1lXUlNaWEYxWlhOMEFHVnlj
bE5sWTA5RFUxQlZibUYyWVdsc1lXSnNaUUJsY25KVFpXTlBRMU5RClUzUmhkSFZ6Vlc1eVpXTnZa
MjVwZW1Wa0FHVnljbE5sWTBWdVpFOW1SR0YwWVFCbGNuSlRaV05KYm1OdmJYQnNaWFJsUTJWeWRG
SmwKZG05allYUnBiMjVEYUdWamF3QmxjbkpUWldOT1pYUjNiM0pyUm1GcGJIVnlaUUJsY25KVFpX
TlBRMU5RVG05MFZISjFjM1JsWkZSdgpRVzVqYUc5eUFHVnljbE5sWTFKbFkyOXlaRTF2WkdsbWFX
VmtBR1Z5Y2xObFkwOURVMUJUYVdkdVlYUjFjbVZGY25KdmNnQmxjbkpUClpXTlBRMU5RVG05VGFX
ZHVaWElBWlhKeVUyVmpUME5UVUZKbGMzQnZibVJsY2sxaGJHWnZjbTFsWkZKbGNRQmxjbkpUWldO
UFExTlEKVW1WemNHOXVaR1Z5U1c1MFpYSnVZV3hGY25KdmNnQmxjbkpUWldOUFExTlFVbVZ6Y0c5
dVpHVnlWSEo1VEdGMFpYSUFaWEp5VTJWagpUME5UVUZKbGMzQnZibVJsY2xOcFoyNWhkSFZ5WlZK
bGNYVnBjbVZrQUdWeWNsTmxZMDlEVTFCU1pYTndiMjVrWlhKVmJtRjFkR2h2CmNtbDZaV1FBWlhK
eVUyVmpUME5UVUZKbGMzQnZibk5sVG05dVkyVk5hWE50WVhSamFBQmxjbkpUWldORGIyUmxVMmxu
Ym1sdVowSmgKWkVObGNuUkRhR0ZwYmt4bGJtZDBhQUJsY25KVFpXTkRiMlJsVTJsbmJtbHVaMDV2
UW1GemFXTkRiMjV6ZEhKaGFXNTBjd0JsY25KVApaV05EYjJSbFUybG5ibWx1WjBKaFpGQmhkR2hN
Wlc1bmRHaERiMjV6ZEhKaGFXNTBBR1Z5Y2xObFkwTnZaR1ZUYVdkdWFXNW5UbTlGCmVIUmxibVJs
WkV0bGVWVnpZV2RsQUdWeWNsTmxZME52WkdWVGFXZHVhVzVuUkdWMlpXeHZjRzFsYm5RQVpYSnlV
MlZqVW1WemIzVnkKWTJWVGFXZHVRbUZrUTJWeWRFTm9ZV2x1VEdWdVozUm9BR1Z5Y2xObFkxSmxj
MjkxY21ObFUybG5ia0poWkVWNGRFdGxlVlZ6WVdkbApBR1Z5Y2xObFkxUnlkWE4wVTJWMGRHbHVa
MFJsYm5rQVpYSnlVMlZqU1c1MllXeHBaRk4xWW1wbFkzUk9ZVzFsQUdWeWNsTmxZMVZ1CmEyNXZk
MjVSZFdGc2FXWnBaV1JEWlhKMFUzUmhkR1Z0Wlc1MEFHVnljbE5sWTAxdlltbHNaVTFsVW1WeGRX
VnpkRkYxWlhWbFpBQmwKY25KVFpXTk5iMkpwYkdWTlpWSmxjWFZsYzNSU1pXUnBjbVZqZEdWa0FH
VnljbE5sWTAxdlltbHNaVTFsVTJWeWRtVnlSWEp5YjNJQQpaWEp5VTJWalRXOWlhV3hsVFdWVFpY
SjJaWEpPYjNSQmRtRnBiR0ZpYkdVQVpYSnlVMlZqVFc5aWFXeGxUV1ZUWlhKMlpYSkJiSEpsCllX
UjVSWGhwYzNSekFHVnljbE5sWTAxdlltbHNaVTFsVTJWeWRtVnlVMlZ5ZG1salpVVnljZ0JsY25K
VFpXTk5iMkpwYkdWTlpWSmwKY1hWbGMzUkJiSEpsWVdSNVVHVnVaR2x1WndCbGNuSlRaV05OYjJK
cGJHVk5aVTV2VW1WeGRXVnpkRkJsYm1ScGJtY0FaWEp5VTJWagpUVzlpYVd4bFRXVkRVMUpXWlhK
cFpubEdZV2xzZFhKbEFHVnljbE5sWTAxdlltbHNaVTFsUm1GcGJHVmtRMjl1YzJsemRHVnVZM2xE
CmFHVmphd0JsY25KVFpXTk9iM1JKYm1sMGFXRnNhWHBsWkFCbGNuSlRaV05KYm5aaGJHbGtTR0Z1
Wkd4bFZYTmhaMlVBWlhKeVUyVmoKVUZaRFVtVm1aWEpsYm5ST2IzUkdiM1Z1WkFCbGNuSlRaV05H
ZFc1amRHbHZia2x1ZEdWbmNtbDBlVVpoYVd3QVpYSnlVMlZqU1c1MApaWEp1WVd4RmNuSnZjZ0Js
Y25KVFpXTk5aVzF2Y25sRmNuSnZjZ0JsY25KVFpXTkpiblpoYkdsa1JHRjBZUUJsY25KVFpXTk5S
Rk5GCmNuSnZjZ0JsY25KVFpXTkpiblpoYkdsa1VHOXBiblJsY2dCbGNuSlRaV05UWld4bVEyaGxZ
MnRHWVdsc1pXUUFaWEp5VTJWalJuVnUKWTNScGIyNUdZV2xzWldRQVpYSnlVMlZqVFc5a2RXeGxU
V0Z1YVdabGMzUldaWEpwWm5sR1lXbHNaV1FBWlhKeVUyVmpTVzUyWVd4cApaRWRWU1VRQVpYSnlV
MlZqU1c1MllXeHBaRWhoYm1Sc1pRQmxjbkpUWldOSmJuWmhiR2xrUkVKTWFYTjBBR1Z5Y2xObFkw
bHVkbUZzCmFXUlFZWE56ZEdoeWIzVm5hRWxFQUdWeWNsTmxZMGx1ZG1Gc2FXUk9aWFIzYjNKclFX
UmtjbVZ6Y3dCbGNuSlRaV05EVWt4QmJISmwKWVdSNVUybG5ibVZrQUdWeWNsTmxZMGx1ZG1Gc2FX
Uk9kVzFpWlhKUFprWnBaV3hrY3dCbGNuSlRaV05XWlhKcFptbGpZWFJwYjI1RwpZV2xzZFhKbEFH
VnljbE5sWTFWdWEyNXZkMjVVWVdjQVpYSnlVMlZqU1c1MllXeHBaRk5wWjI1aGRIVnlaUUJsY25K
VFpXTkpiblpoCmJHbGtUbUZ0WlFCbGNuSlRaV05KYm5aaGJHbGtRMlZ5ZEdsbWFXTmhkR1ZTWldZ
QVpYSnlVMlZqU1c1MllXeHBaRU5sY25ScFptbGoKWVhSbFIzSnZkWEFBWlhKeVUyVmpWR0ZuVG05
MFJtOTFibVFBWlhKeVUyVmpTVzUyWVd4cFpGRjFaWEo1QUdWeWNsTmxZMGx1ZG1GcwphV1JXWVd4
MVpRQmxjbkpUWldORFlXeHNZbUZqYTBaaGFXeGxaQUJsY25KVFpXTkJRMHhFWld4bGRHVkdZV2xz
WldRQVpYSnlVMlZqClFVTk1VbVZ3YkdGalpVWmhhV3hsWkFCbGNuSlRaV05CUTB4QlpHUkdZV2xz
WldRQVpYSnlVMlZqUVVOTVEyaGhibWRsUm1GcGJHVmsKQUdWeWNsTmxZMGx1ZG1Gc2FXUkJZMk5s
YzNORGNtVmtaVzUwYVdGc2N3QmxjbkpUWldOSmJuWmhiR2xrVW1WamIzSmtBR1Z5Y2xObApZMGx1
ZG1Gc2FXUkJRMHdBWlhKeVUyVmpTVzUyWVd4cFpGTmhiWEJzWlZaaGJIVmxBR1Z5Y2xObFkwbHVZ
Mjl0Y0dGMGFXSnNaVlpsCmNuTnBiMjRBWlhKeVUyVmpVSEpwZG1sc1pXZGxUbTkwUjNKaGJuUmxa
QUJsY25KVFpXTkpiblpoYkdsa1UyTnZjR1VBWlhKeVUyVmoKVUZaRFFXeHlaV0ZrZVVOdmJtWnBa
M1Z5WldRQVpYSnlVMlZqU1c1MllXeHBaRkJXUXdCbGNuSlRaV05GVFUxTWIyRmtSbUZwYkdWawpB
R1Z5Y2xObFkwVk5UVlZ1Ykc5aFpFWmhhV3hsWkFCbGNuSlRaV05CWkdScGJreHZZV1JHWVdsc1pX
UUFaWEp5VTJWalNXNTJZV3hwClpFdGxlVkpsWmdCbGNuSlRaV05KYm5aaGJHbGtTMlY1U0dsbGNt
RnlZMmg1QUdWeWNsTmxZMEZrWkdsdVZXNXNiMkZrUm1GcGJHVmsKQUdWeWNsTmxZMHhwWW5KaGNu
bFNaV1psY21WdVkyVk9iM1JHYjNWdVpBQmxjbkpUWldOSmJuWmhiR2xrUVdSa2FXNUdkVzVqZEds
dgpibFJoWW14bEFHVnljbE5sWTBsdWRtRnNhV1JUWlhKMmFXTmxUV0Z6YXdCbGNuSlRaV05OYjJS
MWJHVk9iM1JNYjJGa1pXUUFaWEp5ClUyVmpTVzUyWVd4cFpGTjFZbE5sY25acFkyVkpSQUJsY25K
VFpXTkJkSFJ5YVdKMWRHVk9iM1JKYmtOdmJuUmxlSFFBWlhKeVUyVmoKVFc5a2RXeGxUV0Z1WVdk
bGNrbHVhWFJwWVd4cGVtVkdZV2xzWldRQVpYSnlVMlZqVFc5a2RXeGxUV0Z1WVdkbGNrNXZkRVp2
ZFc1awpBR1Z5Y2xObFkwVjJaVzUwVG05MGFXWnBZMkYwYVc5dVEyRnNiR0poWTJ0T2IzUkdiM1Z1
WkFCbGNuSlRaV05KYm5CMWRFeGxibWQwCmFFVnljbTl5QUdWeWNsTmxZMDkxZEhCMWRFeGxibWQw
YUVWeWNtOXlBR1Z5Y2xObFkxQnlhWFpwYkdWblpVNXZkRk4xY0hCdmNuUmwKWkFCbGNuSlRaV05F
WlhacFkyVkZjbkp2Y2dCbGNuSlRaV05CZEhSaFkyaElZVzVrYkdWQ2RYTjVBR1Z5Y2xObFkwNXZk
RXh2WjJkbApaRWx1QUdWeWNsTmxZMEZzWjI5eWFYUm9iVTFwYzIxaGRHTm9BR1Z5Y2xObFkwdGxl
VlZ6WVdkbFNXNWpiM0p5WldOMEFHVnljbE5sClkwdGxlVUpzYjJKVWVYQmxTVzVqYjNKeVpXTjBB
R1Z5Y2xObFkwdGxlVWhsWVdSbGNrbHVZMjl1YzJsemRHVnVkQUJsY25KVFpXTlYKYm5OMWNIQnZj
blJsWkV0bGVVWnZjbTFoZEFCbGNuSlRaV05WYm5OMWNIQnZjblJsWkV0bGVWTnBlbVVBWlhKeVUy
VmpTVzUyWVd4cApaRXRsZVZWellXZGxUV0Z6YXdCbGNuSlRaV05WYm5OMWNIQnZjblJsWkV0bGVW
VnpZV2RsVFdGemF3QmxjbkpUWldOSmJuWmhiR2xrClMyVjVRWFIwY21saWRYUmxUV0Z6YXdCbGNu
SlRaV05WYm5OMWNIQnZjblJsWkV0bGVVRjBkSEpwWW5WMFpVMWhjMnNBWlhKeVUyVmoKU1c1MllX
eHBaRXRsZVV4aFltVnNBR1Z5Y2xObFkxVnVjM1Z3Y0c5eWRHVmtTMlY1VEdGaVpXd0FaWEp5VTJW
alNXNTJZV3hwWkV0bAplVVp2Y20xaGRBQmxjbkpUWldOVmJuTjFjSEJ2Y25SbFpGWmxZM1J2Y2s5
bVFuVm1abVZ5Y3dCbGNuSlRaV05KYm5aaGJHbGtTVzV3CmRYUldaV04wYjNJQVpYSnlVMlZqU1c1
MllXeHBaRTkxZEhCMWRGWmxZM1J2Y2dCbGNuSlRaV05KYm5aaGJHbGtRMjl1ZEdWNGRBQmwKY25K
VFpXTkpiblpoYkdsa1FXeG5iM0pwZEdodEFHVnljbE5sWTBsdWRtRnNhV1JCZEhSeWFXSjFkR1ZM
WlhrQVpYSnlVMlZqVFdsegpjMmx1WjBGMGRISnBZblYwWlV0bGVRQmxjbkpUWldOSmJuWmhiR2xr
UVhSMGNtbGlkWFJsU1c1cGRGWmxZM1J2Y2dCbGNuSlRaV05OCmFYTnphVzVuUVhSMGNtbGlkWFJs
U1c1cGRGWmxZM1J2Y2dCbGNuSlRaV05KYm5aaGJHbGtRWFIwY21saWRYUmxVMkZzZEFCbGNuSlQK
WldOTmFYTnphVzVuUVhSMGNtbGlkWFJsVTJGc2RBQmxjbkpUWldOSmJuWmhiR2xrUVhSMGNtbGlk
WFJsVUdGa1pHbHVad0JsY25KVApaV05OYVhOemFXNW5RWFIwY21saWRYUmxVR0ZrWkdsdVp3Qmxj
bkpUWldOSmJuWmhiR2xrUVhSMGNtbGlkWFJsVW1GdVpHOXRBR1Z5CmNsTmxZMDFwYzNOcGJtZEJk
SFJ5YVdKMWRHVlNZVzVrYjIwQVpYSnlVMlZqU1c1MllXeHBaRUYwZEhKcFluVjBaVk5sWldRQVpY
SnkKVTJWalRXbHpjMmx1WjBGMGRISnBZblYwWlZObFpXUUFaWEp5VTJWalNXNTJZV3hwWkVGMGRI
SnBZblYwWlZCaGMzTndhSEpoYzJVQQpaWEp5VTJWalRXbHpjMmx1WjBGMGRISnBZblYwWlZCaGMz
TndhSEpoYzJVQVpYSnlVMlZqU1c1MllXeHBaRUYwZEhKcFluVjBaVXRsCmVVeGxibWQwYUFCbGNu
SlRaV05OYVhOemFXNW5RWFIwY21saWRYUmxTMlY1VEdWdVozUm9BR1Z5Y2xObFkwbHVkbUZzYVdS
QmRIUnkKYVdKMWRHVkNiRzlqYTFOcGVtVUFaWEp5VTJWalRXbHpjMmx1WjBGMGRISnBZblYwWlVK
c2IyTnJVMmw2WlFCbGNuSlRaV05KYm5aaApiR2xrUVhSMGNtbGlkWFJsVDNWMGNIVjBVMmw2WlFC
bGNuSlRaV05OYVhOemFXNW5RWFIwY21saWRYUmxUM1YwY0hWMFUybDZaUUJsCmNuSlRaV05KYm5a
aGJHbGtRWFIwY21saWRYUmxVbTkxYm1SekFHVnljbE5sWTAxcGMzTnBibWRCZEhSeWFXSjFkR1ZT
YjNWdVpITUEKWlhKeVUyVmpTVzUyWVd4cFpFRnNaMjl5YVhSb2JWQmhjbTF6QUdWeWNsTmxZMDFw
YzNOcGJtZEJiR2R2Y21sMGFHMVFZWEp0Y3dCbApjbkpUWldOSmJuWmhiR2xrUVhSMGNtbGlkWFJs
VEdGaVpXd0FaWEp5VTJWalRXbHpjMmx1WjBGMGRISnBZblYwWlV4aFltVnNBR1Z5CmNsTmxZMGx1
ZG1Gc2FXUkJkSFJ5YVdKMWRHVkxaWGxVZVhCbEFHVnljbE5sWTAxcGMzTnBibWRCZEhSeWFXSjFk
R1ZMWlhsVWVYQmwKQUdWeWNsTmxZMGx1ZG1Gc2FXUkJkSFJ5YVdKMWRHVk5iMlJsQUdWeWNsTmxZ
MDFwYzNOcGJtZEJkSFJ5YVdKMWRHVk5iMlJsQUdWeQpjbE5sWTBsdWRtRnNhV1JCZEhSeWFXSjFk
R1ZGWm1abFkzUnBkbVZDYVhSekFHVnljbE5sWTAxcGMzTnBibWRCZEhSeWFXSjFkR1ZGClptWmxZ
M1JwZG1WQ2FYUnpBR1Z5Y2xObFkwbHVkbUZzYVdSQmRIUnlhV0oxZEdWVGRHRnlkRVJoZEdVQVpY
SnlVMlZqVFdsemMybHUKWjBGMGRISnBZblYwWlZOMFlYSjBSR0YwWlFCbGNuSlRaV05KYm5aaGJH
bGtRWFIwY21saWRYUmxSVzVrUkdGMFpRQmxjbkpUWldOTgphWE56YVc1blFYUjBjbWxpZFhSbFJX
NWtSR0YwWlFCbGNuSlRaV05KYm5aaGJHbGtRWFIwY21saWRYUmxWbVZ5YzJsdmJnQmxjbkpUClpX
Tk5hWE56YVc1blFYUjBjbWxpZFhSbFZtVnljMmx2YmdCbGNuSlRaV05KYm5aaGJHbGtRWFIwY21s
aWRYUmxVSEpwYldVQVpYSnkKVTJWalRXbHpjMmx1WjBGMGRISnBZblYwWlZCeWFXMWxBR1Z5Y2xO
bFkwbHVkbUZzYVdSQmRIUnlhV0oxZEdWQ1lYTmxBR1Z5Y2xObApZMDFwYzNOcGJtZEJkSFJ5YVdK
MWRHVkNZWE5sQUdWeWNsTmxZMGx1ZG1Gc2FXUkJkSFJ5YVdKMWRHVlRkV0p3Y21sdFpRQmxjbkpU
ClpXTk5hWE56YVc1blFYUjBjbWxpZFhSbFUzVmljSEpwYldVQVpYSnlVMlZqU1c1MllXeHBaRUYw
ZEhKcFluVjBaVWwwWlhKaGRHbHYKYmtOdmRXNTBBR1Z5Y2xObFkwMXBjM05wYm1kQmRIUnlhV0ox
ZEdWSmRHVnlZWFJwYjI1RGIzVnVkQUJsY25KVFpXTkpiblpoYkdsawpRWFIwY21saWRYUmxSRXhF
UWtoaGJtUnNaUUJsY25KVFpXTk5hWE56YVc1blFYUjBjbWxpZFhSbFJFeEVRa2hoYm1Sc1pRQmxj
bkpUClpXTkpiblpoYkdsa1FYUjBjbWxpZFhSbFFXTmpaWE56UTNKbFpHVnVkR2xoYkhNQVpYSnlV
MlZqVFdsemMybHVaMEYwZEhKcFluVjAKWlVGalkyVnpjME55WldSbGJuUnBZV3h6QUdWeWNsTmxZ
MGx1ZG1Gc2FXUkJkSFJ5YVdKMWRHVlFkV0pzYVdOTFpYbEdiM0p0WVhRQQpaWEp5VTJWalRXbHpj
Mmx1WjBGMGRISnBZblYwWlZCMVlteHBZMHRsZVVadmNtMWhkQUJsY25KVFpXTkpiblpoYkdsa1FY
UjBjbWxpCmRYUmxVSEpwZG1GMFpVdGxlVVp2Y20xaGRBQmxjbkpUWldOTmFYTnphVzVuUVhSMGNt
bGlkWFJsVUhKcGRtRjBaVXRsZVVadmNtMWgKZEFCbGNuSlRaV05KYm5aaGJHbGtRWFIwY21saWRY
UmxVM2x0YldWMGNtbGpTMlY1Um05eWJXRjBBR1Z5Y2xObFkwMXBjM05wYm1kQgpkSFJ5YVdKMWRH
VlRlVzF0WlhSeWFXTkxaWGxHYjNKdFlYUUFaWEp5VTJWalNXNTJZV3hwWkVGMGRISnBZblYwWlZk
eVlYQndaV1JMClpYbEdiM0p0WVhRQVpYSnlVMlZqVFdsemMybHVaMEYwZEhKcFluVjBaVmR5WVhC
d1pXUkxaWGxHYjNKdFlYUUFaWEp5VTJWalUzUmgKWjJWa1QzQmxjbUYwYVc5dVNXNVFjbTluY21W
emN3QmxjbkpUWldOVGRHRm5aV1JQY0dWeVlYUnBiMjVPYjNSVGRHRnlkR1ZrQUdWeQpjbE5sWTFa
bGNtbG1lVVpoYVd4bFpBQmxjbkpUWldOUmRXVnllVk5wZW1WVmJtdHViM2R1QUdWeWNsTmxZMEpz
YjJOclUybDZaVTFwCmMyMWhkR05vQUdWeWNsTmxZMUIxWW14cFkwdGxlVWx1WTI5dWMybHpkR1Z1
ZEFCbGNuSlRaV05FWlhacFkyVldaWEpwWm5sR1lXbHMKWldRQVpYSnlVMlZqU1c1MllXeHBaRXh2
WjJsdVRtRnRaUUJsY25KVFpXTkJiSEpsWVdSNVRHOW5aMlZrU1c0QVpYSnlVMlZqU1c1MgpZV3hw
WkVScFoyVnpkRUZzWjI5eWFYUm9iUUJsY25KVFpXTkpiblpoYkdsa1ExSk1SM0p2ZFhBQVpYSnlV
MlZqUTJWeWRHbG1hV05oCmRHVkRZVzV1YjNSUGNHVnlZWFJsQUdWeWNsTmxZME5sY25ScFptbGpZ
WFJsUlhod2FYSmxaQUJsY25KVFpXTkRaWEowYVdacFkyRjAKWlU1dmRGWmhiR2xrV1dWMEFHVnlj
bE5sWTBObGNuUnBabWxqWVhSbFVtVjJiMnRsWkFCbGNuSlRaV05EWlhKMGFXWnBZMkYwWlZOMQpj
M0JsYm1SbFpBQmxjbkpUWldOSmJuTjFabVpwWTJsbGJuUkRjbVZrWlc1MGFXRnNjd0JsY25KVFpX
TkpiblpoYkdsa1FXTjBhVzl1CkFHVnljbE5sWTBsdWRtRnNhV1JCZFhSb2IzSnBkSGtBWlhKeVUy
VmpWbVZ5YVdaNVFXTjBhVzl1Um1GcGJHVmtBR1Z5Y2xObFkwbHUKZG1Gc2FXUkRaWEowUVhWMGFH
OXlhWFI1QUdWeWNsTmxZMGx1ZG1Gc1pFTlNURUYxZEdodmNtbDBlUUJsY25KVFpXTkpiblpoYkds
awpRMUpNUlc1amIyUnBibWNBWlhKeVUyVmpTVzUyWVd4cFpFTlNURlI1Y0dVQVpYSnlVMlZqU1c1
MllXeHBaRU5TVEFCbGNuSlRaV05KCmJuWmhiR2xrUm05eWJWUjVjR1VBWlhKeVUyVmpTVzUyWVd4
cFpFbEVBR1Z5Y2xObFkwbHVkbUZzYVdSSlpHVnVkR2xtYVdWeUFHVnkKY2xObFkwbHVkbUZzYVdS
SmJtUmxlQUJsY25KVFpXTkpiblpoYkdsa1VHOXNhV041U1dSbGJuUnBabWxsY25NQVpYSnlVMlZq
U1c1MgpZV3hwWkZScGJXVlRkSEpwYm1jQVpYSnlVMlZqU1c1MllXeHBaRkpsWVhOdmJnQmxjbkpU
WldOSmJuWmhiR2xrVW1WeGRXVnpkRWx1CmNIVjBjd0JsY25KVFpXTkpiblpoYkdsa1VtVnpjRzl1
YzJWV1pXTjBiM0lBWlhKeVUyVmpTVzUyWVd4cFpGTjBiM0JQYmxCdmJHbGoKZVFCbGNuSlRaV05K
Ym5aaGJHbGtWSFZ3YkdVQVpYSnlVMlZqVFhWc2RHbHdiR1ZXWVd4MVpYTlZibk4xY0hCdmNuUmxa
QUJsY25KVApaV05PYjNSVWNuVnpkR1ZrQUdWeWNsTmxZMDV2UkdWbVlYVnNkRUYxZEdodmNtbDBl
UUJsY25KVFpXTlNaV3BsWTNSbFpFWnZjbTBBClpYSnlVMlZqVW1WeGRXVnpkRXh2YzNRQVpYSnlV
MlZqVW1WeGRXVnpkRkpsYW1WamRHVmtBR1Z5Y2xObFkxVnVjM1Z3Y0c5eWRHVmsKUVdSa2NtVnpj
MVI1Y0dVQVpYSnlVMlZqVlc1emRYQndiM0owWldSVFpYSjJhV05sQUdWeWNsTmxZMGx1ZG1Gc2FX
UlVkWEJzWlVkeQpiM1Z3QUdWeWNsTmxZMGx1ZG1Gc2FXUkNZWE5sUVVOTWN3QmxjbkpUWldOSmJu
WmhiR2xrVkhWd2JHVkRjbVZrWlc1a2RHbGhiSE1BClpYSnlVMlZqU1c1MllXeHBaRVZ1WTI5a2FX
NW5BR1Z5Y2xObFkwbHVkbUZzYVdSV1lXeHBaR2wwZVZCbGNtbHZaQUJsY25KVFpXTkoKYm5aaGJH
bGtVbVZ4ZFdWemRHOXlBR1Z5Y2xObFkxSmxjWFZsYzNSRVpYTmpjbWx3ZEc5eUFHVnljbE5sWTBs
dWRtRnNhV1JDZFc1awpiR1ZKYm1adkFHVnljbE5sWTBsdWRtRnNhV1JEVWt4SmJtUmxlQUJsY25K
VFpXTk9iMFpwWld4a1ZtRnNkV1Z6QUdWeWNsTmxZMVZ1CmMzVndjRzl5ZEdWa1JtbGxiR1JHYjNK
dFlYUUFaWEp5VTJWalZXNXpkWEJ3YjNKMFpXUkpibVJsZUVsdVptOEFaWEp5VTJWalZXNXoKZFhC
d2IzSjBaV1JNYjJOaGJHbDBlUUJsY25KVFpXTlZibk4xY0hCdmNuUmxaRTUxYlVGMGRISnBZblYw
WlhNQVpYSnlVMlZqVlc1egpkWEJ3YjNKMFpXUk9kVzFKYm1SbGVHVnpBR1Z5Y2xObFkxVnVjM1Z3
Y0c5eWRHVmtUblZ0VW1WamIzSmtWSGx3WlhNQVpYSnlVMlZqClJtbGxiR1JUY0dWamFXWnBaV1JO
ZFd4MGFYQnNaUUJsY25KVFpXTkpibU52YlhCaGRHbGliR1ZHYVdWc1pFWnZjbTFoZEFCbGNuSlQK
WldOSmJuWmhiR2xrVUdGeWMybHVaMDF2WkhWc1pRQmxjbkpUWldORVlYUmhZbUZ6WlV4dlkydGxa
QUJsY25KVFpXTkVZWFJoYzNSdgpjbVZKYzA5d1pXNEFaWEp5VTJWalRXbHpjMmx1WjFaaGJIVmxB
R1Z5Y2xObFkxVnVjM1Z3Y0c5eWRHVmtVWFZsY25sTWFXMXBkSE1BClpYSnlVMlZqVlc1emRYQndi
M0owWldST2RXMVRaV3hsWTNScGIyNVFjbVZrY3dCbGNuSlRaV05WYm5OMWNIQnZjblJsWkU5d1pY
SmgKZEc5eUFHVnljbE5sWTBsdWRtRnNhV1JFUWt4dlkyRjBhVzl1QUdWeWNsTmxZMGx1ZG1Gc2FX
UkJZMk5sYzNOU1pYRjFaWE4wQUdWeQpjbE5sWTBsdWRtRnNhV1JKYm1SbGVFbHVabThBWlhKeVUy
VmpTVzUyWVd4cFpFNWxkMDkzYm1WeUFHVnljbE5sWTBsdWRtRnNhV1JOCmIyUnBabmxOYjJSbEFH
VnljbE5sWTAxcGMzTnBibWRTWlhGMWFYSmxaRVY0ZEdWdWMybHZiZ0JsY25KVFpXTkZlSFJsYm1S
bFpFdGwKZVZWellXZGxUbTkwUTNKcGRHbGpZV3dBWlhKeVUyVmpWR2x0WlhOMFlXMXdUV2x6YzJs
dVp3QmxjbkpUWldOVWFXMWxjM1JoYlhCSgpiblpoYkdsa0FHVnljbE5sWTFScGJXVnpkR0Z0Y0U1
dmRGUnlkWE4wWldRQVpYSnlVMlZqVkdsdFpYTjBZVzF3VTJWeWRtbGpaVTV2CmRFRjJZV2xzWVdK
c1pRQmxjbkpUWldOVWFXMWxjM1JoYlhCQ1lXUkJiR2NBWlhKeVUyVmpWR2x0WlhOMFlXMXdRbUZr
VW1WeGRXVnoKZEFCbGNuSlRaV05VYVcxbGMzUmhiWEJDWVdSRVlYUmhSbTl5YldGMEFHVnljbE5s
WTFScGJXVnpkR0Z0Y0ZScGJXVk9iM1JCZG1GcApiR0ZpYkdVQVpYSnlVMlZqVkdsdFpYTjBZVzF3
Vlc1aFkyTmxjSFJsWkZCdmJHbGplUUJsY25KVFpXTlVhVzFsYzNSaGJYQlZibUZqClkyVndkR1Zr
UlhoMFpXNXphVzl1QUdWeWNsTmxZMVJwYldWemRHRnRjRUZrWkVsdVptOU9iM1JCZG1GcGJHRmli
R1VBWlhKeVUyVmoKVkdsdFpYTjBZVzF3VTNsemRHVnRSbUZwYkhWeVpRQmxjbkpUWldOVGFXZHVh
VzVuVkdsdFpVMXBjM05wYm1jQVpYSnlVMlZqVkdsdApaWE4wWVcxd1VtVnFaV04wYVc5dUFHVnlj
bE5sWTFScGJXVnpkR0Z0Y0ZkaGFYUnBibWNBWlhKeVUyVmpWR2x0WlhOMFlXMXdVbVYyCmIyTmhk
R2x2YmxkaGNtNXBibWNBWlhKeVUyVmpWR2x0WlhOMFlXMXdVbVYyYjJOaGRHbHZiazV2ZEdsbWFX
TmhkR2x2YmdCclUyVmoKVkhKMWMzUlNaWE4xYkhSSmJuWmhiR2xrQUd0VFpXTlVjblZ6ZEZKbGMz
VnNkRkJ5YjJObFpXUUFhMU5sWTFSeWRYTjBVbVZ6ZFd4MApRMjl1Wm1seWJRQnJVMlZqVkhKMWMz
UlNaWE4xYkhSRVpXNTVBR3RUWldOVWNuVnpkRkpsYzNWc2RGVnVjM0JsWTJsbWFXVmtBR3RUClpX
TlVjblZ6ZEZKbGMzVnNkRkpsWTI5MlpYSmhZbXhsVkhKMWMzUkdZV2xzZFhKbEFHdFRaV05VY25W
emRGSmxjM1ZzZEVaaGRHRnMKVkhKMWMzUkdZV2xzZFhKbEFHdFRaV05VY25WemRGSmxjM1ZzZEU5
MGFHVnlSWEp5YjNJQWJtOUZjbklBYTBOR1UzUnlhVzVuUlc1agpiMlJwYm1kTllXTlNiMjFoYmdC
clEwWlRkSEpwYm1kRmJtTnZaR2x1WjFkcGJtUnZkM05NWVhScGJqRUFhME5HVTNSeWFXNW5SVzVq
CmIyUnBibWRKVTA5TVlYUnBiakVBYTBOR1UzUnlhVzVuUlc1amIyUnBibWRPWlhoMFUzUmxjRXho
ZEdsdUFHdERSbE4wY21sdVowVnUKWTI5a2FXNW5RVk5EU1VrQWEwTkdVM1J5YVc1blJXNWpiMlJw
Ym1kVmJtbGpiMlJsQUd0RFJsTjBjbWx1WjBWdVkyOWthVzVuVlZSRwpPQUJyUTBaVGRISnBibWRG
Ym1OdlpHbHVaMDV2Ymt4dmMzTjVRVk5EU1VrQWEwTkdVM1J5YVc1blJXNWpiMlJwYm1kVlZFWXhO
Z0JyClEwWlRkSEpwYm1kRmJtTnZaR2x1WjFWVVJqRTJRa1VBYTBOR1UzUnlhVzVuUlc1amIyUnBi
bWRWVkVZeE5reEZBR3REUmxOMGNtbHUKWjBWdVkyOWthVzVuVlZSR016SUFhME5HVTNSeWFXNW5S
VzVqYjJScGJtZFZWRVl6TWtKRkFHdERSbE4wY21sdVowVnVZMjlrYVc1bgpWVlJHTXpKTVJRQkRS
bE4wY21sdVowSjFhV3gwU1c1RmJtTnZaR2x1WjNNQWEwTkdVM1J5WldGdFJYWmxiblJPYjI1bEFH
dERSbE4wCmNtVmhiVVYyWlc1MFQzQmxia052YlhCc1pYUmxaQUJyUTBaVGRISmxZVzFGZG1WdWRF
aGhjMEo1ZEdWelFYWmhhV3hoWW14bEFHdEQKUmxOMGNtVmhiVVYyWlc1MFEyRnVRV05qWlhCMFFu
bDBaWE1BYTBOR1UzUnlaV0Z0UlhabGJuUkZjbkp2Y2s5alkzVnljbVZrQUd0RApSbE4wY21WaGJV
VjJaVzUwUlc1a1JXNWpiM1Z1ZEdWeVpXUUFRMFpQY0hScGIyNUdiR0ZuY3dCRFJsTjBjbVZoYlVW
MlpXNTBWSGx3ClpRQk9VMFJsWm1GMWJIUkRiMjUwY205c1ZHbHVkQUJPVTBKc2RXVkRiMjUwY205
c1ZHbHVkQUJPVTBkeVlYQm9hWFJsUTI5dWRISnYKYkZScGJuUUFUbE5EYkdWaGNrTnZiblJ5YjJ4
VWFXNTBBR3REUjBadlkzVnpVbWx1WjFScGJuUkNiSFZsQUd0RFIwWnZZM1Z6VW1sdQpaMVJwYm5S
SGNtRndhR2wwWlFCRFIwWnZZM1Z6VW1sdVoxUnBiblFBYTBOSFJtOWpkWE5TYVc1blQzSmtaWEpw
Ym1kT2IyNWxBR3REClIwWnZZM1Z6VW1sdVowOXlaR1Z5YVc1blFtVnNiM2NBYTBOSFJtOWpkWE5T
YVc1blQzSmtaWEpwYm1kQlltOTJaUUJEUjBadlkzVnoKVW1sdVowOXlaR1Z5YVc1bkFHdERiM0ps
UkhKaFowbHRZV2RsVTNCbFkxWmxjbk5wYjI1UGJtVUFhME5IUlhKeWIzSlRkV05qWlhOegpBR3RE
UjBWeWNtOXlSbUZwYkhWeVpRQnJRMGRGY25KdmNrbHNiR1ZuWVd4QmNtZDFiV1Z1ZEFCclEwZEZj
bkp2Y2tsdWRtRnNhV1JECmIyNXVaV04wYVc5dUFHdERSMFZ5Y205eVNXNTJZV3hwWkVOdmJuUmxl
SFFBYTBOSFJYSnliM0pEWVc1dWIzUkRiMjF3YkdWMFpRQnIKUTBkRmNuSnZjazV2ZEVsdGNHeGxi
V1Z1ZEdWa0FHdERSMFZ5Y205eVVtRnVaMlZEYUdWamF3QnJRMGRGY25KdmNsUjVjR1ZEYUdWagph
d0JyUTBkRmNuSnZja2x1ZG1Gc2FXUlBjR1Z5WVhScGIyNEFhME5IUlhKeWIzSk9iMjVsUVhaaGFX
eGhZbXhsQUY5RFIwVnljbTl5CkFFNVRVRzl3VlhCTlpXNTFWSGx3WlVkbGJtVnlhV01BVGxOUWIz
QlZjRTFsYm5WVWVYQmxVRzl3VlhBQVRsTlFiM0JWY0UxbGJuVlUKZVhCbFVIVnNiSE5FYjNkdUFF
NVRVRzl3VlhCTlpXNTFWSGx3WlUxaGFXNU5aVzUxQUU1VFVHOXdWWEJOWlc1MVZIbHdaVU52Ym5S
bAplSFFBVGxOUWIzQlZjRTFsYm5WRVpXWmhkV3gwVkc5UWIzQlZjRU52Ym5SeWIyeEdiMjUwQUU1
VFVHOXdWWEJOWlc1MVVHOXphWFJwCmIyNVNaV3hoZEdsMlpWUnZVbWxuYUhSRlpHZGxBR3REUjFO
R2FYSnpkRTV2ZEdsbWFXTmhkR2x2YmdCclEwZFRSbWx5YzNSRWFYTncKYkdGNVRtOTBhV1pwWTJG
MGFXOXVBR3REUjFOTVlYTjBSR2x6Y0d4aGVVNXZkR2xtYVdOaGRHbHZiZ0JyUTBkVFJtbHljM1JF
WldKMQpaMDV2ZEdsbWFXTmhkR2x2YmdCclEwZFRUR0Z6ZEVSbFluVm5UbTkwYVdacFkyRjBhVzl1
QUd0RFIxTkdhWEp6ZEZObGNuWmxja052CmJtNU9iM1JwWm1sallYUnBiMjRBYTBOSFUweGhjM1JU
WlhKMlpYSkRiMjV1VG05MGFXWnBZMkYwYVc5dUFHdERSMU5HYVhKemRFTlEKV0U1dmRHbG1hV05o
ZEdsdmJnQnJRMGRUVEdGemRFTlFXRTV2ZEdsbWFXTmhkR2x2YmdCclEwZFRSbWx5YzNSVGRYSm1Z
V05sVG05MAphV1pwWTJGMGFXOXVBR3REUjFOTVlYTjBVM1Z5Wm1GalpVNXZkR2xtYVdOaGRHbHZi
Z0JyUTBkVFJtbHljM1JTWlhObGNuWmxaRTV2CmRHbG1hV05oZEdsdmJnQnJRMGRUVEdGemRGSmxj
MlZ5ZG1Wa1RtOTBhV1pwWTJGMGFXOXVBR3REUjFOR2FYSnpkRVYyWlc1MFRtOTAKYVdacFkyRjBh
Vzl1QUd0RFIxTk1ZWE4wUlhabGJuUk9iM1JwWm1sallYUnBiMjRBYTBOSFUwWnBjbk4wVjJsdVpH
OTNUbTkwYVdacApZMkYwYVc5dUFHdERSMU5NWVhOMFYybHVaRzkzVG05MGFXWnBZMkYwYVc5dUFH
dERSMU5HYVhKemRFTnZibTVsWTNScGIyNU9iM1JwClptbGpZWFJwYjI0QWEwTkhVMHhoYzNSRGIy
NXVaV04wYVc5dVRtOTBhV1pwWTJGMGFXOXVBR3REUjFOR2FYSnpkRk5sY25abGNsZHAKYm1SdmQw
NXZkR2xtYVdOaGRHbHZiZ0JyUTBkVFRHRnpkRk5sY25abGNsZHBibVJ2ZDA1dmRHbG1hV05oZEds
dmJnQnJRMGRUUm1seQpjM1JUWlhKMlpYSlRkWEptWVdObFRtOTBhV1pwWTJGMGFXOXVBR3REUjFO
TVlYTjBVMlZ5ZG1WeVUzVnlabUZqWlU1dmRHbG1hV05oCmRHbHZiZ0JyUTBkVFJtbHljM1JFYjJO
clRtOTBhV1pwWTJGMGFXOXVBR3REUjFOTVlYTjBSRzlqYTA1dmRHbG1hV05oZEdsdmJnQnIKUTBk
VFJtbHljM1JRWVdOcllXZGxjMDV2ZEdsbWFXTmhkR2x2YmdCclEwZFRUR0Z6ZEZCaFkydGhaMlZ6
VG05MGFXWnBZMkYwYVc5dQpBR3REUjFOR2FYSnpkRmR2Y210emNHRmpaVTV2ZEdsbWFXTmhkR2x2
YmdCclEwZFRUR0Z6ZEZkdmNtdHpjR0ZqWlU1dmRHbG1hV05oCmRHbHZiZ0JyUTBkVFJtbHljM1JU
WlhOemFXOXVUbTkwYVdacFkyRjBhVzl1QUd0RFIxTk1ZWE4wVTJWemMybHZiazV2ZEdsbWFXTmgK
ZEdsdmJnQnJRMGRUUm1seWMzUkJZMk5sYkdWeVlYUnZjazV2ZEdsbWFXTmhkR2x2YmdCclEwZFRU
R0Z6ZEVGalkyVnNaWEpoZEc5eQpUbTkwYVdacFkyRjBhVzl1QUd0RFIxTkdhWEp6ZEZSeVlXNXph
WFJwYjI1T2IzUnBabWxqWVhScGIyNEFhME5IVTB4aGMzUlVjbUZ1CmMybDBhVzl1VG05MGFXWnBZ
MkYwYVc5dUFHdERSMU5HYVhKemRGTmxjblpsY2tsdWRHVnlibUZzVG05MGFXWnBZMkYwYVc5dUFH
dEQKUjFOTVlYTjBVMlZ5ZG1WeVNXNTBaWEp1WVd4T2IzUnBabWxqWVhScGIyNEFhME5IVTBacGNu
TjBRMGxFWldKMVoyZHBibWRPYjNScApabWxqWVhScGIyNEFhME5IVTB4aGMzUkRTVVJsWW5Wbloy
bHVaMDV2ZEdsbWFXTmhkR2x2YmdCclEwZFRSbWx5YzNSRFIwUmxZblZuCloybHVaMDV2ZEdsbWFX
TmhkR2x2YmdCclEwZFRUR0Z6ZEVOSFJHVmlkV2RuYVc1blRtOTBhV1pwWTJGMGFXOXVBR3REUjFO
TVlYTjAKVG05MGFXWnBZMkYwYVc5dUFHdERSMFp2Ym5SU1pXNWtaWEpwYm1kVGRIbHNaVUZ1ZEds
aGJHbGhjMmx1WndCclEwZEdiMjUwVW1WdQpaR1Z5YVc1blUzUjViR1ZUYlc5dmRHaHBibWNBYTBO
SFJtOXVkRkpsYm1SbGNtbHVaMU4wZVd4bFUzVmljR2w0Wld4UWIzTnBkR2x2CmJtbHVad0JyUTBk
R2IyNTBVbVZ1WkdWeWFXNW5VM1I1YkdWVGRXSndhWGhsYkZGMVlXNTBhWHBoZEdsdmJnQnJRMGRH
YjI1MFVtVnUKWkdWeWFXNW5VM1I1YkdWUWJHRjBabTl5YlU1aGRHbDJaUUJyUTBkR2IyNTBVbVZ1
WkdWeWFXNW5VM1I1YkdWTllYTnJBRTVUUm05dQpkRVJsWm1GMWJIUlNaVzVrWlhKcGJtZE5iMlJs
QUU1VFJtOXVkRUZ1ZEdsaGJHbGhjMlZrVW1WdVpHVnlhVzVuVFc5a1pRQk9VMFp2CmJuUkpiblJs
WjJWeVFXUjJZVzVqWlcxbGJuUnpVbVZ1WkdWeWFXNW5UVzlrWlFCT1UwWnZiblJCYm5ScFlXeHBZ
WE5sWkVsdWRHVm4KWlhKQlpIWmhibU5sYldWdWRITlNaVzVrWlhKcGJtZE5iMlJsQUd0RFIwSnBk
RzFoY0VGc2NHaGhTVzVtYjAxaGMyc0FhME5IUW1sMApiV0Z3Um14dllYUkRiMjF3YjI1bGJuUnpB
R3REUjBKcGRHMWhjRUo1ZEdWUGNtUmxjazFoYzJzQWEwTkhRbWwwYldGd1FubDBaVTl5ClpHVnlS
R1ZtWVhWc2RBQnJRMGRDYVhSdFlYQkNlWFJsVDNKa1pYSXhOa3hwZEhSc1pRQnJRMGRDYVhSdFlY
QkNlWFJsVDNKa1pYSXoKTWt4cGRIUnNaUUJyUTBkQ2FYUnRZWEJDZVhSbFQzSmtaWEl4TmtKcFp3
QnJRMGRDYVhSdFlYQkNlWFJsVDNKa1pYSXpNa0pwWndCRApSMEpwZEcxaGNFbHVabThBYTBOSFNX
MWhaMlZCYkhCb1lVNXZibVVBYTBOSFNXMWhaMlZCYkhCb1lWQnlaVzExYkhScGNHeHBaV1JNCllY
TjBBR3REUjBsdFlXZGxRV3h3YUdGUWNtVnRkV3gwYVhCc2FXVmtSbWx5YzNRQWEwTkhTVzFoWjJW
QmJIQm9ZVXhoYzNRQWEwTkgKU1cxaFoyVkJiSEJvWVVacGNuTjBBR3REUjBsdFlXZGxRV3h3YUdG
T2IyNWxVMnRwY0V4aGMzUUFhME5IU1cxaFoyVkJiSEJvWVU1dgpibVZUYTJsd1JtbHljM1FBYTBO
SFNXMWhaMlZCYkhCb1lVOXViSGtBUTBkSmJXRm5aVUZzY0doaFNXNW1id0JyUTBkRGIyNTBaWGgw
ClZIbHdaVlZ1YTI1dmQyNEFhME5IUTI5dWRHVjRkRlI1Y0dWUVJFWUFhME5IUTI5dWRHVjRkRlI1
Y0dWUWIzTjBVMk55YVhCMEFHdEQKUjBOdmJuUmxlSFJVZVhCbFYybHVaRzkzQUd0RFIwTnZiblJs
ZUhSVWVYQmxRbWwwYldGd0FHdERSME52Ym5SbGVIUlVlWEJsUjB3QQphME5IUTI5dWRHVjRkRlI1
Y0dWRWFYTndiR0Y1VEdsemRBQnJRMGREYjI1MFpYaDBWSGx3WlV0VFpYQmhjbUYwYVc5dUFHdERS
ME52CmJuUmxlSFJVZVhCbFNVOVRkWEptWVdObEFHdERSME52Ym5SbGVIUlVlWEJsUTI5MWJuUUFR
MGREYjI1MFpYaDBWSGx3WlFCUlZFbHUKWTJ4MVpHVkVZWFJoU1c1emNHVmpkR1ZrVkhsd1pYTUFV
VlJKYm1Oc2RXUmxTVzF3YjNKMFpXUk5iM1pwWlZSNWNHVnpBRkZVU1c1agpiSFZrWlVsdGNHOXlk
R1ZrVjJsMGFFNWxkMFpwYkdWVWVYQmxjd0JSVkVsdVkyeDFaR1ZHYVdkTlpXUnBZVVpwYkdWVWVY
Qmxjd0JSClZFbHVZMngxWkdWUGJteDVSbWxuVFdWa2FXRkdhV3hsVkhsd1pYTUFVVlJKYm1Oc2RX
UmxSRkpOVUhKdmRHVmpkR1ZrVkhsd1pYTUEKVjB0TmIzWnBaVlI1Y0dWVmJtdHViM2R1QUZkTFRX
OTJhV1ZVZVhCbFJHOTNibXh2WVdRQVYwdE5iM1pwWlZSNWNHVlRkRzl5WldSVApkSEpsWVcwQVYw
dE5iM1pwWlZSNWNHVk1hWFpsVTNSeVpXRnRBRkZVVFc5MmFXVlVlWEJsVlc1cmJtOTNiZ0JSVkUx
dmRtbGxWSGx3ClpVeHZZMkZzQUZGVVRXOTJhV1ZVZVhCbFJtRnpkRk4wWVhKMEFGRlVUVzkyYVdW
VWVYQmxUR2wyWlZOMGNtVmhiUUJSVkUxdmRtbGwKVkhsd1pWTjBiM0psWkZOMGNtVmhiUUJyVEZO
SmJuWmhiR2xrVTJWemMybHZia2xFQUd0TVUwTjFjbkpsYm5SVFpYTnphVzl1U1VRQQphMHhUUkdW
bVlYVnNkRk5sYzNOcGIyNUpSQUJyVEZOR2NtOXVkRk5sYzNOcGIyNUpSQUJyVEZOQmJHeFRaWE56
YVc5dWMwbEVBRXhUClUyVnpjMmx2YmtsRUFHdElTVlJvWlcxbFQzSnBaVzUwWVhScGIyNU9iM0p0
WVd3QWEwaEpWR2hsYldWUGNtbGxiblJoZEdsdmJrbHUKZG1WeWRHVmtBR3REUVZKbGJtUmxja052
Ym5SbGVIUkVhV1JEYUdGdVoyVUFhME5CVW1WdVpHVnlSR2xrUTNKbFlYUmxRMjl1ZEdWNApkQUJy
UTBGU1pXNWtaWEpYYVd4c1JHVnpkSEp2ZVVOdmJuUmxlSFFBYTBOQlVtVnVaR1Z5VjJsc2JFUmxZ
V3hzYjJOaGRHVkpiV0ZuClpRQnJRMEZTWlc1a1pYSkRiMjUwWlhoMFYybHNiRU52YlcxcGRBQnJR
MEZTWlc1a1pYSkRiMjUwWlhoMFJHbGtRMjl0YldsMEFFTkIKVW1WdVpHVnlUbTkwYVdacFkyRjBh
Vzl1VG1GdFpRQk9VMEp2Y21SbGNteGxjM05YYVc1a2IzZE5ZWE5yQUU1VFZHbDBiR1ZrVjJsdQpa
RzkzVFdGemF3Qk9VME5zYjNOaFlteGxWMmx1Wkc5M1RXRnphd0JPVTAxcGJtbGhkSFZ5YVhwaFlt
eGxWMmx1Wkc5M1RXRnphd0JPClUxSmxjMmw2WVdKc1pWZHBibVJ2ZDAxaGMyc0FYMDVUVFdWdWRW
ZHBibVJ2ZDAxaGMyc0FYMDVUVFdsdWFWZHBibVJ2ZDAxaGMyc0EKWDA1VFUyaGhaR1ZYYVc1a2Iz
ZE5ZWE5yQUY5T1UxUnZhMlZ1VjJsdVpHOTNUV0Z6YXdCZlRsTkpiV0ZuWlVOaFkyaGxWMmx1Wkc5
MwpUV0Z6YXdCZlRsTlVaV0Z5VDJabVRXVnVkVmRwYm1SdmQwMWhjMnNBWDA1VFEyRnlZbTl1VjJs
dVpHOTNUV0Z6YXdCZlRsTkpiblpoCmJHbGtWMmx1Wkc5M1RXRnphd0JmVGxOU1pXMXZkR1ZYYVc1
a2IzZE5ZWE5yQUY5T1UxTm9ZWEpsWkZkcGJtUnZkMDFoYzJzQVgwNVQKU1c1b2FXSnBkRTl5WkdW
eWFXNW5WMmx1Wkc5M1RXRnphd0JPVTFOcFpHVlZkR2xzYVhSNVYybHVaRzkzVFdGemF3Qk9VMU50
WVd4cwpWMmx1Wkc5M1RXRnphd0JPVTFWMGFXeHBkSGxYYVc1a2IzZE5ZWE5yQUU1VFJHOWpUVzlr
WVd4WGFXNWtiM2ROWVhOckFHdEZkbVZ1CmRGQmhjbUZ0UzJWNVEyOWtaUUJyUlhabGJuUlFZWEpo
YlV0bGVVMWhZME5vWVhKRGIyUmxjd0JyUlhabGJuUlFZWEpoYlV0bGVVMXYKWkdsbWFXVnljd0Jy
UlhabGJuUlFZWEpoYlV0bGVWVnVhV052WkdWekFHdEZkbVZ1ZEZCaGNtRnRTMlY1WW05aGNtUlVl
WEJsQUhSNQpjR1ZGZG1WdWRFaHZkRXRsZVVsRUFIUjVjR1ZDYjI5c1pXRnVBSFI1Y0dWRGFHRnlB
R3RJVkZSUVRHOWhaRmRwWkhSb0FHdElWRlJRClVHbHdaV3hwYm1sdVowaHBaMmhYWVhSbGNtMWhj
bXNBYTBoVVZGQlFhWEJsYkdsdWFXNW5URzkzVjJGMFpYSnRZWEpyQUd0SVZGUlEKVUhKcGIzSnBk
SGxPZFcxTVpYWmxiSE1BYTBoVVZGQk9kVzFHWVhOMFRHRnVaWE1BYTBoVVZGQk5hVzVwYlhWdFJt
RnpkRXhoYm1WUQpjbWx2Y21sMGVRQnJTRlJVVUVOdmJtNWxZM1JwYjI1RFlXTm9aVkIxY21kbFZH
bHRaVzkxZEFCclNGUlVVRU52Ym01bFkzUnBiMjVECllXTm9aVXhwYldsMFMyVjVRMjkxYm5RQVNG
UlVVRU52Ym01bFkzUnBiMjVEWVdOb1pVeHBiV2wwUzJWNWN3QnJRMFpPZFcxaVpYSlQKU1c1ME9G
UjVjR1VBYTBOR1RuVnRZbVZ5VTBsdWRERTJWSGx3WlFCclEwWk9kVzFpWlhKVFNXNTBNekpVZVhC
bEFHdERSazUxYldKbApjbE5KYm5RMk5GUjVjR1VBYTBOR1RuVnRZbVZ5Um14dllYUXpNbFI1Y0dV
QWEwTkdUblZ0WW1WeVJteHZZWFEyTkZSNWNHVUFhME5HClRuVnRZbVZ5UTJoaGNsUjVjR1VBYTBO
R1RuVnRZbVZ5VTJodmNuUlVlWEJsQUd0RFJrNTFiV0psY2tsdWRGUjVjR1VBYTBOR1RuVnQKWW1W
eVRHOXVaMVI1Y0dVQWEwTkdUblZ0WW1WeVRHOXVaMHh2Ym1kVWVYQmxBR3REUms1MWJXSmxja1pz
YjJGMFZIbHdaUUJyUTBaTwpkVzFpWlhKRWIzVmliR1ZVZVhCbEFHdERSazUxYldKbGNrTkdTVzVr
WlhoVWVYQmxBR3REUms1MWJXSmxjazVUU1c1MFpXZGxjbFI1CmNHVUFhME5HVG5WdFltVnlRMGRH
Ykc5aGRGUjVjR1VBYTBOR1RuVnRZbVZ5VFdGNFZIbHdaUUJEUms1MWJXSmxjbFI1Y0dVQVYwdFQK
WVc1a1ltOTRSWGgwWlc1emFXOXVWSGx3WlZKbFlXUlBibXg1QUZkTFUyRnVaR0p2ZUVWNGRHVnVj
Mmx2YmxSNWNHVlNaV0ZrVjNKcApkR1VBVVZST1gwWk1RVWRmUkU5WFRreFBRVVFBVVZST1gwWk1R
VWRmVTBGT1JFSlBXQUJSVkU1ZlJreEJSMTlJUVZKRUFGRlVUbDlHClRFRkhYMU5CVGtSQ1QxaGZS
VmhGUXdCUlZFNWZSa3hCUjE5VFFVNUVRazlZWDBSUFYwNU1UMEZFQUZGVVRsOUdURUZIWDBGVFUw
VlQKVTAxRlRsUmZUMHNBVVZST1gwWk1RVWRmVlZORlVsOUJVRkJTVDFaRlJBQlJWRTVmUmt4QlIx
OVFVazlEWDFaQlRFbEVYMDFCVTBzQQpVVlJPWDBaTVFVZGZWa0ZNU1VSZlRVRlRTd0JSVkU1ZlJr
eEJSMTlRVWs5RFgwOU9URmxmVFVGVFN3QnhkRzVmWm14aFozTUFRMFpUCmVYTjBaVzFXWlhKemFX
OXVRMmhsWlhSaGFBQkRSbE41YzNSbGJWWmxjbk5wYjI1UWRXMWhBRU5HVTNsemRHVnRWbVZ5YzJs
dmJrcGgKWjNWaGNnQkRSbE41YzNSbGJWWmxjbk5wYjI1UVlXNTBhR1Z5QUVOR1UzbHpkR1Z0Vm1W
eWMybHZibFJwWjJWeUFFTkdVM2x6ZEdWdApWbVZ5YzJsdmJreGxiM0JoY21RQVEwWlRlWE4wWlcx
V1pYSnphVzl1VTI1dmQweGxiM0JoY21RQVEwWlRlWE4wWlcxV1pYSnphVzl1ClFtRnliMnh2QUVO
R1UzbHpkR1Z0Vm1WeWMybHZia3hwYjI0QVEwWlRlWE4wWlcxV1pYSnphVzl1VFc5MWJuUmhhVzVN
YVc5dUFFTkcKVTNsemRHVnRWbVZ5YzJsdmJscHBiZ0JEUmxONWMzUmxiVlpsY25OcGIyNURZV0lB
UTBaVGVYTjBaVzFXWlhKemFXOXVUV0Y0QUVORwpVM2x6ZEdWdFZtVnljMmx2YmtWdFltVmtaR1Zr
VFdsdUFFTkdVM2x6ZEdWdFZtVnljMmx2YmxScGJXSmxjbXhwYm1VQVEwWlRlWE4wClpXMVdaWEp6
YVc5dVMybHlhM2R2YjJRQVEwWlRlWE4wWlcxV1pYSnphVzl1VG05eWRHaHpkR0Z5QUVOR1UzbHpk
R1Z0Vm1WeWMybHYKYmxkcGJHUmpZWFFBUTBaVGVYTjBaVzFXWlhKemFXOXVRWEJsZUFCRFJsTjVj
M1JsYlZabGNuTnBiMjVDWVd0bGNnQkRSbE41YzNSbApiVlpsY25OcGIyNUtZWE53WlhJQVEwWlRl
WE4wWlcxV1pYSnphVzl1UkhWeVlXNW5id0JEUmxONWMzUmxiVlpsY25OcGIyNVVaV3hzCmRYSnBa
R1VBUTBaVGVYTjBaVzFXWlhKemFXOXVTRzl2Wkc5dkFFTkdVM2x6ZEdWdFZtVnljMmx2YmxOMWJt
UmhibU5sQUVOR1UzbHoKZEdWdFZtVnljMmx2YmtWdFltVmtaR1ZrVFdGNEFFTkdVM2x6ZEdWdFZt
VnljMmx2YmdCRVNWTlFRVlJEU0Y5V1RWOVFVa1ZUVTFWUwpSUUJFU1ZOUVFWUkRTRjlOUlUxUFVs
bFRWRUZVVlZOZlVGSkZVMU5WVWtWZlRrOVNUVUZNQUVSSlUxQkJWRU5JWDAxRlRVOVNXVk5VClFW
UlZVMTlRVWtWVFUxVlNSVjlYUVZKT0FFUkpVMUJCVkVOSVgwMUZUVTlTV1ZOVVFWUlZVMTlRVWtW
VFUxVlNSVjlEVWtsVVNVTkIKVEFCclYwWkZVM1JoZEdWQmJHeHZkMlZrQUd0WFJrVlRkR0YwWlVK
c2IyTnJaV1FBYTFkR1JWTjBZWFJsUW5WbVptVnlhVzVuQUd0WApSa1ZUZEdGMFpVVjJZV3gxWVhS
cGJtY0FWMHRQWTJOc2RYTnBiMjVPYjNScFptbGpZWFJwYjI1VWVYQmxRWEJ3YkdsallYUnBiMjVD
ClpXTmhiV1ZXYVhOcFlteGxBRmRMVDJOamJIVnphVzl1VG05MGFXWnBZMkYwYVc5dVZIbHdaVUZ3
Y0d4cFkyRjBhVzl1UW1WallXMWwKVDJOamJIVmtaV1FBVjB0UFkyTnNkWE5wYjI1T2IzUnBabWxq
WVhScGIyNVVlWEJsUVhCd2JHbGpZWFJwYjI1WGFXNWtiM2ROYjJScApabWxqWVhScGIyNXpVM1Jo
Y25SbFpBQlhTMDlqWTJ4MWMybHZiazV2ZEdsbWFXTmhkR2x2YmxSNWNHVkJjSEJzYVdOaGRHbHZi
bGRwCmJtUnZkMDF2WkdsbWFXTmhkR2x2Ym5OVGRHOXdjR1ZrQUZkTFQyTmpiSFZ6YVc5dVRtOTBh
V1pwWTJGMGFXOXVWSGx3WlZkcGJtUnYKZDBKbFkyRnRaVlpwYzJsaWJHVUFWMHRQWTJOc2RYTnBi
MjVPYjNScFptbGpZWFJwYjI1VWVYQmxWMmx1Wkc5M1FtVmpZVzFsVDJOagpiSFZrWldRQWEwTkhV
ME52Ym01bFkzUnBiMjVYYVc1a2IzZHpRbVZqWVcxbFZtbHphV0pzWlFCclEwZFRRMjl1Ym1WamRH
bHZibGRwCmJtUnZkM05DWldOaGJXVlBZMk5zZFdSbFpBQnJRMGRUUTI5dWJtVmpkR2x2YmxkcGJt
UnZkMDF2WkdsbWFXTmhkR2x2Ym5OVGRHRnkKZEdWa0FHdERSMU5EYjI1dVpXTjBhVzl1VjJsdVpH
OTNUVzlrYVdacFkyRjBhVzl1YzFOMGIzQndaV1FBYTBOSFUxZHBibVJ2ZDBKbApZMkZ0WlZacGMy
bGliR1VBYTBOSFUxZHBibVJ2ZDBKbFkyRnRaVTlqWTJ4MVpHVmtBR3REYjNKbFEzVnljMjl5Um1s
eWMzUkRkWEp6CmIzSUFhME52Y21WRGRYSnpiM0pCY25KdmR3QnJRMjl5WlVOMWNuTnZja2xDWldG
dEFHdERiM0psUTNWeWMyOXlUV0ZyWlVGc2FXRnoKQUd0RGIzSmxRM1Z5YzI5eVRtOTBRV3hzYjNk
bFpBQnJRMjl5WlVOMWNuTnZja0oxYzNsQ2RYUkRiR2xqYTJGaWJHVUFhME52Y21WRApkWEp6YjNK
RGIzQjVBR3REYjNKbFEzVnljMjl5VTJOeVpXVnVVMmh2ZEZObGJHVmpkR2x2YmdCclEyOXlaVU4x
Y25OdmNsTmpjbVZsCmJsTm9iM1JUWld4bFkzUnBiMjVVYjBOc2FYQUFhME52Y21WRGRYSnpiM0pU
WTNKbFpXNVRhRzkwVjJsdVpHOTNBR3REYjNKbFEzVnkKYzI5eVUyTnlaV1Z1VTJodmRGZHBibVJ2
ZDFSdlEyeHBjQUJyUTI5eVpVTjFjbk52Y2tOc2IzTmxaRWhoYm1RQWEwTnZjbVZEZFhKegpiM0pQ
Y0dWdVNHRnVaQUJyUTI5eVpVTjFjbk52Y2xCdmFXNTBhVzVuU0dGdVpBQnJRMjl5WlVOMWNuTnZj
a052ZFc1MGFXNW5WWEJJCllXNWtBR3REYjNKbFEzVnljMjl5UTI5MWJuUnBibWRFYjNkdVNHRnVa
QUJyUTI5eVpVTjFjbk52Y2tOdmRXNTBhVzVuVlhCQmJtUkUKYjNkdVNHRnVaQUJyUTI5eVpVTjFj
bk52Y2xKbGMybDZaVXhsWm5RQWEwTnZjbVZEZFhKemIzSlNaWE5wZW1WU2FXZG9kQUJyUTI5eQpa
VU4xY25OdmNsSmxjMmw2WlV4bFpuUlNhV2RvZEFCclEyOXlaVU4xY25OdmNrTnliM056QUd0RGIz
SmxRM1Z5YzI5eVVtVnphWHBsClZYQUFhME52Y21WRGRYSnpiM0pTWlhOcGVtVkViM2R1QUd0RGIz
SmxRM1Z5YzI5eVVtVnphWHBsVlhCRWIzZHVBR3REYjNKbFEzVnkKYzI5eVEyOXVkR1Y0ZEhWaGJF
MWxiblVBYTBOdmNtVkRkWEp6YjNKUWIyOW1BR3REYjNKbFEzVnljMjl5U1VKbFlXMVdaWEowYVdO
aApiQUJyUTI5eVpVTjFjbk52Y2xkcGJtUnZkMUpsYzJsNlpVVmhjM1FBYTBOdmNtVkRkWEp6YjNK
WGFXNWtiM2RTWlhOcGVtVkZZWE4wClYyVnpkQUJyUTI5eVpVTjFjbk52Y2xkcGJtUnZkMUpsYzJs
NlpVNXZjblJvUldGemRBQnJRMjl5WlVOMWNuTnZjbGRwYm1SdmQxSmwKYzJsNlpVNXZjblJvUldG
emRGTnZkWFJvVjJWemRBQnJRMjl5WlVOMWNuTnZjbGRwYm1SdmQxSmxjMmw2WlU1dmNuUm9BR3RE
YjNKbApRM1Z5YzI5eVYybHVaRzkzVW1WemFYcGxUbTl5ZEdoVGIzVjBhQUJyUTI5eVpVTjFjbk52
Y2xkcGJtUnZkMUpsYzJsNlpVNXZjblJvClYyVnpkQUJyUTI5eVpVTjFjbk52Y2xkcGJtUnZkMUps
YzJsNlpVNXZjblJvVjJWemRGTnZkWFJvUldGemRBQnJRMjl5WlVOMWNuTnYKY2xkcGJtUnZkMUps
YzJsNlpWTnZkWFJvUldGemRBQnJRMjl5WlVOMWNuTnZjbGRwYm1SdmQxSmxjMmw2WlZOdmRYUm9B
R3REYjNKbApRM1Z5YzI5eVYybHVaRzkzVW1WemFYcGxVMjkxZEdoWFpYTjBBR3REYjNKbFEzVnlj
Mjl5VjJsdVpHOTNVbVZ6YVhwbFYyVnpkQUJyClEyOXlaVU4xY25OdmNsZHBibVJ2ZDAxdmRtVUFh
ME52Y21WRGRYSnpiM0pJWld4d0FHdERiM0psUTNWeWMyOXlRMlZzYkFCclEyOXkKWlVOMWNuTnZj
bHB2YjIxSmJnQnJRMjl5WlVOMWNuTnZjbHB2YjIxUGRYUUFhME52Y21WRGRYSnpiM0pNWVhOMFEz
VnljMjl5QUU1VApUbTkwUm05MWJtUUFUbE5DWVdOcmFXNW5VM1J2Y21WU1pYUmhhVzVsWkFCT1Uw
SmhZMnRwYm1kVGRHOXlaVTV2Ym5KbGRHRnBibVZrCkFFNVRRbUZqYTJsdVoxTjBiM0psUW5WbVpt
VnlaV1FBY21WemNHOXVjMlVBY0hKdmVIbFZVa3dBYVdSbGJuUnBabWxsY2dCelpYTnoKYVc5dVVI
SnZjR1Z5ZEhsTFpYbHpBSE5sYzNOcGIyNVFjbTl3WlhKMGVWWmhiSFZsY3dCelpYTnphVzl1VUhK
dmNHVnlkR2xsY3dCegpkRzl5WVdkbFUyVnpjMmx2YmdCallXTm9aUUJqYjI5cmFXVlRkRzl5WVdk
bEFHNXpVbVZ4ZFdWemRBQmpabEpsY1hWbGMzUUFYME5HClZWSk1VbVZ4ZFdWemRBQkRSazExZEdG
aWJHVlZVa3hTWlhGMVpYTjBVbVZtQUc1bGQxSmxjWFZsYzNRQVkyWkRZV05vWlFCalprTmgKWTJo
bFpGSmxjM0J2Ym5ObEFGOURSa05oWTJobFpGVlNURkpsYzNCdmJuTmxBRU5HUTJGamFHVmtWVkpN
VW1WemNHOXVjMlZTWldZQQpibk5EWVdOb1pXUlNaWE53YjI1elpRQndiMnhwWTNrQVkyOXZhMmxs
Y3dCdWMwTnZiMnRwWlhNQWRYSnNBRzFoYVc1RWIyTjFiV1Z1CmRGVlNUQUJqWmtOdmIydHBaWE1B
WTI5dmEybGxBRjlqYjI5cmFXVlFjbWwyWVhSbEFFNVRTRlJVVUVOdmIydHBaVWx1ZEdWeWJtRnMK
QUU1VFNGUlVVRU52YjJ0cFpRQk9VMGhVVkZCRGIyOXJhV1ZUZEc5eVlXZGxTVzUwWlhKdVlXd0FU
bE5JVkZSUVEyOXZhMmxsVTNSdgpjbUZuWlFCc2IyTmhiR2w2WVhScGIyNEFiR0Z1WjNWaFoyVkRi
MlJsQUhKbFoybHZia052WkdVQWMyTnlhWEIwUTI5a1pRQnpkSEpwCmJtZEZibU52WkdsdVp3QjBl
WEJsQUdWNGRHVnVjMmx2YmdCalpsSmxjM0J2Ym5ObEFGOURSbFZTVEZKbGMzQnZibk5sQUVOR1ZW
Sk0KVW1WemNHOXVjMlZTWldZQVkyWklWRlJRVFdWemMyRm5aUUIwY25WemRGSmxjM1ZzZEZSNWNH
VUFVMlZqVkhKMWMzUlNaWE4xYkhSVQplWEJsQUhKbGMzVnNkQUJqYjNWdWRBQmpaWEowYVdacFky
RjBaVU5vWVdsdUFIUnlkWE4wQUY5ZlUyVmpWSEoxYzNRQVUyVmpWSEoxCmMzUlNaV1lBYVFCalpY
SjBhV1pwWTJGMFpRQlBjR0Z4ZFdWVFpXTkRaWEowYVdacFkyRjBaVkpsWmdCVFpXTkRaWEowYVda
cFkyRjAKWlZKbFpnQndaV1Z5UTJWeWRFTm9ZV2x1QUhOamNtbHdkQUJ5WldkcGIyNEFaVzVqYjJS
cGJtY0FWR1Y0ZEVWdVkyOWthVzVuQUdSdgpiblJqWVhKbEFFbDBaVzFEYjNWdWRBQmxjbklBVTBs
dWRERTJBRTlUUlhKeUFHOVRZM0pwY0hSV1lXeDFaUUJ2VW1WbmFXOXVWbUZzCmRXVUFWVkpNVTNS
eWFXNW5BSEpsWm1WeWNtVnlBSEJoZEdnQWFYUmxiUUJmWDAxRVNYUmxiUUJOUkVsMFpXMVNaV1lB
ZDJobGNtVkcKY205dFFYUjBjbWxpZFhSbEFHTjFjbkpsYm5SRVlYUmxBR1JoZEdWQmRIUnlhV0ox
ZEdVQVkyOXVibVZqZEdsdmJnQk9VMVZTVEVOdgpibTVsWTNScGIyNUpiblJsY201aGJBQk9VMVZT
VEVOdmJtNWxZM1JwYjI0QVpHVm1aWEp6QUdOdmJuUmxlSFJKUkFCclpYa0FjbVZ4CmRXVnpkQUJP
VTAxMWRHRmliR1ZWVWt4U1pYRjFaWE4wQUhOb2IzVnNaRU52Ym5SbGJuUlRibWxtWmdCT1UxZHBi
bVJ2ZDE5cGMwdGwKZVZkcGJtUnZkMDFsZEdodlpBQnZZbXBqWDIxbGRHaHZaQUJOWlhSb2IyUUFZ
blYwZEc5dUFGOWpiMjUwWlc1MGN3QmZZMFpzWVdkegpBSE4wWVhSbEFHaHBaMmhzYVdkb2RHVmtB
R1JwYzJGaWJHVmtBR1ZrYVhSaFlteGxBRTVUUTJWc2JGUjVjR1VBZGtObGJuUmxjbVZrCkFHaERa
VzUwWlhKbFpBQmliM0prWlhKbFpBQmlaWHBsYkdWa0FITmxiR1ZqZEdGaWJHVUFjMk55YjJ4c1lX
SnNaUUJqYjI1MGFXNTEKYjNWekFHRmpkRTl1VFc5MWMyVkViM2R1QUdselRHVmhaZ0JwYm5aaGJH
bGtUMkpxWldOMFZtRnNkV1VBYVc1MllXeHBaRVp2Ym5RQQpiR2x1WlVKeVpXRnJUVzlrWlFCT1Uw
eHBibVZDY21WaGEwMXZaR1VBWTJWc2JGSmxjMlZ5ZG1Wa01RQmhiR3h2ZDNOQmNIQmxZWEpoCmJt
TmxSV1ptWldOMGN3QnphVzVuYkdWTWFXNWxUVzlrWlFCaFkzUlBiazF2ZFhObFJISmhaMmRsWkFC
cGMweHZZV1JsWkFCMGNuVnUKWTJGMFpVeGhjM1JNYVc1bEFHUnZiblJCWTNSUGJrMXZkWE5sVlhB
QWFYTlhhR2wwWlFCMWMyVlZjMlZ5UzJWNVJYRjFhWFpoYkdWdQpkQUJ6YUc5M2MwWnBjbk4wVW1W
emNHOXVaR1Z5QUdadlkzVnpVbWx1WjFSNWNHVUFkMkZ6VTJWc1pXTjBZV0pzWlFCb1lYTkpiblpo
CmJHbGtUMkpxWldOMEFHRnNiRzkzYzBWa2FYUnBibWRVWlhoMFFYUjBjbWxpZFhSbGN3QnBiWEJ2
Y25SelIzSmhjR2hwWTNNQVlXeHAKWjI1dFpXNTBBRTVUVkdWNGRFRnNhV2R1YldWdWRBQnNZWGx2
ZFhSRWFYSmxZM1JwYjI1U1ZFd0FZbUZqYTJkeWIzVnVaRk4wZVd4bApBR05sYkd4U1pYTmxjblps
WkRJQWNtVm1kWE5sYzBacGNuTjBVbVZ6Y0c5dVpHVnlBRzVsWldSelNHbG5hR3hwWjJoMFpXUlVa
WGgwCkFHUnZiblJCYkd4dmQzTlZibVJ2QUdOMWNuSmxiblJzZVVWa2FYUnBibWNBWVd4c2IzZHpU
V2w0WldSVGRHRjBaUUJwYmsxcGVHVmsKVTNSaGRHVUFjMlZ1WkhOQlkzUnBiMjVQYmtWdVpFVmth
WFJwYm1jQWFXNVRaVzVrUVdOMGFXOXVBR052Ym5SeWIyeFVhVzUwQUdOdgpiblJ5YjJ4VGFYcGxB
R0p5WVc1amFFbHRZV2RsUkdsellXSnNaV1FBWkhKaGQybHVaMGx1VW1WMlpXRnNiM1psY2dCdVpX
VmtjMGhwCloyaHNhV2RvZEdWa1ZHVjRkRWhwYm5RQVgxOURSbXhoWjNNQVgwTkdiR0ZuY3dCZmMz
VndjRzl5ZEFCT1UwTmxiR3dBWDNSaFp3QmYKWVdOMGFXOXVBRzlpYW1OZmMyVnNaV04wYjNJQVUw
Vk1BRjlqYjI1MGNtOXNWbWxsZHdCT1UwRmpkR2x2YmtObGJHd0FYMkZzZEVOdgpiblJsYm5SekFG
OXpiM1Z1WkFCZmEyVjVSWEYxYVhaaGJHVnVkQUJmWW1OR2JHRm5jeklBWW1WNlpXeFRkSGxzWlFC
emFHOTNjMEp2CmNtUmxjazl1YkhsWGFHbHNaVTF2ZFhObFNXNXphV1JsQUcxdmRYTmxTVzV6YVdS
bEFHSmxlbVZzVTNSNWJHVXlBR2x0WVdkbFUyTmgKYkdsdVp3QnJaWGxGY1hWcGRtRnNaVzUwVFc5
a2FXWnBaWEpOWVhOckFGOWZRa05HYkdGbmN6SUFYMEpEUm14aFozTXlBRjl3WlhKcApiMlJwWTBS
bGJHRjVBRjl3WlhKcGIyUnBZMGx1ZEdWeWRtRnNBRjlpWTBac1lXZHpBR2x6UkhKaGQybHVaMFp2
WTNWekFIVnpaVUoxCmRIUnZia2x0WVdkbFUyOTFjbU5sQUdoaGMxUnBkR3hsVkdWNGRFWnBaV3hr
QUdselJISmhkMmx1WjBScGMyTnNiM04xY21VQWMzVncKY0hKbGMzTkJXRlpoYkhWbFEyaGhibWRs
VG05MFpRQmtiMlZ6VG05MFJHbHRTVzFoWjJVQWFXNXpaWFFBZEhKaGJuTndZWEpsYm5RQQphVzVK
Ym5SbGNtMWxaR2xoZEdWRWFYTmpiRzl6ZFhKbEFHaGhjMHRsZVVWeGRXbDJZV3hsYm5SSmJuTjBa
V0ZrVDJaSmJXRm5aUUJwCmJXRm5aVk5wZW1WRWFXWm1BR2x0WVdkbFFXNWtWR1Y0ZEFCaWIzUjBi
MjFQY2t4bFpuUUFhRzl5YVhwdmJuUmhiQUJwYldGblpVOTIKWlhKc1lYQnpBR1J5WVhkcGJtY0Fi
R2xuYUhSQ2VVZHlZWGtBYkdsbmFIUkNlVUpoWTJ0bmNtOTFibVFBYkdsbmFIUkNlVU52Ym5SbApi
blJ6QUdOb1lXNW5aVWR5WVhrQVkyaGhibWRsUW1GamEyZHliM1Z1WkFCamFHRnVaMlZEYjI1MFpX
NTBjd0J3ZFhOb1NXNEFYMTlDClEwWnNZV2R6QUY5Q1EwWnNZV2R6QUY5dWIzSnRZV3hKYldGblpR
QmZZV3gwWlhKdVlYUmxTVzFoWjJWUGNrdGxlVVZ4ZFdsMllXeGwKYm5SR2IyNTBBRTVUUW5WMGRH
OXVRMlZzYkFCb1pXRnlkR0psWVhSQmNtZDFiV1Z1ZEhNQVgyTjFjbkpsYm5SRVlYUmxBRjlpYVhK
MAphRVJoZEdVQVgyeGhjM1JFWVhSbEFGOXphMmx3Y0dWa0FFNVRTR1ZoY25SQ1pXRjBRMnhwWlc1
MFFYSm5jd0J3YjNOMEFHSjVkR1Z6CkFHeGxiZ0JmWDJSaGNuZHBibDl6YVhwbFgzUUFjMmw2WlY5
MEFIUmxlSFJOWVhKclpYSUFaWGh3WldOMFpXUk1aVzVuZEdnQWNtVm0KQUY5ZlFWaFVaWGgwVFdG
eWEyVnlBRUZZVkdWNGRFMWhjbXRsY2xKbFpnQnpkR0Z5ZEFCbGJtUUFjbUZ1WjJVQVpXeGxiV1Z1
ZEFCMQpjMlZ5VEc5allXeGxBRTVUVEc5allXeGxBSFp2YVdObFIzSnZkWEJ6QUdGc2JGWnZhV05s
Y3dCMmIybGpaWE1BY21WdGIzUmxWVWxGCmJHVnRaVzUwUTJ4aGMzTUFjbVZ0YjNSbFQySnFaV04w
QUhKbGJXOTBaVVZzWlcxbGJuUUFjbVZ0YjNSbFYybHVaRzkzQUhKbFoybHoKZEdWeVVISnZZMlZ6
Y3dCd2FXUUFjM1J5WldGdEFHVnljbTl5QUdSdmJXRnBiZ0JEUmxOMGNtVmhiVVZ5Y205eUFHWnZj
bTFEY21WaApkR1VBWm05eWJVWnBibUZzYVhwbEFHWnZjbTFQY0dWdUFHWnZjbTFTWldGa0FHWnZj
bTFEWVc1U1pXRmtBR1p2Y20xRGJHOXpaUUJtCmIzSnRVMk5vWldSMWJHVUFYMTlEUmxKMWJreHZi
M0FBUTBaU2RXNU1iMjl3VW1WbUFHWnZjbTFWYm5OamFHVmtkV3hsQUdOaGJHeEMKWVdOcmN3QjJa
WEp6YVc5dUFHTnlaV0YwWlFCbWFXNWhiR2w2WlFCamIzQjVSR1Z6WTNKcGNIUnBiMjRBYjNCbGJn
QnZjR1Z1UTI5dApjR3hsZEdWa0FISmxZV1FBWjJWMFFuVm1abVZ5QUdOaGJsSmxZV1FBWTJ4dmMy
VUFZMjl3ZVZCeWIzQmxjblI1QUhObGRGQnliM0JsCmNuUjVBSEpsY1hWbGMzUkZkbVZ1ZEhNQWMy
Tm9aV1IxYkdVQWRXNXpZMmhsWkhWc1pRQkRSbEpsWVdSVGRISmxZVzFEWVd4c1FtRmoKYTNOV01R
QlhTMUpsWVdSVGRISmxZVzFEWVd4c1FtRmphM01BWTI5c2IzSUFjbUZrYVhWekFHWnZZM1Z6VW1s
dVoxTjBlV3hsQUhScApiblFBYjNKa1pYSnBibWNBZEdoeVpYTm9iMnhrQUdGalkzVnRkV3hoZEdV
QVEwZEdiMk4xYzFKcGJtZFRkSGxzWlFCaVlYTmxUV0YwCmNtbDRBR1JsZEdWeWJXbHVZVzUwQUVO
SFUzUjViR1VBUTBkVGRIbHNaVkpsWmdCbmNtRndhR2wwWlFCcGJXRm5aUUJwYldGblpWSmwKWTNR
QWFXMWhaMlZUY0dWakFIQnBlR1ZzYzFkcFpHVUFjR2w0Wld4elNHbG5hQUJpYVhSelVHVnlVMkZ0
Y0d4bEFITmhiWEJzWlhOUQpaWEpRYVhobGJBQmlhWFJ6VUdWeVVHbDRaV3dBWW5sMFpYTlFaWEpT
YjNjQWFYTlFiR0Z1WVhJQWFHRnpRV3h3YUdFQVpHRjBZUUJECmIzSmxSSEpoWjBsdFlXZGxVM0Js
WXdCcGJXRm5aVk5vWVhCbEFFTkhVMUpsWjJsdmJrOWlhbVZqZEFCRFIxTlNaV2RwYjI1UFltb0EK
Wm14cGNFbHRZV2RsQUdKcGRHMWhjRWx0WVdkbEFGOXlaWEJHYkdGbmN3QmpZV05vWlZCaGNtRnRj
ME52YlhCMWRHVmtBR05oWTJobApRV3h3YUdGRGIyMXdkWFJsWkFCc2IyRmtVM1JoZEdVQWEyVmxj
RU5oWTJobFYybHVaRzkzQUdkellYWmxaQUJmWDNKbGNFWnNZV2R6CkFGOWpiMnh2Y2xOd1lXTmxU
bUZ0WlFCZmNHbDRaV3h6VjJsa1pRQmZjR2w0Wld4elNHbG5hQUJPVTBsdFlXZGxVbVZ3QUY5dGIz
SmwKVW1Wd1JteGhaM01BWlhod2JHbGphWFJRYkdGdVpYTUFhVzFoWjJWVGIzVnlZMlZKYzBsdVpH
VjRaV1FBWkdGMFlVeHZZV1JsWkFCagpiMnh2Y2sxdlpHVnNBSFJwWlhKVWQyOUpibVp2U1hOTWIy
RmtaV1FBY21WemNHVmpkRThBWTI5dGNISmxjM05wYjI1R1lXTjBiM0lBCmFXMWhaMlZPZFcxaVpY
SUFZbWwwYldGd1JtOXliV0YwQUdOblNXMWhaMlZKYzFCeWFXMWhjbmtBWTI5dGNISmxjM05wYjI0
QVgxOWkKYVhSdFlYQlNaWEJHYkdGbmN3QmZZbmwwWlhOUVpYSlNiM2NBWDJSaGRHRlBZbW9BWDNS
cFptWkVZWFJoQUY5d2NtOXdaWEowYVdWegpBRTVUUW1sMGJXRndTVzFoWjJWU1pYQUFiMlptYzJW
MEFHbHRZV2RsVTJsNlpRQnBiV0ZuWlU5bVpuTmxkQUIwWlcxd1VtOTNBSEFBCmRHOXdVbTkzQUdK
dmRGSnZkd0J5WldOMEFHVnVZV0pzWldRQVkyVnNiQUJmZEdWNGRFTnZiRzl5QUY5MFprWnNZV2R6
QUdSeVlYZHoKUW1GamEyZHliM1Z1WkFCMGFHTlRiM0owUkdseVpXTjBhVzl1QUhSb1kxTnZjblJR
Y21sdmNtbDBlUUJ0YVc1cEFIUmxlSFJEYjJ4dgpja2xuYm05eVpYTk9iM0p0WVd4RWFYTmhZbXhs
Um14aFp3QjBaWGgwUTI5c2IzSkVhWE5oWW14bFJteGhad0IwYUdOR2IzSmpaVWhwCloyaHNhV2Rv
ZEVadmNsTnZjblFBYVc1MllXeHBaRlJsZUhSRGIyeHZjZ0J1YjNScFptbGpZWFJwYjI1R2IzSk5Z
WEpyWldSVVpYaDAKQUdsdVZHOXZiR0poY2dCb1lYTlVaWGgwVEdGNVpYSUFhWE5DZFhSMGIyNVVh
WFJzWlFCeVpYTmxjblpsWkZSbGVIUkdhV1ZzWkVObApiR3dBWDE5MFprWnNZV2R6QUU1VFZHVjRk
RVpwWld4a1EyVnNiQUJ0Wlc1MUFGOXpkWEJsY20xbGJuVUFYM1JwZEd4bEFGOXBkR1Z0ClFYSnlZ
WGtBWDJWNGRISmhBRjl0Um14aFozTUFibTlCZFhSdlpXNWhZbXhsQUdsdVRXRnBiZ0JwYm5SbGNt
NWhiRkJsY21admNtMUIKWTNScGIyNEFZMjl1WkdWdWMyVlRaWEJoY21GMGIzSnpBRzkzYm1Wa1Fu
bFFiM0JWY0FCa1pXeGxaMkYwWlU1bFpXUnpWWEJrWVhSbApBR1JsYkdWbllYUmxWWEJrWVhSbFNY
UmxiUUJrWld4bFoyRjBaVWhoYzB0bGVVVnhkV2wyQUdSbGJHVm5ZWFJsU0dGelFXeDBTMlY1ClJY
RjFhWFlBWlhoamJIVmtaVTFoY210RGIyeDFiVzRBYVhORGIyNTBaWGgwZFdGc1RXVnVkUUJqYlZC
c2RXZHBiazF2WkdVQWFXNTIKWlhKMFpXUkRUVkJzZFdkcGJsUjVjR1Z6QUdGc2JHOTNjMFJwWm1a
bGNtVnVkRk5sYkdWamRHbHZiZ0J1YjFSdmNGQmhaR1JwYm1jQQpibTlDYjNSMGIyMVFZV1JrYVc1
bkFGOWZiVVpzWVdkekFGOTFhV2xrQUU1VFRXVnVkUUIyYVdWM0FITmxiR1ZqZEdWa1NYUmxiUUJt
CmIyNTBBSE5qY21WbGJreHZZMkYwYVc5dUFHTmhjSE5NYjJOclZISmhibk5tYjNKdFZHOURkWEp5
Wlc1MFEyOXVkSEp2YkFCallYQnoKVEc5amExQmhkR2dBUTBkTmRYUmhZbXhsVUdGMGFGSmxaZ0J6
WTJGc1pRQjRUMlptYzJWMEFIbFBabVp6WlhRQVkyRndjMHh2WTJ0VAphWHBsQUVOSFUwNXZkR2xt
YVdOaGRHbHZia1JoZEdFQVpHRjBZVXhsYm1kMGFBQkRSMU5DZVhSbFEyOTFiblFBWVhKbkFFTkhV
MDV2CmRHbG1hV05oZEdsdmJrRnlad0JqWjBadmJuUUFRMGRHYjI1MEFFTkhSbTl1ZEZKbFpnQnRB
R2RzZVhCb0FFRlVVMGRzZVhCb1VtVm0KQUdGa2RtRnVZMlVBUTBkR2IyNTBVbVZ1WkdWeWFXNW5V
M1I1YkdVQWMzUnlhVzVuQUdOb0FHTm5RMjl1ZEdWNGRBQnphRzkxYkdSVApkV0p3YVhobGJGRjFZ
VzUwYVhwbEFHTnZiblJsZUhSVWNtRnVjMlp2Y20wQWNtVnVaR1Z5YVc1blRXOWtaUUJPVTBadmJu
UlNaVzVrClpYSnBibWROYjJSbEFHbHpWSEpoYm5Oc1lYUnBiMjVQY2tsdWRHVm5jbUZzVTJOaGJH
VUFhWE5TYjNSaGRHVmtBR1J2VTNWaWNHbDQKWld4UmRXRnVkR2w2WVhScGIyNEFkbUZzZFdVQWRH
bHNhVzVuQUhOMWNtWmhZMlVBWDE5SlQxTjFjbVpoWTJVQVNVOVRkWEptWVdObApVbVZtQUdKcGRH
MWhjRWx1Wm04QVltbDBjMUJsY2tOdmJYQnZibVZ1ZEFCamRIZ0FkWE5sY2xSdlFtRnpaUUJ3YUdG
elpWQnZhVzUwCkFIQm9ZWE5sQUhRQWRRQm5iSGx3YUhNQVkyaGhjbUZqZEdWeWN3QndjbTkyYVdS
bEFHUnBjM0J2YzJVQWNtVm1RMjl1QUdGa2RtRnUKWTJWekFGZExRMVJHYjI1MFZISmhibk5tYjNK
dFQzQjBhVzl1Y3dCeWRXNEFYMTlEVkZKMWJnQkRWRkoxYmxKbFpnQnpaV3htQUY5agpaM05EYjI1
MFpYaDBBRTVUUTBkVFEyOXVkR1Y0ZEFCZlkyZHpWMmx1Wkc5M1NVUUFRMGRUVjJsdVpHOTNTVVFB
WDJScGMzQnNZWGxRCmIzTjBhVzVuUkdsellXSnNaVU52ZFc1MEFGOW1iSFZ6YUVScGMyRmliR1ZE
YjNWdWRBQmZZWFY0YVd4cFlYSjVBRjlPVTFkcGJtUnYKZDBkeVlYQm9hV056UTI5dWRHVjRkRUYx
ZUFCT1UxZHBibVJ2ZDBkeVlYQm9hV056UTI5dWRHVjRkQUJmWTIxa0FITmhkbVZrUTI5dQpkR1Y0
ZEFCbmNtRndhR2xqYzBOdmJuUmxlSFFBWlhabGJuUUFYM1I1Y0dVQVRsTkZkbVZ1ZEZSNWNHVUFY
Mnh2WTJGMGFXOXVBRjl0CmIyUnBabWxsY2tac1lXZHpBRjlYVTFScGJXVnpkR0Z0Y0FCZmRHbHRa
WE4wWVcxd0FGOTNhVzVrYjNkT2RXMWlaWElBWDJOdmJuUmwKZUhRQVgyUmhkR0VBYlc5MWMyVUFa
WFpsYm5ST2RXMWlaWElBWTJ4cFkydERiM1Z1ZEFCd2NtVnpjM1Z5WlFCa1pXeDBZVmdBWkdWcwpk
R0ZaQUhOMVluUjVjR1VBWW5WMGRHOXVUblZ0WW1WeUFISmxjMlZ5ZG1Wa01nQnJaWGx6QUhWdWJX
OWtTMlY1Y3dCclpYbERiMlJsCkFHbHpRVkpsY0dWaGRBQmxkbVZ1ZEVac1lXZHpBSFJ5WVdOcmFX
NW5BSFJ5WVdOcmFXNW5UblZ0WW1WeUFIVnpaWEpFWVhSaEFITmoKY205c2JGZG9aV1ZzQUdSbGJI
UmhXZ0JoZUdselIyVnpkSFZ5WlFCdGFYTmpSMlZ6ZEhWeVpRQm5aWE4wZFhKbFJXNWtaV1FBY0dW
eQpZMlZ1ZEdGblpRQnRhWE5qQUdSaGRHRXhBR1JoZEdFeUFIUmhZbXhsZEZCdmFXNTBSR0YwWVFC
MFlXSnNaWFJRY205NGFXMXBkSGxFCllYUmhBRjlsZG1WdWRGSmxaZ0JPVTBWMlpXNTBBR0oxYm1S
c1pVbEVBR3hwYm10bFpFOXVRVzVQYkdSbGNsTjVjM1JsYlZSb1lXNEEKZG1WeWMybHZiazUxYldK
bGNreGxjM05VYUdGdUFHMXZkbWxsQUY5emRHRjBaUUJmYldWa2FXRklaV3h3WlhJQVVWUk5iM1pw
WlUxbApaR2xoU0dWc2NHVnlBRjlwYm1sMFpXUldhV0ZKYm1sMFYybDBhRUYwZEhKcFluVjBaWE1B
WDE5RFJrSnZiMnhsWVc0QVEwWkNiMjlzClpXRnVVbVZtQUY5amFHbHNaSEpsYmdCUlZFbHVkbUZz
YVdSaGRHbHZibE5sZEFCZmNtVnpaWEoyWldRMEFGOXlaWE5sY25abFpEVUEKWDNKbGMyVnlkbVZr
TmdCZmNtVnpaWEoyWldRM0FGOXlaWE5sY25abFpEZ0FYM0psYzJWeWRtVmtPUUJmY21WelpYSjJa
V1F4TUFCZgpjbVZ6WlhKMlpXUXhNUUJmY21WelpYSjJaV1F4TWdCZmNtVnpaWEoyWldReE13QmZj
bVZ6WlhKMlpXUXhOQUJmY21WelpYSjJaV1F4Ck5RQlJWRTF2ZG1sbEFISmhibWRsY3dCdFlYZ0Fi
bVI0QUhKaGJtZGxWbUZzZFdVQVRsTldZV3gxWlFCMGFXMWxBSFJwYldWV1lXeDEKWlFCMGFXMWxV
Mk5oYkdVQVpteGhaM01BVVZSVWFXMWxBR1IxY21GMGFXOXVBRkZVVkdsdFpWSmhibWRsQUhKaGJt
ZGxUV0Y0QUY5dApiM1pwWlFCZlptbHNiRU52Ykc5eUFGOWpiMjUwY205c2JHVnlWbWx6YVdKc1pR
QmZjSEpsYzJWeWRtVnpRWE53WldOMFVtRjBhVzhBClgzWnBaWGRHYkdGbmN3QlJWRTF2ZG1sbFZt
bGxkMGx1ZEdWeWJtRnNBRjlrWld4bFoyRjBaVkJ5YjNoNUFGOTFjMlZXYVhOMVlXeEQKYjI1MFpY
aDBBRjl5Wlc1a1pYSmxjbFpwWlhjQVgyMXZkbWxsUTI5dWRISnZiR3hsY2xacFpYY0FVVlJOYjNa
cFpVTnZiblJ5YjJ4cwpaWEpXYVdWM0FGRlVUVzkyYVdWV2FXVjNBSE41Ym1NQWJXOTJhV1ZVZVhC
bEFHTmtBSEYwVFc5MmFXVUFibk5EWVdOb1pRQk9VMVZTClRFTmhZMmhsU1c1MFpYSnVZV3dBVGxO
VlVreERZV05vWlFCaGNIQnNhV05oZEdsdmJrNWhiV1VBYVc1RWNtRjNTVzVtYndCcmFXNWsKQUZS
b1pXMWxWSEpoWTJ0TGFXNWtBRWhKVW1WamRBQnRhVzRBWVhSMGNtbGlkWFJsY3dCVWFHVnRaVlJ5
WVdOclFYUjBjbWxpZFhSbApjd0JsYm1GaWJHVlRkR0YwWlFCVWFHVnRaVlJ5WVdOclJXNWhZbXhs
VTNSaGRHVUFabWxzYkdWeU1RQjBjbUZqYTBsdVptOEFjMk55CmIyeHNZbUZ5QUhacFpYZHphWHBs
QUhCeVpYTnpVM1JoZEdVQVZHaGxiV1ZVY21GamExQnlaWE56VTNSaGRHVUFVMk55YjJ4c1FtRnkK
VkhKaFkydEpibVp2QUhOc2FXUmxjZ0IwYUhWdFlrUnBjZ0JVYUdWdFpWUm9kVzFpUkdseVpXTjBh
Vzl1QUZOc2FXUmxjbFJ5WVdOcgpTVzVtYndCd2NtOW5jbVZ6Y3dCUWNtOW5jbVZ6YzFSeVlXTnJT
VzVtYndCSVNWUm9aVzFsVkhKaFkydEVjbUYzU1c1bWJ3QnBia052CmJuUmxlSFFBYVc1QmNuSnZk
MU4wZVd4bEFHeGhlV1Z5U0c5emRBQkRRVXhoZVdWeVNHOXpkQUJ5Wlc1a1pYSmxjZ0IxY0dSaGRH
VUEKWDBOQlVtVnVaR1Z5VlhCa1lYUmxBRU5CVW1WdVpHVnlWWEJrWVhSbEFITmxjblpsY2xCdmNu
UUFZbXh2WTJzQWFXNTJaWEp6WlZSeQpZVzV6Wm05eWJRQmxiblZ0WlhKaGRHOXlBRU5IVTFKbFoy
bHZia1Z1ZFcxbGNtRjBiM0pQWW1wbFkzUUFRMGRUVW1WbmFXOXVSVzUxCmJXVnlZWFJ2Y2s5aWFn
QnVaWGgwVW1WamRBQnlaV04wVkc5RWNtRjNBRU5CVW1WdVpHVnlaWEpRY21sMkFFTkJVbVZ1WkdW
eVpYSUEKYjJKelpYSjJaWEpEYjI1MFpYaDBBSEpsYm1SbGNsSmxaZ0JEUVZKbGJtUmxjbEpsWmdC
dlltcGxZM1FBYVc1bWJ3QmhkWGhwYkdsaApjbmxmYVc1bWJ3QndkSElBZDJsdVpHOTNUblZ0WW1W
eUFHRlNaV04wQUdGdWFXMWhkR2x2YmxCeWIyZHlaWE56QUc1bGQxUnlZVzV6ClptOXliUUJ6WTJG
c1pVWnlZV04wYVc5dUFHbHVhWFJwWVd4R2NtRnRaUUJwYm1sMGFXRnNWMmxrZEdnQWJXbGtVSFZz
YzJWSVpXbG4KYUhRQWJXbGtVSFZzYzJWWGFXUjBhQUJwYm1sMGFXRnNTR1ZwWjJoMEFHNWxkMFp5
WVcxbEFHTm5UM0pwWjJsdUFHZ0Fkd0J6WTNKbApaVzV6QUdOc2FYQlNaV04wQUhOb1lYQmxBR05u
UTJ4cGNGSmxZM1FBYzNWaWMzbHpkR1Z0QUhObGNuWmxjZ0J0YzJkb1gySnBkSE1BCmJXRmphRjl0
YzJkZlltbDBjMTkwQUcxeloyaGZjMmw2WlFCdVlYUjFjbUZzWDNRQWJXRmphRjl0YzJkZmMybDZa
VjkwQUcxeloyaGYKY21WdGIzUmxYM0J2Y25RQWJYTm5hRjlzYjJOaGJGOXdiM0owQUcxeloyaGZj
bVZ6WlhKMlpXUUFiWE5uYUY5cFpBQnBiblJsWjJWeQpYM1FBYldGamFGOXRjMmRmYVdSZmRBQnRZ
V05vWDIxeloxOW9aV0ZrWlhKZmRBQnRhV2RmYzNSMVlsOXliM1YwYVc1bFgzUUFiV2xuClgzSnZk
WFJwYm1WZmRBQnRhV2RmYzJWeWRtVnlYM0p2ZFhScGJtVmZkQUJ0WVhoemFYcGxBSFZwYm5Sd2RI
SmZkQUIyYlY5dlptWnoKWlhSZmRBQjJiVjloWkdSeVpYTnpYM1FBY205MWRHbHVaUUJwYlhCc1gz
SnZkWFJwYm1VQWEyVnlibDl5WlhSMWNtNWZkQUJ0YVdkZgphVzF3YkY5eWIzVjBhVzVsWDNRQWMz
UjFZbDl5YjNWMGFXNWxBR0Z5WjJNQVpHVnpZM0pmWTI5MWJuUUFZWEpuWDJSbGMyTnlBSEJoClpE
RUFjR0ZrTWdCd1lXUXpBRzFoWTJoZmJYTm5YMlJsYzJOeWFYQjBiM0pmZEhsd1pWOTBBRzFoWTJo
ZmJYTm5YM1I1Y0dWZlpHVnoKWTNKcGNIUnZjbDkwQUhKdmRYUnBibVZmWVhKblgyUmxjMk55YVhC
MGIzSmZkQUJ0WVhoZmNtVndiSGxmYlhObkFISnZkWFJwYm1WZgpaR1Z6WTNKcGNIUnZjZ0J0YVdk
ZmNtOTFkR2x1WlY5a1pYTmpjbWx3ZEc5eUFHMXBaMTl6ZFdKemVYTjBaVzBBYldsblgzTjFZbk41
CmMzUmxiVjkwQUd0bGVVTm9ZWEpEYjNWdWRBQkNlWFJsUTI5MWJuUUFhMlY1UTJoaGNnQmxkbVZ1
ZEZKbFpnQlBjR0Z4ZFdWRmRtVnUKZEZKbFpnQkZkbVZ1ZEZKbFpnQmhibWx0WVhScGIyNEFkR2x0
YVc1blJuVnVZM1JwYjI0QVEwRk5aV1JwWVZScGJXbHVaMFoxYm1OMAphVzl1VUhKcGRtRjBaUUJE
UVUxbFpHbGhWR2x0YVc1blJuVnVZM1JwYjI0QWNtVnRiM1psWkU5dVEyOXRjR3hsZEdsdmJnQkRR
VUZ1CmFXMWhkR2x2YmdCclpYbFFZWFJvQUdGa1pHbDBhWFpsQUdOMWJYVnNZWFJwZG1VQWRtRnNk
V1ZHZFc1amRHbHZiZ0J6WlhST1lXMWwKT2dCZmMzUnlhVzVuQUY5cGJYQnNBRU5CVm1Gc2RXVkdk
VzVqZEdsdmJnQkRRVkJ5YjNCbGNuUjVRVzVwYldGMGFXOXVBR1oxYm1OMAphVzl1QUhCeVpXWmxj
bkpsWkVOdmJtNWxZM1JwYjI1RGIzVnVkQUJEUmxWU1RGSmxjWFZsYzNSU1pXWUFjSEpwYjNKcGRI
a0FRMFpWClVreFNaWEYxWlhOMFVISnBiM0pwZEhrQWJXRjRhVzExYlZCeWFXOXlhWFI1QUhCeWIz
aDVTRzl6ZEFCd2NtOTRlVkJ2Y25RQVgxOUQKUms1MWJXSmxjZ0JEUms1MWJXSmxjbEpsWmdCd2Nt
OTRlVXRsZVhNQWNISnZlSGxXWVd4MVpYTUFZMjl1Ym1WamRFUnBZM1JwYjI1aApjbmtBY0hKdmVI
bEJkWFJvYjNKcGVtRjBhVzl1VTNSeWFXNW5BR2hsWVdSbGNrWnBaV3hrVG1GdFpYTUFhR1ZoWkdW
eVJtbGxiR1JXCllXeDFaWE1BYjNKcFoybHVZV3hEVDA1T1JVTlVSR2xqZEdsdmJtRnllUUJoWkdS
cGRHbHZibUZzU0dWaFpHVnlSbWxsYkdSekFISmwKYzNCdmJuTmxWVkpNQUcxbGMzTmhaMlVBY0hK
dmVIbFZVa3hUZEhKcGJtY0FZV3h3YUdGV1lXeDFaUUJ6WTJGc1pVWnlZVzFsQUc1dgpibE5qWVd4
bFpFWnlZVzFsQUcxbGMyZ0FZMmxrQUhSdmEyVnVUblZzYkFCdlltcGxZM1J6QUc5aWFtVmpkRU52
ZFc1MEFIQnliM1J2ClkyOXNVSEp2Y0dWeWRHbGxjd0JsZUhCbFkzUmxaRU52Ym5SbGJuUk1aVzVu
ZEdnQWJXbHRaVlI1Y0dVQVlYSmphR2wyWlV4cGMzUkIKY25KaGVRQmthV04wYVc5dVlYSjVBSFps
Y25OcGIyNU9kVzFpWlhJQWNtVndjbVZ6Wlc1MFlYUnBiMjRBVTBsdWREWTBBR1Y0Y0dWagpkR1Zr
UTI5dWRHVnVkRXhsYm1kMGFFNTFiV0psY2dCb2IzTjBRWEp5WVhrQWNISnZkR1ZqZEdsdmJsTndZ
V05sQUY5RFJsVlNURkJ5CmIzUmxZM1JwYjI1VGNHRmpaUUJEUmxWU1RGQnliM1JsWTNScGIyNVRj
R0ZqWlZKbFpnQnpkRzl5WVdkbEFGOURSbFZTVEVOeVpXUmwKYm5ScFlXeFRkRzl5WVdkbEFFTkdW
VkpNUTNKbFpHVnVkR2xoYkZOMGIzSmhaMlZTWldZQVkzSmxaR1Z1ZEdsaGJBQkRSbFZTVEVOeQpa
V1JsYm5ScFlXeFNaV1lBWm14aFp3QmliMlI1VUdGeWRITUFWMHRUWVc1a1ltOTRSWGgwWlc1emFX
OXVWSGx3WlFCbGVIUmxibk5wCmIyNVViMnRsYmdCellXNWtZbTk0UlhoMFpXNXphVzl1QUhObGNt
bGhiR2w2WVhScGIyNEFjWFZoY21GdWRHbHVaVkJ5YjNCbGNuUnAKWlhNQVgzRjBibDl3Y205akFI
RjBibDl3Y205algzUUFZblZ1Wkd4bEFHTnZiblJsZUhSVGRISnBibWNBZEdWeWJRQk9VMEYwZEhK
cApZblYwWldSVGRISnBibWNBYzJOeVpXVnVVRzlwYm5RQWNISnZkbWxrWlhKSmJtWnZBR1JwYzNC
c1lYbE9ZVzFsQUdGemMyVjBBRU5OClZHbHRaVlpoYkhWbEFIUnBiV1Z6WTJGc1pRQkRUVlJwYldW
VFkyRnNaUUJEVFZScGJXVkdiR0ZuY3dCbGNHOWphQUJEVFZScGJXVkYKY0c5amFBQkRUVlJwYldV
QWMyVjBSSFZ5WVhScGIyNDZBSEJ5WldabGNuSmxaRkpoZEdVQWMyVjBVSEpsWm1WeWNtVmtVbUYw
WlRvQQpjSEpsWm1WeWNtVmtWbTlzZFcxbEFITmxkRkJ5WldabGNuSmxaRlp2YkhWdFpUb0FjSEps
Wm1WeWNtVmtWSEpoYm5ObWIzSnRBSE5sCmRGQnlaV1psY25KbFpGUnlZVzV6Wm05eWJUb0FibUYw
ZFhKaGJGTnBlbVVBYzJWMFRtRjBkWEpoYkZOcGVtVTZBRjloYzNObGRFbHUKZEdWeWJtRnNBRUZX
UVhOelpYUkpiblJsY201aGJBQkJWa0Z6YzJWMEFITnNiM1FBYldGMGNtbDRBR052Y201bGNsZHBa
SFJvQUdOdgpjbTVsY2tobGFXZG9kQUJtYVd4MFpYSUFhVzVwZEdsaGJGQnZjMmwwYVc5dUFHbHVh
WFJwWVd4V1pXeHZZMmwwZVFCbGJHRndjMlZrClZHbHRaUUJrWld4MFlRQlhTMDlqWTJ4MWMybHZi
azV2ZEdsbWFXTmhkR2x2YmxSNWNHVUFhR0Z1Wkd4bGNnQlhTMDlqWTJ4MWMybHYKYms1dmRHbG1h
V05oZEdsdmJraGhibVJzWlhJQWJXRnBia052Ym01bFkzUnBiMjRBWTJkelZIbHdaUUIzYVc1a2Iz
ZEpSQUJ2ZFhSRApkWEp5Wlc1MFQyTmpiSFZ6YVc5dVUzUmhkR1VBWTNWeWNtVnVkRlpwYzJsaWFX
eDBlVk4wWVhSbEFFTkhSWEp5YjNJQWMzVmpZMlZ6CmN3QndjbTk0ZVZObGRIUnBibWR6QUdodmMz
UUFjR0Z5ZEdsMGFXOXVBSEpsYzNWc2RITkNiRzlqYXdCd1lYSjBhWFJwYjI1ekFHNXoKY21WamRB
QndiMmx1ZEFCeUFHeHZZd0J3YkdGdVpYTUFZMmR5WldOMEFHTnZiblJ5YjJ3QVgyTmxiR3dBWDJO
dmJrWnNZV2R6QUdsbgpibTl5WlUxMWJIUnBRMnhwWTJzQVkyRnNZMU5wZW1VQVpISmhkMmx1WjBG
dVkyVnpkRzl5QUdsaVVtVnpaWEoyWldRQWRYQmtZWFJsClEyVnNiRVp2WTNWekFHRnNiRzkzYzB4
dloybGpZV3hNWVhsdmRYUkVhWEpsWTNScGIyNEFZWE50YkhkcFpIUm9BR2h6Yld4M2FXUjAKYUFC
a2IyNTBWbUZzYVdSaGRHVUFYMTlqYjI1R2JHRm5jd0JPVTBOdmJuUnliMndBWDFkbFlrdHBkRk41
YzNSbGJVbHVkR1Z5Wm1GagpaVjl6WlhSSGNtRndhR2xqYzFCdmNuUTZBRTVUVjJsdVpHOTNSM0po
Y0docFkzTkRiMjUwWlhoMEtGZGxZa3RwZEZONWMzUmxiVWx1CmRHVnlabUZqWlNrQUxnNEFBQUFB
QUFBRkR3QUFBQUFBQUgwUUFBQUFBQUFBbkJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEK
SGc0QUFBQUFBQURzRHdBQUFBQUFBSDBRQUFBQUFBQUFuQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQWJDRUFBQUFBQUFCMgpJUUFBQUFBQUFIc2hBQUFBQUFBQWtDRUFBQUFBQUFDYklRQUFB
QUFBQUtBaEFBQUFBQUFBcUNFQUFBQUFBQUN0SVFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFB
QUNiSlFBQUFBQUFBSjhsQUFBQUFBQUFweVVBQUFBQUFBQ3NKUUFBQUFBQUFMUWxBQUFBQUFBQXVT
VUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUh5a0FBQUFBQUFCSUtRQUFBQUFBQUxJcEFB
QUFBQUFBMFNrQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQ2lrQUFBQUFBQUFSS1FBQUFB
QUFBQm9wQUFBQUFBQUFaaWtBQUFBQUFBQ1RLUUFBQUFBQUFORXBBQUFBCkFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBb3BBQUFBQUFBQWJ5a0FBQUFBQUFDVEtRQUFBQUFBQU5FcEFBQUFBQUFBQUFB
QUFBQUEKQUFBQUFBQUFBQUFBQUc4cEFBQUFBQUFBaENrQUFBQUFBQURSS1FBQUFBQUFBUEFwQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBSTRyQUFBQUFBQUEwU3NBQUFBQUFBRCtLd0FBQUFB
QUFBSXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQwNEFBQUFBQUFBClN6Z0FBQUFBQUFC
cE9BQUFBQUFBQUxRNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1E0QUFBQUFBQUFYamdB
QUFBQUFBQnAKT0FBQUFBQUFBTFE0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNbzZBQUFB
QUFBQTFqb0FBQUFBQUFEdk9nQUFBQUFBQVBNNgpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QURvNkFBQUFBQUFBUVRvQUFBQUFBQUJWT2dBQUFBQUFBRnc2QUFBQUFBQUFnam9BCkFBQUFBQUQv
T2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmxPUUFBQUFBQUFKVTVBQUFBQUFBQXhqa0FB
QUFBQUFDclBBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFENFFBQUFBQUFBQUNWQkFBQUFB
QUFBd0VFQUFBQUFBQURmUVFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQURxUUFBQUFBQUFB
RDVCQUFBQUFBQUFvVUVBQUFBQUFBRGZRUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBRGhR
QUFBQUFBQUFFZEJBQUFBQUFBQW9VRUFBQUFBQUFEZlFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUJ4UVFBQUFBQUEKQUlWQkFBQUFBQUFBMzBFQUFBQUFBQUQrUVFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQkhRUUFBQUFBQUFKVkJBQUFBQUFBQQozMEVBQUFBQUFBRCtRUUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFCQVF3QUFBQUFBQUV4REFBQUFBQUFBWFVNQUFBQUFBQUJoClF3
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUN5UXdBQUFBQUFBTDVEQUFBQUFBQUF6ME1BQUFB
QUFBRFRRd0FBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQjBRd0FBQUFBQUFOcERBQUFBQUFB
QTRVTUFBQUFBQUFEelF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFCSFVBQUFBQUFBQUta
UUFBQUFBQUFBclZBQUFBQUFBQUMwVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQStXUUFB
CkFBQUFBR2RaQUFBQUFBQUF3MWtBQUFBQUFBRGlXUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBcFdRQUFBQUFBQURCWkFBQUEKQUFBQU9Wa0FBQUFBQUFDRldRQUFBQUFBQUtSWkFBQUFBQUFB
NGxrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLVmtBQUFBQQpBQUNPV1FBQUFBQUFBS1Ja
QUFBQUFBQUE0bGtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWpsa0FBQUFBQUFDYVdRQUFB
QUFBCkFPSlpBQUFBQUFBQUFWb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTjFvQUFBQUFB
QUJrV2dBQUFBQUFBQmhiQUFBQUFBQUEKTjFzQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFL
Vm9BQUFBQUFBQjlXZ0FBQUFBQUFQbGFBQUFBQUFBQU4xc0FBQUFBQUFBQQpBQUFBQUFBQUFBQUFB
QUFBQUFBQUlGb0FBQUFBQUFDR1dnQUFBQUFBQVBsYUFBQUFBQUFBTjFzQUFBQUFBQUFBQUFBQUFB
QUFBQUFBCkFBQUFBQUFBelZvQUFBQUFBQUR1V2dBQUFBQUFBRGRiQUFBQUFBQUFWbHNBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQTFWc0EKQUFBQUFBQUNYQUFBQUFBQUFJZGNBQUFBQUFBQXBs
d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBdkZzQUFBQUFBQUREV3dBQQpBQUFBQU14YkFB
QUFBQUFBRzF3QUFBQUFBQUJvWEFBQUFBQUFBS1pjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFMeGJBQUFBCkFBQUFKRndBQUFBQUFBQm9YQUFBQUFBQUFLWmNBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUNSY0FBQUFBQUFBTlZ3QUFBQUEKQUFDbVhBQUFBQUFBQU1WY0FBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBRmhkQUFBQUFBQUFoVjBBQUFBQUFBQTFYZ0FBQUFBQQpBRlJlQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOWRBQUFBQUFBQVJsMEFBQUFBQUFCUFhRQUFBQUFB
QUo1ZEFBQUFBQUFBCkZsNEFBQUFBQUFCVVhnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEv
WFFBQUFBQUFBS2RkQUFBQUFBQUFGbDRBQUFBQUFBQlUKWGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQ25YUUFBQUFBQUFNSmRBQUFBQUFBQVZGNEFBQUFBQUFCelhnQUFBQUFBQUFBQQpBQUFB
QUFBQUFBQUFBQUFBQUFDRVhnQUFBQUFBQUsxZUFBQUFBQUFBNUY0QUFBQUFBQUFEWHdBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFrWHdBQUFBQUFBRXRmQUFBQUFBQUFnbDhBQUFBQUFBQ2hY
d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSUJRQUEKQWdBSW9GVUFBS0JWQUFBQkhUd0FB
RTRMQUFBQUFBQUFTVE1BQUVrekFBQUJSVDRBQUM0T0FBQUFBQUFBSWpNQUFDSXpBQUFCT1Q0QQpB
QjRPQUFBQUFBQUFjVlVBQUhGVkFBQUNtRVlBQU9zWUFBQUFBQUFBQWs0QUFKc2xBQUFBQUFBQVVs
VUFBRkpWQUFBQjdFWUFBTzBhCkFBQUFBQUFBT2xVQUFEcFZBQUFCZFVrQUFHd2hBQUFBQUFBQUFW
VUFBQUZWQUFBQ1VFd0FBRlFrQUFBQUFBQUFlVXdBQUd3a0FBQUEKQUFBQVh6NEFBRjgrQUFBQldF
OEFBRlVtQUFBQUFBQUE0MVFBQU9OVUFBQUJlazhBQUQwbkFBQUFBQUFBZEFjQUFIUUhBQUFCYlZF
QQpBQjhwQUFBQUFBQUFyMVFBQUs5VUFBQUJXRkVBQUFvcEFBQUFBQUFBU0FjQUFFZ0hBQUFCVEZF
QUFBb3BBQUFBQUFBQXF6NEFBS3MrCkFBQUJlMUVBQUc4cEFBQUFBQUFBbFZRQUFKVlVBQUFCQlZV
QUFJNHJBQUFBQUFBQWYxUUFBSDlVQUFBQ01WWUFBTU1zQUFBQUFBQUEKQmxjQUFDTXVBQUFBQUFB
QWRGUUFBSFJVQUFBR25sZ0FBS1F3QUFBQUFBQUE2VzBBQUZwTEFBQUFBQUFBUTI0QUFNUkxBQUFB
QUFBQQpMWDBBQUlaYUFBQUFBQUFBMUgwQUFHcGJBQUFBQUFBQXRuNEFBTzFjQUFBQUFBQUFjVUlB
QUhGQ0FBQUJpbG9BQUhReUFBQUFBQUFBCk9sUUFBRHBVQUFBQ1JHRUFBSDA1QUFBQUFBQUFwbWdB
QVAxREFBQUFBQUFBTTFRQUFETlVBQUFDWm1FQUFJTTVBQUFBQUFBQXZtZ0EKQUJwRUFBQUFBQUFB
VEZRQUFFeFVBQUFCeW1FQUFJazVBQUFBQUFBQVZWUUFBRlZVQUFBQzdHRUFBSTQ1QUFBQUFBQUEx
bWdBQUN0RQpBQUFBQUFBQW8xTUFBS05UQUFBR0ttSUFBTW82QUFBQUFBQUFJR2dBQUVCREFBQUFB
QUFBUEdnQUFHWkRBQUFBQUFBQWNXZ0FBTEpECkFBQUFBQUFBaldnQUFPRkRBQUFBQUFBQUJta0FB
R1pFQUFBQUFBQUErMU1BQVB0VEFBQUJEbUlBQURvNkFBQUFBQUFBcUFNQUFLZ0QKQUFBR3dHWUFB
UGhBQUFBQUFBQUFobndBQUQ1WkFBQUFBQUFBSDMwQUFEZGFBQUFBQUFBQUhuNEFBTlZiQUFBQUFB
QUFBSDhBQUZoZApBQUFBQUFBQWxuOEFBSVJlQUFBQUFBQUF1bE1BQUxwVEFBQUJyR1lBQU9wQUFB
QUFBQUFBSHdjQUFCOEhBQUFCb0dZQUFPRkFBQUFBCkFBQUF3ek1BQU1NekFBQUI4bVlBQUhGQkFB
QUFBQUFBQWdjQUFBSUhBQUFEVzJjQUFCTkNBQUFBQUFBQTMyY0FBTU5DQUFBQUFBQUEKSG1rQUFJ
aEVBQUFBQUFBQXNWTUFBTEZUQUFBQytHY0FBQUpEQUFBQUFBQUFWV2dBQUhSREFBQUFBQUFBcWxN
QUFLcFRBQUFCN21nQQpBRHRFQUFBQUFBQUFWVk1BQUZWVEFBQUYyb0VBQUJKSUFBQUFBQUFBRG9J
QUFHRklBQUFBQUFBQWhZSUFBQUZKQUFBQUFBQUF1WUlBCkFEdEpBQUFBQUFBQTdZSUFBSGRKQUFB
QUFBQUFJVk1BQUNGVEFBQUM4bk1BQUdSUEFBQUFBQUFBcFhRQUFFZFFBQUFBQUFBQXhRWUEKQU1V
R0FBQUQybk1BQUdSUEFBQUFBQUFBbVhRQUFFZFFBQUFBQUFBQS9IUUFBUFJRQUFBQUFBQUE3MUlB
QU85U0FBQUI2SFVBQUYxVQpBQUFBQUFBQTMxSUFBTjlTQUFBQngzVUFBRWxVQUFBQUFBQUFaMUlB
QUdkU0FBQUMwSGtBQURKWEFBQUFBQUFBVTNvQUFJWlhBQUFBCkFBQUFTMUlBQUV0U0FBQUJjWHdB
QUNsWkFBQUFBQUFBakFRQUFJd0VBQUFCWlh3QUFDbFpBQUFBQUFBQUMxQUFBQXRRQUFBQmxId0EK
QUk1WkFBQUFBQUFBRDFJQUFBOVNBQUFCQ24wQUFDbGFBQUFBQUFBQVRRUUFBRTBFQUFBQi9ud0FB
Q0JhQUFBQUFBQUFJMUFBQUNOUQpBQUFCVm4wQUFNMWFBQUFBQUFBQTBsRUFBTkpSQUFBQkNYNEFB
THhiQUFBQUFBQUFEUVFBQUEwRUFBQUIvWDBBQUx4YkFBQUFBQUFBClcxQUFBRnRRQUFBQkxINEFB
Q1JjQUFBQUFBQUFiMUVBQUc5UkFBQUI2MzRBQUQ5ZEFBQUFBQUFBYndNQUFHOERBQUFCMzM0QUFE
OWQKQUFBQUFBQUFsRkFBQUpSUUFBQUJEbjhBQUtkZEFBQUFBQUFBbndZQUFKOEdBQUFCVTRBQUFD
UmZBQUFBQUFBQVNGTkJTQUVBQUFDUwpBQUFBSlFFQUFBd0FBQUFBQUFBQUFRQUFBQUVBQmdELy8v
Ly9BQUFBQUFJQUFBQUVBQUFBQlFBQUFQLy8vLzhHQUFBQUJ3QUFBQWtBCkFBQU1BQUFBRUFBQUFC
RUFBQUFTQUFBQUZ3QUFBQmtBQUFBY0FBQUFJQUFBQUNFQUFBQWtBQUFBS0FBQUFQLy8vLzhwQUFB
QUtnQUEKQUN3QUFBRC8vLy8vLy8vLy95NEFBQUF3QUFBQU1RQUFBRFFBQUFBM0FBQUFPZ0FBQVAv
Ly8vODdBQUFBUEFBQUFEMEFBQUEvQUFBQQpRd0FBQUVVQUFBRC8vLy8vU0FBQUFQLy8vLzlKQUFB
QVN3QUFBRTRBQUFCUEFBQUFVUUFBQUZVQUFBQlpBQUFBLy8vLy8xc0FBQUJlCkFBQUFZUUFBQUdN
QUFBQmtBQUFBLy8vLy8yVUFBQUJtQUFBQVp3QUFBR2dBQUFCcUFBQUFiUUFBQUc0QUFBQnZBQUFB
Y0FBQUFISUEKQUFCekFBQUFkQUFBQUhnQUFBRC8vLy8vZXdBQUFId0FBQUNBQUFBQS8vLy8vNElB
QUFDREFBQUFoQUFBQUlVQUFBQ0lBQUFBaVFBQQpBSXNBQUFDT0FBQUFrQUFBQUpFQUFBQ1ZBQUFB
bUFBQUFLQUFBQUNpQUFBQXBBQUFBS1lBQUFDbkFBQUFxQUFBQUt3QUFBQ3VBQUFBCnJ3QUFBTEFB
QUFDekFBQUF0UUFBQUxjQUFBQzdBQUFBdmdBQUFNRUFBQURDQUFBQXhBQUFBTWNBQUFESUFBQUEv
Ly8vLzhvQUFBRE0KQUFBQXp3QUFBTkVBQUFEVkFBQUEyUUFBQU40QUFBRGdBQUFBNUFBQUFPWUFB
QURuQUFBQTZnQUFBUC8vLy8vckFBQUE3UUFBQVBBQQpBQUQvLy8vLzlRQUFBUGtBQUFENkFBQUEv
QUFBQVA0QUFBRC9BQUFBQWdFQUFQLy8vLzhEQVFBQUJnRUFBQWtCQUFBTEFRQUFEZ0VBCkFCQUJB
QUFTQVFBQUZBRUFBQmNCQUFBWUFRQUFHUUVBQUIwQkFBQWZBUUFBSWdFQUFHZkpNRzN6Qnh6elNM
MjEzS0RuS3o0bEhzTVYKOWlBZDFxTGYzSGx0aGY2OFJiOHgrSkxEaVdtbXVaeGR2aGlmSEVQM2Fl
eDNXSU1udVJ6emI1UGZ5VlJxYVNsMTkwRUNiN1QvZ0ZFbwoyN0JSSVBnM2ZRaEtzeU1vMlFQWXUz
N01zdmVEYWZIR0JtY3l5QkRHcWRMVTArUk55Wk5Wb2RWSEhJL3NNc05WODd2VEltT25TNXVMCnZr
MWh6cXhheFlCWmhaUzM0YnZxc0JSVEVoK1I4NlEvcHRzalY0VFJjMmVKWDF3eWxiY3VWMkpEWVdO
TTk4TlFOV0JhR1YwRkFEb1QKbmJFWDBDd0lCRUtlN3VYME40TGV6SmR4SlV0OVJXa0VOMTFza3Bm
SW91cmhNTGRmK0lxSVFVUVhqUkEwL2VCcE5uQlg3d28xdXQzTApOWWVYLzVJa3F2S2VrUkFTUEFx
eVJaclVjUGNWMHZSeWwxYWlyTm9SQkZxS3dadWkva21vTld3QUhzY0NIVWVIc0RrWnQ4dHcxU1JE
CjA2UmdXL09lNGhJRGxyeFJoOVErZmZSYnJWNjdQOG9DWHR2RGVIZFFWb1JiZEdmWGtrc25BMTdi
dzdXQkw0L0YyTkJMSEdyRVNzQ2kKU1dJSUhTbUtkdEdISFhLUDJPdzdxT0NDZTh4UmZRMHVocEFl
S1ZQVFBuUXpuZVdxZCtXUVNXcGFaaTliMHhzUEU0NGFzZ3Y4NDNNcgo0NWtvbktQd2NEMGlRdHJv
M21LYzRPWWhsNEphNmk2d08vOEZmUER3VVRDUHd1Qnk5Wm1NTlZyWTFueXlSeHBWTy9mNE5saHR5
NUJoCnBYQllOR0xxczBnUUJrZ2R0SE1mY3pZNEZ1SG5va1V6ay9QYkdyR2VlR252MENCZzd0TlhQ
NkFTcThTMjAzQzUzWDBOT3V6a1htWmwKdGFyTXRVQ2pMbDMrSGlVVWZ5OElmWE1WQnM5SENqdk1G
YWQ3N0VHZUFiQXFrYUhCZ0ZzUVc5NHhadWFoeUNNNTF0NU1PYXVBa0tHdApxR1FQNkRnUG5udzBN
WDdSaGhUd0Q1NkFVNXY2aVZrTUVDSkQ5cVRiNjRCYlRiL0ZXZ25MamJ4WHZ4SHcwZ3Q2MzZrK0hr
Z0IxdVp1CnJQVVc1T3cxZjg3a1lvNnhGSnlCSng2NS95SXFnbGNZb0UxTVI3SHJmWVRKTDdFbkJD
R2pSaVVjRno2VzFFNFRUYk5TZFlsMFZ4Q3UKVndJYjNVSGVyeGpWYnNISlRrNkkyYTR1VVRTUHR1
cHpaNWZRclNMVWdkRk1VcjQwMnIya2tzSzloN0ZqTW9MRlVXdU1GQmQ1S3JvSwp6RU0rSWlsdVI5
cFhkcGVwNElISWptaHBBeFpZcnVpM28ySEJiYjFtRGhFNWMxUXVCYm5jSjM0dmxSTnlkOVZ0UUsx
d1ExS0RxSENFCnhJL2tWWFpHTHJEYkMvVlpuTmVoU0U1WjhPY2JyTDZZektrb3VzZ0ExTkhlcHp1
NzNxMjNqa256RFcvcjYvMkFGWWZVN0NFUHdMMHQKZUZMUXVENGlERnl0S1BBZlFmRUxKZlh4QzAv
cWZJODhhSUpVNWZZVXZBWFJnQURUeEUyZ3Y1NGovUlQxOGsxanBlRWpVUUxOSWVJYQp4ZjN3ek1E
MTdKS3lUdndpckIwaHpVRm81NW9mU1RZY0NjaHJaYTdpWXc4SUlpNGJ4dXo3UDRqdW1CTU8wQXdJ
UUtZSkVmSlBONk55Ck9VRHJnc0lKYXlzaXBpcGVTNHdwWGtwWjNKK3IvUTdMam1wSStMTUx5SGxQ
dUNVRHQ2am9wVmIzYzk0eE5za3Frc2RuUkQzYncwWXgKamhCRlBkdkR6M0o4VzEwK00zVHc3dnEy
RkJTN3BwY0k2V2dSTmJQa2ViMHloSENaRFVIV2k1ZDh3eUdscWQxZXNqZ0VNWnMzVG0xOApXSXZY
ZHBIeGRGaE5nV0FpaXlpWEdBSjFaRXZpTmhDUFBzRFFqaEVnNG9XVXNBYlFFZ0dyQUtBTmp5U3hS
RnRRVkJaVmFEK0FNNEd4Cnd6aGRpMlZONENJRFZRT0ZrQXNBQUtBTEFBQ3dDd0FBd0FzQUFOQUxB
QURnQ3dBQThBc0FBQUFNQUFBUURBQUFJQXdBQURBTUFBQkEKREFBQVVBd0FBR0FNQUFCd0RBQUFn
QXdBQUpBTUFBQ2dEQUFBc0F3QUFNQU1BQURRREFBQTRBd0FBUFFNQUFBRURRQUFGQTBBQUNRTgpB
QUE0RFFBQVNBMEFBRmdOQUFCOERRQUFqQTBBQUtBTkFBQ3dEUUFBd0EwQUFOQU5BQURnRFFBQThB
MEFBQUFPQUFBUURnQUFJQTRBCkFEQU9BQUJBRGdBQVVBNEFBR0FPQUFCd0RnQUFnQTRBQUpBT0FB
Q2dEZ0FBc0E0QUFNQU9BQURRRGdBQTRBNEFBUEFPQUFBQUR3QUEKRUE4QUFDQVBBQUF3RHdBQVFB
OEFBRlFQQUFCa0R3QUFkQThBQUlRUEFBQ1VEd0FBdUE4QUFNZ1BBQURjRHdBQTdBOEFBUHdQQUFB
TQpFQUFBSEJBQUFDd1FBQUE4RUFBQVRCQUFBRndRQUFCc0VBQUFnQkFBQUpBUUFBQ2dFQUFBc0JB
QUFNQVFBQURRRUFBQTRCQUFBUEFRCkFBQUVFUUFBRkJFQUFDUVJBQUEwRVFBQVNCRUFBRmdSQUFC
d0VRQUFnQkVBQUpBUkFBQ2dFUUFBc0JFQUFNQVJBQURRRVFBQTRCRUEKQVBBUkFBQUFFZ0FBRUJJ
QUFDQVNBQUF3RWdBQVFCSUFBRlFTQUFCa0VnQUFkQklBQUlRU0FBQ1VFZ0FBcUJJQUFMZ1NBQURJ
RWdBQQoyQklBQU9nU0FBRDRFZ0FBQ0JNQUFCZ1RBQUFvRXdBQU9CTUFBRWdUQUFCWUV3QUFhQk1B
QUhnVEFBQ0lFd0FBbUJNQUFMQVRBQURBCkV3QUEwQk1BQU9BVEFBRHdFd0FBQUJRQUFCQVVBQUFn
RkFBQU1CUUFBRUFVQUFCUUZBQUFZQlFBQUhBVUFBQ0FGQUFBa0JRQUFMQVUKQUFEQUZBQUEwQlFB
QU9BVUFBRHdGQUFBQUJVQUFCQVZBQUFnRlFBQU1CVUFBRUFWQUFCUUZRQUFZQlVBQUhRVkFBQ0VG
UUFBbEJVQQpBS1FWQUFDMEZRQUF4QlVBQU5RVkFBRGtGUUFBOUJVQUFBUVdBQUFVRmdBQUpCWUFB
RFFXQUFCRUZnQUFXQllBQUdnV0FBQjRGZ0FBCmlCWUFBSmdXQUFDb0ZnQUF1QllBQU1nV0FBRFlG
Z0FBNkJZQUFQZ1dBQUFJRndBQUdCY0FBQ2dYQUFBNEZ3QUFTQmNBQUZnWEFBQm8KRndBQWVCY0FB
SWdYQUFDY0Z3QUFyQmNBQUx3WEFBRE1Gd0FBM0JjQUFQQVhBQUFBR0FBQUVCZ0FBQ0FZQUFBd0dB
QUFRQmdBQUZBWQpBQUJnR0FBQWNCZ0FBSUFZQUFDUUdBQUFvQmdBQUxBWUFBREFHQUFBMEJnQUFP
QVlBQUR3R0FBQUZCa0FBQ1FaQUFBMEdRQUFSQmtBCkFGUVpBQUJrR1FBQWRCa0FBSVFaQUFDVUdR
QUFwQmtBQUxRWkFBREVHUUFBMUJrQUFPUVpBQUQwR1FBQUJCb0FBQlFhQUFBa0dnQUEKTkJvQUFF
UWFBQUJVR2dBQVpCb0FBSFFhQUFDRUdnQUFsQm9BQUtRYUFBQzBHZ0FBeEJvQUFOUWFBQURrR2dB
QTlCb0FBQVFiQUFBVQpHd0FBSkJzQUFEUWJBQUJFR3dBQVdCc0FBSEFiQUFDQUd3QUFrQnNBQUtB
YkFBQ3dHd0FBd0JzQUFOQWJBQURnR3dBQThCc0FBQUFjCkFBQVFIQUFBSUJ3QUFEQWNBQUJBSEFB
QVVCd0FBR0FjQUFCd0hBQUFnQndBQUpBY0FBQzBIQUFBeEJ3QUFOUWNBQURrSEFBQTlCd0EKQUFR
ZEFBQVVIUUFBSkIwQUFEUWRBQUJJSFFBQVdCMEFBR2dkQUFCNEhRQUFpQjBBQUp3ZEFBQ3NIUUFB
dkIwQUFNd2RBQURjSFFBQQo3QjBBQVB3ZEFBQU1IZ0FBSEI0QUFDd2VBQUE4SGdBQVRCNEFBRndl
QUFCc0hnQUFmQjRBQUl3ZUFBQVZOd0FBQVFBQUFHazhBQUFBCkFBQUFZUUlBQUFFQUFBQjlBZ0FB
QUFBQUFBazJBQUFCQUFBQVB6a0FBQUFBQUFCc1R3QUFBUUFBQUhCNUFBQUFBQUFBT0RrQUFBRUEK
QUFDcFFBQUFBQUFBQUxwVEFBQUJBQUFBckdZQUFBQUFBQURFVWdBQUFRQUFBR0NBQUFBQUFBQUFu
RU1BQUFFQUFBREFXd0FBQUFBQQpBRVJOQUFBQkFBQUFoM1VBQUFBQUFBQjBCd0FBQVFBQUFHMVJB
QUFBQUFBQUhUa0FBQUVBQUFCNFFBQUFBQUFBQUswNUFBQUJBQUFBClBrRUFBQUFBQUFEcE9nQUFB
UUFBQUtoREFBQUFBQUFBZ0VNQUFBRUFBQUNUV3dBQUFBQUFBSzVKQUFBQkFBQUFBRzhBQUFBQUFB
RGcKUndBQUFRQUFBR1JwQUFBQUFBQUFVRXdBQUFFQUFBQmVjd0FBQUFBQUFEWk9BQUFCQUFBQURu
Y0FBQUFBQUFDck5RQUFBUUFBQURnNApBQUFBQUFBQW1Vb0FBQUVBQUFCdmNBQUFBQUFBQURBMEFB
QUJBQUFBZGpRQUFBQUFBQUJmUGdBQUFnQUFBRmhQQUFCbnN3QUFBQUFBCkFHOERBQUFCQUFBQTMz
NEFBQUFBQUFBWVZRQUFBUUFBQU9xSEFBQUFBQUFBTEU4QUFBRUFBQUFPZVFBQUFBQUFBQ0ZUQUFB
Q0FBQUEKOG5NQUFLVjBBQUFBQUFBQTRnSUFBQUVBQUFEckFnQUFBQUFBQUljR0FBQUJBQUFBVndZ
QUFBQUFBQUNvQXdBQUJnQUFBTUJtQUFDRwpmQUFBSDMwQUFCNStBQUFBZndBQWxuOEFBQUFBQUFC
ZFZBQUFBUUFBQUNHR0FBQUFBQUFBSTFBQUFBSUFBQUJuZXdBQVZuMEFBQUFBCkFBRGhPUUFBQVFB
QUFKZEJBQUFBQUFBQU5rUUFBQUVBQUFEU1hBQUFBQUFBQUt3NEFBQUJBQUFBUmo4QUFBQUFBQUFU
UmdBQUFRQUEKQUdoaUFBQUFBQUFBMGt3QUFBRUFBQUJSZEFBQUFBQUFBRVpGQUFBQkFBQUFzbDhB
QUFBQUFBQ29SQUFBQVFBQUFOOWRBQUFBQUFBQQpiQVlBQUFFQUFBQkJCZ0FBQUFBQUFJNDVBQUFC
QUFBQUVVRUFBQUFBQUFCaFJ3QUFBUUFBQUtWbEFBQUFBQUFBZGpjQUFBRUFBQUNBClBRQUFBQUFB
QU9kRkFBQUJBQUFBYTJBQUFBQUFBQUJOVFFBQUFRQUFBQXgyQUFBQUFBQUFpem9BQUFFQUFBRGhR
Z0FBQUFBQUFHdFQKQUFBQkFBQUFZWU1BQUFBQUFBQnFOUUFBQVFBQUFBMDNBQUFBQUFBQWxEVUFB
QUVBQUFDM053QUFBQUFBQUNCRUFBQUJBQUFBcFZ3QQpBQUFBQUFDeFNBQUFBUUFBQUROc0FBQUFB
QUFBTGtFQUFBRUFBQUMvVndBQUFBQUFBQ2tDQUFBQkFBQUFPd0lBQUFBQUFBQ2tSd0FBCkFRQUFB
QjluQUFBQUFBQUFrajRBQUFFQUFBQXRVQUFBQUFBQUFHNUxBQUFCQUFBQXduRUFBQUFBQUFDL1N3
QUFBUUFBQUdGeUFBQUEKQUFBQWYwNEFBQUVBQUFDZGR3QUFBQUFBQUF0UUFBQUNBQUFBTlhzQUFK
UjhBQUFBQUFBQVExTUFBQUVBQUFBYmdRQUFBQUFBQVBOQQpBQUFCQUFBQXBWWUFBQUFBQUFEd093
QUFBUUFBQUJ4SUFBQUFBQUFBSkRZQUFBRUFBQUJ3T1FBQUFBQUFBSFJVQUFBR0FBQUFubGdBCkFP
bHRBQUJEYmdBQUxYMEFBTlI5QUFDMmZnQUFBQUFBQU1aUUFBQUJBQUFBc253QUFBQUFBQUIvVkFB
QUFnQUFBREZXQUFBR1Z3QUEKQUFBQUFLZy9BQUFCQUFBQVUxTUFBQUFBQUFDVlZBQUFBUUFBQUFW
VkFBQUFBQUFBa2tZQUFBRUFBQUFoWkFBQUFBQUFBTFZRQUFBQgpBQUFBTlh3QUFBQUFBQUFlQWdB
QUFRQUFBQ1VDQUFBQUFBQUEzRUFBQUFFQUFBRFFWUUFBQUFBQUFPRlBBQUFCQUFBQUNIc0FBQUFB
CkFBQnNUZ0FBQVFBQUFHeDNBQUFBQUFBQURRUUFBQUVBQUFEOWZRQUFBQUFBQUZ0UUFBQUNBQUFB
dFhzQUFDeCtBQUFBQUFBQURnSUEKQUFFQUFBQVBBZ0FBQUFBQUFJODRBQUFCQUFBQUpqOEFBQUFB
QUFCMlFBQUFBUUFBQUtsVUFBQUFBQUFBM2pjQUFBRUFBQUJkUGdBQQpBQUFBQUZwR0FBQUJBQUFB
VVdNQUFBQUFBQUJFT0FBQUFRQUFBTDArQUFBQUFBQUFMak1BQUFFQUFBQVpNd0FBQUFBQUFEcFVB
QUFDCkFBQUFSR0VBQUtab0FBQUFBQUFBd0VZQUFBRUFBQUJTWkFBQUFBQUFBTnhHQUFBQkFBQUFr
MlFBQUFBQUFBQWZQUUFBQVFBQUFNQkwKQUFBQUFBQUFNMVFBQUFJQUFBQm1ZUUFBdm1nQUFBQUFB
QUQwQWdBQUFRQUFBQUVEQUFBQUFBQUF4UVlBQUFNQUFBRGFjd0FBbVhRQQpBUHgwQUFBQUFBQUFX
emNBQUFFQUFBQkRQUUFBQUFBQUFEbEFBQUFCQUFBQVMxUUFBQUFBQUFDeFVRQUFBUUFBQUtOL0FB
QUFBQUFBCmJqZ0FBQUVBQUFENlBnQUFBQUFBQUxkREFBQUJBQUFBSEZ3QUFBQUFBQUNQUkFBQUFR
QUFBSzVkQUFBQUFBQUFQajhBQUFFQUFBQ20KVWdBQUFBQUFBR0pFQUFBQkFBQUFRRjBBQUFBQUFB
QTVVUUFBQVFBQUFGcCtBQUFBQUFBQWZEUUFBQUVBQUFBR05RQUFBQUFBQUlNNwpBQUFCQUFBQUww
VUFBQUFBQUFEbVNnQUFBUUFBQU4xd0FBQUFBQUFBSDA0QUFBRUFBQUNpZGdBQUFBQUFBSEZWQUFB
Q0FBQUFtRVlBCkFBSk9BQUFBQUFBQW9BVUFBQUVBQUFDNEJRQUFBQUFBQUxrM0FBQUJBQUFBN2ow
QUFBQUFBQUJPUkFBQUFRQUFBQU5kQUFBQUFBQUEKcVRvQUFBRUFBQUFlUXdBQUFBQUFBTU16QUFB
Q0FBQUFtRE1BQVBKbUFBQUFBQUFBRHp3QUFBRUFBQURPU0FBQUFBQUFBSTlKQUFBQgpBQUFBejI0
QUFBQUFBQUJvTmdBQUFRQUFBT281QUFBQUFBQUFSd01BQUFFQUFBQnZBd0FBQUFBQUFPVkxBQUFC
QUFBQXJISUFBQUFBCkFBRExPQUFBQVFBQUFKay9BQUFBQUFBQW9qc0FBQUVBQUFCb1J3QUFBQUFB
QUNBREFBQUJBQUFBTFFNQUFBQUFBQUIyUkFBQUFRQUEKQUhGZEFBQUFBQUFBbndZQUFBRUFBQUJU
Z0FBQUFBQUFBSWhMQUFBQkFBQUE3M0VBQUFBQUFBQTZBZ0FBQVFBQUFGRUNBQUFBQUFBQQp1UU1B
QUFFQUFBQVFCQUFBQUFBQUFQdERBQUFCQUFBQWRGd0FBQUFBQUFBMkJnQUFBUUFBQUI4R0FBQUFB
QUFBQWdjQUFBTUFBQUJiClp3QUEzMmNBQUI1cEFBQUFBQUFBZTB3QUFBRUFBQUIrY3dBQUFBQUFB
RDlCQUFBQkFBQUFBRmdBQUFBQUFBREhOQUFBQVFBQUFLWTEKQUFBQUFBQUE1VE1BQUFFQUFBRFRN
d0FBQUFBQUFNOU5BQUFCQUFBQVluWUFBQUFBQUFEdlJBQUFBUUFBQUtwZUFBQUFBQUFBQlZNQQpB
QUVBQUFDMGdBQUFBQUFBQUVnSEFBQUJBQUFBVEZFQUFBQUFBQURzQXdBQUFRQUFBQ3NFQUFBQUFB
QUFHVVVBQUFFQUFBQVhYd0FBCkFBQUFBRVU4QUFBQkFBQUF4MGtBQUFBQUFBQVNDQUFBQVFBQUFP
Z3lBQUFBQUFBQWt6c0FBQUVBQUFESVJRQUFBQUFBQUQ0MkFBQUIKQUFBQW9Ua0FBQUFBQUFCVlV3
QUFCUUFBQU5xQkFBQU9nZ0FBaFlJQUFMbUNBQUR0Z2dBQUFBQUFBS1pBQUFBQkFBQUFmMVVBQUFB
QQpBQUJuTXdBQUFRQUFBSU16QUFBQUFBQUFKendBQUFFQUFBQ3JTUUFBQUFBQUFNMDFBQUFCQUFB
QTRUZ0FBQUFBQUFEenhBQUFBUUFBCkFGTlRBQUFBQUFBQWZGVUFBQUVBQUFCamlRQUFBQUFBQU1C
S0FBQUJBQUFBb0hBQUFBQUFBQUJOVVFBQUFRQUFBSHArQUFBQUFBQUEKVFFRQUFBRUFBQUQrZkFB
QUFBQUFBT01HQUFBQkFBQUEyZ1lBQUFBQUFBQlNWUUFBQVFBQUFPeEdBQUFBQUFBQXNWTUFBQUlB
QUFENApad0FBVldnQUFBQUFBQUFLUWdBQUFRQUFBTVJaQUFBQUFBQUFIa0FBQUFFQUFBQUNWQUFB
QUFBQUFQTk5BQUFCQUFBQWduWUFBQUFBCkFBQ09BZ0FBQVFBQUFLa0NBQUFBQUFBQXlVRUFBQUVB
QUFBcldRQUFBQUFBQU5BK0FBQUJBQUFBN0ZBQUFBQUFBQUJGQVFBQUFRQUEKQVBrQkFBQUFBQUFB
cjFRQUFBRUFBQUJZVVFBQUFBQUFBQW9EQUFBQkFBQUFGd01BQUFBQUFBQkxVZ0FBQVFBQUFIRjhB
QUFBQUFBQQpqVUVBQUFFQUFBREJXQUFBQUFBQUFJOEhBQUFCQUFBQTdBY0FBQUFBQUFBZE9BQUFB
UUFBQUowK0FBQUFBQUFBY1VJQUFBSUFBQUFRCldnQUFpbG9BQUFBQUFBQ01CQUFBQVFBQUFHVjhB
QUFBQUFBQTlnVUFBQUVBQUFEbEJRQUFBQUFBQUZSSUFBQUJBQUFBZFdvQUFBQUEKQUFERE9nQUFB
UUFBQUd0REFBQUFBQUFBOFQ0QUFBRUFBQURKVVFBQUFBQUFBTHhQQUFBQkFBQUFmWG9BQUFBQUFB
QTFUQUFBQVFBQQpBRDV6QUFBQUFBQUFxVUVBQUFFQUFBRHVXQUFBQUFBQUFGdEFBQUFCQUFBQWVG
UUFBQUFBQUFDWFRRQUFBUUFBQUVKMkFBQUFBQUFBCm9rc0FBQUVBQUFBZ2NnQUFBQUFBQVBjM0FB
QUJBQUFBZlQ0QUFBQUFBQUMwUFFBQUFRQUFBR2ROQUFBQUFBQUEvRHNBQUFFQUFBQ1YKU0FBQUFB
QUFBS0JWQUFBQkFBQUFIVHdBQUFBQUFBQldOUUFBQVFBQUFLdzJBQUFBQUFBQWp6OEFBQUVBQUFB
aVV3QUFBQUFBQUFKTApBQUFCQUFBQUNIRUFBQUFBQUFBR1NBQUFBUUFBQUpGcEFBQUFBQUFBWjFJ
QUFBSUFBQURRZVFBQVUzb0FBQUFBQUFCMFJnQUFBUUFBCkFPUmpBQUFBQUFBQStFWUFBQUVBQUFE
UVpBQUFBQUFBQUpOUEFBQUJBQUFBODNrQUFBQUFBQUE0UFFBQUFRQUFBS05NQUFBQUFBQUEKQVZV
QUFBSUFBQUJRVEFBQWVVd0FBQUFBQUFCdlVRQUFBUUFBQU90K0FBQUFBQUFBMzFJQUFBRUFBQURI
ZFFBQUFBQUFBS1JPQUFBQgpBQUFBRDNnQUFBQUFBQUJLTndBQUFRQUFBQ2M5QUFBQUFBQUF2VHNB
QUFFQUFBQ2tSd0FBQUFBQUFMMU9BQUFCQUFBQUwzZ0FBQUFBCkFBREVSQUFBQVFBQUFQdGRBQUFB
QUFBQS96d0FBQUVBQUFCL1N3QUFBQUFBQUpzMkFBQUJBQUFBSmpvQUFBQUFBQUFiUndBQUFRQUEK
QVAxa0FBQUFBQUFBU1RzQUFBRUFBQUJiUkFBQUFBQUFBUDlRQUFBQkFBQUFsSDBBQUFBQUFBQjRB
Z0FBQVFBQUFKTUNBQUFBQUFBQQpEMUlBQUFFQUFBQUtmUUFBQUFBQUFEOUdBQUFCQUFBQU1XTUFB
QUFBQUFEU1VRQUFBUUFBQUFsK0FBQUFBQUFBWWdNQUFBWUFBQUN2CkF3QUFUZ1FBQUhJRUFBQ1dC
QUFBL1FZQUFDQUhBQUFBQUFBQUwwMEFBQUVBQUFCV2RRQUFBQUFBQUxrR0FBQUJBQUFBbndZQUFB
QUEKQUFBbU53QUFBUUFBQU9vOEFBQUFBQUFBU1RNQUFBRUFBQUJGUGdBQUFBQUFBSUZJQUFBQkFB
QUFXV3NBQUFBQUFBQWZCd0FBQVFBQQpBS0JtQUFBQUFBQUFDVW9BQUFFQUFBQ3Jid0FBQUFBQUFF
eFBBQUFCQUFBQVAza0FBQUFBQUFENk9nQUFBUUFBQU1SREFBQUFBQUFBCjZVRUFBQUVBQUFCY1dR
QUFBQUFBQU9ZMUFBQUJBQUFBRGprQUFBQUFBQUJVQXdBQUFRQUFBSVVEQUFBQUFBQUF5a0FBQUFF
QUFBQ2YKVlFBQUFBQUFBT05VQUFBQkFBQUFlazhBQUFBQUFBRG1PQUFBQVFBQUFBWkFBQUFBQUFB
QURFRUFBQUVBQUFDQ1Z3QUFBQUFBQUFOSgpBQUFCQUFBQXJXMEFBQUFBQUFCZVNRQUFBUUFBQUcx
dUFBQUFBQUFBYmtFQUFBRUFBQUJ1V0FBQUFBQUFBRWcxQUFBQkFBQUFXellBCkFBQUFBQUNQVGdB
QUFRQUFBTjUzQUFBQUFBQUFZendBQUFFQUFBQklTZ0FBQUFBQUFQdFRBQUFCQUFBQURtSUFBQUFB
QUFCR1J3QUEKQVFBQUFDcGxBQUFBQUFBQWRqMEFBQUVBQUFBSlRRQUFBQUFBQU5FQUFBQUJBQUFB
TkFBQUFBQUFBQUNMUFFBQUFRQUFBRFpOQUFBQQpBQUFBSjBZQUFBRUFBQUR3WWdBQUFBQUFBRFUr
QUFBQkFBQUF5RTRBQUFBQUFBQThBd0FBQVFBQUFGa0RBQUFBQUFBQWcwSUFBQUVBCkFBQk9XZ0FB
QUFBQUFFeFVBQUFCQUFBQXltRUFBQUFBQUFBVlBnQUFBUUFBQUpkT0FBQUFBQUFBakVBQUFBRUFB
QUF1VlFBQUFBQUEKQU5OSkFBQUJBQUFBTVc4QUFBQUFBQUJWVkFBQUFnQUFBT3hoQUFEV2FBQUFB
QUFBQUpjREFBQURBQUFBMGdNQUFIb0dBQUJFQndBQQpBQUFBQU5vN0FBQUJBQUFBNEVjQUFBQUFB
QUNyQkFBQUFRQUFBSEVGQUFBQUFBQUFNRWtBQUFFQUFBQVRiZ0FBQUFBQUFBWTZBQUFCCkFBQUEw
RUVBQUFBQUFBQzFSd0FBQVFBQUFIUm5BQUFBQUFBQXVUWUFBQUVBQUFCM09nQUFBQUFBQUJ3NkFB
QUJBQUFBL1VFQUFBQUEKQUFBMk9nQUFBUUFBQUQ1Q0FBQUFBQUFBQ0UwQUFBRUFBQUFWZFFBQUFB
QUFBTXhIQUFBQkFBQUFOMmtBQUFBQUFBQjFTZ0FBQVFBQQpBREp3QUFBQUFBQUFFanNBQUFFQUFB
RHhRd0FBQUFBQUFNTUNBQUFCQUFBQTFRSUFBQUFBQUFBREFRQUFBUUFBQUs0QUFBQUFBQUFBCjdV
d0FBQUVBQUFEZ2RBQUFBQUFBQU1GRkFBQUJBQUFBUG1BQUFBQUFBQUNxVXdBQUFRQUFBTzVvQUFB
QUFBQUFFa3dBQUFFQUFBRDkKY2dBQUFBQUFBS05UQUFBR0FBQUFLbUlBQUNCb0FBQThhQUFBY1dn
QUFJMW9BQUFHYVFBQUFBQUFBQUpBQUFBQkFBQUFwVk1BQUFBQQpBQUNKUndBQUFRQUFBREJtQUFB
QUFBQUFPbFVBQUFFQUFBQjFTUUFBQUFBQUFJRTFBQUFCQUFBQWVqY0FBQUFBQUFBUFR3QUFBUUFB
CkFMMTRBQUFBQUFBQTNUWUFBQUVBQUFDSU93QUFBQUFBQUZvNUFBQUJBQUFBeFVBQUFBQUFBQUNW
TndBQUFRQUFBTEU5QUFBQUFBQUEKbEZBQUFBSUFBQUQzZXdBQURuOEFBQUFBQUFCWlFRQUFBUUFB
QUQxWUFBQUFBQUFBQURrQUFBRUFBQUJIUUFBQUFBQUFBRUkrQUFBQgpBQUFBQkU4QUFBQUFBQUJR
T2dBQUFRQUFBSTlDQUFBQUFBQUFxejRBQUFJQUFBQ0tVQUFBZTFFQUFBQUFBQUFpTXdBQUFRQUFB
RGsrCkFBQUFBQUFBV0U0QUFBRUFBQUE3ZHdBQUFBQUFBQ1kvQUFBQkFBQUFOVklBQUFBQUFBRHVT
UUFBQVFBQUFHNXZBQUFBQUFBQTcxSUEKQUFFQUFBRG9kUUFBQUFBQUFDZEtBQUFCQUFBQXkyOEFB
QUFBQUFBdk93QUFBUUFBQUI1RUFBQUFBQUFBclZJQUFBRUFBQUExZ0FBQQpBQUFBQUJBMUFBQUJB
QUFBN1RVQUFBQUFBQUFzTlFBQUFRQUFBQjQyQUFBQUFBQUE1RDBBQUFFQUFBQlFUZ0FBQUFBQUFK
UlJBQUFCCkFBQUFlSDhBQUFBQUFBQlBBZ0FBQVFBQUFHY0NBQUFBQUFBQXJRSUFBQUVBQUFDL0Fn
QUFBQUFBQUhsSkFBQUJBQUFBbm00QUFBQUEKQUFBeEF3QUFBUUFBQUVNREFBQUFBQUFBU0ZOQlNB
RUFBQUFDQUFBQUFnQUFBQXdBQUFBQUFBQUFBUUFBQUFFQUJnQUFBQUFBQVFBQQpBQlRRc0Z1QnNp
TjJPQUFBQUVnQUFBQ0Zzd0FBQVFBQUFGTlRBQUFBQUFBQUc4VUFBQUVBQUFCVFV3QUFBQUFBQUVo
VFFVZ0JBQUFBCkFRQUFBQUFBQUFBTUFBQUFBQUFBQUFFQUFBQUJBQVlBLy8vLy8waFRRVWdCQUFB
QW1RQUFBRElCQUFBVUFBQUFBQUFBQUFNQUFBQUIKQUFZQUF3QUZBQVVBQ3dBQUFBQUEvLy8vL3dJ
QUFBQURBQUFBLy8vLy93VUFBQUFIQUFBQUNRQUFBQXNBQUFBUEFBQUFFZ0FBQUJRQQpBQUFYQUFB
QUdBQUFBQndBQUFBZEFBQUEvLy8vL3g4QUFBQWhBQUFBSWdBQUFDTUFBQUFrQUFBQUpnQUFBQ3NB
QUFBdEFBQUFNZ0FBCkFQLy8vLzh6QUFBQU5nQUFBRGtBQUFBNkFBQUFPd0FBQUQwQUFBQkFBQUFB
UVFBQUFQLy8vLzlEQUFBQVJBQUFBRVVBQUFCR0FBQUEKU0FBQUFFa0FBQUJMQUFBQVRRQUFBRTRB
QUFCVEFBQUEvLy8vLzFVQUFBQllBQUFBV3dBQUFGNEFBQUJnQUFBQVlRQUFBR01BQUFCawpBQUFB
YUFBQUFHa0FBQUQvLy8vL2F3QUFBRzRBQUFCeEFBQUEvLy8vLzNJQUFBQjFBQUFBZGdBQUFIY0FB
QUI2QUFBQWZRQUFBUC8vCi8vK0FBQUFBaEFBQUFJVUFBQUNIQUFBQWl3QUFBUC8vLy8rTkFBQUFq
Z0FBQVAvLy8vK1NBQUFBbGdBQUFQLy8vLytYQUFBQW1RQUEKQUpzQUFBQ2ZBQUFBb1FBQUFLTUFB
QUNsQUFBQXFRQUFBS3NBQUFDdEFBQUFzQUFBQUxRQUFBQzFBQUFBdGdBQUFMY0FBQUM3QUFBQQp2
QUFBQUw0QUFBRC8vLy8vdndBQUFNSUFBQUQvLy8vL3hBQUFBTVlBQUFELy8vLy94d0FBQU1zQUFB
RE9BQUFBendBQUFORUFBQURUCkFBQUExQUFBQU5rQUFBRGJBQUFBM0FBQUFONEFBQURmQUFBQTRn
QUFBT01BQUFEbEFBQUE2QUFBQVAvLy8vL3JBQUFBN3dBQUFQVUEKQUFENEFBQUEvQUFBQVA4QUFB
QUJBUUFBQlFFQUFBZ0JBQUFMQVFBQURRRUFBQkFCQUFBUkFRQUFFZ0VBQVAvLy8vOFRBUUFBRmdF
QQpBQmdCQUFBYkFRQUFIUUVBQUI4QkFBQWlBUUFBLy8vLy95UUJBQUFsQVFBQUp3RUFBQ3NCQUFB
dUFRQUFMd0VBQURBQkFBRFA4NEJWCkw5RTVYL2N5a1VaYVhCQUoyM0krZGdON1RaK3N4SXpUQktV
RThiRllmYkdIVHNQVDFwc2JyQ1lsNWFPR0crNFJFRzhWRFRPV2FtM3YKMFF1aTUrdmY3dW9BcW5Q
anMzTE1QNWZaSnVoZlRIYlQzaDNVOEMvY0RuYmFmYU1wSFlnTDduaG1ESldZQTNXUk8rQXNvS2ZM
K2J0TworQXgzcE5lQlhlaFRFWDNVaHA2anBDWndZeVhpZERDbVZFL2xDSzFHcTZaV242T3BGT2Nv
V0wwK0MwazVWV3dQNitHTVJGcUV1cW1pCkVNSUdYU1NYbzRPTU9kcjgwNi9ORzM5K0M1Z3BrSFJK
eWRNTmQxb0x5eDN6bnI1K1AxOGZvdmtWLzIvOVVHQ0Vzd3lRRlowQXhqY2YKVGtwRlFHUXBzeEZo
VE9ERHVZVEdnWnBpaDg0aXFsbkdUOUQvbWoyNGI3eFh0SVQzQnMxQ2RERERDNHhSLzhVUDNIVTdB
SXBFOVB5QwptT0xEYW5QaXp1M3E5NzQ5bjFRc0NaV1hXc1FnS3JWenpGMzBTTG5wcHJrVjFlMElr
UEU3T1pwd0d3cHNqaWdBajFzUEhoaDZTK1VQClRoODNpbmFRR1Z2RDk1TUxGTENaVjF6aXpmc3Ri
ZkMvcUFzOEJJNlZMSGhGZTkrUDRSUU5kT0xPZ1RETlRtZ0Y4MndRWHJzK1dJWmUKK0FaY2M4WlZh
TFQyVm4wOEpqSjRXUUMzVHBab3ZYdzEreldRK2VCODBSNW4yelRQV3BpWWg3WEVRR3FZRlpKYU9j
b0hrejBHMGRYRApaWGhGNTNRR3ZnVkhhMUhVZkhqL0dJck9kUXo0dld5RXoxOFRaWkdnNVpDd0dG
Z2hGTEJNbCtyRWpOTi9tMTM5WWlKSGR5UExHOVRxClQ1eHVFWnVDZkVhbDdkRzE0Q2J2RUF4MnRH
REVFRVhpMXBmMllFM1d3NGlhTHNNYzllR0hOWjVjVElwTnJaQUdoQ2N6WkUzV3crQlQKSThFMFhT
UDl2eit2MExoSzYxL09xTTRJSUszVEUvYkdRSU85eG1TWklCdnNqMWV2djcxQ3NoZ1NUcERYbTE1
bmNPbDg3NzFjSldXdwpTemtjd3RSWmI3RU5WaC9aT01MZ0kxdE5KRU9na0VHOGxJMVRDQWNVMExC
YlV1MFhackcvQk9Id1BGYlRXeGduVjlFRm9uaXU0dE5hCnFzYzVyYUFRdmV2czA0aDNiQ2ZXaVJq
NHJBUVRPSjAvdmFJNEtjbTRBRDg5cVJncTZLcmo1UW9FS1kzbG1RdlViVHg5QmE5OWZ1YTYKYjZ2
dlJuWWRocDBrWEttazRzbXBZeUNWZk5Yd1doQkNQSjZ0Y0ZwVlJDRWgvKzhkMGZPMXFIUGl6bkpw
c1EwZU5iRmpOZUptNjcwTgpLdzZEOEZBTXN4UDE0SFN0Q3FXNUVYMVd1bEltT01PalZ4VDlvTmZE
cWozbU9CdE4yOE0zeTBPT2dMeFFycWRsWjJMai9oWjNFS0NBClA2eWVaWXcyczczN1BYRHpOalNr
R2hpVDh0QWJsQW5ldzQ0Wi9RRmxicFUreVZSbFdDS29nc0d5WDJJMGF5SXNJemdpSlpFd2dJZ0wK
NlhGNW95ZDNEbVgyV0ljSU11VCtZM1VDSlJESDJtQ3BjV2RDeHAwVnpDOGFlNGVSeFZYS1l2bkc4
TXFIU042YXV3NXFGZDhDR3JQcgpLU3NKOWlzZW9vMmVTNS9SbTZ4ank1VStxZ0gvZnNzbVRlSEM2
cllkakNrbFFJa2dXejM1K1hDV2ZuNWRtcUlMOHJYTWxaM1hxUDUyCmhyaUcwbDVqQ1Y1Wkp4VnY2
a1hxeEZ5cFY5MTIxbU9UNVQvdXVPOGZ6Wk04c3NSUlYwbFVTRktWSEdDbVlma0tKdlJIbWRFNUZ0
bFoKUEViMk0wbjB4RGFYSW0zeE90Z1ROV2xrdDNGalJmcHlQa0VmVzJrSnJDVksvVjlRcStJa0d3
VDFXN1ZTQkpUVzZwZzk1WjdEYUtKWgp4aEhKaG5GUm5HUG84RW1mRUVqRERkYkFDU042RDExREZU
cWhvY3htMUlzU3hRK3NJWEFnNHJSaEZUYXRlOVg3NGFuZXc2U0k5ejNDCnhNRG1jVzhIcmVBOGg3
NmI0WEVQUksxd25BS1dWUkVjREFBQUx3d0FBRUlNQUFCY0RBQUFid3dBQUlJTUFBQ1ZEQUFBcUF3
QUFMc00KQUFET0RBQUE0UXdBQVBRTUFBQUhEUUFBR2cwQUFDME5BQUJBRFFBQVV3MEFBR1lOQUFC
NURRQUFqQTBBQUo4TkFBQ3lEUUFBeFEwQQpBTmdOQUFEckRRQUEvZzBBQUJFT0FBQWtEZ0FBTnc0
QUFFb09BQUJkRGdBQWNBNEFBSU1PQUFDV0RnQUFxUTRBQUx3T0FBRFBEZ0FBCjRnNEFBUFVPQUFB
SUR3QUFHdzhBQUM0UEFBQkJEd0FBVkE4QUFHY1BBQUNCRHdBQWxBOEFBS2NQQUFDNkR3QUF6UThB
QU9jUEFBRDYKRHdBQURSQUFBQ0FRQUFBekVBQUFSaEFBQUZrUUFBQnNFQUFBZnhBQUFKSVFBQUNs
RUFBQXVCQUFBTXNRQUFEZUVBQUE4UkFBQUFRUgpBQUFYRVFBQUtoRUFBRDBSQUFCUUVRQUFZeEVB
QUhZUkFBQ0pFUUFBbkJFQUFLOFJBQURDRVFBQTFSRUFBT2dSQUFEN0VRQUFEaElBCkFDRVNBQUEw
RWdBQVJ4SUFBRm9TQUFCdEVnQUFnQklBQUpNU0FBQ21FZ0FBdVJJQUFNd1NBQURmRWdBQThoSUFB
QVVUQUFBWUV3QUEKS3hNQUFENFRBQUJSRXdBQVpCTUFBSGNUQUFDS0V3QUFuUk1BQUxBVEFBRERF
d0FBMWhNQUFPa1RBQUQ4RXdBQUR4UUFBQ0lVQUFBMQpGQUFBU0JRQUFGc1VBQUIxRkFBQWlCUUFB
SnNVQUFDdUZBQUF3UlFBQU5RVUFBRG5GQUFBK2hRQUFBMFZBQUFnRlFBQU14VUFBRVlWCkFBQlpG
UUFBYkJVQUFIOFZBQUNTRlFBQXBSVUFBTGdWQUFETEZRQUEzaFVBQVBFVkFBQUVGZ0FBRnhZQUFD
b1dBQUE5RmdBQVVCWUEKQUdNV0FBQjJGZ0FBaVJZQUFKd1dBQUN2RmdBQXdoWUFBTlVXQUFEb0Zn
QUEreFlBQUE0WEFBQWhGd0FBTkJjQUFFY1hBQUJhRndBQQpiUmNBQUlBWEFBQ1RGd0FBcGhjQUFM
a1hBQURNRndBQTN4Y0FBUElYQUFBTUdBQUFIeGdBQURJWUFBQkZHQUFBV0JnQUFHc1lBQUIrCkdB
QUFrUmdBQUtRWUFBQzNHQUFBeWhnQUFPUVlBQUQzR0FBQUNoa0FBQjBaQUFBd0dRQUFReGtBQUZZ
WkFBQnBHUUFBZkJrQUFJOFoKQUFDaUdRQUF0UmtBQU1nWkFBRGJHUUFBN2hrQUFBRWFBQUFVR2dB
QUp4b0FBRG9hQUFCVUdnQUFaeG9BQUhvYUFBQ05HZ0FBb0JvQQpBTE1hQUFER0dnQUEyUm9BQU93
YUFBRC9HZ0FBRWhzQUFDVWJBQUE0R3dBQVN4c0FBRjRiQUFCeEd3QUFoQnNBQUo0YkFBQ3hHd0FB
CnhCc0FBTmNiQUFEcUd3QUEvUnNBQUJBY0FBQWpIQUFBTmh3QUFFa2NBQUJjSEFBQWJ4d0FBSUlj
QUFDVkhBQUFxQndBQUxzY0FBRE8KSEFBQTRSd0FBUFFjQUFBSEhRQUFHaDBBQUMwZEFBQkhIUUFB
V2gwQUFHMGRBQUNBSFFBQWt4MEFBS1lkQUFDNUhRQUF6QjBBQU44ZApBQUR5SFFBQUJSNEFBQmdl
QUFBckhnQUFQaDRBQUZFZUFBQmtIZ0FBZHg0QUFJb2VBQUNkSGdBQXNCNEFBTU1lQUFEV0hnQUE2
UjRBCkFBTWZBQUFXSHdBQUtSOEFBRHdmQUFCUEh3QUFZaDhBQUhVZkFBQ1BId0FBb2g4QUFMd2ZB
QURQSHdBQTZSOEFBUHdmQUFBUElBQUEKSWlBQUFEVWdBQUJJSUFBQVlpQUFBSHdnQUFDV0lBQUFx
U0FBQUx3Z0FBRFBJQUFBNGlBQUFQVWdBQUFJSVFBQUd5RUFBQzRoQUFCQgpJUUFBVkNFQUFHY2hB
QUI2SVFBQWpTRUFBS0FoQUFDeklRQUF4aUVBQU5raEFBRHNJUUFBL3lFQUFCSWlBQUFsSWdBQVB5
SUFBRklpCkFBQmxJZ0FBZUNJQUFJc2lBQUNlSWdBQXNTSUFBTVFpQUFEWElnQUE2aUlBQVAwaUFB
QVFJd0FBSXlNQUFEWWpBQUFXR3dBQUFRQUEKQUtzYkFBQVRBQUFBQUFBQTRnRUFBQUVBQUFCTEFR
QUFFd0FDQUFBQUFCazBBQUFDQUFBQWF6UUFBQllBQUdDZkFBQVdBQUFBQUFBQQo1THNBQUFFQUFB
QVl2d0FBRmdBQUFBQUFBS3U0QUFBQkFBQUE2YnNBQUJZQUFBQUFBQUFDc1FBQUFRQUFBTjZ5QUFB
V0FBQUFBQUFBCjNnY0FBQUVBQUFCOUJ3QUFGZ0FBQUFBQUFEbVJBQUFCQUFBQXdac0FBQVFBQWdB
QUFBQkRTd0FBQVFBQUFJZHhBQUFUQUFJQUFBQUEKcWhVQUFBRUFBQUNzRWdBQUV3QUNBQUFBQU84
OEFBQUJBQUFBbFVvQUFCTUFBZ0FBQUFBdUxBQUFBUUFBQUVRbUFBQVRBQUlBQUFBQQpwN3NBQUFF
QUFBQnV2Z0FBRmdBQUFBQUFBUEs3QUFBQkFBQUFOTDhBQUJZQUFBQUFBQUJ6T3dBQUFRQUFBQ1JG
QUFBV0FBQUFBQUFBCkNqNEFBQUVBQUFDTVRnQUFGZ0FBQUFBQUFFZThBQUFCQUFBQVlMOEFBQllB
QUFBQUFBRHJCUUFBQVFBQUFKY0ZBQUFXQUFBQUFBQUEKUzdJQUFBRUFBQUJSc3dBQUZnQUFBQUFB
QUwrN0FBQUJBQUFBNnI0QUFCWUFBQUFBQUFCT1F3QUFBUUFBQUZoYkFBQVRBQUlBQUFBQQorUWNB
QUFFQUFBQ3BCd0FBRmdBQUFBQUFBR2tEQUFBQkFBQUFtd01BQUNRQUFBQUFBQUNmdkFBQUFRQUFB
SUcvQUFBV0FBQUFBQUFBCmY2VUFBQUVBQUFBTHBRQUFGZ0FBQUFBQUFOckFBQUFCQUFBQXBjSUFB
QllBQUFBQUFBQWpqUUFBQVFBQUFGQ2FBQUFFQUFJQUFBQUEKb3h3QUFBRUFBQUFuSEFBQUV3QUFB
QUFBQUZZR0FBQUJBQUFBK3dVQUFDUUFBQUFBQUFCckFRQUFBUUFBQU5BQUFBQVdBQUFBQUFBQQp1
QmNBQUFFQUFBRDhGd0FBRXdBQUFBQUFBT2tHQUFBQkFBQUF0Z1lBQUJZQUFBQUFBQUN2cWdBQUFR
QUFBTGFyQUFBV0FBQUFBQUFBCjJya0FBQUVBQUFEZXZRQUFGZ0FBQUFBQUFEeWdBQUFCQUFBQUpL
QUFBQllBQUFBQUFBQW12UUFBQVFBQUFHakFBQUFUQUFJQUFBQUEKVHhrQUFBRUFBQUJ6R1FBQUV3
QUFBQUFBQUpsU0FBQUJBQUFBS29BQUFCWUFBQUFBQUFET3NBQUFBUUFBQU5PeUFBQVdBQUFBQUFB
QQpSN1VBQUFFQUFBQzR0d0FBRXdBQUFBQUFBRlc4QUFBQkFBQUFkcjhBQUJZQUFBQUFBQUQrd1FB
QUFRQUFBQlhEQUFBV0FBQUFBQUFBCjM2RUFBQUVBQUFEWW9BQUFFd0FBQUFBQUFDb0JBQUFCQUFB
QWJ3QUFBQk1BQWdBQUFBRENNUUFBQWdBQUFDd3FBQUFFQUFLT0tnQUEKRmdBQUFBQUFBRkJDQUFB
QkFBQUErbGtBQUJZQUFBQUFBQURkd3dBQUFRQUFBRkxFQUFBV0FBQUFBQUFBVnJzQUFBRUFBQUJZ
dmdBQQpGZ0FBQUFBQUFMb3pBQUFCQUFBQVpqTUFBQllBQUFBQUFBQWNxd0FBQWdBQUFPS3JBQUFU
QUFKanJBQUFGZ0FBQUFBQUFFT2xBQUFCCkFBQUFLS0VBQUJNQUFnQUFBQUNNVXdBQUFRQUFBRzZF
QUFBV0FBQUFBQUFBR1RNQUFBRUFBQUQ4TUFBQUV3QUFBQUFBQUNHeEFBQUIKQUFBQTZiSUFBQllB
QUFBQUFBQmx1QUFBQVFBQUFOMjdBQUFXQUFBQUFBQUEzc1FBQUFFQUFBQmR4QUFBRXdBQ0FBQUFB
RUlGQUFBQgpBQUFBMWdRQUFCTUFBZ0FBQUFEWXNRQUFBUUFBQUR1ekFBQVdBQUFBQUFBQUQ3d0FB
QUVBQUFBL3Z3QUFGZ0FBQUFBQUFBVUNBQUFCCkFBQUF0QUVBQUJNQUFBQUFBQUNBRGdBQUFRQUFB
QmdQQUFBVEFBQUFBQUFBSTVZQUFBRUFBQURIbkFBQUJBQUNBQUFBQUl3MkFBQUIKQUFBQUd6b0FB
QllBQUFBQUFBQllvUUFBQVFBQUFKcWdBQUFXQUFBQUFBQUE1UWNBQUFFQUFBQ0lCd0FBRmdBQUFB
QUFBR093QUFBQgpBQUFBRDdFQUFCTUFBZ0FBQUFCMk9nQUFBUUFBQU10Q0FBQVdBQUFBQUFBQWJE
b0FBQUVBQUFEQVFnQUFGZ0FBQUFBQUFHMEZBQUFCCkFBQUFWQVVBQUJZQUFBQUFBQURYUFFBQUFR
QUFBRVZPQUFBV0FBQUFBQUFBalJzQUFBRUFBQURPR3dBQUZnQUFBQUFBQURjTUFBQUIKQUFBQU1n
b0FBQk1BQWdBQUFBQnlMd0FBQVFBQUFCRXFBQUFXQUFBQUFBQUFDNkVBQUFFQUFBQnpvQUFBRmdB
QUFBQUFBS2l0QUFBQgpBQUFBV0s4QUFCTUFBQUFBQUFCeEFRQUFBUUFBQU53QUFBQVRBQUFBQUFB
QTZDd0FBQUVBQUFCYktRQUFGZ0FBQUFBQUFDNjRBQUFCCkFBQUF4cnNBQUJZQUFBQUFBQUFmdUFB
QUFRQUFBTHE3QUFBV0FBQUFBQUFBQ2JNQUFBRUFBQURzc3dBQUV3QUFBQUFBQU1JTEFBQUIKQUFB
QUJBb0FBQllBQUFBQUFBQTh1d0FBQVFBQUFFMitBQUFXQUFBQUFBQUFwcElBQUFFQUFBRDZtd0FB
QkFBQ0FBQUFBSkcyQUFBQgpBQUFBdzdnQUFCTUFBQUFBQUFCSU1nQUFBUUFBQUprcUFBQVRBQUFB
QUFBQWZrVUFBQUVBQUFBRFlBQUFFd0FDQUFBQUFBKzlBQUFCCkFBQUFVY0FBQUJZQUFBQUFBQURS
dXdBQUFRQUFBQTIvQUFBV0FBQUFBQUFBNDdnQUFBRUFBQUFydkFBQUZnQUFBQUFBQUw4UUFBQUIK
QUFBQUh4QUFBQk1BQWdBQUFBRC93QUFBQVFBQUFMckNBQUFXQUFBQUFBQUF3VGdBQUFFQUFBQ05Q
d0FBRmdBQUFBQUFBTVVIQUFBQgpBQUFBYXdjQUFCWUFBQUFBQUFEekN3QUFBUUFBQUE4S0FBQVRB
QUFBQUFBQXJ4b0FBQUVBQUFDSEd3QUFFd0FBQUFBQUFFc1lBQUFCCkFBQUFwQmdBQUJNQUFBQUFB
QUJQd0FBQUFRQUFBSG5DQUFBV0FBQUFBQUFBUkVnQUFBRUFBQUJxYWdBQUZnQUFBQUFBQUhHaUFB
QUIKQUFBQUI2RUFBQllBQUFBQUFBQ2FMZ0FBQVFBQUFLc3BBQUFUQUFBQUFBQUF3b0VBQUFFQUFB
QWdsd0FBQkFBQ0FBQUFBRVVNQUFBQgpBQUFBYUFvQUFCTUFBQUFBQUFCNXNRQUFBUUFBQURDekFB
QVdBQUFBQUFBQUJLa0FBQUVBQUFBQnFRQUFFd0FBQUFBQUFBSUNBQUFCCkFBQUFxQUVBQUJZQUFB
QUFBQUEyUWdBQUFRQUFBTzlaQUFBV0FBQUFBQUFBS3dVQUFBRUFBQURQQkFBQUpBQUFBQUFBQUdW
Q0FBQUIKQUFBQUJWb0FBQllBQUFBQUFBRDhUZ0FBQVFBQUFIaDRBQUFUQUFBQUFBQUFZRW9BQUFF
QUFBQW5jQUFBRmdBQUFBQUFBSlNKQUFBQwpBQUFBR0prQUFBUUFBbHl6QUFBV0FBQUFBQUFBZTcw
QUFBRUFBQUR5d0FBQUZnQUFBQUFBQUpHZkFBQUJBQUFBNTU4QUFCTUFBQUFBCkFBQm9Rd0FBQVFB
QUFJZGJBQUFXQUFBQUFBQUFYYVVBQUFFQUFBREFwQUFBRXdBQUFBQUFBR1FHQUFBQkFBQUFBZ1lB
QUJZQUFBQUEKQUFESURnQUFBUUFBQVBFUEFBQVdBQUFBQUFBQWQ3NEFBQUVBQUFBY3dnQUFGZ0FB
QUFBQUFBb1JBQUFCQUFBQU94SUFBQk1BQUFBQQpBQUFicEFBQUFRQUFBQjJoQUFBV0FBQUFBQUFB
UEVNQUFBRUFBQUJJV3dBQUZnQUFBQUFBQUFxdkFBQUJBQUFBeXJBQUFCTUFBQUFBCkFBQWpRZ0FB
QVFBQUFPUlpBQUFXQUFBQUFBQUFXRXNBQUFFQUFBQzJjUUFBRmdBQUFBQUFBS3QvQUFBQkFBQUFp
WllBQUJZQUFBQUEKQUFEOU5nQUFBUUFBQUZNOEFBQVdBQUFBQUFBQThnWUFBQUVBQUFEQkJnQUFG
Z0FBQUFBQUFGRzlBQUFCQUFBQTI4QUFBQllBQUFBQQpBQUIvT1FBQUFRQUFBQVpCQUFBV0FBQUFB
QUFBYVQwQUFBRUFBQUQrVEFBQUZnQUFBQUFBQUpZSkFBQUJBQUFBb3drQUFCWUFBQUFBCkFBQUtD
QUFBQVFBQUFNQUhBQUFXQUFBQUFBQUFqYWdBQUFFQUFBRFFxQUFBRmdBQUFBQUFBQzFMQUFBQkFB
QUFkWEVBQUNRQUFBQUEKQUFDek5BQUFBUUFBQUg4MUFBQVRBQUFBQUFBQTBhZ0FBQUVBQUFEMnFB
QUFGZ0FBQUFBQUFFNHVBQUFCQUFBQWt5a0FBQk1BQUFBQQpBQUQxU0FBQUFRQUFBSVp0QUFBVEFB
QUFBQUFBaWhvQUFBRUFBQUJ2R3dBQUV3QUFBQUFBQUNIQkFBQUJBQUFBeGNJQUFCWUFBQUFBCkFB
RExzd0FBQVFBQUFIbTBBQUFXQUFBQUFBQUFMUmdBQUFFQUFBQ01HQUFBRXdBQUFBQUFBR0UyQUFB
QkFBQUEwamtBQUJNQUFBQUEKQUFBbHZBQUFBUUFBQUZXL0FBQVdBQUFBQUFBQWZDZ0FBQUVBQUFB
NUpnQUFGZ0FBQUFBQUFFdkRBQUFCQUFBQUZNUUFBQllBQUFBQQpBQUIyRGdBQUFRQUFBS01PQUFB
VEFBSUFBQUFBNnkwQUFBRUFBQUNJS1FBQUZnQUFBQUFBQUdpZkFBQUJBQUFBdEo4QUFCTUFBQUFB
CkFBQUhNd0FBQVFBQUFIMHJBQUFUQUFBQUFBQUEvYUFBQUFFQUFBQm5vQUFBRmdBQUFBQUFBQUVJ
QUFBQkFBQUF1UWNBQUNRQUFBQUEKQUFDNnZRQUFBUUFBQUFqQkFBQVRBQUFBQUFBQWFLZ0FBQUVB
QUFERnFBQUFGZ0FBQUFBQUFCRkRBQUFCQUFBQXlsb0FBQk1BQUFBQQpBQUNGd1FBQUFRQUFBT0hD
QUFBV0FBQUFBQUFBNWNJQUFBRUFBQUNPd3dBQUV3QUFBQUFBQU42ZUFBQUJBQUFBblo4QUFCWUFB
QUFBCkFBQ1dBUUFBQWdBQUFBY0JBQUFUQUFJdUFRQUFGZ0FBQUFBQUFFNFJBQUFCQUFBQVV4SUFB
Qk1BQUFBQUFBRHRmZ0FBQVFBQUFBaVcKQUFBRUFBSUFBQUFBelJrQUFBRUFBQUNpR2dBQUV3QUFB
QUFBQUEyZ0FBQUJBQUFBR2FBQUFCWUFBQUFBQUFDRFZnQUFBUUFBQU1PSgpBQUFFQUFJQUFBQUE3
RU1BQUFFQUFBQm9YQUFBRmdBQUFBQUFBSVd6QUFBQkFBQUFKYlFBQUJNQUFBQUFBQUIvUHdBQUFR
QUFBQmRUCkFBQVdBQUFBQUFBQUNzSUFBQUVBQUFBZ3d3QUFGZ0FBQUFBQUFLRXpBQUFCQUFBQVN6
TUFBQllBQUFBQUFBQVF1UUFBQWdBQUFHMjgKQUFBVEFBS0h2QUFBRmdBQUFBQUFBSTZlQUFBQkFB
QUFnWjhBQUJZQUFBQUFBQUR2c2dBQUFRQUFBT0d6QUFBV0FBQUFBQUFBQUs4QQpBQUVBQUFERnJ3
QUFFd0FDQUFBQUFCUzZBQUFCQUFBQS9yMEFBQk1BQUFBQUFBQXh2Z0FBQVFBQUFJVEJBQUFUQUFB
QUFBQUFoTGtBCkFBRUFBQUREdlFBQUZnQUFBQUFBQUNnSUFBQUJBQUFBQWdnQUFCTUFBQUFBQUFE
S1RBQUFBUUFBQUVaMEFBQVdBQUFBQUFBQWlna0EKQUFFQUFBQ2NDUUFBSkFBQUFBQUFBUFFRQUFB
QkFBQUF4UkVBQUJNQUFBQUFBQUNHT0FBQUFRQUFBQm8vQUFBV0FBQUFBQUFBUDZZQQpBQUVBQUFE
YnBRQUFGZ0FBQUFBQUFMQVpBQUFCQUFBQVB4b0FBQk1BQWdBQUFBQ01BUUFBQVFBQUFQd0FBQUFX
QUFBQUFBQUE5TGNBCkFBRUFBQUNUdXdBQUV3QUFBQUFBQU1lcUFBQUJBQUFBd2FzQUFCWUFBQUFB
QUFENVNnQUFBUUFBQVAxd0FBQVdBQUFBQUFBQU1Sa0EKQUFFQUFBRGFHQUFBRXdBQ0FBQUFBRnNJ
QUFBQ0FBQUFWZ2dBQUJNQUFuMElBQUFXQUFBQUFBQUFLTUlBQUFFQUFBQjN3d0FBRmdBQQpBQUFB
QUNGTEFBQUJBQUFBYVhFQUFDUUFBQUFBQUFBRUhBQUFBUUFBQU5rYkFBQWtBQUFBQUFBQVNSb0FB
QUVBQUFCa0d3QUFGZ0FBCkFBQUFBTE9zQUFBQkFBQUFCNjRBQUJNQUFBQUFBQUFMckFBQUFRQUFB
Rkd0QUFBV0FBQUFBQUFBeXJJQUFBRUFBQURHc3dBQUZnQUEKQUFBQUFQcEJBQUFCQUFBQXJWa0FB
QllBQUFBQUFBQUVFUUFBQVFBQUFDZ1NBQUFUQUFBQUFBQUE3UWNBQUFFQUFBQ2VCd0FBRmdBQQpB
QUFBQUVNb0FBQUJBQUFBaWh3QUFCTUFBZ0FBQUFCdVJnQUFBUUFBQU5sakFBQVdBQUFBQUFBQVU3
RUFBQUVBQUFBS3N3QUFGZ0FBCkFBQUFBQnpDQUFBQkFBQUFLOE1BQUJZQUFBQUFBQUJyclFBQUFR
QUFBR1d1QUFBVEFBSUFBQUFBWFN3QUFBRUFBQUJYS0FBQUV3QUEKQUFBQUFQazBBQUFDQUFBQTRq
VUFBQllBQUd1ZkFBQVdBQUFBQUFBQU1yRUFBQUVBQUFEMHNnQUFGZ0FBQUFBQUFQZzhBQUFCQUFB
QQpIRXNBQUJNQUFBQUFBQUR1VGdBQUFRQUFBR0I0QUFBVEFBQUFBQUFBY3JBQUFBRUFBQUJjc2dB
QUV3QUFBQUFBQUlDc0FBQUJBQUFBClhLMEFBQk1BQWdBQUFBRFBWZ0FBQVFBQUFBeUtBQUFFQUFJ
QUFBQUFCUTRBQUFFQUFBQ1lEZ0FBRmdBQUFBQUFBRFM5QUFBQkFBQUEKME1BQUFCWUFBQUFBQUFD
ZUFRQUFBUUFBQURrQkFBQVdBQUFBQUFBQUJEY0FBQUVBQUFCZVBBQUFGZ0FBQUFBQUFGVUZBQUFC
QUFBQQpBQVVBQUJNQUFnQUFBQUF1Q2dBQUFRQUFBTVlKQUFBVEFBQUFBQUFBMUw0QUFBRUFBQUJD
d2dBQUZnQUFBQUFBQUoyb0FBQUJBQUFBCjI2Z0FBQllBQUFBQUFBQmlDQUFBQVFBQUFJZ0lBQUFX
QUFBQUFBQUFaYkVBQUFFQUFBQWFzd0FBRmdBQUFBQUFBT29PQUFBQkFBQUEKL0E4QUFCTUFBQUFB
QUFEOHZBQUFBUUFBQU82L0FBQVRBQUlBQUFBQUhhZ0FBQUVBQUFDOHB3QUFFd0FBQUFBQUFNOEhB
QUFCQUFBQQpkZ2NBQUNRQUFBQUFBQUFCUWdBQUFRQUFBTGhaQUFBV0FBQUFBQUFBSXJrQUFBSUFB
QUNUdkFBQUV3QUNnNzBBQUJZQUFBQUFBQUQ4CkJBQUFBUUFBQU1nRUFBQWtBQUFBQUFBQXR6RUFB
QUVBQUFBaEtnQUFGZ0FBQUFBQUFQUVpBQUFCQUFBQU1oc0FBQk1BQUFBQUFBQkwKaXdBQUFRQUFB
SjZaQUFBRUFBSUFBQUFBd1V3QUFBRUFBQUFmZEFBQUV3QUNBQUFBQUlVNkFBQUJBQUFBMWtJQUFC
WUFBQUFBQUFBMApwZ0FBQVFBQUFHYWxBQUFUQUFJQUFBQUFvc0FBQUFFQUFBQ1B3Z0FBRmdBQUFB
QUFBRXlyQUFBQkFBQUFlYXdBQUJZQUFBQUFBQUQyCnFRQUFBUUFBQU8ycEFBQVdBQUFBQUFBQXM3
Y0FBQUVBQUFDbnVnQUFFd0FBQUFBQUFOcTJBQUFCQUFBQVZyb0FBQllBQUFBQUFBQWoKc3dBQUFR
QUFBQTYwQUFBV0FBQUFBQUFBYjhNQUFBRUFBQUJCeEFBQUZnQUFBQUFBQUg2Z0FBQUJBQUFBT3FB
QUFCWUFBQUFBQUFEZQp0UUFBQVFBQUFLeTRBQUFXQUFBQUFBQUE1S2NBQUFFQUFBQ3hwd0FBRmdB
QUFBQUFBRHRMQUFBQkFBQUFmSEVBQUJZQUFBQUFBQURuCm9BQUFBUUFBQUZ1Z0FBQVdBQUFBQUFB
QUhTMEFBQUVBQUFCeEtRQUFGZ0FBQUFBQUFCdy9BQUFCQUFBQUtsSUFBQllBQUFBQUFBQXQKb2dB
QUFRQUFBUHlnQUFBV0FBQUFBQUFBd0xnQUFBSUFBQUQxdXdBQUV3QUNIN3dBQUJZQUFBQUFBQURr
dlFBQUFRQUFBQy9CQUFBVApBQUFBQUFBQWhRRUFBQUVBQUFEMUFBQUFKQUFBQUFBQUFQWUJBQUFC
QUFBQWp3RUFBQk1BQWdBQUFBQzVmd0FBQVFBQUFKV1dBQUFFCkFBSUFBQUFBOVFvQUFBRUFBQURw
Q1FBQUZnQUFBQUFBQU5XOEFBQUJBQUFBNDc4QUFCWUFBQUFBQUFCSmdBQUFBZ0FBQU9TV0FBQUUK
QUFMTXF3QUFGZ0FBQUFBQUFEbTZBQUFCQUFBQVBiNEFBQllBQUFBQUFBRDN1QUFBQWdBQUFEZThB
QUFUQUFKaHZBQUFGZ0FBQUFBQQpBSWtXQUFBQkFBQUFKQmNBQUJNQUFBQUFBQUJVQ0FBQUFnQUFB
Q1FJQUFBVEFBSkxDQUFBRmdBQUFBQUFBTjFDQUFBQkFBQUF2MW9BCkFCWUFBQUFBQUFDenRnQUFB
UUFBQUF5NkFBQVRBQUFBQUFBQVFiNEFBQUVBQUFES3dRQUFFd0FBQUFBQUFMc0JBQUFCQUFBQVJB
RUEKQUNRQUFBQUFBQUJZdVFBQUFRQUFBSm05QUFBVEFBQUFBQUFBZ0Q0QUFBSUFBQUMvVHdBQUV3
QUNJbEFBQUJZQUFBQUFBQUJ2Q1FBQQpBZ0FBQUpnSUFBQVRBQUtSQ1FBQUZnQUFBQUFBQUthQUFB
QUNBQUFBK1pZQUFBUUFBdGVyQUFBV0FBQUFBQUFBNmNRQUFBRUFBQUFzCnhRQUFFd0FBQUFBQUFM
cThBQUFCQUFBQTA3OEFBQllBQUFBQUFBRHF0Z0FBQVFBQUFJUzZBQUFXQUFBQUFBQUFSTGdBQUFF
QUFBRFIKdXdBQUZnQUFBQUFBQUg0YkFBQUJBQUFBd3hzQUFCWUFBQUFBQUFDRlRRQUFBUUFBQURk
MkFBQVdBQUFBQUFBQXhwTUFBQUVBQUFDQQpuQUFBQkFBQ0FBQUFBTnNKQUFBQkFBQUFyZ2tBQUJN
QUFBQUFBQUFadkFBQUFRQUFBRXEvQUFBV0FBQUFBQUFBc3FFQUFBRUFBQUN4Cm9BQUFFd0FBQUFB
QUFKOUZBQUFCQUFBQU1tQUFBQllBQUFBQUFBRGdBd0FBQVFBQUFQZ0RBQUFXQUFBQUFBQUEycWNB
QUFFQUFBRG0KcFFBQUV3QUNBQUFBQUkrcEFBQUJBQUFBUDZrQUFCWUFBQUFBQUFBRm93QUFBUUFB
QUJLaEFBQVdBQUFBQUFBQXNic0FBQUVBQUFCNQp2Z0FBRmdBQUFBQUFBUHdOQUFBQkFBQUFBdzBB
QUJNQUFnQUFBQUJndXdBQUFRQUFBR08rQUFBV0FBQUFBQUFBSXd3QUFBRUFBQUFuCkNnQUFGZ0FB
QUFBQUFCS2hBQUFCQUFBQWZxQUFBQllBQUFBQUFBQmFNZ0FBQVFBQUFDa3JBQUFUQUFBQUFBQUEz
cXNBQUFJQUFBQ1EKckFBQUV3QUNPcTBBQUJZQUFBQUFBQUNxd1FBQUFRQUFBUExDQUFBVEFBQUFB
QUFBa0w0QUFBRUFBQUFud2dBQUZnQUFBQUFBQU9BRQpBQUFCQUFBQXZRUUFBQllBQUFBQUFBRG93
UUFBQVFBQUFBckRBQUFXQUFBQUFBQUFUS1VBQUFFQUFBQzFwQUFBRmdBQUFBQUFBRnNYCkFBQUJB
QUFBNmhjQUFDUUFBQUFBQUFCcER3QUFBUUFBQUJRUUFBQVdBQUFBQUFBQWtLVUFBQUVBQUFBWHBR
QUFFd0FBQUFBQUFHODAKQUFBQkFBQUEzelFBQUJNQUFBQUFBQUFIamdBQUFRQUFBSWlhQUFBRUFB
SUFBQUFBc0tBQUFBRUFBQUJRb0FBQUZnQUFBQUFBQU9jQQpBQUFCQUFBQUtBQUFBQ1FBQUFBQUFB
QmVpZ0FBQVFBQUFHQ1pBQUFFQUFJQUFBQUFjaGNBQUFFQUFBRHhGd0FBRmdBQUFBQUFBQUFBCkFB
QUFBQUFBQUFBQUFESUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBWmdF
QUFORllCUUVBQUFBQUFBQUEKQUFBQUFBQUFBQUFBc0FFQUFBQUFBQUNsQUFBQVlRRURBUUFBQUFB
QUFBQUFBQUFBQUFBQUFBQmdBZ0FBQUFBQUFNOEFBQUFoQUFJQgpBQUFBQUFBQUFBQUFBQUFBQUFB
QUFEQURBQUFBQUFBQUl3QUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFNQUFBQUFBQUJG
CkFBQUFBUUFCQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUN3QXdBQUFBQUFBQW9BQUFBQUFBQUJBQUFB
QUFBQUFBQUFBQUFBQUFBQUFNQUQKQUFBQUFBQUFhd0FBQUNFQUFnRUFBQUFBQUFBQUFBQUFBQUFB
QUFBQU1BUUFBQUFBQUFEWEFBQUEwVmdGQVFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBUUJRQUFBQUFB
QUw0QUFBRFJXQVVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBTkFGQUFBQUFBQUFZUUFBQUNFQUFnRUFB
QUFBCkFBQUFBQUFBQUFBQUFBQUFRQVlBQUFBQUFBQkJBUUFBMFZnRkFRQUFBQUFBQUFBQUFBQUFB
QUFBQUFDUUJ3QUFBQUFBQURRQUFBQUEKQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQU5BSEFBQUFB
QUFBQ2dBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUE0QWNBQUFBQQpBQUE2QUFBQUlRQUNB
UUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUFBQUFBQUFMQUFBQUFoQUFJQkFBQUFBQUFBQUFBQUFB
QUFBQUFBCkFOQUlBQUFBQUFBQWpnQUFBQ0VBQWdFQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFrQUFB
QUFBQUFTQUFBQUFBQUFBUUFBQUFBQUFBQUEKQUFBQUFBQUFBQUNBQ1FBQUFBQUFBQklBQUFBQUFB
QUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQUpBQUFBQUFBQVdnQUFBQ0VBQWdFQQpBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBb0FBQUFBQUFBa0FRQUFFUXNFQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3Q3dB
QUFBQUFBRlVBCkFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkFMQUFBQUFBQUFQUUVBQU5G
WUJRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQTBBd0EKQUFBQUFBQVdBQUFBQUFBQUFRQUFBQUFBQUFB
QUFBQUFBQUFBQUFEd0RBQUFBQUFBQUFvQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFB
TkFBQUFBQUFBZHdBQUFHRUJBd0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQTBBQUFBQUFBQWZBQUFB
QUFBQUFRQUFBQUFBCkFBQUFBQUFBQUFBQUFBQ2dEUUFBQUFBQUFFVUFBQUFoQUFJQkFBQUFBQUFB
QUFBQUFBQUFBQUFBQVBBTkFBQUFBQUFBckFJQUFCRUwKQkFFQUFBQUFBQUFBQUFBQUFBQUFBQUFB
b0JBQUFBQUFBQUFRQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3dFQUFBQUFBQQpBQkFB
QUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQVFBQUFBQUFBQUVBQUFBQUFBQUFFQUFBQUFB
QUFBQUFBQUFBQUFBQUFBCjBCQUFBQUFBQUFBV0FBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFB
QUR3RUFBQUFBQUFBQW9BQUFBQUFBQUJBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFSQUFBQUFBQUFD
Z0FBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCRUFBQUFBQUFBWUFBQUFBQUFBQVFBQQpB
QUFBQUFBQUFBQUFBQUFBQUFBd0VRQUFBQUFBQUtFQUFBRFJXQVVCQUFBQUFBQUFBQUFBQUFBQUFB
QUFBT0FSQUFBQUFBQUFHQUFBCkFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQklBQUFBQUFB
QUtBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVnQUEKQUFBQUFBb0FBQUFBQUFBQkFB
QUFBQUFBQUFBQUFBQUFBQUFBQUNBU0FBQUFBQUFBQ2dBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFB
QQpBQUFBTUJJQUFBQUFBQUFLQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFFZ0FBQUFB
QUFBb0FBQUFBQUFBQkFBQUFBQUFBCkFBQUFBQUFBQUFBQUFGQVNBQUFBQUFBQWJBQUFBQ0VBQWdF
QUFBQUFBQUFBQUFBQUFBQUFBQUFBd0JJQUFBQUFBQUJIQUFBQUFBQUEKQVFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFRRXdBQUFBQUFBRklBQUFBQkFBRUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFIQVRBQUFB
QUFBQQpVZ0FBQUNFQUFnRUFBQUFBQUFBQUFBQUFBQUFBQUFBQTBCTUFBQUFBQUFDWEFBQUFJUUFD
QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJ3CkZBQUFBQUFBQUVBQUFBQUJBQUVCQUFBQUFBQUFBQUFB
QUFBQUFBQUFBTEFVQUFBQUFBQUFoZ0FBQUdFQkF3RUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFRQlVB
QUFBQUFBQ0xBQUFBWVFFREFRQUFBQUFBQUFBQUFBQUFBQUFBQUFEUUZRQUFBQUFBQUVFQUFBQWhB
QUlCQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUNBV0FBQUFBQUFBQmdBQUFBQUFBQUVBQUFBQUFBQUFB
QUFBQUFBQUFBQUFNQllBQUFBQUFBQVJBQUFBCkFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFG
Z0FBQUFBQUFCRUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUhBV0FBQUEKQUFBQUZRQUFB
QUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0JZQUFBQUFBQUNEQUFBQUFBQUFBUUFBQUFBQUFB
QUFBQUFBQUFBQQpBQUFnRndBQUFBQUFBSDhCQUFBUkN3UUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFL
QVlBQUFBQUFBQVdnUUFBTkZZQlFFQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFCMEFBQUFBQUFBUEFB
QUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRSFFBQUFBQUFBSFVBQUFBaEFBSUIKQUFBQUFB
QUFBQUFBQUFBQUFBQUFBSkFkQUFBQUFBQUFGQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFB
QXNCMEFBQUFBQUFCNwpBQUFBMFZnRkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0hnQUFBQUFBQURn
QUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBSEFlCkFBQUFBQUFBcmdNQUFCRUxCQUVBQUFB
QUFBQUFBQUFBQUFBQUFBQUFJQ0lBQUFBQUFBQXhBQUFBQVFBQkFRQUFBQUFBQUFBQUFBQUEKQUFB
QUFBQmdJZ0FBQUFBQUFIZ0FBQUFoQUFJQkFBQUFBQUFBQUFBQUFBQUFBQUFBQU9BaUFBQUFBQUFB
Y1FBQUFCRUxCQUVBQUFBQQpBQUFBQUFBQUFBQUFBQUFBWUNNQUFBQUFBQUJXQUFBQVlRRURBUUFB
QUFBQUFBQUFBQUFBQUFBQUFBREFJd0FBQUFBQUFDWUFBQUFBCkFBQUJBQUFBQUFBQUFBQUFBQUFB
QUFBQUFQQWpBQUFBQUFBQUlRRUFBQkVMQkFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUNVQUFBQUEK
QUFBS0FBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3SlFBQUFBQUFBQW9BQUFBQUFBQUJB
QUFBQUFBQUFBQUFBQUFBQUFBQQpBRUFsQUFBQUFBQUFDd0FBQUFBQUFBRUFBQUFBQUFBQUFBQUFB
QUFBQUFBQVVDVUFBQUFBQUFDbkFBQUFFUXNFQVFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUpnQUFB
QUFBQUFvQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFtQUFBQUFBQUFEZ0FBQUFBQUFB
RUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFJQ1lBQUFBQUFBQUtBQUFBQUFBQUFRQUFBQUFBQUFBQUFB
QUFBQUFBQUFBd0pnQUFBQUFBQUd3QgpBQUFoQUFJQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUtBbkFB
QUFBQUFBK0FBQUFDRUFBZ0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFvQ2dBCkFBQUFBQUFLQUFBQUFB
QUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3dLQUFBQUFBQUFETUFBQUFBQUFBQkFBQUFBQUFBQUFB
QUFBQUEKQUFBQUFQQW9BQUFBQUFBQUFBRUFBTkZZQlFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBOENr
QUFBQUFBQUFLQUFBQUFBQUFBUUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBS2dBQUFBQUFBQXNBQUFB
QUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQXFBQUFBQUFBQUNnQUFBQUFBCkFBRUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUlDb0FBQUFBQUFBS0FBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3
S2dBQUFBQUEKQURvQUFBQmhBUU1CQUFBQUFBQUFBQUFBQUFBQUFBQUFBSEFxQUFBQUFBQUFWZ0FB
QUJFTEJBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQQowQ29BQUFBQUFBQTNBQUFBSVFBQ0FRQUFBQUFB
QUFBQUFBQUFBQUFBQUFBUUt3QUFBQUFBQUJRQUFBQUFBQUFCQUFBQUFBQUFBQUFBCkFBQUFBQUFB
QURBckFBQUFBQUFBRkFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQ3NBQUFBQUFBRG9B
QUFBMFZnRkFRQUEKQUFBQUFBQUFBQUFBQUFBQUFBQkFMQUFBQUFBQUFBNEFBQUFBQUFBQkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUZBc0FBQUFBQUFBQ3dBQQpBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFB
QUFBWUN3QUFBQUFBQUFTQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FMQUFBCkFBQUFB
RmtCQUFEUldBVUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQXRBQUFBQUFBQUdnRUFBTkZZQlFFQUFB
QUFBQUFBQUFBQUFBQUEKQUFBQUFDOEFBQUFBQUFCeEFBQUFJUUFDQVFBQUFBQUFBQUFBQUFBQUFB
QUFBQUNBTHdBQUFBQUFBRjhBQUFBQkFBRUJBQUFBQUFBQQpBQUFBQUFBQUFBQUFBT0F2QUFBQUFB
QUFmZ0FBQUNFQUFnRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlEQUFBQUFBQUFCQUFBQUFBUUFCCkFR
QUFBQUFBQUFBQUFBQUFBQUFBQUFDZ01BQUFBQUFBQUdRQUFBQUJBQUVCQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQkF4QUFBQUFBQUEKTXdBQUFDRUFBZ0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFVREVBQUFB
QUFBQXNBQUFBSVFBQ0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFDQQpNUUFBQUFBQUFBb0FBQUFBQUFB
QkFBQUFBQUFBQUFBQUFBQUFBQUFBQUpBeEFBQUFBQUFBRkFBQUFBQUFBQUVBQUFBQUFBQUFBQUFB
CkFBQUFBQUFBc0RFQUFBQUFBQUFYQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBRFFNUUFB
QUFBQUFFWUFBQUJoQVFNQkFBQUEKQUFBQUFBQUFBQUFBQUFBQUFDQXlBQUFBQUFBQXJRQUFBTkZZ
QlFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBMERJQUFBQUFBQUF0QUFBQQpBUUFCQVFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBTXdBQUFBQUFBSElBQUFBUkN3UUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQXpB
QUFBCkFBQUEwd0FBQU5GWUJRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlEUUFBQUFBQUFDbUFBQUFF
UXNFQVFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBUU5RQUFBQUFBQUJJQUFBQUFBQUFCQUFBQUFBQUFB
QUFBQUFBQUFBQUFBREExQUFBQUFBQUFFZ0FBQUFBQUFBRUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFV
RFVBQUFBQUFBQVlBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFCd05RQUFBQUFBQUJJQUFB
QUFBQUFCCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUpBMUFBQUFBQUFBR0FBQUFBQUFBQUVBQUFBQUFB
QUFBQUFBQUFBQUFBQUFzRFVBQUFBQUFBQVMKQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFB
RFFOUUFBQUFBQUFBb0FBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQU9BMQpBQUFBQUFBQXFR
RUFBQkVMQkFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0RjQUFBQUFBQUIzQUFBQUVRc0VBUUFBQUFB
QUFBQUFBQUFBCkFBQUFBQUFRT0FBQUFBQUFBQXNBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFB
QUFDQTRBQUFBQUFBQWxBQUFBR0VCQXdFQUFBQUEKQUFBQUFBQUFBQUFBQUFBQXdEZ0FBQUFBQUFC
UUFBQUFJUUFDQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRT1FBQUFBQUFBQW9BQUFBQQpBQUFCQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQ0E1QUFBQUFBQUE3UU1BQUNFQUFnRUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUVEMEFBQUFBCkFBQllBQUFBQVFBQkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFCd1BRQUFBQUFB
QUI0QUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUpBOUFBQUFBQUFBQ3dBQUFBQUFBQUVB
QUFBQUFBQUFBQUFBQUFBQUFBQUFvRDBBQUFBQUFBQ1hBQUFBQVFBQkFRQUFBQUFBQUFBQQpBQUFB
QUFBQUFBQkFQZ0FBQUFBQUFFQUFBQUFoQUFJQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBK0FBQUFB
QUFBRndBQUFBQUFBQUVBCkFBQUFBQUFBQUFBQUFBQUFBQUFBb0Q0QUFBQUFBQUFVQUFBQUFBQUFB
UUFBQUFBQUFBQUFBQUFBQUFBQUFBREFQZ0FBQUFBQUFEZ0EKQUFBQkFBRUJBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQS9BQUFBQUFBQUV3QUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUQ4QQpB
QUFBQUFBR0FBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3UHdBQUFBQUFBSjBBQUFCaEFR
TUJBQUFBQUFBQUFBQUFBQUFBCkFBQUFBTkEvQUFBQUFBQUEzQUFBQU5GWUJRRUFBQUFBQUFBQUFB
QUFBQUFBQUFBQXNFQUFBQUFBQUFCT0FRQUFFUXNFQVFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQVFn
QUFBQUFBQUZBQUFBQWhBQUlCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkJDQUFBQUFBQUFsd0lBQUJF
TApCQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUE4RVFBQUFBQUFBQXVBQUFBQVFBQkFRQUFBQUFBQUFB
QUFBQUFBQUFBQUFBZ1JRQUFBQUFBCkFDNEFBQUFCQUFFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUZC
RkFBQUFBQUFBWEFBQUFBRUFBUUVBQUFBQUFBQUFBQUFBQUFBQUFBQUEKc0VVQUFBQUFBQUJ3QVFB
QTBWZ0ZBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdSd0FBQUFBQUFMb0FBQUJoQVFNQkFBQUFBQUFB
QUFBQQpBQUFBQUFBQUFPQkhBQUFBQUFBQTB3RUFBTkZZQlFFQUFBQUFBQUFBQUFBQUFBQUFBQUFB
d0VrQUFBQUFBQUNuQUFBQVlRRURBUUFBCkFBQUFBQUFBQUFBQUFBQUFBQUJ3U2dBQUFBQUFBTllB
QUFCaEFRTUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQkxBQUFBQUFBQVpRQUEKQUNFQUFnRUFBQUFB
QUFBQUFBQUFBQUFBQUFBQXdFc0FBQUFBQUFCeEFBQUFBUUFCQVFBQUFBQUFBQUFBQUFBQUFBQUFB
QUJBVEFBQQpBQUFBQUFvQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkJNQUFBQUFBQUFD
Z0FBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFZRXdBQUFBQUFBQUtBQUFBQUFBQUFRQUFB
QUFBQUFBQUFBQUFBQUFBQUFCd1RBQUFBQUFBQUFvQUFBQUFBQUFCQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUlCTUFBQUFBQUFBQ2dBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFrRXdBQUFBQUFB
QWZBQUFBQUFBQQpBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3dUQUFBQUFBQUFCUUFBQUFBQUFBQkFB
QUFBQUFBQUFBQUFBQUFBQUFBQU5CTUFBQUFBQUFBCk1nQUFBQ0VBQWdFQUFBQUFBQUFBQUFBQUFB
QUFBQUFBRUUwQUFBQUFBQUFtQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQkEKVFFBQUFB
QUFBQW9BQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQk5BQUFBQUFBQUNnQUFBQUFBQUFF
QUFBQUFBQUFBQUFBQQpBQUFBQUFBQVlFMEFBQUFBQUFBUEFBQUFBQUFBQVFBQUFBQUFBQUFBQUFB
QUFBQUFBQUJ3VFFBQUFBQUFBRmNBQUFBaEFBSUJBQUFBCkFBQUFBQUFBQUFBQUFBQUFBTkJOQUFB
QUFBQUFId0FBQUFFQUFRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQThFMEFBQUFBQUFBaUFBQUEKQVFB
QkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1RnQUFBQUFBQUNZQUFBQUJBQUVCQUFBQUFBQUFBQUFB
QUFBQUFBQUFBRkJPQUFBQQpBQUFBSUFBQUFDRUFBZ0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFjRTRB
QUFBQUFBQkJBQUFBWVFFREFRQUFBQUFBQUFBQUFBQUFBQUFBCkFBREFUZ0FBQUFBQUFFOEFBQUFo
QUFJQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCUEFBQUFBQUFBQ2dBQUFBQUFBQUVBQUFBQUFBQUEK
QUFBQUFBQUFBQUFBSUU4QUFBQUFBQUFWQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFU
d0FBQUFBQUFORUFBQURSV0FVQgpBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQlFBQUFBQUFBQXRBQUFB
R0VCQXdFQUFBQUFBQUFBQUFBQUFBQUFBQUFBNEZBQUFBQUFBQUFrCkFBQUFBQUFBQVFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFRVVFBQUFBQUFBR29BQUFBaEFBSUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFJ
QlIKQUFBQUFBQUFRQUFBQUFFQUFRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdGRUFBQUFBQUFCS0F3
QUFFUXNFQVFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBUVZRQUFBQUFBQUI4QUFBQUFBQUFCQUFBQUFB
QUFBQUFBQUFBQUFBQUFBREJWQUFBQUFBQUFId0FBQUFBQUFBRUFBQUFBCkFBQUFBQUFBQUFBQUFB
QUFVRlVBQUFBQUFBQVZBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFCd1ZRQUFBQUFBQUJV
QUFBQUEKQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUpCVkFBQUFBQUFBQ2dBQUFBQUFBQUVBQUFB
QUFBQUFBQUFBQUFBQUFBQUFvRlVBQUFBQQpBQUFlQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFB
QUFBREFWUUFBQUFBQUFCd0FBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBCkFPQlZBQUFBQUFB
QUZnQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZZQUFBQUFBQUFZQUFBQUFBQUFBUUFB
QUFBQUFBQUEKQUFBQUFBQUFBQUFnVmdBQUFBQUFBQklBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFB
QUFBQUFFQldBQUFBQUFBQUlRQUFBQUFBQUFFQQpBQUFBQUFBQUFBQUFBQUFBQUFBQWNGWUFBQUFB
QUFBNkFBQUFBUUFCQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUN3VmdBQUFBQUFBQW9BCkFBQUFBQUFC
QUFBQUFBQUFBQUFBQUFBQUFBQUFBTUJXQUFBQUFBQUFDZ0FBQUFBQUFBRUFBQUFBQUFBQUFBQUFB
QUFBQUFBQTBGWUEKQUFBQUFBQUtBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFEZ1ZnQUFB
QUFBQUlJQUFBQVJDd1FCQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUhCWEFBQUFBQUFBT1FBQUFDRUFB
Z0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFzRmNBQUFBQUFBQlJBQUFBSVFBQ0FRQUFBQUFBCkFBQUFB
QUFBQUFBQUFBQVFXQUFBQUFBQUFBb0FBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCWUFB
QUFBQUFBTmdBQUFBQUEKQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUZnQUFBQUFBQUF5QUFBQUFB
QUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dXQUFBQUFBQQpBRElBQUFBQUFBQUJBQUFBQUFBQUFB
QUFBQUFBQUFBQUFPQllBQUFBQUFBQU1nQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBCklG
a0FBQUFBQUFEaEFBQUFBUUFCQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRV2dBQUFBQUFBRVlCQUFC
aEFRTUJBQUFBQUFBQUFBQUEKQUFBQUFBQUFBR0JiQUFBQUFBQUFaUUVBQUNFQUFnRUFBQUFBQUFB
QUFBQUFBQUFBQUFBQTBGd0FBQUFBQUFBTkFBQUFBQUFBQVFBQQpBQUFBQUFBQUFBQUFBQUFBQUFE
Z1hBQUFBQUFBQUpNQkFBQmhBUU1CQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUJlQUFBQUFBQUFnd0FB
CkFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRjhBQUFBQUFBQVFBQUFBQUFBQUFRQUFBQUFB
QUFBQUFBQUFBQUFBQUFBZ1h3QUEKQUFBQUFLQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFB
QU1CZkFBQUFBQUFBRFFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQQpBQUFBMEY4QUFBQUFBQUJF
QVFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdZUUFBQUFBQUFDQUFBQUFBQUFBQkFBQUFB
QUFBCkFBQUFBQUFBQUFBQUFCUUFBQUFBQUFBQUFYcFNBQUY0RUFFUURBY0lrQUVBQUNRQUFBQWNB
QUFBQ0FQOS8vLy8vLzh5QUFBQUFBQUEKQUFCQkRoQ0dBa01OQmdBQUFBQUFBQUFzQUFBQVJBQUFB
Q0FEL2YvLy8vLy9aZ0VBQUFBQUFBQUFRUTRRaGdKRERRWk5nd2VNQm8wRgpqZ1NQQXdBQUFBQWtB
QUFBZEFBQUFHQUUvZi8vLy8vL3BRQUFBQUFBQUFBQVFRNFFoZ0pERFFaR2d3V09CSThESkFBQUFK
d0FBQURvCkJQMy8vLy8vLzg4QUFBQUFBQUFBQUVFT0VJWUNRdzBHUTRNRWpnTUFBQ1FBQUFERUFB
QUFrQVg5Ly8vLy8vOGpBQUFBQUFBQUFBQkIKRGhDR0FrTU5CZ0FBQUFBQUFBQWtBQUFBN0FBQUFK
Z0YvZi8vLy8vL1JRQUFBQUFBQUFBQVFRNFFoZ0pERFFaQ2d3TUFBQUFBSkFBQQpBQlFCQUFEQUJm
My8vLy8vL3dvQUFBQUFBQUFBQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ1FBQUFBOEFRQUFxQVg5Ly8v
Ly8vOXJBQUFBCkFBQUFBQUJCRGhDR0FrTU5Ca09EQkk0REFBQXNBQUFBWkFFQUFQQUYvZi8vLy8v
LzF3QUFBQUFBQUFBQVFRNFFoZ0pERFFaS2d3ZU0KQm8wRmpnU1BBd0FBQUFBc0FBQUFsQUVBQUtB
Ry9mLy8vLy8vdmdBQUFBQUFBQUFBUVE0UWhnSkREUVpLZ3dlTUJvMEZqZ1NQQXdBQQpBQUFrQUFB
QXhBRUFBREFIL2YvLy8vLy9ZUUFBQUFBQUFBQUFRUTRRaGdKRERRWkRnd1NPQXdBQUxBQUFBT3dC
QUFCNEIvMy8vLy8vCi8wRUJBQUFBQUFBQUFFRU9FSVlDUXcwR1VJTUhqQWFOQlk0RWp3TUFBQUFB
SkFBQUFCd0NBQUNZQ1AzLy8vLy8velFBQUFBQUFBQUEKQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ1FB
QUFCRUFnQUFzQWo5Ly8vLy8vOEtBQUFBQUFBQUFBQkJEaENHQWtNTkJnQUFBQUFBQUFBawpBQUFB
YkFJQUFKZ0kvZi8vLy8vL09nQUFBQUFBQUFBQVFRNFFoZ0pERFFaRGd3U09Bd0FBSkFBQUFKUUNB
QUN3Q1AzLy8vLy8vN0FBCkFBQUFBQUFBQUVFT0VJWUNRdzBHUTRNRWpnTUFBQ1FBQUFDOEFnQUFP
QW45Ly8vLy8vK09BQUFBQUFBQUFBQkJEaENHQWtNTkJrT0QKQkk0REFBQWtBQUFBNUFJQUFLQUov
Zi8vLy8vL0VnQUFBQUFBQUFBQVFRNFFoZ0pERFFZQUFBQUFBQUFBSkFBQUFBd0RBQUNZQ2YzLwov
Ly8vL3hJQUFBQUFBQUFBQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ1FBQUFBMEF3QUFrQW45Ly8vLy8v
OWFBQUFBQUFBQUFBQkJEaENHCkFrTU5Ca09EQkk0REFBQXNBQUFBWEFNQUFNZ0ovZi8vLy8vL0pB
RUFBQUFBQUFBQVFRNFFoZ0pERFFaTGd3YU1CWTRFandNQUFBQUEKQUFBa0FBQUFqQU1BQU1nSy9m
Ly8vLy8vVlFBQUFBQUFBQUFBUVE0UWhnSkREUVlBQUFBQUFBQUFMQUFBQUxRREFBQUFDLzMvLy8v
LwovejBCQUFBQUFBQUFBRUVPRUlZQ1F3MEdTb01IakFhTkJZNEVqd01BQUFBQUpBQUFBT1FEQUFB
UURQMy8vLy8vL3hZQUFBQUFBQUFBCkFFRU9FSVlDUXcwR0FBQUFBQUFBQUNRQUFBQU1CQUFBQ0F6
OS8vLy8vLzhLQUFBQUFBQUFBQUJCRGhDR0FrTU5CZ0FBQUFBQUFBQWsKQUFBQU5BUUFBUEFML2Yv
Ly8vLy9kd0FBQUFBQUFBQUFRUTRRaGdKRERRWkdnd1dPQkk4REpBQUFBRndFQUFCSURQMy8vLy8v
L3g4QQpBQUFBQUFBQUFFRU9FSVlDUXcwR0FBQUFBQUFBQUNRQUFBQ0VCQUFBUUF6OS8vLy8vLzlG
QUFBQUFBQUFBQUJCRGhDR0FrTU5Ca09ECkJJNERBQUFzQUFBQXJBUUFBR2dNL2YvLy8vLy9yQUlB
QUFBQUFBQUFRUTRRaGdKRERRWkxnd2FNQlk0RWp3TUFBQUFBQUFBa0FBQUEKM0FRQUFPZ08vZi8v
Ly8vL0VBQUFBQUFBQUFBQVFRNFFoZ0pERFFZQUFBQUFBQUFBSkFBQUFBUUZBQURRRHYzLy8vLy8v
eEFBQUFBQQpBQUFBQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ1FBQUFBc0JRQUF1QTc5Ly8vLy8vOFFB
QUFBQUFBQUFBQkJEaENHQWtNTkJnQUFBQUFBCkFBQWtBQUFBVkFVQUFLQU8vZi8vLy8vL0ZnQUFB
QUFBQUFBQVFRNFFoZ0pERFFZQUFBQUFBQUFBSkFBQUFId0ZBQUNZRHYzLy8vLy8KL3dvQUFBQUFB
QUFBQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ1FBQUFDa0JRQUFnQTc5Ly8vLy8vOEtBQUFBQUFBQUFB
QkJEaENHQWtNTgpCZ0FBQUFBQUFBQWtBQUFBekFVQUFHZ08vZi8vLy8vL0dBQUFBQUFBQUFBQVFR
NFFoZ0pERFFZQUFBQUFBQUFBTEFBQUFQUUZBQUJnCkR2My8vLy8vLzZFQUFBQUFBQUFBQUVFT0VJ
WUNRdzBHU29NSGpBYU5CWTRFandNQUFBQUFKQUFBQUNRR0FBRGdEdjMvLy8vLy94Z0EKQUFBQUFB
QUFBRUVPRUlZQ1F3MEdBQUFBQUFBQUFDUUFBQUJNQmdBQTJBNzkvLy8vLy84S0FBQUFBQUFBQUFC
QkRoQ0dBa01OQmdBQQpBQUFBQUFBa0FBQUFkQVlBQU1BTy9mLy8vLy8vQ2dBQUFBQUFBQUFBUVE0
UWhnSkREUVlBQUFBQUFBQUFKQUFBQUp3R0FBQ29EdjMvCi8vLy8vd29BQUFBQUFBQUFBRUVPRUlZ
Q1F3MEdBQUFBQUFBQUFDUUFBQURFQmdBQWtBNzkvLy8vLy84S0FBQUFBQUFBQUFCQkRoQ0cKQWtN
TkJnQUFBQUFBQUFBa0FBQUE3QVlBQUhnTy9mLy8vLy8vQ2dBQUFBQUFBQUFBUVE0UWhnSkREUVlB
QUFBQUFBQUFKQUFBQUJRSApBQUJnRHYzLy8vLy8vMndBQUFBQUFBQUFBRUVPRUlZQ1F3MEdRNE1F
amdNQUFDUUFBQUE4QndBQXFBNzkvLy8vLy85SEFBQUFBQUFBCkFBQkJEaENHQWtNTkJnQUFBQUFB
QUFBa0FBQUFaQWNBQU5BTy9mLy8vLy8vVWdBQUFBQUFBQUFBUVE0UWhnSkREUVpDZ3dNQUFBQUEK
SkFBQUFJd0hBQUFJRC8zLy8vLy8vMUlBQUFBQUFBQUFBRUVPRUlZQ1F3MEdRNE1FamdNQUFDUUFB
QUMwQndBQVFBLzkvLy8vLy8rWApBQUFBQUFBQUFBQkJEaENHQWtNTkJrT0RCSTREQUFBa0FBQUEz
QWNBQUxnUC9mLy8vLy8vUUFBQUFBQUFBQUFBUVE0UWhnSkREUVpDCmd3TUFBQUFBSkFBQUFBUUlB
QURRRC8zLy8vLy8vNFlBQUFBQUFBQUFBRUVPRUlZQ1F3MEdSb01GamdTUEF5UUFBQUFzQ0FBQU9C
RDkKLy8vLy8vK0xBQUFBQUFBQUFBQkJEaENHQWtNTkJrYURCWTRFandNa0FBQUFWQWdBQUtBUS9m
Ly8vLy8vUVFBQUFBQUFBQUFBUVE0UQpoZ0pERFFaRGd3U09Bd0FBSkFBQUFId0lBQURJRVAzLy8v
Ly8vd1lBQUFBQUFBQUFBRUVPRUlZQ1F3MEdBQUFBQUFBQUFDUUFBQUNrCkNBQUFzQkQ5Ly8vLy8v
OFJBQUFBQUFBQUFBQkJEaENHQWtNTkJnQUFBQUFBQUFBa0FBQUF6QWdBQUtnUS9mLy8vLy8vRVFB
QUFBQUEKQUFBQVFRNFFoZ0pERFFZQUFBQUFBQUFBSkFBQUFQUUlBQUNnRVAzLy8vLy8veFVBQUFB
QUFBQUFBRUVPRUlZQ1F3MEdBQUFBQUFBQQpBQ1FBQUFBY0NRQUFtQkQ5Ly8vLy8vK0RBQUFBQUFB
QUFBQkJEaENHQWtNTkJnQUFBQUFBQUFBc0FBQUFSQWtBQUFBUi9mLy8vLy8vCmZ3RUFBQUFBQUFB
QVFRNFFoZ0pERFFaT2d3YU1CWTRFandNQUFBQUFBQUFzQUFBQWRBa0FBRkFTL2YvLy8vLy9XZ1FB
QUFBQUFBQUEKUVE0UWhnSkREUVpRZ3dlTUJvMEZqZ1NQQXdBQUFBQWtBQUFBcEFrQUFJQVcvZi8v
Ly8vL0R3QUFBQUFBQUFBQVFRNFFoZ0pERFFZQQpBQUFBQUFBQUpBQUFBTXdKQUFCb0Z2My8vLy8v
LzNVQUFBQUFBQUFBQUVFT0VJWUNRdzBHUjRNRWpnTUFBQ1FBQUFEMENRQUF3QmI5Ci8vLy8vLzhV
QUFBQUFBQUFBQUJCRGhDR0FrTU5CZ0FBQUFBQUFBQXNBQUFBSEFvQUFMZ1cvZi8vLy8vL2V3QUFB
QUFBQUFBQVFRNFEKaGdKRERRWk5nd2VNQm8wRmpnU1BBd0FBQUFBa0FBQUFUQW9BQUFnWC9mLy8v
Ly8vT0FBQUFBQUFBQUFBUVE0UWhnSkREUVlBQUFBQQpBQUFBTEFBQUFIUUtBQUFnRi8zLy8vLy8v
NjREQUFBQUFBQUFBRUVPRUlZQ1F3MEdTNE1HakFXT0JJOERBQUFBQUFBQUpBQUFBS1FLCkFBQ2dH
djMvLy8vLy96RUFBQUFBQUFBQUFFRU9FSVlDUXcwR1FvTURBQUFBQUNRQUFBRE1DZ0FBdUJyOS8v
Ly8vLzk0QUFBQUFBQUEKQUFCQkRoQ0dBa01OQmtPREJJNERBQUFzQUFBQTlBb0FBQkFiL2YvLy8v
Ly9jUUFBQUFBQUFBQUFRUTRRaGdKRERRWkhnd2FNQlk0RQpqd01BQUFBQUFBQWtBQUFBSkFzQUFH
QWIvZi8vLy8vL1ZnQUFBQUFBQUFBQVFRNFFoZ0pERFFaR2d3V09CSThESkFBQUFFd0xBQUNZCkcv
My8vLy8vL3lZQUFBQUFBQUFBQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ3dBQUFCMEN3QUFvQnY5Ly8v
Ly8vOGhBUUFBQUFBQUFBQkIKRGhDR0FrTU5Ca3VEQm93RmpnU1BBd0FBQUFBQUFDUUFBQUNrQ3dB
QW9CejkvLy8vLy84S0FBQUFBQUFBQUFCQkRoQ0dBa01OQmdBQQpBQUFBQUFBa0FBQUF6QXNBQUln
Yy9mLy8vLy8vQ2dBQUFBQUFBQUFBUVE0UWhnSkREUVlBQUFBQUFBQUFKQUFBQVBRTEFBQndIUDMv
Ci8vLy8vd3NBQUFBQUFBQUFBRUVPRUlZQ1F3MEdBQUFBQUFBQUFDd0FBQUFjREFBQVdCejkvLy8v
Ly8rbkFBQUFBQUFBQUFCQkRoQ0cKQWtNTkJrdURCb3dGamdTUEF3QUFBQUFBQUNRQUFBQk1EQUFB
MkJ6OS8vLy8vLzhLQUFBQUFBQUFBQUJCRGhDR0FrTU5CZ0FBQUFBQQpBQUFrQUFBQWRBd0FBTUFj
L2YvLy8vLy9EZ0FBQUFBQUFBQUFRUTRRaGdKRERRWUFBQUFBQUFBQUpBQUFBSndNQUFDb0hQMy8v
Ly8vCi93b0FBQUFBQUFBQUFFRU9FSVlDUXcwR0FBQUFBQUFBQUNRQUFBREVEQUFBa0J6OS8vLy8v
LzlzQVFBQUFBQUFBQUJCRGhDR0FrTU4KQmtxREJJNERBQUFrQUFBQTdBd0FBTmdkL2YvLy8vLy8r
QUFBQUFBQUFBQUFRUTRRaGdKRERRWktnd1NPQXdBQUpBQUFBQlFOQUFDdwpIdjMvLy8vLy93b0FB
QUFBQUFBQUFFRU9FSVlDUXcwR0FBQUFBQUFBQUNRQUFBQThEUUFBbUI3OS8vLy8vLzh6QUFBQUFB
QUFBQUJCCkRoQ0dBa01OQmdBQUFBQUFBQUFzQUFBQVpBMEFBTEFlL2YvLy8vLy9BQUVBQUFBQUFB
QUFRUTRRaGdKRERRWktnd2VNQm8wRmpnU1AKQXdBQUFBQWtBQUFBbEEwQUFJQWYvZi8vLy8vL0Nn
QUFBQUFBQUFBQVFRNFFoZ0pERFFZQUFBQUFBQUFBSkFBQUFMd05BQUJvSC8zLwovLy8vL3dzQUFB
QUFBQUFBQUVFT0VJWUNRdzBHQUFBQUFBQUFBQ1FBQUFEa0RRQUFVQi85Ly8vLy8vOEtBQUFBQUFB
QUFBQkJEaENHCkFrTU5CZ0FBQUFBQUFBQWtBQUFBREE0QUFEZ2YvZi8vLy8vL0NnQUFBQUFBQUFB
QVFRNFFoZ0pERFFZQUFBQUFBQUFBSkFBQUFEUU8KQUFBZ0gvMy8vLy8vL3pvQUFBQUFBQUFBQUVF
T0VJWUNRdzBHUm9NRmpnU1BBeXdBQUFCY0RnQUFPQi85Ly8vLy8vOVdBQUFBQUFBQQpBQUJCRGhD
R0FrTU5Ca2VEQm93RmpnU1BBd0FBQUFBQUFDUUFBQUNNRGdBQWFCLzkvLy8vLy84M0FBQUFBQUFB
QUFCQkRoQ0dBa01OCkJrT0RCSTREQUFBa0FBQUF0QTRBQUlBZi9mLy8vLy8vRkFBQUFBQUFBQUFB
UVE0UWhnSkREUVlBQUFBQUFBQUFKQUFBQU53T0FBQjQKSC8zLy8vLy8veFFBQUFBQUFBQUFBRUVP
RUlZQ1F3MEdBQUFBQUFBQUFDd0FBQUFFRHdBQWNCLzkvLy8vLy8vb0FBQUFBQUFBQUFCQgpEaENH
QWtNTkJrcURCNHdHalFXT0JJOERBQUFBQUNRQUFBQTBEd0FBTUNEOS8vLy8vLzhPQUFBQUFBQUFB
QUJCRGhDR0FrTU5CZ0FBCkFBQUFBQUFrQUFBQVhBOEFBQmdnL2YvLy8vLy9Dd0FBQUFBQUFBQUFR
UTRRaGdKRERRWUFBQUFBQUFBQUpBQUFBSVFQQUFBQUlQMy8KLy8vLy94SUFBQUFBQUFBQUFFRU9F
SVlDUXcwR0FBQUFBQUFBQUN3QUFBQ3NEd0FBK0IvOS8vLy8vLzlaQVFBQUFBQUFBQUJCRGhDRwpB
a01OQmsyREI0d0dqUVdPQkk4REFBQUFBQ3dBQUFEY0R3QUFLQ0g5Ly8vLy8vOGFBUUFBQUFBQUFB
QkJEaENHQWtNTkJrMkRCNHdHCmpRV09CSThEQUFBQUFDUUFBQUFNRUFBQUdDTDkvLy8vLy85eEFB
QUFBQUFBQUFCQkRoQ0dBa01OQmtPREJJNERBQUFrQUFBQU5CQUEKQUhBaS9mLy8vLy8vWHdBQUFB
QUFBQUFBUVE0UWhnSkREUVpDZ3dNQUFBQUFKQUFBQUZ3UUFBQ29JdjMvLy8vLy8zNEFBQUFBQUFB
QQpBRUVPRUlZQ1F3MEdSNE1FamdNQUFDUUFBQUNFRUFBQUFDUDkvLy8vLy85QUFBQUFBQUFBQUFC
QkRoQ0dBa01OQmtLREF3QUFBQUFrCkFBQUFyQkFBQUJnai9mLy8vLy8vWkFBQUFBQUFBQUFBUVE0
UWhnSkREUVpDZ3dNQUFBQUFKQUFBQU5RUUFBQmdJLzMvLy8vLy96TUEKQUFBQUFBQUFBRUVPRUlZ
Q1F3MEdRNE1FamdNQUFDUUFBQUQ4RUFBQWVDUDkvLy8vLy84c0FBQUFBQUFBQUFCQkRoQ0dBa01O
QmtPRApCSTREQUFBa0FBQUFKQkVBQUlBai9mLy8vLy8vQ2dBQUFBQUFBQUFBUVE0UWhnSkREUVlB
QUFBQUFBQUFKQUFBQUV3UkFBQm9JLzMvCi8vLy8veFFBQUFBQUFBQUFBRUVPRUlZQ1F3MEdBQUFB
QUFBQUFDUUFBQUIwRVFBQVlDUDkvLy8vLy84WEFBQUFBQUFBQUFCQkRoQ0cKQWtNTkJnQUFBQUFB
QUFBa0FBQUFuQkVBQUZnai9mLy8vLy8vUmdBQUFBQUFBQUFBUVE0UWhnSkREUVpHZ3dXT0JJOERM
QUFBQU1RUgpBQUNBSS8zLy8vLy8vNjBBQUFBQUFBQUFBRUVPRUlZQ1F3MEdTb01IakFhTkJZNEVq
d01BQUFBQUpBQUFBUFFSQUFBQUpQMy8vLy8vCi95MEFBQUFBQUFBQUFFRU9FSVlDUXcwR1FvTURB
QUFBQUN3QUFBQWNFZ0FBQ0NUOS8vLy8vLzl5QUFBQUFBQUFBQUJCRGhDR0FrTU4KQmtlREJvd0Zq
Z1NQQXdBQUFBQUFBQ3dBQUFCTUVnQUFXQ1Q5Ly8vLy8vL1RBQUFBQUFBQUFBQkJEaENHQWtNTkJr
MkRCNHdHalFXTwpCSThEQUFBQUFDd0FBQUI4RWdBQUNDWDkvLy8vLy8rbUFBQUFBQUFBQUFCQkRo
Q0dBa01OQmt1REJvd0ZqZ1NQQXdBQUFBQUFBQ1FBCkFBQ3NFZ0FBaUNYOS8vLy8vLzhTQUFBQUFB
QUFBQUJCRGhDR0FrTU5CZ0FBQUFBQUFBQWtBQUFBMUJJQUFJQWwvZi8vLy8vL0VnQUEKQUFBQUFB
QUFRUTRRaGdKRERRWUFBQUFBQUFBQUpBQUFBUHdTQUFCNEpmMy8vLy8vL3hnQUFBQUFBQUFBQUVF
T0VJWUNRdzBHQUFBQQpBQUFBQUNRQUFBQWtFd0FBY0NYOS8vLy8vLzhTQUFBQUFBQUFBQUJCRGhD
R0FrTU5CZ0FBQUFBQUFBQWtBQUFBVEJNQUFHZ2wvZi8vCi8vLy9HQUFBQUFBQUFBQUFRUTRRaGdK
RERRWUFBQUFBQUFBQUpBQUFBSFFUQUFCZ0pmMy8vLy8vL3hJQUFBQUFBQUFBQUVFT0VJWUMKUXcw
R0FBQUFBQUFBQUNRQUFBQ2NFd0FBV0NYOS8vLy8vLzhLQUFBQUFBQUFBQUJCRGhDR0FrTU5CZ0FB
QUFBQUFBQXNBQUFBeEJNQQpBRUFsL2YvLy8vLy9xUUVBQUFBQUFBQUFRUTRRaGdKRERRWk9nd2FN
Qlk0RWp3TUFBQUFBQUFBc0FBQUE5Qk1BQU1BbS9mLy8vLy8vCmR3QUFBQUFBQUFBQVFRNFFoZ0pE
RFFaSGd3YU1CWTRFandNQUFBQUFBQUFrQUFBQUpCUUFBQkFuL2YvLy8vLy9Dd0FBQUFBQUFBQUEK
UVE0UWhnSkREUVlBQUFBQUFBQUFKQUFBQUV3VUFBRDRKdjMvLy8vLy81UUFBQUFBQUFBQUFFRU9F
SVlDUXcwR1JvTUZqZ1NQQXlRQQpBQUIwRkFBQWNDZjkvLy8vLy85UUFBQUFBQUFBQUFCQkRoQ0dB
a01OQmtPREJJNERBQUFrQUFBQW5CUUFBSmduL2YvLy8vLy9DZ0FBCkFBQUFBQUFBUVE0UWhnSkRE
UVlBQUFBQUFBQUFKQUFBQU1RVUFBQ0FKLzMvLy8vLy8rMERBQUFBQUFBQUFFRU9FSVlDUXcwR1Nv
TUUKamdNQUFDUUFBQURzRkFBQVNDdjkvLy8vLy85WUFBQUFBQUFBQUFCQkRoQ0dBa01OQmtXREF3
QUFBQUFrQUFBQUZCVUFBSUFyL2YvLwovLy8vSGdBQUFBQUFBQUFBUVE0UWhnSkREUVlBQUFBQUFB
QUFKQUFBQUR3VkFBQjRLLzMvLy8vLy93c0FBQUFBQUFBQUFFRU9FSVlDClF3MEdBQUFBQUFBQUFD
UUFBQUJrRlFBQVlDdjkvLy8vLy8rWEFBQUFBQUFBQUFCQkRoQ0dBa01OQmtXREF3QUFBQUFrQUFB
QWpCVUEKQU5nci9mLy8vLy8vUUFBQUFBQUFBQUFBUVE0UWhnSkREUVpEZ3dTT0F3QUFKQUFBQUxR
VkFBRHdLLzMvLy8vLy94Y0FBQUFBQUFBQQpBRUVPRUlZQ1F3MEdBQUFBQUFBQUFDUUFBQURjRlFB
QTZDdjkvLy8vLy84VUFBQUFBQUFBQUFCQkRoQ0dBa01OQmdBQUFBQUFBQUFrCkFBQUFCQllBQU9B
ci9mLy8vLy8vT0FBQUFBQUFBQUFBUVE0UWhnSkREUVpDZ3dNQUFBQUFKQUFBQUN3V0FBRDRLLzMv
Ly8vLy94TUEKQUFBQUFBQUFBRUVPRUlZQ1F3MEdBQUFBQUFBQUFDUUFBQUJVRmdBQThDdjkvLy8v
Ly84R0FBQUFBQUFBQUFCQkRoQ0dBa01OQmdBQQpBQUFBQUFBa0FBQUFmQllBQU5nci9mLy8vLy8v
blFBQUFBQUFBQUFBUVE0UWhnSkREUVpKZ3dXT0JJOERMQUFBQUtRV0FBQlFMUDMvCi8vLy8vOXdB
QUFBQUFBQUFBRUVPRUlZQ1F3MEdUWU1IakFhTkJZNEVqd01BQUFBQUxBQUFBTlFXQUFBQUxmMy8v
Ly8vLzA0QkFBQUEKQUFBQUFFRU9FSVlDUXcwR1I0TUdqQVdPQkk4REFBQUFBQUFBSkFBQUFBUVhB
QUFnTHYzLy8vLy8vMUFBQUFBQUFBQUFBRUVPRUlZQwpRdzBHUjRNRWpnTUFBQ3dBQUFBc0Z3QUFT
Qzc5Ly8vLy8vK1hBZ0FBQUFBQUFBQkJEaENHQWtNTkJrNkRCb3dGamdTUEF3QUFBQUFBCkFDUUFB
QUJjRndBQXVERDkvLy8vLy84dUFBQUFBQUFBQUFCQkRoQ0dBa01OQmtLREF3QUFBQUFrQUFBQWhC
Y0FBTUF3L2YvLy8vLy8KTGdBQUFBQUFBQUFBUVE0UWhnSkREUVpDZ3dNQUFBQUFKQUFBQUt3WEFB
RElNUDMvLy8vLy8xd0FBQUFBQUFBQUFFRU9FSVlDUXcwRwpSWU1EQUFBQUFDd0FBQURVRndBQUFE
SDkvLy8vLy85d0FRQUFBQUFBQUFCQkRoQ0dBa01OQmsyREI0d0dqUVdPQkk4REFBQUFBQ1FBCkFB
QUVHQUFBUURMOS8vLy8vLys2QUFBQUFBQUFBQUJCRGhDR0FrTU5Ca21EQlk0RWp3TXNBQUFBTEJn
QUFOZ3kvZi8vLy8vLzB3RUEKQUFBQUFBQUFRUTRRaGdKRERRWk5nd2VNQm8wRmpnU1BBd0FBQUFB
a0FBQUFYQmdBQUlnMC9mLy8vLy8vcHdBQUFBQUFBQUFBUVE0UQpoZ0pERFFaSmd3V09CSThESkFB
QUFJUVlBQUFRTmYzLy8vLy8vOVlBQUFBQUFBQUFBRUVPRUlZQ1F3MEdTWU1GamdTUEF5UUFBQUNz
CkdBQUF5RFg5Ly8vLy8vOWxBQUFBQUFBQUFBQkJEaENHQWtNTkJrT0RCSTREQUFBa0FBQUExQmdB
QUJBMi9mLy8vLy8vY1FBQUFBQUEKQUFBQVFRNFFoZ0pERFFaQ2d3TUFBQUFBSkFBQUFQd1lBQUJv
TnYzLy8vLy8vd29BQUFBQUFBQUFBRUVPRUlZQ1F3MEdBQUFBQUFBQQpBQ1FBQUFBa0dRQUFVRGI5
Ly8vLy8vOEtBQUFBQUFBQUFBQkJEaENHQWtNTkJnQUFBQUFBQUFBa0FBQUFUQmtBQURnMi9mLy8v
Ly8vCkNnQUFBQUFBQUFBQVFRNFFoZ0pERFFZQUFBQUFBQUFBSkFBQUFIUVpBQUFnTnYzLy8vLy8v
d29BQUFBQUFBQUFBRUVPRUlZQ1F3MEcKQUFBQUFBQUFBQ1FBQUFDY0dRQUFDRGI5Ly8vLy8vOEtB
QUFBQUFBQUFBQkJEaENHQWtNTkJnQUFBQUFBQUFBa0FBQUF4QmtBQVBBMQovZi8vLy8vL0h3QUFB
QUFBQUFBQVFRNFFoZ0pERFFZQUFBQUFBQUFBSkFBQUFPd1pBQURvTmYzLy8vLy8veFFBQUFBQUFB
QUFBRUVPCkVJWUNRdzBHQUFBQUFBQUFBQ1FBQUFBVUdnQUE0RFg5Ly8vLy8vOHlBQUFBQUFBQUFB
QkJEaENHQWtNTkJrT0RCSTREQUFBa0FBQUEKUEJvQUFQZzEvZi8vLy8vL0pnQUFBQUFBQUFBQVFR
NFFoZ0pERFFZQUFBQUFBQUFBSkFBQUFHUWFBQUFBTnYzLy8vLy8vd29BQUFBQQpBQUFBQUVFT0VJ
WUNRdzBHQUFBQUFBQUFBQ1FBQUFDTUdnQUE2RFg5Ly8vLy8vOEtBQUFBQUFBQUFBQkJEaENHQWtN
TkJnQUFBQUFBCkFBQWtBQUFBdEJvQUFOQTEvZi8vLy8vL0R3QUFBQUFBQUFBQVFRNFFoZ0pERFFZ
QUFBQUFBQUFBSkFBQUFOd2FBQUM0TmYzLy8vLy8KLzFjQUFBQUFBQUFBQUVFT0VJWUNRdzBHUTRN
RWpnTUFBQ1FBQUFBRUd3QUE4RFg5Ly8vLy8vOGZBQUFBQUFBQUFBQkJEaENHQWtNTgpCa0tEQXdB
QUFBQWtBQUFBTEJzQUFPZzEvZi8vLy8vL0lnQUFBQUFBQUFBQVFRNFFoZ0pERFFaQ2d3TUFBQUFB
SkFBQUFGUWJBQUR3Ck5mMy8vLy8vL3lZQUFBQUFBQUFBQUVFT0VJWUNRdzBHUW9NREFBQUFBQ1FB
QUFCOEd3QUErRFg5Ly8vLy8vOGdBQUFBQUFBQUFBQkIKRGhDR0FrTU5Ca09EQkk0REFBQWtBQUFB
cEJzQUFQQTEvZi8vLy8vL1FRQUFBQUFBQUFBQVFRNFFoZ0pERFFaR2d3V09CSThESkFBQQpBTXdi
QUFBWU52My8vLy8vLzA4QUFBQUFBQUFBQUVFT0VJWUNRdzBHUTRNRWpnTUFBQ1FBQUFEMEd3QUFR
RGI5Ly8vLy8vOEtBQUFBCkFBQUFBQUJCRGhDR0FrTU5CZ0FBQUFBQUFBQWtBQUFBSEJ3QUFDZzIv
Zi8vLy8vL0ZRQUFBQUFBQUFBQVFRNFFoZ0pERFFZQUFBQUEKQUFBQUxBQUFBRVFjQUFBZ052My8v
Ly8vLzlFQUFBQUFBQUFBQUVFT0VJWUNRdzBHU29NSGpBYU5CWTRFandNQUFBQUFKQUFBQUhRYwpB
QURRTnYzLy8vLy8vN1FBQUFBQUFBQUFBRUVPRUlZQ1F3MEdTWU1GamdTUEF5UUFBQUNjSEFBQWFE
ZjkvLy8vLy84a0FBQUFBQUFBCkFBQkJEaENHQWtNTkJnQUFBQUFBQUFBa0FBQUF4QndBQUhBMy9m
Ly8vLy8vYWdBQUFBQUFBQUFBUVE0UWhnSkREUVpEZ3dTT0F3QUEKSkFBQUFPd2NBQUM0Ti8zLy8v
Ly8vMEFBQUFBQUFBQUFBRUVPRUlZQ1F3MEdRb01EQUFBQUFDd0FBQUFVSFFBQTBEZjkvLy8vLy85
SwpBd0FBQUFBQUFBQkJEaENHQWtNTkJrZURCb3dGamdTUEF3QUFBQUFBQUNRQUFBQkVIUUFBOERy
OS8vLy8vLzhmQUFBQUFBQUFBQUJCCkRoQ0dBa01OQmdBQUFBQUFBQUFrQUFBQWJCMEFBT2c2L2Yv
Ly8vLy9Id0FBQUFBQUFBQUFRUTRRaGdKRERRWUFBQUFBQUFBQUpBQUEKQUpRZEFBRGdPdjMvLy8v
Ly94VUFBQUFBQUFBQUFFRU9FSVlDUXcwR0FBQUFBQUFBQUNRQUFBQzhIUUFBMkRyOS8vLy8vLzhW
QUFBQQpBQUFBQUFCQkRoQ0dBa01OQmdBQUFBQUFBQUFrQUFBQTVCMEFBTkE2L2YvLy8vLy9DZ0FB
QUFBQUFBQUFRUTRRaGdKRERRWUFBQUFBCkFBQUFKQUFBQUF3ZUFBQzRPdjMvLy8vLy94NEFBQUFB
QUFBQUFFRU9FSVlDUXcwR0FBQUFBQUFBQUNRQUFBQTBIZ0FBc0RyOS8vLy8KLy84Y0FBQUFBQUFB
QUFCQkRoQ0dBa01OQmdBQUFBQUFBQUFrQUFBQVhCNEFBS2c2L2YvLy8vLy9GZ0FBQUFBQUFBQUFR
UTRRaGdKRApEUVlBQUFBQUFBQUFKQUFBQUlRZUFBQ2dPdjMvLy8vLy94Z0FBQUFBQUFBQUFFRU9F
SVlDUXcwR0FBQUFBQUFBQUNRQUFBQ3NIZ0FBCm1EcjkvLy8vLy84U0FBQUFBQUFBQUFCQkRoQ0dB
a01OQmdBQUFBQUFBQUFrQUFBQTFCNEFBSkE2L2YvLy8vLy9JUUFBQUFBQUFBQUEKUVE0UWhnSkRE
UVlBQUFBQUFBQUFKQUFBQVB3ZUFBQ1lPdjMvLy8vLy96b0FBQUFBQUFBQUFFRU9FSVlDUXcwR1Fv
TURBQUFBQUNRQQpBQUFrSHdBQXNEcjkvLy8vLy84S0FBQUFBQUFBQUFCQkRoQ0dBa01OQmdBQUFB
QUFBQUFrQUFBQVRCOEFBSmc2L2YvLy8vLy9DZ0FBCkFBQUFBQUFBUVE0UWhnSkREUVlBQUFBQUFB
QUFKQUFBQUhRZkFBQ0FPdjMvLy8vLy93b0FBQUFBQUFBQUFFRU9FSVlDUXcwR0FBQUEKQUFBQUFD
d0FBQUNjSHdBQWFEcjkvLy8vLy8rQ0FBQUFBQUFBQUFCQkRoQ0dBa01OQmtlREJvd0ZqZ1NQQXdB
QUFBQUFBQ1FBQUFETQpId0FBeURyOS8vLy8vLzg1QUFBQUFBQUFBQUJCRGhDR0FrTU5Ca09EQkk0
REFBQWtBQUFBOUI4QUFPQTYvZi8vLy8vL1VRQUFBQUFBCkFBQUFRUTRRaGdKRERRWkhnd1NPQXdB
QUpBQUFBQndnQUFBWU8vMy8vLy8vL3dvQUFBQUFBQUFBQUVFT0VJWUNRdzBHQUFBQUFBQUEKQUNR
QUFBQkVJQUFBQUR2OS8vLy8vLzgyQUFBQUFBQUFBQUJCRGhDR0FrTU5CZ0FBQUFBQUFBQWtBQUFB
YkNBQUFCZzcvZi8vLy8vLwpNZ0FBQUFBQUFBQUFRUTRRaGdKRERRWUFBQUFBQUFBQUpBQUFBSlFn
QUFBd08vMy8vLy8vL3pJQUFBQUFBQUFBQUVFT0VJWUNRdzBHCkFBQUFBQUFBQUNRQUFBQzhJQUFB
U0R2OS8vLy8vLzh5QUFBQUFBQUFBQUJCRGhDR0FrTU5CZ0FBQUFBQUFBQWtBQUFBNUNBQUFHQTcK
L2YvLy8vLy80UUFBQUFBQUFBQUFRUTRRaGdKRERRWkNnd01BQUFBQUpBQUFBQXdoQUFBb1BQMy8v
Ly8vLzBZQkFBQUFBQUFBQUVFTwpFSVlDUXcwR1JvTUZqZ1NQQXlRQUFBQTBJUUFBVUQzOS8vLy8v
LzlsQVFBQUFBQUFBQUJCRGhDR0FrTU5Ca09EQkk0REFBQWtBQUFBClhDRUFBSmcrL2YvLy8vLy9E
UUFBQUFBQUFBQUFRUTRRaGdKRERRWUFBQUFBQUFBQUpBQUFBSVFoQUFDQVB2My8vLy8vLzVNQkFB
QUEKQUFBQUFFRU9FSVlDUXcwR1JvTUZqZ1NQQXlRQUFBQ3NJUUFBK0QvOS8vLy8vLytEQUFBQUFB
QUFBQUJCRGhDR0FrTU5CZ0FBQUFBQQpBQUFrQUFBQTFDRUFBR0JBL2YvLy8vLy9FQUFBQUFBQUFB
QUFRUTRRaGdKRERRWUFBQUFBQUFBQUpBQUFBUHdoQUFCSVFQMy8vLy8vCi82QUFBQUFBQUFBQUFF
RU9FSVlDUXcwR0FBQUFBQUFBQUNRQUFBQWtJZ0FBd0VEOS8vLy8vLzhOQUFBQUFBQUFBQUJCRGhD
R0FrTU4KQmdBQUFBQUFBQUFrQUFBQVRDSUFBS2hBL2YvLy8vLy9SQUVBQUFBQUFBQUFRUTRRaGdK
RERRWUFBQUFBQUFBQUpBQUFBSFFpQUFEUQpRZjMvLy8vLy95QUFBQUFBQUFBQUFFRU9FSVlDUXcw
R0FBQUFBQUFBQURkaEFBQUdCQUJOTVdFQUFBa0FBQlVuWVFBQWd3TUFQUXBoCkFBQkFBQUFkOG1B
QUFGSUFBQjNrWUFBQVVRQUFIZFpnQUFCUUFBQWR5R0FBQUU4QUFCMjZZQUFBVGdBQUhheGdBQUJO
QUFBZG5tQUEKQUV3QUFCMlFZQUFBU3dBQUhYNWdBQUJLQUFBZGJHQUFBRWtBQUIxYVlBQUFTQUFB
SFVoZ0FBQkhBQUFkTm1BQUFFWUFBQjBrWUFBQQpSUUFBSFJKZ0FBQkVBQUFkQUdBQUFFTUFBQjN1
WHdBQVFnQUFIZHhmQUFCQkFBQWR4MThBQUhnQUFCMjhYd0FBMFFNQUxiSmZBQUI4CkFBQWRxMThB
QUFJQUFCMmtYd0FBZXdBQUhaMWZBQURSQXdBdGsxOEFBQjBBQUIyTVh3QUFBZ0FBSFlWZkFBQjZB
QUFkZkY4QUFGVUEKQUIxMVh3QUFlUUFBSFdsZkFBQjRBQUFkWWw4QUFBRUVBQzFhWHdBQWVBQUFI
Vk5mQUFBRUJBQXRUbDhBQUhjQUFCMUNYd0FBZFFBQQpIVHRmQUFEakF3QXRNVjhBQUhZQUFCMG5Y
d0FBZFFBQWJSZGZBQUJ5QUFBZC8xNEFBTkVEQUMzMVhnQUFIUUFBSGU1ZUFBQUNBQUFkCjUxNEFB
Q2NBQUIzZVhnQUFDd0FBRmRKZUFBQnNBQUFkeTE0QUFITUFBQjIvWGdBQWNnQUFIYmhlQUFEa0F3
QXRzRjRBQUhFQUFCMmsKWGdBQUl3QUFIWjFlQUFEakF3QXRrMTRBQUNRQUFCMkhYZ0FBSXdBQUhX
OWVBQURSQXdBdFpWNEFBR0lBQUIxZVhnQUFBZ0FBSFZkZQpBQUJoQUFBZFVGNEFBTkVEQUMxR1hn
QUFIUUFBSFQ5ZUFBQUNBQUFkT0Y0QUFDY0FBQjB4WGdBQTBRTUFMU2RlQUFCdkFBQWRJRjRBCkFB
SUFBQjBaWGdBQWJnQUFIUVplQUFEOEFnQXQvbDBBQUFzQUFCWDBYUUFBL2dJQUxldGRBQUR6QXdB
OXpsMEFBUDRDQUMzRlhRQUEKOHdNQVBhRmRBQUJ0QUFBZGwxMEFBR0FBQUIyUVhRQUE1QU1BTFlo
ZEFBQmhBQUFkZUYwQUFDTUFBQjF4WFFBQTR3TUFMV2RkQUFBawpBQUFkVzEwQUFDTUFBQjFJWFFB
QWJRQUFiVUpkQUFCZ0FBQWRMMTBBQUFZRUFFMG1YUUFBQ1FBQUZSZGRBQURpQWdBZERsMEFBT0lD
CkFCMEhYUUFBQ1FBQUZmMWNBQUFHQkFCTjkxd0FBQWNBQUJYd1hBQUFDUUFBRmRsY0FBQnNBQUFk
d1Z3QUFORURBQzIzWEFBQVh3QUEKSGJCY0FBQUNBQUFkcVZ3QUFGNEFBQjJpWEFBQTBRTUFMWmhj
QUFBZEFBQWRrVndBQUFJQUFCMktYQUFBSndBQUhZTmNBQURSQXdBdAplVndBQUdzQUFCMXlYQUFB
QWdBQUhXdGNBQUJxQUFBZFpGd0FBUDRDQUMxWFhBQUE4d01BUFZCY0FBQzNBd0F0UUZ3QUFBb0RB
QzA0ClhBQUFDd0FBRlI1Y0FBQnBBQUFkRkZ3QUFGMEFBQjBOWEFBQTVBTUFMUVZjQUFCZUFBQWQ5
VnNBQUNNQUFCM3VXd0FBNHdNQUxlUmIKQUFBa0FBQWQyRnNBQUNNQUFCM0ZXd0FBYVFBQWJiOWJB
QUJkQUFBZHJGc0FBQVlFQUUyald3QUFDUUFBRlpSYkFBRGlBZ0FkaTFzQQpBT0lDQUIyRVd3QUFD
UUFBRlhwYkFBQUdCQUJOZEZzQUFBY0FBQlZ0V3dBQUNRQUFGVkpiQUFEUkF3QXRTRnNBQUZ3QUFC
MUJXd0FBCkFnQUFIVHBiQUFCYkFBQWRNMXNBQU5FREFDMHBXd0FBSFFBQUhTSmJBQUFDQUFBZEcx
c0FBQ2NBQUIwVVd3QUEwUU1BTFFwYkFBQm8KQUFBZEExc0FBQUlBQUIzOFdnQUFad0FBSGRCYUFB
QmFBQUFkeEZvQUFBWUVBRTI3V2dBQUNRQUFGYkJhQUFEaUFnQWRwMW9BQU9JQwpBQjJnV2dBQUNR
QUFGWlphQUFBR0JBQk5rRm9BQUFjQUFCV0pXZ0FBQ1FBQUZZQmFBQUJtQUFBZGRsb0FBRm9BQUIx
dldnQUE1QU1BCkxXZGFBQUJiQUFBZFYxb0FBQ01BQUIxUVdnQUE0d01BTFVaYUFBQWtBQUFkT2xv
QUFDTUFBQjBzV2dBQVdnQUFiU0phQUFCbUFBQnQKL1ZrQUFORURBQzN6V1FBQVdRQUFIZXhaQUFB
Q0FBQWQ1VmtBQUZnQUFCM2VXUUFBMFFNQUxkUlpBQUFkQUFBZHpWa0FBQUlBQUIzRwpXUUFBSndB
QUhiOVpBQURSQXdBdHRWa0FBR1VBQUIydVdRQUFBZ0FBSGFkWkFBQmtBQUFkaUZrQUFHTUFBQjE4
V1FBQVZ3QUFIWEpaCkFBRGtBd0F0YWxrQUFGZ0FBQjFlV1FBQUl3QUFIVmRaQUFEakF3QXRUVmtB
QUNRQUFCMUJXUUFBSXdBQUhUSlpBQUJqQUFCdExGa0EKQUZjQUFCME9XUUFBMFFNQUxRUlpBQUJp
QUFBZC9WZ0FBQUlBQUIzMldBQUFZUUFBSGVkWUFBQmdBQUFkemxnQUFORURBQzNFV0FBQQpYd0FB
SGIxWUFBQUNBQUFkdGxnQUFGNEFBQjJuV0FBQVhRQUFIWTVZQUFEUkF3QXRoRmdBQUZ3QUFCMTlX
QUFBQWdBQUhYWllBQUJiCkFBQWRaMWdBQUZvQUFCMVNXQUFBMFFNQUxVaFlBQUJaQUFBZFFWZ0FB
QUlBQUIwNldBQUFXQUFBSFNkWUFBQlhBQUFkRmxnQUFMVUQKQUMzWVZ3QUFaQU1BTGNaWEFBQmZB
d0F0bTFjQUFHb0RBQzJNVndBQTFnSUFIWDFYQUFCZkF3QXRUbGNBQUdZREFDMCtWd0FBMWdJQQpI
UzFYQUFCV0FBQnRJMWNBQUdNREFDME9Wd0FBWWdNQUxmdFdBQUJXQUFBZDhsWUFBRjhEQUMzV1Zn
QUF6UU1BTGNaV0FBREpBd0F0CnRsWUFBTW9EQUMybVZnQUFCZ1FBVFpSV0FBQUpBQUFWalZZQUFO
Z0NBQjJFVmdBQTJBSUFIWDFXQUFCVkFBQWRXRllBQUFZRUFFMVAKVmdBQUNRQUFGVWhXQUFCVkFB
QWRMbFlBQUFZRUFFMG5WZ0FBQ1FBQUZSUldBQUFHQkFCTkNsWUFBQWtBQUJYdFZRQUFCZ1FBVGVk
VgpBQUFKQUFBVnpWVUFBQVlFQUUzSFZRQUFDUUFBRmJwVkFBQzhBd0F0c1ZVQUFPc0RBRDJuVlFB
QTlnTUFQWlpWQUFCVkF3QXRlbFVBCkFMQURBQzFhVlFBQXNBTUFMVXRWQUFEaUF3QXRQbFVBQU5R
REFEMDNWUUFBMVFNQVBTdFZBQURpQXdBdEhsVUFBTlFEQUQwWFZRQUEKMWdNQVBmcFVBQUFDQkFB
dDcxUUFBQVlFQUUzbVZBQUFDUUFBRmQ5VUFBRFlBZ0FkMWxRQUFOZ0NBQjNQVkFBQUNRUUFMY2RV
QUFEZwpBd0F0dVZRQUFGUUFBQjJ5VkFBQS93TUFMYXBVQUFEaEF3QXRvbFFBQUFrQUFCV2JWQUFB
MmdJQUhaSlVBQUFIQUFBVmkxUUFBQWtBCkFCV0JWQUFBQUFRQUxYZFVBQUJUQUFBZGNGUUFBTm9D
QUIxblZBQUEyZ0lBSFdCVUFBQUhBQUFWVVZRQUFBVUVBQzFNVkFBQVV3QUEKSFRsVUFBQlNBQUFk
TUZRQUFGRUFBQjBuVkFBQVVBQUFIUjVVQUFCUEFBQWRGVlFBQUU0QUFCME1WQUFBVFFBQUhRTlVB
QUJNQUFBZAorbE1BQUVzQUFCM3hVd0FBU2dBQUhlaFRBQUJKQUFBZDMxTUFBRWdBQUIzV1V3QUFS
d0FBSGMxVEFBQkdBQUFkeEZNQUFFVUFBQjI3ClV3QUFSQUFBSGE5VEFBQkRBQUFkbzFNQUFFSUFB
QjJYVXdBQVFRQUFIWDFUQUFCQUFBQWRkRk1BQUE0RUFDMXNVd0FBUHdBQUhWMVQKQUFBT0JBQXRW
Vk1BQUQ0QUFCMUdVd0FBRGdRQUxUNVRBQUE5QUFBZEwxTUFBQTRFQUMwblV3QUFQQUFBSFJoVEFB
QU9CQUF0RUZNQQpBRHNBQUIwQlV3QUFEZ1FBTGZsU0FBQTZBQUFkNmxJQUFBNEVBQzNpVWdBQU9R
QUFIZE5TQUFBT0JBQXR5MUlBQURnQUFCMjhVZ0FBCkRnUUFMYlJTQUFBM0FBQWRwVklBQUE0RUFD
MmRVZ0FBTmdBQUhZNVNBQUFPQkFBdGhsSUFBRFVBQUIxM1VnQUFEZ1FBTFc5U0FBQTAKQUFBZFlG
SUFBQTRFQUMxWVVnQUFNd0FBSFVsU0FBQU9CQUF0UVZJQUFESUFBQjB5VWdBQURnUUFMU3BTQUFB
eEFBQWRHMUlBQUE0RQpBQzBUVWdBQU1BQUFIUVJTQUFBT0JBQXQvRkVBQUM4QUFCM3RVUUFBRGdR
QUxlVlJBQUF1QUFBZDFsRUFBQTRFQUMzUlVRQUFMUUFBCkhiTlJBQUFHQkFCTnBGRUFBQWtBQUJX
WlVRQUE0Z0lBSFpOUkFBRGlBZ0FkakZFQUFBa0FBQlZ4VVFBQUhBTUFMV3hSQUFBTEFBQVYKWlZF
QUFCc0RBQzFZVVFBQUd3TUFMVTFSQUFBZEF3QXRQbEVBQUFnREFDMHpVUUFBK0FNQVBTUlJBQURF
QXdBdEdsRUFBUGtEQUQzKwpVQUFBQmdRQVRmZFFBQUFzQUFBZDhGQUFBQWtBQUJYbVVBQUFLd0FB
YmRCUUFBQUdCQUJOc0ZBQUFDd0FBQjJwVUFBQUNRQUFGYUZRCkFBQXJBQUJ0bTFBQUFBRUVBQzJU
VUFBQUxBQUFIWWxRQUFBR0JBQk5nRkFBQUFzQUFCVjVVQUFBQ1FBQUZXMVFBQUFHQkFCTlpGQUEK
QUFjQUFCVmRVQUFBQ1FBQUZVOVFBQURMQXdBdFNsQUFBQXNBQUJVL1VBQUFLd0FBSGZoUEFBQUNC
QUF0NUU4QUFBWUVBRTNTVHdBQQpDUUFBRmNaUEFBQXNBQUFkdms4QUFDc0FBRzI0VHdBQUFRUUFM
YkJQQUFBc0FBQWRwazhBQUFZRUFFMmRUd0FBQ3dBQUZaWlBBQUFKCkFBQVZpazhBQUFZRUFFMkJU
d0FBQndBQUZYcFBBQUFKQUFBVmJFOEFBTXNEQUMxblR3QUFDd0FBRlZ4UEFBQXJBQUFkS2s4QUFM
QUQKQUMwV1R3QUF6Z01BTFFOUEFBRGJBd0F0K0U0QUFOb0RBQzNvVGdBQTNRTUFMZE5PQUFEY0F3
QXR5RTRBQU5rREFDMmNUZ0FBRUFRQQpMWVpPQUFEOUF3QXRZVTRBQUE4RUFDMHVUZ0FBRFFRQUxm
MU5BQUFMQkFBdDYwMEFBT1lEQUMzZFRRQUE1Z01BTGJWTkFBRGZBd0F0Cm5rMEFBQXdFQUMyVVRR
QUE1QUlBUFlkTkFBRGxBZ0E5WjAwQUFQb0RBRDFXVFFBQUtRTUFMVVpOQUFBbUF3QXRNazBBQUx3
REFDMHMKVFFBQUN3QUFGU0pOQUFEckF3Qk5GMDBBQU9vREFEMzJUQUFBR3dNQUxldE1BQUFrQXdB
dDNVd0FBQ1VEQUMzQVRBQUFzUU1BTGJkTQpBQURwQXdBOXEwd0FBTDBEQUMyR1RBQUFNZ01BTFha
TUFBQXNBd0F0Wmt3QUFDNERBQzFXVEFBQU1BTUFMVVpNQUFBdkF3QXRMVXdBCkFQNENBQzBlVEFB
QTh3TUFQUmRNQUFDM0F3QXRCRXdBQUFZRUFFMzdTd0FBQ1FBQUZmQkxBQURpQWdBZDUwc0FBT0lD
QUIzZ1N3QUEKQ1FBQUZkWkxBQUFHQkFCTjBFc0FBQWNBQUJYSlN3QUFDUUFBRmF4TEFBQzVBd0F0
bUVzQUFBWUVBRTJQU3dBQUNRQUFGWVJMQUFEaQpBZ0FkZTBzQUFPSUNBQjEwU3dBQUNRQUFGV3BM
QUFBR0JBQk5aRXNBQUFjQUFCVmRTd0FBQ1FBQUZUUkxBQUFiQXdBdEtVc0FBQVlFCkFFMGdTd0FB
QndBQUZSbExBQUFKQUFBVkVrc0FBRElEQUMwQlN3QUFNUU1BTGZGS0FBQVdBd0F0elVvQUFPWURB
QzNDU2dBQXZ3TUEKTGFGS0FBQXFBQUF0V0VvQUFDa0FBQzA3U2dBQUhBTUFMU3RLQUFBdkF3QXRJ
RW9BQUJRREFDMExTZ0FBOXdNQVBRQktBQUF0QXdBdAorRWtBQUw0REFDM1pTUUFBQmdRQVRkTkpB
QUFKQUFBVmtra0FBQXNEQUMyQ1NRQUFDQU1BTFhwSkFBQUxBQUFWY0VrQUFCOERBQzFXClNRQUFD
d01BTFVaSkFBQUlBd0F0UGtrQUFBc0FBQlUwU1FBQUZRTUFMUnhKQUFBTEF3QXRERWtBQUFnREFD
MEVTUUFBQ3dBQUZmcEkKQUFBSEF3QXR5a2dBQUFFREFDMm9TQUFBL1FNQUxaVklBQUQvQWdBdGdV
Z0FBQXNEQUMxdFNBQUFDQU1BTFdSSUFBQUxBQUFWV2tnQQpBQUFEQUMxTlNBQUFGZ01BTFROSUFB
QUxBd0F0SFVnQUFBZ0RBQzBWU0FBQUN3QUFGUXRJQUFBVkF3QXR4VWNBQU5rQ0FCMjhSd0FBCjJR
SUFIYlZIQUFBYkF3QXRxa2NBQUFZRUFFMmVSd0FBQ1FBQUZaZEhBQURZQWdBZGtVY0FBTmdDQUIy
S1J3QUFCd0FBRlg1SEFBRG0KQXdBdGMwY0FBTHNEQUMxUFJ3QUFLZ0FBTFFwSEFBRDdBZ0F0LzBZ
QUFCc0RBQzMzUmdBQUNRTUFMZXhHQUFBTEFBQVY0RVlBQUJzRApBQzNZUmdBQUNRTUFMYzFHQUFB
TEFBQVZ1VVlBQUJzREFDMnhSZ0FBQ1FNQUxhWkdBQUFMQUFBVmxrWUFBQnNEQUMyT1JnQUFDUU1B
CkxZTkdBQUFMQUFBVmZFWUFBQnNEQUMxMFJnQUFDUU1BTFdsR0FBQUxBQUFWWDBZQUFCUURBQzFN
UmdBQUJRTUFMVU5HQUFEMUF3QTkKUEVZQUFQUURBRDBzUmdBQUd3TUFMU1JHQUFEOEFnQXRFRVlB
QVB3Q0FDM2tSUUFBL2dJQUxkdEZBQUR6QXdBOW9VVUFBQ2tBQUMyQwpSUUFBdWdNQUxXVkZBQUFH
QkFCTlgwVUFBQWtBQUJWS1JRQUFhd01BTFRoRkFBQUxBQUFWTVVVQUFGOERBQzBwUlFBQTZ3TUFQ
UXhGCkFBQUpBQUFWQUVVQUFBWUVBRDM1UkFBQUNRQUFGZU5FQUFEU0F3QXR4VVFBQUc4REFDMnJS
QUFBQmdRQVRhSkVBQUFKQUFBVm0wUUEKQUNnQUFCMlRSQUFBWHdNQUxZcEVBQUFvQUFBZHJrTUFB
QWdFQUMyaVF3QUFDUUFBRlpaREFBRGdBZ0FkaTBNQUFPQUNBQjJFUXdBQQpCZ1FBVFg1REFBQUhB
QUFWZDBNQUFBa0FBQlU4UXdBQUNBUUFMVEJEQUFBSkFBQVZKRU1BQU9BQ0FCMFpRd0FBNEFJQUhS
SkRBQUFHCkJBQk5ERU1BQUFjQUFCVUZRd0FBQ1FBQUZlWkNBQUFHQkFCTjNVSUFBQWtBQUJYV1Fn
QUFLQUFBSGM1Q0FBQmZBd0F0eFVJQUFDZ0EKQUIyN1FnQUFoUU1BTFdoQ0FBRFRBd0E5VEVJQUFH
d0RBQzAyUWdBQUJnUUFUUzFDQUFBSkFBQVZKa0lBQUNnQUFCMGVRZ0FBWHdNQQpMUlZDQUFBb0FB
QWQra0VBQU5FREFDM3dRUUFBQXdBQUhlbEJBQUFDQUFBZDRrRUFBQUVBQUIzYlFRQUEwUU1BTGRG
QkFBQWRBQUFkCnlrRUFBQUlBQUIzRFFRQUFKd0FBSGJ4QkFBRFJBd0F0c2tFQUFDWUFBQjJyUVFB
QUFnQUFIYVJCQUFBbEFBQWRrVUVBQUJzREFDMkoKUVFBQUd3TUFMWFJCQUFBQUFBQWRha0VBQUNN
REFDMWJRUUFBSGdNQUxVcEJBQUFMQUFBVlFVRUFBQ0lBQUIwM1FRQUFBQUFBSFRCQgpBQURrQXdB
dEtFRUFBQUVBQUIwWVFRQUFJd0FBSFJGQkFBRGpBd0F0QjBFQUFDUUFBQjM3UUFBQUl3QUFIZTFB
QUFBQUFBQnQ0MEFBCkFDSUFBRzNkUUFBQXNnTUFMYzlBQUFBWEF3QXR4MEFBQVBBREFEMm9RQUFB
MGdNQUxZdEFBQURUQXdBOWhFQUFBQnNEQUMxOFFBQUEKR1FNQUxXNUFBQUFiQXdBdFprQUFBQWtE
QUMxWVFBQUE3QU1BUFU1QUFBQUVBd0F0UGtBQUFQVURBRDB6UUFBQUN3QUFGU3hBQUFEMApBd0E5
SFVBQUFCc0RBQzBTUUFBQUJnTUFMUU5BQUFBWEF3QXQrRDhBQU8wREFEM3FQd0FBMHdNQVBjay9B
QURTQXdBdHNEOEFBQnNECkFDMm9Qd0FBR1FNQUxaby9BQUR0QXdBOWtEOEFBQVFEQUMyRVB3QUE5
UU1BUFgwL0FBRDBBd0E5WHo4QUFPOERBRDFSUHdBQTdnTUEKUFVNL0FBRFRBd0E5RHo4QUFMUURB
QzN0UGdBQUt3TUFMZFUrQUFBcUF3QXRxajRBQUNnREFDMlRQZ0FBc3dNQUxZcytBQUMwQXdBdApi
VDRBQUFrQUFCVmVQZ0FBQmdRQVBWYytBQUFIQUFBVlVENEFBQWtBQUJVYVBnQUFlZ01BTGVVOUFB
QjZBd0F0c2owQUFBWUVBRTJzClBRQUFDUUFBRllvOUFBQi9Bd0F0WFQwQUFHZ0RBQzFVUFFBQWJR
TUFMVWM5QUFCZkF3QXRRajBBQUdBREFDMGlQUUFBQmdRQVRSdzkKQUFBSkFBQVYvVHdBQUc0REFD
Mi9QQUFBWHdNQUxiYzhBQUFHQkFCTnNUd0FBQWtBQUJWbFBBQUFOd01BTGNBN0FBQUVBQUFWcURz
QQpBRFlEQUMxbE93QUFBZ0FBRlFvN0FBQTBBd0E5eGpvQUFBZ0VBQzI2T2dBQUNRQUFGYTQ2QUFE
Z0FnQWRvem9BQU9BQ0FCMlhPZ0FBCjJ3SUFIWTQ2QUFEYkFnQWRoRG9BQUFZRUFFMVlPZ0FBQndB
QUZUMDZBQUFKQUFBVkhqb0FBQUlBQUJYeU9RQUFBZ0FBRlhrNUFBQUkKQkFBdGNEa0FBQWtBQUJW
VE9RQUFBZ0FBRlVjNUFBQUNBQUFWTlRrQUFBSUFBQlVXT1FBQTVnTUFMUVE1QUFCZUF3QXQ5amdB
QUY4RApBQzN1T0FBQUJnUUFUZWc0QUFBSkFBQVYzamdBQUFJRUFDM1FPQUFBL1FNQUxiQTRBQURt
QXdBdGx6Z0FBUFFDQUMyS09BQUFJUUFBCkhYMDRBQUFKQUFBVmN6Z0FBQVlFQUQxc09BQUFDUUFB
RlRrNEFBQUtCQUFkTFRnQUFBb0VBQjBET0FBQTh3SUFMZTQzQUFBaEFBQWQKNFRjQUFBa0FBQlhV
TndBQUNRQUFGYzAzQUFBR0JBQTl4amNBQUFvRUFCMjdOd0FBQ2dRQUhhbzNBQUQ5QXdBdFNqY0FB
RDhEQUMwOApOd0FBYVFNQUxTczNBQUJoQXdBdDdEWUFBRm9EQUMxNU5nQUFZUU1BTFc0MkFBQmxB
d0F0WmpZQUFEVURBQzBjTmdBQVBnTUFMUUUyCkFBQUdCQUJOK3pVQUFBa0FBQlhXTlFBQTdnSUFM
YjQxQUFBR0JBQk50elVBQUFrQUFCV2tOUUFBQmdRQVRabzFBQUFKQUFBVmZqVUEKQUFZRUFFMTNO
UUFBQ1FBQUZXUTFBQUFHQkFCTldqVUFBQWtBQUJVK05RQUFCZ1FBVFRjMUFBQUpBQUFWSGpVQUFB
WUVBRTBYTlFBQQpDUUFBRlFJMUFBRFNBd0F0M0RRQUFBa0FBQlhWTkFBQVh3TUFMZEEwQUFBSEFB
QVZ0elFBQUFjQUFCV3dOQUFBQ1FBQUZhazBBQUFHCkJBQTlvalFBQUFJRUFDMldOQUFBQ3dBQUZZ
ODBBQUFDQkFBdGdEUUFBT2NEQUQxeU5BQUEwd01BUFU4MEFBRFNBd0F0S3pRQUFBY0EKQUJVa05B
QUFDUUFBRlE0MEFBQUhBQUFWQnpRQUFBa0FBQlVBTkFBQUFnUUFMZTh6QUFBSEFBQVY2RE1BQUFr
QUFCWGhNd0FBQmdRQQpQZG96QUFBQ0JBQXQwak1BQU9nREFEM0hNd0FBQWdRQUxic3pBQUFMQUFB
VnRETUFBQUlFQUMybE13QUE1d01BUFpZekFBRFRBd0E5CmJqTUFBUG9DQUMxZU13QUE4Z0lBTFU4
ekFBRDRBZ0F0UkRNQUFQY0NBQzA1TXdBQUJnUUFUVE16QUFBSkFBQVZKak1BQVBrQ0FDMFMKTXdB
QTd3SUFMZmt5QUFEbUF3QXQ2eklBQVBBQ0FDM2lNZ0FBR3dNQUxiSXlBQUR4QWdBdG9qSUFBQWtB
QUJXU01nQUFDUUFBRllVeQpBQUFHQkFBOWZqSUFBQWNBQUJWM01nQUFDUUFBRldjeUFBQWNBd0F0
V1RJQUFBSUVBQzFPTWdBQUJnUUFUVWd5QUFBSEFBQVZRVElBCkFBa0FBQlUzTWdBQS9RTUFMZnN4
QUFBSkFBQVY3akVBQUFZRUFEM25NUUFBQndBQUZlQXhBQUFKQUFBVnZ6RUFBUFVDQUMyMU1RQUEK
OWdJQUxhQXhBQUI4QXdBdGhqRUFBSzREQUMxNE1RQUF4Z01BTFY0eEFBREZBd0F0UHpFQUFNWURB
QzBsTVFBQXhRTUFMUjB4QUFEWQpBd0E5OXpBQUFMZ0RBQzNrTUFBQUJnUUFUZHN3QUFBSkFBQVYw
REFBQU9JQ0FCM0hNQUFBNGdJQUhjQXdBQUFKQUFBVnRqQUFBQVlFCkFFMndNQUFBQndBQUZha3dB
QUFKQUFBVmt6QUFBQVlFQUUyRU1BQUFDUUFBRlhrd0FBRGlBZ0FkY3pBQUFPSUNBQjFzTUFBQUNR
QUEKRlZFd0FBQUdCQUJOR3pBQUFBa0FBQlVRTUFBQTRnSUFIUWN3QUFEaUFnQWRBREFBQUFrQUFC
WDJMd0FBaEFNQUxmRXZBQUFMQUFBVgp6UzhBQU5ZQ0FCMjhMd0FBQmdRQVRiTXZBQUFKQUFBVm9T
OEFBT0lDQUIyWUx3QUE0Z0lBSFpFdkFBQUpBQUFWYUM4QUFBWUVBRTFiCkx3QUFDUUFBRlV3dkFB
RGlBZ0FkUXk4QUFPSUNBQjA4THdBQUNRQUFGVFV2QUFBR0JBQk5MQzhBQUFrQUFCVWRMd0FBNGdJ
QUhSY3YKQUFEaUFnQWRFQzhBQUFrQUFCWG5MZ0FBV0FJQUxZSXVBQUFJQkFBdGZTNEFBQWtBQUJW
ckxnQUE0QUlBSFZZdUFBRGdBZ0FkTHk0QQpBTnNDQUIwbUxnQUEyd0lBSFJ3dUFBQUdCQUJORXk0
QUFBa0FBQlVFTGdBQTRnSUFIZjR0QUFEaUFnQWQ5eTBBQUFrQUFCV1hMUUFBCkNBUUFMWXN0QUFB
SkFBQVZJaTBBQUFnRUFDMGRMUUFBQ1FBQUZRc3RBQURnQWdBZDlpd0FBT0FDQUIzUExBQUEyd0lB
SGNZc0FBRGIKQWdBZHZDd0FBQVlFQUUyekxBQUFDUUFBRmFRc0FBRGlBZ0Fkbml3QUFPSUNBQjJY
TEFBQUNRQUFGVzRzQUFBR0JBQk5aeXdBQUFrQQpBQlZGTEFBQXJRTUFMVFFzQUFEUkF3QXRLaXdB
QUNBQUFCMGpMQUFBQWdBQUhSd3NBQUFmQUFBZDhpc0FBQWtBQUJYYkt3QUFCZ1FBClBkUXJBQUFK
QUFBVnd5c0FBQWtBQUJXc0t3QUFCZ1FBUGFVckFBQUpBQUFWbWlzQUFBWUVBRTJSS3dBQUNRQUFG
VFVyQUFCQkF3QXQKSUNzQUFBWUVBRTBYS3dBQUNRQUFGUU1yQUFCQ0F3QXQ3aW9BQUFrQUFCWGtL
Z0FBQmdRQVBkMHFBQUFKQUFBVnJTb0FBQWtBQUJXbQpLZ0FBUlFNQUxaVXFBQUFKQUFBVmlDb0FB
QVlFQUQyQktnQUFDUUFBRlZjcUFBQkNBd0F0U3lvQUFLY0RBRDFFS2dBQVJRTUFMU1lxCkFBQjFB
d0F0RmlvQUFIWURBQzBGS2dBQWN3TUFMZllwQUFCMEF3QXQ3Q2tBQU5FREFDM2lLUUFBRmdBQUhk
c3BBQUFDQUFBZDFDa0EKQUJVQUFCM05LUUFBMFFNQUxjTXBBQUFkQUFBZHZDa0FBQUlBQUIyMUtR
QUFIQUFBSGE0cEFBRFJBd0F0cENrQUFCc0FBQjJkS1FBQQpBZ0FBSFpZcEFBQWFBQUFkYVNrQUFC
Y0FBQjFkS1FBQUZBQUFIVk1wQUFEa0F3QXRTeWtBQUJVQUFCMC9LUUFBR0FBQUhUZ3BBQURqCkF3
QXRMaWtBQUJrQUFCMGlLUUFBR0FBQUhSTXBBQUFYQUFCdERTa0FBQlFBQUIzZktBQUEwUU1BTGRV
b0FBQVdBQUFkemlnQUFBSUEKQUIzSEtBQUFGUUFBSGJjb0FBQVVBQUFkcGlnQUFFOERBQzJGS0FB
QU13TUFMUklvQUFBMUF3QXR5Q2NBQUQwREFDMjVKd0FBUGdNQQpMWXduQUFCSUF3QXRLU2NBQURN
REFDMnlKZ0FBTlFNQUxXZ21BQUE5QXdBdFdTWUFBRDREQUMwbUpnQUFSd01BTFJVbUFBQkFBd0F0
CkJpWUFBRkVEQUMzZ0pRQUFPZ01BTFl3bEFBQlFBd0F0UlNVQUFEc0RBQzAySlFBQVF3TUFMU1ls
QUFCWkF3QXRBQ1VBQUV3REFDMzEKSkFBQVN3TUFMVVVrQUFBK0F3QXRPU1FBQUVvREFDMG5KQUFB
U2dNQUxSUWtBQUFHQkFCTkNDUUFBQWtBQUJYaUl3QUFCZ1FBVGRNagpBQUFIQUFBVnpDTUFBQWtB
QUJXbkl3QUFCZ1FBVFlvakFBQUpBQUFWZ3lNQUFOOENBQjE2SXdBQTN3SUFIWE1qQUFBSEFBQVZR
U01BCkFFNERBQzBRSXdBQUJnUUFUUVFqQUFBSkFBQVYxQ0lBQU5FREFDM0tJZ0FBRXdBQUhjTWlB
QUFDQUFBZHZDSUFBQklBQUIya0lnQUEKQ1FBQUZaZ2lBQUFHQkFBOWtTSUFBQWNBQUJXS0lnQUFD
UUFBRllNaUFBQUxBQUFWY2lJQUFBc0FBQlZOSWdBQVp3TUFMVGdpQUFCbgpBd0F0S1NJQUFCRUFB
QjBOSWdBQVJBTUFMUVVpQUFCWUF3QXQvU0VBQUR3REFDMzFJUUFBT0FNQUxlb2hBQUE1QXdBdDRp
RUFBRWtECkFDM1BJUUFBQWdBQUZjY2hBQUJZQXdBdHZ5RUFBRlFEQUMydUlRQUFWZ01BTFdNaEFB
QmNBd0F0TXlFQUFGc0RBQzMvSUFBQUF3QUEKRmVNZ0FBQUNBQUFWMWlBQUFGTURBQzNSSUFBQUFn
QUFGY2tnQUFBQ0FBQVZ2Q0FBQUZNREFDMjNJQUFBQWdBQUZhOGdBQUFDQUFBVgpvaUFBQUZNREFD
MmRJQUFBQWdBQUZaQWdBQUFDQUFBVmlDQUFBRk1EQUMyRElBQUFBZ0FBRlhzZ0FBQUNBQUFWYmlB
QUFGY0RBQzFwCklBQUFBZ0FBRlZ3Z0FBQUNBQUFWVkNBQUFGTURBQzFQSUFBQUFnQUFGVWNnQUFB
Q0FBQVZPaUFBQUZNREFDMDFJQUFBQWdBQUZTZ2cKQUFBQ0FBQVZJQ0FBQUZNREFDMGJJQUFBQWdB
QUZSTWdBQUFDQUFBVkJpQUFBRk1EQUMwQklBQUFBZ0FBRmZRZkFBQUNBQUFWN0I4QQpBRk1EQUMz
bkh3QUFBZ0FBRmRvZkFBQUNBQUFWMGg4QUFGTURBQzNOSHdBQUFnQUFGY0FmQUFBQ0FBQVZ1QjhB
QUZNREFDMnpId0FBCkFnQUFGYVlmQUFBQ0FBQVZuaDhBQUZjREFDMlVId0FBQWdBQUZZd2ZBQUFD
QUFBVmhCOEFBRklEQUMxNkh3QUFBZ0FBRlhJZkFBQUMKQUFBVmFoOEFBQUlBQUJWaUh3QUFBZ0FB
RlZVZkFBQlNBd0F0VGg4QUFBSUFBQlZHSHdBQUFnQUFGVHNmQUFBQ0FBQVZMaDhBQUFJQQpBQlVt
SHdBQVVnTUFMUjhmQUFBQ0FBQVZGeDhBQUFJQUFCVVBId0FBQWdBQUZRY2ZBQUFDQUFBVitoNEFB
QUlBQUJYeUhnQUFVZ01BCkxlQWVBQUFDQUFBVjJCNEFBQUlBQUJYUUhnQUFBZ0FBRmNnZUFBQlhB
d0F0dmg0QUFBSUFBQlcySGdBQUFnQUFGYXNlQUFCV0F3QXQKcGg0QUFFWURBQzJRSGdBQUFnQUFG
VjRlQUFETUF3QXQvaDBBQUFrQUFCWG1IUUFBQmdRQVBkOGRBQUFKQUFBVm9CMEFBTWdEQUMxMApI
UUFBQndBQUZXMGRBQUFKQUFBVk94MEFBQWtBQUJVdkhRQUFCZ1FBUFNnZEFBQUhBQUFWSVIwQUFB
a0FBQlVMSFFBQXh3TUFMZlljCkFBRFJBd0F0N0J3QUFCQUFBQjNsSEFBQUFnQUFIZDRjQUFBT0FB
QWQxeHdBQU5FREFDM05IQUFBRUFBQUhjWWNBQUFDQUFBZHZ4d0EKQUE0QUFCMjRIQUFBMFFNQUxh
NGNBQUFQQUFBZHB4d0FBQUlBQUIyZ0hBQUFEZ0FBSFljY0FBRGhBZ0FkZmh3QUFPRUNBQjF5SEFB
QQphQU1BTFdNY0FBQjVBd0F0VXh3QUFBTUFBQlU2SEFBQTVRTUFMUzBjQUFBQ0FBQVZIUndBQU9V
REFDME5IQUFBZUFNQUxmZ2JBQUFDCkFBQVY2QnNBQUdBREFDM1JHd0FBNWdNQUxZZ2JBQURlQXdB
dGVSc0FBTjREQUMxcUd3QUEzZ01BTGZVYUFBRDlBd0F0MHhvQUFBa0EKQUJXL0dnQUFDUUFBRmE4
YUFBQUpBQUFWbnhvQUFBa0FBQldNR2dBQUNRQUFGWGthQUFBSkFBQVZaaG9BQUFrQUFCVlRHZ0FB
Q1FBQQpGVUFhQUFBSkFBQVZJeG9BQU4wQ0FCMGFHZ0FBM1FJQUhRMGFBQUFKQUFBVjJoa0FBQWtB
QUJYVEdRQUEyQUlBSGMwWkFBRFlBZ0FkCnhoa0FBQWNBQUJXNUdRQUFDUUFBRmEwWkFBRGpBZ0Fk
cEJrQUFPTUNBQjJaR1FBQWhnTUFMWVFaQUFBR0JBQk5leGtBQUFrQUFCVncKR1FBQTNnSUFIV1Fa
QUFEZUFnQWRYUmtBQU5vQ0FCMVhHUUFBMmdJQUhWQVpBQUFIQUFBVi9CZ0FBQWtBQUJYUkdBQUFC
Z1FBUGNvWQpBQUFKQUFBVml4Z0FBSElEQUMyREdBQUFSQU1BTFhzWUFBQThBd0F0Y3hnQUFFMERB
QzFvR0FBQVJnTUFMVjBZQUFCd0F3QXRWaGdBCkFIRURBQzFER0FBQWh3TUFMVGtZQUFBTEFBQVY3
aGNBQUFJQUFCWG1Gd0FBUFFNQUxiRVhBQUJkQXdBOWp4Y0FBQUlBQUJWU0Z3QUEKQmdRQVRVd1hB
QUFIQUFBVlJSY0FBQWtBQUJVR0Z3QUFHQU1BTFlFV0FBQWFBd0F0WFJZQUFCb0RBQzA5RmdBQUdn
TUFMUWdXQUFBRwpCQUJOK0JVQUFBa0FBQlh0RlFBQTRnSUFIZWNWQUFEaUFnQWQ0QlVBQUFrQUFC
WEhGUUFBQmdRQVRiRVZBQUFKQUFBVm5SVUFBQWtBCkFCV05GUUFBNGdJQUhZUVZBQURpQWdBZGZS
VUFBQWtBQUJWeUZRQUE0Z0lBSFdrVkFBRGlBZ0FkWWhVQUFBa0FBQlZZRlFBQWhBTUEKTFZNVkFB
QUxBQUFWRWhVQUFBa0FBQlVBRlFBQUJnUUFQZmtVQUFBSkFBQVY3aFFBQU9JQ0FCM2xGQUFBNGdJ
QUhkNFVBQUFKQUFBVgoweFFBQU9JQ0FCM0tGQUFBNGdJQUhjTVVBQUFKQUFBVm94UUFBQVlFQUUy
VUZBQUFDUUFBRllrVUFBRGlBZ0FkZ3hRQUFPSUNBQjE4CkZBQUFDUUFBRlZ3VUFBRGhBZ0FkVXhR
QUFPRUNBQjFERkFBQTJRSUFIVHdVQUFEWkFnQWROUlFBQUFZRUFFMHBGQUFBQ1FBQUZSNFUKQUFE
aUFnQWRGUlFBQU9JQ0FCME9GQUFBQ1FBQUZRUVVBQURZQWdBZCt4TUFBTmdDQUIzMEV3QUFoQU1B
TGU4VEFBQUxBQUFWNHhNQQpBTjhDQUIzZEV3QUEzd0lBSGJjVEFBQUdCQUJOcHhNQUFBa0FBQldj
RXdBQTRnSUFIWk1UQUFEaUFnQWRqQk1BQUFrQUFCV0NFd0FBCmhBTUFMWDBUQUFBTEFBQVZWeE1B
QUFZRUFFMURFd0FBQ1FBQUZUZ1RBQURpQWdBZEx4TUFBT0lDQUIwb0V3QUFDUUFBRlI0VEFBQ0UK
QXdBdEdSTUFBQXNBQUJYOUVnQUEyUUlBSGZZU0FBRFpBZ0FkN3hJQUFIY0RBQzNuRWdBQUJnUUFU
ZHdTQUFBTEFBQVYxUklBQUFzQQpBQlhPRWdBQUJ3QUFGY2NTQUFBSkFBQVZxeElBQU9FQ0FCMmlF
Z0FBNFFJQUhaZ1NBQUI3QXdBdGloSUFBSGNEQUMyQ0VnQUFCZ1FBClRYY1NBQUFMQUFBVmNCSUFB
QXNBQUJWcEVnQUFCd0FBRldJU0FBQUpBQUFWUmhJQUFJSURBQzAyRWdBQWdBTUFMU1lTQUFDQkF3
QXQKRmhJQUFPb0NBQzBHRWdBQTZ3SUFMZlFSQUFEc0FnQXR6UkVBQU5FREFDM0RFUUFBRFFBQUhi
d1JBQUFDQUFBZHRSRUFBQXdBQUIyWQpFUUFBL2dNQUxZb1JBQURuQWdBdGZSRUFBT2dDQUMxd0VR
QUE2UUlBTFdnUkFBQUxBd0F0V3hFQUFPa0NBQzFURVFBQUN3TUFMU1FSCkFBRG1BZ0F0QmhFQUFP
MENBQzMyRUFBQTZRSUFMZUlRQUFBR0JBQk4yUkFBQUFrQUFCWEhFQUFBaVFNQVBiY1FBQUNLQXdB
OXB4QUEKQUlnREFEMllFQUFBMFFNQUxZNFFBQUFMQUFBZGh4QUFBQUlBQUIyQUVBQUFDZ0FBSFhr
UUFBRFJBd0F0YnhBQUFBa0FBQjFvRUFBQQpBZ0FBSFdFUUFBQUlBQUFkUnhBQUFBa0FBQlVxRUFB
QUJ3QUFGU01RQUFBSkFBQVZFeEFBQUFrQUFCVUdFQUFBQ1FBQUZmWVBBQUFHCkJBQTk3dzhBQUFr
QUFCWG9Ed0FBQkFBQUhlRVBBQURoQWdBZDJBOEFBT0VDQUIzTER3QUFCQUFBSGNRUEFBQUpBQUFW
a2c4QUFBa0EKQUJXTER3QUEyQUlBSFlJUEFBQUhBQUFWZUE4QUFBUUFBQjF4RHdBQUNRQUFGV29Q
QUFBQkJBQXRZZzhBQUFRQUFCMUlEd0FBQmdRQQpQUjhQQUFDTEF3QTlHQThBQUFrQUFCVVJEd0FB
MkFJQUhRZ1BBQURZQWdBZEFROEFBQVVBQUIzNkRnQUFDUVFBTGZVT0FBQUZBQUFkCjVnNEFBT0FE
QUMzWURnQUFCd0FBSGRFT0FBRC9Bd0F0eVE0QUFBVUFBQjNDRGdBQUNRQUFGYnNPQUFEaEF3QXRz
dzRBQUFrQUFCV3MKRGdBQTJnSUFIYU1PQUFBSEFBQVZuQTRBQUFFRUFDMlVEZ0FBQlFBQUhZME9B
QUFBQkFBdGd3NEFBQVlBQUIxOERnQUEyZ0lBSFhNTwpBQURhQWdBZGJBNEFBQWNBQUJWY0RnQUFC
UUFBSFZVT0FBQUJCQUF0VFE0QUFBVUFBQjFHRGdBQUJRUUFMVUVPQUFBR0FBQWRNUTRBCkFBVUFB
QjBoRGdBQUJBQUFIUklPQUFEaUFnQWREQTRBQU9JQ0FCMEZEZ0FBQ1FBQUZkSU5BQUFKQUFBVnl3
MEFBQXNBQUJXOURRQUEKQmdRQVBiWU5BQUFIQUFBVnJ3MEFBQWtBQUJXYkRRQUFCZ1FBVFpFTkFB
QUhBQUFWaWcwQUFBa0FBQlZvRFFBQWF3TUFMVlVOQUFBTApBQUFWU3cwQUFPc0RBRDFCRFFBQUNR
QUFGVElOQUFBR0JBQTlLdzBBQUFrQUFCVWREUUFBQmdRQVRSY05BQUFKQUFBVkRRMEFBSU1ECkFE
MzJEQUFBendNQUxlSU1BQUFHQkFCTjJRd0FBQWtBQUJXNkRBQUFHd01BTGFRTUFBRGhBZ0FkbUF3
QUFINERBQzJLREFBQSt3TUEKUFlNTUFBRGhBZ0FkYUF3QUFBa0FBQlZoREFBQTJBSUFIVmdNQUFB
SEFBQVZTUXdBQUFrQUFCVkNEQUFBQmdRQVBUc01BQURZQWdBZApNZ3dBQU5nQ0FCMHJEQUFBQndB
QUZTUU1BQURoQWdBZEdBd0FBT0VDQUIwUkRBQUFmZ01BTFFNTUFBRDhBd0E5L0FzQUFOY0NBQjN3
CkN3QUExd0lBSGVFTEFBQUdCQUJOMFFzQUFBa0FBQlhLQ3dBQTJBSUFIY1FMQUFEWUFnQWR2UXNB
QUFjQUFCV3FDd0FBZlFNQUxXVUwKQUFDc0F3QXRUd3NBQUxZREFDME5Dd0FBL1FJQUxmNEtBQUFJ
QXdBdDh3b0FBUEVEQUQzaUNnQUEvQUlBTGRjS0FBQ3BBd0F0dkFvQQpBUDRDQUMyeUNnQUE4d01B
UGFZS0FBQ3FBd0F0bWdvQUFLZ0RBQzJBQ2dBQXF3TUFMV3dLQUFBSUF3QXRZUW9BQVBJREFEMU9D
Z0FBCndBTUFMVDBLQUFBR0JBQk5OQW9BQUFrQUFCVWlDZ0FBNGdJQUhSd0tBQURpQWdBZEZRb0FB
QWtBQUJYckNRQUFFd01BTGQ0SkFBQXUKQXdBdDBRa0FBQVlFQUUzSUNRQUFDUUFBRmJvSkFBRGlB
Z0FkdEFrQUFPSUNBQjJ0Q1FBQUNRQUFGWTRKQUFBR0JBQk5od2tBQUFrQQpBQlZ1Q1FBQUJnUUFU
V2NKQUFBSkFBQVZWUWtBQUFzQUFCVk1DUUFBQ3dBQUZUWUpBQUFKQUFBVktna0FBQVlFQUQwakNR
QUFCd0FBCkZSd0pBQUFKQUFBVkVBa0FBQVlFQUUwQ0NRQUFDd0FBRmZzSUFBQUpBQUFWN3dnQUFB
WUVBRTNrQ0FBQUN3QUFGZDBJQUFBSkFBQVYKeHdnQUFBWUVBRTNCQ0FBQUN3QUFGYm9JQUFBSEFB
QVZzd2dBQUFrQUFCV3FDQUFBQ3dBQUZhTUlBQUFIQUFBVm5BZ0FBQWtBQUJXRwpDQUFBQ1FBQUZY
b0lBQUFHQkFBOWN3Z0FBQWNBQUJWc0NBQUFDUUFBRldBSUFBQUdCQUJOVWdnQUFBc0FBQlZMQ0FB
QUNRQUFGVDhJCkFBQUdCQUJOTkFnQUFBc0FBQlV0Q0FBQUNRQUFGUWNJQUFBSkFBQVYrd2NBQUFZ
RUFEMzBCd0FBQndBQUZlMEhBQUFKQUFBVjFnY0EKQUs4REFDMjZCd0FBQWdNQUxha0hBQUFEQXdB
dGZRY0FBTklEQUMxZEJ3QUEwd01BUFU0SEFBRGNBZ0FkTndjQUFOd0NBQjBsQndBQQpCZ1FBVFI4
SEFBQUpBQUFWRFFjQUFBTUVBQzNUQmdBQTNBSUFIYmtHQUFEY0FnQWRqZ1lBQUFrQUFCV0NCZ0FB
QmdRQVBYc0dBQUFICkFBQVZkQVlBQUFrQUFCVm9CZ0FBRGdNQUxWY0dBQURUQXdBOUhnWUFBQWtB
QUJVU0JnQUFCZ1FBUFFzR0FBQUhBQUFWQkFZQUFBa0EKQUJYOUJRQUFEd01BTGU0RkFBQUdCQUJO
NVFVQUFBa0FBQldyQlFBQUNRQUFGWjhGQUFBR0JBQTltQVVBQUFjQUFCV1JCUUFBQ1FBQQpGWW9G
QUFBYkF3QXRkQVVBQUJJREFDMWVCUUFBQ1FBQUZVOEZBQUFKQUFBVlFBVUFBQVlFQUQwNUJRQUFC
d0FBRlRJRkFBQUpBQUFWCjZnUUFBQWtBQUJYZUJBQUFCZ1FBUGRjRUFBQUhBQUFWMEFRQUFBa0FB
QlczQkFBQUd3TUFMYVlFQUFBSEFBQVZud1FBQUFrQUFCV1YKQkFBQURRTUFMWHNFQUFBTEFBQVZk
QVFBQUFrQUFCVm5CQUFBQ1FBQUZWY0VBQUFHQkFBOVVBUUFBQWtBQUJVYkJBQUFDUUFBRlE4RQpB
QUFHQkFBOUNBUUFBQWNBQUJVQkJBQUFDUUFBRmZJREFBQWJBd0F0NXdNQUFBWUVBRTNlQXdBQUJ3
QUFGZGNEQUFBSkFBQVZ6UU1BCkFBd0RBQzIyQXdBQUVRTUFMWk1EQUFBSkFBQVZod01BQUFZRUFE
MkFBd0FBQndBQUZYa0RBQUFKQUFBVmNnTUFBQkFEQUMxTEF3QUEKd2dNQUxUOERBQURwQXdBOUhB
TUFBQWtBQUJVUUF3QUFCZ1FBUFFrREFBQUhBQUFWQWdNQUFBa0FBQlgyQWdBQTJRSUFIZTBDQUFE
WgpBZ0FkNWdJQUFCc0RBQzNiQWdBQUJnUUFUYzhDQUFBSkFBQVZ5QUlBQU5nQ0FCM0NBZ0FBMkFJ
QUhic0NBQUFIQUFBVnJRSUFBQnNECkFDMmlBZ0FBSUFNQUxaY0NBQUFHQkFCTmpnSUFBQWtBQUJX
RUFnQUF3UU1BTFhrQ0FBRHBBd0E5UXdJQUFCc0RBQzB2QWdBQUNRQUEKRlNnQ0FBRFlBZ0FkSWdJ
QUFBY0FBQlViQWdBQTJBSUFIUlFDQUFDOUF3QXRCZ0lBQUNjREFDMzdBUUFBNlFNQVBlNEJBQUFH
QkFBOQo1d0VBQUFrQUFCWGdBUUFBQmdRQVRjMEJBQUFKQUFBVm9nRUFBTklEQUMyQ0FRQUEwd01B
UFhzQkFBQWJBd0F0YmdFQUFCc0RBQzFtCkFRQUFFUU1BTFZZQkFBQUpBQUFWVEFFQUFBY0FBQlZG
QVFBQUNRQUFGVFlCQUFEQ0F3QXRLd0VBQUJzREFDMGpBUUFBSWdNQUxSSUIKQUFBSkFBQVZDQUVB
QUFZRUFEMEJBUUFBQndBQUZmb0FBQUFKQUFBVjh3QUFBQ0VEQUMzYUFBQUF3UU1BTGNNQUFBQWJB
d0F0dUFBQQpBTU1EQUMybkFBQUFCQU1BTFpvQUFBRDFBd0E5a3dBQUFQUURBRDJCQUFBQTZRTUFQ
WE1BQUFEckF3QTlaUUFBQU5jREFEMVhBQUFBCjB3TUFQUzRBQUFEUkF3QXRKQUFBQUFNQUFCMGRB
QUFBQWdBQUhSWUFBQUFCQUFBZEJ3QUFBQUFBQUIzSUFBQUFwUU1BRHNBQUFBQ1UKQXdBT3VBQUFB
SjBEQUE2d0FBQUFud01BRHFnQUFBQ1JBd0FPb0FBQUFKVURBQTZZQUFBQXBBTUFEcEFBQUFDT0F3
QU9pQUFBQUpjRApBQTZBQUFBQWpBTUFEbmdBQUFDTkF3QU9jQUFBQUpnREFBNW9BQUFBbVFNQURt
QUFBQUNRQXdBT1dBQUFBSk1EQUE1UUFBQUFuZ01BCkRrZ0FBQUNpQXdBT1FBQUFBSllEQUE0NEFB
QUFuQU1BRGpBQUFBQ1BBd0FPS0FBQUFLRURBQTRnQUFBQW1nTUFEaGdBQUFDU0F3QU8KRUFBQUFL
TURBQTRJQUFBQW13TUFEZ0FBQUFDZ0F3QU9TQVFBQURNQkFBNUFCQUFBTWdFQURqZ0VBQUF4QVFB
T01BUUFBREFCQUE0bwpCQUFBTHdFQURpQUVBQUF1QVFBT0dBUUFBQzBCQUE0UUJBQUFLZ0VBRGdn
RUFBQXBBUUFPQUFRQUFDZ0JBQTc0QXdBQUp3RUFEdkFECkFBQW1BUUFPNkFNQUFDTUJBQTdnQXdB
QUhRRUFEdGdEQUFBYkFRQU8wQU1BQUJrQkFBN0lBd0FBRmdFQURzQURBQUFWQVFBT3VBTUEKQUJR
QkFBNndBd0FBRXdFQURxZ0RBQUFTQVFBT29BTUFBQkVCQUE2WUF3QUFFQUVBRHBBREFBQU9BUUFP
aUFNQUFBMEJBQTZBQXdBQQpEQUVBRG5nREFBQUxBUUFPY0FNQUFBa0JBQTVvQXdBQUNBRUFEbUFE
QUFBRkFRQU9XQU1BQUFRQkFBNVFBd0FBQXdFQURrZ0RBQUFDCkFRQU9RQU1BQUFFQkFBNDRBd0FB
QUFFQURqQURBQUQvQUFBT0tBTUFBUDRBQUE0Z0F3QUEvUUFBRGhnREFBRDhBQUFPRUFNQUFQc0EK
QUE0SUF3QUErZ0FBRGdBREFBRDVBQUFPK0FJQUFQZ0FBQTd3QWdBQTl3QUFEdWdDQUFEMUFBQU80
QUlBQVBRQUFBN1lBZ0FBOHdBQQpEdEFDQUFEeUFBQU95QUlBQVBFQUFBN0FBZ0FBOEFBQURyZ0NB
QUR2QUFBT3NBSUFBTzBBQUE2b0FnQUE3QUFBRHFBQ0FBRHJBQUFPCm1BSUFBT29BQUE2UUFnQUE2
UUFBRG9nQ0FBRG9BQUFPZ0FJQUFPY0FBQTU0QWdBQTVnQUFEbkFDQUFEbEFBQU9hQUlBQU9RQUFB
NWcKQWdBQTNnQUFEbGdDQUFEakFBQU9VQUlBQU9JQUFBNUlBZ0FBM0FBQURrQUNBQURiQUFBT09B
SUFBTm9BQUE0d0FnQUEyUUFBRGlnQwpBQURZQUFBT0lBSUFBTmNBQUE0WUFnQUExZ0FBRGhBQ0FB
RFZBQUFPQ0FJQUFOUUFBQTRBQWdBQTB3QUFEdmdCQUFEU0FBQU84QUVBCkFORUFBQTdvQVFBQTBB
QUFEdUFCQUFEUEFBQU8yQUVBQU00QUFBN1FBUUFBelFBQURzZ0JBQURNQUFBT3dBRUFBTWtBQUE2
NEFRQUEKeUFBQURyQUJBQURIQUFBT3FBRUFBTVFBQUE2Z0FRQUF3d0FBRHBnQkFBREJBQUFPa0FF
QUFNQUFBQTZJQVFBQXZ3QUFEb0FCQUFDKwpBQUFPZUFFQUFMMEFBQTV3QVFBQXZBQUFEbWdCQUFD
N0FBQU9ZQUVBQUxvQUFBNVlBUUFBdUFBQURsQUJBQUMzQUFBT1NBRUFBTFVBCkFBNUFBUUFBc2dB
QURqZ0JBQUN4QUFBT01BRUFBTEFBQUE0b0FRQUFyd0FBRGlBQkFBQ3VBQUFPR0FFQUFLMEFBQTRR
QVFBQXJBQUEKRGdnQkFBQ3FBQUFPQUFFQUFLa0FBQTc0QUFBQXB3QUFEdkFBQUFDbUFBQU82QUFB
QUtVQUFBN2dBQUFBb2dBQUR0Z0FBQUNnQUFBTwowQUFBQUo4QUFBN0lBQUFBbmdBQURzQUFBQUNk
QUFBT3VBQUFBSndBQUE2d0FBQUFtUUFBRHFnQUFBQ1hBQUFPb0FBQUFKVUFBQTZZCkFBQUFsQUFB
RHBBQUFBQ1NBQUFPaUFBQUFKRUFBQTZBQUFBQWtBQUFEbmdBQUFDUEFBQU9jQUFBQUk0QUFBNW9B
QUFBakFBQURtQUEKQUFDTEFBQU9XQUFBQUlvQUFBNVFBQUFBaVFBQURrZ0FBQUNJQUFBT1FBQUFB
SVlBQUE0NEFBQUFoUUFBRGpBQUFBQ0VBQUFPS0FBQQpBSUlBQUE0Z0FBQUFnUUFBRGhnQUFBQ0FB
QUFPRUFBQUFIOEFBQTRJQUFBQWZnQUFEZ0FBQUFCOUFBQU95QUFBQUNVQkFBN0FBQUFBCkJ3UUFE
cmdBQUFBa0FRQU9zQUFBQUFjRUFBNm9BQUFBeXdBQURxQUFBQUFIQkFBT21BQUFBTW9BQUE2UUFB
QUFCd1FBRG9nQUFBREcKQUFBT2dBQUFBQWNFQUE1NEFBQUF4UUFBRG5BQUFBQUhCQUFPYUFBQUFM
a0FBQTVnQUFBQUJ3UUFEbGdBQUFDa0FBQU9VQUFBQUFjRQpBQTVJQUFBQW93QUFEa0FBQUFBSEJB
QU9PQUFBQUtFQUFBNHdBQUFBQndRQURpZ0FBQUNUQUFBT0lBQUFBQWNFQUE0WUFBQUFod0FBCkRo
QUFBQUFIQkFBT0NBQUFBSU1BQUE0QUFBQUFCd1FBRG5BREFBQXNBUUFPWUFNQUFOQURBQTVRQXdB
QUt3RUFEa0FEQUFEUUF3QU8KTUFNQUFDSUJBQTRnQXdBQTBBTUFEaEFEQUFBaEFRQU9BQU1BQU5B
REFBN3dBZ0FBSUFFQUR1QUNBQURRQXdBTzBBSUFBQjhCQUE3QQpBZ0FBMEFNQURyQUNBQUFlQVFB
T29BSUFBTkFEQUE2UUFnQUFIQUVBRG9BQ0FBRFFBd0FPY0FJQUFCb0JBQTVnQWdBQTBBTUFEbEFD
CkFBQVlBUUFPUUFJQUFOQURBQTR3QWdBQUZ3RUFEaUFDQUFEUUF3QU9FQUlBQUE4QkFBNEFBZ0FB
MEFNQUR2QUJBQUFLQVFBTzRBRUEKQU5BREFBN1FBUUFBQndFQURzQUJBQURRQXdBT3NBRUFBQVlC
QUE2Z0FRQUEwQU1BRHBBQkFBRDJBQUFPZ0FFQUFOQURBQTV3QVFBQQo3Z0FBRG1BQkFBRFFBd0FP
VUFFQUFNSUFBQTVBQVFBQTBBTUFEakFCQUFDMkFBQU9JQUVBQU5BREFBNFFBUUFBdEFBQURnQUJB
QURRCkF3QU84QUFBQUxNQUFBN2dBQUFBMEFNQUR0QUFBQUNyQUFBT3dBQUFBTkFEQUE2d0FBQUFx
QUFBRHFBQUFBRFFBd0FPa0FBQUFKc0EKQUE2QUFBQUEwQU1BRG5BQUFBQ2FBQUFPWUFBQUFOQURB
QTVRQUFBQW1BQUFEa0FBQUFEUUF3QU9NQUFBQUpZQUFBNGdBQUFBMEFNQQpEaEFBQUFDTkFBQU9B
QUFBQU5BREFBNHdBQUFBNEFBQURpZ0FBQUNtQXdBT0lBQUFBTjBBQUE0WUFBQUFIZ0FBRGhBQUFB
RGZBQUFPCkNBQUFBTjRBQUE0SUFBQUFjQUFBRGdBQUFBQjBBQUFPQUFBQUFPRUFBQTUwc3dBQUFR
QUFCbXl6QUFBQkFBQUdlSWtBQUFFQUFBWncKaVFBQUFRQUFCdnVIQUFBQkFBQUc4NGNBQUFFQUFB
WXloZ0FBQVFBQUJpcUdBQUFCQUFBR1RvUUFBQUVBQUFaR2hBQUFBUUFBQmlpRQpBQUFCQUFBR0lJ
UUFBQUVBQUFaMmd3QUFBUUFBQm02REFBQUJBQUFHK29JQUFBRUFBQWJ5Z2dBQUFRQUFCc2FDQUFB
QkFBQUd2b0lBCkFBRUFBQWFTZ2dBQUFRQUFCb3FDQUFBQkFBQUdhNElBQUFFQUFBWmpnZ0FBQVFB
QUJrcUNBQUFCQUFBR1FvSUFBQUVBQUFZYmdnQUEKQVFBQUJoT0NBQUFCQUFBRzU0RUFBQUVBQUFi
ZmdRQUFBUUFBQmpDQkFBQUJBQUFHS0lFQUFBRUFBQWJKZ0FBQUFRQUFCc0dBQUFBQgpBQUFHZElB
QUFBRUFBQVpzZ0FBQUFRQUFCa21BQUFBQkFBQUdRWUFBQUFFQUFBYTNmd0FBQVFBQUJxOS9BQUFC
QUFBR2pIOEFBQUVBCkFBYUVmd0FBQVFBQUJrUi9BQUFCQUFBR1BIOEFBQUVBQUFiRGZnQUFBUUFB
QnJ0K0FBQUJBQUFHakg0QUFBRUFBQWFFZmdBQUFRQUEKQm5CK0FBQUJBQUFHYUg0QUFBRUFBQWJo
ZlFBQUFRQUFCdGw5QUFBQkFBQUdxbjBBQUFFQUFBYWlmUUFBQVFBQUJqcDlBQUFCQUFBRwpNbjBB
QUFFQUFBYkVmQUFBQVFBQUJyeDhBQUFCQUFBR1Mzd0FBQUVBQUFaRGZBQUFBUUFBQmdsOEFBQUJB
QUFHQVh3QUFBRUFBQWJMCmV3QUFBUUFBQnNON0FBQUJBQUFHZVhzQUFBRUFBQVp4ZXdBQUFRQUFC
a3Q3QUFBQkFBQUdRM3NBQUFFQUFBWWFld0FBQVFBQUJoSjcKQUFBQkFBQUdrM29BQUFFQUFBYUxl
Z0FBQVFBQUJtQjZBQUFCQUFBR1dIb0FBQUVBQUFZSmVnQUFBUUFBQmdGNkFBQUJBQUFHM1hrQQpB
QUVBQUFiVmVRQUFBUUFBQm9aNUFBQUJBQUFHZm5rQUFBRUFBQVpWZVFBQUFRQUFCazE1QUFBQkFB
QUdKSGtBQUFFQUFBWWNlUUFBCkFRQUFCdE40QUFBQkFBQUd5M2dBQUFFQUFBWkZlQUFBQVFBQUJq
MTRBQUFCQUFBR0pYZ0FBQUVBQUFZZGVBQUFBUUFBQnZSM0FBQUIKQUFBRzdIY0FBQUVBQUFhemR3
QUFBUUFBQnF0M0FBQUJBQUFHZ25jQUFBRUFBQVo2ZHdBQUFRQUFCbEYzQUFBQkFBQUdTWGNBQUFF
QQpBQVlnZHdBQUFRQUFCaGgzQUFBQkFBQUd0SFlBQUFFQUFBYXNkZ0FBQVFBQUJwaDJBQUFCQUFB
R2tIWUFBQUVBQUFaNGRnQUFBUUFBCkJuQjJBQUFCQUFBR1dIWUFBQUVBQUFaUWRnQUFBUUFBQmlK
MkFBQUJBQUFHR25ZQUFBRUFBQWIxZFFBQUFRQUFCdTExQUFBQkFBQUcKMUhVQUFBRUFBQWJNZFFB
QUFRQUFCcDExQUFBQkFBQUdsWFVBQUFFQUFBWnNkUUFBQVFBQUJtUjFBQUFCQUFBR0szVUFBQUVB
QUFZagpkUUFBQVFBQUJnbDFBQUFCQUFBR0FYVUFBQUVBQUFieWRBQUFBUUFBQnVwMEFBQUJBQUFH
c25RQUFBRUFBQWFxZEFBQUFRQUFCbU4wCkFBQUJBQUFHVzNRQUFBRUFBQWIvY3dBQUFRQUFCdmR6
QUFBQkFBQUc1M01BQUFFQUFBYmZjd0FBQVFBQUJwUnpBQUFCQUFBR2pITUEKQUFFQUFBWjBjd0FB
QVFBQUJteHpBQUFCQUFBR1ZITUFBQUVBQUFaTWN3QUFBUUFBQmhOekFBQUJBQUFHQzNNQUFBRUFB
QWJDY2dBQQpBUUFBQnJweUFBQUJBQUFHZDNJQUFBRUFBQVp2Y2dBQUFRQUFCalp5QUFBQkFBQUdM
bklBQUFFQUFBWUZjZ0FBQVFBQUJ2MXhBQUFCCkFBQUcxSEVBQUFFQUFBYk1jUUFBQVFBQUJoNXhB
QUFCQUFBR0ZuRUFBQUVBQUFiemNBQUFBUUFBQnV0d0FBQUJBQUFHc25BQUFBRUEKQUFhcWNBQUFB
UUFBQm9Wd0FBQUJBQUFHZlhBQUFBRUFBQVpFY0FBQUFRQUFCanh3QUFBQkFBQUc0VzhBQUFFQUFB
Ylpid0FBQVFBQQpCc0Z2QUFBQkFBQUd1VzhBQUFFQUFBYUFid0FBQVFBQUJuaHZBQUFCQUFBR1Ey
OEFBQUVBQUFZN2J3QUFBUUFBQmhadkFBQUJBQUFHCkRtOEFBQUVBQUFibGJnQUFBUUFBQnQxdUFB
QUJBQUFHdEc0QUFBRUFBQWFzYmdBQUFRQUFCb051QUFBQkFBQUdlMjRBQUFFQUFBWlEKYmdBQUFR
QUFCa2h1QUFBQkFBQUdLVzRBQUFFQUFBWWhiZ0FBQVFBQUJ2WnRBQUFCQUFBRzdtMEFBQUVBQUFh
L2JRQUFBUUFBQnJkdApBQUFCQUFBR1FXMEFBQUVBQUFZNWJRQUFBUUFBQmtsc0FBQUJBQUFHUVd3
QUFBRUFBQVp2YXdBQUFRQUFCbWRyQUFBQkFBQUdpMm9BCkFBRUFBQWFEYWdBQUFRQUFCcWRwQUFB
QkFBQUduMmtBQUFFQUFBWjJhUUFBQVFBQUJtNXBBQUFCQUFBR1NXa0FBQUVBQUFaQmFRQUEKQVFB
QUJpdHBBQUFCQUFBR0kya0FBQUVBQUFZVGFRQUFBUUFBQmd0cEFBQUJBQUFHKzJnQUFBRUFBQWJ6
YUFBQUFRQUFCdU5vQUFBQgpBQUFHMjJnQUFBRUFBQWJMYUFBQUFRQUFCc05vQUFBQkFBQUdzMmdB
QUFFQUFBYXJhQUFBQVFBQUJwcG9BQUFCQUFBR2ttZ0FBQUVBCkFBWkphQUFBQVFBQUJrRm9BQUFC
QUFBR0JXZ0FBQUVBQUFiOVp3QUFBUUFBQnV4bkFBQUJBQUFHNUdjQUFBRUFBQWJYWndBQUFRQUEK
QnM5bkFBQUJBQUFHaG1jQUFBRUFBQVorWndBQUFRQUFCbWhuQUFBQkFBQUdZR2NBQUFFQUFBWXha
d0FBQVFBQUJpbG5BQUFCQUFBRwpSbVlBQUFFQUFBWStaZ0FBQVFBQUJyZGxBQUFCQUFBR3IyVUFB
QUVBQUFZOFpRQUFBUUFBQmpSbEFBQUJBQUFHRDJVQUFBRUFBQVlIClpRQUFBUUFBQnVKa0FBQUJB
QUFHMm1RQUFBRUFBQWFsWkFBQUFRQUFCcDFrQUFBQkFBQUdhR1FBQUFFQUFBWmdaQUFBQVFBQUJq
ZGsKQUFBQkFBQUdMMlFBQUFFQUFBYjJZd0FBQVFBQUJ1NWpBQUFCQUFBR1oyTUFBQUVBQUFaZll3
QUFBUUFBQmtkakFBQUJBQUFHUDJNQQpBQUVBQUFZR1l3QUFBUUFBQnY1aUFBQUJBQUFHZW1JQUFB
RUFBQVp5WWdBQUFRQUFCdmxoQUFBQkFBQUc4V0VBQUFFQUFBYlhZUUFBCkFRQUFCczloQUFBQkFB
QUdjMkVBQUFFQUFBWnJZUUFBQVFBQUJsRmhBQUFCQUFBR1NXRUFBQUVBQUFaOVlBQUFBUUFBQm5W
Z0FBQUIKQUFBR1VHQUFBQUVBQUFaSVlBQUFBUUFBQnNoZkFBQUJBQUFHd0Y4QUFBRUFBQWFXWHdB
QUFRQUFCbzVmQUFBQkFBQUdLVjhBQUFFQQpBQVloWHdBQUFRQUFCcnhlQUFBQkFBQUd0RjRBQUFF
QUFBYVFYZ0FBQVFBQUJvaGVBQUFCQUFBR0RWNEFBQUVBQUFZRlhnQUFBUUFBCkJ2RmRBQUFCQUFB
RzZWMEFBQUVBQUFiRVhRQUFBUUFBQnJ4ZEFBQUJBQUFHZzEwQUFBRUFBQVo3WFFBQUFRQUFCbFpk
QUFBQkFBQUcKVGwwQUFBRUFBQVlWWFFBQUFRQUFCZzFkQUFBQkFBQUc2RndBQUFFQUFBYmdYQUFB
QVFBQUJyZGNBQUFCQUFBR3Ixd0FBQUVBQUFhSwpYQUFBQVFBQUJvSmNBQUFCQUFBR01sd0FBQUVB
QUFZcVhBQUFBUUFBQnRKYkFBQUJBQUFHeWxzQUFBRUFBQWFsV3dBQUFRQUFCcDFiCkFBQUJBQUFH
bDFvQUFBRUFBQWFQV2dBQUFRQUFCbVJhQUFBQkFBQUdYRm9BQUFFQUFBWW1XZ0FBQVFBQUJoNWFB
QUFCQUFBRzJsa0EKQUFFQUFBYlNXUUFBQVFBQUJuSlpBQUFCQUFBR2Fsa0FBQUVBQUFaQldRQUFB
UUFBQmpsWkFBQUJBQUFHQUZrQUFBRUFBQWI0V0FBQQpBUUFBQnROWUFBQUJBQUFHeTFnQUFBRUFB
QWFyV0FBQUFRQUFCcU5ZQUFBQkFBQUdoRmdBQUFFQUFBWjhXQUFBQVFBQUJsTllBQUFCCkFBQUdT
MWdBQUFFQUFBWVNXQUFBQVFBQUJncFlBQUFCQUFBRzFWY0FBQUVBQUFiTlZ3QUFBUUFBQnBSWEFB
QUJBQUFHakZjQUFBRUEKQUFZVFZ3QUFBUUFBQmd0WEFBQUJBQUFHN2xZQUFBRUFBQWJtVmdBQUFR
QUFCcnRXQUFBQkFBQUdzMVlBQUFFQUFBYUxWZ0FBQVFBQQpCb05XQUFBQkFBQUdQbFlBQUFFQUFB
WTJWZ0FBQVFBQUJobFdBQUFCQUFBR0VWWUFBQUVBQUFibVZRQUFBUUFBQnQ1VkFBQUJBQUFHCnRW
VUFBQUVBQUFhdFZRQUFBUUFBQnBWVkFBQUJBQUFHalZVQUFBRUFBQVpFVlFBQUFRQUFCanhWQUFB
QkFBQUd1MVFBQUFFQUFBYXoKVkFBQUFRQUFCbzVVQUFBQkFBQUdobFFBQUFFQUFBWmRWQUFBQVFB
QUJsVlVBQUFCQUFBR0ZGUUFBQUVBQUFZTVZBQUFBUUFBQnJ0VApBQUFCQUFBR3MxTUFBQUVBQUFa
a1V3QUFBUUFBQmx4VEFBQUJBQUFHT0ZNQUFBRUFBQVl3VXdBQUFRQUFCcnhTQUFBQkFBQUd0RklB
CkFBRUFBQVpMVWdBQUFRQUFCa05TQUFBQkFBQUczMUVBQUFFQUFBYlhVUUFBQVFBQUJnSlJBQUFC
QUFBRytsQUFBQUVBQUFhZ1VBQUEKQVFBQUJwaFFBQUFCQUFBR1AxQUFBQUVBQUFZM1VBQUFBUUFB
Qm9kUEFBQUJBQUFHZjA4QUFBRUFBQVpsVHdBQUFRQUFCbDFQQUFBQgpBQUFHRms4QUFBRUFBQVlP
VHdBQUFRQUFCdHBPQUFBQkFBQUcwazRBQUFFQUFBYXRUZ0FBQVFBQUJxVk9BQUFCQUFBR1prNEFB
QUVBCkFBWmVUZ0FBQVFBQUJuMU5BQUFCQUFBR2RVMEFBQUVBQUFaTVRRQUFBUUFBQmtSTkFBQUJB
QUFHRzAwQUFBRUFBQVlUVFFBQUFRQUEKQnJsTUFBQUJBQUFHc1V3QUFBRUFBQWFHVEFBQUFRQUFC
bjVNQUFBQkFBQUdYVXdBQUFFQUFBWlZUQUFBQVFBQUJ0SkxBQUFCQUFBRwp5a3NBQUFFQUFBYVZT
d0FBQVFBQUJvMUxBQUFCQUFBR1hrb0FBQUVBQUFaV1NnQUFBUUFBQnQxSkFBQUJBQUFHMVVrQUFB
RUFBQWE5ClNRQUFBUUFBQnJWSkFBQUJBQUFHNEVnQUFBRUFBQWJZU0FBQUFRQUFCcWRJQUFBQkFB
QUduMGdBQUFFQUFBWXVTQUFBQVFBQUJpWkkKQUFBQkFBQUc4a2NBQUFFQUFBYnFSd0FBQVFBQUJy
WkhBQUFCQUFBR3JrY0FBQUVBQUFaNlJ3QUFBUUFBQm5KSEFBQUJBQUFHK1VZQQpBQUVBQUFieFJn
QUFBUUFBQnVSR0FBQUJBQUFHM0VZQUFBRUFBQWFsUmdBQUFRQUFCcDFHQUFBQkFBQUcya1VBQUFF
QUFBYlNSUUFBCkFRQUFCa0ZGQUFBQkFBQUdPVVVBQUFFQUFBWnhSQUFBQVFBQUJtbEVBQUFCQUFB
R01FUUFBQUVBQUFZb1JBQUFBUUFBQmdORUFBQUIKQUFBRyswTUFBQUVBQUFiV1F3QUFBUUFBQnM1
REFBQUJBQUFHdWtNQUFBRUFBQWF5UXdBQUFRQUFCbjFEQUFBQkFBQUdkVU1BQUFFQQpBQVl3UXdB
QUFRQUFCaWhEQUFBQkFBQUc4MElBQUFFQUFBYnJRZ0FBQVFBQUJxVkNBQUFCQUFBR25VSUFBQUVB
QUFaVVFnQUFBUUFBCkJreENBQUFCQUFBR0UwSUFBQUVBQUFZTFFnQUFBUUFBQnVKQkFBQUJBQUFH
MmtFQUFBRUFBQWF0UVFBQUFRQUFCcVZCQUFBQkFBQUcKVkVFQUFBRUFBQVpNUVFBQUFRQUFCaU5C
QUFBQkFBQUdHMEVBQUFFQUFBYmJRQUFBQVFBQUJ0TkFBQUFCQUFBR3UwQUFBQUVBQUFhegpRQUFB
QVFBQUJvNUFBQUFCQUFBR2hrQUFBQUVBQUFaZFFBQUFBUUFBQmxWQUFBQUJBQUFHSEVBQUFBRUFB
QVlVUUFBQUFRQUFCcTgvCkFBQUJBQUFHcHo4QUFBRUFBQVpjUHdBQUFRQUFCbFEvQUFBQkFBQUdQ
RDhBQUFFQUFBWTBQd0FBQVFBQUJoQS9BQUFCQUFBR0NEOEEKQUFFQUFBYlBQZ0FBQVFBQUJzYytB
QUFCQUFBR3N6NEFBQUVBQUFhclBnQUFBUUFBQnBNK0FBQUJBQUFHaXo0QUFBRUFBQVp6UGdBQQpB
UUFBQm1zK0FBQUJBQUFHQUQ0QUFBRUFBQWI0UFFBQUFRQUFCc005QUFBQkFBQUd1ejBBQUFFQUFB
YVdQUUFBQVFBQUJvNDlBQUFCCkFBQUdWVDBBQUFFQUFBWk5QUUFBQVFBQUJqazlBQUFCQUFBR01U
MEFBQUVBQUFiOFBBQUFBUUFBQnZROEFBQUJBQUFHZXp3QUFBRUEKQUFaelBBQUFBUUFBQmlvOEFB
QUJBQUFHSWp3QUFBRUFBQWFlT3dBQUFRQUFCcFk3QUFBQkFBQUdianNBQUFFQUFBWm1Pd0FBQVFB
QQpCa3M3QUFBQkFBQUdRenNBQUFFQUFBWXFPd0FBQVFBQUJpSTdBQUFCQUFBR2pUb0FBQUVBQUFh
Rk9nQUFBUUFBQmp3NkFBQUJBQUFHCk5Eb0FBQUVBQUFZQU9nQUFBUUFBQnZnNUFBQUJBQUFHdHpr
QUFBRUFBQWF2T1FBQUFRQUFCb1k1QUFBQkFBQUdmamtBQUFFQUFBWlYKT1FBQUFRQUFCazA1QUFB
QkFBQUdKRGtBQUFFQUFBWWNPUUFBQVFBQUJ2TTRBQUFCQUFBRzZ6Z0FBQUVBQUFaT09BQUFBUUFB
QmtZNApBQUFCQUFBR0hUZ0FBQUVBQUFZVk9BQUFBUUFBQnV3M0FBQUJBQUFHNURjQUFBRUFBQWJK
TndBQUFRQUFCc0UzQUFBQkFBQUdqRGNBCkFBRUFBQWFFTndBQUFRQUFCaDgzQUFBQkFBQUdGemNB
QUFFQUFBYkNOZ0FBQVFBQUJybzJBQUFCQUFBR2NUWUFBQUVBQUFacE5nQUEKQVFBQUJqQTJBQUFC
QUFBR0tEWUFBQUVBQUFZRE5nQUFBUUFBQnZzMUFBQUJBQUFHdkRVQUFBRUFBQWEwTlFBQUFRQUFC
aHcxQUFBQgpBQUFHRkRVQUFBRUFBQWFNTkFBQUFRQUFCb1EwQUFBQkFBQUc2RE1BQUFFQUFBYmdN
d0FBQVFBQUJxa3pBQUFCQUFBR29UTUFBQUVBCkFBYVFNd0FBQlFBQUJpY3pBQUFGQUFBRzlqSUFB
QVVBQUFiNkJ3QUFCUUFBQmxJSEFBQUZBQUFHTGdjQUFBVUFBQVlLQndBQUJRQUEKQnVnR0FBQUZB
QUFHclFZQUFBVUFBQWFJQmdBQUJRQUFCbVVHQUFBRkFBQUdUd1lBQUE4QUFBWXRCZ0FBQlFBQUJ2
TUZBQUFGQUFBRwp4Z1VBQUFVQUFBWi9CUUFBQlFBQUJxUUVBQUFGQUFBR2dBUUFBQVVBQUFaY0JB
QUFCUUFBQmprRUFBQUZBQUFHSGdRQUFBOEFBQWJmCkF3QUFCUUFBQnIwREFBQUZBQUFHa3dNQUFB
VUFBQVo5QXdBQUJRQUFCbWNEQUFBRkFBQUdVUU1BQUFVQUFBWTdBd0FBQlFBQUJpVUQKQUFBRkFB
QUdEd01BQUFVQUFBYjVBZ0FBQlFBQUJ1TUNBQUFGQUFBR3pRSUFBQVVBQUFhM0FnQUFCUUFBQnFF
Q0FBQUZBQUFHaXdJQQpBQVVBQUFaMUFnQUFCUUFBQmw4Q0FBQUZBQUFHU1FJQUFBVUFBQVl6QWdB
QUJRQUFCaDBDQUFBRkFBQUdCd0lBQUFVQUFBYTlBQUFBCkNnUUFEa0lBQUFBRUFBQUdLUTBBQUFF
QUFBYVJYZ0FBQVFBQUJvbGVBQUFCQUFBR2JsNEFBQUVBQUFabVhnQUFBUUFBQmt0ZUFBQUIKQUFB
R1ExNEFBQUVBQUFZb1hnQUFBUUFBQmlCZUFBQUJBQUFHQlY0QUFBRUFBQWI5WFFBQUFRQUFCdUpk
QUFBQkFBQUcybDBBQUFFQQpBQWEvWFFBQUFRQUFCcmRkQUFBQkFBQUduRjBBQUFFQUFBYVVYUUFB
QVFBQUJubGRBQUFCQUFBR2NWMEFBQUVBQUFaV1hRQUFBUUFBCkJrNWRBQUFCQUFBR00xMEFBQUVB
QUFZclhRQUFBUUFBQmlCZEFBQUJBQUFHR0YwQUFBRUFBQVlOWFFBQUFRQUFCZ1ZkQUFBQkFBQUcK
K2x3QUFBRUFBQWJ5WEFBQUFRQUFCdGRjQUFBQkFBQUd6MXdBQUFFQUFBYTBYQUFBQVFBQUJxeGNB
QUFCQUFBR2tWd0FBQUVBQUFhSgpYQUFBQVFBQUJtNWNBQUFCQUFBR1psd0FBQUVBQUFaYlhBQUFB
UUFBQmxOY0FBQUJBQUFHT0Z3QUFBRUFBQVl3WEFBQUFRQUFCaFZjCkFBQUJBQUFHRFZ3QUFBRUFB
QVlDWEFBQUFRQUFCdnBiQUFBQkFBQUczMXNBQUFFQUFBYlhXd0FBQVFBQUJyeGJBQUFCQUFBR3RG
c0EKQUFFQUFBYVpXd0FBQVFBQUJwRmJBQUFCQUFBR2Rsc0FBQUVBQUFadVd3QUFBUUFBQmxOYkFB
QUJBQUFHUzFzQUFBRUFBQVl3V3dBQQpBUUFBQmloYkFBQUJBQUFHRFZzQUFBRUFBQVlGV3dBQUFR
QUFCdnBhQUFBQkFBQUc4bG9BQUFFQUFBYlhXZ0FBQVFBQUJzOWFBQUFCCkFBQUd4Rm9BQUFFQUFB
YThXZ0FBQVFBQUJxRmFBQUFCQUFBR21Wb0FBQUVBQUFaK1dnQUFBUUFBQm5aYUFBQUJBQUFHVzFv
QUFBRUEKQUFaVFdnQUFBUUFBQmtoYUFBQUJBQUFHUUZvQUFBRUFBQVlsV2dBQUFRQUFCaDFhQUFB
QkFBQUdBbG9BQUFFQUFBYjZXUUFBQVFBQQpCdDlaQUFBQkFBQUcxMWtBQUFFQUFBYThXUUFBQVFB
QUJyUlpBQUFCQUFBR21Wa0FBQUVBQUFhUldRQUFBUUFBQm5aWkFBQUJBQUFHCmJsa0FBQUVBQUFa
VFdRQUFBUUFBQmt0WkFBQUJBQUFHTUZrQUFBRUFBQVlvV1FBQUFRQUFCZzFaQUFBQkFBQUdCVmtB
QUFFQUFBYnEKV0FBQUFRQUFCdUpZQUFBQkFBQUd4MWdBQUFFQUFBYS9XQUFBQVFBQUJxUllBQUFC
QUFBR25GZ0FBQUVBQUFhUldBQUFBUUFBQm9sWQpBQUFCQUFBR2JsZ0FBQUVBQUFabVdBQUFBUUFB
Qmx0WUFBQUJBQUFHVTFnQUFBRUFBQVpJV0FBQUFRQUFCa0JZQUFBQkFBQUdKVmdBCkFBRUFBQVlk
V0FBQUFRQUFCZ0pZQUFBQkFBQUcrbGNBQUFFQUFBYmZWd0FBQVFBQUJ0ZFhBQUFCQUFBR3ZGY0FB
QUVBQUFhMFZ3QUEKQVFBQUJxbFhBQUFCQUFBR29WY0FBQUVBQUFhR1Z3QUFBUUFBQm41WEFBQUJB
QUFHYzFjQUFBRUFBQVpyVndBQUFRQUFCbEJYQUFBQgpBQUFHU0ZjQUFBRUFBQVl0VndBQUFRQUFC
aVZYQUFBQkFBQUdDbGNBQUFFQUFBWUNWd0FBQVFBQUJ1ZFdBQUFCQUFBRzMxWUFBQUVBCkFBYlVW
Z0FBQVFBQUJzeFdBQUFCQUFBR3NWWUFBQUVBQUFhcFZnQUFBUUFBQnA1V0FBQUJBQUFHbGxZQUFB
RUFBQVo3VmdBQUFRQUEKQm5OV0FBQUJBQUFHV0ZZQUFBRUFBQVpRVmdBQUFRQUFCalZXQUFBQkFB
QUdMVllBQUFFQUFBWVNWZ0FBQVFBQUJncFdBQUFCQUFBRwo3MVVBQUFFQUFBYm5WUUFBQVFBQUJz
eFZBQUFCQUFBR3hGVUFBQUVBQUFhNVZRQUFBUUFBQnJGVkFBQUJBQUFHcGxVQUFBRUFBQWFlClZR
QUFBUUFBQm9OVkFBQUJBQUFHZTFVQUFBRUFBQVpnVlFBQUFRQUFCbGhWQUFBQkFBQUdUVlVBQUFF
QUFBWkZWUUFBQVFBQUJqcFYKQUFBQkFBQUdNbFVBQUFFQUFBWVhWUUFBQVFBQUJnOVZBQUFCQUFB
RzlGUUFBQUVBQUFic1ZBQUFBUUFBQnRGVUFBQUJBQUFHeVZRQQpBQUVBQUFhdVZBQUFBUUFBQnFa
VUFBQUJBQUFHaTFRQUFBRUFBQWFEVkFBQUFRQUFCbWhVQUFBQkFBQUdZRlFBQUFFQUFBWkZWQUFB
CkFRQUFCajFVQUFBQkFBQUdJbFFBQUFFQUFBWWFWQUFBQVFBQUJ2OVRBQUFCQUFBRzkxTUFBQUVB
QUFiY1V3QUFBUUFBQnRSVEFBQUIKQUFBR3lWTUFBQUVBQUFiQlV3QUFBUUFBQnFaVEFBQUJBQUFH
bmxNQUFBRUFBQWFUVXdBQUFRQUFCb3RUQUFBQkFBQUdjRk1BQUFFQQpBQVpvVXdBQUFRQUFCbDFU
QUFBQkFBQUdWVk1BQUFFQUFBWTZVd0FBQVFBQUJqSlRBQUFCQUFBR0oxTUFBQUVBQUFZZlV3QUFB
UUFBCkJnUlRBQUFCQUFBRy9GSUFBQUVBQUFieFVnQUFBUUFBQnVsU0FBQUJBQUFHemxJQUFBRUFB
QWJHVWdBQUFRQUFCcXRTQUFBQkFBQUcKbzFJQUFBRUFBQWFJVWdBQUFRQUFCb0JTQUFBQkFBQUda
VklBQUFFQUFBWmRVZ0FBQVFBQUJsSlNBQUFCQUFBR1NsSUFBQUVBQUFZdgpVZ0FBQVFBQUJpZFNB
QUFCQUFBR0hGSUFBQUVBQUFZVVVnQUFBUUFBQnZsUkFBQUJBQUFHOFZFQUFBRUFBQWJXVVFBQUFR
QUFCczVSCkFBQUJBQUFHczFFQUFBRUFBQWFyVVFBQUFRQUFCcEJSQUFBQkFBQUdpRkVBQUFFQUFB
WjlVUUFBQVFBQUJuVlJBQUFCQUFBR1dsRUEKQUFFQUFBWlNVUUFBQVFBQUJrZFJBQUFCQUFBR1Ax
RUFBQUVBQUFZa1VRQUFBUUFBQmh4UkFBQUJBQUFHRVZFQUFBRUFBQVlKVVFBQQpBUUFBQnY1UUFB
QUJBQUFHOWxBQUFBRUFBQWJiVUFBQUFRQUFCdE5RQUFBQkFBQUd1RkFBQUFFQUFBYXdVQUFBQVFB
QUJwVlFBQUFCCkFBQUdqVkFBQUFFQUFBYUNVQUFBQVFBQUJucFFBQUFCQUFBR2IxQUFBQUVBQUFa
blVBQUFBUUFBQmt4UUFBQUJBQUFHUkZBQUFBRUEKQUFZNVVBQUFBUUFBQmpGUUFBQUJBQUFHSmxB
QUFBRUFBQVllVUFBQUFRQUFCZ05RQUFBQkFBQUcrMDhBQUFFQUFBYndUd0FBQVFBQQpCdWhQQUFB
QkFBQUd6VThBQUFFQUFBYkZUd0FBQVFBQUJxcFBBQUFCQUFBR29rOEFBQUVBQUFhSFR3QUFBUUFB
Qm45UEFBQUJBQUFHCmRFOEFBQUVBQUFac1R3QUFBUUFBQmxGUEFBQUJBQUFHU1U4QUFBRUFBQVkr
VHdBQUFRQUFCalpQQUFBQkFBQUdHMDhBQUFFQUFBWVQKVHdBQUFRQUFCZ2hQQUFBQkFBQUdBRThB
QUFFQUFBYmxUZ0FBQVFBQUJ0MU9BQUFCQUFBR3drNEFBQUVBQUFhNlRnQUFBUUFBQnE5TwpBQUFC
QUFBR3AwNEFBQUVBQUFhTVRnQUFBUUFBQm9ST0FBQUJBQUFHZVU0QUFBRUFBQVp4VGdBQUFRQUFC
bVpPQUFBQkFBQUdYazRBCkFBRUFBQVpEVGdBQUFRQUFCanRPQUFBQkFBQUdNRTRBQUFFQUFBWW9U
Z0FBQVFBQUJnMU9BQUFCQUFBR0JVNEFBQUVBQUFicVRRQUEKQVFBQUJ1Sk5BQUFCQUFBR3gwMEFB
QUVBQUFhL1RRQUFBUUFBQnFSTkFBQUJBQUFHbkUwQUFBRUFBQWFSVFFBQUFRQUFCb2xOQUFBQgpB
QUFHYmswQUFBRUFBQVptVFFBQUFRQUFCa3ROQUFBQkFBQUdRMDBBQUFFQUFBWW9UUUFBQVFBQUJp
Qk5BQUFCQUFBR0JVMEFBQUVBCkFBYjlUQUFBQVFBQUJ2Sk1BQUFCQUFBRzZrd0FBQUVBQUFiZlRB
QUFBUUFBQnRkTUFBQUJBQUFHdkV3QUFBRUFBQWEwVEFBQUFRQUEKQnFsTUFBQUJBQUFHb1V3QUFB
RUFBQWFHVEFBQUFRQUFCbjVNQUFBQkFBQUdjMHdBQUFFQUFBWnJUQUFBQVFBQUJtQk1BQUFCQUFB
RwpXRXdBQUFFQUFBWTlUQUFBQVFBQUJqVk1BQUFCQUFBR0drd0FBQUVBQUFZU1RBQUFBUUFBQnZk
TEFBQUJBQUFHNzBzQUFBRUFBQWJVClN3QUFBUUFBQnN4TEFBQUJBQUFHc1VzQUFBRUFBQWFwU3dB
QUFRQUFCbzVMQUFBQkFBQUdoa3NBQUFFQUFBWnJTd0FBQVFBQUJtTkwKQUFBQkFBQUdTRXNBQUFF
QUFBWkFTd0FBQVFBQUJpVkxBQUFCQUFBR0hVc0FBQUVBQUFZQ1N3QUFBUUFBQnZwS0FBQUJBQUFH
MzBvQQpBQUVBQUFiWFNnQUFBUUFBQnN4S0FBQUJBQUFHeEVvQUFBRUFBQWFwU2dBQUFRQUFCcUZL
QUFBQkFBQUdoa29BQUFFQUFBWitTZ0FBCkFRQUFCbU5LQUFBQkFBQUdXMG9BQUFFQUFBWkFTZ0FB
QVFBQUJqaEtBQUFCQUFBR0hVb0FBQUVBQUFZVlNnQUFBUUFBQnZwSkFBQUIKQUFBRzhra0FBQUVB
QUFiblNRQUFBUUFBQnQ5SkFBQUJBQUFHeEVrQUFBRUFBQWE4U1FBQUFRQUFCcUZKQUFBQkFBQUdt
VWtBQUFFQQpBQWFPU1FBQUFRQUFCb1pKQUFBQkFBQUdhMGtBQUFFQUFBWmpTUUFBQVFBQUJraEpB
QUFCQUFBR1FFa0FBQUVBQUFZbFNRQUFBUUFBCkJoMUpBQUFCQUFBR0Fra0FBQUVBQUFiNlNBQUFB
UUFBQnQ5SUFBQUJBQUFHMTBnQUFBRUFBQWE4U0FBQUFRQUFCclJJQUFBQkFBQUcKbVVnQUFBRUFB
QWFSU0FBQUFRQUFCblpJQUFBQkFBQUdia2dBQUFFQUFBWlRTQUFBQVFBQUJrdElBQUFCQUFBR01F
Z0FBQUVBQUFZbwpTQUFBQVFBQUJnMUlBQUFCQUFBR0JVZ0FBQUVBQUFicVJ3QUFBUUFBQnVKSEFB
QUJBQUFHeDBjQUFBRUFBQWEvUndBQUFRQUFCcVJICkFBQUJBQUFHbkVjQUFBRUFBQWFRUndBQUFR
QUFCb2hIQUFBQkFBQUdiVWNBQUFFQUFBWmxSd0FBQVFBQUJrcEhBQUFCQUFBR1FrY0EKQUFFQUFB
WW5Sd0FBQVFBQUJoOUhBQUFCQUFBR0JFY0FBQUVBQUFiOFJnQUFBUUFBQnVGR0FBQUJBQUFHMlVZ
QUFBRUFBQWE5UmdBQQpBUUFBQnJWR0FBQUJBQUFHcWtZQUFBRUFBQWFpUmdBQUFRQUFCb2RHQUFB
QkFBQUdmMFlBQUFFQUFBWmtSZ0FBQVFBQUJseEdBQUFCCkFBQUdVRVlBQUFFQUFBWklSZ0FBQVFB
QUJqMUdBQUFCQUFBR05VWUFBQUVBQUFZYVJnQUFBUUFBQmhKR0FBQUJBQUFHQjBZQUFBRUEKQUFi
L1JRQUFBUUFBQnVSRkFBQUJBQUFHM0VVQUFBRUFBQWJSUlFBQUFRQUFCc2xGQUFBQkFBQUd2a1VB
QUFFQUFBYTJSUUFBQVFBQQpCcXRGQUFBQkFBQUdvMFVBQUFFQUFBYVlSUUFBQVFBQUJwQkZBQUFC
QUFBR2hVVUFBQUVBQUFaOVJRQUFBUUFBQm1CRkFBQUJBQUFHCldFVUFBQUVBQUFaTlJRQUFBUUFB
QmtWRkFBQUJBQUFHS2tVQUFBRUFBQVlpUlFBQUFRQUFCaFpGQUFBQkFBQUdEa1VBQUFFQUFBWUQK
UlFBQUFRQUFCdnRFQUFBQkFBQUc0RVFBQUFFQUFBYllSQUFBQVFBQUJzeEVBQUFCQUFBR3hFUUFB
QUVBQUFhNVJBQUFBUUFBQnJGRQpBQUFCQUFBR3BrUUFBQUVBQUFhZVJBQUFBUUFBQm9ORUFBQUJB
QUFHZTBRQUFBRUFBQVpnUkFBQUFRQUFCbGhFQUFBQkFBQUdQVVFBCkFBRUFBQVkxUkFBQUFRQUFC
aHBFQUFBQkFBQUdFa1FBQUFFQUFBYjNRd0FBQVFBQUJ1OURBQUFCQUFBRzFFTUFBQUVBQUFiTVF3
QUEKQVFBQUJyRkRBQUFCQUFBR3FVTUFBQUVBQUFhZVF3QUFBUUFBQnBaREFBQUJBQUFHZTBNQUFB
RUFBQVp6UXdBQUFRQUFCbWhEQUFBQgpBQUFHWUVNQUFBRUFBQVpGUXdBQUFRQUFCajFEQUFBQkFB
QUdNVU1BQUFFQUFBWXBRd0FBQVFBQUJoNURBQUFCQUFBR0ZrTUFBQUVBCkFBYjdRZ0FBQVFBQUJ2
TkNBQUFCQUFBRzVrSUFBQUVBQUFiZVFnQUFBUUFBQnROQ0FBQUJBQUFHeTBJQUFBRUFBQWF3UWdB
QUFRQUEKQnFoQ0FBQUJBQUFHbTBJQUFBRUFBQWFUUWdBQUFRQUFCb2hDQUFBQkFBQUdnRUlBQUFF
QUFBWmxRZ0FBQVFBQUJsMUNBQUFCQUFBRwpVa0lBQUFFQUFBWktRZ0FBQVFBQUJpNUNBQUFCQUFB
R0prSUFBQUVBQUFZYlFnQUFBUUFBQmhOQ0FBQUJBQUFHK0VFQUFBRUFBQWJ3ClFRQUFBUUFBQnRW
QkFBQUJBQUFHelVFQUFBRUFBQWJDUVFBQUFRQUFCcnBCQUFBQkFBQUduMEVBQUFFQUFBYVhRUUFB
QVFBQUJueEIKQUFBQkFBQUdkRUVBQUFFQUFBWlpRUUFBQVFBQUJsRkJBQUFCQUFBR05rRUFBQUVB
QUFZdVFRQUFBUUFBQmhOQkFBQUJBQUFHQzBFQQpBQUVBQUFid1FBQUFBUUFBQnVoQUFBQUJBQUFH
M1VBQUFBRUFBQWJWUUFBQUFRQUFCcmxBQUFBQkFBQUdzVUFBQUFFQUFBYW1RQUFBCkFRQUFCcDVB
QUFBQkFBQUdnMEFBQUFFQUFBWjdRQUFBQVFBQUJuQkFBQUFCQUFBR2FFQUFBQUVBQUFaTlFBQUFB
UUFBQmtWQUFBQUIKQUFBR0trQUFBQUVBQUFZaVFBQUFBUUFBQmdkQUFBQUJBQUFHL3o4QUFBRUFB
QWJrUHdBQUFRQUFCdHcvQUFBQkFBQUd3VDhBQUFFQQpBQWE1UHdBQUFRQUFCcTQvQUFBQkFBQUdw
ajhBQUFFQUFBYUxQd0FBQVFBQUJvTS9BQUFCQUFBR2FEOEFBQUVBQUFaZ1B3QUFBUUFBCkJsVS9B
QUFCQUFBR1RUOEFBQUVBQUFZeVB3QUFBUUFBQmlvL0FBQUJBQUFHSHo4QUFBRUFBQVlYUHdBQUFR
QUFCdncrQUFBQkFBQUcKOUQ0QUFBRUFBQWJwUGdBQUFRQUFCdUUrQUFBQkFBQUcxajRBQUFFQUFB
Yk9QZ0FBQVFBQUJyTStBQUFCQUFBR3F6NEFBQUVBQUFhUQpQZ0FBQVFBQUJvZytBQUFCQUFBR2JU
NEFBQUVBQUFabFBnQUFBUUFBQmtvK0FBQUJBQUFHUWo0QUFBRUFBQVluUGdBQUFRQUFCaDgrCkFB
QUJBQUFHRkQ0QUFBRUFBQVlNUGdBQUFRQUFCdkU5QUFBQkFBQUc2VDBBQUFFQUFBYmVQUUFBQVFB
QUJ0WTlBQUFCQUFBR3V6MEEKQUFFQUFBYXpQUUFBQVFBQUJwZzlBQUFCQUFBR2tEMEFBQUVBQUFa
MVBRQUFBUUFBQm0wOUFBQUJBQUFHVWowQUFBRUFBQVpLUFFBQQpBUUFBQmo4OUFBQUJBQUFHTnow
QUFBRUFBQVlzUFFBQUFRQUFCaVE5QUFBQkFBQUdDVDBBQUFFQUFBWUJQUUFBQVFBQUJ1WThBQUFC
CkFBQUczandBQUFFQUFBYlRQQUFBQVFBQUJzczhBQUFCQUFBR3dEd0FBQUVBQUFhNFBBQUFBUUFB
QnAwOEFBQUJBQUFHbFR3QUFBRUEKQUFaNlBBQUFBUUFBQm5JOEFBQUJBQUFHWnp3QUFBRUFBQVpm
UEFBQUFRQUFCa1E4QUFBQkFBQUdQRHdBQUFFQUFBWWhQQUFBQVFBQQpCaGs4QUFBQkFBQUcvanNB
QUFFQUFBYjJPd0FBQVFBQUJ1czdBQUFCQUFBRzR6c0FBQUVBQUFiWU93QUFBUUFBQnRBN0FBQUJB
QUFHCnRUc0FBQUVBQUFhdE93QUFBUUFBQnFJN0FBQUJBQUFHbWpzQUFBRUFBQWFQT3dBQUFRQUFC
b2M3QUFBQkFBQUdiRHNBQUFFQUFBWmsKT3dBQUFRQUFCbGs3QUFBQkFBQUdVVHNBQUFFQUFBWkdP
d0FBQVFBQUJqNDdBQUFCQUFBR0l6c0FBQUVBQUFZYk93QUFBUUFBQmdBNwpBQUFCQUFBRytEb0FB
QUVBQUFidE9nQUFBUUFBQnVVNkFBQUJBQUFHMmpvQUFBRUFBQWJTT2dBQUFRQUFCcmM2QUFBQkFB
QUdyem9BCkFBRUFBQWFrT2dBQUFRQUFCcHc2QUFBQkFBQUdrVG9BQUFFQUFBYUpPZ0FBQVFBQUJt
NDZBQUFCQUFBR1pqb0FBQUVBQUFaTE9nQUEKQVFBQUJrTTZBQUFCQUFBR0tEb0FBQUVBQUFZZ09n
QUFBUUFBQmdNNkFBQUJBQUFHK3prQUFBRUFBQWJ3T1FBQUFRQUFCdWc1QUFBQgpBQUFHelRrQUFB
RUFBQWJGT1FBQUFRQUFCcWc1QUFBQkFBQUdvRGtBQUFFQUFBYVZPUUFBQVFBQUJvMDVBQUFCQUFB
R2NEa0FBQUVBCkFBWm9PUUFBQVFBQUJsMDVBQUFCQUFBR1ZUa0FBQUVBQUFZNE9RQUFBUUFBQmpB
NUFBQUJBQUFHSlRrQUFBRUFBQVlkT1FBQUFRQUEKQmdBNUFBQUJBQUFHK0RnQUFBRUFBQWJ0T0FB
QUFRQUFCdVU0QUFBQkFBQUd5RGdBQUFFQUFBYkFPQUFBQVFBQUJyVTRBQUFCQUFBRwpyVGdBQUFF
QUFBYVNPQUFBQVFBQUJvbzRBQUFCQUFBR2J6Z0FBQUVBQUFabk9BQUFBUUFBQmt3NEFBQUJBQUFH
UkRnQUFBRUFBQVkzCk9BQUFBUUFBQmk4NEFBQUJBQUFHSkRnQUFBRUFBQVljT0FBQUFRQUFCZ0U0
QUFBQkFBQUcrVGNBQUFFQUFBYnNOd0FBQVFBQUJ1UTMKQUFBQkFBQUcyVGNBQUFFQUFBYlJOd0FB
QVFBQUJyWTNBQUFCQUFBR3JqY0FBQUVBQUFhVE53QUFBUUFBQm9zM0FBQUJBQUFHZ0RjQQpBQUVB
QUFaNE53QUFBUUFBQm0wM0FBQUJBQUFHWlRjQUFBRUFBQVphTndBQUFRQUFCbEkzQUFBQkFBQUdS
emNBQUFFQUFBWS9Od0FBCkFRQUFCaVEzQUFBQkFBQUdIRGNBQUFFQUFBWUJOd0FBQVFBQUJ2azJB
QUFCQUFBRzNqWUFBQUVBQUFiV05nQUFBUUFBQnJzMkFBQUIKQUFBR3N6WUFBQUVBQUFhb05nQUFB
UUFBQnFBMkFBQUJBQUFHbFRZQUFBRUFBQWFOTmdBQUFRQUFCbkkyQUFBQkFBQUdhallBQUFFQQpB
QVpQTmdBQUFRQUFCa2MyQUFBQkFBQUdQRFlBQUFFQUFBWTBOZ0FBQVFBQUJpazJBQUFCQUFBR0lU
WUFBQUVBQUFZR05nQUFBUUFBCkJ2NDFBQUFCQUFBRzh6VUFBQUVBQUFick5RQUFBUUFBQnRBMUFB
QUJBQUFHeURVQUFBRUFBQWF0TlFBQUFRQUFCcVUxQUFBQkFBQUcKaWpVQUFBRUFBQWFDTlFBQUFR
QUFCbmMxQUFBQkFBQUdielVBQUFFQUFBWlVOUUFBQVFBQUJrdzFBQUFCQUFBR01UVUFBQUVBQUFZ
cApOUUFBQVFBQUJnNDFBQUFCQUFBR0JqVUFBQUVBQUFick5BQUFBUUFBQnVNMEFBQUJBQUFHeURR
QUFBRUFBQWJBTkFBQUFRQUFCcVUwCkFBQUJBQUFHblRRQUFBRUFBQWFTTkFBQUFRQUFCb28wQUFB
QkFBQUdielFBQUFFQUFBWm5OQUFBQVFBQUJsdzBBQUFCQUFBR1ZEUUEKQUFFQUFBWTVOQUFBQVFB
QUJqRTBBQUFCQUFBR0pqUUFBQUVBQUFZZU5BQUFBUUFBQmhNMEFBQUJBQUFHQ3pRQUFBRUFBQWJ3
TXdBQQpBUUFBQnVnekFBQUJBQUFHelRNQUFBRUFBQWJGTXdBQUFRQUFCcW96QUFBQkFBQUdvak1B
QUFFQUFBYUhNd0FBQVFBQUJuOHpBQUFCCkFBQUdkRE1BQUFFQUFBWnNNd0FBQVFBQUJtRXpBQUFC
QUFBR1dUTUFBQUVBQUFZK013QUFBUUFBQmpZekFBQUJBQUFHS3pNQUFBRUEKQUFZak13QUFBUUFB
QmhnekFBQUJBQUFHRURNQUFBRUFBQWIxTWdBQUFRQUFCdTB5QUFBQkFBQUcwaklBQUFFQUFBYktN
Z0FBQVFBQQpCcTh5QUFBQkFBQUdweklBQUFFQUFBYWNNZ0FBQVFBQUJwUXlBQUFCQUFBR2lUSUFB
QUVBQUFhQk1nQUFBUUFBQm1ZeUFBQUJBQUFHClhqSUFBQUVBQUFaRE1nQUFBUUFBQmpzeUFBQUJB
QUFHSURJQUFBRUFBQVlZTWdBQUFRQUFCZzB5QUFBQkFBQUdCVElBQUFFQUFBYjYKTVFBQUFRQUFC
dkl4QUFBQkFBQUcxekVBQUFFQUFBYlBNUUFBQVFBQUJyUXhBQUFCQUFBR3JERUFBQUVBQUFhUk1R
QUFBUUFBQm9reApBQUFCQUFBR2JqRUFBQUVBQUFabU1RQUFBUUFBQmtzeEFBQUJBQUFHUXpFQUFB
RUFBQVlvTVFBQUFRQUFCaUF4QUFBQkFBQUdGVEVBCkFBRUFBQVlOTVFBQUFRQUFCZ0l4QUFBQkFB
QUcrakFBQUFFQUFBYmZNQUFBQVFBQUJ0Y3dBQUFCQUFBR3ZEQUFBQUVBQUFhME1BQUEKQVFBQUJx
a3dBQUFCQUFBR29UQUFBQUVBQUFhV01BQUFBUUFBQm80d0FBQUJBQUFHY3pBQUFBRUFBQVpyTUFB
QUFRQUFCbUF3QUFBQgpBQUFHV0RBQUFBRUFBQVk5TUFBQUFRQUFCalV3QUFBQkFBQUdLakFBQUFF
QUFBWWlNQUFBQVFBQUJnY3dBQUFCQUFBRy95OEFBQUVBCkFBYmtMd0FBQVFBQUJ0d3ZBQUFCQUFB
RzBTOEFBQUVBQUFiSkx3QUFBUUFBQnE0dkFBQUJBQUFHcGk4QUFBRUFBQWFiTHdBQUFRQUEKQnBN
dkFBQUJBQUFHaUM4QUFBRUFBQWFBTHdBQUFRQUFCbVV2QUFBQkFBQUdYUzhBQUFFQUFBWkNMd0FB
QVFBQUJqb3ZBQUFCQUFBRwpMeThBQUFFQUFBWW5Md0FBQVFBQUJod3ZBQUFCQUFBR0ZDOEFBQUVB
QUFiNUxnQUFBUUFBQnZFdUFBQUJBQUFHMWk0QUFBRUFBQWJPCkxnQUFBUUFBQnJNdUFBQUJBQUFH
cXk0QUFBRUFBQWFnTGdBQUFRQUFCcGd1QUFBQkFBQUdqUzRBQUFFQUFBYUZMZ0FBQVFBQUJtb3UK
QUFBQkFBQUdZaTRBQUFFQUFBWlhMZ0FBQVFBQUJrOHVBQUFCQUFBR1JDNEFBQUVBQUFZOExnQUFB
UUFBQmlFdUFBQUJBQUFHR1M0QQpBQUVBQUFZT0xnQUFBUUFBQmdZdUFBQUJBQUFHK3kwQUFBRUFB
QWJ6TFFBQUFRQUFCdGd0QUFBQkFBQUcwQzBBQUFFQUFBYTFMUUFBCkFRQUFCcTB0QUFBQkFBQUdr
aTBBQUFFQUFBYUtMUUFBQVFBQUJuOHRBQUFCQUFBR2R5MEFBQUVBQUFaY0xRQUFBUUFBQmxRdEFB
QUIKQUFBR09TMEFBQUVBQUFZeExRQUFBUUFBQmlZdEFBQUJBQUFHSGkwQUFBRUFBQVlDTFFBQUFR
QUFCdm9zQUFBQkFBQUc3eXdBQUFFQQpBQWJuTEFBQUFRQUFCdHNzQUFBQkFBQUcweXdBQUFFQUFB
YTRMQUFBQVFBQUJyQXNBQUFCQUFBR3BTd0FBQUVBQUFhZExBQUFBUUFBCkJvSXNBQUFCQUFBR2Vp
d0FBQUVBQUFadkxBQUFBUUFBQm1jc0FBQUJBQUFHWEN3QUFBRUFBQVpVTEFBQUFRQUFCamtzQUFB
QkFBQUcKTVN3QUFBRUFBQVltTEFBQUFRQUFCaDRzQUFBQkFBQUdBeXdBQUFFQUFBYjdLd0FBQVFB
QUJ1QXJBQUFCQUFBRzJDc0FBQUVBQUFiTgpLd0FBQVFBQUJzVXJBQUFCQUFBR3F5c0FBQUVBQUFh
akt3QUFBUUFBQnBnckFBQUJBQUFHa0NzQUFBRUFBQWFHS3dBQUFRQUFCbjRyCkFBQUJBQUFHWXlz
QUFBRUFBQVpiS3dBQUFRQUFCbEFyQUFBQkFBQUdTQ3NBQUFFQUFBWXRLd0FBQVFBQUJpVXJBQUFC
QUFBR0dpc0EKQUFFQUFBWVNLd0FBQVFBQUJ2Z3FBQUFCQUFBRzhDb0FBQUVBQUFibEtnQUFBUUFB
QnQwcUFBQUJBQUFHMHlvQUFBRUFBQWJMS2dBQQpBUUFBQnNBcUFBQUJBQUFHdUNvQUFBRUFBQWF1
S2dBQUFRQUFCcVlxQUFBQkFBQUdpeW9BQUFFQUFBYURLZ0FBQVFBQUJuZ3FBQUFCCkFBQUdjQ29B
QUFFQUFBWmxLZ0FBQVFBQUJsMHFBQUFCQUFBR1Fpb0FBQUVBQUFZNktnQUFBUUFBQmg4cUFBQUJB
QUFHRnlvQUFBRUEKQUFZTUtnQUFBUUFBQmdRcUFBQUJBQUFHNmlrQUFBRUFBQWJpS1FBQUFRQUFC
dGNwQUFBQkFBQUd6eWtBQUFFQUFBYkZLUUFBQVFBQQpCcjBwQUFBQkFBQUdvaWtBQUFFQUFBYWFL
UUFBQVFBQUJvOHBBQUFCQUFBR2h5a0FBQUVBQUFac0tRQUFBUUFBQm1RcEFBQUJBQUFHCldTa0FB
QUVBQUFaUktRQUFBUUFBQmpjcEFBQUJBQUFHTHlrQUFBRUFBQVlrS1FBQUFRQUFCaHdwQUFBQkFB
QUdFaWtBQUFFQUFBWUsKS1FBQUFRQUFCdThvQUFBQkFBQUc1eWdBQUFFQUFBYmNLQUFBQVFBQUJ0
UW9BQUFCQUFBR3lTZ0FBQUVBQUFiQktBQUFBUUFBQnFZbwpBQUFCQUFBR25pZ0FBQUVBQUFhREtB
QUFBUUFBQm5zb0FBQUJBQUFHWUNnQUFBRUFBQVpZS0FBQUFRQUFCajBvQUFBQkFBQUdOU2dBCkFB
RUFBQVlhS0FBQUFRQUFCaElvQUFBQkFBQUc5eWNBQUFFQUFBYnZKd0FBQVFBQUJ0UW5BQUFCQUFB
R3pDY0FBQUVBQUFheEp3QUEKQVFBQUJxa25BQUFCQUFBR25pY0FBQUVBQUFhV0p3QUFBUUFBQm5z
bkFBQUJBQUFHY3ljQUFBRUFBQVpvSndBQUFRQUFCbUFuQUFBQgpBQUFHUlNjQUFBRUFBQVk5SndB
QUFRQUFCakluQUFBQkFBQUdLaWNBQUFFQUFBWVBKd0FBQVFBQUJnY25BQUFCQUFBRy9DWUFBQUVB
CkFBYjBKZ0FBQVFBQUJ0a21BQUFCQUFBRzBTWUFBQUVBQUFhMkpnQUFBUUFBQnE0bUFBQUJBQUFH
a3lZQUFBRUFBQWFMSmdBQUFRQUEKQm9BbUFBQUJBQUFHZUNZQUFBRUFBQVpkSmdBQUFRQUFCbFVt
QUFBQkFBQUdPaVlBQUFFQUFBWXlKZ0FBQVFBQUJoY21BQUFCQUFBRwpEeVlBQUFFQUFBWUVKZ0FB
QVFBQUJ2d2xBQUFCQUFBRzhTVUFBQUVBQUFicEpRQUFBUUFBQnM0bEFBQUJBQUFHeGlVQUFBRUFB
QWFyCkpRQUFBUUFBQnFNbEFBQUJBQUFHbUNVQUFBRUFBQWFRSlFBQUFRQUFCblVsQUFBQkFBQUdi
U1VBQUFFQUFBWlNKUUFBQVFBQUJrb2wKQUFBQkFBQUdQeVVBQUFFQUFBWTNKUUFBQVFBQUJod2xB
QUFCQUFBR0ZDVUFBQUVBQUFiNUpBQUFBUUFBQnZFa0FBQUJBQUFHMWlRQQpBQUVBQUFiT0pBQUFB
UUFBQnJNa0FBQUJBQUFHcXlRQUFBRUFBQWFRSkFBQUFRQUFCb2drQUFBQkFBQUdiU1FBQUFFQUFB
WmxKQUFBCkFRQUFCa29rQUFBQkFBQUdRaVFBQUFFQUFBWW5KQUFBQVFBQUJoOGtBQUFCQUFBR0JD
UUFBQUVBQUFiOEl3QUFBUUFBQnVFakFBQUIKQUFBRzJTTUFBQUVBQUFhK0l3QUFBUUFBQnJZakFB
QUJBQUFHbXlNQUFBRUFBQWFUSXdBQUFRQUFCbmdqQUFBQkFBQUdjQ01BQUFFQQpBQVpWSXdBQUFR
QUFCazBqQUFBQkFBQUdNaU1BQUFFQUFBWXFJd0FBQVFBQUJnOGpBQUFCQUFBR0J5TUFBQUVBQUFi
c0lnQUFBUUFBCkJ1UWlBQUFCQUFBR3lTSUFBQUVBQUFiQklnQUFBUUFBQnFZaUFBQUJBQUFHbmlJ
QUFBRUFBQWFUSWdBQUFRQUFCb3NpQUFBQkFBQUcKY0NJQUFBRUFBQVpvSWdBQUFRQUFCbDBpQUFB
QkFBQUdWU0lBQUFFQUFBWTZJZ0FBQVFBQUJqSWlBQUFCQUFBR0p5SUFBQUVBQUFZZgpJZ0FBQVFB
QUJnUWlBQUFCQUFBRy9DRUFBQUVBQUFieElRQUFBUUFBQnVraEFBQUJBQUFHemlFQUFBRUFBQWJH
SVFBQUFRQUFCcXNoCkFBQUJBQUFHb3lFQUFBRUFBQWFJSVFBQUFRQUFCb0FoQUFBQkFBQUdaU0VB
QUFFQUFBWmRJUUFBQVFBQUJrSWhBQUFCQUFBR09pRUEKQUFFQUFBWWZJUUFBQVFBQUJoY2hBQUFC
QUFBRy9DQUFBQUVBQUFiMElBQUFBUUFBQnRrZ0FBQUJBQUFHMFNBQUFBRUFBQWEySUFBQQpBUUFB
QnE0Z0FBQUJBQUFHb3lBQUFBRUFBQWFiSUFBQUFRQUFCb0FnQUFBQkFBQUdlQ0FBQUFFQUFBWmRJ
QUFBQVFBQUJsVWdBQUFCCkFBQUdTaUFBQUFFQUFBWkNJQUFBQVFBQUJpY2dBQUFCQUFBR0h5QUFB
QUVBQUFZRUlBQUFBUUFBQnZ3ZkFBQUJBQUFHNFI4QUFBRUEKQUFiWkh3QUFBUUFBQnI0ZkFBQUJB
QUFHdGg4QUFBRUFBQWFySHdBQUFRQUFCcU1mQUFBQkFBQUdpQjhBQUFFQUFBYUFId0FBQVFBQQpC
blVmQUFBQkFBQUdiUjhBQUFFQUFBWlNId0FBQVFBQUJrb2ZBQUFCQUFBR0x4OEFBQUVBQUFZbkh3
QUFBUUFBQmd3ZkFBQUJBQUFHCkJCOEFBQUVBQUFicEhnQUFBUUFBQnVFZUFBQUJBQUFHeGg0QUFB
RUFBQWErSGdBQUFRQUFCcU1lQUFBQkFBQUdteDRBQUFFQUFBYUEKSGdBQUFRQUFCbmdlQUFBQkFB
QUdYUjRBQUFFQUFBWlZIZ0FBQVFBQUJqb2VBQUFCQUFBR01oNEFBQUVBQUFZWEhnQUFBUUFBQmc4
ZQpBQUFCQUFBR0JCNEFBQUVBQUFiOEhRQUFBUUFBQnVFZEFBQUJBQUFHMlIwQUFBRUFBQWJPSFFB
QUFRQUFCc1lkQUFBQkFBQUd1eDBBCkFBRUFBQWF6SFFBQUFRQUFCcWdkQUFBQkFBQUdvQjBBQUFF
QUFBYUZIUUFBQVFBQUJuMGRBQUFCQUFBR2NoMEFBQUVBQUFacUhRQUEKQVFBQUJrOGRBQUFCQUFB
R1J4MEFBQUVBQUFZOEhRQUFBUUFBQmpRZEFBQUJBQUFHR1IwQUFBRUFBQVlSSFFBQUFRQUFCZ1lk
QUFBQgpBQUFHL2h3QUFBRUFBQWJ6SEFBQUFRQUFCdXNjQUFBQkFBQUcwQndBQUFFQUFBYklIQUFB
QVFBQUJyMGNBQUFCQUFBR3RSd0FBQUVBCkFBYXFIQUFBQVFBQUJxSWNBQUFCQUFBR2h4d0FBQUVB
QUFaL0hBQUFBUUFBQm5RY0FBQUJBQUFHYkJ3QUFBRUFBQVpSSEFBQUFRQUEKQmtrY0FBQUJBQUFH
UGh3QUFBRUFBQVkySEFBQUFRQUFCaXNjQUFBQkFBQUdJeHdBQUFFQUFBWUhIQUFBQVFBQUJ2OGJB
QUFCQUFBRwo1QnNBQUFFQUFBYmNHd0FBQVFBQUJ0RWJBQUFCQUFBR3lSc0FBQUVBQUFhdUd3QUFB
UUFBQnFZYkFBQUJBQUFHbXhzQUFBRUFBQWFUCkd3QUFBUUFBQm5nYkFBQUJBQUFHY0JzQUFBRUFB
QVpsR3dBQUFRQUFCbDBiQUFBQkFBQUdRaHNBQUFFQUFBWTZHd0FBQVFBQUJoOGIKQUFBQkFBQUdG
eHNBQUFFQUFBWU1Hd0FBQVFBQUJnUWJBQUFCQUFBRzZSb0FBQUVBQUFiaEdnQUFBUUFBQnRZYUFB
QUJBQUFHemhvQQpBQUVBQUFhekdnQUFBUUFBQnFzYUFBQUJBQUFHb0JvQUFBRUFBQWFZR2dBQUFR
QUFCbjBhQUFBQkFBQUdkUm9BQUFFQUFBWnFHZ0FBCkFRQUFCbUlhQUFBQkFBQUdSeG9BQUFFQUFB
WS9HZ0FBQVFBQUJqUWFBQUFCQUFBR0xCb0FBQUVBQUFZUkdnQUFBUUFBQmdrYUFBQUIKQUFBRzdo
a0FBQUVBQUFibUdRQUFBUUFBQnNzWkFBQUJBQUFHd3hrQUFBRUFBQWFvR1FBQUFRQUFCcUFaQUFB
QkFBQUdoUmtBQUFFQQpBQVo5R1FBQUFRQUFCbUlaQUFBQkFBQUdXaGtBQUFFQUFBWlBHUUFBQVFB
QUJrY1pBQUFCQUFBR0xCa0FBQUVBQUFZa0dRQUFBUUFBCkJna1pBQUFCQUFBR0FSa0FBQUVBQUFi
MkdBQUFBUUFBQnU0WUFBQUJBQUFHNHhnQUFBRUFBQWJiR0FBQUFRQUFCc0FZQUFBQkFBQUcKdUJn
QUFBRUFBQWF0R0FBQUFRQUFCcVVZQUFBQkFBQUdpaGdBQUFFQUFBYUNHQUFBQVFBQUJuY1lBQUFC
QUFBR2J4Z0FBQUVBQUFaawpHQUFBQVFBQUJsd1lBQUFCQUFBR1FCZ0FBQUVBQUFZNEdBQUFBUUFB
QmkwWUFBQUJBQUFHSlJnQUFBRUFBQVlLR0FBQUFRQUFCZ0lZCkFBQUJBQUFHOXhjQUFBRUFBQWJ2
RndBQUFRQUFCdFFYQUFBQkFBQUd6QmNBQUFFQUFBYXhGd0FBQVFBQUJxa1hBQUFCQUFBR25oY0EK
QUFFQUFBYVdGd0FBQVFBQUJvc1hBQUFCQUFBR2d4Y0FBQUVBQUFab0Z3QUFBUUFBQm1BWEFBQUJB
QUFHUlJjQUFBRUFBQVk5RndBQQpBUUFBQmpJWEFBQUJBQUFHS2hjQUFBRUFBQVlQRndBQUFRQUFC
Z2NYQUFBQkFBQUc3QllBQUFFQUFBYmtGZ0FBQVFBQUJ0a1dBQUFCCkFBQUcwUllBQUFFQUFBYTFG
Z0FBQVFBQUJxMFdBQUFCQUFBR29oWUFBQUVBQUFhYUZnQUFBUUFBQm80V0FBQUJBQUFHaGhZQUFB
RUEKQUFackZnQUFBUUFBQm1NV0FBQUJBQUFHV0JZQUFBRUFBQVpRRmdBQUFRQUFCalVXQUFBQkFB
QUdMUllBQUFFQUFBWVNGZ0FBQVFBQQpCZ29XQUFBQkFBQUcvaFVBQUFFQUFBYjJGUUFBQVFBQUJ0
c1ZBQUFCQUFBRzB4VUFBQUVBQUFiSUZRQUFBUUFBQnNBVkFBQUJBQUFHCnRSVUFBQUVBQUFhdEZR
QUFBUUFBQnBJVkFBQUJBQUFHaWhVQUFBRUFBQVp2RlFBQUFRQUFCbWNWQUFBQkFBQUdUQlVBQUFF
QUFBWkUKRlFBQUFRQUFCamtWQUFBQkFBQUdNUlVBQUFFQUFBWVdGUUFBQVFBQUJnNFZBQUFCQUFB
R0F4VUFBQUVBQUFiN0ZBQUFBUUFBQnZBVQpBQUFCQUFBRzZCUUFBQUVBQUFiTkZBQUFBUUFBQnNV
VUFBQUJBQUFHdWhRQUFBRUFBQWF5RkFBQUFRQUFCcWNVQUFBQkFBQUdueFFBCkFBRUFBQWFVRkFB
QUFRQUFCb3dVQUFBQkFBQUdjUlFBQUFFQUFBWnBGQUFBQVFBQUJrNFVBQUFCQUFBR1JoUUFBQUVB
QUFZckZBQUEKQVFBQUJpTVVBQUFCQUFBR0NCUUFBQUVBQUFZQUZBQUFBUUFBQnVVVEFBQUJBQUFH
M1JNQUFBRUFBQWJDRXdBQUFRQUFCcm9UQUFBQgpBQUFHbnhNQUFBRUFBQWFYRXdBQUFRQUFCb3dU
QUFBQkFBQUdoQk1BQUFFQUFBWjVFd0FBQVFBQUJuRVRBQUFCQUFBR1ZoTUFBQUVBCkFBWk9Fd0FB
QVFBQUJqTVRBQUFCQUFBR0t4TUFBQUVBQUFZUUV3QUFBUUFBQmdnVEFBQUJBQUFHN1JJQUFBRUFB
QWJsRWdBQUFRQUEKQnRvU0FBQUJBQUFHMGhJQUFBRUFBQWEzRWdBQUFRQUFCcThTQUFBQkFBQUdw
QklBQUFFQUFBYWNFZ0FBQVFBQUJvRVNBQUFCQUFBRwplUklBQUFFQUFBWnVFZ0FBQVFBQUJtWVNB
QUFCQUFBR1N4SUFBQUVBQUFaREVnQUFBUUFBQmpnU0FBQUJBQUFHTUJJQUFBRUFBQVlsCkVnQUFB
UUFBQmgwU0FBQUJBQUFHQWhJQUFBRUFBQWI2RVFBQUFRQUFCdThSQUFBQkFBQUc1eEVBQUFFQUFB
YmNFUUFBQVFBQUJ0UVIKQUFBQkFBQUd1UkVBQUFFQUFBYXhFUUFBQVFBQUJxWVJBQUFCQUFBR25o
RUFBQUVBQUFhREVRQUFBUUFBQm5zUkFBQUJBQUFHY0JFQQpBQUVBQUFab0VRQUFBUUFBQmswUkFB
QUJBQUFHUlJFQUFBRUFBQVk2RVFBQUFRQUFCaklSQUFBQkFBQUdGeEVBQUFFQUFBWVBFUUFBCkFR
QUFCZ1FSQUFBQkFBQUcvQkFBQUFFQUFBYmhFQUFBQVFBQUJ0a1FBQUFCQUFBR3ZoQUFBQUVBQUFh
MkVBQUFBUUFBQnFzUUFBQUIKQUFBR294QUFBQUVBQUFhSUVBQUFBUUFBQm9BUUFBQUJBQUFHWlJB
QUFBRUFBQVpkRUFBQUFRQUFCbElRQUFBQkFBQUdTaEFBQUFFQQpBQVl2RUFBQUFRQUFCaWNRQUFB
QkFBQUdEQkFBQUFFQUFBWUVFQUFBQVFBQUJ1a1BBQUFCQUFBRzRROEFBQUVBQUFiV0R3QUFBUUFB
CkJzNFBBQUFCQUFBR3N3OEFBQUVBQUFhckR3QUFBUUFBQnBBUEFBQUJBQUFHaUE4QUFBRUFBQVp0
RHdBQUFRQUFCbVVQQUFBQkFBQUcKU2c4QUFBRUFBQVpDRHdBQUFRQUFCaWNQQUFBQkFBQUdIdzhB
QUFFQUFBWVVEd0FBQVFBQUJnd1BBQUFCQUFBR0FROEFBQUVBQUFiNQpEZ0FBQVFBQUJ0NE9BQUFC
QUFBRzFnNEFBQUVBQUFiTERnQUFBUUFBQnNNT0FBQUJBQUFHdUE0QUFBRUFBQWF3RGdBQUFRQUFC
cFVPCkFBQUJBQUFHalE0QUFBRUFBQWFDRGdBQUFRQUFCbm9PQUFBQkFBQUdYdzRBQUFFQUFBWlhE
Z0FBQVFBQUJrd09BQUFCQUFBR1JBNEEKQUFFQUFBWXBEZ0FBQVFBQUJpRU9BQUFCQUFBR0ZnNEFB
QUVBQUFZT0RnQUFBUUFBQnZNTkFBQUJBQUFHNncwQUFBRUFBQWJnRFFBQQpBUUFBQnRnTkFBQUJB
QUFHdlEwQUFBRUFBQWExRFFBQUFRQUFCcW9OQUFBQkFBQUdvZzBBQUFFQUFBYVhEUUFBQVFBQUJv
OE5BQUFCCkFBQUdkQTBBQUFFQUFBWnNEUUFBQVFBQUJtRU5BQUFCQUFBR1dRMEFBQUVBQUFaT0RR
QUFBUUFBQmtZTkFBQUJBQUFHS3cwQUFBRUEKQUFZakRRQUFBUUFBQmhnTkFBQUJBQUFHRUEwQUFB
RUFBQVlGRFFBQUFRQUFCdjBNQUFBQkFBQUc0Z3dBQUFFQUFBYmFEQUFBQVFBQQpCcjhNQUFBQkFB
QUd0d3dBQUFFQUFBYWNEQUFBQVFBQUJwUU1BQUFCQUFBR2VRd0FBQUVBQUFaeERBQUFBUUFBQm1Z
TUFBQUJBQUFHClhnd0FBQUVBQUFaRERBQUFBUUFBQmpzTUFBQUJBQUFHTUF3QUFBRUFBQVlvREFB
QUFRQUFCaDBNQUFBQkFBQUdGUXdBQUFFQUFBYjYKQ3dBQUFRQUFCdklMQUFBQkFBQUc1d3NBQUFF
QUFBYmZDd0FBQVFBQUJ0UUxBQUFCQUFBR3pBc0FBQUVBQUFheEN3QUFBUUFBQnFrTApBQUFCQUFB
R25nc0FBQUVBQUFhV0N3QUFBUUFBQm9zTEFBQUJBQUFHZ3dzQUFBRUFBQVpvQ3dBQUFRQUFCbUFM
QUFBQkFBQUdSUXNBCkFBRUFBQVk5Q3dBQUFRQUFCaUlMQUFBQkFBQUdHZ3NBQUFFQUFBWVBDd0FB
QVFBQUJnY0xBQUFCQUFBRy9Bb0FBQUVBQUFiMENnQUEKQVFBQUJ0a0tBQUFCQUFBRzBRb0FBQUVB
QUFhMkNnQUFBUUFBQnE0S0FBQUJBQUFHa3dvQUFBRUFBQWFMQ2dBQUFRQUFCb0FLQUFBQgpBQUFH
ZUFvQUFBRUFBQVpkQ2dBQUFRQUFCbFVLQUFBQkFBQUdTZ29BQUFFQUFBWkNDZ0FBQVFBQUJpY0tB
QUFCQUFBR0h3b0FBQUVBCkFBWVVDZ0FBQVFBQUJnd0tBQUFCQUFBRzhRa0FBQUVBQUFicENRQUFB
UUFBQnM0SkFBQUJBQUFHeGdrQUFBRUFBQWFyQ1FBQUFRQUEKQnFNSkFBQUJBQUFHbHdrQUFBRUFB
QWFQQ1FBQUFRQUFCblFKQUFBQkFBQUdiQWtBQUFFQUFBWlJDUUFBQVFBQUJra0pBQUFCQUFBRwpM
Z2tBQUFFQUFBWW1DUUFBQVFBQUJoc0pBQUFCQUFBR0V3a0FBQUVBQUFiNENBQUFBUUFBQnZBSUFB
QUJBQUFHNVFnQUFBRUFBQWJkCkNBQUFBUUFBQnNJSUFBQUJBQUFHdWdnQUFBRUFBQWFmQ0FBQUFR
QUFCcGNJQUFBQkFBQUdqQWdBQUFFQUFBYUVDQUFBQVFBQUJta0kKQUFBQkFBQUdZUWdBQUFFQUFB
WkdDQUFBQVFBQUJqNElBQUFCQUFBR0l3Z0FBQUVBQUFZYkNBQUFBUUFBQmhBSUFBQUJBQUFHQ0Fn
QQpBQUVBQUFidEJ3QUFBUUFBQnVVSEFBQUJBQUFHeWdjQUFBRUFBQWJDQndBQUFRQUFCcWNIQUFB
QkFBQUdud2NBQUFFQUFBYVVCd0FBCkFRQUFCb3dIQUFBQkFBQUdjUWNBQUFFQUFBWnBCd0FBQVFB
QUJsNEhBQUFCQUFBR1ZnY0FBQUVBQUFZN0J3QUFBUUFBQmpNSEFBQUIKQUFBR0tBY0FBQUVBQUFZ
Z0J3QUFBUUFBQmhVSEFBQUJBQUFHRFFjQUFBRUFBQWJ5QmdBQUFRQUFCdW9HQUFBQkFBQUd6d1lB
QUFFQQpBQWJIQmdBQUFRQUFCcXdHQUFBQkFBQUdwQVlBQUFFQUFBYUpCZ0FBQVFBQUJvRUdBQUFC
QUFBR1pnWUFBQUVBQUFaZUJnQUFBUUFBCkJrTUdBQUFCQUFBR093WUFBQUVBQUFZZ0JnQUFBUUFB
QmhnR0FBQUJBQUFHRFFZQUFBRUFBQVlGQmdBQUFRQUFCdm9GQUFBQkFBQUcKOGdVQUFBRUFBQWJY
QlFBQUFRQUFCczhGQUFBQkFBQUd4QVVBQUFFQUFBYThCUUFBQVFBQUJxRUZBQUFCQUFBR21RVUFB
QUVBQUFaKwpCUUFBQVFBQUJuWUZBQUFCQUFBR2F3VUFBQUVBQUFaakJRQUFBUUFBQmxnRkFBQUJB
QUFHVUFVQUFBRUFBQVkxQlFBQUFRQUFCaTBGCkFBQUJBQUFHSWdVQUFBRUFBQVlhQlFBQUFRQUFC
ZzhGQUFBQkFBQUdCd1VBQUFFQUFBYnNCQUFBQVFBQUJ1UUVBQUFCQUFBRzJRUUEKQUFFQUFBYlJC
QUFBQVFBQUJzWUVBQUFCQUFBR3ZnUUFBQUVBQUFhakJBQUFBUUFBQnBzRUFBQUJBQUFHa0FRQUFB
RUFBQWFJQkFBQQpBUUFBQm0wRUFBQUJBQUFHWlFRQUFBRUFBQVpLQkFBQUFRQUFCa0lFQUFBQkFB
QUdKd1FBQUFFQUFBWWZCQUFBQVFBQUJoUUVBQUFCCkFBQUdEQVFBQUFFQUFBWUJCQUFBQVFBQUJ2
a0RBQUFCQUFBRzNnTUFBQUVBQUFiV0F3QUFBUUFBQnNzREFBQUJBQUFHd3dNQUFBRUEKQUFhb0F3
QUFBUUFBQnFBREFBQUJBQUFHaFFNQUFBRUFBQVo5QXdBQUFRQUFCbUlEQUFBQkFBQUdXZ01BQUFF
QUFBWS9Bd0FBQVFBQQpCamNEQUFBQkFBQUdIQU1BQUFFQUFBWVVBd0FBQVFBQUJ2a0NBQUFCQUFB
RzhRSUFBQUVBQUFibUFnQUFBUUFBQnQ0Q0FBQUJBQUFHCnd3SUFBQUVBQUFhN0FnQUFBUUFBQnJB
Q0FBQUJBQUFHcUFJQUFBRUFBQWFOQWdBQUFRQUFCb1VDQUFBQkFBQUdhZ0lBQUFFQUFBWmkKQWdB
QUFRQUFCa2NDQUFBQkFBQUdQd0lBQUFFQUFBWTBBZ0FBQVFBQUJpd0NBQUFCQUFBR0lRSUFBQUVB
QUFZWkFnQUFBUUFBQnY0QgpBQUFCQUFBRzlnRUFBQUVBQUFickFRQUFBUUFBQnVNQkFBQUJBQUFH
eUFFQUFBRUFBQWJBQVFBQUFRQUFCcVVCQUFBQkFBQUduUUVBCkFBRUFBQWFTQVFBQUFRQUFCb29C
QUFBQkFBQUdid0VBQUFFQUFBWm5BUUFBQVFBQUJsd0JBQUFCQUFBR1ZBRUFBQUVBQUFaSkFRQUEK
QVFBQUJrRUJBQUFCQUFBR0pnRUFBQUVBQUFZZUFRQUFBUUFBQmdNQkFBQUJBQUFHK3dBQUFBRUFB
QWJnQUFBQUFRQUFCdGdBQUFBQgpBQUFHelFBQUFBRUFBQWJGQUFBQUFRQUFCcm9BQUFBQkFBQUdz
Z0FBQUFFQUFBYVhBQUFBQVFBQUJvOEFBQUFCQUFBR2RBQUFBQUVBCkFBWnNBQUFBQVFBQUJtRUFB
QUFCQUFBR1dRQUFBQUVBQUFaT0FBQUFBUUFBQmtZQUFBQUJBQUFHS3dBQUFBRUFBQVlqQUFBQUFR
QUEKQmdnQUFBQUJBQUFHQUFBQUFBRUFBQVlZQ0FBQUFRQUFCaEFJQUFBQkFBQUdDQWdBQUFFQUFB
WUFDQUFBQVFBQUJ1Z0hBQUFCQUFBRwo0QWNBQUFFQUFBYllCd0FBQVFBQUJ0QUhBQUFCQUFBR3VB
Y0FBQUVBQUFhd0J3QUFBUUFBQnFnSEFBQUJBQUFHb0FjQUFBRUFBQWFJCkJ3QUFBUUFBQm9BSEFB
QUJBQUFHZUFjQUFBRUFBQVp3QndBQUFRQUFCbGdIQUFBQkFBQUdVQWNBQUFFQUFBWklCd0FBQVFB
QUJrQUgKQUFBQkFBQUdPQWNBQUFFQUFBWXdCd0FBQVFBQUJoZ0hBQUFCQUFBR0VBY0FBQUVBQUFZ
SUJ3QUFBUUFBQmdBSEFBQUJBQUFHNkFZQQpBQUVBQUFiZ0JnQUFBUUFBQnRnR0FBQUJBQUFHMEFZ
QUFBRUFBQWE0QmdBQUFRQUFCckFHQUFBQkFBQUdxQVlBQUFFQUFBYWdCZ0FBCkFRQUFCb2dHQUFB
QkFBQUdnQVlBQUFFQUFBWjRCZ0FBQVFBQUJuQUdBQUFCQUFBR2FBWUFBQUVBQUFaZ0JnQUFBUUFB
QmtnR0FBQUIKQUFBR1FBWUFBQUVBQUFZNEJnQUFBUUFBQmpBR0FBQUJBQUFHR0FZQUFBRUFBQVlR
QmdBQUFRQUFCZ2dHQUFBQkFBQUdBQVlBQUFFQQpBQWJvQlFBQUFRQUFCdUFGQUFBQkFBQUcyQVVB
QUFFQUFBYlFCUUFBQVFBQUJyZ0ZBQUFCQUFBR3NBVUFBQUVBQUFhb0JRQUFBUUFBCkJxQUZBQUFC
QUFBR2lBVUFBQUVBQUFhQUJRQUFBUUFBQm5nRkFBQUJBQUFHY0FVQUFBRUFBQVpZQlFBQUFRQUFC
bEFGQUFBQkFBQUcKU0FVQUFBRUFBQVpBQlFBQUFRQUFCaWdGQUFBQkFBQUdJQVVBQUFFQUFBWVlC
UUFBQVFBQUJoQUZBQUFCQUFBRytBUUFBQUVBQUFidwpCQUFBQVFBQUJ1Z0VBQUFCQUFBRzRBUUFB
QUVBQUFiWUJBQUFBUUFBQnRBRUFBQUJBQUFHdUFRQUFBRUFBQWF3QkFBQUFRQUFCcWdFCkFBQUJB
QUFHb0FRQUFBRUFBQWFJQkFBQUFRQUFCb0FFQUFBQkFBQUdlQVFBQUFFQUFBWndCQUFBQVFBQUJs
Z0VBQUFCQUFBR1VBUUEKQUFFQUFBWklCQUFBQVFBQUJrQUVBQUFCQUFBR0tBUUFBQUVBQUFZZ0JB
QUFBUUFBQmhnRUFBQUJBQUFHRUFRQUFBRUFBQWI0QXdBQQpBUUFBQnZBREFBQUJBQUFHNkFNQUFB
RUFBQWJnQXdBQUFRQUFCc2dEQUFBQkFBQUd3QU1BQUFFQUFBYTRBd0FBQVFBQUJyQURBQUFCCkFB
QUdtQU1BQUFFQUFBYVFBd0FBQVFBQUJvZ0RBQUFCQUFBR2dBTUFBQUVBQUFab0F3QUFBUUFBQm1B
REFBQUJBQUFHV0FNQUFBRUEKQUFaUUF3QUFBUUFBQmpnREFBQUJBQUFHTUFNQUFBRUFBQVlvQXdB
QUFRQUFCaUFEQUFBQkFBQUdDQU1BQUFFQUFBWUFBd0FBQVFBQQpCdmdDQUFBQkFBQUc4QUlBQUFF
QUFBYllBZ0FBQVFBQUJ0QUNBQUFCQUFBR3lBSUFBQUVBQUFiQUFnQUFBUUFBQnFnQ0FBQUJBQUFH
Cm9BSUFBQUVBQUFhWUFnQUFBUUFBQnBBQ0FBQUJBQUFHaUFJQUFBRUFBQWFBQWdBQUFRQUFCbWdD
QUFBQkFBQUdZQUlBQUFFQUFBWlkKQWdBQUFRQUFCbEFDQUFBQkFBQUdPQUlBQUFFQUFBWXdBZ0FB
QVFBQUJpZ0NBQUFCQUFBR0lBSUFBQUVBQUFZSUFnQUFBUUFBQmdBQwpBQUFCQUFBRytBRUFBQUVB
QUFid0FRQUFBUUFBQnRnQkFBQUJBQUFHMEFFQUFBRUFBQWJJQVFBQUFRQUFCc0FCQUFBQkFBQUdx
QUVBCkFBRUFBQWFnQVFBQUFRQUFCcGdCQUFBQkFBQUdrQUVBQUFFQUFBWjRBUUFBQVFBQUJuQUJB
QUFCQUFBR2FBRUFBQUVBQUFaZ0FRQUEKQVFBQUJrZ0JBQUFCQUFBR1FBRUFBQUVBQUFZNEFRQUFB
UUFBQmpBQkFBQUJBQUFHS0FFQUFBRUFBQVlnQVFBQUFRQUFCZ2dCQUFBQgpBQUFHQUFFQUFBRUFB
QWI0QUFBQUFRQUFCdkFBQUFBQkFBQUcyQUFBQUFFQUFBYlFBQUFBQVFBQUJzZ0FBQUFCQUFBR3dB
QUFBQUVBCkFBYTRBQUFBQVFBQUJyQUFBQUFCQUFBR21BQUFBQUVBQUFhUUFBQUFBUUFBQm9nQUFB
QUJBQUFHZ0FBQUFBRUFBQVo0QUFBQUFRQUEKQm5BQUFBQUJBQUFHYUFBQUFBRUFBQVpnQUFBQUFR
QUFCa2dBQUFBQkFBQUdRQUFBQUFFQUFBWTRBQUFBQVFBQUJqQUFBQUFCQUFBRwpHQUFBQUFFQUFB
WVFBQUFBQVFBQUJnZ0FBQUFCQUFBR0FBQUFBQUVBQUFhRUJRQUFBUUFBQm04RkFBQUJBQUFHV2dV
QUFBRUFBQVpGCkJRQUFBUUFBQmpBRkFBQUJBQUFHR3dVQUFBRUFBQVlHQlFBQUFRQUFCdkVFQUFB
QkFBQUczQVFBQUFFQUFBYkhCQUFBQVFBQUJySUUKQUFBQkFBQUduUVFBQUFFQUFBYUlCQUFBQVFB
QUJuTUVBQUFCQUFBR1p3UUFBQUVBQUFaU0JBQUFBUUFBQmowRUFBQUJBQUFHS0FRQQpBQUVBQUFZ
Y0JBQUFBUUFBQmhBRUFBQUJBQUFHK3dNQUFBRUFBQWJ2QXdBQUFRQUFCdG9EQUFBQkFBQUd6Z01B
QUFFQUFBYkNBd0FBCkFRQUFCcllEQUFBQkFBQUdxZ01BQUFFQUFBYVZBd0FBQVFBQUJvQURBQUFC
QUFBR2RBTUFBQUVBQUFaZkF3QUFBUUFBQmxNREFBQUIKQUFBR1J3TUFBQUVBQUFZeUF3QUFBUUFB
QmgwREFBQUJBQUFHQ0FNQUFBRUFBQWJ6QWdBQUFRQUFCdWNDQUFBQkFBQUcyd0lBQUFFQQpBQWJQ
QWdBQUFRQUFCc01DQUFBQkFBQUd0d0lBQUFFQUFBYWlBZ0FBQVFBQUJvMENBQUFCQUFBR2dRSUFB
QUVBQUFaMUFnQUFBUUFBCkJta0NBQUFCQUFBR1hRSUFBQUVBQUFaUkFnQUFBUUFBQmp3Q0FBQUJB
QUFHTUFJQUFBRUFBQVliQWdBQUFRQUFCZ1lDQUFBQkFBQUcKK2dFQUFBRUFBQWJsQVFBQUFRQUFC
dGtCQUFBQkFBQUd4QUVBQUFFQUFBYXZBUUFBQVFBQUJxTUJBQUFCQUFBR2x3RUFBQUVBQUFhTApB
UUFBQVFBQUJuOEJBQUFCQUFBR2N3RUFBQUVBQUFaZUFRQUFBUUFBQmxJQkFBQUJBQUFHUFFFQUFB
RUFBQVlvQVFBQUFRQUFCaE1CCkFBQUJBQUFHL2dBQUFBRUFBQWJwQUFBQUFRQUFCdFFBQUFBQkFB
QUd2d0FBQUFFQUFBYXFBQUFBQVFBQUJwNEFBQUFCQUFBR2lRQUEKQUFFQUFBWjBBQUFBQVFBQUJs
OEFBQUFCQUFBR1V3QUFBQUVBQUFZK0FBQUFBUUFBQmlrQUFBQUJBQUFHRkFBQUFBRUFBQWFNQ3dB
QQpIQUFBVkl3TEFBQWNBQUFFaUFzQUFCd0FBRlNJQ3dBQUhBQUFCSVFMQUFBY0FBQlVoQXNBQUJ3
QUFBU0FDd0FBSEFBQVZJQUxBQUFjCkFBQUVmQXNBQUJ3QUFGUjhDd0FBSEFBQUJIZ0xBQUFjQUFC
VWVBc0FBQndBQUFSMEN3QUFIQUFBVkhRTEFBQWNBQUFFY0FzQUFCd0EKQUZSd0N3QUFIQUFBQkd3
TEFBQWNBQUJVYkFzQUFCd0FBQVJvQ3dBQUhBQUFWR2dMQUFBY0FBQUVaQXNBQUJ3QUFGUmtDd0FB
SEFBQQpCR0FMQUFBY0FBQlVZQXNBQUJ3QUFBUmNDd0FBSEFBQVZGd0xBQUFjQUFBRVdBc0FBQndB
QUZSWUN3QUFIQUFBQkZRTEFBQWNBQUJVClZBc0FBQndBQUFSUUN3QUFIQUFBVkZBTEFBQWNBQUFF
VEFzQUFCd0FBRlJNQ3dBQUhBQUFCRWdMQUFBY0FBQlVTQXNBQUJ3QUFBUkUKQ3dBQUhBQUFWRVFM
QUFBY0FBQUVRQXNBQUJ3QUFGUkFDd0FBSEFBQUJEd0xBQUFjQUFCVVBBc0FBQndBQUFRNEN3QUFI
QUFBVkRnTApBQUFjQUFBRU5Bc0FBQndBQUZRMEN3QUFIQUFBQkRBTEFBQWNBQUJVTUFzQUFCd0FB
QVFzQ3dBQUhBQUFWQ3dMQUFBY0FBQUVLQXNBCkFCd0FBRlFvQ3dBQUhBQUFCQ1FMQUFBY0FBQlVK
QXNBQUJ3QUFBUWdDd0FBSEFBQVZDQUxBQUFjQUFBRUhBc0FBQndBQUZRY0N3QUEKSEFBQUJCZ0xB
QUFjQUFCVUdBc0FBQndBQUFRVUN3QUFIQUFBVkJRTEFBQWNBQUFFRUFzQUFCd0FBRlFRQ3dBQUhB
QUFCQXdMQUFBYwpBQUJVREFzQUFCd0FBQVFJQ3dBQUhBQUFWQWdMQUFBY0FBQUVCQXNBQUJ3QUFG
UUVDd0FBSEFBQUJBQUxBQUFjQUFCVUFBc0FBQndBCkFBVDhDZ0FBSEFBQVZQd0tBQUFjQUFBRStB
b0FBQndBQUZUNENnQUFIQUFBQlBRS0FBQWNBQUJVOUFvQUFCd0FBQVR3Q2dBQUhBQUEKVlBBS0FB
QWNBQUFFN0FvQUFCd0FBRlRzQ2dBQUhBQUFCT2dLQUFBY0FBQlU2QW9BQUJ3QUFBVGtDZ0FBSEFB
QVZPUUtBQUFjQUFBRQo0QW9BQUJ3QUFGVGdDZ0FBSEFBQUJOd0tBQUFjQUFCVTNBb0FBQndBQUFU
WUNnQUFIQUFBVk5nS0FBQWNBQUFFMUFvQUFCd0FBRlRVCkNnQUFIQUFBQk5BS0FBQWNBQUJVMEFv
QUFCd0FBQVRNQ2dBQUhBQUFWTXdLQUFBY0FBQUV5QW9BQUJ3QUFGVElDZ0FBSEFBQUJNUUsKQUFB
Y0FBQlV4QW9BQUJ3QUFBVEFDZ0FBSEFBQVZNQUtBQUFjQUFBRXZBb0FBQndBQUZTOENnQUFIQUFB
QkxnS0FBQWNBQUJVdUFvQQpBQndBQUFTMENnQUFIQUFBVkxRS0FBQWNBQUFFc0FvQUFCd0FBRlN3
Q2dBQUhBQUFCS3dLQUFBY0FBQlVyQW9BQUJ3QUFBU29DZ0FBCkhBQUFWS2dLQUFBY0FBQUVwQW9B
QUJ3QUFGU2tDZ0FBSEFBQUJLQUtBQUFjQUFCVW9Bb0FBQndBQUFTY0NnQUFIQUFBVkp3S0FBQWMK
QUFBRW1Bb0FBQndBQUZTWUNnQUFIQUFBQkpRS0FBQWNBQUJVbEFvQUFCd0FBQVNRQ2dBQUhBQUFW
SkFLQUFBY0FBQUVqQW9BQUJ3QQpBRlNNQ2dBQUhBQUFCSWdLQUFBY0FBQlVpQW9BQUJ3QUFBU0VD
Z0FBSEFBQVZJUUtBQUFjQUFBRWdBb0FBQndBQUZTQUNnQUFIQUFBCkJId0tBQUFjQUFCVWZBb0FB
QndBQUFSNENnQUFIQUFBVkhnS0FBQWNBQUFFZEFvQUFCd0FBRlIwQ2dBQUhBQUFCSEFLQUFBY0FB
QlUKY0FvQUFCd0FBQVJzQ2dBQUhBQUFWR3dLQUFBY0FBQUVhQW9BQUJ3QUFGUm9DZ0FBSEFBQUJH
UUtBQUFjQUFCVVpBb0FBQndBQUFSZwpDZ0FBSEFBQVZHQUtBQUFjQUFBRVhBb0FBQndBQUZSY0Nn
QUFIQUFBQkZnS0FBQWNBQUJVV0FvQUFCd0FBQVJVQ2dBQUhBQUFWRlFLCkFBQWNBQUFFVUFvQUFC
d0FBRlJRQ2dBQUhBQUFCRXdLQUFBY0FBQlVUQW9BQUJ3QUFBUklDZ0FBSEFBQVZFZ0tBQUFjQUFB
RVJBb0EKQUJ3QUFGUkVDZ0FBSEFBQUJFQUtBQUFjQUFCVVFBb0FBQndBQUFROENnQUFIQUFBVkR3
S0FBQWNBQUFFT0FvQUFCd0FBRlE0Q2dBQQpIQUFBQkRRS0FBQWNBQUJVTkFvQUFCd0FBQVF3Q2dB
QUhBQUFWREFLQUFBY0FBQUVMQW9BQUJ3QUFGUXNDZ0FBSEFBQUJDZ0tBQUFjCkFBQlVLQW9BQUJ3
QUFBUWtDZ0FBSEFBQVZDUUtBQUFjQUFBRUlBb0FBQndBQUZRZ0NnQUFIQUFBQkJ3S0FBQWNBQUJV
SEFvQUFCd0EKQUFRWUNnQUFIQUFBVkJnS0FBQWNBQUFFRkFvQUFCd0FBRlFVQ2dBQUhBQUFCQkFL
QUFBY0FBQlVFQW9BQUJ3QUFBUU1DZ0FBSEFBQQpWQXdLQUFBY0FBQUVDQW9BQUJ3QUFGUUlDZ0FB
SEFBQUJBUUtBQUFjQUFCVUJBb0FBQndBQUFRQUNnQUFIQUFBVkFBS0FBQWNBQUFFCi9Ba0FBQndB
QUZUOENRQUFIQUFBQlBnSkFBQWNBQUJVK0FrQUFCd0FBQVQwQ1FBQUhBQUFWUFFKQUFBY0FBQUU4
QWtBQUJ3QUFGVHcKQ1FBQUhBQUFCT3dKQUFBY0FBQlU3QWtBQUJ3QUFBVG9DUUFBSEFBQVZPZ0pB
QUFjQUFBRTVBa0FBQndBQUZUa0NRQUFIQUFBQk9BSgpBQUFjQUFCVTRBa0FBQndBQUFUY0NRQUFI
QUFBVk53SkFBQWNBQUFFMkFrQUFCd0FBRlRZQ1FBQUhBQUFCTlFKQUFBY0FBQlUxQWtBCkFCd0FB
QVRRQ1FBQUhBQUFWTkFKQUFBY0FBQUV6QWtBQUJ3QUFGVE1DUUFBSEFBQUJNZ0pBQUFjQUFCVXlB
a0FBQndBQUFURUNRQUEKSEFBQVZNUUpBQUFjQUFBRXdBa0FBQndBQUZUQUNRQUFIQUFBQkx3SkFB
QWNBQUJVdkFrQUFCd0FBQVM0Q1FBQUhBQUFWTGdKQUFBYwpBQUFFdEFrQUFCd0FBRlMwQ1FBQUhB
QUFCTEFKQUFBY0FBQlVzQWtBQUJ3QUFBU3NDUUFBSEFBQVZLd0pBQUFjQUFBRXFBa0FBQndBCkFG
U29DUUFBSEFBQUJLUUpBQUFjQUFCVXBBa0FBQndBQUFTZ0NRQUFIQUFBVktBSkFBQWNBQUFFbkFr
QUFCd0FBRlNjQ1FBQUhBQUEKQkpnSkFBQWNBQUJVbUFrQUFCd0FBQVNVQ1FBQUhBQUFWSlFKQUFB
Y0FBQUVrQWtBQUJ3QUFGU1FDUUFBSEFBQUJJd0pBQUFjQUFCVQpqQWtBQUJ3QUFBU0lDUUFBSEFB
QVZJZ0pBQUFjQUFBRWhBa0FBQndBQUZTRUNRQUFIQUFBQklBSkFBQWNBQUJVZ0FrQUFCd0FBQVI4
CkNRQUFIQUFBVkh3SkFBQWNBQUFFZUFrQUFCd0FBRlI0Q1FBQUhBQUFCSFFKQUFBY0FBQlVkQWtB
QUJ3QUFBUndDUUFBSEFBQVZIQUoKQUFBY0FBQUViQWtBQUJ3QUFGUnNDUUFBSEFBQUJHZ0pBQUFj
QUFCVWFBa0FBQndBQUFSa0NRQUFIQUFBVkdRSkFBQWNBQUFFWUFrQQpBQndBQUZSZ0NRQUFIQUFB
QkZ3SkFBQWNBQUJVWEFrQUFCd0FBQVJZQ1FBQUhBQUFWRmdKQUFBY0FBQUVWQWtBQUJ3QUFGUlVD
UUFBCkhBQUFCRkFKQUFBY0FBQlVVQWtBQUJ3QUFBUk1DUUFBSEFBQVZFd0pBQUFjQUFBRVNBa0FB
QndBQUZSSUNRQUFIQUFBQkVRSkFBQWMKQUFCVVJBa0FBQndBQUFSQUNRQUFIQUFBVkVBSkFBQWNB
QUFFUEFrQUFCd0FBRlE4Q1FBQUhBQUFCRGdKQUFBY0FBQlVPQWtBQUJ3QQpBQVEwQ1FBQUhBQUFW
RFFKQUFBY0FBQUVNQWtBQUJ3QUFGUXdDUUFBSEFBQUJDd0pBQUFjQUFCVUxBa0FBQndBQUFRb0NR
QUFIQUFBClZDZ0pBQUFjQUFBRUpBa0FBQndBQUZRa0NRQUFIQUFBQkNBSkFBQWNBQUJVSUFrQUFC
d0FBQVFjQ1FBQUhBQUFWQndKQUFBY0FBQUUKR0FrQUFCd0FBRlFZQ1FBQUhBQUFCQlFKQUFBY0FB
QlVGQWtBQUJ3QUFBUVFDUUFBSEFBQVZCQUpBQUFjQUFBRURBa0FBQndBQUZRTQpDUUFBSEFBQUJB
Z0pBQUFjQUFCVUNBa0FBQndBQUFRRUNRQUFIQUFBVkFRSkFBQWNBQUFFQUFrQUFCd0FBRlFBQ1FB
QUhBQUFCUHdJCkFBQWNBQUJVL0FnQUFCd0FBQVQ0Q0FBQUhBQUFWUGdJQUFBY0FBQUU5QWdBQUJ3
QUFGVDBDQUFBSEFBQUJQQUlBQUFjQUFCVThBZ0EKQUJ3QUFBVHNDQUFBSEFBQVZPd0lBQUFjQUFB
RTZBZ0FBQndBQUZUb0NBQUFIQUFBQk9RSUFBQWNBQUJVNUFnQUFCd0FBQVRnQ0FBQQpIQUFBVk9B
SUFBQWNBQUFFM0FnQUFCd0FBRlRjQ0FBQUhBQUFCTmdJQUFBY0FBQlUyQWdBQUJ3QUFBVFVDQUFB
SEFBQVZOUUlBQUFjCkFBQUUwQWdBQUJ3QUFGVFFDQUFBSEFBQUJNd0lBQUFjQUFCVXpBZ0FBQndB
QUFUSUNBQUFIQUFBVk1nSUFBQWNBQUFFeEFnQUFCd0EKQUZURUNBQUFIQUFBQk1BSUFBQWNBQUJV
d0FnQUFCd0FBQVM4Q0FBQUhBQUFWTHdJQUFBY0FBQUV1QWdBQUJ3QUFGUzRDQUFBSEFBQQpCTFFJ
QUFBY0FBQlV0QWdBQUJ3QUFBU3dDQUFBSEFBQVZMQUlBQUFjQUFBRXJBZ0FBQndBQUZTc0NBQUFI
QUFBQktnSUFBQWNBQUJVCnFBZ0FBQndBQUFTa0NBQUFIQUFBVktRSUFBQWNBQUFFb0FnQUFCd0FB
RlNnQ0FBQUhBQUFCSndJQUFBY0FBQlVuQWdBQUJ3QUFBU1kKQ0FBQUhBQUFWSmdJQUFBY0FBQUVs
QWdBQUJ3QUFGU1VDQUFBSEFBQUJKQUlBQUFjQUFCVWtBZ0FBQndBQUFTTUNBQUFIQUFBVkl3SQpB
QUFjQUFBRWlBZ0FBQndBQUZTSUNBQUFIQUFBQklRSUFBQWNBQUJVaEFnQUFCd0FBQVNBQ0FBQUhB
QUFWSUFJQUFBY0FBQUVmQWdBCkFCd0FBRlI4Q0FBQUhBQUFCSGdJQUFBY0FBQlVlQWdBQUJ3QUFB
UjBDQUFBSEFBQVZIUUlBQUFjQUFBRWNBZ0FBQndBQUZSd0NBQUEKSEFBQUJHd0lBQUFjQUFCVWJB
Z0FBQndBQUFSb0NBQUFIQUFBVkdnSUFBQWNBQUFFWkFnQUFCd0FBRlJrQ0FBQUhBQUFCR0FJQUFB
YwpBQUJVWUFnQUFCd0FBQVJjQ0FBQUhBQUFWRndJQUFBY0FBQUVXQWdBQUJ3QUFGUllDQUFBSEFB
QUJGUUlBQUFjQUFCVVZBZ0FBQndBCkFBUlFDQUFBSEFBQVZGQUlBQUFjQUFBRVRBZ0FBQndBQUZS
TUNBQUFIQUFBQkVnSUFBQWNBQUJVU0FnQUFCd0FBQVJFQ0FBQUhBQUEKVkVRSUFBQWNBQUFFUUFn
QUFCd0FBRlJBQ0FBQUhBQUFCRHdJQUFBY0FBQlVQQWdBQUJ3QUFBUTRDQUFBSEFBQVZEZ0lBQUFj
QUFBRQpOQWdBQUJ3QUFGUTBDQUFBSEFBQUJEQUlBQUFjQUFCVU1BZ0FBQndBQUFRc0NBQUFIQUFB
VkN3SUFBQWNBQUFFS0FnQUFCd0FBRlFvCkNBQUFIQUFBQkNRSUFBQWNBQUJVSkFnQUFCd0FBQVFn
Q0FBQUhBQUFWQ0FJQUFBY0FBQUVIQWdBQUJ3QUFGUWNDQUFBSEFBQUJCZ0kKQUFBY0FBQlVHQWdB
QUJ3QUFBUVVDQUFBSEFBQVZCUUlBQUFjQUFBRUVBZ0FBQndBQUZRUUNBQUFIQUFBQkF3SUFBQWNB
QUJVREFnQQpBQndBQUFRSUNBQUFIQUFBVkFnSUFBQWNBQUFFQkFnQUFCd0FBRlFFQ0FBQUhBQUFC
QUFJQUFBY0FBQlVBQWdBQUJ3QUFBVDhCd0FBCkhBQUFWUHdIQUFBY0FBQUUrQWNBQUJ3QUFGVDRC
d0FBSEFBQUJQUUhBQUFjQUFCVTlBY0FBQndBQUFUd0J3QUFIQUFBVlBBSEFBQWMKQUFBRTdBY0FB
QndBQUZUc0J3QUFIQUFBQk9nSEFBQWNBQUJVNkFjQUFCd0FBQVRrQndBQUhBQUFWT1FIQUFBY0FB
QUU0QWNBQUJ3QQpBRlRnQndBQUhBQUFCTndIQUFBY0FBQlUzQWNBQUJ3QUFBVFlCd0FBSEFBQVZO
Z0hBQUFjQUFBRTFBY0FBQndBQUZUVUJ3QUFIQUFBCkJOQUhBQUFjQUFCVTBBY0FBQndBQUFUTUJ3
QUFIQUFBVk13SEFBQWNBQUFFeUFjQUFCd0FBRlRJQndBQUhBQUFCTVFIQUFBY0FBQlUKeEFjQUFC
d0FBQVRBQndBQUhBQUFWTUFIQUFBY0FBQUV2QWNBQUJ3QUFGUzhCd0FBSEFBQUJMZ0hBQUFjQUFC
VXVBY0FBQndBQUFTMApCd0FBSEFBQVZMUUhBQUFjQUFBRXNBY0FBQndBQUZTd0J3QUFIQUFBQkt3
SEFBQWNBQUJVckFjQUFCd0FBQVNvQndBQUhBQUFWS2dICkFBQWNBQUFFcEFjQUFCd0FBRlNrQndB
QUhBQUFCS0FIQUFBY0FBQlVvQWNBQUJ3QUFBU2NCd0FBSEFBQVZKd0hBQUFjQUFBRW1BY0EKQUJ3
QUFGU1lCd0FBSEFBQUJKUUhBQUFjQUFCVWxBY0FBQndBQUFTUUJ3QUFIQUFBVkpBSEFBQWNBQUFF
akFjQUFCd0FBRlNNQndBQQpIQUFBQklnSEFBQWNBQUJVaUFjQUFCd0FBQVNFQndBQUhBQUFWSVFI
QUFBY0FBQUVnQWNBQUJ3QUFGU0FCd0FBSEFBQUJId0hBQUFjCkFBQlVmQWNBQUJ3QUFBUjRCd0FB
SEFBQVZIZ0hBQUFjQUFBRWRBY0FBQndBQUZSMEJ3QUFIQUFBQkhBSEFBQWNBQUJVY0FjQUFCd0EK
QUFSc0J3QUFIQUFBVkd3SEFBQWNBQUFFYUFjQUFCd0FBRlJvQndBQUhBQUFCR1FIQUFBY0FBQlVa
QWNBQUJ3QUFBUmdCd0FBSEFBQQpWR0FIQUFBY0FBQUVYQWNBQUJ3QUFGUmNCd0FBSEFBQUJGZ0hB
QUFjQUFCVVdBY0FBQndBQUFSVUJ3QUFIQUFBVkZRSEFBQWNBQUFFClVBY0FBQndBQUZSUUJ3QUFI
QUFBQkV3SEFBQWNBQUJVVEFjQUFCd0FBQVJJQndBQUhBQUFWRWdIQUFBY0FBQUVSQWNBQUJ3QUFG
UkUKQndBQUhBQUFCRUFIQUFBY0FBQlVRQWNBQUJ3QUFBUThCd0FBSEFBQVZEd0hBQUFjQUFBRU9B
Y0FBQndBQUZRNEJ3QUFIQUFBQkRRSApBQUFjQUFCVU5BY0FBQndBQUFRd0J3QUFIQUFBVkRBSEFB
QWNBQUFFTEFjQUFCd0FBRlFzQndBQUhBQUFCQ2dIQUFBY0FBQlVLQWNBCkFCd0FBQVFrQndBQUhB
QUFWQ1FIQUFBY0FBQUVJQWNBQUJ3QUFGUWdCd0FBSEFBQUJCd0hBQUFjQUFCVUhBY0FBQndBQUFR
WUJ3QUEKSEFBQVZCZ0hBQUFjQUFBRUZBY0FBQndBQUZRVUJ3QUFIQUFBQkJBSEFBQWNBQUJVRUFj
QUFCd0FBQVFNQndBQUhBQUFWQXdIQUFBYwpBQUFFQ0FjQUFCd0FBRlFJQndBQUhBQUFCQVFIQUFB
Y0FBQlVCQWNBQUJ3QUFBUUFCd0FBSEFBQVZBQUhBQUFjQUFBRS9BWUFBQndBCkFGVDhCZ0FBSEFB
QUJEUUFBQUFkQUFCVU5BQUFBQjBBQUFRd0FBQUFIUUFBVkRBQUFBQWRBQUFFR0F3QUFCOEFBRlFZ
REFBQUh3QUEKQkJRTUFBQWZBQUJVRkF3QUFCOEFBQVFRREFBQUh3QUFWQkFNQUFBZkFBQUVEQXdB
QUI4QUFGUU1EQUFBSHdBQUJBZ01BQUFmQUFCVQpDQXdBQUI4QUFBUUVEQUFBSHdBQVZBUU1BQUFm
QUFBRUFBd0FBQjhBQUZRQURBQUFId0FBQlB3TEFBQWZBQUJVL0FzQUFCOEFBQVQ0CkN3QUFId0FB
VlBnTEFBQWZBQUFFOUFzQUFCOEFBRlQwQ3dBQUh3QUFCUEFMQUFBZkFBQlU4QXNBQUI4QUFBVHND
d0FBSHdBQVZPd0wKQUFBZkFBQUU2QXNBQUI4QUFGVG9Dd0FBSHdBQUJPUUxBQUFmQUFCVTVBc0FB
QjhBQUFUZ0N3QUFId0FBVk9BTEFBQWZBQUFFM0FzQQpBQjhBQUZUY0N3QUFId0FBQk5nTEFBQWZB
QUJVMkFzQUFCOEFBQVRVQ3dBQUh3QUFWTlFMQUFBZkFBQUUwQXNBQUI4QUFGVFFDd0FBCkh3QUFC
TXdMQUFBZkFBQlV6QXNBQUI4QUFBVElDd0FBSHdBQVZNZ0xBQUFmQUFBRXhBc0FBQjhBQUZURUN3
QUFId0FBQk1BTEFBQWYKQUFCVXdBc0FBQjhBQUFTOEN3QUFId0FBVkx3TEFBQWZBQUFFdUFzQUFC
OEFBRlM0Q3dBQUh3QUFCTFFMQUFBZkFBQlV0QXNBQUI4QQpBQVN3Q3dBQUh3QUFWTEFMQUFBZkFB
QUVyQXNBQUI4QUFGU3NDd0FBSHdBQUJLZ0xBQUFmQUFCVXFBc0FBQjhBQUFTa0N3QUFId0FBClZL
UUxBQUFmQUFBRW9Bc0FBQjhBQUZTZ0N3QUFId0FBQkp3TEFBQWZBQUJVbkFzQUFCOEFBQVNZQ3dB
QUh3QUFWSmdMQUFBZkFBQUUKbEFzQUFCOEFBRlNVQ3dBQUh3QUFCSkFMQUFBZkFBQlVrQXNBQUI4
QUFBU01Dd0FBSHdBQVZJd0xBQUFmQUFBRWlBc0FBQjhBQUZTSQpDd0FBSHdBQUJJUUxBQUFmQUFC
VWhBc0FBQjhBQUFTQUN3QUFId0FBVklBTEFBQWZBQUFFZkFzQUFCOEFBRlI4Q3dBQUh3QUFCSGdM
CkFBQWZBQUJVZUFzQUFCOEFBQVIwQ3dBQUh3QUFWSFFMQUFBZkFBQUVjQXNBQUI4QUFGUndDd0FB
SHdBQUJHd0xBQUFmQUFCVWJBc0EKQUI4QUFBUm9Dd0FBSHdBQVZHZ0xBQUFmQUFBRVpBc0FBQjhB
QUZSa0N3QUFId0FBQkdBTEFBQWZBQUJVWUFzQUFCOEFBQVJjQ3dBQQpId0FBVkZ3TEFBQWZBQUFF
V0FzQUFCOEFBRlJZQ3dBQUh3QUFCRlFMQUFBZkFBQlVWQXNBQUI4QUFBUlFDd0FBSHdBQVZGQUxB
QUFmCkFBQUVUQXNBQUI4QUFGUk1Dd0FBSHdBQUJFZ0xBQUFmQUFCVVNBc0FBQjhBQUFSRUN3QUFI
d0FBVkVRTEFBQWZBQUFFUUFzQUFCOEEKQUZSQUN3QUFId0FBQkR3TEFBQWZBQUJVUEFzQUFCOEFB
QVE0Q3dBQUh3QUFWRGdMQUFBZkFBQUVOQXNBQUI4QUFGUTBDd0FBSHdBQQpCREFMQUFBZkFBQlVN
QXNBQUI4QUFBUXNDd0FBSHdBQVZDd0xBQUFmQUFBRUtBc0FBQjhBQUZRb0N3QUFId0FBQkNRTEFB
QWZBQUJVCkpBc0FBQjhBQUFRZ0N3QUFId0FBVkNBTEFBQWZBQUFFSEFzQUFCOEFBRlFjQ3dBQUh3
QUFCQmdMQUFBZkFBQlVHQXNBQUI4QUFBUVUKQ3dBQUh3QUFWQlFMQUFBZkFBQUVFQXNBQUI4QUFG
UVFDd0FBSHdBQUJBd0xBQUFmQUFCVURBc0FBQjhBQUFRSUN3QUFId0FBVkFnTApBQUFmQUFBRUJB
c0FBQjhBQUZRRUN3QUFId0FBQkFBTEFBQWZBQUJVQUFzQUFCOEFBQVQ4Q2dBQUh3QUFWUHdLQUFB
ZkFBQUUrQW9BCkFCOEFBRlQ0Q2dBQUh3QUFCUFFLQUFBZkFBQlU5QW9BQUI4QUFBVHdDZ0FBSHdB
QVZQQUtBQUFmQUFBRTdBb0FBQjhBQUZUc0NnQUEKSHdBQUJPZ0tBQUFmQUFCVTZBb0FBQjhBQUFU
a0NnQUFId0FBVk9RS0FBQWZBQUFFNEFvQUFCOEFBRlRnQ2dBQUh3QUFCTndLQUFBZgpBQUJVM0Fv
QUFCOEFBQVRZQ2dBQUh3QUFWTmdLQUFBZkFBQUUxQW9BQUI4QUFGVFVDZ0FBSHdBQUJOQUtBQUFm
QUFCVTBBb0FBQjhBCkFBVE1DZ0FBSHdBQVZNd0tBQUFmQUFBRXlBb0FBQjhBQUZUSUNnQUFId0FB
Qk1RS0FBQWZBQUJVeEFvQUFCOEFBQVRBQ2dBQUh3QUEKVk1BS0FBQWZBQUFFdkFvQUFCOEFBRlM4
Q2dBQUh3QUFCTGdLQUFBZkFBQlV1QW9BQUI4QUFBUzBDZ0FBSHdBQVZMUUtBQUFmQUFBRQpzQW9B
QUI4QUFGU3dDZ0FBSHdBQUJLd0tBQUFmQUFCVXJBb0FBQjhBQUFTb0NnQUFId0FBVktnS0FBQWZB
QUFFcEFvQUFCOEFBRlNrCkNnQUFId0FBQktBS0FBQWZBQUJVb0FvQUFCOEFBQVNjQ2dBQUh3QUFW
SndLQUFBZkFBQUVtQW9BQUI4QUFGU1lDZ0FBSHdBQUJKUUsKQUFBZkFBQlVsQW9BQUI4QUFBU1FD
Z0FBSHdBQVZKQUtBQUFmQUFBRWpBb0FBQjhBQUZTTUNnQUFId0FBQklnS0FBQWZBQUJVaUFvQQpB
QjhBQUFTRUNnQUFId0FBVklRS0FBQWZBQUFFZ0FvQUFCOEFBRlNBQ2dBQUh3QUFCSHdLQUFBZkFB
QlVmQW9BQUI4QUFBUjRDZ0FBCkh3QUFWSGdLQUFBZkFBQUVkQW9BQUI4QUFGUjBDZ0FBSHdBQUJI
QUtBQUFmQUFCVWNBb0FBQjhBQUFSc0NnQUFId0FBVkd3S0FBQWYKQUFBRWFBb0FBQjhBQUZSb0Nn
QUFId0FBQkdRS0FBQWZBQUJVWkFvQUFCOEFBQVJnQ2dBQUh3QUFWR0FLQUFBZkFBQUVYQW9BQUI4
QQpBRlJjQ2dBQUh3QUFCRmdLQUFBZkFBQlVXQW9BQUI4QUFBUlVDZ0FBSHdBQVZGUUtBQUFmQUFB
RVVBb0FBQjhBQUZSUUNnQUFId0FBCkJFd0tBQUFmQUFCVVRBb0FBQjhBQUFSSUNnQUFId0FBVkVn
S0FBQWZBQUFFUkFvQUFCOEFBRlJFQ2dBQUh3QUFCRUFLQUFBZkFBQlUKUUFvQUFCOEFBQVE4Q2dB
QUh3QUFWRHdLQUFBZkFBQUVPQW9BQUI4QUFGUTRDZ0FBSHdBQUJEUUtBQUFmQUFCVU5Bb0FBQjhB
QUFRdwpDZ0FBSHdBQVZEQUtBQUFmQUFBRUxBb0FBQjhBQUZRc0NnQUFId0FBQkNnS0FBQWZBQUJV
S0FvQUFCOEFBQVFrQ2dBQUh3QUFWQ1FLCkFBQWZBQUFFSUFvQUFCOEFBRlFnQ2dBQUh3QUFCQndL
QUFBZkFBQlVIQW9BQUI4QUFBUVlDZ0FBSHdBQVZCZ0tBQUFmQUFBRUZBb0EKQUI4QUFGUVVDZ0FB
SHdBQUJCQUtBQUFmQUFCVUVBb0FBQjhBQUFRTUNnQUFId0FBVkF3S0FBQWZBQUFFQ0FvQUFCOEFB
RlFJQ2dBQQpId0FBQkFRS0FBQWZBQUJVQkFvQUFCOEFBQVFBQ2dBQUh3QUFWQUFLQUFBZkFBQUUv
QWtBQUI4QUFGVDhDUUFBSHdBQUJQZ0pBQUFmCkFBQlUrQWtBQUI4QUFBVDBDUUFBSHdBQVZQUUpB
QUFmQUFBRThBa0FBQjhBQUZUd0NRQUFId0FBQk93SkFBQWZBQUJVN0FrQUFCOEEKQUFUb0NRQUFI
d0FBVk9nSkFBQWZBQUFFNUFrQUFCOEFBRlRrQ1FBQUh3QUFCT0FKQUFBZkFBQlU0QWtBQUI4QUFB
VGNDUUFBSHdBQQpWTndKQUFBZkFBQUUyQWtBQUI4QUFGVFlDUUFBSHdBQUJOUUpBQUFmQUFCVTFB
a0FBQjhBQUFUUUNRQUFId0FBVk5BSkFBQWZBQUFFCnpBa0FBQjhBQUZUTUNRQUFId0FBQk1nSkFB
QWZBQUJVeUFrQUFCOEFBQVRFQ1FBQUh3QUFWTVFKQUFBZkFBQUV3QWtBQUI4QUFGVEEKQ1FBQUh3
QUFCTHdKQUFBZkFBQlV2QWtBQUI4QUFBUzRDUUFBSHdBQVZMZ0pBQUFmQUFBRXRBa0FBQjhBQUZT
MENRQUFId0FBQkxBSgpBQUFmQUFCVXNBa0FBQjhBQUFTc0NRQUFId0FBVkt3SkFBQWZBQUFFcUFr
QUFCOEFBRlNvQ1FBQUh3QUFCS1FKQUFBZkFBQlVwQWtBCkFCOEFBQVNnQ1FBQUh3QUFWS0FKQUFB
ZkFBQUVuQWtBQUI4QUFGU2NDUUFBSHdBQUJKZ0pBQUFmQUFCVW1Ba0FBQjhBQUFTVUNRQUEKSHdB
QVZKUUpBQUFmQUFBRWtBa0FBQjhBQUZTUUNRQUFId0FBQkl3SkFBQWZBQUJVakFrQUFCOEFBQVNJ
Q1FBQUh3QUFWSWdKQUFBZgpBQUFFaEFrQUFCOEFBRlNFQ1FBQUh3QUFCSUFKQUFBZkFBQlVnQWtB
QUI4QUFBUjhDUUFBSHdBQVZId0pBQUFmQUFBRWVBa0FBQjhBCkFGUjRDUUFBSHdBQUJIUUpBQUFm
QUFCVWRBa0FBQjhBQUFSd0NRQUFId0FBVkhBSkFBQWZBQUFFYkFrQUFCOEFBRlJzQ1FBQUh3QUEK
QkdnSkFBQWZBQUJVYUFrQUFCOEFBQVJrQ1FBQUh3QUFWR1FKQUFBZkFBQUVZQWtBQUI4QUFGUmdD
UUFBSHdBQUJGd0pBQUFmQUFCVQpYQWtBQUI4QUFBUllDUUFBSHdBQVZGZ0pBQUFmQUFBRVZBa0FB
QjhBQUZSVUNRQUFId0FBQkZBSkFBQWZBQUJVVUFrQUFCOEFBQVJNCkNRQUFId0FBVkV3SkFBQWZB
QUFFU0FrQUFCOEFBRlJJQ1FBQUh3QUFCRVFKQUFBZkFBQlVSQWtBQUI4QUFBUkFDUUFBSHdBQVZF
QUoKQUFBZkFBQUVQQWtBQUI4QUFGUThDUUFBSHdBQUJEZ0pBQUFmQUFCVU9Ba0FBQjhBQUFRMENR
QUFId0FBVkRRSkFBQWZBQUFFTUFrQQpBQjhBQUZRd0NRQUFId0FBQkN3SkFBQWZBQUJVTEFrQUFC
OEFBQVFvQ1FBQUh3QUFWQ2dKQUFBZkFBQUVKQWtBQUI4QUFGUWtDUUFBCkh3QUFCQ0FKQUFBZkFB
QlVJQWtBQUI4QUFBUWNDUUFBSHdBQVZCd0pBQUFmQUFBRUdBa0FBQjhBQUZRWUNRQUFId0FBQkJR
SkFBQWYKQUFCVUZBa0FBQjhBQUFRUUNRQUFId0FBVkJBSkFBQWZBQUFFREFrQUFCOEFBRlFNQ1FB
QUh3QUFCQWdKQUFBZkFBQlVDQWtBQUI4QQpBQVFFQ1FBQUh3QUFWQVFKQUFBZkFBQUVBQWtBQUI4
QUFGUUFDUUFBSHdBQUJQd0lBQUFmQUFCVS9BZ0FBQjhBQUFUNENBQUFId0FBClZQZ0lBQUFmQUFB
RTlBZ0FBQjhBQUZUMENBQUFId0FBQlBBSUFBQWZBQUJVOEFnQUFCOEFBQVRzQ0FBQUh3QUFWT3dJ
QUFBZkFBQUUKNkFnQUFCOEFBRlRvQ0FBQUh3QUFCT1FJQUFBZkFBQlU1QWdBQUI4QUFBVGdDQUFB
SHdBQVZPQUlBQUFmQUFBRTNBZ0FBQjhBQUZUYwpDQUFBSHdBQUJOZ0lBQUFmQUFCVTJBZ0FBQjhB
QUFUVUNBQUFId0FBVk5RSUFBQWZBQUFFMEFnQUFCOEFBRlRRQ0FBQUh3QUFCTXdJCkFBQWZBQUJV
ekFnQUFCOEFBQVRJQ0FBQUh3QUFWTWdJQUFBZkFBQUV4QWdBQUI4QUFGVEVDQUFBSHdBQUJNQUlB
QUFmQUFCVXdBZ0EKQUI4QUFBUzhDQUFBSHdBQVZMd0lBQUFmQUFBRXVBZ0FBQjhBQUZTNENBQUFI
d0FBQkxRSUFBQWZBQUJVdEFnQUFCOEFBQVN3Q0FBQQpId0FBVkxBSUFBQWZBQUFFckFnQUFCOEFB
RlNzQ0FBQUh3QUFCS2dJQUFBZkFBQlVxQWdBQUI4QUFBU2tDQUFBSHdBQVZLUUlBQUFmCkFBQUVv
QWdBQUI4QUFGU2dDQUFBSHdBQUJKd0lBQUFmQUFCVW5BZ0FBQjhBQUFTWUNBQUFId0FBVkpnSUFB
QWZBQUFFbEFnQUFCOEEKQUZTVUNBQUFId0FBQkpBSUFBQWZBQUJVa0FnQUFCOEFBQVNNQ0FBQUh3
QUFWSXdJQUFBZkFBQUVpQWdBQUI4QUFGU0lDQUFBSHdBQQpCSVFJQUFBZkFBQlVoQWdBQUI4QUFB
U0FDQUFBSHdBQVZJQUlBQUFmQUFBRWZBZ0FBQjhBQUZSOENBQUFId0FBQkhnSUFBQWZBQUJVCmVB
Z0FBQjhBQUFSMENBQUFId0FBVkhRSUFBQWZBQUFFY0FnQUFCOEFBRlJ3Q0FBQUh3QUFCR3dJQUFB
ZkFBQlViQWdBQUI4QUFBUm8KQ0FBQUh3QUFWR2dJQUFBZkFBQUVaQWdBQUI4QUFGUmtDQUFBSHdB
QUJHQUlBQUFmQUFCVVlBZ0FBQjhBQUFSY0NBQUFId0FBVkZ3SQpBQUFmQUFBRVdBZ0FBQjhBQUZS
WUNBQUFId0FBQkZRSUFBQWZBQUJVVkFnQUFCOEFBQVJRQ0FBQUh3QUFWRkFJQUFBZkFBQUVUQWdB
CkFCOEFBRlJNQ0FBQUh3QUFCRWdJQUFBZkFBQlVTQWdBQUI4QUFBUkVDQUFBSHdBQVZFUUlBQUFm
QUFBRVFBZ0FBQjhBQUZSQUNBQUEKSHdBQUJEd0lBQUFmQUFCVVBBZ0FBQjhBQUFRNENBQUFId0FB
VkRnSUFBQWZBQUFFTkFnQUFCOEFBRlEwQ0FBQUh3QUFCREFJQUFBZgpBQUJVTUFnQUFCOEFBQVFz
Q0FBQUh3QUFWQ3dJQUFBZkFBQUVLQWdBQUI4QUFGUW9DQUFBSHdBQUJDUUlBQUFmQUFCVUpBZ0FB
QjhBCkFBUWdDQUFBSHdBQVZDQUlBQUFmQUFBRUhBZ0FBQjhBQUZRY0NBQUFId0FBQkJnSUFBQWZB
QUJVR0FnQUFCOEFBQVFVQ0FBQUh3QUEKVkJRSUFBQWZBQUFFRUFnQUFCOEFBRlFRQ0FBQUh3QUFC
QXdJQUFBZkFBQlVEQWdBQUI4QUFBUUlDQUFBSHdBQVZBZ0lBQUFmQUFBRQpCQWdBQUI4QUFGUUVD
QUFBSHdBQUJBQUlBQUFmQUFCVUFBZ0FBQjhBQUFUOEJ3QUFId0FBVlB3SEFBQWZBQUFFK0FjQUFC
OEFBRlQ0CkJ3QUFId0FBQlBRSEFBQWZBQUJVOUFjQUFCOEFBQVR3QndBQUh3QUFWUEFIQUFBZkFB
QUU3QWNBQUI4QUFGVHNCd0FBSHdBQUJPZ0gKQUFBZkFBQlU2QWNBQUI4QUFBVGtCd0FBSHdBQVZP
UUhBQUFmQUFBRTRBY0FBQjhBQUZUZ0J3QUFId0FBQk53SEFBQWZBQUJVM0FjQQpBQjhBQUFUWUJ3
QUFId0FBVk5nSEFBQWZBQUFFMUFjQUFCOEFBRlRVQndBQUh3QUFCTkFIQUFBZkFBQlUwQWNBQUI4
QUFBVE1Cd0FBCkh3QUFWTXdIQUFBZkFBQUV5QWNBQUI4QUFGVElCd0FBSHdBQUJNUUhBQUFmQUFC
VXhBY0FBQjhBQUFUQUJ3QUFId0FBVk1BSEFBQWYKQUFBRXZBY0FBQjhBQUZTOEJ3QUFId0FBQkxn
SEFBQWZBQUJVdUFjQUFCOEFBQVMwQndBQUh3QUFWTFFIQUFBZkFBQUVzQWNBQUI4QQpBRlN3QndB
QUh3QUFCS3dIQUFBZkFBQlVyQWNBQUI4QUFBU29Cd0FBSHdBQVZLZ0hBQUFmQUFBRXBBY0FBQjhB
QUZTa0J3QUFId0FBCkJLQUhBQUFmQUFCVW9BY0FBQjhBQUFTY0J3QUFId0FBVkp3SEFBQWZBQUFF
bUFjQUFCOEFBRlNZQndBQUh3QUFCSlFIQUFBZkFBQlUKbEFjQUFCOEFBQVNRQndBQUh3QUFWSkFI
QUFBZkFBQUVqQWNBQUI4QUFGU01Cd0FBSHdBQUJJZ0hBQUFmQUFCVWlBY0FBQjhBQUFTRQpCd0FB
SHdBQVZJUUhBQUFmQUFBRWdBY0FBQjhBQUZTQUJ3QUFId0FBQkh3SEFBQWZBQUJVZkFjQUFCOEFB
QVI0QndBQUh3QUFWSGdICkFBQWZBQUFFZEFjQUFCOEFBRlIwQndBQUh3QUFCSEFIQUFBZkFBQlVj
QWNBQUI4QUFBUnNCd0FBSHdBQVZHd0hBQUFmQUFBRWFBY0EKQUI4QUFGUm9Cd0FBSHdBQUJHUUhB
QUFmQUFCVVpBY0FBQjhBQUFSZ0J3QUFId0FBVkdBSEFBQWZBQUFFWEFjQUFCOEFBRlJjQndBQQpI
d0FBQkZnSEFBQWZBQUJVV0FjQUFCOEFBQVJVQndBQUh3QUFWRlFIQUFBZkFBQUVvQm9BQUFFQUFB
YUFHZ0FBQVFBQUJtQWFBQUFCCkFBQUdRQm9BQUFFQUFBWWdHZ0FBQVFBQUJnQWFBQUFCQUFBRzRC
a0FBQUVBQUFiQUdRQUFBUUFBQnFBWkFBQUJBQUFHZ0JrQUFBRUEKQUFaZ0dRQUFBUUFBQmtBWkFB
QUJBQUFHSUJrQUFBRUFBQVlBR1FBQUFRQUFCdUFZQUFBQkFBQUd3QmdBQUFFQUFBYWdHQUFBQVFB
QQpCb0FZQUFBQkFBQUdZQmdBQUFFQUFBWkFHQUFBQVFBQUJpQVlBQUFCQUFBR0FCZ0FBQUVBQUFi
Z0Z3QUFBUUFBQnNBWEFBQUJBQUFHCm9CY0FBQUVBQUFhQUZ3QUFBUUFBQm1BWEFBQUJBQUFHUUJj
QUFBRUFBQVlnRndBQUFRQUFCZ0FYQUFBQkFBQUc0QllBQUFFQUFBYkEKRmdBQUFRQUFCcUFXQUFB
QkFBQUdnQllBQUFFQUFBWmdGZ0FBQVFBQUJrQVdBQUFCQUFBR0lCWUFBQUVBQUFZQUZnQUFBUUFB
QnVBVgpBQUFCQUFBR3dCVUFBQUVBQUFhZ0ZRQUFBUUFBQm9BVkFBQUJBQUFHWUJVQUFBRUFBQVpB
RlFBQUFRQUFCaUFWQUFBQkFBQUdBQlVBCkFBRUFBQWJnRkFBQUFRQUFCc0FVQUFBQkFBQUdvQlFB
QUFFQUFBYUFGQUFBQVFBQUJtQVVBQUFCQUFBR1FCUUFBQUVBQUFZZ0ZBQUEKQVFBQUJnQVVBQUFC
QUFBRzRCTUFBQUVBQUFiQUV3QUFBUUFBQnFBVEFBQUJBQUFHZ0JNQUFBRUFBQVpnRXdBQUFRQUFC
a0FUQUFBQgpBQUFHSUJNQUFBRUFBQVlBRXdBQUFRQUFCdUFTQUFBQkFBQUd3QklBQUFFQUFBYWdF
Z0FBQVFBQUJvQVNBQUFCQUFBR1lCSUFBQUVBCkFBWkFFZ0FBQVFBQUJpQVNBQUFCQUFBR0FCSUFB
QUVBQUFiZ0VRQUFBUUFBQnNBUkFBQUJBQUFHb0JFQUFBRUFBQWFBRVFBQUFRQUEKQm1BUkFBQUJB
QUFHUUJFQUFBRUFBQVlnRVFBQUFRQUFCZ0FSQUFBQkFBQUc0QkFBQUFFQUFBYkFFQUFBQVFBQUJx
QVFBQUFCQUFBRwpnQkFBQUFFQUFBWmdFQUFBQVFBQUJrQVFBQUFCQUFBR0lCQUFBQUVBQUFZQUVB
QUFBUUFBQnVBUEFBQUJBQUFHd0E4QUFBRUFBQWFnCkR3QUFBUUFBQm9BUEFBQUJBQUFHWUE4QUFB
RUFBQVpBRHdBQUFRQUFCaUFQQUFBQkFBQUdBQThBQUFFQUFBYmdEZ0FBQVFBQUJzQU8KQUFBQkFB
QUdvQTRBQUFFQUFBYUFEZ0FBQVFBQUJtQU9BQUFCQUFBR1FBNEFBQUVBQUFZZ0RnQUFBUUFBQmdB
T0FBQUJBQUFHNEEwQQpBQUVBQUFiQURRQUFBUUFBQnFBTkFBQUJBQUFHZ0EwQUFBRUFBQVpnRFFB
QUFRQUFCa0FOQUFBQkFBQUdJQTBBQUFFQUFBWUFEUUFBCkFRQUFCdUFNQUFBQkFBQUd3QXdBQUFF
QUFBYWdEQUFBQVFBQUJvQU1BQUFCQUFBR1lBd0FBQUVBQUFaQURBQUFBUUFBQmlBTUFBQUIKQUFB
R0FBd0FBQUVBQUFiZ0N3QUFBUUFBQnNBTEFBQUJBQUFHb0FzQUFBRUFBQWFBQ3dBQUFRQUFCbUFM
QUFBQkFBQUdRQXNBQUFFQQpBQVlnQ3dBQUFRQUFCZ0FMQUFBQkFBQUc0QW9BQUFFQUFBYkFDZ0FB
QVFBQUJxQUtBQUFCQUFBR2dBb0FBQUVBQUFaZ0NnQUFBUUFBCkJrQUtBQUFCQUFBR0lBb0FBQUVB
QUFZQUNnQUFBUUFBQnVBSkFBQUJBQUFHd0FrQUFBRUFBQWFnQ1FBQUFRQUFCb0FKQUFBQkFBQUcK
WUFrQUFBRUFBQVpBQ1FBQUFRQUFCaUFKQUFBQkFBQUdBQWtBQUFFQUFBYmdDQUFBQVFBQUJzQUlB
QUFCQUFBR29BZ0FBQUVBQUFhQQpDQUFBQVFBQUJtQUlBQUFCQUFBR1FBZ0FBQUVBQUFZZ0NBQUFB
UUFBQmdBSUFBQUJBQUFHNEFjQUFBRUFBQWJBQndBQUFRQUFCcUFICkFBQUJBQUFHZ0FjQUFBRUFB
QVpnQndBQUFRQUFCa0FIQUFBQkFBQUdJQWNBQUFFQUFBWUFCd0FBQVFBQUJ1QUdBQUFCQUFBR3dB
WUEKQUFFQUFBYWdCZ0FBQVFBQUJvQUdBQUFCQUFBR1lBWUFBQUVBQUFaQUJnQUFBUUFBQmlBR0FB
QUJBQUFHQUFZQUFBRUFBQWJnQlFBQQpBUUFBQnNBRkFBQUJBQUFHb0FVQUFBRUFBQWFBQlFBQUFR
QUFCbUFGQUFBQkFBQUdRQVVBQUFFQUFBWWdCUUFBQVFBQUJnQUZBQUFCCkFBQUc0QVFBQUFFQUFB
YkFCQUFBQVFBQUJxQUVBQUFCQUFBR2dBUUFBQUVBQUFaZ0JBQUFBUUFBQmtBRUFBQUJBQUFHSUFR
QUFBRUEKQUFZQUJBQUFBUUFBQnVBREFBQUJBQUFHd0FNQUFBRUFBQWFnQXdBQUFRQUFCb0FEQUFB
QkFBQUdZQU1BQUFFQUFBWkFBd0FBQVFBQQpCaUFEQUFBQkFBQUdBQU1BQUFFQUFBYmdBZ0FBQVFB
QUJzQUNBQUFCQUFBR29BSUFBQUVBQUFhQUFnQUFBUUFBQm1BQ0FBQUJBQUFHClFBSUFBQUVBQUFZ
Z0FnQUFBUUFBQmdBQ0FBQUJBQUFHNEFFQUFBRUFBQWJBQVFBQUFRQUFCcUFCQUFBQkFBQUdnQUVB
QUFFQUFBWmcKQVFBQUFRQUFCa0FCQUFBQkFBQUdJQUVBQUFFQUFBWUFBUUFBQVFBQUJ1QUFBQUFC
QUFBR3dBQUFBQUVBQUFhZ0FBQUFBUUFBQm9BQQpBQUFCQUFBR1lBQUFBQUVBQUFaQUFBQUFBUUFB
QmlBQUFBQUJBQUFHQUFBQUFBRUFBQVkrVkFBQURnVUFBSEFmQXdBQUFBQUFhVlFBCkFBNEdBQUJZ
WWdBQUFBQUFBSlpVQUFBT0JnQUFlbUlBQUFBQUFBQ2RWQUFBRGdZQUFNOWlBQUFBQUFBQXBWUUFB
QTRGQUFDUUlBTUEKQUFBQUFMbFVBQUFPQlFBQW1DQURBQUFBQUFEelZBQUFEZ1lBQU5wc0FBQUFB
QUFBL1ZRQUFBNEJBQUFnWVFBQUFBQUFBQ0pWQUFBTwpCZ0FBVzJNQUFBQUFBQUJTVlFBQURnWUFB
SUJqQUFBQUFBQUFYRlVBQUE0R0FBRHliQUFBQUFBQUFJVlZBQUFPQmdBQUVHMEFBQUFBCkFBQ1BW
UUFBRGdZQUFMSmpBQUFBQUFBQXRWVUFBQTRHQUFETll3QUFBQUFBQUw5VkFBQU9CZ0FBbEdRQUFB
QUFBQURaVlFBQURnWUEKQUtOa0FBQUFBQUFBNDFVQUFBNEdBQUN2WkFBQUFBQUFBTzFWQUFBT0FR
QUFZQ0lBQUFBQUFBQVFWZ0FBRGdZQUFMWnNBQUFBQUFBQQpQVllBQUE0R0FBRFliQUFBQUFBQUFF
ZFdBQUFPQlFBQWVCOERBQUFBQUFCMVZnQUFEZ1lBQU1oa0FBQUFBQUFBcFZZQUFBNEdBQUR0ClpB
QUFBQUFBQUs5V0FBQU9CUUFBaFNBREFBQUFBQURqVmdBQURnVUFBSWdnQXdBQUFBQUFFRmNBQUE0
R0FBRDRhd0FBQUFBQUFCcFgKQUFBT0JnQUFvV3NBQUFBQUFBQk9Wd0FBRGdZQUFNcHJBQUFBQUFB
QVdGY0FBQTRHQUFCRmJBQUFBQUFBQUg1WEFBQU9CZ0FBcm1nQQpBQUFBQUFDSVZ3QUFEZ0VBQURB
cUFBQUFBQUFBNGxjQUFBNEdBQUFhWlFBQUFBQUFBQU5ZQUFBT0JnQUFNR1VBQUFBQUFBQU5XQUFB
CkRnRUFBQkE0QUFBQUFBQUFKVmdBQUE0RkFBQ0VJQU1BQUFBQUFGWllBQUFPQlFBQVVDQURBQUFB
QUFCNVdBQUFEZ1lBQUdSb0FBQUEKQUFBQWcxZ0FBQTRHQUFCUWF3QUFBQUFBQUxSWUFBQU9CZ0FB
ZG1zQUFBQUFBQUMrV0FBQURnWUFBSjFvQUFBQUFBQUEybGdBQUE0RgpBQUNBSUFNQUFBQUFBUDVZ
QUFBT0FRQUFzRVVBQUFBQUFBQWdXUUFBRGdFQUFPQkhBQUFBQUFBQU0xa0FBQTRGQUFDQUh3TUFB
QUFBCkFGdFpBQUFPQlFBQWVDQURBQUFBQUFDR1dRQUFEZ1lBQUtkbEFBQUFBQUFBa0ZrQUFBNEdB
QUM0WlFBQUFBQUFBSnBaQUFBT0JnQUEKd21VQUFBQUFBQUNrV1FBQURnWUFBTWRsQUFBQUFBQUFy
bGtBQUE0R0FBRFNaUUFBQUFBQUFMaFpBQUFPQmdBQTRXVUFBQUFBQUFEQwpXUUFBRGdZQUFPMWxB
QUFBQUFBQXpGa0FBQTRHQUFEK1pRQUFBQUFBQU5aWkFBQU9CZ0FBRG1ZQUFBQUFBQURnV1FBQURn
WUFBQ2RtCkFBQUFBQUFBNmxrQUFBNEdBQUEzWmdBQUFBQUFBUFJaQUFBT0JnQUFVR1lBQUFBQUFB
RCtXUUFBRGdZQUFGeG1BQUFBQUFBQUNGb0EKQUE0R0FBQnNaZ0FBQUFBQUFCSmFBQUFPQmdBQWZH
WUFBQUFBQUFBY1dnQUFEZ1lBQUlkbUFBQUFBQUFBSmxvQUFBNEdBQUNNWmdBQQpBQUFBQURCYUFB
QU9CZ0FBa1dZQUFBQUFBQUE2V2dBQURnWUFBSmhtQUFBQUFBQUFSRm9BQUE0RkFBQVlJQU1BQUFB
QUFGTmFBQUFPCkJRQUFpQjhEQUFBQUFBQnJXZ0FBRGdVQUFKQWZBd0FBQUFBQWZGb0FBQTRGQUFD
WUh3TUFBQUFBQUloYUFBQU9CUUFBb0I4REFBQUEKQUFDYVdnQUFEZ1VBQUtnZkF3QUFBQUFBc0Zv
QUFBNEZBQUN3SHdNQUFBQUFBTU5hQUFBT0JRQUF1QjhEQUFBQUFBRGJXZ0FBRGdVQQpBTUFmQXdB
QUFBQUE4bG9BQUE0RkFBRElId01BQUFBQUFCSmJBQUFPQlFBQTBCOERBQUFBQUFBcFd3QUFEZ1VB
QU5nZkF3QUFBQUFBClNWc0FBQTRGQUFEZ0h3TUFBQUFBQUZ4YkFBQU9CUUFBNkI4REFBQUFBQUJ6
V3dBQURnVUFBUEFmQXdBQUFBQUFpbHNBQUE0RkFBRDQKSHdNQUFBQUFBSnhiQUFBT0JRQUFBQ0FE
QUFBQUFBQ29Xd0FBRGdVQUFBZ2dBd0FBQUFBQXRGc0FBQTRGQUFBUUlBTUFBQUFBQU1KYgpBQUFP
QmdBQTAyb0FBQUFBQUFETVd3QUFEZ0VBQU5CZkFBQUFBQUFBNlZzQUFBNFBBQUN3Z1FBQUFBQUFB
QVZjQUFBT0JRQUFJQ0FECkFBQUFBQUJDWEFBQURnVUFBQ2dnQXdBQUFBQUFZMXdBQUE0R0FBQ2da
Z0FBQUFBQUFJWmNBQUFPQmdBQXVHWUFBQUFBQUFDUVhBQUEKRGdVQUFEQWdBd0FBQUFBQTBWd0FB
QTRHQUFEWVpnQUFBQUFBQUJSZEFBQU9CZ0FBRUdjQUFBQUFBQUFlWFFBQURnVUFBRGdnQXdBQQpB
QUFBWUYwQUFBNEdBQUJRWndBQUFBQUFBS1JkQUFBT0JnQUFpV2NBQUFBQUFBQ3VYUUFBRGdVQUFF
QWdBd0FBQUFBQTJGMEFBQTRHCkFBREtad0FBQUFBQUFBUmVBQUFPQmdBQTYyY0FBQUFBQUFBT1hn
QUFEZ1VBQUdJZ0F3QUFBQUFBTlY0QUFBNEdBQURvYVFBQUFBQUEKQUZ4ZUFBQU9CZ0FBQkdvQUFB
QUFBQUJtWGdBQURnVUFBR0VnQXdBQUFBQUFyVjRBQUE0R0FBQnJhUUFBQUFBQUFQUmVBQUFPQmdB
QQpwMmtBQUFBQUFBRCtYZ0FBRGdVQUFHQWdBd0FBQUFBQVJsOEFBQTRHQUFEc2FBQUFBQUFBQUk1
ZkFBQU9CZ0FBS1drQUFBQUFBQUNZClh3QUFEZzhBQUxpQkFBQUFBQUFBdFY4QUFBNEZBQUJJSUFN
QUFBQUFBT1ZmQUFBT0JnQUFGV2dBQUFBQUFBQVZZQUFBRGdZQUFEcG8KQUFBQUFBQUFIMkFBQUE0
QkFBQ0FYZ0FBQUFBQUFEMWdBQUFPQmdBQXYyZ0FBQUFBQUFCSFlBQUFEZ1VBQUZnZ0F3QUFBQUFB
YVdBQQpBQTRCQUFBUVh3QUFBQUFBQUl0Z0FBQU9BUUFBSUY4QUFBQUFBQUNqWUFBQURnVUFBSEFn
QXdBQUFBQUF6MkFBQUE0R0FBQm5hZ0FBCkFBQUFBTmxnQUFBT0JnQUFKV29BQUFBQUFBRGpZQUFB
RGdVQUFHZ2dBd0FBQUFBQS9HQUFBQTRCQUFEQVh3QUFBQUFBQUJoaEFBQU8KQmdBQXVXb0FBQUFB
QUFBOVlRQUFEZ1lBQURocUFBQUFBQUFBWDJFQUFBNEdBQUJQYWdBQUFBQUFBR2xoQUFBT0NBQUE2
RzBBQUFBQQpBQUIvWVFBQURnZ0FBUGR0QUFBQUFBQUFsbUVBQUE0SUFBQUdiZ0FBQUFBQUFLMWhB
QUFPQ0FBQUhtNEFBQUFBQUFERVlRQUFEZ2dBCkFERnVBQUFBQUFBQTIyRUFBQTRJQUFBMmJnQUFB
QUFBQVBOaEFBQU9DQUFBUkc0QUFBQUFBQUFMWWdBQURnZ0FBRXB1QUFBQUFBQUEKSTJJQUFBNElB
QUJoYmdBQUFBQUFBRHRpQUFBT0NBQUFlMjRBQUFBQUFBQlRZZ0FBRGdnQUFKbHVBQUFBQUFBQWEy
SUFBQTRJQUFDbApiZ0FBQUFBQUFJTmlBQUFPQ0FBQXJXNEFBQUFBQUFDYllnQUFEZ2dBQUx4dUFB
QUFBQUFBczJJQUFBNElBQURMYmdBQUFBQUFBTXRpCkFBQU9DQUFBMG00QUFBQUFBQURqWWdBQURn
WUFBUGxpQUFBQUFBQUE3R0lBQUE0SUFBRFpiZ0FBQUFBQUFBUmpBQUFPQ0FBQThXNEEKQUFBQUFB
QWNZd0FBRGdnQUFCUnZBQUFBQUFBQU5HTUFBQTRJQUFBamJ3QUFBQUFBQUV4akFBQU9DQUFBTVc4
QUFBQUFBQUJrWXdBQQpEZ2dBQUVwdkFBQUFBQUFBZkdNQUFBNElBQUIxYndBQUFBQUFBSlJqQUFB
T0NBQUFoRzhBQUFBQUFBQ3NZd0FBRGdZQUFQOWlBQUFBCkFBQUF0V01BQUE0SUFBQ2pid0FBQUFB
QUFNMWpBQUFPQmdBQUMyTUFBQUFBQUFEV1l3QUFEZ2dBQUxSdkFBQUFBQUFBN21NQUFBNEcKQUFB
UFl3QUFBQUFBQVBkakFBQU9CZ0FBRzJNQUFBQUFBQUFBWkFBQURnZ0FBTVZ2QUFBQUFBQUFHR1FB
QUE0SUFBRGNid0FBQUFBQQpBREJrQUFBT0NBQUE4bThBQUFBQUFBQklaQUFBRGdnQUFBUndBQUFB
QUFBQVlHUUFBQTRJQUFBWGNBQUFBQUFBQUhoa0FBQU9DQUFBCkpuQUFBQUFBQUFDUVpBQUFEZ2dB
QURwd0FBQUFBQUFBcUdRQUFBNElBQUJMY0FBQUFBQUFBTUJrQUFBT0NBQUFWbkFBQUFBQUFBRFkK
WkFBQURnZ0FBRjV3QUFBQUFBQUE4R1FBQUE0SUFBQmpjQUFBQUFBQUFBaGxBQUFPQ0FBQWQzQUFB
QUFBQUFBZ1pRQUFEZ1lBQUI5agpBQUFBQUFBQUtXVUFBQTRJQUFDQmNBQUFBQUFBQUVGbEFBQU9D
QUFBbTNBQUFBQUFBQUJaWlFBQURnWUFBRFpqQUFBQUFBQUFZbVVBCkFBNElBQUNyY0FBQUFBQUFB
SHBsQUFBT0NBQUF3SEFBQUFBQUFBQ1NaUUFBRGdnQUFNdHdBQUFBQUFBQXEyVUFBQTRJQUFEaGNB
QUEKQUFBQUFNUmxBQUFPQ0FBQTdYQUFBQUFBQUFEZFpRQUFEZ2dBQVAxd0FBQUFBQUFBOW1VQUFB
NElBQUFjY1FBQUFBQUFBQTltQUFBTwpCZ0FBK1dNQUFBQUFBQUFaWmdBQURnWUFBQXRrQUFBQUFB
QUFJMllBQUE0SUFBQStjUUFBQUFBQUFEeG1BQUFPQmdBQUhXUUFBQUFBCkFBQkdaZ0FBRGdnQUFG
QnhBQUFBQUFBQVgyWUFBQTRJQUFCZ2NRQUFBQUFBQUhobUFBQU9DQUFBZm5FQUFBQUFBQUNSWmdB
QURnZ0EKQUlWeEFBQUFBQUFBcW1ZQUFBNElBQUNhY1FBQUFBQUFBTU5tQUFBT0NBQUFySEVBQUFB
QUFBRGNaZ0FBRGdnQUFNQnhBQUFBQUFBQQo5V1lBQUE0SUFBRFdjUUFBQUFBQUFBNW5BQUFPQ0FB
QStYRUFBQUFBQUFBblp3QUFEZ2dBQUI1eUFBQUFBQUFBUUdjQUFBNElBQUJLCmNnQUFBQUFBQUZs
bkFBQU9CZ0FBUEdRQUFBQUFBQUJqWndBQURnZ0FBRjF5QUFBQUFBQUFmR2NBQUE0SUFBQmljZ0FB
QUFBQUFKVm4KQUFBT0NBQUFpM0lBQUFBQUFBQ3Vad0FBRGdnQUFKRnlBQUFBQUFBQXgyY0FBQTRJ
QUFDZ2NnQUFBQUFBQU9CbkFBQU9DQUFBcW5JQQpBQUFBQUFENVp3QUFEZ2dBQU1OeUFBQUFBQUFB
RW1nQUFBNElBQURQY2dBQUFBQUFBQ3RvQUFBT0NBQUEyWElBQUFBQUFBQkVhQUFBCkRnZ0FBT0J5
QUFBQUFBQUFYV2dBQUE0SUFBRHJjZ0FBQUFBQUFIWm9BQUFPQ0FBQTluSUFBQUFBQUFDUGFBQUFE
Z2dBQUFSekFBQUEKQUFBQXFHZ0FBQTRJQUFBVWN3QUFBQUFBQU1Gb0FBQU9DQUFBSVhNQUFBQUFB
QURhYUFBQURnZ0FBQzF6QUFBQUFBQUE4MmdBQUE0SQpBQUEyY3dBQUFBQUFBQXhwQUFBT0NBQUFQ
M01BQUFBQUFBQWxhUUFBRGdnQUFGUnpBQUFBQUFBQVBta0FBQTRJQUFCbWN3QUFBQUFBCkFGZHBB
QUFPQ0FBQWYzTUFBQUFBQUFCd2FRQUFEZ2dBQUpSekFBQUFBQUFBaVdrQUFBNElBQUNlY3dBQUFB
QUFBS0pwQUFBT0NBQUEKM0hNQUFBQUFBQUM3YVFBQURnZ0FBT3B6QUFBQUFBQUExR2tBQUE0SUFB
QVhkQUFBQUFBQUFPMXBBQUFPREFBQU1JRUFBQUFBQUFBQQphZ0FBRGdnQUFEMTBBQUFBQUFBQUdX
b0FBQTROQUFCR2dRQUFBQUFBQUM5cUFBQU9EZ0FBWUlFQUFBQUFBQUNDYWdBQURnNEFBSUNCCkFB
QUFBQUFBeEdvQUFBNElBQUJsZEFBQUFBQUFBTjFxQUFBT0NBQUFkWFFBQUFBQUFBRDJhZ0FBRGdn
QUFJSjBBQUFBQUFBQUQyc0EKQUE0SUFBQ2FkQUFBQUFBQUFDaHJBQUFPQ0FBQW9YUUFBQUFBQUFC
QmF3QUFEZ2dBQUtoMEFBQUFBQUFBV21zQUFBNElBQUN4ZEFBQQpBQUFBQUhOckFBQU9DQUFBdm5R
QUFBQUFBQUNNYXdBQURnZ0FBTXgwQUFBQUFBQUFwV3NBQUE0SUFBRGNkQUFBQUFBQUFMNXJBQUFP
CkNBQUE4blFBQUFBQUFBRFhhd0FBRGdnQUFBWjFBQUFBQUFBQThHc0FBQTRHQUFCWVpRQUFBQUFB
QVBwckFBQU9DQUFBRUhVQUFBQUEKQUFBVGJBQUFEZ2dBQUNKMUFBQUFBQUFBTEd3QUFBNElBQUFt
ZFFBQUFBQUFBRVZzQUFBT0NBQUFMSFVBQUFBQUFBQmViQUFBRGdnQQpBRHAxQUFBQUFBQUFkMndB
QUE0SUFBQkhkUUFBQUFBQUFKQnNBQUFPQ0FBQVVYVUFBQUFBQUFDcGJBQUFEZ1lBQUdCbEFBQUFB
QUFBCnMyd0FBQTRJQUFCZmRRQUFBQUFBQU14c0FBQU9DQUFBZG5VQUFBQUFBQURsYkFBQURnZ0FB
SnQxQUFBQUFBQUEvbXdBQUE0SUFBQzEKZFFBQUFBQUFBQmR0QUFBT0NBQUExM1VBQUFBQUFBQXdi
UUFBRGdnQUFPSjFBQUFBQUFBQVNXMEFBQTRJQUFEc2RRQUFBQUFBQUdKdApBQUFPQ0FBQSszVUFB
QUFBQUFCN2JRQUFEZ2dBQUFaMkFBQUFBQUFBbEcwQUFBNElBQUFYZGdBQUFBQUFBSzF0QUFBT0NB
QUFIM1lBCkFBQUFBQURHYlFBQURnZ0FBQ3gyQUFBQUFBQUEzMjBBQUE0SUFBQXlkZ0FBQUFBQUFQ
aHRBQUFPQ0FBQVBIWUFBQUFBQUFBUmJnQUEKRGdnQUFFNTJBQUFBQUFBQUttNEFBQTRHQUFCblpR
QUFBQUFBQURSdUFBQU9CZ0FBZTJVQUFBQUFBQUErYmdBQURnZ0FBR0IyQUFBQQpBQUFBVjI0QUFB
NElBQUJwZGdBQUFBQUFBSEJ1QUFBT0JnQUFpV1VBQUFBQUFBQjZiZ0FBRGdnQUFJTjJBQUFBQUFB
QWsyNEFBQTRJCkFBQ2ZkZ0FBQUFBQUFLeHVBQUFPQ0FBQXduWUFBQUFBQUFERmJnQUFEZ2dBQU94
MkFBQUFBQUFBM200QUFBNEdBQUNnWlFBQUFBQUEKQU9odUFBQU9DQUFBKzNZQUFBQUFBQUFCYndB
QURnZ0FBQWQzQUFBQUFBQUFHbThBQUE0SUFBQVRkd0FBQUFBQUFETnZBQUFPQ0FBQQpIbmNBQUFB
QUFBQk1id0FBRGdnQUFDZDNBQUFBQUFBQVpXOEFBQTRJQUFBMGR3QUFBQUFBQUg1dkFBQU9DQUFB
UlhjQUFBQUFBQUNYCmJ3QUFEZ1lBQUJSb0FBQUFBQUFBb1c4QUFBNEdBQURZYUFBQUFBQUFBS3R2
QUFBT0NBQUFWM2NBQUFBQUFBREVid0FBRGdZQUFPQnEKQUFBQUFBQUF6bThBQUE0SUFBQm5kd0FB
QUFBQUFPZHZBQUFPQmdBQThXb0FBQUFBQUFEeGJ3QUFEZ2dBQUhkM0FBQUFBQUFBQ25BQQpBQTRH
QUFBS2F3QUFBQUFBQUJSd0FBQU9CZ0FBRW1zQUFBQUFBQUFlY0FBQURnWUFBQjVyQUFBQUFBQUFL
SEFBQUE0R0FBQXhhd0FBCkFBQUFBREp3QUFBT0JnQUFSMnNBQUFBQUFBQThjQUFBRGdnQUFJTjNB
QUFBQUFBQVZYQUFBQTRJQUFDTGR3QUFBQUFBQUc1d0FBQU8KQ0FBQW1uY0FBQUFBQUFDSGNBQUFE
Z2dBQUtCM0FBQUFBQUFBb0hBQUFBNElBQUNzZHdBQUFBQUFBTGx3QUFBT0NBQUF2WGNBQUFBQQpB
QURTY0FBQURnZ0FBTmQzQUFBQUFBQUE2M0FBQUE0SUFBRG5kd0FBQUFBQUFBUnhBQUFPQmdBQVlH
d0FBQUFBQUFBT2NRQUFEZ1lBCkFJcHNBQUFBQUFBQUdIRUFBQTRJQUFEM2R3QUFBQUFBQURGeEFB
QU9DQUFBQlhnQUFBQUFBQUJLY1FBQURnZ0FBQ0o0QUFBQUFBQUEKWTNFQUFBNElBQUJQZUFBQUFB
QUFBSHh4QUFBT0NBQUFXM2dBQUFBQUFBQ1ZjUUFBRGdnQUFHcDRBQUFBQUFBQXJuRUFBQTRJQUFC
NgplQUFBQUFBQUFNZHhBQUFPSVFBQTJQd0NBQUFBQUFEUmNRQUFEaUVBQUtBSEF3QUFBQUFBOTNF
QUFBNGhBQUFJQ3dNQUFBQUFBRlJ5CkFBQU9JUUFBK0JBREFBQUFBQUJ2Y2dBQURpRUFBS2dVQXdB
QUFBQUFsSElBQUE0aEFBQUFGUU1BQUFBQUFLcHlBQUFPSVFBQWdCNEQKQUFBQUFBRExjZ0FBRGlF
QUFLZ2VBd0FBQUFBQThISUFBQTRoQUFEUUhnTUFBQUFBQUF0ekFBQU9JUUFBK0I0REFBQUFBQUFx
Y3dBQQpEaUVBQUNBZkF3QUFBQUFBU25NQUFBNGhBQUJJSHdNQUFBQUFBSFVYQUFBZkFRQUFzQ2dB
QUFBQUFBQWJRd0FBSHlFQUFCQUtBd0FBCkFBQUEyUzhBQUI4QkFBQ0FVUUFBQUFBQUFPVlBBQUFm
SVFBQXdCa0RBQUFBQUFDWER3QUFId0VBQU5BVkFBQUFBQUFBdno4QUFCOGgKQUFBb0JRTUFBQUFB
QU1RT0FBQWZBUUFBRUJNQUFBQUFBQUFKUHdBQUh5RUFBRGdFQXdBQUFBQUFmQThBQUI4QkFBQkFG
UUFBQUFBQQpBS0UvQUFBZklRQUFBQVVEQUFBQUFBQUpEd0FBSHdFQUFOQVRBQUFBQUFBQVFUOEFB
QjhoQUFDSUJBTUFBQUFBQUVBUEFBQWZBUUFBCmNCUUFBQUFBQUFCZlB3QUFIeUVBQUxBRUF3QUFB
QUFBN2c0QUFCOEJBQUJ3RXdBQUFBQUFBQ00vQUFBZklRQUFZQVFEQUFBQUFBQmQKRHdBQUh3RUFB
TEFVQUFBQUFBQUFmejhBQUI4aEFBRFlCQU1BQUFBQUFEOE5BQUFmQVFBQUlCSUFBQUFBQUFCRVBn
QUFIeUVBQUhBRApBd0FBQUFBQXVRa0FBQjhCQUFEd0RRQUFBQUFBQUtnOEFBQWZJUUFBZ0FFREFB
QUFBQURBR1FBQUh3RUFBRUFzQUFBQUFBQUFuRVFBCkFCOGhBQUFJREFNQUFBQUFBTkVlQUFBZkFR
QUFzRFVBQUFBQUFBQ25Sd0FBSHlFQUFFZ1FBd0FBQUFBQWRCNEFBQjhCQUFBd05RQUEKQUFBQUFE
NUhBQUFmSVFBQXFBOERBQUFBQUFDaUhnQUFId0VBQUhBMUFBQUFBQUFBY2tjQUFCOGhBQUQ0RHdN
QUFBQUFBRjBlQUFBZgpBUUFBRURVQUFBQUFBQUFrUndBQUh5RUFBSUFQQXdBQUFBQUFJaDRBQUI4
QkFBQmdOQUFBQUFBQUFQdEdBQUFmSVFBQVVBOERBQUFBCkFBRExIUUFBSHdFQUFJQXpBQUFBQUFB
QTAwWUFBQjhoQUFBZ0R3TUFBQUFBQUxjZUFBQWZBUUFBa0RVQUFBQUFBQUNLUndBQUh5RUEKQUNB
UUF3QUFBQUFBalI0QUFCOEJBQUJRTlFBQUFBQUFBRnBIQUFBZklRQUEwQThEQUFBQUFBQW5Id0FB
SHdFQUFPQTFBQUFBQUFBQQo1RWNBQUI4aEFBQ1lFQU1BQUFBQUFNb2ZBQUFmQVFBQWtEY0FBQUFB
QUFBVFNBQUFIeUVBQU1nUUF3QUFBQUFBS0NBQUFCOEJBQUFnCk9BQUFBQUFBQUVGSUFBQWZJUUFB
SUJFREFBQUFBQUFqTkFBQUh3RUFBQkJZQUFBQUFBQUFpRklBQUI4aEFBRHdIQU1BQUFBQUFCMHAK
QUFBZkFRQUF3RXNBQUFBQUFBQWhUQUFBSHlFQUFLZ1ZBd0FBQUFBQWNqVUFBQjhCQUFCZ1d3QUFB
QUFBQU1KVEFBQWZJUUFBQ0I0RApBQUFBQUFETE5RQUFId0VBQU9CY0FBQUFBQUFBR0ZRQUFCOGhB
QUJZSGdNQUFBQUFBTUlvQUFBZkFRQUFVRXNBQUFBQUFBRHdTd0FBCkh5RUFBSUFWQXdBQUFBQUFP
RFVBQUI4QkFBQVFXZ0FBQUFBQUFJVlRBQUFmSVFBQTRCMERBQUFBQUFCSk1RQUFId0VBQUtCVkFB
QUEKQUFBQTVGQUFBQjhoQUFEZ0dnTUFBQUFBQUlFckFBQWZBUUFBUUUwQUFBQUFBQUNNVFFBQUh5
RUFBRGdYQXdBQUFBQUF6eXNBQUI4QgpBQUJRVFFBQUFBQUFBTGROQUFBZklRQUFZQmNEQUFBQUFB
Q0dGUUFBSHdFQUFFQWxBQUFBQUFBQUpVSUFBQjhoQUFESUNBTUFBQUFBCkFGNFdBQUFmQVFBQUVD
WUFBQUFBQUFDUlFnQUFIeUVBQUVnSkF3QUFBQUFBZXhrQUFCOEJBQUF3S3dBQUFBQUFBR05FQUFB
ZklRQUEKc0FzREFBQUFBQUJjRlFBQUh3RUFBREFsQUFBQUFBQUFERUlBQUI4aEFBQ2dDQU1BQUFB
QUFCc3hBQUFmQVFBQWtGVUFBQUFBQUFESgpVQUFBSHlFQUFMZ2FBd0FBQUFBQUdSVUFBQjhCQUFB
Z0pRQUFBQUFBQU9GQkFBQWZJUUFBZUFnREFBQUFBQUFiTEFBQUh3RUFBR0JOCkFBQUFBQUFBNFUw
QUFCOGhBQUNJRndNQUFBQUFBQkFZQUFBZkFRQUFBQ29BQUFBQUFBQ1BRd0FBSHlFQUFKQUtBd0FB
QUFBQXBCZ0EKQUI4QkFBQWdLZ0FBQUFBQUFPRkRBQUFmSVFBQTRBb0RBQUFBQUFDMk5RQUFId0VB
QU5CY0FBQUFBQUFBQUZRQUFCOGhBQUF3SGdNQQpBQUFBQUdjQ0FBQWZBUUFBWUFJQUFBQUFBQUNX
T1FBQUh5RUFBSEQ5QWdBQUFBQUFBdzBBQUI4QkFBQVFFZ0FBQUFBQUFDVStBQUFmCklRQUFTQU1E
QUFBQUFBREREQUFBSHdFQUFBQVNBQUFBQUFBQUJENEFBQjhoQUFBZ0F3TUFBQUFBQU9vYkFBQWZB
UUFBZ0RFQUFBQUEKQUFBSlJnQUFIeUVBQVBnTkF3QUFBQUFBc0FRQUFCOEJBQUNRQndBQUFBQUFB
SWc2QUFBZklRQUE4UDRDQUFBQUFBRGlLUUFBSHdFQQpBSEJNQUFBQUFBQUFyMHdBQUI4aEFBQklG
Z01BQUFBQUFOb2tBQUFmQVFBQXNFQUFBQUFBQUFDVlNnQUFIeUVBQUtnVEF3QUFBQUFBCm95b0FB
QjhCQUFEUVRBQUFBQUFBQURoTkFBQWZJUUFBNkJZREFBQUFBQUF6THdBQUh3RUFBQkJSQUFBQUFB
QUF1azhBQUI4aEFBQ1kKR1FNQUFBQUFBQm9iQUFBZkFRQUFvREFBQUFBQUFBQ2lSUUFBSHlFQUFJ
QU5Bd0FBQUFBQXhnSUFBQjhCQUFBd0F3QUFBQUFBQUxVNQpBQUFmSVFBQW1QMENBQUFBQUFDV0Jn
QUFId0VBQUFBS0FBQUFBQUFBb0RzQUFCOGhBQUF3QUFNQUFBQUFBQXNHQUFBZkFRQUFvQWtBCkFB
QUFBQUIrT3dBQUh5RUFBQWdBQXdBQUFBQUE3QUVBQUI4QkFBQ3dBUUFBQUFBQUFISTVBQUFmSVFB
QVNQMENBQUFBQUFBRkRBQUEKSHdFQUFCQVJBQUFBQUFBQXJqMEFBQjhoQUFDZ0FnTUFBQUFBQUk4
TUFBQWZBUUFBNEJFQUFBQUFBQURtUFFBQUh5RUFBUGdDQXdBQQpBQUFBaFEwQUFCOEJBQUF3RWdB
QUFBQUFBR28rQUFBZklRQUFtQU1EQUFBQUFBRE1Gd0FBSHdFQUFQQXBBQUFBQUFBQWFVTUFBQjho
CkFBQm9DZ01BQUFBQUFFQVlBQUFmQVFBQUVDb0FBQUFBQUFDclF3QUFIeUVBQUxnS0F3QUFBQUFB
T3hBQUFCOEJBQUNRRmdBQUFBQUEKQUZsQUFBQWZJUUFBOEFVREFBQUFBQUNkSVFBQUh3RUFBSEE5
QUFBQUFBQUFEVWtBQUI4aEFBRG9FUU1BQUFBQUFHd3dBQUFmQVFBQQpNRlVBQUFBQUFBQTFVQUFB
SHlFQUFFQWFBd0FBQUFBQU1nQUFBQjhCQUFCQUFBQUFBQUFBQUZBNUFBQWZJUUFBR1AwQ0FBQUFB
QUFCCk1BQUFId0VBQUJCVkFBQUFBQUFBQzFBQUFCOGhBQUFZR2dNQUFBQUFBTzh2QUFBZkFRQUF3
RkVBQUFBQUFBRCtUd0FBSHlFQUFPZ1oKQXdBQUFBQUFHUVFBQUI4QkFBQkFCZ0FBQUFBQUFHMDZB
QUFmSVFBQXdQNENBQUFBQUFEa0F3QUFId0VBQU5BRkFBQUFBQUFBVmpvQQpBQjhoQUFDWS9nSUFB
QUFBQU9zZUFBQWZBUUFBMERVQUFBQUFBQURFUndBQUh5RUFBSEFRQXdBQUFBQUFOd2tBQUI4QkFB
QUFEUUFBCkFBQUFBRDQ4QUFBZklRQUFDQUVEQUFBQUFBQitFZ0FBSHdFQUFKQWRBQUFBQUFBQTMw
QUFBQjhoQUFESUJnTUFBQUFBQUNzU0FBQWYKQVFBQUFCMEFBQUFBQUFDZlFBQUFIeUVBQUhnR0F3
QUFBQUFBNWhJQUFCOEJBQUJ3SGdBQUFBQUFBQ0JCQUFBZklRQUFTQWNEQUFBQQpBQUJyRUFBQUh3
RUFBQ0FYQUFBQUFBQUFlRUFBQUI4aEFBQVlCZ01BQUFBQUFHQVNBQUFmQVFBQUVCMEFBQUFBQUFD
K1FBQUFIeUVBCkFLQUdBd0FBQUFBQW1TMEFBQjhCQUFEQVRnQUFBQUFBQU0xT0FBQWZJUUFBb0Jn
REFBQUFBQURaSlFBQUh3RUFBQ0JGQUFBQUFBQUEKL0VvQUFCOGhBQUJZRkFNQUFBQUFBTTR6QUFB
ZkFRQUFzRmNBQUFBQUFBQmZVZ0FBSHlFQUFNZ2NBd0FBQUFBQXlUQUFBQjhCQUFCUQpWUUFBQUFB
QUFIRlFBQUFmSVFBQWFCb0RBQUFBQUFEdU1BQUFId0VBQUhCVkFBQUFBQUFBbVZBQUFCOGhBQUNR
R2dNQUFBQUFBRjh1CkFBQWZBUUFBSUU4QUFBQUFBQUFUVHdBQUh5RUFBUEFZQXdBQUFBQUFxUzRB
QUI4QkFBQkFUd0FBQUFBQUFFSlBBQUFmSVFBQUdCa0QKQUFBQUFBQzNNUUFBSHdFQUFBQldBQUFB
QUFBQU9WRUFBQjhoQUFCWUd3TUFBQUFBQVBneEFBQWZBUUFBY0ZZQUFBQUFBQUNEVVFBQQpIeUVB
QU5BYkF3QUFBQUFBeURFQUFCOEJBQUFnVmdBQUFBQUFBRTFSQUFBZklRQUFnQnNEQUFBQUFBQ09N
UUFBSHdFQUFNQlZBQUFBCkFBQUFDbEVBQUI4aEFBQUlHd01BQUFBQUFONHhBQUFmQVFBQVFGWUFB
QUFBQUFCbVVRQUFIeUVBQUtnYkF3QUFBQUFBb3pFQUFCOEIKQUFEZ1ZRQUFBQUFBQUNKUkFBQWZJ
UUFBTUJzREFBQUFBQURMQ3dBQUh3RUFBQUFSQUFBQUFBQUFqVDBBQUI4aEFBQjRBZ01BQUFBQQpB
SnNMQUFBZkFRQUE4QkFBQUFBQUFBQnhQUUFBSHlFQUFGQUNBd0FBQUFBQUx3d0FBQjhCQUFBd0VR
QUFBQUFBQU1jOUFBQWZJUUFBCnlBSURBQUFBQUFEQ0tRQUFId0VBQUdCTUFBQUFBQUFBakV3QUFC
OGhBQUFnRmdNQUFBQUFBSG9wQUFBZkFRQUFRRXdBQUFBQUFBQlQKVEFBQUh5RUFBTkFWQXdBQUFB
QUFsaWtBQUI4QkFBQlFUQUFBQUFBQUFISk1BQUFmSVFBQStCVURBQUFBQUFCa0tnQUFId0VBQUxC
TQpBQUFBQUFBQUZrMEFBQjhoQUFEQUZnTUFBQUFBQUlzRkFBQWZBUUFBSUFnQUFBQUFBQUR5T2dB
QUh5RUFBR2ovQWdBQUFBQUFXUlFBCkFCOEJBQURBSXdBQUFBQUFBS0JCQUFBZklRQUFJQWdEQUFB
QUFBQThGQUFBSHdFQUFHQWpBQUFBQUFBQWdFRUFBQjhoQUFENEJ3TUEKQUFBQUFQMFRBQUFmQVFB
QTRDSUFBQUFBQUFCZVFRQUFIeUVBQU1nSEF3QUFBQUFBUHhjQUFCOEJBQUNnS0FBQUFBQUFBUDVD
QUFBZgpJUUFBNkFrREFBQUFBQURmQWdBQUh3RUFBR0FEQUFBQUFBQUEwVGtBQUI4aEFBREEvUUlB
QUFBQUFMQWlBQUFmQVFBQW9ENEFBQUFBCkFBQzBTUUFBSHlFQUFMQVNBd0FBQUFBQTBDRUFBQjhC
QUFDUVBRQUFBQUFBQUNsSkFBQWZJUUFBRUJJREFBQUFBQUNuQlFBQUh3RUEKQU5BSUFBQUFBQUFB
RVRzQUFCOGhBQUNRL3dJQUFBQUFBT3doQUFBZkFRQUFvRDBBQUFBQUFBQklTUUFBSHlFQUFEZ1NB
d0FBQUFBQQo1Z1VBQUI4QkFBQ0FDUUFBQUFBQUFGWTdBQUFmSVFBQTRQOENBQUFBQUFEQ0JRQUFI
d0VBQUdBSkFBQUFBQUFBTHpzQUFCOGhBQUM0Ci93SUFBQUFBQUdjRkFBQWZBUUFBNEFjQUFBQUFB
QURMT2dBQUh5RUFBRUQvQWdBQUFBQUFLeGNBQUI4QkFBQ2dKd0FBQUFBQUFPZEMKQUFBZklRQUF3
QWtEQUFBQUFBQ2JGd0FBSHdFQUFQQW9BQUFBQUFBQVJFTUFBQjhoQUFBNENnTUFBQUFBQVBnSEFB
QWZBUUFBTUFzQQpBQUFBQUFESU93QUFIeUVBQUdBQUF3QUFBQUFBcVJrQUFCOEJBQUJRS3dBQUFB
QUFBSUpFQUFBZklRQUEyQXNEQUFBQUFBQkRBd0FBCkh3RUFBTUFEQUFBQUFBQUFFVG9BQUI4aEFB
QVEvZ0lBQUFBQUFISURBQUFmQVFBQU1BUUFBQUFBQUFBak9nQUFIeUVBQURqK0FnQUEKQUFBQUZ5
OEFBQjhCQUFEZ1VBQUFBQUFBQUp0UEFBQWZJUUFBY0JrREFBQUFBQURZRlFBQUh3RUFBRkFsQUFB
QUFBQUFVa0lBQUI4aApBQUR3Q0FNQUFBQUFBQ0FXQUFBZkFRQUFBQ1lBQUFBQUFBQnZRZ0FBSHlF
QUFDQUpBd0FBQUFBQU15SUFBQjhCQUFDQVBnQUFBQUFBCkFJSkpBQUFmSVFBQWlCSURBQUFBQUFC
WEhBQUFId0VBQUxBeEFBQUFBQUFBUWtZQUFCOGhBQUJJRGdNQUFBQUFBQ1kxQUFBZkFRQUEKSUZr
QUFBQUFBQUJ3VXdBQUh5RUFBTGdkQXdBQUFBQUFuUndBQUI4QkFBRFFNUUFBQUFBQUFGOUdBQUFm
SVFBQWNBNERBQUFBQUFDZQpDZ0FBSHdFQUFLQVFBQUFBQUFBQTBUd0FBQjhoQUFDd0FRTUFBQUFB
QUVzeUFBQWZBUUFBd0ZZQUFBQUFBQUMvVVFBQUh5RUFBQ0FjCkF3QUFBQUFBRURJQUFCOEJBQUN3
VmdBQUFBQUFBSjVSQUFBZklRQUErQnNEQUFBQUFBQ01NZ0FBSHdFQUFOQldBQUFBQUFBQTQxRUEK
QUI4aEFBQklIQU1BQUFBQUFIUUpBQUFmQVFBQWdBMEFBQUFBQUFCZFBBQUFIeUVBQURBQkF3QUFB
QUFBQUNZQUFCOEJBQUJRUlFBQQpBQUFBQUNaTEFBQWZJUUFBZ0JRREFBQUFBQUNTSmdBQUh3RUFB
Q0JIQUFBQUFBQUFXVXNBQUI4aEFBRFlGQU1BQUFBQUFHNG5BQUFmCkFRQUF3RWtBQUFBQUFBQ0tT
d0FBSHlFQUFEQVZBd0FBQUFBQUxTZ0FBQjhCQUFCd1NnQUFBQUFBQUw1TEFBQWZJUUFBV0JVREFB
QUEKQUFCWUdRQUFId0VBQUJBckFBQUFBQUFBUFVRQUFCOGhBQUNJQ3dNQUFBQUFBQjhaQUFBZkFR
QUFjQ29BQUFBQUFBRCtRd0FBSHlFQQpBREFMQXdBQUFBQUFQQmtBQUI4QkFBRFFLZ0FBQUFBQUFC
NUVBQUFmSVFBQVlBc0RBQUFBQUFDOUVnQUFId0VBQURBZUFBQUFBQUFBCkNVRUFBQjhoQUFBZ0J3
TUFBQUFBQUxBU0FBQWZBUUFBc0IwQUFBQUFBQUQ1UUFBQUh5RUFBUEFHQXdBQUFBQUE5eGtBQUI4
QkFBQlEKTEFBQUFBQUFBTHBFQUFBZklRQUFNQXdEQUFBQUFBQWNHZ0FBSHdFQUFHQXNBQUFBQUFB
QTRrUUFBQjhoQUFCWURBTUFBQUFBQU9rYQpBQUFmQVFBQTRDOEFBQUFBQUFCclJRQUFIeUVBQURB
TkF3QUFBQUFBMXhvQUFCOEJBQUNBTHdBQUFBQUFBRlpGQUFBZklRQUFDQTBECkFBQUFBQUF2R2dB
QUh3RUFBSUFzQUFBQUFBQUErRVFBQUI4aEFBQ0FEQU1BQUFBQUFKb2FBQUFmQVFBQTRDMEFBQUFB
QUFBVFJRQUEKSHlFQUFMQU1Bd0FBQUFBQUJCc0FBQjhCQUFCZ01BQUFBQUFBQUlsRkFBQWZJUUFB
V0EwREFBQUFBQUMwR2dBQUh3RUFBQUF2QUFBQQpBQUFBTUVVQUFCOGhBQURnREFNQUFBQUFBQ1l1
QUFBZkFRQUFFRThBQUFBQUFBRDBUZ0FBSHlFQUFNZ1lBd0FBQUFBQXpUSUFBQjhCCkFBRGdWZ0FB
QUFBQUFBZFNBQUFmSVFBQWNCd0RBQUFBQUFERUxBQUFId0VBQVBCTkFBQUFBQUFBTTA0QUFCOGhB
QUFBR0FNQUFBQUEKQUQ4c0FBQWZBUUFBY0UwQUFBQUFBQUQ0VFFBQUh5RUFBTEFYQXdBQUFBQUFZ
aTBBQUI4QkFBQndUZ0FBQUFBQUFKeE9BQUFmSVFBQQplQmdEQUFBQUFBQ3BMQUFBSHdFQUFOQk5B
QUFBQUFBQUZVNEFBQjhoQUFEWUZ3TUFBQUFBQURNdEFBQWZBUUFBVUU0QUFBQUFBQUJ5ClRnQUFI
eUVBQUZBWUF3QUFBQUFBK2l3QUFCOEJBQUFnVGdBQUFBQUFBRkZPQUFBZklRQUFLQmdEQUFBQUFB
REhFd0FBSHdFQUFDQWkKQUFBQUFBQUFQRUVBQUI4aEFBQjRCd01BQUFBQUFNa2JBQUFmQVFBQVVE
RUFBQUFBQUFEbFJRQUFIeUVBQU5BTkF3QUFBQUFBbmhZQQpBQjhCQUFBZ0pnQUFBQUFBQUxWQ0FB
QWZJUUFBY0FrREFBQUFBQUFVSWdBQUh3RUFBRUErQUFBQUFBQUFZRWtBQUI4aEFBQmdFZ01BCkFB
QUFBQ2tyQUFBZkFRQUFFRTBBQUFBQUFBQmtUUUFBSHlFQUFCQVhBd0FBQUFBQUxDb0FBQjhCQUFD
QVRBQUFBQUFBQU5oTUFBQWYKSVFBQWNCWURBQUFBQUFCNkZBQUFId0VBQVBBakFBQUFBQUFBeEVF
QUFCOGhBQUJJQ0FNQUFBQUFBRGNrQUFBZkFRQUEwRDhBQUFBQQpBQUJwU2dBQUh5RUFBSGdUQXdB
QUFBQUFuU01BQUI4QkFBQXdQd0FBQUFBQUFFcEtBQUFmSVFBQVVCTURBQUFBQUFBc0JRQUFId0VB
CkFOQUhBQUFBQUFBQXJqb0FBQjhoQUFBWS93SUFBQUFBQUVBUkFBQWZBUUFBb0JnQUFBQUFBQUNN
UUFBQUh5RUFBRWdHQXdBQUFBQUEKSmdNQUFCOEJBQUN3QXdBQUFBQUFBUEU1QUFBZklRQUE2UDBD
QUFBQUFBQ3RBd0FBSHdFQUFCQUZBQUFBQUFBQU96b0FBQjhoQUFCbwovZ0lBQUFBQUFFMGpBQUFm
QVFBQUFEOEFBQUFBQUFEMFNRQUFIeUVBQUFBVEF3QUFBQUFBY1NNQUFCOEJBQUFnUHdBQUFBQUFB
QnRLCkFBQWZJUUFBS0JNREFBQUFBQUR0SWdBQUh3RUFBTUErQUFBQUFBQUExRWtBQUI4aEFBRFlF
Z01BQUFBQUFGSUlBQUFmQVFBQWtBc0EKQUFBQUFBRHNPd0FBSHlFQUFJZ0FBd0FBQUFBQTdRZ0FB
QjhCQUFEUURBQUFBQUFBQUFFOEFBQWZJUUFBdUFBREFBQUFBQUNVQ1FBQQpId0VBQUtBTkFBQUFB
QUFBZ0R3QUFCOGhBQUJZQVFNQUFBQUFBSEFMQUFBZkFRQUEwQkFBQUFBQUFBQkRQUUFBSHlFQUFD
Z0NBd0FBCkFBQUF3UllBQUI4QkFBQXdKZ0FBQUFBQUFNWkNBQUFmSVFBQW1Ba0RBQUFBQUFCSUtn
QUFId0VBQUpCTUFBQUFBQUFBOTB3QUFCOGgKQUFDWUZnTUFBQUFBQUw0UEFBQWZBUUFBSUJZQUFB
QUFBQURwUHdBQUh5RUFBRkFGQXdBQUFBQUFXUnNBQUI4QkFBQVFNUUFBQUFBQQpBTVZGQUFBZklR
QUFxQTBEQUFBQUFBQVNDUUFBSHdFQUFQQU1BQUFBQUFBQUtUd0FBQjhoQUFEZ0FBTUFBQUFBQVBz
dUFBQWZBUUFBCklGQUFBQUFBQUFCOFR3QUFIeUVBQUVnWkF3QUFBQUFBMEE4QUFCOEJBQUF3RmdB
QUFBQUFBUDQvQUFBZklRQUFlQVVEQUFBQUFBQWcKRUFBQUh3RUFBSEFXQUFBQUFBQUFPMEFBQUI4
aEFBRElCUU1BQUFBQUFBSVFBQUFmQVFBQVVCWUFBQUFBQUFBYVFBQUFIeUVBQUtBRgpBd0FBQUFB
QXNCd0FBQjhCQUFBZ01nQUFBQUFBQUhWR0FBQWZJUUFBbUE0REFBQUFBQUQ5SEFBQUh3RUFBTkF5
QUFBQUFBQUFsRVlBCkFCOGhBQURJRGdNQUFBQUFBQzBkQUFBZkFRQUFBRE1BQUFBQUFBQzBSZ0FB
SHlFQUFQQU9Bd0FBQUFBQUVRNEFBQjhCQUFCUUVnQUEKQUFBQUFLZytBQUFmSVFBQTZBTURBQUFB
QUFDZURnQUFId0VBQU1BU0FBQUFBQUFBNEQ0QUFCOGhBQUFRQkFNQUFBQUFBTVFsQUFBZgpBUUFB
OEVRQUFBQUFBQURrU2dBQUh5RUFBREFVQXdBQUFBQUFNeHdBQUI4QkFBQ1FNUUFBQUFBQUFDMUdB
QUFmSVFBQUlBNERBQUFBCkFBQ0ZNd0FBSHdFQUFIQlhBQUFBQUFBQU1sSUFBQjhoQUFDZ0hBTUFB
QUFBQU1JTkFBQWZBUUFBUUJJQUFBQUFBQUNGUGdBQUh5RUEKQU1BREF3QUFBQUFBZWlBQUFCOEJB
QURBT0FBQUFBQUFBSEpJQUFBZklRQUFTQkVEQUFBQUFBQzNJQUFBSHdFQUFCQTVBQUFBQUFBQQpt
MGdBQUI4aEFBQndFUU1BQUFBQUFONGdBQUFmQVFBQUlEa0FBQUFBQUFERlNBQUFIeUVBQUpnUkF3
QUFBQUFBWnlVQUFCOEJBQUFBClFnQUFBQUFBQUxSS0FBQWZJUUFBMkJNREFBQUFBQUJ4SVFBQUh3
RUFBQkE5QUFBQUFBQUE5VWdBQUI4aEFBREFFUU1BQUFBQUFJd2wKQUFBZkFRQUFVRUlBQUFBQUFB
REpTZ0FBSHlFQUFBQVVBd0FBQUFBQUlBc0FBQjhCQUFEQUVBQUFBQUFBQUJnOUFBQWZJUUFBQUFJ
RApBQUFBQUFEU0NnQUFId0VBQUxBUUFBQUFBQUFBN2p3QUFCOGhBQURZQVFNQUFBQUFBQUVBQUFB
UEFRQUFBQUFBQUFBQUFBQXFPUUFBCkR5RUFBUEQ4QWdBQUFBQUFlRFFBQUE4QkFBQWdXQUFBQUFB
QUFMWlNBQUFQSVFBQUdCMERBQUFBQUFES05BQUFId0VBQUtCWUFBQUEKQUFBQURsTUFBQjhoQUFC
b0hRTUFBQUFBQUFRMUFBQVBBUUFBNEZnQUFBQUFBQUJMVXdBQUR5RUFBSkFkQXdBQUFBQUFrVFFB
QUI4QgpBQUJnV0FBQUFBQUFBTkpTQUFBZklRQUFRQjBEQUFBQUFBRDlOUUFBSHdRQUFDQmlBQUFB
QUFBQWNnZ0FBQjhLZ0FBZ2ZRQUFBQUFBCkFFd0NBQUFmQ29BQTRId0FBQUFBQUFDbEFnQUFId3FB
QVBCOEFBQUFBQUFBQlFvQUFCOEtnQUJRZlFBQUFBQUFBRWNhQUFBZkNvQUEKb0gwQUFBQUFBQUJX
QkFBQUh3cUFBQUI5QUFBQUFBQUFuaEVBQUI4S2dBQndmUUFBQUFBQUFGQVJBQUFmQ29BQVlIMEFB
QUFBQUFBawpEd0FBSHdxQUFFQjlBQUFBQUFBQVlob0FBQjhLZ0FDUWZRQUFBQUFBQUxrSUFBQWZD
b0FBTUgwQUFBQUFBQUFxQmdBQUh3cUFBQkI5CkFBQUFBQUFBZ2hFQUFCOEtnQUNBZlFBQUFBQUFB
SEVzQUFBQkFBQUFBQUFBQUFBQUFBQlpMQUFBQVFBQUFBQUFBQUFBQUFBQUd3d0EKQUFFQUFBQUFB
QUFBQUFBQUFHOE1BQUFCQUFBQUFBQUFBQUFBQUFCWURBQUFBUUFBQUFBQUFBQUFBQUFBdEFzQUFB
RUFBQUFBQUFBQQpBQUFBQUI4TkFBQUJBQUFBQUFBQUFBQUFBQURoREFBQUFRQUFBQUFBQUFBQUFB
QUFxZ3dBQUFFQUFBQUFBQUFBQUFBQUFPa0xBQUFCCkFBQUFBQUFBQUFBQUFBQUlId0FBQVFBQUFB
QUFBQUFBQUFBQVNSMEFBQUVBQUFBQUFBQUFBQUFBQUJvZEFBQUJBQUFBQUFBQUFBQUEKQUFEdUhB
QUFBUUFBQUFBQUFBQUFBQUFBb3gwQUFBRUFBQUFBQUFBQUFBQUFBQWNnQUFBQkFBQUFBQUFBQUFB
QUFBQldJQUFBQVFBQQpBQUFBQUFBQUFBQUFoaHdBQUFFQUFBQUFBQUFBQUFBQUFIRWNBQUFCQUFB
QUFBQUFBQUFBQUFCeUhRQUFBUUFBQUFBQUFBQUFBQUFBCmpCMEFBQUVBQUFBQUFBQUFBQUFBQUYw
ZEFBQUJBQUFBQUFBQUFBQUFBQUMxSFFBQUFRQUFBQUFBQUFBQUFBQUFleVlBQUFFQUFBQUEKQUFB
QUFBQUFBS3NIQUFBQkFBQUFBQUFBQUFBQUFBRGxCd0FBQVFBQUFBQUFBQUFBQUFBQWRnY0FBQUVB
QUFBQUFBQUFBQUFBQUJzbgpBQUFCQUFBQUFBQUFBQUFBQUFBSkp3QUFBUUFBQUFBQUFBQUFBQUFB
TENjQUFBRUFBQUFBQUFBQUFBQUFBUDhFQUFBQkFBQUFBQUFBCkFBQUFBQURUQkFBQUFRQUFBQUFB
QUFBQUFBQUE2UUFBQUFFQUFBQUFBQUFBQUFBQUFGQW1BQUFCQUFBQUFBQUFBQUFBQUFCNkpBQUEK
QVFBQUFBQUFBQUFBQUFBQVJDY0FBQUVBQUFBQUFBQUFBQUFBQUFJSEFBQUJBQUFBQUFBQUFBQUFB
QURFSkFBQUFRQUFBQUFBQUFBQQpBQUFBclRVQUFBRUFBQUFBQUFBQUFBQUFBRXNNQUFBQkFBQUFB
QUFBQUFBQUFBQlNBd0FBQVFBQUFBQUFBQUFBQUFBQWh3TUFBQUVBCkFBQUFBQUFBQUFBQUFERUVB
QUFCQUFBQUFBQUFBQUFBQUFENEF3QUFBUUFBQUFBQUFBQUFBQUFBL0FJQUFBRUFBQUFBQUFBQUFB
QUEKQUxBQkFBQUJBQUFBQUFBQUFBQUFBQURGQXdBQUFRQUFBQUFBQUFBQUFBQUFjUVlBQUFFQUFB
QUFBQUFBQUFBQUFHc21BQUFCQUFBQQpBQUFBQUFBQUFBRGtKZ0FBQVFBQUFBQUFBQUFBQUFBQTl5
WUFBQUVBQUFBQUFBQUFBQUFBQUdBa0FBQUJBQUFBQUFBQUFBQUFBQUJYCkVBQUFBUUFBQUFBQUFB
QUFBQUFBSGlRQUFBRUFBQUFBQUFBQUFBQUFBT2tQQUFBQkFBQUFBQUFBQUFBQUFBQVpBUUFBQVFB
QUFBQUEKQUFBQUFBQUE1QndBQUFFQUFBQUFBQUFBQUFBQUFNVXZBQUFCQUFBQUFBQUFBQUFBQUFB
MkpRQUFBUUFBQUFBQUFBQUFBQUFBV3ljQQpBQUVBQUFBQUFBQUFBQUFBQUlNQ0FBQUJBQUFBQUFB
QUFBQUFBQUJEQVFBQUFRQUFBQUFBQUFBQUFBQUFiQUVBQUFFQUFBQUFBQUFBCkFBQUFBRkFsQUFB
QkFBQUFBQUFBQUFBQUFBRHFLZ0FBQVFBQUFBQUFBQUFBQUFBQXpDb0FBQUVBQUFBQUFBQUFBQUFB
QUtrckFBQUIKQUFBQUFBQUFBQUFBQUFBTkFnQUFBUUFBQUFBQUFBQUFBQUFBelNJQUFBRUFBQUFB
QUFBQUFBQUFBUFlyQUFBQkFBQUFBQUFBQUFBQQpBQUFLSXdBQUFRQUFBQUFBQUFBQUFBQUFLaU1B
QUFFQUFBQUFBQUFBQUFBQUFBZ3FBQUFCQUFBQUFBQUFBQUFBQUFEQUp3QUFBUUFBCkFBQUFBQUFB
QUFBQVV3WUFBQUVBQUFBQUFBQUFBQUFBQUJNb0FBQUJBQUFBQUFBQUFBQUFBQUN0S1FBQUFRQUFB
QUFBQUFBQUFBQUEKZ1NnQUFBRUFBQUFBQUFBQUFBQUFBS2dvQUFBQkFBQUFBQUFBQUFBQUFBRDRG
Z0FBQVFBQUFBQUFBQUFBQUFBQUN5RUFBQUVBQUFBQQpBQUFBQUFBQUFOOFdBQUFCQUFBQUFBQUFB
QUFBQUFBbUlRQUFBUUFBQUFBQUFBQUFBQUFBUGlFQUFBRUFBQUFBQUFBQUFBQUFBTFVUCkFBQUJB
QUFBQUFBQUFBQUFBQUNoRXdBQUFRQUFBQUFBQUFBQUFBQUFEQllBQUFFQUFBQUFBQUFBQUFBQUFM
QVZBQUFCQUFBQUFBQUEKQUFBQUFBQUZFUUFBQVFBQUFBQUFBQUFBQUFBQWlCQUFBQUVBQUFBQUFB
QUFBQUFBQUxZVUFBQUJBQUFBQUFBQUFBQUFBQUN0SHdBQQpBUUFBQUFBQUFBQUFBQUFBZnhZQUFB
RUFBQUFBQUFBQUFBQUFBSmNaQUFBQkFBQUFBQUFBQUFBQUFBQU5HUUFBQVFBQUFBQUFBQUFBCkFB
QUFjaFVBQUFFQUFBQUFBQUFBQUFBQUFCZ1JBQUFCQUFBQUFBQUFBQUFBQUFEV0dBQUFBUUFBQUFB
QUFBQUFBQUFBM1JBQUFBRUEKQUFBQUFBQUFBQUFBQUt3V0FBQUJBQUFBQUFBQUFBQUFBQUFSRndB
QUFRQUFBQUFBQUFBQUFBQUFoeE1BQUFFQUFBQUFBQUFBQUFBQQpBSlFVQUFBQkFBQUFBQUFBQUFB
QUFBREhGQUFBQVFBQUFBQUFBQUFBQUFBQThCUUFBQUVBQUFBQUFBQUFBQUFBQVBJUUFBQUJBQUFB
CkFBQUFBQUFBQUFBY0ZBQUFBUUFBQUFBQUFBQUFBQUFBV1JjQUFBRUFBQUFBQUFBQUFBQUFBUElW
QUFBQkFBQUFBQUFBQUFBQUFBQS8KRmdBQUFRQUFBQUFBQUFBQUFBQUFKeE1BQUFFQUFBQUFBQUFB
QUFBQUFEVVRBQUFCQUFBQUFBQUFBQUFBQUFCcEV3QUFBUUFBQUFBQQpBQUFBQUFBQU16RUFBQUVB
QUFBQUFBQUFBQUFBQVA4U0FBQUJBQUFBQUFBQUFBQUFBQUFVRXdBQUFRQUFBQUFBQUFBQUFBQUFl
Qk1BCkFBRUFBQUFBQUFBQUFBQUFBRUVWQUFBQkFBQUFBQUFBQUFBQUFBQjFId0FBQVFBQUFBQUFB
QUFBQUFBQVN4TUFBQUVBQUFBQUFBQUEKQUFBQUFGb1RBQUFCQUFBQUFBQUFBQUFBQUFCOEVBQUFB
UUFBQUFBQUFBQUFBQUFBb0NBQUFBRUFBQUFBQUFBQUFBQUFBRWdlQUFBQgpBQUFBQUFBQUFBQUFB
QURTRVFBQUFRQUFBQUFBQUFBQUFBQUFhQjhBQUFFQUFBQUFBQUFBQUFBQUFQVXlBQUFCQUFBQUFB
QUFBQUFBCkFBQW9Nd0FBQVFBQUFBQUFBQUFBQUFBQTlETUFBQUVBQUFBQUFBQUFBQUFBQUZNZkFB
QUJBQUFBQUFBQUFBQUFBQUJrTXdBQUFRQUEKQUFBQUFBQUFBQUFBNWhNQUFBRUFBQUFBQUFBQUFB
QUFBQmtTQUFBQkFBQUFBQUFBQUFBQUFBQ1JId0FBQVFBQUFBQUFBQUFBQUFBQQpyek1BQUFFQUFB
QUFBQUFBQUFBQUFGb0pBQUFCQUFBQUFBQUFBQUFBQUFCNUpRQUFBUUFBQUFBQUFBQUFBQUFBaGlF
QUFBRUFBQUFBCkFBQUFBQUFBQUZvaEFBQUJBQUFBQUFBQUFBQUFBQUN5SlFBQUFRQUFBQUFBQUFB
QUFBQUF4UkFBQUFFQUFBQUFBQUFBQUFBQUFLUVEKQUFBQkFBQUFBQUFBQUFBQUFBQXdFUUFBQVFB
QUFBQUFBQUFBQUFBQUtSZ0FBQUVBQUFBQUFBQUFBQUFBQU84WEFBQUJBQUFBQUFBQQpBQUFBQUFD
K0dBQUFBUUFBQUFBQUFBQUFBQUFBY3hnQUFBRUFBQUFBQUFBQUFBQUFBRVlPQUFBQkFBQUFBQUFB
QUFBQUFBRG9FUUFBCkFRQUFBQUFBQUFBQUFBQUFCeElBQUFFQUFBQUFBQUFBQUFBQUFBRWlBQUFC
QUFBQUFBQUFBQUFBQUFCb0RnQUFBUUFBQUFBQUFBQUEKQUFBQVJSd0FBQUVBQUFBQUFBQUFBQUFB
QUdRSUFBQUJBQUFBQUFBQUFBQUFBQUNsQ0FBQUFRQUFBQUFBQUFBQUFBQUF0aUVBQUFFQQpBQUFB
QUFBQUFBQUFBSjBOQUFBQkFBQUFBQUFBQUFBQUFBQmlEUUFBQVFBQUFBQUFBQUFBQUFBQTRnMEFB
QUVBQUFBQUFBQUFBQUFBCkFGTUpBQUFCQUFBQUFBQUFBQUFBQUFEYkRnQUFBUUFBQUFBQUFBQUFB
QUFBcENVQUFBRUFBQUFBQUFBQUFBQUFBSFFSQUFBQkFBQUEKQUFBQUFBQUFBQUNkRUFBQUFRQUFB
QUFBQUFBQUFBQUF1QW9BQUFFQUFBQUFBQUFBQUFBQUFFZ0xBQUFCQUFBQUFBQUFBQUFBQUFENQpD
Z0FBQVFBQUFBQUFBQUFBQUFBQWtnb0FBQUVBQUFBQUFBQUFBQUFBQUNZNEFBQUJBQUFBQUFBQUFB
QUFBQUFNT0FBQUFRQUFBQUFBCkFBQUFBQUFBV1RnQUFBRUFBQUFBQUFBQUFBQUFBQUUzQUFBQkFB
QUFBQUFBQUFBQUFBQ1NOd0FBQVFBQUFBQUFBQUFBQUFBQXFqZ0EKQUFFQUFBQUFBQUFBQUFBQUFI
NDJBQUFCQUFBQUFBQUFBQUFBQUFCOE53QUFBUUFBQUFBQUFBQUFBQUFBK3pnQUFBRUFBQUFBQUFB
QQpBQUFBQUpNNEFBQUJBQUFBQUFBQUFBQUFBQUEwTndBQUFRQUFBQUFBQUFBQUFBQUFQamdBQUFF
QUFBQUFBQUFBQUFBQUFORTNBQUFCCkFBQUFBQUFBQUFBQUFBQ3hOd0FBQVFBQUFBQUFBQUFBQUFB
QW9EWUFBQUVBQUFBQUFBQUFBQUFBQUMwMkFBQUJBQUFBQUFBQUFBQUEKQUFBWE53QUFBUUFBQUFB
QUFBQUFBQUFBMkRnQUFBRUFBQUFBQUFBQUFBQUFBR1UzQUFBQkFBQUFBQUFBQUFBQUFBREJPQUFB
QVFBQQpBQUFBQUFBQUFBQUFGRFlBQUFFQUFBQUFBQUFBQUFBQUFOMDJBQUFCQUFBQUFBQUFBQUFB
QUFCSk53QUFBUUFBQUFBQUFBQUFBQUFBClR6WUFBQUVBQUFBQUFBQUFBQUFBQUhjNEFBQUJBQUFB
QUFBQUFBQUFBQUFUT1FBQUFRQUFBQUFBQUFBQUFBQUE1amNBQUFFQUFBQUEKQUFBQUFBQUFBT2NZ
QUFBQkFBQUFBQUFBQUFBQUFBQXdCd0FBQVFBQUFBQUFBQUFBQUFBQWpBY0FBQUVBQUFBQUFBQUFB
QUFBQUVJSApBQUFCQUFBQUFBQUFBQUFBQUFBWUJ3QUFBUUFBQUFBQUFBQUFBQUFBT2dnQUFBRUFB
QUFBQUFBQUFBQUFBTnNaQUFBQkFBQUFBQUFBCkFBQUFBQUFMSEFBQUFRQUFBQUFBQUFBQUFBQUFS
Z1VBQUFFQUFBQUFBQUFBQUFBQUFJc3VBQUFCQUFBQUFBQUFBQUFBQUFDREtnQUEKQVFBQUFBQUFB
QUFBQUFBQUdDVUFBQUVBQUFBQUFBQUFBQUFBQUlraUFBQUJBQUFBQUFBQUFBQUFBQUJpSWdBQUFR
QUFBQUFBQUFBQQpBQUFBVGpRQUFBRUFBQUFBQUFBQUFBQUFBQmtJQUFBQkFBQUFBQUFBQUFBQUFB
Qk1LUUFBQVFBQUFBQUFBQUFBQUFBQU9oc0FBQUVBCkFBQUFBQUFBQUFBQUFQQW9BQUFCQUFBQUFB
QUFBQUFBQUFBd0pnQUFBUUFBQUFBQUFBQUFBQUFBd0NZQUFBRUFBQUFBQUFBQUFBQUEKQUY4ckFB
QUJBQUFBQUFBQUFBQUFBQUFzQWdBQUFRQUFBQUFBQUFBQUFBQUFueWNBQUFFQUFBQUFBQUFBQUFB
QUFGd29BQUFCQUFBQQpBQUFBQUFBQUFBQzdCZ0FBQVFBQUFBQUFBQUFBQUFBQUpBRUFBQUVBQUFB
QUFBQUFBQUFBQUlrQkFBQUJBQUFBQUFBQUFBQUFBQUQ5CkFBQUFBUUFBQUFBQUFBQUFBQUFBZUM4
QUFBRUFBQUFBQUFBQUFBQUFBSW9iQUFBQkFBQUFBQUFBQUFBQUFBQ25Hd0FBQVFBQUFBQUEKQUFB
QUFBQUFSeElBQUFFQUFBQUFBQUFBQUFBQUFKVVNBQUFCQUFBQUFBQUFBQUFBQUFCc01nQUFBUUFB
QUFBQUFBQUFBQUFBTGpJQQpBQUVBQUFBQUFBQUFBQUFBQU9BdUFBQUJBQUFBQUFBQUFBQUFBQURS
RWdBQUFRQUFBQUFBQUFBQUFBQUFyVElBQUFFQUFBQUFBQUFBCkFBQUFBRUl1QUFBQkFBQUFBQUFB
QUFBQUFBQWtDUUFBQVFBQUFBQUFBQUFBQUFBQXV6WUFBQUVBQUFBQUFBQUFBQUFBQUNRQUFBQUIK
QUFBQUFBQUFBQUFBQUFEYUFRQUFBUUFBQUFBQUFBQUFBQUFBVVFBQUFBRUFBQUFBQUFBQUFBQUFB
RUl3QUFBQkFBQUFBQUFBQUFBQQpBQUNsTUFBQUFRQUFBQUFBQUFBQUFBQUFLREFBQUFFQUFBQUFB
QUFBQUFBQUFHUUFBQUFCQUFBQUFBQUFBQUFBQUFCMkd3QUFBUUFBCkFBQUFBQUFBQUFBQXZTMEFB
QUVBQUFBQUFBQUFBQUFBQVAwdEFBQUJBQUFBQUFBQUFBQUFBQUFXTGdBQUFRQUFBQUFBQUFBQUFB
QUEKemkwQUFBRUFBQUFBQUFBQUFBQUFBT2d0QUFBQkFBQUFBQUFBQUFBQUFBREZFUUFBQVFBQUFB
QUFBQUFBQUFBQW9Td0FBQUVBQUFBQQpBQUFBQUFBQUFHa0tBQUFCQUFBQUFBQUFBQUFBQUFBNENn
QUFBUUFBQUFBQUFBQUFBQUFBVkRBQUFBRUFBQUFBQUFBQUFBQUFBTDBYCkFBQUJBQUFBQUFBQUFB
QUFBQURGRndBQUFRQUFBQUFBQUFBQUFBQUFBQklBQUFFQUFBQUFBQUFBQUFBQUFNd1JBQUFCQUFB
QUFBQUEKQUFBQUFBRHdIUUFBQVFBQUFBQUFBQUFBQUFBQURCNEFBQUVBQUFBQUFBQUFBQUFBQUpR
QUFBQUJBQUFBQUFBQUFBQUFBQUJPS3dBQQpBUUFBQUFBQUFBQUFBQUFBaEFBQUFBRUFBQUFBQUFB
QUFBQUFBSmtrQUFBQkFBQUFBQUFBQUFBQUFBRC9Jd0FBQVFBQUFBQUFBQUFBCkFBQUF1U01BQUFF
QUFBQUFBQUFBQUFBQUFOd2pBQUFCQUFBQUFBQUFBQUFBQUFEMkpBQUFBUUFBQUFBQUFBQUFBQUFB
dndjQUFBRUEKQUFBQUFBQUFBQUFBQU9NR0FBQUJBQUFBQUFBQUFBQUFBQUJmQndBQUFRQUFBQUFB
QUFBQUFBQUFxUUFBQUFFQUFBQUFBQUFBQUFBQQpBTWdBQUFBQkFBQUFBQUFBQUFBQUFBQnNNUUFB
QVFBQUFBQUFBQUFBQUFBQTV5Y0FBQUVBQUFBQUFBQUFBQUFBQUpndkFBQUJBQUFBCkFBQUFBQUFB
QUFCYkx3QUFBUUFBQUFBQUFBQUFBQUFBTHl3QUFBRUFBQUFBQUFBQUFBQUFBTllJQUFBQkFBQUFB
QUFBQUFBQUFBQ1MKQ0FBQUFRQUFBQUFBQUFBQUFBQUF2UkVBQUFFQUFBQUFBQUFBQUFBQUFJY01B
QUFCQUFBQUFBQUFBQUFBQUFCUkNnQUFBUUFBQUFBQQpBQUFBQUFBQUlBb0FBQUVBQUFBQUFBQUFB
QUFBQVBFSkFBQUJBQUFBQUFBQUFBQUFBQURNSEFBQUFRQUFBQUFBQUFBQUFBQUFsZ1FBCkFBRUFB
QUFBQUFBQUFBQUFBTzQxQUFBQkFBQUFBQUFBQUFBQUFBRGZDUUFBQVFBQUFBQUFBQUFBQUFBQVhn
RUFBQUVBQUFBQUFBQUEKQUFBQUFHbzJBQUFCQUFBQUFBQUFBQUFBQUFDR0dnQUFBUUFBQUFBQUFB
QUFBQUFBZWdvQUFBRUFBQUFBQUFBQUFBQUFBUFVmQUFBUgpBQUFEQ0FBQUFBQUFBQURmTEFBQUFR
QUFBQUFBQUFBQUFBQUFneXdBQUFFQUFBQUFBQUFBQUFBQUFCZ3RBQUFCQUFBQUFBQUFBQUFBCkFB
RDVMd0FBQVFBQUFBQUFBQUFBQUFBQVdpMEFBQUVBQUFBQUFBQUFBQUFBQUpBdEFBQUJBQUFBQUFB
QUFBQUFBQUFBWDE5RFJraFUKVkZCTlpYTnpZV2RsVTJWMFVtVnpjRzl1YzJWUWNtOTRlVlZTVEFC
ZlgxOWhjM05sY25SZmNuUnVBRjlYUzBOeVpXRjBaVkJ5YVhaaApkR1ZUZEc5eVlXZGxVMlZ6YzJs
dmJnQmZYMTl6ZEdGamExOWphR3RmWjNWaGNtUUFYMTlyUTBaVlVreFRkRzl5WVdkbFUyVnpjMmx2
CmJrbHpVSEpwZG1GMFpRQmZhME5HUW05dmJHVmhibFJ5ZFdVQVgydERSa0ZzYkc5allYUnZja1Js
Wm1GMWJIUUFYMnREUmxSNWNHVkUKYVdOMGFXOXVZWEo1UzJWNVEyRnNiRUpoWTJ0ekFGOXJRMFpV
ZVhCbFJHbGpkR2x2Ym1GeWVWWmhiSFZsUTJGc2JFSmhZMnR6QUY5RApSa1JwWTNScGIyNWhjbmxE
Y21WaGRHVUFYMTlEUmxWU1RGTjBiM0poWjJWVFpYTnphVzl1UTNKbFlYUmxBRjlEUmxKbGJHVmhj
MlVBClgxOURSbFZTVEZOMGIzSmhaMlZUWlhOemFXOXVRMjl3ZVVOaFkyaGxBRjlEUmxWU1RFTmhZ
MmhsVTJWMFJHbHphME5oY0dGamFYUjUKQUY5dlltcGpYMjF6WjFObGJtUUFYME5HVlZKTVEyRmph
R1ZUWlhSTlpXMXZjbmxEWVhCaFkybDBlUUJmWDBOR1ZWSk1VM1J2Y21GbgpaVk5sYzNOcGIyNURi
M0I1UTI5dmEybGxVM1J2Y21GblpRQmZRMFpJVkZSUVEyOXZhMmxsVTNSdmNtRm5aVk5sZEVOdmIy
dHBaVUZqClkyVndkRkJ2YkdsamVRQmZYMTl6ZEdGamExOWphR3RmWm1GcGJBQmZWMHREYjNCNVVt
VnhkV1Z6ZEZkcGRHaFRkRzl5WVdkbFUyVnoKYzJsdmJnQmZRMFpWVWt4U1pYRjFaWE4wUTNKbFlY
UmxUWFYwWVdKc1pVTnZjSGtBWDE5RFJsVlNURkpsY1hWbGMzUlRaWFJUZEc5eQpZV2RsVTJWemMy
bHZiZ0JzWDI5aWFtTmZiWE5uVTJWdVpGOW1hWGgxY0Y5aGJHeHZZd0JmVjB0RFlXTm9aV1JTWlhO
d2IyNXpaVVp2CmNsSmxjWFZsYzNRQVgwTkdWVkpNUTJGamFHVkRiM0I1VW1WemNHOXVjMlZHYjNK
U1pYRjFaWE4wQUd4ZmIySnFZMTl0YzJkVFpXNWsKWDJacGVIVndYMkYxZEc5eVpXeGxZWE5sQUY5
WFMwTnZjSGxJVkZSUVEyOXZhMmxsVTNSdmNtRm5aUUJmVjB0SFpYUklWRlJRUTI5dgphMmxsUVdO
alpYQjBVRzlzYVdONUFGOURSa2hVVkZCRGIyOXJhV1ZUZEc5eVlXZGxSMlYwUTI5dmEybGxRV05q
WlhCMFVHOXNhV041CkFGOVhTMU5sZEVoVVZGQkRiMjlyYVdWQlkyTmxjSFJRYjJ4cFkza0FYMWRM
U0ZSVVVFTnZiMnRwWlhNQVgwTkdTRlJVVUVOdmIydHAKWlZOMGIzSmhaMlZEYjNCNVEyOXZhMmxs
Y3dCZlYwdElWRlJRUTI5dmEybGxjMFp2Y2xWU1RBQmZRMFpJVkZSUVEyOXZhMmxsVTNSdgpjbUZu
WlVOdmNIbERiMjlyYVdWelJtOXlWVkpNQUY5WFMxTmxkRWhVVkZCRGIyOXJhV1Z6Um05eVZWSk1B
RjlEUmtoVVZGQkRiMjlyCmFXVlRkRzl5WVdkbFUyVjBRMjl2YTJsbGN3QmZWMHRFWld4bGRHVklW
RlJRUTI5dmEybGxBRjlEUmtoVVZGQkRiMjlyYVdWVGRHOXkKWVdkbFJHVnNaWFJsUTI5dmEybGxB
RjlYUzBSbGJHVjBaVUZzYkVoVVZGQkRiMjlyYVdWekFGOURSa2hVVkZCRGIyOXJhV1ZUZEc5eQpZ
V2RsUkdWc1pYUmxRV3hzUTI5dmEybGxjd0JzWDI5aWFtTmZiWE5uVTJWdVpGOW1hWGgxY0Y5amIz
VnVkRUo1Ulc1MWJXVnlZWFJwCmJtZFhhWFJvVTNSaGRHVmZiMkpxWldOMGMxOWpiM1Z1ZEY4QVgy
OWlhbU5mWlc1MWJXVnlZWFJwYjI1TmRYUmhkR2x2YmdCZlYwdEQKYjNCNVEwWk1iMk5oYkdsNllY
UnBiMjVRY21WbVpYSnlaV1JPWVcxbEFGOURSa0oxYm1Sc1pVZGxkRXh2WTJGc2FYcGhkR2x2Ymts
dQpabTlHYjNKTWIyTmhiR2w2WVhScGIyNEFYME5HUW5WdVpHeGxRMjl3ZVV4dlkyRnNhWHBoZEds
dmJrWnZja3h2WTJGc2FYcGhkR2x2CmJrbHVabThBWDFkTFUyVjBSR1ZtWVhWc2RFeHZZMkZzYVhw
aGRHbHZiZ0JmWDBOR1FuVnVaR3hsVTJWMFJHVm1ZWFZzZEV4dlkyRnMKYVhwaGRHbHZiZ0JmVjB0
SFpYUlFjbVZtWlhKeVpXUkZlSFJsYm5OcGIyNUdiM0pOU1UxRlZIbHdaUUJmVjB0SFpYUkZlSFJs
Ym5OcApiMjV6Um05eVRVbE5SVlI1Y0dVQVgxZExSMlYwVFVsTlJWUjVjR1ZHYjNKRmVIUmxibk5w
YjI0QVgxZExSMlYwVGxOVlVreFNaWE53CmIyNXpaVXhoYzNSTmIyUnBabWxsWkVSaGRHVUFYMWRM
UjJWMFRsTlZVa3hTWlhOd2IyNXpaVVp5WlhOb2JtVnpjMHhwWm1WMGFXMWwKQUY5WFMwTnZjSGxP
VTFWU1RGSmxjM0J2Ym5ObFUzUmhkSFZ6VEdsdVpRQnNYMjlpYW1OZmJYTm5VMlZ1WkY5bWFYaDFj
Rjl5WlhOdwpiMjVrYzFSdlUyVnNaV04wYjNKZkFGOURSbFZTVEZKbGMzQnZibk5sUjJWMFNGUlVV
RkpsYzNCdmJuTmxBRjlEUmtoVVZGQk5aWE56CllXZGxRMjl3ZVZKbGMzQnZibk5sVTNSaGRIVnpU
R2x1WlFCZlYwdERiM0I1VGxOVlVreFNaWE53YjI1elpVTmxjblJwWm1sallYUmwKUTJoaGFXNEFY
MTlEUmxWU1RGSmxjM0J2Ym5ObFIyVjBVMU5NUTJWeWRHbG1hV05oZEdWRGIyNTBaWGgwQUY5clEw
WlRkSEpsWVcxUQpjbTl3WlhKMGVWTlRURkJsWlhKVWNuVnpkQUJmUTBaRWFXTjBhVzl1WVhKNVIy
VjBWbUZzZFdVQVgxTmxZMVJ5ZFhOMFIyVjBWSEoxCmMzUlNaWE4xYkhRQVgxTmxZMVJ5ZFhOMFJY
WmhiSFZoZEdVQVgxTmxZMVJ5ZFhOMFIyVjBRMlZ5ZEdsbWFXTmhkR1ZEYjNWdWRBQmYKYTBOR1ZI
bHdaVUZ5Y21GNVEyRnNiRUpoWTJ0ekFGOURSa0Z5Y21GNVEzSmxZWFJsVFhWMFlXSnNaUUJmVTJW
alZISjFjM1JIWlhSRApaWEowYVdacFkyRjBaVUYwU1c1a1pYZ0FYME5HUVhKeVlYbEJjSEJsYm1S
V1lXeDFaUUJmYTBOR1UzUnlaV0Z0VUhKdmNHVnlkSGxUClUweFFaV1Z5UTJWeWRHbG1hV05oZEdW
ekFGOURSa0Z5Y21GNVEzSmxZWFJsUTI5d2VRQmZWMHRIWlhSWFpXSkVaV1poZFd4MFEwWlQKZEhK
cGJtZEZibU52WkdsdVp3QmZYME5HVTNSeWFXNW5SMlYwVlhObGNrUmxabUYxYkhSRmJtTnZaR2x1
WndCZlZFVkRSMlYwVjJWaQpWR1Y0ZEVWdVkyOWthVzVuY3dCZlYwdFRaWFJOWlhSaFpHRjBZVlZT
VEFCZlRVUkpkR1Z0UTNKbFlYUmxBR3hmYjJKcVkxOXRjMmRUClpXNWtYMlpwZUhWd1gyRmtaRTlp
YW1WamRGOEFYMnROUkVsMFpXMVhhR1Z5WlVaeWIyMXpBRjlOUkVsMFpXMVRaWFJCZEhSeWFXSjEK
ZEdVQWJGOXZZbXBqWDIxeloxTmxibVJmWm1sNGRYQmZjbVZzWldGelpRQmZhMDFFU1hSbGJVUnZk
MjVzYjJGa1pXUkVZWFJsQUY5WApTMU5sZEU1VFZWSk1RMjl1Ym1WamRHbHZia1JsWm1WeWMwTmhi
R3hpWVdOcmN3QmZWMHRUYUc5M1MyVjVRVzVrVFdGcGJnQmZYMDVZClUyaHZkMHRsZVVGdVpFMWhh
VzRBWDFkTFJHbHpZV0pzWlVOSFJHVm1aWEp5WldSVmNHUmhkR1Z6QUY5T1UwRndjQUJmUTBkVFUy
VjAKUTI5dWJtVmpkR2x2YmxCeWIzQmxjblI1QUY5WFMwNVRWVkpNVUhKdmRHOWpiMnhEYkdGemMw
WnZjbEpsY1hWbGMzUUFYMWRMVTJWMApUbE5WVWt4U1pYRjFaWE4wVTJodmRXeGtRMjl1ZEdWdWRG
TnVhV1ptQUY5WFMwRmtkbUZ1WTJWRVpXWmhkV3gwUW5WMGRHOXVVSFZzCmMyVkJibWx0WVhScGIy
NEFYMjlpYW1OZmJHOXZhMVZ3UTJ4aGMzTUFYMjlpYW1OZllYTnphV2R1WDJkc2IySmhiQUJzWDI5
aWFtTmYKYlhOblUyVnVaRjltYVhoMWNGOWpiR0Z6Y3dCZmIySnFZMTloYkd4dlkyRjBaVU5zWVhO
elVHRnBjZ0JmWTJ4aGMzTmZaMlYwU1c1egpkR0Z1WTJWTlpYUm9iMlFBWDIxbGRHaHZaRjluWlhS
VWVYQmxSVzVqYjJScGJtY0FYMk5zWVhOelgyRmtaRTFsZEdodlpBQmZiMkpxClkxOXlaV2RwYzNS
bGNrTnNZWE56VUdGcGNnQmZUbE5hWlhKdlVtVmpkQUJmVjB0TmIzVnpaVTF2ZG1Wa1RtOTBhV1pw
WTJGMGFXOXUKQUY5T1UwMXZkWE5sVFc5MlpXUk9iM1JwWm1sallYUnBiMjRBWDFkTFYybHVaRzkz
VjJsc2JFOXlaR1Z5VDI1VFkzSmxaVzVPYjNScApabWxqWVhScGIyNEFYMDVUVjJsdVpHOTNWMmxz
YkU5eVpHVnlUMjVUWTNKbFpXNU9iM1JwWm1sallYUnBiMjRBWDFkTFYybHVaRzkzClYybHNiRTl5
WkdWeVQyWm1VMk55WldWdVRtOTBhV1pwWTJGMGFXOXVBRjlPVTFkcGJtUnZkMWRwYkd4UGNtUmxj
azltWmxOamNtVmwKYms1dmRHbG1hV05oZEdsdmJnQmZWMHRUWlhST1UxZHBibVJ2ZDFOb2IzVnNa
RkJ2YzNSRmRtVnVkRTV2ZEdsbWFXTmhkR2x2Ym5NQQpYMWRMUjJWMFFWaFVaWGgwVFdGeWEyVnlW
SGx3WlVsRUFGOUJXRlJsZUhSTllYSnJaWEpIWlhSVWVYQmxTVVFBWDFkTFIyVjBRVmhVClpYaDBU
V0Z5YTJWeVVtRnVaMlZVZVhCbFNVUUFYMEZZVkdWNGRFMWhjbXRsY2xKaGJtZGxSMlYwVkhsd1pV
bEVBRjlYUzBOeVpXRjAKWlVGWVZHVjRkRTFoY210bGNnQmZRVmhVWlhoMFRXRnlhMlZ5UTNKbFlY
UmxBRjlYUzBkbGRFSjVkR1Z6Um5KdmJVRllWR1Y0ZEUxaApjbXRsY2dCZlEwWkhaWFJVZVhCbFNV
UUFYMEZZVkdWNGRFMWhjbXRsY2tkbGRFeGxibWQwYUFCZlFWaFVaWGgwVFdGeWEyVnlSMlYwClFu
bDBaVkIwY2dCZmJXVnRZM0I1QUY5WFMwTnlaV0YwWlVGWVZHVjRkRTFoY210bGNsSmhibWRsQUY5
QldGUmxlSFJOWVhKclpYSlMKWVc1blpVTnlaV0YwWlFCZlYwdERiM0I1UVZoVVpYaDBUV0Z5YTJW
eVVtRnVaMlZUZEdGeWRBQmZRVmhVWlhoMFRXRnlhMlZ5VW1GdQpaMlZEYjNCNVUzUmhjblJOWVhK
clpYSUFYMWRMUTI5d2VVRllWR1Y0ZEUxaGNtdGxjbEpoYm1kbFJXNWtBRjlCV0ZSbGVIUk5ZWEpy
ClpYSlNZVzVuWlVOdmNIbEZibVJOWVhKclpYSUFYMWRMUVdOalpYTnphV0pwYkdsMGVVaGhibVJz
WlVadlkzVnpRMmhoYm1kbFpBQmYKVGxOQlkyTmxjM05wWW1sc2FYUjVTR0Z1Wkd4bFJtOWpkWE5E
YUdGdVoyVmtBRjlYUzBOeVpXRjBaVUZZVlVsRmJHVnRaVzUwVW1WbQpBRjlPVTBGalkyVnpjMmxp
YVd4cGRIbERjbVZoZEdWQldGVkpSV3hsYldWdWRGSmxaZ0JmVjB0VmJuSmxaMmx6ZEdWeVZXNXBj
WFZsClNXUkdiM0pGYkdWdFpXNTBBRjlPVTBGalkyVnpjMmxpYVd4cGRIbFZibkpsWjJsemRHVnlW
VzVwY1hWbFNXUkdiM0pWU1VWc1pXMWwKYm5RQVgxZExVM0JsWldOb1UzbHVkR2hsYzJselIyVjBS
R1ZtWVhWc2RGWnZhV05sU1dSbGJuUnBabWxsY2tadmNreHZZMkZzWlFCZgpRMjl3ZVZOd1pXVmph
Rk41Ym5Sb1pYTnBjMVp2YVdObGMwWnZjazF2WkdVQVgwZGxkRWxrWlc1MGFXWnBaWEpUZEhKcGJt
ZEdiM0pRCmNtVm1aWEp5WldSV2IybGpaVWx1VEdsemRGZHBkR2hNYjJOaGJHVUFYMWRMVTNCbFpX
Tm9VM2x1ZEdobGMybHpSMlYwVm05cFkyVkoKWkdWdWRHbG1hV1Z5Y3dCZlYwdEJXRkpsWjJsemRH
VnlVbVZ0YjNSbFFYQndBRjlPVTBOc1lYTnpSbkp2YlZOMGNtbHVad0JmVjB0QgpXRkpsYlc5MFpW
UnZhMlZ1Um05eVJXeGxiV1Z1ZEFCZlYwdEJXRkpsYlc5MFpVVnNaVzFsYm5SR2IzSlViMnRsYmdC
c1gyOWlhbU5mCmJYTm5VMlZ1WkY5bWFYaDFjRjlzWlc1bmRHZ0FYMWRMUVZoU1pXMXZkR1ZRY205
alpYTnpTV1JsYm5ScFptbGxjZ0JmVjB0QldGTmwKZEZkcGJtUnZkMFp2Y2xKbGJXOTBaVVZzWlcx
bGJuUUFYMWRMUVZoU1pXZHBjM1JsY2xKbGJXOTBaVkJ5YjJObGMzTUFYMWRMUVZoSgpibWwwYVdG
c2FYcGxSV3hsYldWdWRGZHBkR2hRY21WelpXNTBaWEpRYVdRQVgxZExVMlYwVlhCR2IyNTBRMkZq
YUdVQVgxZExVMmxuCmJtRnNRMFpTWldGa1UzUnlaV0Z0Ulc1a0FGOURSbEpsWVdSVGRISmxZVzFU
YVdkdVlXeEZkbVZ1ZEFCZlYwdFRhV2R1WVd4RFJsSmwKWVdSVGRISmxZVzFJWVhOQ2VYUmxjd0Jm
VjB0VGFXZHVZV3hEUmxKbFlXUlRkSEpsWVcxRmNuSnZjZ0JmVjB0RGNtVmhkR1ZEZFhOMApiMjFE
UmxKbFlXUlRkSEpsWVcwQVgwTkdVbVZoWkZOMGNtVmhiVU55WldGMFpRQmZWMHRFY21GM1JtOWpk
WE5TYVc1bkFGOURSMUpsClkzUmFaWEp2QUY5RFIwTnZiblJsZUhSSFpYUkNZWE5sUTFSTkFGOU9V
MHh2WndCZlEwZFRkSGxzWlVOeVpXRjBaVVp2WTNWelVtbHUKWjFkcGRHaERiMnh2Y2dCZlEwZFRk
SGxzWlVOeVpXRjBaVVp2WTNWelVtbHVad0JmUTBkRGIyNTBaWGgwVTJGMlpVZFRkR0YwWlFCZgpR
MGREYjI1MFpYaDBVMlYwVTNSNWJHVUFYME5IUTI5dWRHVjRkRVpwYkd4UVlYUm9BRjlEUjBOdmJu
UmxlSFJTWlhOMGIzSmxSMU4wCllYUmxBRjlEUjFOMGVXeGxVbVZzWldGelpRQmZWMHRUWlhSRWNt
Rm5TVzFoWjJVQWJGOXZZbXBqWDIxeloxTmxibVJmWm1sNGRYQmYKYVhOTGFXNWtUMlpEYkdGemMx
OEFYMDVUUlhGMVlXeFRhWHBsY3dCc1gyOWlhbU5mYlhOblUyVnVaRjltYVhoMWNGOXlaWFJoYVc0
QQpiRjl2WW1walgyMXpaMU5sYm1SZlptbDRkWEJmYVhOR2JHbHdjR1ZrQUY5dFlXeHNiMk1BWDJK
amIzQjVBRjltY21WbEFGOURSMU5PClpYZFNaV2RwYjI1WGFYUm9VbVZqZEFCZlEyOXlaVVJ5WVdk
SFpYUkRkWEp5Wlc1MFJISmhad0JmWm14dmIzSUFYME52Y21WRWNtRm4KVTJWMFNXMWhaMlVBWDBO
SFUxSmxiR1ZoYzJWU1pXZHBiMjRBWDFkTFJISmhkMEpsZW1Wc1pXUlVaWGgwUm1sbGJHUkRaV3hz
QUY5ZgpUbE5FY21GM1EyRnlZbTl1VkdobGJXVkNaWHBsYkFCZlYwdEVjbUYzVkdWNGRFWnBaV3hr
UTJWc2JFWnZZM1Z6VW1sdVp3QmZWMHRFCmNtRjNRbVY2Wld4bFpGUmxlSFJCY21WaEFGOWZUbE5F
Y21GM1EyRnlZbTl1VkdobGJXVk1hWE4wUW05NEFGOVhTMUJ2Y0hWd1RXVnUKZFFCZlYwdFFiM0Ix
Y0VOdmJuUmxlSFJOWlc1MUFGOWZUbE5RYjNCVmNFTmhjbUp2YmsxbGJuVXpBRjlYUzBSeVlYZERZ
WEJ6VEc5agphMGx1WkdsallYUnZjZ0JmUTBkUVlYUm9RM0psWVhSbFRYVjBZV0pzWlFCZlEwZFFZ
WFJvVFc5MlpWUnZVRzlwYm5RQVgwTkhVR0YwCmFFRmtaRUZ5WXdCZlEwZFFZWFJvUVdSa1RHbHVa
VlJ2VUc5cGJuUUFYME5IVW1WamRFZGxkRTFoZUZnQVgwTkhVbVZqZEVkbGRFMXAKYmxrQVgwTkhV
R0YwYUVGa1pGQmhkR2dBWDBOSFVHRjBhRkpsYkdWaGMyVUFYME5IUTI5dWRHVjRkRk5sZEZKSFFr
WnBiR3hEYjJ4dgpjZ0JmUTBkRGIyNTBaWGgwUW1WbmFXNVFZWFJvQUY5RFIwTnZiblJsZUhSQlpH
UlFZWFJvQUY5WFMxTmxibVJWYzJWeVEyaGhibWRsClRtOTBhV1pwWTJGMGFXOXVjd0JmUTBkVFVt
Vm5hWE4wWlhKT2IzUnBabmxRY205akFGOVhTMGRsZEVkc2VYQm9WSEpoYm5ObWIzSnQKWldSQlpI
WmhibU5sY3dCZlEwZEdiMjUwUjJWMFIyeDVjR2hCWkhaaGJtTmxjMFp2Y2xOMGVXeGxBRjlYUzBk
bGRFWnZiblJKYmt4aApibWQxWVdkbFJtOXlVbUZ1WjJVQVgxZExSMlYwUm05dWRFbHVUR0Z1WjNW
aFoyVkdiM0pEYUdGeVlXTjBaWElBWDFkTFUyVjBRMGRHCmIyNTBVbVZ1WkdWeWFXNW5UVzlrWlFC
ZlEwZERiMjUwWlhoMFUyVjBVMmh2ZFd4a1FXNTBhV0ZzYVdGelJtOXVkSE1BWDBOSFEyOXUKZEdW
NGRFZGxkRU5VVFFCZlEwZERiMjUwWlhoMFUyVjBVMmh2ZFd4a1UzVmljR2w0Wld4UWIzTnBkR2x2
YmtadmJuUnpBRjlEUjBOdgpiblJsZUhSVFpYUlRhRzkxYkdSVGRXSndhWGhsYkZGMVlXNTBhWHBs
Um05dWRITUFYMWRMUTBkUVlYUjBaWEp1UTNKbFlYUmxWMmwwCmFFbHRZV2RsUVc1a1ZISmhibk5t
YjNKdEFGOURSMUJoZEhSbGNtNURjbVZoZEdWWGFYUm9TVzFoWjJVeUFGOVhTME5IUTI5dWRHVjQK
ZEZKbGMyVjBRMnhwY0FCZlEwZERiMjUwWlhoMFVtVnpaWFJEYkdsd0FGOVhTME5IUTI5dWRHVjRk
RVJ5WVhkelYybDBhRU52Y25KbApZM1JUYUdGa2IzZFBabVp6WlhSekFGOURSME52Ym5SbGVIUkVj
bUYzYzFkcGRHaERiM0p5WldOMFUyaGhaRzkzVDJabWMyVjBjd0JmClYwdEpUMU4xY21aaFkyVkRi
MjUwWlhoMFEzSmxZWFJsQUY5RFIwbFBVM1Z5Wm1GalpVTnZiblJsZUhSRGNtVmhkR1VBWDBOSFEy
OXUKZEdWNGRFTnNaV0Z5VW1WamRBQmZWMHRKVDFOMWNtWmhZMlZEYjI1MFpYaDBRM0psWVhSbFNX
MWhaMlVBWDBOSFNVOVRkWEptWVdObApRMjl1ZEdWNGRFTnlaV0YwWlVsdFlXZGxBRjlYUzBOSFEy
OXVkR1Y0ZEVkbGRGTm9iM1ZzWkZOdGIyOTBhRVp2Ym5SekFGOURSME52CmJuUmxlSFJIWlhSVGFH
OTFiR1JUYlc5dmRHaEdiMjUwY3dCZlYwdFRaWFJDWVhObFExUk5BRjlEUjBOdmJuUmxlSFJUWlhS
Q1lYTmwKUTFSTkFGOVhTMU5sZEZCaGRIUmxjbTVRYUdGelpVbHVWWE5sY2xOd1lXTmxBRjlEUjBG
bVptbHVaVlJ5WVc1elptOXliVWx1ZG1WeQpkQUJmUTBkQlptWnBibVZVY21GdWMyWnZjbTFEYjI1
allYUUFYME5IUTI5dWRHVjRkRk5sZEZCaGRIUmxjbTVRYUdGelpRQmZWMHRIClpYUlZjMlZ5Vkc5
Q1lYTmxRMVJOQUY5WFMwZGxkRWRzZVhCb2MwWnZja05vWVhKaFkzUmxjbk1BWDBOSFJtOXVkRWRs
ZEVkc2VYQm8KYzBadmNsVnVhV05vWVhKekFGOURWRVp2Ym5SSFpYUldaWEowYVdOaGJFZHNlWEJv
YzBadmNrTm9ZWEpoWTNSbGNuTUFYMWRMUjJWMApWbVZ5ZEdsallXeEhiSGx3YUhOR2IzSkRhR0Z5
WVdOMFpYSnpBRjlrYkc5d1pXNEFYMlJzYzNsdEFGOVhTME55WldGMFpVTlVUR2x1ClpWZHBkR2hW
Ym1sRGFHRnlVSEp2ZG1sa1pYSUFYME5VVEdsdVpVTnlaV0YwWlZkcGRHaFZibWxEYUdGeVVISnZk
bWxrWlhJQVgxZEwKUTFSR2IyNTBWSEpoYm5ObWIzSnRSMng1Y0doekFGOURWRVp2Ym5SVWNtRnVj
Mlp2Y20xSGJIbHdhSE1BWDFkTFEzSmxZWFJsUTFSVQplWEJsYzJWMGRHVnlWMmwwYUZWdWFVTm9Z
WEpRY205MmFXUmxja0Z1WkU5d2RHbHZibk1BWDBOVVZIbHdaWE5sZEhSbGNrTnlaV0YwClpWZHBk
R2hWYm1sRGFHRnlVSEp2ZG1sa1pYSkJibVJQY0hScGIyNXpBRjlYUzBOVVVuVnVSMlYwU1c1cGRH
bGhiRUZrZG1GdVkyVUEKWDBOVVVuVnVSMlYwU1c1cGRHbGhiRUZrZG1GdVkyVUFYME5IUTI5dWRH
VjRkRkpsZEdGcGJnQmZUMEpLUTE5SlZrRlNYeVJmVGxORApSMU5EYjI1MFpYaDBMbDlqWjNORGIy
NTBaWGgwQUY5RFIwTnZiblJsZUhSU1pXeGxZWE5sQUY5WFMwNVRWMmx1Wkc5M1QzWmxjbkpwClpH
VkRSME52Ym5SbGVIUUFYMWRMVGxOWGFXNWtiM2RTWlhOMGIzSmxRMGREYjI1MFpYaDBBRjlYUzA1
VFYybHVaRzkzVFdGclpVSnYKZEhSdmJVTnZjbTVsY25OVGNYVmhjbVVBWDFkTFEwZERiMjUwWlho
MFNYTkNhWFJ0WVhCRGIyNTBaWGgwQUY5RFIwTnZiblJsZUhSSApaWFJVZVhCbEFGOVhTMGRsZEZk
b1pXVnNSWFpsYm5SRVpXeDBZWE1BWDFkTFFYQndWbVZ5YzJsdmJrTm9aV05yVEdWemMxUm9ZVzRB
ClgxOURSa0Z3Y0ZabGNuTnBiMjVEYUdWamEweGxjM05VYUdGdUFGOVhTMUZVU1c1amJIVmtaVTl1
YkhsTmIyUmxjbTVOWldScFlVWnAKYkdWVWVYQmxjd0JmVjB0UlZFMXZkbWxsUkdGMFlWSmhkR1VB
WDFkTFVWUk5iM1pwWlUxaGVGUnBiV1ZNYjJGa1pXUUFiRjl2WW1wagpYMjF6WjFObGJtUmZabWw0
ZFhCZlkyOTFiblFBYkY5dlltcGpYMjF6WjFObGJtUmZabWw0ZFhCZmIySnFaV04wUVhSSmJtUmxl
RjhBClgyOWlhbU5mYlhOblUyVnVaRjl6ZEhKbGRBQmZWMHRSVkUxdmRtbGxUV0Y0VkdsdFpWTmxa
V3RoWW14bEFGOVhTMUZVVFc5MmFXVlcKYVdWM1UyVjBSSEpoZDFONWJtTm9jbTl1YjNWemJIa0FY
MWRMVVZSTmIzWnBaVWRsZEZSNWNHVUFYMWRMVVZSTmIzWnBaVVJwYzJGaQpiR1ZEYjIxd2IyNWxi
blFBWDFkTFVWUk5iM1pwWlZKbGMyOXNkbVZrVlZKTUFGOVhTME52Y0hsR2IzVnVaR0YwYVc5dVEy
RmphR1ZFCmFYSmxZM1J2Y25rQVgxOURSbFZTVEVOaFkyaGxRMjl3ZVVOaFkyaGxSR2x5WldOMGIz
SjVBRjlYUzFObGRGWnBjMmxpYkdWQmNIQnMKYVdOaGRHbHZiazVoYldVQVgxOXJURk5FYVhOd2JH
RjVUbUZ0WlV0bGVRQmZYMHhUUjJWMFEzVnljbVZ1ZEVGd2NHeHBZMkYwYVc5dQpRVk5PQUY5ZlRG
TlRaWFJCY0hCc2FXTmhkR2x2YmtsdVptOXliV0YwYVc5dVNYUmxiUUJmVjB0VFpYUkJjSEJzYVdO
aGRHbHZia2x1ClptOXliV0YwYVc5dVNYUmxiUUJmVjB0RGIzQjVRblZ1Wkd4bFZWSk1SbTl5Ulho
bFkzVjBZV0pzWlZWU1RBQmZYME5HUW5WdVpHeGwKUTI5d2VVSjFibVJzWlZWU1RFWnZja1Y0WldO
MWRHRmliR1ZWVWt3QVgxZExWR2hsYldWRWNtRjNWSEpoWTJzQVgwaEpWR2hsYldWRQpjbUYzVkhK
aFkyc0FYMWRMU1c1cGRHbGhiR2w2WlZKbGJtUmxjbE5sY25abGNnQmZRMEZTWlc1a1pYSlRaWEoy
WlhKVGRHRnlkQUJmClEwRlNaVzVrWlhKVFpYSjJaWEpIWlhSUWIzSjBBRjlYUzAxaGEyVlNaVzVr
WlhKTVlYbGxjZ0JmVjB0VGIyWjBkMkZ5WlVOQlVtVnUKWkdWeVpYSkRjbVZoZEdVQVgyOWlhbU5m
WVhOemFXZHVYM04wY205dVowTmhjM1FBWDBOR1VtVjBZV2x1QUY5RFFWSmxibVJsY2tOSApUbVYz
QUY5WFMxTnZablIzWVhKbFEwRlNaVzVrWlhKbGNrUmxjM1J5YjNrQVgwTkJVbVZ1WkdWeVEwZEVa
WE4wY205NUFGOVhTMU52ClpuUjNZWEpsUTBGU1pXNWtaWEpsY2xKbGJtUmxjZ0JmUTBGRGRYSnla
VzUwVFdWa2FXRlVhVzFsQUY5RFFWSmxibVJsY2xWd1pHRjAKWlVKbFoybHVBRjlEUVZKbGJtUmxj
bFZ3WkdGMFpVRmtaRU52Ym5SbGVIUUFYME5CVW1WdVpHVnlWWEJrWVhSbFFXUmtVbVZqZEFCZgpR
MEZTWlc1a1pYSkRSMUpsYm1SbGNnQmZRMEZTWlc1a1pYSlZjR1JoZEdWR2FXNXBjMmdBWDFkTFEw
RkRiMjUwWlhoMFRXRnJaVkpsCmJXOTBaVmRwZEdoVFpYSjJaWEpRYjNKMEFGOXJRMEZEYjI1MFpY
aDBRMGxHYVd4MFpYSkNaV2hoZG1sdmNnQmZhME5CUTI5dWRHVjQKZEZCdmNuUk9kVzFpWlhJQVgx
ZExRMEZEYjI1MFpYaDBUV0ZyWlZKbGJXOTBaVVp2Y2xkcGJtUnZkMU5sY25abGNnQmZRMGRUVFdG
cApia052Ym01bFkzUnBiMjVKUkFCZlYwdERRVU52Ym5SbGVIUkpiblpoYkdsa1lYUmxBRjlYUzBO
QlEyOXVkR1Y0ZEVkbGRFTnZiblJsCmVIUkpaQUJmVjB0RFFVTnZiblJsZUhSVFpYUk1ZWGxsY2dC
ZlYwdERRVU52Ym5SbGVIUkhaWFJNWVhsbGNnQmZWMHREUVVOdmJuUmwKZUhSVFpYUkRiMnh2Y2xO
d1lXTmxBRjlYUzBOQlEyOXVkR1Y0ZEVkbGRFTnZiRzl5VTNCaFkyVUFYMWRMUkdWemRISnZlVkps
Ym1SbApjbWx1WjFKbGMyOTFjbU5sY3dCZlEwRkNZV05yYVc1blUzUnZjbVZEYjJ4c1pXTjBRbXh2
WTJ0cGJtY0FYMWRMUTBGTVlYbGxja1Z1CmRXMWxjbUYwWlZKbFkzUnpRbVZwYm1kRWNtRjNibGRw
ZEdoQ2JHOWphd0JmUTBkVFVtVm5hVzl1Ulc1MWJXVnlZWFJ2Y2dCZlEwZFQKVG1WNGRGSmxZM1FB
WDBOSFVtVmpkRUZ3Y0d4NVFXWm1hVzVsVkhKaGJuTm1iM0p0QUY5RFIxTlNaV3hsWVhObFVtVm5h
Vzl1Ulc1MQpiV1Z5WVhSdmNnQmZRMGREYjI1MFpYaDBSMlYwUTJ4cGNFSnZkVzVrYVc1blFtOTRB
RjlYUzBOQlVtVnVaR1Z5WlhKQlpHUkRhR0Z1CloyVk9iM1JwWm1sallYUnBiMjVQWW5ObGNuWmxj
Z0JmYjJKelpYSjJaWEpEYjI1MFpYaDBjd0JmUTBGU1pXNWtaWEpPYjNScFptbGoKWVhScGIyNUJa
R1JQWW5ObGNuWmxjZ0JmVjB0RFFWSmxibVJsY21WeVVtVnRiM1psUTJoaGJtZGxUbTkwYVdacFky
RjBhVzl1VDJKegpaWEoyWlhJQVgwTkJVbVZ1WkdWeVRtOTBhV1pwWTJGMGFXOXVVbVZ0YjNabFQy
SnpaWEoyWlhJQVgxZExWMmx1Wkc5M1FtOTFibU5sClFXNXBiV0YwYVc5dVEyOXVkR1Y0ZEVOeVpX
RjBaUUJmUTBkVFIyVjBWMmx1Wkc5M1ZISmhibk5tYjNKdEFGOVhTMWRwYm1SdmQwSnYKZFc1alpV
RnVhVzFoZEdsdmJrTnZiblJsZUhSRVpYTjBjbTk1QUY5WFMxZHBibVJ2ZDBKdmRXNWpaVUZ1YVcx
aGRHbHZibE5sZEVGdQphVzFoZEdsdmJsQnliMmR5WlhOekFGOURSMEZtWm1sdVpWUnlZVzV6Wm05
eWJVbGtaVzUwYVhSNUFGOURSMEZtWm1sdVpWUnlZVzV6ClptOXliVk5qWVd4bEFGOURSMEZtWm1s
dVpWUnlZVzV6Wm05eWJWUnlZVzV6YkdGMFpRQmZRMGRUVTJWMFYybHVaRzkzVkhKaGJuTm0KYjNK
dEFGOVhTMWRwYm1SdmQxTmxkRU5zYVhCU1pXTjBBRjlEUjFOVFpYUlhhVzVrYjNkRGJHbHdVMmho
Y0dVQVgxZExRM0psWVhSbApUVWxIVTJWeWRtVnlVMjkxY21ObEFGOU5VMGhEY21WaGRHVk5TVWRU
WlhKMlpYSlRiM1Z5WTJVQVgxZExSMlYwU1c1d2RYUlFZVzVsCmJGZHBibVJ2ZDFOMGVXeGxBRjlY
UzBkbGRFNVRSWFpsYm5STFpYbERhR0Z5QUY5SFpYUkZkbVZ1ZEZCaGNtRnRaWFJsY2dCZlYwdFQK
WlhSRFFVRnVhVzFoZEdsdmJsWmhiSFZsUm5WdVkzUnBiMjRBWDFkTFNXNXBkR2xoYkdsNlpVMWhl
R2x0ZFcxSVZGUlFRMjl1Ym1WagpkR2x2YmtOdmRXNTBVR1Z5U0c5emRBQmZYME5HVG1WMGQyOXlh
MGhVVkZCRGIyNXVaV04wYVc5dVEyRmphR1ZUWlhSTWFXMXBkQUJmClgwTkdUbVYwZDI5eWEwaFVW
RkJEYjI1dVpXTjBhVzl1UTJGamFHVkhaWFJNYVcxcGRBQmZWMHRIWlhSSVZGUlFVR2x3Wld4cGJt
bHUKWjFCeWFXOXlhWFI1QUY5RFJsVlNURkpsY1hWbGMzUkhaWFJTWlhGMVpYTjBVSEpwYjNKcGRI
a0FYMWRMVTJWMFNGUlVVRkJwY0dWcwphVzVwYm1kUWNtbHZjbWwwZVFCZlEwWlZVa3hTWlhGMVpY
TjBVMlYwVW1WeGRXVnpkRkJ5YVc5eWFYUjVBRjlEUmxWU1RGSmxjWFZsCmMzUlRaWFJUYUc5MWJH
UlFhWEJsYkdsdVpVaFVWRkFBWDFkTFUyVjBTRlJVVUZCcGNHVnNhVzVwYm1kTllYaHBiWFZ0VUhK
cGIzSnAKZEhrQVgxZExVMlYwU0ZSVVVGQnBjR1ZzYVc1cGJtZE5hVzVwYlhWdFJtRnpkRXhoYm1W
UWNtbHZjbWwwZVFCZlYwdFRaWFJEVDA1TwpSVU5VVUhKdmVIbEdiM0pUZEhKbFlXMEFYMnREUmxO
MGNtVmhiVkJ5YjNCbGNuUjVRMDlPVGtWRFZGQnliM2g1U0c5emRBQmZhME5HClUzUnlaV0Z0VUhK
dmNHVnlkSGxEVDA1T1JVTlVVSEp2ZUhsUWIzSjBBRjlyUTBaVGRISmxZVzFRY205d1pYSjBlVU5Q
VGs1RlExUlEKY205NGVRQmZRMFpTWldGa1UzUnlaV0Z0VTJWMFVISnZjR1Z5ZEhrQVgxZExVMlYw
UTA5T1RrVkRWRkJ5YjNoNVFYVjBhRzl5YVhwaApkR2x2YmtadmNsTjBjbVZoYlFCZlEwWlNaV0Zr
VTNSeVpXRnRRMjl3ZVZCeWIzQmxjblI1QUY5RFJrUnBZM1JwYjI1aGNubERjbVZoCmRHVk5kWFJo
WW14bFEyOXdlUUJmYTBOR1UzUnlaV0Z0VUhKdmNHVnlkSGxEVDA1T1JVTlVRV1JrYVhScGIyNWhi
RWhsWVdSbGNuTUEKWDBOR1JHbGpkR2x2Ym1GeWVWTmxkRlpoYkhWbEFGOVhTME52Y0hsRFQwNU9S
VU5VVUhKdmVIbFNaWE53YjI1elpRQmZhME5HVTNSeQpaV0Z0VUhKdmNHVnlkSGxEVDA1T1JVTlVV
bVZ6Y0c5dWMyVUFYMTlEUmtoVVZGQk5aWE56WVdkbFUyVjBVbVZ6Y0c5dWMyVlZVa3dBClgwTkdV
M1J5YVc1blEzSmxZWFJsVjJsMGFFWnZjbTFoZEFCZlEwWlZVa3hEY21WaGRHVlhhWFJvVTNSeWFX
NW5BRjlYUzFkcGJtUnYKZDFObGRFRnNjR2hoQUY5RFIxTlRaWFJYYVc1a2IzZEJiSEJvWVFCZlYw
dFhhVzVrYjNkVFpYUlRZMkZzWldSR2NtRnRaUUJmVGxORgpjWFZoYkZKbFkzUnpBRjlEUjFOVFpY
UlhhVzVrYjNkWFlYSndBRjlYUzFONWJtTlRkWEptWVdObFZHOVdhV1YzQUY5WFMwVnVZV0pzClpW
TmxkSFJwYm1kRGRYSnpiM0pYYUdWdVNXNUNZV05yWjNKdmRXNWtBRjlYUzA1VFZWSk1VbVZ4ZFdW
emRFTnlaV0YwWlZObGNtbGgKYkdsNllXSnNaVkpsY0hKbGMyVnVkR0YwYVc5dUFGOWZRMFpWVWt4
U1pYRjFaWE4wUTNKbFlYUmxRWEpqYUdsMlpVeHBjM1FBWDBORwpSR2xqZEdsdmJtRnllVU55WldG
MFpVMTFkR0ZpYkdVQVgwTkdUblZ0WW1WeVEzSmxZWFJsQUY5RFJrRnNiRzlqWVhSdmNrUmxZV3hz
CmIyTmhkR1VBWDFkTFRsTlZVa3hTWlhGMVpYTjBSbkp2YlZObGNtbGhiR2w2WVdKc1pWSmxjSEps
YzJWdWRHRjBhVzl1QUY5ZlEwWlYKVWt4U1pYRjFaWE4wUTNKbFlYUmxSbkp2YlVGeVkyaHBkbVZN
YVhOMEFGOURSazUxYldKbGNrZGxkRlI1Y0dWSlJBQmZRMFpPZFcxaQpaWEpIWlhSV1lXeDFaUUJm
UTBaQmNuSmhlVWRsZEZSNWNHVkpSQUJmUTBaQmNuSmhlVWRsZEVOdmRXNTBBRjlEUmtGeWNtRjVS
MlYwClZtRnNkV1ZCZEVsdVpHVjRBRjlEUmtScFkzUnBiMjVoY25sSFpYUlVlWEJsU1VRQVgwTkdV
M1J5YVc1blIyVjBWSGx3WlVsRUFGOVgKUzA1VFZWSk1VbVZ6Y0c5dWMyVkRjbVZoZEdWVFpYSnBZ
V3hwZW1GaWJHVlNaWEJ5WlhObGJuUmhkR2x2YmdCZlgwTkdWVkpNVW1WegpjRzl1YzJWRGNtVmhk
R1ZCY21Ob2FYWmxUR2x6ZEFCZlEwWlZVa3hTWlhOd2IyNXpaVWRsZEVWNGNHVmpkR1ZrUTI5dWRH
VnVkRXhsCmJtZDBhQUJmYTBOR1ZWSk1VbVZ6Y0c5dWMyVkZlSEJsWTNSbFpFTnZiblJsYm5STVpX
NW5kR2hWYm10dWIzZHVBRjlEUmxWU1RGSmwKYzNCdmJuTmxSMlYwVFVsTlJWUjVjR1VBWDFkTFRs
TlZVa3hTWlhOd2IyNXpaVVp5YjIxVFpYSnBZV3hwZW1GaWJHVlNaWEJ5WlhObApiblJoZEdsdmJn
QmZYME5HVlZKTVVtVnpjRzl1YzJWRGNtVmhkR1ZHY205dFFYSmphR2wyWlV4cGMzUUFYME5HVlZK
TVVtVnpjRzl1CmMyVlRaWFJGZUhCbFkzUmxaRU52Ym5SbGJuUk1aVzVuZEdnQVgwTkdWVkpNVW1W
emNHOXVjMlZUWlhSTlNVMUZWSGx3WlFCZlYwdEQKUmxWU1RFTmhZMmhsUkdWc1pYUmxTRzl6ZEU1
aGJXVnpTVzVRWlhKemFYTjBaVzUwVTNSdmNtVUFYMTlEUmxWU1RFTmhZMmhsUkdWcwpaWFJsU0c5
emRFNWhiV1Z6U1c1UVpYSnphWE4wWlc1MFUzUnZjbVVBWDFkTFEwWlZVa3hEWVdOb1pVTnZjSGxC
Ykd4SWIzTjBUbUZ0ClpYTkpibEJsY25OcGMzUmxiblJUZEc5eVpRQmZYME5HVlZKTVEyRmphR1ZE
YjNCNVFXeHNTRzl6ZEU1aGJXVnpTVzVRWlhKemFYTjAKWlc1MFUzUnZjbVVBWDFkTFIyVjBRMFpW
VWt4U1pYTndiMjV6WlUxSlRVVlVlWEJsQUY5WFMwZGxkRU5HVlZKTVVtVnpjRzl1YzJWVgpVa3dB
WDBOR1ZWSk1VbVZ6Y0c5dWMyVkhaWFJWVWt3QVgxZExSMlYwUTBaVlVreFNaWE53YjI1elpVaFVW
RkJTWlhOd2IyNXpaUUJmClYwdERiM0I1UTBaVlVreFNaWE53YjI1elpWTjFaMmRsYzNSbFpFWnBi
R1Z1WVcxbEFGOURSbFZTVEZKbGMzQnZibk5sUTI5d2VWTjEKWjJkbGMzUmxaRVpwYkdWdVlXMWxB
RjlYUzFObGRFTkdWVkpNVW1WemNHOXVjMlZOU1UxRlZIbHdaUUJmVjB0VFpYUlNaWEYxWlhOMApV
M1J2Y21GblpWTmxjM05wYjI0QVgxZExSMlYwUkdWbVlYVnNkRWhVVkZCRGIyOXJhV1ZUZEc5eVlX
ZGxBRjlmUTBaSVZGUlFRMjl2CmEybGxVM1J2Y21GblpVZGxkRVJsWm1GMWJIUUFYMWRMUTI5d2VV
TnlaV1JsYm5ScFlXeEdjbTl0UTBaUVpYSnphWE4wWlc1MFUzUnYKY21GblpRQmZRMFpWVWt4RGNt
VmtaVzUwYVdGc1UzUnZjbUZuWlVOeVpXRjBaUUJmUTBaVlVreERjbVZrWlc1MGFXRnNVM1J2Y21G
bgpaVU52Y0hsRVpXWmhkV3gwUTNKbFpHVnVkR2xoYkVadmNsQnliM1JsWTNScGIyNVRjR0ZqWlFC
ZlYwdFRaWFJEUmxWU1RGSmxjWFZsCmMzUlRhRzkxYkdSRGIyNTBaVzUwVTI1cFptWUFYMnREUmtK
dmIyeGxZVzVHWVd4elpRQmZYME5HVlZKTVVtVnhkV1Z6ZEZObGRGQnkKYjNSdlkyOXNVSEp2Y0dW
eWRIa0FYMWRMUTBaVlVreFNaWEYxWlhOMFEyOXdlVWhVVkZCU1pYRjFaWE4wUW05a2VWQmhjblJ6
QUY5RApSbFZTVEZKbGNYVmxjM1JEYjNCNVNGUlVVRkpsY1hWbGMzUkNiMlI1VUdGeWRITUFYMWRM
UTBaVlVreFNaWEYxWlhOMFUyVjBTRlJVClVGSmxjWFZsYzNSQ2IyUjVVR0Z5ZEhNQVgwTkdWVkpN
VW1WeGRXVnpkRk5sZEVoVVZGQlNaWEYxWlhOMFFtOWtlVkJoY25SekFGOVgKUzBOSlIyVjBVa2RD
UVRoR2IzSnRZWFFBWDJ0RFNVWnZjbTFoZEZKSFFrRTRBRjlYUzFOaGJtUmliM2hGZUhSbGJuTnBi
MjVEY21WaApkR1VBWDBGUVVGOVRRVTVFUWs5WVgxSkZRVVJmVjFKSlZFVUFYMEZRVUY5VFFVNUVR
azlZWDFKRlFVUUFYM05oYm1SaWIzaGZaWGgwClpXNXphVzl1WDJsemMzVmxYMlpwYkdVQVgyTmhi
R3h2WXdCZlYwdFRZVzVrWW05NFJYaDBaVzV6YVc5dVJHVnpkSEp2ZVFCZlYwdFQKWVc1a1ltOTRS
WGgwWlc1emFXOXVRMjl1YzNWdFpRQmZjMkZ1WkdKdmVGOWxlSFJsYm5OcGIyNWZZMjl1YzNWdFpR
QmZWMHRUWVc1awpZbTk0UlhoMFpXNXphVzl1U1c1MllXeHBaR0YwWlFCZmMyRnVaR0p2ZUY5bGVI
Umxibk5wYjI1ZmNtVnNaV0Z6WlFCZlYwdFRZVzVrClltOTRSWGgwWlc1emFXOXVSMlYwVTJWeWFX
RnNhWHBsWkVadmNtMWhkQUJmYzNSeWJHVnVBRjlYUzFOaGJtUmliM2hGZUhSbGJuTnAKYjI1RGNt
VmhkR1ZHY205dFUyVnlhV0ZzYVhwbFpFWnZjbTFoZEFCZmMzUnlibVIxY0FCZlYwdEZibUZpYkdW
VFlXNWtZbTk0VTNSNQpiR1ZHYVd4bFVYVmhjbUZ1ZEdsdVpRQmZYM0YwYmw5d2NtOWpYMkZzYkc5
akFGOWZjWFJ1WDNCeWIyTmZhVzVwZEY5M2FYUm9YM05sCmJHWUFYMTl4ZEc1ZmNISnZZMTl6WlhS
ZlpteGhaM01BWDE5eGRHNWZjSEp2WTE5aGNIQnNlVjkwYjE5elpXeG1BRjlmY1hSdVgzQnkKYjJO
ZlpuSmxaUUJmVjB0U1pXTnZiVzFsYm1SbFpGTmpjbTlzYkdWeVUzUjViR1VBWDE5T1UxSmxZMjl0
YldWdVpHVmtVMk55YjJ4cwpaWEpUZEhsc1pRQmZWMHRGZUdWamRYUmhZbXhsVjJGelRHbHVhMlZr
VDI1UGNrSmxabTl5WlZOdWIzZE1aVzl3WVhKa0FGOWZRMFpGCmVHVmpkWFJoWW14bFRHbHVhMlZr
VDI1UGNrRm1kR1Z5QUY5WFMwVjRkSEpoWTNSWGIzSmtSR1ZtYVc1cGRHbHZibFJ2YTJWdVVtRnUK
WjJWR2NtOXRRMjl1ZEdWNGRIVmhiRk4wY21sdVp3QmZYMDVUVUdGMGFFWnZjbE41YzNSbGJVWnlZ
VzFsZDI5eWF3QmZWMHRUYUc5MwpWMjl5WkVSbFptbHVhWFJwYjI1WGFXNWtiM2NBWDFkTFNHbGta
VmR2Y21SRVpXWnBibWwwYVc5dVYybHVaRzkzQUY5WFMwTnZjSGxFClpXWmhkV3gwVTJWaGNtTm9V
SEp2ZG1sa1pYSkVhWE53YkdGNVRtRnRaUUJmYTBOR1YyVmlVMlZ5ZG1salpYTlVlWEJsVjJWaVUy
VmgKY21Ob0FGOWZRMFpYWldKVFpYSjJhV05sYzBOdmNIbFFjbTkyYVdSbGNrbHVabThBWDJ0RFJs
ZGxZbE5sY25acFkyVnpVSEp2ZG1sawpaWEpFWldaaGRXeDBSR2x6Y0d4aGVVNWhiV1ZMWlhrQVgw
TkdVM1J5YVc1blEzSmxZWFJsUTI5d2VRQmZWMHRCVmtGemMyVjBVbVZ6CmIyeDJaV1JWVWt3QVgx
ZExRM1Z5YzI5eUFGOXpkSEpqYlhBQVgxZExRM0psWVhSbFZrMVFjbVZ6YzNWeVpVUnBjM0JoZEdO
b1QyNU4KWVdsdVVYVmxkV1VBWDE5a2FYTndZWFJqYUY5emIzVnlZMlZmZEhsd1pWOTJiUUJmWDJS
cGMzQmhkR05vWDIxaGFXNWZjUUJmWkdsegpjR0YwWTJoZmMyOTFjbU5sWDJOeVpXRjBaUUJmVjB0
RGNtVmhkR1ZOWlcxdmNubFRkR0YwZFhOUWNtVnpjM1Z5WlVOeWFYUnBZMkZzClJHbHpjR0YwWTJo
UGJrMWhhVzVSZFdWMVpRQmZYMlJwYzNCaGRHTm9YM052ZFhKalpWOTBlWEJsWDIxbGJXOXllWE4w
WVhSMWN3QmYKVjB0RmVHVmpkWFJoWW14bFYyRnpUR2x1YTJWa1QyNVBja0psWm05eVpVeHBiMjRB
WDFkTFJYaGxZM1YwWVdKc1pWZGhjMHhwYm10bApaRTl1VDNKQ1pXWnZjbVZOYjNWdWRHRnBia3hw
YjI0QVgxZExRMGRRWVhSb1FXUmtVbTkxYm1SbFpGSmxZM1FBWDBOSFVHRjBhRUZrClpGSnZkVzVr
WldSU1pXTjBBRjlYUzBOR1ZWSk1VbVZ4ZFdWemRFRnNiRzkzUVd4c1VHOXpkRU5oWTJocGJtY0FY
MnREUmxWU1RGSmwKY1hWbGMzUkJiR3h2ZDBGc2JGQlBVMVJEWVdOb2FXNW5BRjlYUzBacGJIUmxj
a2x6UW5WbVptVnlhVzVuQUY5WFMwWnBiSFJsY2xkaApjMEpzYjJOclpXUUFYMWRMUm1sc2RHVnlR
V1JrUkdGMFlRQmZWMHRHYVd4MFpYSkVZWFJoUTI5dGNHeGxkR1VBWDFkTFJtbHNkR1Z5ClNYTk5Z
VzVoWjJWa1UyVnpjMmx2YmdCZlYwdEdhV3gwWlhKRGNtVmhkR1ZKYm5OMFlXNWpaUUJmVjB0T1Uw
VnNZWE4wYVdORVpXeDAKWVVadmNsUnBiV1ZFWld4MFlRQmZYMDVUUld4aGMzUnBZMFJsYkhSaFJt
OXlWR2x0WlVSbGJIUmhBRjlYUzA1VFJXeGhjM1JwWTBSbApiSFJoUm05eVVtVmliM1Z1WkVSbGJI
UmhBRjlmVGxORmJHRnpkR2xqUkdWc2RHRkdiM0pTWldKdmRXNWtSR1ZzZEdFQVgxZExUbE5TClpX
SnZkVzVrUkdWc2RHRkdiM0pGYkdGemRHbGpSR1ZzZEdFQVgxOU9VMUpsWW05MWJtUkVaV3gwWVVa
dmNrVnNZWE4wYVdORVpXeDAKWVFCZlYwdFNaV2RwYzNSbGNrOWpZMngxYzJsdmJrNXZkR2xtYVdO
aGRHbHZia2hoYm1Sc1pYSUFYME5IVTFCaFkydGhaMlZ6Ulc1aApZbXhsUTI5dWJtVmpkR2x2Yms5
alkyeDFjMmx2Yms1dmRHbG1hV05oZEdsdmJuTUFYME5IVTFCaFkydGhaMlZ6Ulc1aFlteGxRMjl1
CmJtVmpkR2x2YmxkcGJtUnZkMDF2WkdsbWFXTmhkR2x2Yms1dmRHbG1hV05oZEdsdmJuTUFYME5I
VTFKbFoybHpkR1Z5UTI5dWJtVmoKZEdsdmJrNXZkR2xtZVZCeWIyTUFYMWRMVlc1eVpXZHBjM1Js
Y2s5alkyeDFjMmx2Yms1dmRHbG1hV05oZEdsdmJraGhibVJzWlhJQQpYME5IVTFKbGJXOTJaVU52
Ym01bFkzUnBiMjVPYjNScFpubFFjbTlqQUY5WFMwVnVZV0pzWlZkcGJtUnZkMDlqWTJ4MWMybHZi
azV2CmRHbG1hV05oZEdsdmJuTUFYME5IVTFCaFkydGhaMlZ6Ulc1aFlteGxWMmx1Wkc5M1QyTmpi
SFZ6YVc5dVRtOTBhV1pwWTJGMGFXOXUKY3dCZlYwdERSazVsZEhkdmNtdFRaWFJQZG1WeWNtbGta
Vk41YzNSbGJWQnliM2g1VTJWMGRHbHVaM01BWDE5RFJrNWxkSGR2Y210VApaWFJQZG1WeWNtbGta
Vk41YzNSbGJWQnliM2g1VTJWMGRHbHVaM01BWDE5RFJraHZjM1JKYzBSdmJXRnBibFJ2Y0V4bGRt
VnNBRjlmClEwWlZVa3hEWVdOb1pVUmxiR1YwWlVodmMzUk9ZVzFsYzBsdVVHVnljMmx6ZEdWdWRG
TjBiM0psUm05eVVHRnlkR2wwYVc5dUFGOWYKUTBaVlVreERZV05vWlVOdmNIbEJiR3hJYjNOMFRt
RnRaWE5KYmxCbGNuTnBjM1JsYm5SVGRHOXlaVVp2Y2xCaGNuUnBkR2x2YmdCZgpYME5HVlZKTVEy
RmphR1ZEYjNCNVFXeHNVR0Z5ZEdsMGFXOXVUbUZ0WlhNQVgxZExTWE5RZFdKc2FXTlRkV1ptYVhn
QVgxZExRMFpWClVreERZV05vWlVSbGJHVjBaVWh2YzNST1lXMWxjMGx1VUdWeWMybHpkR1Z1ZEZO
MGIzSmxSbTl5VUdGeWRHbDBhVzl1QUY5WFMwTkcKVlZKTVEyRmphR1ZEYjNCNVFXeHNTRzl6ZEU1
aGJXVnpTVzVRWlhKemFYTjBaVzUwVTNSdmNtVkdiM0pRWVhKMGFYUnBiMjRBWDBORwpSWEYxWVd3
QVgxZExRMkZqYUdWUVlYSjBhWFJwYjI1TFpYa0FYMWRMUTBaVlVreERZV05vWlVOdmNIbEJiR3hR
WVhKMGFYUnBiMjVPCllXMWxjd0JmYjJKcVkxOW5aWFJEYkdGemN3QmZZMkZ3YzB4dlkydEpibVJw
WTJGMGIzSlRhWHBsQUY5UFFrcERYME5NUVZOVFh5UmYKVGxOVlVreERZV05vWlFCZlQwSktRMTlE
VEVGVFUxOGtYMDVUU0ZSVVVFTnZiMnRwWlZOMGIzSmhaMlVBWDA5Q1NrTmZRMHhCVTFOZgpKRjlP
VTFWU1RGSmxjWFZsYzNRQVgyOWlhbU5mYlhOblUyVnVaRjltYVhoMWNBQmZUMEpLUTE5RFRFRlRV
MThrWDA1VFEyRmphR1ZrClZWSk1VbVZ6Y0c5dWMyVUFYMDlDU2tOZlEweEJVMU5mSkY5T1UwaFVW
RkJEYjI5cmFXVUFYMTlmUTBaRGIyNXpkR0Z1ZEZOMGNtbHUKWjBOc1lYTnpVbVZtWlhKbGJtTmxB
RjlQUWtwRFgwTk1RVk5UWHlSZlRsTlZVa3hHYVd4bFZIbHdaVTFoY0hCcGJtZHpBRjlQUWtwRApY
ME5NUVZOVFh5UmZUbE5CY25KaGVRQmZUMEpLUTE5RFRFRlRVMThrWDA1VFRYVjBZV0pzWlVGeWNt
RjVBRjlQUWtwRFgwTk1RVk5UClh5UmZUbE5FWVhSbEFGOVBRa3BEWDBOTVFWTlRYeVJmVGxOVlVr
eFFjbTkwYjJOdmJBQmZUMEpLUTE5RFRFRlRVMThrWDA1VFRuVnQKWW1WeUFGOVBRa3BEWDBOTVFW
TlRYeVJmVGxORGIyeHZjZ0JmVDBKS1ExOURURUZUVTE4a1gwNVRRbWwwYldGd1NXMWhaMlZTWlhB
QQpYMDlDU2tOZlEweEJVMU5mSkY5T1UwZHlZWEJvYVdOelEyOXVkR1Y0ZEFCZlQwSktRMTlEVEVG
VFUxOGtYMDVUUm05dWRBQmZUMEpLClExOURURUZUVTE4a1gwNVRWMmx1Wkc5M1IzSmhjR2hwWTNO
RGIyNTBaWGgwQUY5UFFrcERYME5NUVZOVFh5UmZRMEZNWVhsbGNraHYKYzNRQVgwOUNTa05mUTB4
QlUxTmZKRjlEUVVOdmJuUmxlSFFBWDA5Q1NrTmZRMHhCVTFOZkpGOU9VMFJwWTNScGIyNWhjbmtB
WDA5QwpTa05mUTB4QlUxTmZKRjlEUVZaaGJIVmxSblZ1WTNScGIyNEFYMDlDU2tOZlEweEJVMU5m
SkY5T1UxVlNURkpsYzNCdmJuTmxBRjlQClFrcERYME5NUVZOVFh5UmZUbE5EZFhKemIzSUFYMDlD
U2tOZlEweEJVMU5mSkY5T1UwSjFibVJzWlFCZlQwSktRMTlEVEVGVFUxOGsKWDA1VFUyTnlaV1Z1
QUY5UFFrcERYME5NUVZOVFh5UmZUbE5PYjNScFptbGpZWFJwYjI1RFpXNTBaWElBWDA5Q1NrTmZR
MHhCVTFOZgpKRjlPVTBOdmJuUnliMndBWDA5Q1NrTmZRMHhCVTFOZkpGOU9VMWRwYm1SdmR3QmZY
ME5HU0ZSVVVFMWxjM05oWjJWVFpYUlNaWE53CmIyNXpaVkJ5YjNoNVZWSk1MbVZvQUY5WFMwTnla
V0YwWlZCeWFYWmhkR1ZUZEc5eVlXZGxVMlZ6YzJsdmJpNWxhQUJmVjB0RGIzQjUKVW1WeGRXVnpk
RmRwZEdoVGRHOXlZV2RsVTJWemMybHZiaTVsYUFCZlYwdERZV05vWldSU1pYTndiMjV6WlVadmNs
SmxjWFZsYzNRdQpaV2dBWDFkTFEyOXdlVWhVVkZCRGIyOXJhV1ZUZEc5eVlXZGxMbVZvQUY5WFMw
ZGxkRWhVVkZCRGIyOXJhV1ZCWTJObGNIUlFiMnhwClkza3VaV2dBWDFkTFUyVjBTRlJVVUVOdmIy
dHBaVUZqWTJWd2RGQnZiR2xqZVM1bGFBQmZWMHRJVkZSUVEyOXZhMmxsY3k1bGFBQmYKVjB0SVZG
UlFRMjl2YTJsbGMwWnZjbFZTVEM1bGFBQmZWMHRUWlhSSVZGUlFRMjl2YTJsbGMwWnZjbFZTVEM1
bGFBQmZWMHRFWld4bApkR1ZJVkZSUVEyOXZhMmxsTG1Wb0FGOVhTMFJsYkdWMFpVRnNiRWhVVkZC
RGIyOXJhV1Z6TG1Wb0FGOVhTME52Y0hsRFJreHZZMkZzCmFYcGhkR2x2YmxCeVpXWmxjbkpsWkU1
aGJXVXVaV2dBWDFkTFUyVjBSR1ZtWVhWc2RFeHZZMkZzYVhwaGRHbHZiaTVsYUFCZlYwdEgKWlhS
UWNtVm1aWEp5WldSRmVIUmxibk5wYjI1R2IzSk5TVTFGVkhsd1pTNWxhQUJmVjB0SFpYUkZlSFJs
Ym5OcGIyNXpSbTl5VFVsTgpSVlI1Y0dVdVpXZ0FYMWRMUjJWMFRVbE5SVlI1Y0dWR2IzSkZlSFJs
Ym5OcGIyNHVaV2dBWDFkTFIyVjBUbE5WVWt4U1pYTndiMjV6ClpVeGhjM1JOYjJScFptbGxaRVJo
ZEdVdVpXZ0FYMWRMUjJWMFRsTlZVa3hTWlhOd2IyNXpaVVp5WlhOb2JtVnpjMHhwWm1WMGFXMWwK
TG1Wb0FGOVhTME52Y0hsT1UxVlNURkpsYzNCdmJuTmxVM1JoZEhWelRHbHVaUzVsYUFCZlYwdERi
M0I1VGxOVlVreFNaWE53YjI1egpaVU5sY25ScFptbGpZWFJsUTJoaGFXNHVaV2dBWDFkTFIyVjBW
MlZpUkdWbVlYVnNkRU5HVTNSeWFXNW5SVzVqYjJScGJtY3VaV2dBClgxZExVMlYwVFdWMFlXUmhk
R0ZWVWt3dVpXZ0FYMWRMVTJWMFRsTlZVa3hEYjI1dVpXTjBhVzl1UkdWbVpYSnpRMkZzYkdKaFky
dHoKTG1Wb0FGOVhTMU5vYjNkTFpYbEJibVJOWVdsdUxtVm9BRjlYUzBScGMyRmliR1ZEUjBSbFpt
VnljbVZrVlhCa1lYUmxjeTVsYUFCZgpWMHRPVTFWU1RGQnliM1J2WTI5c1EyeGhjM05HYjNKU1pY
RjFaWE4wTG1Wb0FGOVhTMU5sZEU1VFZWSk1VbVZ4ZFdWemRGTm9iM1ZzClpFTnZiblJsYm5SVGJt
bG1aaTVsYUFCZlYwdEJaSFpoYm1ObFJHVm1ZWFZzZEVKMWRIUnZibEIxYkhObFFXNXBiV0YwYVc5
dUxtVm8KQUY5WFMwMXZkWE5sVFc5MlpXUk9iM1JwWm1sallYUnBiMjR1WldnQVgxZExWMmx1Wkc5
M1YybHNiRTl5WkdWeVQyNVRZM0psWlc1TwpiM1JwWm1sallYUnBiMjR1WldnQVgxZExWMmx1Wkc5
M1YybHNiRTl5WkdWeVQyWm1VMk55WldWdVRtOTBhV1pwWTJGMGFXOXVMbVZvCkFGOVhTMU5sZEU1
VFYybHVaRzkzVTJodmRXeGtVRzl6ZEVWMlpXNTBUbTkwYVdacFkyRjBhVzl1Y3k1bGFBQmZWMHRI
WlhSQldGUmwKZUhSTllYSnJaWEpVZVhCbFNVUXVaV2dBWDFkTFIyVjBRVmhVWlhoMFRXRnlhMlZ5
VW1GdVoyVlVlWEJsU1VRdVpXZ0FYMWRMUTNKbApZWFJsUVZoVVpYaDBUV0Z5YTJWeUxtVm9BRjlY
UzBkbGRFSjVkR1Z6Um5KdmJVRllWR1Y0ZEUxaGNtdGxjaTVsYUFCZlYwdERjbVZoCmRHVkJXRlJs
ZUhSTllYSnJaWEpTWVc1blpTNWxhQUJmVjB0RGIzQjVRVmhVWlhoMFRXRnlhMlZ5VW1GdVoyVlRk
R0Z5ZEM1bGFBQmYKVjB0RGIzQjVRVmhVWlhoMFRXRnlhMlZ5VW1GdVoyVkZibVF1WldnQVgxZExR
V05qWlhOemFXSnBiR2wwZVVoaGJtUnNaVVp2WTNWegpRMmhoYm1kbFpDNWxhQUJmVjB0RGNtVmhk
R1ZCV0ZWSlJXeGxiV1Z1ZEZKbFppNWxhQUJmVjB0VmJuSmxaMmx6ZEdWeVZXNXBjWFZsClNXUkdi
M0pGYkdWdFpXNTBMbVZvQUY5WFMxTndaV1ZqYUZONWJuUm9aWE5wYzBkbGRFUmxabUYxYkhSV2Iy
bGpaVWxrWlc1MGFXWnAKWlhKR2IzSk1iMk5oYkdVdVpXZ0FYMWRMVTNCbFpXTm9VM2x1ZEdobGMy
bHpSMlYwVm05cFkyVkpaR1Z1ZEdsbWFXVnljeTVsYUFCZgpWMHRCV0ZKbFoybHpkR1Z5VW1WdGIz
UmxRWEJ3TG1Wb0FGOVhTMEZZVW1WdGIzUmxWRzlyWlc1R2IzSkZiR1Z0Wlc1MExtVm9BRjlYClMw
RllVbVZ0YjNSbFJXeGxiV1Z1ZEVadmNsUnZhMlZ1TG1Wb0FGOVhTMEZZVW1WdGIzUmxVSEp2WTJW
emMwbGtaVzUwYVdacFpYSXUKWldnQVgxZExRVmhUWlhSWGFXNWtiM2RHYjNKU1pXMXZkR1ZGYkdW
dFpXNTBMbVZvQUY5WFMwRllVbVZuYVhOMFpYSlNaVzF2ZEdWUQpjbTlqWlhOekxtVm9BRjlYUzBG
WVNXNXBkR2xoYkdsNlpVVnNaVzFsYm5SWGFYUm9VSEpsYzJWdWRHVnlVR2xrTG1Wb0FGOVhTMU5s
CmRGVndSbTl1ZEVOaFkyaGxMbVZvQUY5WFMxTnBaMjVoYkVOR1VtVmhaRk4wY21WaGJVVnVaQzVs
YUFCZlYwdFRhV2R1WVd4RFJsSmwKWVdSVGRISmxZVzFJWVhOQ2VYUmxjeTVsYUFCZlYwdFRhV2R1
WVd4RFJsSmxZV1JUZEhKbFlXMUZjbkp2Y2k1bGFBQmZWMHREY21WaApkR1ZEZFhOMGIyMURSbEps
WVdSVGRISmxZVzB1WldnQVgxZExSSEpoZDBadlkzVnpVbWx1Wnk1bGFBQmZWMHRUWlhSRWNtRm5T
VzFoCloyVXVaV2dBWDFkTFJISmhkMEpsZW1Wc1pXUlVaWGgwUm1sbGJHUkRaV3hzTG1Wb0FGOVhT
MFJ5WVhkVVpYaDBSbWxsYkdSRFpXeHMKUm05amRYTlNhVzVuTG1Wb0FGOVhTMFJ5WVhkQ1pYcGxi
R1ZrVkdWNGRFRnlaV0V1WldnQVgxZExVRzl3ZFhCTlpXNTFMbVZvQUY5WApTMUJ2Y0hWd1EyOXVk
R1Y0ZEUxbGJuVXVaV2dBWDFkTFJISmhkME5oY0hOTWIyTnJTVzVrYVdOaGRHOXlMbVZvQUY5WFMx
TmxibVJWCmMyVnlRMmhoYm1kbFRtOTBhV1pwWTJGMGFXOXVjeTVsYUFCZlYwdEhaWFJIYkhsd2FG
UnlZVzV6Wm05eWJXVmtRV1IyWVc1alpYTXUKWldnQVgxZExSMlYwUm05dWRFbHVUR0Z1WjNWaFoy
VkdiM0pTWVc1blpTNWxhQUJmVjB0SFpYUkdiMjUwU1c1TVlXNW5kV0ZuWlVadgpja05vWVhKaFkz
UmxjaTVsYUFCZlYwdFRaWFJEUjBadmJuUlNaVzVrWlhKcGJtZE5iMlJsTG1Wb0FGOVhTME5IVUdG
MGRHVnlia055ClpXRjBaVmRwZEdoSmJXRm5aVUZ1WkZSeVlXNXpabTl5YlM1bGFBQmZWMHREUjBO
dmJuUmxlSFJTWlhObGRFTnNhWEF1WldnQVgxZEwKUTBkRGIyNTBaWGgwUkhKaGQzTlhhWFJvUTI5
eWNtVmpkRk5vWVdSdmQwOW1abk5sZEhNdVpXZ0FYMWRMU1U5VGRYSm1ZV05sUTI5dQpkR1Y0ZEVO
eVpXRjBaUzVsYUFCZlYwdEpUMU4xY21aaFkyVkRiMjUwWlhoMFEzSmxZWFJsU1cxaFoyVXVaV2dB
WDFkTFEwZERiMjUwClpYaDBSMlYwVTJodmRXeGtVMjF2YjNSb1JtOXVkSE11WldnQVgxZExVMlYw
UW1GelpVTlVUUzVsYUFCZlYwdFRaWFJRWVhSMFpYSnUKVUdoaGMyVkpibFZ6WlhKVGNHRmpaUzVs
YUFCZlYwdEhaWFJWYzJWeVZHOUNZWE5sUTFSTkxtVm9BRjlYUzBkbGRFZHNlWEJvYzBadgpja05v
WVhKaFkzUmxjbk11WldnQVgwTlVSbTl1ZEVkbGRGWmxjblJwWTJGc1IyeDVjR2h6Um05eVEyaGhj
bUZqZEdWeWN5NWxhQUJmClYwdEhaWFJXWlhKMGFXTmhiRWRzZVhCb2MwWnZja05vWVhKaFkzUmxj
bk11WldnQVgxZExRM0psWVhSbFExUk1hVzVsVjJsMGFGVnUKYVVOb1lYSlFjbTkyYVdSbGNpNWxh
QUJmVjB0RFZFWnZiblJVY21GdWMyWnZjbTFIYkhsd2FITXVaV2dBWDFkTFEzSmxZWFJsUTFSVQpl
WEJsYzJWMGRHVnlWMmwwYUZWdWFVTm9ZWEpRY205MmFXUmxja0Z1WkU5d2RHbHZibk11WldnQVgx
ZExRMVJTZFc1SFpYUkpibWwwCmFXRnNRV1IyWVc1alpTNWxhQUJmVjB0T1UxZHBibVJ2ZDA5MlpY
SnlhV1JsUTBkRGIyNTBaWGgwTG1Wb0FGOVhTMDVUVjJsdVpHOTMKVW1WemRHOXlaVU5IUTI5dWRH
VjRkQzVsYUFCZlYwdE9VMWRwYm1SdmQwMWhhMlZDYjNSMGIyMURiM0p1WlhKelUzRjFZWEpsTG1W
bwpBRjlYUzBOSFEyOXVkR1Y0ZEVselFtbDBiV0Z3UTI5dWRHVjRkQzVsYUFCZlYwdEhaWFJYYUdW
bGJFVjJaVzUwUkdWc2RHRnpMbVZvCkFGOVhTMEZ3Y0ZabGNuTnBiMjVEYUdWamEweGxjM05VYUdG
dUxtVm9BRjlYUzFGVVNXNWpiSFZrWlU5dWJIbE5iMlJsY201TlpXUnAKWVVacGJHVlVlWEJsY3k1
bGFBQmZWMHRSVkUxdmRtbGxSR0YwWVZKaGRHVXVaV2dBWDFkTFVWUk5iM1pwWlUxaGVGUnBiV1ZN
YjJGawpaV1F1WldnQVgxZExVVlJOYjNacFpVMWhlRlJwYldWVFpXVnJZV0pzWlM1bGFBQmZWMHRS
VkUxdmRtbGxWbWxsZDFObGRFUnlZWGRUCmVXNWphSEp2Ym05MWMyeDVMbVZvQUY5WFMxRlVUVzky
YVdWSFpYUlVlWEJsTG1Wb0FGOVhTMUZVVFc5MmFXVkVhWE5oWW14bFEyOXQKY0c5dVpXNTBMbVZv
QUY5WFMxRlVUVzkyYVdWU1pYTnZiSFpsWkZWU1RDNWxhQUJmVjB0RGIzQjVSbTkxYm1SaGRHbHZi
a05oWTJobApSR2x5WldOMGIzSjVMbVZvQUY5WFMxTmxkRlpwYzJsaWJHVkJjSEJzYVdOaGRHbHZi
azVoYldVdVpXZ0FYMWRMVTJWMFFYQndiR2xqCllYUnBiMjVKYm1admNtMWhkR2x2YmtsMFpXMHVa
V2dBWDFkTFEyOXdlVUoxYm1Sc1pWVlNURVp2Y2tWNFpXTjFkR0ZpYkdWVlVrd3UKWldnQVgxZExW
R2hsYldWRWNtRjNWSEpoWTJzdVpXZ0FYMWRMU1c1cGRHbGhiR2w2WlZKbGJtUmxjbE5sY25abGNp
NWxhQUJmVjB0TgpZV3RsVW1WdVpHVnlUR0Y1WlhJdVpXZ0FYMWRMVTI5bWRIZGhjbVZEUVZKbGJt
UmxjbVZ5UTNKbFlYUmxMbVZvQUY5WFMxTnZablIzCllYSmxRMEZTWlc1a1pYSmxja1JsYzNSeWIz
a3VaV2dBWDFkTFUyOW1kSGRoY21WRFFWSmxibVJsY21WeVVtVnVaR1Z5TG1Wb0FGOVgKUzBOQlEy
OXVkR1Y0ZEUxaGEyVlNaVzF2ZEdWWGFYUm9VMlZ5ZG1WeVVHOXlkQzVsYUFCZlYwdERRVU52Ym5S
bGVIUk5ZV3RsVW1WdApiM1JsUm05eVYybHVaRzkzVTJWeWRtVnlMbVZvQUY5WFMwTkJRMjl1ZEdW
NGRFbHVkbUZzYVdSaGRHVXVaV2dBWDFkTFEwRkRiMjUwClpYaDBSMlYwUTI5dWRHVjRkRWxrTG1W
b0FGOVhTME5CUTI5dWRHVjRkRk5sZEV4aGVXVnlMbVZvQUY5WFMwTkJRMjl1ZEdWNGRFZGwKZEV4
aGVXVnlMbVZvQUY5WFMwTkJRMjl1ZEdWNGRGTmxkRU52Ykc5eVUzQmhZMlV1WldnQVgxZExRMEZE
YjI1MFpYaDBSMlYwUTI5cwpiM0pUY0dGalpTNWxhQUJmVjB0RVpYTjBjbTk1VW1WdVpHVnlhVzVu
VW1WemIzVnlZMlZ6TG1Wb0FGOVhTME5CVEdGNVpYSkZiblZ0ClpYSmhkR1ZTWldOMGMwSmxhVzVu
UkhKaGQyNVhhWFJvUW14dlkyc3VaV2dBWDFkTFEwRlNaVzVrWlhKbGNrRmtaRU5vWVc1blpVNXYK
ZEdsbWFXTmhkR2x2Yms5aWMyVnlkbVZ5TG1Wb0FGOVhTME5CVW1WdVpHVnlaWEpTWlcxdmRtVkRh
R0Z1WjJWT2IzUnBabWxqWVhScApiMjVQWW5ObGNuWmxjaTVsYUFCZlYwdFhhVzVrYjNkQ2IzVnVZ
MlZCYm1sdFlYUnBiMjVEYjI1MFpYaDBRM0psWVhSbExtVm9BRjlYClMxZHBibVJ2ZDBKdmRXNWpa
VUZ1YVcxaGRHbHZia052Ym5SbGVIUkVaWE4wY205NUxtVm9BRjlYUzFkcGJtUnZkMEp2ZFc1alpV
RnUKYVcxaGRHbHZibE5sZEVGdWFXMWhkR2x2YmxCeWIyZHlaWE56TG1Wb0FGOVhTMWRwYm1SdmQx
TmxkRU5zYVhCU1pXTjBMbVZvQUY5WApTME55WldGMFpVMUpSMU5sY25abGNsTnZkWEpqWlM1bGFB
QmZWMHRIWlhSSmJuQjFkRkJoYm1Wc1YybHVaRzkzVTNSNWJHVXVaV2dBClgxZExSMlYwVGxORmRt
VnVkRXRsZVVOb1lYSXVaV2dBWDFkTFUyVjBRMEZCYm1sdFlYUnBiMjVXWVd4MVpVWjFibU4wYVc5
dUxtVm8KQUY5WFMwbHVhWFJwWVd4cGVtVk5ZWGhwYlhWdFNGUlVVRU52Ym01bFkzUnBiMjVEYjNW
dWRGQmxja2h2YzNRdVpXZ0FYMWRMUjJWMApTRlJVVUZCcGNHVnNhVzVwYm1kUWNtbHZjbWwwZVM1
bGFBQmZWMHRUWlhSSVZGUlFVR2x3Wld4cGJtbHVaMUJ5YVc5eWFYUjVMbVZvCkFGOVhTMU5sZEVo
VVZGQlFhWEJsYkdsdWFXNW5UV0Y0YVcxMWJWQnlhVzl5YVhSNUxtVm9BRjlYUzFObGRFaFVWRkJR
YVhCbGJHbHUKYVc1blRXbHVhVzExYlVaaGMzUk1ZVzVsVUhKcGIzSnBkSGt1WldnQVgxZExVMlYw
UTA5T1RrVkRWRkJ5YjNoNVJtOXlVM1J5WldGdApMbVZvQUY5WFMxTmxkRU5QVGs1RlExUlFjbTk0
ZVVGMWRHaHZjbWw2WVhScGIyNUdiM0pUZEhKbFlXMHVaV2dBWDFkTFEyOXdlVU5QClRrNUZRMVJR
Y205NGVWSmxjM0J2Ym5ObExtVm9BRjlYUzFkcGJtUnZkMU5sZEVGc2NHaGhMbVZvQUY5WFMxZHBi
bVJ2ZDFObGRGTmoKWVd4bFpFWnlZVzFsTG1Wb0FGOVhTMU41Ym1OVGRYSm1ZV05sVkc5V2FXVjNM
bVZvQUY5WFMwVnVZV0pzWlZObGRIUnBibWREZFhKegpiM0pYYUdWdVNXNUNZV05yWjNKdmRXNWtM
bVZvQUY5WFMwNVRWVkpNVW1WeGRXVnpkRU55WldGMFpWTmxjbWxoYkdsNllXSnNaVkpsCmNISmxj
MlZ1ZEdGMGFXOXVMbVZvQUY5WFMwNVRWVkpNVW1WeGRXVnpkRVp5YjIxVFpYSnBZV3hwZW1GaWJH
VlNaWEJ5WlhObGJuUmgKZEdsdmJpNWxhQUJmVjB0T1UxVlNURkpsYzNCdmJuTmxRM0psWVhSbFUy
VnlhV0ZzYVhwaFlteGxVbVZ3Y21WelpXNTBZWFJwYjI0dQpaV2dBWDFkTFRsTlZVa3hTWlhOd2Iy
NXpaVVp5YjIxVFpYSnBZV3hwZW1GaWJHVlNaWEJ5WlhObGJuUmhkR2x2Ymk1bGFBQmZWMHREClJs
VlNURU5oWTJobFJHVnNaWFJsU0c5emRFNWhiV1Z6U1c1UVpYSnphWE4wWlc1MFUzUnZjbVV1Wldn
QVgxZExRMFpWVWt4RFlXTm8KWlVOdmNIbEJiR3hJYjNOMFRtRnRaWE5KYmxCbGNuTnBjM1JsYm5S
VGRHOXlaUzVsYUFCZlYwdEhaWFJEUmxWU1RGSmxjM0J2Ym5ObApUVWxOUlZSNWNHVXVaV2dBWDFk
TFIyVjBRMFpWVWt4U1pYTndiMjV6WlZWU1RDNWxhQUJmVjB0SFpYUkRSbFZTVEZKbGMzQnZibk5s
ClNGUlVVRkpsYzNCdmJuTmxMbVZvQUY5WFMwTnZjSGxEUmxWU1RGSmxjM0J2Ym5ObFUzVm5aMlZ6
ZEdWa1JtbHNaVzVoYldVdVpXZ0EKWDFkTFUyVjBRMFpWVWt4U1pYTndiMjV6WlUxSlRVVlVlWEJs
TG1Wb0FGOVhTMU5sZEZKbGNYVmxjM1JUZEc5eVlXZGxVMlZ6YzJsdgpiaTVsYUFCZlYwdEhaWFJF
WldaaGRXeDBTRlJVVUVOdmIydHBaVk4wYjNKaFoyVXVaV2dBWDFkTFEyOXdlVU55WldSbGJuUnBZ
V3hHCmNtOXRRMFpRWlhKemFYTjBaVzUwVTNSdmNtRm5aUzVsYUFCZlYwdFRaWFJEUmxWU1RGSmxj
WFZsYzNSVGFHOTFiR1JEYjI1MFpXNTAKVTI1cFptWXVaV2dBWDFkTFEwWlZVa3hTWlhGMVpYTjBR
Mjl3ZVVoVVZGQlNaWEYxWlhOMFFtOWtlVkJoY25SekxtVm9BRjlYUzBORwpWVkpNVW1WeGRXVnpk
Rk5sZEVoVVZGQlNaWEYxWlhOMFFtOWtlVkJoY25SekxtVm9BRjlYUzBOSlIyVjBVa2RDUVRoR2Iz
SnRZWFF1ClpXZ0FYMWRMVTJGdVpHSnZlRVY0ZEdWdWMybHZia055WldGMFpTNWxhQUJmVjB0VFlX
NWtZbTk0UlhoMFpXNXphVzl1UkdWemRISnYKZVM1bGFBQmZWMHRUWVc1a1ltOTRSWGgwWlc1emFX
OXVRMjl1YzNWdFpTNWxhQUJmVjB0VFlXNWtZbTk0UlhoMFpXNXphVzl1U1c1MgpZV3hwWkdGMFpT
NWxhQUJmVjB0VFlXNWtZbTk0UlhoMFpXNXphVzl1UjJWMFUyVnlhV0ZzYVhwbFpFWnZjbTFoZEM1
bGFBQmZWMHRUCllXNWtZbTk0UlhoMFpXNXphVzl1UTNKbFlYUmxSbkp2YlZObGNtbGhiR2w2WldS
R2IzSnRZWFF1WldnQVgxZExSVzVoWW14bFUyRnUKWkdKdmVGTjBlV3hsUm1sc1pWRjFZWEpoYm5S
cGJtVXVaV2dBWDFkTFVtVmpiMjF0Wlc1a1pXUlRZM0p2Ykd4bGNsTjBlV3hsTG1WbwpBRjlYUzBW
NFpXTjFkR0ZpYkdWWFlYTk1hVzVyWldSUGJrOXlRbVZtYjNKbFUyNXZkMHhsYjNCaGNtUXVaV2dB
WDFkTFJYaDBjbUZqCmRGZHZjbVJFWldacGJtbDBhVzl1Vkc5clpXNVNZVzVuWlVaeWIyMURiMjUw
WlhoMGRXRnNVM1J5YVc1bkxtVm9BRjlYUzFOb2IzZFgKYjNKa1JHVm1hVzVwZEdsdmJsZHBibVJ2
ZHk1bGFBQmZWMHRJYVdSbFYyOXlaRVJsWm1sdWFYUnBiMjVYYVc1a2IzY3VaV2dBWDFkTApRMjl3
ZVVSbFptRjFiSFJUWldGeVkyaFFjbTkyYVdSbGNrUnBjM0JzWVhsT1lXMWxMbVZvQUY5WFMwRldR
WE56WlhSU1pYTnZiSFpsClpGVlNUQzVsYUFCZlYwdERkWEp6YjNJdVpXZ0FYMWRMUTNKbFlYUmxW
azFRY21WemMzVnlaVVJwYzNCaGRHTm9UMjVOWVdsdVVYVmwKZFdVdVpXZ0FYMWRMUTNKbFlYUmxU
V1Z0YjNKNVUzUmhkSFZ6VUhKbGMzTjFjbVZEY21sMGFXTmhiRVJwYzNCaGRHTm9UMjVOWVdsdQpV
WFZsZFdVdVpXZ0FYMWRMUlhobFkzVjBZV0pzWlZkaGMweHBibXRsWkU5dVQzSkNaV1p2Y21WTWFX
OXVMbVZvQUY5WFMwVjRaV04xCmRHRmliR1ZYWVhOTWFXNXJaV1JQYms5eVFtVm1iM0psVFc5MWJu
UmhhVzVNYVc5dUxtVm9BRjlYUzBOSFVHRjBhRUZrWkZKdmRXNWsKWldSU1pXTjBMbVZvQUY5WFMw
TkdWVkpNVW1WeGRXVnpkRUZzYkc5M1FXeHNVRzl6ZEVOaFkyaHBibWN1WldnQVgxZExSbWxzZEdW
eQpTWE5DZFdabVpYSnBibWN1WldnQVgxZExSbWxzZEdWeVYyRnpRbXh2WTJ0bFpDNWxhQUJmVjB0
R2FXeDBaWEpCWkdSRVlYUmhMbVZvCkFGOVhTMFpwYkhSbGNrUmhkR0ZEYjIxd2JHVjBaUzVsYUFC
ZlYwdEdhV3gwWlhKSmMwMWhibUZuWldSVFpYTnphVzl1TG1Wb0FGOVgKUzBacGJIUmxja055WldG
MFpVbHVjM1JoYm1ObExtVm9BRjlYUzA1VFJXeGhjM1JwWTBSbGJIUmhSbTl5VkdsdFpVUmxiSFJo
TG1WbwpBRjlYUzA1VFJXeGhjM1JwWTBSbGJIUmhSbTl5VW1WaWIzVnVaRVJsYkhSaExtVm9BRjlY
UzA1VFVtVmliM1Z1WkVSbGJIUmhSbTl5ClJXeGhjM1JwWTBSbGJIUmhMbVZvQUY5WFMxSmxaMmx6
ZEdWeVQyTmpiSFZ6YVc5dVRtOTBhV1pwWTJGMGFXOXVTR0Z1Wkd4bGNpNWwKYUFCZlYwdFZibkps
WjJsemRHVnlUMk5qYkhWemFXOXVUbTkwYVdacFkyRjBhVzl1U0dGdVpHeGxjaTVsYUFCZlYwdEZi
bUZpYkdWWAphVzVrYjNkUFkyTnNkWE5wYjI1T2IzUnBabWxqWVhScGIyNXpMbVZvQUY5WFMwTkdU
bVYwZDI5eWExTmxkRTkyWlhKeWFXUmxVM2x6CmRHVnRVSEp2ZUhsVFpYUjBhVzVuY3k1bGFBQmZY
ME5HU0c5emRFbHpSRzl0WVdsdVZHOXdUR1YyWld3dVpXZ0FYMTlEUmxWU1RFTmgKWTJobFJHVnNa
WFJsU0c5emRFNWhiV1Z6U1c1UVpYSnphWE4wWlc1MFUzUnZjbVZHYjNKUVlYSjBhWFJwYjI0dVpX
Z0FYMTlEUmxWUwpURU5oWTJobFEyOXdlVUZzYkVodmMzUk9ZVzFsYzBsdVVHVnljMmx6ZEdWdWRG
TjBiM0psUm05eVVHRnlkR2wwYVc5dUxtVm9BRjlmClEwWlZVa3hEWVdOb1pVTnZjSGxCYkd4UVlY
SjBhWFJwYjI1T1lXMWxjeTVsYUFCZlYwdEpjMUIxWW14cFkxTjFabVpwZUM1bGFBQmYKVjB0RFJs
VlNURU5oWTJobFJHVnNaWFJsU0c5emRFNWhiV1Z6U1c1UVpYSnphWE4wWlc1MFUzUnZjbVZHYjNK
UVlYSjBhWFJwYjI0dQpaV2dBWDFkTFEwWlZVa3hEWVdOb1pVTnZjSGxCYkd4SWIzTjBUbUZ0WlhO
SmJsQmxjbk5wYzNSbGJuUlRkRzl5WlVadmNsQmhjblJwCmRHbHZiaTVsYUFCZlYwdERZV05vWlZC
aGNuUnBkR2x2Ymt0bGVTNWxhQUJmVjB0RFJsVlNURU5oWTJobFEyOXdlVUZzYkZCaGNuUnAKZEds
dmJrNWhiV1Z6TG1Wb0FGOXpiMlowVEdsdWExOURSa2hVVkZCTlpYTnpZV2RsVTJWMFVtVnpjRzl1
YzJWUWNtOTRlVlZTVEFCTQpYMTlmWm5WdVkxOWZMbDlEUmtoVVZGQk5aWE56WVdkbFUyVjBVbVZ6
Y0c5dWMyVlFjbTk0ZVZWU1RBQk1YeTV6ZEhJQVRGOHVjM1J5Ck1RQmZaR1ZqYjNsWGFXNWtiM2N1
ZDJsdVpHOTNBRjluWlhSQmNIQkxhWFJFY21GM1JHVmpiM2xYYVc1a2IzZERiR0Z6Y3k1aGNIQkwK
YVhSRWNtRjNSR1ZqYjNsWGFXNWtiM2REYkdGemN3Qk1YeTV6ZEhJME1UQUFYMWRMUVhCd1MybDBS
SEpoZDBSbFkyOTVWMmx1Wkc5MwpYMmx6UzJWNVYybHVaRzkzQUV4ZlgxOW1kVzVqWDE4dVYwdEJa
SFpoYm1ObFJHVm1ZWFZzZEVKMWRIUnZibEIxYkhObFFXNXBiV0YwCmFXOXVBRXhmTG5OMGNqRXdN
UUJNWDE5ZlpuVnVZMTlmTG1kbGRFRndjRXRwZEVSeVlYZEVaV052ZVZkcGJtUnZkME5zWVhOekFF
eGYKTG5OMGNqUXhNZ0JNWDE5ZlpuVnVZMTlmTGxkTFIyVjBRbmwwWlhOR2NtOXRRVmhVWlhoMFRX
RnlhMlZ5QUV4ZkxuTjBjakV4TWdCTQpYMTlmWm5WdVkxOWZMbGRMVTJWMFJISmhaMGx0WVdkbEFF
eGZMbk4wY2pFMk1BQk1YeTV6ZEhJeE56a0FYME52Ym5OdmJHVkRiMjV1ClpXTjBhVzl1UTJoaGJt
ZGxUbTkwYVdaNVVISnZZd0JNWDE5ZlpuVnVZMTlmTGtOdmJuTnZiR1ZEYjI1dVpXTjBhVzl1UTJo
aGJtZGwKVG05MGFXWjVVSEp2WXdCTVh5NXpkSEl6T1RVQVgzTnZablJNYVc1clExUkdiMjUwUjJW
MFZtVnlkR2xqWVd4SGJIbHdhSE5HYjNKRAphR0Z5WVdOMFpYSnpBRXhmWDE5bWRXNWpYMTh1UTFS
R2IyNTBSMlYwVm1WeWRHbGpZV3hIYkhsd2FITkdiM0pEYUdGeVlXTjBaWEp6CkFFeGZMbk4wY2pF
NU9BQmZZMkZ1VEc5aFpFTlVSbTl1ZEVkbGRGWmxjblJwWTJGc1IyeDVjR2h6Um05eVEyaGhjbUZq
ZEdWeWN5NXMKYjJGa1pXUUFYMEZ3Y0d4cFkyRjBhVzl1VTJWeWRtbGpaWE5NYVdKeVlYSjVMbVp5
WVcxbGQyOXlhMHhwWW5KaGNua0FURjh1YzNSeQpNemt3QUV4ZlgxOW1kVzVqWDE4dWFXNXBkRU5V
Um05dWRFZGxkRlpsY25ScFkyRnNSMng1Y0doelJtOXlRMmhoY21GamRHVnljd0JNClh5NXpkSEl6
T0RrQVRGOWZYMloxYm1OZlh5NUJjSEJzYVdOaGRHbHZibE5sY25acFkyVnpUR2xpY21GeWVRQk1Y
eTV6ZEhJek5EQUEKTFZ0T1UxZHBibVJ2ZDBkeVlYQm9hV056UTI5dWRHVjRkQ2hYWldKTGFYUlRl
WE4wWlcxSmJuUmxjbVpoWTJVcElGOVhaV0pMYVhSVAplWE4wWlcxSmJuUmxjbVpoWTJWZmMyVjBS
M0poY0docFkzTlFiM0owT2wwQVRGOWZYMloxYm1OZlh5NVhTMGRsZEZkb1pXVnNSWFpsCmJuUkVa
V3gwWVhNQVRGOHVjM1J5TWpBM0FGOXlaVzVrWlhKRGIyNTBaWGgwUkdsa1EyaGhibWRsQUY5allX
NU1iMkZrWDBOR1NGUlUKVUUxbGMzTmhaMlZUWlhSU1pYTndiMjV6WlZCeWIzaDVWVkpNTG14dllX
UmxaQUJmUTBaT1pYUjNiM0pyVEdsaWNtRnllUzVtY21GdApaWGR2Y210TWFXSnlZWEo1QUV4Zkxu
TjBjak16T1FCTVgxOWZablZ1WTE5ZkxtbHVhWFJmUTBaSVZGUlFUV1Z6YzJGblpWTmxkRkpsCmMz
QnZibk5sVUhKdmVIbFZVa3dBVEY4dWMzUnlNemMzQUV4ZlgxOW1kVzVqWDE4dVEwWk9aWFIzYjNK
clRHbGljbUZ5ZVFCZmJXRnAKYmxkcGJtUnZkMU5sY25abGNrTnZibTVsWTNScGIyNUpSQzVqWjNO
SlpBQmZZM0psWVhSbFUyVnlhV0ZzYVhwaFlteGxVbVZ3Y21WegpaVzUwWVhScGIyNEFYMk55WldG
MFpVRnlZMmhwZG1WTWFYTjBBRjlzYjI5clpXUkdiM0pNVlV4dmIydDFjRVJsWm1sdWFYUnBiMjVO
CmIyUjFiR1ZEYkdGemN3QmZURlZNYjI5cmRYQkVaV1pwYm1sMGFXOXVUVzlrZFd4bFEyeGhjM011
Ylc5a2RXeGxRMnhoYzNNQVRGOHUKYzNSeU16QXhBRXhmTG5OMGNqTXdNZ0JNWHk1emRISXpNRE1B
VEY4dWMzUnlNekEwQUV4ZkxuTjBjak13TlFCTVh5NXpkSEl6TURZQQpURjh1YzNSeU16QTNBRXhm
TG5OMGNqTXdPQUJNWHk1emRISXpNRGtBVEY4dWMzUnlNekV3QUV4ZkxuTjBjak14TVFCTVh5NXpk
SEl6Ck1USUFURjh1YzNSeU16RXpBRXhmTG5OMGNqTXhOQUJNWHk1emRISXpNVFVBVEY4dWMzUnlN
ekUyQUV4ZkxuTjBjak14TndCTVh5NXoKZEhJek1UZ0FURjh1YzNSeU16RTVBRjk2YjI5dFQzVjBR
M1Z5YzI5eUFGOWlkWE41UW5WMFEyeHBZMnRoWW14bFEzVnljMjl5QUY5dApZV3RsUVd4cFlYTkRk
WEp6YjNJQVgyMXZkbVZEZFhKemIzSUFYM0psYzJsNlpVVmhjM1JEZFhKemIzSUFYM0psYzJsNlpV
VmhjM1JYClpYTjBRM1Z5YzI5eUFGOXlaWE5wZW1WT2IzSjBhRU4xY25OdmNnQmZjbVZ6YVhwbFRt
OXlkR2hUYjNWMGFFTjFjbk52Y2dCZmNtVnoKYVhwbFRtOXlkR2hsWVhOMFEzVnljMjl5QUY5eVpY
TnBlbVZPYjNKMGFHVmhjM1JUYjNWMGFIZGxjM1JEZFhKemIzSUFYM0psYzJsNgpaVTV2Y25Sb2Qy
VnpkRU4xY25OdmNnQmZjbVZ6YVhwbFRtOXlkR2gzWlhOMFUyOTFkR2hsWVhOMFEzVnljMjl5QUY5
eVpYTnBlbVZUCmIzVjBhRU4xY25OdmNnQmZjbVZ6YVhwbFUyOTFkR2hsWVhOMFEzVnljMjl5QUY5
eVpYTnBlbVZUYjNWMGFIZGxjM1JEZFhKemIzSUEKWDNKbGMybDZaVmRsYzNSRGRYSnpiM0lBWDJO
bGJHeERkWEp6YjNJQVgyaGxiSEJEZFhKemIzSUFYM3B2YjIxSmJrTjFjbk52Y2dCTQpYeTV6ZEhJ
ek5UQUFYMWRMUTI5eVpVTjFjbk52Y2w5amIzSmxRM1Z5YzI5eVZIbHdaUUJmWjJWMFYyVmlSbWxz
ZEdWeVJYWmhiSFZoCmRHOXlRMnhoYzNNQVgxZExVbVZuYVhOMFpYSlBZMk5zZFhOcGIyNU9iM1Jw
Wm1sallYUnBiMjVJWVc1a2JHVnlMbTV2ZEdsbWFXTmgKZEdsdmJuTkZibUZpYkdWa0FGOXpiMlow
VEdsdWExOURSa2h2YzNSSmMwUnZiV0ZwYmxSdmNFeGxkbVZzQUV4ZlgxOW1kVzVqWDE4dQpYME5H
U0c5emRFbHpSRzl0WVdsdVZHOXdUR1YyWld3QVRGOHVjM1J5TXpNeUFGOXpiMlowVEdsdWExOURS
bFZTVEVOaFkyaGxSR1ZzClpYUmxTRzl6ZEU1aGJXVnpTVzVRWlhKemFYTjBaVzUwVTNSdmNtVkdi
M0pRWVhKMGFYUnBiMjRBVEY5ZlgyWjFibU5mWHk1ZlEwWlYKVWt4RFlXTm9aVVJsYkdWMFpVaHZj
M1JPWVcxbGMwbHVVR1Z5YzJsemRHVnVkRk4wYjNKbFJtOXlVR0Z5ZEdsMGFXOXVBRXhmTG5OMApj
ak16TXdCZmMyOW1kRXhwYm10ZlEwWlZVa3hEWVdOb1pVTnZjSGxCYkd4SWIzTjBUbUZ0WlhOSmJs
Qmxjbk5wYzNSbGJuUlRkRzl5ClpVWnZjbEJoY25ScGRHbHZiZ0JNWDE5ZlpuVnVZMTlmTGw5RFJs
VlNURU5oWTJobFEyOXdlVUZzYkVodmMzUk9ZVzFsYzBsdVVHVnkKYzJsemRHVnVkRk4wYjNKbFJt
OXlVR0Z5ZEdsMGFXOXVBRXhmTG5OMGNqTXpOQUJmYzI5bWRFeHBibXRmUTBaVlVreERZV05vWlVO
dgpjSGxCYkd4UVlYSjBhWFJwYjI1T1lXMWxjd0JNWDE5ZlpuVnVZMTlmTGw5RFJsVlNURU5oWTJo
bFEyOXdlVUZzYkZCaGNuUnBkR2x2CmJrNWhiV1Z6QUV4ZkxuTjBjak16TlFCZlkyRnVURzloWkY5
RFJraHZjM1JKYzBSdmJXRnBibFJ2Y0V4bGRtVnNMbXh2WVdSbFpBQk0KWDE5ZlpuVnVZMTlmTG1s
dWFYUmZRMFpJYjNOMFNYTkViMjFoYVc1VWIzQk1aWFpsYkFCTVh5NXpkSEl6TkRZQVgyTmhia3h2
WVdSZgpRMFpWVWt4RFlXTm9aVVJsYkdWMFpVaHZjM1JPWVcxbGMwbHVVR1Z5YzJsemRHVnVkRk4w
YjNKbFJtOXlVR0Z5ZEdsMGFXOXVMbXh2CllXUmxaQUJNWDE5ZlpuVnVZMTlmTG1sdWFYUmZRMFpW
VWt4RFlXTm9aVVJsYkdWMFpVaHZjM1JPWVcxbGMwbHVVR1Z5YzJsemRHVnUKZEZOMGIzSmxSbTl5
VUdGeWRHbDBhVzl1QUV4ZkxuTjBjak0wTlFCZlkyRnVURzloWkY5RFJsVlNURU5oWTJobFEyOXdl
VUZzYkVodgpjM1JPWVcxbGMwbHVVR1Z5YzJsemRHVnVkRk4wYjNKbFJtOXlVR0Z5ZEdsMGFXOXVM
bXh2WVdSbFpBQk1YMTlmWm5WdVkxOWZMbWx1CmFYUmZRMFpWVWt4RFlXTm9aVU52Y0hsQmJHeEli
M04wVG1GdFpYTkpibEJsY25OcGMzUmxiblJUZEc5eVpVWnZjbEJoY25ScGRHbHYKYmdCTVh5NXpk
SEl6TkRRQVgyZGxkRjlyUTBaVlVreERZV05vWlZCaGNuUnBkR2x2Ymt0bGVRQmZZMkZ1VEc5aFpG
OURSbFZTVEVOaApZMmhsUTI5d2VVRnNiRkJoY25ScGRHbHZiazVoYldWekxteHZZV1JsWkFCTVgx
OWZablZ1WTE5ZkxtbHVhWFJmUTBaVlVreERZV05vClpVTnZjSGxCYkd4UVlYSjBhWFJwYjI1T1lX
MWxjd0JNWHk1emRISXpNemdBWDJsdWFYUmZhME5HVlZKTVEyRmphR1ZRWVhKMGFYUnAKYjI1TFpY
a0FURjh1YzNSeU16UXhBRjlqYjI1emRHRnVkRjlyUTBaVlVreERZV05vWlZCaGNuUnBkR2x2Ymt0
bGVRQmZYMnREUmxWUwpURU5oWTJobFVHRnlkR2wwYVc5dVMyVjVSblZ1WTNScGIyNEFYMmx1YVhS
WFpXSkdhV3gwWlhKRmRtRnNkV0YwYjNJQVgxZGxZa052CmJuUmxiblJCYm1Gc2VYTnBjMHhwWW5K
aGNua3VabkpoYldWM2IzSnJUR2xpY21GeWVRQk1YeTV6ZEhJek5Ea0FURjh1YzNSeU16UTMKQUY5
amJHRnpjMWRsWWtacGJIUmxja1YyWVd4MVlYUnZjZ0JmVjJWaVJtbHNkR1Z5UlhaaGJIVmhkRzl5
Um5WdVkzUnBiMjRBVEY5ZgpYMloxYm1OZlh5NVhaV0pEYjI1MFpXNTBRVzVoYkhsemFYTk1hV0p5
WVhKNUFFeGZYMTltZFc1algxOHVhVzVwZEZkbFlrWnBiSFJsCmNrVjJZV3gxWVhSdmNnQk1YeTV6
ZEhJek5EZ0FURjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmQUV4ZlQwSktRMTlOUlZSSVgxWkIK
VWw5T1FVMUZYeklBVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCVFVWZk5RQk1YMDlDU2tOZlRVVlVT
RjlXUVZKZlRrRk5SVjgzQUV4ZgpUMEpLUTE5TlJWUklYMVpCVWw5T1FVMUZYemtBVEY5UFFrcERY
MDFGVkVoZlZrRlNYMDVCVFVWZk1URUFURjlQUWtwRFgwMUZWRWhmClZrRlNYMDVCVFVWZk1UUUFU
RjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmTVRVQVRGOVBRa3BEWDAxRlZFaGZWa0ZTWDA1QlRV
VmYKTVRjQVRGOVBRa3BEWDAxRlZFaGZWa0ZTWDA1QlRVVmZNakFBVEY5UFFrcERYMDFGVkVoZlZr
RlNYMDVCVFVWZk1qSUFURjlQUWtwRApYMDFGVkVoZlZrRlNYMDVCVFVWZk1qTUFURjlQUWtwRFgw
MUZWRWhmVmtGU1gwNUJUVVZmTWpZQVRGOVBRa3BEWDAxRlZFaGZWa0ZTClgwNUJUVVZmTWpnQVRG
OVBRa3BEWDAxRlZFaGZWa0ZTWDA1QlRVVmZNekFBVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCVFVW
Zk16SUEKYkY4dWMzUnlNelFBVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCVFVWZk16VUFURjlQUWtw
RFgwMUZWRWhmVmtGU1gwNUJUVVZmTXpjQQpURjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmTXpr
QVRGOVBRa3BEWDAxRlZFaGZWa0ZTWDA1QlRVVmZOREVBVEY5UFFrcERYMDFGClZFaGZWa0ZTWDA1
QlRVVmZORE1BVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCVFVWZk5EVUFURjlQUWtwRFgwMUZWRWhm
VmtGU1gwNUIKVFVWZk5EY0FURjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmTkRrQWJGOHVjM1J5
TlRFQVRGOVBRa3BEWDAxRlZFaGZWa0ZTWDA1QgpUVVZmTlRNQWJGOHVjM1J5TlRZQVRGOVBRa3BE
WDAxRlZFaGZWa0ZTWDA1QlRVVmZOVGdBYkY4dWMzUnlOakFBYkY4dWMzUnlOaklBClRGOVBRa3BE
WDAxRlZFaGZWa0ZTWDA1QlRVVmZOalFBVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCVFVWZk5qWUFU
RjlQUWtwRFgwMUYKVkVoZlZrRlNYMDVCVFVWZk5qZ0FURjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJU
VVZmTnpBQVRGOVBRa3BEWDAxRlZFaGZWa0ZTWDA1QgpUVVZmTnpJQVRGOVBRa3BEWDAxRlZFaGZW
a0ZTWDA1QlRVVmZOelFBVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCVFVWZk56WUFURjlQClFrcERY
MDFGVkVoZlZrRlNYMDVCVFVWZk56Z0FURjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmTnprQVRG
OVBRa3BEWDAxRlZFaGYKVmtGU1gwNUJUVVZmT0RFQVRGOVBRa3BEWDAxRlZFaGZWa0ZTWDA1QlRV
VmZPRE1BVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCVFVWZgpPRFVBYkY4dWMzUnlPRGNBVEY5UFFr
cERYMDFGVkVoZlZrRlNYMDVCVFVWZk9UQUFURjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmCk9U
TUFiRjh1YzNSeU9UVUFURjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmT1RjQVRGOVBRa3BEWDAx
RlZFaGZWa0ZTWDA1QlRVVmYKT1RrQVRGOVBRa3BEWDAxRlZFaGZWa0ZTWDA1QlRVVmZNVEF5QUV4
ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh6RXdOQUJNWDA5QwpTa05mVFVWVVNGOVdRVkpmVGtG
TlJWOHhNRFlBVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCVFVWZk1UQTRBRXhmVDBKS1ExOU5SVlJJ
ClgxWkJVbDlPUVUxRlh6RXhNQUJzWHk1emRISXhNVE1BYkY4dWMzUnlNVEUxQUV4ZlQwSktRMTlO
UlZSSVgxWkJVbDlPUVUxRlh6RXgKTndCc1h5NXpkSEl4TVRrQVRGOVBRa3BEWDAxRlZFaGZWa0ZT
WDA1QlRVVmZNVEl4QUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRgpYekV5TXdCTVgwOUNTa05m
VFVWVVNGOVdRVkpmVGtGTlJWOHhNalVBVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCVFVWZk1USTJB
RXhmClQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh6RXlPQUJNWDA5Q1NrTmZUVVZVU0Y5V1FWSmZU
a0ZOUlY4eE16QUFURjlQUWtwRFgwMUYKVkVoZlZrRlNYMDVCVFVWZk1UTXlBRXhmVDBKS1ExOU5S
VlJJWDFaQlVsOU9RVTFGWHpFek5BQk1YMDlDU2tOZlRVVlVTRjlXUVZKZgpUa0ZOUlY4eE16WUFU
RjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmTVRNNEFFeGZUMEpLUTE5TlJWUklYMVpCVWw5T1FV
MUZYekUwCk1RQnNYeTV6ZEhJeE5ETUFURjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmTVRRMUFF
eGZUMEpLUTE5TlJWUklYMVpCVWw5T1FVMUYKWHpFME53Qk1YMDlDU2tOZlRVVlVTRjlXUVZKZlRr
Rk5SVjh4TlRBQVRGOVBRa3BEWDAxRlZFaGZWa0ZTWDA1QlRVVmZNVFV4QUV4ZgpUMEpLUTE5TlJW
UklYMVpCVWw5T1FVMUZYekUxTWdCTVgwOUNTa05mVFVWVVNGOVdRVkpmVGtGTlJWOHhOVFFBVEY5
UFFrcERYMDFGClZFaGZWa0ZTWDA1QlRVVmZNVFUyQUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUx
Rlh6RTFPQUJNWDA5Q1NrTmZUVVZVU0Y5V1FWSmYKVGtGTlJWOHhOVGtBVEY5UFFrcERYMDFGVkVo
ZlZrRlNYMDVCVFVWZk1UWXhBRXhmVDBKS1ExOU5SVlJJWDFaQlVsOU9RVTFGWHpFMgpNd0JNWDA5
Q1NrTmZUVVZVU0Y5V1FWSmZUa0ZOUlY4eE5qVUFURjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZm
TVRZM0FFeGZUMEpLClExOU5SVlJJWDFaQlVsOU9RVTFGWHpFMk9RQk1YMDlDU2tOZlRVVlVTRjlX
UVZKZlRrRk5SVjh4TnpFQVRGOVBRa3BEWDAxRlZFaGYKVmtGU1gwNUJUVVZmTVRjekFFeGZUMEpL
UTE5TlJWUklYMVpCVWw5T1FVMUZYekUzTlFCTVgwOUNTa05mVFVWVVNGOVdRVkpmVGtGTgpSVjh4
TnpjQVRGOVBRa3BEWDAxRlZFaGZWa0ZTWDA1QlRVVmZNVGd4QUV4ZlQwSktRMTlOUlZSSVgxWkJV
bDlPUVUxRlh6RTRNd0JNClgwOUNTa05mVFVWVVNGOVdRVkpmVGtGTlJWOHhPRFVBVEY5UFFrcERY
MDFGVkVoZlZrRlNYMDVCVFVWZk1UZzNBRXhmVDBKS1ExOU4KUlZSSVgxWkJVbDlPUVUxRlh6RTRP
UUJNWDA5Q1NrTmZUVVZVU0Y5V1FWSmZUa0ZOUlY4eE9URUFURjlQUWtwRFgwMUZWRWhmVmtGUwpY
MDVCVFVWZk1UazBBRXhmVDBKS1ExOU5SVlJJWDFaQlVsOU9RVTFGWHpFNU5nQk1YMDlDU2tOZlEw
eEJVMU5mVGtGTlJWOEFURjlQClFrcERYMDFGVkVoZlZrRlNYMDVCVFVWZk1UazVBRXhmVDBKS1Ex
OU5SVlJJWDFaQlVsOVVXVkJGWHdCc1gwOUNTa05mSkY5RFFWUkYKUjA5U1dWOUpUbE5VUVU1RFJW
OU5SVlJJVDBSVFgwNVRWMmx1Wkc5M1IzSmhjR2hwWTNORGIyNTBaWGgwWHlSZlYyVmlTMmwwVTNs
egpkR1Z0U1c1MFpYSm1ZV05sQUd4ZlQwSktRMThrWDBOQlZFVkhUMUpaWDA1VFYybHVaRzkzUjNK
aGNHaHBZM05EYjI1MFpYaDBYeVJmClYyVmlTMmwwVTNsemRHVnRTVzUwWlhKbVlXTmxBRXhmVDBK
S1ExOU5SVlJJWDFaQlVsOU9RVTFGWHpJd01BQk1YMDlDU2tOZlRVVlUKU0Y5V1FWSmZUa0ZOUlY4
eU1ESUFURjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmTWpBMUFFeGZUMEpLUTE5TlJWUklYMVpC
VWw5TwpRVTFGWHpJd09BQk1YMDlDU2tOZlRVVlVTRjlXUVZKZlRrRk5SVjh5TVRBQVRGOVBRa3BE
WDAxRlZFaGZWa0ZTWDA1QlRVVmZNakV5CkFFeGZUMEpLUTE5TlJWUklYMVpCVWw5T1FVMUZYekl4
TkFCTVgwOUNTa05mVFVWVVNGOVdRVkpmVGtGTlJWOHlNVFlBVEY5UFFrcEQKWDAxRlZFaGZWa0ZT
WDA1QlRVVmZNakU0QUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh6SXlNQUJNWDA5Q1NrTmZU
VVZVU0Y5VwpRVkpmVGtGTlJWOHlNaklBVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCVFVWZk1qSTBB
R3hmTG5OMGNqSXlOZ0JNWDA5Q1NrTmZUVVZVClNGOVdRVkpmVGtGTlJWOHlNamdBVEY5UFFrcERY
MDFGVkVoZlZrRlNYMDVCVFVWZk1qTXdBRXhmVDBKS1ExOU5SVlJJWDFaQlVsOU8KUVUxRlh6SXpN
d0JNWDA5Q1NrTmZUVVZVU0Y5V1FWSmZUa0ZOUlY4eU16VUFURjlQUWtwRFgwMUZWRWhmVmtGU1gw
NUJUVVZmTWpNNApBRXhmVDBKS1ExOU5SVlJJWDFaQlVsOU9RVTFGWHpJME1BQk1YMDlDU2tOZlRV
VlVTRjlXUVZKZlRrRk5SVjh5TkRJQWJGOHVjM1J5Ck1qUTBBRXhmVDBKS1ExOU5SVlJJWDFaQlVs
OU9RVTFGWHpJME5nQk1YMDlDU2tOZlRVVlVTRjlXUVZKZlRrRk5SVjh5TkRrQVRGOVAKUWtwRFgw
MUZWRWhmVmtGU1gwNUJUVVZmTWpVeEFFeGZUMEpLUTE5TlJWUklYMVpCVWw5T1FVMUZYekkxTXdC
TVgwOUNTa05mVFVWVQpTRjlXUVZKZlRrRk5SVjh5TlRVQVRGOVBRa3BEWDAxRlZFaGZWa0ZTWDA1
QlRVVmZNalUzQUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPClFVMUZYekkxT1FCTVgwOUNTa05mVFVW
VVNGOVdRVkpmVGtGTlJWOHlOakVBVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCVFVWZk1qWXoKQUV4
ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh6STJOUUJNWDA5Q1NrTmZUVVZVU0Y5V1FWSmZUa0ZO
UlY4eU5qY0FURjlQUWtwRApYMDFGVkVoZlZrRlNYMDVCVFVWZk1qWTVBRXhmVDBKS1ExOU5SVlJJ
WDFaQlVsOU9RVTFGWHpJM01RQk1YMDlDU2tOZlRVVlVTRjlXClFWSmZUa0ZOUlY4eU56UUFURjlQ
UWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmTWpjMkFHeGZMbk4wY2pJM09BQnNYeTV6ZEhJeU9EQUEK
VEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCVFVWZk1qZ3lBRXhmVDBKS1ExOU5SVlJJWDFaQlVsOU9R
VTFGWHpJNE5BQnNYeTV6ZEhJeQpPRFlBVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCVFVWZk1qZzVB
RXhmVDBKS1ExOU5SVlJJWDFaQlVsOU9RVTFGWHpJNU1RQk1YMDlDClNrTmZUVVZVU0Y5V1FWSmZU
a0ZOUlY4eU9UTUFURjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmTWprMUFHeGZMbk4wY2pJNU53
Qk0KWDA5Q1NrTmZUVVZVU0Y5V1FWSmZUa0ZOUlY4eU9Ua0FURjlQUWtwRFgwMUZWRWhmVmtGU1gw
NUJUVVZmTXpJd0FFeGZUMEpLUTE5TgpSVlJJWDFaQlVsOU9RVTFGWHpNeU1nQk1YMDlDU2tOZlRV
VlVTRjlXUVZKZlRrRk5SVjh6TWpRQVRGOVBRa3BEWDAxRlZFaGZWa0ZTClgwNUJUVVZmTXpJMkFF
eGZUMEpLUTE5TlJWUklYMVpCVWw5T1FVMUZYek15T0FCTVgwOUNTa05mVFVWVVNGOVdRVkpmVGtG
TlJWOHoKTXpBQWJGOHVjM1J5TXpNMkFHeGZMbk4wY2pNME1nQk1YMDlDU2tOZlRVVlVTRjlXUVZK
ZlRrRk5SVjh6TlRJQWJGOHVjM1J5TXpVMApBRXhmVDBKS1ExOU5SVlJJWDFaQlVsOU9RVTFGWHpN
MU53QnNYeTV6ZEhJek5Ua0FURjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmCk16WXhBR3hmTG5O
MGNqTTJNd0JzWHk1emRISXpOalVBYkY4dWMzUnlNelkzQUd4ZkxuTjBjak0yT1FCc1h5NXpkSEl6
TnpFQVRGOVAKUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmTXpjMEFFeGZUMEpLUTE5TlJWUklYMVpC
VWw5T1FVMUZYek0zTmdCTVgwOUNTa05mVFVWVQpTRjlXUVZKZlRrRk5SVjh6TnpnQVRGOVBRa3BE
WDAxRlZFaGZWa0ZTWDA1QlRVVmZNemM1QUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPClFVMUZYek00
TVFCTVgwOUNTa05mVFVWVVNGOVdRVkpmVGtGTlJWOHpPRE1BVEY5UFFrcERYMDFGVkVoZlZrRlNY
MDVCVFVWZk16ZzEKQUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh6TTROd0JzWHk1emRISXpP
VEVBYkY4dWMzUnlNemt6QUV4ZlQwSktRMTlOUlZSSQpYMVpCVWw5T1FVMUZYek01TndCTVgwOUNT
a05mVFVWVVNGOVdRVkpmVGtGTlJWOHpPVGtBVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCClRVVmZO
REF4QUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh6UXdNd0JNWDA5Q1NrTmZUVVZVU0Y5V1FW
SmZUa0ZOUlY4ME1EWUEKVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVCVFVWZk5EQTRBRXhmVDBKS1Ex
OU5SVlJJWDFaQlVsOU9RVTFGWHpReE13QkZTRjltY21GdApaVEFBWDBOdmJuTnZiR1ZEYjI1dVpX
TjBhVzl1UTJoaGJtZGxUbTkwYVdaNVVISnZZeTVsYUFBdFcwNVRWMmx1Wkc5M1IzSmhjR2hwClkz
TkRiMjUwWlhoMEtGZGxZa3RwZEZONWMzUmxiVWx1ZEdWeVptRmpaU2tnWDFkbFlrdHBkRk41YzNS
bGJVbHVkR1Z5Wm1GalpWOXoKWlhSSGNtRndhR2xqYzFCdmNuUTZYUzVsYUFCZmNtVnVaR1Z5UTI5
dWRHVjRkRVJwWkVOb1lXNW5aUzVsYUFCZlkzSmxZWFJsVTJWeQphV0ZzYVhwaFlteGxVbVZ3Y21W
elpXNTBZWFJwYjI0dVpXZ0FYMk55WldGMFpVRnlZMmhwZG1WTWFYTjBMbVZvQUY5cGJtbDBYMnRE
ClJsVlNURU5oWTJobFVHRnlkR2wwYVc5dVMyVjVMbVZvQUY5ZmEwTkdWVkpNUTJGamFHVlFZWEow
YVhScGIyNUxaWGxHZFc1amRHbHYKYmk1bGFBQmZhVzVwZEZkbFlrWnBiSFJsY2tWMllXeDFZWFJ2
Y2k1bGFBQmZWMlZpUm1sc2RHVnlSWFpoYkhWaGRHOXlSblZ1WTNScApiMjR1WldnQVgxZExRMjl5
WlVOMWNuTnZjbDlqYjNKbFEzVnljMjl5Vkhsd1pTNWxhQUJmVjB0QmNIQkxhWFJFY21GM1JHVmpi
M2xYCmFXNWtiM2RmYVhOTFpYbFhhVzVrYjNjdVpXZ0FBQUFLQ2dvS0l6RXZNamdnSUNBZ0lDQWdJ
Q0FnSURFek56RTNOell3TXpNZ0lEVXcKTVNBZ0lESXdJQ0FnSURFd01EWTBOQ0FnTkRNeE5EZ2dJ
Q0FnSUdBS1YyVmlUbVYzUzJWNVIyVnVaWEpoZEdsdmJpNXZBQUFBQUFBQQpBTS82N2Y0SEFBQUJB
d0FBQUFFQUFBQURBQUFBMEFnQUFBQWdBQUFBQUFBQUdRQUFBR2dJQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBCkFBQUFBQUFBQUFBWWdRQUFBQUFBQVBBSUFBQUFBQUFBR0lFQUFBQUFBQUFIQUFBQUJ3
QUFBQm9BQUFBQUFBQUFYMTkwWlhoMEFBQUEKQUFBQUFBQUFBRjlmVkVWWVZBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFEd0pBQUFBQUFBQThBZ0FBQVFBQUFBSWlnQUFUZ0FBQUFBRQpBSUFBQUFBQUFB
QUFBQUFBQUFCZlgyTnZibk4wQUFBQUFBQUFBQUFBWDE5RVFWUkJBQUFBQUFBQUFBQUFBRUFKQUFB
QUFBQUFPQUVBCkFBQUFBQUF3RWdBQUJBQUFBSGlNQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFGOWZZMjl1YzNRQUFBQUFBQUFBQUFCZlgxUkYKV0ZRQUFBQUFBQUFBQUFBQWVBb0FBQUFBQUFB
RUFBQUFBQUFBQUdnVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBWDE5
dlltcGpYMk5zWVhOemNtVm1jMTlmUkVGVVFRQUFBQUFBQUFBQUFBQ0FDZ0FBQUFBQUFBZ0FBQUFB
QUFBQWNCTUFBQU1BCkFBQ2dqQUFBQVFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFCZlgyOWlhbU5m
YldWMGFHNWhiV1VBWDE5VVJWaFVBQUFBQUFBQUFBQUEKQUlnS0FBQUFBQUFBRVFBQUFBQUFBQUI0
RXdBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFGOWZiMkpxWTE5egpaV3h5
WldaekFBQmZYMFJCVkVFQUFBQUFBQUFBQUFBQW9Bb0FBQUFBQUFBSUFBQUFBQUFBQUpBVEFBQURB
QUFBcUl3QUFBRUFBQUFGCkFBQVFBQUFBQUFBQUFBQUFBQUFBWDE5amMzUnlhVzVuQUFBQUFBQUFB
RjlmVkVWWVZBQUFBQUFBQUFBQUFBQ29DZ0FBQUFBQUFBVUEKQUFBQUFBQUFtQk1BQUFBQUFBQUFB
QUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFCZlgyTm1jM1J5YVc1bkFBQUFBQUFBWDE5RQpR
VlJCQUFBQUFBQUFBQUFBQUxBS0FBQUFBQUFBSUFBQUFBQUFBQUNnRXdBQUJBQUFBTENNQUFBQ0FB
QUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBRjlmYjJKcVkxOXBiV0ZuWldsdVptOWZYMFJCVkVFQUFB
QUFBQUFBQUFBQTBBb0FBQUFBQUFBSUFBQUFBQUFBQU1BVEFBQUEKQUFBQUFBQUFBQUFBQUFBQUFB
QVFBQUFBQUFBQUFBQUFBQUFBWDE5a1lYUmhBQUFBQUFBQUFBQUFBRjlmUkVGVVFRQUFBQUFBQUFB
QQpBQURZQ2dBQUFBQUFBQUFBQUFBQUFBQUF5Qk1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFCZlgyUmxZblZuClgybHVabThBQUFBQVgxOUVWMEZTUmdBQUFBQUFBQUFBQU5n
S0FBQUFBQUFBeUNNQUFBQUFBQURJRXdBQUFBQUFBTUNNQUFBcUFBQUEKQUFBQUFnQUFBQUFBQUFB
QUFBQUFBRjlmWkdWaWRXZGZZV0ppY21WMkFBQmZYMFJYUVZKR0FBQUFBQUFBQUFBQW9DNEFBQUFB
QUFDVQpBZ0FBQUFBQUFKQTNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFB
WDE5a1pXSjFaMTloY21GdVoyVnpBRjlmClJGZEJVa1lBQUFBQUFBQUFBQUEwTVFBQUFBQUFBQUFB
QUFBQUFBQUFKRG9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUEKQUFBQUFBQmZYMlJs
WW5WblgyMWhZMmx1Wm04QVgxOUVWMEZTUmdBQUFBQUFBQUFBQURReEFBQUFBQUFBQUFBQUFBQUFB
QUFrT2dBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBRjlmWkdWaWRXZGZi
R2x1WlFBQUFBQmZYMFJYUVZKR0FBQUFBQUFBCkFBQUFOREVBQUFBQUFBQU5Bd0FBQUFBQUFDUTZB
QUFBQUFBQUVJNEFBQUVBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBWDE5a1pXSjEKWjE5c2IyTUFB
QUFBQUY5ZlJGZEJVa1lBQUFBQUFBQUFBQUJCTkFBQUFBQUFBQjRJQUFBQUFBQUFNVDBBQUFBQUFB
QVlqZ0FBa2dBQQpBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQmZYMlJsWW5WblgzQjFZblI1Y0dWelgx
OUVWMEZTUmdBQUFBQUFBQUFBQUY4OEFBQUFBQUFBCmZRSUFBQUFBQUFCUFJRQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBRjlmWkdWaWRXZGZjM1J5QUFBQUFBQmYKWDBSWFFW
SkdBQUFBQUFBQUFBQUEzRDRBQUFBQUFBQldMQUFBQUFBQUFNeEhBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUNBQUFBQUFBQQpBQUFBQUFBQVgxOWtaV0oxWjE5eVlXNW5aWE1BQUY5ZlJGZEJVa1lBQUFB
QUFBQUFBQUF5YXdBQUFBQUFBQUFBQUFBQUFBQUFJblFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJ
QUFBQUFBQUFBQUFBQUFBQmZYMlJsWW5WblgybHViR2x1WldRQVgxOUVWMEZTUmdBQUFBQUEKQUFB
QUFESnJBQUFBQUFBQXBnQUFBQUFBQUFBaWRBQUFBQUFBQUtpU0FBQUlBQUFBQUFBQUFnQUFBQUFB
QUFBQUFBQUFBRjlmWVhCdwpiR1ZmYm1GdFpYTUFBQUJmWDBSWFFWSkdBQUFBQUFBQUFBQUEyR3NB
QUFBQUFBQzRBUUFBQUFBQUFNaDBBQUFBQUFBQTZKSUFBQndBCkFBQUFBQUFDQUFBQUFBQUFBQUFB
QUFBQVgxOWhjSEJzWlY5dlltcGpBQUFBQUY5ZlJGZEJVa1lBQUFBQUFBQUFBQUNRYlFBQUFBQUEK
QUNRQUFBQUFBQUFBZ0hZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQmZY
MkZ3Y0d4bFgyNWhiV1Z6Y0dGagpYMTlFVjBGU1JnQUFBQUFBQUFBQUFMUnRBQUFBQUFBQUpBQUFB
QUFBQUFDa2RnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBCkFBQUFBQUFBQUY5ZllYQndi
R1ZmZEhsd1pYTUFBQUJmWDBSWFFWSkdBQUFBQUFBQUFBQUEyRzBBQUFBQUFBQmdFUUFBQUFBQUFN
aDIKQUFBQUFBQUF5Sk1BQURBQkFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQVgxOWpiMjF3WVdOMFgz
VnVkMmx1WkY5ZlRFUUFBQUFBQUFBQQpBQUFBQUFBNGZ3QUFBQUFBQU1BQUFBQUFBQUFBS0lnQUFB
TUFBQUJJblFBQUJnQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQmZYMlZvClgyWnlZVzFsQUFBQUFB
QUFYMTlVUlZoVUFBQUFBQUFBQUFBQUFQaC9BQUFBQUFBQUlBRUFBQUFBQUFEb2lBQUFBd0FBQUFB
QUFBQUEKQUFBQUN3QUFhQUFBQUFBQUFBQUFBQUFBQUFJQUFBQVlBQUFBZUowQUFFZ0FBQUQ0b1FB
QWRBWUFBQXNBQUFCUUFBQUFBQUFBQUFRQQpBQUFFQUFBQUR3QUFBQk1BQUFBMUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFB
QVZVaUo1VWlOQlFBQUFBQklpVWNZU01kSEVBSUFBQUJkd3c4ZmdBQUFBQUJWU0lubFFWZEJWa0ZW
UVZSVFNJUHMKS0UySnhVR0p6MG1KMWtpSmRiaEppZnhJalhYSVRJbjM2QUFBQUFDSnc0WGJkV2hJ
alUzQVRJbjN2bk1BQUFBeDB1Z0FBQUFBaWNPRgoyM1ZQU0l0TnlFaUxWY0JNalVYUVRJbm5SSW4r
NkFBQUFBQ0p3NFhiZFRKSngwVUlBQUFBQUVuSFJRQUFBQUFBU0l0OTBFaUxkYmk2CkFRQUFBREhK
VFlubzZBQUFBQUNKdzBpTGZkRG9BQUFBQUluWVNJUEVLRnRCWEVGZFFWNUJYMTNERHg5QUFGVklp
ZVV4d0VpRi8zUWgKU0lNL0FIUWJNY0JtWm1abUxnOGZoQUFBQUFBQVNJTjh4d2dBU0kxQUFYWDBY
Y05ta0ZWSWllVkJWMEZXUVZWQlZGTklnZXhvQWdBQQpTWW5WU1luMlFZbjhTSXNGQUFBQUFFaUxB
RWlKUmRCSXg0WGcvdi8vQUFBQUFFakhoZGorLy84QUFBQUFTTWVGWVA3Ly93QUFBQUFQClY4QkZN
ZjlJalpXNC9mLy9EeW1GNFAzLy93OHBoZEQ5Ly84UEtZWEEvZi8vU01lRnFQMy8vd0FBQUFBUEtZ
VlEvdi8vRHltRlFQNy8KL3c4cGhURCsvLzhQS1lVZy92Ly9EeW1GRVA3Ly93OHBoUUQrLy84UEtZ
WHcvZi8vVEludk1mYm9BQUFBQU1hRnAvMy8vd0NGd0ErRgpWUVFBQUVpTHZiajkvLzlJalpXdy9m
Ly92aGdBQUFEb0FBQUFBSVhBRDRVMUJBQUFTSXU5c1AzLy8wVXgvekgyNkFBQUFBQklpY05JCmk3
MncvZi8vNkFBQUFBQklqYldvL2YvL01mL29BQUFBQUlYQUQ0WC9Bd0FBU0lzMWdBZ0FBRWlMbGFq
OS8vOUlpejFTQ0FBQS94VUEKQUFBQVJUSC9TSW5mU0luR1RJbnFNY25vQUFBQUFJWEFENFhKQXdB
QVNJdUZ1UDMvLzBpTmplRCsvLzlJalpYWS92Ly9TSWxVSkNCSQppVXdrR0VpSlJDUVF4MFFrQ0Nr
QUFDREhCQ1FBQUFDQVJUSC9NZisrS2dBQUFFU0o0akhKUWJnQUFBQ0FRYmtoQUFBZzZBQUFBQUNG
CndBK0ZiZ01BQUVpTHZkaisvLzlJamJWby92Ly82QUFBQUFDRndBK0ZVd01BQUV5THBXaisvLzlJ
aTczZy92Ly9TSTIxNlA3Ly8rZ0EKQUFBQWljT0YydytGQWdFQUFBOVh3QThwaGNEKy8vOFBLWVd3
L3YvL0R5bUZvUDcvL3c4cGhaRCsvLzhQS1lXQS92Ly9EeW1GY1A3LwovdzhwUllBUEtZVncvLy8v
RHltRllQLy8vdzhwaFZELy8vOFBLWVZBLy8vL0R5bUZNUC8vL3c4cGhTRC8vLzhQS1lVUS8vLy9E
eW1GCkFQLy8vdzhwaGZEKy8vOUlqVVdRU0lsRUpCQkl4MFFrQ0FBQUFBREhCQ1FBQUFBQVNJMk44
UDcvLzB5SjV6SDJNZEpGTWNCRk1jbm8KQUFBQUFJbkRoZHQxV2tpTGZaREhSWmdsQUFBUXgwV2NC
QUFBQUxnQUFBQ0FTSWxGb0VpTlZaaStBUUFBQU9nQUFBQUFpY09GMjNVaQpTSXVWNlA3Ly8waUxm
WkJJamJYdy92Ly9USTJGY1A3Ly96SEo2QUFBQUFDSncwaUxmWkRvQUFBQUFJWGJENFVsQWdBQVNJ
MjlZUDcvCi8rZ0FBQUFBeG9Xbi9mLy9BWVhBRDRVS0FnQUFTSXU5WVA3Ly8waU50Y0QrLy85SWl4
VUFBQUFBU0kyTjhQMy8vK2dBQUFBQWhjQVAKaGVFQkFBQk1pZmZvQUFBQUFFaUp3MGlKblNEKy8v
OUloZHQwSjBqL3cwaUozK2dBQUFBQVNJbUZLUDcvLzB5SjkwaUp4a2lKMnJrQQpCZ0FBNkFBQUFB
RHJIa2pIaFNEKy8vOEJBQUFBU0kwOUFnQUFBT2dBQUFBQVNJbUZLUDcvLzBpTHZXRCsvLzlJamJY
dy9mLy9TSTBWCkFBQUFBRWlOamVEOS8vL29BQUFBQUlYQUQ0VmNBUUFBU0l1VjJQNy8vMGlMdldq
Ky8vOUlqYlhnL2YvL1RJMkZ3UDMvLzdrc0FBQUEKNkFBQUFBQ0Z3QStGTGdFQUFFaUxEUUFBQUFC
SWl3RklpMGtJU0ltTk9QNy8vMGlKaFREKy8vOUlqUVVBQUFBQVNJbUZTUDcvLzBqSApoVUQrLy84
Q0FBQUFTSXVGd1AzLy8waUxqY2o5Ly85SWlZMVkvdi8vU0ltRlVQNy8vMGlOdGZEOS8vOUlqUlVB
QUFBQVNJMk4wUDMvCi8wakJwVkQrLy84RFNJdTlZUDcvLytnQUFBQUFoY0FQaGF3QUFBQklpNVhR
L2YvL1NJdTEyUDMvLzBpTEJRQUFBQUJNaXpoSWl3VUEKQUFBQVNJc0lUSW4vNkFBQUFBQkppY1pJ
aXdVQUFBQUFTSXM0TWZib0FBQUFBRW1KeEVpTEJRQUFBQUJJaXpCTWllZE1pZkl4eWVnQQpBQUFB
VElubk1mYm9BQUFBQUVpSncwaUozK2dBQUFBQVNZbkZTSW5mNkFBQUFBQklqUlhGQkFBQVRJbi9N
ZlpFaWVsSmljQXd3T2dBCkFBQUFTWW5IVEluMzZBQUFBQUJNaWVmb0FBQUFBRWlKMytnQUFBQUFT
SXU5WVA3Ly8waUYvM1FGNkFBQUFBQ0F2YWY5Ly84QWRCZEkKaTcxby92Ly9TSTJWY1A3Ly96SDJN
Y25vQUFBQUFFaUR2Y2o5Ly84QWRDSklpNzFvL3YvL1NJMTFxT2dBQUFBQWhjQjFEa2lMZGNoSQpp
NzNJL2YvLy8xV3dTSXU5NFA3Ly8waUYvM1FGNkFBQUFBQklpNzNZL3YvL1NJWC9kQVhvQUFBQUFF
aUx2Ymo5Ly85SWhmOTBCZWdBCkFBQUFTSXU5S1A3Ly8waUYvM1FGNkFBQUFBQklpNzJvL2YvL1NJ
WC9kQVhvQUFBQUFFaUxCUUFBQUFCSWl3QklPMFhRZFJWTWlmaEkKZ2NSb0FnQUFXMEZjUVYxQlhr
RmZYY1BvQUFBQUFHWm1aaTRQSDRRQUFBQUFBRlZJaWVWQlZsTklnK3dnaWZCSWlVWGdTSWw5NkVp
TgpmZUJJalUzWXZnTUFBQUM2QXdBQUFPZ0FBQUFBUlREMmhjQjFKVWlMZmRneDl1Z0FBQUFBaWNO
SWkzM1k2QUFBQUFDRjIzUUlnZnN0Cm5mLy9kUU5CdGdGRWlQQklnOFFnVzBGZVhjTm1abVl1RHgr
RUFBQUFBQUJWU0lubFFWZEJWa0ZWUVZSVFNJUHNXRUdKOTBtSi9rakgKUmFBQUFBQUFTSTE5b09n
QUFBQUFRYndCQUFBQVpvWEFENFYxQVFBQUQxZkFEeWxGZ0VqSFJaQUFBQUFBU0l0OW9FV0ovMGlO
RFFBQQpBQUJNalVXQVRJbjJUSW42NkFBQUFBQm1oY0IwV0V5SmZiQk1pWFc0U0kxOXNFaU5UYWkr
QXdBQUFMb0RBQUFBNkFBQUFBQ0Z3QStGCkhRRUFBRWlMZmFneDl1Z0FBQUFBUVluR1NJdDlxT2dB
QUFBQVJZWDJkQTFCZ2Y0dG5mLy9ENFgwQUFBQVJUSGs2ZXdBQUFCSWkxV0EKU0lzRkFBQUFBRWc3
RUhVYlNJdDlpRWlMY0Fqb0FBQUFBRUc4QWdBQUFJWEFENFRQQUFBQVFiMy8vLy8vU0l0RmtFaUZ3
SFExU0lNNApBSFF2U0kxSUNFRzlBUUFBQUdZUEgwUUFBRUgvelVpRE9RQklqVWtJZGZOQnZBRUFB
QUJGaGUwUGhJQUFBQUJCOTkxRk1mWk1qWDNBCjZ3d1BINFFBQUFBQUFFaUxSWkJLaXd6d1NJdEJD
RWlMQ2JyLy8vLy9TQ0hSU0lsTnlFaUpSZEJJalgzSXZnTUFBQUM2QXdBQUFFeUoKK2VnQUFBQUFR
YndCQUFBQWhjQjFKVWlMZmNBeDl1Z0FBQUFBaWNOSWkzM0E2QUFBQUFDRjIzUUlnZnN0bmYvL2RR
TkZNZVJKLzhaRgpPZlYxbEVpTGZhQkloZjkwQmVnQUFBQUFSSW5nU0lQRVdGdEJYRUZkUVY1Qlgx
M0RBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFZCkFBQUFBQUFBQUFZQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBS0FDQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFB
SUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQXdBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQkFBQUFBQUFBQUFBQUFBQUFB
QUFBQndBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQkEKQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQUFBQmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQmhjbkpo
ZVZkcGRHaFBZbXBsWTNRNkFBQUFBQUFBQUFBQUFBQUFBQUFBCkFDVXFjd29BQUFBQUFBQUFBQUFB
QUFESUJ3QUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFnQUFBTVFqQUFBQ0FBQUEK
QUFBSUFRQUFBQUFRQUQ4QUFBQUFBQUFBQUFBQUFBQUFBQUNTQUFBQUFRSUM4UUFBQUFjRUF5Z0FB
QUQrQUFBQUFoOEVCVG9BQUFBRwpGd0VBQUJnQ1ZnZnNBQUFBTHdBQUFBSmFBaU1BQVFjSEFRQUFM
d0FBQUFKaUFpTUVBUWNPQVFBQU93QUFBQUp2QWlNSUFRY1NBUUFBCkx3QUFBQUozQWlNUUFRQURR
QUFBQUM0QkFBQUJlQWlGQUFBQUNUNEJBQUFFQlFxUUFBQUFDNVVBQUFBREFBelBBQUFBbkFBQUFB
RUIKVEFrRFFBa0FBQUFBQUFBTVFnRUFBSndBQUFBQkFWZ0pBNkFKQUFBQUFBQUFDcEFBQUFBTGxR
QUFBQVFBREdBQkFBRFVBQUFBQVFGawpDUU1BQ2dBQUFBQUFBQUtNQVFBQUNBRUQ5Z0FBQUpvQkFB
QURId1A5QUFBQW9nRUFBQU5MQ0FnQkFBQUtFd0VBQUF1VkFBQUFBUUFOCnFBRUFBQUVBQVFFQkFB
QUFBQUFBQUFBWkFBQUFBQUFBQUFGV0FRNkVBUUFBR0FFQUFBRUNBUWtEZUFvQUFBQUFBQUFQZEIw
QUFBRUEKQVFJVkFBQUFBQUFBQUJDNUFRQUFBUXNCQVk0Q0FBQUJJQUFBQUFBQUFBRE1BQUFBQUFB
QUFBRldEeWtlQUFBQkN3RkZGUUFBSXdBQQpBQStRSGdBQUFRd0JWUlVBQUZrQUFBQVBtaDRBQUFF
TkFXVVZBQUNSQUFBQUQ3d2VBQUFCRGdGN0ZRQUF4d0FBQUEvYUhnQUFBUThCCmh4VUFBUDBBQUFB
UjNoNEFBQUVSQWJRVkFBQUNrVkFSTEI4QUFBRVRBUnNZQUFBQ2tVZ1I4aUFBQUFFVkFUVWVBQUFD
a1VBUjNoNEEKQUFFUkFiUVZBQUFDa1ZBUjNoNEFBQUVSQWJRVkFBQUNrVkFSM2g0QUFBRVJBYlFW
QUFBQ2tWQVJMQjhBQUFFVEFSc1lBQUFDa1VnUgo4aUFBQUFFVkFUVWVBQUFDa1VBUzBpVUFBQUVV
QVhrTEFBQXpBUUFBRXRjbEFBQUJFZ0dPQWdBQWFRRUFBQUFDUGdFQUFBVUVBM0VDCkFBREJBUUFB
QVI0RGVBSUFBTWtCQUFBQk53T0RBZ0FBMEFFQUFBRlBFOXdCQUFBQlZRRUJLQUFBQUFIUUFBQUFB
QUFBQVA0QUFBQUEKQUFBQUFWWUJEOXdsQUFBQlZRRTZIZ0FBbndFQUFCVGlKUUFBQVZjQktBQUFB
QUVBQUJEcEFRQUFBV0FCQVRRSEFBQUJBQUVBQUFBQQpBQUQwQmdBQUFBQUFBQUZXRDZJcEFBQUJZ
QUVvQUFBQXdnRUFBQStxS1FBQUFXQUJOQWNBQVBnQkFBQVB0Q2tBQUFGZ0FUUUhBQUF1CkFnQUFF
Y01wQUFBQlpBRmxGUUFBQTVIZ2ZSR2FIZ0FBQVdVQlpSVUFBQU9SMkgwUnlpa0FBQUZtQVFvWUFB
QURrZkI4RVNrZUFBQUIKYUFGRkZRQUFBNUhvZkJIWUtRQUFBV2tCQkNJQUFBT1I0SHdSK3lrQUFB
RnFBYUVpQUFBRGtmQjdFYWtxQUFBQmJRRzVGQUFBQTVIZwpleEcwS2dBQUFXNEJ1UlFBQUFPUjBI
c1JneW9BQUFGdkFia1VBQUFEa2NCN0VjQXFBQUFCY0FHM0lnQUFBNUc0ZXhIcUtnQUFBWEVCCjBp
SUFBQU9Sc0hzUkJDc0FBQUYwQWVnaUFBQURrYWg3RWNNcEFBQUJaQUZsRlFBQUE1SGdmUkhES1FB
QUFXUUJaUlVBQUFPUjRIMFIKbWg0QUFBRmxBV1VWQUFBRGtkaDlFWm9lQUFBQlpRRmxGUUFBQTVI
WWZSR2FIZ0FBQVdVQlpSVUFBQU9SMkgwUktSNEFBQUZvQVVVVgpBQUFEa2VoOEVTa2VBQUFCYUFG
RkZRQUFBNUhvZkJFcEhnQUFBV2dCUlJVQUFBT1I2SHdSS1I0QUFBRm9BVVVWQUFBRGtlaDhFZGdw
CkFBQUJhUUVFSWdBQUE1SGdmQkhZS1FBQUFXa0JCQ0lBQUFPUjRId1IyQ2tBQUFGcEFRUWlBQUFE
a2VCOEVkZ3BBQUFCYVFFRUlnQUEKQTVIZ2ZCSEFLZ0FBQVhBQnR5SUFBQU9SdUhzUndDb0FBQUZ3
QWJjaUFBQURrYmg3RWNBcUFBQUJjQUczSWdBQUE1RzRleEhxS2dBQQpBWEVCMGlJQUFBT1JzSHNS
NmlvQUFBRnhBZElpQUFBRGtiQjdFUVFyQUFBQmRBSG9JZ0FBQTVHb2V4RUVLd0FBQVhRQjZDSUFB
QU9SCnFIc1NSeXNBQUFGekFUUUhBQUJrQWdBQUV0SWxBQUFCWWdGNUN3QUFtZ0lBQUJKT0t3QUFB
V2NCM2djQUFIc0RBQUFTWFNzQUFBRnkKQWY0aUFBQ2ZBd0FBRXRjbEFBQUJZd0dPQWdBQXVnUUFB
QlY5S3dBQUFXc0JDU01BQUJXQkt3QUFBWkFCVVNNQUFCWUlDd0FBMmdJQQpBQUFBQUFEckF3QUFB
QUFBQUFHMUFSY1ZDd0FBQTVHUWZ4Y2dDd0FBQTVId2ZSY3JDd0FBQTVIb2ZSY1ZDd0FBQTVHUWZ4
Y1ZDd0FBCkE1R1FmeGNWQ3dBQUE1R1FmeGNWQ3dBQUE1R1FmeGNWQ3dBQUE1R1FmeGNWQ3dBQUE1
R1FmeGNyQ3dBQUE1SG9mUmNyQ3dBQUE1SG8KZlJnMkN3QUFBNUh3ZkJsQkN3QUF3Z01BQUJsTUN3
QUE1UU1BQUJwWEN3QUFDQVFBQUJwaUN3QUFLd1FBQUJ1RkN3QUFsUU1BQUFBQQpBQURBQXdBQUFB
QUFBQUhuRjVJTEFBQURrWmgvSEowTEFBQUZwWUNBZ0FFY3FBc0FBQUVFR2JNTEFBQjBCQUFBR3I0
TEFBQ1hCQUFBCkFBQWRKQUVBQUFZRkFBQUFBQUFBSHdVQUFBQUFBQUFCNndFV3VBb0FBSG9GQUFB
QUFBQUFHQVlBQUFBQUFBQUI5Z0VaeFFvQUFOMEUKQUFBWjBBb0FBQUFGQUFBYTJ3b0FBQ01GQUFB
YTVnb0FBRVlGQUFBYThRb0FBR2tGQUFBYS9Bb0FBSXdGQUFBQUZuMEtBQUJlQmdBQQpBQUFBQUhV
R0FBQUFBQUFBQWY0QkY0Y0tBQUFEa2FoL0dKTUtBQUFEa2NCN0daOEtBQUN2QlFBQUdxc0tBQURT
QlFBQUFBQWVEUUlBCkFBRUlKQWNBQUFVcUJ3QUFIeThIQUFBWUFnQUFBVkFCRXlRQ0FBQUJFQUlC
M2djQUFBRUFCd0FBQUFBQUFHUUhBQUFBQUFBQUFWWUIKRDY4ckFBQUJFQUpiSXdBQTlRVUFBQSs0
S3dBQUFSRUNLQUFBQUJnR0FBQVB4Q3NBQUFFU0FpZ0FBQUE3QmdBQUVjd3JBQUFCRkFLNQpGQUFB
QXBGZ0VkRXJBQUFCRlFKckl3QUFBcEZZRWRFckFBQUJGUUpySXdBQUFwRllFZEVyQUFBQkZRSnJJ
d0FBQXBGWUV0SWxBQUFCCkdBSjVDd0FBY1FZQUFBQUNSd0lBQUFJQkVFMENBQUFCT1FJQmNnb0FB
QUZ3QndBQUFBQUFBRHdKQUFBQUFBQUFBVllQQXl3QUFBRTUKQWpzQUFBQ25CZ0FBRHdvcEFBQUJP
UUlvQUFBQTNRWUFBQkhZS1FBQUFUNENCQ0lBQUFPUm9IOFJDU3dBQUFFL0FwNGpBQUFEa1lCLwpF
ZGdwQUFBQlBnSUVJZ0FBQTVHZ2Z4UkhLd0FBQVRzQ2Nnb0FBQUVCRmRJbEFBQUJRQUs3SXdBQUlL
b0hBQUFBQUFBQUhBa0FBQUFBCkFBQVIyQ2tBQUFFK0FnUWlBQUFEa2FCL0lOZ0hBQUFBQUFBQUd3
Z0FBQUFBQUFBV1FBY0FBTmdIQUFBQUFBQUFHd2dBQUFBQUFBQUIKV3dJUnpDc0FBQUVVQXJrVUFB
QURrYkIvRWRFckFBQUJGUUpySXdBQUE1R29meEhSS3dBQUFSVUNheU1BQUFPUnFIOFIwU3NBQUFF
VgpBbXNqQUFBRGthaC9FZEVyQUFBQkZRSnJJd0FBQTVHb2Z4SFJLd0FBQVJVQ2F5TUFBQU9ScUg4
UHJ5c0FBQUVRQWxzakFBQVRCd0FBCkV0SWxBQUFCR0FKNUN3QUFOZ2NBQUFBQUlEQUlBQUFBQUFB
QUhBa0FBQUFBQUFBVVN5d0FBQUZRQWlnQUFBQUJBQkpOTEFBQUFVOEMKS0FBQUFHd0hBQUFXbVFJ
QUFHb0lBQUFBQUFBQWpRZ0FBQUFBQUFBQlR3SVU0aVVBQUFGWEFTZ0FBQUFCQUFBZ2t3Z0FBQUFB
QUFBYwpDUUFBQUFBQUFDQ3dDQUFBQUFBQUFBa0pBQUFBQUFBQUVzd3JBQUFCVWdLSEZRQUFvZ2NB
QUJaQUJ3QUF4QWdBQUFBQUFBQUpDUUFBCkFBQUFBQUZUQWhITUt3QUFBUlFDdVJRQUFBS1JTQkhS
S3dBQUFSVUNheU1BQUFLUlFCSFJLd0FBQVJVQ2F5TUFBQUtSUUJIUkt3QUEKQVJVQ2F5TUFBQUtS
UUJIUkt3QUFBUlVDYXlNQUFBS1JRQkhSS3dBQUFSVUNheU1BQUFLUlFBK3ZLd0FBQVJBQ1d5TUFB
TVVIQUFBUwowaVVBQUFFWUFua0xBQURvQndBQUFBQUFBQUFBSVFRRUd5SnhBZ0FBQUNLVEFnQUFB
U0t5QWdBQUFnQURXd29BQU5BQ0FBQUJIeVBwCkFnQUFBVVVCQVFFVmRTa0FBQUZKQWUwaEFBQWts
Q2tBQUFGSEFZY1ZBQUFrbWlrQUFBRkdBUzhWQUFBVjF5VUFBQUZLQVk0Q0FBQUEKSmZrQ0FBQUJn
UUUwQndBQUFTWUtLUUFBQVlGM0ZBQUFKaEVwQUFBQmdiWWhBQUFuRmlrQUFBR0R5eUVBQUNjektR
QUFBWVRpSVFBQQpKMTBwQUFBQmhzc2hBQUFuYUNrQUFBR0hOQWNBQUFBbEJnTUFBQUhBQVhrTEFB
QUJKOTRlQUFBQnhiUVZBQUFuOGlBQUFBSEhKQjRBCkFDZm9KUUFBQWNnYkdBQUFKdklsQUFBQncw
UWVBQUFtS1I0QUFBSEJSUlVBQUNZS0pnQUFBY0psRlFBQUo5SWxBQUFCeVhrTEFBQW4KMXlVQUFB
SEdqZ0lBQUFBRGNRSUFBQmNEQUFBQmNSOXVDd0FBSGdNQUFBRU9BU1VuQXdBQUFhZ0JqZ0lBQUFF
bkVTWUFBQUd0cWlFQQpBQ1laSmdBQUFhbHdGUUFBSmpzbUFBQUJxbkFWQUFBbTlDZ0FBQUdyT3dB
QUFDZlhKUUFBQWE2T0FnQUFKZ0VwQUFBQnFMUVZBQUFBCktBUURXd0lpUGdNQUFJQ0FCQ0p1QXdB
QUFTS0pBd0FBT1NLbUF3QUFLU0xFQXdBQUdTTGlBd0FBSmlJSUJBQUFKU0lzQkFBQU1DSlMKQkFB
QUx5SjJCQUFBOHdBaWtnUUFBQ01pc1FRQUFCZ2kwQVFBQURzaTZ3UUFBQndpQ1FVQUFCWWlLd1VB
QUJjaVRRVUFBQlVpYkFVQQpBQk1palFVQUFCUWlyZ1VBQUJFQUlRUUZvaUxQQlFBQUFDTHBCUUFB
QVNJQ0JnQUFBZ0FvQkFNeUF5SVpCZ0FBQUNJcEJnQUFBU0k3CkJnQUFBaUpKQmdBQUF5SlhCZ0FB
QkNKbUJnQUFCU0oxQmdBQUJpS0VCZ0FBQnlLVEJnQUFDQ0tqQmdBQUNTSzBCZ0FBQ2lMRkJnQUEK
Q3lMWEJnQUFEQ0xxQmdBQURTTDlCZ0FBRGlJTUJ3QUFEeUljQndBQUVDSXNCd0FBRVNKRkJ3QUFF
aUplQndBQUV5SjNCd0FBRVNLTQpCd0FBRkNLbEJ3QUFFaUs2QndBQUZTTFRCd0FBRkNMb0J3QUFG
aUw0QndBQUZ5SUhDQUFBR0NJV0NBQUFHU0lsQ0FBQUdpSTFDQUFBCkd5SkZDQUFBSENKWkNBQUFI
U0p0Q0FBQUhpS0FDQUFBSHlLVENBQUFJQ0tqQ0FBQUlTSzBDQUFBSWlMR0NBQUFJeUxXQ0FBQUpD
TG4KQ0FBQUpTTDVDQUFBSmlJSUNRQUFKeUlZQ1FBQUtDSXBDUUFBS1NJNUNRQUFLaUpJQ1FBQUt5
SlhDUUFBTENKdENRQUFMU0tEQ1FBQQpMaUtXQ1FBQUx5S3JDUUFBTUNMQUNRQUFNU0xWQ1FBQU1p
THFDUUFBTXlJQkNnQUFOQ0lSQ2dBQU5TSWlDZ0FBTmlJekNnQUFOeUpNCkNnQUFPQ0pvQ2dBQU9T
S0VDZ0FBT2lLaENnQUFPeUsrQ2dBQVBDTFlDZ0FBUFNMeUNnQUFQaUlPQ3dBQVB5SXFDd0FBd0FB
aVNRc0EKQU1FQUltQUxBQURDQUNKNEN3QUF3d0FpbEFzQUFNUUFJckFMQUFERkFDTE5Dd0FBeGdB
aTRnc0FBTWNBSXZvTEFBRElBQ0lMREFBQQp5UUFpSEF3QUFNb0FJaTRNQUFETEFDSkJEQUFBekFB
aVZRd0FBTTBBSW1VTUFBRE9BQ0o0REFBQXp3QWlqQXdBQU5BQUlxa01BQURSCkFDTEFEQUFBMGdB
aTJRd0FBTk1BSXU0TUFBRFVBQ0wrREFBQTFRQWlEdzBBQU5ZQUlpb05BQURYQUNJN0RRQUEyQUFp
VkEwQUFOa0EKSW1RTkFBRGFBQ0oxRFFBQTJ3QWlpUTBBQU53QUlxSU5BQURkQUNLeERRQUEzZ0Fp
d0EwQUFOOEFJczhOQUFEZ0FDTHVEUUFBNFFBaQovUTBBQU9JQUlnOE9BQURqQUNJaERnQUE1QUFp
TXc0QUFPVUFJa1FPQUFEbUFDSlhEZ0FBNXdBaWJ3NEFBT2dBSW9vT0FBRC8vLy8vCkJ5S2FEZ0FB
Z0lDQWdIZ0FLQVFESkFNaXRBNEFBSUNBZ0lCNElzUU9BQUFCSXRnT0FBQUNJdXdPQUFBRUl2ME9B
QUFJSWhBUEFBQVEKSWlrUEFBQWdJa1FQQUFEQUFDSlZEd0FBZ0FFaWFBOEFBSUFDQUNnRUF4SURJ
bnNQQUFBQUlwY1BBQUNBZ0lDQUFTS3dEd0FBZ0lDQQpnQUlpeUE4QUFJQ0FnSUFFSXVFUEFBQUJJ
dmdQQUFBQ0lnMFFBQUFFSWlVUUFBQUlJandRQUFBZ0lsVVFBQUFRSW5NUUFBREFBQUFvCkJBWjFB
U0tTRUFBQUFBQURLQUFBQUFJU0FBQUhjQVBpRHdBQUNSSUFBQWRkS2UwUEFBQUJHaElBQUFRSFl5
S1lFQUFBQUNLeUVBQUEKZ0FvaTBSQUFBSUVFSXV3UUFBQ0JGaUlMRVFBQWdBd2lJaEVBQUlBQ0lq
c1JBQUNBZ29EQUFDSlJFUUFBL3hjaWNCRUFBSUFDSW9jUgpBQUNBZ29DQUFTS2dFUUFBZ0lLQW9B
RWl1UkVBQUlDQ2dPQUFJdEFSQUFDQWdvREFBU0xwRVFBQWdJS0E0QUVBSVFRRFNTSXpFZ0FBCkFD
SStFZ0FBQVFBb0JBUFdBU0pJRWdBQUFDSmFFZ0FBQVNKc0VnQUFBaUorRWdBQUF5S1FFZ0FBQkNL
ZUVnQUFCU0t0RWdBQUJpSysKRWdBQUNDTE9FZ0FBQ1NMb0VnQUFDaUwvRWdBQUN5SVBFd0FBRENJ
akV3QUEvdjhCSWpZVEFBRC8vd0VpUlJNQUFJQ0FBZ0FvQkFQcwpBU0plRXdBQUFDSjVFd0FBQVNL
VEV3QUFBaUtxRXdBQUF5TEJFd0FBQkNMWUV3QUFCU0x4RXdBQUJpSUlGQUFBL3Y4QklpUVVBQUQv
Ci93RWlQQlFBQUlDQUFnQW9CQU9uQXlKWkZBQUFBQ0pyRkFBQUFTSi9GQUFBQWlLUUZBQUFBeUtr
RkFBQUJDSzFGQUFBQlNMS0ZBQUEKQmlMaEZBQUFCeUx5RkFBQUNDSUhGUUFBQ1NJZUZRQUFDaUl2
RlFBQUN5SkVGUUFBRENKYkZRQUFEU0p3RlFBQURpS0FGUUFBRHlLUwpGUUFBRUNLa0ZRQUFFU0s0
RlFBQUVpTEpGUUFBRXlMYUZRQUFGQ0x0RlFBQUZTSUZGZ0FBRmlJZUZnQUFGeUl6RmdBQUdDSkdG
Z0FBCkdTSlpGZ0FBR2lKc0ZnQUFIQ0ovRmdBQUhTS1NGZ0FBSGlLa0ZnQUFIeUsyRmdBQUlDTFFG
Z0FBSVNMa0ZnQUFJaUw0RmdBQUl5SUwKRndBQUpDSWZGd0FBSlNJMkZ3QUFKaUpSRndBQUp5SnRG
d0FBS0NLSkZ3QUFLU0tmRndBQUtpS3lGd0FBLy8vLy93Y2l4QmNBQUlDQQpnSUI0QUNnRUEwd0VJ
dUFYQUFBQUl2SVhBQUFCSWdZWUFBQUNJaGdZQUFBRElpa1lBQUFFSWtBWUFBQUZJbEFZQUFBR0lt
TVlBQUFICkluWVlBQUFJSXBJWUFBQUpJcVlZQUFBS0lya1lBQUNBZ0lDQWVBQW9CQU1mQkNMVkdB
QUFBQ0xwR0FBQWdZQ0FnQUlpL3hnQUFJS0EKZ0lBRklob1pBQUNEZ0lDQUJDSXRHUUFBaElDQWdB
SWlTQmtBQUlXQWdJQUNJbHdaQUFDR2dJQ0FBU0p6R1FBQWg0Q0FnQUlpaVJrQQpBSWlBZ0lBRElw
MFpBQUNKZ0lDQUF5SzNHUUFBaW9DQWdBRWkwUmtBQUl1QWdJQUhJdkVaQUFDTWdJQ0FBU0lMR2dB
QWpZQ0FnQUVpCkpob0FBSTZBZ0lBQklqd2FBQUNQZ0lDQUFTSlRHZ0FBa0lDQWdBSWliUm9BQUpH
QWdJQUNJb0lhQUFDU2dJQ0FBU0thR2dBQWs0Q0EKZ0FFaXJob0FBSlNBZ0lBQklzd2FBQUNWZ0lD
QUJpTG1HZ0FBbG9DQWdBWWkvaG9BQUplQWdJQUJJaFliQUFDWWdJQ0FBU0l0R3dBQQptWUNBQ0NK
RUd3QUFtb0NBZ0FJaVdSc0FBSnVBZ0lBQ0ltMGJBQUNjZ0lDQUFpS0ZHd0FBbllDQWdBRWlteHNB
QUo2QWdJQUJJcm9iCkFBQ2ZnSUNBQnlMV0d3QUFvSUNBR0NMMUd3QUFvWUNBR0NJVkhBQUFvb0NB
Z0FFaUx4d0FBS09BZ0JBaVN4d0FBS1NBZ0lCNEltMGMKQUFDbGdJQ0FBU0tPSEFBQXBvQ0FnQUVp
c0J3QUFLZUFnSUFCSXRRY0FBQ29nSUNBQVFBaEJBaitJdlljQUFDQWdJQ0FlQ0lUSFFBQQpnWUNB
Z0hnaU14MEFBSUtBZ0lCNElsTWRBQUNEZ0lDQWVBQUNpeDBBQUFjSUEyVVVBQUNkSFFBQUExd0Ri
QlFBQUswZEFBQURIZ04zCkZBQUF0QjBBQUFOUUJRZ0JBQUFHd3gwQUFCQURXUWVFSFFBQWdoUUFB
QU5hQWlNQUFRZStIUUFBalJRQUFBTmJBaU1JQVFBRGtoUUEKQU0wZEFBQUpYQis1RkFBQTF4MEFB
QW40QkFickhRQUFJQWxHQjNvZEFBREVGQUFBQ1VjQ0l3QUJCK0FkQUFDNUZBQUFDVWdDSXhBQgpB
QVBRRkFBQUNoNEFBQUZKQmZjVUFBQUNNUjRBQUFVSUF3Y1ZBQUE2SGdBQUFURUREaFVBQUV3ZUFB
QUJIZ01aRlFBQVZSNEFBQUZQCkF5UVZBQUJoSGdBQUFTc0RMeFVBQUcwZUFBQUJMd002RlFBQWdC
NEFBQUV6Q0xrVUFBQUZVQlVBQUI2aUhnQUFBUVZhRlFBQUEyQVYKQUFDeUhnQUFBWk1ETHdBQUFN
TWVBQUFCUXg5d0ZRQUF5aDRBQUFFeEF3VzVGQUFBQXVVZUFBQUhDQU9NRlFBQS9CNEFBQUVmQTVN
VgpBQUFGSHdBQUFUTURuaFVBQUF3ZkFBQUJMUU9wRlFBQUhSOEFBQUV4SDNBVkFBQlBId0FBQTlN
Q0FuUWZBQUFIQWdQTEZRQUFneDhBCkFBTWZBOUlWQUFDTUh3QUFBMGNLQ0FFQUFBdVZBQUFBQndB
R254OEFBQkFEWGdkb0h3QUFjQlVBQUFOZkFpTUFBUWR1SHdBQTNSVUEKQUFOZ0FpTUVBUWVUSHdB
QTNSVUFBQU5oQWlNR0FRZVpId0FBNkJVQUFBTmlBaU1JQVFBRDlCVUFBS2tmQUFBRFl4OXdGUUFB
dkI4QQpBQVBkQWg5d0ZRQUExUjhBQUFQbEFoOXdGUUFBL2g4QUFBTUlBeDl3RlFBQUtTQUFBQU1S
QXg5d0ZRQUFSU0FBQUFNakF3b0lBUUFBCkM1VUFBQUFEQUFvSUFRQUFDNVVBQUFBQkFDcHFJQUFB
Q0FQREFpdGJJQUFBZ0JZQUFBUEVBZ0lqQUFFcllDQUFBSXdXQUFBRHhRSUMKSXdRQksyWWdBQUNN
RmdBQUE4WUNBaU1HQVFBZm1CWUFBSFFnQUFBRHh3SWZjQlVBQUo4Z0FBQURwZ01xdWlBQUFFd0Qy
UU1yUVI4QQpBTDhWQUFBRDJnTUNJd0FCSzJJZkFBQTVGZ0FBQTlzREFpTUVBU3V6SHdBQVJCWUFB
QVBjQXdJakZBRXJ6aDhBQUZBV0FBQUQzUU1DCkl4Z0JLK2tmQUFCN0ZRQUFBOTREQWlNY0FTdjFI
d0FBWEJZQUFBUGZBd0lqSUFFckRDQUFBSEFWQUFBRDRBTUNJeVFCS3lFZ0FBQm8KRmdBQUErRURB
aU1vQVNzOElBQUFkQllBQUFQaUF3SWpMQUVyVVNBQUFOSVdBQUFENHdNQ0l6QUJLMzRnQUFEU0Zn
QUFBK1FEQWlNNApBU3VHSUFBQWV4VUFBQVBsQXdJalFBRXJsaUFBQU40V0FBQUQ1Z01DSTBRQks3
RWdBQUJ3RlFBQUErY0RBaU5JQVFBZjZoWUFBTWtnCkFBQUQ2QU1xNENBQUFHQUQ2Z01yTng4QUFO
UVhBQUFENndNQ0l3QUJLOWdnQUFDNUZBQUFBK3dEQWlOUUFRQWY0QmNBQU9rZ0FBQUIKN1FNSUNo
Z0FBQVVXR0FBQUFnRWhBQUFHQVFvZ0dBQUFDNVVBQUFCREFBTW5HQUFBQmlFQUFBTlhBem9WQUFB
bElRQUFBelVET2hVQQpBRDBoQUFBRE9SOXdGUUFBV3lFQUFBUFZBUjl3RlFBQWR5RUFBQVByQVFX
U0ZBQUFBMndZQUFDbUlRQUFBMXdxelNFQUFCZ0QvQUVyClVpRUFBRlFZQUFBRC9RRUNJd0FCSzJv
aEFBQmdHQUFBQS80QkFpTUVBU3ZFSVFBQXVSUUFBQVAvQVFJakNBRUFCWHdZQUFBZnRoZ0EKQU44
aEFBQURBQUlmY0JVQUFCVWlBQUFEQWdJc0tqY2lBQUFRQXhVQ0sxSWhBQUJVR0FBQUF4WUNBaU1B
QVNzRUlnQUF4eGdBQUFNWApBZ0lqQkFFckxDSUFBTk1ZQUFBREdRSUNJd2dCQUFYVUdBQUFIdzRa
QUFCSUlnQUFBeG9DSDN3WUFBQjJJZ0FBQXdBQ0g5UVlBQUNJCklnQUFBeG9DS3BraUFBQW9BeHdD
SzJvaUFBQWZHUUFBQXgwQ0FpTUFBU3NzSWdBQUt4a0FBQU1lQWdJakdBRUFCVGNaQUFBZllSa0EK
QUtnaUFBQURId0lmY0JVQUFNa2lBQUFESVFJcTNTSUFBQ2dES1FJclVpRUFBRlFZQUFBREtnSUNJ
d0FCSzJvaEFBQmdHQUFBQXlzQwpBaU1FQVN1S0lRQUFjQlVBQUFNc0FnSWpDQUV0Q0FNdEFpdWRJ
UUFBY1JnQUFBTXVBZ0lqQUFFcnRDRUFBTHNZQUFBREx3SUNJd0FCCksvVWhBQUFUR1FBQUF6RUNB
aU1BQVN0ZElnQUFaaGtBQUFNekFnSWpBQUVBSzVNaEFBQzNHUUFBQXpVQ0FpTVFBU3U3SWdBQWNo
a0EKQUFNMkFnSWpHQUVyc1NBQUFOTVlBQUFET0FJQ0l5QUJBQjkrR1FBQTdDSUFBQU01QWlyN0ln
QUFPQU03QWlzY0lRQUFQaGdBQUFNOApBZ0lqQUFFck5DRUFBRWtZQUFBRFBRSUNJd2dCSzB3aEFB
QXVHZ0FBQXo0Q0FpTVFBUUFmT2hvQUFBc2pBQUFEUHdJZmNCVUFBRWdqCkFBQURjd0VEZ3dJQUFH
OGpBQUFENFI5d0ZRQUFqQ01BQUFOc0FTcTRJd0FBS0FPQ0FTdGNJd0FBRXhzQUFBT0RBUUlqQUFF
cmFDTUEKQUl3YUFBQURoQUVDSXdnQks0QWpBQUNYR2dBQUE0WUJBaU1NQVMwWUE0Y0JLNnNqQUFC
ZUd3QUFBNGdCQWlNQUFTdXpJd0FBdVJRQQpBQU9KQVFJakFBRUFLNk1qQUFEY0dnQUFBNG9CQWlN
UUFRQUZveG9BQUI4VEd3QUF5aU1BQUFONkFTcmxJd0FBR0FOOEFTcy9Jd0FBCmdCb0FBQU45QVFJ
akFBRXJWeU1BQUJnYkFBQURmZ0VDSXdnQksrQWpBQUFZR3dBQUEzOEJBaU1RQVFBZkpCc0FBTzhq
QUFBRGdBRUcKR3lRQUFBZ0Rld2NQSkFBQWNCVUFBQU44QWlNQUFRY1ZKQUFBY0JVQUFBTjlBaU1F
QVFBRGFoc0FBQ2drQUFBRGZnTndGUUFBVVNRQQpBQU9BQTV3YkFBQmpKQUFBQTRzR2RTUUFBQ0FE
alFjQ0pBQUFPUllBQUFPT0FpTUFBUWNISkFBQWtSc0FBQU9QQWlNUUFRYzFKQUFBCmNCVUFBQU9R
QWlNWUFRZENKQUFBcHhzQUFBT1JBaU1jQVFBRHNoc0FBSWtrQUFBRGtnajNHd0FBQlFJY0FBQXFu
U1FBQUNBRHFBRXIKTXlNQUFGNGJBQUFEcVFFQ0l3QUJLL2tqQUFBSEhBQUFBNm9CQWlNWUFRQWZE
QndBQUtra0FBQURxd0VJTmh3QUFBVkNIQUFBS3JVawpBQUFRQTYwQkt5TWpBQUJ3RlFBQUE2NEJB
aU1BQVNzYkl3QUFSeHdBQUFPdkFRSWpDQUVBSDB3Y0FBREdKQUFBQTdBQkNGNGJBQUFGCmdod0FB
QVZNSEFBQUg0d2NBQURnSkFBQUE3QUJMdE1ZQUFBQkw0SVVBQUF2MHhnQUFBQUZuUndBQUIrdUhB
QUFBU1VBQUFPeUFUQUIKTDlNWUFBQXYweGdBQUFBRnZ4d0FBQi9NSEFBQUZ5VUFBQU8yQVM3VEdB
QUFBUy9UR0FBQUw0SVVBQUF2MHhnQUFBQUYzUndBQUIvegpIQUFBTGlVQUFBTzZBUzdUR0FBQUFT
OXdGUUFBTDRJVUFBQXYweGdBQUFBRkJCMEFBQjhhSFFBQVJ5VUFBQU8vQVNwY0pRQUFLQVBFCkFT
djFKQUFBc3h3QUFBUEZBUUlqQUFFckRTVUFBTkVjQUFBRHhnRUNJd2dCS3lFbEFBRDRIQUFBQThj
QkFpTVFBU3M3SlFBQUh4MEEKQUFQSUFRSWpHQUVyVXlVQUFOTVlBQUFEeVFFQ0l5QUJBQjhySFFB
QWJpVUFBQVBLQVFpRkhRQUFCWkVkQUFBdWpnSUFBQUV2aHh3QQpBQytSSEFBQUw5TVlBQUF2bGgw
QUFBQUZteDBBQUIrMkhRQUFnQ1VBQUFQUEFTcWlKUUFBb0FOQkFpdjRJQUFBTXhnQUFBTkNBZ0lq
CkFBRXJFaUVBQUhRYUFBQURRd0lDSTBnQkt4c2pBQUIySEFBQUEwUUNBeU9BQVFFcjF5UUFBTHNk
QUFBRFJRSURJNUFCQVN1WUpRQUEKMHhnQUFBTkdBZ01qbUFFQkFCL0hIUUFBdWlVQUFBRkhBZ2dr
SGdBQUJUQWVBQUFGT3dBQUFBWGdGd0FBSHo4ZUFBRDlKUUFBQWUwRApIM0FWQUFBbkpnQUFBeDRF
QlNBWUFBQUZ4eDBBQUI5aEhnQUFkU1lBQUFOSEFoOXdGUUFBblNZQUFBTkxCQVdZRmdBQUgzNGVB
QUN2CkpnQUFBOGNDS3NzbUFBQUlBOGtDSzhNbUFBQndGUUFBQThvQ0FpTUFBU3ZISmdBQWNCVUFB
QVBMQWdJakJBRUFCWThlQUFBZnVSNEEKQU5ZbUFBQUR6QUl1amdJQUFBRXZjUmdBQUMvVEdBQUFB
QVhLSGdBQUE5c2VBQUQySmdBQUE5Z0dCQ2NBQUNBRDJ3ZndKZ0FBdVJRQQpBQVBjQWlNQUFRZlhK
QUFBNEI0QUFBUGRBaU1RQVFlWUpRQUEweGdBQUFQZUFpTVlBUUFGNng0QUFBTWhId0FBRlNjQUFB
UGZCV29iCkFBQURNUjhBQUNvbkFBQURmZ002RlFBQVR5Y0FBQU03QXpvVkFBQm5Kd0FBQXowcWRp
Y0FBQkFEK1FNclJpY0FBRUVmQUFBRCtnTUMKSXdBQksxNG5BQUJNSHdBQUEvc0RBaU1JQVFBRlZ4
OEFBQitCSHdBQWlDY0FBQVA4QXdhN0p3QUFFQW9sQjdFbkFBQUlBUUFBQ2lZQwpJd0FCQjRRZEFB
QUlBUUFBQ2ljQ0l3RUJCN1luQUFCY0hnQUFDaWdDSXdnQkFBT1NId0FBeUNjQUFBb3BCWDRaQUFB
ZjB4OEFBT1VuCkFBQUtPUUlHbVNnQUFHZ0tLd2VvSndBQXlCOEFBQW9zQWlNQUFRZlZKd0FBMkI4
QUFBb3RBaU1RQVFmNEp3QUEyQjhBQUFvdUFpTVkKQVFjRktBQUFDQUVBQUFvdkFpTWdBUWNQS0FB
QTJCOEFBQW93QWlNb0FRY2pLQUFBQ0FFQUFBb3hBaU13QVFjdUtBQUEyQjhBQUFveQpBaU00QVFk
REtBQUFDQUVBQUFvekFpTkFBUWRRS0FBQTJCOEFBQW8wQWlOSUFRZG5LQUFBY1JnQUFBbzFBaU5R
QVFlQUtBQUFjQlVBCkFBbzJBaU5ZQVFlS0tBQUFjUmdBQUFvM0FpTmdBUUFGNUI4QUFER3BLQUFB
Q0FOakJDdFZKZ0FBWEI0QUFBTmtCQUlqQUFFclhDWUEKQUhBVkFBQURaUVFDSXdBQksyTW1BQUJt
SGdBQUEyWUVBaU1BQVN1UkpnQUFSQjRBQUFObkJBSWpBQUVydmgwQUFIRVlBQUFEYUFRQwpJd0FC
SzVVbUFBQnlIZ0FBQTJrRUFpTUFBU3VxSmdBQWd4NEFBQU5xQkFJakFBRXJ2U1lBQUw0ZUFBQURh
d1FDSXdBQksrVW1BQUFtCkh3QUFBMndFQWlNQUFTc0hKQUFBTmg4QUFBTnRCQUlqQUFFck95Y0FB
SVlmQUFBRGJnUUNJd0FCSzU0bkFBQ2hJQUFBQTI4RUFpTUEKQVFBcXhpZ0FBQkFEWUFRckdTWUFB
RkFlQUFBRFlRUUNJd0FCS3pzbUFBQndGUUFBQTJJRUFpTUVBU3RMSmdBQXBpQUFBQU53QkFJagpD
QUVBSDNBaEFBRGRLQUFBQVhFRUJmWUFBQUFlSUNrQUFBRUl1eUVBQUFYQklRQUFBOFloQUFBcEtR
QUFBUTBmT3dBQUFFTXBBQUFCClRnRUQxaUVBQUUwcEFBQUJ5eCtGSFFBQWZpa0FBQUhNQVI3ZUtR
QUFBUVg1SVFBQUEvOGhBQURyS1FBQUFTOEdLU29BQURBSlhnZDYKSFFBQTl4UUFBQWxmQWlNQUFR
Y1lLZ0FBdVJRQUFBbGdBaU1nQVFBRER5SUFBRXNxQUFBQllUSkFBVFlIRXlvQUFEWWlBQUFCTndJ
agpBQUVIcWlrQUFMa1VBQUFCT0FJak1BRUFBMEVpQUFCdEtnQUFBVGt5Y0FFN0J3QXFBQUJrSWdB
QUFUd0NJd0FCQjNRZEFBRDNGQUFBCkFUMENJMEFCQjRNcUFBQzVGQUFBQVQ0Q0kyQUJBQU52SWdB
QWpTb0FBQUUvSHNvcUFBQUJCYXdpQUFBRHNpSUFBTjBxQUFBQmh4N3YKS2dBQUFRakNJZ0FBQmNn
aUFBQUR6U0lBQVBrcUFBQUJiQjRQS3dBQUFRWGRJZ0FBQStNaUFBQXVLd0FBQVhVZVlTc0FBQUVG
OHlJQQpBQVA1SWdBQWN5c0FBQUdaQldRaUFBQWVqU3NBQUFFRkRpTUFBQjhVSXdBQW1Dc0FBQUdR
QVRPZUt3QUFDQXN5RUFlSkt3QUFHU01BCkFBc3pBaU1BQWdBenB5c0FBQWdNRGhBMEpTTUFBQUlq
QUFFQUJUNGpBQUFJOWdBQUFBVldJd0FBSHRrckFBQUJCV0FqQUFBRFppTUEKQVBFckFBQUJnUVdI
RlFBQU1oZ0JJQWNSTEFBQXhCUUFBQUVoQWlNQUFRY2RMQUFBZGlNQUFBRWlBaU1RQVFBRGV5TUFB
Q01zQUFBQgpJd0k0TEFBQUJRSURxU01BQUQ0c0FBQUJiUit3SXdBQVJTd0FBQUVOQVFBQkVRRWxE
aE1GQXc0UkFSQUdHdzdoZnd6bGZ3c0FBQUlrCkFBTU9QZ3NMQ3dBQUF4WUFTUk1ERGpvTE93c0FB
QVFtQUFBQUJROEFTUk1BQUFZVEFRTU9Dd3M2Q3pzTEFBQUhEUUFERGtrVE9nczcKQ3pnS01nc0FB
QWdtQUVrVEFBQUpKQUFERGdzTFBnc0FBQW9CQVVrVEFBQUxJUUJKRXk4TEFBQU1OQUFERGtrVFB3
dzZDenNMQWdvQQpBQTB1QVFNT09nczdCU2NNUHd3UkFSSUJRQW9nQ3dBQURqUUFBdzVKRXpvTE93
VUNDZ0FBRHdVQUF3NDZDenNGU1JNQ0JnQUFFQzRCCkF3NDZDenNGSnd4SkV6OE1FUUVTQVVBS0FB
QVJOQUFERGpvTE93VkpFd0lLQUFBU05BQUREam9MT3dWSkV3SUdBQUFUTGdFRERqb0wKT3dVbkRF
a1RQd3dSQVJJQlFBb2dDd0FBRkRRQUF3NDZDenNGU1JNY0NnQUFGVFFBQXc0NkN6c0ZTUk1BQUJZ
ZEFURVRFUUVTQVZnTApXUVVBQUJjMEFERVRBZ29BQUJnRkFERVRBZ29BQUJrRkFERVRBZ1lBQUJv
MEFERVRBZ1lBQUJzZEFURVRFUUVTQVZnTFdRc0FBQndGCkFERVRIQW9BQUIwZEFERVRFUUVTQVZn
TFdRVUFBQjRUQUFNT1BBd0FBQjhXQUVrVEF3NDZDenNGQUFBZ0N3RVJBUklCQUFBaEJBRUwKQ3pv
TE93c0FBQ0lvQUFNT0hBMEFBQ011QVFNT09nczdCU2NNSUFzQUFDUUZBQU1PT2dzN0JVa1RBQUFs
TGdFRERqb0xPd3NuREVrVApJQXNBQUNZRkFBTU9PZ3M3QzBrVEFBQW5OQUFERGpvTE93dEpFd0FB
S0FRQkN3czZDenNGQUFBcEJBRkpFMjBNQXc0TEN6b0xPd3NBCkFDb1RBUU1PQ3dzNkN6c0ZBQUFy
RFFBRERra1RPZ3M3QlRnS01nc0FBQ3dQQUFBQUxSY0JDd3M2Q3pzRkFBQXVGUUZKRXljTUFBQXYK
QlFCSkV3QUFNQlVCSnd3QUFERVhBUU1PQ3dzNkN6c0ZBQUF5RXdFTEN6b0xPd3NBQURNVEFRTU9D
d3M2Q3pzTDVuOExBQUEwSEFCSgpFemdLTWdzQUFBQUpBd0FBQWdEY0FRQUFBUUg3RGcwQUFRRUJB
UUFBQUFFQUFBRXZWWE5sY25NdllXeGxlR05vY21semRHVnVjMlZ1CkwzZGxZbXRwZEM5SmJuUmxj
bTVoYkM5WFpXSkxhWFJUZVhOMFpXMUpiblJsY21aaFkyVUFMMU41YzNSbGJTOU1hV0p5WVhKNUww
WnkKWVcxbGQyOXlhM012VTJWamRYSnBkSGt1Wm5KaGJXVjNiM0pyTDBobFlXUmxjbk1BTDNWemNp
OXBibU5zZFdSbEFDOVRlWE4wWlcwdgpUR2xpY21GeWVTOUdjbUZ0WlhkdmNtdHpMME52Y21WR2Iz
VnVaR0YwYVc5dUxtWnlZVzFsZDI5eWF5OUlaV0ZrWlhKekFDOTFjM0l2CmFXNWpiSFZrWlM5dllt
cGpBQzlUZVhOMFpXMHZUR2xpY21GeWVTOUdjbUZ0WlhkdmNtdHpMMFp2ZFc1a1lYUnBiMjR1Wm5K
aGJXVjMKYjNKckwwaGxZV1JsY25NQUFGZGxZazVsZDB0bGVVZGxibVZ5WVhScGIyNHViUUFCQUFC
VFpXTkJjMjR4Vkhsd1pYTXVhQUFDQUFCagpjM050ZEhsd1pTNW9BQUlBQUZkbFlrdHBkRk41YzNS
bGJVbHVkR1Z5Wm1GalpTNW9BQUVBQUZObFkwdGxlUzVvQUFJQUFFMWhZMVI1CmNHVnpMbWdBQXdB
QVEwWlRkSEpwYm1jdWFBQUVBQUJqYzNOdFlYQndiR1V1YUFBQ0FBQjROVEE1WkdWbWN5NW9BQUlB
QUdOemMyMXIKY21Gd2FTNW9BQUlBQUU1VFQySnFaV04wTG1nQUJRQUFUbE5CY25KaGVTNW9BQVlB
QUFBQUNRSUFBQUFBQUFBQUFBT0FBZ0VLVEsyRApBd3VRQ2dJbEdnZ25Bd29JU2dNTUNMcnpDSXFT
QXhZSVNncXZDUFpPQ2dJckZhMndDSGgxZFhtdUFqRVVDSWNJNlFnOUNGRFBDTWtJCmZBTVRBbHNC
QXdrSW5nT1hmZ2hLQ0NjQ0toTUNSeE1ERWdJMEFRTkpTblc3eVFNOXJBTUpBaUlCQTcwQmtPa0RD
d2c4QWlrWkNHc0kKSVFoR3JRZ3pBd29DS1FFREN3SXVBUU9aZmdpczF3UG9BYXdDSXhYVmd3aERB
NDE5MWdqWENEMElaOGtDTHhTRGd3UHVBb0s3V1pFSQpaNThEekg2c2xnT3ZBZGE3V2J0WnUxbTdX
YnNJVEFNSkFpWUJDa3NDSXhZRERyckxqUU1RNUFoNENnaHF2cTI3dXdpN0EwNVlDSlFECkRzalpq
UU1oQ0pEekNQa0RpbjZRQS9nQkFpa0JDTHVEQTBHNkNJWUREZ2dneTQwREsrUUREb0tSWEFJU0FB
RUJBQUFBQUFBQUFBQVoKQUFBQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFB
QUFBRUVBQUFBQUFBQUFBUUJWUVFBQUFBQUFBQUNKQUFBQQpBQUFBQUFFQVhBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBZ0FBQUFBQUFBQUQ0QUFBQUFBQUFBQVFCVVBnQUFBQUFBQUFETUFBQUFBQUFBCkFB
TUFkcmgvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFPZ0FBQUFBQUFBQUJBRkU2QUFB
QUFBQUFBR3dBQUFBQUFBQUEKQVFCZUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBTndB
QUFBQUFBQUFCQUZJM0FBQUFBQUFBQUlrQUFBQUFBQUFBQVFCZgpBQUFBQUFBQUFBQUFBQUFBQUFB
QUFDQUFBQUFBQUFBQU5BQUFBQUFBQUFBQkFGZzBBQUFBQUFBQUFMc0FBQUFBQUFBQUFRQmRBQUFB
CkFBQUFBQUFBQUFBQUFBQUFBRThBQUFBQUFBQUFVd0FBQUFBQUFBQUJBRk5vQUFBQUFBQUFBR3dB
QUFBQUFBQUFBUUJUQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUlVQUFBQUFBQUFBaVFBQUFBQUFBQUFC
QUZPeUFBQUFBQUFBQUxzQUFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQQpBQUFBQUFBQUFOQUFBQUFB
QUFBQS9BQUFBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBZEFRQUFB
QUFBCkFBRUFWUjBCQUFBQUFBQUFxZ0lBQUFBQUFBQUJBRndBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUVBQUFBQUFBQWFBUUFBQUFBQUFBRUEKVkJvQkFBQUFBQUFBZFFRQUFBQUFBQUFCQUY0QUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFYQVFBQUFBQUFBQUVBVVJjQgpBQUFBQUFBQVR3SUFB
QUFBQUFBQkFGMEFBQUFBQUFBQUFBQUFBQUFBQUFBQVVnRUFBQUFBQUFEakFRQUFBQUFBQUFFQVh3
QUdBQUFBCkFBQUFHQVlBQUFBQUFBQUJBRjhBQUFBQUFBQUFBQUFBQUFBQUFBQUF0QUVBQUFBQUFB
RERBUUFBQUFBQUFBRUFVTnNCQUFBQUFBQUEKNHdFQUFBQUFBQUFCQUZBUkFnQUFBQUFBQUJrQ0FB
QUFBQUFBQVFCUVJ3SUFBQUFBQUFCUEFnQUFBQUFBQUFFQVVLSUNBQUFBQUFBQQpxZ0lBQUFBQUFB
QUJBRkM5QWdBQUFBQUFBTVVDQUFBQUFBQUFBUUJRNndNQUFBQUFBQUR6QXdBQUFBQUFBQUVBVS84
REFBQUFBQUFBCkRnUUFBQUFBQUFBQkFGQXZCQUFBQUFBQUFEY0VBQUFBQUFBQUFRQlF0QVFBQUFB
QUFBQzhCQUFBQUFBQUFBRUFVR1FGQUFBQUFBQUEKYkFVQUFBQUFBQUFCQUZBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBdlFFQUFBQUFBQUQwQmdBQUFBQUFBQUlBRUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFB
QU5BSUFBQUFBQUFCUEFnQUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFETUFnQUFBQUFB
QUpFREFBQUFBQUFBCkFRQmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFOTUNBQUFBQUFBQTZRSUFBQUFB
QUFBQkFGVUFBQUFBQUFBQUFBQUFBQUFBQUFBQTRRSUEKQUFBQUFBRHBBZ0FBQUFBQUFBRUFVd0FB
QUFBQUFBQUFBQUFBQUFBQUFBQ05Bd0FBQUFBQUFKRURBQUFBQUFBQUFRQlR2QU1BQUFBQQpBQURB
QXdBQUFBQUFBQUVBVStJREFBQUFBQUFBNGdNQUFBQUFBQUFCQUZNQUFBQUFBQUFBQUFBQUFBQUFB
QUFBbFFNQUFBQUFBQUNvCkF3QUFBQUFBQUFFQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFDOEF3QUFB
QUFBQU1BREFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUEKQUFBQUFPSUVBQUFBQUFBQTZnUUFB
QUFBQUFBQkFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWN3VUFBQUFBQUFDOUJRQUFBQUFBQUFFQQpV
UUFBQUFBQUFBQUFBQUFBQUFBQUFBQjZCUUFBQUFBQUFLVUZBQUFBQUFBQUFRQlVBQUFBQUFBQUFB
QUFBQUFBQUFBQUFKa0ZBQUFBCkFBQUFHQVlBQUFBQUFBQUJBRjRBQUFBQUFBQUFBQUFBQUFBQUFB
QUFyUVVBQUFBQUFBQVlCZ0FBQUFBQUFBRUFYQUFBQUFBQUFBQUEKQUFBQUFBQUFBQURSQlFBQUFB
QUFBQmdHQUFBQUFBQUFBUUJUQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHQUFBQUFBQUFHQVlBQUFB
QQpBQUFCQUY4QUFBQUFBQUFBQUFBQUFBQUFBQUFBV2dZQUFBQUFBQUJuQmdBQUFBQUFBQUVBVlFB
QUFBQUFBQUFBQUFBQUFBQUFBQUJqCkJnQUFBQUFBQUdjR0FBQUFBQUFBQVFCUUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBSEFBQUFBQUFBR1FjQUFBQUFBQUFCQUZVQUFBQUEKQUFBQUFBQUFBQUFBQUFB
QUFBY0FBQUFBQUFBaUJ3QUFBQUFBQUFFQVZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJ3QUFBQUFB
QUNjSApBQUFBQUFBQUFRQlJNd2NBQUFBQUFBQmtCd0FBQUFBQUFBRUFVUUFBQUFBQUFBQUFBQUFB
QUFBQUFBQXNCd0FBQUFBQUFETUhBQUFBCkFBQUFBUUJRUUFjQUFBQUFBQUJWQndBQUFBQUFBQUVB
VXdBQUFBQUFBQUFBQUFBQUFBQUFBQUJ3QndBQUFBQUFBSWNIQUFBQUFBQUEKQVFCVmh3Y0FBQUFB
QUFEL0J3QUFBQUFBQUFFQVhnQUFBQUFBQUFBQUFBQUFBQUFBQUFCd0J3QUFBQUFBQUlRSEFBQUFB
QUFBQVFCVQpoQWNBQUFBQUFBQzlCd0FBQUFBQUFBRUFYd0FBQUFBQUFBQUFBQUFBQUFBQUFBRFlC
d0FBQUFBQUFQOEhBQUFBQUFBQUFRQmVBQUFBCkFBQUFBQUFBQUFBQUFBQUFBUGNIQUFBQUFBQUEv
d2NBQUFBQUFBQUJBRkFOQ0FBQUFBQUFBQnNJQUFBQUFBQUFBUUJlQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUtJSUFBQUFBQUFBQ1FrQUFBQUFBQUFCQUYwVUNRQUFBQUFBQUJ3SkFBQUFBQUFBQVFCZEFB
QUFBQUFBQUFBQQpBQUFBQUFBQUFMZ0lBQUFBQUFBQXZ3Z0FBQUFBQUFBQkFGSUFBQUFBQUFBQUFB
QUFBQUFBQUFBQXZBZ0FBQUFBQUFEbENBQUFBQUFBCkFBRUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFB
RGxDQUFBQUFBQUFPOElBQUFBQUFBQUFRQlEvQWdBQUFBQUFBQUpDUUFBQUFBQUFBRUEKVXdBQUFB
QUFBQUFBQUFBQUFBQUFBQUI1QWdBQUFnQUFBQUFBeUNNQUFJOGVBQUJqYzNOdFgzSmhibWRsQU9R
ZkFBQmpjM050WDJ0eQpYM0J5YjJacGJHVUFUQndBQUdOemMyMWZjMkZ0Y0d4bFozSnZkWEFBNmhZ
QUFHTnpjMjFmYTJWNWFHVmhaR1Z5QUtZZ0FBQmpjM050ClgyTnZiblJsZUhSZllYUjBjbWxpZFhS
bFgzWmhiSFZsQUNzZEFBQmpjM050WDIxbGJXOXllVjltZFc1amN3QkFBQUFBVTJWalFYTnUKTVZS
bGJYQnNZWFJsWDNOMGNuVmpkQUIrR1FBQVkzTnpiVjlqWlhKMFozSnZkWEFBc2hzQUFHTnpjMjFm
YzNWaWMyVnlkbWxqWlY5MQphV1FBT2hvQUFHTnpjMjFmWW1GelpWOWpaWEowY3dESEhRQUFZM056
YlY5aFkyTmxjM05mWTNKbFpHVnVkR2xoYkhNQWZCZ0FBR056CmMyMWZaVzVqYjJSbFpGOWpaWEow
QUF3Y0FBQmpjM050WDNOaGJYQnNaUUJxR3dBQVkzTnpiVjkyWlhKemFXOXVBT0FYQUFCamMzTnQK
WDJ0bGVRQStJd0FBVGxOQmNuSmhlUURVR0FBQVkzTnpiVjl3WVhKelpXUmZZMlZ5ZEFBUElnQUFZ
M056YlY5NE5UQTVYM04xWW1wbApZM1JmY0hWaWJHbGpYMnRsZVY5cGJtWnZBSEFoQUFCamMzTnRY
Mk52Ym5SbGVIUmZZWFIwY21saWRYUmxBRGNaQUFCamMzTnRYMk5sCmNuUmZjR0ZwY2dDU0ZBQUFZ
M056YlY5a1lYUmhBT3NlQUFCamMzTnRYMk55ZVhCMGIxOWtZWFJoQUNRYkFBQmpjM050WDJ4cGMz
UUEKa2g4QUFHTnpjMjFmYTNKZmJtRnRaUURRRkFBQVkzTnpiVjk0TlRBNVgyRnNaMjl5YVhSb2JW
OXBaR1Z1ZEdsbWFXVnlBSmdXQUFCagpjM050WDJSaGRHVUFWeDhBQUdOemMyMWZaR3hmWkdKZmFH
RnVaR3hsQUNVakFBQk9VMDlpYW1WamRBQ2pHZ0FBWTNOemJWOXNhWE4wClgyVnNaVzFsYm5RQTlC
VUFBR056YzIxZlozVnBaQUFBQUFBQVFYQndiR1VnVEV4V1RTQjJaWEp6YVc5dUlEVXVNQ0FvWTJ4
aGJtY3QKTlRBd0xqQXVOakFwSUNoaVlYTmxaQ0J2YmlCTVRGWk5JRE11TTNOMmJpa0FMMVZ6WlhK
ekwyRnNaWGhqYUhKcGMzUmxibk5sYmk5MwpaV0pyYVhRdlNXNTBaWEp1WVd3dlYyVmlTMmwwVTNs
emRHVnRTVzUwWlhKbVlXTmxMMWRsWWs1bGQwdGxlVWRsYm1WeVlYUnBiMjR1CmJRQXZWWE5sY25N
dllXeGxlR05vY21semRHVnVjMlZ1TDNkbFltdHBkQzlKYm5SbGNtNWhiQzlYWldKTGFYUlRlWE4w
WlcxSmJuUmwKY21aaFkyVUFUbVYwYzJOaGNHVkRaWEowVTJWeGRXVnVZMlZVWlcxd2JHRjBaUUJy
YVc1a0FIVnVjMmxuYm1Wa0lHbHVkQUIxYVc1MApNekpmZEFCdlptWnpaWFFBYzNWaUFITnBlbVVB
VTJWalFYTnVNVlJsYlhCc1lYUmxYM04wY25WamRBQlRaV05CYzI0eFZHVnRjR3hoCmRHVUFhVzUw
QUZCMVlteHBZMHRsZVVGdVpFTm9ZV3hzWlc1blpWUmxiWEJzWVhSbEFGTnBaMjVsWkZCMVlteHBZ
MHRsZVVGdVpFTm8KWVd4c1pXNW5aVlJsYlhCc1lYUmxBR1Z1WTA1MWJHd0FkVzV6YVdkdVpXUWdZ
MmhoY2dCMWFXNTBPRjkwQUhWcGJuUTRBR2R1Y2s1MQpiR3hCYkdkUVlYSmhiWE1BWjI1eVUybG5i
Z0JwYm5Rek1sOTBBSE5wYm5Rek1nQkRVMU5OWDFKRlZGVlNUZ0J1YzNOQmNuSmhlVk5wCmVtVUFW
MHRUYVdkdVpXUlFkV0pzYVdOTFpYbEJibVJEYUdGc2JHVnVaMlZUZEhKcGJtY0FYMTlEUmxOMGNt
bHVad0JEUmxOMGNtbHUKWjFKbFpnQlhTMEZrWkVObGNuUnBabWxqWVhSbFZHOUxaWGxqYUdGcGJr
WnliMjFFWVhSaEFGOUNiMjlzQUZkTFFXUmtRMlZ5ZEdsbQphV05oZEdWelZHOUxaWGxqYUdGcGJr
WnliMjFFWVhSaEFGZExRMlZ5ZEdsbWFXTmhkR1ZRWVhKelpWSmxjM1ZzZEZOMVkyTmxaV1JsClpB
QlhTME5sY25ScFptbGpZWFJsVUdGeWMyVlNaWE4xYkhSR1lXbHNaV1FBVjB0RFpYSjBhV1pwWTJG
MFpWQmhjbk5sVW1WemRXeDAKVUV0RFV6Y0FWMHREWlhKMGFXWnBZMkYwWlZCaGNuTmxVbVZ6ZFd4
MEFHZHVja1p5WldWRGMzTnRSR0YwWVFCbGJtTnZaR1ZDWVhObApOalFBWjI1eVIyVjBVM1ZpYWxC
MVlrdGxlUUJUU1c1ME16SUFUMU5UZEdGMGRYTUFaMjV5UVdSa1EyOXVkR1Y0ZEVGMGRISnBZblYw
ClpRQkRVMU5OWDBGRFRGOUJWVlJJVDFKSldrRlVTVTlPWDFSQlIxOVdSVTVFVDFKZlJFVkdTVTVG
UkY5VFZFRlNWQUJEVTFOTlgwRkQKVEY5QlZWUklUMUpKV2tGVVNVOU9YMEZPV1FCRFUxTk5YMEZE
VEY5QlZWUklUMUpKV2tGVVNVOU9YMHhQUjBsT0FFTlRVMDFmUVVOTQpYMEZWVkVoUFVrbGFRVlJK
VDA1ZlIwVk9TMFZaQUVOVFUwMWZRVU5NWDBGVlZFaFBVa2xhUVZSSlQwNWZSRVZNUlZSRkFFTlRV
MDFmClFVTk1YMEZWVkVoUFVrbGFRVlJKVDA1ZlJWaFFUMUpVWDFkU1FWQlFSVVFBUTFOVFRWOUJR
MHhmUVZWVVNFOVNTVnBCVkVsUFRsOUYKV0ZCUFVsUmZRMHhGUVZJQVExTlRUVjlCUTB4ZlFWVlVT
RTlTU1ZwQlZFbFBUbDlKVFZCUFVsUmZWMUpCVUZCRlJBQkRVMU5OWDBGRApURjlCVlZSSVQxSkpX
a0ZVU1U5T1gwbE5VRTlTVkY5RFRFVkJVZ0JEVTFOTlgwRkRURjlCVlZSSVQxSkpXa0ZVU1U5T1gx
TkpSMDRBClExTlRUVjlCUTB4ZlFWVlVTRTlTU1ZwQlZFbFBUbDlGVGtOU1dWQlVBRU5UVTAxZlFV
Tk1YMEZWVkVoUFVrbGFRVlJKVDA1ZlJFVkQKVWxsUVZBQkRVMU5OWDBGRFRGOUJWVlJJVDFKSldr
RlVTVTlPWDAxQlF3QkRVMU5OWDBGRFRGOUJWVlJJVDFKSldrRlVTVTlPWDBSRgpVa2xXUlFCRFUx
Tk5YMEZEVEY5QlZWUklUMUpKV2tGVVNVOU9YMFJDVTE5RFVrVkJWRVVBUTFOVFRWOUJRMHhmUVZW
VVNFOVNTVnBCClZFbFBUbDlFUWxOZlJFVk1SVlJGQUVOVFUwMWZRVU5NWDBGVlZFaFBVa2xhUVZS
SlQwNWZSRUpmVWtWQlJBQkRVMU5OWDBGRFRGOUIKVlZSSVQxSkpXa0ZVU1U5T1gwUkNYMGxPVTBW
U1ZBQkRVMU5OWDBGRFRGOUJWVlJJVDFKSldrRlVTVTlPWDBSQ1gwMVBSRWxHV1FCRApVMU5OWDBG
RFRGOUJWVlJJVDFKSldrRlVTVTlPWDBSQ1gwUkZURVZVUlFCclUyVmpRM0psWkdWdWRHbGhiRlI1
Y0dWRVpXWmhkV3gwCkFHdFRaV05EY21Wa1pXNTBhV0ZzVkhsd1pWZHBkR2hWU1FCclUyVmpRM0ps
WkdWdWRHbGhiRlI1Y0dWT2IxVkpBRU5UVTAxZlFVeEgKU1VSZlRrOU9SUUJEVTFOTlgwRk1SMGxF
WDBOVlUxUlBUUUJEVTFOTlgwRk1SMGxFWDBSSUFFTlRVMDFmUVV4SFNVUmZVRWdBUTFOVApUVjlC
VEVkSlJGOUxSVUVBUTFOVFRWOUJURWRKUkY5TlJESUFRMU5UVFY5QlRFZEpSRjlOUkRRQVExTlRU
VjlCVEVkSlJGOU5SRFVBClExTlRUVjlCVEVkSlJGOVRTRUV4QUVOVFUwMWZRVXhIU1VSZlRraEJV
MGdBUTFOVFRWOUJURWRKUkY5SVFWWkJUQUJEVTFOTlgwRk0KUjBsRVgxSkpVRVZOUkFCRFUxTk5Y
MEZNUjBsRVgwbENRMGhCVTBnQVExTlRUVjlCVEVkSlJGOVNTVkJGVFVGREFFTlRVMDFmUVV4SApT
VVJmUkVWVEFFTlRVMDFmUVV4SFNVUmZSRVZUV0FCRFUxTk5YMEZNUjBsRVgxSkVSVk1BUTFOVFRW
OUJURWRKUkY4elJFVlRYek5MClJWbGZSVVJGQUVOVFUwMWZRVXhIU1VSZk0wUkZVMTh5UzBWWlgw
VkVSUUJEVTFOTlgwRk1SMGxFWHpORVJWTmZNVXRGV1Y5RlJVVUEKUTFOVFRWOUJURWRKUkY4elJF
VlRYek5MUlZrQVExTlRUVjlCVEVkSlJGOHpSRVZUWHpOTFJWbGZSVVZGQUVOVFUwMWZRVXhIU1VS
ZgpNMFJGVTE4eVMwVlpBRU5UVTAxZlFVeEhTVVJmTTBSRlUxOHlTMFZaWDBWRlJRQkRVMU5OWDBG
TVIwbEVYek5FUlZOZk1VdEZXUUJEClUxTk5YMEZNUjBsRVgwbEVSVUVBUTFOVFRWOUJURWRKUkY5
U1F6SUFRMU5UVFY5QlRFZEpSRjlTUXpVQVExTlRUVjlCVEVkSlJGOVMKUXpRQVExTlRUVjlCVEVk
SlJGOVRSVUZNQUVOVFUwMWZRVXhIU1VSZlEwRlRWQUJEVTFOTlgwRk1SMGxFWDBKTVQxZEdTVk5J
QUVOVApVMDFmUVV4SFNVUmZVMHRKVUVwQlEwc0FRMU5UVFY5QlRFZEpSRjlNVlVOSlJrVlNBRU5U
VTAxZlFVeEhTVVJmVFVGRVVsbEhRUUJEClUxTk5YMEZNUjBsRVgwWkZRVXdBUTFOVFRWOUJURWRK
UkY5U1JVUlBRd0JEVTFOTlgwRk1SMGxFWDFKRlJFOURNd0JEVTFOTlgwRk0KUjBsRVgweFBTMGtB
UTFOVFRWOUJURWRKUkY5TFNGVkdWUUJEVTFOTlgwRk1SMGxFWDB0SVFVWlNSUUJEVTFOTlgwRk1S
MGxFWDAxTgpRZ0JEVTFOTlgwRk1SMGxFWDBkUFUxUUFRMU5UVFY5QlRFZEpSRjlUUVVaRlVnQkRV
MU5OWDBGTVIwbEVYME5TUVVJQVExTlRUVjlCClRFZEpSRjlTVTBFQVExTlRUVjlCVEVkSlJGOUVV
MEVBUTFOVFRWOUJURWRKUkY5TlJEVlhhWFJvVWxOQkFFTlRVMDFmUVV4SFNVUmYKVFVReVYybDBh
RkpUUVFCRFUxTk5YMEZNUjBsRVgwVnNSMkZ0WVd3QVExTlRUVjlCVEVkSlJGOU5SREpTWVc1a2Iy
MEFRMU5UVFY5QgpURWRKUkY5TlJEVlNZVzVrYjIwQVExTlRUVjlCVEVkSlJGOVRTRUZTWVc1a2Iy
MEFRMU5UVFY5QlRFZEpSRjlFUlZOU1lXNWtiMjBBClExTlRUVjlCVEVkSlJGOVRTRUV4VjJsMGFG
SlRRUUJEVTFOTlgwRk1SMGxFWDBORVRVWUFRMU5UVFY5QlRFZEpSRjlEUVZOVU13QkQKVTFOTlgw
Rk1SMGxFWDBOQlUxUTFBRU5UVTAxZlFVeEhTVVJmUjJWdVpYSnBZMU5sWTNKbGRBQkRVMU5OWDBG
TVIwbEVYME52Ym1OaApkRUpoYzJWQmJtUkxaWGtBUTFOVFRWOUJURWRKUkY5RGIyNWpZWFJMWlhs
QmJtUkNZWE5sQUVOVFUwMWZRVXhIU1VSZlEyOXVZMkYwClFtRnpaVUZ1WkVSaGRHRUFRMU5UVFY5
QlRFZEpSRjlEYjI1allYUkVZWFJoUVc1a1FtRnpaUUJEVTFOTlgwRk1SMGxFWDFoUFVrSmgKYzJW
QmJtUkVZWFJoQUVOVFUwMWZRVXhIU1VSZlJYaDBjbUZqZEVaeWIyMUxaWGtBUTFOVFRWOUJURWRK
UkY5VFUwd3pVSEpsVFdGegpkR1Z5UjJWdUFFTlRVMDFmUVV4SFNVUmZVMU5NTTAxaGMzUmxja1Js
Y21sMlpRQkRVMU5OWDBGTVIwbEVYMU5UVEROTFpYbEJibVJOCllXTkVaWEpwZG1VQVExTlRUVjlC
VEVkSlJGOVRVMHd6VFVRMVgwMUJRd0JEVTFOTlgwRk1SMGxFWDFOVFRETlRTRUV4WDAxQlF3QkQK
VTFOTlgwRk1SMGxFWDFCTFExTTFYMUJDUzBSR01WOU5SRFVBUTFOVFRWOUJURWRKUkY5UVMwTlRO
VjlRUWt0RVJqRmZUVVF5QUVOVApVMDFmUVV4SFNVUmZVRXREVXpWZlVFSkxSRVl4WDFOSVFURUFR
MU5UVFY5QlRFZEpSRjlYY21Gd1RIbHVhM01BUTFOVFRWOUJURWRKClJGOVhjbUZ3VTBWVVgwOUJS
VkFBUTFOVFRWOUJURWRKUkY5Q1FWUlBUZ0JEVTFOTlgwRk1SMGxFWDBWRFJGTkJBRU5UVTAxZlFV
eEgKU1VSZlRVRlpSa3haQUVOVFUwMWZRVXhIU1VSZlNsVk9TVkJGVWdCRFUxTk5YMEZNUjBsRVgw
WkJVMVJJUVZOSUFFTlRVMDFmUVV4SApTVVJmTTBSRlV3QkRVMU5OWDBGTVIwbEVYMU5UVEROTlJE
VUFRMU5UVFY5QlRFZEpSRjlUVTB3elUwaEJNUUJEVTFOTlgwRk1SMGxFClgwWnZjblJsZW5waFZH
bHRaWE4wWVcxd0FFTlRVMDFmUVV4SFNVUmZVMGhCTVZkcGRHaEVVMEVBUTFOVFRWOUJURWRKUkY5
VFNFRXgKVjJsMGFFVkRSRk5CQUVOVFUwMWZRVXhIU1VSZlJGTkJYMEpUUVVaRkFFTlRVMDFmUVV4
SFNVUmZSVU5FU0FCRFUxTk5YMEZNUjBsRQpYMFZEVFZGV0FFTlRVMDFmUVV4SFNVUmZVRXREVXpF
eVgxTklRVEZmVUVKRkFFTlRVMDFmUVV4SFNVUmZSVU5PVWtFQVExTlRUVjlCClRFZEpSRjlUU0VF
eFYybDBhRVZEVGxKQkFFTlRVMDFmUVV4SFNVUmZSVU5GVXdCRFUxTk5YMEZNUjBsRVgwVkRRVVZU
QUVOVFUwMWYKUVV4SFNVUmZVMGhCTVVoTlFVTUFRMU5UVFY5QlRFZEpSRjlHU1ZCVE1UZzJVbUZ1
Wkc5dEFFTlRVMDFmUVV4SFNVUmZSVU5EQUVOVApVMDFmUVV4SFNVUmZUVkZXQUVOVFUwMWZRVXhI
U1VSZlRsSkJBRU5UVTAxZlFVeEhTVVJmU1c1MFpXeFFiR0YwWm05eWJWSmhibVJ2CmJRQkRVMU5O
WDBGTVIwbEVYMVZVUXdCRFUxTk5YMEZNUjBsRVgwaEJWa0ZNTXdCRFUxTk5YMEZNUjBsRVgwaEJW
a0ZNTkFCRFUxTk4KWDBGTVIwbEVYMGhCVmtGTU5RQkRVMU5OWDBGTVIwbEVYMVJKUjBWU0FFTlRV
MDFmUVV4SFNVUmZUVVExU0UxQlF3QkRVMU5OWDBGTQpSMGxFWDFCTFExTTFYMUJDUzBSR01nQkRV
MU5OWDBGTVIwbEVYMUpWVGs1SlRrZGZRMDlWVGxSRlVnQkRVMU5OWDBGTVIwbEVYMHhCClUxUUFR
MU5UVFY5QlRFZEpSRjlXUlU1RVQxSmZSRVZHU1U1RlJBQkRVMU5OWDB0RldWVlRSVjlCVGxrQVEx
TlRUVjlMUlZsVlUwVmYKUlU1RFVsbFFWQUJEVTFOTlgwdEZXVlZUUlY5RVJVTlNXVkJVQUVOVFUw
MWZTMFZaVlZORlgxTkpSMDRBUTFOVFRWOUxSVmxWVTBWZgpWa1ZTU1VaWkFFTlRVMDFmUzBWWlZW
TkZYMU5KUjA1ZlVrVkRUMVpGVWdCRFUxTk5YMHRGV1ZWVFJWOVdSVkpKUmxsZlVrVkRUMVpGClVn
QkRVMU5OWDB0RldWVlRSVjlYVWtGUUFFTlRVMDFmUzBWWlZWTkZYMVZPVjFKQlVBQkRVMU5OWDB0
RldWVlRSVjlFUlZKSlZrVUEKUTFOVFRWOUxSVmxCVkZSU1gxSkZWRlZTVGw5RVJVWkJWVXhVQUVO
VFUwMWZTMFZaUVZSVVVsOVNSVlJWVWs1ZlJFRlVRUUJEVTFOTgpYMHRGV1VGVVZGSmZVa1ZVVlZK
T1gxSkZSZ0JEVTFOTlgwdEZXVUZVVkZKZlVrVlVWVkpPWDA1UFRrVUFRMU5UVFY5TFJWbEJWRlJT
ClgxQkZVazFCVGtWT1ZBQkRVMU5OWDB0RldVRlVWRkpmVUZKSlZrRlVSUUJEVTFOTlgwdEZXVUZV
VkZKZlRVOUVTVVpKUVVKTVJRQkQKVTFOTlgwdEZXVUZVVkZKZlUwVk9VMGxVU1ZaRkFFTlRVMDFm
UzBWWlFWUlVVbDlGV0ZSU1FVTlVRVUpNUlFCRFUxTk5YMHRGV1VGVQpWRkpmUVV4WFFWbFRYMU5G
VGxOSlZFbFdSUUJEVTFOTlgwdEZXVUZVVkZKZlRrVldSVkpmUlZoVVVrRkRWRUZDVEVVQWJtOUZj
bklBCmEwTkdVM1J5YVc1blJXNWpiMlJwYm1kTllXTlNiMjFoYmdCclEwWlRkSEpwYm1kRmJtTnZa
R2x1WjFkcGJtUnZkM05NWVhScGJqRUEKYTBOR1UzUnlhVzVuUlc1amIyUnBibWRKVTA5TVlYUnBi
akVBYTBOR1UzUnlhVzVuUlc1amIyUnBibWRPWlhoMFUzUmxjRXhoZEdsdQpBR3REUmxOMGNtbHVa
MFZ1WTI5a2FXNW5RVk5EU1VrQWEwTkdVM1J5YVc1blJXNWpiMlJwYm1kVmJtbGpiMlJsQUd0RFJs
TjBjbWx1ClowVnVZMjlrYVc1blZWUkdPQUJyUTBaVGRISnBibWRGYm1OdlpHbHVaMDV2Ymt4dmMz
TjVRVk5EU1VrQWEwTkdVM1J5YVc1blJXNWoKYjJScGJtZFZWRVl4TmdCclEwWlRkSEpwYm1kRmJt
TnZaR2x1WjFWVVJqRTJRa1VBYTBOR1UzUnlhVzVuUlc1amIyUnBibWRWVkVZeApOa3hGQUd0RFJs
TjBjbWx1WjBWdVkyOWthVzVuVlZSR016SUFhME5HVTNSeWFXNW5SVzVqYjJScGJtZFZWRVl6TWtK
RkFHdERSbE4wCmNtbHVaMFZ1WTI5a2FXNW5WVlJHTXpKTVJRQlZTVzUwTXpJQVEwWlRkSEpwYm1k
RmJtTnZaR2x1WndCRFJsTjBjbWx1WjBKMWFXeDAKU1c1RmJtTnZaR2x1WjNNQVExTlRUVjlHUVV4
VFJRQkRVMU5OWDFSU1ZVVUFRMU5UVFY5RFJWSlVYMVZPUzA1UFYwNEFRMU5UVFY5RApSVkpVWDFo
Zk5UQTVkakVBUTFOVFRWOURSVkpVWDFoZk5UQTVkaklBUTFOVFRWOURSVkpVWDFoZk5UQTVkak1B
UTFOVFRWOURSVkpVClgxQkhVQUJEVTFOTlgwTkZVbFJmVTFCTFNRQkRVMU5OWDBORlVsUmZVMFJU
U1hZeEFFTlRVMDFmUTBWU1ZGOUpiblJsYkFCRFUxTk4KWDBORlVsUmZXRjgxTURsZlFWUlVVa2xD
VlZSRkFFTlRVMDFmUTBWU1ZGOVlPVjlCVkZSU1NVSlZWRVVBUTFOVFRWOURSVkpVWDFSVgpVRXhG
QUVOVFUwMWZRMFZTVkY5QlEweGZSVTVVVWxrQVExTlRUVjlEUlZKVVgwMVZURlJKVUV4RkFFTlRV
MDFmUTBWU1ZGOU1RVk5VCkFFTlRVMDFmUTB4ZlExVlRWRTlOWDBORlVsUmZWRmxRUlFCRFUxTk5Y
ME5GVWxSZlJVNURUMFJKVGtkZlZVNUxUazlYVGdCRFUxTk4KWDBORlVsUmZSVTVEVDBSSlRrZGZR
MVZUVkU5TkFFTlRVMDFmUTBWU1ZGOUZUa05QUkVsT1IxOUNSVklBUTFOVFRWOURSVkpVWDBWTwpR
MDlFU1U1SFgwUkZVZ0JEVTFOTlgwTkZVbFJmUlU1RFQwUkpUa2RmVGtSU0FFTlRVMDFmUTBWU1ZG
OUZUa05QUkVsT1IxOVRSVmhRClVnQkRVMU5OWDBORlVsUmZSVTVEVDBSSlRrZGZVRWRRQUVOVFUw
MWZRMFZTVkY5RlRrTlBSRWxPUjE5TlZVeFVTVkJNUlFCRFUxTk4KWDBORlVsUmZSVTVEVDBSSlRr
ZGZURUZUVkFCRFUxTk5YME5NWDBOVlUxUlBUVjlEUlZKVVgwVk9RMDlFU1U1SEFFTlRVMDFmUVV4
SApUVTlFUlY5T1QwNUZBRU5UVTAxZlFVeEhUVTlFUlY5RFZWTlVUMDBBUTFOVFRWOUJURWROVDBS
RlgwVkRRZ0JEVTFOTlgwRk1SMDFQClJFVmZSVU5DVUdGa0FFTlRVMDFmUVV4SFRVOUVSVjlEUWtN
QVExTlRUVjlCVEVkTlQwUkZYME5DUTE5SlZqZ0FRMU5UVFY5QlRFZE4KVDBSRlgwTkNRMUJoWkVs
V09BQkRVMU5OWDBGTVIwMVBSRVZmUTBaQ0FFTlRVMDFmUVV4SFRVOUVSVjlEUmtKZlNWWTRBRU5U
VTAxZgpRVXhIVFU5RVJWOURSa0pRWVdSSlZqZ0FRMU5UVFY5QlRFZE5UMFJGWDA5R1FnQkRVMU5O
WDBGTVIwMVBSRVZmVDBaQ1gwbFdPQUJEClUxTk5YMEZNUjAxUFJFVmZUMFpDVUdGa1NWWTRBRU5U
VTAxZlFVeEhUVTlFUlY5RFQxVk9WRVZTQUVOVFUwMWZRVXhIVFU5RVJWOUMKUXdCRFUxTk5YMEZN
UjAxUFJFVmZVRU5DUXdCRFUxTk5YMEZNUjAxUFJFVmZRMEpEUXdCRFUxTk5YMEZNUjAxUFJFVmZU
MFpDVGt4RwpBRU5UVTAxZlFVeEhUVTlFUlY5UVFrTUFRMU5UVFY5QlRFZE5UMFJGWDFCR1FnQkRV
MU5OWDBGTVIwMVBSRVZmUTBKRFVFUUFRMU5UClRWOUJURWROVDBSRlgxQlZRa3hKUTE5TFJWa0FR
MU5UVFY5QlRFZE5UMFJGWDFCU1NWWkJWRVZmUzBWWkFFTlRVMDFmUVV4SFRVOUUKUlY5VFNGVkdS
a3hGQUVOVFUwMWZRVXhIVFU5RVJWOUZRMEkyTkFCRFUxTk5YMEZNUjAxUFJFVmZRMEpETmpRQVEx
TlRUVjlCVEVkTgpUMFJGWDA5R1FqWTBBRU5UVTAxZlFVeEhUVTlFUlY5RFJrSXpNZ0JEVTFOTlgw
Rk1SMDFQUkVWZlEwWkNNVFlBUTFOVFRWOUJURWROClQwUkZYME5HUWpnQVExTlRUVjlCVEVkTlQw
UkZYMWRTUVZBQVExTlRUVjlCVEVkTlQwUkZYMUJTU1ZaQlZFVmZWMUpCVUFCRFUxTk4KWDBGTVIw
MVBSRVZmVWtWTVFWbFlBRU5UVTAxZlFVeEhUVTlFUlY5RlEwSXhNamdBUTFOVFRWOUJURWROVDBS
RlgwVkRRamsyQUVOVApVMDFmUVV4SFRVOUVSVjlEUWtNeE1qZ0FRMU5UVFY5QlRFZE5UMFJGWDA5
QlJWQmZTRUZUU0FCRFUxTk5YMEZNUjAxUFJFVmZVRXREClV6RmZSVTFGWDFZeE5RQkRVMU5OWDBG
TVIwMVBSRVZmVUV0RFV6RmZSVTFGWDA5QlJWQUFRMU5UVFY5QlRFZE5UMFJGWDFCTFExTXgKWDBW
TlUwRmZWakUxQUVOVFUwMWZRVXhIVFU5RVJWOUpVMDlmT1RjNU5nQkRVMU5OWDBGTVIwMVBSRVZm
V0RsZk16RUFRMU5UVFY5QgpURWROVDBSRlgweEJVMVFBUTFOVFRWOUJURWROVDBSRlgxWkZUa1JQ
VWw5RVJVWkpUa1ZFQUVOVFUwMWZVRUZFUkVsT1IxOU9UMDVGCkFFTlRVMDFmVUVGRVJFbE9SMTlE
VlZOVVQwMEFRMU5UVFY5UVFVUkVTVTVIWDFwRlVrOEFRMU5UVFY5UVFVUkVTVTVIWDA5T1JRQkQK
VTFOTlgxQkJSRVJKVGtkZlFVeFVSVkpPUVZSRkFFTlRVMDFmVUVGRVJFbE9SMTlHUmdCRFUxTk5Y
MUJCUkVSSlRrZGZVRXREVXpVQQpRMU5UVFY5UVFVUkVTVTVIWDFCTFExTTNBRU5UVTAxZlVFRkVS
RWxPUjE5RFNWQklSVkpUVkVWQlRFbE9Sd0JEVTFOTlgxQkJSRVJKClRrZGZVa0ZPUkU5TkFFTlRV
MDFmVUVGRVJFbE9SMTlRUzBOVE1RQkRVMU5OWDFCQlJFUkpUa2RmVmtWT1JFOVNYMFJGUmtsT1JV
UUEKUTFOVFRWOUJWRlJTU1VKVlZFVmZUazlPUlFCRFUxTk5YMEZVVkZKSlFsVlVSVjlEVlZOVVQw
MEFRMU5UVFY5QlZGUlNTVUpWVkVWZgpSRVZUUTFKSlVGUkpUMDRBUTFOVFRWOUJWRlJTU1VKVlZF
VmZTMFZaQUVOVFUwMWZRVlJVVWtsQ1ZWUkZYMGxPU1ZSZlZrVkRWRTlTCkFFTlRVMDFmUVZSVVVr
bENWVlJGWDFOQlRGUUFRMU5UVFY5QlZGUlNTVUpWVkVWZlVFRkVSRWxPUndCRFUxTk5YMEZVVkZK
SlFsVlUKUlY5U1FVNUVUMDBBUTFOVFRWOUJWRlJTU1VKVlZFVmZVMFZGUkFCRFUxTk5YMEZVVkZK
SlFsVlVSVjlRUVZOVFVFaFNRVk5GQUVOVApVMDFmUVZSVVVrbENWVlJGWDB0RldWOU1SVTVIVkVn
QVExTlRUVjlCVkZSU1NVSlZWRVZmUzBWWlgweEZUa2RVU0Y5U1FVNUhSUUJEClUxTk5YMEZVVkZK
SlFsVlVSVjlDVEU5RFMxOVRTVnBGQUVOVFUwMWZRVlJVVWtsQ1ZWUkZYMDlWVkZCVlZGOVRTVnBG
QUVOVFUwMWYKUVZSVVVrbENWVlJGWDFKUFZVNUVVd0JEVTFOTlgwRlVWRkpKUWxWVVJWOUpWbDlU
U1ZwRkFFTlRVMDFmUVZSVVVrbENWVlJGWDBGTQpSMTlRUVZKQlRWTUFRMU5UVFY5QlZGUlNTVUpW
VkVWZlRFRkNSVXdBUTFOVFRWOUJWRlJTU1VKVlZFVmZTMFZaWDFSWlVFVUFRMU5UClRWOUJWRlJT
U1VKVlZFVmZUVTlFUlFCRFUxTk5YMEZVVkZKSlFsVlVSVjlGUmtaRlExUkpWa1ZmUWtsVVV3QkRV
MU5OWDBGVVZGSkoKUWxWVVJWOVRWRUZTVkY5RVFWUkZBRU5UVTAxZlFWUlVVa2xDVlZSRlgwVk9S
RjlFUVZSRkFFTlRVMDFmUVZSVVVrbENWVlJGWDB0RgpXVlZUUVVkRkFFTlRVMDFmUVZSVVVrbENW
VlJGWDB0RldVRlVWRklBUTFOVFRWOUJWRlJTU1VKVlZFVmZWa1ZTVTBsUFRnQkRVMU5OClgwRlVW
RkpKUWxWVVJWOVFVa2xOUlFCRFUxTk5YMEZVVkZKSlFsVlVSVjlDUVZORkFFTlRVMDFmUVZSVVVr
bENWVlJGWDFOVlFsQlMKU1UxRkFFTlRVMDFmUVZSVVVrbENWVlJGWDBGTVIxOUpSQUJEVTFOTlgw
RlVWRkpKUWxWVVJWOUpWRVZTUVZSSlQwNWZRMDlWVGxRQQpRMU5UVFY5QlZGUlNTVUpWVkVWZlVr
OVZUa1JUWDFKQlRrZEZBRU5UVTAxZlFWUlVVa2xDVlZSRlgwdFNVRkpQUmtsTVJWOU1UME5CClRB
QkRVMU5OWDBGVVZGSkpRbFZVUlY5TFVsQlNUMFpKVEVWZlVrVk5UMVJGQUVOVFUwMWZRVlJVVWts
Q1ZWUkZYME5UVUY5SVFVNUUKVEVVQVExTlRUVjlCVkZSU1NVSlZWRVZmUkV4ZlJFSmZTRUZPUkV4
RkFFTlRVMDFmUVZSVVVrbENWVlJGWDBGRFEwVlRVMTlEVWtWRQpSVTVVU1VGTVV3QkRVMU5OWDBG
VVZGSkpRbFZVUlY5UVZVSk1TVU5mUzBWWlgwWlBVazFCVkFCRFUxTk5YMEZVVkZKSlFsVlVSVjlR
ClVrbFdRVlJGWDB0RldWOUdUMUpOUVZRQVExTlRUVjlCVkZSU1NVSlZWRVZmVTFsTlRVVlVVa2xE
WDB0RldWOUdUMUpOUVZRQVExTlQKVFY5QlZGUlNTVUpWVkVWZlYxSkJVRkJGUkY5TFJWbGZSazlT
VFVGVUFFTlRVMDFmUzBWWlFreFBRbDlTUVZkZlJrOVNUVUZVWDFnMQpNRGtBUTFOVFRWOUxSVmxD
VEU5Q1gxSkJWMTlHVDFKTlFWUmZUMUJGVGxOVFNBQkRVMU5OWDB0RldVSk1UMEpmVWtGWFgwWlBV
azFCClZGOVBVRVZPVTFOTUFFTlRVMDFmUzBWWlFreFBRbDlTUVZkZlJrOVNUVUZVWDA5UVJVNVRV
MGd5QUdGc1owbGtBR0ZzWjI5eWFYUm8KYlFCTVpXNW5kR2dBYkc5dVp5QjFibk5wWjI1bFpDQnBi
blFBWDE5a1lYSjNhVzVmYzJsNlpWOTBBSE5wZW1WZmRBQkRVMU5OWDFOSgpXa1VBUkdGMFlRQmpj
M050WDJSaGRHRUFRMU5UVFY5RVFWUkJBRU5UVTAxZlQwbEVBSEJoY21GdFpYUmxjbk1BWTNOemJW
OTROVEE1ClgyRnNaMjl5YVhSb2JWOXBaR1Z1ZEdsbWFXVnlBRU5UVTAxZldEVXdPVjlCVEVkUFVr
bFVTRTFmU1VSRlRsUkpSa2xGVWdCamMzQkkKWVc1a0FHeHZibWNnYVc1MEFGOWZaR0Z5ZDJsdVgy
bHVkSEIwY2w5MEFHbHVkSEIwY2w5MEFFTlRVMDFmU1U1VVVGUlNBRU5UVTAxZgpTRUZPUkV4RkFF
TlRVMDFmVFU5RVZVeEZYMGhCVGtSTVJRQkRVMU5OWDBOVFVGOUlRVTVFVEVVQWNHeGhhVzVVWlho
MEFIQnlhWFpMClpYa0FUM0JoY1hWbFUyVmpTMlY1VW1WbUFGTmxZMHRsZVZKbFpnQnphV2RCYkdj
QWRXbHVkRE15QUVOVFUwMWZRVXhIVDFKSlZFaE4KVXdCemFXY0FZMk5JWVc1a0FHeHZibWNnYkc5
dVp5QjFibk5wWjI1bFpDQnBiblFBZFdsdWREWTBYM1FBZFdsdWREWTBBRU5UVTAxZgpURTlPUjE5
SVFVNUVURVVBUTFOVFRWOURRMTlJUVU1RVRFVUFjbVZtVUhKcGRrdGxlUUJMWlhsSVpXRmtaWElB
U0dWaFpHVnlWbVZ5CmMybHZiZ0JEVTFOTlgwaEZRVVJGVWxaRlVsTkpUMDRBUTNOd1NXUUFSR0Yw
WVRFQVJHRjBZVElBZFc1emFXZHVaV1FnYzJodmNuUUEKZFdsdWRERTJYM1FBZFdsdWRERTJBRVJo
ZEdFekFFUmhkR0UwQUdOemMyMWZaM1ZwWkFCRFUxTk5YMGRWU1VRQVFteHZZbFI1Y0dVQQpRMU5U
VFY5TFJWbENURTlDWDFSWlVFVUFSbTl5YldGMEFFTlRVMDFmUzBWWlFreFBRbDlHVDFKTlFWUUFR
V3huYjNKcGRHaHRTV1FBClMyVjVRMnhoYzNNQVExTlRUVjlMUlZsRFRFRlRVd0JNYjJkcFkyRnNT
MlY1VTJsNlpVbHVRbWwwY3dCTFpYbEJkSFJ5QUVOVFUwMWYKUzBWWlFWUlVVbDlHVEVGSFV3Qkxa
WGxWYzJGblpRQkRVMU5OWDB0RldWVlRSUUJUZEdGeWRFUmhkR1VBV1dWaGNnQk5iMjUwYUFCRQpZ
WGtBWTNOemJWOWtZWFJsQUVOVFUwMWZSRUZVUlFCRmJtUkVZWFJsQUZkeVlYQkJiR2R2Y21sMGFH
MUpaQUJYY21Gd1RXOWtaUUJEClUxTk5YMFZPUTFKWlVGUmZUVTlFUlFCU1pYTmxjblpsWkFCamMz
TnRYMnRsZVdobFlXUmxjZ0JEVTFOTlgwdEZXVWhGUVVSRlVnQkwKWlhsRVlYUmhBR056YzIxZmEy
VjVBRU5UVTAxZlMwVlpBR055WldSekFFVnVkSEo1VkdGbkFHTm9ZWElBUTFOVFRWOVRWRkpKVGtj
QQpRbUZ6WlVObGNuUnpBRlJRU0dGdVpHeGxBRU5UVTAxZlZGQmZTRUZPUkV4RkFFTk1TR0Z1Wkd4
bEFFTlRVMDFmUTB4ZlNFRk9SRXhGCkFFTmxjblJ6QUVObGNuUlVlWEJsQUVOVFUwMWZRMFZTVkY5
VVdWQkZBRU5sY25SRmJtTnZaR2x1WndCRFUxTk5YME5GVWxSZlJVNUQKVDBSSlRrY0FUblZ0UTJW
eWRITUFSM0p2ZFhCTWFYTjBBRU5sY25STWFYTjBBRU5UVTAxZlJFRlVRVjlRVkZJQVJXNWpiMlJs
WkVObApjblJNYVhOMEFFTmxjblJDYkc5aUFHTnpjMjFmWlc1amIyUmxaRjlqWlhKMEFFTlRVMDFm
UlU1RFQwUkZSRjlEUlZKVVgxQlVVZ0JRCllYSnpaV1JEWlhKMFRHbHpkQUJRWVhKelpXUkRaWEow
Um05eWJXRjBBRU5UVTAxZlEwVlNWRjlRUVZKVFJWOUdUMUpOUVZRQVVHRnkKYzJWa1EyVnlkQUJq
YzNOdFgzQmhjbk5sWkY5alpYSjBBRU5UVTAxZlVFRlNVMFZFWDBORlVsUmZVRlJTQUZCaGFYSkRa
WEowVEdsegpkQUJGYm1OdlpHVmtRMlZ5ZEFCRFUxTk5YMFZPUTA5RVJVUmZRMFZTVkFCRFUxTk5Y
MUJCVWxORlJGOURSVkpVQUdOemMyMWZZMlZ5CmRGOXdZV2x5QUVOVFUwMWZRMFZTVkY5UVFVbFNY
MUJVVWdCRFpYSjBSM0p2ZFhCVWVYQmxBRU5UVTAxZlEwVlNWRWRTVDFWUVgxUloKVUVVQVkzTnpi
VjlqWlhKMFozSnZkWEFBUTFOVFRWOURSVkpVUjFKUFZWQUFZM056YlY5aVlYTmxYMk5sY25SekFF
TlRVMDFmUWtGVApSVjlEUlZKVVV3QlRZVzF3YkdWekFFNTFiV0psY2s5bVUyRnRjR3hsY3dCVWVY
QmxaRk5oYlhCc1pRQk1hWE4wVkhsd1pRQkRVMU5OClgweEpVMVJmVkZsUVJRQklaV0ZrQUU1bGVI
UkZiR1Z0Wlc1MEFGZHZjbVJKUkFCRFUxTk5YMWRQVWtSSlJGOVVXVkJGQUVWc1pXMWwKYm5SVWVY
QmxBRU5UVTAxZlRFbFRWRjlGVEVWTlJVNVVYMVJaVUVVQVJXeGxiV1Z1ZEFCVGRXSnNhWE4wQUZk
dmNtUUFZM056YlY5cwphWE4wWDJWc1pXMWxiblFBUTFOVFRWOU1TVk5VWDBWTVJVMUZUbFJmVUZS
U0FGUmhhV3dBWTNOemJWOXNhWE4wQUVOVFUwMWZURWxUClZBQldaWEpwWm1sbGNnQkhkV2xrQUZa
bGNuTnBiMjRBVFdGcWIzSUFUV2x1YjNJQVkzTnpiVjkyWlhKemFXOXVBRU5UVTAxZlZrVlMKVTBs
UFRnQlRkV0p6WlhKMmFXTmxTV1FBVTNWaWMyVnlkbWxqWlZSNWNHVUFRMU5UVFY5VFJWSldTVU5G
WDAxQlUwc0FRMU5UVFY5VApSVkpXU1VORlgxUlpVRVVBWTNOemJWOXpkV0p6WlhKMmFXTmxYM1Zw
WkFCRFUxTk5YMU5WUWxORlVsWkpRMFZmVlVsRUFHTnpjMjFmCmMyRnRjR3hsQUVOVFUwMWZVMEZO
VUV4RkFHTnpjMjFmYzJGdGNHeGxaM0p2ZFhBQVExTlRUVjlUUVUxUVRFVkhVazlWVUFCRFlXeHMK
WW1GamF3QkRVMU5OWDFOQlRWQk1SVWRTVDFWUVgxQlVVZ0J0WVd4c2IyTmZablZ1WXdCRFUxTk5Y
MDFCVEV4UFF3Qm1jbVZsWDJaMQpibU1BUTFOVFRWOUdVa1ZGQUhKbFlXeHNiMk5mWm5WdVl3QkRV
MU5OWDFKRlFVeE1UME1BWTJGc2JHOWpYMloxYm1NQVExTlRUVjlEClFVeE1UME1BUVd4c2IyTlNa
V1lBWTNOemJWOXRaVzF2Y25sZlpuVnVZM01BUTFOVFRWOU5SVTFQVWxsZlJsVk9RMU1BUTFOVFRW
OUQKU0VGTVRFVk9SMFZmUTBGTVRFSkJRMHNBUTJGc2JHVnlRM1I0QUdOemMyMWZZV05qWlhOelgy
TnlaV1JsYm5ScFlXeHpBRU5UVTAxZgpRVU5EUlZOVFgwTlNSVVJGVGxSSlFVeFRBRzl5ZEc0QVkz
SjBiZ0JoY25KaGVRQmpiM1Z1ZEFCeVpXWlFkV0pMWlhrQWMzVmlhbEIxCllrdGxlUUJEVTFOTlgw
dEZXVjlRVkZJQWMyVmpTMlY1QUc1bGQwRjBkSElBUVhSMGNtbGlkWFJsVkhsd1pRQkRVMU5OWDBG
VVZGSkoKUWxWVVJWOVVXVkJGQUVGMGRISnBZblYwWlV4bGJtZDBhQUJCZEhSeWFXSjFkR1VBVTNS
eWFXNW5BRlZwYm5Rek1nQkJZMk5sYzNORApjbVZrWlc1MGFXRnNjd0JEVTFOTlgwRkRRMFZUVTE5
RFVrVkVSVTVVU1VGTVUxOVFWRklBUzJWNUFGQmhaR1JwYm1jQVExTlRUVjlRClFVUkVTVTVIQUVS
aGRHVUFRMU5UVFY5RVFWUkZYMUJVVWdCU1lXNW5aUUJOYVc0QVRXRjRBR056YzIxZmNtRnVaMlVB
UTFOVFRWOVMKUVU1SFJWOVFWRklBUTNKNWNIUnZSR0YwWVFCUVlYSmhiUUJEVTFOTlgwTkJURXhD
UVVOTEFHTnpjMjFmWTNKNWNIUnZYMlJoZEdFQQpRMU5UVFY5RFVsbFFWRTlmUkVGVVFWOVFWRklB
UTFOVFRWOVdSVkpUU1U5T1gxQlVVZ0JFVEVSQ1NHRnVaR3hsQUVSTVNHRnVaR3hsCkFFTlRVMDFm
UkV4ZlNFRk9SRXhGQUVSQ1NHRnVaR3hsQUVOVFUwMWZSRUpmU0VGT1JFeEZBR056YzIxZlpHeGZa
R0pmYUdGdVpHeGwKQUVOVFUwMWZSRXhmUkVKZlNFRk9SRXhGWDFCVVVnQkxVbEJ5YjJacGJHVUFW
WE5sY2s1aGJXVUFWSGx3WlFCT1lXMWxBR056YzIxZgphM0pmYm1GdFpRQkRVMU5OWDB0U1gwNUJU
VVVBVlhObGNrTmxjblJwWm1sallYUmxBRU5UVTAxZlEwVlNWRWRTVDFWUVgxQlVVZ0JMClVsTkRa
WEowUTJoaGFXNEFURVZmUzFKQlRuVnRBRXhGWDB0U1FVTmxjblJEYUdGcGJreHBjM1FBUlU1VVgw
dFNRVTUxYlFCRlRsUmYKUzFKQlEyVnlkRU5vWVdsdVRHbHpkQUJKVGtSSlZsOUxVa0ZPZFcwQVNV
NUVTVlpmUzFKQlEyVnlkRU5vWVdsdVRHbHpkQUJKVGtSSgpWbDlCZFhSb1pXNTBhV05oZEdsdmJr
bHVabThBUzFKVFVFWnNZV2R6QUV0U1UxQkZlSFJsYm5OcGIyNXpBR056YzIxZmEzSmZjSEp2Clpt
bHNaUUJqYzNOdFgyTnZiblJsZUhSZllYUjBjbWxpZFhSbFgzWmhiSFZsQUdOemMyMWZZMjl1ZEdW
NGRGOWhkSFJ5YVdKMWRHVUEKUTFOVFRWOURUMDVVUlZoVVgwRlVWRkpKUWxWVVJRQkJkSFJ5YVdK
MWRHVlFkSElBUTBOSVlXNWtiR1VBYkdWdVozUm9BR1JoZEdFQQphVzV3ZFhSRVlYUmhBRjlmUTBa
RVlYUmhBRU5HUkdGMFlWSmxaZ0JpWVhObE5qUlVjbUZ1YzJadmNtMEFRMFpVZVhCbFVtVm1BRk5s
ClkxUnlZVzV6Wm05eWJWSmxaZ0JpWVhObE5qUkVZWFJoQUdKaGMyVTJORk4wY21sdVp3QnRaVzFH
ZFc1amN3QkRVMU5OWDBGUVNWOU4KUlUxUFVsbGZSbFZPUTFNQVkyUmhkR0VBYlc5a1NHRnVaQUJy
WlhsVGFYcGxBR05vWVd4c1pXNW5aUUJyWlhsRVpYTmpjbWx3ZEdsdgpiZ0J3ZFdKTFpYa0FjM1Zp
YW1WamRGQjFZa3RsZVFCamIyUmxjZ0JUWldOQmMyNHhRMjlrWlhJQVUyVmpRWE51TVVOdlpHVnlV
bVZtCkFITndhMk1BY0hWaVMyVjVRVzVrUTJoaGJHeGxibWRsQUhOd2Eya0FjM1ZpYW1WamRGQjFZ
bXhwWTB0bGVRQmpjM050WDNnMU1EbGYKYzNWaWFtVmpkRjl3ZFdKc2FXTmZhMlY1WDJsdVptOEFR
MU5UVFY5WU5UQTVYMU5WUWtwRlExUmZVRlZDVEVsRFgwdEZXVjlKVGtaUApBRkIxWW14cFkwdGxl
VUZ1WkVOb1lXeHNaVzVuWlFCemFXZHVZWFIxY21VQVUybG5ibVZrVUhWaWJHbGpTMlY1UVc1a1Ey
aGhiR3hsCmJtZGxBR1Z1WTI5a1pXUlFhMk1BWlc1amIyUmxaRk53YTJNQVlXTmpaWE56VW1WbUFF
OXdZWEYxWlZObFkwRmpZMlZ6YzFKbFpnQlQKWldOQlkyTmxjM05TWldZQVlXTnNjd0JmWDBOR1FY
SnlZWGtBUTBaQmNuSmhlVkpsWmdCMGNuVnpkR1ZrUVhCd0FFOXdZWEYxWlZObApZMVJ5ZFhOMFpX
UkJjSEJzYVdOaGRHbHZibEpsWmdCVFpXTlVjblZ6ZEdWa1FYQndiR2xqWVhScGIyNVNaV1lBY21W
emRXeDBBR1p5ClpXVlRkV0pxVUhWaVMyVjVBR0ZqYkFCUGNHRnhkV1ZUWldOVWNuVnpkRkpsWmdC
VFpXTkJRMHhTWldZQWNHdGpBR0Z3Y0V4cGMzUUEKYVhOaEFHOWlhbU5mWTJ4aGMzTUFRMnhoYzNN
QVRsTlBZbXBsWTNRQVRsTkJjbkpoZVFCalpYSjBSR0YwWVFCalpYSjBSR0YwWVV4bApiZ0JqWlhK
MFRuVnRBR05sY25RQVkyVnlkRkpsWmdCUGNHRnhkV1ZUWldORFpYSjBhV1pwWTJGMFpWSmxaZ0JU
WldORFpYSjBhV1pwClkyRjBaVkpsWmdCaWVYUmxjd0JqWlhKMFUyVnhBR052Ym5SbGJuUlVlWEJs
QUdObGNuUnpBRTVsZEhOallYQmxRMlZ5ZEZObGNYVmwKYm1ObEFITm9iM0owQUZOSmJuUXhOZ0JQ
VTBWeWNnQnBBRzUxYlVObGNuUnpBS0lBQUFBQ0FBZ25Bd0FBSndNQUFBRTVCZ0FBbFFNQQpBQUFB
QUFBR0F3QUFCZ01BQUFHUkJRQUEyZ0lBQUFBQUFBQ29BUUFBcUFFQUFBRi9CZ0FBQmdVQUFBQUFB
QUQ1QWdBQStRSUFBQUdYCkJnQUFlZ1VBQUFBQUFBRHBBZ0FBNlFJQUFBSG1CZ0FBWGdZQUFBQUFB
QUFrQWdBQUpBSUFBQUtoQ0FBQTJBY0FBQUFBQUFERENRQUEKeEFnQUFBQUFBQURjQVFBQTNBRUFB
QUZxQ1FBQWFnZ0FBQUFBQUFCSVUwRklBUUFBQUE0QUFBQU9BQUFBREFBQUFBQUFBQUFCQUFBQQpB
UUFHQVAvLy8vOEFBQUFBQWdBQUFBUUFBQUFGQUFBQUJ3QUFBQWtBQUFELy8vLy9DZ0FBQUFzQUFB
RC8vLy8vREFBQUFBMEFBQUQvCi8vLy9HOWprUk9OaGNQQk9pTTBiVUpDeFc5Tlo4eFhRY2hDVU5r
bzlhbjI5UXdWLzd2Mnh1RU1KVWg0WHB1bGZFOW9FMlhyMHZ0WnoKT1pUSUFBQUEyQUFBQU9nQUFB
RDRBQUFBRUFFQUFDUUJBQUEwQVFBQVJBRUFBRlFCQUFCb0FRQUFlQUVBQUlnQkFBQ1lBUUFBcUFF
QQpBTThBQUFBQkFBQUFxQUFBQUFBQUFBQk5BZ0FBQVFBQUFPVUhBQUFBQUFBQUp3TUFBQUVBQUFB
NUJnQUFBQUFBQUNRQ0FBQURBQUFBClFBY0FBS0VJQUFERENRQUFBQUFBQU53QkFBQUNBQUFBbVFJ
QUFHb0pBQUFBQUFBQUJnTUFBQUVBQUFDUkJRQUFBQUFBQUlRQkFBQUIKQUFBQVFRRUFBQUFBQUFD
NUFRQUFBUUFBQUdnQkFBQUFBQUFBcUFFQUFBSUFBQUFrQVFBQWZ3WUFBQUFBQUFENUFnQUFBUUFB
QUpjRwpBQUFBQUFBQTZRSUFBQUVBQUFEbUJnQUFBQUFBQUVJQkFBQUJBQUFBdmdBQUFBQUFBQUJn
QVFBQUFRQUFBT0FBQUFBQUFBQUE2UUVBCkFBRUFBQURaQWdBQUFBQUFBRWhUUVVnQkFBQUFBUUFB
QUFBQUFBQU1BQUFBQUFBQUFBRUFBQUFCQUFZQS8vLy8vMGhUUVVnQkFBQUEKQVFBQUFBQUFBQUFN
QUFBQUFBQUFBQUVBQUFBQkFBWUEvLy8vLzBoVFFVZ0JBQUFBVEFBQUFKZ0FBQUFVQUFBQUFBQUFB
QU1BQUFBQgpBQVlBQXdBRkFBVUFDd0FBQUFBQUFnQUFBQU1BQUFBRUFBQUFCd0FBQUFrQUFBQUxB
QUFBRFFBQUFQLy8vLzhPQUFBQUR3QUFBUC8vCi8vOFJBQUFBRkFBQUFCa0FBQUQvLy8vL0d3QUFB
QjRBQUFBaUFBQUFKQUFBQUNnQUFBQXJBQUFBTFFBQUFDNEFBQUF4QUFBQU5BQUEKQVAvLy8vODJB
QUFBT1FBQUFEb0FBQUE5QUFBQVFBQUFBRUVBQUFCR0FBQUFTZ0FBQVAvLy8vOU1BQUFBVHdBQUFG
SUFBQUJXQUFBQQpWd0FBQUZrQUFBQmJBQUFBWFFBQUFGNEFBQUJoQUFBQVpBQUFBR1lBQUFCcEFB
QUFhZ0FBQUdzQUFBQnRBQUFBYndBQUFITUFBQUIxCkFBQUFkd0FBQUhvQUFBQjlBQUFBZmdBQUFJ
QUFBQUNDQUFBQWhBQUFBSVVBQUFDR0FBQUFpQUFBQUlrQUFBRC8vLy8vaWdBQUFQLy8KLy8rTEFB
QUFqZ0FBQVAvLy8vK1FBQUFBa1FBQUFKSUFBQUNVQUFBQXpJWGJKVENBaUF1eG0ySHh0c3lLak50
aWhvMGZrMXZHUDAySwpWenp1bzdlNDdDYkFPV1Q4akExN3VrMktTb1poc2w5aU5MZSthM25WOEZv
UURwbjY4K0lrR3dUczZIUWdqQTV1ZklEOXF1MlJYWE1WCnpmc3RiVFZrSGppMTRDYnYvYWwvRU9y
RWpOTldzOFZUL0QwbzMraVh5aHNVajZLM1hlaFRFU21IdGhCRituSStyWHZWKzFZZjJUaHkKY3I1
VUUwSW1UaVBRbkVCejFybUNxelliVlJpUG9yZXNubVdNRUVqRERiMThOZnU1UDF1eXBqdUtrMnNp
TENPUDZYUWdXeEJaUlNBYgo3SStVaGM0a3RBeDlHYm1HYW91VjY2cTNid3p2NUd0SXVaaTN6eVcr
NkZYWXB0RzkwVGtKUU81aXRhWldZVGF3VWcwbUU5UXpYdkM3CnJidjRGemNVRUdxNS9KK0t1S0Nu
eS9ubzhFbWZxSFBpem8zU09kYlpwSUY4YVRVS1kxM1dreUFLNitUWkFwWlZFUnpqUURFWUVHcTUK
Y0VBaU94azlLaDJWSStnWDlUUWpudkxuZkQ4V0ZLZTNkcDN0dHM3MzJkeVQ4dEFiOENrU0w3eHRH
YjZKY1BIVlZmQkxnK1lWWHlIYQpubk5MWXlDVmZJQUppeFdVc211ajVFUUx4UDBSdWxmWk82Z05h
V3pFd2VvQXFuTnFjK0xPNDRla3Q3dE8rQXpEbmxJTk5EeGg2V21QCko1Q3FjRHJsTnRKcGZFZFJx
ZWRQRmV2NTBCVVVadUE4aDc2b1VTa292SGg4VGJrZG1nM05renl5cXYxS2VSYVZicm1EaENyS280
TzkKZ1NmVUVWUzR2MitmaEJ1VFcvQXYzQTZWUmE1VzhxamQySnIyaHlPUHN3RVBJeVhsVUxDMmli
MjRWL09oc2VyV1R1NGJkVnJqQ0d5NQpuK0JTRVN3ODVnTTFyNmRzRDB6LzlrbWlNallsa2RSbGFi
aEpPNG9QWi8xT2dURXQ0R3JQdEQyZlZDd3E2WFFnaHYrTlp5Yzd2ZGZMCjBsWGQ5eXdIZ3d0UlYy
SVlCZ0FBS3dZQUFENEdBQUJSQmdBQVpBWUFBSGNHQUFDS0JnQUFuUVlBQUxBR0FBRERCZ0FBMWdZ
QUFPa0cKQUFEOEJnQUFEd2NBQUNJSEFBQTFCd0FBU0FjQUFGc0hBQUJ1QndBQWdRY0FBSlFIQUFD
bkJ3QUF1Z2NBQU0wSEFBRGdCd0FBOHdjQQpBQVlJQUFBWkNBQUFMQWdBQUQ4SUFBQlNDQUFBWlFn
QUFIZ0lBQUNMQ0FBQW5nZ0FBTEVJQUFERUNBQUExd2dBQU9vSUFBRDlDQUFBCkVBa0FBQ01KQUFB
MkNRQUFTUWtBQUZ3SkFBQnZDUUFBZ2drQUFKVUpBQUNvQ1FBQXV3a0FBTTRKQUFEaENRQUE5QWtB
QUFjS0FBQWEKQ2dBQUxRb0FBRUFLQUFCVENnQUFaZ29BQUhrS0FBQ01DZ0FBbndvQUFMSUtBQURG
Q2dBQTJBb0FBT3NLQUFEK0NnQUFFUXNBQUNRTApBQUEzQ3dBQVNnc0FBRjBMQUFCd0N3QUFnd3NB
QUpZTEFBQ3BDd0FBdkFzQUFNOExBQURpQ3dBQTlRc0FBQWdNQUFBYkRBQUFMZ3dBCkFFRU1BQUJV
REFBQVp3d0FBSG9NQUFDTkRBQUFvQXdBQUxNTUFBREdEQUFBMlF3QUFPd01BQUQvREFBQUVnMEFB
Q1VOQUFBNERRQUEKU3cwQUFGNE5BQUJ4RFFBQWhBMEFBSmNOQUFDcURRQUF2UTBBQU5BTkFBRGpE
UUFBOWcwQUFBa09BQUFjRGdBQUx3NEFBRUlPQUFCVgpEZ0FBYUE0QUFIc09BQUNPRGdBQW9RNEFB
TFFPQUFESERnQUEyZzRBQU8wT0FBQUFEd0FBRXc4QUFDWVBBQUE1RHdBQVRBOEFBRjhQCkFBQnlE
d0FBaFE4QUFKZ1BBQUNyRHdBQXZnOEFBTkVQQUFEa0R3QUE5dzhBQUFvUUFBQWRFQUFBTUJBQUFF
TVFBQUJXRUFBQWFSQUEKQUh3UUFBQ1BFQUFBb2hBQUFMVVFBQURJRUFBQTJ4QUFBTzRRQUFBQkVR
QUFGQkVBQUNjUkFBQTZFUUFBVFJFQUFMb2dBQUFCQUFBQQo2aFlBQUJNQUFnQUFBQUErQVFBQUFR
QUFBSEVDQUFBa0FBQUFBQUFBWENVQUFBRUFBQUFySFFBQUV3QUNBQUFBQU1raUFBQUJBQUFBCmNo
a0FBQllBQUFBQUFBQTZIZ0FBQVFBQUFBNFZBQUFXQUFBQUFBQUF1Q01BQUFFQUFBQ2pHZ0FBRXdB
Q0FBQUFBQ01zQUFBQkFBQUEKbmlNQUFCWUFBQUFBQUFBWEpRQUFBUUFBQU5FY0FBQVdBQUFBQUFB
QUNoNEFBQUVBQUFEM0ZBQUFGZ0FBQUFBQUFFd2VBQUFCQUFBQQpHUlVBQUJZQUFBQUFBQUJ6S3dB
QUFRQUFBUDRpQUFBV0FBQUFBQUFBRlNJQUFBRUFBQURIR0FBQUZnQUFBQUFBQUhRZkFBQUJBQUFB
Cnl4VUFBQ1FBQUFBQUFBQklJd0FBQVFBQUFJQWFBQUFXQUFBQUFBQUFPQ3dBQUFFQUFBQ3BJd0FB
SkFBQUFBQUFBSFVtQUFBQkFBQUEKWmg0QUFCWUFBQUFBQUFBWUFnQUFBUUFBQURRSEFBQVdBQUFB
QUFBQWpCOEFBQUVBQUFEZEZRQUFGZ0FBQUFBQUFHTWtBQUFCQUFBQQpweHNBQUJZQUFBQUFBQUFv
SkFBQUFRQUFBSkViQUFBV0FBQUFBQUFBblNZQUFBRUFBQUJ5SGdBQUZnQUFBQUFBQUVNcEFBQUJB
QUFBCjFpRUFBQllBQUFBQUFBQU1Id0FBQVFBQUFLa1ZBQUFXQUFBQUFBQUFuUjBBQUFFQUFBQnNG
QUFBRmdBQUFBQUFBS0lCQUFBQkFBQUEKQ0FFQUFCWUFBQUFBQUFBQ0VnQUFBUUFBQU9JUEFBQVdB
QUFBQUFBQWlTUUFBQUVBQUFEM0d3QUFGZ0FBQUFBQUFKMGtBQUFCQUFBQQpEQndBQUJNQUFnQUFB
QURKQVFBQUFRQUFBSU1DQUFBV0FBQUFBQUFBelIwQUFBRUFBQUM1RkFBQUZnQUFBQUFBQVA0QUFB
QUJBQUFBCkx3QUFBQllBQUFBQUFBQWxJUUFBQVFBQUFENFlBQUFXQUFBQUFBQUFweXNBQUFFQUFB
QStJd0FBRXdBQUFBQUFBT1VlQUFBQkFBQUEKakJVQUFDUUFBQUFBQUFBYUVnQUFBUUFBQVBnUEFB
QUVBQUlBQUFBQTNTZ0FBQUVBQUFDcUlRQUFGZ0FBQUFBQUFCY0JBQUFCQUFBQQpRQUFBQUJNQUFn
QUFBQUNmSUFBQUFRQUFBTjRXQUFBV0FBQUFBQUFBbVNJQUFBRUFBQUEzR1FBQUV3QUNBQUFBQUIw
ZkFBQUJBQUFBCnRCVUFBQllBQUFBQUFBQjBJQUFBQVFBQUFOSVdBQUFXQUFBQUFBQUFDUklBQUFF
QUFBRHREd0FBRmdBQUFBQUFBRVVzQUFBQkFBQUEKdXlNQUFCWUFBQUFBQUFDTEhRQUFBUUFBQUdV
VUFBQWtBQUFBQUFBQW9pVUFBQUVBQUFESEhRQUFFd0FDQUFBQUFEY2lBQUFCQUFBQQoxQmdBQUJN
QUFnQUFBQUFlQXdBQUFRQUFBSGtMQUFBV0FBQUFBQUFBQlI4QUFBRUFBQUNlRlFBQUZnQUFBQUFB
QUVnaUFBQUJBQUFBCkV4a0FBQllBQUFBQUFBQXhIZ0FBQVFBQUFBY1ZBQUFrQUFBQUFBQUF5aDRB
QUFFQUFBQjdGUUFBRmdBQUFBQUFBQVFuQUFBQkFBQUEKNng0QUFCTUFBZ0FBQUFEK0h3QUFBUUFB
QUZ3V0FBQVdBQUFBQUFBQXRCMEFBQUVBQUFDQ0ZBQUFGZ0FBQUFBQUFDNEJBQUFCQUFBQQpoUUFB
QUJZQUFBQUFBQUJ0SGdBQUFRQUFBRG9WQUFBV0FBQUFBQUFBeUNjQUFBRUFBQURJSHdBQUZnQUFB
QUFBQUtnaUFBQUJBQUFBClpoa0FBQllBQUFBQUFBQnVKUUFBQVFBQUFJVWRBQUFXQUFBQUFBQUFU
eDhBQUFFQUFBQy9GUUFBRmdBQUFBQUFBT3dpQUFBQkFBQUEKTGhvQUFCWUFBQUFBQUFEWEhRQUFB
UUFBQU1RVUFBQVdBQUFBQUFBQVlSNEFBQUVBQUFBdkZRQUFGZ0FBQUFBQUFPQWtBQUFCQUFBQQpr
UndBQUJZQUFBQUFBQUJWSGdBQUFRQUFBQ1FWQUFBV0FBQUFBQUFBd3gwQUFBRUFBQUNTRkFBQUV3
QUNBQUFBQUM0bEFBQUJBQUFBCitCd0FBQllBQUFBQUFBQ01BUUFBQVFBQUFQWUFBQUFrQUFBQUFB
QUF3UUVBQUFFQUFBQjRBZ0FBRmdBQUFBQUFBQmNEQUFBQkFBQUEKYmdzQUFCWUFBQUFBQUFDdkpn
QUFBUUFBQUlNZUFBQVdBQUFBQUFBQVRTa0FBQUVBQUFEaUlRQUFGZ0FBQUFBQUFGc2hBQUFCQUFB
QQpWQmdBQUJZQUFBQUFBQURyS1FBQUFRQUFBQVFpQUFBV0FBQUFBQUFBZmlrQUFBRUFBQUR0SVFB
QUZnQUFBQUFBQVB3ZUFBQUJBQUFBCmt4VUFBQllBQUFBQUFBRFdKZ0FBQVFBQUFMNGVBQUFXQUFB
QUFBQUFhaUFBQUFFQUFBQ1lGZ0FBRXdBQ0FBQUFBRVVnQUFBQkFBQUEKZEJZQUFCWUFBQUFBQUFD
NkpRQUFBUUFBQUNRZUFBQVdBQUFBQUFBQVR5Y0FBQUVBQUFCQkh3QUFGZ0FBQUFBQUFDb25BQUFC
QUFBQQpOaDhBQUJZQUFBQUFBQUFCSlFBQUFRQUFBTE1jQUFBV0FBQUFBQUFBN3lNQUFBRUFBQUJl
R3dBQUZnQUFBQUFBQUhVa0FBQUJBQUFBCnNoc0FBQk1BQWdBQUFBRGZJUUFBQVFBQUFMc1lBQUFX
QUFBQUFBQUFyUjBBQUFFQUFBQjNGQUFBRmdBQUFBQUFBSm9CQUFBQkFBQUEKL1FBQUFCWUFBQUFB
QUFBdUt3QUFBUUFBQU9naUFBQVdBQUFBQUFBQXBpRUFBQUVBQUFCeEdBQUFGZ0FBQUFBQUFOMGlB
QUFCQUFBQQpmaGtBQUJNQUFnQUFBQUNJSWdBQUFRQUFBQ3NaQUFBV0FBQUFBQUFBMEFFQUFBRUFB
QUNPQWdBQUZnQUFBQUFBQUFFaEFBQUJBQUFBCklCZ0FBQ1FBQUFBQUFBQ01Jd0FBQVFBQUFKY2FB
QUFXQUFBQUFBQUFQU0VBQUFFQUFBQkpHQUFBRmdBQUFBQUFBTkFDQUFBQkFBQUEKY2dvQUFCWUFB
QUFBQUFDTktnQUFBUUFBQUtFaUFBQVdBQUFBQUFBQWRpSUFBQUVBQUFBZkdRQUFGZ0FBQUFBQUFN
WWtBQUFCQUFBQQpkaHdBQUJZQUFBQUFBQUQ1S2dBQUFRQUFBTklpQUFBV0FBQUFBQUFBUGl3QUFB
RUFBQUN3SXdBQUZnQUFBQUFBQUtrZkFBQUJBQUFBCk9SWUFBQllBQUFBQUFBQ1lLd0FBQVFBQUFC
a2pBQUFXQUFBQUFBQUE2U0FBQUFFQUFBQUtHQUFBRmdBQUFBQUFBTW9qQUFBQkFBQUEKR0JzQUFC
WUFBQUFBQUFDQUpRQUFBUUFBQUxzZEFBQVdBQUFBQUFBQTVTY0FBQUVBQUFEWUh3QUFGZ0FBQUFB
QUFGRWtBQUFCQUFBQQpuQnNBQUJZQUFBQUFBQURMSmdBQUFRQUFBSThlQUFBVEFBSUFBQUFBaUNj
QUFBRUFBQUNHSHdBQUZnQUFBQUFBQUNrcUFBQUJBQUFBCkR5SUFBQk1BQWdBQUFBRHhLd0FBQVFB
QUFHc2pBQUFXQUFBQUFBQUFSeVVBQUFFQUFBQWZIUUFBRmdBQUFBQUFBS2trQUFBQkFBQUEKTmh3
QUFCWUFBQUFBQUFETklRQUFBUUFBQUh3WUFBQVRBQUlBQUFBQThRQUFBQUVBQUFBb0FBQUFKQUFB
QUFBQUFDa2dBQUFCQUFBQQphQllBQUJZQUFBQUFBQURsSXdBQUFRQUFBQ1FiQUFBVEFBSUFBQUFB
YlNvQUFBRUFBQUJrSWdBQUZnQUFBQUFBQU9BZ0FBQUJBQUFBCjRCY0FBQk1BQWdBQUFBQ1pLQUFB
QVFBQUFPUWZBQUFUQUFJQUFBQUEvU1VBQUFFQUFBQkVIZ0FBRmdBQUFBQUFBRzhqQUFBQkFBQUEK
akJvQUFCWUFBQUFBQUFCSEFnQUFBUUFBQU40SEFBQWtBQUFBQUFBQUN5TUFBQUVBQUFCMEdnQUFG
Z0FBQUFBQUFNWW9BQUFCQUFBQQpjQ0VBQUJNQUFnQUFBQUIySndBQUFRQUFBRmNmQUFBVEFBSUFB
QUFBM1NvQUFBRUFBQUMzSWdBQUZnQUFBQUFBQUx3ZkFBQUJBQUFBClJCWUFBQllBQUFBQUFBQkxL
Z0FBQVFBQUFEWWlBQUFXQUFBQUFBQUE2eDBBQUFFQUFBRFFGQUFBRXdBQ0FBQUFBQVloQUFBQkFB
QUEKTXhnQUFCWUFBQUFBQUFCM0lRQUFBUUFBQUdBWUFBQVdBQUFBQUFBQW54OEFBQUVBQUFEMEZR
QUFFd0FDQUFBQUFJTWZBQUFCQUFBQQowaFVBQUJZQUFBQUFBQURKSUFBQUFRQUFBTlFYQUFBV0FB
QUFBQUFBK3lJQUFBRUFBQUE2R2dBQUV3QUNBQUFBQUNjbUFBQUJBQUFBClVCNEFBQllBQUFBQUFB
QzFKQUFBQVFBQUFFd2NBQUFUQUFJQUFBQUFLU2tBQUFFQUFBRExJUUFBRmdBQUFBQUFBQlVuQUFB
QkFBQUEKSmg4QUFCWUFBQUFBQUFEVkh3QUFBUUFBQUZBV0FBQVdBQUFBQUFBQXFTZ0FBQUVBQUFD
bUlBQUFGd0FDQUFBQUFCc2tBQUFCQUFBQQphaHNBQUJNQUFnQUFBQUNlS3dBQUFRQUFBQ1VqQUFB
VEFBQUFBQUFBd3g0QUFBRUFBQUJ3RlFBQUZnQUFBQUFBQUxJZUFBQUJBQUFBClpSVUFBQllBQUFB
QUFBRDJKZ0FBQVFBQUFPQWVBQUFXQUFBQUFBQUFaeWNBQUFFQUFBQk1Id0FBRmdBQUFBQUFBTHNu
QUFBQkFBQUEKa2g4QUFCTUFBZ0FBQUFDQUhnQUFBUUFBQUVVVkFBQVdBQUFBQUFBQUFBQUFBQUFB
QUFBWkFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBZ0FBQUFBQUFBQUt3QUFBRFJXQVVC
QUFBQUFBQUFBQUFBQUFBQUFBQUFBTkFBQUFBQUFBQUFMZ0FBQUFBQUFBRUFBQUFBCkFBQUFBQUFB
QUFBQUFBQUFBQUVBQUFBQUFBRDBCUUFBMFZnRkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJ3QUFB
QUFBQUdRQUFBQWgKQUFJQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUhBSEFBQUFBQUFBekFFQUFORllC
UUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFBQUFBQQpBQUFCZWxJQUFYZ1FBUkFNQndpUUFRQUFK
QUFBQUJ3QUFBRG9mLy8vLy8vLy94a0FBQUFBQUFBQUFFRU9FSVlDUXcwR0FBQUFBQUFBCkFDd0FB
QUJFQUFBQTRILy8vLy8vLy8rc0FBQUFBQUFBQUFCQkRoQ0dBa01OQmsyREI0d0dqUVdPQkk4REFB
QUFBQ1FBQUFCMEFBQUEKWUlELy8vLy8vLzh1QUFBQUFBQUFBQUJCRGhDR0FrTU5CZ0FBQUFBQUFB
QXNBQUFBbkFBQUFHaUEvLy8vLy8vLzlBVUFBQUFBQUFBQQpRUTRRaGdKRERRWlFnd2VNQm8wRmpn
U1BBd0FBQUFBa0FBQUF6QUFBQURpRy8vLy8vLy8vWkFBQUFBQUFBQUFBUVE0UWhnSkREUVpICmd3
U09Bd0FBTEFBQUFQUUFBQUNBaHYvLy8vLy8vOHdCQUFBQUFBQUFBRUVPRUlZQ1F3MEdUWU1IakFh
TkJZNEVqd01BQUFBQUpna0EKQUNvQUFDMEJDUUFBRndBQUxmWUlBQUF1QUFBdDRRZ0FBQzhBQUMx
SkNBQUFSUUFBTFRjSUFBQWNBQUE5RWdnQUFCY0FBQzBHQ0FBQQpMZ0FBTGZNSEFBQXZBQUF0endj
QUFDc0FBQzNBQndBQUJBQUFIWlFIQUFBcEFBQXRSUWNBQUJjQUFDMDZCd0FBTGdBQUxTZ0hBQUF2
CkFBQXQ4QVlBQURrQUFDM05CZ0FBT2dBQVBjWUdBQUFYQUFBdHRRWUFBRHNBQUMya0JnQUFGd0FB
TFpNR0FBQVhBQUF0Z2dZQUFCY0EKQUMxZkJnQUFJUUFBTFVVR0FBQWdBQUF0SlFZQUFDb0FBQzBV
QmdBQUZ3QUFMUXdHQUFBWEFBQXRCQVlBQUJjQUFDMzVCUUFBR0FBQQpMZWNGQUFBSUFBQVY0QVVB
QUJVQUFDM1ZCUUFBRmdBQUxjb0ZBQUExQUFBdHdBVUFBRFlBQUMyd0JRQUFRd0FBUGFZRkFBQXdB
QUF0Cm5BVUFBRUlBQUQyU0JRQUFGQUFBTFljRkFBQTlBQUE5ZlFVQUFEd0FBRDFnQlFBQUxRQUFM
VVVGQUFBR0FBQWRDUVVBQUFBQUFCM3QKQkFBQUd3QUFQZDRFQUFBUEFBQXRzQVFBQUMwQUFDMmtC
QUFBQlFBQUhZZ0VBQUJIQUFBdGd3UUFBQUFBQUIxdkJBQUFHUUFBTFZVRQpBQUJFQUFBdE93UUFB
Qm9BQUMwckJBQUFMQUFBTFI4RUFBQkJBQUE5K3dNQUFDa0FBQzNuQXdBQUh3QUFMZHdEQUFBa0FB
QXR0Z01BCkFDTUFBQzJIQXdBQUhnQUFMZHNDQUFBekFBQXR1UUlBQURJQUFDMmVBZ0FBTVFBQUxV
TUNBQUFtQUFBdE1BSUFBRVlBQUUwcUFnQUEKQkFBQUZSd0NBQUFHQUFBVkRRSUFBRGNBQUMzL0FR
QUFGd0FBTGZBQkFBQVRBQUF0MXdFQUFDY0FBQzJ3QVFBQUtBQUFMU0FCQUFBNgpBQUE5dHdBQUFC
OEFBQzJzQUFBQUlnQUFMWDhBQUFBZEFBQXRZZ0FBQURRQUFDMUpBQUFBTXdBQUxRY0FBQUFBQUFB
ZCtBQUFBRDRBCkFBN2dBQUFBQlFBQURwZ0FBQUEvQUFBT2dBQUFBRUVBQUE0NEFBQUFRQUFBRGdB
QUFBQWxBQUFPQUFBQUFBRUFBQTRRQUFBQUFnQUEKRGdBQUFBQTRBQUFPMEFrQUFBRUFBQWJJQ1FB
QUFRQUFCcXNKQUFBQkFBQUdvd2tBQUFFQUFBYWFDUUFBQVFBQUJwSUpBQUFCQUFBRwpkd2tBQUFF
QUFBWnZDUUFBQVFBQUJrUUpBQUFCQUFBR1BBa0FBQUVBQUFhdUNBQUFBUUFBQnFZSUFBQUJBQUFH
bVFnQUFBRUFBQWFSCkNBQUFBUUFBQm5nSUFBQUJBQUFHY0FnQUFBRUFBQWI3QndBQUFRQUFCdk1I
QUFBQkFBQUdWZ2NBQUFFQUFBWk9Cd0FBQVFBQUJ2TUcKQUFBQkFBQUc2d1lBQUFFQUFBYWtCZ0FB
QVFBQUJwd0dBQUFCQUFBR2pBWUFBQUVBQUFhRUJnQUFBUUFBQmtZR0FBQUJBQUFHUGdZQQpBQUVB
QUFhZUJRQUFBUUFBQnBZRkFBQUJBQUFHN3dJQUFBRUFBQWJuQWdBQUFRQUFCcThDQUFBQkFBQUdw
d0lBQUFFQUFBWitBUUFBCkFRQUFCbllCQUFBQkFBQUdUd0VBQUFNQUFBWTJBUUFBQVFBQUJpNEJB
QUFCQUFBRzdnQUFBQUlBQUFiTUFBQUFBZ0FBQnJZQUFBQUMKQUFBRzZRRUFBQUVBQUFZRENBQUFB
UUFBQnZzSEFBQUJBQUFHOEFjQUFBRUFBQWJvQndBQUFRQUFCczBIQUFBQkFBQUd4UWNBQUFFQQpB
QWFxQndBQUFRQUFCcUlIQUFBQkFBQUdod2NBQUFFQUFBWi9Cd0FBQVFBQUJuUUhBQUFCQUFBR2JB
Y0FBQUVBQUFaUkJ3QUFBUUFBCkJra0hBQUFCQUFBR1BnY0FBQUVBQUFZMkJ3QUFBUUFBQmhzSEFB
QUJBQUFHRXdjQUFBRUFBQWI0QmdBQUFRQUFCdkFHQUFBQkFBQUcKNVFZQUFBRUFBQWJkQmdBQUFR
QUFCc0lHQUFBQkFBQUd1Z1lBQUFFQUFBYXZCZ0FBQVFBQUJxY0dBQUFCQUFBR2pBWUFBQUVBQUFh
RQpCZ0FBQVFBQUJua0dBQUFCQUFBR2NRWUFBQUVBQUFaV0JnQUFBUUFBQms0R0FBQUJBQUFHUXdZ
QUFBRUFBQVk3QmdBQUFRQUFCaUFHCkFBQUJBQUFHR0FZQUFBRUFBQWI5QlFBQUFRQUFCdlVGQUFB
QkFBQUcyZ1VBQUFFQUFBYlNCUUFBQVFBQUJyY0ZBQUFCQUFBR3J3VUEKQUFFQUFBYVVCUUFBQVFB
QUJvd0ZBQUFCQUFBR2NRVUFBQUVBQUFacEJRQUFBUUFBQms0RkFBQUJBQUFHUmdVQUFBRUFBQVly
QlFBQQpBUUFBQmlNRkFBQUJBQUFHQ0FVQUFBRUFBQVlBQlFBQUFRQUFCdVVFQUFBQkFBQUczUVFB
QUFFQUFBYkNCQUFBQVFBQUJyb0VBQUFCCkFBQUdud1FBQUFFQUFBYVhCQUFBQVFBQUJud0VBQUFC
QUFBR2RBUUFBQUVBQUFaWkJBQUFBUUFBQmxFRUFBQUJBQUFHUmdRQUFBRUEKQUFZK0JBQUFBUUFB
QmpNRUFBQUJBQUFHS3dRQUFBRUFBQVlRQkFBQUFRQUFCZ2dFQUFBQkFBQUc3UU1BQUFFQUFBYmxB
d0FBQVFBQQpCc29EQUFBQkFBQUd3Z01BQUFFQUFBYW5Bd0FBQVFBQUJwOERBQUFCQUFBR2d3TUFB
QUVBQUFaN0F3QUFBUUFBQm1BREFBQUJBQUFHCldBTUFBQUVBQUFaTkF3QUFBUUFBQmtVREFBQUJB
QUFHT2dNQUFBRUFBQVl5QXdBQUFRQUFCaWNEQUFBQkFBQUdId01BQUFFQUFBWVUKQXdBQUFRQUFC
Z3dEQUFBQkFBQUdBUU1BQUFFQUFBYjVBZ0FBQVFBQUJ1NENBQUFCQUFBRzVnSUFBQUVBQUFiYkFn
QUFBUUFBQnRNQwpBQUFCQUFBR3lBSUFBQUVBQUFiQUFnQUFBUUFBQnJVQ0FBQUJBQUFHclFJQUFB
RUFBQWFpQWdBQUFRQUFCcG9DQUFBQkFBQUdmd0lBCkFBRUFBQVozQWdBQUFRQUFCbXdDQUFBQkFB
QUdaQUlBQUFFQUFBWkpBZ0FBQVFBQUJrRUNBQUFCQUFBR05nSUFBQUVBQUFZdUFnQUEKQVFBQUJo
TUNBQUFCQUFBR0N3SUFBQUVBQUFZQUFnQUFBUUFBQnZnQkFBQUJBQUFHM1FFQUFBRUFBQWJWQVFB
QUFRQUFCc29CQUFBQgpBQUFHd2dFQUFBRUFBQWFuQVFBQUFRQUFCcDhCQUFBQkFBQUdoQUVBQUFF
QUFBWjhBUUFBQVFBQUJuRUJBQUFCQUFBR2FRRUFBQUVBCkFBWk9BUUFBQVFBQUJrWUJBQUFCQUFB
R093RUFBQUVBQUFZekFRQUFBUUFBQmhnQkFBQUJBQUFHRUFFQUFBRUFBQVlGQVFBQUFRQUEKQnYw
QUFBQUJBQUFHNGdBQUFBRUFBQWJhQUFBQUFRQUFCczhBQUFBQkFBQUd4d0FBQUFFQUFBYXNBQUFB
QVFBQUJxUUFBQUFCQUFBRwptUUFBQUFFQUFBYVJBQUFBQVFBQUJuUUFBQUFCQUFBR2JBQUFBQUVB
QUFaaEFBQUFBUUFBQmxrQUFBQUJBQUFHUGdBQUFBRUFBQVkyCkFBQUFBUUFBQmlzQUFBQUJBQUFH
SXdBQUFBRUFBQVlJQUFBQUFRQUFCZ0FBQUFBQkFBQUduZ0FBQUFFQUFBYUpBQUFBQVFBQUJuMEEK
QUFBQkFBQUdhQUFBQUFFQUFBWlRBQUFBQVFBQUJqNEFBQUFCQUFBR0tRQUFBQUVBQUFZVUFBQUFB
UUFBQnNRQUFBQVZBQUJVeEFBQQpBQlVBQUFUQUFBQUFGUUFBVk1BQUFBQVZBQUFFdkFBQUFCVUFB
RlM4QUFBQUZRQUFCTGdBQUFBVkFBQlV1QUFBQUJVQUFBUzBBQUFBCkZRQUFWTFFBQUFBVkFBQUVz
QUFBQUJVQUFGU3dBQUFBRlFBQUJLd0FBQUFWQUFCVXJBQUFBQlVBQUFTb0FBQUFGUUFBVktnQUFB
QVYKQUFBRXBBQUFBQlVBQUZTa0FBQUFGUUFBQktBQUFBQVZBQUJVb0FBQUFCVUFBQVNjQUFBQUZR
QUFWSndBQUFBVkFBQUVtQUFBQUJVQQpBRlNZQUFBQUZRQUFCSlFBQUFBVkFBQlVsQUFBQUJVQUFB
U1FBQUFBRlFBQVZKQUFBQUFWQUFBRUZBWUFBQmdBQUZRVUJnQUFHQUFBCkJCQUdBQUFZQUFCVUVB
WUFBQmdBQUFRTUJnQUFHQUFBVkF3R0FBQVlBQUFFQ0FZQUFCZ0FBRlFJQmdBQUdBQUFCQVFHQUFB
WUFBQlUKQkFZQUFCZ0FBQVFBQmdBQUdBQUFWQUFHQUFBWUFBQUUvQVVBQUJnQUFGVDhCUUFBR0FB
QUJQZ0ZBQUFZQUFCVStBVUFBQmdBQUFUMApCUUFBR0FBQVZQUUZBQUFZQUFBRThBVUFBQmdBQUZU
d0JRQUFHQUFBQk93RkFBQVlBQUJVN0FVQUFCZ0FBQVRvQlFBQUdBQUFWT2dGCkFBQVlBQUFFNUFV
QUFCZ0FBRlRrQlFBQUdBQUFCT0FGQUFBWUFBQlU0QVVBQUJnQUFBVGNCUUFBR0FBQVZOd0ZBQUFZ
QUFBRTJBVUEKQUJnQUFGVFlCUUFBR0FBQUJOUUZBQUFZQUFCVTFBVUFBQmdBQUFUUUJRQUFHQUFB
Vk5BRkFBQVlBQUFFekFVQUFCZ0FBRlRNQlFBQQpHQUFBQk1nRkFBQVlBQUJVeUFVQUFCZ0FBQVRF
QlFBQUdBQUFWTVFGQUFBWUFBQUV3QVVBQUJnQUFGVEFCUUFBR0FBQUJMd0ZBQUFZCkFBQlV2QVVB
QUJnQUFBUzRCUUFBR0FBQVZMZ0ZBQUFZQUFBRXRBVUFBQmdBQUZTMEJRQUFHQUFBQkxBRkFBQVlB
QUJVc0FVQUFCZ0EKQUFTc0JRQUFHQUFBVkt3RkFBQVlBQUFFcUFVQUFCZ0FBRlNvQlFBQUdBQUFC
S1FGQUFBWUFBQlVwQVVBQUJnQUFBU2dCUUFBR0FBQQpWS0FGQUFBWUFBQUVuQVVBQUJnQUFGU2NC
UUFBR0FBQUJKZ0ZBQUFZQUFCVW1BVUFBQmdBQUFTVUJRQUFHQUFBVkpRRkFBQVlBQUFFCmtBVUFB
QmdBQUZTUUJRQUFHQUFBQkl3RkFBQVlBQUJVakFVQUFCZ0FBQVNJQlFBQUdBQUFWSWdGQUFBWUFB
QUVoQVVBQUJnQUFGU0UKQlFBQUdBQUFCSUFGQUFBWUFBQlVnQVVBQUJnQUFBUjhCUUFBR0FBQVZI
d0ZBQUFZQUFBRWVBVUFBQmdBQUZSNEJRQUFHQUFBQkhRRgpBQUFZQUFCVWRBVUFBQmdBQUFSd0JR
QUFHQUFBVkhBRkFBQVlBQUFFYkFVQUFCZ0FBRlJzQlFBQUdBQUFCR2dGQUFBWUFBQlVhQVVBCkFC
Z0FBQVJrQlFBQUdBQUFWR1FGQUFBWUFBQUVZQVVBQUJnQUFGUmdCUUFBR0FBQUJGd0ZBQUFZQUFC
VVhBVUFBQmdBQUFSWUJRQUEKR0FBQVZGZ0ZBQUFZQUFBRVZBVUFBQmdBQUZSVUJRQUFHQUFBQkZB
RkFBQVlBQUJVVUFVQUFCZ0FBQVJNQlFBQUdBQUFWRXdGQUFBWQpBQUFFU0FVQUFCZ0FBRlJJQlFB
QUdBQUFCRVFGQUFBWUFBQlVSQVVBQUJnQUFBUkFCUUFBR0FBQVZFQUZBQUFZQUFBRVBBVUFBQmdB
CkFGUThCUUFBR0FBQUJEZ0ZBQUFZQUFCVU9BVUFBQmdBQUFRMEJRQUFHQUFBVkRRRkFBQVlBQUFF
TUFVQUFCZ0FBRlF3QlFBQUdBQUEKQkN3RkFBQVlBQUJVTEFVQUFCZ0FBQVFvQlFBQUdBQUFWQ2dG
QUFBWUFBQUVKQVVBQUJnQUFGUWtCUUFBR0FBQUJDQUZBQUFZQUFCVQpJQVVBQUJnQUFBUWNCUUFB
R0FBQVZCd0ZBQUFZQUFBRUdBVUFBQmdBQUZRWUJRQUFHQUFBQkJRRkFBQVlBQUJVRkFVQUFCZ0FB
QVFRCkJRQUFHQUFBVkJBRkFBQVlBQUFFREFVQUFCZ0FBRlFNQlFBQUdBQUFCQWdGQUFBWUFBQlVD
QVVBQUJnQUFBUUVCUUFBR0FBQVZBUUYKQUFBWUFBQUVBQVVBQUJnQUFGUUFCUUFBR0FBQUJQd0VB
QUFZQUFCVS9BUUFBQmdBQUFUNEJBQUFHQUFBVlBnRUFBQVlBQUFFOUFRQQpBQmdBQUZUMEJBQUFH
QUFBQlBBRUFBQVlBQUJVOEFRQUFCZ0FBQVRzQkFBQUdBQUFWT3dFQUFBWUFBQUU2QVFBQUJnQUFG
VG9CQUFBCkdBQUFCT1FFQUFBWUFBQlU1QVFBQUJnQUFBVGdCQUFBR0FBQVZPQUVBQUFZQUFBRTNB
UUFBQmdBQUZUY0JBQUFHQUFBQk5nRUFBQVkKQUFCVTJBUUFBQmdBQUFUVUJBQUFHQUFBVk5RRUFB
QVlBQUFFMEFRQUFCZ0FBRlRRQkFBQUdBQUFCTXdFQUFBWUFBQlV6QVFBQUJnQQpBQVRJQkFBQUdB
QUFWTWdFQUFBWUFBQUV4QVFBQUJnQUFGVEVCQUFBR0FBQUJNQUVBQUFZQUFCVXdBUUFBQmdBQUFT
OEJBQUFHQUFBClZMd0VBQUFZQUFBRXVBUUFBQmdBQUZTNEJBQUFHQUFBQkxRRUFBQVlBQUJVdEFR
QUFCZ0FBQVN3QkFBQUdBQUFWTEFFQUFBWUFBQUUKckFRQUFCZ0FBRlNzQkFBQUdBQUFCS2dFQUFB
WUFBQlVxQVFBQUJnQUFBU2tCQUFBR0FBQVZLUUVBQUFZQUFBRW9BUUFBQmdBQUZTZwpCQUFBR0FB
QUJKd0VBQUFZQUFCVW5BUUFBQmdBQUFTWUJBQUFHQUFBVkpnRUFBQVlBQUFFbEFRQUFCZ0FBRlNV
QkFBQUdBQUFCSkFFCkFBQVlBQUJVa0FRQUFCZ0FBQVNNQkFBQUdBQUFWSXdFQUFBWUFBQUVpQVFB
QUJnQUFGU0lCQUFBR0FBQUJJUUVBQUFZQUFCVWhBUUEKQUJnQUFBU0FCQUFBR0FBQVZJQUVBQUFZ
QUFBRWZBUUFBQmdBQUZSOEJBQUFHQUFBQkhnRUFBQVlBQUJVZUFRQUFCZ0FBQVIwQkFBQQpHQUFB
VkhRRUFBQVlBQUFFY0FRQUFCZ0FBRlJ3QkFBQUdBQUFCR3dFQUFBWUFBQlViQVFBQUJnQUFBUm9C
QUFBR0FBQVZHZ0VBQUFZCkFBQUVaQVFBQUJnQUFGUmtCQUFBR0FBQUJHQUVBQUFZQUFCVVlBUUFB
QmdBQUFSY0JBQUFHQUFBVkZ3RUFBQVlBQUFFV0FRQUFCZ0EKQUZSWUJBQUFHQUFBQkZRRUFBQVlB
QUJVVkFRQUFCZ0FBQVJRQkFBQUdBQUFWRkFFQUFBWUFBQUVUQVFBQUJnQUFGUk1CQUFBR0FBQQpC
RWdFQUFBWUFBQlVTQVFBQUJnQUFBUkVCQUFBR0FBQVZFUUVBQUFZQUFBRVFBUUFBQmdBQUZSQUJB
QUFHQUFBQkR3RUFBQVlBQUJVClBBUUFBQmdBQUFRNEJBQUFHQUFBVkRnRUFBQVlBQUFFTkFRQUFC
Z0FBRlEwQkFBQUdBQUFCREFFQUFBWUFBQlVNQVFBQUJnQUFBUXMKQkFBQUdBQUFWQ3dFQUFBWUFB
QUVLQVFBQUJnQUFGUW9CQUFBR0FBQUJDUUVBQUFZQUFCVUpBUUFBQmdBQUFRZ0JBQUFHQUFBVkNB
RQpBQUFZQUFBRUhBUUFBQmdBQUZRY0JBQUFHQUFBQkJnRUFBQVlBQUJVR0FRQUFCZ0FBQVFVQkFB
QUdBQUFWQlFFQUFBWUFBQUVFQVFBCkFCZ0FBRlFRQkFBQUdBQUFCQXdFQUFBWUFBQlVEQVFBQUJn
QUFBUUlCQUFBR0FBQVZBZ0VBQUFZQUFBRUJBUUFBQmdBQUZRRUJBQUEKR0FBQUJBQUVBQUFZQUFC
VUFBUUFBQmdBQUFUOEF3QUFHQUFBVlB3REFBQVlBQUFFK0FNQUFCZ0FBRlQ0QXdBQUdBQUFCUFFE
QUFBWQpBQUJVOUFNQUFCZ0FBQVR3QXdBQUdBQUFWUEFEQUFBWUFBQUU3QU1BQUJnQUFGVHNBd0FB
R0FBQUJPZ0RBQUFZQUFCVTZBTUFBQmdBCkFBVGtBd0FBR0FBQVZPUURBQUFZQUFBRTRBTUFBQmdB
QUZUZ0F3QUFHQUFBQk53REFBQVlBQUJVM0FNQUFCZ0FBQVRZQXdBQUdBQUEKVk5nREFBQVlBQUFF
MUFNQUFCZ0FBRlRVQXdBQUdBQUFCTkFEQUFBWUFBQlUwQU1BQUJnQUFBVE1Bd0FBR0FBQVZNd0RB
QUFZQUFBRQp5QU1BQUJnQUFGVElBd0FBR0FBQUJNUURBQUFZQUFCVXhBTUFBQmdBQUFUQUF3QUFH
QUFBVk1BREFBQVlBQUFFdkFNQUFCZ0FBRlM4CkF3QUFHQUFBQkxnREFBQVlBQUJVdUFNQUFCZ0FB
QVNnQUFBQUFRQUFCb0FBQUFBQkFBQUdZQUFBQUFFQUFBWkFBQUFBQVFBQUJpQUEKQUFBQkFBQUdB
QUFBQUFFQUFBWXZCZ0FBRGdNQUFIZ0tBQUFBQUFBQVNRWUFBQTRGQUFDSUNnQUFBQUFBQUY4R0FB
QU9Cd0FBcUFvQQpBQUFBQUFCbkJnQUFEaG9BQVBoL0FBQUFBQUFBcUFRQUFCOENBQUJBQ1FBQUFB
QUFBR01DQUFBZkFnQUFvQWtBQUFBQUFBQ3BBZ0FBCkh3SUFBQUFLQUFBQUFBQUFKQVFBQUI4QkFB
QUFCd0FBQUFBQUFPQUZBQUFmR2dBQXdJQUFBQUFBQUFDREJBQUFId0VBQUhBSEFBQUEKQUFBQUJ3
WUFBQjhhQUFEb2dBQUFBQUFBQUpZQUFBQWZBUUFBQUFFQUFBQUFBQUM0QlFBQUh4b0FBSkNBQUFB
QUFBQUFBUUFBQUI4QgpBQUFBQUFBQUFBQUFBSVlGQUFBZkdnQUFFSUFBQUFBQUFBQVRBQUFBSHdF
QUFDQUFBQUFBQUFBQW13VUFBQjhhQUFBNGdBQUFBQUFBCkFJZ0FBQUFmQVFBQTBBQUFBQUFBQUFD
bkJRQUFIeG9BQUdpQUFBQUFBQUFBL1FBQUFBRUFBQUFBQUFBQUFBQUFBUFVDQUFBQkFBQUEKQUFB
QUFBQUFBQUNoQXdBQUFRQUFBQUFBQUFBQUFBQUFrQU1BQUFFQUFBQUFBQUFBQUFBQUFCVUJBQUFC
QUFBQUFBQUFBQUFBQUFDegpBd0FBQVFBQUFBQUFBQUFBQUFBQVJ3SUFBQUVBQUFBQUFBQUFBQUFB
QUN3Q0FBQUJBQUFBQUFBQUFBQUFBQUNWQWdBQUFRQUFBQUFBCkFBQUFBQUFBMVFRQUFBRUFBQUFB
QUFBQUFBQUFBRVFBQUFBQkFBQUFBQUFBQUFBQUFBQ1NBUUFBQVFBQUFBQUFBQUFBQUFBQWRBQUEK
QUFFQUFBQUFBQUFBQUFBQUFPSURBQUFCQUFBQUFBQUFBQUFBQUFEd0F3QUFBUUFBQUFBQUFBQUFB
QUFBWlFBQUFBRUFBQUFBQUFBQQpBQUFBQUxNQkFBQUJBQUFBQUFBQUFBQUFBQURSQVFBQUFRQUFB
QUFBQUFBQUFBQUFUZ1VBQUFFQUFBQUFBQUFBQUFBQUFGTUJBQUFCCkFBQUFBQUFBQUFBQUFBRGZB
QUFBQVFBQUFBQUFBQUFBQUFBQXpnQUFBQUVBQUFBQUFBQUFBQUFBQU44QkFBQUJBQUFBQUFBQUFB
QUEKQUFETkF3QUFBUUFBQUFBQUFBQUFBQUFBeGdRQUFBRUFBQUFBQUFBQUFBQUFBQmtDQUFBQkFB
QUFBQUFBQUFBQUFBQ0NBZ0FBQVFBQQpBQUFBQUFBQUFBQUFaZ1FBQUFFQUFBQUFBQUFBQUFBQUFF
Z0VBQUFCQUFBQUFBQUFBQUFBQUFBbUF3QUFBUUFBQUFBQUFBQUFBQUFBCmJBRUFBQUVBQUFBQUFB
QUFBQUFBQUg0QkFBQUJBQUFBQUFBQUFBQUFBQUFjQUFBQUFRQUFBQUFBQUFBQUFBQUFMZ0FBQUFF
QUFBQUEKQUFBQUFBQUFBSHNEQUFBQkFBQUFBQUFBQUFBQUFBQmhBd0FBQVFBQUFBQUFBQUFBQUFB
QUlBRUFBQUVBQUFBQUFBQUFBQUFBQUdRRgpBQUFCQUFBQUFBQUFBQUFBQUFBU0JBQUFBUUFBQUFB
QUFBQUFBQUFBdXdBQUFBRUFBQUFBQUFBQUFBQUFBQXdFQUFBQkFBQUFBQUFBCkFBQUFBQURPQWdB
QUFRQUFBQUFBQUFBQUFBQUE0d0lBQUFFQUFBQUFBQUFBQUFBQUFERUZBQUFCQUFBQUFBQUFBQUFB
QUFBV0JRQUEKQVFBQUFBQUFBQUFBQUFBQTl3UUFBQUVBQUFBQUFBQUFBQUFBQVBNQkFBQUJBQUFB
QUFBQUFBQUFBQUFTQXdBQUFRQUFBQUFBQUFBQQpBQUFBUUFNQUFBRUFBQUFBQUFBQUFBQUFBRDhD
QUFBQkFBQUFBQUFBQUFBQUFBRHZCQUFBQVFBQUFBQUFBQUFBQUFBQVJRRUFBQUVBCkFBQUFBQUFB
QUFBQUFGc0NBQUFCQUFBQUFBQUFBQUFBQUFBQVgyZHVjazUxYkd4QmJHZFFZWEpoYlhNQVgyZHVj
bE5wWjI0QVgxTmwKWTB0bGVVZGxkRU5UVTAxTFpYa0FYMU5sWTB0bGVVZGxkRU55WldSbGJuUnBZ
V3h6QUY5RFUxTk5YME5UVUY5RGNtVmhkR1ZUYVdkdQpZWFIxY21WRGIyNTBaWGgwQUY5RFUxTk5Y
MU5wWjI1RVlYUmhBRjlEVTFOTlgwUmxiR1YwWlVOdmJuUmxlSFFBWDI1emMwRnljbUY1ClUybDZa
UUJmVjB0VGFXZHVaV1JRZFdKc2FXTkxaWGxCYm1SRGFHRnNiR1Z1WjJWVGRISnBibWNBWDE5ZmMz
UmhZMnRmWTJoclgyZDEKWVhKa0FGOVRaV05CWTJObGMzTkRjbVZoZEdVQVgxTmxZMEZqWTJWemMw
TnZjSGxUWld4bFkzUmxaRUZEVEV4cGMzUUFYME5HUVhKeQpZWGxIWlhSV1lXeDFaVUYwU1c1a1pY
Z0FYME5HVW1Wc1pXRnpaUUJmVTJWalZISjFjM1JsWkVGd2NHeHBZMkYwYVc5dVEzSmxZWFJsClJu
SnZiVkJoZEdnQVgyOWlhbU5mYlhOblUyVnVaQUJmVTJWalFVTk1VMlYwVTJsdGNHeGxRMjl1ZEdW
dWRITUFYMU5sWTB0bGVVTnkKWldGMFpWQmhhWElBWDFObFkwdGxlVWRsZEVOVFVFaGhibVJzWlFC
ZlExTlRUVjlEVTFCZlEzSmxZWFJsVTNsdGJXVjBjbWxqUTI5dQpkR1Y0ZEFCZlExTlRUVjlWY0dS
aGRHVkRiMjUwWlhoMFFYUjBjbWxpZFhSbGN3QmZRMU5UVFY5WGNtRndTMlY1QUY5VFpXTkJjMjR4
ClEyOWtaWEpEY21WaGRHVUFYMnRUWldOQmMyNHhVM1ZpYW1WamRGQjFZbXhwWTB0bGVVbHVabTlV
Wlcxd2JHRjBaUUJmVTJWalFYTnUKTVVSbFkyOWtaVVJoZEdFQVgwTkdVM1J5YVc1blIyVjBUR1Z1
WjNSb0FGOXRZV3hzYjJNQVgwTkdVM1J5YVc1blIyVjBRMU4wY21sdQpad0JmYzNSeVpIVndBRjlR
ZFdKc2FXTkxaWGxCYm1SRGFHRnNiR1Z1WjJWVVpXMXdiR0YwWlFCZlUyVmpRWE51TVVWdVkyOWta
VWwwClpXMEFYME5UVTAxUFNVUmZUVVExVjJsMGFGSlRRUUJmVTJsbmJtVmtVSFZpYkdsalMyVjVR
VzVrUTJoaGJHeGxibWRsVkdWdGNHeGgKZEdVQVgydERSa0ZzYkc5allYUnZja1JsWm1GMWJIUUFY
MnREUmtGc2JHOWpZWFJ2Y2s1MWJHd0FYME5HUkdGMFlVTnlaV0YwWlZkcApkR2hDZVhSbGMwNXZR
Mjl3ZVFCZmExTmxZMEpoYzJVMk5FVnVZMjlrYVc1bkFGOVRaV05GYm1OdlpHVlVjbUZ1YzJadmNt
MURjbVZoCmRHVUFYMnRUWldOVWNtRnVjMlp2Y20xSmJuQjFkRUYwZEhKcFluVjBaVTVoYldVQVgx
TmxZMVJ5WVc1elptOXliVk5sZEVGMGRISnAKWW5WMFpRQmZVMlZqVkhKaGJuTm1iM0p0UlhobFkz
VjBaUUJmUTBaRVlYUmhSMlYwVEdWdVozUm9BRjlEUmtSaGRHRkhaWFJDZVhSbApVSFJ5QUY5RFJs
TjBjbWx1WjBOeVpXRjBaVmRwZEdoR2IzSnRZWFFBWDFObFkwRnpiakZEYjJSbGNsSmxiR1ZoYzJV
QVgwTlRVMDFmClJuSmxaVXRsZVFCZlExTlRUVjlIWlhSQlVFbE5aVzF2Y25sR2RXNWpkR2x2Ym5N
QVgyWnlaV1VBWDE5ZmMzUmhZMnRmWTJoclgyWmgKYVd3QVgxZExRV1JrUTJWeWRHbG1hV05oZEdW
VWIwdGxlV05vWVdsdVJuSnZiVVJoZEdFQVgxTmxZME5sY25ScFptbGpZWFJsUTNKbApZWFJsUm5K
dmJVUmhkR0VBWDFObFkwTmxjblJwWm1sallYUmxRV1JrVkc5TFpYbGphR0ZwYmdCZlYwdEJaR1JE
WlhKMGFXWnBZMkYwClpYTlViMHRsZVdOb1lXbHVSbkp2YlVSaGRHRUFYMDVsZEhOallYQmxRMlZ5
ZEZObGNYVmxibU5sVkdWdGNHeGhkR1VBWDFObFkwRnoKYmpGRVpXTnZaR1VBWDBOVFUwMVBTVVJm
VUV0RFV6ZGZVMmxuYm1Wa1JHRjBZUUJmYldWdFkyMXdBRjlyVTJWalFYTnVNVk5sY1hWbApibU5s
VDJaQmJubFVaVzF3YkdGMFpRQmZhMU5sWTBGemJqRkpRVFZUZEhKcGJtZFVaVzF3YkdGMFpRQmZh
MU5sWTBGemJqRkJiR2R2CmNtbDBhRzFKUkZSbGJYQnNZWFJsQUY5UFFrcERYME5NUVZOVFh5UmZU
bE5CY25KaGVRQmZYMTlEUmtOdmJuTjBZVzUwVTNSeWFXNW4KUTJ4aGMzTlNaV1psY21WdVkyVUFY
MmR1Y2s1MWJHeEJiR2RRWVhKaGJYTXVaV2dBWDJkdWNsTnBaMjR1WldnQVgyNXpjMEZ5Y21GNQpV
Mmw2WlM1bGFBQmZWMHRUYVdkdVpXUlFkV0pzYVdOTFpYbEJibVJEYUdGc2JHVnVaMlZUZEhKcGJt
Y3VaV2dBWDFkTFFXUmtRMlZ5CmRHbG1hV05oZEdWVWIwdGxlV05vWVdsdVJuSnZiVVJoZEdFdVpX
Z0FYMWRMUVdSa1EyVnlkR2xtYVdOaGRHVnpWRzlMWlhsamFHRnAKYmtaeWIyMUVZWFJoTG1Wb0FG
OW5ibkpPZFd4c1FXeG5VR0Z5WVcxekxtVnVZMDUxYkd3QVRGOVBRa3BEWDAxRlZFaGZWa0ZTWDA1
QgpUVVZmQUd4ZkxuTjBjakVBUlVoZlpuSmhiV1V3QUFBQUFBb0tDZ29qTVM4eU1DQWdJQ0FnSUNB
Z0lDQWdNVE0zTVRjM05qQXpOQ0FnCk5UQXhJQ0FnTWpBZ0lDQWdNVEF3TmpRMElDQTBORGcyTUNB
Z0lDQWdZQXBSVkV0cGRFbHVkR1Z5Wm1GalpTNXZBQUFBQU0vNjdmNEgKQUFBQkF3QUFBQUVBQUFB
REFBQUFJQWtBQUFBZ0FBQUFBQUFBR1FBQUFMZ0lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQQpBQUJZY2dBQUFBQUFBRUFKQUFBQUFBQUFHSElBQUFBQUFBQUhBQUFBQndBQUFCc0FBQUFB
QUFBQVgxOTBaWGgwQUFBQUFBQUFBQUFBCkFGOWZWRVZZVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUcwTkFBQUFBQUFBUUFrQUFBUUFBQUJZZXdBQU93RUFBQUFFQUlBQUFBQUEKQUFBQUFBQUFBQUJm
WDJ4cGRHVnlZV3c0QUFBQUFBQUFYMTlVUlZoVUFBQUFBQUFBQUFBQUFIQU5BQUFBQUFBQUNBQUFB
QUFBQUFDdwpGZ0FBQXdBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUY5ZlpHRjBZ
UUFBQUFBQUFBQUFBQUJmWDBSQlZFRUFBQUFBCkFBQUFBQUFBZUEwQUFBQUFBQUF3QUFBQUFBQUFB
TGdXQUFBREFBQUFNSVVBQUFZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVgxOXYKWW1walgyMWxk
R2h1WVcxbEFGOWZWRVZZVkFBQUFBQUFBQUFBQUFDb0RRQUFBQUFBQVBNQkFBQUFBQUFBNkJZQUFB
QUFBQUFBQUFBQQpBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUJmWDI5aWFtTmZiWE5uY21WbWN3
QUFYMTlFUVZSQkFBQUFBQUFBQUFBQUFLQVBBQUFBCkFBQUFjQUFBQUFBQUFBRGdHQUFBQkFBQUFH
Q0ZBQUFPQUFBQUN3QUFBQUFBQUFBQUFBQUFBQUFBQUY5ZmIySnFZMTl6Wld4eVpXWnoKQUFCZlgw
UkJWRUVBQUFBQUFBQUFBQUFBRUJBQUFBQUFBQUM0QUFBQUFBQUFBRkFaQUFBREFBQUEwSVVBQUJj
QUFBQUZBQUFRQUFBQQpBQUFBQUFBQUFBQUFYMTl2WW1walgyTnNZWE56Y21WbWMxOWZSRUZVUVFB
QUFBQUFBQUFBQUFESUVBQUFBQUFBQUNBQUFBQUFBQUFBCkNCb0FBQU1BQUFDSWhnQUFCQUFBQUFB
QUFCQUFBQUFBQUFBQUFBQUFBQUJmWDJOemRISnBibWNBQUFBQUFBQUFYMTlVUlZoVUFBQUEKQUFB
QUFBQUFBT2dRQUFBQUFBQUFmZ01BQUFBQUFBQW9HZ0FBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFB
QUFBQUFBQUFBQUFBQUY5ZgpZMlp6ZEhKcGJtY0FBQUFBQUFCZlgwUkJWRUVBQUFBQUFBQUFBQUFB
Y0JRQUFBQUFBQUFBQWdBQUFBQUFBTEFkQUFBRUFBQUFxSVlBCkFDQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFYMTlpYzNNQUFBQUFBQUFBQUFBQUFGOWZSRUZVUVFBQUFBQUFBQUFBQUFBWWNnQUEK
QUFBQUFFQUFBQUFBQUFBQUFBQUFBQU1BQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFB
QUJmWDI5aWFtTmZhVzFoWjJWcApibVp2WDE5RVFWUkJBQUFBQUFBQUFBQUFBSEFXQUFBQUFBQUFD
QUFBQUFBQUFBQ3dId0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBCkFBQUFBQUFBQUFBQUFGOWZa
R1ZpZFdkZmFXNW1id0FBQUFCZlgwUlhRVkpHQUFBQUFBQUFBQUFBZUJZQUFBQUFBQURnSFFBQUFB
QUEKQUxnZkFBQUFBQUFBcUljQUFGSUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFYMTlrWldKMVox
OWhZbUp5WlhZQUFGOWZSRmRCVWtZQQpBQUFBQUFBQUFBQllOQUFBQUFBQUFLMENBQUFBQUFBQW1E
MEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUJmClgyUmxZblZuWDJGeVlX
NW5aWE1BWDE5RVYwRlNSZ0FBQUFBQUFBQUFBQVUzQUFBQUFBQUFBQUFBQUFBQUFBQkZRQUFBQUFB
QUFBQUEKQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFGOWZaR1ZpZFdkZmJXRmphVzVtYndC
ZlgwUlhRVkpHQUFBQUFBQUFBQUFBQlRjQQpBQUFBQUFBQUFBQUFBQUFBQUVWQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFYMTlrWldKMVoxOXNhVzVsCkFBQUFBRjlmUkZk
QlVrWUFBQUFBQUFBQUFBQUZOd0FBQUFBQUFGd0VBQUFBQUFBQVJVQUFBQUFBQUFBNGlnQUFBUUFB
QUFBQUFBSUEKQUFBQUFBQUFBQUFBQUFCZlgyUmxZblZuWDJ4dll3QUFBQUFBWDE5RVYwRlNSZ0FB
QUFBQUFBQUFBR0U3QUFBQUFBQUEvZ01BQUFBQQpBQUNoUkFBQUFBQUFBRUNLQUFCSUFBQUFBQUFB
QWdBQUFBQUFBQUFBQUFBQUFGOWZaR1ZpZFdkZmNIVmlkSGx3WlhOZlgwUlhRVkpHCkFBQUFBQUFB
QUFBQVh6OEFBQUFBQUFDM0FRQUFBQUFBQUo5SUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFB
QUFBQUFBQUFBQUEKWDE5a1pXSjFaMTl6ZEhJQUFBQUFBRjlmUkZkQlVrWUFBQUFBQUFBQUFBQVdR
UUFBQUFBQUFIa2FBQUFBQUFBQVZrb0FBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFB
QUFBQUFCZlgyUmxZblZuWDNKaGJtZGxjd0FBWDE5RVYwRlNSZ0FBQUFBQUFBQUFBSTliCkFBQUFB
QUFBOEFFQUFBQUFBQURQWkFBQUFBQUFBSUNNQUFBcUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFG
OWZaR1ZpZFdkZmFXNXMKYVc1bFpBQmZYMFJYUVZKR0FBQUFBQUFBQUFBQWYxMEFBQUFBQUFCa0FB
QUFBQUFBQUw5bUFBQUFBQUFBMEkwQUFBY0FBQUFBQUFBQwpBQUFBQUFBQUFBQUFBQUFBWDE5aGNI
QnNaVjl1WVcxbGN3QUFBRjlmUkZkQlVrWUFBQUFBQUFBQUFBRGpYUUFBQUFBQUFMUUdBQUFBCkFB
QUFJMmNBQUFBQUFBQUlqZ0FBZmdBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFCZlgyRndjR3hsWDI5
aWFtTUFBQUFBWDE5RVYwRlMKUmdBQUFBQUFBQUFBQUpka0FBQUFBQUFBSkFBQUFBQUFBQURYYlFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQQpBRjlmWVhCd2JHVmZibUZ0WlhO
d1lXTmZYMFJYUVZKR0FBQUFBQUFBQUFBQXUyUUFBQUFBQUFBa0FBQUFBQUFBQVB0dEFBQUFBQUFB
CkFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBWDE5aGNIQnNaVjkwZVhCbGN3QUFBRjlm
UkZkQlVrWUFBQUFBQUFBQUFBRGYKWkFBQUFBQUFBSndHQUFBQUFBQUFIMjRBQUFBQUFBRDRrUUFB
Y0FBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFCZlgyTnZiWEJoWTNSZgpkVzUzYVc1a1gxOU1SQUFB
QUFBQUFBQUFBQUFBQUlCckFBQUFBQUFBNEFJQUFBQUFBQURBZEFBQUF3QUFBSGlWQUFBWEFBQUFB
QUFBCkFnQUFBQUFBQUFBQUFBQUFBRjlmWldoZlpuSmhiV1VBQUFBQUFBQmZYMVJGV0ZRQUFBQUFB
QUFBQUFBQVlHNEFBQUFBQUFDNEF3QUEKQUFBQUFLQjNBQUFEQUFBQUFBQUFBQUFBQUFBTEFBQm9B
QUFBQUFBQUFBQUFBQUFBQWdBQUFCZ0FBQUF3bGdBQW1RQUFBTUNmQUFCbwpEd0FBQ3dBQUFGQUFB
QUFBQUFBQWJRQUFBRzBBQUFBZEFBQUFpZ0FBQUE4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCVlNJbmxRVlpUL3hVQUFB
QUFTSTAxQUFBQUFFaUp4LzhWQUFBQUFFaUwKTmV3UEFBQk1pelVBQUFBQVNJbkhRZi9XU0luRDhn
OFFCVFFOQUFCSWl6WFZEd0FBU0luZlFmL1dTSW5ZVzBGZVhjTm1abVptWm1ZdQpEeCtFQUFBQUFB
QlZTSW5sUVZaVGcvOEhkZ2N4MitsSUFnQUFpZmxJalFWSUFnQUFTR01NaUVnQndmL2gveFVBQUFB
QTZ3Yi9GUUFBCkFBQklqVFVBQUFBQVNJbkgveFVBQUFBQVNJczFaZzhBQUV5TE5RQUFBQUJJaWNk
Qi85WklpY05JaXpWZkR3QUFTSW5mUWYvV1NJczEKV2c4QUFFaUp4N29CQUFBQTZkMEJBQUQvRlFB
QUFBQklqVFVBQUFBQVNJbkgveFVBQUFBQVNJczFHQThBQUV5TE5RQUFBQUJJaWNkQgovOVpJaWNO
SWpSVmhFd0FBU0lzMUdnOEFBRWlMUGFzUEFBQkIvOVpJaXpVUkR3QUFTSW5mU0luQ1FmL1dTSTBW
V1JNQUFFaUxOZklPCkFBQklpejJERHdBQVFmL1dTSXMxOFE0QUFFaUozMGlKd2tILzFraUxOY0VP
QUFCSWlkOUIvOVpJaXpYY0RnQUFTSW5IdWdFQUFBRHAKTUFFQUFQOFZBQUFBQUVpTk5RQUFBQUJJ
aWNmL0ZRQUFBQUJJaXpWNkRnQUFUSXMxQUFBQUFFaUp4MEgvMWtpSncwaU5GUU1UQUFEcAoyUUFB
QVA4VkFBQUFBRWlOTlFBQUFBQklpY2YvRlFBQUFBQklpelZCRGdBQVRJczFBQUFBQUVpSngwSC8x
a2lKdzBpTkZlb1NBQURwCm9BQUFBUDhWQUFBQUFFaU5OUUFBQUFCSWljZi9GUUFBQUFCSWl6VUlE
Z0FBVElzMUFBQUFBRWlKeDBILzFraUp3MGlORmRFU0FBRHIKYXY4VkFBQUFBRWlOTlFBQUFBQklp
Y2YvRlFBQUFBQklpelhTRFFBQVRJczFBQUFBQUVpSngwSC8xa2lKdzBpTkZic1NBQURyTlA4VgpB
QUFBQUVpTk5RQUFBQUJJaWNmL0ZRQUFBQUJJaXpXY0RRQUFUSXMxQUFBQUFFaUp4MEgvMWtpSncw
aU5GYVVTQUFCSWl6V2VEUUFBClNJczlMdzRBQUVILzFraUxOWlVOQUFCSWlkOUlpY0pCLzlaSWl6
V2REUUFBU0luZk1kSkIvOVpJaWRoYlFWNWR3NURCL2YvL3lmMy8KL3hmKy8vKzEvdi8vN3Y3Ly95
Zi8vLzlkLy8vL2svLy8vMlptWmk0UEg0UUFBQUFBQUZWSWllVkJWbE5JaWZ0SWl4VlhEUUFBU0kw
MQpBQUFBQVA4VkFBQUFBSVRBZENwSWl6VS9EUUFBVElzMUFBQUFBRWlKMzBILzFraUxOVE1OQUFC
SWpSVWNFZ0FBU0luSFFmL1c2d0l3CndBKyt3RnRCWGwzRFppNFBINFFBQUFBQUFGVklpZVZCVjBG
V1UxQkJpZlpJaWZ0SWl4WHhEQUFBU0kwMUFBQUFBUDhWQUFBQUFJVEEKRDRTQ0FBQUFTSXMxMVF3
QUFFeUxQUUFBQUFCSWlkOUIvOWRJaXpYSkRBQUFTSTBWc2hFQUFFaUp4MEgvMTRUQWRGWklpelc1
REFBQQpTSTBWbWhFQUFFaUozLzhWQUFBQUFFaU5OUUFBQUFCSWljY3gwdjhWQUFBQUFFaU5OUUFB
QUFCSWpSV1JFUUFBU0luSC94VUFBQUFBClNJbkNTSVhTZEE1RmhQWjBGRWlMTlh3TUFBRHJFa2lE
eEFoYlFWNUJYMTNEU0lzMVlBd0FBRWlKMzBpRHhBaGJRVjVCWDEzL0pRQUEKQUFCbVptWm1MZzhm
aEFBQUFBQUFWVWlKNVZOUVNJbjdTSTAxVUJFQUFPZ0FBQUFBU0kwMVpCRUFBRWlKMytnQUFBQUFT
STAxZFJFQQpBRWlKMytnQUFBQUFTSTAxaGhFQUFFaUozMGlEeEFoYlhla0FBQUFBRHgrRUFBQUFB
QUJWU0lubFFWZEJWa0ZWUVZSVFNJUHNLRW1KCjlrbUovMGlMRmNvTEFBQklqVFVBQUFBQS94VUFB
QUFBaE1BUGhLY0NBQUJJaXpXdUN3QUFUSW4vVElueS94VUFBQUFBU0luRFNJMDEKQUFBQUFFaUoz
LzhWQUFBQUFFaUZ3QStFZUFJQUFFeUpmY0JJaXozakN3QUFUSTA5QUFBQUFFeUovdjhWQUFBQUFF
bUp4RXlOTlFBQQpBQUJJaWQ5TWlmYi9GUUFBQUFCSWl6Vm1Dd0FBVElzdEFBQUFBRXlKNTBpSndr
SC8xVWlKUmJoSWl6MmpDd0FBVEluKy94VUFBQUFBClNZbkhTSW5mVEluMi94VUFBQUFBU0lzMUxB
c0FBRXlKLzBpSndrSC8xVWlKUmRCSWlkOU1pZmIvRlFBQUFBQkloY0FQaEN3QkFBQkkKaXdVQUFB
QUFTSXNBU0lsRnlFVXg5bVlQSDRRQUFBQUFBRWlKMzBtSjMwaU5OUUFBQUFCTWlmTC9GUUFBQUFC
SmljUk1pZWRJalRVQQpBQUFBU0kwVlZoQUFBUDhWQUFBQUFFbUp4VTJGN1ErRmhBQUFBRXlKNTBp
Tk5RQUFBQUJJalJWVEVBQUEveFVBQUFBQVNZbkZUWVh0CmRXVk1pZWRJalRVQUFBQUFTSTBWVkJB
QUFQOFZBQUFBQUVpSngwaUxOWHdLQUFEL0ZRQUFBQUFQdi9CSWkzM0lNZExvQUFBQUFFaUoKdzBp
RjIzUUlTSW5mNkFBQUFBQklpZDlJalRVQUFBQUEveFVBQUFBQVNZbkZUWVh0ZERzUEg0UUFBQUFB
QUV5SjUwaU5OUUFBQUFCSQpqUlVQRHdBQS94VUFBQUFBU0lYQWRCZElpMzNRU0lzMUdRb0FBRWlK
d2t5SjZmOFZBQUFBQUV5SiswaUozMGlOTlFBQUFBRC9GUUFBCkFBQkovOFpKT2NZUGd1NysvLzlN
aXpVM0NnQUFTSXMxNkFrQUFFaUxmZEJJaXgwQUFBQUEvOU5JaXpYY0NRQUFUSW4zU0luQ01jbi8K
MDBpSncwaU5OUUFBQUFCSWlkLy9GUUFBQUFCSWhjQk1pM1hBZEQ1SWpUVUFBQUFBU0luZk1kTC9G
UUFBQUFCSWpUVUFBQUFBU0l0OQowRWlKd3Y4VkFBQUFBRWlGd0hRVFNJczFYQWtBQUV5SjkwaUp3
djhWQUFBQUFFaU5IUUFBQUFCSWkzMjRTSW5lL3hVQUFBQUFTSXNGCkFBQUFBRWlMZmRCSWlkNUln
OFFvVzBGY1FWMUJYa0ZmWGYvZ1NJUEVLRnRCWEVGZFFWNUJYMTNERHgrQUFBQUFBRlZJaWVXd0FZ
UC8KQVhSbWcvOENkUkdBUGYvLy8vOEJkUXlLQlFBQUFBRHJVRERBNjB4SWl3VUFBQUFBU0lYQWRS
MUlqVDBBQUFBQXZnSUFBQURvQUFBQQpBRWlKQlFBQUFBQkloY0IwS0VpTk5RQUFBQUJJaWNmb0FB
QUFBRWlGd0ErVkJRQUFBQUFQbGNER0JmLy8vLzhCRDc3QVhjTklqVDBBCkFBQUFTSTAxQUFBQUFF
aU5EUUFBQUFDNkpnQUFBT2dBQUFBQVptWXVEeCtFQUFBQUFBQlZTSW5sVTFEL0ZRQUFBQUJJaXpX
RkNBQUEKU0luSC94VUFBQUFBU0luRFNJc1ZlZ2dBQUVpTk5RQUFBQUJJaWQvL0ZRQUFBQUNFd0hR
V1NJczFYd2dBQUVpSjMwaUR4QWhiWGY4bApBQUFBQURIQVNJUEVDRnRkd3c4ZmdBQUFBQUJWU0lu
bFFWWlRTWW4rL3hVQUFBQUFTSXMxSVFnQUFFaUp4LzhWQUFBQUFFaUp3MGlMCkZSNElBQUJJalRV
QUFBQUFTSW5mL3hVQUFBQUFoTUIwRjBpTE5RTUlBQUJJaWQ5TWlmSmJRVjVkL3lVQUFBQUFXMEZl
WGNObUR4OUUKQUFCVlNJbmxVMUQvRlFBQUFBQklpelhGQndBQVNJbkgveFVBQUFBQVNJbkRTSXNW
eWdjQUFFaU5OUUFBQUFCSWlkLy9GUUFBQUFDRQp3SFFXU0lzMXJ3Y0FBRWlKMzBpRHhBaGJYZjhs
QUFBQUFFaUR4QWhiWGNObUR4K0VBQUFBQUFCVlNJbmxYZjhsQUFBQUFBOGZSQUFBClZVaUo1VWlM
QlFBQUFBQkloY0IxSFVpTlBRQUFBQUMrQWdBQUFPZ0FBQUFBU0lrRkFBQUFBRWlGd0hRNlNJMDFB
QUFBQUVpSngrZ0EKQUFBQVNJWEFkRVZJaXpoSWpUVUFBQUFBNkFBQUFBQklqUVVBQUFBQVNJa0ZB
QUFBQUVpTEJRQUFBQUJkdzBpTlBRQUFBQUJJalRVQQpBQUFBU0kwTkFBQUFBTG9tQUFBQTZBQUFB
QUJJalQwQUFBQUFTSTAxQUFBQUFFaU5EUUFBQUFDNk9RQUFBT2dBQUFBQVptWXVEeCtFCkFBQUFB
QUJWU0lubFNJc0ZBQUFBQUYzRER4OEFWVWlKNVVpRFBmLy8vLzhBZFIxSWpUMEFBQUFBdmdJQUFB
RG9BQUFBQUVpSkJRQUEKQUFCSWhjQjBOMGlOUFFBQUFBRG9BQUFBQUVpTk5RQUFBQUJJaWNmb0FB
QUFBRWlMQlFBQUFBQkloY0IwTDBpTkRRQUFBQUJJaVEwQQpBQUFBWGNOSWpUMEFBQUFBU0kwMUFB
QUFBRWlORFFBQUFBQzZKZ0FBQU9nQUFBQUFTSTA5QUFBQUFFaU5OUUFBQUFCSWpRMEFBQUFBCnVq
WUFBQURvQUFBQUFGVklpZVZJaXdVQUFBQUFYY01QSHdCVlNJbmxTSU05Ly8vLy93QjFIVWlOUFFB
QUFBQytBZ0FBQU9nQUFBQUEKU0lrRkFBQUFBRWlGd0hRM1NJMDlBQUFBQU9nQUFBQUFTSTAxQUFB
QUFFaUp4K2dBQUFBQVNJc0ZBQUFBQUVpRndIUXZTSTBOQUFBQQpBRWlKRFFBQUFBQmR3MGlOUFFB
QUFBQklqVFVBQUFBQVNJME5BQUFBQUxvbUFBQUE2QUFBQUFCSWpUMEFBQUFBU0kwMUFBQUFBRWlO
CkRRQUFBQUM2S2dBQUFPZ0FBQUFBVlVpSjVVaUxCUUFBQUFCZHd3OGZBRlZJaWVWSWd6My8vLy8v
QUhVZFNJMDlBQUFBQUw0Q0FBQUEKNkFBQUFBQklpUVVBQUFBQVNJWEFkRGRJalQwQUFBQUE2QUFB
QUFCSWpUVUFBQUFBU0luSDZBQUFBQUJJaXdVQUFBQUFTSVhBZEM5SQpqUTBBQUFBQVNJa05BQUFB
QUYzRFNJMDlBQUFBQUVpTk5RQUFBQUJJalEwQUFBQUF1aVlBQUFEb0FBQUFBRWlOUFFBQUFBQklq
VFVBCkFBQUFTSTBOQUFBQUFMb3pBQUFBNkFBQUFBQlZTSW5sU0lzRkFBQUFBRjNERHg4QVZVaUo1
VWlEUGYvLy8vOEFkUjFJalQwQUFBQUEKdmdJQUFBRG9BQUFBQUVpSkJRQUFBQUJJaGNCME4waU5Q
UUFBQUFEb0FBQUFBRWlOTlFBQUFBQklpY2ZvQUFBQUFFaUxCUUFBQUFCSQpoY0IwTDBpTkRRQUFB
QUJJaVEwQUFBQUFYY05JalQwQUFBQUFTSTAxQUFBQUFFaU5EUUFBQUFDNkpnQUFBT2dBQUFBQVNJ
MDlBQUFBCkFFaU5OUUFBQUFCSWpRMEFBQUFBdWkwQUFBRG9BQUFBQUZWSWllVklpd1VBQUFBQVhj
TVBId0JWU0lubFNJTTkvLy8vL3dCMUhVaU4KUFFBQUFBQytBZ0FBQU9nQUFBQUFTSWtGQUFBQUFF
aUZ3SFEzU0kwOUFBQUFBT2dBQUFBQVNJMDFBQUFBQUVpSngrZ0FBQUFBU0lzRgpBQUFBQUVpRndI
UXZTSTBOQUFBQUFFaUpEUUFBQUFCZHcwaU5QUUFBQUFCSWpUVUFBQUFBU0kwTkFBQUFBTG9tQUFB
QTZBQUFBQUJJCmpUMEFBQUFBU0kwMUFBQUFBRWlORFFBQUFBQzZNQUFBQU9nQUFBQUFWVWlKNVVp
TEJRQUFBQUJkd3dBQUFGOGVXeEUwbk9RL0FBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWVd4c2IyTUFhVzVwZEFCegpaWFJEYjI1
MFpXNTBRbTl5WkdWeVVHOXphWFJwYjI0NkFHTmxiR3dBYzJWMFEyOXVkR2x1ZFc5MWN6b0FhVzFo
WjJWT1lXMWxaRG9BCmMyVjBTVzFoWjJVNkFITmxkRUZzZEdWeWJtRjBaVWx0WVdkbE9nQnpaWFJU
YUc5M2MxTjBZWFJsUW5rNkFITmxkRUp2Y21SbGNtVmsKT2dCaGJIUmxjbTVoZEdWSGNtOTFjRlI1
Y0dWekFISmxjM0J2Ym1SelZHOVRaV3hsWTNSdmNqb0FZMjl1ZEdGcGJuTlBZbXBsWTNRNgpBR0Zz
ZEdWeWJtRjBaWE5HYjNKTlpXUnBZVlI1Y0dVNkFHOWlhbVZqZEVGMFNXNWtaWGc2QUc5aWFtVmpk
RVp2Y2t0bGVUb0FaR1Z6ClpXeGxZM1JCYkhSbGNtNWhkR1ZIY205MWNGUnlZV05yT2dCelpXeGxZ
M1JCYkhSbGNtNWhkR1ZIY205MWNGUnlZV05yT2dCamIzVnUKZEFCcGJtbDBWMmwwYUVOaGNHRmph
WFI1T2dCcGJuUldZV3gxWlFCaGRYUnZjbVZzWldGelpRQnpaWFJQWW1wbFkzUTZabTl5UzJWNQpP
Z0JoYkd4TFpYbHpBSEJ5WldabGNuSmxaRXh2WTJGc2FYcGhkR2x2Ym5OR2NtOXRRWEp5WVhrNlpt
OXlVSEpsWm1WeVpXNWpaWE02CkFISmxiR1ZoYzJVQWNYUlZkR2xzYVhScFpYTUFjMmwwWlhOSmJr
UnZkMjVzYjJGa1EyRmphR1VBWTJ4bFlYSkViM2R1Ykc5aFpFTmgKWTJobFJtOXlVMmwwWlRvQVky
eGxZWEpFYjNkdWJHOWhaRU5oWTJobEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFFNVRVR3hoZVZSbGJYQnNZWFJsQUU1VFVHRjFjMlZSVkZCeWFYWmhk
R1ZVWlcxdwpiR0YwWlFCT1UwVjRhWFJHZFd4c1UyTnlaV1Z1VkdWdGNHeGhkR1VBVGxOU1pYZHBi
bVJVWlcxd2JHRjBaUUJPVTBaaGMzUkdiM0ozCllYSmtWR1Z0Y0d4aGRHVUFUbE5CZFdScGIwOTFk
SEIxZEZadmJIVnRaVWhwWjJoVVpXMXdiR0YwWlFCT1UwRjFaR2x2VDNWMGNIVjAKVm05c2RXMWxU
RzkzVkdWdGNHeGhkR1VBWTJ4amNBQlJWRUZzZEdWeWJtRjBaWE5mVVZSVWNtRmphd0IyYVdSbEFI
TnZkVzRBWTNCcwpjQUJ6WW5Sc0FGRlVRV3gwWlhKdVlYUmxjMTlNWVc1bmRXRm5aVU52WkdWRmJt
TnZaR2x1WjE5SlUwOWZOak01WHpKVUFGRlVRV3gwClpYSnVZWFJsYzE5TVlXNW5kV0ZuWlVOdlpH
VkZibU52WkdsdVoxOVNSa05mTkRZME5nQlJWRUZzZEdWeWJtRjBaWE5mVEdGdVozVmgKWjJWRGIy
UmxSVzVqYjJScGJtZGZUV0ZqVkhsd1pWOU1ZVzVuUTI5a1pRQlJWRlZKVjJsa1oyVjBTVzFoWjJW
V1lXeDFaVkpsZEhKbApZWFF6TUVkc2VYQm9BRkZVVFc5MmFXVk1iMkZrWldSU1lXNW5aWE5FYVdS
RGFHRnVaMlZPYjNScFptbGpZWFJwYjI0QWFXNXBkRkZVClRXOTJhV1ZNYjJGa1pXUlNZVzVuWlhO
RWFXUkRhR0Z1WjJWT2IzUnBabWxqWVhScGIyNEFMMVZ6WlhKekwyRnNaWGhqYUhKcGMzUmwKYm5O
bGJpOTNaV0pyYVhRdlNXNTBaWEp1WVd3dlYyVmlTMmwwVTNsemRHVnRTVzUwWlhKbVlXTmxMMUZV
UzJsMFNXNTBaWEptWVdObApMbTF0QUhCdmFXNTBaWElBVVZSVmRHbHNhWFJwWlhNQWFXNXBkRkZV
VlhScGJHbDBhV1Z6QUdOc1lYTnpVVlJWZEdsc2FYUnBaWE1BCkwxTjVjM1JsYlM5TWFXSnlZWEo1
TDBaeVlXMWxkMjl5YTNNdlVWUkxhWFF1Wm5KaGJXVjNiM0pyTDFGVVMybDBBRkZVUzJsMFRHbGkK
Y21GeWVRQm1jbUZ0WlhkdmNtdE1hV0p5WVhKNUFGRlVTRlZFUW5WMGRHOXVBR2x1YVhSUlZFaFZS
RUoxZEhSdmJnQmpiR0Z6YzFGVQpTRlZFUW5WMGRHOXVBRkZVU0ZWRVUyeHBaR1Z5QUdsdWFYUlJW
RWhWUkZOc2FXUmxjZ0JqYkdGemMxRlVTRlZFVTJ4cFpHVnlBRkZVClNGVkVWR2x0Wld4cGJtVUFh
VzVwZEZGVVNGVkVWR2x0Wld4cGJtVUFZMnhoYzNOUlZFaFZSRlJwYldWc2FXNWxBRkZVU0ZWRVFt
RmoKYTJkeWIzVnVaRlpwWlhjQWFXNXBkRkZVU0ZWRVFtRmphMmR5YjNWdVpGWnBaWGNBWTJ4aGMz
TlJWRWhWUkVKaFkydG5jbTkxYm1SVwphV1YzQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1nSEFB
QUFBQUFBQUFBQUFBQUFBQUFPQUFBQUFBQUFBQUFBQUFBQUFBQUF5QWNBCkFBQUFBQUFBQUFBQUFB
QUFBQmdBQUFBQUFBQUFBQUFBQUFBQUFBRElCd0FBQUFBQUFBQUFBQUFBQUFBQUdBQUFBQUFBQUFB
QUFBQUEKQUFBQUFNZ0hBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBeUFj
QUFBQUFBQUFBQUFBQUFBQUFBQlVBQUFBQQpBQUFBQUFBQUFBQUFBQURJQndBQUFBQUFBQUFBQUFB
QUFBQUFId0FBQUFBQUFBQUFBQUFBQUFBQUFNZ0hBQUFBQUFBQUFBQUFBQUFBCkFBQWVBQUFBQUFB
QUFBQUFBQUFBQUFBQXlBY0FBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQURJ
QndBQUFBQUEKQUFBQUFBQUFBQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBTWdIQUFBQUFBQUFBQUFB
QUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQQp5QWNBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFB
QUFBQUFBQUFBQUFBQUFESUJ3QUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBCkFBQUFBQUFB
QU1nSEFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUF5QWNBQUFBQUFBQUFB
QUFBQUFBQUFDd0EKQUFBQUFBQUFBQUFBQUFBQUFBRElCd0FBQUFBQUFBQUFBQUFBQUFBQUtnQUFB
QUFBQUFBQUFBQUFBQUFBQU1nSEFBQUFBQUFBQUFBQQpBQUFBQUFBeUFBQUFBQUFBQUFBQUFBQUNB
QUFBM0IwQUFBSUFBQUFBQUFnQkFBQUFBQkVBUHdBQUFBQUFBQUFBQUFBQUFBQUFBSTRBCkFBQUJB
Z0x6QUFBQUJBZ0RLQUFBQVBvQUFBQUMrUVF2QUFBQUJjc0FBQUE2QUFBQUFVRUZBZ0VBQURvQUFB
QUJRQUluQVFBQUJnRUQKVlFBQUFETUJBQUFEUFFZNEFRQUFBZDFjQUFBQUFYQUhBQUFBQUFBQUJR
Z0FBQUFBQUFBQlZnY2JBUUFBWEFBQUFBSGpDUU1ZY2dBQQpBQUFBQUFoWEdnQUFBZDIrQkFBQUdR
TUFBQW1nQUFBQUNuc0JBQUJ3QUFBQUFlTUFBQXVJQVFBQUFReTdBQUFBQThFQUFBQ1RBUUFBCkFU
ME5tUUVBQUFnRU1oRU9oQUVBQU1ZQUFBQUVNd0lqQUFJQURhSUJBQUFJQlVvUkQ5RUFBQUFDSXdB
QkFBenFBQUFBRVAwQUFBQU0KQWdFQUFCRllBUUFBQndFQUFBRTVDUU9nRFFBQUFBQUFBS3NCQUFB
UjNBRUFBUDBBQUFBQk9Ra0RJSElBQUFBQUFBQU1BZ0FBRU1ZQQpBQUFNUGdFQUFCRkJBZ0FBUXdF
QUFBRTJDUU9ZRFFBQUFBQUFBRlVDQUFBUmJnSUFBTVlBQUFBQk5na0RLSElBQUFBQUFBQi9BZ0FB
CkVoT21BZ0FBdVFJQUFBRW1lZ0VBQUFFSGxRSUFBSG9CQUFBQkpna0RNSElBQUFBQUFBQUFFY1lD
QUFCREFRQUFBU29KQTVBTkFBQUEKQUFBQTJnSUFBQkh6QWdBQXhnQUFBQUVxQ1FNNGNnQUFBQUFB
QUFRREFBQVJHZ01BQUVNQkFBQUJNd2tEaUEwQUFBQUFBQUF1QXdBQQpFVWNEQUFER0FBQUFBVE1K
QTBCeUFBQUFBQUFBV0FNQUFCRnVBd0FBUXdFQUFBRXRDUU9BRFFBQUFBQUFBSVFEQUFBUm53TUFB
TVlBCkFBQUJMUWtEU0hJQUFBQUFBQUN5QXdBQUVjb0RBQUJEQVFBQUFUQUpBM2dOQUFBQUFBQUE1
Z01BQUJFSEJBQUF4Z0FBQUFFd0NRTlEKY2dBQUFBQUFBQ0FFQUFBR1BnUUFBQUU4K0JRQUFBRUFB
QUFBQUFBQUFGRUFBQUFBQUFBQUFWWVV0UmNBQUFFKzNRSUFBQUFBQUFBVgpBZ0VBQUFGQU9nQUFB
QWdBQUFBQUFJQk5RQlhMQUFBQUFVRTZBQUFBQ0FBQUFBQUFBRU5BQUF5N0FBQUFGbXNFQUFBQUY0
UUJBQUMvCkFnQUFBaU1BQVFBTXhBSUFBQVBZQWdBQWR3UUFBQUU5RFhvRUFBQVFCZzBSRDlFQUFB
QUNJd0FCRGx3RUFBRGRBZ0FBQmhBQ0l3QUMKQUF3ZUF3QUFCQjREQUFBWUR3TUFBQmtlQXdBQUdx
VUVBQUFRQWc4T29RUUFBQzhBQUFBQ0VBSWpBQUVPb3dRQUFDOEFBQUFDRVFJagpDQUVicFFRQUFB
SVBBUUVCQVJ3S0F3QUFBUUFicFFRQUFBSVBBUUVCQVJ3S0F3QUFBUjBVQXdBQUFCdWxCQUFBQWc4
QkFRRUJIQW9ECkFBQUJIUmtEQUFBQUFBTWVBd0FBcFFRQUFBSVRES1FEQUFBRXBBTUFBQmlWQXdB
QUdhUURBQUFhdndRQUFCQUNGdzZ5QkFBQUx3QUEKQUFJWUFpTUFBUTY0QkFBQUx3QUFBQUlaQWlN
SUFSdS9CQUFBQWhjQkFRRUJISkFEQUFBQkFCdS9CQUFBQWhjQkFRRUJISkFEQUFBQgpIWm9EQUFB
QUc3OEVBQUFDRndFQkFRRWNrQU1BQUFFZG53TUFBQUFBQTZRREFBQy9CQUFBQWhzTUtnUUFBQVFx
QkFBQUdCc0VBQUFaCktnUUFBQnJHQkFBQUlBSWZEcG9FQUFDRkF3QUFBaUFDSXdBQkRxMEVBQUFM
QkFBQUFpRUNJeEFCRzhZRUFBQUNId0VCQVFFY0ZnUUEKQUFFQUc4WUVBQUFDSHdFQkFRRWNGZ1FB
QUFFZElBUUFBQUFieGdRQUFBSWZBUUVCQVJ3V0JBQUFBUjBsQkFBQUFCdk5CQUFBQWg4QgpBUUVC
SEJZRUFBQUJBQUFES2dRQUFNWUVBQUFISXdPakJBQUExUVFBQUFjY0RPZ0NBQUFDY2dVQUFBVUVB
b0VGQUFBRkNBUEZCQUFBCmlnVUFBQUVNRGF3RkFBQUlDU3dSRDlFQUFBQUNJd0FCQUF6WEJBQUFB
dEVGQUFBSUFRTUxCQUFBT1FZQUFBRVhBbEFHQUFBSEJCcWoKQndBQUJBb3RIa2NHQUFBQkJRQUFD
aTRFQVI4Q0l3QUJIbDBHQUFBQkJRQUFDaThFQVI0Q0l3QUJIbW9HQUFBQkJRQUFDakFFQVIwQwpJ
d0FCSG5jR0FBQUJCUUFBQ2pFRUFSd0NJd0FCSG93R0FBQUJCUUFBQ2pJRUFSc0NJd0FCSHBRR0FB
QUJCUUFBQ2pNRUFSb0NJd0FCCkhxSUdBQUFCQlFBQUNqUUVBUmtDSXdBQkhyMEdBQUFCQlFBQUNq
VUVBUmdDSXdBQkh0b0dBQUFCQlFBQUNqWUVBUmNDSXdBQkh1NEcKQUFBQkJRQUFDamNFQVJZQ0l3
QUJIZ2tIQUFBQkJRQUFDamdFQVJVQ0l3QUJIaDRIQUFBQkJRQUFDamtFQVJRQ0l3QUJIaXdIQUFB
QgpCUUFBQ2pvRUFSTUNJd0FCSGtBSEFBQUJCUUFBQ2pzRUFSSUNJd0FCSGtnSEFBQUJCUUFBQ2p3
RUFSRUNJd0FCSGxBSEFBQUJCUUFBCkNqMEVBUkFDSXdBQkhsZ0hBQUFCQlFBQUNqNEVBZzRDSXdB
QkhtSUhBQUFCQlFBQUNqOEVBd3NDSXdBQkhtMEhBQUFCQlFBQUNrQUUKQVFvQ0l3QUJIbjhIQUFB
QkJRQUFDa0VFQVFrQ0l3QUJIb29IQUFBQkJRQUFDa0lFQVFnQ0l3QUJIcGtIQUFBQkJRQUFDa01F
Q0FBQwpJd0FCQUIvZEFnQUFJTVlIQUFBQkVReWlCZ0FBRGRnSEFBQTRDaWdSRDlFQUFBQUNJd0FC
RGkwR0FBRDlBQUFBQ2lzQ0l3QUNEak1HCkFBRDJCQUFBQ2l3Q0l3QUNEa0FHQUFBSUJRQUFDa1FD
SXdBQ0RyQUhBQUNkQmdBQUNrVUNJd0FDRHJZSEFBQ3BCZ0FBQ2tZQ0l3QUMKQUF5dUJnQUFBNzRF
QUFEb0J3QUFBUjROK3djQUFBZ0xEQkVQMFFBQUFBSWpBQUVBRFFFSUFBQUlDMFVSRHh3SEFBQUNJ
d0FCQUF3dgpCd0FBRFVVSUFBQW9EQkVSRDlFQUFBQUNJd0FCRGg0SUFBRDlBQUFBREJRQ0l3QUNE
aWtJQUFDV0J3QUFEQlVDSXdBQ0RqSUlBQUI2CkFRQUFEQllDSXdBQ0Rqc0lBQUI2QVFBQURCY0NJ
d0FDQUF4SEJ3QUFEUFlFQUFBYW9Rd0FBQWdJNUI1L0NBQUFBUVVBQUFqbEJBSWUKQWlNQUFSNkhD
QUFBQVFVQUFBam1CQUVkQWlNQUFSNlBDQUFBQVFVQUFBam5CQUVjQWlNQUFSNmNDQUFBQVFVQUFB
am9CQUViQWlNQQpBUjZvQ0FBQUFRVUFBQWpwQkFFYUFpTUFBUjY2Q0FBQUFRVUFBQWpxQkFFWkFp
TUFBUjdOQ0FBQUFRVUFBQWpyQkFFWUFpTUFBUjdWCkNBQUFBUVVBQUFqc0JBRVhBaU1BQVI3ZUNB
QUFBUVVBQUFqdEJBRVdBaU1BQVI3eUNBQUFBUVVBQUFqdUJBRVZBaU1BQVI0R0NRQUEKQVFVQUFB
anZCQUVVQWlNQUFSNFhDUUFBQVFVQUFBandCQUVUQWlNQUFSNGhDUUFBQVFVQUFBanhCQUVTQWlN
QUFSNHpDUUFBQVFVQQpBQWp5QkFFUkFpTUFBUjVDQ1FBQUFRVUFBQWp6QkFFUUFpTUFBUjVUQ1FB
QUFRVUFBQWowQkFFUEFpTUFBUjVlQ1FBQUFRVUFBQWoxCkJBRU9BaU1BQVI1dkNRQUFBUVVBQUFq
MkJBRU5BaU1BQVI2QkNRQUFBUVVBQUFqM0JBRU1BaU1BQVI2VUNRQUFBUVVBQUFqNEJBRUwKQWlN
QUFSNmdDUUFBQVFVQUFBajVCQUVLQWlNQUFSNnJDUUFBQVFVQUFBajZCQUVKQWlNQUFSNjVDUUFB
QVFVQUFBajdCQUVJQWlNQQpBUjdQQ1FBQUFRVUFBQWo4QkFFSEFpTUFBUjdpQ1FBQUFRVUFBQWo5
QkFFR0FpTUFBUjd5Q1FBQUFRVUFBQWorQkFFRkFpTUFBUjROCkNnQUFBUVVBQUFqL0JBRUVBaU1B
QVNFbENnQUFBUVVBQUFnQUFRUUVBQUlqQUFFaE1Bb0FBQUVGQUFBSUFRRUVBUjhDSXdRQklVNEsK
QUFBQkJRQUFDQUlCQkFFZUFpTUVBU0ZlQ2dBQUFRVUFBQWdEQVFRQkhRSWpCQUVoYmdvQUFBRUZB
QUFJQkFFRUFSd0NJd1FCSVljSwpBQUFCQlFBQUNBVUJCQUViQWlNRUFTR2JDZ0FBQVFVQUFBZ0dB
UVFCR2dJakJBRWh1QW9BQUFFRkFBQUlCd0VFQVJrQ0l3UUJJY2tLCkFBQUJCUUFBQ0FnQkJBRVlB
aU1FQVNIZUNnQUFBUVVBQUFnSkFRUUJGd0lqQkFFaDdnb0FBQUVGQUFBSUNnRUVBUllDSXdRQklm
MEsKQUFBQkJRQUFDQXNCQkFFVkFpTUVBU0VVQ3dBQUFRVUFBQWdNQVFRQkZBSWpCQUVoTVFzQUFB
RUZBQUFJRFFFRUFSTUNJd1FCSVU0TApBQUFCQlFBQUNBNEJCQUVTQWlNRUFTRmFDd0FBQVFVQUFB
Z1BBUVFCRVFJakJBRWhhd3NBQUFFRkFBQUlFQUVFQVJBQ0l3UUJJWGdMCkFBQUJCUUFBQ0JFQkJB
RVBBaU1FQVNHVEN3QUFBUVVBQUFnU0FRUUNEUUlqQkFFaG13c0FBQUVGQUFBSUV3RUVBZ3NDSXdR
QkliVUwKQUFBQkJRQUFDQlFCQkFFS0FpTUVBU0hjQ3dBQUFRVUFBQWdWQVFRQkNRSWpCQUVoK0Fz
QUFBRUZBQUFJRmdFRUFRZ0NJd1FCSVFjTQpBQUFCQlFBQUNCY0JCQUVIQWlNRUFTRVdEQUFBQVFV
QUFBZ1lBUVFCQmdJakJBRWhLQXdBQUFFRkFBQUlHUUVFQVFVQ0l3UUJJVFlNCkFBQUJCUUFBQ0Jv
QkJBRUVBaU1FQVNGVkRBQUFBUVVBQUFnYkFRUUJBd0lqQkFFaGRnd0FBQUVGQUFBSUhBRUVBUUlD
SXdRQklZQU0KQUFBQkJRQUFDQjBCQkFFQkFpTUVBU0dhREFBQUFRVUFBQWdlQVFRQkFBSWpCQUVB
SU9ZTUFBQUJFUXpjQ3dBQUl2Z01BQUFBQVFqSApFUS9vQWdBQUFpTUFBUTdjQkFBQXJnUUFBQWpL
QWlNQUFnNElCUUFBM1FJQUFBakxBaU1BQWc0VkJRQUEzUUlBQUFqTUFpTUFBZzRmCkJRQUF1UVFB
QUFqTkFpTUFBZzR2QlFBQStCUUFBQWpPQWlNQUFnNDhCUUFBK0JRQUFBalBBaU1BQWc1S0JRQUEz
UUlBQUFqUUFpTUEKQWc1WEJRQUEzUUlBQUFqUkFpTUFBZzVrQlFBQXZnUUFBQWpTQWlNQUFnNTJC
UUFBekFRQUFBalRBaU1BQWc2VUJRQUF2Z1FBQUFqVQpBaU1BQWc2YkJRQUE2Z1FBQUFqVkFpTUFB
ZzYwQlFBQTNRSUFBQWpXQWlNQUFnN0FCUUFBN3dRQUFBalhBaU1BQWc3ZkJRQUE3d1FBCkFBallB
aU1BQWc3cUJRQUE3d1FBQUFqWkFpTUFBZzc1QlFBQTd3UUFBQWphQWlNQUFnNEtCZ0FBZWdFQUFB
amJBaU1BQWc0WEJnQUEKZWdFQUFBamNBaU1BQWc0akJnQUFEQWNBQUFqZEFpTUFBZzdnQndBQUVR
Y0FBQWplQWlNQUFnN3dCd0FBUWdjQUFBamZBaU1BQWc0TwpDQUFBbGdjQUFBamdBaU1BQWc1TENB
QUFtd2NBQUFqaEFpTUFBZzVYQ0FBQS9RQUFBQWppQWlNQUFnNW1DQUFBM1FJQUFBampBaU1BCkFp
TjNDQUFBb0FjQUFBZ2ZBUUlqQUFJanFnd0FBTjBDQUFBSUlBRUNJd0FDSTcwTUFBRDRGQUFBQ0NF
QkFpTUFBaVBVREFBQTR3c0EKQUFnaUFRSWpBQUlBRE9nTEFBQWFtZzBBQUlBTkVRNWFEUUFBTHdB
QUFBMFRBaU1BQVE1ZURRQUFMd0FBQUEwVEFpTUlBUTVpRFFBQQpMd0FBQUEwVEFpTVFBUTVtRFFB
QUx3QUFBQTBUQWlNWUFRNXFEUUFBTHdBQUFBMFVBaU1nQVE1dURRQUFMd0FBQUEwVUFpTW9BUTV5
CkRRQUFMd0FBQUEwVUFpTXdBUTUyRFFBQUx3QUFBQTBVQWlNNEFRNTZEUUFBTHdBQUFBMFZBaU5B
QVE1K0RRQUFMd0FBQUEwVkFpTkkKQVE2Q0RRQUFMd0FBQUEwVkFpTlFBUTZHRFFBQUx3QUFBQTBW
QWlOWUFRNktEUUFBTHdBQUFBMFdBaU5nQVE2T0RRQUFMd0FBQUEwVwpBaU5vQVE2U0RRQUFMd0FB
QUEwV0FpTndBUTZXRFFBQUx3QUFBQTBXQWlONEFRQUR4dzBBQUpvTkFBQURHUTMxRFFBQUNBNE9F
US9SCkFBQUFBaU1BQVFBTXl3NEFBQUtqRGdBQUJBUUxCQThBQUFFTTZnNEFBQVB3RGdBQURBOEFB
QU1JQzlJUEFBQUJCQUFQQUFBTUJnOEEKQUFNTER3QUEyUThBQUFNSkRRb1FBQUFJRHd3UkQ5RUFB
QUFDSXdBQkFBd2JEd0FBQXdFRkFBQkFFQUFBQXg4YVR4QUFBQkFES1E0eApFQUFBRVFjQUFBTXFB
aU1BQVE0NkVBQUFNdzhBQUFNckFpTUVBUTVKRUFBQWVnRUFBQU1zQWlNSUFRQU5YUkFBQUJnREpo
RVAwUUFBCkFBSWpBQUVrSFEwQUFLTUVBQUFEaXd3a0pBMEFBSVVEQUFBRGtBd2tMUTBBQUM4QUFB
QURsUXdrTncwQUFJVURBQUFEbkF3a1F3MEEKQUM4QUFBQURvUXdrVUEwQUFNQU9BQUFEcGd3a3FB
MEFBS01FQUFBRHN3d2tyZzBBQUZ3QUFBQUR1QTRrdFEwQUFGd0FBQUFEdlE0awp3UTBBQUZ3QUFB
QUR4UTRsMFEwQUFQNFJBQUFEMXR3TkFBQUJKT3NOQUFEZURnQUFBK01vSnYwTkFBREFEZ0FBQXdJ
QkRDWVBEZ0FBCi9oRUFBQU1NQVJnbUZBNEFBRndBQUFBREZBRU1KaUlPQUFEZEFnQUFBelVCR0NZ
ckRnQUFvd1FBQUFNK0FRd21PQTRBQVAwQUFBQUQKUndFb0prZ09BQUF2QUFBQUExRUJEQ1pXRGdB
QW93UUFBQU5tQVF3bVpRNEFBUDBBQUFBRGJnRW9KbmdPQUFEOUFBQUFBMjRCS0NhTQpEZ0FBNHc0
QUFBTjBBUXdtcVE0QUFGd0FBQUFEZWdFT0pyQU9BQUJjQUFBQUE1UUJEQ2JMRGdBQVhBQUFBQU9k
QVF3bTN3NEFBQUVGCkFBQUR1QUVNSnZRT0FBRDFEZ0FBQTcwQkRDWVhEd0FBTHdBQUFBUERBUXdt
SkE4QUFDOEFBQUFEeWdFTUpqQVBBQUQxRGdBQUE4OEIKRENZOER3QUE0dzRBQUFQVkFRd21SQThB
QU4wQ0FBQUQ0Z0VZSmxZUEFBRGVEZ0FBQStjQktDWmVEd0FBM2c0QUFBUHNBU2dtY0E4QQpBRndB
QUFBRC9nRU1Kb0FQQUFBdkFBQUFBd1FDRENhVER3QUE5UTRBQUFNTEFnd21udzhBQU9NT0FBQURF
QUlNSnEwUEFBQUxCQUFBCkF4UUNEQ2E2RHdBQUx3QUFBQU1ZQWd3bXh3OEFBQkFQQUFBRElRSU1K
dU1QQUFBQkJRQUFBeWtDRENiMER3QUEzUUlBQUFNd0FoZ20KQWhBQUFDNFBBQUFEbVFJb0poY1FB
QUQ5QUFBQUE4WUNLQ1ljRUFBQTNRSUFBQVBNQWd3bUpSQUFBQzRQQUFBRDJBSW9EaXNRQUFBKwpE
d0FBQXpBQ0l3QURBQXgwRHdBQUlIUVFBQUFCRVF3REVnQUFHZ2tTQUFBRUIwVWVqUkFBQUFFRkFB
QUhYZ1FCSHdJakFBRWVteEFBCkFBRUZBQUFIWHdRQkhnSWpBQUVlcEJBQUFBRUZBQUFIWUFRRkdR
SWpBQUVlckJBQUFBRUZBQUFIWVFRQkdBSWpBQUVleGhBQUFBRUYKQUFBSFlnUUJGd0lqQUFFZTFC
QUFBQUVGQUFBSFl3UUJGZ0lqQUFFZTVSQUFBQUVGQUFBSFpBUUJGUUlqQUFFZSt4QUFBQUVGQUFB
SApaUVFCRkFJakFBRWVCUkVBQUFFRkFBQUhaZ1FCRXdJakFBRWVJUkVBQUFFRkFBQUhad1FCRWdJ
akFBRWVOeEVBQUFFRkFBQUhhQVFCCkVRSWpBQUVlVWhFQUFBRUZBQUFIYVFRQkVBSWpBQUVlV2hF
QUFBRUZBQUFIYWdRQkR3SWpBQUVlYnhFQUFBRUZBQUFIYXdRQkRnSWoKQUFFZWlSRUFBQUVGQUFB
SGJBUUJEUUlqQUFFZW9oRUFBQUVGQUFBSGJRUUNDd0lqQUFFZXFoRUFBQUVGQUFBSGJnUUJDZ0lq
QUFFZQp0eEVBQUFFRkFBQUhid1FCQ1FJakFBRWV3eEVBQUFFRkFBQUhjQVFCQ0FJakFBRWUxaEVB
QUFFRkFBQUhjUVFHQWdJakFBRWU0UkVBCkFBRUZBQUFIY2dRQkFRSWpBQUVlK1JFQUFBRUZBQUFI
Y3dRQkFBSWpBQUVBQXc4U0FBQVNFZ0FBQVhVYWd4SUFBQVFIaWg0akVnQUEKQVFVQUFBZUxCQTRT
QWlNQUFSNDNFZ0FBQVFVQUFBZU1CQTRFQWlNQUFSNVBFZ0FBQVFVQUFBZU5CQUVEQWlNQUFSNWRF
Z0FBQVFVQQpBQWVPQkFFQ0FpTUFBUjVvRWdBQUFRVUFBQWVQQkFFQkFpTUFBUjU0RWdBQUFRVUFB
QWVRQkFFQUFpTUFBUUFOalJJQUFKZ0hmQkVQCjZBSUFBQUlqQUFFbWhnUUFBSzRFQUFBSDBnRU1E
dHdFQUFDdUJBQUFCMzhDSXdBQ0R1TUVBQUN1QkFBQUI0QUNJd0FDRHVzRUFBRGQKQWdBQUI0RUNJ
d0FDRHZZRUFBRGRBZ0FBQjRJQ0l3QUNEZ0FGQUFEQ0RRQUFCNE1DSXdBQ0RnRU5BQURkQWdBQUI0
UUNJd0FDRGdrTgpBQURkQWdBQUI0VUNJd0FDRGhZTkFBRCtFUUFBQjRZQ0l3QUNEdkFIQUFEZEFn
QUFCNGNDSXdBQ0RtVVFBQUFLRWdBQUI0Z0NJd0FDCkRvVVFBQUNrRXdBQUI0a0NJd0FDRGhvU0FB
Q3ZFd0FBQjVFQ0l3QUNBQXdrRkFBQUJwUVNBQUFCUnlnWEFBQUJZQUFBQUFBQUFBREQKQWdBQUFB
QUFBQUZXQ0xvWEFBQUJSNzRFQUFBakFBQUFKNFVBQUFBQUFBQUF1d0lBQUFBQUFBQUpBQUFBQUNq
R0Z3QUFBVXk1R3dBQQpBQ2VOQUFBQUFBQUFBSk1BQUFBQUFBQUFLTVlYQUFBQlV0RWJBQUFBSjlz
QUFBQUFBQUFBZVFFQUFBQUFBQUFvM3hjQUFBRlkwUnNBCkFBQW5lUUVBQUFBQUFBQ3lBUUFBQUFB
QUFDamZGd0FBQVdMUkd3QUFBQ2V5QVFBQUFBQUFBT3NCQUFBQUFBQUFLTjhYQUFBQmFkRWIKQUFB
QUorc0JBQUFBQUFBQUlRSUFBQUFBQUFBbzN4Y0FBQUZ3MFJzQUFBQW5JUUlBQUFBQUFBQlhBZ0FB
QUFBQUFDamZGd0FBQVhmUgpHd0FBQUNkWEFnQUFBQUFBQUxzQ0FBQUFBQUFBS044WEFBQUJmdEVi
QUFBQUFBQWFWQk1BQUFRUUVoN0FFZ0FBQVFVQUFCQVRCQUVmCkFpTUFBUjdJRWdBQUFRVUFBQkFV
QkFFZUFpTUFBUjdaRWdBQUFRVUFBQkFWQkFFZEFpTUFBUjdpRWdBQUFRVUFBQkFXQkFFY0FpTUEK
QVI3eUVnQUFBUVVBQUJBWEJBRWJBaU1BQVI3OUVnQUFBUVVBQUJBWUJBRWFBaU1BQVI0TkV3QUFB
UVVBQUJBWkJBRVpBaU1BQVI0cQpFd0FBQVFVQUFCQWFCQUVZQWlNQUFSNDBFd0FBQVFVQUFCQWJC
QUVYQWlNQUFSNCtFd0FBQVFVQUFCQWNCQUVXQWlNQUFSNUxFd0FBCkFRVUFBQkFkQkJZQUFpTUFB
UUFOWHhNQUFMQVFEUkVQSkJRQUFBSWpBQUVPcXhJQUFNd0VBQUFRRUFJakFBSU9zQklBQU4wQ0FB
QVEKRVFJakFBSU90aElBQUJrV0FBQVFIZ0lqQUFJQURPZ1dBQUFHYVJNQUFBR0tYQUFBQUFId0Fn
QUFBQUFBQUVZREFBQUFBQUFBQVZZSQo1aGNBQUFHS1RSMEFBRmtBQUFBQUtZUVRBQUFCa2dGUUF3
QUFBQUFBQUNNRUFBQUFBQUFBQVZZSTVoY0FBQUdTVFIwQUFJOEFBQUFJCkdCa0FBQUdTWEFBQUFO
Z0FBQUFVS3hrQUFBR1gzZzRBQUNFQkFBQW9RQmtBQUFHWVdSMEFBQUFwb3hNQUFBR2lBVEFFQUFB
QUFBQUEKZUFRQUFBQUFBQUFCVmdqbUZ3QUFBYUpOSFFBQVJBRUFBQUFweGhNQUFBR3FBWUFFQUFB
QUFBQUFhUWNBQUFBQUFBQUJWZ2ptRndBQQpBYXBOSFFBQWVnRUFBQWhPR1FBQUFhcjlBQUFBMXdF
QUFCUllHUUFBQWJMZURnQUFEUUlBQUJSakdRQUFBZERlRGdBQTB3SUFBQ2gyCkdRQUFBYlp4SFFB
QUtJOFpBQUFCdDRrZEFBQW5ZUVVBQUFBQUFBQ2lCZ0FBQUFBQUFCUzRHUUFBQWJtVkhRQUFWZ0lB
QUNkMkJRQUEKQUFBQUFJTUdBQUFBQUFBQUZOc1pBQUFCeWQwQ0FBQ3dBZ0FBS09vWkFBQUJ1aTRQ
QUFBbytCa0FBQUc3L1FBQUFBa3dBQUFBRkFjYQpBQUFCd0xBZEFBQ05BZ0FBS0NrYUFBQUJ2ODRk
QUFBQUFBQW42Z1lBQUFBQUFBQW9Cd0FBQUFBQUFCUklHZ0FBQWRMZEFnQUE5Z0lBCkFBQUFCdmtU
QUFBQjZ0NE9BQUFCRUFnQUFBQUFBQUJwQ0FBQUFBQUFBQUZXRkdJYUFBQUI3TjBDQUFBOEF3QUFB
Q2thRkFBQUFmTUIKY0FnQUFBQUFBQURLQ0FBQUFBQUFBQUZXQ0d3YUFBQUI4LzBBQUFCZkF3QUFG
R0lhQUFBQjlkMENBQUNWQXdBQUFDazlGQUFBQWZvQgowQWdBQUFBQUFBQW5DUUFBQUFBQUFBRldG
R0lhQUFBQi9OMENBQUM0QXdBQUFDcFpGQUFBQVFFQi9RQUFBQUV3Q1FBQUFBQUFBRHNKCkFBQUFB
QUFBQVZZcmdoUUFBTFVVQUFBQk9mMEFBQUJBQ1FBQUFBQUFBT1VKQUFBQUFBQUFBVllVY1JvQUFB
RTUyaDBBQU5zREFBQUsKZXdFQUFOQUFBQUFCT1FBczRoUUFBQmtWQUFBQk9mMEFBQUR3Q1FBQUFB
QUFBUDBKQUFBQUFBQUFBVllyU2hVQUFHQVZBQUFCTnNZQQpBQUFBQ2dBQUFBQUFBS0FLQUFBQUFB
QUFBVllLZXdFQUFBQUJBQUFCTmdBc2NCVUFBSW9WQUFBQk5zWUFBQUNnQ2dBQUFBQUFBSzBLCkFB
QUFBQUFBQVZZcm5oVUFBTFFWQUFBQktzWUFBQUN3Q2dBQUFBQUFBRkFMQUFBQUFBQUFBVllLZXdF
QUFEQUJBQUFCS2dBc3hCVUEKQU40VkFBQUJLc1lBQUFCUUN3QUFBQUFBQUYwTEFBQUFBQUFBQVZZ
cjhoVUFBQWdXQUFBQk04WUFBQUJnQ3dBQUFBQUFBQUFNQUFBQQpBQUFBQVZZS2V3RUFBR0FCQUFB
Qk13QXNHQllBQURJV0FBQUJNOFlBQUFBQURBQUFBQUFBQUEwTUFBQUFBQUFBQVZZclJoWUFBRjRX
CkFBQUJMY1lBQUFBUURBQUFBQUFBQUxBTUFBQUFBQUFBQVZZS2V3RUFBSkFCQUFBQkxRQXNjQllB
QUl3V0FBQUJMY1lBQUFDd0RBQUEKQUFBQUFMME1BQUFBQUFBQUFWWXJvaFlBQU1BV0FBQUJNTVlB
QUFEQURBQUFBQUFBQUdBTkFBQUFBQUFBQVZZS2V3RUFBTUFCQUFBQgpNQUFzMkJZQUFQb1dBQUFC
TU1ZQUFBQmdEUUFBQUFBQUFHME5BQUFBQUFBQUFWWXRCQkZWTGhZWEFBQUFMaU1YQUFBQkxqWVhB
QUFDCkxrY1hBQUFFTGx3WEFBQUlBQzhFRWl3QkxuY1hBQUFCTHBVWEFBQUNBQTNORndBQXNCTUxF
US9vRmdBQUFpTUFBUUFNcGhzQUFBM1cKRndBQXNCUU9FUS9vRmdBQUFpTUFBUUFNdmhzQUFDQUFH
QUFBQVJFTTFoc0FBQXN3R0FBQUFRVGlHd0FBRE9nYkFBQUQ3UnNBQUR3WQpBQUFCRFNCVEdBQUFB
UkVNL1JzQUFEQVFHUUFBb0JYREFoRVAwUUFBQUFJakFBRWo3QmNBQU1VRUFBQVZ5UUlDSXdBREkv
TVhBQURkCkd3QUFGY29DQWlNQUF5TVRHQUFBOGhzQUFCWExBZ0lqQUFNalNSZ0FBQVFjQUFBVnpB
SUNJd0FESTJVWUFBREZCQUFBRmMwQ0FpTUEKQXlOd0dBQUF4UVFBQUJYT0FnSWpBQU1qZXhnQUFN
VUVBQUFWendJQ0l3QURJNFlZQUFERkJBQUFGZEFDQWlNQUF5T1JHQUFBeFFRQQpBQlhSQWdJakFB
TWpuQmdBQU1VRUFBQVYwZ0lDSXdBREk2Y1lBQURGQkFBQUZkTUNBaU1BQXlPeUdBQUF4UVFBQUJY
VUFnSWpBQU1qCnZSZ0FBTVVFQUFBVjFRSUNJd0FESThnWUFBREZCQUFBRmRZQ0FpTUFBeVBVR0FB
QXhRUUFBQlhYQWdJakFBTWo0QmdBQU1VRUFBQVYKMkFJQ0l3QURJK3dZQUFERkJBQUFGZGtDQWlN
QUF5UDRHQUFBeFFRQUFCWGFBZ0lqQUFNakJCa0FBTVVFQUFBVjJ3SUNJd0FEQUF3SgpIQUFBSUVZ
WkFBQUJFUXhTSFFBQURZQVpBQUFJRG5RUkQ4c09BQUFDSXdBQkFBeGVIUUFBRGFRWkFBQUlEMWNS
RHhzUEFBQUNJd0FCCkFBeDJIUUFBQXI0WkFBQUhDQU9PSFFBQTBCa0FBQUVOQ3hJYUFBQUJCS0Fk
QUFBTXBoMEFBREdySFFBQUhSb0FBQUZRQVFJeUdnQUEKQlFJRHZCMEFBRGdhQUFBQmJUSERIUUFB
UHhvQUFBRWJBUXg2QVFBQUFBRVJBU1VPRXdVRERoRUJFQVliRHVGL0RPVi9Dd0FBQWlRQQpBdzQr
Q3dzTEFBQURGZ0JKRXdNT09nczdDd0FBQkNZQVNSTUFBQVUwQUFNT1NSTTZDenNMQUFBR0xnRURE
am9MT3d0SkV6OE1FUUVTCkFVQUtBQUFITkFBRERra1RPZ3M3Q3dJS0FBQUlCUUFERGpvTE93dEpF
d0lHQUFBSkN3RlZCZ0FBQ2gwQU1STlZCbGdMV1FzQUFBc1QKQUFNT1BBd0FBQXdQQUVrVEFBQU5F
d0VERGdzTE9nczdDK1ovQ3dBQURnMEFBdzVKRXpvTE93czRDaklMQUFBUEhBQkpFemdLTWdzQQpB
QkFWQUVrVEFBQVJOQUFERGtrVE9nczdDd0lLaDBBT0FBQVNEd0FBQUJNdUFZZEFEZ01PT2dzN0Mw
a1RJQXNBQUJRMEFBTU9PZ3M3CkMwa1RBZ1lBQUJVMEFBTU9PZ3M3QzBrVEhBb0FBQllUQVFNT0N3
c0FBQmNOQUFNT1NSTTRDaklMQUFBWUVBQkpFd0FBR1VJQVNSTUEKQUJvVEFRTU9Dd3M2Q3pzTEFB
QWJMZ0VERGpvTE93czhERFFNUHd3eUN3QUFIQVVBU1JNMERBQUFIUVVBU1JNQUFCNE5BQU1PU1JN
NgpDenNMQ3dzTkN3d0xPQW95Q3dBQUh6VUFTUk1BQUNBVEFBTU9QQXptZndzQUFDRU5BQU1PU1JN
NkN6c0ZDd3NOQ3d3TE9Bb3lDd0FBCkloTUJBdzRMQlRvTE93dm1md3NBQUNNTkFBTU9TUk02Q3pz
Rk9Bb3lDd0FBSklDRUFRRG9mdzVKRXpvTE93dnJmd3NBQUNXQWhBRUEKNkg4T1NSTTZDenNMNm44
TzYzOExBQUFtZ0lRQkFPaC9Ea2tUT2dzN0JldC9Dd0FBSndzQkVRRVNBUUFBS0RRQUF3NDZDenNM
U1JNQQpBQ2t1QVFNT09nczdDejhNRVFFU0FVQUtBQUFxTGdBRERqb0xPd1ZKRXo4TUVRRVNBVUFL
QUFBckxnR0hRQTRERGpvTE93dEpFeEVCCkVnRkFDZ0FBTEM0QWgwQU9BdzQ2Q3pzTFNSTVJBUklC
UUFvQUFDMEVBUXNMT2dzN0N3QUFMaWdBQXc0Y0RRQUFMd1FCQ3dzNkN6c0YKQUFBd0V3RUREZ3NM
T2dzN0JlWi9Dd0FBTVJZQVNSTUREam9MT3dVQUFBQllCQUFBQWdEV0FnQUFBUUg3RGcwQUFRRUJB
UUFBQUFFQQpBQUV2VlhObGNuTXZZV3hsZUdOb2NtbHpkR1Z1YzJWdUwzZGxZbXRwZEM5SmJuUmxj
bTVoYkM5WFpXSkxhWFJUZVhOMFpXMUpiblJsCmNtWmhZMlVBTDFONWMzUmxiUzlNYVdKeVlYSjVM
MFp5WVcxbGQyOXlhM012UVhCd2JHbGpZWFJwYjI1VFpYSjJhV05sY3k1bWNtRnQKWlhkdmNtc3ZS
bkpoYldWM2IzSnJjeTlEYjNKbFIzSmhjR2hwWTNNdVpuSmhiV1YzYjNKckwwaGxZV1JsY25NQUwx
TjVjM1JsYlM5TQphV0p5WVhKNUwwWnlZVzFsZDI5eWEzTXZVWFZoY25SNlEyOXlaUzVtY21GdFpY
ZHZjbXN2U0dWaFpHVnljd0F2ZFhOeUwybHVZMngxClpHVXZiMkpxWXdBdlUzbHpkR1Z0TDB4cFlu
Smhjbmt2Um5KaGJXVjNiM0pyY3k5R2IzVnVaR0YwYVc5dUxtWnlZVzFsZDI5eWF5OUkKWldGa1pY
SnpBQzlUZVhOMFpXMHZUR2xpY21GeWVTOUdjbUZ0WlhkdmNtdHpMMEZ3Y0V0cGRDNW1jbUZ0Wlhk
dmNtc3ZTR1ZoWkdWeQpjd0F2VTNsemRHVnRMMHhwWW5KaGNua3ZSbkpoYldWM2IzSnJjeTlSVkV0
cGRDNW1jbUZ0WlhkdmNtc3ZTR1ZoWkdWeWN3QUFVVlJMCmFYUkpiblJsY21aaFkyVXViVzBBQVFB
QVEwZEhaVzl0WlhSeWVTNW9BQUlBQUVOQlRHRjVaWEl1YUFBREFBQk9VMDlpYW1WamRDNW8KQUFR
QUFFNVRVM1J5YVc1bkxtZ0FCUUFBVGxOU1pYTndiMjVrWlhJdWFBQUdBQUJPVTFacFpYY3VhQUFH
QUFCT1UxZHBibVJ2ZHk1bwpBQVlBQUU1VFEyOXNiM0l1YUFBR0FBQk9VMGx0WVdkbExtZ0FCZ0FB
VGxOVFpYUXVhQUFGQUFCT1UxVlNUQzVvQUFVQUFFTkJWSEpoCmJuTm1iM0p0TTBRdWFBQURBQUJP
VTBGeWNtRjVMbWdBQlFBQVRsTkVhV04wYVc5dVlYSjVMbWdBQlFBQVRsTkRiMjUwY205c0xtZ0EK
QmdBQVRsTkRaV3hzTG1nQUJnQUFWMlZpUzJsMFUzbHpkR1Z0U1c1MFpYSm1ZV05sTG1nQUFRQUFU
bE5UYkdsa1pYSXVhQUFHQUFCTwpVMEoxZEhSdmJpNW9BQVlBQUZGVVRXOTJhV1V1YUFBSEFBQUFB
QWtDQUFBQUFBQUFBQUFEUEFFS1N3STRGc29JYWdvSUx3Z2ppQU42ClpnSW5Fd01MQ1BJQ0xSTUNL
Qk1DS0JRSStBSXRFOEFDTFJQQUFpMFRsZ0l0RTVZQ0xSTUNLQlByQWpVV0NwOElkZ0lzRXdna0N2
TUMKU0JVSVp3SXhGbHNJT2dJbkdBcVJ1K1hsQ0w0S0NHY0lzZ2haQ0wwQ1NCTUNNeFFJVVFONkNK
QUlnd0lqRkRwMkNFdzRlQWk3Q0ZxRQpDT2tEY2p3RERuUUlKQU5zQ0pBREZ3aXNBMllJSUFNYWRB
aFpDSU1DS3hZSU1RZzlBalFXQ2dockx3UENmcm9EdlFFQ0tRRUNJeGNECnZuNVlBOFVCQWlvQkNr
c0lud2lmQ0hmWkNwOElnd2lmQ0dldkNrc0lud2lmQ0ZuMUNrc0R0bjY2Q2dOdFNnTVRBaWtCQTIw
Q09nRUQKRXdqV0Fpb1NDa3EzQ2dOd1NnTVFBaWNCQTNBQ053RURFQWpXQ05ZS1NnTjB1Z3BHQWlj
V0FqY09DTm9JMWdwS0F3bTZDZ056U2dNTgpBaWNCQTNNQ053RUREUWpXQ05ZS1NnTjZ1Z29EZVVv
Q0p4a0RlUUkzQVFqZENOWUtTcjBLQTNaS0F3b0NKd0VEZGdJM0FRTUtDTllJCjFncEtBZ2tBQVFF
MEFBQUFBQUFBQUUwQUFBQUFBQUFBQVFCVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUdBQUFBQUFBQUFB
YkFBQUFBQUEKQUFBQkFGVnpBQUFBQUFBQUFJVUFBQUFBQUFBQUFRQlZBQUFBQUFBQUFBQUFBQUFB
QUFBQUFQQUNBQUFBQUFBQStnSUFBQUFBQUFBQgpBRlg2QWdBQUFBQUFBRHdEQUFBQUFBQUFBUUJU
QUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFEQUFBQUFBQUFZQU1BQUFBQUFBQUJBRlZnCkF3QUFBQUFB
QVA0REFBQUFBQUFBQVFCVENRUUFBQUFBQUFBUUJBQUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFB
QUFBQUFCUUF3QUEKQUFBQUFGMERBQUFBQUFBQUFRQlVYUU1BQUFBQUFBRHdBd0FBQUFBQUFBRUFY
dkFEQUFBQUFBQUE5UU1BQUFBQUFBQUJBRjRBQUFBQQpBQUFBQUFBQUFBQUFBQUFBdndNQUFBQUFB
QURSQXdBQUFBQUFBQUVBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3QkFBQUFBQUFBRGtFCkFBQUFB
QUFBQVFCVk9RUUFBQUFBQUFCeUJBQUFBQUFBQUFFQVV3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUJB
QUFBQUFBQUpjRUFBQUEKQUFBQUFRQlZsd1FBQUFBQUFBRG1CQUFBQUFBQUFBRUFYK1lFQUFBQUFB
QUE2QVlBQUFBQUFBQUNBSFpBNkFZQUFBQUFBQUFvQndBQQpBQUFBQUFFQVhnQUFBQUFBQUFBQUFB
QUFBQUFBQUFDQUJBQUFBQUFBQUpRRUFBQUFBQUFBQVFCVWxBUUFBQUFBQUFEaUJBQUFBQUFBCkFB
RUFYZ0FBQUFBQUFBQUFBQUFBQUFBQUFBREpCQUFBQUFBQUFKWUZBQUFBQUFBQUFRQlRsZ1VBQUFB
QUFBQ0dCZ0FBQUFBQUFBRUEKWDRZR0FBQUFBQUFBb2dZQUFBQUFBQUFCQUZNQUFBQUFBQUFBQUFB
QUFBQUFBQUFBWVFVQUFBQUFBQUNaQmdBQUFBQUFBQUlBRUFDWgpCZ0FBQUFBQUFLSUdBQUFBQUFB
QUFRQmVBQUFBQUFBQUFBQUFBQUFBQUFBQUFDTUdBQUFBQUFBQVNBWUFBQUFBQUFBQkFGTUFBQUFB
CkFBQUFBQUFBQUFBQUFBQUFad1lBQUFBQUFBQ0RCZ0FBQUFBQUFBRUFVQUFBQUFBQUFBQUFBQUFB
QUFBQUFBRFJCZ0FBQUFBQUFCVUgKQUFBQUFBQUFBUUJUQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFI
QUFBQUFBQUFLQWNBQUFBQUFBQUJBRkFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBY0FjQUFBQUFBQUNB
QndBQUFBQUFBQUVBVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUF2Q0FBQUFBQUFBRmtJQUFBQUFBQUFB
UUJUCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUhBSUFBQUFBQUFBZWdnQUFBQUFBQUFCQUZWNkNBQUFB
QUFBQUw0SUFBQUFBQUFBQVFCZUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFKTUlBQUFBQUFBQXZBZ0FB
QUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFBQTd3Z0FBQUFBQUFBWgpDUUFBQUFBQUFBRUFV
d0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0JDUUFBQUFBQUFKQUpBQUFBQUFBQUFRQlFBQUFBQUFBQUFB
QUFBQUFBCkFBQUFBTE1CQUFBQ0FBQUFBQURnSFFBQTF3UUFBRTVUUTI5c2IzSUFEeElBQUY5ZlZr
WnNZV2R6QUtBSEFBQmZYM2RHYkdGbmN3QmUKSFFBQVRsTk5kWFJoWW14bFFYSnlZWGtBR1JZQUFG
OWZZMjl1Um14aFozTUFIQWNBQUU1VFUyVjBBQWdGQUFCZlgybHRZV2RsUm14aApaM01BcnhNQUFG
OWZWa1pzWVdkek1nREVBZ0FBYjJKcVkxOXZZbXBsWTNRQUhnTUFBRU5IVUc5cGJuUUFLZ1FBQUVO
SFVtVmpkQURvCkN3QUFUbE5YYVc1a2IzY0FKQlFBQUU1VFZtbGxkd0RMRGdBQVRsTkJjbkpoZVFC
MER3QUFRMEZNWVhsbGNnRG9GZ0FBVGxORGIyNTAKY205c0FLNEdBQUJPVTBsdFlXZGxBS1FEQUFC
RFIxTnBlbVVBUGc4QUFGOURRVXhoZVdWeVNYWmhjbk1BcGhzQUFFNVRVMnhwWkdWeQpBQWtjQUFC
UlZFMXZkbWxsQUhZZEFBQk9VMDExZEdGaWJHVkVhV04wYVc5dVlYSjVBT2dDQUFCT1UxSmxjM0J2
Ym1SbGNnQkhCd0FBClRsTlZVa3dBR3c4QUFFNVRSR2xqZEdsdmJtRnllUURSQUFBQVRsTlBZbXBs
WTNRQTZnQUFBRTVUVTNSeWFXNW5BQzhIQUFCT1UwMTEKZEdGaWJHVlRaWFFBeHcwQUFFTkJWSEpo
Ym5ObWIzSnRNMFFBdmhzQUFFNVRRblYwZEc5dUFBQUFBQUJCY0hCc1pTQk1URlpOSUhabApjbk5w
YjI0Z05TNHdJQ2hqYkdGdVp5MDFNREF1TUM0Mk1Da2dLR0poYzJWa0lHOXVJRXhNVmswZ015NHpj
M1p1S1FBdlZYTmxjbk12CllXeGxlR05vY21semRHVnVjMlZ1TDNkbFltdHBkQzlKYm5SbGNtNWhi
QzlYWldKTGFYUlRlWE4wWlcxSmJuUmxjbVpoWTJVdlVWUkwKYVhSSmJuUmxjbVpoWTJVdWJXMEFM
MVZ6WlhKekwyRnNaWGhqYUhKcGMzUmxibk5sYmk5M1pXSnJhWFF2U1c1MFpYSnVZV3d2VjJWaQpT
MmwwVTNsemRHVnRTVzUwWlhKbVlXTmxBSEYxYVdOclZHbHRaVkJzWVhsbGNraFZSRU52Ym5SbGJu
UkNiM0prWlhKUWIzTnBkR2x2CmJnQmtiM1ZpYkdVQVEwZEdiRzloZEFCeGRXbGphMVJwYldWUWJH
RjVaWEpJVlVSSVpXbG5hSFFBYVhOQmRtRnBiR0ZpYkdVQWMybG4KYm1Wa0lHTm9ZWElBUWs5UFRB
QlhTMDFsWkdsaFEyOXVkSEp2Ykd4bGNsUm9aVzFsUVhaaGFXeGhZbXhsQUdkbGRGRlVUVzkyYVdW
TQpiMkZrWldSU1lXNW5aWE5FYVdSRGFHRnVaMlZPYjNScFptbGpZWFJwYjI0QWFYTmhBRzlpYW1O
ZlkyeGhjM01BUTJ4aGMzTUFUbE5QClltcGxZM1FBVGxOVGRISnBibWNBWDFwTU5ETm5aWFJSVkUx
dmRtbGxURzloWkdWa1VtRnVaMlZ6Ukdsa1EyaGhibWRsVG05MGFXWnAKWTJGMGFXOXVBSEJ2YVc1
MFpYSlJWRTF2ZG1sbFRHOWhaR1ZrVW1GdVoyVnpSR2xrUTJoaGJtZGxUbTkwYVdacFkyRjBhVzl1
QUY5YQpURFEzY0c5cGJuUmxjbEZVVFc5MmFXVk1iMkZrWldSU1lXNW5aWE5FYVdSRGFHRnVaMlZP
YjNScFptbGpZWFJwYjI0QVoyVjBVVlJWCmRHbHNhWFJwWlhORGJHRnpjd0JmV2t3eE9XZGxkRkZV
VlhScGJHbDBhV1Z6UTJ4aGMzTUFZMnhoYzNOUlZGVjBhV3hwZEdsbGN3QmYKV2t3eE5tTnNZWE56
VVZSVmRHbHNhWFJwWlhNQVpuSmhiV1YzYjNKclRHbGljbUZ5ZVFCZldrd3hNbEZVUzJsMFRHbGlj
bUZ5ZVhZQQpVVlJMYVhSTWFXSnlZWEo1QUdkbGRGRlVTRlZFUW5WMGRHOXVRMnhoYzNNQVgxcE1N
VGxuWlhSUlZFaFZSRUoxZEhSdmJrTnNZWE56CkFHTnNZWE56VVZSSVZVUkNkWFIwYjI0QVgxcE1N
VFpqYkdGemMxRlVTRlZFUW5WMGRHOXVBR2RsZEZGVVNGVkVVMnhwWkdWeVEyeGgKYzNNQVgxcE1N
VGxuWlhSUlZFaFZSRk5zYVdSbGNrTnNZWE56QUdOc1lYTnpVVlJJVlVSVGJHbGtaWElBWDFwTU1U
WmpiR0Z6YzFGVQpTRlZFVTJ4cFpHVnlBR2RsZEZGVVNGVkVWR2x0Wld4cGJtVkRiR0Z6Y3dCZldr
d3lNV2RsZEZGVVNGVkVWR2x0Wld4cGJtVkRiR0Z6CmN3QmpiR0Z6YzFGVVNGVkVWR2x0Wld4cGJt
VUFYMXBNTVRoamJHRnpjMUZVU0ZWRVZHbHRaV3hwYm1VQVoyVjBVVlJJVlVSQ1lXTnIKWjNKdmRX
NWtWbWxsZDBOc1lYTnpBRjlhVERJM1oyVjBVVlJJVlVSQ1lXTnJaM0p2ZFc1a1ZtbGxkME5zWVhO
ekFHTnNZWE56VVZSSQpWVVJDWVdOclozSnZkVzVrVm1sbGR3QmZXa3d5TkdOc1lYTnpVVlJJVlVS
Q1lXTnJaM0p2ZFc1a1ZtbGxkd0JYUzBOeVpXRjBaVTFsClpHbGhWVWxDWVdOclozSnZkVzVrVm1s
bGR3QmZibVY0ZEZKbGMzQnZibVJsY2dCdlltcGpYMjlpYW1WamRBQnBaQUJPVTFKbGMzQnYKYm1S
bGNnQndjbVZ3WVhKbFpFTnZiblJsYm5SU1pXTjBBRzl5YVdkcGJnQjRBSGtBUTBkUWIybHVkQUJ6
YVhwbEFIZHBaSFJvQUdobAphV2RvZEFCRFIxTnBlbVVBUTBkU1pXTjBBSDVEUjFKbFkzUUFUbE5T
WldOMEFGOW1jbUZ0WlFCZlltOTFibVJ6QUY5emRYQmxjblpwClpYY0FYM04xWW5acFpYZHpBRjkz
YVc1a2IzY0FYMk52Ym5SbGJuUldhV1YzQUY5a1pXeGxaMkYwWlFCZlptbHljM1JTWlhOd2IyNWsK
WlhJQVgyeGhjM1JNWldaMFNHbDBBRjlzWVhOMFVtbG5hSFJJYVhRQVgyTnZkVzUwWlhKd1lYSjBB
RjltYVdWc1pFVmthWFJ2Y2dCZgpkMmx1UlhabGJuUk5ZWE5yQUdsdWRBQmZkMmx1Wkc5M1RuVnRB
R3h2Ym1jZ2FXNTBBRTVUU1c1MFpXZGxjZ0JmYkdWMlpXd0FYMkpoClkydG5jbTkxYm1SRGIyeHZj
Z0JPVTBOdmJHOXlBRjlpYjNKa1pYSldhV1YzQUY5d2IzTjBhVzVuUkdsellXSnNaV1FBZFc1emFX
ZHUKWldRZ1kyaGhjZ0JmYzNSNWJHVk5ZWE5yQUY5bWJIVnphRVJwYzJGaWJHVmtBRjl5WlhObGNu
WmxaRmRwYm1SdmR6RUFYMk4xY25OdgpjbEpsWTNSekFGOTBjbVZqZEZSaFlteGxBRjl0YVc1cFNX
TnZiZ0JmYm1GdFpRQmZjMmw2WlFCT1UxTnBlbVVBWDJac1lXZHpBSE5qCllXeGhZbXhsQUhWdWMy
bG5ibVZrSUdsdWRBQmtZWFJoVW1WMFlXbHVaV1FBZFc1cGNYVmxWMmx1Wkc5M0FITnBlbVZYWVhO
RmVIQnMKYVdOcGRHeDVVMlYwQUdKMWFXeDBTVzRBYm1WbFpITlViMFY0Y0dGdVpBQjFjMlZGVUZO
UGJsSmxjMjlzZFhScGIyNU5hWE50WVhSagphQUJ0WVhSamFHVnpUMjVzZVU5dVFtVnpkRVpwZEhS
cGJtZEJlR2x6QUdOdmJHOXlUV0YwWTJoUWNtVm1aWEp5WldRQWJYVnNkR2x3CmJHVlNaWE52YkhW
MGFXOXVUV0YwWTJocGJtY0FabTlqZFhObFpGZG9hV3hsVUhKcGJuUnBibWNBWVhKamFHbDJaVUo1
VG1GdFpRQjEKYm1KdmRXNWtaV1JEWVdOb1pVUmxjSFJvQUdac2FYQndaV1FBWVd4cFlYTmxaQUJr
YVhKMGFXVmtBR05oWTJobFRXOWtaUUJ6WVcxdwpiR1ZOYjJSbEFISmxjMDFoZEdOb1VISmxabVZ5
Y21Wa0FHbHpWR1Z0Y0d4aGRHVUFabUZwYkdWa1ZHOUZlSEJoYm1RQWNtVnpaWEoyClpXUXhBRjlm
YVcxaFoyVkdiR0ZuY3dCZmNtVndjd0JmYVcxaFoyVkJkWGhwYkdsaGNua0FYMDVUU1cxaFoyVkJk
WGhwYkdsaGNua0EKVGxOSmJXRm5aUUJmWW1GdFltOXZBR2x1ZERNeVgzUUFYMlJ5WVdkVWVYQmxj
d0JPVTFObGRBQk9VMDExZEdGaWJHVlRaWFFBWDNKbApjSEpsYzJWdWRHVmtWVkpNQUY5MWNteFRk
SEpwYm1jQVgySmhjMlZWVWt3QVgyTnNhV1Z1ZEhNQVgzSmxjMlZ5ZG1Wa0FFNVRWVkpNCkFGOXph
WHBsVEdsdGFYUnpBRjltY21GdFpWTmhkbVZPWVcxbEFGOXlaWE5sY25abFpGZHBibVJ2ZHpJQVgz
ZEdiR0ZuY3dCaVlXTnIKYVc1bkFIWnBjMmxpYkdVQWFYTk5ZV2x1VjJsdVpHOTNBR2x6UzJWNVYy
bHVaRzkzQUdocFpHVnpUMjVFWldGamRHbDJZWFJsQUdSdgpiblJHY21WbFYyaGxia05zYjNObFpB
QnZibVZUYUc5MEFHUmxabVZ5Y21Wa0FHTjFjbk52Y2xKbFkzUnpSR2x6WVdKc1pXUUFhR0YyClpV
WnlaV1ZEZFhKemIzSlNaV04wY3dCMllXeHBaRU4xY25OdmNsSmxZM1J6QUdSdlkwVmthWFJsWkFC
a2VXNWhiV2xqUkdWd2RHaE0KYVcxcGRBQjNiM0pyYzFkb1pXNU5iMlJoYkFCc2FXMXBkR1ZrUW1W
amIyMWxTMlY1QUc1bFpXUnpSbXgxYzJnQWRtbGxkM05PWldWawpSR2x6Y0d4aGVRQnBaMjV2Y21W
a1JtbHljM1JOYjNWelpRQnlaWEJ2YzNSbFpFWnBjbk4wVFc5MWMyVUFkMmx1Wkc5M1JIbHBibWNB
CmRHVnRjRWhwWkdSbGJnQm1iRzloZEdsdVoxQmhibVZzQUhkaGJuUnpWRzlDWlU5dVRXRnBibE5q
Y21WbGJnQnZjSFJwYldsNlpXUkUKY21GM2FXNW5UMnNBYjNCMGFXMXBlbVZFY21GM2FXNW5BSFJw
ZEd4bFNYTlNaWEJ5WlhObGJuUmxaRVpwYkdWdVlXMWxBR1Y0WTJ4MQpaR1ZrUm5KdmJWZHBibVJ2
ZDNOTlpXNTFBR1JsY0hSb1RHbHRhWFFBWkdWc1pXZGhkR1ZTWlhSMWNtNXpWbUZzYVdSU1pYRjFa
WE4wCmIzSUFiRzF2ZFhObGRYQlFaVzVrYVc1bkFISnRiM1Z6WlhWd1VHVnVaR2x1WndCM1lXNTBj
MVJ2UkdWemRISnZlVkpsWVd4WGFXNWsKYjNjQWQyRnVkSE5VYjFKbFowUnlZV2RVZVhCbGN3Qnpa
VzUwU1c1MllXeHBaR0YwWlVOMWNuTnZjbEpsWTNSelRYTm5BR0YyYjJsawpjMEZqZEdsMllYUnBi
MjRBWm5KaGJXVlRZWFpsWkZWemFXNW5WR2wwYkdVQVpHbGtVbVZuUkhKaFoxUjVjR1Z6QUdSbGJH
RjVaV1JQCmJtVlRhRzkwQUhCdmMzUmxaRTVsWldSelJHbHpjR3hoZVU1dmRHVUFjRzl6ZEdWa1NX
NTJZV3hwWkVOMWNuTnZjbEpsWTNSelRtOTAKWlFCcGJtbDBhV0ZzUm1seWMzUlNaWE53YjI1a1pY
SlVaVzF3VTJWMEFHRjFkRzlrYVhOd2JHRjVBSFJ2YzNObFpFWnBjbk4wUlhabApiblFBYVhOSmJX
Rm5aVU5oWTJobEFHRjFkRzlzWVhsdmRYUkZibWRoWjJWa1UyOXRaWGRvWlhKbEFGOTFiblZ6WldR
QWEyVjVWbWxsCmQxTmxiR1ZqZEdsdmJrUnBjbVZqZEdsdmJnQmtaV1poZFd4MFFuVjBkRzl1UTJW
c2JFdEZWR1Z0Y0c5eVlYSnBiSGxFYVhOaFlteGwKWkFCa1pXWmhkV3gwUW5WMGRHOXVRMlZzYkV0
RlJHbHpZV0pzWldRQWJXVnVkVWhoYzBKbFpXNVRaWFFBZDJGdWRITlViMEpsVFc5awpZV3dBYzJo
dmQybHVaMDF2WkdGc1JuSmhiV1VBYVhOVVpYSnRhVzVoZEdsdVp3QjNhVzR6TWsxdmRYTmxRV04w
YVhaaGRHbHZia2x1ClVISnZaM0psYzNNQWJXRnJhVzVuUm1seWMzUlNaWE53YjI1a1pYSkdiM0pO
YjNWelpVUnZkMjRBYm1WbFpITmFiMjl0QUhObGJuUlgKYVc1a2IzZE9aV1ZrYzBScGMzQnNZWGxO
YzJjQWRXNTFjMlZrQUY5ZmQwWnNZV2R6QUY5a1pXWmhkV3gwUW5WMGRHOXVRMlZzYkFCZgphVzVw
ZEdsaGJFWnBjbk4wVW1WemNHOXVaR1Z5QUY5aGRYaHBiR2xoY25sVGRHOXlZV2RsQUU1VFYybHVa
RzkzUVhWNGFXeHBZWEo1CkFFNVRWMmx1Wkc5M0FGOW5VM1JoZEdVQVgyWnlZVzFsVFdGMGNtbDRB
RjlzWVhsbGNnQmliM1Z1WkhNQWNHOXphWFJwYjI0QWVsQnYKYzJsMGFXOXVBR0Z1WTJodmNsQnZh
VzUwQUdGdVkyaHZjbEJ2YVc1MFdnQjBjbUZ1YzJadmNtMEFiVEV4QUcweE1nQnRNVE1BYlRFMApB
RzB5TVFCdE1qSUFiVEl6QUcweU5BQnRNekVBYlRNeUFHMHpNd0J0TXpRQWJUUXhBRzAwTWdCdE5E
TUFiVFEwQUVOQlZISmhibk5tCmIzSnRNMFFBWm5KaGJXVUFhR2xrWkdWdUFHUnZkV0pzWlZOcFpH
VmtBR2RsYjIxbGRISjVSbXhwY0hCbFpBQnpkWEJsY214aGVXVnkKQUhObGRGTjFjR1Z5YkdGNVpY
STZBSE4xWW14aGVXVnljd0JPVTBGeWNtRjVBSE4xWW14aGVXVnlWSEpoYm5ObWIzSnRBRzFoYzJz
QQpiV0Z6YTNOVWIwSnZkVzVrY3dCamIyNTBaVzUwY3dCamIyNTBaVzUwYzFKbFkzUUFZMjl1ZEdW
dWRITkhjbUYyYVhSNUFHTnZiblJsCmJuUnpVMk5oYkdVQVkyOXVkR1Z1ZEhORFpXNTBaWElBYlds
dWFXWnBZMkYwYVc5dVJtbHNkR1Z5QUcxaFoyNXBabWxqWVhScGIyNUcKYVd4MFpYSUFiV2x1YVda
cFkyRjBhVzl1Um1sc2RHVnlRbWxoY3dCbWJHOWhkQUJ2Y0dGeGRXVUFibVZsWkhORWFYTndiR0Y1
VDI1QwpiM1Z1WkhORGFHRnVaMlVBWkhKaGQzTkJjM2x1WTJoeWIyNXZkWE5zZVFCbFpHZGxRVzUw
YVdGc2FXRnphVzVuVFdGemF3QmlZV05yClozSnZkVzVrUTI5c2IzSUFRMGREYjJ4dmNnQkRSME52
Ykc5eVVtVm1BR052Y201bGNsSmhaR2wxY3dCaWIzSmtaWEpYYVdSMGFBQmkKYjNKa1pYSkRiMnh2
Y2dCdmNHRmphWFI1QUdOdmJYQnZjMmwwYVc1blJtbHNkR1Z5QUdacGJIUmxjbk1BWW1GamEyZHli
M1Z1WkVacApiSFJsY25NQWMyaHZkV3hrVW1GemRHVnlhWHBsQUhKaGMzUmxjbWw2WVhScGIyNVRZ
MkZzWlFCemFHRmtiM2REYjJ4dmNnQnphR0ZrCmIzZFBjR0ZqYVhSNUFITm9ZV1J2ZDA5bVpuTmxk
QUJ6YUdGa2IzZFNZV1JwZFhNQWMyaGhaRzkzVUdGMGFBQkRSMUJoZEdnQVEwZFEKWVhSb1VtVm1B
R0YxZEc5eVpYTnBlbWx1WjAxaGMyc0FiR0Y1YjNWMFRXRnVZV2RsY2dCaFkzUnBiMjV6QUU1VFJH
bGpkR2x2Ym1GeQplUUJ1WVcxbEFHUmxiR1ZuWVhSbEFITjBlV3hsQUY5aGRIUnlBSEpsWm1OdmRX
NTBBRzFoWjJsakFIVnBiblF6TWw5MEFHeGhlV1Z5CkFGOURRVXhoZVdWeVNYWmhjbk1BUTBGTVlY
bGxjZ0JmZG1sbGQwRjFlR2xzYVdGeWVRQmZUbE5XYVdWM1FYVjRhV3hwWVhKNUFGOTIKUm14aFoz
TUFZV0p2ZFhSVWIxSmxjMmw2WlFCcGMwOXdZWEYxWlFCMWJuVnpaV1F6QUdoaGMwNXZkRTFsYzNO
bFpGZHBkR2hKYzBacwphWEJ3WldRQWFXZHViM0psU0dsMFZHVnpkQUJ6Y0dWamFXRnNRWEpqYUds
MmFXNW5BRzVsWldSelJHbHpjR3hoZVVadmNrSnZkVzVrCmN3QnBjMFpzYVhCd1pXUUFjbVZ0YjNa
cGJtZFhhWFJvYjNWMFNXNTJZV3hwWkdGMGFXOXVBRzVsWldSelFtOTFibVJ6UTJoaGJtZGwKVG05
MFpRQmliM1Z1WkhORGFHRnVaMlZPYjNSbGMxTjFjM0JsYm1SbFpBQjFiblZ6WldReUFHNWxaV1J6
Um5KaGJXVkRhR0Z1WjJWTwpiM1JsQUdaeVlXMWxRMmhoYm1kbFRtOTBaWE5UZFhOd1pXNWtaV1FB
WTJGdVJISmhkMU4xWW5acFpYZHpTVzUwYjB4aGVXVnlBSFZ1CmRYTmxaREVBYm1WbFpITkVhWE53
YkdGNUFIZGhiblJ6UjFOMFlYUmxBR0YxZEc5eVpYTnBlbVZUZFdKMmFXVjNjd0JoZFhSdmMybDYK
YVc1bkFISnZkR0YwWldSUGNsTmpZV3hsWkVaeWIyMUNZWE5sQUhKdmRHRjBaV1JHY205dFFtRnpa
UUJmWDFaR2JHRm5jd0JmVmtacwpZV2R6QUY5MlJteGhaM015QUc1bGVIUkxaWGxXYVdWM1VtVm1R
MjkxYm5RQWNISmxkbWx2ZFhOTFpYbFdhV1YzVW1WbVEyOTFiblFBCmFYTldhWE5wWW14bFVtVmpk
QUJvWVhOVWIyOXNWR2x3QUdOaFkyaGxaRWx6Um14cGNIQmxaQUJ0Wlc1MVYyRnpVMlYwQUY5ZlZr
WnMKWVdkek1nQk9VMVpwWlhjQVYwdERjbVZoZEdWTlpXUnBZVlZKUTI5dWRISnZiQUJmZEdGbkFG
OWpaV3hzQUY5amIyNUdiR0ZuY3dCbApibUZpYkdWa0FHbG5ibTl5WlUxMWJIUnBRMnhwWTJzQVky
RnNZMU5wZW1VQVpISmhkMmx1WjBGdVkyVnpkRzl5QUdsaVVtVnpaWEoyClpXUUFkWEJrWVhSbFEy
VnNiRVp2WTNWekFHRnNiRzkzYzB4dloybGpZV3hNWVhsdmRYUkVhWEpsWTNScGIyNEFZWE50Ykhk
cFpIUm8KQUdoemJXeDNhV1IwYUFCa2IyNTBWbUZzYVdSaGRHVUFjbVZ6WlhKMlpXUUFYMTlqYjI1
R2JHRm5jd0JPVTBOdmJuUnliMndBVjB0UgpWRTF2ZG1sbFNHRnpRMnh2YzJWa1EyRndkR2x2Ym5N
QVYwdFJWRTF2ZG1sbFUyVjBVMmh2ZDBOc2IzTmxaRU5oY0hScGIyNXpBRmRMClVWUk5iM1pwWlZO
bGJHVmpkRkJ5WldabGNuSmxaRUZzZEdWeWJtRjBaWE1BVjB0UlZFMXZkbWxsVTJWc1pXTjBVSEps
Wm1WeWNtVmsKUVd4MFpYSnVZWFJsVkhKaFkydEdiM0pOWldScFlWUjVjR1VBVjB0UlZFZGxkRk5w
ZEdWelNXNU5aV1JwWVVSdmQyNXNiMkZrUTJGagphR1VBVjB0UlZFTnNaV0Z5VFdWa2FXRkViM2R1
Ykc5aFpFTmhZMmhsUm05eVUybDBaUUJYUzFGVVEyeGxZWEpOWldScFlVUnZkMjVzCmIyRmtRMkZq
YUdVQVYwdFJWRTF2ZG1sbFRXRjRWR2x0WlV4dllXUmxaRU5vWVc1blpVNXZkR2xtYVdOaGRHbHZi
Z0JmV2t3ME5HbHUKYVhSUlZFMXZkbWxsVEc5aFpHVmtVbUZ1WjJWelJHbGtRMmhoYm1kbFRtOTBh
V1pwWTJGMGFXOXVkZ0JwYm1sMFVWUk5iM1pwWlV4dgpZV1JsWkZKaGJtZGxjMFJwWkVOb1lXNW5a
VTV2ZEdsbWFXTmhkR2x2YmdCZldrdzBPRkZVVFc5MmFXVk1iMkZrWldSU1lXNW5aWE5FCmFXUkRh
R0Z1WjJWT2IzUnBabWxqWVhScGIyNUdkVzVqZEdsdmJuWUFVVlJOYjNacFpVeHZZV1JsWkZKaGJt
ZGxjMFJwWkVOb1lXNW4KWlU1dmRHbG1hV05oZEdsdmJrWjFibU4wYVc5dUFGOWFUREUxYVc1cGRG
RlVWWFJwYkdsMGFXVnpkZ0JwYm1sMFVWUlZkR2xzYVhScApaWE1BWDFwTU1UbFJWRlYwYVd4cGRH
bGxjMFoxYm1OMGFXOXVkZ0JSVkZWMGFXeHBkR2xsYzBaMWJtTjBhVzl1QUY5YVRERTFhVzVwCmRG
RlVTRlZFUW5WMGRHOXVkZ0JwYm1sMFVWUklWVVJDZFhSMGIyNEFYMXBNTVRsUlZFaFZSRUoxZEhS
dmJrWjFibU4wYVc5dWRnQlIKVkVoVlJFSjFkSFJ2YmtaMWJtTjBhVzl1QUY5YVRERTFhVzVwZEZG
VVNGVkVVMnhwWkdWeWRnQnBibWwwVVZSSVZVUlRiR2xrWlhJQQpYMXBNTVRsUlZFaFZSRk5zYVdS
bGNrWjFibU4wYVc5dWRnQlJWRWhWUkZOc2FXUmxja1oxYm1OMGFXOXVBRjlhVERFM2FXNXBkRkZV
ClNGVkVWR2x0Wld4cGJtVjJBR2x1YVhSUlZFaFZSRlJwYldWc2FXNWxBRjlhVERJeFVWUklWVVJV
YVcxbGJHbHVaVVoxYm1OMGFXOXUKZGdCUlZFaFZSRlJwYldWc2FXNWxSblZ1WTNScGIyNEFYMXBN
TWpOcGJtbDBVVlJJVlVSQ1lXTnJaM0p2ZFc1a1ZtbGxkM1lBYVc1cApkRkZVU0ZWRVFtRmphMmR5
YjNWdVpGWnBaWGNBWDFwTU1qZFJWRWhWUkVKaFkydG5jbTkxYm1SV2FXVjNSblZ1WTNScGIyNTJB
RkZVClNGVkVRbUZqYTJkeWIzVnVaRlpwWlhkR2RXNWpkR2x2YmdCT1UwNXZRMlZzYkUxaGMyc0FU
bE5EYjI1MFpXNTBjME5sYkd4TllYTnIKQUU1VFVIVnphRWx1UTJWc2JFMWhjMnNBVGxORGFHRnVa
MlZIY21GNVEyVnNiRTFoYzJzQVRsTkRhR0Z1WjJWQ1lXTnJaM0p2ZFc1awpRMlZzYkUxaGMyc0FW
MHROWldScFlVTnZiblJ5YjJ4c1pYSlVhR1Z0WlVOc1lYTnphV01BVjB0TlpXUnBZVU52Ym5SeWIy
eHNaWEpVCmFHVnRaVkYxYVdOclZHbHRaUUIyYVdWM0FHTnZiblJ5YjJ4VWVYQmxBSE5zYVdSbGNn
Qk9VMU5zYVdSbGNnQk9VMEoxZEhSdmJnQmkKZFhSMGIyNEFiVzkyYVdVQVgzTjBZWFJsQUY5dFpX
UnBZVWhsYkhCbGNnQlJWRTF2ZG1sbFRXVmthV0ZJWld4d1pYSUFYMmx1YVhSbApaRlpwWVVsdWFY
UlhhWFJvUVhSMGNtbGlkWFJsY3dCZlgwTkdRbTl2YkdWaGJnQkRSa0p2YjJ4bFlXNVNaV1lBWDJO
b2FXeGtjbVZ1CkFGRlVTVzUyWVd4cFpHRjBhVzl1VTJWMEFGOXlaWE5sY25abFpERUFYM0psYzJW
eWRtVmtNZ0JmY21WelpYSjJaV1F6QUY5eVpYTmwKY25abFpEUUFYM0psYzJWeWRtVmtOUUJmY21W
elpYSjJaV1EyQUY5eVpYTmxjblpsWkRjQVgzSmxjMlZ5ZG1Wa09BQmZjbVZ6WlhKMgpaV1E1QUY5
eVpYTmxjblpsWkRFd0FGOXlaWE5sY25abFpERXhBRjl5WlhObGNuWmxaREV5QUY5eVpYTmxjblps
WkRFekFGOXlaWE5sCmNuWmxaREUwQUY5eVpYTmxjblpsWkRFMUFGRlVUVzkyYVdVQWMyaHZkME5z
YjNObFpFTmhjSFJwYjI1ekFIUnlZV05yUVd4MFpYSnUKWVhSbGMwRnljbUY1QUhSeVlXTnJBRkZV
VkhKaFkyc0FiV1ZrYVdGVWVYQmxBR0ZzZEdWeWJtRjBaWE1BY0hKbFptVnljbVZrVEdGdQpaM1Zo
WjJWekFHeGhibWQxWVdkbGN3Qk9VMDExZEdGaWJHVkJjbkpoZVFCc1lXNW5kV0ZuWlZSdlVWUlVj
bUZqYTAxaGNBQk9VMDExCmRHRmliR1ZFYVdOMGFXOXVZWEo1QUdsdVpHVjRBR3h2Ym1jZ2RXNXph
V2R1WldRZ2FXNTBBRTVUVlVsdWRHVm5aWElBWVd4MFpYSnUKWVhSbFZISmhZMnNBWVd4MFpYSnVZ
WFJsUkdsamRBQnNZVzVuZFdGblpWTjBjbWx1WndCcFpHVnVkR2xtYVdWeUFGOWZRMFpUZEhKcApi
bWNBUTBaVGRISnBibWRTWldZQWJHRnVaME52WkdVQWMyaHZjblFBVTBsdWRERTJBRXhoYm1kRGIy
UmxBSEJ5WldabGNuSmxaRlJ5CllXTnJBSFJvWlcxbFUzUjViR1VBZFhScGJHbDBhV1Z6QUhOcGRH
VUFjRzlwYm5SbGNnQ0ZBQUFBQUFBQUFJMEFBQUFBQUFBQWt3QUEKQUFBQUFBRGJBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFCMkJRQUFBQUFBQUljRkFBQUFBQUFBNndVQUFBQUFBQUR1QlFB
QQpBQUFBQVBVRkFBQUFBQUFBU0FZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFsUWNBQUFB
QUFBQytCd0FBQUFBQUFPWUhBQUFBCkFBQUFCUWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QWh3Y0FBQUFBQUFEaEJ3QUFBQUFBQU9ZSEFBQUFBQUFBQlFnQUFBQUEKQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBUkFrQUFBQUFBQUJ0Q1FBQUFBQUFBS2NKQUFBQUFBQUF4Z2tBQUFBQUFBQUFBQUFB
QUFBQQpBQUFBQUFBQUFBQUFCQW9BQUFBQUFBQXJDZ0FBQUFBQUFHSUtBQUFBQUFBQWdRb0FBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCnRBb0FBQUFBQUFEYkNnQUFBQUFBQUJJTEFBQUFBQUFB
TVFzQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFaQXNBQUFBQUFBQ0wKQ3dBQUFBQUFBTUlM
QUFBQUFBQUE0UXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBd0FBQUFBQUFBN0RBQUFB
QUFBQUhJTQpBQUFBQUFBQWtRd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBeEF3QUFBQUFB
QURyREFBQUFBQUFBQ0lOQUFBQUFBQUFRUTBBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZ
QUFBQUFJQUNLWUNBQUM1QWdBQUI2NEFBQUNWQndBQUFBQUFBTDRaQUFCRUNRQUEKQUFBQUFBd2FB
QUFFQ2dBQUFBQUFBRm9hQUFDMENnQUFBQUFBQUtnYUFBQmtDd0FBQUFBQUFQWWFBQUFVREFBQUFB
QUFBRVFiQUFERQpEQUFBQUFBQUFFaFRRVWdCQUFBQUh3QUFBRDhBQUFBTUFBQUFBQUFBQUFFQUFB
QUJBQVlBQUFBQUFBTUFBQUFIQUFBQUNBQUFBQWtBCkFBQUxBQUFBRGdBQUFBOEFBQUFUQUFBQUZ3
QUFBQm9BQUFBZUFBQUEvLy8vL3lBQUFBRC8vLy8vSXdBQUFDVUFBQUFuQUFBQUtnQUEKQUN3QUFB
QXRBQUFBTVFBQUFQLy8vLzh5QUFBQU53QUFBRGtBQUFELy8vLy9PZ0FBQUR3QUFBRC8vLy8vUGdB
QUFQdXZaOTlmY2d0dwpRQldRaXJRUVhBcVh5NEt6MnRLL0hwei9QdVZIWVd0eWh0NWNudlJubENj
b01yT1VmS2NtQjVLQmVvNkhkQ0RzbnZIdFpGcWw3blhpClhsWGw1Tjl2WitJSHVCQXBWc0xJTXh2
ZkVGbnJsa0trNkUrNjVqZm1Vd3ZhdFYyODl3VklwY3g1SWl3Uy9oY2Fxb2xQbmQ5dXdZS1AKNWJr
am5RN3NpTzZZRTRVcVVoOWFwM3VhWGhZeUE0d21hNnRYbnJ6c2ZEd0hZdm56VFhKNEFhVVJ2YW04
UzRvc0YrdmZQQkxvQ0FBNApMdkY1L3NyTTExQzFrQURnZjNmQ3V5cjdwbnlxT0xtV0lORGV3Tzg5
VjNGQUtWQ2tTazBvWU1uU3R0b2R0Rmo5bDZqMlZ0QTg3ZzVGCjJ3Ym5rZ00va0t1V0VFWFlNVmJo
aDVRQ0FBQ2tBZ0FBdEFJQUFNUUNBQURVQWdBQTVBSUFBUFFDQUFBRUF3QUFMQU1BQUR3REFBQk0K
QXdBQVhBTUFBR3dEQUFCOEF3QUFqQU1BQUp3REFBQ3NBd0FBdkFNQUFNd0RBQURjQXdBQTdBTUFB
UHdEQUFBTUJBQUFIQVFBQUN3RQpBQUE4QkFBQVRBUUFBRndFQUFCc0JBQUFmQVFBQUl3RUFBQ2NC
QUFBckFRQUFMd0VBQURrQkFBQTlBUUFBQVFGQUFBVUJRQUFKQVVBCkFEUUZBQUJFQlFBQVZBVUFB
R1FGQUFCMEJRQUFoQVVBQUpRRkFBQ2tCUUFBdEFVQUFNUUZBQURVQlFBQTVBVUFBUFFGQUFBRUJn
QUEKRkFZQUFDUUdBQUEwQmdBQVJBWUFBRlFHQUFCa0JnQUFkQVlBQUlRR0FBQ1VCZ0FBcEFZQUFF
b1ZBQUFCQUFBQTZ4a0FBQUFBQUFBOQpGQUFBQVFBQUFFVVpBQUFBQUFBQWhBTUFBQUVBQUFBRkFn
QUFBQUFBQUQ0RUFBQUJBQUFBYVFJQUFBQUFBQUFaRlFBQUFRQUFBTW9aCkFBQUFBQUFBb2hZQUFB
RUFBQUFqR3dBQUFBQUFBSjRWQUFBQkFBQUFPUm9BQUFBQUFBQzVBZ0FBQndBQUFLNEFBQUMrR1FB
QURCb0EKQUZvYUFBQ29HZ0FBOWhvQUFFUWJBQUFBQUFBQWNCWUFBQUVBQUFBQ0d3QUFBQUFBQURJ
V0FBQUJBQUFBdEJvQUFBQUFBQUNDRkFBQQpBUUFBQUk0WkFBQUFBQUFBUVFJQUFBRUFBQUJJQVFB
QUFBQUFBTndCQUFBQkFBQUFKUUVBQUFBQUFBQWdCQUFBQVFBQUFGQUNBQUFBCkFBQUFveE1BQUFF
QUFBQ3VGd0FBQUFBQUFKUVNBQUFCQUFBQS9SUUFBQUFBQUFBTUFnQUFBUUFBQUNVQkFBQUFBQUFB
UndNQUFBRUEKQUFEc0FRQUFBQUFBQUJzQkFBQUJBQUFBaFFBQUFBQUFBQUFFQXdBQUFRQUFBTG9C
QUFBQUFBQUFMZ01BQUFFQUFBRFRBUUFBQUFBQQpBQmdXQUFBQkFBQUF0Qm9BQUFBQUFBQWFBd0FB
QVFBQUFOTUJBQUFBQUFBQXNnTUFBQUVBQUFBZUFnQUFBQUFBQUZVQ0FBQUJBQUFBClNBRUFBQUFB
QUFCdUFnQUFBUUFBQUdFQkFBQUFBQUFBdFJRQUFBRUFBQUNPR1FBQUFBQUFBTm9DQUFBQkFBQUFv
UUVBQUFBQUFBREEKRmdBQUFRQUFBQ01iQUFBQUFBQUF4Z0lBQUFFQUFBQ2hBUUFBQUFBQUFBZ1dB
QUFCQUFBQWh4b0FBQUFBQUFEeUZRQUFBUUFBQUljYQpBQUFBQUFBQWxRSUFBQUVBQUFDTEFRQUFB
QUFBQUtZQ0FBQUhBQUFBcmdBQUFMNFpBQUFNR2dBQVdob0FBS2dhQUFEMkdnQUFSQnNBCkFBQUFB
QUJnRlFBQUFRQUFBT3NaQUFBQUFBQUE0aFFBQUFFQUFBREtHUUFBQUFBQUFQb1dBQUFCQUFBQVVC
c0FBQUFBQUFCWkZBQUEKQVFBQUFHOFpBQUFBQUFBQUJ3UUFBQUVBQUFCUUFnQUFBQUFBQUVZV0FB
QUJBQUFBMVJvQUFBQUFBQUNmQXdBQUFRQUFBQjRDQUFBQQpBQUFBcXdFQUFBRUFBQUFNQVFBQUFB
QUFBT1lEQUFBQkFBQUFOd0lBQUFBQUFBQTRBUUFBQVFBQUFHY0FBQUFBQUFBQWpCWUFBQUVBCkFB
QUNHd0FBQUFBQUFGZ0JBQUFCQUFBQURBRUFBQUFBQUFDS0ZRQUFBUUFBQUJnYUFBQUFBQUFBMkJZ
QUFBRUFBQUJRR3dBQUFBQUEKQVBrVEFBQUJBQUFBM2hnQUFBQUFBQUFhRkFBQUFRQUFBQXdaQUFB
QUFBQUFiZ01BQUFFQUFBQUZBZ0FBQUFBQUFGZ0RBQUFCQUFBQQo3QUVBQUFBQUFBRHpBZ0FBQVFB
QUFMb0JBQUFBQUFBQXhoTUFBQUVBQUFEWUZ3QUFBQUFBQU40VkFBQUJBQUFBWmhvQUFBQUFBQURF
CkZRQUFBUUFBQUdZYUFBQUFBQUFBaEJNQUFBRUFBQUJiRndBQUFBQUFBSDhDQUFBQkFBQUFZUUVB
QUFBQUFBREtBd0FBQVFBQUFEY0MKQUFBQUFBQUF0QlVBQUFFQUFBQTVHZ0FBQUFBQUFHa1RBQUFC
QUFBQUxSY0FBQUFBQUFCZUZnQUFBUUFBQU5VYUFBQUFBQUFBY0JVQQpBQUVBQUFBWUdnQUFBQUFB
QUVoVFFVZ0JBQUFBQVFBQUFBQUFBQUFNQUFBQUFBQUFBQUVBQUFBQkFBWUEvLy8vLzBoVFFVZ0JB
QUFBCkFRQUFBQUFBQUFBTUFBQUFBQUFBQUFFQUFBQUJBQVlBLy8vLy8waFRRVWdCQUFBQUhBQUFB
RGdBQUFBVUFBQUFBQUFBQUFNQUFBQUIKQUFZQUF3QUZBQVVBQ3dBQUFBQUFBUUFBQUFVQUFBQUdB
QUFBQndBQUFBc0FBQUFOQUFBQUR3QUFBQkFBQUFELy8vLy9FUUFBQUJJQQpBQUFUQUFBQUZBQUFB
UC8vLy84YkFBQUFIZ0FBQUI4QUFBQWlBQUFBSlFBQUFDY0FBQUFyQUFBQUxRQUFBUC8vLy84eEFB
QUFNZ0FBCkFEVUFBQUEzQUFBQWRBYStCYmtWMWUxaFRPRERSZnB5UG1tbVhUYUtSUFQ4UjVuUk9W
QmdoTE9VQ2Q3RElGczkrWHg0L3hobGJwVSsKNlhGNW8rckVYS2xxYytMT3AyVm5ZaHhncG1FS2JJ
NG82eWtyQ1R3RWpwVVJtNEo4dlh3MSt6MmZWQ3c5Y1BNMnpaTThzamtjd3RUSgp1QUEvei9PQVZa
TUxGTENiNFhFUHVFcnJYL2x3bG42ZEpGeXB2YUk0S1FaY2M4YkNIVjhQeGhISmhvZE93OU1MOHJY
TTZQQkpueUFiCjdJOFkrS3dFb0tmTCtlR3Azc05kNkZNUm5yNStQK0oxRmRJeWVGa0E0aVFiQkRD
QWlBdmxtUXZVMWZCYUVGbHZzUTBHaENjemNtbXgKRGJ0TytBeFlBZ0FBYXdJQUFINENBQUNSQWdB
QXBBSUFBTGNDQUFES0FnQUEzUUlBQVBBQ0FBQURBd0FBRmdNQUFDa0RBQUE4QXdBQQpUd01BQUdr
REFBQjhBd0FBandNQUFLa0RBQUM4QXdBQXp3TUFBT0lEQUFEMUF3QUFDQVFBQUJzRUFBQXVCQUFB
UVFRQUFGc0VBQUJ1CkJBQUFnUVFBQUpRRUFBQ25CQUFBdWdRQUFNMEVBQURuQkFBQStnUUFBQTBG
QUFBZ0JRQUFNd1VBQUVZRkFBQlpCUUFBYkFVQUFIOEYKQUFDU0JRQUFwUVVBQUxnRkFBRExCUUFB
M2dVQUFQRUZBQUFFQmdBQUZ3WUFBQ29HQUFBOUJnQUFVQVlBQUdNR0FBQjJCZ0FBaVFZQQpBSW9G
QUFBQkFBQUF6QVFBQUJZQUFBQUFBQURaRHdBQUFRQUFBQkFQQUFBV0FBQUFBQUFBalJJQUFBRUFB
QUFrRkFBQUV3QUFBQUFBCkFQVU5BQUFCQUFBQXl3NEFBQk1BQUFBQUFBRE5Gd0FBQVFBQUFLWWJB
QUFUQUFBQUFBQUFUeEFBQUFFQUFBQStEd0FBRXdBQ0FBQUEKQUY4VEFBQUJBQUFBNkJZQUFCTUFB
QUFBQUFCVUV3QUFBUUFBQUJrV0FBQVRBQUlBQUFBQTFRUUFBQUVBQUFDdUJBQUFGZ0FBQUFBQQpB
UE1BQUFBQkFBQUFLQUFBQUNRQUFBQUFBQUFCQ0FBQUFRQUFBQzhIQUFBVEFBQUFBQUFBckFVQUFB
RUFBQURYQkFBQUV3QUFBQUFBCkFOQVpBQUFCQUFBQWxSMEFBQllBQUFBQUFBQy9CQUFBQWdBQUFL
UURBQUFUQUFJTEJBQUFGZ0FBQUFBQUFEZ2FBQUFCQUFBQXd4MEEKQUJZQUFBQUFBQUFTRWdBQUFR
QUFBS1FUQUFBV0FBQUFBQUFBbWcwQUFBSUFBQURIRFFBQUV3QUN3QTRBQUJZQUFBQUFBQUFRR1FB
QQpBUUFBQUFrY0FBQVRBQUFBQUFBQVBCZ0FBQUVBQUFEeUd3QUFGZ0FBQUFBQUFBb1FBQUFCQUFB
QUd3OEFBQk1BQUFBQUFBQXpBUUFBCkFRQUFBRndBQUFBV0FBQUFBQUFBdmhrQUFBRUFBQUNPSFFB
QUpBQUFBQUFBQUprQkFBQUJBQUFBMFFBQUFCTUFBQUFBQUFDaUFRQUEKQVFBQUFPb0FBQUFUQUFB
QUFBQUFVQVlBQUFFQUFBQUJCUUFBSkFBQUFBQUFBS1VFQUFBQ0FBQUFIZ01BQUJNQUFvVURBQUFX
QUFBQQpBQUFBMkFjQUFBRUFBQUN1QmdBQUV3QUFBQUFBQUlBWkFBQUJBQUFBWGgwQUFCTUFBQUFB
QUFDakJ3QUFBUUFBQUFnRkFBQVRBQUlBCkFBQUFvdzRBQUFFQUFBRGpEZ0FBSkFBQUFBQUFBSU1T
QUFBQkFBQUFyeE1BQUJNQUFnQUFBQUJyQkFBQUFRQUFBTVFDQUFBVEFBSUEKQUFBQXhnUUFBQUlB
QUFBcUJBQUFFd0FDb3dRQUFCWUFBQUFBQUFBbkFRQUFBUUFBQUZVQUFBQWtBQUFBQUFBQVhSQUFB
QUVBQUFCMApEd0FBRXdBQUFBQUFBTllYQUFBQkFBQUF2aHNBQUJNQUFBQUFBQUFKRWdBQUFRQUFB
QThTQUFBVEFBSUFBQUFBb1F3QUFBRUFBQUNnCkJ3QUFFd0FDQUFBQUFBd1BBQUFCQUFBQTlRNEFB
QllBQUFBQUFBRG9Cd0FBQVFBQUFCRUhBQUFXQUFBQUFBQUFnUVVBQUFFQUFBREYKQkFBQUpBQUFB
QUFBQUhvRUFBQUJBQUFBNkFJQUFCTUFBQUFBQUFEUkJRQUFBUUFBQU84RUFBQWtBQUFBQUFBQU9R
WUFBQUVBQUFEMgpCQUFBRmdBQUFBQUFBRUFRQUFBQkFBQUFNdzhBQUJZQUFBQUFBQUQ0REFBQUFR
QUFBT2dMQUFBVEFBQUFBQUFBUHhvQUFBRUFBQURPCkhRQUFGZ0FBQUFBQUFIY0VBQUFCQUFBQTNR
SUFBQllBQUFBQUFBQWRHZ0FBQVFBQUFMQWRBQUFXQUFBQUFBQUFjZ1VBQUFFQUFBQysKQkFBQUpB
QUFBQUFBQVBvQUFBQUJBQUFBTHdBQUFCWUFBQUFBQUFBeUdnQUFBUUFBQUx3ZEFBQWtBQUFBQUFB
QVJRZ0FBQUVBQUFCSApCd0FBRXdBQUFBQUFBS1FaQUFBQkFBQUFkaDBBQUJNQUFBQUFBQUQ3QndB
QUFRQUFBQndIQUFBVEFBQUFBQUFBa3dFQUFBRUFBQURHCkFBQUFGZ0FBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUJSQUFBQUlRQUNBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQmdBQUFBQUFBQUFHTUMKQUFB
aEFBSUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFQQUNBQUFBQUFBQVZnQUFBQ0VBQWdFQUFBQUFBQUFB
QUFBQUFBQUFBQUFBVUFNQQpBQUFBQUFEVEFBQUFZUUVEQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3
QkFBQUFBQUFBRWdBQUFBQkFBRUJBQUFBQUFBQUFBQUFBQUFBCkFBQUFBSUFFQUFBQUFBQUE2UUlB
QU5GWUJRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQWNBY0FBQUFBQUFDVkFBQUFBQUFBQVFBQUFBQUEK
QUFBQUFBQUFBQUFBQUFBUUNBQUFBQUFBQUZrQUFBQUJBQUVCQUFBQUFBQUFBQUFBQUFBQUFBQUFB
SEFJQUFBQUFBQUFXZ0FBQUNFQQpBZ0VBQUFBQUFBQUFBQUFBQUFBQUFBQUEwQWdBQUFBQUFBQlhB
QUFBQVFBQkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0NRQUFBQUFBCkFBc0FBQUFBQUFBQkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUVBSkFBQUFBQUFBcFFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFB
QUEKOEFrQUFBQUFBQUFOQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ0FBQUFBQUFL
QUFBQUFBQUFBQkFBQUFBQUFBQUFBQQpBQUFBQUFBQUFLQUtBQUFBQUFBQURRQUFBQUFBQUFFQUFB
QUFBQUFBQUFBQUFBQUFBQUFBc0FvQUFBQUFBQUNnQUFBQUFBQUFBUUFBCkFBQUFBQUFBQUFBQUFB
QUFBQUJRQ3dBQUFBQUFBQTBBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFHQUxBQUFBQUFB
QW9BQUEKQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0FBQUFBQUFBTkFBQUFBQUFBQVFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFRREFBQQpBQUFBQUtBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFB
QUFBQUFBTEFNQUFBQUFBQUFEUUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBCkFBQUF3QXdBQUFB
QUFBQ2dBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFCZ0RRQUFBQUFBQUEwQUFBQUFBQUFC
QUFBQUFBQUEKQUFBQUFBQUFBQUFBQUJRQUFBQUFBQUFBQVhwU0FBRjRFQUVRREFjSWtBRUFBQ1FB
QUFBY0FBQUFnSkgvLy8vLy8vOVJBQUFBQUFBQQpBQUJCRGhDR0FrTU5Ca09EQkk0REFBQWtBQUFB
UkFBQUFMaVIvLy8vLy8vL1l3SUFBQUFBQUFBQVFRNFFoZ0pERFFaRGd3U09Bd0FBCkpBQUFBR3dB
QUFBZ2xQLy8vLy8vLzFZQUFBQUFBQUFBQUVFT0VJWUNRdzBHUTRNRWpnTUFBQ1FBQUFDVUFBQUFX
SlQvLy8vLy8vL1QKQUFBQUFBQUFBQUJCRGhDR0FrTU5Ca2FEQlk0RWp3TWtBQUFBdkFBQUFCQ1Yv
Ly8vLy8vL1NBQUFBQUFBQUFBQVFRNFFoZ0pERFFaQwpnd01BQUFBQUxBQUFBT1FBQUFBNGxmLy8v
Ly8vLytrQ0FBQUFBQUFBQUVFT0VJWUNRdzBHVFlNSGpBYU5CWTRFandNQUFBQUFKQUFBCkFCUUJB
QUQ0bC8vLy8vLy8vNVVBQUFBQUFBQUFBRUVPRUlZQ1F3MEdBQUFBQUFBQUFDUUFBQUE4QVFBQWNK
ai8vLy8vLy85WkFBQUEKQUFBQUFBQkJEaENHQWtNTkJrS0RBd0FBQUFBa0FBQUFaQUVBQUtpWS8v
Ly8vLy8vV2dBQUFBQUFBQUFBUVE0UWhnSkREUVpEZ3dTTwpBd0FBSkFBQUFJd0JBQURnbVAvLy8v
Ly8vMWNBQUFBQUFBQUFBRUVPRUlZQ1F3MEdRb01EQUFBQUFDUUFBQUMwQVFBQUdKbi8vLy8vCi8v
OExBQUFBQUFBQUFBQkJEaENHQWtNTkJnQUFBQUFBQUFBa0FBQUEzQUVBQUFDWi8vLy8vLy8vcFFB
QUFBQUFBQUFBUVE0UWhnSkQKRFFZQUFBQUFBQUFBSkFBQUFBUUNBQUNJbWYvLy8vLy8vdzBBQUFB
QUFBQUFBRUVPRUlZQ1F3MEdBQUFBQUFBQUFDUUFBQUFzQWdBQQpjSm4vLy8vLy8vK2dBQUFBQUFB
QUFBQkJEaENHQWtNTkJnQUFBQUFBQUFBa0FBQUFWQUlBQU9pWi8vLy8vLy8vRFFBQUFBQUFBQUFB
ClFRNFFoZ0pERFFZQUFBQUFBQUFBSkFBQUFId0NBQURRbWYvLy8vLy8vNkFBQUFBQUFBQUFBRUVP
RUlZQ1F3MEdBQUFBQUFBQUFDUUEKQUFDa0FnQUFTSnIvLy8vLy8vOE5BQUFBQUFBQUFBQkJEaENH
QWtNTkJnQUFBQUFBQUFBa0FBQUF6QUlBQURDYS8vLy8vLy8vb0FBQQpBQUFBQUFBQVFRNFFoZ0pE
RFFZQUFBQUFBQUFBSkFBQUFQUUNBQUNvbXYvLy8vLy8vdzBBQUFBQUFBQUFBRUVPRUlZQ1F3MEdB
QUFBCkFBQUFBQ1FBQUFBY0F3QUFrSnIvLy8vLy8vK2dBQUFBQUFBQUFBQkJEaENHQWtNTkJnQUFB
QUFBQUFBa0FBQUFSQU1BQUFpYi8vLy8KLy8vL0RRQUFBQUFBQUFBQVFRNFFoZ0pERFFZQUFBQUFB
QUFBSkFBQUFHd0RBQUR3bXYvLy8vLy8vNkFBQUFBQUFBQUFBRUVPRUlZQwpRdzBHQUFBQUFBQUFB
Q1FBQUFDVUF3QUFhSnYvLy8vLy8vOE5BQUFBQUFBQUFBQkJEaENHQWtNTkJnQUFBQUFBQUFCbkRR
QUFMZ0FBCkhWd05BQUNSQUFBdFVnMEFBREVBQUIxTERRQUFDZ0FBSFVRTkFBQXdBQUFkUFEwQUFK
RUFBQzB6RFFBQUN3QUFIU3dOQUFBS0FBQWQKSlEwQUFBa0FBQjBjRFFBQUFBQUFIUlVOQUFBdkFB
QWRDUTBBQUM0QUFCMENEUUFBbFFBQUxmb01BQUF1QUFBZDh3d0FBSllBQUMzdQpEQUFBTFFBQUhl
SU1BQUFHQUFBZDJ3d0FBSklBQUMzUkRBQUFCd0FBSGNjTUFBQUdBQUJ0dHd3QUFDZ0FBQjJzREFB
QWtRQUFMYUlNCkFBQXJBQUFkbXd3QUFBb0FBQjJVREFBQUtnQUFIWTBNQUFDUkFBQXRnd3dBQUFz
QUFCMThEQUFBQ2dBQUhYVU1BQUFKQUFBZGJBd0EKQUFFQUFCMWxEQUFBS1FBQUhWa01BQUFvQUFB
ZFVnd0FBSlVBQUMxS0RBQUFLQUFBSFVNTUFBQ1dBQUF0UGd3QUFDY0FBQjB5REFBQQpCZ0FBSFNz
TUFBQ1NBQUF0SVF3QUFBY0FBQjBYREFBQUJnQUFiUWNNQUFBaUFBQWQvQXNBQUpFQUFDM3lDd0FB
SlFBQUhlc0xBQUFLCkFBQWQ1QXNBQUNRQUFCM2RDd0FBa1FBQUxkTUxBQUFMQUFBZHpBc0FBQW9B
QUIzRkN3QUFDUUFBSGJ3TEFBQUNBQUFkdFFzQUFDTUEKQUIycEN3QUFJZ0FBSGFJTEFBQ1ZBQUF0
bWdzQUFDSUFBQjJUQ3dBQWxnQUFMWTRMQUFBaEFBQWRnZ3NBQUFZQUFCMTdDd0FBa2dBQQpMWEVM
QUFBSEFBQWRad3NBQUFZQUFHMVhDd0FBSEFBQUhVd0xBQUNSQUFBdFFnc0FBQjhBQUIwN0N3QUFD
Z0FBSFRRTEFBQWVBQUFkCkxRc0FBSkVBQUMwakN3QUFDd0FBSFJ3TEFBQUtBQUFkRlFzQUFBa0FB
QjBNQ3dBQUF3QUFIUVVMQUFBZEFBQWQrUW9BQUJ3QUFCM3kKQ2dBQWxRQUFMZW9LQUFBY0FBQWQ0
d29BQUpZQUFDM2VDZ0FBR3dBQUhkSUtBQUFHQUFBZHl3b0FBSklBQUMzQkNnQUFCd0FBSGJjSwpB
QUFHQUFCdHB3b0FBQllBQUIyY0NnQUFrUUFBTFpJS0FBQVpBQUFkaXdvQUFBb0FBQjJFQ2dBQUdB
QUFIWDBLQUFDUkFBQXRjd29BCkFBc0FBQjFzQ2dBQUNnQUFIV1VLQUFBSkFBQWRYQW9BQUF3QUFC
MVZDZ0FBRndBQUhVa0tBQUFXQUFBZFFnb0FBSlVBQUMwNkNnQUEKRmdBQUhUTUtBQUNXQUFBdExn
b0FBQlVBQUIwaUNnQUFCZ0FBSFJzS0FBQ1NBQUF0RVFvQUFBY0FBQjBIQ2dBQUJnQUFiZmNKQUFB
UQpBQUFkNFFrQUFKRUFBQzNYQ1FBQUV3QUFIZEFKQUFBS0FBQWR5UWtBQUJJQUFCM0NDUUFBa1FB
QUxiZ0pBQUFMQUFBZHNRa0FBQW9BCkFCMnFDUUFBQ1FBQUhhRUpBQUFRQUFBZG1na0FBQTBBQUIy
VENRQUFFUUFBSFl3SkFBQ1ZBQUF0aHdrQUFCQUFBQjE0Q1FBQWt3QUEKTFhBSkFBQVBBQUFkWkFr
QUFBWUFBQjFkQ1FBQWtnQUFMVk1KQUFBSEFBQWRSd2tBQUFZQUFCMDNDUUFBRFFBQUhSd0pBQUNY
QUFCTgpEUWtBQUFZQUFCVUNDUUFBaVFBQUhma0lBQUNKQUFBZDhnZ0FBQVlBQUJYb0NBQUFsd0FB
VGQ4SUFBQUdBQUFWMkFnQUFBd0FBQjNCCkNBQUFsd0FBVGJFSUFBQUdBQUFWcGdnQUFJa0FBQjJk
Q0FBQWlRQUFIWllJQUFBR0FBQVZqQWdBQUpjQUFFMkRDQUFBQmdBQUZYd0kKQUFBTUFBQWRYQWdB
QUpjQUFFMU5DQUFBQmdBQUZVSUlBQUNKQUFBZE9RZ0FBSWtBQUIweUNBQUFCZ0FBRlNnSUFBQ1hB
QUJOSHdnQQpBQVlBQUJVWUNBQUFEQUFBSFFFSUFBQ1JBQUF0OXdjQUFBc0FBQjN3QndBQUNnQUFI
ZWtIQUFBSkFBQWQzQWNBQUFRQUFHM1RCd0FBCkJRQUFIY2tIQUFDVEFBQXR3UWNBQUFnQUFCMjFC
d0FBQmdBQUhhNEhBQUNTQUFBdHBBY0FBQWNBQUIyWUJ3QUFCZ0FBSFlzSEFBQUYKQUFBZGdnY0FB
QVFBQUcwL0J3QUFpQUFBSFRnSEFBQ0lBQUFkS3djQUFJZ0FBQjBrQndBQWx3QUFUUmdIQUFBR0FB
QVZEQWNBQUljQQpBQjMvQmdBQWh3QUFIZmdHQUFDR0FBQWQ3UVlBQUlZQUFCM2RCZ0FBaFFBQUhk
UUdBQUNGQUFBZHdBWUFBQVlBQUJXM0JnQUFsd0FBClBhd0dBQUFHQUFBVnBRWUFBQWNBQUJXU0Jn
QUFoUUFBSFl3R0FBQ0ZBQUFkZndZQUFKY0FBRTF6QmdBQUJnQUFGV01HQUFDSEFBQWQKWFFZQUFB
a0FBQlZXQmdBQWh3QUFIVHdHQUFDRUFBQWROZ1lBQUlRQUFCMHNCZ0FBaXdBQUxSd0dBQUNLQUFB
dERnWUFBSmNBQUUwSQpCZ0FBQmdBQUZmNEZBQUNIQUFBZCtBVUFBQWtBQUJYeEJRQUFod0FBSGQ4
RkFBQ0hBQUFkMlFVQUFBa0FBQlhTQlFBQWh3QUFIYndGCkFBQ0hBQUFkdGdVQUFBa0FBQld2QlFB
QWh3QUFIYUlGQUFDR0FBQWRtUVVBQUlZQUFCMTVCUUFBbEFBQVBXa0ZBQUNGQUFBZFVBVUEKQUFZ
QUFCVkpCUUFBaFFBQUhUb0ZBQUNEQUFBZE1RVUFBQWNBQUJVZEJRQUFsd0FBUFJZRkFBQUdBQUFW
RHdVQUFJVUFBQjBEQlFBQQpoUUFBSGZrRUFBQ0RBQUFkOEFRQUFJTUFBQjNwQkFBQUJ3QUFGZFVF
QUFDRkFBQWR6QVFBQUlVQUFCM0NCQUFBbHdBQVRiWUVBQUFHCkFBQVZwd1FBQUlrQUFCMmhCQUFB
aVFBQUhab0VBQUFHQUFBVmRBUUFBSDBBQUMxbUJBQUFDUUFBRlY4RUFBQjlBQUF0VndRQUFBa0EK
QUJWUUJBQUFmUUFBTFVnRUFBQUpBQUFWUVFRQUFIMEFBQzA4QkFBQUNRQUFGUjhFQUFDWEFBQk5E
QVFBQUFZQUFCWDRBd0FBQmdBQQpGZVFEQUFDSEFBQWQyd01BQUFrQUFCWFVBd0FBaHdBQUhjMERB
QUNHQUFBZHdnTUFBSVlBQUIyN0F3QUFsd0FBVGJJREFBQUpBQUFWCnF3TUFBQVlBQUJXYUF3QUFD
UUFBRlpNREFBQUdBQUFWaGdNQUFKY0FBRDEvQXdBQUJnQUFGWEFEQUFDSkFBQWRhZ01BQUlrQUFC
MWoKQXdBQUJnQUFGVEFEQUFBSkFBQVZLUU1BQUFZQUFCVWNBd0FBbHdBQVBSVURBQUFHQUFBVkNn
TUFBSWtBQUIwRUF3QUFpUUFBSGYwQwpBQUFHQUFBVnJ3SUFBQVlBQUJXZkFnQUFCZ0FBRlpVQ0FB
QUhBQUFWamdJQUFBWUFBQldIQWdBQUNRQUFGWGNDQUFDWEFBQTljQUlBCkFBWUFBQlZwQWdBQWd3
QUFIV0FDQUFDREFBQWRXUUlBQUFNQUFCMVJBZ0FBQ1FBQUZVRUNBQUNYQUFBOU9nSUFBQVlBQUJV
ekFnQUEKZ3dBQUhTb0NBQUNEQUFBZEl3SUFBQU1BQUIwYkFnQUFDUUFBRlFzQ0FBQ1hBQUE5QkFJ
QUFBWUFBQlg5QVFBQWd3QUFIZlFCQUFDRApBQUFkN1FFQUFBTUFBQjNpQVFBQUNRQUFGZElCQUFD
WEFBQTl5d0VBQUFZQUFCWEVBUUFBZ3dBQUhic0JBQUNEQUFBZHRBRUFBQU1BCkFCMnBBUUFBQ1FB
QUZaa0JBQUNYQUFBOWtnRUFBQVlBQUJXTEFRQUFnd0FBSFlJQkFBQ0RBQUFkZXdFQUFBTUFBQjFv
QVFBQUJnQUEKRlZzQkFBQUdBQUFWU3dFQUFBWUFBQlZCQVFBQUJ3QUFGVG9CQUFBR0FBQVZNd0VB
QUFrQUFCVWpBUUFBQmdBQUZSa0JBQUFIQUFBVgpFZ0VBQUFZQUFCVUxBUUFBQ1FBQUZmc0FBQUNY
QUFBOTlBQUFBQVlBQUJYdEFBQUFnd0FBSGVRQUFBQ0RBQUFkM1FBQUFBTUFBQjNLCkFBQUFCZ0FB
RmIwQUFBQUdBQUFWclFBQUFKY0FBRDJtQUFBQUJnQUFGWjhBQUFDREFBQWRsZ0FBQUlNQUFCMlBB
QUFBQWdBQUhZY0EKQUFBQkFBQWRQd0FBQUFZQUFCVTRBQUFBQWdBQUZTY0FBQUNYQUFBOUlBQUFB
QVlBQUJVWkFBQUFnd0FBSFJBQUFBQ0RBQUFkQ1FBQQpBQUFBQUIwb0FBQUFEZ0FBRGlBQUFBQVVB
QUFPR0FBQUFCb0FBQTRRQUFBQUlBQUFEZ2dBQUFBbUFBQU9BQUFBQUN3QUFBNW9BQUFBCld3QUFE
bUFBQUFDWUFBQU9XQUFBQUZjQUFBNVFBQUFBbUFBQURrZ0FBQUJSQUFBT1FBQUFBSmdBQUE0NEFB
QUFTZ0FBRGpBQUFBQ1kKQUFBT0tBQUFBRWdBQUE0Z0FBQUFtQUFBRGhnQUFBQkVBQUFPRUFBQUFK
Z0FBQTRJQUFBQU1nQUFEZ0FBQUFDWUFBQU9zQUFBQUY4QQpBQTZvQUFBQVhnQUFEcUFBQUFCZEFB
QU9tQUFBQUZ3QUFBNlFBQUFBV2dBQURvZ0FBQUJaQUFBT2dBQUFBRmdBQUE1NEFBQUFWZ0FBCkRu
QUFBQUJTQUFBT2FBQUFBRXdBQUE1Z0FBQUFTd0FBRGxnQUFBQkhBQUFPVUFBQUFFWUFBQTVJQUFB
QVF3QUFEa0FBQUFBOUFBQU8KT0FBQUFEd0FBQTR3QUFBQU93QUFEaWdBQUFBNUFBQU9JQUFBQURn
QUFBNFlBQUFBTmdBQURoQUFBQUExQUFBT0NBQUFBRFFBQUE0QQpBQUFBTXdBQURoZ0FBQUNNQUFB
T0VBQUFBSThBQUE0SUFBQUFqZ0FBRGdBQUFBQ05BQUFPOEFFQUFGVUFBQTdnQVFBQWtBQUFEdEFC
CkFBQlVBQUFPd0FFQUFKQUFBQTZ3QVFBQVV3QUFEcUFCQUFDUUFBQU9rQUVBQUZBQUFBNkFBUUFB
a0FBQURuQUJBQUJQQUFBT1lBRUEKQUpBQUFBNVFBUUFBVGdBQURrQUJBQUNRQUFBT01BRUFBRTBB
QUE0Z0FRQUFrQUFBRGhBQkFBQkpBQUFPQUFFQUFKQUFBQTd3QUFBQQpSUUFBRHVBQUFBQ1FBQUFP
MEFBQUFFSUFBQTdBQUFBQWtBQUFEckFBQUFCQkFBQU9vQUFBQUpBQUFBNlFBQUFBUUFBQURvQUFB
QUNRCkFBQU9jQUFBQUQ4QUFBNWdBQUFBa0FBQURsQUFBQUErQUFBT1FBQUFBSkFBQUE0d0FBQUFP
Z0FBRGlBQUFBQ1FBQUFPRUFBQUFEY0EKQUE0QUFBQUFrQUFBRG1jYkFBQUJBQUFHWHhzQUFBRUFB
QVk2R3dBQUFRQUFCakliQUFBQkFBQUdHUnNBQUFFQUFBWVJHd0FBQVFBQQpCdXdhQUFBQkFBQUc1
Qm9BQUFFQUFBYkxHZ0FBQVFBQUJzTWFBQUFCQUFBR25ob0FBQUVBQUFhV0dnQUFBUUFBQm4wYUFB
QUJBQUFHCmRSb0FBQUVBQUFaUUdnQUFBUUFBQmtnYUFBQUJBQUFHTHhvQUFBRUFBQVluR2dBQUFR
QUFCZ0lhQUFBQkFBQUcraGtBQUFFQUFBYmgKR1FBQUFRQUFCdGtaQUFBQkFBQUdwUmtBQUFFQUFB
YWRHUUFBQVFBQUJvUVpBQUFCQUFBR2ZCa0FBQUVBQUFaVkdRQUFBUUFBQmswWgpBQUFCQUFBR0hC
a0FBQUVBQUFZVUdRQUFBUUFBQnZJWUFBQUJBQUFHNmhnQUFBRUFBQWJGR0FBQUFRQUFCcjBZQUFB
QkFBQUdiUmdBCkFBRUFBQVpsR0FBQUFRQUFCazBZQUFBQkFBQUdSUmdBQUFFQUFBYm9Gd0FBQVFB
QUJ1QVhBQUFCQUFBR3ZoY0FBQUVBQUFhMkZ3QUEKQVFBQUJtc1hBQUFCQUFBR1l4Y0FBQUVBQUFa
QkZ3QUFBUUFBQmprWEFBQUJBQUFHQXhZQUFBRUFBQWI3RlFBQUFRQUFCdVlWQUFBQgpBQUFHM2hV
QUFBRUFBQWJKRlFBQUFRQUFCc0VWQUFBQkFBQUdyQlVBQUFFQUFBYWtGUUFBQVFBQUJvOFZBQUFC
QUFBR2h4VUFBQUVBCkFBWnlGUUFBQVFBQUJtb1ZBQUFCQUFBR1ZSVUFBQUVBQUFaTkZRQUFBUUFB
QmpNVkFBQUJBQUFHS3hVQUFBRUFBQVlSRlFBQUFRQUEKQmdrVkFBQUJBQUFHZlFJQUFBRUFBQVox
QWdBQUFRQUFCbDBDQUFBS0FBQUdSQUlBQUFNQUFBWXJBZ0FBQ2dBQUJoSUNBQUFEQUFBRworUUVB
QUFvQUFBYmdBUUFBQXdBQUJzY0JBQUFLQUFBR3JnRUFBQU1BQUFhWUFRQUFDZ0FBQm00QkFBQUtB
QUFHVlFFQUFBTUFBQVl5CkFRQUFDZ0FBQmhrQkFBQURBQUFHa2dBQUFBb0FBQVo3QUFBQUFRQUFC
bk1BQUFBQkFBQUc0d0lBQUFFQUFBYmpBd0FBQVFBQUJ0c0QKQUFBQkFBQUd3QU1BQUFFQUFBYTRB
d0FBQVFBQUJwMERBQUFCQUFBR2xRTUFBQUVBQUFaNkF3QUFBUUFBQm5JREFBQUJBQUFHWndNQQpB
QUVBQUFaZkF3QUFBUUFBQmtRREFBQUJBQUFHUEFNQUFBRUFBQVloQXdBQUFRQUFCaGtEQUFBQkFB
QUcvZ0lBQUFFQUFBYjJBZ0FBCkFRQUFCdHNDQUFBQkFBQUcwd0lBQUFFQUFBYTRBZ0FBQVFBQUJy
QUNBQUFCQUFBR2xRSUFBQUVBQUFhTkFnQUFBUUFBQm5JQ0FBQUIKQUFBR2FnSUFBQUVBQUFaZUFn
QUFBUUFBQmxZQ0FBQUJBQUFHT3dJQUFBRUFBQVl6QWdBQUFRQUFCaWdDQUFBQkFBQUdJQUlBQUFF
QQpBQVlWQWdBQUFRQUFCZzBDQUFBQkFBQUc4Z0VBQUFFQUFBYnFBUUFBQVFBQUJ0OEJBQUFCQUFB
RzF3RUFBQUVBQUFhOEFRQUFBUUFBCkJyUUJBQUFCQUFBR3FBRUFBQUVBQUFhZ0FRQUFBUUFBQnBV
QkFBQUJBQUFHalFFQUFBRUFBQWFDQVFBQUFRQUFCbm9CQUFBQkFBQUcKWHdFQUFBRUFBQVpYQVFB
QUFRQUFCa3dCQUFBQkFBQUdSQUVBQUFFQUFBWXBBUUFBQVFBQUJpRUJBQUFCQUFBR0JnRUFBQUVB
QUFiKwpBQUFBQVFBQUJ2TUFBQUFCQUFBRzZ3QUFBQUVBQUFiZ0FBQUFBUUFBQnRnQUFBQUJBQUFH
dlFBQUFBRUFBQWExQUFBQUFRQUFCcW9BCkFBQUJBQUFHb2dBQUFBRUFBQWFYQUFBQUFRQUFCbzhB
QUFBQkFBQUdkQUFBQUFFQUFBWnNBQUFBQVFBQUJtRUFBQUFCQUFBR1dRQUEKQUFFQUFBWStBQUFB
QVFBQUJqWUFBQUFCQUFBR0t3QUFBQUVBQUFZakFBQUFBUUFBQmdnQUFBQUJBQUFHQUFBQUFBRUFB
QWJZQVFBQQpBUUFBQnRBQkFBQUJBQUFHeUFFQUFBRUFBQWJBQVFBQUFRQUFCcWdCQUFBQkFBQUdv
QUVBQUFFQUFBYVlBUUFBQVFBQUJwQUJBQUFCCkFBQUdlQUVBQUFFQUFBWndBUUFBQVFBQUJtZ0JB
QUFCQUFBR1lBRUFBQUVBQUFaSUFRQUFBUUFBQmtBQkFBQUJBQUFHT0FFQUFBRUEKQUFZd0FRQUFB
UUFBQmhnQkFBQUJBQUFHRUFFQUFBRUFBQVlJQVFBQUFRQUFCZ0FCQUFBQkFBQUc2QUFBQUFFQUFB
YmdBQUFBQVFBQQpCdGdBQUFBQkFBQUcwQUFBQUFFQUFBYTRBQUFBQVFBQUJyQUFBQUFCQUFBR3FB
QUFBQUVBQUFhZ0FBQUFBUUFBQm9nQUFBQUJBQUFHCmdBQUFBQUVBQUFaNEFBQUFBUUFBQm5BQUFB
QUJBQUFHV0FBQUFBRUFBQVpRQUFBQUFRQUFCa2dBQUFBQkFBQUdRQUFBQUFFQUFBWTQKQUFBQUFR
QUFCakFBQUFBQkFBQUdHQUFBQUFFQUFBWVFBQUFBQVFBQUJnZ0FBQUFCQUFBR0FBQUFBQUVBQUFa
Y0FBQUFBUUFBQmxBQQpBQUFCQUFBR1JBQUFBQUVBQUFZNEFBQUFBUUFBQml3QUFBQUJBQUFHSUFB
QUFBRUFBQVlVQUFBQUFRQUFCcEFDQUFBV0FBQlVrQUlBCkFCWUFBQVNNQWdBQUZnQUFWSXdDQUFB
V0FBQUVpQUlBQUJZQUFGU0lBZ0FBRmdBQUJJUUNBQUFXQUFCVWhBSUFBQllBQUFTQUFnQUEKRmdB
QVZJQUNBQUFXQUFBRWZBSUFBQllBQUZSOEFnQUFGZ0FBQkhnQ0FBQVdBQUJVZUFJQUFCWUFBQVIw
QWdBQUZnQUFWSFFDQUFBVwpBQUFFY0FJQUFCWUFBRlJ3QWdBQUZnQUFCR3dDQUFBV0FBQlViQUlB
QUJZQUFBUm9BZ0FBRmdBQVZHZ0NBQUFXQUFBRVpBSUFBQllBCkFGUmtBZ0FBRmdBQUJHQUNBQUFX
QUFCVVlBSUFBQllBQUFSY0FnQUFGZ0FBVkZ3Q0FBQVdBQUFFV0FJQUFCWUFBRlJZQWdBQUZnQUEK
QkZRQ0FBQVdBQUJVVkFJQUFCWUFBQVJRQWdBQUZnQUFWRkFDQUFBV0FBQUVUQUlBQUJZQUFGUk1B
Z0FBRmdBQUJFZ0NBQUFXQUFCVQpTQUlBQUJZQUFBUkVBZ0FBRmdBQVZFUUNBQUFXQUFBRVFBSUFB
QllBQUZSQUFnQUFGZ0FBQkR3Q0FBQVdBQUJVUEFJQUFCWUFBQVE0CkFnQUFGZ0FBVkRnQ0FBQVdB
QUFFTkFJQUFCWUFBRlEwQWdBQUZnQUFCREFDQUFBV0FBQlVNQUlBQUJZQUFBUXNBZ0FBRmdBQVZD
d0MKQUFBV0FBQUVLQUlBQUJZQUFGUW9BZ0FBRmdBQUJDUUNBQUFXQUFCVUpBSUFBQllBQUFRZ0Fn
QUFGZ0FBVkNBQ0FBQVdBQUFFSEFJQQpBQllBQUZRY0FnQUFGZ0FBQkJnQ0FBQVdBQUJVR0FJQUFC
WUFBQVFVQWdBQUZnQUFWQlFDQUFBV0FBQUVFQUlBQUJZQUFGUVFBZ0FBCkZnQUFCQXdDQUFBV0FB
QlVEQUlBQUJZQUFBUUlBZ0FBRmdBQVZBZ0NBQUFXQUFBRUJBSUFBQllBQUZRRUFnQUFGZ0FBQkFB
Q0FBQVcKQUFCVUFBSUFBQllBQUFUOEFRQUFGZ0FBVlB3QkFBQVdBQUFFK0FFQUFCWUFBRlQ0QVFB
QUZnQUFCUFFCQUFBV0FBQlU5QUVBQUJZQQpBQVR3QVFBQUZnQUFWUEFCQUFBV0FBQUU3QUVBQUJZ
QUFGVHNBUUFBRmdBQUJPZ0JBQUFXQUFCVTZBRUFBQllBQUFUa0FRQUFGZ0FBClZPUUJBQUFXQUFB
RTRBRUFBQllBQUZUZ0FRQUFGZ0FBQk53QkFBQVdBQUJVM0FFQUFCWUFBQVRZQVFBQUZnQUFWTmdC
QUFBV0FBQUUKMUFFQUFCWUFBRlRVQVFBQUZnQUFCTkFCQUFBV0FBQlUwQUVBQUJZQUFBVE1BUUFB
RmdBQVZNd0JBQUFXQUFBRXlBRUFBQllBQUZUSQpBUUFBRmdBQUJNUUJBQUFXQUFCVXhBRUFBQllB
QUFUQUFRQUFGZ0FBVk1BQkFBQVdBQUFFdkFFQUFCWUFBRlM4QVFBQUZnQUFCTGdCCkFBQVdBQUJV
dUFFQUFCWUFBQVMwQVFBQUZnQUFWTFFCQUFBV0FBQUVzQUVBQUJZQUFGU3dBUUFBRmdBQUJLd0JB
QUFXQUFCVXJBRUEKQUJZQUFBU29BUUFBRmdBQVZLZ0JBQUFXQUFBRXBBRUFBQllBQUZTa0FRQUFG
Z0FBQktBQkFBQVdBQUJVb0FFQUFCWUFBQVNjQVFBQQpGZ0FBVkp3QkFBQVdBQUFFbUFFQUFCWUFB
RlNZQVFBQUZnQUFCRlFDQUFBWkFBQlVWQUlBQUJrQUFBUlFBZ0FBR1FBQVZGQUNBQUFaCkFBQUVU
QUlBQUJrQUFGUk1BZ0FBR1FBQUJFZ0NBQUFaQUFCVVNBSUFBQmtBQUFSRUFnQUFHUUFBVkVRQ0FB
QVpBQUFFUUFJQUFCa0EKQUZSQUFnQUFHUUFBQkR3Q0FBQVpBQUJVUEFJQUFCa0FBQVE0QWdBQUdR
QUFWRGdDQUFBWkFBQUVOQUlBQUJrQUFGUTBBZ0FBR1FBQQpCREFDQUFBWkFBQlVNQUlBQUJrQUFB
UXNBZ0FBR1FBQVZDd0NBQUFaQUFBRUtBSUFBQmtBQUZRb0FnQUFHUUFBQkNRQ0FBQVpBQUJVCkpB
SUFBQmtBQUFRZ0FnQUFHUUFBVkNBQ0FBQVpBQUFFSEFJQUFCa0FBRlFjQWdBQUdRQUFCQmdDQUFB
WkFBQlVHQUlBQUJrQUFBUVUKQWdBQUdRQUFWQlFDQUFBWkFBQUVFQUlBQUJrQUFGUVFBZ0FBR1FB
QUJBd0NBQUFaQUFCVURBSUFBQmtBQUFRSUFnQUFHUUFBVkFnQwpBQUFaQUFBRUJBSUFBQmtBQUZR
RUFnQUFHUUFBQkFBQ0FBQVpBQUJVQUFJQUFCa0FBQVQ4QVFBQUdRQUFWUHdCQUFBWkFBQUUrQUVB
CkFCa0FBRlQ0QVFBQUdRQUFCUFFCQUFBWkFBQlU5QUVBQUJrQUFBVHdBUUFBR1FBQVZQQUJBQUFa
QUFBRTdBRUFBQmtBQUZUc0FRQUEKR1FBQUJPZ0JBQUFaQUFCVTZBRUFBQmtBQUFUa0FRQUFHUUFB
Vk9RQkFBQVpBQUFFNEFFQUFCa0FBRlRnQVFBQUdRQUFCTndCQUFBWgpBQUJVM0FFQUFCa0FBQVRZ
QVFBQUdRQUFWTmdCQUFBWkFBQUUxQUVBQUJrQUFGVFVBUUFBR1FBQUJOQUJBQUFaQUFCVTBBRUFB
QmtBCkFBVE1BUUFBR1FBQVZNd0JBQUFaQUFBRXlBRUFBQmtBQUZUSUFRQUFHUUFBQk1RQkFBQVpB
QUJVeEFFQUFCa0FBQVRBQVFBQUdRQUEKVk1BQkFBQVpBQUFFdkFFQUFCa0FBRlM4QVFBQUdRQUFC
TGdCQUFBWkFBQlV1QUVBQUJrQUFBUzBBUUFBR1FBQVZMUUJBQUFaQUFBRQpzQUVBQUJrQUFGU3dB
UUFBR1FBQUJLd0JBQUFaQUFCVXJBRUFBQmtBQUFTb0FRQUFHUUFBVktnQkFBQVpBQUFFcEFFQUFC
a0FBRlNrCkFRQUFHUUFBQktBQkFBQVpBQUJVb0FFQUFCa0FBQVNjQVFBQUdRQUFWSndCQUFBWkFB
QUVtQUVBQUJrQUFGU1lBUUFBR1FBQUJKUUIKQUFBWkFBQlVsQUVBQUJrQUFBU1FBUUFBR1FBQVZK
QUJBQUFaQUFBRWpBRUFBQmtBQUZTTUFRQUFHUUFBQklnQkFBQVpBQUJVaUFFQQpBQmtBQUFTRUFR
QUFHUUFBVklRQkFBQVpBQUFFZ0FFQUFCa0FBRlNBQVFBQUdRQUFCSHdCQUFBWkFBQlVmQUVBQUJr
QUFBUjRBUUFBCkdRQUFWSGdCQUFBWkFBQUV3QUlBQUFFQUFBYWdBZ0FBQVFBQUJvQUNBQUFCQUFB
R1lBSUFBQUVBQUFaQUFnQUFBUUFBQmlBQ0FBQUIKQUFBR0FBSUFBQUVBQUFiZ0FRQUFBUUFBQnNB
QkFBQUJBQUFHb0FFQUFBRUFBQWFBQVFBQUFRQUFCbUFCQUFBQkFBQUdRQUVBQUFFQQpBQVlnQVFB
QUFRQUFCZ0FCQUFBQkFBQUc0QUFBQUFFQUFBYkFBQUFBQVFBQUJxQUFBQUFCQUFBR2dBQUFBQUVB
QUFaZ0FBQUFBUUFBCkJrQUFBQUFCQUFBR0lBQUFBQUVBQUFZQUFBQUFBUUFBQms4RkFBQU9Bd0FB
ZUEwQUFBQUFBQUJ4QlFBQURnTUFBSUFOQUFBQUFBQUEKalFVQUFBNERBQUNJRFFBQUFBQUFBS2NG
QUFBT0F3QUFrQTBBQUFBQUFBREJCUUFBRGdvQUFCbHlBQUFBQUFBQTl3VUFBQTRLQUFBWQpjZ0FB
QUFBQUFDc0dBQUFPQ2dBQU1ISUFBQUFBQUFCVEJnQUFEZ2dBQUVVVEFBQUFBQUFBWEFZQUFBNElB
QUJJRWdBQUFBQUFBR1VHCkFBQU9DQUFBZGhNQUFBQUFBQUNEQmdBQURnZ0FBTUVTQUFBQUFBQUFq
QVlBQUE0SUFBQ0RFd0FBQUFBQUFKVUdBQUFPQXdBQW1BMEEKQUFBQUFBQ3ZCZ0FBRGdNQUFLQU5B
QUFBQUFBQTRRWUFBQTRCQUFCQUNRQUFBQUFBQUJVSEFBQU9DQUFBYXhJQUFBQUFBQUFlQndBQQpE
Z29BQUNCeUFBQUFBQUFBVkFjQUFBNEJBQUR3Q1FBQUFBQUFBSXdIQUFBT0NBQUFsQklBQUFBQUFB
REtCd0FBRGdnQUFCQVRBQUFBCkFBQUEwd2NBQUE0QkFBQUFDZ0FBQUFBQUFPb0hBQUFPQ0FBQUdC
TUFBQUFBQUFEekJ3QUFEZ29BQUNoeUFBQUFBQUFBQ2dnQUFBNEIKQUFDZ0NnQUFBQUFBQUNVSUFB
QU9DQUFBSkJNQUFBQUFBQUJHQ0FBQURnZ0FBRFFUQUFBQUFBQUFUd2dBQUE0QkFBQ3dDZ0FBQUFB
QQpBR1lJQUFBT0NBQUFsQk1BQUFBQUFBQnZDQUFBRGdvQUFEaHlBQUFBQUFBQWhnZ0FBQTRCQUFC
UUN3QUFBQUFBQUtFSUFBQU9DQUFBCm9CTUFBQUFBQUFEQ0NBQUFEZ2dBQUxBVEFBQUFBQUFBeXdn
QUFBNEJBQUJnQ3dBQUFBQUFBT0lJQUFBT0NBQUF3Uk1BQUFBQUFBRHIKQ0FBQURnb0FBRUJ5QUFB
QUFBQUFBZ2tBQUE0QkFBQUFEQUFBQUFBQUFCMEpBQUFPQ0FBQXpSTUFBQUFBQUFBK0NRQUFEZ2dB
QU4wVApBQUFBQUFBQVJ3a0FBQTRCQUFBUURBQUFBQUFBQUdBSkFBQU9DQUFBN2hNQUFBQUFBQUJw
Q1FBQURnb0FBRWh5QUFBQUFBQUFnZ2tBCkFBNEJBQUN3REFBQUFBQUFBSjhKQUFBT0NBQUEvQk1B
QUFBQUFBRENDUUFBRGdnQUFBNFVBQUFBQUFBQXl3a0FBQTRCQUFEQURBQUEKQUFBQUFPb0pBQUFP
Q0FBQUlSUUFBQUFBQUFEekNRQUFEZ29BQUZCeUFBQUFBQUFBRWdvQUFBNEJBQUJnRFFBQUFBQUFB
RFVLQUFBTwpDQUFBTlJRQUFBQUFBQUJlQ2dBQURnZ0FBRTBVQUFBQUFBQUFhQW9BQUE0RUFBQ29E
UUFBQUFBQUFINEtBQUFPQkFBQXJnMEFBQUFBCkFBQ1ZDZ0FBRGdRQUFMTU5BQUFBQUFBQXJBb0FB
QTRFQUFETkRRQUFBQUFBQU1NS0FBQU9CQUFBMGcwQUFBQUFBQURhQ2dBQURnZ0EKQU9nUUFBQUFB
QUFBNFFvQUFBNEVBQURoRFFBQUFBQUFBUGdLQUFBT0JBQUE3UTBBQUFBQUFBQVFDd0FBRGdnQUFQ
Y1FBQUFBQUFBQQpHUXNBQUE0RUFBRDNEUUFBQUFBQUFERUxBQUFPQkFBQUNnNEFBQUFBQUFCSkN3
QUFEZ1FBQUJzT0FBQUFBQUFBWVFzQUFBNElBQUFRCkVRQUFBQUFBQUdvTEFBQU9DQUFBS1JFQUFB
QUFBQUJ6Q3dBQURnZ0FBRG9SQUFBQUFBQUFmQXNBQUE0SUFBQlFFUUFBQUFBQUFJVUwKQUFBT0NB
QUFjQkVBQUFBQUFBQ09Dd0FBRGdRQUFDZ09BQUFBQUFBQXBnc0FBQTRFQUFBOERnQUFBQUFBQUw0
TEFBQU9DQUFBanhFQQpBQUFBQUFESEN3QUFEZ1FBQUZBT0FBQUFBQUFBM3dzQUFBNEVBQUJnRGdB
QUFBQUFBUGNMQUFBT0JBQUFlQTRBQUFBQUFBQVBEQUFBCkRnZ0FBSlFSQUFBQUFBQUFHQXdBQUE0
RUFBQ0hEZ0FBQUFBQUFEQU1BQUFPQkFBQWxRNEFBQUFBQUFCSURBQUFEZ1FBQUxJT0FBQUEKQUFB
QVlBd0FBQTRJQUFDcEVRQUFBQUFBQUdrTUFBQU9DQUFBcmhFQUFBQUFBQUJ5REFBQURnZ0FBTE1S
QUFBQUFBQUFld3dBQUE0SQpBQUM0RVFBQUFBQUFBSVFNQUFBT0JBQUF6UTRBQUFBQUFBQ2NEQUFB
RGdRQUFOTU9BQUFBQUFBQXRBd0FBQTRJQUFDOUVRQUFBQUFBCkFMME1BQUFPQ0FBQTZoRUFBQUFB
QUFER0RBQUFEZ2dBQUJVU0FBQUFBQUFBend3QUFBNEVBQURsRGdBQUFBQUFBT2NNQUFBT0JBQUEK
N2c0QUFBQUFBQUQvREFBQURnUUFBUG9PQUFBQUFBQUFGdzBBQUE0RUFBQU1Ed0FBQUFBQUFDOE5B
QUFPQkFBQUZBOEFBQUFBQUFCSApEUUFBRGdRQUFFUVBBQUFBQUFBQVh3MEFBQTRFQUFCTUR3QUFB
QUFBQUhjTkFBQU9CQUFBV0E4QUFBQUFBQUNQRFFBQURnUUFBRzBQCkFBQUFBQUFBcHcwQUFBNEVB
QUNJRHdBQUFBQUFBTDhOQUFBT0d3QUFZRzRBQUFBQUFBREpEUUFBRGhzQUFEaHdBQUFBQUFBQUFB
NEEKQUE0YkFBQmdjQUFBQUFBQUFEc09BQUFPR3dBQWlIQUFBQUFBQUFCVkRnQUFEaHNBQUxCd0FB
QUFBQUFBY3c0QUFBNGJBQURZY0FBQQpBQUFBQUkwT0FBQU9Hd0FBQUhFQUFBQUFBQUNyRGdBQURo
c0FBQ2h4QUFBQUFBQUF4UTRBQUE0YkFBQlFjUUFBQUFBQUFPTU9BQUFPCkd3QUFlSEVBQUFBQUFB
RC9EZ0FBRGhzQUFLQnhBQUFBQUFBQUh3OEFBQTRiQUFESWNRQUFBQUFBQUVFUEFBQU9Hd0FBOEhF
QUFBQUEKQUFBQkFBQUFId0VBQUFBQUFBQUFBQUFBdFFNQUFCOGJBQUI0YmdBQUFBQUFBRWtBQUFB
ZkFRQUFZQUFBQUFBQUFBRFhBd0FBSHhzQQpBS0J1QUFBQUFBQUFKUUlBQUI4QkFBQndCd0FBQUFB
QUFKSUVBQUFmR3dBQWNHOEFBQUFBQUFDcEFnQUFId0VBQU5BSUFBQUFBQUFBCkFnVUFBQjhiQUFE
b2J3QUFBQUFBQUlVQ0FBQWZBUUFBY0FnQUFBQUFBQURiQkFBQUh4c0FBTUJ2QUFBQUFBQUFZd0lB
QUI4QkFBQVEKQ0FBQUFBQUFBTFlFQUFBZkd3QUFtRzhBQUFBQUFBQmhBQUFBSHdFQUFQQUNBQUFB
QUFBQThnTUFBQjhiQUFESWJnQUFBQUFBQU1ZQwpBQUFmQVFBQU1Ba0FBQUFBQUFBaUJRQUFIeHNB
QUJCd0FBQUFBQUFBTVFFQUFCOEJBQUNBQkFBQUFBQUFBRnNFQUFBZkd3QUFRRzhBCkFBQUFBQUFO
QVFBQUh3RUFBREFFQUFBQUFBQUFOQVFBQUI4YkFBQVlid0FBQUFBQUFLWUFBQUFmQVFBQVVBTUFB
QUFBQUFBUkJBQUEKSHhzQUFQQnVBQUFBQUFBQUlBQUFBQjhGZ0FDZ0R3QUFBQUFBQU9jQkFBQWZC
WUFBOEE4QUFBQUFBQUJsQVFBQUh3V0FBT0FQQUFBQQpBQUFBeGdBQUFCOEZnQURBRHdBQUFBQUFB
T29BQUFBZkJZQUEwQThBQUFBQUFBQUlBZ0FBSHdXQUFBQVFBQUFBQUFBQWZRQUFBQjhGCmdBQ3dE
d0FBQUFBQUFKVUJBQUFCQUFBQUFBQUFBQUFBQUFEVUFRQUFBUUFBQUFBQUFBQUFBQUFBbmdNQUFB
RUFBQUFBQUFBQUFBQUEKQUNjREFBQUJBQUFBQUFBQUFBQUFBQUJmQXdBQUFRQUFBQUFBQUFBQUFB
QUFmQU1BQUFFQUFBQUFBQUFBQUFBQUFEMERBQUFCQUFBQQpBQUFBQUFBQUFBQlZBZ0FBQVFBQUFB
QUFBQUFBQUFBQVJnSUFBQUVBQUFBQUFBQUFBQUFBQUU0Q0FBQUJBQUFBQUFBQUFBQUFBQUNBCkFR
QUFBUUFBQUFBQUFBQUFBQUFBOEFJQUFBRUFBQUFBQUFBQUFBQUFBQVFEQUFBQkFBQUFBQUFBQUFB
QUFBQTdBQUFBQVFBQUFBQUEKQUFBQUFBQUFFd01BQUFFQUFBQUFBQUFBQUFBQUFBQmZWMHREY21W
aGRHVk5aV1JwWVZWSlFtRmphMmR5YjNWdVpGWnBaWGNBYkY5dgpZbXBqWDIxeloxTmxibVJmWm1s
NGRYQmZZV3hzYjJNQVgyOWlhbU5mYlhOblUyVnVaQUJmVjB0RGNtVmhkR1ZOWldScFlWVkpRMjl1
CmRISnZiQUJmVjB0UlZFMXZkbWxsU0dGelEyeHZjMlZrUTJGd2RHbHZibk1BYkY5dlltcGpYMjF6
WjFObGJtUmZabWw0ZFhCZmNtVnoKY0c5dVpITlViMU5sYkdWamRHOXlYd0JmVjB0UlZFMXZkbWxs
VTJWMFUyaHZkME5zYjNObFpFTmhjSFJwYjI1ekFHeGZiMkpxWTE5dApjMmRUWlc1a1gyWnBlSFZ3
WDI5aWFtVmpkRUYwU1c1a1pYaGZBR3hmYjJKcVkxOXRjMmRUWlc1a1gyWnBlSFZ3WDI5aWFtVmpk
RVp2CmNrdGxlVjhBWDFkTFVWUk5iM1pwWlZObGJHVmpkRkJ5WldabGNuSmxaRUZzZEdWeWJtRjBa
WE1BWDFkTFVWUk5iM1pwWlZObGJHVmoKZEZCeVpXWmxjbkpsWkVGc2RHVnlibUYwWlZSeVlXTnJS
bTl5VFdWa2FXRlVlWEJsQUd4ZmIySnFZMTl0YzJkVFpXNWtYMlpwZUhWdwpYMk52ZFc1MEFGOXJR
MFpCYkd4dlkyRjBiM0pFWldaaGRXeDBBRjlEUmt4dlkyRnNaVU55WldGMFpVTmhibTl1YVdOaGJF
eHZZMkZzClpVbGtaVzUwYVdacFpYSkdjbTl0VTJOeWFYQjBUV0Z1WVdkbGNrTnZaR1Z6QUY5RFJr
MWhhMlZEYjJ4c1pXTjBZV0pzWlFCc1gyOWkKYW1OZmJYTm5VMlZ1WkY5bWFYaDFjRjloZFhSdmNt
VnNaV0Z6WlFCc1gyOWlhbU5mYlhOblUyVnVaRjltYVhoMWNGOXlaV3hsWVhObApBRjlYUzAxbFpH
bGhRMjl1ZEhKdmJHeGxjbFJvWlcxbFFYWmhhV3hoWW14bEFGOWtiRzl3Wlc0QVgyUnNjM2x0QUY5
ZlgyRnpjMlZ5CmRGOXlkRzRBWDFkTFVWUkhaWFJUYVhSbGMwbHVUV1ZrYVdGRWIzZHViRzloWkVO
aFkyaGxBRjlYUzFGVVEyeGxZWEpOWldScFlVUnYKZDI1c2IyRmtRMkZqYUdWR2IzSlRhWFJsQUY5
WFMxRlVRMnhsWVhKTlpXUnBZVVJ2ZDI1c2IyRmtRMkZqYUdVQVgxZExVVlJOYjNacApaVTFoZUZS
cGJXVk1iMkZrWldSRGFHRnVaMlZPYjNScFptbGpZWFJwYjI0QVgyOWlhbU5mWVhOemFXZHVYMmRz
YjJKaGJBQmZiMkpxClkxOW5aWFJEYkdGemN3QmZiMkpxWTE5dGMyZFRaVzVrWDJacGVIVndBRjlQ
UWtwRFgwTk1RVk5UWHlSZlRsTkpiV0ZuWlFCZlgxOUQKUmtOdmJuTjBZVzUwVTNSeWFXNW5RMnho
YzNOU1pXWmxjbVZ1WTJVQVgwOUNTa05mUTB4QlUxTmZKRjlPVTAxMWRHRmliR1ZCY25KaAplUUJm
VDBKS1ExOURURUZUVTE4a1gwNVRUWFYwWVdKc1pVUnBZM1JwYjI1aGNua0FYMDlDU2tOZlEweEJV
MU5mSkY5T1UwSjFibVJzClpRQmZWMHREY21WaGRHVk5aV1JwWVZWSlFtRmphMmR5YjNWdVpGWnBa
WGN1WldnQVgxZExRM0psWVhSbFRXVmthV0ZWU1VOdmJuUnkKYjJ3dVpXZ0FYMWRMVVZSTmIzWnBa
VWhoYzBOc2IzTmxaRU5oY0hScGIyNXpMbVZvQUY5WFMxRlVUVzkyYVdWVFpYUlRhRzkzUTJ4dgpj
MlZrUTJGd2RHbHZibk11WldnQVgxZExVVlJOYjNacFpWTmxiR1ZqZEZCeVpXWmxjbkpsWkVGc2RH
VnlibUYwWlhNdVpXZ0FYMWRMClVWUk5iM1pwWlZObGJHVmpkRkJ5WldabGNuSmxaRUZzZEdWeWJt
RjBaVlJ5WVdOclJtOXlUV1ZrYVdGVWVYQmxMbVZvQUY5WFMwMWwKWkdsaFEyOXVkSEp2Ykd4bGNs
Um9aVzFsUVhaaGFXeGhZbXhsTG1Wb0FGOVhTMUZVUjJWMFUybDBaWE5KYmsxbFpHbGhSRzkzYm14
dgpZV1JEWVdOb1pTNWxhQUJmVjB0UlZFTnNaV0Z5VFdWa2FXRkViM2R1Ykc5aFpFTmhZMmhsUm05
eVUybDBaUzVsYUFCZlYwdFJWRU5zClpXRnlUV1ZrYVdGRWIzZHViRzloWkVOaFkyaGxMbVZvQUY5
WFMxRlVUVzkyYVdWTllYaFVhVzFsVEc5aFpHVmtRMmhoYm1kbFRtOTAKYVdacFkyRjBhVzl1TG1W
b0FGOWZXa3d5TjJkbGRGRlVTRlZFUW1GamEyZHliM1Z1WkZacFpYZERiR0Z6Y3dCZlgxcE1NakZu
WlhSUgpWRWhWUkZScGJXVnNhVzVsUTJ4aGMzTUFYMTlhVERFNVoyVjBVVlJJVlVSVGJHbGtaWEpE
YkdGemN3QmZYMXBNTVRsblpYUlJWRWhWClJFSjFkSFJ2YmtOc1lYTnpBRjlmV2tkV1dqTXhWMHRO
WldScFlVTnZiblJ5YjJ4c1pYSlVhR1Z0WlVGMllXbHNZV0pzWlVVeE1XbHoKUVhaaGFXeGhZbXhs
QUY5Zldsb3pNVmRMVFdWa2FXRkRiMjUwY205c2JHVnlWR2hsYldWQmRtRnBiR0ZpYkdWRk1URnBj
MEYyWVdscwpZV0pzWlFCZlgxcGFUREV5VVZSTGFYUk1hV0p5WVhKNWRrVXhObVp5WVcxbGQyOXlh
MHhwWW5KaGNua0FURjh1YzNSeU9URUFURjh1CmMzUnlOemNBVEY5ZlgyWjFibU5mWHk1Zldrd3hN
bEZVUzJsMFRHbGljbUZ5ZVhZQVRGOHVjM1J5T0RjQVRGOHVjM1J5T1RJQVgxOWEKVERFNVoyVjBV
VlJWZEdsc2FYUnBaWE5EYkdGemN3QmZYMXBNTkROblpYUlJWRTF2ZG1sbFRHOWhaR1ZrVW1GdVoy
VnpSR2xrUTJoaApibWRsVG05MGFXWnBZMkYwYVc5dUFGOWZXa3cwTkdsdWFYUlJWRTF2ZG1sbFRH
OWhaR1ZrVW1GdVoyVnpSR2xrUTJoaGJtZGxUbTkwCmFXWnBZMkYwYVc5dWRnQk1YeTV6ZEhJNE5n
QmZYMXBNTkRkd2IybHVkR1Z5VVZSTmIzWnBaVXh2WVdSbFpGSmhibWRsYzBScFpFTm8KWVc1blpV
NXZkR2xtYVdOaGRHbHZiZ0JmWDFwTU5EaFJWRTF2ZG1sbFRHOWhaR1ZrVW1GdVoyVnpSR2xrUTJo
aGJtZGxUbTkwYVdacApZMkYwYVc5dVJuVnVZM1JwYjI1MkFFeGZYMTltZFc1algxOHVYMXBNTkRS
cGJtbDBVVlJOYjNacFpVeHZZV1JsWkZKaGJtZGxjMFJwClpFTm9ZVzVuWlU1dmRHbG1hV05oZEds
dmJuWUFURjh1YzNSeU9EZ0FYMTlhVERFMWFXNXBkRkZVVlhScGJHbDBhV1Z6ZGdCTVh5NXoKZEhJ
NE9RQmZYMXBNTVRaamJHRnpjMUZVVlhScGJHbDBhV1Z6QUY5Zldrd3hPVkZVVlhScGJHbDBhV1Z6
Um5WdVkzUnBiMjUyQUV4ZgpYMTltZFc1algxOHVYMXBNTVRWcGJtbDBVVlJWZEdsc2FYUnBaWE4y
QUV4ZkxuTjBjamt3QUY5Zldrd3hOV2x1YVhSUlZFaFZSRUoxCmRIUnZibllBVEY4dWMzUnlPVE1B
WDE5YVRERTJZMnhoYzNOUlZFaFZSRUoxZEhSdmJnQmZYMXBNTVRsUlZFaFZSRUoxZEhSdmJrWjEK
Ym1OMGFXOXVkZ0JNWDE5ZlpuVnVZMTlmTGw5YVRERTFhVzVwZEZGVVNGVkVRblYwZEc5dWRnQk1Y
eTV6ZEhJNU5BQmZYMXBNTVRWcApibWwwVVZSSVZVUlRiR2xrWlhKMkFFeGZMbk4wY2prMUFGOWZX
a3d4Tm1Oc1lYTnpVVlJJVlVSVGJHbGtaWElBWDE5YVRERTVVVlJJClZVUlRiR2xrWlhKR2RXNWpk
R2x2Ym5ZQVRGOWZYMloxYm1OZlh5NWZXa3d4TldsdWFYUlJWRWhWUkZOc2FXUmxjbllBVEY4dWMz
UnkKT1RZQVgxOWFUREUzYVc1cGRGRlVTRlZFVkdsdFpXeHBibVYyQUV4ZkxuTjBjamszQUY5Zldr
d3hPR05zWVhOelVWUklWVVJVYVcxbApiR2x1WlFCZlgxcE1NakZSVkVoVlJGUnBiV1ZzYVc1bFJu
VnVZM1JwYjI1MkFFeGZYMTltZFc1algxOHVYMXBNTVRkcGJtbDBVVlJJClZVUlVhVzFsYkdsdVpY
WUFURjh1YzNSeU9UZ0FYMTlhVERJemFXNXBkRkZVU0ZWRVFtRmphMmR5YjNWdVpGWnBaWGQyQUV4
ZkxuTjAKY2prNUFGOWZXa3d5TkdOc1lYTnpVVlJJVlVSQ1lXTnJaM0p2ZFc1a1ZtbGxkd0JmWDFw
TU1qZFJWRWhWUkVKaFkydG5jbTkxYm1SVwphV1YzUm5WdVkzUnBiMjUyQUV4ZlgxOW1kVzVqWDE4
dVgxcE1Nak5wYm1sMFVWUklWVVJDWVdOclozSnZkVzVrVm1sbGQzWUFURjh1CmMzUnlNVEF3QUV4
ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh3Qk1YMDlDU2tOZlRVVlVTRjlXUVZKZlRrRk5SVjh4
QUV4ZlQwSksKUTE5TlJWUklYMVpCVWw5T1FVMUZYeklBVEY5UFFrcERYMDFGVkVoZlZrRlNYMDVC
VFVWZk5BQk1YMDlDU2tOZlRVVlVTRjlXUVZKZgpUa0ZOUlY4MkFHeGZMbk4wY2dCTVgwOUNTa05m
VFVWVVNGOVdRVkpmVGtGTlJWODRBRXhmVDBKS1ExOU5SVlJJWDFaQlVsOU9RVTFGClh6RXdBR3hm
TG5OMGNqRXlBRXhmVDBKS1ExOU5SVlJJWDFaQlVsOU9RVTFGWHpFMEFFeGZUMEpLUTE5TlJWUklY
MVpCVWw5T1FVMUYKWHpFMkFFeGZUMEpLUTE5TlJWUklYMVpCVWw5T1FVMUZYekU0QUd4ZkxuTjBj
akl3QUd4ZkxuTjBjakl5QUd4ZkxuTjBjakkwQUd4ZgpMbk4wY2pJMkFHeGZMbk4wY2pJNEFFeGZU
MEpLUTE5TlJWUklYMVpCVWw5T1FVMUZYek13QUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPClFVMUZY
ek15QUd4ZkxuTjBjak16QUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh6TTFBRXhmVDBKS1Ex
OU5SVlJJWDFaQlVsOU8KUVUxRlh6TTNBRXhmVDBKS1ExOU5SVlJJWDFaQlVsOU9RVTFGWHpNNUFH
eGZMbk4wY2pRd0FFeGZUMEpLUTE5TlJWUklYMVpCVWw5TwpRVTFGWHpReUFFeGZUMEpLUTE5TlJW
UklYMVpCVWw5T1FVMUZYelF6QUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh6UTFBR3hmCkxu
TjBjalEzQUd4ZkxuTjBjalE1QUd4ZkxuTjBjalV4QUd4ZkxuTjBjalV6QUV4ZlQwSktRMTlOUlZS
SVgxWkJVbDlPUVUxRlh6VTEKQUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh6VTNBR3hmTG5O
MGNqWXdBR3hmTG5OMGNqWXlBR3hmTG5OMGNqWTBBRXhmVDBKSwpRMTlOUlZSSVgxWkJVbDlPUVUx
Rlh6WTJBRXhmVDBKS1ExOU5SVlJJWDFaQlVsOU9RVTFGWHpZNEFFeGZUMEpLUTE5TlJWUklYMVpC
ClVsOU9RVTFGWHpZNUFFeGZUMEpLUTE5TlJWUklYMVpCVWw5T1FVMUZYemN5QUV4ZlQwSktRMTlO
UlZSSVgxWkJVbDlPUVUxRlh6YzAKQUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh6YzJBRXhm
VDBKS1ExOU5SVlJJWDFaQlVsOU9RVTFGWHpjNEFFeGZUMEpLUTE5TgpSVlJJWDFaQlVsOU9RVTFG
WHpnd0FFeGZUMEpLUTE5TlJWUklYMVpCVWw5T1FVMUZYemd5QUV4ZlQwSktRMTlOUlZSSVgxWkJV
bDlPClFVMUZYemcwQUVWSVgyWnlZVzFsTUFCZlgxcE1ORFJwYm1sMFVWUk5iM1pwWlV4dllXUmxa
RkpoYm1kbGMwUnBaRU5vWVc1blpVNXYKZEdsbWFXTmhkR2x2Ym5ZdVpXZ0FYMTlhVERRNFVWUk5i
M1pwWlV4dllXUmxaRkpoYm1kbGMwUnBaRU5vWVc1blpVNXZkR2xtYVdOaApkR2x2YmtaMWJtTjBh
Vzl1ZGk1bGFBQmZYMXBNTVRWcGJtbDBVVlJWZEdsc2FYUnBaWE4yTG1Wb0FGOWZXa3d4T1ZGVVZY
UnBiR2wwCmFXVnpSblZ1WTNScGIyNTJMbVZvQUY5Zldrd3hOV2x1YVhSUlZFaFZSRUoxZEhSdmJu
WXVaV2dBWDE5YVRERTVVVlJJVlVSQ2RYUjAKYjI1R2RXNWpkR2x2Ym5ZdVpXZ0FYMTlhVERFMWFX
NXBkRkZVU0ZWRVUyeHBaR1Z5ZGk1bGFBQmZYMXBNTVRsUlZFaFZSRk5zYVdSbApja1oxYm1OMGFX
OXVkaTVsYUFCZlgxcE1NVGRwYm1sMFVWUklWVVJVYVcxbGJHbHVaWFl1WldnQVgxOWFUREl4VVZS
SVZVUlVhVzFsCmJHbHVaVVoxYm1OMGFXOXVkaTVsYUFCZlgxcE1Nak5wYm1sMFVWUklWVVJDWVdO
clozSnZkVzVrVm1sbGQzWXVaV2dBWDE5YVRESTMKVVZSSVZVUkNZV05yWjNKdmRXNWtWbWxsZDBa
MWJtTjBhVzl1ZGk1bGFBQUFJekV2TWpnZ0lDQWdJQ0FnSUNBZ0lERXpOekUzTnpZdwpNelFnSURV
d01TQWdJREl3SUNBZ0lERXdNRFkwTkNBZ05ERXlNRFFnSUNBZ0lHQUtVR3gxWjJsdVFteGhZMnRz
YVhOMExtOEFBQUFBCkFBQUFBQUFBQU0vNjdmNEhBQUFCQXdBQUFBRUFBQUFEQUFBQXdBa0FBQUFn
QUFBQUFBQUFHUUFBQUZnSkFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFaZ0FB
QUFBQUFPQUpBQUFBQUFBQTJHVUFBQUFBQUFBSEFBQUFCd0FBQUIwQUFBQUFBQUFBWDE5MApaWGgw
QUFBQUFBQUFBQUFBQUY5ZlZFVllWQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTHNOQUFBQUFBQUE0
QWtBQUFRQUFBQzRid0FBCnhRQUFBQUFFQUlBQUFBQUFBQUFBQUFBQUFBQmZYMmRqWTE5bGVHTmxj
SFJmZEdGaVgxOVVSVmhVQUFBQUFBQUFBQUFBQUx3TkFBQUEKQUFBQUxBQUFBQUFBQUFDY0Z3QUFB
Z0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRjlmWW5OekFBQUFBQUFBQUFBQQpB
QUJmWDBSQlZFRUFBQUFBQUFBQUFBQUEyR1VBQUFBQUFBQW9BQUFBQUFBQUFBQUFBQUFEQUFBQUFB
QUFBQUFBQUFBQkFBQUFBQUFBCkFBQUFBQUFBQUFBQVgxOWpjM1J5YVc1bkFBQUFBQUFBQUY5ZlZF
VllWQUFBQUFBQUFBQUFBQURvRFFBQUFBQUFBRDRCQUFBQUFBQUEKeUJjQUFBQUFBQUFBQUFBQUFB
QUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQmZYMjlpYW1OZlkyeGhjM051WVcxbFgxOVVSVmhVQUFB
QQpBQUFBQUFBQUFDWVBBQUFBQUFBQUNBQUFBQUFBQUFBR0dRQUFBQUFBQUFBQUFBQUFBQUFBQWdB
QUFBQUFBQUFBQUFBQUFBQUFBRjlmClkyOXVjM1FBQUFBQUFBQUFBQUJmWDBSQlZFRUFBQUFBQUFB
QUFBQUFNQThBQUFBQUFBQ2dBQUFBQUFBQUFCQVpBQUFFQUFBQTRIVUEKQUEwQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQVgxOXZZbXBqWDJOc1lYTnpjbVZtYzE5ZlJFRlVRUUFBQUFBQUFBQUFBQURR
RHdBQQpBQUFBQURBQUFBQUFBQUFBc0JrQUFBTUFBQUJJZGdBQUJnQUFBQUFBQUJBQUFBQUFBQUFB
QUFBQUFBQmZYMjlpYW1OZmJXVjBhRzVoCmJXVUFYMTlVUlZoVUFBQUFBQUFBQUFBQUFBQVFBQUFB
QUFBQW5RRUFBQUFBQUFEZ0dRQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUEKQUFBQUFBQUFBQUFB
QUY5ZmIySnFZMTl0YzJkeVpXWnpBQUJmWDBSQlZFRUFBQUFBQUFBQUFBQUFvQkVBQUFBQUFBQ0FB
QUFBQUFBQQpBSUFiQUFBRUFBQUFlSFlBQUJBQUFBQUxBQUFBQUFBQUFBQUFBQUFBQUFBQVgxOWpa
bk4wY21sdVp3QUFBQUFBQUY5ZlJFRlVRUUFBCkFBQUFBQUFBQUFBZ0VnQUFBQUFBQU1BQUFBQUFB
QUFBQUJ3QUFBUUFBQUQ0ZGdBQURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmYKWDI5aWFtTmZj
MlZzY21WbWN3QUFYMTlFUVZSQkFBQUFBQUFBQUFBQUFPQVNBQUFBQUFBQWVBQUFBQUFBQUFEQUhB
QUFBd0FBQUZoMwpBQUFQQUFBQUJRQUFFQUFBQUFBQUFBQUFBQUFBQUY5ZmIySnFZMTlwYldGblpX
bHVabTlmWDBSQlZFRUFBQUFBQUFBQUFBQUFXQk1BCkFBQUFBQUFJQUFBQUFBQUFBRGdkQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQVgxOWxhRjltY21GdFpRQUEKQUFBQUFG
OWZWRVZZVkFBQUFBQUFBQUFBQUFCZ0V3QUFBQUFBQUlnREFBQUFBQUFBUUIwQUFBTUFBQURRZHdB
QUFRQUFBQXNBQUdnQQpBQUFBQUFBQUFBQUFBQUJmWDJSaGRHRUFBQUFBQUFBQUFBQUFYMTlFUVZS
QkFBQUFBQUFBQUFBQUFPZ1dBQUFBQUFBQUFBQUFBQUFBCkFBRElJQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUY5ZlpHVmlkV2RmYVc1bWJ3QUFBQUJmWDBSWFFWSkcKQUFB
QUFBQUFBQUFBNkJZQUFBQUFBQUFYRmdBQUFBQUFBTWdnQUFBQUFBQUEySGNBQUVVQUFBQUFBQUFD
QUFBQUFBQUFBQUFBQUFBQQpYMTlrWldKMVoxOWhZbUp5WlhZQUFGOWZSRmRCVWtZQUFBQUFBQUFB
QUFEL0xBQUFBQUFBQUdjRUFBQUFBQUFBM3pZQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBSUFBQUFB
QUFBQUFBQUFBQUJmWDJSbFluVm5YMkZ5WVc1blpYTUFYMTlFVjBGU1JnQUFBQUFBQUFBQUFHWXgK
QUFBQUFBQUFBQUFBQUFBQUFBQkdPd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFB
QUFBQUY5ZlpHVmlkV2RmYldGagphVzVtYndCZlgwUlhRVkpHQUFBQUFBQUFBQUFBWmpFQUFBQUFB
QUFBQUFBQUFBQUFBRVk3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDCkFBQUFBQUFBQUFBQUFBQUFY
MTlrWldKMVoxOXNhVzVsQUFBQUFGOWZSRmRCVWtZQUFBQUFBQUFBQUFCbU1RQUFBQUFBQUF3RUFB
QUEKQUFBQVJqc0FBQUFBQUFBQWVnQUFBUUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUJmWDJSbFlu
Vm5YMnh2WXdBQUFBQUFYMTlFVjBGUwpSZ0FBQUFBQUFBQUFBSEkxQUFBQUFBQUFsUWtBQUFBQUFB
QlNQd0FBQUFBQUFBaDZBQUNxQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBCkFGOWZaR1ZpZFdkZmNI
VmlkSGx3WlhOZlgwUlhRVkpHQUFBQUFBQUFBQUFBQno4QUFBQUFBQURiQVFBQUFBQUFBT2RJQUFB
QUFBQUEKQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFYMTlrWldKMVoxOXpkSElBQUFB
QUFGOWZSRmRCVWtZQUFBQUFBQUFBQUFEaQpRQUFBQUFBQUFFc1JBQUFBQUFBQXdrb0FBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUJmWDJSbFluVm5YM0poCmJtZGxjd0FBWDE5
RVYwRlNSZ0FBQUFBQUFBQUFBQzFTQUFBQUFBQUE0QUlBQUFBQUFBQU5YQUFBQUFBQUFGaC9BQUJH
QUFBQUFBQUEKQWdBQUFBQUFBQUFBQUFBQUFGOWZaR1ZpZFdkZmFXNXNhVzVsWkFCZlgwUlhRVkpH
QUFBQUFBQUFBQUFBRFZVQUFBQUFBQUFBQVFBQQpBQUFBQU8xZUFBQUFBQUFBaUlFQUFBNEFBQUFB
QUFBQ0FBQUFBQUFBQUFBQUFBQUFYMTloY0hCc1pWOXVZVzFsY3dBQUFGOWZSRmRCClVrWUFBQUFB
QUFBQUFBQU5WZ0FBQUFBQUFQQUVBQUFBQUFBQTdWOEFBQUFBQUFENGdRQUFXQUFBQUFBQUFBSUFB
QUFBQUFBQUFBQUEKQUFCZlgyRndjR3hsWDI5aWFtTUFBQUFBWDE5RVYwRlNSZ0FBQUFBQUFBQUFB
UDFhQUFBQUFBQUFKQUFBQUFBQUFBRGRaQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFB
QUFBQUFBQUFGOWZZWEJ3YkdWZmJtRnRaWE53WVdOZlgwUlhRVkpHQUFBQUFBQUFBQUFBCklWc0FB
QUFBQUFCWUFBQUFBQUFBQUFGbEFBQUFBQUFBdUlRQUFBUUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFB
QUFYMTloY0hCc1pWOTAKZVhCbGN3QUFBRjlmUkZkQlVrWUFBQUFBQUFBQUFBQjVXd0FBQUFBQUFO
d0hBQUFBQUFBQVdXVUFBQUFBQUFEWWhBQUFpQUFBQUFBQQpBQUlBQUFBQUFBQUFBQUFBQUFCZlgy
TnZiWEJoWTNSZmRXNTNhVzVrWDE5TVJBQUFBQUFBQUFBQUFBQUFBRmhqQUFBQUFBQUFnQUlBCkFB
QUFBQUE0YlFBQUF3QUFBQmlKQUFBV0FBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBSUFBQUFZQUFB
QXlJa0FBSUlBQUFEb2tRQUEKN0E0QUFBc0FBQUJRQUFBQUFBQUFBRUVBQUFCQkFBQUFJQUFBQUdF
QUFBQWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFWVWlKNVVGWFFWWkJWRk5JZyt4Z1NZbjJTWW44U0lNOS8vLy8vLzhQ
CmhaOEFBQUJJeDBYQUFBQUFBRXlOZmNCTWlYM0l4MFhRQUFBQUFNZEYxQ0FBQUFCSWl4MEFBQUFB
U0lzRkFBQUFBRWlKUllqSFJaQUEKQUFCQ1NJMTFxRWlOQlFBQUFBQklqUTBBQUFBQXgwV1VBQUFB
QUVpSlRaaElpVVdnVElsOXVFeUo1K2dBQUFBQVNJMTFzRXlKOStnQQpBQUFBU0kxMWlFaUozK2dB
QUFBQVNJdEZ5SXBZR0V5Si83NElBQUFBNkFBQUFBQ0kyRWlEeEdCYlFWeEJYa0ZmWGNOSWpUMEFB
QUFBClNJMDFBQUFBQU9nQUFBQUE2VW4vLy85bUR4OUVBQUJWU0lubFUxQklpZnZvQUFBQUFFaUxQ
UUFBQUFCSWhmOTBHRWlMY3lCSWkxTW8KNkFBQUFBQklpMHN3U0l0SkNJaEJHRWlEeEFoYlhjTVBI
NEFBQUFBQVZVaUo1VUZXVTBpQjdMQUFBQUJJaXowQUFBQUE2QUFBQUFCSQpqWDNnTWZib0FBQUFB
RWlMVGVDRndIVU5TRHNOQUFBQUFBK01Jd0VBQUVpQndWZ0NBQUJJaVEwQUFBQUFTSXMxMFJFQUFF
aU5QVW9SCkFBRC9GUUFBQUFCSWpiVlEvLy8vU0luSDZBQUFBQUNEK1A4UGhPa0FBQUJJaTBXQVNE
c0ZBQUFBQUErRTJBQUFBRWlMSFFBQUFBQkkKaGR0MExVaUxPK2dBQUFBQVNJdDdDT2dBQUFBQVNJ
dDdFT2dBQUFBQVNJbmY2QUFBQUFCSXh3WDgvLy8vQUFBQUFFaUxOV01SQUFCSQppejBFRGdBQVNJ
MFZ6UkFBQVA4VkFBQUFBRWlGd0hSL1NJczFTeEVBQUVpTFBld05BQUJJaWNJeHlVVXh3RVV4eWY4
VkFBQUFBRW1KCnhrMkY5blJZNkFBQUFBQklpY05JaXdVQUFBQUFTSXN3U0luZjZBQUFBQUJJamIx
SS8vLy9TSW5HVElueTZBQUFBQUJJaTRWSS8vLy8KU01lRlNQLy8vd0FBQUFCSWlRVUFBQUFBU0lu
ZjZBQUFBQUJJaTBXQVNJa0ZBQUFBQUVpQnhMQUFBQUJiUVY1ZHd3OGZnQUFBQUFCVgpTSW5sUVZk
QlZrRlZRVlJUU0lIczJBQUFBRW1KMUVpSjhVaUxCUUFBQUFCSWl3QklpVVhRTU1CSWhja1BoQ1lC
QUFCTmhlUVBoQjBCCkFBQVBWOEFQS1VYQUR5bEZzQThwUmFBUEtVV1FTSW05QVAvLy8waUxmd2hJ
alRVQUFBQUFTSW5LU0ltVkNQLy8vLzhWQUFBQUFFaUoKdzBpTk5RQUFBQUJJalZXUVNJMk5FUC8v
LzBpSjMwRzRFQUFBQVA4VkFBQUFBRW1KeDAyRi8zUjFTSXRGb0V5TE1FVXg3V1lQSDRRQQpBQUFB
QUVpTFJhQk1PVEIwQ0VpSjMrZ0FBQUFBU0l0Rm1FcUxQT2hJalRVQUFBQUFUSW5pL3hVQUFBQUFp
TUd3QVlUSmRYaEovOFZOCk9mMXl4MGlKMzBpTk5RQUFBQUJJalZXUVNJMk5FUC8vLzBHNEVBQUFB
UDhWQUFBQUFFbUp4MDJGLzNXU1NJdUZBUC8vLzBpTE9FaU4KTlFBQUFBQklpNVVJLy8vLy94VUFB
QUFBU0luQlNJWEpzQUIwSDBpTE5WY1BBQUJNaWVkSWljcTVRQUFBQVA4VkFBQUFBRWlEK1A4UAps
TUJJaXcwQUFBQUFTSXNKU0R0TjBIVVNTSUhFMkFBQUFGdEJYRUZkUVY1QlgxM0Q2QUFBQUFCVlNJ
bmxRVlpUU1luMlNJbjdTWXQyCk1FaU5lekM2Q0FBQUFPZ0FBQUFBU1l0MklFaU5leUM2QXdBQUFP
Z0FBQUFBU0lQREtFbUxkaWhJaWQrNkF3QUFBRnRCWGwzcEFBQUEKQUdZUEgwUUFBRlZJaWVWVFVF
aUorMGlMZXpDK0NBQUFBT2dBQUFBQVNJdDdJTDREQUFBQTZBQUFBQUJJaTNzb3ZnTUFBQUJJZzhR
SQpXMTNwQUFBQUFBOGZnQUFBQUFCVlNJbmxRVmRCVmxOSWcreFlTWW4vU0lNOS8vLy8vLzhQaFpF
QUFBQkl4MFhJQUFBQUFFeU5kY2hNCmlYWFF4MFhZQUFBQUFNZEYzQ0FBQUFCSWl4MEFBQUFBU0lz
RkFBQUFBRWlKUlpqSFJhQUFBQUJDU0kxMXVFaU5CUUFBQUFCSWpRMEEKQUFBQXgwV2tBQUFBQUVp
SlRhaElpVVd3VElsMXdFeUovK2dBQUFBQVNJMTFtRWlKMytnQUFBQUFTSXRGMElwWUdFeUo5NzRJ
QUFBQQo2QUFBQUFDSTJFaUR4RmhiUVY1QlgxM0RTSTA5QUFBQUFFaU5OUUFBQUFEb0FBQUFBT2xY
Ly8vL1pnOGZoQUFBQUFBQVZVaUo1Vk5RClNJbjc2QUFBQUFCSWl3VUFBQUFBU0lYQWRDTklpM2dR
U0l0VElFaUxOWmNOQUFEL0ZRQUFBQUJJaTBzb1NJdEpDSVRBRDVWQkdFaUQKeEFoYlhjTm1abVl1
RHgrRUFBQUFBQUJWU0lubFNJbndTSXQvRUVpTE5WNE5BQUJJaWNML0ZRQUFBQUNFd0ErVndGM0Ra
bVptWm1ZdQpEeCtFQUFBQUFBQlZTSW5sUVZaVFNZbjJTSW43U1l0MktFaU5leWk2Q0FBQUFPZ0FB
QUFBU0lQRElFbUxkaUJJaWQrNkF3QUFBRnRCClhsM3BBQUFBQUE4ZmhBQUFBQUFBVlVpSjVWTlFT
SW43U0l0N0tMNElBQUFBNkFBQUFBQklpM3NndmdNQUFBQklnOFFJVzEzcEFBQUEKQUE4ZlJBQUFW
VWlKNVVGWFFWWkJWVUZVVTBpQjdBZ0NBQUJJaWROSmlmWkppZjlJaXdVQUFBQUFTSXNBU0lsRjBF
aUYydytFbUFRQQpBRWlMUFRVSkFBQklqVFVBQUFBQS94VUFBQUFBU0kwMUFBQUFBRWlKMzBpSnd2
OFZBQUFBQUlUQUQ0UnBCQUFBVEltOTZQMy8vMGlOCk5RQUFBQUJJalJWSUN3QUFTSW5mL3hVQUFB
QUFTSW1GQVA3Ly8waUxOZkVMQUFCSWl6M2lDQUFBVElzdEFBQUFBRUgvMVVpSmhVaisKLy85SWl6
WFNDd0FBU0lzOXd3Z0FBRUgvMVVpSmhTRCsvLzlJaXpYQ0N3QUFTSXM5c3dnQUFFSC8xVWlKaFJq
Ky8vOFBWOEJJalJWZgpDd0FBRHlsRndBOHBSYkFQS1VXZ0R5bEZrRWlMTmJBTEFBQk1pZmRCLzlW
SmljWklpeldvQ3dBQVNJczllUWdBQUVILzFVbUp4MGlOCk5RQUFBQUJNaWZmL0ZRQUFBQUJJaGNC
MFl6SGJUSTBsQUFBQUFHWm1abVl1RHgrRUFBQUFBQUJJLzhOTWlmZElpelZyQ3dBQU1kSkkKaWRs
Qi85VklpY2RJaXpWaEN3QUFTSTBWMmdvQUFFSC8xVXlKLzBpTk5RQUFBQUJJaWNML0ZRQUFBQUJN
aWZkTWllYi9GUUFBQUFCSQpPY055czBpTk5RQUFBQUJJalZXUVNJMk5FUC8vLzB5Si8wRzRFQUFB
QVA4VkFBQUFBRWlKaFFqKy8vOUloY0JNaWZ0SWlaMzQvZi8vCkQ0VE9BZ0FBU0l0Rm9FaUxBRWlK
aGZEOS8vOU1qVDBBQUFBQVNNZUZFUDcvL3dBQUFBQklpMFdnU0l1TjhQMy8vMGc1Q0hRSVNJbmYK
NkFBQUFBQklpMFdZU0l1TkVQNy8vMGlMRk1oSWk3MEEvdi8vVEluKy94VUFBQUFBU1luR1RJbTFN
UDcvLzAyRjlnK0VEZ0lBQUE5WAp3QThwaFFELy8vOFBLWVh3L3YvL0R5bUY0UDcvL3c4cGhkRCsv
LzlNaWZkSWpUVUFBQUFBU0kyVjBQNy8vMGlOalZEKy8vOUJ1QkFBCkFBRC9GUUFBQUFCSWlZVTQv
di8vU0lYQUQ0UzdBUUFBU0l1RjRQNy8vMGlMQUVpSmhTaisvLzltTGc4ZmhBQUFBQUFBTWR0bVpt
Wm0KWmk0UEg0UUFBQUFBQUVpTGhlRCsvLzlJaTQwby92Ly9TRGtJZEFoTWlmZm9BQUFBQUVpTGhk
aisvLzlJaXdUWVRJbjNTWW5HVEluKwpUSW55L3hVQUFBQUFTSVhBRDRRSEFnQUFTSW1kUVA3Ly8w
aUx2VWorLy85TWl5MktDUUFBVEludVRJbnlTSW5EVFluMFRJczFBQUFBCkFFSC8xa3lMdlNEKy8v
OU1pZjlNaWU1TWllSk5pZVZKaWR4Qi85Wk5pZjVNalQwQUFBQUFUSW5uVEluK1NJMFZsQWdBQVA4
VkFBQUEKQUVpRndIUVdUSW4zU0lzMU53a0FBRWlKd2t5SjZmOFZBQUFBQUV5SjUweUova2lORllZ
SUFBRC9GUUFBQUFCSWhjQklpNTFBL3YvLwpUWW51ZEJwSWk3MUkvdi8vU0lzMSt3Z0FBRWlKd2t5
SjhmOFZBQUFBQUV5SjUweUova2lORldvSUFBRC9GUUFBQUFCSWhjQjBLMGlKCngwaUxOZFVJQUFE
L0ZRQUFBQUNFd0hRWFNJdTlHUDcvLzBpTk5RQUFBQUJNaWZML0ZRQUFBQUJJLzhOSU81MDQvdi8v
VEl1MU1QNy8KL3crQ3JmNy8vMHlKOTBpTk5RQUFBQUJJalpYUS92Ly9TSTJOVVA3Ly8wRzRFQUFB
QVA4VkFBQUFBRWlKaFRqKy8vOUloY0FQaFduKwovLzltRHgrRUFBQUFBQUJJaTRVUS92Ly9TUC9B
U0ltRkVQNy8vMGc3aFFqKy8vOUlpNTM0L2YvL0Q0S0QvZi8vU0luZlNJMDFBQUFBCkFFaU5WWkJJ
alkwUS8vLy9RYmdRQUFBQS94VUFBQUFBU0ltRkNQNy8vMGlGd0ErRlIvMy8vNzhZQUFBQTZBQUFB
QUJJaWNOSWlkOUkKaTdWSS92Ly9TSXVWSVA3Ly8waUxqUmorLy8vb0FBQUFBRXlMdmVqOS8vOUpp
Ui9yQjBuSEJ3QUFBQUJJaXdVQUFBQUFTSXNBU0R0RgowSFZIVEluNFNJSEVDQUlBQUZ0QlhFRmRR
VjVCWDEzRFNJMDlBQUFBQUVpTk5RQUFBQUJJalEwQUFBQUF1b01BQUFEb0FBQUFBRW1KCnhraUoz
K2dBQUFBQVRJbjM2QUFBQUFEb0FBQUFBSkJWU0lubFFWZEJWa0ZWUVZSVFVFaUxOV01IQUFCSWpS
WDBCZ0FBVElzdEFBQUEKQUVILzFVbUp4MGlMTlZBSEFBQklpejBoQkFBQVFmL1ZTWW5HU0kwMUFB
QUFBRXlKLy84VkFBQUFBRWlGd0hSYk1kdE1qU1VBQUFBQQpEeDlFQUFCSS84Tk1pZjlJaXpVYkJ3
QUFNZEpJaWRsQi85VklpY2RJaXpVUkJ3QUFTSTBWaWdZQUFFSC8xVXlKOTBpTk5RQUFBQUJJCmlj
TC9GUUFBQUFCTWlmOU1pZWIvRlFBQUFBQklPY055czB5SjhFaUR4QWhiUVZ4QlhVRmVRVjlkdzVC
VlNJbmxYZWtBQUFBQVpnOGYKUkFBQVZVaUo1Vk5RU0luN1NJczc2QUFBQUFCSWkzc0k2QUFBQUFC
SWkzc1FTSVBFQ0Z0ZDZRQUFBQUFQSDRBQUFBQUFWVWlKNVZOUQpTSW43U0lzNzZBQUFBQUJJaTNz
STZBQUFBQUJJaTNzUVNJUEVDRnRkNlFBQUFBQVBINEFBQUFBQVZVaUo1VUZYUVZaQlZGTkppYzVK
CmlkZElpZnRJaXdWZEJnQUFUSXNsQUFBQUFFaUo5MGlKeGtILzFFaUp4MGlKM3VnQUFBQUFTSXMx
T3dZQUFFeUovMEgvMUVpTmN3aEkKaWNmb0FBQUFBRWlMTlNJR0FBQk1pZmRCLzlSSWpYTVFTSW5I
NkFBQUFBQklpenZvQUFBQUFFeU5OUUFBQUFCSWl6dE1pZmIvRlFBQQpBQUJJaTNzSTZBQUFBQUJJ
aTNzSVRJbjIveFVBQUFBQVNJdDdFT2dBQUFBQVNJdDdFRWlMQlFBQUFBQk1pZlpiUVZ4QlhrRmZY
Zi9nClpnOGZSQUFBVlVpSjVlZ0FBQUFBRDdiQVhjTm1rRlZJaWVYb0FBQUFBQSsyd0YzRFpwQlZT
SW5sU0kwOUFBQUFBREgyNkFBQUFBQkkKaVFVQUFBQUFYY01BLzVzcEF5Y0FBQUFBb3dRQUFBQUFB
QUFBb3dRQUFCMEFBQUFYQlFBQUFNQUVBQUJ2QUFBQUFBQUFBQUIyT0VBLwpNQUJRYkhWblNXNUNi
R0ZqYTJ4cGMzUUFZM0psWVhSbEFDOVZjMlZ5Y3k5aGJHVjRZMmh5YVhOMFpXNXpaVzR2ZDJWaWEy
bDBMMGx1CmRHVnlibUZzTDFkbFlrdHBkRk41YzNSbGJVbHVkR1Z5Wm1GalpTOVFiSFZuYVc1Q2JH
RmphMnhwYzNRdWJXMEFkbVZ5YzJsdmJrbHUKWm04QVFteHZZMnRsWkZCc2RXZEpia0oxYm1Sc1pW
Wmxjbk5wYjI1ekFFMXBibWx0ZFcxUWJIVm5TVzVDZFc1a2JHVldaWEp6YVc5dQpBRkJzZFdkSmJs
VndaR0YwWlVGMllXbHNZV0pzWlFBdUFDOVRlWE4wWlcwdlRHbGljbUZ5ZVM5RGIzSmxVMlZ5ZG1s
alpYTXZRMjl5ClpWUjVjR1Z6TG1KMWJtUnNaUzlEYjI1MFpXNTBjeTlTWlhOdmRYSmpaWE12V0ZC
eWIzUmxZM1F1YldWMFlTNXdiR2x6ZEFCamIyMHUKWVhCd2JHVXVWMlZpUzJsMExsQnNkV2RwYmtK
c1lXTnJiR2x6ZEFBQk13QUJNZ0FCQUFBQUFBQUFBQUFBQUFBNEFBQUFBQUFBQUFBQQpBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3QUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBRkFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBR05zWVhOekFHbHpTMmx1WkU5bVEyeGhjM002QUc5aWFtVmpk
RVp2Y2t0bGVUb0FaR2xqCmRHbHZibUZ5ZVFCelpYUUFZMjkxYm5SQ2VVVnVkVzFsY21GMGFXNW5W
MmwwYUZOMFlYUmxPbTlpYW1WamRITTZZMjkxYm5RNkFISmwKYlc5MlpVOWlhbVZqZEVadmNrdGxl
VG9BYzJWMFQySnFaV04wT21admNrdGxlVG9BWW05dmJGWmhiSFZsQUdGa1pFOWlhbVZqZERvQQpZ
Mjl0Y0c5dVpXNTBjMU5sY0dGeVlYUmxaRUo1VTNSeWFXNW5PZ0JoY25KaGVRQmpiM1Z1ZEFCemRX
SmhjbkpoZVZkcGRHaFNZVzVuClpUb0FZMjl0Y0c5dVpXNTBjMHB2YVc1bFpFSjVVM1J5YVc1bk9n
QnBjMFZ4ZFdGc1ZHOVRkSEpwYm1jNkFHTnZiWEJoY21VNmIzQjAKYVc5dWN6b0FZMjl1ZEdGcGJu
TlBZbXBsWTNRNkFHTnZjSGtBY21Wc1pXRnpaUUJtYVd4bFUzbHpkR1Z0VW1Wd2NtVnpaVzUwWVhS
cApiMjRBWkdGMFlWZHBkR2hEYjI1MFpXNTBjMDltUm1sc1pUb0FjSEp2Y0dWeWRIbE1hWE4wUm5K
dmJVUmhkR0U2YlhWMFlXSnBiR2wwCmVVOXdkR2x2YmpwbWIzSnRZWFE2WlhKeWIzSkVaWE5qY21s
d2RHbHZiam9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFNZ0hBQUFBQUFBQUFBQUFBQUFBQUFBUEFBQUFBQUFB
QUFBQUFBQUFBQUFBeUFjQUFBQUFBQUFBQUFBQUFBQUFBQnNBQUFBQUFBQUEKQUFBQUFBQUFBQURJ
QndBQUFBQUFBQUFBQUFBQUFBQUFHZ0FBQUFBQUFBQUFBQUFBQUFBQUFNZ0hBQUFBQUFBQUFBQUFB
QUFBQUFBVgpBQUFBQUFBQUFBQUFBQUFBQUFBQXlBY0FBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFB
QUFBQUFBQUFBQUFBQURJQndBQUFBQUFBQUFBCkFBQUFBQUFBVkFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQlFBQUFBQUFB
QUFBWHBTQUFGNEVBRVFEQWNJa0FFQUFDd0FBQUFjCkFBQUFnT3ovLy8vLy8vL2FBQUFBQUFBQUFB
QkJEaENHQWtNTkJrdURCb3dGamdTUEF3QUFBQUFBQUNRQUFBQk1BQUFBTU8zLy8vLy8KLy84NUFB
QUFBQUFBQUFCQkRoQ0dBa01OQmtLREF3QUFBQUFrQUFBQWRBQUFBRWp0Ly8vLy8vLy9hUUVBQUFB
QUFBQUFRUTRRaGdKRApEUVpLZ3dTT0F3QUFMQUFBQUp3QUFBQ1E3di8vLy8vLy80QUJBQUFBQUFB
QUFFRU9FSVlDUXcwR1VJTUhqQWFOQlk0RWp3TUFBQUFBCkpBQUFBTXdBQUFEZzcvLy8vLy8vLzBv
QUFBQUFBQUFBQUVFT0VJWUNRdzBHUTRNRWpnTUFBQ1FBQUFEMEFBQUFDUEQvLy8vLy8vODUKQUFB
QUFBQUFBQUJCRGhDR0FrTU5Ca0tEQXdBQUFBQWtBQUFBSEFFQUFDRHcvLy8vLy8vL3h3QUFBQUFB
QUFBQVFRNFFoZ0pERFFaSgpnd1dPQkk4REpBQUFBRVFCQUFESThQLy8vLy8vLzBRQUFBQUFBQUFB
QUVFT0VJWUNRdzBHUW9NREFBQUFBQ1FBQUFCc0FRQUE4UEQvCi8vLy8vLzhpQUFBQUFBQUFBQUJC
RGhDR0FrTU5CZ0FBQUFBQUFBQWtBQUFBbEFFQUFQancvLy8vLy8vL09BQUFBQUFBQUFBQVFRNFEK
aGdKRERRWkRnd1NPQXdBQUpBQUFBTHdCQUFBUThmLy8vLy8vL3lzQUFBQUFBQUFBQUVFT0VJWUNR
dzBHUW9NREFBQUFBQndBQUFBQQpBQUFBQVhwUVRGSUFBWGdRQjVzRUFBQUFFQkFNQndpUUFRQUFO
QUFBQUNRQUFBRDQ4UC8vLy8vLy95OEZBQUFBQUFBQUNFUDQvLy8vCi8vLy9RUTRRaGdKRERRWlFn
d2VNQm8wRmpnU1BBd0FBQUFBc0FBQUFQQUlBQVBEMS8vLy8vLy8vdndBQUFBQUFBQUFBUVE0UWhn
SkQKRFFaS2d3ZU1CbzBGamdTUEF3QUFBQUFrQUFBQWJBSUFBSUQyLy8vLy8vLy9DZ0FBQUFBQUFB
QUFRUTRRaGdKRERRWUFBQUFBQUFBQQpKQUFBQUpRQ0FBQm85di8vLy8vLy95a0FBQUFBQUFBQUFF
RU9FSVlDUXcwR1FvTURBQUFBQUNRQUFBQzhBZ0FBY1BiLy8vLy8vLzhwCkFBQUFBQUFBQUFCQkRo
Q0dBa01OQmtLREF3QUFBQUFzQUFBQTVBSUFBSGoyLy8vLy8vLy91Z0FBQUFBQUFBQUFRUTRRaGdK
RERRWkgKZ3dhTUJZNEVqd01BQUFBQUFBQWtBQUFBRkFNQUFBajMvLy8vLy8vL0RnQUFBQUFBQUFB
QVFRNFFoZ0pERFFZQUFBQUFBQUFBSkFBQQpBRHdEQUFEdzl2Ly8vLy8vL3c0QUFBQUFBQUFBQUVF
T0VJWUNRdzBHQUFBQUFBQUFBQ1FBQUFCa0F3QUEyUGIvLy8vLy8vOGJBQUFBCkFBQUFBQUJCRGhD
R0FrTU5CZ0FBQUFBQUFBQVRGZ0FBQWdBQUFBQUFDQUVBQUFBQUVRQS9BQUFBQUFBQUFBQUFBQUFB
QUFBQWp3QUEKQUFFQ0F2c0FBQUFCQXlnQUFBQUVMZ0FBQUFZQkFBQUJWQVVNQVFBQUNBSXlFUWIz
QUFBQU13QUFBQUl6QWlNQUFnQUZGUUVBQUFnRApEQkVIUGdBQUFBSWpBQUVBQTFjQUFBQUZYZ0VB
QUFnRkRCRUhQZ0FBQUFJakFBRUFBMjhBQUFBSXJBRUFBQUlCQmJFQkFBQUlCa29SCkJ6NEFBQUFD
SXdBQkFBT09BQUFBQXlzQkFBQUpLd0VBQUFQS0FBQUFDc29BQUFBTDdRSUFBQWRtQWd2cEFnQUFC
MllDRFBVQ0FBQUkKQjJBSERVY0NBQUQyQkFBQUIySUhBaU1BQVE3T0FnQUFCMkFIQVFFQkFRK3dB
QUFBQVFBT3pnSUFBQWRnQndFQkFRRVBzQUFBQUFFUQp0UUFBQUFBTzJ3SUFBQWRnQndFQkFRRVBz
QUFBQUFFQUVlUURBQUR4QWdBQUFCSW9CQUFBQ0FkbUJ3MUhBZ0FBOWdRQUFBZHBCd0lqCkFBTVRU
Z0lBQUFkdEJ3RUJBUUVQcGdBQUFBRVE5Z1FBQUFBVVRnSUFBQWR1QndFQkFRK21BQUFBQVJDckFB
QUFBQlZYQWdBQWhBSUEKQUFkeEI2c0FBQUFCQVFFUHBnQUFBQUVRcXdBQUFBQVZqZ0lBQUlRQ0FB
QUhkUWVyQUFBQUFRRUJENllBQUFBQkVNb0FBQUFBRkJNRApBQUFIZHdjQkFRRVBwZ0FBQUFFQUZS
MERBQUJJQXdBQUIza0hoUU1BQUFFQkFRK1BBd0FBQVFBVlVnTUFBSDBEQUFBSGV3ZjJCQUFBCkFR
RUJENDhEQUFBQkFCV0lBd0FBdFFNQUFBZDhCL1lFQUFBQkFRRVBqd01BQUFFQUZia0RBQURwQXdB
QUIzMEg5Z1FBQUFFQkFRK20KQUFBQUFRQVc4UU1BQUNJRUFBQUhnd2NCQVFFUHBnQUFBQUVROWdR
QUFBQVVUZ0lBQUFlS0J3RUJBUSttQUFBQUFSREtBQUFBQUJIawpBd0FBOFFJQUFBQVhoQWdBQUVZ
Q0FBQUJHSTBOQUFBSGlnZFdFQUFBQVJrMEVBQUFCNG9IeWdBQUFBQWF4QWdBQUVZQ0FBQ1pBZ0FB
CkFSaU5EUUFBQjRvSFZoQUFBQUVaTkJBQUFBZUtCOG9BQUFBQUd3Z0pBQUJOQ1FBQUI0c0h5Z0FB
QUFFUjVBTUFBQVFKQUFBWWpRMEEKQUFlTEIxWVFBQUFCSEpJTkFBQUhqQWZLQUFBQUFCcTVBd0FB
RVFJQUFQVUNBQUFCR0kwTkFBQUhmUWRXRUFBQUFSeVNEUUFBQjM4SAo5Z1FBQUFBZGRBa0FBRVFC
QUFBWWpRMEFBQWR0QjFZUUFBQUJHVFFRQUFBSGJRZjJCQUFBQUIyaENRQUFSQUVBQUJpTkRRQUFC
MjBIClZoQUFBQUVaTkJBQUFBZHRCL1lFQUFBQUhjNEpBQUN4QVFBQUdJME5BQUFIZHdkV0VBQUFB
UUFkK0FrQUFMRUJBQUFZalEwQUFBZDMKQjFZUUFBQUJBQUFBQ2VRREFBQWVLd0VBQUFPS0F3QUFB
eWdBQUFBZlFnUUFBQUFnOXdBQUFKUURBQUFDSXdBQkFBT1pBd0FBQkswRApBQUJPQkFBQUJGUUQ1
QU1BQUFXaEJBQUFDQWdPRVFjK0FBQUFBaU1BQVFBRHdnTUFBQjdrQXdBQUE5b0RBQUFoTEFVQUFC
Z0VFUWJjCkFBQUFhZ0FBQUFRZ0FpTUFBd1lpQVFBQWFnQUFBQVFoQWlNSUF3WStBUUFBZ2dBQUFB
UWlBaU1RQXlKa0FRQUFtZ0VBQUFRVGh3QUEKQUFFQkFSQ2hBQUFBRUtFQUFBQUFJcm9CQUFEekFR
QUFCQlNIQUFBQUFRRUJFS0VBQUFBQUlnc0NBQUJBQWdBQUJCWXJBUUFBQVFFQgpFS0VBQUFBUXNn
TUFBQUFqVVFRQUFBUVhBUUVCRDcwREFBQUJBQ0ppQkFBQWtnUUFBQVFaMVFNQUFBRUJBUkNoQUFB
QUFDS3BCQUFBCjJnUUFBQVFhaHdBQUFBRUJBUS9mQXdBQUFSQ2hBQUFBRUtFQUFBQUFJdVlFQUFB
YUJRQUFCQnVIQUFBQUFRRUJEOThEQUFBQkVLRUEKQUFBQUl5d0ZBQUFFSGdFQkF3KzlBd0FBQVJC
cUFBQUFFR29BQUFBUWdnQUFBQUFBQStRREFBQWt6QUFBQVBZRUFBQUJGQWtENEdVQQpBQUFBQUFB
OEJRQUFDSElGQUFBRkNBUVVCUUFBZXdVQUFBbDRCQnNGQUFDTEJRQUFBUjRlSmdVQUFDVlJCUUFB
TVFVQUFBRVhXQUlBCkFBQUFBQUFra2dVQUFDWUZBQUFCR3drRDhHVUFBQUFBQUFDc0JRQUFKTXNG
QUFBbUJRQUFBUmdKQStobEFBQUFBQUFBNkFVQUFBT0sKQlFBQUhvb0ZBQUFKZ0FVQUFDWWZCZ0FB
QVFwQUl4OEdBQUFLUWdFQkF3OTdCUUFBQVFBak1RWUFBQXBEQVFFREQzc0ZBQUFCQUNNZgpCZ0FB
Q2tRQkFRTVBld1VBQUFFUWhRVUFBQUFuUkFZQUFJUUNBQUFLUlFFQkF3OTdCUUFBQVJDRkJRQUFB
QUFtWWdZQUFBRUxRd2VLCkJRQUFBaU1BQVFBRDVRVUFBQVQzQlFBQWN3WUFBQUZESkFvR0FBRDhC
UUFBQVJNSkE5aGxBQUFBQUFBQWhBWUFBQVFVQlFBQW93WUEKQUFFbUtMTUdBQURZQmdBQUFVc0JL
WjRHQUFBZ0JnQUFBVTBKQS9obEFBQUFBQUFBQUNwa0FRQUFHUVFBQUFBQUFBQUFBQUFBMmdBQQpB
QUFBQUFBQlZpdUpEQUFBQVZPaEFBQUFBQUFBQUN1YURBQUFBVk9oQUFBQVNRQUFBQ3phQkFBQUFW
ZUhBQUFBQjVGQUl3Z0dJeGdzCjJnUUFBQUZYaHdBQUFBZVJRQ01JQmlNWUxTc0dBQUF3QUFBQUFW
VXRRZzRBQUFBQUFBQUJUaXV1REFBQURVRnhEd0FBa2dBQUFBQUEKQUM3M0JnQUFBVmpnQUFBQUFB
QUFBQmtCQUFBQUFBQUFBVll2TWcwQUFBRllVUkFBQUFHMUFBQUFBREE4QndBQUFWMFFCQUFBQUFB
QQpBRm9FQUFBQUFBQUFBVlliQndBQUwrWVBBQUFCWGU0T0FBQUJRd0lBQUMvbUR3QUFBVjN1RGdB
QUFYa0NBQUFBTUZFSEFBQUJYV0FFCkFBQUFBQUFBbVFRQUFBQUFBQUFCVmxrSEFBQXY1ZzhBQUFG
ZDdnNEFBQUd2QWdBQUFDcTZBUUFBTmdRQUFLQUVBQUFBQUFBQVp3VUEKQUFBQUFBQUJWaXVKREFB
QUFXS2hBQUFBNVFJQUFDenpBUUFBQVdhSEFBQUFCNUZJSXdnR0l4Z3M4d0VBQUFGbWh3QUFBQWVS
U0NNSQpCaU1ZTFNzR0FBQ1FBQUFBQVdRdFFnNEFBR0FBQUFBQlRpdXVEQUFBRFVGeER3QUFMZ01B
QUFBQUFDNXBCd0FBQVdkd0JRQUFBQUFBCkFMUUZBQUFBQUFBQUFWWXZNZzBBQUFGbkF4UUFBQUZS
QXdBQU1Ya0ZBQUFBQUFBQXJRVUFBQUFBQUFBeUxBc0FBTUFBQUFBQmF5c0kKQUFBek9nc0FBQUdI
QXdBQU5FWUxBQUNxQXdBQUFBQUFNRHdIQUFBQmJQQUZBQUFBQUFBQUtBWUFBQUFBQUFBQlZsNElB
QUF2NWc4QQpBQUZzN2c0QUFBRTVCQUFBTCtZUEFBQUJiTzRPQUFBQmJ3UUFBQUF3VVFjQUFBRnNN
QVlBQUFBQUFBQmJCZ0FBQUFBQUFBRlduQWdBCkFDL21Ed0FBQVd6dURnQUFBYVVFQUFBQUtnc0NB
QUJPQkFBQVlBWUFBQUFBQUFDUEN3QUFBQUFBQUFGV0sva1BBQUFCY2FFQUFBRGIKQkFBQUt6Z1FB
QUFCY2JJREFBQVJCUUFBTlVVUUFBQUJkbW9BQUFBMVVCQUFBQUY0YmhRQUFEVjlFQUFBQVhsdUZB
QUFOWmNRQUFBQgplb1lVQUFBMmNBSUFBRFhDRUFBQUFYeWhBQUFBTFd3S0FBQUFBUUFBQVh3MGRn
b0FBRWNGQUFBM2dRb0FBR29GQUFBM21Bb0FBSTBGCkFBQTNwQW9BQU1RRkFBQUFOaUFDQUFBMTFS
QUFBQUY5YWdBQUFEYWdBUUFBTmQ4UUFBQUJnYUVBQUFBMk1BRUFBRFhvRUFBQUFZSnEKQUFBQU5m
UVFBQUFCaU5VREFBQTF5QThBQUFHS29RQUFBRFVFRVFBQUFZMnhGQUFBQUFBQUFEaG5BZ0FBSndz
QUFBQUFBQUFzQ3dBQQpBQUFBQUFHV09UUVFBQUFIYlFmMkJBQUE1d1VBQURxTEFnQUFKd3NBQUFB
QUFBQXNDd0FBQUFBQUFBZUtCK29KQUFBem1RSUFBQUVLCkJnQUFBQUE0WndJQUFDd0xBQUFBQUFB
QU13c0FBQUFBQUFBQmREcUxBZ0FBTEFzQUFBQUFBQUF6Q3dBQUFBQUFBQWVLQnlrS0FBQXoKbVFJ
QUFBRXRCZ0FBQUFBQUdyRUhBQUJyQkFBQVJBb0FBQUU3alEwQUFBR1k5Z1FBQUFFQUdzb0hBQUJy
QkFBQVh3b0FBQUU3alEwQQpBQUdZOWdRQUFBRUFGMklFQUFCOEJBQUFBVHo1RHdBQUFaK2hBQUFB
TlFNUUFBQUJvZFVEQUFBMURoQUFBQUdqVmhRQUFEMDFKQkFBCkFBR2x3UXdBQUQwMUpoQUFBQUdt
b1FBQUFBQUFBRDZwQkFBQWxBUUFBSkFDQUFBQUFBQUFFQVFBQUFBQUFBQUJWdEVLQUFBdmpRMEEK
QUFHdVF4TUFBQUZVQVFBQUs0a01BQUFCcnFFQUFBQ01BUUFBSzVvTUFBQUJycUVBQUFEcUFRQUFQ
OGdQQUFBQnVxRUFBQUFnQWdBQQpNYzhDQUFBQUFBQUFvZ01BQUFBQUFBQTExdzhBQUFHMG9RQUFB
QUFBR3VZRUFBQzNCQUFBT2dzQUFBRTdqUTBBQUFIQVF4TUFBQUU4CmlRd0FBQUhBb1FBQUFBQSs0
d2NBQU5VRUFBQlFEQUFBQUFBQUFGb01BQUFBQUFBQUFWWnhDd0FBTDQwTkFBQUJ4ZllFQUFBQjhB
WUEKQUN0UUVBQUFBY1ZxQUFBQUV3Y0FBQ3Q5RUFBQUFjVnFBQUFBTmdjQUFDdVhFQUFBQWNXQ0FB
QUFXUWNBQUFBK0ZBZ0FBTlVFQUFEQQpEQUFBQUFBQUFIb05BQUFBQUFBQUFWYk9Dd0FBTDQwTkFB
QUJ4ZllFQUFBQkN3Z0FBQ3RRRUFBQUFjVnFBQUFBUVFnQUFDdDlFQUFBCkFjVnFBQUFBZHdnQUFD
dVhFQUFBQWNXQ0FBQUF3QWdBQUFCQVJRZ0FBQUhUVUF3QUFBR0FEUUFBQUFBQUFJNE5BQUFBQUFB
QUFWWXIKaVF3QUFBSFRvUUFBQUFrSkFBQXJtZ3dBQUFIVG9RQUFBQ3dKQUFBQUNGa0lBQUFHQVFS
SkRBQUFaUWdBQUFFOVFHb0lBQUFCMkZBTQpBQUFCa0EwQUFBQUFBQUNlRFFBQUFBQUFBQUZXSzRr
TUFBQUIyS0VBQUFCUENRQUFBRUVpQ2dBQU5Rb0FBQXdST0EwQUFEdzNFUUFBCkRCSEJEQUFBUERz
UkFBQU1FY0VNQUFBMVB4RUFBQXdTT0EwQUFBQUlTZ29BQUFjSUJMb01BQUJjQ2dBQUFRMEQxZ3dB
QUFyV0RBQUEKSm00S0FBQVFEQW9HUVFvQUFNRU1BQUFNQ3dJakFBRUdad29BQU1FTUFBQU1EQUlq
Q0FGQ2Jnb0FBQXdLQVFFQkFRL01EQUFBQVFCQwpiZ29BQUF3S0FRRUJBUS9NREFBQUFSRFJEQUFB
QUVKM0NnQUFEQW9CQVFFQkQ4d01BQUFCQUFBRTFnd0FBSUVLQUFBTURVT0pDZ0FBCnNBb0FBQUVq
SUFFQUFBQUFBQUNKQWdBQUFBQUFBQUZXTEpZTkFBQUJKM1lRQUFBQ2tXQXMxQTBBQUFFdUdSSUFB
QU9SMEg0eHNRRUEKQUFBQUFBRGVBUUFBQUFBQUFFUTJDZ0FBc1FFQUFBQUFBQURMQVFBQUFBQUFB
QUUycVEwQUFETkVDZ0FBQWVzQUFBQTRVUW9BQUxFQgpBQUFBQUFBQXl3RUFBQUFBQUFBQm1UTmZD
Z0FBQVE0QkFBQUFBQUJFNXdJQUFGRUNBQUFBQUFBQVl3SUFBQUFBQUFBQlJRTU9BQUJGCmpRMEFB
QWQzQjFZUUFBQUJBNUhJZmtiMUFnQUFBUU9SeUg0M0FnTUFBREVCQUFBQUFDN1JDZ0FBQVU2Z0RR
QUFBQUFBQUxzTkFBQUEKQUFBQUFWWXZNZzBBQUFGT0RCWUFBQUZ5Q1FBQUFFY0ZDd0FBRFVFQlBF
RVJBQUFOUVJFV0FBQThyZ3dBQUExQmNROEFBQUJJd1F3QQpBQUVJQmhSSkZBc0FBQUZKTEFzQUFB
SkpQQXNBQUFSSlRnc0FBQWhKWHdzQUFNQUFTVzhMQUFDQUFVbU1Dd0FBZ0FKSnBRc0FBSUFFClNi
d0xBQUNBQ0FBRUZBVUFBQXNNQUFBT0RFcW1EZ0FBQVJVTUFBQUlEbndCU2RZTEFBQi9TZWtMQUFB
QVNmY0xBQUFCQUVqQkRBQUEKQVFnUENra29EQUFBQUVsQURBQUFBVWxnREFBQUFnQkxDTUlNQUFB
RkJFd0I5Z3dBQUJBTlFpRG9EQUFBdWd3QUFBSWpBQUVnOFF3QQpBTG9NQUFBQ0l3Z0JBQVAyRGdB
QVRBRUpEUUFBSUExQ0lMUU1BQUR1RGdBQUFpTUFBU0M2REFBQTd3NEFBQUlqQ0FFZ3hnd0FBTzhP
CkFBQUNJd3dCSU5FTUFBRHVEZ0FBQWlNUUFRYmJEQUFBR2c4QUFBMUNBaU1ZQVFBREh3OEFBQVJz
RHdBQUlRMEFBQTF2QWtRTkFBQUIKQTN3UEFBQk5HU0MwREFBQTdnNEFBQUlqQUFFZ1p3MEFBTzRP
QUFBQ0l3Z0JJTG9NQUFEdkRnQUFBaU1RQVNCMERRQUE3dzRBQUFJagpGQUVnMmdRQUFJY0FBQUFD
SXhnQkFBT0hEd0FBSm5zTkFBQTRBVmdHdEF3QUFPNE9BQUFCV0FJakFBRUd1Z3dBQU84T0FBQUJX
QUlqCkNBRUd4Z3dBQU84T0FBQUJXQUlqREFFRzBRd0FBTzRPQUFBQldBSWpFQUVHMnd3QUFJSVBB
QUFCV0FJakdBRUdpUXdBQUtFQUFBQUIKV0FJaklBRUdtZ3dBQUtFQUFBQUJXQUlqS0FFRzJnUUFB
TXNQQUFBQldBSWpNQUVBQTlBUEFBQURLd0VBQUFUdkRnQUFyUTBBQUFrcwpCRnNRQUFDM0RRQUFD
WVFEZGhBQUFDYk1EUUFBRUFrZUJwNE5BQUFiQlFBQUNTQUNJd0FCQnFVTkFBQm1FQUFBQ1NFQ0l3
Z0JRc3dOCkFBQUpIZ0VCQVFFUGNSQUFBQUVBQUFSYkVBQUE0dzBBQUJCZ0JLOFFBQUR5RFFBQUVC
NElBQTRBQUFjQ0JNVVFBQUFQRGdBQUVDc0UKekJBQUFCb09BQUFRYlFUWEVBQUFLZzRBQUJBZUJN
d1FBQUE2RGdBQUVCNElTUTRBQUFjSUJQZ1FBQUJnRGdBQUVDOEUveEFBQUdzTwpBQUFRWlFpRERn
QUFCd1FFRlJFQUFKQU9BQUFRTFFRY0VRQUFtdzRBQUJDRkJDY1JBQUNxRGdBQUVCNEVIQkVBQUxj
T0FBQVFZd1E5CkVRQUF4ZzRBQUJBZUExMFJBQUFLWFJFQUFDYnBEZ0FBRUJFZUJwNE5BQUFiQlFB
QUVTQUNJd0FCQnVFT0FBQVVCUUFBRVNFQ0l3Z0IKUXVrT0FBQVJIZ0VCQVFFUFV4RUFBQUVBUXVr
T0FBQVJIZ0VCQVFFUFV4RUFBQUVRV0JFQUFBQUFDQ1VQQUFBRkNBU3RFUUFBTXc4QQpBQkF1QkxR
UkFBQTlEd0FBRUc0RXZ4RUFBRXdQQUFBUUhnUzBFUUFBWEE4QUFCQmVCTlVSQUFCdUR3QUFFQjRF
V3hBQUFJSVBBQUFRClh3VHJFUUFBbFE4QUFCQWVUc0lNQUFBRUJVKzBFUUFBVUFFU0FBQUJBQU1a
RWdBQUpzTVBBQUNRRUxZRzNBMEFBTG9RQUFBUXRnSWoKQUFFRytBMEFBT0lRQUFBUXRnSWpCQUVH
TVE0QUFPMFFBQUFRdGdJakJnRUdRZzRBQUFvUkFBQVF0Z0lqQ0FFR2ZBNEFBRElSQUFBUQp0Z0lq
RUFFR3NBNEFBRWdSQUFBUXRnSWpGQUVHekE0QUFMb1FBQUFRdGdJakdBRUcxQTRBQUYwUkFBQVF0
Z0lqSUFFRzhnNEFBRjBSCkFBQVF0Z0lqTUFFRy93NEFBRjBSQUFBUXRnSWpRQUVHREE4QUFGMFJB
QUFRdGdJalVBRUdIUThBQU1vUkFBQVF0Z0lqWUFFR1VnOEEKQU9BUkFBQVF0Z0lqYUFFR2R3OEFB
UFlSQUFBUXRnSWpjQUVHbnc4QUFCd1JBQUFRdGdJamRBRUdxQThBQUJ3UkFBQVF0Z0lqZUFFRwpy
dzhBQUZzUUFBQVF0Z0lqZkFFR3VROEFBQWdTQUFBUXRnTWpnQUVCUXNNUEFBQVF0Z0VCQVFFUEZC
SUFBQUVBQUFQYUF3QUFUUmtnCnRBd0FBTzRPQUFBQ0l3QUJJR2NOQUFEdURnQUFBaU1JQVNDNkRB
QUE3dzRBQUFJakVBRWdkQTBBQU84T0FBQUNJeFFCSVBNQkFBQ0gKQUFBQUFpTVlBUUFEU0JNQUFD
Ym5Ed0FBTUFGbkJyUU1BQUR1RGdBQUFXY0NJd0FCQnJvTUFBRHZEZ0FBQVdjQ0l3Z0JCc1lNQUFE
dgpEZ0FBQVdjQ0l3d0JCdEVNQUFEdURnQUFBV2NDSXhBQkJ0c01BQUNDRHdBQUFXY0NJeGdCQm9r
TUFBQ2hBQUFBQVdjQ0l5QUJCdk1CCkFBQ01Fd0FBQVdjQ0l5Z0JBQU9SRXdBQVVTd0xBQURBQlFB
QUFBQUFBT0lGQUFBQUFBQUFBVllqRkFBQUw0ME5BQUFCd0VNVEFBQUIKelFNQUFDdUpEQUFBQWND
aEFBQUE4QU1BQUFBRkZSQUFBQWdJZEJFSHdnTUFBQUlqQUFFQUEwTVVBQUFGYVJBQUFBZ0RWeEVI
VndBQQpBQUlqQUFFQUExc1VBQUFGdFJBQUFBZ0ZSUkVIYndBQUFBSWpBQUVBQTNNVUFBQUZGQkVB
QUFnU0NSRUhQZ0FBQUFJakFBRUFCUndSCkFBQUlFaVFSQjRzVUFBQUNJd0FCQUFPZUZBQUFVbXdL
QUFDUUN3QUFBQUFBQUU4TUFBQUFBQUFBQVZZcitROEFBQUdmb1FBQUFGQUcKQUFBL0F4QUFBQUdo
MVFNQUFITUdBQUExRGhBQUFBR2pWaFFBQURITkN3QUFBQUFBQUQwTUFBQUFBQUFBUHlRUUFBQUJw
Y0VNQUFDVwpCZ0FBTnJBQ0FBQS9KaEFBQUFHbW9RQUFBTTBHQUFBQUFBQlJOZ29BQUdBTUFBQUFB
QUFBaVF3QUFBQUFBQUFCVmtnVkFBQXZqUTBBCkFBR1k5Z1FBQUFGOEJ3QUFPRkVLQUFCcERBQUFB
QUFBQUlrTUFBQUFBQUFBQVprdmpRMEFBQUdZOWdRQUFBR3lCd0FBQUFCUlVRb0EKQUpBTUFBQUFB
QUFBdVF3QUFBQUFBQUFCVnB3VkFBQXZqUTBBQUFHWTlnUUFBQUhWQndBQUFBTDJEQUFBQVFPdEZR
QUFKaVVSQUFBZwpBVTRHdEF3QUFPNE9BQUFCVGdJakFBRUd1Z3dBQU84T0FBQUJUZ0lqQ0FFR3hn
d0FBTzhPQUFBQlRnSWpEQUVHMFF3QUFPNE9BQUFCClRnSWpFQUVHMnd3QUFMTVZBQUFCVGdJakdB
RUFBN2dWQUFBRElBWUFBQUFCRVFFbERoTUZBdzRSQVJBR0d3N2hmd3psZndzQUFBSVQKQUFNT1BB
d0FBQU1QQUVrVEFBQUVGZ0JKRXdNT09nczdDd0FBQlJNQkF3NExDem9MT3d2bWZ3c0FBQVlOQUFN
T1NSTTZDenNMT0FveQpDd0FBQnh3QVNSTTRDaklMQUFBSUpBQUREajRMQ3dzQUFBa1FBRWtUQUFB
S1FnQkpFd0FBQ3prQkF3NDZDenNGQUFBTUV3RUREZ3NMCk9nczdCUUFBRFEwQUF3NUpFem9MT3dV
NENqSUxBQUFPTGdFRERqb0xPd1U4RERRTVB3d3lDd0FBRHdVQVNSTTBEQUFBRUFVQVNSTUEKQUJF
dkFFa1RBdzRBQUJJQ0FRTU9Dd3M2Q3pzRkFBQVRMZ0VERGpvTE93VThERDhNTWd0akRBQUFGQzRC
QXc0NkN6c0ZQQXcvRERJTApBQUFWTGdHSFFBNEREam9MT3dWSkV6d01Qd3d5Q3dBQUZpNEJoMEFP
QXc0NkN6c0ZQQXcvRERJTEFBQVhMZ0dIUUE1SEV5QUxBQUFZCkJRQUREam9MT3dWSkV6UU1BQUFa
QlFBRERqb0xPd1ZKRXdBQUdpNEJoMEFPUnhOa0V5QUxBQUFiTGdHSFFBNEREam9MT3dWSkV6OE0K
QUFBY05BQUREam9MT3dWSkV3QUFIUzRCaDBBT1J4TUFBQjRtQUVrVEFBQWZFd0VERGdzTEFBQWdE
UUFERGtrVE9Bb3lDd0FBSVFJQgpBdzRMQ3pvTE93c0FBQ0l1QVlkQURnTU9PZ3M3QzBrVFBBdy9E
RElMQUFBakxnRUREam9MT3dzOEREOE1NZ3NBQUNRMEFBTU9TUk02CkN6c0xBZ3FIUUE0QUFDVTBB
QU1PU1JNNkN6c0xIQWNBQUNZVEFRTU9Dd3M2Q3pzTEFBQW5MZ0dIUUE0RERqb0xPd3M4REQ4TU1n
c0EKQUNndUFZZEFEZ01PT2dzN0N5QUxBQUFwTkFBRERra1RPZ3M3Q3dJS0FBQXFMZ0dIUUE1SEV4
RUJFZ0ZBQ2dBQUt3VUFBdzQ2Q3pzTApTUk1DQmdBQUxEUUFBdzQ2Q3pzTFNSTUNDZ0FBTFIwQk1S
TlZCbGdMV1FzQUFDNHVBUU1PT2dzN0N4RUJFZ0ZBQ2dBQUx3VUFBdzQ2CkN6c0xTUk0wREFJR0FB
QXdMZ0VERGpvTE93c1JBUklCUUFwa0V3QUFNUXNCRVFFU0FRQUFNaDBCTVJOVkJsZ0xXUXRrRXdB
QU13VUEKTVJNMERBSUdBQUEwQlFBeEV3SUdBQUExTkFBRERqb0xPd3RKRXdBQU5nc0JWUVlBQURj
MEFERVRBZ1lBQURnZEFURVRFUUVTQVZnTApXUXNBQURrRkFBTU9PZ3M3QlVrVEFnWUFBRG9kQVRF
VEVRRVNBVmdMV1FWa0V3QUFPd1VBQXc0NkN6c0xTUk0wREFBQVBBVUFBdzQ2CkN6c0xTUk1BQUQw
TEFRQUFQaTRCaDBBT1J4TVJBUklCUUFwa0V3QUFQelFBQXc0NkN6c0xTUk1DQmdBQVFDNEJBdzQ2
Q3pzTFNSTS8KREJFQkVnRkFDZ0FBUVM0QmgwQU9BdzQ2Q3pzTFNSTUFBRUl1QVFNT09nczdDendN
TkF3L0RESUxBQUJETGdHSFFBNEREam9MT3dzUgpBUklCUUFvQUFFUWRBVEVURVFFU0FWZ0xXUXRr
RXdBQVJRVUFBdzQ2Q3pzRlNSTTBEQUlLQUFCR0JRQXhFelFNQWdvQUFFY3VBUU1PCk9nczdDeUFM
QUFCSUJBRkpFMjBNQ3dzNkN6c0xBQUJKS0FBRERod05BQUJLQkFGSkUyME1BdzRMQ3pvTE93VUFB
RXNQQUFBQVRCTUIKNUg4TUF3NExDem9MT3dzQUFFMFRBUXNMQUFCT0pBQUREZ3NMUGdzQUFFOEJB
VWtUQUFCUUlRQkpFeThMQUFCUkxnRXhFeEVCRWdGQQpDbVFUQUFCU0xnRXhFeEVCRWdGQUNnQUFB
QWdFQUFBQ0FEMENBQUFCQWZzT0RRQUJBUUVCQUFBQUFRQUFBUzlWYzJWeWN5OWhiR1Y0ClkyaHlh
WE4wWlc1elpXNHZkMlZpYTJsMEwwbHVkR1Z5Ym1Gc0wxZGxZa3RwZEZONWMzUmxiVWx1ZEdWeVpt
RmpaUUF2ZFhOeUwybHUKWTJ4MVpHVXZiMkpxWXdBdlUzbHpkR1Z0TDB4cFluSmhjbmt2Um5KaGJX
VjNiM0pyY3k5R2IzVnVaR0YwYVc5dUxtWnlZVzFsZDI5eQpheTlJWldGa1pYSnpBQzlCY0hCc2FX
TmhkR2x2Ym5NdldHTnZaR1V1WVhCd0wwTnZiblJsYm5SekwwUmxkbVZzYjNCbGNpOVViMjlzClky
aGhhVzV6TDA5VFdERXdMamt1ZUdOMGIyOXNZMmhoYVc0dmRYTnlMMkpwYmk4dUxpOXNhV0l2WXlz
ckwzWXhBQzkxYzNJdmFXNWoKYkhWa1pTOXplWE12WDNSNWNHVnpBQzkxYzNJdmFXNWpiSFZrWlM5
a2FYTndZWFJqYUFBdmRYTnlMMmx1WTJ4MVpHVXZjM2x6QUFCUQpiSFZuYVc1Q2JHRmphMnhwYzNR
dWJXMEFBUUFBVGxOUFltcGxZM1F1YUFBQ0FBQk9VMFJwWTNScGIyNWhjbmt1YUFBREFBQlFiSFZu
CmFXNUNiR0ZqYTJ4cGMzUXVhQUFCQUFCT1UxTmxkQzVvQUFNQUFFNVRVM1J5YVc1bkxtZ0FBd0FB
YldWdGIzSjVBQVFBQUU1VFFYSnkKWVhrdWFBQURBQUJmZEdsdFpYWmhiQzVvQUFVQUFHOWlhbVZq
ZEM1b0FBWUFBSEYxWlhWbExtZ0FCZ0FBVGxOU1lXNW5aUzVvQUFNQQpBRzl1WTJVdWFBQUdBQUJP
VTA5aWFrTlNkVzUwYVcxbExtZ0FBd0FBVGxOUWNtOXdaWEowZVV4cGMzUXVhQUFEQUFCemRHRjBM
bWdBCkJ3QUFYM1JwYldWemNHVmpMbWdBQlFBQVRsTldZV3gxWlM1b0FBTUFBQUFBQ1FJQUFBQUFB
QUFBQUFQVEFBRUVEUW9EYndoS0JBRUQKRk5ZSXlRSmVHWFVFRFFOa0NLd0VBUU1VQ01nS2tWcTdD
SFVEUjlZS1N3aXZXVWtJRjlnQ0xCVUlGUVBsQUxxRGtRT2FmNUNEcndqbwpBaWNXZ3dpRUJBY0R1
ZzZzZFFRQkE4VnhySFdFclFQbUFBZ3VDZ0kvRndLS0FSTUlkZ0l4RlFJb0V3SXZGUU9mZndobUNz
Z0NReElLCmtBSTNHQVFOQ2dOZzhnUUJBeVBXQ01rQ1VobDFCQTBEVlFpUUJBRURJd2p5Q3BGYUE5
Z0F1Z09wZjBvRDF3QktBNmwveUFQWEFJSUQKcVg4dVN3UFZBQWd1Q25VRHFuOENLUUVLeUFJekVn
cVFBaWNZQ2dJMEV3STJGUWpLQ05jSWRRTW5DSjREVzNRREpmTDBDRDRGUWdJcgpFd1VBQWlrVUND
c0ZRcnNGQURzRFZ5NEREd0pDQVFOeWRBZ2ZBaWNUQWlZV0F4SUkxZ051Q0o0Q1p4TUlTOG9EY3dp
UUF3MTBud04zCkNFb0RDM1FJZFQ1eXV3SWlFd2lTQ0hZSVBRaG9DSkVJblFJbUV3SlVGQVFIQS9V
TkFpd0JXQVFCQTR4eUNHWURiUWhLQXhNSTFnTUsKQ0lJS1N3SWxGQWcrQlVJQ0l4TUZBQUlwRkFn
ckJVSzdCUUE3TkFNZUNDNEtVZ04wSUFOVXJBcVJnNUVJVlFxUmc1RURMUWhZQ2dnOApBbFFVZ3dn
dmtjbVJDTXdLUzc0S1N3UDBmcm9LU3doTEFnSUFBUUVBQUFBQUFBQUFBQlVBQUFBQUFBQUFBUUJW
RlFBQUFBQUFBQUM4CkFBQUFBQUFBQUFFQVhNSUFBQUFBQUFBQTJnQUFBQUFBQUFBQkFGd0FBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0FBQUEKQUFBQUFBRUFWQklBQUFBQUFBQUF2Z0FB
QUFBQUFBQUJBRjdDQUFBQUFBQUFBTm9BQUFBQUFBQUFBUUJlQUFBQUFBQUFBQUFBQUFBQQpBQUFB
QU5BQUFBQUFBQUFBMmdBQUFBQUFBQUFCQUZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBNEFBQUFBQUFB
QURwQUFBQUFBQUFBQUVBClZla0FBQUFBQUFBQUVnRUFBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFB
QUFBQUFBQXJBRUFBQUFBQUFEZUFRQUFBQUFBQUFFQVV3QUEKQUFBQUFBQUFBQUFBQUFBQUFBQ3NB
UUFBQUFBQUFONEJBQUFBQUFBQUFRQlRBQUFBQUFBQUFBQUFBQUFBQUFBQUFGZ0NBQUFBQUFBQQpk
Z0lBQUFBQUFBQUJBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQUlBQUFBQUFBRHFBZ0FBQUFBQUFB
RUFWZW9DQUFBQUFBQUFFQVFBCkFBQUFBQUFEQUhhQWZnQUFBQUFBQUFBQUFBQUFBQUFBQUFDUUFn
QUFBQUFBQUtvQ0FBQUFBQUFBQVFCVXFnSUFBQUFBQUFEMEFnQUEKQUFBQUFBRUFVdlFDQUFBQUFB
QUErd0lBQUFBQUFBQUJBRkg3QWdBQUFBQUFBQkFFQUFBQUFBQUFBd0IyaUg0QUFBQUFBQUFBQUFB
QQpBQUFBQUFBQWtBSUFBQUFBQUFDbkFnQUFBQUFBQUFFQVVhY0NBQUFBQUFBQTZRTUFBQUFBQUFB
QkFGd0FBQUFBQUFBQUFBQUFBQUFBCkFBQUEwUU1BQUFBQUFBRGNBd0FBQUFBQUFBRUFVZ0FBQUFB
QUFBQUFBQUFBQUFBQUFBQVFCQUFBQUFBQUFCMEVBQUFBQUFBQUFRQlYKSFFRQUFBQUFBQUJGQkFB
QUFBQUFBQUVBVXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQkFBQUFBQUFBQm9FQUFBQUFBQUFBUUJV
R2dRQQpBQUFBQUFCVUJBQUFBQUFBQUFFQVhnQUFBQUFBQUFBQUFBQUFBQUFBQUFCZ0JBQUFBQUFB
QUdrRUFBQUFBQUFBQVFCVmFRUUFBQUFBCkFBQ1RCQUFBQUFBQUFBRUFVd0FBQUFBQUFBQUFBQUFB
QUFBQUFBQ2dCQUFBQUFBQUFMQUVBQUFBQUFBQUFRQlZzQVFBQUFBQUFBQk4KQlFBQUFBQUFBQUVB
WDA4RkFBQUFBQUFBWndVQUFBQUFBQUFCQUY4QUFBQUFBQUFBQUFBQUFBQUFBQUFBWFFVQUFBQUFB
QUJuQlFBQQpBQUFBQUFFQVZBQUFBQUFBQUFBQUFBQUFBQUFBQUFCd0JRQUFBQUFBQUhrRkFBQUFB
QUFBQVFCVmVRVUFBQUFBQUFDdEJRQUFBQUFBCkFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZC
UUFBQUFBQUFKOEZBQUFBQUFBQUFRQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKSUYKQUFBQUFBQUFy
UVVBQUFBQUFBQUJBRkVBQUFBQUFBQUFBQUFBQUFBQUFBQUF3QVVBQUFBQUFBRExCUUFBQUFBQUFB
RUFWUUFBQUFBQQpBQUFBQUFBQUFBQUFBQURBQlFBQUFBQUFBTWNGQUFBQUFBQUFBUUJVeHdVQUFB
QUFBQURWQlFBQUFBQUFBQUVBVU5VRkFBQUFBQUFBCjRnVUFBQUFBQUFBQkFGRUFBQUFBQUFBQUFB
QUFBQUFBQUFBQThBVUFBQUFBQUFEOUJRQUFBQUFBQUFFQVZmMEZBQUFBQUFBQUV3WUEKQUFBQUFB
QUJBRk1BQUFBQUFBQUFBQUFBQUFBQUFBQUE4QVVBQUFBQUFBRDZCUUFBQUFBQUFBRUFWUG9GQUFB
QUFBQUFJZ1lBQUFBQQpBQUFCQUY0QUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFZQUFBQUFBQUE1QmdB
QUFBQUFBQUVBVlRrR0FBQUFBQUFBVlFZQUFBQUFBQUFCCkFGTUFBQUFBQUFBQUFBQUFBQUFBQUFB
QVlBWUFBQUFBQUFCNkJnQUFBQUFBQUFFQVZIb0dBQUFBQUFBQWlnY0FBQUFBQUFBQkFGNEEKQUFB
QUFBQUFBQUFBQUFBQUFBQUFZQVlBQUFBQUFBQjNCZ0FBQUFBQUFBRUFVWGNHQUFBQUFBQUFpZ2NB
QUFBQUFBQUJBRk1BQUFBQQpBQUFBQUFBQUFBQUFBQUFBT2djQUFBQUFBQUJoQndBQUFBQUFBQUVB
WGdBQUFBQUFBQUFBQUFBQUFBQUFBQUJoQndBQUFBQUFBTzBICkFBQUFBQUFBQVFCZUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUh3SEFBQUFBQUFBb3djQUFBQUFBQUFDQUJBQW93Y0FBQUFBQUFEdEJ3QUEK
QUFBQUFBRUFVd0FBQUFBQUFBQUFBQUFBQUFBQUFBREpCd0FBQUFBQUFPZ0hBQUFBQUFBQUFRQlFB
QUFBQUFBQUFBQUFBQUFBQUFBQQpBQU1MQUFBQUFBQUFMQXNBQUFBQUFBQUJBRk1BQUFBQUFBQUFB
QUFBQUFBQUFBQUFKd3NBQUFBQUFBQXNDd0FBQUFBQUFBRUFYd0FBCkFBQUFBQUFBQUFBQUFBQUFB
QUFzQ3dBQUFBQUFBRE1MQUFBQUFBQUFBUUJmQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkFMQUFBQUFB
QUEKeHdzQUFBQUFBQUFCQUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBdVFzQUFBQUFBQUE5REFBQUFB
QUFBQUVBWHdBQUFBQUFBQUFBQUFBQQpBQUFBQUFETkN3QUFBQUFBQVBNTEFBQUFBQUFBQWdBUUFQ
TUxBQUFBQUFBQVBRd0FBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFHUXdBQUFBQUFB
QTREQUFBQUFBQUFBRUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFEQUFBQUFBQUFGb01BQUFBQUFB
QUFRQlYKQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFNQUFBQUFBQUFXZ3dBQUFBQUFBQUJBRlFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFVQXdBQUFBQQpBQUJhREFBQUFBQUFBQUVBVVFBQUFBQUFBQUFBQUFB
QUFBQUFBQUJRREFBQUFBQUFBRm9NQUFBQUFBQUFBUUJTQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUdB
TUFBQUFBQUFBYVF3QUFBQUFBQUFCQUZWcERBQUFBQUFBQUlNTUFBQUFBQUFBQVFCVEFBQUFBQUFB
QUFBQUFBQUEKQUFBQUFHa01BQUFBQUFBQWlRd0FBQUFBQUFBQkFGTUFBQUFBQUFBQUFBQUFBQUFB
QUFBQWtBd0FBQUFBQUFDWkRBQUFBQUFBQUFFQQpWWmtNQUFBQUFBQUFzd3dBQUFBQUFBQUJBRk1B
QUFBQUFBQUFBQUFBQUFBQUFBQUF3QXdBQUFBQUFBRFVEQUFBQUFBQUFBRUFWZFFNCkFBQUFBQUFB
Y1EwQUFBQUFBQUFCQUZNQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0F3QUFBQUFBQURsREFBQUFBQUFB
QUVBVk9VTUFBQUEKQUFBQTdnd0FBQUFBQUFBQkFGVUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdBd0FB
QUFBQUFEUkRBQUFBQUFBQUFFQVVkRU1BQUFBQUFBQQpBQTBBQUFBQUFBQUJBRjhBRFFBQUFBQUFB
QW9OQUFBQUFBQUFBUUJWQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFNQUFBQUFBQUF6Z3dBCkFBQUFB
QUFCQUZMT0RBQUFBQUFBQUJrTkFBQUFBQUFBQVFCZUdRMEFBQUFBQUFBakRRQUFBQUFBQUFFQVZR
QUFBQUFBQUFBQUFBQUEKQUFBQUFBQ0FEUUFBQUFBQUFJNE5BQUFBQUFBQUFRQlZBQUFBQUFBQUFB
QUFBQUFBQUFBQUFJQU5BQUFBQUFBQWpnMEFBQUFBQUFBQgpBRlFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFrQTBBQUFBQUFBQ2VEUUFBQUFBQUFBRUFWUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dEUUFBCkFB
QUFBS3NOQUFBQUFBQUFBUUJWQUFBQUFBQUFBQUFBQUFBQUFBQUFBTmNCQUFBQ0FBQUFBQUFYRmdB
QTBBOEFBRjlmWW14dlkydGYKYkdsMFpYSmhiRjh4QU9VRkFBQmthWE53WVhSamFGOXhkV1YxWlY5
ekFQWU9BQUJmWDJKc2IyTnJYMlJsYzJOeWFYQjBiM0lBdUJVQQpBRjlmWW14dlkydGZiR2wwWlhK
aGJGOHpBSkVUQUFCZlgySnNiMk5yWDJ4cGRHVnlZV3hmTWdCREZBQUFUbE5OZFhSaFlteGxRWEp5
CllYa0FuaFFBQUU1VFRuVnRZbVZ5QUc4QUFBQk9VMU5sZEFBckFRQUFZWFYwYjE5d2RISThVR3gx
WjJsdVFteGhZMnRzYVhOMFBnQWYKRHdBQVgxOWliRzlqYTE5c2FYUmxjbUZzWDJkbGJtVnlhV01B
ZGhBQUFIUnBiV1YyWVd3QW1RTUFBRzlpYW1OZmIySnFaV04wQU1JRApBQUJPVTBGeWNtRjVBRnNV
QUFCT1UwMTFkR0ZpYkdWRWFXTjBhVzl1WVhKNUFPUURBQUJRYkhWbmFXNUNiR0ZqYTJ4cGMzUUF5
Z0FBCkFHRjFkRzlmY0hSeVgzSmxaanhRYkhWbmFXNUNiR0ZqYTJ4cGMzUStBTllNQUFCZlRsTlNZ
VzVuWlFCWEFBQUFUbE5FYVdOMGFXOXUKWVhKNUFENEFBQUJPVTA5aWFtVmpkQUNPQUFBQVRsTlRk
SEpwYm1jQVhSRUFBSFJwYldWemNHVmpBSW9GQUFCa2FYTndZWFJqYUY5dgpZbXBsWTNSZmN3QVpF
Z0FBYzNSaGRBQnpGQUFBVGxOTmRYUmhZbXhsVTJWMEFJc1VBQUJPVTFaaGJIVmxBQUFBQUFCQmNI
QnNaU0JNClRGWk5JSFpsY25OcGIyNGdOUzR3SUNoamJHRnVaeTAxTURBdU1DNDJNQ2tnS0dKaGMy
VmtJRzl1SUV4TVZrMGdNeTR6YzNadUtRQXYKVlhObGNuTXZZV3hsZUdOb2NtbHpkR1Z1YzJWdUwz
ZGxZbXRwZEM5SmJuUmxjbTVoYkM5WFpXSkxhWFJUZVhOMFpXMUpiblJsY21aaApZMlV2VUd4MVoy
bHVRbXhoWTJ0c2FYTjBMbTF0QUM5VmMyVnljeTloYkdWNFkyaHlhWE4wWlc1elpXNHZkMlZpYTJs
MEwwbHVkR1Z5CmJtRnNMMWRsWWt0cGRGTjVjM1JsYlVsdWRHVnlabUZqWlFCd2JIVm5hVzVDYkdG
amEyeHBjM1FBYlY5aWRXNWtiR1ZKUkZSdlRXbHUKYVcxMWJWWmxjbk5wYjI0QWFYTmhBRzlpYW1O
ZlkyeGhjM01BUTJ4aGMzTUFUbE5QWW1wbFkzUUFUbE5FYVdOMGFXOXVZWEo1QUcxZgpZblZ1Wkd4
bFNVUlViMEpzYjJOclpXUldaWEp6YVc5dWN3QnRYMkoxYm1Sc1pVbEVjMWRwZEdoQmRtRnBiR0Zp
YkdWVmNHUmhkR1Z6CkFFNVRVMlYwQUY5YVRqRTFVR3gxWjJsdVFteGhZMnRzYVhOME1UZHphRzkx
YkdSQ2JHOWphMUJzZFdkcGJrVlFPRTVUVTNSeWFXNW4KVXpGZkFITm9iM1ZzWkVKc2IyTnJVR3gx
WjJsdUFHSnZiMndBVGxOVGRISnBibWNBWDFwT01UVlFiSFZuYVc1Q2JHRmphMnhwYzNReQpNMmx6
VUd4MVoybHVWWEJrWVhSbFFYWmhhV3hoWW14bFJWQTRUbE5UZEhKcGJtY0FhWE5RYkhWbmFXNVZj
R1JoZEdWQmRtRnBiR0ZpCmJHVUFYMXBPTVRWUWJIVm5hVzVDYkdGamEyeHBjM1EyWTNKbFlYUmxS
VkE0VGxOVGRISnBibWRRTVRGdlltcGpYMjlpYW1WamRBQmoKY21WaGRHVUFYMTl3ZEhKZkFHRjFk
RzlmY0hSeUFGOWFUbE4wTTE5Zk1UaGhkWFJ2WDNCMGNra3hOVkJzZFdkcGJrSnNZV05yYkdsegpk
RVZoVTBWU1V6SmZBRzl3WlhKaGRHOXlQUUJmV2s1VGRETmZYekU0WVhWMGIxOXdkSEpKTVRWUWJI
Vm5hVzVDYkdGamEyeHBjM1JGCllWTkZUbE5mTVRKaGRYUnZYM0IwY2w5eVpXWkpVekZmUlVVQVlY
VjBiMTl3ZEhKZmNtVm1BSDVoZFhSdlgzQjBjbDl5WldZQVgxOHgKQUhOMFpBQmZWSEFBWVhWMGIx
OXdkSEpmY21WbVBGQnNkV2RwYmtKc1lXTnJiR2x6ZEQ0QWZtRjFkRzlmY0hSeUFGOWFUa3RUZERO
ZgpYekU0WVhWMGIxOXdkSEpKTVRWUWJIVm5hVzVDYkdGamEyeHBjM1JGWkdWRmRnQnZjR1Z5WVhS
dmNpb0FYMXBPUzFOME0xOWZNVGhoCmRYUnZYM0IwY2treE5WQnNkV2RwYmtKc1lXTnJiR2x6ZEVW
d2RFVjJBRzl3WlhKaGRHOXlMVDRBWDFwT1MxTjBNMTlmTVRoaGRYUnYKWDNCMGNra3hOVkJzZFdk
cGJrSnNZV05yYkdsemRFVXpaMlYwUlhZQVoyVjBBRjlhVGxOME0xOWZNVGhoZFhSdlgzQjBja2t4
TlZCcwpkV2RwYmtKc1lXTnJiR2x6ZEVVM2NtVnNaV0Z6WlVWMkFISmxiR1ZoYzJVQVgxcE9VM1F6
WDE4eE9HRjFkRzlmY0hSeVNURTFVR3gxCloybHVRbXhoWTJ0c2FYTjBSVFZ5WlhObGRFVlFVekZm
QUhKbGMyVjBBR0YxZEc5ZmNIUnlQRkJzZFdkcGJrSnNZV05yYkdsemRENEEKYjJKcVkxOXZZbXBs
WTNRQWFXUUFmbEJzZFdkcGJrSnNZV05yYkdsemRBQmZXazR4TlZCc2RXZHBia0pzWVdOcmJHbHpk
REUwYzNCcwphWFJQVTFabGNuTnBiMjVGVURoT1UxTjBjbWx1WndCemNHeHBkRTlUVm1WeWMybHZi
Z0JPVTBGeWNtRjVBRjlhVGtzeE5WQnNkV2RwCmJrSnNZV05yYkdsemRERXhjMmh2ZFd4a1FteHZZ
MnRGVURoT1UxTjBjbWx1WjFNeFh3QnphRzkxYkdSQ2JHOWphd0JmV2s1TE1UVlEKYkhWbmFXNUNi
R0ZqYTJ4cGMzUXhOMmx6VlhCa1lYUmxRWFpoYVd4aFlteGxSVkE0VGxOVGRISnBibWNBYVhOVmNH
UmhkR1ZCZG1GcApiR0ZpYkdVQVVHeDFaMmx1UW14aFkydHNhWE4wQUY5YVRERTFjR3gxWjJsdVFt
eGhZMnRzYVhOMEFIQnNkV2RwYmtKc1lXTnJiR2x6CmRFTm9aV05yVkdsdFpVbHVkR1Z5ZG1Gc0FH
eHZibWNnYVc1MEFGOWZaR0Z5ZDJsdVgzUnBiV1ZmZEFCMGFXMWxYM1FBY0d4MVoybHUKUW14aFky
dHNhWE4wVlhCa1lYUmxWR2x0WlFCZldrd3lOWEJzZFdkcGJrSnNZV05yYkdsemRGVndaR0YwWlZS
cGJXVUFjR3gxWjJsdQpRbXhoWTJ0c2FYTjBUbVY0ZEVOb1pXTnJWR2x0WlFCZldrd3lPSEJzZFdk
cGJrSnNZV05yYkdsemRFNWxlSFJEYUdWamExUnBiV1VBCmNHeDFaMmx1UW14aFkydHNhWE4wVVhW
bGRXVUFaR2x6Y0dGMFkyaGZiMkpxWldOMFgzTUFmbVJwYzNCaGRHTm9YMjlpYW1WamRGOXoKQUY5
YVRqRTNaR2x6Y0dGMFkyaGZiMkpxWldOMFgzTmhVMFZTUzFOZkFHUnBjM0JoZEdOb1gzRjFaWFZs
WDNNQVpHbHpjR0YwWTJoZgpjWFZsZFdWZmRBQmZXa3d5TUhCc2RXZHBia0pzWVdOcmJHbHpkRkYx
WlhWbEFHOXVZMlVBWkdsemNHRjBZMmhmYjI1alpWOTBBRjlhClRETXdhVzVwZEdsaGJHbDZaVkJz
ZFdkcGJrSnNZV05yYkdsemRGRjFaWFZsZGdCcGJtbDBhV0ZzYVhwbFVHeDFaMmx1UW14aFkydHMK
YVhOMFVYVmxkV1VBWDE5ZldrNHhOVkJzZFdkcGJrSnNZV05yYkdsemRERTNjMmh2ZFd4a1FteHZZ
MnRRYkhWbmFXNUZVRGhPVTFOMApjbWx1WjFNeFgxOWliRzlqYTE5cGJuWnZhMlVBWDE5amIzQjVY
MmhsYkhCbGNsOWliRzlqYTE4QVgxOWtaWE4wY205NVgyaGxiSEJsCmNsOWliRzlqYTE4QVgxOWZX
azR4TlZCc2RXZHBia0pzWVdOcmJHbHpkREl6YVhOUWJIVm5hVzVWY0dSaGRHVkJkbUZwYkdGaWJH
VkYKVURoT1UxTjBjbWx1WjE5aWJHOWphMTlwYm5admEyVUFYMXBPTVRWUWJIVm5hVzVDYkdGamEy
eHBjM1JFTVVWMkFGOWFUakUxVUd4MQpaMmx1UW14aFkydHNhWE4wUkRKRmRnQmZXazR4TlZCc2RX
ZHBia0pzWVdOcmJHbHpkRU14UlZBeE1rNVRSR2xqZEdsdmJtRnllVk14ClgxQTFUbE5UWlhRQVgx
cE9NVFZRYkhWbmFXNUNiR0ZqYTJ4cGMzUkRNa1ZRTVRKT1UwUnBZM1JwYjI1aGNubFRNVjlRTlU1
VFUyVjAKQUZkTFUyaHZkV3hrUW14dlkydFFiSFZuYVc0QWMybG5ibVZrSUdOb1lYSUFRazlQVEFC
WFMwbHpVR3gxWjJsdVZYQmtZWFJsUVhaaAphV3hoWW14bEFGOWFUbE4wTTE5Zk1UaGhkWFJ2WDNC
MGNra3hOVkJzZFdkcGJrSnNZV05yYkdsemRFVkRNVVZPVTE4eE1tRjFkRzlmCmNIUnlYM0psWmts
VE1WOUZSUUJmV2s1VGRETmZYekU0WVhWMGIxOXdkSEpKTVRWUWJIVm5hVzVDYkdGamEyeHBjM1JG
UXpKRlRsTmYKTVRKaGRYUnZYM0IwY2w5eVpXWkpVekZmUlVVQVgxVndBRjlhVGxOME0xOWZNVGho
ZFhSdlgzQjBja2t4TlZCc2RXZHBia0pzWVdOcgpiR2x6ZEVWamRrNVRYekV5WVhWMGIxOXdkSEpm
Y21WbVNWUmZSVVZKVXpGZlJVVjJBRzl3WlhKaGRHOXlJR0YxZEc5ZmNIUnlYM0psClpqeFFiSFZu
YVc1Q2JHRmphMnhwYzNRK0FGOWFUbE4wTTE5Zk1UaGhkWFJ2WDNCMGNra3hOVkJzZFdkcGJrSnNZ
V05yYkdsemRFVkQKTVVWUVV6RmZBRjlhVGxOME0xOWZNVGhoZFhSdlgzQjBja2t4TlZCc2RXZHBi
a0pzWVdOcmJHbHpkRVZETWtWUVV6RmZBRjlhVGxOMApNMTlmTVRoaGRYUnZYM0IwY2treE5WQnNk
V2RwYmtKc1lXTnJiR2x6ZEVWRU1VVjJBRjlhVGxOME0xOWZNVGhoZFhSdlgzQjBja2t4Ck5WQnNk
V2RwYmtKc1lXTnJiR2x6ZEVWRU1rVjJBRjlhVERFeFRsTk5ZV3RsVW1GdVoyVnRiUUJPVTAxaGEy
VlNZVzVuWlFCc2IyTmgKZEdsdmJnQnNiMjVuSUhWdWMybG5ibVZrSUdsdWRBQk9VMVZKYm5SbFoy
VnlBR3hsYm1kMGFBQmZUbE5TWVc1blpRQitYMDVUVW1GdQpaMlVBVGxOU1lXNW5aUUJmV2t3ek1u
SmxiRzloWkZCc2RXZHBia0pzWVdOcmJHbHpkRWxtVG1WalpYTnpZWEo1ZGdCeVpXeHZZV1JRCmJI
Vm5hVzVDYkdGamEyeHBjM1JKWms1bFkyVnpjMkZ5ZVFCZlgxOWFURE13YVc1cGRHbGhiR2w2WlZC
c2RXZHBia0pzWVdOcmJHbHoKZEZGMVpYVmxkbDlpYkc5amExOXBiblp2YTJVQVgyUnBjM0JoZEdO
b1gyOXVZMlVBVGxORFlYTmxTVzV6Wlc1emFYUnBkbVZUWldGeQpZMmdBVGxOTWFYUmxjbUZzVTJW
aGNtTm9BRTVUUW1GamEzZGhjbVJ6VTJWaGNtTm9BRTVUUVc1amFHOXlaV1JUWldGeVkyZ0FUbE5P
CmRXMWxjbWxqVTJWaGNtTm9BRTVUUkdsaFkzSnBkR2xqU1c1elpXNXphWFJwZG1WVFpXRnlZMmdB
VGxOWGFXUjBhRWx1YzJWdWMybDAKYVhabFUyVmhjbU5vQUU1VFJtOXlZMlZrVDNKa1pYSnBibWRU
WldGeVkyZ0FUbE5TWldkMWJHRnlSWGh3Y21WemMybHZibE5sWVhKagphQUJPVTA5eVpHVnlaV1JC
YzJObGJtUnBibWNBVGxOUGNtUmxjbVZrVTJGdFpRQk9VMDl5WkdWeVpXUkVaWE5qWlc1a2FXNW5B
RTVUClNXNTBaV2RsY2dCT1UwTnZiWEJoY21semIyNVNaWE4xYkhRQVRsTlFjbTl3WlhKMGVVeHBj
M1JKYlcxMWRHRmliR1VBVGxOUWNtOXcKWlhKMGVVeHBjM1JOZFhSaFlteGxRMjl1ZEdGcGJtVnlj
d0JPVTFCeWIzQmxjblI1VEdsemRFMTFkR0ZpYkdWRGIyNTBZV2x1WlhKegpRVzVrVEdWaGRtVnpB
R0oxYm1Sc1pVbGtaVzUwYVdacFpYSUFZblZ1Wkd4bFZtVnljMmx2YmxOMGNtbHVad0JpYkc5amF3
QmZYMmx6CllRQmZYMlpzWVdkekFHbHVkQUJmWDNKbGMyVnlkbVZrQUY5ZlJuVnVZMUIwY2dCZlgy
UmxjMk55YVhCMGIzSUFjbVZ6WlhKMlpXUUEKVTJsNlpRQmZYMkpzYjJOclgyUmxjMk55YVhCMGIz
SUFYMTlpYkc5amExOXNhWFJsY21Gc1gyZGxibVZ5YVdNQVpHbHpjR0YwWTJoZgpZbXh2WTJ0ZmRB
QXVZbXh2WTJ0ZlpHVnpZM0pwY0hSdmNnQmZYMkpzYjJOclgyUmxjMk55YVhCMGIzSmZkMmwwYUdO
dmNIbGthWE53CmIzTmxBRjlmWm05eWQyRnlaR2x1WndCZlgzTnBlbVVBWDE5aWJHOWphMTlzYVhS
bGNtRnNYekVBZEdocGN3QmZYM1FBZEdsdFpWWmgKYkFCMGRsOXpaV01BZEhaZmRYTmxZd0JmWDJs
dWRETXlYM1FBWDE5a1lYSjNhVzVmYzNWelpXTnZibVJ6WDNRQWRHbHRaWFpoYkFCegpkR0YwUW5W
bUFITjBYMlJsZGdCZlgyUmhjbmRwYmw5a1pYWmZkQUJrWlhaZmRBQnpkRjl0YjJSbEFIVnVjMmxu
Ym1Wa0lITm9iM0owCkFGOWZkV2x1ZERFMlgzUUFYMTlrWVhKM2FXNWZiVzlrWlY5MEFHMXZaR1Zm
ZEFCemRGOXViR2x1YXdCdWJHbHVhMTkwQUhOMFgybHUKYndCc2IyNW5JR3h2Ym1jZ2RXNXphV2R1
WldRZ2FXNTBBRjlmZFdsdWREWTBYM1FBWDE5a1lYSjNhVzVmYVc1dk5qUmZkQUJ6ZEY5MQphV1FB
ZFc1emFXZHVaV1FnYVc1MEFGOWZkV2x1ZERNeVgzUUFYMTlrWVhKM2FXNWZkV2xrWDNRQWRXbGtY
M1FBYzNSZloybGtBRjlmClpHRnlkMmx1WDJkcFpGOTBBR2RwWkY5MEFITjBYM0prWlhZQWMzUmZZ
WFJwYldWemNHVmpBSFIyWDI1elpXTUFkR2x0WlhOd1pXTUEKYzNSZmJYUnBiV1Z6Y0dWakFITjBY
Mk4wYVcxbGMzQmxZd0J6ZEY5aWFYSjBhSFJwYldWemNHVmpBSE4wWDNOcGVtVUFiRzl1WnlCcwpi
MjVuSUdsdWRBQmZYMmx1ZERZMFgzUUFYMTlrWVhKM2FXNWZiMlptWDNRQWIyWm1YM1FBYzNSZllt
eHZZMnR6QUY5ZlpHRnlkMmx1ClgySnNhMk51ZEY5MEFHSnNhMk51ZEY5MEFITjBYMkpzYTNOcGVt
VUFYMTlrWVhKM2FXNWZZbXhyYzJsNlpWOTBBR0pzYTNOcGVtVmYKZEFCemRGOW1iR0ZuY3dCemRG
OW5aVzRBYzNSZmJITndZWEpsQUhOMFgzRnpjR0Z5WlFCemRHRjBBRzFwYm1sdGRXMVdaWEp6YVc5
dQpBR0pzYjJOclpXUldaWEp6YVc5dUFBQmZYMkpzYjJOclgyeHBkR1Z5WVd4Zk1nQnZjMVpsY25O
cGIyNEFZMjl0Y0c5dVpXNTBjd0J5ClpYTjFiSFFBVGxOTmRYUmhZbXhsUVhKeVlYa0FhUUIyWlhK
emFXOXVVM1J5YVc1bkFGOWZjQUJ3Y205d1pYSjBlVXhwYzNRQVpHbGoKZEdsdmJtRnllUUJpZFc1
a2JHVkpSRlJ2VFdsdWFXMTFiVlpsY25OcGIyNEFUbE5OZFhSaFlteGxSR2xqZEdsdmJtRnllUUJp
ZFc1awpiR1ZKUkZSdlFteHZZMnRsWkZabGNuTnBiMjV6QUdKMWJtUnNaVWxFYzFkcGRHaEJkbUZw
YkdGaWJHVlZjR1JoZEdWekFFNVRUWFYwCllXSnNaVk5sZEFCdmMxWmxjbk5wYjI1RGIyMXdiMjVs
Ym5RQVluVnVaR3hsU1VSekFHSjFibVJzWlVsRUFIWmxjbk5wYjI1SmJtWnYKQUdKc2IyTnJaV1JX
WlhKemFXOXVjd0IxY0dSaGRHVkJkbUZwYkdGaWJHVUFUbE5XWVd4MVpRQk9VMDUxYldKbGNnQmZY
MkpzYjJOcgpYMnhwZEdWeVlXeGZNd0JzYjJNQWJHVnVBSElBY0hKbFpHbGpZWFJsQUJVQUFBQUFB
QUFBSXdBQUFBQUFBQURDQUFBQUFBQUFBTm9BCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QlVBQUFBQUFBQUFJd0FBQUFBQUFBRENBQUFBQUFBQUFOb0FBQUFBQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFMQUVBQUFBQUFBQXZnUUFBQUFBQUFCUEJRQUFBQUFBQUdjRkFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQQpBQUFBQUxBRUFBQUFBQUFBdmdRQUFBQUFBQUJQQlFBQUFBQUFBR2NGQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJb0ZBQUFBCkFBQUFqZ1VBQUFBQUFBQ1NCUUFBQUFBQUFK
OEZBQUFBQUFBQXB3VUFBQUFBQUFDcEJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBNkJ3
QUFBQUFBQUVFSEFBQUFBQUFBVVFjQUFBQUFBQUR0QndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQXZDQUFBQUFBQQpBRFlJQUFBQUFBQUFOZ2tBQUFBQUFBQnlDUUFBQUFBQUFIa0pBQUFBQUFB
QW1Ba0FBQUFBQUFDZkNRQUFBQUFBQUdZS0FBQUFBQUFBCmdRb0FBQUFBQUFDWENnQUFBQUFBQUZn
TEFBQUFBQUFBZHdzQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMd2dBQUFBQUFBQTIKQ0FB
QUFBQUFBSlVJQUFBQUFBQUF0QWdBQUFBQUFBRFBDQUFBQUFBQUFISUpBQUFBQUFBQWVRa0FBQUFB
QUFDWUNRQUFBQUFBQUo4SgpBQUFBQUFBQVpnb0FBQUFBQUFDQkNnQUFBQUFBQUpjS0FBQUFBQUFB
V0FzQUFBQUFBQUIzQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUF2Q0FBQUFBQUFBRDBJ
QUFBQUFBQUFid2dBQUFBQUFBQnlDUUFBQUFBQUFIa0pBQUFBQUFBQTlnb0FBQUFBQUFCWUN3QUEK
QUFBQUFIY0xBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURvSEFBQUFBQUFBY2drQUFBQUFB
QUI1Q1FBQUFBQUFBUFlLQUFBQQpBQUFBV0FzQUFBQUFBQUIzQ3dBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBRHdDd0FBQUFBQUFDd01BQUFBQUFBQU9Bd0FBQUFBCkFBQTdEQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFEOEFBQUFBZ0FJQlFzQUFBVUxBQUFDdHdZQUFCVUFBQUFBQUFBQXhR
Y0EKQUxBRUFBQUFBQUFBc3dZQUFOZ0dBQUFDckFZQUFCVUFBQUFBQUFBQXVnY0FBTEFFQUFBQUFB
QUF5Z2NBQUZFRUFBQUNzdzBBQUxFQgpBQUFBQUFBQVdCVUFBR2tNQUFBQUFBQUFzUWNBQUZFRUFB
QUJqZzBBQUxFQkFBQUFBQUFBdVFNQUFPa0RBQUFCMXcwQUFGRUNBQUFBCkFBQUE1Z1FBQUJvRkFB
QUJIQWdBQUlvRkFBQUFBQUFBWWdRQUFKSUVBQUFCSWdrQUFEb0hBQUFBQUFBQXhBZ0FBRTRDQUFB
Q3pna0EKQUNjTEFBQUFBQUFBRFFvQUFDd0xBQUFBQUFBQWhBZ0FBRTRDQUFBQ3B3a0FBQ2NMQUFB
QUFBQUE5Z2tBQUN3TEFBQUFBQUFBU0ZOQgpTQUVBQUFBV0FBQUFMQUFBQUF3QUFBQUFBQUFBQVFB
QUFBRUFCZ0FBQUFBQUFRQUFBQU1BQUFBR0FBQUFCd0FBQUFvQUFBQUxBQUFBCkRnQUFBQThBQUFB
UkFBQUFGZ0FBQVAvLy8vOFhBQUFBR1FBQUFCb0FBQUFiQUFBQUh3QUFBQ0VBQUFBakFBQUFKZ0FB
QUNjQUFBQXAKQUFBQTRoVkRlelBFcDBXZll5SmNVbmozNlNxdXQ2RjR3UkdLMDZBVDZhYjhTazBP
VkEzRm1FQmR1N1ZQbHF2Z0lQS21pTkFiaDhxaQo0R2xUMmRlUE5pd1lYN2hvd0xxSlpwbVNjOGZP
Z3htZ0IrN05YZUxUdWJJVjl3RHNyMUJtRjZNKzFJMFN1R3V5dDZGbXRHQ0g2OHhLClp5K3NVZlQ1
M085SjJYaWtxd2I4MzBneXk4Nzl4ZTlWaGhYWFRvRHdVTndBY2l1MHFzUzZFTnp0RmRBOHFzNmJm
RlFzOERzclQ3SDYKYytKSEVWL2c1MnJZQVFBQTdBRUFBQWdDQUFBWUFnQUFLQUlBQUR3Q0FBQk1B
Z0FBWEFJQUFHd0NBQUI4QWdBQWtBSUFBS1FDQUFDMApBZ0FBeEFJQUFOUUNBQURvQWdBQStBSUFB
QXdEQUFBY0F3QUFMQU1BQUVBREFBQlVBd0FBWkFNQUFIUURBQUNFQXdBQWxBTUFBS3dECkFBREFB
d0FBMEFNQUFPQURBQUR3QXdBQUFBUUFBQkFFQUFBZ0JBQUFOQVFBQUVRRUFBQlVCQUFBYUFRQUFI
d0VBQUNNQkFBQW5BUUEKQUxBRUFBRFFCQUFBNEFRQUFMTUdBQUFDQUFBQXJBWUFBTG9IQUFBQUFB
QUFUZ0lBQUFRQUFBQ25DUUFBemdrQUFQWUpBQUFOQ2dBQQpBQUFBQU5vRUFBQUJBQUFBc2dvQUFB
QUFBQUFLQmdBQUFRQUFBQWNHQUFBQUFBQUFzUWNBQUFJQUFBQ09EUUFBTFJVQUFBQUFBQUE4CkJR
QUFBUUFBQVBzRUFBQUFBQUFBdWdFQUFBRUFBQUJxQndBQUFBQUFBR2tIQUFBQkFBQUE0Z2NBQUFB
QUFBQ2FBUUFBQVFBQUFFMEcKQUFBQUFBQUFZZ1FBQUFJQUFBQWlDUUFBdGhRQUFBQUFBQUJSQndB
QUFnQUFBRHdIQUFCL0NBQUFBQUFBQUlrS0FBQUJBQUFBUXcwQQpBQUFBQUFEb0JRQUFBUUFBQUdJ
RkFBQUFBQUFBdVFNQUFBRUFBQURYRFFBQUFBQUFBSVFJQUFBQ0FBQUFwd2tBQVBZSkFBQUFBQUFB
CmFnZ0FBQUVBQUFCYkRBQUFBQUFBQUFVTEFBQUNBQUFBdHdZQUFNVUhBQUFBQUFBQXFRUUFBQUVB
QUFDeUNnQUFBQUFBQUdRQkFBQUIKQUFBQVRRWUFBQUFBQUFDU0JBQUFBZ0FBQUNJSkFBQzJGQUFB
QUFBQUFDd0ZBQUFDQUFBQVVnc0FBSzhMQUFBQUFBQUFRQUlBQUFFQQpBQUN0Q0FBQUFBQUFBTEFL
QUFBQkFBQUFRdzBBQUFBQUFBRHBBd0FBQVFBQUFOY05BQUFBQUFBQTh3RUFBQUVBQUFCcUJ3QUFB
QUFBCkFNb0hBQUFEQUFBQXN3MEFBRmdWQUFDQkZRQUFBQUFBQUR3SEFBQUNBQUFBL2dZQUFFRUlB
QUFBQUFBQXJBVUFBQUVBQUFCSkJRQUEKQUFBQUFBc0NBQUFCQUFBQXJRZ0FBQUFBQUFETEJRQUFB
UUFBQUdJRkFBQUFBQUFBaEFZQUFBRUFBQUFIQmdBQUFBQUFBUGNHQUFBQgpBQUFBMUFZQUFBQUFB
QURqQndBQUFRQUFBRklMQUFBQUFBQUFHZ1VBQUFJQUFBQWNDQUFBQ0JRQUFBQUFBQURSQ2dBQUFR
QUFBQmdPCkFBQUFBQUFBUlFnQUFBRUFBQUFNREFBQUFBQUFBT1lFQUFBQ0FBQUFIQWdBQUFnVUFB
QUFBQUFBMkFZQUFBSUFBQUNzQmdBQXVnY0EKQUFBQUFBRE1BQUFBQVFBQUFQc0VBQUFBQUFBQW5n
WUFBQUVBQUFBM0JnQUFBQUFBQU1RSUFBQUNBQUFBemdrQUFBMEtBQUFBQUFBQQpVUVFBQUFVQUFB
Q09EUUFBc3cwQUFDMFZBQUJZRlFBQWdSVUFBQUFBQUFBVUNBQUFBUUFBQUs4TEFBQUFBQUFBa2dV
QUFBRUFBQUJKCkJRQUFBQUFBQUVoVFFVZ0JBQUFBQVFBQUFBQUFBQUFNQUFBQUFBQUFBQUVBQUFB
QkFBWUEvLy8vLzBoVFFVZ0JBQUFBQWdBQUFBSUEKQUFBTUFBQUFBQUFBQUFFQUFBQUJBQVlBQUFB
QUFQLy8vLzl3cTRnTGRGT0lDemdBQUFCSUFBQUE3UUlBQUFFQUFBQzZBQUFBQUFBQQpBT2tDQUFB
QkFBQUF3Z0FBQUFBQUFBQklVMEZJQVFBQUFDSUFBQUJFQUFBQUZBQUFBQUFBQUFBREFBQUFBUUFH
QUFNQUJRQUZBQXNBCkFBQUFBQUVBQUFBR0FBQUEvLy8vL3drQUFBQUtBQUFBLy8vLy93c0FBQUFN
QUFBQS8vLy8vdzRBQUFBU0FBQUEvLy8vLy8vLy8vLy8KLy8vL0Z3QUFBQm9BQUFBZEFBQUFJQUFB
QUNNQUFBQW1BQUFBS0FBQUFDc0FBQUFzQUFBQU1BQUFBRElBQUFBMEFBQUFOUUFBQURZQQpBQUE0
QUFBQVBBQUFBRDRBQUFBL0FBQUFRd0FBQURDQWlBdXJla1Iwa2JPVWZCR2JnbnpwY1htanorQllL
ekxrL21OczdnNTJCczFDCmRESjRXUUM5ZkRYN1Ivb2VIczdYNGZZNEtkaG5Uc0hZaCtEMWFZVTJz
NzM3N0NXQ0Q5RkFNSE05Y1BNMk8waG9oWUVabm54amsrVS8KQzlaWWJydE8rQXpkN09TMEROWlli
cFlxVG1lMER0MGF6L09BVlgxQVo0VjFvWVNHNnZiL2RISnBzUTFxMWdUZG4yK0k0ZXYyLzNSRgor
bkkrN1BiL2RCQU1kclQzb3Y3aHpWM2kwelgvY1BmY0x0LzNFemlkUDFOTkVSQzlvamdwLzV2UklR
YUVKelA2Zkg4UStYQ1dmajJmClZDeUF2RkN1V2FtcDlneVFGWjEwQnI0RmZZRXlEczJUUExKMzkw
a1ByWHZWK3lBYjdJOThlUDhZYWVoMDhUd0VqcFhTQ0Z6WFRDZ2UKd0xKZllqUnh5LzZ4MEFJQUFP
TUNBQUQyQWdBQUNRTUFBQndEQUFBdkF3QUFRZ01BQUZVREFBQm9Bd0FBZXdNQUFJNERBQUNoQXdB
QQp0QU1BQU1jREFBRGFBd0FBN1FNQUFBQUVBQUFUQkFBQUpnUUFBRGtFQUFCTUJBQUFYd1FBQUhJ
RUFBQ0ZCQUFBbUFRQUFLc0VBQUMrCkJBQUEwUVFBQU9RRUFBRDNCQUFBQ2dVQUFCMEZBQUF3QlFB
QVF3VUFBRllGQUFCcEJRQUFmQVVBQUk4RkFBQ2lCUUFBdFFVQUFNZ0YKQUFEYkJRQUE3Z1VBQUFF
R0FBQVVCZ0FBSndZQUFEb0dBQUJOQmdBQVlBWUFBSE1HQUFDR0JnQUFtUVlBQUt3R0FBQy9CZ0FB
MGdZQQpBT1VHQUFENEJnQUFDd2NBQUI0SEFBQXhCd0FBUkFjQUFGY0hBQUJxQndBQWZRY0FBSkFI
QUFDakJ3QUF0Z2NBQU1rSEFBRENEQUFBCkFRQUFBTzhPQUFBa0FBQUFBQUFBTXc4QUFBRUFBQUMw
RVFBQUZnQUFBQUFBQUt3QkFBQUJBQUFBaHdBQUFDUUFBQUFBQUFCbENBQUEKQVFBQUFGQU1BQUFX
QUFBQUFBQUFYQW9BQUFFQUFBREJEQUFBRmdBQUFBQUFBQndSQUFBQkFBQUFuaFFBQUJNQUFBQUFB
QUJ1Q2dBQQpBUUFBQU5ZTUFBQVRBQUlBQUFBQWxROEFBQUVBQUFEMkVRQUFGZ0FBQUFBQUFLME5B
QUFCQUFBQVd4QUFBQllBQUFBQUFBQk9CQUFBCkFRQUFBTElEQUFBV0FBQUFBQUFBU2dvQUFBRUFB
QUM2REFBQUpBQUFBQUFBQUlzRkFBQUJBQUFBSmdVQUFCWUFBQUFBQUFDM0RnQUEKQVFBQUFEMFJB
QUFXQUFBQUFBQUFYQThBQUFFQUFBRFZFUUFBRmdBQUFBQUFBSUlQQUFBQkFBQUE2eEVBQUJZQUFB
QUFBQUJnRGdBQQpBUUFBQVA4UUFBQVdBQUFBQUFBQUNRMEFBQUVBQUFBZkR3QUFFd0FDQUFBQUFN
WU9BQUFCQUFBQVNCRUFBQllBQUFBQUFBRDFBZ0FBCkFRQUFBTW9BQUFBVEFBSUFBQUFBc1FFQUFB
RUFBQUNPQUFBQUV3QUFBQUFBQUpBT0FBQUJBQUFBSEJFQUFCWUFBQUFBQUFERER3QUEKQVFBQUFC
a1NBQUFUQUFJQUFBQUFGQkVBQUFFQUFBQ0xGQUFBRXdBQUFBQUFBR0lHQUFBQkFBQUE1UVVBQUJN
QUFnQUFBQUFHQVFBQQpBUUFBQURNQUFBQVdBQUFBQUFBQUh3WUFBQUVBQUFDS0JRQUFFd0FDQUFB
QUFITUdBQUFCQUFBQS9BVUFBQllBQUFBQUFBQnVEd0FBCkFRQUFBT0FSQUFBV0FBQUFBQUFBT2c0
QUFBRUFBQUR0RUFBQUZnQUFBQUFBQUJVUUFBQUJBQUFBUXhRQUFCTUFBQUFBQUFBUERnQUEKQVFB
QUFNd1FBQUFXQUFBQUFBQUFLQVFBQUFFQUFBQXJBUUFBQWdBQ0FBQUFBSHNOQUFBQkFBQUEwQThB
QUJNQUFnQUFBQUJlQVFBQQpBUUFBQUc4QUFBQVRBQUFBQUFBQWF3NEFBQUVBQUFBS0VRQUFGZ0FB
QUFBQUFCb09BQUFCQUFBQTF4QUFBQllBQUFBQUFBRG5Ed0FBCkFRQUFBSkVUQUFBVEFBSUFBQUFB
b1FRQUFBRUFBQURDQXdBQUV3QUFBQUFBQUNVUkFBQUJBQUFBdUJVQUFCTUFBZ0FBQUFBbER3QUEK
QVFBQUFLMFJBQUFrQUFBQUFBQUF6QTBBQUFFQUFBQjJFQUFBRXdBQ0FBQUFBQ3dGQUFBQkFBQUE1
QU1BQUFJQUFnQUFBQUE5RHdBQQpBUUFBQUw4UkFBQVdBQUFBQUFBQW13NEFBQUVBQUFBbkVRQUFG
Z0FBQUFBQUFJRUtBQUFCQUFBQU9BMEFBQllBQUFBQUFBQk1Ed0FBCkFRQUFBTW9SQUFBV0FBQUFB
QUFBV1FnQUFBRUFBQUJKREFBQUpBQUFBQUFBQU9rT0FBQUJBQUFBWFJFQUFCTUFBZ0FBQUFCcEVB
QUEKQVFBQUFGc1VBQUFUQUFBQUFBQUFxZzRBQUFFQUFBQXlFUUFBRmdBQUFBQUFBRUlFQUFBQkFB
QUFtUU1BQUJNQUFnQUFBQUFNQVFBQQpBUUFBQUQ0QUFBQVRBQUFBQUFBQUZRd0FBQUVBQUFDeERn
QUFCQUFDQUFBQUFPTU5BQUFCQUFBQXJ4QUFBQllBQUFBQUFBRDJEQUFBCkFRQUFBUFlPQUFBVEFB
SUFBQUFBQ3d3QUFBRUFBQUNtRGdBQUZnQUFBQUFBQUNvT0FBQUJBQUFBNGhBQUFCWUFBQUFBQUFD
RERnQUEKQVFBQUFCVVJBQUFrQUFBQUFBQUE4ZzBBQUFFQUFBQzZFQUFBRmdBQUFBQUFBRWtPQUFB
QkFBQUErQkFBQUNRQUFBQUFBQUJ5QlFBQQpBUUFBQUJRRkFBQWtBQUFBQUFBQXRSQUFBQUVBQUFC
ekZBQUFFd0FBQUFBQUFIc0ZBQUFCQUFBQUd3VUFBQllBQUFBQUFBQVZBUUFBCkFRQUFBRmNBQUFB
VEFBQUFBQUFBSVEwQUFBRUFBQUJ4RHdBQUZnQUFBQUFBQUtNR0FBQUJBQUFBSUFZQUFCWUFBQUFB
QUFBQURnQUEKQVFBQUFNVVFBQUFrQUFBQUFBQUF0dzBBQUFFQUFBQm1FQUFBRmdBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBMmdBQUFCRUxCQUVBQUFBQQpBQUFBQUFBQUFBQUFBQUFBNEFBQUFBQUFBQUE1
QUFBQUFRQUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBUUFBQUFBQUFHa0JBQUFoCkFBSUJBQUFB
QUFBQUFBQUFBQUFBQUFBQUFKQUNBQUFBQUFBQWdBRUFBTkZZQlFFQUFBQUFBQUFBQUFBQUFBQUFB
QUFBRUFRQUFBQUEKQUFCS0FBQUFJUUFDQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJnQkFBQUFBQUFB
RGtBQUFBQkFBRUJBQUFBQUFBQUFBQUFBQUFBQUFBQQpBS0FFQUFBQUFBQUF4d0FBQUdFQkF3RUFB
QUFBQUFBQUFBQUFBQUFBQUFBQWNBVUFBQUFBQUFCRUFBQUFBUUFCQVFBQUFBQUFBQUFBCkFBQUFB
QUFBQUFEQUJRQUFBQUFBQUNJQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBUEFGQUFBQUFB
QUFPQUFBQUNFQUFnRUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFNQVlBQUFBQUFBQXJBQUFBQVFBQkFR
QUFBQUFBQUFBQUFBQUFBQUFBQUFCZ0JnQUFBQUFBQUM4RgpBQURSV0FWQkFBQUFBQUFBQUFDOERR
QUFBQUFBQUpBTEFBQUFBQUFBdndBQUFORllCUUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQXdBCkFB
QUFBQUFLQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQmdEQUFBQUFBQUFDa0FBQUFCQUFF
QkFBQUFBQUFBQUFBQUFBQUEKQUFBQUFKQU1BQUFBQUFBQUtRQUFBQUVBQVFFQUFBQUFBQUFBQUFB
QUFBQUFBQUFBd0F3QUFBQUFBQUM2QUFBQUVRc0VBUUFBQUFBQQpBQUFBQUFBQUFBQUFBQUNBRFFB
QUFBQUFBQTRBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQU5BQUFBQUFBQURnQUFBQUFB
CkFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9BMEFBQUFBQUFBYkFBQUFBQUFBQVFBQUFBQUFBQUFB
QUFBQUFBQUFBQUMxRFFBQUFRQUEKSGE0TkFBQjZBQUF0cHcwQUFCUUFBQjJWRFFBQVNRQUFMWVVO
QUFCSEFBQXRhUTBBQUdBQUFCMWVEUUFBWXdBQUxWVU5BQUJnQUFBZApTQTBBQUdNQUFDMC9EUUFB
WUFBQUhUTU5BQUJnQUFBZExBMEFBR01BQUMwa0RRQUFmUUFBTFJJTkFBQUxBQUFWQ3cwQUFIMEFB
QzM1CkRBQUFDd0FBRmZJTUFBQjlBQUF0M2d3QUFIOEFBRDNYREFBQUN3QUFGYlVNQUFCaUFBQXRw
Z3dBQUdJQUFDMmREQUFBWWdBQUxZVU0KQUFCaUFBQXRkZ3dBQUdJQUFDMXREQUFBWWdBQUxWWU1B
QUJQQUFBdE5Bd0FBRnNBQUIwb0RBQUFXUUFBSFI4TUFBQlpBQUFkRWd3QQpBQW9BQUJVTERBQUFD
d0FBRmZrTEFBQUxBQUFWNXdzQUFGc0FBQjNaQ3dBQVd3QUFIZEFMQUFCYkFBQWR3d3NBQUFjQUFC
VzhDd0FBCkN3QUFGYThMQUFCL0FBQTlxQXNBQUFvQUFCV2hDd0FBQ3dBQUZZc0xBQUIxQUFBdGhn
c0FBRzhBQUMxK0N3QUFjQUFBTFhNTEFBQnoKQUFBdGFRc0FBQkVBQUIxaUN3QUFFQUFBSFZzTEFB
QVBBQUFkTmdzQUFIWUFBRDBjQ3dBQVR3QUFMZndLQUFCeEFBQXQ0Z29BQUZ3QQpBQjNMQ2dBQVhB
QUFIWU1LQUFCY0FBQWRhUW9BQUZ3QUFCMUlDZ0FBV1FBQUhUOEtBQUJaQUFBZExRb0FBSDhBQUUw
bkNnQUFDd0FBCkZSZ0tBQUJmQUFBZEVnb0FBQW9BQUJVRkNnQUFmd0FBVGZrSkFBQUxBQUFWM0Fr
QUFGOEFBQjNXQ1FBQUNnQUFGY2tKQUFCL0FBQk4KdlFrQUFBc0FBQld1Q1FBQVh3QUFIYWdKQUFB
S0FBQVZtd2tBQUY4QUFCMTFDUUFBZndBQVBXSUpBQUFMQUFBVlJBa0FBRjhBQUIwbgpDUUFBZmdB
QUxkRUlBQUJjQUFBZHR3Z0FBRndBQUIxN0NBQUFYd0FBSFZ3SUFBQitBQUF0T1FnQUFGOEFBQjBL
Q0FBQVhBQUFIZkFICkFBQmNBQUFkNUFjQUFGc0FBQjNZQndBQVdRQUFIYzhIQUFCWkFBQWR3Z2NB
QUFvQUFCVzdCd0FBQ3dBQUZha0hBQUFMQUFBVmp3Y0EKQUZzQUFCMkJCd0FBV3dBQUhYZ0hBQUJi
QUFBZGF3Y0FBQWNBQUJWa0J3QUFDd0FBRlZRSEFBQUxBQUFWUFFjQUFBb0FBQlVwQndBQQpCd0FB
RlNJSEFBQUxBQUFWRVFjQUFBY0FBQlVLQndBQUN3QUFGZmtHQUFCL0FBQTk4Z1lBQUFjQUFCWHJC
Z0FBQ3dBQUZkMEdBQUJmCkFBQWQxQVlBQUFvQUFCWE5CZ0FBWHdBQUhiY0dBQUJlQUFBZHF3WUFB
RjRBQUIya0JnQUFXZ0FBSFo0R0FBQmFBQUFkbHdZQUFBY0EKQUJXQUJnQUFkZ0FBUFZjR0FBQnJB
QUF0UXdZQUFHc0FBQzBrQmdBQWFnQUFMUXNHQUFCcUFBQXQxd1VBQUg4QUFFM09CUUFBQ3dBQQpG
WnNGQUFCL0FBQk5sUVVBQUFzQUFCV0JCUUFBQmdBQUhYb0ZBQUFGQUFBdFhnVUFBSGtBQUMxWkJR
QUFCQUFBSFZJRkFBQUFBQUFkClBnVUFBR3NBQUMwcUJRQUFld0FBTFI0RkFBQjlBQUF0QXdVQUFB
d0FBQjM4QkFBQUN3QUFIZVlFQUFCdUFBQTkzd1FBQUFFQUFCMnoKQkFBQUFBQUFiWlVFQUFCckFB
QXRnUVFBQUdzQUFDMXpCQUFBYXdBQUxWWUVBQUJxQUFBdFBRUUFBR29BQUMwckJBQUFhZ0FBTFF3
RQpBQUIxQUFBdDdBTUFBSFlBQUQzZUF3QUFmd0FBVGMwREFBQUxBQUFWdkFNQUFGOEFBQjJ2QXdB
QVh3QUFIWllEQUFCY0FBQWRmd01BCkFGd0FBQjFsQXdBQVhRQUFIVndEQUFCZEFBQWRUUU1BQUg0
QUFDMGhBd0FBWEFBQUhRY0RBQUJjQUFBZC9RSUFBRjhBQUIzdEFnQUEKWHdBQUhhMENBQUIyQUFB
OWVRSUFBQWdBQUIxdUFnQUFZZ0FBTFdZQ0FBQUdBQUFkVFFJQUFFc0FBQzA3QWdBQVlRQUFMVEFD
QUFCMwpBQUE5SmdJQUFHd0FBQzBaQWdBQWZ3QUFUUWdDQUFBSEFBQVZBUUlBQUFzQUFCWDFBUUFB
ZndBQVRlOEJBQUFLQUFBVjZBRUFBQWNBCkFCWGhBUUFBQ3dBQUZkWUJBQUFHQUFDTnp3RUFBSEFB
QUMzSEFRQUFZZ0FBTGI0QkFBQmlBQUF0dFFFQUFHSUFBQzJvQVFBQUJnQUEKSFpzQkFBQUlBQUFk
aHdFQUFJRUFBQzE0QVFBQWZ3QUFUWElCQUFBS0FBQVZhd0VBQUFzQUFCVmtBUUFBQndBQUhWQUJB
QUFIQUFBZApRUUVBQUh3QUFDMDJBUUFBZUFBQUxURUJBQUFCQUFBZEF3RUFBRlVBQUMzeEFBQUFC
Z0FBSGVvQUFBQUZBQUF0MFFBQUFIa0FBQzNNCkFBQUFCQUFBSGNVQUFBQUFBQUFkcndBQUFHc0FB
QzJiQUFBQWV3QUFMWThBQUFCOUFBQXRnd0FBQUgwQUFDMW9BQUFBQXdBQUhXRUEKQUFBQ0FBQWRT
d0FBQUc0QUFEMUVBQUFBQVFBQUhSZ0FBQUFBQUFCdG1BQUFBRFlBQUE2UUFBQUFFd0FBRG9BQUFB
QnRBQUFPZUFBQQpBRFVBQUE1d0FBQUFGUUFBRGxnQUFBQVhBQUFPVUFBQUFCVUFBQTVJQUFBQURn
QUFEa0FBQUFBTkFBQU9LQUFBQUJZQUFBNGdBQUFBCkZRQUFEaGdBQUFBS0FBQU9FQUFBQUFrQUFB
NG9BQUFBYVFBQURpQUFBQUJrQUFBT0dBQUFBR1lBQUE0UUFBQUFhQUFBRGdnQUFBQm4KQUFBT0FB
QUFBR1VBQUE1NEFBQUFNQUFBRG5BQUFBQ0FBQUFPYUFBQUFDd0FBQTVnQUFBQWdBQUFEbGdBQUFB
cEFBQU9VQUFBQUlBQQpBQTVJQUFBQUpRQUFEa0FBQUFDQUFBQU9PQUFBQUI0QUFBNHdBQUFBZ0FB
QURpZ0FBQUFiQUFBT0lBQUFBSUFBQUE0WUFBQUFHUUFBCkRoQUFBQUNBQUFBT0NBQUFBQmdBQUE0
QUFBQUFnQUFBRHJBQUFBQTBBQUFPb0FBQUFISUFBQTZRQUFBQUpnQUFEb0FBQUFCeUFBQU8KY0FB
QUFDTUFBQTVnQUFBQWNnQUFEbEFBQUFBaUFBQU9RQUFBQUhJQUFBNHdBQUFBSUFBQURpQUFBQUJ5
QUFBT0VBQUFBQm9BQUE0QQpBQUFBY2dBQURuQUFBQUF6QUFBT2FBQUFBRElBQUE1Z0FBQUFNUUFB
RGxnQUFBQXZBQUFPVUFBQUFDNEFBQTVJQUFBQUxRQUFEa0FBCkFBQXJBQUFPT0FBQUFDb0FBQTR3
QUFBQUtBQUFEaWdBQUFBbkFBQU9JQUFBQUNRQUFBNFlBQUFBSVFBQURoQUFBQUFmQUFBT0NBQUEK
QUIwQUFBNEFBQUFBSEFBQUR2TUJBQUIwQUFCTmpoVUFBQUVBQUFhR0ZRQUFBUUFBQm1VVkFBQUJB
QUFHWFJVQUFBRUFBQVk2RlFBQQpBUUFBQmpJVkFBQUJBQUFHL3hRQUFBRUFBQWIzRkFBQUFRQUFC
c01VQUFBQkFBQUd1eFFBQUFFQUFBWVZGQUFBQVFBQUJnMFVBQUFCCkFBQUdKdzRBQUFFQUFBWWZE
Z0FBQVFBQUJ1UU5BQUFCQUFBRzNBMEFBQUVBQUFiQURRQUFBUUFBQnJnTkFBQUJBQUFHbXcwQUFB
RUEKQUFhVERRQUFBUUFBQm9ZTkFBQUJBQUFHZmcwQUFBRUFBQVpXRFFBQUFRQUFCazROQUFBQkFB
QUdid3dBQUFFQUFBWm5EQUFBQVFBQQpCaUFNQUFBQkFBQUdHQXdBQUFFQUFBYkFDd0FBQVFBQUJy
Z0xBQUFCQUFBR1l3c0FBQUVBQUFaYkN3QUFBUUFBQmhjTEFBQUJBQUFHCkR3c0FBQUVBQUFiRENn
QUFBUUFBQnJzS0FBQUJBQUFHR2dvQUFBRUFBQVlTQ2dBQUFRQUFCZ01LQUFBQkFBQUcrd2tBQUFF
QUFBYmIKQ1FBQUFRQUFCdE1KQUFBQkFBQUd0QWtBQUFFQUFBYXNDUUFBQVFBQUJyNElBQUFCQUFB
R3RnZ0FBQUVBQUFhT0NBQUFBUUFBQm9ZSQpBQUFCQUFBR1VBZ0FBQUVBQUFaSUNBQUFBUUFBQmhR
SUFBQUJBQUFHREFnQUFBRUFBQWJ4QndBQUFRQUFCdWtIQUFBQkFBQUdld2NBCkFBRUFBQVp6QndB
QUFRQUFCa3NIQUFBQkFBQUdRd2NBQUFFQUFBWU5Cd0FBQVFBQUJnVUhBQUFCQUFBRzR3WUFBQUVB
QUFiYkJnQUEKQVFBQUJsNEdBQUFCQUFBR1ZnWUFBQUVBQUFaRUJnQUFBd0FBQmhRR0FBQURBQUFH
YndVQUFBTUFBQVpXQlFBQUF3QUFCZ2dGQUFBRApBQUFHU2dJQUFBRUFBQVo2Q1FBQUFRQUFCbklK
QUFBQkFBQUdWd2tBQUFFQUFBWlBDUUFBQVFBQUJqUUpBQUFCQUFBR0xBa0FBQUVBCkFBWVJDUUFB
QVFBQUJna0pBQUFCQUFBRzdnZ0FBQUVBQUFibUNBQUFBUUFBQnRzSUFBQUJBQUFHMHdnQUFBRUFB
QWJJQ0FBQUFRQUEKQnNBSUFBQUJBQUFHcFFnQUFBRUFBQWFkQ0FBQUFRQUFCcElJQUFBQkFBQUdp
Z2dBQUFFQUFBWi9DQUFBQVFBQUJuY0lBQUFCQUFBRwpYQWdBQUFFQUFBWlVDQUFBQVFBQUJra0lB
QUFCQUFBR1FRZ0FBQUVBQUFZbUNBQUFBUUFBQmg0SUFBQUJBQUFHRXdnQUFBRUFBQVlMCkNBQUFB
UUFBQnZBSEFBQUJBQUFHNkFjQUFBRUFBQWJkQndBQUFRQUFCdFVIQUFBQkFBQUd1Z2NBQUFFQUFB
YXlCd0FBQVFBQUJwY0gKQUFBQkFBQUdqd2NBQUFFQUFBYUVCd0FBQVFBQUJud0hBQUFCQUFBR1lR
Y0FBQUVBQUFaWkJ3QUFBUUFBQmo0SEFBQUJBQUFHTmdjQQpBQUVBQUFZYkJ3QUFBUUFBQmhNSEFB
QUJBQUFHK0FZQUFBRUFBQWJ3QmdBQUFRQUFCdFVHQUFBQkFBQUd6UVlBQUFFQUFBYXlCZ0FBCkFR
QUFCcW9HQUFBQkFBQUduZ1lBQUFFQUFBYVdCZ0FBQVFBQUJuc0dBQUFCQUFBR2N3WUFBQUVBQUFa
WUJnQUFBUUFBQmxBR0FBQUIKQUFBR05RWUFBQUVBQUFZdEJnQUFBUUFBQmhJR0FBQUJBQUFHQ2dZ
QUFBRUFBQWJ2QlFBQUFRQUFCdWNGQUFBQkFBQUd6QVVBQUFFQQpBQWJFQlFBQUFRQUFCcWtGQUFB
QkFBQUdvUVVBQUFFQUFBYVZCUUFBQVFBQUJvMEZBQUFCQUFBR2NnVUFBQUVBQUFacUJRQUFBUUFB
CkJrOEZBQUFCQUFBR1J3VUFBQUVBQUFZc0JRQUFBUUFBQmlRRkFBQUJBQUFHR1FVQUFBRUFBQVlS
QlFBQUFRQUFCdllFQUFBQkFBQUcKN2dRQUFBRUFBQWJqQkFBQUFRQUFCdHNFQUFBQkFBQUd3QVFB
QUFFQUFBYTRCQUFBQVFBQUJxMEVBQUFCQUFBR3BRUUFBQUVBQUFhSwpCQUFBQVFBQUJvSUVBQUFC
QUFBR2R3UUFBQUVBQUFadkJBQUFBUUFBQmxRRUFBQUJBQUFHVEFRQUFBRUFBQVpCQkFBQUFRQUFC
amtFCkFBQUJBQUFHSGdRQUFBRUFBQVlXQkFBQUFRQUFCZ3NFQUFBQkFBQUdBd1FBQUFFQUFBYjRB
d0FBQVFBQUJ2QURBQUFCQUFBRzFRTUEKQUFFQUFBYk5Bd0FBQVFBQUJySURBQUFCQUFBR3FnTUFB
QUVBQUFhUEF3QUFBUUFBQm9jREFBQUJBQUFHYkFNQUFBRUFBQVprQXdBQQpBUUFBQmxrREFBQUJB
QUFHVVFNQUFBRUFBQVkyQXdBQUFRQUFCaTREQUFBQkFBQUdFd01BQUFFQUFBWUxBd0FBQVFBQUJn
QURBQUFCCkFBQUcrQUlBQUFFQUFBYnRBZ0FBQVFBQUJ1VUNBQUFCQUFBR3lnSUFBQUVBQUFiQ0Fn
QUFBUUFBQnJjQ0FBQUJBQUFHcndJQUFBRUEKQUFhVUFnQUFBUUFBQm93Q0FBQUJBQUFHZ1FJQUFB
RUFBQVo1QWdBQUFRQUFCbDRDQUFBQkFBQUdWZ0lBQUFFQUFBWkxBZ0FBQVFBQQpCa01DQUFBQkFB
QUdLQUlBQUFFQUFBWWdBZ0FBQVFBQUJnVUNBQUFCQUFBRy9RRUFBQUVBQUFieUFRQUFBUUFBQnVv
QkFBQUJBQUFHCnpRRUFBQUVBQUFiRkFRQUFBUUFBQnJvQkFBQUJBQUFHc2dFQUFBRUFBQWFuQVFB
QUFRQUFCcDhCQUFBQkFBQUdsQUVBQUFFQUFBYU0KQVFBQUFRQUFCbThCQUFBQkFBQUdad0VBQUFF
QUFBWmNBUUFBQVFBQUJsUUJBQUFCQUFBR09RRUFBQUVBQUFZeEFRQUFBUUFBQmhZQgpBQUFCQUFB
R0RnRUFBQUVBQUFiekFBQUFBUUFBQnVzQUFBQUJBQUFHMEFBQUFBRUFBQWJJQUFBQUFRQUFCcjBB
QUFBQkFBQUd0UUFBCkFBRUFBQWFhQUFBQUFRQUFCcElBQUFBQkFBQUdkd0FBQUFFQUFBWnZBQUFB
QVFBQUJtUUFBQUFCQUFBR1hBQUFBQUVBQUFaUkFBQUEKQVFBQUJra0FBQUFCQUFBR0xnQUFBQUVB
QUFZbUFBQUFBUUFBQmhzQUFBQUJBQUFHRXdBQUFBRUFBQVlJQUFBQUFRQUFCZ0FBQUFBQgpBQUFH
eUFJQUFBRUFBQWJBQWdBQUFRQUFCcmdDQUFBQkFBQUdzQUlBQUFFQUFBYVlBZ0FBQVFBQUJwQUNB
QUFCQUFBR2lBSUFBQUVBCkFBYUFBZ0FBQVFBQUJuZ0NBQUFCQUFBR2NBSUFBQUVBQUFaWUFnQUFB
UUFBQmxBQ0FBQUJBQUFHU0FJQUFBRUFBQVpBQWdBQUFRQUEKQmpnQ0FBQUJBQUFHTUFJQUFBRUFB
QVlvQWdBQUFRQUFCaUFDQUFBQkFBQUdDQUlBQUFFQUFBWUFBZ0FBQVFBQUJ2Z0JBQUFCQUFBRwo4
QUVBQUFFQUFBYm9BUUFBQVFBQUJ1QUJBQUFCQUFBRzJBRUFBQUVBQUFiUUFRQUFBUUFBQnNnQkFB
QUJBQUFHd0FFQUFBRUFBQWE0CkFRQUFBUUFBQnJBQkFBQUJBQUFHcUFFQUFBRUFBQWFnQVFBQUFR
QUFCb2dCQUFBQkFBQUdnQUVBQUFFQUFBWjRBUUFBQVFBQUJuQUIKQUFBQkFBQUdhQUVBQUFFQUFB
WmdBUUFBQVFBQUJsZ0JBQUFCQUFBR1VBRUFBQUVBQUFaSUFRQUFBUUFBQmtBQkFBQUJBQUFHT0FF
QQpBQUVBQUFZd0FRQUFBUUFBQmhnQkFBQUJBQUFHRUFFQUFBRUFBQVlJQVFBQUFRQUFCZ0FCQUFB
QkFBQUc2QUFBQUFFQUFBYmdBQUFBCkFRQUFCdGdBQUFBQkFBQUcwQUFBQUFFQUFBYklBQUFBQVFB
QUJzQUFBQUFCQUFBR3FBQUFBQUVBQUFhZ0FBQUFBUUFBQnBnQUFBQUIKQUFBR2tBQUFBQUVBQUFa
NEFBQUFBUUFBQm5BQUFBQUJBQUFHYUFBQUFBRUFBQVpnQUFBQUFRQUFCa2dBQUFBQkFBQUdRQUFB
QUFFQQpBQVk0QUFBQUFRQUFCakFBQUFBQkFBQUdHQUFBQUFFQUFBWVFBQUFBQVFBQUJnZ0FBQUFC
QUFBR0FBQUFBQUVBQUFiNEFBQUFBUUFBCkJ1d0FBQUFCQUFBRzF3QUFBQUVBQUFiTEFBQUFBUUFB
QnJZQUFBQUJBQUFHb1FBQUFBRUFBQWFNQUFBQUFRQUFCbmNBQUFBQkFBQUcKWWdBQUFBRUFBQVpX
QUFBQUFRQUFCa0VBQUFBQkFBQUdOUUFBQUFFQUFBWWdBQUFBQVFBQUJoUUFBQUFCQUFBRzFBRUFB
QmtBQUZUVQpBUUFBR1FBQUJOQUJBQUFaQUFCVTBBRUFBQmtBQUFUTUFRQUFHUUFBVk13QkFBQVpB
QUFFeUFFQUFCa0FBRlRJQVFBQUdRQUFCTVFCCkFBQVpBQUJVeEFFQUFCa0FBQVRBQVFBQUdRQUFW
TUFCQUFBWkFBQUV2QUVBQUJrQUFGUzhBUUFBR1FBQUJMZ0JBQUFaQUFCVXVBRUEKQUJrQUFBUzBB
UUFBR1FBQVZMUUJBQUFaQUFBRXNBRUFBQmtBQUZTd0FRQUFHUUFBQkt3QkFBQVpBQUJVckFFQUFC
a0FBQVNvQVFBQQpHUUFBVktnQkFBQVpBQUFFcEFFQUFCa0FBRlNrQVFBQUdRQUFCS0FCQUFBWkFB
QlVvQUVBQUJrQUFBU2NBUUFBR1FBQVZKd0JBQUFaCkFBQUVtQUVBQUJrQUFGU1lBUUFBR1FBQUJK
UUJBQUFaQUFCVWxBRUFBQmtBQUFTUUFRQUFHUUFBVkpBQkFBQVpBQUFFakFFQUFCa0EKQUZTTUFR
QUFHUUFBQklnQkFBQVpBQUJVaUFFQUFCa0FBQVNFQVFBQUdRQUFWSVFCQUFBWkFBQUVnQUVBQUJr
QUFGU0FBUUFBR1FBQQpCSHdCQUFBWkFBQlVmQUVBQUJrQUFBUjRBUUFBR1FBQVZIZ0JBQUFaQUFB
RWRBRUFBQmtBQUZSMEFRQUFHUUFBQkhBQkFBQVpBQUJVCmNBRUFBQmtBQUFSc0FRQUFHUUFBVkd3
QkFBQVpBQUFFYUFFQUFCa0FBRlJvQVFBQUdRQUFCR1FCQUFBWkFBQlVaQUVBQUJrQUFBUmcKQVFB
QUdRQUFWR0FCQUFBWkFBQUVYQUVBQUJrQUFGUmNBUUFBR1FBQUJGZ0JBQUFaQUFCVVdBRUFBQmtB
QUFSVUFRQUFHUUFBVkZRQgpBQUFaQUFBRVVBRUFBQmtBQUZSUUFRQUFHUUFBQkV3QkFBQVpBQUJV
VEFFQUFCa0FBQVJJQVFBQUdRQUFWRWdCQUFBWkFBQUVSQUVBCkFCa0FBRlJFQVFBQUdRQUFCRUFC
QUFBWkFBQlVRQUVBQUJrQUFBUThBUUFBR1FBQVZEd0JBQUFaQUFBRU9BRUFBQmtBQUZRNEFRQUEK
R1FBQUJEUUJBQUFaQUFCVU5BRUFBQmtBQUFRd0FRQUFHUUFBVkRBQkFBQVpBQUFFTEFFQUFCa0FB
RlFzQVFBQUdRQUFCQ2dCQUFBWgpBQUJVS0FFQUFCa0FBQVEwQUFBQUd3QUFWRFFBQUFBYkFBQUVN
QUFBQUJzQUFGUXdBQUFBR3dBQUJNd0NBQUFjQUFCVXpBSUFBQndBCkFBVElBZ0FBSEFBQVZNZ0NB
QUFjQUFBRXhBSUFBQndBQUZURUFnQUFIQUFBQk1BQ0FBQWNBQUJVd0FJQUFCd0FBQVM4QWdBQUhB
QUEKVkx3Q0FBQWNBQUFFdUFJQUFCd0FBRlM0QWdBQUhBQUFCTFFDQUFBY0FBQlV0QUlBQUJ3QUFB
U3dBZ0FBSEFBQVZMQUNBQUFjQUFBRQpyQUlBQUJ3QUFGU3NBZ0FBSEFBQUJLZ0NBQUFjQUFCVXFB
SUFBQndBQUFTa0FnQUFIQUFBVktRQ0FBQWNBQUFFb0FJQUFCd0FBRlNnCkFnQUFIQUFBQkp3Q0FB
QWNBQUJVbkFJQUFCd0FBQVNZQWdBQUhBQUFWSmdDQUFBY0FBQUVsQUlBQUJ3QUFGU1VBZ0FBSEFB
QUJKQUMKQUFBY0FBQlVrQUlBQUJ3QUFBU01BZ0FBSEFBQVZJd0NBQUFjQUFBRWlBSUFBQndBQUZT
SUFnQUFIQUFBQklRQ0FBQWNBQUJVaEFJQQpBQndBQUFTQUFnQUFIQUFBVklBQ0FBQWNBQUFFZkFJ
QUFCd0FBRlI4QWdBQUhBQUFCSGdDQUFBY0FBQlVlQUlBQUJ3QUFBUjBBZ0FBCkhBQUFWSFFDQUFB
Y0FBQUVjQUlBQUJ3QUFGUndBZ0FBSEFBQUJHd0NBQUFjQUFCVWJBSUFBQndBQUFSb0FnQUFIQUFB
VkdnQ0FBQWMKQUFBRVpBSUFBQndBQUZSa0FnQUFIQUFBQkdBQ0FBQWNBQUJVWUFJQUFCd0FBQVJj
QWdBQUhBQUFWRndDQUFBY0FBQUVXQUlBQUJ3QQpBRlJZQWdBQUhBQUFCRlFDQUFBY0FBQlVWQUlB
QUJ3QUFBUlFBZ0FBSEFBQVZGQUNBQUFjQUFBRVRBSUFBQndBQUZSTUFnQUFIQUFBCkJFZ0NBQUFj
QUFCVVNBSUFBQndBQUFSRUFnQUFIQUFBVkVRQ0FBQWNBQUFFUUFJQUFCd0FBRlJBQWdBQUhBQUFC
RHdDQUFBY0FBQlUKUEFJQUFCd0FBQVE0QWdBQUhBQUFWRGdDQUFBY0FBQUVOQUlBQUJ3QUFGUTBB
Z0FBSEFBQUJEQUNBQUFjQUFCVU1BSUFBQndBQUFRcwpBZ0FBSEFBQVZDd0NBQUFjQUFBRUtBSUFB
QndBQUZRb0FnQUFIQUFBQkNRQ0FBQWNBQUJVSkFJQUFCd0FBQVFnQWdBQUhBQUFWQ0FDCkFBQWNB
QUFFSEFJQUFCd0FBRlFjQWdBQUhBQUFCQmdDQUFBY0FBQlVHQUlBQUJ3QUFBUVVBZ0FBSEFBQVZC
UUNBQUFjQUFBRUVBSUEKQUJ3QUFGUVFBZ0FBSEFBQUJBd0NBQUFjQUFCVURBSUFBQndBQUFRSUFn
QUFIQUFBVkFnQ0FBQWNBQUFFQkFJQUFCd0FBRlFFQWdBQQpIQUFBQkFBQ0FBQWNBQUJVQUFJQUFC
d0FBQVQ4QVFBQUhBQUFWUHdCQUFBY0FBQUUrQUVBQUJ3QUFGVDRBUUFBSEFBQUJQUUJBQUFjCkFB
QlU5QUVBQUJ3QUFBVHdBUUFBSEFBQVZQQUJBQUFjQUFBRTdBRUFBQndBQUZUc0FRQUFIQUFBQk9n
QkFBQWNBQUJVNkFFQUFCd0EKQUFUa0FRQUFIQUFBVk9RQkFBQWNBQUFFNEFFQUFCd0FBRlRnQVFB
QUhBQUFCTndCQUFBY0FBQlUzQUVBQUJ3QUFBVFlBUUFBSEFBQQpWTmdCQUFBY0FBQUUxQUVBQUJ3
QUFGVFVBUUFBSEFBQUJOQUJBQUFjQUFCVTBBRUFBQndBQUFUTUFRQUFIQUFBVk13QkFBQWNBQUFF
CnlBRUFBQndBQUZUSUFRQUFIQUFBQk1RQkFBQWNBQUJVeEFFQUFCd0FBQVRBQVFBQUhBQUFWTUFC
QUFBY0FBQUVZQUlBQUFFQUFBWkEKQWdBQUFRQUFCaUFDQUFBQkFBQUdBQUlBQUFFQUFBYmdBUUFB
QVFBQUJzQUJBQUFCQUFBR29BRUFBQUVBQUFhQUFRQUFBUUFBQm5nQgpBQUFDQUFBR2NBRUFBSFFB
QUE1Z0FRQUFBUUFBQmtBQkFBQUJBQUFHSUFFQUFBRUFBQVlBQVFBQUFRQUFCdUFBQUFBQkFBQUd3
QUFBCkFBRUFBQWFnQUFBQUFRQUFCb0FBQUFBQkFBQUdZQUFBQUFFQUFBWkFBQUFBQVFBQUJpQUFB
QUFCQUFBR0FBQUFBQUVBQUFZWUNBQUEKRGdNQUFQaGxBQUFBQUFBQVJRZ0FBQTREQUFEWVpRQUFB
QUFBQUdBSUFBQU9CZ0FBTUE4QUFBQUFBQUI0Q0FBQURnRUFBT0FBQUFBQQpBQUFBdmdnQUFBNEdB
QUN3RHdBQUFBQUFBTllJQUFBT0FRQUFJQUVBQUFBQUFBRCtDQUFBRGdNQUFPQmxBQUFBQUFBQUZB
a0FBQTRECkFBRG9aUUFBQUFBQUFEY0pBQUFPQXdBQThHVUFBQUFBQUFCWENRQUFEZ0VBQUJBRUFB
QUFBQUFBYlFrQUFBNEJBQUJnQkFBQUFBQUEKQUlZSkFBQU9CZ0FBWUE4QUFBQUFBQUNmQ1FBQURn
RUFBSEFGQUFBQUFBQUE2QWtBQUE0QkFBRHdCUUFBQUFBQUFQOEpBQUFPQVFBQQpNQVlBQUFBQUFB
QVpDZ0FBRGdRQUFQNE5BQUFBQUFBQVdRb0FBQTRFQUFBRkRnQUFBQUFBQUdJS0FBQU9CQUFBVlE0
QUFBQUFBQUJyCkNnQUFEZ0lBQUx3TkFBQUFBQUFBZmdvQUFBNEJBQUNnRFFBQUFBQUFBTE1LQUFB
T0JBQUFCUThBQUFBQUFBQzhDZ0FBRGdRQUFPZ04KQUFBQUFBQUF3d29BQUE0RkFBQW1Ed0FBQUFB
QUFOWUtBQUFPQlFBQUtROEFBQUFBQUFEcUNnQUFEZ2dBQUFBUUFBQUFBQUFBQUFzQQpBQTRJQUFB
R0VBQUFBQUFBQUJjTEFBQU9CQUFBN2cwQUFBQUFBQUFmQ3dBQURnZ0FBQlVRQUFBQUFBQUFOZ3NB
QUE0SUFBQWpFQUFBCkFBQUFBRTBMQUFBT0NBQUFMaEFBQUFBQUFBQmxDd0FBRGdnQUFESVFBQUFB
QUFBQWZRc0FBQTRJQUFCZEVBQUFBQUFBQUpVTEFBQU8KQkFBQVlRNEFBQUFBQUFDZUN3QUFEZ2dB
QUhFUUFBQUFBQUFBdGdzQUFBNEVBQUI5RGdBQUFBQUFBTDhMQUFBT0JBQUFtQTRBQUFBQQpBQURJ
Q3dBQURnZ0FBSU1RQUFBQUFBQUE0QXNBQUE0SUFBQ05FQUFBQUFBQUFQZ0xBQUFPQkFBQXJnNEFB
QUFBQUFBQkRBQUFEZ2dBCkFKZ1FBQUFBQUFBQUdRd0FBQTRJQUFDMUVBQUFBQUFBQURFTUFBQU9D
QUFBdXhBQUFBQUFBQUJKREFBQURnZ0FBTUVRQUFBQUFBQUEKWVF3QUFBNElBQURVRUFBQUFBQUFB
SGtNQUFBT0NBQUE3aEFBQUFBQUFBQ1JEQUFBRGdnQUFQOFFBQUFBQUFBQXFRd0FBQTRJQUFBUQpF
UUFBQUFBQUFNRU1BQUFPQ0FBQUlCRUFBQUFBQUFEWkRBQUFEZ2dBQUNVUkFBQUFBQUFBOFF3QUFB
NElBQUF0RVFBQUFBQUFBQWtOCkFBQU9DQUFBUmhFQUFBQUFBQUFoRFFBQURnZ0FBRjRSQUFBQUFB
QUFPUTBBQUE0RUFBQ3dEZ0FBQUFBQUFFSU5BQUFPQlFBQUxBOEEKQUFBQUFBQlhEUUFBRGdZQUFK
QVBBQUFBQUFBQWNRMEFBQTROQUFCZ0V3QUFBQUFBQUhzTkFBQU9EUUFBcUJNQUFBQUFBQURFRFFB
QQpEZzBBQU5BVEFBQUFBQUFBN3cwQUFBNE5BQUFvRkFBQUFBQUFBQWdPQUFBT0RRQUFVQlFBQUFB
QUFBQWtEZ0FBRGcwQUFLQVVBQUFBCkFBQUFjQTRBQUE0TkFBRHdGQUFBQUFBQUFJb09BQUFPRFFB
QUdCVUFBQUFBQUFDbkRnQUFEZzBBQUVBVkFBQUFBQUFBc1E0QUFBNE4KQUFEQUZnQUFBQUFBQUtN
RUFBQWZBUUFBa0EwQUFBQUFBQUQ2QndBQUh3MEFBSmdXQUFBQUFBQUFqZ1FBQUI4QkFBQ0FEUUFB
QUFBQQpBT0lIQUFBZkRRQUFjQllBQUFBQUFBRFFBd0FBSHdFQUFKQUxBQUFBQUFBQUNnY0FBQjhO
QUFDWUZRQUFBQUFBQUFFQUFBQWZBUUFBCkFBQUFBQUFBQUFEdEJRQUFIdzBBQUhnVEFBQUFBQUFB
a0FJQUFCOEJBQUNnQkFBQUFBQUFBRndHQUFBZkRRQUFlQlFBQUFBQUFBQjgKQVFBQUh3RUFBR0FH
QUFBQUFBQUEwUVlBQUI4TkFBQmdGUUFBQUFBQUFBRUVBQUFmQVFBQVVBd0FBQUFBQUFBK0J3QUFI
dzBBQU1nVgpBQUFBQUFBQWdBTUFBQjhCQUFEQURBQUFBQUFBQUswSEFBQWZEUUFBUUJZQUFBQUFB
QUF6QkFBQUh3RUFBR0FNQUFBQUFBQUFjd2NBCkFCOE5BQUR3RlFBQUFBQUFBRTBFQUFBZkFRQUFr
QXdBQUFBQUFBQ1FCd0FBSHcwQUFCZ1dBQUFBQUFBQW5BQUFBQjhCQUFDUUFnQUEKQUFBQUFDY0dB
QUFmRFFBQStCTUFBQUFBQUFES0FnQUFId0VBQU1BRkFBQUFBQUFBbVFZQUFCOE5BQURJRkFBQUFB
QUFBRmtEQUFBZgpDWUFBNEJFQUFBQUFBQUQvQWdBQUh3bUFBS0FSQUFBQUFBQUFQZ01BQUI4SmdB
RHdFUUFBQUFBQUFPZ0JBQUFmQ1lBQTBCRUFBQUFBCkFBQkNBZ0FBSHdtQUFBQVNBQUFBQUFBQUdn
TUFBQjhKZ0FDd0VRQUFBQUFBQU1VQkFBQWZDWUFBd0JFQUFBQUFBQUJ4QkFBQUh3bUEKQUJBU0FB
QUFBQUFBWmdFQUFBRUFBQUFBQUFBQUFBQUFBQThCQUFBQkFBQUFBQUFBQUFBQUFBQm5CQUFBQVFB
QUFBQUFBQUFBQUFBQQpnQVVBQUFFQUFBQUFBQUFBQUFBQUFOVUVBQUFCQUFBQUFBQUFBQUFBQUFC
akJRQUFBUUFBQUFBQUFBQUFBQUFBSmdVQUFBRUFBQUFBCkFBQUFBQUFBQUVnRkFBQUJBQUFBQUFB
QUFBQUFBQUNWQlFBQUFRQUFBQUFBQUFBQUFBQUFlZ0lBQUFFQUFBQUFBQUFBQUFBQUFIWUEKQUFB
QkFBQUFBQUFBQUFBQUFBQWlBUUFBQVFBQUFBQUFBQUFBQUFBQXZ3VUFBQUVBQUFBQUFBQUFBQUFB
QURnQUFBQUJBQUFBQUFBQQpBQUFBQUFEQUF3QUFBUUFBQUFBQUFBQUFBQUFBR2dFQUFBRUFBQUFB
QUFBQUFBQUFBSGtEQUFBQkFBQUFBQUFBQUFBQUFBQUVCUUFBCkFRQUFBQUFBQUFBQUFBQUFzZ01B
QUFFQUFBQUFBQUFBQUFBQUFOY0ZBQUFCQUFBQUFBQUFBQUFBQUFCb0FnQUFBUUFBQUFBQUFBQUEK
QUFBQXNnRUFBQUVBQUFBQUFBQUFBQUFBQUVJQkFBQUJBQUFBQUFBQUFBQUFBQURPQUFBQUFRQUFB
QUFBQUFBQUFBQUFqUUFBQUFFQQpBQUFBQUFBQUFBQUFBTDRFQUFBQkFBQUFBQUFBQUFBQUFBQm5B
QUFBQVFBQUFBQUFBQUFBQUFBQTVRQUFBQUVBQUFBQUFBQUFBQUFBCkFFOEFBQUFCQUFBQUFBQUFB
QUFBQUFBb0FnQUFBUUFBQUFBQUFBQUFBQUFBOHdBQUFBRUFBQUFBQUFBQUFBQUFBUEFFQUFBQkFB
QUEKQUFBQUFBQUFBQUFCQVFBQUFRQUFBQUFBQUFBQUFBQUFBRjlmV2s0eE5WQnNkV2RwYmtKc1lX
TnJiR2x6ZERFM2MyaHZkV3hrUW14dgpZMnRRYkhWbmFXNUZVRGhPVTFOMGNtbHVaMU14WHdCZlgw
NVRRMjl1WTNKbGRHVlRkR0ZqYTBKc2IyTnJBRjl2WW1walgyRnpjMmxuCmJsOXpkSEp2Ym1kRFlY
TjBBRjlrYVhOd1lYUmphRjl6ZVc1akFGOWZRbXh2WTJ0ZmIySnFaV04wWDJScGMzQnZjMlVBWDJS
cGMzQmgKZEdOb1gyOXVZMlVBWDE5YVRrc3hOVkJzZFdkcGJrSnNZV05yYkdsemRERXhjMmh2ZFd4
a1FteHZZMnRGVURoT1UxTjBjbWx1WjFNeApYd0JmWkdsemNHRjBZMmhmWVhOelpYSjBYM0YxWlhW
bEFGOW5aWFIwYVcxbGIyWmtZWGtBWDI5aWFtTmZiWE5uVTJWdVpBQmZjM1JoCmRDUkpUazlFUlRZ
MEFGOURSbEpsYkdWaGMyVUFYMTlhWkd4UWRnQmZYME5HUTI5d2VWTjVjM1JsYlZabGNuTnBiMjVF
YVdOMGFXOXUKWVhKNUFGOWZhME5HVTNsemRHVnRWbVZ5YzJsdmJsQnliMlIxWTNSV1pYSnphVzl1
UzJWNUFGOURSa1JwWTNScGIyNWhjbmxIWlhSVwpZV3gxWlFCZlgxcE9NVFZRYkhWbmFXNUNiR0Zq
YTJ4cGMzUTJZM0psWVhSbFJWQTRUbE5UZEhKcGJtZFFNVEZ2WW1walgyOWlhbVZqCmRBQmZYMTl6
ZEdGamExOWphR3RmWjNWaGNtUUFiRjl2WW1walgyMXpaMU5sYm1SZlptbDRkWEJmYjJKcVpXTjBS
bTl5UzJWNVh3QnMKWDI5aWFtTmZiWE5uVTJWdVpGOW1hWGgxY0Y5amIzVnVkRUo1Ulc1MWJXVnlZ
WFJwYm1kWGFYUm9VM1JoZEdWZmIySnFaV04wYzE5agpiM1Z1ZEY4QVgyOWlhbU5mWlc1MWJXVnlZ
WFJwYjI1TmRYUmhkR2x2YmdCc1gyOWlhbU5mYlhOblUyVnVaRjltYVhoMWNGOXBjMFZ4CmRXRnNW
RzlUZEhKcGJtZGZBRjlmWDNOMFlXTnJYMk5vYTE5bVlXbHNBRjlmUW14dlkydGZiMkpxWldOMFgy
RnpjMmxuYmdCZlgxcE8KTVRWUWJIVm5hVzVDYkdGamEyeHBjM1F5TTJselVHeDFaMmx1VlhCa1lY
UmxRWFpoYVd4aFlteGxSVkE0VGxOVGRISnBibWNBWDE5YQpUa3N4TlZCc2RXZHBia0pzWVdOcmJH
bHpkREUzYVhOVmNHUmhkR1ZCZG1GcGJHRmliR1ZGVURoT1UxTjBjbWx1WndCc1gyOWlhbU5mCmJY
Tm5VMlZ1WkY5bWFYaDFjRjlqYkdGemN3QnNYMjlpYW1OZmJYTm5VMlZ1WkY5bWFYaDFjRjlwYzB0
cGJtUlBaa05zWVhOelh3QnMKWDI5aWFtTmZiWE5uVTJWdVpGOW1hWGgxY0Y5amIzVnVkQUJzWDI5
aWFtTmZiWE5uVTJWdVpGOW1hWGgxY0Y5aFpHUlBZbXBsWTNSZgpBRjlmV201M2JRQmZYMXBPTVRW
UWJIVm5hVzVDYkdGamEyeHBjM1JETWtWUU1USk9VMFJwWTNScGIyNWhjbmxUTVY5UU5VNVRVMlYw
CkFGOWZYMkZ6YzJWeWRGOXlkRzRBWDE5VmJuZHBibVJmVW1WemRXMWxBRjlmV2s0eE5WQnNkV2Rw
YmtKc1lXTnJiR2x6ZERFMGMzQnMKYVhSUFUxWmxjbk5wYjI1RlVEaE9VMU4wY21sdVp3QmZYMXBP
TVRWUWJIVm5hVzVDYkdGamEyeHBjM1JETVVWUU1USk9VMFJwWTNScApiMjVoY25sVE1WOVFOVTVU
VTJWMEFGOWZXazR4TlZCc2RXZHBia0pzWVdOcmJHbHpkRVF4UlhZQVgxOWFUakUxVUd4MVoybHVR
bXhoClkydHNhWE4wUkRKRmRnQmZRMFpTWlhSaGFXNEFiRjl2WW1walgyMXpaMU5sYm1SZlptbDRk
WEJmY21Wc1pXRnpaUUJmVjB0VGFHOTEKYkdSQ2JHOWphMUJzZFdkcGJnQmZWMHRKYzFCc2RXZHBi
bFZ3WkdGMFpVRjJZV2xzWVdKc1pRQmZaR2x6Y0dGMFkyaGZjWFZsZFdWZgpZM0psWVhSbEFGOVBR
a3BEWDBOTVFWTlRYeVJmVGxORWFXTjBhVzl1WVhKNUFGOXZZbXBqWDIxeloxTmxibVJmWm1sNGRY
QUFYMTlmClEwWkRiMjV6ZEdGdWRGTjBjbWx1WjBOc1lYTnpVbVZtWlhKbGJtTmxBRjlQUWtwRFgw
Tk1RVk5UWHlSZlRsTk5kWFJoWW14bFJHbGoKZEdsdmJtRnllUUJmVDBKS1ExOURURUZUVTE4a1gw
NVRUWFYwWVdKc1pWTmxkQUJmVDBKS1ExOURURUZUVTE4a1gwNVRUWFYwWVdKcwpaVUZ5Y21GNUFG
OVBRa3BEWDBOTVFWTlRYeVJmVGxORVlYUmhBRjlQUWtwRFgwTk1RVk5UWHlSZlRsTlFjbTl3WlhK
MGVVeHBjM1JUClpYSnBZV3hwZW1GMGFXOXVBRjlmVGxORGIyNWpjbVYwWlVkc2IySmhiRUpzYjJO
ckFGOWZYMmQ0ZUY5d1pYSnpiMjVoYkdsMGVWOTIKTUFCZlgxcE9NVFZRYkhWbmFXNUNiR0ZqYTJ4
cGMzUXhOM05vYjNWc1pFSnNiMk5yVUd4MVoybHVSVkE0VGxOVGRISnBibWRUTVY4dQpaV2dBWDE5
YVRrc3hOVkJzZFdkcGJrSnNZV05yYkdsemRERXhjMmh2ZFd4a1FteHZZMnRGVURoT1UxTjBjbWx1
WjFNeFh5NWxhQUJmClgxcE9NVFZRYkhWbmFXNUNiR0ZqYTJ4cGMzUXlNMmx6VUd4MVoybHVWWEJr
WVhSbFFYWmhhV3hoWW14bFJWQTRUbE5UZEhKcGJtY3UKWldnQVgxOWFUa3N4TlZCc2RXZHBia0pz
WVdOcmJHbHpkREUzYVhOVmNHUmhkR1ZCZG1GcGJHRmliR1ZGVURoT1UxTjBjbWx1Wnk1bAphQUJm
WDFwT01UVlFiSFZuYVc1Q2JHRmphMnhwYzNRMlkzSmxZWFJsUlZBNFRsTlRkSEpwYm1kUU1URnZZ
bXBqWDI5aWFtVmpkQzVsCmFBQmZYMXBPTVRWUWJIVm5hVzVDYkdGamEyeHBjM1F4TkhOd2JHbDBU
MU5XWlhKemFXOXVSVkE0VGxOVGRISnBibWN1WldnQVgxOWEKVGpFMVVHeDFaMmx1UW14aFkydHNh
WE4wUXpGRlVERXlUbE5FYVdOMGFXOXVZWEo1VXpGZlVEVk9VMU5sZEM1bGFBQmZYMXBPTVRWUQpi
SFZuYVc1Q2JHRmphMnhwYzNSRU1VVjJMbVZvQUY5ZldrNHhOVkJzZFdkcGJrSnNZV05yYkdsemRF
UXlSWFl1WldnQVgxOWFUakUxClVHeDFaMmx1UW14aFkydHNhWE4wUXpKRlVERXlUbE5FYVdOMGFX
OXVZWEo1VXpGZlVEVk9VMU5sZEM1bGFBQmZWMHRUYUc5MWJHUkMKYkc5amExQnNkV2RwYmk1bGFB
QmZWMHRKYzFCc2RXZHBibFZ3WkdGMFpVRjJZV2xzWVdKc1pTNWxhQUJmWDFwYVRETXdhVzVwZEds
aApiR2w2WlZCc2RXZHBia0pzWVdOcmJHbHpkRkYxWlhWbGRrVTBiMjVqWlFCZlgxcE1NakJ3YkhW
bmFXNUNiR0ZqYTJ4cGMzUlJkV1YxClpRQmZYMTlpYkc5amExOWtaWE5qY21sd2RHOXlYM1J0Y0FC
ZlgxOWZXazR4TlZCc2RXZHBia0pzWVdOcmJHbHpkREUzYzJodmRXeGsKUW14dlkydFFiSFZuYVc1
RlVEaE9VMU4wY21sdVoxTXhYMTlpYkc5amExOXBiblp2YTJVQVgxOWZZbXh2WTJ0ZmJHbDBaWEpo
YkY5bgpiRzlpWVd3QVgxOWFURE15Y21Wc2IyRmtVR3gxWjJsdVFteGhZMnRzYVhOMFNXWk9aV05s
YzNOaGNubDJBRjlmV2t3eE5YQnNkV2RwCmJrSnNZV05yYkdsemRBQmZYMXBNTWpod2JIVm5hVzVD
YkdGamEyeHBjM1JPWlhoMFEyaGxZMnRVYVcxbEFGOWZXa3d5TlhCc2RXZHAKYmtKc1lXTnJiR2x6
ZEZWd1pHRjBaVlJwYldVQVgxOWZZMjl3ZVY5b1pXeHdaWEpmWW14dlkydGZBRjlmWDJSbGMzUnli
M2xmYUdWcwpjR1Z5WDJKc2IyTnJYd0JmWDE5aWJHOWphMTlrWlhOamNtbHdkRzl5WDNSdGNEUUFY
MTlmWDFwT01UVlFiSFZuYVc1Q2JHRmphMnhwCmMzUXlNMmx6VUd4MVoybHVWWEJrWVhSbFFYWmhh
V3hoWW14bFJWQTRUbE5UZEhKcGJtZGZZbXh2WTJ0ZmFXNTJiMnRsQUY5ZlgyTnYKY0hsZmFHVnNj
R1Z5WDJKc2IyTnJYekVBWDE5ZlpHVnpkSEp2ZVY5b1pXeHdaWEpmWW14dlkydGZNZ0JNWDE5Zlpu
VnVZMTlmTGw5YQpUakUxVUd4MVoybHVRbXhoWTJ0c2FYTjBObU55WldGMFpVVlFPRTVUVTNSeWFX
NW5VREV4YjJKcVkxOXZZbXBsWTNRQVRGOHVjM1J5Ck1UUUFURjh1YzNSeU1UVUFSME5EWDJWNFky
VndkRjkwWVdKc1pURXhBRjlmWDE5YVRETXdhVzVwZEdsaGJHbDZaVkJzZFdkcGJrSnMKWVdOcmJH
bHpkRkYxWlhWbGRsOWliRzlqYTE5cGJuWnZhMlVBVEY4dWMzUnlOVGtBVEY4dWMzUnlBRXhmVDBK
S1ExOURURUZUVTE5TwpRVTFGWHdCTVgwOUNTa05mUTB4QlUxTmZUa0ZOUlY4ekFFeGZUMEpLUTE5
TlJWUklYMVpCVWw5T1FVMUZYd0JNWDA5Q1NrTmZUVVZVClNGOVdRVkpmVGtGTlJWODFBR3hmTG5O
MGNqWUFURjlQUWtwRFgwMUZWRWhmVmtGU1gwNUJUVVZmTndCTVgwOUNTa05mVFVWVVNGOVcKUVZK
ZlRrRk5SVjg1QUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh6RXhBRXhmVDBKS1ExOU5SVlJJ
WDFaQlVsOU9RVTFGWHpFegpBRXhmVDBKS1ExOU5SVlJJWDFaQlVsOU9RVTFGWHpFMkFHeGZMbk4w
Y2pFNEFFeGZUMEpLUTE5TlJWUklYMVpCVWw5T1FVMUZYekl3CkFHeGZMbk4wY2pJeUFHeGZMbk4w
Y2pJMEFFeGZUMEpLUTE5TlJWUklYMVpCVWw5T1FVMUZYekkyQUV4ZlQwSktRMTlOUlZSSVgxWkIK
VWw5T1FVMUZYekk0QUd4ZkxuTjBjakk1QUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh6TXhB
RXhmVDBKS1ExOU5SVlJJWDFaQgpVbDlPUVUxRlh6TTBBRXhmVDBKS1ExOU5SVlJJWDFaQlVsOU9R
VTFGWHpNMkFFeGZUMEpLUTE5TlJWUklYMVpCVWw5T1FVMUZYek0zCkFFeGZUMEpLUTE5TlJWUklY
MVpCVWw5T1FVMUZYek01QUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh6UXhBRXhmVDBKS1Ex
OU4KUlZSSVgxWkJVbDlPUVUxRlh6UXlBRXhmVDBKS1ExOU5SVlJJWDFaQlVsOU9RVTFGWHpRMEFF
eGZUMEpLUTE5TlJWUklYMVpCVWw5TwpRVTFGWHpRMkFFeGZUMEpLUTE5TlJWUklYMVpCVWw5T1FV
MUZYelE0QUV4ZlQwSktRMTlOUlZSSVgxWkJVbDlPUVUxRlh6UTVBRXhmClQwSktRMTlOUlZSSVgx
WkJVbDlPUVUxRlh6VXlBRXhmVDBKS1ExOU5SVlJJWDFaQlVsOU9RVTFGWHpVMUFHeGZMbk4wY2pV
M0FFeGYKVDBKS1ExOURURUZUVTE5T1FVMUZYell3QUY5ZlgySnNiMk5yWDJSbGMyTnlhWEIwYjNK
ZmRHMXdOakVBUlVoZlpuSmhiV1V3QUY5ZgpYMTlhVGpFMVVHeDFaMmx1UW14aFkydHNhWE4wTVRk
emFHOTFiR1JDYkc5amExQnNkV2RwYmtWUU9FNVRVM1J5YVc1blV6RmZYMkpzCmIyTnJYMmx1ZG05
clpTNWxhQUJmWDFwTU16SnlaV3h2WVdSUWJIVm5hVzVDYkdGamEyeHBjM1JKWms1bFkyVnpjMkZ5
ZVhZdVpXZ0EKWDE5ZlkyOXdlVjlvWld4d1pYSmZZbXh2WTJ0ZkxtVm9BRjlmWDJSbGMzUnliM2xm
YUdWc2NHVnlYMkpzYjJOclh5NWxhQUJmWDE5ZgpXazR4TlZCc2RXZHBia0pzWVdOcmJHbHpkREl6
YVhOUWJIVm5hVzVWY0dSaGRHVkJkbUZwYkdGaWJHVkZVRGhPVTFOMGNtbHVaMTlpCmJHOWphMTlw
Ym5admEyVXVaV2dBWDE5ZlkyOXdlVjlvWld4d1pYSmZZbXh2WTJ0Zk1TNWxhQUJmWDE5a1pYTjBj
bTk1WDJobGJIQmwKY2w5aWJHOWphMTh5TG1Wb0FFVklYMlp5WVcxbE1RQmZYMTlmV2t3ek1HbHVh
WFJwWVd4cGVtVlFiSFZuYVc1Q2JHRmphMnhwYzNSUgpkV1YxWlhaZllteHZZMnRmYVc1MmIydGxM
bVZvQUFBQUFBb0tDZ29qTVM4eU9DQWdJQ0FnSUNBZ0lDQWdNVE0zTVRjM05qQXpNeUFnCk5UQXhJ
Q0FnTWpBZ0lDQWdNVEF3TmpRMElDQTBOVEF3SUNBZ0lDQWdZQXBEY21GemFGSmxjRzl5ZEdWeVZY
UnBiSE11YndBQUFBQUEKQUFBQXovcnQvZ2NBQUFFREFBQUFBUUFBQUFNQUFBQ1FCd0FBQUNBQUFB
QUFBQUFaQUFBQUtBY0FBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBSWdIQUFBQUFB
QUFzQWNBQUFBQUFBQ0lCd0FBQUFBQUFBY0FBQUFIQUFBQUZnQUFBQUFBQUFCZlgzUmxlSFFBCkFB
QUFBQUFBQUFBQVgxOVVSVmhVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUndBQUFBQUFBQUN3QndB
QUJBQUFBRGdQQUFBR0FBQUEKQUFRQWdBQUFBQUFBQUFBQUFBQUFBRjlmWTNKaGMyaGZhVzVtYndB
QUFBQmZYMFJCVkVFQUFBQUFBQUFBQUFBQVNBQUFBQUFBQUFBNApBQUFBQUFBQUFQZ0hBQUFEQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWDE5dlltcGpYMjFsZEdodVlXMWxBRjlm
ClZFVllWQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQXNBQUFBQUFBQUFNQWdBQUFBQUFBQUFBQUFB
QUFBQUFBSUFBQUFBQUFBQUFBQUEKQUFBQUFBQmZYMjlpYW1OZmMyVnNjbVZtY3dBQVgxOUVRVlJC
QUFBQUFBQUFBQUFBQUpBQUFBQUFBQUFBQ0FBQUFBQUFBQUJBQ0FBQQpBd0FBQUdnUEFBQUJBQUFB
QlFBQUVBQUFBQUFBQUFBQUFBQUFBRjlmYjJKcVkxOXBiV0ZuWldsdVptOWZYMFJCVkVFQUFBQUFB
QUFBCkFBQUFtQUFBQUFBQUFBQUlBQUFBQUFBQUFFZ0lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFB
QUFBQUFBQUFBQUFBQUFBWDE5a1lYUmgKQUFBQUFBQUFBQUFBQUY5ZlJFRlVRUUFBQUFBQUFBQUFB
QUNnQUFBQUFBQUFBQUFBQUFBQUFBQUFVQWdBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQmZYMlJsWW5WblgybHVabThBQUFBQVgxOUVWMEZTUmdBQUFBQUFBQUFBQUtBQUFB
QUFBQUFBCk5BRUFBQUFBQUFCUUNBQUFBQUFBQUhBUEFBQURBQUFBQUFBQUFnQUFBQUFBQUFBQUFB
QUFBRjlmWkdWaWRXZGZZV0ppY21WMkFBQmYKWDBSWFFWSkdBQUFBQUFBQUFBQUExQUVBQUFBQUFB
QzJBQUFBQUFBQUFJUUpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQQpBQUFBQUFBQVgx
OWtaV0oxWjE5aGNtRnVaMlZ6QUY5ZlJGZEJVa1lBQUFBQUFBQUFBQUNLQWdBQUFBQUFBQUFBQUFB
QUFBQUFPZ29BCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQmZYMlJsWW5W
blgyMWhZMmx1Wm04QVgxOUVWMEZTUmdBQUFBQUEKQUFBQUFJb0NBQUFBQUFBQUFBQUFBQUFBQUFB
NkNnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBRjlmWkdWaQpkV2RmYkds
dVpRQUFBQUJmWDBSWFFWSkdBQUFBQUFBQUFBQUFpZ0lBQUFBQUFBQzNBQUFBQUFBQUFEb0tBQUFB
QUFBQWlBOEFBQUVBCkFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQVgxOWtaV0oxWjE5c2IyTUFBQUFB
QUY5ZlJGZEJVa1lBQUFBQUFBQUFBQUJCQXdBQUFBQUEKQUh3QUFBQUFBQUFBOFFvQUFBQUFBQUNR
RHdBQUNBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQmZYMlJsWW5WblgzQjFZblI1Y0dWegpYMTlF
VjBGU1JnQUFBQUFBQUFBQUFMMERBQUFBQUFBQU1nQUFBQUFBQUFCdEN3QUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFnQUFBQUFBCkFBQUFBQUFBQUY5ZlpHVmlkV2RmYzNSeUFBQUFBQUJmWDBSWFFWSkdB
QUFBQUFBQUFBQUE3d01BQUFBQUFBRFBBUUFBQUFBQUFKOEwKQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFDQUFBQUFBQUFBQUFBQUFBQVgxOWtaV0oxWjE5eVlXNW5aWE1BQUY5ZlJGZEJVa1lBQUFBQQpB
QUFBQUFDK0JRQUFBQUFBQUFBQUFBQUFBQUFBYmcwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFB
QUFBQUFBQUFBQUFBQmZYMlJsClluVm5YMmx1YkdsdVpXUUFYMTlFVjBGU1JnQUFBQUFBQUFBQUFM
NEZBQUFBQUFBQUJ3QUFBQUFBQUFCdURRQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBZ0FBQUFBQUFB
QUFBQUFBQUY5ZllYQndiR1ZmYm1GdFpYTUFBQUJmWDBSWFFWSkdBQUFBQUFBQUFBQUF4UVVBQUFB
QQpBQUJZQUFBQUFBQUFBSFVOQUFBQUFBQUEwQThBQUFRQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFB
QVgxOWhjSEJzWlY5dlltcGpBQUFBCkFGOWZSRmRCVWtZQUFBQUFBQUFBQUFBZEJnQUFBQUFBQUNR
QUFBQUFBQUFBelEwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUEKQUFBQUFBQUFBQUJmWDJG
d2NHeGxYMjVoYldWemNHRmpYMTlFVjBGU1JnQUFBQUFBQUFBQUFFRUdBQUFBQUFBQUpBQUFBQUFB
QUFEeApEUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUY5ZllYQndiR1Zm
ZEhsd1pYTUFBQUJmWDBSWFFWSkdBQUFBCkFBQUFBQUFBWlFZQUFBQUFBQUREQUFBQUFBQUFBQlVP
QUFBQUFBQUE4QThBQUFvQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQVgxOWoKYjIxd1lXTjBYM1Z1
ZDJsdVpGOWZURVFBQUFBQUFBQUFBQUFBQUFBb0J3QUFBQUFBQUNBQUFBQUFBQUFBMkE0QUFBTUFB
QUJBRUFBQQpBUUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUJmWDJWb1gyWnlZVzFsQUFBQUFBQUFY
MTlVUlZoVUFBQUFBQUFBQUFBQUFFZ0hBQUFBCkFBQUFRQUFBQUFBQUFBRDREZ0FBQXdBQUFBQUFB
QUFBQUFBQUN3QUFhQUFBQUFBQUFBQUFBQUFBQUFJQUFBQVlBQUFBU0JBQUFBZ0EKQUFESUVBQUFz
QUFBQUFzQUFBQlFBQUFBQUFBQUFBSUFBQUFDQUFBQUF3QUFBQVVBQUFBREFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZV
aUo1Vk5RU0luN01jQkloZHQwS1VpTFBRZ0FBQUJJCmhmOTBCZWdBQUFBQVNJczFhQUFBQUVpSjMv
OFZBQUFBQUVpSngrZ0FBQUFBU0lrRkNBQUFBRWlEeEFoYlhjTUFCQUFBQUFBQUFBQUEKQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFC
VlZFWTRVM1J5YVc1bgpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQURBQkFBQUNBQUFBQUFB
SUFRQUFBQUFRQUQ4QUFBQUFBQUFBQUFBQUFBQUFBQUNSCkFBQUFBUUlDNVFBQUFBY0lBeWdBQUFE
OEFBQUFBaDhFUkFFQUFEZ0N5UVhkQUFBQUx3QUFBQUxLQWlNQUFRVUZBUUFBTHdBQUFBTEwKQWlN
SUFRVU5BUUFBTHdBQUFBTE1BaU1RQVFVZUFRQUFMd0FBQUFMTkFpTVlBUVVvQVFBQUx3QUFBQUxP
QWlNZ0FRVXhBUUFBTHdBQQpBQUxQQWlNb0FRVTRBUUFBTHdBQUFBTFFBaU13QVFBR3pnQUFBRG9B
QUFBQkFRMEpBMGdBQUFBQUFBQUFCMkFCQUFBQkVRRUJBQUFBCkFBQUFBQUJIQUFBQUFBQUFBQUZX
Q0k4QkFBQUJFUnNCQUFBQUFBQUFDYkVCQUFBQkdDNEJBQUEyQUFBQUNjRUJBQUFCSFM0QkFBQloK
QUFBQUFBcWFBUUFBQVFzTEFRQUFEQkVCQUFBTkZnRUFBS1VCQUFBQlVBRUN2QUVBQUFZQkRDY0JB
QUFBQVJFQkpRNFRCUU1PRVFFUQpCaHNPNFg4TTVYOExBQUFDSkFBRERqNExDd3NBQUFNV0FFa1RB
dzQ2Q3pzTEFBQUVFd0VERGdzTE9nczdDd0FBQlEwQUF3NUpFem9MCk93czRDaklMQUFBR05BQURE
a2tUUHd3NkN6c0xBZ29BQUFjdUFRTU9PZ3M3Q3ljTVB3d1JBUklCUUFvQUFBZ0ZBQU1PT2dzN0Mw
a1QKQWdZQUFBazBBQU1PT2dzN0Mwa1RBZ1lBQUFvVEFBTU9QQXdBQUFzbUFFa1RBQUFNRHdCSkV3
QUFEUllBU1JNRERqb0xPd1VBQUFDegpBQUFBQWdDVUFBQUFBUUg3RGcwQUFRRUJBUUFBQUFFQUFB
RXZWWE5sY25NdllXeGxlR05vY21semRHVnVjMlZ1TDNkbFltdHBkQzlKCmJuUmxjbTVoYkM5WFpX
SkxhWFJUZVhOMFpXMUpiblJsY21aaFkyVUFMM1Z6Y2k5c2IyTmhiQzlwYm1Oc2RXUmxBQUJEY21G
emFGSmwKY0c5eWRHVnlWWFJwYkhNdWJRQUJBQUJEY21GemFGSmxjRzl5ZEdWeVEyeHBaVzUwTG1n
QUFnQUFBQUFKQWdBQUFBQUFBQUFBQXhFQgpDdmk4V3doMUFnNEFBUUVBQUFBQUFBQUFBQWtBQUFB
QUFBQUFBUUJWQ1FBQUFBQUFBQUE1QUFBQUFBQUFBQUVBVXdBQUFBQUFBQUFBCkFBQUFBQUFBQUFB
Y0FBQUFBQUFBQUNFQUFBQUFBQUFBQVFCVkFBQUFBQUFBQUFBQUFBQUFBQUFBQURrQUFBQUFBQUFB
T1FBQUFBQUEKQUFBQkFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxnQUFBQUlBQUFBQUFEUUJBQUE2
QUFBQVkzSmhjMmh5WlhCdmNuUmxjbDloYm01dgpkR0YwYVc5dWMxOTBBQUFBQUFCQmNIQnNaU0JN
VEZaTklIWmxjbk5wYjI0Z05TNHdJQ2hqYkdGdVp5MDFNREF1TUM0Mk1Da2dLR0poCmMyVmtJRzl1
SUV4TVZrMGdNeTR6YzNadUtRQXZWWE5sY25NdllXeGxlR05vY21semRHVnVjMlZ1TDNkbFltdHBk
QzlKYm5SbGNtNWgKYkM5WFpXSkxhWFJUZVhOMFpXMUpiblJsY21aaFkyVXZRM0poYzJoU1pYQnZj
blJsY2xWMGFXeHpMbTBBTDFWelpYSnpMMkZzWlhoagphSEpwYzNSbGJuTmxiaTkzWldKcmFYUXZT
VzUwWlhKdVlXd3ZWMlZpUzJsMFUzbHpkR1Z0U1c1MFpYSm1ZV05sQUdkRFVrRnVibTkwCllYUnBi
MjV6QUhabGNuTnBiMjRBYkc5dVp5QnNiMjVuSUhWdWMybG5ibVZrSUdsdWRBQjFhVzUwTmpSZmRB
QnRaWE56WVdkbEFITnAKWjI1aGRIVnlaVjl6ZEhKcGJtY0FZbUZqYTNSeVlXTmxBRzFsYzNOaFoy
VXlBSFJvY21WaFpBQmthV0ZzYjJkZmJXOWtaUUJqY21GegphSEpsY0c5eWRHVnlYMkZ1Ym05MFlY
UnBiMjV6WDNRQVYwdFRaWFJEY21GemFGSmxjRzl5ZEVGd2NHeHBZMkYwYVc5dVUzQmxZMmxtCmFX
TkpibVp2Y20xaGRHbHZiZ0JwYm1adlUzUnlhVzVuQUY5ZlEwWlRkSEpwYm1jQVEwWlRkSEpwYm1k
U1pXWUFiMnhrVFdWemMyRm4KWlFCamFHRnlBR3hoYzNSSmJtWnZRMmhoY25NQUF3QUFBQUlBQ0Vo
VFFVZ0JBQUFBQWdBQUFBSUFBQUFNQUFBQUFBQUFBQUVBQUFBQgpBQVlBQUFBQUFBRUFBQUJnbUVY
UmowNC9PamdBQUFCSUFBQUFZQUVBQUFFQUFBRENBQUFBQUFBQUFNNEFBQUFCQUFBQXJBQUFBQUFB
CkFBQklVMEZJQVFBQUFBRUFBQUFBQUFBQURBQUFBQUFBQUFBQkFBQUFBUUFHQVAvLy8vOUlVMEZJ
QVFBQUFBRUFBQUFBQUFBQURBQUEKQUFBQUFBQUJBQUFBQVFBR0FQLy8vLzlJVTBGSUFRQUFBQVVB
QUFBRkFBQUFGQUFBQUFBQUFBQURBQUFBQVFBR0FBTUFCUUFGQUFzQQpBQUFBQVAvLy8vLy8vLy8v
QWdBQUFBTUFBQURwRGNUUXJYdlYrK0lrR3dRQ2xsVVJZeUNWZkdRQUFBQjNBQUFBaWdBQUFKMEFB
QUN3CkFBQUFSQUVBQUFFQUFBQTZBQUFBRXdBQ0FBQUFBT1VBQUFBQkFBQUFLQUFBQUNRQUFBQUFB
QUNsQVFBQUFRQUFBQnNCQUFBV0FBQUEKQUFBQS9BQUFBQUVBQUFBdkFBQUFGZ0FBQUFBQUFMd0JB
QUFCQUFBQUp3RUFBQ1FBQUFBQUFBQUFBQUFBQUFBQUFFY0FBQUFCQUFFQgpBQUFBQUFBQUFBQUFB
QUFBQUFBQUFCUUFBQUFBQUFBQUFYcFNBQUY0RUFFUURBY0lrQUVBQUNRQUFBQWNBQUFBbVBqLy8v
Ly8vLzlICkFBQUFBQUFBQUFCQkRoQ0dBa01OQmtLREF3QUFBQUE4QUFBQUJBQUFIVFVBQUFBSEFB
QXRMUUFBQUFZQUFFMGtBQUFBQkFBQUZSMEEKQUFBRkFBQXRFd0FBQUFRQUFCMEFBQUFBQUFBQUR0
TUFBQUFCQUFBR3l3QUFBQUVBQUFhNkFBQUFBZ0FBQnFFQUFBQUJBQUFHWVFBQQpBQUVBQUFaWkFB
QUFBUUFBQmo0QUFBQUJBQUFHTmdBQUFBRUFBQVliQUFBQUFRQUFCaE1BQUFBQkFBQUdDQUFBQUFF
QUFBWUFBQUFBCkFRQUFCalFBQUFBUkFBQlVOQUFBQUJFQUFBUXdBQUFBRVFBQVZEQUFBQUFSQUFB
RVlBQUFBQlFBQUZSZ0FBQUFGQUFBQkZ3QUFBQVUKQUFCVVhBQUFBQlFBQUFSWUFBQUFGQUFBVkZn
QUFBQVVBQUFFVkFBQUFCUUFBRlJVQUFBQUZBQUFCRkFBQUFBVUFBQlVVQUFBQUJRQQpBQVFBQUFB
QUFRQUFCcEFBQUFBT0F3QUFnQUFBQUFBQUFBQ21BQUFBRGhZQUFFZ0hBQUFBQUFBQUFRQUFBQjhC
QUFBQUFBQUFBQUFBCkFGMEFBQUFmRmdBQVlBY0FBQUFBQUFBeEFBQUFId0lBQUVnQUFBQUFBQUFB
UVFBQUFBRUFBQUFBQUFBQUFBQUFBRWNBQUFBQkFBQUEKQUFBQUFBQUFBQUJWQUFBQUFRQUFBQUFB
QUFBQUFBQUFBRjlYUzFObGRFTnlZWE5vVW1Wd2IzSjBRWEJ3YkdsallYUnBiMjVUY0dWagphV1pw
WTBsdVptOXliV0YwYVc5dUFGOW5RMUpCYm01dmRHRjBhVzl1Y3dCZlpuSmxaUUJmYjJKcVkxOXRj
MmRUWlc1a0FGOXpkSEprCmRYQUFYMWRMVTJWMFEzSmhjMmhTWlhCdmNuUkJjSEJzYVdOaGRHbHZi
bE53WldOcFptbGpTVzVtYjNKdFlYUnBiMjR1WldnQVRGOVAKUWtwRFgwMUZWRWhmVmtGU1gwNUJU
VVZmQUVWSVgyWnlZVzFsTUFBPQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206579</attachid>
            <date>2013-07-12 16:30:32 -0700</date>
            <delta_ts>2013-07-13 15:28:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118550-20130712162815.patch</filename>
            <type>text/plain</type>
            <size>754770</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI1NCBAQAorMjAxMy0wNy0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFOR0xFIGZyb20gcjE5ODcgdG8gcjI0MjYgd2hpbGUg
a2VlcGluZyB0aGVzZSB0d28gcHJldmlvdXMgY2hhbmdlczoKKyAgICAgICAgS2VlcGluZyAjaWYg
ZGVmaW5lZChfTVNDX1ZFUikgYXJvdW5kICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzE4KSBp
biBEZXBlbmRlbmN5R3JhcGguY3BwLgorICAgICAgICBLZWVwaW5nIGluY2x1ZGUga2hycGxhdGZv
cm0uaCBpbnN0ZWFkIG9mIEtIUi9raHJwbGF0Zm9ybS5oIGluIFNoYWRlckxhbmcuaC4KKyAgICAg
ICAgQWRkZWQgc3RhdGljX2Nhc3RzIGluIEludGVybWVkaWF0ZS5jcHAgdG8gZml4IGNvbXBpbGlu
ZyBvbiBNYWMuCisgICAgICAgIEFkZGVkIHN0YXRpY19jYXN0cyBpbiBUeXBlcy5oIHRvIGZpeCBj
b21waWxpbmcgZm9yIEdUSy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE4NTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBBTkdMRS5wbGlzdDogVXBkYXRlZCByZXZpc2lvbiBvZiBBTkdMRSB0byAy
NDI2LgorICAgICAgICAqIEFOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgICAgIFJl
bmFtZWQgRGV0ZWN0UmVjdXJzaW9uIHRvIERldGVjdENhbGxEZXB0aCBhbmQgYWRkZWQgYnVpbHRp
bl9zeW1ib2xfdGFibGUuCisgICAgICAgICogaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaDoK
KyAgICAgICAgKiBzcmMvY29tbW9uL3ZlcnNpb24uaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
QmFzZVR5cGVzLmg6CisgICAgICAgIChnZXRRdWFsaWZpZXJTdHJpbmcpOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9Db21tb24uaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29tcGlsZXIuY3Bw
OgorICAgICAgICAoVENvbXBpbGVyOjpUQ29tcGlsZXIpOgorICAgICAgICAoVENvbXBpbGVyOjpJ
bml0KToKKyAgICAgICAgKFRDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChUQ29tcGlsZXI6
OmRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChUQ29tcGlsZXI6OmVuZm9yY2VUaW1pbmdSZXN0
cmljdGlvbnMpOgorICAgICAgICAoVENvbXBpbGVyOjpsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oOgorICAgICAgICAoQ29u
c3RhbnRVbmlvbjo6Q29uc3RhbnRVbmlvbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVj
dENhbGxEZXB0aC5jcHA6IEFkZGVkLgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlv
bk5vZGU6OkZ1bmN0aW9uTm9kZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9u
Tm9kZTo6Z2V0TmFtZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6
YWRkQ2FsbGVlKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpkZXRl
Y3RDYWxsRGVwdGgpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OnJl
c2V0KToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RGV0ZWN0Q2FsbERlcHRoKToKKyAgICAg
ICAgKERldGVjdENhbGxEZXB0aDo6fkRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChEZXRlY3RD
YWxsRGVwdGg6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6Y2hl
Y2tFeGNlZWRzTWF4RGVwdGgpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpyZXNldEZ1bmN0
aW9uTm9kZXMpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGhGb3JG
dW5jdGlvbik6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmRldGVjdENhbGxEZXB0aCk6Cisg
ICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmZpbmRGdW5jdGlvbkJ5TmFtZSk6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oOiBBZGRlZC4KKyAgICAgICAgKERldGVjdENh
bGxEZXB0aDo6Z2V0SW5mb1NpbmspOgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRlY3RSZWN1
cnNpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNp
b24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwOgor
ICAgICAgICAoVERpYWdub3N0aWNzOjp3cml0ZUluZm8pOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9Gb3JMb29wVW5yb2xsLmNwcDoKKyAgICAgICAgKEZvckxvb3BVbnJvbGw6OmV2YWx1YXRlSW50
Q29uc3RhbnQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9JbmZvU2luay5jcHA6CisgICAgICAg
IChUSW5mb1NpbmtCYXNlOjpwcmVmaXgpOgorICAgICAgICAoVEluZm9TaW5rQmFzZTo6bG9jYXRp
b24pOgorICAgICAgICAoVEluZm9TaW5rQmFzZTo6bWVzc2FnZSk6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL0luZm9TaW5rLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3Bw
OgorICAgICAgICAoVEJ1aWx0SW5zOjppbml0aWFsaXplKToKKyAgICAgICAgKElkZW50aWZ5QnVp
bHRJbnMpOgorICAgICAgICAoSW5pdEV4dGVuc2lvbkJlaGF2aW9yKToKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcDogQWRkZWQgc3RhdGljX2Nhc3RzIHRvIGZpeCBidWls
ZCBlcnJvcnMgb24gTWFjLgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkU3ltYm9sKToKKyAg
ICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hdGgpOgorICAgICAgICAoVEludGVybWVk
aWF0ZTo6YWRkQXNzaWduKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KToKKyAg
ICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0aCk6CisgICAgICAgIChUSW50ZXJtZWRp
YXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRD
b252ZXJzaW9uKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2dyZWdhdGUpOgorICAg
ICAgICAoVEludGVybWVkaWF0ZTo6bWFrZUFnZ3JlZ2F0ZSk6CisgICAgICAgIChUSW50ZXJtZWRp
YXRlOjphZGRTZWxlY3Rpb24pOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQ29tbWEpOgor
ICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQ29uc3RhbnRVbmlvbik6CisgICAgICAgIChUSW50
ZXJtZWRpYXRlOjphZGRTd2l6emxlKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZExvb3Ap
OgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKToKKyAgICAgICAgKFRJbnRlcm1V
bmFyeTo6cHJvbW90ZSk6CisgICAgICAgIChUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKToKKyAgICAg
ICAgKENvbXBhcmVTdHJ1Y3QpOgorICAgICAgICAoQ29tcGFyZVN0cnVjdHVyZSk6CisgICAgICAg
IChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjpw
cm9tb3RlQ29uc3RhbnRVbmlvbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0wu
Y3BwOgorICAgICAgICAoVE91dHB1dEdMU0w6OnZpc2l0U3ltYm9sKToKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvT3V0cHV0R0xTTC5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRHTFNM
QmFzZS5jcHA6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OndyaXRlVmFyaWFibGVUeXBlKToK
KyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6d3JpdGVDb25zdGFudFVuaW9uKToKKyAgICAgICAg
KFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCaW5hcnkpOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNl
Ojp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OmdldFR5cGVOYW1l
KToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6aGFzaEZ1bmN0aW9uTmFtZSk6CisgICAgICAg
IChUT3V0cHV0R0xTTEJhc2U6OnN0cnVjdERlY2xhcmVkKToKKyAgICAgICAgKFRPdXRwdXRHTFNM
QmFzZTo6ZGVjbGFyZVN0cnVjdCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0xC
YXNlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwOgorICAgICAgICAo
c2g6Ok91dHB1dEhMU0w6Ok91dHB1dEhMU0wpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6Omhl
YWRlcik6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRTeW1ib2wpOgorICAgICAgICAo
c2g6Ok91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp2
aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24p
OgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0TG9vcCk6CisgICAgICAgIChzaDo6T3V0
cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcCk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6
dHlwZVN0cmluZyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6aW5pdGlhbGl6ZXIpOgorICAg
ICAgICAoc2g6Ok91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKToKKyAgICAgICAgKHNoOjpPdXRw
dXRITFNMOjp3cml0ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmRl
Y29yYXRlRmllbGQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNMLmg6CisgICAg
ICAgICogc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcDoKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6OnBhcnNlVmVjdG9yRmllbGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0
cml4RmllbGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmVycm9yKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6Ondhcm5pbmcpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YXNzaWduRXJy
b3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6OmJpbmFyeU9wRXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cHJl
Y2lzaW9uRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNo
ZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2spOgorICAgICAg
ICAoVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp2
b2lkRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayk6
CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJyb3JDaGVjayk6CisgICAgICAgIChU
UGFyc2VDb250ZXh0OjpzdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmNvbnRhaW5zU2FtcGxlcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJheVNp
emVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJy
b3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKToK
KyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFy
c2VDb250ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6Om5vbkluaXRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJy
b3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKToK
KyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbik6CisgICAgICAgIChUUGFyc2VD
b250ZXh0Ojppc1ZhcmlhYmxlQnVpbHRJbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpleGVj
dXRlSW5pdGlhbGl6ZXIpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3Ip
OgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0QnVpbHRJbik6CisgICAgICAgIChU
UGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6
YWRkQ29uc3RWZWN0b3JOb2RlKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0
cml4Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdEFycmF5Tm9kZSk6Cisg
ICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdCk6CisgICAgICAgIChUUGFyc2VD
b250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6
OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvUGFyc2VI
ZWxwZXIuaDoKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OlRQYXJzZUNvbnRleHQpOgorICAgICAg
ICAoVFBhcnNlQ29udGV4dDo6cHJhZ21hKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvUG9vbEFs
bG9jLmNwcDoKKyAgICAgICAgKFRQb29sQWxsb2NhdG9yOjphbGxvY2F0ZSk6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL1NoSGFuZGxlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1NoYWRlckxh
bmcuY3BwOgorICAgICAgICAoU2hJbml0QnVpbHRJblJlc291cmNlcyk6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKFRUeXBlOjpUVHlwZSk6CisgICAg
ICAgIChUVHlwZTo6YnVpbGRNYW5nbGVkTmFtZSk6CisgICAgICAgIChUVHlwZTo6Z2V0T2JqZWN0
U2l6ZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpjb250YWluc0FycmF5cyk6CisgICAgICAgIChU
U3RydWN0dXJlOjpidWlsZE1hbmdsZWROYW1lKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmNhbGN1
bGF0ZU9iamVjdFNpemUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6Y2FsY3VsYXRlRGVlcGVzdE5l
c3RpbmcpOgorICAgICAgICAoVFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvRXh0ZW5zaW9uKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKFRTeW1ib2w6
OnJlbGF0ZVRvRXh0ZW5zaW9uKToKKyAgICAgICAgKFRTeW1ib2w6OmdldEV4dGVuc2lvbik6Cisg
ICAgICAgIChUVmFyaWFibGU6OlRWYXJpYWJsZSk6CisgICAgICAgIChUVmFyaWFibGU6OnNldFF1
YWxpZmllcik6CisgICAgICAgIChUVmFyaWFibGU6OnNoYXJlQ29uc3RQb2ludGVyKToKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvVHlwZXMuaDogQWRkZWQgc3RhdGljX2Nhc3RzIGZyb20gYml0Zmll
bGRzIHRvIGZpeCBjb21waWxpbmcgZm9yIEdUSy4KKyAgICAgICAgKFRGaWVsZDo6VEZpZWxkKToK
KyAgICAgICAgKFRGaWVsZDo6dHlwZSk6CisgICAgICAgIChURmllbGQ6Om5hbWUpOgorICAgICAg
ICAoTmV3UG9vbFRGaWVsZExpc3QpOgorICAgICAgICAoVFN0cnVjdHVyZTo6VFN0cnVjdHVyZSk6
CisgICAgICAgIChUU3RydWN0dXJlOjpuYW1lKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmZpZWxk
cyk6CisgICAgICAgIChUU3RydWN0dXJlOjptYW5nbGVkTmFtZSk6CisgICAgICAgIChUU3RydWN0
dXJlOjpvYmplY3RTaXplKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmRlZXBlc3ROZXN0aW5nKToK
KyAgICAgICAgKFRUeXBlOjpUVHlwZSk6CisgICAgICAgIChUVHlwZTo6Y2xlYXJBcnJheW5lc3Mp
OgorICAgICAgICAoVFR5cGU6OmdldFN0cnVjdCk6CisgICAgICAgIChUVHlwZTo6c2V0U3RydWN0
KToKKyAgICAgICAgKFRUeXBlOjpnZXRNYW5nbGVkTmFtZSk6CisgICAgICAgIChUVHlwZTo6Z2V0
RGVlcGVzdFN0cnVjdE5lc3RpbmcpOgorICAgICAgICAoVFR5cGU6OmlzU3RydWN0dXJlQ29udGFp
bmluZ0FycmF5cyk6CisgICAgICAgIChUUHVibGljVHlwZTo6c2V0QmFzaWMpOgorICAgICAgICAq
IHNyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwOgorICAgICAgICAoZ2V0VXNlckRlZmluZWRW
YXJpYWJsZUluZm8pOgorICAgICAgICAqIHNyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJs
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoYnVpbHRpbjEpOgorICAgICAgICAoYnVpbHRpbjIpOgor
ICAgICAgICAoYnVpbHRpbjMpOgorICAgICAgICAoSW5zZXJ0QnVpbHRJbkZ1bmN0aW9uc0NvbW1v
bik6CisgICAgICAgIChJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KToKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaDogQWRkZWQuCisgICAgICAgICogc3Jj
L2NvbXBpbGVyL2dsc2xhbmcubDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy55Ogor
ICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHA6CisgICAgICAgICh5eV9nZXRf
cHJldmlvdXNfc3RhdGUpOgorICAgICAgICAoeXlfdHJ5X05VTF90cmFucyk6CisgICAgICAgICh5
eWdldF9sbG9jKToKKyAgICAgICAgKHl5c2V0X2xsb2MpOgorICAgICAgICAoc3RyaW5nX2lucHV0
KToKKyAgICAgICAgKGNoZWNrX3R5cGUpOgorICAgICAgICAocmVzZXJ2ZWRfd29yZCk6CisgICAg
ICAgIChnbHNsYW5nX3NjYW4pOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5j
cHA6CisgICAgICAgICh5eXN5bnRheF9lcnJvcik6CisgICAgICAgICh5eWVycm9yKToKKyAgICAg
ICAgKGdsc2xhbmdfcGFyc2UpOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5o
OgorICAgICAgICAqIHNyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwOgorICAgICAgICAoVE91dHB1
dFRyYXZlcnNlcjo6dmlzaXRVbmFyeSk6CisgICAgICAgIChUT3V0cHV0VHJhdmVyc2VyOjp2aXNp
dEFnZ3JlZ2F0ZSk6CisgICAgICAgIChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5p
b24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9pbnRlcm1lZGlhdGUuaDoKKyAgICAgICAgKFRJ
bnRlcm1Ob2RlOjpUSW50ZXJtTm9kZSk6CisgICAgICAgIChUSW50ZXJtTm9kZTo6flRJbnRlcm1O
b2RlKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRMaW5lKToKKyAgICAgICAgKFRJbnRlcm1O
b2RlOjpzZXRMaW5lKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRBc0xvb3BOb2RlKToKKyAg
ICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjpnZXRJQ29uc3QpOgorICAgICAgICAoVEludGVy
bUNvbnN0YW50VW5pb246OmdldEZDb25zdCk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlv
bjo6Z2V0QkNvbnN0KToKKyAgICAgICAgKFRJbnRlcm1BZ2dyZWdhdGU6OlRJbnRlcm1BZ2dyZWdh
dGUpOgorICAgICAgICAoVEludGVybVRyYXZlcnNlcjo6VEludGVybVRyYXZlcnNlcik6CisgICAg
ICAgIChUSW50ZXJtVHJhdmVyc2VyOjpnZXRNYXhEZXB0aCk6CisgICAgICAgIChUSW50ZXJtVHJh
dmVyc2VyOjppbmNyZW1lbnREZXB0aCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2xvY2FsaW50
ZXJtZWRpYXRlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwOgorICAg
ICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdFN5bWJvbCk6CisgICAgICAgIChUQ29uc3RUcmF2
ZXJzZXI6OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRVbmFy
eSk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAg
KFRDb25zdFRyYXZlcnNlcjo6dmlzaXRTZWxlY3Rpb24pOgorICAgICAgICAoVENvbnN0VHJhdmVy
c2VyOjp2aXNpdENvbnN0YW50VW5pb24pOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNp
dExvb3ApOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdEJyYW5jaCk6CisgICAgICAg
IChUSW50ZXJtZWRpYXRlOjpwYXJzZUNvbnN0VHJlZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcDoKKyAgICAgICAgKFJlc3Ry
aWN0VmVydGV4U2hhZGVyVGltaW5nOjp2aXNpdFN5bWJvbCk6CisgICAgICAgICAgICBVcGRhdGVk
IEFOR0xFIHRvIHIyNDI2LgorCiAyMDEzLTA2LTE3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBTb3J0IGFsbCB0aGUgWGNvZGUgcHJvamVjdCBmaWxlcwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUucGxpc3QKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvQU5HTEUucGxpc3QJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC02LDEzICs2
LDEzIEBACiAJCTxrZXk+T3BlblNvdXJjZVByb2plY3Q8L2tleT4KIAkJPHN0cmluZz5BTkdMRTwv
c3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VWZXJzaW9uPC9rZXk+Ci0JCTxzdHJpbmc+cjE2NDE8
L3N0cmluZz4KKwkJPHN0cmluZz5yMjQyNjwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VXZWJz
aXRlVVJMPC9rZXk+CiAJCTxzdHJpbmc+aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xlcHJv
amVjdC88L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlU0NNPC9rZXk+Ci0JCTxzdHJpbmc+c3Zu
IGNvIC1yMTY0MSBodHRwOi8vYW5nbGVwcm9qZWN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay88
L3N0cmluZz4KKwkJPHN0cmluZz5zdm4gY28gLXIyNDI2IGh0dHA6Ly9hbmdsZXByb2plY3QuZ29v
Z2xlY29kZS5jb20vc3ZuL3RydW5rLzwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VJbXBvcnRE
YXRlPC9rZXk+Ci0JCTxzdHJpbmc+MjAxMy0wMS0wNDwvc3RyaW5nPgorCQk8c3RyaW5nPjIwMTMt
MDYtMTM8L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlTGljZW5zZTwva2V5PgogCQk8c3RyaW5n
PkJTRDwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VMaWNlbnNlRmlsZTwva2V5PgpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDE1MjU5NSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw2ICsyNCw4IEBAIGxpYkFOR0xFX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvaW5jbHVkZS9LSFIva2hycGxhdGZvcm0uaCBcCiAJU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9CYXNlVHlwZXMuaCBcCisJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcCBcCisJU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmggXAogCVNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgXAog
CVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVs
YXRvci5oIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkdM
U0wuY3BwIFwKQEAgLTM5LDEwICs0MSwxMCBAQCBsaWJBTkdMRV9sYV9TT1VSQ0VTID0gXAogCVNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3Jh
cGhPdXRwdXQuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdy
YXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAgXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgXAorCVNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwIFwK
KwlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgg
XAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51
aXR5LmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERp
c2NvbnRpbnVpdHkuaCBcCi0JU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Rl
dGVjdFJlY3Vyc2lvbi5jcHAgXAotCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9EZXRlY3RSZWN1cnNpb24uaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0RpYWdub3N0aWNzLmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0RpYWdub3N0aWNzLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9EaXJlY3RpdmVIYW5kbGVyLmNwcCBcCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9U
YXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1RhcmdldC5w
cmkJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1RhcmdldC5w
cmkJKHdvcmtpbmcgY29weSkKQEAgLTE4LDYgKzE4LDcgQEAgSU5DTFVERVBBVEggKz0gXAogCiBI
RUFERVJTICs9IFwKICAgICBzcmMvY29tcGlsZXIvQmFzZVR5cGVzLmggXAorICAgIHNyYy9jb21w
aWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5oIFwKICAgICBzcmMvY29tcGlsZXIvQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3IuaCBcCiAgICAgc3JjL2NvbXBpbGVyL0NvbW1vbi5oIFwKICAgICBzcmMv
Y29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oIFwKQEAgLTI1LDggKzI2LDggQEAgSEVBREVSUyArPSBc
CiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oIFwKICAgICBzcmMv
Y29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIFwKICAgICBzcmMvY29t
cGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggXAorICAgIHNyYy9jb21waWxl
ci9EZXRlY3RDYWxsRGVwdGguaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVp
dHkuaCBcCi0gICAgc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oIFwKICAgICBzcmMvY29t
cGlsZXIvRGlhZ25vc3RpY3MuaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RpcmVjdGl2ZUhhbmRsZXIu
aCBcCiAgICAgc3JjL2NvbXBpbGVyL0V4dGVuc2lvbkJlaGF2aW9yLmggXApAQCAtODQsNiArODUs
NyBAQCBIRUFERVJTICs9IFwKICAgICBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3Vu
ZHNDbGFtcGVyLmgKIAogU09VUkNFUyArPSBcCisgICAgc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3lt
Ym9sX3RhYmxlLmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
LmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0NvZGVHZW5HTFNMLmNwcCBcCiAgICAgc3JjL2NvbXBp
bGVyL0NvbXBpbGVyLmNwcCBcCkBAIC05Miw4ICs5NCw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHNy
Yy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCBcCiAgICAgc3Jj
L2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAgXAogICAgIHNyYy9j
b21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgXAorICAgIHNyYy9j
b21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwIFwKICAgICBzcmMvY29tcGlsZXIvRGV0ZWN0RGlz
Y29udGludWl0eS5jcHAgXAotICAgIHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwIFwK
ICAgICBzcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvRGly
ZWN0aXZlSGFuZGxlci5jcHAgXAogICAgIHNyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcCBc
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEyLDggKzEyLDkgQEAKIAkJNDk5NTFDMDMxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9s
aW1pdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
OTUxQzAyMTRCN0FBQjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRzLmggKi87IH07CiAJCTQ5OTUx
QzA5MTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwNTE0QjdBQUQ3
MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovOyB9OwogCQk0OTk1MUMw
QTE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA2MTRCN0FBRDgwMDYw
RTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovOyB9OwotCQk0OTk1MUMwQjE0QjdB
QUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRl
Y3RSZWN1cnNpb24uY3BwICovOyB9OwotCQk0OTk1MUMwQzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0
ZWN0UmVjdXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmggKi87IH07
CisJCTQ5OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDcxNEI3QUFE
ODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAgKi87IH07CisJCTQ5OTUxQzBDMTRCN0FB
RDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA4MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RD
YWxsRGVwdGguaCAqLzsgfTsKKwkJNUNDRUI4QjYxNzkwOEVFQzAwRkQ5NDk2IC8qIGJ1aWx0aW5f
c3ltYm9sX3RhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDQ0VCOEI0MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5j
cHAgKi87IH07CiAJCTkwRDlCMTAyMTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjBGOTEyRTEx
RENCMDAyRDQyNTUgLyogQ29tcGlsZXIuY3BwICovOyB9OwogCQk5MEQ5QjEwMzEyRTExRENCMDAy
RDQyNTUgLyogRXh0ZW5zaW9uQmVoYXZpb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMEZBMTJFMTFEQ0IwMDJENDI1NSAvKiBFeHRlbnNpb25C
ZWhhdmlvci5oICovOyB9OwogCQk5MEQ5QjEwNDEyRTExRENCMDAyRDQyNTUgLyogZ2xzbGFuZ19s
ZXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBE
OUIwRkIxMkUxMURDQjAwMkQ0MjU1IC8qIGdsc2xhbmdfbGV4LmNwcCAqLzsgfTsKQEAgLTE0MCw4
ICsxNDEsMTAgQEAKIAkJNDk5NTFDMDIxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbGVuZ3RoX2xpbWl0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTk1MUMwNTE0QjdBQUQ3MDA2MEU5NkUgLyogQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDk5NTFDMDcxNEI3QUFEODAw
NjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEZXRlY3RSZWN1cnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldGVjdFJlY3Vyc2lvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2Fs
bERlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERldGVjdENh
bGxEZXB0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5OTUxQzA4MTRCN0FB
RDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGV0ZWN0Q2FsbERlcHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDQ0VCOEI0MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBidWlsdGluX3N5bWJvbF90YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDQ0VCOEI1MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJv
bF90YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBidWlsdGluX3N5bWJvbF90YWJsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNTEyMDhDNjhCMDAxQzg3M0UgLyogQU5HTEUu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQU5HTEUueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM2MTIwOEM2OEIwMDFDODczRSAv
KiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM3MTIwOEM2OEIwMDFD
ODczRSAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzkwLDYgKzM5Myw4IEBACiAJCQkJQTI2NTY4MkMxNTlDMjNFMTAwMzk4NTM5IC8qIGRlcGdy
YXBoICovLAogCQkJCUZCMzlEMjQ0MTIwMEYzNUEwMDA4OEU2OSAvKiBwcmVwcm9jZXNzb3IgKi8s
CiAJCQkJQTI2NTY4MzQxNTlDMjNFMTAwMzk4NTM5IC8qIHRpbWluZyAqLywKKwkJCQk1Q0NFQjhC
NDE3OTA4RTNBMDBGRDk0OTYgLyogYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwICovLAorCQkJCTVD
Q0VCOEI1MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5oICovLAogCQkJ
CUZCMzlEMjIxMTIwMEYzNUEwMDA4OEU2OSAvKiBCYXNlVHlwZXMuaCAqLywKIAkJCQk0OTk1MUMw
NTE0QjdBQUQ3MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovLAogCQkJ
CTQ5OTUxQzA2MTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICov
LApAQCAtMzk5LDggKzQwNCw4IEBACiAJCQkJRkIzOUQyMjUxMjAwRjM1QTAwMDg4RTY5IC8qIENv
bnN0YW50VW5pb24uaCAqLywKIAkJCQlGQjM5RDIyNjEyMDBGMzVBMDAwODhFNjkgLyogZGVidWcu
Y3BwICovLAogCQkJCUZCMzlEMjI3MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5oICovLAotCQkJ
CTQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uY3BwICovLAotCQkJ
CTQ5OTUxQzA4MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLywKKwkJCQk0
OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRoLmNwcCAqLywKKwkJCQk0
OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRoLmggKi8sCiAJCQkJQTI2
NTY3QjAxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmNwcCAqLywKIAkJCQlBMjY1NjdC
MTE1OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25vc3RpY3MuaCAqLywKIAkJCQlBMjY1NjdCMjE1OUMy
MUIxMDAzOTg1MzkgLyogRGlyZWN0aXZlSGFuZGxlci5jcHAgKi8sCkBAIC01MzAsNyArNTM1LDcg
QEAKIAkJCQlBMjY1NjgzQTE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMjY1NjgzQzE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdy
YXBoQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY4M0UxNTlDMjNFMTAwMzk4NTM5
IC8qIERlcGVuZGVuY3lHcmFwaE91dHB1dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk5NTFDMEMx
NEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDk5NTFDMEMxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTI2NTY3QkMxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMjY0RjhBRDE2OTc0REVEMDA2RkFBNUEgLyogRGlhZ25vc3RpY3NCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1NjdCRTE1OUMyMUIxMDAzOTg1MzkgLyogRGlyZWN0
aXZlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC02MzUsNyArNjQwLDcgQEAKIAkJCQlBMjY1
NjgzQjE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBMjY1NjgzRDE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBo
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2ODNGMTU5QzIzRTEwMDM5ODUzOSAv
KiBEZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0OTk1MUMw
QjE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTQ5OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTI2NTY3QkIxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRGOEFDMTY5NzRERUQwMDZGQUE1QSAvKiBEaWFnbm9z
dGljc0Jhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NTY3QkQxNTlDMjFCMTAwMzk4NTM5
IC8qIERpcmVjdGl2ZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC02NzAsNiArNjc1LDcg
QEAKIAkJCQlBMjY1Njg0MDE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RGcmFnbWVudFNoYWRl
clRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1Njg0MjE1OUMyM0UxMDAzOTg1Mzkg
LyogUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTBE
OUIxMDkxMkUxMURDQjAwMkQ0MjU1IC8qIFNlYXJjaFN5bWJvbC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1Q0NFQjhCNjE3OTA4RUVDMDBGRDk0OTYgLyogYnVpbHRpbl9zeW1ib2xfdGFibGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQyQTgxMjAwRjM1QTAwMDg4RTY5IC8qIFNoYWRlckxh
bmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQyQUExMjAwRjM1QTAwMDg4RTY5IC8qIFN5
bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRGOEMxMTY5NzRERUQwMDZGQUE1
QSAvKiBUb2tlbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkocmV2aXNpb24gMTUy
NTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxh
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSwxMyBAQCB0eXBlZGVmIGVudW0gewog
ICAvLyB2ZWMyMzQsIG9yIG1hdDIzNCB0eXBlLiBUaGUgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJh
dGVneSBlbnVtLAogICAvLyBzcGVjaWZpZWQgaW4gdGhlIFNoQnVpbHRJblJlc291cmNlcyB3aGVu
IGNvbnN0cnVjdGluZyB0aGUKICAgLy8gY29tcGlsZXIsIHNlbGVjdHMgdGhlIHN0cmF0ZWd5IGZv
ciB0aGUgY2xhbXBpbmcgaW1wbGVtZW50YXRpb24uCi0gIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZ
X0JPVU5EUyA9IDB4MTAwMAorICBTSF9DTEFNUF9JTkRJUkVDVF9BUlJBWV9CT1VORFMgPSAweDEw
MDAsCisKKyAgLy8gVGhpcyBmbGFnIGxpbWl0cyB0aGUgY29tcGxleGl0eSBvZiBhbiBleHByZXNz
aW9uLgorICBTSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkgPSAweDIwMDAsCisKKyAgLy8g
VGhpcyBmbGFnIGxpbWl0cyB0aGUgZGVwdGggb2YgdGhlIGNhbGwgc3RhY2suCisgIFNIX0xJTUlU
X0NBTExfU1RBQ0tfREVQVEggPSAweDQwMDAsCiB9IFNoQ29tcGlsZU9wdGlvbnM7CiAKIC8vIERl
ZmluZXMgYWx0ZXJuYXRlIHN0cmF0ZWdpZXMgZm9yIGltcGxlbWVudGluZyBhcnJheSBpbmRleCBj
bGFtcGluZy4KQEAgLTIwOSw2ICsyMTUsNyBAQCB0eXBlZGVmIHN0cnVjdAogICAgIGludCBPRVNf
RUdMX2ltYWdlX2V4dGVybmFsOwogICAgIGludCBBUkJfdGV4dHVyZV9yZWN0YW5nbGU7CiAgICAg
aW50IEVYVF9kcmF3X2J1ZmZlcnM7CisgICAgaW50IEVYVF9mcmFnX2RlcHRoOwogCiAgICAgLy8g
U2V0IHRvIDEgaWYgaGlnaHAgcHJlY2lzaW9uIGlzIHN1cHBvcnRlZCBpbiB0aGUgZnJhZ21lbnQg
bGFuZ3VhZ2UuCiAgICAgLy8gRGVmYXVsdCBpcyAwLgpAQCAtMjIyLDYgKzIyOSwxMiBAQCB0eXBl
ZGVmIHN0cnVjdAogICAgIC8vIFNlbGVjdHMgYSBzdHJhdGVneSB0byB1c2Ugd2hlbiBpbXBsZW1l
bnRpbmcgYXJyYXkgaW5kZXggY2xhbXBpbmcuCiAgICAgLy8gRGVmYXVsdCBpcyBTSF9DTEFNUF9X
SVRIX0NMQU1QX0lOVFJJTlNJQy4KICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IEFy
cmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5OworCisgICAgLy8gVGhlIG1heGltdW0gY29tcGxleGl0
eSBhbiBleHByZXNzaW9uIGNhbiBiZS4KKyAgICBpbnQgTWF4RXhwcmVzc2lvbkNvbXBsZXhpdHk7
CisKKyAgICAvLyBUaGUgbWF4aW11bSBkZXB0aCBhIGNhbGwgc3RhY2sgY2FuIGJlLgorICAgIGlu
dCBNYXhDYWxsU3RhY2tEZXB0aDsKIH0gU2hCdWlsdEluUmVzb3VyY2VzOwogCiAvLwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgJKHJldmlzaW9u
IDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdmVyc2lvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogI2RlZmluZSBNQUpPUl9WRVJTSU9OIDEK
ICNkZWZpbmUgTUlOT1JfVkVSU0lPTiAwCiAjZGVmaW5lIEJVSUxEX1ZFUlNJT04gMAotI2RlZmlu
ZSBCVUlMRF9SRVZJU0lPTiAxOTg3CisjZGVmaW5lIEJVSUxEX1JFVklTSU9OIDIyNDkKIAogI2Rl
ZmluZSBTVFJJTkdJRlkoeCkgI3gKICNkZWZpbmUgTUFDUk9fU1RSSU5HSUZZKHgpIFNUUklOR0lG
WSh4KQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9C
YXNlVHlwZXMuaAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCwxMCArOTAsNiBA
QCBlbnVtIFRRdWFsaWZpZXIKICAgICBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAgICAvLyB2ZXJ0
ZXggc2hhZGVycyBvbmx5ICByZWFkL3dyaXRlCiAgICAgRXZxVW5pZm9ybSwgICAgICAgLy8gUmVh
ZG9ubHksIHZlcnRleCBhbmQgZnJhZ21lbnQKIAotICAgIC8vIHBhY2svdW5wYWNrIGlucHV0IGFu
ZCBvdXRwdXQKLSAgICBFdnFJbnB1dCwKLSAgICBFdnFPdXRwdXQsCi0KICAgICAvLyBwYXJhbWV0
ZXJzCiAgICAgRXZxSW4sCiAgICAgRXZxT3V0LApAQCAtMTEyLDYgKzEwOCw3IEBAIGVudW0gVFF1
YWxpZmllcgogICAgIC8vIGJ1aWx0LWlucyB3cml0dGVuIGJ5IGZyYWdtZW50IHNoYWRlcgogICAg
IEV2cUZyYWdDb2xvciwKICAgICBFdnFGcmFnRGF0YSwKKyAgICBFdnFGcmFnRGVwdGgsCiAKICAg
ICAvLyBlbmQgb2YgbGlzdAogICAgIEV2cUxhc3QKQEAgLTEzNywxNCArMTM0LDEzIEBAIGlubGlu
ZSBjb25zdCBjaGFyKiBnZXRRdWFsaWZpZXJTdHJpbmcoVFEKICAgICBjYXNlIEV2cUluOiAgICAg
ICAgICAgICByZXR1cm4gImluIjsgICAgICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFPdXQ6
ICAgICAgICAgICAgcmV0dXJuICJvdXQiOyAgICAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZx
SW5PdXQ6ICAgICAgICAgIHJldHVybiAiaW5vdXQiOyAgICAgICAgICBicmVhazsKLSAgICBjYXNl
IEV2cUlucHV0OiAgICAgICAgICByZXR1cm4gImlucHV0IjsgICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBFdnFPdXRwdXQ6ICAgICAgICAgcmV0dXJuICJvdXRwdXQiOyAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRXZxUG9zaXRpb246ICAgICAgIHJldHVybiAiUG9zaXRpb24iOyAgICAgICBicmVh
azsKICAgICBjYXNlIEV2cVBvaW50U2l6ZTogICAgICByZXR1cm4gIlBvaW50U2l6ZSI7ICAgICAg
YnJlYWs7CiAgICAgY2FzZSBFdnFGcmFnQ29vcmQ6ICAgICAgcmV0dXJuICJGcmFnQ29vcmQiOyAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6ICAgIHJldHVybiAiRnJvbnRGYWNp
bmciOyAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb2xvcjogICAgICByZXR1cm4gIkZyYWdD
b2xvciI7ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcmFnRGF0YTogICAgICAgcmV0dXJuICJG
cmFnRGF0YSI7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdnFGcmFnRGVwdGg6ICAgICAgcmV0dXJu
ICJGcmFnRGVwdGgiOyAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgcmV0
dXJuICJ1bmtub3duIHF1YWxpZmllciI7CiAgICAgfQogfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21tb24uaAkocmV2aXNpb24gMTUyNTk1KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNCwyNCArMTQsMTIgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL1Bvb2xBbGxvYy5o
IgogCi0vLyBXZSBuZWVkIHR3byBwaWVjZXMgb2YgaW5mb3JtYXRpb24gdG8gcmVwb3J0IGVycm9y
cy93YXJuaW5ncyAtIHN0cmluZyBhbmQKLS8vIGxpbmUgbnVtYmVyLiBXZSBlbmNvZGUgdGhlc2Ug
aW50byBhIHNpbmdsZSBpbnQgc28gdGhhdCBpdCBjYW4gYmUgZWFzaWx5Ci0vLyBpbmNyZW1lbnRl
ZC9kZWNyZW1lbnRlZCBieSBsZXhlci4gVGhlIHJpZ2h0IFNPVVJDRV9MT0NfTElORV9TSVpFIGJp
dHMgc3RvcmUKLS8vIGxpbmUgbnVtYmVyIHdoaWxlIHRoZSByZXN0IHN0b3JlIHRoZSBzdHJpbmcg
bnVtYmVyLiBTaW5jZSB0aGUgc2hhZGVycyBhcmUKLS8vIHVzdWFsbHkgc21hbGwsIHdlIHNob3Vs
ZCBub3QgcnVuIG91dCBvZiBtZW1vcnkuIFNPVVJDRV9MT0NfTElORV9TSVpFCi0vLyBjYW4gYmUg
aW5jcmVhc2VkIHRvIGFsbGV2aWF0ZSB0aGlzIGlzc3VlLgotdHlwZWRlZiBpbnQgVFNvdXJjZUxv
YzsKLWNvbnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfU0laRSA9IDE2OyAgLy8gaW4g
Yml0cy4KLWNvbnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfTUFTSyA9ICgxIDw8IFNP
VVJDRV9MT0NfTElORV9TSVpFKSAtIDE7Ci0KLWlubGluZSBUU291cmNlTG9jIEVuY29kZVNvdXJj
ZUxvYyhpbnQgc3RyaW5nLCBpbnQgbGluZSkgewotICAgIHJldHVybiAoc3RyaW5nIDw8IFNPVVJD
RV9MT0NfTElORV9TSVpFKSB8IChsaW5lICYgU09VUkNFX0xPQ19MSU5FX01BU0spOwotfQotCi1p
bmxpbmUgdm9pZCBEZWNvZGVTb3VyY2VMb2MoVFNvdXJjZUxvYyBsb2MsIGludCogc3RyaW5nLCBp
bnQqIGxpbmUpIHsKLSAgICBpZiAoc3RyaW5nKSAqc3RyaW5nID0gbG9jID4+IFNPVVJDRV9MT0Nf
TElORV9TSVpFOwotICAgIGlmIChsaW5lKSAqbGluZSA9IGxvYyAmIFNPVVJDRV9MT0NfTElORV9N
QVNLOwotfQorc3RydWN0IFRTb3VyY2VMb2MgeworICAgIGludCBmaXJzdF9maWxlOworICAgIGlu
dCBmaXJzdF9saW5lOworICAgIGludCBsYXN0X2ZpbGU7CisgICAgaW50IGxhc3RfbGluZTsKK307
CiAKIC8vCiAvLyBQdXQgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSBpbiBiYXNlIGNsYXNzZXMg
dG8gbWFrZSB0aGVtIHVzZSB0aGlzIHNjaGVtZS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9Db21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkocmV2aXNpb24gMTUyNTk1KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNCw4ICs0LDkgQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CiAvLwogCisjaW5jbHVkZSAiY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaCIKICNpbmNs
dWRlICJjb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIgotI2luY2x1ZGUgImNvbXBp
bGVyL0RldGVjdFJlY3Vyc2lvbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0RldGVjdENhbGxEZXB0
aC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0Zvckxvb3BVbnJvbGwuaCIKICNpbmNsdWRlICJjb21w
aWxlci9Jbml0aWFsaXplLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29u
dGV4dC5oIgpAQCAtNjIsMTEgKzYzLDI2IEBAIGJvb2wgSW5pdGlhbGl6ZVN5bWJvbFRhYmxlKAog
CiAgICAgICAgIGlmIChQYVBhcnNlU3RyaW5ncygxLCAmYnVpbHRJblNoYWRlcnMsICZidWlsdElu
TGVuZ3RocywgJnBhcnNlQ29udGV4dCkgIT0gMCkKICAgICAgICAgewotICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5hYmxlIHRvIHBhcnNl
IGJ1aWx0LWlucyIpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeElu
dGVybmFsRXJyb3IpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiVW5hYmxlIHRvIHBh
cnNlIGJ1aWx0LWlucyI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICB9CiAKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgU0hfRlJBR01FTlRfU0hBREVS
OgorICAgICAgICBJbnNlcnRCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNlcywgJnN5bWJv
bFRhYmxlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNIX1ZFUlRFWF9TSEFERVI6Cisg
ICAgICAgIEluc2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24ocmVzb3VyY2VzLCAmc3ltYm9sVGFi
bGUpOworICAgICAgICBJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KHJlc291cmNlcywgJnN5
bWJvbFRhYmxlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2Ug
JiYgIkxhbmd1YWdlIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICB9CisKICAgICBJZGVudGlmeUJ1aWx0
SW5zKHR5cGUsIHNwZWMsIHJlc291cmNlcywgc3ltYm9sVGFibGUpOwogCiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xMDMsNiArMTE5LDkgQEAgVFNoSGFuZGxlQmFzZTo6flRTaEhhbmRsZUJhc2UoKSB7
CiBUQ29tcGlsZXI6OlRDb21waWxlcihTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNw
ZWMpCiAgICAgOiBzaGFkZXJUeXBlKHR5cGUpLAogICAgICAgc2hhZGVyU3BlYyhzcGVjKSwKKyAg
ICAgIG1heFVuaWZvcm1WZWN0b3JzKDApLAorICAgICAgbWF4RXhwcmVzc2lvbkNvbXBsZXhpdHko
MCksCisgICAgICBtYXhDYWxsU3RhY2tEZXB0aCgwKSwKICAgICAgIGZyYWdtZW50UHJlY2lzaW9u
SGlnaChmYWxzZSksCiAgICAgICBjbGFtcGluZ1N0cmF0ZWd5KFNIX0NMQU1QX1dJVEhfQ0xBTVBf
SU5UUklOU0lDKSwKICAgICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKHR5cGUpCkBAIC0xMjEs
MTEgKzE0MCwxNCBAQCBib29sIFRDb21waWxlcjo6SW5pdChjb25zdCBTaEJ1aWx0SW5SZXNvCiAg
ICAgbWF4VW5pZm9ybVZlY3RvcnMgPSAoc2hhZGVyVHlwZSA9PSBTSF9WRVJURVhfU0hBREVSKSA/
CiAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA6CiAgICAgICAgIHJl
c291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzOworICAgIG1heEV4cHJlc3Npb25Db21w
bGV4aXR5ID0gcmVzb3VyY2VzLk1heEV4cHJlc3Npb25Db21wbGV4aXR5OworICAgIG1heENhbGxT
dGFja0RlcHRoID0gcmVzb3VyY2VzLk1heENhbGxTdGFja0RlcHRoOwogICAgIFRTY29wZWRQb29s
QWxsb2NhdG9yIHNjb3BlZEFsbG9jKCZhbGxvY2F0b3IsIGZhbHNlKTsKIAogICAgIC8vIEdlbmVy
YXRlIGJ1aWx0LWluIHN5bWJvbCB0YWJsZS4KICAgICBpZiAoIUluaXRCdWlsdEluU3ltYm9sVGFi
bGUocmVzb3VyY2VzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgSW5pdEV4dGVuc2lv
bkJlaGF2aW9yKHJlc291cmNlcywgZXh0ZW5zaW9uQmVoYXZpb3IpOwogICAgIGZyYWdtZW50UHJl
Y2lzaW9uSGlnaCA9IHJlc291cmNlcy5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPT0gMTsKIApAQCAt
MTcwLDggKzE5MiwxMCBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25z
CiAgICAgLy8gV2UgcHJlc2VydmUgc3ltYm9scyBhdCB0aGUgYnVpbHQtaW4gbGV2ZWwgZnJvbSBj
b21waWxlLXRvLWNvbXBpbGUuCiAgICAgLy8gU3RhcnQgcHVzaGluZyB0aGUgdXNlci1kZWZpbmVk
IHN5bWJvbHMgYXQgZ2xvYmFsIGxldmVsLgogICAgIHN5bWJvbFRhYmxlLnB1c2goKTsKLSAgICBp
ZiAoIXN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSkKLSAgICAgICAgaW5mb1NpbmsuaW5mby5t
ZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiV3Jvbmcgc3ltYm9sIHRhYmxlIGxldmVsIik7
CisgICAgaWYgKCFzeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkpIHsKKyAgICAgICAgaW5mb1Np
bmsuaW5mby5wcmVmaXgoRVByZWZpeEludGVybmFsRXJyb3IpOworICAgICAgICBpbmZvU2luay5p
bmZvIDw8ICJXcm9uZyBzeW1ib2wgdGFibGUgbGV2ZWwiOworICAgIH0KIAogICAgIC8vIFBhcnNl
IHNoYWRlci4KICAgICBib29sIHN1Y2Nlc3MgPQpAQCAtMTgyLDcgKzIwNiw3IEBAIGJvb2wgVENv
bXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAgICAgc3VjY2VzcyA9IGludGVy
bWVkaWF0ZS5wb3N0UHJvY2Vzcyhyb290KTsKIAogICAgICAgICBpZiAoc3VjY2VzcykKLSAgICAg
ICAgICAgIHN1Y2Nlc3MgPSBkZXRlY3RSZWN1cnNpb24ocm9vdCk7CisgICAgICAgICAgICBzdWNj
ZXNzID0gZGV0ZWN0Q2FsbERlcHRoKHJvb3QsIGluZm9TaW5rLCAoY29tcGlsZU9wdGlvbnMgJiBT
SF9MSU1JVF9DQUxMX1NUQUNLX0RFUFRIKSAhPSAwKTsKIAogICAgICAgICBpZiAoc3VjY2VzcyAm
JiAoY29tcGlsZU9wdGlvbnMgJiBTSF9WQUxJREFURV9MT09QX0lOREVYSU5HKSkKICAgICAgICAg
ICAgIHN1Y2Nlc3MgPSB2YWxpZGF0ZUxpbWl0YXRpb25zKHJvb3QpOwpAQCAtMjA1LDYgKzIyOSwx
MCBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgIGlm
IChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JP
VU5EUykpCiAgICAgICAgICAgICBhcnJheUJvdW5kc0NsYW1wZXIuTWFya0luZGlyZWN0QXJyYXlC
b3VuZHNGb3JDbGFtcGluZyhyb290KTsKIAorICAgICAgICAvLyBEaXNhbGxvdyBleHByZXNzaW9u
cyBkZWVtZWQgdG9vIGNvbXBsZXguCisgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0
aW9ucyAmIFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSkpCisgICAgICAgICAgICBzdWNj
ZXNzID0gbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShyb290KTsKKwogICAgICAgICAvLyBDYWxs
IG1hcExvbmdWYXJpYWJsZU5hbWVzKCkgYmVmb3JlIGNvbGxlY3RBdHRyaWJzVW5pZm9ybXMoKSBz
byBpbgogICAgICAgICAvLyBjb2xsZWN0QXR0cmlic1VuaWZvcm1zKCkgd2UgYWxyZWFkeSBoYXZl
IHRoZSBtYXBwZWQgc3ltYm9sIG5hbWVzIGFuZAogICAgICAgICAvLyB3ZSBjb3VsZCBjb21wb3Np
dGUgbWFwcGVkIGFuZCBvcmlnaW5hbCB2YXJpYWJsZSBuYW1lcy4KQEAgLTIxNyw3ICsyNDUsOCBA
QCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgICAgICBp
ZiAoY29tcGlsZU9wdGlvbnMgJiBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05TKSB7CiAg
ICAgICAgICAgICAgICAgc3VjY2VzcyA9IGVuZm9yY2VQYWNraW5nUmVzdHJpY3Rpb25zKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsICJ0b28gbWFueSB1bmlmb3JtcyIpOworICAg
ICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAg
ICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJ0b28gbWFueSB1bmlmb3JtcyI7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNjMsMTggKzI5
MiwyNCBAQCB2b2lkIFRDb21waWxlcjo6Y2xlYXJSZXN1bHRzKCkKICAgICBuYW1lTWFwLmNsZWFy
KCk7CiB9CiAKLWJvb2wgVENvbXBpbGVyOjpkZXRlY3RSZWN1cnNpb24oVEludGVybU5vZGUqIHJv
b3QpCitib29sIFRDb21waWxlcjo6ZGV0ZWN0Q2FsbERlcHRoKFRJbnRlcm1Ob2RlKiByb290LCBU
SW5mb1NpbmsmIGluZm9TaW5rLCBib29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgpCiB7Ci0gICAgRGV0
ZWN0UmVjdXJzaW9uIGRldGVjdDsKKyAgICBEZXRlY3RDYWxsRGVwdGggZGV0ZWN0KGluZm9TaW5r
LCBsaW1pdENhbGxTdGFja0RlcHRoLCBtYXhDYWxsU3RhY2tEZXB0aCk7CiAgICAgcm9vdC0+dHJh
dmVyc2UoJmRldGVjdCk7Ci0gICAgc3dpdGNoIChkZXRlY3QuZGV0ZWN0UmVjdXJzaW9uKCkpIHsK
LSAgICAgICAgY2FzZSBEZXRlY3RSZWN1cnNpb246OmtFcnJvck5vbmU6CisgICAgc3dpdGNoIChk
ZXRlY3QuZGV0ZWN0Q2FsbERlcHRoKCkpIHsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6
OmtFcnJvck5vbmU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBEZXRl
Y3RSZWN1cnNpb246OmtFcnJvck1pc3NpbmdNYWluOgotICAgICAgICAgICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhFcnJvciwgIk1pc3NpbmcgbWFpbigpIik7CisgICAgICAgIGNhc2Ug
RGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JNaXNzaW5nTWFpbjoKKyAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ucHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8
ICJNaXNzaW5nIG1haW4oKSI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNh
c2UgRGV0ZWN0UmVjdXJzaW9uOjprRXJyb3JSZWN1cnNpb246Ci0gICAgICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVk
Iik7CisgICAgICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JSZWN1cnNpb246CisgICAg
ICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAg
aW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVkIjsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvck1h
eERlcHRoRXhjZWVkZWQ6CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4
RXJyb3IpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24gY2FsbCBzdGFj
ayB0b28gZGVlcCI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwpAQCAtMzIwLDYgKzM1NSwyOCBAQCBib29sIFRD
b21waWxlcjo6ZW5mb3JjZVRpbWluZ1Jlc3RyaWN0aW9uCiAgICAgfQogfQogCitib29sIFRDb21w
aWxlcjo6bGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCkKK3sKKyAg
ICBUSW50ZXJtVHJhdmVyc2VyIHRyYXZlcnNlcjsKKyAgICByb290LT50cmF2ZXJzZSgmdHJhdmVy
c2VyKTsKKyAgICBURGVwZW5kZW5jeUdyYXBoIGdyYXBoKHJvb3QpOworCisgICAgZm9yIChURnVu
Y3Rpb25DYWxsVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZ3JhcGguYmVnaW5Vc2VyRGVm
aW5lZEZ1bmN0aW9uQ2FsbHMoKTsKKyAgICAgICAgIGl0ZXIgIT0gZ3JhcGguZW5kVXNlckRlZmlu
ZWRGdW5jdGlvbkNhbGxzKCk7CisgICAgICAgICArK2l0ZXIpCisgICAgeworICAgICAgICBUR3Jh
cGhGdW5jdGlvbkNhbGwqIHNhbXBsZXJTeW1ib2wgPSAqaXRlcjsKKyAgICAgICAgVERlcGVuZGVu
Y3lHcmFwaFRyYXZlcnNlciBncmFwaFRyYXZlcnNlcjsKKyAgICAgICAgc2FtcGxlclN5bWJvbC0+
dHJhdmVyc2UoJmdyYXBoVHJhdmVyc2VyKTsKKyAgICB9CisKKyAgICBpZiAodHJhdmVyc2VyLmdl
dE1heERlcHRoKCkgPiBtYXhFeHByZXNzaW9uQ29tcGxleGl0eSkgeworICAgICAgICBpbmZvU2lu
ay5pbmZvIDw8ICJFeHByZXNzaW9uIHRvbyBjb21wbGV4LiI7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgVENvbXBpbGVyOjplbmZvcmNl
RnJhZ21lbnRTaGFkZXJUaW1pbmdSZXN0cmljdGlvbnMoY29uc3QgVERlcGVuZGVuY3lHcmFwaCYg
Z3JhcGgpCiB7CiAgICAgUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZyByZXN0cmljdG9yKGlu
Zm9TaW5rLmluZm8pOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0NvbnN0YW50VW5pb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oCShyZXZpc2lvbiAxNTI1OTUpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQg
KGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8v
CkBAIC0xNCw2ICsxNCw3IEBAIHB1YmxpYzoKICAgICBDb25zdGFudFVuaW9uKCkKICAgICB7CiAg
ICAgICAgIGlDb25zdCA9IDA7CisgICAgICAgIHR5cGUgPSBFYnRWb2lkOwogICAgIH0KIAogICAg
IFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikgICAgICAgIApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0RldGVjdENhbGxEZXB0aC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE4NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL0Rl
dGVjdENhbGxEZXB0aC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCisKK0RldGVj
dENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5h
bWUpCisgICAgOiBuYW1lKGZuYW1lKSwKKyAgICAgIHZpc2l0KFByZVZpc2l0KQoreworfQorCitj
b25zdCBUU3RyaW5nJiBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK3ZvaWQgRGV0ZWN0Q2FsbERlcHRoOjpGdW5j
dGlvbk5vZGU6OmFkZENhbGxlZSgKKyAgICBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZSog
Y2FsbGVlKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsr
aSkgeworICAgICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCisgICAgICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Cit9CisKK2ludCBEZXRl
Y3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6ZGV0ZWN0Q2FsbERlcHRoKERldGVjdENhbGxEZXB0
aCogZGV0ZWN0Q2FsbERlcHRoLCBpbnQgZGVwdGgpCit7CisgICAgQVNTRVJUKHZpc2l0ID09IFBy
ZVZpc2l0KTsKKyAgICBBU1NFUlQoZGV0ZWN0Q2FsbERlcHRoKTsKKworICAgIGludCBtYXhEZXB0
aCA9IGRlcHRoOworICAgIHZpc2l0ID0gSW5WaXNpdDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNhbGxlZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgc3dpdGNoIChjYWxsZWVzW2ldLT52
aXNpdCkgeworICAgICAgICAgICAgY2FzZSBJblZpc2l0OgorICAgICAgICAgICAgICAgIC8vIGN5
Y2xlIGRldGVjdGVkLCBpLmUuLCByZWN1cnNpb24gZGV0ZWN0ZWQuCisgICAgICAgICAgICAgICAg
cmV0dXJuIGtJbmZpbml0ZUNhbGxEZXB0aDsKKyAgICAgICAgICAgIGNhc2UgUG9zdFZpc2l0Ogor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQcmVWaXNpdDogeworICAg
ICAgICAgICAgICAgIC8vIENoZWNrIGJlZm9yZSB3ZSByZWN1cnNlIHNvIHdlIGRvbid0IGdvIHRv
byBkZXB0aAorICAgICAgICAgICAgICAgIGlmIChkZXRlY3RDYWxsRGVwdGgtPmNoZWNrRXhjZWVk
c01heERlcHRoKGRlcHRoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlcHRoOworICAg
ICAgICAgICAgICAgIGludCBjYWxsRGVwdGggPSBjYWxsZWVzW2ldLT5kZXRlY3RDYWxsRGVwdGgo
ZGV0ZWN0Q2FsbERlcHRoLCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIGFm
dGVyIHdlIHJlY3Vyc2Ugc28gd2UgY2FuIGV4aXQgaW1tZWRpYXRlbHkgYW5kIHByb3ZpZGUgaW5m
by4KKyAgICAgICAgICAgICAgICBpZiAoZGV0ZWN0Q2FsbERlcHRoLT5jaGVja0V4Y2VlZHNNYXhE
ZXB0aChjYWxsRGVwdGgpKSB7CisgICAgICAgICAgICAgICAgICAgIGRldGVjdENhbGxEZXB0aC0+
Z2V0SW5mb1NpbmsoKS5pbmZvIDw8ICI8LSIgPDwgY2FsbGVlc1tpXS0+Z2V0TmFtZSgpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbERlcHRoOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBtYXhEZXB0aCA9IHN0ZDo6bWF4KGNhbGxEZXB0aCwgbWF4RGVwdGgpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIHZpc2l0ID0gUG9zdFZpc2l0OworICAgIHJldHVybiBt
YXhEZXB0aDsKK30KKwordm9pZCBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6cmVzZXQo
KQoreworICAgIHZpc2l0ID0gUHJlVmlzaXQ7Cit9CisKK0RldGVjdENhbGxEZXB0aDo6RGV0ZWN0
Q2FsbERlcHRoKFRJbmZvU2luayYgaW5mb1NpbmssIGJvb2wgbGltaXRDYWxsU3RhY2tEZXB0aCwg
aW50IG1heENhbGxTdGFja0RlcHRoKQorICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxz
ZSwgdHJ1ZSwgZmFsc2UpLAorICAgICAgY3VycmVudEZ1bmN0aW9uKE5VTEwpLAorICAgICAgaW5m
b1NpbmsoaW5mb1NpbmspLAorICAgICAgbWF4RGVwdGgobGltaXRDYWxsU3RhY2tEZXB0aCA/IG1h
eENhbGxTdGFja0RlcHRoIDogRnVuY3Rpb25Ob2RlOjprSW5maW5pdGVDYWxsRGVwdGgpCit7Cit9
CisKK0RldGVjdENhbGxEZXB0aDo6fkRldGVjdENhbGxEZXB0aCgpCit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRlbGV0ZSBmdW5j
dGlvbnNbaV07Cit9CisKK2Jvb2wgRGV0ZWN0Q2FsbERlcHRoOjp2aXNpdEFnZ3JlZ2F0ZShWaXNp
dCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSogbm9kZSkKK3sKKyAgICBzd2l0Y2ggKG5vZGUtPmdl
dE9wKCkpCisgICAgeworICAgICAgICBjYXNlIEVPcFByb3RvdHlwZToKKyAgICAgICAgICAgIC8v
IEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgorICAgICAgICAgICAgLy8gRG9uJ3QgYWRkIEZ1bmN0aW9u
Tm9kZSBoZXJlIGJlY2F1c2Ugbm9kZS0+Z2V0TmFtZSgpIGlzIHRoZQorICAgICAgICAgICAgLy8g
dW5tYW5nbGVkIGZ1bmN0aW9uIG5hbWUuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFT3BGdW5jdGlvbjogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KKyAg
ICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIGN1cnJl
bnRGdW5jdGlvbiA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAg
ICAgICAgICAgIGlmIChjdXJyZW50RnVuY3Rpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50RnVuY3Rpb24gPSBuZXcgRnVuY3Rpb25Ob2RlKG5vZGUtPmdldE5hbWUoKSk7
CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoX2JhY2soY3VycmVudEZ1bmN0aW9u
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKHZpc2l0ID09IFBv
c3RWaXNpdCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9IE5VTEw7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEVP
cEZ1bmN0aW9uQ2FsbDogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gY2FsbC4KKyAgICAgICAg
ICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIEZ1bmN0aW9uTm9k
ZSogZnVuYyA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAg
ICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG5l
dyBGdW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb25zLnB1c2hfYmFjayhmdW5jKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKGN1cnJlbnRGdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0
aW9uLT5hZGRDYWxsZWUoZnVuYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIERldGVjdENhbGxEZXB0aDo6Y2hlY2tFeGNlZWRz
TWF4RGVwdGgoaW50IGRlcHRoKQoreworICAgIHJldHVybiBkZXB0aCA+PSBtYXhEZXB0aDsKK30K
Kwordm9pZCBEZXRlY3RDYWxsRGVwdGg6OnJlc2V0RnVuY3Rpb25Ob2RlcygpCit7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZnVu
Y3Rpb25zW2ldLT5yZXNldCgpOworICAgIH0KK30KKworRGV0ZWN0Q2FsbERlcHRoOjpFcnJvckNv
ZGUgRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbihGdW5jdGlvbk5v
ZGUqIGZ1bmMpCit7CisgICAgY3VycmVudEZ1bmN0aW9uID0gTlVMTDsKKyAgICByZXNldEZ1bmN0
aW9uTm9kZXMoKTsKKworICAgIGludCBtYXhDYWxsRGVwdGggPSBmdW5jLT5kZXRlY3RDYWxsRGVw
dGgodGhpcywgMSk7CisKKyAgICBpZiAobWF4Q2FsbERlcHRoID09IEZ1bmN0aW9uTm9kZTo6a0lu
ZmluaXRlQ2FsbERlcHRoKQorICAgICAgICByZXR1cm4ga0Vycm9yUmVjdXJzaW9uOworCisgICAg
aWYgKG1heENhbGxEZXB0aCA+PSBtYXhEZXB0aCkKKyAgICAgICAgcmV0dXJuIGtFcnJvck1heERl
cHRoRXhjZWVkZWQ7CisKKyAgICByZXR1cm4ga0Vycm9yTm9uZTsKK30KKworRGV0ZWN0Q2FsbERl
cHRoOjpFcnJvckNvZGUgRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGgoKQoreworICAg
IGlmIChtYXhEZXB0aCAhPSBGdW5jdGlvbk5vZGU6OmtJbmZpbml0ZUNhbGxEZXB0aCkgeworICAg
ICAgICAvLyBDaGVjayBhbGwgZnVuY3Rpb25zIGJlY2F1c2UgdGhlIGRyaXZlciBtYXkgZmFpbCBv
biB0aGVtCisgICAgICAgIC8vIFRPRE86IEJlZm9yZSBkZXRlY3RpbmdSZWN1cnNpb24sIHN0cmlw
IHVudXNlZCBmdW5jdGlvbnMuCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rp
b25zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBFcnJvckNvZGUgZXJyb3IgPSBkZXRlY3RD
YWxsRGVwdGhGb3JGdW5jdGlvbihmdW5jdGlvbnNbaV0pOworICAgICAgICAgICAgaWYgKGVycm9y
ICE9IGtFcnJvck5vbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgRnVuY3Rpb25Ob2RlKiBtYWluID0gZmluZEZ1bmN0aW9u
QnlOYW1lKCJtYWluKCIpOworICAgICAgICBpZiAobWFpbiA9PSBOVUxMKQorICAgICAgICAgICAg
cmV0dXJuIGtFcnJvck1pc3NpbmdNYWluOworCisgICAgICAgIHJldHVybiBkZXRlY3RDYWxsRGVw
dGhGb3JGdW5jdGlvbihtYWluKTsKKyAgICB9CisKKyAgICByZXR1cm4ga0Vycm9yTm9uZTsKK30K
KworRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGUqIERldGVjdENhbGxEZXB0aDo6ZmluZEZ1
bmN0aW9uQnlOYW1lKAorICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUpCit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGZ1bmN0
aW9uc1tpXS0+Z2V0TmFtZSgpID09IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25z
W2ldOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIworKgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNp
Zm5kZWYgQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXworI2RlZmluZSBDT01QSUxFUl9ERVRF
Q1RfUkVDVVJTSU9OX0hfCisKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKworI2lu
Y2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5oIgorI2lu
Y2x1ZGUgImNvbXBpbGVyL1ZhcmlhYmxlSW5mby5oIgorCitjbGFzcyBUSW5mb1Npbms7CisKKy8v
IFRyYXZlcnNlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBkZXRlY3QgZnVuY3Rpb24gcmVjdXJzaW9u
LgorY2xhc3MgRGV0ZWN0Q2FsbERlcHRoIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIgeworcHVi
bGljOgorICAgIGVudW0gRXJyb3JDb2RlIHsKKyAgICAgICAga0Vycm9yTWlzc2luZ01haW4sCisg
ICAgICAgIGtFcnJvclJlY3Vyc2lvbiwKKyAgICAgICAga0Vycm9yTWF4RGVwdGhFeGNlZWRlZCwK
KyAgICAgICAga0Vycm9yTm9uZQorICAgIH07CisKKyAgICBEZXRlY3RDYWxsRGVwdGgoVEluZm9T
aW5rJiBpbmZvU3luYywgYm9vbCBsaW1pdENhbGxTdGFja0RlcHRoLCBpbnQgbWF4Q2FsbFN0YWNr
RGVwdGgpOworICAgIH5EZXRlY3RDYWxsRGVwdGgoKTsKKworICAgIHZpcnR1YWwgYm9vbCB2aXNp
dEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopOworCisgICAgYm9vbCBjaGVja0V4
Y2VlZHNNYXhEZXB0aChpbnQgZGVwdGgpOworCisgICAgRXJyb3JDb2RlIGRldGVjdENhbGxEZXB0
aCgpOworCitwcml2YXRlOgorICAgIGNsYXNzIEZ1bmN0aW9uTm9kZSB7CisgICAgcHVibGljOgor
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtJbmZpbml0ZUNhbGxEZXB0aCA9IElOVF9NQVg7CisK
KyAgICAgICAgRnVuY3Rpb25Ob2RlKGNvbnN0IFRTdHJpbmcmIGZuYW1lKTsKKworICAgICAgICBj
b25zdCBUU3RyaW5nJiBnZXROYW1lKCkgY29uc3Q7CisKKyAgICAgICAgLy8gSWYgYSBmdW5jdGlv
biBpcyBhbHJlYWR5IGluIHRoZSBjYWxsZWUgbGlzdCwgdGhpcyBiZWNvbWVzIGEgbm8tb3AuCisg
ICAgICAgIHZvaWQgYWRkQ2FsbGVlKEZ1bmN0aW9uTm9kZSogY2FsbGVlKTsKKworICAgICAgICAv
LyBSZXR1cm5zIGtJbmlmaW5pdHlDYWxsRGVwdGggaWYgcmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGxz
IGFyZSBkZXRlY3RlZC4KKyAgICAgICAgaW50IGRldGVjdENhbGxEZXB0aChEZXRlY3RDYWxsRGVw
dGgqIGRldGVjdENhbGxEZXB0aCwgaW50IGRlcHRoKTsKKworICAgICAgICAvLyBSZXNldCBzdGF0
ZS4KKyAgICAgICAgdm9pZCByZXNldCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgLy8gbWFu
Z2xlZCBmdW5jdGlvbiBuYW1lIGlzIHVuaXF1ZS4KKyAgICAgICAgVFN0cmluZyBuYW1lOworCisg
ICAgICAgIC8vIGZ1bmN0aW9ucyB0aGF0IGFyZSBkaXJlY3RseSBjYWxsZWQgYnkgdGhpcyBmdW5j
dGlvbi4KKyAgICAgICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBjYWxsZWVzOworCisgICAgICAg
IFZpc2l0IHZpc2l0OworICAgIH07CisKKyAgICBFcnJvckNvZGUgZGV0ZWN0Q2FsbERlcHRoRm9y
RnVuY3Rpb24oRnVuY3Rpb25Ob2RlKiBmdW5jKTsKKyAgICBGdW5jdGlvbk5vZGUqIGZpbmRGdW5j
dGlvbkJ5TmFtZShjb25zdCBUU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIHJlc2V0RnVuY3Rpb25O
b2RlcygpOworCisgICAgVEluZm9TaW5rJiBnZXRJbmZvU2luaygpIHsgcmV0dXJuIGluZm9TaW5r
OyB9CisKKyAgICBUVmVjdG9yPEZ1bmN0aW9uTm9kZSo+IGZ1bmN0aW9uczsKKyAgICBGdW5jdGlv
bk5vZGUqIGN1cnJlbnRGdW5jdGlvbjsKKyAgICBUSW5mb1NpbmsmIGluZm9TaW5rOworICAgIGlu
dCBtYXhEZXB0aDsKKworICAgIERldGVjdENhbGxEZXB0aChjb25zdCBEZXRlY3RDYWxsRGVwdGgm
KTsKKyAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBEZXRlY3RDYWxsRGVwdGgmKTsKK307CisKKyNl
bmRpZiAgLy8gQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5o
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAJKHJldmlzaW9u
IDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RS
ZWN1cnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyNSArMCwwIEBACi0vLwotLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotCi0jaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgiCi0KLURldGVj
dFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5h
bWUpCi0gICAgOiBuYW1lKGZuYW1lKSwKLSAgICAgIHZpc2l0KFByZVZpc2l0KQotewotfQotCi1j
b25zdCBUU3RyaW5nJiBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KLXZvaWQgRGV0ZWN0UmVjdXJzaW9uOjpGdW5j
dGlvbk5vZGU6OmFkZENhbGxlZSgKLSAgICBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZSog
Y2FsbGVlKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsr
aSkgewotICAgICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Ci19Ci0KLWJvb2wgRGV0
ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGU6OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgQVNT
RVJUKHZpc2l0ID09IFByZVZpc2l0KTsKLSAgICB2aXNpdCA9IEluVmlzaXQ7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN3aXRjaCAo
Y2FsbGVlc1tpXS0+dmlzaXQpIHsKLSAgICAgICAgICAgIGNhc2UgSW5WaXNpdDoKLSAgICAgICAg
ICAgICAgICAvLyBjeWNsZSBkZXRlY3RlZCwgaS5lLiwgcmVjdXJzaW9uIGRldGVjdGVkLgotICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgY2FzZSBQb3N0VmlzaXQ6Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFByZVZpc2l0OiB7Ci0gICAg
ICAgICAgICAgICAgYm9vbCByZWN1cnNpb24gPSBjYWxsZWVzW2ldLT5kZXRlY3RSZWN1cnNpb24o
KTsKLSAgICAgICAgICAgICAgICBpZiAocmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICB2aXNpdCA9IFBvc3RWaXNpdDsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RGV0ZWN0UmVjdXJzaW9u
KCkKLSAgICA6IGN1cnJlbnRGdW5jdGlvbihOVUxMKQotewotfQotCi1EZXRlY3RSZWN1cnNpb246
On5EZXRlY3RSZWN1cnNpb24oKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rp
b25zLnNpemUoKTsgKytpKQotICAgICAgICBkZWxldGUgZnVuY3Rpb25zW2ldOwotfQotCi1ib29s
IERldGVjdFJlY3Vyc2lvbjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dy
ZWdhdGUqIG5vZGUpCi17Ci0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQotICAgIHsKLSAgICAg
ICAgY2FzZSBFT3BQcm90b3R5cGU6Ci0gICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWNsYXJhdGlv
bi4KLSAgICAgICAgICAgIC8vIERvbid0IGFkZCBGdW5jdGlvbk5vZGUgaGVyZSBiZWNhdXNlIG5v
ZGUtPmdldE5hbWUoKSBpcyB0aGUKLSAgICAgICAgICAgIC8vIHVubWFuZ2xlZCBmdW5jdGlvbiBu
YW1lLgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wRnVuY3Rpb246IHsKLSAg
ICAgICAgICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCi0gICAgICAgICAgICBpZiAodmlzaXQg
PT0gUHJlVmlzaXQpIHsKLSAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24gPSBmaW5kRnVu
Y3Rpb25CeU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVu
dEZ1bmN0aW9uID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9u
ID0gbmV3IEZ1bmN0aW9uTm9kZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbnMucHVzaF9iYWNrKGN1cnJlbnRGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBFT3BGdW5jdGlvbkNhbGw6IHsKLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGNhbGwuCi0g
ICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpIHsKLSAgICAgICAgICAgICAgICBBU1NF
UlQoY3VycmVudEZ1bmN0aW9uICE9IE5VTEwpOwotICAgICAgICAgICAgICAgIEZ1bmN0aW9uTm9k
ZSogZnVuYyA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAg
ICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG5l
dyBGdW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb25zLnB1c2hfYmFjayhmdW5jKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgY3VycmVudEZ1bmN0aW9uLT5hZGRDYWxsZWUoZnVuYyk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1EZXRlY3RSZWN1cnNpb246OkVy
cm9yQ29kZSBEZXRlY3RSZWN1cnNpb246OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgRnVuY3Rp
b25Ob2RlKiBtYWluID0gZmluZEZ1bmN0aW9uQnlOYW1lKCJtYWluKCIpOwotICAgIGlmIChtYWlu
ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBrRXJyb3JNaXNzaW5nTWFpbjsKLSAgICBpZiAobWFp
bi0+ZGV0ZWN0UmVjdXJzaW9uKCkpCi0gICAgICAgIHJldHVybiBrRXJyb3JSZWN1cnNpb247Ci0g
ICAgcmV0dXJuIGtFcnJvck5vbmU7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2Rl
KiBEZXRlY3RSZWN1cnNpb246OmZpbmRGdW5jdGlvbkJ5TmFtZSgKLSAgICBjb25zdCBUU3RyaW5n
JiBuYW1lKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbnNbaV0tPmdldE5hbWUoKSA9PSBuYW1lKQotICAg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uc1tpXTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19
Ci0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1
cnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvRGV0ZWN0UmVjdXJzaW9uLmgJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2MCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIENPTVBJTEVSX0RF
VEVDVF9SRUNVUlNJT05fSF8KLSNkZWZpbmUgQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwot
Ci0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLSNpbmNsdWRlICJjb21waWxlci9p
bnRlcm1lZGlhdGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9WYXJpYWJsZUluZm8uaCIKLQotLy8g
VHJhdmVyc2VzIGludGVybWVkaWF0ZSB0cmVlIHRvIGRldGVjdCBmdW5jdGlvbiByZWN1cnNpb24u
Ci1jbGFzcyBEZXRlY3RSZWN1cnNpb24gOiBwdWJsaWMgVEludGVybVRyYXZlcnNlciB7Ci1wdWJs
aWM6Ci0gICAgZW51bSBFcnJvckNvZGUgewotICAgICAgICBrRXJyb3JNaXNzaW5nTWFpbiwKLSAg
ICAgICAga0Vycm9yUmVjdXJzaW9uLAotICAgICAgICBrRXJyb3JOb25lCi0gICAgfTsKLQotICAg
IERldGVjdFJlY3Vyc2lvbigpOwotICAgIH5EZXRlY3RSZWN1cnNpb24oKTsKLQotICAgIHZpcnR1
YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopOwotCi0gICAg
RXJyb3JDb2RlIGRldGVjdFJlY3Vyc2lvbigpOwotCi1wcml2YXRlOgotICAgIGNsYXNzIEZ1bmN0
aW9uTm9kZSB7Ci0gICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmlu
ZyYgZm5hbWUpOwotCi0gICAgICAgIGNvbnN0IFRTdHJpbmcmIGdldE5hbWUoKSBjb25zdDsKLQot
ICAgICAgICAvLyBJZiBhIGZ1bmN0aW9uIGlzIGFscmVhZHkgaW4gdGhlIGNhbGxlZSBsaXN0LCB0
aGlzIGJlY29tZXMgYSBuby1vcC4KLSAgICAgICAgdm9pZCBhZGRDYWxsZWUoRnVuY3Rpb25Ob2Rl
KiBjYWxsZWUpOwotCi0gICAgICAgIC8vIFJldHVybiB0cnVlIGlmIHJlY3Vyc2l2ZSBmdW5jdGlv
biBjYWxscyBhcmUgZGV0ZWN0ZWQuCi0gICAgICAgIGJvb2wgZGV0ZWN0UmVjdXJzaW9uKCk7Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICAvLyBtYW5nbGVkIGZ1bmN0aW9uIG5hbWUgaXMgdW5pcXVl
LgotICAgICAgICBUU3RyaW5nIG5hbWU7Ci0KLSAgICAgICAgLy8gZnVuY3Rpb25zIHRoYXQgYXJl
IGRpcmVjdGx5IGNhbGxlZCBieSB0aGlzIGZ1bmN0aW9uLgotICAgICAgICBUVmVjdG9yPEZ1bmN0
aW9uTm9kZSo+IGNhbGxlZXM7Ci0KLSAgICAgICAgVmlzaXQgdmlzaXQ7Ci0gICAgfTsKLQotICAg
IEZ1bmN0aW9uTm9kZSogZmluZEZ1bmN0aW9uQnlOYW1lKGNvbnN0IFRTdHJpbmcmIG5hbWUpOwot
Ci0gICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBmdW5jdGlvbnM7Ci0gICAgRnVuY3Rpb25Ob2Rl
KiBjdXJyZW50RnVuY3Rpb247Ci19OwotCi0jZW5kaWYgIC8vIENPTVBJTEVSX0RFVEVDVF9SRUNV
UlNJT05fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFn
bm9zdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0RpYWdub3N0aWNzLmNwcAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNyArNDYsNyBAQCB2b2lkIFREaWFnbm9zdGljczo6d3JpdGVJbmZvKFNldmVyaXR5IHNl
CiAgICAgVEluZm9TaW5rQmFzZSYgc2luayA9IG1JbmZvU2luay5pbmZvOwogICAgIC8qIFZDKysg
Zm9ybWF0OiBmaWxlKGxpbmVudW0pIDogZXJyb3IgIzogJ3Rva2VuJyA6IGV4dHJhaW5mbyAqLwog
ICAgIHNpbmsucHJlZml4KHByZWZpeCk7Ci0gICAgc2luay5sb2NhdGlvbihFbmNvZGVTb3VyY2VM
b2MobG9jLmZpbGUsIGxvYy5saW5lKSk7CisgICAgc2luay5sb2NhdGlvbihsb2MuZmlsZSwgbG9j
LmxpbmUpOwogICAgIHNpbmsgPDwgIiciIDw8IHRva2VuIDw8ICAiJyA6ICIgPDwgcmVhc29uIDw8
ICIgIiA8PCBleHRyYSA8PCAiXG4iOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCShyZXZpc2lvbiAx
NTI1OTUpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRm9yTG9vcFVu
cm9sbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTIxMCw2ICsyMTAsNiBAQCBpbnQgRm9yTG9vcFVucm9s
bDo6Z2V0TG9vcEluY3JlbWVudChUSW50CiBpbnQgRm9yTG9vcFVucm9sbDo6ZXZhbHVhdGVJbnRD
b25zdGFudChUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsKICAgICBBU1NFUlQoKG5vZGUg
IT0gTlVMTCkgJiYgKG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCkgIT0gTlVMTCkpOwotICAg
IHJldHVybiBub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAgICBy
ZXR1cm4gbm9kZS0+Z2V0SUNvbnN0KDApOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHJldmlzaW9uIDE1MjU5NSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBACiAKICNpbmNsdWRlICJjb21waWxlci9JbmZvU2lu
ay5oIgogCi12b2lkIFRJbmZvU2lua0Jhc2U6OnByZWZpeChUUHJlZml4VHlwZSBtZXNzYWdlKSB7
Ci0gICAgc3dpdGNoKG1lc3NhZ2UpIHsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6cHJlZml4KFRQcmVm
aXhUeXBlIHApIHsKKyAgICBzd2l0Y2gocCkgewogICAgICAgICBjYXNlIEVQcmVmaXhOb25lOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRVByZWZpeFdhcm5pbmc6CkBAIC0zMSwy
OSArMzEsMjQgQEAgdm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoVFByZWZpeFR5cGUgbQogICAg
IH0KIH0KIAotdm9pZCBUSW5mb1NpbmtCYXNlOjpsb2NhdGlvbihUU291cmNlTG9jIGxvYykgewot
ICAgIGludCBzdHJpbmcgPSAwLCBsaW5lID0gMDsKLSAgICBEZWNvZGVTb3VyY2VMb2MobG9jLCAm
c3RyaW5nLCAmbGluZSk7Ci0KK3ZvaWQgVEluZm9TaW5rQmFzZTo6bG9jYXRpb24oaW50IGZpbGUs
IGludCBsaW5lKSB7CiAgICAgVFBlcnNpc3RTdHJpbmdTdHJlYW0gc3RyZWFtOwogICAgIGlmIChs
aW5lKQotICAgICAgICBzdHJlYW0gPDwgc3RyaW5nIDw8ICI6IiA8PCBsaW5lOworICAgICAgICBz
dHJlYW0gPDwgZmlsZSA8PCAiOiIgPDwgbGluZTsKICAgICBlbHNlCi0gICAgICAgIHN0cmVhbSA8
PCBzdHJpbmcgPDwgIjo/ICI7CisgICAgICAgIHN0cmVhbSA8PCBmaWxlIDw8ICI6PyAiOwogICAg
IHN0cmVhbSA8PCAiOiAiOwogCiAgICAgc2luay5hcHBlbmQoc3RyZWFtLnN0cigpKTsKIH0KIAot
dm9pZCBUSW5mb1NpbmtCYXNlOjptZXNzYWdlKFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNo
YXIqIHMpIHsKLSAgICBwcmVmaXgobWVzc2FnZSk7Ci0gICAgc2luay5hcHBlbmQocyk7Ci0gICAg
c2luay5hcHBlbmQoIlxuIik7Cit2b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9uKGNvbnN0IFRT
b3VyY2VMb2MmIGxvYykgeworICAgIGxvY2F0aW9uKGxvYy5maXJzdF9maWxlLCBsb2MuZmlyc3Rf
bGluZSk7CiB9CiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBtZXNz
YWdlLCBjb25zdCBjaGFyKiBzLCBUU291cmNlTG9jIGxvYykgewotICAgIHByZWZpeChtZXNzYWdl
KTsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291
cmNlTG9jJiBsb2MsIGNvbnN0IGNoYXIqIG0pIHsKKyAgICBwcmVmaXgocCk7CiAgICAgbG9jYXRp
b24obG9jKTsKLSAgICBzaW5rLmFwcGVuZChzKTsKKyAgICBzaW5rLmFwcGVuZChtKTsKICAgICBz
aW5rLmFwcGVuZCgiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9JbmZvU2luay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9JbmZvU2luay5oCShyZXZpc2lvbiAxNTI1OTUpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuaAkod29ya2luZyBjb3B5KQpAQCAt
OTYsMTAgKzk2LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBUUGVyc2lzdFN0cmluZyYgc3RyKCkg
Y29uc3QgeyByZXR1cm4gc2luazsgfQogICAgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29uc3QgeyBy
ZXR1cm4gc2luay5jX3N0cigpOyB9CiAKLSAgICB2b2lkIHByZWZpeChUUHJlZml4VHlwZSBtZXNz
YWdlKTsKLSAgICB2b2lkIGxvY2F0aW9uKFRTb3VyY2VMb2MgbG9jKTsKLSAgICB2b2lkIG1lc3Nh
Z2UoVFByZWZpeFR5cGUgbWVzc2FnZSwgY29uc3QgY2hhciogcyk7Ci0gICAgdm9pZCBtZXNzYWdl
KFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMsIFRTb3VyY2VMb2MgbG9jKTsKKyAg
ICB2b2lkIHByZWZpeChUUHJlZml4VHlwZSBwKTsKKyAgICB2b2lkIGxvY2F0aW9uKGludCBmaWxl
LCBpbnQgbGluZSk7CisgICAgdm9pZCBsb2NhdGlvbihjb25zdCBUU291cmNlTG9jJiBsb2MpOwor
ICAgIHZvaWQgbWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291cmNlTG9jJiBsb2MsIGNv
bnN0IGNoYXIqIG0pOwogCiBwcml2YXRlOgogICAgIFRQZXJzaXN0U3RyaW5nIHNpbms7CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxp
emUuY3BwCShyZXZpc2lvbiAxNTI1OTUpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2LDM3MyArMTYsNiBA
QAogCiAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC8vCi0vLyBQcm90b3R5cGVzIGZvciBidWlsdC1p
biBmdW5jdGlvbnMgc2VlbiBieSBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycy4KLS8v
Ci0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLXN0YXRpYyBUU3RyaW5nIEJ1aWx0SW5GdW5jdGlvbnND
b21tb24oY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCi17Ci0gICAgVFN0cmlu
ZyBzOwotCi0gICAgLy8KLSAgICAvLyBBbmdsZSBhbmQgVHJpZ29ub21ldHJpYyBGdW5jdGlvbnMu
Ci0gICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCByYWRpYW5zKGZsb2F0IGRlZ3Jl
ZXMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICByYWRpYW5zKHZlYzIgIGRlZ3Jl
ZXMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICByYWRpYW5zKHZlYzMgIGRlZ3Jl
ZXMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByYWRpYW5zKHZlYzQgIGRlZ3Jl
ZXMpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRlZ3JlZXMoZmxvYXQgcmFk
aWFucyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGRlZ3JlZXModmVjMiAgcmFk
aWFucyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGRlZ3JlZXModmVjMyAgcmFk
aWFucyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGRlZ3JlZXModmVjNCAgcmFk
aWFucyk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc2luKGZsb2F0IGFuZ2xl
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2luKHZlYzIgIGFuZ2xlKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc2luKHZlYzMgIGFuZ2xlKTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCAgc2luKHZlYzQgIGFuZ2xlKTsiKSk7Ci0KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJmbG9hdCBjb3MoZmxvYXQgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMyICBjb3ModmVjMiAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMzICBjb3ModmVjMyAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0
ICBjb3ModmVjNCAgYW5nbGUpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHRh
bihmbG9hdCBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHRhbih2ZWMy
ICBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHRhbih2ZWMzICBhbmds
ZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHRhbih2ZWM0ICBhbmdsZSk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYXNpbihmbG9hdCB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMiAgYXNpbih2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMyAgYXNpbih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgYXNpbih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBh
Y29zKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhY29zKHZlYzIg
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhY29zKHZlYzMgIHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhY29zKHZlYzQgIHgpOyIpKTsKLQotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImZsb2F0IGF0YW4oZmxvYXQgeSwgZmxvYXQgeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeSwgdmVjMiAgeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzMgIGF0YW4odmVjMyAgeSwgdmVjMyAgeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgIGF0YW4odmVjNCAgeSwgdmVjNCAgeCk7IikpOwotCi0gICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYXRhbihmbG9hdCB5X292ZXJfeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeV9vdmVyX3gpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMzICBhdGFuKHZlYzMgIHlfb3Zlcl94KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgYXRhbih2ZWM0ICB5X292ZXJfeCk7IikpOwotCi0gICAgLy8KLSAg
ICAvLyBFeHBvbmVudGlhbCBGdW5jdGlvbnMuCi0gICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJmbG9hdCBwb3coZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzIgIHBvdyh2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgcG93KHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0ICBwb3codmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygi
ZmxvYXQgZXhwKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAo
dmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGV4cCh2ZWMzICB4KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZXhwKHZlYzQgIHgpOyIpKTsKLQotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxvZyhmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMiAgbG9nKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMzICBsb2codmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZyh2
ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBleHAyKGZsb2F0IHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAyKHZlYzIgIHgpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBleHAyKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWM0ICBleHAyKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImZsb2F0IGxvZzIoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IGxvZzIodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGxvZzIodmVj
MyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZzIodmVjNCAgeCk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc3FydChmbG9hdCB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMiAgc3FydCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMyAgc3FydCh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgc3FydCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBp
bnZlcnNlc3FydChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgaW52
ZXJzZXNxcnQodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGludmVy
c2VzcXJ0KHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBpbnZlcnNl
c3FydCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICAvLwotICAgIC8vIENvbW1vbiBGdW5jdGlvbnMuCi0g
ICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhYnMoZmxvYXQgeCk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGFicyh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMyAgYWJzKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0ICBhYnModmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc2ln
bihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2lnbih2ZWMyICB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc2lnbih2ZWMzICB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc2lnbih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJmbG9hdCBmbG9vcihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMiAgZmxvb3IodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzMgIGZsb29yKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBmbG9v
cih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBjZWlsKGZsb2F0
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBjZWlsKHZlYzIgIHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBjZWlsKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0ICBjZWlsKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImZsb2F0IGZyYWN0KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMyICBmcmFjdCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZnJh
Y3QodmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGZyYWN0KHZlYzQg
IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG1vZChmbG9hdCB4LCBmbG9h
dCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbW9kKHZlYzIgIHgsIGZsb2F0
IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtb2QodmVjMyAgeCwgZmxvYXQg
eSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2ZWM0ICB4LCBmbG9hdCB5
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbW9kKHZlYzIgIHgsIHZlYzIgIHkp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtb2QodmVjMyAgeCwgdmVjMyAgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2ZWM0ICB4LCB2ZWM0ICB5KTsi
KSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtaW4oZmxvYXQgeCwgZmxvYXQgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1pbih2ZWMyICB4LCBmbG9hdCB5KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIGZsb2F0IHkpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4odmVjNCAgeCwgZmxvYXQgeSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1pbih2ZWMyICB4LCB2ZWMyICB5KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4odmVjNCAgeCwgdmVjNCAgeSk7IikpOwot
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbWF4KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgZmxvYXQgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1heCh2ZWMzICB4LCBmbG9hdCB5KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWF4KHZlYzQgIHgsIGZsb2F0IHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1heCh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWF4KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGNsYW1wKGZsb2F0IHgsIGZsb2F0IG1pblZhbCwgZmxv
YXQgbWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2xhbXAodmVjMiAg
eCwgZmxvYXQgbWluVmFsLCBmbG9hdCBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMzICBjbGFtcCh2ZWMzICB4LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIGZsb2F0IG1pblZhbCwg
ZmxvYXQgbWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2xhbXAodmVj
MiAgeCwgdmVjMiAgbWluVmFsLCB2ZWMyICBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMzICBjbGFtcCh2ZWMzICB4LCB2ZWMzICBtaW5WYWwsIHZlYzMgIG1heFZhbCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIHZlYzQgIG1pblZh
bCwgdmVjNCAgbWF4VmFsKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtaXgo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgYSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzIgIG1peCh2ZWMyICB4LCB2ZWMyICB5LCBmbG9hdCBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMyAgbWl4KHZlYzMgIHgsIHZlYzMgIHksIGZsb2F0IGEpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwgdmVjNCAgeSwgZmxvYXQgYSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1peCh2ZWMyICB4LCB2ZWMyICB5LCB2ZWMyICBh
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWl4KHZlYzMgIHgsIHZlYzMgIHks
IHZlYzMgIGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwg
dmVjNCAgeSwgdmVjNCAgYSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc3Rl
cChmbG9hdCBlZGdlLCBmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAg
c3RlcCh2ZWMyICBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgc3RlcCh2ZWMzICBlZGdlLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgc3RlcCh2ZWM0ICBlZGdlLCB2ZWM0ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiAgc3RlcChmbG9hdCBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMyAgc3RlcChmbG9hdCBlZGdlLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgc3RlcChmbG9hdCBlZGdlLCB2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJmbG9hdCBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwg
ZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNtb290aHN0ZXAodmVj
MiAgZWRnZTAsIHZlYzIgIGVkZ2UxLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgc21vb3Roc3RlcCh2ZWMzICBlZGdlMCwgdmVjMyAgZWRnZTEsIHZlYzMgIHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKHZlYzQgIGVkZ2UwLCB2
ZWM0ICBlZGdlMSwgdmVjNCAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNt
b290aHN0ZXAoZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMyAgc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEs
IHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKGZs
b2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgdmVjNCAgeCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBH
ZW9tZXRyaWMgRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQg
bGVuZ3RoKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsZW5ndGgo
dmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2ZWMzICB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKHZlYzQgIHgpOyIpKTsK
LQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKGZsb2F0IHAwLCBmbG9hdCBw
MSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzIgIHAwLCB2
ZWMyICBwMSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzMg
IHAwLCB2ZWMzICBwMSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNl
KHZlYzQgIHAwLCB2ZWM0ICBwMSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQg
ZG90KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBk
b3QodmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRv
dCh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90
KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgY3Jv
c3ModmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub3Jt
YWxpemUoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG5vcm1hbGl6
ZSh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbm9ybWFsaXplKHZl
YzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBub3JtYWxpemUodmVjNCAg
eCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZmFjZWZvcndhcmQoZmxvYXQg
TiwgZmxvYXQgSSwgZmxvYXQgTnJlZik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IGZhY2Vmb3J3YXJkKHZlYzIgIE4sIHZlYzIgIEksIHZlYzIgIE5yZWYpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMzICBmYWNlZm9yd2FyZCh2ZWMzICBOLCB2ZWMzICBJLCB2ZWMzICBO
cmVmKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZmFjZWZvcndhcmQodmVjNCAg
TiwgdmVjNCAgSSwgdmVjNCAgTnJlZik7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxv
YXQgcmVmbGVjdChmbG9hdCBJLCBmbG9hdCBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMiAgcmVmbGVjdCh2ZWMyICBJLCB2ZWMyICBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgcmVmbGVjdCh2ZWMzICBJLCB2ZWMzICBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjNCAgcmVmbGVjdCh2ZWM0ICBJLCB2ZWM0ICBOKTsiKSk7Ci0KLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJmbG9hdCByZWZyYWN0KGZsb2F0IEksIGZsb2F0IE4sIGZsb2F0IGV0YSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHJlZnJhY3QodmVjMiAgSSwgdmVjMiAgTiwg
ZmxvYXQgZXRhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcmVmcmFjdCh2ZWMz
ICBJLCB2ZWMzICBOLCBmbG9hdCBldGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0
ICByZWZyYWN0KHZlYzQgIEksIHZlYzQgIE4sIGZsb2F0IGV0YSk7IikpOwotCi0gICAgLy8KLSAg
ICAvLyBNYXRyaXggRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygibWF0
MiBtYXRyaXhDb21wTXVsdChtYXQyIHgsIG1hdDIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoIm1hdDMgbWF0cml4Q29tcE11bHQobWF0MyB4LCBtYXQzIHkpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJtYXQ0IG1hdHJpeENvbXBNdWx0KG1hdDQgeCwgbWF0NCB5KTsiKSk7Ci0KLSAg
ICAvLwotICAgIC8vIFZlY3RvciByZWxhdGlvbmFsIGZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGxlc3NUaGFuKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbGVzc1RoYW4odmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbih2ZWM0IHgsIHZlYzQgeSk7IikpOwot
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbGVzc1RoYW4oaXZlYzIgeCwgaXZlYzIgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuKGl2ZWMzIHgsIGl2ZWMz
IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbihpdmVjNCB4LCBp
dmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbkVxdWFs
KHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbGVzc1Ro
YW5FcXVhbCh2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0
IGxlc3NUaGFuRXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJ2ZWMyIGxlc3NUaGFuRXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuRXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NUaGFuRXF1YWwoaXZlYzQgeCwgaXZlYzQg
eSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW4odmVjMiB4
LCB2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbih2
ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJU
aGFuKHZlYzQgeCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBn
cmVhdGVyVGhhbihpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
YnZlYzMgZ3JlYXRlclRoYW4oaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFuKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGdyZWF0ZXJUaGFuRXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbkVxdWFsKHZlYzMgeCwg
dmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVh
bCh2ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3Jl
YXRlclRoYW5FcXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiYnZlYzMgZ3JlYXRlclRoYW5FcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVhbChpdmVjNCB4LCBpdmVjNCB5KTsi
KSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBlcXVhbCh2ZWMyIHgsIHZlYzIgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKHZlYzMgeCwgdmVjMyB5KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIp
KTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGVxdWFsKGl2ZWMyIHgsIGl2ZWMyIHkp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBlcXVhbChpdmVjMyB4LCBpdmVjMyB5
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwoaXZlYzQgeCwgaXZlYzQg
eSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZXF1YWwoYnZlYzIgeCwgYnZl
YzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKGJ2ZWMzIHgsIGJ2
ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBlcXVhbChidmVjNCB4LCBi
dmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBub3RFcXVhbCh2ZWMy
IHgsIHZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5vdEVxdWFsKHZl
YzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1YWwo
dmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdEVx
dWFsKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBu
b3RFcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZl
YzQgbm90RXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiYnZlYzIgbm90RXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImJ2ZWMzIG5vdEVxdWFsKGJ2ZWMzIHgsIGJ2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJidmVjNCBub3RFcXVhbChidmVjNCB4LCBidmVjNCB5KTsiKSk7Ci0KLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJib29sIGFueShidmVjMiB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygiYm9vbCBhbnkoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wg
YW55KGJ2ZWM0IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYWxsKGJ2ZWMy
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFsbChidmVjMyB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygiYm9vbCBhbGwoYnZlYzQgeCk7IikpOwotCi0gICAgcy5hcHBl
bmQoVFN0cmluZygiYnZlYzIgbm90KGJ2ZWMyIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJidmVjMyBub3QoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IG5v
dChidmVjNCB4KTsiKSk7Ci0KLSAgICAvLwotICAgIC8vIFRleHR1cmUgRnVuY3Rpb25zLgotICAg
IC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkQoc2FtcGxlcjJEIHNhbXBs
ZXIsIHZlYzIgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUy
RFByb2ooc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzQgY29vcmQp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmVDdWJlKHNhbXBsZXJDdWJl
IHNhbXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLQotICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9p
bWFnZV9leHRlcm5hbCkgewotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUy
RChzYW1wbGVyRXh0ZXJuYWxPRVMgc2FtcGxlciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlckV4dGVybmFsT0VTIHNh
bXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0
ZXh0dXJlMkRQcm9qKHNhbXBsZXJFeHRlcm5hbE9FUyBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7
Ci0gICAgfQotCi0gICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKLSAg
ICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRSZWN0KHNhbXBsZXIyRFJlY3Qg
c2FtcGxlciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0
IHRleHR1cmUyRFJlY3RQcm9qKHNhbXBsZXIyRFJlY3Qgc2FtcGxlciwgdmVjMyBjb29yZCk7Iikp
OwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFJlY3RQcm9qKHNhbXBs
ZXIyRFJlY3Qgc2FtcGxlciwgdmVjNCBjb29yZCk7IikpOwotICAgIH0KLQotICAgIC8vCi0gICAg
Ly8gTm9pc2UgZnVuY3Rpb25zLgotICAgIC8vCi0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCBub2lzZTEoZmxvYXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbm9p
c2UxKHZlYzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG5vaXNlMSh2
ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lzZTEodmVjNCAg
eCk7IikpOwotCi0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMihmbG9hdCB4KTsi
KSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWMyICB4KTsiKSk7Ci0g
ICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWMzICB4KTsiKSk7Ci0gICAgLy9z
LmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWM0ICB4KTsiKSk7Ci0KLSAgICAvL3MuYXBw
ZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKGZsb2F0IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRT
dHJpbmcoInZlYzMgbm9pc2UzKHZlYzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmco
InZlYzMgbm9pc2UzKHZlYzMgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMg
bm9pc2UzKHZlYzQgIHgpOyIpKTsKLQotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lz
ZTQoZmxvYXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVj
MiAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjMyAgeCk7
IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjNCAgeCk7IikpOwot
Ci0gICAgcmV0dXJuIHM7Ci19Ci0KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFByb3Rv
dHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9ucyBzZWVuIGJ5IHZlcnRleCBzaGFkZXJzIG9ubHku
Ci0vLwotLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBCdWlsdEluRnVuY3Rp
b25zVmVydGV4KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQotewotICAgIFRT
dHJpbmcgczsKLQotICAgIC8vCi0gICAgLy8gR2VvbWV0cmljIEZ1bmN0aW9ucy4KLSAgICAvLwot
ICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBmdHJhbnNmb3JtKCk7IikpOwotCi0gICAgLy8K
LSAgICAvLyBUZXh0dXJlIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzQgdGV4dHVyZTJETG9kKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMyIGNvb3JkLCBmbG9hdCBs
b2QpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2pMb2Qoc2Ft
cGxlcjJEIHNhbXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0IGxvZCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVjNCBj
b29yZCwgZmxvYXQgbG9kKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJl
Q3ViZUxvZChzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBsb2QpOyIpKTsK
LQotICAgIHJldHVybiBzOwotfQotCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCiAvLyBQcm90
b3R5cGVzIGZvciBidWlsdC1pbiBmdW5jdGlvbnMgc2VlbiBieSBmcmFnbWVudCBzaGFkZXJzIG9u
bHkuCiAvLwogLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC01MDAsMTUgKzEzMywxMiBAQCB2b2lk
IFRCdWlsdEluczo6aW5pdGlhbGl6ZShTaFNoYWRlclR5cGUgCiAgICAgc3dpdGNoICh0eXBlKSB7
CiAgICAgY2FzZSBTSF9GUkFHTUVOVF9TSEFERVI6CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1
c2hfYmFjayhEZWZhdWx0UHJlY2lzaW9uRnJhZ21lbnQoKSk7Ci0gICAgICAgIGJ1aWx0SW5TdHJp
bmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNlcykpOwogICAgICAg
ICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc0ZyYWdtZW50KHJlc291
cmNlcykpOwogICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soU3RhbmRhcmRVbmlmb3Jt
cygpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNIX1ZFUlRFWF9TSEFERVI6CiAgICAg
ICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhEZWZhdWx0UHJlY2lzaW9uVmVydGV4KCkpOwot
ICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc0NvbW1vbihy
ZXNvdXJjZXMpKTsKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1aWx0SW5GdW5j
dGlvbnNWZXJ0ZXgocmVzb3VyY2VzKSk7CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFj
ayhTdGFuZGFyZFVuaWZvcm1zKCkpOwogICAgICAgICBicmVhazsKIApAQCAtNTM5LDYgKzE2OSwx
MCBAQCB2b2lkIElkZW50aWZ5QnVpbHRJbnMoU2hTaGFkZXJUeXBlIHR5cGUsCiAgICAgICAgIGlm
IChzcGVjICE9IFNIX0NTU19TSEFERVJTX1NQRUMpIHsKICAgICAgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJhZ0NvbG9yIiksICAg
ICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUZyYWdDb2xvciwg
ICA0KSkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5l
d1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGF0YVtnbF9NYXhEcmF3QnVmZmVyc10iKSwgVFR5cGUoRWJ0
RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0RhdGEsICAgIDQpKSk7CisgICAgICAgICAgICBpZiAo
cmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoKSB7CisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGVwdGhFWFQiKSwg
ICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgcmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGln
aCA/IEVicEhpZ2ggOiBFYnBNZWRpdW0sIEV2cUZyYWdEZXB0aCwgMSkpKTsKKyAgICAgICAgICAg
ICAgICBzeW1ib2xUYWJsZS5yZWxhdGVUb0V4dGVuc2lvbigiZ2xfRnJhZ0RlcHRoRVhUIiwgIkdM
X0VYVF9mcmFnX2RlcHRoIik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmco
ImNzc19NaXhDb2xvciIpLCAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVk
aXVtLCBFdnFHbG9iYWwsICAgICAgNCkpKTsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiY3NzX0NvbG9yTWF0cml4IiksICAgICAg
ICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUdsb2JhbCwgICAgICA0LCB0
cnVlKSkpOwpAQCAtNjU2LDQgKzI5MCw2IEBAIHZvaWQgSW5pdEV4dGVuc2lvbkJlaGF2aW9yKGNv
bnN0IFNoQnVpbHQKICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX0FSQl90ZXh0dXJlX3JlY3Rhbmds
ZSJdID0gRUJoVW5kZWZpbmVkOwogICAgIGlmIChyZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycykK
ICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX0VYVF9kcmF3X2J1ZmZlcnMiXSA9IEVCaFVuZGVmaW5l
ZDsKKyAgICBpZiAocmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoKQorICAgICAgICBleHRCZWhhdmlv
clsiR0xfRVhUX2ZyYWdfZGVwdGgiXSA9IEVCaFVuZGVmaW5lZDsKIH0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3Bw
CShyZXZpc2lvbiAxNTI1OTUpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvSW50ZXJtZWRpYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTMxLDcgKzEzMSw3IEBAIGNvbnN0
IGNoYXIqIGdldE9wZXJhdG9yU3RyaW5nKFRPcGVyYXRvciAKIC8vCiAvLyBSZXR1cm5zIHRoZSBh
ZGRlZCBub2RlLgogLy8KLVRJbnRlcm1TeW1ib2wqIFRJbnRlcm1lZGlhdGU6OmFkZFN5bWJvbChp
bnQgaWQsIGNvbnN0IFRTdHJpbmcmIG5hbWUsIGNvbnN0IFRUeXBlJiB0eXBlLCBUU291cmNlTG9j
IGxpbmUpCitUSW50ZXJtU3ltYm9sKiBUSW50ZXJtZWRpYXRlOjphZGRTeW1ib2woaW50IGlkLCBj
b25zdCBUU3RyaW5nJiBuYW1lLCBjb25zdCBUVHlwZSYgdHlwZSwgY29uc3QgVFNvdXJjZUxvYyYg
bGluZSkKIHsKICAgICBUSW50ZXJtU3ltYm9sKiBub2RlID0gbmV3IFRJbnRlcm1TeW1ib2woaWQs
IG5hbWUsIHR5cGUpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CkBAIC0xNDQsNyArMTQ0LDcg
QEAgVEludGVybVN5bWJvbCogVEludGVybWVkaWF0ZTo6YWRkU3ltYm9sKAogLy8KIC8vIFJldHVy
bnMgdGhlIGFkZGVkIG5vZGUuCiAvLwotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRC
aW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQq
IHJpZ2h0LCBUU291cmNlTG9jIGxpbmUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCitUSW50
ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50
ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCiB7CiAgICAgc3dpdGNoIChvcCkgewogICAg
ICAgICBjYXNlIEVPcEVxdWFsOgpAQCAtMjAwLDggKzIwMCw2IEBAIFRJbnRlcm1UeXBlZCogVElu
dGVybWVkaWF0ZTo6YWRkQmluYXJ5TWEKICAgICAvLyBvbmUgYW5kIHByb21vdGUgaXQgdG8gdGhl
IHJpZ2h0IHR5cGUuCiAgICAgLy8KICAgICBUSW50ZXJtQmluYXJ5KiBub2RlID0gbmV3IFRJbnRl
cm1CaW5hcnkob3ApOwotICAgIGlmIChsaW5lID09IDApCi0gICAgICAgIGxpbmUgPSByaWdodC0+
Z2V0TGluZSgpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CiAKICAgICBub2RlLT5zZXRMZWZ0
KGxlZnQpOwpAQCAtMjMwLDE1ICsyMjgsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRl
OjphZGRCaW5hcnlNYQogLy8KIC8vIFJldHVybnMgdGhlIGFkZGVkIG5vZGUuCiAvLwotVEludGVy
bVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRBc3NpZ24oVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlw
ZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1U
eXBlZCogVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVk
KiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewog
ICAgIC8vCiAgICAgLy8gTGlrZSBhZGRpbmcgYmluYXJ5IG1hdGgsIGV4Y2VwdCB0aGUgY29udmVy
c2lvbiBjYW4gb25seSBnbwogICAgIC8vIGZyb20gcmlnaHQgdG8gbGVmdC4KICAgICAvLwogICAg
IFRJbnRlcm1CaW5hcnkqIG5vZGUgPSBuZXcgVEludGVybUJpbmFyeShvcCk7Ci0gICAgaWYgKGxp
bmUgPT0gMCkKLSAgICAgICAgbGluZSA9IGxlZnQtPmdldExpbmUoKTsKICAgICBub2RlLT5zZXRM
aW5lKGxpbmUpOwogCiAgICAgVEludGVybVR5cGVkKiBjaGlsZCA9IGFkZENvbnZlcnNpb24ob3As
IGxlZnQtPmdldFR5cGUoKSwgcmlnaHQpOwpAQCAtMjYwLDExICsyNTYsOSBAQCBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEFzc2lnbihUCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2Rl
LgogLy8gVGhlIGNhbGxlciBzaG91bGQgc2V0IHRoZSB0eXBlIG9mIHRoZSByZXR1cm5lZCBub2Rl
LgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkSW5kZXgoVE9wZXJhdG9yIG9w
LCBUSW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIFRTb3VyY2VMb2MgbGlu
ZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkSW5kZXgoVE9wZXJhdG9yIG9wLCBU
SW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUpCiB7CiAgICAgVEludGVybUJpbmFyeSogbm9kZSA9IG5ldyBUSW50ZXJtQmluYXJ5KG9w
KTsKLSAgICBpZiAobGluZSA9PSAwKQotICAgICAgICBsaW5lID0gaW5kZXgtPmdldExpbmUoKTsK
ICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwogICAgIG5vZGUtPnNldExlZnQoYmFzZSk7CiAgICAg
bm9kZS0+c2V0UmlnaHQoaW5kZXgpOwpAQCAtMjc5LDEzICsyNzMsMTMgQEAgVEludGVybVR5cGVk
KiBUSW50ZXJtZWRpYXRlOjphZGRJbmRleChUTwogLy8KIC8vIFJldHVybnMgdGhlIGFkZGVkIG5v
ZGUuCiAvLwotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdGgoVE9wZXJh
dG9yIG9wLCBUSW50ZXJtTm9kZSogY2hpbGROb2RlLCBUU291cmNlTG9jIGxpbmUsIFRTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5
TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBjaGlsZE5vZGUsIGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCiB7CiAgICAgVEludGVybVVuYXJ5
KiBub2RlOwogICAgIFRJbnRlcm1UeXBlZCogY2hpbGQgPSBjaGlsZE5vZGUtPmdldEFzVHlwZWQo
KTsKIAogICAgIGlmIChjaGlsZCA9PSAwKSB7Ci0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJhZCB0eXBlIGluIEFkZFVuYXJ5TWF0aCIsIGxpbmUp
OworICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGxp
bmUsICJCYWQgdHlwZSBpbiBBZGRVbmFyeU1hdGgiKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCkBAIC0zNDgsOCArMzQyLDYgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRV
bmFyeU1hdAogICAgIC8vIE1ha2UgYSBuZXcgbm9kZSBmb3IgdGhlIG9wZXJhdG9yLgogICAgIC8v
CiAgICAgbm9kZSA9IG5ldyBUSW50ZXJtVW5hcnkob3ApOwotICAgIGlmIChsaW5lID09IDApCi0g
ICAgICAgIGxpbmUgPSBjaGlsZC0+Z2V0TGluZSgpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7
CiAgICAgbm9kZS0+c2V0T3BlcmFuZChjaGlsZCk7CiAKQEAgLTM3Niw3ICszNjgsNyBAQCBUSW50
ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0CiAvLyBSZXR1cm5zIGFuIGFnZ3Jl
Z2F0ZSBub2RlLCB3aGljaCBjb3VsZCBiZSB0aGUgb25lIHBhc3NlZCBpbiBpZgogLy8gaXQgd2Fz
IGFscmVhZHkgYW4gYWdncmVnYXRlIGJ1dCBubyBvcGVyYXRvciB3YXMgc2V0LgogLy8KLVRJbnRl
cm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKFRJbnRlcm1O
b2RlKiBub2RlLCBUT3BlcmF0b3Igb3AsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1BZ2dyZWdh
dGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKFRJbnRlcm1Ob2RlKiBub2Rl
LCBUT3BlcmF0b3Igb3AsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybUFn
Z3JlZ2F0ZSogYWdnTm9kZTsKIApAQCAtMzkxLDggKzM4Myw2IEBAIFRJbnRlcm1BZ2dyZWdhdGUq
IFRJbnRlcm1lZGlhdGU6OnNldEFnZ3IKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBhZ2dO
b2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoKTsKICAgICAgICAgICAgIGFnZ05vZGUtPmdldFNl
cXVlbmNlKCkucHVzaF9iYWNrKG5vZGUpOwotICAgICAgICAgICAgaWYgKGxpbmUgPT0gMCkKLSAg
ICAgICAgICAgICAgICBsaW5lID0gbm9kZS0+Z2V0TGluZSgpOwogICAgICAgICB9CiAgICAgfSBl
bHNlCiAgICAgICAgIGFnZ05vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZSgpOwpAQCAtNDAxLDgg
KzM5MSw3IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3IKICAgICAv
LyBTZXQgdGhlIG9wZXJhdG9yLgogICAgIC8vCiAgICAgYWdnTm9kZS0+c2V0T3Aob3ApOwotICAg
IGlmIChsaW5lICE9IDApCi0gICAgICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CisgICAgYWdn
Tm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAgIHJldHVybiBhZ2dOb2RlOwogfQpAQCAtNDkxLDcg
KzQ4MCw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQ29udmVyc2kKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6ICAgbmV3T3AgPSBFT3BDb252SW50VG9GbG9hdDsg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6ICBuZXdPcCA9IEVPcENv
bnZCb29sVG9GbG9hdDsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFs
RXJyb3IsICJCYWQgcHJvbW90aW9uIG5vZGUiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCBub2RlLT5nZXRMaW5lKCksICJCYWQgcHJvbW90aW9uIG5vZGUiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTUwMCw3ICs0ODksNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFk
ZENvbnZlcnNpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OiAgIG5ld09wID0gRU9w
Q29udkludFRvQm9vbDsgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9h
dDogbmV3T3AgPSBFT3BDb252RmxvYXRUb0Jvb2w7IGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlvbiBub2RlIiwgbm9kZS0+Z2V0TGlu
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFkIHByb21vdGlvbiBub2RlIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01MDksMTIgKzQ5OCwxMiBAQCBUSW50ZXJtVHlwZWQq
IFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0
Qm9vbDogICBuZXdPcCA9IEVPcENvbnZCb29sVG9JbnQ7ICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRGbG9hdDogIG5ld09wID0gRU9wQ29udkZsb2F0VG9JbnQ7IGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlvbiBu
b2RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFk
IHByb21vdGlvbiBub2RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gdHlwZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2Rl
LT5nZXRMaW5lKCksICJCYWQgcHJvbW90aW9uIHR5cGUiKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgfQogCkBAIC01MzQsNyArNTIzLDcgQEAgVEludGVybVR5cGVkKiBUSW50
ZXJtZWRpYXRlOjphZGRDb252ZXJzaQogLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIGFnZ3JlZ2F0
ZSwgdW5sZXNzIDAgd2FzIHBhc3NlZCBpbiBmb3IKIC8vIGJvdGggZXhpc3Rpbmcgbm9kZXMuCiAv
LwotVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jvd0FnZ3JlZ2F0ZShUSW50ZXJt
Tm9kZSogbGVmdCwgVEludGVybU5vZGUqIHJpZ2h0LCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJt
QWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpncm93QWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBsZWZ0
LCBUSW50ZXJtTm9kZSogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgaWYg
KGxlZnQgPT0gMCAmJiByaWdodCA9PSAwKQogICAgICAgICByZXR1cm4gMDsKQEAgLTU1MSw4ICs1
NDAsNyBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpncm93QWdnCiAgICAgaWYg
KHJpZ2h0KQogICAgICAgICBhZ2dOb2RlLT5nZXRTZXF1ZW5jZSgpLnB1c2hfYmFjayhyaWdodCk7
CiAKLSAgICBpZiAobGluZSAhPSAwKQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOwor
ICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1cm4gYWdnTm9kZTsKIH0KQEAg
LTU2MiwxOCArNTUwLDE0IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Omdyb3dB
Z2cKIC8vCiAvLyBSZXR1cm5zIGFuIGFnZ3JlZ2F0ZSwgdW5sZXNzIDAgd2FzIHBhc3NlZCBpbiBm
b3IgdGhlIGV4aXN0aW5nIG5vZGUuCiAvLwotVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0
ZTo6bWFrZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVElu
dGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6bWFrZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSog
bm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBpZiAobm9kZSA9PSAwKQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ05vZGUgPSBuZXcgVElu
dGVybUFnZ3JlZ2F0ZTsKICAgICBhZ2dOb2RlLT5nZXRTZXF1ZW5jZSgpLnB1c2hfYmFjayhub2Rl
KTsKLQotICAgIGlmIChsaW5lICE9IDApCi0gICAgICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7
Ci0gICAgZWxzZQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7Cisg
ICAgYWdnTm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAgIHJldHVybiBhZ2dOb2RlOwogfQpAQCAt
NTg1LDcgKzU2OSw3IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2cK
IC8vCiAvLyBSZXR1cm5zIHRoZSBzZWxlY3Rpb24gbm9kZSBjcmVhdGVkLgogLy8KLVRJbnRlcm1O
b2RlKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50
ZXJtTm9kZVBhaXIgbm9kZVBhaXIsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1Ob2RlKiBUSW50
ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBh
aXIgbm9kZVBhaXIsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgLy8KICAgICAvLyBG
b3IgY29tcGlsZSB0aW1lIGNvbnN0YW50IHNlbGVjdGlvbnMsIHBydW5lIHRoZSBjb2RlIGFuZApA
QCAtNTkzLDcgKzU3Nyw3IEBAIFRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rp
b24KICAgICAvLwogCiAgICAgaWYgKGNvbmQtPmdldEFzVHlwZWQoKSAmJiBjb25kLT5nZXRBc1R5
cGVkKCktPmdldEFzQ29uc3RhbnRVbmlvbigpKSB7Ci0gICAgICAgIGlmIChjb25kLT5nZXRBc1R5
cGVkKCktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRC
Q29uc3QoKSA9PSB0cnVlKQorICAgICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCkt
PmdldEJDb25zdCgwKSA9PSB0cnVlKQogICAgICAgICAgICAgcmV0dXJuIG5vZGVQYWlyLm5vZGUx
ID8gc2V0QWdncmVnYXRlT3BlcmF0b3Iobm9kZVBhaXIubm9kZTEsIEVPcFNlcXVlbmNlLCBub2Rl
UGFpci5ub2RlMS0+Z2V0TGluZSgpKSA6IE5VTEw7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHJldHVybiBub2RlUGFpci5ub2RlMiA/IHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKG5vZGVQYWlyLm5v
ZGUyLCBFT3BTZXF1ZW5jZSwgbm9kZVBhaXIubm9kZTItPmdldExpbmUoKSkgOiBOVUxMOwpAQCAt
NjA2LDcgKzU5MCw3IEBAIFRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24K
IH0KIAogCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbW1hKFRJbnRlcm1UeXBl
ZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5
cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb21tYShUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1U
eXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgaWYgKGxlZnQtPmdl
dFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCAmJiByaWdodC0+Z2V0VHlwZSgpLmdl
dFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CiAgICAgICAgIHJldHVybiByaWdodDsKQEAgLTYy
Niw3ICs2MTAsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbW1hKFRJCiAv
LwogLy8gUmV0dXJucyB0aGUgc2VsZWN0aW9uIG5vZGUgY3JlYXRlZCwgb3IgMCBpZiBvbmUgY291
bGQgbm90IGJlLgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9u
KFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBl
ZCogZmFsc2VCbG9jaywgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRp
YXRlOjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIHRydWVC
bG9jaywgVEludGVybVR5cGVkKiBmYWxzZUJsb2NrLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQog
ewogICAgIC8vCiAgICAgLy8gR2V0IGNvbXBhdGlibGUgdHlwZXMuCkBAIC02NDcsNyArNjMxLDcg
QEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3RpbwogICAgIC8vCiAKICAg
ICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCkgJiYgdHJ1ZUJsb2NrLT5nZXRBc0NvbnN0
YW50VW5pb24oKSAmJiBmYWxzZUJsb2NrLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgewotICAgICAg
ICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCkt
PmdldEJDb25zdCgpKQorICAgICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdl
dEJDb25zdCgwKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlQmxvY2s7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZUJsb2NrOwpAQCAtNjY5LDcgKzY1Myw3IEBAIFRJbnRl
cm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW8KIC8vIFJldHVybnMgdGhlIGNvbnN0
YW50IHVuaW9uIG5vZGUgY3JlYXRlZC4KIC8vCiAKLVRJbnRlcm1Db25zdGFudFVuaW9uKiBUSW50
ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXlQb2lu
dGVyLCBjb25zdCBUVHlwZSYgdCwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybUNvbnN0YW50VW5p
b24qIFRJbnRlcm1lZGlhdGU6OmFkZENvbnN0YW50VW5pb24oQ29uc3RhbnRVbmlvbiogdW5pb25B
cnJheVBvaW50ZXIsIGNvbnN0IFRUeXBlJiB0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewog
ICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9u
KHVuaW9uQXJyYXlQb2ludGVyLCB0KTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtNjc3
LDcgKzY2MSw3IEBAIFRJbnRlcm1Db25zdGFudFVuaW9uKiBUSW50ZXJtZWRpYXRlOjphZGQKICAg
ICByZXR1cm4gbm9kZTsKIH0KIAotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTd2l6
emxlKFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVk
KiBUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSkKIHsKIAogICAgIFRJbnRlcm1BZ2dyZWdhdGUqIG5vZGUgPSBuZXcg
VEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CkBAIC03MDAsNyArNjg0LDcgQEAgVEludGVy
bVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKAogLy8KIC8vIENyZWF0ZSBsb29wIG5v
ZGVzLgogLy8KLVRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRMb29wKFRMb29wVHlwZSB0
eXBlLCBUSW50ZXJtTm9kZSogaW5pdCwgVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQq
IGV4cHIsIFRJbnRlcm1Ob2RlKiBib2R5LCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtTm9kZSog
VEludGVybWVkaWF0ZTo6YWRkTG9vcChUTG9vcFR5cGUgdHlwZSwgVEludGVybU5vZGUqIGluaXQs
IFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiBleHByLCBUSW50ZXJtTm9kZSogYm9k
eSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJtTm9kZSogbm9kZSA9IG5l
dyBUSW50ZXJtTG9vcCh0eXBlLCBpbml0LCBjb25kLCBleHByLCBib2R5KTsKICAgICBub2RlLT5z
ZXRMaW5lKGxpbmUpOwpAQCAtNzExLDEyICs2OTUsMTIgQEAgVEludGVybU5vZGUqIFRJbnRlcm1l
ZGlhdGU6OmFkZExvb3AoVExvbwogLy8KIC8vIEFkZCBicmFuY2hlcy4KIC8vCi1USW50ZXJtQnJh
bmNoKiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBUU291cmNl
TG9jIGxpbmUpCitUSW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9wZXJh
dG9yIGJyYW5jaE9wLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIHJldHVybiBhZGRC
cmFuY2goYnJhbmNoT3AsIDAsIGxpbmUpOwogfQogCi1USW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRp
YXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBUSW50ZXJtVHlwZWQqIGV4cHJlc3Np
b24sIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1CcmFuY2gqIFRJbnRlcm1lZGlhdGU6OmFkZEJy
YW5jaChUT3BlcmF0b3IgYnJhbmNoT3AsIFRJbnRlcm1UeXBlZCogZXhwcmVzc2lvbiwgY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJtQnJhbmNoKiBub2RlID0gbmV3IFRJbnRl
cm1CcmFuY2goYnJhbmNoT3AsIGV4cHJlc3Npb24pOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7
CkBAIC04NDYsNiArODMwLDcgQEAgYm9vbCBUSW50ZXJtVW5hcnk6OnByb21vdGUoVEluZm9TaW5r
JikKICAgICB9CiAKICAgICBzZXRUeXBlKG9wZXJhbmQtPmdldFR5cGUoKSk7CisgICAgdHlwZS5z
ZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODYw
LDcgKzg0NSw3IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKIHsK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIG9ubHkgaGFuZGxlcyBzY2FsYXJzLCB2ZWN0b3JzLCBhbmQg
bWF0cmljZXMuCiAgICAgaWYgKGxlZnQtPmlzQXJyYXkoKSB8fCByaWdodC0+aXNBcnJheSgpKSB7
Ci0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIklu
dmFsaWQgb3BlcmF0aW9uIGZvciBhcnJheXMiLCBnZXRMaW5lKCkpOworICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkludmFsaWQg
b3BlcmF0aW9uIGZvciBhcnJheXMiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtOTY1LDcgKzk1MCw3IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1Npbmsm
IGkKICAgICAgICAgICAgICAgICAgICAgc2V0VHlwZShUVHlwZShiYXNpY1R5cGUsIGhpZ2hlclBy
ZWNpc2lvbiwgRXZxVGVtcG9yYXJ5LCBzaXplLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiTWlzc2luZyBlbHNlcyIsIGdldExpbmUoKSk7Cisg
ICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCBnZXRMaW5lKCksICJNaXNzaW5nIGVsc2VzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC05OTQsNyArOTc5LDcg
QEAgYm9vbCBUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKFRJbmZvU2luayYgaQogICAgICAgICAgICAg
ICAgICAgICBzZXRUeXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVyUHJlY2lzaW9uLCBFdnFUZW1w
b3JhcnksIHNpemUsIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsICJNaXNzaW5nIGVsc2VzIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIk1p
c3NpbmcgZWxzZXMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwMzQsMjMgKzEwMTksMjIgQEAgYm9vbCBUSW50
ZXJtQmluYXJ5Ojpwcm9tb3RlKFRJbmZvU2luayYgaQogCiBib29sIENvbXBhcmVTdHJ1Y3QoY29u
c3QgVFR5cGUmIGxlZnROb2RlVHlwZSwgQ29uc3RhbnRVbmlvbiogcmlnaHRVbmlvbkFycmF5LCBD
b25zdGFudFVuaW9uKiBsZWZ0VW5pb25BcnJheSkKIHsKLSAgICBjb25zdCBUVHlwZUxpc3QqIGZp
ZWxkcyA9IGxlZnROb2RlVHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICBjb25zdCBURmllbGRMaXN0JiBm
aWVsZHMgPSBsZWZ0Tm9kZVR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCi0gICAgc2l6ZV90
IHN0cnVjdFNpemUgPSBmaWVsZHMtPnNpemUoKTsKLSAgICBpbnQgaW5kZXggPSAwOworICAgIHNp
emVfdCBzdHJ1Y3RTaXplID0gZmllbGRzLnNpemUoKTsKKyAgICBzaXplX3QgaW5kZXggPSAwOwog
CiAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBzdHJ1Y3RTaXplOyBqKyspIHsKLSAgICAgICAg
aW50IHNpemUgPSAoKmZpZWxkcylbal0udHlwZS0+Z2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgaWYgKCgqZmllbGRz
KVtqXS50eXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIUNvbXBhcmVTdHJ1Y3R1cmUoKigqZmllbGRzKVtqXS50eXBlLCAmcmlnaHRVbmlvbkFy
cmF5W2luZGV4XSwgJmxlZnRVbmlvbkFycmF5W2luZGV4XSkpCisgICAgICAgIHNpemVfdCBzaXpl
ID0gZmllbGRzW2pdLT50eXBlKCktPmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChmaWVsZHNbal0tPnR5
cGUoKS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7CisgICAgICAgICAgICAgICAgaWYg
KCFDb21wYXJlU3RydWN0dXJlKCooZmllbGRzW2pdLT50eXBlKCkpLCAmcmlnaHRVbmlvbkFycmF5
W2luZGV4XSwgJmxlZnRVbmlvbkFycmF5W2luZGV4XSkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGxl
ZnRVbmlvbkFycmF5W2luZGV4XSAhPSByaWdodFVuaW9uQXJyYXlbaW5kZXhdKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgaW5kZXgrKzsKICAgICAg
ICAgICAgIH0KLQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMTA2Miwx
MCArMTA0NiwxMCBAQCBib29sIENvbXBhcmVTdHJ1Y3R1cmUoY29uc3QgVFR5cGUmIGxlZnROCiAg
ICAgICAgIFRUeXBlIHR5cGVXaXRob3V0QXJyYXluZXNzID0gbGVmdE5vZGVUeXBlOwogICAgICAg
ICB0eXBlV2l0aG91dEFycmF5bmVzcy5jbGVhckFycmF5bmVzcygpOwogCi0gICAgICAgIGludCBh
cnJheVNpemUgPSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlTaXplKCk7CisgICAgICAgIHNpemVfdCBh
cnJheVNpemUgPSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlTaXplKCk7CiAKLSAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkgewotICAgICAgICAgICAgaW50IG9mZnNldCA9
IHR5cGVXaXRob3V0QXJyYXluZXNzLmdldE9iamVjdFNpemUoKSAqIGk7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpIHsKKyAgICAgICAgICAgIHNpemVfdCBv
ZmZzZXQgPSB0eXBlV2l0aG91dEFycmF5bmVzcy5nZXRPYmplY3RTaXplKCkgKiBpOwogICAgICAg
ICAgICAgaWYgKCFDb21wYXJlU3RydWN0KHR5cGVXaXRob3V0QXJyYXluZXNzLCAmcmlnaHRVbmlv
bkFycmF5W29mZnNldF0sICZsZWZ0VW5pb25BcnJheVtvZmZzZXRdKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEwODUsNyArMTA2OSw3IEBAIGJvb2wgQ29t
cGFyZVN0cnVjdHVyZShjb25zdCBUVHlwZSYgbGVmdE4KIFRJbnRlcm1UeXBlZCogVEludGVybUNv
bnN0YW50VW5pb246OmZvbGQoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGNvbnN0YW50Tm9k
ZSwgVEluZm9TaW5rJiBpbmZvU2luaykKIHsKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
ID0gZ2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICBpbnQgb2JqZWN0U2l6ZSA9IGdldFR5cGUo
KS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90IG9iamVjdFNpemUgPSBnZXRUeXBlKCkuZ2V0
T2JqZWN0U2l6ZSgpOwogCiAgICAgaWYgKGNvbnN0YW50Tm9kZSkgeyAgLy8gYmluYXJ5IG9wZXJh
dGlvbnMKICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUgPSBjb25zdGFudE5vZGUt
PmdldEFzQ29uc3RhbnRVbmlvbigpOwpAQCAtMTA5NSwxMyArMTA3OSwxMyBAQCBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgIC8vIGZvciBhIGNhc2UgbGlr
ZSBmbG9hdCBmID0gMS4yICsgdmVjNCgyLDMsNCw1KTsKICAgICAgICAgaWYgKGNvbnN0YW50Tm9k
ZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSA9PSAxICYmIG9iamVjdFNpemUgPiAxKSB7CiAg
ICAgICAgICAgICByaWdodFVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXpl
XTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgKytpKQorICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyArK2kpCiAgICAgICAg
ICAgICAgICAgcmlnaHRVbmlvbkFycmF5W2ldID0gKm5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVy
KCk7CiAgICAgICAgICAgICByZXR1cm5UeXBlID0gZ2V0VHlwZSgpOwogICAgICAgICB9IGVsc2Ug
aWYgKGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSA+IDEgJiYgb2JqZWN0
U2l6ZSA9PSAxKSB7CiAgICAgICAgICAgICAvLyBmb3IgYSBjYXNlIGxpa2UgZmxvYXQgZiA9IHZl
YzQoMiwzLDQsNSkgKyAxLjI7CiAgICAgICAgICAgICB1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpXTsKLSAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0
U2l6ZSgpOyArK2kpCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnN0YW50
Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgIHVu
aW9uQXJyYXlbaV0gPSAqZ2V0VW5pb25BcnJheVBvaW50ZXIoKTsKICAgICAgICAgICAgIHJldHVy
blR5cGUgPSBub2RlLT5nZXRUeXBlKCk7CiAgICAgICAgICAgICBvYmplY3RTaXplID0gY29uc3Rh
bnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwpAQCAtMTExNSwxNCArMTA5OSwxNCBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBj
YXNlIEVPcEFkZDoKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFu
dFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYu
MAotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkr
KykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXpl
OyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9u
QXJyYXlbaV0gKyByaWdodFVuaW9uQXJyYXlbaV07CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFT3BTdWI6CiAgICAgICAgICAgICAg
ICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAg
ICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAg
ICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldIC0gcmlnaHRVbmlvbkFycmF5
W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMzIs
MTMgKzExMTYsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAog
ICAgICAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKICAgICAgICAgICAgICAgICB0
ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAg
ICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gKiByaWdodFVuaW9uQXJyYXlbaV07
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeDoKICAgICAgICAgICAgICAgICBpZiAoZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0IHx8IG5vZGUtPmdldEJhc2ljVHlwZSgpICE9IEVi
dEZsb2F0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1h
dHJpeCBtdWx0aXBseSIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiQ29uc3RhbnQg
Rm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgbWF0cml4IG11bHRpcGx5Iik7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB7
Ly8gc3VwcG9ydCBNU1ZDKys2LjAKQEAgLTExNTcsMTEgKzExNDEsMTEgQEAgVEludGVybVR5cGVk
KiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BEaXY6CiAg
ICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RT
aXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspIHsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7
CiAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgogICAgICAgICAgICAgICAgIGlmIChyaWdodFVu
aW9uQXJyYXlbaV0gPT0gMC4wZikgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcgY29u
c3RhbnQgZm9sZGluZyIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ubWVzc2FnZShFUHJlZml4V2FybmluZywgZ2V0TGluZSgpLCAiRGl2aWRlIGJ5IHplcm8g
ZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciKTsKICAgICAgICAgICAgICAgICAgICAgdGVt
cENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KHVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgPCAwID8g
LUZMVF9NQVggOiBGTFRfTUFYKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KHVuaW9uQXJyYXlbaV0uZ2V0RkNv
bnN0KCkgLyByaWdodFVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkpOwpAQCAtMTE2OSwxMyArMTE1
MywxMyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAKICAgICAg
ICAgICAgIGNhc2UgRWJ0SW50OgogICAgICAgICAgICAgICAgIGlmIChyaWdodFVuaW9uQXJyYXlb
aV0gPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVBy
ZWZpeFdhcm5pbmcsICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9sZGlu
ZyIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4V2FybmluZywgZ2V0TGluZSgpLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5n
IGNvbnN0YW50IGZvbGRpbmciKTsKICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlb
aV0uc2V0SUNvbnN0KElOVF9NQVgpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3QodW5pb25BcnJheVtpXS5nZXRJ
Q29uc3QoKSAvIHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50IGZvbGRpbmcgY2Fu
bm90IGJlIGRvbmUgZm9yIFwiL1wiIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBpbmZv
U2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0
YW50IGZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIFwiL1wiIik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IH0KQEAgLTExODQsNyArMTE2OCw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5p
b246OmZvbGQKIAogICAgICAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoKICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0RmxvYXQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCAiQ29uc3RhbnQgRm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgbWF0cml4IHRpbWVzIHZlY3Rv
ciIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiQ29uc3RhbnQgRm9sZGluZyBjYW5u
b3QgYmUgZG9uZSBmb3IgbWF0cml4IHRpbWVzIHZlY3RvciIpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltnZXROb21pbmFsU2l6ZSgpXTsKQEAgLTEyMDUsNyAr
MTE4OSw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKIAogICAg
ICAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeDoKICAgICAgICAgICAgICAgICBpZiAo
Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50
IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIHZlY3RvciB0aW1lcyBtYXRyaXgiLCBnZXRMaW5l
KCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeElu
dGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUg
Zm9yIHZlY3RvciB0aW1lcyBtYXRyaXgiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xMjIzLDcgKzEyMDcsNyBAQCBUSW50ZXJtVHlwZWQq
IFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxB
bmQ6IC8vIHRoaXMgY29kZSBpcyB3cml0dGVuIGZvciBwb3NzaWJsZSBmdXR1cmUgdXNlLCB3aWxs
IG5vdCBnZXQgZXhlY3V0ZWQgY3VycmVudGx5CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJy
YXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8g
c3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0
QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldICYmIHJpZ2h0VW5pb25BcnJheVtpXTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjMxLDcgKzEyMTUsNyBAQCBU
SW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBjYXNl
IEVPcExvZ2ljYWxPcjogLy8gdGhpcyBjb2RlIGlzIHdyaXR0ZW4gZm9yIHBvc3NpYmxlIGZ1dHVy
ZSB1c2UsIHdpbGwgbm90IGdldCBleGVjdXRlZCBjdXJyZW50bHkKICAgICAgICAgICAgICAgICB0
ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAg
ICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gfHwgcmlnaHRVbmlvbkFycmF5W2ld
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyMzksNyAr
MTIyMyw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAg
ICAgICAgIGNhc2UgRU9wTG9naWNhbFhvcjoKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsvLyBz
dXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdl
dFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBFYnRCb29sOiB0ZW1w
Q29uc3RBcnJheVtpXS5zZXRCQ29uc3QoKHVuaW9uQXJyYXlbaV0gPT0gcmlnaHRVbmlvbkFycmF5
W2ldKSA/IGZhbHNlIDogdHJ1ZSk7IGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDogYXNzZXJ0
KGZhbHNlICYmICJEZWZhdWx0IG1pc3NpbmciKTsKQEAgLTEyODUsNyArMTI2OSw3IEBAIFRJbnRl
cm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFDb21wYXJlU3RydWN0dXJlKG5vZGUtPmdldFR5cGUoKSwgbm9kZS0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKSwgdW5pb25BcnJheSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sTm9k
ZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodW5pb25BcnJheVtpXSAhPSByaWdodFVuaW9uQXJyYXlbaV0p
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgLy8gYnJlYWsgb3V0IG9mIGZvciBsb29w
CkBAIC0xMzExLDcgKzEyOTUsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9u
Ojpmb2xkCiAgICAgICAgICAgICAgICAgICAgIGlmIChDb21wYXJlU3RydWN0dXJlKG5vZGUtPmdl
dFR5cGUoKSwgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSwgdW5pb25BcnJheSkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0
U2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pb25BcnJh
eVtpXSA9PSByaWdodFVuaW9uQXJyYXlbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OyAgLy8gYnJlYWsgb3V0IG9mIGZvciBsb29wCkBAIC0xMzMzLDcgKzEzMTcsNyBAQCBUSW50ZXJt
VHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRlbXBOb2RlOwogCiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkludmFsaWQgb3BlcmF0b3Ig
Zm9yIGNvbnN0YW50IGZvbGRpbmciLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiSW52YWxp
ZCBvcGVyYXRvciBmb3IgY29uc3RhbnQgZm9sZGluZyIpOwogICAgICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICB9CiAgICAgICAgIHRlbXBOb2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVu
aW9uKHRlbXBDb25zdEFycmF5LCByZXR1cm5UeXBlKTsKQEAgLTEzNDYsMTQgKzEzMzAsMTQgQEAg
VEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAvLwogICAg
ICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbmV3Tm9kZSA9IDA7CiAgICAgICAgIENvbnN0YW50
VW5pb24qIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0g
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBzd2l0
Y2gob3ApIHsKICAgICAgICAgICAgICAgICBjYXNlIEVPcE5lZ2F0aXZlOgogICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDogdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KC11
bmlvbkFycmF5W2ldLmdldEZDb25zdCgpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEVidEludDogICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3QoLXVuaW9uQXJyYXlb
aV0uZ2V0SUNvbnN0KCkpOyBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhJbnRlcm5hbEVycm9yLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFu
dCIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRp
b24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC0xMzYxLDcgKzEzNDUsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFu
dFVuaW9uOjpmb2xkCiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJh
c2ljVHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6ICB0ZW1w
Q29uc3RBcnJheVtpXS5zZXRCQ29uc3QoIXVuaW9uQXJyYXlbaV0uZ2V0QkNvbnN0KCkpOyBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5h
cnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIsIGdldExpbmUoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRl
cm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNv
bnN0YW50Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzc3LDY1ICsx
MzYxLDY0IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKIAogVElu
dGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjpwcm9tb3RlQ29uc3RhbnRVbmlvbihUQmFzaWNUeXBl
IHByb21vdGVUbywgVEludGVybUNvbnN0YW50VW5pb24qIG5vZGUpCiB7Ci0gICAgQ29uc3RhbnRV
bmlvbiAqcmlnaHRVbmlvbkFycmF5ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAg
ICBpbnQgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90
IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogCiAgICAgQ29uc3RhbnRV
bmlvbiAqbGVmdFVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltzaXplXTsKIAotICAgIGZv
ciAoaW50IGk9MDsgaSA8IHNpemU7IGkrKykgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgaSsrKSB7CiAKICAgICAgICAgc3dpdGNoIChwcm9tb3RlVG8pIHsKICAgICAgICAgICAg
IGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRUeXBlKCku
Z2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0
Pihub2RlLT5nZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50PihpKSkpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRCQ29uc3QoKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0
Pihub2RlLT5nZXRCQ29uc3Qoc3RhdGljX2Nhc3Q8Ym9vbD4oaSkpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldID0gcmlnaHRVbmlvbkFycmF5
W2ldOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0
KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkp
KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEludGVybmFsRXJyb3IsICJDYW5ub3QgcHJvbW90ZSIsIG5vZGUtPmdldExpbmUoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeElu
dGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkNhbm5vdCBwcm9tb3RlIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEVidEludDoKICAgICAgICAgICAgICAgICBz
d2l0Y2ggKG5vZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5
W2ldID0gcmlnaHRVbmlvbkFycmF5W2ldOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVu
aW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0SUNvbnN0KHN0
YXRpY19jYXN0PGludD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAgICAgICAgICAgICAg
bGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4ocmlnaHRVbmlvbkFy
cmF5W2ldLmdldEJDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25B
cnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5nZXRCQ29uc3Qoc3RhdGlj
X2Nhc3Q8Ym9vbD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxl
ZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KHJpZ2h0VW5pb25BcnJh
eVtpXS5nZXRGQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJy
YXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19j
YXN0PGZsb2F0PihpKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQ2Fubm90IHByb21vdGUiLCBub2Rl
LT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJDYW5ub3QgcHJvbW90
ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRCb29sOgogICAg
ICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAgICAgICAg
bGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3Qo
KSAhPSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJD
b25zdChub2RlLT5nZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50PihpKSkgIT0gMCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29s
OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0gPSByaWdodFVuaW9u
QXJyYXlbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRC
Q29uc3Qobm9kZS0+Z2V0QkNvbnN0KHN0YXRpY19jYXN0PGJvb2w+KGkpKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChyaWdo
dFVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgIT0gMC4wZik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19j
YXN0PGZsb2F0PihpKSkgIT0gMC4wZik7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNhbm5vdCBwcm9tb3Rl
Iiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQ2Fubm90
IHByb21vdGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsICJJbmNvcnJlY3QgZGF0YSB0eXBlIGZvdW5kIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5v
ZGUtPmdldExpbmUoKSwgIkluY29ycmVjdCBkYXRhIHR5cGUgZm91bmQiKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwCShyZXZpc2lvbiAxNTI1OTUp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5LDMgKzE5LDE3IEBAIGJvb2wgVE91dHB1dEdMU0w6OndyaXRl
VmFyaWFibGVQcmVjaXNpb24KIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CisKK3ZvaWQgVE91dHB1
dEdMU0w6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqIG5vZGUpCit7CisgICAgVEluZm9TaW5r
QmFzZSYgb3V0ID0gb2JqU2luaygpOworCisgICAgaWYgKG5vZGUtPmdldFN5bWJvbCgpID09ICJn
bF9GcmFnRGVwdGhFWFQiKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICJnbF9GcmFnRGVwdGgiOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0U3lt
Ym9sKG5vZGUpOworICAgIH0KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9PdXRwdXRHTFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuaAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuaAkod29ya2luZyBjb3B5
KQpAQCAtMjAsNiArMjAsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJv
b2wgd3JpdGVWYXJpYWJsZVByZWNpc2lvbihUUHJlY2lzaW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCogbm9kZSk7CiB9OwogCiAjZW5kaWYgIC8vIENST1NT
Q09NUElMRVJHTFNMX09VVFBVVEdMU0xfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcAkocmV2aXNpb24g
MTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdM
U0xCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMjUgKzc5LDkgQEAgdm9pZCBUT3V0cHV0
R0xTTEJhc2U6OndyaXRlVmFyaWFibGVUeXBlKAogICAgIGlmICgocXVhbGlmaWVyICE9IEV2cVRl
bXBvcmFyeSkgJiYgKHF1YWxpZmllciAhPSBFdnFHbG9iYWwpKQogICAgICAgICBvdXQgPDwgdHlw
ZS5nZXRRdWFsaWZpZXJTdHJpbmcoKSA8PCAiICI7CiAgICAgLy8gRGVjbGFyZSB0aGUgc3RydWN0
IGlmIHdlIGhhdmUgbm90IGRvbmUgc28gYWxyZWFkeS4KLSAgICBpZiAoKHR5cGUuZ2V0QmFzaWNU
eXBlKCkgPT0gRWJ0U3RydWN0KSAmJgotICAgICAgICAobURlY2xhcmVkU3RydWN0cy5maW5kKHR5
cGUuZ2V0VHlwZU5hbWUoKSkgPT0gbURlY2xhcmVkU3RydWN0cy5lbmQoKSkpCisgICAgaWYgKCh0
eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgJiYgIXN0cnVjdERlY2xhcmVkKHR5cGUu
Z2V0U3RydWN0KCkpKQogICAgIHsKLSAgICAgICAgb3V0IDw8ICJzdHJ1Y3QgIiA8PCBoYXNoTmFt
ZSh0eXBlLmdldFR5cGVOYW1lKCkpIDw8ICJ7XG4iOwotICAgICAgICBjb25zdCBUVHlwZUxpc3Qq
IHN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUg
IT0gTlVMTCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RydWN0dXJlLT5zaXpl
KCk7ICsraSkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9
ICgqc3RydWN0dXJlKVtpXS50eXBlOwotICAgICAgICAgICAgQVNTRVJUKGZpZWxkVHlwZSAhPSBO
VUxMKTsKLSAgICAgICAgICAgIGlmICh3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKGZpZWxkVHlwZS0+
Z2V0UHJlY2lzaW9uKCkpKQotICAgICAgICAgICAgICAgIG91dCA8PCAiICI7Ci0gICAgICAgICAg
ICBvdXQgPDwgZ2V0VHlwZU5hbWUoKmZpZWxkVHlwZSkgPDwgIiAiIDw8IGhhc2hOYW1lKGZpZWxk
VHlwZS0+Z2V0RmllbGROYW1lKCkpOwotICAgICAgICAgICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJh
eSgpKQotICAgICAgICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZFR5cGUpOwot
ICAgICAgICAgICAgb3V0IDw8ICI7XG4iOwotICAgICAgICB9Ci0gICAgICAgIG91dCA8PCAifSI7
Ci0gICAgICAgIG1EZWNsYXJlZFN0cnVjdHMuaW5zZXJ0KHR5cGUuZ2V0VHlwZU5hbWUoKSk7Cisg
ICAgICAgIGRlY2xhcmVTdHJ1Y3QodHlwZS5nZXRTdHJ1Y3QoKSk7CiAgICAgfQogICAgIGVsc2UK
ICAgICB7CkBAIC0xMzgsMjQgKzEyMiwyNSBAQCBjb25zdCBDb25zdGFudFVuaW9uKiBUT3V0cHV0
R0xTTEJhc2U6OndyCiAKICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3Qp
CiAgICAgewotICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKSA8PCAi
KCI7Ci0gICAgICAgIGNvbnN0IFRUeXBlTGlzdCogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3Qo
KTsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSBOVUxMKTsKLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgKytpKQorICAgICAgICBjb25zdCBUU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOworICAgICAgICBvdXQgPDwgaGFz
aE5hbWUoc3RydWN0dXJlLT5uYW1lKCkpIDw8ICIoIjsKKworICAgICAgICBjb25zdCBURmllbGRM
aXN0JiBmaWVsZHMgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkKICAgICAgICAgewotICAgICAgICAgICAgY29u
c3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOworICAgICAgICAgICAg
Y29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9IGZpZWxkc1tpXS0+dHlwZSgpOwogICAgICAgICAgICAg
QVNTRVJUKGZpZWxkVHlwZSAhPSBOVUxMKTsKICAgICAgICAgICAgIHBDb25zdFVuaW9uID0gd3Jp
dGVDb25zdGFudFVuaW9uKCpmaWVsZFR5cGUsIHBDb25zdFVuaW9uKTsKLSAgICAgICAgICAgIGlm
IChpICE9IHN0cnVjdHVyZS0+c2l6ZSgpIC0gMSkgb3V0IDw8ICIsICI7CisgICAgICAgICAgICBp
ZiAoaSAhPSBmaWVsZHMuc2l6ZSgpIC0gMSkgb3V0IDw8ICIsICI7CiAgICAgICAgIH0KICAgICAg
ICAgb3V0IDw8ICIpIjsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW50IHNpemUg
PSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9i
amVjdFNpemUoKTsKICAgICAgICAgYm9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAgICAg
aWYgKHdyaXRlVHlwZSkgb3V0IDw8IGdldFR5cGVOYW1lKHR5cGUpIDw8ICIoIjsKLSAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2ksICsrcENvbnN0VW5pb24pCisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpLCArK3BDb25zdFVuaW9uKQogICAgICAgICB7
CiAgICAgICAgICAgICBzd2l0Y2ggKHBDb25zdFVuaW9uLT5nZXRUeXBlKCkpCiAgICAgICAgICAg
ICB7CkBAIC0yNjAsMTIgKzI0NSwxOCBAQCBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCaW5h
cnkoVmlzaXQgCiAgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6CiAgICAgICAgICAg
ICBpZiAodmlzaXQgPT0gSW5WaXNpdCkKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAv
LyBIZXJlIHdlIGFyZSB3cml0aW5nIG91dCAiZm9vLmJhciIsIHdoZXJlICJmb28iIGlzIHN0cnVj
dAorICAgICAgICAgICAgICAgIC8vIGFuZCAiYmFyIiBpcyBmaWVsZC4gSW4gQVNULCBpdCBpcyBy
ZXByZXNlbnRlZCBhcyBhIGJpbmFyeQorICAgICAgICAgICAgICAgIC8vIG5vZGUsIHdoZXJlIGxl
ZnQgY2hpbGQgcmVwcmVzZW50cyAiZm9vIiBhbmQgcmlnaHQgY2hpbGQgImJhciIuCisgICAgICAg
ICAgICAgICAgLy8gVGhlIG5vZGUgaXRzZWxmIHJlcHJlc2VudHMgIi4iLiBUaGUgc3RydWN0IGZp
ZWxkICJiYXIiIGlzCisgICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgc3RvcmVkIGFzIGFuIGlu
ZGV4IGludG8gVFN0cnVjdHVyZTo6ZmllbGRzLgogICAgICAgICAgICAgICAgIG91dCA8PCAiLiI7
Ci0gICAgICAgICAgICAgICAgLy8gVE9ETyhhbG9rcCk6IEFTU0VSVAotICAgICAgICAgICAgICAg
IFRTdHJpbmcgZmllbGROYW1lID0gbm9kZS0+Z2V0VHlwZSgpLmdldEZpZWxkTmFtZSgpOworICAg
ICAgICAgICAgICAgIGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPmdldExlZnQo
KS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOworICAgICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1D
b25zdGFudFVuaW9uKiBpbmRleCA9IG5vZGUtPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlv
bigpOworICAgICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQgPSBzdHJ1Y3R1cmUtPmZp
ZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOwogCi0gICAgICAgICAgICAgICAgY29uc3QgVFR5
cGUmIHN0cnVjdFR5cGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKTsKLSAgICAgICAgICAg
ICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3RUeXBlLmdldFR5cGVOYW1l
KCkpKQorICAgICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gZmllbGQtPm5hbWUoKTsK
KyAgICAgICAgICAgICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3R1cmUt
Pm5hbWUoKSkpCiAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZSA9IGhhc2hOYW1lKGZpZWxk
TmFtZSk7CiAKICAgICAgICAgICAgICAgICBvdXQgPDwgZmllbGROYW1lOwpAQCAtNTk2LDcgKzU4
Nyw3IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSYgdHlwZSA9IG5vZGUtPmdldFR5cGUo
KTsKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1
Y3QpOwotICAgICAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0eXBlLmdldFR5cGVOYW1lKCkp
IDw8ICIoIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRTdHJ1Y3Qo
KS0+bmFtZSgpKSA8PCAiKCI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICh2
aXNpdCA9PSBJblZpc2l0KQogICAgICAgICAgICAgewpAQCAtNzY1LDcgKzc1Niw3IEBAIFRTdHJp
bmcgVE91dHB1dEdMU0xCYXNlOjpnZXRUeXBlTmFtZShjb24KICAgICBlbHNlCiAgICAgewogICAg
ICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCi0gICAgICAgICAgICBv
dXQgPDwgaGFzaE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKTsKKyAgICAgICAgICAgIG91dCA8PCBo
YXNoTmFtZSh0eXBlLmdldFN0cnVjdCgpLT5uYW1lKCkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBvdXQgPDwgdHlwZS5nZXRCYXNpY1N0cmluZygpOwogICAgIH0KQEAgLTc5OCwzICs3ODks
MjkgQEAgVFN0cmluZyBUT3V0cHV0R0xTTEJhc2U6Omhhc2hGdW5jdGlvbk5hbQogICAgICAgICBy
ZXR1cm4gbmFtZTsKICAgICByZXR1cm4gaGFzaE5hbWUobmFtZSk7CiB9CisKK2Jvb2wgVE91dHB1
dEdMU0xCYXNlOjpzdHJ1Y3REZWNsYXJlZChjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1EZWNsYXJlZFN0cnVjdHMuZmluZChzdHJ1Y3R1cmUtPm5hbWUo
KSkgIT0gbURlY2xhcmVkU3RydWN0cy5lbmQoKTsKK30KKwordm9pZCBUT3V0cHV0R0xTTEJhc2U6
OmRlY2xhcmVTdHJ1Y3QoY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFRJbmZv
U2lua0Jhc2UmIG91dCA9IG9ialNpbmsoKTsKKworICAgIG91dCA8PCAic3RydWN0ICIgPDwgaGFz
aE5hbWUoc3RydWN0dXJlLT5uYW1lKCkpIDw8ICJ7XG4iOworICAgIGNvbnN0IFRGaWVsZExpc3Qm
IGZpZWxkcyA9IHN0cnVjdHVyZS0+ZmllbGRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWVsZHMuc2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBjb25zdCBURmllbGQqIGZpZWxk
ID0gZmllbGRzW2ldOworICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVsZC0+
dHlwZSgpLT5nZXRQcmVjaXNpb24oKSkpCisgICAgICAgICAgICBvdXQgPDwgIiAiOworICAgICAg
ICBvdXQgPDwgZ2V0VHlwZU5hbWUoKmZpZWxkLT50eXBlKCkpIDw8ICIgIiA8PCBoYXNoTmFtZShm
aWVsZC0+bmFtZSgpKTsKKyAgICAgICAgaWYgKGZpZWxkLT50eXBlKCktPmlzQXJyYXkoKSkKKyAg
ICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZC0+dHlwZSgpKTsKKyAgICAgICAg
b3V0IDw8ICI7XG4iOworICAgIH0KKyAgICBvdXQgPDwgIn0iOworCisgICAgbURlY2xhcmVkU3Ry
dWN0cy5pbnNlcnQoc3RydWN0dXJlLT5uYW1lKCkpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgJKHJldmlz
aW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRw
dXRHTFNMQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw5IEBAIHByb3RlY3RlZDoK
ICAgICBUU3RyaW5nIGhhc2hGdW5jdGlvbk5hbWUoY29uc3QgVFN0cmluZyYgbWFuZ2xlZF9uYW1l
KTsKIAogcHJpdmF0ZToKKyAgICBib29sIHN0cnVjdERlY2xhcmVkKGNvbnN0IFRTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgY29uc3Q7CisgICAgdm9pZCBkZWNsYXJlU3RydWN0KGNvbnN0IFRTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSk7CisKICAgICBUSW5mb1NpbmtCYXNlJiBtT2JqU2luazsKICAgICBib29s
IG1EZWNsYXJpbmdWYXJpYWJsZXM7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9PdXRwdXRITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAJKHJldmlzaW9uIDE1MjU5NSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBPdXRwdXRITFNMOjpPdXRwdXRITFNMKFRQYXJz
ZUNvbnRleHQgJmNvCiAgICAgbVVzZXNQb2ludENvb3JkID0gZmFsc2U7CiAgICAgbVVzZXNGcm9u
dEZhY2luZyA9IGZhbHNlOwogICAgIG1Vc2VzUG9pbnRTaXplID0gZmFsc2U7CisgICAgbVVzZXNG
cmFnRGVwdGggPSBmYWxzZTsKICAgICBtVXNlc1hvciA9IGZhbHNlOwogICAgIG1Vc2VzTW9kMSA9
IGZhbHNlOwogICAgIG1Vc2VzTW9kMnYgPSBmYWxzZTsKQEAgLTE4OSw2ICsxOTAsMTEgQEAgdm9p
ZCBPdXRwdXRITFNMOjpoZWFkZXIoKQogICAgICAgICBvdXQgPDwgIlxuIgogICAgICAgICAgICAg
ICAgInN0YXRpYyBmbG9hdDQgZ2xfQ29sb3JbMV0gPSB7ZmxvYXQ0KDAsIDAsIDAsIDApfTtcbiI7
CiAKKyAgICAgICAgaWYgKG1Vc2VzRnJhZ0RlcHRoKQorICAgICAgICB7CisgICAgICAgICAgICBv
dXQgPDwgInN0YXRpYyBmbG9hdCBnbF9EZXB0aCA9IDAuMDtcbiI7CisgICAgICAgIH0KKwogICAg
ICAgICBpZiAobVVzZXNGcmFnQ29vcmQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG91dCA8PCAi
c3RhdGljIGZsb2F0NCBnbF9GcmFnQ29vcmQgPSBmbG9hdDQoMCwgMCwgMCwgMCk7XG4iOwpAQCAt
NTA5LDYgKzUxNSwxMSBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcigpCiAgICAgICAgIG91dCA8
PCAiI2RlZmluZSBHTF9VU0VTX1BPSU5UX1NJWkVcbiI7CiAgICAgfQogCisgICAgaWYgKG1Vc2Vz
RnJhZ0RlcHRoKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNfRlJBR19E
RVBUSFxuIjsKKyAgICB9CisKICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQogICAgIHsKICAgICAg
ICAgb3V0IDw8ICJzdHJ1Y3QgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnNcbiIKQEAgLTg0Myw2ICs4
NTQsMTEgQEAgdm9pZCBPdXRwdXRITFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYgogICAgICAg
ICBtVXNlc1BvaW50U2l6ZSA9IHRydWU7CiAgICAgICAgIG91dCA8PCBuYW1lOwogICAgIH0KKyAg
ICBlbHNlIGlmIChuYW1lID09ICJnbF9GcmFnRGVwdGhFWFQiKQorICAgIHsKKyAgICAgICAgbVVz
ZXNGcmFnRGVwdGggPSB0cnVlOworICAgICAgICBvdXQgPDwgImdsX0RlcHRoIjsKKyAgICB9CiAg
ICAgZWxzZQogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBub2RlLT5nZXRR
dWFsaWZpZXIoKTsKQEAgLTk1Miw3ICs5NjgsMTAgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJp
bmFyeShWaXNpdCB2aXNpdAogICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKICAgICAg
ICAgaWYgKHZpc2l0ID09IEluVmlzaXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAi
LiIgKyBkZWNvcmF0ZUZpZWxkKG5vZGUtPmdldFR5cGUoKS5nZXRGaWVsZE5hbWUoKSwgbm9kZS0+
Z2V0TGVmdCgpLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7CisgICAgICAg
ICAgICBjb25zdCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogaW5kZXggPSBub2RlLT5nZXRSaWdodCgp
LT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQg
PSBzdHJ1Y3R1cmUtPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOworICAgICAgICAgICAg
b3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGQtPm5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgp
LT5nZXRUeXBlKCkpOwogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAg
LTk3NCw3ICs5OTMsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0
CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBpID0gZWxlbWVudC0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
ID0gZWxlbWVudC0+Z2V0SUNvbnN0KDApOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGkpCiAgICAgICAgICAgICAgICAgICAgICAgICB7CkBAIC0xMDIxLDE4ICsxMDQwLDE4IEBA
IGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQKICAgICAgICAgICAgICAg
ICBvdXQgPDwgIiEoIjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29uc3QgVFR5cGVM
aXN0ICpmaWVsZHMgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKKyAg
ICAgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IG5vZGUtPmdldExlZnQoKS0+Z2V0
VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKIAotICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmaWVsZHMtPnNpemUoKTsgaSsrKQorICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqZmllbGRzKVtpXS50eXBlOworICAgICAg
ICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CiAKICAgICAgICAgICAg
ICAgICBub2RlLT5nZXRMZWZ0KCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgICAgIG91
dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCksIG5vZGUt
PmdldExlZnQoKS0+Z2V0VHlwZSgpKSArICIgPT0gIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwg
Ii4iICsgZGVjb3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5
cGUoKSkgKyAiID09ICI7CiAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0UmlnaHQoKS0+dHJhdmVy
c2UodGhpcyk7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmll
bGRUeXBlLT5nZXRGaWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkpOworICAg
ICAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksIG5v
ZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpKTsKIAotICAgICAgICAgICAgICAgIGlmIChpIDwgZmll
bGRzLT5zaXplKCkgLSAxKQorICAgICAgICAgICAgICAgIGlmIChpIDwgZmllbGRzLnNpemUoKSAt
IDEpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAmJiAi
OwogICAgICAgICAgICAgICAgIH0KQEAgLTEyMzgsNyArMTI1Nyw3IEBAIGJvb2wgT3V0cHV0SExT
TDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1J
bnNpZGVGdW5jdGlvbikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURp
cmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICAgICAgb3V0
IDw8ICJ7XG4iOwogCiAgICAgICAgICAgICAgICAgbVNjb3BlRGVwdGgrKzsKQEAgLTEyNTUsNyAr
MTI3NCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKIAogICAg
ICAgICAgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHNpdCA9IG5vZGUtPmdldFNl
cXVlbmNlKCkuYmVnaW4oKTsgc2l0ICE9IG5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHNpdCsr
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpz
aXQpLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpz
aXQpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAKICAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0
YXRlbWVudHMoKnNpdCk7CiAKQEAgLTEyNjQsNyArMTI4Myw3IEBAIGJvb2wgT3V0cHV0SExTTDo6
dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKIAogICAgICAgICAgICAgaWYgKG1JbnNpZGVGdW5jdGlv
bikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5v
ZGUtPmdldEVuZExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShu
b2RlLT5nZXRMaW5lKCkubGFzdF9saW5lKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgIn1cbiI7
CiAKICAgICAgICAgICAgICAgICBtU2NvcGVEZXB0aC0tOwpAQCAtMTI4Myw3ICsxMzAyLDcgQEAg
Ym9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQogICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RydWN0b3IodmFyaWFi
bGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0VHlwZU5h
bWUoKSksIE5VTEwpOworICAgICAgICAgICAgICAgICAgICBhZGRDb25zdHJ1Y3Rvcih2YXJpYWJs
ZS0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3QodmFyaWFibGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3Qo
KS0+bmFtZSgpKSwgTlVMTCk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
aWYgKCF2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCkgfHwgdmFyaWFibGUtPmdldEFzU3ltYm9s
Tm9kZSgpLT5nZXRTeW1ib2woKSAhPSAiIikgICAvLyBWYXJpYWJsZSBkZWNsYXJhdGlvbgpAQCAt
MTQwMSw3ICsxNDIwLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2
aQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbC0+Z2V0
VHlwZSgpLmdldFN0cnVjdCgpKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBhZGRDb25zdHJ1Y3RvcihzeW1ib2wtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0
KHN5bWJvbC0+Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpLCBOVUxMKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZENvbnN0cnVjdG9yKHN5bWJvbC0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3Qo
c3ltYm9sLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPm5hbWUoKSksIE5VTEwpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8IGFyZ3VtZW50U3RyaW5n
KHN5bWJvbCk7CkBAIC0xNjUwLDggKzE2NjksOCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdn
cmVnYXRlKFZpc2l0IHZpCiAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJtYXQ0KCIsICIs
ICIsICIpIik7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RTdHJ1Y3Q6
Ci0gICAgICAgIGFkZENvbnN0cnVjdG9yKG5vZGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5v
ZGUtPmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOwotICAg
ICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdl
dFR5cGVOYW1lKCkpICsgIl9jdG9yKCIsICIsICIsICIpIik7CisgICAgICAgIGFkZENvbnN0cnVj
dG9yKG5vZGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1
Y3QoKS0+bmFtZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgICAgICBvdXRwdXRUcmlw
bGV0KHZpc2l0LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5uYW1l
KCkpICsgIl9jdG9yKCIsICIsICIsICIpIik7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBF
T3BMZXNzVGhhbjogICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgPCAiLCAiKSIp
OyAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOiAgICAg
IG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiA+ICIsICIpIik7ICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTE3NDEsNyArMTc2MCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rp
b24oVmlzaXQgdmkKIAogICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAgICAgIAotICAgICAgICBv
dXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIG91dHB1dExpbmVE
aXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQgPDwgIntc
biI7CiAKICAgICAgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQpAQCAtMTc0OSwyMCArMTc2
OCwyMCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpCiAgICAgICAg
ICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpOwogICAgICAgICB9
CiAKLSAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAg
ICAgb3V0IDw8ICI7XG59XG4iOwogCiAgICAgICAgIGlmIChub2RlLT5nZXRGYWxzZUJsb2NrKCkp
CiAgICAgICAgIHsKICAgICAgICAgICAgIG91dCA8PCAiZWxzZVxuIjsKIAotICAgICAgICAgICAg
b3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7Cisg
ICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0
TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwogCi0gICAgICAg
ICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgp
KTsKKyAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygp
LT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMo
bm9kZS0+Z2V0RmFsc2VCbG9jaygpKTsKIAotICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2
ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7CisgICAgICAgICAgICBvdXRwdXRM
aW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUp
OwogICAgICAgICAgICAgb3V0IDw8ICI7XG59XG4iOwogICAgICAgICB9CiAgICAgfQpAQCAtMTc5
NSw3ICsxODE0LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIAog
ICAgIHsKICAgICAgICAgb3V0IDw8ICJ7ZG9cbiI7CiAKLSAgICAgICAgb3V0cHV0TGluZURpcmVj
dGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUt
PmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8ICJ7XG4iOwogICAgIH0KICAg
ICBlbHNlCkBAIC0xODIzLDcgKzE4NDIsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChW
aXNpdCB2aXNpdCwgCiAKICAgICAgICAgb3V0IDw8ICIpXG4iOwogICAgICAgICAKLSAgICAgICAg
b3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8ICJ7
XG4iOwogICAgIH0KIApAQCAtMTgzMiwxMiArMTg1MSwxMiBAQCBib29sIE91dHB1dEhMU0w6OnZp
c2l0TG9vcChWaXNpdCB2aXNpdCwgCiAgICAgICAgIHRyYXZlcnNlU3RhdGVtZW50cyhub2RlLT5n
ZXRCb2R5KCkpOwogICAgIH0KIAotICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGlu
ZSgpKTsKKyAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5l
KTsKICAgICBvdXQgPDwgIjt9XG4iOwogCiAgICAgaWYgKG5vZGUtPmdldFR5cGUoKSA9PSBFTG9v
cERvV2hpbGUpCiAgICAgewotICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENv
bmRpdGlvbigpLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUt
PmdldENvbmRpdGlvbigpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAi
d2hpbGUoXG4iOwogCiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlz
KTsKQEAgLTE5NzcsNyArMTk5Niw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZl
TG9vcChUSW4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNU
eXBlKCkgPT0gRWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAg
ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgg
PSBzeW1ib2w7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCA9IGNvbnN0YW50
LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpWzBdLmdldElDb25zdCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluaXRpYWwgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDApOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQpAQCAtMTk5OSw3ICsyMDE4LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVM
b29wKFRJbgogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0g
RWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICBjb21wYXJhdG9yID0gdGVzdC0+Z2V0T3AoKTsKLSAg
ICAgICAgICAgICAgICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgbGltaXQgPSBjb25zdGFudC0+
Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMjAyMCw3ICsyMDM5LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVM
b29wKFRJbgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0
QmFzaWNUeXBlKCkgPT0gRWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEp
CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSBjb25z
dGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaW50IHZhbHVlID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKG9wKQogICAgICAgICAgICAgICAgICAgICB7CkBAIC0yMTA5LDcg
KzIxMjgsNyBAQCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAg
ICAgICAgICAgICAgb3V0IDw8IGluY3JlbWVudDsKICAgICAgICAgICAgICAgICBvdXQgPDwgIilc
biI7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2
ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUo
bm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAie1xu
IjsKIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRCb2R5KCkpCkBAIC0yMTE3LDcgKzIx
MzYsNyBAQCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmdldEJvZHkoKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGlu
ZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAiO31cbiI7CiAKICAgICAg
ICAgICAgICAgICBpZiAoIWZpcnN0TG9vcEZyYWdtZW50KQpAQCAtMjIxMywyMiArMjIzMiwyMyBA
QCBUU3RyaW5nIE91dHB1dEhMU0w6OnR5cGVTdHJpbmcoY29uc3QgVFR5CiB7CiAgICAgaWYgKHR5
cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsKLSAgICAgICAgaWYgKHR5cGUu
Z2V0VHlwZU5hbWUoKSAhPSAiIikKKyAgICAgICAgY29uc3QgVFN0cmluZyYgdHlwZU5hbWUgPSB0
eXBlLmdldFN0cnVjdCgpLT5uYW1lKCk7CisgICAgICAgIGlmICh0eXBlTmFtZSAhPSAiIikKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlLmdldFR5cGVOYW1l
KCkpOworICAgICAgICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlTmFtZSk7CiAgICAgICAg
IH0KICAgICAgICAgZWxzZSAgIC8vIE5hbWVsZXNzIHN0cnVjdHVyZSwgZGVmaW5lIGluIHBsYWNl
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlTGlzdCAmZmllbGRzID0gKnR5cGUu
Z2V0U3RydWN0KCk7CisgICAgICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSB0eXBl
LmdldFN0cnVjdCgpLT5maWVsZHMoKTsKIAogICAgICAgICAgICAgVFN0cmluZyBzdHJpbmcgPSAi
c3RydWN0XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRz
W2ldLnR5cGU7CisgICAgICAgICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCA9IGZpZWxkc1tp
XTsKIAotICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3RyaW5nKGZpZWxk
KSArICIgIiArIGRlY29yYXRlKGZpZWxkLmdldEZpZWxkTmFtZSgpKSArIGFycmF5U3RyaW5nKGZp
ZWxkKSArICI7XG4iOworICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3Ry
aW5nKCpmaWVsZC0+dHlwZSgpKSArICIgIiArIGRlY29yYXRlKGZpZWxkLT5uYW1lKCkpICsgYXJy
YXlTdHJpbmcoKmZpZWxkLT50eXBlKCkpICsgIjtcbiI7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIHN0cmluZyArPSAifSAiOwpAQCAtMjMwNCwxMSArMjMyNCwxMiBAQCBUU3RyaW5nIE91
dHB1dEhMU0w6OmluaXRpYWxpemVyKGNvbnN0IFRUCiB7CiAgICAgVFN0cmluZyBzdHJpbmc7CiAK
LSAgICBmb3IgKGludCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCB0eXBlLmdldE9iamVjdFNp
emUoKTsgY29tcG9uZW50KyspCisgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUo
KTsKKyAgICBmb3IgKHNpemVfdCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCBzaXplOyBjb21w
b25lbnQrKykKICAgICB7CiAgICAgICAgIHN0cmluZyArPSAiMCI7CiAKLSAgICAgICAgaWYgKGNv
bXBvbmVudCA8IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpIC0gMSkKKyAgICAgICAgaWYgKGNvbXBvbmVu
dCArIDEgPCBzaXplKQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJpbmcgKz0gIiwgIjsKICAg
ICAgICAgfQpAQCAtMjM0NywxMyArMjM2OCwxMyBAQCB2b2lkIE91dHB1dEhMU0w6OmFkZENvbnN0
cnVjdG9yKGNvbnN0IFRUCiAgICAgICAgIHN0cnVjdHVyZSArPSAic3RydWN0ICIgKyBkZWNvcmF0
ZShuYW1lKSArICJcbiIKICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCi0gICAgICAgIGNv
bnN0IFRUeXBlTGlzdCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0KCk7CisgICAgICAgIGNvbnN0
IFRGaWVsZExpc3QgJmZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRzW2ldLnR5cGU7
CisgICAgICAgICAgICBjb25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ldOwogCi0gICAgICAg
ICAgICBzdHJ1Y3R1cmUgKz0gIiAgICAiICsgdHlwZVN0cmluZyhmaWVsZCkgKyAiICIgKyBkZWNv
cmF0ZUZpZWxkKGZpZWxkLmdldEZpZWxkTmFtZSgpLCB0eXBlKSArIGFycmF5U3RyaW5nKGZpZWxk
KSArICI7XG4iOworICAgICAgICAgICAgc3RydWN0dXJlICs9ICIgICAgIiArIHR5cGVTdHJpbmco
KmZpZWxkLT50eXBlKCkpICsgIiAiICsgZGVjb3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCB0eXBl
KSArIGFycmF5U3RyaW5nKCpmaWVsZC0+dHlwZSgpKSArICI7XG4iOwogICAgICAgICB9CiAKICAg
ICAgICAgc3RydWN0dXJlICs9ICJ9O1xuIjsKQEAgLTIzNjUsNyArMjM4Niw3IEBAIHZvaWQgT3V0
cHV0SExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFQKIAogICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAgICAgICAg
ICAgY3RvclBhcmFtZXRlcnMucHVzaF9iYWNrKCpmaWVsZHNbaV0udHlwZSk7CisgICAgICAgICAg
ICBjdG9yUGFyYW1ldGVycy5wdXNoX2JhY2soKmZpZWxkc1tpXS0+dHlwZSgpKTsKICAgICAgICAg
fQogICAgIH0KICAgICBlbHNlIGlmIChwYXJhbWV0ZXJzKQpAQCAtMjQ1OCwyNyArMjQ3OSwzMCBA
QCB2b2lkIE91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAgICAgfQogICAgIGVs
c2UKICAgICB7Ci0gICAgICAgIGludCByZW1haW5pbmdDb21wb25lbnRzID0gY3RvclR5cGUuZ2V0
T2JqZWN0U2l6ZSgpOwotICAgICAgICBpbnQgcGFyYW1ldGVySW5kZXggPSAwOworICAgICAgICBz
aXplX3QgcmVtYWluaW5nQ29tcG9uZW50cyA9IGN0b3JUeXBlLmdldE9iamVjdFNpemUoKTsKKyAg
ICAgICAgc2l6ZV90IHBhcmFtZXRlckluZGV4ID0gMDsKIAogICAgICAgICB3aGlsZSAocmVtYWlu
aW5nQ29tcG9uZW50cyA+IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZw
YXJhbWV0ZXIgPSBjdG9yUGFyYW1ldGVyc1twYXJhbWV0ZXJJbmRleF07Ci0gICAgICAgICAgICBi
b29sIG1vcmVQYXJhbWV0ZXJzID0gcGFyYW1ldGVySW5kZXggPCAoaW50KWN0b3JQYXJhbWV0ZXJz
LnNpemUoKSAtIDE7CisgICAgICAgICAgICBjb25zdCBzaXplX3QgcGFyYW1ldGVyU2l6ZSA9IHBh
cmFtZXRlci5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICBib29sIG1vcmVQYXJhbWV0ZXJz
ID0gcGFyYW1ldGVySW5kZXggKyAxIDwgY3RvclBhcmFtZXRlcnMuc2l6ZSgpOwogCiAgICAgICAg
ICAgICBjb25zdHJ1Y3RvciArPSAieCIgKyBzdHIocGFyYW1ldGVySW5kZXgpOwogCiAgICAgICAg
ICAgICBpZiAocGFyYW1ldGVyLmlzU2NhbGFyKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmVtYWluaW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJlbWFpbmluZ0NvbXBvbmVu
dHMpOworICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5pc1ZlY3Rv
cigpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmdDb21wb25l
bnRzID09IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCkgfHwgbW9yZVBhcmFtZXRlcnMpCisgICAg
ICAgICAgICAgICAgaWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPT0gcGFyYW1ldGVyU2l6ZSB8fCBt
b3JlUGFyYW1ldGVycykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
bWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHBhcmFtZXRlclNpemUgPD0gcmVtYWluaW5nQ29tcG9uZW50cyk7
CisgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6
ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVtYWluaW5n
Q29tcG9uZW50cyA8IHBhcmFtZXRlci5nZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgICAg
IGVsc2UgaWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFt
ZXRlci5nZXROb21pbmFsU2l6ZSgpKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAocmVtYWluaW5nQ29tcG9uZW50cykKICAgICAgICAgICAgICAgICAgICAg
ewpAQCAtMjQ5NSw5ICsyNTE5LDEwIEBAIHZvaWQgT3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3Io
Y29uc3QgVFQKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5p
c01hdHJpeCgpIHx8IHBhcmFtZXRlci5nZXRTdHJ1Y3QoKSkKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQocmVtYWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXIuZ2V0T2Jq
ZWN0U2l6ZSgpIHx8IG1vcmVQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmVt
YWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXJTaXplIHx8IG1vcmVQYXJhbWV0ZXJzKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQocGFyYW1ldGVyU2l6ZSA8PSByZW1haW5pbmdDb21wb25lbnRz
KTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRz
IC09IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICAgICAgcmVtYWluaW5n
Q29tcG9uZW50cyAtPSBwYXJhbWV0ZXJTaXplOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZWxzZSBVTlJFQUNIQUJMRSgpOwogCkBAIC0yNTM0LDE3ICsyNTU5LDE3IEBAIGNvbnN0IENvbnN0
YW50VW5pb24gKk91dHB1dEhMU0w6OndyaXRlQ28KIAogICAgIGlmICh0eXBlLmdldEJhc2ljVHlw
ZSgpID09IEVidFN0cnVjdCkKICAgICB7Ci0gICAgICAgIG91dCA8PCBzdHJ1Y3RMb29rdXAodHlw
ZS5nZXRUeXBlTmFtZSgpKSArICJfY3RvcigiOworICAgICAgICBvdXQgPDwgc3RydWN0TG9va3Vw
KHR5cGUuZ2V0U3RydWN0KCktPm5hbWUoKSkgKyAiX2N0b3IoIjsKICAgICAgICAgCi0gICAgICAg
IGNvbnN0IFRUeXBlTGlzdCAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAg
Y29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgaSsrKQor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAg
ICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtp
XS50eXBlOworICAgICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9IGZpZWxkc1tpXS0+
dHlwZSgpOwogCiAgICAgICAgICAgICBjb25zdFVuaW9uID0gd3JpdGVDb25zdGFudFVuaW9uKCpm
aWVsZFR5cGUsIGNvbnN0VW5pb24pOwogCi0gICAgICAgICAgICBpZiAoaSAhPSBzdHJ1Y3R1cmUt
PnNpemUoKSAtIDEpCisgICAgICAgICAgICBpZiAoaSAhPSBmaWVsZHMuc2l6ZSgpIC0gMSkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKICAgICAgICAgICAgIH0K
QEAgLTI1NTQsNyArMjU3OSw3IEBAIGNvbnN0IENvbnN0YW50VW5pb24gKk91dHB1dEhMU0w6Ondy
aXRlQ28KICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW50IHNpemUgPSB0eXBlLmdl
dE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUo
KTsKICAgICAgICAgYm9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAgICAgCiAgICAgICAg
IGlmICh3cml0ZVR5cGUpCkBAIC0yNTYyLDcgKzI1ODcsNyBAQCBjb25zdCBDb25zdGFudFVuaW9u
ICpPdXRwdXRITFNMOjp3cml0ZUNvCiAgICAgICAgICAgICBvdXQgPDwgdHlwZVN0cmluZyh0eXBl
KSA8PCAiKCI7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
IGkrKywgY29uc3RVbmlvbisrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
IGkrKywgY29uc3RVbmlvbisrKQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnN0
VW5pb24tPmdldFR5cGUoKSkKICAgICAgICAgICAgIHsKQEAgLTI2NTUsNyArMjY4MCw3IEBAIFRT
dHJpbmcgT3V0cHV0SExTTDo6ZGVjb3JhdGVVbmlmb3JtKGNvbnMKIAogVFN0cmluZyBPdXRwdXRI
TFNMOjpkZWNvcmF0ZUZpZWxkKGNvbnN0IFRTdHJpbmcgJnN0cmluZywgY29uc3QgVFR5cGUgJnN0
cnVjdHVyZSkKIHsKLSAgICBpZiAoc3RydWN0dXJlLmdldFR5cGVOYW1lKCkuY29tcGFyZSgwLCAz
LCAiZ2xfIikgIT0gMCkKKyAgICBpZiAoc3RydWN0dXJlLmdldFN0cnVjdCgpLT5uYW1lKCkuY29t
cGFyZSgwLCAzLCAiZ2xfIikgIT0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBkZWNvcmF0ZShz
dHJpbmcpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9PdXRwdXRITFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL091dHB1dEhMU0wuaAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAkod29ya2luZyBjb3B5KQpAQCAt
OTcsNiArOTcsNyBAQCBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAg
ICAgYm9vbCBtVXNlc1BvaW50Q29vcmQ7CiAgICAgYm9vbCBtVXNlc0Zyb250RmFjaW5nOwogICAg
IGJvb2wgbVVzZXNQb2ludFNpemU7CisgICAgYm9vbCBtVXNlc0ZyYWdEZXB0aDsKICAgICBib29s
IG1Vc2VzWG9yOwogICAgIGJvb2wgbVVzZXNNb2QxOwogICAgIGJvb2wgbVVzZXNNb2QydjsKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNl
SGVscGVyLmNwcAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjIsNyArMjIsNyBA
QAogLy8gTG9vayBhdCBhICcuJyBmaWVsZCBzZWxlY3RvciBzdHJpbmcgYW5kIGNoYW5nZSBpdCBp
bnRvIG9mZnNldHMKIC8vIGZvciBhIHZlY3Rvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBh
cnNlVmVjdG9yRmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCB2ZWNTaXplLCBU
VmVjdG9yRmllbGRzJiBmaWVsZHMsIGludCBsaW5lKQorYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJz
ZVZlY3RvckZpZWxkcyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgdmVjU2l6ZSwgVFZl
Y3RvckZpZWxkcyYgZmllbGRzLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGZpZWxk
cy5udW0gPSAoaW50KSBjb21wU3RyaW5nLnNpemUoKTsKICAgICBpZiAoZmllbGRzLm51bSA+IDQp
IHsKQEAgLTExNSw3ICsxMTUsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmll
bGRzKGNvCiAvLyBMb29rIGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0cmluZyBhbmQgY2hhbmdl
IGl0IGludG8gb2Zmc2V0cwogLy8gZm9yIGEgbWF0cml4LgogLy8KLWJvb2wgVFBhcnNlQ29udGV4
dDo6cGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IG1hdFNp
emUsIFRNYXRyaXhGaWVsZHMmIGZpZWxkcywgaW50IGxpbmUpCitib29sIFRQYXJzZUNvbnRleHQ6
OnBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCBtYXRTaXpl
LCBUTWF0cml4RmllbGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAg
ZmllbGRzLndob2xlUm93ID0gZmFsc2U7CiAgICAgZmllbGRzLndob2xlQ29sID0gZmFsc2U7CkBA
IC0xNzUsMjIgKzE3NSwyNCBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnJlY292ZXIoKQogLy8KIC8v
IFVzZWQgYnkgZmxleC9iaXNvbiB0byBvdXRwdXQgYWxsIHN5bnRheCBhbmQgcGFyc2luZyBlcnJv
cnMuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0OjplcnJvcihUU291cmNlTG9jIGxvYywKK3ZvaWQg
VFBhcnNlQ29udGV4dDo6ZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvKQogewogICAgIHBw
OjpTb3VyY2VMb2NhdGlvbiBzcmNMb2M7Ci0gICAgRGVjb2RlU291cmNlTG9jKGxvYywgJnNyY0xv
Yy5maWxlLCAmc3JjTG9jLmxpbmUpOworICAgIHNyY0xvYy5maWxlID0gbG9jLmZpcnN0X2ZpbGU7
CisgICAgc3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKICAgICBkaWFnbm9zdGljcy53cml0
ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpFUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3JjTG9jLCByZWFzb24sIHRva2VuLCBleHRyYUluZm8pOwogCiB9CiAKLXZvaWQgVFBhcnNlQ29u
dGV4dDo6d2FybmluZyhUU291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29udGV4dDo6d2Fybmlu
Zyhjb25zdCBUU291cmNlTG9jJiBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBleHRyYUluZm8pIHsKICAgICBwcDo6U291cmNlTG9jYXRpb24g
c3JjTG9jOwotICAgIERlY29kZVNvdXJjZUxvYyhsb2MsICZzcmNMb2MuZmlsZSwgJnNyY0xvYy5s
aW5lKTsKKyAgICBzcmNMb2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOworICAgIHNyY0xvYy5saW5l
ID0gbG9jLmZpcnN0X2xpbmU7CiAgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9z
dGljczo6V0FSTklORywKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFzb24s
IHRva2VuLCBleHRyYUluZm8pOwogfQpAQCAtMjAzLDcgKzIwNSw3IEBAIHZvaWQgVFBhcnNlQ29u
dGV4dDo6dHJhY2UoY29uc3QgY2hhciogc3QKIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9y
IGFsbCBwbGFjZXMgYXNzaWdubWVudHMgZG9uJ3Qgd29yay4KIC8vCi12b2lkIFRQYXJzZUNvbnRl
eHQ6OmFzc2lnbkVycm9yKGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBU
U3RyaW5nIHJpZ2h0KQordm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcihjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0
KQogewogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUlu
Zm9TdHJlYW0gPDwgImNhbm5vdCBjb252ZXJ0IGZyb20gJyIgPDwgcmlnaHQgPDwgIicgdG8gJyIg
PDwgbGVmdCA8PCAiJyI7CkBAIC0yMTQsNyArMjE2LDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0Ojph
c3NpZ25FcnJvcihpbnQgbGluZQogLy8KIC8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxsIHBs
YWNlcyB1bmFyeSBvcGVyYXRpb25zIGRvbid0IHdvcmsuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0
Ojp1bmFyeU9wRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQp
Cit2b2lkIFRQYXJzZUNvbnRleHQ6OnVuYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKQogewogICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlv
biAnIiA8PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhbiBvcGVyYW5kIG9mIHR5cGUgIiA8
PCBvcGVyYW5kIApAQCAtMjI2LDcgKzIyOCw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dW5hcnlP
cEVycm9yKGludCBsaW4KIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBiaW5hcnkg
b3BlcmF0aW9ucyBkb24ndCB3b3JrLgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BF
cnJvcihpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdo
dCkKK3ZvaWQgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0g
PDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhIGxlZnQt
aGFuZCBvcGVyYW5kIG9mIHR5cGUgJyIgPDwgbGVmdCAKQEAgLTIzNSw3ICsyMzcsNyBAQCB2b2lk
IFRQYXJzZUNvbnRleHQ6OmJpbmFyeU9wRXJyb3IoaW50IGxpCiAgICAgZXJyb3IobGluZSwgIiB3
cm9uZyBvcGVyYW5kIHR5cGVzICIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7IAogfQogCi1ib29s
IFRQYXJzZUNvbnRleHQ6OnByZWNpc2lvbkVycm9yQ2hlY2soaW50IGxpbmUsIFRQcmVjaXNpb24g
cHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5cGUpeworYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNp
b25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9u
LCBUQmFzaWNUeXBlIHR5cGUpewogICAgIGlmICghY2hlY2tzUHJlY2lzaW9uRXJyb3JzKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgc3dpdGNoKCB0eXBlICl7CkBAIC0yNjMsNyArMjY1LDcg
QEAgYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKAogLy8KIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6bFZh
bHVlRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRlcm1UeXBlZCogbm9k
ZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKiBub2RlKQogewogICAgIFRJbnRl
cm1TeW1ib2wqIHN5bU5vZGUgPSBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsKICAgICBUSW50ZXJt
QmluYXJ5KiBiaW5hcnlOb2RlID0gbm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7CkBAIC0yODYsNyAr
Mjg4LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGludAogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRv
ciBwID0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuYmVnaW4oKTsgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgIT0gYWdnck5vZGUtPmdldFNlcXVlbmNl
KCkuZW5kKCk7IHArKykgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSAoKnApLT5n
ZXRBc1R5cGVkKCktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigp
LT5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gKCpwKS0+Z2V0
QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOwogICAgICAgICAg
ICAgICAgICAgICBvZmZzZXRbdmFsdWVdKys7ICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYg
KG9mZnNldFt2YWx1ZV0gPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5l
LCAiIGwtdmFsdWUgb2Ygc3dpenpsZSBjYW5ub3QgaGF2ZSBkdXBsaWNhdGUgY29tcG9uZW50cyIs
IG9wKTsKQEAgLTMxNyw3ICszMTksNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9y
Q2hlY2soaW50CiAgICAgY2FzZSBFdnFBdHRyaWJ1dGU6ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBt
b2RpZnkgYW4gYXR0cmlidXRlIjsgICBicmVhazsKICAgICBjYXNlIEV2cVVuaWZvcm06ICAgICAg
ICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHVuaWZvcm0iOyAgICAgIGJyZWFrOwogICAgIGNh
c2UgRXZxVmFyeWluZ0luOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGEgdmFyeWluZyI7
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFJbnB1dDogICAgICAgICAgbWVzc2FnZSA9ICJjYW4n
dCBtb2RpZnkgYW4gaW5wdXQiOyAgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb29yZDog
ICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBnbF9GcmFnQ29vcmQiOyAgIGJyZWFrOwogICAg
IGNhc2UgRXZxRnJvbnRGYWNpbmc6ICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX0Zyb250
RmFjaW5nIjsgYnJlYWs7CiAgICAgY2FzZSBFdnFQb2ludENvb3JkOiAgICAgbWVzc2FnZSA9ICJj
YW4ndCBtb2RpZnkgZ2xfUG9pbnRDb29yZCI7ICBicmVhazsKQEAgLTQwOSw3ICs0MTAsNyBAQCBi
b29sIFRQYXJzZUNvbnRleHQ6OmludGVnZXJFcnJvckNoZWNrKFRJCiAvLwogLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpnbG9iYWxF
cnJvckNoZWNrKGludCBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pCitib29s
IFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Ym9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2VuKQogewogICAgIGlmIChnbG9iYWwpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTQyOCw3ICs0MjksNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6
Omdsb2JhbEVycm9yQ2hlY2soaW50CiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBh
biBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JDaGVjayhpbnQg
bGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cmVz
ZXJ2ZWRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlk
ZW50aWZpZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc2VydmVkRXJyTXNnID0gInJl
c2VydmVkIGJ1aWx0LWluIG5hbWUiOwogICAgIGlmICghc3ltYm9sVGFibGUuYXRCdWlsdEluTGV2
ZWwoKSkgewpAQCAtNDY2LDcgKzQ2Nyw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRF
cnJvckNoZWNrKGkKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGlu
IGNvbnN0cnVjdGlvbi4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JD
aGVjayhpbnQgbGluZSwgVEludGVybU5vZGUqIG5vZGUsIFRGdW5jdGlvbiYgZnVuY3Rpb24sIFRP
cGVyYXRvciBvcCwgVFR5cGUqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9y
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogbm9kZSwgVEZ1
bmN0aW9uJiBmdW5jdGlvbiwgVE9wZXJhdG9yIG9wLCBUVHlwZSogdHlwZSkKIHsKICAgICAqdHlw
ZSA9IGZ1bmN0aW9uLmdldFJldHVyblR5cGUoKTsKIApAQCAtNDg3LDcgKzQ4OCw3IEBAIGJvb2wg
VFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWMKICAgICAvLyBhZ2FpbiwgdGhlcmUg
aXMgYW4gZXh0cmEgYXJndW1lbnQsIHNvICdvdmVyZnVsbCcgd2lsbCBiZWNvbWUgdHJ1ZS4KICAg
ICAvLwogCi0gICAgaW50IHNpemUgPSAwOworICAgIHNpemVfdCBzaXplID0gMDsKICAgICBib29s
IGNvbnN0VHlwZSA9IHRydWU7CiAgICAgYm9vbCBmdWxsID0gZmFsc2U7CiAgICAgYm9vbCBvdmVy
RnVsbCA9IGZhbHNlOwpAQCAtNTM0LDcgKzUzNSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29u
c3RydWN0b3JFcnJvckNoZWMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAg
IGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXkoKSAmJiBpbnQo
dHlwZS0+Z2V0U3RydWN0KCktPnNpemUoKSkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSB7
CisgICAgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgpICYm
IGludCh0eXBlLT5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCkuc2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQ
YXJhbUNvdW50KCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgIk51bWJlciBvZiBjb25zdHJ1Y3Rv
ciBwYXJhbWV0ZXJzIGRvZXMgbm90IG1hdGNoIHRoZSBudW1iZXIgb2Ygc3RydWN0dXJlIGZpZWxk
cyIsICJjb25zdHJ1Y3RvciIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC01Njgs
NyArNTY5LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlYwogLy8K
IC8vIHJldHVybnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCiAvLwotYm9vbCBUUGFyc2VDb250
ZXh0Ojp2b2lkRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgVFB1YmxpY1R5cGUmIHB1YlR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFRQdWJsaWNUeXBlJiBwdWJUeXBlKQogewogICAgIGlmIChwdWJUeXBlLnR5cGUgPT0g
RWJ0Vm9pZCkgewogICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9p
ZCciLCBpZGVudGlmaWVyLmNfc3RyKCkpOwpAQCAtNTgyLDcgKzU4Myw3IEBAIGJvb2wgVFBhcnNl
Q29udGV4dDo6dm9pZEVycm9yQ2hlY2soaW50IGwKIC8vCiAvLyByZXR1cm5zIHRydWUgaW4gY2Fz
ZSBvZiBhbiBlcnJvcgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soaW50
IGxpbmUsIGNvbnN0IFRJbnRlcm1UeXBlZCogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Ym9v
bEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEludGVybVR5cGVkKiB0
eXBlKQogewogICAgIGlmICh0eXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRCb29sIHx8IHR5cGUt
PmlzQXJyYXkoKSB8fCB0eXBlLT5pc01hdHJpeCgpIHx8IHR5cGUtPmlzVmVjdG9yKCkpIHsKICAg
ICAgICAgZXJyb3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3RlZCIsICIiKTsKQEAg
LTU5Niw3ICs1OTcsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGludCBs
CiAvLwogLy8gcmV0dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1ib29sIFRQYXJz
ZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5
cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSkKIHsKICAgICBpZiAocFR5cGUudHlwZSAh
PSBFYnRCb29sIHx8IHBUeXBlLmFycmF5IHx8IHBUeXBlLm1hdHJpeCB8fCAocFR5cGUuc2l6ZSA+
IDEpKSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJib29sZWFuIGV4cHJlc3Npb24gZXhwZWN0ZWQi
LCAiIik7CkBAIC02MDYsNyArNjA3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JD
aGVjayhpbnQgbAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0Ojpz
YW1wbGVyRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25z
dCBjaGFyKiByZWFzb24pCitib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hh
ciogcmVhc29uKQogewogICAgIGlmIChwVHlwZS50eXBlID09IEVidFN0cnVjdCkgewogICAgICAg
ICBpZiAoY29udGFpbnNTYW1wbGVyKCpwVHlwZS51c2VyRGVmKSkgewpAQCAtNjI1LDcgKzYyNiw3
IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2soaW4KICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVj
ayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0
OjpzdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0
IFRQdWJsaWNUeXBlJiBwVHlwZSkKIHsKICAgICBpZiAoKHBUeXBlLnF1YWxpZmllciA9PSBFdnFW
YXJ5aW5nSW4gfHwgcFR5cGUucXVhbGlmaWVyID09IEV2cVZhcnlpbmdPdXQgfHwgcFR5cGUucXVh
bGlmaWVyID09IEV2cUF0dHJpYnV0ZSkgJiYKICAgICAgICAgcFR5cGUudHlwZSA9PSBFYnRTdHJ1
Y3QpIHsKQEAgLTY0MCw3ICs2NDEsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxp
ZmllckVycm9yCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBh
cmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwg
Y29uc3QgVFR5cGUmIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBj
b25zdCBUVHlwZSYgdHlwZSkKIHsKICAgICBpZiAoKHF1YWxpZmllciA9PSBFdnFPdXQgfHwgcXVh
bGlmaWVyID09IEV2cUluT3V0KSAmJiAKICAgICAgICAgICAgICB0eXBlLmdldEJhc2ljVHlwZSgp
ICE9IEVidFN0cnVjdCAmJiBJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpIHsKQEAgLTY1
Nyw5ICs2NTgsOSBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxlcihUVHlwCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0
U3RydWN0KSB7Ci0gICAgICAgIFRUeXBlTGlzdCYgc3RydWN0dXJlID0gKnR5cGUuZ2V0U3RydWN0
KCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3RydWN0dXJlLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpzdHJ1Y3R1cmVbaV0u
dHlwZSkpCisgICAgICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0
KCktPmZpZWxkcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxk
cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxlcigqZmllbGRz
W2ldLT50eXBlKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAg
ICAgfQpAQCAtNjcyLDcgKzY3Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29udGFpbnNTYW1w
bGVyKFRUeXAKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8K
LWJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVy
bVR5cGVkKiBleHByLCBpbnQmIHNpemUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybVR5cGVkKiBleHByLCBpbnQm
IHNpemUpCiB7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIGNvbnN0YW50ID0gZXhwci0+Z2V0
QXNDb25zdGFudFVuaW9uKCk7CiAgICAgaWYgKGNvbnN0YW50ID09IDAgfHwgY29uc3RhbnQtPmdl
dEJhc2ljVHlwZSgpICE9IEVidEludCkgewpAQCAtNjgwLDcgKzY4MSw3IEBAIGJvb2wgVFBhcnNl
Q29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjaygKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgc2l6ZSA9IGNvbnN0YW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29u
c3QoKTsKKyAgICBzaXplID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgIGlmIChzaXpl
IDw9IDApIHsKICAgICAgICAgZXJyb3IobGluZSwgImFycmF5IHNpemUgbXVzdCBiZSBhIHBvc2l0
aXZlIGludGVnZXIiLCAiIik7CkBAIC02OTYsNyArNjk3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjphcnJheVNpemVFcnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBh
biBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVj
ayhpbnQgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlR
dWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5
cGUpCiB7CiAgICAgaWYgKCh0eXBlLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpIHx8ICh0eXBl
LnF1YWxpZmllciA9PSBFdnFDb25zdCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBk
ZWNsYXJlIGFycmF5cyBvZiB0aGlzIHF1YWxpZmllciIsIFRUeXBlKHR5cGUpLmdldENvbXBsZXRl
U3RyaW5nKCkuY19zdHIoKSk7CkBAIC03MTEsNyArNzEyLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjphcnJheVF1YWxpZmllckVycm9yQwogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBh
biBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soaW50
IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKIHsKICAg
ICAvLwogICAgIC8vIENhbiB0aGUgdHlwZSBiZSBhbiBhcnJheT8KQEAgLTczMiw3ICs3MzMsNyBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soCiAvLwogLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFy
cmF5RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUg
dHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJy
b3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVi
bGljVHlwZSB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICAvLwogICAgIC8vIERv
bid0IGNoZWNrIGZvciByZXNlcnZlZCB3b3JkIHVzZSB1bnRpbCBhZnRlciB3ZSBrbm93IGl0J3Mg
bm90IGluIHRoZSBzeW1ib2wgdGFibGUsCkBAIC03NzcsMTYgKzc3OCw2IEBAIGJvb2wgVFBhcnNl
Q29udGV4dDo6YXJyYXlFcnJvckNoZWNrKGludCAKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAKLSAgICAgICAgVFR5cGUqIHQgPSB2YXJpYWJsZS0+Z2V0QXJyYXlJbmZvcm1h
dGlvblR5cGUoKTsKLSAgICAgICAgd2hpbGUgKHQgIT0gMCkgewotICAgICAgICAgICAgaWYgKHQt
PmdldE1heEFycmF5U2l6ZSgpID4gdHlwZS5hcnJheVNpemUpIHsKLSAgICAgICAgICAgICAgICBl
cnJvcihsaW5lLCAiaGlnaGVyIGluZGV4IHZhbHVlIGFscmVhZHkgdXNlZCBmb3IgdGhlIGFycmF5
IiwgaWRlbnRpZmllci5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHQtPnNldEFycmF5U2l6ZSh0eXBlLmFycmF5U2l6ZSk7
Ci0gICAgICAgICAgICB0ID0gdC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKTsKLSAgICAgICAg
fQotCiAgICAgICAgIGlmICh0eXBlLmFycmF5U2l6ZSkKICAgICAgICAgICAgIHZhcmlhYmxlLT5n
ZXRUeXBlKCkuc2V0QXJyYXlTaXplKHR5cGUuYXJyYXlTaXplKTsKICAgICB9IApAQCAtNzk3LDU2
ICs3ODgsMTIgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheUVycm9yQ2hlY2soaW50IAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNldE1heFNpemUo
VEludGVybVN5bWJvbCAqbm9kZSwgVFR5cGUqIHR5cGUsIGludCBzaXplLCBib29sIHVwZGF0ZUZs
YWcsIFRTb3VyY2VMb2MgbGluZSkKLXsKLSAgICBib29sIGJ1aWx0SW4gPSBmYWxzZTsKLSAgICBU
U3ltYm9sKiBzeW1ib2wgPSBzeW1ib2xUYWJsZS5maW5kKG5vZGUtPmdldFN5bWJvbCgpLCAmYnVp
bHRJbik7Ci0gICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICIgdW5k
ZWNsYXJlZCBpZGVudGlmaWVyIiwgbm9kZS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gc3RhdGljX2Nh
c3Q8VFZhcmlhYmxlKj4oc3ltYm9sKTsKLQotICAgIHR5cGUtPnNldEFycmF5SW5mb3JtYXRpb25U
eXBlKHZhcmlhYmxlLT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpKTsKLSAgICB2YXJpYWJsZS0+
dXBkYXRlQXJyYXlJbmZvcm1hdGlvblR5cGUodHlwZSk7Ci0KLSAgICAvLyBzcGVjaWFsIGNhc2lu
ZyB0byB0ZXN0IGluZGV4IHZhbHVlIG9mIGdsX0ZyYWdEYXRhLiBJZiB0aGUgYWNjZXNzZWQgaW5k
ZXggaXMgPj0gZ2xfTWF4RHJhd0J1ZmZlcnMKLSAgICAvLyBpdHMgYW4gZXJyb3IKLSAgICBpZiAo
bm9kZS0+Z2V0U3ltYm9sKCkgPT0gImdsX0ZyYWdEYXRhIikgewotICAgICAgICBUU3ltYm9sKiBm
cmFnRGF0YSA9IHN5bWJvbFRhYmxlLmZpbmQoImdsX01heERyYXdCdWZmZXJzIiwgJmJ1aWx0SW4p
OwotICAgICAgICBBU1NFUlQoZnJhZ0RhdGEpOwotCi0gICAgICAgIGludCBmcmFnRGF0YVZhbHVl
ID0gc3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oZnJhZ0RhdGEpLT5nZXRDb25zdFBvaW50ZXIoKVsw
XS5nZXRJQ29uc3QoKTsKLSAgICAgICAgaWYgKGZyYWdEYXRhVmFsdWUgPD0gc2l6ZSkgewotICAg
ICAgICAgICAgZXJyb3IobGluZSwgIiIsICJbIiwgImdsX0ZyYWdEYXRhIGNhbiBvbmx5IGhhdmUg
YSBtYXggYXJyYXkgc2l6ZSBvZiB1cCB0byBnbF9NYXhEcmF3QnVmZmVycyIpOwotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyB3ZSBkb250IHdhbnQg
dG8gdXBkYXRlIHRoZSBtYXhBcnJheVNpemUgd2hlbiB0aGlzIGZsYWcgaXMgbm90IHNldCwgd2Ug
anVzdCB3YW50IHRvIGluY2x1ZGUgdGhpcyAKLSAgICAvLyBub2RlIHR5cGUgaW4gdGhlIGNoYWlu
IG9mIG5vZGUgdHlwZXMgc28gdGhhdCBpdHMgdXBkYXRlZCB3aGVuIGEgaGlnaGVyIG1heEFycmF5
U2l6ZSBjb21lcyBpbi4KLSAgICBpZiAoIXVwZGF0ZUZsYWcpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHNpemUrKzsKLSAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldE1heEFycmF5U2l6
ZShzaXplKTsKLSAgICB0eXBlLT5zZXRNYXhBcnJheVNpemUoc2l6ZSk7Ci0gICAgVFR5cGUqIHR0
ID0gdHlwZTsKLQotICAgIHdoaWxlKHR0LT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpICE9IDAp
IHsKLSAgICAgICAgdHQgPSB0dC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKTsKLSAgICAgICAg
dHQtPnNldE1heEFycmF5U2l6ZShzaXplKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KIC8vCiAvLyBFbmZvcmNlIG5vbi1pbml0aWFsaXplciB0eXBlL3F1YWxpZmllciBydWxlcy4K
IC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBh
cnNlQ29udGV4dDo6bm9uSW5pdENvbnN0RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRl
bnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpCitib29sIFRQYXJzZUNvbnRl
eHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmlu
ZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpCiB7CiAgICAgaWYg
KHR5cGUucXVhbGlmaWVyID09IEV2cUNvbnN0KQogICAgIHsKQEAgLTg3OCw3ICs4MjUsNyBAQCBi
b29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlCiAvLwogLy8gUmV0dXJucyB0
cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6Om5vbklu
aXRFcnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYg
dHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQ
dWJsaWNUeXBlJiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICBpZiAocmVzZXJ2
ZWRFcnJvckNoZWNrKGxpbmUsIGlkZW50aWZpZXIpKQogICAgICAgICByZWNvdmVyKCk7CkBAIC04
OTgsNyArODQ1LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhpbgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJhbUVycm9yQ2hl
Y2soaW50IGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVhbGlm
aWVyLCBUVHlwZSogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBh
cmFtUXVhbGlmaWVyLCBUVHlwZSogdHlwZSkKIHsgICAgCiAgICAgaWYgKHF1YWxpZmllciAhPSBF
dnFDb25zdCAmJiBxdWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5KSB7CiAgICAgICAgIGVycm9yKGxp
bmUsICJxdWFsaWZpZXIgbm90IGFsbG93ZWQgb24gZnVuY3Rpb24gcGFyYW1ldGVyIiwgZ2V0UXVh
bGlmaWVyU3RyaW5nKHF1YWxpZmllcikpOwpAQCAtOTE3LDcgKzg2NCw3IEBAIGJvb2wgVFBhcnNl
Q29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGludCAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgVFBhcnNlQ29udGV4dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0
cmluZyYgZXh0ZW5zaW9uKQorYm9vbCBUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAg
ICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZp
b3IoKTsKICAgICBURXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBleHRC
ZWhhdmlvci5maW5kKGV4dGVuc2lvbi5jX3N0cigpKTsKQEAgLTk0NSwyMCArODkyLDYgQEAgYm9v
bCBUUGFyc2VDb250ZXh0OjpzdXBwb3J0c0V4dGVuc2lvbihjbwogICAgIHJldHVybiAoaXRlciAh
PSBleHRiZWhhdmlvci5lbmQoKSk7CiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6aGFuZGxlRXh0
ZW5zaW9uRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBleHROYW1lLCBjb25zdCBjaGFy
KiBiZWhhdmlvcikKLXsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwotICAgIERlY29kZVNv
dXJjZUxvYyhsaW5lLCAmbG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGlyZWN0aXZlSGFuZGxl
ci5oYW5kbGVFeHRlbnNpb24obG9jLCBleHROYW1lLCBiZWhhdmlvcik7Ci19Ci0KLXZvaWQgVFBh
cnNlQ29udGV4dDo6aGFuZGxlUHJhZ21hRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBjaGFyKiB2YWx1ZSkKLXsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwot
ICAgIERlY29kZVNvdXJjZUxvYyhsaW5lLCAmbG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGly
ZWN0aXZlSGFuZGxlci5oYW5kbGVQcmFnbWEobG9jLCBuYW1lLCB2YWx1ZSk7Ci19Ci0KIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwogLy8KIC8vIE5vbi1FcnJvcnMuCkBAIC05NzAsNyArOTAzLDcg
QEAgdm9pZCBUUGFyc2VDb250ZXh0OjpoYW5kbGVQcmFnbWFEaXJlY3RpdgogLy8KIC8vIFJldHVy
biB0aGUgZnVuY3Rpb24gc3ltYm9sIGlmIGZvdW5kLCBvdGhlcndpc2UgMC4KIC8vCi1jb25zdCBU
RnVuY3Rpb24qIFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9u
KiBjYWxsLCBib29sICpidWlsdEluKQorY29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0Ojpm
aW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBib29s
ICpidWlsdEluKQogewogICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hl
Y2sgd2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgogICAgIC8vIGhpZGRlbiBieSBh
IHZhcmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgpAQCAtOTkyLDExICs5MjUsMzIgQEAg
Y29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuYwogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBURnVuY3Rpb24qPihzeW1ib2wpOwogfQogCitib29sIFRQYXJzZUNvbnRl
eHQ6OmlzVmFyaWFibGVCdWlsdEluKGNvbnN0IFRWYXJpYWJsZSogdmFyKQoreworICAgIGJvb2wg
YnVpbHRJbiA9IGZhbHNlOworICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8g
Y2hlY2sgd2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgorICAgIC8vIGhpZGRlbiBi
eSBhIHZhcmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgorICAgIGNvbnN0IFRTeW1ib2wq
IHN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQodmFyLT5nZXROYW1lKCksICZidWlsdEluKTsKKyAg
ICBpZiAoc3ltYm9sID09IDApIHsKKyAgICAgICAgc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZCh2
YXItPmdldE1hbmdsZWROYW1lKCksICZidWlsdEluKTsKKyAgICB9CisKKyAgICBpZiAoc3ltYm9s
ID09IDApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghc3ltYm9s
LT5pc1ZhcmlhYmxlKCkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiBidWlsdEluOworfQorCiAvLwogLy8gSW5pdGlhbGl6ZXJzIHNob3cgdXAgaW4gc2V2ZXJh
bCBwbGFjZXMgaW4gdGhlIGdyYW1tYXIuICBIYXZlIG9uZSBzZXQgb2YKIC8vIGNvZGUgdG8gaGFu
ZGxlIHRoZW0gaGVyZS4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXpl
cihUU291cmNlTG9jIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlw
ZSwgCitib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbml0aWFs
aXplciwgVEludGVybU5vZGUqJiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUqIHZhcmlhYmxlKQogewog
ICAgIFRUeXBlIHR5cGUgPSBUVHlwZShwVHlwZSk7CkBAIC0xMDQ4LDEzICsxMDAyLDcgQEAgYm9v
bCBUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIoVAogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50
VW5pb24oKSkgeyAKLSAgICAgICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB2YXJp
YWJsZS0+Z2V0Q29uc3RQb2ludGVyKCk7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlLmdldE9iamVj
dFNpemUoKSA9PSAxICYmIHR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7Ci0gICAg
ICAgICAgICAgICAgKnVuaW9uQXJyYXkgPSAoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlv
bigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKVswXTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgdmFyaWFibGUtPnNoYXJlQ29uc3RQb2ludGVyKGluaXRpYWxpemVyLT5n
ZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSk7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICB2YXJpYWJsZS0+c2hhcmVDb25zdFBvaW50ZXIoaW5pdGlhbGl6ZXIt
PmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKTsKICAgICAgICAg
fSBlbHNlIGlmIChpbml0aWFsaXplci0+Z2V0QXNTeW1ib2xOb2RlKCkpIHsKICAgICAgICAgICAg
IGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQoaW5pdGlhbGl6ZXItPmdl
dEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKSk7CiAgICAgICAgICAgICBjb25zdCBUVmFyaWFi
bGUqIHRWYXIgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOwpAQCAtMTEw
OCwxNiArMTA1NiwxNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QoVElu
CiAvLwogLy8gUmV0dXJucyAwIGZvciBhbiBlcnJvciBvciB0aGUgY29uc3RydWN0ZWQgbm9kZSAo
YWdncmVnYXRlIG9yIHR5cGVkKSBmb3Igbm8gZXJyb3IuCiAvLwotVEludGVybVR5cGVkKiBUUGFy
c2VDb250ZXh0OjphZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFR5cGUq
IHR5cGUsIFRPcGVyYXRvciBvcCwgVEZ1bmN0aW9uKiBmbkNhbGwsIFRTb3VyY2VMb2MgbGluZSkK
K1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUq
IG5vZGUsIGNvbnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRGdW5jdGlvbiogZm5DYWxs
LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGlmIChub2RlID09IDApCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgVEludGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUgPSBub2RlLT5nZXRB
c0FnZ3JlZ2F0ZSgpOwogICAgIAotICAgIFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVy
VHlwZXM7CisgICAgVEZpZWxkTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyRmllbGRzOwogICAg
IGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgIG1lbWJlclR5cGVzID0gdHlw
ZS0+Z2V0U3RydWN0KCktPmJlZ2luKCk7CisgICAgICAgIG1lbWJlckZpZWxkcyA9IHR5cGUtPmdl
dFN0cnVjdCgpLT5maWVsZHMoKS5iZWdpbigpOwogICAgIAogICAgIFRUeXBlIGVsZW1lbnRUeXBl
ID0gKnR5cGU7CiAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKQEAgLTExMzksNyArMTA4Nyw3IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5
cGUtPmlzQXJyYXkoKSkKICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9k
ZSwgJmVsZW1lbnRUeXBlLCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKICAgICAgICAgZWxz
ZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0KQotICAgICAgICAgICAgbmV3Tm9kZSA9IGNv
bnN0cnVjdFN0cnVjdChub2RlLCAoKm1lbWJlclR5cGVzKS50eXBlLCAxLCBub2RlLT5nZXRMaW5l
KCksIGZhbHNlKTsKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwg
KCptZW1iZXJGaWVsZHMpLT50eXBlKCksIDEsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBv
cCwgbm9kZSwgbm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7CiAKQEAgLTExNzAsNyArMTExOCw3IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5
cGUtPmlzQXJyYXkoKSkKICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAs
ICZlbGVtZW50VHlwZSwgcGFyYW1Db3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRydWUpOwogICAg
ICAgICBlbHNlIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgICAgICBuZXdO
b2RlID0gY29uc3RydWN0U3RydWN0KCpwLCAobWVtYmVyVHlwZXNbcGFyYW1Db3VudF0pLnR5cGUs
IHBhcmFtQ291bnQrMSwgbm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG5ld05v
ZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsIG1lbWJlckZpZWxkc1twYXJhbUNvdW50XS0+dHlwZSgp
LCBwYXJhbUNvdW50KzEsIG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCAqcCwgbm9kZS0+
Z2V0TGluZSgpLCB0cnVlKTsKICAgICAgICAgCkBAIC0xMjE2LDcgKzExNjQsNyBAQCBUSW50ZXJt
VHlwZWQqIFRQYXJzZUNvbnRleHQ6OmZvbGRDb25zdENvCiAvLwogLy8gUmV0dXJucyAwIGZvciBh
biBlcnJvciBvciB0aGUgY29uc3RydWN0ZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJz
ZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBv
cCwgVEludGVybU5vZGUqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSwgYm9vbCBzdWJzZXQpCitUSW50
ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5
cGUsIFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUsIGJvb2wgc3Vic2V0KQogewogICAgIFRJbnRlcm1UeXBlZCogbmV3Tm9kZTsKICAgICBUT3Bl
cmF0b3IgYmFzaWNPcDsKQEAgLTEyNzgsNyArMTIyNiw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNl
Q29udGV4dDo6Y29uc3RydWN0QnUKIC8vCiAvLyBSZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9yIHRo
ZSBpbnB1dCBub2RlIGl0c2VsZiBpZiB0aGUgZXhwZWN0ZWQgYW5kIHRoZSBnaXZlbiBwYXJhbWV0
ZXIgdHlwZXMgbWF0Y2guCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1
Y3RTdHJ1Y3QoVEludGVybU5vZGUqIG5vZGUsIFRUeXBlKiB0eXBlLCBpbnQgcGFyYW1Db3VudCwg
VFNvdXJjZUxvYyBsaW5lLCBib29sIHN1YnNldCkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4
dDo6Y29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiBub2RlLCBUVHlwZSogdHlwZSwgaW50IHBh
cmFtQ291bnQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQogewogICAgIGlm
ICgqdHlwZSA9PSBub2RlLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKSkgewogICAgICAgICBpZiAo
c3Vic2V0KQpAQCAtMTMwNSw3ICsxMjUzLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0
Ojpjb25zdHJ1Y3RTdAogLy8gbm9kZSBvciBpdCBjb3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRy
ZWUgcmVwcmVzZW50YXRpb24gb2YgYWNjZXNzaW5nIGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVj
dHVyZSBvciBjb2x1bW4gb2YgCiAvLyBhIGNvbnN0YW50IG1hdHJpeC4KIC8vCi1USW50ZXJtVHlw
ZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVs
ZHMsIFRJbnRlcm1UeXBlZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBU
UGFyc2VDb250ZXh0OjphZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBU
SW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVy
bVR5cGVkKiB0eXBlZE5vZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFu
dE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTEzMTMsNyArMTI2MSw2IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVu
aW9uICp1bmlvbkFycmF5OwogICAgIGlmICh0ZW1wQ29uc3RhbnROb2RlKSB7CiAgICAgICAgIHVu
aW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAg
ICAgICBBU1NFUlQodW5pb25BcnJheSk7CiAKICAgICAgICAgaWYgKCF1bmlvbkFycmF5KSB7CiAg
ICAgICAgICAgICByZXR1cm4gbm9kZTsKQEAgLTEzMjgsNyArMTI3NSw3IEBAIFRJbnRlcm1UeXBl
ZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bZmllbGRzLm51bV07CiAKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGZpZWxkcy5udW07IGkrKykgewotICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0g
Pj0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSkgeworICAgICAgICBpZiAoZmllbGRz
Lm9mZnNldHNbaV0gPj0gbm9kZS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkpIHsKICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAgIGV4
dHJhSW5mb1N0cmVhbSA8PCAidmVjdG9yIGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIg
PDwgZmllbGRzLm9mZnNldHNbaV0gPDwgIiciOwogICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0
cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwpAQCAtMTM1MCw3ICsxMjk3LDcgQEAgVElu
dGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFZlYwogLy8gdG8gdGhlIGZ1bmN0aW9u
IGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChtWzBdIHdoZXJlIG0gaXMgYSBjb25zdGFu
dCBtYXRyaXgpdGhhdCByZXByZXNlbnRzIGEgCiAvLyBjb25zdGFudCBtYXRyaXggb3IgaXQgY291
bGQgYmUgdGhlIHRyZWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnN0YW50IG1hdHJpeCAocy5t
MVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RNYXRyaXhOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVk
KiBub2RlLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFk
ZENvbnN0TWF0cml4Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNv
dXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZTsKICAgICBUSW50
ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRV
bmlvbigpOwpAQCAtMTM4NSw3ICsxMzMyLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0
OjphZGRDb25zdE1hdAogLy8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJv
bCBub2RlIChhWzBdIHdoZXJlIGEgaXMgYSBjb25zdGFudCBhcnJheSl0aGF0IHJlcHJlc2VudHMg
YSAKIC8vIGNvbnN0YW50IGFycmF5IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0
aW9uIG9mIHRoZSBjb25zdGFudCBhcnJheSAocy5hMVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQg
c3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJh
eU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJ
bnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBU
SW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVy
bVR5cGVkKiB0eXBlZE5vZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFu
dE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTE0MDEsOSArMTM0OCw4IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnIKICAgICAgICAgaW5kZXgg
PSAwOwogICAgIH0KIAotICAgIGludCBhcnJheUVsZW1lbnRTaXplID0gYXJyYXlFbGVtZW50VHlw
ZS5nZXRPYmplY3RTaXplKCk7Ci0KICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgeworICAgICAg
ICAgc2l6ZV90IGFycmF5RWxlbWVudFNpemUgPSBhcnJheUVsZW1lbnRUeXBlLmdldE9iamVjdFNp
emUoKTsKICAgICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnRO
b2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwogICAgICAgICAgdHlwZWROb2RlID0gaW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24oJnVuaW9uQXJyYXlbYXJyYXlFbGVtZW50U2l6ZSAqIGlu
ZGV4XSwgdGVtcENvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsKICAgICB9IGVsc2UgewpA
QCAtMTQyMiwyMiArMTM2OCwyMSBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENv
bnN0QXJyCiAvLyBJZiB0aGVyZSBpcyBhbiBlbWJlZGRlZC9uZXN0ZWQgc3RydWN0LCBpdCBhcHBy
b3ByaWF0ZWx5IGNhbGxzIGFkZENvbnN0U3RydWN0TmVzdGVkIG9yIGFkZENvbnN0U3RydWN0RnJv
bUFnZ3IKIC8vIGZ1bmN0aW9uIGFuZCByZXR1cm5zIHRoZSBwYXJzZS10cmVlIHdpdGggdGhlIHZh
bHVlcyBvZiB0aGUgZW1iZWRkZWQvbmVzdGVkIHN0cnVjdC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQ
YXJzZUNvbnRleHQ6OmFkZENvbnN0U3RydWN0KFRTdHJpbmcmIGlkZW50aWZpZXIsIFRJbnRlcm1U
eXBlZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0
OjphZGRDb25zdFN0cnVjdChUU3RyaW5nJiBpZGVudGlmaWVyLCBUSW50ZXJtVHlwZWQqIG5vZGUs
IGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7Ci0gICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMg
PSBub2RlLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgVEludGVybVR5cGVkICp0eXBlZE5v
ZGU7Ci0gICAgaW50IGluc3RhbmNlU2l6ZSA9IDA7Ci0gICAgdW5zaWduZWQgaW50IGluZGV4ID0g
MDsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdl
dEFzQ29uc3RhbnRVbmlvbigpOworICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IG5vZGUt
PmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICBmb3IgKCBpbmRleCA9IDA7
IGluZGV4IDwgZmllbGRzLT5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKCgqZmllbGRz
KVtpbmRleF0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gaWRlbnRpZmllcikgeworICAgIHNpemVf
dCBpbnN0YW5jZVNpemUgPSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBm
aWVsZHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChmaWVsZHNbaW5kZXhdLT5uYW1l
KCkgPT0gaWRlbnRpZmllcikgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0gKCpmaWVsZHMpW2luZGV4XS50eXBlLT5nZXRP
YmplY3RTaXplKCk7CisgICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0gZmllbGRzW2luZGV4XS0+
dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBUSW50ZXJt
VHlwZWQqIHR5cGVkTm9kZSA9IDA7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25z
dGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKICAgICBpZiAodGVtcENvbnN0
YW50Tm9kZSkgewogICAgICAgICAgQ29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHRlbXBDb25z
dGFudE5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAKQEAgLTE0NTIsNyArMTM5Nyw3IEBA
IFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RTdHIKICAgICByZXR1cm4gdHlw
ZWROb2RlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24o
aW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCitib29sIFRQYXJzZUNvbnRleHQ6
OmVudGVyU3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0
cmluZyYgaWRlbnRpZmllcikKIHsKICAgICArK3N0cnVjdE5lc3RpbmdMZXZlbDsKIApAQCAtMTQ3
OCwyMSArMTQyMywyMSBAQCBjb25zdCBpbnQga1dlYkdMTWF4U3RydWN0TmVzdGluZyA9IDQ7CiAK
IH0gIC8vIG5hbWVzcGFjZQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJv
ckNoZWNrKFRTb3VyY2VMb2MgbGluZSwgY29uc3QgVFR5cGUmIGZpZWxkVHlwZSkKK2Jvb2wgVFBh
cnNlQ29udGV4dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgY29uc3QgVEZpZWxkJiBmaWVsZCkKIHsKICAgICBpZiAoIWlzV2ViR0xCYXNlZFNwZWMoc2hh
ZGVyU3BlYykpIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChmaWVs
ZFR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7CisgICAgaWYgKGZpZWxkLnR5cGUo
KS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKICAgICAvLyBXZSdyZSBhbHJlYWR5IGluc2lkZSBhIHN0cnVjdHVyZSBkZWZpbml0
aW9uIGF0IHRoaXMgcG9pbnQsIHNvIGFkZAogICAgIC8vIG9uZSB0byB0aGUgZmllbGQncyBzdHJ1
Y3QgbmVzdGluZy4KLSAgICBpZiAoMSArIGZpZWxkVHlwZS5nZXREZWVwZXN0U3RydWN0TmVzdGlu
ZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgeworICAgIGlmICgxICsgZmllbGQudHlwZSgp
LT5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgewog
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJh
SW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGRUeXBlLmdl
dFR5cGVOYW1lKCkgCisgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0
cnVjdCB0eXBlICIgPDwgZmllbGQubmFtZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
IGV4Y2VlZHMgbWF4aW11bSBzdHJ1Y3QgbmVzdGluZyBvZiAiIDw8IGtXZWJHTE1heFN0cnVjdE5l
c3Rpbmc7CiAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5z
dHIoKTsKICAgICAgICAgZXJyb3IobGluZSwgIiIsICIiLCBleHRyYUluZm8uY19zdHIoKSk7Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VI
ZWxwZXIuaAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL1BhcnNlSGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMyw4IEBA
IHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKICAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zKG9wdGlv
bnMpLAogICAgICAgICAgICAgc291cmNlUGF0aChzb3VyY2VQYXRoKSwKICAgICAgICAgICAgIHRy
ZWVSb290KDApLAotICAgICAgICAgICAgbGV4QWZ0ZXJUeXBlKGZhbHNlKSwKICAgICAgICAgICAg
IGxvb3BOZXN0aW5nTGV2ZWwoMCksCiAgICAgICAgICAgICBzdHJ1Y3ROZXN0aW5nTGV2ZWwoMCks
Ci0gICAgICAgICAgICBpblR5cGVQYXJlbihmYWxzZSksCiAgICAgICAgICAgICBjdXJyZW50RnVu
Y3Rpb25UeXBlKE5VTEwpLAogICAgICAgICAgICAgZnVuY3Rpb25SZXR1cm5zVmFsdWUoZmFsc2Up
LAogICAgICAgICAgICAgY2hlY2tzUHJlY2lzaW9uRXJyb3JzKGNoZWNrc1ByZWNFcnJvcnMpLApA
QCAtNTEsMTYgKzQ5LDEzIEBAIHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKICAgICBpbnQgY29tcGls
ZU9wdGlvbnM7CiAgICAgY29uc3QgY2hhciogc291cmNlUGF0aDsgICAgICAvLyBQYXRoIG9mIHNv
dXJjZSBmaWxlIG9yIE5VTEwuCiAgICAgVEludGVybU5vZGUqIHRyZWVSb290OyAgICAgICAvLyBy
b290IG9mIHBhcnNlIHRyZWUgYmVpbmcgY3JlYXRlZAotICAgIGJvb2wgbGV4QWZ0ZXJUeXBlOyAg
ICAgICAgICAgLy8gdHJ1ZSBpZiB3ZSd2ZSByZWNvZ25pemVkIGEgdHlwZSwgc28gY2FuIG9ubHkg
YmUgbG9va2luZyBmb3IgYW4gaWRlbnRpZmllcgogICAgIGludCBsb29wTmVzdGluZ0xldmVsOyAg
ICAgICAgLy8gMCBpZiBvdXRzaWRlIGFsbCBsb29wcwogICAgIGludCBzdHJ1Y3ROZXN0aW5nTGV2
ZWw7ICAgICAgLy8gaW5jcmVtZW50ZWQgd2hpbGUgcGFyc2luZyBhIHN0cnVjdCBkZWNsYXJhdGlv
bgotICAgIGJvb2wgaW5UeXBlUGFyZW47ICAgICAgICAgICAgLy8gdHJ1ZSBpZiBpbiBwYXJlbnRo
ZXNlcywgbG9va2luZyBvbmx5IGZvciBhbiBpZGVudGlmaWVyCiAgICAgY29uc3QgVFR5cGUqIGN1
cnJlbnRGdW5jdGlvblR5cGU7ICAvLyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRo
YXQncyBjdXJyZW50bHkgYmVpbmcgcGFyc2VkCiAgICAgYm9vbCBmdW5jdGlvblJldHVybnNWYWx1
ZTsgICAvLyB0cnVlIGlmIGEgbm9uLXZvaWQgZnVuY3Rpb24gaGFzIGEgcmV0dXJuCiAgICAgYm9v
bCBjaGVja3NQcmVjaXNpb25FcnJvcnM7ICAvLyB0cnVlIGlmIGFuIGVycm9yIHdpbGwgYmUgZ2Vu
ZXJhdGVkIHdoZW4gYSB2YXJpYWJsZSBpcyBkZWNsYXJlZCB3aXRob3V0IHByZWNpc2lvbiwgZXhw
bGljaXQgb3IgaW1wbGljaXQuCiAgICAgYm9vbCBmcmFnbWVudFByZWNpc2lvbkhpZ2g7ICAvLyB0
cnVlIGlmIGhpZ2hwIHByZWNpc2lvbiBpcyBzdXBwb3J0ZWQgaW4gdGhlIGZyYWdtZW50IGxhbmd1
YWdlLgogICAgIFRTdHJpbmcgSGFzaEVyck1zZzsKLSAgICBib29sIEFmdGVyRU9GOwogICAgIFRE
aWFnbm9zdGljcyBkaWFnbm9zdGljczsKICAgICBURGlyZWN0aXZlSGFuZGxlciBkaXJlY3RpdmVI
YW5kbGVyOwogICAgIHBwOjpQcmVwcm9jZXNzb3IgcHJlcHJvY2Vzc29yOwpAQCAtNjgsNzEgKzYz
LDY4IEBAIHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKIAogICAgIGludCBudW1FcnJvcnMoKSBjb25z
dCB7IHJldHVybiBkaWFnbm9zdGljcy5udW1FcnJvcnMoKTsgfQogICAgIFRJbmZvU2luayYgaW5m
b1NpbmsoKSB7IHJldHVybiBkaWFnbm9zdGljcy5pbmZvU2luaygpOyB9Ci0gICAgdm9pZCBlcnJv
cihUU291cmNlTG9jIGxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwK
KyAgICB2b2lkIGVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywgY29uc3QgY2hhciAqcmVhc29u
LCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5m
bz0iIik7Ci0gICAgdm9pZCB3YXJuaW5nKFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyKiByZWFz
b24sIGNvbnN0IGNoYXIqIHRva2VuLAorICAgIHZvaWQgd2FybmluZyhjb25zdCBUU291cmNlTG9j
JiBsb2MsIGNvbnN0IGNoYXIqIHJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCiAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5mbz0iIik7CiAgICAgdm9pZCB0cmFjZShjb25zdCBj
aGFyKiBzdHIpOwogICAgIHZvaWQgcmVjb3ZlcigpOwogCi0gICAgYm9vbCBwYXJzZVZlY3RvckZp
ZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBpbnQgbGlu
ZSk7Ci0gICAgYm9vbCBwYXJzZU1hdHJpeEZpZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IG1hdFNp
emUsIFRNYXRyaXhGaWVsZHMmLCBpbnQgbGluZSk7CisgICAgYm9vbCBwYXJzZVZlY3RvckZpZWxk
cyhjb25zdCBUU3RyaW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291
cmNlTG9jJiBsaW5lKTsKKyAgICBib29sIHBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcm
LCBpbnQgbWF0U2l6ZSwgVE1hdHJpeEZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpOwog
Ci0gICAgYm9vbCByZXNlcnZlZEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlk
ZW50aWZpZXIpOwotICAgIHZvaWQgYXNzaWduRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9w
LCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOwotICAgIHZvaWQgdW5hcnlPcEVycm9yKGlu
dCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKTsKLSAgICB2b2lkIGJpbmFy
eU9wRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcg
cmlnaHQpOwotICAgIGJvb2wgcHJlY2lzaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgVFByZWNpc2lv
biBwcmVjaXNpb24sIFRCYXNpY1R5cGUgdHlwZSk7Ci0gICAgYm9vbCBsVmFsdWVFcnJvckNoZWNr
KGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CisgICAgYm9vbCByZXNl
cnZlZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRl
bnRpZmllcik7CisgICAgdm9pZCBhc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBj
b25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKKyAgICB2b2lkIHVu
YXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmlu
ZyBvcGVyYW5kKTsKKyAgICB2b2lkIGJpbmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7CisgICAgYm9v
bCBwcmVjaXNpb25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24g
cHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5cGUpOworICAgIGJvb2wgbFZhbHVlRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CiAg
ICAgYm9vbCBjb25zdEVycm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlKTsKICAgICBib29sIGlu
dGVnZXJFcnJvckNoZWNrKFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgY2hhciogdG9rZW4pOwot
ICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhpbnQgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNo
YXIqIHRva2VuKTsKLSAgICBib29sIGNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQgbGluZSwgVElu
dGVybU5vZGUqLCBURnVuY3Rpb24mLCBUT3BlcmF0b3IsIFRUeXBlKik7Ci0gICAgYm9vbCBhcnJh
eVNpemVFcnJvckNoZWNrKGludCBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7
Ci0gICAgYm9vbCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIFRQdWJsaWNUeXBl
IHR5cGUpOwotICAgIGJvb2wgYXJyYXlUeXBlRXJyb3JDaGVjayhpbnQgbGluZSwgVFB1YmxpY1R5
cGUgdHlwZSk7Ci0gICAgYm9vbCBhcnJheUVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlk
ZW50aWZpZXIsIFRQdWJsaWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKLSAgICBi
b29sIHZvaWRFcnJvckNoZWNrKGludCwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRQdWJsaWNUeXBl
Jik7Ci0gICAgYm9vbCBib29sRXJyb3JDaGVjayhpbnQsIGNvbnN0IFRJbnRlcm1UeXBlZCopOwot
ICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soaW50LCBjb25zdCBUUHVibGljVHlwZSYpOwotICAgIGJv
b2wgc2FtcGxlckVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwg
Y29uc3QgY2hhciogcmVhc29uKTsKLSAgICBib29sIHN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
aW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSk7Ci0gICAgYm9vbCBwYXJhbWV0ZXJT
YW1wbGVyRXJyb3JDaGVjayhpbnQgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRU
eXBlJiB0eXBlKTsKLSAgICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRT
dHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KTsKLSAgICBi
b29sIG5vbkluaXRFcnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVi
bGljVHlwZSYgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOwotICAgIGJvb2wgcGFyYW1FcnJv
ckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1
YWxpZmllciwgVFR5cGUqIHR5cGUpOwotICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQg
bGluZSwgY29uc3QgVFN0cmluZyYpOworICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pOworICAgIGJv
b2wgY29uc3RydWN0b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1O
b2RlKiwgVEZ1bmN0aW9uJiwgVE9wZXJhdG9yLCBUVHlwZSopOworICAgIGJvb2wgYXJyYXlTaXpl
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGlu
dCYgc2l6ZSk7CisgICAgYm9vbCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBhcnJheVR5cGVFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOworICAgIGJvb2wg
YXJyYXlFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZp
ZXIsIFRQdWJsaWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHZv
aWRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFB1
YmxpY1R5cGUmKTsKKyAgICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBj
b25zdCBUSW50ZXJtVHlwZWQqKTsKKyAgICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmLCBjb25zdCBUUHVibGljVHlwZSYpOworICAgIGJvb2wgc2FtcGxlckVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBj
aGFyKiByZWFzb24pOworICAgIGJvb2wgc3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpOworICAgIGJvb2wgcGFy
YW1ldGVyU2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmll
ciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlJiB0eXBlKTsKKyAgICBib29sIG5vbkluaXRDb25zdEVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1
YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpOworICAgIGJvb2wgbm9uSW5pdEVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUm
IHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHBhcmFtRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBw
YXJhbVF1YWxpZmllciwgVFR5cGUqIHR5cGUpOworICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJik7CiAKKyAgICBjb25zdCBU
UHJhZ21hJiBwcmFnbWEoKSBjb25zdCB7IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLnByYWdtYSgp
OyB9CiAgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBleHRlbnNpb25CZWhhdmlvcigpIGNv
bnN0IHsgcmV0dXJuIGRpcmVjdGl2ZUhhbmRsZXIuZXh0ZW5zaW9uQmVoYXZpb3IoKTsgfQogICAg
IGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9uKTsKLSAgICB2b2lk
IGhhbmRsZUV4dGVuc2lvbkRpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogZXh0TmFtZSwg
Y29uc3QgY2hhciogYmVoYXZpb3IpOwotCi0gICAgY29uc3QgVFByYWdtYSYgcHJhZ21hKCkgY29u
c3QgeyByZXR1cm4gZGlyZWN0aXZlSGFuZGxlci5wcmFnbWEoKTsgfQotICAgIHZvaWQgaGFuZGxl
UHJhZ21hRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2
YWx1ZSk7CiAKICAgICBib29sIGNvbnRhaW5zU2FtcGxlcihUVHlwZSYgdHlwZSk7CiAgICAgYm9v
bCBhcmVBbGxDaGlsZENvbnN0KFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlKTsKLSAgICBjb25z
dCBURnVuY3Rpb24qIGZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBi
b29sICpidWlsdEluID0gMCk7Ci0gICAgYm9vbCBleGVjdXRlSW5pdGlhbGl6ZXIoVFNvdXJjZUxv
YyBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsCisgICAgY29u
c3QgVEZ1bmN0aW9uKiBmaW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0
aW9uKiBwZm5DYWxsLCBib29sICpidWlsdEluID0gMCk7CisgICAgYm9vbCBpc1ZhcmlhYmxlQnVp
bHRJbihjb25zdCBUVmFyaWFibGUqIHBWYXIpOworICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxpemVy
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
JiBwVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluaXRp
YWxpemVyLCBUSW50ZXJtTm9kZSomIGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFyaWFibGUgPSAw
KTsKLSAgICBib29sIGFycmF5U2V0TWF4U2l6ZShUSW50ZXJtU3ltYm9sKiwgVFR5cGUqLCBpbnQs
IGJvb2wsIFRTb3VyY2VMb2MpOwogCi0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdHJ1Y3RvcihU
SW50ZXJtTm9kZSosIGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBURnVuY3Rpb24qLCBUU291cmNl
TG9jKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0cnVjdG9yKFRJbnRlcm1Ob2RlKiwgY29u
c3QgVFR5cGUqLCBUT3BlcmF0b3IsIFRGdW5jdGlvbiosIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAg
ICBUSW50ZXJtVHlwZWQqIGZvbGRDb25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUqIGFn
Z3JOb2RlLCBjb25zdCBUVHlwZSYgdHlwZSk7Ci0gICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RT
dHJ1Y3QoVEludGVybU5vZGUqLCBUVHlwZSosIGludCwgVFNvdXJjZUxvYywgYm9vbCBzdWJzZXQp
OwotICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSosIFRPcGVy
YXRvciwgVEludGVybU5vZGUqLCBUU291cmNlTG9jLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVy
bVR5cGVkKiBhZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCos
IFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhOb2RlKGludCAs
IFRJbnRlcm1UeXBlZCosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RB
cnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSk7
Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJbnRlcm1UeXBl
ZCosIFRTb3VyY2VMb2MpOworICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0U3RydWN0KFRJbnRl
cm1Ob2RlKiwgVFR5cGUqLCBpbnQsIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7Cisg
ICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9y
LCBUSW50ZXJtTm9kZSosIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7CisgICAgVElu
dGVybVR5cGVkKiBhZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBl
ZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0TWF0cml4
Tm9kZShpbnQgLCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVy
bVR5cGVkKiBhZGRDb25zdEFycmF5Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwg
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSk7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVj
dChUU3RyaW5nJiAsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKIAogICAgIC8v
IFBlcmZvcm1zIGFuIGVycm9yIGNoZWNrIGZvciBlbWJlZGRlZCBzdHJ1Y3QgZGVjbGFyYXRpb25z
LgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbiBlcnJvciB3YXMgcmFpc2VkIGR1ZSB0byB0aGUg
ZGVjbGFyYXRpb24gb2YKICAgICAvLyB0aGlzIHN0cnVjdC4KLSAgICBib29sIGVudGVyU3RydWN0
RGVjbGFyYXRpb24oVFNvdXJjZUxvYyBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsK
KyAgICBib29sIGVudGVyU3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Y29uc3QgVFN0cmluZyYgaWRlbnRpZmllcik7CiAgICAgdm9pZCBleGl0U3RydWN0RGVjbGFyYXRp
b24oKTsKIAotICAgIGJvb2wgc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soVFNvdXJjZUxvYyBsaW5l
LCBjb25zdCBUVHlwZSYgZmllbGRUeXBlKTsKKyAgICBib29sIHN0cnVjdE5lc3RpbmdFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQpOwogfTsKIAog
aW50IFBhUGFyc2VTdHJpbmdzKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5n
W10sIGNvbnN0IGludCBsZW5ndGhbXSwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Qb29sQWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuY3BwCShyZXZpc2lvbiAxNTI1OTUpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI4LDI0ICsyMjgsMjcgQEAgdm9pZCBUUG9vbEFsbG9jYXRvcjo6cG9wQWxs
KCkKIAogdm9pZCogVFBvb2xBbGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBudW1CeXRlcykKIHsK
KyAgICAvLworICAgIC8vIEp1c3Qga2VlcCBzb21lIGludGVyZXN0aW5nIHN0YXRpc3RpY3MuCisg
ICAgLy8KKyAgICArK251bUNhbGxzOworICAgIHRvdGFsQnl0ZXMgKz0gbnVtQnl0ZXM7CisKICAg
ICAvLyBJZiB3ZSBhcmUgdXNpbmcgZ3VhcmQgYmxvY2tzLCBhbGwgYWxsb2NhdGlvbnMgYXJlIGJy
YWNrZXRlZCBieQogICAgIC8vIHRoZW06IFtndWFyZGJsb2NrXVthbGxvY2F0aW9uXVtndWFyZGJs
b2NrXS4gIG51bUJ5dGVzIGlzIGhvdwogICAgIC8vIG11Y2ggbWVtb3J5IHRoZSBjYWxsZXIgYXNr
ZWQgZm9yLiAgYWxsb2NhdGlvblNpemUgaXMgdGhlIHRvdGFsCiAgICAgLy8gc2l6ZSBpbmNsdWRp
bmcgZ3VhcmQgYmxvY2tzLiAgSW4gcmVsZWFzZSBidWlsZCwKICAgICAvLyBndWFyZEJsb2NrU2l6
ZT0wIGFuZCB0aGlzIGFsbCBnZXRzIG9wdGltaXplZCBhd2F5LgogICAgIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZSA9IFRBbGxvY2F0aW9uOjphbGxvY2F0aW9uU2l6ZShudW1CeXRlcyk7Ci0gICAgCi0g
ICAgLy8KLSAgICAvLyBKdXN0IGtlZXAgc29tZSBpbnRlcmVzdGluZyBzdGF0aXN0aWNzLgotICAg
IC8vCi0gICAgKytudW1DYWxsczsKLSAgICB0b3RhbEJ5dGVzICs9IG51bUJ5dGVzOworICAgIC8v
IERldGVjdCBpbnRlZ2VyIG92ZXJmbG93LgorICAgIGlmIChhbGxvY2F0aW9uU2l6ZSA8IG51bUJ5
dGVzKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vCiAgICAgLy8gRG8gdGhlIGFsbG9jYXRp
b24sIG1vc3QgbGlrZWx5IGNhc2UgZmlyc3QsIGZvciBlZmZpY2llbmN5LgogICAgIC8vIFRoaXMg
c3RlcCBjb3VsZCBiZSBtb3ZlZCB0byBiZSBpbmxpbmUgc29tZXRpbWUuCiAgICAgLy8KLSAgICBp
ZiAoY3VycmVudFBhZ2VPZmZzZXQgKyBhbGxvY2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSkgeworICAg
IGlmIChhbGxvY2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSAtIGN1cnJlbnRQYWdlT2Zmc2V0KSB7CiAg
ICAgICAgIC8vCiAgICAgICAgIC8vIFNhZmUgdG8gYWxsb2NhdGUgZnJvbSBjdXJyZW50UGFnZU9m
ZnNldC4KICAgICAgICAgLy8KQEAgLTI1NiwxMiArMjU5LDE2IEBAIHZvaWQqIFRQb29sQWxsb2Nh
dG9yOjphbGxvY2F0ZShzaXplX3QgbnUKICAgICAgICAgcmV0dXJuIGluaXRpYWxpemVBbGxvY2F0
aW9uKGluVXNlTGlzdCwgbWVtb3J5LCBudW1CeXRlcyk7CiAgICAgfQogCi0gICAgaWYgKGFsbG9j
YXRpb25TaXplICsgaGVhZGVyU2tpcCA+IHBhZ2VTaXplKSB7CisgICAgaWYgKGFsbG9jYXRpb25T
aXplID4gcGFnZVNpemUgLSBoZWFkZXJTa2lwKSB7CiAgICAgICAgIC8vCiAgICAgICAgIC8vIERv
IGEgbXVsdGktcGFnZSBhbGxvY2F0aW9uLiAgRG9uJ3QgbWl4IHRoZXNlIHdpdGggdGhlIG90aGVy
cy4KICAgICAgICAgLy8gVGhlIE9TIGlzIGVmZmljaWVudCBhbmQgYWxsb2NhdGluZyBhbmQgZnJl
ZS1pbmcgbXVsdGlwbGUgcGFnZXMuCiAgICAgICAgIC8vCiAgICAgICAgIHNpemVfdCBudW1CeXRl
c1RvQWxsb2MgPSBhbGxvY2F0aW9uU2l6ZSArIGhlYWRlclNraXA7CisgICAgICAgIC8vIERldGVj
dCBpbnRlZ2VyIG92ZXJmbG93LgorICAgICAgICBpZiAobnVtQnl0ZXNUb0FsbG9jIDwgYWxsb2Nh
dGlvblNpemUpCisgICAgICAgICAgICByZXR1cm4gMDsKKwogICAgICAgICB0SGVhZGVyKiBtZW1v
cnkgPSByZWludGVycHJldF9jYXN0PHRIZWFkZXIqPig6Om5ldyBjaGFyW251bUJ5dGVzVG9BbGxv
Y10pOwogICAgICAgICBpZiAobWVtb3J5ID09IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5o
CShyZXZpc2lvbiAxNTI1OTUpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvU2hIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtODEsOCArODEsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCBJbml0QnVpbHRJblN5bWJvbFRhYmxlKGNvbnN0IFNoQnVpbHRJblJlc291cmNl
cyYgcmVzb3VyY2VzKTsKICAgICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgZnJvbSB0aGUgcHJldmlv
dXMgY29tcGlsYXRpb24uCiAgICAgdm9pZCBjbGVhclJlc3VsdHMoKTsKLSAgICAvLyBSZXR1cm4g
dHJ1ZSBpZiBmdW5jdGlvbiByZWN1cnNpb24gaXMgZGV0ZWN0ZWQuCi0gICAgYm9vbCBkZXRlY3RS
ZWN1cnNpb24oVEludGVybU5vZGUqIHJvb3QpOworICAgIC8vIFJldHVybiB0cnVlIGlmIGZ1bmN0
aW9uIHJlY3Vyc2lvbiBpcyBkZXRlY3RlZCBvciBjYWxsIGRlcHRoIGV4Y2VlZGVkLgorICAgIGJv
b2wgZGV0ZWN0Q2FsbERlcHRoKFRJbnRlcm1Ob2RlKiByb290LCBUSW5mb1NpbmsmIGluZm9TaW5r
LCBib29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgpOwogICAgIC8vIFJld3JpdGVzIGEgc2hhZGVyJ3Mg
aW50ZXJtZWRpYXRlIHRyZWUgYWNjb3JkaW5nIHRvIHRoZSBDU1MgU2hhZGVycyBzcGVjLgogICAg
IHZvaWQgcmV3cml0ZUNTU1NoYWRlcihUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBnaXZlbiBzaGFkZXIgZG9lcyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtCkBA
IC0xMDQsNiArMTA0LDggQEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUg
c2hhZGVyIGRvZXMgbm90IHVzZSBzYW1wbGVyIGRlcGVuZGVudCB2YWx1ZXMgdG8gYWZmZWN0IGNv
bnRyb2wgCiAgICAgLy8gZmxvdyBvciBpbiBvcGVyYXRpb25zIHdob3NlIHRpbWUgY2FuIGRlcGVu
ZCBvbiB0aGUgaW5wdXQgdmFsdWVzLgogICAgIGJvb2wgZW5mb3JjZUZyYWdtZW50U2hhZGVyVGlt
aW5nUmVzdHJpY3Rpb25zKGNvbnN0IFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKTsKKyAgICAvLyBS
ZXR1cm4gdHJ1ZSBpZiB0aGUgbWF4aW11bSBleHByZXNzaW9uIGNvbXBsZXhpdHkgYmVsb3cgdGhl
IGxpbWl0LgorICAgIGJvb2wgbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSog
cm9vdCk7CiAgICAgLy8gR2V0IGJ1aWx0LWluIGV4dGVuc2lvbnMgd2l0aCBkZWZhdWx0IGJlaGF2
aW9yLgogICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZ2V0RXh0ZW5zaW9uQmVoYXZpb3Io
KSBjb25zdDsKIApAQCAtMTE2LDYgKzExOCw4IEBAIHByaXZhdGU6CiAgICAgU2hTaGFkZXJTcGVj
IHNoYWRlclNwZWM7CiAKICAgICBpbnQgbWF4VW5pZm9ybVZlY3RvcnM7CisgICAgaW50IG1heEV4
cHJlc3Npb25Db21wbGV4aXR5OworICAgIGludCBtYXhDYWxsU3RhY2tEZXB0aDsKIAogICAgIC8v
IEJ1aWx0LWluIHN5bWJvbCB0YWJsZSBmb3IgdGhlIGdpdmVuIGxhbmd1YWdlLCBzcGVjLCBhbmQg
cmVzb3VyY2VzLgogICAgIC8vIEl0IGlzIHByZXNlcnZlZCBmcm9tIGNvbXBpbGUtdG8tY29tcGls
ZS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
U2hhZGVyTGFuZy5jcHAJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYg
KzEyNiw3IEBAIHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXMKICAgICBy
ZXNvdXJjZXMtPk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgPSAwOwogICAgIHJlc291cmNlcy0+QVJC
X3RleHR1cmVfcmVjdGFuZ2xlID0gMDsKICAgICByZXNvdXJjZXMtPkVYVF9kcmF3X2J1ZmZlcnMg
PSAwOworICAgIHJlc291cmNlcy0+RVhUX2ZyYWdfZGVwdGggPSAwOwogCiAgICAgLy8gRGlzYWJs
ZSBoaWdocCBwcmVjaXNpb24gaW4gZnJhZ21lbnQgc2hhZGVyIGJ5IGRlZmF1bHQuCiAgICAgcmVz
b3VyY2VzLT5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPSAwOwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lv
biAxNTI1OTUpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9s
VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw0OCArMTcsMzQgQEAKIAogI2luY2x1ZGUg
PHN0ZGlvLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xl
dXRpbHMuaCIKKyNpbmNsdWRlIDxjbGltaXRzPgogCiBUVHlwZTo6VFR5cGUoY29uc3QgVFB1Ymxp
Y1R5cGUgJnApIDoKLSAgICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lzaW9uKHAucHJlY2lz
aW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBtYXRyaXgocC5tYXRy
aXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwKLSAgICAgICAgICAg
IG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVyZSgwKSwg
c3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwg
bWFuZ2xlZCgwKSwgdHlwZU5hbWUoMCkKKyAgICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lz
aW9uKHAucHJlY2lzaW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBt
YXRyaXgocC5tYXRyaXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwg
c3RydWN0dXJlKDApCiB7Ci0gICAgaWYgKHAudXNlckRlZikgeworICAgIGlmIChwLnVzZXJEZWYp
CiAgICAgICAgIHN0cnVjdHVyZSA9IHAudXNlckRlZi0+Z2V0U3RydWN0KCk7Ci0gICAgICAgIHR5
cGVOYW1lID0gTmV3UG9vbFRTdHJpbmcocC51c2VyRGVmLT5nZXRUeXBlTmFtZSgpLmNfc3RyKCkp
OwotICAgICAgICBjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsKLSAgICB9CiB9CiAKIC8v
CiAvLyBSZWN1cnNpdmVseSBnZW5lcmF0ZSBtYW5nbGVkIG5hbWVzLgogLy8KLXZvaWQgVFR5cGU6
OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYgbWFuZ2xlZE5hbWUpCitUU3RyaW5nIFRUeXBlOjpi
dWlsZE1hbmdsZWROYW1lKCkgY29uc3QKIHsKKyAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAg
IGlmIChpc01hdHJpeCgpKQogICAgICAgICBtYW5nbGVkTmFtZSArPSAnbSc7CiAgICAgZWxzZSBp
ZiAoaXNWZWN0b3IoKSkKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ3YnOwogCiAgICAgc3dpdGNo
ICh0eXBlKSB7Ci0gICAgY2FzZSBFYnRGbG9hdDogICAgICAgICAgICAgIG1hbmdsZWROYW1lICs9
ICdmJzsgICAgICBicmVhazsKLSAgICBjYXNlIEVidEludDogICAgICAgICAgICAgICAgbWFuZ2xl
ZE5hbWUgKz0gJ2knOyAgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0Qm9vbDogICAgICAgICAgICAg
ICBtYW5nbGVkTmFtZSArPSAnYic7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRTYW1wbGVyMkQ6
ICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJzMiI7ICAgICBicmVhazsKLSAgICBjYXNlIEVidFNh
bXBsZXJDdWJlOiAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInNDIjsgICAgIGJyZWFrOwotICAgIGNh
c2UgRWJ0U3RydWN0OgotICAgICAgICBtYW5nbGVkTmFtZSArPSAic3RydWN0LSI7Ci0gICAgICAg
IGlmICh0eXBlTmFtZSkKLSAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICp0eXBlTmFtZTsKLSAg
ICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBt
YW5nbGVkTmFtZSArPSAnLSc7Ci0gICAgICAgICAgICAgICAgKCpzdHJ1Y3R1cmUpW2ldLnR5cGUt
PmJ1aWxkTWFuZ2xlZE5hbWUobWFuZ2xlZE5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRGbG9hdDogICAgICAg
bWFuZ2xlZE5hbWUgKz0gJ2YnOyAgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0SW50OiAgICAgICAg
IG1hbmdsZWROYW1lICs9ICdpJzsgICAgICBicmVhazsKKyAgICBjYXNlIEVidEJvb2w6ICAgICAg
ICBtYW5nbGVkTmFtZSArPSAnYic7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRTYW1wbGVyMkQ6
ICAgbWFuZ2xlZE5hbWUgKz0gInMyIjsgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0U2FtcGxlckN1
YmU6IG1hbmdsZWROYW1lICs9ICJzQyI7ICAgICBicmVhazsKKyAgICBjYXNlIEVidFN0cnVjdDog
ICAgICBtYW5nbGVkTmFtZSArPSBzdHJ1Y3R1cmUtPm1hbmdsZWROYW1lKCk7IGJyZWFrOworICAg
IGRlZmF1bHQ6ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIG1hbmdsZWROYW1lICs9
IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIGdldE5vbWluYWxTaXplKCkpOwpAQCAtNjksNTMgKzU1
LDcyIEBAIHZvaWQgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYgbWEKICAgICAgICAg
bWFuZ2xlZE5hbWUgKz0gYnVmOwogICAgICAgICBtYW5nbGVkTmFtZSArPSAnXSc7CiAgICAgfQor
ICAgIHJldHVybiBtYW5nbGVkTmFtZTsKIH0KIAotaW50IFRUeXBlOjpnZXRTdHJ1Y3RTaXplKCkg
Y29uc3QKK3NpemVfdCBUVHlwZTo6Z2V0T2JqZWN0U2l6ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFn
ZXRTdHJ1Y3QoKSkgewotICAgICAgICBhc3NlcnQoZmFsc2UgJiYgIk5vdCBhIHN0cnVjdCIpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7CiAKLSAg
ICBpZiAoc3RydWN0dXJlU2l6ZSA9PSAwKQotICAgICAgICBmb3IgKFRUeXBlTGlzdDo6Y29uc3Rf
aXRlcmF0b3IgdGwgPSBnZXRTdHJ1Y3QoKS0+YmVnaW4oKTsgdGwgIT0gZ2V0U3RydWN0KCktPmVu
ZCgpOyB0bCsrKQotICAgICAgICAgICAgc3RydWN0dXJlU2l6ZSArPSAoKCp0bCkudHlwZSktPmdl
dE9iamVjdFNpemUoKTsKKyAgICBpZiAoZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQorICAg
ICAgICB0b3RhbFNpemUgPSBzdHJ1Y3R1cmUtPm9iamVjdFNpemUoKTsKKyAgICBlbHNlIGlmICht
YXRyaXgpCisgICAgICAgIHRvdGFsU2l6ZSA9IHNpemUgKiBzaXplOworICAgIGVsc2UKKyAgICAg
ICAgdG90YWxTaXplID0gc2l6ZTsKKworICAgIGlmIChpc0FycmF5KCkpIHsKKyAgICAgICAgc2l6
ZV90IGFycmF5U2l6ZSA9IGdldEFycmF5U2l6ZSgpOworICAgICAgICBpZiAoYXJyYXlTaXplID4g
SU5UX01BWCAvIHRvdGFsU2l6ZSkKKyAgICAgICAgICAgIHRvdGFsU2l6ZSA9IElOVF9NQVg7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRvdGFsU2l6ZSAqPSBhcnJheVNpemU7CisgICAgfQog
Ci0gICAgcmV0dXJuIHN0cnVjdHVyZVNpemU7CisgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAot
dm9pZCBUVHlwZTo6Y29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkKK2Jvb2wgVFN0cnVjdHVy
ZTo6Y29udGFpbnNBcnJheXMoKSBjb25zdAogewotICAgIGlmICghZ2V0U3RydWN0KCkpIHsKLSAg
ICAgICAgcmV0dXJuOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZpZWxkcy0+c2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqbUZpZWxkcylbaV0t
PnR5cGUoKTsKKyAgICAgICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJheSgpIHx8IGZpZWxkVHlwZS0+
aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQogCi0gICAgaW50IG1heE5lc3RpbmcgPSAwOwot
ICAgIGZvciAoVFR5cGVMaXN0Ojpjb25zdF9pdGVyYXRvciB0bCA9IGdldFN0cnVjdCgpLT5iZWdp
bigpOyB0bCAhPSBnZXRTdHJ1Y3QoKS0+ZW5kKCk7ICsrdGwpIHsKLSAgICAgICAgbWF4TmVzdGlu
ZyA9IHN0ZDo6bWF4KG1heE5lc3RpbmcsICgoKnRsKS50eXBlKS0+Z2V0RGVlcGVzdFN0cnVjdE5l
c3RpbmcoKSk7CitUU3RyaW5nIFRTdHJ1Y3R1cmU6OmJ1aWxkTWFuZ2xlZE5hbWUoKSBjb25zdAor
eworICAgIFRTdHJpbmcgbWFuZ2xlZE5hbWUoInN0cnVjdC0iKTsKKyAgICBtYW5nbGVkTmFtZSAr
PSAqbU5hbWU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsr
aSkgeworICAgICAgICBtYW5nbGVkTmFtZSArPSAnLSc7CisgICAgICAgIG1hbmdsZWROYW1lICs9
ICgqbUZpZWxkcylbaV0tPnR5cGUoKS0+Z2V0TWFuZ2xlZE5hbWUoKTsKICAgICB9Ci0KLSAgICBk
ZWVwZXN0U3RydWN0TmVzdGluZyA9IDEgKyBtYXhOZXN0aW5nOworICAgIHJldHVybiBtYW5nbGVk
TmFtZTsKIH0KIAotYm9vbCBUVHlwZTo6aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkgY29u
c3QKK3NpemVfdCBUU3RydWN0dXJlOjpjYWxjdWxhdGVPYmplY3RTaXplKCkgY29uc3QKIHsKLSAg
ICBpZiAoIXN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzaXpl
X3Qgc2l6ZSA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7
ICsraSkgeworICAgICAgICBzaXplX3QgZmllbGRTaXplID0gKCptRmllbGRzKVtpXS0+dHlwZSgp
LT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIGlmIChmaWVsZFNpemUgPiBJTlRfTUFYIC0gc2l6
ZSkKKyAgICAgICAgICAgIHNpemUgPSBJTlRfTUFYOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBzaXplICs9IGZpZWxkU2l6ZTsKICAgICB9CisgICAgcmV0dXJuIHNpemU7Cit9CiAKLSAgICBm
b3IgKFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyID0gc3RydWN0dXJlLT5iZWdpbigp
OyBtZW1iZXIgIT0gc3RydWN0dXJlLT5lbmQoKTsgbWVtYmVyKyspCi0gICAgewotICAgICAgICBp
ZiAobWVtYmVyLT50eXBlLT5pc0FycmF5KCkgfHwKLSAgICAgICAgICAgIG1lbWJlci0+dHlwZS0+
aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9CitpbnQgVFN0cnVjdHVyZTo6Y2FsY3VsYXRlRGVlcGVzdE5l
c3RpbmcoKSBjb25zdAoreworICAgIGludCBtYXhOZXN0aW5nID0gMDsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1GaWVsZHMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIG1heE5lc3Rpbmcg
PSBzdGQ6Om1heChtYXhOZXN0aW5nLCAoKm1GaWVsZHMpW2ldLT50eXBlKCktPmdldERlZXBlc3RT
dHJ1Y3ROZXN0aW5nKCkpOwogICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
MSArIG1heE5lc3Rpbmc7CiB9CiAKIC8vCkBAIC0xOTYsODQgKzIwMSw4IEBAIHZvaWQgVFN5bWJv
bFRhYmxlTGV2ZWw6OnJlbGF0ZVRvT3BlcmF0b3IKIHZvaWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJl
bGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFRTdHJpbmcmIGV4dCkKIHsK
ICAgICBmb3IgKHRMZXZlbDo6aXRlcmF0b3IgaXQgPSBsZXZlbC5iZWdpbigpOyBpdCAhPSBsZXZl
bC5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoaXQtPnNlY29uZC0+aXNGdW5jdGlvbigpKSB7
Ci0gICAgICAgICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9u
Kj4oaXQtPnNlY29uZCk7Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSBu
YW1lKQotICAgICAgICAgICAgICAgIGZ1bmN0aW9uLT5yZWxhdGVUb0V4dGVuc2lvbihleHQpOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi1UU3ltYm9sOjpUU3ltYm9sKGNvbnN0IFRTeW1ib2wmIGNv
cHlPZikKLXsKLSAgICBuYW1lID0gTmV3UG9vbFRTdHJpbmcoY29weU9mLm5hbWUtPmNfc3RyKCkp
OwotICAgIHVuaXF1ZUlkID0gY29weU9mLnVuaXF1ZUlkOwotfQotCi1UVmFyaWFibGU6OlRWYXJp
YWJsZShjb25zdCBUVmFyaWFibGUmIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpIDog
VFN5bWJvbChjb3B5T2YpCi17Ci0gICAgdHlwZS5jb3B5VHlwZShjb3B5T2YudHlwZSwgcmVtYXBw
ZXIpOwotICAgIHVzZXJUeXBlID0gY29weU9mLnVzZXJUeXBlOwotICAgIC8vIGZvciBidWlsdElu
IHN5bWJvbCB0YWJsZSBsZXZlbCwgdW5pb25BcnJheSBhbmQgYXJyYXlJbmZvcm1hdGlvbiBwb2lu
dGVycyBzaG91bGQgYmUgTlVMTAotICAgIGFzc2VydChjb3B5T2YuYXJyYXlJbmZvcm1hdGlvblR5
cGUgPT0gMCk7Ci0gICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOwotCi0gICAgaWYgKGNvcHlP
Zi51bmlvbkFycmF5KSB7Ci0gICAgICAgIGFzc2VydCghY29weU9mLnR5cGUuZ2V0U3RydWN0KCkp
OwotICAgICAgICBhc3NlcnQoY29weU9mLnR5cGUuZ2V0T2JqZWN0U2l6ZSgpID09IDEpOwotICAg
ICAgICB1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgIHVuaW9uQXJy
YXlbMF0gPSBjb3B5T2YudW5pb25BcnJheVswXTsKLSAgICB9IGVsc2UKLSAgICAgICAgdW5pb25B
cnJheSA9IDA7Ci19Ci0KLVRWYXJpYWJsZSogVFZhcmlhYmxlOjpjbG9uZShUU3RydWN0dXJlTWFw
JiByZW1hcHBlcikKLXsKLSAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZSgq
dGhpcywgcmVtYXBwZXIpOwotCi0gICAgcmV0dXJuIHZhcmlhYmxlOwotfQotCi1URnVuY3Rpb246
OlRGdW5jdGlvbihjb25zdCBURnVuY3Rpb24mIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBw
ZXIpIDogVFN5bWJvbChjb3B5T2YpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBjb3B5T2YucGFyYW1ldGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBUUGFyYW1ldGVyIHBh
cmFtOwotICAgICAgICBwYXJhbWV0ZXJzLnB1c2hfYmFjayhwYXJhbSk7Ci0gICAgICAgIHBhcmFt
ZXRlcnMuYmFjaygpLmNvcHlQYXJhbShjb3B5T2YucGFyYW1ldGVyc1tpXSwgcmVtYXBwZXIpOwot
ICAgIH0KLQotICAgIHJldHVyblR5cGUuY29weVR5cGUoY29weU9mLnJldHVyblR5cGUsIHJlbWFw
cGVyKTsKLSAgICBtYW5nbGVkTmFtZSA9IGNvcHlPZi5tYW5nbGVkTmFtZTsKLSAgICBvcCA9IGNv
cHlPZi5vcDsKLSAgICBkZWZpbmVkID0gY29weU9mLmRlZmluZWQ7Ci19Ci0KLVRGdW5jdGlvbiog
VEZ1bmN0aW9uOjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLXsKLSAgICBURnVuY3Rp
b24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgcmV0
dXJuIGZ1bmN0aW9uOwotfQotCi1UU3ltYm9sVGFibGVMZXZlbCogVFN5bWJvbFRhYmxlTGV2ZWw6
OmNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQotewotICAgIFRTeW1ib2xUYWJsZUxldmVs
ICpzeW1UYWJsZUxldmVsID0gbmV3IFRTeW1ib2xUYWJsZUxldmVsKCk7Ci0gICAgdExldmVsOjpp
dGVyYXRvciBpdGVyOwotICAgIGZvciAoaXRlciA9IGxldmVsLmJlZ2luKCk7IGl0ZXIgIT0gbGV2
ZWwuZW5kKCk7ICsraXRlcikgewotICAgICAgICBzeW1UYWJsZUxldmVsLT5pbnNlcnQoKml0ZXIt
PnNlY29uZC0+Y2xvbmUocmVtYXBwZXIpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3ltVGFibGVM
ZXZlbDsKLX0KLQotdm9pZCBUU3ltYm9sVGFibGU6OmNvcHlUYWJsZShjb25zdCBUU3ltYm9sVGFi
bGUmIGNvcHlPZikKLXsKLSAgICBUU3RydWN0dXJlTWFwIHJlbWFwcGVyOwotICAgIHVuaXF1ZUlk
ID0gY29weU9mLnVuaXF1ZUlkOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29w
eU9mLnRhYmxlLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHRhYmxlLnB1c2hfYmFjayhjb3B5T2Yu
dGFibGVbaV0tPmNsb25lKHJlbWFwcGVyKSk7Ci0gICAgfQotICAgIGZvciggdW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgY29weU9mLnByZWNpc2lvblN0YWNrLnNpemUoKTsgaSsrKSB7Ci0gICAgICAg
IHByZWNpc2lvblN0YWNrLnB1c2hfYmFjayggY29weU9mLnByZWNpc2lvblN0YWNrW2ldICk7Cisg
ICAgICAgIFRTeW1ib2wqIHN5bWJvbCA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGlmIChzeW1ib2wt
PmdldE5hbWUoKSA9PSBuYW1lKQorICAgICAgICAgICAgc3ltYm9sLT5yZWxhdGVUb0V4dGVuc2lv
bihleHQpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNTI1OTUpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKKyNpbmNsdWRlICJj
b21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCiAKQEAgLTQ5LDEzICs1MCwxNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZvaWQgc2V0VW5pcXVlSWQoaW50IGlkKSB7IHVuaXF1ZUlkID0gaWQ7IH0KICAgICBp
bnQgZ2V0VW5pcXVlSWQoKSBjb25zdCB7IHJldHVybiB1bmlxdWVJZDsgfQotICAgIHZpcnR1YWwg
dm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0ID0gMDsJCi0gICAgVFN5bWJvbChj
b25zdCBUU3ltYm9sJik7Ci0gICAgdmlydHVhbCBUU3ltYm9sKiBjbG9uZShUU3RydWN0dXJlTWFw
JiByZW1hcHBlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1Np
bmspIGNvbnN0ID0gMDsKKyAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcm
IGV4dCkgeyBleHRlbnNpb24gPSBleHQ7IH0KKyAgICBjb25zdCBUU3RyaW5nJiBnZXRFeHRlbnNp
b24oKSBjb25zdCB7IHJldHVybiBleHRlbnNpb247IH0KKworcHJpdmF0ZToKKyAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oVFN5bWJvbCk7CiAKLXByb3RlY3RlZDoKICAgICBjb25zdCBUU3Ry
aW5nICpuYW1lOwogICAgIHVuc2lnbmVkIGludCB1bmlxdWVJZDsgICAgICAvLyBGb3IgcmVhbCBj
b21wYXJpbmcgZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbgorICAgIFRTdHJpbmcgZXh0ZW5zaW9uOwog
fTsKIAogLy8KQEAgLTcwLDE1ICs3NCwxMyBAQCBwcm90ZWN0ZWQ6CiAvLwogY2xhc3MgVFZhcmlh
YmxlIDogcHVibGljIFRTeW1ib2wgewogcHVibGljOgotICAgIFRWYXJpYWJsZShjb25zdCBUU3Ry
aW5nICpuYW1lLCBjb25zdCBUVHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5h
bWUpLCB0eXBlKHQpLCB1c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCksIGFycmF5SW5mb3JtYXRp
b25UeXBlKDApIHsgfQorICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpuYW1lLCBjb25zdCBU
VHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUpLCB0eXBlKHQpLCB1c2Vy
VHlwZSh1VCksIHVuaW9uQXJyYXkoMCkgeyB9CiAgICAgdmlydHVhbCB+VFZhcmlhYmxlKCkgeyB9
CiAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9ICAg
IAogICAgIFRUeXBlJiBnZXRUeXBlKCkgeyByZXR1cm4gdHlwZTsgfSAgICAKICAgICBjb25zdCBU
VHlwZSYgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KICAgICBib29sIGlzVXNlclR5
cGUoKSBjb25zdCB7IHJldHVybiB1c2VyVHlwZTsgfQogICAgIHZvaWQgc2V0UXVhbGlmaWVyKFRR
dWFsaWZpZXIgcXVhbGlmaWVyKSB7IHR5cGUuc2V0UXVhbGlmaWVyKHF1YWxpZmllcik7IH0KLSAg
ICB2b2lkIHVwZGF0ZUFycmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlICp0KSB7IGFycmF5SW5mb3Jt
YXRpb25UeXBlID0gdDsgfQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpIHsg
cmV0dXJuIGFycmF5SW5mb3JtYXRpb25UeXBlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChU
SW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKIApAQCAtMTAwLDE2ICsxMDIsMTUgQEAgcHVibGlj
OgogICAgICAgICBkZWxldGVbXSB1bmlvbkFycmF5OwogICAgICAgICB1bmlvbkFycmF5ID0gY29u
c3RBcnJheTsgIAogICAgIH0KLSAgICBUVmFyaWFibGUoY29uc3QgVFZhcmlhYmxlJiwgVFN0cnVj
dHVyZU1hcCYgcmVtYXBwZXIpOyAvLyBjb3B5IGNvbnN0cnVjdG9yCi0gICAgdmlydHVhbCBUVmFy
aWFibGUqIGNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKIAotcHJvdGVjdGVkOgorcHJp
dmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFZhcmlhYmxlKTsKKwogICAgIFRU
eXBlIHR5cGU7CiAgICAgYm9vbCB1c2VyVHlwZTsKICAgICAvLyB3ZSBhcmUgYXNzdW1pbmcgdGhh
dCBQb29sIEFsbG9jYXRvciB3aWxsIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgdG8gdW5pb25B
cnJheQogICAgIC8vIHdoZW4gdGhpcyBvYmplY3QgaXMgZGVzdHJveWVkCiAgICAgQ29uc3RhbnRV
bmlvbiAqdW5pb25BcnJheTsKLSAgICBUVHlwZSAqYXJyYXlJbmZvcm1hdGlvblR5cGU7ICAvLyB0
aGlzIGlzIHVzZWQgZm9yIHVwZGF0aW5nIG1heEFycmF5U2l6ZSBpbiBhbGwgdGhlIHJlZmVyZW5j
ZXMgdG8gYSBnaXZlbiBzeW1ib2wKIH07CiAKIC8vCkBAIC0xMTksMTEgKzEyMCw2IEBAIHByb3Rl
Y3RlZDoKIHN0cnVjdCBUUGFyYW1ldGVyIHsKICAgICBUU3RyaW5nICpuYW1lOwogICAgIFRUeXBl
KiB0eXBlOwotICAgIHZvaWQgY29weVBhcmFtKGNvbnN0IFRQYXJhbWV0ZXImIHBhcmFtLCBUU3Ry
dWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIG5hbWUgPSBOZXdQb29sVFN0cmlu
ZyhwYXJhbS5uYW1lLT5jX3N0cigpKTsKLSAgICAgICAgdHlwZSA9IHBhcmFtLnR5cGUtPmNsb25l
KHJlbWFwcGVyKTsKLSAgICB9CiB9OwogCiAvLwpAQCAtMTYzLDkgKzE1OSw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbGF0ZVRvT3BlcmF0b3IoVE9wZXJhdG9yIG8pIHsgb3AgPSBvOyB9CiAgICAg
VE9wZXJhdG9yIGdldEJ1aWx0SW5PcCgpIGNvbnN0IHsgcmV0dXJuIG9wOyB9CiAKLSAgICB2b2lk
IHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBleHRlbnNpb24gPSBleHQ7
IH0KLSAgICBjb25zdCBUU3RyaW5nJiBnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBleHRl
bnNpb247IH0KLQogICAgIHZvaWQgc2V0RGVmaW5lZCgpIHsgZGVmaW5lZCA9IHRydWU7IH0KICAg
ICBib29sIGlzRGVmaW5lZCgpIHsgcmV0dXJuIGRlZmluZWQ7IH0KIApAQCAtMTczLDE2ICsxNjYs
MTUgQEAgcHVibGljOgogICAgIGNvbnN0IFRQYXJhbWV0ZXImIGdldFBhcmFtKHNpemVfdCBpKSBj
b25zdCB7IHJldHVybiBwYXJhbWV0ZXJzW2ldOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChU
SW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKLSAgICBURnVuY3Rpb24oY29uc3QgVEZ1bmN0aW9u
JiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpOwotICAgIHZpcnR1YWwgVEZ1bmN0aW9uKiBjbG9u
ZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcik7CiAKLXByb3RlY3RlZDoKK3ByaXZhdGU6CisgICAg
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRGdW5jdGlvbik7CisKICAgICB0eXBlZGVmIFRWZWN0
b3I8VFBhcmFtZXRlcj4gVFBhcmFtTGlzdDsKICAgICBUUGFyYW1MaXN0IHBhcmFtZXRlcnM7CiAg
ICAgVFR5cGUgcmV0dXJuVHlwZTsKICAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAgIFRPcGVy
YXRvciBvcDsKLSAgICBUU3RyaW5nIGV4dGVuc2lvbjsKICAgICBib29sIGRlZmluZWQ7CiB9Owog
CkBAIC0yMzEsNyArMjIzLDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVsYXRlVG9PcGVyYXRvcihj
b25zdCBjaGFyKiBuYW1lLCBUT3BlcmF0b3Igb3ApOwogICAgIHZvaWQgcmVsYXRlVG9FeHRlbnNp
b24oY29uc3QgY2hhciogbmFtZSwgY29uc3QgVFN0cmluZyYgZXh0KTsKICAgICB2b2lkIGR1bXAo
VEluZm9TaW5rICZpbmZvU2luaykgY29uc3Q7Ci0gICAgVFN5bWJvbFRhYmxlTGV2ZWwqIGNsb25l
KFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKIAogcHJvdGVjdGVkOgogICAgIHRMZXZlbCBsZXZl
bDsKQEAgLTMyMSw3ICszMTIsNiBAQCBwdWJsaWM6CiAgICAgfQogICAgIGludCBnZXRNYXhTeW1i
b2xJZCgpIHsgcmV0dXJuIHVuaXF1ZUlkOyB9CiAgICAgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5m
b1NpbmspIGNvbnN0OwotICAgIHZvaWQgY29weVRhYmxlKGNvbnN0IFRTeW1ib2xUYWJsZSYgY29w
eU9mKTsKIAogICAgIGJvb2wgc2V0RGVmYXVsdFByZWNpc2lvbiggY29uc3QgVFB1YmxpY1R5cGUm
IHR5cGUsIFRQcmVjaXNpb24gcHJlYyApewogICAgICAgICBpZiAoSXNTYW1wbGVyKHR5cGUudHlw
ZSkpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMu
aAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1R5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcsMzAgKzcsODUgQEAKICNpZm5kZWYgX1RZ
UEVTX0lOQ0xVREVECiAjZGVmaW5lIF9UWVBFU19JTkNMVURFRAogCisjaW5jbHVkZSAiY29tbW9u
L2FuZ2xldXRpbHMuaCIKKwogI2luY2x1ZGUgImNvbXBpbGVyL0Jhc2VUeXBlcy5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL0NvbW1vbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL2RlYnVnLmgiCiAKLWNs
YXNzIFRUeXBlOwogc3RydWN0IFRQdWJsaWNUeXBlOworY2xhc3MgVFR5cGU7CiAKLS8vCi0vLyBO
ZWVkIHRvIGhhdmUgYXNzb2NpYXRpb24gb2YgbGluZSBudW1iZXJzIHRvIHR5cGVzIGluIGEgbGlz
dCBmb3IgYnVpbGRpbmcgc3RydWN0cy4KLS8vCi1zdHJ1Y3QgVFR5cGVMaW5lIHsKLSAgICBUVHlw
ZSogdHlwZTsKLSAgICBpbnQgbGluZTsKK2NsYXNzIFRGaWVsZAoreworcHVibGljOgorICAgIFBP
T0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcik7CisgICAgVEZpZWxk
KFRUeXBlKiB0eXBlLCBUU3RyaW5nKiBuYW1lKSA6IG1UeXBlKHR5cGUpLCBtTmFtZShuYW1lKSB7
fQorCisgICAgLy8gVE9ETyhhbG9rcCk6IFdlIHNob3VsZCBvbmx5IHJldHVybiBjb25zdCB0eXBl
LgorICAgIC8vIEZpeCBpdCBieSB0d2Vha2luZyBncmFtbWFyLgorICAgIFRUeXBlKiB0eXBlKCkg
eyByZXR1cm4gbVR5cGU7IH0KKyAgICBjb25zdCBUVHlwZSogdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1UeXBlOyB9CisKKyAgICBjb25zdCBUU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1O
YW1lOyB9CisKK3ByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRGaWVsZCk7
CisgICAgVFR5cGUqIG1UeXBlOworICAgIFRTdHJpbmcqIG1OYW1lOwogfTsKLXR5cGVkZWYgVFZl
Y3RvcjxUVHlwZUxpbmU+IFRUeXBlTGlzdDsKIAotaW5saW5lIFRUeXBlTGlzdCogTmV3UG9vbFRU
eXBlTGlzdCgpCit0eXBlZGVmIFRWZWN0b3I8VEZpZWxkKj4gVEZpZWxkTGlzdDsKK2lubGluZSBU
RmllbGRMaXN0KiBOZXdQb29sVEZpZWxkTGlzdCgpCiB7Ci0gICAgdm9pZCogbWVtb3J5ID0gR2xv
YmFsUG9vbEFsbG9jYXRvci5hbGxvY2F0ZShzaXplb2YoVFR5cGVMaXN0KSk7Ci0gICAgcmV0dXJu
IG5ldyhtZW1vcnkpIFRUeXBlTGlzdDsKKyAgICB2b2lkKiBtZW1vcnkgPSBHbG9iYWxQb29sQWxs
b2NhdG9yLmFsbG9jYXRlKHNpemVvZihURmllbGRMaXN0KSk7CisgICAgcmV0dXJuIG5ldyhtZW1v
cnkpIFRGaWVsZExpc3Q7CiB9CiAKLXR5cGVkZWYgVE1hcDxUVHlwZUxpc3QqLCBUVHlwZUxpc3Qq
PiBUU3RydWN0dXJlTWFwOwotdHlwZWRlZiBUTWFwPFRUeXBlTGlzdCosIFRUeXBlTGlzdCo+Ojpp
dGVyYXRvciBUU3RydWN0dXJlTWFwSXRlcmF0b3I7CitjbGFzcyBUU3RydWN0dXJlCit7CitwdWJs
aWM6CisgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKTsK
KyAgICBUU3RydWN0dXJlKFRTdHJpbmcqIG5hbWUsIFRGaWVsZExpc3QqIGZpZWxkcykKKyAgICAg
ICAgOiBtTmFtZShuYW1lKSwKKyAgICAgICAgICBtRmllbGRzKGZpZWxkcyksCisgICAgICAgICAg
bU9iamVjdFNpemUoMCksCisgICAgICAgICAgbURlZXBlc3ROZXN0aW5nKDApIHsKKyAgICB9CisK
KyAgICBjb25zdCBUU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1OYW1lOyB9CisgICAg
Y29uc3QgVEZpZWxkTGlzdCYgZmllbGRzKCkgY29uc3QgeyByZXR1cm4gKm1GaWVsZHM7IH0KKwor
ICAgIGNvbnN0IFRTdHJpbmcmIG1hbmdsZWROYW1lKCkgY29uc3QgeworICAgICAgICBpZiAobU1h
bmdsZWROYW1lLmVtcHR5KCkpCisgICAgICAgICAgICBtTWFuZ2xlZE5hbWUgPSBidWlsZE1hbmds
ZWROYW1lKCk7CisgICAgICAgIHJldHVybiBtTWFuZ2xlZE5hbWU7CisgICAgfQorICAgIHNpemVf
dCBvYmplY3RTaXplKCkgY29uc3QgeworICAgICAgICBpZiAobU9iamVjdFNpemUgPT0gMCkKKyAg
ICAgICAgICAgIG1PYmplY3RTaXplID0gY2FsY3VsYXRlT2JqZWN0U2l6ZSgpOworICAgICAgICBy
ZXR1cm4gbU9iamVjdFNpemU7CisgICAgfTsKKyAgICBpbnQgZGVlcGVzdE5lc3RpbmcoKSBjb25z
dCB7CisgICAgICAgIGlmIChtRGVlcGVzdE5lc3RpbmcgPT0gMCkKKyAgICAgICAgICAgIG1EZWVw
ZXN0TmVzdGluZyA9IGNhbGN1bGF0ZURlZXBlc3ROZXN0aW5nKCk7CisgICAgICAgIHJldHVybiBt
RGVlcGVzdE5lc3Rpbmc7CisgICAgfQorICAgIGJvb2wgY29udGFpbnNBcnJheXMoKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFN0cnVjdHVyZSk7Cisg
ICAgVFN0cmluZyBidWlsZE1hbmdsZWROYW1lKCkgY29uc3Q7CisgICAgc2l6ZV90IGNhbGN1bGF0
ZU9iamVjdFNpemUoKSBjb25zdDsKKyAgICBpbnQgY2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBj
b25zdDsKKworICAgIFRTdHJpbmcqIG1OYW1lOworICAgIFRGaWVsZExpc3QqIG1GaWVsZHM7CisK
KyAgICBtdXRhYmxlIFRTdHJpbmcgbU1hbmdsZWROYW1lOworICAgIG11dGFibGUgc2l6ZV90IG1P
YmplY3RTaXplOworICAgIG11dGFibGUgaW50IG1EZWVwZXN0TmVzdGluZzsKK307CiAKIC8vCiAv
LyBCYXNlIGNsYXNzIGZvciB0aGluZ3MgdGhhdCBoYXZlIGEgdHlwZS4KQEAgLTQxLDEwMCArOTYs
MjkgQEAgcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFs
bG9jYXRvcikKICAgICBUVHlwZSgpIHt9CiAgICAgVFR5cGUoVEJhc2ljVHlwZSB0LCBUUHJlY2lz
aW9uIHAsIFRRdWFsaWZpZXIgcSA9IEV2cVRlbXBvcmFyeSwgaW50IHMgPSAxLCBib29sIG0gPSBm
YWxzZSwgYm9vbCBhID0gZmFsc2UpIDoKLSAgICAgICAgICAgIHR5cGUodCksIHByZWNpc2lvbihw
KSwgcXVhbGlmaWVyKHEpLCBzaXplKHMpLCBtYXRyaXgobSksIGFycmF5KGEpLCBhcnJheVNpemUo
MCksCi0gICAgICAgICAgICBtYXhBcnJheVNpemUoMCksIGFycmF5SW5mb3JtYXRpb25UeXBlKDAp
LCBzdHJ1Y3R1cmUoMCksIHN0cnVjdHVyZVNpemUoMCksIGRlZXBlc3RTdHJ1Y3ROZXN0aW5nKDAp
LCBmaWVsZE5hbWUoMCksIG1hbmdsZWQoMCksIHR5cGVOYW1lKDApCisgICAgICAgICAgICB0eXBl
KHQpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihxKSwgc2l6ZShzKSwgbWF0cml4KG0pLCBhcnJh
eShhKSwgYXJyYXlTaXplKDApLCBzdHJ1Y3R1cmUoMCkKICAgICB7CiAgICAgfQogICAgIGV4cGxp
Y2l0IFRUeXBlKGNvbnN0IFRQdWJsaWNUeXBlICZwKTsKLSAgICBUVHlwZShUVHlwZUxpc3QqIHVz
ZXJEZWYsIGNvbnN0IFRTdHJpbmcmIG4sIFRQcmVjaXNpb24gcCA9IEVicFVuZGVmaW5lZCkgOgot
ICAgICAgICAgICAgdHlwZShFYnRTdHJ1Y3QpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihFdnFU
ZW1wb3JhcnkpLCBzaXplKDEpLCBtYXRyaXgoZmFsc2UpLCBhcnJheShmYWxzZSksIGFycmF5U2l6
ZSgwKSwKLSAgICAgICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUo
MCksIHN0cnVjdHVyZSh1c2VyRGVmKSwgc3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5l
c3RpbmcoMCksIGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKQorICAgIFRUeXBlKFRTdHJ1Y3R1cmUq
IHVzZXJEZWYsIFRQcmVjaXNpb24gcCA9IEVicFVuZGVmaW5lZCkgOgorICAgICAgICAgICAgdHlw
ZShFYnRTdHJ1Y3QpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihFdnFUZW1wb3JhcnkpLCBzaXpl
KDEpLCBtYXRyaXgoZmFsc2UpLCBhcnJheShmYWxzZSksIGFycmF5U2l6ZSgwKSwgc3RydWN0dXJl
KHVzZXJEZWYpCiAgICAgewotICAgICAgICB0eXBlTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKG4uY19z
dHIoKSk7CiAgICAgfQogCi0gICAgdm9pZCBjb3B5VHlwZShjb25zdCBUVHlwZSYgY29weU9mLCBU
U3RydWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIHR5cGUgPSBjb3B5T2YudHlw
ZTsKLSAgICAgICAgcHJlY2lzaW9uID0gY29weU9mLnByZWNpc2lvbjsKLSAgICAgICAgcXVhbGlm
aWVyID0gY29weU9mLnF1YWxpZmllcjsKLSAgICAgICAgc2l6ZSA9IGNvcHlPZi5zaXplOwotICAg
ICAgICBtYXRyaXggPSBjb3B5T2YubWF0cml4OwotICAgICAgICBhcnJheSA9IGNvcHlPZi5hcnJh
eTsKLSAgICAgICAgYXJyYXlTaXplID0gY29weU9mLmFycmF5U2l6ZTsKLQotICAgICAgICBUU3Ry
dWN0dXJlTWFwSXRlcmF0b3IgaXRlcjsKLSAgICAgICAgaWYgKGNvcHlPZi5zdHJ1Y3R1cmUpIHsK
LSAgICAgICAgICAgIGlmICgoaXRlciA9IHJlbWFwcGVyLmZpbmQoc3RydWN0dXJlKSkgPT0gcmVt
YXBwZXIuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIG5ldyBzdHJ1Y3R1
cmUgaGVyZQotICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IE5ld1Bvb2xUVHlwZUxpc3QoKTsK
LSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvcHlPZi5zdHJ1
Y3R1cmUtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFRUeXBlTGluZSB0eXBl
TGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxpbmUubGluZSA9ICgqY29weU9mLnN0cnVj
dHVyZSlbaV0ubGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxpbmUudHlwZSA9ICgqY29w
eU9mLnN0cnVjdHVyZSlbaV0udHlwZS0+Y2xvbmUocmVtYXBwZXIpOwotICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmUtPnB1c2hfYmFjayh0eXBlTGluZSk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBpdGVyLT5z
ZWNvbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3RydWN0
dXJlID0gMDsKLQotICAgICAgICBmaWVsZE5hbWUgPSAwOwotICAgICAgICBpZiAoY29weU9mLmZp
ZWxkTmFtZSkKLSAgICAgICAgICAgIGZpZWxkTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKGNvcHlPZi5m
aWVsZE5hbWUtPmNfc3RyKCkpOwotICAgICAgICB0eXBlTmFtZSA9IDA7Ci0gICAgICAgIGlmIChj
b3B5T2YudHlwZU5hbWUpCi0gICAgICAgICAgICB0eXBlTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKGNv
cHlPZi50eXBlTmFtZS0+Y19zdHIoKSk7Ci0KLSAgICAgICAgbWFuZ2xlZCA9IDA7Ci0gICAgICAg
IGlmIChjb3B5T2YubWFuZ2xlZCkKLSAgICAgICAgICAgIG1hbmdsZWQgPSBOZXdQb29sVFN0cmlu
Zyhjb3B5T2YubWFuZ2xlZC0+Y19zdHIoKSk7Ci0KLSAgICAgICAgc3RydWN0dXJlU2l6ZSA9IGNv
cHlPZi5zdHJ1Y3R1cmVTaXplOwotICAgICAgICBtYXhBcnJheVNpemUgPSBjb3B5T2YubWF4QXJy
YXlTaXplOwotICAgICAgICBkZWVwZXN0U3RydWN0TmVzdGluZyA9IGNvcHlPZi5kZWVwZXN0U3Ry
dWN0TmVzdGluZzsKLSAgICAgICAgYXNzZXJ0KGNvcHlPZi5hcnJheUluZm9ybWF0aW9uVHlwZSA9
PSAwKTsKLSAgICAgICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOyAvLyBhcnJheUluZm9ybWF0
aW9uVHlwZSBzaG91bGQgbm90IGJlIHNldCBmb3IgYnVpbHRJbiBzeW1ib2wgdGFibGUgbGV2ZWwK
LSAgICB9Ci0KLSAgICBUVHlwZSogY2xvbmUoVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpCi0gICAg
ewotICAgICAgICBUVHlwZSAqbmV3VHlwZSA9IG5ldyBUVHlwZSgpOwotICAgICAgICBuZXdUeXBl
LT5jb3B5VHlwZSgqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgICAgIHJldHVybiBuZXdUeXBlOwot
ICAgIH0KLQotICAgIFRCYXNpY1R5cGUgZ2V0QmFzaWNUeXBlKCkgY29uc3QgeyByZXR1cm4gdHlw
ZTsgfQorICAgIFRCYXNpY1R5cGUgZ2V0QmFzaWNUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VEJhc2ljVHlwZT4odHlwZSk7IH0KICAgICB2b2lkIHNldEJhc2ljVHlwZShUQmFzaWNU
eXBlIHQpIHsgdHlwZSA9IHQ7IH0KIAogICAgIFRQcmVjaXNpb24gZ2V0UHJlY2lzaW9uKCkgY29u
c3QgeyByZXR1cm4gcHJlY2lzaW9uOyB9CiAgICAgdm9pZCBzZXRQcmVjaXNpb24oVFByZWNpc2lv
biBwKSB7IHByZWNpc2lvbiA9IHA7IH0KIAotICAgIFRRdWFsaWZpZXIgZ2V0UXVhbGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gcXVhbGlmaWVyOyB9CisgICAgVFF1YWxpZmllciBnZXRRdWFsaWZpZXIo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUUXVhbGlmaWVyPihxdWFsaWZpZXIpOyB9CiAg
ICAgdm9pZCBzZXRRdWFsaWZpZXIoVFF1YWxpZmllciBxKSB7IHF1YWxpZmllciA9IHE7IH0KIAog
ICAgIC8vIE9uZS1kaW1lbnNpb25hbCBzaXplIG9mIHNpbmdsZSBpbnN0YW5jZSB0eXBlCiAgICAg
aW50IGdldE5vbWluYWxTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZTsgfQogICAgIHZvaWQgc2V0
Tm9taW5hbFNpemUoaW50IHMpIHsgc2l6ZSA9IHM7IH0KICAgICAvLyBGdWxsIHNpemUgb2Ygc2lu
Z2xlIGluc3RhbmNlIG9mIHR5cGUKLSAgICBpbnQgZ2V0T2JqZWN0U2l6ZSgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBpbnQgdG90YWxTaXplOwotCi0gICAgICAgIGlmIChnZXRCYXNpY1R5cGUoKSA9
PSBFYnRTdHJ1Y3QpCi0gICAgICAgICAgICB0b3RhbFNpemUgPSBnZXRTdHJ1Y3RTaXplKCk7Ci0g
ICAgICAgIGVsc2UgaWYgKG1hdHJpeCkKLSAgICAgICAgICAgIHRvdGFsU2l6ZSA9IHNpemUgKiBz
aXplOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0b3RhbFNpemUgPSBzaXplOwotCi0gICAg
ICAgIGlmIChpc0FycmF5KCkpCi0gICAgICAgICAgICB0b3RhbFNpemUgKj0gc3RkOjptYXgoZ2V0
QXJyYXlTaXplKCksIGdldE1heEFycmF5U2l6ZSgpKTsKLQotICAgICAgICByZXR1cm4gdG90YWxT
aXplOwotICAgIH0KKyAgICBzaXplX3QgZ2V0T2JqZWN0U2l6ZSgpIGNvbnN0OwogCiAgICAgYm9v
bCBpc01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1hdHJpeCA/IHRydWUgOiBmYWxzZTsgfQogICAg
IHZvaWQgc2V0TWF0cml4KGJvb2wgbSkgeyBtYXRyaXggPSBtOyB9CkBAIC0xNDIsNDcgKzEyNiwy
MCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FycmF5KCkgY29uc3QgIHsgcmV0dXJuIGFycmF5ID8g
dHJ1ZSA6IGZhbHNlOyB9CiAgICAgaW50IGdldEFycmF5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGFy
cmF5U2l6ZTsgfQogICAgIHZvaWQgc2V0QXJyYXlTaXplKGludCBzKSB7IGFycmF5ID0gdHJ1ZTsg
YXJyYXlTaXplID0gczsgfQotICAgIGludCBnZXRNYXhBcnJheVNpemUgKCkgY29uc3QgeyByZXR1
cm4gbWF4QXJyYXlTaXplOyB9Ci0gICAgdm9pZCBzZXRNYXhBcnJheVNpemUgKGludCBzKSB7IG1h
eEFycmF5U2l6ZSA9IHM7IH0KLSAgICB2b2lkIGNsZWFyQXJyYXluZXNzKCkgeyBhcnJheSA9IGZh
bHNlOyBhcnJheVNpemUgPSAwOyBtYXhBcnJheVNpemUgPSAwOyB9Ci0gICAgdm9pZCBzZXRBcnJh
eUluZm9ybWF0aW9uVHlwZShUVHlwZSogdCkgeyBhcnJheUluZm9ybWF0aW9uVHlwZSA9IHQ7IH0K
LSAgICBUVHlwZSogZ2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBhcnJh
eUluZm9ybWF0aW9uVHlwZTsgfQorICAgIHZvaWQgY2xlYXJBcnJheW5lc3MoKSB7IGFycmF5ID0g
ZmFsc2U7IGFycmF5U2l6ZSA9IDA7IH0KIAogICAgIGJvb2wgaXNWZWN0b3IoKSBjb25zdCB7IHJl
dHVybiBzaXplID4gMSAmJiAhbWF0cml4OyB9CiAgICAgYm9vbCBpc1NjYWxhcigpIGNvbnN0IHsg
cmV0dXJuIHNpemUgPT0gMSAmJiAhbWF0cml4ICYmICFzdHJ1Y3R1cmU7IH0KIAotICAgIFRUeXBl
TGlzdCogZ2V0U3RydWN0KCkgY29uc3QgeyByZXR1cm4gc3RydWN0dXJlOyB9Ci0gICAgdm9pZCBz
ZXRTdHJ1Y3QoVFR5cGVMaXN0KiBzKSB7IHN0cnVjdHVyZSA9IHM7IGNvbXB1dGVEZWVwZXN0U3Ry
dWN0TmVzdGluZygpOyB9Ci0KLSAgICBjb25zdCBUU3RyaW5nJiBnZXRUeXBlTmFtZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICBhc3NlcnQodHlwZU5hbWUpOwotICAgICAgICByZXR1cm4gKnR5cGVO
YW1lOwotICAgIH0KLSAgICB2b2lkIHNldFR5cGVOYW1lKGNvbnN0IFRTdHJpbmcmIG4pCi0gICAg
ewotICAgICAgICB0eXBlTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKG4uY19zdHIoKSk7Ci0gICAgfQot
Ci0gICAgYm9vbCBpc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmllbGROYW1lICE9IDA7IH0KLSAg
ICBjb25zdCBUU3RyaW5nJiBnZXRGaWVsZE5hbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgYXNz
ZXJ0KGZpZWxkTmFtZSk7Ci0gICAgICAgIHJldHVybiAqZmllbGROYW1lOwotICAgIH0KLSAgICB2
b2lkIHNldEZpZWxkTmFtZShjb25zdCBUU3RyaW5nJiBuKQotICAgIHsKLSAgICAgICAgZmllbGRO
YW1lID0gTmV3UG9vbFRTdHJpbmcobi5jX3N0cigpKTsKLSAgICB9CisgICAgVFN0cnVjdHVyZSog
Z2V0U3RydWN0KCkgY29uc3QgeyByZXR1cm4gc3RydWN0dXJlOyB9CisgICAgdm9pZCBzZXRTdHJ1
Y3QoVFN0cnVjdHVyZSogcykgeyBzdHJ1Y3R1cmUgPSBzOyB9CiAKLSAgICBUU3RyaW5nJiBnZXRN
YW5nbGVkTmFtZSgpIHsKLSAgICAgICAgaWYgKCFtYW5nbGVkKSB7Ci0gICAgICAgICAgICBtYW5n
bGVkID0gTmV3UG9vbFRTdHJpbmcoIiIpOwotICAgICAgICAgICAgYnVpbGRNYW5nbGVkTmFtZSgq
bWFuZ2xlZCk7Ci0gICAgICAgICAgICAqbWFuZ2xlZCArPSAnOycgOworICAgIGNvbnN0IFRTdHJp
bmcmIGdldE1hbmdsZWROYW1lKCkgY29uc3QgeworICAgICAgICBpZiAobWFuZ2xlZC5lbXB0eSgp
KSB7CisgICAgICAgICAgICBtYW5nbGVkID0gYnVpbGRNYW5nbGVkTmFtZSgpOworICAgICAgICAg
ICAgbWFuZ2xlZCArPSAnOyc7CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gKm1hbmdsZWQ7
CisgICAgICAgIHJldHVybiBtYW5nbGVkOwogICAgIH0KIAogICAgIGJvb2wgc2FtZUVsZW1lbnRU
eXBlKGNvbnN0IFRUeXBlJiByaWdodCkgY29uc3QgewpAQCAtMjMwLDE0ICsxODcsMTYgQEAgcHVi
bGljOgogICAgIC8vIEZvciB0eXBlICJuZXN0aW5nMiIsIHRoaXMgbWV0aG9kIHdvdWxkIHJldHVy
biAyIC0tIHRoZSBudW1iZXIKICAgICAvLyBvZiBzdHJ1Y3R1cmVzIHRocm91Z2ggd2hpY2ggaW5k
aXJlY3Rpb24gbXVzdCBvY2N1ciB0byByZWFjaCB0aGUKICAgICAvLyBkZWVwZXN0IGZpZWxkIChu
ZXN0aW5nMi5maWVsZDEucG9zaXRpb24pLgotICAgIGludCBnZXREZWVwZXN0U3RydWN0TmVzdGlu
ZygpIGNvbnN0IHsgcmV0dXJuIGRlZXBlc3RTdHJ1Y3ROZXN0aW5nOyB9CisgICAgaW50IGdldERl
ZXBlc3RTdHJ1Y3ROZXN0aW5nKCkgY29uc3QgeworICAgICAgICByZXR1cm4gc3RydWN0dXJlID8g
c3RydWN0dXJlLT5kZWVwZXN0TmVzdGluZygpIDogMDsKKyAgICB9CiAKLSAgICBib29sIGlzU3Ry
dWN0dXJlQ29udGFpbmluZ0FycmF5cygpIGNvbnN0OworICAgIGJvb2wgaXNTdHJ1Y3R1cmVDb250
YWluaW5nQXJyYXlzKCkgY29uc3QgeworICAgICAgICByZXR1cm4gc3RydWN0dXJlID8gc3RydWN0
dXJlLT5jb250YWluc0FycmF5cygpIDogZmFsc2U7CisgICAgfQogCi1wcm90ZWN0ZWQ6Ci0gICAg
dm9pZCBidWlsZE1hbmdsZWROYW1lKFRTdHJpbmcmKTsKLSAgICBpbnQgZ2V0U3RydWN0U2l6ZSgp
IGNvbnN0OwotICAgIHZvaWQgY29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCk7Citwcml2YXRl
OgorICAgIFRTdHJpbmcgYnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0OwogCiAgICAgVEJhc2ljVHlw
ZSB0eXBlICAgICAgOiA2OwogICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOwpAQCAtMjQ2LDE2ICsy
MDUsMTAgQEAgcHJvdGVjdGVkOgogICAgIHVuc2lnbmVkIGludCBtYXRyaXggIDogMTsKICAgICB1
bnNpZ25lZCBpbnQgYXJyYXkgICA6IDE7CiAgICAgaW50IGFycmF5U2l6ZTsKLSAgICBpbnQgbWF4
QXJyYXlTaXplOwotICAgIFRUeXBlKiBhcnJheUluZm9ybWF0aW9uVHlwZTsKIAotICAgIFRUeXBl
TGlzdCogc3RydWN0dXJlOyAgICAgIC8vIDAgdW5sZXNzIHRoaXMgaXMgYSBzdHJ1Y3QKLSAgICBt
dXRhYmxlIGludCBzdHJ1Y3R1cmVTaXplOwotICAgIGludCBkZWVwZXN0U3RydWN0TmVzdGluZzsK
LQotICAgIFRTdHJpbmcgKmZpZWxkTmFtZTsgICAgICAgICAvLyBmb3Igc3RydWN0dXJlIGZpZWxk
IG5hbWVzCi0gICAgVFN0cmluZyAqbWFuZ2xlZDsKLSAgICBUU3RyaW5nICp0eXBlTmFtZTsgICAg
ICAgICAgLy8gZm9yIHN0cnVjdHVyZSBmaWVsZCB0eXBlIG5hbWUKKyAgICBUU3RydWN0dXJlKiBz
dHJ1Y3R1cmU7ICAgICAgLy8gMCB1bmxlc3MgdGhpcyBpcyBhIHN0cnVjdAorCisgICAgbXV0YWJs
ZSBUU3RyaW5nIG1hbmdsZWQ7CiB9OwogCiAvLwpAQCAtMjc3LDkgKzIzMCw5IEBAIHN0cnVjdCBU
UHVibGljVHlwZQogICAgIGJvb2wgYXJyYXk7CiAgICAgaW50IGFycmF5U2l6ZTsKICAgICBUVHlw
ZSogdXNlckRlZjsKLSAgICBpbnQgbGluZTsKKyAgICBUU291cmNlTG9jIGxpbmU7CiAKLSAgICB2
b2lkIHNldEJhc2ljKFRCYXNpY1R5cGUgYnQsIFRRdWFsaWZpZXIgcSwgaW50IGxuID0gMCkKKyAg
ICB2b2lkIHNldEJhc2ljKFRCYXNpY1R5cGUgYnQsIFRRdWFsaWZpZXIgcSwgY29uc3QgVFNvdXJj
ZUxvYyYgbG4pCiAgICAgewogICAgICAgICB0eXBlID0gYnQ7CiAgICAgICAgIHF1YWxpZmllciA9
IHE7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJ
bmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvVmFyaWFibGVJbmZvLmNwcAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMSwxMiArMTMxLDEzIEBAIHZvaWQgZ2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8oY29uc3Qg
VFQKIHsKICAgICBBU1NFUlQodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpOwogCi0g
ICAgY29uc3QgVFR5cGVMaXN0KiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkgewotICAgICAgICBj
b25zdCBUVHlwZSogZmllbGRUeXBlID0gKCpzdHJ1Y3R1cmUpW2ldLnR5cGU7Ci0gICAgICAgIGdl
dFZhcmlhYmxlSW5mbygqZmllbGRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSAr
ICIuIiArIGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtYXBwZWROYW1lICsgIi4iICsgVEludGVybVRyYXZlcnNlcjo6aGFzaChmaWVsZFR5cGUtPmdl
dEZpZWxkTmFtZSgpLCBoYXNoRnVuY3Rpb24pLAorICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxk
cyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZmllbGRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRUeXBlJiBmaWVsZFR5cGUg
PSAqKGZpZWxkc1tpXS0+dHlwZSgpKTsKKyAgICAgICAgY29uc3QgVFN0cmluZyYgZmllbGROYW1l
ID0gZmllbGRzW2ldLT5uYW1lKCk7CisgICAgICAgIGdldFZhcmlhYmxlSW5mbyhmaWVsZFR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lICsgIi4iICsgZmllbGROYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSArICIuIiArIFRJbnRlcm1UcmF2ZXJzZXI6Omhh
c2goZmllbGROYW1lLCBoYXNoRnVuY3Rpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgaW5m
b0xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoRnVuY3Rpb24pOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90
YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyODkgQEAKKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUaGlz
IGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX2J1aWx0aW5fc3ltYm9sX3RhYmxlLnB5Lgor
Ly8gICAgICAgICAgICAgICAgICogRE8gTk9UIEhBTkQgTU9ESUZZICoKKy8vICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpbmNs
dWRlICJjb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5oIgorI2luY2x1ZGUgImNvbXBpbGVy
L1N5bWJvbFRhYmxlLmgiCisKK3N0YXRpYyB2b2lkIGJ1aWx0aW4xKFRTeW1ib2xUYWJsZSogdCwg
VFR5cGUqIHJ2YWx1ZSwgY29uc3QgY2hhciogbmFtZSwgVFR5cGUqIHB0eXBlMSwgY29uc3QgY2hh
ciogcG5hbWUxKQoreworICBURnVuY3Rpb24qIGYgPSBuZXcgVEZ1bmN0aW9uKG5ldyBUU3RyaW5n
KG5hbWUpLCAqcnZhbHVlKTsKKyAgVFBhcmFtZXRlciBwYXJhbSA9IHtuZXcgVFN0cmluZyhwbmFt
ZTEpLCBwdHlwZTF9OworICBmLT5hZGRQYXJhbWV0ZXIocGFyYW0pOworICB0LT5pbnNlcnQoKmYp
OworfQorCitzdGF0aWMgdm9pZCBidWlsdGluMihUU3ltYm9sVGFibGUqIHQsIFRUeXBlKiBydmFs
dWUsIGNvbnN0IGNoYXIqIG5hbWUsIFRUeXBlKiBwdHlwZTEsIGNvbnN0IGNoYXIqIHBuYW1lMSwg
VFR5cGUqIHB0eXBlMiwgY29uc3QgY2hhciogcG5hbWUyKQoreworICBURnVuY3Rpb24qIGYgPSBu
ZXcgVEZ1bmN0aW9uKG5ldyBUU3RyaW5nKG5hbWUpLCAqcnZhbHVlKTsKKyAgVFBhcmFtZXRlciBw
YXJhbTEgPSB7bmV3IFRTdHJpbmcocG5hbWUxKSwgcHR5cGUxfTsKKyAgZi0+YWRkUGFyYW1ldGVy
KHBhcmFtMSk7CisgIFRQYXJhbWV0ZXIgcGFyYW0yID0ge25ldyBUU3RyaW5nKHBuYW1lMiksIHB0
eXBlMn07CisgIGYtPmFkZFBhcmFtZXRlcihwYXJhbTIpOworICB0LT5pbnNlcnQoKmYpOworfQor
CitzdGF0aWMgdm9pZCBidWlsdGluMyhUU3ltYm9sVGFibGUqIHQsIFRUeXBlKiBydmFsdWUsIGNv
bnN0IGNoYXIqIG5hbWUsIFRUeXBlKiBwdHlwZTEsIGNvbnN0IGNoYXIqIHBuYW1lMSwgVFR5cGUq
IHB0eXBlMiwgY29uc3QgY2hhciogcG5hbWUyLCBUVHlwZSogcHR5cGUzLCBjb25zdCBjaGFyKiBw
bmFtZTMpCit7CisgIFRGdW5jdGlvbiogZiA9IG5ldyBURnVuY3Rpb24obmV3IFRTdHJpbmcobmFt
ZSksICpydmFsdWUpOworICBUUGFyYW1ldGVyIHBhcmFtMSA9IHtuZXcgVFN0cmluZyhwbmFtZTEp
LCBwdHlwZTF9OworICBmLT5hZGRQYXJhbWV0ZXIocGFyYW0xKTsKKyAgVFBhcmFtZXRlciBwYXJh
bTIgPSB7bmV3IFRTdHJpbmcocG5hbWUyKSwgcHR5cGUyfTsKKyAgZi0+YWRkUGFyYW1ldGVyKHBh
cmFtMik7CisgIFRQYXJhbWV0ZXIgcGFyYW0zID0ge25ldyBUU3RyaW5nKHBuYW1lMyksIHB0eXBl
M307CisgIGYtPmFkZFBhcmFtZXRlcihwYXJhbTMpOworICB0LT5pbnNlcnQoKmYpOworfQorCit2
b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24oY29uc3QgU2hCdWlsdEluUmVzb3VyY2Vz
JiByZXNvdXJjZXMsIFRTeW1ib2xUYWJsZSogdCkgeworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJy
YWRpYW5zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmFkaWFu
cyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJkZWdyZWVzIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAiZGVncmVlcyIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
ImRlZ3JlZXMiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJyYWRp
YW5zIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmFkaWFucyIp
OworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJkZWdyZWVzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIik7CisgICAgYnVp
bHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgInNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJzaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAic2luIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInNpbiIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJhbmds
ZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBi
dWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAiY29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgImNvcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJjb3Mi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAidGFuIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFu
Z2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAg
IGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJ0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAidGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFz
aW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhc2luIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYXNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRp
bjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgImFzaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJh
Y29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYWNvcyIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4
Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImFjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0
aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJhY29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
YXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYXRh
biIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJ5X292ZXJfeCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhdGFuIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInlfb3Zl
cl94Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImF0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieV9vdmVyX3giKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5X292ZXJfeCIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJwb3ciLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgInBvdyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAicG93IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJwb3ciLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4
Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRp
bjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxv
ZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV4cDIi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJleHAyIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZXhwMiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgImV4cDIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJsb2cy
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibG9nMiIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImxvZzIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4x
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJsb2cyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic3Fy
dCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInNxcnQiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIp
OworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJzcXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAic3FydCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImlu
dmVyc2VzcXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiaW52ZXJzZXNx
cnQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJpbnZlcnNlc3FydCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImludmVyc2VzcXJ0IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYWJz
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2lnbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgInNpZ24iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJzaWdu
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAic2lnbiIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImZsb29yIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAiZmxvb3IiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJm
bG9vciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImZsb29yIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
IngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiY2VpbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVp
bHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgImNlaWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSks
ICJjZWlsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY2VpbCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBi
dWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAiZnJhY3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJmcmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImZyYWN0Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5
Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsK
KyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVp
bHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIm1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJtaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgIm1pbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIs
IGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
bWluIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW4i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1pbiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWluIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
IngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
eSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7
CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMyh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAiY2xhbXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFs
Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWlu
VmFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIm1heFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgIm1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAiY2xhbXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFs
Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWlu
VmFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgIm1heFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIm1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAiY2xhbXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibWF4VmFs
Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAiYSIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJtaXgiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgImEiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWl4IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYSIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJt
aXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImEiKTsKKyAgICBidWlsdGluMyh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAibWl4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJhIik7CisgICAgYnVpbHRp
bjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYSIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVk
Z2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic21vb3Roc3RlcCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJlZGdlMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjModCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgInNtb290aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
eCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic21vb3Ro
c3RlcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJlZGdlMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVp
bHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgInNtb290aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImVkZ2UwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBidWls
dGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBi
dWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicDEiKTsK
KyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZG90IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJkb3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVp
bHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImRvdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAiZG90IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJjcm9zcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAibm9ybWFsaXplIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm9y
bWFsaXplIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWlsdGluMyh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsK
KyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJ
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIk4iKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgIk4iKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSks
ICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIk4iKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgIk4iKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicmVmcmFjdCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIk4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZXRhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInJl
ZnJhY3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAiSSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJOIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV0YSIpOworICAgIGJ1aWx0aW4z
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJyZWZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJldGEiKTsK
KyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicmVmcmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIk4iLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAiZXRhIik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgdHJ1ZSwgZmFsc2UpLCAibWF0cml4Q29tcE11bHQiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCB0cnVlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgdHJ1
ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIHRydWUsIGZhbHNlKSwgIm1hdHJpeENvbXBNdWx0Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgdHJ1ZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IHRydWUsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCB0cnVlLCBmYWxzZSksICJtYXRyaXhDb21wTXVs
dCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIHRydWUs
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCB0cnVlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4i
LCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbiIsIG5l
dyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuIiwgbmV3IFRU
eXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4
IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW5FcXVhbCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbkVxdWFsIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuRXF1
YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1Ro
YW5FcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImxlc3NU
aGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJsZXNz
VGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3Jl
YXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
Z3JlYXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAiZ3JlYXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwg
bmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAiZ3JlYXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJncmVhdGVyVGhhbiIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgImdyZWF0ZXJUaGFuIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAiZ3JlYXRlclRoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJncmVhdGVyVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5
Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW5FcXVhbCIsIG5ldyBUVHlwZShF
YnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5
cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngi
LCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbkVxdWFsIiwgbmV3
IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsK
KyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJlcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgImVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIo
dCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgImVxdWFsIiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJl
cXVhbCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1
YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1
YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibm90RXF1
YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1
YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIs
IG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwgbmV3
IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4
IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwgbmV3IFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBu
ZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYW55IiwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1
aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImFueSIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJh
bnkiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYWxsIiwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOwor
ICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgImFsbCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJhbGwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90IiwgbmV3IFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
eCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm5vdCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJub3QiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1
cmUyRCIsIG5ldyBUVHlwZShFYnRTYW1wbGVyMkQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIGJ1aWx0aW4y
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ0ZXh0dXJlMkRQcm9qIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNv
b3JkIik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFByb2oiLCBuZXcgVFR5cGUo
RWJ0U2FtcGxlcjJELCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
InNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVy
ZUN1YmUiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlckN1YmUsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIGlmIChy
ZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCkgeworICAgICAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAidGV4dHVyZTJEIiwgbmV3IFRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUywgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNv
b3JkIik7CisgICAgfQorICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCkg
eworICAgICAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJEUHJvaiIsIG5ldyBUVHlwZShF
YnRTYW1wbGVyRXh0ZXJuYWxPRVMsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIH0KKyAgICBpZiAocmVzb3Vy
Y2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwpIHsKKyAgICAgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
InRleHR1cmUyRFByb2oiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY29v
cmQiKTsKKyAgICB9CisgICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsK
KyAgICAgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFJlY3QiLCBuZXcgVFR5cGUoRWJ0
U2FtcGxlcjJEUmVjdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIik7CisgICAgfQorICAgIGlmIChyZXNvdXJjZXMuQVJC
X3RleHR1cmVfcmVjdGFuZ2xlKSB7CisgICAgICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJl
MkRSZWN0UHJvaiIsIG5ldyBUVHlwZShFYnRTYW1wbGVyMkRSZWN0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAg
ICB9CisgICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKKyAgICAgICAg
YnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFJlY3RQcm9qIiwgbmV3IFRUeXBlKEVidFNhbXBs
ZXIyRFJlY3QsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2Ft
cGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIH0KK30KKwordm9pZCBJbnNlcnRCdWlsdEluRnVu
Y3Rpb25zVmVydGV4KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLCBUU3ltYm9s
VGFibGUqIHQpIHsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJETG9kIiwgbmV3IFRU
eXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOworICAgIGJ1aWx0aW4z
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ0ZXh0dXJlMkRQcm9qTG9kIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
ImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImxvZCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRQ
cm9qTG9kIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIp
OworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlQ3ViZUxvZCIsIG5ldyBUVHlwZShFYnRT
YW1wbGVyQ3ViZSwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJz
YW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOworfQorCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1i
b2xfdGFibGUuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEg
IyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9s
X3RhYmxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2
IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworI2lmbmRlZiBfQlVJTFRJTl9TWU1CT0xfVEFCTEVfSU5D
TFVERURfCisjZGVmaW5lIF9CVUlMVElOX1NZTUJPTF9UQUJMRV9JTkNMVURFRF8KKworI2luY2x1
ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorCitjbGFzcyBUU3ltYm9sVGFibGU7CisKK2V4dGVy
biB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24oY29uc3QgU2hCdWlsdEluUmVzb3Vy
Y2VzJiByZXNvdXJjZXMsIFRTeW1ib2xUYWJsZSogdCk7CitleHRlcm4gdm9pZCBJbnNlcnRCdWls
dEluRnVuY3Rpb25zVmVydGV4KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLCBU
U3ltYm9sVGFibGUqIHQpOworCisjZW5kaWYgLy8gX0JVSUxUSU5fU1lNQk9MX1RBQkxFX0lOQ0xV
REVEXwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1
dGFibGUKIyMgLTAsMCArMSAjIworKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwJ
KHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9nbHNsYW5nLmwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDEwIEBAIFdISUNIIEdFTkVS
QVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDog
NDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZhbC0+bGV4LmxpbmUg
PSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9maWxlID0geXlsbG9jLT5sYXN0X2ZpbGUg
PSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGxvYy0+bGFzdF9saW5l
ID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1heF9zaXplKSBc
CiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5c2Nhbm5lcik7CiAK
QEAgLTU3LDEwICs2MCw4IEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNj
YW4KICV9CiAKICVvcHRpb24gbm95eXdyYXAgbm91bnB1dCBuZXZlci1pbnRlcmFjdGl2ZQotJW9w
dGlvbiB5eWxpbmVubyByZWVudHJhbnQgYmlzb24tYnJpZGdlCi0lb3B0aW9uIHN0YWNrCislb3B0
aW9uIHl5bGluZW5vIHJlZW50cmFudCBiaXNvbi1icmlkZ2UgYmlzb24tbG9jYXRpb25zCiAlb3B0
aW9uIGV4dHJhLXR5cGU9IlRQYXJzZUNvbnRleHQqIgotJXggQ09NTUVOVCBGSUVMRFMKIAogRCAg
ICAgICAgICAgWzAtOV0KIEwgICAgICAgICAgIFthLXpBLVpfXQpAQCAtNzAsNzMgKzcxLDYwIEBA
IE8gICAgICAgICAgIFswLTddCiAKICUlCiAKLSV7Ci0gICAgVFBhcnNlQ29udGV4dCogY29udGV4
dCA9IHl5ZXh0cmE7Ci0lfQotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMgKi8KLSIvLyJb
XlxuXSogOworImludmFyaWFudCIgICAgeyByZXR1cm4gSU5WQVJJQU5UOyB9CisiaGlnaHAiICAg
ICAgICB7IHJldHVybiBISUdIX1BSRUNJU0lPTjsgfQorIm1lZGl1bXAiICAgICAgeyByZXR1cm4g
TUVESVVNX1BSRUNJU0lPTjsgfQorImxvd3AiICAgICAgICAgeyByZXR1cm4gTE9XX1BSRUNJU0lP
TjsgfQorInByZWNpc2lvbiIgICAgeyByZXR1cm4gUFJFQ0lTSU9OOyB9CisKKyJhdHRyaWJ1dGUi
ICAgIHsgcmV0dXJuIEFUVFJJQlVURTsgfQorImNvbnN0IiAgICAgICAgeyByZXR1cm4gQ09OU1Rf
UVVBTDsgfQorInVuaWZvcm0iICAgICAgeyByZXR1cm4gVU5JRk9STTsgfQorInZhcnlpbmciICAg
ICAgeyByZXR1cm4gVkFSWUlORzsgfQorCisiYnJlYWsiICAgICAgICB7IHJldHVybiBCUkVBSzsg
fQorImNvbnRpbnVlIiAgICAgeyByZXR1cm4gQ09OVElOVUU7IH0KKyJkbyIgICAgICAgICAgIHsg
cmV0dXJuIERPOyB9CisiZm9yIiAgICAgICAgICB7IHJldHVybiBGT1I7IH0KKyJ3aGlsZSIgICAg
ICAgIHsgcmV0dXJuIFdISUxFOyB9CisKKyJpZiIgICAgICAgICAgIHsgcmV0dXJuIElGOyB9Cisi
ZWxzZSIgICAgICAgICB7IHJldHVybiBFTFNFOyB9CisKKyJpbiIgICAgICAgICAgIHsgcmV0dXJu
IElOX1FVQUw7IH0KKyJvdXQiICAgICAgICAgIHsgcmV0dXJuIE9VVF9RVUFMOyB9CisiaW5vdXQi
ICAgICAgICB7IHJldHVybiBJTk9VVF9RVUFMOyB9CisKKyJmbG9hdCIgICAgICAgIHsgcmV0dXJu
IEZMT0FUX1RZUEU7IH0KKyJpbnQiICAgICAgICAgIHsgcmV0dXJuIElOVF9UWVBFOyB9Cisidm9p
ZCIgICAgICAgICB7IHJldHVybiBWT0lEX1RZUEU7IH0KKyJib29sIiAgICAgICAgIHsgcmV0dXJu
IEJPT0xfVFlQRTsgfQorInRydWUiICAgICAgICAgeyB5eWx2YWwtPmxleC5iID0gdHJ1ZTsgIHJl
dHVybiBCT09MQ09OU1RBTlQ7IH0KKyJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZh
bHNlOyByZXR1cm4gQk9PTENPTlNUQU5UOyB9CisKKyJkaXNjYXJkIiAgICAgIHsgcmV0dXJuIERJ
U0NBUkQ7IH0KKyJyZXR1cm4iICAgICAgIHsgcmV0dXJuIFJFVFVSTjsgfQorCisibWF0MiIgICAg
ICAgICB7IHJldHVybiBNQVRSSVgyOyB9CisibWF0MyIgICAgICAgICB7IHJldHVybiBNQVRSSVgz
OyB9CisibWF0NCIgICAgICAgICB7IHJldHVybiBNQVRSSVg0OyB9CisKKyJ2ZWMyIiAgICAgICAg
IHsgcmV0dXJuIFZFQzI7IH0KKyJ2ZWMzIiAgICAgICAgIHsgcmV0dXJuIFZFQzM7IH0KKyJ2ZWM0
IiAgICAgICAgIHsgcmV0dXJuIFZFQzQ7IH0KKyJpdmVjMiIgICAgICAgIHsgcmV0dXJuIElWRUMy
OyB9CisiaXZlYzMiICAgICAgICB7IHJldHVybiBJVkVDMzsgfQorIml2ZWM0IiAgICAgICAgeyBy
ZXR1cm4gSVZFQzQ7IH0KKyJidmVjMiIgICAgICAgIHsgcmV0dXJuIEJWRUMyOyB9CisiYnZlYzMi
ICAgICAgICB7IHJldHVybiBCVkVDMzsgfQorImJ2ZWM0IiAgICAgICAgeyByZXR1cm4gQlZFQzQ7
IH0KKworInNhbXBsZXIyRCIgICAgICAgICAgeyByZXR1cm4gU0FNUExFUjJEOyB9Cisic2FtcGxl
ckN1YmUiICAgICAgICB7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQorInNhbXBsZXJFeHRlcm5hbE9F
UyIgeyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KKyJzYW1wbGVyMkRSZWN0IiAgICAg
IHsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAotICAgIC8qIE11bHRpLWxpbmUgY29tbWVudHMg
Ki8KLSIvKiIgICAgICAgICAgIHsgeXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9
Ci08Q09NTUVOVD4uIHwKLTxDT01NRU5UPlxuIDsKLTxDT01NRU5UPiIqLyIgIHsgeXlfcG9wX3N0
YXRlKHl5c2Nhbm5lcik7IH0KLQotImludmFyaWFudCIgICAgeyByZXR1cm4oSU5WQVJJQU5UKTsg
fQotImhpZ2hwIiAgICAgICAgeyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Ci0ibWVkaXVtcCIg
ICAgICB7IHJldHVybihNRURJVU1fUFJFQ0lTSU9OKTsgfQotImxvd3AiICAgICAgICAgeyByZXR1
cm4oTE9XX1BSRUNJU0lPTik7IH0KLSJwcmVjaXNpb24iICAgIHsgcmV0dXJuKFBSRUNJU0lPTik7
IH0KLQotImF0dHJpYnV0ZSIgICAgeyByZXR1cm4oQVRUUklCVVRFKTsgfQotImNvbnN0IiAgICAg
ICAgeyByZXR1cm4oQ09OU1RfUVVBTCk7IH0KLSJ1bmlmb3JtIiAgICAgIHsgcmV0dXJuKFVOSUZP
Uk0pOyB9Ci0idmFyeWluZyIgICAgICB7IHJldHVybihWQVJZSU5HKTsgfQotCi0iYnJlYWsiICAg
ICAgICB7IHJldHVybihCUkVBSyk7IH0KLSJjb250aW51ZSIgICAgIHsgcmV0dXJuKENPTlRJTlVF
KTsgfQotImRvIiAgICAgICAgICAgeyByZXR1cm4oRE8pOyB9Ci0iZm9yIiAgICAgICAgICB7IHJl
dHVybihGT1IpOyB9Ci0id2hpbGUiICAgICAgICB7IHJldHVybihXSElMRSk7IH0KLQotImlmIiAg
ICAgICAgICAgeyByZXR1cm4oSUYpOyB9Ci0iZWxzZSIgICAgICAgICB7IHJldHVybihFTFNFKTsg
fQotCi0iaW4iICAgICAgICAgICB7IHJldHVybihJTl9RVUFMKTsgfQotIm91dCIgICAgICAgICAg
eyByZXR1cm4oT1VUX1FVQUwpOyB9Ci0iaW5vdXQiICAgICAgICB7IHJldHVybihJTk9VVF9RVUFM
KTsgfQotCi0iZmxvYXQiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJl
dHVybihGTE9BVF9UWVBFKTsgfQotImludCIgICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5
cGUgPSB0cnVlOyByZXR1cm4oSU5UX1RZUEUpOyB9Ci0idm9pZCIgICAgICAgICB7IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihWT0lEX1RZUEUpOyB9Ci0iYm9vbCIgICAgICAg
ICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihCT09MX1RZUEUpOyB9Ci0i
dHJ1ZSIgICAgICAgICB7IHl5bHZhbC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuKEJPT0xDT05TVEFO
VCk7IH0KLSJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyByZXR1cm4oQk9P
TENPTlNUQU5UKTsgfQotCi0iZGlzY2FyZCIgICAgICB7IHJldHVybihESVNDQVJEKTsgfQotInJl
dHVybiIgICAgICAgeyByZXR1cm4oUkVUVVJOKTsgfQotCi0ibWF0MiIgICAgICAgICB7IGNvbnRl
eHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVgyKTsgfQotIm1hdDMiICAgICAg
ICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMyk7IH0KLSJt
YXQ0IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJ
WDQpOyB9Ci0KLSJ2ZWMyIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsg
cmV0dXJuIChWRUMyKTsgfQotInZlYzMiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4gKFZFQzMpOyB9Ci0idmVjNCIgICAgICAgICB7IGNvbnRleHQtPmxleEFm
dGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KLSJpdmVjMiIgICAgICAgIHsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMik7IH0KLSJpdmVjMyIgICAgICAg
IHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMyk7IH0KLSJpdmVj
NCIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDNCk7
IH0KLSJidmVjMiIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJu
IChCVkVDMik7IH0KLSJidmVjMyIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuIChCVkVDMyk7IH0KLSJidmVjNCIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KLQotInNhbXBsZXIyRCIgICAgICAgeyBjb250
ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Ci0ic2FtcGxlckN1
YmUiICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSQ1VC
RTsgfQotInNhbXBsZXJFeHRlcm5hbE9FUyIgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVl
OyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KLSJzYW1wbGVyMkRSZWN0IiB7IGNvbnRl
eHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9Ci0KLSJzdHJ1
Y3QiICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKFNUUlVDVCk7
IH0KKyJzdHJ1Y3QiICAgICAgIHsgcmV0dXJuIFNUUlVDVDsgfQogCiAiYXNtIiAgICAgICAgICB7
IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIApAQCAtMTgzLDEzICsxNzEsMTEg
QEAgTyAgICAgICAgICAgWzAtN10KICJmdmVjMyIgICAgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dv
cmQoeXlzY2FubmVyKTsgfQogImZ2ZWM0IiAgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5
eXNjYW5uZXIpOyB9CiAKLSJzYW1wbGVyMUQiICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlz
Y2FubmVyKTsgfQotInNhbXBsZXIzRCIgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5u
ZXIpOyB9Ci0KLSJzYW1wbGVyMURTaGFkb3ciIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2Fu
bmVyKTsgfQotInNhbXBsZXIyRFNoYWRvdyIgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5u
ZXIpOyB9Ci0KLSJzYW1wbGVyM0RSZWN0IiB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5l
cik7IH0KKyJzYW1wbGVyMUQiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nh
bm5lcik7IH0KKyJzYW1wbGVyM0QiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5
c2Nhbm5lcik7IH0KKyJzYW1wbGVyMURTaGFkb3ciICAgICB7IHJldHVybiByZXNlcnZlZF93b3Jk
KHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMkRTaGFkb3ciICAgICB7IHJldHVybiByZXNlcnZlZF93
b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0RSZWN0IiAgICAgICB7IHJldHVybiByZXNlcnZl
ZF93b3JkKHl5c2Nhbm5lcik7IH0KICJzYW1wbGVyMkRSZWN0U2hhZG93IiB7IHJldHVybiByZXNl
cnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAogInNpemVvZiIgICAgICAgeyByZXR1cm4gcmVzZXJ2
ZWRfd29yZCh5eXNjYW5uZXIpOyB9CkBAIC0yMDMsNzIgKzE4OSw2NCBAQCBPICAgICAgICAgICBb
MC03XQogICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKIH0KIAotMFt4WF17SH0rICAg
ICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAw
LCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KLTB7T30rICAgICAgICAgICAgIHsgeXlsdmFs
LT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4o
SU5UQ09OU1RBTlQpOyB9Ci0we0R9KyAgICAgICAgICAgICB7IGNvbnRleHQtPmVycm9yKHl5bGlu
ZW5vLCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+cmVjb3Zlcigp
OyByZXR1cm4gMDt9Ci17RH0rICAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQot
Ci17RH0re0V9ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
YXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQote0R9KyIuIntEfSoo
e0V9KT8geyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4
dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KLSIuIntEfSsoe0V9KT8gICAgIHsgeXlsdmFs
LT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZM
T0FUQ09OU1RBTlQpOyB9Ci0KLSIrPSIgICAgICAgICAgICB7ICByZXR1cm4oQUREX0FTU0lHTik7
IH0KLSItPSIgICAgICAgICAgICB7ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KLSIqPSIgICAgICAg
ICAgICB7ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KLSIvPSIgICAgICAgICAgICB7ICByZXR1cm4o
RElWX0FTU0lHTik7IH0KLSIlPSIgICAgICAgICAgICB7ICByZXR1cm4oTU9EX0FTU0lHTik7IH0K
LSI8PD0iICAgICAgICAgICB7ICByZXR1cm4oTEVGVF9BU1NJR04pOyB9Ci0iPj49IiAgICAgICAg
ICAgeyAgcmV0dXJuKFJJR0hUX0FTU0lHTik7IH0KLSImPSIgICAgICAgICAgICB7ICByZXR1cm4o
QU5EX0FTU0lHTik7IH0KLSJePSIgICAgICAgICAgICB7ICByZXR1cm4oWE9SX0FTU0lHTik7IH0K
LSJ8PSIgICAgICAgICAgICB7ICByZXR1cm4oT1JfQVNTSUdOKTsgfQotCi0iKysiICAgICAgICAg
ICAgeyAgcmV0dXJuKElOQ19PUCk7IH0KLSItLSIgICAgICAgICAgICB7ICByZXR1cm4oREVDX09Q
KTsgfQotIiYmIiAgICAgICAgICAgIHsgIHJldHVybihBTkRfT1ApOyB9Ci0ifHwiICAgICAgICAg
ICAgeyAgcmV0dXJuKE9SX09QKTsgfQotIl5eIiAgICAgICAgICAgIHsgIHJldHVybihYT1JfT1Ap
OyB9Ci0iPD0iICAgICAgICAgICAgeyAgcmV0dXJuKExFX09QKTsgfQotIj49IiAgICAgICAgICAg
IHsgIHJldHVybihHRV9PUCk7IH0KLSI9PSIgICAgICAgICAgICB7ICByZXR1cm4oRVFfT1ApOyB9
Ci0iIT0iICAgICAgICAgICAgeyAgcmV0dXJuKE5FX09QKTsgfQotIjw8IiAgICAgICAgICAgIHsg
IHJldHVybihMRUZUX09QKTsgfQotIj4+IiAgICAgICAgICAgIHsgIHJldHVybihSSUdIVF9PUCk7
IH0KLSI7IiAgICAgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1
cm4oU0VNSUNPTE9OKTsgfQotKCJ7InwiPCUiKSAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gZmFsc2U7IHJldHVybihMRUZUX0JSQUNFKTsgfQotKCJ9InwiJT4iKSAgICAgIHsgcmV0dXJu
KFJJR0hUX0JSQUNFKTsgfQotIiwiICAgICAgICAgeyBpZiAoY29udGV4dC0+aW5UeXBlUGFyZW4p
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Ci0iOiIgICAg
ICAgICB7IHJldHVybihDT0xPTik7IH0KLSI9IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gZmFsc2U7IHJldHVybihFUVVBTCk7IH0KLSIoIiAgICAgICAgIHsgY29udGV4dC0+bGV4
QWZ0ZXJUeXBlID0gZmFsc2U7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gdHJ1ZTsgcmV0dXJuKExF
RlRfUEFSRU4pOyB9Ci0iKSIgICAgICAgICB7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gZmFsc2U7
IHJldHVybihSSUdIVF9QQVJFTik7IH0KLSgiWyJ8Ijw6IikgICAgICB7IHJldHVybihMRUZUX0JS
QUNLRVQpOyB9Ci0oIl0ifCI6PiIpICAgICAgeyByZXR1cm4oUklHSFRfQlJBQ0tFVCk7IH0KLSIu
IiAgICAgICAgIHsgQkVHSU4oRklFTERTKTsgIHJldHVybihET1QpOyB9Ci0iISIgICAgICAgICB7
IHJldHVybihCQU5HKTsgfQotIi0iICAgICAgICAgeyByZXR1cm4oREFTSCk7IH0KLSJ+IiAgICAg
ICAgIHsgcmV0dXJuKFRJTERFKTsgfQotIisiICAgICAgICAgeyByZXR1cm4oUExVUyk7IH0KLSIq
IiAgICAgICAgIHsgcmV0dXJuKFNUQVIpOyB9Ci0iLyIgICAgICAgICB7IHJldHVybihTTEFTSCk7
IH0KLSIlIiAgICAgICAgIHsgcmV0dXJuKFBFUkNFTlQpOyB9Ci0iPCIgICAgICAgICB7IHJldHVy
bihMRUZUX0FOR0xFKTsgfQotIj4iICAgICAgICAgeyByZXR1cm4oUklHSFRfQU5HTEUpOyB9Ci0i
fCIgICAgICAgICB7IHJldHVybihWRVJUSUNBTF9CQVIpOyB9Ci0iXiIgICAgICAgICB7IHJldHVy
bihDQVJFVCk7IH0KLSImIiAgICAgICAgIHsgcmV0dXJuKEFNUEVSU0FORCk7IH0KLSI/IiAgICAg
ICAgIHsgcmV0dXJuKFFVRVNUSU9OKTsgfQotCi08RklFTERTPntMfSh7TH18e0R9KSogeyAKLSAg
ICBCRUdJTihJTklUSUFMKTsKLSAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmlu
Zyh5eXRleHQpOyAKLSAgICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwotfQotPEZJRUxEUz5bIFx0
XHZcZlxyXSB7fQotCi1bIFx0XHZcblxmXHJdICAgeyAgfQotPCo+PDxFT0Y+PiAgICAgIHsgY29u
dGV4dC0+QWZ0ZXJFT0YgPSB0cnVlOyB5eXRlcm1pbmF0ZSgpOyB9Ci08Kj4uICAgICAgICAgICAg
eyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBjaGFyIiwgeXl0ZXh0LCAiIik7
IHJldHVybiAwOyB9CiswW3hYXXtIfSsgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Cisw
e099KyAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRv
bCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Cit7RH0rICAgICAgICAgICAg
ICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDAp
KTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CisKK3tEfSt7RX0gICAgICAgICAgIHsgeXlsdmFsLT5s
ZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FU
Q09OU1RBTlQ7IH0KK3tEfSsiLiJ7RH0qKHtFfSk/IHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19j
YXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKyIu
IntEfSsoe0V9KT8gICAgIHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9m
X2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKworIis9IiAgICAgICAgICAg
IHsgcmV0dXJuIEFERF9BU1NJR047IH0KKyItPSIgICAgICAgICAgICB7IHJldHVybiBTVUJfQVNT
SUdOOyB9CisiKj0iICAgICAgICAgICAgeyByZXR1cm4gTVVMX0FTU0lHTjsgfQorIi89IiAgICAg
ICAgICAgIHsgcmV0dXJuIERJVl9BU1NJR047IH0KKyIlPSIgICAgICAgICAgICB7IHJldHVybiBN
T0RfQVNTSUdOOyB9CisiPDw9IiAgICAgICAgICAgeyByZXR1cm4gTEVGVF9BU1NJR047IH0KKyI+
Pj0iICAgICAgICAgICB7IHJldHVybiBSSUdIVF9BU1NJR047IH0KKyImPSIgICAgICAgICAgICB7
IHJldHVybiBBTkRfQVNTSUdOOyB9CisiXj0iICAgICAgICAgICAgeyByZXR1cm4gWE9SX0FTU0lH
TjsgfQorInw9IiAgICAgICAgICAgIHsgcmV0dXJuIE9SX0FTU0lHTjsgfQorCisiKysiICAgICAg
ICAgICAgeyByZXR1cm4gSU5DX09QOyB9CisiLS0iICAgICAgICAgICAgeyByZXR1cm4gREVDX09Q
OyB9CisiJiYiICAgICAgICAgICAgeyByZXR1cm4gQU5EX09QOyB9CisifHwiICAgICAgICAgICAg
eyByZXR1cm4gT1JfT1A7IH0KKyJeXiIgICAgICAgICAgICB7IHJldHVybiBYT1JfT1A7IH0KKyI8
PSIgICAgICAgICAgICB7IHJldHVybiBMRV9PUDsgfQorIj49IiAgICAgICAgICAgIHsgcmV0dXJu
IEdFX09QOyB9CisiPT0iICAgICAgICAgICAgeyByZXR1cm4gRVFfT1A7IH0KKyIhPSIgICAgICAg
ICAgICB7IHJldHVybiBORV9PUDsgfQorIjw8IiAgICAgICAgICAgIHsgcmV0dXJuIExFRlRfT1A7
IH0KKyI+PiIgICAgICAgICAgICB7IHJldHVybiBSSUdIVF9PUDsgfQorIjsiICAgICAgICAgICAg
IHsgcmV0dXJuIFNFTUlDT0xPTjsgfQorKCJ7InwiPCUiKSAgICAgIHsgcmV0dXJuIExFRlRfQlJB
Q0U7IH0KKygifSJ8IiU+IikgICAgICB7IHJldHVybiBSSUdIVF9CUkFDRTsgfQorIiwiICAgICAg
ICAgeyByZXR1cm4gQ09NTUE7IH0KKyI6IiAgICAgICAgIHsgcmV0dXJuIENPTE9OOyB9CisiPSIg
ICAgICAgICB7IHJldHVybiBFUVVBTDsgfQorIigiICAgICAgICAgeyByZXR1cm4gTEVGVF9QQVJF
TjsgfQorIikiICAgICAgICAgeyByZXR1cm4gUklHSFRfUEFSRU47IH0KKygiWyJ8Ijw6IikgIHsg
cmV0dXJuIExFRlRfQlJBQ0tFVDsgfQorKCJdInwiOj4iKSAgeyByZXR1cm4gUklHSFRfQlJBQ0tF
VDsgfQorIi4iICAgICAgICAgeyByZXR1cm4gRE9UOyB9CisiISIgICAgICAgICB7IHJldHVybiBC
QU5HOyB9CisiLSIgICAgICAgICB7IHJldHVybiBEQVNIOyB9CisifiIgICAgICAgICB7IHJldHVy
biBUSUxERTsgfQorIisiICAgICAgICAgeyByZXR1cm4gUExVUzsgfQorIioiICAgICAgICAgeyBy
ZXR1cm4gU1RBUjsgfQorIi8iICAgICAgICAgeyByZXR1cm4gU0xBU0g7IH0KKyIlIiAgICAgICAg
IHsgcmV0dXJuIFBFUkNFTlQ7IH0KKyI8IiAgICAgICAgIHsgcmV0dXJuIExFRlRfQU5HTEU7IH0K
KyI+IiAgICAgICAgIHsgcmV0dXJuIFJJR0hUX0FOR0xFOyB9CisifCIgICAgICAgICB7IHJldHVy
biBWRVJUSUNBTF9CQVI7IH0KKyJeIiAgICAgICAgIHsgcmV0dXJuIENBUkVUOyB9CisiJiIgICAg
ICAgICB7IHJldHVybiBBTVBFUlNBTkQ7IH0KKyI/IiAgICAgICAgIHsgcmV0dXJuIFFVRVNUSU9O
OyB9CisKK1sgXHRcdlxuXGZccl0geyB9Cis8PEVPRj4+ICAgIHsgeXl0ZXJtaW5hdGUoKTsgfQor
LiAgICAgICAgICB7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAKICUlCiAKQEAgLTI3OCw3
ICsyNTYsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6CiAgICAg
eXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8gMCA6IHRva2Vu
LnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAgbWVtY3B5KGJ1
ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3Vy
Y2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24ubGluZSksIHl5c2Nhbm5l
cik7CisgICAgeXlzZXRfY29sdW1uKHRva2VuLmxvY2F0aW9uLmZpbGUsIHl5c2Nhbm5lcik7Cisg
ICAgeXlzZXRfbGluZW5vKHRva2VuLmxvY2F0aW9uLmxpbmUsIHl5c2Nhbm5lcik7CiAKICAgICBp
ZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5wdXQgYnVmZmVy
IG92ZXJmbG93Iik7CkBAIC0yOTIsMTIgKzI3MSwxMCBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5f
dCB5eXNjYW5uZXIpIHsKICAgICAKICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVSOwogICAgIFRT
eW1ib2wqIHN5bWJvbCA9IHl5ZXh0cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0KTsKLSAgICBp
ZiAoeXlleHRyYS0+bGV4QWZ0ZXJUeXBlID09IGZhbHNlICYmIHN5bWJvbCAmJiBzeW1ib2wtPmlz
VmFyaWFibGUoKSkgeworICAgIGlmIChzeW1ib2wgJiYgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsK
ICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KHN5
bWJvbCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKSB7Ci0gICAgICAgICAg
ICB5eWV4dHJhLT5sZXhBZnRlclR5cGUgPSB0cnVlOworICAgICAgICBpZiAodmFyaWFibGUtPmlz
VXNlclR5cGUoKSkKICAgICAgICAgICAgIHRva2VuID0gVFlQRV9OQU1FOwotICAgICAgICB9CiAg
ICAgfQogICAgIHl5bHZhbC0+bGV4LnN5bWJvbCA9IHN5bWJvbDsKICAgICByZXR1cm4gdG9rZW47
CkBAIC0zMDYsMjIgKzI4MywxMSBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIp
IHsKIGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHN0cnVjdCB5
eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKIAotICAgIHl5ZXh0
cmEtPmVycm9yKHl5bGluZW5vLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4
dCwgIiIpOworICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbGxlZ2FsIHVzZSBvZiByZXNl
cnZlZCB3b3JkIiwgeXl0ZXh0LCAiIik7CiAgICAgeXlleHRyYS0+cmVjb3ZlcigpOwogICAgIHJl
dHVybiAwOwogfQogCi12b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Y2hhciogcmVhc29uKSB7Ci0gICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0
c190KikgY29udGV4dC0+c2Nhbm5lcjsKLQotICAgIGlmIChjb250ZXh0LT5BZnRlckVPRikgewot
ICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29uLCAidW5leHBlY3RlZCBFT0Yi
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29u
LCB5eXRleHQpOwotICAgIH0KLSAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci19Ci0KIGludCBnbHNs
YW5nX2luaXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5c2Nhbl90IHNj
YW5uZXIgPSBOVUxMOwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQsICZzY2FubmVy
KSkKQEAgLTM0NCw4ICszMTAsOCBAQCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFyc2VDb250ZXh0
KiBjb250CiBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qg
c3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAgVFBhcnNlQ29u
dGV4dCogY29udGV4dCkgewogICAgIHl5cmVzdGFydChOVUxMLCBjb250ZXh0LT5zY2FubmVyKTsK
LSAgICB5eXNldF9saW5lbm8oRW5jb2RlU291cmNlTG9jKDAsIDEpLCBjb250ZXh0LT5zY2FubmVy
KTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNlOworICAgIHl5c2V0X2NvbHVtbigwLCBj
b250ZXh0LT5zY2FubmVyKTsKKyAgICB5eXNldF9saW5lbm8oMSwgY29udGV4dC0+c2Nhbm5lcik7
CiAKICAgICAvLyBJbml0aWFsaXplIHByZXByb2Nlc3Nvci4KICAgICBpZiAoIWNvbnRleHQtPnBy
ZXByb2Nlc3Nvci5pbml0KGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHJldmlzaW9uIDE1MjU5
NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogLy8KLS8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KIC8vCkBAIC0zOSw3ICszOSw2IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBF
UyBQQVJTRVIgKGdsc2wKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAogI2RlZmlu
ZSBZWUVOQUJMRV9OTFMgMAotI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQogCiAjZGVmaW5l
IFlZTEVYX1BBUkFNIGNvbnRleHQtPnNjYW5uZXIKICV9CkBAIC00NywxMCArNDYsMTUgQEAgV0hJ
Q0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbAogJWV4cGVjdCAxIC8qIE9uZSBz
aGlmdCByZWR1Y2UgY29uZmxpY3QgYmVjYXVzZSBvZiBpZiB8IGVsc2UgKi8KICVwdXJlLXBhcnNl
cgogJXBhcnNlLXBhcmFtIHtUUGFyc2VDb250ZXh0KiBjb250ZXh0fQorJWxvY2F0aW9ucworCisl
Y29kZSByZXF1aXJlcyB7CisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxU
WVBFX0lTX0RFQ0xBUkVEIDEKK30KIAogJXVuaW9uIHsKICAgICBzdHJ1Y3QgewotICAgICAgICBU
U291cmNlTG9jIGxpbmU7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0
cmluZzsKICAgICAgICAgICAgIGZsb2F0IGY7CkBAIC02MCw3ICs2NCw2IEBAIFdISUNIIEdFTkVS
QVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwog
ICAgIH0gbGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAg
ICAgVE9wZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9k
ZSogaW50ZXJtTm9kZTsKQEAgLTc0LDIzICs3NywzMSBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdM
U0wgRVMgUEFSU0VSIChnbHNsCiAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKICAg
ICAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAgICAgICBUUGFyYW1ldGVyIHBh
cmFtOwotICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVMaW5lOwotICAgICAgICAgICAgVFR5cGVM
aXN0KiB0eXBlTGlzdDsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7CisgICAgICAgICAgICBU
RmllbGRMaXN0KiBmaWVsZExpc3Q7CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07CiB9CiAKICV7
Ci1leHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbF9wYXJhbSwgdm9pZCogeXlzY2FubmVy
KTsKLWV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hh
ciogcmVhc29uKTsKK2V4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBZWUxUWVBFKiB5
eWxsb2MsIHZvaWQqIHl5c2Nhbm5lcik7CitzdGF0aWMgdm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5
bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKTsKIAotI2Rl
ZmluZSBGUkFHX1ZFUlRfT05MWShTLCBMKSB7ICBcCi0gICAgaWYgKGNvbnRleHQtPnNoYWRlclR5
cGUgIT0gU0hfRlJBR01FTlRfU0hBREVSICYmICBcCi0gICAgICAgIGNvbnRleHQtPnNoYWRlclR5
cGUgIT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXAotICAgICAgICBjb250ZXh0LT5lcnJvcihMLCAi
IHN1cHBvcnRlZCBpbiB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVycyBvbmx5ICIsIFMpOyAgXAotICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7ICBcCi0gICAgfSAgXAotfQorI2RlZmluZSBZWUxMT0Nf
REVGQVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICBpZiAoWVlJRChOKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMSkuZmly
c3RfZmlsZTsgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMs
IDEpLmZpcnN0X2xpbmU7ICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xP
QyhSaHMsIE4pLmxhc3RfZmlsZTsgICAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0g
WVlSSFNMT0MoUmhzLCBOKS5sYXN0X2xpbmU7ICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBlbHNlIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAo
Q3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9maWxlOyAgIFwKKyAg
ICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsg
ICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3Rf
ZmlsZTsgICAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAw
KS5sYXN0X2xpbmU7ICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgVkVSVEVY
X09OTFkoUywgTCkgeyAgXAogICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX1ZFUlRF
WF9TSEFERVIpIHsgIFwKQEAgLTExNiw3ICsxMjcsNiBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQ
YXJzZUNvbnRleHQqIGNvbnRlCiAldG9rZW4gPGxleD4gU0FNUExFUjJEIFNBTVBMRVJDVUJFIFNB
TVBMRVJfRVhURVJOQUxfT0VTIFNBTVBMRVIyRFJFQ1QKIAogJXRva2VuIDxsZXg+IElERU5USUZJ
RVIgVFlQRV9OQU1FIEZMT0FUQ09OU1RBTlQgSU5UQ09OU1RBTlQgQk9PTENPTlNUQU5UCi0ldG9r
ZW4gPGxleD4gRklFTERfU0VMRUNUSU9OCiAldG9rZW4gPGxleD4gTEVGVF9PUCBSSUdIVF9PUAog
JXRva2VuIDxsZXg+IElOQ19PUCBERUNfT1AgTEVfT1AgR0VfT1AgRVFfT1AgTkVfT1AKICV0b2tl
biA8bGV4PiBBTkRfT1AgT1JfT1AgWE9SX09QIE1VTF9BU1NJR04gRElWX0FTU0lHTiBBRERfQVNT
SUdOCkBAIC0xMjcsNiArMTM3LDcgQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0
KiBjb250ZQogJXRva2VuIDxsZXg+IENPTU1BIENPTE9OIEVRVUFMIFNFTUlDT0xPTiBCQU5HIERB
U0ggVElMREUgUExVUyBTVEFSIFNMQVNIIFBFUkNFTlQKICV0b2tlbiA8bGV4PiBMRUZUX0FOR0xF
IFJJR0hUX0FOR0xFIFZFUlRJQ0FMX0JBUiBDQVJFVCBBTVBFUlNBTkQgUVVFU1RJT04KIAorJXR5
cGUgPGxleD4gaWRlbnRpZmllcgogJXR5cGUgPGludGVybT4gYXNzaWdubWVudF9vcGVyYXRvciB1
bmFyeV9vcGVyYXRvcgogJXR5cGUgPGludGVybS5pbnRlcm1UeXBlZE5vZGU+IHZhcmlhYmxlX2lk
ZW50aWZpZXIgcHJpbWFyeV9leHByZXNzaW9uIHBvc3RmaXhfZXhwcmVzc2lvbgogJXR5cGUgPGlu
dGVybS5pbnRlcm1UeXBlZE5vZGU+IGV4cHJlc3Npb24gaW50ZWdlcl9leHByZXNzaW9uIGFzc2ln
bm1lbnRfZXhwcmVzc2lvbgpAQCAtMTU0LDggKzE2NSw4IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3Io
VFBhcnNlQ29udGV4dCogY29udGUKICV0eXBlIDxpbnRlcm0udHlwZT4gdHlwZV9xdWFsaWZpZXIg
ZnVsbHlfc3BlY2lmaWVkX3R5cGUgdHlwZV9zcGVjaWZpZXIKICV0eXBlIDxpbnRlcm0udHlwZT4g
dHlwZV9zcGVjaWZpZXJfbm9fcHJlYyB0eXBlX3NwZWNpZmllcl9ub25hcnJheQogJXR5cGUgPGlu
dGVybS50eXBlPiBzdHJ1Y3Rfc3BlY2lmaWVyCi0ldHlwZSA8aW50ZXJtLnR5cGVMaW5lPiBzdHJ1
Y3RfZGVjbGFyYXRvcgotJXR5cGUgPGludGVybS50eXBlTGlzdD4gc3RydWN0X2RlY2xhcmF0b3Jf
bGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QKKyV0eXBlIDxp
bnRlcm0uZmllbGQ+IHN0cnVjdF9kZWNsYXJhdG9yCisldHlwZSA8aW50ZXJtLmZpZWxkTGlzdD4g
c3RydWN0X2RlY2xhcmF0b3JfbGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gc3RydWN0X2RlY2xhcmF0
aW9uX2xpc3QKICV0eXBlIDxpbnRlcm0uZnVuY3Rpb24+IGZ1bmN0aW9uX2hlYWRlciBmdW5jdGlv
bl9kZWNsYXJhdG9yIGZ1bmN0aW9uX2lkZW50aWZpZXIKICV0eXBlIDxpbnRlcm0uZnVuY3Rpb24+
IGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMgZnVuY3Rpb25fY2FsbF9oZWFkZXIKICV0
eXBlIDxpbnRlcm0+IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVycyBmdW5jdGlv
bl9jYWxsX2hlYWRlcl9ub19wYXJhbWV0ZXJzIGZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyBmdW5jdGlv
bl9wcm90b3R5cGUKQEAgLTE2NCwxMyArMTc1LDE3IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBh
cnNlQ29udGV4dCogY29udGUKICVzdGFydCB0cmFuc2xhdGlvbl91bml0CiAlJQogCitpZGVudGlm
aWVyCisgICAgOiBJREVOVElGSUVSCisgICAgfCBUWVBFX05BTUUKKwogdmFyaWFibGVfaWRlbnRp
ZmllcgogICAgIDogSURFTlRJRklFUiB7CiAgICAgICAgIC8vIFRoZSBzeW1ib2wgdGFibGUgc2Vh
cmNoIHdhcyBkb25lIGluIHRoZSBsZXhpY2FsIHBoYXNlCiAgICAgICAgIGNvbnN0IFRTeW1ib2wq
IHN5bWJvbCA9ICQxLnN5bWJvbDsKICAgICAgICAgY29uc3QgVFZhcmlhYmxlKiB2YXJpYWJsZTsK
ICAgICAgICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigk
MS5saW5lLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIiwgJDEuc3RyaW5nLT5jX3N0cigpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIiwgJDEu
c3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgICAgICBU
VmFyaWFibGUqIGZha2VWYXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJDEuc3RyaW5nLCB0eXBlKTsK
QEAgLTE3OSwxMCArMTk0LDE3IEBAIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIFRoaXMgaWRlbnRpZmllciBjYW4gb25seSBiZSBhIHZhcmlhYmxl
IHR5cGUgc3ltYm9sCiAgICAgICAgICAgICBpZiAoISBzeW1ib2wtPmlzVmFyaWFibGUoKSkgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ2YXJpYWJsZSBleHBlY3Rl
ZCIsICQxLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDEsICJ2YXJpYWJsZSBleHBlY3RlZCIsICQxLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB2
YXJpYWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7CisKKyAgICAg
ICAgICAgIGlmIChjb250ZXh0LT5pc1ZhcmlhYmxlQnVpbHRJbih2YXJpYWJsZSkgJiYgCisgICAg
ICAgICAgICAgICAgIXZhcmlhYmxlLT5nZXRFeHRlbnNpb24oKS5lbXB0eSgpICYmCisgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjayhAMSwgdmFyaWFibGUtPmdldEV4
dGVuc2lvbigpKSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcs
IGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVyeSwgYW5kIHRoZSBwb29sCkBAIC0xOTEsMTEgKzIx
MywxMiBAQCB2YXJpYWJsZV9pZGVudGlmaWVyCiAgICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlw
ZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ICkgewogICAgICAgICAgICAgQ29uc3RhbnRV
bmlvbiogY29uc3RBcnJheSA9IHZhcmlhYmxlLT5nZXRDb25zdFBvaW50ZXIoKTsKICAgICAgICAg
ICAgIFRUeXBlIHQodmFyaWFibGUtPmdldFR5cGUoKSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICQxLmxpbmUp
OworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bihjb25zdEFycmF5LCB0LCBAMSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJp
YWJsZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlLT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTIwOSwyMiArMjMyLDIyIEBAIHByaW1h
cnlfZXhwcmVzc2lvbgogICAgICAgICAvLyBjaGVjayBmb3Igb3ZlcmZsb3cgZm9yIGNvbnN0YW50
cwogICAgICAgICAvLwogICAgICAgICBpZiAoYWJzKCQxLmkpID49ICgxIDw8IDE2KSkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJm
bG93IiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICIgaW50ZWdlciBjb25z
dGFudCBvdmVyZmxvdyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgkMS5pKTsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAgfQogICAgIHwg
RkxPQVRDT05TVEFOVCB7CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KCQxLmYpOwot
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDEubGluZSk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAg
ICAgfQogICAgIHwgQk9PTENPTlNUQU5UIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29u
c3QoJDEuYik7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
ICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCBAMSk7CiAgICAgfQogICAgIHwgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIHsK
ICAgICAgICAgJCQgPSAkMjsKQEAgLTIzOCwxMDEgKzI2MSw5NyBAQCBwb3N0Zml4X2V4cHJlc3Np
b24KICAgICB8IHBvc3RmaXhfZXhwcmVzc2lvbiBMRUZUX0JSQUNLRVQgaW50ZWdlcl9leHByZXNz
aW9uIFJJR0hUX0JSQUNLRVQgewogICAgICAgICBpZiAoISQxLT5pc0FycmF5KCkgJiYgISQxLT5p
c01hdHJpeCgpICYmICEkMS0+aXNWZWN0b3IoKSkgewogICAgICAgICAgICAgaWYgKCQxLT5nZXRB
c1N5bWJvbE5vZGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAi
IGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAk
MS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAyLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5
LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAkMS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgp
LmNfc3RyKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCQyLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwg
b3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoQDIsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVj
dG9yICIsICJleHByZXNzaW9uIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QgJiYgJDMtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICBp
ZiAoJDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKLSAgICAg
ICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlOb2RlKCQzLT5nZXRBc0NvbnN0
YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCksICQxLCAkMi5s
aW5lKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkpIHsgIC8vIGNvbnN0
YW50IGZvbGRpbmcgZm9yIHZlY3RvcnMKLSAgICAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZp
ZWxkczsKLSAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKLSAgICAgICAgICAgICAgICBm
aWVsZHMub2Zmc2V0c1swXSA9ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7IC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3YXkgYmVjYXVz
ZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5Ci0gICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwgJDIubGluZSk7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9y
IG1hdHJpY2VzCi0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdE1hdHJpeE5v
ZGUoJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJ
Q29uc3QoKSwgJDEsICQyLmxpbmUpOworICAgICAgICBpZiAoJDMtPmdldFF1YWxpZmllcigpID09
IEV2cUNvbnN0KSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSAkMy0+Z2V0QXNDb25zdGFudFVu
aW9uKCktPmdldElDb25zdCgwKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBpbmZvU3RyZWFtOworICAgICAgICAgICAgICAg
IGluZm9TdHJlYW0gPDwgaW5kZXg7CisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgaW5mbyA9
IGluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJu
ZWdhdGl2ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOworICAgICAgICAgICAgICAgIGluZGV4ID0gMDsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICgkMy0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoKCQxLT5pc1ZlY3RvcigpIHx8ICQxLT5pc01h
dHJpeCgpKSAmJiAkMS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gJDMtPmdldEFzQ29u
c3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSAmJiAhJDEt
PmlzQXJyYXkoKSApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0
cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZp
ZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigp
LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsK
LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgZXh0
cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCQxLT5p
c0FycmF5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdl
dEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJDEt
PmdldFR5cGUoKS5nZXRNYXhBcnJheVNpemUoKSA8PSAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCkt
PmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNldE1heFNpemUoJDEtPmdldEFzU3lt
Ym9sTm9kZSgpLCAkMS0+Z2V0VHlwZVBvaW50ZXIoKSwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigp
LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgdHJ1ZSwgJDIubGluZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgkMS0+Z2V0QXNTeW1ib2xO
b2RlKCksICQxLT5nZXRUeXBlUG9pbnRlcigpLCAwLCBmYWxzZSwgJDIubGluZSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICggJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJ
Q29uc3QoKSA+PSAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0
IG9mIHJhbmdlICciIDw8ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBv
aW50ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIiciOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIiwgIlsiLCBleHRy
YUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4
KEVPcEluZGV4RGlyZWN0LCAkMSwgJDMsICQyLmxpbmUpOworICAgICAgICAgICAgaWYgKCQxLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoJDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKKyAgICAg
ICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdEFycmF5Tm9kZShpbmRleCwgJDEs
IEAyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc1ZlY3RvcigpKSB7ICAvLyBj
b25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAgICAgICAgICAgIFRWZWN0b3JG
aWVsZHMgZmllbGRzOworICAgICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKKyAgICAg
ICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVlZCB0byBkbyBp
dCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkKKyAgICAg
ICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAk
MSwgQDIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsgLy8g
Y29uc3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoaW5kZXgsICQxLCBAMik7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJy
YXkoKSAmJiAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgImFycmF5IG11c3QgYmUg
cmVkZWNsYXJlZCB3aXRoIGEgc2l6ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRoIGEgdmFyaWFi
bGUiKTsKKyAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoaW5kZXggPj0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBv
dXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0
cigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4ID0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSAt
IDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCgk
MS0+aXNWZWN0b3IoKSB8fCAkMS0+aXNNYXRyaXgoKSkgJiYgJDEtPmdldFR5cGUoKS5nZXROb21p
bmFsU2l6ZSgpIDw9IGluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFt
IDw8ICJmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFt
LnN0cigpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiIsICJbIiwg
ZXh0cmFJbmZvLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gICQxLT5nZXRUeXBlKCkuZ2V0Tm9taW5h
bFNpemUoKSAtIDE7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgJDEsICQzLCAk
Mi5saW5lKTsKKyAgICAgICAgICAgICAgICAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVu
aW9uQXJyYXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7CisgICAgICAgICAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCAkMywg
QDIpOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgJDEsICQzLCBA
Mik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCQkID09IDApIHsKICAgICAgICAgICAgIENvbnN0
YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAg
IHVuaW9uQXJyYXktPnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQs
IEVicEhpZ2gsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0
LCBFYnBIaWdoLCBFdnFDb25zdCksIEAyKTsKICAgICAgICAgfSBlbHNlIGlmICgkMS0+aXNBcnJh
eSgpKSB7CiAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSkKLSAgICAg
ICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLCAk
MS0+Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAkJC0+c2V0VHlw
ZShUVHlwZSgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKSk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+
Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCksICQxLT5p
c01hdHJpeCgpKSk7CiAKICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmll
cigpID09IEV2cUNvbnN0KQogICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5z
ZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgp
ICYmICQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAg
ICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24o
KSwgRXZxQ29uc3QsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKCQx
LT5pc01hdHJpeCgpKQotICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2lj
VHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxT
aXplKCkpKTsKLSAgICAgICAgZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkgJiYgJDEtPmdldFR5cGUo
KS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRU
eXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCkpOwot
ICAgICAgICBlbHNlIGlmICgkMS0+aXNWZWN0b3IoKSkKLSAgICAgICAgICAgICQkLT5zZXRUeXBl
KFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3Jh
cnkpKTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7
CisgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICQxLT5nZXRUeXBlKCkuZ2V0UXVh
bGlmaWVyKCkgPT0gRXZxQ29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAg
ICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lv
bigpLCBxdWFsaWZpZXIsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoJDEtPmlzVmVjdG9yKCkpIHsKKyAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0g
JDEtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZx
VGVtcG9yYXJ5OworICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlw
ZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIHF1YWxpZmllcikpOworICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgJCQtPnNldFR5cGUoJDEtPmdldFR5cGUoKSk7CisgICAgICAgIH0KICAgICB9
CiAgICAgfCBmdW5jdGlvbl9jYWxsIHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBw
b3N0Zml4X2V4cHJlc3Npb24gRE9UIEZJRUxEX1NFTEVDVElPTiB7CisgICAgfCBwb3N0Zml4X2V4
cHJlc3Npb24gRE9UIGlkZW50aWZpZXIgewogICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDMubGluZSwgImNhbm5vdCBhcHBseSBkb3Qgb3Bl
cmF0b3IgdG8gYW4gYXJyYXkiLCAiLiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMs
ICJjYW5ub3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS0+aXNW
ZWN0b3IoKSkgewogICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAg
ICBpZiAoISBjb250ZXh0LT5wYXJzZVZlY3RvckZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9t
aW5hbFNpemUoKSwgZmllbGRzLCAkMy5saW5lKSkgeworICAgICAgICAgICAgaWYgKCEgY29udGV4
dC0+cGFyc2VWZWN0b3JGaWVsZHMoKiQzLnN0cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZp
ZWxkcywgQDMpKSB7CiAgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CiAgICAgICAgICAg
ICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSAwOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCku
Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVj
dG9yIGZpZWxkcwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RWZWN0b3JO
b2RlKGZpZWxkcywgJDEsICQzLmxpbmUpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+
YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgJDEsIEAzKTsKICAgICAgICAgICAgICAgICBpZiAo
JCQgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAgICAgICAgICQkID0gJDE7CkBAIC0zNDEsMTMgKzM2MCwxMyBAQCBwb3N0Zml4X2V4
cHJlc3Npb24KICAgICAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJh
c2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0LCAoaW50KSAoKiQzLnN0cmlu
Zykuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFRTdHJp
bmcgdmVjdG9yU3RyaW5nID0gKiQzLnN0cmluZzsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmllbGRzLCAkMy5s
aW5lKTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRl
eChFT3BWZWN0b3JTd2l6emxlLCAkMSwgaW5kZXgsICQyLmxpbmUpOworICAgICAgICAgICAgICAg
IFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShm
aWVsZHMsIEAzKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRJbmRleChFT3BWZWN0b3JTd2l6emxlLCAkMSwgaW5kZXgsIEAyKTsKICAgICAgICAgICAgICAg
ICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24o
KSwgRXZxVGVtcG9yYXJ5LCAoaW50KSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsKICAgICAgICAgICAgIFRN
YXRyaXhGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VNYXRy
aXhGaWVsZHMoKiQzLnN0cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgJDMubGlu
ZSkpIHsKKyAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBhcnNlTWF0cml4RmllbGRzKCokMy5z
dHJpbmcsICQxLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsIEAzKSkgewogICAgICAgICAgICAg
ICAgIGZpZWxkcy53aG9sZVJvdyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9s
ZUNvbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy5yb3cgPSAwOwpAQCAtMzU2LDg0
ICszNzUsNzggQEAgcG9zdGZpeF9leHByZXNzaW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChmaWVsZHMud2hvbGVSb3cgfHwgZmllbGRzLndob2xlQ29sKSB7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1w
bGVtZW50ZWQgeWV0IiwgIi4iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwg
IiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgICAgIHVu
aW9uQXJyYXktPnNldElDb25zdCgwKTsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGlu
ZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDMubGluZSk7Ci0gICAgICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJl
Y3QsICQxLCBpbmRleCwgJDIubGluZSk7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBp
bmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAzKTsKKyAgICAgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwg
JDEsIGluZGV4LCBAMik7CiAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdl
dEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksRXZxVGVtcG9yYXJ5LCAkMS0+Z2V0Tm9t
aW5hbFNpemUoKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBDb25z
dGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAg
ICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGZpZWxkcy5jb2wgKiAkMS0+Z2V0Tm9taW5hbFNp
emUoKSArIGZpZWxkcy5yb3cpOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXgg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMy5saW5lKTsKLSAgICAgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwg
JDEsIGluZGV4LCAkMi5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDMpOworICAgICAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwg
aW5kZXgsIEAyKTsKICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFz
aWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKCQxLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgICAg
IGJvb2wgZmllbGRGb3VuZCA9IGZhbHNlOwotICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBm
aWVsZHMgPSAkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOwotICAgICAgICAgICAgaWYgKGZpZWxk
cyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInN0cnVj
dHVyZSBoYXMgbm8gZmllbGRzIiwgIkludGVybmFsIEVycm9yIik7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOwotICAgICAgICAgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICgoKmZpZWxkcylbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKiQzLnN0cmlu
ZykgewotICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+
ZmllbGRzKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgICAgIGZvciAo
aSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmll
bGRzW2ldLT5uYW1lKCkgPT0gKiQzLnN0cmluZykgeworICAgICAgICAgICAgICAgICAgICBmaWVs
ZEZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0KCokMy5zdHJp
bmcsICQxLCAkMi5saW5lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkJC0+c2V0VHlwZSgqKCpmaWVsZHMpW2ldLnR5cGUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNoYW5nZSB0aGUgcXVhbGlmaWVyIG9mIHRoZSByZXR1cm4gdHlwZSwgbm90
IG9mIHRoZSBzdHJ1Y3R1cmUgZmllbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBh
cyB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1
Y3R1cmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigp
LT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3Rh
bnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksICooKmZpZWxkcylbaV0udHlwZSwgJDMubGluZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChF
T3BJbmRleERpcmVjdFN0cnVjdCwgJDEsIGluZGV4LCAkMi5saW5lKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICQkLT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoZmllbGRGb3VuZCkgeworICAgICAgICAgICAgICAgIGlmICgkMS0+
Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAgICAgICAgICAg
ICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RTdHJ1Y3QoKiQzLnN0cmluZywgJDEsIEAyKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCQkID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICQkID0gJDE7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0
eXBlLCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBmaWVsZAorICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHZhcmlvdXMg
c3RydWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigp
LT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIu
bGluZSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAg
ICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOworICAgICAgICAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRJQ29uc3QoaSk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5k
ZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAq
ZmllbGRzW2ldLT50eXBlKCksIEAzKTsKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICQxLCBpbmRleCwg
QDIpOworICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkp
OwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoQDIsICIgbm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1cmUiLCAkMy5z
dHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAg
ICAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBmaWVsZCBzZWxlY3Rpb24gcmVx
dWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIsICQz
LnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiBmaWVs
ZCBzZWxlY3Rpb24gcmVxdWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0
IGhhbmQgc2lkZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgICAgIC8vIGRv
bid0IGRlbGV0ZSAkMy5zdHJpbmcsIGl0J3MgZnJvbSB0aGUgcG9vbAogICAgIH0KICAgICB8IHBv
c3RmaXhfZXhwcmVzc2lvbiBJTkNfT1AgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJy
b3JDaGVjaygkMi5saW5lLCAiKysiLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVF
cnJvckNoZWNrKEAyLCAiKysiLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0
SW5jcmVtZW50LCAkMSwgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdEluY3JlbWVudCwg
JDEsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDIubGluZSwgIisrIiwgJDEtPmdldENv
bXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKEAyLCAi
KysiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcG9z
dGZpeF9leHByZXNzaW9uIERFQ19PUCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJv
ckNoZWNrKCQyLmxpbmUsICItLSIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVy
cm9yQ2hlY2soQDIsICItLSIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RE
ZWNyZW1lbnQsICQxLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0RGVjcmVtZW50LCAk
MSwgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMi5saW5lLCAiLS0iLCAkMS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDIsICIt
LSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTQ2MSwxOCArNDc0LDE4
IEBAIGZ1bmN0aW9uX2NhbGwKICAgICAgICAgICAgIC8vIFRoZWlyIHBhcmFtZXRlcnMgd2lsbCBi
ZSB2ZXJpZmllZCBhbGdvcml0aG1pY2FsbHkuCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAg
VFR5cGUgdHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOyAgLy8gdXNlIHRoaXMgdG8gZ2V0IHRo
ZSB0eXBlIGJhY2sKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1Y3RvckVycm9yQ2hl
Y2soJDEubGluZSwgJDEuaW50ZXJtTm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgeworICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVjayhAMSwgJDEuaW50ZXJtTm9k
ZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgewogICAgICAgICAgICAgICAgICQkID0gMDsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAvLyBJ
dCdzIGEgY29uc3RydWN0b3IsIG9mIHR5cGUgJ3R5cGUnLgogICAgICAgICAgICAgICAgIC8vCi0g
ICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvcigkMS5pbnRlcm1Ob2Rl
LCAmdHlwZSwgb3AsIGZuQ2FsbCwgJDEubGluZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5hZGRDb25zdHJ1Y3RvcigkMS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgQDEp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwgJDEubGluZSk7CisgICAg
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0
b3IoMCwgb3AsIEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICQkLT5zZXRUeXBlKHR5
cGUpOwogICAgICAgICB9IGVsc2UgewpAQCAtNDgxLDEzICs0OTQsMTMgQEAgZnVuY3Rpb25fY2Fs
bAogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIGNvbnN0IFRGdW5jdGlvbiogZm5DYW5kaWRh
dGU7CiAgICAgICAgICAgICBib29sIGJ1aWx0SW47Ci0gICAgICAgICAgICBmbkNhbmRpZGF0ZSA9
IGNvbnRleHQtPmZpbmRGdW5jdGlvbigkMS5saW5lLCBmbkNhbGwsICZidWlsdEluKTsKKyAgICAg
ICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKEAxLCBmbkNhbGwsICZi
dWlsdEluKTsKICAgICAgICAgICAgIGlmIChmbkNhbmRpZGF0ZSkgewogICAgICAgICAgICAgICAg
IC8vCiAgICAgICAgICAgICAgICAgLy8gQSBkZWNsYXJlZCBmdW5jdGlvbi4KICAgICAgICAgICAg
ICAgICAvLwogICAgICAgICAgICAgICAgIGlmIChidWlsdEluICYmICFmbkNhbmRpZGF0ZS0+Z2V0
RXh0ZW5zaW9uKCkuZW1wdHkoKSAmJgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRl
bnNpb25FcnJvckNoZWNrKCQxLmxpbmUsIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjayhAMSwgZm5D
YW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG9wID0gZm5D
YW5kaWRhdGUtPmdldEJ1aWx0SW5PcCgpOwpAQCAtNDk5LDcgKzUxMiw3IEBAIGZ1bmN0aW9uX2Nh
bGwKICAgICAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBUcmVhdCBpdCBsaWtlIGEgYnVpbHQtaW4gdW5hcnkgb3BlcmF0b3IuCiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkVW5hcnlNYXRoKG9wLCAkMS5pbnRlcm1Ob2RlLCAwLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRVbmFyeU1hdGgob3AsICQxLmludGVybU5vZGUsIEAxLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJidWlsdCBpbiB1
bmFyeSBvcGVyYXRvciBmdW5jdGlvbi4gIFR5cGU6ICIgPDwgc3RhdGljX2Nhc3Q8VEludGVybVR5
cGVkKj4oJDEuaW50ZXJtTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCk7CkBAIC01MDgsMTIgKzUy
MSwxMiBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWVlFUlJP
UjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNl
dEFnZ3JlZ2F0ZU9wZXJhdG9yKCQxLmludGVybUFnZ3JlZ2F0ZSwgb3AsICQxLmxpbmUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVn
YXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBvcCwgQDEpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyBhIHJlYWwgZnVuY3Rpb24gY2FsbAogCi0gICAgICAgICAgICAgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQxLmludGVybUFnZ3Jl
Z2F0ZSwgRU9wRnVuY3Rpb25DYWxsLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdn
cmVnYXRlLCBFT3BGdW5jdGlvbkNhbGwsIEAxKTsKICAgICAgICAgICAgICAgICAgICAgJCQtPnNl
dFR5cGUoZm5DYW5kaWRhdGUtPmdldFJldHVyblR5cGUoKSk7CiAKICAgICAgICAgICAgICAgICAg
ICAgLy8gdGhpcyBpcyBob3cgd2Uga25vdyB3aGV0aGVyIHRoZSBnaXZlbiBmdW5jdGlvbiBpcyBh
IGJ1aWx0SW4gZnVuY3Rpb24gb3IgYSB1c2VyIGRlZmluZWQgZnVuY3Rpb24KQEAgLTU0MCw3ICs1
NTMsNyBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAgICAgICAgICAgLy8gUHV0IG9uIGEgZHVtbXkg
bm9kZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1
bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25B
cnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDEpOwogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTUzLDcgKzU2
Niw3IEBAIGZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9kCiAgICAgICAgICQkID0gJDE7CiAgICAgfQog
ICAgIHwgcG9zdGZpeF9leHByZXNzaW9uIERPVCBmdW5jdGlvbl9jYWxsX2dlbmVyaWMgewotICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMy5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIs
ICIiKTsKKyAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9y
dGVkIiwgIiIpOwogICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICQkID0gJDM7
CiAgICAgfQpAQCAtNTYyLDExICs1NzUsOSBAQCBmdW5jdGlvbl9jYWxsX29yX21ldGhvZAogZnVu
Y3Rpb25fY2FsbF9nZW5lcmljCiAgICAgOiBmdW5jdGlvbl9jYWxsX2hlYWRlcl93aXRoX3BhcmFt
ZXRlcnMgUklHSFRfUEFSRU4gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICAkJC5saW5lID0g
JDIubGluZTsKICAgICB9CiAgICAgfCBmdW5jdGlvbl9jYWxsX2hlYWRlcl9ub19wYXJhbWV0ZXJz
IFJJR0hUX1BBUkVOIHsKICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxp
bmU7CiAgICAgfQogICAgIDsKIApAQCAtNTkyLDcgKzYwMyw3IEBAIGZ1bmN0aW9uX2NhbGxfaGVh
ZGVyX3dpdGhfcGFyYW1ldGVycwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcg
VFR5cGUoJDMtPmdldFR5cGUoKSkgfTsKICAgICAgICAgJDEuZnVuY3Rpb24tPmFkZFBhcmFtZXRl
cihwYXJhbSk7CiAgICAgICAgICQkLmZ1bmN0aW9uID0gJDEuZnVuY3Rpb247Ci0gICAgICAgICQk
LmludGVybU5vZGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRl
cm1Ob2RlLCAkMywgJDIubGluZSk7CisgICAgICAgICQkLmludGVybU5vZGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCAkMywgQDIpOwogICAgIH0K
ICAgICA7CiAKQEAgLTYxNywzOSArNjI4LDM5IEBAIGZ1bmN0aW9uX2lkZW50aWZpZXIKICAgICAg
ICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgaWYgKCQxLm1hdHJpeCkgewog
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2goJDEuc2l6ZSkgewotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0TWF0MjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoKCQxLnNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzI7ICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSAzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9
IEVPcENvbnN0cnVjdFZlYzM7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEZs
b2F0OyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVj
dFZlYzI7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0
cnVjdFZlYzM7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENv
bnN0cnVjdFZlYzQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0SW50Ogog
ICAgICAgICAgICAgICAgIHN3aXRjaCgkMS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAx
OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1
Y3RJbnQ7ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZFUlRf
T05MWSgiaXZlYzIiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzMiLCAkMS5s
aW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSA0OiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzQiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25z
dHJ1Y3RJVmVjNDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0
cnVjdEludDsgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3Ry
dWN0SVZlYzI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1
Y3RJVmVjMzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVj
dElWZWM0OyBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIEVidEJvb2w6CiAgICAgICAgICAgICAgICAgc3dpdGNoKCQxLnNp
emUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEJvb2w7ICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMiIsICQxLmxpbmUpOyBvcCA9
IEVPcENvbnN0cnVjdEJWZWMyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAg
IEZSQUdfVkVSVF9PTkxZKCJidmVjMyIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMz
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJi
dmVjNCIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWM0OyBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdEJWZWMzOyBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9wID09IEVPcE51bGwpIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiY2Fubm90IGNvbnN0cnVjdCB0aGlz
IHR5cGUiLCBnZXRCYXNpY1N0cmluZygkMS50eXBlKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDEsICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5n
KCQxLnR5cGUpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAgICAgJDEudHlwZSA9IEVidEZsb2F0OwogICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0RmxvYXQ7CkBAIC02NjEsMTQgKzY3Miw3IEBAIGZ1bmN0aW9uX2lkZW50aWZpZXIKICAg
ICAgICAgJCQgPSBmdW5jdGlvbjsKICAgICB9CiAgICAgfCBJREVOVElGSUVSIHsKLSAgICAgICAg
aWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lk
LCBFYnBVbmRlZmluZWQpOwotICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5j
dGlvbigkMS5zdHJpbmcsIHR5cGUpOwotICAgICAgICAkJCA9IGZ1bmN0aW9uOwotICAgIH0KLSAg
ICB8IEZJRUxEX1NFTEVDVElPTiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9y
Q2hlY2soJDEubGluZSwgKiQxLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZl
ZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAg
IFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCQxLnN0cmluZywgdHlwZSk7CkBA
IC02ODEsMjggKzY4NSwyOCBAQCB1bmFyeV9leHByZXNzaW9uCiAgICAgICAgICQkID0gJDE7CiAg
ICAgfQogICAgIHwgSU5DX09QIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4
dC0+bFZhbHVlRXJyb3JDaGVjaygkMS5saW5lLCAiKysiLCAkMikpCisgICAgICAgIGlmIChjb250
ZXh0LT5sVmFsdWVFcnJvckNoZWNrKEAxLCAiKysiLCAkMikpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5
TWF0aChFT3BQcmVJbmNyZW1lbnQsICQyLCAkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVJ
bmNyZW1lbnQsICQyLCBAMSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQg
PT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsICIrKyIs
ICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BF
cnJvcihAMSwgIisrIiwgJDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgfQogICAgIH0K
ICAgICB8IERFQ19PUCB1bmFyeV9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxW
YWx1ZUVycm9yQ2hlY2soJDEubGluZSwgIi0tIiwgJDIpKQorICAgICAgICBpZiAoY29udGV4dC0+
bFZhbHVlRXJyb3JDaGVjayhAMSwgIi0tIiwgJDIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgo
RU9wUHJlRGVjcmVtZW50LCAkMiwgJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVt
ZW50LCAkMiwgQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDAp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMS5saW5lLCAiLS0iLCAkMi0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3Io
QDEsICItLSIsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDI7CiAgICAgICAgIH0KICAgICB9CiAgICAg
fCB1bmFyeV9vcGVyYXRvciB1bmFyeV9leHByZXNzaW9uIHsKICAgICAgICAgaWYgKCQxLm9wICE9
IEVPcE51bGwpIHsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVu
YXJ5TWF0aCgkMS5vcCwgJDIsICQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgkMS5vcCwgJDIs
IEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewog
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yT3AgPSAiIjsKICAgICAgICAgICAgICAg
ICBzd2l0Y2goJDEub3ApIHsKQEAgLTcxMCw3ICs3MTQsNyBAQCB1bmFyeV9leHByZXNzaW9uCiAg
ICAgICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OiBlcnJvck9wID0gIiEiOyBicmVhazsK
ICAgICAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsIGVycm9yT3AsICQyLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJy
b3IoQDEsIGVycm9yT3AsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAg
ICAgIH0KQEAgLTcyMSwyOCArNzI1LDI2IEBAIHVuYXJ5X2V4cHJlc3Npb24KIC8vIEdyYW1tYXIg
Tm90ZTogIE5vIHRyYWRpdGlvbmFsIHN0eWxlIHR5cGUgY2FzdHMuCiAKIHVuYXJ5X29wZXJhdG9y
Ci0gICAgOiBQTFVTICB7ICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcE51bGw7IH0KLSAg
ICB8IERBU0ggIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTmVnYXRpdmU7IH0KLSAg
ICB8IEJBTkcgIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTG9naWNhbE5vdDsgfQor
ICAgIDogUExVUyAgeyAkJC5vcCA9IEVPcE51bGw7IH0KKyAgICB8IERBU0ggIHsgJCQub3AgPSBF
T3BOZWdhdGl2ZTsgfQorICAgIHwgQkFORyAgeyAkJC5vcCA9IEVPcExvZ2ljYWxOb3Q7IH0KICAg
ICA7CiAvLyBHcmFtbWFyIE5vdGU6ICBObyAnKicgb3IgJyYnIHVuYXJ5IG9wcy4gIFBvaW50ZXJz
IGFyZSBub3Qgc3VwcG9ydGVkLgogCiBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uCiAgICAgOiB1
bmFyeV9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbXVsdGlwbGljYXRpdmVfZXhwcmVz
c2lvbiBTVEFSIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgiKiIs
ICQyLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcE11bCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAkMSwg
JDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIqIiwgJDEtPmdldENv
bXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIqIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQz
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBtdWx0aXBsaWNh
dGl2ZV9leHByZXNzaW9uIFNMQVNIIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBGUkFHX1ZF
UlRfT05MWSgiLyIsICQyLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcERpdiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wRGl2LCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgk
JCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIv
IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIvIiwgJDEtPmdldENvbXBsZXRl
U3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTc1MiwxNyAr
NzU0LDE3IEBAIG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24KIGFkZGl0aXZlX2V4cHJlc3Npb24K
ICAgICA6IG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBhZGRp
dGl2ZV9leHByZXNzaW9uIFBMVVMgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiB7Ci0gICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wQWRkLCAkMSwgJDMs
ICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIisiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cihAMiwgIisiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5n
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAk
MTsKICAgICAgICAgfQogICAgIH0KICAgICB8IGFkZGl0aXZlX2V4cHJlc3Npb24gREFTSCBtdWx0
aXBsaWNhdGl2ZV9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BTdWIsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9s
VGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRo
KEVPcFN1YiwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAo
JCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAi
LSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiLSIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CkBAIC03NzYsNDMg
Kzc3OCw0MyBAQCBzaGlmdF9leHByZXNzaW9uCiByZWxhdGlvbmFsX2V4cHJlc3Npb24KICAgICA6
IHNoaWZ0X2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Np
b24gTEVGVF9BTkdMRSBzaGlmdF9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbiwgJDEsICQzLCAkMi5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoJDIubGluZSwgIjwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENv
bXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwg
IjwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25B
cnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVs
YXRpb25hbF9leHByZXNzaW9uIFJJR0hUX0FOR0xFIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhh
biwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW4sICQxLCAk
MywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj4iLCAkMS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIj4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAg
ICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9leHByZXNzaW9uIExFX09QIHNoaWZ0X2V4
cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChF
T3BMZXNzVGhhbkVxdWFsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAg
ICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQy
LmxpbmUsICI8PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiPD0iLCAkMS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0
QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9l
eHByZXNzaW9uIEdFX09QIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMs
ICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMsIEAy
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI+PSIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKEAyLCAiPj0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdl
dENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFd
OwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAg
ICB9CiAgICAgfQogICAgIDsKQEAgLTgyMCwyMyArODIyLDIzIEBAIHJlbGF0aW9uYWxfZXhwcmVz
c2lvbgogZXF1YWxpdHlfZXhwcmVzc2lvbgogICAgIDogcmVsYXRpb25hbF9leHByZXNzaW9uIHsg
JCQgPSAkMTsgfQogICAgIHwgZXF1YWxpdHlfZXhwcmVzc2lvbiBFUV9PUCByZWxhdGlvbmFsX2V4
cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BFcXVhbCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1YWws
ICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDAp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj09IiwgJDEt
PmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICI9PSIsICQxLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0
YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwot
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1
bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGlu
ZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBA
Mik7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBlcXVhbGl0eV9leHByZXNzaW9uIE5FX09QIHJl
bGF0aW9uYWxfZXhwcmVzc2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wTm90RXF1YWwsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcE5vdEVxdWFsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAg
ICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQy
LmxpbmUsICIhPSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiIT0iLCAkMS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0
QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg1NiwxMyAr
ODU4LDEzIEBAIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uCiBsb2dpY2FsX2FuZF9leHByZXNzaW9u
CiAgICAgOiBpbmNsdXNpdmVfb3JfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxvZ2lj
YWxfYW5kX2V4cHJlc3Npb24gQU5EX09QIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uIHsKLSAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5k
LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5kLCAkMSwgJDMs
IEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICImJiIsICQxLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiJiYiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAg
ICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg3MCwxMyArODcyLDEzIEBAIGxvZ2ljYWxfYW5kX2V4
cHJlc3Npb24KIGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24KICAgICA6IGxvZ2ljYWxfYW5kX2V4cHJl
c3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBsb2dpY2FsX3hvcl9leHByZXNzaW9uIFhPUl9PUCBs
b2dpY2FsX2FuZF9leHByZXNzaW9uICB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbFhvciwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJp
bmFyeU1hdGgoRU9wTG9naWNhbFhvciwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUp
OwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BF
cnJvcigkMi5saW5lLCAiXl4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIl5e
IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24g
KnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJy
YXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCAkMi5saW5lKTsKKyAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksIEAyKTsKICAgICAgICAgfQogICAgIH0KICAgICA7CkBAIC04
ODQsMTMgKzg4NiwxMyBAQCBsb2dpY2FsX3hvcl9leHByZXNzaW9uCiBsb2dpY2FsX29yX2V4cHJl
c3Npb24KICAgICA6IGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBs
b2dpY2FsX29yX2V4cHJlc3Npb24gT1JfT1AgbG9naWNhbF94b3JfZXhwcmVzc2lvbiAgewotICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxP
ciwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAkMSwgJDMs
IEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICJ8fCIsICQxLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAifHwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAg
ICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg5OCwxNSArOTAwLDE1IEBAIGxvZ2ljYWxfb3JfZXhw
cmVzc2lvbgogY29uZGl0aW9uYWxfZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF9vcl9leHByZXNz
aW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbG9naWNhbF9vcl9leHByZXNzaW9uIFFVRVNUSU9OIGV4
cHJlc3Npb24gQ09MT04gYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICBpZiAoY29udGV4
dC0+Ym9vbEVycm9yQ2hlY2soJDIubGluZSwgJDEpKQorICAgICAgIGlmIChjb250ZXh0LT5ib29s
RXJyb3JDaGVjayhAMiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0g
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigkMSwgJDMsICQ1
LCAkMi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0
aW9uKCQxLCAkMywgJDUsIEAyKTsKICAgICAgICAgaWYgKCQzLT5nZXRUeXBlKCkgIT0gJDUtPmdl
dFR5cGUoKSkKICAgICAgICAgICAgICQkID0gMDsKIAogICAgICAgICBpZiAoJCQgPT0gMCkgewot
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiOiIsICQzLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAkNS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiOiIsICQzLT5nZXRDb21wbGV0ZVN0cmluZygpLCAk
NS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAkJCA9ICQ1OwogICAgICAgICB9CkBAIC05MTYsMTEgKzkxOCwxMSBAQCBj
b25kaXRpb25hbF9leHByZXNzaW9uCiBhc3NpZ25tZW50X2V4cHJlc3Npb24KICAgICA6IGNvbmRp
dGlvbmFsX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCB1bmFyeV9leHByZXNzaW9uIGFz
c2lnbm1lbnRfb3BlcmF0b3IgYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soJDIubGluZSwgImFzc2lnbiIsICQxKSkKKyAgICAgICAg
aWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soQDIsICJhc3NpZ24iLCAkMSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEFzc2lnbigkMi5vcCwgJDEsICQzLCAkMi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWduKCQyLm9wLCAkMSwgJDMsIEAyKTsKICAgICAgICAg
aWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9yKCQyLmxpbmUs
ICJhc3NpZ24iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5n
KCkpOworICAgICAgICAgICAgY29udGV4dC0+YXNzaWduRXJyb3IoQDIsICJhc3NpZ24iLCAkMS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpA
QCAtOTI4LDExICs5MzAsMTEgQEAgYXNzaWdubWVudF9leHByZXNzaW9uCiAgICAgOwogCiBhc3Np
Z25tZW50X29wZXJhdG9yCi0gICAgOiBFUVVBTCAgICAgICAgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcEFzc2lnbjsgfQot
ICAgIHwgTVVMX0FTU0lHTiAgIHsgRlJBR19WRVJUX09OTFkoIio9IiwgJDEubGluZSk7ICAgICAk
JC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BNdWxBc3NpZ247IH0KLSAgICB8IERJVl9BU1NJ
R04gICB7IEZSQUdfVkVSVF9PTkxZKCIvPSIsICQxLmxpbmUpOyAgICAgJCQubGluZSA9ICQxLmxp
bmU7ICQkLm9wID0gRU9wRGl2QXNzaWduOyB9Ci0gICAgfCBBRERfQVNTSUdOICAgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVP
cEFkZEFzc2lnbjsgfQotICAgIHwgU1VCX0FTU0lHTiAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BTdWJBc3NpZ247IH0K
KyAgICA6IEVRVUFMICAgICAgICB7ICQkLm9wID0gRU9wQXNzaWduOyB9CisgICAgfCBNVUxfQVNT
SUdOICAgeyAkJC5vcCA9IEVPcE11bEFzc2lnbjsgfQorICAgIHwgRElWX0FTU0lHTiAgIHsgJCQu
b3AgPSBFT3BEaXZBc3NpZ247IH0KKyAgICB8IEFERF9BU1NJR04gICB7ICQkLm9wID0gRU9wQWRk
QXNzaWduOyB9CisgICAgfCBTVUJfQVNTSUdOICAgeyAkJC5vcCA9IEVPcFN1YkFzc2lnbjsgfQog
ICAgIDsKIAogZXhwcmVzc2lvbgpAQCAtOTQwLDkgKzk0Miw5IEBAIGV4cHJlc3Npb24KICAgICAg
ICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCBleHByZXNzaW9uIENPTU1BIGFzc2lnbm1lbnRfZXhw
cmVzc2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCQx
LCAkMywgJDIubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bW1hKCQxLCAkMywgQDIpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiLCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlP
cEVycm9yKEAyLCAiLCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAk
JCA9ICQzOwogICAgICAgICB9CkBAIC05NzAsMTMgKzk3MiwxMyBAQCBkZWNsYXJhdGlvbgogICAg
ICAgICAgICAgY29uc3QgVFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJhbShpKTsK
ICAgICAgICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUocGFyYW0ubmFtZSwg
KnBhcmFtLnR5cGUpOworICAgICAgICAgICAgICAgIFRWYXJpYWJsZSB2YXJpYWJsZShwYXJhbS5u
YW1lLCAqcGFyYW0udHlwZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcHJv
dG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2
YXJpYWJsZS0+Z2V0TmFtZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKSwgJDEubGlu
ZSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdy
b3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZh
cmlhYmxlLmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLmdldE5hbWUoKSwgdmFyaWFibGUuZ2V0VHlw
ZSgpLCBAMSksIEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
Z3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wo
MCwgIiIsICpwYXJhbS50eXBlLCAkMS5saW5lKSwgJDEubGluZSk7CisgICAgICAgICAgICAgICAg
cHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBl
LCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgQDEp
LCBAMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC05OTIsMTEgKzk5
NCwxMSBAQCBkZWNsYXJhdGlvbgogICAgIH0KICAgICB8IFBSRUNJU0lPTiBwcmVjaXNpb25fcXVh
bGlmaWVyIHR5cGVfc3BlY2lmaWVyX25vX3ByZWMgU0VNSUNPTE9OIHsKICAgICAgICAgaWYgKCgk
MiA9PSBFYnBIaWdoKSAmJiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFE
RVIpICYmICFjb250ZXh0LT5mcmFnbWVudFByZWNpc2lvbkhpZ2gpIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCQxLmxpbmUsICJwcmVjaXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFn
bWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAi
cHJlY2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVyIiwgImhpZ2hwIik7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KCFjb250ZXh0LT5zeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKCAkMywgJDIgKSkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImlsbGVnYWwgdHlwZSBhcmd1bWVu
dCBmb3IgZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlw
ZSkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJpbGxlZ2FsIHR5cGUgYXJndW1l
bnQgZm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCQzLnR5
cGUpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAg
ICAkJCA9IDA7CkBAIC0xMDE2LDEyICsxMDE4LDEyIEBAIGZ1bmN0aW9uX3Byb3RvdHlwZQogICAg
ICAgICBURnVuY3Rpb24qIHByZXZEZWMgPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24qPihjb250ZXh0
LT5zeW1ib2xUYWJsZS5maW5kKCQxLT5nZXRNYW5nbGVkTmFtZSgpKSk7CiAgICAgICAgIGlmIChw
cmV2RGVjKSB7CiAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UmV0dXJuVHlwZSgpICE9ICQx
LT5nZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5s
aW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBl
IiwgJDEtPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcihAMiwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUg
c2FtZSByZXR1cm4gdHlwZSIsICQxLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7
CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmV2RGVjLT5nZXRQYXJhbUNvdW50KCk7
ICsraSkgewogICAgICAgICAgICAgICAgIGlmIChwcmV2RGVjLT5nZXRQYXJhbShpKS50eXBlLT5n
ZXRRdWFsaWZpZXIoKSAhPSAkMS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm92ZXJsb2FkZWQg
ZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXIgcXVhbGlmaWVycyIsICQxLT5n
ZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAyLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRo
ZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgJDEtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1
YWxpZmllclN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEwMzMsNyArMTAzNSw2IEBA
IGZ1bmN0aW9uX3Byb3RvdHlwZQogICAgICAgICAvLyBiZWluZyByZWRlY2xhcmVkLiAgU28sIHBh
c3MgYmFjayB1cCB0aGlzIGRlY2xhcmF0aW9uLCBub3QgdGhlIG9uZSBpbiB0aGUgc3ltYm9sIHRh
YmxlLgogICAgICAgICAvLwogICAgICAgICAkJC5mdW5jdGlvbiA9ICQxOwotICAgICAgICAkJC5s
aW5lID0gJDIubGluZTsKIAogICAgICAgICAvLyBXZSdyZSBhdCB0aGUgaW5uZXIgc2NvcGUgbGV2
ZWwgb2YgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzIGFuZCBib2R5IHN0YXRlbWVudC4KICAgICAg
ICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUgdG8gdGhlIHN1cnJvdW5kaW5nIHNjb3Bl
IGluc3RlYWQuCkBAIC0xMDY5LDcgKzEwNzAsNyBAQCBmdW5jdGlvbl9oZWFkZXJfd2l0aF9wYXJh
bWV0ZXJzCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhpcyBwYXJhbWV0ZXIgPiBm
aXJzdCBpcyB2b2lkCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
JDIubGluZSwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSci
LCAidm9pZCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5ub3QgYmUgYW4g
YXJndW1lbnQgdHlwZSBleGNlcHQgZm9yICcodm9pZCknIiwgInZvaWQiKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGRlbGV0ZSAkMy5wYXJhbS50eXBlOwog
ICAgICAgICB9IGVsc2UgewpAQCAtMTA4MywxMSArMTA4NCwxMSBAQCBmdW5jdGlvbl9oZWFkZXJf
d2l0aF9wYXJhbWV0ZXJzCiBmdW5jdGlvbl9oZWFkZXIKICAgICA6IGZ1bGx5X3NwZWNpZmllZF90
eXBlIElERU5USUZJRVIgTEVGVF9QQVJFTiB7CiAgICAgICAgIGlmICgkMS5xdWFsaWZpZXIgIT0g
RXZxR2xvYmFsICYmICQxLnF1YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJubyBxdWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0
aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAyLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZvciBmdW5jdGlv
biByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gbWFrZSBzdXJlIGEg
c2FtcGxlciBpcyBub3QgaW52b2x2ZWQgYXMgd2VsbC4uLgotICAgICAgICBpZiAoY29udGV4dC0+
c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBhcyBhIHByb3Rv
dHlwZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCByZWN1cnNpb24pCkBAIC0x
MTAyLDMzICsxMTAzLDMxIEBAIGZ1bmN0aW9uX2hlYWRlcgogCiBwYXJhbWV0ZXJfZGVjbGFyYXRv
cgogICAgIC8vIFR5cGUgKyBuYW1lCi0gICAgOiB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIHsK
KyAgICA6IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgewogICAgICAgICBpZiAoJDEudHlwZSA9
PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiaWxsZWdh
bCB1c2Ugb2YgdHlwZSAndm9pZCciLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoQDIsICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsICQyLnN0cmlu
Zy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3Ry
aW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMiwgKiQyLnN0
cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRQYXJhbWV0
ZXIgcGFyYW0gPSB7JDIuc3RyaW5nLCBuZXcgVFR5cGUoJDEpfTsKLSAgICAgICAgJCQubGluZSA9
ICQyLmxpbmU7CiAgICAgICAgICQkLnBhcmFtID0gcGFyYW07CiAgICAgfQotICAgIHwgdHlwZV9z
cGVjaWZpZXIgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdI
VF9CUkFDS0VUIHsKKyAgICB8IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VU
IGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIC8vIENoZWNrIHRo
YXQgd2UgY2FuIG1ha2UgYW4gYXJyYXkgb3V0IG9mIHRoaXMgdHlwZQotICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMy5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAzLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMi5s
aW5lLCAqJDIuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVj
ayhAMiwgKiQyLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAg
ICAgICAgaW50IHNpemU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNr
KCQzLmxpbmUsICQ0LCBzaXplKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9y
Q2hlY2soQDMsICQ0LCBzaXplKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgJDEuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAKICAgICAgICAgVFR5cGUqIHR5cGUgPSBu
ZXcgVFR5cGUoJDEpOwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAkMi5zdHJpbmcsIHR5
cGUgfTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxpbmU7CiAgICAgICAgICQkLnBhcmFtID0gcGFy
YW07CiAgICAgfQogICAgIDsKQEAgLTExNDQsMTQgKzExNDMsMTQgQEAgcGFyYW1ldGVyX2RlY2xh
cmF0aW9uCiAgICAgLy8KICAgICA6IHR5cGVfcXVhbGlmaWVyIHBhcmFtZXRlcl9xdWFsaWZpZXIg
cGFyYW1ldGVyX2RlY2xhcmF0b3IgewogICAgICAgICAkJCA9ICQzOwotICAgICAgICBpZiAoY29u
dGV4dC0+cGFyYW1FcnJvckNoZWNrKCQzLmxpbmUsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFt
LnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKEAzLCAkMS5xdWFs
aWZpZXIsICQyLCAkJC5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICB9CiAgICAgfCBwYXJhbWV0ZXJfcXVhbGlmaWVyIHBhcmFtZXRlcl9kZWNsYXJhdG9y
IHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBs
ZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxLCAqJDIucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5wYXJhbS50eXBl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQt
PnBhcmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMiwgRXZxVGVtcG9yYXJ5
LCAkMSwgJCQucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgfQogICAgIC8vCkBAIC0xMTU5LDE0ICsxMTU4LDE0IEBAIHBhcmFtZXRlcl9kZWNsYXJhdGlv
bgogICAgIC8vCiAgICAgfCB0eXBlX3F1YWxpZmllciBwYXJhbWV0ZXJfcXVhbGlmaWVyIHBhcmFt
ZXRlcl90eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDM7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5wYXJhbUVycm9yQ2hlY2soJDMubGluZSwgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0u
dHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soQDMsICQxLnF1YWxp
ZmllciwgJDIsICQkLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgIH0KICAgICB8IHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX3R5cGVfc3BlY2lm
aWVyIHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNh
bXBsZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxLCAqJDIucGFyYW0udHlwZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5wYXJhbS50
eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50
eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMiwgRXZxVGVtcG9y
YXJ5LCAkMSwgJCQucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgfQogICAgIDsKQEAgLTExOTcsODMgKzExOTYsODMgQEAgaW5pdF9kZWNsYXJhdG9yX2xp
c3QKICAgICA6IHNpbmdsZV9kZWNsYXJhdGlvbiB7CiAgICAgICAgICQkID0gJDE7CiAgICAgfQot
ICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiB7CisgICAgfCBpbml0
X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIHsKICAgICAgICAgaWYgKCQxLnR5cGUu
dHlwZSA9PSBFYnRJbnZhcmlhbnQgJiYgISQzLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoJDMubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJl
ZCBhcyBpbnZhcmlhbnQiLCAkMy5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDMsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50
IiwgJDMuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQzLnN0cmluZywgVFR5cGUoJDEudHlwZSksICQzLmxp
bmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
Z3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCBzeW1ib2wsICQzLmxpbmUpOworICAgICAgICBU
SW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAs
ICokMy5zdHJpbmcsIFRUeXBlKCQxLnR5cGUpLCBAMyk7CisgICAgICAgICQkLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUs
IHN5bWJvbCwgQDMpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soJDMubGluZSwgJCQudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkJC50eXBlKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JD
aGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAkJC50eXBlLCBm
YWxzZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgVFZhcmlh
YmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVj
aygkMy5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5ub25Jbml0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywgJCQudHlwZSwgdmFyaWFi
bGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoc3ltYm9s
ICYmIHZhcmlhYmxlKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5p
cXVlSWQoKSk7CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJ
RklFUiBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAgIHwgaW5pdF9k
ZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tF
VCB7CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAk
MS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAo
Y29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkMS50
eXBlLCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2so
QDMsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogCiAgICAgICAgICQkID0gJDE7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
VHlwZUVycm9yQ2hlY2soJDQubGluZSwgJDEudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZp
ZXJFcnJvckNoZWNrKCQ0LmxpbmUsICQxLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlUeXBlRXJyb3JDaGVjayhANCwgJDEudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJF
cnJvckNoZWNrKEA0LCAkMS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAkMS50eXBlLnNldEFycmF5KHRydWUpOwogICAg
ICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5h
cnJheUVycm9yQ2hlY2soJDQubGluZSwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQor
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhANCwgKiQzLnN0cmluZywg
JDEudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgfQogICAgIH0KLSAgICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENPTU1BIElERU5U
SUZJRVIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQx
LnR5cGUpKQorICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZU
X0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAgICAgICAgaWYg
KGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0
Q29uc3RFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQorICAg
ICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywg
JDEudHlwZSwgdHJ1ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAg
ICAgJCQgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygk
NC5saW5lLCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDQu
bGluZSwgJDEudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNr
KEA0LCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDQsICQx
LnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6
ZUVycm9yQ2hlY2soJDQubGluZSwgJDUsIHNpemUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmFycmF5U2l6ZUVycm9yQ2hlY2soQDQsICQ1LCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkMS50eXBlLnNldEFycmF5KHRydWUsIHNpemUp
OwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgICAgICBpZiAo
Y29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCQ0LmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHZh
cmlhYmxlKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soQDQsICok
My5zdHJpbmcsICQxLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlID0gVFR5cGUoJDEudHlwZSk7CiAgICAg
ICAgICAgICB0eXBlLnNldEFycmF5U2l6ZShzaXplKTsKLSAgICAgICAgICAgICQkLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5v
ZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+
Z2V0VW5pcXVlSWQoKSA6IDAsICokMy5zdHJpbmcsIHR5cGUsICQzLmxpbmUpLCAkMy5saW5lKTsK
KyAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5n
cm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1i
b2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICokMy5zdHJpbmcsIHR5
cGUsIEAzKSwgQDMpOwogICAgICAgICB9CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xp
c3QgQ09NTUEgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAgIHwg
aW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBFUVVBTCBpbml0aWFsaXplciB7
CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkMS50
eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAkJCA9ICQx
OwogCiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRl
eHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMy5saW5lLCAqJDMuc3RyaW5nLCAkMS50eXBlLCAkNSwg
aW50ZXJtTm9kZSkpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIo
QDMsICokMy5zdHJpbmcsICQxLnR5cGUsICQ1LCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgIC8vIGJ1aWxkIHRoZSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24K
ICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBpZiAoaW50ZXJtTm9kZSkKLSAgICAgICAgJCQu
aW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEu
aW50ZXJtTm9kZSwgaW50ZXJtTm9kZSwgJDQubGluZSk7CisgICAgICAgICQkLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUs
IGludGVybU5vZGUsIEA0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAkJC5p
bnRlcm1BZ2dyZWdhdGUgPSAkMS5pbnRlcm1BZ2dyZWdhdGU7CiAgICAgICAgIH0gZWxzZSB7CkBA
IC0xMjg2LDc5ICsxMjg1LDc5IEBAIGluaXRfZGVjbGFyYXRvcl9saXN0CiBzaW5nbGVfZGVjbGFy
YXRpb24KICAgICA6IGZ1bGx5X3NwZWNpZmllZF90eXBlIHsKICAgICAgICAgJCQudHlwZSA9ICQx
OwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFr
ZUFnZ3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgk
MSksICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCgwLCAiIiwgVFR5cGUoJDEpLCBAMSksIEAxKTsKICAgICB9Ci0gICAgfCBmdWxseV9z
cGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIHsKLSAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9s
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgk
MSksICQyLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgIHwgZnVsbHlfc3Bl
Y2lmaWVkX3R5cGUgaWRlbnRpZmllciB7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEp
LCBAMik7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDIubGluZSwgJCQudHlwZSkpCisgICAgICAg
IGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkJC50eXBlKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9u
SW5pdENvbnN0RXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAyLCAqJDIuc3Ry
aW5nLCAkJC50eXBlLCBmYWxzZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgICQkLnR5cGUgPSAkMTsKIAogICAgICAgICBUVmFyaWFi
bGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNr
KCQyLmxpbmUsICokMi5zdHJpbmcsICQkLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPm5vbkluaXRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJs
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmICh2YXJpYWJs
ZSAmJiBzeW1ib2wpCiAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlx
dWVJZCgpKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIExF
RlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGlu
ZSwgInVuc2l6ZWQgYXJyYXkgZGVjbGFyYXRpb25zIG5vdCBzdXBwb3J0ZWQiLCAkMi5zdHJpbmct
PmNfc3RyKCkpOworICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmllciBMRUZUX0JS
QUNLRVQgUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAidW5zaXpl
ZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIsICQyLnN0cmluZy0+Y19zdHIoKSk7
CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUSW50ZXJtU3ltYm9sKiBz
eW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIFRU
eXBlKCQxKSwgJDIubGluZSk7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgJDIubGluZSk7CisgICAgICAgIFRJ
bnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
KiQyLnN0cmluZywgVFR5cGUoJDEpLCBAMik7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAg
ICAkJC50eXBlID0gJDE7CiAgICAgfQotICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJ
RklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAg
ICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIGNvbnN0YW50
X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIFRUeXBlIHR5cGUgPSBUVHlwZSgk
MSk7CiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJy
b3JDaGVjaygkMi5saW5lLCAkNCwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNp
emVFcnJvckNoZWNrKEAyLCAkNCwgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwotICAgICAgICBUSW50ZXJtU3lt
Ym9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJp
bmcsIHR5cGUsICQyLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgICAgICBU
SW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAs
ICokMi5zdHJpbmcsIHR5cGUsIEAyKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgIAot
ICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMi5saW5lLCAk
MSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAk
MSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRl
eHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZywgJDEsIHRydWUp
KQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMiwgKiQyLnN0
cmluZywgJDEsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAg
ICAgICQkLnR5cGUgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JD
aGVjaygkMy5saW5lLCAkMSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCQz
LmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDMs
ICQxKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBp
bnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQz
LmxpbmUsICQ0LCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJv
ckNoZWNrKEAzLCAkNCwgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogCiAgICAgICAgICAgICAkMS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgICAgIFRW
YXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJy
b3JDaGVjaygkMy5saW5lLCAqJDIuc3RyaW5nLCAkMSwgdmFyaWFibGUpKQorICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhAMywgKiQyLnN0cmluZywgJDEsIHZhcmlhYmxl
KSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBpZiAo
dmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFyaWFi
bGUtPmdldFVuaXF1ZUlkKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHwgZnVsbHlfc3BlY2lm
aWVkX3R5cGUgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICB8IGZ1bGx5
X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgRVFVQUwgaW5pdGlhbGl6ZXIgeworICAgICAgICBp
ZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhAMiwgJDEpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQkLnR5cGUgPSAkMTsKIAogICAgICAg
ICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRl
SW5pdGlhbGl6ZXIoJDIubGluZSwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkgewor
ICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcihAMiwgKiQyLnN0cmluZywg
JDEsICQ0LCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAvLwogICAgICAgICAvLyBCdWlsZCBpbnRl
cm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAgICAgICAgLy8KICAgICAgICAgICAgIGlmKGludGVy
bU5vZGUpCi0gICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgJDMubGluZSk7CisgICAgICAgICAg
ICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dy
ZWdhdGUoaW50ZXJtTm9kZSwgQDMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICQkLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMzY3LDExOCAr
MTM2Niw1MCBAQCBzaW5nbGVfZGVjbGFyYXRpb24KICAgICAgICAgfQogICAgIH0KICAgICB8IElO
VkFSSUFOVCBJREVOVElGSUVSIHsKLSAgICAgICAgVkVSVEVYX09OTFkoImludmFyaWFudCBkZWNs
YXJhdGlvbiIsICQxLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVj
aygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlh
bnQgdmFyeWluZyIpKQorICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9u
IiwgQDEpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQudHlwZS5zZXRCYXNpYyhF
YnRJbnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICQyLmxpbmUpOworICAgICAgICAk
JC50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgQDIp
OwogICAgICAgICBpZiAoISQyLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoJDIubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZh
cmlhbnQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDIsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgJDIuc3Ry
aW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAgICAgfQogICAg
ICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJCQu
dHlwZSksICQyLmxpbmUpOwotICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAkMi5saW5lKTsKKyAgICAgICAg
ICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1i
b2woMCwgKiQyLnN0cmluZywgVFR5cGUoJCQudHlwZSksIEAyKTsKKyAgICAgICAgICAgICQkLmlu
dGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJv
bCwgQDIpOwogICAgICAgICB9CiAgICAgfQotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUg
cGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vICAgIHwgYnVmZmVyX3NwZWNpZmllciB7Ci0v
LyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKLS8vICAgIH0KICAgICA7CiAKLS8vIEdy
YW1tYXIgTm90ZTogIE5vICdlbnVtJywgb3IgJ3R5cGVkZWYnLgotCi0vLwotLy8gUGxhY2UgaG9s
ZGVyIGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vJXR5cGUgPGludGVybT4g
YnVmZmVyX2RlY2xhcmF0aW9uCi0vLyV0eXBlIDxpbnRlcm0udHlwZT4gYnVmZmVyX3NwZWNpZmll
ciBpbnB1dF9vcl9vdXRwdXQgYnVmZmVyX2RlY2xhcmF0aW9uX2xpc3QKLS8vYnVmZmVyX3NwZWNp
ZmllcgotLy8gICAgOiBpbnB1dF9vcl9vdXRwdXQgTEVGVF9CUkFDRSBidWZmZXJfZGVjbGFyYXRp
b25fbGlzdCBSSUdIVF9CUkFDRSB7Ci0vLyAgICB9Ci0vLyAgICA7Ci0vLwotLy9pbnB1dF9vcl9v
dXRwdXQKLS8vICAgIDogSU5QVVQgewotLy8gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJv
ckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImlu
cHV0IikpCi0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLS8vICAgICAgICBVTlBB
Q0tfT05MWSgiaW5wdXQiLCAkMS5saW5lKTsKLS8vICAgICAgICAkJC5xdWFsaWZpZXIgPSBFdnFJ
bnB1dDsKLS8vICAgIH0KLS8vICAgIHwgT1VUUFVUIHsKLS8vICAgICAgICBpZiAoY29udGV4dC0+
Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCksICJvdXRwdXQiKSkKLS8vICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotLy8g
ICAgICAgIFBBQ0tfT05MWSgib3V0cHV0IiwgJDEubGluZSk7Ci0vLyAgICAgICAgJCQucXVhbGlm
aWVyID0gRXZxT3V0cHV0OwotLy8gICAgfQotLy8gICAgOwotCi0vLwotLy8gUGxhY2UgaG9sZGVy
IGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vYnVmZmVyX2RlY2xhcmF0aW9u
X2xpc3QKLS8vICAgIDogYnVmZmVyX2RlY2xhcmF0aW9uIHsKLS8vICAgIH0KLS8vICAgIHwgYnVm
ZmVyX2RlY2xhcmF0aW9uX2xpc3QgYnVmZmVyX2RlY2xhcmF0aW9uIHsKLS8vICAgIH0KLS8vICAg
IDsKLQotLy8KLS8vIElucHV0L291dHB1dCBzZW1hbnRpY3M6Ci0vLyAgIGZsb2F0IG11c3QgYmUg
MTYgb3IgMzIgYml0cwotLy8gICBmbG9hdCBhbGlnbm1lbnQgcmVzdHJpY3Rpb25zPwotLy8gICBj
aGVjayBmb3Igb25seSBvbmUgaW5wdXQgYW5kIG9ubHkgb25lIG91dHB1dAotLy8gICBzdW0gb2Yg
Yml0ZmllbGRzIGhhcyB0byBiZSBtdWx0aXBsZSBvZiAzMgotLy8KLQotLy8KLS8vIFBsYWNlIGhv
bGRlciBmb3IgdGhlIHBhY2svdW5wYWNrIGxhbmd1YWdlcy4KLS8vCi0vL2J1ZmZlcl9kZWNsYXJh
dGlvbgotLy8gICAgOiB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIENPTE9OIGNvbnN0YW50X2V4
cHJlc3Npb24gU0VNSUNPTE9OIHsKLS8vICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJv
ckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcsIGNvbnRleHQpKQotLy8gICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgJCQudmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCQy
LnN0cmluZywgJDEpOwotLy8gICAgICAgIGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2Vy
dCgqJCQudmFyaWFibGUpKSB7Ci0vLyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUs
ICJyZWRlZmluaXRpb24iLCAkJC52YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotLy8gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgICAgIC8vIGRvbid0IGhhdmUg
dG8gZGVsZXRlICQkLnZhcmlhYmxlLCB0aGUgcG9vbCBwb3Agd2lsbCB0YWtlIGNhcmUgb2YgaXQK
LS8vICAgICAgICB9Ci0vLyAgICB9Ci0vLyAgICA7Ci0KIGZ1bGx5X3NwZWNpZmllZF90eXBlCiAg
ICAgOiB0eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDE7CiAKICAgICAgICAgaWYgKCQx
LmFycmF5KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAibm90IHN1cHBv
cnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDEsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkMS5zZXRBcnJheShmYWxzZSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgfCB0eXBlX3F1YWxpZmllciB0eXBlX3NwZWNpZmllciAgewogICAg
ICAgICBpZiAoJDIuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUs
ICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMiwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQyLnNldEFycmF5KGZh
bHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS5xdWFsaWZpZXIgPT0gRXZxQXR0cmli
dXRlICYmCiAgICAgICAgICAgICAoJDIudHlwZSA9PSBFYnRCb29sIHx8ICQyLnR5cGUgPT0gRWJ0
SW50KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgImNhbm5vdCBiZSBi
b29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAyLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlm
aWVyU3RyaW5nKCQxLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9CiAgICAgICAgIGlmICgoJDEucXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8
fCAkMS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ091dCkgJiYKICAgICAgICAgICAgICgkMi50eXBl
ID09IEVidEJvb2wgfHwgJDIudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3Ry
aW5nKCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5u
b3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgJCQgPSAk
MjsKQEAgLTE0ODgsMzQgKzE0MTksMzQgQEAgZnVsbHlfc3BlY2lmaWVkX3R5cGUKIAogdHlwZV9x
dWFsaWZpZXIKICAgICA6IENPTlNUX1FVQUwgewotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lk
LCBFdnFDb25zdCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUNv
bnN0LCBAMSk7CiAgICAgfQogICAgIHwgQVRUUklCVVRFIHsKLSAgICAgICAgVkVSVEVYX09OTFko
ImF0dHJpYnV0ZSIsICQxLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JD
aGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJhdHRy
aWJ1dGUiKSkKKyAgICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsIEAxKTsKKyAgICAgICAg
aWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUsICQxLmxpbmUp
OworICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUsIEAxKTsKICAgICB9
CiAgICAgfCBWQVJZSU5HIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2so
JDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIp
KQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJU
RVhfU0hBREVSKQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ091
dCwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5n
T3V0LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQs
IEV2cVZhcnlpbmdJbiwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lk
LCBFdnFWYXJ5aW5nSW4sIEAxKTsKICAgICB9CiAgICAgfCBJTlZBUklBTlQgVkFSWUlORyB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAg
IGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJU
RVhfU0hBREVSKQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50
VmFyeWluZ091dCwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBF
dnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICQk
LnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdJbiwgJDEubGluZSk7CisgICAg
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nSW4sIEAxKTsK
ICAgICB9CiAgICAgfCBVTklGT1JNIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9y
Q2hlY2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5p
Zm9ybSIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlm
b3JtLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVW5pZm9ybSwg
QDEpOwogICAgIH0KICAgICA7CiAKQEAgLTE1MjUsNyArMTQ1Niw3IEBAIHR5cGVfc3BlY2lmaWVy
CiAKICAgICAgICAgaWYgKCQkLnByZWNpc2lvbiA9PSBFYnBVbmRlZmluZWQpIHsKICAgICAgICAg
ICAgICQkLnByZWNpc2lvbiA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmdldERlZmF1bHRQcmVjaXNp
b24oJDEudHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVj
aygkMS5saW5lLCAkJC5wcmVjaXNpb24sICQxLnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29u
dGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVjayhAMSwgJCQucHJlY2lzaW9uLCAkMS50eXBlKSkgewog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMTU1NSwxMSArMTQ4NiwxMSBAQCB0eXBlX3NwZWNpZmllcl9ub19wcmVjCiAgICAg
fCB0eXBlX3NwZWNpZmllcl9ub25hcnJheSBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lv
biBSSUdIVF9CUkFDS0VUIHsKICAgICAgICAgJCQgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5hcnJheVR5cGVFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygkMi5saW5lLCAkMywgc2l6ZSkpCisg
ICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhAMiwgJDMsIHNpemUp
KQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkLnNl
dEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICB9CkBAIC0xNTY5LDExOCArMTUwMCwxMDUgQEAg
dHlwZV9zcGVjaWZpZXJfbm9fcHJlYwogdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICAgICA6IFZP
SURfVFlQRSB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVi
dFZvaWQsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBGTE9BVF9UWVBFIHsKICAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVh
bCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCBAMSk7CiAg
ICAgfQogICAgIHwgSU5UX1RZUEUgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQk
LnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IEJPT0xfVFlQRSB7CiAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
Qm9vbCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWws
IEAxKTsKICAgICB9Ci0vLyAgICB8IFVOU0lHTkVEIElOVF9UWVBFIHsKLS8vICAgICAgICBQQUNL
X1VOUEFDS19PTkxZKCJ1bnNpZ25lZCIsICQxLmxpbmUpOwotLy8gICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLS8vICAgICAgICAkJC5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICQxLmxp
bmUpOwotLy8gICAgfQogICAgIHwgVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dy
ZWdhdGUoMik7CiAgICAgfQogICAgIHwgVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOwor
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRB
Z2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwgVkVDNCB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUp
OworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5z
ZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgQlZFQzIgewogICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICQxLmxp
bmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCBAMSk7CiAgICAgICAgICQk
LnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAgfCBCVkVDMyB7CiAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgJDEu
bGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsIEAxKTsKICAgICAgICAg
JCQuc2V0QWdncmVnYXRlKDMpOwogICAgIH0KICAgICB8IEJWRUM0IHsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAk
MS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgSVZFQzIgewogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoMik7CiAgICAgfQogICAgIHwgSVZFQzMgewogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwgSVZFQzQgewogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgTUFUUklYMiB7Ci0gICAgICAgIEZS
QUdfVkVSVF9PTkxZKCJtYXQyIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOwor
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRB
Z2dyZWdhdGUoMiwgdHJ1ZSk7CiAgICAgfQogICAgIHwgTUFUUklYMyB7Ci0gICAgICAgIEZSQUdf
VkVSVF9PTkxZKCJtYXQzIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dy
ZWdhdGUoMywgdHJ1ZSk7CiAgICAgfQogICAgIHwgTUFUUklYNCB7Ci0gICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJtYXQ0IiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdh
dGUoNCwgdHJ1ZSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJEIHsKLSAgICAgICAgRlJBR19WRVJU
X09OTFkoInNhbXBsZXIyRCIsICQxLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBj
b250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1w
b3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgJDEubGluZSk7
CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgQDEpOwogICAgIH0KICAg
ICB8IFNBTVBMRVJDVUJFIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXJDdWJlIiwg
JDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0U2FtcGxlckN1YmUsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRC
YXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IFNBTVBMRVJfRVhU
RVJOQUxfT0VTIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
T0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigk
MS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0
ZXJuYWxPRVMiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQot
ICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckV4dGVybmFsT0VTIiwgJDEubGluZSk7CiAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMo
RWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJE
UkVDVCB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl90
ZXh0dXJlX3JlY3RhbmdsZSIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5l
LCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVjdCIpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJzYW1wbGVyMkRSZWN0IiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1YWwsIEAx
KTsKICAgICB9CiAgICAgfCBzdHJ1Y3Rfc3BlY2lmaWVyIHsKLSAgICAgICAgRlJBR19WRVJUX09O
TFkoInN0cnVjdCIsICQxLmxpbmUpOwogICAgICAgICAkJCA9ICQxOwogICAgICAgICAkJC5xdWFs
aWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7CiAgICAgfQpAQCAtMTY5MSwyOSArMTYwOSwyOSBAQCB0eXBlX3NwZWNp
Zmllcl9ub25hcnJheQogICAgICAgICAvLwogICAgICAgICBUVHlwZSYgc3RydWN0dXJlID0gc3Rh
dGljX2Nhc3Q8VFZhcmlhYmxlKj4oJDEuc3ltYm9sKS0+Z2V0VHlwZSgpOwogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgcXVh
bCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwgQDEpOwog
ICAgICAgICAkJC51c2VyRGVmID0gJnN0cnVjdHVyZTsKICAgICB9CiAgICAgOwogCiBzdHJ1Y3Rf
c3BlY2lmaWVyCi0gICAgOiBTVFJVQ1QgSURFTlRJRklFUiBMRUZUX0JSQUNFIHsgaWYgKGNvbnRl
eHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oJDIubGluZSwgKiQyLnN0cmluZykpIGNvbnRleHQt
PnJlY292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZykp
CisgICAgOiBTVFJVQ1QgaWRlbnRpZmllciBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQtPmVudGVy
U3RydWN0RGVjbGFyYXRpb24oQDIsICokMi5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IH0g
c3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0UgeworICAgICAgICBpZiAoY29udGV4
dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCQ1
LCAqJDIuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcg
VFN0cnVjdHVyZSgkMi5zdHJpbmcsICQ1KSk7CiAgICAgICAgIFRWYXJpYWJsZSogdXNlclR5cGVE
ZWYgPSBuZXcgVFZhcmlhYmxlKCQyLnN0cmluZywgKnN0cnVjdHVyZSwgdHJ1ZSk7CiAgICAgICAg
IGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgqdXNlclR5cGVEZWYpKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAicmVkZWZpbml0aW9uIiwgJDIuc3RyaW5n
LT5jX3N0cigpLCAic3RydWN0Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInJl
ZGVmaW5pdGlvbiIsICQyLnN0cmluZy0+Y19zdHIoKSwgInN0cnVjdCIpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0
cnVjdCwgRXZxVGVtcG9yYXJ5LCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3Ry
dWN0LCBFdnFUZW1wb3JhcnksIEAxKTsKICAgICAgICAgJCQudXNlckRlZiA9IHN0cnVjdHVyZTsK
ICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CiAgICAgfQotICAgIHwg
U1RSVUNUIExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigk
Mi5saW5lLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJh
dGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKLSAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBU
VHlwZSgkNCwgVFN0cmluZygiIikpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2
cVRlbXBvcmFyeSwgJDEubGluZSk7CisgICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSB7IGlmIChjb250
ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKEAyLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVj
b3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKKyAgICAgICAg
VFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZShOZXdQb29sVFN0cmlu
ZygiIiksICQ0KSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5
LCBAMSk7CiAgICAgICAgICQkLnVzZXJEZWYgPSBzdHJ1Y3R1cmU7CiAgICAgICAgIGNvbnRleHQt
PmV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwogICAgIH0KQEAgLTE3MjUsMTQgKzE2NDMsMTUgQEAg
c3RydWN0X2RlY2xhcmF0aW9uX2xpc3QKICAgICB9CiAgICAgfCBzdHJ1Y3RfZGVjbGFyYXRpb25f
bGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICQyLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCAkJC0+c2l6ZSgpOyArK2opIHsKLSAgICAgICAg
ICAgICAgICBpZiAoKCokJClbal0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKCokMilbaV0udHlw
ZS0+Z2V0RmllbGROYW1lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KCokMilbaV0ubGluZSwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3Ry
dWN0IiwgKCokMilbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkuY19zdHIoKSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgJDItPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBURmll
bGQqIGZpZWxkID0gKCokMilbaV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
ICQkLT5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIGlmICgoKiQkKVtqXS0+bmFtZSgp
ID09IGZpZWxkLT5uYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDIsICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxk
LT5uYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAkJC0+cHVz
aF9iYWNrKCgqJDIpW2ldKTsKKyAgICAgICAgICAgICQkLT5wdXNoX2JhY2soZmllbGQpOwogICAg
ICAgICB9CiAgICAgfQogICAgIDsKQEAgLTE3NDEsMTQgKzE2NjAsMTQgQEAgc3RydWN0X2RlY2xh
cmF0aW9uCiAgICAgOiB0eXBlX3NwZWNpZmllciBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IFNFTUlD
T0xPTiB7CiAgICAgICAgICQkID0gJDI7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJv
ckNoZWNrKCQxLmxpbmUsICgqJDIpWzBdLnR5cGUtPmdldEZpZWxkTmFtZSgpLCAkMSkpIHsKKyAg
ICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNoZWNrKEAxLCAoKiQyKVswXS0+bmFtZSgpLCAk
MSkpIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICQkLT5zaXplKCk7ICsraSkgewogICAgICAg
ICAgICAgLy8KICAgICAgICAgICAgIC8vIENhcmVmdWwgbm90IHRvIHJlcGxhY2UgYWxyZWFkeSBr
bm93biBhc3BlY3RzIG9mIHR5cGUsIGxpa2UgYXJyYXktbmVzcwogICAgICAgICAgICAgLy8KLSAg
ICAgICAgICAgIFRUeXBlKiB0eXBlID0gKCokJClbaV0udHlwZTsKKyAgICAgICAgICAgIFRUeXBl
KiB0eXBlID0gKCokJClbaV0tPnR5cGUoKTsKICAgICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlw
ZSgkMS50eXBlKTsKICAgICAgICAgICAgIHR5cGUtPnNldE5vbWluYWxTaXplKCQxLnNpemUpOwog
ICAgICAgICAgICAgdHlwZS0+c2V0TWF0cml4KCQxLm1hdHJpeCk7CkBAIC0xNzU2LDI2ICsxNjc1
LDIzIEBAIHN0cnVjdF9kZWNsYXJhdGlvbgogCiAgICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBh
cnJheXMgb2YgYXJyYXlzCiAgICAgICAgICAgICBpZiAodHlwZS0+aXNBcnJheSgpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soJDEubGluZSwgJDEp
KQorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAxLCAk
MSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmICgkMS5hcnJheSkKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRB
cnJheVNpemUoJDEuYXJyYXlTaXplKTsKLSAgICAgICAgICAgIGlmICgkMS51c2VyRGVmKSB7Cisg
ICAgICAgICAgICBpZiAoJDEudXNlckRlZikKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRTdHJ1
Y3QoJDEudXNlckRlZi0+Z2V0U3RydWN0KCkpOwotICAgICAgICAgICAgICAgIHR5cGUtPnNldFR5
cGVOYW1lKCQxLnVzZXJEZWYtPmdldFR5cGVOYW1lKCkpOwotICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soJDEubGluZSwgKnR5
cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2so
QDEsICooKiQkKVtpXSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIDsKIAogc3RydWN0X2RlY2xhcmF0b3Jf
bGlzdAogICAgIDogc3RydWN0X2RlY2xhcmF0b3IgewotICAgICAgICAkJCA9IE5ld1Bvb2xUVHlw
ZUxpc3QoKTsKKyAgICAgICAgJCQgPSBOZXdQb29sVEZpZWxkTGlzdCgpOwogICAgICAgICAkJC0+
cHVzaF9iYWNrKCQxKTsKICAgICB9CiAgICAgfCBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IENPTU1B
IHN0cnVjdF9kZWNsYXJhdG9yIHsKQEAgLTE3ODQsMjYgKzE3MDAsMjQgQEAgc3RydWN0X2RlY2xh
cmF0b3JfbGlzdAogICAgIDsKIAogc3RydWN0X2RlY2xhcmF0b3IKLSAgICA6IElERU5USUZJRVIg
ewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5z
dHJpbmcpKQorICAgIDogaWRlbnRpZmllciB7CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZl
ZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogCi0gICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVk
KTsKLSAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7Ci0gICAgICAgICQkLnR5cGUtPnNldEZpZWxk
TmFtZSgqJDEuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9p
ZCwgRWJwVW5kZWZpbmVkKTsKKyAgICAgICAgJCQgPSBuZXcgVEZpZWxkKHR5cGUsICQxLnN0cmlu
Zyk7CiAgICAgfQotICAgIHwgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVz
c2lvbiBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JD
aGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKKyAgICB8IGlkZW50aWZpZXIgTEVGVF9CUkFDS0VU
IGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGlmIChjb250ZXh0
LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJw
VW5kZWZpbmVkKTsKLSAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7Ci0gICAgICAgICQkLnR5cGUt
PnNldEZpZWxkTmFtZSgqJDEuc3RyaW5nKTsKLQotICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDIubGluZSwgJDMsIHNpemUpKQorICAg
ICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAg
ICAgICBpbnQgc2l6ZSA9IDA7CisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNo
ZWNrKEAzLCAkMywgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICQkLnR5cGUtPnNldEFycmF5U2l6ZShzaXplKTsKKyAgICAgICAgdHlwZS0+c2V0QXJyYXlT
aXplKHNpemUpOworCisgICAgICAgICQkID0gbmV3IFRGaWVsZCh0eXBlLCAkMS5zdHJpbmcpOwog
ICAgIH0KICAgICA7CiAKQEAgLTE4MzUsNyArMTc0OSw3IEBAIGNvbXBvdW5kX3N0YXRlbWVudAog
ICAgIHwgTEVGVF9CUkFDRSB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfSBzdGF0ZW1l
bnRfbGlzdCB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyB9IFJJR0hUX0JSQUNFIHsKICAg
ICAgICAgaWYgKCQzICE9IDApIHsKICAgICAgICAgICAgICQzLT5zZXRPcChFT3BTZXF1ZW5jZSk7
Ci0gICAgICAgICAgICAkMy0+c2V0RW5kTGluZSgkNS5saW5lKTsKKyAgICAgICAgICAgICQzLT5z
ZXRMaW5lKEAkKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQzOwogICAgIH0KQEAgLTE4NTks
NyArMTc3Myw3IEBAIGNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUKICAgICB8IExFRlRf
QlJBQ0Ugc3RhdGVtZW50X2xpc3QgUklHSFRfQlJBQ0UgewogICAgICAgICBpZiAoJDIpIHsKICAg
ICAgICAgICAgICQyLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAkMi0+c2V0RW5k
TGluZSgkMy5saW5lKTsKKyAgICAgICAgICAgICQyLT5zZXRMaW5lKEAkKTsKICAgICAgICAgfQog
ICAgICAgICAkJCA9ICQyOwogICAgIH0KQEAgLTE4NjcsMTAgKzE3ODEsMTAgQEAgY29tcG91bmRf
c3RhdGVtZW50X25vX25ld19zY29wZQogCiBzdGF0ZW1lbnRfbGlzdAogICAgIDogc3RhdGVtZW50
IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMSwg
MCk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoJDEs
IEAkKTsKICAgICB9CiAgICAgfCBzdGF0ZW1lbnRfbGlzdCBzdGF0ZW1lbnQgewotICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLCAkMiwgMCk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCBAJCk7
CiAgICAgfQogICAgIDsKIApAQCAtMTg4MSw5ICsxNzk1LDkgQEAgZXhwcmVzc2lvbl9zdGF0ZW1l
bnQKIAogc2VsZWN0aW9uX3N0YXRlbWVudAogICAgIDogSUYgTEVGVF9QQVJFTiBleHByZXNzaW9u
IFJJR0hUX1BBUkVOIHNlbGVjdGlvbl9yZXN0X3N0YXRlbWVudCB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5ib29sRXJyb3JDaGVjaygkMS5saW5lLCAkMykpCisgICAgICAgIGlmIChjb250ZXh0LT5i
b29sRXJyb3JDaGVjayhAMSwgJDMpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oJDMsICQ1LCAk
MS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9u
KCQzLCAkNSwgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTE5MDcsMTQgKzE4MjEsMTQgQEAgY29u
ZGl0aW9uCiAgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkMS0+Z2V0TGluZSgp
LCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQotICAgIHwgZnVs
bHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7CisgICAgfCBm
dWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVyIHsKICAgICAg
ICAgVEludGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0
cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCQyLmxpbmUsICQx
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRl
SW5pdGlhbGl6ZXIoJDIubGluZSwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoQDIsICokMi5zdHJpbmcsICQx
LCAkNCwgaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAkJCA9ICQ0OwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKQEAgLTE5MjYsMTkgKzE4NDAsMTkgQEAg
Y29uZGl0aW9uCiBpdGVyYXRpb25fc3RhdGVtZW50CiAgICAgOiBXSElMRSBMRUZUX1BBUkVOIHsg
Y29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7
IH0gY29uZGl0aW9uIFJJR0hUX1BBUkVOIHN0YXRlbWVudF9ub19uZXdfc2NvcGUgewogICAgICAg
ICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAkNCwgMCwgJDYsICQxLmxpbmUpOworICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hpbGUsIDAsICQ0
LCAwLCAkNiwgQDEpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7CiAgICAg
fQogICAgIHwgRE8geyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0gc3RhdGVtZW50X3dp
dGhfc2NvcGUgV0hJTEUgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIFNFTUlDT0xP
TiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkOC5saW5lLCAkNikpCisg
ICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjayhAOCwgJDYpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZExvb3AoRUxvb3BEb1doaWxlLCAwLCAkNiwgMCwgJDMsICQ0LmxpbmUpOworICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRG9XaGlsZSwgMCwgJDYsIDAs
ICQzLCBANCk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAg
ICAgfCBGT1IgTEVGVF9QQVJFTiB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250
ZXh0LT5sb29wTmVzdGluZ0xldmVsOyB9IGZvcl9pbml0X3N0YXRlbWVudCBmb3JfcmVzdF9zdGF0
ZW1lbnQgUklHSFRfUEFSRU4gc3RhdGVtZW50X25vX25ld19zY29wZSB7CiAgICAgICAgIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLnBvcCgpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRMb29wKEVMb29wRm9yLCAkNCwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigk
NS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oJDUubm9kZTIpLCAkNywg
JDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxv
b3BGb3IsICQ0LCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCQ1Lm5vZGUxKSwgcmVp
bnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigkNS5ub2RlMiksICQ3LCBAMSk7CiAgICAgICAg
IC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAgOwpAQCAtMTk3NSwzOSAr
MTg4OSwzOSBAQCBmb3JfcmVzdF9zdGF0ZW1lbnQKIGp1bXBfc3RhdGVtZW50CiAgICAgOiBDT05U
SU5VRSBTRU1JQ09MT04gewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiY29udGludWUgc3Rh
dGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKEAxLCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIi
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsICQxLmxpbmUp
OworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGlu
dWUsIEAxKTsKICAgICB9CiAgICAgfCBCUkVBSyBTRU1JQ09MT04gewogICAgICAgICBpZiAoY29u
dGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigkMS5saW5lLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxs
b3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9w
QnJlYWssICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
cmFuY2goRU9wQnJlYWssIEAxKTsKICAgICB9CiAgICAgfCBSRVRVUk4gU0VNSUNPTE9OIHsKLSAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgJDEu
bGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BS
ZXR1cm4sIEAxKTsKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdl
dEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQx
LmxpbmUsICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJub24tdm9pZCBmdW5jdGlvbiBtdXN0
IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgUkVUVVJOIGV4cHJlc3Npb24gU0VNSUNPTE9O
IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVy
biwgJDIsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
cmFuY2goRU9wUmV0dXJuLCAkMiwgQDEpOwogICAgICAgICBjb250ZXh0LT5mdW5jdGlvblJldHVy
bnNWYWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBl
LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigkMS5saW5lLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJu
Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgInZvaWQgZnVuY3Rpb24gY2Fubm90
IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9IGVsc2UgaWYgKCooY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZSkg
IT0gJDItPmdldFR5cGUoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwg
ImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hp
bmcgdHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgfCBESVNDQVJEIFNFTUlDT0xPTiB7Ci0gICAgICAgIEZSQUdf
T05MWSgiZGlzY2FyZCIsICQxLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgJDEubGluZSk7CisgICAgICAgIEZSQUdfT05MWSgiZGlz
Y2FyZCIsIEAxKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNo
KEVPcEtpbGwsIEAxKTsKICAgICB9CiAgICAgOwogCkBAIC0yMDE5LDcgKzE5MzMsNyBAQCB0cmFu
c2xhdGlvbl91bml0CiAgICAgICAgIGNvbnRleHQtPnRyZWVSb290ID0gJCQ7CiAgICAgfQogICAg
IHwgdHJhbnNsYXRpb25fdW5pdCBleHRlcm5hbF9kZWNsYXJhdGlvbiB7Ci0gICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCAwKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMSwgJDIsIEAkKTsKICAg
ICAgICAgY29udGV4dC0+dHJlZVJvb3QgPSAkJDsKICAgICB9CiAgICAgOwpAQCAtMjA0MSw3ICsx
OTU1LDcgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAKICAgICAgICAgaWYgKGJ1aWx0
SW4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJidWls
dC1pbiBmdW5jdGlvbnMgY2Fubm90IGJlIHJlZGVmaW5lZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCku
Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImJ1aWx0LWluIGZ1bmN0
aW9ucyBjYW5ub3QgYmUgcmVkZWZpbmVkIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKQEAg
LTIwNTUsNyArMTk2OSw3IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgICAgIC8vCiAg
ICAgICAgICAgICAvLyBUaGVuIHRoaXMgZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5LgogICAg
ICAgICAgICAgLy8KLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJmdW5jdGlv
biBhbHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHki
LCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIHByZXZEZWMtPnNldERlZmluZWQoKTsKQEAgLTIw
NjUsMTEgKzE5NzksMTEgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAvLwogICAgICAg
ICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAibWFpbiIpIHsKICAgICAgICAgICAgIGlmIChm
dW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpID4gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCQxLmxpbmUsICJmdW5jdGlvbiBjYW5ub3QgdGFrZSBhbnkgcGFyYW1ldGVyKHMpIiwg
ZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcihAMSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlv
bi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJuVHlw
ZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigkMS5saW5lLCAiIiwgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0
cmluZygpLCAibWFpbiBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCku
Z2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7
CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0yMDk3LDcgKzIwMTEsNyBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAg
ICAgICAgICAgLy8gSW5zZXJ0IHRoZSBwYXJhbWV0ZXJzIHdpdGggbmFtZSBpbiB0aGUgc3ltYm9s
IHRhYmxlLgogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKCEgY29udGV4
dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoJDEubGluZSwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1l
KCkuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAicmVk
ZWZpbml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICAgICBkZWxldGUgdmFy
aWFibGU7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjEwOCwxNCArMjAyMiwxNSBAQCBmdW5jdGlv
bl9kZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbU5vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxl
LT5nZXRVbmlxdWVJZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEubGluZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJp
YWJsZS0+Z2V0VHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEpOwogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCgwLCAiIiwgKnBhcmFtLnR5cGUsICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAg
ICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1O
b2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUs
IEAxKSwgQDEpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihwYXJhbU5vZGVzLCBFT3BQYXJhbWV0ZXJz
LCAkMS5saW5lKTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsIEAxKTsKICAgICAgICAgJDEuaW50ZXJt
QWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAgICAgY29udGV4dC0+bG9vcE5lc3RpbmdMZXZl
bCA9IDA7CiAgICAgfQpAQCAtMjEyMywxMiArMjAzOCwxMiBAQCBmdW5jdGlvbl9kZWZpbml0aW9u
CiAgICAgICAgIC8vPz8gQ2hlY2sgdGhhdCBhbGwgcGF0aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0
dXJuIHR5cGUgIT0gdm9pZCA/CiAgICAgICAgIC8vICAgTWF5IGJlIGJlc3QgZG9uZSBhcyBwb3N0
IHByb2Nlc3MgcGhhc2Ugb24gaW50ZXJtZWRpYXRlIGNvZGUKICAgICAgICAgaWYgKGNvbnRleHQt
PmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQgJiYgISBjb250
ZXh0LT5mdW5jdGlvblJldHVybnNWYWx1ZSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
JDEubGluZSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlOiIsICIiLCAkMS5mdW5j
dGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEs
ICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAiIiwgJDEuZnVuY3Rpb24tPmdl
dE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0Fn
Z3JlZ2F0ZSgkMS5pbnRlcm1BZ2dyZWdhdGUsICQzLCAwKTsKLSAgICAgICAgY29udGV4dC0+aW50
ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQkLCBFT3BGdW5jdGlvbiwgJDEubGluZSk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50
ZXJtQWdncmVnYXRlLCAkMywgQCQpOworICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0
QWdncmVnYXRlT3BlcmF0b3IoJCQsIEVPcEZ1bmN0aW9uLCBAMSk7CiAgICAgICAgICQkLT5nZXRB
c0FnZ3JlZ2F0ZSgpLT5zZXROYW1lKCQxLmZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFtZSgpLmNfc3Ry
KCkpOwogICAgICAgICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0VHlwZSgkMS5mdW5jdGlvbi0+
Z2V0UmV0dXJuVHlwZSgpKTsKIApAQCAtMjEzNywxNSArMjA1MiwxNyBAQCBmdW5jdGlvbl9kZWZp
bml0aW9uCiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRPcHRpbWl6ZShjb250ZXh0
LT5wcmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRE
ZWJ1Zyhjb250ZXh0LT5wcmFnbWEoKS5kZWJ1Zyk7CiAKLSAgICAgICAgaWYgKCQzICYmICQzLT5n
ZXRBc0FnZ3JlZ2F0ZSgpKQotICAgICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldEVu
ZExpbmUoJDMtPmdldEFzQWdncmVnYXRlKCktPmdldEVuZExpbmUoKSk7Ci0KICAgICAgICAgY29u
dGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgfQogICAgIDsKIAogJSUKIAordm9pZCB5eWVy
cm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciog
cmVhc29uKSB7CisgICAgY29udGV4dC0+ZXJyb3IoKnl5bGxvYywgcmVhc29uLCAiIik7CisgICAg
Y29udGV4dC0+cmVjb3ZlcigpOworfQorCiBpbnQgZ2xzbGFuZ19wYXJzZShUUGFyc2VDb250ZXh0
KiBjb250ZXh0KSB7CiAgICAgcmV0dXJuIHl5cGFyc2UoY29udGV4dCk7CiB9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5j
cHAJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9nbHNsYW5nX2xleC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NCw4ICszODQsOCBAQCBz
dGF0aWMgdm9pZCB5eV9mYXRhbF9lcnJvciAoeXljb25zdCBjaGFyCiAJKnl5X2NwID0gJ1wwJzsg
XAogCXl5Zy0+eXlfY19idWZfcCA9IHl5X2NwOwogCi0jZGVmaW5lIFlZX05VTV9SVUxFUyAxNTUK
LSNkZWZpbmUgWVlfRU5EX09GX0JVRkZFUiAxNTYKKyNkZWZpbmUgWVlfTlVNX1JVTEVTIDE0Nwor
I2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSIDE0OAogLyogVGhpcyBzdHJ1Y3QgaXMgbm90IHVzZWQg
aW4gdGhpcyBzY2FubmVyLAogICAgYnV0IGl0cyBwcmVzZW5jZSBpcyBuZWNlc3NhcnkuICovCiBz
dHJ1Y3QgeXlfdHJhbnNfaW5mbwpAQCAtMzkzLDU4ICszOTMsNTcgQEAgc3RydWN0IHl5X3RyYW5z
X2luZm8KIAlmbGV4X2ludDMyX3QgeXlfdmVyaWZ5OwogCWZsZXhfaW50MzJfdCB5eV9ueHQ7CiAJ
fTsKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2NlcHRbNDU5XSA9CitzdGF0aWMg
eXljb25zdCBmbGV4X2ludDE2X3QgeXlfYWNjZXB0WzQ0M10gPQogICAgIHsgICAwLAotICAgICAg
ICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMTU2LCAgMTU0LCAgMTUzLCAgMTUz
LAotICAgICAgMTM4LCAgMTQ0LCAgMTQ5LCAgMTMzLCAgMTM0LCAgMTQyLCAgMTQxLCAgMTMwLCAg
MTM5LCAgMTM3LAotICAgICAgMTQzLCAgMTAyLCAgMTAyLCAgMTMxLCAgMTI3LCAgMTQ1LCAgMTMy
LCAgMTQ2LCAgMTUwLCAgIDk4LAotICAgICAgMTM1LCAgMTM2LCAgMTQ4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAg
IDk4LCAgMTI4LCAgMTQ3LCAgMTI5LCAgMTQwLCAgICAzLCAgICA0LCAgICAzLAotICAgICAgMTUy
LCAgMTU1LCAgMTUxLCAgMTI0LCAgMTEwLCAgMTI5LCAgMTE4LCAgMTEzLCAgMTA4LCAgMTE2LAot
ICAgICAgMTA2LCAgMTE3LCAgMTA3LCAgMTA1LCAgICAyLCAgICAxLCAgMTA5LCAgMTA0LCAgMTAw
LCAgMTAxLAotICAgICAgICAwLCAgICAwLCAgMTAyLCAgMTM2LCAgMTI4LCAgMTM1LCAgMTI1LCAg
MTIxLCAgMTIzLCAgMTIyLAotICAgICAgMTI2LCAgIDk4LCAgMTE0LCAgMTIwLCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgMTcsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMjAsICAgMjIsCi0gICAgICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0g
ICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAx
MTUsICAxMTksICAgIDUsCi0gICAgICAxNTEsICAgIDAsICAgIDEsICAxMDQsICAgIDAsICAgIDAs
ICAxMDMsICAgOTksICAxMTEsICAxMTIsCi0gICAgICAgNTAsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMTgsCi0gICAgICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMjYsICAgOTgsCi0gICAg
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMjMsICAgOTgsICAg
OTgsCi0KLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICAgMCwgIDEwNSwgICAgMCwgIDEw
NCwgICA5OCwgICAyOCwgICA5OCwgICA5OCwgICA5NSwKLSAgICAgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAyMSwgICA1MywgICA5OCwKLSAgICAgICA5OCwgICA5
OCwgICA2OSwgICA5OCwgICA5OCwgICA1OCwgICA3MywgICA5OCwgICA5OCwgICA5OCwKLSAgICAg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA3MCwgICAgOSwgICAzMywgICAzNCwgICAz
NSwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA1
NiwgICAyOSwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAzNiwg
ICAzNywgICAzOCwgICAyNywgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICAxNSwgICA0MiwgICA0
MywgICA0NCwgICA1MSwgICAxMiwgICA5OCwgICA5OCwgICA5OCwKLQotICAgICAgIDk4LCAgIDgy
LCAgIDgzLCAgIDg0LCAgIDk4LCAgIDMwLCAgIDc0LCAgIDI1LCAgIDg1LCAgIDg2LAotICAgICAg
IDg3LCAgICA3LCAgIDc5LCAgIDgwLCAgIDgxLCAgIDk4LCAgIDI0LCAgIDc3LCAgIDk4LCAgIDk4
LAotICAgICAgIDM5LCAgIDQwLCAgIDQxLCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDcxLCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDUyLCAgIDk4LCAgIDk3LCAgIDk4LCAg
IDk4LCAgIDE5LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDcyLCAgIDY2LCAgIDYx
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDc4LAotICAgICAgIDU3LCAgIDk4LCAg
IDY0LCAgIDMyLCAgIDk4LCAgIDk0LCAgIDY1LCAgIDQ5LCAgIDc2LCAgIDU5LAotICAgICAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDYwLCAgIDMxLAot
ICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgICA4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDU0LAotICAgICAgIDEzLCAgIDk4LCAgIDE0LCAgIDk4LCAgIDk4LCAgIDE2LCAgIDY3LCAg
IDk4LCAgIDk4LCAgIDk4LAotCi0gICAgICAgNjIsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgNTUsICAgNzUsICAgNjMsCi0gICAgICAgMTEsICAgNjgsICAgIDYsICAgOTYs
ICAgMTAsICAgODgsICAgNDUsICAgODksICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgNDYs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNDgsICAgOTgsCi0g
ICAgICAgOTIsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTAsICAgOTgsICAgOTEs
ICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNDcsICAgOTMsICAg
IDAKKyAgICAgICAgMCwgICAgMCwgIDE0OCwgIDE0NiwgIDE0NSwgIDE0NSwgIDEzMiwgIDEzOCwg
IDE0MywgIDEyNywKKyAgICAgIDEyOCwgIDEzNiwgIDEzNSwgIDEyNCwgIDEzMywgIDEzMSwgIDEz
NywgICA5NiwgICA5NiwgIDEyNSwKKyAgICAgIDEyMSwgIDEzOSwgIDEyNiwgIDE0MCwgIDE0NCwg
ICA5MywgIDEyOSwgIDEzMCwgIDE0MiwgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgIDEyMiwKKyAgICAgIDE0
MSwgIDEyMywgIDEzNCwgIDExOCwgIDEwNCwgIDEyMywgIDExMiwgIDEwNywgIDEwMiwgIDExMCwK
KyAgICAgIDEwMCwgIDExMSwgIDEwMSwgICA5OSwgIDEwMywgICA5OCwgICA5NSwgICA5NiwgICAg
MCwgICAgMCwKKyAgICAgIDEzMCwgIDEyMiwgIDEyOSwgIDExOSwgIDExNSwgIDExNywgIDExNiwg
IDEyMCwgICA5MywgIDEwOCwKKyAgICAgIDExNCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICAxMiwgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKworICAgICAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDE1LCAgIDE3LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAor
ICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgMTA5LCAgMTEzLCAgICAwLCAg
IDk4LCAgICAwLCAgICAwLAorICAgICAgIDk3LCAgIDk0LCAgMTA1LCAgMTA2LCAgIDQ1LCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkz
LCAgIDEzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAg
IDkzLCAgIDIxLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAg
ICAgIDkzLCAgIDE4LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLAorCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgIDAs
ICAgOTksICAgIDAsICAgOTgsICAgOTMsCisgICAgICAgMjMsICAgOTMsICAgOTMsICAgOTAsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgMTYsICAgNDgs
ICAgOTMsICAgOTMsICAgOTMsICAgNjQsICAgOTMsICAgOTMsICAgNTMsCisgICAgICAgNjgsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNjUsCisgICAg
ICAgIDQsICAgMjgsICAgMjksICAgMzAsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsCisgICAgICAgNTEsICAgMjQsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgMzEsICAgMzIsCisgICAgICAgMzMsICAgMjIsICAgOTMsICAgOTMsICAgOTMs
ICAgMTAsICAgMzcsICAgMzgsICAgMzksICAgNDYsCisgICAgICAgIDcsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgNzcsICAgNzgsICAgNzksICAgOTMsICAgMjUsCisgICAgICAgNjksICAgMjAs
ICAgODAsICAgODEsICAgODIsICAgIDIsICAgNzQsICAgNzUsICAgNzYsICAgOTMsCisKKyAgICAg
ICAxOSwgICA3MiwgICA5MywgICA5MywgICAzNCwgICAzNSwgICAzNiwgICA5MywgICA5MywgICA5
MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA2NiwgICA5Mywg
ICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA0NywgICA5
MywgICA5MiwgICA5MywgICA5MywKKyAgICAgICAxNCwgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA2NywgICA2MSwgICA1NiwgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA3
MywgICA1MiwgICA5MywgICA1OSwgICAyNywgICA5MywgICA4OSwKKyAgICAgICA2MCwgICA0NCwg
ICA3MSwgICA1NCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5
MywgICA5MywgICA1NSwgICAyNiwgICA5MywgICA5MywgICA5MywgICAgMywgICA5MywgICA5MywK
KyAgICAgICA5MywgICA5MywgICA5MywgICA0OSwgICAgOCwgICA5MywgICAgOSwgICA5MywgICA5
MywgICAxMSwKKyAgICAgICA2MiwgICA5MywgICA5MywgICA5MywgICA1NywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA1MCwgICA3MCwgICA1OCwgICAgNiwgICA2
MywgICAgMSwgICA5MSwgICAgNSwgICA4MywKKworICAgICAgIDQwLCAgIDg0LCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDQxLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkz
LCAgIDkzLCAgIDQzLCAgIDkzLCAgIDg3LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAor
ICAgICAgIDg1LCAgIDkzLCAgIDg2LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDQyLAorICAgICAgIDg4LCAgICAwCiAgICAgfSA7CiAKIHN0YXRpYyB5eWNvbnN0IGZsZXhf
aW50MzJfdCB5eV9lY1syNTZdID0KQEAgLTQ4MSwyMTIgKzQ4MCwxOTggQEAgc3RhdGljIHl5Y29u
c3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQogCiBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMy
X3QgeXlfbWV0YVs2OF0gPQogICAgIHsgICAwLAotICAgICAgICAxLCAgICAxLCAgICAyLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAotICAgICAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICAzLAotICAgICAgICAz
LCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAzLCAgICAzLCAgICAzLAot
ICAgICAgICAzLCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICAxLCAgICAxLCAgICAx
LCAgICAzLAotICAgICAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICA0LCAgICA0LCAg
ICA0LCAgICA0LCAgICA0LAotICAgICAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0
LCAgICA0LCAgICA0LCAgICA0LCAgICA0LAotICAgICAgICA0LCAgICA0LCAgICA0LCAgICAxLCAg
ICAxLCAgICAxLCAgICAxCisgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsCisgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsCisgICAgICAgIDIsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDIsICAgIDIsICAgIDIsCisgICAgICAgIDIsICAg
IDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAgIDIsCisgICAg
ICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAg
IDMsCisgICAgICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMs
ICAgIDMsICAgIDMsCisgICAgICAgIDMsICAgIDMsICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAg
IDEKICAgICB9IDsKIAotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Jhc2VbNDY0XSA9
CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYmFzZVs0NDVdID0KICAgICB7ICAgMCwK
LSAgICAgICAgMCwgICAgMCwgICA2NSwgICA2NiwgICA3NSwgICAgMCwgIDY4MCwgIDY4MSwgIDY4
MSwgIDY4MSwKLSAgICAgIDY1NCwgICA0NSwgIDEzNywgIDY4MSwgIDY4MSwgIDY1MywgIDEzNCwg
IDY4MSwgIDEzMywgIDEzMSwKLSAgICAgIDE0NiwgIDE1OSwgIDE2OCwgIDY1MSwgIDY4MSwgIDE4
NiwgIDY1MSwgICA0NywgIDY4MSwgICAgMCwKLSAgICAgIDY4MSwgIDY4MSwgIDEyOCwgIDEwMCwg
IDExMCwgIDE1MiwgIDE1NiwgIDE0NiwgIDE2NiwgIDYyMiwKLSAgICAgIDE3MywgIDEwOSwgIDYy
MSwgIDEyNiwgIDE3NywgIDYxNSwgIDE3OCwgIDYyOCwgIDE4NywgIDE4NCwKLSAgICAgIDE0MSwg
IDE5NywgIDYyNCwgIDY4MSwgIDE1NywgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwgIDY1NiwKLSAg
ICAgIDY4MSwgIDY4MSwgICAgMCwgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwg
IDY4MSwKLSAgICAgIDY4MSwgIDY4MSwgIDY4MSwgIDIzNiwgIDY4MSwgICAgMCwgIDY4MSwgIDI0
MywgIDI3MywgIDI4MiwKLSAgICAgIDMwNCwgICAgMCwgIDMxNCwgIDY4MSwgIDY4MSwgIDY4MSwg
IDY0NCwgIDY4MSwgIDY4MSwgIDY4MSwKLSAgICAgIDY0MywgICAgMCwgIDY4MSwgIDY4MSwgIDYx
NiwgIDYwOSwgIDYxMiwgIDYyMCwgIDYxOSwgIDYwNiwKLQotICAgICAgNjIxLCAgNjA4LCAgNjE0
LCAgNjAyLCAgNTk5LCAgNjEyLCAgNTk5LCAgNTk2LCAgNTk2LCAgNjAyLAotICAgICAgNTkwLCAg
MTg5LCAgNTk1LCAgNjA1LCAgNTkxLCAgNTk3LCAgNjAwLCAgNjAxLCAgICAwLCAgMjE2LAotICAg
ICAgNjAwLCAgMTg4LCAgNTg2LCAgNTk5LCAgNTkwLCAgNTkyLCAgNTgyLCAgNTk2LCAgNTkzLCAg
NTk1LAotICAgICAgNTc4LCAgNTgzLCAgNTgwLCAgNTY5LCAgMTgzLCAgNTc3LCAgNTgyLCAgNTc4
LCAgNTgwLCAgNTY5LAotICAgICAgNTcyLCAgMjIwLCAgNTc3LCAgNTY5LCAgNTgxLCAgMTc2LCAg
NTc0LCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgICAwLCAgMzMxLCAgICAwLCAgMzQ0LCAgMzYx
LCAgMjkwLCAgMzc0LCAgICAwLCAgNjgxLCAgNjgxLAotICAgICAgICAwLCAgNTY2LCAgNTcwLCAg
NTc5LCAgNTc2LCAgNTYwLCAgNTYwLCAgMjE1LCAgNTc1LCAgNTcyLAotICAgICAgNTcyLCAgNTcw
LCAgNTY3LCAgNTU5LCAgNTY1LCAgNTUyLCAgNTYzLCAgNTQ5LCAgNTY1LCAgICAwLAotICAgICAg
NTYyLCAgNTUwLCAgNTU3LCAgNTU0LCAgNTU4LCAgNTUxLCAgNTQwLCAgNTM5LCAgNTUyLCAgNTU1
LAotICAgICAgNTUyLCAgNTQ3LCAgNTM4LCAgMjYwLCAgNTQzLCAgNTQ2LCAgNTM3LCAgNTM0LCAg
NTM4LCAgNTQ0LAotCi0gICAgICA1MzUsICA1MjYsICA1MjksICA1MjcsICA1MzcsICA1MjMsICA1
MjEsICA1MzQsICA1MjAsICA1MjIsCi0gICAgICA1MTksICA1MzAsICA1MjksICAyODMsICA1MjQs
ICA1MTksICA1MDgsICAyNjQsICA1MjYsICA1MjgsCi0gICAgICA1MTcsICAzODEsICAzODgsICAz
OTUsICA0MDIsICA1MTgsICAgIDAsICA1MTYsICAzMjAsICAgIDAsCi0gICAgICA1MDgsICA1MDYs
ICA1MTQsICA1MDMsICA1MjAsICA1MDksICAzMzYsICAgIDAsICAgIDAsICA1MDMsCi0gICAgICA1
MTMsICA1MTMsICAgIDAsICA0OTgsICAzNDksICAgIDAsICAgIDAsICA1MDAsICAzNjYsICA1MDEs
Ci0gICAgICA0OTUsICA0OTQsICA0OTUsICA0OTQsICA0MDcsICAgIDAsICAgIDAsICAgIDAsICAg
IDAsICAgIDAsCi0gICAgICA0OTAsICA0OTEsICA0OTYsICA0ODcsICA1MDAsICA0OTUsICA0OTQs
ICA0ODYsICA0OTAsICA0ODIsCi0gICAgICA0ODUsICA0ODksICA0OTQsICA0ODAsICA0OTIsICA0
ODMsICAgIDAsICAgIDAsICA0ODksICA0NzgsCi0gICAgICA0NzgsICA0ODMsICA0ODIsICA0Nzks
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0NjksICA0ODEsCi0gICAgICA0ODMsICAgIDAsICAg
IDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0NzEsICA0NzIsICA0NjYsCi0KLSAgICAgIDQ3
NiwgICAgMCwgICAgMCwgICAgMCwgIDQ2NywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwK
LSAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ3NCwgICAgMCwgICAgMCwgIDQ3
MiwgIDQ2OCwKLSAgICAgICAgMCwgICAgMCwgICAgMCwgIDQ2NCwgIDQ2MCwgIDQ2NSwgIDQ1NSwg
IDQ2OCwgIDQ1NCwgIDQ2NywKLSAgICAgIDQ1NiwgIDQ2MywgICAgMCwgIDQ2MSwgIDQ2MywgIDQ0
NywgIDQ0OSwgIDQ1NSwgIDQ2MSwgIDQ1NiwKLSAgICAgIDQ0NCwgICAgMCwgIDQ0NiwgICAgMCwg
IDQ0NSwgIDQ0OCwgICAgMCwgIDQzNywgIDQzNiwgIDQzNiwKLSAgICAgIDQ0OSwgICAgMCwgIDQ1
MSwgICAgMCwgIDQ1MCwgIDQ0OSwgIDQzNCwgIDQ0NywgIDQzNCwgICAgMCwKLSAgICAgICAgMCwg
IDQzNywgICAgMCwgICAgMCwgIDQyOSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAg
ICAgIDQyNiwgIDQzNywgIDQzMCwgIDQzNiwgIDQzMywgIDQyOCwgIDQyMCwgIDQzMiwgICAgMCwg
ICAgMCwKLSAgICAgIDQyNSwgIDQzMiwgIDQyMSwgICAgMCwgIDQzMCwgIDQyNywgIDQxNywgIDQx
MSwgIDQyNSwgICAgMCwKLSAgICAgICAgMCwgIDQyNSwgICAgMCwgIDQyMywgIDQyMiwgICAgMCwg
ICAgMCwgIDQyMSwgIDQwNywgIDQxOSwKLQotICAgICAgICAwLCAgNDEwLCAgNDMxLCAgNDMwLCAg
NDI5LCAgNDAwLCAgMzk2LCAgICAwLCAgICAwLCAgICAwLAotICAgICAgICAwLCAgICAwLCAgICAw
LCAgICAwLCAgICAwLCAgNDIxLCAgMjUwLCAgNDIxLCAgNDExLCAgMzg0LAotICAgICAgMzkyLCAg
Mzk0LCAgMzkwLCAgMzkyLCAgMzkxLCAgMzkwLCAgMzkzLCAgMzkwLCAgMzkxLCAgMzg4LAotICAg
ICAgICAwLCAgMzMyLCAgMzQzLCAgMzE3LCAgMzI5LCAgMzEzLCAgMzE3LCAgMzA0LCAgMzIxLCAg
MjkxLAotICAgICAgICAwLCAgMzAyLCAgMjgwLCAgMjcxLCAgMjU1LCAgMjYyLCAgICAwLCAgMjU2
LCAgICAwLCAgMjMyLAotICAgICAgMjA2LCAgMjEyLCAgMTQ4LCAgMTU5LCAgMTEzLCAgICAwLCAg
ICAwLCAgNjgxLCAgNDQyLCAgNDQ0LAotICAgICAgNDQ2LCAgNDUwLCAgMTYxCisgICAgICAgIDAs
ICAgIDAsICA1ODcsICA1ODgsICA1ODgsICA1ODgsICA1NjEsICAgNDMsICAgNjQsICA1ODgsCisg
ICAgICA1ODgsICA1NjAsICAgNjEsICA1ODgsICAgNjAsICAgNTgsICA1NTksICAgNzcsICAgODYs
ICA1NTcsCisgICAgICA1ODgsICAxMDQsICA1NTcsICAgNTUsICA1ODgsICAgIDAsICA1ODgsICA1
ODgsICAgNzUsICAgMjYsCisgICAgICAgNTcsICAgODIsICAgODMsICAgNzMsICAgOTMsICA1Mjgs
ICAgOTcsICAgOTUsICA1MjcsICAgNDQsCisgICAgICAgNzEsICA1MjEsICAxMDQsICA1MzQsICAx
MTAsICAxMTYsICAgMzUsICAxMTEsICA1MzAsICA1ODgsCisgICAgICAxMTQsICA1ODgsICA1ODgs
ICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsCisgICAgICA1ODgsICA1
ODgsICA1ODgsICAxNjUsICA1ODgsICAxNzIsICAyMDIsICAyMTEsICAyMzMsICAgIDAsCisgICAg
ICA1ODgsICA1ODgsICA1ODgsICA1NTEsICA1ODgsICA1ODgsICA1ODgsICA1NTAsICAgIDAsICA1
ODgsCisgICAgICA1ODgsICA1MjMsICA1MTYsICA1MTksICA1MjcsICA1MjYsICA1MTMsICA1Mjgs
ICA1MTUsICA1MjEsCisgICAgICA1MDksICA1MDYsICA1MTksICA1MDYsICA1MDMsICA1MDMsICA1
MDksICA0OTcsICAxMDgsICA1MDIsCisKKyAgICAgIDUxMiwgIDQ5OCwgIDUwNCwgIDUwNywgIDUw
OCwgICAgMCwgIDE0NSwgIDUwNywgIDExMywgIDQ5MywKKyAgICAgIDUwNiwgIDQ5NywgIDQ5OSwg
IDQ4OSwgIDUwMywgIDUwMCwgIDUwMiwgIDQ4NSwgIDQ5MCwgIDQ4NywKKyAgICAgIDQ3NiwgIDE1
NywgIDQ4NCwgIDQ4OSwgIDQ4NSwgIDQ4NywgIDQ3NiwgIDQ3OSwgIDExOCwgIDQ4NCwKKyAgICAg
IDQ3NiwgIDQ4OCwgICA3MCwgIDQ4MSwgIDU4OCwgIDU4OCwgIDI0NiwgIDI1MywgIDI3MCwgIDIx
OSwKKyAgICAgIDI4MywgICAgMCwgIDU4OCwgIDU4OCwgICAgMCwgIDQ3MywgIDQ3NywgIDQ4Niwg
IDQ4MywgIDQ2NywKKyAgICAgIDQ2NywgIDExOSwgIDQ4MiwgIDQ3OSwgIDQ3OSwgIDQ3NywgIDQ3
NCwgIDQ2NiwgIDQ3MiwgIDQ1OSwKKyAgICAgIDQ3MCwgIDQ1NiwgIDQ3MiwgICAgMCwgIDQ2OSwg
IDQ1NywgIDQ2NCwgIDQ2MSwgIDQ2NSwgIDQ1OCwKKyAgICAgIDQ0NywgIDQ0NiwgIDQ1OSwgIDQ2
MiwgIDQ1OSwgIDQ1NCwgIDQ0NSwgIDE4OCwgIDQ1MCwgIDQ1MywKKyAgICAgIDQ0NCwgIDQ0MSwg
IDQ0NSwgIDQ1MSwgIDQ0MiwgIDQzMywgIDQzNiwgIDQzNCwgIDQ0NCwgIDQzMCwKKyAgICAgIDQy
OCwgIDQ0MSwgIDQyNywgIDQyOSwgIDQyNiwgIDQzNywgIDQzNiwgIDEyNCwgIDQzMSwgIDQyNiwK
KworICAgICAgNDE1LCAgMjU4LCAgNDMzLCAgNDM1LCAgNDI0LCAgMjkwLCAgMjk3LCAgMzA0LCAg
MzExLCAgNDI1LAorICAgICAgICAwLCAgNDIzLCAgMjc1LCAgICAwLCAgNDE1LCAgNDEzLCAgNDIx
LCAgNDEwLCAgNDI3LCAgNDE2LAorICAgICAgMzE2LCAgICAwLCAgICAwLCAgNDEwLCAgNDIwLCAg
NDIwLCAgICAwLCAgNDA1LCAgMzE5LCAgICAwLAorICAgICAgICAwLCAgNDA3LCAgMzIyLCAgNDA4
LCAgNDAyLCAgNDAxLCAgNDAyLCAgNDAxLCAgMzI1LCAgICAwLAorICAgICAgICAwLCAgICAwLCAg
ICAwLCAgICAwLCAgMzk3LCAgMzk4LCAgNDAzLCAgMzk0LCAgNDA3LCAgNDAyLAorICAgICAgNDAx
LCAgMzkzLCAgMzk3LCAgMzg5LCAgMzkyLCAgMzk2LCAgNDAxLCAgMzg3LCAgMzk5LCAgMzkwLAor
ICAgICAgICAwLCAgICAwLCAgMzk2LCAgMzg1LCAgMzg1LCAgMzkwLCAgMzg5LCAgMzg2LCAgICAw
LCAgICAwLAorICAgICAgICAwLCAgICAwLCAgMzc2LCAgMzg4LCAgMzkwLCAgICAwLCAgICAwLCAg
ICAwLCAgICAwLCAgICAwLAorICAgICAgICAwLCAgMzc4LCAgMzc5LCAgMzczLCAgMzgzLCAgICAw
LCAgICAwLCAgICAwLCAgMzc0LCAgICAwLAorICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAg
ICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMzgxLAorCisgICAgICAgIDAsICAgIDAsICAz
NzksICAzNzUsICAgIDAsICAgIDAsICAgIDAsICAzNzEsICAzNjcsICAzNzIsCisgICAgICAzNjIs
ICAzNzUsICAzNjEsICAzNzQsICAzNjMsICAzNzAsICAgIDAsICAzNjgsICAzNzAsICAzNTQsCisg
ICAgICAzNTYsICAzNjIsICAzNjgsICAzNjMsICAzNTEsICAgIDAsICAzNTMsICAgIDAsICAzNTIs
ICAzNTUsCisgICAgICAgIDAsICAzNDQsICAzNDMsICAzNDMsICAzNTYsICAgIDAsICAzNTgsICAg
IDAsICAzNTcsICAzNTYsCisgICAgICAzNDEsICAzNTQsICAzNDEsICAgIDAsICAgIDAsICAzNDQs
ICAgIDAsICAgIDAsICAzMzYsICAgIDAsCisgICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAz
MzMsICAzNDQsICAzMzcsICAzNDMsICAzNDAsICAzMzUsCisgICAgICAzMjcsICAzMzksICAgIDAs
ICAgIDAsICAzMzIsICAzMzksICAzMjgsICAgIDAsICAzMzcsICAzMzQsCisgICAgICAzMjQsICAz
MjksICAzMzIsICAgIDAsICAgIDAsICAzMzIsICAgIDAsICAzMzAsICAzMjksICAgIDAsCisgICAg
ICAgIDAsICAzMjgsICAzMTQsICAzMjYsICAgIDAsICAzMTcsICAzMzgsICAzMzcsICAzMzYsICAz
MDcsCisgICAgICAzMDMsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAs
ICAgIDAsICAzMjgsCisKKyAgICAgIDE2NiwgIDMyNSwgIDMxNiwgIDI5OSwgIDMwOCwgIDMxMCwg
IDMwNiwgIDMwOCwgIDMwNywgIDMwNiwKKyAgICAgIDMwOSwgIDMwNiwgIDI1NiwgIDI1MywgICAg
MCwgIDIyOCwgIDIzOCwgIDIyMiwgIDIzNSwgIDIwMywKKyAgICAgIDIwNywgIDIwNCwgIDIxMiwg
IDE5MSwgICAgMCwgIDIwMSwgIDE2NSwgIDE2NywgIDE1MywgIDE2MSwKKyAgICAgICAgMCwgIDE3
MCwgICAgMCwgIDE3NSwgIDE1MSwgIDE0MSwgIDEwMCwgIDExNCwgICA1OSwgICAgMCwKKyAgICAg
ICAgMCwgIDU4OCwgIDM1OSwgIDExMwogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2lu
dDE2X3QgeXlfZGVmWzQ2NF0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2RlZls0
NDVdID0KICAgICB7ICAgMCwKLSAgICAgIDQ1OCwgICAgMSwgIDQ1OSwgIDQ1OSwgIDQ1OCwgICAg
NSwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MCwKLSAgICAgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAg
ICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ2MSwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ2MiwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ2MywgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ2
MCwgIDQ1OCwgIDQ1OCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAg
ICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDYxLCAgNDU4
LCAgNDYyLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDYzLCAgNDU4LCAgNDU4LAotICAgICAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0
NjAsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
Ci0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0g
ICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsCi0KLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAg
ICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAgICAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAg
ICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgICAwLCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4
LCAgNDU4CisgICAgICA0NDIsICAgIDEsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDMsICA0NDIsICA0NDIsICA0NDIsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDIsCisgICAg
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDQsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDMsICA0NDIsCisgICAgICA0NDIsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0NCwgIDQ0MiwgIDQ0MiwgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywK
KyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywKKworICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAor
ICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorCisg
ICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAg
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgICAgMCwgIDQ0MiwgIDQ0MgogICAgIH0gOwogCi1zdGF0
aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0Wzc0OV0gPQorc3RhdGljIHl5Y29uc3QgZmxl
eF9pbnQxNl90IHl5X254dFs2NTZdID0KICAgICB7ICAgMCwKLSAgICAgICAgOCwgICAgOSwgICAx
MCwgICAxMSwgICAxMiwgICAxMywgICAxNCwgICAxNSwgICAxNiwgICAxNywKLSAgICAgICAxOCwg
ICAxOSwgICAyMCwgICAyMSwgICAyMiwgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywKLSAg
ICAgICAyMywgICAyNCwgICAyNSwgICAyNiwgICAyNywgICAyOCwgICAyOSwgICAzMCwgICAzMCwg
ICAzMCwKLSAgICAgICAzMCwgICAzMCwgICAzMCwgICAzMCwgICAzMCwgICAzMCwgICAzMSwgICAz
MiwgICAzMywgICAzNCwKLSAgICAgICAzNSwgICAzNiwgICAzNywgICAzOCwgICAzOSwgICA0MCwg
ICA0MSwgICA0MiwgICAzMCwgICA0MywKLSAgICAgICA0NCwgICA0NSwgICA0NiwgICA0NywgICA0
OCwgICA0OSwgICA1MCwgICA1MSwgICA1MiwgICA1MywKLSAgICAgICAzMCwgICAzMCwgICAzMCwg
ICA1NCwgICA1NSwgICA1NiwgICA1NywgICA1OSwgICA1OSwgICA2NSwKLSAgICAgICA2NiwgICA5
MCwgICA5MSwgICA2MCwgICA2MCwgICAgOCwgICA2MSwgICA2MiwgICAgOCwgICAgOCwKLSAgICAg
ICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAg
OCwKLSAgICAgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwg
ICAgOCwgICAgOCwKLQotICAgICAgICA4LCAgICA4LCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAg
IDYzLCAgIDYzLCAgIDYzLCAgIDYzLAotICAgICAgIDYzLCAgICA4LCAgICA4LCAgICA4LCAgIDYz
LCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLAotICAgICAgIDYzLCAgIDYzLCAgIDYzLCAg
IDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLAotICAgICAgIDYzLCAgIDYz
LCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgICA4LCAgICA4LAotICAgICAg
ICA4LCAgICA4LCAgIDY3LCAgIDcwLCAgIDcyLCAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0
LAotICAgICAgIDc0LCAgIDc0LCAgIDkzLCAgMTE5LCAgIDc1LCAgIDk1LCAgIDk2LCAgIDczLCAg
IDcxLCAgIDc2LAotICAgICAgMTIwLCAgIDY4LCAgIDk3LCAgMTU4LCAgIDk4LCAgMTIzLCAgIDk0
LCAgMTIxLCAgIDk5LCAgMTI0LAotICAgICAgIDc3LCAgIDc4LCAgNDU3LCAgIDc5LCAgIDc5LCAg
IDc5LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDgwLAotICAgICAgIDc4LCAgMTQ4LCAgIDgzLCAgIDgz
LCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgxLAotICAgICAgIDg1LCAgMTAwLCAg
MTQyLCAgNDU2LCAgIDgyLCAgMTA3LCAgMTQzLCAgMTA4LCAgIDgxLCAgMTAzLAotCi0gICAgICA0
NTUsICAxMDEsICAgODEsICAxMDQsICAxMDIsICAxMTAsICAxMDksICAgODYsICAxMDUsICAgODcs
Ci0gICAgICAgODgsICAgODEsICAxMTYsICAxMTEsICAxMDYsICAxMTIsICAxMjUsICAxMjgsICAx
MTMsICAgODIsCi0gICAgICAxMTcsICAxNDksICAyMDYsICAyMTksICAxMTQsICAyMjAsICAxMzIs
ICAxMzgsICAxNzgsICAxMjYsCi0gICAgICAxMzksICAxMTgsICAxMjksICAxMzMsICAxMzQsICAx
MzAsICAxNDQsICAyMDcsICAxNDAsICAxOTIsCi0gICAgICAxNDUsICAxNzksICA0NTQsICAxMzUs
ICAxMzYsICAxNDEsICAxMzcsICAxOTMsICA0NTMsICAxNDYsCi0gICAgICAgNzQsICAgNzQsICAg
NzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAxNTQsICAxNTQsICAxNTQsCi0gICAgICAxNTQs
ICAxNTQsICAxNTQsICAxNTQsICA0NTIsICAxODYsICAxNTIsICAyMTQsICAxODcsICAxODgsCi0g
ICAgICAyMzIsICAyMzMsICAxODksICAxNTUsICAxOTAsICAyMTUsICAyNTgsICAyNTksICAyNjAs
ICAxNTIsCi0gICAgICAyODUsICAyODYsICAyODcsICA0MjIsICA0MjMsICAgNzgsICAxNTUsICAg
NzksICAgNzksICAgNzksCi0gICAgICAgNzksICAgNzksICAgNzksICAgODAsICAgNzgsICA0NTEs
ICAgODAsICAgODAsICAgODAsICAgODAsCi0KLSAgICAgICA4MCwgICA4MCwgICA4MCwgICA4MSwg
IDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywKLSAgICAgIDE1NywgIDQ1MCwgICA4
MSwgIDE1NiwgIDQ0OSwgIDE1NiwgICA4MSwgIDQ0OCwgIDE1NywgIDE1NywKLSAgICAgIDE1Nywg
IDE1NywgIDE1NywgIDE1NywgIDE1NywgICA4MSwgICA3OCwgIDI4MCwgICA4MywgICA4MywKLSAg
ICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgIDI4MSwgIDI5MywgIDI5NCwgIDI5NSwg
IDQ0NywKLSAgICAgIDIyMiwgIDQ0NiwgIDIyMiwgIDQ0NSwgICA4MSwgIDIyMywgIDIyMywgIDIy
MywgIDIyMywgIDIyMywKLSAgICAgIDIyMywgIDIyMywgIDMwMiwgIDMwMywgIDMwNCwgIDQ0NCwg
IDQ0MywgICA4MSwgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDE1
NCwgIDMwOSwgIDMxMCwgIDMxMSwgIDQ0MiwgIDQ0MSwKLSAgICAgIDIyNCwgIDQ0MCwgIDIyNCwg
IDQzOSwgIDE1NSwgIDIyNSwgIDIyNSwgIDIyNSwgIDIyNSwgIDIyNSwKLSAgICAgIDIyNSwgIDIy
NSwgIDMxMywgIDMxNCwgIDMxNSwgIDQzOCwgIDQzNywgIDE1NSwgIDE1NywgIDE1NywKLSAgICAg
IDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIy
MywKLQotICAgICAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIz
LCAgMjIzLCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAg
MjI1LCAgMjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMjI1LCAgMzIxLCAgMzIy
LCAgMzIzLCAgNDAzLCAgNDA0LCAgNDA1LCAgNDM2LAotICAgICAgNDM1LCAgNDM0LCAgNDMzLCAg
NDMyLCAgNDMxLCAgNDMwLCAgNDI5LCAgNDI4LCAgNDI3LCAgNDA2LAotICAgICAgNDI2LCAgNDA3
LCAgIDU4LCAgIDU4LCAgIDU4LCAgIDU4LCAgIDkyLCAgIDkyLCAgMTUxLCAgMTUxLAotICAgICAg
MTUzLCAgNDI1LCAgMTUzLCAgMTUzLCAgNDI0LCAgNDIxLCAgNDIwLCAgNDE5LCAgNDE4LCAgNDE3
LAotICAgICAgNDE2LCAgNDE1LCAgNDE0LCAgNDEzLCAgNDEyLCAgNDExLCAgNDEwLCAgNDA5LCAg
NDA4LCAgNDAyLAotICAgICAgNDAxLCAgNDAwLCAgMzk5LCAgMzk4LCAgMzk3LCAgMzk2LCAgMzk1
LCAgMzk0LCAgMzkzLCAgMzkyLAotICAgICAgMzkxLCAgMzkwLCAgMzg5LCAgMzg4LCAgMzg3LCAg
Mzg2LCAgMzg1LCAgMzg0LCAgMzgzLCAgMzgyLAotICAgICAgMzgxLCAgMzgwLCAgMzc5LCAgMzc4
LCAgMzc3LCAgMzc2LCAgMzc1LCAgMzc0LCAgMzczLCAgMzcyLAotCi0gICAgICAzNzEsICAzNzAs
ICAzNjksICAzNjgsICAzNjcsICAzNjYsICAzNjUsICAzNjQsICAzNjMsICAzNjIsCi0gICAgICAz
NjEsICAzNjAsICAzNTksICAzNTgsICAzNTcsICAzNTYsICAzNTUsICAzNTQsICAzNTMsICAzNTIs
Ci0gICAgICAzNTEsICAzNTAsICAzNDksICAzNDgsICAzNDcsICAzNDYsICAzNDUsICAzNDQsICAz
NDMsICAzNDIsCi0gICAgICAzNDEsICAzNDAsICAzMzksICAzMzgsICAzMzcsICAzMzYsICAzMzUs
ICAzMzQsICAzMzMsICAzMzIsCi0gICAgICAzMzEsICAzMzAsICAzMjksICAzMjgsICAzMjcsICAz
MjYsICAzMjUsICAzMjQsICAzMjAsICAzMTksCi0gICAgICAzMTgsICAzMTcsICAzMTYsICAzMTIs
ICAzMDgsICAzMDcsICAzMDYsICAzMDUsICAzMDEsICAzMDAsCi0gICAgICAyOTksICAyOTgsICAy
OTcsICAyOTYsICAyOTIsICAyOTEsICAyOTAsICAyODksICAyODgsICAyODQsCi0gICAgICAyODMs
ICAyODIsICAyNzksICAyNzgsICAyNzcsICAyNzYsICAyNzUsICAyNzQsICAyNzMsICAyNzIsCi0g
ICAgICAyNzEsICAyNzAsICAyNjksICAyNjgsICAyNjcsICAyNjYsICAyNjUsICAyNjQsICAyNjMs
ICAyNjIsCi0gICAgICAyNjEsICAyNTcsICAyNTYsICAyNTUsICAyNTQsICAyNTMsICAyNTIsICAy
NTEsICAyNTAsICAyNDksCi0KLSAgICAgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDI0NCwgIDI0
MywgIDI0MiwgIDI0MSwgIDI0MCwgIDIzOSwKLSAgICAgIDIzOCwgIDIzNywgIDIzNiwgIDIzNSwg
IDIzNCwgIDIzMSwgIDIzMCwgIDIyOSwgIDIyOCwgIDIyNywKLSAgICAgIDIyNiwgIDIyMSwgIDIx
OCwgIDIxNywgIDIxNiwgIDIxMywgIDIxMiwgIDIxMSwgIDIxMCwgIDIwOSwKLSAgICAgIDIwOCwg
IDIwNSwgIDIwNCwgIDIwMywgIDIwMiwgIDIwMSwgIDIwMCwgIDE5OSwgIDE5OCwgIDE5NywKLSAg
ICAgIDE5NiwgIDE5NSwgIDE5NCwgIDE5MSwgIDE4NSwgIDE4NCwgIDE4MywgIDE4MiwgIDE4MSwg
IDE4MCwKLSAgICAgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwgIDE3MywgIDE3MiwgIDE3MSwgIDE3
MCwgIDE2OSwgIDE2OCwKLSAgICAgIDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2MywgIDE2Miwg
IDE2MSwgIDE2MCwgIDE1OSwgIDE1MCwKLSAgICAgIDE0NywgIDEzMSwgIDEyNywgIDEyMiwgIDEx
NSwgICA4OSwgICA4NCwgICA2OSwgICA2NCwgIDQ1OCwKLSAgICAgICAgNywgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLQotICAg
ICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4CisgICAgICAgIDQsICAgIDUsICAgIDYsICAgIDcs
ICAgIDgsICAgIDksICAgMTAsICAgMTEsICAgMTIsICAgMTMsCisgICAgICAgMTQsICAgMTUsICAg
MTYsICAgMTcsICAgMTgsICAgMTksICAgMTksICAgMTksICAgMTksICAgMTksCisgICAgICAgMTks
ICAgMjAsICAgMjEsICAgMjIsICAgMjMsICAgMjQsICAgMjUsICAgMjYsICAgMjYsICAgMjYsCisg
ICAgICAgMjYsICAgMjYsICAgMjYsICAgMjYsICAgMjYsICAgMjYsICAgMjcsICAgMjgsICAgMjks
ICAgMzAsCisgICAgICAgMzEsICAgMzIsICAgMzMsICAgMzQsICAgMzUsICAgMzYsICAgMzcsICAg
MzgsICAgMjYsICAgMzksCisgICAgICAgNDAsICAgNDEsICAgNDIsICAgNDMsICAgNDQsICAgNDUs
ICAgNDYsICAgNDcsICAgNDgsICAgNDksCisgICAgICAgMjYsICAgMjYsICAgMjYsICAgNTAsICAg
NTEsICAgNTIsICAgNTMsICAgNTUsICAgNTYsICAgNTcsCisgICAgICAgNjAsICAgNjIsICAgNjQs
ICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNzcsCisgICAgICAgNzgsICAg
ODIsICAgODMsICAxMTAsICAgNjMsICAgNjEsICAxMjksICAxMTEsICAgNTgsICAgNjYsCisgICAg
ICAxMzAsICAgNjcsICAgNjcsICAgNjcsICAgNjcsICAgNjcsICAgNjcsICAgNjgsICAgNjYsICAg
ODAsCisKKyAgICAgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2
OSwgICA3MiwgICA4NCwKKyAgICAgIDExMiwgICA4NSwgICA3MCwgICA4MSwgIDE0MiwgICA4Niwg
ICA2OSwgIDIwMywgIDQ0MSwgIDIwNCwKKyAgICAgICA2OSwgICA4NywgICA5NCwgIDExMywgICA5
NSwgICA3MywgICA5MCwgICA3NCwgICA3NSwgICA2OSwKKyAgICAgICA5MSwgICA4OCwgICA5Nywg
ICA5NiwgICA4OSwgICA5MiwgIDEwMywgICA3MCwgIDEzNSwgIDEwNiwKKyAgICAgICA5OCwgICA5
MywgICA5OSwgIDExNSwgIDEwNCwgIDEwMCwgIDEwNywgIDE2MiwgIDQ0MCwgIDExOSwKKyAgICAg
IDEzMSwgIDEwMSwgIDQzOSwgIDEwOCwgIDEzMiwgIDEwNSwgIDEyMCwgIDEyMSwgIDExNiwgIDEy
NSwKKyAgICAgIDE2MywgIDExNywgIDEyNiwgIDEzMywgIDE3NiwgIDE5OCwgIDEyMiwgIDEyMywg
IDI2NCwgIDEyNCwKKyAgICAgIDEyNywgIDQzOCwgIDE3NywgIDE5OSwgIDIxNiwgIDIxNywgIDI2
NSwgIDEyOCwgIDEzNiwgICA2NCwKKyAgICAgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwg
ICA2NCwgIDEzOCwgIDEzOCwgIDEzOCwgIDEzOCwKKyAgICAgIDEzOCwgIDEzOCwgIDEzOCwgIDQz
NywgIDE3MCwgIDEzNywgIDE5MCwgIDE3MSwgIDE3MiwgIDQwNiwKKworICAgICAgNDA3LCAgMTcz
LCAgMTM5LCAgMTc0LCAgMjQyLCAgMjQzLCAgMjQ0LCAgNDM2LCAgMTM3LCAgNDM1LAorICAgICAg
NDM0LCAgMTkxLCAgNDMzLCAgNDMyLCAgIDY2LCAgMTM5LCAgIDY3LCAgIDY3LCAgIDY3LCAgIDY3
LAorICAgICAgIDY3LCAgIDY3LCAgIDY4LCAgIDY2LCAgNDMxLCAgIDY4LCAgIDY4LCAgIDY4LCAg
IDY4LCAgIDY4LAorICAgICAgIDY4LCAgIDY4LCAgIDY5LCAgMTQxLCAgMTQxLCAgMTQxLCAgMTQx
LCAgMTQxLCAgMTQxLCAgMTQxLAorICAgICAgNDMwLCAgIDY5LCAgMTQwLCAgNDI5LCAgMTQwLCAg
IDY5LCAgNDI4LCAgMTQxLCAgMTQxLCAgMTQxLAorICAgICAgMTQxLCAgMTQxLCAgMTQxLCAgMTQx
LCAgIDY5LCAgMjA2LCAgNDI3LCAgMjA2LCAgNDI2LCAgNDI1LAorICAgICAgMjA3LCAgMjA3LCAg
MjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMTM4LCAgMTM4LCAgMTM4LAorICAgICAgMTM4
LCAgMTM4LCAgMTM4LCAgMTM4LCAgMjY5LCAgMjcwLCAgMjcxLCAgNDI0LCAgNDIzLCAgMjA4LAor
ICAgICAgNDIyLCAgMjA4LCAgNDIxLCAgMTM5LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5
LCAgMjA5LAorICAgICAgMjA5LCAgMjc3LCAgMjc4LCAgMjc5LCAgNDIwLCAgNDE5LCAgMTM5LCAg
MTQxLCAgMTQxLCAgMTQxLAorCisgICAgICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAyMDcsICAy
MDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsCisgICAgICAyMDcsICAyMDcsICAyMDcsICAyMDcs
ICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDksICAyMDksCisgICAgICAyMDksICAyMDksICAy
MDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksCisgICAgICAyMDks
ICAyMDksICAyODYsICAyODcsICAyODgsICAyOTMsICAyOTQsICAyOTUsICAyOTcsICAyOTgsCisg
ICAgICAyOTksICAzMDUsICAzMDYsICAzMDcsICAzODcsICAzODgsICAzODksICA0MTgsICA0MTcs
ICA0MTYsCisgICAgICA0MTUsICA0MTQsICA0MTMsICA0MTIsICA0MTEsICA0MTAsICA0MDksICAz
OTAsICA0MDgsICAzOTEsCisgICAgICAgNzksICAgNzksICA0MDUsICA0MDQsICA0MDMsICA0MDIs
ICA0MDEsICA0MDAsICAzOTksICAzOTgsCisgICAgICAzOTcsICAzOTYsICAzOTUsICAzOTQsICAz
OTMsICAzOTIsICAzODYsICAzODUsICAzODQsICAzODMsCisgICAgICAzODIsICAzODEsICAzODAs
ICAzNzksICAzNzgsICAzNzcsICAzNzYsICAzNzUsICAzNzQsICAzNzMsCisgICAgICAzNzIsICAz
NzEsICAzNzAsICAzNjksICAzNjgsICAzNjcsICAzNjYsICAzNjUsICAzNjQsICAzNjMsCisKKyAg
ICAgIDM2MiwgIDM2MSwgIDM2MCwgIDM1OSwgIDM1OCwgIDM1NywgIDM1NiwgIDM1NSwgIDM1NCwg
IDM1MywKKyAgICAgIDM1MiwgIDM1MSwgIDM1MCwgIDM0OSwgIDM0OCwgIDM0NywgIDM0NiwgIDM0
NSwgIDM0NCwgIDM0MywKKyAgICAgIDM0MiwgIDM0MSwgIDM0MCwgIDMzOSwgIDMzOCwgIDMzNywg
IDMzNiwgIDMzNSwgIDMzNCwgIDMzMywKKyAgICAgIDMzMiwgIDMzMSwgIDMzMCwgIDMyOSwgIDMy
OCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMywKKyAgICAgIDMyMiwgIDMyMSwgIDMyMCwg
IDMxOSwgIDMxOCwgIDMxNywgIDMxNiwgIDMxNSwgIDMxNCwgIDMxMywKKyAgICAgIDMxMiwgIDMx
MSwgIDMxMCwgIDMwOSwgIDMwOCwgIDMwNCwgIDMwMywgIDMwMiwgIDMwMSwgIDMwMCwKKyAgICAg
IDI5NiwgIDI5MiwgIDI5MSwgIDI5MCwgIDI4OSwgIDI4NSwgIDI4NCwgIDI4MywgIDI4MiwgIDI4
MSwKKyAgICAgIDI4MCwgIDI3NiwgIDI3NSwgIDI3NCwgIDI3MywgIDI3MiwgIDI2OCwgIDI2Nywg
IDI2NiwgIDI2MywKKyAgICAgIDI2MiwgIDI2MSwgIDI2MCwgIDI1OSwgIDI1OCwgIDI1NywgIDI1
NiwgIDI1NSwgIDI1NCwgIDI1MywKKyAgICAgIDI1MiwgIDI1MSwgIDI1MCwgIDI0OSwgIDI0OCwg
IDI0NywgIDI0NiwgIDI0NSwgIDI0MSwgIDI0MCwKKworICAgICAgMjM5LCAgMjM4LCAgMjM3LCAg
MjM2LCAgMjM1LCAgMjM0LCAgMjMzLCAgMjMyLCAgMjMxLCAgMjMwLAorICAgICAgMjI5LCAgMjI4
LCAgMjI3LCAgMjI2LCAgMjI1LCAgMjI0LCAgMjIzLCAgMjIyLCAgMjIxLCAgMjIwLAorICAgICAg
MjE5LCAgMjE4LCAgMjE1LCAgMjE0LCAgMjEzLCAgMjEyLCAgMjExLCAgMjEwLCAgMjA1LCAgMjAy
LAorICAgICAgMjAxLCAgMjAwLCAgMTk3LCAgMTk2LCAgMTk1LCAgMTk0LCAgMTkzLCAgMTkyLCAg
MTg5LCAgMTg4LAorICAgICAgMTg3LCAgMTg2LCAgMTg1LCAgMTg0LCAgMTgzLCAgMTgyLCAgMTgx
LCAgMTgwLCAgMTc5LCAgMTc4LAorICAgICAgMTc1LCAgMTY5LCAgMTY4LCAgMTY3LCAgMTY2LCAg
MTY1LCAgMTY0LCAgMTYxLCAgMTYwLCAgMTU5LAorICAgICAgMTU4LCAgMTU3LCAgMTU2LCAgMTU1
LCAgMTU0LCAgMTUzLCAgMTUyLCAgMTUxLCAgMTUwLCAgMTQ5LAorICAgICAgMTQ4LCAgMTQ3LCAg
MTQ2LCAgMTQ1LCAgMTQ0LCAgMTQzLCAgMTM0LCAgMTE4LCAgMTE0LCAgMTA5LAorICAgICAgMTAy
LCAgIDc2LCAgIDcxLCAgIDY1LCAgIDU5LCAgIDU0LCAgNDQyLCAgICAzLCAgNDQyLCAgNDQyLAor
ICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLAorCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisg
ICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIKICAgICB9IDsKIAotc3RhdGljIHl5Y29u
c3QgZmxleF9pbnQxNl90IHl5X2Noa1s3NDldID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZf
dCB5eV9jaGtbNjU2XSA9CiAgICAgeyAgIDAsCiAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCiAgICAgICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCkBAIC02OTQsOTUg
KzY3OSw4NSBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzc0OV0gCiAgICAg
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsCiAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsCiAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsCi0gICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDMsICAgIDQsICAgMTIsCi0gICAgICAgMTIsICAgMjgsICAgMjgsICAg
IDMsICAgIDQsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsCi0gICAgICAgIDUsICAgIDUs
ICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsCi0gICAgICAg
IDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUs
Ci0KLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwg
ICAxMywgICAxNywgICAxOSwgICAyMCwgICAyMCwgICAyMCwgICAyMCwgICAyMCwKLSAgICAgICAy
MCwgICAyMCwgICAzMywgICA0MiwgICAyMSwgICAzNCwgICAzNCwgICAxOSwgICAxNywgICAyMSwK
LSAgICAgICA0MiwgICAxMywgICAzNSwgIDQ2MywgICAzNSwgICA0NCwgICAzMywgICA0MiwgICAz
NSwgICA0NCwKLSAgICAgICAyMSwgICAyMiwgIDQ1NSwgICAyMiwgICAyMiwgICAyMiwgICAyMiwg
ICAyMiwgICAyMiwgICAyMiwKLSAgICAgICAyMywgICA1NSwgICAyMywgICAyMywgICAyMywgICAy
MywgICAyMywgICAyMywgICAyMywgICAyMiwKLSAgICAgICAyNiwgICAzNiwgICA1MSwgIDQ1NCwg
ICAyMiwgICAzOCwgICA1MSwgICAzOCwgICAyMywgICAzNywKLQotICAgICAgNDUzLCAgIDM2LCAg
IDIyLCAgIDM3LCAgIDM2LCAgIDM5LCAgIDM4LCAgIDI2LCAgIDM3LCAgIDI2LAotICAgICAgIDI2
LCAgIDIzLCAgIDQxLCAgIDM5LCAgIDM3LCAgIDM5LCAgIDQ1LCAgIDQ3LCAgIDM5LCAgIDIyLAot
ICAgICAgIDQxLCAgIDU1LCAgMTM1LCAgMTQ2LCAgIDM5LCAgMTQ2LCAgIDQ5LCAgIDUwLCAgMTEy
LCAgIDQ1LAotICAgICAgIDUwLCAgIDQxLCAgIDQ3LCAgIDQ5LCAgIDQ5LCAgIDQ3LCAgIDUyLCAg
MTM1LCAgIDUwLCAgMTIyLAotICAgICAgIDUyLCAgMTEyLCAgNDUyLCAgIDQ5LCAgIDQ5LCAgIDUw
LCAgIDQ5LCAgMTIyLCAgNDUxLCAgIDUyLAotICAgICAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0LCAg
IDc0LCAgIDc0LCAgIDc0LCAgIDc4LCAgIDc4LCAgIDc4LAotICAgICAgIDc4LCAgIDc4LCAgIDc4
LCAgIDc4LCAgNDUwLCAgMTIwLCAgIDc0LCAgMTQyLCAgMTIwLCAgMTIwLAotICAgICAgMTY4LCAg
MTY4LCAgMTIwLCAgIDc4LCAgMTIwLCAgMTQyLCAgMTk0LCAgMTk0LCAgMTk0LCAgIDc0LAotICAg
ICAgMjE4LCAgMjE4LCAgMjE4LCAgNDE3LCAgNDE3LCAgIDc5LCAgIDc4LCAgIDc5LCAgIDc5LCAg
IDc5LAotICAgICAgIDc5LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDgwLCAgNDQ4LCAgIDgwLCAgIDgw
LCAgIDgwLCAgIDgwLAotCi0gICAgICAgODAsICAgODAsICAgODAsICAgNzksICAxNTYsICAxNTYs
ICAxNTYsICAxNTYsICAxNTYsICAxNTYsCi0gICAgICAxNTYsICA0NDYsICAgODAsICAgODEsICA0
NDUsICAgODEsICAgNzksICA0NDQsICAgODEsICAgODEsCi0gICAgICAgODEsICAgODEsICAgODEs
ICAgODEsICAgODEsICAgODAsICAgODMsICAyMTQsICAgODMsICAgODMsCi0gICAgICAgODMsICAg
ODMsICAgODMsICAgODMsICAgODMsICAyMTQsICAyMjksICAyMjksICAyMjksICA0NDMsCi0gICAg
ICAxNTIsICA0NDIsICAxNTIsICA0NDAsICAgODMsICAxNTIsICAxNTIsICAxNTIsICAxNTIsICAx
NTIsCi0gICAgICAxNTIsICAxNTIsICAyMzcsICAyMzcsICAyMzcsICA0MzksICA0MzgsICAgODMs
ICAxNTQsICAxNTQsCi0gICAgICAxNTQsICAxNTQsICAxNTQsICAxNTQsICAxNTQsICAyNDUsICAy
NDUsICAyNDUsICA0MzcsICA0MzYsCi0gICAgICAxNTUsICA0MzUsICAxNTUsICA0MzQsICAxNTQs
ICAxNTUsICAxNTUsICAxNTUsICAxNTUsICAxNTUsCi0gICAgICAxNTUsICAxNTUsICAyNDksICAy
NDksICAyNDksICA0MzMsICA0MzIsICAxNTQsICAxNTcsICAxNTcsCi0gICAgICAxNTcsICAxNTcs
ICAxNTcsICAxNTcsICAxNTcsICAyMjIsICAyMjIsICAyMjIsICAyMjIsICAyMjIsCi0KLSAgICAg
IDIyMiwgIDIyMiwgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIy
NCwKLSAgICAgIDIyNCwgIDIyNCwgIDIyNCwgIDIyNCwgIDIyNCwgIDIyNCwgIDIyNSwgIDIyNSwg
IDIyNSwgIDIyNSwKLSAgICAgIDIyNSwgIDIyNSwgIDIyNSwgIDI1NSwgIDI1NSwgIDI1NSwgIDM4
OCwgIDM4OCwgIDM4OCwgIDQzMCwKLSAgICAgIDQyOSwgIDQyOCwgIDQyNywgIDQyNiwgIDQyNSwg
IDQyNCwgIDQyMywgIDQyMiwgIDQyMSwgIDM4OCwKLSAgICAgIDQyMCwgIDM4OCwgIDQ1OSwgIDQ1
OSwgIDQ1OSwgIDQ1OSwgIDQ2MCwgIDQ2MCwgIDQ2MSwgIDQ2MSwKLSAgICAgIDQ2MiwgIDQxOSwg
IDQ2MiwgIDQ2MiwgIDQxOCwgIDQxNiwgIDQwNywgIDQwNiwgIDQwNSwgIDQwNCwKLSAgICAgIDQw
MywgIDQwMiwgIDQwMCwgIDM5OSwgIDM5OCwgIDM5NSwgIDM5NCwgIDM5MiwgIDM4OSwgIDM4NywK
LSAgICAgIDM4NiwgIDM4NSwgIDM4MywgIDM4MiwgIDM4MSwgIDM3OCwgIDM3NywgIDM3NiwgIDM3
NSwgIDM3NCwKLSAgICAgIDM3MywgIDM3MiwgIDM3MSwgIDM2NSwgIDM2MiwgIDM1OSwgIDM1OCwg
IDM1NywgIDM1NiwgIDM1NSwKLSAgICAgIDM1MywgIDM1MSwgIDM1MCwgIDM0OSwgIDM0OCwgIDM0
NiwgIDM0NSwgIDM0MywgIDM0MSwgIDM0MCwKLQotICAgICAgMzM5LCAgMzM4LCAgMzM3LCAgMzM2
LCAgMzM1LCAgMzM0LCAgMzMyLCAgMzMxLCAgMzMwLCAgMzI5LAotICAgICAgMzI4LCAgMzI3LCAg
MzI2LCAgMzI1LCAgMzI0LCAgMzIwLCAgMzE5LCAgMzE2LCAgMzA1LCAgMzAxLAotICAgICAgMzAw
LCAgMjk5LCAgMjk4LCAgMjkxLCAgMjkwLCAgMjg5LCAgMjg0LCAgMjgzLCAgMjgyLCAgMjgxLAot
ICAgICAgMjgwLCAgMjc5LCAgMjc2LCAgMjc1LCAgMjc0LCAgMjczLCAgMjcyLCAgMjcxLCAgMjcw
LCAgMjY5LAotICAgICAgMjY4LCAgMjY3LCAgMjY2LCAgMjY1LCAgMjY0LCAgMjYzLCAgMjYyLCAg
MjYxLCAgMjU0LCAgMjUzLAotICAgICAgMjUyLCAgMjUxLCAgMjUwLCAgMjQ4LCAgMjQ0LCAgMjQy
LCAgMjQxLCAgMjQwLCAgMjM2LCAgMjM1LAotICAgICAgMjM0LCAgMjMzLCAgMjMyLCAgMjMxLCAg
MjI4LCAgMjI2LCAgMjIxLCAgMjIwLCAgMjE5LCAgMjE3LAotICAgICAgMjE2LCAgMjE1LCAgMjEz
LCAgMjEyLCAgMjExLCAgMjEwLCAgMjA5LCAgMjA4LCAgMjA3LCAgMjA2LAotICAgICAgMjA1LCAg
MjA0LCAgMjAzLCAgMjAyLCAgMjAxLCAgMjAwLCAgMTk5LCAgMTk4LCAgMTk3LCAgMTk2LAotICAg
ICAgMTk1LCAgMTkzLCAgMTkyLCAgMTkxLCAgMTkwLCAgMTg5LCAgMTg4LCAgMTg3LCAgMTg2LCAg
MTg1LAotCi0gICAgICAxODQsICAxODMsICAxODIsICAxODEsICAxNzksICAxNzgsICAxNzcsICAx
NzYsICAxNzUsICAxNzQsCi0gICAgICAxNzMsICAxNzIsICAxNzEsICAxNzAsICAxNjksICAxNjcs
ICAxNjYsICAxNjUsICAxNjQsICAxNjMsCi0gICAgICAxNjIsICAxNDcsICAxNDUsICAxNDQsICAx
NDMsICAxNDEsICAxNDAsICAxMzksICAxMzgsICAxMzcsCi0gICAgICAxMzYsICAxMzQsICAxMzMs
ICAxMzIsICAxMzEsICAxMzAsICAxMjksICAxMjgsICAxMjcsICAxMjYsCi0gICAgICAxMjUsICAx
MjQsICAxMjMsICAxMjEsICAxMTgsICAxMTcsICAxMTYsICAxMTUsICAxMTQsICAxMTMsCi0gICAg
ICAxMTEsICAxMTAsICAxMDksICAxMDgsICAxMDcsICAxMDYsICAxMDUsICAxMDQsICAxMDMsICAx
MDIsCi0gICAgICAxMDEsICAxMDAsICAgOTksICAgOTgsICAgOTcsICAgOTYsICAgOTUsICAgOTEs
ICAgODcsICAgNjAsCi0gICAgICAgNTMsICAgNDgsICAgNDYsICAgNDMsICAgNDAsICAgMjcsICAg
MjQsICAgMTYsICAgMTEsICAgIDcsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0KLSAgICAgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OAorICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAx
LCAgICAxLCAgICA4LCAgICA4LCAgICA5LAorICAgICAgIDEzLCAgIDE1LCAgIDE2LCAgIDE2LCAg
IDE2LCAgIDE2LCAgIDE2LCAgIDE2LCAgIDE2LCAgIDI0LAorICAgICAgIDI0LCAgIDMwLCAgIDMw
LCAgIDQwLCAgIDE1LCAgIDEzLCAgIDQ3LCAgIDQwLCAgICA5LCAgIDE4LAorICAgICAgIDQ3LCAg
IDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE5LCAgIDI5LAorCisg
ICAgICAgMTksICAgMTksICAgMTksICAgMTksICAgMTksICAgMTksICAgMTksICAgMTgsICAgMjIs
ICAgMzEsCisgICAgICAgNDEsICAgMzEsICAgMTgsICAgMjksICA0NDQsICAgMzEsICAgMTksICAx
MzMsICA0MzksICAxMzMsCisgICAgICAgMTgsICAgMzIsICAgMzQsICAgNDEsICAgMzQsICAgMjIs
ICAgMzMsICAgMjIsICAgMjIsICAgMTksCisgICAgICAgMzMsICAgMzIsICAgMzUsICAgMzQsICAg
MzIsICAgMzMsICAgMzcsICAgMTgsICAgNTEsICAgMzgsCisgICAgICAgMzUsICAgMzMsICAgMzUs
ICAgNDMsICAgMzcsICAgMzUsICAgMzgsICAgOTksICA0MzgsICAgNDUsCisgICAgICAgNDgsICAg
MzUsICA0MzcsICAgMzgsICAgNDgsICAgMzcsICAgNDUsICAgNDUsICAgNDMsICAgNDYsCisgICAg
ICAgOTksICAgNDMsICAgNDYsICAgNDgsICAxMDksICAxMjksICAgNDUsICAgNDUsICAxOTgsICAg
NDUsCisgICAgICAgNDYsICA0MzYsICAxMDksICAxMjksICAxNTIsICAxNTIsICAxOTgsICAgNDYs
ICAgNTEsICAgNjQsCisgICAgICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAg
NjYsICAgNjYsICAgNjYsICAgNjYsCisgICAgICAgNjYsICAgNjYsICAgNjYsICA0MzUsICAxMDcs
ICAgNjQsICAxMjIsICAxMDcsICAxMDcsICA0MDEsCisKKyAgICAgIDQwMSwgIDEwNywgICA2Niwg
IDEwNywgIDE3OCwgIDE3OCwgIDE3OCwgIDQzNCwgICA2NCwgIDQzMiwKKyAgICAgIDQzMCwgIDEy
MiwgIDQyOSwgIDQyOCwgICA2NywgICA2NiwgICA2NywgICA2NywgICA2NywgICA2NywKKyAgICAg
ICA2NywgICA2NywgICA2NywgICA2OCwgIDQyNywgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2
OCwKKyAgICAgICA2OCwgICA2OCwgICA2NywgIDE0MCwgIDE0MCwgIDE0MCwgIDE0MCwgIDE0MCwg
IDE0MCwgIDE0MCwKKyAgICAgIDQyNiwgICA2OCwgICA2OSwgIDQyNCwgICA2OSwgICA2NywgIDQy
MywgICA2OSwgICA2OSwgICA2OSwKKyAgICAgICA2OSwgICA2OSwgICA2OSwgICA2OSwgICA2OCwg
IDEzNywgIDQyMiwgIDEzNywgIDQyMSwgIDQyMCwKKyAgICAgIDEzNywgIDEzNywgIDEzNywgIDEz
NywgIDEzNywgIDEzNywgIDEzNywgIDEzOCwgIDEzOCwgIDEzOCwKKyAgICAgIDEzOCwgIDEzOCwg
IDEzOCwgIDEzOCwgIDIwMiwgIDIwMiwgIDIwMiwgIDQxOSwgIDQxOCwgIDEzOSwKKyAgICAgIDQx
NywgIDEzOSwgIDQxNiwgIDEzOCwgIDEzOSwgIDEzOSwgIDEzOSwgIDEzOSwgIDEzOSwgIDEzOSwK
KyAgICAgIDEzOSwgIDIxMywgIDIxMywgIDIxMywgIDQxNCwgIDQxMywgIDEzOCwgIDE0MSwgIDE0
MSwgIDE0MSwKKworICAgICAgMTQxLCAgMTQxLCAgMTQxLCAgMTQxLCAgMjA2LCAgMjA2LCAgMjA2
LCAgMjA2LCAgMjA2LCAgMjA2LAorICAgICAgMjA2LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAg
MjA3LCAgMjA3LCAgMjA3LCAgMjA4LCAgMjA4LAorICAgICAgMjA4LCAgMjA4LCAgMjA4LCAgMjA4
LCAgMjA4LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LAorICAgICAgMjA5LCAgMjA5LCAg
MjIxLCAgMjIxLCAgMjIxLCAgMjI5LCAgMjI5LCAgMjI5LCAgMjMzLCAgMjMzLAorICAgICAgMjMz
LCAgMjM5LCAgMjM5LCAgMjM5LCAgMzcyLCAgMzcyLCAgMzcyLCAgNDEyLCAgNDExLCAgNDEwLAor
ICAgICAgNDA5LCAgNDA4LCAgNDA3LCAgNDA2LCAgNDA1LCAgNDA0LCAgNDAzLCAgMzcyLCAgNDAy
LCAgMzcyLAorICAgICAgNDQzLCAgNDQzLCAgNDAwLCAgMzkxLCAgMzkwLCAgMzg5LCAgMzg4LCAg
Mzg3LCAgMzg2LCAgMzg0LAorICAgICAgMzgzLCAgMzgyLCAgMzc5LCAgMzc4LCAgMzc2LCAgMzcz
LCAgMzcxLCAgMzcwLCAgMzY5LCAgMzY3LAorICAgICAgMzY2LCAgMzY1LCAgMzYyLCAgMzYxLCAg
MzYwLCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LAorICAgICAgMzQ5LCAgMzQ2LCAgMzQz
LCAgMzQyLCAgMzQxLCAgMzQwLCAgMzM5LCAgMzM3LCAgMzM1LCAgMzM0LAorCisgICAgICAzMzMs
ICAzMzIsICAzMzAsICAzMjksICAzMjcsICAzMjUsICAzMjQsICAzMjMsICAzMjIsICAzMjEsCisg
ICAgICAzMjAsICAzMTksICAzMTgsICAzMTYsICAzMTUsICAzMTQsICAzMTMsICAzMTIsICAzMTEs
ICAzMTAsCisgICAgICAzMDksICAzMDgsICAzMDQsICAzMDMsICAzMDAsICAyODksICAyODUsICAy
ODQsICAyODMsICAyODIsCisgICAgICAyNzUsICAyNzQsICAyNzMsICAyNjgsICAyNjcsICAyNjYs
ICAyNjUsICAyNjQsICAyNjMsICAyNjAsCisgICAgICAyNTksICAyNTgsICAyNTcsICAyNTYsICAy
NTUsICAyNTQsICAyNTMsICAyNTIsICAyNTEsICAyNTAsCisgICAgICAyNDksICAyNDgsICAyNDcs
ICAyNDYsICAyNDUsICAyMzgsICAyMzcsICAyMzYsICAyMzUsICAyMzQsCisgICAgICAyMzIsICAy
MjgsICAyMjYsICAyMjUsICAyMjQsICAyMjAsICAyMTksICAyMTgsICAyMTcsICAyMTYsCisgICAg
ICAyMTUsICAyMTIsICAyMTAsICAyMDUsICAyMDQsICAyMDMsICAyMDEsICAyMDAsICAxOTksICAx
OTcsCisgICAgICAxOTYsICAxOTUsICAxOTQsICAxOTMsICAxOTIsICAxOTEsICAxOTAsICAxODks
ICAxODgsICAxODcsCisgICAgICAxODYsICAxODUsICAxODQsICAxODMsICAxODIsICAxODEsICAx
ODAsICAxNzksICAxNzcsICAxNzYsCisKKyAgICAgIDE3NSwgIDE3NCwgIDE3MywgIDE3MiwgIDE3
MSwgIDE3MCwgIDE2OSwgIDE2OCwgIDE2NywgIDE2NiwKKyAgICAgIDE2NSwgIDE2MywgIDE2Miwg
IDE2MSwgIDE2MCwgIDE1OSwgIDE1OCwgIDE1NywgIDE1NiwgIDE1NSwKKyAgICAgIDE1NCwgIDE1
MywgIDE1MSwgIDE1MCwgIDE0OSwgIDE0OCwgIDE0NywgIDE0NiwgIDEzNCwgIDEzMiwKKyAgICAg
IDEzMSwgIDEzMCwgIDEyOCwgIDEyNywgIDEyNiwgIDEyNSwgIDEyNCwgIDEyMywgIDEyMSwgIDEy
MCwKKyAgICAgIDExOSwgIDExOCwgIDExNywgIDExNiwgIDExNSwgIDExNCwgIDExMywgIDExMiwg
IDExMSwgIDExMCwKKyAgICAgIDEwOCwgIDEwNSwgIDEwNCwgIDEwMywgIDEwMiwgIDEwMSwgIDEw
MCwgICA5OCwgICA5NywgICA5NiwKKyAgICAgICA5NSwgICA5NCwgICA5MywgICA5MiwgICA5MSwg
ICA5MCwgICA4OSwgICA4OCwgICA4NywgICA4NiwKKyAgICAgICA4NSwgICA4NCwgICA4MywgICA4
MiwgICA3OCwgICA3NCwgICA0OSwgICA0NCwgICA0MiwgICAzOSwKKyAgICAgICAzNiwgICAyMywg
ICAyMCwgICAxNywgICAxMiwgICAgNywgICAgMywgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwK
KworICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyCiAgICAgfSA7CiAKIC8qIFRhYmxlIG9mIGJvb2xlYW5z
LCB0cnVlIGlmIHJ1bGUgY291bGQgbWF0Y2ggZW9sLiAqLwotc3RhdGljIHl5Y29uc3QgZmxleF9p
bnQzMl90IHl5X3J1bGVfY2FuX21hdGNoX2VvbFsxNTZdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhf
aW50MzJfdCB5eV9ydWxlX2Nhbl9tYXRjaF9lb2xbMTQ4XSA9CiAgICAgeyAgIDAsCi0wLCAwLCAw
LCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKzAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsICAgICB9OworICAg
IDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsICAgICB9OwogCiAvKiBUaGUgaW50ZW50IGJlaGluZCB0
aGlzIGRlZmluaXRpb24gaXMgdGhhdCBpdCdsbCBjYXRjaAogICogYW55IHVzZXMgb2YgUkVKRUNU
IHdoaWNoIGZsZXggbWlzc2VkLgpAQCAtODE3LDcgKzc5MiwxMCBAQCBXSElDSCBHRU5FUkFURVMg
VEhFIEdMU0wgRVMgTEVYRVIgKGdsc2xhCiAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQxMDIp
CiAjZW5kaWYKIAotI2RlZmluZSBZWV9VU0VSX0FDVElPTiB5eWx2YWwtPmxleC5saW5lID0geXls
aW5lbm87CisjZGVmaW5lIFlZX1VTRVJfQUNUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIHl5bGxvYy0+Zmlyc3RfZmlsZSA9IHl5bGxvYy0+bGFzdF9maWxlID0geXlj
b2x1bW47IFwKKyAgICB5eWxsb2MtPmZpcnN0X2xpbmUgPSB5eWxsb2MtPmxhc3RfbGluZSA9IHl5
bGluZW5vOworCiAjZGVmaW5lIFlZX0lOUFVUKGJ1ZiwgcmVzdWx0LCBtYXhfc2l6ZSkgXAogICAg
IHJlc3VsdCA9IHN0cmluZ19pbnB1dChidWYsIG1heF9zaXplLCB5eXNjYW5uZXIpOwogCkBAIC04
MjYsOCArODA0LDYgQEAgc3RhdGljIGludCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcgog
c3RhdGljIGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcik7CiAKICNkZWZpbmUg
SU5JVElBTCAwCi0jZGVmaW5lIENPTU1FTlQgMQotI2RlZmluZSBGSUVMRFMgMgogCiAjZGVmaW5l
IFlZX0VYVFJBX1RZUEUgVFBhcnNlQ29udGV4dCoKIApAQCAtODY1LDYgKzg0MSw4IEBAIHN0cnVj
dCB5eWd1dHNfdAogCiAgICAgWVlTVFlQRSAqIHl5bHZhbF9yOwogCisgICAgWVlMVFlQRSAqIHl5
bGxvY19yOworCiAgICAgfTsgLyogZW5kIHN0cnVjdCB5eWd1dHNfdCAqLwogCiBzdGF0aWMgaW50
IHl5X2luaXRfZ2xvYmFscyAoeXlzY2FuX3QgeXlzY2FubmVyICk7CkBAIC04NzMsNiArODUxLDgg
QEAgc3RhdGljIGludCB5eV9pbml0X2dsb2JhbHMgKHl5c2Nhbl90IHl5cwogICAgICAqIGZyb20g
Ymlzb24gb3V0cHV0IGluIHNlY3Rpb24gMS4qLwogICAgICMgICAgZGVmaW5lIHl5bHZhbCB5eWct
Pnl5bHZhbF9yCiAgICAgCisgICAgIyAgICBkZWZpbmUgeXlsbG9jIHl5Zy0+eXlsbG9jX3IKKyAg
ICAKIGludCB5eWxleF9pbml0ICh5eXNjYW5fdCogc2Nhbm5lcik7CiAKIGludCB5eWxleF9pbml0
X2V4dHJhIChZWV9FWFRSQV9UWVBFIHVzZXJfZGVmaW5lZCx5eXNjYW5fdCogc2Nhbm5lcik7CkBA
IC05MTAsNiArODkwLDEwIEBAIFlZU1RZUEUgKiB5eWdldF9sdmFsICh5eXNjYW5fdCB5eXNjYW5u
ZXIKIAogdm9pZCB5eXNldF9sdmFsIChZWVNUWVBFICogeXlsdmFsX3BhcmFtICx5eXNjYW5fdCB5
eXNjYW5uZXIgKTsKIAorICAgICAgIFlZTFRZUEUgKnl5Z2V0X2xsb2MgKHl5c2Nhbl90IHl5c2Nh
bm5lciApOworICAgIAorICAgICAgICB2b2lkIHl5c2V0X2xsb2MgKFlZTFRZUEUgKiB5eWxsb2Nf
cGFyYW0gLHl5c2Nhbl90IHl5c2Nhbm5lciApOworICAgIAogLyogTWFjcm9zIGFmdGVyIHRoaXMg
cG9pbnQgY2FuIGFsbCBiZSBvdmVycmlkZGVuIGJ5IHVzZXIgZGVmaW5pdGlvbnMgaW4KICAqIHNl
Y3Rpb24gMS4KICAqLwpAQCAtOTQwLDEyICs5MjQsNiBAQCBzdGF0aWMgaW50IGlucHV0ICh5eXNj
YW5fdCB5eXNjYW5uZXIgKTsKIAogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCB5eV9wdXNoX3N0
YXRlIChpbnQgbmV3X3N0YXRlICx5eXNjYW5fdCB5eXNjYW5uZXIpOwotICAgIAotICAgIHN0YXRp
YyB2b2lkIHl5X3BvcF9zdGF0ZSAoeXlzY2FuX3QgeXlzY2FubmVyICk7Ci0gICAgCi0gICAgc3Rh
dGljIGludCB5eV90b3Bfc3RhdGUgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwotICAgIAogLyogQW1v
dW50IG9mIHN0dWZmIHRvIHNsdXJwIHVwIHdpdGggZWFjaCByZWFkLiAqLwogI2lmbmRlZiBZWV9S
RUFEX0JVRl9TSVpFCiAjZGVmaW5lIFlZX1JFQURfQlVGX1NJWkUgODE5MgpAQCAtMTAyMiwxMCAr
MTAwMCwxMCBAQCBzdGF0aWMgaW50IGlucHV0ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKICNkZWZp
bmUgWVlfREVDTF9JU19PVVJTIDEKIAogZXh0ZXJuIGludCB5eWxleCBcCi0gICAgICAgICAgICAg
ICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyKTsKKyAgICAgICAg
ICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFtLFlZTFRZUEUgKiB5eWxsb2NfcGFyYW0gLHl5
c2Nhbl90IHl5c2Nhbm5lcik7CiAKICNkZWZpbmUgWVlfREVDTCBpbnQgeXlsZXggXAotICAgICAg
ICAgICAgICAgKFlZU1RZUEUgKiB5eWx2YWxfcGFyYW0gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCisg
ICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSwgWVlMVFlQRSAqIHl5bGxvY19w
YXJhbSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKICNlbmRpZiAvKiAhWVlfREVDTCAqLwogCiAvKiBD
b2RlIGV4ZWN1dGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBydWxlLCBhZnRlciB5eXRleHQg
YW5kIHl5bGVuZwpAQCAtMTA1MiwxMiArMTAzMCwxMCBAQCBZWV9ERUNMCiAJcmVnaXN0ZXIgaW50
IHl5X2FjdDsKICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5
eXNjYW5uZXI7CiAKLSAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0ID0geXlleHRyYTsKLQotICAg
IC8qIFNpbmdsZS1saW5lIGNvbW1lbnRzICovCi0KICAgICB5eWx2YWwgPSB5eWx2YWxfcGFyYW07
CiAKKyAgICB5eWxsb2MgPSB5eWxsb2NfcGFyYW07CisKIAlpZiAoICF5eWctPnl5X2luaXQgKQog
CQl7CiAJCXl5Zy0+eXlfaW5pdCA9IDE7CkBAIC0xMTA5LDEzICsxMDg1LDEzIEBAIHl5X21hdGNo
OgogCQkJd2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9
IHl5X2N1cnJlbnRfc3RhdGUgKQogCQkJCXsKIAkJCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkg
eXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0
NTkgKQorCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NDMgKQogCQkJCQl5eV9jID0geXlf
bWV0YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJCQl9CiAJCQl5eV9jdXJyZW50X3N0YXRlID0g
eXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsK
IAkJCSsreXlfY3A7CiAJCQl9Ci0JCXdoaWxlICggeXlfY3VycmVudF9zdGF0ZSAhPSA0NTggKTsK
KwkJd2hpbGUgKCB5eV9jdXJyZW50X3N0YXRlICE9IDQ0MiApOwogCQl5eV9jcCA9IHl5Zy0+eXlf
bGFzdF9hY2NlcHRpbmdfY3BvczsKIAkJeXlfY3VycmVudF9zdGF0ZSA9IHl5Zy0+eXlfbGFzdF9h
Y2NlcHRpbmdfc3RhdGU7CiAKQEAgLTExNDksMTk4ICsxMTI1LDE5OSBAQCBkb19hY3Rpb246CS8q
IFRoaXMgbGFiZWwgaXMgdXNlZCBvbmx5IHRvCiAKIGNhc2UgMToKIFlZX1JVTEVfU0VUVVAKLTsK
K3sgcmV0dXJuIElOVkFSSUFOVDsgfQogCVlZX0JSRUFLCi0vKiBNdWx0aS1saW5lIGNvbW1lbnRz
ICovCiBjYXNlIDI6CiBZWV9SVUxFX1NFVFVQCi17IHl5X3B1c2hfc3RhdGUoQ09NTUVOVCwgeXlz
Y2FubmVyKTsgfQoreyByZXR1cm4gSElHSF9QUkVDSVNJT047IH0KIAlZWV9CUkVBSwogY2FzZSAz
OgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4gTUVESVVNX1BSRUNJU0lPTjsgfQorCVlZX0JSRUFL
CiBjYXNlIDQ6Ci0vKiBydWxlIDQgY2FuIG1hdGNoIGVvbCAqLwogWVlfUlVMRV9TRVRVUAotOwor
eyByZXR1cm4gTE9XX1BSRUNJU0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDU6CiBZWV9SVUxFX1NF
VFVQCi17IHl5X3BvcF9zdGF0ZSh5eXNjYW5uZXIpOyB9Cit7IHJldHVybiBQUkVDSVNJT047IH0K
IAlZWV9CUkVBSwogY2FzZSA2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSU5WQVJJQU5UKTsg
fQoreyByZXR1cm4gQVRUUklCVVRFOyB9CiAJWVlfQlJFQUsKIGNhc2UgNzoKIFlZX1JVTEVfU0VU
VVAKLXsgcmV0dXJuKEhJR0hfUFJFQ0lTSU9OKTsgfQoreyByZXR1cm4gQ09OU1RfUVVBTDsgfQog
CVlZX0JSRUFLCiBjYXNlIDg6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihNRURJVU1fUFJFQ0lT
SU9OKTsgfQoreyByZXR1cm4gVU5JRk9STTsgfQogCVlZX0JSRUFLCiBjYXNlIDk6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybihMT1dfUFJFQ0lTSU9OKTsgfQoreyByZXR1cm4gVkFSWUlORzsgfQog
CVlZX0JSRUFLCiBjYXNlIDEwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUFJFQ0lTSU9OKTsg
fQoreyByZXR1cm4gQlJFQUs7IH0KIAlZWV9CUkVBSwogY2FzZSAxMToKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuKEFUVFJJQlVURSk7IH0KK3sgcmV0dXJuIENPTlRJTlVFOyB9CiAJWVlfQlJFQUsK
IGNhc2UgMTI6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihDT05TVF9RVUFMKTsgfQoreyByZXR1
cm4gRE87IH0KIAlZWV9CUkVBSwogY2FzZSAxMzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFVO
SUZPUk0pOyB9Cit7IHJldHVybiBGT1I7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDoKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKFZBUllJTkcpOyB9Cit7IHJldHVybiBXSElMRTsgfQogCVlZX0JSRUFL
CiBjYXNlIDE1OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQlJFQUspOyB9Cit7IHJldHVybiBJ
RjsgfQogCVlZX0JSRUFLCiBjYXNlIDE2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQ09OVElO
VUUpOyB9Cit7IHJldHVybiBFTFNFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTc6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybihETyk7IH0KK3sgcmV0dXJuIElOX1FVQUw7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxODoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKEZPUik7IH0KK3sgcmV0dXJuIE9VVF9RVUFM
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihXSElMRSk7
IH0KK3sgcmV0dXJuIElOT1VUX1FVQUw7IH0KIAlZWV9CUkVBSwogY2FzZSAyMDoKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKElGKTsgfQoreyByZXR1cm4gRkxPQVRfVFlQRTsgfQogCVlZX0JSRUFL
CiBjYXNlIDIxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oRUxTRSk7IH0KK3sgcmV0dXJuIElO
VF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjI6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihJ
Tl9RVUFMKTsgfQoreyByZXR1cm4gVk9JRF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjM6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybihPVVRfUVVBTCk7IH0KK3sgcmV0dXJuIEJPT0xfVFlQRTsg
fQogCVlZX0JSRUFLCiBjYXNlIDI0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSU5PVVRfUVVB
TCk7IH0KK3sgeXlsdmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4gQk9PTENPTlNUQU5UOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMjU6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlw
ZSA9IHRydWU7IHJldHVybihGTE9BVF9UWVBFKTsgfQoreyB5eWx2YWwtPmxleC5iID0gZmFsc2U7
IHJldHVybiBCT09MQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAyNjoKIFlZX1JVTEVfU0VU
VVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKElOVF9UWVBFKTsgfQor
eyByZXR1cm4gRElTQ0FSRDsgfQogCVlZX0JSRUFLCiBjYXNlIDI3OgogWVlfUlVMRV9TRVRVUAot
eyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oVk9JRF9UWVBFKTsgfQoreyBy
ZXR1cm4gUkVUVVJOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjg6CiBZWV9SVUxFX1NFVFVQCi17IGNv
bnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihCT09MX1RZUEUpOyB9Cit7IHJldHVy
biBNQVRSSVgyOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjk6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZh
bC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuKEJPT0xDT05TVEFOVCk7IH0KK3sgcmV0dXJuIE1BVFJJ
WDM7IH0KIAlZWV9CUkVBSwogY2FzZSAzMDoKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXgu
YiA9IGZhbHNlOyByZXR1cm4oQk9PTENPTlNUQU5UKTsgfQoreyByZXR1cm4gTUFUUklYNDsgfQog
CVlZX0JSRUFLCiBjYXNlIDMxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oRElTQ0FSRCk7IH0K
K3sgcmV0dXJuIFZFQzI7IH0KIAlZWV9CUkVBSwogY2FzZSAzMjoKIFlZX1JVTEVfU0VUVVAKLXsg
cmV0dXJuKFJFVFVSTik7IH0KK3sgcmV0dXJuIFZFQzM7IH0KIAlZWV9CUkVBSwogY2FzZSAzMzoK
IFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1B
VFJJWDIpOyB9Cit7IHJldHVybiBWRUM0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzQ6CiBZWV9SVUxF
X1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVgzKTsg
fQoreyByZXR1cm4gSVZFQzI7IH0KIAlZWV9CUkVBSwogY2FzZSAzNToKIFlZX1JVTEVfU0VUVVAK
LXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJWDQpOyB9Cit7IHJl
dHVybiBJVkVDMzsgfQogCVlZX0JSRUFLCiBjYXNlIDM2OgogWVlfUlVMRV9TRVRVUAoteyBjb250
ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzIpOyB9Cit7IHJldHVybiBJVkVD
NDsgfQogCVlZX0JSRUFLCiBjYXNlIDM3OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzMpOyB9Cit7IHJldHVybiBCVkVDMjsgfQogCVlZ
X0JSRUFLCiBjYXNlIDM4OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4gKFZFQzQpOyB9Cit7IHJldHVybiBCVkVDMzsgfQogCVlZX0JSRUFLCiBj
YXNlIDM5OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyBy
ZXR1cm4gKElWRUMyKTsgfQoreyByZXR1cm4gQlZFQzQ7IH0KIAlZWV9CUkVBSwogY2FzZSA0MDoK
IFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJ
VkVDMyk7IH0KK3sgcmV0dXJuIFNBTVBMRVIyRDsgfQogCVlZX0JSRUFLCiBjYXNlIDQxOgogWVlf
UlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKElWRUM0
KTsgfQoreyByZXR1cm4gU0FNUExFUkNVQkU7IH0KIAlZWV9CUkVBSwogY2FzZSA0MjoKIFlZX1JV
TEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDMik7
IH0KK3sgcmV0dXJuIFNBTVBMRVJfRVhURVJOQUxfT0VTOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDM6
CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAo
QlZFQzMpOyB9Cit7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDQ6
CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAo
QlZFQzQpOyB9Cit7IHJldHVybiBTVFJVQ1Q7IH0KIAlZWV9CUkVBSwogY2FzZSA0NToKIFlZX1JV
TEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVIy
RDsgfQoreyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNh
c2UgNDY6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJl
dHVybiBTQU1QTEVSQ1VCRTsgfQoreyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9
CiAJWVlfQlJFQUsKIGNhc2UgNDc6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVy
VHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSX0VYVEVSTkFMX09FUzsgfQoreyByZXR1cm4gcmVz
ZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDg6CiBZWV9SVUxFX1NF
VFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSMkRSRUNU
OyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2Fz
ZSA0OToKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuKFNUUlVDVCk7IH0KK3sgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQogCVlZ
X0JSRUFLCiBjYXNlIDUwOgogWVlfUlVMRV9TRVRVUApAQCAtMTUxNiwyNjYgKzE0OTMsMjI4IEBA
IFlZX1JVTEVfU0VUVVAKIAlZWV9CUkVBSwogY2FzZSA5MzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0
dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreworICAgeXlsdmFsLT5sZXguc3RyaW5n
ID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsgCisgICByZXR1cm4gY2hlY2tfdHlwZSh5eXNjYW5u
ZXIpOworfQogCVlZX0JSRUFLCiBjYXNlIDk0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVz
ZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxp
bnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CiAJWVlfQlJF
QUsKIGNhc2UgOTU6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nh
bm5lcik7IH0KK3sgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4
dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5NjoKIFlZ
X1JVTEVfU0VUVVAKLXsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreyB5eWx2
YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVy
biBJTlRDT05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDk3OgogWVlfUlVMRV9TRVRVUAoteyBy
ZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7IHl5bHZhbC0+bGV4LmYgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9
CiAJWVlfQlJFQUsKIGNhc2UgOTg6CiBZWV9SVUxFX1NFVFVQCi17Ci0gICB5eWx2YWwtPmxleC5z
dHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAKLSAgIHJldHVybiBjaGVja190eXBlKHl5
c2Nhbm5lcik7Ci19Cit7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9k
b3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgOTk6
CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRv
bCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQoreyB5eWx2YWwtPmxleC5m
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4gRkxPQVRDT05T
VEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDEwMDoKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5s
ZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5U
Q09OU1RBTlQpOyB9Cit7IHJldHVybiBBRERfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAx
OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgIkludmFsaWQgT2N0
YWwgbnVtYmVyLiIsIHl5dGV4dCk7IGNvbnRleHQtPnJlY292ZXIoKTsgcmV0dXJuIDA7fQoreyBy
ZXR1cm4gU1VCX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEwMjoKIFlZX1JVTEVfU0VUVVAK
LXsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkp
OyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Cit7IHJldHVybiBNVUxfQVNTSUdOOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMTAzOgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KK3sg
cmV0dXJuIERJVl9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDQ6CiBZWV9SVUxFX1NFVFVQ
Ci17IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7
IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQoreyByZXR1cm4gTU9EX0FTU0lHTjsgfQogCVlZX0JS
RUFLCiBjYXNlIDEwNToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19j
YXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Cit7
IHJldHVybiBMRUZUX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEwNjoKIFlZX1JVTEVfU0VU
VVAKLXsgIHJldHVybihBRERfQVNTSUdOKTsgfQoreyByZXR1cm4gUklHSFRfQVNTSUdOOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMTA3OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFNVQl9BU1NJR04p
OyB9Cit7IHJldHVybiBBTkRfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA4OgogWVlfUlVM
RV9TRVRVUAoteyAgcmV0dXJuKE1VTF9BU1NJR04pOyB9Cit7IHJldHVybiBYT1JfQVNTSUdOOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTA5OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKERJVl9BU1NJ
R04pOyB9Cit7IHJldHVybiBPUl9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMTA6CiBZWV9S
VUxFX1NFVFVQCi17ICByZXR1cm4oTU9EX0FTU0lHTik7IH0KK3sgcmV0dXJuIElOQ19PUDsgfQog
CVlZX0JSRUFLCiBjYXNlIDExMToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihMRUZUX0FTU0lH
Tik7IH0KK3sgcmV0dXJuIERFQ19PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExMjoKIFlZX1JVTEVf
U0VUVVAKLXsgIHJldHVybihSSUdIVF9BU1NJR04pOyB9Cit7IHJldHVybiBBTkRfT1A7IH0KIAlZ
WV9CUkVBSwogY2FzZSAxMTM6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oQU5EX0FTU0lHTik7
IH0KK3sgcmV0dXJuIE9SX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTE0OgogWVlfUlVMRV9TRVRV
UAoteyAgcmV0dXJuKFhPUl9BU1NJR04pOyB9Cit7IHJldHVybiBYT1JfT1A7IH0KIAlZWV9CUkVB
SwogY2FzZSAxMTU6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oT1JfQVNTSUdOKTsgfQoreyBy
ZXR1cm4gTEVfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTY6CiBZWV9SVUxFX1NFVFVQCi17ICBy
ZXR1cm4oSU5DX09QKTsgfQoreyByZXR1cm4gR0VfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTc6
CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oREVDX09QKTsgfQoreyByZXR1cm4gRVFfT1A7IH0K
IAlZWV9CUkVBSwogY2FzZSAxMTg6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oQU5EX09QKTsg
fQoreyByZXR1cm4gTkVfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTk6CiBZWV9SVUxFX1NFVFVQ
Ci17ICByZXR1cm4oT1JfT1ApOyB9Cit7IHJldHVybiBMRUZUX09QOyB9CiAJWVlfQlJFQUsKIGNh
c2UgMTIwOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFhPUl9PUCk7IH0KK3sgcmV0dXJuIFJJ
R0hUX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIxOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJu
KExFX09QKTsgfQoreyByZXR1cm4gU0VNSUNPTE9OOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIyOgog
WVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEdFX09QKTsgfQoreyByZXR1cm4gTEVGVF9CUkFDRTsg
fQogCVlZX0JSRUFLCiBjYXNlIDEyMzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihFUV9PUCk7
IH0KK3sgcmV0dXJuIFJJR0hUX0JSQUNFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI0OgogWVlfUlVM
RV9TRVRVUAoteyAgcmV0dXJuKE5FX09QKTsgfQoreyByZXR1cm4gQ09NTUE7IH0KIAlZWV9CUkVB
SwogY2FzZSAxMjU6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTEVGVF9PUCk7IH0KK3sgcmV0
dXJuIENPTE9OOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI2OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0
dXJuKFJJR0hUX09QKTsgfQoreyByZXR1cm4gRVFVQUw7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjc6
CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4o
U0VNSUNPTE9OKTsgfQoreyByZXR1cm4gTEVGVF9QQVJFTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEy
ODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVy
bihMRUZUX0JSQUNFKTsgfQoreyByZXR1cm4gUklHSFRfUEFSRU47IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxMjk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihSSUdIVF9CUkFDRSk7IH0KK3sgcmV0dXJu
IExFRlRfQlJBQ0tFVDsgfQogCVlZX0JSRUFLCiBjYXNlIDEzMDoKIFlZX1JVTEVfU0VUVVAKLXsg
aWYgKGNvbnRleHQtPmluVHlwZVBhcmVuKSBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsg
cmV0dXJuKENPTU1BKTsgfQoreyByZXR1cm4gUklHSFRfQlJBQ0tFVDsgfQogCVlZX0JSRUFLCiBj
YXNlIDEzMToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKENPTE9OKTsgfQoreyByZXR1cm4gRE9U
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMyOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJuKEVRVUFMKTsgfQoreyByZXR1cm4gQkFORzsgfQogCVlZ
X0JSRUFLCiBjYXNlIDEzMzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gZmFsc2U7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gdHJ1ZTsgcmV0dXJuKExFRlRfUEFSRU4p
OyB9Cit7IHJldHVybiBEQVNIOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM0OgogWVlfUlVMRV9TRVRV
UAoteyBjb250ZXh0LT5pblR5cGVQYXJlbiA9IGZhbHNlOyByZXR1cm4oUklHSFRfUEFSRU4pOyB9
Cit7IHJldHVybiBUSUxERTsgfQogCVlZX0JSRUFLCiBjYXNlIDEzNToKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuKExFRlRfQlJBQ0tFVCk7IH0KK3sgcmV0dXJuIFBMVVM7IH0KIAlZWV9CUkVBSwog
Y2FzZSAxMzY6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihSSUdIVF9CUkFDS0VUKTsgfQoreyBy
ZXR1cm4gU1RBUjsgfQogCVlZX0JSRUFLCiBjYXNlIDEzNzoKIFlZX1JVTEVfU0VUVVAKLXsgQkVH
SU4oRklFTERTKTsgIHJldHVybihET1QpOyB9Cit7IHJldHVybiBTTEFTSDsgfQogCVlZX0JSRUFL
CiBjYXNlIDEzODoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKEJBTkcpOyB9Cit7IHJldHVybiBQ
RVJDRU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM5OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4o
REFTSCk7IH0KK3sgcmV0dXJuIExFRlRfQU5HTEU7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDA6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybihUSUxERSk7IH0KK3sgcmV0dXJuIFJJR0hUX0FOR0xFOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTQxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUExVUyk7IH0K
K3sgcmV0dXJuIFZFUlRJQ0FMX0JBUjsgfQogCVlZX0JSRUFLCiBjYXNlIDE0MjoKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKFNUQVIpOyB9Cit7IHJldHVybiBDQVJFVDsgfQogCVlZX0JSRUFLCiBj
YXNlIDE0MzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFNMQVNIKTsgfQoreyByZXR1cm4gQU1Q
RVJTQU5EOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQ0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4o
UEVSQ0VOVCk7IH0KK3sgcmV0dXJuIFFVRVNUSU9OOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQ1Ogor
LyogcnVsZSAxNDUgY2FuIG1hdGNoIGVvbCAqLwogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oTEVG
VF9BTkdMRSk7IH0KLQlZWV9CUkVBSwotY2FzZSAxNDY6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVy
bihSSUdIVF9BTkdMRSk7IH0KLQlZWV9CUkVBSwotY2FzZSAxNDc6Ci1ZWV9SVUxFX1NFVFVQCi17
IHJldHVybihWRVJUSUNBTF9CQVIpOyB9Ci0JWVlfQlJFQUsKLWNhc2UgMTQ4OgotWVlfUlVMRV9T
RVRVUAoteyByZXR1cm4oQ0FSRVQpOyB9Ci0JWVlfQlJFQUsKLWNhc2UgMTQ5OgotWVlfUlVMRV9T
RVRVUAoteyByZXR1cm4oQU1QRVJTQU5EKTsgfQotCVlZX0JSRUFLCi1jYXNlIDE1MDoKLVlZX1JV
TEVfU0VUVVAKLXsgcmV0dXJuKFFVRVNUSU9OKTsgfQotCVlZX0JSRUFLCi1jYXNlIDE1MToKLVlZ
X1JVTEVfU0VUVVAKLXsgCi0gICAgQkVHSU4oSU5JVElBTCk7Ci0gICAgeXlsdmFsLT5sZXguc3Ry
aW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsgCi0gICAgcmV0dXJuIEZJRUxEX1NFTEVDVElP
TjsKLX0KLQlZWV9CUkVBSwotY2FzZSAxNTI6Ci1ZWV9SVUxFX1NFVFVQCi17fQotCVlZX0JSRUFL
Ci1jYXNlIDE1MzoKLS8qIHJ1bGUgMTUzIGNhbiBtYXRjaCBlb2wgKi8KLVlZX1JVTEVfU0VUVVAK
LXsgIH0KK3sgfQogCVlZX0JSRUFLCiBjYXNlIFlZX1NUQVRFX0VPRihJTklUSUFMKToKLWNhc2Ug
WVlfU1RBVEVfRU9GKENPTU1FTlQpOgotY2FzZSBZWV9TVEFURV9FT0YoRklFTERTKToKLXsgY29u
dGV4dC0+QWZ0ZXJFT0YgPSB0cnVlOyB5eXRlcm1pbmF0ZSgpOyB9Cit7IHl5dGVybWluYXRlKCk7
IH0KIAlZWV9CUkVBSwotY2FzZSAxNTQ6CitjYXNlIDE0NjoKIFlZX1JVTEVfU0VUVVAKLXsgY29u
dGV4dC0+d2FybmluZyh5eWxpbmVubywgIlVua25vd24gY2hhciIsIHl5dGV4dCwgIiIpOyByZXR1
cm4gMDsgfQoreyBhc3NlcnQoZmFsc2UpOyByZXR1cm4gMDsgfQogCVlZX0JSRUFLCi1jYXNlIDE1
NToKK2Nhc2UgMTQ3OgogWVlfUlVMRV9TRVRVUAogRUNITzsKIAlZWV9CUkVBSwpAQCAtMjA3MSw3
ICsyMDEwLDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IAogCQl3
aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3Vy
cmVudF9zdGF0ZSApCiAJCQl7CiAJCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5
X2N1cnJlbnRfc3RhdGVdOwotCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ1OSApCisJCQlp
ZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gNDQzICkKIAkJCQl5eV9jID0geXlfbWV0YVsodW5zaWdu
ZWQgaW50KSB5eV9jXTsKIAkJCX0KIAkJeXlfY3VycmVudF9zdGF0ZSA9IHl5X254dFt5eV9iYXNl
W3l5X2N1cnJlbnRfc3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlfY107CkBAIC0yMTAwLDExICsy
MDM5LDExIEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCAKIAl3aGls
ZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3VycmVu
dF9zdGF0ZSApCiAJCXsKIAkJeXlfY3VycmVudF9zdGF0ZSA9IChpbnQpIHl5X2RlZlt5eV9jdXJy
ZW50X3N0YXRlXTsKLQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ1OSApCisJCWlmICggeXlf
Y3VycmVudF9zdGF0ZSA+PSA0NDMgKQogCQkJeXlfYyA9IHl5X21ldGFbKHVuc2lnbmVkIGludCkg
eXlfY107CiAJCX0KIAl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVu
dF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsKLQl5eV9pc19qYW0gPSAoeXlfY3VycmVu
dF9zdGF0ZSA9PSA0NTgpOworCXl5X2lzX2phbSA9ICh5eV9jdXJyZW50X3N0YXRlID09IDQ0Mik7
CiAKIAlyZXR1cm4geXlfaXNfamFtID8gMCA6IHl5X2N1cnJlbnRfc3RhdGU7CiB9CkBAIC0yNTQ4
LDQ2ICsyNDg3LDYgQEAgWVlfQlVGRkVSX1NUQVRFIHl5X3NjYW5fYnl0ZXMgICh5eWNvbnN0IAog
CXJldHVybiBiOwogfQogCi0gICAgc3RhdGljIHZvaWQgeXlfcHVzaF9zdGF0ZSAoaW50ICBuZXdf
c3RhdGUgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCi17Ci0gICAgc3RydWN0IHl5Z3V0c190ICogeXln
ID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOwotCWlmICggeXlnLT55eV9zdGFydF9zdGFj
a19wdHIgPj0geXlnLT55eV9zdGFydF9zdGFja19kZXB0aCApCi0JCXsKLQkJeXlfc2l6ZV90IG5l
d19zaXplOwotCi0JCXl5Zy0+eXlfc3RhcnRfc3RhY2tfZGVwdGggKz0gWVlfU1RBUlRfU1RBQ0tf
SU5DUjsKLQkJbmV3X3NpemUgPSB5eWctPnl5X3N0YXJ0X3N0YWNrX2RlcHRoICogc2l6ZW9mKCBp
bnQgKTsKLQotCQlpZiAoICEgeXlnLT55eV9zdGFydF9zdGFjayApCi0JCQl5eWctPnl5X3N0YXJ0
X3N0YWNrID0gKGludCAqKSB5eWFsbG9jKG5ld19zaXplICx5eXNjYW5uZXIgKTsKLQotCQllbHNl
Ci0JCQl5eWctPnl5X3N0YXJ0X3N0YWNrID0gKGludCAqKSB5eXJlYWxsb2MoKHZvaWQgKikgeXln
LT55eV9zdGFydF9zdGFjayxuZXdfc2l6ZSAseXlzY2FubmVyICk7Ci0KLQkJaWYgKCAhIHl5Zy0+
eXlfc3RhcnRfc3RhY2sgKQotCQkJWVlfRkFUQUxfRVJST1IoICJvdXQgb2YgbWVtb3J5IGV4cGFu
ZGluZyBzdGFydC1jb25kaXRpb24gc3RhY2siICk7Ci0JCX0KLQotCXl5Zy0+eXlfc3RhcnRfc3Rh
Y2tbeXlnLT55eV9zdGFydF9zdGFja19wdHIrK10gPSBZWV9TVEFSVDsKLQotCUJFR0lOKG5ld19z
dGF0ZSk7Ci19Ci0KLSAgICBzdGF0aWMgdm9pZCB5eV9wb3Bfc3RhdGUgICh5eXNjYW5fdCB5eXNj
YW5uZXIpCi17Ci0gICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCop
eXlzY2FubmVyOwotCWlmICggLS15eWctPnl5X3N0YXJ0X3N0YWNrX3B0ciA8IDAgKQotCQlZWV9G
QVRBTF9FUlJPUiggInN0YXJ0LWNvbmRpdGlvbiBzdGFjayB1bmRlcmZsb3ciICk7Ci0KLQlCRUdJ
Tih5eWctPnl5X3N0YXJ0X3N0YWNrW3l5Zy0+eXlfc3RhcnRfc3RhY2tfcHRyXSk7Ci19Ci0KLSAg
ICBzdGF0aWMgaW50IHl5X3RvcF9zdGF0ZSAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBz
dHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0JcmV0
dXJuIHl5Zy0+eXlfc3RhcnRfc3RhY2tbeXlnLT55eV9zdGFydF9zdGFja19wdHIgLSAxXTsKLX0K
LQogI2lmbmRlZiBZWV9FWElUX0ZBSUxVUkUKICNkZWZpbmUgWVlfRVhJVF9GQUlMVVJFIDIKICNl
bmRpZgpAQCAtMjc3Myw2ICsyNjcyLDE4IEBAIHZvaWQgeXlzZXRfbHZhbCAoWVlTVFlQRSAqICB5
eWx2YWxfcGFyYW0KICAgICB5eWx2YWwgPSB5eWx2YWxfcGFyYW07CiB9CiAKK1lZTFRZUEUgKnl5
Z2V0X2xsb2MgICh5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0IHl5Z3V0c190ICog
eXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAgIHJldHVybiB5eWxsb2M7Cit9
CisgICAgCit2b2lkIHl5c2V0X2xsb2MgKFlZTFRZUEUgKiAgeXlsbG9jX3BhcmFtICwgeXlzY2Fu
X3QgeXlzY2FubmVyKQoreworICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXln
dXRzX3QqKXl5c2Nhbm5lcjsKKyAgICB5eWxsb2MgPSB5eWxsb2NfcGFyYW07Cit9CisgICAgCiAv
KiBVc2VyLXZpc2libGUgQVBJICovCiAKIC8qIHl5bGV4X2luaXQgaXMgc3BlY2lhbCBiZWNhdXNl
IGl0IGNyZWF0ZXMgdGhlIHNjYW5uZXIgaXRzZWxmLCBzbyBpdCBpcwpAQCAtMjk1NCw3ICsyODY1
LDggQEAgeXlfc2l6ZV90IHN0cmluZ19pbnB1dChjaGFyKiBidWYsIHl5X3NpegogICAgIHl5X3Np
emVfdCBsZW4gPSB0b2tlbi50eXBlID09IHBwOjpUb2tlbjo6TEFTVCA/IDAgOiB0b2tlbi50ZXh0
LnNpemUoKTsKICAgICBpZiAobGVuIDwgbWF4X3NpemUpCiAgICAgICAgIG1lbWNweShidWYsIHRv
a2VuLnRleHQuY19zdHIoKSwgbGVuKTsKLSAgICB5eXNldF9saW5lbm8oRW5jb2RlU291cmNlTG9j
KHRva2VuLmxvY2F0aW9uLmZpbGUsIHRva2VuLmxvY2F0aW9uLmxpbmUpLHl5c2Nhbm5lcik7Cisg
ICAgeXlzZXRfY29sdW1uKHRva2VuLmxvY2F0aW9uLmZpbGUseXlzY2FubmVyKTsKKyAgICB5eXNl
dF9saW5lbm8odG9rZW4ubG9jYXRpb24ubGluZSx5eXNjYW5uZXIpOwogCiAgICAgaWYgKGxlbiA+
PSBtYXhfc2l6ZSkKICAgICAgICAgWVlfRkFUQUxfRVJST1IoIklucHV0IGJ1ZmZlciBvdmVyZmxv
dyIpOwpAQCAtMjk2OCwxMiArMjg4MCwxMCBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNj
YW5uZXIpIHsKICAgICAKICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVSOwogICAgIFRTeW1ib2wq
IHN5bWJvbCA9IHl5ZXh0cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0KTsKLSAgICBpZiAoeXll
eHRyYS0+bGV4QWZ0ZXJUeXBlID09IGZhbHNlICYmIHN5bWJvbCAmJiBzeW1ib2wtPmlzVmFyaWFi
bGUoKSkgeworICAgIGlmIChzeW1ib2wgJiYgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKICAgICAg
ICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KHN5bWJvbCk7
Ci0gICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKSB7Ci0gICAgICAgICAgICB5eWV4
dHJhLT5sZXhBZnRlclR5cGUgPSB0cnVlOworICAgICAgICBpZiAodmFyaWFibGUtPmlzVXNlclR5
cGUoKSkKICAgICAgICAgICAgIHRva2VuID0gVFlQRV9OQU1FOwotICAgICAgICB9CiAgICAgfQog
ICAgIHl5bHZhbC0+bGV4LnN5bWJvbCA9IHN5bWJvbDsKICAgICByZXR1cm4gdG9rZW47CkBAIC0y
OTgyLDIyICsyODkyLDExIEBAIGludCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcikgewog
aW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgc3RydWN0IHl5Z3V0
c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgeXlzY2FubmVyOwogCi0gICAgeXlleHRyYS0+
ZXJyb3IoeXlsaW5lbm8sICJJbGxlZ2FsIHVzZSBvZiByZXNlcnZlZCB3b3JkIiwgeXl0ZXh0LCAi
Iik7CisgICAgeXlleHRyYS0+ZXJyb3IoKnl5bGxvYywgIklsbGVnYWwgdXNlIG9mIHJlc2VydmVk
IHdvcmQiLCB5eXRleHQsICIiKTsKICAgICB5eWV4dHJhLT5yZWNvdmVyKCk7CiAgICAgcmV0dXJu
IDA7CiB9CiAKLXZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFy
KiByZWFzb24pIHsKLSAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3Qq
KSBjb250ZXh0LT5zY2FubmVyOwotCi0gICAgaWYgKGNvbnRleHQtPkFmdGVyRU9GKSB7Ci0gICAg
ICAgIGNvbnRleHQtPmVycm9yKHl5bGluZW5vLCByZWFzb24sICJ1bmV4cGVjdGVkIEVPRiIpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnRleHQtPmVycm9yKHl5bGluZW5vLCByZWFzb24sIHl5
dGV4dCk7Ci0gICAgfQotICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLX0KLQogaW50IGdsc2xhbmdf
aW5pdGlhbGl6ZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlzY2FuX3Qgc2Nhbm5l
ciA9IE5VTEw7CiAgICAgaWYgKHl5bGV4X2luaXRfZXh0cmEoY29udGV4dCwmc2Nhbm5lcikpCkBA
IC0zMDIwLDggKzI5MTksOCBAQCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFyc2VDb250ZXh0KiBj
b250CiBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3Ry
aW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAgVFBhcnNlQ29udGV4
dCogY29udGV4dCkgewogICAgIHl5cmVzdGFydChOVUxMLGNvbnRleHQtPnNjYW5uZXIpOwotICAg
IHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VMb2MoMCwgMSksY29udGV4dC0+c2Nhbm5lcik7Ci0g
ICAgY29udGV4dC0+QWZ0ZXJFT0YgPSBmYWxzZTsKKyAgICB5eXNldF9jb2x1bW4oMCxjb250ZXh0
LT5zY2FubmVyKTsKKyAgICB5eXNldF9saW5lbm8oMSxjb250ZXh0LT5zY2FubmVyKTsKIAogICAg
IC8vIEluaXRpYWxpemUgcHJlcHJvY2Vzc29yLgogICAgIGlmICghY29udGV4dC0+cHJlcHJvY2Vz
c29yLmluaXQoY291bnQsIHN0cmluZywgbGVuZ3RoKSkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcAkocmV2aXNpb24g
MTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdf
dGFiLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyNCArMSwyMSBAQAotLyogQSBCaXNvbiBwYXJz
ZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuMy4gICovCisvKiBBIEJpc29uIHBhcnNlciwgbWFkZSBi
eSBHTlUgQmlzb24gMi43LiAgKi8KIAotLyogU2tlbGV0b24gaW1wbGVtZW50YXRpb24gZm9yIEJp
c29uJ3MgWWFjYy1saWtlIHBhcnNlcnMgaW4gQwotCi0gICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5
ODksIDE5OTAsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKLSAgIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLyogQmlzb24g
aW1wbGVtZW50YXRpb24gZm9yIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKKyAgIAorICAgICAgQ29w
eXJpZ2h0IChDKSAxOTg0LCAxOTg5LTE5OTAsIDIwMDAtMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4KKyAgIAorICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBv
cHRpb24pCi0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgICAKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0K
KyAgIAogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuICAq
LworICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n
bnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3Ug
bWF5IGNyZWF0ZSBhIGxhcmdlciB3b3JrIHRoYXQgY29udGFpbnMKICAgIHBhcnQgb3IgYWxsIG9m
IHRoZSBCaXNvbiBwYXJzZXIgc2tlbGV0b24gYW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCkBAIC0y
OSw3ICsyNiw3IEBACiAgICBzcGVjaWFsIGV4Y2VwdGlvbiwgd2hpY2ggd2lsbCBjYXVzZSB0aGUg
c2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcKICAgIEJpc29uIG91dHB1dCBmaWxlcyB0byBiZSBs
aWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIHdpdGhvdXQg
dGhpcyBzcGVjaWFsIGV4Y2VwdGlvbi4KLQorICAgCiAgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9u
IHdhcyBhZGRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGluCiAgICB2ZXJzaW9u
IDIuMiBvZiBCaXNvbi4gICovCiAKQEAgLTQ3LDcgKzQ0LDcgQEAKICNkZWZpbmUgWVlCSVNPTiAx
CiAKIC8qIEJpc29uIHZlcnNpb24uICAqLwotI2RlZmluZSBZWUJJU09OX1ZFUlNJT04gIjIuMyIK
KyNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjciCiAKIC8qIFNrZWxldG9uIG5hbWUuICAqLwog
I2RlZmluZSBZWVNLRUxFVE9OX05BTUUgInlhY2MuYyIKQEAgLTU1LDggKzUyLDgxIEBACiAvKiBQ
dXJlIHBhcnNlcnMuICAqLwogI2RlZmluZSBZWVBVUkUgMQogCi0vKiBVc2luZyBsb2NhdGlvbnMu
ICAqLwotI2RlZmluZSBZWUxTUF9ORUVERUQgMAorLyogUHVzaCBwYXJzZXJzLiAgKi8KKyNkZWZp
bmUgWVlQVVNIIDAKKworLyogUHVsbCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQVUxMIDEKKwor
CisKKworLyogQ29weSB0aGUgZmlyc3QgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCisK
KworLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCisKKy8vIElnbm9yZSBlcnJvcnMgaW4g
YXV0by1nZW5lcmF0ZWQgY29kZS4KKyNpZiBkZWZpbmVkKF9fR05VQ19fKQorI3ByYWdtYSBHQ0Mg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtdmFyaWFibGUiCisjcHJhZ21hIEdDQyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1Xc3dpdGNoLWVudW0iCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorI3ByYWdt
YSB3YXJuaW5nKGRpc2FibGU6IDQwNjUpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDE4OSkK
KyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTA1KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
IDQ3MDEpCisjZW5kaWYKKworI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCisjaW5j
bHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxh
bmcuaCIKKworI2RlZmluZSBZWUVOQUJMRV9OTFMgMAorCisjZGVmaW5lIFlZTEVYX1BBUkFNIGNv
bnRleHQtPnNjYW5uZXIKKworCisKKyMgaWZuZGVmIFlZX05VTEwKKyMgIGlmIGRlZmluZWQgX19j
cGx1c3BsdXMgJiYgMjAxMTAzTCA8PSBfX2NwbHVzcGx1cworIyAgIGRlZmluZSBZWV9OVUxMIG51
bGxwdHIKKyMgIGVsc2UKKyMgICBkZWZpbmUgWVlfTlVMTCAwCisjICBlbmRpZgorIyBlbmRpZgor
CisvKiBFbmFibGluZyB2ZXJib3NlIGVycm9yIG1lc3NhZ2VzLiAgKi8KKyNpZmRlZiBZWUVSUk9S
X1ZFUkJPU0UKKyMgdW5kZWYgWVlFUlJPUl9WRVJCT1NFCisjIGRlZmluZSBZWUVSUk9SX1ZFUkJP
U0UgMQorI2Vsc2UKKyMgZGVmaW5lIFlZRVJST1JfVkVSQk9TRSAwCisjZW5kaWYKKworLyogSW4g
YSBmdXR1cmUgcmVsZWFzZSBvZiBCaXNvbiwgdGhpcyBzZWN0aW9uIHdpbGwgYmUgcmVwbGFjZWQK
KyAgIGJ5ICNpbmNsdWRlICJnbHNsYW5nX3RhYi5oIi4gICovCisjaWZuZGVmIFlZX1lZX0dMU0xB
TkdfVEFCX0hfSU5DTFVERUQKKyMgZGVmaW5lIFlZX1lZX0dMU0xBTkdfVEFCX0hfSU5DTFVERUQK
Ky8qIEVuYWJsaW5nIHRyYWNlcy4gICovCisjaWZuZGVmIFlZREVCVUcKKyMgZGVmaW5lIFlZREVC
VUcgMAorI2VuZGlmCisjaWYgWVlERUJVRworZXh0ZXJuIGludCB5eWRlYnVnOworI2VuZGlmCisv
KiAiJWNvZGUgcmVxdWlyZXMiIGJsb2Nrcy4gICovCisKKworI2RlZmluZSBZWUxUWVBFIFRTb3Vy
Y2VMb2MKKyNkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisKIAogCiAKQEAgLTExMywyMDkg
KzE4Myw2MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0gMzAyLAogICAgICBJTlRDT05TVEFOVCA9
IDMwMywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAotICAgICBGSUVMRF9TRUxFQ1RJT04gPSAz
MDUsCi0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJR0hUX09QID0gMzA3LAotICAgICBJTkNf
T1AgPSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAgICAgTEVfT1AgPSAzMTAsCi0gICAgIEdF
X09QID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAgICAgTkVfT1AgPSAzMTMsCi0gICAgIEFO
RF9PUCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0gICAgIFhPUl9PUCA9IDMxNiwKLSAgICAg
TVVMX0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lHTiA9IDMxOCwKLSAgICAgQUREX0FTU0lH
TiA9IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwKLSAgICAgTEVGVF9BU1NJR04gPSAzMjEs
Ci0gICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAgQU5EX0FTU0lHTiA9IDMyMywKLSAgICAg
WE9SX0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdOID0gMzI1LAotICAgICBTVUJfQVNTSUdO
ID0gMzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAotICAgICBSSUdIVF9QQVJFTiA9IDMyOCwK
LSAgICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBSSUdIVF9CUkFDS0VUID0gMzMwLAotICAg
ICBMRUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9CUkFDRSA9IDMzMiwKLSAgICAgRE9UID0g
MzMzLAotICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09MT04gPSAzMzUsCi0gICAgIEVRVUFMID0g
MzM2LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAgIEJBTkcgPSAzMzgsCi0gICAgIERBU0gg
PSAzMzksCi0gICAgIFRJTERFID0gMzQwLAotICAgICBQTFVTID0gMzQxLAotICAgICBTVEFSID0g
MzQyLAotICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVSQ0VOVCA9IDM0NCwKLSAgICAgTEVGVF9B
TkdMRSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAzNDYsCi0gICAgIFZFUlRJQ0FMX0JBUiA9
IDM0NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFNUEVSU0FORCA9IDM0OSwKLSAgICAgUVVF
U1RJT04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwKKyAgICAgUklHSFRfT1AgPSAzMDYsCisg
ICAgIElOQ19PUCA9IDMwNywKKyAgICAgREVDX09QID0gMzA4LAorICAgICBMRV9PUCA9IDMwOSwK
KyAgICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0gMzExLAorICAgICBORV9PUCA9IDMxMiwK
KyAgICAgQU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9IDMxNCwKKyAgICAgWE9SX09QID0gMzE1
LAorICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBESVZfQVNTSUdOID0gMzE3LAorICAgICBB
RERfQVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdOID0gMzE5LAorICAgICBMRUZUX0FTU0lH
TiA9IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIxLAorICAgICBBTkRfQVNTSUdOID0gMzIy
LAorICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBPUl9BU1NJR04gPSAzMjQsCisgICAgIFNV
Ql9BU1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4gPSAzMjYsCisgICAgIFJJR0hUX1BBUkVO
ID0gMzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgsCisgICAgIFJJR0hUX0JSQUNLRVQgPSAz
MjksCisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAgIFJJR0hUX0JSQUNFID0gMzMxLAorICAg
ICBET1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMzLAorICAgICBDT0xPTiA9IDMzNCwKKyAgICAg
RVFVQUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMzNiwKKyAgICAgQkFORyA9IDMzNywKKyAg
ICAgREFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzksCisgICAgIFBMVVMgPSAzNDAsCisgICAg
IFNUQVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAorICAgICBQRVJDRU5UID0gMzQzLAorICAg
ICBMRUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9BTkdMRSA9IDM0NSwKKyAgICAgVkVSVElD
QUxfQkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywKKyAgICAgQU1QRVJTQU5EID0gMzQ4LAor
ICAgICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRpZgotLyogVG9rZW5zLiAgKi8KLSNkZWZp
bmUgSU5WQVJJQU5UIDI1OAotI2RlZmluZSBISUdIX1BSRUNJU0lPTiAyNTkKLSNkZWZpbmUgTUVE
SVVNX1BSRUNJU0lPTiAyNjAKLSNkZWZpbmUgTE9XX1BSRUNJU0lPTiAyNjEKLSNkZWZpbmUgUFJF
Q0lTSU9OIDI2MgotI2RlZmluZSBBVFRSSUJVVEUgMjYzCi0jZGVmaW5lIENPTlNUX1FVQUwgMjY0
Ci0jZGVmaW5lIEJPT0xfVFlQRSAyNjUKLSNkZWZpbmUgRkxPQVRfVFlQRSAyNjYKLSNkZWZpbmUg
SU5UX1RZUEUgMjY3Ci0jZGVmaW5lIEJSRUFLIDI2OAotI2RlZmluZSBDT05USU5VRSAyNjkKLSNk
ZWZpbmUgRE8gMjcwCi0jZGVmaW5lIEVMU0UgMjcxCi0jZGVmaW5lIEZPUiAyNzIKLSNkZWZpbmUg
SUYgMjczCi0jZGVmaW5lIERJU0NBUkQgMjc0Ci0jZGVmaW5lIFJFVFVSTiAyNzUKLSNkZWZpbmUg
QlZFQzIgMjc2Ci0jZGVmaW5lIEJWRUMzIDI3NwotI2RlZmluZSBCVkVDNCAyNzgKLSNkZWZpbmUg
SVZFQzIgMjc5Ci0jZGVmaW5lIElWRUMzIDI4MAotI2RlZmluZSBJVkVDNCAyODEKLSNkZWZpbmUg
VkVDMiAyODIKLSNkZWZpbmUgVkVDMyAyODMKLSNkZWZpbmUgVkVDNCAyODQKLSNkZWZpbmUgTUFU
UklYMiAyODUKLSNkZWZpbmUgTUFUUklYMyAyODYKLSNkZWZpbmUgTUFUUklYNCAyODcKLSNkZWZp
bmUgSU5fUVVBTCAyODgKLSNkZWZpbmUgT1VUX1FVQUwgMjg5Ci0jZGVmaW5lIElOT1VUX1FVQUwg
MjkwCi0jZGVmaW5lIFVOSUZPUk0gMjkxCi0jZGVmaW5lIFZBUllJTkcgMjkyCi0jZGVmaW5lIFNU
UlVDVCAyOTMKLSNkZWZpbmUgVk9JRF9UWVBFIDI5NAotI2RlZmluZSBXSElMRSAyOTUKLSNkZWZp
bmUgU0FNUExFUjJEIDI5NgotI2RlZmluZSBTQU1QTEVSQ1VCRSAyOTcKLSNkZWZpbmUgU0FNUExF
Ul9FWFRFUk5BTF9PRVMgMjk4Ci0jZGVmaW5lIFNBTVBMRVIyRFJFQ1QgMjk5Ci0jZGVmaW5lIElE
RU5USUZJRVIgMzAwCi0jZGVmaW5lIFRZUEVfTkFNRSAzMDEKLSNkZWZpbmUgRkxPQVRDT05TVEFO
VCAzMDIKLSNkZWZpbmUgSU5UQ09OU1RBTlQgMzAzCi0jZGVmaW5lIEJPT0xDT05TVEFOVCAzMDQK
LSNkZWZpbmUgRklFTERfU0VMRUNUSU9OIDMwNQotI2RlZmluZSBMRUZUX09QIDMwNgotI2RlZmlu
ZSBSSUdIVF9PUCAzMDcKLSNkZWZpbmUgSU5DX09QIDMwOAotI2RlZmluZSBERUNfT1AgMzA5Ci0j
ZGVmaW5lIExFX09QIDMxMAotI2RlZmluZSBHRV9PUCAzMTEKLSNkZWZpbmUgRVFfT1AgMzEyCi0j
ZGVmaW5lIE5FX09QIDMxMwotI2RlZmluZSBBTkRfT1AgMzE0Ci0jZGVmaW5lIE9SX09QIDMxNQot
I2RlZmluZSBYT1JfT1AgMzE2Ci0jZGVmaW5lIE1VTF9BU1NJR04gMzE3Ci0jZGVmaW5lIERJVl9B
U1NJR04gMzE4Ci0jZGVmaW5lIEFERF9BU1NJR04gMzE5Ci0jZGVmaW5lIE1PRF9BU1NJR04gMzIw
Ci0jZGVmaW5lIExFRlRfQVNTSUdOIDMyMQotI2RlZmluZSBSSUdIVF9BU1NJR04gMzIyCi0jZGVm
aW5lIEFORF9BU1NJR04gMzIzCi0jZGVmaW5lIFhPUl9BU1NJR04gMzI0Ci0jZGVmaW5lIE9SX0FT
U0lHTiAzMjUKLSNkZWZpbmUgU1VCX0FTU0lHTiAzMjYKLSNkZWZpbmUgTEVGVF9QQVJFTiAzMjcK
LSNkZWZpbmUgUklHSFRfUEFSRU4gMzI4Ci0jZGVmaW5lIExFRlRfQlJBQ0tFVCAzMjkKLSNkZWZp
bmUgUklHSFRfQlJBQ0tFVCAzMzAKLSNkZWZpbmUgTEVGVF9CUkFDRSAzMzEKLSNkZWZpbmUgUklH
SFRfQlJBQ0UgMzMyCi0jZGVmaW5lIERPVCAzMzMKLSNkZWZpbmUgQ09NTUEgMzM0Ci0jZGVmaW5l
IENPTE9OIDMzNQotI2RlZmluZSBFUVVBTCAzMzYKLSNkZWZpbmUgU0VNSUNPTE9OIDMzNwotI2Rl
ZmluZSBCQU5HIDMzOAotI2RlZmluZSBEQVNIIDMzOQotI2RlZmluZSBUSUxERSAzNDAKLSNkZWZp
bmUgUExVUyAzNDEKLSNkZWZpbmUgU1RBUiAzNDIKLSNkZWZpbmUgU0xBU0ggMzQzCi0jZGVmaW5l
IFBFUkNFTlQgMzQ0Ci0jZGVmaW5lIExFRlRfQU5HTEUgMzQ1Ci0jZGVmaW5lIFJJR0hUX0FOR0xF
IDM0NgotI2RlZmluZSBWRVJUSUNBTF9CQVIgMzQ3Ci0jZGVmaW5lIENBUkVUIDM0OAotI2RlZmlu
ZSBBTVBFUlNBTkQgMzQ5Ci0jZGVmaW5lIFFVRVNUSU9OIDM1MAotCi0KLQotCi0vKiBDb3B5IHRo
ZSBmaXJzdCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8KLQotCi0vLwotLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0vLwotCi0vLyBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGVfcGFyc2Vy
LnNoLiBETyBOT1QgRURJVCEKLQotLy8gSWdub3JlIGVycm9ycyBpbiBhdXRvLWdlbmVyYXRlZCBj
b2RlLgotI2lmIGRlZmluZWQoX19HTlVDX18pCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XdW51c2VkLWZ1bmN0aW9uIgotI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V3VudXNlZC12YXJpYWJsZSIKLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzd2l0
Y2gtZW51bSIKLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTogNDA2NSkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTg5KQotI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGU6IDQ1MDUpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcwMSkKLSNlbmRpZgot
Ci0jaW5jbHVkZSAiY29tcGlsZXIvU3ltYm9sVGFibGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9Q
YXJzZUhlbHBlci5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotCi0jZGVmaW5l
IFlZRU5BQkxFX05MUyAwCi0jZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCi0KLSNkZWZpbmUg
WVlMRVhfUEFSQU0gY29udGV4dC0+c2Nhbm5lcgotCi0KLS8qIEVuYWJsaW5nIHRyYWNlcy4gICov
Ci0jaWZuZGVmIFlZREVCVUcKLSMgZGVmaW5lIFlZREVCVUcgMAotI2VuZGlmCi0KLS8qIEVuYWJs
aW5nIHZlcmJvc2UgZXJyb3IgbWVzc2FnZXMuICAqLwotI2lmZGVmIFlZRVJST1JfVkVSQk9TRQot
IyB1bmRlZiBZWUVSUk9SX1ZFUkJPU0UKLSMgZGVmaW5lIFlZRVJST1JfVkVSQk9TRSAxCi0jZWxz
ZQotIyBkZWZpbmUgWVlFUlJPUl9WRVJCT1NFIDAKLSNlbmRpZgogCi0vKiBFbmFibGluZyB0aGUg
dG9rZW4gdGFibGUuICAqLwotI2lmbmRlZiBZWVRPS0VOX1RBQkxFCi0jIGRlZmluZSBZWVRPS0VO
X1RBQkxFIDAKLSNlbmRpZgogCiAjaWYgISBkZWZpbmVkIFlZU1RZUEUgJiYgISBkZWZpbmVkIFlZ
U1RZUEVfSVNfREVDTEFSRUQKIHR5cGVkZWYgdW5pb24gWVlTVFlQRQotCiB7CisKKwogICAgIHN0
cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgdW5pb24gewogICAgICAg
ICAgICAgVFN0cmluZyAqc3RyaW5nOwogICAgICAgICAgICAgZmxvYXQgZjsKQEAgLTMyNSw3ICsy
NDcsNiBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwog
ICAgIH0gbGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAg
ICAgVE9wZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9k
ZSogaW50ZXJtTm9kZTsKQEAgLTMzOSwzNCArMjYwLDcwIEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQ
RQogICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgICAgICAgICBURnVuY3Rp
b24qIGZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKLSAgICAgICAgICAg
IFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgIFRUeXBlTGlzdCogdHlwZUxpc3Q7Cisg
ICAgICAgICAgICBURmllbGQqIGZpZWxkOworICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRM
aXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwotfQotLyogTGluZSAxOTMgb2YgeWFjYy5j
LiAgKi8KIAotCVlZU1RZUEU7CisKKworfSBZWVNUWVBFOworIyBkZWZpbmUgWVlTVFlQRV9JU19U
UklWSUFMIDEKICMgZGVmaW5lIHl5c3R5cGUgWVlTVFlQRSAvKiBvYnNvbGVzY2VudDsgd2lsbCBi
ZSB3aXRoZHJhd24gKi8KICMgZGVmaW5lIFlZU1RZUEVfSVNfREVDTEFSRUQgMQotIyBkZWZpbmUg
WVlTVFlQRV9JU19UUklWSUFMIDEKICNlbmRpZgogCisjaWYgISBkZWZpbmVkIFlZTFRZUEUgJiYg
ISBkZWZpbmVkIFlZTFRZUEVfSVNfREVDTEFSRUQKK3R5cGVkZWYgc3RydWN0IFlZTFRZUEUKK3sK
KyAgaW50IGZpcnN0X2xpbmU7CisgIGludCBmaXJzdF9jb2x1bW47CisgIGludCBsYXN0X2xpbmU7
CisgIGludCBsYXN0X2NvbHVtbjsKK30gWVlMVFlQRTsKKyMgZGVmaW5lIHl5bHR5cGUgWVlMVFlQ
RSAvKiBvYnNvbGVzY2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KKyMgZGVmaW5lIFlZTFRZUEVf
SVNfREVDTEFSRUQgMQorIyBkZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKKyNlbmRpZgorCisK
KyNpZmRlZiBZWVBBUlNFX1BBUkFNCisjaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9f
Y3BsdXNwbHVzCitpbnQgeXlwYXJzZSAodm9pZCAqWVlQQVJTRV9QQVJBTSk7CisjZWxzZQoraW50
IHl5cGFyc2UgKCk7CisjZW5kaWYKKyNlbHNlIC8qICEgWVlQQVJTRV9QQVJBTSAqLworI2lmIGRl
ZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cworaW50IHl5cGFyc2UgKFRQYXJz
ZUNvbnRleHQqIGNvbnRleHQpOworI2Vsc2UKK2ludCB5eXBhcnNlICgpOworI2VuZGlmCisjZW5k
aWYgLyogISBZWVBBUlNFX1BBUkFNICovCiAKKyNlbmRpZiAvKiAhWVlfWVlfR0xTTEFOR19UQUJf
SF9JTkNMVURFRCAgKi8KIAogLyogQ29weSB0aGUgc2Vjb25kIHBhcnQgb2YgdXNlciBkZWNsYXJh
dGlvbnMuICAqLwogCiAKLWV4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXlsdmFsX3BhcmFtLCB2
b2lkKiB5eXNjYW5uZXIpOwotZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOworZXh0ZXJuIGludCB5eWxleChZWVNUWVBFKiB5eWx2
YWwsIFlZTFRZUEUqIHl5bGxvYywgdm9pZCogeXlzY2FubmVyKTsKK3N0YXRpYyB2b2lkIHl5ZXJy
b3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBy
ZWFzb24pOwogCi0jZGVmaW5lIEZSQUdfVkVSVF9PTkxZKFMsIEwpIHsgIFwKLSAgICBpZiAoY29u
dGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9GUkFHTUVOVF9TSEFERVIgJiYgIFwKLSAgICAgICAgY29u
dGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7ICBcCi0gICAgICAgIGNvbnRl
eHQtPmVycm9yKEwsICIgc3VwcG9ydGVkIGluIHZlcnRleC9mcmFnbWVudCBzaGFkZXJzIG9ubHkg
IiwgUyk7ICBcCi0gICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsgIFwKLSAgICB9ICBcCi19Cisj
ZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJocywgTikgICAgICAgICAgICAgICAgICAg
ICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgIGlmIChZWUlEKE4pKSB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9maWxlID0gWVlSSFNM
T0MoUmhzLCAxKS5maXJzdF9maWxlOyAgXAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfbGluZSA9
IFlZUkhTTE9DKFJocywgMSkuZmlyc3RfbGluZTsgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3Rf
ZmlsZSA9IFlZUkhTTE9DKFJocywgTikubGFzdF9maWxlOyAgICBcCisgICAgICAgIChDdXJyZW50
KS5sYXN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIE4pLmxhc3RfbGluZTsgICAgXAorICAgICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9maWxlID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0
X2ZpbGU7ICAgXAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfbGluZSA9IFlZUkhTTE9DKFJocywg
MCkubGFzdF9saW5lOyAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfZmlsZSA9IFlZUkhTTE9D
KFJocywgMCkubGFzdF9maWxlOyAgICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2xpbmUgPSBZ
WVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsgICAgXAorICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSB3aGlsZSAoMCkKIAog
I2RlZmluZSBWRVJURVhfT05MWShTLCBMKSB7ICBcCiAgICAgaWYgKGNvbnRleHQtPnNoYWRlclR5
cGUgIT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXApAQCAtMzgzLDggKzM0MCw2IEBAIGV4dGVybiB2
b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGUKIH0KIAogCi0vKiBMaW5lIDIxNiBvZiB5
YWNjLmMuICAqLwotCiAKICNpZmRlZiBzaG9ydAogIyB1bmRlZiBzaG9ydApAQCAtNDM3LDM2ICsz
OTIsMzYgQEAgdHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDE2OwogIyBpZiBkZWZpbmVkIFlZ
RU5BQkxFX05MUyAmJiBZWUVOQUJMRV9OTFMKICMgIGlmIEVOQUJMRV9OTFMKICMgICBpbmNsdWRl
IDxsaWJpbnRsLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSMgICBkZWZp
bmUgWVlfKG1zZ2lkKSBkZ2V0dGV4dCAoImJpc29uLXJ1bnRpbWUiLCBtc2dpZCkKKyMgICBkZWZp
bmUgWVlfKE1zZ2lkKSBkZ2V0dGV4dCAoImJpc29uLXJ1bnRpbWUiLCBNc2dpZCkKICMgIGVuZGlm
CiAjIGVuZGlmCiAjIGlmbmRlZiBZWV8KLSMgIGRlZmluZSBZWV8obXNnaWQpIG1zZ2lkCisjICBk
ZWZpbmUgWVlfKE1zZ2lkKSBNc2dpZAogIyBlbmRpZgogI2VuZGlmCiAKIC8qIFN1cHByZXNzIHVu
dXNlZC12YXJpYWJsZSB3YXJuaW5ncyBieSAidXNpbmciIEUuICAqLwogI2lmICEgZGVmaW5lZCBs
aW50IHx8IGRlZmluZWQgX19HTlVDX18KLSMgZGVmaW5lIFlZVVNFKGUpICgodm9pZCkgKGUpKQor
IyBkZWZpbmUgWVlVU0UoRSkgKCh2b2lkKSAoRSkpCiAjZWxzZQotIyBkZWZpbmUgWVlVU0UoZSkg
LyogZW1wdHkgKi8KKyMgZGVmaW5lIFlZVVNFKEUpIC8qIGVtcHR5ICovCiAjZW5kaWYKIAogLyog
SWRlbnRpdHkgZnVuY3Rpb24sIHVzZWQgdG8gc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgY29uc3Rh
bnQgY29uZGl0aW9ucy4gICovCiAjaWZuZGVmIGxpbnQKLSMgZGVmaW5lIFlZSUQobikgKG4pCisj
IGRlZmluZSBZWUlEKE4pIChOKQogI2Vsc2UKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZp
bmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmlu
ZWQgX01TQ19WRVIpCiBzdGF0aWMgaW50Ci1ZWUlEIChpbnQgaSkKK1lZSUQgKGludCB5eWkpCiAj
ZWxzZQogc3RhdGljIGludAotWVlJRCAoaSkKLSAgICBpbnQgaTsKK1lZSUQgKHl5aSkKKyAgICBp
bnQgeXlpOwogI2VuZGlmCiB7Ci0gIHJldHVybiBpOworICByZXR1cm4geXlpOwogfQogI2VuZGlm
CiAKQEAgLTQ4NywxMSArNDQyLDEyIEBAIFlZSUQgKGkpCiAjICAgIGRlZmluZSBhbGxvY2EgX2Fs
bG9jYQogIyAgIGVsc2UKICMgICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgYWxsb2NhCi0jICAgIGlm
ICEgZGVmaW5lZCBfQUxMT0NBX0ggJiYgISBkZWZpbmVkIF9TVERMSUJfSCAmJiAoZGVmaW5lZCBf
X1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorIyAgICBpZiAhIGRlZmluZWQgX0FM
TE9DQV9IICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MgJiYgKGRlZmluZWQgX19TVERDX18gfHwg
ZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBk
ZWZpbmVkIF9NU0NfVkVSKQogIyAgICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBP
TiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSMgICAgIGlmbmRlZiBfU1RETElCX0gKLSMgICAgICBkZWZp
bmUgX1NURExJQl9IIDEKKyAgICAgIC8qIFVzZSBFWElUX1NVQ0NFU1MgYXMgYSB3aXRuZXNzIGZv
ciBzdGRsaWIuaC4gICovCisjICAgICBpZm5kZWYgRVhJVF9TVUNDRVNTCisjICAgICAgZGVmaW5l
IEVYSVRfU1VDQ0VTUyAwCiAjICAgICBlbmRpZgogIyAgICBlbmRpZgogIyAgIGVuZGlmCkBAIC01
MTQsMjQgKzQ3MCwyNCBAQCBZWUlEIChpKQogIyAgaWZuZGVmIFlZU1RBQ0tfQUxMT0NfTUFYSU1V
TQogIyAgIGRlZmluZSBZWVNUQUNLX0FMTE9DX01BWElNVU0gWVlTSVpFX01BWElNVU0KICMgIGVu
ZGlmCi0jICBpZiAoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiAhIGRlZmluZWQgX1NURExJQl9IIFwK
KyMgIGlmIChkZWZpbmVkIF9fY3BsdXNwbHVzICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MgXAog
ICAgICAgICYmICEgKChkZWZpbmVkIFlZTUFMTE9DIHx8IGRlZmluZWQgbWFsbG9jKSBcCiAJICAg
ICAmJiAoZGVmaW5lZCBZWUZSRUUgfHwgZGVmaW5lZCBmcmVlKSkpCiAjICAgaW5jbHVkZSA8c3Rk
bGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSMgICBpZm5kZWYgX1NU
RExJQl9ICi0jICAgIGRlZmluZSBfU1RETElCX0ggMQorIyAgIGlmbmRlZiBFWElUX1NVQ0NFU1MK
KyMgICAgZGVmaW5lIEVYSVRfU1VDQ0VTUyAwCiAjICAgZW5kaWYKICMgIGVuZGlmCiAjICBpZm5k
ZWYgWVlNQUxMT0MKICMgICBkZWZpbmUgWVlNQUxMT0MgbWFsbG9jCi0jICAgaWYgISBkZWZpbmVk
IG1hbGxvYyAmJiAhIGRlZmluZWQgX1NURExJQl9IICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRl
ZmluZWQgX19DOTlfX0ZVTkNfXyBcCisjICAgaWYgISBkZWZpbmVkIG1hbGxvYyAmJiAhIGRlZmlu
ZWQgRVhJVF9TVUNDRVNTICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZV
TkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikK
IHZvaWQgKm1hbGxvYyAoWVlTSVpFX1QpOyAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNF
ICovCiAjICAgZW5kaWYKICMgIGVuZGlmCiAjICBpZm5kZWYgWVlGUkVFCiAjICAgZGVmaW5lIFlZ
RlJFRSBmcmVlCi0jICAgaWYgISBkZWZpbmVkIGZyZWUgJiYgISBkZWZpbmVkIF9TVERMSUJfSCAm
JiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorIyAgIGlmICEg
ZGVmaW5lZCBmcmVlICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MgJiYgKGRlZmluZWQgX19TVERD
X18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1
cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogdm9pZCBmcmVlICh2b2lkICopOyAvKiBJTkZSSU5HRVMg
T04gVVNFUiBOQU1FIFNQQUNFICovCiAjICAgZW5kaWYKQEAgLTU0MiwxNCArNDk4LDE2IEBAIHZv
aWQgZnJlZSAodm9pZCAqKTsgLyogSU5GUklOR0VTIE9OIFVTRVIKIAogI2lmICghIGRlZmluZWQg
eXlvdmVyZmxvdyBcCiAgICAgICYmICghIGRlZmluZWQgX19jcGx1c3BsdXMgXAotCSB8fCAoZGVm
aW5lZCBZWVNUWVBFX0lTX1RSSVZJQUwgJiYgWVlTVFlQRV9JU19UUklWSUFMKSkpCisJIHx8IChk
ZWZpbmVkIFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWUxUWVBFX0lTX1RSSVZJQUwgXAorCSAgICAg
JiYgZGVmaW5lZCBZWVNUWVBFX0lTX1RSSVZJQUwgJiYgWVlTVFlQRV9JU19UUklWSUFMKSkpCiAK
IC8qIEEgdHlwZSB0aGF0IGlzIHByb3Blcmx5IGFsaWduZWQgZm9yIGFueSBzdGFjayBtZW1iZXIu
ICAqLwogdW5pb24geXlhbGxvYwogewotICB5eXR5cGVfaW50MTYgeXlzczsKLSAgWVlTVFlQRSB5
eXZzOwotICB9OworICB5eXR5cGVfaW50MTYgeXlzc19hbGxvYzsKKyAgWVlTVFlQRSB5eXZzX2Fs
bG9jOworICBZWUxUWVBFIHl5bHNfYWxsb2M7Cit9OwogCiAvKiBUaGUgc2l6ZSBvZiB0aGUgbWF4
aW11bSBnYXAgYmV0d2VlbiBvbmUgYWxpZ25lZCBzdGFjayBhbmQgdGhlIG5leHQuICAqLwogIyBk
ZWZpbmUgWVlTVEFDS19HQVBfTUFYSU1VTSAoc2l6ZW9mICh1bmlvbiB5eWFsbG9jKSAtIDEpCkBA
IC01NTcsMzggKzUxNSwyMiBAQCB1bmlvbiB5eWFsbG9jCiAvKiBUaGUgc2l6ZSBvZiBhbiBhcnJh
eSBsYXJnZSB0byBlbm91Z2ggdG8gaG9sZCBhbGwgc3RhY2tzLCBlYWNoIHdpdGgKICAgIE4gZWxl
bWVudHMuICAqLwogIyBkZWZpbmUgWVlTVEFDS19CWVRFUyhOKSBcCi0gICAgICgoTikgKiAoc2l6
ZW9mICh5eXR5cGVfaW50MTYpICsgc2l6ZW9mIChZWVNUWVBFKSkgXAotICAgICAgKyBZWVNUQUNL
X0dBUF9NQVhJTVVNKQorICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNpemVv
ZiAoWVlTVFlQRSkgKyBzaXplb2YgKFlZTFRZUEUpKSBcCisgICAgICArIDIgKiBZWVNUQUNLX0dB
UF9NQVhJTVVNKQogCi0vKiBDb3B5IENPVU5UIG9iamVjdHMgZnJvbSBGUk9NIHRvIFRPLiAgVGhl
IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZG8KLSAgIG5vdCBvdmVybGFwLiAgKi8KLSMgaWZuZGVm
IFlZQ09QWQotIyAgaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiAxIDwgX19HTlVDX18KLSMgICBkZWZp
bmUgWVlDT1BZKFRvLCBGcm9tLCBDb3VudCkgXAotICAgICAgX19idWlsdGluX21lbWNweSAoVG8s
IEZyb20sIChDb3VudCkgKiBzaXplb2YgKCooRnJvbSkpKQotIyAgZWxzZQotIyAgIGRlZmluZSBZ
WUNPUFkoVG8sIEZyb20sIENvdW50KQkJXAotICAgICAgZG8JCQkJCVwKLQl7CQkJCQlcCi0JICBZ
WVNJWkVfVCB5eWk7CQkJCVwKLQkgIGZvciAoeXlpID0gMDsgeXlpIDwgKENvdW50KTsgeXlpKysp
CVwKLQkgICAgKFRvKVt5eWldID0gKEZyb20pW3l5aV07CQlcCi0JfQkJCQkJXAotICAgICAgd2hp
bGUgKFlZSUQgKDApKQotIyAgZW5kaWYKLSMgZW5kaWYKKyMgZGVmaW5lIFlZQ09QWV9ORUVERUQg
MQogCiAvKiBSZWxvY2F0ZSBTVEFDSyBmcm9tIGl0cyBvbGQgbG9jYXRpb24gdG8gdGhlIG5ldyBv
bmUuICBUaGUKICAgIGxvY2FsIHZhcmlhYmxlcyBZWVNJWkUgYW5kIFlZU1RBQ0tTSVpFIGdpdmUg
dGhlIG9sZCBhbmQgbmV3IG51bWJlciBvZgogICAgZWxlbWVudHMgaW4gdGhlIHN0YWNrLCBhbmQg
WVlQVFIgZ2l2ZXMgdGhlIG5ldyBsb2NhdGlvbiBvZiB0aGUKICAgIHN0YWNrLiAgQWR2YW5jZSBZ
WVBUUiB0byBhIHByb3Blcmx5IGFsaWduZWQgbG9jYXRpb24gZm9yIHRoZSBuZXh0CiAgICBzdGFj
ay4gICovCi0jIGRlZmluZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrKQkJCQkJXAorIyBkZWZpbmUg
WVlTVEFDS19SRUxPQ0FURShTdGFja19hbGxvYywgU3RhY2spCQkJCVwKICAgICBkbwkJCQkJCQkJ
CVwKICAgICAgIHsJCQkJCQkJCQlcCiAJWVlTSVpFX1QgeXluZXdieXRlczsJCQkJCQlcCi0JWVlD
T1BZICgmeXlwdHItPlN0YWNrLCBTdGFjaywgeXlzaXplKTsJCQkJXAotCVN0YWNrID0gJnl5cHRy
LT5TdGFjazsJCQkJCQlcCisJWVlDT1BZICgmeXlwdHItPlN0YWNrX2FsbG9jLCBTdGFjaywgeXlz
aXplKTsJCQlcCisJU3RhY2sgPSAmeXlwdHItPlN0YWNrX2FsbG9jOwkJCQkJXAogCXl5bmV3Ynl0
ZXMgPSB5eXN0YWNrc2l6ZSAqIHNpemVvZiAoKlN0YWNrKSArIFlZU1RBQ0tfR0FQX01BWElNVU07
IFwKIAl5eXB0ciArPSB5eW5ld2J5dGVzIC8gc2l6ZW9mICgqeXlwdHIpOwkJCQlcCiAgICAgICB9
CQkJCQkJCQkJXApAQCAtNTk2LDIzICs1MzgsNDMgQEAgdW5pb24geXlhbGxvYwogCiAjZW5kaWYK
IAorI2lmIGRlZmluZWQgWVlDT1BZX05FRURFRCAmJiBZWUNPUFlfTkVFREVECisvKiBDb3B5IENP
VU5UIG9iamVjdHMgZnJvbSBTUkMgdG8gRFNULiAgVGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24g
ZG8KKyAgIG5vdCBvdmVybGFwLiAgKi8KKyMgaWZuZGVmIFlZQ09QWQorIyAgaWYgZGVmaW5lZCBf
X0dOVUNfXyAmJiAxIDwgX19HTlVDX18KKyMgICBkZWZpbmUgWVlDT1BZKERzdCwgU3JjLCBDb3Vu
dCkgXAorICAgICAgX19idWlsdGluX21lbWNweSAoRHN0LCBTcmMsIChDb3VudCkgKiBzaXplb2Yg
KCooU3JjKSkpCisjICBlbHNlCisjICAgZGVmaW5lIFlZQ09QWShEc3QsIFNyYywgQ291bnQpICAg
ICAgICAgICAgICBcCisgICAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgWVlTSVpFX1QgeXlpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgZm9yICh5eWkgPSAwOyB5eWkgPCAoQ291bnQpOyB5eWkrKykgICBcCisgICAgICAgICAg
ICAoRHN0KVt5eWldID0gKFNyYylbeXlpXTsgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB3aGlsZSAoWVlJRCAoMCkp
CisjICBlbmRpZgorIyBlbmRpZgorI2VuZGlmIC8qICFZWUNPUFlfTkVFREVEICovCisKIC8qIFlZ
RklOQUwgLS0gU3RhdGUgbnVtYmVyIG9mIHRoZSB0ZXJtaW5hdGlvbiBzdGF0ZS4gICovCi0jZGVm
aW5lIFlZRklOQUwgIDcxCisjZGVmaW5lIFlZRklOQUwgIDc0CiAvKiBZWUxBU1QgLS0gTGFzdCBp
bmRleCBpbiBZWVRBQkxFLiAgKi8KLSNkZWZpbmUgWVlMQVNUICAgMTQxNgorI2RlZmluZSBZWUxB
U1QgICAxNDkwCiAKIC8qIFlZTlRPS0VOUyAtLSBOdW1iZXIgb2YgdGVybWluYWxzLiAgKi8KLSNk
ZWZpbmUgWVlOVE9LRU5TICA5NgorI2RlZmluZSBZWU5UT0tFTlMgIDk1CiAvKiBZWU5OVFMgLS0g
TnVtYmVyIG9mIG5vbnRlcm1pbmFscy4gICovCi0jZGVmaW5lIFlZTk5UUyAgODMKKyNkZWZpbmUg
WVlOTlRTICA4NAogLyogWVlOUlVMRVMgLS0gTnVtYmVyIG9mIHJ1bGVzLiAgKi8KLSNkZWZpbmUg
WVlOUlVMRVMgIDIwMQorI2RlZmluZSBZWU5SVUxFUyAgMjAyCiAvKiBZWU5SVUxFUyAtLSBOdW1i
ZXIgb2Ygc3RhdGVzLiAgKi8KLSNkZWZpbmUgWVlOU1RBVEVTICAzMDQKKyNkZWZpbmUgWVlOU1RB
VEVTICAzMDcKIAogLyogWVlUUkFOU0xBVEUoWVlMRVgpIC0tIEJpc29uIHN5bWJvbCBudW1iZXIg
Y29ycmVzcG9uZGluZyB0byBZWUxFWC4gICovCiAjZGVmaW5lIFlZVU5ERUZUT0sgIDIKLSNkZWZp
bmUgWVlNQVhVVE9LICAgMzUwCisjZGVmaW5lIFlZTUFYVVRPSyAgIDM0OQogCiAjZGVmaW5lIFlZ
VFJBTlNMQVRFKFlZWCkJCQkJCQlcCiAgICgodW5zaWduZWQgaW50KSAoWVlYKSA8PSBZWU1BWFVU
T0sgPyB5eXRyYW5zbGF0ZVtZWVhdIDogWVlVTkRFRlRPSykKQEAgLTY1NCw4ICs2MTYsNyBAQCBz
dGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJhbnNsYXRlW10gCiAgICAgICA1NSwgICAgNTYs
ICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwK
ICAgICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3
MiwgICAgNzMsICAgIDc0LAogICAgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAg
ICA4MCwgICAgODEsICAgIDgyLCAgICA4MywgICAgODQsCi0gICAgICA4NSwgICAgODYsICAgIDg3
LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwKLSAgICAg
IDk1CisgICAgICA4NSwgICAgODYsICAgIDg3LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwg
ICAgOTIsICAgIDkzLCAgICA5NAogfTsKIAogI2lmIFlZREVCVUcKQEAgLTY2MywxMTkgKzYyNCwx
MjAgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXRyYW5zbGF0ZVtdIAogICAgWVlSSFMu
ICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlwcmhzW10gPQogewotICAgICAgIDAs
ICAgICAwLCAgICAgMywgICAgIDUsICAgICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNywg
ICAgMTksCi0gICAgICAyNCwgICAgMjYsICAgIDMwLCAgICAzMywgICAgMzYsICAgIDM4LCAgICA0
MCwgICAgNDIsICAgIDQ2LCAgICA0OSwKLSAgICAgIDUyLCAgICA1NSwgICAgNTcsICAgIDYwLCAg
ICA2NCwgICAgNjcsICAgIDY5LCAgICA3MSwgICAgNzMsICAgIDc1LAotICAgICAgNzgsICAgIDgx
LCAgICA4NCwgICAgODYsICAgIDg4LCAgICA5MCwgICAgOTIsICAgIDk2LCAgIDEwMCwgICAxMDIs
Ci0gICAgIDEwNiwgICAxMTAsICAgMTEyLCAgIDExNCwgICAxMTgsICAgMTIyLCAgIDEyNiwgICAx
MzAsICAgMTMyLCAgIDEzNiwKLSAgICAgMTQwLCAgIDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwg
ICAxNTIsICAgMTU0LCAgIDE1OCwgICAxNjAsICAgMTY0LAotICAgICAxNjYsICAgMTcyLCAgIDE3
NCwgICAxNzgsICAgMTgwLCAgIDE4MiwgICAxODQsICAgMTg2LCAgIDE4OCwgICAxOTAsCi0gICAg
IDE5NCwgICAxOTYsICAgMTk5LCAgIDIwMiwgICAyMDcsICAgMjEwLCAgIDIxMiwgICAyMTQsICAg
MjE3LCAgIDIyMSwKLSAgICAgMjI1LCAgIDIyOCwgICAyMzQsICAgMjM4LCAgIDI0MSwgICAyNDUs
ICAgMjQ4LCAgIDI0OSwgICAyNTEsICAgMjUzLAotICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAy
NjMsICAgMjY5LCAgIDI3NiwgICAyODIsICAgMjg0LCAgIDI4NywgICAyOTIsCi0gICAgIDI5OCwg
ICAzMDMsICAgMzA2LCAgIDMwOCwgICAzMTEsICAgMzEzLCAgIDMxNSwgICAzMTcsICAgMzIwLCAg
IDMyMiwKLSAgICAgMzI0LCAgIDMyNywgICAzMjksICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzQw
LCAgIDM0MiwgICAzNDQsICAgMzQ2LAorICAgICAgIDAsICAgICAwLCAgICAgMywgICAgIDUsICAg
ICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNSwgICAgMTcsCisgICAgICAyMSwgICAgMjMs
ICAgIDI4LCAgICAzMCwgICAgMzQsICAgIDM3LCAgICA0MCwgICAgNDIsICAgIDQ0LCAgICA0NiwK
KyAgICAgIDUwLCAgICA1MywgICAgNTYsICAgIDU5LCAgICA2MSwgICAgNjQsICAgIDY4LCAgICA3
MSwgICAgNzMsICAgIDc1LAorICAgICAgNzcsICAgIDgwLCAgICA4MywgICAgODYsICAgIDg4LCAg
ICA5MCwgICAgOTIsICAgIDk0LCAgICA5OCwgICAxMDIsCisgICAgIDEwNCwgICAxMDgsICAgMTEy
LCAgIDExNCwgICAxMTYsICAgMTIwLCAgIDEyNCwgICAxMjgsICAgMTMyLCAgIDEzNCwKKyAgICAg
MTM4LCAgIDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwgICAxNTAsICAgMTU0LCAgIDE1NiwgICAx
NjAsICAgMTYyLAorICAgICAxNjYsICAgMTY4LCAgIDE3NCwgICAxNzYsICAgMTgwLCAgIDE4Miwg
ICAxODQsICAgMTg2LCAgIDE4OCwgICAxOTAsCisgICAgIDE5MiwgICAxOTYsICAgMTk4LCAgIDIw
MSwgICAyMDQsICAgMjA5LCAgIDIxMiwgICAyMTQsICAgMjE2LCAgIDIxOSwKKyAgICAgMjIzLCAg
IDIyNywgICAyMzAsICAgMjM2LCAgIDI0MCwgICAyNDMsICAgMjQ3LCAgIDI1MCwgICAyNTEsICAg
MjUzLAorICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAyNjEsICAgMjY1LCAgIDI3MSwgICAyNzgs
ICAgMjg0LCAgIDI4NiwgICAyODksCisgICAgIDI5NCwgICAzMDAsICAgMzA1LCAgIDMwOCwgICAz
MTAsICAgMzEzLCAgIDMxNSwgICAzMTcsICAgMzE5LCAgIDMyMiwKKyAgICAgMzI0LCAgIDMyNiwg
ICAzMjksICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzM3LCAgIDM0MiwgICAzNDQsICAgMzQ2LAog
ICAgICAzNDgsICAgMzUwLCAgIDM1MiwgICAzNTQsICAgMzU2LCAgIDM1OCwgICAzNjAsICAgMzYy
LCAgIDM2NCwgICAzNjYsCi0gICAgIDM2OCwgICAzNzAsICAgMzcyLCAgIDM3NCwgICAzNzYsICAg
Mzc4LCAgIDM4MCwgICAzODIsICAgMzg0LCAgIDM4NSwKLSAgICAgMzkyLCAgIDM5MywgICAzOTks
ICAgNDAxLCAgIDQwNCwgICA0MDgsICAgNDEwLCAgIDQxNCwgICA0MTYsICAgNDIxLAotICAgICA0
MjMsICAgNDI1LCAgIDQyNywgICA0MjksICAgNDMxLCAgIDQzMywgICA0MzUsICAgNDM3LCAgIDQz
OSwgICA0NDIsCi0gICAgIDQ0MywgICA0NDQsICAgNDUwLCAgIDQ1MiwgICA0NTQsICAgNDU1LCAg
IDQ1OCwgICA0NTksICAgNDYyLCAgIDQ2NSwKLSAgICAgNDY5LCAgIDQ3MSwgICA0NzQsICAgNDc2
LCAgIDQ3OSwgICA0ODUsICAgNDg5LCAgIDQ5MSwgICA0OTMsICAgNDk4LAotICAgICA0OTksICAg
NTA2LCAgIDUwNywgICA1MTYsICAgNTE3LCAgIDUyNSwgICA1MjcsICAgNTI5LCAgIDUzMSwgICA1
MzIsCi0gICAgIDUzNSwgICA1MzksICAgNTQyLCAgIDU0NSwgICA1NDgsICAgNTUyLCAgIDU1NSwg
ICA1NTcsICAgNTYwLCAgIDU2MiwKLSAgICAgNTY0LCAgIDU2NQorICAgICAzNjgsICAgMzcwLCAg
IDM3MiwgICAzNzQsICAgMzc2LCAgIDM3OCwgICAzODAsICAgMzgyLCAgIDM4NCwgICAzODYsCisg
ICAgIDM4NywgICAzOTQsICAgMzk1LCAgIDQwMSwgICA0MDMsICAgNDA2LCAgIDQxMCwgICA0MTIs
ICAgNDE2LCAgIDQxOCwKKyAgICAgNDIzLCAgIDQyNSwgICA0MjcsICAgNDI5LCAgIDQzMSwgICA0
MzMsICAgNDM1LCAgIDQzNywgICA0MzksICAgNDQxLAorICAgICA0NDQsICAgNDQ1LCAgIDQ0Niwg
ICA0NTIsICAgNDU0LCAgIDQ1NiwgICA0NTcsICAgNDYwLCAgIDQ2MSwgICA0NjQsCisgICAgIDQ2
NywgICA0NzEsICAgNDczLCAgIDQ3NiwgICA0NzgsICAgNDgxLCAgIDQ4NywgICA0OTEsICAgNDkz
LCAgIDQ5NSwKKyAgICAgNTAwLCAgIDUwMSwgICA1MDgsICAgNTA5LCAgIDUxOCwgICA1MTksICAg
NTI3LCAgIDUyOSwgICA1MzEsICAgNTMzLAorICAgICA1MzQsICAgNTM3LCAgIDU0MSwgICA1NDQs
ICAgNTQ3LCAgIDU1MCwgICA1NTQsICAgNTU3LCAgIDU1OSwgICA1NjIsCisgICAgIDU2NCwgICA1
NjYsICAgNTY3CiB9OwogCiAvKiBZWVJIUyAtLSBBIGAtMSctc2VwYXJhdGVkIGxpc3Qgb2YgdGhl
IHJ1bGVzJyBSSFMuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXJoc1tdID0KIHsK
LSAgICAgMTc1LCAgICAgMCwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgOTcsICAgIC0xLCAgICA0
OCwgICAgLTEsICAgIDQ3LAotICAgICAgLTEsICAgIDQ5LCAgICAtMSwgICAgNzIsICAgMTI0LCAg
ICA3MywgICAgLTEsICAgIDk4LCAgICAtMSwgICAgOTksCi0gICAgICA3NCwgICAxMDAsICAgIDc1
LCAgICAtMSwgICAxMDEsICAgIC0xLCAgICA5OSwgICAgNzgsICAgIDUwLCAgICAtMSwKLSAgICAg
IDk5LCAgICA1MywgICAgLTEsICAgIDk5LCAgICA1NCwgICAgLTEsICAgMTI0LCAgICAtMSwgICAx
MDIsICAgIC0xLAotICAgICAxMDMsICAgIC0xLCAgICA5OSwgICAgNzgsICAgMTAzLCAgICAtMSwg
ICAxMDUsICAgIDczLCAgICAtMSwgICAxMDQsCi0gICAgICA3MywgICAgLTEsICAgMTA2LCAgICAz
OSwgICAgLTEsICAgMTA2LCAgICAtMSwgICAxMDYsICAgMTIyLCAgICAtMSwKLSAgICAgMTA1LCAg
ICA3OSwgICAxMjIsICAgIC0xLCAgIDEwNywgICAgNzIsICAgIC0xLCAgIDE0MiwgICAgLTEsICAg
IDQ1LAotICAgICAgLTEsICAgIDUwLCAgICAtMSwgICAgOTksICAgIC0xLCAgICA1MywgICAxMDgs
ICAgIC0xLCAgICA1NCwgICAxMDgsCi0gICAgICAtMSwgICAxMDksICAgMTA4LCAgICAtMSwgICAg
ODYsICAgIC0xLCAgICA4NCwgICAgLTEsICAgIDgzLCAgICAtMSwKLSAgICAgMTA4LCAgICAtMSwg
ICAxMTAsICAgIDg3LCAgIDEwOCwgICAgLTEsICAgMTEwLCAgICA4OCwgICAxMDgsICAgIC0xLAot
ICAgICAxMTAsICAgIC0xLCAgIDExMSwgICAgODYsICAgMTEwLCAgICAtMSwgICAxMTEsICAgIDg0
LCAgIDExMCwgICAgLTEsCi0gICAgIDExMSwgICAgLTEsICAgMTEyLCAgICAtMSwgICAxMTMsICAg
IDkwLCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA5MSwKLSAgICAgMTEyLCAgICAtMSwgICAxMTMs
ICAgIDU1LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA1NiwgICAxMTIsICAgIC0xLAotICAgICAx
MTMsICAgIC0xLCAgIDExNCwgICAgNTcsICAgMTEzLCAgICAtMSwgICAxMTQsICAgIDU4LCAgIDEx
MywgICAgLTEsCi0gICAgIDExNCwgICAgLTEsICAgMTE1LCAgICAtMSwgICAxMTYsICAgIC0xLCAg
IDExNywgICAgLTEsICAgMTE4LCAgICA1OSwKLSAgICAgMTE3LCAgICAtMSwgICAxMTgsICAgIC0x
LCAgIDExOSwgICAgNjEsICAgMTE4LCAgICAtMSwgICAxMTksICAgIC0xLAotICAgICAxMjAsICAg
IDYwLCAgIDExOSwgICAgLTEsICAgMTIwLCAgICAtMSwgICAxMjAsICAgIDk1LCAgIDEyNCwgICAg
ODAsCi0gICAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMDgsICAgMTIzLCAgIDEyMiwg
ICAgLTEsICAgIDgxLCAgICAtMSwKLSAgICAgIDYyLCAgICAtMSwgICAgNjMsICAgIC0xLCAgICA2
NCwgICAgLTEsICAgIDcxLCAgICAtMSwgICAxMjIsICAgIC0xLAotICAgICAxMjQsICAgIDc5LCAg
IDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMjcsICAgIDgyLCAgICAtMSwgICAxMzUsCi0g
ICAgICA4MiwgICAgLTEsICAgICA3LCAgIDE0MCwgICAxNDEsICAgIDgyLCAgICAtMSwgICAxMjgs
ICAgIDczLCAgICAtMSwKLSAgICAgMTMwLCAgICAtMSwgICAxMjksICAgIC0xLCAgIDEzMCwgICAx
MzIsICAgIC0xLCAgIDEyOSwgICAgNzksICAgMTMyLAotICAgICAgLTEsICAgMTM3LCAgICA0NSwg
ICAgNzIsICAgIC0xLCAgIDEzOSwgICAgNDUsICAgIC0xLCAgIDEzOSwgICAgNDUsCi0gICAgICA3
NCwgICAxMjUsICAgIDc1LCAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzMSwgICAgLTEsICAgMTMz
LCAgIDEzMSwKLSAgICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTM0LCAgICAtMSwgICAxMzMsICAg
MTM0LCAgICAtMSwgICAgLTEsICAgIDMzLAotICAgICAgLTEsICAgIDM0LCAgICAtMSwgICAgMzUs
ICAgIC0xLCAgIDEzOSwgICAgLTEsICAgMTM2LCAgICAtMSwgICAxMzUsCi0gICAgICA3OSwgICAg
NDUsICAgIC0xLCAgIDEzNSwgICAgNzksICAgIDQ1LCAgICA3NCwgICAgNzUsICAgIC0xLCAgIDEz
NSwKLSAgICAgIDc5LCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM1LCAg
ICA3OSwgICAgNDUsICAgIDgxLAotICAgICAxNTAsICAgIC0xLCAgIDEzNywgICAgLTEsICAgMTM3
LCAgICA0NSwgICAgLTEsICAgMTM3LCAgICA0NSwgICAgNzQsCi0gICAgICA3NSwgICAgLTEsICAg
MTM3LCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM3LCAgICA0NSwKLSAg
ICAgIDgxLCAgIDE1MCwgICAgLTEsICAgICAzLCAgICA0NSwgICAgLTEsICAgMTM5LCAgICAtMSwg
ICAxMzgsICAgMTM5LAotICAgICAgLTEsICAgICA5LCAgICAtMSwgICAgIDgsICAgIC0xLCAgICAz
NywgICAgLTEsICAgICAzLCAgICAzNywgICAgLTEsCi0gICAgICAzNiwgICAgLTEsICAgMTQxLCAg
ICAtMSwgICAxNDAsICAgMTQxLCAgICAtMSwgICAgIDQsICAgIC0xLCAgICAgNSwKLSAgICAgIC0x
LCAgICAgNiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDc0LCAgIDEyNSwgICAgNzUs
ICAgIC0xLAotICAgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAgICAtMSwgICAg
MTAsICAgIC0xLCAgICAyNywgICAgLTEsCi0gICAgICAyOCwgICAgLTEsICAgIDI5LCAgICAtMSwg
ICAgMjEsICAgIC0xLCAgICAyMiwgICAgLTEsICAgIDIzLCAgICAtMSwKLSAgICAgIDI0LCAgICAt
MSwgICAgMjUsICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwgICAgMzEsICAgIC0x
LAotICAgICAgMzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAgNDMsICAg
IC0xLCAgICA0NCwgICAgLTEsCi0gICAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgLTEs
ICAgIDM4LCAgICA0NSwgICAgNzYsICAgMTQ0LCAgIDE0NiwKLSAgICAgIDc3LCAgICAtMSwgICAg
LTEsICAgIDM4LCAgICA3NiwgICAxNDUsICAgMTQ2LCAgICA3NywgICAgLTEsICAgMTQ3LAotICAg
ICAgLTEsICAgMTQ2LCAgIDE0NywgICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODIsICAgIC0xLCAg
IDE0OSwgICAgLTEsCi0gICAgIDE0OCwgICAgNzksICAgMTQ5LCAgICAtMSwgICAgNDUsICAgIC0x
LCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwKLSAgICAgIC0xLCAgIDEyMiwgICAgLTEsICAg
MTI2LCAgICAtMSwgICAxNTQsICAgIC0xLCAgIDE1MywgICAgLTEsICAgMTUxLAotICAgICAgLTEs
ICAgMTYzLCAgICAtMSwgICAxNjQsICAgIC0xLCAgIDE2NywgICAgLTEsICAgMTc0LCAgICAtMSwg
ICAgNzYsCi0gICAgICA3NywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgMTU1LCAgIDE2
MiwgICAxNTYsICAgIDc3LCAgICAtMSwKLSAgICAgMTYxLCAgICAtMSwgICAxNTMsICAgIC0xLCAg
ICAtMSwgICAxNTksICAgMTYxLCAgICAtMSwgICAgLTEsICAgMTYwLAotICAgICAxNTMsICAgIC0x
LCAgICA3NiwgICAgNzcsICAgIC0xLCAgICA3NiwgICAxNjIsICAgIDc3LCAgICAtMSwgICAxNTIs
Ci0gICAgICAtMSwgICAxNjIsICAgMTUyLCAgICAtMSwgICAgODIsICAgIC0xLCAgIDEyNCwgICAg
ODIsICAgIC0xLCAgICAxOCwKLSAgICAgIDcyLCAgIDEyNCwgICAgNzMsICAgMTY1LCAgICAtMSwg
ICAxNTgsICAgIDE2LCAgIDE1OCwgICAgLTEsICAgMTU4LAotICAgICAgLTEsICAgMTI0LCAgICAt
MSwgICAxMzcsICAgIDQ1LCAgICA4MSwgICAxNTAsICAgIC0xLCAgICAtMSwgICAgNDAsCi0gICAg
ICA3MiwgICAxNjgsICAgMTY2LCAgICA3MywgICAxNTcsICAgIC0xLCAgICAtMSwgICAgMTUsICAg
MTY5LCAgIDE1OCwKLSAgICAgIDQwLCAgICA3MiwgICAxMjQsICAgIDczLCAgICA4MiwgICAgLTEs
ICAgIC0xLCAgICAxNywgICAgNzIsICAgMTcwLAotICAgICAxNzEsICAgMTczLCAgICA3MywgICAx
NTcsICAgIC0xLCAgIDE2MywgICAgLTEsICAgMTUxLCAgICAtMSwgICAxNjYsCi0gICAgICAtMSwg
ICAgLTEsICAgMTcyLCAgICA4MiwgICAgLTEsICAgMTcyLCAgICA4MiwgICAxMjQsICAgIC0xLCAg
ICAxNCwKLSAgICAgIDgyLCAgICAtMSwgICAgMTMsICAgIDgyLCAgICAtMSwgICAgMjAsICAgIDgy
LCAgICAtMSwgICAgMjAsICAgMTI0LAotICAgICAgODIsICAgIC0xLCAgICAxOSwgICAgODIsICAg
IC0xLCAgIDE3NiwgICAgLTEsICAgMTc1LCAgIDE3NiwgICAgLTEsCi0gICAgIDE3NywgICAgLTEs
ICAgMTI2LCAgICAtMSwgICAgLTEsICAgMTI3LCAgIDE3OCwgICAxNjEsICAgIC0xCisgICAgIDE3
NSwgICAgIDAsICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgNDUsICAgIC0x
LCAgICA5NywKKyAgICAgIC0xLCAgICA0OCwgICAgLTEsICAgIDQ3LCAgICAtMSwgICAgNDksICAg
IC0xLCAgICA3MSwgICAxMjQsICAgIDcyLAorICAgICAgLTEsICAgIDk4LCAgICAtMSwgICAgOTks
ICAgIDczLCAgIDEwMCwgICAgNzQsICAgIC0xLCAgIDEwMSwgICAgLTEsCisgICAgICA5OSwgICAg
NzcsICAgIDk2LCAgICAtMSwgICAgOTksICAgIDUyLCAgICAtMSwgICAgOTksICAgIDUzLCAgICAt
MSwKKyAgICAgMTI0LCAgICAtMSwgICAxMDIsICAgIC0xLCAgIDEwMywgICAgLTEsICAgIDk5LCAg
ICA3NywgICAxMDMsICAgIC0xLAorICAgICAxMDUsICAgIDcyLCAgICAtMSwgICAxMDQsICAgIDcy
LCAgICAtMSwgICAxMDYsICAgIDM5LCAgICAtMSwgICAxMDYsCisgICAgICAtMSwgICAxMDYsICAg
MTIyLCAgICAtMSwgICAxMDUsICAgIDc4LCAgIDEyMiwgICAgLTEsICAgMTA3LCAgICA3MSwKKyAg
ICAgIC0xLCAgIDE0MiwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgOTksICAgIC0xLCAgICA1Miwg
ICAxMDgsICAgIC0xLAorICAgICAgNTMsICAgMTA4LCAgICAtMSwgICAxMDksICAgMTA4LCAgICAt
MSwgICAgODUsICAgIC0xLCAgICA4MywgICAgLTEsCisgICAgICA4MiwgICAgLTEsICAgMTA4LCAg
ICAtMSwgICAxMTAsICAgIDg2LCAgIDEwOCwgICAgLTEsICAgMTEwLCAgICA4NywKKyAgICAgMTA4
LCAgICAtMSwgICAxMTAsICAgIC0xLCAgIDExMSwgICAgODUsICAgMTEwLCAgICAtMSwgICAxMTEs
ICAgIDgzLAorICAgICAxMTAsICAgIC0xLCAgIDExMSwgICAgLTEsICAgMTEyLCAgICAtMSwgICAx
MTMsICAgIDg5LCAgIDExMiwgICAgLTEsCisgICAgIDExMywgICAgOTAsICAgMTEyLCAgICAtMSwg
ICAxMTMsICAgIDU0LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA1NSwKKyAgICAgMTEyLCAgICAt
MSwgICAxMTMsICAgIC0xLCAgIDExNCwgICAgNTYsICAgMTEzLCAgICAtMSwgICAxMTQsICAgIDU3
LAorICAgICAxMTMsICAgIC0xLCAgIDExNCwgICAgLTEsICAgMTE1LCAgICAtMSwgICAxMTYsICAg
IC0xLCAgIDExNywgICAgLTEsCisgICAgIDExOCwgICAgNTgsICAgMTE3LCAgICAtMSwgICAxMTgs
ICAgIC0xLCAgIDExOSwgICAgNjAsICAgMTE4LCAgICAtMSwKKyAgICAgMTE5LCAgICAtMSwgICAx
MjAsICAgIDU5LCAgIDExOSwgICAgLTEsICAgMTIwLCAgICAtMSwgICAxMjAsICAgIDk0LAorICAg
ICAxMjQsICAgIDc5LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMDgsICAgMTIzLCAg
IDEyMiwgICAgLTEsCisgICAgICA4MCwgICAgLTEsICAgIDYxLCAgICAtMSwgICAgNjIsICAgIC0x
LCAgICA2MywgICAgLTEsICAgIDcwLCAgICAtMSwKKyAgICAgMTIyLCAgICAtMSwgICAxMjQsICAg
IDc4LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMjcsICAgIDgxLAorICAgICAgLTEs
ICAgMTM1LCAgICA4MSwgICAgLTEsICAgICA3LCAgIDE0MCwgICAxNDEsICAgIDgxLCAgICAtMSwg
ICAxMjgsCisgICAgICA3MiwgICAgLTEsICAgMTMwLCAgICAtMSwgICAxMjksICAgIC0xLCAgIDEz
MCwgICAxMzIsICAgIC0xLCAgIDEyOSwKKyAgICAgIDc4LCAgIDEzMiwgICAgLTEsICAgMTM3LCAg
ICA0NSwgICAgNzEsICAgIC0xLCAgIDEzOSwgICAgOTYsICAgIC0xLAorICAgICAxMzksICAgIDk2
LCAgICA3MywgICAxMjUsICAgIDc0LCAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzMSwgICAgLTEs
CisgICAgIDEzMywgICAxMzEsICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTM0LCAgICAtMSwgICAx
MzMsICAgMTM0LCAgICAtMSwKKyAgICAgIC0xLCAgICAzMywgICAgLTEsICAgIDM0LCAgICAtMSwg
ICAgMzUsICAgIC0xLCAgIDEzOSwgICAgLTEsICAgMTM2LAorICAgICAgLTEsICAgMTM1LCAgICA3
OCwgICAgOTYsICAgIC0xLCAgIDEzNSwgICAgNzgsICAgIDk2LCAgICA3MywgICAgNzQsCisgICAg
ICAtMSwgICAxMzUsICAgIDc4LCAgICA5NiwgICAgNzMsICAgMTI1LCAgICA3NCwgICAgLTEsICAg
MTM1LCAgICA3OCwKKyAgICAgIDk2LCAgICA4MCwgICAxNTAsICAgIC0xLCAgIDEzNywgICAgLTEs
ICAgMTM3LCAgICA5NiwgICAgLTEsICAgMTM3LAorICAgICAgOTYsICAgIDczLCAgICA3NCwgICAg
LTEsICAgMTM3LCAgICA5NiwgICAgNzMsICAgMTI1LCAgICA3NCwgICAgLTEsCisgICAgIDEzNywg
ICAgOTYsICAgIDgwLCAgIDE1MCwgICAgLTEsICAgICAzLCAgICA0NSwgICAgLTEsICAgMTM5LCAg
ICAtMSwKKyAgICAgMTM4LCAgIDEzOSwgICAgLTEsICAgICA5LCAgICAtMSwgICAgIDgsICAgIC0x
LCAgICAzNywgICAgLTEsICAgICAzLAorICAgICAgMzcsICAgIC0xLCAgICAzNiwgICAgLTEsICAg
MTQxLCAgICAtMSwgICAxNDAsICAgMTQxLCAgICAtMSwgICAgIDQsCisgICAgICAtMSwgICAgIDUs
ICAgIC0xLCAgICAgNiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDczLCAgIDEyNSwK
KyAgICAgIDc0LCAgICAtMSwgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAgICAt
MSwgICAgMTAsICAgIC0xLAorICAgICAgMjcsICAgIC0xLCAgICAyOCwgICAgLTEsICAgIDI5LCAg
ICAtMSwgICAgMjEsICAgIC0xLCAgICAyMiwgICAgLTEsCisgICAgICAyMywgICAgLTEsICAgIDI0
LCAgICAtMSwgICAgMjUsICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwKKyAgICAg
IDMxLCAgICAtMSwgICAgMzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAg
NDMsICAgIC0xLAorICAgICAgNDQsICAgIC0xLCAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAtMSwg
ICAgLTEsICAgIDM4LCAgICA5NiwgICAgNzUsCisgICAgIDE0NCwgICAxNDYsICAgIDc2LCAgICAt
MSwgICAgLTEsICAgIDM4LCAgICA3NSwgICAxNDUsICAgMTQ2LCAgICA3NiwKKyAgICAgIC0xLCAg
IDE0NywgICAgLTEsICAgMTQ2LCAgIDE0NywgICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODEsICAg
IC0xLAorICAgICAxNDksICAgIC0xLCAgIDE0OCwgICAgNzgsICAgMTQ5LCAgICAtMSwgICAgOTYs
ICAgIC0xLCAgICA5NiwgICAgNzMsCisgICAgIDEyNSwgICAgNzQsICAgIC0xLCAgIDEyMiwgICAg
LTEsICAgMTI2LCAgICAtMSwgICAxNTQsICAgIC0xLCAgIDE1MywKKyAgICAgIC0xLCAgIDE1MSwg
ICAgLTEsICAgMTYzLCAgICAtMSwgICAxNjQsICAgIC0xLCAgIDE2NywgICAgLTEsICAgMTc0LAor
ICAgICAgLTEsICAgIDc1LCAgICA3NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgMTU1
LCAgIDE2MiwgICAxNTYsCisgICAgICA3NiwgICAgLTEsICAgMTYxLCAgICAtMSwgICAxNTMsICAg
IC0xLCAgICAtMSwgICAxNTksICAgMTYxLCAgICAtMSwKKyAgICAgIC0xLCAgIDE2MCwgICAxNTMs
ICAgIC0xLCAgICA3NSwgICAgNzYsICAgIC0xLCAgICA3NSwgICAxNjIsICAgIDc2LAorICAgICAg
LTEsICAgMTUyLCAgICAtMSwgICAxNjIsICAgMTUyLCAgICAtMSwgICAgODEsICAgIC0xLCAgIDEy
NCwgICAgODEsCisgICAgICAtMSwgICAgMTgsICAgIDcxLCAgIDEyNCwgICAgNzIsICAgMTY1LCAg
ICAtMSwgICAxNTgsICAgIDE2LCAgIDE1OCwKKyAgICAgIC0xLCAgIDE1OCwgICAgLTEsICAgMTI0
LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICA4MCwgICAxNTAsICAgIC0xLAorICAgICAgLTEsICAg
IDQwLCAgICA3MSwgICAxNjgsICAgMTY2LCAgICA3MiwgICAxNTcsICAgIC0xLCAgICAtMSwgICAg
MTUsCisgICAgIDE2OSwgICAxNTgsICAgIDQwLCAgICA3MSwgICAxMjQsICAgIDcyLCAgICA4MSwg
ICAgLTEsICAgIC0xLCAgICAxNywKKyAgICAgIDcxLCAgIDE3MCwgICAxNzEsICAgMTczLCAgICA3
MiwgICAxNTcsICAgIC0xLCAgIDE2MywgICAgLTEsICAgMTUxLAorICAgICAgLTEsICAgMTY2LCAg
ICAtMSwgICAgLTEsICAgMTcyLCAgICA4MSwgICAgLTEsICAgMTcyLCAgICA4MSwgICAxMjQsCisg
ICAgICAtMSwgICAgMTQsICAgIDgxLCAgICAtMSwgICAgMTMsICAgIDgxLCAgICAtMSwgICAgMjAs
ICAgIDgxLCAgICAtMSwKKyAgICAgIDIwLCAgIDEyNCwgICAgODEsICAgIC0xLCAgICAxOSwgICAg
ODEsICAgIC0xLCAgIDE3NiwgICAgLTEsICAgMTc1LAorICAgICAxNzYsICAgIC0xLCAgIDE3Nywg
ICAgLTEsICAgMTI2LCAgICAtMSwgICAgLTEsICAgMTI3LCAgIDE3OCwgICAxNjEsCisgICAgICAt
MQogfTsKIAogLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVy
IFlZTiB3YXMgZGVmaW5lZC4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXJsaW5l
W10gPQogewotICAgICAgIDAsICAgMTY4LCAgIDE2OCwgICAyMDMsICAgMjA2LCAgIDIxOSwgICAy
MjQsICAgMjI5LCAgIDIzNSwgICAyMzgsCi0gICAgIDMxNywgICAzMjAsICAgNDIxLCAgIDQzMSwg
ICA0NDQsICAgNDUyLCAgIDU1MiwgICA1NTUsICAgNTYzLCAgIDU2NywKLSAgICAgNTc0LCAgIDU3
OCwgICA1ODUsICAgNTkxLCAgIDYwMCwgICA2MDgsICAgNjYzLCAgIDY3MCwgICA2ODAsICAgNjgz
LAotICAgICA2OTMsICAgNzAzLCAgIDcyNCwgICA3MjUsICAgNzI2LCAgIDczMSwgICA3MzIsICAg
NzQxLCAgIDc1MywgICA3NTQsCi0gICAgIDc2MiwgICA3NzMsICAgNzc3LCAgIDc3OCwgICA3ODgs
ICAgNzk4LCAgIDgwOCwgICA4MjEsICAgODIyLCAgIDgzMiwKLSAgICAgODQ1LCAgIDg0OSwgICA4
NTMsICAgODU3LCAgIDg1OCwgICA4NzEsICAgODcyLCAgIDg4NSwgICA4ODYsICAgODk5LAotICAg
ICA5MDAsICAgOTE3LCAgIDkxOCwgICA5MzEsICAgOTMyLCAgIDkzMywgICA5MzQsICAgOTM1LCAg
IDkzOSwgICA5NDIsCi0gICAgIDk1MywgICA5NjEsICAgOTg4LCAgIDk5MywgIDEwMDcsICAxMDQ1
LCAgMTA0OCwgIDEwNTUsICAxMDYzLCAgMTA4NCwKLSAgICAxMTA1LCAgMTExNiwgIDExNDUsICAx
MTUwLCAgMTE2MCwgIDExNjUsICAxMTc1LCAgMTE3OCwgIDExODEsICAxMTg0LAotICAgIDExOTAs
ICAxMTk3LCAgMTIwMCwgIDEyMjIsICAxMjQwLCAgMTI2NCwgIDEyODcsICAxMjkxLCAgMTMwOSwg
IDEzMTcsCi0gICAgMTM0OSwgIDEzNjksICAxNDU4LCAgMTQ2NywgIDE0OTAsICAxNDkzLCAgMTQ5
OSwgIDE1MDcsICAxNTE1LCAgMTUyMywKLSAgICAxNTMzLCAgMTU0MCwgIDE1NDMsICAxNTQ2LCAg
MTU1MiwgIDE1NTUsICAxNTcwLCAgMTU3NCwgIDE1NzgsICAxNTgyLAotICAgIDE1OTEsICAxNTk2
LCAgMTYwMSwgIDE2MDYsICAxNjExLCAgMTYxNiwgIDE2MjEsICAxNjI2LCAgMTYzMSwgIDE2MzYs
Ci0gICAgMTY0MiwgIDE2NDgsICAxNjU0LCAgMTY1OSwgIDE2NjQsICAxNjczLCAgMTY4MiwgIDE2
ODcsICAxNzAwLCAgMTcwMCwKLSAgICAxNzE0LCAgMTcxNCwgIDE3MjMsICAxNzI2LCAgMTc0MSwg
IDE3NzcsICAxNzgxLCAgMTc4NywgIDE3OTUsICAxODExLAotICAgIDE4MTUsICAxODE5LCAgMTgy
MCwgIDE4MjYsICAxODI3LCAgMTgyOCwgIDE4MjksICAxODMwLCAgMTgzNCwgIDE4MzUsCi0gICAg
MTgzNSwgIDE4MzUsICAxODQ1LCAgMTg0NiwgIDE4NTAsICAxODUwLCAgMTg1MSwgIDE4NTEsICAx
ODU2LCAgMTg1OSwKLSAgICAxODY5LCAgMTg3MiwgIDE4NzgsICAxODc5LCAgMTg4MywgIDE4OTEs
ICAxODk1LCAgMTkwNSwgIDE5MTAsICAxOTI3LAotICAgIDE5MjcsICAxOTMyLCAgMTkzMiwgIDE5
MzksICAxOTM5LCAgMTk0NywgIDE5NTAsICAxOTU2LCAgMTk1OSwgIDE5NjUsCi0gICAgMTk2OSwg
IDE5NzYsICAxOTgzLCAgMTk5MCwgIDE5OTcsICAyMDA4LCAgMjAxNywgIDIwMjEsICAyMDI4LCAg
MjAzMSwKLSAgICAyMDM3LCAgMjAzNworICAgICAgIDAsICAgMTc5LCAgIDE3OSwgICAxODAsICAg
MTgzLCAgIDIyNiwgICAyMjksICAgMjQyLCAgIDI0NywgICAyNTIsCisgICAgIDI1OCwgICAyNjEs
ICAgMzM2LCAgIDMzOSwgICA0MzQsICAgNDQ0LCAgIDQ1NywgICA0NjUsICAgNTY1LCAgIDU2OCwK
KyAgICAgNTc2LCAgIDU3OSwgICA1ODUsICAgNTg5LCAgIDU5NiwgICA2MDIsICAgNjExLCAgIDYx
OSwgICA2NzQsICAgNjg0LAorICAgICA2ODcsICAgNjk3LCAgIDcwNywgICA3MjgsICAgNzI5LCAg
IDczMCwgICA3MzUsICAgNzM2LCAgIDc0NCwgICA3NTUsCisgICAgIDc1NiwgICA3NjQsICAgNzc1
LCAgIDc3OSwgICA3ODAsICAgNzkwLCAgIDgwMCwgICA4MTAsICAgODIzLCAgIDgyNCwKKyAgICAg
ODM0LCAgIDg0NywgICA4NTEsICAgODU1LCAgIDg1OSwgICA4NjAsICAgODczLCAgIDg3NCwgICA4
ODcsICAgODg4LAorICAgICA5MDEsICAgOTAyLCAgIDkxOSwgICA5MjAsICAgOTMzLCAgIDkzNCwg
ICA5MzUsICAgOTM2LCAgIDkzNywgICA5NDEsCisgICAgIDk0NCwgICA5NTUsICAgOTYzLCAgIDk5
MCwgICA5OTUsICAxMDA5LCAgMTA0NiwgIDEwNDksICAxMDU2LCAgMTA2NCwKKyAgICAxMDg1LCAg
MTEwNiwgIDExMTYsICAxMTQ0LCAgMTE0OSwgIDExNTksICAxMTY0LCAgMTE3NCwgIDExNzcsICAx
MTgwLAorICAgIDExODMsICAxMTg5LCAgMTE5NiwgIDExOTksICAxMjIxLCAgMTIzOSwgIDEyNjMs
ICAxMjg2LCAgMTI5MCwgIDEzMDgsCisgICAgMTMxNiwgIDEzNDgsICAxMzY4LCAgMTM4OSwgIDEz
OTgsICAxNDIxLCAgMTQyNCwgIDE0MzAsICAxNDM4LCAgMTQ0NiwKKyAgICAxNDU0LCAgMTQ2NCwg
IDE0NzEsICAxNDc0LCAgMTQ3NywgIDE0ODMsICAxNDg2LCAgMTUwMSwgIDE1MDUsICAxNTA5LAor
ICAgIDE1MTMsICAxNTE3LCAgMTUyMiwgIDE1MjcsICAxNTMyLCAgMTUzNywgIDE1NDIsICAxNTQ3
LCAgMTU1MiwgIDE1NTcsCisgICAgMTU2MiwgIDE1NjcsICAxNTcyLCAgMTU3NywgIDE1ODEsICAx
NTg1LCAgMTU5MywgIDE2MDEsICAxNjA1LCAgMTYxOCwKKyAgICAxNjE4LCAgMTYzMiwgIDE2MzIs
ICAxNjQxLCAgMTY0NCwgIDE2NjAsICAxNjkzLCAgMTY5NywgIDE3MDMsICAxNzEwLAorICAgIDE3
MjUsICAxNzI5LCAgMTczMywgIDE3MzQsICAxNzQwLCAgMTc0MSwgIDE3NDIsICAxNzQzLCAgMTc0
NCwgIDE3NDgsCisgICAgMTc0OSwgIDE3NDksICAxNzQ5LCAgMTc1OSwgIDE3NjAsICAxNzY0LCAg
MTc2NCwgIDE3NjUsICAxNzY1LCAgMTc3MCwKKyAgICAxNzczLCAgMTc4MywgIDE3ODYsICAxNzky
LCAgMTc5MywgIDE3OTcsICAxODA1LCAgMTgwOSwgIDE4MTksICAxODI0LAorICAgIDE4NDEsICAx
ODQxLCAgMTg0NiwgIDE4NDYsICAxODUzLCAgMTg1MywgIDE4NjEsICAxODY0LCAgMTg3MCwgIDE4
NzMsCisgICAgMTg3OSwgIDE4ODMsICAxODkwLCAgMTg5NywgIDE5MDQsICAxOTExLCAgMTkyMiwg
IDE5MzEsICAxOTM1LCAgMTk0MiwKKyAgICAxOTQ1LCAgMTk1MSwgIDE5NTEKIH07CiAjZW5kaWYK
IAotI2lmIFlZREVCVUcgfHwgWVlFUlJPUl9WRVJCT1NFIHx8IFlZVE9LRU5fVEFCTEUKKyNpZiBZ
WURFQlVHIHx8IFlZRVJST1JfVkVSQk9TRSB8fCAwCiAvKiBZWVROQU1FW1NZTUJPTC1OVU1dIC0t
IFN0cmluZyBuYW1lIG9mIHRoZSBzeW1ib2wgU1lNQk9MLU5VTS4KICAgIEZpcnN0LCB0aGUgdGVy
bWluYWxzLCB0aGVuLCBzdGFydGluZyBhdCBZWU5UT0tFTlMsIG5vbnRlcm1pbmFscy4gICovCiBz
dGF0aWMgY29uc3QgY2hhciAqY29uc3QgeXl0bmFtZVtdID0KQEAgLTc4OCwxNSArNzUwLDE1IEBA
IHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCB5eXRuYW1lW10gPQogICAiTUFUUklYMyIsICJNQVRS
SVg0IiwgIklOX1FVQUwiLCAiT1VUX1FVQUwiLCAiSU5PVVRfUVVBTCIsICJVTklGT1JNIiwKICAg
IlZBUllJTkciLCAiU1RSVUNUIiwgIlZPSURfVFlQRSIsICJXSElMRSIsICJTQU1QTEVSMkQiLCAi
U0FNUExFUkNVQkUiLAogICAiU0FNUExFUl9FWFRFUk5BTF9PRVMiLCAiU0FNUExFUjJEUkVDVCIs
ICJJREVOVElGSUVSIiwgIlRZUEVfTkFNRSIsCi0gICJGTE9BVENPTlNUQU5UIiwgIklOVENPTlNU
QU5UIiwgIkJPT0xDT05TVEFOVCIsICJGSUVMRF9TRUxFQ1RJT04iLAotICAiTEVGVF9PUCIsICJS
SUdIVF9PUCIsICJJTkNfT1AiLCAiREVDX09QIiwgIkxFX09QIiwgIkdFX09QIiwgIkVRX09QIiwK
LSAgIk5FX09QIiwgIkFORF9PUCIsICJPUl9PUCIsICJYT1JfT1AiLCAiTVVMX0FTU0lHTiIsICJE
SVZfQVNTSUdOIiwKLSAgIkFERF9BU1NJR04iLCAiTU9EX0FTU0lHTiIsICJMRUZUX0FTU0lHTiIs
ICJSSUdIVF9BU1NJR04iLCAiQU5EX0FTU0lHTiIsCi0gICJYT1JfQVNTSUdOIiwgIk9SX0FTU0lH
TiIsICJTVUJfQVNTSUdOIiwgIkxFRlRfUEFSRU4iLCAiUklHSFRfUEFSRU4iLAotICAiTEVGVF9C
UkFDS0VUIiwgIlJJR0hUX0JSQUNLRVQiLCAiTEVGVF9CUkFDRSIsICJSSUdIVF9CUkFDRSIsICJE
T1QiLAotICAiQ09NTUEiLCAiQ09MT04iLCAiRVFVQUwiLCAiU0VNSUNPTE9OIiwgIkJBTkciLCAi
REFTSCIsICJUSUxERSIsICJQTFVTIiwKLSAgIlNUQVIiLCAiU0xBU0giLCAiUEVSQ0VOVCIsICJM
RUZUX0FOR0xFIiwgIlJJR0hUX0FOR0xFIiwgIlZFUlRJQ0FMX0JBUiIsCi0gICJDQVJFVCIsICJB
TVBFUlNBTkQiLCAiUVVFU1RJT04iLCAiJGFjY2VwdCIsICJ2YXJpYWJsZV9pZGVudGlmaWVyIiwK
KyAgIkZMT0FUQ09OU1RBTlQiLCAiSU5UQ09OU1RBTlQiLCAiQk9PTENPTlNUQU5UIiwgIkxFRlRf
T1AiLCAiUklHSFRfT1AiLAorICAiSU5DX09QIiwgIkRFQ19PUCIsICJMRV9PUCIsICJHRV9PUCIs
ICJFUV9PUCIsICJORV9PUCIsICJBTkRfT1AiLAorICAiT1JfT1AiLCAiWE9SX09QIiwgIk1VTF9B
U1NJR04iLCAiRElWX0FTU0lHTiIsICJBRERfQVNTSUdOIiwKKyAgIk1PRF9BU1NJR04iLCAiTEVG
VF9BU1NJR04iLCAiUklHSFRfQVNTSUdOIiwgIkFORF9BU1NJR04iLCAiWE9SX0FTU0lHTiIsCisg
ICJPUl9BU1NJR04iLCAiU1VCX0FTU0lHTiIsICJMRUZUX1BBUkVOIiwgIlJJR0hUX1BBUkVOIiwg
IkxFRlRfQlJBQ0tFVCIsCisgICJSSUdIVF9CUkFDS0VUIiwgIkxFRlRfQlJBQ0UiLCAiUklHSFRf
QlJBQ0UiLCAiRE9UIiwgIkNPTU1BIiwgIkNPTE9OIiwKKyAgIkVRVUFMIiwgIlNFTUlDT0xPTiIs
ICJCQU5HIiwgIkRBU0giLCAiVElMREUiLCAiUExVUyIsICJTVEFSIiwgIlNMQVNIIiwKKyAgIlBF
UkNFTlQiLCAiTEVGVF9BTkdMRSIsICJSSUdIVF9BTkdMRSIsICJWRVJUSUNBTF9CQVIiLCAiQ0FS
RVQiLAorICAiQU1QRVJTQU5EIiwgIlFVRVNUSU9OIiwgIiRhY2NlcHQiLCAiaWRlbnRpZmllciIs
ICJ2YXJpYWJsZV9pZGVudGlmaWVyIiwKICAgInByaW1hcnlfZXhwcmVzc2lvbiIsICJwb3N0Zml4
X2V4cHJlc3Npb24iLCAiaW50ZWdlcl9leHByZXNzaW9uIiwKICAgImZ1bmN0aW9uX2NhbGwiLCAi
ZnVuY3Rpb25fY2FsbF9vcl9tZXRob2QiLCAiZnVuY3Rpb25fY2FsbF9nZW5lcmljIiwKICAgImZ1
bmN0aW9uX2NhbGxfaGVhZGVyX25vX3BhcmFtZXRlcnMiLApAQCAtODE1LDE2ICs3NzcsMTYgQEAg
c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHl5dG5hbWVbXSA9CiAgICJpbml0X2RlY2xhcmF0b3Jf
bGlzdCIsICJzaW5nbGVfZGVjbGFyYXRpb24iLCAiZnVsbHlfc3BlY2lmaWVkX3R5cGUiLAogICAi
dHlwZV9xdWFsaWZpZXIiLCAidHlwZV9zcGVjaWZpZXIiLCAicHJlY2lzaW9uX3F1YWxpZmllciIs
CiAgICJ0eXBlX3NwZWNpZmllcl9ub19wcmVjIiwgInR5cGVfc3BlY2lmaWVyX25vbmFycmF5Iiwg
InN0cnVjdF9zcGVjaWZpZXIiLAotICAiQDEiLCAiQDIiLCAic3RydWN0X2RlY2xhcmF0aW9uX2xp
c3QiLCAic3RydWN0X2RlY2xhcmF0aW9uIiwKKyAgIiRAMSIsICIkQDIiLCAic3RydWN0X2RlY2xh
cmF0aW9uX2xpc3QiLCAic3RydWN0X2RlY2xhcmF0aW9uIiwKICAgInN0cnVjdF9kZWNsYXJhdG9y
X2xpc3QiLCAic3RydWN0X2RlY2xhcmF0b3IiLCAiaW5pdGlhbGl6ZXIiLAogICAiZGVjbGFyYXRp
b25fc3RhdGVtZW50IiwgInN0YXRlbWVudCIsICJzaW1wbGVfc3RhdGVtZW50IiwKLSAgImNvbXBv
dW5kX3N0YXRlbWVudCIsICJAMyIsICJANCIsICJzdGF0ZW1lbnRfbm9fbmV3X3Njb3BlIiwKLSAg
InN0YXRlbWVudF93aXRoX3Njb3BlIiwgIkA1IiwgIkA2IiwgImNvbXBvdW5kX3N0YXRlbWVudF9u
b19uZXdfc2NvcGUiLAorICAiY29tcG91bmRfc3RhdGVtZW50IiwgIiRAMyIsICIkQDQiLCAic3Rh
dGVtZW50X25vX25ld19zY29wZSIsCisgICJzdGF0ZW1lbnRfd2l0aF9zY29wZSIsICIkQDUiLCAi
JEA2IiwgImNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUiLAogICAic3RhdGVtZW50X2xp
c3QiLCAiZXhwcmVzc2lvbl9zdGF0ZW1lbnQiLCAic2VsZWN0aW9uX3N0YXRlbWVudCIsCi0gICJz
ZWxlY3Rpb25fcmVzdF9zdGF0ZW1lbnQiLCAiY29uZGl0aW9uIiwgIml0ZXJhdGlvbl9zdGF0ZW1l
bnQiLCAiQDciLAotICAiQDgiLCAiQDkiLCAiZm9yX2luaXRfc3RhdGVtZW50IiwgImNvbmRpdGlv
bm9wdCIsICJmb3JfcmVzdF9zdGF0ZW1lbnQiLAorICAic2VsZWN0aW9uX3Jlc3Rfc3RhdGVtZW50
IiwgImNvbmRpdGlvbiIsICJpdGVyYXRpb25fc3RhdGVtZW50IiwgIiRANyIsCisgICIkQDgiLCAi
JEA5IiwgImZvcl9pbml0X3N0YXRlbWVudCIsICJjb25kaXRpb25vcHQiLCAiZm9yX3Jlc3Rfc3Rh
dGVtZW50IiwKICAgImp1bXBfc3RhdGVtZW50IiwgInRyYW5zbGF0aW9uX3VuaXQiLCAiZXh0ZXJu
YWxfZGVjbGFyYXRpb24iLAotICAiZnVuY3Rpb25fZGVmaW5pdGlvbiIsICJAMTAiLCAwCisgICJm
dW5jdGlvbl9kZWZpbml0aW9uIiwgIiRAMTAiLCBZWV9OVUxMCiB9OwogI2VuZGlmCiAKQEAgLTg0
Miw0NjEgKzgwNCw0ODIgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXl0b2tudW1bXSA9
CiAgICAgIDMxNSwgICAzMTYsICAgMzE3LCAgIDMxOCwgICAzMTksICAgMzIwLCAgIDMyMSwgICAz
MjIsICAgMzIzLCAgIDMyNCwKICAgICAgMzI1LCAgIDMyNiwgICAzMjcsICAgMzI4LCAgIDMyOSwg
ICAzMzAsICAgMzMxLCAgIDMzMiwgICAzMzMsICAgMzM0LAogICAgICAzMzUsICAgMzM2LCAgIDMz
NywgICAzMzgsICAgMzM5LCAgIDM0MCwgICAzNDEsICAgMzQyLCAgIDM0MywgICAzNDQsCi0gICAg
IDM0NSwgICAzNDYsICAgMzQ3LCAgIDM0OCwgICAzNDksICAgMzUwCisgICAgIDM0NSwgICAzNDYs
ICAgMzQ3LCAgIDM0OCwgICAzNDkKIH07CiAjIGVuZGlmCiAKIC8qIFlZUjFbWVlOXSAtLSBTeW1i
b2wgbnVtYmVyIG9mIHN5bWJvbCB0aGF0IHJ1bGUgWVlOIGRlcml2ZXMuICAqLwogc3RhdGljIGNv
bnN0IHl5dHlwZV91aW50OCB5eXIxW10gPQogewotICAgICAgIDAsICAgIDk2LCAgICA5NywgICAg
OTgsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk4LCAgICA5OSwgICAgOTksCi0gICAgICA5OSwg
ICAgOTksICAgIDk5LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAxMDIsICAgMTAzLCAg
IDEwMywKLSAgICAgMTA0LCAgIDEwNCwgICAxMDUsICAgMTA1LCAgIDEwNiwgICAxMDcsICAgMTA3
LCAgIDEwNywgICAxMDgsICAgMTA4LAotICAgICAxMDgsICAgMTA4LCAgIDEwOSwgICAxMDksICAg
MTA5LCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMSwgICAxMTEsCi0gICAgIDExMSwgICAxMTIs
ICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTQsICAgMTE0LCAgIDExNCwK
LSAgICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgIDExOCwgICAxMTksICAgMTE5LCAgIDEy
MCwgICAxMjAsICAgMTIxLAotICAgICAxMjEsICAgMTIyLCAgIDEyMiwgICAxMjMsICAgMTIzLCAg
IDEyMywgICAxMjMsICAgMTIzLCAgIDEyNCwgICAxMjQsCi0gICAgIDEyNSwgICAxMjYsICAgMTI2
LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOCwgICAxMjksICAgMTI5LCAgIDEzMCwKLSAgICAg
MTMxLCAgIDEzMSwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzIsICAgMTMzLCAgIDEzMywgICAx
MzMsICAgMTMzLAotICAgICAxMzQsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM1LCAgIDEzNSwg
ICAxMzYsICAgMTM2LCAgIDEzNiwgICAxMzYsCi0gICAgIDEzNiwgICAxMzYsICAgMTM3LCAgIDEz
NywgICAxMzgsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEzOSwKLSAgICAgMTM5LCAg
IDE0MCwgICAxNDAsICAgMTQwLCAgIDE0MSwgICAxNDEsICAgMTQyLCAgIDE0MiwgICAxNDIsICAg
MTQyLAorICAgICAgIDAsICAgIDk1LCAgICA5NiwgICAgOTYsICAgIDk3LCAgICA5OCwgICAgOTgs
ICAgIDk4LCAgICA5OCwgICAgOTgsCisgICAgICA5OSwgICAgOTksICAgIDk5LCAgICA5OSwgICAg
OTksICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMiwKKyAgICAgMTAzLCAgIDEwMywg
ICAxMDQsICAgMTA0LCAgIDEwNSwgICAxMDUsICAgMTA2LCAgIDEwNywgICAxMDcsICAgMTA4LAor
ICAgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDksICAgMTA5LCAgIDEwOSwgICAxMTAsICAgMTEw
LCAgIDExMCwgICAxMTEsCisgICAgIDExMSwgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTMsICAg
MTEzLCAgIDExMywgICAxMTMsICAgMTE0LCAgIDExNCwKKyAgICAgMTE0LCAgIDExNSwgICAxMTYs
ICAgMTE3LCAgIDExOCwgICAxMTgsICAgMTE5LCAgIDExOSwgICAxMjAsICAgMTIwLAorICAgICAx
MjEsICAgMTIxLCAgIDEyMiwgICAxMjIsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTIzLCAgIDEy
MywgICAxMjQsCisgICAgIDEyNCwgICAxMjUsICAgMTI2LCAgIDEyNiwgICAxMjYsICAgMTI3LCAg
IDEyOCwgICAxMjgsICAgMTI5LCAgIDEyOSwKKyAgICAgMTMwLCAgIDEzMSwgICAxMzEsICAgMTMy
LCAgIDEzMiwgICAxMzIsICAgMTMyLCAgIDEzMywgICAxMzMsICAgMTMzLAorICAgICAxMzMsICAg
MTM0LCAgIDEzNSwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM2LCAgIDEzNiwgICAx
MzYsCisgICAgIDEzNiwgICAxMzYsICAgMTM2LCAgIDEzNywgICAxMzcsICAgMTM4LCAgIDEzOCwg
ICAxMzgsICAgMTM4LCAgIDEzOCwKKyAgICAgMTM5LCAgIDEzOSwgICAxNDAsICAgMTQwLCAgIDE0
MCwgICAxNDEsICAgMTQxLCAgIDE0MiwgICAxNDIsICAgMTQyLAogICAgICAxNDIsICAgMTQyLCAg
IDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsCi0g
ICAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIs
ICAgMTQ0LCAgIDE0MywKLSAgICAgMTQ1LCAgIDE0MywgICAxNDYsICAgMTQ2LCAgIDE0NywgICAx
NDgsICAgMTQ4LCAgIDE0OSwgICAxNDksICAgMTUwLAotICAgICAxNTEsICAgMTUyLCAgIDE1Miwg
ICAxNTMsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1NCwgICAxNTUsCi0gICAgIDE1
NiwgICAxNTQsICAgMTU3LCAgIDE1NywgICAxNTksICAgMTU4LCAgIDE2MCwgICAxNTgsICAgMTYx
LCAgIDE2MSwKLSAgICAgMTYyLCAgIDE2MiwgICAxNjMsICAgMTYzLCAgIDE2NCwgICAxNjUsICAg
MTY1LCAgIDE2NiwgICAxNjYsICAgMTY4LAotICAgICAxNjcsICAgMTY5LCAgIDE2NywgICAxNzAs
ICAgMTY3LCAgIDE3MSwgICAxNzEsICAgMTcyLCAgIDE3MiwgICAxNzMsCi0gICAgIDE3MywgICAx
NzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NSwgICAxNzUsICAgMTc2LCAgIDE3
NiwKLSAgICAgMTc4LCAgIDE3NworICAgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQy
LCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDQsCisgICAgIDE0MywgICAxNDUsICAg
MTQzLCAgIDE0NiwgICAxNDYsICAgMTQ3LCAgIDE0OCwgICAxNDgsICAgMTQ5LCAgIDE0OSwKKyAg
ICAgMTUwLCAgIDE1MSwgICAxNTIsICAgMTUyLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1Mywg
ICAxNTMsICAgMTU0LAorICAgICAxNTUsICAgMTU2LCAgIDE1NCwgICAxNTcsICAgMTU3LCAgIDE1
OSwgICAxNTgsICAgMTYwLCAgIDE1OCwgICAxNjEsCisgICAgIDE2MSwgICAxNjIsICAgMTYyLCAg
IDE2MywgICAxNjMsICAgMTY0LCAgIDE2NSwgICAxNjUsICAgMTY2LCAgIDE2NiwKKyAgICAgMTY4
LCAgIDE2NywgICAxNjksICAgMTY3LCAgIDE3MCwgICAxNjcsICAgMTcxLCAgIDE3MSwgICAxNzIs
ICAgMTcyLAorICAgICAxNzMsICAgMTczLCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAx
NzQsICAgMTc1LCAgIDE3NSwgICAxNzYsCisgICAgIDE3NiwgICAxNzgsICAgMTc3CiB9OwogCiAv
KiBZWVIyW1lZTl0gLS0gTnVtYmVyIG9mIHN5bWJvbHMgY29tcG9zaW5nIHJpZ2h0IGhhbmQgc2lk
ZSBvZiBydWxlIFlZTi4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjJbXSA9CiB7
Ci0gICAgICAgMCwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDMsICAgICAxLCAgICAgNCwKLSAgICAgICAxLCAgICAgMywgICAgIDIsICAgICAyLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMywgICAgIDIsICAgICAyLAotICAgICAgIDIsICAgICAxLCAgICAg
MiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsCi0gICAg
ICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDMsICAg
ICAxLCAgICAgMywKLSAgICAgICAzLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAgIDMs
ICAgICAzLCAgICAgMSwgICAgIDMsICAgICAzLAotICAgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsCi0gICAgICAgNSwg
ICAgIDEsICAgICAzLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMywKLSAgICAgICAxLCAgICAgMiwgICAgIDIsICAgICA0LCAgICAgMiwgICAgIDEsICAgICAx
LCAgICAgMiwgICAgIDMsICAgICAzLAotICAgICAgIDIsICAgICA1LCAgICAgMywgICAgIDIsICAg
ICAzLCAgICAgMiwgICAgIDAsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAgICAgMSwgICAgIDEs
ICAgICAzLCAgICAgNSwgICAgIDYsICAgICA1LCAgICAgMSwgICAgIDIsICAgICA0LCAgICAgNSwK
LSAgICAgICA0LCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MiwgICAgIDEsICAgICAxLAotICAgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgNCwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCisgICAgICAgMCwgICAgIDIsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywKKyAgICAg
ICAxLCAgICAgNCwgICAgIDEsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAzLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMywg
ICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMSwKKyAgICAgICAzLCAg
ICAgMywgICAgIDEsICAgICAxLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDEsICAg
ICAzLAorICAgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDEs
ICAgICAzLCAgICAgMSwgICAgIDMsCisgICAgICAgMSwgICAgIDUsICAgICAxLCAgICAgMywgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAzLCAgICAgMSwg
ICAgIDIsICAgICAyLCAgICAgNCwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAzLAor
ICAgICAgIDMsICAgICAyLCAgICAgNSwgICAgIDMsICAgICAyLCAgICAgMywgICAgIDIsICAgICAw
LCAgICAgMSwgICAgIDEsCisgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDUsICAg
ICA2LCAgICAgNSwgICAgIDEsICAgICAyLCAgICAgNCwKKyAgICAgICA1LCAgICAgNCwgICAgIDIs
ICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAxLAorICAgICAg
IDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDQsICAgICAxLCAgICAg
MSwgICAgIDEsCiAgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKLSAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDAsICAgICA2LAotICAgICAgIDAsICAg
ICA1LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgNCwgICAg
IDEsCi0gICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAyLCAgICAgMCwKLSAgICAgICAwLCAgICAgNSwgICAgIDEsICAgICAxLCAgICAg
MCwgICAgIDIsICAgICAwLCAgICAgMiwgICAgIDIsICAgICAzLAotICAgICAgIDEsICAgICAyLCAg
ICAgMSwgICAgIDIsICAgICA1LCAgICAgMywgICAgIDEsICAgICAxLCAgICAgNCwgICAgIDAsCi0g
ICAgICAgNiwgICAgIDAsICAgICA4LCAgICAgMCwgICAgIDcsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAwLCAgICAgMiwKLSAgICAgICAzLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMywgICAg
IDIsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLAotICAgICAgIDAsICAgICAzCisgICAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMCwKKyAgICAgICA2LCAgICAgMCwgICAgIDUsICAgICAxLCAgICAgMiwgICAgIDMsICAg
ICAxLCAgICAgMywgICAgIDEsICAgICA0LAorICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsCisgICAgICAgMCwgICAg
IDAsICAgICA1LCAgICAgMSwgICAgIDEsICAgICAwLCAgICAgMiwgICAgIDAsICAgICAyLCAgICAg
MiwKKyAgICAgICAzLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDUsICAgICAzLCAg
ICAgMSwgICAgIDEsICAgICA0LAorICAgICAgIDAsICAgICA2LCAgICAgMCwgICAgIDgsICAgICAw
LCAgICAgNywgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDAsCisgICAgICAgMiwgICAgIDMsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwKKyAg
ICAgICAxLCAgICAgMCwgICAgIDMKIH07CiAKLS8qIFlZREVGQUNUW1NUQVRFLU5BTUVdIC0tIERl
ZmF1bHQgcnVsZSB0byByZWR1Y2Ugd2l0aCBpbiBzdGF0ZQotICAgU1RBVEUtTlVNIHdoZW4gWVlU
QUJMRSBkb2Vzbid0IHNwZWNpZnkgc29tZXRoaW5nIGVsc2UgdG8gZG8uICBaZXJvCisvKiBZWURF
RkFDVFtTVEFURS1OQU1FXSAtLSBEZWZhdWx0IHJlZHVjdGlvbiBudW1iZXIgaW4gc3RhdGUgU1RB
VEUtTlVNLgorICAgUGVyZm9ybWVkIHdoZW4gWVlUQUJMRSBkb2Vzbid0IHNwZWNpZnkgc29tZXRo
aW5nIGVsc2UgdG8gZG8uICBaZXJvCiAgICBtZWFucyB0aGUgZGVmYXVsdCBpcyBhbiBlcnJvci4g
ICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5ZGVmYWN0W10gPQogewotICAgICAgIDAs
ICAgICAwLCAgIDExMSwgICAxMTIsICAgMTEzLCAgICAgMCwgICAxMDUsICAgMTA0LCAgIDExOSwg
ICAxMTcsCi0gICAgIDExOCwgICAxMjMsICAgMTI0LCAgIDEyNSwgICAxMjYsICAgMTI3LCAgIDEy
OCwgICAxMjAsICAgMTIxLCAgIDEyMiwKLSAgICAgMTI5LCAgIDEzMCwgICAxMzEsICAgMTA4LCAg
IDEwNiwgICAgIDAsICAgMTE2LCAgIDEzMiwgICAxMzMsICAgMTM0LAotICAgICAxMzUsICAgMTM3
LCAgIDE5OSwgICAyMDAsICAgICAwLCAgICA3NiwgICAgODYsICAgICAwLCAgICA5MSwgICAgOTYs
Ci0gICAgICAgMCwgICAxMDIsICAgICAwLCAgIDEwOSwgICAxMTQsICAgMTM2LCAgICAgMCwgICAx
OTYsICAgMTk4LCAgIDEwNywKLSAgICAgMTAxLCAgICAgMCwgICAgIDAsICAgMTQwLCAgICA3MSwg
ICAgIDAsICAgIDc0LCAgICA4NiwgICAgIDAsICAgIDg3LAotICAgICAgODgsICAgIDg5LCAgICA3
NywgICAgIDAsICAgIDg2LCAgICAgMCwgICAgNzIsICAgIDk3LCAgIDEwMywgICAxMTAsCi0gICAg
ICAgMCwgICAgIDEsICAgMTk3LCAgICAgMCwgICAxMzgsICAgICAwLCAgICAgMCwgICAyMDEsICAg
IDc4LCAgICA4MywKLSAgICAgIDg1LCAgICA5MCwgICAgIDAsICAgIDkyLCAgICA3OSwgICAgIDAs
ICAgICAwLCAgICAgMiwgICAgIDUsICAgICA0LAotICAgICAgIDYsICAgIDI3LCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAzNCwgICAgMzMsICAgIDMyLCAgICAgMywgICAgIDgsCi0gICAgICAyOCwg
ICAgMTAsICAgIDE1LCAgICAxNiwgICAgIDAsICAgICAwLCAgICAyMSwgICAgIDAsICAgIDM1LCAg
ICAgMCwKLSAgICAgIDM4LCAgICA0MSwgICAgNDIsICAgIDQ3LCAgICA1MCwgICAgNTEsICAgIDUy
LCAgICA1MywgICAgNTUsICAgIDU3LAotICAgICAgNTksICAgIDcwLCAgICAgMCwgICAgMjUsICAg
IDczLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MiwgICAgIDAsCi0gICAgICAgMCwgICAxODEs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTksICAgMTY4LCAgIDE3MiwK
LSAgICAgIDM1LCAgICA2MSwgICAgNjgsICAgICAwLCAgIDE1MCwgICAgIDAsICAgMTE0LCAgIDE1
MywgICAxNzAsICAgMTUyLAotICAgICAxNTEsICAgICAwLCAgIDE1NCwgICAxNTUsICAgMTU2LCAg
IDE1NywgICAgODAsICAgIDgyLCAgICA4NCwgICAgIDAsCi0gICAgICAgMCwgICAgOTgsICAgICAw
LCAgIDE0OSwgICAxMDAsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDEyLCAgICAxMywKLSAgICAg
ICAwLCAgICAgMCwgICAgMTksICAgIDE4LCAgICAgMCwgICAgMjAsICAgIDIyLCAgICAyNCwgICAg
MzEsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgIDEx
NSwgICAgIDAsICAgMTQ3LCAgICAgMCwgICAxNDUsICAgMTQxLCAgIDE0MywKLSAgICAgMTkyLCAg
IDE5MSwgICAxNjYsICAgMTgzLCAgICAgMCwgICAxOTUsICAgMTkzLCAgICAgMCwgICAxNzksICAg
MTU4LAotICAgICAgIDAsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2MywgICAgIDAs
ICAgICAwLCAgIDE3MywgICAxNjksCi0gICAgIDE3MSwgICAgIDAsICAgIDkzLCAgICAgMCwgICAg
OTUsICAgIDk5LCAgICAgNywgICAgIDAsICAgIDE0LCAgICAyNiwKLSAgICAgIDExLCAgICAxNywg
ICAgMjMsICAgIDM2LCAgICAzNywgICAgNDAsICAgIDM5LCAgICA0NSwgICAgNDYsICAgIDQzLAot
ICAgICAgNDQsICAgIDQ4LCAgICA0OSwgICAgNTQsICAgIDU2LCAgICA1OCwgICAgIDAsICAgMTM5
LCAgICAgMCwgICAgIDAsCi0gICAgIDE0NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE5NCwgICAgIDAsICAgMTYwLCAgICA2MiwKLSAgICAgIDY5LCAgICAgMCwgICAgOTQs
ICAgICA5LCAgICAgMCwgICAgIDAsICAgMTQ2LCAgICAgMCwgICAxNjUsICAgMTY3LAotICAgICAx
ODYsICAgMTg1LCAgIDE4OCwgICAxNjYsICAgMTc3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA4
MSwgICAgNjAsCi0gICAgIDE0OCwgICAgIDAsICAgMTg3LCAgICAgMCwgICAgIDAsICAgMTc2LCAg
IDE3NCwgICAgIDAsICAgICAwLCAgIDE2MSwKLSAgICAgICAwLCAgIDE4OSwgICAgIDAsICAgMTY2
LCAgICAgMCwgICAxNjMsICAgMTgwLCAgIDE2MiwgICAgIDAsICAgMTkwLAotICAgICAxODQsICAg
MTc1LCAgIDE3OCwgICAxODIKKyAgICAgICAwLCAgICAgMCwgICAxMTIsICAgMTEzLCAgIDExNCwg
ICAgIDAsICAgMTA2LCAgIDEwNSwgICAxMjAsICAgMTE4LAorICAgICAxMTksICAgMTI0LCAgIDEy
NSwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjksICAgMTIxLCAgIDEyMiwgICAxMjMsCisgICAg
IDEzMCwgICAxMzEsICAgMTMyLCAgIDEwOSwgICAxMDcsICAgICAwLCAgIDExNywgICAxMzMsICAg
MTM0LCAgIDEzNSwKKyAgICAgMTM2LCAgIDEzOCwgICAyMDAsICAgMjAxLCAgICAgMCwgICAgNzcs
ICAgIDg3LCAgICAgMCwgICAgOTIsICAgIDk3LAorICAgICAgIDAsICAgMTAzLCAgICAgMCwgICAx
MTAsICAgMTE1LCAgIDEzNywgICAgIDAsICAgMTk3LCAgIDE5OSwgICAxMDgsCisgICAgIDEwMiwg
ICAgIDAsICAgICAyLCAgICAgMywgICAxNDEsICAgICAwLCAgICA3MiwgICAgIDAsICAgIDc1LCAg
ICA4NywKKyAgICAgICAwLCAgICA4OCwgICAgODksICAgIDkwLCAgICA3OCwgICAgIDAsICAgIDg3
LCAgICAgMCwgICAgNzMsICAgICAyLAorICAgICAgOTgsICAgMTA0LCAgIDExMSwgICAgIDAsICAg
ICAxLCAgIDE5OCwgICAgIDAsICAgICAwLCAgIDEzOSwgICAgIDAsCisgICAgIDIwMiwgICAgNzks
ICAgIDg0LCAgICA4NiwgICAgOTEsICAgICAwLCAgICA5MywgICAgODAsICAgICAwLCAgICAgMCwK
KyAgICAgICA0LCAgICAgNywgICAgIDYsICAgICA4LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAz
NSwgICAgMzQsICAgIDMzLAorICAgICAgIDUsICAgIDEwLCAgICAyOSwgICAgMTIsICAgIDE3LCAg
ICAxOCwgICAgIDAsICAgICAwLCAgICAyMywgICAgIDAsCisgICAgICAzNiwgICAgIDAsICAgIDM5
LCAgICA0MiwgICAgNDMsICAgIDQ4LCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwKKyAgICAg
IDU2LCAgICA1OCwgICAgNjAsICAgIDcxLCAgICAgMCwgICAgMjcsICAgIDc0LCAgICAgMCwgICAg
IDAsICAgMTQzLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxODIsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAxNjAsCisgICAgIDE2OSwgICAxNzMsICAgIDM2LCAgICA2
MiwgICAgNjksICAgICAwLCAgIDE1MSwgICAgIDAsICAgMTE1LCAgIDE1NCwKKyAgICAgMTcxLCAg
IDE1MywgICAxNTIsICAgICAwLCAgIDE1NSwgICAxNTYsICAgMTU3LCAgIDE1OCwgICAgODEsICAg
IDgzLAorICAgICAgODUsICAgICAwLCAgICAgMCwgICAgOTksICAgICAwLCAgIDE1MCwgICAxMDEs
ICAgIDMwLCAgICAzMSwgICAgIDAsCisgICAgICAxNCwgICAgMTUsICAgICAwLCAgICAgMCwgICAg
MjEsICAgIDIwLCAgICAgMCwgICAgMjIsICAgIDI0LCAgICAyNiwKKyAgICAgIDMyLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDExNiwgICAxNDgsICAgICAw
LCAgIDE0NiwgICAxNDIsCisgICAgIDE0NCwgICAgIDAsICAgMTkzLCAgIDE5MiwgICAxNjcsICAg
MTg0LCAgICAgMCwgICAxOTYsICAgMTk0LCAgICAgMCwKKyAgICAgMTgwLCAgIDE1OSwgICAgIDAs
ICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2NCwgICAgIDAsICAgICAwLAorICAgICAx
NzQsICAgMTcwLCAgIDE3MiwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgOTYsICAgMTAwLCAgICAg
OSwgICAgIDAsCisgICAgICAxNiwgICAgIDIsICAgICAzLCAgICAxMywgICAgMTksICAgIDI1LCAg
ICAzNywgICAgMzgsICAgIDQxLCAgICA0MCwKKyAgICAgIDQ2LCAgICA0NywgICAgNDQsICAgIDQ1
LCAgICA0OSwgICAgNTAsICAgIDU1LCAgICA1NywgICAgNTksICAgICAwLAorICAgICAgIDAsICAg
ICAwLCAgIDE0NSwgICAxNDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAx
OTUsCisgICAgICAgMCwgICAxNjEsICAgIDYzLCAgICA3MCwgICAgIDAsICAgIDk1LCAgICAxMSwg
ICAgIDAsICAgICAwLCAgIDE0NywKKyAgICAgICAwLCAgIDE2NiwgICAxNjgsICAgMTg3LCAgIDE4
NiwgICAxODksICAgMTY3LCAgIDE3OCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgIDgyLCAg
ICA2MSwgICAxNDksICAgICAwLCAgIDE4OCwgICAgIDAsICAgICAwLCAgIDE3NywgICAxNzUsCisg
ICAgICAgMCwgICAgIDAsICAgMTYyLCAgICAgMCwgICAxOTAsICAgICAwLCAgIDE2NywgICAgIDAs
ICAgMTY0LCAgIDE4MSwKKyAgICAgMTYzLCAgICAgMCwgICAxOTEsICAgMTg1LCAgIDE3NiwgICAx
NzksICAgMTgzCiB9OwogCiAvKiBZWURFRkdPVE9bTlRFUk0tTlVNXS4gICovCiBzdGF0aWMgY29u
c3QgeXl0eXBlX2ludDE2IHl5ZGVmZ290b1tdID0KIHsKLSAgICAgIC0xLCAgICA5OCwgICAgOTks
ICAgMTAwLCAgIDIyNywgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LAotICAgICAx
MDYsICAgMTA3LCAgIDE0MCwgICAxMDksICAgMTEwLCAgIDExMSwgICAxMTIsICAgMTEzLCAgIDEx
NCwgICAxMTUsCi0gICAgIDExNiwgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjAsICAgMTQxLCAg
IDE0MiwgICAyMTYsICAgMTQzLCAgIDEyMiwKLSAgICAgMTQ0LCAgIDE0NSwgICAgMzQsICAgIDM1
LCAgICAzNiwgICAgNzksICAgIDYyLCAgICA2MywgICAgODAsICAgIDM3LAotICAgICAgMzgsICAg
IDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAxMjMsICAgIDQ1LCAgIDEyNSwgICAg
NzUsCi0gICAgIDEyNywgICAxMjgsICAgMTk2LCAgIDE5NywgICAxNjQsICAgMTQ3LCAgIDE0OCwg
ICAxNDksICAgMTUwLCAgIDIxMCwKLSAgICAgMjc3LCAgIDI5NiwgICAyNTEsICAgMjUyLCAgIDI1
MywgICAyOTcsICAgMTUxLCAgIDE1MiwgICAxNTMsICAgMjg2LAotICAgICAyNzYsICAgMTU0LCAg
IDI1NywgICAyMDIsICAgMjU0LCAgIDI3MiwgICAyODMsICAgMjg0LCAgIDE1NSwgICAgNDYsCi0g
ICAgICA0NywgICAgNDgsICAgIDU1CisgICAgICAtMSwgICAxOTYsICAgMTAwLCAgIDEwMSwgICAx
MDIsICAgMjI5LCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEwNiwKKyAgICAgMTA3LCAgIDEwOCwg
ICAxMDksICAgMTQyLCAgIDExMSwgICAxMTIsICAgMTEzLCAgIDExNCwgICAxMTUsICAgMTE2LAor
ICAgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjAsICAgMTIxLCAgIDEyMiwgICAxNDMsICAgMTQ0
LCAgIDIxOCwgICAxNDUsCisgICAgIDEyNCwgICAxNDYsICAgMTQ3LCAgICAzNCwgICAgMzUsICAg
IDM2LCAgICA4MiwgICAgNjQsICAgIDY1LCAgICA4MywKKyAgICAgIDM3LCAgICAzOCwgICAgMzks
ICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgIDEyNSwgICAgNDUsICAgMTMwLAorICAgICAg
NzcsICAgMTI4LCAgIDEyOSwgICAxOTcsICAgMTk4LCAgIDE2NiwgICAxNDksICAgMTUwLCAgIDE1
MSwgICAxNTIsCisgICAgIDIxMiwgICAyODAsICAgMjk5LCAgIDI1NCwgICAyNTUsICAgMjU2LCAg
IDMwMCwgICAxNTMsICAgMTU0LCAgIDE1NSwKKyAgICAgMjg5LCAgIDI3OSwgICAxNTYsICAgMjYw
LCAgIDIwNCwgICAyNTcsICAgMjc1LCAgIDI4NiwgICAyODcsICAgMTU3LAorICAgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNTcKIH07CiAKIC8qIFlZUEFDVFtTVEFURS1OVU1dIC0tIEluZGV4IGlu
IFlZVEFCTEUgb2YgdGhlIHBvcnRpb24gZGVzY3JpYmluZwogICAgU1RBVEUtTlVNLiAgKi8KLSNk
ZWZpbmUgWVlQQUNUX05JTkYgLTI2NgorI2RlZmluZSBZWVBBQ1RfTklORiAtMjYxCiBzdGF0aWMg
Y29uc3QgeXl0eXBlX2ludDE2IHl5cGFjdFtdID0KIHsKLSAgICAxMjUzLCAgIC0yMCwgIC0yNjYs
ICAtMjY2LCAgLTI2NiwgICAxNDgsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0y
NjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2
NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgLTM5LCAg
LTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgLTE4
LCAgICAtMiwgICAgIDYsICAgIDIxLCAgIC02MSwgIC0yNjYsICAgIDUxLAotICAgIDEyOTYsICAt
MjY2LCAgMTM3MCwgIC0yNjYsICAgIDI1LCAgLTI2NiwgIDEyMDksICAtMjY2LCAgLTI2NiwgIC0y
NjYsCi0gICAgLTI2NiwgIDEzNzAsICAgIDQyLCAgLTI2NiwgIC0yNjYsICAgIDUwLCAgLTI2Niwg
ICAgNzEsICAgIDk1LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAxMjk2LCAgIDEy
MywgICAxMDUsICAtMjY2LCAgICAgOSwgIC0yNjYsICAtMjY2LAotICAgICA5NzQsICAtMjY2LCAg
LTI2NiwgICAgODEsICAtMjY2LCAgMTI5NiwgICAyOTAsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0g
ICAgLTI2NiwgICAxMjUsICAxMjk2LCAgIC0xMywgIC0yNjYsICAgNzc2LCAgIDk3NCwgICAgOTks
ICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgICA5NzQsICAgOTc0LCAgIDk3NCwgIC0y
NjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgICAgMzUsICAtMjY2LCAgLTI2Niwg
IC0yNjYsICAgMTAwLCAgICAtNiwgIDEwNDAsICAgMTA0LCAgLTI2NiwgICA5NzQsCi0gICAgICAz
NiwgICAtNjQsICAtMjY2LCAgIC0yMSwgICAxMDIsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTEz
LCAgIDExNywKLSAgICAgLTUxLCAgLTI2NiwgICAxMDgsICAtMjY2LCAgLTI2NiwgIDEyOTYsICAg
MTI5LCAgMTEwOSwgIC0yNjYsICAgIDk3LAotICAgICAxMDMsICAtMjY2LCAgIDExMiwgICAxMTQs
ICAgMTA2LCAgIDg0MiwgICAxMTUsICAgMTE2LCAgLTI2NiwgIC0yNjYsCi0gICAgICAzOSwgIC0y
NjYsICAtMjY2LCAgIC00MywgIC0yNjYsICAgLTE4LCAgICA0NywgIC0yNjYsICAtMjY2LCAgLTI2
NiwKLSAgICAtMjY2LCAgIDM3NCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTE4LCAg
LTI2NiwgIC0yNjYsICAgOTA4LAotICAgICA5NzQsICAtMjY2LCAgIDEyMCwgIC0yNjYsICAtMjY2
LCAgLTI2NiwgIC0yNjYsICAgIDE5LCAgLTI2NiwgIC0yNjYsCi0gICAgIDk3NCwgIDEzMzMsICAt
MjY2LCAgLTI2NiwgICA5NzQsICAgMTE5LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDk3NCwKLSAg
ICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwg
ICA5NzQsICAgOTc0LAotICAgICA5NzQsICAgOTc0LCAgIDk3NCwgIC0yNjYsICAxMTUyLCAgIDEy
MiwgICAtMjksICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAgMTIxLCAg
LTI2NiwgICA5NzQsICAtMjY2LCAgLTI2NiwgICAgIDUsICAtMjY2LCAgLTI2NiwKLSAgICAgNDU4
LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgOTc0LCAgIDk3NCwgIC0yNjYs
ICAtMjY2LAotICAgIC0yNjYsICAgOTc0LCAgLTI2NiwgICAxMzcsICAtMjY2LCAgLTI2NiwgIC0y
NjYsICAgMTM4LCAgIDExMSwgIC0yNjYsCi0gICAgIDE0MiwgIC0yNjYsICAtMjY2LCAgLTI2Niwg
IC0yNjYsICAgIDM2LCAgICAzNiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIC0y
MSwgICAtMjEsICAtMjY2LCAgIDExMywgICAxMTcsICAgIDgyLCAgLTI2NiwgICA5NzQsICAgMTI5
LAotICAgIC0yNjYsICAgMTc1LCAgICA1MCwgICA2MjYsICAgNzEwLCAgICAzOCwgIC0yNjYsICAg
MTk3LCAgIDQ1OCwgIC0yNjYsCi0gICAgLTI2NiwgICAxNDEsICAtMjY2LCAgLTI2NiwgICA5NzQs
ICAgMTU1LCAgLTI2NiwgICAxNDUsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgICAx
OTcsICAgMTIxLCAgIDExMSwgICAxODYsICAgMTU5LCAgIDE2MCwgIC0yNjYsICAtMjY2LAotICAg
IC0yNjYsICAgOTc0LCAgLTI2NiwgICAxNjYsICAgMTc2LCAgIDIzNiwgIC0yNjYsICAgMTc0LCAg
IDU0MiwgIC0yNjYsCi0gICAgICA0MywgICA5NzQsICAgNTQyLCAgIDEyMSwgICA5NzQsICAtMjY2
LCAgLTI2NiwgIC0yNjYsICAgMTc3LCAgIDExMSwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAt
MjY2CisgICAgMTMyNywgICAtMjAsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgMTEzLCAgLTI2MSwg
IC0yNjEsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgIC0xOSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisg
ICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIC02MSwgICAtNDAsICAgLTI4LCAgICA3NSwgICAgLTcs
ICAtMjYxLCAgICAyNCwKKyAgICAxMzcwLCAgLTI2MSwgIDE0NDQsICAtMjYxLCAgIC0xMSwgIC0y
NjEsICAxMjgzLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAxNDQ0LCAgLTI2MSwg
IC0yNjEsICAtMjYxLCAgICAgNiwgIC0yNjEsICAgIDU0LCAgLTI2MSwgICAgODgsCisgICAgICA2
MiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAxMzcwLCAgICA1OSwgICAgOTEsICAtMjYx
LCAgICAzNiwKKyAgICAgLTUwLCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgLTI2MSwgIC0yNjEsICAg
IDYzLCAgMTM3MCwgIC0yNjEsICAgMjkzLAorICAgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEs
ICAgIDkxLCAgMTM3MCwgICAtMTIsICAtMjYxLCAgIDg1NiwgIDEwNTEsCisgICAgICA3NywgIC0y
NjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIC0yNjEsICAtMjYxLCAgLTI2
MSwKKyAgICAtMjYxLCAgLTI2MSwgICAtMTQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgIDg0LCAg
IC00NCwgIDExMTYsICAgIDk1LAorICAgIC0yNjEsICAxMDUxLCAgICA1MywgICAgIDMsICAtMjYx
LCAgIC0zNiwgICAgODksICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAgIDEwNCwgICAxMDcsICAg
LTQ1LCAgLTI2MSwgICAgOTYsICAtMjYxLCAgLTI2MSwgICAgOTEsICAxMTg0LCAgLTI2MSwKKyAg
ICAxMzcwLCAgICA5MiwgICAgOTMsICAtMjYxLCAgICA5OCwgICAxMDEsICAgIDk0LCAgIDkyMSwg
ICAxMDUsICAgMTAyLAorICAgIC0yNjEsICAtMjYxLCAgICA3MiwgIC0yNjEsICAtMjYxLCAgICAg
OSwgIC0yNjEsICAgLTYxLCAgICA0MiwgIC0yNjEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAg
IDM3NiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgMTA2LCAgLTI2MSwKKyAgICAtMjYx
LCAgIDk4NiwgIDEwNTEsICAtMjYxLCAgIDEwMywgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEs
ICAgLTQxLAorICAgIC0yNjEsICAtMjYxLCAgMTA1MSwgIDE0MDcsICAtMjYxLCAgLTI2MSwgIDEw
NTEsICAgMTEwLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwg
IDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwKKyAgICAxMDUxLCAgMTA1
MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIC0yNjEsICAgMTA5LCAgICAyMywgIC0yNjEsICAtMjYx
LAorICAgIC0yNjEsICAxMjI3LCAgLTI2MSwgIC0yNjEsICAgMTExLCAgLTI2MSwgIDEwNTEsICAt
MjYxLCAgLTI2MSwgICAgMjUsCisgICAgLTI2MSwgIC0yNjEsICAgNDU5LCAgLTI2MSwgIC0yNjEs
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgMTA1MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0y
NjEsICAxMDUxLCAgLTI2MSwgICAxMTQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgMTE1LAorICAg
ICAxMTIsICAgIDc3LCAgIDExNiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAg
ICA1MywgICAgNTMsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAtMzYsICAgLTM2
LCAgLTI2MSwgICAxMDQsICAgMTA3LCAgICA3NiwKKyAgICAxMDUxLCAgICA5MSwgIC0yNjEsICAt
MjYxLCAgIDE0NSwgICAgNTQsICAgNjI1LCAgIDcwOCwgICAgLTYsICAtMjYxLAorICAgICA3OTEs
ICAgNDU5LCAgLTI2MSwgIC0yNjEsICAgMTE3LCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgIDEyMCwg
IC0yNjEsCisgICAgIDEyNCwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgNzkxLCAgIDEx
MSwgICAxMTIsICAgIDkxLCAgIDEyNSwKKyAgICAgMTIyLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAg
MTA1MSwgIC0yNjEsICAgMTE4LCAgIDEyOCwgICAxODAsICAtMjYxLAorICAgICAxMjYsICAgNTQy
LCAgLTI2MSwgICAgLTUsICAxMDUxLCAgIDU0MiwgICAxMTEsICAxMDUxLCAgLTI2MSwgIC0yNjEs
CisgICAgLTI2MSwgICAxMjMsICAgMTEyLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MQogfTsK
IAogLyogWVlQR09UT1tOVEVSTS1OVU1dLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYg
eXlwZ290b1tdID0KIHsKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0y
NjYsICAtMjY2LCAgICA4NSwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2LCAgIC00NCwg
IC0yNjYsICAgLTE1LCAgLTI2NiwgICAtNTUsICAgLTE5LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2
NiwgICAgNzIsICAgIDcwLCAgICA3MywgIC0yNjYsICAgLTY2LCAgIC04MywgIC0yNjYsICAgLTky
LCAgIC03MywKLSAgICAgIDEzLCAgICAxNCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxODAsICAg
MjA2LCAgIDIwMSwgICAxODQsICAtMjY2LAotICAgIC0yNjYsICAtMjQxLCAgIC0yNSwgICAtMzAs
ICAgMjYyLCAgICAtNCwgICAgIDAsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgIDE0MywgIC0x
MjIsICAtMjY2LCAgICAyMiwgIC0xNDUsICAgIDE2LCAgLTE0NCwgIC0yMjYsICAtMjY2LCAgLTI2
NiwKLSAgICAtMjY2LCAgIC0xNywgIC0yNjUsICAtMjY2LCAgLTI2NiwgICAtNTQsICAgIDYzLCAg
ICAyMCwgIC0yNjYsICAtMjY2LAotICAgICAgIDQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2
LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgIDIzMSwgIC0yNjYsICAt
MjY2CisgICAgLTI2MSwgICAtMjQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwg
IC0yNjEsICAgIDM0LCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgIDMyLCAgLTI2
MSwgICAtMzMsICAtMjYxLCAgIC0yNywgICAtMjYsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAg
ICAxNCwgICAgMTYsICAgIDE4LCAgLTI2MSwgICAtNjYsICAgLTg3LCAgLTI2MSwgICAtOTIsCisg
ICAgIC04NSwgICAgMTEsICAgIDEyLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDE0MSwgICAxNTAs
ICAgMTYxLCAgIDE0MywKKyAgICAtMjYxLCAgLTI2MSwgIC0yMzEsICAgICA1LCAgIC0zMCwgICAy
MjQsICAgLTE4LCAgICAgMCwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAgMTAwLCAgLTExOSwg
IC0yNjEsICAgLTE3LCAgLTE1NiwgICAtMjUsICAtMTQ1LCAgLTI0MywgIC0yNjEsCisgICAgLTI2
MSwgIC0yNjEsICAgLTY0LCAgLTI2MCwgIC0yNjEsICAtMjYxLCAgIC01MiwgICAgMjEsICAgLTIy
LCAgLTI2MSwKKyAgICAtMjYxLCAgIC0zOSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAt
MjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAgMTkxLCAgLTI2MSwgIC0yNjEK
IH07CiAKIC8qIFlZVEFCTEVbWVlQQUNUW1NUQVRFLU5VTV1dLiAgV2hhdCB0byBkbyBpbiBzdGF0
ZSBTVEFURS1OVU0uICBJZgogICAgcG9zaXRpdmUsIHNoaWZ0IHRoYXQgdG9rZW4uICBJZiBuZWdh
dGl2ZSwgcmVkdWNlIHRoZSBydWxlIHdoaWNoCi0gICBudW1iZXIgaXMgdGhlIG9wcG9zaXRlLiAg
SWYgemVybywgZG8gd2hhdCBZWURFRkFDVCBzYXlzLgotICAgSWYgWVlUQUJMRV9OSU5GLCBzeW50
YXggZXJyb3IuICAqLwotI2RlZmluZSBZWVRBQkxFX05JTkYgLTE2NQorICAgbnVtYmVyIGlzIHRo
ZSBvcHBvc2l0ZS4gIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8KKyNkZWZpbmUg
WVlUQUJMRV9OSU5GIC0xNjYKIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXl0YWJsZVtdID0K
IHsKLSAgICAgIDQ0LCAgICA3NywgICAxNjcsICAgMTYzLCAgIDEyMSwgICAxOTksICAgIDUyLCAg
IDIyMCwgICAyODUsICAgMTkxLAotICAgICAgNjgsICAgIDY0LCAgIDE2MiwgICAgMzIsICAgIDMz
LCAgIDIyNCwgICAyNzUsICAgIDQ5LCAgICA2NSwgICAxMjEsCi0gICAgIDE4MSwgICAgNjYsICAg
MTgyLCAgIDE3NiwgICAgNTgsICAgIDUwLCAgIDEwOCwgICAyNjksICAgMzAxLCAgICAgNiwKLSAg
ICAgICA3LCAgIDI3NSwgICAgNjQsICAgIDgxLCAgIDE4MywgICAxODQsICAgMjE3LCAgICA1Mywg
ICAgNjksICAgMjE4LAotICAgICAgNDQsICAgMTA4LCAgICA0NCwgICAyMDcsICAgMTkyLCAgIDEy
NiwgICAgNDQsICAgIDczLCAgIDE2NSwgICAxNjYsCi0gICAgIDI0OSwgICAgNDQsICAgIDgxLCAg
IDI1MCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgMjMsICAgIDI0LCAgICAzMiwKLSAgICAgIDMz
LCAgIDE1OSwgICAyOTUsICAgIDQ0LCAgICA1NCwgICAxNzgsICAgMjk1LCAgIDE3MywgICAxNjAs
ICAgMTg1LAotICAgICAxODYsICAgIDU2LCAgIDE5OSwgICAxNzQsICAgIDU4LCAgICA0NCwgICAx
NDYsICAgMTYzLCAgIDIyOCwgICAgIDYsCi0gICAgICAgNywgICAgODQsICAgIDQ0LCAgICA4NSwg
ICAyMTcsICAgIDU3LCAgIDIyMywgICAyNTYsICAgMTY4LCAgIDE2OSwKLSAgICAgIDg2LCAgIDIz
MiwgICAyMjYsICAgMTIxLCAgIC03NSwgICAxMjYsICAgIDY3LCAgIDEyNiwgICAyMTcsICAgIDcw
LAotICAgICAyNDYsICAgMjExLCAgIDIxMiwgICAyMTMsICAgIDU5LCAgICA2MCwgICAgNjEsICAg
IDIzLCAgICAyNCwgICAxNzAsCi0gICAgIDIxNCwgICAyNzMsICAgMjU1LCAgIDE3MSwgICAyMjAs
ICAgMTA4LCAgIDI5OCwgICAyMTcsICAgIDc0LCAgIC0yNSwKLSAgICAgMjE1LCAgICA3MCwgICAy
MTcsICAgMTc5LCAgIDE4MCwgICAgNDQsICAgIDc2LCAgICA0NCwgICAyMzcsICAgMjM4LAotICAg
ICAyMzksICAgMjQwLCAgICA0OSwgICAyNTksICAgMjYwLCAgIDIzMywgICAyMzQsICAgMTA4LCAg
IDEwOCwgICAxMDgsCi0gICAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4
LCAgIDEwOCwgICAxMDgsICAgMjYxLCAgIDMwMiwKLSAgICAgIDgzLCAgIDE0NiwgICAgIDIsICAg
ICAzLCAgICAgNCwgICAxMjEsICAgIDU5LCAgICA2MCwgICAgNjEsICAgMTg3LAotICAgICAxODgs
ICAgMjE3LCAgIDI2NCwgICAxMjQsICAgMTI2LCAgIDI3NCwgICAyMzUsICAgMjM2LCAgIDI0MSwg
ICAyNDIsCi0gICAgIDE1NiwgICAtMjYsICAgMTg5LCAgIDE3MiwgICAxOTUsICAgMjY1LCAgIDE3
NywgICAxMDgsICAgMTkwLCAgIDIwMCwKLSAgICAgMjc0LCAgIDI3OSwgICAxMjEsICAgMTkzLCAg
IDIwMywgICAyMDEsICAgMjA0LCAgIDIwOCwgICAyMDUsICAgMjkwLAotICAgICAyMTcsICAtMTE2
LCAgIDIyMSwgICAyMDksICAgIDQ0LCAgIDIyNSwgICAyNDgsICAtMTY0LCAgIDI2OCwgICAyOTks
Ci0gICAgICA1OCwgICAgIDIsICAgICAzLCAgICAgNCwgICAxMDgsICAgICA2LCAgICAgNywgICAg
IDgsICAgICA5LCAgICAxMCwKLSAgICAgMTQ2LCAgIDE2MywgICAyNjIsICAgMjYzLCAgIC0yNywg
ICAyNjcsICAgMjc4LCAgIDI4MSwgICAgMTEsICAgIDEyLAotICAgICAgMTMsICAgIDE0LCAgICAx
NSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCi0gICAg
IDI4MCwgICAyODcsICAgMjg4LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAyODksICAg
IDI3LCAgICAyOCwKLSAgICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODks
ICAgIDkwLCAgICA5MSwgICAyOTEsICAgMjkyLAotICAgICAgOTIsICAgIDkzLCAgIDI5MywgICAx
NDYsICAgMTQ2LCAgIDI5NCwgICAyMzEsICAgMTQ2LCAgIDE0NiwgICAzMDMsCi0gICAgIDI0NCwg
ICAyNDMsICAgMTU3LCAgICA3OCwgICAyNDUsICAgIDgyLCAgIDE1OCwgICAgNTEsICAgMTk0LCAg
ICA5NCwKLSAgICAgMjcwLCAgIDI2NiwgICAxNDYsICAgMjU4LCAgIDI3MSwgICAzMDAsICAgMjgy
LCAgICA3MiwgICAgIDAsICAgICAwLAotICAgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0NiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAs
ICAgMTQ2LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywK
LSAgICAgICA4LCAgICAgOSwgICAgMTAsICAgMTI5LCAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEz
MiwgICAxMzMsICAgMTM0LAotICAgICAxMzUsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIy
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAg
MTM2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAg
ODksICAgIDkwLAotICAgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICA0NCwgICAgNTUsICAgMTY1LCAgIDE2
NCwgICAxNjksICAgIDgwLCAgIDIyNiwgICAxMjMsICAgMjIyLCAgIDIwMCwKKyAgICAgIDcxLCAg
ICAzMiwgICAgMzMsICAgMjcyLCAgIDE5MywgICAgNzAsICAgMjg4LCAgICA0OSwgICAxODUsICAg
MTg2LAorICAgICAgNTYsICAgMTc4LCAgIDEyMywgICAgODgsICAgIDcyLCAgICA1MCwgICAgNTIs
ICAgIDUzLCAgIDE3NSwgICAyNzgsCisgICAgICA4OSwgICAyMjgsICAgIDU4LCAgICA3NiwgICAx
NzYsICAgIDg0LCAgIDMwNCwgICAyMTksICAgMTcwLCAgIDE3MSwKKyAgICAgIDQ0LCAgICA2Niwg
ICAgNDQsICAgIDg2LCAgIDI3OCwgICAyMDksICAgIDQ0LCAgIDEyNywgICAyOTgsICAgMTk0LAor
ICAgICAgNTksICAgIDQ0LCAgIDI5OCwgICAxODcsICAgMTg4LCAgICA4NCwgICAgNTQsICAgIDMy
LCAgICAzMywgICAxNzIsCisgICAgIDE1OCwgICAxNjEsICAgIDczLCAgIDE3MywgICAgNjYsICAg
IDQ0LCAgIDI3NiwgICAzMDEsICAgMTYyLCAgICA2OSwKKyAgICAgIDUzLCAgICA2NywgICAyMTks
ICAgMjE5LCAgICA2OCwgICAxNjUsICAgMjI1LCAgICA0NCwgICAgNjAsICAgMTQ4LAorICAgICAy
MzAsICAgIDc4LCAgIDIwMCwgICAgIDYsICAgICA3LCAgICA0NCwgICAxODMsICAgMjE5LCAgIDE4
NCwgICAyMzUsCisgICAgIDIyMCwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgMTIzLCAg
ICAgNiwgICAgIDcsICAgMTI3LCAgICA0OSwKKyAgICAgMTI3LCAgIDI1MSwgICAyNDksICAgMjE5
LCAgIDI1MiwgICAxMTAsICAgMjU5LCAgICA4NywgICAgNjEsICAgIDYyLAorICAgICAgNjMsICAg
IDIzLCAgICAyNCwgICAtMjcsICAgMjU4LCAgICA3MywgICAyMjIsICAgICAyLCAgICAgMywgICAg
IDQsCisgICAgIDExMCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgMjMsICAgIDI0LCAgIDE2Nywg
ICAxNjgsICAgIDQ0LCAgICA3OSwKKyAgICAgIDQ0LCAgIDI2MiwgICAyNjMsICAgMjEzLCAgIDIx
NCwgICAyMTUsICAgIDUyLCAgICA1MywgICAyNjQsICAgMTgxLAorICAgICAxODIsICAgMzA1LCAg
IDIxNiwgICAxODAsICAgMTI2LCAgIDE4OSwgICAxOTAsICAgLTc2LCAgIC0yOCwgICAyMzMsCisg
ICAgIDIzOCwgICAyMzksICAgMjE3LCAgIDE0OCwgICAyMTksICAgMjY3LCAgIDE3NCwgICAxMjMs
ICAgMjQwLCAgIDI0MSwKKyAgICAgMjQyLCAgIDI0MywgICAxOTEsICAgMjQ0LCAgIDI0NSwgICAy
NjgsICAgMTc5LCAgIDE5MiwgICAyNzcsICAgMjA1LAorICAgICAxOTUsICAgMTI3LCAgIDIwNiwg
ICAyMDIsICAgMjAzLCAgIDIwNywgICAyMTAsICAgMjI3LCAgIDIxMSwgICAyMjMsCisgICAgIDI4
MiwgIC0xMTcsICAgMjUwLCAgIDI3NywgICAxMjMsICAgMjcwLCAgLTE2NSwgIC0xMzgsICAgMjY1
LCAgIDI2NiwKKyAgICAgMjE5LCAgIDI4MSwgICAyOTMsICAgMTEwLCAgIDI4MywgICAyODQsICAg
Mjk2LCAgIDI5MSwgICAyOTIsICAgMjk0LAorICAgICAyOTUsICAgIDQ0LCAgIDMwMiwgICAyNzEs
ICAgMzA2LCAgIDI0NiwgICAyOTcsICAgMjM0LCAgIDI0NywgICAgODEsCisgICAgIDE2NSwgICAy
NDgsICAgMTQ4LCAgIDIzNiwgICAyMzcsICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDEx
MCwKKyAgICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTU5LCAg
ICA4NSwgICAxNjAsICAgIDUxLAorICAgICAyMDEsICAgMzAzLCAgIDI3MywgICAyNjEsICAgMjY5
LCAgIDI3NCwgICAyODUsICAgIDc1LCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM3LCAgIDEzOCwg
ICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAg
MCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsCi0gICAgICAgNCwgICAgIDUsICAgICA2LCAg
ICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMjksICAgMTMwLCAgIDEzMSwKLSAgICAgICAw
LCAgIDEzMiwgICAxMzMsICAgMTM0LCAgIDEzNSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LAotICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAxMzYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywKLSAgICAgIDMxLCAgICA4
OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAw
LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjkwLCAgIDExMCwgICAxNDgsICAg
MTQ4LCAgICAgMCwgICAgIDAsCisgICAgIDE0OCwgICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAg
ICAgIDAsICAgICAwLCAgIDExMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMCwgICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ4
LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKKyAgICAgICA1LCAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgMTMxLCAgIDEzMiwgICAxMzMsICAgICAwLAorICAgICAxMzQs
ICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwg
ICAgMTYsCisgICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAyMywKKyAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM4LCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLAorICAgICAgOTEsICAgIDky
LCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAs
CiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAxMzcsICAgMjE5LCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsCi0gICAg
ICA5NywgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwKLSAgICAgIDEwLCAgIDEyOSwgICAxMzAsICAgMTMxLCAgICAgMCwgICAxMzIs
ICAgMTMzLCAgIDEzNCwgICAxMzUsICAgIDExLAotICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAg
MTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM2LCAg
ICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5
LCAgICA5MCwgICAgOTEsICAgICAwLAotICAgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0MCwK
KyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgOTcsICAgIDk4LCAgICAg
MCwgICAgOTksICAgICAxLAorICAgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAg
ICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEsCisgICAgIDEzMiwgICAxMzMsICAgICAw
LCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAg
IDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjksCisgICAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5
MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwKKyAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDk2LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAxMzksICAgMjIxLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5OCwKKyAgICAgICAwLCAgICA5OSwg
ICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LAor
ICAgICAgIDksICAgIDEwLCAgIDEzMSwgICAxMzIsICAgMTMzLCAgICAgMCwgICAxMzQsICAgMTM1
LCAgIDEzNiwgICAxMzcsCisgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAg
IDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM4LAorICAgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5
MywgICAgIDAsCisgICAgICAgMCwgICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgOTQsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTM3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwg
ICAgIDMsICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwgICAxMjksICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLAotICAgICAxMzMsICAgMTM0LCAg
IDEzNSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCisg
ICAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgMTQxLCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAg
IDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LAorICAgICAgIDYsICAgICA3LCAgICAgOCwg
ICAgIDksICAgIDEwLCAgIDEzMSwgICAxMzIsICAgMTMzLCAgICAgMCwgICAxMzQsCisgICAgIDEz
NSwgICAxMzYsICAgMTM3LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2
LCAgICAxNywKICAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMjMsICAgIDI0LAotICAgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcs
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsCi0gICAgICA4OSwgICAg
OTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAg
MCwKKyAgICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICA5MCwgICAgMzEsICAgIDkxLAorICAgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0
LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgNzYsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICA5
NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDEsCi0gICAgICAgMiwgICAgIDMsICAgICA0LCAg
ICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEyOSwKLSAgICAgMTMw
LCAgIDEzMSwgICAgIDAsICAgMTMyLCAgIDEzMywgICAxMzQsICAgMTM1LCAgICAxMSwgICAgMTIs
ICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwg
ICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICA4
NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDky
LAotICAgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LAotICAg
ICAgOTYsICAgICAwLCAgICA5NywgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAg
ICAgNiwgICAgIDcsCi0gICAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAxMSwgICAgMTIsICAg
IDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAs
ICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsCi0gICAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAz
MSwgICAgODgsICAgIDg5LCAgICA5MCwKLSAgICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAg
ICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDc5LCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwgICAg
OTksICAgICAxLCAgICAgMiwKKyAgICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywg
ICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEsICAgMTMyLAorICAgICAxMzMsICAgICAwLCAgIDEz
NCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAg
ICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAg
ICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAorICAgICAgOTAsICAgIDMxLCAgICA5MSwgICAg
OTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2
LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5OCwgICAgIDAsCisgICAgICA5OSwgICAgIDEs
ICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwK
KyAgICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDExLAorICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAg
ICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsCisgICAgICAyMiwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywKKyAgICAg
IDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAg
IDAsICAgICAwLAorICAgICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwKKyAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
MTQxLAorICAgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgIDYwLCAgICAgMiwgICAgIDMs
ICAgICA0LCAgICAgMCwgICAgIDYsCisgICAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAor
ICAgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIz
LCAgICAyNCwgICAgMjUsCisgICAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAg
IDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5MiwKKyAgICAgIDkzLCAgICAgMCwgICAgIDAs
ICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1
LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAxMSwgICAgMTIsICAgIDEzLAorICAgICAgIDAsICAg
ICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAg
IDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwg
ICAgMTEsICAgIDEyLCAgICAxMywKICAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAogICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksCi0g
ICAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAs
ICAgICAwLCAgICA5MiwKLSAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsCi0gICAgICAg
MCwgICAxNjEsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICA5NSwKLSAgICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAg
IDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAotICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
ICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAyNSwgICAg
MjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4
OCwKLSAgICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDky
LCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsCiAgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDgsICAgICA5LAotICAgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjA2LCAgICA5
NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgMTEsCi0gICAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwKLSAgICAgIDIy
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAs
ICAgIDI3LAotICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAg
ODksICAgIDkwLCAgICA5MSwgICAgIDAsCi0gICAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAw
LAorICAgICAxNjMsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NywgICAgOTgsCisgICAgICAgMCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LAorICAg
ICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAg
ICA5MSwgICAgOTIsCisgICAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgOTQs
ICAgICAwLCAgICAgMCwgICAyMjIsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwg
ICAgIDAsCi0gICAgICAgMCwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwKLSAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAw
LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcs
Ci0gICAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAg
OTIsICAgIDkzLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDIw
OCwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsCisgICAg
ICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAg
IDIyLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYs
ICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LAorICAgICAgMzAsICAgIDkwLCAgICAzMSwgICAg
OTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsCiAgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0
LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDk1LCAgICA5NiwgICAgIDAsCi0gICAgICA5NywgICAgMTEs
ICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwK
LSAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgMjUsICAgMTc1LAotICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsCi0gICAgICA5MSwgICAgIDAsICAgICAw
LCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwgICAg
IDAsICAgICAwLAorICAgICAyMjQsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsCisgICAgICAgMCwgICAgOTksICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDI1LAorICAgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAs
ICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAg
OTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAot
ICAgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDgsCi0gICAgICAgOSwgICAgMTAsICAgICAwLCAgICA5NSwgICAgOTYsICAg
ICAwLCAgICA5NywgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLAotICAgICAg
MjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAy
NiwgICAgIDAsCi0gICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAg
ICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5
LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAg
MTcsCi0gICAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgIDE5OCwg
ICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAwLAotICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzEsCi0g
ICAgICAgMCwgICAgIDAsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwKLSAgICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjQ3LAotICAgICAgMTEsICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCi0gICAgICAy
MSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAgMCwKLSAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAg
ICAxLCAgICAgMiwgICAgIDMsICAgICA0LAorICAgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCisgICAgICAgMCwgICAg
IDAsICAgICAwLCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAx
MywKKyAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAg
ICAyMSwgICAgMjIsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1
LCAgIDE3NywgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksCisgICAgICAzMCwgICAgOTAsICAg
IDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwKKyAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDk2LCAgICAgMiwgICAgIDMsCisgICAgICAgNCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgIDk3LCAgICA5OCwKKyAgICAgICAw
LCAgICA5OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LAorICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwg
ICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwKKyAgICAgIDMxLCAgICAg
MiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEw
LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAxMSwgICAgMTIsCisgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKKyAgICAgMTk5LCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LAorICAg
ICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA3NCwgICAgIDAsICAgICAw
LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKICAgICAgICA1LCAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwg
ICAgMTYsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDI1MywgICAgMTEsICAgIDEyLCAgICAx
MywgICAgMTQsICAgIDE1LCAgICAxNiwKICAgICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAg
ICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLAogICAgICAgMjQsICAgIDI1
LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEs
Ci0gICAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAg
IDksICAgIDEwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAgICAx
NiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCi0gICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAg
IDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAgMCwgICAgMzEsICAgICA4LCAgICAgOSwgICAgMTAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCi0gICAgICAxNywg
ICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKLSAgICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAyMjksICAgIDMxLAotICAgICAgIDgsICAgICA5LCAgICAxMCwgICAyMzAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMSwgICAgIDIs
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwK
KyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgMTEsICAgIDEyLAorICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCisgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwKKyAgICAg
IDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAg
IDAsICAgICAwLAorICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgMTEsICAgIDEyLCAgICAx
MywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKICAgICAgIDIwLCAg
ICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAg
IDI2LAotICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEK
KyAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAg
OCwgICAgIDksICAgIDEwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsCisgICAgICAxMywgICAgMTQsICAgIDE1
LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKKyAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAg
MjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgIDIzMSwgICAyMzIsICAgICA4LCAgICAgOSwg
ICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKKyAgICAgIDE2LCAg
ICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAg
ICAwLAorICAgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgIDAsCisgICAgICAzMQogfTsKIAorI2RlZmluZSB5eXBhY3RfdmFs
dWVfaXNfZGVmYXVsdChZeXN0YXRlKSBcCisgICghISgoWXlzdGF0ZSkgPT0gKC0yNjEpKSkKKwor
I2RlZmluZSB5eXRhYmxlX3ZhbHVlX2lzX2Vycm9yKFl5dGFibGVfdmFsdWUpIFwKKyAgWVlJRCAo
MCkKKwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWNoZWNrW10gPQogewotICAgICAgIDAs
ICAgIDU1LCAgICA5NCwgICAgODYsICAgIDcwLCAgIDEyNywgICAgNDUsICAgMTUxLCAgIDI3Mywg
ICAgNjAsCi0gICAgICA0MCwgICAgMzYsICAgIDg1LCAgICAgMCwgICAgIDAsICAgMTYwLCAgIDI1
NywgICAgMzcsICAgIDc5LCAgICA4NSwKLSAgICAgIDg0LCAgICA4MiwgICAgODYsICAgMTA2LCAg
ICAgMywgICAgNDUsICAgIDcwLCAgIDI1MywgICAyOTMsICAgICA4LAotICAgICAgIDksICAgMjcy
LCAgICA1NywgICAgNjMsICAgIDU1LCAgICA1NiwgICAgNzksICAgIDc2LCAgICA0MiwgICAgODIs
Ci0gICAgICA0MCwgICAgODUsICAgIDQyLCAgIDEzNSwgICAgOTUsICAgIDc1LCAgICA0NiwgICAg
NTEsICAgIDkyLCAgICA5MywKLSAgICAgIDc5LCAgICA1MSwgICAgODIsICAgIDgyLCAgICAzMywg
ICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDQ2LAotICAgICAgNDYsICAgIDc0LCAgIDI4
OCwgICAgNjMsICAgIDgyLCAgIDEwOSwgICAyOTIsICAgIDczLCAgICA4MSwgICAgOTAsCi0gICAg
ICA5MSwgICAgNzMsICAgMTk0LCAgICA3OSwgICAgIDMsICAgIDc1LCAgICA3NiwgICAxNjAsICAg
MTcwLCAgICAgOCwKLSAgICAgICA5LCAgICA3MiwgICAgODIsICAgIDc0LCAgICA3OSwgICAgNzks
ICAgMTU5LCAgICA4MiwgICAgNTMsICAgIDU0LAotICAgICAgODEsICAgMTc0LCAgICA3MywgICAx
NTksICAgIDczLCAgIDEyNSwgICAgNDUsICAgMTI3LCAgICA3OSwgICAgNzQsCi0gICAgIDE5Miwg
ICAgNjIsICAgIDYzLCAgICA2NCwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAg
ICA3NCwKLSAgICAgIDcxLCAgICA3MywgICAyMDQsICAgIDc4LCAgIDI1OCwgICAxNTksICAgIDcz
LCAgICA3OSwgICAgNzYsICAgIDcyLAotICAgICAgODEsICAgIDc0LCAgICA3OSwgICAgODcsICAg
IDg4LCAgIDEyNSwgICAgNzYsICAgMTI3LCAgIDE4MywgICAxODQsCi0gICAgIDE4NSwgICAxODYs
ICAgIDM3LCAgIDIxNiwgICAyMTcsICAgMTc5LCAgIDE4MCwgICAxODEsICAgMTgyLCAgIDE4MywK
LSAgICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LCAgIDE4OCwgICAxODksICAgMTkwLCAgIDE5
MSwgICAyMjEsICAgMjk0LAotICAgICAgNDUsICAgMTUxLCAgICAgNCwgICAgIDUsICAgICA2LCAg
IDIyMSwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgNTcsCi0gICAgICA1OCwgICAgNzksICAgIDgw
LCAgICA4MiwgICAxOTQsICAgMjU3LCAgIDE4MSwgICAxODIsICAgMTg3LCAgIDE4OCwKLSAgICAg
IDQ1LCAgICA3MiwgICAgNTksICAgIDczLCAgICA0NSwgICAyNDgsICAgIDcyLCAgIDIyMSwgICAg
NjEsICAgIDgyLAotICAgICAyNzIsICAgMjY0LCAgIDI0OCwgICAgNzUsICAgIDcyLCAgICA4Miwg
ICAgNzIsICAgIDcyLCAgICA4MiwgICAyODEsCi0gICAgICA3OSwgICAgNzIsICAgIDc0LCAgICA3
NywgICAxOTQsICAgIDc1LCAgICA3NCwgICAgNzYsICAgMjUyLCAgIDI5MSwKLSAgICAgICAzLCAg
ICAgNCwgICAgIDUsICAgICA2LCAgIDI0OCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAg
IDEyLAotICAgICAyMTAsICAgMjk0LCAgICA3NSwgICAgNzUsICAgIDcyLCAgICA0MCwgICAgNzUs
ICAgIDcyLCAgICAyMSwgICAgMjIsCi0gICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKLSAgICAgIDc1LCAgICA0NSwg
ICAgNzMsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA3NywgICAgNDEsICAgIDQyLAot
ICAgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUw
LCAgICA4MiwgICAgNzMsCi0gICAgICA1MywgICAgNTQsICAgIDE2LCAgIDI1MywgICAyNTQsICAg
IDgxLCAgIDE3MSwgICAyNTcsICAgMjU4LCAgICA4MiwKLSAgICAgMTkwLCAgIDE4OSwgICAgODIs
ICAgIDU3LCAgIDE5MSwgICAgNjQsICAgIDgyLCAgICAgNSwgICAxMjUsICAgIDcyLAotICAgICAy
NTQsICAgMjQ5LCAgIDI3MiwgICAyMTAsICAgMjU0LCAgIDI5MiwgICAyNzIsICAgIDQ2LCAgICAt
MSwgICAgLTEsCi0gICAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgMjg4LCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAyOTIsICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LAotICAgICAgMTAsICAg
IDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAgICAxOCwgICAg
MTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LAotICAgICAgNDAsICAgIDQxLCAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksCi0g
ICAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKKyAgICAgICAwLCAgICAyNSwgICAgODksICAgIDg4LCAgICA5NiwgICAg
NTcsICAgMTYyLCAgICA3MywgICAxNTMsICAgMTI4LAorICAgICAgNDAsICAgICAwLCAgICAgMCwg
ICAyNTYsICAgIDU5LCAgICAzOSwgICAyNzYsICAgIDM3LCAgICA1NCwgICAgNTUsCisgICAgICA4
MSwgICAxMDgsICAgIDg4LCAgICA3MywgICAgNDIsICAgIDQ1LCAgICA0NSwgICAgNDYsICAgIDcy
LCAgIDI2MCwKKyAgICAgIDgwLCAgICA3MiwgICAgNzIsICAgIDUxLCAgICA3OCwgICAgNjUsICAg
Mjk2LCAgICA3OCwgICAgNTIsICAgIDUzLAorICAgICAgNDAsICAgIDM2LCAgICA0MiwgICAgNjcs
ICAgMjc1LCAgIDEzNywgICAgNDYsICAgIDc3LCAgIDI5MSwgICAgOTQsCisgICAgICA3OCwgICAg
NTEsICAgMjk1LCAgICA4OSwgICAgOTAsICAgIDg1LCAgICA3NSwgICAgNDYsICAgIDQ2LCAgICA3
MywKKyAgICAgIDg0LCAgICA3MywgICAgNzMsICAgIDc3LCAgICA1OSwgICAgNjUsICAgIDcyLCAg
ICA3MiwgICAgODAsICAgIDQ1LAorICAgICAgNDYsICAgIDc4LCAgICA3OCwgICAgNzgsICAgIDgx
LCAgIDE2MiwgICAxNjEsICAgIDc3LCAgICAgMywgICAgNzksCisgICAgIDE3MiwgICAgNzUsICAg
MjAxLCAgICAgOCwgICAgIDksICAgIDg1LCAgICA4MywgICAgNzgsICAgIDg1LCAgIDE3NiwKKyAg
ICAgIDgxLCAgICAgMywgICAgMzMsICAgIDM0LCAgICAzNSwgICAxNjEsICAgICA4LCAgICAgOSwg
ICAxMjgsICAgIDM3LAorICAgICAxMzAsICAgIDc4LCAgIDE5NCwgICAgNzgsICAgIDgxLCAgICA3
MywgICAgODEsICAgIDcxLCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYsICAgIDM3LCAg
ICA3MSwgICAyMDYsICAgIDczLCAgIDI2MSwgICAgIDQsICAgICA1LCAgICAgNiwKKyAgICAgIDg4
LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDk0LCAgICA5NSwgICAxMjgs
ICAgIDc1LAorICAgICAxMzAsICAgMjE4LCAgIDIxOSwgICAgNjEsICAgIDYyLCAgICA2MywgICAg
NDUsICAgIDQ2LCAgIDIyMywgICAgODYsCisgICAgICA4NywgICAyOTcsICAgIDcwLCAgIDExMSwg
ICAgODEsICAgIDU2LCAgICA1NywgICAgNzIsICAgIDcxLCAgIDE3MywKKyAgICAgMTgzLCAgIDE4
NCwgICAgODAsICAgMTUzLCAgICA3OCwgICAgNzksICAgIDcyLCAgIDIyMywgICAxODUsICAgMTg2
LAorICAgICAxODcsICAgMTg4LCAgICA1OCwgICAxODksICAgMTkwLCAgIDI1MCwgICAgNzEsICAg
IDYwLCAgIDI2MCwgICAgNzEsCisgICAgICA3NCwgICAyMDEsICAgIDcxLCAgICA4MSwgICAgODEs
ICAgIDgxLCAgICA3MSwgICAgNzQsICAgIDc2LCAgICA3MywKKyAgICAgMjY3LCAgICA3MSwgICAg
NzMsICAgMjc1LCAgIDI1MCwgICAgNDAsICAgIDc1LCAgICA3MSwgICAgNzQsICAgIDc0LAorICAg
ICAgNzgsICAgIDc0LCAgIDI4NCwgICAxNjEsICAgIDc0LCAgICA3MSwgICAgMTYsICAgIDcyLCAg
ICA3NiwgICAgODEsCisgICAgICA3MiwgICAyMDEsICAgMjk0LCAgIDI1NSwgICAgODEsICAgMTkx
LCAgICA4MCwgICAxNzMsICAgMTkyLCAgICA1OSwKKyAgICAgMjk3LCAgIDE5MywgICAyMTIsICAg
MTgxLCAgIDE4MiwgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LAorICAgICAxODgs
ICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTkyLCAgIDE5MywgICAgODUsICAgIDY2LCAgICA4NSwg
ICAgIDUsCisgICAgIDEzMCwgICAyOTUsICAgMjU3LCAgIDIxMiwgICAyNTEsICAgMjU3LCAgIDI3
NSwgICAgNDYsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0x
LCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIDc3LCAgICAtMSwgICAgLTEs
Ci0gICAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAg
IDMsICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgLTEsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsCi0gICAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAg
IC0xLCAgICAtMSwKLSAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEs
ICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAotICAgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsCisgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAyNzgsICAgMjIzLCAgIDI1NiwgICAyNTcsICAgIC0xLCAg
ICAtMSwKKyAgICAgMjYwLCAgIDI2MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgIDI3NSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEs
ICAgMjUwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
KyAgICAgIC0xLCAgIDI5MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyOTUsICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LAorICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsCisgICAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKKyAgICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDM2LAorICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0Miwg
ICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCisgICAgICA0NywgICAgNDgsICAgIDQ5LCAgICAt
MSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3NiwgICAgNzcsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwKLSAgICAgIDg2LCAgICAgMywg
ICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLAot
ICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLAotICAgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1
MCwgICAgLTEsCi0gICAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgIDc2LAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAg
IDMsCisgICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAorICAgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCisg
ICAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEs
ICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0x
LCAgICAtMSwKKyAgICAgIC0xLCAgICA3NSwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA4MSwgICAgODIsICAgIDgzLAorICAgICAgLTEsICAgIDg1LCAgICAgMywgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCisgICAgICAxMSwgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwKKyAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLAorICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCisgICAgICA0MSwgICAgNDIsICAg
IDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwKKyAg
ICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3MiwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDgy
LCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LAorICAgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc1LCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwg
ICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKICAgICAgICA4LCAgICAg
OSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3
LAogICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsCiAgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywKICAgICAgIDM4LCAgICAzOSwgICAg
NDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAotICAg
ICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUz
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3Niwg
ICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAgICA4
NCwgICAgLTEsICAgIDg2LCAgICAgMywKLSAgICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAg
ICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1
LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMs
Ci0gICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
MzEsICAgIDMyLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwg
ICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLAotICAgICAgNDQsICAgIDQ1LCAgICA0
NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsCi0gICAg
ICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsCi0gICAgICA4NCwg
ICAgLTEsICAgIDg2LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAg
ICAgOSwKLSAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsICAg
IDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgMzEs
ICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwK
LSAgICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LAotICAgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgIC0xLCAgICAtMSwKKyAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAg
IDMsICAgICA0LAorICAgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgLTEsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwKKyAgICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAg
IC0xLAorICAgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEs
ICAgIDQyLCAgICA0MywgICAgNDQsCisgICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAor
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0x
LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwKKyAgICAgIDg1LCAgICAgMywgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLAorICAgICAg
MTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMjEsCisgICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKKyAgICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLAorICAgICAgNDIsICAg
IDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAg
LTEsCisgICAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLAorICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEsCisg
ICAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgIC0xLCAgICAgOCwKKyAgICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAyMSwg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsCisgICAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3
LCAgICAzOCwKKyAgICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAorICAgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIs
ICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwKLSAgICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAg
ICAxMSwgICAgMTIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0
LCAgICAtMSwgICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsCisgICAgICAtMSwgICAgLTEsICAg
IDcxLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKKyAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAyMSwg
ICAgMjIsICAgIDIzLAogICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0
LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEs
ICAgIDUzLAotICAgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwKLSAgICAgIC0xLCAgICA3
NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgz
LAotICAgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDM4LCAgICAzOSwgICAg
LTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAotICAg
ICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5
LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwg
ICAgMTEsCi0gICAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAgICA4
NCwgICAgLTEsICAgIDg2LCAgICAyMSwKLSAgICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLAotICAgICAgMzIsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEs
Ci0gICAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLCAgICAtMSwKLSAgICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsCisgICAg
ICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAzMSwgICAg
MzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsCisgICAgICAzOSwg
ICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3MiwgICAgLTEs
ICAgIC0xLCAgICA3NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwK
LSAgICAgIC0xLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LAotICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDM4
LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKLSAgICAg
IDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAg
NTQsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4
MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0LCAg
ICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAg
IC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEs
ICAgIDQxLCAgICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAg
NDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKICAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0x
LCAgICAtMSwgICAgLTEsCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgODMsICAgIDg0LCAgICAtMSwKLSAgICAgIDg2LCAgICAyMSwgICAgMjIs
ICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAotICAgICAg
MzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAz
OCwgICAgMzksCi0gICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAg
ICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwKLSAgICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUz
LCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAg
LTEsCisgICAgICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAg
ICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsCisg
ICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYs
ICAgIDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAt
MSwgICAgLTEsICAgIDcyLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAxMCwKLSAgICAgIDExLCAgICAxMiwgICAgLTEsICAgIDgzLCAgICA4NCwgICAgLTEsICAg
IDg2LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAg
MzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAt
MSwKLSAgICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgICA0LCAg
ICAgNSwgICAgIDYsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEy
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywKLSAg
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIDc3LCAgICAtMSwg
ICAgLTEsICAgIC0xLAotICAgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0
MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMCwKLSAgICAgIC0x
LCAgICAtMSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDks
ICAgIDEwLAotICAgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgNzcsCi0gICAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwg
ICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKLSAgICAgIDMxLCAgICAz
MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIC0x
LAotICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgIDMsICAg
ICA0LCAgICAgNSwgICAgIDYsCisgICAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAyMSwgICAgMjIsICAgIDIzLAorICAg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5
LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAorICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgNzEsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgODIsICAgIDgzLAorICAgICAgLTEsICAgIDg1
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUs
CisgICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwg
ICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLAorICAgICAgNDYsICAgICA0LCAgICAg
NSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAgMTIsCisgICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgNzYsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsCisgICAgICA0Mywg
ICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAwLCAgICAtMSwgICAgLTEsICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LAogICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAg
IDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwK
KyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LAogICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsCiAgICAgICAzNywgICAgMzgsICAgIDM5
LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwKLSAgICAg
ICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAg
MTIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKLSAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAg
IDQzLAotICAgICAgNDQsICAgIC0xLCAgICA0NiwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0
LCAgICA0NSwgICAgNDYsCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICA1MCwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgICAzLCAgICAgNCwgICAgIDUs
ICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAy
MSwgICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2
LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAgICAgNDMsICAg
IDQ0LCAgICAtMSwgICAgNDYsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAogICAgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksCi0g
ICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NgorICAgICAg
LTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgIDEwLCAgICAx
MSwgICAgMTIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAg
NDIsCisgICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgMTAsICAgIDExLCAgICAxMiwg
ICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCisg
ICAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMs
ICAgIDQ0LCAgICAtMSwKKyAgICAgIDQ2CiB9OwogCiAvKiBZWVNUT1NbU1RBVEUtTlVNXSAtLSBU
aGUgKGludGVybmFsIG51bWJlciBvZiB0aGUpIGFjY2Vzc2luZwpAQCAtMTMwOCwzMiArMTI5MSwz
MiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KICAgICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MSwgICAgNDIsICAgIDQz
LAogICAgICAgNDQsICAgIDQ2LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOSwgICAxMzAsICAg
MTM1LCAgIDEzNiwgICAxMzcsCiAgICAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MSwgICAxNDIs
ICAgMTQzLCAgIDE3NSwgICAxNzYsICAgMTc3LCAgICAzNywKLSAgICAgIDQ1LCAgIDE0MCwgICAg
NDUsICAgIDc2LCAgICA4MiwgICAxNzgsICAgIDczLCAgICA3OSwgICAgIDMsICAgIDMzLAotICAg
ICAgMzQsICAgIDM1LCAgIDEzMiwgICAxMzMsICAgMTM4LCAgICA3OSwgICAgODIsICAgIDQ1LCAg
IDEzOSwgICAxNDEsCi0gICAgICA3NCwgICAgIDAsICAgMTc2LCAgIDE0MSwgICAgNzYsICAgMTQ1
LCAgICA3NiwgICAxNjEsICAgMTMyLCAgIDEzMSwKLSAgICAgMTM0LCAgIDEzOSwgICAxMzMsICAg
IDQ1LCAgICA3MiwgICAgNzQsICAgIDgxLCAgICA0NSwgICAgNDcsICAgIDQ4LAotICAgICAgNDks
ICAgIDUwLCAgICA1MywgICAgNTQsICAgIDcyLCAgICA4MywgICAgODQsICAgIDg2LCAgICA5Nywg
ICAgOTgsCi0gICAgICA5OSwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEw
NiwgICAxMDcsICAgMTA4LCAgIDEwOSwKLSAgICAgMTEwLCAgIDExMSwgICAxMTIsICAgMTEzLCAg
IDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE5LAotICAgICAxMjAsICAgMTIx
LCAgIDEyNSwgICAxNDIsICAgIDgyLCAgIDE0NCwgICAxMzksICAgMTQ2LCAgIDE0NywgICAgMTMs
Ci0gICAgICAxNCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICA0MCwgICAg
NzYsICAgIDc3LCAgICA4MiwKLSAgICAgMTA4LCAgIDEyMSwgICAxMjIsICAgMTI0LCAgIDEyNiwg
ICAxMjcsICAgMTQyLCAgIDE1MSwgICAxNTIsICAgMTUzLAotICAgICAxNTQsICAgMTYyLCAgIDE2
MywgICAxNjQsICAgMTY3LCAgIDE3NCwgICAgNDUsICAgMTMxLCAgIDEzNCwgICAgNzQsCi0gICAg
ICA4MSwgICAgNzUsICAgMTI1LCAgIDEyMiwgICAxNTAsICAgMTA4LCAgIDEwOCwgICAxMjQsICAg
IDUzLCAgICA1NCwKLSAgICAgIDc0LCAgICA3OCwgICAgNzMsICAgIDczLCAgICA3OSwgICAgMzks
ICAgMTIyLCAgICA3MiwgICAxMDgsICAgIDg3LAotICAgICAgODgsICAgIDg0LCAgICA4NiwgICAg
NTUsICAgIDU2LCAgICA5MCwgICAgOTEsICAgIDU3LCAgICA1OCwgICAgNTksCi0gICAgICA2MSwg
ICAgNjAsICAgIDk1LCAgICA3NSwgICAxNDYsICAgIDQ1LCAgIDE0OCwgICAxNDksICAgIDc3LCAg
IDE0NywKLSAgICAgIDgyLCAgICA4MiwgICAxNjksICAgIDcyLCAgICA3MiwgICAgODIsICAgIDgy
LCAgIDEyNCwgICAgNzIsICAgIDc3LAotICAgICAxNTUsICAgIDYyLCAgICA2MywgICAgNjQsICAg
IDcxLCAgICA4MSwgICAxMjMsICAgIDc5LCAgICA4MiwgICAgNzcsCi0gICAgIDE1MiwgICAgNzQs
ICAgIDc1LCAgIDEyNSwgICAxNTAsICAgIDc1LCAgICA3MywgICAxMDAsICAgMTI0LCAgICA0NSwK
LSAgICAgIDUwLCAgIDEwMywgICAxMjIsICAgMTA4LCAgIDEwOCwgICAxMTAsICAgMTEwLCAgIDEx
MiwgICAxMTIsICAgMTEyLAotICAgICAxMTIsICAgMTEzLCAgIDExMywgICAxMTcsICAgMTE4LCAg
IDExOSwgICAxMjQsICAgIDc3LCAgICA3NCwgICAgNzksCi0gICAgICA4MiwgICAxNTgsICAgMTU5
LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4MiwgICAxNjgsICAgMTYyLCAgIDEyMiwKLSAgICAg
MTIyLCAgIDEyNSwgICAgNzUsICAgIDc1LCAgICA4MCwgICAxMjUsICAgMTQ5LCAgICA0MCwgICAx
NjEsICAgMTUzLAotICAgICAxNTEsICAgMTYzLCAgIDE3MSwgICAgNzMsICAgMTI0LCAgIDEzNywg
ICAxNjYsICAgMTU2LCAgICA3NSwgICAxMjIsCi0gICAgICA3NSwgICAgNzIsICAgMTY2LCAgIDE3
MiwgICAxNzMsICAgMTU4LCAgIDE2NSwgICAgNDUsICAgIDczLCAgICA3NywKLSAgICAgMTI0LCAg
ICA4MiwgICAgNzMsICAgIDE2LCAgICA4MSwgICAxNTMsICAgMTU3LCAgIDE2MSwgICAgNzMsICAg
MTI0LAotICAgICAxNTcsICAgMTU4LCAgIDE1MCwgICAgODIKKyAgICAgIDQ1LCAgIDE0MCwgICAg
NDUsICAgIDQ2LCAgICA3NSwgICAgOTYsICAgIDgxLCAgIDE3OCwgICAgNzIsICAgIDc4LAorICAg
ICAgIDMsICAgIDMzLCAgICAzNCwgICAgMzUsICAgMTMyLCAgIDEzMywgICAxMzgsICAgIDc4LCAg
ICA4MSwgICAgNDUsCisgICAgICA5NiwgICAxMzksICAgMTQxLCAgICA3MywgICAgIDAsICAgMTc2
LCAgIDE0MSwgICAxNDUsICAgIDc1LCAgICA3NSwKKyAgICAgMTYxLCAgIDEzMiwgICAxMzEsICAg
MTM0LCAgIDEzOSwgICAxMzMsICAgIDk2LCAgICA3MSwgICAgNzMsICAgIDgwLAorICAgICAgNDUs
ICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUyLCAgICA1MywgICAgNzEsICAgIDgyLCAgICA4Mywg
ICAgODUsCisgICAgICA5NywgICAgOTgsICAgIDk5LCAgIDEwMSwgICAxMDIsICAgMTAzLCAgIDEw
NCwgICAxMDUsICAgMTA2LCAgIDEwNywKKyAgICAgMTA4LCAgIDEwOSwgICAxMTAsICAgMTExLCAg
IDExMiwgICAxMTMsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LAorICAgICAxMTgsICAgMTE5
LCAgIDEyMCwgICAxMjEsICAgMTI1LCAgIDE0MiwgICAgODEsICAgMTM5LCAgIDE0NiwgICAxNDcs
CisgICAgIDE0NCwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDQwLCAgICA3NSwKKyAgICAgIDc2LCAgICA4MSwgICAxMDgsICAgMTIxLCAgIDEyMiwg
ICAxMjQsICAgMTI2LCAgIDEyNywgICAxNDIsICAgMTUxLAorICAgICAxNTIsICAgMTUzLCAgIDE1
NCwgICAxNjIsICAgMTYzLCAgIDE2NCwgICAxNjcsICAgMTc0LCAgICA5NiwgICAxMzEsCisgICAg
IDEzNCwgICAgNzMsICAgIDgwLCAgICA3NCwgICAxMjUsICAgMTIyLCAgIDE1MCwgICAxMDgsICAg
MTA4LCAgIDEyNCwKKyAgICAgIDUyLCAgICA1MywgICAgNzMsICAgIDc3LCAgICA3MiwgICAgNzIs
ICAgIDc4LCAgICAzOSwgICAxMjIsICAgIDcxLAorICAgICAxMDgsICAgIDg2LCAgICA4NywgICAg
ODMsICAgIDg1LCAgICA1NCwgICAgNTUsICAgIDg5LCAgICA5MCwgICAgNTYsCisgICAgICA1Nywg
ICAgNTgsICAgIDYwLCAgICA1OSwgICAgOTQsICAgIDc0LCAgICA5NiwgICAxNDgsICAgMTQ5LCAg
ICA3NiwKKyAgICAgMTQ3LCAgIDE0NiwgICAgODEsICAgIDgxLCAgIDE2OSwgICAgNzEsICAgIDcx
LCAgICA4MSwgICAgODEsICAgMTI0LAorICAgICAgNzEsICAgIDc2LCAgIDE1NSwgICAgNjEsICAg
IDYyLCAgICA2MywgICAgNzAsICAgIDgwLCAgIDEyMywgICAgNzgsCisgICAgICA4MSwgICAgNzYs
ICAgMTUyLCAgICA3MywgICAgNzQsICAgMTI1LCAgIDE1MCwgICAgNzQsICAgIDcyLCAgIDEwMCwK
KyAgICAgMTI0LCAgICA0NSwgICAgNDYsICAgIDk2LCAgIDEwMywgICAxMjIsICAgMTA4LCAgIDEw
OCwgICAxMTAsICAgMTEwLAorICAgICAxMTIsICAgMTEyLCAgIDExMiwgICAxMTIsICAgMTEzLCAg
IDExMywgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjQsCisgICAgICA3MywgICAgNzgsICAgIDgx
LCAgICA3NiwgICAxNTgsICAgMTU5LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4MSwKKyAgICAg
MTY4LCAgIDE2MiwgICAxMjIsICAgMTIyLCAgIDEyNSwgICAgNzQsICAgIDc0LCAgICA3OSwgICAx
MjUsICAgMTQ5LAorICAgICAgNDAsICAgMTYxLCAgIDE1MywgICAxNTEsICAgMTYzLCAgIDE3MSwg
ICAgNzIsICAgMTI0LCAgIDEzNywgICAxNjYsCisgICAgIDE1NiwgICAgNzQsICAgMTIyLCAgICA3
NCwgICAgNzEsICAgMTY2LCAgIDE3MiwgICAxNzMsICAgMTU4LCAgIDE2NSwKKyAgICAgIDk2LCAg
ICA3MiwgICAgNzYsICAgMTI0LCAgICA4MSwgICAgNzIsICAgIDE2LCAgICA4MCwgICAxNTMsICAg
MTU3LAorICAgICAxNjEsICAgIDcyLCAgIDEyNCwgICAxNTcsICAgMTU4LCAgIDE1MCwgICAgODEK
IH07CiAKICNkZWZpbmUgeXllcnJvawkJKHl5ZXJyc3RhdHVzID0gMCkKQEAgLTEzNDgsMzAgKzEz
MzEsMzkgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXN0b3NbXSA9CiAKIC8qIExpa2Ug
WVlFUlJPUiBleGNlcHQgZG8gY2FsbCB5eWVycm9yLiAgVGhpcyByZW1haW5zIGhlcmUgdGVtcG9y
YXJpbHkKICAgIHRvIGVhc2UgdGhlIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBtZWFuaW5nIG9mIFlZ
RVJST1IsIGZvciBHQ0MuCi0gICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFzIHN1cHBsYW50ZWQgdmVy
c2lvbiAxLCB0aGlzIGNhbiBnby4gICovCisgICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFzIHN1cHBs
YW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNhbiBnby4gIEhvd2V2ZXIsCisgICBZWUZBSUwgYXBwZWFy
cyB0byBiZSBpbiB1c2UuICBOZXZlcnRoZWxlc3MsIGl0IGlzIGZvcm1hbGx5IGRlcHJlY2F0ZWQK
KyAgIGluIEJpc29uIDIuNC4yJ3MgTkVXUyBlbnRyeSwgd2hlcmUgYSBwbGFuIHRvIHBoYXNlIGl0
IG91dCBpcworICAgZGlzY3Vzc2VkLiAgKi8KIAogI2RlZmluZSBZWUZBSUwJCWdvdG8geXllcnJs
YWIKKyNpZiBkZWZpbmVkIFlZRkFJTAorICAvKiBUaGlzIGlzIGhlcmUgdG8gc3VwcHJlc3Mgd2Fy
bmluZ3MgZnJvbSB0aGUgR0NDIGNwcCdzCisgICAgIC1XdW51c2VkLW1hY3Jvcy4gIE5vcm1hbGx5
IHdlIGRvbid0IHdvcnJ5IGFib3V0IHRoYXQgd2FybmluZywgYnV0CisgICAgIHNvbWUgdXNlcnMg
ZG8sIGFuZCB3ZSB3YW50IHRvIG1ha2UgaXQgZWFzeSBmb3IgdXNlcnMgdG8gcmVtb3ZlCisgICAg
IFlZRkFJTCB1c2VzLCB3aGljaCB3aWxsIHByb2R1Y2Ugd2FybmluZ3MgZnJvbSBCaXNvbiAyLjUu
ICAqLworI2VuZGlmCiAKICNkZWZpbmUgWVlSRUNPVkVSSU5HKCkgICghIXl5ZXJyc3RhdHVzKQog
Ci0jZGVmaW5lIFlZQkFDS1VQKFRva2VuLCBWYWx1ZSkJCQkJCVwKLWRvCQkJCQkJCQlcCi0gIGlm
ICh5eWNoYXIgPT0gWVlFTVBUWSAmJiB5eWxlbiA9PSAxKQkJCQlcCi0gICAgewkJCQkJCQkJXAot
ICAgICAgeXljaGFyID0gKFRva2VuKTsJCQkJCQlcCi0gICAgICB5eWx2YWwgPSAoVmFsdWUpOwkJ
CQkJCVwKLSAgICAgIHl5dG9rZW4gPSBZWVRSQU5TTEFURSAoeXljaGFyKTsJCQkJXAotICAgICAg
WVlQT1BTVEFDSyAoMSk7CQkJCQkJXAotICAgICAgZ290byB5eWJhY2t1cDsJCQkJCQlcCi0gICAg
fQkJCQkJCQkJXAotICBlbHNlCQkJCQkJCQlcCi0gICAgewkJCQkJCQkJXAotICAgICAgeXllcnJv
ciAoY29udGV4dCwgWVlfKCJzeW50YXggZXJyb3I6IGNhbm5vdCBiYWNrIHVwIikpOyBcCisjZGVm
aW5lIFlZQkFDS1VQKFRva2VuLCBWYWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgeXljaGFyID0gKFRva2Vu
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHl5bHZh
bCA9IChWYWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICBZWVBPUFNUQUNLICh5eWxlbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgeXlzdGF0ZSA9ICp5eXNzcDsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgIGdvdG8geXliYWNrdXA7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBlbHNlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvcjogY2Fu
bm90IGJhY2sgdXAiKSk7IFwKICAgICAgIFlZRVJST1I7CQkJCQkJCVwKICAgICB9CQkJCQkJCQlc
CiB3aGlsZSAoWVlJRCAoMCkpCiAKLQorLyogRXJyb3IgdG9rZW4gbnVtYmVyICovCiAjZGVmaW5l
IFlZVEVSUk9SCTEKICNkZWZpbmUgWVlFUlJDT0RFCTI1NgogCkBAIC0xMzgwLDI3ICsxMzcyLDI4
IEBAIHdoaWxlIChZWUlEICgwKSkKICAgIElmIE4gaXMgMCwgdGhlbiBzZXQgQ1VSUkVOVCB0byB0
aGUgZW1wdHkgbG9jYXRpb24gd2hpY2ggZW5kcwogICAgdGhlIHByZXZpb3VzIHN5bWJvbDogUkhT
WzBdIChhbHdheXMgZGVmaW5lZCkuICAqLwogCi0jZGVmaW5lIFlZUkhTTE9DKFJocywgSykgKChS
aHMpW0tdKQogI2lmbmRlZiBZWUxMT0NfREVGQVVMVAotIyBkZWZpbmUgWVlMTE9DX0RFRkFVTFQo
Q3VycmVudCwgUmhzLCBOKQkJCQlcCi0gICAgZG8JCQkJCQkJCQlcCi0gICAgICBpZiAoWVlJRCAo
TikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LQl7CQkJCQkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gWVlSSFNMT0MgKFJocywg
MSkuZmlyc3RfbGluZTsJXAotCSAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IFlZUkhTTE9DIChS
aHMsIDEpLmZpcnN0X2NvbHVtbjsJXAotCSAgKEN1cnJlbnQpLmxhc3RfbGluZSAgICA9IFlZUkhT
TE9DIChSaHMsIE4pLmxhc3RfbGluZTsJCVwKLQkgIChDdXJyZW50KS5sYXN0X2NvbHVtbiAgPSBZ
WVJIU0xPQyAoUmhzLCBOKS5sYXN0X2NvbHVtbjsJXAotCX0JCQkJCQkJCVwKLSAgICAgIGVsc2UJ
CQkJCQkJCVwKLQl7CQkJCQkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gKEN1cnJl
bnQpLmxhc3RfbGluZSAgID0JCVwKLQkgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9saW5lOwkJ
CQlcCi0JICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0gKEN1cnJlbnQpLmxhc3RfY29sdW1uID0J
CVwKLQkgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9jb2x1bW47CQkJCVwKLQl9CQkJCQkJCQlc
CisjIGRlZmluZSBZWUxMT0NfREVGQVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBpZiAoWVlJRCAoTikp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgICA9IFlZUkhT
TE9DIChSaHMsIDEpLmZpcnN0X2xpbmU7ICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZp
cnN0X2NvbHVtbiA9IFlZUkhTTE9DIChSaHMsIDEpLmZpcnN0X2NvbHVtbjsgICAgICBcCisgICAg
ICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSAgICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfbGlu
ZTsgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmxhc3RfY29sdW1uICA9IFlZUkhTTE9D
IChSaHMsIE4pLmxhc3RfY29sdW1uOyAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBl
bHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xp
bmUgICA9IChDdXJyZW50KS5sYXN0X2xpbmUgICA9ICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBZWVJIU0xPQyAoUmhzLCAwKS5sYXN0X2xpbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IChDdXJyZW50KS5sYXN0
X2NvbHVtbiA9ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBZWVJIU0xPQyAoUmhzLCAwKS5s
YXN0X2NvbHVtbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgd2hpbGUgKFlZSUQgKDApKQogI2VuZGlmCiAKKyNkZWZpbmUgWVlSSFNMT0MoUmhz
LCBLKSAoKFJocylbS10pCisKIAogLyogWVlfTE9DQVRJT05fUFJJTlQgLS0gUHJpbnQgdGhlIGxv
Y2F0aW9uIG9uIHRoZSBzdHJlYW0uCiAgICBUaGlzIG1hY3JvIHdhcyBub3QgbWFuZGF0ZWQgb3Jp
Z2luYWxseTogZGVmaW5lIG9ubHkgaWYgd2Uga25vdwpAQCAtMTQwOCwxMCArMTQwMSw0NiBAQCB3
aGlsZSAoWVlJRCAoMCkpCiAKICNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKICMgaWYgZGVmaW5l
ZCBZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFMCi0jICBkZWZpbmUgWVlf
TE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKQkJCVwKLSAgICAgZnByaW50ZiAoRmlsZSwgIiVkLiVk
LSVkLiVkIiwJCQlcCi0JICAgICAgKExvYykuZmlyc3RfbGluZSwgKExvYykuZmlyc3RfY29sdW1u
LAlcCi0JICAgICAgKExvYykubGFzdF9saW5lLCAgKExvYykubGFzdF9jb2x1bW4pCisKKy8qIFBy
aW50ICpZWUxPQ1Agb24gWVlPLiAgUHJpdmF0ZSwgZG8gbm90IHJlbHkgb24gaXRzIGV4aXN0ZW5j
ZS4gKi8KKworX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpCisjaWYgKGRlZmluZWQgX19TVERD
X18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1
cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorc3RhdGljIHVuc2lnbmVkCit5eV9sb2NhdGlvbl9wcmlu
dF8gKEZJTEUgKnl5bywgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jcCkKKyNlbHNlCitzdGF0
aWMgdW5zaWduZWQKK3l5X2xvY2F0aW9uX3ByaW50XyAoeXlvLCB5eWxvY3ApCisgICAgRklMRSAq
eXlvOworICAgIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY3A7CisjZW5kaWYKK3sKKyAgdW5z
aWduZWQgcmVzID0gMDsKKyAgaW50IGVuZF9jb2wgPSAwICE9IHl5bG9jcC0+bGFzdF9jb2x1bW4g
PyB5eWxvY3AtPmxhc3RfY29sdW1uIC0gMSA6IDA7CisgIGlmICgwIDw9IHl5bG9jcC0+Zmlyc3Rf
bGluZSkKKyAgICB7CisgICAgICByZXMgKz0gZnByaW50ZiAoeXlvLCAiJWQiLCB5eWxvY3AtPmZp
cnN0X2xpbmUpOworICAgICAgaWYgKDAgPD0geXlsb2NwLT5maXJzdF9jb2x1bW4pCisgICAgICAg
IHJlcyArPSBmcHJpbnRmICh5eW8sICIuJWQiLCB5eWxvY3AtPmZpcnN0X2NvbHVtbik7CisgICAg
fQorICBpZiAoMCA8PSB5eWxvY3AtPmxhc3RfbGluZSkKKyAgICB7CisgICAgICBpZiAoeXlsb2Nw
LT5maXJzdF9saW5lIDwgeXlsb2NwLT5sYXN0X2xpbmUpCisgICAgICAgIHsKKyAgICAgICAgICBy
ZXMgKz0gZnByaW50ZiAoeXlvLCAiLSVkIiwgeXlsb2NwLT5sYXN0X2xpbmUpOworICAgICAgICAg
IGlmICgwIDw9IGVuZF9jb2wpCisgICAgICAgICAgICByZXMgKz0gZnByaW50ZiAoeXlvLCAiLiVk
IiwgZW5kX2NvbCk7CisgICAgICAgIH0KKyAgICAgIGVsc2UgaWYgKDAgPD0gZW5kX2NvbCAmJiB5
eWxvY3AtPmZpcnN0X2NvbHVtbiA8IGVuZF9jb2wpCisgICAgICAgIHJlcyArPSBmcHJpbnRmICh5
eW8sICItJWQiLCBlbmRfY29sKTsKKyAgICB9CisgIHJldHVybiByZXM7CisgfQorCisjICBkZWZp
bmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKSAgICAgICAgICBcCisgIHl5X2xvY2F0aW9u
X3ByaW50XyAoRmlsZSwgJihMb2MpKQorCiAjIGVsc2UKICMgIGRlZmluZSBZWV9MT0NBVElPTl9Q
UklOVChGaWxlLCBMb2MpICgodm9pZCkgMCkKICMgZW5kaWYKQEAgLTE0MTksMTEgKzE0NDgsMTAg
QEAgd2hpbGUgKFlZSUQgKDApKQogCiAKIC8qIFlZTEVYIC0tIGNhbGxpbmcgYHl5bGV4JyB3aXRo
IHRoZSByaWdodCBhcmd1bWVudHMuICAqLwotCiAjaWZkZWYgWVlMRVhfUEFSQU0KLSMgZGVmaW5l
IFlZTEVYIHl5bGV4ICgmeXlsdmFsLCBZWUxFWF9QQVJBTSkKKyMgZGVmaW5lIFlZTEVYIHl5bGV4
ICgmeXlsdmFsLCAmeXlsbG9jLCBZWUxFWF9QQVJBTSkKICNlbHNlCi0jIGRlZmluZSBZWUxFWCB5
eWxleCAoJnl5bHZhbCkKKyMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsLCAmeXlsbG9jKQog
I2VuZGlmCiAKIC8qIEVuYWJsZSBkZWJ1Z2dpbmcgaWYgcmVxdWVzdGVkLiAgKi8KQEAgLTE0NDYs
NyArMTQ3NCw3IEBAIGRvIHsJCQkJCQkJCQkgIFwKICAgICB7CQkJCQkJCQkJICBcCiAgICAgICBZ
WUZQUklOVEYgKHN0ZGVyciwgIiVzICIsIFRpdGxlKTsJCQkJCSAgXAogICAgICAgeXlfc3ltYm9s
X3ByaW50IChzdGRlcnIsCQkJCQkJICBcCi0JCSAgVHlwZSwgVmFsdWUsIGNvbnRleHQpOyBcCisJ
CSAgVHlwZSwgVmFsdWUsIExvY2F0aW9uLCBjb250ZXh0KTsgXAogICAgICAgWVlGUFJJTlRGIChz
dGRlcnIsICJcbiIpOwkJCQkJCSAgXAogICAgIH0JCQkJCQkJCQkgIFwKIH0gd2hpbGUgKFlZSUQg
KDApKQpAQCAtMTQ2MCwxOCArMTQ4OCwyMiBAQCBkbyB7CQkJCQkJCQkJICBcCiAjaWYgKGRlZmlu
ZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBf
X2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKLXl5X3N5bWJvbF92
YWx1ZV9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBj
b25zdCB5eXZhbHVlcCwgVFBhcnNlQ29udGV4dCogY29udGV4dCkKK3l5X3N5bWJvbF92YWx1ZV9w
cmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5
eXZhbHVlcCwgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25wLCBUUGFyc2VDb250ZXh0
KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5
b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBjb250ZXh0KQoreXlfc3ltYm9sX3ZhbHVlX3ByaW50
ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpCiAgICAg
RklMRSAqeXlvdXRwdXQ7CiAgICAgaW50IHl5dHlwZTsKICAgICBZWVNUWVBFIGNvbnN0ICogY29u
c3QgeXl2YWx1ZXA7CisgICAgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25wOwogICAg
IFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsKKyAgRklMRSAqeXlvID0geXlvdXRw
dXQ7CisgIFlZVVNFICh5eW8pOwogICBpZiAoIXl5dmFsdWVwKQogICAgIHJldHVybjsKKyAgWVlV
U0UgKHl5bG9jYXRpb25wKTsKICAgWVlVU0UgKGNvbnRleHQpOwogIyBpZmRlZiBZWVBSSU5UCiAg
IGlmICh5eXR5cGUgPCBZWU5UT0tFTlMpCkBAIC0xNDgyLDcgKzE1MTQsNyBAQCB5eV9zeW1ib2xf
dmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsCiAgIHN3aXRjaCAoeXl0eXBlKQogICAgIHsK
ICAgICAgIGRlZmF1bHQ6Ci0JYnJlYWs7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAt
MTQ5NCwxMyArMTUyNiwxNCBAQCB5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5
cGUsCiAjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAg
ICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIHZv
aWQKLXl5X3N5bWJvbF9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUg
Y29uc3QgKiBjb25zdCB5eXZhbHVlcCwgVFBhcnNlQ29udGV4dCogY29udGV4dCkKK3l5X3N5bWJv
bF9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25z
dCB5eXZhbHVlcCwgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25wLCBUUGFyc2VDb250
ZXh0KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zeW1ib2xfcHJpbnQgKHl5b3V0
cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBjb250ZXh0KQoreXlfc3ltYm9sX3ByaW50ICh5eW91dHB1
dCwgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpCiAgICAgRklMRSAqeXlv
dXRwdXQ7CiAgICAgaW50IHl5dHlwZTsKICAgICBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1
ZXA7CisgICAgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25wOwogICAgIFRQYXJzZUNv
bnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsKQEAgLTE1MDksNyArMTU0Miw5IEBAIHl5X3N5bWJv
bF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWwKICAgZWxzZQogICAgIFlZRlBSSU5URiAo
eXlvdXRwdXQsICJudGVybSAlcyAoIiwgeXl0bmFtZVt5eXR5cGVdKTsKIAotICB5eV9zeW1ib2xf
dmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBjb250ZXh0KTsKKyAgWVlf
TE9DQVRJT05fUFJJTlQgKHl5b3V0cHV0LCAqeXlsb2NhdGlvbnApOworICBZWUZQUklOVEYgKHl5
b3V0cHV0LCAiOiAiKTsKKyAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBl
LCB5eXZhbHVlcCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpOwogICBZWUZQUklOVEYgKHl5b3V0cHV0
LCAiKSIpOwogfQogCkBAIC0xNTIxLDE3ICsxNTU2LDIwIEBAIHl5X3N5bWJvbF9wcmludCAoeXlv
dXRwdXQsIHl5dHlwZSwgeXl2YWwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9f
Qzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01T
Q19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqYm90dG9t
LCB5eXR5cGVfaW50MTYgKnRvcCkKK3l5X3N0YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKnl5Ym90
dG9tLCB5eXR5cGVfaW50MTYgKnl5dG9wKQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zdGFja19w
cmludCAoYm90dG9tLCB0b3ApCi0gICAgeXl0eXBlX2ludDE2ICpib3R0b207Ci0gICAgeXl0eXBl
X2ludDE2ICp0b3A7Cit5eV9zdGFja19wcmludCAoeXlib3R0b20sIHl5dG9wKQorICAgIHl5dHlw
ZV9pbnQxNiAqeXlib3R0b207CisgICAgeXl0eXBlX2ludDE2ICp5eXRvcDsKICNlbmRpZgogewog
ICBZWUZQUklOVEYgKHN0ZGVyciwgIlN0YWNrIG5vdyIpOwotICBmb3IgKDsgYm90dG9tIDw9IHRv
cDsgKytib3R0b20pCi0gICAgWVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCAqYm90dG9tKTsKKyAg
Zm9yICg7IHl5Ym90dG9tIDw9IHl5dG9wOyB5eWJvdHRvbSsrKQorICAgIHsKKyAgICAgIGludCB5
eWJvdCA9ICp5eWJvdHRvbTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgeXlib3Qp
OworICAgIH0KICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwogfQogCkBAIC0xNTQ5LDExICsx
NTg3LDEyIEBAIGRvIHsJCQkJCQkJCVwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVk
IF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQg
X01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfcmVkdWNlX3ByaW50IChZWVNUWVBFICp5eXZzcCwg
aW50IHl5cnVsZSwgVFBhcnNlQ29udGV4dCogY29udGV4dCkKK3l5X3JlZHVjZV9wcmludCAoWVlT
VFlQRSAqeXl2c3AsIFlZTFRZUEUgKnl5bHNwLCBpbnQgeXlydWxlLCBUUGFyc2VDb250ZXh0KiBj
b250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eXJ1
bGUsIGNvbnRleHQpCit5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eWxzcCwgeXlydWxlLCBjb250
ZXh0KQogICAgIFlZU1RZUEUgKnl5dnNwOworICAgIFlZTFRZUEUgKnl5bHNwOwogICAgIGludCB5
eXJ1bGU7CiAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dDsKICNlbmRpZgpAQCAtMTU2NiwxOCAr
MTYwNSwxOCBAQCB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eXJ1bGUsIGNvbnRleHQpCiAgIC8q
IFRoZSBzeW1ib2xzIGJlaW5nIHJlZHVjZWQuICAqLwogICBmb3IgKHl5aSA9IDA7IHl5aSA8IHl5
bnJoczsgeXlpKyspCiAgICAgewotICAgICAgZnByaW50ZiAoc3RkZXJyLCAiICAgJCVkID0gIiwg
eXlpICsgMSk7CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEp
OwogICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVdICsg
eXlpXSwKIAkJICAgICAgICYoeXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQotCQkgICAgICAg
CQkgICAgICAgLCBjb250ZXh0KTsKLSAgICAgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7CisJCSAg
ICAgICAsICYoeXlsc3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQkJICAgICAgICwgY29udGV4dCk7
CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7CiAgICAgfQogfQogCiAjIGRlZmluZSBZ
WV9SRURVQ0VfUFJJTlQoUnVsZSkJCVwKIGRvIHsJCQkJCVwKICAgaWYgKHl5ZGVidWcpCQkJCVwK
LSAgICB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCBSdWxlLCBjb250ZXh0KTsgXAorICAgIHl5X3Jl
ZHVjZV9wcmludCAoeXl2c3AsIHl5bHNwLCBSdWxlLCBjb250ZXh0KTsgXAogfSB3aGlsZSAoWVlJ
RCAoMCkpCiAKIC8qIE5vbnplcm8gbWVhbnMgcHJpbnQgcGFyc2UgdHJhY2UuICBJdCBpcyBsZWZ0
IHVuaW5pdGlhbGl6ZWQgc28gdGhhdApAQCAtMTYwNyw3ICsxNjQ2LDYgQEAgaW50IHl5ZGVidWc7
CiAjIGRlZmluZSBZWU1BWERFUFRIIDEwMDAwCiAjZW5kaWYKIAotDAogCiAjaWYgWVlFUlJPUl9W
RVJCT1NFCiAKQEAgLTE3MTAsMTE1ICsxNzQ4LDE0NSBAQCB5eXRuYW1lcnIgKGNoYXIgKnl5cmVz
LCBjb25zdCBjaGFyICp5eXN0CiB9CiAjIGVuZGlmCiAKLS8qIENvcHkgaW50byBZWVJFU1VMVCBh
biBlcnJvciBtZXNzYWdlIGFib3V0IHRoZSB1bmV4cGVjdGVkIHRva2VuCi0gICBZWUNIQVIgd2hp
bGUgaW4gc3RhdGUgWVlTVEFURS4gIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCwK
LSAgIGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcgbnVsbCBieXRlLiAgSWYgWVlSRVNVTFQgaXMg
bnVsbCwgZG8gbm90Ci0gICBjb3B5IGFueXRoaW5nOyBqdXN0IHJldHVybiB0aGUgbnVtYmVyIG9m
IGJ5dGVzIHRoYXQgd291bGQgYmUKLSAgIGNvcGllZC4gIEFzIGEgc3BlY2lhbCBjYXNlLCByZXR1
cm4gMCBpZiBhbiBvcmRpbmFyeSAic3ludGF4IGVycm9yIgotICAgbWVzc2FnZSB3aWxsIGRvLiAg
UmV0dXJuIFlZU0laRV9NQVhJTVVNIGlmIG92ZXJmbG93IG9jY3VycyBkdXJpbmcKLSAgIHNpemUg
Y2FsY3VsYXRpb24uICAqLwotc3RhdGljIFlZU0laRV9UCi15eXN5bnRheF9lcnJvciAoY2hhciAq
eXlyZXN1bHQsIGludCB5eXN0YXRlLCBpbnQgeXljaGFyKQorLyogQ29weSBpbnRvICpZWU1TRywg
d2hpY2ggaXMgb2Ygc2l6ZSAqWVlNU0dfQUxMT0MsIGFuIGVycm9yIG1lc3NhZ2UKKyAgIGFib3V0
IHRoZSB1bmV4cGVjdGVkIHRva2VuIFlZVE9LRU4gZm9yIHRoZSBzdGF0ZSBzdGFjayB3aG9zZSB0
b3AgaXMKKyAgIFlZU1NQLgorCisgICBSZXR1cm4gMCBpZiAqWVlNU0cgd2FzIHN1Y2Nlc3NmdWxs
eSB3cml0dGVuLiAgUmV0dXJuIDEgaWYgKllZTVNHIGlzCisgICBub3QgbGFyZ2UgZW5vdWdoIHRv
IGhvbGQgdGhlIG1lc3NhZ2UuICBJbiB0aGF0IGNhc2UsIGFsc28gc2V0CisgICAqWVlNU0dfQUxM
T0MgdG8gdGhlIHJlcXVpcmVkIG51bWJlciBvZiBieXRlcy4gIFJldHVybiAyIGlmIHRoZQorICAg
cmVxdWlyZWQgbnVtYmVyIG9mIGJ5dGVzIGlzIHRvbyBsYXJnZSB0byBzdG9yZS4gICovCitzdGF0
aWMgaW50Cit5eXN5bnRheF9lcnJvciAoWVlTSVpFX1QgKnl5bXNnX2FsbG9jLCBjaGFyICoqeXlt
c2csCisgICAgICAgICAgICAgICAgeXl0eXBlX2ludDE2ICp5eXNzcCwgaW50IHl5dG9rZW4pCiB7
Ci0gIGludCB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0KLSAgaWYgKCEgKFlZUEFDVF9OSU5GIDwg
eXluICYmIHl5biA8PSBZWUxBU1QpKQotICAgIHJldHVybiAwOwotICBlbHNlCi0gICAgewotICAg
ICAgaW50IHl5dHlwZSA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOwotICAgICAgWVlTSVpFX1QgeXlz
aXplMCA9IHl5dG5hbWVyciAoMCwgeXl0bmFtZVt5eXR5cGVdKTsKLSAgICAgIFlZU0laRV9UIHl5
c2l6ZSA9IHl5c2l6ZTA7Ci0gICAgICBZWVNJWkVfVCB5eXNpemUxOwotICAgICAgaW50IHl5c2l6
ZV9vdmVyZmxvdyA9IDA7Ci0gICAgICBlbnVtIHsgWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1V
TSA9IDUgfTsKLSAgICAgIGNoYXIgY29uc3QgKnl5YXJnW1lZRVJST1JfVkVSQk9TRV9BUkdTX01B
WElNVU1dOwotICAgICAgaW50IHl5eDsKLQotIyBpZiAwCi0gICAgICAvKiBUaGlzIGlzIHNvIHhn
ZXR0ZXh0IHNlZXMgdGhlIHRyYW5zbGF0YWJsZSBmb3JtYXRzIHRoYXQgYXJlCi0JIGNvbnN0cnVj
dGVkIG9uIHRoZSBmbHkuICAqLwotICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQg
JXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3Rpbmcg
JXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3Rpbmcg
JXMgb3IgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBl
Y3RpbmcgJXMgb3IgJXMgb3IgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVj
dGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMgb3IgJXMiKTsKLSMgZW5kaWYKLSAgICAg
IGNoYXIgKnl5Zm10OwotICAgICAgY2hhciBjb25zdCAqeXlmOwotICAgICAgc3RhdGljIGNoYXIg
Y29uc3QgeXl1bmV4cGVjdGVkW10gPSAic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIjsKLSAg
ICAgIHN0YXRpYyBjaGFyIGNvbnN0IHl5ZXhwZWN0aW5nW10gPSAiLCBleHBlY3RpbmcgJXMiOwot
ICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXlvcltdID0gIiBvciAlcyI7Ci0gICAgICBjaGFyIHl5
Zm9ybWF0W3NpemVvZiB5eXVuZXhwZWN0ZWQKLQkJICAgICsgc2l6ZW9mIHl5ZXhwZWN0aW5nIC0g
MQotCQkgICAgKyAoKFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0gLSAyKQotCQkgICAgICAg
KiAoc2l6ZW9mIHl5b3IgLSAxKSldOwotICAgICAgY2hhciBjb25zdCAqeXlwcmVmaXggPSB5eWV4
cGVjdGluZzsKLQotICAgICAgLyogU3RhcnQgWVlYIGF0IC1ZWU4gaWYgbmVnYXRpdmUgdG8gYXZv
aWQgbmVnYXRpdmUgaW5kZXhlcyBpbgotCSBZWUNIRUNLLiAgKi8KLSAgICAgIGludCB5eXhiZWdp
biA9IHl5biA8IDAgPyAteXluIDogMDsKLQotICAgICAgLyogU3RheSB3aXRoaW4gYm91bmRzIG9m
IGJvdGggeXljaGVjayBhbmQgeXl0bmFtZS4gICovCi0gICAgICBpbnQgeXljaGVja2xpbSA9IFlZ
TEFTVCAtIHl5biArIDE7Ci0gICAgICBpbnQgeXl4ZW5kID0geXljaGVja2xpbSA8IFlZTlRPS0VO
UyA/IHl5Y2hlY2tsaW0gOiBZWU5UT0tFTlM7Ci0gICAgICBpbnQgeXljb3VudCA9IDE7Ci0KLSAg
ICAgIHl5YXJnWzBdID0geXl0bmFtZVt5eXR5cGVdOwotICAgICAgeXlmbXQgPSB5eXN0cGNweSAo
eXlmb3JtYXQsIHl5dW5leHBlY3RlZCk7Ci0KLSAgICAgIGZvciAoeXl4ID0geXl4YmVnaW47IHl5
eCA8IHl5eGVuZDsgKyt5eXgpCi0JaWYgKHl5Y2hlY2tbeXl4ICsgeXluXSA9PSB5eXggJiYgeXl4
ICE9IFlZVEVSUk9SKQotCSAgewotCSAgICBpZiAoeXljb3VudCA9PSBZWUVSUk9SX1ZFUkJPU0Vf
QVJHU19NQVhJTVVNKQotCSAgICAgIHsKLQkJeXljb3VudCA9IDE7Ci0JCXl5c2l6ZSA9IHl5c2l6
ZTA7Ci0JCXl5Zm9ybWF0W3NpemVvZiB5eXVuZXhwZWN0ZWQgLSAxXSA9ICdcMCc7Ci0JCWJyZWFr
OwotCSAgICAgIH0KLQkgICAgeXlhcmdbeXljb3VudCsrXSA9IHl5dG5hbWVbeXl4XTsKLQkgICAg
eXlzaXplMSA9IHl5c2l6ZSArIHl5dG5hbWVyciAoMCwgeXl0bmFtZVt5eXhdKTsKLQkgICAgeXlz
aXplX292ZXJmbG93IHw9ICh5eXNpemUxIDwgeXlzaXplKTsKLQkgICAgeXlzaXplID0geXlzaXpl
MTsKLQkgICAgeXlmbXQgPSB5eXN0cGNweSAoeXlmbXQsIHl5cHJlZml4KTsKLQkgICAgeXlwcmVm
aXggPSB5eW9yOwotCSAgfQotCi0gICAgICB5eWYgPSBZWV8oeXlmb3JtYXQpOwotICAgICAgeXlz
aXplMSA9IHl5c2l6ZSArIHl5c3RybGVuICh5eWYpOwotICAgICAgeXlzaXplX292ZXJmbG93IHw9
ICh5eXNpemUxIDwgeXlzaXplKTsKLSAgICAgIHl5c2l6ZSA9IHl5c2l6ZTE7CisgIFlZU0laRV9U
IHl5c2l6ZTAgPSB5eXRuYW1lcnIgKFlZX05VTEwsIHl5dG5hbWVbeXl0b2tlbl0pOworICBZWVNJ
WkVfVCB5eXNpemUgPSB5eXNpemUwOworICBlbnVtIHsgWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFY
SU1VTSA9IDUgfTsKKyAgLyogSW50ZXJuYXRpb25hbGl6ZWQgZm9ybWF0IHN0cmluZy4gKi8KKyAg
Y29uc3QgY2hhciAqeXlmb3JtYXQgPSBZWV9OVUxMOworICAvKiBBcmd1bWVudHMgb2YgeXlmb3Jt
YXQuICovCisgIGNoYXIgY29uc3QgKnl5YXJnW1lZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU1d
OworICAvKiBOdW1iZXIgb2YgcmVwb3J0ZWQgdG9rZW5zIChvbmUgZm9yIHRoZSAidW5leHBlY3Rl
ZCIsIG9uZSBwZXIKKyAgICAgImV4cGVjdGVkIikuICovCisgIGludCB5eWNvdW50ID0gMDsKKwor
ICAvKiBUaGVyZSBhcmUgbWFueSBwb3NzaWJpbGl0aWVzIGhlcmUgdG8gY29uc2lkZXI6CisgICAg
IC0gQXNzdW1lIFlZRkFJTCBpcyBub3QgdXNlZC4gIEl0J3MgdG9vIGZsYXdlZCB0byBjb25zaWRl
ci4gIFNlZQorICAgICAgIDxodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYmlzb24t
cGF0Y2hlcy8yMDA5LTEyL21zZzAwMDI0Lmh0bWw+CisgICAgICAgZm9yIGRldGFpbHMuICBZWUVS
Uk9SIGlzIGZpbmUgYXMgaXQgZG9lcyBub3QgaW52b2tlIHRoaXMKKyAgICAgICBmdW5jdGlvbi4K
KyAgICAgLSBJZiB0aGlzIHN0YXRlIGlzIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVs
dCBhY3Rpb24sIHRoZW4KKyAgICAgICB0aGUgb25seSB3YXkgdGhpcyBmdW5jdGlvbiB3YXMgaW52
b2tlZCBpcyBpZiB0aGUgZGVmYXVsdCBhY3Rpb24KKyAgICAgICBpcyBhbiBlcnJvciBhY3Rpb24u
ICBJbiB0aGF0IGNhc2UsIGRvbid0IGNoZWNrIGZvciBleHBlY3RlZAorICAgICAgIHRva2VucyBi
ZWNhdXNlIHRoZXJlIGFyZSBub25lLgorICAgICAtIFRoZSBvbmx5IHdheSB0aGVyZSBjYW4gYmUg
bm8gbG9va2FoZWFkIHByZXNlbnQgKGluIHl5Y2hhcikgaXMgaWYKKyAgICAgICB0aGlzIHN0YXRl
IGlzIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVsdCBhY3Rpb24uICBUaHVzLAorICAg
ICAgIGRldGVjdGluZyB0aGUgYWJzZW5jZSBvZiBhIGxvb2thaGVhZCBpcyBzdWZmaWNpZW50IHRv
IGRldGVybWluZQorICAgICAgIHRoYXQgdGhlcmUgaXMgbm8gdW5leHBlY3RlZCBvciBleHBlY3Rl
ZCB0b2tlbiB0byByZXBvcnQuICBJbiB0aGF0CisgICAgICAgY2FzZSwganVzdCByZXBvcnQgYSBz
aW1wbGUgInN5bnRheCBlcnJvciIuCisgICAgIC0gRG9uJ3QgYXNzdW1lIHRoZXJlIGlzbid0IGEg
bG9va2FoZWFkIGp1c3QgYmVjYXVzZSB0aGlzIHN0YXRlIGlzIGEKKyAgICAgICBjb25zaXN0ZW50
IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbi4gIFRoZXJlIG1pZ2h0IGhhdmUgYmVlbiBhCisg
ICAgICAgcHJldmlvdXMgaW5jb25zaXN0ZW50IHN0YXRlLCBjb25zaXN0ZW50IHN0YXRlIHdpdGgg
YSBub24tZGVmYXVsdAorICAgICAgIGFjdGlvbiwgb3IgdXNlciBzZW1hbnRpYyBhY3Rpb24gdGhh
dCBtYW5pcHVsYXRlZCB5eWNoYXIuCisgICAgIC0gT2YgY291cnNlLCB0aGUgZXhwZWN0ZWQgdG9r
ZW4gbGlzdCBkZXBlbmRzIG9uIHN0YXRlcyB0byBoYXZlCisgICAgICAgY29ycmVjdCBsb29rYWhl
YWQgaW5mb3JtYXRpb24sIGFuZCBpdCBkZXBlbmRzIG9uIHRoZSBwYXJzZXIgbm90CisgICAgICAg
dG8gcGVyZm9ybSBleHRyYSByZWR1Y3Rpb25zIGFmdGVyIGZldGNoaW5nIGEgbG9va2FoZWFkIGZy
b20gdGhlCisgICAgICAgc2Nhbm5lciBhbmQgYmVmb3JlIGRldGVjdGluZyBhIHN5bnRheCBlcnJv
ci4gIFRodXMsIHN0YXRlIG1lcmdpbmcKKyAgICAgICAoZnJvbSBMQUxSIG9yIElFTFIpIGFuZCBk
ZWZhdWx0IHJlZHVjdGlvbnMgY29ycnVwdCB0aGUgZXhwZWN0ZWQKKyAgICAgICB0b2tlbiBsaXN0
LiAgSG93ZXZlciwgdGhlIGxpc3QgaXMgY29ycmVjdCBmb3IgY2Fub25pY2FsIExSIHdpdGgKKyAg
ICAgICBvbmUgZXhjZXB0aW9uOiBpdCB3aWxsIHN0aWxsIGNvbnRhaW4gYW55IHRva2VuIHRoYXQg
d2lsbCBub3QgYmUKKyAgICAgICBhY2NlcHRlZCBkdWUgdG8gYW4gZXJyb3IgYWN0aW9uIGluIGEg
bGF0ZXIgc3RhdGUuCisgICovCisgIGlmICh5eXRva2VuICE9IFlZRU1QVFkpCisgICAgeworICAg
ICAgaW50IHl5biA9IHl5cGFjdFsqeXlzc3BdOworICAgICAgeXlhcmdbeXljb3VudCsrXSA9IHl5
dG5hbWVbeXl0b2tlbl07CisgICAgICBpZiAoIXl5cGFjdF92YWx1ZV9pc19kZWZhdWx0ICh5eW4p
KQorICAgICAgICB7CisgICAgICAgICAgLyogU3RhcnQgWVlYIGF0IC1ZWU4gaWYgbmVnYXRpdmUg
dG8gYXZvaWQgbmVnYXRpdmUgaW5kZXhlcyBpbgorICAgICAgICAgICAgIFlZQ0hFQ0suICBJbiBv
dGhlciB3b3Jkcywgc2tpcCB0aGUgZmlyc3QgLVlZTiBhY3Rpb25zIGZvcgorICAgICAgICAgICAg
IHRoaXMgc3RhdGUgYmVjYXVzZSB0aGV5IGFyZSBkZWZhdWx0IGFjdGlvbnMuICAqLworICAgICAg
ICAgIGludCB5eXhiZWdpbiA9IHl5biA8IDAgPyAteXluIDogMDsKKyAgICAgICAgICAvKiBTdGF5
IHdpdGhpbiBib3VuZHMgb2YgYm90aCB5eWNoZWNrIGFuZCB5eXRuYW1lLiAgKi8KKyAgICAgICAg
ICBpbnQgeXljaGVja2xpbSA9IFlZTEFTVCAtIHl5biArIDE7CisgICAgICAgICAgaW50IHl5eGVu
ZCA9IHl5Y2hlY2tsaW0gPCBZWU5UT0tFTlMgPyB5eWNoZWNrbGltIDogWVlOVE9LRU5TOworICAg
ICAgICAgIGludCB5eXg7CisKKyAgICAgICAgICBmb3IgKHl5eCA9IHl5eGJlZ2luOyB5eXggPCB5
eXhlbmQ7ICsreXl4KQorICAgICAgICAgICAgaWYgKHl5Y2hlY2tbeXl4ICsgeXluXSA9PSB5eXgg
JiYgeXl4ICE9IFlZVEVSUk9SCisgICAgICAgICAgICAgICAgJiYgIXl5dGFibGVfdmFsdWVfaXNf
ZXJyb3IgKHl5dGFibGVbeXl4ICsgeXluXSkpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoeXljb3VudCA9PSBZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNKQorICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB5eWNvdW50ID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgeXlzaXplID0geXlzaXplMDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgeXlhcmdbeXljb3VudCsrXSA9
IHl5dG5hbWVbeXl4XTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBZWVNJ
WkVfVCB5eXNpemUxID0geXlzaXplICsgeXl0bmFtZXJyIChZWV9OVUxMLCB5eXRuYW1lW3l5eF0p
OworICAgICAgICAgICAgICAgICAgaWYgKCEgKHl5c2l6ZSA8PSB5eXNpemUxCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJiYgeXlzaXplMSA8PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICAgIHl5c2l6ZSA9IHl5
c2l6ZTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CiAKLSAgICAgIGlmICh5eXNpemVfb3ZlcmZsb3cpCi0JcmV0dXJuIFlZU0laRV9NQVhJTVVN
OworICBzd2l0Y2ggKHl5Y291bnQpCisgICAgeworIyBkZWZpbmUgWVlDQVNFXyhOLCBTKSAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICBjYXNlIE46ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgeXlmb3JtYXQgPSBTOyAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgYnJlYWsKKyAgICAgIFlZQ0FTRV8oMCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CisgICAg
ICBZWUNBU0VfKDEsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIikpOworICAgICAg
WVlDQVNFXygyLCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVz
IikpOworICAgICAgWVlDQVNFXygzLCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywg
ZXhwZWN0aW5nICVzIG9yICVzIikpOworICAgICAgWVlDQVNFXyg0LCBZWV8oInN5bnRheCBlcnJv
ciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIikpOworICAgICAgWVlD
QVNFXyg1LCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9y
ICVzIG9yICVzIG9yICVzIikpOworIyB1bmRlZiBZWUNBU0VfCisgICAgfQogCi0gICAgICBpZiAo
eXlyZXN1bHQpCi0JewotCSAgLyogQXZvaWQgc3ByaW50ZiwgYXMgdGhhdCBpbmZyaW5nZXMgb24g
dGhlIHVzZXIncyBuYW1lIHNwYWNlLgotCSAgICAgRG9uJ3QgaGF2ZSB1bmRlZmluZWQgYmVoYXZp
b3IgZXZlbiBpZiB0aGUgdHJhbnNsYXRpb24KLQkgICAgIHByb2R1Y2VkIGEgc3RyaW5nIHdpdGgg
dGhlIHdyb25nIG51bWJlciBvZiAiJXMicy4gICovCi0JICBjaGFyICp5eXAgPSB5eXJlc3VsdDsK
LQkgIGludCB5eWkgPSAwOwotCSAgd2hpbGUgKCgqeXlwID0gKnl5ZikgIT0gJ1wwJykKLQkgICAg
ewotCSAgICAgIGlmICgqeXlwID09ICclJyAmJiB5eWZbMV0gPT0gJ3MnICYmIHl5aSA8IHl5Y291
bnQpCi0JCXsKLQkJICB5eXAgKz0geXl0bmFtZXJyICh5eXAsIHl5YXJnW3l5aSsrXSk7Ci0JCSAg
eXlmICs9IDI7Ci0JCX0KLQkgICAgICBlbHNlCi0JCXsKLQkJICB5eXArKzsKLQkJICB5eWYrKzsK
LQkJfQotCSAgICB9Ci0JfQotICAgICAgcmV0dXJuIHl5c2l6ZTsKKyAgeworICAgIFlZU0laRV9U
IHl5c2l6ZTEgPSB5eXNpemUgKyB5eXN0cmxlbiAoeXlmb3JtYXQpOworICAgIGlmICghICh5eXNp
emUgPD0geXlzaXplMSAmJiB5eXNpemUxIDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCisgICAg
ICByZXR1cm4gMjsKKyAgICB5eXNpemUgPSB5eXNpemUxOworICB9CisKKyAgaWYgKCp5eW1zZ19h
bGxvYyA8IHl5c2l6ZSkKKyAgICB7CisgICAgICAqeXltc2dfYWxsb2MgPSAyICogeXlzaXplOwor
ICAgICAgaWYgKCEgKHl5c2l6ZSA8PSAqeXltc2dfYWxsb2MKKyAgICAgICAgICAgICAmJiAqeXlt
c2dfYWxsb2MgPD0gWVlTVEFDS19BTExPQ19NQVhJTVVNKSkKKyAgICAgICAgKnl5bXNnX2FsbG9j
ID0gWVlTVEFDS19BTExPQ19NQVhJTVVNOworICAgICAgcmV0dXJuIDE7CiAgICAgfQorCisgIC8q
IEF2b2lkIHNwcmludGYsIGFzIHRoYXQgaW5mcmluZ2VzIG9uIHRoZSB1c2VyJ3MgbmFtZSBzcGFj
ZS4KKyAgICAgRG9uJ3QgaGF2ZSB1bmRlZmluZWQgYmVoYXZpb3IgZXZlbiBpZiB0aGUgdHJhbnNs
YXRpb24KKyAgICAgcHJvZHVjZWQgYSBzdHJpbmcgd2l0aCB0aGUgd3JvbmcgbnVtYmVyIG9mICIl
cyJzLiAgKi8KKyAgeworICAgIGNoYXIgKnl5cCA9ICp5eW1zZzsKKyAgICBpbnQgeXlpID0gMDsK
KyAgICB3aGlsZSAoKCp5eXAgPSAqeXlmb3JtYXQpICE9ICdcMCcpCisgICAgICBpZiAoKnl5cCA9
PSAnJScgJiYgeXlmb3JtYXRbMV0gPT0gJ3MnICYmIHl5aSA8IHl5Y291bnQpCisgICAgICAgIHsK
KyAgICAgICAgICB5eXAgKz0geXl0bmFtZXJyICh5eXAsIHl5YXJnW3l5aSsrXSk7CisgICAgICAg
ICAgeXlmb3JtYXQgKz0gMjsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgeXlwKys7CisgICAgICAgICAgeXlmb3JtYXQrKzsKKyAgICAgICAgfQorICB9CisgIHJl
dHVybiAwOwogfQogI2VuZGlmIC8qIFlZRVJST1JfVkVSQk9TRSAqLwotDAogCiAvKi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCBSZWxlYXNlIHRoZSBt
ZW1vcnkgYXNzb2NpYXRlZCB0byB0aGlzIHN5bWJvbC4gIHwKQEAgLTE4MjgsMTcgKzE4OTYsMTkg
QEAgeXlzeW50YXhfZXJyb3IgKGNoYXIgKnl5cmVzdWx0LCBpbnQgeXlzdAogI2lmIChkZWZpbmVk
IF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19j
cGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eWRlc3RydWN0IChj
b25zdCBjaGFyICp5eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFRQYXJzZUNv
bnRleHQqIGNvbnRleHQpCit5eWRlc3RydWN0IChjb25zdCBjaGFyICp5eW1zZywgaW50IHl5dHlw
ZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFlZTFRZUEUgKnl5bG9jYXRpb25wLCBUUGFyc2VDb250ZXh0
KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eWRlc3RydWN0ICh5eW1zZywgeXl0eXBl
LCB5eXZhbHVlcCwgY29udGV4dCkKK3l5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVw
LCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICAgICBjb25zdCBjaGFyICp5eW1zZzsKICAgICBpbnQg
eXl0eXBlOwogICAgIFlZU1RZUEUgKnl5dmFsdWVwOworICAgIFlZTFRZUEUgKnl5bG9jYXRpb25w
OwogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsKICAgWVlVU0UgKHl5dmFs
dWVwKTsKKyAgWVlVU0UgKHl5bG9jYXRpb25wKTsKICAgWVlVU0UgKGNvbnRleHQpOwogCiAgIGlm
ICgheXltc2cpCkBAIC0xODQ5LDI4ICsxOTE5LDkgQEAgeXlkZXN0cnVjdCAoeXltc2csIHl5dHlw
ZSwgeXl2YWx1ZXAsIGNvbgogICAgIHsKIAogICAgICAgZGVmYXVsdDoKLQlicmVhazsKKyAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQotDAotCi0vKiBQcmV2ZW50IHdhcm5pbmdzIGZyb20gLVdtaXNz
aW5nLXByb3RvdHlwZXMuICAqLwotCi0jaWZkZWYgWVlQQVJTRV9QQVJBTQotI2lmIGRlZmluZWQg
X19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cwotaW50IHl5cGFyc2UgKHZvaWQgKllZUEFS
U0VfUEFSQU0pOwotI2Vsc2UKLWludCB5eXBhcnNlICgpOwotI2VuZGlmCi0jZWxzZSAvKiAhIFlZ
UEFSU0VfUEFSQU0gKi8KLSNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3Bs
dXMKLWludCB5eXBhcnNlIChUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKLSNlbHNlCi1pbnQgeXlw
YXJzZSAoKTsKLSNlbmRpZgotI2VuZGlmIC8qICEgWVlQQVJTRV9QQVJBTSAqLwotCi0KIAogCiAK
QEAgLTE5MDEsNzcgKzE5NTIsMTEzIEBAIHl5cGFyc2UgKGNvbnRleHQpCiAjZW5kaWYKICNlbmRp
ZgogewotICAvKiBUaGUgbG9vay1haGVhZCBzeW1ib2wuICAqLworLyogVGhlIGxvb2thaGVhZCBz
eW1ib2wuICAqLwogaW50IHl5Y2hhcjsKIAotLyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBs
b29rLWFoZWFkIHN5bWJvbC4gICovCi1ZWVNUWVBFIHl5bHZhbDsKLQotLyogTnVtYmVyIG9mIHN5
bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KLWludCB5eW5lcnJzOwogCi0gIGludCB5eXN0YXRlOwot
ICBpbnQgeXluOwotICBpbnQgeXlyZXN1bHQ7Ci0gIC8qIE51bWJlciBvZiB0b2tlbnMgdG8gc2hp
ZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLwotICBpbnQgeXllcnJzdGF0dXM7
Ci0gIC8qIExvb2stYWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2Vu
IG51bWJlci4gICovCi0gIGludCB5eXRva2VuID0gMDsKLSNpZiBZWUVSUk9SX1ZFUkJPU0UKLSAg
LyogQnVmZmVyIGZvciBlcnJvciBtZXNzYWdlcywgYW5kIGl0cyBhbGxvY2F0ZWQgc2l6ZS4gICov
Ci0gIGNoYXIgeXltc2didWZbMTI4XTsKLSAgY2hhciAqeXltc2cgPSB5eW1zZ2J1ZjsKLSAgWVlT
SVpFX1QgeXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7CisjaWYgZGVmaW5lZCBfX0dOVUNf
XyAmJiA0MDcgPD0gX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXworLyogU3VwcHJlc3Mg
YW4gaW5jb3JyZWN0IGRpYWdub3N0aWMgYWJvdXQgeXlsdmFsIGJlaW5nIHVuaW5pdGlhbGl6ZWQu
ICAqLworIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfQkVHSU4gXAorICAg
IF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBwdXNoIikgXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlh
Z25vc3RpYyBpZ25vcmVkIFwiLVd1bmluaXRpYWxpemVkXCIiKVwKKyAgICBfUHJhZ21hICgiR0ND
IGRpYWdub3N0aWMgaWdub3JlZCBcIi1XbWF5YmUtdW5pbml0aWFsaXplZFwiIikKKyMgZGVmaW5l
IFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORCBcCisgICAgX1ByYWdtYSAoIkdDQyBk
aWFnbm9zdGljIHBvcCIpCisjZWxzZQorLyogRGVmYXVsdCB2YWx1ZSB1c2VkIGZvciBpbml0aWFs
aXphdGlvbiwgZm9yIHBhY2lmeWluZyBvbGRlciBHQ0NzCisgICBvciBub24tR0NDIGNvbXBpbGVy
cy4gICovCitzdGF0aWMgWVlTVFlQRSB5eXZhbF9kZWZhdWx0OworIyBkZWZpbmUgWVlfSU5JVElB
TF9WQUxVRShWYWx1ZSkgPSBWYWx1ZQogI2VuZGlmCitzdGF0aWMgWVlMVFlQRSB5eWxvY19kZWZh
dWx0CisjIGlmIGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNfVFJJVklB
TAorICA9IHsgMSwgMSwgMSwgMSB9CisjIGVuZGlmCis7CisjaWZuZGVmIFlZX0lHTk9SRV9NQVlC
RV9VTklOSVRJQUxJWkVEX0JFR0lOCisjIGRlZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFM
SVpFRF9CRUdJTgorIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECisj
ZW5kaWYKKyNpZm5kZWYgWVlfSU5JVElBTF9WQUxVRQorIyBkZWZpbmUgWVlfSU5JVElBTF9WQUxV
RShWYWx1ZSkgLyogTm90aGluZy4gKi8KKyNlbmRpZgorCisvKiBUaGUgc2VtYW50aWMgdmFsdWUg
b2YgdGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLworWVlTVFlQRSB5eWx2YWwgWVlfSU5JVElBTF9W
QUxVRSh5eXZhbF9kZWZhdWx0KTsKKworLyogTG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2thaGVh
ZCBzeW1ib2wuICAqLworWVlMVFlQRSB5eWxsb2MgPSB5eWxvY19kZWZhdWx0OwogCi0gIC8qIFRo
cmVlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6Ci0gICAgIGB5eXNzJzogcmVsYXRlZCB0byBzdGF0
ZXMsCi0gICAgIGB5eXZzJzogcmVsYXRlZCB0byBzZW1hbnRpYyB2YWx1ZXMsCi0gICAgIGB5eWxz
JzogcmVsYXRlZCB0byBsb2NhdGlvbnMuCiAKLSAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0aHJ1
IHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93Ci0gICAgIHRvIHJlYWxsb2Nh
dGUgdGhlbSBlbHNld2hlcmUuICAqLworICAgIC8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNv
IGZhci4gICovCisgICAgaW50IHl5bmVycnM7CiAKLSAgLyogVGhlIHN0YXRlIHN0YWNrLiAgKi8K
LSAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKLSAgeXl0eXBlX2ludDE2ICp5eXNz
ID0geXlzc2E7Ci0gIHl5dHlwZV9pbnQxNiAqeXlzc3A7CisgICAgaW50IHl5c3RhdGU7CisgICAg
LyogTnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxl
ZC4gICovCisgICAgaW50IHl5ZXJyc3RhdHVzOwogCi0gIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBz
dGFjay4gICovCi0gIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOwotICBZWVNUWVBFICp5eXZz
ID0geXl2c2E7Ci0gIFlZU1RZUEUgKnl5dnNwOworICAgIC8qIFRoZSBzdGFja3MgYW5kIHRoZWly
IHRvb2xzOgorICAgICAgIGB5eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMuCisgICAgICAgYHl5dnMn
OiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcy4KKyAgICAgICBgeXlscyc6IHJlbGF0ZWQgdG8g
bG9jYXRpb25zLgogCisgICAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0aHJvdWdoIHNlcGFyYXRl
IHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93CisgICAgICAgdG8gcmVhbGxvY2F0ZSB0aGVt
IGVsc2V3aGVyZS4gICovCisKKyAgICAvKiBUaGUgc3RhdGUgc3RhY2suICAqLworICAgIHl5dHlw
ZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07CisgICAgeXl0eXBlX2ludDE2ICp5eXNzOworICAg
IHl5dHlwZV9pbnQxNiAqeXlzc3A7CisKKyAgICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3RhY2su
ICAqLworICAgIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOworICAgIFlZU1RZUEUgKnl5dnM7
CisgICAgWVlTVFlQRSAqeXl2c3A7CiAKKyAgICAvKiBUaGUgbG9jYXRpb24gc3RhY2suICAqLwor
ICAgIFlZTFRZUEUgeXlsc2FbWVlJTklUREVQVEhdOworICAgIFlZTFRZUEUgKnl5bHM7CisgICAg
WVlMVFlQRSAqeXlsc3A7CiAKLSNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiks
IHl5c3NwIC09IChOKSkKKyAgICAvKiBUaGUgbG9jYXRpb25zIHdoZXJlIHRoZSBlcnJvciBzdGFy
dGVkIGFuZCBlbmRlZC4gICovCisgICAgWVlMVFlQRSB5eWVycm9yX3JhbmdlWzNdOwogCi0gIFlZ
U0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7CisgICAgWVlTSVpFX1QgeXlzdGFja3Np
emU7CiAKKyAgaW50IHl5bjsKKyAgaW50IHl5cmVzdWx0OworICAvKiBMb29rYWhlYWQgdG9rZW4g
YXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4gICovCisgIGludCB5eXRv
a2VuID0gMDsKICAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1
ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKICAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KICAgWVlT
VFlQRSB5eXZhbDsKKyAgWVlMVFlQRSB5eWxvYzsKKworI2lmIFlZRVJST1JfVkVSQk9TRQorICAv
KiBCdWZmZXIgZm9yIGVycm9yIG1lc3NhZ2VzLCBhbmQgaXRzIGFsbG9jYXRlZCBzaXplLiAgKi8K
KyAgY2hhciB5eW1zZ2J1ZlsxMjhdOworICBjaGFyICp5eW1zZyA9IHl5bXNnYnVmOworICBZWVNJ
WkVfVCB5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1ZjsKKyNlbmRpZgogCisjZGVmaW5lIFlZ
UE9QU1RBQ0soTikgICAoeXl2c3AgLT0gKE4pLCB5eXNzcCAtPSAoTiksIHl5bHNwIC09IChOKSkK
IAogICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIFJIUyBvZiB0aGUgcmVkdWNlZCBy
dWxlLgogICAgICBLZWVwIHRvIHplcm8gd2hlbiBubyBzeW1ib2wgc2hvdWxkIGJlIHBvcHBlZC4g
ICovCiAgIGludCB5eWxlbiA9IDA7CiAKKyAgeXlzc3AgPSB5eXNzID0geXlzc2E7CisgIHl5dnNw
ID0geXl2cyA9IHl5dnNhOworICB5eWxzcCA9IHl5bHMgPSB5eWxzYTsKKyAgeXlzdGFja3NpemUg
PSBZWUlOSVRERVBUSDsKKwogICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFydGluZyBwYXJzZVxu
IikpOwogCiAgIHl5c3RhdGUgPSAwOwogICB5eWVycnN0YXR1cyA9IDA7CiAgIHl5bmVycnMgPSAw
OwotICB5eWNoYXIgPSBZWUVNUFRZOwkJLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFkLiAgKi8K
LQotICAvKiBJbml0aWFsaXplIHN0YWNrIHBvaW50ZXJzLgotICAgICBXYXN0ZSBvbmUgZWxlbWVu
dCBvZiB2YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2sKLSAgICAgc28gdGhhdCB0aGV5IHN0YXkgb24g
dGhlIHNhbWUgbGV2ZWwgYXMgdGhlIHN0YXRlIHN0YWNrLgotICAgICBUaGUgd2FzdGVkIGVsZW1l
bnRzIGFyZSBuZXZlciBpbml0aWFsaXplZC4gICovCi0KLSAgeXlzc3AgPSB5eXNzOwotICB5eXZz
cCA9IHl5dnM7Ci0KKyAgeXljaGFyID0gWVlFTVBUWTsgLyogQ2F1c2UgYSB0b2tlbiB0byBiZSBy
ZWFkLiAgKi8KKyAgeXlsc3BbMF0gPSB5eWxsb2M7CiAgIGdvdG8geXlzZXRzdGF0ZTsKIAogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0uCkBAIC0xOTk3LDcgKzIwODQsNyBAQCBpbnQgeXluZXJyczsKIAkgICBtZW1vcnkuICAqLwog
CVlZU1RZUEUgKnl5dnMxID0geXl2czsKIAl5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKLQor
CVlZTFRZUEUgKnl5bHMxID0geXlsczsKIAogCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNz
IGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQogCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQg
c3RhY2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKQEAgLTIwMDYsOSArMjA5MywxMCBA
QCBpbnQgeXluZXJyczsKIAl5eW92ZXJmbG93IChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwKIAkJ
ICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9mICgqeXlzc3ApLAogCQkgICAgJnl5dnMxLCB5eXNp
emUgKiBzaXplb2YgKCp5eXZzcCksCi0KKwkJICAgICZ5eWxzMSwgeXlzaXplICogc2l6ZW9mICgq
eXlsc3ApLAogCQkgICAgJnl5c3RhY2tzaXplKTsKIAorCXl5bHMgPSB5eWxzMTsKIAl5eXNzID0g
eXlzczE7CiAJeXl2cyA9IHl5dnMxOwogICAgICAgfQpAQCAtMjAyOSw5ICsyMTE3LDkgQEAgaW50
IHl5bmVycnM7CiAJICAodW5pb24geXlhbGxvYyAqKSBZWVNUQUNLX0FMTE9DIChZWVNUQUNLX0JZ
VEVTICh5eXN0YWNrc2l6ZSkpOwogCWlmICghIHl5cHRyKQogCSAgZ290byB5eWV4aGF1c3RlZGxh
YjsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXNzKTsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXZzKTsK
LQorCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3NfYWxsb2MsIHl5c3MpOworCVlZU1RBQ0tfUkVMT0NB
VEUgKHl5dnNfYWxsb2MsIHl5dnMpOworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5bHNfYWxsb2MsIHl5
bHMpOwogIyAgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQogCWlmICh5eXNzMSAhPSB5eXNzYSkKIAkg
IFlZU1RBQ0tfRlJFRSAoeXlzczEpOwpAQCAtMjA0MSw3ICsyMTI5LDcgQEAgaW50IHl5bmVycnM7
CiAKICAgICAgIHl5c3NwID0geXlzcyArIHl5c2l6ZSAtIDE7CiAgICAgICB5eXZzcCA9IHl5dnMg
KyB5eXNpemUgLSAxOwotCisgICAgICB5eWxzcCA9IHl5bHMgKyB5eXNpemUgLSAxOwogCiAgICAg
ICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFjayBzaXplIGluY3JlYXNlZCB0byAlbHVcbiIsCiAJ
CSAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0YWNrc2l6ZSkpOwpAQCAtMjA1Miw2ICsyMTQwLDkg
QEAgaW50IHl5bmVycnM7CiAKICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiRW50ZXJpbmcgc3RhdGUg
JWRcbiIsIHl5c3RhdGUpKTsKIAorICBpZiAoeXlzdGF0ZSA9PSBZWUZJTkFMKQorICAgIFlZQUND
RVBUOworCiAgIGdvdG8geXliYWNrdXA7CiAKIC8qLS0tLS0tLS0tLS0uCkBAIC0yMDYwLDE2ICsy
MTUxLDE2IEBAIGludCB5eW5lcnJzOwogeXliYWNrdXA6CiAKICAgLyogRG8gYXBwcm9wcmlhdGUg
cHJvY2Vzc2luZyBnaXZlbiB0aGUgY3VycmVudCBzdGF0ZS4gIFJlYWQgYQotICAgICBsb29rLWFo
ZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8K
KyAgICAgbG9va2FoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhh
dmUgb25lLiAgKi8KIAotICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91
dCByZWZlcmVuY2UgdG8gbG9vay1haGVhZCB0b2tlbi4gICovCisgIC8qIEZpcnN0IHRyeSB0byBk
ZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4uICAq
LwogICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0gIGlmICh5eW4gPT0gWVlQQUNUX05JTkYpCisg
IGlmICh5eXBhY3RfdmFsdWVfaXNfZGVmYXVsdCAoeXluKSkKICAgICBnb3RvIHl5ZGVmYXVsdDsK
IAotICAvKiBOb3Qga25vd24gPT4gZ2V0IGEgbG9vay1haGVhZCB0b2tlbiBpZiBkb24ndCBhbHJl
YWR5IGhhdmUgb25lLiAgKi8KKyAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2thaGVhZCB0b2tl
biBpZiBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KIAotICAvKiBZWUNIQVIgaXMgZWl0aGVy
IFlZRU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29rLWFoZWFkIHN5bWJvbC4gICovCisgIC8q
IFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRiBvciBhIHZhbGlkIGxvb2thaGVhZCBz
eW1ib2wuICAqLwogICBpZiAoeXljaGFyID09IFlZRU1QVFkpCiAgICAgewogICAgICAgWVlEUFJJ
TlRGICgoc3RkZXJyLCAiUmVhZGluZyBhIHRva2VuOiAiKSk7CkBAIC0yMDk1LDMwICsyMTg2LDI4
IEBAIHl5YmFja3VwOgogICB5eW4gPSB5eXRhYmxlW3l5bl07CiAgIGlmICh5eW4gPD0gMCkKICAg
ICB7Ci0gICAgICBpZiAoeXluID09IDAgfHwgeXluID09IFlZVEFCTEVfTklORikKLQlnb3RvIHl5
ZXJybGFiOworICAgICAgaWYgKHl5dGFibGVfdmFsdWVfaXNfZXJyb3IgKHl5bikpCisgICAgICAg
IGdvdG8geXllcnJsYWI7CiAgICAgICB5eW4gPSAteXluOwogICAgICAgZ290byB5eXJlZHVjZTsK
ICAgICB9CiAKLSAgaWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCiAgIC8qIENv
dW50IHRva2VucyBzaGlmdGVkIHNpbmNlIGVycm9yOyBhZnRlciB0aHJlZSwgdHVybiBvZmYgZXJy
b3IKICAgICAgc3RhdHVzLiAgKi8KICAgaWYgKHl5ZXJyc3RhdHVzKQogICAgIHl5ZXJyc3RhdHVz
LS07CiAKLSAgLyogU2hpZnQgdGhlIGxvb2stYWhlYWQgdG9rZW4uICAqLworICAvKiBTaGlmdCB0
aGUgbG9va2FoZWFkIHRva2VuLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5
eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jKTsKIAotICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRv
a2VuIHVubGVzcyBpdCBpcyBlb2YuICAqLwotICBpZiAoeXljaGFyICE9IFlZRU9GKQotICAgIHl5
Y2hhciA9IFlZRU1QVFk7CisgIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4uICAqLworICB5
eWNoYXIgPSBZWUVNUFRZOwogCiAgIHl5c3RhdGUgPSB5eW47CisgIFlZX0lHTk9SRV9NQVlCRV9V
TklOSVRJQUxJWkVEX0JFR0lOCiAgICorK3l5dnNwID0geXlsdmFsOwotCisgIFlZX0lHTk9SRV9N
QVlCRV9VTklOSVRJQUxJWkVEX0VORAorICAqKyt5eWxzcCA9IHl5bGxvYzsKICAgZ290byB5eW5l
d3N0YXRlOwogCiAKQEAgLTIxNDksMTggKzIyMzgsMTkgQEAgeXlyZWR1Y2U6CiAgICAgIEdDQyB3
YXJuaW5nIHRoYXQgWVlWQUwgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZC4gICovCiAgIHl5dmFs
ID0geXl2c3BbMS15eWxlbl07CiAKLQorICAvKiBEZWZhdWx0IGxvY2F0aW9uLiAgKi8KKyAgWVlM
TE9DX0RFRkFVTFQgKHl5bG9jLCAoeXlsc3AgLSB5eWxlbiksIHl5bGVuKTsKICAgWVlfUkVEVUNF
X1BSSU5UICh5eW4pOwogICBzd2l0Y2ggKHl5bikKICAgICB7Ci0gICAgICAgIGNhc2UgMjoKKyAg
ICAgICAgY2FzZSA0OgogCiAgICAgewogICAgICAgICAvLyBUaGUgc3ltYm9sIHRhYmxlIHNlYXJj
aCB3YXMgZG9uZSBpbiB0aGUgbGV4aWNhbCBwaGFzZQogICAgICAgICBjb25zdCBUU3ltYm9sKiBz
eW1ib2wgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN5bWJvbDsKICAgICAgICAgY29uc3QgVFZh
cmlhYmxlKiB2YXJpYWJsZTsKICAgICAgICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ1bmRlY2xhcmVk
IGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ1bmRlY2xhcmVk
IGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiBmYWtlVmFyaWFi
bGUgPSBuZXcgVFZhcmlhYmxlKCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBlKTsK
QEAgLTIxNjksMTAgKzIyNTksMTcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAvLyBUaGlzIGlkZW50aWZpZXIgY2FuIG9ubHkgYmUgYSB2YXJpYWJsZSB0eXBlIHN5
bWJvbAogICAgICAgICAgICAgaWYgKCEgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ2YXJp
YWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ2YXJp
YWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3ltYm9s
KTsKKworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmlzVmFyaWFibGVCdWlsdEluKHZhcmlhYmxl
KSAmJiAKKyAgICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkg
JiYKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eWxzcFso
MSkgLSAoMSldKSwgdmFyaWFibGUtPmdldEV4dGVuc2lvbigpKSkgeworICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAg
IC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcsIGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVyeSwg
YW5kIHRoZSBwb29sCkBAIC0yMTgxLDIyICsyMjc4LDIzIEBAIHl5cmVkdWNlOgogICAgICAgICBp
ZiAodmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCApIHsKICAg
ICAgICAgICAgIENvbnN0YW50VW5pb24qIGNvbnN0QXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29uc3RQ
b2ludGVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0KHZhcmlhYmxlLT5nZXRUeXBlKCkpOwotICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICh5
eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2
YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUo
KSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUt
PmdldFR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDM6
CisgIGNhc2UgNToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0OgorICBjYXNlIDY6CiAKICAgICB7CiAgICAg
ICAgIC8vCkBAIC0yMjA0LDE1NSArMjMwMiwxNTEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8vIGNo
ZWNrIGZvciBvdmVyZmxvdyBmb3IgY29uc3RhbnRzCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChh
YnMoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5pKSA+PSAoMSA8PCAxNikpIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgIiBpbnRlZ2VyIGNv
bnN0YW50IG92ZXJmbG93IiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WygxKSAtICgxKV0pLCAiIGludGVnZXIgY29uc3RhbnQgb3ZlcmZsb3ciLCAiIik7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5
LT5zZXRJQ29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5pKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAo
eXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDU6CisgIGNh
c2UgNzoKIAogICAgIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5mKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5s
ZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0p
KTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2OgorICBjYXNlIDg6CiAKICAgICB7CiAg
ICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsK
ICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KCh5eXZzcFsoMSkgLSAoMSldLmxleCkuYik7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDc6CisgIGNhc2UgOToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4OgorICBjYXNlIDEw
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAotICBjYXNlIDk6CisgIGNhc2UgMTE6CiAKICAgICB7CiAgICAgICAgIGlmICgh
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSAmJiAh
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkgJiYg
ISh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKSB7
CiAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldEFzU3ltYm9sTm9kZSgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgIiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBh
cnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDQpXSksICIgbGVmdCBv
ZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0
U3ltYm9sKCkuY19zdHIoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIGxlZnQgb2YgJ1snIGlz
IG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAiZXhwcmVzc2lvbiIpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoNCldKSwgIiBsZWZ0
IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgImV4cHJl
c3Npb24iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAg
ICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5
cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCAmJiAoeXl2c3BbKDMpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAg
ICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNB
cnJheSgpKSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIGFycmF5cwotICAgICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlO
b2RlKCh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0
YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCksICh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgp
LmxpbmUpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkgeyAgLy8gY29uc3RhbnQgZm9sZGluZyBmb3Ig
dmVjdG9ycwotICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVsZHMgZmllbGRzOwotICAgICAgICAg
ICAgICAgIGZpZWxkcy5udW0gPSAxOwotICAgICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzWzBd
ID0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3Rh
bnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsgLy8gbmVlZCB0
byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkK
LSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAg
IH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlz
TWF0cml4KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKLSAgICAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdE1h
dHJpeE5vZGUoKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFz
Q29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgKHl5
dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoNCld
LmxleCkubGluZSk7CisgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgIGlu
dCBpbmRleCA9ICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRB
c0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOworICAgICAgICAgICAgaWYgKGluZGV4IDwg
MCkgeworICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGluZm9TdHJlYW07CisgICAg
ICAgICAgICAgICAgaW5mb1N0cmVhbSA8PCBpbmRleDsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0
cmluZyBpbmZvID0gaW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXlsc3BbKDMpIC0gKDQpXSksICJuZWdhdGl2ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7
CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgIGlu
ZGV4ID0gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlm
ICgoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVy
KCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpIHx8ICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSAmJiAoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0g
KHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRV
bmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSAmJiAhKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSApIHsKLSAgICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAg
ICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFu
Z2UgJyIgPDwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFz
Q29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAi
JyI7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5m
b1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNw
WygyKSAtICg0KV0ubGV4KS5saW5lLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0
QXJyYXlTaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2
c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldE1heEFy
cmF5U2l6ZSgpIDw9ICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0
TWF4U2l6ZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNT
eW1ib2xOb2RlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRUeXBlUG9pbnRlcigpLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25z
dCgpLCB0cnVlLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChjb250ZXh0LT5hcnJheVNldE1heFNpemUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEFzU3ltYm9sTm9kZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50ZXIoKSwgMCwgZmFsc2UsICh5eXZzcFsoMikg
LSAoNCldLmxleCkubGluZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpLT5nZXRJQ29uc3QoKSA+PSAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdl
ICciIDw8ICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0Nv
bnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIici
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4
dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5j
X3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7CisgICAgICAgICAgICBpZiAo
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRR
dWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgeworICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7IC8vIGNvbnN0YW50
IGZvbGRpbmcgZm9yIGFycmF5cworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdEFycmF5Tm9kZShpbmRleCwgKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoNCldKSk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkgeyAgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVj
dG9ycworICAgICAgICAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKKyAgICAgICAg
ICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CisgICAgICAgICAgICAgICAgICAgIGZpZWxkcy5v
ZmZzZXRzWzBdID0gaW5kZXg7IC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSB2Lnh5
IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVs
ZHMsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIp
IC0gKDQpXSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpIHsgLy8gY29uc3RhbnQgZm9sZGlu
ZyBmb3IgbWF0cmljZXMKKyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RNYXRyaXhOb2RlKGluZGV4LCAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICg0KV0pKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlm
ICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpICYm
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0
QXJyYXlTaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIiLCAiWyIsICJhcnJheSBtdXN0IGJlIHJlZGVj
bGFyZWQgd2l0aCBhIHNpemUgYmVmb3JlIGJlaW5nIGluZGV4ZWQgd2l0aCBhIHZhcmlhYmxlIik7
CisgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5pc0FycmF5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49ICh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJy
YXlTaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4
dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8
PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5z
dHIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikg
LSAoNCldKSwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgg
PSAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdl
dEFycmF5U2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5p
c1ZlY3RvcigpIHx8ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5p
c01hdHJpeCgpKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gaW5kZXgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAgICAgICAgICAg
ICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwg
aW5kZXggPDwgIiciOworICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8g
PSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMikgLSAoNCldKSwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOwogICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgICAg
IGluZGV4ID0gICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRU
eXBlKCkuZ2V0Tm9taW5hbFNpemUoKSAtIDE7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4SW5kaXJlY3QsICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2
c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9u
KCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7CisgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eWxzcFsoMikgLSAoNCldKSk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgKHl5dnNwWygxKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDQpXSkpOwogICAgICAgICB9CiAgICAgICAgIGlmICgoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewogICAgICAgICAgICAgQ29uc3RhbnRV
bmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5p
b25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAt
ICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoNCldKSk7
CiAgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmlzQXJyYXkoKSkgewogICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpCi0gICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0
KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCku
Z2V0VHlwZU5hbWUoKSkpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBl
KCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUo
KSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lv
bigpLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXROb21pbmFsU2l6ZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+aXNNYXRyaXgoKSkpOwogCiAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBF
dnFDb25zdCkKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFDb25zdCk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4
KCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUo
KS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QsICh5eXZzcFsoMSkg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAg
ICAgIGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5p
c01hdHJpeCgpKQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5z
ZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKCh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpICYmICh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVh
bGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0KSk7Ci0gICAgICAgIGVsc2UgaWYg
KCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKQot
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBl
KCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUo
KSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lv
bigpLCBFdnFUZW1wb3JhcnkpKTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgaWYgKCh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSB7Cisg
ICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3Qg
PyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgcXVhbGlmaWVyLCAoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOworICAgICAg
ICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5p
c1ZlY3RvcigpKSB7CisgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVy
KCkgPT0gRXZxQ29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgcXVhbGlmaWVy
KSk7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPnNldFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldFR5cGUoKSk7Ci0gICAgO30KKyAgICAgICAgfQorICAgIH0KICAgICBicmVhazsKIAot
ICBjYXNlIDEwOgorICBjYXNlIDEyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDExOgorICBjYXNlIDEzOgog
CiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygz
KSAtICgzKV0ubGV4KS5saW5lLCAiY2Fubm90IGFwcGx5IGRvdCBvcGVyYXRvciB0byBhbiBhcnJh
eSIsICIuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDMpXSks
ICJjYW5ub3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkgewogICAgICAg
ICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5w
YXJzZVZlY3RvckZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVs
ZHMsICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSkpIHsKKyAgICAgICAgICAgIGlmICghIGNv
bnRleHQtPnBhcnNlVmVjdG9yRmllbGRzKCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXpl
KCksIGZpZWxkcywgKHl5bHNwWygzKSAtICgzKV0pKSkgewogICAgICAgICAgICAgICAgIGZpZWxk
cy5udW0gPSAxOwogICAgICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzWzBdID0gMDsKICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlw
ZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9y
IHZlY3RvciBmaWVsZHMKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5l
KTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygzKSAtICgzKV0pKTsKICAgICAgICAgICAgICAgICBp
ZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsKQEAgLTIzNjEsMTMgKzI0NTUsMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwg
RXZxQ29uc3QsIChpbnQpICgqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcpLnNpemUoKSkp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBUU3RyaW5nIHZlY3RvclN0
cmluZyA9ICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZzsKLSAgICAgICAgICAgICAgICBU
SW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmll
bGRzLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRl
eChFT3BWZWN0b3JTd2l6emxlLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAg
ICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxl
KGZpZWxkcywgKHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9w
VmVjdG9yU3dpenpsZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IGluZGV4LCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAoaW50
KSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkp
IHsKICAgICAgICAgICAgIFRNYXRyaXhGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEg
Y29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5n
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNp
emUoKSwgZmllbGRzLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpKSB7CisgICAgICAgICAg
ICBpZiAoISBjb250ZXh0LT5wYXJzZU1hdHJpeEZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4
KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRO
b21pbmFsU2l6ZSgpLCBmaWVsZHMsICh5eWxzcFsoMykgLSAoMyldKSkpIHsKICAgICAgICAgICAg
ICAgICBmaWVsZHMud2hvbGVSb3cgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmaWVsZHMud2hv
bGVDb2wgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmaWVsZHMucm93ID0gMDsKQEAgLTIzNzYs
MTA4ICsyNDcwLDEwMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKGZpZWxkcy53aG9sZVJvdyB8fCBmaWVsZHMud2hvbGVDb2wpIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIgbm9uLXNjYWxh
ciBmaWVsZHMgbm90IGltcGxlbWVudGVkIHlldCIsICIuIik7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIG5vbi1zY2FsYXIgZmllbGRzIG5vdCBp
bXBsZW1lbnRlZCB5ZXQiLCAiLiIpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0
YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KDApOwot
ICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksIGluZGV4LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAg
ICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZx
Q29uc3QpLCAoeXlsc3BbKDMpIC0gKDMpXSkpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJ
bmRleERpcmVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGlu
ZGV4LCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSxFdnFUZW1wb3JhcnksICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpKSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9u
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5
LT5zZXRJQ29uc3QoZmllbGRzLmNvbCAqICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpICsgZmllbGRzLnJvdyk7Ci0gICAgICAgICAgICAg
ICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
ICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVP
cEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
aW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAgICAgVElu
dGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxz
cFsoMykgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eWxzcFso
MikgLSAoMyldKSk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldFByZWNpc2lvbigpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlw
ZSgpID09IEVidFN0cnVjdCkgewogICAgICAgICAgICAgYm9vbCBmaWVsZEZvdW5kID0gZmFsc2U7
Ci0gICAgICAgICAgICBjb25zdCBUVHlwZUxpc3QqIGZpZWxkcyA9ICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgICAg
ICAgICBpZiAoZmllbGRzID09IDApIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJzdHJ1Y3R1cmUgaGFzIG5vIGZpZWxkcyIsICJJ
bnRlcm5hbCBFcnJvciIpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0g
MDsgaSA8IGZpZWxkcy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCgq
ZmllbGRzKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSAqKHl5dnNwWygzKSAtICgzKV0ubGV4
KS5zdHJpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkRm91bmQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9ICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPmZpZWxkcygpOwor
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg
ZmllbGRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGZpZWxkc1tpXS0+bmFt
ZSgpID09ICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZykgeworICAgICAgICAgICAgICAg
ICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRD
b25zdFN0cnVjdCgqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0eXBlLCBub3Qgb2YgdGhl
IHN0cnVjdHVyZSBmaWVsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIHRoZSBz
dHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyBzaGFyZWQgYmV0d2VlbiB2YXJpb3VzIHN0cnVjdHVyZXMu
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uWzFdOwotICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksICooKmZpZWxkcylbaV0u
dHlwZSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdFN0cnVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksIGluZGV4LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5z
ZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoZmllbGRGb3VuZCkgeworICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNv
bnN0KSB7CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0KCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmlu
ZywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikg
LSAoMyldKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOworICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoKmZpZWxk
c1tpXS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZSB0aGUgcXVh
bGlmaWVyIG9mIHRoZSByZXR1cm4gdHlwZSwgbm90IG9mIHRoZSBzdHJ1Y3R1cmUgZmllbGQKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyBz
aGFyZWQgYmV0d2VlbiB2YXJpb3VzIHN0cnVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGVQb2ludGVyKCktPnNldFF1
YWxpZmllcihFdnFDb25zdCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIp
IC0gKDMpXS5sZXgpLmxpbmUsICIgbm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1cmUiLCAoeXl2c3Bb
KDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
CisgICAgICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvblsxXTsKKyAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0
KGkpOworICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgKmZpZWxkc1tpXS0+dHlw
ZSgpLCAoeXlsc3BbKDMpIC0gKDMpXSkpOworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9w
SW5kZXhEaXJlY3RTdHJ1Y3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCBpbmRleCwgKHl5bHNwWygyKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7
CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIgbm8gc3VjaCBmaWVsZCBpbiBz
dHJ1Y3R1cmUiLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiIGZpZWxkIHNlbGVj
dGlvbiByZXF1aXJlcyBzdHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBz
aWRlIiwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIGZpZWxkIHNlbGVjdGlvbiBy
ZXF1aXJlcyBzdHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRlIiwg
KHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAg
IH0KICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlICQzLnN0cmluZywgaXQncyBmcm9tIHRoZSBwb29s
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMjoKKyAgY2FzZSAxNDoKIAog
ICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAt
ICgyKV0ubGV4KS5saW5lLCAiKysiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFso
MikgLSAoMildKSwgIisrIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRo
KEVPcFBvc3RJbmNyZW1lbnQsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVtZW50LCAoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgyKV0pLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0g
MCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMild
LmxleCkubGluZSwgIisrIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVy
cm9yKCh5eWxzcFsoMikgLSAoMildKSwgIisrIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0K
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDEzOgorICBjYXNlIDE1OgogCiAg
ICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygy
KSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgo
RU9wUG9zdERlY3JlbWVudCwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNyZW1lbnQsICh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5saW5lLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJy
b3IoKHl5bHNwWygyKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ6CisgIGNhc2UgMTY6CiAKICAg
ICB7CiAgICAgICAgIGlmIChjb250ZXh0LT5pbnRlZ2VyRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgIltdIikpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTU6CisgIGNhc2UgMTc6CiAKICAgICB7CiAgICAgICAgIFRG
dW5jdGlvbiogZm5DYWxsID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5mdW5jdGlvbjsKQEAg
LTI0OTEsMTggKzI1NzksMTggQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAvLyBUaGVpciBwYXJh
bWV0ZXJzIHdpbGwgYmUgdmVyaWZpZWQgYWxnb3JpdGhtaWNhbGx5LgogICAgICAgICAgICAgLy8K
ICAgICAgICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsgIC8vIHVzZSB0
aGlzIHRvIGdldCB0aGUgdHlwZSBiYWNrCi0gICAgICAgICAgICBpZiAoY29udGV4dC0+Y29uc3Ry
dWN0b3JFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAqZm5DYWxsLCBvcCwgJnR5cGUpKSB7CisgICAg
ICAgICAgICBpZiAoY29udGV4dC0+Y29uc3RydWN0b3JFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAo
MSldKSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAqZm5DYWxsLCBvcCwg
JnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAg
ICAgICAgICAvLyBJdCdzIGEgY29uc3RydWN0b3IsIG9mIHR5cGUgJ3R5cGUnLgogICAgICAgICAg
ICAgICAgIC8vCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+YWRkQ29uc3RydWN0b3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRl
cm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5l
KTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5hZGRDb25zdHJ1Y3RvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUs
ICZ0eXBlLCBvcCwgZm5DYWxsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFn
Z3JlZ2F0ZU9wZXJhdG9yKDAsIG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOwor
ICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwgKHl5bHNwWygxKSAtICgx
KV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+c2V0VHlwZSh0eXBlKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTI1MTEsMTMgKzI1
OTksMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgY29uc3QgVEZ1
bmN0aW9uKiBmbkNhbmRpZGF0ZTsKICAgICAgICAgICAgIGJvb2wgYnVpbHRJbjsKLSAgICAgICAg
ICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKCh5eXZzcFsoMSkgLSAoMSld
LmludGVybSkubGluZSwgZm5DYWxsLCAmYnVpbHRJbik7CisgICAgICAgICAgICBmbkNhbmRpZGF0
ZSA9IGNvbnRleHQtPmZpbmRGdW5jdGlvbigoeXlsc3BbKDEpIC0gKDEpXSksIGZuQ2FsbCwgJmJ1
aWx0SW4pOwogICAgICAgICAgICAgaWYgKGZuQ2FuZGlkYXRlKSB7CiAgICAgICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgICAgICAvLyBBIGRlY2xhcmVkIGZ1bmN0aW9uLgogICAgICAgICAgICAg
ICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKGJ1aWx0SW4gJiYgIWZuQ2FuZGlkYXRlLT5nZXRF
eHRlbnNpb24oKS5lbXB0eSgpICYmCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmV4dGVu
c2lvbkVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCBmbkNhbmRpZGF0
ZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmV4dGVu
c2lvbkVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5z
aW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3AgPSBmbkNhbmRpZGF0ZS0+Z2V0QnVpbHRJ
bk9wKCk7CkBAIC0yNTI5LDcgKzI2MTcsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmVhdCBpdCBsaWtlIGEgYnVp
bHQtaW4gdW5hcnkgb3BlcmF0b3IuCiAgICAgICAgICAgICAgICAgICAgICAgICAvLwotICAgICAg
ICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChvcCwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
KS5pbnRlcm1Ob2RlLCAwLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkVW5hcnlNYXRoKG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5v
ZGUsICh5eWxzcFsoMSkgLSAoMSldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSAg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5m
b1N0cmVhbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwg
ImJ1aWx0IGluIHVuYXJ5IG9wZXJhdG9yIGZ1bmN0aW9uLiAgVHlwZTogIiA8PCBzdGF0aWNfY2Fz
dDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpOwpAQCAtMjUzOCwxMiArMjYyNiwxMiBAQCB5eXJlZHVjZToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBZWUVSUk9SOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdn
cmVnYXRlLCBvcCwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0p
LmludGVybUFnZ3JlZ2F0ZSwgb3AsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIGEgcmVhbCBmdW5jdGlvbiBjYWxsCiAKLSAgICAgICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFn
Z3JlZ2F0ZU9wZXJhdG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRl
LCBFT3BGdW5jdGlvbkNhbGwsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAg
ICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0pLmludGVybUFnZ3JlZ2F0ZSwgRU9wRnVuY3Rpb25DYWxsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OwogICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNl
dFR5cGUoZm5DYW5kaWRhdGUtPmdldFJldHVyblR5cGUoKSk7CiAKICAgICAgICAgICAgICAgICAg
ICAgLy8gdGhpcyBpcyBob3cgd2Uga25vdyB3aGV0aGVyIHRoZSBnaXZlbiBmdW5jdGlvbiBpcyBh
IGJ1aWx0SW4gZnVuY3Rpb24gb3IgYSB1c2VyIGRlZmluZWQgZnVuY3Rpb24KQEAgLTI1NzAsOTAg
KzI2NTgsODggQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgLy8gUHV0IG9uIGEgZHVtbXkg
bm9kZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1
bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25B
cnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5
eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGRlbGV0ZSBmbkNhbGw7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjoKKyAgY2FzZSAxODoKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc6CisgIGNhc2UgMTk6CiAKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMykgLSAoMyldLmludGVybSkubGluZSwgIm1l
dGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQiLCAiIik7CisgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMykgLSAoMyldKSwgIm1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQiLCAiIik7CiAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTg6CisgIGNhc2UgMjA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZz
cFsoMikgLSAoMildLmxleCkubGluZTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBj
YXNlIDE5OgorICBjYXNlIDIxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5
eXZzcFsoMSkgLSAoMildLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAyMDoKKyAgY2FzZSAyMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSku
ZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgICAgICAo
eXl2YWwuaW50ZXJtKS5pbnRlcm1Ob2RlID0gMDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAotICBjYXNlIDIxOgorICBjYXNlIDIzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
KS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCi0gIGNhc2UgMjI6CisgIGNhc2UgMjQ6CiAKICAgICB7CiAgICAgICAgIFRQYXJhbWV0ZXIg
cGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0VHlwZSgpKSB9OwogICAgICAgICAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
ZnVuY3Rpb24pLT5hZGRQYXJhbWV0ZXIocGFyYW0pOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5m
dW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbik7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDIzOgorICBj
YXNlIDI1OgogCiAgICAgewogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5
cGUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSkg
fTsKICAgICAgICAgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+YWRkUGFyYW1l
dGVyKHBhcmFtKTsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1O
b2RlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAo
eXl2YWwuaW50ZXJtKS5pbnRlcm1Ob2RlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dy
ZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pKTsKKyAgICB9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDoKKyAgY2FzZSAyNjoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rp
b24pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjU6CisgIGNhc2UgMjc6
CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC0yNjY3LDM5ICsyNzUzLDM5IEBAIHl5cmVkdWNlOgog
ICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLnR5cGUpLm1hdHJpeCkgewogICAgICAgICAgICAgICAgICAgICBzd2l0
Y2goKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVP
cENvbnN0cnVjdE1hdDI7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDM7ICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDQ7ICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdE1hdDI7ICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdE1hdDM7ICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdE1hdDQ7ICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2l6ZSkgewot
ICAgICAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0VmVjMjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjMzsgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjNDsgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0VmVjMjsgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0VmVjMzsgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0VmVjNDsgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAgICAgICAgICAgICAgc3dpdGNoKCh5
eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25z
dHJ1Y3RJbnQ7ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZF
UlRfT05MWSgiaXZlYzIiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9w
ID0gRU9wQ29uc3RydWN0SVZlYzI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzogICAg
ICAgRlJBR19WRVJUX09OTFkoIml2ZWMzIiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUp
LmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWMzOyBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjNCIsICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjNDsgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEludDsgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0SVZlYzI7IGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdElWZWM0OyBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEVidEJvb2w6
CiAgICAgICAgICAgICAgICAgc3dpdGNoKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5z
aXplKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RCb29sOyAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiYnZlYzIiLCAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzI7IGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWMzIiwgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMz
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJi
dmVjNCIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25z
dHJ1Y3RCVmVjNDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0
cnVjdEJvb2w7ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3Ry
dWN0QlZlYzI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1
Y3RCVmVjMzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVj
dEJWZWM0OyBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChvcCA9PSBFT3BOdWxsKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJjYW5ub3QgY29uc3RydWN0IHRoaXMg
dHlwZSIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBl
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAi
Y2Fubm90IGNvbnN0cnVjdCB0aGlzIHR5cGUiLCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSkudHlwZSkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlw
ZSA9IEVidEZsb2F0OwogICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7CkBA
IC0yNzA5LDcxICsyNzk1LDYwIEBAIHl5cmVkdWNlOgogICAgICAgICBUVHlwZSB0eXBlKCh5eXZz
cFsoMSkgLSAoMSldLmludGVybS50eXBlKSk7CiAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24g
PSBuZXcgVEZ1bmN0aW9uKCZ0ZW1wU3RyaW5nLCB0eXBlLCBvcCk7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0gICAgO30KLSAgICBicmVhazsKLQotICBjYXNl
IDI2OgotCi0gICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5n
KSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShF
YnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3
IFRGdW5jdGlvbigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZywgdHlwZSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyNzoKKyAgY2FzZSAyODoKIAogICAgIHsKLSAgICAgICAgaWYgKGNv
bnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICoo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNl
cnZlZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCAqKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBUVHlw
ZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rp
b24gPSBuZXcgVEZ1bmN0aW9uKCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBlKTsK
ICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBmdW5jdGlvbjsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAotICBjYXNlIDI4OgorICBjYXNlIDI5OgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNl
IDI5OgorICBjYXNlIDMwOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJy
b3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICIrKyIsICh5eXZzcFsoMikgLSAo
MildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1
ZUVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCAiKysiLCAoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlSW5jcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlSW5jcmVtZW50LCAo
eXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygxKSAtICgy
KV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9y
KCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIisrIiwgKHl5dnNwWygyKSAtICgyKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAg
Y29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgIisrIiwgKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDMw
OgorICBjYXNlIDMxOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JD
aGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFsoMikgLSAoMild
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVy
cm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygxKSAtICgyKV0p
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5
eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIi0tIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgIi0tIiwgKHl5dnNwWygyKSAt
ICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDMxOgor
ICBjYXNlIDMyOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
KS5vcCAhPSBFT3BOdWxsKSB7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCh5eXZzcFsoMSkgLSAo
MildLmludGVybSkub3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsK
KyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5vcCwgKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMSkgLSAoMild
KSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXJy
b3JPcCA9ICIiOwogICAgICAgICAgICAgICAgIHN3aXRjaCgoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0pLm9wKSB7CkBAIC0yNzgxLDM1NyArMjg1NiwzNTUgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAg
ICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OiBlcnJvck9wID0gIiEiOyBicmVhazsKICAgICAgICAg
ICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSwg
ZXJyb3JPcCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigo
eXlsc3BbKDEpIC0gKDIpXSksIGVycm9yT3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
Ci0gICAgO30KLSAgICBicmVhazsKLQotICBjYXNlIDMyOgotCi0gICAgeyAoeXl2YWwuaW50ZXJt
KS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9
IEVPcE51bGw7IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMzM6CiAKLSAgICB7ICh5
eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5p
bnRlcm0pLm9wID0gRU9wTmVnYXRpdmU7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVP
cE51bGw7IH0KICAgICBicmVhazsKIAogICBjYXNlIDM0OgogCi0gICAgeyAoeXl2YWwuaW50ZXJt
KS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9
IEVPcExvZ2ljYWxOb3Q7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE5lZ2F0aXZl
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAzNToKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcExvZ2ljYWxOb3Q7IH0KICAgICBicmVh
azsKIAogICBjYXNlIDM2OgogCisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQorICAgIGJyZWFr
OworCisgIGNhc2UgMzc6CisKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIqIiwgKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwg
Y29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BNdWwsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0g
MCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMp
XS5sZXgpLmxpbmUsICIqIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiKiIsICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzc6Cisg
IGNhc2UgMzg6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIvIiwgKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRGl2LCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4
dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BEaXYsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewot
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUsICIvIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiLyIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAg
ICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzg6CisgIGNhc2Ug
Mzk6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDM5OgorICBjYXNlIDQwOgogCiAgICAgewotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcEFkZCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3Bb
KDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5h
cnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIisiLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSks
ICIrIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA0MDoKKyAgY2FzZSA0MToKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJp
bmFyeU1hdGgoRU9wU3ViLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BTdWIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgz
KV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICItIiwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiLSIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCi0gIGNhc2UgNDE6CisgIGNhc2UgNDI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7
fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDQyOgor
ICBjYXNlIDQzOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0MzoKKyAgY2FzZSA0NDoKIAogICAg
IHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAg
ICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAi
PCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5
eWxzcFsoMikgLSAoMyldKSwgIjwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5l
dyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZh
bHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUp
OworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0K
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDQ0OgorICBjYXNlIDQ1OgogCiAg
ICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW4sICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewot
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUsICI+IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiPiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRC
Q29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxl
eCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAg
ICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDU6CisgIGNhc2Ug
NDY6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1YWwsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1YWws
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIp
IC0gKDMpXS5sZXgpLmxpbmUsICI8PSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIjw9IiwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50
VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVu
aW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1
bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIp
IC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA0NjoKKyAgY2FzZSA0NzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRl
clRoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMp
XS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wR3JlYXRlclRoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3Bb
KDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5h
cnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIj49IiwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0p
LCAiPj0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAotICBjYXNlIDQ3OgorICBjYXNlIDQ4OgogCi0gICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA0ODoKKyAgY2FzZSA0OToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1
YWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVxdWFs
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4
dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lLCAiPT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICI9PSIsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1
bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZz
cFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygy
KSAtICgzKV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNh
c2UgNDk6CisgIGNhc2UgNTA6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5vdEVx
dWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCku
bGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BOb3RF
cXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZz
cFsoMikgLSAoMyldLmxleCkubGluZSwgIiE9IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIT0iLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwg
KHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29u
c3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAg
ICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAo
eXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxz
cFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQotICAgIGJyZWFrOwotCi0gIGNhc2Ug
NTA6Ci0KLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDUxOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1MjoKIAotICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgNTM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDU0OgogCisgICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsgfQorICAgIGJyZWFrOworCisgIGNhc2UgNTU6CisKICAgICB7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
aW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICImJiIsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikg
LSAoMyldKSwgIiYmIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3Rh
bnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0g
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1NToKKyAgY2FzZSA1NjoKIAotICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFr
OwogCi0gIGNhc2UgNTY6CisgIGNhc2UgNTc6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRo
KEVPcExvZ2ljYWxYb3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAt
ICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcExvZ2ljYWxYb3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygy
KSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5
T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJeXiIsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwg
Il5eIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsx
XTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
Q29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA1NzoKKyAgY2FzZSA1ODoKIAotICAgIHsgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCi0gIGNh
c2UgNTg6CisgIGNhc2UgNTk6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2lj
YWxPciwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9n
aWNhbE9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwg
Y29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAifHwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJ8fCIsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBD
b25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAg
ICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
ICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5
bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgNTk6CisgIGNhc2UgNjA6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQor
ICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDYwOgorICBj
YXNlIDYxOgogCiAgICAgewotICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2
c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpKSkKKyAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWygy
KSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2
c3BbKDEpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg1KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0
aW9uKCh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoNSldKSk7CiAgICAgICAgIGlmICgoeXl2
c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpICE9ICh5eXZz
cFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpCiAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogCiAgICAgICAgIGlmICgo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICI6IiwgKHl5dnNw
WygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCks
ICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAt
ICg1KV0pLCAiOiIsICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjE6CisgIGNhc2UgNjI6CiAKLSAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsK
IAotICBjYXNlIDYyOgorICBjYXNlIDYzOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+
bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0pLmxpbmUsICJhc3NpZ24i
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMyldKSwgImFzc2lnbiIs
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEFzc2lnbigoeXl2c3BbKDIpIC0gKDMpXS5p
bnRlcm0pLm9wLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyld
LmludGVybSkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRBc3NpZ24oKHl5dnNwWygyKSAtICgzKV0uaW50ZXJt
KS5vcCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwog
ICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9yKCh5eXZzcFsoMikgLSAoMyldLmludGVybSkubGlu
ZSwgImFzc2lnbiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5hc3NpZ25F
cnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
CiAgICAgICAgIH0KLSAgICA7fQotICAgIGJyZWFrOwotCi0gIGNhc2UgNjM6Ci0KLSAgICB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBc3NpZ247
IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjQ6CiAKLSAgICB7IEZSQUdfVkVSVF9P
TkxZKCIqPSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50ZXJt
KS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9
IEVPcE11bEFzc2lnbjsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQXNzaWduOyB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2NToKIAotICAgIHsgRlJBR19WRVJUX09OTFkoIi89Iiwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wRGl2QXNz
aWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BNdWxBc3NpZ247IH0KICAgICBi
cmVhazsKIAogICBjYXNlIDY2OgogCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7
ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQWRkQXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVy
bSkub3AgPSBFT3BEaXZBc3NpZ247IH0KICAgICBicmVhazsKIAogICBjYXNlIDY3OgogCi0gICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUg
PSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wU3Vi
QXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBZGRBc3NpZ247IH0KICAg
ICBicmVhazsKIAogICBjYXNlIDY4OgogCisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcFN1
YkFzc2lnbjsgfQorICAgIGJyZWFrOworCisgIGNhc2UgNjk6CisKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjk6
CisgIGNhc2UgNzA6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb21tYSgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb21tYSgo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAg
IGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAg
Y29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIsIiwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNw
WygyKSAtICgzKV0pLCAiLCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzA6CisgIGNhc2UgNzE6CiAKICAgICB7
CiAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAotICBjYXNlIDcxOgorICBjYXNlIDcyOgogCiAgICAgewogICAgICAgICBURnVuY3Rpb24gJmZ1
bmN0aW9uID0gKigoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmZ1bmN0aW9uKTsKQEAgLTMxNDUs
MTMgKzMyMTgsMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb25zdCBUUGFyYW1ldGVyICZw
YXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOwogICAgICAgICAgICAgaWYgKHBhcmFtLm5hbWUg
IT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUVmFyaWFibGUgKnZhcmlhYmxl
ID0gbmV3IFRWYXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlwZSk7CisgICAgICAgICAgICAg
ICAgVFZhcmlhYmxlIHZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJhbS50eXBlKTsKICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1i
b2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLT5nZXROYW1lKCksIHZhcmlhYmxl
LT5nZXRUeXBlKCksICh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSksICh5eXZzcFsoMSkg
LSAoMildLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLmdldE5hbWUo
KSwgdmFyaWFibGUuZ2V0VHlwZSgpLCAoeXlsc3BbKDEpIC0gKDIpXSkpLCAoeXlsc3BbKDEpIC0g
KDIpXSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdn
cmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwg
KnBhcmFtLnR5cGUsICh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSksICh5eXZzcFsoMSkg
LSAoMildLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgKHl5bHNwWygxKSAtICgyKV0pKSwg
KHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAK
QEAgLTMxNTksMzQgKzMyMzIsMzQgQEAgeXlyZWR1Y2U6CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSkgPSBwcm90b3R5cGU7CiAKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUu
cG9wKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3MjoKKyAgY2FzZSA3
MzoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMildLmludGVybSkuaW50ZXJt
QWdncmVnYXRlKQogICAgICAgICAgICAgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5pbnRlcm1B
Z2dyZWdhdGUtPnNldE9wKEVPcERlY2xhcmF0aW9uKTsKICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybSkuaW50ZXJtQWdncmVnYXRlOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzM6CisgIGNhc2UgNzQ6CiAKICAg
ICB7CiAgICAgICAgIGlmICgoKHl5dnNwWygyKSAtICg0KV0uaW50ZXJtLnByZWNpc2lvbikgPT0g
RWJwSGlnaCkgJiYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gU0hfRlJBR01FTlRfU0hBREVSKSAm
JiAhY29udGV4dC0+ZnJhZ21lbnRQcmVjaXNpb25IaWdoKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXl2c3BbKDEpIC0gKDQpXS5sZXgpLmxpbmUsICJwcmVjaXNpb24gaXMgbm90IHN1
cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoNCldKSwgInByZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVk
IGluIGZyYWdtZW50IHNoYWRlciIsICJoaWdocCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGlmICghY29udGV4dC0+c3ltYm9sVGFibGUuc2V0
RGVmYXVsdFByZWNpc2lvbiggKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3Bb
KDIpIC0gKDQpXS5pbnRlcm0ucHJlY2lzaW9uKSApKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXl2c3BbKDEpIC0gKDQpXS5sZXgpLmxpbmUsICJpbGxlZ2FsIHR5cGUgYXJndW1lbnQg
Zm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFso
MykgLSAoNCldLmludGVybS50eXBlKS50eXBlKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXlsc3BbKDEpIC0gKDQpXSksICJpbGxlZ2FsIHR5cGUgYXJndW1lbnQgZm9yIGRlZmF1bHQg
cHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFsoMykgLSAoNCldLmlu
dGVybS50eXBlKS50eXBlKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3NDoKKyAgY2FzZSA3NToKIAogICAgIHsKICAgICAg
ICAgLy8KQEAgLTMyMDAsMTIgKzMyNzMsMTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRGdW5jdGlv
biogcHJldkRlYyA9IHN0YXRpY19jYXN0PFRGdW5jdGlvbio+KGNvbnRleHQtPnN5bWJvbFRhYmxl
LmZpbmQoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0TWFuZ2xlZE5hbWUo
KSkpOwogICAgICAgICBpZiAocHJldkRlYykgewogICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdl
dFJldHVyblR5cGUoKSAhPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRS
ZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIp
IC0gKDIpXS5sZXgpLmxpbmUsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNh
bWUgcmV0dXJuIHR5cGUiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRS
ZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZl
IHRoZSBzYW1lIHJldHVybiB0eXBlIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9u
KS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFyYW1Db3VudCgpOyArK2kpIHsKICAgICAgICAgICAg
ICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkgIT0gKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVh
bGlmaWVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygy
KSAtICgyKV0ubGV4KS5saW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBz
YW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0
aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJvdmVybG9hZGVk
IGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFs
aWZpZXJTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zMjE3LDI5ICszMjkwLDI4IEBA
IHl5cmVkdWNlOgogICAgICAgICAvLyBiZWluZyByZWRlY2xhcmVkLiAgU28sIHBhc3MgYmFjayB1
cCB0aGlzIGRlY2xhcmF0aW9uLCBub3QgdGhlIG9uZSBpbiB0aGUgc3ltYm9sIHRhYmxlLgogICAg
ICAgICAvLwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAo
MildLmludGVybS5mdW5jdGlvbik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2
c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAKICAgICAgICAgLy8gV2UncmUgYXQgdGhlIGlubmVy
IHNjb3BlIGxldmVsIG9mIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cyBhbmQgYm9keSBzdGF0ZW1l
bnQuCiAgICAgICAgIC8vIEFkZCB0aGUgZnVuY3Rpb24gcHJvdG90eXBlIHRvIHRoZSBzdXJyb3Vu
ZGluZyBzY29wZSBpbnN0ZWFkLgogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5nZXRPdXRl
ckxldmVsKCktPmluc2VydCgqKHl5dmFsLmludGVybSkuZnVuY3Rpb24pOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzU6CisgIGNhc2UgNzY6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1bmN0
aW9uKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDc2OgorICBjYXNlIDc3
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5mdW5jdGlvbik7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA3NzoKKyAgY2FzZSA3ODoKIAogICAgIHsKICAgICAgICAgLy8gQWRkIHRoZSBwYXJhbWV0
ZXIKQEAgLTMyNDgsMTAgKzMzMjAsMTAgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5hZGRQYXJhbWV0ZXIoKHl5dnNwWygyKSAtICgy
KV0uaW50ZXJtKS5wYXJhbSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRlbGV0ZSAoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtLnR5cGU7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSA3ODoKKyAgY2FzZSA3OToKIAogICAgIHsKICAgICAgICAgLy8KQEAgLTMy
NjIsNyArMzMzNCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8v
IFRoaXMgcGFyYW1ldGVyID4gZmlyc3QgaXMgdm9pZAogICAgICAgICAgICAgLy8KLSAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgImNhbm5vdCBi
ZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSciLCAidm9pZCIpOworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiY2Fubm90IGJlIGFuIGFy
Z3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBkZWxldGUgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtKS5wYXJhbS50eXBlOwogICAgICAgICB9IGVsc2UgewpAQCAtMzI3MCwxOCArMzM0Miwx
OCBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmZ1bmN0aW9uKTsKICAgICAgICAgICAgICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5mdW5jdGlvbiktPmFkZFBhcmFtZXRlcigoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0pLnBhcmFtKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0g
IGNhc2UgNzk6CisgIGNhc2UgODA6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyICE9IEV2cUdsb2JhbCAmJiAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAibm8gcXVhbGlm
aWVycyBhbGxvd2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZv
ciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9CiAgICAgICAgIC8vIG1ha2Ugc3VyZSBhIHNhbXBsZXIgaXMgbm90IGludm9s
dmVkIGFzIHdlbGwuLi4KLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVj
aygoeXlsc3BbKDIpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBmdW5j
dGlvbiBhcyBhIHByb3RvdHlwZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCBy
ZWN1cnNpb24pCkBAIC0zMjkxLDcwMyArMzM2Myw2OTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247CiAgICAgICAgIAogICAgICAgICBjb250
ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA4MDoKKyAgY2FzZSA4MToKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAo
MildLmludGVybS50eXBlKS50eXBlID09IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgImlsbGVnYWwgdXNlIG9mIHR5cGUg
J3ZvaWQnIiwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiaWxsZWdhbCB1c2Ugb2Yg
dHlwZSAndm9pZCciLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNv
bnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICoo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNl
cnZlZEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4
KS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBUUGFy
YW1ldGVyIHBhcmFtID0geyh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBuZXcgVFR5cGUo
KHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpKX07Ci0gICAgICAgICh5eXZhbC5pbnRlcm0p
LmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0pLnBhcmFtID0gcGFyYW07Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4
MToKKyAgY2FzZSA4MjoKIAogICAgIHsKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gbWFr
ZSBhbiBhcnJheSBvdXQgb2YgdGhpcyB0eXBlCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5
cGVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1
KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hl
Y2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5y
ZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygy
KSAtICg1KV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJv
ckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5n
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBpbnQgc2l6ZTsK
LSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1
KV0ubGV4KS5saW5lLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
c2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFso
MykgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNp
emUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2c3BbKDEp
IC0gKDUpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAKICAgICAgICAgVFR5
cGUqIHR5cGUgPSBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKTsKICAg
ICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcs
IHR5cGUgfTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoNSld
LmxleCkubGluZTsKICAgICAgICAgKHl5dmFsLmludGVybSkucGFyYW0gPSBwYXJhbTsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDgyOgorICBjYXNlIDgzOgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
KS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3Bb
KDIpIC0gKDMpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0p
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0g
KDMpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA4MzoKKyAgY2FzZSA4NDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkg
PSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1l
dGVyU2FtcGxlckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikgLSAoMildLmludGVy
bSkucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJy
b3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFs
aWZpZXIpLCAqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JD
aGVjaygoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLmxpbmUsIEV2cVRlbXBvcmFyeSwgKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUp
KQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMild
KSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5
dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4NDoKKyAgY2FzZSA4NToKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0p
OwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyld
LmludGVybSkubGluZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwg
KHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFt
LnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMykg
LSAoMyldKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNw
WygyKSAtICgzKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgODU6CisgIGNhc2UgODY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0pID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRleHQt
PnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmludGVybSkubGlu
ZSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICooeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2Ft
cGxlckVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0udHlwZSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJh
bUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCBFdnFUZW1wb3Jhcnks
ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJh
bS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDIp
IC0gKDIpXSksIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmll
ciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgODY6CisgIGNhc2Ug
ODc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUluOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgODc6CisgIGNhc2UgODg6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUluOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgODg6CisgIGNhc2UgODk6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cU91dDsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAotICBjYXNlIDg5OgorICBjYXNlIDkwOgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFJbk91dDsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDkwOgorICBjYXNlIDkxOgogCiAgICAgewogICAgICAgICBUUGFyYW1ldGVy
IHBhcmFtID0geyAwLCBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpKSB9
OwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5wYXJhbSA9IHBhcmFtOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgOTE6CisgIGNhc2UgOTI6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAotICBjYXNlIDkyOgorICBjYXNlIDkzOgogCiAgICAgewogICAgICAgICBp
ZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS50eXBlLnR5cGUgPT0gRWJ0SW52YXJpYW50ICYm
ICEoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAidW5kZWNsYXJlZCBp
ZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICh5eXZzcFsoMykgLSAoMyldLmxleCku
c3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMykg
LSAoMyldKSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1i
b2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDMpIC0gKDMp
XS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS50eXBlKSwgKHl5
dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJt
QWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBzeW1ib2wsICh5eXZzcFsoMykgLSAoMyldLmxl
eCkubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCBUVHlw
ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLnR5cGUpLCAoeXlsc3BbKDMpIC0gKDMpXSkpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVybU5vZGUs
IHN5bWJvbCwgKHl5bHNwWygzKSAtICgzKV0pKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmxleCkubGlu
ZSwgKHl5dmFsLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFs
aWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKHl5dmFsLmludGVybSkudHlwZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQt
Pm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAqKHl5
dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZhbHNlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygzKSAt
ICgzKV0pLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5
cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBU
VmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJv
ckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoMyldLmxl
eCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSksICooeXl2c3BbKDMp
IC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgdmFyaWFibGUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoc3ltYm9sICYmIHZhcmlh
YmxlKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5MzoKKyAgY2FzZSA5NDoKIAog
ICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5
dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUp
KQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3Bb
KDMpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25z
dEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg1
KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgdHJ1ZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAo
NSldKSwgKih5eXZzcFsoMykgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0pLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAg
ICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKTsKIAotICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDUpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJy
YXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSwgKHl5dnNw
WygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlw
ZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0p
LnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0g
KDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgKHl5dnNwWygxKSAt
ICg1KV0uaW50ZXJtKS50eXBlLnNldEFycmF5KHRydWUpOwogICAgICAgICAgICAgVFZhcmlhYmxl
KiB2YXJpYWJsZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5
dnNwWyg0KSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcs
ICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgdmFyaWFibGUpKQorICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDUpXSksICooeXl2c3Bb
KDMpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB2
YXJpYWJsZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NDoKKyAgY2FzZSA5NToKIAog
ICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5
dnNwWygzKSAtICg2KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUp
KQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3Bb
KDMpIC0gKDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25z
dEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg2
KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSwgdHJ1ZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAo
NildKSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDYpXS5p
bnRlcm0pLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAg
ICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKTsKIAotICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDYpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJy
YXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNildLmxleCkubGluZSwgKHl5dnNw
WygxKSAtICg2KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlw
ZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0p
LnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0g
KDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0g
ICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDQpIC0g
KDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoNSkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5
eWxzcFsoNCkgLSAoNildKSwgKHl5dnNwWyg1KSAtICg2KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksIHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZS5zZXRBcnJheSh0cnVlLCBzaXplKTsK
ICAgICAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICooeXl2
c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBl
LCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5
eWxzcFsoNCkgLSAoNildKSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCAoeXl2c3Bb
KDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlID0gVFR5cGUoKHl5dnNwWygx
KSAtICg2KV0uaW50ZXJtKS50eXBlKTsKICAgICAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNp
emUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS5p
bnRlcm1Ob2RlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlID8gdmFy
aWFibGUtPmdldFVuaXF1ZUlkKCkgOiAwLCAqKHl5dnNwWygzKSAtICg2KV0ubGV4KS5zdHJpbmcs
IHR5cGUsICh5eXZzcFsoMykgLSAoNildLmxleCkubGluZSksICh5eXZzcFsoMykgLSAoNildLmxl
eCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDYpXS5pbnRl
cm0pLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUg
PyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0
cmluZywgdHlwZSwgKHl5bHNwWygzKSAtICg2KV0pKSwgKHl5bHNwWygzKSAtICg2KV0pKTsKICAg
ICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTU6CisgIGNhc2Ug
OTY6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJt
KS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
KHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0g
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKTsKIAogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJt
Tm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5dnNwWygz
KSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CisgICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0
ZUluaXRpYWxpemVyKCh5eWxzcFsoMykgLSAoNSldKSwgKih5eXZzcFsoMykgLSAoNSldLmxleCku
c3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsICh5eXZzcFsoNSkgLSAoNSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAgICAgLy8K
ICAgICAgICAgICAgIC8vIGJ1aWxkIHRoZSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICBpZiAoaW50ZXJtTm9kZSkKLSAgICAgICAgKHl5dmFs
LmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dy
ZWdhdGUoKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBpbnRlcm1Ob2RlLCAo
eXl2c3BbKDQpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3Bb
KDEpIC0gKDUpXS5pbnRlcm0pLmludGVybU5vZGUsIGludGVybU5vZGUsICh5eWxzcFsoNCkgLSAo
NSldKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybSku
aW50ZXJtQWdncmVnYXRlID0gKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdh
dGU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAwOwogICAgICAgICB9
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NjoKKyAgY2FzZSA5NzoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS50eXBlKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCgwLCAiIiwgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpKSwgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0udHlwZSkubGluZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdn
cmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LnR5cGUpKSwgKHl5bHNwWygxKSAtICgxKV0pKSwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NzoKKyAgY2FzZSA5ODoKIAogICAgIHsKLSAgICAgICAg
VEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMild
LmludGVybS50eXBlKSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtl
QWdncmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAg
VEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMild
LmludGVybS50eXBlKSksICh5eWxzcFsoMikgLSAoMildKSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRl
KHN5bWJvbCwgKHl5bHNwWygyKSAtICgyKV0pKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGlu
ZSwgKHl5dmFsLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFs
aWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgKHl5dmFsLmludGVybSkudHlwZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQt
Pm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAqKHl5
dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZhbHNlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygyKSAt
ICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5
cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS50eXBlKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAg
aWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGlu
ZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCB2
YXJpYWJsZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXlsc3Bb
KDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVy
bSkudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2
YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA5ODoKKyAgY2FzZSA5OToKIAogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90
IHN1cHBvcnRlZCIsICh5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0KV0pLCAidW5zaXplZCBhcnJheSBk
ZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIsICh5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5n
LT5jX3N0cigpKTsKICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRJbnRl
cm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5
eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0udHlwZSkpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwu
aW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3Jl
Z2F0ZShzeW1ib2wsICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7CisgICAgICAgIFRJbnRl
cm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5
eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0udHlwZSkpLCAoeXlsc3BbKDIpIC0gKDQpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1i
b2wsICh5eWxzcFsoMikgLSAoNCldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA5OToKKyAgY2FzZSAxMDA6CiAKICAgICB7CiAgICAgICAgIFRUeXBlIHR5cGUg
PSBUVHlwZSgoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpOwogICAgICAgICBpbnQgc2l6
ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAt
ICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxz
cFsoMikgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB0eXBlLnNl
dEFycmF5U2l6ZShzaXplKTsKLSAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJp
bmcsIHR5cGUsICh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVn
YXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAgICAgVEludGVy
bVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5
dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsIHR5cGUsICh5eWxzcFsoMikgLSAoNSldKSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5bHNwWygyKSAtICg1KV0pKTsKICAgICAgICAg
Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFso
MikgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKKyAg
ICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygyKSAt
ICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJv
ckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSwgKih5eXZzcFsoMikgLSAoNSldLmxl
eCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSksIHRydWUpKQorICAgICAg
ICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUpXSks
ICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJt
LnR5cGUpLCB0cnVlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAg
ICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpOwog
Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAo
NSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSB8fCBjb250ZXh0
LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAo
eXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmlu
dGVybS50eXBlKSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFso
MykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQgc2l6
ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFso
MykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksIHNpemUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hl
Y2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAg
ICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSwg
c2l6ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5l
LCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVy
bS50eXBlKSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JD
aGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJv
bCkKICAgICAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgp
KTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAwOgor
ICBjYXNlIDEwMToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmll
ckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJy
b3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBl
KSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmlu
dGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKTsKIAogICAgICAgICBU
SW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5p
dGlhbGl6ZXIoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg0KV0u
bGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CisgICAgICAgIGlm
ICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eWxzcFsoMikgLSAoNCldKSwgKih5eXZz
cFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSks
ICh5eXZzcFsoNCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkg
ewogICAgICAgICAvLwogICAgICAgICAvLyBCdWlsZCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRp
b24KICAgICAgICAgLy8KICAgICAgICAgICAgIGlmKGludGVybU5vZGUpCi0gICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgKHl5dnNwWygzKSAtICg0KV0ubGV4KS5saW5lKTsK
KyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCAoeXlsc3BbKDMpIC0gKDQp
XSkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmlu
dGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUg
PSAwOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDE6
CisgIGNhc2UgMTAyOgogCiAgICAgewotICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRl
Y2xhcmF0aW9uIiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQor
ICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgKHl5bHNwWygxKSAt
ICgyKV0pKTsKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygx
KSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlh
bnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAo
eXl2YWwuaW50ZXJtKS50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFy
eWluZ091dCwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybSkudHlwZS5zZXRCYXNpYyhFYnRJbnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQs
ICh5eWxzcFsoMikgLSAoMildKSk7CiAgICAgICAgIGlmICghKHl5dnNwWygyKSAtICgyKV0ubGV4
KS5zeW1ib2wpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MikgLSAoMildLmxleCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBp
bnZhcmlhbnQiLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJ1bmRlY2xhcmVkIGlk
ZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5z
dHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAwOwog
ICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgVEludGVybVN5
bWJvbCAqc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNw
WygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXl2
c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9s
LCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgVEludGVybVN5bWJv
bCAqc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygy
KSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXlsc3Bb
KDIpIC0gKDIpXSkpOworICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRl
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3BbKDIp
IC0gKDIpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxMDI6CisgIGNhc2UgMTAzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpOwogCiAgICAgICAgIGlmICgoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lLCAibm90IHN1cHBvcnRlZCIs
ICJmaXJzdC1jbGFzcyBhcnJheSIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WygxKSAtICgxKV0pLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpLnNldEFycmF5KGZhbHNlKTsKICAgICAgICAgfQotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAzOgorICBjYXNlIDEwNDoKIAogICAgIHsKICAgICAg
ICAgaWYgKCh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS5hcnJheSkgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJu
b3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNz
IGFycmF5Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAo
eXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIg
PT0gRXZxQXR0cmlidXRlICYmCiAgICAgICAgICAgICAoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJt
LnR5cGUpLnR5cGUgPT0gRWJ0Qm9vbCB8fCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSku
dHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIp
IC0gKDIpXS5pbnRlcm0udHlwZSkubGluZSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1
YWxpZmllclN0cmluZygoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJjYW5ub3Qg
YmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLnR5cGUpLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICgoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1
YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUp
LnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nT3V0KSAmJgogICAgICAgICAgICAgKCh5eXZzcFsoMikg
LSAoMildLmludGVybS50eXBlKS50eXBlID09IEVidEJvb2wgfHwgKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0SW50KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJjYW5ub3QgYmUgYm9vbCBv
ciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUp
LnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgy
KV0pLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZzcFso
MSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnF1YWxpZmllciA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXI7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDQ6CisgIGNhc2UgMTA1OgogCiAg
ICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUNv
bnN0LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQ29uc3QsICh5eWxzcFsoMSkgLSAo
MSldKSk7CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTA1OgorICBjYXNlIDEwNjoKIAog
ICAgIHsKLSAgICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpLCAiYXR0cmlidXRlIikpCisgICAgICAgIFZFUlRFWF9PTkxZKCJhdHRyaWJ1dGUiLCAoeXls
c3BbKDEpIC0gKDEpXSkpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygo
eXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwg
ImF0dHJpYnV0ZSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgKHl5bHNwWygxKSAtICgxKV0pKTsK
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDY6CisgIGNhc2UgMTA3OgogCiAgICAgewot
ICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5s
ZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgInZhcnlpbmci
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgx
KV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ2YXJ5aW5nIikpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChjb250ZXh0LT5zaGFk
ZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZv
aWQsIEV2cVZhcnlpbmdPdXQsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWlu
Z0luLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgKHl5bHNw
WygxKSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDc6CisgIGNhc2Ug
MTA4OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXl2
c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxF
cnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gU0hfVkVSVEVYX1NI
QURFUikKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwg
RXZxSW52YXJpYW50VmFyeWluZ091dCwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJp
YW50VmFyeWluZ091dCwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRW
YXJ5aW5nSW4sICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7Ci0gICAgO30KKyAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50VmFy
eWluZ0luLCAoeXlsc3BbKDEpIC0gKDIpXSkpOworICAgIH0KICAgICBicmVhazsKIAotICBjYXNl
IDEwODoKKyAgY2FzZSAxMDk6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxF
cnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xv
YmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSwgInVuaWZvcm0iKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlm
b3JtLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVW5pZm9ybSwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDk6CisgIGNhc2UgMTEwOgog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLnR5cGUpOwogCiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lv
biA9PSBFYnBVbmRlZmluZWQpIHsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucHJl
Y2lzaW9uID0gY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+
cHJlY2lzaW9uRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSwg
KHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24sICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKS50eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPnByZWNpc2lvbkVycm9yQ2hl
Y2soKHl5bHNwWygxKSAtICgxKV0pLCAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiwgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTA6CisgIGNhc2UgMTExOgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpOwog
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiA9ICh5eXZzcFsoMSkgLSAoMild
LmludGVybS5wcmVjaXNpb24pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTExOgorICBjYXNlIDExMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNp
b24pID0gRWJwSGlnaDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDExMjoK
KyAgY2FzZSAxMTM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9
IEVicE1lZGl1bTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDExMzoKKyAg
Y2FzZSAxMTQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVi
cExvdzsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDExNDoKKyAgY2FzZSAx
MTU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
MTU6CisgIGNhc2UgMTE2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0g
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVy
cm9yQ2hlY2soKHl5bHNwWygyKSAtICg0KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlw
ZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVy
cm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDMpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMykgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFycmF5KHRy
dWUsIHNpemUpOwogICAgICAgICB9Ci0gICAgO30KLSAgICBicmVhazsKLQotICBjYXNlIDExNjoK
LQotICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMTc6CiAK
ICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFZvaWQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMTE4OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXl2
c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTE5OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
Qm9vbCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjA6CiAKICAgICB7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30KKyAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3Bb
KDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyMToKIAogICAgIHsK
ICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKLSAgICA7
fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAo
eXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3Jl
Z2F0ZSgyKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjI6CiAKICAgICB7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7Ci0gICAgO30KKyAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNw
WygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUo
Myk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTIzOgogCiAgICAgewogICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30KKyAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI0OgogCiAgICAgewogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0Qm9vbCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxMjU6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29s
LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOworICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDEyNjoKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxMjc6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdn
cmVnYXRlKDMpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjg6
CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQp
OwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBx
dWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEFnZ3JlZ2F0ZSgzKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjk6CiAKICAgICB7
Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJtYXQyIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5s
aW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5s
ZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyLCB0
cnVlKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidElu
dCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRBZ2dyZWdhdGUoNCk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMwOgogCiAg
ICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgibWF0MyIsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUo
MywgdHJ1ZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRBZ2dyZWdhdGUoMiwgdHJ1ZSk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTMxOgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgibWF0NCIsICh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRBZ2dyZWdhdGUoNCwgdHJ1ZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7CisgICAgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTMyOgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2Ft
cGxlcjJEIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVi
dFNhbXBsZXIyRCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXls
c3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0
ZSg0LCB0cnVlKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzM6CiAKICAgICB7Ci0g
ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyQ3ViZSIsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzQ6CiAKICAgICB7CisgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRT
YW1wbGVyQ3ViZSwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9CisgICAgYnJlYWs7
CisKKyAgY2FzZSAxMzU6CisKKyAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNF
eHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAidW5zdXBwb3J0ZWQgdHlw
ZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMSkgLSAoMSldKSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlckV4dGVybmFsT0VT
Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAg
RlJBR19WRVJUX09OTFkoInNhbXBsZXJFeHRlcm5hbE9FUyIsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM1OgorICBjYXNlIDEzNjoK
IAogICAgIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJC
X3RleHR1cmVfcmVjdGFuZ2xlIikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVj
dCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAidW5z
dXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXIyRFJl
Y3QiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1
YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBF
dnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2Ft
cGxlcjJEUmVjdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1
YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM2
OgorICBjYXNlIDEzNzoKIAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInN0cnVjdCIs
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsKICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxMzc6CisgIGNhc2UgMTM4OgogCiAgICAgewogICAgICAgICAvLwpA
QCAtMzk5Niw4NSArNDA1OCw4NiBAQCB5eXJlZHVjZToKICAgICAgICAgLy8KICAgICAgICAgVFR5
cGUmIHN0cnVjdHVyZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KCh5eXZzcFsoMSkgLSAoMSld
LmxleCkuc3ltYm9sKS0+Z2V0VHlwZSgpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFs
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS51c2VyRGVmID0gJnN0cnVjdHVyZTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAotICBjYXNlIDEzODoKKyAgY2FzZSAxMzk6CiAKLSAgICB7IGlmIChj
b250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSwgKih5eXZzcFsoMikgLSAoMyldLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyA7
fQorICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5bHNwWygyKSAt
ICgzKV0pLCAqKHl5dnNwWygyKSAtICgzKV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVy
KCk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDEzOToKKyAgY2FzZSAxNDA6CiAKICAgICB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg2KV0u
bGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAo
Y29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNildKSwgKih5eXZzcFso
MikgLSAoNildLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
IAotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCh5eXZzcFsoNSkgLSAoNild
LmludGVybS50eXBlTGlzdCksICooeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmluZyk7CisgICAg
ICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUobmV3IFRTdHJ1Y3R1cmUoKHl5dnNwWygy
KSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoNSkgLSAoNildLmludGVybS5maWVsZExpc3Qp
KSk7CiAgICAgICAgIFRWYXJpYWJsZSogdXNlclR5cGVEZWYgPSBuZXcgVFZhcmlhYmxlKCh5eXZz
cFsoMikgLSAoNildLmxleCkuc3RyaW5nLCAqc3RydWN0dXJlLCB0cnVlKTsKICAgICAgICAgaWYg
KCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCp1c2VyVHlwZURlZikpIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNildLmxleCkubGluZSwgInJlZGVmaW5p
dGlvbiIsICh5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDYpXSksICJyZWRlZmlu
aXRpb24iLCAoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSwgInN0cnVjdCIp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eXZz
cFsoMSkgLSAoNildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eWxzcFsoMSkgLSAoNildKSk7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkudXNlckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29u
dGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxNDA6CisgIGNhc2UgMTQxOgogCi0gICAgeyBpZiAoY29udGV4dC0+ZW50ZXJT
dHJ1Y3REZWNsYXJhdGlvbigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIp
IC0gKDIpXS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KKyAgICB7IGlmIChj
b250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFsoMikgLSAoMildKSwgKih5eXZz
cFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxNDE6CisgIGNhc2UgMTQyOgogCiAgICAgewotICAgICAgICBUVHlwZSog
c3RydWN0dXJlID0gbmV3IFRUeXBlKCh5eXZzcFsoNCkgLSAoNSldLmludGVybS50eXBlTGlzdCks
IFRTdHJpbmcoIiIpKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRT
dHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZShOZXdQb29sVFN0
cmluZygiIiksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5maWVsZExpc3QpKSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5
eWxzcFsoMSkgLSAoNSldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkudXNlckRlZiA9
IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDI6CisgIGNhc2UgMTQzOgogCiAg
ICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlTGlzdCk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExp
c3QpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZpZWxkTGlzdCk7CisgICAgfQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMTQzOgorICBjYXNlIDE0NDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlTGlzdCkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZUxpc3QpOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICh5eXZzcFsoMikgLSAoMildLmlu
dGVybS50eXBlTGlzdCktPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBqID0gMDsgaiA8ICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5zaXplKCk7ICsraikgewot
ICAgICAgICAgICAgICAgIGlmICgoKih5eXZhbC5pbnRlcm0udHlwZUxpc3QpKVtqXS50eXBlLT5n
ZXRGaWVsZE5hbWUoKSA9PSAoKih5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCkpW2ld
LnR5cGUtPmdldEZpZWxkTmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlbaV0ubGluZSwgImR1cGxp
Y2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3RydWN0IiwgKCooeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0udHlwZUxpc3QpKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKS5jX3N0cigpKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpID0gKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLmZpZWxkTGlzdCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBU
RmllbGQqIGZpZWxkID0gKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uZmllbGRMaXN0KSlbaV07
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICh5eXZhbC5pbnRlcm0uZmllbGRM
aXN0KS0+c2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICBpZiAoKCooeXl2YWwuaW50ZXJt
LmZpZWxkTGlzdCkpW2pdLT5uYW1lKCkgPT0gZmllbGQtPm5hbWUoKSkgeworICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJkdXBsaWNhdGUgZmll
bGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSk7
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+
cHVzaF9iYWNrKCgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlbaV0pOworICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpLT5wdXNoX2JhY2soZmllbGQpOwogICAg
ICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDQ6CisgIGNhc2Ug
MTQ1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9ICh5eXZzcFso
MikgLSAoMyldLmludGVybS50eXBlTGlzdCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRM
aXN0KSA9ICh5eXZzcFsoMikgLSAoMyldLmludGVybS5maWVsZExpc3QpOwogCi0gICAgICAgIGlm
IChjb250ZXh0LT52b2lkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSku
bGluZSwgKCooeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0udHlwZUxpc3QpKVswXS50eXBlLT5nZXRG
aWVsZE5hbWUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkgeworICAgICAgICBp
ZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgzKV0pLCAoKih5eXZzcFso
MikgLSAoMyldLmludGVybS5maWVsZExpc3QpKVswXS0+bmFtZSgpLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0udHlwZSkpKSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoeXl2YWwuaW50ZXJt
LnR5cGVMaXN0KS0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytpKSB7CiAgICAgICAg
ICAgICAvLwogICAgICAgICAgICAgLy8gQ2FyZWZ1bCBub3QgdG8gcmVwbGFjZSBhbHJlYWR5IGtu
b3duIGFzcGVjdHMgb2YgdHlwZSwgbGlrZSBhcnJheS1uZXNzCiAgICAgICAgICAgICAvLwotICAg
ICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0udHlwZUxpc3QpKVtpXS50eXBl
OworICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSlb
aV0tPnR5cGUoKTsKICAgICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlwZSgoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkudHlwZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXROb21pbmFsU2l6
ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuc2l6ZSk7CiAgICAgICAgICAgICB0eXBl
LT5zZXRNYXRyaXgoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLm1hdHJpeCk7CkBAIC00
MDgyLDQzNyArNDE0NSw0MzIgQEAgeXlyZWR1Y2U6CiAKICAgICAgICAgICAgIC8vIGRvbid0IGFs
bG93IGFycmF5cyBvZiBhcnJheXMKICAgICAgICAgICAgIGlmICh0eXBlLT5pc0FycmF5KCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubGluZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5
cGUpKSkKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygo
eXlsc3BbKDEpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuYXJyYXkpCiAgICAgICAg
ICAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBl
KS5hcnJheVNpemUpOwotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50
eXBlKS51c2VyRGVmKSB7CisgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LnR5cGUpLnVzZXJEZWYpCiAgICAgICAgICAgICAgICAgdHlwZS0+c2V0U3RydWN0KCh5eXZzcFso
MSkgLSAoMyldLmludGVybS50eXBlKS51c2VyRGVmLT5nZXRTdHJ1Y3QoKSk7Ci0gICAgICAgICAg
ICAgICAgdHlwZS0+c2V0VHlwZU5hbWUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnVz
ZXJEZWYtPmdldFR5cGVOYW1lKCkpOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAo
Y29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LnR5cGUpLmxpbmUsICp0eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdE5l
c3RpbmdFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMyldKSwgKigqKHl5dmFsLmludGVybS5maWVs
ZExpc3QpKVtpXSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
NDU6CisgIGNhc2UgMTQ2OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0
KSA9IE5ld1Bvb2xUVHlwZUxpc3QoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCkt
PnB1c2hfYmFjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZUxpbmUpKTsKLSAgICA7fQor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSBOZXdQb29sVEZpZWxkTGlzdCgpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uZmllbGQpKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDY6Cisg
IGNhc2UgMTQ3OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+cHVz
aF9iYWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybS50eXBlTGluZSkpOwotICAgIDt9CisgICAg
ICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+cHVzaF9iYWNrKCh5eXZzcFsoMykgLSAoMyld
LmludGVybS5maWVsZCkpOworICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE0NzoKKyAgY2Fz
ZSAxNDg6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2so
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJp
bmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMSkg
LSAoMSldKSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBl
ID0gbmV3IFRUeXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZUxpbmUpLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLnR5cGUtPnNldEZpZWxkTmFtZSgqKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5zdHJpbmcpOwotICAgIDt9CisgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRU
eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGQp
ID0gbmV3IFRGaWVsZCh0eXBlLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZyk7CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ4OgorICBjYXNlIDE0OToKIAogICAgIHsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDQpXS5sZXgp
LmxpbmUsICooeXl2c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250
ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICg0KV0pLCAqKHl5dnNwWygxKSAt
ICg0KV0ubGV4KS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0g
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwg
RWJwVW5kZWZpbmVkKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSkubGluZSA9ICh5
eXZzcFsoMSkgLSAoNCldLmxleCkubGluZTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlu
ZSkudHlwZS0+c2V0RmllbGROYW1lKCooeXl2c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZyk7Ci0K
LSAgICAgICAgaW50IHNpemU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNo
ZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksIHNpemUpKQorICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlw
ZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAgICAgICBpbnQgc2l6ZSA9IDA7CisgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNCldKSwgKHl5
dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50
eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7Ci0gICAgO30KLSAgICBicmVhazsKKyAgICAgICAgdHlw
ZS0+c2V0QXJyYXlTaXplKHNpemUpOwogCi0gIGNhc2UgMTQ5OgotCi0gICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsgO30KKyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5
cGUsICh5eXZzcFsoMSkgLSAoNCldLmxleCkuc3RyaW5nKTsKKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxNTA6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTUxOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7IDt9
CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybU5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTI6CiAKLSAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
Tm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1
MzoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE1NDoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBi
cmVhazsKIAogICBjYXNlIDE1NToKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7
IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1NjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50
ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1NzoKIAotICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsg
O30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1ODoKIAotICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsgO30KKyAgICB7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0K
ICAgICBicmVhazsKIAogICBjYXNlIDE1OToKIAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUu
cHVzaCgpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTYwOgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5w
b3AoKTsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTYxOgogCisgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgfQor
ICAgIGJyZWFrOworCisgIGNhc2UgMTYyOgorCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygz
KSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgIT0gMCkgewogICAgICAgICAgICAgKHl5
dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldE9wKEVPcFNlcXVlbmNl
KTsKLSAgICAgICAgICAgICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUp
LT5zZXRFbmRMaW5lKCh5eXZzcFsoNSkgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgICAgICAo
eXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0TGluZSgoeXlsb2Mp
KTsKICAgICAgICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAo
eXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKTsKLSAgICA7fQotICAgIGJy
ZWFrOwotCi0gIGNhc2UgMTYyOgotCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQorICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDE2MzoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0K
ICAgICBicmVhazsKIAogICBjYXNlIDE2NDoKIAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUu
cHVzaCgpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY1Ogog
Ci0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7IGNv
bnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY2Ogog
Ci0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IDt9CisgICAgeyBjb250ZXh0LT5z
eW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikg
LSAoMildLmludGVybS5pbnRlcm1Ob2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY3Ogog
Ci0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7IGNv
bnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY4Ogog
Ci0gICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsKLSAgICA7fQor
ICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsK
IAogICBjYXNlIDE2OToKIAogICAgIHsKLSAgICAgICAgaWYgKCh5eXZzcFsoMikgLSAoMyldLmlu
dGVybS5pbnRlcm1BZ2dyZWdhdGUpKSB7Ci0gICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAgICAg
KHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldEVuZExpbmUoKHl5
dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0
ZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTcwOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0
ZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOwotICAgIDt9CisgICAg
ICAgIGlmICgoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSkgeworICAg
ICAgICAgICAgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldE9w
KEVPcFNlcXVlbmNlKTsKKyAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRl
cm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykpOworICAgICAgICB9CisgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdn
cmVnYXRlKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNzE6CiAKICAgICB7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1BZ2dyZWdhdGUp
LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOwotICAgIDt9CisgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5tYWtlQWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5
bG9jKSk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTcyOgogCi0gICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gMDsgO30KKyAgICB7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5
eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLCAoeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxvYykpOworICAgIH0KICAgICBicmVhazsKIAogICBj
YXNlIDE3MzoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRpY19jYXN0
PFRJbnRlcm1Ob2RlKj4oKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkp
OyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7IH0KICAgICBicmVhazsK
IAogICBjYXNlIDE3NDoKIAorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRp
Y19jYXN0PFRJbnRlcm1Ob2RlKj4oKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkpOyB9CisgICAgYnJlYWs7CisKKyAgY2FzZSAxNzU6CisKICAgICB7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDUpXS5sZXgpLmxpbmUsICh5
eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoNSldKSwgKHl5dnNwWygzKSAtICg1
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLm5vZGVQYWlyKSwgKHl5dnNwWygxKSAtICg1
KV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDMpIC0gKDUpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLm5vZGVQYWly
KSwgKHl5bHNwWygxKSAtICg1KV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzU6
CisgIGNhc2UgMTc2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5u
b2RlMSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICAgICAgKHl5
dmFsLmludGVybS5ub2RlUGFpcikubm9kZTIgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzY6CisgIGNh
c2UgMTc3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICAgICAgKHl5dmFsLmlu
dGVybS5ub2RlUGFpcikubm9kZTIgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTc3OgorICBjYXNlIDE3ODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CiAgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0TGluZSgpLCAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzg6CisgIGNhc2UgMTc5Ogog
CiAgICAgewogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKGNv
bnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5s
aW5lLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4
dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFso
MSkgLSAoNCldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAg
ICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5dnNwWygyKSAtICg0KV0u
bGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksIGludGVybU5vZGUpKQorICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXpl
cigoeXlsc3BbKDIpIC0gKDQpXSksICooeXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0cmluZywgKHl5
dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbKDQpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogICAgICAgICB9Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzk6CisgIGNhc2UgMTgwOgogCi0g
ICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdM
ZXZlbDsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0LT5s
b29wTmVzdGluZ0xldmVsOyB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODA6CisgIGNhc2UgMTgx
OgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29w
KEVMb29wV2hpbGUsIDAsICh5eXZzcFsoNCkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAwLCAoeXl2c3BbKDYpIC0gKDYpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMSkgLSAo
NildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAoeXl2c3BbKDQpIC0gKDYp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgMCwgKHl5dnNwWyg2KSAtICg2KV0uaW50ZXJtLmlu
dGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDYpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BO
ZXN0aW5nTGV2ZWw7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODE6Cisg
IGNhc2UgMTgyOgogCi0gICAgeyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IDt9CisgICAg
eyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0KICAgICBicmVhazsKIAotICBjYXNlIDE4
MjoKKyAgY2FzZSAxODM6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JD
aGVjaygoeXl2c3BbKDgpIC0gKDgpXS5sZXgpLmxpbmUsICh5eXZzcFsoNikgLSAoOCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNr
KCh5eWxzcFsoOCkgLSAoOCldKSwgKHl5dnNwWyg2KSAtICg4KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9v
cERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAw
LCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoNCkgLSAoOCld
LmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAoOCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0uaW50
ZXJtTm9kZSksICh5eWxzcFsoNCkgLSAoOCldKSk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5l
c3RpbmdMZXZlbDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE4MzoKKyAg
Y2FzZSAxODQ6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0
LT5sb29wTmVzdGluZ0xldmVsOyA7fQorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgp
OyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0KICAgICBicmVhazsKIAotICBjYXNlIDE4
NDoKKyAgY2FzZSAxODU6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBv
cCgpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZExvb3AoRUxvb3BGb3IsICh5eXZzcFsoNCkgLSAoNyldLmludGVybS5pbnRlcm1O
b2RlKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5p
bnRlcm0ubm9kZVBhaXIpLm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigo
eXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3KSAtICg3
KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDEpIC0gKDcpXS5sZXgpLmxpbmUpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZExvb3AoRUxvb3BGb3IsICh5eXZzcFsoNCkgLSAoNyldLmludGVybS5pbnRlcm1Ob2RlKSwgcmVp
bnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9k
ZVBhaXIpLm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUp
IC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3KSAtICg3KV0uaW50ZXJt
LmludGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDcpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxv
b3BOZXN0aW5nTGV2ZWw7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODU6
CisgIGNhc2UgMTg2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTg2OgorICBjYXNlIDE4NzoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1Ob2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE4NzoKKyAgY2Fz
ZSAxODg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg4OgorICBjYXNlIDE4OToKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gMDsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAotICBjYXNlIDE4OToKKyAgY2FzZSAxOTA6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyID0g
MDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE5MDoKKyAgY2FzZSAxOTE6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0ubm9kZVBhaXIpLm5vZGUyID0gKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTE6CisgIGNhc2Ug
MTkyOgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxp
bmUsICJjb250aW51ZSBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiY29udGludWUgc3Rh
dGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgKHl5dnNwWygx
KSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgKHl5
bHNwWygxKSAtICgyKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTI6CisgIGNh
c2UgMTkzOgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgp
LmxpbmUsICJicmVhayBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiYnJlYWsgc3RhdGVt
ZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgKHl5dnNwWygxKSAtICgy
KV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgKHl5bHNwWygxKSAt
ICgyKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTM6CisgIGNhc2UgMTk0Ogog
CiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMSkgLSAoMildLmxleCkubGlu
ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAg
aWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZv
aWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCku
bGluZSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDIpXSksICJub24tdm9p
ZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxOTQ6CisgIGNhc2UgMTk1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1
cm4sICh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDEp
IC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMikgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDEpIC0gKDMpXSkpOwogICAgICAg
ICBjb250ZXh0LT5mdW5jdGlvblJldHVybnNWYWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChjb250
ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDMpXS5sZXgpLmxpbmUsICJ2
b2lkIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgInZvaWQgZnVuY3Rpb24gY2Fu
bm90IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9IGVsc2UgaWYgKCooY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlw
ZSkgIT0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUo
KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0ubGV4KS5s
aW5lLCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4iKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgImZ1bmN0aW9u
IHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAotICBjYXNlIDE5NToKKyAgY2FzZSAxOTY6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfT05MWSgi
ZGlzY2FyZCIsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcEtp
bGwsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7Ci0gICAgO30KKyAgICAgICAgRlJBR19P
TkxZKCJkaXNjYXJkIiwgKHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwg
KHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTY6Cisg
IGNhc2UgMTk3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgICAgICBjb250ZXh0LT50
cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxOTc6CisgIGNhc2UgMTk4OgogCiAgICAgewotICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdh
dGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9k
ZSksICh5eWxvYykpOwogICAgICAgICBjb250ZXh0LT50cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTg6Cisg
IGNhc2UgMTk5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTk5OgorICBjYXNlIDIwMDoKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1O
b2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDIwMDoKKyAgY2FzZSAy
MDE6CiAKICAgICB7CiAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0pLmZ1bmN0aW9uOwpAQCAtNDUyMSw3ICs0NTc5LDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgIAogICAgICAgICBpZiAoYnVpbHRJbikKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCAiYnVpbHQtaW4gZnVu
Y3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiYnVpbHQt
aW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNf
c3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAg
ICAgIApAQCAtNDUzNSw3ICs0NTkzLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAvLwogICAg
ICAgICAgICAgLy8gVGhlbiB0aGlzIGZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keS4KICAgICAg
ICAgICAgIC8vCi0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0pLmxpbmUsICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0
TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAt
ICgxKV0pLCAiZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5IiwgZnVuY3Rpb24tPmdldE5hbWUo
KS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQog
ICAgICAgICBwcmV2RGVjLT5zZXREZWZpbmVkKCk7CkBAIC00NTQ1LDExICs0NjAzLDExIEBAIHl5
cmVkdWNlOgogICAgICAgICAvLwogICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAi
bWFpbiIpIHsKICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpID4gMCkg
ewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVy
bSkubGluZSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlv
bi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMSkgLSAoMSldKSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocyki
LCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0
UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICIiLCBmdW5j
dGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCksICJtYWluIGZ1bmN0aW9uIGNh
bm5vdCByZXR1cm4gYSB2YWx1ZSIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMSkgLSAoMSldKSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNT
dHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC00NTc3LDcgKzQ2MzUsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICAvLyBJbnNlcnQg
dGhlIHBhcmFtZXRlcnMgd2l0aCBuYW1lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgICAg
ICAgICAgLy8KICAgICAgICAgICAgICAgICBpZiAoISBjb250ZXh0LT5zeW1ib2xUYWJsZS5pbnNl
cnQoKnZhcmlhYmxlKSkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0
TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbKDEpIC0gKDEpXSksICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3Ry
KCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsKICAgICAgICAgICAgICAgICB9CkBAIC00NTg4LDMx
ICs0NjQ2LDMyIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5h
bWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwgKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtKS5saW5lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlLT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5bHNwWygxKSAtICgxKV0p
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5bHNw
WygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGFy
YW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHBhcmFtTm9kZXMs
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxp
bmUpOworICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
Z3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KDAsICIiLCAqcGFyYW0udHlwZSwgKHl5bHNwWygxKSAtICgxKV0pKSwgKHl5bHNwWygxKSAtICgx
KV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2RlcywgRU9wUGFyYW1ldGVycywgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRp
YXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsICh5eWxz
cFsoMSkgLSAoMSldKSk7CiAgICAgICAgICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJt
QWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAgICAgY29udGV4dC0+bG9vcE5lc3RpbmdMZXZl
bCA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDE6CisgIGNhc2Ug
MjAyOgogCiAgICAgewogICAgICAgICAvLz8/IENoZWNrIHRoYXQgYWxsIHBhdGhzIHJldHVybiBh
IHZhbHVlIGlmIHJldHVybiB0eXBlICE9IHZvaWQgPwogICAgICAgICAvLyAgIE1heSBiZSBiZXN0
IGRvbmUgYXMgcG9zdCBwcm9jZXNzIHBoYXNlIG9uIGludGVybWVkaWF0ZSBjb2RlCiAgICAgICAg
IGlmIChjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRW
b2lkICYmICEgY29udGV4dC0+ZnVuY3Rpb25SZXR1cm5zVmFsdWUpIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkubGluZSwgImZ1bmN0aW9uIGRv
ZXMgbm90IHJldHVybiBhIHZhbHVlOiIsICIiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1
bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXlsc3BbKDEpIC0gKDMpXSksICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAi
IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUs
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKSwgMCk7Ci0gICAgICAgIGNvbnRl
eHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpLCBFT3BGdW5jdGlvbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5saW5lKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5n
cm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxvYykpOworICAgICAgICBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSwgRU9wRnVuY3Rpb24sICh5eWxzcFsoMSkgLSAoMyldKSk7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldE5hbWUoKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+Z2V0TWFuZ2xlZE5hbWUoKS5jX3N0cigpKTsK
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0
VHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkp
OwogCkBAIC00NjIxLDE4ICs0NjgwLDI1IEBAIHl5cmVkdWNlOgogICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRPcHRpbWl6ZShjb250ZXh0LT5w
cmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdl
dEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnByYWdtYSgpLmRlYnVnKTsKIAotICAg
ICAgICBpZiAoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpICYmICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKSkKLSAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldEVuZExp
bmUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgp
LT5nZXRFbmRMaW5lKCkpOwotCiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAKLS8qIExpbmUgMTI2NyBvZiB5YWNjLmMuICAq
LwogCiAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICB9CisgIC8qIFVzZXIgc2VtYW50aWMgYWN0
aW9ucyBzb21ldGltZXMgYWx0ZXIgeXljaGFyLCBhbmQgdGhhdCByZXF1aXJlcworICAgICB0aGF0
IHl5dG9rZW4gYmUgdXBkYXRlZCB3aXRoIHRoZSBuZXcgdHJhbnNsYXRpb24uICBXZSB0YWtlIHRo
ZQorICAgICBhcHByb2FjaCBvZiB0cmFuc2xhdGluZyBpbW1lZGlhdGVseSBiZWZvcmUgZXZlcnkg
dXNlIG9mIHl5dG9rZW4uCisgICAgIE9uZSBhbHRlcm5hdGl2ZSBpcyB0cmFuc2xhdGluZyBoZXJl
IGFmdGVyIGV2ZXJ5IHNlbWFudGljIGFjdGlvbiwKKyAgICAgYnV0IHRoYXQgdHJhbnNsYXRpb24g
d291bGQgYmUgbWlzc2VkIGlmIHRoZSBzZW1hbnRpYyBhY3Rpb24gaW52b2tlcworICAgICBZWUFC
T1JULCBZWUFDQ0VQVCwgb3IgWVlFUlJPUiBpbW1lZGlhdGVseSBhZnRlciBhbHRlcmluZyB5eWNo
YXIgb3IKKyAgICAgaWYgaXQgaW52b2tlcyBZWUJBQ0tVUC4gIEluIHRoZSBjYXNlIG9mIFlZQUJP
UlQgb3IgWVlBQ0NFUFQsIGFuCisgICAgIGluY29ycmVjdCBkZXN0cnVjdG9yIG1pZ2h0IHRoZW4g
YmUgaW52b2tlZCBpbW1lZGlhdGVseS4gIEluIHRoZQorICAgICBjYXNlIG9mIFlZRVJST1Igb3Ig
WVlCQUNLVVAsIHN1YnNlcXVlbnQgcGFyc2VyIGFjdGlvbnMgbWlnaHQgbGVhZAorICAgICB0byBh
biBpbmNvcnJlY3QgZGVzdHJ1Y3RvciBjYWxsIG9yIHZlcmJvc2Ugc3ludGF4IGVycm9yIG1lc3Nh
Z2UKKyAgICAgYmVmb3JlIHRoZSBsb29rYWhlYWQgaXMgdHJhbnNsYXRlZC4gICovCiAgIFlZX1NZ
TUJPTF9QUklOVCAoIi0+ICQkID0iLCB5eXIxW3l5bl0sICZ5eXZhbCwgJnl5bG9jKTsKIAogICBZ
WVBPUFNUQUNLICh5eWxlbik7CkBAIC00NjQwLDcgKzQ3MDYsNyBAQCB5eXJlZHVjZToKICAgWVlf
U1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKIAogICAqKyt5eXZzcCA9IHl5dmFsOwotCisgICor
K3l5bHNwID0geXlsb2M7CiAKICAgLyogTm93IGBzaGlmdCcgdGhlIHJlc3VsdCBvZiB0aGUgcmVk
dWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAgdGhhdCBnb2VzIHRvLCBiYXNlZCBv
biB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRoZSBydWxlCkBAIC00NjYxLDUyICs0
NzI3LDU1IEBAIHl5cmVkdWNlOgogfCB5eWVycmxhYiAtLSBoZXJlIG9uIGRldGVjdGluZyBlcnJv
ciB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIHl5ZXJybGFiOgor
ICAvKiBNYWtlIHN1cmUgd2UgaGF2ZSBsYXRlc3QgbG9va2FoZWFkIHRyYW5zbGF0aW9uLiAgU2Vl
IGNvbW1lbnRzIGF0CisgICAgIHVzZXIgc2VtYW50aWMgYWN0aW9ucyBmb3Igd2h5IHRoaXMgaXMg
bmVjZXNzYXJ5LiAgKi8KKyAgeXl0b2tlbiA9IHl5Y2hhciA9PSBZWUVNUFRZID8gWVlFTVBUWSA6
IFlZVFJBTlNMQVRFICh5eWNoYXIpOworCiAgIC8qIElmIG5vdCBhbHJlYWR5IHJlY292ZXJpbmcg
ZnJvbSBhbiBlcnJvciwgcmVwb3J0IHRoaXMgZXJyb3IuICAqLwogICBpZiAoIXl5ZXJyc3RhdHVz
KQogICAgIHsKICAgICAgICsreXluZXJyczsKICNpZiAhIFlZRVJST1JfVkVSQk9TRQotICAgICAg
eXllcnJvciAoY29udGV4dCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CisgICAgICB5eWVycm9yICgm
eXlsbG9jLCBjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvciIpKTsKICNlbHNlCisjIGRlZmluZSBZ
WVNZTlRBWF9FUlJPUiB5eXN5bnRheF9lcnJvciAoJnl5bXNnX2FsbG9jLCAmeXltc2csIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eXNzcCwgeXl0b2tlbikKICAg
ICAgIHsKLQlZWVNJWkVfVCB5eXNpemUgPSB5eXN5bnRheF9lcnJvciAoMCwgeXlzdGF0ZSwgeXlj
aGFyKTsKLQlpZiAoeXltc2dfYWxsb2MgPCB5eXNpemUgJiYgeXltc2dfYWxsb2MgPCBZWVNUQUNL
X0FMTE9DX01BWElNVU0pCi0JICB7Ci0JICAgIFlZU0laRV9UIHl5YWxsb2MgPSAyICogeXlzaXpl
OwotCSAgICBpZiAoISAoeXlzaXplIDw9IHl5YWxsb2MgJiYgeXlhbGxvYyA8PSBZWVNUQUNLX0FM
TE9DX01BWElNVU0pKQotCSAgICAgIHl5YWxsb2MgPSBZWVNUQUNLX0FMTE9DX01BWElNVU07Ci0J
ICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKLQkgICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNnKTsK
LQkgICAgeXltc2cgPSAoY2hhciAqKSBZWVNUQUNLX0FMTE9DICh5eWFsbG9jKTsKLQkgICAgaWYg
KHl5bXNnKQotCSAgICAgIHl5bXNnX2FsbG9jID0geXlhbGxvYzsKLQkgICAgZWxzZQotCSAgICAg
IHsKLQkJeXltc2cgPSB5eW1zZ2J1ZjsKLQkJeXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7
Ci0JICAgICAgfQotCSAgfQotCi0JaWYgKDAgPCB5eXNpemUgJiYgeXlzaXplIDw9IHl5bXNnX2Fs
bG9jKQotCSAgewotCSAgICAodm9pZCkgeXlzeW50YXhfZXJyb3IgKHl5bXNnLCB5eXN0YXRlLCB5
eWNoYXIpOwotCSAgICB5eWVycm9yIChjb250ZXh0LCB5eW1zZyk7Ci0JICB9Ci0JZWxzZQotCSAg
ewotCSAgICB5eWVycm9yIChjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvciIpKTsKLQkgICAgaWYg
KHl5c2l6ZSAhPSAwKQotCSAgICAgIGdvdG8geXlleGhhdXN0ZWRsYWI7Ci0JICB9CisgICAgICAg
IGNoYXIgY29uc3QgKnl5bXNncCA9IFlZXygic3ludGF4IGVycm9yIik7CisgICAgICAgIGludCB5
eXN5bnRheF9lcnJvcl9zdGF0dXM7CisgICAgICAgIHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9IFlZ
U1lOVEFYX0VSUk9SOworICAgICAgICBpZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDApCisg
ICAgICAgICAgeXltc2dwID0geXltc2c7CisgICAgICAgIGVsc2UgaWYgKHl5c3ludGF4X2Vycm9y
X3N0YXR1cyA9PSAxKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh5eW1zZyAhPSB5eW1z
Z2J1ZikKKyAgICAgICAgICAgICAgWVlTVEFDS19GUkVFICh5eW1zZyk7CisgICAgICAgICAgICB5
eW1zZyA9IChjaGFyICopIFlZU1RBQ0tfQUxMT0MgKHl5bXNnX2FsbG9jKTsKKyAgICAgICAgICAg
IGlmICgheXltc2cpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB5eW1zZyA9IHl5
bXNnYnVmOworICAgICAgICAgICAgICAgIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOwor
ICAgICAgICAgICAgICAgIHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9IDI7CisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHl5
c3ludGF4X2Vycm9yX3N0YXR1cyA9IFlZU1lOVEFYX0VSUk9SOworICAgICAgICAgICAgICAgIHl5
bXNncCA9IHl5bXNnOworICAgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB5eWVy
cm9yICgmeXlsbG9jLCBjb250ZXh0LCB5eW1zZ3ApOworICAgICAgICBpZiAoeXlzeW50YXhfZXJy
b3Jfc3RhdHVzID09IDIpCisgICAgICAgICAgZ290byB5eWV4aGF1c3RlZGxhYjsKICAgICAgIH0K
KyMgdW5kZWYgWVlTWU5UQVhfRVJST1IKICNlbmRpZgogICAgIH0KIAotCisgIHl5ZXJyb3JfcmFu
Z2VbMV0gPSB5eWxsb2M7CiAKICAgaWYgKHl5ZXJyc3RhdHVzID09IDMpCiAgICAgewotICAgICAg
LyogSWYganVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2stYWhlYWQgdG9rZW4gYWZ0
ZXIgYW4KKyAgICAgIC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rYWhl
YWQgdG9rZW4gYWZ0ZXIgYW4KIAkgZXJyb3IsIGRpc2NhcmQgaXQuICAqLwogCiAgICAgICBpZiAo
eXljaGFyIDw9IFlZRU9GKQpAQCAtNDcxOCwxMiArNDc4NywxMiBAQCB5eWVycmxhYjoKICAgICAg
IGVsc2UKIAl7CiAJICB5eWRlc3RydWN0ICgiRXJyb3I6IGRpc2NhcmRpbmciLAotCQkgICAgICB5
eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKKwkJICAgICAgeXl0b2tlbiwgJnl5bHZhbCwgJnl5
bGxvYywgY29udGV4dCk7CiAJICB5eWNoYXIgPSBZWUVNUFRZOwogCX0KICAgICB9CiAKLSAgLyog
RWxzZSB3aWxsIHRyeSB0byByZXVzZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRo
ZSBlcnJvcgorICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRl
ciBzaGlmdGluZyB0aGUgZXJyb3IKICAgICAgdG9rZW4uICAqLwogICBnb3RvIHl5ZXJybGFiMTsK
IApAQCAtNDczOSw2ICs0ODA4LDcgQEAgeXllcnJvcmxhYjoKICAgaWYgKC8qQ09OU1RDT05EKi8g
MCkKICAgICAgZ290byB5eWVycm9ybGFiOwogCisgIHl5ZXJyb3JfcmFuZ2VbMV0gPSB5eWxzcFsx
LXl5bGVuXTsKICAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hp
Y2ggYWN0aW9uIHRyaWdnZXJlZAogICAgICB0aGlzIFlZRVJST1IuICAqLwogICBZWVBPUFNUQUNL
ICh5eWxlbik7CkBAIC00NzU3LDcgKzQ4MjcsNyBAQCB5eWVycmxhYjE6CiAgIGZvciAoOzspCiAg
ICAgewogICAgICAgeXluID0geXlwYWN0W3l5c3RhdGVdOwotICAgICAgaWYgKHl5biAhPSBZWVBB
Q1RfTklORikKKyAgICAgIGlmICgheXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCiAJewog
CSAgeXluICs9IFlZVEVSUk9SOwogCSAgaWYgKDAgPD0geXluICYmIHl5biA8PSBZWUxBU1QgJiYg
eXljaGVja1t5eW5dID09IFlZVEVSUk9SKQpAQCAtNDc3MiwxOSArNDg0MiwyMyBAQCB5eWVycmxh
YjE6CiAgICAgICBpZiAoeXlzc3AgPT0geXlzcykKIAlZWUFCT1JUOwogCi0KKyAgICAgIHl5ZXJy
b3JfcmFuZ2VbMV0gPSAqeXlsc3A7CiAgICAgICB5eWRlc3RydWN0ICgiRXJyb3I6IHBvcHBpbmci
LAotCQkgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2c3AsIGNvbnRleHQpOworCQkgIHl5c3Rvc1t5eXN0
YXRlXSwgeXl2c3AsIHl5bHNwLCBjb250ZXh0KTsKICAgICAgIFlZUE9QU1RBQ0sgKDEpOwogICAg
ICAgeXlzdGF0ZSA9ICp5eXNzcDsKICAgICAgIFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7
CiAgICAgfQogCi0gIGlmICh5eW4gPT0gWVlGSU5BTCkKLSAgICBZWUFDQ0VQVDsKLQorICBZWV9J
R05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgogICAqKyt5eXZzcCA9IHl5bHZhbDsKKyAg
WVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECiAKKyAgeXllcnJvcl9yYW5nZVsyXSA9
IHl5bGxvYzsKKyAgLyogVXNpbmcgWVlMTE9DIGlzIHRlbXB0aW5nLCBidXQgd291bGQgY2hhbmdl
IHRoZSBsb2NhdGlvbiBvZgorICAgICB0aGUgbG9va2FoZWFkLiAgWVlMT0MgaXMgYXZhaWxhYmxl
IHRob3VnaC4gICovCisgIFlZTExPQ19ERUZBVUxUICh5eWxvYywgeXllcnJvcl9yYW5nZSwgMik7
CisgICorK3l5bHNwID0geXlsb2M7CiAKICAgLyogU2hpZnQgdGhlIGVycm9yIHRva2VuLiAgKi8K
ICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXN0b3NbeXluXSwgeXl2c3AsIHl5bHNw
KTsKQEAgLTQ4MDcsMjAgKzQ4ODEsMjUgQEAgeXlhYm9ydGxhYjoKICAgeXlyZXN1bHQgPSAxOwog
ICBnb3RvIHl5cmV0dXJuOwogCi0jaWZuZGVmIHl5b3ZlcmZsb3cKKyNpZiAhZGVmaW5lZCB5eW92
ZXJmbG93IHx8IFlZRVJST1JfVkVSQk9TRQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCB5eWV4aGF1c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVz
dGlvbiBjb21lcyBoZXJlLiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLwogeXlleGhhdXN0ZWRsYWI6Ci0gIHl5ZXJyb3IgKGNvbnRleHQsIFlZ
XygibWVtb3J5IGV4aGF1c3RlZCIpKTsKKyAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgWVlf
KCJtZW1vcnkgZXhoYXVzdGVkIikpOwogICB5eXJlc3VsdCA9IDI7CiAgIC8qIEZhbGwgdGhyb3Vn
aC4gICovCiAjZW5kaWYKIAogeXlyZXR1cm46Ci0gIGlmICh5eWNoYXIgIT0gWVlFT0YgJiYgeXlj
aGFyICE9IFlZRU1QVFkpCi0gICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxv
b2thaGVhZCIsCi0JCSB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKKyAgaWYgKHl5Y2hhciAh
PSBZWUVNUFRZKQorICAgIHsKKyAgICAgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBsb29r
YWhlYWQgdHJhbnNsYXRpb24uICBTZWUgY29tbWVudHMgYXQKKyAgICAgICAgIHVzZXIgc2VtYW50
aWMgYWN0aW9ucyBmb3Igd2h5IHRoaXMgaXMgbmVjZXNzYXJ5LiAgKi8KKyAgICAgIHl5dG9rZW4g
PSBZWVRSQU5TTEFURSAoeXljaGFyKTsKKyAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNj
YXJkaW5nIGxvb2thaGVhZCIsCisgICAgICAgICAgICAgICAgICB5eXRva2VuLCAmeXlsdmFsLCAm
eXlsbG9jLCBjb250ZXh0KTsKKyAgICB9CiAgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xz
IG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKICAgICAgdGhpcyBZWUFCT1JUIG9y
IFlZQUNDRVBULiAgKi8KICAgWVlQT1BTVEFDSyAoeXlsZW4pOwpAQCAtNDgyOCw3ICs0OTA3LDcg
QEAgeXlyZXR1cm46CiAgIHdoaWxlICh5eXNzcCAhPSB5eXNzKQogICAgIHsKICAgICAgIHl5ZGVz
dHJ1Y3QgKCJDbGVhbnVwOiBwb3BwaW5nIiwKLQkJICB5eXN0b3NbKnl5c3NwXSwgeXl2c3AsIGNv
bnRleHQpOworCQkgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwgeXlsc3AsIGNvbnRleHQpOwogICAg
ICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgfQogI2lmbmRlZiB5eW92ZXJmbG93CkBAIC00ODQ3LDcg
KzQ5MjYsMTEgQEAgeXlyZXR1cm46CiAKIAogCit2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9j
LCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pIHsKKyAgICBjb250
ZXh0LT5lcnJvcigqeXlsbG9jLCByZWFzb24sICIiKTsKKyAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Cit9CisKIGludCBnbHNsYW5nX3BhcnNlKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICBy
ZXR1cm4geXlwYXJzZShjb250ZXh0KTsKIH0KLQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgJKHJldmlzaW9uIDE1MjU5NSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDI0ICsxLDIxIEBACi0vKiBBIEJpc29uIHBhcnNlciwgbWFkZSBi
eSBHTlUgQmlzb24gMi4zLiAgKi8KKy8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNv
biAyLjcuICAqLwogCi0vKiBTa2VsZXRvbiBpbnRlcmZhY2UgZm9yIEJpc29uJ3MgWWFjYy1saWtl
IHBhcnNlcnMgaW4gQwotCi0gICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAs
IDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKLSAgIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLgotCi0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLyogQmlzb24gaW50ZXJmYWNlIGZvciBZ
YWNjLWxpa2UgcGFyc2VycyBpbiBDCisgICAKKyAgICAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4
OS0xOTkwLCAyMDAwLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAKKyAg
IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgYW55IGxhdGVy
IHZlcnNpb24uCi0KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJz
aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICAgCiAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAgICBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCisgICAKICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQotICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKyAgIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg
Ki8KIAogLyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSBjcmVhdGUgYSBsYXJnZXIg
d29yayB0aGF0IGNvbnRhaW5zCiAgICBwYXJ0IG9yIGFsbCBvZiB0aGUgQmlzb24gcGFyc2VyIHNr
ZWxldG9uIGFuZCBkaXN0cmlidXRlIHRoYXQgd29yawpAQCAtMjksMTAgKzI2LDI4IEBACiAgICBz
cGVjaWFsIGV4Y2VwdGlvbiwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSBy
ZXN1bHRpbmcKICAgIEJpc29uIG91dHB1dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUg
R05VIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2Vw
dGlvbi4KLQorICAgCiAgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGluCiAgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4gICov
CiAKKyNpZm5kZWYgWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRAorIyBkZWZpbmUgWVlfWVlf
R0xTTEFOR19UQUJfSF9JTkNMVURFRAorLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KKyNpZm5kZWYg
WVlERUJVRworIyBkZWZpbmUgWVlERUJVRyAwCisjZW5kaWYKKyNpZiBZWURFQlVHCitleHRlcm4g
aW50IHl5ZGVidWc7CisjZW5kaWYKKy8qICIlY29kZSByZXF1aXJlcyIgYmxvY2tzLiAgKi8KKwor
CisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVE
IDEKKworCisKKwogLyogVG9rZW5zLiAgKi8KICNpZm5kZWYgWVlUT0tFTlRZUEUKICMgZGVmaW5l
IFlZVE9LRU5UWVBFCkBAIC04NiwxNTggKzEwMSw2MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0g
MzAyLAogICAgICBJTlRDT05TVEFOVCA9IDMwMywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAot
ICAgICBGSUVMRF9TRUxFQ1RJT04gPSAzMDUsCi0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJ
R0hUX09QID0gMzA3LAotICAgICBJTkNfT1AgPSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAg
ICAgTEVfT1AgPSAzMTAsCi0gICAgIEdFX09QID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAg
ICAgTkVfT1AgPSAzMTMsCi0gICAgIEFORF9PUCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0g
ICAgIFhPUl9PUCA9IDMxNiwKLSAgICAgTVVMX0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lH
TiA9IDMxOCwKLSAgICAgQUREX0FTU0lHTiA9IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwK
LSAgICAgTEVGVF9BU1NJR04gPSAzMjEsCi0gICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAg
QU5EX0FTU0lHTiA9IDMyMywKLSAgICAgWE9SX0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdO
ID0gMzI1LAotICAgICBTVUJfQVNTSUdOID0gMzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAot
ICAgICBSSUdIVF9QQVJFTiA9IDMyOCwKLSAgICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBS
SUdIVF9CUkFDS0VUID0gMzMwLAotICAgICBMRUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9C
UkFDRSA9IDMzMiwKLSAgICAgRE9UID0gMzMzLAotICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09M
T04gPSAzMzUsCi0gICAgIEVRVUFMID0gMzM2LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAg
IEJBTkcgPSAzMzgsCi0gICAgIERBU0ggPSAzMzksCi0gICAgIFRJTERFID0gMzQwLAotICAgICBQ
TFVTID0gMzQxLAotICAgICBTVEFSID0gMzQyLAotICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVS
Q0VOVCA9IDM0NCwKLSAgICAgTEVGVF9BTkdMRSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAz
NDYsCi0gICAgIFZFUlRJQ0FMX0JBUiA9IDM0NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFN
UEVSU0FORCA9IDM0OSwKLSAgICAgUVVFU1RJT04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwK
KyAgICAgUklHSFRfT1AgPSAzMDYsCisgICAgIElOQ19PUCA9IDMwNywKKyAgICAgREVDX09QID0g
MzA4LAorICAgICBMRV9PUCA9IDMwOSwKKyAgICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0g
MzExLAorICAgICBORV9PUCA9IDMxMiwKKyAgICAgQU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9
IDMxNCwKKyAgICAgWE9SX09QID0gMzE1LAorICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBE
SVZfQVNTSUdOID0gMzE3LAorICAgICBBRERfQVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdO
ID0gMzE5LAorICAgICBMRUZUX0FTU0lHTiA9IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIx
LAorICAgICBBTkRfQVNTSUdOID0gMzIyLAorICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBP
Ul9BU1NJR04gPSAzMjQsCisgICAgIFNVQl9BU1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4g
PSAzMjYsCisgICAgIFJJR0hUX1BBUkVOID0gMzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgs
CisgICAgIFJJR0hUX0JSQUNLRVQgPSAzMjksCisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAg
IFJJR0hUX0JSQUNFID0gMzMxLAorICAgICBET1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMzLAor
ICAgICBDT0xPTiA9IDMzNCwKKyAgICAgRVFVQUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMz
NiwKKyAgICAgQkFORyA9IDMzNywKKyAgICAgREFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzks
CisgICAgIFBMVVMgPSAzNDAsCisgICAgIFNUQVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAor
ICAgICBQRVJDRU5UID0gMzQzLAorICAgICBMRUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9B
TkdMRSA9IDM0NSwKKyAgICAgVkVSVElDQUxfQkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywK
KyAgICAgQU1QRVJTQU5EID0gMzQ4LAorICAgICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRp
ZgotLyogVG9rZW5zLiAgKi8KLSNkZWZpbmUgSU5WQVJJQU5UIDI1OAotI2RlZmluZSBISUdIX1BS
RUNJU0lPTiAyNTkKLSNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTiAyNjAKLSNkZWZpbmUgTE9XX1BS
RUNJU0lPTiAyNjEKLSNkZWZpbmUgUFJFQ0lTSU9OIDI2MgotI2RlZmluZSBBVFRSSUJVVEUgMjYz
Ci0jZGVmaW5lIENPTlNUX1FVQUwgMjY0Ci0jZGVmaW5lIEJPT0xfVFlQRSAyNjUKLSNkZWZpbmUg
RkxPQVRfVFlQRSAyNjYKLSNkZWZpbmUgSU5UX1RZUEUgMjY3Ci0jZGVmaW5lIEJSRUFLIDI2OAot
I2RlZmluZSBDT05USU5VRSAyNjkKLSNkZWZpbmUgRE8gMjcwCi0jZGVmaW5lIEVMU0UgMjcxCi0j
ZGVmaW5lIEZPUiAyNzIKLSNkZWZpbmUgSUYgMjczCi0jZGVmaW5lIERJU0NBUkQgMjc0Ci0jZGVm
aW5lIFJFVFVSTiAyNzUKLSNkZWZpbmUgQlZFQzIgMjc2Ci0jZGVmaW5lIEJWRUMzIDI3NwotI2Rl
ZmluZSBCVkVDNCAyNzgKLSNkZWZpbmUgSVZFQzIgMjc5Ci0jZGVmaW5lIElWRUMzIDI4MAotI2Rl
ZmluZSBJVkVDNCAyODEKLSNkZWZpbmUgVkVDMiAyODIKLSNkZWZpbmUgVkVDMyAyODMKLSNkZWZp
bmUgVkVDNCAyODQKLSNkZWZpbmUgTUFUUklYMiAyODUKLSNkZWZpbmUgTUFUUklYMyAyODYKLSNk
ZWZpbmUgTUFUUklYNCAyODcKLSNkZWZpbmUgSU5fUVVBTCAyODgKLSNkZWZpbmUgT1VUX1FVQUwg
Mjg5Ci0jZGVmaW5lIElOT1VUX1FVQUwgMjkwCi0jZGVmaW5lIFVOSUZPUk0gMjkxCi0jZGVmaW5l
IFZBUllJTkcgMjkyCi0jZGVmaW5lIFNUUlVDVCAyOTMKLSNkZWZpbmUgVk9JRF9UWVBFIDI5NAot
I2RlZmluZSBXSElMRSAyOTUKLSNkZWZpbmUgU0FNUExFUjJEIDI5NgotI2RlZmluZSBTQU1QTEVS
Q1VCRSAyOTcKLSNkZWZpbmUgU0FNUExFUl9FWFRFUk5BTF9PRVMgMjk4Ci0jZGVmaW5lIFNBTVBM
RVIyRFJFQ1QgMjk5Ci0jZGVmaW5lIElERU5USUZJRVIgMzAwCi0jZGVmaW5lIFRZUEVfTkFNRSAz
MDEKLSNkZWZpbmUgRkxPQVRDT05TVEFOVCAzMDIKLSNkZWZpbmUgSU5UQ09OU1RBTlQgMzAzCi0j
ZGVmaW5lIEJPT0xDT05TVEFOVCAzMDQKLSNkZWZpbmUgRklFTERfU0VMRUNUSU9OIDMwNQotI2Rl
ZmluZSBMRUZUX09QIDMwNgotI2RlZmluZSBSSUdIVF9PUCAzMDcKLSNkZWZpbmUgSU5DX09QIDMw
OAotI2RlZmluZSBERUNfT1AgMzA5Ci0jZGVmaW5lIExFX09QIDMxMAotI2RlZmluZSBHRV9PUCAz
MTEKLSNkZWZpbmUgRVFfT1AgMzEyCi0jZGVmaW5lIE5FX09QIDMxMwotI2RlZmluZSBBTkRfT1Ag
MzE0Ci0jZGVmaW5lIE9SX09QIDMxNQotI2RlZmluZSBYT1JfT1AgMzE2Ci0jZGVmaW5lIE1VTF9B
U1NJR04gMzE3Ci0jZGVmaW5lIERJVl9BU1NJR04gMzE4Ci0jZGVmaW5lIEFERF9BU1NJR04gMzE5
Ci0jZGVmaW5lIE1PRF9BU1NJR04gMzIwCi0jZGVmaW5lIExFRlRfQVNTSUdOIDMyMQotI2RlZmlu
ZSBSSUdIVF9BU1NJR04gMzIyCi0jZGVmaW5lIEFORF9BU1NJR04gMzIzCi0jZGVmaW5lIFhPUl9B
U1NJR04gMzI0Ci0jZGVmaW5lIE9SX0FTU0lHTiAzMjUKLSNkZWZpbmUgU1VCX0FTU0lHTiAzMjYK
LSNkZWZpbmUgTEVGVF9QQVJFTiAzMjcKLSNkZWZpbmUgUklHSFRfUEFSRU4gMzI4Ci0jZGVmaW5l
IExFRlRfQlJBQ0tFVCAzMjkKLSNkZWZpbmUgUklHSFRfQlJBQ0tFVCAzMzAKLSNkZWZpbmUgTEVG
VF9CUkFDRSAzMzEKLSNkZWZpbmUgUklHSFRfQlJBQ0UgMzMyCi0jZGVmaW5lIERPVCAzMzMKLSNk
ZWZpbmUgQ09NTUEgMzM0Ci0jZGVmaW5lIENPTE9OIDMzNQotI2RlZmluZSBFUVVBTCAzMzYKLSNk
ZWZpbmUgU0VNSUNPTE9OIDMzNwotI2RlZmluZSBCQU5HIDMzOAotI2RlZmluZSBEQVNIIDMzOQot
I2RlZmluZSBUSUxERSAzNDAKLSNkZWZpbmUgUExVUyAzNDEKLSNkZWZpbmUgU1RBUiAzNDIKLSNk
ZWZpbmUgU0xBU0ggMzQzCi0jZGVmaW5lIFBFUkNFTlQgMzQ0Ci0jZGVmaW5lIExFRlRfQU5HTEUg
MzQ1Ci0jZGVmaW5lIFJJR0hUX0FOR0xFIDM0NgotI2RlZmluZSBWRVJUSUNBTF9CQVIgMzQ3Ci0j
ZGVmaW5lIENBUkVUIDM0OAotI2RlZmluZSBBTVBFUlNBTkQgMzQ5Ci0jZGVmaW5lIFFVRVNUSU9O
IDM1MAotCi0KIAogCiAjaWYgISBkZWZpbmVkIFlZU1RZUEUgJiYgISBkZWZpbmVkIFlZU1RZUEVf
SVNfREVDTEFSRUQKIHR5cGVkZWYgdW5pb24gWVlTVFlQRQotCiB7CisKKwogICAgIHN0cnVjdCB7
Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAg
VFN0cmluZyAqc3RyaW5nOwogICAgICAgICAgICAgZmxvYXQgZjsKQEAgLTI0Nyw3ICsxNjUsNiBA
QCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwogICAgIH0g
bGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgVE9w
ZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9kZSogaW50
ZXJtTm9kZTsKQEAgLTI2MSwxOCArMTc4LDQ1IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAg
ICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgICAgICAgICBURnVuY3Rpb24qIGZ1
bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKLSAgICAgICAgICAgIFRUeXBl
TGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgIFRUeXBlTGlzdCogdHlwZUxpc3Q7CisgICAgICAg
ICAgICBURmllbGQqIGZpZWxkOworICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0Owog
ICAgICAgICB9OwogICAgIH0gaW50ZXJtOwotfQotLyogTGluZSAxNTI5IG9mIHlhY2MuYy4gICov
CiAKLQlZWVNUWVBFOworCisKK30gWVlTVFlQRTsKKyMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklB
TCAxCiAjIGRlZmluZSB5eXN0eXBlIFlZU1RZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0
aGRyYXduICovCiAjIGRlZmluZSBZWVNUWVBFX0lTX0RFQ0xBUkVEIDEKLSMgZGVmaW5lIFlZU1RZ
UEVfSVNfVFJJVklBTCAxCiAjZW5kaWYKIAorI2lmICEgZGVmaW5lZCBZWUxUWVBFICYmICEgZGVm
aW5lZCBZWUxUWVBFX0lTX0RFQ0xBUkVECit0eXBlZGVmIHN0cnVjdCBZWUxUWVBFCit7CisgIGlu
dCBmaXJzdF9saW5lOworICBpbnQgZmlyc3RfY29sdW1uOworICBpbnQgbGFzdF9saW5lOworICBp
bnQgbGFzdF9jb2x1bW47Cit9IFlZTFRZUEU7CisjIGRlZmluZSB5eWx0eXBlIFlZTFRZUEUgLyog
b2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCisjIGRlZmluZSBZWUxUWVBFX0lTX0RF
Q0xBUkVEIDEKKyMgZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCisjZW5kaWYKIAogCisjaWZk
ZWYgWVlQQVJTRV9QQVJBTQorI2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVz
cGx1cworaW50IHl5cGFyc2UgKHZvaWQgKllZUEFSU0VfUEFSQU0pOworI2Vsc2UKK2ludCB5eXBh
cnNlICgpOworI2VuZGlmCisjZWxzZSAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KKyNpZiBkZWZpbmVk
IF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKK2ludCB5eXBhcnNlIChUUGFyc2VDb250
ZXh0KiBjb250ZXh0KTsKKyNlbHNlCitpbnQgeXlwYXJzZSAoKTsKKyNlbmRpZgorI2VuZGlmIC8q
ICEgWVlQQVJTRV9QQVJBTSAqLworCisjZW5kaWYgLyogIVlZX1lZX0dMU0xBTkdfVEFCX0hfSU5D
TFVERUQgICovCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50
ZXJtT3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvaW50ZXJtT3V0LmNwcAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybU91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
OSw3ICsxODksOSBAQCBib29sIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0VW5hcnkoVmlzaXQgCiAg
ICAgICAgIGNhc2UgRU9wQW55OiAgICAgICAgICAgIG91dCA8PCAiYW55IjsgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BBbGw6ICAgICAgICAgICAgb3V0IDw8ICJhbGwi
OyAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGRlZmF1bHQ6IG91dC5tZXNzYWdl
KEVQcmVmaXhFcnJvciwgIkJhZCB1bmFyeSBvcCIpOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAgb3V0IDw8ICJCYWQg
dW5hcnkgb3AiOwogICAgIH0KIAogICAgIG91dCA8PCAiICgiIDw8IG5vZGUtPmdldENvbXBsZXRl
U3RyaW5nKCkgPDwgIikiOwpAQCAtMjA0LDcgKzIwNiw4IEBAIGJvb2wgVE91dHB1dFRyYXZlcnNl
cjo6dmlzaXRBZ2dyZWdhdGUoVmkKICAgICBUSW5mb1NpbmtCYXNlJiBvdXQgPSBzaW5rOwogCiAg
ICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wTnVsbCkgewotICAgICAgICBvdXQubWVzc2FnZShF
UHJlZml4RXJyb3IsICJub2RlIGlzIHN0aWxsIEVPcE51bGwhIik7CisgICAgICAgIG91dC5wcmVm
aXgoRVByZWZpeEVycm9yKTsKKyAgICAgICAgb3V0IDw8ICJub2RlIGlzIHN0aWxsIEVPcE51bGwh
IjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yNjMsNyArMjY2LDkgQEAgYm9v
bCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaQogCiAgICAgICAgIGNhc2UgRU9w
RGVjbGFyYXRpb246ICAgb3V0IDw8ICJEZWNsYXJhdGlvbjogIjsgICBicmVhazsKIAotICAgICAg
ICBkZWZhdWx0OiBvdXQubWVzc2FnZShFUHJlZml4RXJyb3IsICJCYWQgYWdncmVnYXRpb24gb3Ai
KTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIG91dC5wcmVmaXgoRVByZWZpeEVycm9y
KTsKKyAgICAgICAgICAgIG91dCA8PCAiQmFkIGFnZ3JlZ2F0aW9uIG9wIjsKICAgICB9CiAKICAg
ICBpZiAobm9kZS0+Z2V0T3AoKSAhPSBFT3BTZXF1ZW5jZSAmJiBub2RlLT5nZXRPcCgpICE9IEVP
cFBhcmFtZXRlcnMpCkBAIC0zMTEsOSArMzE2LDkgQEAgdm9pZCBUT3V0cHV0VHJhdmVyc2VyOjp2
aXNpdENvbnN0YW50VW5pbwogewogICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IHNpbms7CiAKLSAg
ICBpbnQgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90
IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogCi0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
IGkrKykgewogICAgICAgICBPdXRwdXRUcmVlVGV4dChvdXQsIG5vZGUsIGRlcHRoKTsKICAgICAg
ICAgc3dpdGNoIChub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpW2ldLmdldFR5cGUoKSkgewog
ICAgICAgICAgICAgY2FzZSBFYnRCb29sOgpAQCAtMzM0LDcgKzMzOSw3IEBAIHZvaWQgVE91dHB1
dFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW8KICAgICAgICAgICAgICAgICBvdXQgPDwgIiAo
Y29uc3QgaW50KVxuIjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgb3V0Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJV
bmtub3duIGNvbnN0YW50Iiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBvdXQu
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiVW5rbm93biBj
b25zdGFudCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1l
ZGlhdGUuaAkocmV2aXNpb24gMTUyNTk1KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
Ly8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xOCw2ICsxOCw3IEBACiAK
ICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAorI2luY2x1ZGUgPGFsZ29yaXRobT4K
ICNpbmNsdWRlICJjb21waWxlci9Db21tb24uaCIKICNpbmNsdWRlICJjb21waWxlci9UeXBlcy5o
IgogI2luY2x1ZGUgImNvbXBpbGVyL0NvbnN0YW50VW5pb24uaCIKQEAgLTIwNiwxMCArMjA3LDE2
IEBAIGNsYXNzIFRJbnRlcm1Ob2RlIHsKIHB1YmxpYzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdf
REVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpCiAKLSAgICBUSW50ZXJtTm9kZSgpIDogbGluZSgw
KSB7fQorICAgIFRJbnRlcm1Ob2RlKCkgeworICAgICAgICAvLyBUT0RPOiBNb3ZlIHRoaXMgdG8g
VFNvdXJjZUxvYyBjb25zdHJ1Y3RvcgorICAgICAgICAvLyBhZnRlciBnZXR0aW5nIHJpZCBvZiBU
UHVibGljVHlwZS4KKyAgICAgICAgbGluZS5maXJzdF9maWxlID0gbGluZS5sYXN0X2ZpbGUgPSAw
OworICAgICAgICBsaW5lLmZpcnN0X2xpbmUgPSBsaW5lLmxhc3RfbGluZSA9IDA7CisgICAgfQor
ICAgIHZpcnR1YWwgflRJbnRlcm1Ob2RlKCkgeyB9CiAKLSAgICBUU291cmNlTG9jIGdldExpbmUo
KSBjb25zdCB7IHJldHVybiBsaW5lOyB9Ci0gICAgdm9pZCBzZXRMaW5lKFRTb3VyY2VMb2MgbCkg
eyBsaW5lID0gbDsgfQorICAgIGNvbnN0IFRTb3VyY2VMb2MmIGdldExpbmUoKSBjb25zdCB7IHJl
dHVybiBsaW5lOyB9CisgICAgdm9pZCBzZXRMaW5lKGNvbnN0IFRTb3VyY2VMb2MmIGwpIHsgbGlu
ZSA9IGw7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKikg
PSAwOwogICAgIHZpcnR1YWwgVEludGVybVR5cGVkKiBnZXRBc1R5cGVkKCkgeyByZXR1cm4gMDsg
fQpAQCAtMjIwLDcgKzIyNyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFRJbnRlcm1TZWxlY3Rp
b24qIGdldEFzU2VsZWN0aW9uTm9kZSgpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFRJbnRl
cm1TeW1ib2wqIGdldEFzU3ltYm9sTm9kZSgpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFRJ
bnRlcm1Mb29wKiBnZXRBc0xvb3BOb2RlKCkgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgflRJ
bnRlcm1Ob2RlKCkgeyB9CiAKIHByb3RlY3RlZDoKICAgICBUU291cmNlTG9jIGxpbmU7CkBAIC0z
NTgsNyArMzY0LDEwIEBAIHB1YmxpYzoKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbihDb25zdGFu
dFVuaW9uICp1bmlvblBvaW50ZXIsIGNvbnN0IFRUeXBlJiB0KSA6IFRJbnRlcm1UeXBlZCh0KSwg
dW5pb25BcnJheVBvaW50ZXIodW5pb25Qb2ludGVyKSB7IH0KIAogICAgIENvbnN0YW50VW5pb24q
IGdldFVuaW9uQXJyYXlQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXI7
IH0KLSAgICB2b2lkIHNldFVuaW9uQXJyYXlQb2ludGVyKENvbnN0YW50VW5pb24gKmMpIHsgdW5p
b25BcnJheVBvaW50ZXIgPSBjOyB9CisgICAgCisgICAgaW50IGdldElDb25zdChpbnQgaW5kZXgp
IGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVyID8gdW5pb25BcnJheVBvaW50ZXJbaW5k
ZXhdLmdldElDb25zdCgpIDogMDsgfQorICAgIGZsb2F0IGdldEZDb25zdChpbnQgaW5kZXgpIGNv
bnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVyID8gdW5pb25BcnJheVBvaW50ZXJbaW5kZXhd
LmdldEZDb25zdCgpIDogMC4wZjsgfQorICAgIGJvb2wgZ2V0QkNvbnN0KGludCBpbmRleCkgY29u
c3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXIgPyB1bmlvbkFycmF5UG9pbnRlcltpbmRleF0u
Z2V0QkNvbnN0KCkgOiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBUSW50ZXJtQ29uc3RhbnRVbmlv
biogZ2V0QXNDb25zdGFudFVuaW9uKCkgIHsgcmV0dXJuIHRoaXM7IH0KICAgICB2aXJ0dWFsIHZv
aWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciopOwpAQCAtNDQ3LDcgKzQ1Niw3IEBAIHR5cGVk
ZWYgVFZlY3RvcjxpbnQ+IFRRdWFsaWZpZXJMaXN0OwogLy8KIGNsYXNzIFRJbnRlcm1BZ2dyZWdh
dGUgOiBwdWJsaWMgVEludGVybU9wZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBUSW50ZXJtQWdncmVn
YXRlKCkgOiBUSW50ZXJtT3BlcmF0b3IoRU9wTnVsbCksIHVzZXJEZWZpbmVkKGZhbHNlKSwgZW5k
TGluZSgwKSwgdXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSkgeyB9CisgICAgVEludGVybUFnZ3Jl
Z2F0ZSgpIDogVEludGVybU9wZXJhdG9yKEVPcE51bGwpLCB1c2VyRGVmaW5lZChmYWxzZSksIHVz
ZUVtdWxhdGVkRnVuY3Rpb24oZmFsc2UpIHsgfQogICAgIFRJbnRlcm1BZ2dyZWdhdGUoVE9wZXJh
dG9yIG8pIDogVEludGVybU9wZXJhdG9yKG8pLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKGZhbHNlKSB7
IH0KICAgICB+VEludGVybUFnZ3JlZ2F0ZSgpIHsgfQogCkBAIC00NjcsOSArNDc2LDYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0RGVidWcoYm9vbCBkKSB7IGRlYnVnID0gZDsgfQogICAgIGJvb2wg
Z2V0RGVidWcoKSB7IHJldHVybiBkZWJ1ZzsgfQogCi0gICAgdm9pZCBzZXRFbmRMaW5lKFRTb3Vy
Y2VMb2MgbGluZSkgeyBlbmRMaW5lID0gbGluZTsgfQotICAgIFRTb3VyY2VMb2MgZ2V0RW5kTGlu
ZSgpIGNvbnN0IHsgcmV0dXJuIGVuZExpbmU7IH0KLQogICAgIHZvaWQgc2V0VXNlRW11bGF0ZWRG
dW5jdGlvbigpIHsgdXNlRW11bGF0ZWRGdW5jdGlvbiA9IHRydWU7IH0KICAgICBib29sIGdldFVz
ZUVtdWxhdGVkRnVuY3Rpb24oKSB7IHJldHVybiB1c2VFbXVsYXRlZEZ1bmN0aW9uOyB9CiAKQEAg
LTQ4Miw3ICs0ODgsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIG9wdGltaXplOwogICAgIGJv
b2wgZGVidWc7Ci0gICAgVFNvdXJjZUxvYyBlbmRMaW5lOwogCiAgICAgLy8gSWYgc2V0IHRvIHRy
dWUsIHJlcGxhY2UgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGNhbGwgd2l0aCBhbiBlbXVsYXRlZCBv
bmUKICAgICAvLyB0byB3b3JrIGFyb3VuZCBkcml2ZXIgYnVncy4KQEAgLTUzOCw3ICs1NDMsOCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBpblZpc2l0KGluVmlzaXQpLAogICAgICAgICAgICAgcG9z
dFZpc2l0KHBvc3RWaXNpdCksCiAgICAgICAgICAgICByaWdodFRvTGVmdChyaWdodFRvTGVmdCks
Ci0gICAgICAgICAgICBkZXB0aCgwKSB7fQorICAgICAgICAgICAgZGVwdGgoMCksCisgICAgICAg
ICAgICBtYXhEZXB0aCgwKSB7fQogICAgIHZpcnR1YWwgflRJbnRlcm1UcmF2ZXJzZXIoKSB7fTsK
IAogICAgIHZpcnR1YWwgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKikge30KQEAgLTU1
MCw3ICs1NTYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHZpc2l0TG9vcChWaXNpdCB2
aXNpdCwgVEludGVybUxvb3AqKSB7cmV0dXJuIHRydWU7fQogICAgIHZpcnR1YWwgYm9vbCB2aXNp
dEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCopIHtyZXR1cm4gdHJ1ZTt9CiAKLSAg
ICB2b2lkIGluY3JlbWVudERlcHRoKCkge2RlcHRoKys7fQorICAgIGludCBnZXRNYXhEZXB0aCgp
IGNvbnN0IHtyZXR1cm4gbWF4RGVwdGg7fQorICAgIHZvaWQgaW5jcmVtZW50RGVwdGgoKSB7ZGVw
dGgrKzsgbWF4RGVwdGggPSBzdGQ6Om1heChtYXhEZXB0aCwgZGVwdGgpOyB9CiAgICAgdm9pZCBk
ZWNyZW1lbnREZXB0aCgpIHtkZXB0aC0tO30KIAogICAgIC8vIFJldHVybiB0aGUgb3JpZ2luYWwg
bmFtZSBpZiBoYXNoIGZ1bmN0aW9uIHBvaW50ZXIgaXMgTlVMTDsKQEAgLTU2NCw2ICs1NzEsNyBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBpbnQgZGVwdGg7CisgICAgaW50IG1heERlcHRo
OwogfTsKIAogI2VuZGlmIC8vIF9fSU5URVJNRURJQVRFX0gKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5o
CShyZXZpc2lvbiAxNTI1OTUpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvbG9jYWxpbnRlcm1lZGlhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMzQgKzI1LDMzIEBA
IHB1YmxpYzogICAgCiAgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxs
b2NhdG9yKQogCiAgICAgVEludGVybWVkaWF0ZShUSW5mb1NpbmsmIGkpIDogaW5mb1NpbmsoaSkg
eyB9Ci0gICAgVEludGVybVN5bWJvbCogYWRkU3ltYm9sKGludCBJZCwgY29uc3QgVFN0cmluZyYs
IGNvbnN0IFRUeXBlJiwgVFNvdXJjZUxvYyk7CisgICAgVEludGVybVN5bWJvbCogYWRkU3ltYm9s
KGludCBJZCwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRUeXBlJiwgY29uc3QgVFNvdXJjZUxvYyYp
OwogICAgIFRJbnRlcm1UeXBlZCogYWRkQ29udmVyc2lvbihUT3BlcmF0b3IsIGNvbnN0IFRUeXBl
JiwgVEludGVybVR5cGVkKik7Ci0gICAgVEludGVybVR5cGVkKiBhZGRCaW5hcnlNYXRoKFRPcGVy
YXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNl
TG9jLCBUU3ltYm9sVGFibGUmKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZEFzc2lnbihUT3BlcmF0
b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxv
Yyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRJbmRleChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBl
ZCogYmFzZSwgVEludGVybVR5cGVkKiBpbmRleCwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5
cGVkKiBhZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtTm9kZSogY2hpbGQsIFRTb3Vy
Y2VMb2MsIFRTeW1ib2xUYWJsZSYpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGdyb3dBZ2dyZWdh
dGUoVEludGVybU5vZGUqIGxlZnQsIFRJbnRlcm1Ob2RlKiByaWdodCwgVFNvdXJjZUxvYyk7Ci0g
ICAgVEludGVybUFnZ3JlZ2F0ZSogbWFrZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbm9kZSwgVFNv
dXJjZUxvYyk7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSogc2V0QWdncmVnYXRlT3BlcmF0b3IoVElu
dGVybU5vZGUqLCBUT3BlcmF0b3IsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1Ob2RlKiAgYWRk
U2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQYWlyIGNvZGUsIFRTb3Vy
Y2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29u
ZCwgVEludGVybVR5cGVkKiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCogZmFsc2VCbG9jaywgVFNv
dXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb21tYShUSW50ZXJtVHlwZWQqIGxlZnQs
IFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1Db25zdGFudFVu
aW9uKiBhZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qLCBjb25zdCBUVHlwZSYsIFRTb3Vy
Y2VMb2MpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQmluYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJ
bnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYs
IFRTeW1ib2xUYWJsZSYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQXNzaWduKFRPcGVyYXRvciBv
cCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNl
TG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRJbmRleChUT3BlcmF0b3Igb3AsIFRJbnRlcm1U
eXBlZCogYmFzZSwgVEludGVybVR5cGVkKiBpbmRleCwgY29uc3QgVFNvdXJjZUxvYyYpOworICAg
IFRJbnRlcm1UeXBlZCogYWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIGNo
aWxkLCBjb25zdCBUU291cmNlTG9jJiwgVFN5bWJvbFRhYmxlJik7CisgICAgVEludGVybUFnZ3Jl
Z2F0ZSogZ3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVmdCwgVEludGVybU5vZGUqIHJpZ2h0
LCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybUFnZ3JlZ2F0ZSogbWFrZUFnZ3JlZ2F0
ZShUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1BZ2dy
ZWdhdGUqIHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKFRJbnRlcm1Ob2RlKiwgVE9wZXJhdG9yLCBjb25z
dCBUU291cmNlTG9jJik7CisgICAgVEludGVybU5vZGUqICBhZGRTZWxlY3Rpb24oVEludGVybVR5
cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBhaXIgY29kZSwgY29uc3QgVFNvdXJjZUxvYyYpOworICAg
IFRJbnRlcm1UeXBlZCogYWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5
cGVkKiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCogZmFsc2VCbG9jaywgY29uc3QgVFNvdXJjZUxv
YyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQ29tbWEoVEludGVybVR5cGVkKiBsZWZ0LCBUSW50
ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybUNvbnN0YW50
VW5pb24qIGFkZENvbnN0YW50VW5pb24oQ29uc3RhbnRVbmlvbiosIGNvbnN0IFRUeXBlJiwgY29u
c3QgVFNvdXJjZUxvYyYpOwogICAgIFRJbnRlcm1UeXBlZCogcHJvbW90ZUNvbnN0YW50VW5pb24o
VEJhc2ljVHlwZSwgVEludGVybUNvbnN0YW50VW5pb24qKSA7Ci0gICAgYm9vbCBwYXJzZUNvbnN0
VHJlZShUU291cmNlTG9jLCBUSW50ZXJtTm9kZSosIENvbnN0YW50VW5pb24qLCBUT3BlcmF0b3Is
IFRTeW1ib2xUYWJsZSYsIFRUeXBlLCBib29sIHNpbmdsZUNvbnN0YW50UGFyYW0gPSBmYWxzZSk7
ICAgICAgICAKLSAgICBUSW50ZXJtTm9kZSogYWRkTG9vcChUTG9vcFR5cGUsIFRJbnRlcm1Ob2Rl
KiwgVEludGVybVR5cGVkKiwgVEludGVybVR5cGVkKiwgVEludGVybU5vZGUqLCBUU291cmNlTG9j
KTsKLSAgICBUSW50ZXJtQnJhbmNoKiBhZGRCcmFuY2goVE9wZXJhdG9yLCBUU291cmNlTG9jKTsK
LSAgICBUSW50ZXJtQnJhbmNoKiBhZGRCcmFuY2goVE9wZXJhdG9yLCBUSW50ZXJtVHlwZWQqLCBU
U291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZFN3aXp6bGUoVFZlY3RvckZpZWxkcyYs
IFRTb3VyY2VMb2MpOworICAgIGJvb2wgcGFyc2VDb25zdFRyZWUoY29uc3QgVFNvdXJjZUxvYyYs
IFRJbnRlcm1Ob2RlKiwgQ29uc3RhbnRVbmlvbiosIFRPcGVyYXRvciwgVFN5bWJvbFRhYmxlJiwg
VFR5cGUsIGJvb2wgc2luZ2xlQ29uc3RhbnRQYXJhbSA9IGZhbHNlKTsgICAgICAgIAorICAgIFRJ
bnRlcm1Ob2RlKiBhZGRMb29wKFRMb29wVHlwZSwgVEludGVybU5vZGUqLCBUSW50ZXJtVHlwZWQq
LCBUSW50ZXJtVHlwZWQqLCBUSW50ZXJtTm9kZSosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBU
SW50ZXJtQnJhbmNoKiBhZGRCcmFuY2goVE9wZXJhdG9yLCBjb25zdCBUU291cmNlTG9jJik7Cisg
ICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgVEludGVybVR5cGVkKiwgY29u
c3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkU3dpenpsZShUVmVjdG9yRmll
bGRzJiwgY29uc3QgVFNvdXJjZUxvYyYpOwogICAgIGJvb2wgcG9zdFByb2Nlc3MoVEludGVybU5v
ZGUqKTsKLQl2b2lkIHJlbW92ZShUSW50ZXJtTm9kZSopOworICAgIHZvaWQgcmVtb3ZlKFRJbnRl
cm1Ob2RlKik7CiAgICAgdm9pZCBvdXRwdXRUcmVlKFRJbnRlcm1Ob2RlKik7Ci0gICAgCi1wcm90
ZWN0ZWQ6Ci0gICAgVEluZm9TaW5rJiBpbmZvU2luazsKIAogcHJpdmF0ZToKICAgICB2b2lkIG9w
ZXJhdG9yPShUSW50ZXJtZWRpYXRlJik7IC8vIHByZXZlbnQgYXNzaWdubWVudHMKKworICAgIFRJ
bmZvU2luayYgaW5mb1Npbms7CiB9OwogCiAjZW5kaWYgLy8gX0xPQ0FMX0lOVEVSTUVESUFURV9J
TkNMVURFRF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wYXJz
ZUNvbnN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcGFyc2VDb25zdC5jcHAJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wYXJzZUNvbnN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsMTYgKzM4LDE2IEBAIHByb3RlY3RlZDoKICAgICBib29sIHZpc2l0TG9vcChWaXNpdCB2aXNp
dCwgVEludGVybUxvb3AqKTsKICAgICBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50
ZXJtQnJhbmNoKik7CiAKLSAgICBpbnQgaW5kZXg7CisgICAgc2l6ZV90IGluZGV4OwogICAgIENv
bnN0YW50VW5pb24gKnVuaW9uQXJyYXk7CiAgICAgVFR5cGUgdHlwZTsKICAgICBUT3BlcmF0b3Ig
Y29uc3RydWN0b3JUeXBlOwogICAgIGJvb2wgc2luZ2xlQ29uc3RhbnRQYXJhbTsKICAgICBUSW5m
b1NpbmsmIGluZm9TaW5rOwogICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGU7Ci0gICAgaW50
IHNpemU7IC8vIHNpemUgb2YgdGhlIGNvbnN0cnVjdG9yICggNCBmb3IgdmVjNCkKKyAgICBzaXpl
X3Qgc2l6ZTsgLy8gc2l6ZSBvZiB0aGUgY29uc3RydWN0b3IgKCA0IGZvciB2ZWM0KQogICAgIGJv
b2wgaXNNYXRyaXg7Ci0gICAgaW50IG1hdHJpeFNpemU7IC8vIGRpbWVuc2lvbiBvZiB0aGUgbWF0
cml4IChub21pbmFsIHNpemUgYW5kIG5vdCB0aGUgaW5zdGFuY2Ugc2l6ZSkKKyAgICBzaXplX3Qg
bWF0cml4U2l6ZTsgLy8gZGltZW5zaW9uIG9mIHRoZSBtYXRyaXggKG5vbWluYWwgc2l6ZSBhbmQg
bm90IHRoZSBpbnN0YW5jZSBzaXplKQogfTsKIAogLy8KQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVj
dGVkOgogCiB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCog
bm9kZSkKIHsKLSAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3Is
ICJTeW1ib2wgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExp
bmUoKSk7CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBu
b2RlLT5nZXRMaW5lKCksICJTeW1ib2wgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3Rv
ciIpOwogICAgIHJldHVybjsKIAogfQpAQCAtNzQsMTIgKzc0LDEyIEBAIGJvb2wgVENvbnN0VHJh
dmVyc2VyOjp2aXNpdEJpbmFyeShWaXNpdCAKICAgICAgICAgVFN0cmluZyBidWY7CiAgICAgICAg
IGJ1Zi5hcHBlbmQoIidjb25zdHJ1Y3RvcicgOiBhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvICIp
OwogICAgICAgICBidWYuYXBwZW5kKHR5cGUuZ2V0Q29tcGxldGVTdHJpbmcoKSk7Ci0gICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsIGJ1Zi5jX3N0cigpLCBub2RlLT5n
ZXRMaW5lKCkpOworICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBu
b2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigpKTsKICAgICAgICAgZXJyb3IgPSB0cnVlOwogICAg
ICAgICByZXR1cm4gZmFsc2U7ICAKICAgICB9CiAKLSAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShF
UHJlZml4SW50ZXJuYWxFcnJvciwgIkJpbmFyeSBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0
cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmluYXJ5IE5vZGUgZm91bmQgaW4g
Y29uc3RhbnQgY29uc3RydWN0b3IiKTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC04
OSw3ICs4OSw3IEBAIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdFVuYXJ5KFZpc2l0IHYKICAg
ICBUU3RyaW5nIGJ1ZjsKICAgICBidWYuYXBwZW5kKCInY29uc3RydWN0b3InIDogYXNzaWduaW5n
IG5vbi1jb25zdGFudCB0byAiKTsKICAgICBidWYuYXBwZW5kKHR5cGUuZ2V0Q29tcGxldGVTdHJp
bmcoKSk7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwgYnVmLmNfc3Ry
KCksIG5vZGUtPmdldExpbmUoKSk7CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhF
cnJvciwgbm9kZS0+Z2V0TGluZSgpLCBidWYuY19zdHIoKSk7CiAgICAgZXJyb3IgPSB0cnVlOwog
ICAgIHJldHVybiBmYWxzZTsgIAogfQpAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wgVENvbnN0VHJh
dmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKICAgICAgICAgVFN0cmluZyBidWY7CiAgICAgICAg
IGJ1Zi5hcHBlbmQoIidjb25zdHJ1Y3RvcicgOiBhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvICIp
OwogICAgICAgICBidWYuYXBwZW5kKHR5cGUuZ2V0Q29tcGxldGVTdHJpbmcoKSk7Ci0gICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsIGJ1Zi5jX3N0cigpLCBub2RlLT5n
ZXRMaW5lKCkpOworICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBu
b2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigpKTsKICAgICAgICAgZXJyb3IgPSB0cnVlOwogICAg
ICAgICByZXR1cm4gZmFsc2U7ICAKICAgICB9CkBAIC0xNDQsMjQgKzE0NCwzMSBAQCBib29sIFRD
b25zdFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzCiAKIGJvb2wgVENvbnN0VHJhdmVyc2Vy
Ojp2aXNpdFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVEludGVybVNlbGVjdGlvbiogbm9kZSkKIHsK
LSAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJTZWxlY3Rp
b24gTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExpbmUoKSk7
CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5n
ZXRMaW5lKCksICJTZWxlY3Rpb24gTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIp
OwogICAgIGVycm9yID0gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgVENvbnN0
VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24qIG5vZGUp
CiB7CisgICAgaWYgKCFub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKQorICAgIHsKKyAgICAg
ICAgLy8gVGhlIGNvbnN0YW50IHdhcyBub3QgaW5pdGlhbGl6ZWQsIHRoaXMgc2hvdWxkIGFscmVh
ZHkgaGF2ZSBiZWVuIGxvZ2dlZAorICAgICAgICBhc3NlcnQoaW5mb1NpbmsuaW5mby5zaXplKCkg
IT0gMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBDb25zdGFudFVuaW9uKiBsZWZ0
VW5pb25BcnJheSA9IHVuaW9uQXJyYXk7Ci0gICAgaW50IGluc3RhbmNlU2l6ZSA9IHR5cGUuZ2V0
T2JqZWN0U2l6ZSgpOworICAgIHNpemVfdCBpbnN0YW5jZVNpemUgPSB0eXBlLmdldE9iamVjdFNp
emUoKTsKIAogICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmICghc2luZ2xlQ29uc3RhbnRQYXJhbSkgewotICAgICAgICBpbnQgc2l6ZSA9IG5v
ZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIHNpemVfdCBzaXplID0gbm9k
ZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKICAgICAKICAgICAgICAgQ29uc3RhbnRVbmlv
biAqcmlnaHRVbmlvbkFycmF5ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICAg
ICAgZm9yIChpbnQgaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2VT
aXplKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5
W2luZGV4XSA9IHJpZ2h0VW5pb25BcnJheVtpXTsKQEAgLTE2OSwxMSArMTc2LDExIEBAIHZvaWQg
VENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24KICAgICAgICAgICAgIChpbmRleCkr
KzsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGludCB0b3RhbFNpemUgPSBpbmRl
eCArIHNpemU7CisgICAgICAgIHNpemVfdCB0b3RhbFNpemUgPSBpbmRleCArIHNpemU7CiAgICAg
ICAgIENvbnN0YW50VW5pb24gKnJpZ2h0VW5pb25BcnJheSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCk7CiAgICAgICAgIGlmICghaXNNYXRyaXgpIHsKLSAgICAgICAgICAgIGludCBjb3Vu
dCA9IDA7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkr
KykgeworICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKKyAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSBpbmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGkgPj0gaW5zdGFuY2VTaXplKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE4
NSw5ICsxOTIsOSBAQCB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uCiAg
ICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSB7ICAvLyBmb3IgbWF0cml4IGNvbnN0cnVjdG9ycwotICAgICAgICAgICAgaW50IGNvdW50ID0g
MDsKLSAgICAgICAgICAgIGludCBlbGVtZW50ID0gaW5kZXg7Ci0gICAgICAgICAgICBmb3IgKGlu
dCBpID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkrKykgeworICAgICAgICAgICAgc2l6ZV90IGNv
dW50ID0gMDsKKyAgICAgICAgICAgIHNpemVfdCBlbGVtZW50ID0gaW5kZXg7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkrKykgewogICAgICAgICAg
ICAgICAgIGlmIChpID49IGluc3RhbmNlU2l6ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIGlmIChlbGVtZW50IC0gaSA9PSAwIHx8IChpIC0gZWxlbWVudCkg
JSAobWF0cml4U2l6ZSArIDEpID09IDAgKQpAQCAtMjA2LDE0ICsyMTMsMTQgQEAgdm9pZCBUQ29u
c3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbgogCiBib29sIFRDb25zdFRyYXZlcnNlcjo6
dmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCogbm9kZSkKIHsKLSAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJMb29wIE5vZGUgZm91bmQgaW4g
Y29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5lKCkpOworICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiTG9vcCBO
b2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgZXJyb3IgPSB0cnVlOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QnJhbmNo
KFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJyYW5jaCBOb2RlIGZvdW5kIGluIGNvbnN0
YW50IGNvbnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJyYW5jaCBOb2Rl
IGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgZXJyb3IgPSB0cnVlOwogICAg
IHJldHVybiBmYWxzZTsKIH0KQEAgLTIyMyw3ICsyMzAsNyBAQCBib29sIFRDb25zdFRyYXZlcnNl
cjo6dmlzaXRCcmFuY2goVmlzaXQgCiAvLyBJbmRpdmlkdWFsIGZ1bmN0aW9ucyBjYW4gYmUgaW5p
dGlhbGl6ZWQgdG8gMCB0byBza2lwIHByb2Nlc3Npbmcgb2YgdGhhdAogLy8gdHlwZSBvZiBub2Rl
LiAgSXQncyBjaGlsZHJlbiB3aWxsIHN0aWxsIGJlIHByb2Nlc3NlZC4KIC8vCi1ib29sIFRJbnRl
cm1lZGlhdGU6OnBhcnNlQ29uc3RUcmVlKFRTb3VyY2VMb2MgbGluZSwgVEludGVybU5vZGUqIHJv
b3QsIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXksIFRPcGVyYXRvciBjb25zdHJ1Y3RvclR5cGUs
IFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUsIFRUeXBlIHQsIGJvb2wgc2luZ2xlQ29uc3RhbnRQ
YXJhbSkKK2Jvb2wgVEludGVybWVkaWF0ZTo6cGFyc2VDb25zdFRyZWUoY29uc3QgVFNvdXJjZUxv
YyYgbGluZSwgVEludGVybU5vZGUqIHJvb3QsIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXksIFRP
cGVyYXRvciBjb25zdHJ1Y3RvclR5cGUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUsIFRUeXBl
IHQsIGJvb2wgc2luZ2xlQ29uc3RhbnRQYXJhbSkKIHsKICAgICBpZiAocm9vdCA9PSAwKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lv
blBhcnNlci5jcHAJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMjQgKzEsMjIgQEAKLS8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBC
aXNvbiAyLjMuICAqLworLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuNC4y
LiAgKi8KIAogLyogU2tlbGV0b24gaW1wbGVtZW50YXRpb24gZm9yIEJpc29uJ3MgWWFjYy1saWtl
IHBhcnNlcnMgaW4gQwotCi0gICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAs
IDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKLSAgIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLgotCi0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgCisgICAgICBDb3B5cmlnaHQgKEMp
IDE5ODQsIDE5ODktMTk5MCwgMjAwMC0yMDA2LCAyMDA5LTIwMTAgRnJlZSBTb2Z0d2FyZQorICAg
Rm91bmRhdGlvbiwgSW5jLgorICAgCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTog
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5
b3VyIG9wdGlvbikKLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotCisgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIAogICAgVGhpcyBwcm9ncmFtIGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLQorICAgCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4gICovCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v
d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAKIC8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24s
IHlvdSBtYXkgY3JlYXRlIGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250YWlucwogICAgcGFydCBvciBh
bGwgb2YgdGhlIEJpc29uIHBhcnNlciBza2VsZXRvbiBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsK
QEAgLTI5LDcgKzI3LDcgQEAKICAgIHNwZWNpYWwgZXhjZXB0aW9uLCB3aGljaCB3aWxsIGNhdXNl
IHRoZSBza2VsZXRvbiBhbmQgdGhlIHJlc3VsdGluZwogICAgQmlzb24gb3V0cHV0IGZpbGVzIHRv
IGJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2Ugd2l0
aG91dCB0aGlzIHNwZWNpYWwgZXhjZXB0aW9uLgotCisgICAKICAgIFRoaXMgc3BlY2lhbCBleGNl
cHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KICAgIHZl
cnNpb24gMi4yIG9mIEJpc29uLiAgKi8KIApAQCAtNDcsNyArNDUsNyBAQAogI2RlZmluZSBZWUJJ
U09OIDEKIAogLyogQmlzb24gdmVyc2lvbi4gICovCi0jZGVmaW5lIFlZQklTT05fVkVSU0lPTiAi
Mi4zIgorI2RlZmluZSBZWUJJU09OX1ZFUlNJT04gIjIuNC4yIgogCiAvKiBTa2VsZXRvbiBuYW1l
LiAgKi8KICNkZWZpbmUgWVlTS0VMRVRPTl9OQU1FICJ5YWNjLmMiCkBAIC01NSw1MCArNTMsMjMg
QEAKIC8qIFB1cmUgcGFyc2Vycy4gICovCiAjZGVmaW5lIFlZUFVSRSAxCiAKKy8qIFB1c2ggcGFy
c2Vycy4gICovCisjZGVmaW5lIFlZUFVTSCAwCisKKy8qIFB1bGwgcGFyc2Vycy4gICovCisjZGVm
aW5lIFlZUFVMTCAxCisKIC8qIFVzaW5nIGxvY2F0aW9ucy4gICovCiAjZGVmaW5lIFlZTFNQX05F
RURFRCAwCiAKIC8qIFN1YnN0aXR1dGUgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBuYW1lcy4g
ICovCi0jZGVmaW5lIHl5cGFyc2UgcHBwYXJzZQotI2RlZmluZSB5eWxleCAgIHBwbGV4Ci0jZGVm
aW5lIHl5ZXJyb3IgcHBlcnJvcgotI2RlZmluZSB5eWx2YWwgIHBwbHZhbAotI2RlZmluZSB5eWNo
YXIgIHBwY2hhcgotI2RlZmluZSB5eWRlYnVnIHBwZGVidWcKLSNkZWZpbmUgeXluZXJycyBwcG5l
cnJzCi0KLQotLyogVG9rZW5zLiAgKi8KLSNpZm5kZWYgWVlUT0tFTlRZUEUKLSMgZGVmaW5lIFlZ
VE9LRU5UWVBFCi0gICAvKiBQdXQgdGhlIHRva2VucyBpbnRvIHRoZSBzeW1ib2wgdGFibGUsIHNv
IHRoYXQgR0RCIGFuZCBvdGhlciBkZWJ1Z2dlcnMKLSAgICAgIGtub3cgYWJvdXQgdGhlbS4gICov
Ci0gICBlbnVtIHl5dG9rZW50eXBlIHsKLSAgICAgVE9LX0NPTlNUX0lOVCA9IDI1OCwKLSAgICAg
VE9LX09QX09SID0gMjU5LAotICAgICBUT0tfT1BfQU5EID0gMjYwLAotICAgICBUT0tfT1BfTkUg
PSAyNjEsCi0gICAgIFRPS19PUF9FUSA9IDI2MiwKLSAgICAgVE9LX09QX0dFID0gMjYzLAotICAg
ICBUT0tfT1BfTEUgPSAyNjQsCi0gICAgIFRPS19PUF9SSUdIVCA9IDI2NSwKLSAgICAgVE9LX09Q
X0xFRlQgPSAyNjYsCi0gICAgIFRPS19VTkFSWSA9IDI2NwotICAgfTsKLSNlbmRpZgotLyogVG9r
ZW5zLiAgKi8KLSNkZWZpbmUgVE9LX0NPTlNUX0lOVCAyNTgKLSNkZWZpbmUgVE9LX09QX09SIDI1
OQotI2RlZmluZSBUT0tfT1BfQU5EIDI2MAotI2RlZmluZSBUT0tfT1BfTkUgMjYxCi0jZGVmaW5l
IFRPS19PUF9FUSAyNjIKLSNkZWZpbmUgVE9LX09QX0dFIDI2MwotI2RlZmluZSBUT0tfT1BfTEUg
MjY0Ci0jZGVmaW5lIFRPS19PUF9SSUdIVCAyNjUKLSNkZWZpbmUgVE9LX09QX0xFRlQgMjY2Ci0j
ZGVmaW5lIFRPS19VTkFSWSAyNjcKLQotCisjZGVmaW5lIHl5cGFyc2UgICAgICAgICBwcHBhcnNl
CisjZGVmaW5lIHl5bGV4ICAgICAgICAgICBwcGxleAorI2RlZmluZSB5eWVycm9yICAgICAgICAg
cHBlcnJvcgorI2RlZmluZSB5eWx2YWwgICAgICAgICAgcHBsdmFsCisjZGVmaW5lIHl5Y2hhciAg
ICAgICAgICBwcGNoYXIKKyNkZWZpbmUgeXlkZWJ1ZyAgICAgICAgIHBwZGVidWcKKyNkZWZpbmUg
eXluZXJycyAgICAgICAgIHBwbmVycnMKIAogCiAvKiBDb3B5IHRoZSBmaXJzdCBwYXJ0IG9mIHVz
ZXIgZGVjbGFyYXRpb25zLiAgKi8KQEAgLTE1OCw2ICsxMjksNyBAQCBzdGF0aWMgaW50IHl5bGV4
KFlZU1RZUEUqIGx2YWxwLCBDb250ZXh0CiBzdGF0aWMgdm9pZCB5eWVycm9yKENvbnRleHQqIGNv
bnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAKIAorCiAvKiBFbmFibGluZyB0cmFjZXMuICAq
LwogI2lmbmRlZiBZWURFQlVHCiAjIGRlZmluZSBZWURFQlVHIDAKQEAgLTE3NiwyMCArMTQ4LDM5
IEBAIHN0YXRpYyB2b2lkIHl5ZXJyb3IoQ29udGV4dCogY29udGV4dCwgY28KICMgZGVmaW5lIFlZ
VE9LRU5fVEFCTEUgMAogI2VuZGlmCiAKKworLyogVG9rZW5zLiAgKi8KKyNpZm5kZWYgWVlUT0tF
TlRZUEUKKyMgZGVmaW5lIFlZVE9LRU5UWVBFCisgICAvKiBQdXQgdGhlIHRva2VucyBpbnRvIHRo
ZSBzeW1ib2wgdGFibGUsIHNvIHRoYXQgR0RCIGFuZCBvdGhlciBkZWJ1Z2dlcnMKKyAgICAgIGtu
b3cgYWJvdXQgdGhlbS4gICovCisgICBlbnVtIHl5dG9rZW50eXBlIHsKKyAgICAgVE9LX0NPTlNU
X0lOVCA9IDI1OCwKKyAgICAgVE9LX09QX09SID0gMjU5LAorICAgICBUT0tfT1BfQU5EID0gMjYw
LAorICAgICBUT0tfT1BfTkUgPSAyNjEsCisgICAgIFRPS19PUF9FUSA9IDI2MiwKKyAgICAgVE9L
X09QX0dFID0gMjYzLAorICAgICBUT0tfT1BfTEUgPSAyNjQsCisgICAgIFRPS19PUF9SSUdIVCA9
IDI2NSwKKyAgICAgVE9LX09QX0xFRlQgPSAyNjYsCisgICAgIFRPS19VTkFSWSA9IDI2NworICAg
fTsKKyNlbmRpZgorCisKKwogI2lmICEgZGVmaW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZWVNU
WVBFX0lTX0RFQ0xBUkVECiB0eXBlZGVmIGludCBZWVNUWVBFOworIyBkZWZpbmUgWVlTVFlQRV9J
U19UUklWSUFMIDEKICMgZGVmaW5lIHl5c3R5cGUgWVlTVFlQRSAvKiBvYnNvbGVzY2VudDsgd2ls
bCBiZSB3aXRoZHJhd24gKi8KICMgZGVmaW5lIFlZU1RZUEVfSVNfREVDTEFSRUQgMQotIyBkZWZp
bmUgWVlTVFlQRV9JU19UUklWSUFMIDEKICNlbmRpZgogCiAKLQogLyogQ29weSB0aGUgc2Vjb25k
IHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLwogCiAKLS8qIExpbmUgMjE2IG9mIHlhY2Mu
Yy4gICovCi0KIAogI2lmZGVmIHNob3J0CiAjIHVuZGVmIHNob3J0CkBAIC0yNjQsMTQgKzI1NSwx
NCBAQCB0eXBlZGVmIHNob3J0IGludCB5eXR5cGVfaW50MTY7CiAjaWYgKGRlZmluZWQgX19TVERD
X18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1
cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIGludAotWVlJRCAoaW50IGkpCitZWUlEIChp
bnQgeXlpKQogI2Vsc2UKIHN0YXRpYyBpbnQKLVlZSUQgKGkpCi0gICAgaW50IGk7CitZWUlEICh5
eWkpCisgICAgaW50IHl5aTsKICNlbmRpZgogewotICByZXR1cm4gaTsKKyAgcmV0dXJuIHl5aTsK
IH0KICNlbmRpZgogCkBAIC0zNTIsOSArMzQzLDkgQEAgdm9pZCBmcmVlICh2b2lkICopOyAvKiBJ
TkZSSU5HRVMgT04gVVNFUgogLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBmb3Ig
YW55IHN0YWNrIG1lbWJlci4gICovCiB1bmlvbiB5eWFsbG9jCiB7Ci0gIHl5dHlwZV9pbnQxNiB5
eXNzOwotICBZWVNUWVBFIHl5dnM7Ci0gIH07CisgIHl5dHlwZV9pbnQxNiB5eXNzX2FsbG9jOwor
ICBZWVNUWVBFIHl5dnNfYWxsb2M7Cit9OwogCiAvKiBUaGUgc2l6ZSBvZiB0aGUgbWF4aW11bSBn
YXAgYmV0d2VlbiBvbmUgYWxpZ25lZCBzdGFjayBhbmQgdGhlIG5leHQuICAqLwogIyBkZWZpbmUg
WVlTVEFDS19HQVBfTUFYSU1VTSAoc2l6ZW9mICh1bmlvbiB5eWFsbG9jKSAtIDEpCkBAIC0zODgs
MTIgKzM3OSwxMiBAQCB1bmlvbiB5eWFsbG9jCiAgICBlbGVtZW50cyBpbiB0aGUgc3RhY2ssIGFu
ZCBZWVBUUiBnaXZlcyB0aGUgbmV3IGxvY2F0aW9uIG9mIHRoZQogICAgc3RhY2suICBBZHZhbmNl
IFlZUFRSIHRvIGEgcHJvcGVybHkgYWxpZ25lZCBsb2NhdGlvbiBmb3IgdGhlIG5leHQKICAgIHN0
YWNrLiAgKi8KLSMgZGVmaW5lIFlZU1RBQ0tfUkVMT0NBVEUoU3RhY2spCQkJCQlcCisjIGRlZmlu
ZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrX2FsbG9jLCBTdGFjaykJCQkJXAogICAgIGRvCQkJCQkJ
CQkJXAogICAgICAgewkJCQkJCQkJCVwKIAlZWVNJWkVfVCB5eW5ld2J5dGVzOwkJCQkJCVwKLQlZ
WUNPUFkgKCZ5eXB0ci0+U3RhY2ssIFN0YWNrLCB5eXNpemUpOwkJCQlcCi0JU3RhY2sgPSAmeXlw
dHItPlN0YWNrOwkJCQkJCVwKKwlZWUNPUFkgKCZ5eXB0ci0+U3RhY2tfYWxsb2MsIFN0YWNrLCB5
eXNpemUpOwkJCVwKKwlTdGFjayA9ICZ5eXB0ci0+U3RhY2tfYWxsb2M7CQkJCQlcCiAJeXluZXdi
eXRlcyA9IHl5c3RhY2tzaXplICogc2l6ZW9mICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFYSU1V
TTsgXAogCXl5cHRyICs9IHl5bmV3Ynl0ZXMgLyBzaXplb2YgKCp5eXB0cik7CQkJCVwKICAgICAg
IH0JCQkJCQkJCQlcCkBAIC00ODIsOSArNDczLDkgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4
IHl5cmhzW10gPQogLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVt
YmVyIFlZTiB3YXMgZGVmaW5lZC4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cmxp
bmVbXSA9CiB7Ci0gICAgICAgMCwgICAgOTEsICAgIDkxLCAgICA5OCwgICAgOTksICAgMTAyLCAg
IDEwNSwgICAxMDgsICAgMTExLCAgIDExNCwKLSAgICAgMTE3LCAgIDEyMCwgICAxMjMsICAgMTI2
LCAgIDEyOSwgICAxMzIsICAgMTM1LCAgIDEzOCwgICAxNDEsICAgMTQ0LAotICAgICAxNTcsICAg
MTcwLCAgIDE3MywgICAxNzYsICAgMTc5LCAgIDE4MiwgICAxODUKKyAgICAgICAwLCAgICA5MCwg
ICAgOTAsICAgIDk3LCAgICA5OCwgICAxMDEsICAgMTA0LCAgIDEwNywgICAxMTAsICAgMTEzLAor
ICAgICAxMTYsICAgMTE5LCAgIDEyMiwgICAxMjUsICAgMTI4LCAgIDEzMSwgICAxMzQsICAgMTM3
LCAgIDE0MCwgICAxNDMsCisgICAgIDE1NiwgICAxNjksICAgMTcyLCAgIDE3NSwgICAxNzgsICAg
MTgxLCAgIDE4NAogfTsKICNlbmRpZgogCkBAIC02MzksOSArNjMwLDE4IEBAIHN0YXRpYyBjb25z
dCB5eXR5cGVfdWludDggeXlzdG9zW10gPQogCiAvKiBMaWtlIFlZRVJST1IgZXhjZXB0IGRvIGNh
bGwgeXllcnJvci4gIFRoaXMgcmVtYWlucyBoZXJlIHRlbXBvcmFyaWx5CiAgICB0byBlYXNlIHRo
ZSB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgbWVhbmluZyBvZiBZWUVSUk9SLCBmb3IgR0NDLgotICAg
T25jZSBHQ0MgdmVyc2lvbiAyIGhhcyBzdXBwbGFudGVkIHZlcnNpb24gMSwgdGhpcyBjYW4gZ28u
ICAqLworICAgT25jZSBHQ0MgdmVyc2lvbiAyIGhhcyBzdXBwbGFudGVkIHZlcnNpb24gMSwgdGhp
cyBjYW4gZ28uICBIb3dldmVyLAorICAgWVlGQUlMIGFwcGVhcnMgdG8gYmUgaW4gdXNlLiAgTmV2
ZXJ0aGVsZXNzLCBpdCBpcyBmb3JtYWxseSBkZXByZWNhdGVkCisgICBpbiBCaXNvbiAyLjQuMidz
IE5FV1MgZW50cnksIHdoZXJlIGEgcGxhbiB0byBwaGFzZSBpdCBvdXQgaXMKKyAgIGRpc2N1c3Nl
ZC4gICovCiAKICNkZWZpbmUgWVlGQUlMCQlnb3RvIHl5ZXJybGFiCisjaWYgZGVmaW5lZCBZWUZB
SUwKKyAgLyogVGhpcyBpcyBoZXJlIHRvIHN1cHByZXNzIHdhcm5pbmdzIGZyb20gdGhlIEdDQyBj
cHAncworICAgICAtV3VudXNlZC1tYWNyb3MuICBOb3JtYWxseSB3ZSBkb24ndCB3b3JyeSBhYm91
dCB0aGF0IHdhcm5pbmcsIGJ1dAorICAgICBzb21lIHVzZXJzIGRvLCBhbmQgd2Ugd2FudCB0byBt
YWtlIGl0IGVhc3kgZm9yIHVzZXJzIHRvIHJlbW92ZQorICAgICBZWUZBSUwgdXNlcywgd2hpY2gg
d2lsbCBwcm9kdWNlIHdhcm5pbmdzIGZyb20gQmlzb24gMi41LiAgKi8KKyNlbmRpZgogCiAjZGVm
aW5lIFlZUkVDT1ZFUklORygpICAoISF5eWVycnN0YXR1cykKIApAQCAtODEyLDE3ICs4MTIsMjAg
QEAgeXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbAogI2lmIChkZWZpbmVk
IF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19j
cGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9zdGFja19wcmlu
dCAoeXl0eXBlX2ludDE2ICpib3R0b20sIHl5dHlwZV9pbnQxNiAqdG9wKQoreXlfc3RhY2tfcHJp
bnQgKHl5dHlwZV9pbnQxNiAqeXlib3R0b20sIHl5dHlwZV9pbnQxNiAqeXl0b3ApCiAjZWxzZQog
c3RhdGljIHZvaWQKLXl5X3N0YWNrX3ByaW50IChib3R0b20sIHRvcCkKLSAgICB5eXR5cGVfaW50
MTYgKmJvdHRvbTsKLSAgICB5eXR5cGVfaW50MTYgKnRvcDsKK3l5X3N0YWNrX3ByaW50ICh5eWJv
dHRvbSwgeXl0b3ApCisgICAgeXl0eXBlX2ludDE2ICp5eWJvdHRvbTsKKyAgICB5eXR5cGVfaW50
MTYgKnl5dG9wOwogI2VuZGlmCiB7CiAgIFlZRlBSSU5URiAoc3RkZXJyLCAiU3RhY2sgbm93Iik7
Ci0gIGZvciAoOyBib3R0b20gPD0gdG9wOyArK2JvdHRvbSkKLSAgICBZWUZQUklOVEYgKHN0ZGVy
ciwgIiAlZCIsICpib3R0b20pOworICBmb3IgKDsgeXlib3R0b20gPD0geXl0b3A7IHl5Ym90dG9t
KyspCisgICAgeworICAgICAgaW50IHl5Ym90ID0gKnl5Ym90dG9tOworICAgICAgWVlGUFJJTlRG
IChzdGRlcnIsICIgJWQiLCB5eWJvdCk7CisgICAgfQogICBZWUZQUklOVEYgKHN0ZGVyciwgIlxu
Iik7CiB9CiAKQEAgLTg1NywxMSArODYwLDExIEBAIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5
cnVsZSwgY29udGV4dCkKICAgLyogVGhlIHN5bWJvbHMgYmVpbmcgcmVkdWNlZC4gICovCiAgIGZv
ciAoeXlpID0gMDsgeXlpIDwgeXlucmhzOyB5eWkrKykKICAgICB7Ci0gICAgICBmcHJpbnRmIChz
dGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAi
ICAgJCVkID0gIiwgeXlpICsgMSk7CiAgICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwgeXly
aHNbeXlwcmhzW3l5cnVsZV0gKyB5eWldLAogCQkgICAgICAgJih5eXZzcFsoeXlpICsgMSkgLSAo
eXlucmhzKV0pCiAJCSAgICAgICAJCSAgICAgICAsIGNvbnRleHQpOwotICAgICAgZnByaW50ZiAo
c3RkZXJyLCAiXG4iKTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKICAgICB9CiB9
CiAKQEAgLTExNDMsMTAgKzExNDYsOCBAQCB5eWRlc3RydWN0ICh5eW1zZywgeXl0eXBlLCB5eXZh
bHVlcCwgY29uCiAJYnJlYWs7CiAgICAgfQogfQotDAogCiAvKiBQcmV2ZW50IHdhcm5pbmdzIGZy
b20gLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotCiAjaWZkZWYgWVlQQVJTRV9QQVJBTQogI2lm
IGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cwogaW50IHl5cGFyc2UgKHZv
aWQgKllZUEFSU0VfUEFSQU0pOwpAQCAtMTE2NSwxMCArMTE2Niw5IEBAIGludCB5eXBhcnNlICgp
OwogCiAKIAotCi0vKi0tLS0tLS0tLS0uCi18IHl5cGFyc2UuICB8Ci1gLS0tLS0tLS0tLSovCisv
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5cGFyc2Ugb3IgeXlwdXNoX3BhcnNlLiAg
fAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAjaWZkZWYgWVlQQVJTRV9QQVJBTQog
I2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCkBAIC0xMTky
LDIyICsxMTkyLDQ2IEBAIHl5cGFyc2UgKGNvbnRleHQpCiAjZW5kaWYKICNlbmRpZgogewotICAv
KiBUaGUgbG9vay1haGVhZCBzeW1ib2wuICAqLworLyogVGhlIGxvb2thaGVhZCBzeW1ib2wuICAq
LwogaW50IHl5Y2hhcjsKIAotLyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBsb29rLWFoZWFk
IHN5bWJvbC4gICovCisvKiBUaGUgc2VtYW50aWMgdmFsdWUgb2YgdGhlIGxvb2thaGVhZCBzeW1i
b2wuICAqLwogWVlTVFlQRSB5eWx2YWw7CiAKLS8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNv
IGZhci4gICovCi1pbnQgeXluZXJyczsKKyAgICAvKiBOdW1iZXIgb2Ygc3ludGF4IGVycm9ycyBz
byBmYXIuICAqLworICAgIGludCB5eW5lcnJzOworCisgICAgaW50IHl5c3RhdGU7CisgICAgLyog
TnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4g
ICovCisgICAgaW50IHl5ZXJyc3RhdHVzOworCisgICAgLyogVGhlIHN0YWNrcyBhbmQgdGhlaXIg
dG9vbHM6CisgICAgICAgYHl5c3MnOiByZWxhdGVkIHRvIHN0YXRlcy4KKyAgICAgICBgeXl2cyc6
IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLgorCisgICAgICAgUmVmZXIgdG8gdGhlIHN0YWNr
cyB0aHJ1IHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93CisgICAgICAgdG8g
cmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCisKKyAgICAvKiBUaGUgc3RhdGUgc3RhY2su
ICAqLworICAgIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07CisgICAgeXl0eXBlX2lu
dDE2ICp5eXNzOworICAgIHl5dHlwZV9pbnQxNiAqeXlzc3A7CisKKyAgICAvKiBUaGUgc2VtYW50
aWMgdmFsdWUgc3RhY2suICAqLworICAgIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOworICAg
IFlZU1RZUEUgKnl5dnM7CisgICAgWVlTVFlQRSAqeXl2c3A7CisKKyAgICBZWVNJWkVfVCB5eXN0
YWNrc2l6ZTsKIAotICBpbnQgeXlzdGF0ZTsKICAgaW50IHl5bjsKICAgaW50IHl5cmVzdWx0Owot
ICAvKiBOdW1iZXIgb2YgdG9rZW5zIHRvIHNoaWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFi
bGVkLiAgKi8KLSAgaW50IHl5ZXJyc3RhdHVzOwotICAvKiBMb29rLWFoZWFkIHRva2VuIGFzIGFu
IGludGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLwotICBpbnQgeXl0b2tlbiA9
IDA7CisgIC8qIExvb2thaGVhZCB0b2tlbiBhcyBhbiBpbnRlcm5hbCAodHJhbnNsYXRlZCkgdG9r
ZW4gbnVtYmVyLiAgKi8KKyAgaW50IHl5dG9rZW47CisgIC8qIFRoZSB2YXJpYWJsZXMgdXNlZCB0
byByZXR1cm4gc2VtYW50aWMgdmFsdWUgYW5kIGxvY2F0aW9uIGZyb20gdGhlCisgICAgIGFjdGlv
biByb3V0aW5lcy4gICovCisgIFlZU1RZUEUgeXl2YWw7CisKICNpZiBZWUVSUk9SX1ZFUkJPU0UK
ICAgLyogQnVmZmVyIGZvciBlcnJvciBtZXNzYWdlcywgYW5kIGl0cyBhbGxvY2F0ZWQgc2l6ZS4g
ICovCiAgIGNoYXIgeXltc2didWZbMTI4XTsKQEAgLTEyMTUsNTEgKzEyMzksMjggQEAgaW50IHl5
bmVycnM7CiAgIFlZU0laRV9UIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOwogI2VuZGlm
CiAKLSAgLyogVGhyZWUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKLSAgICAgYHl5c3MnOiByZWxh
dGVkIHRvIHN0YXRlcywKLSAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcywK
LSAgICAgYHl5bHMnOiByZWxhdGVkIHRvIGxvY2F0aW9ucy4KLQotICAgICBSZWZlciB0byB0aGUg
c3RhY2tzIHRocnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKLSAgICAg
dG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCi0KLSAgLyogVGhlIHN0YXRlIHN0YWNr
LiAgKi8KLSAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKLSAgeXl0eXBlX2ludDE2
ICp5eXNzID0geXlzc2E7Ci0gIHl5dHlwZV9pbnQxNiAqeXlzc3A7Ci0KLSAgLyogVGhlIHNlbWFu
dGljIHZhbHVlIHN0YWNrLiAgKi8KLSAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07Ci0gIFlZ
U1RZUEUgKnl5dnMgPSB5eXZzYTsKLSAgWVlTVFlQRSAqeXl2c3A7Ci0KLQotCiAjZGVmaW5lIFlZ
UE9QU1RBQ0soTikgICAoeXl2c3AgLT0gKE4pLCB5eXNzcCAtPSAoTikpCiAKLSAgWVlTSVpFX1Qg
eXlzdGFja3NpemUgPSBZWUlOSVRERVBUSDsKLQotICAvKiBUaGUgdmFyaWFibGVzIHVzZWQgdG8g
cmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQotICAgICBhY3Rpb24g
cm91dGluZXMuICAqLwotICBZWVNUWVBFIHl5dmFsOwotCi0KICAgLyogVGhlIG51bWJlciBvZiBz
eW1ib2xzIG9uIHRoZSBSSFMgb2YgdGhlIHJlZHVjZWQgcnVsZS4KICAgICAgS2VlcCB0byB6ZXJv
IHdoZW4gbm8gc3ltYm9sIHNob3VsZCBiZSBwb3BwZWQuICAqLwogICBpbnQgeXlsZW4gPSAwOwog
CisgIHl5dG9rZW4gPSAwOworICB5eXNzID0geXlzc2E7CisgIHl5dnMgPSB5eXZzYTsKKyAgeXlz
dGFja3NpemUgPSBZWUlOSVRERVBUSDsKKwogICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFydGlu
ZyBwYXJzZVxuIikpOwogCiAgIHl5c3RhdGUgPSAwOwogICB5eWVycnN0YXR1cyA9IDA7CiAgIHl5
bmVycnMgPSAwOwotICB5eWNoYXIgPSBZWUVNUFRZOwkJLyogQ2F1c2UgYSB0b2tlbiB0byBiZSBy
ZWFkLiAgKi8KKyAgeXljaGFyID0gWVlFTVBUWTsgLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFk
LiAgKi8KIAogICAvKiBJbml0aWFsaXplIHN0YWNrIHBvaW50ZXJzLgogICAgICBXYXN0ZSBvbmUg
ZWxlbWVudCBvZiB2YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2sKICAgICAgc28gdGhhdCB0aGV5IHN0
YXkgb24gdGhlIHNhbWUgbGV2ZWwgYXMgdGhlIHN0YXRlIHN0YWNrLgogICAgICBUaGUgd2FzdGVk
IGVsZW1lbnRzIGFyZSBuZXZlciBpbml0aWFsaXplZC4gICovCi0KICAgeXlzc3AgPSB5eXNzOwog
ICB5eXZzcCA9IHl5dnM7CiAKQEAgLTEyODksNyArMTI5MCw2IEBAIGludCB5eW5lcnJzOwogCVlZ
U1RZUEUgKnl5dnMxID0geXl2czsKIAl5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKIAotCiAJ
LyogRWFjaCBzdGFjayBwb2ludGVyIGFkZHJlc3MgaXMgZm9sbG93ZWQgYnkgdGhlIHNpemUgb2Yg
dGhlCiAJICAgZGF0YSBpbiB1c2UgaW4gdGhhdCBzdGFjaywgaW4gYnl0ZXMuICBUaGlzIHVzZWQg
dG8gYmUgYQogCSAgIGNvbmRpdGlvbmFsIGFyb3VuZCBqdXN0IHRoZSB0d28gZXh0cmEgYXJncywg
YnV0IHRoYXQgbWlnaHQKQEAgLTEyOTcsNyArMTI5Nyw2IEBAIGludCB5eW5lcnJzOwogCXl5b3Zl
cmZsb3cgKFlZXygibWVtb3J5IGV4aGF1c3RlZCIpLAogCQkgICAgJnl5c3MxLCB5eXNpemUgKiBz
aXplb2YgKCp5eXNzcCksCiAJCSAgICAmeXl2czEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5dnNwKSwK
LQogCQkgICAgJnl5c3RhY2tzaXplKTsKIAogCXl5c3MgPSB5eXNzMTsKQEAgLTEzMjAsOSArMTMx
OSw4IEBAIGludCB5eW5lcnJzOwogCSAgKHVuaW9uIHl5YWxsb2MgKikgWVlTVEFDS19BTExPQyAo
WVlTVEFDS19CWVRFUyAoeXlzdGFja3NpemUpKTsKIAlpZiAoISB5eXB0cikKIAkgIGdvdG8geXll
eGhhdXN0ZWRsYWI7Ci0JWVlTVEFDS19SRUxPQ0FURSAoeXlzcyk7Ci0JWVlTVEFDS19SRUxPQ0FU
RSAoeXl2cyk7Ci0KKwlZWVNUQUNLX1JFTE9DQVRFICh5eXNzX2FsbG9jLCB5eXNzKTsKKwlZWVNU
QUNLX1JFTE9DQVRFICh5eXZzX2FsbG9jLCB5eXZzKTsKICMgIHVuZGVmIFlZU1RBQ0tfUkVMT0NB
VEUKIAlpZiAoeXlzczEgIT0geXlzc2EpCiAJICBZWVNUQUNLX0ZSRUUgKHl5c3MxKTsKQEAgLTEz
MzMsNyArMTMzMSw2IEBAIGludCB5eW5lcnJzOwogICAgICAgeXlzc3AgPSB5eXNzICsgeXlzaXpl
IC0gMTsKICAgICAgIHl5dnNwID0geXl2cyArIHl5c2l6ZSAtIDE7CiAKLQogICAgICAgWVlEUFJJ
TlRGICgoc3RkZXJyLCAiU3RhY2sgc2l6ZSBpbmNyZWFzZWQgdG8gJWx1XG4iLAogCQkgICh1bnNp
Z25lZCBsb25nIGludCkgeXlzdGFja3NpemUpKTsKIApAQCAtMTM0Myw2ICsxMzQwLDkgQEAgaW50
IHl5bmVycnM7CiAKICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiRW50ZXJpbmcgc3RhdGUgJWRcbiIs
IHl5c3RhdGUpKTsKIAorICBpZiAoeXlzdGF0ZSA9PSBZWUZJTkFMKQorICAgIFlZQUNDRVBUOwor
CiAgIGdvdG8geXliYWNrdXA7CiAKIC8qLS0tLS0tLS0tLS0uCkBAIC0xMzUxLDE2ICsxMzUxLDE2
IEBAIGludCB5eW5lcnJzOwogeXliYWNrdXA6CiAKICAgLyogRG8gYXBwcm9wcmlhdGUgcHJvY2Vz
c2luZyBnaXZlbiB0aGUgY3VycmVudCBzdGF0ZS4gIFJlYWQgYQotICAgICBsb29rLWFoZWFkIHRv
a2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KKyAgICAg
bG9va2FoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25l
LiAgKi8KIAotICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91dCByZWZl
cmVuY2UgdG8gbG9vay1haGVhZCB0b2tlbi4gICovCisgIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUg
d2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4uICAqLwogICB5
eW4gPSB5eXBhY3RbeXlzdGF0ZV07CiAgIGlmICh5eW4gPT0gWVlQQUNUX05JTkYpCiAgICAgZ290
byB5eWRlZmF1bHQ7CiAKLSAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2stYWhlYWQgdG9rZW4g
aWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisgIC8qIE5vdCBrbm93biA9PiBnZXQgYSBs
b29rYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCiAKLSAgLyogWVlD
SEFSIGlzIGVpdGhlciBZWUVNUFRZIG9yIFlZRU9GIG9yIGEgdmFsaWQgbG9vay1haGVhZCBzeW1i
b2wuICAqLworICAvKiBZWUNIQVIgaXMgZWl0aGVyIFlZRU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxp
ZCBsb29rYWhlYWQgc3ltYm9sLiAgKi8KICAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKQogICAgIHsK
ICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlJlYWRpbmcgYSB0b2tlbjogIikpOwpAQCAtMTM5
MiwyMCArMTM5MiwxNiBAQCB5eWJhY2t1cDoKICAgICAgIGdvdG8geXlyZWR1Y2U7CiAgICAgfQog
Ci0gIGlmICh5eW4gPT0gWVlGSU5BTCkKLSAgICBZWUFDQ0VQVDsKLQogICAvKiBDb3VudCB0b2tl
bnMgc2hpZnRlZCBzaW5jZSBlcnJvcjsgYWZ0ZXIgdGhyZWUsIHR1cm4gb2ZmIGVycm9yCiAgICAg
IHN0YXR1cy4gICovCiAgIGlmICh5eWVycnN0YXR1cykKICAgICB5eWVycnN0YXR1cy0tOwogCi0g
IC8qIFNoaWZ0IHRoZSBsb29rLWFoZWFkIHRva2VuLiAgKi8KKyAgLyogU2hpZnQgdGhlIGxvb2th
aGVhZCB0b2tlbi4gICovCiAgIFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0aW5nIiwgeXl0b2tlbiwg
Jnl5bHZhbCwgJnl5bGxvYyk7CiAKLSAgLyogRGlzY2FyZCB0aGUgc2hpZnRlZCB0b2tlbiB1bmxl
c3MgaXQgaXMgZW9mLiAgKi8KLSAgaWYgKHl5Y2hhciAhPSBZWUVPRikKLSAgICB5eWNoYXIgPSBZ
WUVNUFRZOworICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuLiAgKi8KKyAgeXljaGFyID0g
WVlFTVBUWTsKIAogICB5eXN0YXRlID0geXluOwogICAqKyt5eXZzcCA9IHl5bHZhbDsKQEAgLTE0
NDksMTEyICsxNDQ1LDExMiBAQCB5eXJlZHVjZToKICAgICB7CiAgICAgICAgICooY29udGV4dC0+
cmVzdWx0KSA9IHN0YXRpY19jYXN0PGludD4oKHl5dnNwWygxKSAtICgxKV0pKTsKICAgICAgICAg
WVlBQ0NFUFQ7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA0OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIHx8ICh5eXZzcFsoMykgLSAo
MyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDU6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgJiYgKHl5dnNwWygzKSAtICgzKV0p
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSB8ICh5eXZzcFsoMykgLSAoMyldKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDc6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgXiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA4OgogCiAgICAgewogICAgICAgICAoeXl2YWwp
ID0gKHl5dnNwWygxKSAtICgzKV0pICYgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgOToKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5
eXZzcFsoMSkgLSAoMyldKSAhPSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxMDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFsoMSkgLSAoMyldKSA9PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxMToKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFso
MSkgLSAoMyldKSA+PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkg
LSAoMyldKSA8PSAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAo
MyldKSA+ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE0OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0p
IDwgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPj4g
KHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MTY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPDwgKHl5
dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTc6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgLSAoeXl2c3Bb
KDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSArICh5eXZzcFsoMykg
LSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE5OgpAQCAtMTU3
MSw3ICsxNTY3LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAo
eXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pICUgKHl5dnNwWygzKSAtICgzKV0pOwogICAgICAg
ICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMDoKQEAgLTE1ODgsNTMg
KzE1ODQsNTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAoeXl2
YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIC8gKHl5dnNwWygzKSAtICgzKV0pOwogICAgICAgICB9
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMToKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAqICh5eXZzcFsoMykgLSAoMyldKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIyOgogCiAgICAgewogICAgICAgICAo
eXl2YWwpID0gISAoeXl2c3BbKDIpIC0gKDIpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAyMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9IH4gKHl5dnNwWygyKSAt
ICgyKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjQ6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbCkgPSAtICh5eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDI1OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKyAo
eXl2c3BbKDIpIC0gKDIpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAy
NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMikgLSAoMyldKTsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAogCi0vKiBMaW5lIDEyNjcgb2YgeWFjYy5jLiAgKi8KIAog
ICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQpAQCAtMTY0Niw3ICsxNjQxLDYgQEAgeXlyZWR1
Y2U6CiAKICAgKisreXl2c3AgPSB5eXZhbDsKIAotCiAgIC8qIE5vdyBgc2hpZnQnIHRoZSByZXN1
bHQgb2YgdGhlIHJlZHVjdGlvbi4gIERldGVybWluZSB3aGF0IHN0YXRlCiAgICAgIHRoYXQgZ29l
cyB0bywgYmFzZWQgb24gdGhlIHN0YXRlIHdlIHBvcHBlZCBiYWNrIHRvIGFuZCB0aGUgcnVsZQog
ICAgICBudW1iZXIgcmVkdWNlZCBieS4gICovCkBAIC0xNzExLDcgKzE3MDUsNyBAQCB5eWVycmxh
YjoKIAogICBpZiAoeXllcnJzdGF0dXMgPT0gMykKICAgICB7Ci0gICAgICAvKiBJZiBqdXN0IHRy
aWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tlbiBhZnRlciBhbgorICAgICAg
LyogSWYganVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRl
ciBhbgogCSBlcnJvciwgZGlzY2FyZCBpdC4gICovCiAKICAgICAgIGlmICh5eWNoYXIgPD0gWVlF
T0YpCkBAIC0xNzI4LDcgKzE3MjIsNyBAQCB5eWVycmxhYjoKIAl9CiAgICAgfQogCi0gIC8qIEVs
c2Ugd2lsbCB0cnkgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tlbiBhZnRlciBzaGlmdGluZyB0aGUg
ZXJyb3IKKyAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIg
c2hpZnRpbmcgdGhlIGVycm9yCiAgICAgIHRva2VuLiAgKi8KICAgZ290byB5eWVycmxhYjE7CiAK
QEAgLTE3ODUsOSArMTc3OSw2IEBAIHl5ZXJybGFiMToKICAgICAgIFlZX1NUQUNLX1BSSU5UICh5
eXNzLCB5eXNzcCk7CiAgICAgfQogCi0gIGlmICh5eW4gPT0gWVlGSU5BTCkKLSAgICBZWUFDQ0VQ
VDsKLQogICAqKyt5eXZzcCA9IHl5bHZhbDsKIAogCkBAIC0xODEyLDcgKzE4MDMsNyBAQCB5eWFi
b3J0bGFiOgogICB5eXJlc3VsdCA9IDE7CiAgIGdvdG8geXlyZXR1cm47CiAKLSNpZm5kZWYgeXlv
dmVyZmxvdworI2lmICFkZWZpbmVkKHl5b3ZlcmZsb3cpIHx8IFlZRVJST1JfVkVSQk9TRQogLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCB5eWV4
aGF1c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJlLiAgfAogYC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTgyMyw3ICsx
ODE0LDcgQEAgeXlleGhhdXN0ZWRsYWI6CiAjZW5kaWYKIAogeXlyZXR1cm46Ci0gIGlmICh5eWNo
YXIgIT0gWVlFT0YgJiYgeXljaGFyICE9IFlZRU1QVFkpCisgIGlmICh5eWNoYXIgIT0gWVlFTVBU
WSkKICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IGRpc2NhcmRpbmcgbG9va2FoZWFkIiwKIAkJ
IHl5dG9rZW4sICZ5eWx2YWwsIGNvbnRleHQpOwogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3lt
Ym9scyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGlt
aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcAkocmV2aXNpb24gMTUyNTk1
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RpbWluZy9SZXN0cmlj
dFZlcnRleFNoYWRlclRpbWluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAg
dm9pZCBSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZzo6dmlzaXRTeQogewogICAgIGlmIChJc1Nh
bXBsZXIobm9kZS0+Z2V0QmFzaWNUeXBlKCkpKSB7CiAgICAgICAgICsrbU51bUVycm9yczsKLSAg
ICAgICAgbVNpbmsucHJlZml4KEVQcmVmaXhFcnJvcik7Ci0gICAgICAgIG1TaW5rLmxvY2F0aW9u
KG5vZGUtPmdldExpbmUoKSk7Ci0gICAgICAgIG1TaW5rIDw8ICJTYW1wbGVycyBhcmUgbm90IHBl
cm1pdHRlZCBpbiB2ZXJ0ZXggc2hhZGVycy5cbiI7CisgICAgICAgIG1TaW5rLm1lc3NhZ2UoRVBy
ZWZpeEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmdldExpbmUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAiU2FtcGxlcnMgYXJlIG5vdCBwZXJtaXR0ZWQgaW4gdmVydGV4IHNo
YWRlcnMiKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTI1OTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAor
MjAxMy0wNy0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVXBkYXRlIEFOR0xFIHRvIHIyNDI2LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogUmVuYW1lZCBEZXRlY3RS
ZWN1cnNpb24gdG8gRGV0ZWN0Q2FsbERlcHRoIGFuZCBhZGRlZCBidWlsdGluX3N5bWJvbF90YWJs
ZS4KKwogMjAxMy0wNy0xMiAgcGVhdm9Ab3V0bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4K
IAogICAgICAgICBbV2luQ2Fpcm9dIENvbXBpbGUgZml4LgpJbmRleDogU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDE1MjU5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0yODY2LDYgKzI4NjYsNyBAQCBpZiAoV1RGX1VTRV8zRF9HUkFQSElD
UykKICAgICBlbmRpZiAoKQogCiAgICAgbGlzdChBUFBFTkQgQU5HTEVTdXBwb3J0X1NPVVJDRVMK
KyAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3lt
Ym9sX3RhYmxlLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGls
ZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9
L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuR0xTTC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZ
X0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcApAQCAtMjg3Niw4ICsyODc3LDgg
QEAgaWYgKFdURl9VU0VfM0RfR1JBUEhJQ1MpCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FO
R0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcAogICAg
ICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5k
ZW5jeUdyYXBoT3V0cHV0LmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMv
Y29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoVHJhdmVyc2UuY3BwCisgICAgICAgICR7
VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwCiAg
ICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250
aW51aXR5LmNwcAotICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIv
RGV0ZWN0UmVjdXJzaW9uLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMv
Y29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5H
TEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9B
TkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206620</attachid>
            <date>2013-07-13 15:28:52 -0700</date>
            <delta_ts>2013-07-13 15:43:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118550-20130713152648.patch</filename>
            <type>text/plain</type>
            <size>751296</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjU2MCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI1NCBAQAorMjAxMy0wNy0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFOR0xFIGZyb20gcjE5ODcgdG8gcjI0MjYgd2hpbGUg
a2VlcGluZyB0aGVzZSB0d28gcHJldmlvdXMgY2hhbmdlczoKKyAgICAgICAgS2VlcGluZyAjaWYg
ZGVmaW5lZChfTVNDX1ZFUikgYXJvdW5kICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzE4KSBp
biBEZXBlbmRlbmN5R3JhcGguY3BwLgorICAgICAgICBLZWVwaW5nIGluY2x1ZGUga2hycGxhdGZv
cm0uaCBpbnN0ZWFkIG9mIEtIUi9raHJwbGF0Zm9ybS5oIGluIFNoYWRlckxhbmcuaC4KKyAgICAg
ICAgQWRkZWQgc3RhdGljX2Nhc3RzIGluIEludGVybWVkaWF0ZS5jcHAgdG8gZml4IGNvbXBpbGlu
ZyBvbiBNYWMuCisgICAgICAgIENoYW5nZWQgZW51bSBiaXQgZmllbGRzIHRvIGp1c3QgZW51bXMg
Zm9yIEdDQyBpbiBUeXBlcy5oIHRvIGZpeCBjb21waWxpbmcgZm9yIEdUSy4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NTUwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBTkdMRS5wbGlzdDogVXBk
YXRlZCByZXZpc2lvbiBvZiBBTkdMRSB0byAyNDI2LgorICAgICAgICAqIEFOR0xFLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICog
VGFyZ2V0LnByaToKKyAgICAgICAgICAgIFJlbmFtZWQgRGV0ZWN0UmVjdXJzaW9uIHRvIERldGVj
dENhbGxEZXB0aCBhbmQgYWRkZWQgYnVpbHRpbl9zeW1ib2xfdGFibGUuCisgICAgICAgICogaW5j
bHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaDoKKyAgICAgICAgKiBzcmMvY29tbW9uL3ZlcnNpb24u
aDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQmFzZVR5cGVzLmg6CisgICAgICAgIChnZXRRdWFs
aWZpZXJTdHJpbmcpOgorICAgICAgICAqIHNyYy9jb21waWxlci9Db21tb24uaDoKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwOgorICAgICAgICAoVENvbXBpbGVyOjpUQ29tcGls
ZXIpOgorICAgICAgICAoVENvbXBpbGVyOjpJbml0KToKKyAgICAgICAgKFRDb21waWxlcjo6Y29t
cGlsZSk6CisgICAgICAgIChUQ29tcGlsZXI6OmRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChU
Q29tcGlsZXI6OmVuZm9yY2VUaW1pbmdSZXN0cmljdGlvbnMpOgorICAgICAgICAoVENvbXBpbGVy
OjpsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29u
c3RhbnRVbmlvbi5oOgorICAgICAgICAoQ29uc3RhbnRVbmlvbjo6Q29uc3RhbnRVbmlvbik6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHA6IEFkZGVkLgorICAgICAg
ICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZSk6CisgICAgICAg
IChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSk6CisgICAgICAgIChEZXRl
Y3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6YWRkQ2FsbGVlKToKKyAgICAgICAgKERldGVjdENh
bGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpkZXRlY3RDYWxsRGVwdGgpOgorICAgICAgICAoRGV0ZWN0
Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OnJlc2V0KToKKyAgICAgICAgKERldGVjdENhbGxEZXB0
aDo6RGV0ZWN0Q2FsbERlcHRoKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6fkRldGVjdENh
bGxEZXB0aCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OnZpc2l0QWdncmVnYXRlKToKKyAg
ICAgICAgKERldGVjdENhbGxEZXB0aDo6Y2hlY2tFeGNlZWRzTWF4RGVwdGgpOgorICAgICAgICAo
RGV0ZWN0Q2FsbERlcHRoOjpyZXNldEZ1bmN0aW9uTm9kZXMpOgorICAgICAgICAoRGV0ZWN0Q2Fs
bERlcHRoOjpkZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbik6CisgICAgICAgIChEZXRlY3RDYWxs
RGVwdGg6OmRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmZpbmRG
dW5jdGlvbkJ5TmFtZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5o
OiBBZGRlZC4KKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6Z2V0SW5mb1NpbmspOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwOgorICAgICAgICAoVERpYWdub3N0aWNzOjp3cml0ZUlu
Zm8pOgorICAgICAgICAqIHNyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcDoKKyAgICAgICAg
KEZvckxvb3BVbnJvbGw6OmV2YWx1YXRlSW50Q29uc3RhbnQpOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9JbmZvU2luay5jcHA6CisgICAgICAgIChUSW5mb1NpbmtCYXNlOjpwcmVmaXgpOgorICAg
ICAgICAoVEluZm9TaW5rQmFzZTo6bG9jYXRpb24pOgorICAgICAgICAoVEluZm9TaW5rQmFzZTo6
bWVzc2FnZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0luZm9TaW5rLmg6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwOgorICAgICAgICAoVEJ1aWx0SW5zOjppbml0aWFs
aXplKToKKyAgICAgICAgKElkZW50aWZ5QnVpbHRJbnMpOgorICAgICAgICAoSW5pdEV4dGVuc2lv
bkJlaGF2aW9yKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcDogVXBk
YXRlZCBhbmQgYWRkZWQgc3RhdGljX2Nhc3RzIHRvIGZpeCBidWlsZCBlcnJvcnMgb24gTWFjLgor
ICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkU3ltYm9sKToKKyAgICAgICAgKFRJbnRlcm1lZGlh
dGU6OmFkZEJpbmFyeU1hdGgpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKToK
KyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KToKKyAgICAgICAgKFRJbnRlcm1lZGlh
dGU6OmFkZFVuYXJ5TWF0aCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVP
cGVyYXRvcik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRDb252ZXJzaW9uKToKKyAgICAg
ICAgKFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2dyZWdhdGUpOgorICAgICAgICAoVEludGVybWVkaWF0
ZTo6bWFrZUFnZ3JlZ2F0ZSk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24p
OgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQ29tbWEpOgorICAgICAgICAoVEludGVybWVk
aWF0ZTo6YWRkQ29uc3RhbnRVbmlvbik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTd2l6
emxlKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZExvb3ApOgorICAgICAgICAoVEludGVy
bWVkaWF0ZTo6YWRkQnJhbmNoKToKKyAgICAgICAgKFRJbnRlcm1VbmFyeTo6cHJvbW90ZSk6Cisg
ICAgICAgIChUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKToKKyAgICAgICAgKENvbXBhcmVTdHJ1Y3Qp
OgorICAgICAgICAoQ29tcGFyZVN0cnVjdHVyZSk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRV
bmlvbjo6Zm9sZCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjpwcm9tb3RlQ29uc3RhbnRVbmlv
bik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwOgorICAgICAgICAoVE91
dHB1dEdMU0w6OnZpc2l0U3ltYm9sKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xT
TC5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHA6CisgICAgICAg
IChUT3V0cHV0R0xTTEJhc2U6OndyaXRlVmFyaWFibGVUeXBlKToKKyAgICAgICAgKFRPdXRwdXRH
TFNMQmFzZTo6d3JpdGVDb25zdGFudFVuaW9uKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6
dmlzaXRCaW5hcnkpOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZSk6
CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OmdldFR5cGVOYW1lKToKKyAgICAgICAgKFRPdXRw
dXRHTFNMQmFzZTo6aGFzaEZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6
OnN0cnVjdERlY2xhcmVkKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6ZGVjbGFyZVN0cnVj
dCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmg6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6Ok91
dHB1dEhMU0wpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmhlYWRlcik6CisgICAgICAgIChz
aDo6T3V0cHV0SExTTDo6dmlzaXRTeW1ib2wpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZp
c2l0QmluYXJ5KToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZSk6Cisg
ICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24pOgorICAgICAgICAoc2g6Ok91
dHB1dEhMU0w6OnZpc2l0TG9vcCk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6aGFuZGxlRXhj
ZXNzaXZlTG9vcCk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dHlwZVN0cmluZyk6CisgICAg
ICAgIChzaDo6T3V0cHV0SExTTDo6aW5pdGlhbGl6ZXIpOgorICAgICAgICAoc2g6Ok91dHB1dEhM
U0w6OmFkZENvbnN0cnVjdG9yKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp3cml0ZUNvbnN0
YW50VW5pb24pOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmRlY29yYXRlRmllbGQpOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNMLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L1BhcnNlSGVscGVyLmNwcDoKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmll
bGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4RmllbGRzKToKKyAgICAg
ICAgKFRQYXJzZUNvbnRleHQ6OmVycm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Ondhcm5p
bmcpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YXNzaWduRXJyb3IpOgorICAgICAgICAoVFBh
cnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmJpbmFy
eU9wRXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVjayk6
CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6
cmVzZXJ2ZWRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9y
RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayk6Cisg
ICAgICAgIChUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VD
b250ZXh0OjpzYW1wbGVyRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRl
clNhbXBsZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2Ft
cGxlcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKToKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmFycmF5RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpub25Jbml0
Q29uc3RFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNo
ZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmZpbmRGdW5jdGlvbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojppc1ZhcmlhYmxl
QnVpbHRJbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIpOgor
ICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IpOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6Y29uc3RydWN0QnVpbHRJbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpjb25z
dHJ1Y3RTdHJ1Y3QpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWN0b3JOb2Rl
KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZSk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjphZGRDb25zdEFycmF5Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250
ZXh0OjphZGRDb25zdFN0cnVjdCk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjplbnRlclN0cnVj
dERlY2xhcmF0aW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJv
ckNoZWNrKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaDoKKyAgICAgICAg
KFRQYXJzZUNvbnRleHQ6OlRQYXJzZUNvbnRleHQpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6
cHJhZ21hKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcDoKKyAgICAgICAg
KFRQb29sQWxsb2NhdG9yOjphbGxvY2F0ZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1NoSGFu
ZGxlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwOgorICAgICAgICAo
U2hJbml0QnVpbHRJblJlc291cmNlcyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1N5bWJvbFRh
YmxlLmNwcDoKKyAgICAgICAgKFRUeXBlOjpUVHlwZSk6CisgICAgICAgIChUVHlwZTo6YnVpbGRN
YW5nbGVkTmFtZSk6CisgICAgICAgIChUVHlwZTo6Z2V0T2JqZWN0U2l6ZSk6CisgICAgICAgIChU
U3RydWN0dXJlOjpjb250YWluc0FycmF5cyk6CisgICAgICAgIChUU3RydWN0dXJlOjpidWlsZE1h
bmdsZWROYW1lKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmNhbGN1bGF0ZU9iamVjdFNpemUpOgor
ICAgICAgICAoVFN0cnVjdHVyZTo6Y2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcpOgorICAgICAgICAo
VFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvRXh0ZW5zaW9uKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKFRTeW1ib2w6OnJlbGF0ZVRvRXh0ZW5zaW9u
KToKKyAgICAgICAgKFRTeW1ib2w6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChUVmFyaWFibGU6
OlRWYXJpYWJsZSk6CisgICAgICAgIChUVmFyaWFibGU6OnNldFF1YWxpZmllcik6CisgICAgICAg
IChUVmFyaWFibGU6OnNoYXJlQ29uc3RQb2ludGVyKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
VHlwZXMuaDogVXBkYXRlZCBhbmQgY2hhbmdlZCBlbnVtIGJpdCBmaWVsZHMgdG8gZW51bXMgdG8g
Zml4IGNvbXBpbGluZyB3aXRoIEdDQy4KKyAgICAgICAgKFRGaWVsZDo6VEZpZWxkKToKKyAgICAg
ICAgKFRGaWVsZDo6dHlwZSk6CisgICAgICAgIChURmllbGQ6Om5hbWUpOgorICAgICAgICAoTmV3
UG9vbFRGaWVsZExpc3QpOgorICAgICAgICAoVFN0cnVjdHVyZTo6VFN0cnVjdHVyZSk6CisgICAg
ICAgIChUU3RydWN0dXJlOjpuYW1lKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmZpZWxkcyk6Cisg
ICAgICAgIChUU3RydWN0dXJlOjptYW5nbGVkTmFtZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpv
YmplY3RTaXplKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmRlZXBlc3ROZXN0aW5nKToKKyAgICAg
ICAgKFRUeXBlOjpUVHlwZSk6CisgICAgICAgIChUVHlwZTo6Y2xlYXJBcnJheW5lc3MpOgorICAg
ICAgICAoVFR5cGU6OmdldFN0cnVjdCk6CisgICAgICAgIChUVHlwZTo6c2V0U3RydWN0KToKKyAg
ICAgICAgKFRUeXBlOjpnZXRNYW5nbGVkTmFtZSk6CisgICAgICAgIChUVHlwZTo6Z2V0RGVlcGVz
dFN0cnVjdE5lc3RpbmcpOgorICAgICAgICAoVFR5cGU6OmlzU3RydWN0dXJlQ29udGFpbmluZ0Fy
cmF5cyk6CisgICAgICAgIChUUHVibGljVHlwZTo6c2V0QmFzaWMpOgorICAgICAgICAqIHNyYy9j
b21waWxlci9WYXJpYWJsZUluZm8uY3BwOgorICAgICAgICAoZ2V0VXNlckRlZmluZWRWYXJpYWJs
ZUluZm8pOgorICAgICAgICAqIHNyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHA6
IEFkZGVkLgorICAgICAgICAoYnVpbHRpbjEpOgorICAgICAgICAoYnVpbHRpbjIpOgorICAgICAg
ICAoYnVpbHRpbjMpOgorICAgICAgICAoSW5zZXJ0QnVpbHRJbkZ1bmN0aW9uc0NvbW1vbik6Cisg
ICAgICAgIChJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBp
bGVyL2dsc2xhbmcubDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy55OgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHA6CisgICAgICAgICh5eV9nZXRfcHJldmlv
dXNfc3RhdGUpOgorICAgICAgICAoeXlfdHJ5X05VTF90cmFucyk6CisgICAgICAgICh5eWdldF9s
bG9jKToKKyAgICAgICAgKHl5c2V0X2xsb2MpOgorICAgICAgICAoc3RyaW5nX2lucHV0KToKKyAg
ICAgICAgKGNoZWNrX3R5cGUpOgorICAgICAgICAocmVzZXJ2ZWRfd29yZCk6CisgICAgICAgIChn
bHNsYW5nX3NjYW4pOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHA6Cisg
ICAgICAgICh5eXN5bnRheF9lcnJvcik6CisgICAgICAgICh5eWVycm9yKToKKyAgICAgICAgKGds
c2xhbmdfcGFyc2UpOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwOgorICAgICAgICAoVE91dHB1dFRyYXZl
cnNlcjo6dmlzaXRVbmFyeSk6CisgICAgICAgIChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3Jl
Z2F0ZSk6CisgICAgICAgIChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24pOgor
ICAgICAgICAqIHNyYy9jb21waWxlci9pbnRlcm1lZGlhdGUuaDoKKyAgICAgICAgKFRJbnRlcm1O
b2RlOjpUSW50ZXJtTm9kZSk6CisgICAgICAgIChUSW50ZXJtTm9kZTo6flRJbnRlcm1Ob2RlKToK
KyAgICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRMaW5lKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpz
ZXRMaW5lKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRBc0xvb3BOb2RlKToKKyAgICAgICAg
KFRJbnRlcm1Db25zdGFudFVuaW9uOjpnZXRJQ29uc3QpOgorICAgICAgICAoVEludGVybUNvbnN0
YW50VW5pb246OmdldEZDb25zdCk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Z2V0
QkNvbnN0KToKKyAgICAgICAgKFRJbnRlcm1BZ2dyZWdhdGU6OlRJbnRlcm1BZ2dyZWdhdGUpOgor
ICAgICAgICAoVEludGVybVRyYXZlcnNlcjo6VEludGVybVRyYXZlcnNlcik6CisgICAgICAgIChU
SW50ZXJtVHJhdmVyc2VyOjpnZXRNYXhEZXB0aCk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2Vy
OjppbmNyZW1lbnREZXB0aCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRp
YXRlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwOgorICAgICAgICAo
VENvbnN0VHJhdmVyc2VyOjp2aXNpdFN5bWJvbCk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6
OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRVbmFyeSk6Cisg
ICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKFRDb25z
dFRyYXZlcnNlcjo6dmlzaXRTZWxlY3Rpb24pOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2
aXNpdENvbnN0YW50VW5pb24pOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdExvb3Ap
OgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdEJyYW5jaCk6CisgICAgICAgIChUSW50
ZXJtZWRpYXRlOjpwYXJzZUNvbnN0VHJlZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdGlt
aW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcDoKKyAgICAgICAgKFJlc3RyaWN0VmVy
dGV4U2hhZGVyVGltaW5nOjp2aXNpdFN5bWJvbCk6CisgICAgICAgICAgICBVcGRhdGVkIEFOR0xF
IHRvIHIyNDI2LgorCiAyMDEzLTA2LTE3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBTb3J0IGFsbCB0aGUgWGNvZGUgcHJvamVjdCBmaWxlcwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvQU5HTEUucGxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvQU5HTEUucGxpc3QJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC02LDEzICs2LDEzIEBA
CiAJCTxrZXk+T3BlblNvdXJjZVByb2plY3Q8L2tleT4KIAkJPHN0cmluZz5BTkdMRTwvc3RyaW5n
PgogCQk8a2V5Pk9wZW5Tb3VyY2VWZXJzaW9uPC9rZXk+Ci0JCTxzdHJpbmc+cjE2NDE8L3N0cmlu
Zz4KKwkJPHN0cmluZz5yMjQyNjwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VXZWJzaXRlVVJM
PC9rZXk+CiAJCTxzdHJpbmc+aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVjdC88
L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlU0NNPC9rZXk+Ci0JCTxzdHJpbmc+c3ZuIGNvIC1y
MTY0MSBodHRwOi8vYW5nbGVwcm9qZWN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay88L3N0cmlu
Zz4KKwkJPHN0cmluZz5zdm4gY28gLXIyNDI2IGh0dHA6Ly9hbmdsZXByb2plY3QuZ29vZ2xlY29k
ZS5jb20vc3ZuL3RydW5rLzwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VJbXBvcnREYXRlPC9r
ZXk+Ci0JCTxzdHJpbmc+MjAxMy0wMS0wNDwvc3RyaW5nPgorCQk8c3RyaW5nPjIwMTMtMDYtMTM8
L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlTGljZW5zZTwva2V5PgogCQk8c3RyaW5nPkJTRDwv
c3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VMaWNlbnNlRmlsZTwva2V5PgpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2
ICsyNCw4IEBAIGxpYkFOR0xFX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvaW5jbHVkZS9LSFIva2hycGxhdGZvcm0uaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbW1vbi9hbmdsZXV0aWxzLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9CYXNlVHlwZXMuaCBcCisJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcCBcCisJU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgXAogCVNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5o
IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wuY3Bw
IFwKQEAgLTM5LDEwICs0MSwxMCBAQCBsaWJBTkdMRV9sYV9TT1VSQ0VTID0gXAogCVNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRw
dXQuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0Rl
cGVuZGVuY3lHcmFwaE91dHB1dC5jcHAgXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgXAorCVNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwIFwKKwlTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmggXAogCVNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNw
cCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRp
bnVpdHkuaCBcCi0JU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJl
Y3Vyc2lvbi5jcHAgXAotCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRl
Y3RSZWN1cnNpb24uaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Rp
YWdub3N0aWNzLmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Rp
YWdub3N0aWNzLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaXJl
Y3RpdmVIYW5kbGVyLmNwcCBcCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1RhcmdldC5wcmkJKHJl
dmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1RhcmdldC5wcmkJKHdv
cmtpbmcgY29weSkKQEAgLTE4LDYgKzE4LDcgQEAgSU5DTFVERVBBVEggKz0gXAogCiBIRUFERVJT
ICs9IFwKICAgICBzcmMvY29tcGlsZXIvQmFzZVR5cGVzLmggXAorICAgIHNyYy9jb21waWxlci9i
dWlsdGluX3N5bWJvbF90YWJsZS5oIFwKICAgICBzcmMvY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3IuaCBcCiAgICAgc3JjL2NvbXBpbGVyL0NvbW1vbi5oIFwKICAgICBzcmMvY29tcGls
ZXIvQ29uc3RhbnRVbmlvbi5oIFwKQEAgLTI1LDggKzI2LDggQEAgSEVBREVSUyArPSBcCiAgICAg
c3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oIFwKICAgICBzcmMvY29tcGls
ZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIFwKICAgICBzcmMvY29tcGlsZXIv
ZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggXAorICAgIHNyYy9jb21waWxlci9EZXRl
Y3RDYWxsRGVwdGguaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuaCBc
Ci0gICAgc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oIFwKICAgICBzcmMvY29tcGlsZXIv
RGlhZ25vc3RpY3MuaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RpcmVjdGl2ZUhhbmRsZXIuaCBcCiAg
ICAgc3JjL2NvbXBpbGVyL0V4dGVuc2lvbkJlaGF2aW9yLmggXApAQCAtODQsNiArODUsNyBAQCBI
RUFERVJTICs9IFwKICAgICBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFt
cGVyLmgKIAogU09VUkNFUyArPSBcCisgICAgc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3Rh
YmxlLmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBc
CiAgICAgc3JjL2NvbXBpbGVyL0NvZGVHZW5HTFNMLmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0Nv
bXBpbGVyLmNwcCBcCkBAIC05Miw4ICs5NCw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHNyYy9jb21w
aWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCBcCiAgICAgc3JjL2NvbXBp
bGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAgXAogICAgIHNyYy9jb21waWxl
ci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgXAorICAgIHNyYy9jb21waWxl
ci9EZXRlY3RDYWxsRGVwdGguY3BwIFwKICAgICBzcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGlu
dWl0eS5jcHAgXAotICAgIHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwIFwKICAgICBz
cmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvRGlyZWN0aXZl
SGFuZGxlci5jcHAgXAogICAgIHNyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcCBcCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEy
LDggKzEyLDkgQEAKIAkJNDk5NTFDMDMxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzAy
MTRCN0FBQjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRzLmggKi87IH07CiAJCTQ5OTUxQzA5MTRC
N0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwNTE0QjdBQUQ3MDA2MEU5
NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovOyB9OwogCQk0OTk1MUMwQTE0QjdB
QUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA2MTRCN0FBRDgwMDYwRTk2RSAv
KiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovOyB9OwotCQk0OTk1MUMwQjE0QjdBQUQ4MDA2
MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1
cnNpb24uY3BwICovOyB9OwotCQk0OTk1MUMwQzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVj
dXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmggKi87IH07CisJCTQ5
OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDcxNEI3QUFEODAwNjBF
OTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAgKi87IH07CisJCTQ5OTUxQzBDMTRCN0FBRDgwMDYw
RTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA4MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVw
dGguaCAqLzsgfTsKKwkJNUNDRUI4QjYxNzkwOEVFQzAwRkQ5NDk2IC8qIGJ1aWx0aW5fc3ltYm9s
X3RhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQ0VCOEI0MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgKi87
IH07CiAJCTkwRDlCMTAyMTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjBGOTEyRTExRENCMDAy
RDQyNTUgLyogQ29tcGlsZXIuY3BwICovOyB9OwogCQk5MEQ5QjEwMzEyRTExRENCMDAyRDQyNTUg
LyogRXh0ZW5zaW9uQmVoYXZpb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkwRDlCMEZBMTJFMTFEQ0IwMDJENDI1NSAvKiBFeHRlbnNpb25CZWhhdmlv
ci5oICovOyB9OwogCQk5MEQ5QjEwNDEyRTExRENCMDAyRDQyNTUgLyogZ2xzbGFuZ19sZXguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBEOUIwRkIx
MkUxMURDQjAwMkQ0MjU1IC8qIGdsc2xhbmdfbGV4LmNwcCAqLzsgfTsKQEAgLTE0MCw4ICsxNDEs
MTAgQEAKIAkJNDk5NTFDMDIxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbGVuZ3RoX2xpbWl0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0OTk1MUMwNTE0QjdBQUQ3MDA2MEU5NkUgLyogQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDk5NTFDMDcxNEI3QUFEODAwNjBFOTZF
IC8qIERldGVjdFJlY3Vyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEZXRlY3RSZWN1cnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldGVjdFJlY3Vyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRo
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERldGVjdENhbGxEZXB0
aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5OTUxQzA4MTRCN0FBRDgwMDYw
RTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGV0ZWN0Q2FsbERlcHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0VC
OEI0MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBidWlsdGluX3N5bWJvbF90YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDQ0VCOEI1MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJs
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBidWlsdGluX3N5bWJvbF90YWJsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1RDdDNTlDNTEyMDhDNjhCMDAxQzg3M0UgLyogQU5HTEUueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQU5HTEUueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM2MTIwOEM2OEIwMDFDODczRSAvKiBCYXNl
LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM3MTIwOEM2OEIwMDFDODczRSAv
KiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0g
RGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzkw
LDYgKzM5Myw4IEBACiAJCQkJQTI2NTY4MkMxNTlDMjNFMTAwMzk4NTM5IC8qIGRlcGdyYXBoICov
LAogCQkJCUZCMzlEMjQ0MTIwMEYzNUEwMDA4OEU2OSAvKiBwcmVwcm9jZXNzb3IgKi8sCiAJCQkJ
QTI2NTY4MzQxNTlDMjNFMTAwMzk4NTM5IC8qIHRpbWluZyAqLywKKwkJCQk1Q0NFQjhCNDE3OTA4
RTNBMDBGRDk0OTYgLyogYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwICovLAorCQkJCTVDQ0VCOEI1
MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5oICovLAogCQkJCUZCMzlE
MjIxMTIwMEYzNUEwMDA4OEU2OSAvKiBCYXNlVHlwZXMuaCAqLywKIAkJCQk0OTk1MUMwNTE0QjdB
QUQ3MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovLAogCQkJCTQ5OTUx
QzA2MTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovLApAQCAt
Mzk5LDggKzQwNCw4IEBACiAJCQkJRkIzOUQyMjUxMjAwRjM1QTAwMDg4RTY5IC8qIENvbnN0YW50
VW5pb24uaCAqLywKIAkJCQlGQjM5RDIyNjEyMDBGMzVBMDAwODhFNjkgLyogZGVidWcuY3BwICov
LAogCQkJCUZCMzlEMjI3MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5oICovLAotCQkJCTQ5OTUx
QzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uY3BwICovLAotCQkJCTQ5OTUx
QzA4MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLywKKwkJCQk0OTk1MUMw
NzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRoLmNwcCAqLywKKwkJCQk0OTk1MUMw
ODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRoLmggKi8sCiAJCQkJQTI2NTY3QjAx
NTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmNwcCAqLywKIAkJCQlBMjY1NjdCMTE1OUMy
MUIxMDAzOTg1MzkgLyogRGlhZ25vc3RpY3MuaCAqLywKIAkJCQlBMjY1NjdCMjE1OUMyMUIxMDAz
OTg1MzkgLyogRGlyZWN0aXZlSGFuZGxlci5jcHAgKi8sCkBAIC01MzAsNyArNTM1LDcgQEAKIAkJ
CQlBMjY1NjgzQTE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMjY1NjgzQzE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoQnVp
bGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY4M0UxNTlDMjNFMTAwMzk4NTM5IC8qIERl
cGVuZGVuY3lHcmFwaE91dHB1dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk5NTFDMEMxNEI3QUFE
ODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDk5NTFD
MEMxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTI2NTY3QkMxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMjY0RjhBRDE2OTc0REVEMDA2RkFBNUEgLyogRGlhZ25vc3RpY3NCYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMjY1NjdCRTE1OUMyMUIxMDAzOTg1MzkgLyogRGlyZWN0aXZlSGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC02MzUsNyArNjQwLDcgQEAKIAkJCQlBMjY1NjgzQjE1
OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMjY1NjgzRDE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoT3V0cHV0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2ODNGMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBl
bmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0OTk1MUMwQjE0QjdB
QUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5
OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTI2NTY3QkIxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUEyNjRGOEFDMTY5NzRERUQwMDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NTY3QkQxNTlDMjFCMTAwMzk4NTM5IC8qIERp
cmVjdGl2ZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC02NzAsNiArNjc1LDcgQEAKIAkJ
CQlBMjY1Njg0MDE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWlu
Zy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1Njg0MjE1OUMyM0UxMDAzOTg1MzkgLyogUmVz
dHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTBEOUIxMDkx
MkUxMURDQjAwMkQ0MjU1IC8qIFNlYXJjaFN5bWJvbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
Q0NFQjhCNjE3OTA4RUVDMDBGRDk0OTYgLyogYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkIzOUQyQTgxMjAwRjM1QTAwMDg4RTY5IC8qIFNoYWRlckxhbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQyQUExMjAwRjM1QTAwMDg4RTY5IC8qIFN5bWJvbFRh
YmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRGOEMxMTY5NzRERUQwMDZGQUE1QSAvKiBU
b2tlbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2lu
Y2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkocmV2aXNpb24gMTUyMzIzKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSwxMyBAQCB0eXBlZGVmIGVudW0gewogICAvLyB2
ZWMyMzQsIG9yIG1hdDIzNCB0eXBlLiBUaGUgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBl
bnVtLAogICAvLyBzcGVjaWZpZWQgaW4gdGhlIFNoQnVpbHRJblJlc291cmNlcyB3aGVuIGNvbnN0
cnVjdGluZyB0aGUKICAgLy8gY29tcGlsZXIsIHNlbGVjdHMgdGhlIHN0cmF0ZWd5IGZvciB0aGUg
Y2xhbXBpbmcgaW1wbGVtZW50YXRpb24uCi0gIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5E
UyA9IDB4MTAwMAorICBTSF9DTEFNUF9JTkRJUkVDVF9BUlJBWV9CT1VORFMgPSAweDEwMDAsCisK
KyAgLy8gVGhpcyBmbGFnIGxpbWl0cyB0aGUgY29tcGxleGl0eSBvZiBhbiBleHByZXNzaW9uLgor
ICBTSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkgPSAweDIwMDAsCisKKyAgLy8gVGhpcyBm
bGFnIGxpbWl0cyB0aGUgZGVwdGggb2YgdGhlIGNhbGwgc3RhY2suCisgIFNIX0xJTUlUX0NBTExf
U1RBQ0tfREVQVEggPSAweDQwMDAsCiB9IFNoQ29tcGlsZU9wdGlvbnM7CiAKIC8vIERlZmluZXMg
YWx0ZXJuYXRlIHN0cmF0ZWdpZXMgZm9yIGltcGxlbWVudGluZyBhcnJheSBpbmRleCBjbGFtcGlu
Zy4KQEAgLTIwOSw2ICsyMTUsNyBAQCB0eXBlZGVmIHN0cnVjdAogICAgIGludCBPRVNfRUdMX2lt
YWdlX2V4dGVybmFsOwogICAgIGludCBBUkJfdGV4dHVyZV9yZWN0YW5nbGU7CiAgICAgaW50IEVY
VF9kcmF3X2J1ZmZlcnM7CisgICAgaW50IEVYVF9mcmFnX2RlcHRoOwogCiAgICAgLy8gU2V0IHRv
IDEgaWYgaGlnaHAgcHJlY2lzaW9uIGlzIHN1cHBvcnRlZCBpbiB0aGUgZnJhZ21lbnQgbGFuZ3Vh
Z2UuCiAgICAgLy8gRGVmYXVsdCBpcyAwLgpAQCAtMjIyLDYgKzIyOSwxMiBAQCB0eXBlZGVmIHN0
cnVjdAogICAgIC8vIFNlbGVjdHMgYSBzdHJhdGVneSB0byB1c2Ugd2hlbiBpbXBsZW1lbnRpbmcg
YXJyYXkgaW5kZXggY2xhbXBpbmcuCiAgICAgLy8gRGVmYXVsdCBpcyBTSF9DTEFNUF9XSVRIX0NM
QU1QX0lOVFJJTlNJQy4KICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IEFycmF5SW5k
ZXhDbGFtcGluZ1N0cmF0ZWd5OworCisgICAgLy8gVGhlIG1heGltdW0gY29tcGxleGl0eSBhbiBl
eHByZXNzaW9uIGNhbiBiZS4KKyAgICBpbnQgTWF4RXhwcmVzc2lvbkNvbXBsZXhpdHk7CisKKyAg
ICAvLyBUaGUgbWF4aW11bSBkZXB0aCBhIGNhbGwgc3RhY2sgY2FuIGJlLgorICAgIGludCBNYXhD
YWxsU3RhY2tEZXB0aDsKIH0gU2hCdWlsdEluUmVzb3VyY2VzOwogCiAvLwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgJKHJldmlzaW9uIDE1MjMy
MykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdmVyc2lvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogI2RlZmluZSBNQUpPUl9WRVJTSU9OIDEKICNkZWZp
bmUgTUlOT1JfVkVSU0lPTiAwCiAjZGVmaW5lIEJVSUxEX1ZFUlNJT04gMAotI2RlZmluZSBCVUlM
RF9SRVZJU0lPTiAxOTg3CisjZGVmaW5lIEJVSUxEX1JFVklTSU9OIDIyNDkKIAogI2RlZmluZSBT
VFJJTkdJRlkoeCkgI3gKICNkZWZpbmUgTUFDUk9fU1RSSU5HSUZZKHgpIFNUUklOR0lGWSh4KQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CYXNlVHlw
ZXMuaAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0Jhc2VUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCwxMCArOTAsNiBAQCBlbnVt
IFRRdWFsaWZpZXIKICAgICBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAgICAvLyB2ZXJ0ZXggc2hh
ZGVycyBvbmx5ICByZWFkL3dyaXRlCiAgICAgRXZxVW5pZm9ybSwgICAgICAgLy8gUmVhZG9ubHks
IHZlcnRleCBhbmQgZnJhZ21lbnQKIAotICAgIC8vIHBhY2svdW5wYWNrIGlucHV0IGFuZCBvdXRw
dXQKLSAgICBFdnFJbnB1dCwKLSAgICBFdnFPdXRwdXQsCi0KICAgICAvLyBwYXJhbWV0ZXJzCiAg
ICAgRXZxSW4sCiAgICAgRXZxT3V0LApAQCAtMTEyLDYgKzEwOCw3IEBAIGVudW0gVFF1YWxpZmll
cgogICAgIC8vIGJ1aWx0LWlucyB3cml0dGVuIGJ5IGZyYWdtZW50IHNoYWRlcgogICAgIEV2cUZy
YWdDb2xvciwKICAgICBFdnFGcmFnRGF0YSwKKyAgICBFdnFGcmFnRGVwdGgsCiAKICAgICAvLyBl
bmQgb2YgbGlzdAogICAgIEV2cUxhc3QKQEAgLTEzNywxNCArMTM0LDEzIEBAIGlubGluZSBjb25z
dCBjaGFyKiBnZXRRdWFsaWZpZXJTdHJpbmcoVFEKICAgICBjYXNlIEV2cUluOiAgICAgICAgICAg
ICByZXR1cm4gImluIjsgICAgICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFPdXQ6ICAgICAg
ICAgICAgcmV0dXJuICJvdXQiOyAgICAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxSW5PdXQ6
ICAgICAgICAgIHJldHVybiAiaW5vdXQiOyAgICAgICAgICBicmVhazsKLSAgICBjYXNlIEV2cUlu
cHV0OiAgICAgICAgICByZXR1cm4gImlucHV0IjsgICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
dnFPdXRwdXQ6ICAgICAgICAgcmV0dXJuICJvdXRwdXQiOyAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRXZxUG9zaXRpb246ICAgICAgIHJldHVybiAiUG9zaXRpb24iOyAgICAgICBicmVhazsKICAg
ICBjYXNlIEV2cVBvaW50U2l6ZTogICAgICByZXR1cm4gIlBvaW50U2l6ZSI7ICAgICAgYnJlYWs7
CiAgICAgY2FzZSBFdnFGcmFnQ29vcmQ6ICAgICAgcmV0dXJuICJGcmFnQ29vcmQiOyAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6ICAgIHJldHVybiAiRnJvbnRGYWNpbmciOyAg
ICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb2xvcjogICAgICByZXR1cm4gIkZyYWdDb2xvciI7
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcmFnRGF0YTogICAgICAgcmV0dXJuICJGcmFnRGF0
YSI7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdnFGcmFnRGVwdGg6ICAgICAgcmV0dXJuICJGcmFn
RGVwdGgiOyAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgcmV0dXJuICJ1
bmtub3duIHF1YWxpZmllciI7CiAgICAgfQogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9Db21tb24uaAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNCwyNCArMTQsMTIgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL1Bvb2xBbGxvYy5oIgogCi0v
LyBXZSBuZWVkIHR3byBwaWVjZXMgb2YgaW5mb3JtYXRpb24gdG8gcmVwb3J0IGVycm9ycy93YXJu
aW5ncyAtIHN0cmluZyBhbmQKLS8vIGxpbmUgbnVtYmVyLiBXZSBlbmNvZGUgdGhlc2UgaW50byBh
IHNpbmdsZSBpbnQgc28gdGhhdCBpdCBjYW4gYmUgZWFzaWx5Ci0vLyBpbmNyZW1lbnRlZC9kZWNy
ZW1lbnRlZCBieSBsZXhlci4gVGhlIHJpZ2h0IFNPVVJDRV9MT0NfTElORV9TSVpFIGJpdHMgc3Rv
cmUKLS8vIGxpbmUgbnVtYmVyIHdoaWxlIHRoZSByZXN0IHN0b3JlIHRoZSBzdHJpbmcgbnVtYmVy
LiBTaW5jZSB0aGUgc2hhZGVycyBhcmUKLS8vIHVzdWFsbHkgc21hbGwsIHdlIHNob3VsZCBub3Qg
cnVuIG91dCBvZiBtZW1vcnkuIFNPVVJDRV9MT0NfTElORV9TSVpFCi0vLyBjYW4gYmUgaW5jcmVh
c2VkIHRvIGFsbGV2aWF0ZSB0aGlzIGlzc3VlLgotdHlwZWRlZiBpbnQgVFNvdXJjZUxvYzsKLWNv
bnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfU0laRSA9IDE2OyAgLy8gaW4gYml0cy4K
LWNvbnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfTUFTSyA9ICgxIDw8IFNPVVJDRV9M
T0NfTElORV9TSVpFKSAtIDE7Ci0KLWlubGluZSBUU291cmNlTG9jIEVuY29kZVNvdXJjZUxvYyhp
bnQgc3RyaW5nLCBpbnQgbGluZSkgewotICAgIHJldHVybiAoc3RyaW5nIDw8IFNPVVJDRV9MT0Nf
TElORV9TSVpFKSB8IChsaW5lICYgU09VUkNFX0xPQ19MSU5FX01BU0spOwotfQotCi1pbmxpbmUg
dm9pZCBEZWNvZGVTb3VyY2VMb2MoVFNvdXJjZUxvYyBsb2MsIGludCogc3RyaW5nLCBpbnQqIGxp
bmUpIHsKLSAgICBpZiAoc3RyaW5nKSAqc3RyaW5nID0gbG9jID4+IFNPVVJDRV9MT0NfTElORV9T
SVpFOwotICAgIGlmIChsaW5lKSAqbGluZSA9IGxvYyAmIFNPVVJDRV9MT0NfTElORV9NQVNLOwot
fQorc3RydWN0IFRTb3VyY2VMb2MgeworICAgIGludCBmaXJzdF9maWxlOworICAgIGludCBmaXJz
dF9saW5lOworICAgIGludCBsYXN0X2ZpbGU7CisgICAgaW50IGxhc3RfbGluZTsKK307CiAKIC8v
CiAvLyBQdXQgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSBpbiBiYXNlIGNsYXNzZXMgdG8gbWFr
ZSB0aGVtIHVzZSB0aGlzIHNjaGVtZS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Db21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkocmV2aXNpb24gMTUyMzIzKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNCw4ICs0LDkgQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwog
CisjaW5jbHVkZSAiY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaCIKICNpbmNsdWRlICJj
b21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIgotI2luY2x1ZGUgImNvbXBpbGVyL0Rl
dGVjdFJlY3Vyc2lvbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL0Zvckxvb3BVbnJvbGwuaCIKICNpbmNsdWRlICJjb21waWxlci9J
bml0aWFsaXplLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5o
IgpAQCAtNjIsMTEgKzYzLDI2IEBAIGJvb2wgSW5pdGlhbGl6ZVN5bWJvbFRhYmxlKAogCiAgICAg
ICAgIGlmIChQYVBhcnNlU3RyaW5ncygxLCAmYnVpbHRJblNoYWRlcnMsICZidWlsdEluTGVuZ3Ro
cywgJnBhcnNlQ29udGV4dCkgIT0gMCkKICAgICAgICAgewotICAgICAgICAgICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5hYmxlIHRvIHBhcnNlIGJ1aWx0
LWlucyIpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEludGVybmFs
RXJyb3IpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiVW5hYmxlIHRvIHBhcnNlIGJ1
aWx0LWlucyI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAK
KworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgU0hfRlJBR01FTlRfU0hBREVSOgorICAg
ICAgICBJbnNlcnRCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNlcywgJnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNIX1ZFUlRFWF9TSEFERVI6CisgICAgICAg
IEluc2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24ocmVzb3VyY2VzLCAmc3ltYm9sVGFibGUpOwor
ICAgICAgICBJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KHJlc291cmNlcywgJnN5bWJvbFRh
YmxlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UgJiYgIkxh
bmd1YWdlIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICB9CisKICAgICBJZGVudGlmeUJ1aWx0SW5zKHR5
cGUsIHNwZWMsIHJlc291cmNlcywgc3ltYm9sVGFibGUpOwogCiAgICAgcmV0dXJuIHRydWU7CkBA
IC0xMDMsNiArMTE5LDkgQEAgVFNoSGFuZGxlQmFzZTo6flRTaEhhbmRsZUJhc2UoKSB7CiBUQ29t
cGlsZXI6OlRDb21waWxlcihTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMpCiAg
ICAgOiBzaGFkZXJUeXBlKHR5cGUpLAogICAgICAgc2hhZGVyU3BlYyhzcGVjKSwKKyAgICAgIG1h
eFVuaWZvcm1WZWN0b3JzKDApLAorICAgICAgbWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkoMCksCisg
ICAgICBtYXhDYWxsU3RhY2tEZXB0aCgwKSwKICAgICAgIGZyYWdtZW50UHJlY2lzaW9uSGlnaChm
YWxzZSksCiAgICAgICBjbGFtcGluZ1N0cmF0ZWd5KFNIX0NMQU1QX1dJVEhfQ0xBTVBfSU5UUklO
U0lDKSwKICAgICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKHR5cGUpCkBAIC0xMjEsMTEgKzE0
MCwxNCBAQCBib29sIFRDb21waWxlcjo6SW5pdChjb25zdCBTaEJ1aWx0SW5SZXNvCiAgICAgbWF4
VW5pZm9ybVZlY3RvcnMgPSAoc2hhZGVyVHlwZSA9PSBTSF9WRVJURVhfU0hBREVSKSA/CiAgICAg
ICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA6CiAgICAgICAgIHJlc291cmNl
cy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzOworICAgIG1heEV4cHJlc3Npb25Db21wbGV4aXR5
ID0gcmVzb3VyY2VzLk1heEV4cHJlc3Npb25Db21wbGV4aXR5OworICAgIG1heENhbGxTdGFja0Rl
cHRoID0gcmVzb3VyY2VzLk1heENhbGxTdGFja0RlcHRoOwogICAgIFRTY29wZWRQb29sQWxsb2Nh
dG9yIHNjb3BlZEFsbG9jKCZhbGxvY2F0b3IsIGZhbHNlKTsKIAogICAgIC8vIEdlbmVyYXRlIGJ1
aWx0LWluIHN5bWJvbCB0YWJsZS4KICAgICBpZiAoIUluaXRCdWlsdEluU3ltYm9sVGFibGUocmVz
b3VyY2VzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgSW5pdEV4dGVuc2lvbkJlaGF2
aW9yKHJlc291cmNlcywgZXh0ZW5zaW9uQmVoYXZpb3IpOwogICAgIGZyYWdtZW50UHJlY2lzaW9u
SGlnaCA9IHJlc291cmNlcy5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPT0gMTsKIApAQCAtMTcwLDgg
KzE5MiwxMCBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAg
Ly8gV2UgcHJlc2VydmUgc3ltYm9scyBhdCB0aGUgYnVpbHQtaW4gbGV2ZWwgZnJvbSBjb21waWxl
LXRvLWNvbXBpbGUuCiAgICAgLy8gU3RhcnQgcHVzaGluZyB0aGUgdXNlci1kZWZpbmVkIHN5bWJv
bHMgYXQgZ2xvYmFsIGxldmVsLgogICAgIHN5bWJvbFRhYmxlLnB1c2goKTsKLSAgICBpZiAoIXN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSkKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiV3Jvbmcgc3ltYm9sIHRhYmxlIGxldmVsIik7CisgICAg
aWYgKCFzeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkpIHsKKyAgICAgICAgaW5mb1NpbmsuaW5m
by5wcmVmaXgoRVByZWZpeEludGVybmFsRXJyb3IpOworICAgICAgICBpbmZvU2luay5pbmZvIDw8
ICJXcm9uZyBzeW1ib2wgdGFibGUgbGV2ZWwiOworICAgIH0KIAogICAgIC8vIFBhcnNlIHNoYWRl
ci4KICAgICBib29sIHN1Y2Nlc3MgPQpAQCAtMTgyLDcgKzIwNiw3IEBAIGJvb2wgVENvbXBpbGVy
Ojpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAgICAgc3VjY2VzcyA9IGludGVybWVkaWF0
ZS5wb3N0UHJvY2Vzcyhyb290KTsKIAogICAgICAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgICAg
IHN1Y2Nlc3MgPSBkZXRlY3RSZWN1cnNpb24ocm9vdCk7CisgICAgICAgICAgICBzdWNjZXNzID0g
ZGV0ZWN0Q2FsbERlcHRoKHJvb3QsIGluZm9TaW5rLCAoY29tcGlsZU9wdGlvbnMgJiBTSF9MSU1J
VF9DQUxMX1NUQUNLX0RFUFRIKSAhPSAwKTsKIAogICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29t
cGlsZU9wdGlvbnMgJiBTSF9WQUxJREFURV9MT09QX0lOREVYSU5HKSkKICAgICAgICAgICAgIHN1
Y2Nlc3MgPSB2YWxpZGF0ZUxpbWl0YXRpb25zKHJvb3QpOwpAQCAtMjA1LDYgKzIyOSwxMCBAQCBi
b29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgIGlmIChzdWNj
ZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUykp
CiAgICAgICAgICAgICBhcnJheUJvdW5kc0NsYW1wZXIuTWFya0luZGlyZWN0QXJyYXlCb3VuZHNG
b3JDbGFtcGluZyhyb290KTsKIAorICAgICAgICAvLyBEaXNhbGxvdyBleHByZXNzaW9ucyBkZWVt
ZWQgdG9vIGNvbXBsZXguCisgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAm
IFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSkpCisgICAgICAgICAgICBzdWNjZXNzID0g
bGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShyb290KTsKKwogICAgICAgICAvLyBDYWxsIG1hcExv
bmdWYXJpYWJsZU5hbWVzKCkgYmVmb3JlIGNvbGxlY3RBdHRyaWJzVW5pZm9ybXMoKSBzbyBpbgog
ICAgICAgICAvLyBjb2xsZWN0QXR0cmlic1VuaWZvcm1zKCkgd2UgYWxyZWFkeSBoYXZlIHRoZSBt
YXBwZWQgc3ltYm9sIG5hbWVzIGFuZAogICAgICAgICAvLyB3ZSBjb3VsZCBjb21wb3NpdGUgbWFw
cGVkIGFuZCBvcmlnaW5hbCB2YXJpYWJsZSBuYW1lcy4KQEAgLTIxNyw3ICsyNDUsOCBAQCBib29s
IFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgICAgICBpZiAoY29t
cGlsZU9wdGlvbnMgJiBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05TKSB7CiAgICAgICAg
ICAgICAgICAgc3VjY2VzcyA9IGVuZm9yY2VQYWNraW5nUmVzdHJpY3Rpb25zKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4RXJyb3IsICJ0b28gbWFueSB1bmlmb3JtcyIpOworICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJ0b28gbWFueSB1bmlmb3JtcyI7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNjMsMTggKzI5MiwyNCBA
QCB2b2lkIFRDb21waWxlcjo6Y2xlYXJSZXN1bHRzKCkKICAgICBuYW1lTWFwLmNsZWFyKCk7CiB9
CiAKLWJvb2wgVENvbXBpbGVyOjpkZXRlY3RSZWN1cnNpb24oVEludGVybU5vZGUqIHJvb3QpCiti
b29sIFRDb21waWxlcjo6ZGV0ZWN0Q2FsbERlcHRoKFRJbnRlcm1Ob2RlKiByb290LCBUSW5mb1Np
bmsmIGluZm9TaW5rLCBib29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgpCiB7Ci0gICAgRGV0ZWN0UmVj
dXJzaW9uIGRldGVjdDsKKyAgICBEZXRlY3RDYWxsRGVwdGggZGV0ZWN0KGluZm9TaW5rLCBsaW1p
dENhbGxTdGFja0RlcHRoLCBtYXhDYWxsU3RhY2tEZXB0aCk7CiAgICAgcm9vdC0+dHJhdmVyc2Uo
JmRldGVjdCk7Ci0gICAgc3dpdGNoIChkZXRlY3QuZGV0ZWN0UmVjdXJzaW9uKCkpIHsKLSAgICAg
ICAgY2FzZSBEZXRlY3RSZWN1cnNpb246OmtFcnJvck5vbmU6CisgICAgc3dpdGNoIChkZXRlY3Qu
ZGV0ZWN0Q2FsbERlcHRoKCkpIHsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJv
ck5vbmU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBEZXRlY3RSZWN1
cnNpb246OmtFcnJvck1pc3NpbmdNYWluOgotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhFcnJvciwgIk1pc3NpbmcgbWFpbigpIik7CisgICAgICAgIGNhc2UgRGV0ZWN0
Q2FsbERlcHRoOjprRXJyb3JNaXNzaW5nTWFpbjoKKyAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
cHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJNaXNz
aW5nIG1haW4oKSI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgRGV0
ZWN0UmVjdXJzaW9uOjprRXJyb3JSZWN1cnNpb246Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVkIik7Cisg
ICAgICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JSZWN1cnNpb246CisgICAgICAgICAg
ICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAgaW5mb1Np
bmsuaW5mbyA8PCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVkIjsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvck1heERlcHRo
RXhjZWVkZWQ6CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3Ip
OworICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24gY2FsbCBzdGFjayB0b28g
ZGVlcCI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOwpAQCAtMzIwLDYgKzM1NSwyOCBAQCBib29sIFRDb21waWxl
cjo6ZW5mb3JjZVRpbWluZ1Jlc3RyaWN0aW9uCiAgICAgfQogfQogCitib29sIFRDb21waWxlcjo6
bGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCkKK3sKKyAgICBUSW50
ZXJtVHJhdmVyc2VyIHRyYXZlcnNlcjsKKyAgICByb290LT50cmF2ZXJzZSgmdHJhdmVyc2VyKTsK
KyAgICBURGVwZW5kZW5jeUdyYXBoIGdyYXBoKHJvb3QpOworCisgICAgZm9yIChURnVuY3Rpb25D
YWxsVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZ3JhcGguYmVnaW5Vc2VyRGVmaW5lZEZ1
bmN0aW9uQ2FsbHMoKTsKKyAgICAgICAgIGl0ZXIgIT0gZ3JhcGguZW5kVXNlckRlZmluZWRGdW5j
dGlvbkNhbGxzKCk7CisgICAgICAgICArK2l0ZXIpCisgICAgeworICAgICAgICBUR3JhcGhGdW5j
dGlvbkNhbGwqIHNhbXBsZXJTeW1ib2wgPSAqaXRlcjsKKyAgICAgICAgVERlcGVuZGVuY3lHcmFw
aFRyYXZlcnNlciBncmFwaFRyYXZlcnNlcjsKKyAgICAgICAgc2FtcGxlclN5bWJvbC0+dHJhdmVy
c2UoJmdyYXBoVHJhdmVyc2VyKTsKKyAgICB9CisKKyAgICBpZiAodHJhdmVyc2VyLmdldE1heERl
cHRoKCkgPiBtYXhFeHByZXNzaW9uQ29tcGxleGl0eSkgeworICAgICAgICBpbmZvU2luay5pbmZv
IDw8ICJFeHByZXNzaW9uIHRvbyBjb21wbGV4LiI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgVENvbXBpbGVyOjplbmZvcmNlRnJhZ21l
bnRTaGFkZXJUaW1pbmdSZXN0cmljdGlvbnMoY29uc3QgVERlcGVuZGVuY3lHcmFwaCYgZ3JhcGgp
CiB7CiAgICAgUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZyByZXN0cmljdG9yKGluZm9TaW5r
LmluZm8pOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbnN0
YW50VW5pb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvQ29uc3RhbnRVbmlvbi5oCShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIw
MDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0x
NCw2ICsxNCw3IEBAIHB1YmxpYzoKICAgICBDb25zdGFudFVuaW9uKCkKICAgICB7CiAgICAgICAg
IGlDb25zdCA9IDA7CisgICAgICAgIHR5cGUgPSBFYnRWb2lkOwogICAgIH0KIAogICAgIFBPT0xf
QUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikgICAgICAgIApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVj
dENhbGxEZXB0aC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE4NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL0RldGVjdENh
bGxEZXB0aC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCisKK0RldGVjdENhbGxE
ZXB0aDo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5hbWUpCisg
ICAgOiBuYW1lKGZuYW1lKSwKKyAgICAgIHZpc2l0KFByZVZpc2l0KQoreworfQorCitjb25zdCBU
U3RyaW5nJiBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK3ZvaWQgRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5v
ZGU6OmFkZENhbGxlZSgKKyAgICBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZSogY2FsbGVl
KQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsraSkgewor
ICAgICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Cit9CisKK2ludCBEZXRlY3RDYWxs
RGVwdGg6OkZ1bmN0aW9uTm9kZTo6ZGV0ZWN0Q2FsbERlcHRoKERldGVjdENhbGxEZXB0aCogZGV0
ZWN0Q2FsbERlcHRoLCBpbnQgZGVwdGgpCit7CisgICAgQVNTRVJUKHZpc2l0ID09IFByZVZpc2l0
KTsKKyAgICBBU1NFUlQoZGV0ZWN0Q2FsbERlcHRoKTsKKworICAgIGludCBtYXhEZXB0aCA9IGRl
cHRoOworICAgIHZpc2l0ID0gSW5WaXNpdDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNh
bGxlZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgc3dpdGNoIChjYWxsZWVzW2ldLT52aXNpdCkg
eworICAgICAgICAgICAgY2FzZSBJblZpc2l0OgorICAgICAgICAgICAgICAgIC8vIGN5Y2xlIGRl
dGVjdGVkLCBpLmUuLCByZWN1cnNpb24gZGV0ZWN0ZWQuCisgICAgICAgICAgICAgICAgcmV0dXJu
IGtJbmZpbml0ZUNhbGxEZXB0aDsKKyAgICAgICAgICAgIGNhc2UgUG9zdFZpc2l0OgorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQcmVWaXNpdDogeworICAgICAgICAg
ICAgICAgIC8vIENoZWNrIGJlZm9yZSB3ZSByZWN1cnNlIHNvIHdlIGRvbid0IGdvIHRvbyBkZXB0
aAorICAgICAgICAgICAgICAgIGlmIChkZXRlY3RDYWxsRGVwdGgtPmNoZWNrRXhjZWVkc01heERl
cHRoKGRlcHRoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlcHRoOworICAgICAgICAg
ICAgICAgIGludCBjYWxsRGVwdGggPSBjYWxsZWVzW2ldLT5kZXRlY3RDYWxsRGVwdGgoZGV0ZWN0
Q2FsbERlcHRoLCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIGFmdGVyIHdl
IHJlY3Vyc2Ugc28gd2UgY2FuIGV4aXQgaW1tZWRpYXRlbHkgYW5kIHByb3ZpZGUgaW5mby4KKyAg
ICAgICAgICAgICAgICBpZiAoZGV0ZWN0Q2FsbERlcHRoLT5jaGVja0V4Y2VlZHNNYXhEZXB0aChj
YWxsRGVwdGgpKSB7CisgICAgICAgICAgICAgICAgICAgIGRldGVjdENhbGxEZXB0aC0+Z2V0SW5m
b1NpbmsoKS5pbmZvIDw8ICI8LSIgPDwgY2FsbGVlc1tpXS0+Z2V0TmFtZSgpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gY2FsbERlcHRoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBtYXhEZXB0aCA9IHN0ZDo6bWF4KGNhbGxEZXB0aCwgbWF4RGVwdGgpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorICAgIHZpc2l0ID0gUG9zdFZpc2l0OworICAgIHJldHVybiBtYXhEZXB0
aDsKK30KKwordm9pZCBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6cmVzZXQoKQorewor
ICAgIHZpc2l0ID0gUHJlVmlzaXQ7Cit9CisKK0RldGVjdENhbGxEZXB0aDo6RGV0ZWN0Q2FsbERl
cHRoKFRJbmZvU2luayYgaW5mb1NpbmssIGJvb2wgbGltaXRDYWxsU3RhY2tEZXB0aCwgaW50IG1h
eENhbGxTdGFja0RlcHRoKQorICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgdHJ1
ZSwgZmFsc2UpLAorICAgICAgY3VycmVudEZ1bmN0aW9uKE5VTEwpLAorICAgICAgaW5mb1Npbmso
aW5mb1NpbmspLAorICAgICAgbWF4RGVwdGgobGltaXRDYWxsU3RhY2tEZXB0aCA/IG1heENhbGxT
dGFja0RlcHRoIDogRnVuY3Rpb25Ob2RlOjprSW5maW5pdGVDYWxsRGVwdGgpCit7Cit9CisKK0Rl
dGVjdENhbGxEZXB0aDo6fkRldGVjdENhbGxEZXB0aCgpCit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRlbGV0ZSBmdW5jdGlvbnNb
aV07Cit9CisKK2Jvb2wgRGV0ZWN0Q2FsbERlcHRoOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNp
dCwgVEludGVybUFnZ3JlZ2F0ZSogbm9kZSkKK3sKKyAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkp
CisgICAgeworICAgICAgICBjYXNlIEVPcFByb3RvdHlwZToKKyAgICAgICAgICAgIC8vIEZ1bmN0
aW9uIGRlY2xhcmF0aW9uLgorICAgICAgICAgICAgLy8gRG9uJ3QgYWRkIEZ1bmN0aW9uTm9kZSBo
ZXJlIGJlY2F1c2Ugbm9kZS0+Z2V0TmFtZSgpIGlzIHRoZQorICAgICAgICAgICAgLy8gdW5tYW5n
bGVkIGZ1bmN0aW9uIG5hbWUuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BG
dW5jdGlvbjogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KKyAgICAgICAg
ICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5j
dGlvbiA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAg
ICAgIGlmIChjdXJyZW50RnVuY3Rpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBj
dXJyZW50RnVuY3Rpb24gPSBuZXcgRnVuY3Rpb25Ob2RlKG5vZGUtPmdldE5hbWUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoX2JhY2soY3VycmVudEZ1bmN0aW9uKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKHZpc2l0ID09IFBvc3RWaXNp
dCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9IE5VTEw7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEVPcEZ1bmN0
aW9uQ2FsbDogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gY2FsbC4KKyAgICAgICAgICAgIGlm
ICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIEZ1bmN0aW9uTm9kZSogZnVu
YyA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAgICAg
IGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG5ldyBGdW5j
dGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25z
LnB1c2hfYmFjayhmdW5jKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg
KGN1cnJlbnRGdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uLT5h
ZGRDYWxsZWUoZnVuYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIERldGVjdENhbGxEZXB0aDo6Y2hlY2tFeGNlZWRzTWF4RGVw
dGgoaW50IGRlcHRoKQoreworICAgIHJldHVybiBkZXB0aCA+PSBtYXhEZXB0aDsKK30KKwordm9p
ZCBEZXRlY3RDYWxsRGVwdGg6OnJlc2V0RnVuY3Rpb25Ob2RlcygpCit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZnVuY3Rpb25z
W2ldLT5yZXNldCgpOworICAgIH0KK30KKworRGV0ZWN0Q2FsbERlcHRoOjpFcnJvckNvZGUgRGV0
ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbihGdW5jdGlvbk5vZGUqIGZ1
bmMpCit7CisgICAgY3VycmVudEZ1bmN0aW9uID0gTlVMTDsKKyAgICByZXNldEZ1bmN0aW9uTm9k
ZXMoKTsKKworICAgIGludCBtYXhDYWxsRGVwdGggPSBmdW5jLT5kZXRlY3RDYWxsRGVwdGgodGhp
cywgMSk7CisKKyAgICBpZiAobWF4Q2FsbERlcHRoID09IEZ1bmN0aW9uTm9kZTo6a0luZmluaXRl
Q2FsbERlcHRoKQorICAgICAgICByZXR1cm4ga0Vycm9yUmVjdXJzaW9uOworCisgICAgaWYgKG1h
eENhbGxEZXB0aCA+PSBtYXhEZXB0aCkKKyAgICAgICAgcmV0dXJuIGtFcnJvck1heERlcHRoRXhj
ZWVkZWQ7CisKKyAgICByZXR1cm4ga0Vycm9yTm9uZTsKK30KKworRGV0ZWN0Q2FsbERlcHRoOjpF
cnJvckNvZGUgRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGgoKQoreworICAgIGlmICht
YXhEZXB0aCAhPSBGdW5jdGlvbk5vZGU6OmtJbmZpbml0ZUNhbGxEZXB0aCkgeworICAgICAgICAv
LyBDaGVjayBhbGwgZnVuY3Rpb25zIGJlY2F1c2UgdGhlIGRyaXZlciBtYXkgZmFpbCBvbiB0aGVt
CisgICAgICAgIC8vIFRPRE86IEJlZm9yZSBkZXRlY3RpbmdSZWN1cnNpb24sIHN0cmlwIHVudXNl
ZCBmdW5jdGlvbnMuCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBFcnJvckNvZGUgZXJyb3IgPSBkZXRlY3RDYWxsRGVw
dGhGb3JGdW5jdGlvbihmdW5jdGlvbnNbaV0pOworICAgICAgICAgICAgaWYgKGVycm9yICE9IGtF
cnJvck5vbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICB9CisgICAg
fSBlbHNlIHsKKyAgICAgICAgRnVuY3Rpb25Ob2RlKiBtYWluID0gZmluZEZ1bmN0aW9uQnlOYW1l
KCJtYWluKCIpOworICAgICAgICBpZiAobWFpbiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJu
IGtFcnJvck1pc3NpbmdNYWluOworCisgICAgICAgIHJldHVybiBkZXRlY3RDYWxsRGVwdGhGb3JG
dW5jdGlvbihtYWluKTsKKyAgICB9CisKKyAgICByZXR1cm4ga0Vycm9yTm9uZTsKK30KKworRGV0
ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGUqIERldGVjdENhbGxEZXB0aDo6ZmluZEZ1bmN0aW9u
QnlOYW1lKAorICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUpCit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uc1tp
XS0+Z2V0TmFtZSgpID09IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25zW2ldOwor
ICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIworKgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5kZWYg
Q09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXworI2RlZmluZSBDT01QSUxFUl9ERVRFQ1RfUkVD
VVJTSU9OX0hfCisKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKworI2luY2x1ZGUg
PGxpbWl0cy5oPgorI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5oIgorI2luY2x1ZGUg
ImNvbXBpbGVyL1ZhcmlhYmxlSW5mby5oIgorCitjbGFzcyBUSW5mb1Npbms7CisKKy8vIFRyYXZl
cnNlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBkZXRlY3QgZnVuY3Rpb24gcmVjdXJzaW9uLgorY2xh
c3MgRGV0ZWN0Q2FsbERlcHRoIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIgeworcHVibGljOgor
ICAgIGVudW0gRXJyb3JDb2RlIHsKKyAgICAgICAga0Vycm9yTWlzc2luZ01haW4sCisgICAgICAg
IGtFcnJvclJlY3Vyc2lvbiwKKyAgICAgICAga0Vycm9yTWF4RGVwdGhFeGNlZWRlZCwKKyAgICAg
ICAga0Vycm9yTm9uZQorICAgIH07CisKKyAgICBEZXRlY3RDYWxsRGVwdGgoVEluZm9TaW5rJiBp
bmZvU3luYywgYm9vbCBsaW1pdENhbGxTdGFja0RlcHRoLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgp
OworICAgIH5EZXRlY3RDYWxsRGVwdGgoKTsKKworICAgIHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3Jl
Z2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopOworCisgICAgYm9vbCBjaGVja0V4Y2VlZHNN
YXhEZXB0aChpbnQgZGVwdGgpOworCisgICAgRXJyb3JDb2RlIGRldGVjdENhbGxEZXB0aCgpOwor
Citwcml2YXRlOgorICAgIGNsYXNzIEZ1bmN0aW9uTm9kZSB7CisgICAgcHVibGljOgorICAgICAg
ICBzdGF0aWMgY29uc3QgaW50IGtJbmZpbml0ZUNhbGxEZXB0aCA9IElOVF9NQVg7CisKKyAgICAg
ICAgRnVuY3Rpb25Ob2RlKGNvbnN0IFRTdHJpbmcmIGZuYW1lKTsKKworICAgICAgICBjb25zdCBU
U3RyaW5nJiBnZXROYW1lKCkgY29uc3Q7CisKKyAgICAgICAgLy8gSWYgYSBmdW5jdGlvbiBpcyBh
bHJlYWR5IGluIHRoZSBjYWxsZWUgbGlzdCwgdGhpcyBiZWNvbWVzIGEgbm8tb3AuCisgICAgICAg
IHZvaWQgYWRkQ2FsbGVlKEZ1bmN0aW9uTm9kZSogY2FsbGVlKTsKKworICAgICAgICAvLyBSZXR1
cm5zIGtJbmlmaW5pdHlDYWxsRGVwdGggaWYgcmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGxzIGFyZSBk
ZXRlY3RlZC4KKyAgICAgICAgaW50IGRldGVjdENhbGxEZXB0aChEZXRlY3RDYWxsRGVwdGgqIGRl
dGVjdENhbGxEZXB0aCwgaW50IGRlcHRoKTsKKworICAgICAgICAvLyBSZXNldCBzdGF0ZS4KKyAg
ICAgICAgdm9pZCByZXNldCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgLy8gbWFuZ2xlZCBm
dW5jdGlvbiBuYW1lIGlzIHVuaXF1ZS4KKyAgICAgICAgVFN0cmluZyBuYW1lOworCisgICAgICAg
IC8vIGZ1bmN0aW9ucyB0aGF0IGFyZSBkaXJlY3RseSBjYWxsZWQgYnkgdGhpcyBmdW5jdGlvbi4K
KyAgICAgICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBjYWxsZWVzOworCisgICAgICAgIFZpc2l0
IHZpc2l0OworICAgIH07CisKKyAgICBFcnJvckNvZGUgZGV0ZWN0Q2FsbERlcHRoRm9yRnVuY3Rp
b24oRnVuY3Rpb25Ob2RlKiBmdW5jKTsKKyAgICBGdW5jdGlvbk5vZGUqIGZpbmRGdW5jdGlvbkJ5
TmFtZShjb25zdCBUU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIHJlc2V0RnVuY3Rpb25Ob2Rlcygp
OworCisgICAgVEluZm9TaW5rJiBnZXRJbmZvU2luaygpIHsgcmV0dXJuIGluZm9TaW5rOyB9CisK
KyAgICBUVmVjdG9yPEZ1bmN0aW9uTm9kZSo+IGZ1bmN0aW9uczsKKyAgICBGdW5jdGlvbk5vZGUq
IGN1cnJlbnRGdW5jdGlvbjsKKyAgICBUSW5mb1NpbmsmIGluZm9TaW5rOworICAgIGludCBtYXhE
ZXB0aDsKKworICAgIERldGVjdENhbGxEZXB0aChjb25zdCBEZXRlY3RDYWxsRGVwdGgmKTsKKyAg
ICB2b2lkIG9wZXJhdG9yPShjb25zdCBEZXRlY3RDYWxsRGVwdGgmKTsKK307CisKKyNlbmRpZiAg
Ly8gQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAJKHJldmlzaW9uIDE1MjMy
MykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyNSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotCi0jaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgiCi0KLURldGVjdFJlY3Vy
c2lvbjo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5hbWUpCi0g
ICAgOiBuYW1lKGZuYW1lKSwKLSAgICAgIHZpc2l0KFByZVZpc2l0KQotewotfQotCi1jb25zdCBU
U3RyaW5nJiBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KLXZvaWQgRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5v
ZGU6OmFkZENhbGxlZSgKLSAgICBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZSogY2FsbGVl
KQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsraSkgewot
ICAgICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Ci19Ci0KLWJvb2wgRGV0ZWN0UmVj
dXJzaW9uOjpGdW5jdGlvbk5vZGU6OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgQVNTRVJUKHZp
c2l0ID09IFByZVZpc2l0KTsKLSAgICB2aXNpdCA9IEluVmlzaXQ7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN3aXRjaCAoY2FsbGVl
c1tpXS0+dmlzaXQpIHsKLSAgICAgICAgICAgIGNhc2UgSW5WaXNpdDoKLSAgICAgICAgICAgICAg
ICAvLyBjeWNsZSBkZXRlY3RlZCwgaS5lLiwgcmVjdXJzaW9uIGRldGVjdGVkLgotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgY2FzZSBQb3N0VmlzaXQ6Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFByZVZpc2l0OiB7Ci0gICAgICAgICAg
ICAgICAgYm9vbCByZWN1cnNpb24gPSBjYWxsZWVzW2ldLT5kZXRlY3RSZWN1cnNpb24oKTsKLSAg
ICAgICAgICAgICAgICBpZiAocmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICB2aXNpdCA9IFBvc3RWaXNpdDsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RGV0ZWN0UmVjdXJzaW9uKCkKLSAg
ICA6IGN1cnJlbnRGdW5jdGlvbihOVUxMKQotewotfQotCi1EZXRlY3RSZWN1cnNpb246On5EZXRl
Y3RSZWN1cnNpb24oKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNp
emUoKTsgKytpKQotICAgICAgICBkZWxldGUgZnVuY3Rpb25zW2ldOwotfQotCi1ib29sIERldGVj
dFJlY3Vyc2lvbjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUq
IG5vZGUpCi17Ci0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQotICAgIHsKLSAgICAgICAgY2Fz
ZSBFT3BQcm90b3R5cGU6Ci0gICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KLSAg
ICAgICAgICAgIC8vIERvbid0IGFkZCBGdW5jdGlvbk5vZGUgaGVyZSBiZWNhdXNlIG5vZGUtPmdl
dE5hbWUoKSBpcyB0aGUKLSAgICAgICAgICAgIC8vIHVubWFuZ2xlZCBmdW5jdGlvbiBuYW1lLgot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wRnVuY3Rpb246IHsKLSAgICAgICAg
ICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCi0gICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJl
VmlzaXQpIHsKLSAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24gPSBmaW5kRnVuY3Rpb25C
eU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZ1bmN0
aW9uID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uID0gbmV3
IEZ1bmN0aW9uTm9kZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbnMucHVzaF9iYWNrKGN1cnJlbnRGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBF
T3BGdW5jdGlvbkNhbGw6IHsKLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGNhbGwuCi0gICAgICAg
ICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoY3Vy
cmVudEZ1bmN0aW9uICE9IE5VTEwpOwotICAgICAgICAgICAgICAgIEZ1bmN0aW9uTm9kZSogZnVu
YyA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAg
IGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG5ldyBGdW5j
dGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25z
LnB1c2hfYmFjayhmdW5jKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY3Vy
cmVudEZ1bmN0aW9uLT5hZGRDYWxsZWUoZnVuYyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1EZXRlY3RSZWN1cnNpb246OkVycm9yQ29k
ZSBEZXRlY3RSZWN1cnNpb246OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgRnVuY3Rpb25Ob2Rl
KiBtYWluID0gZmluZEZ1bmN0aW9uQnlOYW1lKCJtYWluKCIpOwotICAgIGlmIChtYWluID09IE5V
TEwpCi0gICAgICAgIHJldHVybiBrRXJyb3JNaXNzaW5nTWFpbjsKLSAgICBpZiAobWFpbi0+ZGV0
ZWN0UmVjdXJzaW9uKCkpCi0gICAgICAgIHJldHVybiBrRXJyb3JSZWN1cnNpb247Ci0gICAgcmV0
dXJuIGtFcnJvck5vbmU7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlKiBEZXRl
Y3RSZWN1cnNpb246OmZpbmRGdW5jdGlvbkJ5TmFtZSgKLSAgICBjb25zdCBUU3RyaW5nJiBuYW1l
KQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIGlmIChmdW5jdGlvbnNbaV0tPmdldE5hbWUoKSA9PSBuYW1lKQotICAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uc1tpXTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0
ZWN0UmVjdXJzaW9uLmgJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw2
MCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIENPTVBJTEVSX0RFVEVDVF9S
RUNVUlNJT05fSF8KLSNkZWZpbmUgQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwotCi0jaW5j
bHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLSNpbmNsdWRlICJjb21waWxlci9pbnRlcm1l
ZGlhdGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9WYXJpYWJsZUluZm8uaCIKLQotLy8gVHJhdmVy
c2VzIGludGVybWVkaWF0ZSB0cmVlIHRvIGRldGVjdCBmdW5jdGlvbiByZWN1cnNpb24uCi1jbGFz
cyBEZXRlY3RSZWN1cnNpb24gOiBwdWJsaWMgVEludGVybVRyYXZlcnNlciB7Ci1wdWJsaWM6Ci0g
ICAgZW51bSBFcnJvckNvZGUgewotICAgICAgICBrRXJyb3JNaXNzaW5nTWFpbiwKLSAgICAgICAg
a0Vycm9yUmVjdXJzaW9uLAotICAgICAgICBrRXJyb3JOb25lCi0gICAgfTsKLQotICAgIERldGVj
dFJlY3Vyc2lvbigpOwotICAgIH5EZXRlY3RSZWN1cnNpb24oKTsKLQotICAgIHZpcnR1YWwgYm9v
bCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopOwotCi0gICAgRXJyb3JD
b2RlIGRldGVjdFJlY3Vyc2lvbigpOwotCi1wcml2YXRlOgotICAgIGNsYXNzIEZ1bmN0aW9uTm9k
ZSB7Ci0gICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5h
bWUpOwotCi0gICAgICAgIGNvbnN0IFRTdHJpbmcmIGdldE5hbWUoKSBjb25zdDsKLQotICAgICAg
ICAvLyBJZiBhIGZ1bmN0aW9uIGlzIGFscmVhZHkgaW4gdGhlIGNhbGxlZSBsaXN0LCB0aGlzIGJl
Y29tZXMgYSBuby1vcC4KLSAgICAgICAgdm9pZCBhZGRDYWxsZWUoRnVuY3Rpb25Ob2RlKiBjYWxs
ZWUpOwotCi0gICAgICAgIC8vIFJldHVybiB0cnVlIGlmIHJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxs
cyBhcmUgZGV0ZWN0ZWQuCi0gICAgICAgIGJvb2wgZGV0ZWN0UmVjdXJzaW9uKCk7Ci0KLSAgICBw
cml2YXRlOgotICAgICAgICAvLyBtYW5nbGVkIGZ1bmN0aW9uIG5hbWUgaXMgdW5pcXVlLgotICAg
ICAgICBUU3RyaW5nIG5hbWU7Ci0KLSAgICAgICAgLy8gZnVuY3Rpb25zIHRoYXQgYXJlIGRpcmVj
dGx5IGNhbGxlZCBieSB0aGlzIGZ1bmN0aW9uLgotICAgICAgICBUVmVjdG9yPEZ1bmN0aW9uTm9k
ZSo+IGNhbGxlZXM7Ci0KLSAgICAgICAgVmlzaXQgdmlzaXQ7Ci0gICAgfTsKLQotICAgIEZ1bmN0
aW9uTm9kZSogZmluZEZ1bmN0aW9uQnlOYW1lKGNvbnN0IFRTdHJpbmcmIG5hbWUpOwotCi0gICAg
VFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBmdW5jdGlvbnM7Ci0gICAgRnVuY3Rpb25Ob2RlKiBjdXJy
ZW50RnVuY3Rpb247Ci19OwotCi0jZW5kaWYgIC8vIENPTVBJTEVSX0RFVEVDVF9SRUNVUlNJT05f
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGlj
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0RpYWdub3N0aWNzLmNwcAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NyArNDYsNyBAQCB2b2lkIFREaWFnbm9zdGljczo6d3JpdGVJbmZvKFNldmVyaXR5IHNlCiAgICAg
VEluZm9TaW5rQmFzZSYgc2luayA9IG1JbmZvU2luay5pbmZvOwogICAgIC8qIFZDKysgZm9ybWF0
OiBmaWxlKGxpbmVudW0pIDogZXJyb3IgIzogJ3Rva2VuJyA6IGV4dHJhaW5mbyAqLwogICAgIHNp
bmsucHJlZml4KHByZWZpeCk7Ci0gICAgc2luay5sb2NhdGlvbihFbmNvZGVTb3VyY2VMb2MobG9j
LmZpbGUsIGxvYy5saW5lKSk7CisgICAgc2luay5sb2NhdGlvbihsb2MuZmlsZSwgbG9jLmxpbmUp
OwogICAgIHNpbmsgPDwgIiciIDw8IHRva2VuIDw8ICAiJyA6ICIgPDwgcmVhc29uIDw8ICIgIiA8
PCBleHRyYSA8PCAiXG4iOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCShyZXZpc2lvbiAxNTIzMjMp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAy
MDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgogLy8KQEAgLTIxMCw2ICsyMTAsNiBAQCBpbnQgRm9yTG9vcFVucm9sbDo6Z2V0
TG9vcEluY3JlbWVudChUSW50CiBpbnQgRm9yTG9vcFVucm9sbDo6ZXZhbHVhdGVJbnRDb25zdGFu
dChUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsKICAgICBBU1NFUlQoKG5vZGUgIT0gTlVM
TCkgJiYgKG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCkgIT0gTlVMTCkpOwotICAgIHJldHVy
biBub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAgICByZXR1cm4g
bm9kZS0+Z2V0SUNvbnN0KDApOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHJldmlzaW9uIDE1MjMyMykKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYsOCArNiw4IEBACiAKICNpbmNsdWRlICJjb21waWxlci9JbmZvU2luay5oIgog
Ci12b2lkIFRJbmZvU2lua0Jhc2U6OnByZWZpeChUUHJlZml4VHlwZSBtZXNzYWdlKSB7Ci0gICAg
c3dpdGNoKG1lc3NhZ2UpIHsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6cHJlZml4KFRQcmVmaXhUeXBl
IHApIHsKKyAgICBzd2l0Y2gocCkgewogICAgICAgICBjYXNlIEVQcmVmaXhOb25lOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRVByZWZpeFdhcm5pbmc6CkBAIC0zMSwyOSArMzEs
MjQgQEAgdm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoVFByZWZpeFR5cGUgbQogICAgIH0KIH0K
IAotdm9pZCBUSW5mb1NpbmtCYXNlOjpsb2NhdGlvbihUU291cmNlTG9jIGxvYykgewotICAgIGlu
dCBzdHJpbmcgPSAwLCBsaW5lID0gMDsKLSAgICBEZWNvZGVTb3VyY2VMb2MobG9jLCAmc3RyaW5n
LCAmbGluZSk7Ci0KK3ZvaWQgVEluZm9TaW5rQmFzZTo6bG9jYXRpb24oaW50IGZpbGUsIGludCBs
aW5lKSB7CiAgICAgVFBlcnNpc3RTdHJpbmdTdHJlYW0gc3RyZWFtOwogICAgIGlmIChsaW5lKQot
ICAgICAgICBzdHJlYW0gPDwgc3RyaW5nIDw8ICI6IiA8PCBsaW5lOworICAgICAgICBzdHJlYW0g
PDwgZmlsZSA8PCAiOiIgPDwgbGluZTsKICAgICBlbHNlCi0gICAgICAgIHN0cmVhbSA8PCBzdHJp
bmcgPDwgIjo/ICI7CisgICAgICAgIHN0cmVhbSA8PCBmaWxlIDw8ICI6PyAiOwogICAgIHN0cmVh
bSA8PCAiOiAiOwogCiAgICAgc2luay5hcHBlbmQoc3RyZWFtLnN0cigpKTsKIH0KIAotdm9pZCBU
SW5mb1NpbmtCYXNlOjptZXNzYWdlKFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMp
IHsKLSAgICBwcmVmaXgobWVzc2FnZSk7Ci0gICAgc2luay5hcHBlbmQocyk7Ci0gICAgc2luay5h
cHBlbmQoIlxuIik7Cit2b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9uKGNvbnN0IFRTb3VyY2VM
b2MmIGxvYykgeworICAgIGxvY2F0aW9uKGxvYy5maXJzdF9maWxlLCBsb2MuZmlyc3RfbGluZSk7
CiB9CiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBtZXNzYWdlLCBj
b25zdCBjaGFyKiBzLCBUU291cmNlTG9jIGxvYykgewotICAgIHByZWZpeChtZXNzYWdlKTsKK3Zv
aWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291cmNlTG9j
JiBsb2MsIGNvbnN0IGNoYXIqIG0pIHsKKyAgICBwcmVmaXgocCk7CiAgICAgbG9jYXRpb24obG9j
KTsKLSAgICBzaW5rLmFwcGVuZChzKTsKKyAgICBzaW5rLmFwcGVuZChtKTsKICAgICBzaW5rLmFw
cGVuZCgiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9JbmZvU2luay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9JbmZvU2luay5oCShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTAg
Kzk2LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBUUGVyc2lzdFN0cmluZyYgc3RyKCkgY29uc3Qg
eyByZXR1cm4gc2luazsgfQogICAgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29uc3QgeyByZXR1cm4g
c2luay5jX3N0cigpOyB9CiAKLSAgICB2b2lkIHByZWZpeChUUHJlZml4VHlwZSBtZXNzYWdlKTsK
LSAgICB2b2lkIGxvY2F0aW9uKFRTb3VyY2VMb2MgbG9jKTsKLSAgICB2b2lkIG1lc3NhZ2UoVFBy
ZWZpeFR5cGUgbWVzc2FnZSwgY29uc3QgY2hhciogcyk7Ci0gICAgdm9pZCBtZXNzYWdlKFRQcmVm
aXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMsIFRTb3VyY2VMb2MgbG9jKTsKKyAgICB2b2lk
IHByZWZpeChUUHJlZml4VHlwZSBwKTsKKyAgICB2b2lkIGxvY2F0aW9uKGludCBmaWxlLCBpbnQg
bGluZSk7CisgICAgdm9pZCBsb2NhdGlvbihjb25zdCBUU291cmNlTG9jJiBsb2MpOworICAgIHZv
aWQgbWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0IGNo
YXIqIG0pOwogCiBwcml2YXRlOgogICAgIFRQZXJzaXN0U3RyaW5nIHNpbms7CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3Bw
CShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvSW5pdGlhbGl6ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2LDM3MyArMTYsNiBAQAogCiAv
Lz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KIC8vCi0vLyBQcm90b3R5cGVzIGZvciBidWlsdC1pbiBmdW5j
dGlvbnMgc2VlbiBieSBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycy4KLS8vCi0vLz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLXN0YXRpYyBUU3RyaW5nIEJ1aWx0SW5GdW5jdGlvbnNDb21tb24o
Y29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCi17Ci0gICAgVFN0cmluZyBzOwot
Ci0gICAgLy8KLSAgICAvLyBBbmdsZSBhbmQgVHJpZ29ub21ldHJpYyBGdW5jdGlvbnMuCi0gICAg
Ly8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCByYWRpYW5zKGZsb2F0IGRlZ3JlZXMpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICByYWRpYW5zKHZlYzIgIGRlZ3JlZXMpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICByYWRpYW5zKHZlYzMgIGRlZ3JlZXMpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByYWRpYW5zKHZlYzQgIGRlZ3JlZXMpOyIp
KTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRlZ3JlZXMoZmxvYXQgcmFkaWFucyk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGRlZ3JlZXModmVjMiAgcmFkaWFucyk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGRlZ3JlZXModmVjMyAgcmFkaWFucyk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGRlZ3JlZXModmVjNCAgcmFkaWFucyk7
IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc2luKGZsb2F0IGFuZ2xlKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2luKHZlYzIgIGFuZ2xlKTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgc2luKHZlYzMgIGFuZ2xlKTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgc2luKHZlYzQgIGFuZ2xlKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJmbG9hdCBjb3MoZmxvYXQgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMyICBjb3ModmVjMiAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
ICBjb3ModmVjMyAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBjb3Mo
dmVjNCAgYW5nbGUpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHRhbihmbG9h
dCBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHRhbih2ZWMyICBhbmds
ZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHRhbih2ZWMzICBhbmdsZSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHRhbih2ZWM0ICBhbmdsZSk7IikpOwotCi0g
ICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYXNpbihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMiAgYXNpbih2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgYXNpbih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAg
YXNpbih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhY29zKGZs
b2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhY29zKHZlYzIgIHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhY29zKHZlYzMgIHgpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhY29zKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IGF0YW4oZmxvYXQgeSwgZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeSwgdmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzMgIGF0YW4odmVjMyAgeSwgdmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzQgIGF0YW4odmVjNCAgeSwgdmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBl
bmQoVFN0cmluZygiZmxvYXQgYXRhbihmbG9hdCB5X292ZXJfeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeV9vdmVyX3gpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMzICBhdGFuKHZlYzMgIHlfb3Zlcl94KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjNCAgYXRhbih2ZWM0ICB5X292ZXJfeCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBF
eHBvbmVudGlhbCBGdW5jdGlvbnMuCi0gICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCBwb3coZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IHBvdyh2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAg
cG93KHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBw
b3codmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQg
ZXhwKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAodmVjMiAg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGV4cCh2ZWMzICB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZXhwKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IGxvZyhmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiAgbG9nKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBs
b2codmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZyh2ZWM0ICB4
KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBleHAyKGZsb2F0IHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAyKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMzICBleHAyKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICBleHAyKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZs
b2F0IGxvZzIoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGxvZzIo
dmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGxvZzIodmVjMyAgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZzIodmVjNCAgeCk7IikpOwotCi0g
ICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc3FydChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMiAgc3FydCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgc3FydCh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAg
c3FydCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBpbnZlcnNl
c3FydChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgaW52ZXJzZXNx
cnQodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGludmVyc2VzcXJ0
KHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBpbnZlcnNlc3FydCh2
ZWM0ICB4KTsiKSk7Ci0KLSAgICAvLwotICAgIC8vIENvbW1vbiBGdW5jdGlvbnMuCi0gICAgLy8K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhYnMoZmxvYXQgeCk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzIgIGFicyh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgYWJzKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBh
YnModmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc2lnbihmbG9h
dCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2lnbih2ZWMyICB4KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc2lnbih2ZWMzICB4KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjNCAgc2lnbih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJmbG9hdCBmbG9vcihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMiAgZmxvb3IodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGZs
b29yKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBmbG9vcih2ZWM0
ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBjZWlsKGZsb2F0IHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBjZWlsKHZlYzIgIHgpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBjZWlsKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0ICBjZWlsKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImZsb2F0IGZyYWN0KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBm
cmFjdCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZnJhY3QodmVj
MyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGZyYWN0KHZlYzQgIHgpOyIp
KTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG1vZChmbG9hdCB4LCBmbG9hdCB5KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbW9kKHZlYzIgIHgsIGZsb2F0IHkpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtb2QodmVjMyAgeCwgZmxvYXQgeSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2ZWM0ICB4LCBmbG9hdCB5KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbW9kKHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtb2QodmVjMyAgeCwgdmVjMyAgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2ZWM0ICB4LCB2ZWM0ICB5KTsiKSk7Ci0K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtaW4oZmxvYXQgeCwgZmxvYXQgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1pbih2ZWMyICB4LCBmbG9hdCB5KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIGZsb2F0IHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4odmVjNCAgeCwgZmxvYXQgeSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1pbih2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4odmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbWF4KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzMgIG1heCh2ZWMzICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjNCAgbWF4KHZlYzQgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzMgIG1heCh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgbWF4KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IGNsYW1wKGZsb2F0IHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4
VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2xhbXAodmVjMiAgeCwgZmxv
YXQgbWluVmFsLCBmbG9hdCBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
ICBjbGFtcCh2ZWMzICB4LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIGZsb2F0IG1pblZhbCwgZmxvYXQg
bWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2xhbXAodmVjMiAgeCwg
dmVjMiAgbWluVmFsLCB2ZWMyICBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMzICBjbGFtcCh2ZWMzICB4LCB2ZWMzICBtaW5WYWwsIHZlYzMgIG1heFZhbCk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIHZlYzQgIG1pblZhbCwgdmVj
NCAgbWF4VmFsKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtaXgoZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgYSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1p
eCh2ZWMyICB4LCB2ZWMyICB5LCBmbG9hdCBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgbWl4KHZlYzMgIHgsIHZlYzMgIHksIGZsb2F0IGEpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwgdmVjNCAgeSwgZmxvYXQgYSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIG1peCh2ZWMyICB4LCB2ZWMyICB5LCB2ZWMyICBhKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWl4KHZlYzMgIHgsIHZlYzMgIHksIHZlYzMg
IGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwgdmVjNCAg
eSwgdmVjNCAgYSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc3RlcChmbG9h
dCBlZGdlLCBmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc3RlcCh2
ZWMyICBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc3Rl
cCh2ZWMzICBlZGdlLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAg
c3RlcCh2ZWM0ICBlZGdlLCB2ZWM0ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MiAgc3RlcChmbG9hdCBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgc3RlcChmbG9hdCBlZGdlLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCAgc3RlcChmbG9hdCBlZGdlLCB2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJmbG9hdCBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgZmxvYXQg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNtb290aHN0ZXAodmVjMiAgZWRn
ZTAsIHZlYzIgIGVkZ2UxLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgc21vb3Roc3RlcCh2ZWMzICBlZGdlMCwgdmVjMyAgZWRnZTEsIHZlYzMgIHgpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKHZlYzQgIGVkZ2UwLCB2ZWM0ICBl
ZGdlMSwgdmVjNCAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNtb290aHN0
ZXAoZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMyAgc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIHZlYzMg
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKGZsb2F0IGVk
Z2UwLCBmbG9hdCBlZGdlMSwgdmVjNCAgeCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBHZW9tZXRy
aWMgRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3Ro
KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsZW5ndGgodmVjMiAg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2ZWMzICB4KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKHZlYzQgIHgpOyIpKTsKLQotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKGZsb2F0IHAwLCBmbG9hdCBwMSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzIgIHAwLCB2ZWMyICBw
MSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzMgIHAwLCB2
ZWMzICBwMSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzQg
IHAwLCB2ZWM0ICBwMSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KGZs
b2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkb3QodmVj
MiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRvdCh2ZWMz
ICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KHZlYzQg
IHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgY3Jvc3ModmVj
MyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub3JtYWxpemUo
ZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG5vcm1hbGl6ZSh2ZWMy
ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbm9ybWFsaXplKHZlYzMgIHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBub3JtYWxpemUodmVjNCAgeCk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZmFjZWZvcndhcmQoZmxvYXQgTiwgZmxv
YXQgSSwgZmxvYXQgTnJlZik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGZhY2Vm
b3J3YXJkKHZlYzIgIE4sIHZlYzIgIEksIHZlYzIgIE5yZWYpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMzICBmYWNlZm9yd2FyZCh2ZWMzICBOLCB2ZWMzICBJLCB2ZWMzICBOcmVmKTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZmFjZWZvcndhcmQodmVjNCAgTiwgdmVj
NCAgSSwgdmVjNCAgTnJlZik7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgcmVm
bGVjdChmbG9hdCBJLCBmbG9hdCBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAg
cmVmbGVjdCh2ZWMyICBJLCB2ZWMyICBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgcmVmbGVjdCh2ZWMzICBJLCB2ZWMzICBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgcmVmbGVjdCh2ZWM0ICBJLCB2ZWM0ICBOKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCByZWZyYWN0KGZsb2F0IEksIGZsb2F0IE4sIGZsb2F0IGV0YSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHJlZnJhY3QodmVjMiAgSSwgdmVjMiAgTiwgZmxvYXQg
ZXRhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcmVmcmFjdCh2ZWMzICBJLCB2
ZWMzICBOLCBmbG9hdCBldGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByZWZy
YWN0KHZlYzQgIEksIHZlYzQgIE4sIGZsb2F0IGV0YSk7IikpOwotCi0gICAgLy8KLSAgICAvLyBN
YXRyaXggRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygibWF0MiBtYXRy
aXhDb21wTXVsdChtYXQyIHgsIG1hdDIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoIm1h
dDMgbWF0cml4Q29tcE11bHQobWF0MyB4LCBtYXQzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJtYXQ0IG1hdHJpeENvbXBNdWx0KG1hdDQgeCwgbWF0NCB5KTsiKSk7Ci0KLSAgICAvLwot
ICAgIC8vIFZlY3RvciByZWxhdGlvbmFsIGZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWMyIGxlc3NUaGFuKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygiYnZlYzMgbGVzc1RoYW4odmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbih2ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0gICAg
cy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbGVzc1RoYW4oaXZlYzIgeCwgaXZlYzIgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuKGl2ZWMzIHgsIGl2ZWMzIHkpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbihpdmVjNCB4LCBpdmVjNCB5
KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbkVxdWFsKHZlYzIg
eCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbGVzc1RoYW5FcXVh
bCh2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NU
aGFuRXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWMyIGxlc3NUaGFuRXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImJ2ZWMzIGxlc3NUaGFuRXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NUaGFuRXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW4odmVjMiB4LCB2ZWMy
IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbih2ZWMzIHgs
IHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFuKHZl
YzQgeCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBncmVhdGVy
VGhhbihpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMg
Z3JlYXRlclRoYW4oaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImJ2ZWM0IGdyZWF0ZXJUaGFuKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWMyIGdyZWF0ZXJUaGFuRXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbkVxdWFsKHZlYzMgeCwgdmVjMyB5
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVhbCh2ZWM0
IHgsIHZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRo
YW5FcXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZl
YzMgZ3JlYXRlclRoYW5FcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVhbChpdmVjNCB4LCBpdmVjNCB5KTsiKSk7Ci0K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBlcXVhbCh2ZWMyIHgsIHZlYzIgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGVxdWFsKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBlcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKGJ2ZWMzIHgsIGJ2ZWMzIHkp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBlcXVhbChidmVjNCB4LCBidmVjNCB5
KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBub3RFcXVhbCh2ZWMyIHgsIHZl
YzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5vdEVxdWFsKHZlYzMgeCwg
dmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1YWwodmVjNCB4
LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdEVxdWFsKGl2
ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBub3RFcXVh
bChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90
RXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZl
YzIgbm90RXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImJ2ZWMzIG5vdEVxdWFsKGJ2ZWMzIHgsIGJ2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJidmVjNCBub3RFcXVhbChidmVjNCB4LCBidmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJib29sIGFueShidmVjMiB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
Ym9vbCBhbnkoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYW55KGJ2
ZWM0IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYWxsKGJ2ZWMyIHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFsbChidmVjMyB4KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygiYm9vbCBhbGwoYnZlYzQgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzIgbm90KGJ2ZWMyIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVj
MyBub3QoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IG5vdChidmVj
NCB4KTsiKSk7Ci0KLSAgICAvLwotICAgIC8vIFRleHR1cmUgRnVuY3Rpb25zLgotICAgIC8vCi0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkQoc2FtcGxlcjJEIHNhbXBsZXIsIHZl
YzIgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2oo
c2FtcGxlcjJEIHNhbXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzQgY29vcmQpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmVDdWJlKHNhbXBsZXJDdWJlIHNhbXBs
ZXIsIHZlYzMgY29vcmQpOyIpKTsKLQotICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9l
eHRlcm5hbCkgewotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRChzYW1w
bGVyRXh0ZXJuYWxPRVMgc2FtcGxlciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlckV4dGVybmFsT0VTIHNhbXBsZXIs
IHZlYzMgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJl
MkRQcm9qKHNhbXBsZXJFeHRlcm5hbE9FUyBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7Ci0gICAg
fQotCi0gICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKLSAgICAgICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRSZWN0KHNhbXBsZXIyRFJlY3Qgc2FtcGxl
ciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1
cmUyRFJlY3RQcm9qKHNhbXBsZXIyRFJlY3Qgc2FtcGxlciwgdmVjMyBjb29yZCk7IikpOwotICAg
ICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFJlY3RQcm9qKHNhbXBsZXIyRFJl
Y3Qgc2FtcGxlciwgdmVjNCBjb29yZCk7IikpOwotICAgIH0KLQotICAgIC8vCi0gICAgLy8gTm9p
c2UgZnVuY3Rpb25zLgotICAgIC8vCi0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lz
ZTEoZmxvYXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbm9pc2UxKHZl
YzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG5vaXNlMSh2ZWMzICB4
KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lzZTEodmVjNCAgeCk7Iikp
OwotCi0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMihmbG9hdCB4KTsiKSk7Ci0g
ICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWMyICB4KTsiKSk7Ci0gICAgLy9z
LmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWM0ICB4KTsiKSk7Ci0KLSAgICAvL3MuYXBwZW5kKFRT
dHJpbmcoInZlYzMgbm9pc2UzKGZsb2F0IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmco
InZlYzMgbm9pc2UzKHZlYzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMg
bm9pc2UzKHZlYzMgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2Uz
KHZlYzQgIHgpOyIpKTsKLQotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQoZmxv
YXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjMiAgeCk7
IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjMyAgeCk7IikpOwot
ICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjNCAgeCk7IikpOwotCi0gICAg
cmV0dXJuIHM7Ci19Ci0KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFByb3RvdHlwZXMg
Zm9yIGJ1aWx0LWluIGZ1bmN0aW9ucyBzZWVuIGJ5IHZlcnRleCBzaGFkZXJzIG9ubHkuCi0vLwot
Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBCdWlsdEluRnVuY3Rpb25zVmVy
dGV4KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQotewotICAgIFRTdHJpbmcg
czsKLQotICAgIC8vCi0gICAgLy8gR2VvbWV0cmljIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIC8v
cy5hcHBlbmQoVFN0cmluZygidmVjNCBmdHJhbnNmb3JtKCk7IikpOwotCi0gICAgLy8KLSAgICAv
LyBUZXh0dXJlIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
dGV4dHVyZTJETG9kKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMyIGNvb3JkLCBmbG9hdCBsb2QpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJE
IHNhbXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0IGxvZCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzQgdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVjNCBjb29yZCwg
ZmxvYXQgbG9kKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlQ3ViZUxv
ZChzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBsb2QpOyIpKTsKLQotICAg
IHJldHVybiBzOwotfQotCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCiAvLyBQcm90b3R5cGVz
IGZvciBidWlsdC1pbiBmdW5jdGlvbnMgc2VlbiBieSBmcmFnbWVudCBzaGFkZXJzIG9ubHkuCiAv
LwogLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC01MDAsMTUgKzEzMywxMiBAQCB2b2lkIFRCdWls
dEluczo6aW5pdGlhbGl6ZShTaFNoYWRlclR5cGUKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBj
YXNlIFNIX0ZSQUdNRU5UX1NIQURFUjoKICAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNr
KERlZmF1bHRQcmVjaXNpb25GcmFnbWVudCgpKTsKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVz
aF9iYWNrKEJ1aWx0SW5GdW5jdGlvbnNDb21tb24ocmVzb3VyY2VzKSk7CiAgICAgICAgIGJ1aWx0
SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zRnJhZ21lbnQocmVzb3VyY2VzKSk7
CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhTdGFuZGFyZFVuaWZvcm1zKCkpOwog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU0hfVkVSVEVYX1NIQURFUjoKICAgICAgICAgYnVp
bHRJblN0cmluZ3MucHVzaF9iYWNrKERlZmF1bHRQcmVjaXNpb25WZXJ0ZXgoKSk7Ci0gICAgICAg
IGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNl
cykpOwotICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc1Zl
cnRleChyZXNvdXJjZXMpKTsKICAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKFN0YW5k
YXJkVW5pZm9ybXMoKSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC01MzksNiArMTY5LDEwIEBAIHZv
aWQgSWRlbnRpZnlCdWlsdElucyhTaFNoYWRlclR5cGUgdHlwZSwKICAgICAgICAgaWYgKHNwZWMg
IT0gU0hfQ1NTX1NIQURFUlNfU1BFQykgewogICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnQ29sb3IiKSwgICAgICAgICAg
ICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0NvbG9yLCAgIDQpKSk7
CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRT
dHJpbmcoImdsX0ZyYWdEYXRhW2dsX01heERyYXdCdWZmZXJzXSIpLCBUVHlwZShFYnRGbG9hdCwg
RWJwTWVkaXVtLCBFdnFGcmFnRGF0YSwgICAgNCkpKTsKKyAgICAgICAgICAgIGlmIChyZXNvdXJj
ZXMuRVhUX2ZyYWdfZGVwdGgpIHsKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQo
Km5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdEZXB0aEVYVCIpLCAgICAgICAg
ICAgIFRUeXBlKEVidEZsb2F0LCByZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID8gRWJw
SGlnaCA6IEVicE1lZGl1bSwgRXZxRnJhZ0RlcHRoLCAxKSkpOworICAgICAgICAgICAgICAgIHN5
bWJvbFRhYmxlLnJlbGF0ZVRvRXh0ZW5zaW9uKCJnbF9GcmFnRGVwdGhFWFQiLCAiR0xfRVhUX2Zy
YWdfZGVwdGgiKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiY3NzX01p
eENvbG9yIiksICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2
cUdsb2JhbCwgICAgICA0KSkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcg
VFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJjc3NfQ29sb3JNYXRyaXgiKSwgICAgICAgICAgICAg
ICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxR2xvYmFsLCAgICAgIDQsIHRydWUpKSk7
CkBAIC02NTYsNCArMjkwLDYgQEAgdm9pZCBJbml0RXh0ZW5zaW9uQmVoYXZpb3IoY29uc3QgU2hC
dWlsdAogICAgICAgICBleHRCZWhhdmlvclsiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIl0gPSBF
QmhVbmRlZmluZWQ7CiAgICAgaWYgKHJlc291cmNlcy5FWFRfZHJhd19idWZmZXJzKQogICAgICAg
ICBleHRCZWhhdmlvclsiR0xfRVhUX2RyYXdfYnVmZmVycyJdID0gRUJoVW5kZWZpbmVkOworICAg
IGlmIChyZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGgpCisgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9F
WFRfZnJhZ19kZXB0aCJdID0gRUJoVW5kZWZpbmVkOwogfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHAJKHJldmlz
aW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRl
cm1lZGlhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHly
aWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xMzEsNyArMTMxLDcgQEAgY29uc3QgY2hhciog
Z2V0T3BlcmF0b3JTdHJpbmcoVE9wZXJhdG9yCiAvLwogLy8gUmV0dXJucyB0aGUgYWRkZWQgbm9k
ZS4KIC8vCi1USW50ZXJtU3ltYm9sKiBUSW50ZXJtZWRpYXRlOjphZGRTeW1ib2woaW50IGlkLCBj
b25zdCBUU3RyaW5nJiBuYW1lLCBjb25zdCBUVHlwZSYgdHlwZSwgVFNvdXJjZUxvYyBsaW5lKQor
VEludGVybVN5bWJvbCogVEludGVybWVkaWF0ZTo6YWRkU3ltYm9sKGludCBpZCwgY29uc3QgVFN0
cmluZyYgbmFtZSwgY29uc3QgVFR5cGUmIHR5cGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7
CiAgICAgVEludGVybVN5bWJvbCogbm9kZSA9IG5ldyBUSW50ZXJtU3ltYm9sKGlkLCBuYW1lLCB0
eXBlKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFRJbnRl
cm1TeW1ib2wqIFRJbnRlcm1lZGlhdGU6OmFkZFN5bWJvbCgKIC8vCiAvLyBSZXR1cm5zIHRoZSBh
ZGRlZCBub2RlLgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQmluYXJ5TWF0
aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwg
VFNvdXJjZUxvYyBsaW5lLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQorVEludGVybVR5cGVk
KiBUSW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVk
KiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3lt
Ym9sVGFibGUmIHN5bWJvbFRhYmxlKQogewogICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2Fz
ZSBFT3BFcXVhbDoKQEAgLTIwMCw4ICsyMDAsNiBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlh
dGU6OmFkZEJpbmFyeU1hCiAgICAgLy8gb25lIGFuZCBwcm9tb3RlIGl0IHRvIHRoZSByaWdodCB0
eXBlLgogICAgIC8vCiAgICAgVEludGVybUJpbmFyeSogbm9kZSA9IG5ldyBUSW50ZXJtQmluYXJ5
KG9wKTsKLSAgICBpZiAobGluZSA9PSAwKQotICAgICAgICBsaW5lID0gcmlnaHQtPmdldExpbmUo
KTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAgbm9kZS0+c2V0TGVmdChsZWZ0KTsK
QEAgLTIzMCwxNSArMjI4LDEzIEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQmlu
YXJ5TWEKIC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8KLVRJbnRlcm1UeXBlZCog
VEludGVybWVkaWF0ZTo6YWRkQXNzaWduKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0
LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRJ
bnRlcm1lZGlhdGU6OmFkZEFzc2lnbihUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwg
VEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICAvLwog
ICAgIC8vIExpa2UgYWRkaW5nIGJpbmFyeSBtYXRoLCBleGNlcHQgdGhlIGNvbnZlcnNpb24gY2Fu
IG9ubHkgZ28KICAgICAvLyBmcm9tIHJpZ2h0IHRvIGxlZnQuCiAgICAgLy8KICAgICBUSW50ZXJt
QmluYXJ5KiBub2RlID0gbmV3IFRJbnRlcm1CaW5hcnkob3ApOwotICAgIGlmIChsaW5lID09IDAp
Ci0gICAgICAgIGxpbmUgPSBsZWZ0LT5nZXRMaW5lKCk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5l
KTsKIAogICAgIFRJbnRlcm1UeXBlZCogY2hpbGQgPSBhZGRDb252ZXJzaW9uKG9wLCBsZWZ0LT5n
ZXRUeXBlKCksIHJpZ2h0KTsKQEAgLTI2MCwxMSArMjU2LDkgQEAgVEludGVybVR5cGVkKiBUSW50
ZXJtZWRpYXRlOjphZGRBc3NpZ24oVAogLy8gUmV0dXJucyB0aGUgYWRkZWQgbm9kZS4KIC8vIFRo
ZSBjYWxsZXIgc2hvdWxkIHNldCB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuZWQgbm9kZS4KIC8vCi1U
SW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KFRPcGVyYXRvciBvcCwgVEludGVy
bVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBUU291cmNlTG9jIGxpbmUpCitUSW50
ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KFRPcGVyYXRvciBvcCwgVEludGVybVR5
cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQog
ewogICAgIFRJbnRlcm1CaW5hcnkqIG5vZGUgPSBuZXcgVEludGVybUJpbmFyeShvcCk7Ci0gICAg
aWYgKGxpbmUgPT0gMCkKLSAgICAgICAgbGluZSA9IGluZGV4LT5nZXRMaW5lKCk7CiAgICAgbm9k
ZS0+c2V0TGluZShsaW5lKTsKICAgICBub2RlLT5zZXRMZWZ0KGJhc2UpOwogICAgIG5vZGUtPnNl
dFJpZ2h0KGluZGV4KTsKQEAgLTI3OSwxMyArMjczLDEzIEBAIFRJbnRlcm1UeXBlZCogVEludGVy
bWVkaWF0ZTo6YWRkSW5kZXgoVE8KIC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8K
LVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwg
VEludGVybU5vZGUqIGNoaWxkTm9kZSwgVFNvdXJjZUxvYyBsaW5lLCBUU3ltYm9sVGFibGUmIHN5
bWJvbFRhYmxlKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdGgoVE9w
ZXJhdG9yIG9wLCBUSW50ZXJtTm9kZSogY2hpbGROb2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQogewogICAgIFRJbnRlcm1VbmFyeSogbm9kZTsK
ICAgICBUSW50ZXJtVHlwZWQqIGNoaWxkID0gY2hpbGROb2RlLT5nZXRBc1R5cGVkKCk7CiAKICAg
ICBpZiAoY2hpbGQgPT0gMCkgewotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsICJCYWQgdHlwZSBpbiBBZGRVbmFyeU1hdGgiLCBsaW5lKTsKKyAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBsaW5lLCAiQmFk
IHR5cGUgaW4gQWRkVW5hcnlNYXRoIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAt
MzQ4LDggKzM0Miw2IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkVW5hcnlNYXQK
ICAgICAvLyBNYWtlIGEgbmV3IG5vZGUgZm9yIHRoZSBvcGVyYXRvci4KICAgICAvLwogICAgIG5v
ZGUgPSBuZXcgVEludGVybVVuYXJ5KG9wKTsKLSAgICBpZiAobGluZSA9PSAwKQotICAgICAgICBs
aW5lID0gY2hpbGQtPmdldExpbmUoKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwogICAgIG5v
ZGUtPnNldE9wZXJhbmQoY2hpbGQpOwogCkBAIC0zNzYsNyArMzY4LDcgQEAgVEludGVybVR5cGVk
KiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdAogLy8gUmV0dXJucyBhbiBhZ2dyZWdhdGUgbm9k
ZSwgd2hpY2ggY291bGQgYmUgdGhlIG9uZSBwYXNzZWQgaW4gaWYKIC8vIGl0IHdhcyBhbHJlYWR5
IGFuIGFnZ3JlZ2F0ZSBidXQgbm8gb3BlcmF0b3Igd2FzIHNldC4KIC8vCi1USW50ZXJtQWdncmVn
YXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSogbm9k
ZSwgVE9wZXJhdG9yIG9wLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtQWdncmVnYXRlKiBUSW50
ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSogbm9kZSwgVE9wZXJh
dG9yIG9wLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRlcm1BZ2dyZWdhdGUq
IGFnZ05vZGU7CiAKQEAgLTM5MSw4ICszODMsNiBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJt
ZWRpYXRlOjpzZXRBZ2dyCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgYWdnTm9kZSA9IG5l
dyBUSW50ZXJtQWdncmVnYXRlKCk7CiAgICAgICAgICAgICBhZ2dOb2RlLT5nZXRTZXF1ZW5jZSgp
LnB1c2hfYmFjayhub2RlKTsKLSAgICAgICAgICAgIGlmIChsaW5lID09IDApCi0gICAgICAgICAg
ICAgICAgbGluZSA9IG5vZGUtPmdldExpbmUoKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAg
ICAgICBhZ2dOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoKTsKQEAgLTQwMSw4ICszOTEsNyBA
QCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyCiAgICAgLy8gU2V0IHRo
ZSBvcGVyYXRvci4KICAgICAvLwogICAgIGFnZ05vZGUtPnNldE9wKG9wKTsKLSAgICBpZiAobGlu
ZSAhPSAwKQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOworICAgIGFnZ05vZGUtPnNl
dExpbmUobGluZSk7CiAKICAgICByZXR1cm4gYWdnTm9kZTsKIH0KQEAgLTQ5MSw3ICs0ODAsNyBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNpCiAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0SW50OiAgIG5ld09wID0gRU9wQ29udkludFRvRmxvYXQ7ICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOiAgbmV3T3AgPSBFT3BDb252Qm9vbFRv
RmxvYXQ7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAi
QmFkIHByb21vdGlvbiBub2RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+
Z2V0TGluZSgpLCAiQmFkIHByb21vdGlvbiBub2RlIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC01MDAsNyArNDg5LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb252ZXJz
aQogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDogICBuZXdPcCA9IEVPcENvbnZJbnRU
b0Jvb2w7ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6IG5ld09w
ID0gRU9wQ29udkZsb2F0VG9Cb29sOyBicmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gbm9kZSIsIG5vZGUtPmdldExpbmUoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJhZCBwcm9tb3Rpb24gbm9kZSIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtNTA5LDEyICs0OTgsMTIgQEAgVEludGVybVR5cGVkKiBUSW50ZXJt
ZWRpYXRlOjphZGRDb252ZXJzaQogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6ICAg
bmV3T3AgPSBFT3BDb252Qm9vbFRvSW50OyAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgRWJ0RmxvYXQ6ICBuZXdPcCA9IEVPcENvbnZGbG9hdFRvSW50OyBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gbm9kZSIsIG5v
ZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJhZCBwcm9tb3Rp
b24gbm9kZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3Is
ICJCYWQgcHJvbW90aW9uIHR5cGUiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGlu
ZSgpLCAiQmFkIHByb21vdGlvbiB0eXBlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgIH0KIApAQCAtNTM0LDcgKzUyMyw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0
ZTo6YWRkQ29udmVyc2kKIC8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBhZ2dyZWdhdGUsIHVubGVz
cyAwIHdhcyBwYXNzZWQgaW4gZm9yCiAvLyBib3RoIGV4aXN0aW5nIG5vZGVzLgogLy8KLVRJbnRl
cm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2dyZWdhdGUoVEludGVybU5vZGUqIGxl
ZnQsIFRJbnRlcm1Ob2RlKiByaWdodCwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybUFnZ3JlZ2F0
ZSogVEludGVybWVkaWF0ZTo6Z3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVmdCwgVEludGVy
bU5vZGUqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGlmIChsZWZ0ID09
IDAgJiYgcmlnaHQgPT0gMCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01NTEsOCArNTQwLDcgQEAg
VEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jvd0FnZwogICAgIGlmIChyaWdodCkK
ICAgICAgICAgYWdnTm9kZS0+Z2V0U2VxdWVuY2UoKS5wdXNoX2JhY2socmlnaHQpOwogCi0gICAg
aWYgKGxpbmUgIT0gMCkKLSAgICAgICAgYWdnTm9kZS0+c2V0TGluZShsaW5lKTsKKyAgICBhZ2dO
b2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAgcmV0dXJuIGFnZ05vZGU7CiB9CkBAIC01NjIsMTgg
KzU1MCwxNCBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpncm93QWdnCiAvLwog
Ly8gUmV0dXJucyBhbiBhZ2dyZWdhdGUsIHVubGVzcyAwIHdhcyBwYXNzZWQgaW4gZm9yIHRoZSBl
eGlzdGluZyBub2RlLgogLy8KLVRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Om1ha2VB
Z2dyZWdhdGUoVEludGVybU5vZGUqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1BZ2dy
ZWdhdGUqIFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUqIG5vZGUsIGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgaWYgKG5vZGUgPT0gMCkKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICBUSW50ZXJtQWdncmVnYXRlKiBhZ2dOb2RlID0gbmV3IFRJbnRlcm1BZ2dy
ZWdhdGU7CiAgICAgYWdnTm9kZS0+Z2V0U2VxdWVuY2UoKS5wdXNoX2JhY2sobm9kZSk7Ci0KLSAg
ICBpZiAobGluZSAhPSAwKQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOwotICAgIGVs
c2UKLSAgICAgICAgYWdnTm9kZS0+c2V0TGluZShub2RlLT5nZXRMaW5lKCkpOworICAgIGFnZ05v
ZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1cm4gYWdnTm9kZTsKIH0KQEAgLTU4NSw3ICs1
NjksNyBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjptYWtlQWdnCiAvLwogLy8g
UmV0dXJucyB0aGUgc2VsZWN0aW9uIG5vZGUgY3JlYXRlZC4KIC8vCi1USW50ZXJtTm9kZSogVElu
dGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQ
YWlyIG5vZGVQYWlyLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtTm9kZSogVEludGVybWVkaWF0
ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQYWlyIG5vZGVQ
YWlyLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIC8vCiAgICAgLy8gRm9yIGNvbXBp
bGUgdGltZSBjb25zdGFudCBzZWxlY3Rpb25zLCBwcnVuZSB0aGUgY29kZSBhbmQKQEAgLTU5Myw3
ICs1NzcsNyBAQCBUSW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uCiAgICAg
Ly8KIAogICAgIGlmIChjb25kLT5nZXRBc1R5cGVkKCkgJiYgY29uZC0+Z2V0QXNUeXBlZCgpLT5n
ZXRBc0NvbnN0YW50VW5pb24oKSkgewotICAgICAgICBpZiAoY29uZC0+Z2V0QXNUeXBlZCgpLT5n
ZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0QkNvbnN0KCkg
PT0gdHJ1ZSkKKyAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRCQ29u
c3QoMCkgPT0gdHJ1ZSkKICAgICAgICAgICAgIHJldHVybiBub2RlUGFpci5ub2RlMSA/IHNldEFn
Z3JlZ2F0ZU9wZXJhdG9yKG5vZGVQYWlyLm5vZGUxLCBFT3BTZXF1ZW5jZSwgbm9kZVBhaXIubm9k
ZTEtPmdldExpbmUoKSkgOiBOVUxMOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4g
bm9kZVBhaXIubm9kZTIgPyBzZXRBZ2dyZWdhdGVPcGVyYXRvcihub2RlUGFpci5ub2RlMiwgRU9w
U2VxdWVuY2UsIG5vZGVQYWlyLm5vZGUyLT5nZXRMaW5lKCkpIDogTlVMTDsKQEAgLTYwNiw3ICs1
OTAsNyBAQCBUSW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uCiB9CiAKIAot
VEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb21tYShUSW50ZXJtVHlwZWQqIGxlZnQs
IFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVElu
dGVybWVkaWF0ZTo6YWRkQ29tbWEoVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJp
Z2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGlmIChsZWZ0LT5nZXRUeXBlKCku
Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYgcmlnaHQtPmdldFR5cGUoKS5nZXRRdWFsaWZp
ZXIoKSA9PSBFdnFDb25zdCkgewogICAgICAgICByZXR1cm4gcmlnaHQ7CkBAIC02MjYsNyArNjEw
LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb21tYShUSQogLy8KIC8vIFJl
dHVybnMgdGhlIHNlbGVjdGlvbiBub2RlIGNyZWF0ZWQsIG9yIDAgaWYgb25lIGNvdWxkIG5vdCBi
ZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvbihUSW50ZXJt
VHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZhbHNl
QmxvY2ssIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRk
U2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiB0cnVlQmxvY2ssIFRJ
bnRlcm1UeXBlZCogZmFsc2VCbG9jaywgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICAv
LwogICAgIC8vIEdldCBjb21wYXRpYmxlIHR5cGVzLgpAQCAtNjQ3LDcgKzYzMSw3IEBAIFRJbnRl
cm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW8KICAgICAvLwogCiAgICAgaWYgKGNv
bmQtPmdldEFzQ29uc3RhbnRVbmlvbigpICYmIHRydWVCbG9jay0+Z2V0QXNDb25zdGFudFVuaW9u
KCkgJiYgZmFsc2VCbG9jay0+Z2V0QXNDb25zdGFudFVuaW9uKCkpIHsKLSAgICAgICAgaWYgKGNv
bmQtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRCQ29u
c3QoKSkKKyAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRCQ29uc3Qo
MCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZUJsb2NrOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2VCbG9jazsKQEAgLTY2OSw3ICs2NTMsNyBAQCBUSW50ZXJtVHlwZWQq
IFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvCiAvLyBSZXR1cm5zIHRoZSBjb25zdGFudCB1bmlv
biBub2RlIGNyZWF0ZWQuCiAvLwogCi1USW50ZXJtQ29uc3RhbnRVbmlvbiogVEludGVybWVkaWF0
ZTo6YWRkQ29uc3RhbnRVbmlvbihDb25zdGFudFVuaW9uKiB1bmlvbkFycmF5UG9pbnRlciwgY29u
c3QgVFR5cGUmIHQsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1Db25zdGFudFVuaW9uKiBUSW50
ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXlQb2lu
dGVyLCBjb25zdCBUVHlwZSYgdCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50
ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSA9IG5ldyBUSW50ZXJtQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5UG9pbnRlciwgdCk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKQEAgLTY3Nyw3ICs2NjEs
NyBAQCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogVEludGVybWVkaWF0ZTo6YWRkCiAgICAgcmV0dXJu
IG5vZGU7CiB9CiAKLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU3dpenpsZShUVmVj
dG9yRmllbGRzJiBmaWVsZHMsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVEludGVy
bWVkaWF0ZTo6YWRkU3dpenpsZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUpCiB7CiAKICAgICBUSW50ZXJtQWdncmVnYXRlKiBub2RlID0gbmV3IFRJbnRlcm1B
Z2dyZWdhdGUoRU9wU2VxdWVuY2UpOwpAQCAtNzAwLDcgKzY4NCw3IEBAIFRJbnRlcm1UeXBlZCog
VEludGVybWVkaWF0ZTo6YWRkU3dpenpsZSgKIC8vCiAvLyBDcmVhdGUgbG9vcCBub2Rlcy4KIC8v
Ci1USW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkTG9vcChUTG9vcFR5cGUgdHlwZSwgVElu
dGVybU5vZGUqIGluaXQsIFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiBleHByLCBU
SW50ZXJtTm9kZSogYm9keSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybU5vZGUqIFRJbnRlcm1l
ZGlhdGU6OmFkZExvb3AoVExvb3BUeXBlIHR5cGUsIFRJbnRlcm1Ob2RlKiBpbml0LCBUSW50ZXJt
VHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogZXhwciwgVEludGVybU5vZGUqIGJvZHksIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybU5vZGUqIG5vZGUgPSBuZXcgVEludGVy
bUxvb3AodHlwZSwgaW5pdCwgY29uZCwgZXhwciwgYm9keSk7CiAgICAgbm9kZS0+c2V0TGluZShs
aW5lKTsKQEAgLTcxMSwxMiArNjk1LDEyIEBAIFRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjph
ZGRMb29wKFRMb28KIC8vCiAvLyBBZGQgYnJhbmNoZXMuCiAvLwotVEludGVybUJyYW5jaCogVElu
dGVybWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVyYXRvciBicmFuY2hPcCwgVFNvdXJjZUxvYyBsaW5l
KQorVEludGVybUJyYW5jaCogVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVyYXRvciBicmFu
Y2hPcCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICByZXR1cm4gYWRkQnJhbmNoKGJy
YW5jaE9wLCAwLCBsaW5lKTsKIH0KIAotVEludGVybUJyYW5jaCogVEludGVybWVkaWF0ZTo6YWRk
QnJhbmNoKFRPcGVyYXRvciBicmFuY2hPcCwgVEludGVybVR5cGVkKiBleHByZXNzaW9uLCBUU291
cmNlTG9jIGxpbmUpCitUSW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9w
ZXJhdG9yIGJyYW5jaE9wLCBUSW50ZXJtVHlwZWQqIGV4cHJlc3Npb24sIGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUpCiB7CiAgICAgVEludGVybUJyYW5jaCogbm9kZSA9IG5ldyBUSW50ZXJtQnJhbmNo
KGJyYW5jaE9wLCBleHByZXNzaW9uKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtODQ2
LDYgKzgzMCw3IEBAIGJvb2wgVEludGVybVVuYXJ5Ojpwcm9tb3RlKFRJbmZvU2luayYpCiAgICAg
fQogCiAgICAgc2V0VHlwZShvcGVyYW5kLT5nZXRUeXBlKCkpOworICAgIHR5cGUuc2V0UXVhbGlm
aWVyKEV2cVRlbXBvcmFyeSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTg2MCw3ICs4NDUs
NyBAQCBib29sIFRJbnRlcm1CaW5hcnk6OnByb21vdGUoVEluZm9TaW5rJiBpCiB7CiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBvbmx5IGhhbmRsZXMgc2NhbGFycywgdmVjdG9ycywgYW5kIG1hdHJpY2Vz
LgogICAgIGlmIChsZWZ0LT5pc0FycmF5KCkgfHwgcmlnaHQtPmlzQXJyYXkoKSkgewotICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJJbnZhbGlkIG9w
ZXJhdGlvbiBmb3IgYXJyYXlzIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5t
ZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJJbnZhbGlkIG9wZXJhdGlv
biBmb3IgYXJyYXlzIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTk2NSw3
ICs5NTAsNyBAQCBib29sIFRJbnRlcm1CaW5hcnk6OnByb21vdGUoVEluZm9TaW5rJiBpCiAgICAg
ICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24s
IEV2cVRlbXBvcmFyeSwgc2l6ZSwgZmFsc2UpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4SW50ZXJuYWxFcnJvciwgIk1pc3NpbmcgZWxzZXMiLCBnZXRMaW5lKCkpOworICAgICAgICAg
ICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGlu
ZSgpLCAiTWlzc2luZyBlbHNlcyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTk0LDcgKzk3OSw3IEBAIGJvb2wg
VEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKICAgICAgICAgICAgICAgICAgICAg
c2V0VHlwZShUVHlwZShiYXNpY1R5cGUsIGhpZ2hlclByZWNpc2lvbiwgRXZxVGVtcG9yYXJ5LCBz
aXplLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCAiTWlzc2luZyBlbHNlcyIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJNaXNzaW5nIGVs
c2VzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xMDM0LDIzICsxMDE5LDIyIEBAIGJvb2wgVEludGVybUJpbmFy
eTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKIAogYm9vbCBDb21wYXJlU3RydWN0KGNvbnN0IFRUeXBl
JiBsZWZ0Tm9kZVR5cGUsIENvbnN0YW50VW5pb24qIHJpZ2h0VW5pb25BcnJheSwgQ29uc3RhbnRV
bmlvbiogbGVmdFVuaW9uQXJyYXkpCiB7Ci0gICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSBs
ZWZ0Tm9kZVR5cGUuZ2V0U3RydWN0KCk7CisgICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0g
bGVmdE5vZGVUeXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKIAotICAgIHNpemVfdCBzdHJ1Y3RT
aXplID0gZmllbGRzLT5zaXplKCk7Ci0gICAgaW50IGluZGV4ID0gMDsKKyAgICBzaXplX3Qgc3Ry
dWN0U2l6ZSA9IGZpZWxkcy5zaXplKCk7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKIAogICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBqIDwgc3RydWN0U2l6ZTsgaisrKSB7Ci0gICAgICAgIGludCBzaXpl
ID0gKCpmaWVsZHMpW2pdLnR5cGUtPmdldE9iamVjdFNpemUoKTsKLSAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIGlmICgoKmZpZWxkcylbal0udHlw
ZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFD
b21wYXJlU3RydWN0dXJlKCooKmZpZWxkcylbal0udHlwZSwgJnJpZ2h0VW5pb25BcnJheVtpbmRl
eF0sICZsZWZ0VW5pb25BcnJheVtpbmRleF0pKQorICAgICAgICBzaXplX3Qgc2l6ZSA9IGZpZWxk
c1tqXS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZmllbGRzW2pdLT50eXBlKCktPmdl
dEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgeworICAgICAgICAgICAgICAgIGlmICghQ29tcGFy
ZVN0cnVjdHVyZSgqKGZpZWxkc1tqXS0+dHlwZSgpKSwgJnJpZ2h0VW5pb25BcnJheVtpbmRleF0s
ICZsZWZ0VW5pb25BcnJheVtpbmRleF0pKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChsZWZ0VW5pb25B
cnJheVtpbmRleF0gIT0gcmlnaHRVbmlvbkFycmF5W2luZGV4XSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGluZGV4Kys7CiAgICAgICAgICAgICB9
Ci0KICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNjIsMTAgKzEwNDYs
MTAgQEAgYm9vbCBDb21wYXJlU3RydWN0dXJlKGNvbnN0IFRUeXBlJiBsZWZ0TgogICAgICAgICBU
VHlwZSB0eXBlV2l0aG91dEFycmF5bmVzcyA9IGxlZnROb2RlVHlwZTsKICAgICAgICAgdHlwZVdp
dGhvdXRBcnJheW5lc3MuY2xlYXJBcnJheW5lc3MoKTsKIAotICAgICAgICBpbnQgYXJyYXlTaXpl
ID0gbGVmdE5vZGVUeXBlLmdldEFycmF5U2l6ZSgpOworICAgICAgICBzaXplX3QgYXJyYXlTaXpl
ID0gbGVmdE5vZGVUeXBlLmdldEFycmF5U2l6ZSgpOwogCi0gICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgYXJyYXlTaXplOyArK2kpIHsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSB0eXBlV2l0
aG91dEFycmF5bmVzcy5nZXRPYmplY3RTaXplKCkgKiBpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKSB7CisgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
dHlwZVdpdGhvdXRBcnJheW5lc3MuZ2V0T2JqZWN0U2l6ZSgpICogaTsKICAgICAgICAgICAgIGlm
ICghQ29tcGFyZVN0cnVjdCh0eXBlV2l0aG91dEFycmF5bmVzcywgJnJpZ2h0VW5pb25BcnJheVtv
ZmZzZXRdLCAmbGVmdFVuaW9uQXJyYXlbb2Zmc2V0XSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CkBAIC0xMDg1LDcgKzEwNjksNyBAQCBib29sIENvbXBhcmVTdHJ1
Y3R1cmUoY29uc3QgVFR5cGUmIGxlZnROCiBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVu
aW9uOjpmb2xkKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBjb25zdGFudE5vZGUsIFRJbmZv
U2luayYgaW5mb1NpbmspCiB7CiAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IGdldFVu
aW9uQXJyYXlQb2ludGVyKCk7Ci0gICAgaW50IG9iamVjdFNpemUgPSBnZXRUeXBlKCkuZ2V0T2Jq
ZWN0U2l6ZSgpOworICAgIHNpemVfdCBvYmplY3RTaXplID0gZ2V0VHlwZSgpLmdldE9iamVjdFNp
emUoKTsKIAogICAgIGlmIChjb25zdGFudE5vZGUpIHsgIC8vIGJpbmFyeSBvcGVyYXRpb25zCiAg
ICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2RlID0gY29uc3RhbnROb2RlLT5nZXRBc0Nv
bnN0YW50VW5pb24oKTsKQEAgLTEwOTUsMTMgKzEwNzksMTMgQEAgVEludGVybVR5cGVkKiBUSW50
ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAvLyBmb3IgYSBjYXNlIGxpa2UgZmxvYXQg
ZiA9IDEuMiArIHZlYzQoMiwzLDQsNSk7CiAgICAgICAgIGlmIChjb25zdGFudE5vZGUtPmdldFR5
cGUoKS5nZXRPYmplY3RTaXplKCkgPT0gMSAmJiBvYmplY3RTaXplID4gMSkgewogICAgICAgICAg
ICAgcmlnaHRVbmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7ICsraSkKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgKytpKQogICAgICAgICAgICAgICAg
IHJpZ2h0VW5pb25BcnJheVtpXSA9ICpub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwogICAg
ICAgICAgICAgcmV0dXJuVHlwZSA9IGdldFR5cGUoKTsKICAgICAgICAgfSBlbHNlIGlmIChjb25z
dGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkgPiAxICYmIG9iamVjdFNpemUgPT0g
MSkgewogICAgICAgICAgICAgLy8gZm9yIGEgY2FzZSBsaWtlIGZsb2F0IGYgPSB2ZWM0KDIsMyw0
LDUpICsgMS4yOwogICAgICAgICAgICAgdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW2Nv
bnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKV07Ci0gICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsg
KytpKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb25zdGFudE5vZGUtPmdl
dFR5cGUoKS5nZXRPYmplY3RTaXplKCk7ICsraSkKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5
W2ldID0gKmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAgICAgICAgICAgICByZXR1cm5UeXBlID0g
bm9kZS0+Z2V0VHlwZSgpOwogICAgICAgICAgICAgb2JqZWN0U2l6ZSA9IGNvbnN0YW50Tm9kZS0+
Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKQEAgLTExMTUsMTQgKzEwOTksMTQgQEAgVEludGVy
bVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BB
ZGQ6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltv
YmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAg
ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAg
ICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQog
ICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ld
ICsgcmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRU9wU3ViOgogICAgICAgICAgICAgICAgIHRlbXBD
b25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAg
ICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgIHRl
bXBDb25zdEFycmF5W2ldID0gdW5pb25BcnJheVtpXSAtIHJpZ2h0VW5pb25BcnJheVtpXTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTMyLDEzICsxMTE2
LDEzIEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAg
ICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7
Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENv
bnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldICogcmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRU9w
TWF0cml4VGltZXNNYXRyaXg6CiAgICAgICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNp
Y1R5cGUoKSAhPSBFYnRGbG9hdCB8fCBub2RlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCkg
ewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciBtYXRyaXggbXVs
dGlwbHkiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50IEZvbGRpbmcg
Y2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCBtdWx0aXBseSIpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgey8vIHN1cHBv
cnQgTVNWQysrNi4wCkBAIC0xMTU3LDExICsxMTQxLDExIEBAIFRJbnRlcm1UeXBlZCogVEludGVy
bUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgIGNhc2UgRU9wRGl2OgogICAgICAgICAg
ICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAg
ICAgICAgICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAg
ICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICBpZiAocmlnaHRVbmlvbkFycmF5
W2ldID09IDAuMGYpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhXYXJuaW5nLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZv
bGRpbmciLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeFdhcm5pbmcsIGdldExpbmUoKSwgIkRpdmlkZSBieSB6ZXJvIGVycm9yIGR1
cmluZyBjb25zdGFudCBmb2xkaW5nIik7CiAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFy
cmF5W2ldLnNldEZDb25zdCh1bmlvbkFycmF5W2ldLmdldEZDb25zdCgpIDwgMCA/IC1GTFRfTUFY
IDogRkxUX01BWCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCh1bmlvbkFycmF5W2ldLmdldEZDb25zdCgpIC8g
cmlnaHRVbmlvbkFycmF5W2ldLmdldEZDb25zdCgpKTsKQEAgLTExNjksMTMgKzExNTMsMTMgQEAg
VEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogCiAgICAgICAgICAgICBj
YXNlIEVidEludDoKICAgICAgICAgICAgICAgICBpZiAocmlnaHRVbmlvbkFycmF5W2ldID09IDAp
IHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhXYXJu
aW5nLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciLCBnZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eFdhcm5pbmcsIGdldExpbmUoKSwgIkRpdmlkZSBieSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFu
dCBmb2xkaW5nIik7CiAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldElD
b25zdChJTlRfTUFYKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0KHVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkg
LyByaWdodFVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDb25zdGFudCBmb2xkaW5nIGNhbm5vdCBiZSBk
b25lIGZvciBcIi9cIiIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJDb25zdGFudCBmb2xk
aW5nIGNhbm5vdCBiZSBkb25lIGZvciBcIi9cIiIpOwogICAgICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CkBAIC0x
MTg0LDcgKzExNjgsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xk
CiAKICAgICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNWZWN0b3I6CiAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNvbnN0
YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCB0aW1lcyB2ZWN0b3IiLCBnZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRv
bmUgZm9yIG1hdHJpeCB0aW1lcyB2ZWN0b3IiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0g
bmV3IENvbnN0YW50VW5pb25bZ2V0Tm9taW5hbFNpemUoKV07CkBAIC0xMjA1LDcgKzExODksNyBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAKICAgICAgICAgICAg
IGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6CiAgICAgICAgICAgICAgICAgaWYgKGdldFR5cGUo
KS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCkgewotICAgICAgICAgICAgICAgICAgICBpbmZv
U2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDb25zdGFudCBGb2xkaW5n
IGNhbm5vdCBiZSBkb25lIGZvciB2ZWN0b3IgdGltZXMgbWF0cml4IiwgZ2V0TGluZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVy
cm9yLCBnZXRMaW5lKCksICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciB2ZWN0
b3IgdGltZXMgbWF0cml4Iik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgICAgIH0KIApAQCAtMTIyMyw3ICsxMjA3LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJt
Q29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsQW5kOiAvLyB0
aGlzIGNvZGUgaXMgd3JpdHRlbiBmb3IgcG9zc2libGUgZnV0dXJlIHVzZSwgd2lsbCBub3QgZ2V0
IGV4ZWN1dGVkIGN1cnJlbnRseQogICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgey8vIHN1cHBvcnQg
TVNWQysrNi4wCi0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0
U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9i
amVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ld
ID0gdW5pb25BcnJheVtpXSAmJiByaWdodFVuaW9uQXJyYXlbaV07CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTIzMSw3ICsxMjE1LDcgQEAgVEludGVybVR5
cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BMb2dp
Y2FsT3I6IC8vIHRoaXMgY29kZSBpcyB3cml0dGVuIGZvciBwb3NzaWJsZSBmdXR1cmUgdXNlLCB3
aWxsIG5vdCBnZXQgZXhlY3V0ZWQgY3VycmVudGx5CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7
Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENv
bnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldIHx8IHJpZ2h0VW5pb25BcnJheVtpXTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjM5LDcgKzEyMjMsNyBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBj
YXNlIEVPcExvZ2ljYWxYb3I6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBN
U1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RT
aXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Jq
ZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnZXRUeXBlKCku
Z2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDogdGVtcENvbnN0QXJy
YXlbaV0uc2V0QkNvbnN0KCh1bmlvbkFycmF5W2ldID09IHJpZ2h0VW5pb25BcnJheVtpXSkgPyBm
YWxzZSA6IHRydWUpOyBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSAm
JiAiRGVmYXVsdCBtaXNzaW5nIik7CkBAIC0xMjg1LDcgKzEyNjksNyBAQCBUSW50ZXJtVHlwZWQq
IFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICAgICAgICAgIGlmICghQ29t
cGFyZVN0cnVjdHVyZShub2RlLT5nZXRUeXBlKCksIG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVy
KCksIHVuaW9uQXJyYXkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHVuaW9uQXJyYXlbaV0gIT0gcmlnaHRVbmlvbkFycmF5W2ldKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsgIC8vIGJyZWFrIG91dCBvZiBmb3IgbG9vcApAQCAtMTMx
MSw3ICsxMjk1LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAog
ICAgICAgICAgICAgICAgICAgICBpZiAoQ29tcGFyZVN0cnVjdHVyZShub2RlLT5nZXRUeXBlKCks
IG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCksIHVuaW9uQXJyYXkpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkr
KykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNp
emU7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaW9uQXJyYXlbaV0gPT0g
cmlnaHRVbmlvbkFycmF5W2ldKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5v
ZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgIC8vIGJy
ZWFrIG91dCBvZiBmb3IgbG9vcApAQCAtMTMzMyw3ICsxMzE3LDcgQEAgVEludGVybVR5cGVkKiBU
SW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wTm9k
ZTsKIAogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJJbnZhbGlkIG9wZXJhdG9yIGZvciBjb25z
dGFudCBmb2xkaW5nIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkludmFsaWQgb3BlcmF0
b3IgZm9yIGNvbnN0YW50IGZvbGRpbmciKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgfQogICAgICAgICB0ZW1wTm9kZSA9IG5ldyBUSW50ZXJtQ29uc3RhbnRVbmlvbih0ZW1w
Q29uc3RBcnJheSwgcmV0dXJuVHlwZSk7CkBAIC0xMzQ2LDE0ICsxMzMwLDE0IEBAIFRJbnRlcm1U
eXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgLy8KICAgICAgICAgVElu
dGVybUNvbnN0YW50VW5pb24gKm5ld05vZGUgPSAwOwogICAgICAgICBDb25zdGFudFVuaW9uKiB0
ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwotICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgeworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewogICAgICAgICAgICAgc3dpdGNoKG9wKSB7
CiAgICAgICAgICAgICAgICAgY2FzZSBFT3BOZWdhdGl2ZToKICAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgRWJ0RmxvYXQ6IHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCgtdW5pb25BcnJh
eVtpXS5nZXRGQ29uc3QoKSk7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRJbnQ6ICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0KC11bmlvbkFycmF5W2ldLmdldElD
b25zdCgpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiLCBnZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBm
b2xkZWQgaW50byBjb25zdGFudCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTM2MSw3ICsxMzQ1LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6
Zm9sZAogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUo
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOiAgdGVtcENvbnN0QXJy
YXlbaV0uc2V0QkNvbnN0KCF1bmlvbkFycmF5W2ldLmdldEJDb25zdCgpKTsgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVuYXJ5IG9wZXJh
dGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM3Nyw2NSArMTM2MSw2NCBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAKIFRJbnRlcm1UeXBl
ZCogVEludGVybWVkaWF0ZTo6cHJvbW90ZUNvbnN0YW50VW5pb24oVEJhc2ljVHlwZSBwcm9tb3Rl
VG8sIFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2RlKQogewotICAgIENvbnN0YW50VW5pb24gKnJp
Z2h0VW5pb25BcnJheSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0gICAgaW50IHNp
emUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgIHNpemVfdCBzaXplID0g
bm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKIAogICAgIENvbnN0YW50VW5pb24gKmxl
ZnRVbmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bc2l6ZV07CiAKLSAgICBmb3IgKGludCBp
PTA7IGkgPCBzaXplOyBpKyspIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkr
KykgewogCiAgICAgICAgIHN3aXRjaCAocHJvbW90ZVRvKSB7CiAgICAgICAgICAgICBjYXNlIEVi
dEZsb2F0OgogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VHlwZSgpLmdldEJhc2lj
VHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0
PihyaWdodFVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4obm9kZS0+
Z2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0
PihyaWdodFVuaW9uQXJyYXlbaV0uZ2V0QkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4obm9kZS0+
Z2V0QkNvbnN0KHN0YXRpY19jYXN0PGJvb2w+KGkpKSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXSA9IHJpZ2h0VW5pb25BcnJheVtpXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNf
Y2FzdDxmbG9hdD4obm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0PihpKSkpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCAiQ2Fubm90IHByb21vdGUiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVy
cm9yLCBub2RlLT5nZXRMaW5lKCksICJDYW5ub3QgcHJvbW90ZSIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAgICAgICAgICAgICAgc3dpdGNoIChu
b2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXSA9IHJp
Z2h0VW5pb25BcnJheVtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5
W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmdldElDb25zdChzdGF0aWNfY2Fz
dDxpbnQ+KGkpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlv
bkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KHJpZ2h0VW5pb25BcnJheVtpXS5n
ZXRCQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0u
c2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0QkNvbnN0KHN0YXRpY19jYXN0PGJv
b2w+KGkpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25B
cnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50PihyaWdodFVuaW9uQXJyYXlbaV0uZ2V0
RkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNl
dElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmdldEZDb25zdChzdGF0aWNfY2FzdDxmbG9h
dD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNhbm5vdCBwcm9tb3RlIiwgbm9kZS0+Z2V0TGlu
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQ2Fubm90IHByb21vdGUiKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKG5vZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAg
ICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlv
bkFycmF5W2ldLnNldEJDb25zdChyaWdodFVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkgIT0gMCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9k
ZS0+Z2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oaSkpICE9IDApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldID0gcmlnaHRVbmlvbkFycmF5W2ld
OworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5v
ZGUtPmdldEJDb25zdChzdGF0aWNfY2FzdDxib29sPihpKSkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3QocmlnaHRVbmlvbkFy
cmF5W2ldLmdldEZDb25zdCgpICE9IDAuMGYpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVm
dFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUtPmdldEZDb25zdChzdGF0aWNfY2FzdDxmbG9h
dD4oaSkpICE9IDAuMGYpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDYW5ub3QgcHJvbW90ZSIsIG5vZGUt
PmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3Nh
Z2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkNhbm5vdCBwcm9tb3Rl
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiSW5j
b3JyZWN0IGRhdGEgdHlwZSBmb3VuZCIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRM
aW5lKCksICJJbmNvcnJlY3QgZGF0YSB0eXBlIGZvdW5kIik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL091dHB1dEdMU0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmNwcAkocmV2aXNpb24gMTUyMzIzKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOSwzICsxOSwxNyBAQCBib29sIFRPdXRwdXRHTFNMOjp3cml0ZVZhcmlhYmxl
UHJlY2lzaW9uCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCit2b2lkIFRPdXRwdXRHTFNMOjp2
aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKiBub2RlKQoreworICAgIFRJbmZvU2lua0Jhc2UmIG91
dCA9IG9ialNpbmsoKTsKKworICAgIGlmIChub2RlLT5nZXRTeW1ib2woKSA9PSAiZ2xfRnJhZ0Rl
cHRoRVhUIikKKyAgICB7CisgICAgICAgIG91dCA8PCAiZ2xfRnJhZ0RlcHRoIjsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgVE91dHB1dEdMU0xCYXNlOjp2aXNpdFN5bWJvbChub2Rl
KTsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
T3V0cHV0R0xTTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9PdXRwdXRHTFNMLmgJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmgJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDYgKzIwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHdyaXRl
VmFyaWFibGVQcmVjaXNpb24oVFByZWNpc2lvbik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0U3lt
Ym9sKFRJbnRlcm1TeW1ib2wqIG5vZGUpOwogfTsKIAogI2VuZGlmICAvLyBDUk9TU0NPTVBJTEVS
R0xTTF9PVVRQVVRHTFNMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAJKHJldmlzaW9uIDE1MjMyMykK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDI1ICs3OSw5IEBAIHZvaWQgVE91dHB1dEdMU0xCYXNl
Ojp3cml0ZVZhcmlhYmxlVHlwZSgKICAgICBpZiAoKHF1YWxpZmllciAhPSBFdnFUZW1wb3Jhcnkp
ICYmIChxdWFsaWZpZXIgIT0gRXZxR2xvYmFsKSkKICAgICAgICAgb3V0IDw8IHR5cGUuZ2V0UXVh
bGlmaWVyU3RyaW5nKCkgPDwgIiAiOwogICAgIC8vIERlY2xhcmUgdGhlIHN0cnVjdCBpZiB3ZSBo
YXZlIG5vdCBkb25lIHNvIGFscmVhZHkuCi0gICAgaWYgKCh0eXBlLmdldEJhc2ljVHlwZSgpID09
IEVidFN0cnVjdCkgJiYKLSAgICAgICAgKG1EZWNsYXJlZFN0cnVjdHMuZmluZCh0eXBlLmdldFR5
cGVOYW1lKCkpID09IG1EZWNsYXJlZFN0cnVjdHMuZW5kKCkpKQorICAgIGlmICgodHlwZS5nZXRC
YXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpICYmICFzdHJ1Y3REZWNsYXJlZCh0eXBlLmdldFN0cnVj
dCgpKSkKICAgICB7Ci0gICAgICAgIG91dCA8PCAic3RydWN0ICIgPDwgaGFzaE5hbWUodHlwZS5n
ZXRUeXBlTmFtZSgpKSA8PCAie1xuIjsKLSAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBzdHJ1Y3R1
cmUgPSB0eXBlLmdldFN0cnVjdCgpOwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlICE9IE5VTEwp
OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUgPSAoKnN0cnVj
dHVyZSlbaV0udHlwZTsKLSAgICAgICAgICAgIEFTU0VSVChmaWVsZFR5cGUgIT0gTlVMTCk7Ci0g
ICAgICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVsZFR5cGUtPmdldFByZWNp
c2lvbigpKSkKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiAiOwotICAgICAgICAgICAgb3V0IDw8
IGdldFR5cGVOYW1lKCpmaWVsZFR5cGUpIDw8ICIgIiA8PCBoYXNoTmFtZShmaWVsZFR5cGUtPmdl
dEZpZWxkTmFtZSgpKTsKLSAgICAgICAgICAgIGlmIChmaWVsZFR5cGUtPmlzQXJyYXkoKSkKLSAg
ICAgICAgICAgICAgICBvdXQgPDwgYXJyYXlCcmFja2V0cygqZmllbGRUeXBlKTsKLSAgICAgICAg
ICAgIG91dCA8PCAiO1xuIjsKLSAgICAgICAgfQotICAgICAgICBvdXQgPDwgIn0iOwotICAgICAg
ICBtRGVjbGFyZWRTdHJ1Y3RzLmluc2VydCh0eXBlLmdldFR5cGVOYW1lKCkpOworICAgICAgICBk
ZWNsYXJlU3RydWN0KHR5cGUuZ2V0U3RydWN0KCkpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpA
QCAtMTM4LDI0ICsxMjIsMjUgQEAgY29uc3QgQ29uc3RhbnRVbmlvbiogVE91dHB1dEdMU0xCYXNl
Ojp3cgogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsK
LSAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5cGUuZ2V0VHlwZU5hbWUoKSkgPDwgIigiOwotICAg
ICAgICBjb25zdCBUVHlwZUxpc3QqIHN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7Ci0gICAg
ICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gTlVMTCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkKKyAgICAgICAgY29uc3QgVFN0cnVjdHVyZSog
c3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHN0
cnVjdHVyZS0+bmFtZSgpKSA8PCAiKCI7CisKKyAgICAgICAgY29uc3QgVEZpZWxkTGlzdCYgZmll
bGRzID0gc3RydWN0dXJlLT5maWVsZHMoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWVsZHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBl
KiBmaWVsZFR5cGUgPSAoKnN0cnVjdHVyZSlbaV0udHlwZTsKKyAgICAgICAgICAgIGNvbnN0IFRU
eXBlKiBmaWVsZFR5cGUgPSBmaWVsZHNbaV0tPnR5cGUoKTsKICAgICAgICAgICAgIEFTU0VSVChm
aWVsZFR5cGUgIT0gTlVMTCk7CiAgICAgICAgICAgICBwQ29uc3RVbmlvbiA9IHdyaXRlQ29uc3Rh
bnRVbmlvbigqZmllbGRUeXBlLCBwQ29uc3RVbmlvbik7Ci0gICAgICAgICAgICBpZiAoaSAhPSBz
dHJ1Y3R1cmUtPnNpemUoKSAtIDEpIG91dCA8PCAiLCAiOworICAgICAgICAgICAgaWYgKGkgIT0g
ZmllbGRzLnNpemUoKSAtIDEpIG91dCA8PCAiLCAiOwogICAgICAgICB9CiAgICAgICAgIG91dCA8
PCAiKSI7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGludCBzaXplID0gdHlwZS5n
ZXRPYmplY3RTaXplKCk7CisgICAgICAgIHNpemVfdCBzaXplID0gdHlwZS5nZXRPYmplY3RTaXpl
KCk7CiAgICAgICAgIGJvb2wgd3JpdGVUeXBlID0gc2l6ZSA+IDE7CiAgICAgICAgIGlmICh3cml0
ZVR5cGUpIG91dCA8PCBnZXRUeXBlTmFtZSh0eXBlKSA8PCAiKCI7Ci0gICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgc2l6ZTsgKytpLCArK3BDb25zdFVuaW9uKQorICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSwgKytwQ29uc3RVbmlvbikKICAgICAgICAgewogICAgICAg
ICAgICAgc3dpdGNoIChwQ29uc3RVbmlvbi0+Z2V0VHlwZSgpKQogICAgICAgICAgICAgewpAQCAt
MjYwLDEyICsyNDUsMTggQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QmluYXJ5KFZpc2l0
CiAgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6CiAgICAgICAgICAgICBpZiAodmlz
aXQgPT0gSW5WaXNpdCkKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBIZXJlIHdl
IGFyZSB3cml0aW5nIG91dCAiZm9vLmJhciIsIHdoZXJlICJmb28iIGlzIHN0cnVjdAorICAgICAg
ICAgICAgICAgIC8vIGFuZCAiYmFyIiBpcyBmaWVsZC4gSW4gQVNULCBpdCBpcyByZXByZXNlbnRl
ZCBhcyBhIGJpbmFyeQorICAgICAgICAgICAgICAgIC8vIG5vZGUsIHdoZXJlIGxlZnQgY2hpbGQg
cmVwcmVzZW50cyAiZm9vIiBhbmQgcmlnaHQgY2hpbGQgImJhciIuCisgICAgICAgICAgICAgICAg
Ly8gVGhlIG5vZGUgaXRzZWxmIHJlcHJlc2VudHMgIi4iLiBUaGUgc3RydWN0IGZpZWxkICJiYXIi
IGlzCisgICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgc3RvcmVkIGFzIGFuIGluZGV4IGludG8g
VFN0cnVjdHVyZTo6ZmllbGRzLgogICAgICAgICAgICAgICAgIG91dCA8PCAiLiI7Ci0gICAgICAg
ICAgICAgICAgLy8gVE9ETyhhbG9rcCk6IEFTU0VSVAotICAgICAgICAgICAgICAgIFRTdHJpbmcg
ZmllbGROYW1lID0gbm9kZS0+Z2V0VHlwZSgpLmdldEZpZWxkTmFtZSgpOworICAgICAgICAgICAg
ICAgIGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlw
ZSgpLmdldFN0cnVjdCgpOworICAgICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1Db25zdGFudFVu
aW9uKiBpbmRleCA9IG5vZGUtPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAg
ICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpW2lu
ZGV4LT5nZXRJQ29uc3QoMCldOwogCi0gICAgICAgICAgICAgICAgY29uc3QgVFR5cGUmIHN0cnVj
dFR5cGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKTsKLSAgICAgICAgICAgICAgICBpZiAo
IW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3RUeXBlLmdldFR5cGVOYW1lKCkpKQorICAg
ICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gZmllbGQtPm5hbWUoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3R1cmUtPm5hbWUoKSkp
CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZSA9IGhhc2hOYW1lKGZpZWxkTmFtZSk7CiAK
ICAgICAgICAgICAgICAgICBvdXQgPDwgZmllbGROYW1lOwpAQCAtNTk2LDcgKzU4Nyw3IEBAIGJv
b2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBjb25zdCBUVHlwZSYgdHlwZSA9IG5vZGUtPmdldFR5cGUoKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpOwotICAg
ICAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0eXBlLmdldFR5cGVOYW1lKCkpIDw8ICIoIjsK
KyAgICAgICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRTdHJ1Y3QoKS0+bmFtZSgp
KSA8PCAiKCI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJ
blZpc2l0KQogICAgICAgICAgICAgewpAQCAtNzY1LDcgKzc1Niw3IEBAIFRTdHJpbmcgVE91dHB1
dEdMU0xCYXNlOjpnZXRUeXBlTmFtZShjb24KICAgICBlbHNlCiAgICAgewogICAgICAgICBpZiAo
dHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCi0gICAgICAgICAgICBvdXQgPDwgaGFz
aE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKTsKKyAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0
eXBlLmdldFN0cnVjdCgpLT5uYW1lKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvdXQg
PDwgdHlwZS5nZXRCYXNpY1N0cmluZygpOwogICAgIH0KQEAgLTc5OCwzICs3ODksMjkgQEAgVFN0
cmluZyBUT3V0cHV0R0xTTEJhc2U6Omhhc2hGdW5jdGlvbk5hbQogICAgICAgICByZXR1cm4gbmFt
ZTsKICAgICByZXR1cm4gaGFzaE5hbWUobmFtZSk7CiB9CisKK2Jvb2wgVE91dHB1dEdMU0xCYXNl
OjpzdHJ1Y3REZWNsYXJlZChjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1EZWNsYXJlZFN0cnVjdHMuZmluZChzdHJ1Y3R1cmUtPm5hbWUoKSkgIT0gbURl
Y2xhcmVkU3RydWN0cy5lbmQoKTsKK30KKwordm9pZCBUT3V0cHV0R0xTTEJhc2U6OmRlY2xhcmVT
dHJ1Y3QoY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFRJbmZvU2lua0Jhc2Um
IG91dCA9IG9ialNpbmsoKTsKKworICAgIG91dCA8PCAic3RydWN0ICIgPDwgaGFzaE5hbWUoc3Ry
dWN0dXJlLT5uYW1lKCkpIDw8ICJ7XG4iOworICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9
IHN0cnVjdHVyZS0+ZmllbGRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMu
c2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBjb25zdCBURmllbGQqIGZpZWxkID0gZmllbGRz
W2ldOworICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVsZC0+dHlwZSgpLT5n
ZXRQcmVjaXNpb24oKSkpCisgICAgICAgICAgICBvdXQgPDwgIiAiOworICAgICAgICBvdXQgPDwg
Z2V0VHlwZU5hbWUoKmZpZWxkLT50eXBlKCkpIDw8ICIgIiA8PCBoYXNoTmFtZShmaWVsZC0+bmFt
ZSgpKTsKKyAgICAgICAgaWYgKGZpZWxkLT50eXBlKCktPmlzQXJyYXkoKSkKKyAgICAgICAgICAg
IG91dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZC0+dHlwZSgpKTsKKyAgICAgICAgb3V0IDw8ICI7
XG4iOworICAgIH0KKyAgICBvdXQgPDwgIn0iOworCisgICAgbURlY2xhcmVkU3RydWN0cy5pbnNl
cnQoc3RydWN0dXJlLT5uYW1lKCkpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgJKHJldmlzaW9uIDE1MjMy
MykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw5IEBAIHByb3RlY3RlZDoKICAgICBUU3Ry
aW5nIGhhc2hGdW5jdGlvbk5hbWUoY29uc3QgVFN0cmluZyYgbWFuZ2xlZF9uYW1lKTsKIAogcHJp
dmF0ZToKKyAgICBib29sIHN0cnVjdERlY2xhcmVkKGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkgY29uc3Q7CisgICAgdm9pZCBkZWNsYXJlU3RydWN0KGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSk7CisKICAgICBUSW5mb1NpbmtCYXNlJiBtT2JqU2luazsKICAgICBib29sIG1EZWNsYXJp
bmdWYXJpYWJsZXM7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9PdXRwdXRITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNiArNTIsNyBAQCBPdXRwdXRITFNMOjpPdXRwdXRITFNMKFRQYXJzZUNvbnRleHQg
JmNvCiAgICAgbVVzZXNQb2ludENvb3JkID0gZmFsc2U7CiAgICAgbVVzZXNGcm9udEZhY2luZyA9
IGZhbHNlOwogICAgIG1Vc2VzUG9pbnRTaXplID0gZmFsc2U7CisgICAgbVVzZXNGcmFnRGVwdGgg
PSBmYWxzZTsKICAgICBtVXNlc1hvciA9IGZhbHNlOwogICAgIG1Vc2VzTW9kMSA9IGZhbHNlOwog
ICAgIG1Vc2VzTW9kMnYgPSBmYWxzZTsKQEAgLTE4OSw2ICsxOTAsMTEgQEAgdm9pZCBPdXRwdXRI
TFNMOjpoZWFkZXIoKQogICAgICAgICBvdXQgPDwgIlxuIgogICAgICAgICAgICAgICAgInN0YXRp
YyBmbG9hdDQgZ2xfQ29sb3JbMV0gPSB7ZmxvYXQ0KDAsIDAsIDAsIDApfTtcbiI7CiAKKyAgICAg
ICAgaWYgKG1Vc2VzRnJhZ0RlcHRoKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgInN0
YXRpYyBmbG9hdCBnbF9EZXB0aCA9IDAuMDtcbiI7CisgICAgICAgIH0KKwogICAgICAgICBpZiAo
bVVzZXNGcmFnQ29vcmQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG91dCA8PCAic3RhdGljIGZs
b2F0NCBnbF9GcmFnQ29vcmQgPSBmbG9hdDQoMCwgMCwgMCwgMCk7XG4iOwpAQCAtNTA5LDYgKzUx
NSwxMSBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcigpCiAgICAgICAgIG91dCA8PCAiI2RlZmlu
ZSBHTF9VU0VTX1BPSU5UX1NJWkVcbiI7CiAgICAgfQogCisgICAgaWYgKG1Vc2VzRnJhZ0RlcHRo
KQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNfRlJBR19ERVBUSFxuIjsK
KyAgICB9CisKICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQogICAgIHsKICAgICAgICAgb3V0IDw8
ICJzdHJ1Y3QgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnNcbiIKQEAgLTg0Myw2ICs4NTQsMTEgQEAg
dm9pZCBPdXRwdXRITFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYgogICAgICAgICBtVXNlc1Bv
aW50U2l6ZSA9IHRydWU7CiAgICAgICAgIG91dCA8PCBuYW1lOwogICAgIH0KKyAgICBlbHNlIGlm
IChuYW1lID09ICJnbF9GcmFnRGVwdGhFWFQiKQorICAgIHsKKyAgICAgICAgbVVzZXNGcmFnRGVw
dGggPSB0cnVlOworICAgICAgICBvdXQgPDwgImdsX0RlcHRoIjsKKyAgICB9CiAgICAgZWxzZQog
ICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBub2RlLT5nZXRRdWFsaWZpZXIo
KTsKQEAgLTk1Miw3ICs5NjgsMTAgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShWaXNp
dCB2aXNpdAogICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKICAgICAgICAgaWYgKHZp
c2l0ID09IEluVmlzaXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNv
cmF0ZUZpZWxkKG5vZGUtPmdldFR5cGUoKS5nZXRGaWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgp
LT5nZXRUeXBlKCkpOworICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlID0g
bm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7CisgICAgICAgICAgICBjb25z
dCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogaW5kZXggPSBub2RlLT5nZXRSaWdodCgpLT5nZXRBc0Nv
bnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQgPSBzdHJ1Y3R1
cmUtPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOworICAgICAgICAgICAgb3V0IDw8ICIu
IiArIGRlY29yYXRlRmllbGQoZmllbGQtPm5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBl
KCkpOwogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTk3NCw3ICs5
OTMsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0CiAKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBpID0gZWxlbWVudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpID0gZWxlbWVu
dC0+Z2V0SUNvbnN0KDApOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICB7CkBAIC0xMDIxLDE4ICsxMDQwLDE4IEBAIGJvb2wgT3V0
cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQKICAgICAgICAgICAgICAgICBvdXQgPDwg
IiEoIjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0ICpmaWVs
ZHMgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgICAg
IGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdl
dFN0cnVjdCgpLT5maWVsZHMoKTsKIAotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWVsZHMtPnNpemUoKTsgaSsrKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqZmllbGRzKVtpXS50eXBlOworICAgICAgICAgICAgICAg
IGNvbnN0IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CiAKICAgICAgICAgICAgICAgICBub2Rl
LT5nZXRMZWZ0KCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgICAgIG91dCA8PCAiLiIg
KyBkZWNvcmF0ZUZpZWxkKGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCksIG5vZGUtPmdldExlZnQo
KS0+Z2V0VHlwZSgpKSArICIgPT0gIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIi4iICsgZGVj
b3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSkgKyAi
ID09ICI7CiAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0UmlnaHQoKS0+dHJhdmVyc2UodGhpcyk7
Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGRUeXBlLT5n
ZXRGaWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkpOworICAgICAgICAgICAg
ICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksIG5vZGUtPmdldExl
ZnQoKS0+Z2V0VHlwZSgpKTsKIAotICAgICAgICAgICAgICAgIGlmIChpIDwgZmllbGRzLT5zaXpl
KCkgLSAxKQorICAgICAgICAgICAgICAgIGlmIChpIDwgZmllbGRzLnNpemUoKSAtIDEpCiAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAmJiAiOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTEyMzgsNyArMTI1Nyw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRB
Z2dyZWdhdGUoVmlzaXQgdmkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1JbnNpZGVGdW5j
dGlvbikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZl
KG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShu
b2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICJ7XG4i
OwogCiAgICAgICAgICAgICAgICAgbVNjb3BlRGVwdGgrKzsKQEAgLTEyNTUsNyArMTI3NCw3IEBA
IGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKIAogICAgICAgICAgICAg
Zm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHNpdCA9IG5vZGUtPmdldFNlcXVlbmNlKCku
YmVnaW4oKTsgc2l0ICE9IG5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHNpdCsrKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpzaXQpLT5nZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpzaXQpLT5nZXRM
aW5lKCkuZmlyc3RfbGluZSk7CiAKICAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMo
KnNpdCk7CiAKQEAgLTEyNjQsNyArMTI4Myw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dy
ZWdhdGUoVmlzaXQgdmkKIAogICAgICAgICAgICAgaWYgKG1JbnNpZGVGdW5jdGlvbikKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEVu
ZExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRM
aW5lKCkubGFzdF9saW5lKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgIn1cbiI7CiAKICAgICAg
ICAgICAgICAgICBtU2NvcGVEZXB0aC0tOwpAQCAtMTI4Myw3ICsxMzAyLDcgQEAgYm9vbCBPdXRw
dXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQogICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RydWN0b3IodmFyaWFibGUtPmdldFR5
cGUoKSwgc2NvcGVkU3RydWN0KHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSksIE5V
TEwpOworICAgICAgICAgICAgICAgICAgICBhZGRDb25zdHJ1Y3Rvcih2YXJpYWJsZS0+Z2V0VHlw
ZSgpLCBzY29wZWRTdHJ1Y3QodmFyaWFibGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+bmFtZSgp
KSwgTlVMTCk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCF2YXJp
YWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCkgfHwgdmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpLT5n
ZXRTeW1ib2woKSAhPSAiIikgICAvLyBWYXJpYWJsZSBkZWNsYXJhdGlvbgpAQCAtMTQwMSw3ICsx
NDIwLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbC0+Z2V0VHlwZSgpLmdl
dFN0cnVjdCgpKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBhZGRDb25zdHJ1Y3RvcihzeW1ib2wtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KHN5bWJvbC0+
Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFkZENvbnN0cnVjdG9yKHN5bWJvbC0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3Qoc3ltYm9sLT5n
ZXRUeXBlKCkuZ2V0U3RydWN0KCktPm5hbWUoKSksIE5VTEwpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8IGFyZ3VtZW50U3RyaW5nKHN5bWJvbCk7
CkBAIC0xNjUwLDggKzE2NjksOCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZp
c2l0IHZpCiAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJtYXQ0KCIsICIsICIsICIpIik7
CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RTdHJ1Y3Q6Ci0gICAgICAg
IGFkZENvbnN0cnVjdG9yKG5vZGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5vZGUtPmdldFR5
cGUoKS5nZXRUeXBlTmFtZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOwotICAgICAgICBvdXRw
dXRUcmlwbGV0KHZpc2l0LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdldFR5cGVOYW1l
KCkpICsgIl9jdG9yKCIsICIsICIsICIpIik7CisgICAgICAgIGFkZENvbnN0cnVjdG9yKG5vZGUt
PmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+bmFt
ZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0
LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5uYW1lKCkpICsgIl9j
dG9yKCIsICIsICIsICIpIik7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BMZXNzVGhh
bjogICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgPCAiLCAiKSIpOyAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOiAgICAgIG91dHB1dFRy
aXBsZXQodmlzaXQsICIoIiwgIiA+ICIsICIpIik7ICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTE3NDEsNyArMTc2MCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24oVmlzaXQg
dmkKIAogICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAgICAgIAotICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUo
bm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQgPDwgIntcbiI7CiAKICAg
ICAgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQpAQCAtMTc0OSwyMCArMTc2OCwyMCBAQCBi
b29sIE91dHB1dEhMU0w6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpCiAgICAgICAgICAgICB0cmF2
ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRM
aW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8
ICI7XG59XG4iOwogCiAgICAgICAgIGlmIChub2RlLT5nZXRGYWxzZUJsb2NrKCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIG91dCA8PCAiZWxzZVxuIjsKIAotICAgICAgICAgICAgb3V0cHV0TGlu
ZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7CisgICAgICAgICAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZp
cnN0X2xpbmUpOwogICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwogCi0gICAgICAgICAgICBvdXRw
dXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpKTsKKyAgICAg
ICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5l
KCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0
RmFsc2VCbG9jaygpKTsKIAotICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5n
ZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7CisgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0
aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAg
ICAgICAgb3V0IDw8ICI7XG59XG4iOwogICAgICAgICB9CiAgICAgfQpAQCAtMTc5NSw3ICsxODE0
LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsCiAgICAgewogICAg
ICAgICBvdXQgPDwgIntkb1xuIjsKIAotICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUt
PmdldExpbmUoKSk7CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgp
LmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQgPDwgIntcbiI7CiAgICAgfQogICAgIGVsc2UKQEAg
LTE4MjMsNyArMTg0Miw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRMb29wKFZpc2l0IHZpc2l0
LAogCiAgICAgICAgIG91dCA8PCAiKVxuIjsKICAgICAgICAgCi0gICAgICAgIG91dHB1dExpbmVE
aXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShu
b2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAie1xuIjsKICAgICB9
CiAKQEAgLTE4MzIsMTIgKzE4NTEsMTIgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlz
aXQgdmlzaXQsCiAgICAgICAgIHRyYXZlcnNlU3RhdGVtZW50cyhub2RlLT5nZXRCb2R5KCkpOwog
ICAgIH0KIAotICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICBv
dXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICBvdXQg
PDwgIjt9XG4iOwogCiAgICAgaWYgKG5vZGUtPmdldFR5cGUoKSA9PSBFTG9vcERvV2hpbGUpCiAg
ICAgewotICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENvbmRpdGlvbigpLT5n
ZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENvbmRpdGlv
bigpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAid2hpbGUoXG4iOwog
CiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKQEAgLTE5Nzcs
NyArMTk5Niw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcChUSW4KICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0
SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBzeW1ib2w7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCA9IGNvbnN0YW50LT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpWzBdLmdldElDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluaXRpYWwgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTk5OSw3
ICsyMDE4LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgogICAg
ICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50ICYmIGNv
bnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICBjb21wYXJhdG9yID0gdGVzdC0+Z2V0T3AoKTsKLSAgICAgICAgICAgICAg
ICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29u
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDAp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjAyMCw3
ICsyMDM5LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkg
PT0gRWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSBjb25zdGFudC0+Z2V0VW5p
b25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50
IHZhbHVlID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKG9wKQogICAgICAgICAgICAgICAgICAgICB7CkBAIC0yMTA5LDcgKzIxMjgsNyBAQCBi
b29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAgICAg
b3V0IDw8IGluY3JlbWVudDsKICAgICAgICAgICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGlu
ZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAie1xuIjsKIAogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5nZXRCb2R5KCkpCkBAIC0yMTE3LDcgKzIxMzYsNyBAQCBib29s
IE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmdldEJvZHkoKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAg
ICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xp
bmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAiO31cbiI7CiAKICAgICAgICAgICAgICAgICBp
ZiAoIWZpcnN0TG9vcEZyYWdtZW50KQpAQCAtMjIxMywyMiArMjIzMiwyMyBAQCBUU3RyaW5nIE91
dHB1dEhMU0w6OnR5cGVTdHJpbmcoY29uc3QgVFR5CiB7CiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNU
eXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsKLSAgICAgICAgaWYgKHR5cGUuZ2V0VHlwZU5hbWUo
KSAhPSAiIikKKyAgICAgICAgY29uc3QgVFN0cmluZyYgdHlwZU5hbWUgPSB0eXBlLmdldFN0cnVj
dCgpLT5uYW1lKCk7CisgICAgICAgIGlmICh0eXBlTmFtZSAhPSAiIikKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlLmdldFR5cGVOYW1lKCkpOworICAgICAg
ICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlTmFtZSk7CiAgICAgICAgIH0KICAgICAgICAg
ZWxzZSAgIC8vIE5hbWVsZXNzIHN0cnVjdHVyZSwgZGVmaW5lIGluIHBsYWNlCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnN0IFRUeXBlTGlzdCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0KCk7
CisgICAgICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgp
LT5maWVsZHMoKTsKIAogICAgICAgICAgICAgVFN0cmluZyBzdHJpbmcgPSAic3RydWN0XG4iCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRzW2ldLnR5cGU7Cisg
ICAgICAgICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCA9IGZpZWxkc1tpXTsKIAotICAgICAg
ICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3RyaW5nKGZpZWxkKSArICIgIiArIGRl
Y29yYXRlKGZpZWxkLmdldEZpZWxkTmFtZSgpKSArIGFycmF5U3RyaW5nKGZpZWxkKSArICI7XG4i
OworICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3RyaW5nKCpmaWVsZC0+
dHlwZSgpKSArICIgIiArIGRlY29yYXRlKGZpZWxkLT5uYW1lKCkpICsgYXJyYXlTdHJpbmcoKmZp
ZWxkLT50eXBlKCkpICsgIjtcbiI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHN0cmlu
ZyArPSAifSAiOwpAQCAtMjMwNCwxMSArMjMyNCwxMiBAQCBUU3RyaW5nIE91dHB1dEhMU0w6Omlu
aXRpYWxpemVyKGNvbnN0IFRUCiB7CiAgICAgVFN0cmluZyBzdHJpbmc7CiAKLSAgICBmb3IgKGlu
dCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCB0eXBlLmdldE9iamVjdFNpemUoKTsgY29tcG9u
ZW50KyspCisgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICBmb3Ig
KHNpemVfdCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCBzaXplOyBjb21wb25lbnQrKykKICAg
ICB7CiAgICAgICAgIHN0cmluZyArPSAiMCI7CiAKLSAgICAgICAgaWYgKGNvbXBvbmVudCA8IHR5
cGUuZ2V0T2JqZWN0U2l6ZSgpIC0gMSkKKyAgICAgICAgaWYgKGNvbXBvbmVudCArIDEgPCBzaXpl
KQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJpbmcgKz0gIiwgIjsKICAgICAgICAgfQpAQCAt
MjM0NywxMyArMjM2OCwxMyBAQCB2b2lkIE91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0
IFRUCiAgICAgICAgIHN0cnVjdHVyZSArPSAic3RydWN0ICIgKyBkZWNvcmF0ZShuYW1lKSArICJc
biIKICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCi0gICAgICAgIGNvbnN0IFRUeXBlTGlz
dCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0KCk7CisgICAgICAgIGNvbnN0IFRGaWVsZExpc3Qg
JmZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCiAgICAgICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRzW2ldLnR5cGU7CisgICAgICAgICAg
ICBjb25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ldOwogCi0gICAgICAgICAgICBzdHJ1Y3R1
cmUgKz0gIiAgICAiICsgdHlwZVN0cmluZyhmaWVsZCkgKyAiICIgKyBkZWNvcmF0ZUZpZWxkKGZp
ZWxkLmdldEZpZWxkTmFtZSgpLCB0eXBlKSArIGFycmF5U3RyaW5nKGZpZWxkKSArICI7XG4iOwor
ICAgICAgICAgICAgc3RydWN0dXJlICs9ICIgICAgIiArIHR5cGVTdHJpbmcoKmZpZWxkLT50eXBl
KCkpICsgIiAiICsgZGVjb3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCB0eXBlKSArIGFycmF5U3Ry
aW5nKCpmaWVsZC0+dHlwZSgpKSArICI7XG4iOwogICAgICAgICB9CiAKICAgICAgICAgc3RydWN0
dXJlICs9ICJ9O1xuIjsKQEAgLTIzNjUsNyArMjM4Niw3IEBAIHZvaWQgT3V0cHV0SExTTDo6YWRk
Q29uc3RydWN0b3IoY29uc3QgVFQKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAgICAgICAgICAgY3RvclBhcmFt
ZXRlcnMucHVzaF9iYWNrKCpmaWVsZHNbaV0udHlwZSk7CisgICAgICAgICAgICBjdG9yUGFyYW1l
dGVycy5wdXNoX2JhY2soKmZpZWxkc1tpXS0+dHlwZSgpKTsKICAgICAgICAgfQogICAgIH0KICAg
ICBlbHNlIGlmIChwYXJhbWV0ZXJzKQpAQCAtMjQ1OCwyNyArMjQ3OSwzMCBAQCB2b2lkIE91dHB1
dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0g
ICAgICAgIGludCByZW1haW5pbmdDb21wb25lbnRzID0gY3RvclR5cGUuZ2V0T2JqZWN0U2l6ZSgp
OwotICAgICAgICBpbnQgcGFyYW1ldGVySW5kZXggPSAwOworICAgICAgICBzaXplX3QgcmVtYWlu
aW5nQ29tcG9uZW50cyA9IGN0b3JUeXBlLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6ZV90
IHBhcmFtZXRlckluZGV4ID0gMDsKIAogICAgICAgICB3aGlsZSAocmVtYWluaW5nQ29tcG9uZW50
cyA+IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZwYXJhbWV0ZXIgPSBj
dG9yUGFyYW1ldGVyc1twYXJhbWV0ZXJJbmRleF07Ci0gICAgICAgICAgICBib29sIG1vcmVQYXJh
bWV0ZXJzID0gcGFyYW1ldGVySW5kZXggPCAoaW50KWN0b3JQYXJhbWV0ZXJzLnNpemUoKSAtIDE7
CisgICAgICAgICAgICBjb25zdCBzaXplX3QgcGFyYW1ldGVyU2l6ZSA9IHBhcmFtZXRlci5nZXRP
YmplY3RTaXplKCk7CisgICAgICAgICAgICBib29sIG1vcmVQYXJhbWV0ZXJzID0gcGFyYW1ldGVy
SW5kZXggKyAxIDwgY3RvclBhcmFtZXRlcnMuc2l6ZSgpOwogCiAgICAgICAgICAgICBjb25zdHJ1
Y3RvciArPSAieCIgKyBzdHIocGFyYW1ldGVySW5kZXgpOwogCiAgICAgICAgICAgICBpZiAocGFy
YW1ldGVyLmlzU2NhbGFyKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVtYWlu
aW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJlbWFpbmluZ0NvbXBvbmVudHMpOworICAgICAg
ICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6ZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5pc1ZlY3RvcigpKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmdDb21wb25lbnRzID09IHBhcmFt
ZXRlci5nZXRPYmplY3RTaXplKCkgfHwgbW9yZVBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAg
aWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPT0gcGFyYW1ldGVyU2l6ZSB8fCBtb3JlUGFyYW1ldGVy
cykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBv
bmVudHMgLT0gcGFyYW1ldGVyLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKHBhcmFtZXRlclNpemUgPD0gcmVtYWluaW5nQ29tcG9uZW50cyk7CisgICAgICAgICAg
ICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6ZTsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVtYWluaW5nQ29tcG9uZW50cyA8
IHBhcmFtZXRlci5nZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJl
bWFpbmluZ0NvbXBvbmVudHMgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFtZXRlci5nZXROb21p
bmFsU2l6ZSgpKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAocmVtYWluaW5nQ29tcG9uZW50cykKICAgICAgICAgICAgICAgICAgICAgewpAQCAtMjQ5NSw5
ICsyNTE5LDEwIEBAIHZvaWQgT3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFQKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5pc01hdHJpeCgpIHx8
IHBhcmFtZXRlci5nZXRTdHJ1Y3QoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQocmVtYWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpIHx8
IG1vcmVQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmVtYWluaW5nQ29tcG9u
ZW50cyA9PSBwYXJhbWV0ZXJTaXplIHx8IG1vcmVQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQocGFyYW1ldGVyU2l6ZSA8PSByZW1haW5pbmdDb21wb25lbnRzKTsKICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRzIC09IHBhcmFtZXRl
ci5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nQ29tcG9uZW50cyAt
PSBwYXJhbWV0ZXJTaXplOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBVTlJFQUNI
QUJMRSgpOwogCkBAIC0yNTM0LDE3ICsyNTU5LDE3IEBAIGNvbnN0IENvbnN0YW50VW5pb24gKk91
dHB1dEhMU0w6OndyaXRlQ28KIAogICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0
cnVjdCkKICAgICB7Ci0gICAgICAgIG91dCA8PCBzdHJ1Y3RMb29rdXAodHlwZS5nZXRUeXBlTmFt
ZSgpKSArICJfY3RvcigiOworICAgICAgICBvdXQgPDwgc3RydWN0TG9va3VwKHR5cGUuZ2V0U3Ry
dWN0KCktPm5hbWUoKSkgKyAiX2N0b3IoIjsKICAgICAgICAgCi0gICAgICAgIGNvbnN0IFRUeXBl
TGlzdCAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgY29uc3QgVEZpZWxk
TGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgaSsrKQorICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAgICAg
ICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOworICAg
ICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9IGZpZWxkc1tpXS0+dHlwZSgpOwogCiAg
ICAgICAgICAgICBjb25zdFVuaW9uID0gd3JpdGVDb25zdGFudFVuaW9uKCpmaWVsZFR5cGUsIGNv
bnN0VW5pb24pOwogCi0gICAgICAgICAgICBpZiAoaSAhPSBzdHJ1Y3R1cmUtPnNpemUoKSAtIDEp
CisgICAgICAgICAgICBpZiAoaSAhPSBmaWVsZHMuc2l6ZSgpIC0gMSkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKICAgICAgICAgICAgIH0KQEAgLTI1NTQsNyAr
MjU3OSw3IEBAIGNvbnN0IENvbnN0YW50VW5pb24gKk91dHB1dEhMU0w6OndyaXRlQ28KICAgICB9
CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW50IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUo
KTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKICAgICAgICAg
Ym9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAgICAgCiAgICAgICAgIGlmICh3cml0ZVR5
cGUpCkBAIC0yNTYyLDcgKzI1ODcsNyBAQCBjb25zdCBDb25zdGFudFVuaW9uICpPdXRwdXRITFNM
Ojp3cml0ZUNvCiAgICAgICAgICAgICBvdXQgPDwgdHlwZVN0cmluZyh0eXBlKSA8PCAiKCI7CiAg
ICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKywgY29uc3RV
bmlvbisrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKywgY29uc3RV
bmlvbisrKQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnN0VW5pb24tPmdldFR5
cGUoKSkKICAgICAgICAgICAgIHsKQEAgLTI2NTUsNyArMjY4MCw3IEBAIFRTdHJpbmcgT3V0cHV0
SExTTDo6ZGVjb3JhdGVVbmlmb3JtKGNvbnMKIAogVFN0cmluZyBPdXRwdXRITFNMOjpkZWNvcmF0
ZUZpZWxkKGNvbnN0IFRTdHJpbmcgJnN0cmluZywgY29uc3QgVFR5cGUgJnN0cnVjdHVyZSkKIHsK
LSAgICBpZiAoc3RydWN0dXJlLmdldFR5cGVOYW1lKCkuY29tcGFyZSgwLCAzLCAiZ2xfIikgIT0g
MCkKKyAgICBpZiAoc3RydWN0dXJlLmdldFN0cnVjdCgpLT5uYW1lKCkuY29tcGFyZSgwLCAzLCAi
Z2xfIikgIT0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBkZWNvcmF0ZShzdHJpbmcpOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNM
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091
dHB1dEhMU0wuaAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBA
QCBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAgICAgYm9vbCBtVXNl
c1BvaW50Q29vcmQ7CiAgICAgYm9vbCBtVXNlc0Zyb250RmFjaW5nOwogICAgIGJvb2wgbVVzZXNQ
b2ludFNpemU7CisgICAgYm9vbCBtVXNlc0ZyYWdEZXB0aDsKICAgICBib29sIG1Vc2VzWG9yOwog
ICAgIGJvb2wgbVVzZXNNb2QxOwogICAgIGJvb2wgbVVzZXNNb2QydjsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcAko
cmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1BhcnNlSGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjIsNyArMjIsNyBAQAogLy8gTG9vayBh
dCBhICcuJyBmaWVsZCBzZWxlY3RvciBzdHJpbmcgYW5kIGNoYW5nZSBpdCBpbnRvIG9mZnNldHMK
IC8vIGZvciBhIHZlY3Rvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmll
bGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCB2ZWNTaXplLCBUVmVjdG9yRmllbGRz
JiBmaWVsZHMsIGludCBsaW5lKQorYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJzZVZlY3RvckZpZWxk
cyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYg
ZmllbGRzLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGZpZWxkcy5udW0gPSAoaW50
KSBjb21wU3RyaW5nLnNpemUoKTsKICAgICBpZiAoZmllbGRzLm51bSA+IDQpIHsKQEAgLTExNSw3
ICsxMTUsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKGNvCiAvLyBM
b29rIGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0cmluZyBhbmQgY2hhbmdlIGl0IGludG8gb2Zm
c2V0cwogLy8gZm9yIGEgbWF0cml4LgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VNYXRy
aXhGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IG1hdFNpemUsIFRNYXRyaXhG
aWVsZHMmIGZpZWxkcywgaW50IGxpbmUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4
RmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCBtYXRTaXplLCBUTWF0cml4Rmll
bGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgZmllbGRzLndob2xl
Um93ID0gZmFsc2U7CiAgICAgZmllbGRzLndob2xlQ29sID0gZmFsc2U7CkBAIC0xNzUsMjIgKzE3
NSwyNCBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnJlY292ZXIoKQogLy8KIC8vIFVzZWQgYnkgZmxl
eC9iaXNvbiB0byBvdXRwdXQgYWxsIHN5bnRheCBhbmQgcGFyc2luZyBlcnJvcnMuCiAvLwotdm9p
ZCBUUGFyc2VDb250ZXh0OjplcnJvcihUU291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29udGV4
dDo6ZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvKQogewogICAgIHBwOjpTb3VyY2VMb2Nh
dGlvbiBzcmNMb2M7Ci0gICAgRGVjb2RlU291cmNlTG9jKGxvYywgJnNyY0xvYy5maWxlLCAmc3Jj
TG9jLmxpbmUpOworICAgIHNyY0xvYy5maWxlID0gbG9jLmZpcnN0X2ZpbGU7CisgICAgc3JjTG9j
LmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKICAgICBkaWFnbm9zdGljcy53cml0ZUluZm8ocHA6OkRp
YWdub3N0aWNzOjpFUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFz
b24sIHRva2VuLCBleHRyYUluZm8pOwogCiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6d2Fybmlu
ZyhUU291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29udGV4dDo6d2FybmluZyhjb25zdCBUU291
cmNlTG9jJiBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVh
c29uLCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBleHRyYUluZm8pIHsKICAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwotICAg
IERlY29kZVNvdXJjZUxvYyhsb2MsICZzcmNMb2MuZmlsZSwgJnNyY0xvYy5saW5lKTsKKyAgICBz
cmNMb2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOworICAgIHNyY0xvYy5saW5lID0gbG9jLmZpcnN0
X2xpbmU7CiAgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9zdGljczo6V0FSTklO
RywKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFzb24sIHRva2VuLCBleHRy
YUluZm8pOwogfQpAQCAtMjAzLDcgKzIwNSw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dHJhY2Uo
Y29uc3QgY2hhciogc3QKIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBwbGFjZXMg
YXNzaWdubWVudHMgZG9uJ3Qgd29yay4KIC8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OmFzc2lnbkVy
cm9yKGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0
KQordm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwg
ImNhbm5vdCBjb252ZXJ0IGZyb20gJyIgPDwgcmlnaHQgPDwgIicgdG8gJyIgPDwgbGVmdCA8PCAi
JyI7CkBAIC0yMTQsNyArMjE2LDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcihp
bnQgbGluZQogLy8KIC8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxsIHBsYWNlcyB1bmFyeSBv
cGVyYXRpb25zIGRvbid0IHdvcmsuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJy
b3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpCit2b2lkIFRQYXJz
ZUNvbnRleHQ6OnVuYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFy
KiBvcCwgVFN0cmluZyBvcGVyYW5kKQogewogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5m
b1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBvcCA8
PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhbiBvcGVyYW5kIG9mIHR5cGUgIiA8PCBvcGVyYW5kIApA
QCAtMjI2LDcgKzIyOCw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKGludCBs
aW4KIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBiaW5hcnkgb3BlcmF0aW9ucyBk
b24ndCB3b3JrLgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihpbnQgbGlu
ZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCkKK3ZvaWQgVFBh
cnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBj
aGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAgIHN0ZDo6c3RyaW5n
c3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJh
dGlvbiAnIiA8PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhIGxlZnQtaGFuZCBvcGVyYW5k
IG9mIHR5cGUgJyIgPDwgbGVmdCAKQEAgLTIzNSw3ICsyMzcsNyBAQCB2b2lkIFRQYXJzZUNvbnRl
eHQ6OmJpbmFyeU9wRXJyb3IoaW50IGxpCiAgICAgZXJyb3IobGluZSwgIiB3cm9uZyBvcGVyYW5k
IHR5cGVzICIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7IAogfQogCi1ib29sIFRQYXJzZUNvbnRl
eHQ6OnByZWNpc2lvbkVycm9yQ2hlY2soaW50IGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBU
QmFzaWNUeXBlIHR5cGUpeworYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFzaWNUeXBl
IHR5cGUpewogICAgIGlmICghY2hlY2tzUHJlY2lzaW9uRXJyb3JzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgc3dpdGNoKCB0eXBlICl7CkBAIC0yNjMsNyArMjY1LDcgQEAgYm9vbCBUUGFy
c2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVj
ayhpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRlcm1UeXBlZCogbm9kZSkKK2Jvb2wgVFBh
cnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25z
dCBjaGFyKiBvcCwgVEludGVybVR5cGVkKiBub2RlKQogewogICAgIFRJbnRlcm1TeW1ib2wqIHN5
bU5vZGUgPSBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsKICAgICBUSW50ZXJtQmluYXJ5KiBiaW5h
cnlOb2RlID0gbm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7CkBAIC0yODYsNyArMjg4LDcgQEAgYm9v
bCBUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGludAogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBwID0gYWdnck5v
ZGUtPmdldFNlcXVlbmNlKCkuYmVnaW4oKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHAgIT0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHAr
KykgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSAoKnApLT5nZXRBc1R5cGVkKCkt
PmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gKCpwKS0+Z2V0QXNUeXBlZCgpLT5n
ZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgICAgICBv
ZmZzZXRbdmFsdWVdKys7ICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldFt2YWx1
ZV0gPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFsdWUg
b2Ygc3dpenpsZSBjYW5ub3QgaGF2ZSBkdXBsaWNhdGUgY29tcG9uZW50cyIsIG9wKTsKQEAgLTMx
Nyw3ICszMTksNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soaW50CiAg
ICAgY2FzZSBFdnFBdHRyaWJ1dGU6ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYW4gYXR0
cmlidXRlIjsgICBicmVhazsKICAgICBjYXNlIEV2cVVuaWZvcm06ICAgICAgICBtZXNzYWdlID0g
ImNhbid0IG1vZGlmeSBhIHVuaWZvcm0iOyAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxVmFyeWlu
Z0luOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGEgdmFyeWluZyI7ICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBFdnFJbnB1dDogICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYW4g
aW5wdXQiOyAgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb29yZDogICAgICBtZXNzYWdl
ID0gImNhbid0IG1vZGlmeSBnbF9GcmFnQ29vcmQiOyAgIGJyZWFrOwogICAgIGNhc2UgRXZxRnJv
bnRGYWNpbmc6ICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX0Zyb250RmFjaW5nIjsgYnJl
YWs7CiAgICAgY2FzZSBFdnFQb2ludENvb3JkOiAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkg
Z2xfUG9pbnRDb29yZCI7ICBicmVhazsKQEAgLTQwOSw3ICs0MTAsNyBAQCBib29sIFRQYXJzZUNv
bnRleHQ6OmludGVnZXJFcnJvckNoZWNrKFRJCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3
YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpnbG9iYWxFcnJvckNoZWNrKGlu
dCBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pCitib29sIFRQYXJzZUNvbnRl
eHQ6Omdsb2JhbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgYm9vbCBnbG9iYWws
IGNvbnN0IGNoYXIqIHRva2VuKQogewogICAgIGlmIChnbG9iYWwpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTQyOCw3ICs0MjksNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVycm9y
Q2hlY2soaW50CiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8v
Ci1ib29sIFRQYXJzZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3Qg
VFN0cmluZyYgaWRlbnRpZmllcikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCiB7
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc2VydmVkRXJyTXNnID0gInJlc2VydmVkIGJ1aWx0
LWluIG5hbWUiOwogICAgIGlmICghc3ltYm9sVGFibGUuYXRCdWlsdEluTGV2ZWwoKSkgewpAQCAt
NDY2LDcgKzQ2Nyw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNrKGkK
IC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGluIGNvbnN0cnVjdGlv
bi4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQgbGlu
ZSwgVEludGVybU5vZGUqIG5vZGUsIFRGdW5jdGlvbiYgZnVuY3Rpb24sIFRPcGVyYXRvciBvcCwg
VFR5cGUqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogbm9kZSwgVEZ1bmN0aW9uJiBmdW5j
dGlvbiwgVE9wZXJhdG9yIG9wLCBUVHlwZSogdHlwZSkKIHsKICAgICAqdHlwZSA9IGZ1bmN0aW9u
LmdldFJldHVyblR5cGUoKTsKIApAQCAtNDg3LDcgKzQ4OCw3IEBAIGJvb2wgVFBhcnNlQ29udGV4
dDo6Y29uc3RydWN0b3JFcnJvckNoZWMKICAgICAvLyBhZ2FpbiwgdGhlcmUgaXMgYW4gZXh0cmEg
YXJndW1lbnQsIHNvICdvdmVyZnVsbCcgd2lsbCBiZWNvbWUgdHJ1ZS4KICAgICAvLwogCi0gICAg
aW50IHNpemUgPSAwOworICAgIHNpemVfdCBzaXplID0gMDsKICAgICBib29sIGNvbnN0VHlwZSA9
IHRydWU7CiAgICAgYm9vbCBmdWxsID0gZmFsc2U7CiAgICAgYm9vbCBvdmVyRnVsbCA9IGZhbHNl
OwpAQCAtNTM0LDcgKzUzNSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJv
ckNoZWMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGlmIChvcCA9PSBF
T3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXkoKSAmJiBpbnQodHlwZS0+Z2V0U3Ry
dWN0KCktPnNpemUoKSkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSB7CisgICAgaWYgKG9w
ID09IEVPcENvbnN0cnVjdFN0cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgpICYmIGludCh0eXBlLT5n
ZXRTdHJ1Y3QoKS0+ZmllbGRzKCkuc2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkp
IHsKICAgICAgICAgZXJyb3IobGluZSwgIk51bWJlciBvZiBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJz
IGRvZXMgbm90IG1hdGNoIHRoZSBudW1iZXIgb2Ygc3RydWN0dXJlIGZpZWxkcyIsICJjb25zdHJ1
Y3RvciIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC01NjgsNyArNTY5LDcgQEAg
Ym9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlYwogLy8KIC8vIHJldHVybnMg
dHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojp2b2lkRXJy
b3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgVFB1Ymxp
Y1R5cGUmIHB1YlR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFRQdWJs
aWNUeXBlJiBwdWJUeXBlKQogewogICAgIGlmIChwdWJUeXBlLnR5cGUgPT0gRWJ0Vm9pZCkgewog
ICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCBpZGVudGlm
aWVyLmNfc3RyKCkpOwpAQCAtNTgyLDcgKzU4Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6dm9p
ZEVycm9yQ2hlY2soaW50IGwKIC8vCiAvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBlcnJv
cgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0
IFRJbnRlcm1UeXBlZCogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEludGVybVR5cGVkKiB0eXBlKQogewogICAg
IGlmICh0eXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRCb29sIHx8IHR5cGUtPmlzQXJyYXkoKSB8
fCB0eXBlLT5pc01hdHJpeCgpIHx8IHR5cGUtPmlzVmVjdG9yKCkpIHsKICAgICAgICAgZXJyb3Io
bGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3RlZCIsICIiKTsKQEAgLTU5Niw3ICs1OTcs
NyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGludCBsCiAvLwogLy8gcmV0
dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmJv
b2xFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpCitib29sIFRQ
YXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0
IFRQdWJsaWNUeXBlJiBwVHlwZSkKIHsKICAgICBpZiAocFR5cGUudHlwZSAhPSBFYnRCb29sIHx8
IHBUeXBlLmFycmF5IHx8IHBUeXBlLm1hdHJpeCB8fCAocFR5cGUuc2l6ZSA+IDEpKSB7CiAgICAg
ICAgIGVycm9yKGxpbmUsICJib29sZWFuIGV4cHJlc3Npb24gZXhwZWN0ZWQiLCAiIik7CkBAIC02
MDYsNyArNjA3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhpbnQgbAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJyb3JD
aGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiByZWFz
b24pCitib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciogcmVhc29uKQog
ewogICAgIGlmIChwVHlwZS50eXBlID09IEVidFN0cnVjdCkgewogICAgICAgICBpZiAoY29udGFp
bnNTYW1wbGVyKCpwVHlwZS51c2VyRGVmKSkgewpAQCAtNjI1LDcgKzYyNiw3IEBAIGJvb2wgVFBh
cnNlQ29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2soaW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGluZSwg
Y29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0OjpzdHJ1Y3RRdWFs
aWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBl
JiBwVHlwZSkKIHsKICAgICBpZiAoKHBUeXBlLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwg
cFR5cGUucXVhbGlmaWVyID09IEV2cVZhcnlpbmdPdXQgfHwgcFR5cGUucXVhbGlmaWVyID09IEV2
cUF0dHJpYnV0ZSkgJiYKICAgICAgICAgcFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpIHsKQEAgLTY0
MCw3ICs2NDEsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9yCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBs
ZXJFcnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgY29uc3QgVFR5cGUm
IHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBjb25zdCBUVHlwZSYg
dHlwZSkKIHsKICAgICBpZiAoKHF1YWxpZmllciA9PSBFdnFPdXQgfHwgcXVhbGlmaWVyID09IEV2
cUluT3V0KSAmJiAKICAgICAgICAgICAgICB0eXBlLmdldEJhc2ljVHlwZSgpICE9IEVidFN0cnVj
dCAmJiBJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpIHsKQEAgLTY1Nyw5ICs2NTgsOSBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxlcihUVHlwCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7Ci0g
ICAgICAgIFRUeXBlTGlzdCYgc3RydWN0dXJlID0gKnR5cGUuZ2V0U3RydWN0KCk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3RydWN0dXJlLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpzdHJ1Y3R1cmVbaV0udHlwZSkpCisgICAg
ICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxlcigqZmllbGRzW2ldLT50eXBlKCkp
KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtNjcy
LDcgKzY3Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29udGFpbnNTYW1wbGVyKFRUeXAKIC8v
CiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNl
Q29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVybVR5cGVkKiBleHBy
LCBpbnQmIHNpemUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVycm9yQ2hlY2soY29u
c3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybVR5cGVkKiBleHByLCBpbnQmIHNpemUpCiB7CiAg
ICAgVEludGVybUNvbnN0YW50VW5pb24qIGNvbnN0YW50ID0gZXhwci0+Z2V0QXNDb25zdGFudFVu
aW9uKCk7CiAgICAgaWYgKGNvbnN0YW50ID09IDAgfHwgY29uc3RhbnQtPmdldEJhc2ljVHlwZSgp
ICE9IEVidEludCkgewpAQCAtNjgwLDcgKzY4MSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YXJy
YXlTaXplRXJyb3JDaGVjaygKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc2l6
ZSA9IGNvbnN0YW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAgICBz
aXplID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgIGlmIChzaXplIDw9IDApIHsKICAg
ICAgICAgZXJyb3IobGluZSwgImFycmF5IHNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIi
LCAiIik7CkBAIC02OTYsNyArNjk3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNpemVF
cnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4KIC8v
Ci1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGluZSwg
VFB1YmxpY1R5cGUgdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlRdWFsaWZpZXJFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCiB7CiAgICAg
aWYgKCh0eXBlLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpIHx8ICh0eXBlLnF1YWxpZmllciA9
PSBFdnFDb25zdCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBkZWNsYXJlIGFycmF5
cyBvZiB0aGlzIHF1YWxpZmllciIsIFRUeXBlKHR5cGUpLmdldENvbXBsZXRlU3RyaW5nKCkuY19z
dHIoKSk7CkBAIC03MTEsNyArNzEyLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVF1YWxp
ZmllckVycm9yQwogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4KIC8v
Ci1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soaW50IGxpbmUsIFRQdWJs
aWNUeXBlIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soY29u
c3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKIHsKICAgICAvLwogICAgIC8v
IENhbiB0aGUgdHlwZSBiZSBhbiBhcnJheT8KQEAgLTczMiw3ICs3MzMsNyBAQCBib29sIFRQYXJz
ZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVj
ayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlh
YmxlKiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSB0eXBl
LCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICAvLwogICAgIC8vIERvbid0IGNoZWNrIGZv
ciByZXNlcnZlZCB3b3JkIHVzZSB1bnRpbCBhZnRlciB3ZSBrbm93IGl0J3Mgbm90IGluIHRoZSBz
eW1ib2wgdGFibGUsCkBAIC03NzcsMTYgKzc3OCw2IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YXJy
YXlFcnJvckNoZWNrKGludAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAot
ICAgICAgICBUVHlwZSogdCA9IHZhcmlhYmxlLT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpOwot
ICAgICAgICB3aGlsZSAodCAhPSAwKSB7Ci0gICAgICAgICAgICBpZiAodC0+Z2V0TWF4QXJyYXlT
aXplKCkgPiB0eXBlLmFycmF5U2l6ZSkgewotICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICJo
aWdoZXIgaW5kZXggdmFsdWUgYWxyZWFkeSB1c2VkIGZvciB0aGUgYXJyYXkiLCBpZGVudGlmaWVy
LmNfc3RyKCkpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgdC0+c2V0QXJyYXlTaXplKHR5cGUuYXJyYXlTaXplKTsKLSAgICAgICAgICAg
IHQgPSB0LT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpOwotICAgICAgICB9Ci0KICAgICAgICAg
aWYgKHR5cGUuYXJyYXlTaXplKQogICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRB
cnJheVNpemUodHlwZS5hcnJheVNpemUpOwogICAgIH0gCkBAIC03OTcsNTYgKzc4OCwxMiBAQCBi
b29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayhpbnQKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlTZXRNYXhTaXplKFRJbnRlcm1TeW1ib2wg
Km5vZGUsIFRUeXBlKiB0eXBlLCBpbnQgc2l6ZSwgYm9vbCB1cGRhdGVGbGFnLCBUU291cmNlTG9j
IGxpbmUpCi17Ci0gICAgYm9vbCBidWlsdEluID0gZmFsc2U7Ci0gICAgVFN5bWJvbCogc3ltYm9s
ID0gc3ltYm9sVGFibGUuZmluZChub2RlLT5nZXRTeW1ib2woKSwgJmJ1aWx0SW4pOwotICAgIGlm
IChzeW1ib2wgPT0gMCkgewotICAgICAgICBlcnJvcihsaW5lLCAiIHVuZGVjbGFyZWQgaWRlbnRp
ZmllciIsIG5vZGUtPmdldFN5bWJvbCgpLmNfc3RyKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0gICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+
KHN5bWJvbCk7Ci0KLSAgICB0eXBlLT5zZXRBcnJheUluZm9ybWF0aW9uVHlwZSh2YXJpYWJsZS0+
Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSk7Ci0gICAgdmFyaWFibGUtPnVwZGF0ZUFycmF5SW5m
b3JtYXRpb25UeXBlKHR5cGUpOwotCi0gICAgLy8gc3BlY2lhbCBjYXNpbmcgdG8gdGVzdCBpbmRl
eCB2YWx1ZSBvZiBnbF9GcmFnRGF0YS4gSWYgdGhlIGFjY2Vzc2VkIGluZGV4IGlzID49IGdsX01h
eERyYXdCdWZmZXJzCi0gICAgLy8gaXRzIGFuIGVycm9yCi0gICAgaWYgKG5vZGUtPmdldFN5bWJv
bCgpID09ICJnbF9GcmFnRGF0YSIpIHsKLSAgICAgICAgVFN5bWJvbCogZnJhZ0RhdGEgPSBzeW1i
b2xUYWJsZS5maW5kKCJnbF9NYXhEcmF3QnVmZmVycyIsICZidWlsdEluKTsKLSAgICAgICAgQVNT
RVJUKGZyYWdEYXRhKTsKLQotICAgICAgICBpbnQgZnJhZ0RhdGFWYWx1ZSA9IHN0YXRpY19jYXN0
PFRWYXJpYWJsZSo+KGZyYWdEYXRhKS0+Z2V0Q29uc3RQb2ludGVyKClbMF0uZ2V0SUNvbnN0KCk7
Ci0gICAgICAgIGlmIChmcmFnRGF0YVZhbHVlIDw9IHNpemUpIHsKLSAgICAgICAgICAgIGVycm9y
KGxpbmUsICIiLCAiWyIsICJnbF9GcmFnRGF0YSBjYW4gb25seSBoYXZlIGEgbWF4IGFycmF5IHNp
emUgb2YgdXAgdG8gZ2xfTWF4RHJhd0J1ZmZlcnMiKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gd2UgZG9udCB3YW50IHRvIHVwZGF0ZSB0aGUg
bWF4QXJyYXlTaXplIHdoZW4gdGhpcyBmbGFnIGlzIG5vdCBzZXQsIHdlIGp1c3Qgd2FudCB0byBp
bmNsdWRlIHRoaXMgCi0gICAgLy8gbm9kZSB0eXBlIGluIHRoZSBjaGFpbiBvZiBub2RlIHR5cGVz
IHNvIHRoYXQgaXRzIHVwZGF0ZWQgd2hlbiBhIGhpZ2hlciBtYXhBcnJheVNpemUgY29tZXMgaW4u
Ci0gICAgaWYgKCF1cGRhdGVGbGFnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzaXpl
Kys7Ci0gICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRNYXhBcnJheVNpemUoc2l6ZSk7Ci0gICAg
dHlwZS0+c2V0TWF4QXJyYXlTaXplKHNpemUpOwotICAgIFRUeXBlKiB0dCA9IHR5cGU7Ci0KLSAg
ICB3aGlsZSh0dC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSAhPSAwKSB7Ci0gICAgICAgIHR0
ID0gdHQtPmdldEFycmF5SW5mb3JtYXRpb25UeXBlKCk7Ci0gICAgICAgIHR0LT5zZXRNYXhBcnJh
eVNpemUoc2l6ZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiAvLwogLy8gRW5m
b3JjZSBub24taW5pdGlhbGl6ZXIgdHlwZS9xdWFsaWZpZXIgcnVsZXMuCiAvLwogLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6Om5v
bkluaXRDb25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJs
aWNUeXBlJiB0eXBlLCBib29sIGFycmF5KQorYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29u
c3RFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIs
IFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KQogewogICAgIGlmICh0eXBlLnF1YWxpZmll
ciA9PSBFdnFDb25zdCkKICAgICB7CkBAIC04NzgsNyArODI1LDcgQEAgYm9vbCBUUGFyc2VDb250
ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZQogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3
YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhp
bnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIFRWYXJpYWJs
ZSomIHZhcmlhYmxlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlw
ZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCiB7CiAgICAgaWYgKHJlc2VydmVkRXJyb3JDaGVjayhs
aW5lLCBpZGVudGlmaWVyKSkKICAgICAgICAgcmVjb3ZlcigpOwpAQCAtODk4LDcgKzg0NSw3IEBA
IGJvb2wgVFBhcnNlQ29udGV4dDo6bm9uSW5pdEVycm9yQ2hlY2soaW4KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGludCBsaW5lLCBU
UXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5cGUqIHR5
cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwg
VFR5cGUqIHR5cGUpCiB7ICAgIAogICAgIGlmIChxdWFsaWZpZXIgIT0gRXZxQ29uc3QgJiYgcXVh
bGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgewogICAgICAgICBlcnJvcihsaW5lLCAicXVhbGlmaWVy
IG5vdCBhbGxvd2VkIG9uIGZ1bmN0aW9uIHBhcmFtZXRlciIsIGdldFF1YWxpZmllclN0cmluZyhx
dWFsaWZpZXIpKTsKQEAgLTkxNyw3ICs4NjQsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFt
RXJyb3JDaGVjayhpbnQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4
dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgZXh0ZW5zaW9u
KQorYm9vbCBUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICBjb25zdCBURXh0ZW5z
aW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZpb3IoKTsKICAgICBURXh0
ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBleHRCZWhhdmlvci5maW5kKGV4
dGVuc2lvbi5jX3N0cigpKTsKQEAgLTk0NSwyMCArODkyLDYgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjpzdXBwb3J0c0V4dGVuc2lvbihjbwogICAgIHJldHVybiAoaXRlciAhPSBleHRiZWhhdmlvci5l
bmQoKSk7CiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6aGFuZGxlRXh0ZW5zaW9uRGlyZWN0aXZl
KGludCBsaW5lLCBjb25zdCBjaGFyKiBleHROYW1lLCBjb25zdCBjaGFyKiBiZWhhdmlvcikKLXsK
LSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwotICAgIERlY29kZVNvdXJjZUxvYyhsaW5lLCAm
bG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGlyZWN0aXZlSGFuZGxlci5oYW5kbGVFeHRlbnNp
b24obG9jLCBleHROYW1lLCBiZWhhdmlvcik7Ci19Ci0KLXZvaWQgVFBhcnNlQ29udGV4dDo6aGFu
ZGxlUHJhZ21hRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFy
KiB2YWx1ZSkKLXsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwotICAgIERlY29kZVNvdXJj
ZUxvYyhsaW5lLCAmbG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGlyZWN0aXZlSGFuZGxlci5o
YW5kbGVQcmFnbWEobG9jLCBuYW1lLCB2YWx1ZSk7Ci19Ci0KIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwogLy8KIC8vIE5vbi1FcnJvcnMuCkBAIC05NzAsNyArOTAzLDcgQEAgdm9pZCBUUGFyc2VD
b250ZXh0OjpoYW5kbGVQcmFnbWFEaXJlY3RpdgogLy8KIC8vIFJldHVybiB0aGUgZnVuY3Rpb24g
c3ltYm9sIGlmIGZvdW5kLCBvdGhlcndpc2UgMC4KIC8vCi1jb25zdCBURnVuY3Rpb24qIFRQYXJz
ZUNvbnRleHQ6OmZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBib29sICpi
dWlsdEluKQorY29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuY3Rpb24oY29u
c3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBib29sICpidWlsdEluKQogewog
ICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hldGhlciB0aGUg
ZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgogICAgIC8vIGhpZGRlbiBieSBhIHZhcmlhYmxlIG5hbWUg
b3Igc3RydWN0IHR5cGVuYW1lLgpAQCAtOTkyLDExICs5MjUsMzIgQEAgY29uc3QgVEZ1bmN0aW9u
KiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuYwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBU
RnVuY3Rpb24qPihzeW1ib2wpOwogfQogCitib29sIFRQYXJzZUNvbnRleHQ6OmlzVmFyaWFibGVC
dWlsdEluKGNvbnN0IFRWYXJpYWJsZSogdmFyKQoreworICAgIGJvb2wgYnVpbHRJbiA9IGZhbHNl
OworICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hldGhlciB0
aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgorICAgIC8vIGhpZGRlbiBieSBhIHZhcmlhYmxlIG5h
bWUgb3Igc3RydWN0IHR5cGVuYW1lLgorICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9IHN5bWJv
bFRhYmxlLmZpbmQodmFyLT5nZXROYW1lKCksICZidWlsdEluKTsKKyAgICBpZiAoc3ltYm9sID09
IDApIHsKKyAgICAgICAgc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZCh2YXItPmdldE1hbmdsZWRO
YW1lKCksICZidWlsdEluKTsKKyAgICB9CisKKyAgICBpZiAoc3ltYm9sID09IDApIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghc3ltYm9sLT5pc1ZhcmlhYmxlKCkp
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBidWlsdEluOwor
fQorCiAvLwogLy8gSW5pdGlhbGl6ZXJzIHNob3cgdXAgaW4gc2V2ZXJhbCBwbGFjZXMgaW4gdGhl
IGdyYW1tYXIuICBIYXZlIG9uZSBzZXQgb2YKIC8vIGNvZGUgdG8gaGFuZGxlIHRoZW0gaGVyZS4K
IC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihUU291cmNlTG9jIGxp
bmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlwZSwgCitib29sIFRQYXJz
ZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3Ry
aW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbml0aWFsaXplciwgVEludGVybU5v
ZGUqJiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUqIHZhcmlhYmxlKQogewogICAgIFRUeXBlIHR5cGUg
PSBUVHlwZShwVHlwZSk7CkBAIC0xMDQ4LDEzICsxMDAyLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjpleGVjdXRlSW5pdGlhbGl6ZXIoVAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgeyAKLSAg
ICAgICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29uc3RQ
b2ludGVyKCk7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlLmdldE9iamVjdFNpemUoKSA9PSAxICYm
IHR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgICAgICAgICAgKnVu
aW9uQXJyYXkgPSAoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpKVswXTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
dmFyaWFibGUtPnNoYXJlQ29uc3RQb2ludGVyKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5p
b24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg
ICB2YXJpYWJsZS0+c2hhcmVDb25zdFBvaW50ZXIoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRV
bmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKTsKICAgICAgICAgfSBlbHNlIGlmIChpbml0
aWFsaXplci0+Z2V0QXNTeW1ib2xOb2RlKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2wq
IHN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQoaW5pdGlhbGl6ZXItPmdldEFzU3ltYm9sTm9kZSgp
LT5nZXRTeW1ib2woKSk7CiAgICAgICAgICAgICBjb25zdCBUVmFyaWFibGUqIHRWYXIgPSBzdGF0
aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOwpAQCAtMTEwOCwxNiArMTA1NiwxNiBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QoVEluCiAvLwogLy8gUmV0dXJu
cyAwIGZvciBhbiBlcnJvciBvciB0aGUgY29uc3RydWN0ZWQgbm9kZSAoYWdncmVnYXRlIG9yIHR5
cGVkKSBmb3Igbm8gZXJyb3IuCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRD
b25zdHJ1Y3RvcihUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRv
ciBvcCwgVEZ1bmN0aW9uKiBmbkNhbGwsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRU
eXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRGdW5jdGlvbiogZm5DYWxsLCBjb25zdCBUU291cmNl
TG9jJiBsaW5lKQogewogICAgIGlmIChub2RlID09IDApCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgVEludGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOwog
ICAgIAotICAgIFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyVHlwZXM7CisgICAgVEZp
ZWxkTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyRmllbGRzOwogICAgIGlmIChvcCA9PSBFT3BD
b25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgIG1lbWJlclR5cGVzID0gdHlwZS0+Z2V0U3RydWN0KCkt
PmJlZ2luKCk7CisgICAgICAgIG1lbWJlckZpZWxkcyA9IHR5cGUtPmdldFN0cnVjdCgpLT5maWVs
ZHMoKS5iZWdpbigpOwogICAgIAogICAgIFRUeXBlIGVsZW1lbnRUeXBlID0gKnR5cGU7CiAgICAg
aWYgKHR5cGUtPmlzQXJyYXkoKSkKQEAgLTExMzksNyArMTA4Nyw3IEBAIFRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkK
ICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgJmVsZW1lbnRUeXBl
LCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKICAgICAgICAgZWxzZSBpZiAob3AgPT0gRU9w
Q29uc3RydWN0U3RydWN0KQotICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdChu
b2RlLCAoKm1lbWJlclR5cGVzKS50eXBlLCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKKyAg
ICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgKCptZW1iZXJGaWVsZHMp
LT50eXBlKCksIDEsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBvcCwgbm9kZSwgbm9kZS0+
Z2V0TGluZSgpLCBmYWxzZSk7CiAKQEAgLTExNzAsNyArMTExOCw3IEBAIFRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkK
ICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsICZlbGVtZW50VHlwZSwg
cGFyYW1Db3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRydWUpOwogICAgICAgICBlbHNlIGlmIChv
cCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0
U3RydWN0KCpwLCAobWVtYmVyVHlwZXNbcGFyYW1Db3VudF0pLnR5cGUsIHBhcmFtQ291bnQrMSwg
bm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RT
dHJ1Y3QoKnAsIG1lbWJlckZpZWxkc1twYXJhbUNvdW50XS0+dHlwZSgpLCBwYXJhbUNvdW50KzEs
IG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5ld05v
ZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCAqcCwgbm9kZS0+Z2V0TGluZSgpLCB0cnVl
KTsKICAgICAgICAgCkBAIC0xMjE2LDcgKzExNjQsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNv
bnRleHQ6OmZvbGRDb25zdENvCiAvLwogLy8gUmV0dXJucyAwIGZvciBhbiBlcnJvciBvciB0aGUg
Y29uc3RydWN0ZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0
cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUq
IG5vZGUsIFRTb3VyY2VMb2MgbGluZSwgYm9vbCBzdWJzZXQpCitUSW50ZXJtVHlwZWQqIFRQYXJz
ZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBv
cCwgVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0
KQogewogICAgIFRJbnRlcm1UeXBlZCogbmV3Tm9kZTsKICAgICBUT3BlcmF0b3IgYmFzaWNPcDsK
QEAgLTEyNzgsNyArMTIyNiw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3Ry
dWN0QnUKIC8vCiAvLyBSZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9yIHRoZSBpbnB1dCBub2RlIGl0
c2VsZiBpZiB0aGUgZXhwZWN0ZWQgYW5kIHRoZSBnaXZlbiBwYXJhbWV0ZXIgdHlwZXMgbWF0Y2gu
CiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QoVEludGVy
bU5vZGUqIG5vZGUsIFRUeXBlKiB0eXBlLCBpbnQgcGFyYW1Db3VudCwgVFNvdXJjZUxvYyBsaW5l
LCBib29sIHN1YnNldCkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0U3Ry
dWN0KFRJbnRlcm1Ob2RlKiBub2RlLCBUVHlwZSogdHlwZSwgaW50IHBhcmFtQ291bnQsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQogewogICAgIGlmICgqdHlwZSA9PSBub2Rl
LT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKSkgewogICAgICAgICBpZiAoc3Vic2V0KQpAQCAtMTMw
NSw3ICsxMjUzLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdAog
Ly8gbm9kZSBvciBpdCBjb3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRyZWUgcmVwcmVzZW50YXRp
b24gb2YgYWNjZXNzaW5nIGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVjdHVyZSBvciBjb2x1bW4g
b2YgCiAvLyBhIGNvbnN0YW50IG1hdHJpeC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRl
eHQ6OmFkZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIFRJbnRlcm1UeXBl
ZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojph
ZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBUSW50ZXJtVHlwZWQqIG5v
ZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0eXBlZE5v
ZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5n
ZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTEzMTMsNyArMTI2MSw2IEBAIFRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
OwogICAgIGlmICh0ZW1wQ29uc3RhbnROb2RlKSB7CiAgICAgICAgIHVuaW9uQXJyYXkgPSB0ZW1w
Q29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAgICAgICBBU1NFUlQodW5p
b25BcnJheSk7CiAKICAgICAgICAgaWYgKCF1bmlvbkFycmF5KSB7CiAgICAgICAgICAgICByZXR1
cm4gbm9kZTsKQEAgLTEzMjgsNyArMTI3NSw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4
dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gbmV3IENvbnN0
YW50VW5pb25bZmllbGRzLm51bV07CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpZWxkcy5u
dW07IGkrKykgewotICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0gPj0gbm9kZS0+Z2V0VHlw
ZSgpLmdldE9iamVjdFNpemUoKSkgeworICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0gPj0g
bm9kZS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkpIHsKICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8
PCAidmVjdG9yIGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgZmllbGRzLm9mZnNl
dHNbaV0gPDwgIiciOwogICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJ
bmZvU3RyZWFtLnN0cigpOwpAQCAtMTM1MCw3ICsxMjk3LDcgQEAgVEludGVybVR5cGVkKiBUUGFy
c2VDb250ZXh0OjphZGRDb25zdFZlYwogLy8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBi
ZSBhIHN5bWJvbCBub2RlIChtWzBdIHdoZXJlIG0gaXMgYSBjb25zdGFudCBtYXRyaXgpdGhhdCBy
ZXByZXNlbnRzIGEgCiAvLyBjb25zdGFudCBtYXRyaXggb3IgaXQgY291bGQgYmUgdGhlIHRyZWUg
cmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnN0YW50IG1hdHJpeCAocy5tMVswXSB3aGVyZSBzIGlz
IGEgY29uc3RhbnQgc3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
YWRkQ29uc3RNYXRyaXhOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBUU291cmNl
TG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9k
ZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkK
IHsKICAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZTsKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlv
biogdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwpAQCAtMTM4
NSw3ICsxMzMyLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdE1hdAog
Ly8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChhWzBdIHdo
ZXJlIGEgaXMgYSBjb25zdGFudCBhcnJheSl0aGF0IHJlcHJlc2VudHMgYSAKIC8vIGNvbnN0YW50
IGFycmF5IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25z
dGFudCBhcnJheSAocy5hMVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQogLy8K
LVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4
LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVFBh
cnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5v
ZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0eXBlZE5v
ZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5n
ZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTE0MDEsOSArMTM0OCw4IEBAIFRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnIKICAgICAgICAgaW5kZXggPSAwOwogICAgIH0KIAot
ICAgIGludCBhcnJheUVsZW1lbnRTaXplID0gYXJyYXlFbGVtZW50VHlwZS5nZXRPYmplY3RTaXpl
KCk7Ci0KICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgeworICAgICAgICAgc2l6ZV90IGFycmF5
RWxlbWVudFNpemUgPSBhcnJheUVsZW1lbnRUeXBlLmdldE9iamVjdFNpemUoKTsKICAgICAgICAg
IENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpOwogICAgICAgICAgdHlwZWROb2RlID0gaW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24oJnVuaW9uQXJyYXlbYXJyYXlFbGVtZW50U2l6ZSAqIGluZGV4XSwgdGVtcENvbnN0
YW50Tm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsKICAgICB9IGVsc2UgewpAQCAtMTQyMiwyMiArMTM2
OCwyMSBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0QXJyCiAvLyBJZiB0
aGVyZSBpcyBhbiBlbWJlZGRlZC9uZXN0ZWQgc3RydWN0LCBpdCBhcHByb3ByaWF0ZWx5IGNhbGxz
IGFkZENvbnN0U3RydWN0TmVzdGVkIG9yIGFkZENvbnN0U3RydWN0RnJvbUFnZ3IKIC8vIGZ1bmN0
aW9uIGFuZCByZXR1cm5zIHRoZSBwYXJzZS10cmVlIHdpdGggdGhlIHZhbHVlcyBvZiB0aGUgZW1i
ZWRkZWQvbmVzdGVkIHN0cnVjdC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFk
ZENvbnN0U3RydWN0KFRTdHJpbmcmIGlkZW50aWZpZXIsIFRJbnRlcm1UeXBlZCogbm9kZSwgVFNv
dXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVj
dChUU3RyaW5nJiBpZGVudGlmaWVyLCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUpCiB7Ci0gICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSBub2RlLT5nZXRUeXBl
KCkuZ2V0U3RydWN0KCk7Ci0gICAgVEludGVybVR5cGVkICp0eXBlZE5vZGU7Ci0gICAgaW50IGlu
c3RhbmNlU2l6ZSA9IDA7Ci0gICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKLSAgICBUSW50ZXJt
Q29uc3RhbnRVbmlvbiAqdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlv
bigpOworICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IG5vZGUtPmdldFR5cGUoKS5nZXRT
dHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICBmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgZmllbGRz
LT5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKCgqZmllbGRzKVtpbmRleF0udHlwZS0+
Z2V0RmllbGROYW1lKCkgPT0gaWRlbnRpZmllcikgeworICAgIHNpemVfdCBpbnN0YW5jZVNpemUg
PSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZHMuc2l6ZSgpOyAr
K2luZGV4KSB7CisgICAgICAgIGlmIChmaWVsZHNbaW5kZXhdLT5uYW1lKCkgPT0gaWRlbnRpZmll
cikgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBp
bnN0YW5jZVNpemUgKz0gKCpmaWVsZHMpW2luZGV4XS50eXBlLT5nZXRPYmplY3RTaXplKCk7Cisg
ICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0gZmllbGRzW2luZGV4XS0+dHlwZSgpLT5nZXRPYmpl
Y3RTaXplKCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9k
ZSA9IDA7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2Rl
LT5nZXRBc0NvbnN0YW50VW5pb24oKTsKICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgewogICAg
ICAgICAgQ29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHRlbXBDb25zdGFudE5vZGUtPmdldFVu
aW9uQXJyYXlQb2ludGVyKCk7CiAKQEAgLTE0NTIsNyArMTM5Nyw3IEBAIFRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RTdHIKICAgICByZXR1cm4gdHlwZWROb2RlOwogfQogCi1i
b29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24oaW50IGxpbmUsIGNvbnN0
IFRTdHJpbmcmIGlkZW50aWZpZXIpCitib29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVj
bGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmll
cikKIHsKICAgICArK3N0cnVjdE5lc3RpbmdMZXZlbDsKIApAQCAtMTQ3OCwyMSArMTQyMywyMSBA
QCBjb25zdCBpbnQga1dlYkdMTWF4U3RydWN0TmVzdGluZyA9IDQ7CiAKIH0gIC8vIG5hbWVzcGFj
ZQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKFRTb3VyY2VM
b2MgbGluZSwgY29uc3QgVFR5cGUmIGZpZWxkVHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6c3Ry
dWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEZpZWxk
JiBmaWVsZCkKIHsKICAgICBpZiAoIWlzV2ViR0xCYXNlZFNwZWMoc2hhZGVyU3BlYykpIHsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChmaWVsZFR5cGUuZ2V0QmFzaWNU
eXBlKCkgIT0gRWJ0U3RydWN0KSB7CisgICAgaWYgKGZpZWxkLnR5cGUoKS0+Z2V0QmFzaWNUeXBl
KCkgIT0gRWJ0U3RydWN0KSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAv
LyBXZSdyZSBhbHJlYWR5IGluc2lkZSBhIHN0cnVjdHVyZSBkZWZpbml0aW9uIGF0IHRoaXMgcG9p
bnQsIHNvIGFkZAogICAgIC8vIG9uZSB0byB0aGUgZmllbGQncyBzdHJ1Y3QgbmVzdGluZy4KLSAg
ICBpZiAoMSArIGZpZWxkVHlwZS5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpID4ga1dlYkdMTWF4
U3RydWN0TmVzdGluZykgeworICAgIGlmICgxICsgZmllbGQudHlwZSgpLT5nZXREZWVwZXN0U3Ry
dWN0TmVzdGluZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgewogICAgICAgICBzdGQ6OnN0
cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAi
UmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGRUeXBlLmdldFR5cGVOYW1lKCkgCisg
ICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwg
ZmllbGQubmFtZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGV4Y2VlZHMgbWF4aW11
bSBzdHJ1Y3QgbmVzdGluZyBvZiAiIDw8IGtXZWJHTE1heFN0cnVjdE5lc3Rpbmc7CiAgICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKICAgICAgICAg
ZXJyb3IobGluZSwgIiIsICIiLCBleHRyYUluZm8uY19zdHIoKSk7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAkocmV2aXNp
b24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNl
SGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMyw4IEBAIHN0cnVjdCBUUGFyc2VD
b250ZXh0IHsKICAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zKG9wdGlvbnMpLAogICAgICAgICAg
ICAgc291cmNlUGF0aChzb3VyY2VQYXRoKSwKICAgICAgICAgICAgIHRyZWVSb290KDApLAotICAg
ICAgICAgICAgbGV4QWZ0ZXJUeXBlKGZhbHNlKSwKICAgICAgICAgICAgIGxvb3BOZXN0aW5nTGV2
ZWwoMCksCiAgICAgICAgICAgICBzdHJ1Y3ROZXN0aW5nTGV2ZWwoMCksCi0gICAgICAgICAgICBp
blR5cGVQYXJlbihmYWxzZSksCiAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb25UeXBlKE5VTEwp
LAogICAgICAgICAgICAgZnVuY3Rpb25SZXR1cm5zVmFsdWUoZmFsc2UpLAogICAgICAgICAgICAg
Y2hlY2tzUHJlY2lzaW9uRXJyb3JzKGNoZWNrc1ByZWNFcnJvcnMpLApAQCAtNTEsMTYgKzQ5LDEz
IEBAIHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKICAgICBpbnQgY29tcGlsZU9wdGlvbnM7CiAgICAg
Y29uc3QgY2hhciogc291cmNlUGF0aDsgICAgICAvLyBQYXRoIG9mIHNvdXJjZSBmaWxlIG9yIE5V
TEwuCiAgICAgVEludGVybU5vZGUqIHRyZWVSb290OyAgICAgICAvLyByb290IG9mIHBhcnNlIHRy
ZWUgYmVpbmcgY3JlYXRlZAotICAgIGJvb2wgbGV4QWZ0ZXJUeXBlOyAgICAgICAgICAgLy8gdHJ1
ZSBpZiB3ZSd2ZSByZWNvZ25pemVkIGEgdHlwZSwgc28gY2FuIG9ubHkgYmUgbG9va2luZyBmb3Ig
YW4gaWRlbnRpZmllcgogICAgIGludCBsb29wTmVzdGluZ0xldmVsOyAgICAgICAgLy8gMCBpZiBv
dXRzaWRlIGFsbCBsb29wcwogICAgIGludCBzdHJ1Y3ROZXN0aW5nTGV2ZWw7ICAgICAgLy8gaW5j
cmVtZW50ZWQgd2hpbGUgcGFyc2luZyBhIHN0cnVjdCBkZWNsYXJhdGlvbgotICAgIGJvb2wgaW5U
eXBlUGFyZW47ICAgICAgICAgICAgLy8gdHJ1ZSBpZiBpbiBwYXJlbnRoZXNlcywgbG9va2luZyBv
bmx5IGZvciBhbiBpZGVudGlmaWVyCiAgICAgY29uc3QgVFR5cGUqIGN1cnJlbnRGdW5jdGlvblR5
cGU7ICAvLyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQncyBjdXJyZW50bHkg
YmVpbmcgcGFyc2VkCiAgICAgYm9vbCBmdW5jdGlvblJldHVybnNWYWx1ZTsgICAvLyB0cnVlIGlm
IGEgbm9uLXZvaWQgZnVuY3Rpb24gaGFzIGEgcmV0dXJuCiAgICAgYm9vbCBjaGVja3NQcmVjaXNp
b25FcnJvcnM7ICAvLyB0cnVlIGlmIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkIHdoZW4gYSB2
YXJpYWJsZSBpcyBkZWNsYXJlZCB3aXRob3V0IHByZWNpc2lvbiwgZXhwbGljaXQgb3IgaW1wbGlj
aXQuCiAgICAgYm9vbCBmcmFnbWVudFByZWNpc2lvbkhpZ2g7ICAvLyB0cnVlIGlmIGhpZ2hwIHBy
ZWNpc2lvbiBpcyBzdXBwb3J0ZWQgaW4gdGhlIGZyYWdtZW50IGxhbmd1YWdlLgogICAgIFRTdHJp
bmcgSGFzaEVyck1zZzsKLSAgICBib29sIEFmdGVyRU9GOwogICAgIFREaWFnbm9zdGljcyBkaWFn
bm9zdGljczsKICAgICBURGlyZWN0aXZlSGFuZGxlciBkaXJlY3RpdmVIYW5kbGVyOwogICAgIHBw
OjpQcmVwcm9jZXNzb3IgcHJlcHJvY2Vzc29yOwpAQCAtNjgsNzEgKzYzLDY4IEBAIHN0cnVjdCBU
UGFyc2VDb250ZXh0IHsKIAogICAgIGludCBudW1FcnJvcnMoKSBjb25zdCB7IHJldHVybiBkaWFn
bm9zdGljcy5udW1FcnJvcnMoKTsgfQogICAgIFRJbmZvU2luayYgaW5mb1NpbmsoKSB7IHJldHVy
biBkaWFnbm9zdGljcy5pbmZvU2luaygpOyB9Ci0gICAgdm9pZCBlcnJvcihUU291cmNlTG9jIGxv
YywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKKyAgICB2b2lkIGVycm9y
KGNvbnN0IFRTb3VyY2VMb2MmIGxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyKiB0
b2tlbiwKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5mbz0iIik7Ci0gICAgdm9p
ZCB3YXJuaW5nKFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIq
IHRva2VuLAorICAgIHZvaWQgd2FybmluZyhjb25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0IGNo
YXIqIHJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCiAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGV4dHJhSW5mbz0iIik7CiAgICAgdm9pZCB0cmFjZShjb25zdCBjaGFyKiBzdHIpOwogICAg
IHZvaWQgcmVjb3ZlcigpOwogCi0gICAgYm9vbCBwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3Ry
aW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBpbnQgbGluZSk7Ci0gICAgYm9vbCBw
YXJzZU1hdHJpeEZpZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IG1hdFNpemUsIFRNYXRyaXhGaWVs
ZHMmLCBpbnQgbGluZSk7CisgICAgYm9vbCBwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3RyaW5n
JiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKTsK
KyAgICBib29sIHBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgbWF0U2l6ZSwg
VE1hdHJpeEZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpOwogCi0gICAgYm9vbCByZXNl
cnZlZEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpOwotICAg
IHZvaWQgYXNzaWduRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQs
IFRTdHJpbmcgcmlnaHQpOwotICAgIHZvaWQgdW5hcnlPcEVycm9yKGludCBsaW5lLCBjb25zdCBj
aGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKTsKLSAgICB2b2lkIGJpbmFyeU9wRXJyb3IoaW50IGxp
bmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOwotICAgIGJv
b2wgcHJlY2lzaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgVFByZWNpc2lvbiBwcmVjaXNpb24sIFRC
YXNpY1R5cGUgdHlwZSk7Ci0gICAgYm9vbCBsVmFsdWVFcnJvckNoZWNrKGludCBsaW5lLCBjb25z
dCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CisgICAgYm9vbCByZXNlcnZlZEVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcik7CisgICAg
dm9pZCBhc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwg
VFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKKyAgICB2b2lkIHVuYXJ5T3BFcnJvcihjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKTsKKyAg
ICB2b2lkIGJpbmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciog
b3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7CisgICAgYm9vbCBwcmVjaXNpb25FcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFz
aWNUeXBlIHR5cGUpOworICAgIGJvb2wgbFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CiAgICAgYm9vbCBjb25zdEVy
cm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlKTsKICAgICBib29sIGludGVnZXJFcnJvckNoZWNr
KFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgY2hhciogdG9rZW4pOwotICAgIGJvb2wgZ2xvYmFs
RXJyb3JDaGVjayhpbnQgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2VuKTsKLSAg
ICBib29sIGNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVybU5vZGUqLCBURnVu
Y3Rpb24mLCBUT3BlcmF0b3IsIFRUeXBlKik7Ci0gICAgYm9vbCBhcnJheVNpemVFcnJvckNoZWNr
KGludCBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7Ci0gICAgYm9vbCBhcnJh
eVF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOwotICAgIGJv
b2wgYXJyYXlUeXBlRXJyb3JDaGVjayhpbnQgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7Ci0gICAg
Ym9vbCBhcnJheUVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJs
aWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKLSAgICBib29sIHZvaWRFcnJvckNo
ZWNrKGludCwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRQdWJsaWNUeXBlJik7Ci0gICAgYm9vbCBi
b29sRXJyb3JDaGVjayhpbnQsIGNvbnN0IFRJbnRlcm1UeXBlZCopOwotICAgIGJvb2wgYm9vbEVy
cm9yQ2hlY2soaW50LCBjb25zdCBUUHVibGljVHlwZSYpOwotICAgIGJvb2wgc2FtcGxlckVycm9y
Q2hlY2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciogcmVh
c29uKTsKLSAgICBib29sIHN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0
IFRQdWJsaWNUeXBlJiBwVHlwZSk7Ci0gICAgYm9vbCBwYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVj
ayhpbnQgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlJiB0eXBlKTsKLSAg
ICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZp
ZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KTsKLSAgICBib29sIG5vbkluaXRFcnJv
ckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSwg
VFZhcmlhYmxlKiYgdmFyaWFibGUpOwotICAgIGJvb2wgcGFyYW1FcnJvckNoZWNrKGludCBsaW5l
LCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5cGUq
IHR5cGUpOwotICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0
cmluZyYpOworICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pOworICAgIGJvb2wgY29uc3RydWN0b3JF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1Ob2RlKiwgVEZ1bmN0aW9u
JiwgVE9wZXJhdG9yLCBUVHlwZSopOworICAgIGJvb2wgYXJyYXlTaXplRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7CisgICAg
Ym9vbCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1
YmxpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBhcnJheVR5cGVFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOworICAgIGJvb2wgYXJyYXlFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
IHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHZvaWRFcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFB1YmxpY1R5cGUmKTsKKyAg
ICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUSW50ZXJtVHlw
ZWQqKTsKKyAgICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBU
UHVibGljVHlwZSYpOworICAgIGJvb2wgc2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiByZWFzb24pOwor
ICAgIGJvb2wgc3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpOworICAgIGJvb2wgcGFyYW1ldGVyU2FtcGxlckVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNv
bnN0IFRUeXBlJiB0eXBlKTsKKyAgICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUs
IGJvb2wgYXJyYXkpOworICAgIGJvb2wgbm9uSW5pdEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIFRWYXJpYWJs
ZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwg
VFR5cGUqIHR5cGUpOworICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJik7CiAKKyAgICBjb25zdCBUUHJhZ21hJiBwcmFnbWEo
KSBjb25zdCB7IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLnByYWdtYSgpOyB9CiAgICAgY29uc3Qg
VEV4dGVuc2lvbkJlaGF2aW9yJiBleHRlbnNpb25CZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIGRp
cmVjdGl2ZUhhbmRsZXIuZXh0ZW5zaW9uQmVoYXZpb3IoKTsgfQogICAgIGJvb2wgc3VwcG9ydHNF
eHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9uKTsKLSAgICB2b2lkIGhhbmRsZUV4dGVuc2lv
bkRpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogZXh0TmFtZSwgY29uc3QgY2hhciogYmVo
YXZpb3IpOwotCi0gICAgY29uc3QgVFByYWdtYSYgcHJhZ21hKCkgY29uc3QgeyByZXR1cm4gZGly
ZWN0aXZlSGFuZGxlci5wcmFnbWEoKTsgfQotICAgIHZvaWQgaGFuZGxlUHJhZ21hRGlyZWN0aXZl
KGludCBsaW5lLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSk7CiAKICAgICBi
b29sIGNvbnRhaW5zU2FtcGxlcihUVHlwZSYgdHlwZSk7CiAgICAgYm9vbCBhcmVBbGxDaGlsZENv
bnN0KFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlKTsKLSAgICBjb25zdCBURnVuY3Rpb24qIGZp
bmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBib29sICpidWlsdEluID0g
MCk7Ci0gICAgYm9vbCBleGVjdXRlSW5pdGlhbGl6ZXIoVFNvdXJjZUxvYyBsaW5lLCBUU3RyaW5n
JiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsCisgICAgY29uc3QgVEZ1bmN0aW9uKiBm
aW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBi
b29sICpidWlsdEluID0gMCk7CisgICAgYm9vbCBpc1ZhcmlhYmxlQnVpbHRJbihjb25zdCBUVmFy
aWFibGUqIHBWYXIpOworICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluaXRpYWxpemVyLCBUSW50ZXJt
Tm9kZSomIGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwKTsKLSAgICBib29sIGFy
cmF5U2V0TWF4U2l6ZShUSW50ZXJtU3ltYm9sKiwgVFR5cGUqLCBpbnQsIGJvb2wsIFRTb3VyY2VM
b2MpOwogCi0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9kZSosIGNv
bnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBURnVuY3Rpb24qLCBUU291cmNlTG9jKTsKKyAgICBUSW50
ZXJtVHlwZWQqIGFkZENvbnN0cnVjdG9yKFRJbnRlcm1Ob2RlKiwgY29uc3QgVFR5cGUqLCBUT3Bl
cmF0b3IsIFRGdW5jdGlvbiosIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAgICBUSW50ZXJtVHlwZWQq
IGZvbGRDb25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlLCBjb25zdCBU
VHlwZSYgdHlwZSk7Ci0gICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RTdHJ1Y3QoVEludGVybU5v
ZGUqLCBUVHlwZSosIGludCwgVFNvdXJjZUxvYywgYm9vbCBzdWJzZXQpOwotICAgIFRJbnRlcm1U
eXBlZCogY29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSosIFRPcGVyYXRvciwgVEludGVybU5v
ZGUqLCBUU291cmNlTG9jLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25z
dFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCosIFRTb3VyY2VMb2MpOwot
ICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhOb2RlKGludCAsIFRJbnRlcm1UeXBlZCos
IFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RBcnJheU5vZGUoaW50IGlu
ZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSk7Ci0gICAgVEludGVybVR5
cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJbnRlcm1UeXBlZCosIFRTb3VyY2VMb2Mp
OworICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiwgVFR5cGUq
LCBpbnQsIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7CisgICAgVEludGVybVR5cGVk
KiBjb25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBUSW50ZXJtTm9kZSos
IGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7CisgICAgVEludGVybVR5cGVkKiBhZGRD
b25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3Vy
Y2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0TWF0cml4Tm9kZShpbnQgLCBUSW50
ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25z
dEFycmF5Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxv
YyYgbGluZSk7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJ
bnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKIAogICAgIC8vIFBlcmZvcm1zIGFuIGVy
cm9yIGNoZWNrIGZvciBlbWJlZGRlZCBzdHJ1Y3QgZGVjbGFyYXRpb25zLgogICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiBhbiBlcnJvciB3YXMgcmFpc2VkIGR1ZSB0byB0aGUgZGVjbGFyYXRpb24gb2YK
ICAgICAvLyB0aGlzIHN0cnVjdC4KLSAgICBib29sIGVudGVyU3RydWN0RGVjbGFyYXRpb24oVFNv
dXJjZUxvYyBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICBib29sIGVudGVy
U3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYg
aWRlbnRpZmllcik7CiAgICAgdm9pZCBleGl0U3RydWN0RGVjbGFyYXRpb24oKTsKIAotICAgIGJv
b2wgc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soVFNvdXJjZUxvYyBsaW5lLCBjb25zdCBUVHlwZSYg
ZmllbGRUeXBlKTsKKyAgICBib29sIHN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQpOwogfTsKIAogaW50IFBhUGFyc2VTdHJp
bmdzKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBs
ZW5ndGhbXSwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29s
QWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9Qb29sQWxsb2MuY3BwCShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4
LDI0ICsyMjgsMjcgQEAgdm9pZCBUUG9vbEFsbG9jYXRvcjo6cG9wQWxsKCkKIAogdm9pZCogVFBv
b2xBbGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBudW1CeXRlcykKIHsKKyAgICAvLworICAgIC8v
IEp1c3Qga2VlcCBzb21lIGludGVyZXN0aW5nIHN0YXRpc3RpY3MuCisgICAgLy8KKyAgICArK251
bUNhbGxzOworICAgIHRvdGFsQnl0ZXMgKz0gbnVtQnl0ZXM7CisKICAgICAvLyBJZiB3ZSBhcmUg
dXNpbmcgZ3VhcmQgYmxvY2tzLCBhbGwgYWxsb2NhdGlvbnMgYXJlIGJyYWNrZXRlZCBieQogICAg
IC8vIHRoZW06IFtndWFyZGJsb2NrXVthbGxvY2F0aW9uXVtndWFyZGJsb2NrXS4gIG51bUJ5dGVz
IGlzIGhvdwogICAgIC8vIG11Y2ggbWVtb3J5IHRoZSBjYWxsZXIgYXNrZWQgZm9yLiAgYWxsb2Nh
dGlvblNpemUgaXMgdGhlIHRvdGFsCiAgICAgLy8gc2l6ZSBpbmNsdWRpbmcgZ3VhcmQgYmxvY2tz
LiAgSW4gcmVsZWFzZSBidWlsZCwKICAgICAvLyBndWFyZEJsb2NrU2l6ZT0wIGFuZCB0aGlzIGFs
bCBnZXRzIG9wdGltaXplZCBhd2F5LgogICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IFRBbGxv
Y2F0aW9uOjphbGxvY2F0aW9uU2l6ZShudW1CeXRlcyk7Ci0gICAgCi0gICAgLy8KLSAgICAvLyBK
dXN0IGtlZXAgc29tZSBpbnRlcmVzdGluZyBzdGF0aXN0aWNzLgotICAgIC8vCi0gICAgKytudW1D
YWxsczsKLSAgICB0b3RhbEJ5dGVzICs9IG51bUJ5dGVzOworICAgIC8vIERldGVjdCBpbnRlZ2Vy
IG92ZXJmbG93LgorICAgIGlmIChhbGxvY2F0aW9uU2l6ZSA8IG51bUJ5dGVzKQorICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIC8vCiAgICAgLy8gRG8gdGhlIGFsbG9jYXRpb24sIG1vc3QgbGlrZWx5
IGNhc2UgZmlyc3QsIGZvciBlZmZpY2llbmN5LgogICAgIC8vIFRoaXMgc3RlcCBjb3VsZCBiZSBt
b3ZlZCB0byBiZSBpbmxpbmUgc29tZXRpbWUuCiAgICAgLy8KLSAgICBpZiAoY3VycmVudFBhZ2VP
ZmZzZXQgKyBhbGxvY2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSkgeworICAgIGlmIChhbGxvY2F0aW9u
U2l6ZSA8PSBwYWdlU2l6ZSAtIGN1cnJlbnRQYWdlT2Zmc2V0KSB7CiAgICAgICAgIC8vCiAgICAg
ICAgIC8vIFNhZmUgdG8gYWxsb2NhdGUgZnJvbSBjdXJyZW50UGFnZU9mZnNldC4KICAgICAgICAg
Ly8KQEAgLTI1NiwxMiArMjU5LDE2IEBAIHZvaWQqIFRQb29sQWxsb2NhdG9yOjphbGxvY2F0ZShz
aXplX3QgbnUKICAgICAgICAgcmV0dXJuIGluaXRpYWxpemVBbGxvY2F0aW9uKGluVXNlTGlzdCwg
bWVtb3J5LCBudW1CeXRlcyk7CiAgICAgfQogCi0gICAgaWYgKGFsbG9jYXRpb25TaXplICsgaGVh
ZGVyU2tpcCA+IHBhZ2VTaXplKSB7CisgICAgaWYgKGFsbG9jYXRpb25TaXplID4gcGFnZVNpemUg
LSBoZWFkZXJTa2lwKSB7CiAgICAgICAgIC8vCiAgICAgICAgIC8vIERvIGEgbXVsdGktcGFnZSBh
bGxvY2F0aW9uLiAgRG9uJ3QgbWl4IHRoZXNlIHdpdGggdGhlIG90aGVycy4KICAgICAgICAgLy8g
VGhlIE9TIGlzIGVmZmljaWVudCBhbmQgYWxsb2NhdGluZyBhbmQgZnJlZS1pbmcgbXVsdGlwbGUg
cGFnZXMuCiAgICAgICAgIC8vCiAgICAgICAgIHNpemVfdCBudW1CeXRlc1RvQWxsb2MgPSBhbGxv
Y2F0aW9uU2l6ZSArIGhlYWRlclNraXA7CisgICAgICAgIC8vIERldGVjdCBpbnRlZ2VyIG92ZXJm
bG93LgorICAgICAgICBpZiAobnVtQnl0ZXNUb0FsbG9jIDwgYWxsb2NhdGlvblNpemUpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKwogICAgICAgICB0SGVhZGVyKiBtZW1vcnkgPSByZWludGVycHJl
dF9jYXN0PHRIZWFkZXIqPig6Om5ldyBjaGFyW251bUJ5dGVzVG9BbGxvY10pOwogICAgICAgICBp
ZiAobWVtb3J5ID09IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCShyZXZpc2lvbiAxNTIz
MjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hIYW5kbGUuaAko
d29ya2luZyBjb3B5KQpAQCAtODEsOCArODEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBJbml0
QnVpbHRJblN5bWJvbFRhYmxlKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKTsK
ICAgICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgZnJvbSB0aGUgcHJldmlvdXMgY29tcGlsYXRpb24u
CiAgICAgdm9pZCBjbGVhclJlc3VsdHMoKTsKLSAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBmdW5jdGlv
biByZWN1cnNpb24gaXMgZGV0ZWN0ZWQuCi0gICAgYm9vbCBkZXRlY3RSZWN1cnNpb24oVEludGVy
bU5vZGUqIHJvb3QpOworICAgIC8vIFJldHVybiB0cnVlIGlmIGZ1bmN0aW9uIHJlY3Vyc2lvbiBp
cyBkZXRlY3RlZCBvciBjYWxsIGRlcHRoIGV4Y2VlZGVkLgorICAgIGJvb2wgZGV0ZWN0Q2FsbERl
cHRoKFRJbnRlcm1Ob2RlKiByb290LCBUSW5mb1NpbmsmIGluZm9TaW5rLCBib29sIGxpbWl0Q2Fs
bFN0YWNrRGVwdGgpOwogICAgIC8vIFJld3JpdGVzIGEgc2hhZGVyJ3MgaW50ZXJtZWRpYXRlIHRy
ZWUgYWNjb3JkaW5nIHRvIHRoZSBDU1MgU2hhZGVycyBzcGVjLgogICAgIHZvaWQgcmV3cml0ZUNT
U1NoYWRlcihUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBn
aXZlbiBzaGFkZXIgZG9lcyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtCkBAIC0xMDQsNiArMTA0LDgg
QEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2hhZGVyIGRvZXMgbm90
IHVzZSBzYW1wbGVyIGRlcGVuZGVudCB2YWx1ZXMgdG8gYWZmZWN0IGNvbnRyb2wgCiAgICAgLy8g
ZmxvdyBvciBpbiBvcGVyYXRpb25zIHdob3NlIHRpbWUgY2FuIGRlcGVuZCBvbiB0aGUgaW5wdXQg
dmFsdWVzLgogICAgIGJvb2wgZW5mb3JjZUZyYWdtZW50U2hhZGVyVGltaW5nUmVzdHJpY3Rpb25z
KGNvbnN0IFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKTsKKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0
aGUgbWF4aW11bSBleHByZXNzaW9uIGNvbXBsZXhpdHkgYmVsb3cgdGhlIGxpbWl0LgorICAgIGJv
b2wgbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8g
R2V0IGJ1aWx0LWluIGV4dGVuc2lvbnMgd2l0aCBkZWZhdWx0IGJlaGF2aW9yLgogICAgIGNvbnN0
IFRFeHRlbnNpb25CZWhhdmlvciYgZ2V0RXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdDsKIApAQCAt
MTE2LDYgKzExOCw4IEBAIHByaXZhdGU6CiAgICAgU2hTaGFkZXJTcGVjIHNoYWRlclNwZWM7CiAK
ICAgICBpbnQgbWF4VW5pZm9ybVZlY3RvcnM7CisgICAgaW50IG1heEV4cHJlc3Npb25Db21wbGV4
aXR5OworICAgIGludCBtYXhDYWxsU3RhY2tEZXB0aDsKIAogICAgIC8vIEJ1aWx0LWluIHN5bWJv
bCB0YWJsZSBmb3IgdGhlIGdpdmVuIGxhbmd1YWdlLCBzcGVjLCBhbmQgcmVzb3VyY2VzLgogICAg
IC8vIEl0IGlzIHByZXNlcnZlZCBmcm9tIGNvbXBpbGUtdG8tY29tcGlsZS4KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAJ
KHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9TaGFkZXJMYW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIHZvaWQg
U2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXMKICAgICByZXNvdXJjZXMtPk9FU19F
R0xfaW1hZ2VfZXh0ZXJuYWwgPSAwOwogICAgIHJlc291cmNlcy0+QVJCX3RleHR1cmVfcmVjdGFu
Z2xlID0gMDsKICAgICByZXNvdXJjZXMtPkVYVF9kcmF3X2J1ZmZlcnMgPSAwOworICAgIHJlc291
cmNlcy0+RVhUX2ZyYWdfZGVwdGggPSAwOwogCiAgICAgLy8gRGlzYWJsZSBoaWdocCBwcmVjaXNp
b24gaW4gZnJhZ21lbnQgc2hhZGVyIGJ5IGRlZmF1bHQuCiAgICAgcmVzb3VyY2VzLT5GcmFnbWVu
dFByZWNpc2lvbkhpZ2ggPSAwOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1N5bWJvbFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lvbiAxNTIzMjMpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNyw0OCArMTcsMzQgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5j
bHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNs
dWRlIDxjbGltaXRzPgogCiBUVHlwZTo6VFR5cGUoY29uc3QgVFB1YmxpY1R5cGUgJnApIDoKLSAg
ICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lzaW9uKHAucHJlY2lzaW9uKSwgcXVhbGlmaWVy
KHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBtYXRyaXgocC5tYXRyaXgpLCBhcnJheShwLmFy
cmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwKLSAgICAgICAgICAgIG1heEFycmF5U2l6ZSgw
KSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVyZSgwKSwgc3RydWN0dXJlU2l6ZSgw
KSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKSwgdHlw
ZU5hbWUoMCkKKyAgICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lzaW9uKHAucHJlY2lzaW9u
KSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBtYXRyaXgocC5tYXRyaXgp
LCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwgc3RydWN0dXJlKDApCiB7
Ci0gICAgaWYgKHAudXNlckRlZikgeworICAgIGlmIChwLnVzZXJEZWYpCiAgICAgICAgIHN0cnVj
dHVyZSA9IHAudXNlckRlZi0+Z2V0U3RydWN0KCk7Ci0gICAgICAgIHR5cGVOYW1lID0gTmV3UG9v
bFRTdHJpbmcocC51c2VyRGVmLT5nZXRUeXBlTmFtZSgpLmNfc3RyKCkpOwotICAgICAgICBjb21w
dXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsKLSAgICB9CiB9CiAKIC8vCiAvLyBSZWN1cnNpdmVs
eSBnZW5lcmF0ZSBtYW5nbGVkIG5hbWVzLgogLy8KLXZvaWQgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5h
bWUoVFN0cmluZyYgbWFuZ2xlZE5hbWUpCitUU3RyaW5nIFRUeXBlOjpidWlsZE1hbmdsZWROYW1l
KCkgY29uc3QKIHsKKyAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAgIGlmIChpc01hdHJpeCgp
KQogICAgICAgICBtYW5nbGVkTmFtZSArPSAnbSc7CiAgICAgZWxzZSBpZiAoaXNWZWN0b3IoKSkK
ICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ3YnOwogCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAg
Y2FzZSBFYnRGbG9hdDogICAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICdmJzsgICAgICBicmVh
azsKLSAgICBjYXNlIEVidEludDogICAgICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ2knOyAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0Qm9vbDogICAgICAgICAgICAgICBtYW5nbGVkTmFtZSAr
PSAnYic7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRTYW1wbGVyMkQ6ICAgICAgICAgIG1hbmds
ZWROYW1lICs9ICJzMiI7ICAgICBicmVhazsKLSAgICBjYXNlIEVidFNhbXBsZXJDdWJlOiAgICAg
ICAgbWFuZ2xlZE5hbWUgKz0gInNDIjsgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0U3RydWN0Ogot
ICAgICAgICBtYW5nbGVkTmFtZSArPSAic3RydWN0LSI7Ci0gICAgICAgIGlmICh0eXBlTmFtZSkK
LSAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICp0eXBlTmFtZTsKLSAgICAgICAgey8vIHN1cHBv
cnQgTVNWQysrNi4wCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHN0
cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAn
LSc7Ci0gICAgICAgICAgICAgICAgKCpzdHJ1Y3R1cmUpW2ldLnR5cGUtPmJ1aWxkTWFuZ2xlZE5h
bWUobWFuZ2xlZE5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRGbG9hdDogICAgICAgbWFuZ2xlZE5hbWUgKz0g
J2YnOyAgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0SW50OiAgICAgICAgIG1hbmdsZWROYW1lICs9
ICdpJzsgICAgICBicmVhazsKKyAgICBjYXNlIEVidEJvb2w6ICAgICAgICBtYW5nbGVkTmFtZSAr
PSAnYic7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRTYW1wbGVyMkQ6ICAgbWFuZ2xlZE5hbWUg
Kz0gInMyIjsgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6IG1hbmdsZWROYW1l
ICs9ICJzQyI7ICAgICBicmVhazsKKyAgICBjYXNlIEVidFN0cnVjdDogICAgICBtYW5nbGVkTmFt
ZSArPSBzdHJ1Y3R1cmUtPm1hbmdsZWROYW1lKCk7IGJyZWFrOworICAgIGRlZmF1bHQ6ICAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIG1hbmdsZWROYW1lICs9IHN0YXRpY19jYXN0PGNo
YXI+KCcwJyArIGdldE5vbWluYWxTaXplKCkpOwpAQCAtNjksNTMgKzU1LDcyIEBAIHZvaWQgVFR5
cGU6OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYgbWEKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0g
YnVmOwogICAgICAgICBtYW5nbGVkTmFtZSArPSAnXSc7CiAgICAgfQorICAgIHJldHVybiBtYW5n
bGVkTmFtZTsKIH0KIAotaW50IFRUeXBlOjpnZXRTdHJ1Y3RTaXplKCkgY29uc3QKK3NpemVfdCBU
VHlwZTo6Z2V0T2JqZWN0U2l6ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFnZXRTdHJ1Y3QoKSkgewot
ICAgICAgICBhc3NlcnQoZmFsc2UgJiYgIk5vdCBhIHN0cnVjdCIpOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9CisgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7CiAKLSAgICBpZiAoc3RydWN0dXJl
U2l6ZSA9PSAwKQotICAgICAgICBmb3IgKFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgdGwgPSBn
ZXRTdHJ1Y3QoKS0+YmVnaW4oKTsgdGwgIT0gZ2V0U3RydWN0KCktPmVuZCgpOyB0bCsrKQotICAg
ICAgICAgICAgc3RydWN0dXJlU2l6ZSArPSAoKCp0bCkudHlwZSktPmdldE9iamVjdFNpemUoKTsK
KyAgICBpZiAoZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQorICAgICAgICB0b3RhbFNpemUg
PSBzdHJ1Y3R1cmUtPm9iamVjdFNpemUoKTsKKyAgICBlbHNlIGlmIChtYXRyaXgpCisgICAgICAg
IHRvdGFsU2l6ZSA9IHNpemUgKiBzaXplOworICAgIGVsc2UKKyAgICAgICAgdG90YWxTaXplID0g
c2l6ZTsKKworICAgIGlmIChpc0FycmF5KCkpIHsKKyAgICAgICAgc2l6ZV90IGFycmF5U2l6ZSA9
IGdldEFycmF5U2l6ZSgpOworICAgICAgICBpZiAoYXJyYXlTaXplID4gSU5UX01BWCAvIHRvdGFs
U2l6ZSkKKyAgICAgICAgICAgIHRvdGFsU2l6ZSA9IElOVF9NQVg7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRvdGFsU2l6ZSAqPSBhcnJheVNpemU7CisgICAgfQogCi0gICAgcmV0dXJuIHN0
cnVjdHVyZVNpemU7CisgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAotdm9pZCBUVHlwZTo6Y29t
cHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkKK2Jvb2wgVFN0cnVjdHVyZTo6Y29udGFpbnNBcnJh
eXMoKSBjb25zdAogewotICAgIGlmICghZ2V0U3RydWN0KCkpIHsKLSAgICAgICAgcmV0dXJuOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZpZWxkcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqbUZpZWxkcylbaV0tPnR5cGUoKTsKKyAgICAg
ICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJheSgpIHx8IGZpZWxkVHlwZS0+aXNTdHJ1Y3R1cmVDb250
YWluaW5nQXJyYXlzKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQogCi0gICAgaW50IG1heE5lc3RpbmcgPSAwOwotICAgIGZvciAoVFR5cGVM
aXN0Ojpjb25zdF9pdGVyYXRvciB0bCA9IGdldFN0cnVjdCgpLT5iZWdpbigpOyB0bCAhPSBnZXRT
dHJ1Y3QoKS0+ZW5kKCk7ICsrdGwpIHsKLSAgICAgICAgbWF4TmVzdGluZyA9IHN0ZDo6bWF4KG1h
eE5lc3RpbmcsICgoKnRsKS50eXBlKS0+Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSk7CitUU3Ry
aW5nIFRTdHJ1Y3R1cmU6OmJ1aWxkTWFuZ2xlZE5hbWUoKSBjb25zdAoreworICAgIFRTdHJpbmcg
bWFuZ2xlZE5hbWUoInN0cnVjdC0iKTsKKyAgICBtYW5nbGVkTmFtZSArPSAqbU5hbWU7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsraSkgeworICAgICAgICBt
YW5nbGVkTmFtZSArPSAnLSc7CisgICAgICAgIG1hbmdsZWROYW1lICs9ICgqbUZpZWxkcylbaV0t
PnR5cGUoKS0+Z2V0TWFuZ2xlZE5hbWUoKTsKICAgICB9Ci0KLSAgICBkZWVwZXN0U3RydWN0TmVz
dGluZyA9IDEgKyBtYXhOZXN0aW5nOworICAgIHJldHVybiBtYW5nbGVkTmFtZTsKIH0KIAotYm9v
bCBUVHlwZTo6aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkgY29uc3QKK3NpemVfdCBUU3Ry
dWN0dXJlOjpjYWxjdWxhdGVPYmplY3RTaXplKCkgY29uc3QKIHsKLSAgICBpZiAoIXN0cnVjdHVy
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzaXplX3Qgc2l6ZSA9IDA7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsraSkgeworICAgICAg
ICBzaXplX3QgZmllbGRTaXplID0gKCptRmllbGRzKVtpXS0+dHlwZSgpLT5nZXRPYmplY3RTaXpl
KCk7CisgICAgICAgIGlmIChmaWVsZFNpemUgPiBJTlRfTUFYIC0gc2l6ZSkKKyAgICAgICAgICAg
IHNpemUgPSBJTlRfTUFYOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzaXplICs9IGZpZWxk
U2l6ZTsKICAgICB9CisgICAgcmV0dXJuIHNpemU7Cit9CiAKLSAgICBmb3IgKFRUeXBlTGlzdDo6
Y29uc3RfaXRlcmF0b3IgbWVtYmVyID0gc3RydWN0dXJlLT5iZWdpbigpOyBtZW1iZXIgIT0gc3Ry
dWN0dXJlLT5lbmQoKTsgbWVtYmVyKyspCi0gICAgewotICAgICAgICBpZiAobWVtYmVyLT50eXBl
LT5pc0FycmF5KCkgfHwKLSAgICAgICAgICAgIG1lbWJlci0+dHlwZS0+aXNTdHJ1Y3R1cmVDb250
YWluaW5nQXJyYXlzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9CitpbnQgVFN0cnVjdHVyZTo6Y2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBjb25zdAor
eworICAgIGludCBtYXhOZXN0aW5nID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1G
aWVsZHMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIG1heE5lc3RpbmcgPSBzdGQ6Om1heChtYXhO
ZXN0aW5nLCAoKm1GaWVsZHMpW2ldLT50eXBlKCktPmdldERlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkp
OwogICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gMSArIG1heE5lc3Rpbmc7
CiB9CiAKIC8vCkBAIC0xOTYsODQgKzIwMSw4IEBAIHZvaWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJl
bGF0ZVRvT3BlcmF0b3IKIHZvaWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvRXh0ZW5zaW9u
KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFRTdHJpbmcmIGV4dCkKIHsKICAgICBmb3IgKHRMZXZl
bDo6aXRlcmF0b3IgaXQgPSBsZXZlbC5iZWdpbigpOyBpdCAhPSBsZXZlbC5lbmQoKTsgKytpdCkg
ewotICAgICAgICBpZiAoaXQtPnNlY29uZC0+aXNGdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICBU
RnVuY3Rpb24qIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uKj4oaXQtPnNlY29uZCk7
Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSBuYW1lKQotICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uLT5yZWxhdGVUb0V4dGVuc2lvbihleHQpOwotICAgICAgICB9Ci0gICAg
fQotfQotCi1UU3ltYm9sOjpUU3ltYm9sKGNvbnN0IFRTeW1ib2wmIGNvcHlPZikKLXsKLSAgICBu
YW1lID0gTmV3UG9vbFRTdHJpbmcoY29weU9mLm5hbWUtPmNfc3RyKCkpOwotICAgIHVuaXF1ZUlk
ID0gY29weU9mLnVuaXF1ZUlkOwotfQotCi1UVmFyaWFibGU6OlRWYXJpYWJsZShjb25zdCBUVmFy
aWFibGUmIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpIDogVFN5bWJvbChjb3B5T2Yp
Ci17Ci0gICAgdHlwZS5jb3B5VHlwZShjb3B5T2YudHlwZSwgcmVtYXBwZXIpOwotICAgIHVzZXJU
eXBlID0gY29weU9mLnVzZXJUeXBlOwotICAgIC8vIGZvciBidWlsdEluIHN5bWJvbCB0YWJsZSBs
ZXZlbCwgdW5pb25BcnJheSBhbmQgYXJyYXlJbmZvcm1hdGlvbiBwb2ludGVycyBzaG91bGQgYmUg
TlVMTAotICAgIGFzc2VydChjb3B5T2YuYXJyYXlJbmZvcm1hdGlvblR5cGUgPT0gMCk7Ci0gICAg
YXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOwotCi0gICAgaWYgKGNvcHlPZi51bmlvbkFycmF5KSB7
Ci0gICAgICAgIGFzc2VydCghY29weU9mLnR5cGUuZ2V0U3RydWN0KCkpOwotICAgICAgICBhc3Nl
cnQoY29weU9mLnR5cGUuZ2V0T2JqZWN0U2l6ZSgpID09IDEpOwotICAgICAgICB1bmlvbkFycmF5
ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgIHVuaW9uQXJyYXlbMF0gPSBjb3B5T2Yu
dW5pb25BcnJheVswXTsKLSAgICB9IGVsc2UKLSAgICAgICAgdW5pb25BcnJheSA9IDA7Ci19Ci0K
LVRWYXJpYWJsZSogVFZhcmlhYmxlOjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLXsK
LSAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZSgqdGhpcywgcmVtYXBwZXIp
OwotCi0gICAgcmV0dXJuIHZhcmlhYmxlOwotfQotCi1URnVuY3Rpb246OlRGdW5jdGlvbihjb25z
dCBURnVuY3Rpb24mIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpIDogVFN5bWJvbChj
b3B5T2YpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3B5T2YucGFyYW1l
dGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBUUGFyYW1ldGVyIHBhcmFtOwotICAgICAgICBw
YXJhbWV0ZXJzLnB1c2hfYmFjayhwYXJhbSk7Ci0gICAgICAgIHBhcmFtZXRlcnMuYmFjaygpLmNv
cHlQYXJhbShjb3B5T2YucGFyYW1ldGVyc1tpXSwgcmVtYXBwZXIpOwotICAgIH0KLQotICAgIHJl
dHVyblR5cGUuY29weVR5cGUoY29weU9mLnJldHVyblR5cGUsIHJlbWFwcGVyKTsKLSAgICBtYW5n
bGVkTmFtZSA9IGNvcHlPZi5tYW5nbGVkTmFtZTsKLSAgICBvcCA9IGNvcHlPZi5vcDsKLSAgICBk
ZWZpbmVkID0gY29weU9mLmRlZmluZWQ7Ci19Ci0KLVRGdW5jdGlvbiogVEZ1bmN0aW9uOjpjbG9u
ZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLXsKLSAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0g
bmV3IFRGdW5jdGlvbigqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgcmV0dXJuIGZ1bmN0aW9uOwot
fQotCi1UU3ltYm9sVGFibGVMZXZlbCogVFN5bWJvbFRhYmxlTGV2ZWw6OmNsb25lKFRTdHJ1Y3R1
cmVNYXAmIHJlbWFwcGVyKQotewotICAgIFRTeW1ib2xUYWJsZUxldmVsICpzeW1UYWJsZUxldmVs
ID0gbmV3IFRTeW1ib2xUYWJsZUxldmVsKCk7Ci0gICAgdExldmVsOjppdGVyYXRvciBpdGVyOwot
ICAgIGZvciAoaXRlciA9IGxldmVsLmJlZ2luKCk7IGl0ZXIgIT0gbGV2ZWwuZW5kKCk7ICsraXRl
cikgewotICAgICAgICBzeW1UYWJsZUxldmVsLT5pbnNlcnQoKml0ZXItPnNlY29uZC0+Y2xvbmUo
cmVtYXBwZXIpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3ltVGFibGVMZXZlbDsKLX0KLQotdm9p
ZCBUU3ltYm9sVGFibGU6OmNvcHlUYWJsZShjb25zdCBUU3ltYm9sVGFibGUmIGNvcHlPZikKLXsK
LSAgICBUU3RydWN0dXJlTWFwIHJlbWFwcGVyOwotICAgIHVuaXF1ZUlkID0gY29weU9mLnVuaXF1
ZUlkOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29weU9mLnRhYmxlLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIHRhYmxlLnB1c2hfYmFjayhjb3B5T2YudGFibGVbaV0tPmNsb25l
KHJlbWFwcGVyKSk7Ci0gICAgfQotICAgIGZvciggdW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29w
eU9mLnByZWNpc2lvblN0YWNrLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHByZWNpc2lvblN0YWNr
LnB1c2hfYmFjayggY29weU9mLnByZWNpc2lvblN0YWNrW2ldICk7CisgICAgICAgIFRTeW1ib2wq
IHN5bWJvbCA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGlmIChzeW1ib2wtPmdldE5hbWUoKSA9PSBu
YW1lKQorICAgICAgICAgICAgc3ltYm9sLT5yZWxhdGVUb0V4dGVuc2lvbihleHQpOwogICAgIH0K
IH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9T
eW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
NyBAQAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGls
cy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIv
aW50ZXJtZWRpYXRlLmgiCiAKQEAgLTQ5LDEzICs1MCwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgc2V0
VW5pcXVlSWQoaW50IGlkKSB7IHVuaXF1ZUlkID0gaWQ7IH0KICAgICBpbnQgZ2V0VW5pcXVlSWQo
KSBjb25zdCB7IHJldHVybiB1bmlxdWVJZDsgfQotICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZv
U2luayAmaW5mb1NpbmspIGNvbnN0ID0gMDsJCi0gICAgVFN5bWJvbChjb25zdCBUU3ltYm9sJik7
Ci0gICAgdmlydHVhbCBUU3ltYm9sKiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0ID0gMDsK
KyAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBleHRlbnNp
b24gPSBleHQ7IH0KKyAgICBjb25zdCBUU3RyaW5nJiBnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJl
dHVybiBleHRlbnNpb247IH0KKworcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oVFN5bWJvbCk7CiAKLXByb3RlY3RlZDoKICAgICBjb25zdCBUU3RyaW5nICpuYW1lOwogICAg
IHVuc2lnbmVkIGludCB1bmlxdWVJZDsgICAgICAvLyBGb3IgcmVhbCBjb21wYXJpbmcgZHVyaW5n
IGNvZGUgZ2VuZXJhdGlvbgorICAgIFRTdHJpbmcgZXh0ZW5zaW9uOwogfTsKIAogLy8KQEAgLTcw
LDE1ICs3NCwxMyBAQCBwcm90ZWN0ZWQ6CiAvLwogY2xhc3MgVFZhcmlhYmxlIDogcHVibGljIFRT
eW1ib2wgewogcHVibGljOgotICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpuYW1lLCBjb25z
dCBUVHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUpLCB0eXBlKHQpLCB1
c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCksIGFycmF5SW5mb3JtYXRpb25UeXBlKDApIHsgfQor
ICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpuYW1lLCBjb25zdCBUVHlwZSYgdCwgYm9vbCB1
VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUpLCB0eXBlKHQpLCB1c2VyVHlwZSh1VCksIHVuaW9u
QXJyYXkoMCkgeyB9CiAgICAgdmlydHVhbCB+VFZhcmlhYmxlKCkgeyB9CiAgICAgdmlydHVhbCBi
b29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9ICAgIAogICAgIFRUeXBlJiBn
ZXRUeXBlKCkgeyByZXR1cm4gdHlwZTsgfSAgICAKICAgICBjb25zdCBUVHlwZSYgZ2V0VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KICAgICBib29sIGlzVXNlclR5cGUoKSBjb25zdCB7IHJl
dHVybiB1c2VyVHlwZTsgfQogICAgIHZvaWQgc2V0UXVhbGlmaWVyKFRRdWFsaWZpZXIgcXVhbGlm
aWVyKSB7IHR5cGUuc2V0UXVhbGlmaWVyKHF1YWxpZmllcik7IH0KLSAgICB2b2lkIHVwZGF0ZUFy
cmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlICp0KSB7IGFycmF5SW5mb3JtYXRpb25UeXBlID0gdDsg
fQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpIHsgcmV0dXJuIGFycmF5SW5m
b3JtYXRpb25UeXBlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChUSW5mb1NpbmsgJmluZm9T
aW5rKSBjb25zdDsKIApAQCAtMTAwLDE2ICsxMDIsMTUgQEAgcHVibGljOgogICAgICAgICBkZWxl
dGVbXSB1bmlvbkFycmF5OwogICAgICAgICB1bmlvbkFycmF5ID0gY29uc3RBcnJheTsgIAogICAg
IH0KLSAgICBUVmFyaWFibGUoY29uc3QgVFZhcmlhYmxlJiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBw
ZXIpOyAvLyBjb3B5IGNvbnN0cnVjdG9yCi0gICAgdmlydHVhbCBUVmFyaWFibGUqIGNsb25lKFRT
dHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKIAotcHJvdGVjdGVkOgorcHJpdmF0ZToKKyAgICBESVNB
TExPV19DT1BZX0FORF9BU1NJR04oVFZhcmlhYmxlKTsKKwogICAgIFRUeXBlIHR5cGU7CiAgICAg
Ym9vbCB1c2VyVHlwZTsKICAgICAvLyB3ZSBhcmUgYXNzdW1pbmcgdGhhdCBQb29sIEFsbG9jYXRv
ciB3aWxsIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgdG8gdW5pb25BcnJheQogICAgIC8vIHdo
ZW4gdGhpcyBvYmplY3QgaXMgZGVzdHJveWVkCiAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eTsKLSAgICBUVHlwZSAqYXJyYXlJbmZvcm1hdGlvblR5cGU7ICAvLyB0aGlzIGlzIHVzZWQgZm9y
IHVwZGF0aW5nIG1heEFycmF5U2l6ZSBpbiBhbGwgdGhlIHJlZmVyZW5jZXMgdG8gYSBnaXZlbiBz
eW1ib2wKIH07CiAKIC8vCkBAIC0xMTksMTEgKzEyMCw2IEBAIHByb3RlY3RlZDoKIHN0cnVjdCBU
UGFyYW1ldGVyIHsKICAgICBUU3RyaW5nICpuYW1lOwogICAgIFRUeXBlKiB0eXBlOwotICAgIHZv
aWQgY29weVBhcmFtKGNvbnN0IFRQYXJhbWV0ZXImIHBhcmFtLCBUU3RydWN0dXJlTWFwJiByZW1h
cHBlcikKLSAgICB7Ci0gICAgICAgIG5hbWUgPSBOZXdQb29sVFN0cmluZyhwYXJhbS5uYW1lLT5j
X3N0cigpKTsKLSAgICAgICAgdHlwZSA9IHBhcmFtLnR5cGUtPmNsb25lKHJlbWFwcGVyKTsKLSAg
ICB9CiB9OwogCiAvLwpAQCAtMTYzLDkgKzE1OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbGF0
ZVRvT3BlcmF0b3IoVE9wZXJhdG9yIG8pIHsgb3AgPSBvOyB9CiAgICAgVE9wZXJhdG9yIGdldEJ1
aWx0SW5PcCgpIGNvbnN0IHsgcmV0dXJuIG9wOyB9CiAKLSAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5z
aW9uKGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBleHRlbnNpb24gPSBleHQ7IH0KLSAgICBjb25zdCBU
U3RyaW5nJiBnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBleHRlbnNpb247IH0KLQogICAg
IHZvaWQgc2V0RGVmaW5lZCgpIHsgZGVmaW5lZCA9IHRydWU7IH0KICAgICBib29sIGlzRGVmaW5l
ZCgpIHsgcmV0dXJuIGRlZmluZWQ7IH0KIApAQCAtMTczLDE2ICsxNjYsMTUgQEAgcHVibGljOgog
ICAgIGNvbnN0IFRQYXJhbWV0ZXImIGdldFBhcmFtKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBw
YXJhbWV0ZXJzW2ldOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChUSW5mb1NpbmsgJmluZm9T
aW5rKSBjb25zdDsKLSAgICBURnVuY3Rpb24oY29uc3QgVEZ1bmN0aW9uJiwgVFN0cnVjdHVyZU1h
cCYgcmVtYXBwZXIpOwotICAgIHZpcnR1YWwgVEZ1bmN0aW9uKiBjbG9uZShUU3RydWN0dXJlTWFw
JiByZW1hcHBlcik7CiAKLXByb3RlY3RlZDoKK3ByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOKFRGdW5jdGlvbik7CisKICAgICB0eXBlZGVmIFRWZWN0b3I8VFBhcmFtZXRlcj4g
VFBhcmFtTGlzdDsKICAgICBUUGFyYW1MaXN0IHBhcmFtZXRlcnM7CiAgICAgVFR5cGUgcmV0dXJu
VHlwZTsKICAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAgIFRPcGVyYXRvciBvcDsKLSAgICBU
U3RyaW5nIGV4dGVuc2lvbjsKICAgICBib29sIGRlZmluZWQ7CiB9OwogCkBAIC0yMzEsNyArMjIz
LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVsYXRlVG9PcGVyYXRvcihjb25zdCBjaGFyKiBuYW1l
LCBUT3BlcmF0b3Igb3ApOwogICAgIHZvaWQgcmVsYXRlVG9FeHRlbnNpb24oY29uc3QgY2hhciog
bmFtZSwgY29uc3QgVFN0cmluZyYgZXh0KTsKICAgICB2b2lkIGR1bXAoVEluZm9TaW5rICZpbmZv
U2luaykgY29uc3Q7Ci0gICAgVFN5bWJvbFRhYmxlTGV2ZWwqIGNsb25lKFRTdHJ1Y3R1cmVNYXAm
IHJlbWFwcGVyKTsKIAogcHJvdGVjdGVkOgogICAgIHRMZXZlbCBsZXZlbDsKQEAgLTMyMSw3ICsz
MTIsNiBAQCBwdWJsaWM6CiAgICAgfQogICAgIGludCBnZXRNYXhTeW1ib2xJZCgpIHsgcmV0dXJu
IHVuaXF1ZUlkOyB9CiAgICAgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0Owot
ICAgIHZvaWQgY29weVRhYmxlKGNvbnN0IFRTeW1ib2xUYWJsZSYgY29weU9mKTsKIAogICAgIGJv
b2wgc2V0RGVmYXVsdFByZWNpc2lvbiggY29uc3QgVFB1YmxpY1R5cGUmIHR5cGUsIFRQcmVjaXNp
b24gcHJlYyApewogICAgICAgICBpZiAoSXNTYW1wbGVyKHR5cGUudHlwZSkpCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMuaAkocmV2aXNpb24gMTUy
MzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1R5cGVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE0LDE0ICsxNCw3IEBACiBjbGFzcyBUVHlwZTsKIHN0cnVjdCBUUHVi
bGljVHlwZTsKIAotLy8KLS8vIE5lZWQgdG8gaGF2ZSBhc3NvY2lhdGlvbiBvZiBsaW5lIG51bWJl
cnMgdG8gdHlwZXMgaW4gYSBsaXN0IGZvciBidWlsZGluZyBzdHJ1Y3RzLgotLy8KLXN0cnVjdCBU
VHlwZUxpbmUgewotICAgIFRUeXBlKiB0eXBlOwotICAgIGludCBsaW5lOwotfTsKLXR5cGVkZWYg
VFZlY3RvcjxUVHlwZUxpbmU+IFRUeXBlTGlzdDsKK3R5cGVkZWYgVFZlY3RvcjxUVHlwZSo+IFRU
eXBlTGlzdDsKIAogaW5saW5lIFRUeXBlTGlzdCogTmV3UG9vbFRUeXBlTGlzdCgpCiB7CkBAIC0y
OSw5ICsyMiw2IEBAIGlubGluZSBUVHlwZUxpc3QqIE5ld1Bvb2xUVHlwZUxpc3QoKQogICAgIHJl
dHVybiBuZXcobWVtb3J5KSBUVHlwZUxpc3Q7CiB9CiAKLXR5cGVkZWYgVE1hcDxUVHlwZUxpc3Qq
LCBUVHlwZUxpc3QqPiBUU3RydWN0dXJlTWFwOwotdHlwZWRlZiBUTWFwPFRUeXBlTGlzdCosIFRU
eXBlTGlzdCo+OjppdGVyYXRvciBUU3RydWN0dXJlTWFwSXRlcmF0b3I7Ci0KIC8vCiAvLyBCYXNl
IGNsYXNzIGZvciB0aGluZ3MgdGhhdCBoYXZlIGEgdHlwZS4KIC8vCkBAIC00Miw3MCArMzIsMTcg
QEAgcHVibGljOgogICAgIFRUeXBlKCkge30KICAgICBUVHlwZShUQmFzaWNUeXBlIHQsIFRQcmVj
aXNpb24gcCwgVFF1YWxpZmllciBxID0gRXZxVGVtcG9yYXJ5LCBpbnQgcyA9IDEsIGJvb2wgbSA9
IGZhbHNlLCBib29sIGEgPSBmYWxzZSkgOgogICAgICAgICAgICAgdHlwZSh0KSwgcHJlY2lzaW9u
KHApLCBxdWFsaWZpZXIocSksIHNpemUocyksIG1hdHJpeChtKSwgYXJyYXkoYSksIGFycmF5U2l6
ZSgwKSwKLSAgICAgICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUo
MCksIHN0cnVjdHVyZSgwKSwgc3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3Rpbmco
MCksIGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKSwgdHlwZU5hbWUoMCkKKyAgICAgICAgICAgIHN0
cnVjdHVyZSgwKSwgc3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZp
ZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKSwgdHlwZU5hbWUoMCkKICAgICB7CiAgICAgfQogICAgIGV4
cGxpY2l0IFRUeXBlKGNvbnN0IFRQdWJsaWNUeXBlICZwKTsKICAgICBUVHlwZShUVHlwZUxpc3Qq
IHVzZXJEZWYsIGNvbnN0IFRTdHJpbmcmIG4sIFRQcmVjaXNpb24gcCA9IEVicFVuZGVmaW5lZCkg
OgogICAgICAgICAgICAgdHlwZShFYnRTdHJ1Y3QpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihF
dnFUZW1wb3JhcnkpLCBzaXplKDEpLCBtYXRyaXgoZmFsc2UpLCBhcnJheShmYWxzZSksIGFycmF5
U2l6ZSgwKSwKLSAgICAgICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5
cGUoMCksIHN0cnVjdHVyZSh1c2VyRGVmKSwgc3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVj
dE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKQorICAgICAgICAgICAgc3RydWN0
dXJlKHVzZXJEZWYpLCBzdHJ1Y3R1cmVTaXplKDApLCBkZWVwZXN0U3RydWN0TmVzdGluZygwKSwg
ZmllbGROYW1lKDApLCBtYW5nbGVkKDApCiAgICAgewogICAgICAgICB0eXBlTmFtZSA9IE5ld1Bv
b2xUU3RyaW5nKG4uY19zdHIoKSk7CiAgICAgfQogCi0gICAgdm9pZCBjb3B5VHlwZShjb25zdCBU
VHlwZSYgY29weU9mLCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIHR5
cGUgPSBjb3B5T2YudHlwZTsKLSAgICAgICAgcHJlY2lzaW9uID0gY29weU9mLnByZWNpc2lvbjsK
LSAgICAgICAgcXVhbGlmaWVyID0gY29weU9mLnF1YWxpZmllcjsKLSAgICAgICAgc2l6ZSA9IGNv
cHlPZi5zaXplOwotICAgICAgICBtYXRyaXggPSBjb3B5T2YubWF0cml4OwotICAgICAgICBhcnJh
eSA9IGNvcHlPZi5hcnJheTsKLSAgICAgICAgYXJyYXlTaXplID0gY29weU9mLmFycmF5U2l6ZTsK
LQotICAgICAgICBUU3RydWN0dXJlTWFwSXRlcmF0b3IgaXRlcjsKLSAgICAgICAgaWYgKGNvcHlP
Zi5zdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIGlmICgoaXRlciA9IHJlbWFwcGVyLmZpbmQoc3Ry
dWN0dXJlKSkgPT0gcmVtYXBwZXIuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBjcmVhdGUg
dGhlIG5ldyBzdHJ1Y3R1cmUgaGVyZQotICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IE5ld1Bv
b2xUVHlwZUxpc3QoKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IGNvcHlPZi5zdHJ1Y3R1cmUtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxpbmUubGluZSA9
ICgqY29weU9mLnN0cnVjdHVyZSlbaV0ubGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxp
bmUudHlwZSA9ICgqY29weU9mLnN0cnVjdHVyZSlbaV0udHlwZS0+Y2xvbmUocmVtYXBwZXIpOwot
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnB1c2hfYmFjayh0eXBlTGluZSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJ1
Y3R1cmUgPSBpdGVyLT5zZWNvbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgc3RydWN0dXJlID0gMDsKLQotICAgICAgICBmaWVsZE5hbWUgPSAwOwotICAgICAg
ICBpZiAoY29weU9mLmZpZWxkTmFtZSkKLSAgICAgICAgICAgIGZpZWxkTmFtZSA9IE5ld1Bvb2xU
U3RyaW5nKGNvcHlPZi5maWVsZE5hbWUtPmNfc3RyKCkpOwotICAgICAgICB0eXBlTmFtZSA9IDA7
Ci0gICAgICAgIGlmIChjb3B5T2YudHlwZU5hbWUpCi0gICAgICAgICAgICB0eXBlTmFtZSA9IE5l
d1Bvb2xUU3RyaW5nKGNvcHlPZi50eXBlTmFtZS0+Y19zdHIoKSk7Ci0KLSAgICAgICAgbWFuZ2xl
ZCA9IDA7Ci0gICAgICAgIGlmIChjb3B5T2YubWFuZ2xlZCkKLSAgICAgICAgICAgIG1hbmdsZWQg
PSBOZXdQb29sVFN0cmluZyhjb3B5T2YubWFuZ2xlZC0+Y19zdHIoKSk7Ci0KLSAgICAgICAgc3Ry
dWN0dXJlU2l6ZSA9IGNvcHlPZi5zdHJ1Y3R1cmVTaXplOwotICAgICAgICBtYXhBcnJheVNpemUg
PSBjb3B5T2YubWF4QXJyYXlTaXplOwotICAgICAgICBkZWVwZXN0U3RydWN0TmVzdGluZyA9IGNv
cHlPZi5kZWVwZXN0U3RydWN0TmVzdGluZzsKLSAgICAgICAgYXNzZXJ0KGNvcHlPZi5hcnJheUlu
Zm9ybWF0aW9uVHlwZSA9PSAwKTsKLSAgICAgICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOyAv
LyBhcnJheUluZm9ybWF0aW9uVHlwZSBzaG91bGQgbm90IGJlIHNldCBmb3IgYnVpbHRJbiBzeW1i
b2wgdGFibGUgbGV2ZWwKLSAgICB9Ci0KLSAgICBUVHlwZSogY2xvbmUoVFN0cnVjdHVyZU1hcCYg
cmVtYXBwZXIpCi0gICAgewotICAgICAgICBUVHlwZSAqbmV3VHlwZSA9IG5ldyBUVHlwZSgpOwot
ICAgICAgICBuZXdUeXBlLT5jb3B5VHlwZSgqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgICAgIHJl
dHVybiBuZXdUeXBlOwotICAgIH0KLQogICAgIFRCYXNpY1R5cGUgZ2V0QmFzaWNUeXBlKCkgY29u
c3QgeyByZXR1cm4gdHlwZTsgfQogICAgIHZvaWQgc2V0QmFzaWNUeXBlKFRCYXNpY1R5cGUgdCkg
eyB0eXBlID0gdDsgfQogCkBAIC0xMTksMjEgKzU2LDQzIEBAIHB1YmxpYzoKICAgICBpbnQgZ2V0
Tm9taW5hbFNpemUoKSBjb25zdCB7IHJldHVybiBzaXplOyB9CiAgICAgdm9pZCBzZXROb21pbmFs
U2l6ZShpbnQgcykgeyBzaXplID0gczsgfQogICAgIC8vIEZ1bGwgc2l6ZSBvZiBzaW5nbGUgaW5z
dGFuY2Ugb2YgdHlwZQotICAgIGludCBnZXRPYmplY3RTaXplKCkgY29uc3QKKyAgICBzaXplX3Qg
Z2V0T2JqZWN0U2l6ZSgpIGNvbnN0OworCisgICAgaW50IGVsZW1lbnRSZWdpc3RlckNvdW50KCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIGludCB0b3RhbFNpemU7CisgICAgICAgIFRUeXBlTGlzdCAq
c3RydWN0dXJlID0gZ2V0U3RydWN0KCk7CiAKLSAgICAgICAgaWYgKGdldEJhc2ljVHlwZSgpID09
IEVidFN0cnVjdCkKLSAgICAgICAgICAgIHRvdGFsU2l6ZSA9IGdldFN0cnVjdFNpemUoKTsKLSAg
ICAgICAgZWxzZSBpZiAobWF0cml4KQotICAgICAgICAgICAgdG90YWxTaXplID0gc2l6ZSAqIHNp
emU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRvdGFsU2l6ZSA9IHNpemU7CisgICAgICAg
IGlmIChzdHJ1Y3R1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCByZWdpc3RlckNvdW50
ID0gMDsKIAotICAgICAgICBpZiAoaXNBcnJheSgpKQotICAgICAgICAgICAgdG90YWxTaXplICo9
IHN0ZDo6bWF4KGdldEFycmF5U2l6ZSgpLCBnZXRNYXhBcnJheVNpemUoKSk7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyBpKyspCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXJDb3VudCArPSAoKnN0cnVjdHVyZSlbaV0t
PnRvdGFsUmVnaXN0ZXJDb3VudCgpOworICAgICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB0
b3RhbFNpemU7CisgICAgICAgICAgICByZXR1cm4gcmVnaXN0ZXJDb3VudDsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIGlmIChpc01hdHJpeCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZ2V0Tm9taW5hbFNpemUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorCisgICAgaW50IHRvdGFs
UmVnaXN0ZXJDb3VudCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoYXJyYXkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBhcnJheVNpemUgKiBlbGVtZW50UmVnaXN0ZXJDb3VudCgp
OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGVsZW1lbnRSZWdpc3RlckNvdW50KCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIGlz
TWF0cml4KCkgY29uc3QgeyByZXR1cm4gbWF0cml4ID8gdHJ1ZSA6IGZhbHNlOyB9CkBAIC0xNDIs
MTEgKzEwMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQXJyYXkoKSBjb25zdCAgeyByZXR1cm4g
YXJyYXkgPyB0cnVlIDogZmFsc2U7IH0KICAgICBpbnQgZ2V0QXJyYXlTaXplKCkgY29uc3QgeyBy
ZXR1cm4gYXJyYXlTaXplOyB9CiAgICAgdm9pZCBzZXRBcnJheVNpemUoaW50IHMpIHsgYXJyYXkg
PSB0cnVlOyBhcnJheVNpemUgPSBzOyB9Ci0gICAgaW50IGdldE1heEFycmF5U2l6ZSAoKSBjb25z
dCB7IHJldHVybiBtYXhBcnJheVNpemU7IH0KLSAgICB2b2lkIHNldE1heEFycmF5U2l6ZSAoaW50
IHMpIHsgbWF4QXJyYXlTaXplID0gczsgfQotICAgIHZvaWQgY2xlYXJBcnJheW5lc3MoKSB7IGFy
cmF5ID0gZmFsc2U7IGFycmF5U2l6ZSA9IDA7IG1heEFycmF5U2l6ZSA9IDA7IH0KLSAgICB2b2lk
IHNldEFycmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlKiB0KSB7IGFycmF5SW5mb3JtYXRpb25UeXBl
ID0gdDsgfQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIGFycmF5SW5mb3JtYXRpb25UeXBlOyB9CisgICAgdm9pZCBjbGVhckFycmF5bmVzcygpIHsg
YXJyYXkgPSBmYWxzZTsgYXJyYXlTaXplID0gMDsgfQogCiAgICAgYm9vbCBpc1ZlY3RvcigpIGNv
bnN0IHsgcmV0dXJuIHNpemUgPiAxICYmICFtYXRyaXg7IH0KICAgICBib29sIGlzU2NhbGFyKCkg
Y29uc3QgeyByZXR1cm4gc2l6ZSA9PSAxICYmICFtYXRyaXggJiYgIXN0cnVjdHVyZTsgfQpAQCAt
MjM0LDIzICsxODksMjcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1N0cnVjdHVyZUNvbnRhaW5p
bmdBcnJheXMoKSBjb25zdDsKIAotcHJvdGVjdGVkOgorcHJpdmF0ZToKICAgICB2b2lkIGJ1aWxk
TWFuZ2xlZE5hbWUoVFN0cmluZyYpOwotICAgIGludCBnZXRTdHJ1Y3RTaXplKCkgY29uc3Q7Cisg
ICAgc2l6ZV90IGdldFN0cnVjdFNpemUoKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVEZWVwZXN0
U3RydWN0TmVzdGluZygpOwogCisjaWZkZWYgX19HTlVDX18KKyAgICBUQmFzaWNUeXBlIHR5cGUg
ICAgICA7CisgICAgVFByZWNpc2lvbiBwcmVjaXNpb247CisgICAgVFF1YWxpZmllciBxdWFsaWZp
ZXIgOworI2Vsc2UKICAgICBUQmFzaWNUeXBlIHR5cGUgICAgICA6IDY7CiAgICAgVFByZWNpc2lv
biBwcmVjaXNpb247CiAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgOiA3OworI2VuZGlmCiAgICAg
aW50IHNpemUgICAgICAgICAgICAgOiA4OyAvLyBzaXplIG9mIHZlY3RvciBvciBtYXRyaXgsIG5v
dCBzaXplIG9mIGFycmF5CiAgICAgdW5zaWduZWQgaW50IG1hdHJpeCAgOiAxOwogICAgIHVuc2ln
bmVkIGludCBhcnJheSAgIDogMTsKICAgICBpbnQgYXJyYXlTaXplOwotICAgIGludCBtYXhBcnJh
eVNpemU7Ci0gICAgVFR5cGUqIGFycmF5SW5mb3JtYXRpb25UeXBlOwogCiAgICAgVFR5cGVMaXN0
KiBzdHJ1Y3R1cmU7ICAgICAgLy8gMCB1bmxlc3MgdGhpcyBpcyBhIHN0cnVjdAotICAgIG11dGFi
bGUgaW50IHN0cnVjdHVyZVNpemU7CisgICAgbXV0YWJsZSBzaXplX3Qgc3RydWN0dXJlU2l6ZTsK
ICAgICBpbnQgZGVlcGVzdFN0cnVjdE5lc3Rpbmc7CiAKICAgICBUU3RyaW5nICpmaWVsZE5hbWU7
ICAgICAgICAgLy8gZm9yIHN0cnVjdHVyZSBmaWVsZCBuYW1lcwpAQCAtMjc3LDkgKzIzNiw5IEBA
IHN0cnVjdCBUUHVibGljVHlwZQogICAgIGJvb2wgYXJyYXk7CiAgICAgaW50IGFycmF5U2l6ZTsK
ICAgICBUVHlwZSogdXNlckRlZjsKLSAgICBpbnQgbGluZTsKKyAgICBUU291cmNlTG9jIGxpbmU7
CiAKLSAgICB2b2lkIHNldEJhc2ljKFRCYXNpY1R5cGUgYnQsIFRRdWFsaWZpZXIgcSwgaW50IGxu
ID0gMCkKKyAgICB2b2lkIHNldEJhc2ljKFRCYXNpY1R5cGUgYnQsIFRRdWFsaWZpZXIgcSwgY29u
c3QgVFNvdXJjZUxvYyYgbG4pCiAgICAgewogICAgICAgICB0eXBlID0gYnQ7CiAgICAgICAgIHF1
YWxpZmllciA9IHE7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
VmFyaWFibGVJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMSwxMiArMTMxLDEzIEBAIHZvaWQgZ2V0VXNlckRlZmluZWRWYXJpYWJsZUlu
Zm8oY29uc3QgVFQKIHsKICAgICBBU1NFUlQodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1
Y3QpOwogCi0gICAgY29uc3QgVFR5cGVMaXN0KiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkgewot
ICAgICAgICBjb25zdCBUVHlwZSogZmllbGRUeXBlID0gKCpzdHJ1Y3R1cmUpW2ldLnR5cGU7Ci0g
ICAgICAgIGdldFZhcmlhYmxlSW5mbygqZmllbGRUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgbmFtZSArICIuIiArIGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBtYXBwZWROYW1lICsgIi4iICsgVEludGVybVRyYXZlcnNlcjo6aGFzaChmaWVs
ZFR5cGUtPmdldEZpZWxkTmFtZSgpLCBoYXNoRnVuY3Rpb24pLAorICAgIGNvbnN0IFRGaWVsZExp
c3QmIGZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRUeXBlJiBm
aWVsZFR5cGUgPSAqKGZpZWxkc1tpXS0+dHlwZSgpKTsKKyAgICAgICAgY29uc3QgVFN0cmluZyYg
ZmllbGROYW1lID0gZmllbGRzW2ldLT5uYW1lKCk7CisgICAgICAgIGdldFZhcmlhYmxlSW5mbyhm
aWVsZFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lICsgIi4iICsgZmllbGROYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSArICIuIiArIFRJbnRlcm1UcmF2
ZXJzZXI6Omhhc2goZmllbGROYW1lLCBoYXNoRnVuY3Rpb24pLAogICAgICAgICAgICAgICAgICAg
ICAgICAgaW5mb0xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoRnVuY3Rpb24pOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGlu
X3N5bWJvbF90YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyODkgQEAKKy8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX2J1aWx0aW5fc3ltYm9sX3Rh
YmxlLnB5LgorLy8gICAgICAgICAgICAgICAgICogRE8gTk9UIEhBTkQgTU9ESUZZICoKKy8vICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKKyNpbmNsdWRlICJjb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5oIgorI2luY2x1ZGUg
ImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCisKK3N0YXRpYyB2b2lkIGJ1aWx0aW4xKFRTeW1ib2xU
YWJsZSogdCwgVFR5cGUqIHJ2YWx1ZSwgY29uc3QgY2hhciogbmFtZSwgVFR5cGUqIHB0eXBlMSwg
Y29uc3QgY2hhciogcG5hbWUxKQoreworICBURnVuY3Rpb24qIGYgPSBuZXcgVEZ1bmN0aW9uKG5l
dyBUU3RyaW5nKG5hbWUpLCAqcnZhbHVlKTsKKyAgVFBhcmFtZXRlciBwYXJhbSA9IHtuZXcgVFN0
cmluZyhwbmFtZTEpLCBwdHlwZTF9OworICBmLT5hZGRQYXJhbWV0ZXIocGFyYW0pOworICB0LT5p
bnNlcnQoKmYpOworfQorCitzdGF0aWMgdm9pZCBidWlsdGluMihUU3ltYm9sVGFibGUqIHQsIFRU
eXBlKiBydmFsdWUsIGNvbnN0IGNoYXIqIG5hbWUsIFRUeXBlKiBwdHlwZTEsIGNvbnN0IGNoYXIq
IHBuYW1lMSwgVFR5cGUqIHB0eXBlMiwgY29uc3QgY2hhciogcG5hbWUyKQoreworICBURnVuY3Rp
b24qIGYgPSBuZXcgVEZ1bmN0aW9uKG5ldyBUU3RyaW5nKG5hbWUpLCAqcnZhbHVlKTsKKyAgVFBh
cmFtZXRlciBwYXJhbTEgPSB7bmV3IFRTdHJpbmcocG5hbWUxKSwgcHR5cGUxfTsKKyAgZi0+YWRk
UGFyYW1ldGVyKHBhcmFtMSk7CisgIFRQYXJhbWV0ZXIgcGFyYW0yID0ge25ldyBUU3RyaW5nKHBu
YW1lMiksIHB0eXBlMn07CisgIGYtPmFkZFBhcmFtZXRlcihwYXJhbTIpOworICB0LT5pbnNlcnQo
KmYpOworfQorCitzdGF0aWMgdm9pZCBidWlsdGluMyhUU3ltYm9sVGFibGUqIHQsIFRUeXBlKiBy
dmFsdWUsIGNvbnN0IGNoYXIqIG5hbWUsIFRUeXBlKiBwdHlwZTEsIGNvbnN0IGNoYXIqIHBuYW1l
MSwgVFR5cGUqIHB0eXBlMiwgY29uc3QgY2hhciogcG5hbWUyLCBUVHlwZSogcHR5cGUzLCBjb25z
dCBjaGFyKiBwbmFtZTMpCit7CisgIFRGdW5jdGlvbiogZiA9IG5ldyBURnVuY3Rpb24obmV3IFRT
dHJpbmcobmFtZSksICpydmFsdWUpOworICBUUGFyYW1ldGVyIHBhcmFtMSA9IHtuZXcgVFN0cmlu
ZyhwbmFtZTEpLCBwdHlwZTF9OworICBmLT5hZGRQYXJhbWV0ZXIocGFyYW0xKTsKKyAgVFBhcmFt
ZXRlciBwYXJhbTIgPSB7bmV3IFRTdHJpbmcocG5hbWUyKSwgcHR5cGUyfTsKKyAgZi0+YWRkUGFy
YW1ldGVyKHBhcmFtMik7CisgIFRQYXJhbWV0ZXIgcGFyYW0zID0ge25ldyBUU3RyaW5nKHBuYW1l
MyksIHB0eXBlM307CisgIGYtPmFkZFBhcmFtZXRlcihwYXJhbTMpOworICB0LT5pbnNlcnQoKmYp
OworfQorCit2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24oY29uc3QgU2hCdWlsdElu
UmVzb3VyY2VzJiByZXNvdXJjZXMsIFRTeW1ib2xUYWJsZSogdCkgeworICAgIGJ1aWx0aW4xKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJyYWRpYW5zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMiKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAicmFkaWFucyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJkZWdyZWVzIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJh
ZGlhbnMiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAiZGVncmVlcyIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5z
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgImRlZ3JlZXMiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJyYWRpYW5zIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
cmFkaWFucyIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJkZWdyZWVzIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJhZGlh
bnMiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0
aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJzaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAic2luIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInNpbiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJjb3MiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiY29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVp
bHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgImNvcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAidGFuIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInRhbiIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhbmds
ZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBi
dWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAidGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgImFzaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhc2luIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYXNpbiIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7Cisg
ICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgImFzaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJhY29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYWNvcyIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImFjb3MiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOwor
ICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJhY29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAi
YXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYXRh
biIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJ5X292ZXJfeCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhdGFuIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgInlfb3Zlcl94Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImF0YW4iLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieV9v
dmVyX3giKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5X292ZXJfeCIp
OworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJwb3ciLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7Cisg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgInBvdyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBi
dWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAicG93IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJwb3ciLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImV4cCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7Cisg
ICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgImV4cDIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJleHAyIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZXhwMiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgImV4cDIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJsb2cyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibG9nMiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImxvZzIiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJsb2cyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAic3FydCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInNxcnQiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJzcXJ0IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAic3FydCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgImludmVyc2VzcXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
aW52ZXJzZXNxcnQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJpbnZlcnNl
c3FydCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImludmVyc2VzcXJ0Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2lnbiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgInNpZ24iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJzaWduIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAic2lnbiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImZsb29yIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAiZmxvb3IiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJmbG9vciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImZsb29y
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiY2VpbCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNlaWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4x
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJjZWlsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY2Vp
bCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImZyYWN0IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZnJhY3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0
aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJmcmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
ImZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
IngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJtb2QiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm1vZCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
eSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7
CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJtaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgIm1pbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAibWluIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJtaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
Im1pbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWlu
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWF4IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJtYXgiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
InkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIp
OworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7Cisg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBi
dWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAiY2xhbXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAibWF4VmFsIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAibWluVmFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1heFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJj
bGFtcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBi
dWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAiY2xhbXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAibWF4VmFsIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAibWluVmFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1heFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJj
bGFtcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBi
dWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAiY2xhbXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAibWF4VmFsIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgInkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAiYSIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJtaXgiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
eCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgImEiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWl4Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
Im1peCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYSIpOworICAgIGJ1aWx0aW4zKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJtaXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImEiKTsKKyAgICBidWls
dGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAibWl4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJhIik7Cisg
ICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAi
YSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
eCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
eCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
eCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAi
eCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
eCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
eCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAi
eCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic21vb3Ro
c3RlcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJlZGdlMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVp
bHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgInNtb290aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
ImVkZ2UwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMyh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAic21vb3Roc3RlcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJlZGdlMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInNtb290aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAiZWRnZTEiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVw
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
bGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsK
KyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicDEi
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
cDEiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAicDEiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZG90IiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
eSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJkb3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7
CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImRvdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAiZG90IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJjcm9zcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWls
dGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAibm9ybWFsaXplIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibm9y
bWFsaXplIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
TiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZmFj
ZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWls
dGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
Ik5yZWYiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiTiIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVj
dCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgIk4iKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVj
dCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgIk4iKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVj
dCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIk4iKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicmVmbGVj
dCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgIk4iKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicmVmcmFj
dCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgIk4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZXRhIik7CisgICAgYnVpbHRpbjModCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgInJlZnJhY3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiSSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJOIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV0YSIpOworICAg
IGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJyZWZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJldGEiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicmVmcmFjdCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgIk4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAiZXRhIik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgdHJ1ZSwgZmFsc2UpLCAibWF0cml4Q29tcE11
bHQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCB0cnVl
LCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgdHJ1ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIHRydWUsIGZhbHNlKSwgIm1hdHJpeENv
bXBNdWx0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
dHJ1ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIHRydWUsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCB0cnVlLCBmYWxzZSksICJtYXRy
aXhDb21wTXVsdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIHRydWUsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCB0cnVlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
bGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
bGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAi
bGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
bGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsZXNz
VGhhbiIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFu
IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW5FcXVh
bCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhh
bkVxdWFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxl
c3NUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAibGVzc1RoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgImxlc3NUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJsZXNzVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwg
bmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAiZ3JlYXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIo
dCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAiZ3JlYXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVp
bHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWls
dGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJncmVhdGVyVGhhbiIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
eSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW5FcXVhbCIsIG5l
dyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuRXF1YWwi
LCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbkVx
dWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIs
IGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAi
eCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUo
RWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBu
ZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJlcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIp
OworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidElu
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAg
YnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgImVxdWFsIiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJlcXVhbCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAibm90RXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAibm90RXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAibm90RXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAibm90RXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJu
b3RFcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm5vdEVx
dWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwi
LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwg
bmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5l
dyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgIngiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYW55IiwgbmV3IFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIp
OworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFueSIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJhbnkiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYWxsIiwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFsbCIsIG5ldyBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWls
dGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJhbGwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90
IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm5vdCIsIG5ldyBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJub3QiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgInRleHR1cmUyRCIsIG5ldyBUVHlwZShFYnRTYW1wbGVyMkQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRQcm9qIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIy
RCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgImNvb3JkIik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFByb2oiLCBu
ZXcgVFR5cGUoRWJ0U2FtcGxlcjJELCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAgICBidWlsdGluMih0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAidGV4dHVyZUN1YmUiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlckN1YmUsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOwor
ICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCkgeworICAgICAgICBidWls
dGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBm
YWxzZSwgZmFsc2UpLCAidGV4dHVyZTJEIiwgbmV3IFRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9F
UywgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgImNvb3JkIik7CisgICAgfQorICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9l
eHRlcm5hbCkgeworICAgICAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJEUHJvaiIsIG5l
dyBUVHlwZShFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIH0KKyAgICBp
ZiAocmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwpIHsKKyAgICAgICAgYnVpbHRpbjIo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgInRleHR1cmUyRFByb2oiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlckV4dGVybmFsT0VT
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAiY29vcmQiKTsKKyAgICB9CisgICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0
YW5nbGUpIHsKKyAgICAgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFJlY3QiLCBuZXcg
VFR5cGUoRWJ0U2FtcGxlcjJEUmVjdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIik7CisgICAgfQorICAgIGlmIChyZXNv
dXJjZXMuQVJCX3RleHR1cmVfcmVjdGFuZ2xlKSB7CisgICAgICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ0ZXh0dXJlMkRSZWN0UHJvaiIsIG5ldyBUVHlwZShFYnRTYW1wbGVyMkRSZWN0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY29v
cmQiKTsKKyAgICB9CisgICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsK
KyAgICAgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFJlY3RQcm9qIiwgbmV3IFRUeXBl
KEVidFNhbXBsZXIyRFJlY3QsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIH0KK30KKwordm9pZCBJbnNlcnRC
dWlsdEluRnVuY3Rpb25zVmVydGV4KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2Vz
LCBUU3ltYm9sVGFibGUqIHQpIHsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJETG9k
IiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOworICAg
IGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRQcm9qTG9kIiwgbmV3IFRUeXBlKEVidFNhbXBs
ZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVy
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0
ZXh0dXJlMkRQcm9qTG9kIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgImxvZCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlQ3ViZUxvZCIsIG5ldyBU
VHlwZShFYnRTYW1wbGVyQ3ViZSwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOworfQorCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVp
bHRpbl9zeW1ib2xfdGFibGUuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMj
IC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0
aW5fc3ltYm9sX3RhYmxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworI2lmbmRlZiBfQlVJTFRJTl9TWU1CT0xf
VEFCTEVfSU5DTFVERURfCisjZGVmaW5lIF9CVUlMVElOX1NZTUJPTF9UQUJMRV9JTkNMVURFRF8K
KworI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorCitjbGFzcyBUU3ltYm9sVGFibGU7
CisKK2V4dGVybiB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24oY29uc3QgU2hCdWls
dEluUmVzb3VyY2VzJiByZXNvdXJjZXMsIFRTeW1ib2xUYWJsZSogdCk7CitleHRlcm4gdm9pZCBJ
bnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVz
b3VyY2VzLCBUU3ltYm9sVGFibGUqIHQpOworCisjZW5kaWYgLy8gX0JVSUxUSU5fU1lNQk9MX1RB
QkxFX0lOQ0xVREVEXwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmgKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDog
c3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIworKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFu
Zy5sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9n
bHNsYW5nLmwJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9nbHNsYW5nLmwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDEwIEBAIFdI
SUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEgd2FybmluZyhk
aXNhYmxlIDogNDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZhbC0+
bGV4LmxpbmUgPSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9maWxlID0geXlsbG9jLT5s
YXN0X2ZpbGUgPSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGxvYy0+
bGFzdF9saW5lID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1h
eF9zaXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5c2Nh
bm5lcik7CiAKQEAgLTU3LDEwICs2MCw4IEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNj
YW5fdCB5eXNjYW4KICV9CiAKICVvcHRpb24gbm95eXdyYXAgbm91bnB1dCBuZXZlci1pbnRlcmFj
dGl2ZQotJW9wdGlvbiB5eWxpbmVubyByZWVudHJhbnQgYmlzb24tYnJpZGdlCi0lb3B0aW9uIHN0
YWNrCislb3B0aW9uIHl5bGluZW5vIHJlZW50cmFudCBiaXNvbi1icmlkZ2UgYmlzb24tbG9jYXRp
b25zCiAlb3B0aW9uIGV4dHJhLXR5cGU9IlRQYXJzZUNvbnRleHQqIgotJXggQ09NTUVOVCBGSUVM
RFMKIAogRCAgICAgICAgICAgWzAtOV0KIEwgICAgICAgICAgIFthLXpBLVpfXQpAQCAtNzAsNzMg
KzcxLDYwIEBAIE8gICAgICAgICAgIFswLTddCiAKICUlCiAKLSV7Ci0gICAgVFBhcnNlQ29udGV4
dCogY29udGV4dCA9IHl5ZXh0cmE7Ci0lfQotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMg
Ki8KLSIvLyJbXlxuXSogOworImludmFyaWFudCIgICAgeyByZXR1cm4gSU5WQVJJQU5UOyB9Cisi
aGlnaHAiICAgICAgICB7IHJldHVybiBISUdIX1BSRUNJU0lPTjsgfQorIm1lZGl1bXAiICAgICAg
eyByZXR1cm4gTUVESVVNX1BSRUNJU0lPTjsgfQorImxvd3AiICAgICAgICAgeyByZXR1cm4gTE9X
X1BSRUNJU0lPTjsgfQorInByZWNpc2lvbiIgICAgeyByZXR1cm4gUFJFQ0lTSU9OOyB9CisKKyJh
dHRyaWJ1dGUiICAgIHsgcmV0dXJuIEFUVFJJQlVURTsgfQorImNvbnN0IiAgICAgICAgeyByZXR1
cm4gQ09OU1RfUVVBTDsgfQorInVuaWZvcm0iICAgICAgeyByZXR1cm4gVU5JRk9STTsgfQorInZh
cnlpbmciICAgICAgeyByZXR1cm4gVkFSWUlORzsgfQorCisiYnJlYWsiICAgICAgICB7IHJldHVy
biBCUkVBSzsgfQorImNvbnRpbnVlIiAgICAgeyByZXR1cm4gQ09OVElOVUU7IH0KKyJkbyIgICAg
ICAgICAgIHsgcmV0dXJuIERPOyB9CisiZm9yIiAgICAgICAgICB7IHJldHVybiBGT1I7IH0KKyJ3
aGlsZSIgICAgICAgIHsgcmV0dXJuIFdISUxFOyB9CisKKyJpZiIgICAgICAgICAgIHsgcmV0dXJu
IElGOyB9CisiZWxzZSIgICAgICAgICB7IHJldHVybiBFTFNFOyB9CisKKyJpbiIgICAgICAgICAg
IHsgcmV0dXJuIElOX1FVQUw7IH0KKyJvdXQiICAgICAgICAgIHsgcmV0dXJuIE9VVF9RVUFMOyB9
CisiaW5vdXQiICAgICAgICB7IHJldHVybiBJTk9VVF9RVUFMOyB9CisKKyJmbG9hdCIgICAgICAg
IHsgcmV0dXJuIEZMT0FUX1RZUEU7IH0KKyJpbnQiICAgICAgICAgIHsgcmV0dXJuIElOVF9UWVBF
OyB9Cisidm9pZCIgICAgICAgICB7IHJldHVybiBWT0lEX1RZUEU7IH0KKyJib29sIiAgICAgICAg
IHsgcmV0dXJuIEJPT0xfVFlQRTsgfQorInRydWUiICAgICAgICAgeyB5eWx2YWwtPmxleC5iID0g
dHJ1ZTsgIHJldHVybiBCT09MQ09OU1RBTlQ7IH0KKyJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5s
ZXguYiA9IGZhbHNlOyByZXR1cm4gQk9PTENPTlNUQU5UOyB9CisKKyJkaXNjYXJkIiAgICAgIHsg
cmV0dXJuIERJU0NBUkQ7IH0KKyJyZXR1cm4iICAgICAgIHsgcmV0dXJuIFJFVFVSTjsgfQorCisi
bWF0MiIgICAgICAgICB7IHJldHVybiBNQVRSSVgyOyB9CisibWF0MyIgICAgICAgICB7IHJldHVy
biBNQVRSSVgzOyB9CisibWF0NCIgICAgICAgICB7IHJldHVybiBNQVRSSVg0OyB9CisKKyJ2ZWMy
IiAgICAgICAgIHsgcmV0dXJuIFZFQzI7IH0KKyJ2ZWMzIiAgICAgICAgIHsgcmV0dXJuIFZFQzM7
IH0KKyJ2ZWM0IiAgICAgICAgIHsgcmV0dXJuIFZFQzQ7IH0KKyJpdmVjMiIgICAgICAgIHsgcmV0
dXJuIElWRUMyOyB9CisiaXZlYzMiICAgICAgICB7IHJldHVybiBJVkVDMzsgfQorIml2ZWM0IiAg
ICAgICAgeyByZXR1cm4gSVZFQzQ7IH0KKyJidmVjMiIgICAgICAgIHsgcmV0dXJuIEJWRUMyOyB9
CisiYnZlYzMiICAgICAgICB7IHJldHVybiBCVkVDMzsgfQorImJ2ZWM0IiAgICAgICAgeyByZXR1
cm4gQlZFQzQ7IH0KKworInNhbXBsZXIyRCIgICAgICAgICAgeyByZXR1cm4gU0FNUExFUjJEOyB9
Cisic2FtcGxlckN1YmUiICAgICAgICB7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQorInNhbXBsZXJF
eHRlcm5hbE9FUyIgeyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KKyJzYW1wbGVyMkRS
ZWN0IiAgICAgIHsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAotICAgIC8qIE11bHRpLWxpbmUg
Y29tbWVudHMgKi8KLSIvKiIgICAgICAgICAgIHsgeXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNj
YW5uZXIpOyB9Ci08Q09NTUVOVD4uIHwKLTxDT01NRU5UPlxuIDsKLTxDT01NRU5UPiIqLyIgIHsg
eXlfcG9wX3N0YXRlKHl5c2Nhbm5lcik7IH0KLQotImludmFyaWFudCIgICAgeyByZXR1cm4oSU5W
QVJJQU5UKTsgfQotImhpZ2hwIiAgICAgICAgeyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Ci0i
bWVkaXVtcCIgICAgICB7IHJldHVybihNRURJVU1fUFJFQ0lTSU9OKTsgfQotImxvd3AiICAgICAg
ICAgeyByZXR1cm4oTE9XX1BSRUNJU0lPTik7IH0KLSJwcmVjaXNpb24iICAgIHsgcmV0dXJuKFBS
RUNJU0lPTik7IH0KLQotImF0dHJpYnV0ZSIgICAgeyByZXR1cm4oQVRUUklCVVRFKTsgfQotImNv
bnN0IiAgICAgICAgeyByZXR1cm4oQ09OU1RfUVVBTCk7IH0KLSJ1bmlmb3JtIiAgICAgIHsgcmV0
dXJuKFVOSUZPUk0pOyB9Ci0idmFyeWluZyIgICAgICB7IHJldHVybihWQVJZSU5HKTsgfQotCi0i
YnJlYWsiICAgICAgICB7IHJldHVybihCUkVBSyk7IH0KLSJjb250aW51ZSIgICAgIHsgcmV0dXJu
KENPTlRJTlVFKTsgfQotImRvIiAgICAgICAgICAgeyByZXR1cm4oRE8pOyB9Ci0iZm9yIiAgICAg
ICAgICB7IHJldHVybihGT1IpOyB9Ci0id2hpbGUiICAgICAgICB7IHJldHVybihXSElMRSk7IH0K
LQotImlmIiAgICAgICAgICAgeyByZXR1cm4oSUYpOyB9Ci0iZWxzZSIgICAgICAgICB7IHJldHVy
bihFTFNFKTsgfQotCi0iaW4iICAgICAgICAgICB7IHJldHVybihJTl9RVUFMKTsgfQotIm91dCIg
ICAgICAgICAgeyByZXR1cm4oT1VUX1FVQUwpOyB9Ci0iaW5vdXQiICAgICAgICB7IHJldHVybihJ
Tk9VVF9RVUFMKTsgfQotCi0iZmxvYXQiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9
IHRydWU7IHJldHVybihGTE9BVF9UWVBFKTsgfQotImludCIgICAgICAgICAgeyBjb250ZXh0LT5s
ZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oSU5UX1RZUEUpOyB9Ci0idm9pZCIgICAgICAgICB7
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihWT0lEX1RZUEUpOyB9Ci0iYm9v
bCIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihCT09MX1RZ
UEUpOyB9Ci0idHJ1ZSIgICAgICAgICB7IHl5bHZhbC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuKEJP
T0xDT05TVEFOVCk7IH0KLSJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyBy
ZXR1cm4oQk9PTENPTlNUQU5UKTsgfQotCi0iZGlzY2FyZCIgICAgICB7IHJldHVybihESVNDQVJE
KTsgfQotInJldHVybiIgICAgICAgeyByZXR1cm4oUkVUVVJOKTsgfQotCi0ibWF0MiIgICAgICAg
ICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVgyKTsgfQotIm1h
dDMiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklY
Myk7IH0KLSJtYXQ0IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuKE1BVFJJWDQpOyB9Ci0KLSJ2ZWMyIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gdHJ1ZTsgcmV0dXJuIChWRUMyKTsgfQotInZlYzMiICAgICAgICAgeyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzMpOyB9Ci0idmVjNCIgICAgICAgICB7IGNvbnRl
eHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KLSJpdmVjMiIgICAgICAg
IHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMik7IH0KLSJpdmVj
MyIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMyk7
IH0KLSJpdmVjNCIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJu
IChJVkVDNCk7IH0KLSJidmVjMiIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuIChCVkVDMik7IH0KLSJidmVjMyIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDMyk7IH0KLSJidmVjNCIgICAgICAgIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KLQotInNhbXBsZXIyRCIgICAg
ICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Ci0i
c2FtcGxlckN1YmUiICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBT
QU1QTEVSQ1VCRTsgfQotInNhbXBsZXJFeHRlcm5hbE9FUyIgeyBjb250ZXh0LT5sZXhBZnRlclR5
cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KLSJzYW1wbGVyMkRSZWN0
IiB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9
Ci0KLSJzdHJ1Y3QiICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJu
KFNUUlVDVCk7IH0KKyJzdHJ1Y3QiICAgICAgIHsgcmV0dXJuIFNUUlVDVDsgfQogCiAiYXNtIiAg
ICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIApAQCAtMTgzLDEz
ICsxNzEsMTEgQEAgTyAgICAgICAgICAgWzAtN10KICJmdmVjMyIgICAgICAgIHsgcmV0dXJuIHJl
c2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQogImZ2ZWM0IiAgICAgICAgeyByZXR1cm4gcmVzZXJ2
ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAKLSJzYW1wbGVyMUQiICAgIHsgcmV0dXJuIHJlc2VydmVk
X3dvcmQoeXlzY2FubmVyKTsgfQotInNhbXBsZXIzRCIgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29y
ZCh5eXNjYW5uZXIpOyB9Ci0KLSJzYW1wbGVyMURTaGFkb3ciIHsgcmV0dXJuIHJlc2VydmVkX3dv
cmQoeXlzY2FubmVyKTsgfQotInNhbXBsZXIyRFNoYWRvdyIgeyByZXR1cm4gcmVzZXJ2ZWRfd29y
ZCh5eXNjYW5uZXIpOyB9Ci0KLSJzYW1wbGVyM0RSZWN0IiB7IHJldHVybiByZXNlcnZlZF93b3Jk
KHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMUQiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93
b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0QiICAgICAgICAgICB7IHJldHVybiByZXNlcnZl
ZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMURTaGFkb3ciICAgICB7IHJldHVybiByZXNl
cnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMkRTaGFkb3ciICAgICB7IHJldHVybiBy
ZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0RSZWN0IiAgICAgICB7IHJldHVy
biByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KICJzYW1wbGVyMkRSZWN0U2hhZG93IiB7IHJl
dHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAogInNpemVvZiIgICAgICAgeyByZXR1
cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CkBAIC0yMDMsNzIgKzE4OSw2NCBAQCBPICAg
ICAgICAgICBbMC03XQogICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKIH0KIAotMFt4
WF17SH0rICAgICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2wo
eXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KLTB7T30rICAgICAgICAgICAg
IHsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkp
OyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Ci0we0R9KyAgICAgICAgICAgICB7IGNvbnRleHQtPmVy
cm9yKHl5bGluZW5vLCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+
cmVjb3ZlcigpOyByZXR1cm4gMDt9Ci17RH0rICAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4Lmkg
PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNU
QU5UKTsgfQotCi17RH0re0V9ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQote0R9
KyIuIntEfSooe0V9KT8geyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2Zf
ZG90KHl5dGV4dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KLSIuIntEfSsoe0V9KT8gICAg
IHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsg
cmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Ci0KLSIrPSIgICAgICAgICAgICB7ICByZXR1cm4oQURE
X0FTU0lHTik7IH0KLSItPSIgICAgICAgICAgICB7ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KLSIq
PSIgICAgICAgICAgICB7ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KLSIvPSIgICAgICAgICAgICB7
ICByZXR1cm4oRElWX0FTU0lHTik7IH0KLSIlPSIgICAgICAgICAgICB7ICByZXR1cm4oTU9EX0FT
U0lHTik7IH0KLSI8PD0iICAgICAgICAgICB7ICByZXR1cm4oTEVGVF9BU1NJR04pOyB9Ci0iPj49
IiAgICAgICAgICAgeyAgcmV0dXJuKFJJR0hUX0FTU0lHTik7IH0KLSImPSIgICAgICAgICAgICB7
ICByZXR1cm4oQU5EX0FTU0lHTik7IH0KLSJePSIgICAgICAgICAgICB7ICByZXR1cm4oWE9SX0FT
U0lHTik7IH0KLSJ8PSIgICAgICAgICAgICB7ICByZXR1cm4oT1JfQVNTSUdOKTsgfQotCi0iKysi
ICAgICAgICAgICAgeyAgcmV0dXJuKElOQ19PUCk7IH0KLSItLSIgICAgICAgICAgICB7ICByZXR1
cm4oREVDX09QKTsgfQotIiYmIiAgICAgICAgICAgIHsgIHJldHVybihBTkRfT1ApOyB9Ci0ifHwi
ICAgICAgICAgICAgeyAgcmV0dXJuKE9SX09QKTsgfQotIl5eIiAgICAgICAgICAgIHsgIHJldHVy
bihYT1JfT1ApOyB9Ci0iPD0iICAgICAgICAgICAgeyAgcmV0dXJuKExFX09QKTsgfQotIj49IiAg
ICAgICAgICAgIHsgIHJldHVybihHRV9PUCk7IH0KLSI9PSIgICAgICAgICAgICB7ICByZXR1cm4o
RVFfT1ApOyB9Ci0iIT0iICAgICAgICAgICAgeyAgcmV0dXJuKE5FX09QKTsgfQotIjw8IiAgICAg
ICAgICAgIHsgIHJldHVybihMRUZUX09QKTsgfQotIj4+IiAgICAgICAgICAgIHsgIHJldHVybihS
SUdIVF9PUCk7IH0KLSI7IiAgICAgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZh
bHNlOyByZXR1cm4oU0VNSUNPTE9OKTsgfQotKCJ7InwiPCUiKSAgICAgIHsgY29udGV4dC0+bGV4
QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihMRUZUX0JSQUNFKTsgfQotKCJ9InwiJT4iKSAgICAg
IHsgcmV0dXJuKFJJR0hUX0JSQUNFKTsgfQotIiwiICAgICAgICAgeyBpZiAoY29udGV4dC0+aW5U
eXBlUGFyZW4pIGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9
Ci0iOiIgICAgICAgICB7IHJldHVybihDT0xPTik7IH0KLSI9IiAgICAgICAgIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihFUVVBTCk7IH0KLSIoIiAgICAgICAgIHsgY29u
dGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gdHJ1ZTsg
cmV0dXJuKExFRlRfUEFSRU4pOyB9Ci0iKSIgICAgICAgICB7IGNvbnRleHQtPmluVHlwZVBhcmVu
ID0gZmFsc2U7IHJldHVybihSSUdIVF9QQVJFTik7IH0KLSgiWyJ8Ijw6IikgICAgICB7IHJldHVy
bihMRUZUX0JSQUNLRVQpOyB9Ci0oIl0ifCI6PiIpICAgICAgeyByZXR1cm4oUklHSFRfQlJBQ0tF
VCk7IH0KLSIuIiAgICAgICAgIHsgQkVHSU4oRklFTERTKTsgIHJldHVybihET1QpOyB9Ci0iISIg
ICAgICAgICB7IHJldHVybihCQU5HKTsgfQotIi0iICAgICAgICAgeyByZXR1cm4oREFTSCk7IH0K
LSJ+IiAgICAgICAgIHsgcmV0dXJuKFRJTERFKTsgfQotIisiICAgICAgICAgeyByZXR1cm4oUExV
Uyk7IH0KLSIqIiAgICAgICAgIHsgcmV0dXJuKFNUQVIpOyB9Ci0iLyIgICAgICAgICB7IHJldHVy
bihTTEFTSCk7IH0KLSIlIiAgICAgICAgIHsgcmV0dXJuKFBFUkNFTlQpOyB9Ci0iPCIgICAgICAg
ICB7IHJldHVybihMRUZUX0FOR0xFKTsgfQotIj4iICAgICAgICAgeyByZXR1cm4oUklHSFRfQU5H
TEUpOyB9Ci0ifCIgICAgICAgICB7IHJldHVybihWRVJUSUNBTF9CQVIpOyB9Ci0iXiIgICAgICAg
ICB7IHJldHVybihDQVJFVCk7IH0KLSImIiAgICAgICAgIHsgcmV0dXJuKEFNUEVSU0FORCk7IH0K
LSI/IiAgICAgICAgIHsgcmV0dXJuKFFVRVNUSU9OKTsgfQotCi08RklFTERTPntMfSh7TH18e0R9
KSogeyAKLSAgICBCRUdJTihJTklUSUFMKTsKLSAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQ
b29sVFN0cmluZyh5eXRleHQpOyAKLSAgICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwotfQotPEZJ
RUxEUz5bIFx0XHZcZlxyXSB7fQotCi1bIFx0XHZcblxmXHJdICAgeyAgfQotPCo+PDxFT0Y+PiAg
ICAgIHsgY29udGV4dC0+QWZ0ZXJFT0YgPSB0cnVlOyB5eXRlcm1pbmF0ZSgpOyB9Ci08Kj4uICAg
ICAgICAgICAgeyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBjaGFyIiwgeXl0
ZXh0LCAiIik7IHJldHVybiAwOyB9CiswW3hYXXtIfSsgICAgICAgICB7IHl5bHZhbC0+bGV4Lmkg
PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNU
QU5UOyB9Ciswe099KyAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxp
bnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Cit7RH0rICAg
ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRl
eHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CisKK3tEfSt7RX0gICAgICAgICAgIHsg
eXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0
dXJuIEZMT0FUQ09OU1RBTlQ7IH0KK3tEfSsiLiJ7RH0qKHtFfSk/IHsgeXlsdmFsLT5sZXguZiA9
IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RB
TlQ7IH0KKyIuIntEfSsoe0V9KT8gICAgIHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZs
b2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKworIis9IiAg
ICAgICAgICAgIHsgcmV0dXJuIEFERF9BU1NJR047IH0KKyItPSIgICAgICAgICAgICB7IHJldHVy
biBTVUJfQVNTSUdOOyB9CisiKj0iICAgICAgICAgICAgeyByZXR1cm4gTVVMX0FTU0lHTjsgfQor
Ii89IiAgICAgICAgICAgIHsgcmV0dXJuIERJVl9BU1NJR047IH0KKyIlPSIgICAgICAgICAgICB7
IHJldHVybiBNT0RfQVNTSUdOOyB9CisiPDw9IiAgICAgICAgICAgeyByZXR1cm4gTEVGVF9BU1NJ
R047IH0KKyI+Pj0iICAgICAgICAgICB7IHJldHVybiBSSUdIVF9BU1NJR047IH0KKyImPSIgICAg
ICAgICAgICB7IHJldHVybiBBTkRfQVNTSUdOOyB9CisiXj0iICAgICAgICAgICAgeyByZXR1cm4g
WE9SX0FTU0lHTjsgfQorInw9IiAgICAgICAgICAgIHsgcmV0dXJuIE9SX0FTU0lHTjsgfQorCisi
KysiICAgICAgICAgICAgeyByZXR1cm4gSU5DX09QOyB9CisiLS0iICAgICAgICAgICAgeyByZXR1
cm4gREVDX09QOyB9CisiJiYiICAgICAgICAgICAgeyByZXR1cm4gQU5EX09QOyB9CisifHwiICAg
ICAgICAgICAgeyByZXR1cm4gT1JfT1A7IH0KKyJeXiIgICAgICAgICAgICB7IHJldHVybiBYT1Jf
T1A7IH0KKyI8PSIgICAgICAgICAgICB7IHJldHVybiBMRV9PUDsgfQorIj49IiAgICAgICAgICAg
IHsgcmV0dXJuIEdFX09QOyB9CisiPT0iICAgICAgICAgICAgeyByZXR1cm4gRVFfT1A7IH0KKyIh
PSIgICAgICAgICAgICB7IHJldHVybiBORV9PUDsgfQorIjw8IiAgICAgICAgICAgIHsgcmV0dXJu
IExFRlRfT1A7IH0KKyI+PiIgICAgICAgICAgICB7IHJldHVybiBSSUdIVF9PUDsgfQorIjsiICAg
ICAgICAgICAgIHsgcmV0dXJuIFNFTUlDT0xPTjsgfQorKCJ7InwiPCUiKSAgICAgIHsgcmV0dXJu
IExFRlRfQlJBQ0U7IH0KKygifSJ8IiU+IikgICAgICB7IHJldHVybiBSSUdIVF9CUkFDRTsgfQor
IiwiICAgICAgICAgeyByZXR1cm4gQ09NTUE7IH0KKyI6IiAgICAgICAgIHsgcmV0dXJuIENPTE9O
OyB9CisiPSIgICAgICAgICB7IHJldHVybiBFUVVBTDsgfQorIigiICAgICAgICAgeyByZXR1cm4g
TEVGVF9QQVJFTjsgfQorIikiICAgICAgICAgeyByZXR1cm4gUklHSFRfUEFSRU47IH0KKygiWyJ8
Ijw6IikgIHsgcmV0dXJuIExFRlRfQlJBQ0tFVDsgfQorKCJdInwiOj4iKSAgeyByZXR1cm4gUklH
SFRfQlJBQ0tFVDsgfQorIi4iICAgICAgICAgeyByZXR1cm4gRE9UOyB9CisiISIgICAgICAgICB7
IHJldHVybiBCQU5HOyB9CisiLSIgICAgICAgICB7IHJldHVybiBEQVNIOyB9CisifiIgICAgICAg
ICB7IHJldHVybiBUSUxERTsgfQorIisiICAgICAgICAgeyByZXR1cm4gUExVUzsgfQorIioiICAg
ICAgICAgeyByZXR1cm4gU1RBUjsgfQorIi8iICAgICAgICAgeyByZXR1cm4gU0xBU0g7IH0KKyIl
IiAgICAgICAgIHsgcmV0dXJuIFBFUkNFTlQ7IH0KKyI8IiAgICAgICAgIHsgcmV0dXJuIExFRlRf
QU5HTEU7IH0KKyI+IiAgICAgICAgIHsgcmV0dXJuIFJJR0hUX0FOR0xFOyB9CisifCIgICAgICAg
ICB7IHJldHVybiBWRVJUSUNBTF9CQVI7IH0KKyJeIiAgICAgICAgIHsgcmV0dXJuIENBUkVUOyB9
CisiJiIgICAgICAgICB7IHJldHVybiBBTVBFUlNBTkQ7IH0KKyI/IiAgICAgICAgIHsgcmV0dXJu
IFFVRVNUSU9OOyB9CisKK1sgXHRcdlxuXGZccl0geyB9Cis8PEVPRj4+ICAgIHsgeXl0ZXJtaW5h
dGUoKTsgfQorLiAgICAgICAgICB7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAKICUlCiAK
QEAgLTI3OCw3ICsyNTYsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlf
c2l6CiAgICAgeXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8g
MCA6IHRva2VuLnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAg
bWVtY3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAgIHl5c2V0X2xpbmVubyhF
bmNvZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24ubGluZSks
IHl5c2Nhbm5lcik7CisgICAgeXlzZXRfY29sdW1uKHRva2VuLmxvY2F0aW9uLmZpbGUsIHl5c2Nh
bm5lcik7CisgICAgeXlzZXRfbGluZW5vKHRva2VuLmxvY2F0aW9uLmxpbmUsIHl5c2Nhbm5lcik7
CiAKICAgICBpZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5w
dXQgYnVmZmVyIG92ZXJmbG93Iik7CkBAIC0yOTIsMTIgKzI3MSwxMCBAQCBpbnQgY2hlY2tfdHlw
ZSh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKICAgICAKICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVS
OwogICAgIFRTeW1ib2wqIHN5bWJvbCA9IHl5ZXh0cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0
KTsKLSAgICBpZiAoeXlleHRyYS0+bGV4QWZ0ZXJUeXBlID09IGZhbHNlICYmIHN5bWJvbCAmJiBz
eW1ib2wtPmlzVmFyaWFibGUoKSkgeworICAgIGlmIChzeW1ib2wgJiYgc3ltYm9sLT5pc1Zhcmlh
YmxlKCkpIHsKICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJp
YWJsZSo+KHN5bWJvbCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKSB7Ci0g
ICAgICAgICAgICB5eWV4dHJhLT5sZXhBZnRlclR5cGUgPSB0cnVlOworICAgICAgICBpZiAodmFy
aWFibGUtPmlzVXNlclR5cGUoKSkKICAgICAgICAgICAgIHRva2VuID0gVFlQRV9OQU1FOwotICAg
ICAgICB9CiAgICAgfQogICAgIHl5bHZhbC0+bGV4LnN5bWJvbCA9IHN5bWJvbDsKICAgICByZXR1
cm4gdG9rZW47CkBAIC0zMDYsMjIgKzI4MywxMSBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5
eXNjYW5uZXIpIHsKIGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAg
IHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKIAot
ICAgIHl5ZXh0cmEtPmVycm9yKHl5bGluZW5vLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29y
ZCIsIHl5dGV4dCwgIiIpOworICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbGxlZ2FsIHVz
ZSBvZiByZXNlcnZlZCB3b3JkIiwgeXl0ZXh0LCAiIik7CiAgICAgeXlleHRyYS0+cmVjb3Zlcigp
OwogICAgIHJldHVybiAwOwogfQogCi12b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4
dCwgY29uc3QgY2hhciogcmVhc29uKSB7Ci0gICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3Ry
dWN0IHl5Z3V0c190KikgY29udGV4dC0+c2Nhbm5lcjsKLQotICAgIGlmIChjb250ZXh0LT5BZnRl
ckVPRikgewotICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29uLCAidW5leHBl
Y3RlZCBFT0YiKTsKLSAgICB9IGVsc2UgewotICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVu
bywgcmVhc29uLCB5eXRleHQpOwotICAgIH0KLSAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci19Ci0K
IGludCBnbHNsYW5nX2luaXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5
c2Nhbl90IHNjYW5uZXIgPSBOVUxMOwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQs
ICZzY2FubmVyKSkKQEAgLTM0NCw4ICszMTAsOCBAQCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFy
c2VDb250ZXh0KiBjb250CiBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hh
ciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAg
VFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5cmVzdGFydChOVUxMLCBjb250ZXh0LT5z
Y2FubmVyKTsKLSAgICB5eXNldF9saW5lbm8oRW5jb2RlU291cmNlTG9jKDAsIDEpLCBjb250ZXh0
LT5zY2FubmVyKTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNlOworICAgIHl5c2V0X2Nv
bHVtbigwLCBjb250ZXh0LT5zY2FubmVyKTsKKyAgICB5eXNldF9saW5lbm8oMSwgY29udGV4dC0+
c2Nhbm5lcik7CiAKICAgICAvLyBJbml0aWFsaXplIHByZXByb2Nlc3Nvci4KICAgICBpZiAoIWNv
bnRleHQtPnByZXByb2Nlc3Nvci5pbml0KGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHJldmlz
aW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNs
YW5nLnkJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogLy8KLS8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0zOSw3ICszOSw2IEBAIFdISUNIIEdFTkVSQVRFUyBU
SEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIK
IAogI2RlZmluZSBZWUVOQUJMRV9OTFMgMAotI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQog
CiAjZGVmaW5lIFlZTEVYX1BBUkFNIGNvbnRleHQtPnNjYW5uZXIKICV9CkBAIC00NywxMCArNDYs
MTUgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbAogJWV4cGVjdCAx
IC8qIE9uZSBzaGlmdCByZWR1Y2UgY29uZmxpY3QgYmVjYXVzZSBvZiBpZiB8IGVsc2UgKi8KICVw
dXJlLXBhcnNlcgogJXBhcnNlLXBhcmFtIHtUUGFyc2VDb250ZXh0KiBjb250ZXh0fQorJWxvY2F0
aW9ucworCislY29kZSByZXF1aXJlcyB7CisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2Rl
ZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKK30KIAogJXVuaW9uIHsKICAgICBzdHJ1Y3Qgewot
ICAgICAgICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRT
dHJpbmcgKnN0cmluZzsKICAgICAgICAgICAgIGZsb2F0IGY7CkBAIC02MCw3ICs2NCw2IEBAIFdI
SUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICAgICAgICAgVFN5bWJvbCog
c3ltYm9sOwogICAgIH0gbGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGlu
ZTsKICAgICAgICAgVE9wZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBU
SW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKQEAgLTc0LDIzICs3NywzMSBAQCBXSElDSCBHRU5FUkFU
RVMgVEhFIEdMU0wgRVMgUEFSU0VSIChnbHNsCiAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxp
ZmllcjsKICAgICAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAgICAgICBUUGFy
YW1ldGVyIHBhcmFtOwotICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVMaW5lOwotICAgICAgICAg
ICAgVFR5cGVMaXN0KiB0eXBlTGlzdDsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7CisgICAg
ICAgICAgICBURmllbGRMaXN0KiBmaWVsZExpc3Q7CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07
CiB9CiAKICV7Ci1leHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbF9wYXJhbSwgdm9pZCog
eXlzY2FubmVyKTsKLWV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwg
Y29uc3QgY2hhciogcmVhc29uKTsKK2V4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBZ
WUxUWVBFKiB5eWxsb2MsIHZvaWQqIHl5c2Nhbm5lcik7CitzdGF0aWMgdm9pZCB5eWVycm9yKFlZ
TFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29u
KTsKIAotI2RlZmluZSBGUkFHX1ZFUlRfT05MWShTLCBMKSB7ICBcCi0gICAgaWYgKGNvbnRleHQt
PnNoYWRlclR5cGUgIT0gU0hfRlJBR01FTlRfU0hBREVSICYmICBcCi0gICAgICAgIGNvbnRleHQt
PnNoYWRlclR5cGUgIT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXAotICAgICAgICBjb250ZXh0LT5l
cnJvcihMLCAiIHN1cHBvcnRlZCBpbiB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVycyBvbmx5ICIsIFMp
OyAgXAotICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7ICBcCi0gICAgfSAgXAotfQorI2RlZmlu
ZSBZWUxMT0NfREVGQVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICBpZiAoWVlJRChOKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJo
cywgMSkuZmlyc3RfZmlsZTsgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJI
U0xPQyhSaHMsIDEpLmZpcnN0X2xpbmU7ICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUg
PSBZWVJIU0xPQyhSaHMsIE4pLmxhc3RfZmlsZTsgICAgXAorICAgICAgICAoQ3VycmVudCkubGFz
dF9saW5lID0gWVlSSFNMT0MoUmhzLCBOKS5sYXN0X2xpbmU7ICAgIFwKKyAgICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBl
bHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9maWxl
OyAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDApLmxh
c3RfbGluZTsgICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMs
IDApLmxhc3RfZmlsZTsgICAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0gWVlSSFNM
T0MoUmhzLCAwKS5sYXN0X2xpbmU7ICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gd2hpbGUgKDApCiAKICNkZWZp
bmUgVkVSVEVYX09OTFkoUywgTCkgeyAgXAogICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9
IFNIX1ZFUlRFWF9TSEFERVIpIHsgIFwKQEAgLTExNiw3ICsxMjcsNiBAQCBleHRlcm4gdm9pZCB5
eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRlCiAldG9rZW4gPGxleD4gU0FNUExFUjJEIFNBTVBM
RVJDVUJFIFNBTVBMRVJfRVhURVJOQUxfT0VTIFNBTVBMRVIyRFJFQ1QKIAogJXRva2VuIDxsZXg+
IElERU5USUZJRVIgVFlQRV9OQU1FIEZMT0FUQ09OU1RBTlQgSU5UQ09OU1RBTlQgQk9PTENPTlNU
QU5UCi0ldG9rZW4gPGxleD4gRklFTERfU0VMRUNUSU9OCiAldG9rZW4gPGxleD4gTEVGVF9PUCBS
SUdIVF9PUAogJXRva2VuIDxsZXg+IElOQ19PUCBERUNfT1AgTEVfT1AgR0VfT1AgRVFfT1AgTkVf
T1AKICV0b2tlbiA8bGV4PiBBTkRfT1AgT1JfT1AgWE9SX09QIE1VTF9BU1NJR04gRElWX0FTU0lH
TiBBRERfQVNTSUdOCkBAIC0xMjcsNiArMTM3LDcgQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFy
c2VDb250ZXh0KiBjb250ZQogJXRva2VuIDxsZXg+IENPTU1BIENPTE9OIEVRVUFMIFNFTUlDT0xP
TiBCQU5HIERBU0ggVElMREUgUExVUyBTVEFSIFNMQVNIIFBFUkNFTlQKICV0b2tlbiA8bGV4PiBM
RUZUX0FOR0xFIFJJR0hUX0FOR0xFIFZFUlRJQ0FMX0JBUiBDQVJFVCBBTVBFUlNBTkQgUVVFU1RJ
T04KIAorJXR5cGUgPGxleD4gaWRlbnRpZmllcgogJXR5cGUgPGludGVybT4gYXNzaWdubWVudF9v
cGVyYXRvciB1bmFyeV9vcGVyYXRvcgogJXR5cGUgPGludGVybS5pbnRlcm1UeXBlZE5vZGU+IHZh
cmlhYmxlX2lkZW50aWZpZXIgcHJpbWFyeV9leHByZXNzaW9uIHBvc3RmaXhfZXhwcmVzc2lvbgog
JXR5cGUgPGludGVybS5pbnRlcm1UeXBlZE5vZGU+IGV4cHJlc3Npb24gaW50ZWdlcl9leHByZXNz
aW9uIGFzc2lnbm1lbnRfZXhwcmVzc2lvbgpAQCAtMTU0LDggKzE2NSw4IEBAIGV4dGVybiB2b2lk
IHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGUKICV0eXBlIDxpbnRlcm0udHlwZT4gdHlwZV9x
dWFsaWZpZXIgZnVsbHlfc3BlY2lmaWVkX3R5cGUgdHlwZV9zcGVjaWZpZXIKICV0eXBlIDxpbnRl
cm0udHlwZT4gdHlwZV9zcGVjaWZpZXJfbm9fcHJlYyB0eXBlX3NwZWNpZmllcl9ub25hcnJheQog
JXR5cGUgPGludGVybS50eXBlPiBzdHJ1Y3Rfc3BlY2lmaWVyCi0ldHlwZSA8aW50ZXJtLnR5cGVM
aW5lPiBzdHJ1Y3RfZGVjbGFyYXRvcgotJXR5cGUgPGludGVybS50eXBlTGlzdD4gc3RydWN0X2Rl
Y2xhcmF0b3JfbGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QK
KyV0eXBlIDxpbnRlcm0uZmllbGQ+IHN0cnVjdF9kZWNsYXJhdG9yCisldHlwZSA8aW50ZXJtLmZp
ZWxkTGlzdD4gc3RydWN0X2RlY2xhcmF0b3JfbGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gc3RydWN0
X2RlY2xhcmF0aW9uX2xpc3QKICV0eXBlIDxpbnRlcm0uZnVuY3Rpb24+IGZ1bmN0aW9uX2hlYWRl
ciBmdW5jdGlvbl9kZWNsYXJhdG9yIGZ1bmN0aW9uX2lkZW50aWZpZXIKICV0eXBlIDxpbnRlcm0u
ZnVuY3Rpb24+IGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMgZnVuY3Rpb25fY2FsbF9o
ZWFkZXIKICV0eXBlIDxpbnRlcm0+IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVy
cyBmdW5jdGlvbl9jYWxsX2hlYWRlcl9ub19wYXJhbWV0ZXJzIGZ1bmN0aW9uX2NhbGxfZ2VuZXJp
YyBmdW5jdGlvbl9wcm90b3R5cGUKQEAgLTE2NCwxMyArMTc1LDE3IEBAIGV4dGVybiB2b2lkIHl5
ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGUKICVzdGFydCB0cmFuc2xhdGlvbl91bml0CiAlJQog
CitpZGVudGlmaWVyCisgICAgOiBJREVOVElGSUVSCisgICAgfCBUWVBFX05BTUUKKwogdmFyaWFi
bGVfaWRlbnRpZmllcgogICAgIDogSURFTlRJRklFUiB7CiAgICAgICAgIC8vIFRoZSBzeW1ib2wg
dGFibGUgc2VhcmNoIHdhcyBkb25lIGluIHRoZSBsZXhpY2FsIHBoYXNlCiAgICAgICAgIGNvbnN0
IFRTeW1ib2wqIHN5bWJvbCA9ICQxLnN5bWJvbDsKICAgICAgICAgY29uc3QgVFZhcmlhYmxlKiB2
YXJpYWJsZTsKICAgICAgICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigkMS5saW5lLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIiwgJDEuc3RyaW5nLT5jX3N0
cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5kZWNsYXJlZCBpZGVudGlm
aWVyIiwgJDEuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCk7CiAgICAg
ICAgICAgICBUVmFyaWFibGUqIGZha2VWYXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJDEuc3RyaW5n
LCB0eXBlKTsKQEAgLTE3OSwxMCArMTk0LDE3IEBAIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoaXMgaWRlbnRpZmllciBjYW4gb25seSBiZSBh
IHZhcmlhYmxlIHR5cGUgc3ltYm9sCiAgICAgICAgICAgICBpZiAoISBzeW1ib2wtPmlzVmFyaWFi
bGUoKSkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ2YXJpYWJs
ZSBleHBlY3RlZCIsICQxLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDEsICJ2YXJpYWJsZSBleHBlY3RlZCIsICQxLnN0cmluZy0+Y19zdHIoKSk7CiAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQorCiAgICAg
ICAgICAgICB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7
CisKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5pc1ZhcmlhYmxlQnVpbHRJbih2YXJpYWJsZSkg
JiYgCisgICAgICAgICAgICAgICAgIXZhcmlhYmxlLT5nZXRFeHRlbnNpb24oKS5lbXB0eSgpICYm
CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjayhAMSwgdmFyaWFi
bGUtPmdldEV4dGVuc2lvbigpKSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSAk
MS5zdHJpbmcsIGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVyeSwgYW5kIHRoZSBwb29sCkBAIC0x
OTEsMTEgKzIxMywxMiBAQCB2YXJpYWJsZV9pZGVudGlmaWVyCiAgICAgICAgIGlmICh2YXJpYWJs
ZS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ICkgewogICAgICAgICAgICAg
Q29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHZhcmlhYmxlLT5nZXRDb25zdFBvaW50ZXIoKTsK
ICAgICAgICAgICAgIFRUeXBlIHQodmFyaWFibGUtPmdldFR5cGUoKSk7Ci0gICAgICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQs
ICQxLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbihjb25zdEFycmF5LCB0LCBAMSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlx
dWVJZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+
Z2V0TmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTIwOSwyMiArMjMyLDIy
IEBAIHByaW1hcnlfZXhwcmVzc2lvbgogICAgICAgICAvLyBjaGVjayBmb3Igb3ZlcmZsb3cgZm9y
IGNvbnN0YW50cwogICAgICAgICAvLwogICAgICAgICBpZiAoYWJzKCQxLmkpID49ICgxIDw8IDE2
KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIiBpbnRlZ2VyIGNvbnN0
YW50IG92ZXJmbG93IiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICIgaW50
ZWdlciBjb25zdGFudCBvdmVyZmxvdyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgfQogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgkMS5pKTsK
LSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsK
KyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAg
fQogICAgIHwgRkxPQVRDT05TVEFOVCB7CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJy
YXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0
KCQxLmYpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
JDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCBAMSk7CiAgICAgfQogICAgIHwgQk9PTENPTlNUQU5UIHsKICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5
LT5zZXRCQ29uc3QoJDEuYik7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxQ29uc3QpLCBAMSk7CiAgICAgfQogICAgIHwgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hU
X1BBUkVOIHsKICAgICAgICAgJCQgPSAkMjsKQEAgLTIzOCwxMDEgKzI2MSw5NyBAQCBwb3N0Zml4
X2V4cHJlc3Npb24KICAgICB8IHBvc3RmaXhfZXhwcmVzc2lvbiBMRUZUX0JSQUNLRVQgaW50ZWdl
cl9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewogICAgICAgICBpZiAoISQxLT5pc0FycmF5KCkg
JiYgISQxLT5pc01hdHJpeCgpICYmICEkMS0+aXNWZWN0b3IoKSkgewogICAgICAgICAgICAgaWYg
KCQxLT5nZXRBc1N5bWJvbE5vZGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigk
Mi5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZl
Y3RvciAiLCAkMS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0
eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAkMS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdl
dFN5bWJvbCgpLmNfc3RyKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCQyLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXks
IG1hdHJpeCwgb3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoQDIsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJp
eCwgb3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVy
KCkgPT0gRXZxQ29uc3QgJiYgJDMtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAg
ICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJh
eXMKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlOb2RlKCQzLT5n
ZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCks
ICQxLCAkMi5saW5lKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkpIHsg
IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIHZlY3RvcnMKLSAgICAgICAgICAgICAgICBUVmVjdG9y
RmllbGRzIGZpZWxkczsKLSAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKLSAgICAgICAg
ICAgICAgICBmaWVsZHMub2Zmc2V0c1swXSA9ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0
VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7IC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3
YXkgYmVjYXVzZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5Ci0gICAgICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwgJDIubGluZSk7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7IC8vIGNvbnN0YW50IGZv
bGRpbmcgZm9yIG1hdHJpY2VzCi0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25z
dE1hdHJpeE5vZGUoJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpLT5nZXRJQ29uc3QoKSwgJDEsICQyLmxpbmUpOworICAgICAgICBpZiAoJDMtPmdldFF1YWxp
ZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSAkMy0+Z2V0QXND
b25zdGFudFVuaW9uKCktPmdldElDb25zdCgwKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IDAp
IHsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBpbmZvU3RyZWFtOworICAgICAg
ICAgICAgICAgIGluZm9TdHJlYW0gPDwgaW5kZXg7CisgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmcgaW5mbyA9IGluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoQDMsICJuZWdhdGl2ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgIGluZGV4ID0gMDsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICgkMy0+Z2V0UXVhbGlmaWVy
KCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoKCQxLT5pc1ZlY3RvcigpIHx8
ICQxLT5pc01hdHJpeCgpKSAmJiAkMS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gJDMt
PmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3Qo
KSAmJiAhJDEtPmlzQXJyYXkoKSApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdz
dHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJl
YW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgJDMtPmdldEFzQ29uc3Rh
bnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0g
ICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVh
bS5zdHIoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIs
ICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCQxLT5pc0FycmF5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0
VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoJDEtPmdldFR5cGUoKS5nZXRNYXhBcnJheVNpemUoKSA8PSAkMy0+Z2V0QXNDb25zdGFu
dFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNldE1heFNpemUoJDEt
PmdldEFzU3ltYm9sTm9kZSgpLCAkMS0+Z2V0VHlwZVBvaW50ZXIoKSwgJDMtPmdldEFzQ29uc3Rh
bnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgdHJ1ZSwgJDIu
bGluZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgkMS0+Z2V0
QXNTeW1ib2xOb2RlKCksICQxLT5nZXRUeXBlUG9pbnRlcigpLCAwLCBmYWxzZSwgJDIubGluZSkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmICggJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpLT5nZXRJQ29uc3QoKSA+PSAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFt
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkg
aW5kZXggb3V0IG9mIHJhbmdlICciIDw8ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5p
b25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIiciOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIiwg
IlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwgJDMsICQyLmxpbmUpOworICAgICAgICAgICAg
aWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJh
eXMKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdEFycmF5Tm9kZShp
bmRleCwgJDEsIEAyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc1ZlY3Rvcigp
KSB7ICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAgICAgICAgICAg
IFRWZWN0b3JGaWVsZHMgZmllbGRzOworICAgICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0g
MTsKKyAgICAgICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVl
ZCB0byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJy
YXkKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUo
ZmllbGRzLCAkMSwgQDIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4
KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKKyAgICAgICAgICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoaW5kZXgsICQxLCBAMik7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAo
JDEtPmlzQXJyYXkoKSAmJiAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgImFycmF5
IG11c3QgYmUgcmVkZWNsYXJlZCB3aXRoIGEgc2l6ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRo
IGEgdmFyaWFibGUiKTsKKyAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZv
U3RyZWFtOworICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJh
eSBpbmRleCBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICIiLCAiWyIsIGV4dHJh
SW5mby5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gJDEtPmdldFR5cGUoKS5nZXRBcnJh
eVNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKCgkMS0+aXNWZWN0b3IoKSB8fCAkMS0+aXNNYXRyaXgoKSkgJiYgJDEtPmdldFR5cGUo
KS5nZXROb21pbmFsU2l6ZSgpIDw9IGluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFJ
bmZvU3RyZWFtIDw8ICJmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8
ICInIjsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJ
bmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwg
IiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gICQxLT5nZXRUeXBlKCku
Z2V0Tm9taW5hbFNpemUoKSAtIDE7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwg
JDEsICQzLCAkMi5saW5lKTsKKyAgICAgICAgICAgICAgICAkMy0+Z2V0QXNDb25zdGFudFVuaW9u
KCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7CisgICAgICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3Qs
ICQxLCAkMywgQDIpOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwg
JDEsICQzLCBAMik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCQkID09IDApIHsKICAgICAgICAg
ICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAg
ICAgICAgICAgIHVuaW9uQXJyYXktPnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUo
RWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBl
KEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCksIEAyKTsKICAgICAgICAgfSBlbHNlIGlmICgk
MS0+aXNBcnJheSgpKSB7CiAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3Qo
KSkKLSAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0VHlwZSgpLmdldFN0
cnVjdCgpLCAkMS0+Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAk
JC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKSk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlw
ZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXpl
KCksICQxLT5pc01hdHJpeCgpKSk7CiAKICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdl
dFF1YWxpZmllcigpID09IEV2cUNvbnN0KQogICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9p
bnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICB9IGVsc2UgaWYgKCQxLT5p
c01hdHJpeCgpICYmICQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0g
ICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQ
cmVjaXNpb24oKSwgRXZxQ29uc3QsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVs
c2UgaWYgKCQxLT5pc01hdHJpeCgpKQotICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEt
PmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdl
dE5vbWluYWxTaXplKCkpKTsKLSAgICAgICAgZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkgJiYgJDEt
PmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICQkLT5z
ZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFD
b25zdCkpOwotICAgICAgICBlbHNlIGlmICgkMS0+aXNWZWN0b3IoKSkKLSAgICAgICAgICAgICQk
LT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBF
dnFUZW1wb3JhcnkpKTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01h
dHJpeCgpKSB7CisgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICQxLT5nZXRUeXBl
KCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsK
KyAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdl
dFByZWNpc2lvbigpLCBxdWFsaWZpZXIsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7CisgICAgICAg
IH0gZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkpIHsKKyAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bGlmaWVyID0gJDEtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNv
bnN0IDogRXZxVGVtcG9yYXJ5OworICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdl
dEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIHF1YWxpZmllcikpOworICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgJCQtPnNldFR5cGUoJDEtPmdldFR5cGUoKSk7CisgICAgICAg
IH0KICAgICB9CiAgICAgfCBmdW5jdGlvbl9jYWxsIHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9
Ci0gICAgfCBwb3N0Zml4X2V4cHJlc3Npb24gRE9UIEZJRUxEX1NFTEVDVElPTiB7CisgICAgfCBw
b3N0Zml4X2V4cHJlc3Npb24gRE9UIGlkZW50aWZpZXIgewogICAgICAgICBpZiAoJDEtPmlzQXJy
YXkoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDMubGluZSwgImNhbm5vdCBhcHBs
eSBkb3Qgb3BlcmF0b3IgdG8gYW4gYXJyYXkiLCAiLiIpOworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoQDMsICJjYW5ub3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICgkMS0+aXNWZWN0b3IoKSkgewogICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0g
ICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJzZVZlY3RvckZpZWxkcygqJDMuc3RyaW5nLCAk
MS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAkMy5saW5lKSkgeworICAgICAgICAgICAgaWYg
KCEgY29udGV4dC0+cGFyc2VWZWN0b3JGaWVsZHMoKiQzLnN0cmluZywgJDEtPmdldE5vbWluYWxT
aXplKCksIGZpZWxkcywgQDMpKSB7CiAgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CiAg
ICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSAwOwogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCQxLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsgLy8gY29uc3RhbnQgZm9sZGlu
ZyBmb3IgdmVjdG9yIGZpZWxkcwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29u
c3RWZWN0b3JOb2RlKGZpZWxkcywgJDEsICQzLmxpbmUpOworICAgICAgICAgICAgICAgICQkID0g
Y29udGV4dC0+YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgJDEsIEAzKTsKICAgICAgICAgICAg
ICAgICBpZiAoJCQgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAgICAgICAgICQkID0gJDE7CkBAIC0zNDEsMTMgKzM2MCwxMyBAQCBw
b3N0Zml4X2V4cHJlc3Npb24KICAgICAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUo
JDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0LCAoaW50KSAo
KiQzLnN0cmluZykuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIFRTdHJpbmcgdmVjdG9yU3RyaW5nID0gKiQzLnN0cmluZzsKLSAgICAgICAgICAgICAgICBU
SW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmll
bGRzLCAkMy5saW5lKTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRJbmRleChFT3BWZWN0b3JTd2l6emxlLCAkMSwgaW5kZXgsICQyLmxpbmUpOworICAgICAg
ICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
U3dpenpsZShmaWVsZHMsIEAzKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRJbmRleChFT3BWZWN0b3JTd2l6emxlLCAkMSwgaW5kZXgsIEAyKTsKICAgICAg
ICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQ
cmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAoaW50KSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsKICAgICAg
ICAgICAgIFRNYXRyaXhGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+
cGFyc2VNYXRyaXhGaWVsZHMoKiQzLnN0cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxk
cywgJDMubGluZSkpIHsKKyAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBhcnNlTWF0cml4Rmll
bGRzKCokMy5zdHJpbmcsICQxLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsIEAzKSkgewogICAg
ICAgICAgICAgICAgIGZpZWxkcy53aG9sZVJvdyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZp
ZWxkcy53aG9sZUNvbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy5yb3cgPSAwOwpA
QCAtMzU2LDg0ICszNzUsNzggQEAgcG9zdGZpeF9leHByZXNzaW9uCiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmIChmaWVsZHMud2hvbGVSb3cgfHwgZmllbGRzLndob2xlQ29sKSB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBub24tc2NhbGFyIGZpZWxk
cyBub3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcihAMiwgIiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgQ29u
c3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAg
ICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgwKTsKLSAgICAgICAgICAgICAgICBUSW50ZXJt
VHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDMubGluZSk7
Ci0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9w
SW5kZXhEaXJlY3QsICQxLCBpbmRleCwgJDIubGluZSk7CisgICAgICAgICAgICAgICAgVEludGVy
bVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAzKTsKKyAg
ICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRl
eERpcmVjdCwgJDEsIGluZGV4LCBAMik7CiAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5
cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksRXZxVGVtcG9yYXJ5LCAk
MS0+Z2V0Tm9taW5hbFNpemUoKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAg
ICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGZpZWxkcy5jb2wgKiAkMS0+Z2V0
Tm9taW5hbFNpemUoKSArIGZpZWxkcy5yb3cpOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBl
ZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMy5saW5lKTsKLSAg
ICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRl
eERpcmVjdCwgJDEsIGluZGV4LCAkMi5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDMpOworICAgICAg
ICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGly
ZWN0LCAkMSwgaW5kZXgsIEAyKTsKICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgk
MS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKCQxLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKICAg
ICAgICAgICAgIGJvb2wgZmllbGRGb3VuZCA9IGZhbHNlOwotICAgICAgICAgICAgY29uc3QgVFR5
cGVMaXN0KiBmaWVsZHMgPSAkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOwotICAgICAgICAgICAg
aWYgKGZpZWxkcyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGlu
ZSwgInN0cnVjdHVyZSBoYXMgbm8gZmllbGRzIiwgIkludGVybmFsIEVycm9yIik7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICQkID0gJDE7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOwotICAg
ICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMtPnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICgoKmZpZWxkcylbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0g
KiQzLnN0cmluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gJDEtPmdldFR5cGUoKS5nZXRT
dHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoZmllbGRzW2ldLT5uYW1lKCkgPT0gKiQzLnN0cmluZykgeworICAgICAgICAgICAgICAg
ICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0
KCokMy5zdHJpbmcsICQxLCAkMi5saW5lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgk
JCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqKCpmaWVsZHMpW2ldLnR5cGUpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZSB0aGUgcXVhbGlmaWVyIG9mIHRoZSByZXR1cm4g
dHlwZSwgbm90IG9mIHRoZSBzdHJ1Y3R1cmUgZmllbGQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBhcyB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFy
aW91cyBzdHJ1Y3R1cmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLT5nZXRUeXBl
UG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
ICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwotICAg
ICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksICooKmZpZWxkcylbaV0udHlwZSwgJDMubGlu
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRJbmRleChFT3BJbmRleERpcmVjdFN0cnVjdCwgJDEsIGluZGV4LCAkMi5saW5lKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoZmllbGRGb3VuZCkgeworICAgICAgICAgICAgICAg
IGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAg
ICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RTdHJ1Y3QoKiQzLnN0cmluZywgJDEs
IEAyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCQkID09IDApIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICQk
ID0gJDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhl
IHJldHVybiB0eXBlLCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBmaWVsZAorICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gYXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVu
IHZhcmlvdXMgc3RydWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICQkLT5nZXRUeXBl
UG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoJDIubGluZSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICQzLnN0cmluZy0+
Y19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAg
ICAgICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOworICAgICAgICAgICAgICAgICAg
ICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1U
eXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCAqZmllbGRzW2ldLT50eXBlKCksIEAzKTsKKyAgICAgICAgICAgICAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICQx
LCBpbmRleCwgQDIpOworICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqZmllbGRzW2ld
LT50eXBlKCkpOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICIgbm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1
cmUiLCAkMy5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKKyAgICAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBmaWVsZCBzZWxl
Y3Rpb24gcmVxdWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQg
c2lkZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihA
MiwgIiBmaWVsZCBzZWxlY3Rpb24gcmVxdWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJp
eCBvbiBsZWZ0IGhhbmQgc2lkZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAg
ICAgIC8vIGRvbid0IGRlbGV0ZSAkMy5zdHJpbmcsIGl0J3MgZnJvbSB0aGUgcG9vbAogICAgIH0K
ICAgICB8IHBvc3RmaXhfZXhwcmVzc2lvbiBJTkNfT1AgewotICAgICAgICBpZiAoY29udGV4dC0+
bFZhbHVlRXJyb3JDaGVjaygkMi5saW5lLCAiKysiLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5sVmFsdWVFcnJvckNoZWNrKEAyLCAiKysiLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0
aChFT3BQb3N0SW5jcmVtZW50LCAkMSwgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwor
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdElu
Y3JlbWVudCwgJDEsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDIubGluZSwgIisrIiwg
JDEtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVy
cm9yKEAyLCAiKysiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgfQog
ICAgIHwgcG9zdGZpeF9leHByZXNzaW9uIERFQ19PUCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5s
VmFsdWVFcnJvckNoZWNrKCQyLmxpbmUsICItLSIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PmxWYWx1ZUVycm9yQ2hlY2soQDIsICItLSIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRo
KEVPcFBvc3REZWNyZW1lbnQsICQxLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0RGVj
cmVtZW50LCAkMSwgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMi5saW5lLCAiLS0iLCAk
MS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJy
b3IoQDIsICItLSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTQ2MSwx
OCArNDc0LDE4IEBAIGZ1bmN0aW9uX2NhbGwKICAgICAgICAgICAgIC8vIFRoZWlyIHBhcmFtZXRl
cnMgd2lsbCBiZSB2ZXJpZmllZCBhbGdvcml0aG1pY2FsbHkuCiAgICAgICAgICAgICAvLwogICAg
ICAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOyAgLy8gdXNlIHRoaXMg
dG8gZ2V0IHRoZSB0eXBlIGJhY2sKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1Y3Rv
ckVycm9yQ2hlY2soJDEubGluZSwgJDEuaW50ZXJtTm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkg
eworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVjayhAMSwgJDEu
aW50ZXJtTm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgewogICAgICAgICAgICAgICAgICQkID0g
MDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAg
ICAgICAvLyBJdCdzIGEgY29uc3RydWN0b3IsIG9mIHR5cGUgJ3R5cGUnLgogICAgICAgICAgICAg
ICAgIC8vCi0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvcigkMS5p
bnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgJDEubGluZSk7CisgICAgICAgICAgICAgICAg
JCQgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvcigkMS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZu
Q2FsbCwgQDEpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwgJDEubGlu
ZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVn
YXRlT3BlcmF0b3IoMCwgb3AsIEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICQkLT5z
ZXRUeXBlKHR5cGUpOwogICAgICAgICB9IGVsc2UgewpAQCAtNDgxLDEzICs0OTQsMTMgQEAgZnVu
Y3Rpb25fY2FsbAogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIGNvbnN0IFRGdW5jdGlvbiog
Zm5DYW5kaWRhdGU7CiAgICAgICAgICAgICBib29sIGJ1aWx0SW47Ci0gICAgICAgICAgICBmbkNh
bmRpZGF0ZSA9IGNvbnRleHQtPmZpbmRGdW5jdGlvbigkMS5saW5lLCBmbkNhbGwsICZidWlsdElu
KTsKKyAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKEAxLCBm
bkNhbGwsICZidWlsdEluKTsKICAgICAgICAgICAgIGlmIChmbkNhbmRpZGF0ZSkgewogICAgICAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgLy8gQSBkZWNsYXJlZCBmdW5jdGlvbi4KICAg
ICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIGlmIChidWlsdEluICYmICFmbkNhbmRp
ZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkuZW1wdHkoKSAmJgotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCQxLmxpbmUsIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNp
b24oKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVj
ayhAMSwgZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgewogICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IG9wID0gZm5DYW5kaWRhdGUtPmdldEJ1aWx0SW5PcCgpOwpAQCAtNDk5LDcgKzUxMiw3IEBAIGZ1
bmN0aW9uX2NhbGwKICAgICAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBUcmVhdCBpdCBsaWtlIGEgYnVpbHQtaW4gdW5hcnkgb3BlcmF0b3IuCiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKG9wLCAkMS5pbnRlcm1Ob2RlLCAwLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgob3AsICQxLmludGVybU5vZGUsIEAxLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9T
dHJlYW07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJi
dWlsdCBpbiB1bmFyeSBvcGVyYXRvciBmdW5jdGlvbi4gIFR5cGU6ICIgPDwgc3RhdGljX2Nhc3Q8
VEludGVybVR5cGVkKj4oJDEuaW50ZXJtTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCk7CkBAIC01
MDgsMTIgKzUyMSwxMiBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWVlFUlJPUjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQxLmludGVybUFnZ3JlZ2F0ZSwgb3AsICQxLmxp
bmUpOworICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
c2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBvcCwgQDEpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBpcyBhIHJlYWwgZnVuY3Rpb24gY2FsbAogCi0gICAgICAgICAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQxLmlu
dGVybUFnZ3JlZ2F0ZSwgRU9wRnVuY3Rpb25DYWxsLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEu
aW50ZXJtQWdncmVnYXRlLCBFT3BGdW5jdGlvbkNhbGwsIEAxKTsKICAgICAgICAgICAgICAgICAg
ICAgJCQtPnNldFR5cGUoZm5DYW5kaWRhdGUtPmdldFJldHVyblR5cGUoKSk7CiAKICAgICAgICAg
ICAgICAgICAgICAgLy8gdGhpcyBpcyBob3cgd2Uga25vdyB3aGV0aGVyIHRoZSBnaXZlbiBmdW5j
dGlvbiBpcyBhIGJ1aWx0SW4gZnVuY3Rpb24gb3IgYSB1c2VyIGRlZmluZWQgZnVuY3Rpb24KQEAg
LTU0MCw3ICs1NTMsNyBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAgICAgICAgICAgLy8gUHV0IG9u
IGEgZHVtbXkgbm9kZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAgICAgICAgICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAg
ICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDEpOwogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
NTUzLDcgKzU2Niw3IEBAIGZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9kCiAgICAgICAgICQkID0gJDE7
CiAgICAgfQogICAgIHwgcG9zdGZpeF9leHByZXNzaW9uIERPVCBmdW5jdGlvbl9jYWxsX2dlbmVy
aWMgewotICAgICAgICBjb250ZXh0LT5lcnJvcigkMy5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1
cHBvcnRlZCIsICIiKTsKKyAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJtZXRob2RzIGFyZSBu
b3Qgc3VwcG9ydGVkIiwgIiIpOwogICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICQkID0gJDM7CiAgICAgfQpAQCAtNTYyLDExICs1NzUsOSBAQCBmdW5jdGlvbl9jYWxsX29yX21l
dGhvZAogZnVuY3Rpb25fY2FsbF9nZW5lcmljCiAgICAgOiBmdW5jdGlvbl9jYWxsX2hlYWRlcl93
aXRoX3BhcmFtZXRlcnMgUklHSFRfUEFSRU4gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICAk
JC5saW5lID0gJDIubGluZTsKICAgICB9CiAgICAgfCBmdW5jdGlvbl9jYWxsX2hlYWRlcl9ub19w
YXJhbWV0ZXJzIFJJR0hUX1BBUkVOIHsKICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgJCQubGlu
ZSA9ICQyLmxpbmU7CiAgICAgfQogICAgIDsKIApAQCAtNTkyLDcgKzYwMyw3IEBAIGZ1bmN0aW9u
X2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVycwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0g
eyAwLCBuZXcgVFR5cGUoJDMtPmdldFR5cGUoKSkgfTsKICAgICAgICAgJDEuZnVuY3Rpb24tPmFk
ZFBhcmFtZXRlcihwYXJhbSk7CiAgICAgICAgICQkLmZ1bmN0aW9uID0gJDEuZnVuY3Rpb247Ci0g
ICAgICAgICQkLmludGVybU5vZGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0
ZSgkMS5pbnRlcm1Ob2RlLCAkMywgJDIubGluZSk7CisgICAgICAgICQkLmludGVybU5vZGUgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCAkMywgQDIp
OwogICAgIH0KICAgICA7CiAKQEAgLTYxNywzOSArNjI4LDM5IEBAIGZ1bmN0aW9uX2lkZW50aWZp
ZXIKICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgaWYgKCQxLm1h
dHJpeCkgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2goJDEuc2l6ZSkgewotICAgICAgICAg
ICAgICAgICAgICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
ID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0
MzsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoKCQxLnNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVj
dEZsb2F0OyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzI7ICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzM7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSA0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0
cnVjdFZlYzQ7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENv
bnN0cnVjdEZsb2F0OyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiBvcCA9IEVP
cENvbnN0cnVjdFZlYzI7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9
IEVPcENvbnN0cnVjdFZlYzM7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiBv
cCA9IEVPcENvbnN0cnVjdFZlYzQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
RWJ0SW50OgogICAgICAgICAgICAgICAgIHN3aXRjaCgkMS5zaXplKSB7Ci0gICAgICAgICAgICAg
ICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBF
T3BDb25zdHJ1Y3RJbnQ7ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICBG
UkFHX1ZFUlRfT05MWSgiaXZlYzIiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZl
YzMiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSA0OiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzQiLCAkMS5saW5lKTsgb3Ag
PSBFT3BDb25zdHJ1Y3RJVmVjNDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9
IEVPcENvbnN0cnVjdEludDsgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0g
RU9wQ29uc3RydWN0SVZlYzI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBF
T3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVP
cENvbnN0cnVjdElWZWM0OyBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEVidEJvb2w6CiAgICAgICAgICAgICAgICAgc3dp
dGNoKCQxLnNpemUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEJvb2w7ICBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMiIsICQxLmxp
bmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IDM6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMyIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0
cnVjdEJWZWMzOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJidmVjNCIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWM0OyBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdEJWZWMzOyBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1
bHQ6IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9wID09IEVPcE51bGwp
IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiY2Fubm90IGNvbnN0
cnVjdCB0aGlzIHR5cGUiLCBnZXRCYXNpY1N0cmluZygkMS50eXBlKSk7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoQDEsICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJh
c2ljU3RyaW5nKCQxLnR5cGUpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAgICAgJDEudHlwZSA9IEVidEZsb2F0OwogICAgICAgICAgICAgICAgIG9w
ID0gRU9wQ29uc3RydWN0RmxvYXQ7CkBAIC02NjEsMTQgKzY3Miw3IEBAIGZ1bmN0aW9uX2lkZW50
aWZpZXIKICAgICAgICAgJCQgPSBmdW5jdGlvbjsKICAgICB9CiAgICAgfCBJREVOVElGSUVSIHsK
LSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMS5saW5lLCAqJDEuc3Ry
aW5nKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlw
ZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0g
bmV3IFRGdW5jdGlvbigkMS5zdHJpbmcsIHR5cGUpOwotICAgICAgICAkJCA9IGZ1bmN0aW9uOwot
ICAgIH0KLSAgICB8IEZJRUxEX1NFTEVDVElPTiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNl
cnZlZEVycm9yQ2hlY2soJDEubGluZSwgKiQxLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0
LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7
CiAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCQxLnN0cmluZywg
dHlwZSk7CkBAIC02ODEsMjggKzY4NSwyOCBAQCB1bmFyeV9leHByZXNzaW9uCiAgICAgICAgICQk
ID0gJDE7CiAgICAgfQogICAgIHwgSU5DX09QIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBp
ZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygkMS5saW5lLCAiKysiLCAkMikpCisgICAgICAg
IGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKEAxLCAiKysiLCAkMikpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFVuYXJ5TWF0aChFT3BQcmVJbmNyZW1lbnQsICQyLCAkMS5saW5lLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0
aChFT3BQcmVJbmNyZW1lbnQsICQyLCBAMSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAg
ICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxp
bmUsICIrKyIsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PnVuYXJ5T3BFcnJvcihAMSwgIisrIiwgJDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAg
fQogICAgIH0KICAgICB8IERFQ19PUCB1bmFyeV9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soJDEubGluZSwgIi0tIiwgJDIpKQorICAgICAgICBpZiAo
Y29udGV4dC0+bFZhbHVlRXJyb3JDaGVjayhAMSwgIi0tIiwgJDIpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRV
bmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAkMiwgJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFi
bGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9w
UHJlRGVjcmVtZW50LCAkMiwgQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYg
KCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMS5saW5lLCAi
LS0iLCAkMi0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFy
eU9wRXJyb3IoQDEsICItLSIsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDI7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgfCB1bmFyeV9vcGVyYXRvciB1bmFyeV9leHByZXNzaW9uIHsKICAgICAgICAgaWYg
KCQxLm9wICE9IEVPcE51bGwpIHsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZFVuYXJ5TWF0aCgkMS5vcCwgJDIsICQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgk
MS5vcCwgJDIsIEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICBpZiAoJCQg
PT0gMCkgewogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yT3AgPSAiIjsKICAgICAg
ICAgICAgICAgICBzd2l0Y2goJDEub3ApIHsKQEAgLTcxMCw3ICs3MTQsNyBAQCB1bmFyeV9leHBy
ZXNzaW9uCiAgICAgICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OiBlcnJvck9wID0gIiEi
OyBicmVhazsKICAgICAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsIGVycm9y
T3AsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT51
bmFyeU9wRXJyb3IoQDEsIGVycm9yT3AsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgJCQgPSAkMjsK
ICAgICAgICAgICAgIH0KQEAgLTcyMSwyOCArNzI1LDI2IEBAIHVuYXJ5X2V4cHJlc3Npb24KIC8v
IEdyYW1tYXIgTm90ZTogIE5vIHRyYWRpdGlvbmFsIHN0eWxlIHR5cGUgY2FzdHMuCiAKIHVuYXJ5
X29wZXJhdG9yCi0gICAgOiBQTFVTICB7ICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcE51
bGw7IH0KLSAgICB8IERBU0ggIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTmVnYXRp
dmU7IH0KLSAgICB8IEJBTkcgIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTG9naWNh
bE5vdDsgfQorICAgIDogUExVUyAgeyAkJC5vcCA9IEVPcE51bGw7IH0KKyAgICB8IERBU0ggIHsg
JCQub3AgPSBFT3BOZWdhdGl2ZTsgfQorICAgIHwgQkFORyAgeyAkJC5vcCA9IEVPcExvZ2ljYWxO
b3Q7IH0KICAgICA7CiAvLyBHcmFtbWFyIE5vdGU6ICBObyAnKicgb3IgJyYnIHVuYXJ5IG9wcy4g
IFBvaW50ZXJzIGFyZSBub3Qgc3VwcG9ydGVkLgogCiBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9u
CiAgICAgOiB1bmFyeV9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbXVsdGlwbGljYXRp
dmVfZXhwcmVzc2lvbiBTVEFSIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBGUkFHX1ZFUlRf
T05MWSgiKiIsICQyLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcE11bCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9w
TXVsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIqIiwg
JDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIqIiwgJDEtPmdldENvbXBsZXRlU3Ry
aW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBt
dWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIFNMQVNIIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAg
ICBGUkFHX1ZFUlRfT05MWSgiLyIsICQyLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcERpdiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJp
bmFyeU1hdGgoRU9wRGl2LCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAg
ICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQy
LmxpbmUsICIvIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIvIiwgJDEtPmdl
dENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAg
LTc1MiwxNyArNzU0LDE3IEBAIG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24KIGFkZGl0aXZlX2V4
cHJlc3Npb24KICAgICA6IG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAg
ICAgfCBhZGRpdGl2ZV9leHByZXNzaW9uIFBMVVMgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiB7
Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wQWRk
LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICQxLCAkMywgQDIsIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIisiLCAkMS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+Ymlu
YXJ5T3BFcnJvcihAMiwgIisiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBs
ZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgJCQgPSAkMTsKICAgICAgICAgfQogICAgIH0KICAgICB8IGFkZGl0aXZlX2V4cHJlc3Npb24g
REFTSCBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BTdWIsICQxLCAkMywgJDIubGluZSwgY29udGV4
dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
aW5hcnlNYXRoKEVPcFN1YiwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAg
ICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigk
Mi5saW5lLCAiLSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiLSIsICQxLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CkBA
IC03NzYsNDMgKzc3OCw0MyBAQCBzaGlmdF9leHByZXNzaW9uCiByZWxhdGlvbmFsX2V4cHJlc3Np
b24KICAgICA6IHNoaWZ0X2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCByZWxhdGlvbmFs
X2V4cHJlc3Npb24gTEVGVF9BTkdMRSBzaGlmdF9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbiwgJDEsICQzLCAk
Mi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICQxLCAkMywgQDIsIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIjwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwg
JDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BF
cnJvcihAMiwgIjwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3Ry
aW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29u
c3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAg
ICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQog
ICAgIHwgcmVsYXRpb25hbF9leHByZXNzaW9uIFJJR0hUX0FOR0xFIHNoaWZ0X2V4cHJlc3Npb24g
IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BH
cmVhdGVyVGhhbiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRo
YW4sICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj4iLCAk
MS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIj4iLCAkMS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25z
dGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsK
LSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxp
bmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
QDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9leHByZXNzaW9uIExFX09Q
IHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmlu
YXJ5TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlP
cEVycm9yKCQyLmxpbmUsICI8PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAi
PD0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25B
cnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVs
YXRpb25hbF9leHByZXNzaW9uIEdFX09QIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFs
LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAk
MSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI+PSIsICQxLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiPj0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmco
KSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFu
dFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAg
ICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUp
OworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIp
OwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTgyMCwyMyArODIyLDIzIEBAIHJlbGF0aW9u
YWxfZXhwcmVzc2lvbgogZXF1YWxpdHlfZXhwcmVzc2lvbgogICAgIDogcmVsYXRpb25hbF9leHBy
ZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgZXF1YWxpdHlfZXhwcmVzc2lvbiBFUV9PUCByZWxh
dGlvbmFsX2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BFcXVhbCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wRXF1YWwsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYg
KCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwg
Ij09IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICI9PSIsICQxLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0g
bmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3Qo
ZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3Rh
bnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0
KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
Q29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBlcXVhbGl0eV9leHByZXNzaW9u
IE5FX09QIHJlbGF0aW9uYWxfZXhwcmVzc2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTm90RXF1YWwsICQxLCAkMywgJDIubGluZSwgY29u
dGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcE5vdEVxdWFsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlP
cEVycm9yKCQyLmxpbmUsICIhPSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAi
IT0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25B
cnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAg
LTg1NiwxMyArODU4LDEzIEBAIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uCiBsb2dpY2FsX2FuZF9l
eHByZXNzaW9uCiAgICAgOiBpbmNsdXNpdmVfb3JfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAg
ICB8IGxvZ2ljYWxfYW5kX2V4cHJlc3Npb24gQU5EX09QIGluY2x1c2l2ZV9vcl9leHByZXNzaW9u
IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BM
b2dpY2FsQW5kLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5k
LCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICImJiIsICQx
LT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiJiYiLCAkMS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25z
dGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsK
LSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxp
bmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
QDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg3MCwxMyArODcyLDEzIEBAIGxvZ2lj
YWxfYW5kX2V4cHJlc3Npb24KIGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24KICAgICA6IGxvZ2ljYWxf
YW5kX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBsb2dpY2FsX3hvcl9leHByZXNzaW9u
IFhPUl9PUCBsb2dpY2FsX2FuZF9leHByZXNzaW9uICB7Ci0gICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbFhvciwgJDEsICQzLCAkMi5saW5l
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbFhvciwgJDEsICQzLCBAMiwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiXl4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cihAMiwgIl5eIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0
YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAg
IHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMi5saW5lKTsKKyAgICAgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAyKTsKICAgICAgICAgfQogICAgIH0KICAg
ICA7CkBAIC04ODQsMTMgKzg4NiwxMyBAQCBsb2dpY2FsX3hvcl9leHByZXNzaW9uCiBsb2dpY2Fs
X29yX2V4cHJlc3Npb24KICAgICA6IGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9
CiAgICAgfCBsb2dpY2FsX29yX2V4cHJlc3Npb24gT1JfT1AgbG9naWNhbF94b3JfZXhwcmVzc2lv
biAgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVP
cExvZ2ljYWxPciwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9y
LCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICJ8fCIsICQx
LT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAifHwiLCAkMS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25z
dGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsK
LSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxp
bmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
QDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg5OCwxNSArOTAwLDE1IEBAIGxvZ2lj
YWxfb3JfZXhwcmVzc2lvbgogY29uZGl0aW9uYWxfZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF9v
cl9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbG9naWNhbF9vcl9leHByZXNzaW9uIFFV
RVNUSU9OIGV4cHJlc3Npb24gQ09MT04gYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICBp
ZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soJDIubGluZSwgJDEpKQorICAgICAgIGlmIChjb250
ZXh0LT5ib29sRXJyb3JDaGVjayhAMiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogCi0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigk
MSwgJDMsICQ1LCAkMi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU2VsZWN0aW9uKCQxLCAkMywgJDUsIEAyKTsKICAgICAgICAgaWYgKCQzLT5nZXRUeXBlKCkg
IT0gJDUtPmdldFR5cGUoKSkKICAgICAgICAgICAgICQkID0gMDsKIAogICAgICAgICBpZiAoJCQg
PT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiOiIs
ICQzLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkNS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiOiIsICQzLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAkNS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQ1OwogICAgICAgICB9CkBAIC05MTYsMTEgKzkx
OCwxMSBAQCBjb25kaXRpb25hbF9leHByZXNzaW9uCiBhc3NpZ25tZW50X2V4cHJlc3Npb24KICAg
ICA6IGNvbmRpdGlvbmFsX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCB1bmFyeV9leHBy
ZXNzaW9uIGFzc2lnbm1lbnRfb3BlcmF0b3IgYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soJDIubGluZSwgImFzc2lnbiIsICQxKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soQDIsICJhc3NpZ24iLCAkMSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEFzc2lnbigkMi5vcCwgJDEsICQzLCAkMi5saW5lKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWduKCQyLm9wLCAkMSwgJDMsIEAyKTsK
ICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9y
KCQyLmxpbmUsICJhc3NpZ24iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YXNzaWduRXJyb3IoQDIsICJhc3Np
Z24iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAg
ICAgICAgfQpAQCAtOTI4LDExICs5MzAsMTEgQEAgYXNzaWdubWVudF9leHByZXNzaW9uCiAgICAg
OwogCiBhc3NpZ25tZW50X29wZXJhdG9yCi0gICAgOiBFUVVBTCAgICAgICAgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcEFz
c2lnbjsgfQotICAgIHwgTVVMX0FTU0lHTiAgIHsgRlJBR19WRVJUX09OTFkoIio9IiwgJDEubGlu
ZSk7ICAgICAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BNdWxBc3NpZ247IH0KLSAgICB8
IERJVl9BU1NJR04gICB7IEZSQUdfVkVSVF9PTkxZKCIvPSIsICQxLmxpbmUpOyAgICAgJCQubGlu
ZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wRGl2QXNzaWduOyB9Ci0gICAgfCBBRERfQVNTSUdOICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAk
JC5vcCA9IEVPcEFkZEFzc2lnbjsgfQotICAgIHwgU1VCX0FTU0lHTiAgIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BTdWJB
c3NpZ247IH0KKyAgICA6IEVRVUFMICAgICAgICB7ICQkLm9wID0gRU9wQXNzaWduOyB9CisgICAg
fCBNVUxfQVNTSUdOICAgeyAkJC5vcCA9IEVPcE11bEFzc2lnbjsgfQorICAgIHwgRElWX0FTU0lH
TiAgIHsgJCQub3AgPSBFT3BEaXZBc3NpZ247IH0KKyAgICB8IEFERF9BU1NJR04gICB7ICQkLm9w
ID0gRU9wQWRkQXNzaWduOyB9CisgICAgfCBTVUJfQVNTSUdOICAgeyAkJC5vcCA9IEVPcFN1YkFz
c2lnbjsgfQogICAgIDsKIAogZXhwcmVzc2lvbgpAQCAtOTQwLDkgKzk0Miw5IEBAIGV4cHJlc3Np
b24KICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCBleHByZXNzaW9uIENPTU1BIGFzc2ln
bm1lbnRfZXhwcmVzc2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbW1hKCQxLCAkMywgJDIubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbW1hKCQxLCAkMywgQDIpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiLCIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKEAyLCAiLCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAkJCA9ICQzOwogICAgICAgICB9CkBAIC05NzAsMTMgKzk3MiwxMyBAQCBkZWNsYXJh
dGlvbgogICAgICAgICAgICAgY29uc3QgVFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQ
YXJhbShpKTsKICAgICAgICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUocGFy
YW0ubmFtZSwgKnBhcmFtLnR5cGUpOworICAgICAgICAgICAgICAgIFRWYXJpYWJsZSB2YXJpYWJs
ZShwYXJhbS5uYW1lLCAqcGFyYW0udHlwZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJv
dG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlx
dWVJZCgpLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5l
KSwgJDEubGluZSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
U3ltYm9sKHZhcmlhYmxlLmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLmdldE5hbWUoKSwgdmFyaWFi
bGUuZ2V0VHlwZSgpLCBAMSksIEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAkMS5saW5lKSwgJDEubGluZSk7CisgICAgICAg
ICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUo
cHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0u
dHlwZSwgQDEpLCBAMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC05
OTIsMTEgKzk5NCwxMSBAQCBkZWNsYXJhdGlvbgogICAgIH0KICAgICB8IFBSRUNJU0lPTiBwcmVj
aXNpb25fcXVhbGlmaWVyIHR5cGVfc3BlY2lmaWVyX25vX3ByZWMgU0VNSUNPTE9OIHsKICAgICAg
ICAgaWYgKCgkMiA9PSBFYnBIaWdoKSAmJiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9GUkFH
TUVOVF9TSEFERVIpICYmICFjb250ZXh0LT5mcmFnbWVudFByZWNpc2lvbkhpZ2gpIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJwcmVjaXNpb24gaXMgbm90IHN1cHBvcnRl
ZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKEAxLCAicHJlY2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVyIiwg
ImhpZ2hwIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCFjb250ZXh0LT5zeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKCAkMywg
JDIgKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImlsbGVnYWwgdHlw
ZSBhcmd1bWVudCBmb3IgZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJp
bmcoJDMudHlwZSkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJpbGxlZ2FsIHR5
cGUgYXJndW1lbnQgZm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3Ry
aW5nKCQzLnR5cGUpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
fQogICAgICAgICAkJCA9IDA7CkBAIC0xMDE2LDEyICsxMDE4LDEyIEBAIGZ1bmN0aW9uX3Byb3Rv
dHlwZQogICAgICAgICBURnVuY3Rpb24qIHByZXZEZWMgPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24q
Pihjb250ZXh0LT5zeW1ib2xUYWJsZS5maW5kKCQxLT5nZXRNYW5nbGVkTmFtZSgpKSk7CiAgICAg
ICAgIGlmIChwcmV2RGVjKSB7CiAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UmV0dXJuVHlw
ZSgpICE9ICQxLT5nZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigkMi5saW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJl
dHVybiB0eXBlIiwgJDEtPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3Qg
aGF2ZSB0aGUgc2FtZSByZXR1cm4gdHlwZSIsICQxLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNT
dHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmV2RGVjLT5nZXRQYXJh
bUNvdW50KCk7ICsraSkgewogICAgICAgICAgICAgICAgIGlmIChwcmV2RGVjLT5nZXRQYXJhbShp
KS50eXBlLT5nZXRRdWFsaWZpZXIoKSAhPSAkMS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlm
aWVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm92
ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXIgcXVhbGlmaWVy
cyIsICQxLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVz
dCBoYXZlIHRoZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgJDEtPmdldFBhcmFtKGkpLnR5
cGUtPmdldFF1YWxpZmllclN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEwMzMsNyAr
MTAzNSw2IEBAIGZ1bmN0aW9uX3Byb3RvdHlwZQogICAgICAgICAvLyBiZWluZyByZWRlY2xhcmVk
LiAgU28sIHBhc3MgYmFjayB1cCB0aGlzIGRlY2xhcmF0aW9uLCBub3QgdGhlIG9uZSBpbiB0aGUg
c3ltYm9sIHRhYmxlLgogICAgICAgICAvLwogICAgICAgICAkJC5mdW5jdGlvbiA9ICQxOwotICAg
ICAgICAkJC5saW5lID0gJDIubGluZTsKIAogICAgICAgICAvLyBXZSdyZSBhdCB0aGUgaW5uZXIg
c2NvcGUgbGV2ZWwgb2YgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzIGFuZCBib2R5IHN0YXRlbWVu
dC4KICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUgdG8gdGhlIHN1cnJvdW5k
aW5nIHNjb3BlIGluc3RlYWQuCkBAIC0xMDY5LDcgKzEwNzAsNyBAQCBmdW5jdGlvbl9oZWFkZXJf
d2l0aF9wYXJhbWV0ZXJzCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhpcyBwYXJh
bWV0ZXIgPiBmaXJzdCBpcyB2b2lkCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoJDIubGluZSwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3Ig
Jyh2b2lkKSciLCAidm9pZCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5u
b3QgYmUgYW4gYXJndW1lbnQgdHlwZSBleGNlcHQgZm9yICcodm9pZCknIiwgInZvaWQiKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGRlbGV0ZSAkMy5wYXJh
bS50eXBlOwogICAgICAgICB9IGVsc2UgewpAQCAtMTA4MywxMSArMTA4NCwxMSBAQCBmdW5jdGlv
bl9oZWFkZXJfd2l0aF9wYXJhbWV0ZXJzCiBmdW5jdGlvbl9oZWFkZXIKICAgICA6IGZ1bGx5X3Nw
ZWNpZmllZF90eXBlIElERU5USUZJRVIgTEVGVF9QQVJFTiB7CiAgICAgICAgIGlmICgkMS5xdWFs
aWZpZXIgIT0gRXZxR2xvYmFsICYmICQxLnF1YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJubyBxdWFsaWZpZXJzIGFsbG93ZWQg
Zm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZv
ciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gbWFr
ZSBzdXJlIGEgc2FtcGxlciBpcyBub3QgaW52b2x2ZWQgYXMgd2VsbC4uLgotICAgICAgICBpZiAo
Y29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAg
IGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBh
cyBhIHByb3RvdHlwZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCByZWN1cnNp
b24pCkBAIC0xMTAyLDMzICsxMTAzLDMxIEBAIGZ1bmN0aW9uX2hlYWRlcgogCiBwYXJhbWV0ZXJf
ZGVjbGFyYXRvcgogICAgIC8vIFR5cGUgKyBuYW1lCi0gICAgOiB0eXBlX3NwZWNpZmllciBJREVO
VElGSUVSIHsKKyAgICA6IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgewogICAgICAgICBpZiAo
JDEudHlwZSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5l
LCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIs
ICQyLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMi5saW5l
LCAqJDIuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhA
MiwgKiQyLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IFRQYXJhbWV0ZXIgcGFyYW0gPSB7JDIuc3RyaW5nLCBuZXcgVFR5cGUoJDEpfTsKLSAgICAgICAg
JCQubGluZSA9ICQyLmxpbmU7CiAgICAgICAgICQkLnBhcmFtID0gcGFyYW07CiAgICAgfQotICAg
IHwgdHlwZV9zcGVjaWZpZXIgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVz
c2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAgICB8IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgTEVG
VF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIC8v
IENoZWNrIHRoYXQgd2UgY2FuIG1ha2UgYW4gYXJyYXkgb3V0IG9mIHRoaXMgdHlwZQotICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMy5saW5lLCAkMSkpCisgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAzLCAkMSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JD
aGVjaygkMi5saW5lLCAqJDIuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVk
RXJyb3JDaGVjayhAMiwgKiQyLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAKICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVF
cnJvckNoZWNrKCQzLmxpbmUsICQ0LCBzaXplKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
U2l6ZUVycm9yQ2hlY2soQDMsICQ0LCBzaXplKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgJDEuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAKICAgICAgICAgVFR5cGUq
IHR5cGUgPSBuZXcgVFR5cGUoJDEpOwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAkMi5z
dHJpbmcsIHR5cGUgfTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxpbmU7CiAgICAgICAgICQkLnBh
cmFtID0gcGFyYW07CiAgICAgfQogICAgIDsKQEAgLTExNDQsMTQgKzExNDMsMTQgQEAgcGFyYW1l
dGVyX2RlY2xhcmF0aW9uCiAgICAgLy8KICAgICA6IHR5cGVfcXVhbGlmaWVyIHBhcmFtZXRlcl9x
dWFsaWZpZXIgcGFyYW1ldGVyX2RlY2xhcmF0b3IgewogICAgICAgICAkJCA9ICQzOwotICAgICAg
ICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCQzLmxpbmUsICQxLnF1YWxpZmllciwgJDIs
ICQkLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKEAz
LCAkMS5xdWFsaWZpZXIsICQyLCAkJC5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICB9CiAgICAgfCBwYXJhbWV0ZXJfcXVhbGlmaWVyIHBhcmFtZXRlcl9k
ZWNsYXJhdG9yIHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFt
ZXRlclNhbXBsZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxLCAqJDIucGFyYW0udHlwZSkpCisgICAg
ICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5w
YXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYg
KGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5w
YXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMiwgRXZx
VGVtcG9yYXJ5LCAkMSwgJCQucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgfQogICAgIC8vCkBAIC0xMTU5LDE0ICsxMTU4LDE0IEBAIHBhcmFtZXRlcl9k
ZWNsYXJhdGlvbgogICAgIC8vCiAgICAgfCB0eXBlX3F1YWxpZmllciBwYXJhbWV0ZXJfcXVhbGlm
aWVyIHBhcmFtZXRlcl90eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDM7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soJDMubGluZSwgJDEucXVhbGlmaWVyLCAkMiwg
JCQucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soQDMs
ICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgIH0KICAgICB8IHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX3R5
cGVfc3BlY2lmaWVyIHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBh
cmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxLCAqJDIucGFyYW0udHlwZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICok
Mi5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAg
aWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAk
JC5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMiwg
RXZxVGVtcG9yYXJ5LCAkMSwgJCQucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgfQogICAgIDsKQEAgLTExOTcsODMgKzExOTYsODMgQEAgaW5pdF9kZWNs
YXJhdG9yX2xpc3QKICAgICA6IHNpbmdsZV9kZWNsYXJhdGlvbiB7CiAgICAgICAgICQkID0gJDE7
CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiB7Cisg
ICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIHsKICAgICAgICAgaWYg
KCQxLnR5cGUudHlwZSA9PSBFYnRJbnZhcmlhbnQgJiYgISQzLnN5bWJvbCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDMubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmll
ciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMy5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoQDMsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMg
aW52YXJpYW50IiwgJDMuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgfQogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQzLnN0cmluZywgVFR5cGUoJDEudHlw
ZSksICQzLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCBzeW1ib2wsICQzLmxpbmUpOwor
ICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
U3ltYm9sKDAsICokMy5zdHJpbmcsIFRUeXBlKCQxLnR5cGUpLCBAMyk7CisgICAgICAgICQkLmlu
dGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmlu
dGVybU5vZGUsIHN5bWJvbCwgQDMpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0
cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDMubGluZSwgJCQudHlwZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkJC50eXBlKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENv
bnN0RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkpCisgICAg
ICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAk
JC50eXBlLCBmYWxzZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAg
ICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0
RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkpCisgICAg
ICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywgJCQudHlw
ZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBp
ZiAoc3ltYm9sICYmIHZhcmlhYmxlKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJs
ZS0+Z2V0VW5pcXVlSWQoKSk7CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09N
TUEgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7Ci0gICAgICAgIGlmIChj
b250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAg
IHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgUklH
SFRfQlJBQ0tFVCB7CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKEAzLCAkMS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAg
ICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3Ry
aW5nLCAkMS50eXBlLCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVy
cm9yQ2hlY2soQDMsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQkID0gJDE7CiAKLSAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5VHlwZUVycm9yQ2hlY2soJDQubGluZSwgJDEudHlwZSkgfHwgY29udGV4dC0+YXJy
YXlRdWFsaWZpZXJFcnJvckNoZWNrKCQ0LmxpbmUsICQxLnR5cGUpKQorICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjayhANCwgJDEudHlwZSkgfHwgY29udGV4dC0+YXJyYXlR
dWFsaWZpZXJFcnJvckNoZWNrKEA0LCAkMS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAkMS50eXBlLnNldEFycmF5KHRy
dWUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZTsKLSAgICAgICAgICAgIGlmIChj
b250ZXh0LT5hcnJheUVycm9yQ2hlY2soJDQubGluZSwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFy
aWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhANCwgKiQz
LnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgfQogICAgIH0KLSAgICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENP
TU1BIElERU5USUZJRVIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJB
Q0tFVCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQz
LmxpbmUsICQxLnR5cGUpKQorICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRp
ZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAg
ICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0
LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHRy
dWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMywgKiQz
LnN0cmluZywgJDEudHlwZSwgdHJ1ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAKICAgICAgICAgJCQgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJy
b3JDaGVjaygkNC5saW5lLCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9y
Q2hlY2soJDQubGluZSwgJDEudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVF
cnJvckNoZWNrKEA0LCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hl
Y2soQDQsICQxLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmFycmF5U2l6ZUVycm9yQ2hlY2soJDQubGluZSwgJDUsIHNpemUpKQorICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDQsICQ1LCBzaXplKSkKICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkMS50eXBlLnNldEFycmF5KHRy
dWUsIHNpemUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCQ0LmxpbmUsICokMy5zdHJpbmcsICQx
LnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hl
Y2soQDQsICokMy5zdHJpbmcsICQxLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlID0gVFR5cGUoJDEudHlw
ZSk7CiAgICAgICAgICAgICB0eXBlLnNldEFycmF5U2l6ZShzaXplKTsKLSAgICAgICAgICAgICQk
LmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQx
LmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2
YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICokMy5zdHJpbmcsIHR5cGUsICQzLmxpbmUpLCAk
My5saW5lKTsKKyAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICokMy5z
dHJpbmcsIHR5cGUsIEAzKSwgQDMpOwogICAgICAgICB9CiAgICAgfQotICAgIHwgaW5pdF9kZWNs
YXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUp
KQorICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBFUVVBTCBpbml0
aWFsaXplciB7CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNr
KEAzLCAkMS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAg
ICAkJCA9ICQxOwogCiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBp
ZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMy5saW5lLCAqJDMuc3RyaW5nLCAkMS50
eXBlLCAkNSwgaW50ZXJtTm9kZSkpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5p
dGlhbGl6ZXIoQDMsICokMy5zdHJpbmcsICQxLnR5cGUsICQ1LCBpbnRlcm1Ob2RlKSkgewogICAg
ICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIGJ1aWxkIHRoZSBpbnRlcm1lZGlhdGUgcmVwcmVz
ZW50YXRpb24KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBpZiAoaW50ZXJtTm9kZSkKLSAg
ICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dy
ZWdhdGUoJDEuaW50ZXJtTm9kZSwgaW50ZXJtTm9kZSwgJDQubGluZSk7CisgICAgICAgICQkLmlu
dGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmlu
dGVybU5vZGUsIGludGVybU5vZGUsIEA0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSAkMS5pbnRlcm1BZ2dyZWdhdGU7CiAgICAgICAgIH0g
ZWxzZSB7CkBAIC0xMjg2LDc5ICsxMjg1LDc5IEBAIGluaXRfZGVjbGFyYXRvcl9saXN0CiBzaW5n
bGVfZGVjbGFyYXRpb24KICAgICA6IGZ1bGx5X3NwZWNpZmllZF90eXBlIHsKICAgICAgICAgJCQu
dHlwZSA9ICQxOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIi
LCBUVHlwZSgkMSksICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgVFR5cGUoJDEpLCBAMSksIEAxKTsKICAgICB9Ci0gICAg
fCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIHsKLSAgICAgICAgVEludGVybVN5bWJv
bCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5n
LCBUVHlwZSgkMSksICQyLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgIHwg
ZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmllciB7CisgICAgICAgIFRJbnRlcm1TeW1ib2wq
IHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywg
VFR5cGUoJDEpLCBAMik7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAgICAKLSAgICAgICAg
aWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDIubGluZSwgJCQudHlwZSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkJC50
eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29u
dGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nLCAkJC50eXBl
LCBmYWxzZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAy
LCAqJDIuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgICQkLnR5cGUgPSAkMTsKIAogICAgICAg
ICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRF
cnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcsICQkLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAg
ICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nLCAkJC50eXBl
LCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlm
ICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxl
LT5nZXRVbmlxdWVJZCgpKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVO
VElGSUVSIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgY29udGV4dC0+ZXJy
b3IoJDIubGluZSwgInVuc2l6ZWQgYXJyYXkgZGVjbGFyYXRpb25zIG5vdCBzdXBwb3J0ZWQiLCAk
Mi5zdHJpbmctPmNfc3RyKCkpOworICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmll
ciBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGNvbnRleHQtPmVycm9yKEAy
LCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIsICQyLnN0cmluZy0+
Y19zdHIoKSk7CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUSW50ZXJt
U3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5z
dHJpbmcsIFRUeXBlKCQxKSwgJDIubGluZSk7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgJDIubGluZSk7Cisg
ICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRT
eW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEpLCBAMik7CisgICAgICAgICQkLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgQDIp
OwogICAgICAgICAkJC50eXBlID0gJDE7CiAgICAgfQotICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5
cGUgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFD
S0VUIHsKKyAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VU
IGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIFRUeXBlIHR5cGUg
PSBUVHlwZSgkMSk7CiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlTaXplRXJyb3JDaGVjaygkMi5saW5lLCAkNCwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5hcnJheVNpemVFcnJvckNoZWNrKEAyLCAkNCwgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwotICAgICAgICBU
SW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAs
ICokMi5zdHJpbmcsIHR5cGUsICQyLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUpOwor
ICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
U3ltYm9sKDAsICokMi5zdHJpbmcsIHR5cGUsIEAyKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAg
ICAgICAgIAotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygk
Mi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAg
aWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZywg
JDEsIHRydWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhA
MiwgKiQyLnN0cmluZywgJDEsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogCiAgICAgICAgICQkLnR5cGUgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlU
eXBlRXJyb3JDaGVjaygkMy5saW5lLCAkMSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJv
ckNoZWNrKCQzLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9y
Q2hlY2soQDMsICQxKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDMsICQx
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJv
ckNoZWNrKCQzLmxpbmUsICQ0LCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJh
eVNpemVFcnJvckNoZWNrKEAzLCAkNCwgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogCiAgICAgICAgICAgICAkMS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAg
ICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmFycmF5RXJyb3JDaGVjaygkMy5saW5lLCAqJDIuc3RyaW5nLCAkMSwgdmFyaWFibGUpKQorICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhAMywgKiQyLnN0cmluZywgJDEs
IHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgICAgIHN5bWJvbC0+c2V0
SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHwgZnVs
bHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAg
ICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgRVFVQUwgaW5pdGlhbGl6ZXIgewor
ICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhAMiwgJDEpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQkLnR5cGUgPSAkMTsK
IAogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0
LT5leGVjdXRlSW5pdGlhbGl6ZXIoJDIubGluZSwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1O
b2RlKSkgeworICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcihAMiwgKiQy
LnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAvLwogICAgICAgICAvLyBC
dWlsZCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAgICAgICAgLy8KICAgICAgICAgICAg
IGlmKGludGVybU5vZGUpCi0gICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgJDMubGluZSk7Cisg
ICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgQDMpOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0x
MzY3LDExOCArMTM2Niw1MCBAQCBzaW5nbGVfZGVjbGFyYXRpb24KICAgICAgICAgfQogICAgIH0K
ICAgICB8IElOVkFSSUFOVCBJREVOVElGSUVSIHsKLSAgICAgICAgVkVSVEVYX09OTFkoImludmFy
aWFudCBkZWNsYXJhdGlvbiIsICQxLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFs
RXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCks
ICJpbnZhcmlhbnQgdmFyeWluZyIpKQorICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRl
Y2xhcmF0aW9uIiwgQDEpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhA
MSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlp
bmciKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQudHlwZS5z
ZXRCYXNpYyhFYnRJbnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICQyLmxpbmUpOwor
ICAgICAgICAkJC50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWlu
Z091dCwgQDIpOwogICAgICAgICBpZiAoISQyLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJl
ZCBhcyBpbnZhcmlhbnQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDIsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50
IiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAg
ICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wg
KnN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywg
VFR5cGUoJCQudHlwZSksICQyLmxpbmUpOwotICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRl
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAkMi5saW5lKTsK
KyAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJCQudHlwZSksIEAyKTsKKyAgICAgICAg
ICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVn
YXRlKHN5bWJvbCwgQDIpOwogICAgICAgICB9CiAgICAgfQotCi0vLwotLy8gUGxhY2UgaG9sZGVy
IGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vICAgIHwgYnVmZmVyX3NwZWNp
ZmllciB7Ci0vLyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKLS8vICAgIH0KICAgICA7
CiAKLS8vIEdyYW1tYXIgTm90ZTogIE5vICdlbnVtJywgb3IgJ3R5cGVkZWYnLgotCi0vLwotLy8g
UGxhY2UgaG9sZGVyIGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vJXR5cGUg
PGludGVybT4gYnVmZmVyX2RlY2xhcmF0aW9uCi0vLyV0eXBlIDxpbnRlcm0udHlwZT4gYnVmZmVy
X3NwZWNpZmllciBpbnB1dF9vcl9vdXRwdXQgYnVmZmVyX2RlY2xhcmF0aW9uX2xpc3QKLS8vYnVm
ZmVyX3NwZWNpZmllcgotLy8gICAgOiBpbnB1dF9vcl9vdXRwdXQgTEVGVF9CUkFDRSBidWZmZXJf
ZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7Ci0vLyAgICB9Ci0vLyAgICA7Ci0vLwotLy9p
bnB1dF9vcl9vdXRwdXQKLS8vICAgIDogSU5QVVQgewotLy8gICAgICAgIGlmIChjb250ZXh0LT5n
bG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSwgImlucHV0IikpCi0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLS8vICAg
ICAgICBVTlBBQ0tfT05MWSgiaW5wdXQiLCAkMS5saW5lKTsKLS8vICAgICAgICAkJC5xdWFsaWZp
ZXIgPSBFdnFJbnB1dDsKLS8vICAgIH0KLS8vICAgIHwgT1VUUFVUIHsKLS8vICAgICAgICBpZiAo
Y29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCksICJvdXRwdXQiKSkKLS8vICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotLy8gICAgICAgIFBBQ0tfT05MWSgib3V0cHV0IiwgJDEubGluZSk7Ci0vLyAgICAgICAg
JCQucXVhbGlmaWVyID0gRXZxT3V0cHV0OwotLy8gICAgfQotLy8gICAgOwotCi0vLwotLy8gUGxh
Y2UgaG9sZGVyIGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vYnVmZmVyX2Rl
Y2xhcmF0aW9uX2xpc3QKLS8vICAgIDogYnVmZmVyX2RlY2xhcmF0aW9uIHsKLS8vICAgIH0KLS8v
ICAgIHwgYnVmZmVyX2RlY2xhcmF0aW9uX2xpc3QgYnVmZmVyX2RlY2xhcmF0aW9uIHsKLS8vICAg
IH0KLS8vICAgIDsKLQotLy8KLS8vIElucHV0L291dHB1dCBzZW1hbnRpY3M6Ci0vLyAgIGZsb2F0
IG11c3QgYmUgMTYgb3IgMzIgYml0cwotLy8gICBmbG9hdCBhbGlnbm1lbnQgcmVzdHJpY3Rpb25z
PwotLy8gICBjaGVjayBmb3Igb25seSBvbmUgaW5wdXQgYW5kIG9ubHkgb25lIG91dHB1dAotLy8g
ICBzdW0gb2YgYml0ZmllbGRzIGhhcyB0byBiZSBtdWx0aXBsZSBvZiAzMgotLy8KLQotLy8KLS8v
IFBsYWNlIGhvbGRlciBmb3IgdGhlIHBhY2svdW5wYWNrIGxhbmd1YWdlcy4KLS8vCi0vL2J1ZmZl
cl9kZWNsYXJhdGlvbgotLy8gICAgOiB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIENPTE9OIGNv
bnN0YW50X2V4cHJlc3Npb24gU0VNSUNPTE9OIHsKLS8vICAgICAgICBpZiAoY29udGV4dC0+cmVz
ZXJ2ZWRFcnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcsIGNvbnRleHQpKQotLy8gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgJCQudmFyaWFibGUgPSBuZXcgVFZh
cmlhYmxlKCQyLnN0cmluZywgJDEpOwotLy8gICAgICAgIGlmICghIGNvbnRleHQtPnN5bWJvbFRh
YmxlLmluc2VydCgqJCQudmFyaWFibGUpKSB7Ci0vLyAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCQyLmxpbmUsICJyZWRlZmluaXRpb24iLCAkJC52YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkp
OwotLy8gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgICAgIC8vIGRv
bid0IGhhdmUgdG8gZGVsZXRlICQkLnZhcmlhYmxlLCB0aGUgcG9vbCBwb3Agd2lsbCB0YWtlIGNh
cmUgb2YgaXQKLS8vICAgICAgICB9Ci0vLyAgICB9Ci0vLyAgICA7Ci0KIGZ1bGx5X3NwZWNpZmll
ZF90eXBlCiAgICAgOiB0eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDE7CiAKICAgICAg
ICAgaWYgKCQxLmFycmF5KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAi
bm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOworICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDEsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkMS5zZXRBcnJheShmYWxz
ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCB0eXBlX3F1YWxpZmllciB0eXBlX3NwZWNpZmll
ciAgewogICAgICAgICBpZiAoJDIuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCQyLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcihAMiwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJy
YXkiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQyLnNl
dEFycmF5KGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS5xdWFsaWZpZXIgPT0g
RXZxQXR0cmlidXRlICYmCiAgICAgICAgICAgICAoJDIudHlwZSA9PSBFYnRCb29sIHx8ICQyLnR5
cGUgPT0gRWJ0SW50KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgImNh
bm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50Iiwg
Z2V0UXVhbGlmaWVyU3RyaW5nKCQxLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGlmICgoJDEucXVhbGlmaWVyID09IEV2cVZh
cnlpbmdJbiB8fCAkMS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ091dCkgJiYKICAgICAgICAgICAg
ICgkMi50eXBlID09IEVidEJvb2wgfHwgJDIudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVh
bGlmaWVyU3RyaW5nKCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDIsICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlm
aWVyKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAg
ICAgJCQgPSAkMjsKQEAgLTE0ODgsMzQgKzE0MTksMzQgQEAgZnVsbHlfc3BlY2lmaWVkX3R5cGUK
IAogdHlwZV9xdWFsaWZpZXIKICAgICA6IENPTlNUX1FVQUwgewotICAgICAgICAkJC5zZXRCYXNp
YyhFYnRWb2lkLCBFdnFDb25zdCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFZv
aWQsIEV2cUNvbnN0LCBAMSk7CiAgICAgfQogICAgIHwgQVRUUklCVVRFIHsKLSAgICAgICAgVkVS
VEVYX09OTFkoImF0dHJpYnV0ZSIsICQxLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2xv
YmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCksICJhdHRyaWJ1dGUiKSkKKyAgICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsIEAxKTsK
KyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soQDEsIGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUs
ICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUsIEAx
KTsKICAgICB9CiAgICAgfCBWQVJZSU5HIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVy
cm9yQ2hlY2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAi
dmFyeWluZyIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9
PSBTSF9WRVJURVhfU0hBREVSKQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZx
VmFyeWluZ091dCwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBF
dnFWYXJ5aW5nT3V0LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICQkLnNldEJhc2lj
KEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNp
YyhFYnRWb2lkLCBFdnFWYXJ5aW5nSW4sIEAxKTsKICAgICB9CiAgICAgfCBJTlZBUklBTlQgVkFS
WUlORyB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikp
CisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9
PSBTSF9WRVJURVhfU0hBREVSKQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZx
SW52YXJpYW50VmFyeWluZ091dCwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhF
YnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdJbiwgJDEubGlu
ZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5n
SW4sIEAxKTsKICAgICB9CiAgICAgfCBVTklGT1JNIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmds
b2JhbEVycm9yQ2hlY2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpLCAidW5pZm9ybSIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhA
MSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lk
LCBFdnFVbmlmb3JtLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZx
VW5pZm9ybSwgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTE1MjUsNyArMTQ1Niw3IEBAIHR5cGVf
c3BlY2lmaWVyCiAKICAgICAgICAgaWYgKCQkLnByZWNpc2lvbiA9PSBFYnBVbmRlZmluZWQpIHsK
ICAgICAgICAgICAgICQkLnByZWNpc2lvbiA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmdldERlZmF1
bHRQcmVjaXNpb24oJDEudHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9u
RXJyb3JDaGVjaygkMS5saW5lLCAkJC5wcmVjaXNpb24sICQxLnR5cGUpKSB7CisgICAgICAgICAg
ICBpZiAoY29udGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVjayhAMSwgJCQucHJlY2lzaW9uLCAkMS50
eXBlKSkgewogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtMTU1NSwxMSArMTQ4NiwxMSBAQCB0eXBlX3NwZWNpZmllcl9ub19w
cmVjCiAgICAgfCB0eXBlX3NwZWNpZmllcl9ub25hcnJheSBMRUZUX0JSQUNLRVQgY29uc3RhbnRf
ZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKICAgICAgICAgJCQgPSAkMTsKIAotICAgICAgICBp
ZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0g
ICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygkMi5saW5lLCAkMywg
c2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhAMiwg
JDMsIHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICQkLnNldEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICB9CkBAIC0xNTY5LDExOCArMTUw
MCwxMDUgQEAgdHlwZV9zcGVjaWZpZXJfbm9fcHJlYwogdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkK
ICAgICA6IFZPSURfVFlQRSB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNl
dEJhc2ljKEVidFZvaWQsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBGTE9BVF9UWVBFIHsKICAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRG
bG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFs
LCBAMSk7CiAgICAgfQogICAgIHwgSU5UX1RZUEUgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7Cisg
ICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IEJPT0xf
VFlQRSB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEJv
b2wsIHF1YWwsIEAxKTsKICAgICB9Ci0vLyAgICB8IFVOU0lHTkVEIElOVF9UWVBFIHsKLS8vICAg
ICAgICBQQUNLX1VOUEFDS19PTkxZKCJ1bnNpZ25lZCIsICQxLmxpbmUpOwotLy8gICAgICAgIFRR
dWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2
cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLS8vICAgICAgICAkJC5zZXRCYXNpYyhFYnRJbnQsIHF1
YWwsICQxLmxpbmUpOwotLy8gICAgfQogICAgIHwgVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxp
bmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAk
JC5zZXRBZ2dyZWdhdGUoMik7CiAgICAgfQogICAgIHwgVkVDMyB7CiAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQx
LmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwgVkVDNCB7CiAgICAgICAgIFRRdWFs
aWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUds
b2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWws
ICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAg
ICAgICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgQlZFQzIgewogICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1
YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCBAMSk7CiAg
ICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAgfCBCVkVDMyB7CiAgICAgICAg
IFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/
IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwg
cXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsIEAxKTsK
ICAgICAgICAgJCQuc2V0QWdncmVnYXRlKDMpOwogICAgIH0KICAgICB8IEJWRUM0IHsKICAgICAg
ICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
ID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29s
LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgQDEp
OwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgSVZFQzIgewogICAg
ICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidElu
dCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEp
OwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMik7CiAgICAgfQogICAgIHwgSVZFQzMgewogICAg
ICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidElu
dCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEp
OwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwgSVZFQzQgewogICAg
ICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidElu
dCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEp
OwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgTUFUUklYMiB7Ci0g
ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJtYXQyIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQx
LmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoMiwgdHJ1ZSk7CiAgICAgfQogICAgIHwgTUFUUklYMyB7Ci0gICAg
ICAgIEZSQUdfVkVSVF9PTkxZKCJtYXQzIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxp
bmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAk
JC5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7CiAgICAgfQogICAgIHwgTUFUUklYNCB7Ci0gICAgICAg
IEZSQUdfVkVSVF9PTkxZKCJtYXQ0IiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUp
OworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5z
ZXRBZ2dyZWdhdGUoNCwgdHJ1ZSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJEIHsKLSAgICAgICAg
RlJBR19WRVJUX09OTFkoInNhbXBsZXIyRCIsICQxLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgQDEpOwog
ICAgIH0KICAgICB8IFNBTVBMRVJDVUJFIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBs
ZXJDdWJlIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlckN1YmUsIHF1YWwsICQxLmxpbmUpOworICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IFNB
TVBMRVJfRVhURVJOQUxfT0VTIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVu
c2lvbigiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigkMS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMi
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJz
YW1wbGVyRXh0ZXJuYWxPRVMiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckV4dGVybmFsT0VTIiwgJDEu
bGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwg
U0FNUExFUjJEUkVDVCB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24o
IkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigkMS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CisgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcihAMSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVj
dCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAg
IEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyMkRSZWN0IiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFs
aWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUds
b2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVj
dCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3Qs
IHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBzdHJ1Y3Rfc3BlY2lmaWVyIHsKLSAgICAgICAgRlJB
R19WRVJUX09OTFkoInN0cnVjdCIsICQxLmxpbmUpOwogICAgICAgICAkJCA9ICQxOwogICAgICAg
ICAkJC5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgfQpAQCAtMTY5MSwyOSArMTYwOSwyOSBAQCB0
eXBlX3NwZWNpZmllcl9ub25hcnJheQogICAgICAgICAvLwogICAgICAgICBUVHlwZSYgc3RydWN0
dXJlID0gc3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oJDEuc3ltYm9sKS0+Z2V0VHlwZSgpOwogICAg
ICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0
cnVjdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgcXVh
bCwgQDEpOwogICAgICAgICAkJC51c2VyRGVmID0gJnN0cnVjdHVyZTsKICAgICB9CiAgICAgOwog
CiBzdHJ1Y3Rfc3BlY2lmaWVyCi0gICAgOiBTVFJVQ1QgSURFTlRJRklFUiBMRUZUX0JSQUNFIHsg
aWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oJDIubGluZSwgKiQyLnN0cmluZykp
IGNvbnRleHQtPnJlY292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFD
RSB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDIubGluZSwgKiQy
LnN0cmluZykpCisgICAgOiBTVFJVQ1QgaWRlbnRpZmllciBMRUZUX0JSQUNFIHsgaWYgKGNvbnRl
eHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oQDIsICokMi5zdHJpbmcpKSBjb250ZXh0LT5yZWNv
dmVyKCk7IH0gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0UgeworICAgICAgICBp
ZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3
IFRUeXBlKCQ1LCAqJDIuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBU
VHlwZShuZXcgVFN0cnVjdHVyZSgkMi5zdHJpbmcsICQ1KSk7CiAgICAgICAgIFRWYXJpYWJsZSog
dXNlclR5cGVEZWYgPSBuZXcgVFZhcmlhYmxlKCQyLnN0cmluZywgKnN0cnVjdHVyZSwgdHJ1ZSk7
CiAgICAgICAgIGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgqdXNlclR5cGVEZWYp
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAicmVkZWZpbml0aW9uIiwg
JDIuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cihAMiwgInJlZGVmaW5pdGlvbiIsICQyLnN0cmluZy0+Y19zdHIoKSwgInN0cnVjdCIpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQkLnNldEJh
c2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksIEAxKTsKICAgICAgICAgJCQudXNlckRlZiA9IHN0
cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CiAgICAg
fQotICAgIHwgU1RSVUNUIExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNs
YXJhdGlvbigkMi5saW5lLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVj
dF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKLSAgICAgICAgVFR5cGUqIHN0cnVjdHVy
ZSA9IG5ldyBUVHlwZSgkNCwgVFN0cmluZygiIikpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRT
dHJ1Y3QsIEV2cVRlbXBvcmFyeSwgJDEubGluZSk7CisgICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSB7
IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKEAyLCAqJDIuc3RyaW5nKSkgY29u
dGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsK
KyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZShOZXdQ
b29sVFN0cmluZygiIiksICQ0KSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgRXZx
VGVtcG9yYXJ5LCBAMSk7CiAgICAgICAgICQkLnVzZXJEZWYgPSBzdHJ1Y3R1cmU7CiAgICAgICAg
IGNvbnRleHQtPmV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwogICAgIH0KQEAgLTE3MjUsMTQgKzE2
NDMsMTUgQEAgc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QKICAgICB9CiAgICAgfCBzdHJ1Y3RfZGVj
bGFyYXRpb25fbGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gewogICAgICAgICAkJCA9ICQxOwotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICQyLT5zaXplKCk7ICsraSkgewotICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCAkJC0+c2l6ZSgpOyArK2opIHsK
LSAgICAgICAgICAgICAgICBpZiAoKCokJClbal0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKCok
MilbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoKCokMilbaV0ubGluZSwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVy
ZToiLCAic3RydWN0IiwgKCokMilbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkuY19zdHIoKSk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgJDItPnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBURmllbGQqIGZpZWxkID0gKCokMilbaV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBq
ID0gMDsgaiA8ICQkLT5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIGlmICgoKiQkKVtq
XS0+bmFtZSgpID09IGZpZWxkLT5uYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDIsICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVj
dCIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAkJC0+cHVzaF9iYWNrKCgqJDIpW2ldKTsKKyAgICAgICAgICAgICQkLT5wdXNoX2JhY2soZmll
bGQpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTE3NDEsMTQgKzE2NjAsMTQgQEAgc3Ry
dWN0X2RlY2xhcmF0aW9uCiAgICAgOiB0eXBlX3NwZWNpZmllciBzdHJ1Y3RfZGVjbGFyYXRvcl9s
aXN0IFNFTUlDT0xPTiB7CiAgICAgICAgICQkID0gJDI7CiAKLSAgICAgICAgaWYgKGNvbnRleHQt
PnZvaWRFcnJvckNoZWNrKCQxLmxpbmUsICgqJDIpWzBdLnR5cGUtPmdldEZpZWxkTmFtZSgpLCAk
MSkpIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNoZWNrKEAxLCAoKiQyKVswXS0+
bmFtZSgpLCAkMSkpIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
fQogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICQkLT5zaXplKCk7ICsraSkg
ewogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIENhcmVmdWwgbm90IHRvIHJlcGxhY2Ug
YWxyZWFkeSBrbm93biBhc3BlY3RzIG9mIHR5cGUsIGxpa2UgYXJyYXktbmVzcwogICAgICAgICAg
ICAgLy8KLSAgICAgICAgICAgIFRUeXBlKiB0eXBlID0gKCokJClbaV0udHlwZTsKKyAgICAgICAg
ICAgIFRUeXBlKiB0eXBlID0gKCokJClbaV0tPnR5cGUoKTsKICAgICAgICAgICAgIHR5cGUtPnNl
dEJhc2ljVHlwZSgkMS50eXBlKTsKICAgICAgICAgICAgIHR5cGUtPnNldE5vbWluYWxTaXplKCQx
LnNpemUpOwogICAgICAgICAgICAgdHlwZS0+c2V0TWF0cml4KCQxLm1hdHJpeCk7CkBAIC0xNzU2
LDI2ICsxNjc1LDIzIEBAIHN0cnVjdF9kZWNsYXJhdGlvbgogCiAgICAgICAgICAgICAvLyBkb24n
dCBhbGxvdyBhcnJheXMgb2YgYXJyYXlzCiAgICAgICAgICAgICBpZiAodHlwZS0+aXNBcnJheSgp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soJDEu
bGluZSwgJDEpKQorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNo
ZWNrKEAxLCAkMSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgkMS5hcnJheSkKICAgICAgICAgICAgICAgICB0
eXBlLT5zZXRBcnJheVNpemUoJDEuYXJyYXlTaXplKTsKLSAgICAgICAgICAgIGlmICgkMS51c2Vy
RGVmKSB7CisgICAgICAgICAgICBpZiAoJDEudXNlckRlZikKICAgICAgICAgICAgICAgICB0eXBl
LT5zZXRTdHJ1Y3QoJDEudXNlckRlZi0+Z2V0U3RydWN0KCkpOwotICAgICAgICAgICAgICAgIHR5
cGUtPnNldFR5cGVOYW1lKCQxLnVzZXJEZWYtPmdldFR5cGVOYW1lKCkpOwotICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soJDEu
bGluZSwgKnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vy
cm9yQ2hlY2soQDEsICooKiQkKVtpXSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIDsKIAogc3RydWN0X2Rl
Y2xhcmF0b3JfbGlzdAogICAgIDogc3RydWN0X2RlY2xhcmF0b3IgewotICAgICAgICAkJCA9IE5l
d1Bvb2xUVHlwZUxpc3QoKTsKKyAgICAgICAgJCQgPSBOZXdQb29sVEZpZWxkTGlzdCgpOwogICAg
ICAgICAkJC0+cHVzaF9iYWNrKCQxKTsKICAgICB9CiAgICAgfCBzdHJ1Y3RfZGVjbGFyYXRvcl9s
aXN0IENPTU1BIHN0cnVjdF9kZWNsYXJhdG9yIHsKQEAgLTE3ODQsMjYgKzE3MDAsMjQgQEAgc3Ry
dWN0X2RlY2xhcmF0b3JfbGlzdAogICAgIDsKIAogc3RydWN0X2RlY2xhcmF0b3IKLSAgICA6IElE
RU5USUZJRVIgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxp
bmUsICokMS5zdHJpbmcpKQorICAgIDogaWRlbnRpZmllciB7CisgICAgICAgIGlmIChjb250ZXh0
LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJw
VW5kZWZpbmVkKTsKLSAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7Ci0gICAgICAgICQkLnR5cGUt
PnNldEZpZWxkTmFtZSgqJDEuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5
cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKKyAgICAgICAgJCQgPSBuZXcgVEZpZWxkKHR5cGUs
ICQxLnN0cmluZyk7CiAgICAgfQotICAgIHwgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3Rh
bnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2Vy
dmVkRXJyb3JDaGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKKyAgICB8IGlkZW50aWZpZXIgTEVG
VF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGlm
IChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUoRWJ0
Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7Ci0gICAgICAg
ICQkLnR5cGUtPnNldEZpZWxkTmFtZSgqJDEuc3RyaW5nKTsKLQotICAgICAgICBpbnQgc2l6ZTsK
LSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDIubGluZSwgJDMsIHNp
emUpKQorICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmlu
ZWQpOworICAgICAgICBpbnQgc2l6ZSA9IDA7CisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNp
emVFcnJvckNoZWNrKEAzLCAkMywgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgICQkLnR5cGUtPnNldEFycmF5U2l6ZShzaXplKTsKKyAgICAgICAgdHlwZS0+
c2V0QXJyYXlTaXplKHNpemUpOworCisgICAgICAgICQkID0gbmV3IFRGaWVsZCh0eXBlLCAkMS5z
dHJpbmcpOwogICAgIH0KICAgICA7CiAKQEAgLTE4MzUsNyArMTc0OSw3IEBAIGNvbXBvdW5kX3N0
YXRlbWVudAogICAgIHwgTEVGVF9CUkFDRSB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsg
fSBzdGF0ZW1lbnRfbGlzdCB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyB9IFJJR0hUX0JS
QUNFIHsKICAgICAgICAgaWYgKCQzICE9IDApIHsKICAgICAgICAgICAgICQzLT5zZXRPcChFT3BT
ZXF1ZW5jZSk7Ci0gICAgICAgICAgICAkMy0+c2V0RW5kTGluZSgkNS5saW5lKTsKKyAgICAgICAg
ICAgICQzLT5zZXRMaW5lKEAkKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQzOwogICAgIH0K
QEAgLTE4NTksNyArMTc3Myw3IEBAIGNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUKICAg
ICB8IExFRlRfQlJBQ0Ugc3RhdGVtZW50X2xpc3QgUklHSFRfQlJBQ0UgewogICAgICAgICBpZiAo
JDIpIHsKICAgICAgICAgICAgICQyLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAk
Mi0+c2V0RW5kTGluZSgkMy5saW5lKTsKKyAgICAgICAgICAgICQyLT5zZXRMaW5lKEAkKTsKICAg
ICAgICAgfQogICAgICAgICAkJCA9ICQyOwogICAgIH0KQEAgLTE4NjcsMTAgKzE3ODEsMTAgQEAg
Y29tcG91bmRfc3RhdGVtZW50X25vX25ld19zY29wZQogCiBzdGF0ZW1lbnRfbGlzdAogICAgIDog
c3RhdGVtZW50IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3Jl
Z2F0ZSgkMSwgMCk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dy
ZWdhdGUoJDEsIEAkKTsKICAgICB9CiAgICAgfCBzdGF0ZW1lbnRfbGlzdCBzdGF0ZW1lbnQgewot
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLCAkMiwg
MCk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEs
ICQyLCBAJCk7CiAgICAgfQogICAgIDsKIApAQCAtMTg4MSw5ICsxNzk1LDkgQEAgZXhwcmVzc2lv
bl9zdGF0ZW1lbnQKIAogc2VsZWN0aW9uX3N0YXRlbWVudAogICAgIDogSUYgTEVGVF9QQVJFTiBl
eHByZXNzaW9uIFJJR0hUX1BBUkVOIHNlbGVjdGlvbl9yZXN0X3N0YXRlbWVudCB7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkMS5saW5lLCAkMykpCisgICAgICAgIGlmIChj
b250ZXh0LT5ib29sRXJyb3JDaGVjayhAMSwgJDMpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24o
JDMsICQ1LCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
U2VsZWN0aW9uKCQzLCAkNSwgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTE5MDcsMTQgKzE4MjEs
MTQgQEAgY29uZGl0aW9uCiAgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkMS0+
Z2V0TGluZSgpLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQot
ICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7
CisgICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVy
IHsKICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCQy
LmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKEAyLCAkMSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKCFjb250ZXh0
LT5leGVjdXRlSW5pdGlhbGl6ZXIoJDIubGluZSwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1O
b2RlKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoQDIsICokMi5z
dHJpbmcsICQxLCAkNCwgaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAkJCA9ICQ0OwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKQEAgLTE5MjYsMTkgKzE4
NDAsMTkgQEAgY29uZGl0aW9uCiBpdGVyYXRpb25fc3RhdGVtZW50CiAgICAgOiBXSElMRSBMRUZU
X1BBUkVOIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0
aW5nTGV2ZWw7IH0gY29uZGl0aW9uIFJJR0hUX1BBUkVOIHN0YXRlbWVudF9ub19uZXdfc2NvcGUg
ewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAkNCwgMCwgJDYsICQxLmxp
bmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hp
bGUsIDAsICQ0LCAwLCAkNiwgQDEpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2
ZWw7CiAgICAgfQogICAgIHwgRE8geyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0gc3Rh
dGVtZW50X3dpdGhfc2NvcGUgV0hJTEUgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVO
IFNFTUlDT0xPTiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkOC5saW5l
LCAkNikpCisgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjayhAOCwgJDYpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BEb1doaWxlLCAwLCAkNiwgMCwgJDMsICQ0LmxpbmUpOwor
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRG9XaGlsZSwg
MCwgJDYsIDAsICQzLCBANCk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsK
ICAgICB9CiAgICAgfCBGT1IgTEVGVF9QQVJFTiB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2go
KTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyB9IGZvcl9pbml0X3N0YXRlbWVudCBmb3Jf
cmVzdF9zdGF0ZW1lbnQgUklHSFRfUEFSRU4gc3RhdGVtZW50X25vX25ld19zY29wZSB7CiAgICAg
ICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRm9yLCAkNCwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJt
VHlwZWQqPigkNS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oJDUubm9k
ZTIpLCAkNywgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZExvb3AoRUxvb3BGb3IsICQ0LCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCQ1Lm5v
ZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigkNS5ub2RlMiksICQ3LCBAMSk7
CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAgOwpAQCAt
MTk3NSwzOSArMTg4OSwzOSBAQCBmb3JfcmVzdF9zdGF0ZW1lbnQKIGp1bXBfc3RhdGVtZW50CiAg
ICAgOiBDT05USU5VRSBTRU1JQ09MT04gewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3Rp
bmdMZXZlbCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiY29u
dGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKEAxLCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBs
b29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQot
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUs
ICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2go
RU9wQ29udGludWUsIEAxKTsKICAgICB9CiAgICAgfCBCUkVBSyBTRU1JQ09MT04gewogICAgICAg
ICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigkMS5saW5lLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29w
cyIsICIiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiYnJlYWsgc3RhdGVtZW50
IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgfQotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
cmFuY2goRU9wQnJlYWssICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCcmFuY2goRU9wQnJlYWssIEAxKTsKICAgICB9CiAgICAgfCBSRVRVUk4gU0VNSUNP
TE9OIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJl
dHVybiwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJy
YW5jaChFT3BSZXR1cm4sIEAxKTsKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlv
blR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCQxLmxpbmUsICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwg
InJldHVybiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJub24tdm9pZCBmdW5j
dGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgUkVUVVJOIGV4cHJlc3Npb24g
U0VNSUNPTE9OIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNo
KEVPcFJldHVybiwgJDIsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAkMiwgQDEpOwogICAgICAgICBjb250ZXh0LT5mdW5j
dGlvblJldHVybnNWYWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChjb250ZXh0LT5jdXJyZW50RnVu
Y3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigkMS5saW5lLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUi
LCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgInZvaWQgZnVuY3Rp
b24gY2Fubm90IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9IGVsc2UgaWYgKCooY29udGV4dC0+Y3VycmVudEZ1bmN0
aW9uVHlwZSkgIT0gJDItPmdldFR5cGUoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
JDEubGluZSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJu
Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIHJldHVybiBpcyBu
b3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBESVNDQVJEIFNFTUlDT0xPTiB7Ci0gICAg
ICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICQxLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgJDEubGluZSk7CisgICAgICAgIEZSQUdf
T05MWSgiZGlzY2FyZCIsIEAxKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQnJhbmNoKEVPcEtpbGwsIEAxKTsKICAgICB9CiAgICAgOwogCkBAIC0yMDE5LDcgKzE5MzMs
NyBAQCB0cmFuc2xhdGlvbl91bml0CiAgICAgICAgIGNvbnRleHQtPnRyZWVSb290ID0gJCQ7CiAg
ICAgfQogICAgIHwgdHJhbnNsYXRpb25fdW5pdCBleHRlcm5hbF9kZWNsYXJhdGlvbiB7Ci0gICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCAwKTsK
KyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMSwgJDIs
IEAkKTsKICAgICAgICAgY29udGV4dC0+dHJlZVJvb3QgPSAkJDsKICAgICB9CiAgICAgOwpAQCAt
MjA0MSw3ICsxOTU1LDcgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAKICAgICAgICAg
aWYgKGJ1aWx0SW4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxp
bmUsICJidWlsdC1pbiBmdW5jdGlvbnMgY2Fubm90IGJlIHJlZGVmaW5lZCIsIGZ1bmN0aW9uLT5n
ZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImJ1aWx0
LWluIGZ1bmN0aW9ucyBjYW5ub3QgYmUgcmVkZWZpbmVkIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5j
X3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTIwNTUsNyArMTk2OSw3IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAg
ICAgIC8vCiAgICAgICAgICAgICAvLyBUaGVuIHRoaXMgZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBi
b2R5LgogICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUs
ICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3Ry
KCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJmdW5jdGlvbiBhbHJlYWR5IGhh
cyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIHByZXZEZWMtPnNldERlZmluZWQo
KTsKQEAgLTIwNjUsMTEgKzE5NzksMTEgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAv
LwogICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAibWFpbiIpIHsKICAgICAgICAg
ICAgIGlmIChmdW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpID4gMCkgewotICAgICAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJmdW5jdGlvbiBjYW5ub3QgdGFrZSBhbnkgcGFyYW1l
dGVyKHMpIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocyki
LCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0
UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiIiwgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5n
ZXRCYXNpY1N0cmluZygpLCAibWFpbiBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1
cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBh
IHZhbHVlIik7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0yMDk3LDcgKzIwMTEsNyBAQCBmdW5jdGlvbl9kZWZpbml0aW9u
CiAgICAgICAgICAgICAgICAgLy8gSW5zZXJ0IHRoZSBwYXJhbWV0ZXJzIHdpdGggbmFtZSBpbiB0
aGUgc3ltYm9sIHRhYmxlLgogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgaWYg
KCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxl
LT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KEAxLCAicmVkZWZpbml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICAgICBk
ZWxldGUgdmFyaWFibGU7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjEwOCwxNCArMjAyMiwxNSBA
QCBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbU5vZGVzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFt
ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEubGluZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAg
ICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdh
dGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBh
cmFtLnR5cGUsIEAxKSwgQDEpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGNv
bnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihwYXJhbU5vZGVzLCBFT3BQ
YXJhbWV0ZXJzLCAkMS5saW5lKTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFn
Z3JlZ2F0ZU9wZXJhdG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsIEAxKTsKICAgICAgICAg
JDEuaW50ZXJtQWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAgICAgY29udGV4dC0+bG9vcE5l
c3RpbmdMZXZlbCA9IDA7CiAgICAgfQpAQCAtMjEyMywxMiArMjAzOCwxMiBAQCBmdW5jdGlvbl9k
ZWZpbml0aW9uCiAgICAgICAgIC8vPz8gQ2hlY2sgdGhhdCBhbGwgcGF0aHMgcmV0dXJuIGEgdmFs
dWUgaWYgcmV0dXJuIHR5cGUgIT0gdm9pZCA/CiAgICAgICAgIC8vICAgTWF5IGJlIGJlc3QgZG9u
ZSBhcyBwb3N0IHByb2Nlc3MgcGhhc2Ugb24gaW50ZXJtZWRpYXRlIGNvZGUKICAgICAgICAgaWYg
KGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQg
JiYgISBjb250ZXh0LT5mdW5jdGlvblJldHVybnNWYWx1ZSkgewotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlOiIsICIi
LCAkMS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoQDEsICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAiIiwgJDEuZnVu
Y3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1BZ2dyZWdhdGUsICQzLCAwKTsKLSAgICAgICAgY29u
dGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQkLCBFT3BGdW5jdGlvbiwg
JDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdh
dGUoJDEuaW50ZXJtQWdncmVnYXRlLCAkMywgQCQpOworICAgICAgICBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJCQsIEVPcEZ1bmN0aW9uLCBAMSk7CiAgICAgICAg
ICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXROYW1lKCQxLmZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFt
ZSgpLmNfc3RyKCkpOwogICAgICAgICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0VHlwZSgkMS5m
dW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpKTsKIApAQCAtMjEzNywxNSArMjA1MiwxNyBAQCBmdW5j
dGlvbl9kZWZpbml0aW9uCiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRPcHRpbWl6
ZShjb250ZXh0LT5wcmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0
ZSgpLT5zZXREZWJ1Zyhjb250ZXh0LT5wcmFnbWEoKS5kZWJ1Zyk7CiAKLSAgICAgICAgaWYgKCQz
ICYmICQzLT5nZXRBc0FnZ3JlZ2F0ZSgpKQotICAgICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRl
KCktPnNldEVuZExpbmUoJDMtPmdldEFzQWdncmVnYXRlKCktPmdldEVuZExpbmUoKSk7Ci0KICAg
ICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgfQogICAgIDsKIAogJSUKIAor
dm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29u
c3QgY2hhciogcmVhc29uKSB7CisgICAgY29udGV4dC0+ZXJyb3IoKnl5bGxvYywgcmVhc29uLCAi
Iik7CisgICAgY29udGV4dC0+cmVjb3ZlcigpOworfQorCiBpbnQgZ2xzbGFuZ19wYXJzZShUUGFy
c2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgcmV0dXJuIHl5cGFyc2UoY29udGV4dCk7CiB9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNs
YW5nX2xleC5jcHAJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NCw4ICsz
ODQsOCBAQCBzdGF0aWMgdm9pZCB5eV9mYXRhbF9lcnJvciAoeXljb25zdCBjaGFyCiAJKnl5X2Nw
ID0gJ1wwJzsgXAogCXl5Zy0+eXlfY19idWZfcCA9IHl5X2NwOwogCi0jZGVmaW5lIFlZX05VTV9S
VUxFUyAxNTUKLSNkZWZpbmUgWVlfRU5EX09GX0JVRkZFUiAxNTYKKyNkZWZpbmUgWVlfTlVNX1JV
TEVTIDE0NworI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSIDE0OAogLyogVGhpcyBzdHJ1Y3QgaXMg
bm90IHVzZWQgaW4gdGhpcyBzY2FubmVyLAogICAgYnV0IGl0cyBwcmVzZW5jZSBpcyBuZWNlc3Nh
cnkuICovCiBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwpAQCAtMzkzLDU4ICszOTMsNTcgQEAgc3RydWN0
IHl5X3RyYW5zX2luZm8KIAlmbGV4X2ludDMyX3QgeXlfdmVyaWZ5OwogCWZsZXhfaW50MzJfdCB5
eV9ueHQ7CiAJfTsKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2NlcHRbNDU5XSA9
CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYWNjZXB0WzQ0M10gPQogICAgIHsgICAw
LAotICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMTU2LCAgMTU0LCAg
MTUzLCAgMTUzLAotICAgICAgMTM4LCAgMTQ0LCAgMTQ5LCAgMTMzLCAgMTM0LCAgMTQyLCAgMTQx
LCAgMTMwLCAgMTM5LCAgMTM3LAotICAgICAgMTQzLCAgMTAyLCAgMTAyLCAgMTMxLCAgMTI3LCAg
MTQ1LCAgMTMyLCAgMTQ2LCAgMTUwLCAgIDk4LAotICAgICAgMTM1LCAgMTM2LCAgMTQ4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4
LCAgIDk4LCAgIDk4LCAgMTI4LCAgMTQ3LCAgMTI5LCAgMTQwLCAgICAzLCAgICA0LCAgICAzLAot
ICAgICAgMTUyLCAgMTU1LCAgMTUxLCAgMTI0LCAgMTEwLCAgMTI5LCAgMTE4LCAgMTEzLCAgMTA4
LCAgMTE2LAotICAgICAgMTA2LCAgMTE3LCAgMTA3LCAgMTA1LCAgICAyLCAgICAxLCAgMTA5LCAg
MTA0LCAgMTAwLCAgMTAxLAotICAgICAgICAwLCAgICAwLCAgMTAyLCAgMTM2LCAgMTI4LCAgMTM1
LCAgMTI1LCAgMTIxLCAgMTIzLCAgMTIyLAotICAgICAgMTI2LCAgIDk4LCAgMTE0LCAgMTIwLCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotCi0gICAgICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgMTcsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMjAsICAgMjIsCi0g
ICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAxMTUsICAxMTksICAgIDUsCi0gICAgICAxNTEsICAgIDAsICAgIDEsICAxMDQsICAg
IDAsICAgIDAsICAxMDMsICAgOTksICAxMTEsICAxMTIsCi0gICAgICAgNTAsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMTgsCi0gICAg
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMjYsICAg
OTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMjMs
ICAgOTgsICAgOTgsCi0KLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICAgMCwgIDEwNSwg
ICAgMCwgIDEwNCwgICA5OCwgICAyOCwgICA5OCwgICA5OCwgICA5NSwKLSAgICAgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAyMSwgICA1MywgICA5OCwKLSAgICAg
ICA5OCwgICA5OCwgICA2OSwgICA5OCwgICA5OCwgICA1OCwgICA3MywgICA5OCwgICA5OCwgICA5
OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA3MCwgICAgOSwgICAzMywg
ICAzNCwgICAzNSwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA1NiwgICAyOSwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICAzNiwgICAzNywgICAzOCwgICAyNywgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICAxNSwg
ICA0MiwgICA0MywgICA0NCwgICA1MSwgICAxMiwgICA5OCwgICA5OCwgICA5OCwKLQotICAgICAg
IDk4LCAgIDgyLCAgIDgzLCAgIDg0LCAgIDk4LCAgIDMwLCAgIDc0LCAgIDI1LCAgIDg1LCAgIDg2
LAotICAgICAgIDg3LCAgICA3LCAgIDc5LCAgIDgwLCAgIDgxLCAgIDk4LCAgIDI0LCAgIDc3LCAg
IDk4LCAgIDk4LAotICAgICAgIDM5LCAgIDQwLCAgIDQxLCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDcxLCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDUyLCAgIDk4LCAgIDk3
LCAgIDk4LCAgIDk4LCAgIDE5LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDcyLCAg
IDY2LCAgIDYxLCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDc4LAotICAgICAgIDU3
LCAgIDk4LCAgIDY0LCAgIDMyLCAgIDk4LCAgIDk0LCAgIDY1LCAgIDQ5LCAgIDc2LCAgIDU5LAot
ICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDYw
LCAgIDMxLAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgICA4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDU0LAotICAgICAgIDEzLCAgIDk4LCAgIDE0LCAgIDk4LCAgIDk4LCAgIDE2
LCAgIDY3LCAgIDk4LCAgIDk4LCAgIDk4LAotCi0gICAgICAgNjIsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgNTUsICAgNzUsICAgNjMsCi0gICAgICAgMTEsICAgNjgsICAg
IDYsICAgOTYsICAgMTAsICAgODgsICAgNDUsICAgODksICAgOTgsICAgOTgsCi0gICAgICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0g
ICAgICAgNDYsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNDgs
ICAgOTgsCi0gICAgICAgOTIsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTAsICAg
OTgsICAgOTEsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNDcs
ICAgOTMsICAgIDAKKyAgICAgICAgMCwgICAgMCwgIDE0OCwgIDE0NiwgIDE0NSwgIDE0NSwgIDEz
MiwgIDEzOCwgIDE0MywgIDEyNywKKyAgICAgIDEyOCwgIDEzNiwgIDEzNSwgIDEyNCwgIDEzMywg
IDEzMSwgIDEzNywgICA5NiwgICA5NiwgIDEyNSwKKyAgICAgIDEyMSwgIDEzOSwgIDEyNiwgIDE0
MCwgIDE0NCwgICA5MywgIDEyOSwgIDEzMCwgIDE0MiwgICA5MywKKyAgICAgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgIDEyMiwK
KyAgICAgIDE0MSwgIDEyMywgIDEzNCwgIDExOCwgIDEwNCwgIDEyMywgIDExMiwgIDEwNywgIDEw
MiwgIDExMCwKKyAgICAgIDEwMCwgIDExMSwgIDEwMSwgICA5OSwgIDEwMywgICA5OCwgICA5NSwg
ICA5NiwgICAgMCwgICAgMCwKKyAgICAgIDEzMCwgIDEyMiwgIDEyOSwgIDExOSwgIDExNSwgIDEx
NywgIDExNiwgIDEyMCwgICA5MywgIDEwOCwKKyAgICAgIDExNCwgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICAxMiwgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKworICAgICAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDE1LCAgIDE3LCAgIDkzLCAgIDkzLCAgIDkzLAor
ICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgMTA5LCAgMTEz
LCAgICAwLCAgIDk4LCAgICAwLCAgICAwLAorICAgICAgIDk3LCAgIDk0LCAgMTA1LCAgMTA2LCAg
IDQ1LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAg
IDkzLCAgIDkzLCAgIDEzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAg
ICAgIDkzLCAgIDkzLCAgIDIxLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLAorICAgICAgIDkzLCAgIDE4LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgIDAsICAgOTksICAgIDAsICAgOTgsICAgOTMsCisgICAgICAgMjMsICAgOTMsICAgOTMs
ICAgOTAsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAg
MTYsICAgNDgsICAgOTMsICAgOTMsICAgOTMsICAgNjQsICAgOTMsICAgOTMsICAgNTMsCisgICAg
ICAgNjgsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
NjUsCisgICAgICAgIDQsICAgMjgsICAgMjksICAgMzAsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgNTEsICAgMjQsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgMzEsICAgMzIsCisgICAgICAgMzMsICAgMjIsICAgOTMsICAg
OTMsICAgOTMsICAgMTAsICAgMzcsICAgMzgsICAgMzksICAgNDYsCisgICAgICAgIDcsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgNzcsICAgNzgsICAgNzksICAgOTMsICAgMjUsCisgICAgICAg
NjksICAgMjAsICAgODAsICAgODEsICAgODIsICAgIDIsICAgNzQsICAgNzUsICAgNzYsICAgOTMs
CisKKyAgICAgICAxOSwgICA3MiwgICA5MywgICA5MywgICAzNCwgICAzNSwgICAzNiwgICA5Mywg
ICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA2
NiwgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA0NywgICA5MywgICA5MiwgICA5MywgICA5MywKKyAgICAgICAxNCwgICA5MywgICA5MywgICA5
MywgICA5MywgICA2NywgICA2MSwgICA1NiwgICA5MywgICA5MywKKyAgICAgICA5MywgICA5Mywg
ICA5MywgICA3MywgICA1MiwgICA5MywgICA1OSwgICAyNywgICA5MywgICA4OSwKKyAgICAgICA2
MCwgICA0NCwgICA3MSwgICA1NCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywK
KyAgICAgICA5MywgICA5MywgICA1NSwgICAyNiwgICA5MywgICA5MywgICA5MywgICAgMywgICA5
MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA0OSwgICAgOCwgICA5MywgICAgOSwg
ICA5MywgICA5MywgICAxMSwKKyAgICAgICA2MiwgICA5MywgICA5MywgICA5MywgICA1NywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA1MCwgICA3MCwgICA1OCwg
ICAgNiwgICA2MywgICAgMSwgICA5MSwgICAgNSwgICA4MywKKworICAgICAgIDQwLCAgIDg0LCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDQxLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAor
ICAgICAgIDkzLCAgIDkzLCAgIDQzLCAgIDkzLCAgIDg3LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLAorICAgICAgIDg1LCAgIDkzLCAgIDg2LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDQyLAorICAgICAgIDg4LCAgICAwCiAgICAgfSA7CiAKIHN0YXRpYyB5eWNv
bnN0IGZsZXhfaW50MzJfdCB5eV9lY1syNTZdID0KQEAgLTQ4MSwyMTIgKzQ4MCwxOTggQEAgc3Rh
dGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQogCiBzdGF0aWMgeXljb25zdCBm
bGV4X2ludDMyX3QgeXlfbWV0YVs2OF0gPQogICAgIHsgICAwLAotICAgICAgICAxLCAgICAxLCAg
ICAyLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAotICAgICAgICAx
LCAgICAxLCAgICAxLCAgICAxLCAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICAzLAot
ICAgICAgICAzLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAzLCAgICAz
LCAgICAzLAotICAgICAgICAzLCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICAxLCAg
ICAxLCAgICAxLCAgICAzLAotICAgICAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICA0
LCAgICA0LCAgICA0LCAgICA0LCAgICA0LAotICAgICAgICA0LCAgICA0LCAgICA0LCAgICA0LCAg
ICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LAotICAgICAgICA0LCAgICA0LCAgICA0
LCAgICAxLCAgICAxLCAgICAxLCAgICAxCisgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCisgICAgICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsCisgICAgICAgIDIsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDIsICAgIDIsICAgIDIsCisgICAg
ICAgIDIsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAg
IDIsCisgICAgICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDMsICAgIDMsICAgIDMs
ICAgIDMsICAgIDMsCisgICAgICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAg
IDMsICAgIDMsICAgIDMsICAgIDMsCisgICAgICAgIDMsICAgIDMsICAgIDMsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEKICAgICB9IDsKIAotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Jh
c2VbNDY0XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYmFzZVs0NDVdID0KICAg
ICB7ICAgMCwKLSAgICAgICAgMCwgICAgMCwgICA2NSwgICA2NiwgICA3NSwgICAgMCwgIDY4MCwg
IDY4MSwgIDY4MSwgIDY4MSwKLSAgICAgIDY1NCwgICA0NSwgIDEzNywgIDY4MSwgIDY4MSwgIDY1
MywgIDEzNCwgIDY4MSwgIDEzMywgIDEzMSwKLSAgICAgIDE0NiwgIDE1OSwgIDE2OCwgIDY1MSwg
IDY4MSwgIDE4NiwgIDY1MSwgICA0NywgIDY4MSwgICAgMCwKLSAgICAgIDY4MSwgIDY4MSwgIDEy
OCwgIDEwMCwgIDExMCwgIDE1MiwgIDE1NiwgIDE0NiwgIDE2NiwgIDYyMiwKLSAgICAgIDE3Mywg
IDEwOSwgIDYyMSwgIDEyNiwgIDE3NywgIDYxNSwgIDE3OCwgIDYyOCwgIDE4NywgIDE4NCwKLSAg
ICAgIDE0MSwgIDE5NywgIDYyNCwgIDY4MSwgIDE1NywgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwg
IDY1NiwKLSAgICAgIDY4MSwgIDY4MSwgICAgMCwgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwgIDY4
MSwgIDY4MSwgIDY4MSwKLSAgICAgIDY4MSwgIDY4MSwgIDY4MSwgIDIzNiwgIDY4MSwgICAgMCwg
IDY4MSwgIDI0MywgIDI3MywgIDI4MiwKLSAgICAgIDMwNCwgICAgMCwgIDMxNCwgIDY4MSwgIDY4
MSwgIDY4MSwgIDY0NCwgIDY4MSwgIDY4MSwgIDY4MSwKLSAgICAgIDY0MywgICAgMCwgIDY4MSwg
IDY4MSwgIDYxNiwgIDYwOSwgIDYxMiwgIDYyMCwgIDYxOSwgIDYwNiwKLQotICAgICAgNjIxLCAg
NjA4LCAgNjE0LCAgNjAyLCAgNTk5LCAgNjEyLCAgNTk5LCAgNTk2LCAgNTk2LCAgNjAyLAotICAg
ICAgNTkwLCAgMTg5LCAgNTk1LCAgNjA1LCAgNTkxLCAgNTk3LCAgNjAwLCAgNjAxLCAgICAwLCAg
MjE2LAotICAgICAgNjAwLCAgMTg4LCAgNTg2LCAgNTk5LCAgNTkwLCAgNTkyLCAgNTgyLCAgNTk2
LCAgNTkzLCAgNTk1LAotICAgICAgNTc4LCAgNTgzLCAgNTgwLCAgNTY5LCAgMTgzLCAgNTc3LCAg
NTgyLCAgNTc4LCAgNTgwLCAgNTY5LAotICAgICAgNTcyLCAgMjIwLCAgNTc3LCAgNTY5LCAgNTgx
LCAgMTc2LCAgNTc0LCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgICAwLCAgMzMxLCAgICAwLCAg
MzQ0LCAgMzYxLCAgMjkwLCAgMzc0LCAgICAwLCAgNjgxLCAgNjgxLAotICAgICAgICAwLCAgNTY2
LCAgNTcwLCAgNTc5LCAgNTc2LCAgNTYwLCAgNTYwLCAgMjE1LCAgNTc1LCAgNTcyLAotICAgICAg
NTcyLCAgNTcwLCAgNTY3LCAgNTU5LCAgNTY1LCAgNTUyLCAgNTYzLCAgNTQ5LCAgNTY1LCAgICAw
LAotICAgICAgNTYyLCAgNTUwLCAgNTU3LCAgNTU0LCAgNTU4LCAgNTUxLCAgNTQwLCAgNTM5LCAg
NTUyLCAgNTU1LAotICAgICAgNTUyLCAgNTQ3LCAgNTM4LCAgMjYwLCAgNTQzLCAgNTQ2LCAgNTM3
LCAgNTM0LCAgNTM4LCAgNTQ0LAotCi0gICAgICA1MzUsICA1MjYsICA1MjksICA1MjcsICA1Mzcs
ICA1MjMsICA1MjEsICA1MzQsICA1MjAsICA1MjIsCi0gICAgICA1MTksICA1MzAsICA1MjksICAy
ODMsICA1MjQsICA1MTksICA1MDgsICAyNjQsICA1MjYsICA1MjgsCi0gICAgICA1MTcsICAzODEs
ICAzODgsICAzOTUsICA0MDIsICA1MTgsICAgIDAsICA1MTYsICAzMjAsICAgIDAsCi0gICAgICA1
MDgsICA1MDYsICA1MTQsICA1MDMsICA1MjAsICA1MDksICAzMzYsICAgIDAsICAgIDAsICA1MDMs
Ci0gICAgICA1MTMsICA1MTMsICAgIDAsICA0OTgsICAzNDksICAgIDAsICAgIDAsICA1MDAsICAz
NjYsICA1MDEsCi0gICAgICA0OTUsICA0OTQsICA0OTUsICA0OTQsICA0MDcsICAgIDAsICAgIDAs
ICAgIDAsICAgIDAsICAgIDAsCi0gICAgICA0OTAsICA0OTEsICA0OTYsICA0ODcsICA1MDAsICA0
OTUsICA0OTQsICA0ODYsICA0OTAsICA0ODIsCi0gICAgICA0ODUsICA0ODksICA0OTQsICA0ODAs
ICA0OTIsICA0ODMsICAgIDAsICAgIDAsICA0ODksICA0NzgsCi0gICAgICA0NzgsICA0ODMsICA0
ODIsICA0NzksICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0NjksICA0ODEsCi0gICAgICA0ODMs
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0NzEsICA0NzIsICA0NjYsCi0K
LSAgICAgIDQ3NiwgICAgMCwgICAgMCwgICAgMCwgIDQ2NywgICAgMCwgICAgMCwgICAgMCwgICAg
MCwgICAgMCwKLSAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ3NCwgICAgMCwg
ICAgMCwgIDQ3MiwgIDQ2OCwKLSAgICAgICAgMCwgICAgMCwgICAgMCwgIDQ2NCwgIDQ2MCwgIDQ2
NSwgIDQ1NSwgIDQ2OCwgIDQ1NCwgIDQ2NywKLSAgICAgIDQ1NiwgIDQ2MywgICAgMCwgIDQ2MSwg
IDQ2MywgIDQ0NywgIDQ0OSwgIDQ1NSwgIDQ2MSwgIDQ1NiwKLSAgICAgIDQ0NCwgICAgMCwgIDQ0
NiwgICAgMCwgIDQ0NSwgIDQ0OCwgICAgMCwgIDQzNywgIDQzNiwgIDQzNiwKLSAgICAgIDQ0OSwg
ICAgMCwgIDQ1MSwgICAgMCwgIDQ1MCwgIDQ0OSwgIDQzNCwgIDQ0NywgIDQzNCwgICAgMCwKLSAg
ICAgICAgMCwgIDQzNywgICAgMCwgICAgMCwgIDQyOSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwg
ICAgMCwKLSAgICAgIDQyNiwgIDQzNywgIDQzMCwgIDQzNiwgIDQzMywgIDQyOCwgIDQyMCwgIDQz
MiwgICAgMCwgICAgMCwKLSAgICAgIDQyNSwgIDQzMiwgIDQyMSwgICAgMCwgIDQzMCwgIDQyNywg
IDQxNywgIDQxMSwgIDQyNSwgICAgMCwKLSAgICAgICAgMCwgIDQyNSwgICAgMCwgIDQyMywgIDQy
MiwgICAgMCwgICAgMCwgIDQyMSwgIDQwNywgIDQxOSwKLQotICAgICAgICAwLCAgNDEwLCAgNDMx
LCAgNDMwLCAgNDI5LCAgNDAwLCAgMzk2LCAgICAwLCAgICAwLCAgICAwLAotICAgICAgICAwLCAg
ICAwLCAgICAwLCAgICAwLCAgICAwLCAgNDIxLCAgMjUwLCAgNDIxLCAgNDExLCAgMzg0LAotICAg
ICAgMzkyLCAgMzk0LCAgMzkwLCAgMzkyLCAgMzkxLCAgMzkwLCAgMzkzLCAgMzkwLCAgMzkxLCAg
Mzg4LAotICAgICAgICAwLCAgMzMyLCAgMzQzLCAgMzE3LCAgMzI5LCAgMzEzLCAgMzE3LCAgMzA0
LCAgMzIxLCAgMjkxLAotICAgICAgICAwLCAgMzAyLCAgMjgwLCAgMjcxLCAgMjU1LCAgMjYyLCAg
ICAwLCAgMjU2LCAgICAwLCAgMjMyLAotICAgICAgMjA2LCAgMjEyLCAgMTQ4LCAgMTU5LCAgMTEz
LCAgICAwLCAgICAwLCAgNjgxLCAgNDQyLCAgNDQ0LAotICAgICAgNDQ2LCAgNDUwLCAgMTYxCisg
ICAgICAgIDAsICAgIDAsICA1ODcsICA1ODgsICA1ODgsICA1ODgsICA1NjEsICAgNDMsICAgNjQs
ICA1ODgsCisgICAgICA1ODgsICA1NjAsICAgNjEsICA1ODgsICAgNjAsICAgNTgsICA1NTksICAg
NzcsICAgODYsICA1NTcsCisgICAgICA1ODgsICAxMDQsICA1NTcsICAgNTUsICA1ODgsICAgIDAs
ICA1ODgsICA1ODgsICAgNzUsICAgMjYsCisgICAgICAgNTcsICAgODIsICAgODMsICAgNzMsICAg
OTMsICA1MjgsICAgOTcsICAgOTUsICA1MjcsICAgNDQsCisgICAgICAgNzEsICA1MjEsICAxMDQs
ICA1MzQsICAxMTAsICAxMTYsICAgMzUsICAxMTEsICA1MzAsICA1ODgsCisgICAgICAxMTQsICA1
ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsCisgICAg
ICA1ODgsICA1ODgsICA1ODgsICAxNjUsICA1ODgsICAxNzIsICAyMDIsICAyMTEsICAyMzMsICAg
IDAsCisgICAgICA1ODgsICA1ODgsICA1ODgsICA1NTEsICA1ODgsICA1ODgsICA1ODgsICA1NTAs
ICAgIDAsICA1ODgsCisgICAgICA1ODgsICA1MjMsICA1MTYsICA1MTksICA1MjcsICA1MjYsICA1
MTMsICA1MjgsICA1MTUsICA1MjEsCisgICAgICA1MDksICA1MDYsICA1MTksICA1MDYsICA1MDMs
ICA1MDMsICA1MDksICA0OTcsICAxMDgsICA1MDIsCisKKyAgICAgIDUxMiwgIDQ5OCwgIDUwNCwg
IDUwNywgIDUwOCwgICAgMCwgIDE0NSwgIDUwNywgIDExMywgIDQ5MywKKyAgICAgIDUwNiwgIDQ5
NywgIDQ5OSwgIDQ4OSwgIDUwMywgIDUwMCwgIDUwMiwgIDQ4NSwgIDQ5MCwgIDQ4NywKKyAgICAg
IDQ3NiwgIDE1NywgIDQ4NCwgIDQ4OSwgIDQ4NSwgIDQ4NywgIDQ3NiwgIDQ3OSwgIDExOCwgIDQ4
NCwKKyAgICAgIDQ3NiwgIDQ4OCwgICA3MCwgIDQ4MSwgIDU4OCwgIDU4OCwgIDI0NiwgIDI1Mywg
IDI3MCwgIDIxOSwKKyAgICAgIDI4MywgICAgMCwgIDU4OCwgIDU4OCwgICAgMCwgIDQ3MywgIDQ3
NywgIDQ4NiwgIDQ4MywgIDQ2NywKKyAgICAgIDQ2NywgIDExOSwgIDQ4MiwgIDQ3OSwgIDQ3OSwg
IDQ3NywgIDQ3NCwgIDQ2NiwgIDQ3MiwgIDQ1OSwKKyAgICAgIDQ3MCwgIDQ1NiwgIDQ3MiwgICAg
MCwgIDQ2OSwgIDQ1NywgIDQ2NCwgIDQ2MSwgIDQ2NSwgIDQ1OCwKKyAgICAgIDQ0NywgIDQ0Niwg
IDQ1OSwgIDQ2MiwgIDQ1OSwgIDQ1NCwgIDQ0NSwgIDE4OCwgIDQ1MCwgIDQ1MywKKyAgICAgIDQ0
NCwgIDQ0MSwgIDQ0NSwgIDQ1MSwgIDQ0MiwgIDQzMywgIDQzNiwgIDQzNCwgIDQ0NCwgIDQzMCwK
KyAgICAgIDQyOCwgIDQ0MSwgIDQyNywgIDQyOSwgIDQyNiwgIDQzNywgIDQzNiwgIDEyNCwgIDQz
MSwgIDQyNiwKKworICAgICAgNDE1LCAgMjU4LCAgNDMzLCAgNDM1LCAgNDI0LCAgMjkwLCAgMjk3
LCAgMzA0LCAgMzExLCAgNDI1LAorICAgICAgICAwLCAgNDIzLCAgMjc1LCAgICAwLCAgNDE1LCAg
NDEzLCAgNDIxLCAgNDEwLCAgNDI3LCAgNDE2LAorICAgICAgMzE2LCAgICAwLCAgICAwLCAgNDEw
LCAgNDIwLCAgNDIwLCAgICAwLCAgNDA1LCAgMzE5LCAgICAwLAorICAgICAgICAwLCAgNDA3LCAg
MzIyLCAgNDA4LCAgNDAyLCAgNDAxLCAgNDAyLCAgNDAxLCAgMzI1LCAgICAwLAorICAgICAgICAw
LCAgICAwLCAgICAwLCAgICAwLCAgMzk3LCAgMzk4LCAgNDAzLCAgMzk0LCAgNDA3LCAgNDAyLAor
ICAgICAgNDAxLCAgMzkzLCAgMzk3LCAgMzg5LCAgMzkyLCAgMzk2LCAgNDAxLCAgMzg3LCAgMzk5
LCAgMzkwLAorICAgICAgICAwLCAgICAwLCAgMzk2LCAgMzg1LCAgMzg1LCAgMzkwLCAgMzg5LCAg
Mzg2LCAgICAwLCAgICAwLAorICAgICAgICAwLCAgICAwLCAgMzc2LCAgMzg4LCAgMzkwLCAgICAw
LCAgICAwLCAgICAwLCAgICAwLCAgICAwLAorICAgICAgICAwLCAgMzc4LCAgMzc5LCAgMzczLCAg
MzgzLCAgICAwLCAgICAwLCAgICAwLCAgMzc0LCAgICAwLAorICAgICAgICAwLCAgICAwLCAgICAw
LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMzgxLAorCisgICAgICAgIDAs
ICAgIDAsICAzNzksICAzNzUsICAgIDAsICAgIDAsICAgIDAsICAzNzEsICAzNjcsICAzNzIsCisg
ICAgICAzNjIsICAzNzUsICAzNjEsICAzNzQsICAzNjMsICAzNzAsICAgIDAsICAzNjgsICAzNzAs
ICAzNTQsCisgICAgICAzNTYsICAzNjIsICAzNjgsICAzNjMsICAzNTEsICAgIDAsICAzNTMsICAg
IDAsICAzNTIsICAzNTUsCisgICAgICAgIDAsICAzNDQsICAzNDMsICAzNDMsICAzNTYsICAgIDAs
ICAzNTgsICAgIDAsICAzNTcsICAzNTYsCisgICAgICAzNDEsICAzNTQsICAzNDEsICAgIDAsICAg
IDAsICAzNDQsICAgIDAsICAgIDAsICAzMzYsICAgIDAsCisgICAgICAgIDAsICAgIDAsICAgIDAs
ICAgIDAsICAzMzMsICAzNDQsICAzMzcsICAzNDMsICAzNDAsICAzMzUsCisgICAgICAzMjcsICAz
MzksICAgIDAsICAgIDAsICAzMzIsICAzMzksICAzMjgsICAgIDAsICAzMzcsICAzMzQsCisgICAg
ICAzMjQsICAzMjksICAzMzIsICAgIDAsICAgIDAsICAzMzIsICAgIDAsICAzMzAsICAzMjksICAg
IDAsCisgICAgICAgIDAsICAzMjgsICAzMTQsICAzMjYsICAgIDAsICAzMTcsICAzMzgsICAzMzcs
ICAzMzYsICAzMDcsCisgICAgICAzMDMsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAg
IDAsICAgIDAsICAgIDAsICAzMjgsCisKKyAgICAgIDE2NiwgIDMyNSwgIDMxNiwgIDI5OSwgIDMw
OCwgIDMxMCwgIDMwNiwgIDMwOCwgIDMwNywgIDMwNiwKKyAgICAgIDMwOSwgIDMwNiwgIDI1Niwg
IDI1MywgICAgMCwgIDIyOCwgIDIzOCwgIDIyMiwgIDIzNSwgIDIwMywKKyAgICAgIDIwNywgIDIw
NCwgIDIxMiwgIDE5MSwgICAgMCwgIDIwMSwgIDE2NSwgIDE2NywgIDE1MywgIDE2MSwKKyAgICAg
ICAgMCwgIDE3MCwgICAgMCwgIDE3NSwgIDE1MSwgIDE0MSwgIDEwMCwgIDExNCwgICA1OSwgICAg
MCwKKyAgICAgICAgMCwgIDU4OCwgIDM1OSwgIDExMwogICAgIH0gOwogCi1zdGF0aWMgeXljb25z
dCBmbGV4X2ludDE2X3QgeXlfZGVmWzQ2NF0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90
IHl5X2RlZls0NDVdID0KICAgICB7ICAgMCwKLSAgICAgIDQ1OCwgICAgMSwgIDQ1OSwgIDQ1OSwg
IDQ1OCwgICAgNSwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MCwKLSAg
ICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ2MSwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ2MiwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ2
MywgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAg
IDQ1OCwgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwKLQotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAg
NDYxLCAgNDU4LCAgNDYyLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDYzLCAgNDU4LCAgNDU4
LAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
Ci0gICAgICA0NjAsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0g
ICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsCi0KLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAg
ICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAg
ICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgICAwLCAgNDU4LCAgNDU4LAotICAgICAg
NDU4LCAgNDU4LCAgNDU4CisgICAgICA0NDIsICAgIDEsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDMsICA0NDIsICA0NDIsICA0NDIsICA0NDMsCisgICAgICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAg
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDQsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDMsICA0NDIsCisgICAgICA0NDIsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisKKyAgICAg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0NCwgIDQ0MiwgIDQ0
MiwgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywK
KyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKworICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAor
ICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAg
ICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLAorCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAg
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgICAgMCwgIDQ0MiwgIDQ0MgogICAgIH0g
OwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0Wzc0OV0gPQorc3RhdGljIHl5
Y29uc3QgZmxleF9pbnQxNl90IHl5X254dFs2NTZdID0KICAgICB7ICAgMCwKLSAgICAgICAgOCwg
ICAgOSwgICAxMCwgICAxMSwgICAxMiwgICAxMywgICAxNCwgICAxNSwgICAxNiwgICAxNywKLSAg
ICAgICAxOCwgICAxOSwgICAyMCwgICAyMSwgICAyMiwgICAyMywgICAyMywgICAyMywgICAyMywg
ICAyMywKLSAgICAgICAyMywgICAyNCwgICAyNSwgICAyNiwgICAyNywgICAyOCwgICAyOSwgICAz
MCwgICAzMCwgICAzMCwKLSAgICAgICAzMCwgICAzMCwgICAzMCwgICAzMCwgICAzMCwgICAzMCwg
ICAzMSwgICAzMiwgICAzMywgICAzNCwKLSAgICAgICAzNSwgICAzNiwgICAzNywgICAzOCwgICAz
OSwgICA0MCwgICA0MSwgICA0MiwgICAzMCwgICA0MywKLSAgICAgICA0NCwgICA0NSwgICA0Niwg
ICA0NywgICA0OCwgICA0OSwgICA1MCwgICA1MSwgICA1MiwgICA1MywKLSAgICAgICAzMCwgICAz
MCwgICAzMCwgICA1NCwgICA1NSwgICA1NiwgICA1NywgICA1OSwgICA1OSwgICA2NSwKLSAgICAg
ICA2NiwgICA5MCwgICA5MSwgICA2MCwgICA2MCwgICAgOCwgICA2MSwgICA2MiwgICAgOCwgICAg
OCwKLSAgICAgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwg
ICAgOCwgICAgOCwKLSAgICAgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAg
OCwgICAgOCwgICAgOCwgICAgOCwKLQotICAgICAgICA4LCAgICA4LCAgIDYzLCAgIDYzLCAgIDYz
LCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLAotICAgICAgIDYzLCAgICA4LCAgICA4LCAg
ICA4LCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLAotICAgICAgIDYzLCAgIDYz
LCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLAotICAgICAg
IDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgICA4LCAgICA4
LAotICAgICAgICA4LCAgICA4LCAgIDY3LCAgIDcwLCAgIDcyLCAgIDc0LCAgIDc0LCAgIDc0LCAg
IDc0LCAgIDc0LAotICAgICAgIDc0LCAgIDc0LCAgIDkzLCAgMTE5LCAgIDc1LCAgIDk1LCAgIDk2
LCAgIDczLCAgIDcxLCAgIDc2LAotICAgICAgMTIwLCAgIDY4LCAgIDk3LCAgMTU4LCAgIDk4LCAg
MTIzLCAgIDk0LCAgMTIxLCAgIDk5LCAgMTI0LAotICAgICAgIDc3LCAgIDc4LCAgNDU3LCAgIDc5
LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDgwLAotICAgICAgIDc4LCAgMTQ4LCAg
IDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgxLAotICAgICAgIDg1
LCAgMTAwLCAgMTQyLCAgNDU2LCAgIDgyLCAgMTA3LCAgMTQzLCAgMTA4LCAgIDgxLCAgMTAzLAot
Ci0gICAgICA0NTUsICAxMDEsICAgODEsICAxMDQsICAxMDIsICAxMTAsICAxMDksICAgODYsICAx
MDUsICAgODcsCi0gICAgICAgODgsICAgODEsICAxMTYsICAxMTEsICAxMDYsICAxMTIsICAxMjUs
ICAxMjgsICAxMTMsICAgODIsCi0gICAgICAxMTcsICAxNDksICAyMDYsICAyMTksICAxMTQsICAy
MjAsICAxMzIsICAxMzgsICAxNzgsICAxMjYsCi0gICAgICAxMzksICAxMTgsICAxMjksICAxMzMs
ICAxMzQsICAxMzAsICAxNDQsICAyMDcsICAxNDAsICAxOTIsCi0gICAgICAxNDUsICAxNzksICA0
NTQsICAxMzUsICAxMzYsICAxNDEsICAxMzcsICAxOTMsICA0NTMsICAxNDYsCi0gICAgICAgNzQs
ICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAxNTQsICAxNTQsICAxNTQsCi0g
ICAgICAxNTQsICAxNTQsICAxNTQsICAxNTQsICA0NTIsICAxODYsICAxNTIsICAyMTQsICAxODcs
ICAxODgsCi0gICAgICAyMzIsICAyMzMsICAxODksICAxNTUsICAxOTAsICAyMTUsICAyNTgsICAy
NTksICAyNjAsICAxNTIsCi0gICAgICAyODUsICAyODYsICAyODcsICA0MjIsICA0MjMsICAgNzgs
ICAxNTUsICAgNzksICAgNzksICAgNzksCi0gICAgICAgNzksICAgNzksICAgNzksICAgODAsICAg
NzgsICA0NTEsICAgODAsICAgODAsICAgODAsICAgODAsCi0KLSAgICAgICA4MCwgICA4MCwgICA4
MCwgICA4MSwgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywKLSAgICAgIDE1Nywg
IDQ1MCwgICA4MSwgIDE1NiwgIDQ0OSwgIDE1NiwgICA4MSwgIDQ0OCwgIDE1NywgIDE1NywKLSAg
ICAgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgICA4MSwgICA3OCwgIDI4MCwgICA4Mywg
ICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgIDI4MSwgIDI5MywgIDI5
NCwgIDI5NSwgIDQ0NywKLSAgICAgIDIyMiwgIDQ0NiwgIDIyMiwgIDQ0NSwgICA4MSwgIDIyMywg
IDIyMywgIDIyMywgIDIyMywgIDIyMywKLSAgICAgIDIyMywgIDIyMywgIDMwMiwgIDMwMywgIDMw
NCwgIDQ0NCwgIDQ0MywgICA4MSwgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwg
IDE1NCwgIDE1NCwgIDMwOSwgIDMxMCwgIDMxMSwgIDQ0MiwgIDQ0MSwKLSAgICAgIDIyNCwgIDQ0
MCwgIDIyNCwgIDQzOSwgIDE1NSwgIDIyNSwgIDIyNSwgIDIyNSwgIDIyNSwgIDIyNSwKLSAgICAg
IDIyNSwgIDIyNSwgIDMxMywgIDMxNCwgIDMxNSwgIDQzOCwgIDQzNywgIDE1NSwgIDE1NywgIDE1
NywKLSAgICAgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDIyMywgIDIyMywgIDIyMywg
IDIyMywgIDIyMywKLQotICAgICAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAg
MjIzLCAgMjIzLCAgMjIzLCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1
LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMjI1LCAg
MzIxLCAgMzIyLCAgMzIzLCAgNDAzLCAgNDA0LCAgNDA1LCAgNDM2LAotICAgICAgNDM1LCAgNDM0
LCAgNDMzLCAgNDMyLCAgNDMxLCAgNDMwLCAgNDI5LCAgNDI4LCAgNDI3LCAgNDA2LAotICAgICAg
NDI2LCAgNDA3LCAgIDU4LCAgIDU4LCAgIDU4LCAgIDU4LCAgIDkyLCAgIDkyLCAgMTUxLCAgMTUx
LAotICAgICAgMTUzLCAgNDI1LCAgMTUzLCAgMTUzLCAgNDI0LCAgNDIxLCAgNDIwLCAgNDE5LCAg
NDE4LCAgNDE3LAotICAgICAgNDE2LCAgNDE1LCAgNDE0LCAgNDEzLCAgNDEyLCAgNDExLCAgNDEw
LCAgNDA5LCAgNDA4LCAgNDAyLAotICAgICAgNDAxLCAgNDAwLCAgMzk5LCAgMzk4LCAgMzk3LCAg
Mzk2LCAgMzk1LCAgMzk0LCAgMzkzLCAgMzkyLAotICAgICAgMzkxLCAgMzkwLCAgMzg5LCAgMzg4
LCAgMzg3LCAgMzg2LCAgMzg1LCAgMzg0LCAgMzgzLCAgMzgyLAotICAgICAgMzgxLCAgMzgwLCAg
Mzc5LCAgMzc4LCAgMzc3LCAgMzc2LCAgMzc1LCAgMzc0LCAgMzczLCAgMzcyLAotCi0gICAgICAz
NzEsICAzNzAsICAzNjksICAzNjgsICAzNjcsICAzNjYsICAzNjUsICAzNjQsICAzNjMsICAzNjIs
Ci0gICAgICAzNjEsICAzNjAsICAzNTksICAzNTgsICAzNTcsICAzNTYsICAzNTUsICAzNTQsICAz
NTMsICAzNTIsCi0gICAgICAzNTEsICAzNTAsICAzNDksICAzNDgsICAzNDcsICAzNDYsICAzNDUs
ICAzNDQsICAzNDMsICAzNDIsCi0gICAgICAzNDEsICAzNDAsICAzMzksICAzMzgsICAzMzcsICAz
MzYsICAzMzUsICAzMzQsICAzMzMsICAzMzIsCi0gICAgICAzMzEsICAzMzAsICAzMjksICAzMjgs
ICAzMjcsICAzMjYsICAzMjUsICAzMjQsICAzMjAsICAzMTksCi0gICAgICAzMTgsICAzMTcsICAz
MTYsICAzMTIsICAzMDgsICAzMDcsICAzMDYsICAzMDUsICAzMDEsICAzMDAsCi0gICAgICAyOTks
ICAyOTgsICAyOTcsICAyOTYsICAyOTIsICAyOTEsICAyOTAsICAyODksICAyODgsICAyODQsCi0g
ICAgICAyODMsICAyODIsICAyNzksICAyNzgsICAyNzcsICAyNzYsICAyNzUsICAyNzQsICAyNzMs
ICAyNzIsCi0gICAgICAyNzEsICAyNzAsICAyNjksICAyNjgsICAyNjcsICAyNjYsICAyNjUsICAy
NjQsICAyNjMsICAyNjIsCi0gICAgICAyNjEsICAyNTcsICAyNTYsICAyNTUsICAyNTQsICAyNTMs
ICAyNTIsICAyNTEsICAyNTAsICAyNDksCi0KLSAgICAgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwg
IDI0NCwgIDI0MywgIDI0MiwgIDI0MSwgIDI0MCwgIDIzOSwKLSAgICAgIDIzOCwgIDIzNywgIDIz
NiwgIDIzNSwgIDIzNCwgIDIzMSwgIDIzMCwgIDIyOSwgIDIyOCwgIDIyNywKLSAgICAgIDIyNiwg
IDIyMSwgIDIxOCwgIDIxNywgIDIxNiwgIDIxMywgIDIxMiwgIDIxMSwgIDIxMCwgIDIwOSwKLSAg
ICAgIDIwOCwgIDIwNSwgIDIwNCwgIDIwMywgIDIwMiwgIDIwMSwgIDIwMCwgIDE5OSwgIDE5OCwg
IDE5NywKLSAgICAgIDE5NiwgIDE5NSwgIDE5NCwgIDE5MSwgIDE4NSwgIDE4NCwgIDE4MywgIDE4
MiwgIDE4MSwgIDE4MCwKLSAgICAgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwgIDE3MywgIDE3Miwg
IDE3MSwgIDE3MCwgIDE2OSwgIDE2OCwKLSAgICAgIDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2
MywgIDE2MiwgIDE2MSwgIDE2MCwgIDE1OSwgIDE1MCwKLSAgICAgIDE0NywgIDEzMSwgIDEyNywg
IDEyMiwgIDExNSwgICA4OSwgICA4NCwgICA2OSwgICA2NCwgIDQ1OCwKLSAgICAgICAgNywgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwKLQotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4CisgICAgICAgIDQsICAgIDUsICAg
IDYsICAgIDcsICAgIDgsICAgIDksICAgMTAsICAgMTEsICAgMTIsICAgMTMsCisgICAgICAgMTQs
ICAgMTUsICAgMTYsICAgMTcsICAgMTgsICAgMTksICAgMTksICAgMTksICAgMTksICAgMTksCisg
ICAgICAgMTksICAgMjAsICAgMjEsICAgMjIsICAgMjMsICAgMjQsICAgMjUsICAgMjYsICAgMjYs
ICAgMjYsCisgICAgICAgMjYsICAgMjYsICAgMjYsICAgMjYsICAgMjYsICAgMjYsICAgMjcsICAg
MjgsICAgMjksICAgMzAsCisgICAgICAgMzEsICAgMzIsICAgMzMsICAgMzQsICAgMzUsICAgMzYs
ICAgMzcsICAgMzgsICAgMjYsICAgMzksCisgICAgICAgNDAsICAgNDEsICAgNDIsICAgNDMsICAg
NDQsICAgNDUsICAgNDYsICAgNDcsICAgNDgsICAgNDksCisgICAgICAgMjYsICAgMjYsICAgMjYs
ICAgNTAsICAgNTEsICAgNTIsICAgNTMsICAgNTUsICAgNTYsICAgNTcsCisgICAgICAgNjAsICAg
NjIsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNzcsCisgICAg
ICAgNzgsICAgODIsICAgODMsICAxMTAsICAgNjMsICAgNjEsICAxMjksICAxMTEsICAgNTgsICAg
NjYsCisgICAgICAxMzAsICAgNjcsICAgNjcsICAgNjcsICAgNjcsICAgNjcsICAgNjcsICAgNjgs
ICAgNjYsICAgODAsCisKKyAgICAgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2OCwg
ICA2OCwgICA2OSwgICA3MiwgICA4NCwKKyAgICAgIDExMiwgICA4NSwgICA3MCwgICA4MSwgIDE0
MiwgICA4NiwgICA2OSwgIDIwMywgIDQ0MSwgIDIwNCwKKyAgICAgICA2OSwgICA4NywgICA5NCwg
IDExMywgICA5NSwgICA3MywgICA5MCwgICA3NCwgICA3NSwgICA2OSwKKyAgICAgICA5MSwgICA4
OCwgICA5NywgICA5NiwgICA4OSwgICA5MiwgIDEwMywgICA3MCwgIDEzNSwgIDEwNiwKKyAgICAg
ICA5OCwgICA5MywgICA5OSwgIDExNSwgIDEwNCwgIDEwMCwgIDEwNywgIDE2MiwgIDQ0MCwgIDEx
OSwKKyAgICAgIDEzMSwgIDEwMSwgIDQzOSwgIDEwOCwgIDEzMiwgIDEwNSwgIDEyMCwgIDEyMSwg
IDExNiwgIDEyNSwKKyAgICAgIDE2MywgIDExNywgIDEyNiwgIDEzMywgIDE3NiwgIDE5OCwgIDEy
MiwgIDEyMywgIDI2NCwgIDEyNCwKKyAgICAgIDEyNywgIDQzOCwgIDE3NywgIDE5OSwgIDIxNiwg
IDIxNywgIDI2NSwgIDEyOCwgIDEzNiwgICA2NCwKKyAgICAgICA2NCwgICA2NCwgICA2NCwgICA2
NCwgICA2NCwgICA2NCwgIDEzOCwgIDEzOCwgIDEzOCwgIDEzOCwKKyAgICAgIDEzOCwgIDEzOCwg
IDEzOCwgIDQzNywgIDE3MCwgIDEzNywgIDE5MCwgIDE3MSwgIDE3MiwgIDQwNiwKKworICAgICAg
NDA3LCAgMTczLCAgMTM5LCAgMTc0LCAgMjQyLCAgMjQzLCAgMjQ0LCAgNDM2LCAgMTM3LCAgNDM1
LAorICAgICAgNDM0LCAgMTkxLCAgNDMzLCAgNDMyLCAgIDY2LCAgMTM5LCAgIDY3LCAgIDY3LCAg
IDY3LCAgIDY3LAorICAgICAgIDY3LCAgIDY3LCAgIDY4LCAgIDY2LCAgNDMxLCAgIDY4LCAgIDY4
LCAgIDY4LCAgIDY4LCAgIDY4LAorICAgICAgIDY4LCAgIDY4LCAgIDY5LCAgMTQxLCAgMTQxLCAg
MTQxLCAgMTQxLCAgMTQxLCAgMTQxLCAgMTQxLAorICAgICAgNDMwLCAgIDY5LCAgMTQwLCAgNDI5
LCAgMTQwLCAgIDY5LCAgNDI4LCAgMTQxLCAgMTQxLCAgMTQxLAorICAgICAgMTQxLCAgMTQxLCAg
MTQxLCAgMTQxLCAgIDY5LCAgMjA2LCAgNDI3LCAgMjA2LCAgNDI2LCAgNDI1LAorICAgICAgMjA3
LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMTM4LCAgMTM4LCAgMTM4LAor
ICAgICAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LCAgMjY5LCAgMjcwLCAgMjcxLCAgNDI0LCAgNDIz
LCAgMjA4LAorICAgICAgNDIyLCAgMjA4LCAgNDIxLCAgMTM5LCAgMjA5LCAgMjA5LCAgMjA5LCAg
MjA5LCAgMjA5LCAgMjA5LAorICAgICAgMjA5LCAgMjc3LCAgMjc4LCAgMjc5LCAgNDIwLCAgNDE5
LCAgMTM5LCAgMTQxLCAgMTQxLCAgMTQxLAorCisgICAgICAxNDEsICAxNDEsICAxNDEsICAxNDEs
ICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsCisgICAgICAyMDcsICAyMDcsICAy
MDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDksICAyMDksCisgICAgICAyMDks
ICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksCisg
ICAgICAyMDksICAyMDksICAyODYsICAyODcsICAyODgsICAyOTMsICAyOTQsICAyOTUsICAyOTcs
ICAyOTgsCisgICAgICAyOTksICAzMDUsICAzMDYsICAzMDcsICAzODcsICAzODgsICAzODksICA0
MTgsICA0MTcsICA0MTYsCisgICAgICA0MTUsICA0MTQsICA0MTMsICA0MTIsICA0MTEsICA0MTAs
ICA0MDksICAzOTAsICA0MDgsICAzOTEsCisgICAgICAgNzksICAgNzksICA0MDUsICA0MDQsICA0
MDMsICA0MDIsICA0MDEsICA0MDAsICAzOTksICAzOTgsCisgICAgICAzOTcsICAzOTYsICAzOTUs
ICAzOTQsICAzOTMsICAzOTIsICAzODYsICAzODUsICAzODQsICAzODMsCisgICAgICAzODIsICAz
ODEsICAzODAsICAzNzksICAzNzgsICAzNzcsICAzNzYsICAzNzUsICAzNzQsICAzNzMsCisgICAg
ICAzNzIsICAzNzEsICAzNzAsICAzNjksICAzNjgsICAzNjcsICAzNjYsICAzNjUsICAzNjQsICAz
NjMsCisKKyAgICAgIDM2MiwgIDM2MSwgIDM2MCwgIDM1OSwgIDM1OCwgIDM1NywgIDM1NiwgIDM1
NSwgIDM1NCwgIDM1MywKKyAgICAgIDM1MiwgIDM1MSwgIDM1MCwgIDM0OSwgIDM0OCwgIDM0Nywg
IDM0NiwgIDM0NSwgIDM0NCwgIDM0MywKKyAgICAgIDM0MiwgIDM0MSwgIDM0MCwgIDMzOSwgIDMz
OCwgIDMzNywgIDMzNiwgIDMzNSwgIDMzNCwgIDMzMywKKyAgICAgIDMzMiwgIDMzMSwgIDMzMCwg
IDMyOSwgIDMyOCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMywKKyAgICAgIDMyMiwgIDMy
MSwgIDMyMCwgIDMxOSwgIDMxOCwgIDMxNywgIDMxNiwgIDMxNSwgIDMxNCwgIDMxMywKKyAgICAg
IDMxMiwgIDMxMSwgIDMxMCwgIDMwOSwgIDMwOCwgIDMwNCwgIDMwMywgIDMwMiwgIDMwMSwgIDMw
MCwKKyAgICAgIDI5NiwgIDI5MiwgIDI5MSwgIDI5MCwgIDI4OSwgIDI4NSwgIDI4NCwgIDI4Mywg
IDI4MiwgIDI4MSwKKyAgICAgIDI4MCwgIDI3NiwgIDI3NSwgIDI3NCwgIDI3MywgIDI3MiwgIDI2
OCwgIDI2NywgIDI2NiwgIDI2MywKKyAgICAgIDI2MiwgIDI2MSwgIDI2MCwgIDI1OSwgIDI1OCwg
IDI1NywgIDI1NiwgIDI1NSwgIDI1NCwgIDI1MywKKyAgICAgIDI1MiwgIDI1MSwgIDI1MCwgIDI0
OSwgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDI0MSwgIDI0MCwKKworICAgICAgMjM5LCAgMjM4
LCAgMjM3LCAgMjM2LCAgMjM1LCAgMjM0LCAgMjMzLCAgMjMyLCAgMjMxLCAgMjMwLAorICAgICAg
MjI5LCAgMjI4LCAgMjI3LCAgMjI2LCAgMjI1LCAgMjI0LCAgMjIzLCAgMjIyLCAgMjIxLCAgMjIw
LAorICAgICAgMjE5LCAgMjE4LCAgMjE1LCAgMjE0LCAgMjEzLCAgMjEyLCAgMjExLCAgMjEwLCAg
MjA1LCAgMjAyLAorICAgICAgMjAxLCAgMjAwLCAgMTk3LCAgMTk2LCAgMTk1LCAgMTk0LCAgMTkz
LCAgMTkyLCAgMTg5LCAgMTg4LAorICAgICAgMTg3LCAgMTg2LCAgMTg1LCAgMTg0LCAgMTgzLCAg
MTgyLCAgMTgxLCAgMTgwLCAgMTc5LCAgMTc4LAorICAgICAgMTc1LCAgMTY5LCAgMTY4LCAgMTY3
LCAgMTY2LCAgMTY1LCAgMTY0LCAgMTYxLCAgMTYwLCAgMTU5LAorICAgICAgMTU4LCAgMTU3LCAg
MTU2LCAgMTU1LCAgMTU0LCAgMTUzLCAgMTUyLCAgMTUxLCAgMTUwLCAgMTQ5LAorICAgICAgMTQ4
LCAgMTQ3LCAgMTQ2LCAgMTQ1LCAgMTQ0LCAgMTQzLCAgMTM0LCAgMTE4LCAgMTE0LCAgMTA5LAor
ICAgICAgMTAyLCAgIDc2LCAgIDcxLCAgIDY1LCAgIDU5LCAgIDU0LCAgNDQyLCAgICAzLCAgNDQy
LCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLCAgNDQyLAorCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisg
ICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIKICAgICB9IDsKIAotc3Rh
dGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1s3NDldID0KK3N0YXRpYyB5eWNvbnN0IGZs
ZXhfaW50MTZfdCB5eV9jaGtbNjU2XSA9CiAgICAgeyAgIDAsCiAgICAgICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCiAgICAgICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCkBA
IC02OTQsOTUgKzY3OSw4NSBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzc0
OV0KICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKLSAgICAgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAgNCwgICAxMiwKLSAgICAgICAxMiwgICAyOCwg
ICAyOCwgICAgMywgICAgNCwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAg
NSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwK
LSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwKLQotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1
LCAgICA1LCAgIDEzLCAgIDE3LCAgIDE5LCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLAot
ICAgICAgIDIwLCAgIDIwLCAgIDMzLCAgIDQyLCAgIDIxLCAgIDM0LCAgIDM0LCAgIDE5LCAgIDE3
LCAgIDIxLAotICAgICAgIDQyLCAgIDEzLCAgIDM1LCAgNDYzLCAgIDM1LCAgIDQ0LCAgIDMzLCAg
IDQyLCAgIDM1LCAgIDQ0LAotICAgICAgIDIxLCAgIDIyLCAgNDU1LCAgIDIyLCAgIDIyLCAgIDIy
LCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLAotICAgICAgIDIzLCAgIDU1LCAgIDIzLCAgIDIzLCAg
IDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIyLAotICAgICAgIDI2LCAgIDM2LCAgIDUx
LCAgNDU0LCAgIDIyLCAgIDM4LCAgIDUxLCAgIDM4LCAgIDIzLCAgIDM3LAotCi0gICAgICA0NTMs
ICAgMzYsICAgMjIsICAgMzcsICAgMzYsICAgMzksICAgMzgsICAgMjYsICAgMzcsICAgMjYsCi0g
ICAgICAgMjYsICAgMjMsICAgNDEsICAgMzksICAgMzcsICAgMzksICAgNDUsICAgNDcsICAgMzks
ICAgMjIsCi0gICAgICAgNDEsICAgNTUsICAxMzUsICAxNDYsICAgMzksICAxNDYsICAgNDksICAg
NTAsICAxMTIsICAgNDUsCi0gICAgICAgNTAsICAgNDEsICAgNDcsICAgNDksICAgNDksICAgNDcs
ICAgNTIsICAxMzUsICAgNTAsICAxMjIsCi0gICAgICAgNTIsICAxMTIsICA0NTIsICAgNDksICAg
NDksICAgNTAsICAgNDksICAxMjIsICA0NTEsICAgNTIsCi0gICAgICAgNzQsICAgNzQsICAgNzQs
ICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzgsICAgNzgsICAgNzgsCi0gICAgICAgNzgsICAg
NzgsICAgNzgsICAgNzgsICA0NTAsICAxMjAsICAgNzQsICAxNDIsICAxMjAsICAxMjAsCi0gICAg
ICAxNjgsICAxNjgsICAxMjAsICAgNzgsICAxMjAsICAxNDIsICAxOTQsICAxOTQsICAxOTQsICAg
NzQsCi0gICAgICAyMTgsICAyMTgsICAyMTgsICA0MTcsICA0MTcsICAgNzksICAgNzgsICAgNzks
ICAgNzksICAgNzksCi0gICAgICAgNzksICAgNzksICAgNzksICAgNzksICAgODAsICA0NDgsICAg
ODAsICAgODAsICAgODAsICAgODAsCi0KLSAgICAgICA4MCwgICA4MCwgICA4MCwgICA3OSwgIDE1
NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwKLSAgICAgIDE1NiwgIDQ0NiwgICA4MCwg
ICA4MSwgIDQ0NSwgICA4MSwgICA3OSwgIDQ0NCwgICA4MSwgICA4MSwKLSAgICAgICA4MSwgICA4
MSwgICA4MSwgICA4MSwgICA4MSwgICA4MCwgICA4MywgIDIxNCwgICA4MywgICA4MywKLSAgICAg
ICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgIDIxNCwgIDIyOSwgIDIyOSwgIDIyOSwgIDQ0
MywKLSAgICAgIDE1MiwgIDQ0MiwgIDE1MiwgIDQ0MCwgICA4MywgIDE1MiwgIDE1MiwgIDE1Miwg
IDE1MiwgIDE1MiwKLSAgICAgIDE1MiwgIDE1MiwgIDIzNywgIDIzNywgIDIzNywgIDQzOSwgIDQz
OCwgICA4MywgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwg
IDI0NSwgIDI0NSwgIDI0NSwgIDQzNywgIDQzNiwKLSAgICAgIDE1NSwgIDQzNSwgIDE1NSwgIDQz
NCwgIDE1NCwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwKLSAgICAgIDE1NSwgIDE1NSwg
IDI0OSwgIDI0OSwgIDI0OSwgIDQzMywgIDQzMiwgIDE1NCwgIDE1NywgIDE1NywKLSAgICAgIDE1
NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDIyMiwgIDIyMiwgIDIyMiwgIDIyMiwgIDIyMiwK
LQotICAgICAgMjIyLCAgMjIyLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAg
MjIzLCAgMjI0LAotICAgICAgMjI0LCAgMjI0LCAgMjI0LCAgMjI0LCAgMjI0LCAgMjI0LCAgMjI1
LCAgMjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMjI1LCAgMjU1LCAgMjU1LCAg
MjU1LCAgMzg4LCAgMzg4LCAgMzg4LCAgNDMwLAotICAgICAgNDI5LCAgNDI4LCAgNDI3LCAgNDI2
LCAgNDI1LCAgNDI0LCAgNDIzLCAgNDIyLCAgNDIxLCAgMzg4LAotICAgICAgNDIwLCAgMzg4LCAg
NDU5LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDYwLCAgNDYwLCAgNDYxLCAgNDYxLAotICAgICAgNDYy
LCAgNDE5LCAgNDYyLCAgNDYyLCAgNDE4LCAgNDE2LCAgNDA3LCAgNDA2LCAgNDA1LCAgNDA0LAot
ICAgICAgNDAzLCAgNDAyLCAgNDAwLCAgMzk5LCAgMzk4LCAgMzk1LCAgMzk0LCAgMzkyLCAgMzg5
LCAgMzg3LAotICAgICAgMzg2LCAgMzg1LCAgMzgzLCAgMzgyLCAgMzgxLCAgMzc4LCAgMzc3LCAg
Mzc2LCAgMzc1LCAgMzc0LAotICAgICAgMzczLCAgMzcyLCAgMzcxLCAgMzY1LCAgMzYyLCAgMzU5
LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LAotICAgICAgMzUzLCAgMzUxLCAgMzUwLCAgMzQ5LCAg
MzQ4LCAgMzQ2LCAgMzQ1LCAgMzQzLCAgMzQxLCAgMzQwLAotCi0gICAgICAzMzksICAzMzgsICAz
MzcsICAzMzYsICAzMzUsICAzMzQsICAzMzIsICAzMzEsICAzMzAsICAzMjksCi0gICAgICAzMjgs
ICAzMjcsICAzMjYsICAzMjUsICAzMjQsICAzMjAsICAzMTksICAzMTYsICAzMDUsICAzMDEsCi0g
ICAgICAzMDAsICAyOTksICAyOTgsICAyOTEsICAyOTAsICAyODksICAyODQsICAyODMsICAyODIs
ICAyODEsCi0gICAgICAyODAsICAyNzksICAyNzYsICAyNzUsICAyNzQsICAyNzMsICAyNzIsICAy
NzEsICAyNzAsICAyNjksCi0gICAgICAyNjgsICAyNjcsICAyNjYsICAyNjUsICAyNjQsICAyNjMs
ICAyNjIsICAyNjEsICAyNTQsICAyNTMsCi0gICAgICAyNTIsICAyNTEsICAyNTAsICAyNDgsICAy
NDQsICAyNDIsICAyNDEsICAyNDAsICAyMzYsICAyMzUsCi0gICAgICAyMzQsICAyMzMsICAyMzIs
ICAyMzEsICAyMjgsICAyMjYsICAyMjEsICAyMjAsICAyMTksICAyMTcsCi0gICAgICAyMTYsICAy
MTUsICAyMTMsICAyMTIsICAyMTEsICAyMTAsICAyMDksICAyMDgsICAyMDcsICAyMDYsCi0gICAg
ICAyMDUsICAyMDQsICAyMDMsICAyMDIsICAyMDEsICAyMDAsICAxOTksICAxOTgsICAxOTcsICAx
OTYsCi0gICAgICAxOTUsICAxOTMsICAxOTIsICAxOTEsICAxOTAsICAxODksICAxODgsICAxODcs
ICAxODYsICAxODUsCi0KLSAgICAgIDE4NCwgIDE4MywgIDE4MiwgIDE4MSwgIDE3OSwgIDE3OCwg
IDE3NywgIDE3NiwgIDE3NSwgIDE3NCwKLSAgICAgIDE3MywgIDE3MiwgIDE3MSwgIDE3MCwgIDE2
OSwgIDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2MywKLSAgICAgIDE2MiwgIDE0NywgIDE0NSwg
IDE0NCwgIDE0MywgIDE0MSwgIDE0MCwgIDEzOSwgIDEzOCwgIDEzNywKLSAgICAgIDEzNiwgIDEz
NCwgIDEzMywgIDEzMiwgIDEzMSwgIDEzMCwgIDEyOSwgIDEyOCwgIDEyNywgIDEyNiwKLSAgICAg
IDEyNSwgIDEyNCwgIDEyMywgIDEyMSwgIDExOCwgIDExNywgIDExNiwgIDExNSwgIDExNCwgIDEx
MywKLSAgICAgIDExMSwgIDExMCwgIDEwOSwgIDEwOCwgIDEwNywgIDEwNiwgIDEwNSwgIDEwNCwg
IDEwMywgIDEwMiwKLSAgICAgIDEwMSwgIDEwMCwgICA5OSwgICA5OCwgICA5NywgICA5NiwgICA5
NSwgICA5MSwgICA4NywgICA2MCwKLSAgICAgICA1MywgICA0OCwgICA0NiwgICA0MywgICA0MCwg
ICAyNywgICAyNCwgICAxNiwgICAxMSwgICAgNywKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLQotICAgICAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4CisgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDgsICAgIDgsICAgIDksCisgICAgICAgMTMsICAgMTUsICAgMTYs
ICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMjQsCisgICAgICAgMjQsICAg
MzAsICAgMzAsICAgNDAsICAgMTUsICAgMTMsICAgNDcsICAgNDAsICAgIDksICAgMTgsCisgICAg
ICAgNDcsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTksICAg
MjksCisKKyAgICAgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAx
OCwgICAyMiwgICAzMSwKKyAgICAgICA0MSwgICAzMSwgICAxOCwgICAyOSwgIDQ0NCwgICAzMSwg
ICAxOSwgIDEzMywgIDQzOSwgIDEzMywKKyAgICAgICAxOCwgICAzMiwgICAzNCwgICA0MSwgICAz
NCwgICAyMiwgICAzMywgICAyMiwgICAyMiwgICAxOSwKKyAgICAgICAzMywgICAzMiwgICAzNSwg
ICAzNCwgICAzMiwgICAzMywgICAzNywgICAxOCwgICA1MSwgICAzOCwKKyAgICAgICAzNSwgICAz
MywgICAzNSwgICA0MywgICAzNywgICAzNSwgICAzOCwgICA5OSwgIDQzOCwgICA0NSwKKyAgICAg
ICA0OCwgICAzNSwgIDQzNywgICAzOCwgICA0OCwgICAzNywgICA0NSwgICA0NSwgICA0MywgICA0
NiwKKyAgICAgICA5OSwgICA0MywgICA0NiwgICA0OCwgIDEwOSwgIDEyOSwgICA0NSwgICA0NSwg
IDE5OCwgICA0NSwKKyAgICAgICA0NiwgIDQzNiwgIDEwOSwgIDEyOSwgIDE1MiwgIDE1MiwgIDE5
OCwgICA0NiwgICA1MSwgICA2NCwKKyAgICAgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwg
ICA2NCwgICA2NiwgICA2NiwgICA2NiwgICA2NiwKKyAgICAgICA2NiwgICA2NiwgICA2NiwgIDQz
NSwgIDEwNywgICA2NCwgIDEyMiwgIDEwNywgIDEwNywgIDQwMSwKKworICAgICAgNDAxLCAgMTA3
LCAgIDY2LCAgMTA3LCAgMTc4LCAgMTc4LCAgMTc4LCAgNDM0LCAgIDY0LCAgNDMyLAorICAgICAg
NDMwLCAgMTIyLCAgNDI5LCAgNDI4LCAgIDY3LCAgIDY2LCAgIDY3LCAgIDY3LCAgIDY3LCAgIDY3
LAorICAgICAgIDY3LCAgIDY3LCAgIDY3LCAgIDY4LCAgNDI3LCAgIDY4LCAgIDY4LCAgIDY4LCAg
IDY4LCAgIDY4LAorICAgICAgIDY4LCAgIDY4LCAgIDY3LCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQw
LCAgMTQwLCAgMTQwLCAgMTQwLAorICAgICAgNDI2LCAgIDY4LCAgIDY5LCAgNDI0LCAgIDY5LCAg
IDY3LCAgNDIzLCAgIDY5LCAgIDY5LCAgIDY5LAorICAgICAgIDY5LCAgIDY5LCAgIDY5LCAgIDY5
LCAgIDY4LCAgMTM3LCAgNDIyLCAgMTM3LCAgNDIxLCAgNDIwLAorICAgICAgMTM3LCAgMTM3LCAg
MTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM4LCAgMTM4LCAgMTM4LAorICAgICAgMTM4
LCAgMTM4LCAgMTM4LCAgMTM4LCAgMjAyLCAgMjAyLCAgMjAyLCAgNDE5LCAgNDE4LCAgMTM5LAor
ICAgICAgNDE3LCAgMTM5LCAgNDE2LCAgMTM4LCAgMTM5LCAgMTM5LCAgMTM5LCAgMTM5LCAgMTM5
LCAgMTM5LAorICAgICAgMTM5LCAgMjEzLCAgMjEzLCAgMjEzLCAgNDE0LCAgNDEzLCAgMTM4LCAg
MTQxLCAgMTQxLCAgMTQxLAorCisgICAgICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAyMDYsICAy
MDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsCisgICAgICAyMDYsICAyMDcsICAyMDcsICAyMDcs
ICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDgsICAyMDgsCisgICAgICAyMDgsICAyMDgsICAy
MDgsICAyMDgsICAyMDgsICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksCisgICAgICAyMDks
ICAyMDksICAyMjEsICAyMjEsICAyMjEsICAyMjksICAyMjksICAyMjksICAyMzMsICAyMzMsCisg
ICAgICAyMzMsICAyMzksICAyMzksICAyMzksICAzNzIsICAzNzIsICAzNzIsICA0MTIsICA0MTEs
ICA0MTAsCisgICAgICA0MDksICA0MDgsICA0MDcsICA0MDYsICA0MDUsICA0MDQsICA0MDMsICAz
NzIsICA0MDIsICAzNzIsCisgICAgICA0NDMsICA0NDMsICA0MDAsICAzOTEsICAzOTAsICAzODks
ICAzODgsICAzODcsICAzODYsICAzODQsCisgICAgICAzODMsICAzODIsICAzNzksICAzNzgsICAz
NzYsICAzNzMsICAzNzEsICAzNzAsICAzNjksICAzNjcsCisgICAgICAzNjYsICAzNjUsICAzNjIs
ICAzNjEsICAzNjAsICAzNTksICAzNTgsICAzNTcsICAzNTYsICAzNTUsCisgICAgICAzNDksICAz
NDYsICAzNDMsICAzNDIsICAzNDEsICAzNDAsICAzMzksICAzMzcsICAzMzUsICAzMzQsCisKKyAg
ICAgIDMzMywgIDMzMiwgIDMzMCwgIDMyOSwgIDMyNywgIDMyNSwgIDMyNCwgIDMyMywgIDMyMiwg
IDMyMSwKKyAgICAgIDMyMCwgIDMxOSwgIDMxOCwgIDMxNiwgIDMxNSwgIDMxNCwgIDMxMywgIDMx
MiwgIDMxMSwgIDMxMCwKKyAgICAgIDMwOSwgIDMwOCwgIDMwNCwgIDMwMywgIDMwMCwgIDI4OSwg
IDI4NSwgIDI4NCwgIDI4MywgIDI4MiwKKyAgICAgIDI3NSwgIDI3NCwgIDI3MywgIDI2OCwgIDI2
NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2MCwKKyAgICAgIDI1OSwgIDI1OCwgIDI1Nywg
IDI1NiwgIDI1NSwgIDI1NCwgIDI1MywgIDI1MiwgIDI1MSwgIDI1MCwKKyAgICAgIDI0OSwgIDI0
OCwgIDI0NywgIDI0NiwgIDI0NSwgIDIzOCwgIDIzNywgIDIzNiwgIDIzNSwgIDIzNCwKKyAgICAg
IDIzMiwgIDIyOCwgIDIyNiwgIDIyNSwgIDIyNCwgIDIyMCwgIDIxOSwgIDIxOCwgIDIxNywgIDIx
NiwKKyAgICAgIDIxNSwgIDIxMiwgIDIxMCwgIDIwNSwgIDIwNCwgIDIwMywgIDIwMSwgIDIwMCwg
IDE5OSwgIDE5NywKKyAgICAgIDE5NiwgIDE5NSwgIDE5NCwgIDE5MywgIDE5MiwgIDE5MSwgIDE5
MCwgIDE4OSwgIDE4OCwgIDE4NywKKyAgICAgIDE4NiwgIDE4NSwgIDE4NCwgIDE4MywgIDE4Miwg
IDE4MSwgIDE4MCwgIDE3OSwgIDE3NywgIDE3NiwKKworICAgICAgMTc1LCAgMTc0LCAgMTczLCAg
MTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LCAgMTY3LCAgMTY2LAorICAgICAgMTY1LCAgMTYz
LCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTU4LCAgMTU3LCAgMTU2LCAgMTU1LAorICAgICAg
MTU0LCAgMTUzLCAgMTUxLCAgMTUwLCAgMTQ5LCAgMTQ4LCAgMTQ3LCAgMTQ2LCAgMTM0LCAgMTMy
LAorICAgICAgMTMxLCAgMTMwLCAgMTI4LCAgMTI3LCAgMTI2LCAgMTI1LCAgMTI0LCAgMTIzLCAg
MTIxLCAgMTIwLAorICAgICAgMTE5LCAgMTE4LCAgMTE3LCAgMTE2LCAgMTE1LCAgMTE0LCAgMTEz
LCAgMTEyLCAgMTExLCAgMTEwLAorICAgICAgMTA4LCAgMTA1LCAgMTA0LCAgMTAzLCAgMTAyLCAg
MTAxLCAgMTAwLCAgIDk4LCAgIDk3LCAgIDk2LAorICAgICAgIDk1LCAgIDk0LCAgIDkzLCAgIDky
LCAgIDkxLCAgIDkwLCAgIDg5LCAgIDg4LCAgIDg3LCAgIDg2LAorICAgICAgIDg1LCAgIDg0LCAg
IDgzLCAgIDgyLCAgIDc4LCAgIDc0LCAgIDQ5LCAgIDQ0LCAgIDQyLCAgIDM5LAorICAgICAgIDM2
LCAgIDIzLCAgIDIwLCAgIDE3LCAgIDEyLCAgICA3LCAgICAzLCAgNDQyLCAgNDQyLCAgNDQyLAor
ICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLAorCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisg
ICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIKICAgICB9IDsKIAogLyogVGFibGUgb2Yg
Ym9vbGVhbnMsIHRydWUgaWYgcnVsZSBjb3VsZCBtYXRjaCBlb2wuICovCi1zdGF0aWMgeXljb25z
dCBmbGV4X2ludDMyX3QgeXlfcnVsZV9jYW5fbWF0Y2hfZW9sWzE1Nl0gPQorc3RhdGljIHl5Y29u
c3QgZmxleF9pbnQzMl90IHl5X3J1bGVfY2FuX21hdGNoX2VvbFsxNDhdID0KICAgICB7ICAgMCwK
LTAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IAorMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
Ci0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgICAg
IH07CisgICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgICAgIH07CiAKIC8qIFRoZSBpbnRlbnQg
YmVoaW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB0aGF0IGl0J2xsIGNhdGNoCiAgKiBhbnkgdXNlcyBv
ZiBSRUpFQ1Qgd2hpY2ggZmxleCBtaXNzZWQuCkBAIC04MTcsNyArNzkyLDEwIEBAIFdISUNIIEdF
TkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEgd2FybmluZyhkaXNhYmxl
IDogNDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZhbC0+bGV4Lmxp
bmUgPSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9maWxlID0geXlsbG9jLT5sYXN0X2Zp
bGUgPSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGxvYy0+bGFzdF9s
aW5lID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1heF9zaXpl
KSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5c2Nhbm5lcik7
CiAKQEAgLTgyNiw4ICs4MDQsNiBAQCBzdGF0aWMgaW50IGNoZWNrX3R5cGUoeXlzY2FuX3QgeXlz
Y2FubmVyCiBzdGF0aWMgaW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2FubmVyKTsKIAog
I2RlZmluZSBJTklUSUFMIDAKLSNkZWZpbmUgQ09NTUVOVCAxCi0jZGVmaW5lIEZJRUxEUyAyCiAK
ICNkZWZpbmUgWVlfRVhUUkFfVFlQRSBUUGFyc2VDb250ZXh0KgogCkBAIC04NjUsNiArODQxLDgg
QEAgc3RydWN0IHl5Z3V0c190CiAKICAgICBZWVNUWVBFICogeXlsdmFsX3I7CiAKKyAgICBZWUxU
WVBFICogeXlsbG9jX3I7CisKICAgICB9OyAvKiBlbmQgc3RydWN0IHl5Z3V0c190ICovCiAKIHN0
YXRpYyBpbnQgeXlfaW5pdF9nbG9iYWxzICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKQEAgLTg3Myw2
ICs4NTEsOCBAQCBzdGF0aWMgaW50IHl5X2luaXRfZ2xvYmFscyAoeXlzY2FuX3QgeXlzCiAgICAg
ICogZnJvbSBiaXNvbiBvdXRwdXQgaW4gc2VjdGlvbiAxLiovCiAgICAgIyAgICBkZWZpbmUgeXls
dmFsIHl5Zy0+eXlsdmFsX3IKICAgICAKKyAgICAjICAgIGRlZmluZSB5eWxsb2MgeXlnLT55eWxs
b2NfcgorICAgIAogaW50IHl5bGV4X2luaXQgKHl5c2Nhbl90KiBzY2FubmVyKTsKIAogaW50IHl5
bGV4X2luaXRfZXh0cmEgKFlZX0VYVFJBX1RZUEUgdXNlcl9kZWZpbmVkLHl5c2Nhbl90KiBzY2Fu
bmVyKTsKQEAgLTkxMCw2ICs4OTAsMTAgQEAgWVlTVFlQRSAqIHl5Z2V0X2x2YWwgKHl5c2Nhbl90
IHl5c2Nhbm5lcgogCiB2b2lkIHl5c2V0X2x2YWwgKFlZU1RZUEUgKiB5eWx2YWxfcGFyYW0gLHl5
c2Nhbl90IHl5c2Nhbm5lciApOwogCisgICAgICAgWVlMVFlQRSAqeXlnZXRfbGxvYyAoeXlzY2Fu
X3QgeXlzY2FubmVyICk7CisgICAgCisgICAgICAgIHZvaWQgeXlzZXRfbGxvYyAoWVlMVFlQRSAq
IHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAgCiAvKiBNYWNyb3MgYWZ0
ZXIgdGhpcyBwb2ludCBjYW4gYWxsIGJlIG92ZXJyaWRkZW4gYnkgdXNlciBkZWZpbml0aW9ucyBp
bgogICogc2VjdGlvbiAxLgogICovCkBAIC05NDAsMTIgKzkyNCw2IEBAIHN0YXRpYyBpbnQgaW5w
dXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCiAjZW5kaWYKIAotICAgIHN0YXRpYyB2b2lkIHl5
X3B1c2hfc3RhdGUgKGludCBuZXdfc3RhdGUgLHl5c2Nhbl90IHl5c2Nhbm5lcik7Ci0gICAgCi0g
ICAgc3RhdGljIHZvaWQgeXlfcG9wX3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKLSAgICAK
LSAgICBzdGF0aWMgaW50IHl5X3RvcF9zdGF0ZSAoeXlzY2FuX3QgeXlzY2FubmVyICk7Ci0gICAg
CiAvKiBBbW91bnQgb2Ygc3R1ZmYgdG8gc2x1cnAgdXAgd2l0aCBlYWNoIHJlYWQuICovCiAjaWZu
ZGVmIFlZX1JFQURfQlVGX1NJWkUKICNkZWZpbmUgWVlfUkVBRF9CVUZfU0laRSA4MTkyCkBAIC0x
MDIyLDEwICsxMDAwLDEwIEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciAp
OwogI2RlZmluZSBZWV9ERUNMX0lTX09VUlMgMQogCiBleHRlcm4gaW50IHl5bGV4IFwKLSAgICAg
ICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFtICx5eXNjYW5fdCB5eXNjYW5uZXIpOwor
ICAgICAgICAgICAgICAgKFlZU1RZUEUgKiB5eWx2YWxfcGFyYW0sWVlMVFlQRSAqIHl5bGxvY19w
YXJhbSAseXlzY2FuX3QgeXlzY2FubmVyKTsKIAogI2RlZmluZSBZWV9ERUNMIGludCB5eWxleCBc
Ci0gICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSAsIHl5c2Nhbl90IHl5c2Nh
bm5lcikKKyAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFtLCBZWUxUWVBFICog
eXlsbG9jX3BhcmFtICwgeXlzY2FuX3QgeXlzY2FubmVyKQogI2VuZGlmIC8qICFZWV9ERUNMICov
CiAKIC8qIENvZGUgZXhlY3V0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHJ1bGUsIGFmdGVy
IHl5dGV4dCBhbmQgeXlsZW5nCkBAIC0xMDUyLDEyICsxMDMwLDEwIEBAIFlZX0RFQ0wKIAlyZWdp
c3RlciBpbnQgeXlfYWN0OwogICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXln
dXRzX3QqKXl5c2Nhbm5lcjsKIAotICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQgPSB5eWV4dHJh
OwotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMgKi8KLQogICAgIHl5bHZhbCA9IHl5bHZh
bF9wYXJhbTsKIAorICAgIHl5bGxvYyA9IHl5bGxvY19wYXJhbTsKKwogCWlmICggIXl5Zy0+eXlf
aW5pdCApCiAJCXsKIAkJeXlnLT55eV9pbml0ID0gMTsKQEAgLTExMDksMTMgKzEwODUsMTMgQEAg
eXlfbWF0Y2g6CiAJCQl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsg
eXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQkJewogCQkJCXl5X2N1cnJlbnRfc3RhdGUg
PSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCQkJaWYgKCB5eV9jdXJyZW50X3N0
YXRlID49IDQ1OSApCisJCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ0MyApCiAJCQkJCXl5
X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJCX0KIAkJCXl5X2N1cnJlbnRf
c3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQp
IHl5X2NdOwogCQkJKyt5eV9jcDsKIAkJCX0KLQkJd2hpbGUgKCB5eV9jdXJyZW50X3N0YXRlICE9
IDQ1OCApOworCQl3aGlsZSAoIHl5X2N1cnJlbnRfc3RhdGUgIT0gNDQyICk7CiAJCXl5X2NwID0g
eXlnLT55eV9sYXN0X2FjY2VwdGluZ19jcG9zOwogCQl5eV9jdXJyZW50X3N0YXRlID0geXlnLT55
eV9sYXN0X2FjY2VwdGluZ19zdGF0ZTsKIApAQCAtMTE0OSwxOTggKzExMjUsMTk5IEBAIGRvX2Fj
dGlvbjoJLyogVGhpcyBsYWJlbCBpcyB1c2VkIG9ubHkgdG8KIAogY2FzZSAxOgogWVlfUlVMRV9T
RVRVUAotOworeyByZXR1cm4gSU5WQVJJQU5UOyB9CiAJWVlfQlJFQUsKLS8qIE11bHRpLWxpbmUg
Y29tbWVudHMgKi8KIGNhc2UgMjoKIFlZX1JVTEVfU0VUVVAKLXsgeXlfcHVzaF9zdGF0ZShDT01N
RU5ULCB5eXNjYW5uZXIpOyB9Cit7IHJldHVybiBISUdIX1BSRUNJU0lPTjsgfQogCVlZX0JSRUFL
CiBjYXNlIDM6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBNRURJVU1fUFJFQ0lTSU9OOyB9CisJ
WVlfQlJFQUsKIGNhc2UgNDoKLS8qIHJ1bGUgNCBjYW4gbWF0Y2ggZW9sICovCiBZWV9SVUxFX1NF
VFVQCi07Cit7IHJldHVybiBMT1dfUFJFQ0lTSU9OOyB9CiAJWVlfQlJFQUsKIGNhc2UgNToKIFlZ
X1JVTEVfU0VUVVAKLXsgeXlfcG9wX3N0YXRlKHl5c2Nhbm5lcik7IH0KK3sgcmV0dXJuIFBSRUNJ
U0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDY6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihJTlZB
UklBTlQpOyB9Cit7IHJldHVybiBBVFRSSUJVVEU7IH0KIAlZWV9CUkVBSwogY2FzZSA3OgogWVlf
UlVMRV9TRVRVUAoteyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Cit7IHJldHVybiBDT05TVF9R
VUFMOyB9CiAJWVlfQlJFQUsKIGNhc2UgODoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKE1FRElV
TV9QUkVDSVNJT04pOyB9Cit7IHJldHVybiBVTklGT1JNOyB9CiAJWVlfQlJFQUsKIGNhc2UgOToK
IFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKExPV19QUkVDSVNJT04pOyB9Cit7IHJldHVybiBWQVJZ
SU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihQUkVD
SVNJT04pOyB9Cit7IHJldHVybiBCUkVBSzsgfQogCVlZX0JSRUFLCiBjYXNlIDExOgogWVlfUlVM
RV9TRVRVUAoteyByZXR1cm4oQVRUUklCVVRFKTsgfQoreyByZXR1cm4gQ09OVElOVUU7IH0KIAlZ
WV9CUkVBSwogY2FzZSAxMjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKENPTlNUX1FVQUwpOyB9
Cit7IHJldHVybiBETzsgfQogCVlZX0JSRUFLCiBjYXNlIDEzOgogWVlfUlVMRV9TRVRVUAoteyBy
ZXR1cm4oVU5JRk9STSk7IH0KK3sgcmV0dXJuIEZPUjsgfQogCVlZX0JSRUFLCiBjYXNlIDE0Ogog
WVlfUlVMRV9TRVRVUAoteyByZXR1cm4oVkFSWUlORyk7IH0KK3sgcmV0dXJuIFdISUxFOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMTU6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihCUkVBSyk7IH0KK3sg
cmV0dXJuIElGOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTY6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
bihDT05USU5VRSk7IH0KK3sgcmV0dXJuIEVMU0U7IH0KIAlZWV9CUkVBSwogY2FzZSAxNzoKIFlZ
X1JVTEVfU0VUVVAKLXsgcmV0dXJuKERPKTsgfQoreyByZXR1cm4gSU5fUVVBTDsgfQogCVlZX0JS
RUFLCiBjYXNlIDE4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oRk9SKTsgfQoreyByZXR1cm4g
T1VUX1FVQUw7IH0KIAlZWV9CUkVBSwogY2FzZSAxOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJu
KFdISUxFKTsgfQoreyByZXR1cm4gSU5PVVRfUVVBTDsgfQogCVlZX0JSRUFLCiBjYXNlIDIwOgog
WVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSUYpOyB9Cit7IHJldHVybiBGTE9BVF9UWVBFOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMjE6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihFTFNFKTsgfQoreyBy
ZXR1cm4gSU5UX1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAyMjoKIFlZX1JVTEVfU0VUVVAKLXsg
cmV0dXJuKElOX1FVQUwpOyB9Cit7IHJldHVybiBWT0lEX1RZUEU7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAyMzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKE9VVF9RVUFMKTsgfQoreyByZXR1cm4gQk9P
TF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjQ6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihJ
Tk9VVF9RVUFMKTsgfQoreyB5eWx2YWwtPmxleC5iID0gdHJ1ZTsgIHJldHVybiBCT09MQ09OU1RB
TlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAyNToKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4
QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEZMT0FUX1RZUEUpOyB9Cit7IHl5bHZhbC0+bGV4LmIg
PSBmYWxzZTsgcmV0dXJuIEJPT0xDT05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDI2OgogWVlf
UlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oSU5UX1RZ
UEUpOyB9Cit7IHJldHVybiBESVNDQVJEOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjc6CiBZWV9SVUxF
X1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihWT0lEX1RZUEUp
OyB9Cit7IHJldHVybiBSRVRVUk47IH0KIAlZWV9CUkVBSwogY2FzZSAyODoKIFlZX1JVTEVfU0VU
VVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEJPT0xfVFlQRSk7IH0K
K3sgcmV0dXJuIE1BVFJJWDI7IH0KIAlZWV9CUkVBSwogY2FzZSAyOToKIFlZX1JVTEVfU0VUVVAK
LXsgeXlsdmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4oQk9PTENPTlNUQU5UKTsgfQoreyByZXR1
cm4gTUFUUklYMzsgfQogCVlZX0JSRUFLCiBjYXNlIDMwOgogWVlfUlVMRV9TRVRVUAoteyB5eWx2
YWwtPmxleC5iID0gZmFsc2U7IHJldHVybihCT09MQ09OU1RBTlQpOyB9Cit7IHJldHVybiBNQVRS
SVg0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzE6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihESVND
QVJEKTsgfQoreyByZXR1cm4gVkVDMjsgfQogCVlZX0JSRUFLCiBjYXNlIDMyOgogWVlfUlVMRV9T
RVRVUAoteyByZXR1cm4oUkVUVVJOKTsgfQoreyByZXR1cm4gVkVDMzsgfQogCVlZX0JSRUFLCiBj
YXNlIDMzOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyBy
ZXR1cm4oTUFUUklYMik7IH0KK3sgcmV0dXJuIFZFQzQ7IH0KIAlZWV9CUkVBSwogY2FzZSAzNDoK
IFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1B
VFJJWDMpOyB9Cit7IHJldHVybiBJVkVDMjsgfQogCVlZX0JSRUFLCiBjYXNlIDM1OgogWVlfUlVM
RV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYNCk7
IH0KK3sgcmV0dXJuIElWRUMzOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzY6CiBZWV9SVUxFX1NFVFVQ
Ci17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDMik7IH0KK3sgcmV0
dXJuIElWRUM0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzc6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRl
eHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDMyk7IH0KK3sgcmV0dXJuIEJWRUMy
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzg6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFm
dGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KK3sgcmV0dXJuIEJWRUMzOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMzk6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9
IHRydWU7IHJldHVybiAoSVZFQzIpOyB9Cit7IHJldHVybiBCVkVDNDsgfQogCVlZX0JSRUFLCiBj
YXNlIDQwOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyBy
ZXR1cm4gKElWRUMzKTsgfQoreyByZXR1cm4gU0FNUExFUjJEOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
NDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVy
biAoSVZFQzQpOyB9Cit7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQogCVlZX0JSRUFLCiBjYXNlIDQy
OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4g
KEJWRUMyKTsgfQoreyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KIAlZWV9CUkVBSwog
Y2FzZSA0MzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsg
cmV0dXJuIChCVkVDMyk7IH0KK3sgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAlZWV9CUkVBSwog
Y2FzZSA0NDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsg
cmV0dXJuIChCVkVDNCk7IH0KK3sgcmV0dXJuIFNUUlVDVDsgfQogCVlZX0JSRUFLCiBjYXNlIDQ1
OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4g
U0FNUExFUjJEOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9C
UkVBSwogY2FzZSA0NjoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
dHJ1ZTsgcmV0dXJuIFNBTVBMRVJDVUJFOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nh
bm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJfRVhURVJOQUxfT0VTOyB9Cit7IHJl
dHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0ODoKIFlZ
X1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBM
RVIyRFJFQ1Q7IH0KK3sgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQogCVlZX0JS
RUFLCiBjYXNlIDQ5OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0
cnVlOyByZXR1cm4oU1RSVUNUKTsgfQoreyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIp
OyB9CiAJWVlfQlJFQUsKIGNhc2UgNTA6CiBZWV9SVUxFX1NFVFVQCkBAIC0xNTE2LDI2NiArMTQ5
MywyMjggQEAgWVlfUlVMRV9TRVRVUAogCVlZX0JSRUFLCiBjYXNlIDkzOgogWVlfUlVMRV9TRVRV
UAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7CisgICB5eWx2YWwtPmxl
eC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAKKyAgIHJldHVybiBjaGVja190eXBl
KHl5c2Nhbm5lcik7Cit9CiAJWVlfQlJFQUsKIGNhc2UgOTQ6CiBZWV9SVUxFX1NFVFVQCi17IHJl
dHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KK3sgeXlsdmFsLT5sZXguaSA9IHN0YXRp
Y19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0K
IAlZWV9CUkVBSwogY2FzZSA5NToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIHJlc2VydmVkX3dv
cmQoeXlzY2FubmVyKTsgfQoreyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0
b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNl
IDk2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9
Cit7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDAp
KTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgOTc6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KK3sgeXlsdmFsLT5sZXgu
ZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09O
U1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5ODoKIFlZX1JVTEVfU0VUVVAKLXsKLSAgIHl5bHZh
bC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5nKHl5dGV4dCk7IAotICAgcmV0dXJuIGNoZWNr
X3R5cGUoeXlzY2FubmVyKTsKLX0KK3sgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0
PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwog
Y2FzZSA5OToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGlu
dD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Cit7IHl5bHZh
bC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybiBG
TE9BVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAwOgogWVlfUlVMRV9TRVRVUAoteyB5
eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJl
dHVybihJTlRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIEFERF9BU1NJR047IH0KIAlZWV9CUkVBSwog
Y2FzZSAxMDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmVycm9yKHl5bGluZW5vLCAiSW52
YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+cmVjb3ZlcigpOyByZXR1cm4g
MDt9Cit7IHJldHVybiBTVUJfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAyOgogWVlfUlVM
RV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0
LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIE1VTF9BU1NJR047IH0K
IAlZWV9CUkVBSwogY2FzZSAxMDM6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmYgPSBz
dGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5U
KTsgfQoreyByZXR1cm4gRElWX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEwNDoKIFlZX1JV
TEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5
eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Cit7IHJldHVybiBNT0RfQVNTSUdOOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTA1OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5mID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4oRkxPQVRDT05TVEFO
VCk7IH0KK3sgcmV0dXJuIExFRlRfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA2OgogWVlf
UlVMRV9TRVRVUAoteyAgcmV0dXJuKEFERF9BU1NJR04pOyB9Cit7IHJldHVybiBSSUdIVF9BU1NJ
R047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDc6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oU1VC
X0FTU0lHTik7IH0KK3sgcmV0dXJuIEFORF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDg6
CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KK3sgcmV0dXJuIFhPUl9B
U1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDk6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4o
RElWX0FTU0lHTik7IH0KK3sgcmV0dXJuIE9SX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEx
MDoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihNT0RfQVNTSUdOKTsgfQoreyByZXR1cm4gSU5D
X09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTExOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKExF
RlRfQVNTSUdOKTsgfQoreyByZXR1cm4gREVDX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTEyOgog
WVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFJJR0hUX0FTU0lHTik7IH0KK3sgcmV0dXJuIEFORF9P
UDsgfQogCVlZX0JSRUFLCiBjYXNlIDExMzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihBTkRf
QVNTSUdOKTsgfQoreyByZXR1cm4gT1JfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTQ6CiBZWV9S
VUxFX1NFVFVQCi17ICByZXR1cm4oWE9SX0FTU0lHTik7IH0KK3sgcmV0dXJuIFhPUl9PUDsgfQog
CVlZX0JSRUFLCiBjYXNlIDExNToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihPUl9BU1NJR04p
OyB9Cit7IHJldHVybiBMRV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNjoKIFlZX1JVTEVfU0VU
VVAKLXsgIHJldHVybihJTkNfT1ApOyB9Cit7IHJldHVybiBHRV9PUDsgfQogCVlZX0JSRUFLCiBj
YXNlIDExNzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihERUNfT1ApOyB9Cit7IHJldHVybiBF
UV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExODoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihB
TkRfT1ApOyB9Cit7IHJldHVybiBORV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExOToKIFlZX1JV
TEVfU0VUVVAKLXsgIHJldHVybihPUl9PUCk7IH0KK3sgcmV0dXJuIExFRlRfT1A7IH0KIAlZWV9C
UkVBSwogY2FzZSAxMjA6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oWE9SX09QKTsgfQoreyBy
ZXR1cm4gUklHSFRfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjE6CiBZWV9SVUxFX1NFVFVQCi17
ICByZXR1cm4oTEVfT1ApOyB9Cit7IHJldHVybiBTRU1JQ09MT047IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxMjI6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oR0VfT1ApOyB9Cit7IHJldHVybiBMRUZU
X0JSQUNFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIzOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJu
KEVRX09QKTsgfQoreyByZXR1cm4gUklHSFRfQlJBQ0U7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjQ6
CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTkVfT1ApOyB9Cit7IHJldHVybiBDT01NQTsgfQog
CVlZX0JSRUFLCiBjYXNlIDEyNToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihMRUZUX09QKTsg
fQoreyByZXR1cm4gQ09MT047IH0KIAlZWV9CUkVBSwogY2FzZSAxMjY6CiBZWV9SVUxFX1NFVFVQ
Ci17ICByZXR1cm4oUklHSFRfT1ApOyB9Cit7IHJldHVybiBFUVVBTDsgfQogCVlZX0JSRUFLCiBj
YXNlIDEyNzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7
IHJldHVybihTRU1JQ09MT04pOyB9Cit7IHJldHVybiBMRUZUX1BBUkVOOyB9CiAJWVlfQlJFQUsK
IGNhc2UgMTI4OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxz
ZTsgcmV0dXJuKExFRlRfQlJBQ0UpOyB9Cit7IHJldHVybiBSSUdIVF9QQVJFTjsgfQogCVlZX0JS
RUFLCiBjYXNlIDEyOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJJR0hUX0JSQUNFKTsgfQor
eyByZXR1cm4gTEVGVF9CUkFDS0VUOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMwOgogWVlfUlVMRV9T
RVRVUAoteyBpZiAoY29udGV4dC0+aW5UeXBlUGFyZW4pIGNvbnRleHQtPmxleEFmdGVyVHlwZSA9
IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Cit7IHJldHVybiBSSUdIVF9CUkFDS0VUOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMTMxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQ09MT04pOyB9Cit7IHJl
dHVybiBET1Q7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzI6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRl
eHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oRVFVQUwpOyB9Cit7IHJldHVybiBCQU5H
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMzOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSBmYWxzZTsgY29udGV4dC0+aW5UeXBlUGFyZW4gPSB0cnVlOyByZXR1cm4oTEVG
VF9QQVJFTik7IH0KK3sgcmV0dXJuIERBU0g7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzQ6CiBZWV9S
VUxFX1NFVFVQCi17IGNvbnRleHQtPmluVHlwZVBhcmVuID0gZmFsc2U7IHJldHVybihSSUdIVF9Q
QVJFTik7IH0KK3sgcmV0dXJuIFRJTERFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM1OgogWVlfUlVM
RV9TRVRVUAoteyByZXR1cm4oTEVGVF9CUkFDS0VUKTsgfQoreyByZXR1cm4gUExVUzsgfQogCVlZ
X0JSRUFLCiBjYXNlIDEzNjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJJR0hUX0JSQUNLRVQp
OyB9Cit7IHJldHVybiBTVEFSOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM3OgogWVlfUlVMRV9TRVRV
UAoteyBCRUdJTihGSUVMRFMpOyAgcmV0dXJuKERPVCk7IH0KK3sgcmV0dXJuIFNMQVNIOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMTM4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQkFORyk7IH0KK3sg
cmV0dXJuIFBFUkNFTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzk6CiBZWV9SVUxFX1NFVFVQCi17
IHJldHVybihEQVNIKTsgfQoreyByZXR1cm4gTEVGVF9BTkdMRTsgfQogCVlZX0JSRUFLCiBjYXNl
IDE0MDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFRJTERFKTsgfQoreyByZXR1cm4gUklHSFRf
QU5HTEU7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDE6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihQ
TFVTKTsgfQoreyByZXR1cm4gVkVSVElDQUxfQkFSOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQyOgog
WVlfUlVMRV9TRVRVUAoteyByZXR1cm4oU1RBUik7IH0KK3sgcmV0dXJuIENBUkVUOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMTQzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oU0xBU0gpOyB9Cit7IHJl
dHVybiBBTVBFUlNBTkQ7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDQ6CiBZWV9SVUxFX1NFVFVQCi17
IHJldHVybihQRVJDRU5UKTsgfQoreyByZXR1cm4gUVVFU1RJT047IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxNDU6CisvKiBydWxlIDE0NSBjYW4gbWF0Y2ggZW9sICovCiBZWV9SVUxFX1NFVFVQCi17IHJl
dHVybihMRUZUX0FOR0xFKTsgfQotCVlZX0JSRUFLCi1jYXNlIDE0NjoKLVlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuKFJJR0hUX0FOR0xFKTsgfQotCVlZX0JSRUFLCi1jYXNlIDE0NzoKLVlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKFZFUlRJQ0FMX0JBUik7IH0KLQlZWV9CUkVBSwotY2FzZSAxNDg6Ci1Z
WV9SVUxFX1NFVFVQCi17IHJldHVybihDQVJFVCk7IH0KLQlZWV9CUkVBSwotY2FzZSAxNDk6Ci1Z
WV9SVUxFX1NFVFVQCi17IHJldHVybihBTVBFUlNBTkQpOyB9Ci0JWVlfQlJFQUsKLWNhc2UgMTUw
OgotWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUVVFU1RJT04pOyB9Ci0JWVlfQlJFQUsKLWNhc2Ug
MTUxOgotWVlfUlVMRV9TRVRVUAoteyAKLSAgICBCRUdJTihJTklUSUFMKTsKLSAgICB5eWx2YWwt
PmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAKLSAgICByZXR1cm4gRklFTERf
U0VMRUNUSU9OOwotfQotCVlZX0JSRUFLCi1jYXNlIDE1MjoKLVlZX1JVTEVfU0VUVVAKLXt9Ci0J
WVlfQlJFQUsKLWNhc2UgMTUzOgotLyogcnVsZSAxNTMgY2FuIG1hdGNoIGVvbCAqLwotWVlfUlVM
RV9TRVRVUAoteyAgfQoreyB9CiAJWVlfQlJFQUsKIGNhc2UgWVlfU1RBVEVfRU9GKElOSVRJQUwp
OgotY2FzZSBZWV9TVEFURV9FT0YoQ09NTUVOVCk6Ci1jYXNlIFlZX1NUQVRFX0VPRihGSUVMRFMp
OgoteyBjb250ZXh0LT5BZnRlckVPRiA9IHRydWU7IHl5dGVybWluYXRlKCk7IH0KK3sgeXl0ZXJt
aW5hdGUoKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE1NDoKK2Nhc2UgMTQ2OgogWVlfUlVMRV9TRVRV
UAoteyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBjaGFyIiwgeXl0ZXh0LCAi
Iik7IHJldHVybiAwOyB9Cit7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAJWVlfQlJFQUsK
LWNhc2UgMTU1OgorY2FzZSAxNDc6CiBZWV9SVUxFX1NFVFVQCiBFQ0hPOwogCVlZX0JSRUFLCkBA
IC0yMDcxLDcgKzIwMTAsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2Fu
X3QKIAkJd2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9
IHl5X2N1cnJlbnRfc3RhdGUgKQogCQkJewogCQkJeXlfY3VycmVudF9zdGF0ZSA9IChpbnQpIHl5
X2RlZlt5eV9jdXJyZW50X3N0YXRlXTsKLQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NTkg
KQorCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ0MyApCiAJCQkJeXlfYyA9IHl5X21ldGFb
KHVuc2lnbmVkIGludCkgeXlfY107CiAJCQl9CiAJCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRb
eXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwpAQCAtMjEw
MCwxMSArMjAzOSwxMSBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QK
IAl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlf
Y3VycmVudF9zdGF0ZSApCiAJCXsKIAkJeXlfY3VycmVudF9zdGF0ZSA9IChpbnQpIHl5X2RlZlt5
eV9jdXJyZW50X3N0YXRlXTsKLQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ1OSApCisJCWlm
ICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NDMgKQogCQkJeXlfYyA9IHl5X21ldGFbKHVuc2lnbmVk
IGludCkgeXlfY107CiAJCX0KIAl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlf
Y3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsKLQl5eV9pc19qYW0gPSAoeXlf
Y3VycmVudF9zdGF0ZSA9PSA0NTgpOworCXl5X2lzX2phbSA9ICh5eV9jdXJyZW50X3N0YXRlID09
IDQ0Mik7CiAKIAlyZXR1cm4geXlfaXNfamFtID8gMCA6IHl5X2N1cnJlbnRfc3RhdGU7CiB9CkBA
IC0yNTQ4LDQ2ICsyNDg3LDYgQEAgWVlfQlVGRkVSX1NUQVRFIHl5X3NjYW5fYnl0ZXMgICh5eWNv
bnN0CiAJcmV0dXJuIGI7CiB9CiAKLSAgICBzdGF0aWMgdm9pZCB5eV9wdXNoX3N0YXRlIChpbnQg
IG5ld19zdGF0ZSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBzdHJ1Y3QgeXlndXRzX3Qg
KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0JaWYgKCB5eWctPnl5X3N0YXJ0
X3N0YWNrX3B0ciA+PSB5eWctPnl5X3N0YXJ0X3N0YWNrX2RlcHRoICkKLQkJewotCQl5eV9zaXpl
X3QgbmV3X3NpemU7Ci0KLQkJeXlnLT55eV9zdGFydF9zdGFja19kZXB0aCArPSBZWV9TVEFSVF9T
VEFDS19JTkNSOwotCQluZXdfc2l6ZSA9IHl5Zy0+eXlfc3RhcnRfc3RhY2tfZGVwdGggKiBzaXpl
b2YoIGludCApOwotCi0JCWlmICggISB5eWctPnl5X3N0YXJ0X3N0YWNrICkKLQkJCXl5Zy0+eXlf
c3RhcnRfc3RhY2sgPSAoaW50ICopIHl5YWxsb2MobmV3X3NpemUgLHl5c2Nhbm5lciApOwotCi0J
CWVsc2UKLQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sgPSAoaW50ICopIHl5cmVhbGxvYygodm9pZCAq
KSB5eWctPnl5X3N0YXJ0X3N0YWNrLG5ld19zaXplICx5eXNjYW5uZXIgKTsKLQotCQlpZiAoICEg
eXlnLT55eV9zdGFydF9zdGFjayApCi0JCQlZWV9GQVRBTF9FUlJPUiggIm91dCBvZiBtZW1vcnkg
ZXhwYW5kaW5nIHN0YXJ0LWNvbmRpdGlvbiBzdGFjayIgKTsKLQkJfQotCi0JeXlnLT55eV9zdGFy
dF9zdGFja1t5eWctPnl5X3N0YXJ0X3N0YWNrX3B0cisrXSA9IFlZX1NUQVJUOwotCi0JQkVHSU4o
bmV3X3N0YXRlKTsKLX0KLQotICAgIHN0YXRpYyB2b2lkIHl5X3BvcF9zdGF0ZSAgKHl5c2Nhbl90
IHl5c2Nhbm5lcikKLXsKLSAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0
c190Kil5eXNjYW5uZXI7Ci0JaWYgKCAtLXl5Zy0+eXlfc3RhcnRfc3RhY2tfcHRyIDwgMCApCi0J
CVlZX0ZBVEFMX0VSUk9SKCAic3RhcnQtY29uZGl0aW9uIHN0YWNrIHVuZGVyZmxvdyIgKTsKLQot
CUJFR0lOKHl5Zy0+eXlfc3RhcnRfc3RhY2tbeXlnLT55eV9zdGFydF9zdGFja19wdHJdKTsKLX0K
LQotICAgIHN0YXRpYyBpbnQgeXlfdG9wX3N0YXRlICAoeXlzY2FuX3QgeXlzY2FubmVyKQotewot
ICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsK
LQlyZXR1cm4geXlnLT55eV9zdGFydF9zdGFja1t5eWctPnl5X3N0YXJ0X3N0YWNrX3B0ciAtIDFd
OwotfQotCiAjaWZuZGVmIFlZX0VYSVRfRkFJTFVSRQogI2RlZmluZSBZWV9FWElUX0ZBSUxVUkUg
MgogI2VuZGlmCkBAIC0yNzczLDYgKzI2NzIsMTggQEAgdm9pZCB5eXNldF9sdmFsIChZWVNUWVBF
ICogIHl5bHZhbF9wYXJhbQogICAgIHl5bHZhbCA9IHl5bHZhbF9wYXJhbTsKIH0KIAorWVlMVFlQ
RSAqeXlnZXRfbGxvYyAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKK3sKKyAgICBzdHJ1Y3QgeXlndXRz
X3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisgICAgcmV0dXJuIHl5bGxv
YzsKK30KKyAgICAKK3ZvaWQgeXlzZXRfbGxvYyAoWVlMVFlQRSAqICB5eWxsb2NfcGFyYW0gLCB5
eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVj
dCB5eWd1dHNfdCopeXlzY2FubmVyOworICAgIHl5bGxvYyA9IHl5bGxvY19wYXJhbTsKK30KKyAg
ICAKIC8qIFVzZXItdmlzaWJsZSBBUEkgKi8KIAogLyogeXlsZXhfaW5pdCBpcyBzcGVjaWFsIGJl
Y2F1c2UgaXQgY3JlYXRlcyB0aGUgc2Nhbm5lciBpdHNlbGYsIHNvIGl0IGlzCkBAIC0yOTU0LDcg
KzI4NjUsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6CiAgICAg
eXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8gMCA6IHRva2Vu
LnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAgbWVtY3B5KGJ1
ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3Vy
Y2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24ubGluZSkseXlzY2FubmVy
KTsKKyAgICB5eXNldF9jb2x1bW4odG9rZW4ubG9jYXRpb24uZmlsZSx5eXNjYW5uZXIpOworICAg
IHl5c2V0X2xpbmVubyh0b2tlbi5sb2NhdGlvbi5saW5lLHl5c2Nhbm5lcik7CiAKICAgICBpZiAo
bGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5wdXQgYnVmZmVyIG92
ZXJmbG93Iik7CkBAIC0yOTY4LDEyICsyODgwLDEwIEBAIGludCBjaGVja190eXBlKHl5c2Nhbl90
IHl5c2Nhbm5lcikgewogICAgIAogICAgIGludCB0b2tlbiA9IElERU5USUZJRVI7CiAgICAgVFN5
bWJvbCogc3ltYm9sID0geXlleHRyYS0+c3ltYm9sVGFibGUuZmluZCh5eXRleHQpOwotICAgIGlm
ICh5eWV4dHJhLT5sZXhBZnRlclR5cGUgPT0gZmFsc2UgJiYgc3ltYm9sICYmIHN5bWJvbC0+aXNW
YXJpYWJsZSgpKSB7CisgICAgaWYgKHN5bWJvbCAmJiBzeW1ib2wtPmlzVmFyaWFibGUoKSkgewog
ICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oc3lt
Ym9sKTsKLSAgICAgICAgaWYgKHZhcmlhYmxlLT5pc1VzZXJUeXBlKCkpIHsKLSAgICAgICAgICAg
IHl5ZXh0cmEtPmxleEFmdGVyVHlwZSA9IHRydWU7CisgICAgICAgIGlmICh2YXJpYWJsZS0+aXNV
c2VyVHlwZSgpKQogICAgICAgICAgICAgdG9rZW4gPSBUWVBFX05BTUU7Ci0gICAgICAgIH0KICAg
ICB9CiAgICAgeXlsdmFsLT5sZXguc3ltYm9sID0gc3ltYm9sOwogICAgIHJldHVybiB0b2tlbjsK
QEAgLTI5ODIsMjIgKzI4OTIsMTEgQEAgaW50IGNoZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVy
KSB7CiBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKICAgICBzdHJ1Y3Qg
eXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSB5eXNjYW5uZXI7CiAKLSAgICB5eWV4
dHJhLT5lcnJvcih5eWxpbmVubywgIklsbGVnYWwgdXNlIG9mIHJlc2VydmVkIHdvcmQiLCB5eXRl
eHQsICIiKTsKKyAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSWxsZWdhbCB1c2Ugb2YgcmVz
ZXJ2ZWQgd29yZCIsIHl5dGV4dCwgIiIpOwogICAgIHl5ZXh0cmEtPnJlY292ZXIoKTsKICAgICBy
ZXR1cm4gMDsKIH0KIAotdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IGNoYXIqIHJlYXNvbikgewotICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1
dHNfdCopIGNvbnRleHQtPnNjYW5uZXI7Ci0KLSAgICBpZiAoY29udGV4dC0+QWZ0ZXJFT0YpIHsK
LSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXlsaW5lbm8sIHJlYXNvbiwgInVuZXhwZWN0ZWQgRU9G
Iik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXlsaW5lbm8sIHJlYXNv
biwgeXl0ZXh0KTsKLSAgICB9Ci0gICAgY29udGV4dC0+cmVjb3ZlcigpOwotfQotCiBpbnQgZ2xz
bGFuZ19pbml0aWFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICB5eXNjYW5fdCBz
Y2FubmVyID0gTlVMTDsKICAgICBpZiAoeXlsZXhfaW5pdF9leHRyYShjb250ZXh0LCZzY2FubmVy
KSkKQEAgLTMwMjAsOCArMjkxOSw4IEBAIGludCBnbHNsYW5nX2ZpbmFsaXplKFRQYXJzZUNvbnRl
eHQqIGNvbnQKIGludCBnbHNsYW5nX3NjYW4oc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25z
dCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAogICAgICAgICAgICAgICAgICBUUGFyc2VD
b250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlyZXN0YXJ0KE5VTEwsY29udGV4dC0+c2Nhbm5lcik7
Ci0gICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJjZUxvYygwLCAxKSxjb250ZXh0LT5zY2FubmVy
KTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNlOworICAgIHl5c2V0X2NvbHVtbigwLGNv
bnRleHQtPnNjYW5uZXIpOworICAgIHl5c2V0X2xpbmVubygxLGNvbnRleHQtPnNjYW5uZXIpOwog
CiAgICAgLy8gSW5pdGlhbGl6ZSBwcmVwcm9jZXNzb3IuCiAgICAgaWYgKCFjb250ZXh0LT5wcmVw
cm9jZXNzb3IuaW5pdChjb3VudCwgc3RyaW5nLCBsZW5ndGgpKQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwCShyZXZp
c2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xz
bGFuZ190YWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI0ICsxLDIxIEBACi0vKiBBIEJpc29u
IHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24gMi4zLiAgKi8KKy8qIEEgQmlzb24gcGFyc2VyLCBt
YWRlIGJ5IEdOVSBCaXNvbiAyLjcuICAqLwogCi0vKiBTa2VsZXRvbiBpbXBsZW1lbnRhdGlvbiBm
b3IgQmlzb24ncyBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCi0KLSAgIENvcHlyaWdodCAoQykgMTk4
NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNgot
ICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0KLSAgIFRoaXMgcHJvZ3JhbSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisvKiBC
aXNvbiBpbXBsZW1lbnRhdGlvbiBmb3IgWWFjYy1saWtlIHBhcnNlcnMgaW4gQworICAgCisgICAg
ICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODktMTk5MCwgMjAwMC0yMDEyIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLgorICAgCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTog
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5
b3VyIG9wdGlvbikKLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotCisgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgIAogICAgVGhpcyBwcm9ncmFtIGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLQorICAgCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4gICovCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v
d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAKIC8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24s
IHlvdSBtYXkgY3JlYXRlIGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250YWlucwogICAgcGFydCBvciBh
bGwgb2YgdGhlIEJpc29uIHBhcnNlciBza2VsZXRvbiBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsK
QEAgLTI5LDcgKzI2LDcgQEAKICAgIHNwZWNpYWwgZXhjZXB0aW9uLCB3aGljaCB3aWxsIGNhdXNl
IHRoZSBza2VsZXRvbiBhbmQgdGhlIHJlc3VsdGluZwogICAgQmlzb24gb3V0cHV0IGZpbGVzIHRv
IGJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2Ugd2l0
aG91dCB0aGlzIHNwZWNpYWwgZXhjZXB0aW9uLgotCisgICAKICAgIFRoaXMgc3BlY2lhbCBleGNl
cHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KICAgIHZl
cnNpb24gMi4yIG9mIEJpc29uLiAgKi8KIApAQCAtNDcsNyArNDQsNyBAQAogI2RlZmluZSBZWUJJ
U09OIDEKIAogLyogQmlzb24gdmVyc2lvbi4gICovCi0jZGVmaW5lIFlZQklTT05fVkVSU0lPTiAi
Mi4zIgorI2RlZmluZSBZWUJJU09OX1ZFUlNJT04gIjIuNyIKIAogLyogU2tlbGV0b24gbmFtZS4g
ICovCiAjZGVmaW5lIFlZU0tFTEVUT05fTkFNRSAieWFjYy5jIgpAQCAtNTUsOCArNTIsODEgQEAK
IC8qIFB1cmUgcGFyc2Vycy4gICovCiAjZGVmaW5lIFlZUFVSRSAxCiAKLS8qIFVzaW5nIGxvY2F0
aW9ucy4gICovCi0jZGVmaW5lIFlZTFNQX05FRURFRCAwCisvKiBQdXNoIHBhcnNlcnMuICAqLwor
I2RlZmluZSBZWVBVU0ggMAorCisvKiBQdWxsIHBhcnNlcnMuICAqLworI2RlZmluZSBZWVBVTEwg
MQorCisKKworCisvKiBDb3B5IHRoZSBmaXJzdCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAg
Ki8KKworCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgYnkgZ2VuZXJhdGVfcGFyc2VyLnNoLiBETyBOT1QgRURJVCEKKworLy8gSWdub3JlIGVycm9y
cyBpbiBhdXRvLWdlbmVyYXRlZCBjb2RlLgorI2lmIGRlZmluZWQoX19HTlVDX18pCisjcHJhZ21h
IEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLWZ1bmN0aW9uIgorI3ByYWdtYSBHQ0Mg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC12YXJpYWJsZSIKKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVdzd2l0Y2gtZW51bSIKKyNlbGlmIGRlZmluZWQoX01TQ19WRVIpCisj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDA2NSkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0
MTg5KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MDUpCisjcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZTogNDcwMSkKKyNlbmRpZgorCisjaW5jbHVkZSAiY29tcGlsZXIvU3ltYm9sVGFibGUuaCIK
KyNpbmNsdWRlICJjb21waWxlci9QYXJzZUhlbHBlci5oIgorI2luY2x1ZGUgIkdMU0xBTkcvU2hh
ZGVyTGFuZy5oIgorCisjZGVmaW5lIFlZRU5BQkxFX05MUyAwCisKKyNkZWZpbmUgWVlMRVhfUEFS
QU0gY29udGV4dC0+c2Nhbm5lcgorCisKKworIyBpZm5kZWYgWVlfTlVMTAorIyAgaWYgZGVmaW5l
ZCBfX2NwbHVzcGx1cyAmJiAyMDExMDNMIDw9IF9fY3BsdXNwbHVzCisjICAgZGVmaW5lIFlZX05V
TEwgbnVsbHB0cgorIyAgZWxzZQorIyAgIGRlZmluZSBZWV9OVUxMIDAKKyMgIGVuZGlmCisjIGVu
ZGlmCisKKy8qIEVuYWJsaW5nIHZlcmJvc2UgZXJyb3IgbWVzc2FnZXMuICAqLworI2lmZGVmIFlZ
RVJST1JfVkVSQk9TRQorIyB1bmRlZiBZWUVSUk9SX1ZFUkJPU0UKKyMgZGVmaW5lIFlZRVJST1Jf
VkVSQk9TRSAxCisjZWxzZQorIyBkZWZpbmUgWVlFUlJPUl9WRVJCT1NFIDAKKyNlbmRpZgorCisv
KiBJbiBhIGZ1dHVyZSByZWxlYXNlIG9mIEJpc29uLCB0aGlzIHNlY3Rpb24gd2lsbCBiZSByZXBs
YWNlZAorICAgYnkgI2luY2x1ZGUgImdsc2xhbmdfdGFiLmgiLiAgKi8KKyNpZm5kZWYgWVlfWVlf
R0xTTEFOR19UQUJfSF9JTkNMVURFRAorIyBkZWZpbmUgWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNM
VURFRAorLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KKyNpZm5kZWYgWVlERUJVRworIyBkZWZpbmUg
WVlERUJVRyAwCisjZW5kaWYKKyNpZiBZWURFQlVHCitleHRlcm4gaW50IHl5ZGVidWc7CisjZW5k
aWYKKy8qICIlY29kZSByZXF1aXJlcyIgYmxvY2tzLiAgKi8KKworCisjZGVmaW5lIFlZTFRZUEUg
VFNvdXJjZUxvYworI2RlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKKwogCiAKIApAQCAtMTEz
LDIwOSArMTgzLDYxIEBACiAgICAgIEZMT0FUQ09OU1RBTlQgPSAzMDIsCiAgICAgIElOVENPTlNU
QU5UID0gMzAzLAogICAgICBCT09MQ09OU1RBTlQgPSAzMDQsCi0gICAgIEZJRUxEX1NFTEVDVElP
TiA9IDMwNSwKLSAgICAgTEVGVF9PUCA9IDMwNiwKLSAgICAgUklHSFRfT1AgPSAzMDcsCi0gICAg
IElOQ19PUCA9IDMwOCwKLSAgICAgREVDX09QID0gMzA5LAotICAgICBMRV9PUCA9IDMxMCwKLSAg
ICAgR0VfT1AgPSAzMTEsCi0gICAgIEVRX09QID0gMzEyLAotICAgICBORV9PUCA9IDMxMywKLSAg
ICAgQU5EX09QID0gMzE0LAotICAgICBPUl9PUCA9IDMxNSwKLSAgICAgWE9SX09QID0gMzE2LAot
ICAgICBNVUxfQVNTSUdOID0gMzE3LAotICAgICBESVZfQVNTSUdOID0gMzE4LAotICAgICBBRERf
QVNTSUdOID0gMzE5LAotICAgICBNT0RfQVNTSUdOID0gMzIwLAotICAgICBMRUZUX0FTU0lHTiA9
IDMyMSwKLSAgICAgUklHSFRfQVNTSUdOID0gMzIyLAotICAgICBBTkRfQVNTSUdOID0gMzIzLAot
ICAgICBYT1JfQVNTSUdOID0gMzI0LAotICAgICBPUl9BU1NJR04gPSAzMjUsCi0gICAgIFNVQl9B
U1NJR04gPSAzMjYsCi0gICAgIExFRlRfUEFSRU4gPSAzMjcsCi0gICAgIFJJR0hUX1BBUkVOID0g
MzI4LAotICAgICBMRUZUX0JSQUNLRVQgPSAzMjksCi0gICAgIFJJR0hUX0JSQUNLRVQgPSAzMzAs
Ci0gICAgIExFRlRfQlJBQ0UgPSAzMzEsCi0gICAgIFJJR0hUX0JSQUNFID0gMzMyLAotICAgICBE
T1QgPSAzMzMsCi0gICAgIENPTU1BID0gMzM0LAotICAgICBDT0xPTiA9IDMzNSwKLSAgICAgRVFV
QUwgPSAzMzYsCi0gICAgIFNFTUlDT0xPTiA9IDMzNywKLSAgICAgQkFORyA9IDMzOCwKLSAgICAg
REFTSCA9IDMzOSwKLSAgICAgVElMREUgPSAzNDAsCi0gICAgIFBMVVMgPSAzNDEsCi0gICAgIFNU
QVIgPSAzNDIsCi0gICAgIFNMQVNIID0gMzQzLAotICAgICBQRVJDRU5UID0gMzQ0LAotICAgICBM
RUZUX0FOR0xFID0gMzQ1LAotICAgICBSSUdIVF9BTkdMRSA9IDM0NiwKLSAgICAgVkVSVElDQUxf
QkFSID0gMzQ3LAotICAgICBDQVJFVCA9IDM0OCwKLSAgICAgQU1QRVJTQU5EID0gMzQ5LAotICAg
ICBRVUVTVElPTiA9IDM1MAorICAgICBMRUZUX09QID0gMzA1LAorICAgICBSSUdIVF9PUCA9IDMw
NiwKKyAgICAgSU5DX09QID0gMzA3LAorICAgICBERUNfT1AgPSAzMDgsCisgICAgIExFX09QID0g
MzA5LAorICAgICBHRV9PUCA9IDMxMCwKKyAgICAgRVFfT1AgPSAzMTEsCisgICAgIE5FX09QID0g
MzEyLAorICAgICBBTkRfT1AgPSAzMTMsCisgICAgIE9SX09QID0gMzE0LAorICAgICBYT1JfT1Ag
PSAzMTUsCisgICAgIE1VTF9BU1NJR04gPSAzMTYsCisgICAgIERJVl9BU1NJR04gPSAzMTcsCisg
ICAgIEFERF9BU1NJR04gPSAzMTgsCisgICAgIE1PRF9BU1NJR04gPSAzMTksCisgICAgIExFRlRf
QVNTSUdOID0gMzIwLAorICAgICBSSUdIVF9BU1NJR04gPSAzMjEsCisgICAgIEFORF9BU1NJR04g
PSAzMjIsCisgICAgIFhPUl9BU1NJR04gPSAzMjMsCisgICAgIE9SX0FTU0lHTiA9IDMyNCwKKyAg
ICAgU1VCX0FTU0lHTiA9IDMyNSwKKyAgICAgTEVGVF9QQVJFTiA9IDMyNiwKKyAgICAgUklHSFRf
UEFSRU4gPSAzMjcsCisgICAgIExFRlRfQlJBQ0tFVCA9IDMyOCwKKyAgICAgUklHSFRfQlJBQ0tF
VCA9IDMyOSwKKyAgICAgTEVGVF9CUkFDRSA9IDMzMCwKKyAgICAgUklHSFRfQlJBQ0UgPSAzMzEs
CisgICAgIERPVCA9IDMzMiwKKyAgICAgQ09NTUEgPSAzMzMsCisgICAgIENPTE9OID0gMzM0LAor
ICAgICBFUVVBTCA9IDMzNSwKKyAgICAgU0VNSUNPTE9OID0gMzM2LAorICAgICBCQU5HID0gMzM3
LAorICAgICBEQVNIID0gMzM4LAorICAgICBUSUxERSA9IDMzOSwKKyAgICAgUExVUyA9IDM0MCwK
KyAgICAgU1RBUiA9IDM0MSwKKyAgICAgU0xBU0ggPSAzNDIsCisgICAgIFBFUkNFTlQgPSAzNDMs
CisgICAgIExFRlRfQU5HTEUgPSAzNDQsCisgICAgIFJJR0hUX0FOR0xFID0gMzQ1LAorICAgICBW
RVJUSUNBTF9CQVIgPSAzNDYsCisgICAgIENBUkVUID0gMzQ3LAorICAgICBBTVBFUlNBTkQgPSAz
NDgsCisgICAgIFFVRVNUSU9OID0gMzQ5CiAgICB9OwogI2VuZGlmCi0vKiBUb2tlbnMuICAqLwot
I2RlZmluZSBJTlZBUklBTlQgMjU4Ci0jZGVmaW5lIEhJR0hfUFJFQ0lTSU9OIDI1OQotI2RlZmlu
ZSBNRURJVU1fUFJFQ0lTSU9OIDI2MAotI2RlZmluZSBMT1dfUFJFQ0lTSU9OIDI2MQotI2RlZmlu
ZSBQUkVDSVNJT04gMjYyCi0jZGVmaW5lIEFUVFJJQlVURSAyNjMKLSNkZWZpbmUgQ09OU1RfUVVB
TCAyNjQKLSNkZWZpbmUgQk9PTF9UWVBFIDI2NQotI2RlZmluZSBGTE9BVF9UWVBFIDI2NgotI2Rl
ZmluZSBJTlRfVFlQRSAyNjcKLSNkZWZpbmUgQlJFQUsgMjY4Ci0jZGVmaW5lIENPTlRJTlVFIDI2
OQotI2RlZmluZSBETyAyNzAKLSNkZWZpbmUgRUxTRSAyNzEKLSNkZWZpbmUgRk9SIDI3MgotI2Rl
ZmluZSBJRiAyNzMKLSNkZWZpbmUgRElTQ0FSRCAyNzQKLSNkZWZpbmUgUkVUVVJOIDI3NQotI2Rl
ZmluZSBCVkVDMiAyNzYKLSNkZWZpbmUgQlZFQzMgMjc3Ci0jZGVmaW5lIEJWRUM0IDI3OAotI2Rl
ZmluZSBJVkVDMiAyNzkKLSNkZWZpbmUgSVZFQzMgMjgwCi0jZGVmaW5lIElWRUM0IDI4MQotI2Rl
ZmluZSBWRUMyIDI4MgotI2RlZmluZSBWRUMzIDI4MwotI2RlZmluZSBWRUM0IDI4NAotI2RlZmlu
ZSBNQVRSSVgyIDI4NQotI2RlZmluZSBNQVRSSVgzIDI4NgotI2RlZmluZSBNQVRSSVg0IDI4Nwot
I2RlZmluZSBJTl9RVUFMIDI4OAotI2RlZmluZSBPVVRfUVVBTCAyODkKLSNkZWZpbmUgSU5PVVRf
UVVBTCAyOTAKLSNkZWZpbmUgVU5JRk9STSAyOTEKLSNkZWZpbmUgVkFSWUlORyAyOTIKLSNkZWZp
bmUgU1RSVUNUIDI5MwotI2RlZmluZSBWT0lEX1RZUEUgMjk0Ci0jZGVmaW5lIFdISUxFIDI5NQot
I2RlZmluZSBTQU1QTEVSMkQgMjk2Ci0jZGVmaW5lIFNBTVBMRVJDVUJFIDI5NwotI2RlZmluZSBT
QU1QTEVSX0VYVEVSTkFMX09FUyAyOTgKLSNkZWZpbmUgU0FNUExFUjJEUkVDVCAyOTkKLSNkZWZp
bmUgSURFTlRJRklFUiAzMDAKLSNkZWZpbmUgVFlQRV9OQU1FIDMwMQotI2RlZmluZSBGTE9BVENP
TlNUQU5UIDMwMgotI2RlZmluZSBJTlRDT05TVEFOVCAzMDMKLSNkZWZpbmUgQk9PTENPTlNUQU5U
IDMwNAotI2RlZmluZSBGSUVMRF9TRUxFQ1RJT04gMzA1Ci0jZGVmaW5lIExFRlRfT1AgMzA2Ci0j
ZGVmaW5lIFJJR0hUX09QIDMwNwotI2RlZmluZSBJTkNfT1AgMzA4Ci0jZGVmaW5lIERFQ19PUCAz
MDkKLSNkZWZpbmUgTEVfT1AgMzEwCi0jZGVmaW5lIEdFX09QIDMxMQotI2RlZmluZSBFUV9PUCAz
MTIKLSNkZWZpbmUgTkVfT1AgMzEzCi0jZGVmaW5lIEFORF9PUCAzMTQKLSNkZWZpbmUgT1JfT1Ag
MzE1Ci0jZGVmaW5lIFhPUl9PUCAzMTYKLSNkZWZpbmUgTVVMX0FTU0lHTiAzMTcKLSNkZWZpbmUg
RElWX0FTU0lHTiAzMTgKLSNkZWZpbmUgQUREX0FTU0lHTiAzMTkKLSNkZWZpbmUgTU9EX0FTU0lH
TiAzMjAKLSNkZWZpbmUgTEVGVF9BU1NJR04gMzIxCi0jZGVmaW5lIFJJR0hUX0FTU0lHTiAzMjIK
LSNkZWZpbmUgQU5EX0FTU0lHTiAzMjMKLSNkZWZpbmUgWE9SX0FTU0lHTiAzMjQKLSNkZWZpbmUg
T1JfQVNTSUdOIDMyNQotI2RlZmluZSBTVUJfQVNTSUdOIDMyNgotI2RlZmluZSBMRUZUX1BBUkVO
IDMyNwotI2RlZmluZSBSSUdIVF9QQVJFTiAzMjgKLSNkZWZpbmUgTEVGVF9CUkFDS0VUIDMyOQot
I2RlZmluZSBSSUdIVF9CUkFDS0VUIDMzMAotI2RlZmluZSBMRUZUX0JSQUNFIDMzMQotI2RlZmlu
ZSBSSUdIVF9CUkFDRSAzMzIKLSNkZWZpbmUgRE9UIDMzMwotI2RlZmluZSBDT01NQSAzMzQKLSNk
ZWZpbmUgQ09MT04gMzM1Ci0jZGVmaW5lIEVRVUFMIDMzNgotI2RlZmluZSBTRU1JQ09MT04gMzM3
Ci0jZGVmaW5lIEJBTkcgMzM4Ci0jZGVmaW5lIERBU0ggMzM5Ci0jZGVmaW5lIFRJTERFIDM0MAot
I2RlZmluZSBQTFVTIDM0MQotI2RlZmluZSBTVEFSIDM0MgotI2RlZmluZSBTTEFTSCAzNDMKLSNk
ZWZpbmUgUEVSQ0VOVCAzNDQKLSNkZWZpbmUgTEVGVF9BTkdMRSAzNDUKLSNkZWZpbmUgUklHSFRf
QU5HTEUgMzQ2Ci0jZGVmaW5lIFZFUlRJQ0FMX0JBUiAzNDcKLSNkZWZpbmUgQ0FSRVQgMzQ4Ci0j
ZGVmaW5lIEFNUEVSU0FORCAzNDkKLSNkZWZpbmUgUVVFU1RJT04gMzUwCi0KLQotCi0KLS8qIENv
cHkgdGhlIGZpcnN0IHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLwotCi0KLS8vCi0vLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KLS8vCi0KLS8vIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZV9w
YXJzZXIuc2guIERPIE5PVCBFRElUIQotCi0vLyBJZ25vcmUgZXJyb3JzIGluIGF1dG8tZ2VuZXJh
dGVkIGNvZGUuCi0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMg
aWdub3JlZCAiLVd1bnVzZWQtZnVuY3Rpb24iCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XdW51c2VkLXZhcmlhYmxlIgotI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V3N3aXRjaC1lbnVtIgotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNwcmFnbWEgd2FybmluZyhk
aXNhYmxlOiA0MDY1KQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxODkpCi0jcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTogNDUwNSkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzAxKQotI2Vu
ZGlmCi0KLSNpbmNsdWRlICJjb21waWxlci9TeW1ib2xUYWJsZS5oIgotI2luY2x1ZGUgImNvbXBp
bGVyL1BhcnNlSGVscGVyLmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLSNk
ZWZpbmUgWVlFTkFCTEVfTkxTIDAKLSNkZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKLQotI2Rl
ZmluZSBZWUxFWF9QQVJBTSBjb250ZXh0LT5zY2FubmVyCi0KLQotLyogRW5hYmxpbmcgdHJhY2Vz
LiAgKi8KLSNpZm5kZWYgWVlERUJVRwotIyBkZWZpbmUgWVlERUJVRyAwCi0jZW5kaWYKLQotLyog
RW5hYmxpbmcgdmVyYm9zZSBlcnJvciBtZXNzYWdlcy4gICovCi0jaWZkZWYgWVlFUlJPUl9WRVJC
T1NFCi0jIHVuZGVmIFlZRVJST1JfVkVSQk9TRQotIyBkZWZpbmUgWVlFUlJPUl9WRVJCT1NFIDEK
LSNlbHNlCi0jIGRlZmluZSBZWUVSUk9SX1ZFUkJPU0UgMAotI2VuZGlmCiAKLS8qIEVuYWJsaW5n
IHRoZSB0b2tlbiB0YWJsZS4gICovCi0jaWZuZGVmIFlZVE9LRU5fVEFCTEUKLSMgZGVmaW5lIFlZ
VE9LRU5fVEFCTEUgMAotI2VuZGlmCiAKICNpZiAhIGRlZmluZWQgWVlTVFlQRSAmJiAhIGRlZmlu
ZWQgWVlTVFlQRV9JU19ERUNMQVJFRAogdHlwZWRlZiB1bmlvbiBZWVNUWVBFCi0KIHsKKworCiAg
ICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAgICB1bmlvbiB7CiAg
ICAgICAgICAgICBUU3RyaW5nICpzdHJpbmc7CiAgICAgICAgICAgICBmbG9hdCBmOwpAQCAtMzI1
LDcgKzI0Nyw2IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICBUU3ltYm9sKiBzeW1i
b2w7CiAgICAgfSBsZXg7CiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5lOwog
ICAgICAgICBUT3BlcmF0b3Igb3A7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRJbnRl
cm1Ob2RlKiBpbnRlcm1Ob2RlOwpAQCAtMzM5LDM0ICsyNjAsNzAgQEAgdHlwZWRlZiB1bmlvbiBZ
WVNUWVBFCiAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKICAgICAgICAgICAgIFRG
dW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAgICAgICBUUGFyYW1ldGVyIHBhcmFtOwotICAgICAg
ICAgICAgVFR5cGVMaW5lIHR5cGVMaW5lOwotICAgICAgICAgICAgVFR5cGVMaXN0KiB0eXBlTGlz
dDsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7CisgICAgICAgICAgICBURmllbGRMaXN0KiBm
aWVsZExpc3Q7CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07Ci19Ci0vKiBMaW5lIDE5MyBvZiB5
YWNjLmMuICAqLwogCi0JWVlTVFlQRTsKKworCit9IFlZU1RZUEU7CisjIGRlZmluZSBZWVNUWVBF
X0lTX1RSSVZJQUwgMQogIyBkZWZpbmUgeXlzdHlwZSBZWVNUWVBFIC8qIG9ic29sZXNjZW50OyB3
aWxsIGJlIHdpdGhkcmF3biAqLwogIyBkZWZpbmUgWVlTVFlQRV9JU19ERUNMQVJFRCAxCi0jIGRl
ZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogI2VuZGlmCiAKKyNpZiAhIGRlZmluZWQgWVlMVFlQ
RSAmJiAhIGRlZmluZWQgWVlMVFlQRV9JU19ERUNMQVJFRAordHlwZWRlZiBzdHJ1Y3QgWVlMVFlQ
RQoreworICBpbnQgZmlyc3RfbGluZTsKKyAgaW50IGZpcnN0X2NvbHVtbjsKKyAgaW50IGxhc3Rf
bGluZTsKKyAgaW50IGxhc3RfY29sdW1uOworfSBZWUxUWVBFOworIyBkZWZpbmUgeXlsdHlwZSBZ
WUxUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3biAqLworIyBkZWZpbmUgWVlM
VFlQRV9JU19ERUNMQVJFRCAxCisjIGRlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQorI2VuZGlm
CisKKworI2lmZGVmIFlZUEFSU0VfUEFSQU0KKyNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmlu
ZWQgX19jcGx1c3BsdXMKK2ludCB5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFNKTsKKyNlbHNl
CitpbnQgeXlwYXJzZSAoKTsKKyNlbmRpZgorI2Vsc2UgLyogISBZWVBBUlNFX1BBUkFNICovCisj
aWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCitpbnQgeXlwYXJzZSAo
VFBhcnNlQ29udGV4dCogY29udGV4dCk7CisjZWxzZQoraW50IHl5cGFyc2UgKCk7CisjZW5kaWYK
KyNlbmRpZiAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KIAorI2VuZGlmIC8qICFZWV9ZWV9HTFNMQU5H
X1RBQl9IX0lOQ0xVREVEICAqLwogCiAvKiBDb3B5IHRoZSBzZWNvbmQgcGFydCBvZiB1c2VyIGRl
Y2xhcmF0aW9ucy4gICovCiAKIAotZXh0ZXJuIGludCB5eWxleChZWVNUWVBFKiB5eWx2YWxfcGFy
YW0sIHZvaWQqIHl5c2Nhbm5lcik7Ci1leHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CitleHRlcm4gaW50IHl5bGV4KFlZU1RZUEUq
IHl5bHZhbCwgWVlMVFlQRSogeXlsbG9jLCB2b2lkKiB5eXNjYW5uZXIpOworc3RhdGljIHZvaWQg
eXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNo
YXIqIHJlYXNvbik7CiAKLSNkZWZpbmUgRlJBR19WRVJUX09OTFkoUywgTCkgeyAgXAotICAgIGlm
IChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX0ZSQUdNRU5UX1NIQURFUiAmJiAgXAotICAgICAg
ICBjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX1ZFUlRFWF9TSEFERVIpIHsgIFwKLSAgICAgICAg
Y29udGV4dC0+ZXJyb3IoTCwgIiBzdXBwb3J0ZWQgaW4gdmVydGV4L2ZyYWdtZW50IHNoYWRlcnMg
b25seSAiLCBTKTsgIFwKLSAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOyAgXAotICAgIH0gIFwK
LX0KKyNkZWZpbmUgWVlMTE9DX0RFRkFVTFQoQ3VycmVudCwgUmhzLCBOKSAgICAgICAgICAgICAg
ICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgaWYgKFlZSUQoTikpIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2ZpbGUgPSBZ
WVJIU0xPQyhSaHMsIDEpLmZpcnN0X2ZpbGU7ICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9s
aW5lID0gWVlSSFNMT0MoUmhzLCAxKS5maXJzdF9saW5lOyAgXAorICAgICAgICAoQ3VycmVudCku
bGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCBOKS5sYXN0X2ZpbGU7ICAgIFwKKyAgICAgICAgKEN1
cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywgTikubGFzdF9saW5lOyAgICBcCisgICAg
ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDAp
Lmxhc3RfZmlsZTsgICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9saW5lID0gWVlSSFNMT0Mo
UmhzLCAwKS5sYXN0X2xpbmU7ICAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9maWxlID0gWVlS
SFNMT0MoUmhzLCAwKS5sYXN0X2ZpbGU7ICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGlu
ZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9saW5lOyAgICBcCisgICAgICB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9IHdoaWxlICgw
KQogCiAjZGVmaW5lIFZFUlRFWF9PTkxZKFMsIEwpIHsgIFwKICAgICBpZiAoY29udGV4dC0+c2hh
ZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7ICBcCkBAIC0zODMsOCArMzQwLDYgQEAgZXh0
ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBjb250ZQogfQogCiAKLS8qIExpbmUgMjE2
IG9mIHlhY2MuYy4gICovCi0KIAogI2lmZGVmIHNob3J0CiAjIHVuZGVmIHNob3J0CkBAIC00Mzcs
MzYgKzM5MiwzNiBAQCB0eXBlZGVmIHNob3J0IGludCB5eXR5cGVfaW50MTY7CiAjIGlmIGRlZmlu
ZWQgWVlFTkFCTEVfTkxTICYmIFlZRU5BQkxFX05MUwogIyAgaWYgRU5BQkxFX05MUwogIyAgIGlu
Y2x1ZGUgPGxpYmludGwuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotIyAg
IGRlZmluZSBZWV8obXNnaWQpIGRnZXR0ZXh0ICgiYmlzb24tcnVudGltZSIsIG1zZ2lkKQorIyAg
IGRlZmluZSBZWV8oTXNnaWQpIGRnZXR0ZXh0ICgiYmlzb24tcnVudGltZSIsIE1zZ2lkKQogIyAg
ZW5kaWYKICMgZW5kaWYKICMgaWZuZGVmIFlZXwotIyAgZGVmaW5lIFlZXyhtc2dpZCkgbXNnaWQK
KyMgIGRlZmluZSBZWV8oTXNnaWQpIE1zZ2lkCiAjIGVuZGlmCiAjZW5kaWYKIAogLyogU3VwcHJl
c3MgdW51c2VkLXZhcmlhYmxlIHdhcm5pbmdzIGJ5ICJ1c2luZyIgRS4gICovCiAjaWYgISBkZWZp
bmVkIGxpbnQgfHwgZGVmaW5lZCBfX0dOVUNfXwotIyBkZWZpbmUgWVlVU0UoZSkgKCh2b2lkKSAo
ZSkpCisjIGRlZmluZSBZWVVTRShFKSAoKHZvaWQpIChFKSkKICNlbHNlCi0jIGRlZmluZSBZWVVT
RShlKSAvKiBlbXB0eSAqLworIyBkZWZpbmUgWVlVU0UoRSkgLyogZW1wdHkgKi8KICNlbmRpZgog
CiAvKiBJZGVudGl0eSBmdW5jdGlvbiwgdXNlZCB0byBzdXBwcmVzcyB3YXJuaW5ncyBhYm91dCBj
b25zdGFudCBjb25kaXRpb25zLiAgKi8KICNpZm5kZWYgbGludAotIyBkZWZpbmUgWVlJRChuKSAo
bikKKyMgZGVmaW5lIFlZSUQoTikgKE4pCiAjZWxzZQogI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8
IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwg
ZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyBpbnQKLVlZSUQgKGludCBpKQorWVlJRCAoaW50IHl5
aSkKICNlbHNlCiBzdGF0aWMgaW50Ci1ZWUlEIChpKQotICAgIGludCBpOworWVlJRCAoeXlpKQor
ICAgIGludCB5eWk7CiAjZW5kaWYKIHsKLSAgcmV0dXJuIGk7CisgIHJldHVybiB5eWk7CiB9CiAj
ZW5kaWYKIApAQCAtNDg3LDExICs0NDIsMTIgQEAgWVlJRCAoaSkKICMgICAgZGVmaW5lIGFsbG9j
YSBfYWxsb2NhCiAjICAgZWxzZQogIyAgICBkZWZpbmUgWVlTVEFDS19BTExPQyBhbGxvY2EKLSMg
ICAgaWYgISBkZWZpbmVkIF9BTExPQ0FfSCAmJiAhIGRlZmluZWQgX1NURExJQl9IICYmIChkZWZp
bmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisjICAgIGlmICEgZGVmaW5l
ZCBfQUxMT0NBX0ggJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VTUyAmJiAoZGVmaW5lZCBfX1NURENf
XyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVz
IHx8IGRlZmluZWQgX01TQ19WRVIpCiAjICAgICBpbmNsdWRlIDxzdGRsaWIuaD4gLyogSU5GUklO
R0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotIyAgICAgaWZuZGVmIF9TVERMSUJfSAotIyAgICAg
IGRlZmluZSBfU1RETElCX0ggMQorICAgICAgLyogVXNlIEVYSVRfU1VDQ0VTUyBhcyBhIHdpdG5l
c3MgZm9yIHN0ZGxpYi5oLiAgKi8KKyMgICAgIGlmbmRlZiBFWElUX1NVQ0NFU1MKKyMgICAgICBk
ZWZpbmUgRVhJVF9TVUNDRVNTIDAKICMgICAgIGVuZGlmCiAjICAgIGVuZGlmCiAjICAgZW5kaWYK
QEAgLTUxNCwyNCArNDcwLDI0IEBAIFlZSUQgKGkpCiAjICBpZm5kZWYgWVlTVEFDS19BTExPQ19N
QVhJTVVNCiAjICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSBZWVNJWkVfTUFYSU1VTQog
IyAgZW5kaWYKLSMgIGlmIChkZWZpbmVkIF9fY3BsdXNwbHVzICYmICEgZGVmaW5lZCBfU1RETElC
X0ggXAorIyAgaWYgKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VT
UyBcCiAgICAgICAgJiYgISAoKGRlZmluZWQgWVlNQUxMT0MgfHwgZGVmaW5lZCBtYWxsb2MpIFwK
IAkgICAgICYmIChkZWZpbmVkIFlZRlJFRSB8fCBkZWZpbmVkIGZyZWUpKSkKICMgICBpbmNsdWRl
IDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotIyAgIGlmbmRl
ZiBfU1RETElCX0gKLSMgICAgZGVmaW5lIF9TVERMSUJfSCAxCisjICAgaWZuZGVmIEVYSVRfU1VD
Q0VTUworIyAgICBkZWZpbmUgRVhJVF9TVUNDRVNTIDAKICMgICBlbmRpZgogIyAgZW5kaWYKICMg
IGlmbmRlZiBZWU1BTExPQwogIyAgIGRlZmluZSBZWU1BTExPQyBtYWxsb2MKLSMgICBpZiAhIGRl
ZmluZWQgbWFsbG9jICYmICEgZGVmaW5lZCBfU1RETElCX0ggJiYgKGRlZmluZWQgX19TVERDX18g
fHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyMgICBpZiAhIGRlZmluZWQgbWFsbG9jICYmICEg
ZGVmaW5lZCBFWElUX1NVQ0NFU1MgJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5
OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0Nf
VkVSKQogdm9pZCAqbWFsbG9jIChZWVNJWkVfVCk7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUg
U1BBQ0UgKi8KICMgICBlbmRpZgogIyAgZW5kaWYKICMgIGlmbmRlZiBZWUZSRUUKICMgICBkZWZp
bmUgWVlGUkVFIGZyZWUKLSMgICBpZiAhIGRlZmluZWQgZnJlZSAmJiAhIGRlZmluZWQgX1NURExJ
Ql9IICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisjICAg
aWYgISBkZWZpbmVkIGZyZWUgJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VTUyAmJiAoZGVmaW5lZCBf
X1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3Bs
dXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiB2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJ
TkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KICMgICBlbmRpZgpAQCAtNTQyLDE0ICs0OTgsMTYg
QEAgdm9pZCBmcmVlICh2b2lkICopOyAvKiBJTkZSSU5HRVMgT04gVVNFUgogCiAjaWYgKCEgZGVm
aW5lZCB5eW92ZXJmbG93IFwKICAgICAgJiYgKCEgZGVmaW5lZCBfX2NwbHVzcGx1cyBcCi0JIHx8
IChkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RSSVZJQUwpKSkKKwkg
fHwgKGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNfVFJJVklBTCBcCisJ
ICAgICAmJiBkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RSSVZJQUwp
KSkKIAogLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBmb3IgYW55IHN0YWNrIG1l
bWJlci4gICovCiB1bmlvbiB5eWFsbG9jCiB7Ci0gIHl5dHlwZV9pbnQxNiB5eXNzOwotICBZWVNU
WVBFIHl5dnM7Ci0gIH07CisgIHl5dHlwZV9pbnQxNiB5eXNzX2FsbG9jOworICBZWVNUWVBFIHl5
dnNfYWxsb2M7CisgIFlZTFRZUEUgeXlsc19hbGxvYzsKK307CiAKIC8qIFRoZSBzaXplIG9mIHRo
ZSBtYXhpbXVtIGdhcCBiZXR3ZWVuIG9uZSBhbGlnbmVkIHN0YWNrIGFuZCB0aGUgbmV4dC4gICov
CiAjIGRlZmluZSBZWVNUQUNLX0dBUF9NQVhJTVVNIChzaXplb2YgKHVuaW9uIHl5YWxsb2MpIC0g
MSkKQEAgLTU1NywzOCArNTE1LDIyIEBAIHVuaW9uIHl5YWxsb2MKIC8qIFRoZSBzaXplIG9mIGFu
IGFycmF5IGxhcmdlIHRvIGVub3VnaCB0byBob2xkIGFsbCBzdGFja3MsIGVhY2ggd2l0aAogICAg
TiBlbGVtZW50cy4gICovCiAjIGRlZmluZSBZWVNUQUNLX0JZVEVTKE4pIFwKLSAgICAgKChOKSAq
IChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUpKSBcCi0gICAgICArIFlZ
U1RBQ0tfR0FQX01BWElNVU0pCisgICAgICgoTikgKiAoc2l6ZW9mICh5eXR5cGVfaW50MTYpICsg
c2l6ZW9mIChZWVNUWVBFKSArIHNpemVvZiAoWVlMVFlQRSkpIFwKKyAgICAgICsgMiAqIFlZU1RB
Q0tfR0FQX01BWElNVU0pCiAKLS8qIENvcHkgQ09VTlQgb2JqZWN0cyBmcm9tIEZST00gdG8gVE8u
ICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbwotICAgbm90IG92ZXJsYXAuICAqLwotIyBp
Zm5kZWYgWVlDT1BZCi0jICBpZiBkZWZpbmVkIF9fR05VQ19fICYmIDEgPCBfX0dOVUNfXwotIyAg
IGRlZmluZSBZWUNPUFkoVG8sIEZyb20sIENvdW50KSBcCi0gICAgICBfX2J1aWx0aW5fbWVtY3B5
IChUbywgRnJvbSwgKENvdW50KSAqIHNpemVvZiAoKihGcm9tKSkpCi0jICBlbHNlCi0jICAgZGVm
aW5lIFlZQ09QWShUbywgRnJvbSwgQ291bnQpCQlcCi0gICAgICBkbwkJCQkJXAotCXsJCQkJCVwK
LQkgIFlZU0laRV9UIHl5aTsJCQkJXAotCSAgZm9yICh5eWkgPSAwOyB5eWkgPCAoQ291bnQpOyB5
eWkrKykJXAotCSAgICAoVG8pW3l5aV0gPSAoRnJvbSlbeXlpXTsJCVwKLQl9CQkJCQlcCi0gICAg
ICB3aGlsZSAoWVlJRCAoMCkpCi0jICBlbmRpZgotIyBlbmRpZgorIyBkZWZpbmUgWVlDT1BZX05F
RURFRCAxCiAKIC8qIFJlbG9jYXRlIFNUQUNLIGZyb20gaXRzIG9sZCBsb2NhdGlvbiB0byB0aGUg
bmV3IG9uZS4gIFRoZQogICAgbG9jYWwgdmFyaWFibGVzIFlZU0laRSBhbmQgWVlTVEFDS1NJWkUg
Z2l2ZSB0aGUgb2xkIGFuZCBuZXcgbnVtYmVyIG9mCiAgICBlbGVtZW50cyBpbiB0aGUgc3RhY2ss
IGFuZCBZWVBUUiBnaXZlcyB0aGUgbmV3IGxvY2F0aW9uIG9mIHRoZQogICAgc3RhY2suICBBZHZh
bmNlIFlZUFRSIHRvIGEgcHJvcGVybHkgYWxpZ25lZCBsb2NhdGlvbiBmb3IgdGhlIG5leHQKICAg
IHN0YWNrLiAgKi8KLSMgZGVmaW5lIFlZU1RBQ0tfUkVMT0NBVEUoU3RhY2spCQkJCQlcCisjIGRl
ZmluZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrX2FsbG9jLCBTdGFjaykJCQkJXAogICAgIGRvCQkJ
CQkJCQkJXAogICAgICAgewkJCQkJCQkJCVwKIAlZWVNJWkVfVCB5eW5ld2J5dGVzOwkJCQkJCVwK
LQlZWUNPUFkgKCZ5eXB0ci0+U3RhY2ssIFN0YWNrLCB5eXNpemUpOwkJCQlcCi0JU3RhY2sgPSAm
eXlwdHItPlN0YWNrOwkJCQkJCVwKKwlZWUNPUFkgKCZ5eXB0ci0+U3RhY2tfYWxsb2MsIFN0YWNr
LCB5eXNpemUpOwkJCVwKKwlTdGFjayA9ICZ5eXB0ci0+U3RhY2tfYWxsb2M7CQkJCQlcCiAJeXlu
ZXdieXRlcyA9IHl5c3RhY2tzaXplICogc2l6ZW9mICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFY
SU1VTTsgXAogCXl5cHRyICs9IHl5bmV3Ynl0ZXMgLyBzaXplb2YgKCp5eXB0cik7CQkJCVwKICAg
ICAgIH0JCQkJCQkJCQlcCkBAIC01OTYsMjMgKzUzOCw0MyBAQCB1bmlvbiB5eWFsbG9jCiAKICNl
bmRpZgogCisjaWYgZGVmaW5lZCBZWUNPUFlfTkVFREVEICYmIFlZQ09QWV9ORUVERUQKKy8qIENv
cHkgQ09VTlQgb2JqZWN0cyBmcm9tIFNSQyB0byBEU1QuICBUaGUgc291cmNlIGFuZCBkZXN0aW5h
dGlvbiBkbworICAgbm90IG92ZXJsYXAuICAqLworIyBpZm5kZWYgWVlDT1BZCisjICBpZiBkZWZp
bmVkIF9fR05VQ19fICYmIDEgPCBfX0dOVUNfXworIyAgIGRlZmluZSBZWUNPUFkoRHN0LCBTcmMs
IENvdW50KSBcCisgICAgICBfX2J1aWx0aW5fbWVtY3B5IChEc3QsIFNyYywgKENvdW50KSAqIHNp
emVvZiAoKihTcmMpKSkKKyMgIGVsc2UKKyMgICBkZWZpbmUgWVlDT1BZKERzdCwgU3JjLCBDb3Vu
dCkgICAgICAgICAgICAgIFwKKyAgICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICBZWVNJWkVfVCB5eWk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICBmb3IgKHl5aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5aSsrKSAgIFwKKyAgICAg
ICAgICAgIChEc3QpW3l5aV0gPSAoU3JjKVt5eWldOyAgICAgICAgICAgIFwKKyAgICAgICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHdoaWxlIChZWUlE
ICgwKSkKKyMgIGVuZGlmCisjIGVuZGlmCisjZW5kaWYgLyogIVlZQ09QWV9ORUVERUQgKi8KKwog
LyogWVlGSU5BTCAtLSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0aW9uIHN0YXRlLiAgKi8K
LSNkZWZpbmUgWVlGSU5BTCAgNzEKKyNkZWZpbmUgWVlGSU5BTCAgNzQKIC8qIFlZTEFTVCAtLSBM
YXN0IGluZGV4IGluIFlZVEFCTEUuICAqLwotI2RlZmluZSBZWUxBU1QgICAxNDE2CisjZGVmaW5l
IFlZTEFTVCAgIDE0OTAKIAogLyogWVlOVE9LRU5TIC0tIE51bWJlciBvZiB0ZXJtaW5hbHMuICAq
LwotI2RlZmluZSBZWU5UT0tFTlMgIDk2CisjZGVmaW5lIFlZTlRPS0VOUyAgOTUKIC8qIFlZTk5U
UyAtLSBOdW1iZXIgb2Ygbm9udGVybWluYWxzLiAgKi8KLSNkZWZpbmUgWVlOTlRTICA4MworI2Rl
ZmluZSBZWU5OVFMgIDg0CiAvKiBZWU5SVUxFUyAtLSBOdW1iZXIgb2YgcnVsZXMuICAqLwotI2Rl
ZmluZSBZWU5SVUxFUyAgMjAxCisjZGVmaW5lIFlZTlJVTEVTICAyMDIKIC8qIFlZTlJVTEVTIC0t
IE51bWJlciBvZiBzdGF0ZXMuICAqLwotI2RlZmluZSBZWU5TVEFURVMgIDMwNAorI2RlZmluZSBZ
WU5TVEFURVMgIDMwNwogCiAvKiBZWVRSQU5TTEFURShZWUxFWCkgLS0gQmlzb24gc3ltYm9sIG51
bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZTEVYLiAgKi8KICNkZWZpbmUgWVlVTkRFRlRPSyAgMgot
I2RlZmluZSBZWU1BWFVUT0sgICAzNTAKKyNkZWZpbmUgWVlNQVhVVE9LICAgMzQ5CiAKICNkZWZp
bmUgWVlUUkFOU0xBVEUoWVlYKQkJCQkJCVwKICAgKCh1bnNpZ25lZCBpbnQpIChZWVgpIDw9IFlZ
TUFYVVRPSyA/IHl5dHJhbnNsYXRlW1lZWF0gOiBZWVVOREVGVE9LKQpAQCAtNjU0LDggKzYxNiw3
IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXl0cmFuc2xhdGVbXQogICAgICAgNTUsICAg
IDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAg
NjQsCiAgICAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICA3MSwg
ICAgNzIsICAgIDczLCAgICA3NCwKICAgICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3
OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgODMsICAgIDg0LAotICAgICAgODUsICAgIDg2LCAg
ICA4NywgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgIDkyLCAgICA5MywgICAgOTQsCi0g
ICAgICA5NQorICAgICAgODUsICAgIDg2LCAgICA4NywgICAgODgsICAgIDg5LCAgICA5MCwgICAg
OTEsICAgIDkyLCAgICA5MywgICAgOTQKIH07CiAKICNpZiBZWURFQlVHCkBAIC02NjMsMTE5ICs2
MjQsMTIwIEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXl0cmFuc2xhdGVbXQogICAgWVlS
SFMuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlwcmhzW10gPQogewotICAgICAg
IDAsICAgICAwLCAgICAgMywgICAgIDUsICAgICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAx
NywgICAgMTksCi0gICAgICAyNCwgICAgMjYsICAgIDMwLCAgICAzMywgICAgMzYsICAgIDM4LCAg
ICA0MCwgICAgNDIsICAgIDQ2LCAgICA0OSwKLSAgICAgIDUyLCAgICA1NSwgICAgNTcsICAgIDYw
LCAgICA2NCwgICAgNjcsICAgIDY5LCAgICA3MSwgICAgNzMsICAgIDc1LAotICAgICAgNzgsICAg
IDgxLCAgICA4NCwgICAgODYsICAgIDg4LCAgICA5MCwgICAgOTIsICAgIDk2LCAgIDEwMCwgICAx
MDIsCi0gICAgIDEwNiwgICAxMTAsICAgMTEyLCAgIDExNCwgICAxMTgsICAgMTIyLCAgIDEyNiwg
ICAxMzAsICAgMTMyLCAgIDEzNiwKLSAgICAgMTQwLCAgIDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0
OCwgICAxNTIsICAgMTU0LCAgIDE1OCwgICAxNjAsICAgMTY0LAotICAgICAxNjYsICAgMTcyLCAg
IDE3NCwgICAxNzgsICAgMTgwLCAgIDE4MiwgICAxODQsICAgMTg2LCAgIDE4OCwgICAxOTAsCi0g
ICAgIDE5NCwgICAxOTYsICAgMTk5LCAgIDIwMiwgICAyMDcsICAgMjEwLCAgIDIxMiwgICAyMTQs
ICAgMjE3LCAgIDIyMSwKLSAgICAgMjI1LCAgIDIyOCwgICAyMzQsICAgMjM4LCAgIDI0MSwgICAy
NDUsICAgMjQ4LCAgIDI0OSwgICAyNTEsICAgMjUzLAotICAgICAyNTUsICAgMjU3LCAgIDI1OSwg
ICAyNjMsICAgMjY5LCAgIDI3NiwgICAyODIsICAgMjg0LCAgIDI4NywgICAyOTIsCi0gICAgIDI5
OCwgICAzMDMsICAgMzA2LCAgIDMwOCwgICAzMTEsICAgMzEzLCAgIDMxNSwgICAzMTcsICAgMzIw
LCAgIDMyMiwKLSAgICAgMzI0LCAgIDMyNywgICAzMjksICAgMzMxLCAgIDMzMywgICAzMzUsICAg
MzQwLCAgIDM0MiwgICAzNDQsICAgMzQ2LAorICAgICAgIDAsICAgICAwLCAgICAgMywgICAgIDUs
ICAgICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNSwgICAgMTcsCisgICAgICAyMSwgICAg
MjMsICAgIDI4LCAgICAzMCwgICAgMzQsICAgIDM3LCAgICA0MCwgICAgNDIsICAgIDQ0LCAgICA0
NiwKKyAgICAgIDUwLCAgICA1MywgICAgNTYsICAgIDU5LCAgICA2MSwgICAgNjQsICAgIDY4LCAg
ICA3MSwgICAgNzMsICAgIDc1LAorICAgICAgNzcsICAgIDgwLCAgICA4MywgICAgODYsICAgIDg4
LCAgICA5MCwgICAgOTIsICAgIDk0LCAgICA5OCwgICAxMDIsCisgICAgIDEwNCwgICAxMDgsICAg
MTEyLCAgIDExNCwgICAxMTYsICAgMTIwLCAgIDEyNCwgICAxMjgsICAgMTMyLCAgIDEzNCwKKyAg
ICAgMTM4LCAgIDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwgICAxNTAsICAgMTU0LCAgIDE1Niwg
ICAxNjAsICAgMTYyLAorICAgICAxNjYsICAgMTY4LCAgIDE3NCwgICAxNzYsICAgMTgwLCAgIDE4
MiwgICAxODQsICAgMTg2LCAgIDE4OCwgICAxOTAsCisgICAgIDE5MiwgICAxOTYsICAgMTk4LCAg
IDIwMSwgICAyMDQsICAgMjA5LCAgIDIxMiwgICAyMTQsICAgMjE2LCAgIDIxOSwKKyAgICAgMjIz
LCAgIDIyNywgICAyMzAsICAgMjM2LCAgIDI0MCwgICAyNDMsICAgMjQ3LCAgIDI1MCwgICAyNTEs
ICAgMjUzLAorICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAyNjEsICAgMjY1LCAgIDI3MSwgICAy
NzgsICAgMjg0LCAgIDI4NiwgICAyODksCisgICAgIDI5NCwgICAzMDAsICAgMzA1LCAgIDMwOCwg
ICAzMTAsICAgMzEzLCAgIDMxNSwgICAzMTcsICAgMzE5LCAgIDMyMiwKKyAgICAgMzI0LCAgIDMy
NiwgICAzMjksICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzM3LCAgIDM0MiwgICAzNDQsICAgMzQ2
LAogICAgICAzNDgsICAgMzUwLCAgIDM1MiwgICAzNTQsICAgMzU2LCAgIDM1OCwgICAzNjAsICAg
MzYyLCAgIDM2NCwgICAzNjYsCi0gICAgIDM2OCwgICAzNzAsICAgMzcyLCAgIDM3NCwgICAzNzYs
ICAgMzc4LCAgIDM4MCwgICAzODIsICAgMzg0LCAgIDM4NSwKLSAgICAgMzkyLCAgIDM5MywgICAz
OTksICAgNDAxLCAgIDQwNCwgICA0MDgsICAgNDEwLCAgIDQxNCwgICA0MTYsICAgNDIxLAotICAg
ICA0MjMsICAgNDI1LCAgIDQyNywgICA0MjksICAgNDMxLCAgIDQzMywgICA0MzUsICAgNDM3LCAg
IDQzOSwgICA0NDIsCi0gICAgIDQ0MywgICA0NDQsICAgNDUwLCAgIDQ1MiwgICA0NTQsICAgNDU1
LCAgIDQ1OCwgICA0NTksICAgNDYyLCAgIDQ2NSwKLSAgICAgNDY5LCAgIDQ3MSwgICA0NzQsICAg
NDc2LCAgIDQ3OSwgICA0ODUsICAgNDg5LCAgIDQ5MSwgICA0OTMsICAgNDk4LAotICAgICA0OTks
ICAgNTA2LCAgIDUwNywgICA1MTYsICAgNTE3LCAgIDUyNSwgICA1MjcsICAgNTI5LCAgIDUzMSwg
ICA1MzIsCi0gICAgIDUzNSwgICA1MzksICAgNTQyLCAgIDU0NSwgICA1NDgsICAgNTUyLCAgIDU1
NSwgICA1NTcsICAgNTYwLCAgIDU2MiwKLSAgICAgNTY0LCAgIDU2NQorICAgICAzNjgsICAgMzcw
LCAgIDM3MiwgICAzNzQsICAgMzc2LCAgIDM3OCwgICAzODAsICAgMzgyLCAgIDM4NCwgICAzODYs
CisgICAgIDM4NywgICAzOTQsICAgMzk1LCAgIDQwMSwgICA0MDMsICAgNDA2LCAgIDQxMCwgICA0
MTIsICAgNDE2LCAgIDQxOCwKKyAgICAgNDIzLCAgIDQyNSwgICA0MjcsICAgNDI5LCAgIDQzMSwg
ICA0MzMsICAgNDM1LCAgIDQzNywgICA0MzksICAgNDQxLAorICAgICA0NDQsICAgNDQ1LCAgIDQ0
NiwgICA0NTIsICAgNDU0LCAgIDQ1NiwgICA0NTcsICAgNDYwLCAgIDQ2MSwgICA0NjQsCisgICAg
IDQ2NywgICA0NzEsICAgNDczLCAgIDQ3NiwgICA0NzgsICAgNDgxLCAgIDQ4NywgICA0OTEsICAg
NDkzLCAgIDQ5NSwKKyAgICAgNTAwLCAgIDUwMSwgICA1MDgsICAgNTA5LCAgIDUxOCwgICA1MTks
ICAgNTI3LCAgIDUyOSwgICA1MzEsICAgNTMzLAorICAgICA1MzQsICAgNTM3LCAgIDU0MSwgICA1
NDQsICAgNTQ3LCAgIDU1MCwgICA1NTQsICAgNTU3LCAgIDU1OSwgICA1NjIsCisgICAgIDU2NCwg
ICA1NjYsICAgNTY3CiB9OwogCiAvKiBZWVJIUyAtLSBBIGAtMSctc2VwYXJhdGVkIGxpc3Qgb2Yg
dGhlIHJ1bGVzJyBSSFMuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXJoc1tdID0K
IHsKLSAgICAgMTc1LCAgICAgMCwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgOTcsICAgIC0xLCAg
ICA0OCwgICAgLTEsICAgIDQ3LAotICAgICAgLTEsICAgIDQ5LCAgICAtMSwgICAgNzIsICAgMTI0
LCAgICA3MywgICAgLTEsICAgIDk4LCAgICAtMSwgICAgOTksCi0gICAgICA3NCwgICAxMDAsICAg
IDc1LCAgICAtMSwgICAxMDEsICAgIC0xLCAgICA5OSwgICAgNzgsICAgIDUwLCAgICAtMSwKLSAg
ICAgIDk5LCAgICA1MywgICAgLTEsICAgIDk5LCAgICA1NCwgICAgLTEsICAgMTI0LCAgICAtMSwg
ICAxMDIsICAgIC0xLAotICAgICAxMDMsICAgIC0xLCAgICA5OSwgICAgNzgsICAgMTAzLCAgICAt
MSwgICAxMDUsICAgIDczLCAgICAtMSwgICAxMDQsCi0gICAgICA3MywgICAgLTEsICAgMTA2LCAg
ICAzOSwgICAgLTEsICAgMTA2LCAgICAtMSwgICAxMDYsICAgMTIyLCAgICAtMSwKLSAgICAgMTA1
LCAgICA3OSwgICAxMjIsICAgIC0xLCAgIDEwNywgICAgNzIsICAgIC0xLCAgIDE0MiwgICAgLTEs
ICAgIDQ1LAotICAgICAgLTEsICAgIDUwLCAgICAtMSwgICAgOTksICAgIC0xLCAgICA1MywgICAx
MDgsICAgIC0xLCAgICA1NCwgICAxMDgsCi0gICAgICAtMSwgICAxMDksICAgMTA4LCAgICAtMSwg
ICAgODYsICAgIC0xLCAgICA4NCwgICAgLTEsICAgIDgzLCAgICAtMSwKLSAgICAgMTA4LCAgICAt
MSwgICAxMTAsICAgIDg3LCAgIDEwOCwgICAgLTEsICAgMTEwLCAgICA4OCwgICAxMDgsICAgIC0x
LAotICAgICAxMTAsICAgIC0xLCAgIDExMSwgICAgODYsICAgMTEwLCAgICAtMSwgICAxMTEsICAg
IDg0LCAgIDExMCwgICAgLTEsCi0gICAgIDExMSwgICAgLTEsICAgMTEyLCAgICAtMSwgICAxMTMs
ICAgIDkwLCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA5MSwKLSAgICAgMTEyLCAgICAtMSwgICAx
MTMsICAgIDU1LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA1NiwgICAxMTIsICAgIC0xLAotICAg
ICAxMTMsICAgIC0xLCAgIDExNCwgICAgNTcsICAgMTEzLCAgICAtMSwgICAxMTQsICAgIDU4LCAg
IDExMywgICAgLTEsCi0gICAgIDExNCwgICAgLTEsICAgMTE1LCAgICAtMSwgICAxMTYsICAgIC0x
LCAgIDExNywgICAgLTEsICAgMTE4LCAgICA1OSwKLSAgICAgMTE3LCAgICAtMSwgICAxMTgsICAg
IC0xLCAgIDExOSwgICAgNjEsICAgMTE4LCAgICAtMSwgICAxMTksICAgIC0xLAotICAgICAxMjAs
ICAgIDYwLCAgIDExOSwgICAgLTEsICAgMTIwLCAgICAtMSwgICAxMjAsICAgIDk1LCAgIDEyNCwg
ICAgODAsCi0gICAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMDgsICAgMTIzLCAgIDEy
MiwgICAgLTEsICAgIDgxLCAgICAtMSwKLSAgICAgIDYyLCAgICAtMSwgICAgNjMsICAgIC0xLCAg
ICA2NCwgICAgLTEsICAgIDcxLCAgICAtMSwgICAxMjIsICAgIC0xLAotICAgICAxMjQsICAgIDc5
LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMjcsICAgIDgyLCAgICAtMSwgICAxMzUs
Ci0gICAgICA4MiwgICAgLTEsICAgICA3LCAgIDE0MCwgICAxNDEsICAgIDgyLCAgICAtMSwgICAx
MjgsICAgIDczLCAgICAtMSwKLSAgICAgMTMwLCAgICAtMSwgICAxMjksICAgIC0xLCAgIDEzMCwg
ICAxMzIsICAgIC0xLCAgIDEyOSwgICAgNzksICAgMTMyLAotICAgICAgLTEsICAgMTM3LCAgICA0
NSwgICAgNzIsICAgIC0xLCAgIDEzOSwgICAgNDUsICAgIC0xLCAgIDEzOSwgICAgNDUsCi0gICAg
ICA3NCwgICAxMjUsICAgIDc1LCAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzMSwgICAgLTEsICAg
MTMzLCAgIDEzMSwKLSAgICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTM0LCAgICAtMSwgICAxMzMs
ICAgMTM0LCAgICAtMSwgICAgLTEsICAgIDMzLAotICAgICAgLTEsICAgIDM0LCAgICAtMSwgICAg
MzUsICAgIC0xLCAgIDEzOSwgICAgLTEsICAgMTM2LCAgICAtMSwgICAxMzUsCi0gICAgICA3OSwg
ICAgNDUsICAgIC0xLCAgIDEzNSwgICAgNzksICAgIDQ1LCAgICA3NCwgICAgNzUsICAgIC0xLCAg
IDEzNSwKLSAgICAgIDc5LCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM1
LCAgICA3OSwgICAgNDUsICAgIDgxLAotICAgICAxNTAsICAgIC0xLCAgIDEzNywgICAgLTEsICAg
MTM3LCAgICA0NSwgICAgLTEsICAgMTM3LCAgICA0NSwgICAgNzQsCi0gICAgICA3NSwgICAgLTEs
ICAgMTM3LCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM3LCAgICA0NSwK
LSAgICAgIDgxLCAgIDE1MCwgICAgLTEsICAgICAzLCAgICA0NSwgICAgLTEsICAgMTM5LCAgICAt
MSwgICAxMzgsICAgMTM5LAotICAgICAgLTEsICAgICA5LCAgICAtMSwgICAgIDgsICAgIC0xLCAg
ICAzNywgICAgLTEsICAgICAzLCAgICAzNywgICAgLTEsCi0gICAgICAzNiwgICAgLTEsICAgMTQx
LCAgICAtMSwgICAxNDAsICAgMTQxLCAgICAtMSwgICAgIDQsICAgIC0xLCAgICAgNSwKLSAgICAg
IC0xLCAgICAgNiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDc0LCAgIDEyNSwgICAg
NzUsICAgIC0xLAotICAgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAgICAtMSwg
ICAgMTAsICAgIC0xLCAgICAyNywgICAgLTEsCi0gICAgICAyOCwgICAgLTEsICAgIDI5LCAgICAt
MSwgICAgMjEsICAgIC0xLCAgICAyMiwgICAgLTEsICAgIDIzLCAgICAtMSwKLSAgICAgIDI0LCAg
ICAtMSwgICAgMjUsICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwgICAgMzEsICAg
IC0xLAotICAgICAgMzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAgNDMs
ICAgIC0xLCAgICA0NCwgICAgLTEsCi0gICAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAtMSwgICAg
LTEsICAgIDM4LCAgICA0NSwgICAgNzYsICAgMTQ0LCAgIDE0NiwKLSAgICAgIDc3LCAgICAtMSwg
ICAgLTEsICAgIDM4LCAgICA3NiwgICAxNDUsICAgMTQ2LCAgICA3NywgICAgLTEsICAgMTQ3LAot
ICAgICAgLTEsICAgMTQ2LCAgIDE0NywgICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODIsICAgIC0x
LCAgIDE0OSwgICAgLTEsCi0gICAgIDE0OCwgICAgNzksICAgMTQ5LCAgICAtMSwgICAgNDUsICAg
IC0xLCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwKLSAgICAgIC0xLCAgIDEyMiwgICAgLTEs
ICAgMTI2LCAgICAtMSwgICAxNTQsICAgIC0xLCAgIDE1MywgICAgLTEsICAgMTUxLAotICAgICAg
LTEsICAgMTYzLCAgICAtMSwgICAxNjQsICAgIC0xLCAgIDE2NywgICAgLTEsICAgMTc0LCAgICAt
MSwgICAgNzYsCi0gICAgICA3NywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgMTU1LCAg
IDE2MiwgICAxNTYsICAgIDc3LCAgICAtMSwKLSAgICAgMTYxLCAgICAtMSwgICAxNTMsICAgIC0x
LCAgICAtMSwgICAxNTksICAgMTYxLCAgICAtMSwgICAgLTEsICAgMTYwLAotICAgICAxNTMsICAg
IC0xLCAgICA3NiwgICAgNzcsICAgIC0xLCAgICA3NiwgICAxNjIsICAgIDc3LCAgICAtMSwgICAx
NTIsCi0gICAgICAtMSwgICAxNjIsICAgMTUyLCAgICAtMSwgICAgODIsICAgIC0xLCAgIDEyNCwg
ICAgODIsICAgIC0xLCAgICAxOCwKLSAgICAgIDcyLCAgIDEyNCwgICAgNzMsICAgMTY1LCAgICAt
MSwgICAxNTgsICAgIDE2LCAgIDE1OCwgICAgLTEsICAgMTU4LAotICAgICAgLTEsICAgMTI0LCAg
ICAtMSwgICAxMzcsICAgIDQ1LCAgICA4MSwgICAxNTAsICAgIC0xLCAgICAtMSwgICAgNDAsCi0g
ICAgICA3MiwgICAxNjgsICAgMTY2LCAgICA3MywgICAxNTcsICAgIC0xLCAgICAtMSwgICAgMTUs
ICAgMTY5LCAgIDE1OCwKLSAgICAgIDQwLCAgICA3MiwgICAxMjQsICAgIDczLCAgICA4MiwgICAg
LTEsICAgIC0xLCAgICAxNywgICAgNzIsICAgMTcwLAotICAgICAxNzEsICAgMTczLCAgICA3Mywg
ICAxNTcsICAgIC0xLCAgIDE2MywgICAgLTEsICAgMTUxLCAgICAtMSwgICAxNjYsCi0gICAgICAt
MSwgICAgLTEsICAgMTcyLCAgICA4MiwgICAgLTEsICAgMTcyLCAgICA4MiwgICAxMjQsICAgIC0x
LCAgICAxNCwKLSAgICAgIDgyLCAgICAtMSwgICAgMTMsICAgIDgyLCAgICAtMSwgICAgMjAsICAg
IDgyLCAgICAtMSwgICAgMjAsICAgMTI0LAotICAgICAgODIsICAgIC0xLCAgICAxOSwgICAgODIs
ICAgIC0xLCAgIDE3NiwgICAgLTEsICAgMTc1LCAgIDE3NiwgICAgLTEsCi0gICAgIDE3NywgICAg
LTEsICAgMTI2LCAgICAtMSwgICAgLTEsICAgMTI3LCAgIDE3OCwgICAxNjEsICAgIC0xCisgICAg
IDE3NSwgICAgIDAsICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgNDUsICAg
IC0xLCAgICA5NywKKyAgICAgIC0xLCAgICA0OCwgICAgLTEsICAgIDQ3LCAgICAtMSwgICAgNDks
ICAgIC0xLCAgICA3MSwgICAxMjQsICAgIDcyLAorICAgICAgLTEsICAgIDk4LCAgICAtMSwgICAg
OTksICAgIDczLCAgIDEwMCwgICAgNzQsICAgIC0xLCAgIDEwMSwgICAgLTEsCisgICAgICA5OSwg
ICAgNzcsICAgIDk2LCAgICAtMSwgICAgOTksICAgIDUyLCAgICAtMSwgICAgOTksICAgIDUzLCAg
ICAtMSwKKyAgICAgMTI0LCAgICAtMSwgICAxMDIsICAgIC0xLCAgIDEwMywgICAgLTEsICAgIDk5
LCAgICA3NywgICAxMDMsICAgIC0xLAorICAgICAxMDUsICAgIDcyLCAgICAtMSwgICAxMDQsICAg
IDcyLCAgICAtMSwgICAxMDYsICAgIDM5LCAgICAtMSwgICAxMDYsCisgICAgICAtMSwgICAxMDYs
ICAgMTIyLCAgICAtMSwgICAxMDUsICAgIDc4LCAgIDEyMiwgICAgLTEsICAgMTA3LCAgICA3MSwK
KyAgICAgIC0xLCAgIDE0MiwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgOTksICAgIC0xLCAgICA1
MiwgICAxMDgsICAgIC0xLAorICAgICAgNTMsICAgMTA4LCAgICAtMSwgICAxMDksICAgMTA4LCAg
ICAtMSwgICAgODUsICAgIC0xLCAgICA4MywgICAgLTEsCisgICAgICA4MiwgICAgLTEsICAgMTA4
LCAgICAtMSwgICAxMTAsICAgIDg2LCAgIDEwOCwgICAgLTEsICAgMTEwLCAgICA4NywKKyAgICAg
MTA4LCAgICAtMSwgICAxMTAsICAgIC0xLCAgIDExMSwgICAgODUsICAgMTEwLCAgICAtMSwgICAx
MTEsICAgIDgzLAorICAgICAxMTAsICAgIC0xLCAgIDExMSwgICAgLTEsICAgMTEyLCAgICAtMSwg
ICAxMTMsICAgIDg5LCAgIDExMiwgICAgLTEsCisgICAgIDExMywgICAgOTAsICAgMTEyLCAgICAt
MSwgICAxMTMsICAgIDU0LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA1NSwKKyAgICAgMTEyLCAg
ICAtMSwgICAxMTMsICAgIC0xLCAgIDExNCwgICAgNTYsICAgMTEzLCAgICAtMSwgICAxMTQsICAg
IDU3LAorICAgICAxMTMsICAgIC0xLCAgIDExNCwgICAgLTEsICAgMTE1LCAgICAtMSwgICAxMTYs
ICAgIC0xLCAgIDExNywgICAgLTEsCisgICAgIDExOCwgICAgNTgsICAgMTE3LCAgICAtMSwgICAx
MTgsICAgIC0xLCAgIDExOSwgICAgNjAsICAgMTE4LCAgICAtMSwKKyAgICAgMTE5LCAgICAtMSwg
ICAxMjAsICAgIDU5LCAgIDExOSwgICAgLTEsICAgMTIwLCAgICAtMSwgICAxMjAsICAgIDk0LAor
ICAgICAxMjQsICAgIDc5LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMDgsICAgMTIz
LCAgIDEyMiwgICAgLTEsCisgICAgICA4MCwgICAgLTEsICAgIDYxLCAgICAtMSwgICAgNjIsICAg
IC0xLCAgICA2MywgICAgLTEsICAgIDcwLCAgICAtMSwKKyAgICAgMTIyLCAgICAtMSwgICAxMjQs
ICAgIDc4LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMjcsICAgIDgxLAorICAgICAg
LTEsICAgMTM1LCAgICA4MSwgICAgLTEsICAgICA3LCAgIDE0MCwgICAxNDEsICAgIDgxLCAgICAt
MSwgICAxMjgsCisgICAgICA3MiwgICAgLTEsICAgMTMwLCAgICAtMSwgICAxMjksICAgIC0xLCAg
IDEzMCwgICAxMzIsICAgIC0xLCAgIDEyOSwKKyAgICAgIDc4LCAgIDEzMiwgICAgLTEsICAgMTM3
LCAgICA0NSwgICAgNzEsICAgIC0xLCAgIDEzOSwgICAgOTYsICAgIC0xLAorICAgICAxMzksICAg
IDk2LCAgICA3MywgICAxMjUsICAgIDc0LCAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzMSwgICAg
LTEsCisgICAgIDEzMywgICAxMzEsICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTM0LCAgICAtMSwg
ICAxMzMsICAgMTM0LCAgICAtMSwKKyAgICAgIC0xLCAgICAzMywgICAgLTEsICAgIDM0LCAgICAt
MSwgICAgMzUsICAgIC0xLCAgIDEzOSwgICAgLTEsICAgMTM2LAorICAgICAgLTEsICAgMTM1LCAg
ICA3OCwgICAgOTYsICAgIC0xLCAgIDEzNSwgICAgNzgsICAgIDk2LCAgICA3MywgICAgNzQsCisg
ICAgICAtMSwgICAxMzUsICAgIDc4LCAgICA5NiwgICAgNzMsICAgMTI1LCAgICA3NCwgICAgLTEs
ICAgMTM1LCAgICA3OCwKKyAgICAgIDk2LCAgICA4MCwgICAxNTAsICAgIC0xLCAgIDEzNywgICAg
LTEsICAgMTM3LCAgICA5NiwgICAgLTEsICAgMTM3LAorICAgICAgOTYsICAgIDczLCAgICA3NCwg
ICAgLTEsICAgMTM3LCAgICA5NiwgICAgNzMsICAgMTI1LCAgICA3NCwgICAgLTEsCisgICAgIDEz
NywgICAgOTYsICAgIDgwLCAgIDE1MCwgICAgLTEsICAgICAzLCAgICA0NSwgICAgLTEsICAgMTM5
LCAgICAtMSwKKyAgICAgMTM4LCAgIDEzOSwgICAgLTEsICAgICA5LCAgICAtMSwgICAgIDgsICAg
IC0xLCAgICAzNywgICAgLTEsICAgICAzLAorICAgICAgMzcsICAgIC0xLCAgICAzNiwgICAgLTEs
ICAgMTQxLCAgICAtMSwgICAxNDAsICAgMTQxLCAgICAtMSwgICAgIDQsCisgICAgICAtMSwgICAg
IDUsICAgIC0xLCAgICAgNiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDczLCAgIDEy
NSwKKyAgICAgIDc0LCAgICAtMSwgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAg
ICAtMSwgICAgMTAsICAgIC0xLAorICAgICAgMjcsICAgIC0xLCAgICAyOCwgICAgLTEsICAgIDI5
LCAgICAtMSwgICAgMjEsICAgIC0xLCAgICAyMiwgICAgLTEsCisgICAgICAyMywgICAgLTEsICAg
IDI0LCAgICAtMSwgICAgMjUsICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwKKyAg
ICAgIDMxLCAgICAtMSwgICAgMzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwg
ICAgNDMsICAgIC0xLAorICAgICAgNDQsICAgIC0xLCAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAt
MSwgICAgLTEsICAgIDM4LCAgICA5NiwgICAgNzUsCisgICAgIDE0NCwgICAxNDYsICAgIDc2LCAg
ICAtMSwgICAgLTEsICAgIDM4LCAgICA3NSwgICAxNDUsICAgMTQ2LCAgICA3NiwKKyAgICAgIC0x
LCAgIDE0NywgICAgLTEsICAgMTQ2LCAgIDE0NywgICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODEs
ICAgIC0xLAorICAgICAxNDksICAgIC0xLCAgIDE0OCwgICAgNzgsICAgMTQ5LCAgICAtMSwgICAg
OTYsICAgIC0xLCAgICA5NiwgICAgNzMsCisgICAgIDEyNSwgICAgNzQsICAgIC0xLCAgIDEyMiwg
ICAgLTEsICAgMTI2LCAgICAtMSwgICAxNTQsICAgIC0xLCAgIDE1MywKKyAgICAgIC0xLCAgIDE1
MSwgICAgLTEsICAgMTYzLCAgICAtMSwgICAxNjQsICAgIC0xLCAgIDE2NywgICAgLTEsICAgMTc0
LAorICAgICAgLTEsICAgIDc1LCAgICA3NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAg
MTU1LCAgIDE2MiwgICAxNTYsCisgICAgICA3NiwgICAgLTEsICAgMTYxLCAgICAtMSwgICAxNTMs
ICAgIC0xLCAgICAtMSwgICAxNTksICAgMTYxLCAgICAtMSwKKyAgICAgIC0xLCAgIDE2MCwgICAx
NTMsICAgIC0xLCAgICA3NSwgICAgNzYsICAgIC0xLCAgICA3NSwgICAxNjIsICAgIDc2LAorICAg
ICAgLTEsICAgMTUyLCAgICAtMSwgICAxNjIsICAgMTUyLCAgICAtMSwgICAgODEsICAgIC0xLCAg
IDEyNCwgICAgODEsCisgICAgICAtMSwgICAgMTgsICAgIDcxLCAgIDEyNCwgICAgNzIsICAgMTY1
LCAgICAtMSwgICAxNTgsICAgIDE2LCAgIDE1OCwKKyAgICAgIC0xLCAgIDE1OCwgICAgLTEsICAg
MTI0LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICA4MCwgICAxNTAsICAgIC0xLAorICAgICAgLTEs
ICAgIDQwLCAgICA3MSwgICAxNjgsICAgMTY2LCAgICA3MiwgICAxNTcsICAgIC0xLCAgICAtMSwg
ICAgMTUsCisgICAgIDE2OSwgICAxNTgsICAgIDQwLCAgICA3MSwgICAxMjQsICAgIDcyLCAgICA4
MSwgICAgLTEsICAgIC0xLCAgICAxNywKKyAgICAgIDcxLCAgIDE3MCwgICAxNzEsICAgMTczLCAg
ICA3MiwgICAxNTcsICAgIC0xLCAgIDE2MywgICAgLTEsICAgMTUxLAorICAgICAgLTEsICAgMTY2
LCAgICAtMSwgICAgLTEsICAgMTcyLCAgICA4MSwgICAgLTEsICAgMTcyLCAgICA4MSwgICAxMjQs
CisgICAgICAtMSwgICAgMTQsICAgIDgxLCAgICAtMSwgICAgMTMsICAgIDgxLCAgICAtMSwgICAg
MjAsICAgIDgxLCAgICAtMSwKKyAgICAgIDIwLCAgIDEyNCwgICAgODEsICAgIC0xLCAgICAxOSwg
ICAgODEsICAgIC0xLCAgIDE3NiwgICAgLTEsICAgMTc1LAorICAgICAxNzYsICAgIC0xLCAgIDE3
NywgICAgLTEsICAgMTI2LCAgICAtMSwgICAgLTEsICAgMTI3LCAgIDE3OCwgICAxNjEsCisgICAg
ICAtMQogfTsKIAogLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVt
YmVyIFlZTiB3YXMgZGVmaW5lZC4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXJs
aW5lW10gPQogewotICAgICAgIDAsICAgMTY4LCAgIDE2OCwgICAyMDMsICAgMjA2LCAgIDIxOSwg
ICAyMjQsICAgMjI5LCAgIDIzNSwgICAyMzgsCi0gICAgIDMxNywgICAzMjAsICAgNDIxLCAgIDQz
MSwgICA0NDQsICAgNDUyLCAgIDU1MiwgICA1NTUsICAgNTYzLCAgIDU2NywKLSAgICAgNTc0LCAg
IDU3OCwgICA1ODUsICAgNTkxLCAgIDYwMCwgICA2MDgsICAgNjYzLCAgIDY3MCwgICA2ODAsICAg
NjgzLAotICAgICA2OTMsICAgNzAzLCAgIDcyNCwgICA3MjUsICAgNzI2LCAgIDczMSwgICA3MzIs
ICAgNzQxLCAgIDc1MywgICA3NTQsCi0gICAgIDc2MiwgICA3NzMsICAgNzc3LCAgIDc3OCwgICA3
ODgsICAgNzk4LCAgIDgwOCwgICA4MjEsICAgODIyLCAgIDgzMiwKLSAgICAgODQ1LCAgIDg0OSwg
ICA4NTMsICAgODU3LCAgIDg1OCwgICA4NzEsICAgODcyLCAgIDg4NSwgICA4ODYsICAgODk5LAot
ICAgICA5MDAsICAgOTE3LCAgIDkxOCwgICA5MzEsICAgOTMyLCAgIDkzMywgICA5MzQsICAgOTM1
LCAgIDkzOSwgICA5NDIsCi0gICAgIDk1MywgICA5NjEsICAgOTg4LCAgIDk5MywgIDEwMDcsICAx
MDQ1LCAgMTA0OCwgIDEwNTUsICAxMDYzLCAgMTA4NCwKLSAgICAxMTA1LCAgMTExNiwgIDExNDUs
ICAxMTUwLCAgMTE2MCwgIDExNjUsICAxMTc1LCAgMTE3OCwgIDExODEsICAxMTg0LAotICAgIDEx
OTAsICAxMTk3LCAgMTIwMCwgIDEyMjIsICAxMjQwLCAgMTI2NCwgIDEyODcsICAxMjkxLCAgMTMw
OSwgIDEzMTcsCi0gICAgMTM0OSwgIDEzNjksICAxNDU4LCAgMTQ2NywgIDE0OTAsICAxNDkzLCAg
MTQ5OSwgIDE1MDcsICAxNTE1LCAgMTUyMywKLSAgICAxNTMzLCAgMTU0MCwgIDE1NDMsICAxNTQ2
LCAgMTU1MiwgIDE1NTUsICAxNTcwLCAgMTU3NCwgIDE1NzgsICAxNTgyLAotICAgIDE1OTEsICAx
NTk2LCAgMTYwMSwgIDE2MDYsICAxNjExLCAgMTYxNiwgIDE2MjEsICAxNjI2LCAgMTYzMSwgIDE2
MzYsCi0gICAgMTY0MiwgIDE2NDgsICAxNjU0LCAgMTY1OSwgIDE2NjQsICAxNjczLCAgMTY4Miwg
IDE2ODcsICAxNzAwLCAgMTcwMCwKLSAgICAxNzE0LCAgMTcxNCwgIDE3MjMsICAxNzI2LCAgMTc0
MSwgIDE3NzcsICAxNzgxLCAgMTc4NywgIDE3OTUsICAxODExLAotICAgIDE4MTUsICAxODE5LCAg
MTgyMCwgIDE4MjYsICAxODI3LCAgMTgyOCwgIDE4MjksICAxODMwLCAgMTgzNCwgIDE4MzUsCi0g
ICAgMTgzNSwgIDE4MzUsICAxODQ1LCAgMTg0NiwgIDE4NTAsICAxODUwLCAgMTg1MSwgIDE4NTEs
ICAxODU2LCAgMTg1OSwKLSAgICAxODY5LCAgMTg3MiwgIDE4NzgsICAxODc5LCAgMTg4MywgIDE4
OTEsICAxODk1LCAgMTkwNSwgIDE5MTAsICAxOTI3LAotICAgIDE5MjcsICAxOTMyLCAgMTkzMiwg
IDE5MzksICAxOTM5LCAgMTk0NywgIDE5NTAsICAxOTU2LCAgMTk1OSwgIDE5NjUsCi0gICAgMTk2
OSwgIDE5NzYsICAxOTgzLCAgMTk5MCwgIDE5OTcsICAyMDA4LCAgMjAxNywgIDIwMjEsICAyMDI4
LCAgMjAzMSwKLSAgICAyMDM3LCAgMjAzNworICAgICAgIDAsICAgMTc5LCAgIDE3OSwgICAxODAs
ICAgMTgzLCAgIDIyNiwgICAyMjksICAgMjQyLCAgIDI0NywgICAyNTIsCisgICAgIDI1OCwgICAy
NjEsICAgMzM2LCAgIDMzOSwgICA0MzQsICAgNDQ0LCAgIDQ1NywgICA0NjUsICAgNTY1LCAgIDU2
OCwKKyAgICAgNTc2LCAgIDU3OSwgICA1ODUsICAgNTg5LCAgIDU5NiwgICA2MDIsICAgNjExLCAg
IDYxOSwgICA2NzQsICAgNjg0LAorICAgICA2ODcsICAgNjk3LCAgIDcwNywgICA3MjgsICAgNzI5
LCAgIDczMCwgICA3MzUsICAgNzM2LCAgIDc0NCwgICA3NTUsCisgICAgIDc1NiwgICA3NjQsICAg
Nzc1LCAgIDc3OSwgICA3ODAsICAgNzkwLCAgIDgwMCwgICA4MTAsICAgODIzLCAgIDgyNCwKKyAg
ICAgODM0LCAgIDg0NywgICA4NTEsICAgODU1LCAgIDg1OSwgICA4NjAsICAgODczLCAgIDg3NCwg
ICA4ODcsICAgODg4LAorICAgICA5MDEsICAgOTAyLCAgIDkxOSwgICA5MjAsICAgOTMzLCAgIDkz
NCwgICA5MzUsICAgOTM2LCAgIDkzNywgICA5NDEsCisgICAgIDk0NCwgICA5NTUsICAgOTYzLCAg
IDk5MCwgICA5OTUsICAxMDA5LCAgMTA0NiwgIDEwNDksICAxMDU2LCAgMTA2NCwKKyAgICAxMDg1
LCAgMTEwNiwgIDExMTYsICAxMTQ0LCAgMTE0OSwgIDExNTksICAxMTY0LCAgMTE3NCwgIDExNzcs
ICAxMTgwLAorICAgIDExODMsICAxMTg5LCAgMTE5NiwgIDExOTksICAxMjIxLCAgMTIzOSwgIDEy
NjMsICAxMjg2LCAgMTI5MCwgIDEzMDgsCisgICAgMTMxNiwgIDEzNDgsICAxMzY4LCAgMTM4OSwg
IDEzOTgsICAxNDIxLCAgMTQyNCwgIDE0MzAsICAxNDM4LCAgMTQ0NiwKKyAgICAxNDU0LCAgMTQ2
NCwgIDE0NzEsICAxNDc0LCAgMTQ3NywgIDE0ODMsICAxNDg2LCAgMTUwMSwgIDE1MDUsICAxNTA5
LAorICAgIDE1MTMsICAxNTE3LCAgMTUyMiwgIDE1MjcsICAxNTMyLCAgMTUzNywgIDE1NDIsICAx
NTQ3LCAgMTU1MiwgIDE1NTcsCisgICAgMTU2MiwgIDE1NjcsICAxNTcyLCAgMTU3NywgIDE1ODEs
ICAxNTg1LCAgMTU5MywgIDE2MDEsICAxNjA1LCAgMTYxOCwKKyAgICAxNjE4LCAgMTYzMiwgIDE2
MzIsICAxNjQxLCAgMTY0NCwgIDE2NjAsICAxNjkzLCAgMTY5NywgIDE3MDMsICAxNzEwLAorICAg
IDE3MjUsICAxNzI5LCAgMTczMywgIDE3MzQsICAxNzQwLCAgMTc0MSwgIDE3NDIsICAxNzQzLCAg
MTc0NCwgIDE3NDgsCisgICAgMTc0OSwgIDE3NDksICAxNzQ5LCAgMTc1OSwgIDE3NjAsICAxNzY0
LCAgMTc2NCwgIDE3NjUsICAxNzY1LCAgMTc3MCwKKyAgICAxNzczLCAgMTc4MywgIDE3ODYsICAx
NzkyLCAgMTc5MywgIDE3OTcsICAxODA1LCAgMTgwOSwgIDE4MTksICAxODI0LAorICAgIDE4NDEs
ICAxODQxLCAgMTg0NiwgIDE4NDYsICAxODUzLCAgMTg1MywgIDE4NjEsICAxODY0LCAgMTg3MCwg
IDE4NzMsCisgICAgMTg3OSwgIDE4ODMsICAxODkwLCAgMTg5NywgIDE5MDQsICAxOTExLCAgMTky
MiwgIDE5MzEsICAxOTM1LCAgMTk0MiwKKyAgICAxOTQ1LCAgMTk1MSwgIDE5NTEKIH07CiAjZW5k
aWYKIAotI2lmIFlZREVCVUcgfHwgWVlFUlJPUl9WRVJCT1NFIHx8IFlZVE9LRU5fVEFCTEUKKyNp
ZiBZWURFQlVHIHx8IFlZRVJST1JfVkVSQk9TRSB8fCAwCiAvKiBZWVROQU1FW1NZTUJPTC1OVU1d
IC0tIFN0cmluZyBuYW1lIG9mIHRoZSBzeW1ib2wgU1lNQk9MLU5VTS4KICAgIEZpcnN0LCB0aGUg
dGVybWluYWxzLCB0aGVuLCBzdGFydGluZyBhdCBZWU5UT0tFTlMsIG5vbnRlcm1pbmFscy4gICov
CiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgeXl0bmFtZVtdID0KQEAgLTc4OCwxNSArNzUwLDE1
IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCB5eXRuYW1lW10gPQogICAiTUFUUklYMyIsICJN
QVRSSVg0IiwgIklOX1FVQUwiLCAiT1VUX1FVQUwiLCAiSU5PVVRfUVVBTCIsICJVTklGT1JNIiwK
ICAgIlZBUllJTkciLCAiU1RSVUNUIiwgIlZPSURfVFlQRSIsICJXSElMRSIsICJTQU1QTEVSMkQi
LCAiU0FNUExFUkNVQkUiLAogICAiU0FNUExFUl9FWFRFUk5BTF9PRVMiLCAiU0FNUExFUjJEUkVD
VCIsICJJREVOVElGSUVSIiwgIlRZUEVfTkFNRSIsCi0gICJGTE9BVENPTlNUQU5UIiwgIklOVENP
TlNUQU5UIiwgIkJPT0xDT05TVEFOVCIsICJGSUVMRF9TRUxFQ1RJT04iLAotICAiTEVGVF9PUCIs
ICJSSUdIVF9PUCIsICJJTkNfT1AiLCAiREVDX09QIiwgIkxFX09QIiwgIkdFX09QIiwgIkVRX09Q
IiwKLSAgIk5FX09QIiwgIkFORF9PUCIsICJPUl9PUCIsICJYT1JfT1AiLCAiTVVMX0FTU0lHTiIs
ICJESVZfQVNTSUdOIiwKLSAgIkFERF9BU1NJR04iLCAiTU9EX0FTU0lHTiIsICJMRUZUX0FTU0lH
TiIsICJSSUdIVF9BU1NJR04iLCAiQU5EX0FTU0lHTiIsCi0gICJYT1JfQVNTSUdOIiwgIk9SX0FT
U0lHTiIsICJTVUJfQVNTSUdOIiwgIkxFRlRfUEFSRU4iLCAiUklHSFRfUEFSRU4iLAotICAiTEVG
VF9CUkFDS0VUIiwgIlJJR0hUX0JSQUNLRVQiLCAiTEVGVF9CUkFDRSIsICJSSUdIVF9CUkFDRSIs
ICJET1QiLAotICAiQ09NTUEiLCAiQ09MT04iLCAiRVFVQUwiLCAiU0VNSUNPTE9OIiwgIkJBTkci
LCAiREFTSCIsICJUSUxERSIsICJQTFVTIiwKLSAgIlNUQVIiLCAiU0xBU0giLCAiUEVSQ0VOVCIs
ICJMRUZUX0FOR0xFIiwgIlJJR0hUX0FOR0xFIiwgIlZFUlRJQ0FMX0JBUiIsCi0gICJDQVJFVCIs
ICJBTVBFUlNBTkQiLCAiUVVFU1RJT04iLCAiJGFjY2VwdCIsICJ2YXJpYWJsZV9pZGVudGlmaWVy
IiwKKyAgIkZMT0FUQ09OU1RBTlQiLCAiSU5UQ09OU1RBTlQiLCAiQk9PTENPTlNUQU5UIiwgIkxF
RlRfT1AiLCAiUklHSFRfT1AiLAorICAiSU5DX09QIiwgIkRFQ19PUCIsICJMRV9PUCIsICJHRV9P
UCIsICJFUV9PUCIsICJORV9PUCIsICJBTkRfT1AiLAorICAiT1JfT1AiLCAiWE9SX09QIiwgIk1V
TF9BU1NJR04iLCAiRElWX0FTU0lHTiIsICJBRERfQVNTSUdOIiwKKyAgIk1PRF9BU1NJR04iLCAi
TEVGVF9BU1NJR04iLCAiUklHSFRfQVNTSUdOIiwgIkFORF9BU1NJR04iLCAiWE9SX0FTU0lHTiIs
CisgICJPUl9BU1NJR04iLCAiU1VCX0FTU0lHTiIsICJMRUZUX1BBUkVOIiwgIlJJR0hUX1BBUkVO
IiwgIkxFRlRfQlJBQ0tFVCIsCisgICJSSUdIVF9CUkFDS0VUIiwgIkxFRlRfQlJBQ0UiLCAiUklH
SFRfQlJBQ0UiLCAiRE9UIiwgIkNPTU1BIiwgIkNPTE9OIiwKKyAgIkVRVUFMIiwgIlNFTUlDT0xP
TiIsICJCQU5HIiwgIkRBU0giLCAiVElMREUiLCAiUExVUyIsICJTVEFSIiwgIlNMQVNIIiwKKyAg
IlBFUkNFTlQiLCAiTEVGVF9BTkdMRSIsICJSSUdIVF9BTkdMRSIsICJWRVJUSUNBTF9CQVIiLCAi
Q0FSRVQiLAorICAiQU1QRVJTQU5EIiwgIlFVRVNUSU9OIiwgIiRhY2NlcHQiLCAiaWRlbnRpZmll
ciIsICJ2YXJpYWJsZV9pZGVudGlmaWVyIiwKICAgInByaW1hcnlfZXhwcmVzc2lvbiIsICJwb3N0
Zml4X2V4cHJlc3Npb24iLCAiaW50ZWdlcl9leHByZXNzaW9uIiwKICAgImZ1bmN0aW9uX2NhbGwi
LCAiZnVuY3Rpb25fY2FsbF9vcl9tZXRob2QiLCAiZnVuY3Rpb25fY2FsbF9nZW5lcmljIiwKICAg
ImZ1bmN0aW9uX2NhbGxfaGVhZGVyX25vX3BhcmFtZXRlcnMiLApAQCAtODE1LDE2ICs3NzcsMTYg
QEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHl5dG5hbWVbXSA9CiAgICJpbml0X2RlY2xhcmF0
b3JfbGlzdCIsICJzaW5nbGVfZGVjbGFyYXRpb24iLCAiZnVsbHlfc3BlY2lmaWVkX3R5cGUiLAog
ICAidHlwZV9xdWFsaWZpZXIiLCAidHlwZV9zcGVjaWZpZXIiLCAicHJlY2lzaW9uX3F1YWxpZmll
ciIsCiAgICJ0eXBlX3NwZWNpZmllcl9ub19wcmVjIiwgInR5cGVfc3BlY2lmaWVyX25vbmFycmF5
IiwgInN0cnVjdF9zcGVjaWZpZXIiLAotICAiQDEiLCAiQDIiLCAic3RydWN0X2RlY2xhcmF0aW9u
X2xpc3QiLCAic3RydWN0X2RlY2xhcmF0aW9uIiwKKyAgIiRAMSIsICIkQDIiLCAic3RydWN0X2Rl
Y2xhcmF0aW9uX2xpc3QiLCAic3RydWN0X2RlY2xhcmF0aW9uIiwKICAgInN0cnVjdF9kZWNsYXJh
dG9yX2xpc3QiLCAic3RydWN0X2RlY2xhcmF0b3IiLCAiaW5pdGlhbGl6ZXIiLAogICAiZGVjbGFy
YXRpb25fc3RhdGVtZW50IiwgInN0YXRlbWVudCIsICJzaW1wbGVfc3RhdGVtZW50IiwKLSAgImNv
bXBvdW5kX3N0YXRlbWVudCIsICJAMyIsICJANCIsICJzdGF0ZW1lbnRfbm9fbmV3X3Njb3BlIiwK
LSAgInN0YXRlbWVudF93aXRoX3Njb3BlIiwgIkA1IiwgIkA2IiwgImNvbXBvdW5kX3N0YXRlbWVu
dF9ub19uZXdfc2NvcGUiLAorICAiY29tcG91bmRfc3RhdGVtZW50IiwgIiRAMyIsICIkQDQiLCAi
c3RhdGVtZW50X25vX25ld19zY29wZSIsCisgICJzdGF0ZW1lbnRfd2l0aF9zY29wZSIsICIkQDUi
LCAiJEA2IiwgImNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUiLAogICAic3RhdGVtZW50
X2xpc3QiLCAiZXhwcmVzc2lvbl9zdGF0ZW1lbnQiLCAic2VsZWN0aW9uX3N0YXRlbWVudCIsCi0g
ICJzZWxlY3Rpb25fcmVzdF9zdGF0ZW1lbnQiLCAiY29uZGl0aW9uIiwgIml0ZXJhdGlvbl9zdGF0
ZW1lbnQiLCAiQDciLAotICAiQDgiLCAiQDkiLCAiZm9yX2luaXRfc3RhdGVtZW50IiwgImNvbmRp
dGlvbm9wdCIsICJmb3JfcmVzdF9zdGF0ZW1lbnQiLAorICAic2VsZWN0aW9uX3Jlc3Rfc3RhdGVt
ZW50IiwgImNvbmRpdGlvbiIsICJpdGVyYXRpb25fc3RhdGVtZW50IiwgIiRANyIsCisgICIkQDgi
LCAiJEA5IiwgImZvcl9pbml0X3N0YXRlbWVudCIsICJjb25kaXRpb25vcHQiLCAiZm9yX3Jlc3Rf
c3RhdGVtZW50IiwKICAgImp1bXBfc3RhdGVtZW50IiwgInRyYW5zbGF0aW9uX3VuaXQiLCAiZXh0
ZXJuYWxfZGVjbGFyYXRpb24iLAotICAiZnVuY3Rpb25fZGVmaW5pdGlvbiIsICJAMTAiLCAwCisg
ICJmdW5jdGlvbl9kZWZpbml0aW9uIiwgIiRAMTAiLCBZWV9OVUxMCiB9OwogI2VuZGlmCiAKQEAg
LTg0Miw0NjEgKzgwNCw0ODIgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXl0b2tudW1b
XSA9CiAgICAgIDMxNSwgICAzMTYsICAgMzE3LCAgIDMxOCwgICAzMTksICAgMzIwLCAgIDMyMSwg
ICAzMjIsICAgMzIzLCAgIDMyNCwKICAgICAgMzI1LCAgIDMyNiwgICAzMjcsICAgMzI4LCAgIDMy
OSwgICAzMzAsICAgMzMxLCAgIDMzMiwgICAzMzMsICAgMzM0LAogICAgICAzMzUsICAgMzM2LCAg
IDMzNywgICAzMzgsICAgMzM5LCAgIDM0MCwgICAzNDEsICAgMzQyLCAgIDM0MywgICAzNDQsCi0g
ICAgIDM0NSwgICAzNDYsICAgMzQ3LCAgIDM0OCwgICAzNDksICAgMzUwCisgICAgIDM0NSwgICAz
NDYsICAgMzQ3LCAgIDM0OCwgICAzNDkKIH07CiAjIGVuZGlmCiAKIC8qIFlZUjFbWVlOXSAtLSBT
eW1ib2wgbnVtYmVyIG9mIHN5bWJvbCB0aGF0IHJ1bGUgWVlOIGRlcml2ZXMuICAqLwogc3RhdGlj
IGNvbnN0IHl5dHlwZV91aW50OCB5eXIxW10gPQogewotICAgICAgIDAsICAgIDk2LCAgICA5Nywg
ICAgOTgsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk4LCAgICA5OSwgICAgOTksCi0gICAgICA5
OSwgICAgOTksICAgIDk5LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAxMDIsICAgMTAz
LCAgIDEwMywKLSAgICAgMTA0LCAgIDEwNCwgICAxMDUsICAgMTA1LCAgIDEwNiwgICAxMDcsICAg
MTA3LCAgIDEwNywgICAxMDgsICAgMTA4LAotICAgICAxMDgsICAgMTA4LCAgIDEwOSwgICAxMDks
ICAgMTA5LCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMSwgICAxMTEsCi0gICAgIDExMSwgICAx
MTIsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTQsICAgMTE0LCAgIDEx
NCwKLSAgICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgIDExOCwgICAxMTksICAgMTE5LCAg
IDEyMCwgICAxMjAsICAgMTIxLAotICAgICAxMjEsICAgMTIyLCAgIDEyMiwgICAxMjMsICAgMTIz
LCAgIDEyMywgICAxMjMsICAgMTIzLCAgIDEyNCwgICAxMjQsCi0gICAgIDEyNSwgICAxMjYsICAg
MTI2LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOCwgICAxMjksICAgMTI5LCAgIDEzMCwKLSAg
ICAgMTMxLCAgIDEzMSwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzIsICAgMTMzLCAgIDEzMywg
ICAxMzMsICAgMTMzLAotICAgICAxMzQsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM1LCAgIDEz
NSwgICAxMzYsICAgMTM2LCAgIDEzNiwgICAxMzYsCi0gICAgIDEzNiwgICAxMzYsICAgMTM3LCAg
IDEzNywgICAxMzgsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEzOSwKLSAgICAgMTM5
LCAgIDE0MCwgICAxNDAsICAgMTQwLCAgIDE0MSwgICAxNDEsICAgMTQyLCAgIDE0MiwgICAxNDIs
ICAgMTQyLAorICAgICAgIDAsICAgIDk1LCAgICA5NiwgICAgOTYsICAgIDk3LCAgICA5OCwgICAg
OTgsICAgIDk4LCAgICA5OCwgICAgOTgsCisgICAgICA5OSwgICAgOTksICAgIDk5LCAgICA5OSwg
ICAgOTksICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMiwKKyAgICAgMTAzLCAgIDEw
MywgICAxMDQsICAgMTA0LCAgIDEwNSwgICAxMDUsICAgMTA2LCAgIDEwNywgICAxMDcsICAgMTA4
LAorICAgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDksICAgMTA5LCAgIDEwOSwgICAxMTAsICAg
MTEwLCAgIDExMCwgICAxMTEsCisgICAgIDExMSwgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTMs
ICAgMTEzLCAgIDExMywgICAxMTMsICAgMTE0LCAgIDExNCwKKyAgICAgMTE0LCAgIDExNSwgICAx
MTYsICAgMTE3LCAgIDExOCwgICAxMTgsICAgMTE5LCAgIDExOSwgICAxMjAsICAgMTIwLAorICAg
ICAxMjEsICAgMTIxLCAgIDEyMiwgICAxMjIsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTIzLCAg
IDEyMywgICAxMjQsCisgICAgIDEyNCwgICAxMjUsICAgMTI2LCAgIDEyNiwgICAxMjYsICAgMTI3
LCAgIDEyOCwgICAxMjgsICAgMTI5LCAgIDEyOSwKKyAgICAgMTMwLCAgIDEzMSwgICAxMzEsICAg
MTMyLCAgIDEzMiwgICAxMzIsICAgMTMyLCAgIDEzMywgICAxMzMsICAgMTMzLAorICAgICAxMzMs
ICAgMTM0LCAgIDEzNSwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM2LCAgIDEzNiwg
ICAxMzYsCisgICAgIDEzNiwgICAxMzYsICAgMTM2LCAgIDEzNywgICAxMzcsICAgMTM4LCAgIDEz
OCwgICAxMzgsICAgMTM4LCAgIDEzOCwKKyAgICAgMTM5LCAgIDEzOSwgICAxNDAsICAgMTQwLCAg
IDE0MCwgICAxNDEsICAgMTQxLCAgIDE0MiwgICAxNDIsICAgMTQyLAogICAgICAxNDIsICAgMTQy
LCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIs
Ci0gICAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAx
NDIsICAgMTQ0LCAgIDE0MywKLSAgICAgMTQ1LCAgIDE0MywgICAxNDYsICAgMTQ2LCAgIDE0Nywg
ICAxNDgsICAgMTQ4LCAgIDE0OSwgICAxNDksICAgMTUwLAotICAgICAxNTEsICAgMTUyLCAgIDE1
MiwgICAxNTMsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1NCwgICAxNTUsCi0gICAg
IDE1NiwgICAxNTQsICAgMTU3LCAgIDE1NywgICAxNTksICAgMTU4LCAgIDE2MCwgICAxNTgsICAg
MTYxLCAgIDE2MSwKLSAgICAgMTYyLCAgIDE2MiwgICAxNjMsICAgMTYzLCAgIDE2NCwgICAxNjUs
ICAgMTY1LCAgIDE2NiwgICAxNjYsICAgMTY4LAotICAgICAxNjcsICAgMTY5LCAgIDE2NywgICAx
NzAsICAgMTY3LCAgIDE3MSwgICAxNzEsICAgMTcyLCAgIDE3MiwgICAxNzMsCi0gICAgIDE3Mywg
ICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NSwgICAxNzUsICAgMTc2LCAg
IDE3NiwKLSAgICAgMTc4LCAgIDE3NworICAgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAg
MTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDQsCisgICAgIDE0MywgICAxNDUs
ICAgMTQzLCAgIDE0NiwgICAxNDYsICAgMTQ3LCAgIDE0OCwgICAxNDgsICAgMTQ5LCAgIDE0OSwK
KyAgICAgMTUwLCAgIDE1MSwgICAxNTIsICAgMTUyLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1
MywgICAxNTMsICAgMTU0LAorICAgICAxNTUsICAgMTU2LCAgIDE1NCwgICAxNTcsICAgMTU3LCAg
IDE1OSwgICAxNTgsICAgMTYwLCAgIDE1OCwgICAxNjEsCisgICAgIDE2MSwgICAxNjIsICAgMTYy
LCAgIDE2MywgICAxNjMsICAgMTY0LCAgIDE2NSwgICAxNjUsICAgMTY2LCAgIDE2NiwKKyAgICAg
MTY4LCAgIDE2NywgICAxNjksICAgMTY3LCAgIDE3MCwgICAxNjcsICAgMTcxLCAgIDE3MSwgICAx
NzIsICAgMTcyLAorICAgICAxNzMsICAgMTczLCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwg
ICAxNzQsICAgMTc1LCAgIDE3NSwgICAxNzYsCisgICAgIDE3NiwgICAxNzgsICAgMTc3CiB9Owog
CiAvKiBZWVIyW1lZTl0gLS0gTnVtYmVyIG9mIHN5bWJvbHMgY29tcG9zaW5nIHJpZ2h0IGhhbmQg
c2lkZSBvZiBydWxlIFlZTi4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjJbXSA9
CiB7Ci0gICAgICAgMCwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDMsICAgICAxLCAgICAgNCwKLSAgICAgICAxLCAgICAgMywgICAgIDIsICAgICAyLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDIsICAgICAyLAotICAgICAgIDIsICAgICAxLCAg
ICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsCi0g
ICAgICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDMs
ICAgICAxLCAgICAgMywKLSAgICAgICAzLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAg
IDMsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAzLAotICAgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsCi0gICAgICAg
NSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMywKLSAgICAgICAxLCAgICAgMiwgICAgIDIsICAgICA0LCAgICAgMiwgICAgIDEsICAg
ICAxLCAgICAgMiwgICAgIDMsICAgICAzLAotICAgICAgIDIsICAgICA1LCAgICAgMywgICAgIDIs
ICAgICAzLCAgICAgMiwgICAgIDAsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAgICAgMSwgICAg
IDEsICAgICAzLCAgICAgNSwgICAgIDYsICAgICA1LCAgICAgMSwgICAgIDIsICAgICA0LCAgICAg
NSwKLSAgICAgICA0LCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMiwgICAgIDEsICAgICAxLAotICAgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgNCwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCisgICAgICAgMCwgICAgIDIsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywKKyAg
ICAgICAxLCAgICAgNCwgICAgIDEsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAzLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAg
MywgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMSwKKyAgICAgICAz
LCAgICAgMywgICAgIDEsICAgICAxLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDEs
ICAgICAzLAorICAgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAg
IDEsICAgICAzLCAgICAgMSwgICAgIDMsCisgICAgICAgMSwgICAgIDUsICAgICAxLCAgICAgMywg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAzLCAgICAg
MSwgICAgIDIsICAgICAyLCAgICAgNCwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAz
LAorICAgICAgIDMsICAgICAyLCAgICAgNSwgICAgIDMsICAgICAyLCAgICAgMywgICAgIDIsICAg
ICAwLCAgICAgMSwgICAgIDEsCisgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDUs
ICAgICA2LCAgICAgNSwgICAgIDEsICAgICAyLCAgICAgNCwKKyAgICAgICA1LCAgICAgNCwgICAg
IDIsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAxLAorICAg
ICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDQsICAgICAxLCAg
ICAgMSwgICAgIDEsCiAgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKLSAgICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDAsICAgICA2LAotICAgICAgIDAs
ICAgICA1LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgNCwg
ICAgIDEsCi0gICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAyLCAgICAgMCwKLSAgICAgICAwLCAgICAgNSwgICAgIDEsICAgICAxLCAg
ICAgMCwgICAgIDIsICAgICAwLCAgICAgMiwgICAgIDIsICAgICAzLAotICAgICAgIDEsICAgICAy
LCAgICAgMSwgICAgIDIsICAgICA1LCAgICAgMywgICAgIDEsICAgICAxLCAgICAgNCwgICAgIDAs
Ci0gICAgICAgNiwgICAgIDAsICAgICA4LCAgICAgMCwgICAgIDcsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAwLCAgICAgMiwKLSAgICAgICAzLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMywg
ICAgIDIsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLAotICAgICAgIDAsICAgICAzCisgICAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMCwKKyAgICAgICA2LCAgICAgMCwgICAgIDUsICAgICAxLCAgICAgMiwgICAgIDMs
ICAgICAxLCAgICAgMywgICAgIDEsICAgICA0LAorICAgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsCisgICAgICAgMCwg
ICAgIDAsICAgICA1LCAgICAgMSwgICAgIDEsICAgICAwLCAgICAgMiwgICAgIDAsICAgICAyLCAg
ICAgMiwKKyAgICAgICAzLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDUsICAgICAz
LCAgICAgMSwgICAgIDEsICAgICA0LAorICAgICAgIDAsICAgICA2LCAgICAgMCwgICAgIDgsICAg
ICAwLCAgICAgNywgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDAsCisgICAgICAgMiwgICAgIDMs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwK
KyAgICAgICAxLCAgICAgMCwgICAgIDMKIH07CiAKLS8qIFlZREVGQUNUW1NUQVRFLU5BTUVdIC0t
IERlZmF1bHQgcnVsZSB0byByZWR1Y2Ugd2l0aCBpbiBzdGF0ZQotICAgU1RBVEUtTlVNIHdoZW4g
WVlUQUJMRSBkb2Vzbid0IHNwZWNpZnkgc29tZXRoaW5nIGVsc2UgdG8gZG8uICBaZXJvCisvKiBZ
WURFRkFDVFtTVEFURS1OQU1FXSAtLSBEZWZhdWx0IHJlZHVjdGlvbiBudW1iZXIgaW4gc3RhdGUg
U1RBVEUtTlVNLgorICAgUGVyZm9ybWVkIHdoZW4gWVlUQUJMRSBkb2Vzbid0IHNwZWNpZnkgc29t
ZXRoaW5nIGVsc2UgdG8gZG8uICBaZXJvCiAgICBtZWFucyB0aGUgZGVmYXVsdCBpcyBhbiBlcnJv
ci4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5ZGVmYWN0W10gPQogewotICAgICAg
IDAsICAgICAwLCAgIDExMSwgICAxMTIsICAgMTEzLCAgICAgMCwgICAxMDUsICAgMTA0LCAgIDEx
OSwgICAxMTcsCi0gICAgIDExOCwgICAxMjMsICAgMTI0LCAgIDEyNSwgICAxMjYsICAgMTI3LCAg
IDEyOCwgICAxMjAsICAgMTIxLCAgIDEyMiwKLSAgICAgMTI5LCAgIDEzMCwgICAxMzEsICAgMTA4
LCAgIDEwNiwgICAgIDAsICAgMTE2LCAgIDEzMiwgICAxMzMsICAgMTM0LAotICAgICAxMzUsICAg
MTM3LCAgIDE5OSwgICAyMDAsICAgICAwLCAgICA3NiwgICAgODYsICAgICAwLCAgICA5MSwgICAg
OTYsCi0gICAgICAgMCwgICAxMDIsICAgICAwLCAgIDEwOSwgICAxMTQsICAgMTM2LCAgICAgMCwg
ICAxOTYsICAgMTk4LCAgIDEwNywKLSAgICAgMTAxLCAgICAgMCwgICAgIDAsICAgMTQwLCAgICA3
MSwgICAgIDAsICAgIDc0LCAgICA4NiwgICAgIDAsICAgIDg3LAotICAgICAgODgsICAgIDg5LCAg
ICA3NywgICAgIDAsICAgIDg2LCAgICAgMCwgICAgNzIsICAgIDk3LCAgIDEwMywgICAxMTAsCi0g
ICAgICAgMCwgICAgIDEsICAgMTk3LCAgICAgMCwgICAxMzgsICAgICAwLCAgICAgMCwgICAyMDEs
ICAgIDc4LCAgICA4MywKLSAgICAgIDg1LCAgICA5MCwgICAgIDAsICAgIDkyLCAgICA3OSwgICAg
IDAsICAgICAwLCAgICAgMiwgICAgIDUsICAgICA0LAotICAgICAgIDYsICAgIDI3LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAzNCwgICAgMzMsICAgIDMyLCAgICAgMywgICAgIDgsCi0gICAgICAy
OCwgICAgMTAsICAgIDE1LCAgICAxNiwgICAgIDAsICAgICAwLCAgICAyMSwgICAgIDAsICAgIDM1
LCAgICAgMCwKLSAgICAgIDM4LCAgICA0MSwgICAgNDIsICAgIDQ3LCAgICA1MCwgICAgNTEsICAg
IDUyLCAgICA1MywgICAgNTUsICAgIDU3LAotICAgICAgNTksICAgIDcwLCAgICAgMCwgICAgMjUs
ICAgIDczLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MiwgICAgIDAsCi0gICAgICAgMCwgICAx
ODEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTksICAgMTY4LCAgIDE3
MiwKLSAgICAgIDM1LCAgICA2MSwgICAgNjgsICAgICAwLCAgIDE1MCwgICAgIDAsICAgMTE0LCAg
IDE1MywgICAxNzAsICAgMTUyLAotICAgICAxNTEsICAgICAwLCAgIDE1NCwgICAxNTUsICAgMTU2
LCAgIDE1NywgICAgODAsICAgIDgyLCAgICA4NCwgICAgIDAsCi0gICAgICAgMCwgICAgOTgsICAg
ICAwLCAgIDE0OSwgICAxMDAsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDEyLCAgICAxMywKLSAg
ICAgICAwLCAgICAgMCwgICAgMTksICAgIDE4LCAgICAgMCwgICAgMjAsICAgIDIyLCAgICAyNCwg
ICAgMzEsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAg
IDExNSwgICAgIDAsICAgMTQ3LCAgICAgMCwgICAxNDUsICAgMTQxLCAgIDE0MywKLSAgICAgMTky
LCAgIDE5MSwgICAxNjYsICAgMTgzLCAgICAgMCwgICAxOTUsICAgMTkzLCAgICAgMCwgICAxNzks
ICAgMTU4LAotICAgICAgIDAsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2MywgICAg
IDAsICAgICAwLCAgIDE3MywgICAxNjksCi0gICAgIDE3MSwgICAgIDAsICAgIDkzLCAgICAgMCwg
ICAgOTUsICAgIDk5LCAgICAgNywgICAgIDAsICAgIDE0LCAgICAyNiwKLSAgICAgIDExLCAgICAx
NywgICAgMjMsICAgIDM2LCAgICAzNywgICAgNDAsICAgIDM5LCAgICA0NSwgICAgNDYsICAgIDQz
LAotICAgICAgNDQsICAgIDQ4LCAgICA0OSwgICAgNTQsICAgIDU2LCAgICA1OCwgICAgIDAsICAg
MTM5LCAgICAgMCwgICAgIDAsCi0gICAgIDE0NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDE5NCwgICAgIDAsICAgMTYwLCAgICA2MiwKLSAgICAgIDY5LCAgICAgMCwgICAg
OTQsICAgICA5LCAgICAgMCwgICAgIDAsICAgMTQ2LCAgICAgMCwgICAxNjUsICAgMTY3LAotICAg
ICAxODYsICAgMTg1LCAgIDE4OCwgICAxNjYsICAgMTc3LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICA4MSwgICAgNjAsCi0gICAgIDE0OCwgICAgIDAsICAgMTg3LCAgICAgMCwgICAgIDAsICAgMTc2
LCAgIDE3NCwgICAgIDAsICAgICAwLCAgIDE2MSwKLSAgICAgICAwLCAgIDE4OSwgICAgIDAsICAg
MTY2LCAgICAgMCwgICAxNjMsICAgMTgwLCAgIDE2MiwgICAgIDAsICAgMTkwLAotICAgICAxODQs
ICAgMTc1LCAgIDE3OCwgICAxODIKKyAgICAgICAwLCAgICAgMCwgICAxMTIsICAgMTEzLCAgIDEx
NCwgICAgIDAsICAgMTA2LCAgIDEwNSwgICAxMjAsICAgMTE4LAorICAgICAxMTksICAgMTI0LCAg
IDEyNSwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjksICAgMTIxLCAgIDEyMiwgICAxMjMsCisg
ICAgIDEzMCwgICAxMzEsICAgMTMyLCAgIDEwOSwgICAxMDcsICAgICAwLCAgIDExNywgICAxMzMs
ICAgMTM0LCAgIDEzNSwKKyAgICAgMTM2LCAgIDEzOCwgICAyMDAsICAgMjAxLCAgICAgMCwgICAg
NzcsICAgIDg3LCAgICAgMCwgICAgOTIsICAgIDk3LAorICAgICAgIDAsICAgMTAzLCAgICAgMCwg
ICAxMTAsICAgMTE1LCAgIDEzNywgICAgIDAsICAgMTk3LCAgIDE5OSwgICAxMDgsCisgICAgIDEw
MiwgICAgIDAsICAgICAyLCAgICAgMywgICAxNDEsICAgICAwLCAgICA3MiwgICAgIDAsICAgIDc1
LCAgICA4NywKKyAgICAgICAwLCAgICA4OCwgICAgODksICAgIDkwLCAgICA3OCwgICAgIDAsICAg
IDg3LCAgICAgMCwgICAgNzMsICAgICAyLAorICAgICAgOTgsICAgMTA0LCAgIDExMSwgICAgIDAs
ICAgICAxLCAgIDE5OCwgICAgIDAsICAgICAwLCAgIDEzOSwgICAgIDAsCisgICAgIDIwMiwgICAg
NzksICAgIDg0LCAgICA4NiwgICAgOTEsICAgICAwLCAgICA5MywgICAgODAsICAgICAwLCAgICAg
MCwKKyAgICAgICA0LCAgICAgNywgICAgIDYsICAgICA4LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAzNSwgICAgMzQsICAgIDMzLAorICAgICAgIDUsICAgIDEwLCAgICAyOSwgICAgMTIsICAgIDE3
LCAgICAxOCwgICAgIDAsICAgICAwLCAgICAyMywgICAgIDAsCisgICAgICAzNiwgICAgIDAsICAg
IDM5LCAgICA0MiwgICAgNDMsICAgIDQ4LCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwKKyAg
ICAgIDU2LCAgICA1OCwgICAgNjAsICAgIDcxLCAgICAgMCwgICAgMjcsICAgIDc0LCAgICAgMCwg
ICAgIDAsICAgMTQzLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxODIsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNjAsCisgICAgIDE2OSwgICAxNzMsICAgIDM2LCAg
ICA2MiwgICAgNjksICAgICAwLCAgIDE1MSwgICAgIDAsICAgMTE1LCAgIDE1NCwKKyAgICAgMTcx
LCAgIDE1MywgICAxNTIsICAgICAwLCAgIDE1NSwgICAxNTYsICAgMTU3LCAgIDE1OCwgICAgODEs
ICAgIDgzLAorICAgICAgODUsICAgICAwLCAgICAgMCwgICAgOTksICAgICAwLCAgIDE1MCwgICAx
MDEsICAgIDMwLCAgICAzMSwgICAgIDAsCisgICAgICAxNCwgICAgMTUsICAgICAwLCAgICAgMCwg
ICAgMjEsICAgIDIwLCAgICAgMCwgICAgMjIsICAgIDI0LCAgICAyNiwKKyAgICAgIDMyLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDExNiwgICAxNDgsICAg
ICAwLCAgIDE0NiwgICAxNDIsCisgICAgIDE0NCwgICAgIDAsICAgMTkzLCAgIDE5MiwgICAxNjcs
ICAgMTg0LCAgICAgMCwgICAxOTYsICAgMTk0LCAgICAgMCwKKyAgICAgMTgwLCAgIDE1OSwgICAg
IDAsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2NCwgICAgIDAsICAgICAwLAorICAg
ICAxNzQsICAgMTcwLCAgIDE3MiwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgOTYsICAgMTAwLCAg
ICAgOSwgICAgIDAsCisgICAgICAxNiwgICAgIDIsICAgICAzLCAgICAxMywgICAgMTksICAgIDI1
LCAgICAzNywgICAgMzgsICAgIDQxLCAgICA0MCwKKyAgICAgIDQ2LCAgICA0NywgICAgNDQsICAg
IDQ1LCAgICA0OSwgICAgNTAsICAgIDU1LCAgICA1NywgICAgNTksICAgICAwLAorICAgICAgIDAs
ICAgICAwLCAgIDE0NSwgICAxNDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAxOTUsCisgICAgICAgMCwgICAxNjEsICAgIDYzLCAgICA3MCwgICAgIDAsICAgIDk1LCAgICAx
MSwgICAgIDAsICAgICAwLCAgIDE0NywKKyAgICAgICAwLCAgIDE2NiwgICAxNjgsICAgMTg3LCAg
IDE4NiwgICAxODksICAgMTY3LCAgIDE3OCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgIDgy
LCAgICA2MSwgICAxNDksICAgICAwLCAgIDE4OCwgICAgIDAsICAgICAwLCAgIDE3NywgICAxNzUs
CisgICAgICAgMCwgICAgIDAsICAgMTYyLCAgICAgMCwgICAxOTAsICAgICAwLCAgIDE2NywgICAg
IDAsICAgMTY0LCAgIDE4MSwKKyAgICAgMTYzLCAgICAgMCwgICAxOTEsICAgMTg1LCAgIDE3Niwg
ICAxNzksICAgMTgzCiB9OwogCiAvKiBZWURFRkdPVE9bTlRFUk0tTlVNXS4gICovCiBzdGF0aWMg
Y29uc3QgeXl0eXBlX2ludDE2IHl5ZGVmZ290b1tdID0KIHsKLSAgICAgIC0xLCAgICA5OCwgICAg
OTksICAgMTAwLCAgIDIyNywgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LAotICAg
ICAxMDYsICAgMTA3LCAgIDE0MCwgICAxMDksICAgMTEwLCAgIDExMSwgICAxMTIsICAgMTEzLCAg
IDExNCwgICAxMTUsCi0gICAgIDExNiwgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjAsICAgMTQx
LCAgIDE0MiwgICAyMTYsICAgMTQzLCAgIDEyMiwKLSAgICAgMTQ0LCAgIDE0NSwgICAgMzQsICAg
IDM1LCAgICAzNiwgICAgNzksICAgIDYyLCAgICA2MywgICAgODAsICAgIDM3LAotICAgICAgMzgs
ICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAxMjMsICAgIDQ1LCAgIDEyNSwg
ICAgNzUsCi0gICAgIDEyNywgICAxMjgsICAgMTk2LCAgIDE5NywgICAxNjQsICAgMTQ3LCAgIDE0
OCwgICAxNDksICAgMTUwLCAgIDIxMCwKLSAgICAgMjc3LCAgIDI5NiwgICAyNTEsICAgMjUyLCAg
IDI1MywgICAyOTcsICAgMTUxLCAgIDE1MiwgICAxNTMsICAgMjg2LAotICAgICAyNzYsICAgMTU0
LCAgIDI1NywgICAyMDIsICAgMjU0LCAgIDI3MiwgICAyODMsICAgMjg0LCAgIDE1NSwgICAgNDYs
Ci0gICAgICA0NywgICAgNDgsICAgIDU1CisgICAgICAtMSwgICAxOTYsICAgMTAwLCAgIDEwMSwg
ICAxMDIsICAgMjI5LCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEwNiwKKyAgICAgMTA3LCAgIDEw
OCwgICAxMDksICAgMTQyLCAgIDExMSwgICAxMTIsICAgMTEzLCAgIDExNCwgICAxMTUsICAgMTE2
LAorICAgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjAsICAgMTIxLCAgIDEyMiwgICAxNDMsICAg
MTQ0LCAgIDIxOCwgICAxNDUsCisgICAgIDEyNCwgICAxNDYsICAgMTQ3LCAgICAzNCwgICAgMzUs
ICAgIDM2LCAgICA4MiwgICAgNjQsICAgIDY1LCAgICA4MywKKyAgICAgIDM3LCAgICAzOCwgICAg
MzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgIDEyNSwgICAgNDUsICAgMTMwLAorICAg
ICAgNzcsICAgMTI4LCAgIDEyOSwgICAxOTcsICAgMTk4LCAgIDE2NiwgICAxNDksICAgMTUwLCAg
IDE1MSwgICAxNTIsCisgICAgIDIxMiwgICAyODAsICAgMjk5LCAgIDI1NCwgICAyNTUsICAgMjU2
LCAgIDMwMCwgICAxNTMsICAgMTU0LCAgIDE1NSwKKyAgICAgMjg5LCAgIDI3OSwgICAxNTYsICAg
MjYwLCAgIDIwNCwgICAyNTcsICAgMjc1LCAgIDI4NiwgICAyODcsICAgMTU3LAorICAgICAgNDYs
ICAgIDQ3LCAgICA0OCwgICAgNTcKIH07CiAKIC8qIFlZUEFDVFtTVEFURS1OVU1dIC0tIEluZGV4
IGluIFlZVEFCTEUgb2YgdGhlIHBvcnRpb24gZGVzY3JpYmluZwogICAgU1RBVEUtTlVNLiAgKi8K
LSNkZWZpbmUgWVlQQUNUX05JTkYgLTI2NgorI2RlZmluZSBZWVBBQ1RfTklORiAtMjYxCiBzdGF0
aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5cGFjdFtdID0KIHsKLSAgICAxMjUzLCAgIC0yMCwgIC0y
NjYsICAtMjY2LCAgLTI2NiwgICAxNDgsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAg
IC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
LTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgLTM5
LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAg
LTE4LCAgICAtMiwgICAgIDYsICAgIDIxLCAgIC02MSwgIC0yNjYsICAgIDUxLAotICAgIDEyOTYs
ICAtMjY2LCAgMTM3MCwgIC0yNjYsICAgIDI1LCAgLTI2NiwgIDEyMDksICAtMjY2LCAgLTI2Niwg
IC0yNjYsCi0gICAgLTI2NiwgIDEzNzAsICAgIDQyLCAgLTI2NiwgIC0yNjYsICAgIDUwLCAgLTI2
NiwgICAgNzEsICAgIDk1LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAxMjk2LCAg
IDEyMywgICAxMDUsICAtMjY2LCAgICAgOSwgIC0yNjYsICAtMjY2LAotICAgICA5NzQsICAtMjY2
LCAgLTI2NiwgICAgODEsICAtMjY2LCAgMTI5NiwgICAyOTAsICAtMjY2LCAgLTI2NiwgIC0yNjYs
Ci0gICAgLTI2NiwgICAxMjUsICAxMjk2LCAgIC0xMywgIC0yNjYsICAgNzc2LCAgIDk3NCwgICAg
OTksICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgICA5NzQsICAgOTc0LCAgIDk3NCwg
IC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgICAgMzUsICAtMjY2LCAgLTI2
NiwgIC0yNjYsICAgMTAwLCAgICAtNiwgIDEwNDAsICAgMTA0LCAgLTI2NiwgICA5NzQsCi0gICAg
ICAzNiwgICAtNjQsICAtMjY2LCAgIC0yMSwgICAxMDIsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAg
MTEzLCAgIDExNywKLSAgICAgLTUxLCAgLTI2NiwgICAxMDgsICAtMjY2LCAgLTI2NiwgIDEyOTYs
ICAgMTI5LCAgMTEwOSwgIC0yNjYsICAgIDk3LAotICAgICAxMDMsICAtMjY2LCAgIDExMiwgICAx
MTQsICAgMTA2LCAgIDg0MiwgICAxMTUsICAgMTE2LCAgLTI2NiwgIC0yNjYsCi0gICAgICAzOSwg
IC0yNjYsICAtMjY2LCAgIC00MywgIC0yNjYsICAgLTE4LCAgICA0NywgIC0yNjYsICAtMjY2LCAg
LTI2NiwKLSAgICAtMjY2LCAgIDM3NCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTE4
LCAgLTI2NiwgIC0yNjYsICAgOTA4LAotICAgICA5NzQsICAtMjY2LCAgIDEyMCwgIC0yNjYsICAt
MjY2LCAgLTI2NiwgIC0yNjYsICAgIDE5LCAgLTI2NiwgIC0yNjYsCi0gICAgIDk3NCwgIDEzMzMs
ICAtMjY2LCAgLTI2NiwgICA5NzQsICAgMTE5LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDk3NCwK
LSAgICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3
NCwgICA5NzQsICAgOTc0LAotICAgICA5NzQsICAgOTc0LCAgIDk3NCwgIC0yNjYsICAxMTUyLCAg
IDEyMiwgICAtMjksICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAgMTIx
LCAgLTI2NiwgICA5NzQsICAtMjY2LCAgLTI2NiwgICAgIDUsICAtMjY2LCAgLTI2NiwKLSAgICAg
NDU4LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgOTc0LCAgIDk3NCwgIC0y
NjYsICAtMjY2LAotICAgIC0yNjYsICAgOTc0LCAgLTI2NiwgICAxMzcsICAtMjY2LCAgLTI2Niwg
IC0yNjYsICAgMTM4LCAgIDExMSwgIC0yNjYsCi0gICAgIDE0MiwgIC0yNjYsICAtMjY2LCAgLTI2
NiwgIC0yNjYsICAgIDM2LCAgICAzNiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAg
IC0yMSwgICAtMjEsICAtMjY2LCAgIDExMywgICAxMTcsICAgIDgyLCAgLTI2NiwgICA5NzQsICAg
MTI5LAotICAgIC0yNjYsICAgMTc1LCAgICA1MCwgICA2MjYsICAgNzEwLCAgICAzOCwgIC0yNjYs
ICAgMTk3LCAgIDQ1OCwgIC0yNjYsCi0gICAgLTI2NiwgICAxNDEsICAtMjY2LCAgLTI2NiwgICA5
NzQsICAgMTU1LCAgLTI2NiwgICAxNDUsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2Niwg
ICAxOTcsICAgMTIxLCAgIDExMSwgICAxODYsICAgMTU5LCAgIDE2MCwgIC0yNjYsICAtMjY2LAot
ICAgIC0yNjYsICAgOTc0LCAgLTI2NiwgICAxNjYsICAgMTc2LCAgIDIzNiwgIC0yNjYsICAgMTc0
LCAgIDU0MiwgIC0yNjYsCi0gICAgICA0MywgICA5NzQsICAgNTQyLCAgIDEyMSwgICA5NzQsICAt
MjY2LCAgLTI2NiwgIC0yNjYsICAgMTc3LCAgIDExMSwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYs
ICAtMjY2CisgICAgMTMyNywgICAtMjAsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgMTEzLCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYx
LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIC0xOSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEs
CisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIC02MSwgICAtNDAsICAgLTI4LCAgICA3NSwgICAg
LTcsICAtMjYxLCAgICAyNCwKKyAgICAxMzcwLCAgLTI2MSwgIDE0NDQsICAtMjYxLCAgIC0xMSwg
IC0yNjEsICAxMjgzLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAxNDQ0LCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgICAgNiwgIC0yNjEsICAgIDU0LCAgLTI2MSwgICAgODgsCisgICAg
ICA2MiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAxMzcwLCAgICA1OSwgICAgOTEsICAt
MjYxLCAgICAzNiwKKyAgICAgLTUwLCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgLTI2MSwgIC0yNjEs
ICAgIDYzLCAgMTM3MCwgIC0yNjEsICAgMjkzLAorICAgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0y
NjEsICAgIDkxLCAgMTM3MCwgICAtMTIsICAtMjYxLCAgIDg1NiwgIDEwNTEsCisgICAgICA3Nywg
IC0yNjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIC0yNjEsICAtMjYxLCAg
LTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgICAtMTQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgIDg0
LCAgIC00NCwgIDExMTYsICAgIDk1LAorICAgIC0yNjEsICAxMDUxLCAgICA1MywgICAgIDMsICAt
MjYxLCAgIC0zNiwgICAgODksICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAgIDEwNCwgICAxMDcs
ICAgLTQ1LCAgLTI2MSwgICAgOTYsICAtMjYxLCAgLTI2MSwgICAgOTEsICAxMTg0LCAgLTI2MSwK
KyAgICAxMzcwLCAgICA5MiwgICAgOTMsICAtMjYxLCAgICA5OCwgICAxMDEsICAgIDk0LCAgIDky
MSwgICAxMDUsICAgMTAyLAorICAgIC0yNjEsICAtMjYxLCAgICA3MiwgIC0yNjEsICAtMjYxLCAg
ICAgOSwgIC0yNjEsICAgLTYxLCAgICA0MiwgIC0yNjEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYx
LCAgIDM3NiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgMTA2LCAgLTI2MSwKKyAgICAt
MjYxLCAgIDk4NiwgIDEwNTEsICAtMjYxLCAgIDEwMywgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0y
NjEsICAgLTQxLAorICAgIC0yNjEsICAtMjYxLCAgMTA1MSwgIDE0MDcsICAtMjYxLCAgLTI2MSwg
IDEwNTEsICAgMTEwLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgIDEwNTEsICAxMDUxLCAgMTA1
MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwKKyAgICAxMDUxLCAg
MTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIC0yNjEsICAgMTA5LCAgICAyMywgIC0yNjEsICAt
MjYxLAorICAgIC0yNjEsICAxMjI3LCAgLTI2MSwgIC0yNjEsICAgMTExLCAgLTI2MSwgIDEwNTEs
ICAtMjYxLCAgLTI2MSwgICAgMjUsCisgICAgLTI2MSwgIC0yNjEsICAgNDU5LCAgLTI2MSwgIC0y
NjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgMTA1MSwKKyAgICAtMjYxLCAgLTI2MSwg
IC0yNjEsICAxMDUxLCAgLTI2MSwgICAxMTQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgMTE1LAor
ICAgICAxMTIsICAgIDc3LCAgIDExNiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYx
LCAgICA1MywgICAgNTMsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAtMzYsICAg
LTM2LCAgLTI2MSwgICAxMDQsICAgMTA3LCAgICA3NiwKKyAgICAxMDUxLCAgICA5MSwgIC0yNjEs
ICAtMjYxLCAgIDE0NSwgICAgNTQsICAgNjI1LCAgIDcwOCwgICAgLTYsICAtMjYxLAorICAgICA3
OTEsICAgNDU5LCAgLTI2MSwgIC0yNjEsICAgMTE3LCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgIDEy
MCwgIC0yNjEsCisgICAgIDEyNCwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgNzkxLCAg
IDExMSwgICAxMTIsICAgIDkxLCAgIDEyNSwKKyAgICAgMTIyLCAgLTI2MSwgIC0yNjEsICAtMjYx
LCAgMTA1MSwgIC0yNjEsICAgMTE4LCAgIDEyOCwgICAxODAsICAtMjYxLAorICAgICAxMjYsICAg
NTQyLCAgLTI2MSwgICAgLTUsICAxMDUxLCAgIDU0MiwgICAxMTEsICAxMDUxLCAgLTI2MSwgIC0y
NjEsCisgICAgLTI2MSwgICAxMjMsICAgMTEyLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MQog
fTsKIAogLyogWVlQR09UT1tOVEVSTS1OVU1dLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50
MTYgeXlwZ290b1tdID0KIHsKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2Niwg
IC0yNjYsICAtMjY2LCAgICA4NSwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2LCAgIC00
NCwgIC0yNjYsICAgLTE1LCAgLTI2NiwgICAtNTUsICAgLTE5LCAgLTI2NiwgIC0yNjYsCi0gICAg
LTI2NiwgICAgNzIsICAgIDcwLCAgICA3MywgIC0yNjYsICAgLTY2LCAgIC04MywgIC0yNjYsICAg
LTkyLCAgIC03MywKLSAgICAgIDEzLCAgICAxNCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxODAs
ICAgMjA2LCAgIDIwMSwgICAxODQsICAtMjY2LAotICAgIC0yNjYsICAtMjQxLCAgIC0yNSwgICAt
MzAsICAgMjYyLCAgICAtNCwgICAgIDAsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgIDE0Mywg
IC0xMjIsICAtMjY2LCAgICAyMiwgIC0xNDUsICAgIDE2LCAgLTE0NCwgIC0yMjYsICAtMjY2LCAg
LTI2NiwKLSAgICAtMjY2LCAgIC0xNywgIC0yNjUsICAtMjY2LCAgLTI2NiwgICAtNTQsICAgIDYz
LCAgICAyMCwgIC0yNjYsICAtMjY2LAotICAgICAgIDQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAt
MjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgIDIzMSwgIC0yNjYs
ICAtMjY2CisgICAgLTI2MSwgICAtMjQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2
MSwgIC0yNjEsICAgIDM0LCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgIDMyLCAg
LTI2MSwgICAtMzMsICAtMjYxLCAgIC0yNywgICAtMjYsICAtMjYxLAorICAgIC0yNjEsICAtMjYx
LCAgICAxNCwgICAgMTYsICAgIDE4LCAgLTI2MSwgICAtNjYsICAgLTg3LCAgLTI2MSwgICAtOTIs
CisgICAgIC04NSwgICAgMTEsICAgIDEyLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDE0MSwgICAx
NTAsICAgMTYxLCAgIDE0MywKKyAgICAtMjYxLCAgLTI2MSwgIC0yMzEsICAgICA1LCAgIC0zMCwg
ICAyMjQsICAgLTE4LCAgICAgMCwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAgMTAwLCAgLTEx
OSwgIC0yNjEsICAgLTE3LCAgLTE1NiwgICAtMjUsICAtMTQ1LCAgLTI0MywgIC0yNjEsCisgICAg
LTI2MSwgIC0yNjEsICAgLTY0LCAgLTI2MCwgIC0yNjEsICAtMjYxLCAgIC01MiwgICAgMjEsICAg
LTIyLCAgLTI2MSwKKyAgICAtMjYxLCAgIC0zOSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEs
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAgMTkxLCAgLTI2MSwgIC0y
NjEKIH07CiAKIC8qIFlZVEFCTEVbWVlQQUNUW1NUQVRFLU5VTV1dLiAgV2hhdCB0byBkbyBpbiBz
dGF0ZSBTVEFURS1OVU0uICBJZgogICAgcG9zaXRpdmUsIHNoaWZ0IHRoYXQgdG9rZW4uICBJZiBu
ZWdhdGl2ZSwgcmVkdWNlIHRoZSBydWxlIHdoaWNoCi0gICBudW1iZXIgaXMgdGhlIG9wcG9zaXRl
LiAgSWYgemVybywgZG8gd2hhdCBZWURFRkFDVCBzYXlzLgotICAgSWYgWVlUQUJMRV9OSU5GLCBz
eW50YXggZXJyb3IuICAqLwotI2RlZmluZSBZWVRBQkxFX05JTkYgLTE2NQorICAgbnVtYmVyIGlz
IHRoZSBvcHBvc2l0ZS4gIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8KKyNkZWZp
bmUgWVlUQUJMRV9OSU5GIC0xNjYKIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXl0YWJsZVtd
ID0KIHsKLSAgICAgIDQ0LCAgICA3NywgICAxNjcsICAgMTYzLCAgIDEyMSwgICAxOTksICAgIDUy
LCAgIDIyMCwgICAyODUsICAgMTkxLAotICAgICAgNjgsICAgIDY0LCAgIDE2MiwgICAgMzIsICAg
IDMzLCAgIDIyNCwgICAyNzUsICAgIDQ5LCAgICA2NSwgICAxMjEsCi0gICAgIDE4MSwgICAgNjYs
ICAgMTgyLCAgIDE3NiwgICAgNTgsICAgIDUwLCAgIDEwOCwgICAyNjksICAgMzAxLCAgICAgNiwK
LSAgICAgICA3LCAgIDI3NSwgICAgNjQsICAgIDgxLCAgIDE4MywgICAxODQsICAgMjE3LCAgICA1
MywgICAgNjksICAgMjE4LAotICAgICAgNDQsICAgMTA4LCAgICA0NCwgICAyMDcsICAgMTkyLCAg
IDEyNiwgICAgNDQsICAgIDczLCAgIDE2NSwgICAxNjYsCi0gICAgIDI0OSwgICAgNDQsICAgIDgx
LCAgIDI1MCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgMjMsICAgIDI0LCAgICAzMiwKLSAgICAg
IDMzLCAgIDE1OSwgICAyOTUsICAgIDQ0LCAgICA1NCwgICAxNzgsICAgMjk1LCAgIDE3MywgICAx
NjAsICAgMTg1LAotICAgICAxODYsICAgIDU2LCAgIDE5OSwgICAxNzQsICAgIDU4LCAgICA0NCwg
ICAxNDYsICAgMTYzLCAgIDIyOCwgICAgIDYsCi0gICAgICAgNywgICAgODQsICAgIDQ0LCAgICA4
NSwgICAyMTcsICAgIDU3LCAgIDIyMywgICAyNTYsICAgMTY4LCAgIDE2OSwKLSAgICAgIDg2LCAg
IDIzMiwgICAyMjYsICAgMTIxLCAgIC03NSwgICAxMjYsICAgIDY3LCAgIDEyNiwgICAyMTcsICAg
IDcwLAotICAgICAyNDYsICAgMjExLCAgIDIxMiwgICAyMTMsICAgIDU5LCAgICA2MCwgICAgNjEs
ICAgIDIzLCAgICAyNCwgICAxNzAsCi0gICAgIDIxNCwgICAyNzMsICAgMjU1LCAgIDE3MSwgICAy
MjAsICAgMTA4LCAgIDI5OCwgICAyMTcsICAgIDc0LCAgIC0yNSwKLSAgICAgMjE1LCAgICA3MCwg
ICAyMTcsICAgMTc5LCAgIDE4MCwgICAgNDQsICAgIDc2LCAgICA0NCwgICAyMzcsICAgMjM4LAot
ICAgICAyMzksICAgMjQwLCAgICA0OSwgICAyNTksICAgMjYwLCAgIDIzMywgICAyMzQsICAgMTA4
LCAgIDEwOCwgICAxMDgsCi0gICAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAg
MTA4LCAgIDEwOCwgICAxMDgsICAgMjYxLCAgIDMwMiwKLSAgICAgIDgzLCAgIDE0NiwgICAgIDIs
ICAgICAzLCAgICAgNCwgICAxMjEsICAgIDU5LCAgICA2MCwgICAgNjEsICAgMTg3LAotICAgICAx
ODgsICAgMjE3LCAgIDI2NCwgICAxMjQsICAgMTI2LCAgIDI3NCwgICAyMzUsICAgMjM2LCAgIDI0
MSwgICAyNDIsCi0gICAgIDE1NiwgICAtMjYsICAgMTg5LCAgIDE3MiwgICAxOTUsICAgMjY1LCAg
IDE3NywgICAxMDgsICAgMTkwLCAgIDIwMCwKLSAgICAgMjc0LCAgIDI3OSwgICAxMjEsICAgMTkz
LCAgIDIwMywgICAyMDEsICAgMjA0LCAgIDIwOCwgICAyMDUsICAgMjkwLAotICAgICAyMTcsICAt
MTE2LCAgIDIyMSwgICAyMDksICAgIDQ0LCAgIDIyNSwgICAyNDgsICAtMTY0LCAgIDI2OCwgICAy
OTksCi0gICAgICA1OCwgICAgIDIsICAgICAzLCAgICAgNCwgICAxMDgsICAgICA2LCAgICAgNywg
ICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAgMTQ2LCAgIDE2MywgICAyNjIsICAgMjYzLCAgIC0y
NywgICAyNjcsICAgMjc4LCAgIDI4MSwgICAgMTEsICAgIDEyLAotICAgICAgMTMsICAgIDE0LCAg
ICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCi0g
ICAgIDI4MCwgICAyODcsICAgMjg4LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAyODks
ICAgIDI3LCAgICAyOCwKLSAgICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAg
ODksICAgIDkwLCAgICA5MSwgICAyOTEsICAgMjkyLAotICAgICAgOTIsICAgIDkzLCAgIDI5Mywg
ICAxNDYsICAgMTQ2LCAgIDI5NCwgICAyMzEsICAgMTQ2LCAgIDE0NiwgICAzMDMsCi0gICAgIDI0
NCwgICAyNDMsICAgMTU3LCAgICA3OCwgICAyNDUsICAgIDgyLCAgIDE1OCwgICAgNTEsICAgMTk0
LCAgICA5NCwKLSAgICAgMjcwLCAgIDI2NiwgICAxNDYsICAgMjU4LCAgIDI3MSwgICAzMDAsICAg
MjgyLCAgICA3MiwgICAgIDAsICAgICAwLAotICAgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0NiwgICAgIDAsCi0gICAgICAgMCwgICAg
IDAsICAgMTQ2LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAg
NywKLSAgICAgICA4LCAgICAgOSwgICAgMTAsICAgMTI5LCAgIDEzMCwgICAxMzEsICAgICAwLCAg
IDEzMiwgICAxMzMsICAgMTM0LAotICAgICAxMzUsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0
LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAg
IDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAg
ICAgMTM2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwg
ICAgODksICAgIDkwLAotICAgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICA0NCwgICAgNTUsICAgMTY1LCAg
IDE2NCwgICAxNjksICAgIDgwLCAgIDIyNiwgICAxMjMsICAgMjIyLCAgIDIwMCwKKyAgICAgIDcx
LCAgICAzMiwgICAgMzMsICAgMjcyLCAgIDE5MywgICAgNzAsICAgMjg4LCAgICA0OSwgICAxODUs
ICAgMTg2LAorICAgICAgNTYsICAgMTc4LCAgIDEyMywgICAgODgsICAgIDcyLCAgICA1MCwgICAg
NTIsICAgIDUzLCAgIDE3NSwgICAyNzgsCisgICAgICA4OSwgICAyMjgsICAgIDU4LCAgICA3Niwg
ICAxNzYsICAgIDg0LCAgIDMwNCwgICAyMTksICAgMTcwLCAgIDE3MSwKKyAgICAgIDQ0LCAgICA2
NiwgICAgNDQsICAgIDg2LCAgIDI3OCwgICAyMDksICAgIDQ0LCAgIDEyNywgICAyOTgsICAgMTk0
LAorICAgICAgNTksICAgIDQ0LCAgIDI5OCwgICAxODcsICAgMTg4LCAgICA4NCwgICAgNTQsICAg
IDMyLCAgICAzMywgICAxNzIsCisgICAgIDE1OCwgICAxNjEsICAgIDczLCAgIDE3MywgICAgNjYs
ICAgIDQ0LCAgIDI3NiwgICAzMDEsICAgMTYyLCAgICA2OSwKKyAgICAgIDUzLCAgICA2NywgICAy
MTksICAgMjE5LCAgICA2OCwgICAxNjUsICAgMjI1LCAgICA0NCwgICAgNjAsICAgMTQ4LAorICAg
ICAyMzAsICAgIDc4LCAgIDIwMCwgICAgIDYsICAgICA3LCAgICA0NCwgICAxODMsICAgMjE5LCAg
IDE4NCwgICAyMzUsCisgICAgIDIyMCwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgMTIz
LCAgICAgNiwgICAgIDcsICAgMTI3LCAgICA0OSwKKyAgICAgMTI3LCAgIDI1MSwgICAyNDksICAg
MjE5LCAgIDI1MiwgICAxMTAsICAgMjU5LCAgICA4NywgICAgNjEsICAgIDYyLAorICAgICAgNjMs
ICAgIDIzLCAgICAyNCwgICAtMjcsICAgMjU4LCAgICA3MywgICAyMjIsICAgICAyLCAgICAgMywg
ICAgIDQsCisgICAgIDExMCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgMjMsICAgIDI0LCAgIDE2
NywgICAxNjgsICAgIDQ0LCAgICA3OSwKKyAgICAgIDQ0LCAgIDI2MiwgICAyNjMsICAgMjEzLCAg
IDIxNCwgICAyMTUsICAgIDUyLCAgICA1MywgICAyNjQsICAgMTgxLAorICAgICAxODIsICAgMzA1
LCAgIDIxNiwgICAxODAsICAgMTI2LCAgIDE4OSwgICAxOTAsICAgLTc2LCAgIC0yOCwgICAyMzMs
CisgICAgIDIzOCwgICAyMzksICAgMjE3LCAgIDE0OCwgICAyMTksICAgMjY3LCAgIDE3NCwgICAx
MjMsICAgMjQwLCAgIDI0MSwKKyAgICAgMjQyLCAgIDI0MywgICAxOTEsICAgMjQ0LCAgIDI0NSwg
ICAyNjgsICAgMTc5LCAgIDE5MiwgICAyNzcsICAgMjA1LAorICAgICAxOTUsICAgMTI3LCAgIDIw
NiwgICAyMDIsICAgMjAzLCAgIDIwNywgICAyMTAsICAgMjI3LCAgIDIxMSwgICAyMjMsCisgICAg
IDI4MiwgIC0xMTcsICAgMjUwLCAgIDI3NywgICAxMjMsICAgMjcwLCAgLTE2NSwgIC0xMzgsICAg
MjY1LCAgIDI2NiwKKyAgICAgMjE5LCAgIDI4MSwgICAyOTMsICAgMTEwLCAgIDI4MywgICAyODQs
ICAgMjk2LCAgIDI5MSwgICAyOTIsICAgMjk0LAorICAgICAyOTUsICAgIDQ0LCAgIDMwMiwgICAy
NzEsICAgMzA2LCAgIDI0NiwgICAyOTcsICAgMjM0LCAgIDI0NywgICAgODEsCisgICAgIDE2NSwg
ICAyNDgsICAgMTQ4LCAgIDIzNiwgICAyMzcsICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTEwLCAg
IDExMCwKKyAgICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTU5
LCAgICA4NSwgICAxNjAsICAgIDUxLAorICAgICAyMDEsICAgMzAzLCAgIDI3MywgICAyNjEsICAg
MjY5LCAgIDI3NCwgICAyODUsICAgIDc1LCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK
LSAgICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM3LCAgIDEz
OCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgIDEzOSwgICAgOTUsICAgIDk2LCAg
ICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsCi0gICAgICAgNCwgICAgIDUsICAgICA2
LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMjksICAgMTMwLCAgIDEzMSwKLSAgICAg
ICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LCAgIDEzNSwgICAgMTEsICAgIDEyLCAgICAxMywgICAg
MTQsICAgIDE1LAotICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwgICAxMzYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywKLSAgICAgIDMxLCAg
ICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAg
ICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjkwLCAgIDExMCwgICAxNDgs
ICAgMTQ4LCAgICAgMCwgICAgIDAsCisgICAgIDE0OCwgICAxNDgsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgIDExMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAsICAg
MTQ4LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKKyAgICAgICA1LCAgICAgNiwgICAgIDcs
ICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMxLCAgIDEzMiwgICAxMzMsICAgICAwLAorICAgICAx
MzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAx
NSwgICAgMTYsCisgICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAyMywKKyAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM4
LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLAorICAgICAgOTEsICAg
IDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAg
IDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAxMzcsICAgMjE5LCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsCi0g
ICAgICA5NywgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcs
ICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgIDEyOSwgICAxMzAsICAgMTMxLCAgICAgMCwgICAx
MzIsICAgMTMzLCAgIDEzNCwgICAxMzUsICAgIDExLAotICAgICAgMTIsICAgIDEzLCAgICAxNCwg
ICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsCi0gICAgICAy
MiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM2
LCAgICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAg
IDg5LCAgICA5MCwgICAgOTEsICAgICAwLAotICAgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0
MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgOTcsICAgIDk4LCAg
ICAgMCwgICAgOTksICAgICAxLAorICAgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2
LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEsCisgICAgIDEzMiwgICAxMzMsICAg
ICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAgMTEsICAgIDEyLCAgICAxMywKKyAg
ICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjksCisgICAgICAzMCwgICAgOTAsICAgIDMxLCAg
ICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwKKyAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDk2LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAxMzksICAgMjIxLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5OCwKKyAgICAgICAwLCAgICA5
OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4
LAorICAgICAgIDksICAgIDEwLCAgIDEzMSwgICAxMzIsICAgMTMzLCAgICAgMCwgICAxMzQsICAg
MTM1LCAgIDEzNiwgICAxMzcsCisgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUs
ICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM4LAorICAg
ICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAg
ICA5MywgICAgIDAsCisgICAgICAgMCwgICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgOTQs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCi0gICAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAg
MiwgICAgIDMsICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAg
ICAxMCwgICAxMjksICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLAotICAgICAxMzMsICAgMTM0
LCAgIDEzNSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcs
CisgICAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKKyAgICAgMTQxLCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwg
ICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LAorICAgICAgIDYsICAgICA3LCAgICAg
OCwgICAgIDksICAgIDEwLCAgIDEzMSwgICAxMzIsICAgMTMzLCAgICAgMCwgICAxMzQsCisgICAg
IDEzNSwgICAxMzYsICAgMTM3LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAg
IDE2LCAgICAxNywKICAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LAotICAgICAgMjUsICAgIDI2LCAgIDEzNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsCi0gICAgICA4OSwg
ICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAg
ICAgMCwKKyAgICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICA5MCwgICAgMzEsICAgIDkxLAorICAgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAg
IDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK
LSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgNzYsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAg
ICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDEsCi0gICAgICAgMiwgICAgIDMsICAgICA0
LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEyOSwKLSAgICAg
MTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLCAgIDEzMywgICAxMzQsICAgMTM1LCAgICAxMSwgICAg
MTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAg
ICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAg
IDkyLAotICAgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LAot
ICAgICAgOTYsICAgICAwLCAgICA5NywgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1
LCAgICAgNiwgICAgIDcsCi0gICAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LAotICAgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsCi0gICAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAg
ICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwKLSAgICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDky
LCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDc5LCAgICAgMCwgICAg
IDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwg
ICAgOTksICAgICAxLCAgICAgMiwKKyAgICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAg
NywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEsICAgMTMyLAorICAgICAxMzMsICAgICAwLCAg
IDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCisg
ICAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAx
MzgsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAorICAgICAgOTAsICAgIDMxLCAgICA5MSwg
ICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsCisgICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDk2LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5OCwgICAgIDAsCisgICAgICA5OSwgICAg
IDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAg
OSwKKyAgICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDExLAorICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2
LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsCisgICAgICAyMiwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywKKyAg
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5Mywg
ICAgIDAsICAgICAwLAorICAgICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwKKyAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMTQxLAorICAgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgIDYwLCAgICAgMiwgICAg
IDMsICAgICA0LCAgICAgMCwgICAgIDYsCisgICAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAg
MCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4
LAorICAgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDIzLCAgICAyNCwgICAgMjUsCisgICAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5MiwKKyAgICAgIDkzLCAgICAgMCwgICAg
IDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAxMzksICAg
IDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAxMSwgICAgMTIsICAgIDEzLAorICAgICAgIDAs
ICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsICAgICAwLCAgICA5
OSwgICAgMTEsICAgIDEyLCAgICAxMywKICAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAogICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjks
Ci0gICAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAg
IDAsICAgICAwLCAgICA5MiwKLSAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsCi0gICAg
ICAgMCwgICAxNjEsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NSwKLSAgICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAotICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAyNSwg
ICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAg
ICA4OCwKLSAgICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkz
LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAg
IDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsCiAgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK
LSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDgsICAgICA5LAotICAgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjA2LCAg
ICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgMTEsCi0gICAgICAxMiwgICAgMTMsICAgIDE0
LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwKLSAgICAg
IDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAg
IDAsICAgIDI3LAotICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwg
ICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsCi0gICAgICAgMCwgICAgOTIsICAgIDkzLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAg
ICAwLAorICAgICAxNjMsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICA5NywgICAgOTgsCisgICAgICAgMCwgICAgOTksICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LAor
ICAgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMx
LCAgICA5MSwgICAgOTIsCisgICAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAg
OTQsICAgICAwLCAgICAgMCwgICAyMjIsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAg
MCwgICAgIDAsCi0gICAgICAgMCwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLCAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKLSAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAg
ICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
ODcsCi0gICAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwg
ICAgOTIsICAgIDkzLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAg
IDIwOCwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsCisg
ICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
ICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAg
MjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LAorICAgICAgMzAsICAgIDkwLCAgICAzMSwg
ICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsCiAgICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDk0LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk1LCAgICA5NiwgICAgIDAsCi0gICAgICA5NywgICAg
MTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAx
OSwKLSAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMjUsICAgMTc1LAotICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsCi0gICAgICA5MSwgICAgIDAsICAg
ICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5Niwg
ICAgIDAsICAgICAwLAorICAgICAyMjQsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsCisgICAgICAgMCwgICAgOTksICAgIDExLCAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDI1LAorICAgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
OTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwg
ICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAotICAgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDgsCi0gICAgICAgOSwgICAgMTAsICAgICAwLCAgICA5NSwgICAgOTYs
ICAgICAwLCAgICA5NywgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLAotICAg
ICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAg
ICAyNiwgICAgIDAsCi0gICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMx
LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDgsICAg
ICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwg
ICAgMTcsCi0gICAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgIDE5
OCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAwLAotICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzEs
Ci0gICAgICAgMCwgICAgIDAsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAg
IDYsICAgICA3LCAgICAgOCwKLSAgICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjQ3LAotICAgICAgMTEsICAgIDEyLCAgICAx
MywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCi0gICAg
ICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAg
IDI2LCAgICAgMCwKLSAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEs
ICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LAorICAgICAgIDAsICAgICAwLCAgICA5NiwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAg
ICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIw
LCAgICAyMSwgICAgMjIsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDI1LCAgIDE3NywgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksCisgICAgICAzMCwgICAgOTAs
ICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwK
KyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDk2LCAgICAgMiwgICAgIDMsCisgICAgICAgNCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgIDk3LCAgICA5OCwKKyAgICAg
ICAwLCAgICA5OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAg
MTQsICAgIDE1LAorICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgIDI1LCAgICAy
NiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwKKyAgICAgIDMxLCAg
ICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAg
IDEwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAxMSwgICAgMTIsCisgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAg
MTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKKyAgICAgMTk5LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LAor
ICAgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA3NCwgICAgIDAsICAg
ICAwLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKICAgICAgICA1LCAgICAgNiwgICAgIDcs
ICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAx
NSwgICAgMTYsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDI1MywgICAgMTEsICAgIDEyLCAg
ICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwKICAgICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIw
LCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLAogICAgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAg
MzEsCi0gICAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwg
ICAgIDksICAgIDEwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAg
ICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCi0g
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcs
ICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAgMCwgICAgMzEsICAgICA4LCAgICAgOSwgICAg
MTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCi0gICAgICAx
NywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKLSAgICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAyMjksICAgIDMxLAotICAgICAgIDgsICAgICA5LCAgICAxMCwgICAyMzAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMSwgICAg
IDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMTEsICAgIDEyLAorICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwKKyAg
ICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwg
ICAgIDAsICAgICAwLAorICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgMTEsICAgIDEyLCAg
ICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKICAgICAgIDIw
LCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUs
ICAgIDI2LAotICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAg
MzEKKyAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAg
ICAgOCwgICAgIDksICAgIDEwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsCisgICAgICAxMywgICAgMTQsICAg
IDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKKyAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwg
ICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgIDIzMSwgICAyMzIsICAgICA4LCAgICAg
OSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKKyAgICAgIDE2
LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAs
ICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwgICAgIDAsCisgICAgICAzMQogfTsKIAorI2RlZmluZSB5eXBhY3Rf
dmFsdWVfaXNfZGVmYXVsdChZeXN0YXRlKSBcCisgICghISgoWXlzdGF0ZSkgPT0gKC0yNjEpKSkK
KworI2RlZmluZSB5eXRhYmxlX3ZhbHVlX2lzX2Vycm9yKFl5dGFibGVfdmFsdWUpIFwKKyAgWVlJ
RCAoMCkKKwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWNoZWNrW10gPQogewotICAgICAg
IDAsICAgIDU1LCAgICA5NCwgICAgODYsICAgIDcwLCAgIDEyNywgICAgNDUsICAgMTUxLCAgIDI3
MywgICAgNjAsCi0gICAgICA0MCwgICAgMzYsICAgIDg1LCAgICAgMCwgICAgIDAsICAgMTYwLCAg
IDI1NywgICAgMzcsICAgIDc5LCAgICA4NSwKLSAgICAgIDg0LCAgICA4MiwgICAgODYsICAgMTA2
LCAgICAgMywgICAgNDUsICAgIDcwLCAgIDI1MywgICAyOTMsICAgICA4LAotICAgICAgIDksICAg
MjcyLCAgICA1NywgICAgNjMsICAgIDU1LCAgICA1NiwgICAgNzksICAgIDc2LCAgICA0MiwgICAg
ODIsCi0gICAgICA0MCwgICAgODUsICAgIDQyLCAgIDEzNSwgICAgOTUsICAgIDc1LCAgICA0Niwg
ICAgNTEsICAgIDkyLCAgICA5MywKLSAgICAgIDc5LCAgICA1MSwgICAgODIsICAgIDgyLCAgICAz
MywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDQ2LAotICAgICAgNDYsICAgIDc0LCAg
IDI4OCwgICAgNjMsICAgIDgyLCAgIDEwOSwgICAyOTIsICAgIDczLCAgICA4MSwgICAgOTAsCi0g
ICAgICA5MSwgICAgNzMsICAgMTk0LCAgICA3OSwgICAgIDMsICAgIDc1LCAgICA3NiwgICAxNjAs
ICAgMTcwLCAgICAgOCwKLSAgICAgICA5LCAgICA3MiwgICAgODIsICAgIDc0LCAgICA3OSwgICAg
NzksICAgMTU5LCAgICA4MiwgICAgNTMsICAgIDU0LAotICAgICAgODEsICAgMTc0LCAgICA3Mywg
ICAxNTksICAgIDczLCAgIDEyNSwgICAgNDUsICAgMTI3LCAgICA3OSwgICAgNzQsCi0gICAgIDE5
MiwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3
LCAgICA3NCwKLSAgICAgIDcxLCAgICA3MywgICAyMDQsICAgIDc4LCAgIDI1OCwgICAxNTksICAg
IDczLCAgICA3OSwgICAgNzYsICAgIDcyLAotICAgICAgODEsICAgIDc0LCAgICA3OSwgICAgODcs
ICAgIDg4LCAgIDEyNSwgICAgNzYsICAgMTI3LCAgIDE4MywgICAxODQsCi0gICAgIDE4NSwgICAx
ODYsICAgIDM3LCAgIDIxNiwgICAyMTcsICAgMTc5LCAgIDE4MCwgICAxODEsICAgMTgyLCAgIDE4
MywKLSAgICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LCAgIDE4OCwgICAxODksICAgMTkwLCAg
IDE5MSwgICAyMjEsICAgMjk0LAotICAgICAgNDUsICAgMTUxLCAgICAgNCwgICAgIDUsICAgICA2
LCAgIDIyMSwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgNTcsCi0gICAgICA1OCwgICAgNzksICAg
IDgwLCAgICA4MiwgICAxOTQsICAgMjU3LCAgIDE4MSwgICAxODIsICAgMTg3LCAgIDE4OCwKLSAg
ICAgIDQ1LCAgICA3MiwgICAgNTksICAgIDczLCAgICA0NSwgICAyNDgsICAgIDcyLCAgIDIyMSwg
ICAgNjEsICAgIDgyLAotICAgICAyNzIsICAgMjY0LCAgIDI0OCwgICAgNzUsICAgIDcyLCAgICA4
MiwgICAgNzIsICAgIDcyLCAgICA4MiwgICAyODEsCi0gICAgICA3OSwgICAgNzIsICAgIDc0LCAg
ICA3NywgICAxOTQsICAgIDc1LCAgICA3NCwgICAgNzYsICAgMjUyLCAgIDI5MSwKLSAgICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LCAgIDI0OCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEs
ICAgIDEyLAotICAgICAyMTAsICAgMjk0LCAgICA3NSwgICAgNzUsICAgIDcyLCAgICA0MCwgICAg
NzUsICAgIDcyLCAgICAyMSwgICAgMjIsCi0gICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKLSAgICAgIDc1LCAgICA0
NSwgICAgNzMsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA3NywgICAgNDEsICAgIDQy
LAotICAgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAg
IDUwLCAgICA4MiwgICAgNzMsCi0gICAgICA1MywgICAgNTQsICAgIDE2LCAgIDI1MywgICAyNTQs
ICAgIDgxLCAgIDE3MSwgICAyNTcsICAgMjU4LCAgICA4MiwKLSAgICAgMTkwLCAgIDE4OSwgICAg
ODIsICAgIDU3LCAgIDE5MSwgICAgNjQsICAgIDgyLCAgICAgNSwgICAxMjUsICAgIDcyLAotICAg
ICAyNTQsICAgMjQ5LCAgIDI3MiwgICAyMTAsICAgMjU0LCAgIDI5MiwgICAyNzIsICAgIDQ2LCAg
ICAtMSwgICAgLTEsCi0gICAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgMjg4LCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAyOTIsICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LAotICAgICAgMTAs
ICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAgICAxOCwg
ICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LAotICAgICAgNDAsICAgIDQx
LCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDks
Ci0gICAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgICAwLCAgICAyNSwgICAgODksICAgIDg4LCAgICA5Niwg
ICAgNTcsICAgMTYyLCAgICA3MywgICAxNTMsICAgMTI4LAorICAgICAgNDAsICAgICAwLCAgICAg
MCwgICAyNTYsICAgIDU5LCAgICAzOSwgICAyNzYsICAgIDM3LCAgICA1NCwgICAgNTUsCisgICAg
ICA4MSwgICAxMDgsICAgIDg4LCAgICA3MywgICAgNDIsICAgIDQ1LCAgICA0NSwgICAgNDYsICAg
IDcyLCAgIDI2MCwKKyAgICAgIDgwLCAgICA3MiwgICAgNzIsICAgIDUxLCAgICA3OCwgICAgNjUs
ICAgMjk2LCAgICA3OCwgICAgNTIsICAgIDUzLAorICAgICAgNDAsICAgIDM2LCAgICA0MiwgICAg
NjcsICAgMjc1LCAgIDEzNywgICAgNDYsICAgIDc3LCAgIDI5MSwgICAgOTQsCisgICAgICA3OCwg
ICAgNTEsICAgMjk1LCAgICA4OSwgICAgOTAsICAgIDg1LCAgICA3NSwgICAgNDYsICAgIDQ2LCAg
ICA3MywKKyAgICAgIDg0LCAgICA3MywgICAgNzMsICAgIDc3LCAgICA1OSwgICAgNjUsICAgIDcy
LCAgICA3MiwgICAgODAsICAgIDQ1LAorICAgICAgNDYsICAgIDc4LCAgICA3OCwgICAgNzgsICAg
IDgxLCAgIDE2MiwgICAxNjEsICAgIDc3LCAgICAgMywgICAgNzksCisgICAgIDE3MiwgICAgNzUs
ICAgMjAxLCAgICAgOCwgICAgIDksICAgIDg1LCAgICA4MywgICAgNzgsICAgIDg1LCAgIDE3NiwK
KyAgICAgIDgxLCAgICAgMywgICAgMzMsICAgIDM0LCAgICAzNSwgICAxNjEsICAgICA4LCAgICAg
OSwgICAxMjgsICAgIDM3LAorICAgICAxMzAsICAgIDc4LCAgIDE5NCwgICAgNzgsICAgIDgxLCAg
ICA3MywgICAgODEsICAgIDcxLCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYsICAgIDM3
LCAgICA3MSwgICAyMDYsICAgIDczLCAgIDI2MSwgICAgIDQsICAgICA1LCAgICAgNiwKKyAgICAg
IDg4LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDk0LCAgICA5NSwgICAx
MjgsICAgIDc1LAorICAgICAxMzAsICAgMjE4LCAgIDIxOSwgICAgNjEsICAgIDYyLCAgICA2Mywg
ICAgNDUsICAgIDQ2LCAgIDIyMywgICAgODYsCisgICAgICA4NywgICAyOTcsICAgIDcwLCAgIDEx
MSwgICAgODEsICAgIDU2LCAgICA1NywgICAgNzIsICAgIDcxLCAgIDE3MywKKyAgICAgMTgzLCAg
IDE4NCwgICAgODAsICAgMTUzLCAgICA3OCwgICAgNzksICAgIDcyLCAgIDIyMywgICAxODUsICAg
MTg2LAorICAgICAxODcsICAgMTg4LCAgICA1OCwgICAxODksICAgMTkwLCAgIDI1MCwgICAgNzEs
ICAgIDYwLCAgIDI2MCwgICAgNzEsCisgICAgICA3NCwgICAyMDEsICAgIDcxLCAgICA4MSwgICAg
ODEsICAgIDgxLCAgICA3MSwgICAgNzQsICAgIDc2LCAgICA3MywKKyAgICAgMjY3LCAgICA3MSwg
ICAgNzMsICAgMjc1LCAgIDI1MCwgICAgNDAsICAgIDc1LCAgICA3MSwgICAgNzQsICAgIDc0LAor
ICAgICAgNzgsICAgIDc0LCAgIDI4NCwgICAxNjEsICAgIDc0LCAgICA3MSwgICAgMTYsICAgIDcy
LCAgICA3NiwgICAgODEsCisgICAgICA3MiwgICAyMDEsICAgMjk0LCAgIDI1NSwgICAgODEsICAg
MTkxLCAgICA4MCwgICAxNzMsICAgMTkyLCAgICA1OSwKKyAgICAgMjk3LCAgIDE5MywgICAyMTIs
ICAgMTgxLCAgIDE4MiwgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LAorICAgICAx
ODgsICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTkyLCAgIDE5MywgICAgODUsICAgIDY2LCAgICA4
NSwgICAgIDUsCisgICAgIDEzMCwgICAyOTUsICAgMjU3LCAgIDIxMiwgICAyNTEsICAgMjU3LCAg
IDI3NSwgICAgNDYsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAg
IC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIDc3LCAgICAtMSwgICAg
LTEsCi0gICAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4Niwg
ICAgIDMsICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgLTEsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsCi0g
ICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEs
ICAgIC0xLCAgICAtMSwKLSAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAg
NDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAotICAgICAgNDYsICAgIDQ3LCAgICA0OCwg
ICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsCisgICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyNzgsICAgMjIzLCAgIDI1NiwgICAyNTcsICAgIC0x
LCAgICAtMSwKKyAgICAgMjYwLCAgIDI2MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgIDI3NSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAg
LTEsICAgMjUwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwKKyAgICAgIC0xLCAgIDI5MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyOTUsICAgICAzLCAg
ICAgNCwgICAgIDUsICAgICA2LAorICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsCisgICAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKKyAg
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDM2LAorICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCisgICAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
NzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3NiwgICAgNzcsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwKLSAgICAgIDg2LCAgICAg
MywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDEx
LAotICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLAotICAg
ICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwgICAgLTEsCi0gICAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgIDc2LAorICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwg
ICAgIDMsCisgICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAorICAgICAgMjQsICAgIDI1
LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEs
CisgICAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAg
NDEsICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwg
ICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAorICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAg
IC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICA3NSwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLAorICAgICAgLTEsICAgIDg1LCAgICAgMywgICAg
IDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCisgICAgICAxMSwg
ICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3
LCAgICAyOCwgICAgMjksICAgIDMwLAorICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCisgICAgICA0MSwgICAgNDIs
ICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwK
KyAgICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3MiwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAg
IDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgIDMsICAgICA0LCAgICAgNSwgICAg
IDYsICAgICA3LAorICAgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc1LCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA4MSwgICAgODIsICAgIDgzLCAgICAt
MSwgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKICAgICAgICA4LCAg
ICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsICAg
IDE3LAogICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsCiAgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAg
MzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywKICAgICAgIDM4LCAgICAzOSwg
ICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAot
ICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0x
LCAgICAtMSwgICAgLTEsCisgICAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAg
IDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3
NiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAg
ICA4NCwgICAgLTEsICAgIDg2LCAgICAgMywKLSAgICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3
LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAg
IDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAg
MjMsCi0gICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwg
ICAgMzEsICAgIDMyLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAz
OCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLAotICAgICAgNDQsICAgIDQ1LCAg
ICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsCi0g
ICAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsCi0gICAgICA4
NCwgICAgLTEsICAgIDg2LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4
LCAgICAgOSwKLSAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMs
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAg
MzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAz
OSwKLSAgICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAg
ICA0NywgICAgNDgsICAgIDQ5LAotICAgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgIC0xLCAgICAtMSwKKyAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwg
ICAgIDMsICAgICA0LAorICAgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgLTEsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwKKyAgICAgIDI1
LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEs
ICAgIC0xLAorICAgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAg
NDEsICAgIDQyLCAgICA0MywgICAgNDQsCisgICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwg
ICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLCAgICAtMSwKKyAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAg
IC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwKKyAgICAgIDg1LCAgICAgMywgICAg
IDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLAorICAg
ICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMjEsCisgICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3
LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKKyAgICAgIDMyLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLAorICAgICAgNDIs
ICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwg
ICAgLTEsCisgICAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLAorICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEs
CisgICAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAg
IDYsICAgIC0xLCAgICAgOCwKKyAgICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAy
MSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsCisgICAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAg
IDM3LCAgICAzOCwKKyAgICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQs
ICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAorICAgICAgNDksICAgIC0xLCAgICAtMSwgICAg
NTIsICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEw
LCAgICAxMSwgICAgMTIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAg
IDg0LCAgICAtMSwgICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsCisgICAgICAtMSwgICAgLTEs
ICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwK
KyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAy
MSwgICAgMjIsICAgIDIzLAogICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKLSAgICAg
IDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAg
LTEsICAgIDUzLAotICAgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwKLSAgICAgIC0xLCAg
ICA3NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDgzLAotICAgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAg
MzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDM4LCAgICAzOSwg
ICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAot
ICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0x
LCAgICAtMSwgICAgLTEsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAg
IDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKICAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAx
MCwgICAgMTEsCi0gICAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAg
ICA4NCwgICAgLTEsICAgIDg2LCAgICAyMSwKLSAgICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1
LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLAotICAgICAgMzIsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAg
NDEsCi0gICAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwg
ICAgNDksICAgIDUwLCAgICAtMSwKLSAgICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsCisg
ICAgICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsCisgICAgICAz
OSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3
LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3MiwgICAg
LTEsICAgIC0xLCAgICA3NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAt
MSwKLSAgICAgIC0xLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAg
ICAyMywgICAgMjQsICAgIDI1LAotICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAg
IDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKLSAg
ICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1Mywg
ICAgNTQsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDgxLCAg
ICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0
LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAg
LTEsICAgIDQxLCAgICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0Nywg
ICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKICAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIsICAg
IC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgODMsICAgIDg0LCAgICAtMSwKLSAgICAgIDg2LCAgICAyMSwgICAg
MjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAotICAg
ICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAzOCwgICAgMzksCi0gICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1
LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwKLSAgICAgIDUwLCAgICAtMSwgICAgLTEsICAg
IDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwg
ICAgLTEsCisgICAgICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAg
ICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMw
LCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgs
CisgICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAg
NDYsICAgIDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1Mywg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAg
ICAtMSwgICAgLTEsICAgIDcyLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAxMCwKLSAgICAgIDExLCAgICAxMiwgICAgLTEsICAgIDgzLCAgICA4NCwgICAgLTEs
ICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgMjEsICAgIDIyLCAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwg
ICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAg
ICAtMSwKLSAgICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgICA0
LCAgICAgNSwgICAgIDYsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAg
IDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywK
LSAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIDc3LCAgICAt
MSwgICAgLTEsICAgIC0xLAotICAgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAg
ICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMCwKLSAgICAg
IC0xLCAgICAtMSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAg
IDksICAgIDEwLAotICAgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzcsCi0gICAgICAyMSwgICAgMjIsICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKLSAgICAgIDMxLCAg
ICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAg
IC0xLAotICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgIDMs
ICAgICA0LCAgICAgNSwgICAgIDYsCisgICAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAyMSwgICAgMjIsICAgIDIzLAor
ICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMx
LCAgICAzMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAg
IDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYs
ICAgIDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgNzEsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgODIsICAgIDgzLAorICAgICAgLTEsICAg
IDg1LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAg
MjUsCisgICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAt
MSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLAorICAgICAgNDYsICAgICA0LCAg
ICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAgMTIsCisg
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgNzYsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsCisgICAgICA0
MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAwLCAgICAtMSwgICAgLTEsICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LAogICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAs
ICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAgICAyMSwgICAgMjIsICAgIDIzLCAg
ICAyNCwgICAgMjUsICAgIDI2LAogICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMx
LCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsCiAgICAgICAzNywgICAgMzgsICAg
IDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwKLSAg
ICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwg
ICAgMTIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAgIDI2LCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKLSAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIs
ICAgIDQzLAotICAgICAgNDQsICAgIC0xLCAgICA0NiwgICAgMTAsICAgIDExLCAgICAxMiwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LAotICAgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAg
IDQ0LCAgICA0NSwgICAgNDYsCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICA1MCwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgICAzLCAgICAgNCwgICAg
IDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAyMSwgICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAgICAgNDMs
ICAgIDQ0LCAgICAtMSwgICAgNDYsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAg
ICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAogICAgICAgMzAsICAgIDMx
LCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzks
Ci0gICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NgorICAg
ICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgIDEwLCAg
ICAxMSwgICAgMTIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAg
IDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwg
ICAgNDIsCisgICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgMTAsICAgIDExLCAgICAx
MiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYsICAgIDI3
LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEs
CisgICAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAg
NDMsICAgIDQ0LCAgICAtMSwKKyAgICAgIDQ2CiB9OwogCiAvKiBZWVNUT1NbU1RBVEUtTlVNXSAt
LSBUaGUgKGludGVybmFsIG51bWJlciBvZiB0aGUpIGFjY2Vzc2luZwpAQCAtMTMwOCwzMiArMTI5
MSwzMiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KICAgICAgIDMwLCAg
ICAzMSwgICAgMzIsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MSwgICAgNDIsICAg
IDQzLAogICAgICAgNDQsICAgIDQ2LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOSwgICAxMzAs
ICAgMTM1LCAgIDEzNiwgICAxMzcsCiAgICAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MSwgICAx
NDIsICAgMTQzLCAgIDE3NSwgICAxNzYsICAgMTc3LCAgICAzNywKLSAgICAgIDQ1LCAgIDE0MCwg
ICAgNDUsICAgIDc2LCAgICA4MiwgICAxNzgsICAgIDczLCAgICA3OSwgICAgIDMsICAgIDMzLAot
ICAgICAgMzQsICAgIDM1LCAgIDEzMiwgICAxMzMsICAgMTM4LCAgICA3OSwgICAgODIsICAgIDQ1
LCAgIDEzOSwgICAxNDEsCi0gICAgICA3NCwgICAgIDAsICAgMTc2LCAgIDE0MSwgICAgNzYsICAg
MTQ1LCAgICA3NiwgICAxNjEsICAgMTMyLCAgIDEzMSwKLSAgICAgMTM0LCAgIDEzOSwgICAxMzMs
ICAgIDQ1LCAgICA3MiwgICAgNzQsICAgIDgxLCAgICA0NSwgICAgNDcsICAgIDQ4LAotICAgICAg
NDksICAgIDUwLCAgICA1MywgICAgNTQsICAgIDcyLCAgICA4MywgICAgODQsICAgIDg2LCAgICA5
NywgICAgOTgsCi0gICAgICA5OSwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAg
IDEwNiwgICAxMDcsICAgMTA4LCAgIDEwOSwKLSAgICAgMTEwLCAgIDExMSwgICAxMTIsICAgMTEz
LCAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE5LAotICAgICAxMjAsICAg
MTIxLCAgIDEyNSwgICAxNDIsICAgIDgyLCAgIDE0NCwgICAxMzksICAgMTQ2LCAgIDE0NywgICAg
MTMsCi0gICAgICAxNCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICA0MCwg
ICAgNzYsICAgIDc3LCAgICA4MiwKLSAgICAgMTA4LCAgIDEyMSwgICAxMjIsICAgMTI0LCAgIDEy
NiwgICAxMjcsICAgMTQyLCAgIDE1MSwgICAxNTIsICAgMTUzLAotICAgICAxNTQsICAgMTYyLCAg
IDE2MywgICAxNjQsICAgMTY3LCAgIDE3NCwgICAgNDUsICAgMTMxLCAgIDEzNCwgICAgNzQsCi0g
ICAgICA4MSwgICAgNzUsICAgMTI1LCAgIDEyMiwgICAxNTAsICAgMTA4LCAgIDEwOCwgICAxMjQs
ICAgIDUzLCAgICA1NCwKLSAgICAgIDc0LCAgICA3OCwgICAgNzMsICAgIDczLCAgICA3OSwgICAg
MzksICAgMTIyLCAgICA3MiwgICAxMDgsICAgIDg3LAotICAgICAgODgsICAgIDg0LCAgICA4Niwg
ICAgNTUsICAgIDU2LCAgICA5MCwgICAgOTEsICAgIDU3LCAgICA1OCwgICAgNTksCi0gICAgICA2
MSwgICAgNjAsICAgIDk1LCAgICA3NSwgICAxNDYsICAgIDQ1LCAgIDE0OCwgICAxNDksICAgIDc3
LCAgIDE0NywKLSAgICAgIDgyLCAgICA4MiwgICAxNjksICAgIDcyLCAgICA3MiwgICAgODIsICAg
IDgyLCAgIDEyNCwgICAgNzIsICAgIDc3LAotICAgICAxNTUsICAgIDYyLCAgICA2MywgICAgNjQs
ICAgIDcxLCAgICA4MSwgICAxMjMsICAgIDc5LCAgICA4MiwgICAgNzcsCi0gICAgIDE1MiwgICAg
NzQsICAgIDc1LCAgIDEyNSwgICAxNTAsICAgIDc1LCAgICA3MywgICAxMDAsICAgMTI0LCAgICA0
NSwKLSAgICAgIDUwLCAgIDEwMywgICAxMjIsICAgMTA4LCAgIDEwOCwgICAxMTAsICAgMTEwLCAg
IDExMiwgICAxMTIsICAgMTEyLAotICAgICAxMTIsICAgMTEzLCAgIDExMywgICAxMTcsICAgMTE4
LCAgIDExOSwgICAxMjQsICAgIDc3LCAgICA3NCwgICAgNzksCi0gICAgICA4MiwgICAxNTgsICAg
MTU5LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4MiwgICAxNjgsICAgMTYyLCAgIDEyMiwKLSAg
ICAgMTIyLCAgIDEyNSwgICAgNzUsICAgIDc1LCAgICA4MCwgICAxMjUsICAgMTQ5LCAgICA0MCwg
ICAxNjEsICAgMTUzLAotICAgICAxNTEsICAgMTYzLCAgIDE3MSwgICAgNzMsICAgMTI0LCAgIDEz
NywgICAxNjYsICAgMTU2LCAgICA3NSwgICAxMjIsCi0gICAgICA3NSwgICAgNzIsICAgMTY2LCAg
IDE3MiwgICAxNzMsICAgMTU4LCAgIDE2NSwgICAgNDUsICAgIDczLCAgICA3NywKLSAgICAgMTI0
LCAgICA4MiwgICAgNzMsICAgIDE2LCAgICA4MSwgICAxNTMsICAgMTU3LCAgIDE2MSwgICAgNzMs
ICAgMTI0LAotICAgICAxNTcsICAgMTU4LCAgIDE1MCwgICAgODIKKyAgICAgIDQ1LCAgIDE0MCwg
ICAgNDUsICAgIDQ2LCAgICA3NSwgICAgOTYsICAgIDgxLCAgIDE3OCwgICAgNzIsICAgIDc4LAor
ICAgICAgIDMsICAgIDMzLCAgICAzNCwgICAgMzUsICAgMTMyLCAgIDEzMywgICAxMzgsICAgIDc4
LCAgICA4MSwgICAgNDUsCisgICAgICA5NiwgICAxMzksICAgMTQxLCAgICA3MywgICAgIDAsICAg
MTc2LCAgIDE0MSwgICAxNDUsICAgIDc1LCAgICA3NSwKKyAgICAgMTYxLCAgIDEzMiwgICAxMzEs
ICAgMTM0LCAgIDEzOSwgICAxMzMsICAgIDk2LCAgICA3MSwgICAgNzMsICAgIDgwLAorICAgICAg
NDUsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUyLCAgICA1MywgICAgNzEsICAgIDgyLCAgICA4
MywgICAgODUsCisgICAgICA5NywgICAgOTgsICAgIDk5LCAgIDEwMSwgICAxMDIsICAgMTAzLCAg
IDEwNCwgICAxMDUsICAgMTA2LCAgIDEwNywKKyAgICAgMTA4LCAgIDEwOSwgICAxMTAsICAgMTEx
LCAgIDExMiwgICAxMTMsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LAorICAgICAxMTgsICAg
MTE5LCAgIDEyMCwgICAxMjEsICAgMTI1LCAgIDE0MiwgICAgODEsICAgMTM5LCAgIDE0NiwgICAx
NDcsCisgICAgIDE0NCwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTcsICAgIDE4LCAgICAxOSwg
ICAgMjAsICAgIDQwLCAgICA3NSwKKyAgICAgIDc2LCAgICA4MSwgICAxMDgsICAgMTIxLCAgIDEy
MiwgICAxMjQsICAgMTI2LCAgIDEyNywgICAxNDIsICAgMTUxLAorICAgICAxNTIsICAgMTUzLCAg
IDE1NCwgICAxNjIsICAgMTYzLCAgIDE2NCwgICAxNjcsICAgMTc0LCAgICA5NiwgICAxMzEsCisg
ICAgIDEzNCwgICAgNzMsICAgIDgwLCAgICA3NCwgICAxMjUsICAgMTIyLCAgIDE1MCwgICAxMDgs
ICAgMTA4LCAgIDEyNCwKKyAgICAgIDUyLCAgICA1MywgICAgNzMsICAgIDc3LCAgICA3MiwgICAg
NzIsICAgIDc4LCAgICAzOSwgICAxMjIsICAgIDcxLAorICAgICAxMDgsICAgIDg2LCAgICA4Nywg
ICAgODMsICAgIDg1LCAgICA1NCwgICAgNTUsICAgIDg5LCAgICA5MCwgICAgNTYsCisgICAgICA1
NywgICAgNTgsICAgIDYwLCAgICA1OSwgICAgOTQsICAgIDc0LCAgICA5NiwgICAxNDgsICAgMTQ5
LCAgICA3NiwKKyAgICAgMTQ3LCAgIDE0NiwgICAgODEsICAgIDgxLCAgIDE2OSwgICAgNzEsICAg
IDcxLCAgICA4MSwgICAgODEsICAgMTI0LAorICAgICAgNzEsICAgIDc2LCAgIDE1NSwgICAgNjEs
ICAgIDYyLCAgICA2MywgICAgNzAsICAgIDgwLCAgIDEyMywgICAgNzgsCisgICAgICA4MSwgICAg
NzYsICAgMTUyLCAgICA3MywgICAgNzQsICAgMTI1LCAgIDE1MCwgICAgNzQsICAgIDcyLCAgIDEw
MCwKKyAgICAgMTI0LCAgICA0NSwgICAgNDYsICAgIDk2LCAgIDEwMywgICAxMjIsICAgMTA4LCAg
IDEwOCwgICAxMTAsICAgMTEwLAorICAgICAxMTIsICAgMTEyLCAgIDExMiwgICAxMTIsICAgMTEz
LCAgIDExMywgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjQsCisgICAgICA3MywgICAgNzgsICAg
IDgxLCAgICA3NiwgICAxNTgsICAgMTU5LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4MSwKKyAg
ICAgMTY4LCAgIDE2MiwgICAxMjIsICAgMTIyLCAgIDEyNSwgICAgNzQsICAgIDc0LCAgICA3OSwg
ICAxMjUsICAgMTQ5LAorICAgICAgNDAsICAgMTYxLCAgIDE1MywgICAxNTEsICAgMTYzLCAgIDE3
MSwgICAgNzIsICAgMTI0LCAgIDEzNywgICAxNjYsCisgICAgIDE1NiwgICAgNzQsICAgMTIyLCAg
ICA3NCwgICAgNzEsICAgMTY2LCAgIDE3MiwgICAxNzMsICAgMTU4LCAgIDE2NSwKKyAgICAgIDk2
LCAgICA3MiwgICAgNzYsICAgMTI0LCAgICA4MSwgICAgNzIsICAgIDE2LCAgICA4MCwgICAxNTMs
ICAgMTU3LAorICAgICAxNjEsICAgIDcyLCAgIDEyNCwgICAxNTcsICAgMTU4LCAgIDE1MCwgICAg
ODEKIH07CiAKICNkZWZpbmUgeXllcnJvawkJKHl5ZXJyc3RhdHVzID0gMCkKQEAgLTEzNDgsMzAg
KzEzMzEsMzkgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXN0b3NbXSA9CiAKIC8qIExp
a2UgWVlFUlJPUiBleGNlcHQgZG8gY2FsbCB5eWVycm9yLiAgVGhpcyByZW1haW5zIGhlcmUgdGVt
cG9yYXJpbHkKICAgIHRvIGVhc2UgdGhlIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBtZWFuaW5nIG9m
IFlZRVJST1IsIGZvciBHQ0MuCi0gICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFzIHN1cHBsYW50ZWQg
dmVyc2lvbiAxLCB0aGlzIGNhbiBnby4gICovCisgICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFzIHN1
cHBsYW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNhbiBnby4gIEhvd2V2ZXIsCisgICBZWUZBSUwgYXBw
ZWFycyB0byBiZSBpbiB1c2UuICBOZXZlcnRoZWxlc3MsIGl0IGlzIGZvcm1hbGx5IGRlcHJlY2F0
ZWQKKyAgIGluIEJpc29uIDIuNC4yJ3MgTkVXUyBlbnRyeSwgd2hlcmUgYSBwbGFuIHRvIHBoYXNl
IGl0IG91dCBpcworICAgZGlzY3Vzc2VkLiAgKi8KIAogI2RlZmluZSBZWUZBSUwJCWdvdG8geXll
cnJsYWIKKyNpZiBkZWZpbmVkIFlZRkFJTAorICAvKiBUaGlzIGlzIGhlcmUgdG8gc3VwcHJlc3Mg
d2FybmluZ3MgZnJvbSB0aGUgR0NDIGNwcCdzCisgICAgIC1XdW51c2VkLW1hY3Jvcy4gIE5vcm1h
bGx5IHdlIGRvbid0IHdvcnJ5IGFib3V0IHRoYXQgd2FybmluZywgYnV0CisgICAgIHNvbWUgdXNl
cnMgZG8sIGFuZCB3ZSB3YW50IHRvIG1ha2UgaXQgZWFzeSBmb3IgdXNlcnMgdG8gcmVtb3ZlCisg
ICAgIFlZRkFJTCB1c2VzLCB3aGljaCB3aWxsIHByb2R1Y2Ugd2FybmluZ3MgZnJvbSBCaXNvbiAy
LjUuICAqLworI2VuZGlmCiAKICNkZWZpbmUgWVlSRUNPVkVSSU5HKCkgICghIXl5ZXJyc3RhdHVz
KQogCi0jZGVmaW5lIFlZQkFDS1VQKFRva2VuLCBWYWx1ZSkJCQkJCVwKLWRvCQkJCQkJCQlcCi0g
IGlmICh5eWNoYXIgPT0gWVlFTVBUWSAmJiB5eWxlbiA9PSAxKQkJCQlcCi0gICAgewkJCQkJCQkJ
XAotICAgICAgeXljaGFyID0gKFRva2VuKTsJCQkJCQlcCi0gICAgICB5eWx2YWwgPSAoVmFsdWUp
OwkJCQkJCVwKLSAgICAgIHl5dG9rZW4gPSBZWVRSQU5TTEFURSAoeXljaGFyKTsJCQkJXAotICAg
ICAgWVlQT1BTVEFDSyAoMSk7CQkJCQkJXAotICAgICAgZ290byB5eWJhY2t1cDsJCQkJCQlcCi0g
ICAgfQkJCQkJCQkJXAotICBlbHNlCQkJCQkJCQlcCi0gICAgewkJCQkJCQkJXAotICAgICAgeXll
cnJvciAoY29udGV4dCwgWVlfKCJzeW50YXggZXJyb3I6IGNhbm5vdCBiYWNrIHVwIikpOyBcCisj
ZGVmaW5lIFlZQkFDS1VQKFRva2VuLCBWYWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgeXljaGFyID0gKFRv
a2VuKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHl5
bHZhbCA9IChWYWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICBZWVBPUFNUQUNLICh5eWxlbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgeXlzdGF0ZSA9ICp5eXNzcDsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGdvdG8geXliYWNrdXA7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBlbHNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvcjog
Y2Fubm90IGJhY2sgdXAiKSk7IFwKICAgICAgIFlZRVJST1I7CQkJCQkJCVwKICAgICB9CQkJCQkJ
CQlcCiB3aGlsZSAoWVlJRCAoMCkpCiAKLQorLyogRXJyb3IgdG9rZW4gbnVtYmVyICovCiAjZGVm
aW5lIFlZVEVSUk9SCTEKICNkZWZpbmUgWVlFUlJDT0RFCTI1NgogCkBAIC0xMzgwLDI3ICsxMzcy
LDI4IEBAIHdoaWxlIChZWUlEICgwKSkKICAgIElmIE4gaXMgMCwgdGhlbiBzZXQgQ1VSUkVOVCB0
byB0aGUgZW1wdHkgbG9jYXRpb24gd2hpY2ggZW5kcwogICAgdGhlIHByZXZpb3VzIHN5bWJvbDog
UkhTWzBdIChhbHdheXMgZGVmaW5lZCkuICAqLwogCi0jZGVmaW5lIFlZUkhTTE9DKFJocywgSykg
KChSaHMpW0tdKQogI2lmbmRlZiBZWUxMT0NfREVGQVVMVAotIyBkZWZpbmUgWVlMTE9DX0RFRkFV
TFQoQ3VycmVudCwgUmhzLCBOKQkJCQlcCi0gICAgZG8JCQkJCQkJCQlcCi0gICAgICBpZiAoWVlJ
RCAoTikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLQl7CQkJCQkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gWVlSSFNMT0MgKFJo
cywgMSkuZmlyc3RfbGluZTsJXAotCSAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IFlZUkhTTE9D
IChSaHMsIDEpLmZpcnN0X2NvbHVtbjsJXAotCSAgKEN1cnJlbnQpLmxhc3RfbGluZSAgICA9IFlZ
UkhTTE9DIChSaHMsIE4pLmxhc3RfbGluZTsJCVwKLQkgIChDdXJyZW50KS5sYXN0X2NvbHVtbiAg
PSBZWVJIU0xPQyAoUmhzLCBOKS5sYXN0X2NvbHVtbjsJXAotCX0JCQkJCQkJCVwKLSAgICAgIGVs
c2UJCQkJCQkJCVwKLQl7CQkJCQkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gKEN1
cnJlbnQpLmxhc3RfbGluZSAgID0JCVwKLQkgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9saW5l
OwkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0gKEN1cnJlbnQpLmxhc3RfY29sdW1u
ID0JCVwKLQkgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9jb2x1bW47CQkJCVwKLQl9CQkJCQkJ
CQlcCisjIGRlZmluZSBZWUxMT0NfREVGQVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBpZiAoWVlJRCAo
TikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgICA9IFlZ
UkhTTE9DIChSaHMsIDEpLmZpcnN0X2xpbmU7ICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQp
LmZpcnN0X2NvbHVtbiA9IFlZUkhTTE9DIChSaHMsIDEpLmZpcnN0X2NvbHVtbjsgICAgICBcCisg
ICAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSAgICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3Rf
bGluZTsgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmxhc3RfY29sdW1uICA9IFlZUkhT
TE9DIChSaHMsIE4pLmxhc3RfY29sdW1uOyAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0
X2xpbmUgICA9IChDdXJyZW50KS5sYXN0X2xpbmUgICA9ICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICBZWVJIU0xPQyAoUmhzLCAwKS5sYXN0X2xpbmU7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IChDdXJyZW50KS5s
YXN0X2NvbHVtbiA9ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBZWVJIU0xPQyAoUmhzLCAw
KS5sYXN0X2NvbHVtbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgd2hpbGUgKFlZSUQgKDApKQogI2VuZGlmCiAKKyNkZWZpbmUgWVlSSFNMT0Mo
UmhzLCBLKSAoKFJocylbS10pCisKIAogLyogWVlfTE9DQVRJT05fUFJJTlQgLS0gUHJpbnQgdGhl
IGxvY2F0aW9uIG9uIHRoZSBzdHJlYW0uCiAgICBUaGlzIG1hY3JvIHdhcyBub3QgbWFuZGF0ZWQg
b3JpZ2luYWxseTogZGVmaW5lIG9ubHkgaWYgd2Uga25vdwpAQCAtMTQwOCwxMCArMTQwMSw0NiBA
QCB3aGlsZSAoWVlJRCAoMCkpCiAKICNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKICMgaWYgZGVm
aW5lZCBZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFMCi0jICBkZWZpbmUg
WVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKQkJCVwKLSAgICAgZnByaW50ZiAoRmlsZSwgIiVk
LiVkLSVkLiVkIiwJCQlcCi0JICAgICAgKExvYykuZmlyc3RfbGluZSwgKExvYykuZmlyc3RfY29s
dW1uLAlcCi0JICAgICAgKExvYykubGFzdF9saW5lLCAgKExvYykubGFzdF9jb2x1bW4pCisKKy8q
IFByaW50ICpZWUxPQ1Agb24gWVlPLiAgUHJpdmF0ZSwgZG8gbm90IHJlbHkgb24gaXRzIGV4aXN0
ZW5jZS4gKi8KKworX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpCisjaWYgKGRlZmluZWQgX19T
VERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVz
cGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorc3RhdGljIHVuc2lnbmVkCit5eV9sb2NhdGlvbl9w
cmludF8gKEZJTEUgKnl5bywgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jcCkKKyNlbHNlCitz
dGF0aWMgdW5zaWduZWQKK3l5X2xvY2F0aW9uX3ByaW50XyAoeXlvLCB5eWxvY3ApCisgICAgRklM
RSAqeXlvOworICAgIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY3A7CisjZW5kaWYKK3sKKyAg
dW5zaWduZWQgcmVzID0gMDsKKyAgaW50IGVuZF9jb2wgPSAwICE9IHl5bG9jcC0+bGFzdF9jb2x1
bW4gPyB5eWxvY3AtPmxhc3RfY29sdW1uIC0gMSA6IDA7CisgIGlmICgwIDw9IHl5bG9jcC0+Zmly
c3RfbGluZSkKKyAgICB7CisgICAgICByZXMgKz0gZnByaW50ZiAoeXlvLCAiJWQiLCB5eWxvY3At
PmZpcnN0X2xpbmUpOworICAgICAgaWYgKDAgPD0geXlsb2NwLT5maXJzdF9jb2x1bW4pCisgICAg
ICAgIHJlcyArPSBmcHJpbnRmICh5eW8sICIuJWQiLCB5eWxvY3AtPmZpcnN0X2NvbHVtbik7Cisg
ICAgfQorICBpZiAoMCA8PSB5eWxvY3AtPmxhc3RfbGluZSkKKyAgICB7CisgICAgICBpZiAoeXls
b2NwLT5maXJzdF9saW5lIDwgeXlsb2NwLT5sYXN0X2xpbmUpCisgICAgICAgIHsKKyAgICAgICAg
ICByZXMgKz0gZnByaW50ZiAoeXlvLCAiLSVkIiwgeXlsb2NwLT5sYXN0X2xpbmUpOworICAgICAg
ICAgIGlmICgwIDw9IGVuZF9jb2wpCisgICAgICAgICAgICByZXMgKz0gZnByaW50ZiAoeXlvLCAi
LiVkIiwgZW5kX2NvbCk7CisgICAgICAgIH0KKyAgICAgIGVsc2UgaWYgKDAgPD0gZW5kX2NvbCAm
JiB5eWxvY3AtPmZpcnN0X2NvbHVtbiA8IGVuZF9jb2wpCisgICAgICAgIHJlcyArPSBmcHJpbnRm
ICh5eW8sICItJWQiLCBlbmRfY29sKTsKKyAgICB9CisgIHJldHVybiByZXM7CisgfQorCisjICBk
ZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKSAgICAgICAgICBcCisgIHl5X2xvY2F0
aW9uX3ByaW50XyAoRmlsZSwgJihMb2MpKQorCiAjIGVsc2UKICMgIGRlZmluZSBZWV9MT0NBVElP
Tl9QUklOVChGaWxlLCBMb2MpICgodm9pZCkgMCkKICMgZW5kaWYKQEAgLTE0MTksMTEgKzE0NDgs
MTAgQEAgd2hpbGUgKFlZSUQgKDApKQogCiAKIC8qIFlZTEVYIC0tIGNhbGxpbmcgYHl5bGV4JyB3
aXRoIHRoZSByaWdodCBhcmd1bWVudHMuICAqLwotCiAjaWZkZWYgWVlMRVhfUEFSQU0KLSMgZGVm
aW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsLCBZWUxFWF9QQVJBTSkKKyMgZGVmaW5lIFlZTEVYIHl5
bGV4ICgmeXlsdmFsLCAmeXlsbG9jLCBZWUxFWF9QQVJBTSkKICNlbHNlCi0jIGRlZmluZSBZWUxF
WCB5eWxleCAoJnl5bHZhbCkKKyMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsLCAmeXlsbG9j
KQogI2VuZGlmCiAKIC8qIEVuYWJsZSBkZWJ1Z2dpbmcgaWYgcmVxdWVzdGVkLiAgKi8KQEAgLTE0
NDYsNyArMTQ3NCw3IEBAIGRvIHsJCQkJCQkJCQkgIFwKICAgICB7CQkJCQkJCQkJICBcCiAgICAg
ICBZWUZQUklOVEYgKHN0ZGVyciwgIiVzICIsIFRpdGxlKTsJCQkJCSAgXAogICAgICAgeXlfc3lt
Ym9sX3ByaW50IChzdGRlcnIsCQkJCQkJICBcCi0JCSAgVHlwZSwgVmFsdWUsIGNvbnRleHQpOyBc
CisJCSAgVHlwZSwgVmFsdWUsIExvY2F0aW9uLCBjb250ZXh0KTsgXAogICAgICAgWVlGUFJJTlRG
IChzdGRlcnIsICJcbiIpOwkJCQkJCSAgXAogICAgIH0JCQkJCQkJCQkgIFwKIH0gd2hpbGUgKFlZ
SUQgKDApKQpAQCAtMTQ2MCwxOCArMTQ4OCwyMiBAQCBkbyB7CQkJCQkJCQkJICBcCiAjaWYgKGRl
ZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5l
ZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKLXl5X3N5bWJv
bF92YWx1ZV9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3Qg
KiBjb25zdCB5eXZhbHVlcCwgVFBhcnNlQ29udGV4dCogY29udGV4dCkKK3l5X3N5bWJvbF92YWx1
ZV9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25z
dCB5eXZhbHVlcCwgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25wLCBUUGFyc2VDb250
ZXh0KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zeW1ib2xfdmFsdWVfcHJpbnQg
KHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBjb250ZXh0KQoreXlfc3ltYm9sX3ZhbHVlX3By
aW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpCiAg
ICAgRklMRSAqeXlvdXRwdXQ7CiAgICAgaW50IHl5dHlwZTsKICAgICBZWVNUWVBFIGNvbnN0ICog
Y29uc3QgeXl2YWx1ZXA7CisgICAgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25wOwog
ICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsKKyAgRklMRSAqeXlvID0geXlv
dXRwdXQ7CisgIFlZVVNFICh5eW8pOwogICBpZiAoIXl5dmFsdWVwKQogICAgIHJldHVybjsKKyAg
WVlVU0UgKHl5bG9jYXRpb25wKTsKICAgWVlVU0UgKGNvbnRleHQpOwogIyBpZmRlZiBZWVBSSU5U
CiAgIGlmICh5eXR5cGUgPCBZWU5UT0tFTlMpCkBAIC0xNDgyLDcgKzE1MTQsNyBAQCB5eV9zeW1i
b2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsCiAgIHN3aXRjaCAoeXl0eXBlKQogICAg
IHsKICAgICAgIGRlZmF1bHQ6Ci0JYnJlYWs7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApA
QCAtMTQ5NCwxMyArMTUyNiwxNCBAQCB5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5
eXR5cGUsCiAjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwK
ICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGlj
IHZvaWQKLXl5X3N5bWJvbF9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZ
UEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcCwgVFBhcnNlQ29udGV4dCogY29udGV4dCkKK3l5X3N5
bWJvbF9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBj
b25zdCB5eXZhbHVlcCwgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25wLCBUUGFyc2VD
b250ZXh0KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zeW1ib2xfcHJpbnQgKHl5
b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBjb250ZXh0KQoreXlfc3ltYm9sX3ByaW50ICh5eW91
dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpCiAgICAgRklMRSAq
eXlvdXRwdXQ7CiAgICAgaW50IHl5dHlwZTsKICAgICBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2
YWx1ZXA7CisgICAgWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25wOwogICAgIFRQYXJz
ZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsKQEAgLTE1MDksNyArMTU0Miw5IEBAIHl5X3N5
bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWwKICAgZWxzZQogICAgIFlZRlBSSU5U
RiAoeXlvdXRwdXQsICJudGVybSAlcyAoIiwgeXl0bmFtZVt5eXR5cGVdKTsKIAotICB5eV9zeW1i
b2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBjb250ZXh0KTsKKyAg
WVlfTE9DQVRJT05fUFJJTlQgKHl5b3V0cHV0LCAqeXlsb2NhdGlvbnApOworICBZWUZQUklOVEYg
KHl5b3V0cHV0LCAiOiAiKTsKKyAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0
eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpOwogICBZWUZQUklOVEYgKHl5b3V0
cHV0LCAiKSIpOwogfQogCkBAIC0xNTIxLDE3ICsxNTU2LDIwIEBAIHl5X3N5bWJvbF9wcmludCAo
eXlvdXRwdXQsIHl5dHlwZSwgeXl2YWwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVk
IF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQg
X01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqYm90
dG9tLCB5eXR5cGVfaW50MTYgKnRvcCkKK3l5X3N0YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKnl5
Ym90dG9tLCB5eXR5cGVfaW50MTYgKnl5dG9wKQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zdGFj
a19wcmludCAoYm90dG9tLCB0b3ApCi0gICAgeXl0eXBlX2ludDE2ICpib3R0b207Ci0gICAgeXl0
eXBlX2ludDE2ICp0b3A7Cit5eV9zdGFja19wcmludCAoeXlib3R0b20sIHl5dG9wKQorICAgIHl5
dHlwZV9pbnQxNiAqeXlib3R0b207CisgICAgeXl0eXBlX2ludDE2ICp5eXRvcDsKICNlbmRpZgog
ewogICBZWUZQUklOVEYgKHN0ZGVyciwgIlN0YWNrIG5vdyIpOwotICBmb3IgKDsgYm90dG9tIDw9
IHRvcDsgKytib3R0b20pCi0gICAgWVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCAqYm90dG9tKTsK
KyAgZm9yICg7IHl5Ym90dG9tIDw9IHl5dG9wOyB5eWJvdHRvbSsrKQorICAgIHsKKyAgICAgIGlu
dCB5eWJvdCA9ICp5eWJvdHRvbTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgeXli
b3QpOworICAgIH0KICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwogfQogCkBAIC0xNTQ5LDEx
ICsxNTg3LDEyIEBAIGRvIHsJCQkJCQkJCVwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZp
bmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmlu
ZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfcmVkdWNlX3ByaW50IChZWVNUWVBFICp5eXZz
cCwgaW50IHl5cnVsZSwgVFBhcnNlQ29udGV4dCogY29udGV4dCkKK3l5X3JlZHVjZV9wcmludCAo
WVlTVFlQRSAqeXl2c3AsIFlZTFRZUEUgKnl5bHNwLCBpbnQgeXlydWxlLCBUUGFyc2VDb250ZXh0
KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5
eXJ1bGUsIGNvbnRleHQpCit5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eWxzcCwgeXlydWxlLCBj
b250ZXh0KQogICAgIFlZU1RZUEUgKnl5dnNwOworICAgIFlZTFRZUEUgKnl5bHNwOwogICAgIGlu
dCB5eXJ1bGU7CiAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dDsKICNlbmRpZgpAQCAtMTU2Niwx
OCArMTYwNSwxOCBAQCB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eXJ1bGUsIGNvbnRleHQpCiAg
IC8qIFRoZSBzeW1ib2xzIGJlaW5nIHJlZHVjZWQuICAqLwogICBmb3IgKHl5aSA9IDA7IHl5aSA8
IHl5bnJoczsgeXlpKyspCiAgICAgewotICAgICAgZnByaW50ZiAoc3RkZXJyLCAiICAgJCVkID0g
IiwgeXlpICsgMSk7CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSAr
IDEpOwogICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVd
ICsgeXlpXSwKIAkJICAgICAgICYoeXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQotCQkgICAg
ICAgCQkgICAgICAgLCBjb250ZXh0KTsKLSAgICAgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7CisJ
CSAgICAgICAsICYoeXlsc3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQkJICAgICAgICwgY29udGV4
dCk7CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7CiAgICAgfQogfQogCiAjIGRlZmlu
ZSBZWV9SRURVQ0VfUFJJTlQoUnVsZSkJCVwKIGRvIHsJCQkJCVwKICAgaWYgKHl5ZGVidWcpCQkJ
CVwKLSAgICB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCBSdWxlLCBjb250ZXh0KTsgXAorICAgIHl5
X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5bHNwLCBSdWxlLCBjb250ZXh0KTsgXAogfSB3aGlsZSAo
WVlJRCAoMCkpCiAKIC8qIE5vbnplcm8gbWVhbnMgcHJpbnQgcGFyc2UgdHJhY2UuICBJdCBpcyBs
ZWZ0IHVuaW5pdGlhbGl6ZWQgc28gdGhhdApAQCAtMTYwNyw3ICsxNjQ2LDYgQEAgaW50IHl5ZGVi
dWc7CiAjIGRlZmluZSBZWU1BWERFUFRIIDEwMDAwCiAjZW5kaWYKIAotDAogCiAjaWYgWVlFUlJP
Ul9WRVJCT1NFCiAKQEAgLTE3MTAsMTE1ICsxNzQ4LDE0NSBAQCB5eXRuYW1lcnIgKGNoYXIgKnl5
cmVzLCBjb25zdCBjaGFyICp5eXN0CiB9CiAjIGVuZGlmCiAKLS8qIENvcHkgaW50byBZWVJFU1VM
VCBhbiBlcnJvciBtZXNzYWdlIGFib3V0IHRoZSB1bmV4cGVjdGVkIHRva2VuCi0gICBZWUNIQVIg
d2hpbGUgaW4gc3RhdGUgWVlTVEFURS4gIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGll
ZCwKLSAgIGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcgbnVsbCBieXRlLiAgSWYgWVlSRVNVTFQg
aXMgbnVsbCwgZG8gbm90Ci0gICBjb3B5IGFueXRoaW5nOyBqdXN0IHJldHVybiB0aGUgbnVtYmVy
IG9mIGJ5dGVzIHRoYXQgd291bGQgYmUKLSAgIGNvcGllZC4gIEFzIGEgc3BlY2lhbCBjYXNlLCBy
ZXR1cm4gMCBpZiBhbiBvcmRpbmFyeSAic3ludGF4IGVycm9yIgotICAgbWVzc2FnZSB3aWxsIGRv
LiAgUmV0dXJuIFlZU0laRV9NQVhJTVVNIGlmIG92ZXJmbG93IG9jY3VycyBkdXJpbmcKLSAgIHNp
emUgY2FsY3VsYXRpb24uICAqLwotc3RhdGljIFlZU0laRV9UCi15eXN5bnRheF9lcnJvciAoY2hh
ciAqeXlyZXN1bHQsIGludCB5eXN0YXRlLCBpbnQgeXljaGFyKQorLyogQ29weSBpbnRvICpZWU1T
Rywgd2hpY2ggaXMgb2Ygc2l6ZSAqWVlNU0dfQUxMT0MsIGFuIGVycm9yIG1lc3NhZ2UKKyAgIGFi
b3V0IHRoZSB1bmV4cGVjdGVkIHRva2VuIFlZVE9LRU4gZm9yIHRoZSBzdGF0ZSBzdGFjayB3aG9z
ZSB0b3AgaXMKKyAgIFlZU1NQLgorCisgICBSZXR1cm4gMCBpZiAqWVlNU0cgd2FzIHN1Y2Nlc3Nm
dWxseSB3cml0dGVuLiAgUmV0dXJuIDEgaWYgKllZTVNHIGlzCisgICBub3QgbGFyZ2UgZW5vdWdo
IHRvIGhvbGQgdGhlIG1lc3NhZ2UuICBJbiB0aGF0IGNhc2UsIGFsc28gc2V0CisgICAqWVlNU0df
QUxMT0MgdG8gdGhlIHJlcXVpcmVkIG51bWJlciBvZiBieXRlcy4gIFJldHVybiAyIGlmIHRoZQor
ICAgcmVxdWlyZWQgbnVtYmVyIG9mIGJ5dGVzIGlzIHRvbyBsYXJnZSB0byBzdG9yZS4gICovCitz
dGF0aWMgaW50Cit5eXN5bnRheF9lcnJvciAoWVlTSVpFX1QgKnl5bXNnX2FsbG9jLCBjaGFyICoq
eXltc2csCisgICAgICAgICAgICAgICAgeXl0eXBlX2ludDE2ICp5eXNzcCwgaW50IHl5dG9rZW4p
CiB7Ci0gIGludCB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0KLSAgaWYgKCEgKFlZUEFDVF9OSU5G
IDwgeXluICYmIHl5biA8PSBZWUxBU1QpKQotICAgIHJldHVybiAwOwotICBlbHNlCi0gICAgewot
ICAgICAgaW50IHl5dHlwZSA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOwotICAgICAgWVlTSVpFX1Qg
eXlzaXplMCA9IHl5dG5hbWVyciAoMCwgeXl0bmFtZVt5eXR5cGVdKTsKLSAgICAgIFlZU0laRV9U
IHl5c2l6ZSA9IHl5c2l6ZTA7Ci0gICAgICBZWVNJWkVfVCB5eXNpemUxOwotICAgICAgaW50IHl5
c2l6ZV9vdmVyZmxvdyA9IDA7Ci0gICAgICBlbnVtIHsgWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFY
SU1VTSA9IDUgfTsKLSAgICAgIGNoYXIgY29uc3QgKnl5YXJnW1lZRVJST1JfVkVSQk9TRV9BUkdT
X01BWElNVU1dOwotICAgICAgaW50IHl5eDsKLQotIyBpZiAwCi0gICAgICAvKiBUaGlzIGlzIHNv
IHhnZXR0ZXh0IHNlZXMgdGhlIHRyYW5zbGF0YWJsZSBmb3JtYXRzIHRoYXQgYXJlCi0JIGNvbnN0
cnVjdGVkIG9uIHRoZSBmbHkuICAqLwotICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0
ZWQgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3Rp
bmcgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3Rp
bmcgJXMgb3IgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBl
eHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4
cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMgb3IgJXMiKTsKLSMgZW5kaWYKLSAg
ICAgIGNoYXIgKnl5Zm10OwotICAgICAgY2hhciBjb25zdCAqeXlmOwotICAgICAgc3RhdGljIGNo
YXIgY29uc3QgeXl1bmV4cGVjdGVkW10gPSAic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIjsK
LSAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHl5ZXhwZWN0aW5nW10gPSAiLCBleHBlY3RpbmcgJXMi
OwotICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXlvcltdID0gIiBvciAlcyI7Ci0gICAgICBjaGFy
IHl5Zm9ybWF0W3NpemVvZiB5eXVuZXhwZWN0ZWQKLQkJICAgICsgc2l6ZW9mIHl5ZXhwZWN0aW5n
IC0gMQotCQkgICAgKyAoKFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0gLSAyKQotCQkgICAg
ICAgKiAoc2l6ZW9mIHl5b3IgLSAxKSldOwotICAgICAgY2hhciBjb25zdCAqeXlwcmVmaXggPSB5
eWV4cGVjdGluZzsKLQotICAgICAgLyogU3RhcnQgWVlYIGF0IC1ZWU4gaWYgbmVnYXRpdmUgdG8g
YXZvaWQgbmVnYXRpdmUgaW5kZXhlcyBpbgotCSBZWUNIRUNLLiAgKi8KLSAgICAgIGludCB5eXhi
ZWdpbiA9IHl5biA8IDAgPyAteXluIDogMDsKLQotICAgICAgLyogU3RheSB3aXRoaW4gYm91bmRz
IG9mIGJvdGggeXljaGVjayBhbmQgeXl0bmFtZS4gICovCi0gICAgICBpbnQgeXljaGVja2xpbSA9
IFlZTEFTVCAtIHl5biArIDE7Ci0gICAgICBpbnQgeXl4ZW5kID0geXljaGVja2xpbSA8IFlZTlRP
S0VOUyA/IHl5Y2hlY2tsaW0gOiBZWU5UT0tFTlM7Ci0gICAgICBpbnQgeXljb3VudCA9IDE7Ci0K
LSAgICAgIHl5YXJnWzBdID0geXl0bmFtZVt5eXR5cGVdOwotICAgICAgeXlmbXQgPSB5eXN0cGNw
eSAoeXlmb3JtYXQsIHl5dW5leHBlY3RlZCk7Ci0KLSAgICAgIGZvciAoeXl4ID0geXl4YmVnaW47
IHl5eCA8IHl5eGVuZDsgKyt5eXgpCi0JaWYgKHl5Y2hlY2tbeXl4ICsgeXluXSA9PSB5eXggJiYg
eXl4ICE9IFlZVEVSUk9SKQotCSAgewotCSAgICBpZiAoeXljb3VudCA9PSBZWUVSUk9SX1ZFUkJP
U0VfQVJHU19NQVhJTVVNKQotCSAgICAgIHsKLQkJeXljb3VudCA9IDE7Ci0JCXl5c2l6ZSA9IHl5
c2l6ZTA7Ci0JCXl5Zm9ybWF0W3NpemVvZiB5eXVuZXhwZWN0ZWQgLSAxXSA9ICdcMCc7Ci0JCWJy
ZWFrOwotCSAgICAgIH0KLQkgICAgeXlhcmdbeXljb3VudCsrXSA9IHl5dG5hbWVbeXl4XTsKLQkg
ICAgeXlzaXplMSA9IHl5c2l6ZSArIHl5dG5hbWVyciAoMCwgeXl0bmFtZVt5eXhdKTsKLQkgICAg
eXlzaXplX292ZXJmbG93IHw9ICh5eXNpemUxIDwgeXlzaXplKTsKLQkgICAgeXlzaXplID0geXlz
aXplMTsKLQkgICAgeXlmbXQgPSB5eXN0cGNweSAoeXlmbXQsIHl5cHJlZml4KTsKLQkgICAgeXlw
cmVmaXggPSB5eW9yOwotCSAgfQotCi0gICAgICB5eWYgPSBZWV8oeXlmb3JtYXQpOwotICAgICAg
eXlzaXplMSA9IHl5c2l6ZSArIHl5c3RybGVuICh5eWYpOwotICAgICAgeXlzaXplX292ZXJmbG93
IHw9ICh5eXNpemUxIDwgeXlzaXplKTsKLSAgICAgIHl5c2l6ZSA9IHl5c2l6ZTE7CisgIFlZU0la
RV9UIHl5c2l6ZTAgPSB5eXRuYW1lcnIgKFlZX05VTEwsIHl5dG5hbWVbeXl0b2tlbl0pOworICBZ
WVNJWkVfVCB5eXNpemUgPSB5eXNpemUwOworICBlbnVtIHsgWVlFUlJPUl9WRVJCT1NFX0FSR1Nf
TUFYSU1VTSA9IDUgfTsKKyAgLyogSW50ZXJuYXRpb25hbGl6ZWQgZm9ybWF0IHN0cmluZy4gKi8K
KyAgY29uc3QgY2hhciAqeXlmb3JtYXQgPSBZWV9OVUxMOworICAvKiBBcmd1bWVudHMgb2YgeXlm
b3JtYXQuICovCisgIGNoYXIgY29uc3QgKnl5YXJnW1lZRVJST1JfVkVSQk9TRV9BUkdTX01BWElN
VU1dOworICAvKiBOdW1iZXIgb2YgcmVwb3J0ZWQgdG9rZW5zIChvbmUgZm9yIHRoZSAidW5leHBl
Y3RlZCIsIG9uZSBwZXIKKyAgICAgImV4cGVjdGVkIikuICovCisgIGludCB5eWNvdW50ID0gMDsK
KworICAvKiBUaGVyZSBhcmUgbWFueSBwb3NzaWJpbGl0aWVzIGhlcmUgdG8gY29uc2lkZXI6Cisg
ICAgIC0gQXNzdW1lIFlZRkFJTCBpcyBub3QgdXNlZC4gIEl0J3MgdG9vIGZsYXdlZCB0byBjb25z
aWRlci4gIFNlZQorICAgICAgIDxodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYmlz
b24tcGF0Y2hlcy8yMDA5LTEyL21zZzAwMDI0Lmh0bWw+CisgICAgICAgZm9yIGRldGFpbHMuICBZ
WUVSUk9SIGlzIGZpbmUgYXMgaXQgZG9lcyBub3QgaW52b2tlIHRoaXMKKyAgICAgICBmdW5jdGlv
bi4KKyAgICAgLSBJZiB0aGlzIHN0YXRlIGlzIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVm
YXVsdCBhY3Rpb24sIHRoZW4KKyAgICAgICB0aGUgb25seSB3YXkgdGhpcyBmdW5jdGlvbiB3YXMg
aW52b2tlZCBpcyBpZiB0aGUgZGVmYXVsdCBhY3Rpb24KKyAgICAgICBpcyBhbiBlcnJvciBhY3Rp
b24uICBJbiB0aGF0IGNhc2UsIGRvbid0IGNoZWNrIGZvciBleHBlY3RlZAorICAgICAgIHRva2Vu
cyBiZWNhdXNlIHRoZXJlIGFyZSBub25lLgorICAgICAtIFRoZSBvbmx5IHdheSB0aGVyZSBjYW4g
YmUgbm8gbG9va2FoZWFkIHByZXNlbnQgKGluIHl5Y2hhcikgaXMgaWYKKyAgICAgICB0aGlzIHN0
YXRlIGlzIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVsdCBhY3Rpb24uICBUaHVzLAor
ICAgICAgIGRldGVjdGluZyB0aGUgYWJzZW5jZSBvZiBhIGxvb2thaGVhZCBpcyBzdWZmaWNpZW50
IHRvIGRldGVybWluZQorICAgICAgIHRoYXQgdGhlcmUgaXMgbm8gdW5leHBlY3RlZCBvciBleHBl
Y3RlZCB0b2tlbiB0byByZXBvcnQuICBJbiB0aGF0CisgICAgICAgY2FzZSwganVzdCByZXBvcnQg
YSBzaW1wbGUgInN5bnRheCBlcnJvciIuCisgICAgIC0gRG9uJ3QgYXNzdW1lIHRoZXJlIGlzbid0
IGEgbG9va2FoZWFkIGp1c3QgYmVjYXVzZSB0aGlzIHN0YXRlIGlzIGEKKyAgICAgICBjb25zaXN0
ZW50IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbi4gIFRoZXJlIG1pZ2h0IGhhdmUgYmVlbiBh
CisgICAgICAgcHJldmlvdXMgaW5jb25zaXN0ZW50IHN0YXRlLCBjb25zaXN0ZW50IHN0YXRlIHdp
dGggYSBub24tZGVmYXVsdAorICAgICAgIGFjdGlvbiwgb3IgdXNlciBzZW1hbnRpYyBhY3Rpb24g
dGhhdCBtYW5pcHVsYXRlZCB5eWNoYXIuCisgICAgIC0gT2YgY291cnNlLCB0aGUgZXhwZWN0ZWQg
dG9rZW4gbGlzdCBkZXBlbmRzIG9uIHN0YXRlcyB0byBoYXZlCisgICAgICAgY29ycmVjdCBsb29r
YWhlYWQgaW5mb3JtYXRpb24sIGFuZCBpdCBkZXBlbmRzIG9uIHRoZSBwYXJzZXIgbm90CisgICAg
ICAgdG8gcGVyZm9ybSBleHRyYSByZWR1Y3Rpb25zIGFmdGVyIGZldGNoaW5nIGEgbG9va2FoZWFk
IGZyb20gdGhlCisgICAgICAgc2Nhbm5lciBhbmQgYmVmb3JlIGRldGVjdGluZyBhIHN5bnRheCBl
cnJvci4gIFRodXMsIHN0YXRlIG1lcmdpbmcKKyAgICAgICAoZnJvbSBMQUxSIG9yIElFTFIpIGFu
ZCBkZWZhdWx0IHJlZHVjdGlvbnMgY29ycnVwdCB0aGUgZXhwZWN0ZWQKKyAgICAgICB0b2tlbiBs
aXN0LiAgSG93ZXZlciwgdGhlIGxpc3QgaXMgY29ycmVjdCBmb3IgY2Fub25pY2FsIExSIHdpdGgK
KyAgICAgICBvbmUgZXhjZXB0aW9uOiBpdCB3aWxsIHN0aWxsIGNvbnRhaW4gYW55IHRva2VuIHRo
YXQgd2lsbCBub3QgYmUKKyAgICAgICBhY2NlcHRlZCBkdWUgdG8gYW4gZXJyb3IgYWN0aW9uIGlu
IGEgbGF0ZXIgc3RhdGUuCisgICovCisgIGlmICh5eXRva2VuICE9IFlZRU1QVFkpCisgICAgewor
ICAgICAgaW50IHl5biA9IHl5cGFjdFsqeXlzc3BdOworICAgICAgeXlhcmdbeXljb3VudCsrXSA9
IHl5dG5hbWVbeXl0b2tlbl07CisgICAgICBpZiAoIXl5cGFjdF92YWx1ZV9pc19kZWZhdWx0ICh5
eW4pKQorICAgICAgICB7CisgICAgICAgICAgLyogU3RhcnQgWVlYIGF0IC1ZWU4gaWYgbmVnYXRp
dmUgdG8gYXZvaWQgbmVnYXRpdmUgaW5kZXhlcyBpbgorICAgICAgICAgICAgIFlZQ0hFQ0suICBJ
biBvdGhlciB3b3Jkcywgc2tpcCB0aGUgZmlyc3QgLVlZTiBhY3Rpb25zIGZvcgorICAgICAgICAg
ICAgIHRoaXMgc3RhdGUgYmVjYXVzZSB0aGV5IGFyZSBkZWZhdWx0IGFjdGlvbnMuICAqLworICAg
ICAgICAgIGludCB5eXhiZWdpbiA9IHl5biA8IDAgPyAteXluIDogMDsKKyAgICAgICAgICAvKiBT
dGF5IHdpdGhpbiBib3VuZHMgb2YgYm90aCB5eWNoZWNrIGFuZCB5eXRuYW1lLiAgKi8KKyAgICAg
ICAgICBpbnQgeXljaGVja2xpbSA9IFlZTEFTVCAtIHl5biArIDE7CisgICAgICAgICAgaW50IHl5
eGVuZCA9IHl5Y2hlY2tsaW0gPCBZWU5UT0tFTlMgPyB5eWNoZWNrbGltIDogWVlOVE9LRU5TOwor
ICAgICAgICAgIGludCB5eXg7CisKKyAgICAgICAgICBmb3IgKHl5eCA9IHl5eGJlZ2luOyB5eXgg
PCB5eXhlbmQ7ICsreXl4KQorICAgICAgICAgICAgaWYgKHl5Y2hlY2tbeXl4ICsgeXluXSA9PSB5
eXggJiYgeXl4ICE9IFlZVEVSUk9SCisgICAgICAgICAgICAgICAgJiYgIXl5dGFibGVfdmFsdWVf
aXNfZXJyb3IgKHl5dGFibGVbeXl4ICsgeXluXSkpCisgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAoeXljb3VudCA9PSBZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNKQorICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB5eWNvdW50ID0gMTsKKyAgICAg
ICAgICAgICAgICAgICAgeXlzaXplID0geXlzaXplMDsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgeXlhcmdbeXljb3VudCsr
XSA9IHl5dG5hbWVbeXl4XTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBZ
WVNJWkVfVCB5eXNpemUxID0geXlzaXplICsgeXl0bmFtZXJyIChZWV9OVUxMLCB5eXRuYW1lW3l5
eF0pOworICAgICAgICAgICAgICAgICAgaWYgKCEgKHl5c2l6ZSA8PSB5eXNpemUxCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgeXlzaXplMSA8PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICAgIHl5c2l6ZSA9
IHl5c2l6ZTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CiAKLSAgICAgIGlmICh5eXNpemVfb3ZlcmZsb3cpCi0JcmV0dXJuIFlZU0laRV9NQVhJ
TVVNOworICBzd2l0Y2ggKHl5Y291bnQpCisgICAgeworIyBkZWZpbmUgWVlDQVNFXyhOLCBTKSAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICBjYXNlIE46ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgeXlmb3JtYXQgPSBTOyAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgYnJlYWsKKyAgICAgIFlZQ0FTRV8oMCwgWVlfKCJzeW50YXggZXJyb3IiKSk7Cisg
ICAgICBZWUNBU0VfKDEsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIikpOworICAg
ICAgWVlDQVNFXygyLCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5n
ICVzIikpOworICAgICAgWVlDQVNFXygzLCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAl
cywgZXhwZWN0aW5nICVzIG9yICVzIikpOworICAgICAgWVlDQVNFXyg0LCBZWV8oInN5bnRheCBl
cnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIikpOworICAgICAg
WVlDQVNFXyg1LCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVz
IG9yICVzIG9yICVzIG9yICVzIikpOworIyB1bmRlZiBZWUNBU0VfCisgICAgfQogCi0gICAgICBp
ZiAoeXlyZXN1bHQpCi0JewotCSAgLyogQXZvaWQgc3ByaW50ZiwgYXMgdGhhdCBpbmZyaW5nZXMg
b24gdGhlIHVzZXIncyBuYW1lIHNwYWNlLgotCSAgICAgRG9uJ3QgaGF2ZSB1bmRlZmluZWQgYmVo
YXZpb3IgZXZlbiBpZiB0aGUgdHJhbnNsYXRpb24KLQkgICAgIHByb2R1Y2VkIGEgc3RyaW5nIHdp
dGggdGhlIHdyb25nIG51bWJlciBvZiAiJXMicy4gICovCi0JICBjaGFyICp5eXAgPSB5eXJlc3Vs
dDsKLQkgIGludCB5eWkgPSAwOwotCSAgd2hpbGUgKCgqeXlwID0gKnl5ZikgIT0gJ1wwJykKLQkg
ICAgewotCSAgICAgIGlmICgqeXlwID09ICclJyAmJiB5eWZbMV0gPT0gJ3MnICYmIHl5aSA8IHl5
Y291bnQpCi0JCXsKLQkJICB5eXAgKz0geXl0bmFtZXJyICh5eXAsIHl5YXJnW3l5aSsrXSk7Ci0J
CSAgeXlmICs9IDI7Ci0JCX0KLQkgICAgICBlbHNlCi0JCXsKLQkJICB5eXArKzsKLQkJICB5eWYr
KzsKLQkJfQotCSAgICB9Ci0JfQotICAgICAgcmV0dXJuIHl5c2l6ZTsKKyAgeworICAgIFlZU0la
RV9UIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXN0cmxlbiAoeXlmb3JtYXQpOworICAgIGlmICghICh5
eXNpemUgPD0geXlzaXplMSAmJiB5eXNpemUxIDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCisg
ICAgICByZXR1cm4gMjsKKyAgICB5eXNpemUgPSB5eXNpemUxOworICB9CisKKyAgaWYgKCp5eW1z
Z19hbGxvYyA8IHl5c2l6ZSkKKyAgICB7CisgICAgICAqeXltc2dfYWxsb2MgPSAyICogeXlzaXpl
OworICAgICAgaWYgKCEgKHl5c2l6ZSA8PSAqeXltc2dfYWxsb2MKKyAgICAgICAgICAgICAmJiAq
eXltc2dfYWxsb2MgPD0gWVlTVEFDS19BTExPQ19NQVhJTVVNKSkKKyAgICAgICAgKnl5bXNnX2Fs
bG9jID0gWVlTVEFDS19BTExPQ19NQVhJTVVNOworICAgICAgcmV0dXJuIDE7CiAgICAgfQorCisg
IC8qIEF2b2lkIHNwcmludGYsIGFzIHRoYXQgaW5mcmluZ2VzIG9uIHRoZSB1c2VyJ3MgbmFtZSBz
cGFjZS4KKyAgICAgRG9uJ3QgaGF2ZSB1bmRlZmluZWQgYmVoYXZpb3IgZXZlbiBpZiB0aGUgdHJh
bnNsYXRpb24KKyAgICAgcHJvZHVjZWQgYSBzdHJpbmcgd2l0aCB0aGUgd3JvbmcgbnVtYmVyIG9m
ICIlcyJzLiAgKi8KKyAgeworICAgIGNoYXIgKnl5cCA9ICp5eW1zZzsKKyAgICBpbnQgeXlpID0g
MDsKKyAgICB3aGlsZSAoKCp5eXAgPSAqeXlmb3JtYXQpICE9ICdcMCcpCisgICAgICBpZiAoKnl5
cCA9PSAnJScgJiYgeXlmb3JtYXRbMV0gPT0gJ3MnICYmIHl5aSA8IHl5Y291bnQpCisgICAgICAg
IHsKKyAgICAgICAgICB5eXAgKz0geXl0bmFtZXJyICh5eXAsIHl5YXJnW3l5aSsrXSk7CisgICAg
ICAgICAgeXlmb3JtYXQgKz0gMjsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgeXlwKys7CisgICAgICAgICAgeXlmb3JtYXQrKzsKKyAgICAgICAgfQorICB9Cisg
IHJldHVybiAwOwogfQogI2VuZGlmIC8qIFlZRVJST1JfVkVSQk9TRSAqLwotDAogCiAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCBSZWxlYXNlIHRo
ZSBtZW1vcnkgYXNzb2NpYXRlZCB0byB0aGlzIHN5bWJvbC4gIHwKQEAgLTE4MjgsMTcgKzE4OTYs
MTkgQEAgeXlzeW50YXhfZXJyb3IgKGNoYXIgKnl5cmVzdWx0LCBpbnQgeXlzdAogI2lmIChkZWZp
bmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQg
X19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eWRlc3RydWN0
IChjb25zdCBjaGFyICp5eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFRQYXJz
ZUNvbnRleHQqIGNvbnRleHQpCit5eWRlc3RydWN0IChjb25zdCBjaGFyICp5eW1zZywgaW50IHl5
dHlwZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFlZTFRZUEUgKnl5bG9jYXRpb25wLCBUUGFyc2VDb250
ZXh0KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eWRlc3RydWN0ICh5eW1zZywgeXl0
eXBlLCB5eXZhbHVlcCwgY29udGV4dCkKK3l5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFs
dWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICAgICBjb25zdCBjaGFyICp5eW1zZzsKICAgICBp
bnQgeXl0eXBlOwogICAgIFlZU1RZUEUgKnl5dmFsdWVwOworICAgIFlZTFRZUEUgKnl5bG9jYXRp
b25wOwogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsKICAgWVlVU0UgKHl5
dmFsdWVwKTsKKyAgWVlVU0UgKHl5bG9jYXRpb25wKTsKICAgWVlVU0UgKGNvbnRleHQpOwogCiAg
IGlmICgheXltc2cpCkBAIC0xODQ5LDI4ICsxOTE5LDkgQEAgeXlkZXN0cnVjdCAoeXltc2csIHl5
dHlwZSwgeXl2YWx1ZXAsIGNvbgogICAgIHsKIAogICAgICAgZGVmYXVsdDoKLQlicmVhazsKKyAg
ICAgICAgYnJlYWs7CiAgICAgfQogfQotDAotCi0vKiBQcmV2ZW50IHdhcm5pbmdzIGZyb20gLVdt
aXNzaW5nLXByb3RvdHlwZXMuICAqLwotCi0jaWZkZWYgWVlQQVJTRV9QQVJBTQotI2lmIGRlZmlu
ZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cwotaW50IHl5cGFyc2UgKHZvaWQgKllZ
UEFSU0VfUEFSQU0pOwotI2Vsc2UKLWludCB5eXBhcnNlICgpOwotI2VuZGlmCi0jZWxzZSAvKiAh
IFlZUEFSU0VfUEFSQU0gKi8KLSNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1
c3BsdXMKLWludCB5eXBhcnNlIChUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKLSNlbHNlCi1pbnQg
eXlwYXJzZSAoKTsKLSNlbmRpZgotI2VuZGlmIC8qICEgWVlQQVJTRV9QQVJBTSAqLwotCi0KIAog
CiAKQEAgLTE5MDEsNzcgKzE5NTIsMTEzIEBAIHl5cGFyc2UgKGNvbnRleHQpCiAjZW5kaWYKICNl
bmRpZgogewotICAvKiBUaGUgbG9vay1haGVhZCBzeW1ib2wuICAqLworLyogVGhlIGxvb2thaGVh
ZCBzeW1ib2wuICAqLwogaW50IHl5Y2hhcjsKIAotLyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRo
ZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCi1ZWVNUWVBFIHl5bHZhbDsKLQotLyogTnVtYmVyIG9m
IHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KLWludCB5eW5lcnJzOwogCi0gIGludCB5eXN0YXRl
OwotICBpbnQgeXluOwotICBpbnQgeXlyZXN1bHQ7Ci0gIC8qIE51bWJlciBvZiB0b2tlbnMgdG8g
c2hpZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLwotICBpbnQgeXllcnJzdGF0
dXM7Ci0gIC8qIExvb2stYWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRv
a2VuIG51bWJlci4gICovCi0gIGludCB5eXRva2VuID0gMDsKLSNpZiBZWUVSUk9SX1ZFUkJPU0UK
LSAgLyogQnVmZmVyIGZvciBlcnJvciBtZXNzYWdlcywgYW5kIGl0cyBhbGxvY2F0ZWQgc2l6ZS4g
ICovCi0gIGNoYXIgeXltc2didWZbMTI4XTsKLSAgY2hhciAqeXltc2cgPSB5eW1zZ2J1ZjsKLSAg
WVlTSVpFX1QgeXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7CisjaWYgZGVmaW5lZCBfX0dO
VUNfXyAmJiA0MDcgPD0gX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXworLyogU3VwcHJl
c3MgYW4gaW5jb3JyZWN0IGRpYWdub3N0aWMgYWJvdXQgeXlsdmFsIGJlaW5nIHVuaW5pdGlhbGl6
ZWQuICAqLworIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfQkVHSU4gXAor
ICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBwdXNoIikgXAorICAgIF9QcmFnbWEgKCJHQ0Mg
ZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVd1bmluaXRpYWxpemVkXCIiKVwKKyAgICBfUHJhZ21hICgi
R0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XbWF5YmUtdW5pbml0aWFsaXplZFwiIikKKyMgZGVm
aW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORCBcCisgICAgX1ByYWdtYSAoIkdD
QyBkaWFnbm9zdGljIHBvcCIpCisjZWxzZQorLyogRGVmYXVsdCB2YWx1ZSB1c2VkIGZvciBpbml0
aWFsaXphdGlvbiwgZm9yIHBhY2lmeWluZyBvbGRlciBHQ0NzCisgICBvciBub24tR0NDIGNvbXBp
bGVycy4gICovCitzdGF0aWMgWVlTVFlQRSB5eXZhbF9kZWZhdWx0OworIyBkZWZpbmUgWVlfSU5J
VElBTF9WQUxVRShWYWx1ZSkgPSBWYWx1ZQogI2VuZGlmCitzdGF0aWMgWVlMVFlQRSB5eWxvY19k
ZWZhdWx0CisjIGlmIGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNfVFJJ
VklBTAorICA9IHsgMSwgMSwgMSwgMSB9CisjIGVuZGlmCis7CisjaWZuZGVmIFlZX0lHTk9SRV9N
QVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOCisjIGRlZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklU
SUFMSVpFRF9CRUdJTgorIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5E
CisjZW5kaWYKKyNpZm5kZWYgWVlfSU5JVElBTF9WQUxVRQorIyBkZWZpbmUgWVlfSU5JVElBTF9W
QUxVRShWYWx1ZSkgLyogTm90aGluZy4gKi8KKyNlbmRpZgorCisvKiBUaGUgc2VtYW50aWMgdmFs
dWUgb2YgdGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLworWVlTVFlQRSB5eWx2YWwgWVlfSU5JVElB
TF9WQUxVRSh5eXZhbF9kZWZhdWx0KTsKKworLyogTG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2th
aGVhZCBzeW1ib2wuICAqLworWVlMVFlQRSB5eWxsb2MgPSB5eWxvY19kZWZhdWx0OwogCi0gIC8q
IFRocmVlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6Ci0gICAgIGB5eXNzJzogcmVsYXRlZCB0byBz
dGF0ZXMsCi0gICAgIGB5eXZzJzogcmVsYXRlZCB0byBzZW1hbnRpYyB2YWx1ZXMsCi0gICAgIGB5
eWxzJzogcmVsYXRlZCB0byBsb2NhdGlvbnMuCiAKLSAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0
aHJ1IHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93Ci0gICAgIHRvIHJlYWxs
b2NhdGUgdGhlbSBlbHNld2hlcmUuICAqLworICAgIC8qIE51bWJlciBvZiBzeW50YXggZXJyb3Jz
IHNvIGZhci4gICovCisgICAgaW50IHl5bmVycnM7CiAKLSAgLyogVGhlIHN0YXRlIHN0YWNrLiAg
Ki8KLSAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKLSAgeXl0eXBlX2ludDE2ICp5
eXNzID0geXlzc2E7Ci0gIHl5dHlwZV9pbnQxNiAqeXlzc3A7CisgICAgaW50IHl5c3RhdGU7Cisg
ICAgLyogTnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5h
YmxlZC4gICovCisgICAgaW50IHl5ZXJyc3RhdHVzOwogCi0gIC8qIFRoZSBzZW1hbnRpYyB2YWx1
ZSBzdGFjay4gICovCi0gIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOwotICBZWVNUWVBFICp5
eXZzID0geXl2c2E7Ci0gIFlZU1RZUEUgKnl5dnNwOworICAgIC8qIFRoZSBzdGFja3MgYW5kIHRo
ZWlyIHRvb2xzOgorICAgICAgIGB5eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMuCisgICAgICAgYHl5
dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcy4KKyAgICAgICBgeXlscyc6IHJlbGF0ZWQg
dG8gbG9jYXRpb25zLgogCisgICAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0aHJvdWdoIHNlcGFy
YXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93CisgICAgICAgdG8gcmVhbGxvY2F0ZSB0
aGVtIGVsc2V3aGVyZS4gICovCisKKyAgICAvKiBUaGUgc3RhdGUgc3RhY2suICAqLworICAgIHl5
dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07CisgICAgeXl0eXBlX2ludDE2ICp5eXNzOwor
ICAgIHl5dHlwZV9pbnQxNiAqeXlzc3A7CisKKyAgICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3Rh
Y2suICAqLworICAgIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOworICAgIFlZU1RZUEUgKnl5
dnM7CisgICAgWVlTVFlQRSAqeXl2c3A7CiAKKyAgICAvKiBUaGUgbG9jYXRpb24gc3RhY2suICAq
LworICAgIFlZTFRZUEUgeXlsc2FbWVlJTklUREVQVEhdOworICAgIFlZTFRZUEUgKnl5bHM7Cisg
ICAgWVlMVFlQRSAqeXlsc3A7CiAKLSNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAo
TiksIHl5c3NwIC09IChOKSkKKyAgICAvKiBUaGUgbG9jYXRpb25zIHdoZXJlIHRoZSBlcnJvciBz
dGFydGVkIGFuZCBlbmRlZC4gICovCisgICAgWVlMVFlQRSB5eWVycm9yX3JhbmdlWzNdOwogCi0g
IFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7CisgICAgWVlTSVpFX1QgeXlzdGFj
a3NpemU7CiAKKyAgaW50IHl5bjsKKyAgaW50IHl5cmVzdWx0OworICAvKiBMb29rYWhlYWQgdG9r
ZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4gICovCisgIGludCB5
eXRva2VuID0gMDsKICAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2
YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKICAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KICAg
WVlTVFlQRSB5eXZhbDsKKyAgWVlMVFlQRSB5eWxvYzsKKworI2lmIFlZRVJST1JfVkVSQk9TRQor
ICAvKiBCdWZmZXIgZm9yIGVycm9yIG1lc3NhZ2VzLCBhbmQgaXRzIGFsbG9jYXRlZCBzaXplLiAg
Ki8KKyAgY2hhciB5eW1zZ2J1ZlsxMjhdOworICBjaGFyICp5eW1zZyA9IHl5bXNnYnVmOworICBZ
WVNJWkVfVCB5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1ZjsKKyNlbmRpZgogCisjZGVmaW5l
IFlZUE9QU1RBQ0soTikgICAoeXl2c3AgLT0gKE4pLCB5eXNzcCAtPSAoTiksIHl5bHNwIC09IChO
KSkKIAogICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIFJIUyBvZiB0aGUgcmVkdWNl
ZCBydWxlLgogICAgICBLZWVwIHRvIHplcm8gd2hlbiBubyBzeW1ib2wgc2hvdWxkIGJlIHBvcHBl
ZC4gICovCiAgIGludCB5eWxlbiA9IDA7CiAKKyAgeXlzc3AgPSB5eXNzID0geXlzc2E7CisgIHl5
dnNwID0geXl2cyA9IHl5dnNhOworICB5eWxzcCA9IHl5bHMgPSB5eWxzYTsKKyAgeXlzdGFja3Np
emUgPSBZWUlOSVRERVBUSDsKKwogICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFydGluZyBwYXJz
ZVxuIikpOwogCiAgIHl5c3RhdGUgPSAwOwogICB5eWVycnN0YXR1cyA9IDA7CiAgIHl5bmVycnMg
PSAwOwotICB5eWNoYXIgPSBZWUVNUFRZOwkJLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFkLiAg
Ki8KLQotICAvKiBJbml0aWFsaXplIHN0YWNrIHBvaW50ZXJzLgotICAgICBXYXN0ZSBvbmUgZWxl
bWVudCBvZiB2YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2sKLSAgICAgc28gdGhhdCB0aGV5IHN0YXkg
b24gdGhlIHNhbWUgbGV2ZWwgYXMgdGhlIHN0YXRlIHN0YWNrLgotICAgICBUaGUgd2FzdGVkIGVs
ZW1lbnRzIGFyZSBuZXZlciBpbml0aWFsaXplZC4gICovCi0KLSAgeXlzc3AgPSB5eXNzOwotICB5
eXZzcCA9IHl5dnM7Ci0KKyAgeXljaGFyID0gWVlFTVBUWTsgLyogQ2F1c2UgYSB0b2tlbiB0byBi
ZSByZWFkLiAgKi8KKyAgeXlsc3BbMF0gPSB5eWxsb2M7CiAgIGdvdG8geXlzZXRzdGF0ZTsKIAog
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0uCkBAIC0xOTk3LDcgKzIwODQsNyBAQCBpbnQgeXluZXJyczsKIAkgICBtZW1vcnkuICAq
LwogCVlZU1RZUEUgKnl5dnMxID0geXl2czsKIAl5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsK
LQorCVlZTFRZUEUgKnl5bHMxID0geXlsczsKIAogCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRy
ZXNzIGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQogCSAgIGRhdGEgaW4gdXNlIGluIHRo
YXQgc3RhY2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKQEAgLTIwMDYsOSArMjA5Mywx
MCBAQCBpbnQgeXluZXJyczsKIAl5eW92ZXJmbG93IChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwK
IAkJICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9mICgqeXlzc3ApLAogCQkgICAgJnl5dnMxLCB5
eXNpemUgKiBzaXplb2YgKCp5eXZzcCksCi0KKwkJICAgICZ5eWxzMSwgeXlzaXplICogc2l6ZW9m
ICgqeXlsc3ApLAogCQkgICAgJnl5c3RhY2tzaXplKTsKIAorCXl5bHMgPSB5eWxzMTsKIAl5eXNz
ID0geXlzczE7CiAJeXl2cyA9IHl5dnMxOwogICAgICAgfQpAQCAtMjAyOSw5ICsyMTE3LDkgQEAg
aW50IHl5bmVycnM7CiAJICAodW5pb24geXlhbGxvYyAqKSBZWVNUQUNLX0FMTE9DIChZWVNUQUNL
X0JZVEVTICh5eXN0YWNrc2l6ZSkpOwogCWlmICghIHl5cHRyKQogCSAgZ290byB5eWV4aGF1c3Rl
ZGxhYjsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXNzKTsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXZz
KTsKLQorCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3NfYWxsb2MsIHl5c3MpOworCVlZU1RBQ0tfUkVM
T0NBVEUgKHl5dnNfYWxsb2MsIHl5dnMpOworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5bHNfYWxsb2Ms
IHl5bHMpOwogIyAgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQogCWlmICh5eXNzMSAhPSB5eXNzYSkK
IAkgIFlZU1RBQ0tfRlJFRSAoeXlzczEpOwpAQCAtMjA0MSw3ICsyMTI5LDcgQEAgaW50IHl5bmVy
cnM7CiAKICAgICAgIHl5c3NwID0geXlzcyArIHl5c2l6ZSAtIDE7CiAgICAgICB5eXZzcCA9IHl5
dnMgKyB5eXNpemUgLSAxOwotCisgICAgICB5eWxzcCA9IHl5bHMgKyB5eXNpemUgLSAxOwogCiAg
ICAgICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFjayBzaXplIGluY3JlYXNlZCB0byAlbHVcbiIs
CiAJCSAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0YWNrc2l6ZSkpOwpAQCAtMjA1Miw2ICsyMTQw
LDkgQEAgaW50IHl5bmVycnM7CiAKICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiRW50ZXJpbmcgc3Rh
dGUgJWRcbiIsIHl5c3RhdGUpKTsKIAorICBpZiAoeXlzdGF0ZSA9PSBZWUZJTkFMKQorICAgIFlZ
QUNDRVBUOworCiAgIGdvdG8geXliYWNrdXA7CiAKIC8qLS0tLS0tLS0tLS0uCkBAIC0yMDYwLDE2
ICsyMTUxLDE2IEBAIGludCB5eW5lcnJzOwogeXliYWNrdXA6CiAKICAgLyogRG8gYXBwcm9wcmlh
dGUgcHJvY2Vzc2luZyBnaXZlbiB0aGUgY3VycmVudCBzdGF0ZS4gIFJlYWQgYQotICAgICBsb29r
LWFoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAg
Ki8KKyAgICAgbG9va2FoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5
IGhhdmUgb25lLiAgKi8KIAotICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0
aG91dCByZWZlcmVuY2UgdG8gbG9vay1haGVhZCB0b2tlbi4gICovCisgIC8qIEZpcnN0IHRyeSB0
byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4u
ICAqLwogICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0gIGlmICh5eW4gPT0gWVlQQUNUX05JTkYp
CisgIGlmICh5eXBhY3RfdmFsdWVfaXNfZGVmYXVsdCAoeXluKSkKICAgICBnb3RvIHl5ZGVmYXVs
dDsKIAotICAvKiBOb3Qga25vd24gPT4gZ2V0IGEgbG9vay1haGVhZCB0b2tlbiBpZiBkb24ndCBh
bHJlYWR5IGhhdmUgb25lLiAgKi8KKyAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2thaGVhZCB0
b2tlbiBpZiBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KIAotICAvKiBZWUNIQVIgaXMgZWl0
aGVyIFlZRU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29rLWFoZWFkIHN5bWJvbC4gICovCisg
IC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRiBvciBhIHZhbGlkIGxvb2thaGVh
ZCBzeW1ib2wuICAqLwogICBpZiAoeXljaGFyID09IFlZRU1QVFkpCiAgICAgewogICAgICAgWVlE
UFJJTlRGICgoc3RkZXJyLCAiUmVhZGluZyBhIHRva2VuOiAiKSk7CkBAIC0yMDk1LDMwICsyMTg2
LDI4IEBAIHl5YmFja3VwOgogICB5eW4gPSB5eXRhYmxlW3l5bl07CiAgIGlmICh5eW4gPD0gMCkK
ICAgICB7Ci0gICAgICBpZiAoeXluID09IDAgfHwgeXluID09IFlZVEFCTEVfTklORikKLQlnb3Rv
IHl5ZXJybGFiOworICAgICAgaWYgKHl5dGFibGVfdmFsdWVfaXNfZXJyb3IgKHl5bikpCisgICAg
ICAgIGdvdG8geXllcnJsYWI7CiAgICAgICB5eW4gPSAteXluOwogICAgICAgZ290byB5eXJlZHVj
ZTsKICAgICB9CiAKLSAgaWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCiAgIC8q
IENvdW50IHRva2VucyBzaGlmdGVkIHNpbmNlIGVycm9yOyBhZnRlciB0aHJlZSwgdHVybiBvZmYg
ZXJyb3IKICAgICAgc3RhdHVzLiAgKi8KICAgaWYgKHl5ZXJyc3RhdHVzKQogICAgIHl5ZXJyc3Rh
dHVzLS07CiAKLSAgLyogU2hpZnQgdGhlIGxvb2stYWhlYWQgdG9rZW4uICAqLworICAvKiBTaGlm
dCB0aGUgbG9va2FoZWFkIHRva2VuLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmci
LCB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jKTsKIAotICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVk
IHRva2VuIHVubGVzcyBpdCBpcyBlb2YuICAqLwotICBpZiAoeXljaGFyICE9IFlZRU9GKQotICAg
IHl5Y2hhciA9IFlZRU1QVFk7CisgIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4uICAqLwor
ICB5eWNoYXIgPSBZWUVNUFRZOwogCiAgIHl5c3RhdGUgPSB5eW47CisgIFlZX0lHTk9SRV9NQVlC
RV9VTklOSVRJQUxJWkVEX0JFR0lOCiAgICorK3l5dnNwID0geXlsdmFsOwotCisgIFlZX0lHTk9S
RV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORAorICAqKyt5eWxzcCA9IHl5bGxvYzsKICAgZ290byB5
eW5ld3N0YXRlOwogCiAKQEAgLTIxNDksMTggKzIyMzgsMTkgQEAgeXlyZWR1Y2U6CiAgICAgIEdD
QyB3YXJuaW5nIHRoYXQgWVlWQUwgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZC4gICovCiAgIHl5
dmFsID0geXl2c3BbMS15eWxlbl07CiAKLQorICAvKiBEZWZhdWx0IGxvY2F0aW9uLiAgKi8KKyAg
WVlMTE9DX0RFRkFVTFQgKHl5bG9jLCAoeXlsc3AgLSB5eWxlbiksIHl5bGVuKTsKICAgWVlfUkVE
VUNFX1BSSU5UICh5eW4pOwogICBzd2l0Y2ggKHl5bikKICAgICB7Ci0gICAgICAgIGNhc2UgMjoK
KyAgICAgICAgY2FzZSA0OgogCiAgICAgewogICAgICAgICAvLyBUaGUgc3ltYm9sIHRhYmxlIHNl
YXJjaCB3YXMgZG9uZSBpbiB0aGUgbGV4aWNhbCBwaGFzZQogICAgICAgICBjb25zdCBUU3ltYm9s
KiBzeW1ib2wgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN5bWJvbDsKICAgICAgICAgY29uc3Qg
VFZhcmlhYmxlKiB2YXJpYWJsZTsKICAgICAgICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ1bmRlY2xh
cmVkIGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ1bmRlY2xh
cmVkIGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiBmYWtlVmFy
aWFibGUgPSBuZXcgVFZhcmlhYmxlKCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBl
KTsKQEAgLTIxNjksMTAgKzIyNTksMTcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAvLyBUaGlzIGlkZW50aWZpZXIgY2FuIG9ubHkgYmUgYSB2YXJpYWJsZSB0eXBl
IHN5bWJvbAogICAgICAgICAgICAgaWYgKCEgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ2
YXJpYWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLT5jX3N0cigp
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ2
YXJpYWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLT5jX3N0cigp
KTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3lt
Ym9sKTsKKworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmlzVmFyaWFibGVCdWlsdEluKHZhcmlh
YmxlKSAmJiAKKyAgICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5
KCkgJiYKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eWxz
cFsoMSkgLSAoMSldKSwgdmFyaWFibGUtPmdldEV4dGVuc2lvbigpKSkgeworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcsIGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVy
eSwgYW5kIHRoZSBwb29sCkBAIC0yMTgxLDIyICsyMjc4LDIzIEBAIHl5cmVkdWNlOgogICAgICAg
ICBpZiAodmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCApIHsK
ICAgICAgICAgICAgIENvbnN0YW50VW5pb24qIGNvbnN0QXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29u
c3RQb2ludGVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0KHZhcmlhYmxlLT5nZXRUeXBlKCkpOwot
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQs
ICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5
cGUoKSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFi
bGUtPmdldFR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVhazsKIAotICBjYXNl
IDM6CisgIGNhc2UgNToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0OgorICBjYXNlIDY6CiAKICAgICB7CiAg
ICAgICAgIC8vCkBAIC0yMjA0LDE1NSArMjMwMiwxNTEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8v
IGNoZWNrIGZvciBvdmVyZmxvdyBmb3IgY29uc3RhbnRzCiAgICAgICAgIC8vCiAgICAgICAgIGlm
IChhYnMoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5pKSA+PSAoMSA8PCAxNikpIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgIiBpbnRlZ2Vy
IGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
bHNwWygxKSAtICgxKV0pLCAiIGludGVnZXIgY29uc3RhbnQgb3ZlcmZsb3ciLCAiIik7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgQ29uc3RhbnRV
bmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFy
cmF5LT5zZXRJQ29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5pKTsKLSAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0
KSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3Rh
bnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDU6Cisg
IGNhc2UgNzoKIAogICAgIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5l
dyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5mKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgx
KV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2OgorICBjYXNlIDg6CiAKICAgICB7
CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsx
XTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KCh5eXZzcFsoMSkgLSAoMSldLmxleCku
Yik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAg
IDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBi
cmVhazsKIAotICBjYXNlIDc6CisgIGNhc2UgOToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4OgorICBjYXNl
IDEwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAotICBjYXNlIDk6CisgIGNhc2UgMTE6CiAKICAgICB7CiAgICAgICAgIGlm
ICghKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSAm
JiAhKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkg
JiYgISh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3Rvcigp
KSB7CiAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldEFzU3ltYm9sTm9kZSgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgIiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlw
ZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKS5jX3N0cigpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDQpXSksICIgbGVm
dCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc1N5bWJvbE5vZGUoKS0+
Z2V0U3ltYm9sKCkuY19zdHIoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIGxlZnQgb2YgJ1sn
IGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAiZXhwcmVzc2lvbiIp
OworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoNCldKSwgIiBs
ZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgImV4
cHJlc3Npb24iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQot
ICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCAmJiAoeXl2c3BbKDMpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAg
ICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
aXNBcnJheSgpKSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIGFycmF5cwotICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0QXJy
YXlOb2RlKCh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0Nv
bnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCksICh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5s
ZXgpLmxpbmUpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkgeyAgLy8gY29uc3RhbnQgZm9sZGluZyBm
b3IgdmVjdG9ycwotICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVsZHMgZmllbGRzOwotICAgICAg
ICAgICAgICAgIGZpZWxkcy5udW0gPSAxOwotICAgICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRz
WzBdID0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29u
c3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsgLy8gbmVl
ZCB0byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJy
YXkKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmlzTWF0cml4KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKLSAgICAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25z
dE1hdHJpeE5vZGUoKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwg
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAo
NCldLmxleCkubGluZSk7CisgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAg
IGludCBpbmRleCA9ICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOworICAgICAgICAgICAgaWYgKGluZGV4
IDwgMCkgeworICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGluZm9TdHJlYW07Cisg
ICAgICAgICAgICAgICAgaW5mb1N0cmVhbSA8PCBpbmRleDsKKyAgICAgICAgICAgICAgICBzdGQ6
OnN0cmluZyBpbmZvID0gaW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXlsc3BbKDMpIC0gKDQpXSksICJuZWdhdGl2ZSBpbmRleCIsIGluZm8uY19zdHIo
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAg
IGluZGV4ID0gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGlmICgoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlm
aWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpIHx8ICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSAmJiAoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkg
PD0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3Rh
bnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSAmJiAhKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAg
ICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2Yg
cmFuZ2UgJyIgPDwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8
PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJh
SW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCku
Z2V0QXJyYXlTaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldE1h
eEFycmF5U2l6ZSgpIDw9ICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
U2V0TWF4U2l6ZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
QXNTeW1ib2xOb2RlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRUeXBlUG9pbnRlcigpLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElD
b25zdCgpLCB0cnVlLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVNldE1heFNpemUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldEFzU3ltYm9sTm9kZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50ZXIoKSwgMCwgZmFsc2UsICh5eXZzcFso
MikgLSAoNCldLmxleCkubGluZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggKHl5dnNwWygzKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9p
bnRlcigpLT5nZXRJQ29uc3QoKSA+PSAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJh
bmdlICciIDw8ICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRB
c0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkgPDwg
IiciOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9
IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIiLCAiWyIsIGV4dHJhSW5m
by5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7CisgICAgICAgICAgICBp
ZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgeworICAgICAgICAgICAgICAgIGlmICgoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7IC8vIGNvbnN0
YW50IGZvbGRpbmcgZm9yIGFycmF5cworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdEFycmF5Tm9kZShpbmRleCwgKHl5
dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoNCld
KSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkgeyAgLy8gY29uc3RhbnQgZm9sZGluZyBmb3Ig
dmVjdG9ycworICAgICAgICAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKKyAgICAg
ICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CisgICAgICAgICAgICAgICAgICAgIGZpZWxk
cy5vZmZzZXRzWzBdID0gaW5kZXg7IC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSB2
Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5CisgICAgICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShm
aWVsZHMsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3Bb
KDIpIC0gKDQpXSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpIHsgLy8gY29uc3RhbnQgZm9s
ZGluZyBmb3IgbWF0cmljZXMKKyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RNYXRyaXhOb2RlKGluZGV4LCAoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICg0KV0pKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgp
ICYmICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCku
Z2V0QXJyYXlTaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIiLCAiWyIsICJhcnJheSBtdXN0IGJlIHJl
ZGVjbGFyZWQgd2l0aCBhIHNpemUgYmVmb3JlIGJlaW5nIGluZGV4ZWQgd2l0aCBhIHZhcmlhYmxl
Iik7CisgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5pc0FycmF5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0
QXJyYXlTaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVh
bSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVh
bS5zdHIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFso
MikgLSAoNCldKSwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZXggPSAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgp
LmdldEFycmF5U2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5pc1ZlY3RvcigpIHx8ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5pc01hdHJpeCgpKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gaW5kZXgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAgICAgICAg
ICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIg
PDwgaW5kZXggPDwgIiciOworICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUlu
Zm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFsoMikgLSAoNCldKSwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOwog
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAg
ICAgIGluZGV4ID0gICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSAtIDE7CiAgICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4SW5kaXJlY3QsICh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICAo
eXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVu
aW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7CisgICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eWxzcFsoMikgLSAoNCldKSk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgKHl5dnNwWygxKSAtICg0KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDQpXSkpOwogICAgICAgICB9CiAgICAgICAgIGlmICgo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewogICAgICAgICAgICAgQ29uc3Rh
bnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAg
dW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUNvbnN0KSwgKHl5dnNwWygy
KSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoNCld
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzQXJyYXkoKSkgewogICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpCi0gICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3Ry
dWN0KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBl
KCkuZ2V0VHlwZU5hbWUoKSkpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKSk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRU
eXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5
cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNp
c2lvbigpLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+aXNNYXRyaXgoKSkpOwogCiAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9
PSBFdnFDb25zdCkKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFDb25zdCk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0
cml4KCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5
cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QsICh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0g
ICAgICAgIGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5pc01hdHJpeCgpKQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYg
KCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpICYm
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0
UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0KSk7Ci0gICAgICAgIGVsc2Ug
aWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3Rvcigp
KQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRU
eXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5
cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNp
c2lvbigpLCBFdnFUZW1wb3JhcnkpKTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgaWYg
KCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSB7
CisgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29u
c3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgcXVhbGlmaWVyLCAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOworICAg
ICAgICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5pc1ZlY3RvcigpKSB7CisgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlm
aWVyKCkgPT0gRXZxQ29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgcXVhbGlm
aWVyKSk7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPnNldFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldFR5cGUoKSk7Ci0gICAgO30KKyAgICAgICAgfQorICAgIH0KICAgICBicmVhazsK
IAotICBjYXNlIDEwOgorICBjYXNlIDEyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDExOgorICBjYXNlIDEz
OgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNw
WygzKSAtICgzKV0ubGV4KS5saW5lLCAiY2Fubm90IGFwcGx5IGRvdCBvcGVyYXRvciB0byBhbiBh
cnJheSIsICIuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDMp
XSksICJjYW5ub3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkgewogICAg
ICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0
LT5wYXJzZVZlY3RvckZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBm
aWVsZHMsICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSkpIHsKKyAgICAgICAgICAgIGlmICgh
IGNvbnRleHQtPnBhcnNlVmVjdG9yRmllbGRzKCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmlu
ZywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxT
aXplKCksIGZpZWxkcywgKHl5bHNwWygzKSAtICgzKV0pKSkgewogICAgICAgICAgICAgICAgIGZp
ZWxkcy5udW0gPSAxOwogICAgICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzWzBdID0gMDsKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7IC8vIGNvbnN0YW50IGZvbGRpbmcg
Zm9yIHZlY3RvciBmaWVsZHMKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5s
aW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygzKSAtICgzKV0pKTsKICAgICAgICAgICAgICAg
ICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKQEAgLTIzNjEsMTMgKzI0NTUsMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCks
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24o
KSwgRXZxQ29uc3QsIChpbnQpICgqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcpLnNpemUo
KSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBUU3RyaW5nIHZlY3Rv
clN0cmluZyA9ICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZzsKLSAgICAgICAgICAgICAg
ICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUo
ZmllbGRzLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJ
bmRleChFT3BWZWN0b3JTd2l6emxlLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAg
ICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6
emxlKGZpZWxkcywgKHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgo
RU9wVmVjdG9yU3dpenpsZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksIGluZGV4LCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAo
aW50KSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4
KCkpIHsKICAgICAgICAgICAgIFRNYXRyaXhGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYg
KCEgY29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3Ry
aW5nLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5h
bFNpemUoKSwgZmllbGRzLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpKSB7CisgICAgICAg
ICAgICBpZiAoISBjb250ZXh0LT5wYXJzZU1hdHJpeEZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0u
bGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsICh5eWxzcFsoMykgLSAoMyldKSkpIHsKICAgICAgICAg
ICAgICAgICBmaWVsZHMud2hvbGVSb3cgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmaWVsZHMu
d2hvbGVDb2wgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmaWVsZHMucm93ID0gMDsKQEAgLTIz
NzYsMTA4ICsyNDcwLDEwMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKGZpZWxkcy53aG9sZVJvdyB8fCBmaWVsZHMud2hvbGVDb2wpIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIgbm9uLXNj
YWxhciBmaWVsZHMgbm90IGltcGxlbWVudGVkIHlldCIsICIuIik7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIG5vbi1zY2FsYXIgZmllbGRzIG5v
dCBpbXBsZW1lbnRlZCB5ZXQiLCAiLiIpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENv
bnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KDAp
OwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksIGluZGV4LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAg
ICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwg
RXZxQ29uc3QpLCAoeXlsc3BbKDMpIC0gKDMpXSkpOworICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChF
T3BJbmRleERpcmVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IGluZGV4LCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSxFdnFUZW1wb3JhcnksICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpKSk7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVu
aW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRJQ29uc3QoZmllbGRzLmNvbCAqICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpICsgZmllbGRzLnJvdyk7Ci0gICAgICAgICAg
ICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25z
dCksICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4
KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAgICAg
VEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5
eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eWxz
cFsoMikgLSAoMyldKSk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldFByZWNpc2lvbigpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2lj
VHlwZSgpID09IEVidFN0cnVjdCkgewogICAgICAgICAgICAgYm9vbCBmaWVsZEZvdW5kID0gZmFs
c2U7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZUxpc3QqIGZpZWxkcyA9ICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAg
ICAgICAgICBpZiAoZmllbGRzID09IDApIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJzdHJ1Y3R1cmUgaGFzIG5vIGZpZWxkcyIs
ICJJbnRlcm5hbCBFcnJvciIpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7Ci0gICAgICAgICAgICAgICAgZm9yIChp
ID0gMDsgaSA8IGZpZWxkcy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCgqZmllbGRzKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSAqKHl5dnNwWygzKSAtICgzKV0u
bGV4KS5zdHJpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkRm91bmQgPSB0cnVl
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9ICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPmZpZWxkcygp
OworICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgZmllbGRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGZpZWxkc1tpXS0+
bmFtZSgpID09ICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZykgeworICAgICAgICAgICAg
ICAgICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5h
ZGRDb25zdFN0cnVjdCgqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxp
bmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0eXBlLCBub3Qgb2Yg
dGhlIHN0cnVjdHVyZSBmaWVsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIHRo
ZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyBzaGFyZWQgYmV0d2VlbiB2YXJpb3VzIHN0cnVjdHVy
ZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFu
dFVuaW9uWzFdOwotICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0
KGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksICooKmZpZWxkcylb
aV0udHlwZSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdFN0cnVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoZmllbGRGb3VuZCkgeworICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2
cUNvbnN0KSB7CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0KCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0
cmluZywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFso
MikgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoKmZp
ZWxkc1tpXS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZSB0aGUg
cXVhbGlmaWVyIG9mIHRoZSByZXR1cm4gdHlwZSwgbm90IG9mIHRoZSBzdHJ1Y3R1cmUgZmllbGQK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBp
cyBzaGFyZWQgYmV0d2VlbiB2YXJpb3VzIHN0cnVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGVQb2ludGVyKCktPnNl
dFF1YWxpZmllcihFdnFDb25zdCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDIpIC0gKDMpXS5sZXgpLmxpbmUsICIgbm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1cmUiLCAoeXl2
c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CisgICAgICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvblsxXTsKKyAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNv
bnN0KGkpOworICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgKmZpZWxkc1tpXS0+
dHlwZSgpLCAoeXlsc3BbKDMpIC0gKDMpXSkpOworICAgICAgICAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgo
RU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCBpbmRleCwgKHl5bHNwWygyKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUo
KSk7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIgbm8gc3VjaCBmaWVsZCBp
biBzdHJ1Y3R1cmUiLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiIGZpZWxkIHNl
bGVjdGlvbiByZXF1aXJlcyBzdHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFu
ZCBzaWRlIiwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIGZpZWxkIHNlbGVjdGlv
biByZXF1aXJlcyBzdHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRl
IiwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAg
ICAgIH0KICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlICQzLnN0cmluZywgaXQncyBmcm9tIHRoZSBw
b29sCi0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMjoKKyAgY2FzZSAxNDoK
IAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygy
KSAtICgyKV0ubGV4KS5saW5lLCAiKysiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxz
cFsoMikgLSAoMildKSwgIisrIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlN
YXRoKEVPcFBvc3RJbmNyZW1lbnQsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVtZW50LCAoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgyKV0pLCBjb250ZXh0LT5z
eW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAo
MildLmxleCkubGluZSwgIisrIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlP
cEVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgIisrIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAg
IH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDEzOgorICBjYXNlIDE1Ogog
CiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDIp
IC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNw
WygyKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1h
dGgoRU9wUG9zdERlY3JlbWVudCwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNyZW1lbnQsICh5eXZzcFsoMSkgLSAoMild
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDIpXSksIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgy
KV0ubGV4KS5saW5lLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9w
RXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAg
fQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ6CisgIGNhc2UgMTY6CiAK
ICAgICB7CiAgICAgICAgIGlmIChjb250ZXh0LT5pbnRlZ2VyRXJyb3JDaGVjaygoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgIltdIikpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTU6CisgIGNhc2UgMTc6CiAKICAgICB7CiAgICAgICAg
IFRGdW5jdGlvbiogZm5DYWxsID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5mdW5jdGlvbjsK
QEAgLTI0OTEsMTggKzI1NzksMTggQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAvLyBUaGVpciBw
YXJhbWV0ZXJzIHdpbGwgYmUgdmVyaWZpZWQgYWxnb3JpdGhtaWNhbGx5LgogICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsgIC8vIHVz
ZSB0aGlzIHRvIGdldCB0aGUgdHlwZSBiYWNrCi0gICAgICAgICAgICBpZiAoY29udGV4dC0+Y29u
c3RydWN0b3JFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAqZm5DYWxsLCBvcCwgJnR5cGUpKSB7Cisg
ICAgICAgICAgICBpZiAoY29udGV4dC0+Y29uc3RydWN0b3JFcnJvckNoZWNrKCh5eWxzcFsoMSkg
LSAoMSldKSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAqZm5DYWxsLCBv
cCwgJnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8KICAgICAg
ICAgICAgICAgICAvLyBJdCdzIGEgY29uc3RydWN0b3IsIG9mIHR5cGUgJ3R5cGUnLgogICAgICAg
ICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+YWRkQ29uc3RydWN0b3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5p
bnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5s
aW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5hZGRDb25zdHJ1Y3RvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5v
ZGUsICZ0eXBlLCBvcCwgZm5DYWxsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDAp
IHsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNl
dEFnZ3JlZ2F0ZU9wZXJhdG9yKDAsIG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUp
OworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+c2V0VHlwZSh0eXBlKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTI1MTEsMTMg
KzI1OTksMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgY29uc3Qg
VEZ1bmN0aW9uKiBmbkNhbmRpZGF0ZTsKICAgICAgICAgICAgIGJvb2wgYnVpbHRJbjsKLSAgICAg
ICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKCh5eXZzcFsoMSkgLSAo
MSldLmludGVybSkubGluZSwgZm5DYWxsLCAmYnVpbHRJbik7CisgICAgICAgICAgICBmbkNhbmRp
ZGF0ZSA9IGNvbnRleHQtPmZpbmRGdW5jdGlvbigoeXlsc3BbKDEpIC0gKDEpXSksIGZuQ2FsbCwg
JmJ1aWx0SW4pOwogICAgICAgICAgICAgaWYgKGZuQ2FuZGlkYXRlKSB7CiAgICAgICAgICAgICAg
ICAgLy8KICAgICAgICAgICAgICAgICAvLyBBIGRlY2xhcmVkIGZ1bmN0aW9uLgogICAgICAgICAg
ICAgICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKGJ1aWx0SW4gJiYgIWZuQ2FuZGlkYXRlLT5n
ZXRFeHRlbnNpb24oKS5lbXB0eSgpICYmCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmV4
dGVuc2lvbkVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCBmbkNhbmRp
ZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmV4
dGVuc2lvbkVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBmbkNhbmRpZGF0ZS0+Z2V0RXh0
ZW5zaW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3AgPSBmbkNhbmRpZGF0ZS0+Z2V0QnVp
bHRJbk9wKCk7CkBAIC0yNTI5LDcgKzI2MTcsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmVhdCBpdCBsaWtlIGEg
YnVpbHQtaW4gdW5hcnkgb3BlcmF0b3IuCiAgICAgICAgICAgICAgICAgICAgICAgICAvLwotICAg
ICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChvcCwgKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtKS5pbnRlcm1Ob2RlLCAwLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkVW5hcnlNYXRoKG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVy
bU5vZGUsICh5eWxzcFsoMSkgLSAoMSldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAw
KSAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJh
SW5mb1N0cmVhbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0g
PDwgImJ1aWx0IGluIHVuYXJ5IG9wZXJhdG9yIGZ1bmN0aW9uLiAgVHlwZTogIiA8PCBzdGF0aWNf
Y2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpOwpAQCAtMjUzOCwxMiArMjYyNiwxMiBAQCB5eXJlZHVjZToK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZWUVSUk9SOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJt
QWdncmVnYXRlLCBvcCwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0pLmludGVybUFnZ3JlZ2F0ZSwgb3AsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAvLyBUaGlzIGlzIGEgcmVhbCBmdW5jdGlvbiBjYWxsCiAKLSAgICAgICAgICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNl
dEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVn
YXRlLCBFT3BGdW5jdGlvbkNhbGwsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7Cisg
ICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgRU9wRnVuY3Rpb25DYWxsLCAoeXlsc3BbKDEpIC0gKDEp
XSkpOwogICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PnNldFR5cGUoZm5DYW5kaWRhdGUtPmdldFJldHVyblR5cGUoKSk7CiAKICAgICAgICAgICAgICAg
ICAgICAgLy8gdGhpcyBpcyBob3cgd2Uga25vdyB3aGV0aGVyIHRoZSBnaXZlbiBmdW5jdGlvbiBp
cyBhIGJ1aWx0SW4gZnVuY3Rpb24gb3IgYSB1c2VyIGRlZmluZWQgZnVuY3Rpb24KQEAgLTI1NzAs
OTAgKzI2NTgsODggQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgLy8gUHV0IG9uIGEgZHVt
bXkgbm9kZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9u
ICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5p
b25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
ICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGRlbGV0ZSBmbkNhbGw7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjoKKyAgY2FzZSAxODoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pOwotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc6CisgIGNhc2UgMTk6CiAKICAgICB7
Ci0gICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMykgLSAoMyldLmludGVybSkubGluZSwg
Im1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQiLCAiIik7CisgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eWxzcFsoMykgLSAoMyldKSwgIm1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQiLCAiIik7CiAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTg6CisgIGNhc2UgMjA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5
eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAot
ICBjYXNlIDE5OgorICBjYXNlIDIxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9
ICh5eXZzcFsoMSkgLSAoMildLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUg
PSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAyMDoKKyAgY2FzZSAyMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bSkuZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgICAg
ICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1Ob2RlID0gMDsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDIxOgorICBjYXNlIDIzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMjI6CisgIGNhc2UgMjQ6CiAKICAgICB7CiAgICAgICAgIFRQYXJhbWV0
ZXIgcGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0VHlwZSgpKSB9OwogICAgICAgICAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0uZnVuY3Rpb24pLT5hZGRQYXJhbWV0ZXIocGFyYW0pOwogICAgICAgICAoeXl2YWwuaW50ZXJt
KS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbik7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDIzOgor
ICBjYXNlIDI1OgogCiAgICAgewogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcg
VFR5cGUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUo
KSkgfTsKICAgICAgICAgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+YWRkUGFy
YW1ldGVyKHBhcmFtKTsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRl
cm1Ob2RlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAg
ICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1Ob2RlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dB
Z2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pKTsKKyAg
ICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDoKKyAgY2FzZSAyNjoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVu
Y3Rpb24pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjU6CisgIGNhc2Ug
Mjc6CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC0yNjY3LDM5ICsyNzUzLDM5IEBAIHl5cmVkdWNl
OgogICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICBpZiAoKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLm1hdHJpeCkgewogICAgICAgICAgICAgICAgICAgICBz
d2l0Y2goKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9
IEVPcENvbnN0cnVjdE1hdDI7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDM7
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDQ7ICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdE1hdDI7ICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdE1hdDM7ICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdE1hdDQ7ICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2l6ZSkg
ewotICAgICAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9w
Q29uc3RydWN0VmVjMjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjMzsgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjNDsgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0VmVjMjsgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0VmVjMzsgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0VmVjNDsgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAgICAgICAgICAgICAgc3dpdGNo
KCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5zaXplKSB7Ci0gICAgICAgICAgICAgICAg
Y2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BD
b25zdHJ1Y3RJbnQ7ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFH
X1ZFUlRfT05MWSgiaXZlYzIiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7
IG9wID0gRU9wQ29uc3RydWN0SVZlYzI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzog
ICAgICAgRlJBR19WRVJUX09OTFkoIml2ZWMzIiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5
cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWMzOyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjNCIsICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjNDsgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEludDsgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0SVZlYzI7IGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdElWZWM0OyBicmVhazsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEVidEJv
b2w6CiAgICAgICAgICAgICAgICAgc3dpdGNoKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBl
KS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RCb29sOyAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiYnZlYzIiLCAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzI7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWMzIiwg
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJW
ZWMzOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZ
KCJidmVjNCIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BD
b25zdHJ1Y3RCVmVjNDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENv
bnN0cnVjdEJvb2w7ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29u
c3RydWN0QlZlYzI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25z
dHJ1Y3RCVmVjMzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0
cnVjdEJWZWM0OyBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChvcCA9PSBFT3BOdWxsKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJjYW5ub3QgY29uc3RydWN0IHRo
aXMgdHlwZSIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50
eXBlKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0p
LCAiY2Fubm90IGNvbnN0cnVjdCB0aGlzIHR5cGUiLCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSku
dHlwZSA9IEVidEZsb2F0OwogICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7
CkBAIC0yNzA5LDcxICsyNzk1LDYwIEBAIHl5cmVkdWNlOgogICAgICAgICBUVHlwZSB0eXBlKCh5
eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKSk7CiAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rp
b24gPSBuZXcgVEZ1bmN0aW9uKCZ0ZW1wU3RyaW5nLCB0eXBlLCBvcCk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0gICAgO30KLSAgICBicmVhazsKLQotICBj
YXNlIDI2OgotCi0gICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNr
KCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3Ry
aW5nKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlw
ZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0g
bmV3IFRGdW5jdGlvbigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZywgdHlwZSk7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAyNzoKKyAgY2FzZSAyODoKIAogICAgIHsKLSAgICAgICAgaWYg
KGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUs
ICooeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5y
ZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCAqKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBU
VHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgIFRGdW5jdGlvbiAqZnVu
Y3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBl
KTsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBmdW5jdGlvbjsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDI4OgorICBjYXNlIDI5OgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBj
YXNlIDI5OgorICBjYXNlIDMwOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVl
RXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICIrKyIsICh5eXZzcFsoMikg
LSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxW
YWx1ZUVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCAiKysiLCAoeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlSW5jcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlSW5jcmVtZW50
LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygxKSAt
ICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVy
cm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIisrIiwgKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgIisrIiwgKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNl
IDMwOgorICBjYXNlIDMxOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJy
b3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFsoMikgLSAo
MildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1
ZUVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAo
eXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygxKSAtICgy
KV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9y
KCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIi0tIiwgKHl5dnNwWygyKSAtICgyKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAg
Y29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgIi0tIiwgKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDMx
OgorICBjYXNlIDMyOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtKS5vcCAhPSBFT3BOdWxsKSB7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCh5eXZzcFsoMSkg
LSAoMildLmludGVybSkub3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5vcCwg
KHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMSkgLSAo
MildKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZXJyb3JPcCA9ICIiOwogICAgICAgICAgICAgICAgIHN3aXRjaCgoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0pLm9wKSB7CkBAIC0yNzgxLDM1NyArMjg1NiwzNTUgQEAgeXlyZWR1Y2U6CiAgICAgICAg
ICAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OiBlcnJvck9wID0gIiEiOyBicmVhazsKICAgICAg
ICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGlu
ZSwgZXJyb3JPcCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJv
cigoeXlsc3BbKDEpIC0gKDIpXSksIGVycm9yT3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7Ci0gICAgO30KLSAgICBicmVhazsKLQotICBjYXNlIDMyOgotCi0gICAgeyAoeXl2YWwuaW50
ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5v
cCA9IEVPcE51bGw7IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMzM6CiAKLSAgICB7
ICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZh
bC5pbnRlcm0pLm9wID0gRU9wTmVnYXRpdmU7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9
IEVPcE51bGw7IH0KICAgICBicmVhazsKIAogICBjYXNlIDM0OgogCi0gICAgeyAoeXl2YWwuaW50
ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5v
cCA9IEVPcExvZ2ljYWxOb3Q7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE5lZ2F0
aXZlOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAzNToKIAotICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcExvZ2ljYWxOb3Q7IH0KICAgICBi
cmVhazsKIAogICBjYXNlIDM2OgogCisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQorICAgIGJy
ZWFrOworCisgIGNhc2UgMzc6CisKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIqIiwg
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVs
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BNdWwsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5z
eW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUsICIqIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiKiIsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzc6
CisgIGNhc2UgMzg6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIvIiwgKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRGl2LCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29u
dGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BEaXYsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkg
ewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5s
ZXgpLmxpbmUsICIvIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiLyIsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsK
ICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzg6CisgIGNh
c2UgMzk6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDM5OgorICBjYXNlIDQwOgogCiAgICAgewot
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcEFkZCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXls
c3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5i
aW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIisiLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5n
KCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMp
XSksICIrIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0MDoKKyAgY2FzZSA0MToKIAogICAgIHsKLSAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEJpbmFyeU1hdGgoRU9wU3ViLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmlu
YXJ5TWF0aChFT3BTdWIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAt
ICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BF
cnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICItIiwgKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiLSIs
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgNDE6CisgIGNhc2UgNDI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDQy
OgorICBjYXNlIDQzOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0MzoKKyAgY2FzZSA0NDoKIAog
ICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwog
ICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5l
LCAiPCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9y
KCh5eWxzcFsoMikgLSAoMyldKSwgIjwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9
IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0
KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxp
bmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAg
IH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDQ0OgorICBjYXNlIDQ1Ogog
CiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW4sICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkg
ewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5s
ZXgpLmxpbmUsICI+IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiPiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlv
bkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5z
ZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsK
ICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDU6CisgIGNh
c2UgNDY6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1YWwsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1
YWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3Bb
KDIpIC0gKDMpXS5sZXgpLmxpbmUsICI8PSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIjw9IiwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0
YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAg
IHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3Bb
KDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA0NjoKKyAgY2FzZSA0NzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3Jl
YXRlclRoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1h
dGgoRU9wR3JlYXRlclRoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXls
c3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5i
aW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIj49IiwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgz
KV0pLCAiPj0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAotICBjYXNlIDQ3OgorICBjYXNlIDQ4OgogCi0gICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA0ODoKKyAgY2FzZSA0OToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9w
RXF1YWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4
KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVx
dWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29u
dGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lLCAiPT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAg
Y29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICI9PSIsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25z
dGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAg
ICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5
eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1
bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNw
WygyKSAtICgzKV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0g
IGNhc2UgNDk6CisgIGNhc2UgNTA6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5v
dEVxdWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxl
eCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BO
b3RFcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSks
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5
eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiE9IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIT0iLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAg
Q29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAg
ICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5
eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQotICAgIGJyZWFrOwotCi0gIGNh
c2UgNTA6Ci0KLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIH0KICAgICBicmVhazsK
IAogICBjYXNlIDUxOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1MjoKIAotICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgNTM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDU0OgogCisgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsgfQorICAgIGJyZWFrOworCisgIGNhc2UgNTU6CisKICAgICB7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlm
ICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICImJiIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFso
MikgLSAoMyldKSwgIiYmIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7
Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1NToKKyAgY2FzZSA1NjoKIAotICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgNTY6CisgIGNhc2UgNTc6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcExvZ2ljYWxYb3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5h
cnlNYXRoKEVPcExvZ2ljYWxYb3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNw
WygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+Ymlu
YXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJeXiIsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyld
KSwgIl5eIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlv
blsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1NzoKKyAgY2FzZSA1ODoKIAotICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCi0g
IGNhc2UgNTg6CisgIGNhc2UgNTk6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExv
Z2ljYWxPciwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5s
ZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9w
TG9naWNhbE9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyld
KSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3Io
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAifHwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJ8fCIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAg
ICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25z
dCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
KHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCi0gIGNhc2UgNTk6CisgIGNhc2UgNjA6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7
fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDYwOgor
ICBjYXNlIDYxOgogCiAgICAgewotICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygo
eXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpKSkKKyAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNw
WygyKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigo
eXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg1
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2Vs
ZWN0aW9uKCh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoNSldKSk7CiAgICAgICAgIGlmICgo
eXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpICE9ICh5
eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpCiAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogCiAgICAgICAgIGlm
ICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICI6IiwgKHl5
dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5n
KCksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygy
KSAtICg1KV0pLCAiOiIsICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjE6CisgIGNhc2UgNjI6CiAKLSAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVh
azsKIAotICBjYXNlIDYyOgorICBjYXNlIDYzOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4
dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0pLmxpbmUsICJhc3Np
Z24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCisgICAgICAg
IGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMyldKSwgImFzc2ln
biIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEFzc2lnbigoeXl2c3BbKDIpIC0gKDMp
XS5pbnRlcm0pLm9wLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAo
MyldLmludGVybSkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRBc3NpZ24oKHl5dnNwWygyKSAtICgzKV0uaW50
ZXJtKS5vcCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSkp
OwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9yKCh5eXZzcFsoMikgLSAoMyldLmludGVybSku
bGluZSwgImFzc2lnbiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5hc3Np
Z25FcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CiAgICAgICAgIH0KLSAgICA7fQotICAgIGJyZWFrOwotCi0gIGNhc2UgNjM6Ci0KLSAgICB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9
ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBc3Np
Z247IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjQ6CiAKLSAgICB7IEZSQUdfVkVS
VF9PTkxZKCIqPSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50
ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5v
cCA9IEVPcE11bEFzc2lnbjsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQXNzaWdu
OyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2NToKIAotICAgIHsgRlJBR19WRVJUX09OTFkoIi89
IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUg
PSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wRGl2
QXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BNdWxBc3NpZ247IH0KICAg
ICBicmVhazsKIAogICBjYXNlIDY2OgogCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQWRkQXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybSkub3AgPSBFT3BEaXZBc3NpZ247IH0KICAgICBicmVhazsKIAogICBjYXNlIDY3OgogCi0g
ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmxp
bmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9w
U3ViQXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBZGRBc3NpZ247IH0K
ICAgICBicmVhazsKIAogICBjYXNlIDY4OgogCisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVP
cFN1YkFzc2lnbjsgfQorICAgIGJyZWFrOworCisgIGNhc2UgNjk6CisKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
Njk6CisgIGNhc2UgNzA6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb21tYSgoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb21t
YSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAg
ICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAg
ICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIs
IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5
bHNwWygyKSAtICgzKV0pLCAiLCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzA6CisgIGNhc2UgNzE6CiAKICAg
ICB7CiAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDcxOgorICBjYXNlIDcyOgogCiAgICAgewogICAgICAgICBURnVuY3Rpb24g
JmZ1bmN0aW9uID0gKigoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmZ1bmN0aW9uKTsKQEAgLTMx
NDUsMTMgKzMyMTgsMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBjb25zdCBUUGFyYW1ldGVy
ICZwYXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOwogICAgICAgICAgICAgaWYgKHBhcmFtLm5h
bWUgIT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUVmFyaWFibGUgKnZhcmlh
YmxlID0gbmV3IFRWYXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlwZSk7CisgICAgICAgICAg
ICAgICAgVFZhcmlhYmxlIHZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJhbS50eXBlKTsKICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRT
eW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLT5nZXROYW1lKCksIHZhcmlh
YmxlLT5nZXRUeXBlKCksICh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSksICh5eXZzcFso
MSkgLSAoMildLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLmdldE5h
bWUoKSwgdmFyaWFibGUuZ2V0VHlwZSgpLCAoeXlsc3BbKDEpIC0gKDIpXSkpLCAoeXlsc3BbKDEp
IC0gKDIpXSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93
QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAi
IiwgKnBhcmFtLnR5cGUsICh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSksICh5eXZzcFso
MSkgLSAoMildLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgKHl5bHNwWygxKSAtICgyKV0p
KSwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICAKQEAgLTMxNTksMzQgKzMyMzIsMzQgQEAgeXlyZWR1Y2U6CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSBwcm90b3R5cGU7CiAKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFi
bGUucG9wKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3MjoKKyAgY2Fz
ZSA3MzoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMildLmludGVybSkuaW50
ZXJtQWdncmVnYXRlKQogICAgICAgICAgICAgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUtPnNldE9wKEVPcERlY2xhcmF0aW9uKTsKICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybSkuaW50ZXJtQWdncmVnYXRl
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzM6CisgIGNhc2UgNzQ6CiAK
ICAgICB7CiAgICAgICAgIGlmICgoKHl5dnNwWygyKSAtICg0KV0uaW50ZXJtLnByZWNpc2lvbikg
PT0gRWJwSGlnaCkgJiYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gU0hfRlJBR01FTlRfU0hBREVS
KSAmJiAhY29udGV4dC0+ZnJhZ21lbnRQcmVjaXNpb25IaWdoKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDQpXS5sZXgpLmxpbmUsICJwcmVjaXNpb24gaXMgbm90
IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoNCldKSwgInByZWNpc2lvbiBpcyBub3Qgc3VwcG9y
dGVkIGluIGZyYWdtZW50IHNoYWRlciIsICJoaWdocCIpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGlmICghY29udGV4dC0+c3ltYm9sVGFibGUu
c2V0RGVmYXVsdFByZWNpc2lvbiggKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2
c3BbKDIpIC0gKDQpXS5pbnRlcm0ucHJlY2lzaW9uKSApKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXl2c3BbKDEpIC0gKDQpXS5sZXgpLmxpbmUsICJpbGxlZ2FsIHR5cGUgYXJndW1l
bnQgZm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCh5eXZz
cFsoMykgLSAoNCldLmludGVybS50eXBlKS50eXBlKSk7CisgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXlsc3BbKDEpIC0gKDQpXSksICJpbGxlZ2FsIHR5cGUgYXJndW1lbnQgZm9yIGRlZmF1
bHQgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFsoMykgLSAoNCld
LmludGVybS50eXBlKS50eXBlKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3NDoKKyAgY2FzZSA3NToKIAogICAgIHsKICAg
ICAgICAgLy8KQEAgLTMyMDAsMTIgKzMyNzMsMTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRGdW5j
dGlvbiogcHJldkRlYyA9IHN0YXRpY19jYXN0PFRGdW5jdGlvbio+KGNvbnRleHQtPnN5bWJvbFRh
YmxlLmZpbmQoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0TWFuZ2xlZE5h
bWUoKSkpOwogICAgICAgICBpZiAocHJldkRlYykgewogICAgICAgICAgICAgaWYgKHByZXZEZWMt
PmdldFJldHVyblR5cGUoKSAhPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5n
ZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDIpIC0gKDIpXS5sZXgpLmxpbmUsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhl
IHNhbWUgcmV0dXJuIHR5cGUiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5n
ZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBo
YXZlIHRoZSBzYW1lIHJldHVybiB0eXBlIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0
aW9uKS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCkpOwogICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFyYW1Db3VudCgpOyArK2kpIHsKICAgICAgICAg
ICAgICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkgIT0g
KHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0
UXVhbGlmaWVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNw
WygyKSAtICgyKV0ubGV4KS5saW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRo
ZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1
bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJvdmVybG9h
ZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRQYXJhbShpKS50eXBlLT5nZXRR
dWFsaWZpZXJTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zMjE3LDI5ICszMjkwLDI4
IEBAIHl5cmVkdWNlOgogICAgICAgICAvLyBiZWluZyByZWRlY2xhcmVkLiAgU28sIHBhc3MgYmFj
ayB1cCB0aGlzIGRlY2xhcmF0aW9uLCBub3QgdGhlIG9uZSBpbiB0aGUgc3ltYm9sIHRhYmxlLgog
ICAgICAgICAvLwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkg
LSAoMildLmludGVybS5mdW5jdGlvbik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAKICAgICAgICAgLy8gV2UncmUgYXQgdGhlIGlu
bmVyIHNjb3BlIGxldmVsIG9mIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cyBhbmQgYm9keSBzdGF0
ZW1lbnQuCiAgICAgICAgIC8vIEFkZCB0aGUgZnVuY3Rpb24gcHJvdG90eXBlIHRvIHRoZSBzdXJy
b3VuZGluZyBzY29wZSBpbnN0ZWFkLgogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5nZXRP
dXRlckxldmVsKCktPmluc2VydCgqKHl5dmFsLmludGVybSkuZnVuY3Rpb24pOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzU6CisgIGNhc2UgNzY6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1
bmN0aW9uKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDc2OgorICBjYXNl
IDc3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA3NzoKKyAgY2FzZSA3ODoKIAogICAgIHsKICAgICAgICAgLy8gQWRkIHRoZSBwYXJh
bWV0ZXIKQEAgLTMyNDgsMTAgKzMzMjAsMTAgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5hZGRQYXJhbWV0ZXIoKHl5dnNwWygyKSAt
ICgyKV0uaW50ZXJtKS5wYXJhbSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRlbGV0ZSAo
eXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtLnR5cGU7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSA3ODoKKyAgY2FzZSA3OToKIAogICAgIHsKICAgICAgICAgLy8KQEAg
LTMyNjIsNyArMzMzNCw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgLy8KICAgICAgICAgICAg
IC8vIFRoaXMgcGFyYW1ldGVyID4gZmlyc3QgaXMgdm9pZAogICAgICAgICAgICAgLy8KLSAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgImNhbm5v
dCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSciLCAidm9pZCIpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiY2Fubm90IGJlIGFu
IGFyZ3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBkZWxldGUgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtKS5wYXJhbS50eXBlOwogICAgICAgICB9IGVsc2UgewpAQCAtMzI3MCwxOCArMzM0
MiwxOCBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0g
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmZ1bmN0aW9uKTsKICAgICAgICAgICAgICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5mdW5jdGlvbiktPmFkZFBhcmFtZXRlcigoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0pLnBhcmFtKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgNzk6CisgIGNhc2UgODA6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyICE9IEV2cUdsb2JhbCAmJiAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgewotICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAibm8gcXVh
bGlmaWVycyBhbGxvd2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmco
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOworICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAibm8gcXVhbGlmaWVycyBhbGxvd2Vk
IGZvciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9CiAgICAgICAgIC8vIG1ha2Ugc3VyZSBhIHNhbXBsZXIgaXMgbm90IGlu
dm9sdmVkIGFzIHdlbGwuLi4KLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVy
cm9yQ2hlY2soKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JD
aGVjaygoeXlsc3BbKDIpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBm
dW5jdGlvbiBhcyBhIHByb3RvdHlwZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9y
dCByZWN1cnNpb24pCkBAIC0zMjkxLDcwMyArMzM2Myw2OTMgQEAgeXlyZWR1Y2U6CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247CiAgICAgICAgIAogICAgICAgICBj
b250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA4MDoKKyAgY2FzZSA4MToKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkg
LSAoMildLmludGVybS50eXBlKS50eXBlID09IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgImlsbGVnYWwgdXNlIG9mIHR5
cGUgJ3ZvaWQnIiwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiaWxsZWdhbCB1c2Ug
b2YgdHlwZSAndm9pZCciLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUs
ICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5y
ZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBU
UGFyYW1ldGVyIHBhcmFtID0geyh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBuZXcgVFR5
cGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpKX07Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0pLnBhcmFtID0gcGFyYW07Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA4MToKKyAgY2FzZSA4MjoKIAogICAgIHsKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4g
bWFrZSBhbiBhcnJheSBvdXQgb2YgdGhpcyB0eXBlCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJh
eVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAt
ICg1KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9y
Q2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0
LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNw
WygyKSAtICg1KV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRF
cnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKih5eXZzcFsoMikgLSAoNSldLmxleCkuc3Ry
aW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBpbnQgc2l6
ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygzKSAt
ICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxz
cFsoMykgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2c3Bb
KDEpIC0gKDUpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAKICAgICAgICAg
VFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKTsK
ICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJp
bmcsIHR5cGUgfTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAo
NSldLmxleCkubGluZTsKICAgICAgICAgKHl5dmFsLmludGVybSkucGFyYW0gPSBwYXJhbTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDgyOgorICBjYXNlIDgzOgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2
c3BbKDIpIC0gKDMpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlw
ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgz
KV0pLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIp
IC0gKDMpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA4MzoKKyAgY2FzZSA4NDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFy
YW1ldGVyU2FtcGxlckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikgLSAoMildLmlu
dGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVy
RXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5x
dWFsaWZpZXIpLCAqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJy
b3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLmxpbmUsIEV2cVRlbXBvcmFyeSwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5
cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMikgLSAo
MildKSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwg
KHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4NDoKKyAgY2FzZSA4NToK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eXZzcFsoMykgLSAo
MyldLmludGVybSkubGluZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmll
ciwgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBh
cmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFso
MykgLSAoMyldKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5
dnNwWygyKSAtICgzKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5
cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCi0gIGNhc2UgODU6CisgIGNhc2UgODY6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0pID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmludGVybSku
bGluZSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICooeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVy
U2FtcGxlckVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0udHlwZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5w
YXJhbUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCBFdnFUZW1wb3Jh
cnksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5w
YXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3Bb
KDIpIC0gKDIpXSksIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxp
ZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgODY6CisgIGNh
c2UgODc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUlu
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgODc6CisgIGNhc2UgODg6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUluOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgODg6CisgIGNhc2UgODk6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cU91dDsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAotICBjYXNlIDg5OgorICBjYXNlIDkwOgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFJbk91dDsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAotICBjYXNlIDkwOgorICBjYXNlIDkxOgogCiAgICAgewogICAgICAgICBUUGFyYW1l
dGVyIHBhcmFtID0geyAwLCBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUp
KSB9OwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5wYXJhbSA9IHBhcmFtOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTE6CisgIGNhc2UgOTI6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAotICBjYXNlIDkyOgorICBjYXNlIDkzOgogCiAgICAgewogICAgICAg
ICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS50eXBlLnR5cGUgPT0gRWJ0SW52YXJpYW50
ICYmICEoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAidW5kZWNsYXJl
ZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICh5eXZzcFsoMykgLSAoMyldLmxl
eCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFso
MykgLSAoMyldKSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQi
LCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUSW50ZXJtU3ltYm9sKiBz
eW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDMpIC0g
KDMpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS50eXBlKSwg
KHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBzeW1ib2wsICh5eXZzcFsoMykgLSAoMyld
LmxleCkubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCBU
VHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLnR5cGUpLCAoeXlsc3BbKDMpIC0gKDMpXSkp
OworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVybU5v
ZGUsIHN5bWJvbCwgKHl5bHNwWygzKSAtICgzKV0pKTsKICAgICAgICAgCi0gICAgICAgIGlmIChj
b250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmxleCku
bGluZSwgKHl5dmFsLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKHl5dmFsLmludGVybSkudHlw
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRl
eHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAq
KHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZhbHNl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygz
KSAtICgzKV0pLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0p
LnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAg
ICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRF
cnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoMyld
LmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSksICooeXl2c3Bb
KDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgdmFyaWFibGUpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoc3ltYm9sICYmIHZh
cmlhYmxlKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQo
KSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5MzoKKyAgY2FzZSA5NDoK
IAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
KHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5
cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXls
c3BbKDMpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRD
b25zdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAt
ICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgdHJ1ZSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykg
LSAoNSldKSwgKih5eXZzcFsoMykgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUp
XS5pbnRlcm0pLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKTsKIAot
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDUp
XS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+
YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSwgKHl5
dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
VHlwZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRl
cm0pLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDQp
IC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgKHl5dnNwWygx
KSAtICg1KV0uaW50ZXJtKS50eXBlLnNldEFycmF5KHRydWUpOwogICAgICAgICAgICAgVFZhcmlh
YmxlKiB2YXJpYWJsZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2so
KHl5dnNwWyg0KSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJp
bmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgdmFyaWFibGUpKQorICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDUpXSksICooeXl2
c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBl
LCB2YXJpYWJsZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NDoKKyAgY2FzZSA5NToK
IAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
KHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5
cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXls
c3BbKDMpIC0gKDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRD
b25zdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAt
ICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSwgdHJ1ZSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykg
LSAoNildKSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDYp
XS5pbnRlcm0pLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKTsKIAot
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDYp
XS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+
YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNildLmxleCkubGluZSwgKHl5
dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
VHlwZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRl
cm0pLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDQp
IC0gKDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7
Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDQp
IC0gKDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoNSkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNr
KCh5eWxzcFsoNCkgLSAoNildKSwgKHl5dnNwWyg1KSAtICg2KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksIHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZS5zZXRBcnJheSh0cnVlLCBzaXpl
KTsKICAgICAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICoo
eXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50
eXBlLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNr
KCh5eWxzcFsoNCkgLSAoNildKSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCAoeXl2
c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlID0gVFR5cGUoKHl5dnNw
WygxKSAtICg2KV0uaW50ZXJtKS50eXBlKTsKICAgICAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXpl
KHNpemUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICg2KV0uaW50ZXJt
KS5pbnRlcm1Ob2RlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlID8g
dmFyaWFibGUtPmdldFVuaXF1ZUlkKCkgOiAwLCAqKHl5dnNwWygzKSAtICg2KV0ubGV4KS5zdHJp
bmcsIHR5cGUsICh5eXZzcFsoMykgLSAoNildLmxleCkubGluZSksICh5eXZzcFsoMykgLSAoNild
LmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDYpXS5p
bnRlcm0pLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFi
bGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgp
LnN0cmluZywgdHlwZSwgKHl5bHNwWygzKSAtICg2KV0pKSwgKHl5bHNwWygzKSAtICg2KV0pKTsK
ICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTU6CisgIGNh
c2UgOTY6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJv
ckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50
ZXJtKS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hl
Y2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0p
ID0gKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKTsKIAogICAgICAgICBUSW50ZXJtTm9kZSogaW50
ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5dnNw
WygzKSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5
eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CisgICAgICAgIGlmICghY29udGV4dC0+ZXhl
Y3V0ZUluaXRpYWxpemVyKCh5eWxzcFsoMykgLSAoNSldKSwgKih5eXZzcFsoMykgLSAoNSldLmxl
eCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsICh5eXZzcFsoNSkgLSAo
NSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgIC8vIGJ1aWxkIHRoZSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24K
ICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBpZiAoaW50ZXJtTm9kZSkKLSAgICAgICAgKHl5
dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dB
Z2dyZWdhdGUoKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBpbnRlcm1Ob2Rl
LCAoeXl2c3BbKDQpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2
c3BbKDEpIC0gKDUpXS5pbnRlcm0pLmludGVybU5vZGUsIGludGVybU5vZGUsICh5eWxzcFsoNCkg
LSAoNSldKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bSkuaW50ZXJtQWdncmVnYXRlID0gKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS5pbnRlcm1BZ2dy
ZWdhdGU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAwOwogICAgICAg
ICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NjoKKyAgY2FzZSA5NzoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFN5bWJvbCgwLCAiIiwgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpKSwg
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0udHlwZSkubGluZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJt
QWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLnR5cGUpKSwgKHl5bHNwWygxKSAtICgxKV0pKSwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAg
ICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NzoKKyAgY2FzZSA5ODoKIAogICAgIHsKLSAgICAg
ICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAo
MildLmludGVybS50eXBlKSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5t
YWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAo
MildLmludGVybS50eXBlKSksICh5eWxzcFsoMikgLSAoMildKSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVn
YXRlKHN5bWJvbCwgKHl5bHNwWygyKSAtICgyKV0pKTsKICAgICAgICAgCi0gICAgICAgIGlmIChj
b250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCku
bGluZSwgKHl5dmFsLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgKHl5dmFsLmludGVybSkudHlw
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRl
eHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAq
KHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZhbHNl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygy
KSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0p
LnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoMild
LmludGVybS50eXBlKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCku
bGluZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBl
LCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXls
c3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZywgKHl5dmFsLmlu
dGVybSkudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJ
ZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA5ODoKKyAgY2FzZSA5OToKIAogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3Io
KHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMg
bm90IHN1cHBvcnRlZCIsICh5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsK
KyAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0KV0pLCAidW5zaXplZCBhcnJh
eSBkZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIsICh5eXZzcFsoMikgLSAoNCldLmxleCkuc3Ry
aW5nLT5jX3N0cigpKTsKICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRJ
bnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
Kih5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0udHlwZSkpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2
YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFn
Z3JlZ2F0ZShzeW1ib2wsICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7CisgICAgICAgIFRJ
bnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
Kih5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0udHlwZSkpLCAoeXlsc3BbKDIpIC0gKDQpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJt
KS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShz
eW1ib2wsICh5eWxzcFsoMikgLSAoNCldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUg
PSAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSA5OToKKyAgY2FzZSAxMDA6CiAKICAgICB7CiAgICAgICAgIFRUeXBlIHR5
cGUgPSBUVHlwZSgoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpOwogICAgICAgICBpbnQg
c2l6ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygy
KSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5
eWxzcFsoMikgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksIHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB0eXBl
LnNldEFycmF5U2l6ZShzaXplKTsKLSAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5z
dHJpbmcsIHR5cGUsICh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdn
cmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAgICAgVElu
dGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAq
KHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsIHR5cGUsICh5eWxzcFsoMikgLSAoNSldKSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5bHNwWygyKSAtICg1KV0pKTsKICAgICAg
ICAgCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZz
cFsoMikgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygy
KSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RF
cnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSwgKih5eXZzcFsoMikgLSAoNSld
LmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSksIHRydWUpKQorICAg
ICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUp
XSksICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50
ZXJtLnR5cGUpLCB0cnVlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAg
ICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUp
OwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMykg
LSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSB8fCBjb250
ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5l
LCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSld
LmludGVybS50eXBlKSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxz
cFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQg
c2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZz
cFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksIHNpemUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9y
Q2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
CiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1
ZSwgc2l6ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5s
aW5lLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmlu
dGVybS50eXBlKSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJy
b3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmlu
ZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLCB2YXJpYWJsZSkpCiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgaWYgKHZhcmlhYmxlICYmIHN5
bWJvbCkKICAgICAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJ
ZCgpKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAw
OgorICBjYXNlIDEwMToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVy
RXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50
eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFs
LmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKTsKIAogICAgICAg
ICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRl
SW5pdGlhbGl6ZXIoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg0
KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0
KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CisgICAgICAg
IGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eWxzcFsoMikgLSAoNCldKSwgKih5
eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlw
ZSksICh5eXZzcFsoNCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2Rl
KSkgewogICAgICAgICAvLwogICAgICAgICAvLyBCdWlsZCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50
YXRpb24KICAgICAgICAgLy8KICAgICAgICAgICAgIGlmKGludGVybU5vZGUpCi0gICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgKHl5dnNwWygzKSAtICg0KV0ubGV4KS5saW5l
KTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCAoeXlsc3BbKDMpIC0g
KDQpXSkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0p
LmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdh
dGUgPSAwOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
MDE6CisgIGNhc2UgMTAyOgogCiAgICAgewotICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50
IGRlY2xhcmF0aW9uIiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICAgICAgaWYg
KGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIp
KQorICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgKHl5bHNwWygx
KSAtICgyKV0pKTsKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNw
WygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZh
cmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICAoeXl2YWwuaW50ZXJtKS50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50
VmFyeWluZ091dCwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFs
LmludGVybSkudHlwZS5zZXRCYXNpYyhFYnRJbnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdP
dXQsICh5eWxzcFsoMikgLSAoMildKSk7CiAgICAgICAgIGlmICghKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5zeW1ib2wpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMikgLSAoMildLmxleCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBh
cyBpbnZhcmlhbnQiLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJ1bmRlY2xhcmVk
IGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgKHl5dnNwWygyKSAtICgyKV0ubGV4
KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAw
OwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgVEludGVy
bVN5bWJvbCAqc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5
dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSku
aW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3lt
Ym9sLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgVEludGVybVN5
bWJvbCAqc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNw
WygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXls
c3BbKDIpIC0gKDIpXSkpOworICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3Bb
KDIpIC0gKDIpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxMDI6CisgIGNhc2UgMTAzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpOwogCiAgICAgICAgIGlmICgoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lLCAibm90IHN1cHBvcnRl
ZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
bHNwWygxKSAtICgxKV0pLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLnR5cGUpLnNldEFycmF5KGZhbHNlKTsKICAgICAgICAgfQotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAzOgorICBjYXNlIDEwNDoKIAogICAgIHsKICAg
ICAgICAgaWYgKCh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS5hcnJheSkgewotICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLmxpbmUs
ICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNs
YXNzIGFycmF5Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXkoZmFsc2UpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZp
ZXIgPT0gRXZxQXR0cmlidXRlICYmCiAgICAgICAgICAgICAoKHl5dnNwWygyKSAtICgyKV0uaW50
ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0Qm9vbCB8fCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlw
ZSkudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDIpIC0gKDIpXS5pbnRlcm0udHlwZSkubGluZSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdl
dFF1YWxpZmllclN0cmluZygoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVy
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJjYW5u
b3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0u
aW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9CiAgICAgICAgIGlmICgoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUp
LnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5
cGUpLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nT3V0KSAmJgogICAgICAgICAgICAgKCh5eXZzcFso
MikgLSAoMildLmludGVybS50eXBlKS50eXBlID09IEVidEJvb2wgfHwgKHl5dnNwWygyKSAtICgy
KV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0SW50KSkgewotICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJjYW5ub3QgYmUgYm9v
bCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5
cGUpLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAt
ICgyKV0pLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZz
cFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0g
KHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnF1YWxpZmllciA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXI7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDQ6CisgIGNhc2UgMTA1Ogog
CiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2
cUNvbnN0LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQ29uc3QsICh5eWxzcFsoMSkg
LSAoMSldKSk7CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTA1OgorICBjYXNlIDEwNjoK
IAogICAgIHsKLSAgICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsICh5eXZzcFsoMSkgLSAo
MSldLmxleCkubGluZSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpLCAiYXR0cmlidXRlIikpCisgICAgICAgIFZFUlRFWF9PTkxZKCJhdHRyaWJ1dGUiLCAo
eXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVj
aygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSwgImF0dHJpYnV0ZSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgKHl5bHNwWygxKSAtICgxKV0p
KTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDY6CisgIGNhc2UgMTA3OgogCiAgICAg
ewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgInZhcnlp
bmciKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAt
ICgxKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ2YXJ5aW5nIikp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChjb250ZXh0LT5z
aGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVi
dFZvaWQsIEV2cVZhcnlpbmdPdXQsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFy
eWluZ0luLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgKHl5
bHNwWygxKSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDc6CisgIGNh
c2UgMTA4OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygo
eXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9i
YWxFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gU0hfVkVSVEVY
X1NIQURFUikKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9p
ZCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsK
KyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52
YXJpYW50VmFyeWluZ091dCwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlh
bnRWYXJ5aW5nSW4sICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7Ci0gICAgO30KKyAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50
VmFyeWluZ0luLCAoeXlsc3BbKDEpIC0gKDIpXSkpOworICAgIH0KICAgICBicmVhazsKIAotICBj
YXNlIDEwODoKKyAgY2FzZSAxMDk6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9i
YWxFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQorICAgICAgICBpZiAoY29udGV4dC0+
Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSwgInVuaWZvcm0iKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFV
bmlmb3JtLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVW5pZm9ybSwgKHl5bHNwWygx
KSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDk6CisgIGNhc2UgMTEw
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpOwogCiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNp
c2lvbiA9PSBFYnBVbmRlZmluZWQpIHsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
cHJlY2lzaW9uID0gY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4
dC0+cHJlY2lzaW9uRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGlu
ZSwgKHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24sICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS50eXBlKS50eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPnByZWNpc2lvbkVycm9y
Q2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiwg
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKSB7CiAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTA6CisgIGNhc2UgMTExOgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiA9ICh5eXZzcFsoMSkgLSAo
MildLmludGVybS5wcmVjaXNpb24pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTExOgorICBjYXNlIDExMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5wcmVj
aXNpb24pID0gRWJwSGlnaDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDEx
MjoKKyAgY2FzZSAxMTM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9u
KSA9IEVicE1lZGl1bTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDExMzoK
KyAgY2FzZSAxMTQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9
IEVicExvdzsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDExNDoKKyAgY2Fz
ZSAxMTU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0udHlwZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxMTU6CisgIGNhc2UgMTE2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
ID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpOwogCi0gICAgICAgIGlmIChjb250ZXh0
LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlw
ZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg0KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
dHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6
ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDMpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMykgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFycmF5
KHRydWUsIHNpemUpOwogICAgICAgICB9Ci0gICAgO30KLSAgICBicmVhazsKLQotICBjYXNlIDEx
NjoKLQotICAgIHsKLSAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIHF1YWwsICh5eXZzcFsoMSkgLSAo
MSldLmxleCkubGluZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMTc6
CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidFZvaWQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTE4OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTE5OgogCiAgICAgewogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0Qm9vbCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygx
KSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjA6CiAKICAgICB7CiAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5l
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30K
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXls
c3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyMToKIAogICAg
IHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKLSAg
ICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFs
LCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFn
Z3JlZ2F0ZSgyKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjI6CiAKICAgICB7CiAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5l
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7Ci0gICAgO30K
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5
bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdh
dGUoMyk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTIzOgogCiAgICAgewogICAgICAg
ICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkg
PyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30KKyAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygx
KSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI0OgogCiAgICAgewogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFz
aWMoRWJ0Qm9vbCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7Ci0gICAgO30KKyAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEp
XSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjU6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRC
b29sLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOworICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDEyNjoKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVt
cG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVh
bCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMjc6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QWdncmVnYXRlKDMpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFz
aWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
Mjg6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eXZzcFsoMSkgLSAo
MSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRl
KDQpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50
LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEFnZ3JlZ2F0ZSgzKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjk6CiAKICAg
ICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJtYXQyIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgy
LCB0cnVlKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVi
dEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMwOgog
CiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgibWF0MyIsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdh
dGUoMywgdHJ1ZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMiwgdHJ1ZSk7CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTMxOgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgibWF0NCIsICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRBZ2dyZWdhdGUoNCwgdHJ1ZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTMyOgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgi
c2FtcGxlcjJEIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFNhbXBsZXIyRCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7
fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAo
eXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3Jl
Z2F0ZSg0LCB0cnVlKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzM6CiAKICAgICB7
Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyQ3ViZSIsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzQ6CiAKICAgICB7CisgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRTYW1wbGVyQ3ViZSwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9CisgICAgYnJl
YWs7CisKKyAgY2FzZSAxMzU6CisKKyAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9y
dHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAidW5zdXBwb3J0ZWQg
dHlwZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eWxzcFsoMSkgLSAoMSldKSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlckV4dGVybmFs
T0VTIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAg
ICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXJFeHRlcm5hbE9FUyIsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWws
ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5eWxzcFso
MSkgLSAoMSldKSk7CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM1OgorICBjYXNlIDEz
NjoKIAogICAgIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
QVJCX3RleHR1cmVfcmVjdGFuZ2xlIikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlcjJE
UmVjdCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAi
dW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXIy
RFJlY3QiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
U2FtcGxlcjJEUmVjdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7
fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3Qs
IHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTM2OgorICBjYXNlIDEzNzoKIAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInN0cnVj
dCIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsKICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxMzc6CisgIGNhc2UgMTM4OgogCiAgICAgewogICAgICAgICAv
LwpAQCAtMzk5Niw4NSArNDA1OCw4NiBAQCB5eXJlZHVjZToKICAgICAgICAgLy8KICAgICAgICAg
VFR5cGUmIHN0cnVjdHVyZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KCh5eXZzcFsoMSkgLSAo
MSldLmxleCkuc3ltYm9sKS0+Z2V0VHlwZSgpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBj
b250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1w
b3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBx
dWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS51c2VyRGVmID0gJnN0cnVjdHVyZTsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDEzODoKKyAgY2FzZSAxMzk6CiAKLSAgICB7IGlm
IChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eXZzcFsoMikgLSAoMyldLmxleCku
bGluZSwgKih5eXZzcFsoMikgLSAoMyldLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3Zlcigp
OyA7fQorICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5bHNwWygy
KSAtICgzKV0pLCAqKHl5dnNwWygyKSAtICgzKV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0LT5yZWNv
dmVyKCk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDEzOToKKyAgY2FzZSAxNDA6CiAKICAgICB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg2
KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBp
ZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNildKSwgKih5eXZz
cFsoMikgLSAoNildLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKIAotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCh5eXZzcFsoNSkgLSAo
NildLmludGVybS50eXBlTGlzdCksICooeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmluZyk7Cisg
ICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUobmV3IFRTdHJ1Y3R1cmUoKHl5dnNw
WygyKSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoNSkgLSAoNildLmludGVybS5maWVsZExp
c3QpKSk7CiAgICAgICAgIFRWYXJpYWJsZSogdXNlclR5cGVEZWYgPSBuZXcgVFZhcmlhYmxlKCh5
eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nLCAqc3RydWN0dXJlLCB0cnVlKTsKICAgICAgICAg
aWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCp1c2VyVHlwZURlZikpIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNildLmxleCkubGluZSwgInJlZGVm
aW5pdGlvbiIsICh5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0
Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDYpXSksICJyZWRl
ZmluaXRpb24iLCAoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSwgInN0cnVj
dCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5
eXZzcFsoMSkgLSAoNildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eWxzcFsoMSkgLSAoNildKSk7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkudXNlckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAg
Y29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxNDA6CisgIGNhc2UgMTQxOgogCi0gICAgeyBpZiAoY29udGV4dC0+ZW50
ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICooeXl2c3Bb
KDIpIC0gKDIpXS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KKyAgICB7IGlm
IChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFsoMikgLSAoMildKSwgKih5
eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxNDE6CisgIGNhc2UgMTQyOgogCiAgICAgewotICAgICAgICBUVHlw
ZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCh5eXZzcFsoNCkgLSAoNSldLmludGVybS50eXBlTGlz
dCksIFRTdHJpbmcoIiIpKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg1KV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZShOZXdQb29s
VFN0cmluZygiIiksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5maWVsZExpc3QpKSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3Jhcnks
ICh5eWxzcFsoMSkgLSAoNSldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkudXNlckRl
ZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDI6CisgIGNhc2UgMTQzOgog
CiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS50eXBlTGlzdCk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS5maWVs
ZExpc3QpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZpZWxkTGlzdCk7CisgICAgfQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTQzOgorICBjYXNlIDE0NDoKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlTGlzdCkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZUxpc3Qp
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICh5eXZzcFsoMikgLSAoMild
LmludGVybS50eXBlTGlzdCktPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBqID0gMDsgaiA8ICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5zaXplKCk7ICsraikg
ewotICAgICAgICAgICAgICAgIGlmICgoKih5eXZhbC5pbnRlcm0udHlwZUxpc3QpKVtqXS50eXBl
LT5nZXRGaWVsZE5hbWUoKSA9PSAoKih5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCkp
W2ldLnR5cGUtPmdldEZpZWxkTmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlbaV0ubGluZSwgImR1
cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3RydWN0IiwgKCooeXl2c3BbKDIp
IC0gKDIpXS5pbnRlcm0udHlwZUxpc3QpKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKS5jX3N0cigp
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpID0gKHl5dnNwWygxKSAtICgyKV0u
aW50ZXJtLmZpZWxkTGlzdCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICBURmllbGQqIGZpZWxkID0gKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uZmllbGRMaXN0KSlb
aV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICh5eXZhbC5pbnRlcm0uZmll
bGRMaXN0KS0+c2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICBpZiAoKCooeXl2YWwuaW50
ZXJtLmZpZWxkTGlzdCkpW2pdLT5uYW1lKCkgPT0gZmllbGQtPm5hbWUoKSkgeworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJkdXBsaWNhdGUg
ZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxkLT5uYW1lKCkuY19zdHIo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0
KS0+cHVzaF9iYWNrKCgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlbaV0pOwor
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpLT5wdXNoX2JhY2soZmllbGQpOwog
ICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDQ6CisgIGNh
c2UgMTQ1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9ICh5eXZz
cFsoMikgLSAoMyldLmludGVybS50eXBlTGlzdCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmll
bGRMaXN0KSA9ICh5eXZzcFsoMikgLSAoMyldLmludGVybS5maWVsZExpc3QpOwogCi0gICAgICAg
IGlmIChjb250ZXh0LT52b2lkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlw
ZSkubGluZSwgKCooeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0udHlwZUxpc3QpKVswXS50eXBlLT5n
ZXRGaWVsZE5hbWUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkgeworICAgICAg
ICBpZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgzKV0pLCAoKih5eXZz
cFsoMikgLSAoMyldLmludGVybS5maWVsZExpc3QpKVswXS0+bmFtZSgpLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkpKSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoeXl2YWwuaW50
ZXJtLnR5cGVMaXN0KS0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytpKSB7CiAgICAg
ICAgICAgICAvLwogICAgICAgICAgICAgLy8gQ2FyZWZ1bCBub3QgdG8gcmVwbGFjZSBhbHJlYWR5
IGtub3duIGFzcGVjdHMgb2YgdHlwZSwgbGlrZSBhcnJheS1uZXNzCiAgICAgICAgICAgICAvLwot
ICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0udHlwZUxpc3QpKVtpXS50
eXBlOworICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0uZmllbGRMaXN0
KSlbaV0tPnR5cGUoKTsKICAgICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlwZSgoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0udHlwZSkudHlwZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXROb21pbmFs
U2l6ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuc2l6ZSk7CiAgICAgICAgICAgICB0
eXBlLT5zZXRNYXRyaXgoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLm1hdHJpeCk7CkBA
IC00MDgyLDQzNyArNDE0NSw0MzIgQEAgeXlyZWR1Y2U6CiAKICAgICAgICAgICAgIC8vIGRvbid0
IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAgICAgICAgICAgIGlmICh0eXBlLT5pc0FycmF5KCkp
IHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubGluZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LnR5cGUpKSkKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVj
aygoeXlsc3BbKDEpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuYXJyYXkpCiAgICAg
ICAgICAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50
eXBlKS5hcnJheVNpemUpOwotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKS51c2VyRGVmKSB7CisgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLnR5cGUpLnVzZXJEZWYpCiAgICAgICAgICAgICAgICAgdHlwZS0+c2V0U3RydWN0KCh5eXZz
cFsoMSkgLSAoMyldLmludGVybS50eXBlKS51c2VyRGVmLT5nZXRTdHJ1Y3QoKSk7Ci0gICAgICAg
ICAgICAgICAgdHlwZS0+c2V0VHlwZU5hbWUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUp
LnVzZXJEZWYtPmdldFR5cGVOYW1lKCkpOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBp
ZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLnR5cGUpLmxpbmUsICp0eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVj
dE5lc3RpbmdFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMyldKSwgKigqKHl5dmFsLmludGVybS5m
aWVsZExpc3QpKVtpXSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNDU6CisgIGNhc2UgMTQ2OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVM
aXN0KSA9IE5ld1Bvb2xUVHlwZUxpc3QoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlz
dCktPnB1c2hfYmFjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZUxpbmUpKTsKLSAgICA7
fQorICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSBOZXdQb29sVEZpZWxkTGlzdCgp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uZmllbGQpKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDY6
CisgIGNhc2UgMTQ3OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+
cHVzaF9iYWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybS50eXBlTGluZSkpOwotICAgIDt9Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+cHVzaF9iYWNrKCh5eXZzcFsoMykgLSAo
MyldLmludGVybS5maWVsZCkpOworICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE0NzoKKyAg
Y2FzZSAxNDg6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hl
Y2soKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5z
dHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFso
MSkgLSAoMSldKSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50
eXBlID0gbmV3IFRUeXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZUxpbmUpLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLnR5cGUtPnNldEZpZWxkTmFtZSgqKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5zdHJpbmcpOwotICAgIDt9CisgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3
IFRUeXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmll
bGQpID0gbmV3IFRGaWVsZCh0eXBlLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZyk7Cisg
ICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ4OgorICBjYXNlIDE0OToKIAogICAgIHsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDQpXS5s
ZXgpLmxpbmUsICooeXl2c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChj
b250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICg0KV0pLCAqKHl5dnNwWygx
KSAtICg0KV0ubGV4KS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9p
ZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSkubGluZSA9
ICh5eXZzcFsoMSkgLSAoNCldLmxleCkubGluZTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
TGluZSkudHlwZS0+c2V0RmllbGROYW1lKCooeXl2c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZyk7
Ci0KLSAgICAgICAgaW50IHNpemU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJv
ckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygzKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQorICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBU
VHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAgICAgICBpbnQgc2l6ZSA9IDA7CisgICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNCldKSwg
KHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5l
KS50eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7Ci0gICAgO30KLSAgICBicmVhazsKKyAgICAgICAg
dHlwZS0+c2V0QXJyYXlTaXplKHNpemUpOwogCi0gIGNhc2UgMTQ5OgotCi0gICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsgO30KKyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZCkgPSBuZXcgVEZpZWxk
KHR5cGUsICh5eXZzcFsoMSkgLSAoNCldLmxleCkuc3RyaW5nKTsKKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxNTA6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTUxOgogCi0gICAgeyAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7
IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybU5vZGUpOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTI6CiAKLSAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50
ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7IH0KICAgICBicmVhazsKIAogICBjYXNl
IDE1MzoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsK
IAogICBjYXNlIDE1NDoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAg
ICBicmVhazsKIAogICBjYXNlIDE1NToKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9k
ZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1NjoKIAotICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAg
ICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1NzoKIAotICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2Rl
KTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1ODoKIAotICAg
IHsgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsgO30KKyAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7
IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1OToKIAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFi
bGUucHVzaCgpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTYwOgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5wb3AoKTsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTYxOgogCisgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsg
fQorICAgIGJyZWFrOworCisgIGNhc2UgMTYyOgorCiAgICAgewogICAgICAgICBpZiAoKHl5dnNw
WygzKSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgIT0gMCkgewogICAgICAgICAgICAg
KHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldE9wKEVPcFNlcXVl
bmNlKTsKLSAgICAgICAgICAgICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1BZ2dyZWdh
dGUpLT5zZXRFbmRMaW5lKCh5eXZzcFsoNSkgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgICAg
ICAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0TGluZSgoeXls
b2MpKTsKICAgICAgICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkg
PSAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKTsKLSAgICA7fQotICAg
IGJyZWFrOwotCi0gIGNhc2UgMTYyOgotCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDE2MzoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7
IH0KICAgICBicmVhazsKIAogICBjYXNlIDE2NDoKIAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFi
bGUucHVzaCgpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY1
OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7
IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY2
OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IDt9CisgICAgeyBjb250ZXh0
LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY3
OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7
IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY4
OgogCi0gICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsKLSAgICA7
fQorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVh
azsKIAogICBjYXNlIDE2OToKIAogICAgIHsKLSAgICAgICAgaWYgKCh5eXZzcFsoMikgLSAoMyld
LmludGVybS5pbnRlcm1BZ2dyZWdhdGUpKSB7Ci0gICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAg
ICAgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldEVuZExpbmUo
KHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgfQotICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3Jl
Z2F0ZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTcwOgogCiAgICAgewotICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3Jl
Z2F0ZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOwotICAgIDt9Cisg
ICAgICAgIGlmICgoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSkgewor
ICAgICAgICAgICAgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNl
dE9wKEVPcFNlcXVlbmNlKTsKKyAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMyldLmludGVybS5p
bnRlcm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykpOworICAgICAgICB9CisgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
QWdncmVnYXRlKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNzE6CiAKICAgICB7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1BZ2dyZWdh
dGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOwotICAgIDt9Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5tYWtlQWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKSwg
KHl5bG9jKSk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTcyOgogCi0gICAgeyAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsgO30KKyAgICB7CisgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRl
KCh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLCAoeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxvYykpOworICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE3MzoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRpY19j
YXN0PFRJbnRlcm1Ob2RlKj4oKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7IH0KICAgICBicmVh
azsKIAogICBjYXNlIDE3NDoKIAorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0
YXRpY19jYXN0PFRJbnRlcm1Ob2RlKj4oKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSkpOyB9CisgICAgYnJlYWs7CisKKyAgY2FzZSAxNzU6CisKICAgICB7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDUpXS5sZXgpLmxpbmUs
ICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYg
KGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoNSldKSwgKHl5dnNwWygzKSAt
ICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLm5vZGVQYWlyKSwgKHl5dnNwWygxKSAt
ICg1KV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDMpIC0gKDUp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLm5vZGVQ
YWlyKSwgKHl5bHNwWygxKSAtICg1KV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
NzU6CisgIGNhc2UgMTc2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWly
KS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICAgICAg
KHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTIgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzY6Cisg
IGNhc2UgMTc3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2Rl
MSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICAgICAgKHl5dmFs
LmludGVybS5ub2RlUGFpcikubm9kZTIgPSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTc3OgorICBjYXNlIDE3ODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CiAgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0TGluZSgpLCAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzg6CisgIGNhc2UgMTc5
OgogCiAgICAgewogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYg
KGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4
KS5saW5lLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29u
dGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZz
cFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQp
XS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkg
LSAoNCldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAK
LSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5dnNwWygyKSAtICg0
KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkg
LSAoNCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksIGludGVybU5vZGUpKQorICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFs
aXplcigoeXlsc3BbKDIpIC0gKDQpXSksICooeXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbKDQpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogICAgICAgICB9
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzk6CisgIGNhc2UgMTgwOgog
Ci0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7ICsrY29udGV4dC0+bG9vcE5lc3Rp
bmdMZXZlbDsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0
LT5sb29wTmVzdGluZ0xldmVsOyB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODA6CisgIGNhc2Ug
MTgxOgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRM
b29wKEVMb29wV2hpbGUsIDAsICh5eXZzcFsoNCkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAwLCAoeXl2c3BbKDYpIC0gKDYpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMSkg
LSAoNildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAoeXl2c3BbKDQpIC0g
KDYpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgMCwgKHl5dnNwWyg2KSAtICg2KV0uaW50ZXJt
LmludGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDYpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxv
b3BOZXN0aW5nTGV2ZWw7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODE6
CisgIGNhc2UgMTgyOgogCi0gICAgeyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IDt9Cisg
ICAgeyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0KICAgICBicmVhazsKIAotICBjYXNl
IDE4MjoKKyAgY2FzZSAxODM6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJy
b3JDaGVjaygoeXl2c3BbKDgpIC0gKDgpXS5sZXgpLmxpbmUsICh5eXZzcFsoNikgLSAoOCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNo
ZWNrKCh5eWxzcFsoOCkgLSAoOCldKSwgKHl5dnNwWyg2KSAtICg4KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChF
TG9vcERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAwLCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoNCkgLSAo
OCldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAo
OCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0u
aW50ZXJtTm9kZSksICh5eWxzcFsoNCkgLSAoOCldKSk7CiAgICAgICAgIC0tY29udGV4dC0+bG9v
cE5lc3RpbmdMZXZlbDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE4MzoK
KyAgY2FzZSAxODQ6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250
ZXh0LT5sb29wTmVzdGluZ0xldmVsOyA7fQorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVz
aCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0KICAgICBicmVhazsKIAotICBjYXNl
IDE4NDoKKyAgY2FzZSAxODU6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxl
LnBvcCgpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BGb3IsICh5eXZzcFsoNCkgLSAoNyldLmludGVybS5pbnRl
cm1Ob2RlKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcp
XS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQq
PigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3KSAt
ICg3KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDEpIC0gKDcpXS5sZXgpLmxpbmUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZExvb3AoRUxvb3BGb3IsICh5eXZzcFsoNCkgLSAoNyldLmludGVybS5pbnRlcm1Ob2RlKSwg
cmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0u
bm9kZVBhaXIpLm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3Bb
KDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3KSAtICg3KV0uaW50
ZXJtLmludGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDcpXSkpOwogICAgICAgICAtLWNvbnRleHQt
Pmxvb3BOZXN0aW5nTGV2ZWw7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
ODU6CisgIGNhc2UgMTg2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg2OgorICBjYXNlIDE4NzoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1Ob2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE4NzoKKyAg
Y2FzZSAxODg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg4OgorICBjYXNlIDE4OToKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gMDsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAotICBjYXNlIDE4OToKKyAgY2FzZSAxOTA6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUy
ID0gMDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE5MDoKKyAgY2FzZSAx
OTE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0ubm9kZVBhaXIpLm5vZGUyID0gKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTE6CisgIGNh
c2UgMTkyOgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgp
LmxpbmUsICJjb250aW51ZSBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiY29udGludWUg
c3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgKHl5dnNw
WygxKSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwg
KHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTI6Cisg
IGNhc2UgMTkzOgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZl
bCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5s
ZXgpLmxpbmUsICJicmVhayBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiYnJlYWsgc3Rh
dGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgKHl5dnNwWygxKSAt
ICgyKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgKHl5bHNwWygx
KSAtICgyKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTM6CisgIGNhc2UgMTk0
OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMSkgLSAoMildLmxleCku
bGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAg
ICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVi
dFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxl
eCkubGluZSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJu
Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDIpXSksICJub24t
dm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxOTQ6CisgIGNhc2UgMTk1OgogCiAgICAgewotICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BS
ZXR1cm4sICh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDEpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMikg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDEpIC0gKDMpXSkpOwogICAg
ICAgICBjb250ZXh0LT5mdW5jdGlvblJldHVybnNWYWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChj
b250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDMpXS5sZXgpLmxpbmUs
ICJ2b2lkIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgInZvaWQgZnVuY3Rpb24g
Y2Fubm90IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICB9IGVsc2UgaWYgKCooY29udGV4dC0+Y3VycmVudEZ1bmN0aW9u
VHlwZSkgIT0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5
cGUoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0ubGV4
KS5saW5lLCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4i
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgImZ1bmN0
aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDE5NToKKyAgY2FzZSAxOTY6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfT05M
WSgiZGlzY2FyZCIsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVP
cEtpbGwsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7Ci0gICAgO30KKyAgICAgICAgRlJB
R19PTkxZKCJkaXNjYXJkIiwgKHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2ls
bCwgKHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTY6
CisgIGNhc2UgMTk3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgICAgICBjb250ZXh0
LT50cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxOTc6CisgIGNhc2UgMTk4OgogCiAgICAgewotICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dy
ZWdhdGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
Tm9kZSksICh5eWxvYykpOwogICAgICAgICBjb250ZXh0LT50cmVlUm9vdCA9ICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTg6
CisgIGNhc2UgMTk5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTk5OgorICBjYXNlIDIwMDoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1Ob2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDIwMDoKKyAgY2Fz
ZSAyMDE6CiAKICAgICB7CiAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb24gPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmZ1bmN0aW9uOwpAQCAtNDUyMSw3ICs0NTc5LDcgQEAgeXlyZWR1Y2U6
CiAgICAgICAgIAogICAgICAgICBpZiAoYnVpbHRJbikKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCAiYnVpbHQtaW4g
ZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3Ry
KCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiYnVp
bHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBmdW5jdGlvbi0+Z2V0TmFtZSgp
LmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtNDUzNSw3ICs0NTkzLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAvLwog
ICAgICAgICAgICAgLy8gVGhlbiB0aGlzIGZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keS4KICAg
ICAgICAgICAgIC8vCi0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0pLmxpbmUsICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+
Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygx
KSAtICgxKV0pLCAiZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5IiwgZnVuY3Rpb24tPmdldE5h
bWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
fQogICAgICAgICBwcmV2RGVjLT5zZXREZWZpbmVkKCk7CkBAIC00NTQ1LDExICs0NjAzLDExIEBA
IHl5cmVkdWNlOgogICAgICAgICAvLwogICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9
PSAibWFpbiIpIHsKICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpID4g
MCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybSkubGluZSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5j
dGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eWxzcFsoMSkgLSAoMSldKSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIo
cykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+
Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICIiLCBm
dW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCksICJtYWluIGZ1bmN0aW9u
IGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eWxzcFsoMSkgLSAoMSldKSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFz
aWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7CiAgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC00NTc3LDcgKzQ2MzUsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICAvLyBJbnNl
cnQgdGhlIHBhcmFtZXRlcnMgd2l0aCBuYW1lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAg
ICAgICAgICAgLy8KICAgICAgICAgICAgICAgICBpZiAoISBjb250ZXh0LT5zeW1ib2xUYWJsZS5p
bnNlcnQoKnZhcmlhYmxlKSkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+
Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXlsc3BbKDEpIC0gKDEpXSksICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNf
c3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsKICAgICAgICAgICAgICAgICB9CkBAIC00NTg4
LDMxICs0NjQ2LDMyIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5
bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdl
dE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwgKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtKS5saW5lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
cmlhYmxlLT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5bHNwWygxKSAtICgx
KV0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5
bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
cGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHBhcmFtTm9k
ZXMsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0p
LmxpbmUpOworICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3lt
Ym9sKDAsICIiLCAqcGFyYW0udHlwZSwgKHl5bHNwWygxKSAtICgxKV0pKSwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2RlcywgRU9wUGFyYW1ldGVycywg
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJt
ZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsICh5
eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50
ZXJtQWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAgICAgY29udGV4dC0+bG9vcE5lc3RpbmdM
ZXZlbCA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDE6CisgIGNh
c2UgMjAyOgogCiAgICAgewogICAgICAgICAvLz8/IENoZWNrIHRoYXQgYWxsIHBhdGhzIHJldHVy
biBhIHZhbHVlIGlmIHJldHVybiB0eXBlICE9IHZvaWQgPwogICAgICAgICAvLyAgIE1heSBiZSBi
ZXN0IGRvbmUgYXMgcG9zdCBwcm9jZXNzIHBoYXNlIG9uIGludGVybWVkaWF0ZSBjb2RlCiAgICAg
ICAgIGlmIChjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBF
YnRWb2lkICYmICEgY29udGV4dC0+ZnVuY3Rpb25SZXR1cm5zVmFsdWUpIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkubGluZSwgImZ1bmN0aW9u
IGRvZXMgbm90IHJldHVybiBhIHZhbHVlOiIsICIiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0p
LmZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXlsc3BbKDEpIC0gKDMpXSksICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToi
LCAiIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3Ry
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdh
dGUsICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKSwgMCk7Ci0gICAgICAgIGNv
bnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpLCBFT3BGdW5jdGlvbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5saW5lKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtQWdncmVnYXRl
LCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxvYykpOworICAgICAg
ICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSwgRU9wRnVuY3Rpb24sICh5eWxzcFsoMSkgLSAoMyldKSk7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldE5hbWUoKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+Z2V0TWFuZ2xlZE5hbWUoKS5jX3N0cigp
KTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+
c2V0VHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBl
KCkpOwogCkBAIC00NjIxLDE4ICs0NjgwLDI1IEBAIHl5cmVkdWNlOgogICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRPcHRpbWl6ZShjb250ZXh0
LT5wcmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkt
PmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnByYWdtYSgpLmRlYnVnKTsKIAot
ICAgICAgICBpZiAoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpICYmICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKSkKLSAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldEVu
ZExpbmUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0
ZSgpLT5nZXRFbmRMaW5lKCkpOwotCiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgp
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAKLS8qIExpbmUgMTI2NyBvZiB5YWNjLmMu
ICAqLwogCiAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICB9CisgIC8qIFVzZXIgc2VtYW50aWMg
YWN0aW9ucyBzb21ldGltZXMgYWx0ZXIgeXljaGFyLCBhbmQgdGhhdCByZXF1aXJlcworICAgICB0
aGF0IHl5dG9rZW4gYmUgdXBkYXRlZCB3aXRoIHRoZSBuZXcgdHJhbnNsYXRpb24uICBXZSB0YWtl
IHRoZQorICAgICBhcHByb2FjaCBvZiB0cmFuc2xhdGluZyBpbW1lZGlhdGVseSBiZWZvcmUgZXZl
cnkgdXNlIG9mIHl5dG9rZW4uCisgICAgIE9uZSBhbHRlcm5hdGl2ZSBpcyB0cmFuc2xhdGluZyBo
ZXJlIGFmdGVyIGV2ZXJ5IHNlbWFudGljIGFjdGlvbiwKKyAgICAgYnV0IHRoYXQgdHJhbnNsYXRp
b24gd291bGQgYmUgbWlzc2VkIGlmIHRoZSBzZW1hbnRpYyBhY3Rpb24gaW52b2tlcworICAgICBZ
WUFCT1JULCBZWUFDQ0VQVCwgb3IgWVlFUlJPUiBpbW1lZGlhdGVseSBhZnRlciBhbHRlcmluZyB5
eWNoYXIgb3IKKyAgICAgaWYgaXQgaW52b2tlcyBZWUJBQ0tVUC4gIEluIHRoZSBjYXNlIG9mIFlZ
QUJPUlQgb3IgWVlBQ0NFUFQsIGFuCisgICAgIGluY29ycmVjdCBkZXN0cnVjdG9yIG1pZ2h0IHRo
ZW4gYmUgaW52b2tlZCBpbW1lZGlhdGVseS4gIEluIHRoZQorICAgICBjYXNlIG9mIFlZRVJST1Ig
b3IgWVlCQUNLVVAsIHN1YnNlcXVlbnQgcGFyc2VyIGFjdGlvbnMgbWlnaHQgbGVhZAorICAgICB0
byBhbiBpbmNvcnJlY3QgZGVzdHJ1Y3RvciBjYWxsIG9yIHZlcmJvc2Ugc3ludGF4IGVycm9yIG1l
c3NhZ2UKKyAgICAgYmVmb3JlIHRoZSBsb29rYWhlYWQgaXMgdHJhbnNsYXRlZC4gICovCiAgIFlZ
X1NZTUJPTF9QUklOVCAoIi0+ICQkID0iLCB5eXIxW3l5bl0sICZ5eXZhbCwgJnl5bG9jKTsKIAog
ICBZWVBPUFNUQUNLICh5eWxlbik7CkBAIC00NjQwLDcgKzQ3MDYsNyBAQCB5eXJlZHVjZToKICAg
WVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKIAogICAqKyt5eXZzcCA9IHl5dmFsOwotCisg
ICorK3l5bHNwID0geXlsb2M7CiAKICAgLyogTm93IGBzaGlmdCcgdGhlIHJlc3VsdCBvZiB0aGUg
cmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAgdGhhdCBnb2VzIHRvLCBiYXNl
ZCBvbiB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRoZSBydWxlCkBAIC00NjYxLDUy
ICs0NzI3LDU1IEBAIHl5cmVkdWNlOgogfCB5eWVycmxhYiAtLSBoZXJlIG9uIGRldGVjdGluZyBl
cnJvciB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIHl5ZXJybGFi
OgorICAvKiBNYWtlIHN1cmUgd2UgaGF2ZSBsYXRlc3QgbG9va2FoZWFkIHRyYW5zbGF0aW9uLiAg
U2VlIGNvbW1lbnRzIGF0CisgICAgIHVzZXIgc2VtYW50aWMgYWN0aW9ucyBmb3Igd2h5IHRoaXMg
aXMgbmVjZXNzYXJ5LiAgKi8KKyAgeXl0b2tlbiA9IHl5Y2hhciA9PSBZWUVNUFRZID8gWVlFTVBU
WSA6IFlZVFJBTlNMQVRFICh5eWNoYXIpOworCiAgIC8qIElmIG5vdCBhbHJlYWR5IHJlY292ZXJp
bmcgZnJvbSBhbiBlcnJvciwgcmVwb3J0IHRoaXMgZXJyb3IuICAqLwogICBpZiAoIXl5ZXJyc3Rh
dHVzKQogICAgIHsKICAgICAgICsreXluZXJyczsKICNpZiAhIFlZRVJST1JfVkVSQk9TRQotICAg
ICAgeXllcnJvciAoY29udGV4dCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CisgICAgICB5eWVycm9y
ICgmeXlsbG9jLCBjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvciIpKTsKICNlbHNlCisjIGRlZmlu
ZSBZWVNZTlRBWF9FUlJPUiB5eXN5bnRheF9lcnJvciAoJnl5bXNnX2FsbG9jLCAmeXltc2csIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eXNzcCwgeXl0b2tlbikK
ICAgICAgIHsKLQlZWVNJWkVfVCB5eXNpemUgPSB5eXN5bnRheF9lcnJvciAoMCwgeXlzdGF0ZSwg
eXljaGFyKTsKLQlpZiAoeXltc2dfYWxsb2MgPCB5eXNpemUgJiYgeXltc2dfYWxsb2MgPCBZWVNU
QUNLX0FMTE9DX01BWElNVU0pCi0JICB7Ci0JICAgIFlZU0laRV9UIHl5YWxsb2MgPSAyICogeXlz
aXplOwotCSAgICBpZiAoISAoeXlzaXplIDw9IHl5YWxsb2MgJiYgeXlhbGxvYyA8PSBZWVNUQUNL
X0FMTE9DX01BWElNVU0pKQotCSAgICAgIHl5YWxsb2MgPSBZWVNUQUNLX0FMTE9DX01BWElNVU07
Ci0JICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKLQkgICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNn
KTsKLQkgICAgeXltc2cgPSAoY2hhciAqKSBZWVNUQUNLX0FMTE9DICh5eWFsbG9jKTsKLQkgICAg
aWYgKHl5bXNnKQotCSAgICAgIHl5bXNnX2FsbG9jID0geXlhbGxvYzsKLQkgICAgZWxzZQotCSAg
ICAgIHsKLQkJeXltc2cgPSB5eW1zZ2J1ZjsKLQkJeXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2di
dWY7Ci0JICAgICAgfQotCSAgfQotCi0JaWYgKDAgPCB5eXNpemUgJiYgeXlzaXplIDw9IHl5bXNn
X2FsbG9jKQotCSAgewotCSAgICAodm9pZCkgeXlzeW50YXhfZXJyb3IgKHl5bXNnLCB5eXN0YXRl
LCB5eWNoYXIpOwotCSAgICB5eWVycm9yIChjb250ZXh0LCB5eW1zZyk7Ci0JICB9Ci0JZWxzZQot
CSAgewotCSAgICB5eWVycm9yIChjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvciIpKTsKLQkgICAg
aWYgKHl5c2l6ZSAhPSAwKQotCSAgICAgIGdvdG8geXlleGhhdXN0ZWRsYWI7Ci0JICB9CisgICAg
ICAgIGNoYXIgY29uc3QgKnl5bXNncCA9IFlZXygic3ludGF4IGVycm9yIik7CisgICAgICAgIGlu
dCB5eXN5bnRheF9lcnJvcl9zdGF0dXM7CisgICAgICAgIHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9
IFlZU1lOVEFYX0VSUk9SOworICAgICAgICBpZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDAp
CisgICAgICAgICAgeXltc2dwID0geXltc2c7CisgICAgICAgIGVsc2UgaWYgKHl5c3ludGF4X2Vy
cm9yX3N0YXR1cyA9PSAxKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh5eW1zZyAhPSB5
eW1zZ2J1ZikKKyAgICAgICAgICAgICAgWVlTVEFDS19GUkVFICh5eW1zZyk7CisgICAgICAgICAg
ICB5eW1zZyA9IChjaGFyICopIFlZU1RBQ0tfQUxMT0MgKHl5bXNnX2FsbG9jKTsKKyAgICAgICAg
ICAgIGlmICgheXltc2cpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB5eW1zZyA9
IHl5bXNnYnVmOworICAgICAgICAgICAgICAgIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVm
OworICAgICAgICAgICAgICAgIHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9IDI7CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9IFlZU1lOVEFYX0VSUk9SOworICAgICAgICAgICAgICAg
IHl5bXNncCA9IHl5bXNnOworICAgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB5
eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCB5eW1zZ3ApOworICAgICAgICBpZiAoeXlzeW50YXhf
ZXJyb3Jfc3RhdHVzID09IDIpCisgICAgICAgICAgZ290byB5eWV4aGF1c3RlZGxhYjsKICAgICAg
IH0KKyMgdW5kZWYgWVlTWU5UQVhfRVJST1IKICNlbmRpZgogICAgIH0KIAotCisgIHl5ZXJyb3Jf
cmFuZ2VbMV0gPSB5eWxsb2M7CiAKICAgaWYgKHl5ZXJyc3RhdHVzID09IDMpCiAgICAgewotICAg
ICAgLyogSWYganVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2stYWhlYWQgdG9rZW4g
YWZ0ZXIgYW4KKyAgICAgIC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29r
YWhlYWQgdG9rZW4gYWZ0ZXIgYW4KIAkgZXJyb3IsIGRpc2NhcmQgaXQuICAqLwogCiAgICAgICBp
ZiAoeXljaGFyIDw9IFlZRU9GKQpAQCAtNDcxOCwxMiArNDc4NywxMiBAQCB5eWVycmxhYjoKICAg
ICAgIGVsc2UKIAl7CiAJICB5eWRlc3RydWN0ICgiRXJyb3I6IGRpc2NhcmRpbmciLAotCQkgICAg
ICB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKKwkJICAgICAgeXl0b2tlbiwgJnl5bHZhbCwg
Jnl5bGxvYywgY29udGV4dCk7CiAJICB5eWNoYXIgPSBZWUVNUFRZOwogCX0KICAgICB9CiAKLSAg
LyogRWxzZSB3aWxsIHRyeSB0byByZXVzZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5n
IHRoZSBlcnJvcgorICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBh
ZnRlciBzaGlmdGluZyB0aGUgZXJyb3IKICAgICAgdG9rZW4uICAqLwogICBnb3RvIHl5ZXJybGFi
MTsKIApAQCAtNDczOSw2ICs0ODA4LDcgQEAgeXllcnJvcmxhYjoKICAgaWYgKC8qQ09OU1RDT05E
Ki8gMCkKICAgICAgZ290byB5eWVycm9ybGFiOwogCisgIHl5ZXJyb3JfcmFuZ2VbMV0gPSB5eWxz
cFsxLXl5bGVuXTsKICAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUg
d2hpY2ggYWN0aW9uIHRyaWdnZXJlZAogICAgICB0aGlzIFlZRVJST1IuICAqLwogICBZWVBPUFNU
QUNLICh5eWxlbik7CkBAIC00NzU3LDcgKzQ4MjcsNyBAQCB5eWVycmxhYjE6CiAgIGZvciAoOzsp
CiAgICAgewogICAgICAgeXluID0geXlwYWN0W3l5c3RhdGVdOwotICAgICAgaWYgKHl5biAhPSBZ
WVBBQ1RfTklORikKKyAgICAgIGlmICgheXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCiAJ
ewogCSAgeXluICs9IFlZVEVSUk9SOwogCSAgaWYgKDAgPD0geXluICYmIHl5biA8PSBZWUxBU1Qg
JiYgeXljaGVja1t5eW5dID09IFlZVEVSUk9SKQpAQCAtNDc3MiwxOSArNDg0MiwyMyBAQCB5eWVy
cmxhYjE6CiAgICAgICBpZiAoeXlzc3AgPT0geXlzcykKIAlZWUFCT1JUOwogCi0KKyAgICAgIHl5
ZXJyb3JfcmFuZ2VbMV0gPSAqeXlsc3A7CiAgICAgICB5eWRlc3RydWN0ICgiRXJyb3I6IHBvcHBp
bmciLAotCQkgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2c3AsIGNvbnRleHQpOworCQkgIHl5c3Rvc1t5
eXN0YXRlXSwgeXl2c3AsIHl5bHNwLCBjb250ZXh0KTsKICAgICAgIFlZUE9QU1RBQ0sgKDEpOwog
ICAgICAgeXlzdGF0ZSA9ICp5eXNzcDsKICAgICAgIFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNz
cCk7CiAgICAgfQogCi0gIGlmICh5eW4gPT0gWVlGSU5BTCkKLSAgICBZWUFDQ0VQVDsKLQorICBZ
WV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgogICAqKyt5eXZzcCA9IHl5bHZhbDsK
KyAgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECiAKKyAgeXllcnJvcl9yYW5nZVsy
XSA9IHl5bGxvYzsKKyAgLyogVXNpbmcgWVlMTE9DIGlzIHRlbXB0aW5nLCBidXQgd291bGQgY2hh
bmdlIHRoZSBsb2NhdGlvbiBvZgorICAgICB0aGUgbG9va2FoZWFkLiAgWVlMT0MgaXMgYXZhaWxh
YmxlIHRob3VnaC4gICovCisgIFlZTExPQ19ERUZBVUxUICh5eWxvYywgeXllcnJvcl9yYW5nZSwg
Mik7CisgICorK3l5bHNwID0geXlsb2M7CiAKICAgLyogU2hpZnQgdGhlIGVycm9yIHRva2VuLiAg
Ki8KICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXN0b3NbeXluXSwgeXl2c3AsIHl5
bHNwKTsKQEAgLTQ4MDcsMjAgKzQ4ODEsMjUgQEAgeXlhYm9ydGxhYjoKICAgeXlyZXN1bHQgPSAx
OwogICBnb3RvIHl5cmV0dXJuOwogCi0jaWZuZGVmIHl5b3ZlcmZsb3cKKyNpZiAhZGVmaW5lZCB5
eW92ZXJmbG93IHx8IFlZRVJST1JfVkVSQk9TRQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCB5eWV4aGF1c3RlZGxhYiAtLSBtZW1vcnkgZXho
YXVzdGlvbiBjb21lcyBoZXJlLiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0qLwogeXlleGhhdXN0ZWRsYWI6Ci0gIHl5ZXJyb3IgKGNvbnRleHQs
IFlZXygibWVtb3J5IGV4aGF1c3RlZCIpKTsKKyAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwg
WVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOwogICB5eXJlc3VsdCA9IDI7CiAgIC8qIEZhbGwgdGhy
b3VnaC4gICovCiAjZW5kaWYKIAogeXlyZXR1cm46Ci0gIGlmICh5eWNoYXIgIT0gWVlFT0YgJiYg
eXljaGFyICE9IFlZRU1QVFkpCi0gICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5n
IGxvb2thaGVhZCIsCi0JCSB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKKyAgaWYgKHl5Y2hh
ciAhPSBZWUVNUFRZKQorICAgIHsKKyAgICAgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBs
b29rYWhlYWQgdHJhbnNsYXRpb24uICBTZWUgY29tbWVudHMgYXQKKyAgICAgICAgIHVzZXIgc2Vt
YW50aWMgYWN0aW9ucyBmb3Igd2h5IHRoaXMgaXMgbmVjZXNzYXJ5LiAgKi8KKyAgICAgIHl5dG9r
ZW4gPSBZWVRSQU5TTEFURSAoeXljaGFyKTsKKyAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBk
aXNjYXJkaW5nIGxvb2thaGVhZCIsCisgICAgICAgICAgICAgICAgICB5eXRva2VuLCAmeXlsdmFs
LCAmeXlsbG9jLCBjb250ZXh0KTsKKyAgICB9CiAgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1i
b2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKICAgICAgdGhpcyBZWUFCT1JU
IG9yIFlZQUNDRVBULiAgKi8KICAgWVlQT1BTVEFDSyAoeXlsZW4pOwpAQCAtNDgyOCw3ICs0OTA3
LDcgQEAgeXlyZXR1cm46CiAgIHdoaWxlICh5eXNzcCAhPSB5eXNzKQogICAgIHsKICAgICAgIHl5
ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBwb3BwaW5nIiwKLQkJICB5eXN0b3NbKnl5c3NwXSwgeXl2c3As
IGNvbnRleHQpOworCQkgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwgeXlsc3AsIGNvbnRleHQpOwog
ICAgICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgfQogI2lmbmRlZiB5eW92ZXJmbG93CkBAIC00ODQ3
LDcgKzQ5MjYsMTEgQEAgeXlyZXR1cm46CiAKIAogCit2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXls
bG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pIHsKKyAgICBj
b250ZXh0LT5lcnJvcigqeXlsbG9jLCByZWFzb24sICIiKTsKKyAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Cit9CisKIGludCBnbHNsYW5nX3BhcnNlKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAg
ICByZXR1cm4geXlwYXJzZShjb250ZXh0KTsKIH0KLQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgJKHJldmlzaW9uIDE1MjMy
MykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDI0ICsxLDIxIEBACi0vKiBBIEJpc29uIHBhcnNlciwgbWFk
ZSBieSBHTlUgQmlzb24gMi4zLiAgKi8KKy8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBC
aXNvbiAyLjcuICAqLwogCi0vKiBTa2VsZXRvbiBpbnRlcmZhY2UgZm9yIEJpc29uJ3MgWWFjYy1s
aWtlIHBhcnNlcnMgaW4gQwotCi0gICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIw
MDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKLSAgIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLgotCi0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLyogQmlzb24gaW50ZXJmYWNlIGZv
ciBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCisgICAKKyAgICAgIENvcHlyaWdodCAoQykgMTk4NCwg
MTk4OS0xOTkwLCAyMDAwLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAK
KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgYW55IGxh
dGVyIHZlcnNpb24uCi0KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2
ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICAgCiAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAgICBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCisgICAKICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQotICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKyAgIGFsb25nIHdpdGgg
dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+
LiAgKi8KIAogLyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSBjcmVhdGUgYSBsYXJn
ZXIgd29yayB0aGF0IGNvbnRhaW5zCiAgICBwYXJ0IG9yIGFsbCBvZiB0aGUgQmlzb24gcGFyc2Vy
IHNrZWxldG9uIGFuZCBkaXN0cmlidXRlIHRoYXQgd29yawpAQCAtMjksMTAgKzI2LDI4IEBACiAg
ICBzcGVjaWFsIGV4Y2VwdGlvbiwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRo
ZSByZXN1bHRpbmcKICAgIEJpc29uIG91dHB1dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0
aGUgR05VIEdlbmVyYWwgUHVibGljCiAgICBMaWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4
Y2VwdGlvbi4KLQorICAgCiAgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGluCiAgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4g
ICovCiAKKyNpZm5kZWYgWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRAorIyBkZWZpbmUgWVlf
WVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRAorLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KKyNpZm5k
ZWYgWVlERUJVRworIyBkZWZpbmUgWVlERUJVRyAwCisjZW5kaWYKKyNpZiBZWURFQlVHCitleHRl
cm4gaW50IHl5ZGVidWc7CisjZW5kaWYKKy8qICIlY29kZSByZXF1aXJlcyIgYmxvY2tzLiAgKi8K
KworCisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxUWVBFX0lTX0RFQ0xB
UkVEIDEKKworCisKKwogLyogVG9rZW5zLiAgKi8KICNpZm5kZWYgWVlUT0tFTlRZUEUKICMgZGVm
aW5lIFlZVE9LRU5UWVBFCkBAIC04NiwxNTggKzEwMSw2MSBAQAogICAgICBGTE9BVENPTlNUQU5U
ID0gMzAyLAogICAgICBJTlRDT05TVEFOVCA9IDMwMywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0
LAotICAgICBGSUVMRF9TRUxFQ1RJT04gPSAzMDUsCi0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAg
IFJJR0hUX09QID0gMzA3LAotICAgICBJTkNfT1AgPSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwK
LSAgICAgTEVfT1AgPSAzMTAsCi0gICAgIEdFX09QID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwK
LSAgICAgTkVfT1AgPSAzMTMsCi0gICAgIEFORF9PUCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUs
Ci0gICAgIFhPUl9PUCA9IDMxNiwKLSAgICAgTVVMX0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FT
U0lHTiA9IDMxOCwKLSAgICAgQUREX0FTU0lHTiA9IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMy
MCwKLSAgICAgTEVGVF9BU1NJR04gPSAzMjEsCi0gICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAg
ICAgQU5EX0FTU0lHTiA9IDMyMywKLSAgICAgWE9SX0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNT
SUdOID0gMzI1LAotICAgICBTVUJfQVNTSUdOID0gMzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3
LAotICAgICBSSUdIVF9QQVJFTiA9IDMyOCwKLSAgICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAg
ICBSSUdIVF9CUkFDS0VUID0gMzMwLAotICAgICBMRUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdI
VF9CUkFDRSA9IDMzMiwKLSAgICAgRE9UID0gMzMzLAotICAgICBDT01NQSA9IDMzNCwKLSAgICAg
Q09MT04gPSAzMzUsCi0gICAgIEVRVUFMID0gMzM2LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0g
ICAgIEJBTkcgPSAzMzgsCi0gICAgIERBU0ggPSAzMzksCi0gICAgIFRJTERFID0gMzQwLAotICAg
ICBQTFVTID0gMzQxLAotICAgICBTVEFSID0gMzQyLAotICAgICBTTEFTSCA9IDM0MywKLSAgICAg
UEVSQ0VOVCA9IDM0NCwKLSAgICAgTEVGVF9BTkdMRSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUg
PSAzNDYsCi0gICAgIFZFUlRJQ0FMX0JBUiA9IDM0NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAg
IEFNUEVSU0FORCA9IDM0OSwKLSAgICAgUVVFU1RJT04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMw
NSwKKyAgICAgUklHSFRfT1AgPSAzMDYsCisgICAgIElOQ19PUCA9IDMwNywKKyAgICAgREVDX09Q
ID0gMzA4LAorICAgICBMRV9PUCA9IDMwOSwKKyAgICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09Q
ID0gMzExLAorICAgICBORV9PUCA9IDMxMiwKKyAgICAgQU5EX09QID0gMzEzLAorICAgICBPUl9P
UCA9IDMxNCwKKyAgICAgWE9SX09QID0gMzE1LAorICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAg
ICBESVZfQVNTSUdOID0gMzE3LAorICAgICBBRERfQVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNT
SUdOID0gMzE5LAorICAgICBMRUZUX0FTU0lHTiA9IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0g
MzIxLAorICAgICBBTkRfQVNTSUdOID0gMzIyLAorICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAg
ICBPUl9BU1NJR04gPSAzMjQsCisgICAgIFNVQl9BU1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFS
RU4gPSAzMjYsCisgICAgIFJJR0hUX1BBUkVOID0gMzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAz
MjgsCisgICAgIFJJR0hUX0JSQUNLRVQgPSAzMjksCisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisg
ICAgIFJJR0hUX0JSQUNFID0gMzMxLAorICAgICBET1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMz
LAorICAgICBDT0xPTiA9IDMzNCwKKyAgICAgRVFVQUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9
IDMzNiwKKyAgICAgQkFORyA9IDMzNywKKyAgICAgREFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAz
MzksCisgICAgIFBMVVMgPSAzNDAsCisgICAgIFNUQVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQy
LAorICAgICBQRVJDRU5UID0gMzQzLAorICAgICBMRUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdI
VF9BTkdMRSA9IDM0NSwKKyAgICAgVkVSVElDQUxfQkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0
NywKKyAgICAgQU1QRVJTQU5EID0gMzQ4LAorICAgICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNl
bmRpZgotLyogVG9rZW5zLiAgKi8KLSNkZWZpbmUgSU5WQVJJQU5UIDI1OAotI2RlZmluZSBISUdI
X1BSRUNJU0lPTiAyNTkKLSNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTiAyNjAKLSNkZWZpbmUgTE9X
X1BSRUNJU0lPTiAyNjEKLSNkZWZpbmUgUFJFQ0lTSU9OIDI2MgotI2RlZmluZSBBVFRSSUJVVEUg
MjYzCi0jZGVmaW5lIENPTlNUX1FVQUwgMjY0Ci0jZGVmaW5lIEJPT0xfVFlQRSAyNjUKLSNkZWZp
bmUgRkxPQVRfVFlQRSAyNjYKLSNkZWZpbmUgSU5UX1RZUEUgMjY3Ci0jZGVmaW5lIEJSRUFLIDI2
OAotI2RlZmluZSBDT05USU5VRSAyNjkKLSNkZWZpbmUgRE8gMjcwCi0jZGVmaW5lIEVMU0UgMjcx
Ci0jZGVmaW5lIEZPUiAyNzIKLSNkZWZpbmUgSUYgMjczCi0jZGVmaW5lIERJU0NBUkQgMjc0Ci0j
ZGVmaW5lIFJFVFVSTiAyNzUKLSNkZWZpbmUgQlZFQzIgMjc2Ci0jZGVmaW5lIEJWRUMzIDI3Nwot
I2RlZmluZSBCVkVDNCAyNzgKLSNkZWZpbmUgSVZFQzIgMjc5Ci0jZGVmaW5lIElWRUMzIDI4MAot
I2RlZmluZSBJVkVDNCAyODEKLSNkZWZpbmUgVkVDMiAyODIKLSNkZWZpbmUgVkVDMyAyODMKLSNk
ZWZpbmUgVkVDNCAyODQKLSNkZWZpbmUgTUFUUklYMiAyODUKLSNkZWZpbmUgTUFUUklYMyAyODYK
LSNkZWZpbmUgTUFUUklYNCAyODcKLSNkZWZpbmUgSU5fUVVBTCAyODgKLSNkZWZpbmUgT1VUX1FV
QUwgMjg5Ci0jZGVmaW5lIElOT1VUX1FVQUwgMjkwCi0jZGVmaW5lIFVOSUZPUk0gMjkxCi0jZGVm
aW5lIFZBUllJTkcgMjkyCi0jZGVmaW5lIFNUUlVDVCAyOTMKLSNkZWZpbmUgVk9JRF9UWVBFIDI5
NAotI2RlZmluZSBXSElMRSAyOTUKLSNkZWZpbmUgU0FNUExFUjJEIDI5NgotI2RlZmluZSBTQU1Q
TEVSQ1VCRSAyOTcKLSNkZWZpbmUgU0FNUExFUl9FWFRFUk5BTF9PRVMgMjk4Ci0jZGVmaW5lIFNB
TVBMRVIyRFJFQ1QgMjk5Ci0jZGVmaW5lIElERU5USUZJRVIgMzAwCi0jZGVmaW5lIFRZUEVfTkFN
RSAzMDEKLSNkZWZpbmUgRkxPQVRDT05TVEFOVCAzMDIKLSNkZWZpbmUgSU5UQ09OU1RBTlQgMzAz
Ci0jZGVmaW5lIEJPT0xDT05TVEFOVCAzMDQKLSNkZWZpbmUgRklFTERfU0VMRUNUSU9OIDMwNQot
I2RlZmluZSBMRUZUX09QIDMwNgotI2RlZmluZSBSSUdIVF9PUCAzMDcKLSNkZWZpbmUgSU5DX09Q
IDMwOAotI2RlZmluZSBERUNfT1AgMzA5Ci0jZGVmaW5lIExFX09QIDMxMAotI2RlZmluZSBHRV9P
UCAzMTEKLSNkZWZpbmUgRVFfT1AgMzEyCi0jZGVmaW5lIE5FX09QIDMxMwotI2RlZmluZSBBTkRf
T1AgMzE0Ci0jZGVmaW5lIE9SX09QIDMxNQotI2RlZmluZSBYT1JfT1AgMzE2Ci0jZGVmaW5lIE1V
TF9BU1NJR04gMzE3Ci0jZGVmaW5lIERJVl9BU1NJR04gMzE4Ci0jZGVmaW5lIEFERF9BU1NJR04g
MzE5Ci0jZGVmaW5lIE1PRF9BU1NJR04gMzIwCi0jZGVmaW5lIExFRlRfQVNTSUdOIDMyMQotI2Rl
ZmluZSBSSUdIVF9BU1NJR04gMzIyCi0jZGVmaW5lIEFORF9BU1NJR04gMzIzCi0jZGVmaW5lIFhP
Ul9BU1NJR04gMzI0Ci0jZGVmaW5lIE9SX0FTU0lHTiAzMjUKLSNkZWZpbmUgU1VCX0FTU0lHTiAz
MjYKLSNkZWZpbmUgTEVGVF9QQVJFTiAzMjcKLSNkZWZpbmUgUklHSFRfUEFSRU4gMzI4Ci0jZGVm
aW5lIExFRlRfQlJBQ0tFVCAzMjkKLSNkZWZpbmUgUklHSFRfQlJBQ0tFVCAzMzAKLSNkZWZpbmUg
TEVGVF9CUkFDRSAzMzEKLSNkZWZpbmUgUklHSFRfQlJBQ0UgMzMyCi0jZGVmaW5lIERPVCAzMzMK
LSNkZWZpbmUgQ09NTUEgMzM0Ci0jZGVmaW5lIENPTE9OIDMzNQotI2RlZmluZSBFUVVBTCAzMzYK
LSNkZWZpbmUgU0VNSUNPTE9OIDMzNwotI2RlZmluZSBCQU5HIDMzOAotI2RlZmluZSBEQVNIIDMz
OQotI2RlZmluZSBUSUxERSAzNDAKLSNkZWZpbmUgUExVUyAzNDEKLSNkZWZpbmUgU1RBUiAzNDIK
LSNkZWZpbmUgU0xBU0ggMzQzCi0jZGVmaW5lIFBFUkNFTlQgMzQ0Ci0jZGVmaW5lIExFRlRfQU5H
TEUgMzQ1Ci0jZGVmaW5lIFJJR0hUX0FOR0xFIDM0NgotI2RlZmluZSBWRVJUSUNBTF9CQVIgMzQ3
Ci0jZGVmaW5lIENBUkVUIDM0OAotI2RlZmluZSBBTVBFUlNBTkQgMzQ5Ci0jZGVmaW5lIFFVRVNU
SU9OIDM1MAotCi0KIAogCiAjaWYgISBkZWZpbmVkIFlZU1RZUEUgJiYgISBkZWZpbmVkIFlZU1RZ
UEVfSVNfREVDTEFSRUQKIHR5cGVkZWYgdW5pb24gWVlTVFlQRQotCiB7CisKKwogICAgIHN0cnVj
dCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgVFN0cmluZyAqc3RyaW5nOwogICAgICAgICAgICAgZmxvYXQgZjsKQEAgLTI0Nyw3ICsxNjUs
NiBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwogICAg
IH0gbGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAg
VE9wZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9kZSog
aW50ZXJtTm9kZTsKQEAgLTI2MSwxOCArMTc4LDQ1IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQog
ICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgICAgICAgICBURnVuY3Rpb24q
IGZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKLSAgICAgICAgICAgIFRU
eXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgIFRUeXBlTGlzdCogdHlwZUxpc3Q7CisgICAg
ICAgICAgICBURmllbGQqIGZpZWxkOworICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0
OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwotfQotLyogTGluZSAxNTI5IG9mIHlhY2MuYy4g
ICovCiAKLQlZWVNUWVBFOworCisKK30gWVlTVFlQRTsKKyMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJ
VklBTCAxCiAjIGRlZmluZSB5eXN0eXBlIFlZU1RZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUg
d2l0aGRyYXduICovCiAjIGRlZmluZSBZWVNUWVBFX0lTX0RFQ0xBUkVEIDEKLSMgZGVmaW5lIFlZ
U1RZUEVfSVNfVFJJVklBTCAxCiAjZW5kaWYKIAorI2lmICEgZGVmaW5lZCBZWUxUWVBFICYmICEg
ZGVmaW5lZCBZWUxUWVBFX0lTX0RFQ0xBUkVECit0eXBlZGVmIHN0cnVjdCBZWUxUWVBFCit7Cisg
IGludCBmaXJzdF9saW5lOworICBpbnQgZmlyc3RfY29sdW1uOworICBpbnQgbGFzdF9saW5lOwor
ICBpbnQgbGFzdF9jb2x1bW47Cit9IFlZTFRZUEU7CisjIGRlZmluZSB5eWx0eXBlIFlZTFRZUEUg
Lyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCisjIGRlZmluZSBZWUxUWVBFX0lT
X0RFQ0xBUkVEIDEKKyMgZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCisjZW5kaWYKIAogCisj
aWZkZWYgWVlQQVJTRV9QQVJBTQorI2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2Nw
bHVzcGx1cworaW50IHl5cGFyc2UgKHZvaWQgKllZUEFSU0VfUEFSQU0pOworI2Vsc2UKK2ludCB5
eXBhcnNlICgpOworI2VuZGlmCisjZWxzZSAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KKyNpZiBkZWZp
bmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKK2ludCB5eXBhcnNlIChUUGFyc2VD
b250ZXh0KiBjb250ZXh0KTsKKyNlbHNlCitpbnQgeXlwYXJzZSAoKTsKKyNlbmRpZgorI2VuZGlm
IC8qICEgWVlQQVJTRV9QQVJBTSAqLworCisjZW5kaWYgLyogIVlZX1lZX0dMU0xBTkdfVEFCX0hf
SU5DTFVERUQgICovCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
aW50ZXJtT3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvaW50ZXJtT3V0LmNwcAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybU91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4OSw3ICsxODksOSBAQCBib29sIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0VW5hcnkoVmlzaXQK
ICAgICAgICAgY2FzZSBFT3BBbnk6ICAgICAgICAgICAgb3V0IDw8ICJhbnkiOyAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVPcEFsbDogICAgICAgICAgICBvdXQgPDwgImFs
bCI7ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgZGVmYXVsdDogb3V0Lm1lc3Nh
Z2UoRVByZWZpeEVycm9yLCAiQmFkIHVuYXJ5IG9wIik7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBvdXQucHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICBvdXQgPDwgIkJh
ZCB1bmFyeSBvcCI7CiAgICAgfQogCiAgICAgb3V0IDw8ICIgKCIgPDwgbm9kZS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSA8PCAiKSI7CkBAIC0yMDQsNyArMjA2LDggQEAgYm9vbCBUT3V0cHV0VHJhdmVy
c2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaQogICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IHNpbms7CiAK
ICAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BOdWxsKSB7Ci0gICAgICAgIG91dC5tZXNzYWdl
KEVQcmVmaXhFcnJvciwgIm5vZGUgaXMgc3RpbGwgRU9wTnVsbCEiKTsKKyAgICAgICAgb3V0LnBy
ZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICBvdXQgPDwgIm5vZGUgaXMgc3RpbGwgRU9wTnVs
bCEiOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI2Myw3ICsyNjYsOSBAQCBi
b29sIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpCiAKICAgICAgICAgY2FzZSBF
T3BEZWNsYXJhdGlvbjogICBvdXQgPDwgIkRlY2xhcmF0aW9uOiAiOyAgIGJyZWFrOwogCi0gICAg
ICAgIGRlZmF1bHQ6IG91dC5tZXNzYWdlKEVQcmVmaXhFcnJvciwgIkJhZCBhZ2dyZWdhdGlvbiBv
cCIpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJy
b3IpOworICAgICAgICAgICAgb3V0IDw8ICJCYWQgYWdncmVnYXRpb24gb3AiOwogICAgIH0KIAog
ICAgIGlmIChub2RlLT5nZXRPcCgpICE9IEVPcFNlcXVlbmNlICYmIG5vZGUtPmdldE9wKCkgIT0g
RU9wUGFyYW1ldGVycykKQEAgLTMxMSw5ICszMTYsOSBAQCB2b2lkIFRPdXRwdXRUcmF2ZXJzZXI6
OnZpc2l0Q29uc3RhbnRVbmlvCiB7CiAgICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gc2luazsKIAot
ICAgIGludCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKKyAgICBzaXpl
X3Qgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CiAKLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKSB7CiAgICAgICAgIE91dHB1dFRyZWVUZXh0KG91dCwgbm9kZSwgZGVwdGgpOwogICAg
ICAgICBzd2l0Y2ggKG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKClbaV0uZ2V0VHlwZSgpKSB7
CiAgICAgICAgICAgICBjYXNlIEVidEJvb2w6CkBAIC0zMzQsNyArMzM5LDcgQEAgdm9pZCBUT3V0
cHV0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pbwogICAgICAgICAgICAgICAgIG91dCA8PCAi
IChjb25zdCBpbnQpXG4iOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICBvdXQubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwg
IlVua25vd24gY29uc3RhbnQiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91
dC5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJVbmtub3du
IGNvbnN0YW50Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVy
bWVkaWF0ZS5oCShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE4LDYgKzE4LDcgQEAK
IAogI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGht
PgogI2luY2x1ZGUgImNvbXBpbGVyL0NvbW1vbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL1R5cGVz
LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oIgpAQCAtMjA2LDEwICsyMDcs
MTYgQEAgY2xhc3MgVEludGVybU5vZGUgewogcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05F
V19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikKIAotICAgIFRJbnRlcm1Ob2RlKCkgOiBsaW5l
KDApIHt9CisgICAgVEludGVybU5vZGUoKSB7CisgICAgICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0
byBUU291cmNlTG9jIGNvbnN0cnVjdG9yCisgICAgICAgIC8vIGFmdGVyIGdldHRpbmcgcmlkIG9m
IFRQdWJsaWNUeXBlLgorICAgICAgICBsaW5lLmZpcnN0X2ZpbGUgPSBsaW5lLmxhc3RfZmlsZSA9
IDA7CisgICAgICAgIGxpbmUuZmlyc3RfbGluZSA9IGxpbmUubGFzdF9saW5lID0gMDsKKyAgICB9
CisgICAgdmlydHVhbCB+VEludGVybU5vZGUoKSB7IH0KIAotICAgIFRTb3VyY2VMb2MgZ2V0TGlu
ZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmU7IH0KLSAgICB2b2lkIHNldExpbmUoVFNvdXJjZUxvYyBs
KSB7IGxpbmUgPSBsOyB9CisgICAgY29uc3QgVFNvdXJjZUxvYyYgZ2V0TGluZSgpIGNvbnN0IHsg
cmV0dXJuIGxpbmU7IH0KKyAgICB2b2lkIHNldExpbmUoY29uc3QgVFNvdXJjZUxvYyYgbCkgeyBs
aW5lID0gbDsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIq
KSA9IDA7CiAgICAgdmlydHVhbCBUSW50ZXJtVHlwZWQqIGdldEFzVHlwZWQoKSB7IHJldHVybiAw
OyB9CkBAIC0yMjAsNyArMjI3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVEludGVybVNlbGVj
dGlvbiogZ2V0QXNTZWxlY3Rpb25Ob2RlKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgVElu
dGVybVN5bWJvbCogZ2V0QXNTeW1ib2xOb2RlKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
VEludGVybUxvb3AqIGdldEFzTG9vcE5vZGUoKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB+
VEludGVybU5vZGUoKSB7IH0KIAogcHJvdGVjdGVkOgogICAgIFRTb3VyY2VMb2MgbGluZTsKQEAg
LTM1OCw3ICszNjQsMTAgQEAgcHVibGljOgogICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKENvbnN0
YW50VW5pb24gKnVuaW9uUG9pbnRlciwgY29uc3QgVFR5cGUmIHQpIDogVEludGVybVR5cGVkKHQp
LCB1bmlvbkFycmF5UG9pbnRlcih1bmlvblBvaW50ZXIpIHsgfQogCiAgICAgQ29uc3RhbnRVbmlv
biogZ2V0VW5pb25BcnJheVBvaW50ZXIoKSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRl
cjsgfQotICAgIHZvaWQgc2V0VW5pb25BcnJheVBvaW50ZXIoQ29uc3RhbnRVbmlvbiAqYykgeyB1
bmlvbkFycmF5UG9pbnRlciA9IGM7IH0KKyAgICAKKyAgICBpbnQgZ2V0SUNvbnN0KGludCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXIgPyB1bmlvbkFycmF5UG9pbnRlcltp
bmRleF0uZ2V0SUNvbnN0KCkgOiAwOyB9CisgICAgZmxvYXQgZ2V0RkNvbnN0KGludCBpbmRleCkg
Y29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXIgPyB1bmlvbkFycmF5UG9pbnRlcltpbmRl
eF0uZ2V0RkNvbnN0KCkgOiAwLjBmOyB9CisgICAgYm9vbCBnZXRCQ29uc3QoaW50IGluZGV4KSBj
b25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRlciA/IHVuaW9uQXJyYXlQb2ludGVyW2luZGV4
XS5nZXRCQ29uc3QoKSA6IGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIFRJbnRlcm1Db25zdGFudFVu
aW9uKiBnZXRBc0NvbnN0YW50VW5pb24oKSAgeyByZXR1cm4gdGhpczsgfQogICAgIHZpcnR1YWwg
dm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKik7CkBAIC00NDcsNyArNDU2LDcgQEAgdHlw
ZWRlZiBUVmVjdG9yPGludD4gVFF1YWxpZmllckxpc3Q7CiAvLwogY2xhc3MgVEludGVybUFnZ3Jl
Z2F0ZSA6IHB1YmxpYyBUSW50ZXJtT3BlcmF0b3IgewogcHVibGljOgotICAgIFRJbnRlcm1BZ2dy
ZWdhdGUoKSA6IFRJbnRlcm1PcGVyYXRvcihFT3BOdWxsKSwgdXNlckRlZmluZWQoZmFsc2UpLCBl
bmRMaW5lKDApLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKGZhbHNlKSB7IH0KKyAgICBUSW50ZXJtQWdn
cmVnYXRlKCkgOiBUSW50ZXJtT3BlcmF0b3IoRU9wTnVsbCksIHVzZXJEZWZpbmVkKGZhbHNlKSwg
dXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSkgeyB9CiAgICAgVEludGVybUFnZ3JlZ2F0ZShUT3Bl
cmF0b3IgbykgOiBUSW50ZXJtT3BlcmF0b3IobyksIHVzZUVtdWxhdGVkRnVuY3Rpb24oZmFsc2Up
IHsgfQogICAgIH5USW50ZXJtQWdncmVnYXRlKCkgeyB9CiAKQEAgLTQ2Nyw5ICs0NzYsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXREZWJ1Zyhib29sIGQpIHsgZGVidWcgPSBkOyB9CiAgICAgYm9v
bCBnZXREZWJ1ZygpIHsgcmV0dXJuIGRlYnVnOyB9CiAKLSAgICB2b2lkIHNldEVuZExpbmUoVFNv
dXJjZUxvYyBsaW5lKSB7IGVuZExpbmUgPSBsaW5lOyB9Ci0gICAgVFNvdXJjZUxvYyBnZXRFbmRM
aW5lKCkgY29uc3QgeyByZXR1cm4gZW5kTGluZTsgfQotCiAgICAgdm9pZCBzZXRVc2VFbXVsYXRl
ZEZ1bmN0aW9uKCkgeyB1c2VFbXVsYXRlZEZ1bmN0aW9uID0gdHJ1ZTsgfQogICAgIGJvb2wgZ2V0
VXNlRW11bGF0ZWRGdW5jdGlvbigpIHsgcmV0dXJuIHVzZUVtdWxhdGVkRnVuY3Rpb247IH0KIApA
QCAtNDgyLDcgKzQ4OCw2IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgb3B0aW1pemU7CiAgICAg
Ym9vbCBkZWJ1ZzsKLSAgICBUU291cmNlTG9jIGVuZExpbmU7CiAKICAgICAvLyBJZiBzZXQgdG8g
dHJ1ZSwgcmVwbGFjZSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gY2FsbCB3aXRoIGFuIGVtdWxhdGVk
IG9uZQogICAgIC8vIHRvIHdvcmsgYXJvdW5kIGRyaXZlciBidWdzLgpAQCAtNTM4LDcgKzU0Myw4
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGluVmlzaXQoaW5WaXNpdCksCiAgICAgICAgICAgICBw
b3N0VmlzaXQocG9zdFZpc2l0KSwKICAgICAgICAgICAgIHJpZ2h0VG9MZWZ0KHJpZ2h0VG9MZWZ0
KSwKLSAgICAgICAgICAgIGRlcHRoKDApIHt9CisgICAgICAgICAgICBkZXB0aCgwKSwKKyAgICAg
ICAgICAgIG1heERlcHRoKDApIHt9CiAgICAgdmlydHVhbCB+VEludGVybVRyYXZlcnNlcigpIHt9
OwogCiAgICAgdmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqKSB7fQpAQCAt
NTUwLDcgKzU1Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRMb29wKFZpc2l0
IHZpc2l0LCBUSW50ZXJtTG9vcCopIHtyZXR1cm4gdHJ1ZTt9CiAgICAgdmlydHVhbCBib29sIHZp
c2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKikge3JldHVybiB0cnVlO30KIAot
ICAgIHZvaWQgaW5jcmVtZW50RGVwdGgoKSB7ZGVwdGgrKzt9CisgICAgaW50IGdldE1heERlcHRo
KCkgY29uc3Qge3JldHVybiBtYXhEZXB0aDt9CisgICAgdm9pZCBpbmNyZW1lbnREZXB0aCgpIHtk
ZXB0aCsrOyBtYXhEZXB0aCA9IHN0ZDo6bWF4KG1heERlcHRoLCBkZXB0aCk7IH0KICAgICB2b2lk
IGRlY3JlbWVudERlcHRoKCkge2RlcHRoLS07fQogCiAgICAgLy8gUmV0dXJuIHRoZSBvcmlnaW5h
bCBuYW1lIGlmIGhhc2ggZnVuY3Rpb24gcG9pbnRlciBpcyBOVUxMOwpAQCAtNTY0LDYgKzU3MSw3
IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIGludCBkZXB0aDsKKyAgICBpbnQgbWF4RGVw
dGg7CiB9OwogCiAjZW5kaWYgLy8gX19JTlRFUk1FRElBVEVfSApJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRl
LmgJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9sb2NhbGludGVybWVkaWF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwzNCArMjUsMzMg
QEAgcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9j
YXRvcikKIAogICAgIFRJbnRlcm1lZGlhdGUoVEluZm9TaW5rJiBpKSA6IGluZm9TaW5rKGkpIHsg
fQotICAgIFRJbnRlcm1TeW1ib2wqIGFkZFN5bWJvbChpbnQgSWQsIGNvbnN0IFRTdHJpbmcmLCBj
b25zdCBUVHlwZSYsIFRTb3VyY2VMb2MpOworICAgIFRJbnRlcm1TeW1ib2wqIGFkZFN5bWJvbChp
bnQgSWQsIGNvbnN0IFRTdHJpbmcmLCBjb25zdCBUVHlwZSYsIGNvbnN0IFRTb3VyY2VMb2MmKTsK
ICAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnZlcnNpb24oVE9wZXJhdG9yLCBjb25zdCBUVHlwZSYs
IFRJbnRlcm1UeXBlZCopOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQmluYXJ5TWF0aChUT3BlcmF0
b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxv
YywgVFN5bWJvbFRhYmxlJik7Ci0gICAgVEludGVybVR5cGVkKiBhZGRBc3NpZ24oVE9wZXJhdG9y
IG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2Mp
OwotICAgIFRJbnRlcm1UeXBlZCogYWRkSW5kZXgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQq
IGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBl
ZCogYWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIGNoaWxkLCBUU291cmNl
TG9jLCBUU3ltYm9sVGFibGUmKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlKiBncm93QWdncmVnYXRl
KFRJbnRlcm1Ob2RlKiBsZWZ0LCBUSW50ZXJtTm9kZSogcmlnaHQsIFRTb3VyY2VMb2MpOwotICAg
IFRJbnRlcm1BZ2dyZWdhdGUqIG1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUqIG5vZGUsIFRTb3Vy
Y2VMb2MpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKFRJbnRl
cm1Ob2RlKiwgVE9wZXJhdG9yLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtTm9kZSogIGFkZFNl
bGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1Ob2RlUGFpciBjb2RlLCBUU291cmNl
TG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQs
IFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZhbHNlQmxvY2ssIFRTb3Vy
Y2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29tbWEoVEludGVybVR5cGVkKiBsZWZ0LCBU
SW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlv
biogYWRkQ29uc3RhbnRVbmlvbihDb25zdGFudFVuaW9uKiwgY29uc3QgVFR5cGUmLCBUU291cmNl
TG9jKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZEJpbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50
ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmLCBU
U3ltYm9sVGFibGUmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZEFzc2lnbihUT3BlcmF0b3Igb3As
IFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxv
YyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkSW5kZXgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlw
ZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBU
SW50ZXJtVHlwZWQqIGFkZFVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBjaGls
ZCwgY29uc3QgVFNvdXJjZUxvYyYsIFRTeW1ib2xUYWJsZSYpOworICAgIFRJbnRlcm1BZ2dyZWdh
dGUqIGdyb3dBZ2dyZWdhdGUoVEludGVybU5vZGUqIGxlZnQsIFRJbnRlcm1Ob2RlKiByaWdodCwg
Y29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1BZ2dyZWdhdGUqIG1ha2VBZ2dyZWdhdGUo
VEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtQWdncmVn
YXRlKiBzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSosIFRPcGVyYXRvciwgY29uc3Qg
VFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1Ob2RlKiAgYWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBl
ZCogY29uZCwgVEludGVybU5vZGVQYWlyIGNvZGUsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBU
SW50ZXJtVHlwZWQqIGFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBl
ZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZhbHNlQmxvY2ssIGNvbnN0IFRTb3VyY2VMb2Mm
KTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbW1hKFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVy
bVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1Db25zdGFudFVu
aW9uKiBhZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qLCBjb25zdCBUVHlwZSYsIGNvbnN0
IFRTb3VyY2VMb2MmKTsKICAgICBUSW50ZXJtVHlwZWQqIHByb21vdGVDb25zdGFudFVuaW9uKFRC
YXNpY1R5cGUsIFRJbnRlcm1Db25zdGFudFVuaW9uKikgOwotICAgIGJvb2wgcGFyc2VDb25zdFRy
ZWUoVFNvdXJjZUxvYywgVEludGVybU5vZGUqLCBDb25zdGFudFVuaW9uKiwgVE9wZXJhdG9yLCBU
U3ltYm9sVGFibGUmLCBUVHlwZSwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFtID0gZmFsc2UpOyAg
ICAgICAgCi0gICAgVEludGVybU5vZGUqIGFkZExvb3AoVExvb3BUeXBlLCBUSW50ZXJtTm9kZSos
IFRJbnRlcm1UeXBlZCosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1Ob2RlKiwgVFNvdXJjZUxvYyk7
Ci0gICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgVFNvdXJjZUxvYyk7Ci0g
ICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgVEludGVybVR5cGVkKiwgVFNv
dXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRTd2l6emxlKFRWZWN0b3JGaWVsZHMmLCBU
U291cmNlTG9jKTsKKyAgICBib29sIHBhcnNlQ29uc3RUcmVlKGNvbnN0IFRTb3VyY2VMb2MmLCBU
SW50ZXJtTm9kZSosIENvbnN0YW50VW5pb24qLCBUT3BlcmF0b3IsIFRTeW1ib2xUYWJsZSYsIFRU
eXBlLCBib29sIHNpbmdsZUNvbnN0YW50UGFyYW0gPSBmYWxzZSk7ICAgICAgICAKKyAgICBUSW50
ZXJtTm9kZSogYWRkTG9vcChUTG9vcFR5cGUsIFRJbnRlcm1Ob2RlKiwgVEludGVybVR5cGVkKiwg
VEludGVybVR5cGVkKiwgVEludGVybU5vZGUqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVElu
dGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgY29uc3QgVFNvdXJjZUxvYyYpOworICAg
IFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3BlcmF0b3IsIFRJbnRlcm1UeXBlZCosIGNvbnN0
IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZFN3aXp6bGUoVFZlY3RvckZpZWxk
cyYsIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAgICBib29sIHBvc3RQcm9jZXNzKFRJbnRlcm1Ob2Rl
Kik7Ci0Jdm9pZCByZW1vdmUoVEludGVybU5vZGUqKTsKKyAgICB2b2lkIHJlbW92ZShUSW50ZXJt
Tm9kZSopOwogICAgIHZvaWQgb3V0cHV0VHJlZShUSW50ZXJtTm9kZSopOwotICAgIAotcHJvdGVj
dGVkOgotICAgIFRJbmZvU2luayYgaW5mb1Npbms7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBvcGVy
YXRvcj0oVEludGVybWVkaWF0ZSYpOyAvLyBwcmV2ZW50IGFzc2lnbm1lbnRzCisKKyAgICBUSW5m
b1NpbmsmIGluZm9TaW5rOwogfTsKIAogI2VuZGlmIC8vIF9MT0NBTF9JTlRFUk1FRElBVEVfSU5D
TFVERURfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcGFyc2VD
b25zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3BhcnNlQ29uc3QuY3BwCShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDE2ICszOCwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQs
IFRJbnRlcm1Mb29wKik7CiAgICAgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVy
bUJyYW5jaCopOwogCi0gICAgaW50IGluZGV4OworICAgIHNpemVfdCBpbmRleDsKICAgICBDb25z
dGFudFVuaW9uICp1bmlvbkFycmF5OwogICAgIFRUeXBlIHR5cGU7CiAgICAgVE9wZXJhdG9yIGNv
bnN0cnVjdG9yVHlwZTsKICAgICBib29sIHNpbmdsZUNvbnN0YW50UGFyYW07CiAgICAgVEluZm9T
aW5rJiBpbmZvU2luazsKICAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlOwotICAgIGludCBz
aXplOyAvLyBzaXplIG9mIHRoZSBjb25zdHJ1Y3RvciAoIDQgZm9yIHZlYzQpCisgICAgc2l6ZV90
IHNpemU7IC8vIHNpemUgb2YgdGhlIGNvbnN0cnVjdG9yICggNCBmb3IgdmVjNCkKICAgICBib29s
IGlzTWF0cml4OwotICAgIGludCBtYXRyaXhTaXplOyAvLyBkaW1lbnNpb24gb2YgdGhlIG1hdHJp
eCAobm9taW5hbCBzaXplIGFuZCBub3QgdGhlIGluc3RhbmNlIHNpemUpCisgICAgc2l6ZV90IG1h
dHJpeFNpemU7IC8vIGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4IChub21pbmFsIHNpemUgYW5kIG5v
dCB0aGUgaW5zdGFuY2Ugc2l6ZSkKIH07CiAKIC8vCkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3Rl
ZDoKIAogdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqIG5v
ZGUpCiB7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAi
U3ltYm9sIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5l
KCkpOworICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9k
ZS0+Z2V0TGluZSgpLCAiU3ltYm9sIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3Ii
KTsKICAgICByZXR1cm47CiAKIH0KQEAgLTc0LDEyICs3NCwxMiBAQCBib29sIFRDb25zdFRyYXZl
cnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQKICAgICAgICAgVFN0cmluZyBidWY7CiAgICAgICAgIGJ1
Zi5hcHBlbmQoIidjb25zdHJ1Y3RvcicgOiBhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvICIpOwog
ICAgICAgICBidWYuYXBwZW5kKHR5cGUuZ2V0Q29tcGxldGVTdHJpbmcoKSk7Ci0gICAgICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsIGJ1Zi5jX3N0cigpLCBub2RlLT5nZXRM
aW5lKCkpOworICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBub2Rl
LT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigpKTsKICAgICAgICAgZXJyb3IgPSB0cnVlOwogICAgICAg
ICByZXR1cm4gZmFsc2U7ICAKICAgICB9CiAKLSAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4SW50ZXJuYWxFcnJvciwgIkJpbmFyeSBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVj
dG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmluYXJ5IE5vZGUgZm91bmQgaW4gY29u
c3RhbnQgY29uc3RydWN0b3IiKTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC04OSw3
ICs4OSw3IEBAIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdFVuYXJ5KFZpc2l0IHYKICAgICBU
U3RyaW5nIGJ1ZjsKICAgICBidWYuYXBwZW5kKCInY29uc3RydWN0b3InIDogYXNzaWduaW5nIG5v
bi1jb25zdGFudCB0byAiKTsKICAgICBidWYuYXBwZW5kKHR5cGUuZ2V0Q29tcGxldGVTdHJpbmco
KSk7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwgYnVmLmNfc3RyKCks
IG5vZGUtPmdldExpbmUoKSk7CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJv
ciwgbm9kZS0+Z2V0TGluZSgpLCBidWYuY19zdHIoKSk7CiAgICAgZXJyb3IgPSB0cnVlOwogICAg
IHJldHVybiBmYWxzZTsgIAogfQpAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wgVENvbnN0VHJhdmVy
c2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKICAgICAgICAgVFN0cmluZyBidWY7CiAgICAgICAgIGJ1
Zi5hcHBlbmQoIidjb25zdHJ1Y3RvcicgOiBhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvICIpOwog
ICAgICAgICBidWYuYXBwZW5kKHR5cGUuZ2V0Q29tcGxldGVTdHJpbmcoKSk7Ci0gICAgICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsIGJ1Zi5jX3N0cigpLCBub2RlLT5nZXRM
aW5lKCkpOworICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBub2Rl
LT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigpKTsKICAgICAgICAgZXJyb3IgPSB0cnVlOwogICAgICAg
ICByZXR1cm4gZmFsc2U7ICAKICAgICB9CkBAIC0xNDQsMjQgKzE0NCwzMSBAQCBib29sIFRDb25z
dFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzCiAKIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2
aXNpdFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVEludGVybVNlbGVjdGlvbiogbm9kZSkKIHsKLSAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJTZWxlY3Rpb24g
Tm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExpbmUoKSk7Cisg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRM
aW5lKCksICJTZWxlY3Rpb24gTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOwog
ICAgIGVycm9yID0gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgVENvbnN0VHJh
dmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24qIG5vZGUpCiB7
CisgICAgaWYgKCFub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKQorICAgIHsKKyAgICAgICAg
Ly8gVGhlIGNvbnN0YW50IHdhcyBub3QgaW5pdGlhbGl6ZWQsIHRoaXMgc2hvdWxkIGFscmVhZHkg
aGF2ZSBiZWVuIGxvZ2dlZAorICAgICAgICBhc3NlcnQoaW5mb1NpbmsuaW5mby5zaXplKCkgIT0g
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBDb25zdGFudFVuaW9uKiBsZWZ0VW5p
b25BcnJheSA9IHVuaW9uQXJyYXk7Ci0gICAgaW50IGluc3RhbmNlU2l6ZSA9IHR5cGUuZ2V0T2Jq
ZWN0U2l6ZSgpOworICAgIHNpemVfdCBpbnN0YW5jZVNpemUgPSB0eXBlLmdldE9iamVjdFNpemUo
KTsKIAogICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmICghc2luZ2xlQ29uc3RhbnRQYXJhbSkgewotICAgICAgICBpbnQgc2l6ZSA9IG5vZGUt
PmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIHNpemVfdCBzaXplID0gbm9kZS0+
Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKICAgICAKICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
cmlnaHRVbmlvbkFycmF5ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICAgICAg
Zm9yIChpbnQgaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2VTaXpl
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2lu
ZGV4XSA9IHJpZ2h0VW5pb25BcnJheVtpXTsKQEAgLTE2OSwxMSArMTc2LDExIEBAIHZvaWQgVENv
bnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24KICAgICAgICAgICAgIChpbmRleCkrKzsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGludCB0b3RhbFNpemUgPSBpbmRleCAr
IHNpemU7CisgICAgICAgIHNpemVfdCB0b3RhbFNpemUgPSBpbmRleCArIHNpemU7CiAgICAgICAg
IENvbnN0YW50VW5pb24gKnJpZ2h0VW5pb25BcnJheSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQb2lu
dGVyKCk7CiAgICAgICAgIGlmICghaXNNYXRyaXgpIHsKLSAgICAgICAgICAgIGludCBjb3VudCA9
IDA7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkrKykg
eworICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBpbmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYgKGkg
Pj0gaW5zdGFuY2VTaXplKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE4NSw5
ICsxOTIsOSBAQCB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uCiAgICAg
ICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7
ICAvLyBmb3IgbWF0cml4IGNvbnN0cnVjdG9ycwotICAgICAgICAgICAgaW50IGNvdW50ID0gMDsK
LSAgICAgICAgICAgIGludCBlbGVtZW50ID0gaW5kZXg7Ci0gICAgICAgICAgICBmb3IgKGludCBp
ID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkrKykgeworICAgICAgICAgICAgc2l6ZV90IGNvdW50
ID0gMDsKKyAgICAgICAgICAgIHNpemVfdCBlbGVtZW50ID0gaW5kZXg7CisgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkrKykgewogICAgICAgICAgICAg
ICAgIGlmIChpID49IGluc3RhbmNlU2l6ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50IC0gaSA9PSAwIHx8IChpIC0gZWxlbWVudCkgJSAo
bWF0cml4U2l6ZSArIDEpID09IDAgKQpAQCAtMjA2LDE0ICsyMTMsMTQgQEAgdm9pZCBUQ29uc3RU
cmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbgogCiBib29sIFRDb25zdFRyYXZlcnNlcjo6dmlz
aXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCogbm9kZSkKIHsKLSAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJMb29wIE5vZGUgZm91bmQgaW4gY29u
c3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5lKCkpOworICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiTG9vcCBOb2Rl
IGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgZXJyb3IgPSB0cnVlOwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QnJhbmNoKFZp
c2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJyYW5jaCBOb2RlIGZvdW5kIGluIGNvbnN0YW50
IGNvbnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2luay5pbmZvLm1lc3Nh
Z2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJyYW5jaCBOb2RlIGZv
dW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgZXJyb3IgPSB0cnVlOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KQEAgLTIyMyw3ICsyMzAsNyBAQCBib29sIFRDb25zdFRyYXZlcnNlcjo6
dmlzaXRCcmFuY2goVmlzaXQKIC8vIEluZGl2aWR1YWwgZnVuY3Rpb25zIGNhbiBiZSBpbml0aWFs
aXplZCB0byAwIHRvIHNraXAgcHJvY2Vzc2luZyBvZiB0aGF0CiAvLyB0eXBlIG9mIG5vZGUuICBJ
dCdzIGNoaWxkcmVuIHdpbGwgc3RpbGwgYmUgcHJvY2Vzc2VkLgogLy8KLWJvb2wgVEludGVybWVk
aWF0ZTo6cGFyc2VDb25zdFRyZWUoVFNvdXJjZUxvYyBsaW5lLCBUSW50ZXJtTm9kZSogcm9vdCwg
Q29uc3RhbnRVbmlvbiogdW5pb25BcnJheSwgVE9wZXJhdG9yIGNvbnN0cnVjdG9yVHlwZSwgVFN5
bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSwgVFR5cGUgdCwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFt
KQorYm9vbCBUSW50ZXJtZWRpYXRlOjpwYXJzZUNvbnN0VHJlZShjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBUSW50ZXJtTm9kZSogcm9vdCwgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSwgVE9wZXJh
dG9yIGNvbnN0cnVjdG9yVHlwZSwgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSwgVFR5cGUgdCwg
Ym9vbCBzaW5nbGVDb25zdGFudFBhcmFtKQogewogICAgIGlmIChyb290ID09IDApCiAgICAgICAg
IHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFy
c2VyLmNwcAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSwyNCArMSwyMiBAQAotLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29u
IDIuMy4gICovCisvKiBBIEJpc29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24gMi40LjIuICAq
LwogCiAvKiBTa2VsZXRvbiBpbXBsZW1lbnRhdGlvbiBmb3IgQmlzb24ncyBZYWNjLWxpa2UgcGFy
c2VycyBpbiBDCi0KLSAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAw
MSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNgotICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuCi0KLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAKKyAgICAgIENvcHlyaWdodCAoQykgMTk4
NCwgMTk4OS0xOTkwLCAyMDAwLTIwMDYsIDIwMDktMjAxMCBGcmVlIFNvZnR3YXJlCisgICBGb3Vu
ZGF0aW9uLCBJbmMuCisgICAKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIg
b3B0aW9uKQotICAgYW55IGxhdGVyIHZlcnNpb24uCi0KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICAgCiAgICBUaGlzIHByb2dyYW0gaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlCiAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
CisgICAKICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAg
Ki8KKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu
Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAogLyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91
IG1heSBjcmVhdGUgYSBsYXJnZXIgd29yayB0aGF0IGNvbnRhaW5zCiAgICBwYXJ0IG9yIGFsbCBv
ZiB0aGUgQmlzb24gcGFyc2VyIHNrZWxldG9uIGFuZCBkaXN0cmlidXRlIHRoYXQgd29yawpAQCAt
MjksNyArMjcsNyBAQAogICAgc3BlY2lhbCBleGNlcHRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhl
IHNrZWxldG9uIGFuZCB0aGUgcmVzdWx0aW5nCiAgICBCaXNvbiBvdXRwdXQgZmlsZXMgdG8gYmUg
bGljZW5zZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwogICAgTGljZW5zZSB3aXRob3V0
IHRoaXMgc3BlY2lhbCBleGNlcHRpb24uCi0KKyAgIAogICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlv
biB3YXMgYWRkZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBpbgogICAgdmVyc2lv
biAyLjIgb2YgQmlzb24uICAqLwogCkBAIC00Nyw3ICs0NSw3IEBACiAjZGVmaW5lIFlZQklTT04g
MQogCiAvKiBCaXNvbiB2ZXJzaW9uLiAgKi8KLSNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjMi
CisjZGVmaW5lIFlZQklTT05fVkVSU0lPTiAiMi40LjIiCiAKIC8qIFNrZWxldG9uIG5hbWUuICAq
LwogI2RlZmluZSBZWVNLRUxFVE9OX05BTUUgInlhY2MuYyIKQEAgLTU1LDUwICs1MywyMyBAQAog
LyogUHVyZSBwYXJzZXJzLiAgKi8KICNkZWZpbmUgWVlQVVJFIDEKIAorLyogUHVzaCBwYXJzZXJz
LiAgKi8KKyNkZWZpbmUgWVlQVVNIIDAKKworLyogUHVsbCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUg
WVlQVUxMIDEKKwogLyogVXNpbmcgbG9jYXRpb25zLiAgKi8KICNkZWZpbmUgWVlMU1BfTkVFREVE
IDAKIAogLyogU3Vic3RpdHV0ZSB0aGUgdmFyaWFibGUgYW5kIGZ1bmN0aW9uIG5hbWVzLiAgKi8K
LSNkZWZpbmUgeXlwYXJzZSBwcHBhcnNlCi0jZGVmaW5lIHl5bGV4ICAgcHBsZXgKLSNkZWZpbmUg
eXllcnJvciBwcGVycm9yCi0jZGVmaW5lIHl5bHZhbCAgcHBsdmFsCi0jZGVmaW5lIHl5Y2hhciAg
cHBjaGFyCi0jZGVmaW5lIHl5ZGVidWcgcHBkZWJ1ZwotI2RlZmluZSB5eW5lcnJzIHBwbmVycnMK
LQotCi0vKiBUb2tlbnMuICAqLwotI2lmbmRlZiBZWVRPS0VOVFlQRQotIyBkZWZpbmUgWVlUT0tF
TlRZUEUKLSAgIC8qIFB1dCB0aGUgdG9rZW5zIGludG8gdGhlIHN5bWJvbCB0YWJsZSwgc28gdGhh
dCBHREIgYW5kIG90aGVyIGRlYnVnZ2VycwotICAgICAga25vdyBhYm91dCB0aGVtLiAgKi8KLSAg
IGVudW0geXl0b2tlbnR5cGUgewotICAgICBUT0tfQ09OU1RfSU5UID0gMjU4LAotICAgICBUT0tf
T1BfT1IgPSAyNTksCi0gICAgIFRPS19PUF9BTkQgPSAyNjAsCi0gICAgIFRPS19PUF9ORSA9IDI2
MSwKLSAgICAgVE9LX09QX0VRID0gMjYyLAotICAgICBUT0tfT1BfR0UgPSAyNjMsCi0gICAgIFRP
S19PUF9MRSA9IDI2NCwKLSAgICAgVE9LX09QX1JJR0hUID0gMjY1LAotICAgICBUT0tfT1BfTEVG
VCA9IDI2NiwKLSAgICAgVE9LX1VOQVJZID0gMjY3Ci0gICB9OwotI2VuZGlmCi0vKiBUb2tlbnMu
ICAqLwotI2RlZmluZSBUT0tfQ09OU1RfSU5UIDI1OAotI2RlZmluZSBUT0tfT1BfT1IgMjU5Ci0j
ZGVmaW5lIFRPS19PUF9BTkQgMjYwCi0jZGVmaW5lIFRPS19PUF9ORSAyNjEKLSNkZWZpbmUgVE9L
X09QX0VRIDI2MgotI2RlZmluZSBUT0tfT1BfR0UgMjYzCi0jZGVmaW5lIFRPS19PUF9MRSAyNjQK
LSNkZWZpbmUgVE9LX09QX1JJR0hUIDI2NQotI2RlZmluZSBUT0tfT1BfTEVGVCAyNjYKLSNkZWZp
bmUgVE9LX1VOQVJZIDI2NwotCi0KKyNkZWZpbmUgeXlwYXJzZSAgICAgICAgIHBwcGFyc2UKKyNk
ZWZpbmUgeXlsZXggICAgICAgICAgIHBwbGV4CisjZGVmaW5lIHl5ZXJyb3IgICAgICAgICBwcGVy
cm9yCisjZGVmaW5lIHl5bHZhbCAgICAgICAgICBwcGx2YWwKKyNkZWZpbmUgeXljaGFyICAgICAg
ICAgIHBwY2hhcgorI2RlZmluZSB5eWRlYnVnICAgICAgICAgcHBkZWJ1ZworI2RlZmluZSB5eW5l
cnJzICAgICAgICAgcHBuZXJycwogCiAKIC8qIENvcHkgdGhlIGZpcnN0IHBhcnQgb2YgdXNlciBk
ZWNsYXJhdGlvbnMuICAqLwpAQCAtMTU4LDYgKzEyOSw3IEBAIHN0YXRpYyBpbnQgeXlsZXgoWVlT
VFlQRSogbHZhbHAsIENvbnRleHQKIHN0YXRpYyB2b2lkIHl5ZXJyb3IoQ29udGV4dCogY29udGV4
dCwgY29uc3QgY2hhciogcmVhc29uKTsKIAogCisKIC8qIEVuYWJsaW5nIHRyYWNlcy4gICovCiAj
aWZuZGVmIFlZREVCVUcKICMgZGVmaW5lIFlZREVCVUcgMApAQCAtMTc2LDIwICsxNDgsMzkgQEAg
c3RhdGljIHZvaWQgeXllcnJvcihDb250ZXh0KiBjb250ZXh0LCBjbwogIyBkZWZpbmUgWVlUT0tF
Tl9UQUJMRSAwCiAjZW5kaWYKIAorCisvKiBUb2tlbnMuICAqLworI2lmbmRlZiBZWVRPS0VOVFlQ
RQorIyBkZWZpbmUgWVlUT0tFTlRZUEUKKyAgIC8qIFB1dCB0aGUgdG9rZW5zIGludG8gdGhlIHN5
bWJvbCB0YWJsZSwgc28gdGhhdCBHREIgYW5kIG90aGVyIGRlYnVnZ2VycworICAgICAga25vdyBh
Ym91dCB0aGVtLiAgKi8KKyAgIGVudW0geXl0b2tlbnR5cGUgeworICAgICBUT0tfQ09OU1RfSU5U
ID0gMjU4LAorICAgICBUT0tfT1BfT1IgPSAyNTksCisgICAgIFRPS19PUF9BTkQgPSAyNjAsCisg
ICAgIFRPS19PUF9ORSA9IDI2MSwKKyAgICAgVE9LX09QX0VRID0gMjYyLAorICAgICBUT0tfT1Bf
R0UgPSAyNjMsCisgICAgIFRPS19PUF9MRSA9IDI2NCwKKyAgICAgVE9LX09QX1JJR0hUID0gMjY1
LAorICAgICBUT0tfT1BfTEVGVCA9IDI2NiwKKyAgICAgVE9LX1VOQVJZID0gMjY3CisgICB9Owor
I2VuZGlmCisKKworCiAjaWYgISBkZWZpbmVkIFlZU1RZUEUgJiYgISBkZWZpbmVkIFlZU1RZUEVf
SVNfREVDTEFSRUQKIHR5cGVkZWYgaW50IFlZU1RZUEU7CisjIGRlZmluZSBZWVNUWVBFX0lTX1RS
SVZJQUwgMQogIyBkZWZpbmUgeXlzdHlwZSBZWVNUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJl
IHdpdGhkcmF3biAqLwogIyBkZWZpbmUgWVlTVFlQRV9JU19ERUNMQVJFRCAxCi0jIGRlZmluZSBZ
WVNUWVBFX0lTX1RSSVZJQUwgMQogI2VuZGlmCiAKIAotCiAvKiBDb3B5IHRoZSBzZWNvbmQgcGFy
dCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCiAKIAotLyogTGluZSAyMTYgb2YgeWFjYy5jLiAg
Ki8KLQogCiAjaWZkZWYgc2hvcnQKICMgdW5kZWYgc2hvcnQKQEAgLTI2NCwxNCArMjU1LDE0IEBA
IHR5cGVkZWYgc2hvcnQgaW50IHl5dHlwZV9pbnQxNjsKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8
fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8
IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgaW50Ci1ZWUlEIChpbnQgaSkKK1lZSUQgKGludCB5
eWkpCiAjZWxzZQogc3RhdGljIGludAotWVlJRCAoaSkKLSAgICBpbnQgaTsKK1lZSUQgKHl5aSkK
KyAgICBpbnQgeXlpOwogI2VuZGlmCiB7Ci0gIHJldHVybiBpOworICByZXR1cm4geXlpOwogfQog
I2VuZGlmCiAKQEAgLTM1Miw5ICszNDMsOSBAQCB2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJ
TkdFUyBPTiBVU0VSCiAvKiBBIHR5cGUgdGhhdCBpcyBwcm9wZXJseSBhbGlnbmVkIGZvciBhbnkg
c3RhY2sgbWVtYmVyLiAgKi8KIHVuaW9uIHl5YWxsb2MKIHsKLSAgeXl0eXBlX2ludDE2IHl5c3M7
Ci0gIFlZU1RZUEUgeXl2czsKLSAgfTsKKyAgeXl0eXBlX2ludDE2IHl5c3NfYWxsb2M7CisgIFlZ
U1RZUEUgeXl2c19hbGxvYzsKK307CiAKIC8qIFRoZSBzaXplIG9mIHRoZSBtYXhpbXVtIGdhcCBi
ZXR3ZWVuIG9uZSBhbGlnbmVkIHN0YWNrIGFuZCB0aGUgbmV4dC4gICovCiAjIGRlZmluZSBZWVNU
QUNLX0dBUF9NQVhJTVVNIChzaXplb2YgKHVuaW9uIHl5YWxsb2MpIC0gMSkKQEAgLTM4OCwxMiAr
Mzc5LDEyIEBAIHVuaW9uIHl5YWxsb2MKICAgIGVsZW1lbnRzIGluIHRoZSBzdGFjaywgYW5kIFlZ
UFRSIGdpdmVzIHRoZSBuZXcgbG9jYXRpb24gb2YgdGhlCiAgICBzdGFjay4gIEFkdmFuY2UgWVlQ
VFIgdG8gYSBwcm9wZXJseSBhbGlnbmVkIGxvY2F0aW9uIGZvciB0aGUgbmV4dAogICAgc3RhY2su
ICAqLwotIyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FURShTdGFjaykJCQkJCVwKKyMgZGVmaW5lIFlZ
U1RBQ0tfUkVMT0NBVEUoU3RhY2tfYWxsb2MsIFN0YWNrKQkJCQlcCiAgICAgZG8JCQkJCQkJCQlc
CiAgICAgICB7CQkJCQkJCQkJXAogCVlZU0laRV9UIHl5bmV3Ynl0ZXM7CQkJCQkJXAotCVlZQ09Q
WSAoJnl5cHRyLT5TdGFjaywgU3RhY2ssIHl5c2l6ZSk7CQkJCVwKLQlTdGFjayA9ICZ5eXB0ci0+
U3RhY2s7CQkJCQkJXAorCVlZQ09QWSAoJnl5cHRyLT5TdGFja19hbGxvYywgU3RhY2ssIHl5c2l6
ZSk7CQkJXAorCVN0YWNrID0gJnl5cHRyLT5TdGFja19hbGxvYzsJCQkJCVwKIAl5eW5ld2J5dGVz
ID0geXlzdGFja3NpemUgKiBzaXplb2YgKCpTdGFjaykgKyBZWVNUQUNLX0dBUF9NQVhJTVVNOyBc
CiAJeXlwdHIgKz0geXluZXdieXRlcyAvIHNpemVvZiAoKnl5cHRyKTsJCQkJXAogICAgICAgfQkJ
CQkJCQkJCVwKQEAgLTQ4Miw5ICs0NzMsOSBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDggeXly
aHNbXSA9CiAvKiBZWVJMSU5FW1lZTl0gLS0gc291cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1iZXIg
WVlOIHdhcyBkZWZpbmVkLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlybGluZVtd
ID0KIHsKLSAgICAgICAwLCAgICA5MSwgICAgOTEsICAgIDk4LCAgICA5OSwgICAxMDIsICAgMTA1
LCAgIDEwOCwgICAxMTEsICAgMTE0LAotICAgICAxMTcsICAgMTIwLCAgIDEyMywgICAxMjYsICAg
MTI5LCAgIDEzMiwgICAxMzUsICAgMTM4LCAgIDE0MSwgICAxNDQsCi0gICAgIDE1NywgICAxNzAs
ICAgMTczLCAgIDE3NiwgICAxNzksICAgMTgyLCAgIDE4NQorICAgICAgIDAsICAgIDkwLCAgICA5
MCwgICAgOTcsICAgIDk4LCAgIDEwMSwgICAxMDQsICAgMTA3LCAgIDExMCwgICAxMTMsCisgICAg
IDExNiwgICAxMTksICAgMTIyLCAgIDEyNSwgICAxMjgsICAgMTMxLCAgIDEzNCwgICAxMzcsICAg
MTQwLCAgIDE0MywKKyAgICAgMTU2LCAgIDE2OSwgICAxNzIsICAgMTc1LCAgIDE3OCwgICAxODEs
ICAgMTg0CiB9OwogI2VuZGlmCiAKQEAgLTYzOSw5ICs2MzAsMTggQEAgc3RhdGljIGNvbnN0IHl5
dHlwZV91aW50OCB5eXN0b3NbXSA9CiAKIC8qIExpa2UgWVlFUlJPUiBleGNlcHQgZG8gY2FsbCB5
eWVycm9yLiAgVGhpcyByZW1haW5zIGhlcmUgdGVtcG9yYXJpbHkKICAgIHRvIGVhc2UgdGhlIHRy
YW5zaXRpb24gdG8gdGhlIG5ldyBtZWFuaW5nIG9mIFlZRVJST1IsIGZvciBHQ0MuCi0gICBPbmNl
IEdDQyB2ZXJzaW9uIDIgaGFzIHN1cHBsYW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNhbiBnby4gICov
CisgICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFzIHN1cHBsYW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNh
biBnby4gIEhvd2V2ZXIsCisgICBZWUZBSUwgYXBwZWFycyB0byBiZSBpbiB1c2UuICBOZXZlcnRo
ZWxlc3MsIGl0IGlzIGZvcm1hbGx5IGRlcHJlY2F0ZWQKKyAgIGluIEJpc29uIDIuNC4yJ3MgTkVX
UyBlbnRyeSwgd2hlcmUgYSBwbGFuIHRvIHBoYXNlIGl0IG91dCBpcworICAgZGlzY3Vzc2VkLiAg
Ki8KIAogI2RlZmluZSBZWUZBSUwJCWdvdG8geXllcnJsYWIKKyNpZiBkZWZpbmVkIFlZRkFJTAor
ICAvKiBUaGlzIGlzIGhlcmUgdG8gc3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgR0NDIGNwcCdz
CisgICAgIC1XdW51c2VkLW1hY3Jvcy4gIE5vcm1hbGx5IHdlIGRvbid0IHdvcnJ5IGFib3V0IHRo
YXQgd2FybmluZywgYnV0CisgICAgIHNvbWUgdXNlcnMgZG8sIGFuZCB3ZSB3YW50IHRvIG1ha2Ug
aXQgZWFzeSBmb3IgdXNlcnMgdG8gcmVtb3ZlCisgICAgIFlZRkFJTCB1c2VzLCB3aGljaCB3aWxs
IHByb2R1Y2Ugd2FybmluZ3MgZnJvbSBCaXNvbiAyLjUuICAqLworI2VuZGlmCiAKICNkZWZpbmUg
WVlSRUNPVkVSSU5HKCkgICghIXl5ZXJyc3RhdHVzKQogCkBAIC04MTIsMTcgKzgxMiwyMCBAQCB5
eV9zeW1ib2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsCiAjaWYgKGRlZmluZWQgX19T
VERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVz
cGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKLXl5X3N0YWNrX3ByaW50ICh5
eXR5cGVfaW50MTYgKmJvdHRvbSwgeXl0eXBlX2ludDE2ICp0b3ApCit5eV9zdGFja19wcmludCAo
eXl0eXBlX2ludDE2ICp5eWJvdHRvbSwgeXl0eXBlX2ludDE2ICp5eXRvcCkKICNlbHNlCiBzdGF0
aWMgdm9pZAoteXlfc3RhY2tfcHJpbnQgKGJvdHRvbSwgdG9wKQotICAgIHl5dHlwZV9pbnQxNiAq
Ym90dG9tOwotICAgIHl5dHlwZV9pbnQxNiAqdG9wOworeXlfc3RhY2tfcHJpbnQgKHl5Ym90dG9t
LCB5eXRvcCkKKyAgICB5eXR5cGVfaW50MTYgKnl5Ym90dG9tOworICAgIHl5dHlwZV9pbnQxNiAq
eXl0b3A7CiAjZW5kaWYKIHsKICAgWVlGUFJJTlRGIChzdGRlcnIsICJTdGFjayBub3ciKTsKLSAg
Zm9yICg7IGJvdHRvbSA8PSB0b3A7ICsrYm90dG9tKQotICAgIFlZRlBSSU5URiAoc3RkZXJyLCAi
ICVkIiwgKmJvdHRvbSk7CisgIGZvciAoOyB5eWJvdHRvbSA8PSB5eXRvcDsgeXlib3R0b20rKykK
KyAgICB7CisgICAgICBpbnQgeXlib3QgPSAqeXlib3R0b207CisgICAgICBZWUZQUklOVEYgKHN0
ZGVyciwgIiAlZCIsIHl5Ym90KTsKKyAgICB9CiAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsK
IH0KIApAQCAtODU3LDExICs4NjAsMTEgQEAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlydWxl
LCBjb250ZXh0KQogICAvKiBUaGUgc3ltYm9scyBiZWluZyByZWR1Y2VkLiAgKi8KICAgZm9yICh5
eWkgPSAwOyB5eWkgPCB5eW5yaHM7IHl5aSsrKQogICAgIHsKLSAgICAgIGZwcmludGYgKHN0ZGVy
ciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICIgICAk
JWQgPSAiLCB5eWkgKyAxKTsKICAgICAgIHl5X3N5bWJvbF9wcmludCAoc3RkZXJyLCB5eXJoc1t5
eXByaHNbeXlydWxlXSArIHl5aV0sCiAJCSAgICAgICAmKHl5dnNwWyh5eWkgKyAxKSAtICh5eW5y
aHMpXSkKIAkJICAgICAgIAkJICAgICAgICwgY29udGV4dCk7Ci0gICAgICBmcHJpbnRmIChzdGRl
cnIsICJcbiIpOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwogICAgIH0KIH0KIApA
QCAtMTE0MywxMCArMTE0Niw4IEBAIHl5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVw
LCBjb24KIAlicmVhazsKICAgICB9CiB9Ci0MCiAKIC8qIFByZXZlbnQgd2FybmluZ3MgZnJvbSAt
V21pc3NpbmctcHJvdG90eXBlcy4gICovCi0KICNpZmRlZiBZWVBBUlNFX1BBUkFNCiAjaWYgZGVm
aW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCiBpbnQgeXlwYXJzZSAodm9pZCAq
WVlQQVJTRV9QQVJBTSk7CkBAIC0xMTY1LDEwICsxMTY2LDkgQEAgaW50IHl5cGFyc2UgKCk7CiAK
IAogCi0KLS8qLS0tLS0tLS0tLS4KLXwgeXlwYXJzZS4gIHwKLWAtLS0tLS0tLS0tKi8KKy8qLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXlwYXJzZSBvciB5eXB1c2hfcGFyc2UuICB8Citg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKICNpZmRlZiBZWVBBUlNFX1BBUkFNCiAjaWYg
KGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKQEAgLTExOTIsMjIg
KzExOTIsNDYgQEAgeXlwYXJzZSAoY29udGV4dCkKICNlbmRpZgogI2VuZGlmCiB7Ci0gIC8qIFRo
ZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCisvKiBUaGUgbG9va2FoZWFkIHN5bWJvbC4gICovCiBp
bnQgeXljaGFyOwogCi0vKiBUaGUgc2VtYW50aWMgdmFsdWUgb2YgdGhlIGxvb2stYWhlYWQgc3lt
Ym9sLiAgKi8KKy8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBvZiB0aGUgbG9va2FoZWFkIHN5bWJvbC4g
ICovCiBZWVNUWVBFIHl5bHZhbDsKIAotLyogTnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFy
LiAgKi8KLWludCB5eW5lcnJzOworICAgIC8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZh
ci4gICovCisgICAgaW50IHl5bmVycnM7CisKKyAgICBpbnQgeXlzdGF0ZTsKKyAgICAvKiBOdW1i
ZXIgb2YgdG9rZW5zIHRvIHNoaWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFibGVkLiAgKi8K
KyAgICBpbnQgeXllcnJzdGF0dXM7CisKKyAgICAvKiBUaGUgc3RhY2tzIGFuZCB0aGVpciB0b29s
czoKKyAgICAgICBgeXlzcyc6IHJlbGF0ZWQgdG8gc3RhdGVzLgorICAgICAgIGB5eXZzJzogcmVs
YXRlZCB0byBzZW1hbnRpYyB2YWx1ZXMuCisKKyAgICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRo
cnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKKyAgICAgICB0byByZWFs
bG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8KKworICAgIC8qIFRoZSBzdGF0ZSBzdGFjay4gICov
CisgICAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKKyAgICB5eXR5cGVfaW50MTYg
Knl5c3M7CisgICAgeXl0eXBlX2ludDE2ICp5eXNzcDsKKworICAgIC8qIFRoZSBzZW1hbnRpYyB2
YWx1ZSBzdGFjay4gICovCisgICAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07CisgICAgWVlT
VFlQRSAqeXl2czsKKyAgICBZWVNUWVBFICp5eXZzcDsKKworICAgIFlZU0laRV9UIHl5c3RhY2tz
aXplOwogCi0gIGludCB5eXN0YXRlOwogICBpbnQgeXluOwogICBpbnQgeXlyZXN1bHQ7Ci0gIC8q
IE51bWJlciBvZiB0b2tlbnMgdG8gc2hpZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQu
ICAqLwotICBpbnQgeXllcnJzdGF0dXM7Ci0gIC8qIExvb2stYWhlYWQgdG9rZW4gYXMgYW4gaW50
ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4gICovCi0gIGludCB5eXRva2VuID0gMDsK
KyAgLyogTG9va2FoZWFkIHRva2VuIGFzIGFuIGludGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBu
dW1iZXIuICAqLworICBpbnQgeXl0b2tlbjsKKyAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJl
dHVybiBzZW1hbnRpYyB2YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKKyAgICAgYWN0aW9uIHJv
dXRpbmVzLiAgKi8KKyAgWVlTVFlQRSB5eXZhbDsKKwogI2lmIFlZRVJST1JfVkVSQk9TRQogICAv
KiBCdWZmZXIgZm9yIGVycm9yIG1lc3NhZ2VzLCBhbmQgaXRzIGFsbG9jYXRlZCBzaXplLiAgKi8K
ICAgY2hhciB5eW1zZ2J1ZlsxMjhdOwpAQCAtMTIxNSw1MSArMTIzOSwyOCBAQCBpbnQgeXluZXJy
czsKICAgWVlTSVpFX1QgeXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7CiAjZW5kaWYKIAot
ICAvKiBUaHJlZSBzdGFja3MgYW5kIHRoZWlyIHRvb2xzOgotICAgICBgeXlzcyc6IHJlbGF0ZWQg
dG8gc3RhdGVzLAotICAgICBgeXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLAotICAg
ICBgeXlscyc6IHJlbGF0ZWQgdG8gbG9jYXRpb25zLgotCi0gICAgIFJlZmVyIHRvIHRoZSBzdGFj
a3MgdGhydSBzZXBhcmF0ZSBwb2ludGVycywgdG8gYWxsb3cgeXlvdmVyZmxvdwotICAgICB0byBy
ZWFsbG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8KLQotICAvKiBUaGUgc3RhdGUgc3RhY2suICAq
LwotICB5eXR5cGVfaW50MTYgeXlzc2FbWVlJTklUREVQVEhdOwotICB5eXR5cGVfaW50MTYgKnl5
c3MgPSB5eXNzYTsKLSAgeXl0eXBlX2ludDE2ICp5eXNzcDsKLQotICAvKiBUaGUgc2VtYW50aWMg
dmFsdWUgc3RhY2suICAqLwotICBZWVNUWVBFIHl5dnNhW1lZSU5JVERFUFRIXTsKLSAgWVlTVFlQ
RSAqeXl2cyA9IHl5dnNhOwotICBZWVNUWVBFICp5eXZzcDsKLQotCi0KICNkZWZpbmUgWVlQT1BT
VEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5c3NwIC09IChOKSkKIAotICBZWVNJWkVfVCB5eXN0
YWNrc2l6ZSA9IFlZSU5JVERFUFRIOwotCi0gIC8qIFRoZSB2YXJpYWJsZXMgdXNlZCB0byByZXR1
cm4gc2VtYW50aWMgdmFsdWUgYW5kIGxvY2F0aW9uIGZyb20gdGhlCi0gICAgIGFjdGlvbiByb3V0
aW5lcy4gICovCi0gIFlZU1RZUEUgeXl2YWw7Ci0KLQogICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJv
bHMgb24gdGhlIFJIUyBvZiB0aGUgcmVkdWNlZCBydWxlLgogICAgICBLZWVwIHRvIHplcm8gd2hl
biBubyBzeW1ib2wgc2hvdWxkIGJlIHBvcHBlZC4gICovCiAgIGludCB5eWxlbiA9IDA7CiAKKyAg
eXl0b2tlbiA9IDA7CisgIHl5c3MgPSB5eXNzYTsKKyAgeXl2cyA9IHl5dnNhOworICB5eXN0YWNr
c2l6ZSA9IFlZSU5JVERFUFRIOworCiAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YXJ0aW5nIHBh
cnNlXG4iKSk7CiAKICAgeXlzdGF0ZSA9IDA7CiAgIHl5ZXJyc3RhdHVzID0gMDsKICAgeXluZXJy
cyA9IDA7Ci0gIHl5Y2hhciA9IFlZRU1QVFk7CQkvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQu
ICAqLworICB5eWNoYXIgPSBZWUVNUFRZOyAvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAq
LwogCiAgIC8qIEluaXRpYWxpemUgc3RhY2sgcG9pbnRlcnMuCiAgICAgIFdhc3RlIG9uZSBlbGVt
ZW50IG9mIHZhbHVlIGFuZCBsb2NhdGlvbiBzdGFjawogICAgICBzbyB0aGF0IHRoZXkgc3RheSBv
biB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgc3RhdGUgc3RhY2suCiAgICAgIFRoZSB3YXN0ZWQgZWxl
bWVudHMgYXJlIG5ldmVyIGluaXRpYWxpemVkLiAgKi8KLQogICB5eXNzcCA9IHl5c3M7CiAgIHl5
dnNwID0geXl2czsKIApAQCAtMTI4OSw3ICsxMjkwLDYgQEAgaW50IHl5bmVycnM7CiAJWVlTVFlQ
RSAqeXl2czEgPSB5eXZzOwogCXl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOwogCi0KIAkvKiBF
YWNoIHN0YWNrIHBvaW50ZXIgYWRkcmVzcyBpcyBmb2xsb3dlZCBieSB0aGUgc2l6ZSBvZiB0aGUK
IAkgICBkYXRhIGluIHVzZSBpbiB0aGF0IHN0YWNrLCBpbiBieXRlcy4gIFRoaXMgdXNlZCB0byBi
ZSBhCiAJICAgY29uZGl0aW9uYWwgYXJvdW5kIGp1c3QgdGhlIHR3byBleHRyYSBhcmdzLCBidXQg
dGhhdCBtaWdodApAQCAtMTI5Nyw3ICsxMjk3LDYgQEAgaW50IHl5bmVycnM7CiAJeXlvdmVyZmxv
dyAoWVlfKCJtZW1vcnkgZXhoYXVzdGVkIiksCiAJCSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVv
ZiAoKnl5c3NwKSwKIAkJICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAotCiAJ
CSAgICAmeXlzdGFja3NpemUpOwogCiAJeXlzcyA9IHl5c3MxOwpAQCAtMTMyMCw5ICsxMzE5LDgg
QEAgaW50IHl5bmVycnM7CiAJICAodW5pb24geXlhbGxvYyAqKSBZWVNUQUNLX0FMTE9DIChZWVNU
QUNLX0JZVEVTICh5eXN0YWNrc2l6ZSkpOwogCWlmICghIHl5cHRyKQogCSAgZ290byB5eWV4aGF1
c3RlZGxhYjsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXNzKTsKLQlZWVNUQUNLX1JFTE9DQVRFICh5
eXZzKTsKLQorCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3NfYWxsb2MsIHl5c3MpOworCVlZU1RBQ0tf
UkVMT0NBVEUgKHl5dnNfYWxsb2MsIHl5dnMpOwogIyAgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQog
CWlmICh5eXNzMSAhPSB5eXNzYSkKIAkgIFlZU1RBQ0tfRlJFRSAoeXlzczEpOwpAQCAtMTMzMyw3
ICsxMzMxLDYgQEAgaW50IHl5bmVycnM7CiAgICAgICB5eXNzcCA9IHl5c3MgKyB5eXNpemUgLSAx
OwogICAgICAgeXl2c3AgPSB5eXZzICsgeXlzaXplIC0gMTsKIAotCiAgICAgICBZWURQUklOVEYg
KChzdGRlcnIsICJTdGFjayBzaXplIGluY3JlYXNlZCB0byAlbHVcbiIsCiAJCSAgKHVuc2lnbmVk
IGxvbmcgaW50KSB5eXN0YWNrc2l6ZSkpOwogCkBAIC0xMzQzLDYgKzEzNDAsOSBAQCBpbnQgeXlu
ZXJyczsKIAogICBZWURQUklOVEYgKChzdGRlcnIsICJFbnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlz
dGF0ZSkpOwogCisgIGlmICh5eXN0YXRlID09IFlZRklOQUwpCisgICAgWVlBQ0NFUFQ7CisKICAg
Z290byB5eWJhY2t1cDsKIAogLyotLS0tLS0tLS0tLS4KQEAgLTEzNTEsMTYgKzEzNTEsMTYgQEAg
aW50IHl5bmVycnM7CiB5eWJhY2t1cDoKIAogICAvKiBEbyBhcHByb3ByaWF0ZSBwcm9jZXNzaW5n
IGdpdmVuIHRoZSBjdXJyZW50IHN0YXRlLiAgUmVhZCBhCi0gICAgIGxvb2stYWhlYWQgdG9rZW4g
aWYgd2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLworICAgICBsb29r
YWhlYWQgdG9rZW4gaWYgd2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAq
LwogCi0gIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5j
ZSB0byBsb29rLWFoZWFkIHRva2VuLiAgKi8KKyAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0
IHRvIGRvIHdpdGhvdXQgcmVmZXJlbmNlIHRvIGxvb2thaGVhZCB0b2tlbi4gICovCiAgIHl5biA9
IHl5cGFjdFt5eXN0YXRlXTsKICAgaWYgKHl5biA9PSBZWVBBQ1RfTklORikKICAgICBnb3RvIHl5
ZGVmYXVsdDsKIAotICAvKiBOb3Qga25vd24gPT4gZ2V0IGEgbG9vay1haGVhZCB0b2tlbiBpZiBk
b24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KKyAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2th
aGVhZCB0b2tlbiBpZiBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KIAotICAvKiBZWUNIQVIg
aXMgZWl0aGVyIFlZRU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29rLWFoZWFkIHN5bWJvbC4g
ICovCisgIC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRiBvciBhIHZhbGlkIGxv
b2thaGVhZCBzeW1ib2wuICAqLwogICBpZiAoeXljaGFyID09IFlZRU1QVFkpCiAgICAgewogICAg
ICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiUmVhZGluZyBhIHRva2VuOiAiKSk7CkBAIC0xMzkyLDIw
ICsxMzkyLDE2IEBAIHl5YmFja3VwOgogICAgICAgZ290byB5eXJlZHVjZTsKICAgICB9CiAKLSAg
aWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCiAgIC8qIENvdW50IHRva2VucyBz
aGlmdGVkIHNpbmNlIGVycm9yOyBhZnRlciB0aHJlZSwgdHVybiBvZmYgZXJyb3IKICAgICAgc3Rh
dHVzLiAgKi8KICAgaWYgKHl5ZXJyc3RhdHVzKQogICAgIHl5ZXJyc3RhdHVzLS07CiAKLSAgLyog
U2hpZnQgdGhlIGxvb2stYWhlYWQgdG9rZW4uICAqLworICAvKiBTaGlmdCB0aGUgbG9va2FoZWFk
IHRva2VuLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXRva2VuLCAmeXls
dmFsLCAmeXlsbG9jKTsKIAotICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuIHVubGVzcyBp
dCBpcyBlb2YuICAqLwotICBpZiAoeXljaGFyICE9IFlZRU9GKQotICAgIHl5Y2hhciA9IFlZRU1Q
VFk7CisgIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4uICAqLworICB5eWNoYXIgPSBZWUVN
UFRZOwogCiAgIHl5c3RhdGUgPSB5eW47CiAgICorK3l5dnNwID0geXlsdmFsOwpAQCAtMTQ0OSwx
MTIgKzE0NDUsMTEyIEBAIHl5cmVkdWNlOgogICAgIHsKICAgICAgICAgKihjb250ZXh0LT5yZXN1
bHQpID0gc3RhdGljX2Nhc3Q8aW50PigoeXl2c3BbKDEpIC0gKDEpXSkpOwogICAgICAgICBZWUFD
Q0VQVDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDQ6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgfHwgKHl5dnNwWygzKSAtICgzKV0p
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNToKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAmJiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2OgogCiAgICAgewogICAgICAgICAo
eXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIHwgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNzoKIAogICAgIHsKICAgICAgICAgKHl5dmFs
KSA9ICh5eXZzcFsoMSkgLSAoMyldKSBeICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAo
eXl2c3BbKDEpIC0gKDMpXSkgJiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSA5OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNw
WygxKSAtICgzKV0pICE9ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDEwOgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygx
KSAtICgzKV0pID09ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDExOgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAt
ICgzKV0pID49ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAogICBjYXNlIDEyOgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgz
KV0pIDw9ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDEzOgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0p
ID4gKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPCAo
eXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
NToKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA+PiAoeXl2
c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA8PCAoeXl2c3Bb
KDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNzoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAtICh5eXZzcFsoMykg
LSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE4OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pICsgKHl5dnNwWygzKSAtICgz
KV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTk6CkBAIC0xNTcxLDcg
KzE1NjcsNyBAQCB5eXJlZHVjZToKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICh5eXZh
bCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgJSAoeXl2c3BbKDMpIC0gKDMpXSk7CiAgICAgICAgIH0K
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIwOgpAQCAtMTU4OCw1MyArMTU4
NCw1MiBAQCB5eXJlZHVjZToKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICh5eXZhbCkg
PSAoeXl2c3BbKDEpIC0gKDMpXSkgLyAoeXl2c3BbKDMpIC0gKDMpXSk7CiAgICAgICAgIH0KLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIxOgogCiAgICAgewogICAgICAgICAo
eXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pICogKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjI6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bCkgPSAhICh5eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDIzOgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gfiAoeXl2c3BbKDIpIC0gKDIp
XSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNDoKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsKSA9IC0gKHl5dnNwWygyKSAtICgyKV0pOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMjU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSArICh5eXZz
cFsoMikgLSAoMildKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDI2Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygyKSAtICgzKV0pOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAKLS8qIExpbmUgMTI2NyBvZiB5YWNjLmMuICAqLwogCiAgICAg
ICBkZWZhdWx0OiBicmVhazsKICAgICB9CkBAIC0xNjQ2LDcgKzE2NDEsNiBAQCB5eXJlZHVjZToK
IAogICAqKyt5eXZzcCA9IHl5dmFsOwogCi0KICAgLyogTm93IGBzaGlmdCcgdGhlIHJlc3VsdCBv
ZiB0aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAgdGhhdCBnb2VzIHRv
LCBiYXNlZCBvbiB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRoZSBydWxlCiAgICAg
IG51bWJlciByZWR1Y2VkIGJ5LiAgKi8KQEAgLTE3MTEsNyArMTcwNSw3IEBAIHl5ZXJybGFiOgog
CiAgIGlmICh5eWVycnN0YXR1cyA9PSAzKQogICAgIHsKLSAgICAgIC8qIElmIGp1c3QgdHJpZWQg
YW5kIGZhaWxlZCB0byByZXVzZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIGFuCisgICAgICAvKiBJ
ZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIGFu
CiAJIGVycm9yLCBkaXNjYXJkIGl0LiAgKi8KIAogICAgICAgaWYgKHl5Y2hhciA8PSBZWUVPRikK
QEAgLTE3MjgsNyArMTcyMiw3IEBAIHl5ZXJybGFiOgogCX0KICAgICB9CiAKLSAgLyogRWxzZSB3
aWxsIHRyeSB0byByZXVzZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJv
cgorICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBzaGlm
dGluZyB0aGUgZXJyb3IKICAgICAgdG9rZW4uICAqLwogICBnb3RvIHl5ZXJybGFiMTsKIApAQCAt
MTc4NSw5ICsxNzc5LDYgQEAgeXllcnJsYWIxOgogICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3Ms
IHl5c3NwKTsKICAgICB9CiAKLSAgaWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwot
CiAgICorK3l5dnNwID0geXlsdmFsOwogCiAKQEAgLTE4MTIsNyArMTgwMyw3IEBAIHl5YWJvcnRs
YWI6CiAgIHl5cmVzdWx0ID0gMTsKICAgZ290byB5eXJldHVybjsKIAotI2lmbmRlZiB5eW92ZXJm
bG93CisjaWYgIWRlZmluZWQoeXlvdmVyZmxvdykgfHwgWVlFUlJPUl9WRVJCT1NFCiAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCiB8IHl5ZXhoYXVz
dGVkbGFiIC0tIG1lbW9yeSBleGhhdXN0aW9uIGNvbWVzIGhlcmUuICB8CiBgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xODIzLDcgKzE4MTQs
NyBAQCB5eWV4aGF1c3RlZGxhYjoKICNlbmRpZgogCiB5eXJldHVybjoKLSAgaWYgKHl5Y2hhciAh
PSBZWUVPRiAmJiB5eWNoYXIgIT0gWVlFTVBUWSkKKyAgaWYgKHl5Y2hhciAhPSBZWUVNUFRZKQog
ICAgICB5eWRlc3RydWN0ICgiQ2xlYW51cDogZGlzY2FyZGluZyBsb29rYWhlYWQiLAogCQkgeXl0
b2tlbiwgJnl5bHZhbCwgY29udGV4dCk7CiAgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xz
IG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwCShyZXZpc2lvbiAxNTIzMjMpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVy
dGV4U2hhZGVyVGltaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQCB2b2lk
IFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nOjp2aXNpdFN5CiB7CiAgICAgaWYgKElzU2FtcGxl
cihub2RlLT5nZXRCYXNpY1R5cGUoKSkpIHsKICAgICAgICAgKyttTnVtRXJyb3JzOwotICAgICAg
ICBtU2luay5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAgICAgICAgbVNpbmsubG9jYXRpb24obm9k
ZS0+Z2V0TGluZSgpKTsKLSAgICAgICAgbVNpbmsgPDwgIlNhbXBsZXJzIGFyZSBub3QgcGVybWl0
dGVkIGluIHZlcnRleCBzaGFkZXJzLlxuIjsKKyAgICAgICAgbVNpbmsubWVzc2FnZShFUHJlZml4
RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0TGluZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICJTYW1wbGVycyBhcmUgbm90IHBlcm1pdHRlZCBpbiB2ZXJ0ZXggc2hhZGVy
cyIpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjU2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEz
LTA3LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFwcGxlLmNvbT4KKworICAg
ICAgICBVcGRhdGUgQU5HTEUgdG8gcjI0MjYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg1NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBSZW5hbWVkIERldGVjdFJlY3Vy
c2lvbiB0byBEZXRlY3RDYWxsRGVwdGggYW5kIGFkZGVkIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLgor
CiAyMDEzLTA3LTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmFu
Z2UuZ2V0Q2xpZW50UmVjdHMoKSBub3Qgd29ya2luZyBjb3JyZWN0bHkgZm9yIHBhcnRpYWxseSBj
b250YWluZWQgdmVydGljYWxseSBzdHlsZWQgdGV4dCBub2RlcwpJbmRleDogU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0yODYzLDYgKzI4NjMsNyBAQCBpZiAoV1RGX1VTRV8zRF9HUkFQ
SElDUykKICAgICBlbmRpZiAoKQogCiAgICAgbGlzdChBUFBFTkQgQU5HTEVTdXBwb3J0X1NPVVJD
RVMKKyAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5f
c3ltYm9sX3RhYmxlLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29t
cGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9E
SVJ9L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuR0xTTC5jcHAKICAgICAgICAgJHtUSElSRFBB
UlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcApAQCAtMjg3Myw4ICsyODc0
LDggQEAgaWYgKFdURl9VU0VfM0RfR1JBUEhJQ1MpCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9
L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcAog
ICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVw
ZW5kZW5jeUdyYXBoT3V0cHV0LmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9z
cmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoVHJhdmVyc2UuY3BwCisgICAgICAg
ICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3Bw
CiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNj
b250aW51aXR5LmNwcAotICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGls
ZXIvRGV0ZWN0UmVjdXJzaW9uLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9z
cmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0v
QU5HTEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElS
fS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206622</attachid>
            <date>2013-07-13 15:44:08 -0700</date>
            <delta_ts>2013-07-15 16:30:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118550-20130713154205.patch</filename>
            <type>text/plain</type>
            <size>754572</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjU2MCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI1NCBAQAorMjAxMy0wNy0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFOR0xFIGZyb20gcjE5ODcgdG8gcjI0MjYgd2hpbGUg
a2VlcGluZyB0aGVzZSB0d28gcHJldmlvdXMgY2hhbmdlczoKKyAgICAgICAgS2VlcGluZyAjaWYg
ZGVmaW5lZChfTVNDX1ZFUikgYXJvdW5kICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzE4KSBp
biBEZXBlbmRlbmN5R3JhcGguY3BwLgorICAgICAgICBLZWVwaW5nIGluY2x1ZGUga2hycGxhdGZv
cm0uaCBpbnN0ZWFkIG9mIEtIUi9raHJwbGF0Zm9ybS5oIGluIFNoYWRlckxhbmcuaC4KKyAgICAg
ICAgQWRkZWQgc3RhdGljX2Nhc3RzIGluIEludGVybWVkaWF0ZS5jcHAgdG8gZml4IGNvbXBpbGlu
ZyBvbiBNYWMuCisgICAgICAgIENoYW5nZWQgZW51bSBiaXQgZmllbGRzIHRvIGp1c3QgZW51bXMg
Zm9yIEdDQyBpbiBUeXBlcy5oIHRvIGZpeCBjb21waWxpbmcgZm9yIEdUSy4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NTUwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBTkdMRS5wbGlzdDogVXBk
YXRlZCByZXZpc2lvbiBvZiBBTkdMRSB0byAyNDI2LgorICAgICAgICAqIEFOR0xFLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICog
VGFyZ2V0LnByaToKKyAgICAgICAgICAgIFJlbmFtZWQgRGV0ZWN0UmVjdXJzaW9uIHRvIERldGVj
dENhbGxEZXB0aCBhbmQgYWRkZWQgYnVpbHRpbl9zeW1ib2xfdGFibGUuCisgICAgICAgICogaW5j
bHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaDoKKyAgICAgICAgKiBzcmMvY29tbW9uL3ZlcnNpb24u
aDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQmFzZVR5cGVzLmg6CisgICAgICAgIChnZXRRdWFs
aWZpZXJTdHJpbmcpOgorICAgICAgICAqIHNyYy9jb21waWxlci9Db21tb24uaDoKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwOgorICAgICAgICAoVENvbXBpbGVyOjpUQ29tcGls
ZXIpOgorICAgICAgICAoVENvbXBpbGVyOjpJbml0KToKKyAgICAgICAgKFRDb21waWxlcjo6Y29t
cGlsZSk6CisgICAgICAgIChUQ29tcGlsZXI6OmRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChU
Q29tcGlsZXI6OmVuZm9yY2VUaW1pbmdSZXN0cmljdGlvbnMpOgorICAgICAgICAoVENvbXBpbGVy
OjpsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29u
c3RhbnRVbmlvbi5oOgorICAgICAgICAoQ29uc3RhbnRVbmlvbjo6Q29uc3RhbnRVbmlvbik6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHA6IEFkZGVkLgorICAgICAg
ICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZSk6CisgICAgICAg
IChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSk6CisgICAgICAgIChEZXRl
Y3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6YWRkQ2FsbGVlKToKKyAgICAgICAgKERldGVjdENh
bGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpkZXRlY3RDYWxsRGVwdGgpOgorICAgICAgICAoRGV0ZWN0
Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OnJlc2V0KToKKyAgICAgICAgKERldGVjdENhbGxEZXB0
aDo6RGV0ZWN0Q2FsbERlcHRoKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6fkRldGVjdENh
bGxEZXB0aCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OnZpc2l0QWdncmVnYXRlKToKKyAg
ICAgICAgKERldGVjdENhbGxEZXB0aDo6Y2hlY2tFeGNlZWRzTWF4RGVwdGgpOgorICAgICAgICAo
RGV0ZWN0Q2FsbERlcHRoOjpyZXNldEZ1bmN0aW9uTm9kZXMpOgorICAgICAgICAoRGV0ZWN0Q2Fs
bERlcHRoOjpkZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbik6CisgICAgICAgIChEZXRlY3RDYWxs
RGVwdGg6OmRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmZpbmRG
dW5jdGlvbkJ5TmFtZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5o
OiBBZGRlZC4KKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6Z2V0SW5mb1NpbmspOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwOgorICAgICAgICAoVERpYWdub3N0aWNzOjp3cml0ZUlu
Zm8pOgorICAgICAgICAqIHNyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcDoKKyAgICAgICAg
KEZvckxvb3BVbnJvbGw6OmV2YWx1YXRlSW50Q29uc3RhbnQpOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9JbmZvU2luay5jcHA6CisgICAgICAgIChUSW5mb1NpbmtCYXNlOjpwcmVmaXgpOgorICAg
ICAgICAoVEluZm9TaW5rQmFzZTo6bG9jYXRpb24pOgorICAgICAgICAoVEluZm9TaW5rQmFzZTo6
bWVzc2FnZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0luZm9TaW5rLmg6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwOgorICAgICAgICAoVEJ1aWx0SW5zOjppbml0aWFs
aXplKToKKyAgICAgICAgKElkZW50aWZ5QnVpbHRJbnMpOgorICAgICAgICAoSW5pdEV4dGVuc2lv
bkJlaGF2aW9yKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcDogVXBk
YXRlZCBhbmQgYWRkZWQgc3RhdGljX2Nhc3RzIHRvIGZpeCBidWlsZCBlcnJvcnMgb24gTWFjLgor
ICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkU3ltYm9sKToKKyAgICAgICAgKFRJbnRlcm1lZGlh
dGU6OmFkZEJpbmFyeU1hdGgpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKToK
KyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KToKKyAgICAgICAgKFRJbnRlcm1lZGlh
dGU6OmFkZFVuYXJ5TWF0aCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVP
cGVyYXRvcik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRDb252ZXJzaW9uKToKKyAgICAg
ICAgKFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2dyZWdhdGUpOgorICAgICAgICAoVEludGVybWVkaWF0
ZTo6bWFrZUFnZ3JlZ2F0ZSk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24p
OgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQ29tbWEpOgorICAgICAgICAoVEludGVybWVk
aWF0ZTo6YWRkQ29uc3RhbnRVbmlvbik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTd2l6
emxlKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZExvb3ApOgorICAgICAgICAoVEludGVy
bWVkaWF0ZTo6YWRkQnJhbmNoKToKKyAgICAgICAgKFRJbnRlcm1VbmFyeTo6cHJvbW90ZSk6Cisg
ICAgICAgIChUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKToKKyAgICAgICAgKENvbXBhcmVTdHJ1Y3Qp
OgorICAgICAgICAoQ29tcGFyZVN0cnVjdHVyZSk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRV
bmlvbjo6Zm9sZCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjpwcm9tb3RlQ29uc3RhbnRVbmlv
bik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwOgorICAgICAgICAoVE91
dHB1dEdMU0w6OnZpc2l0U3ltYm9sKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xT
TC5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHA6CisgICAgICAg
IChUT3V0cHV0R0xTTEJhc2U6OndyaXRlVmFyaWFibGVUeXBlKToKKyAgICAgICAgKFRPdXRwdXRH
TFNMQmFzZTo6d3JpdGVDb25zdGFudFVuaW9uKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6
dmlzaXRCaW5hcnkpOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZSk6
CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OmdldFR5cGVOYW1lKToKKyAgICAgICAgKFRPdXRw
dXRHTFNMQmFzZTo6aGFzaEZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6
OnN0cnVjdERlY2xhcmVkKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6ZGVjbGFyZVN0cnVj
dCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmg6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6Ok91
dHB1dEhMU0wpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmhlYWRlcik6CisgICAgICAgIChz
aDo6T3V0cHV0SExTTDo6dmlzaXRTeW1ib2wpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZp
c2l0QmluYXJ5KToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZSk6Cisg
ICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24pOgorICAgICAgICAoc2g6Ok91
dHB1dEhMU0w6OnZpc2l0TG9vcCk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6aGFuZGxlRXhj
ZXNzaXZlTG9vcCk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dHlwZVN0cmluZyk6CisgICAg
ICAgIChzaDo6T3V0cHV0SExTTDo6aW5pdGlhbGl6ZXIpOgorICAgICAgICAoc2g6Ok91dHB1dEhM
U0w6OmFkZENvbnN0cnVjdG9yKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp3cml0ZUNvbnN0
YW50VW5pb24pOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmRlY29yYXRlRmllbGQpOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNMLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L1BhcnNlSGVscGVyLmNwcDoKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmll
bGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4RmllbGRzKToKKyAgICAg
ICAgKFRQYXJzZUNvbnRleHQ6OmVycm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Ondhcm5p
bmcpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YXNzaWduRXJyb3IpOgorICAgICAgICAoVFBh
cnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmJpbmFy
eU9wRXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVjayk6
CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6
cmVzZXJ2ZWRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9y
RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayk6Cisg
ICAgICAgIChUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VD
b250ZXh0OjpzYW1wbGVyRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRl
clNhbXBsZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2Ft
cGxlcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKToKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmFycmF5RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpub25Jbml0
Q29uc3RFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNo
ZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmZpbmRGdW5jdGlvbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojppc1ZhcmlhYmxl
QnVpbHRJbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIpOgor
ICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IpOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6Y29uc3RydWN0QnVpbHRJbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpjb25z
dHJ1Y3RTdHJ1Y3QpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWN0b3JOb2Rl
KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZSk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjphZGRDb25zdEFycmF5Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250
ZXh0OjphZGRDb25zdFN0cnVjdCk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjplbnRlclN0cnVj
dERlY2xhcmF0aW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJv
ckNoZWNrKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaDoKKyAgICAgICAg
KFRQYXJzZUNvbnRleHQ6OlRQYXJzZUNvbnRleHQpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6
cHJhZ21hKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcDoKKyAgICAgICAg
KFRQb29sQWxsb2NhdG9yOjphbGxvY2F0ZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1NoSGFu
ZGxlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwOgorICAgICAgICAo
U2hJbml0QnVpbHRJblJlc291cmNlcyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1N5bWJvbFRh
YmxlLmNwcDoKKyAgICAgICAgKFRUeXBlOjpUVHlwZSk6CisgICAgICAgIChUVHlwZTo6YnVpbGRN
YW5nbGVkTmFtZSk6CisgICAgICAgIChUVHlwZTo6Z2V0T2JqZWN0U2l6ZSk6CisgICAgICAgIChU
U3RydWN0dXJlOjpjb250YWluc0FycmF5cyk6CisgICAgICAgIChUU3RydWN0dXJlOjpidWlsZE1h
bmdsZWROYW1lKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmNhbGN1bGF0ZU9iamVjdFNpemUpOgor
ICAgICAgICAoVFN0cnVjdHVyZTo6Y2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcpOgorICAgICAgICAo
VFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvRXh0ZW5zaW9uKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKFRTeW1ib2w6OnJlbGF0ZVRvRXh0ZW5zaW9u
KToKKyAgICAgICAgKFRTeW1ib2w6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChUVmFyaWFibGU6
OlRWYXJpYWJsZSk6CisgICAgICAgIChUVmFyaWFibGU6OnNldFF1YWxpZmllcik6CisgICAgICAg
IChUVmFyaWFibGU6OnNoYXJlQ29uc3RQb2ludGVyKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
VHlwZXMuaDogVXBkYXRlZCBhbmQgY2hhbmdlZCBlbnVtIGJpdCBmaWVsZHMgdG8gZW51bXMgdG8g
Zml4IGNvbXBpbGluZyB3aXRoIEdDQy4KKyAgICAgICAgKFRGaWVsZDo6VEZpZWxkKToKKyAgICAg
ICAgKFRGaWVsZDo6dHlwZSk6CisgICAgICAgIChURmllbGQ6Om5hbWUpOgorICAgICAgICAoTmV3
UG9vbFRGaWVsZExpc3QpOgorICAgICAgICAoVFN0cnVjdHVyZTo6VFN0cnVjdHVyZSk6CisgICAg
ICAgIChUU3RydWN0dXJlOjpuYW1lKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmZpZWxkcyk6Cisg
ICAgICAgIChUU3RydWN0dXJlOjptYW5nbGVkTmFtZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpv
YmplY3RTaXplKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmRlZXBlc3ROZXN0aW5nKToKKyAgICAg
ICAgKFRUeXBlOjpUVHlwZSk6CisgICAgICAgIChUVHlwZTo6Y2xlYXJBcnJheW5lc3MpOgorICAg
ICAgICAoVFR5cGU6OmdldFN0cnVjdCk6CisgICAgICAgIChUVHlwZTo6c2V0U3RydWN0KToKKyAg
ICAgICAgKFRUeXBlOjpnZXRNYW5nbGVkTmFtZSk6CisgICAgICAgIChUVHlwZTo6Z2V0RGVlcGVz
dFN0cnVjdE5lc3RpbmcpOgorICAgICAgICAoVFR5cGU6OmlzU3RydWN0dXJlQ29udGFpbmluZ0Fy
cmF5cyk6CisgICAgICAgIChUUHVibGljVHlwZTo6c2V0QmFzaWMpOgorICAgICAgICAqIHNyYy9j
b21waWxlci9WYXJpYWJsZUluZm8uY3BwOgorICAgICAgICAoZ2V0VXNlckRlZmluZWRWYXJpYWJs
ZUluZm8pOgorICAgICAgICAqIHNyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHA6
IEFkZGVkLgorICAgICAgICAoYnVpbHRpbjEpOgorICAgICAgICAoYnVpbHRpbjIpOgorICAgICAg
ICAoYnVpbHRpbjMpOgorICAgICAgICAoSW5zZXJ0QnVpbHRJbkZ1bmN0aW9uc0NvbW1vbik6Cisg
ICAgICAgIChJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBp
bGVyL2dsc2xhbmcubDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy55OgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHA6CisgICAgICAgICh5eV9nZXRfcHJldmlv
dXNfc3RhdGUpOgorICAgICAgICAoeXlfdHJ5X05VTF90cmFucyk6CisgICAgICAgICh5eWdldF9s
bG9jKToKKyAgICAgICAgKHl5c2V0X2xsb2MpOgorICAgICAgICAoc3RyaW5nX2lucHV0KToKKyAg
ICAgICAgKGNoZWNrX3R5cGUpOgorICAgICAgICAocmVzZXJ2ZWRfd29yZCk6CisgICAgICAgIChn
bHNsYW5nX3NjYW4pOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHA6Cisg
ICAgICAgICh5eXN5bnRheF9lcnJvcik6CisgICAgICAgICh5eWVycm9yKToKKyAgICAgICAgKGds
c2xhbmdfcGFyc2UpOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwOgorICAgICAgICAoVE91dHB1dFRyYXZl
cnNlcjo6dmlzaXRVbmFyeSk6CisgICAgICAgIChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3Jl
Z2F0ZSk6CisgICAgICAgIChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24pOgor
ICAgICAgICAqIHNyYy9jb21waWxlci9pbnRlcm1lZGlhdGUuaDoKKyAgICAgICAgKFRJbnRlcm1O
b2RlOjpUSW50ZXJtTm9kZSk6CisgICAgICAgIChUSW50ZXJtTm9kZTo6flRJbnRlcm1Ob2RlKToK
KyAgICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRMaW5lKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpz
ZXRMaW5lKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRBc0xvb3BOb2RlKToKKyAgICAgICAg
KFRJbnRlcm1Db25zdGFudFVuaW9uOjpnZXRJQ29uc3QpOgorICAgICAgICAoVEludGVybUNvbnN0
YW50VW5pb246OmdldEZDb25zdCk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Z2V0
QkNvbnN0KToKKyAgICAgICAgKFRJbnRlcm1BZ2dyZWdhdGU6OlRJbnRlcm1BZ2dyZWdhdGUpOgor
ICAgICAgICAoVEludGVybVRyYXZlcnNlcjo6VEludGVybVRyYXZlcnNlcik6CisgICAgICAgIChU
SW50ZXJtVHJhdmVyc2VyOjpnZXRNYXhEZXB0aCk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2Vy
OjppbmNyZW1lbnREZXB0aCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRp
YXRlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwOgorICAgICAgICAo
VENvbnN0VHJhdmVyc2VyOjp2aXNpdFN5bWJvbCk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6
OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRVbmFyeSk6Cisg
ICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKFRDb25z
dFRyYXZlcnNlcjo6dmlzaXRTZWxlY3Rpb24pOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2
aXNpdENvbnN0YW50VW5pb24pOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdExvb3Ap
OgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdEJyYW5jaCk6CisgICAgICAgIChUSW50
ZXJtZWRpYXRlOjpwYXJzZUNvbnN0VHJlZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdGlt
aW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcDoKKyAgICAgICAgKFJlc3RyaWN0VmVy
dGV4U2hhZGVyVGltaW5nOjp2aXNpdFN5bWJvbCk6CisgICAgICAgICAgICBVcGRhdGVkIEFOR0xF
IHRvIHIyNDI2LgorCiAyMDEzLTA2LTE3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBTb3J0IGFsbCB0aGUgWGNvZGUgcHJvamVjdCBmaWxlcwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvQU5HTEUucGxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvQU5HTEUucGxpc3QJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC02LDEzICs2LDEzIEBA
CiAJCTxrZXk+T3BlblNvdXJjZVByb2plY3Q8L2tleT4KIAkJPHN0cmluZz5BTkdMRTwvc3RyaW5n
PgogCQk8a2V5Pk9wZW5Tb3VyY2VWZXJzaW9uPC9rZXk+Ci0JCTxzdHJpbmc+cjE2NDE8L3N0cmlu
Zz4KKwkJPHN0cmluZz5yMjQyNjwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VXZWJzaXRlVVJM
PC9rZXk+CiAJCTxzdHJpbmc+aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVjdC88
L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlU0NNPC9rZXk+Ci0JCTxzdHJpbmc+c3ZuIGNvIC1y
MTY0MSBodHRwOi8vYW5nbGVwcm9qZWN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay88L3N0cmlu
Zz4KKwkJPHN0cmluZz5zdm4gY28gLXIyNDI2IGh0dHA6Ly9hbmdsZXByb2plY3QuZ29vZ2xlY29k
ZS5jb20vc3ZuL3RydW5rLzwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VJbXBvcnREYXRlPC9r
ZXk+Ci0JCTxzdHJpbmc+MjAxMy0wMS0wNDwvc3RyaW5nPgorCQk8c3RyaW5nPjIwMTMtMDYtMTM8
L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlTGljZW5zZTwva2V5PgogCQk8c3RyaW5nPkJTRDwv
c3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VMaWNlbnNlRmlsZTwva2V5PgpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2
ICsyNCw4IEBAIGxpYkFOR0xFX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvaW5jbHVkZS9LSFIva2hycGxhdGZvcm0uaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbW1vbi9hbmdsZXV0aWxzLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9CYXNlVHlwZXMuaCBcCisJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcCBcCisJU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgXAogCVNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5o
IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wuY3Bw
IFwKQEAgLTM5LDEwICs0MSwxMCBAQCBsaWJBTkdMRV9sYV9TT1VSQ0VTID0gXAogCVNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRw
dXQuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0Rl
cGVuZGVuY3lHcmFwaE91dHB1dC5jcHAgXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgXAorCVNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwIFwKKwlTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmggXAogCVNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNw
cCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRp
bnVpdHkuaCBcCi0JU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJl
Y3Vyc2lvbi5jcHAgXAotCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRl
Y3RSZWN1cnNpb24uaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Rp
YWdub3N0aWNzLmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Rp
YWdub3N0aWNzLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaXJl
Y3RpdmVIYW5kbGVyLmNwcCBcCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1RhcmdldC5wcmkJKHJl
dmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1RhcmdldC5wcmkJKHdv
cmtpbmcgY29weSkKQEAgLTE4LDYgKzE4LDcgQEAgSU5DTFVERVBBVEggKz0gXAogCiBIRUFERVJT
ICs9IFwKICAgICBzcmMvY29tcGlsZXIvQmFzZVR5cGVzLmggXAorICAgIHNyYy9jb21waWxlci9i
dWlsdGluX3N5bWJvbF90YWJsZS5oIFwKICAgICBzcmMvY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3IuaCBcCiAgICAgc3JjL2NvbXBpbGVyL0NvbW1vbi5oIFwKICAgICBzcmMvY29tcGls
ZXIvQ29uc3RhbnRVbmlvbi5oIFwKQEAgLTI1LDggKzI2LDggQEAgSEVBREVSUyArPSBcCiAgICAg
c3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oIFwKICAgICBzcmMvY29tcGls
ZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIFwKICAgICBzcmMvY29tcGlsZXIv
ZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggXAorICAgIHNyYy9jb21waWxlci9EZXRl
Y3RDYWxsRGVwdGguaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuaCBc
Ci0gICAgc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oIFwKICAgICBzcmMvY29tcGlsZXIv
RGlhZ25vc3RpY3MuaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RpcmVjdGl2ZUhhbmRsZXIuaCBcCiAg
ICAgc3JjL2NvbXBpbGVyL0V4dGVuc2lvbkJlaGF2aW9yLmggXApAQCAtODQsNiArODUsNyBAQCBI
RUFERVJTICs9IFwKICAgICBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFt
cGVyLmgKIAogU09VUkNFUyArPSBcCisgICAgc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3Rh
YmxlLmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBc
CiAgICAgc3JjL2NvbXBpbGVyL0NvZGVHZW5HTFNMLmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0Nv
bXBpbGVyLmNwcCBcCkBAIC05Miw4ICs5NCw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHNyYy9jb21w
aWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCBcCiAgICAgc3JjL2NvbXBp
bGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAgXAogICAgIHNyYy9jb21waWxl
ci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgXAorICAgIHNyYy9jb21waWxl
ci9EZXRlY3RDYWxsRGVwdGguY3BwIFwKICAgICBzcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGlu
dWl0eS5jcHAgXAotICAgIHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwIFwKICAgICBz
cmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvRGlyZWN0aXZl
SGFuZGxlci5jcHAgXAogICAgIHNyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcCBcCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEy
LDggKzEyLDkgQEAKIAkJNDk5NTFDMDMxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzAy
MTRCN0FBQjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRzLmggKi87IH07CiAJCTQ5OTUxQzA5MTRC
N0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwNTE0QjdBQUQ3MDA2MEU5
NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovOyB9OwogCQk0OTk1MUMwQTE0QjdB
QUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA2MTRCN0FBRDgwMDYwRTk2RSAv
KiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovOyB9OwotCQk0OTk1MUMwQjE0QjdBQUQ4MDA2
MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1
cnNpb24uY3BwICovOyB9OwotCQk0OTk1MUMwQzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVj
dXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmggKi87IH07CisJCTQ5
OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDcxNEI3QUFEODAwNjBF
OTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAgKi87IH07CisJCTQ5OTUxQzBDMTRCN0FBRDgwMDYw
RTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA4MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVw
dGguaCAqLzsgfTsKKwkJNUNDRUI4QjYxNzkwOEVFQzAwRkQ5NDk2IC8qIGJ1aWx0aW5fc3ltYm9s
X3RhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQ0VCOEI0MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgKi87
IH07CiAJCTkwRDlCMTAyMTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjBGOTEyRTExRENCMDAy
RDQyNTUgLyogQ29tcGlsZXIuY3BwICovOyB9OwogCQk5MEQ5QjEwMzEyRTExRENCMDAyRDQyNTUg
LyogRXh0ZW5zaW9uQmVoYXZpb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkwRDlCMEZBMTJFMTFEQ0IwMDJENDI1NSAvKiBFeHRlbnNpb25CZWhhdmlv
ci5oICovOyB9OwogCQk5MEQ5QjEwNDEyRTExRENCMDAyRDQyNTUgLyogZ2xzbGFuZ19sZXguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBEOUIwRkIx
MkUxMURDQjAwMkQ0MjU1IC8qIGdsc2xhbmdfbGV4LmNwcCAqLzsgfTsKQEAgLTE0MCw4ICsxNDEs
MTAgQEAKIAkJNDk5NTFDMDIxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbGVuZ3RoX2xpbWl0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0OTk1MUMwNTE0QjdBQUQ3MDA2MEU5NkUgLyogQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDk5NTFDMDcxNEI3QUFEODAwNjBFOTZF
IC8qIERldGVjdFJlY3Vyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEZXRlY3RSZWN1cnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERldGVjdFJlY3Vyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRo
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERldGVjdENhbGxEZXB0
aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5OTUxQzA4MTRCN0FBRDgwMDYw
RTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGV0ZWN0Q2FsbERlcHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0VC
OEI0MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBidWlsdGluX3N5bWJvbF90YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDQ0VCOEI1MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJs
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBidWlsdGluX3N5bWJvbF90YWJsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1RDdDNTlDNTEyMDhDNjhCMDAxQzg3M0UgLyogQU5HTEUueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQU5HTEUueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM2MTIwOEM2OEIwMDFDODczRSAvKiBCYXNl
LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM3MTIwOEM2OEIwMDFDODczRSAv
KiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0g
RGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzkw
LDYgKzM5Myw4IEBACiAJCQkJQTI2NTY4MkMxNTlDMjNFMTAwMzk4NTM5IC8qIGRlcGdyYXBoICov
LAogCQkJCUZCMzlEMjQ0MTIwMEYzNUEwMDA4OEU2OSAvKiBwcmVwcm9jZXNzb3IgKi8sCiAJCQkJ
QTI2NTY4MzQxNTlDMjNFMTAwMzk4NTM5IC8qIHRpbWluZyAqLywKKwkJCQk1Q0NFQjhCNDE3OTA4
RTNBMDBGRDk0OTYgLyogYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwICovLAorCQkJCTVDQ0VCOEI1
MTc5MDhFM0EwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5oICovLAogCQkJCUZCMzlE
MjIxMTIwMEYzNUEwMDA4OEU2OSAvKiBCYXNlVHlwZXMuaCAqLywKIAkJCQk0OTk1MUMwNTE0QjdB
QUQ3MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovLAogCQkJCTQ5OTUx
QzA2MTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovLApAQCAt
Mzk5LDggKzQwNCw4IEBACiAJCQkJRkIzOUQyMjUxMjAwRjM1QTAwMDg4RTY5IC8qIENvbnN0YW50
VW5pb24uaCAqLywKIAkJCQlGQjM5RDIyNjEyMDBGMzVBMDAwODhFNjkgLyogZGVidWcuY3BwICov
LAogCQkJCUZCMzlEMjI3MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5oICovLAotCQkJCTQ5OTUx
QzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uY3BwICovLAotCQkJCTQ5OTUx
QzA4MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLywKKwkJCQk0OTk1MUMw
NzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRoLmNwcCAqLywKKwkJCQk0OTk1MUMw
ODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRoLmggKi8sCiAJCQkJQTI2NTY3QjAx
NTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmNwcCAqLywKIAkJCQlBMjY1NjdCMTE1OUMy
MUIxMDAzOTg1MzkgLyogRGlhZ25vc3RpY3MuaCAqLywKIAkJCQlBMjY1NjdCMjE1OUMyMUIxMDAz
OTg1MzkgLyogRGlyZWN0aXZlSGFuZGxlci5jcHAgKi8sCkBAIC01MzAsNyArNTM1LDcgQEAKIAkJ
CQlBMjY1NjgzQTE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMjY1NjgzQzE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoQnVp
bGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY4M0UxNTlDMjNFMTAwMzk4NTM5IC8qIERl
cGVuZGVuY3lHcmFwaE91dHB1dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk5NTFDMEMxNEI3QUFE
ODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDk5NTFD
MEMxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTI2NTY3QkMxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMjY0RjhBRDE2OTc0REVEMDA2RkFBNUEgLyogRGlhZ25vc3RpY3NCYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMjY1NjdCRTE1OUMyMUIxMDAzOTg1MzkgLyogRGlyZWN0aXZlSGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC02MzUsNyArNjQwLDcgQEAKIAkJCQlBMjY1NjgzQjE1
OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMjY1NjgzRDE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoT3V0cHV0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2ODNGMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBl
bmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0OTk1MUMwQjE0QjdB
QUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5
OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTI2NTY3QkIxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUEyNjRGOEFDMTY5NzRERUQwMDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NTY3QkQxNTlDMjFCMTAwMzk4NTM5IC8qIERp
cmVjdGl2ZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC02NzAsNiArNjc1LDcgQEAKIAkJ
CQlBMjY1Njg0MDE1OUMyM0UxMDAzOTg1MzkgLyogUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWlu
Zy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1Njg0MjE1OUMyM0UxMDAzOTg1MzkgLyogUmVz
dHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTBEOUIxMDkx
MkUxMURDQjAwMkQ0MjU1IC8qIFNlYXJjaFN5bWJvbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
Q0NFQjhCNjE3OTA4RUVDMDBGRDk0OTYgLyogYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkIzOUQyQTgxMjAwRjM1QTAwMDg4RTY5IC8qIFNoYWRlckxhbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkIzOUQyQUExMjAwRjM1QTAwMDg4RTY5IC8qIFN5bWJvbFRh
YmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRGOEMxMTY5NzRERUQwMDZGQUE1QSAvKiBU
b2tlbi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2lu
Y2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkocmV2aXNpb24gMTUyMzIzKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSwxMyBAQCB0eXBlZGVmIGVudW0gewogICAvLyB2
ZWMyMzQsIG9yIG1hdDIzNCB0eXBlLiBUaGUgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBl
bnVtLAogICAvLyBzcGVjaWZpZWQgaW4gdGhlIFNoQnVpbHRJblJlc291cmNlcyB3aGVuIGNvbnN0
cnVjdGluZyB0aGUKICAgLy8gY29tcGlsZXIsIHNlbGVjdHMgdGhlIHN0cmF0ZWd5IGZvciB0aGUg
Y2xhbXBpbmcgaW1wbGVtZW50YXRpb24uCi0gIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5E
UyA9IDB4MTAwMAorICBTSF9DTEFNUF9JTkRJUkVDVF9BUlJBWV9CT1VORFMgPSAweDEwMDAsCisK
KyAgLy8gVGhpcyBmbGFnIGxpbWl0cyB0aGUgY29tcGxleGl0eSBvZiBhbiBleHByZXNzaW9uLgor
ICBTSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkgPSAweDIwMDAsCisKKyAgLy8gVGhpcyBm
bGFnIGxpbWl0cyB0aGUgZGVwdGggb2YgdGhlIGNhbGwgc3RhY2suCisgIFNIX0xJTUlUX0NBTExf
U1RBQ0tfREVQVEggPSAweDQwMDAsCiB9IFNoQ29tcGlsZU9wdGlvbnM7CiAKIC8vIERlZmluZXMg
YWx0ZXJuYXRlIHN0cmF0ZWdpZXMgZm9yIGltcGxlbWVudGluZyBhcnJheSBpbmRleCBjbGFtcGlu
Zy4KQEAgLTIwOSw2ICsyMTUsNyBAQCB0eXBlZGVmIHN0cnVjdAogICAgIGludCBPRVNfRUdMX2lt
YWdlX2V4dGVybmFsOwogICAgIGludCBBUkJfdGV4dHVyZV9yZWN0YW5nbGU7CiAgICAgaW50IEVY
VF9kcmF3X2J1ZmZlcnM7CisgICAgaW50IEVYVF9mcmFnX2RlcHRoOwogCiAgICAgLy8gU2V0IHRv
IDEgaWYgaGlnaHAgcHJlY2lzaW9uIGlzIHN1cHBvcnRlZCBpbiB0aGUgZnJhZ21lbnQgbGFuZ3Vh
Z2UuCiAgICAgLy8gRGVmYXVsdCBpcyAwLgpAQCAtMjIyLDYgKzIyOSwxMiBAQCB0eXBlZGVmIHN0
cnVjdAogICAgIC8vIFNlbGVjdHMgYSBzdHJhdGVneSB0byB1c2Ugd2hlbiBpbXBsZW1lbnRpbmcg
YXJyYXkgaW5kZXggY2xhbXBpbmcuCiAgICAgLy8gRGVmYXVsdCBpcyBTSF9DTEFNUF9XSVRIX0NM
QU1QX0lOVFJJTlNJQy4KICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IEFycmF5SW5k
ZXhDbGFtcGluZ1N0cmF0ZWd5OworCisgICAgLy8gVGhlIG1heGltdW0gY29tcGxleGl0eSBhbiBl
eHByZXNzaW9uIGNhbiBiZS4KKyAgICBpbnQgTWF4RXhwcmVzc2lvbkNvbXBsZXhpdHk7CisKKyAg
ICAvLyBUaGUgbWF4aW11bSBkZXB0aCBhIGNhbGwgc3RhY2sgY2FuIGJlLgorICAgIGludCBNYXhD
YWxsU3RhY2tEZXB0aDsKIH0gU2hCdWlsdEluUmVzb3VyY2VzOwogCiAvLwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgJKHJldmlzaW9uIDE1MjMy
MykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdmVyc2lvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogI2RlZmluZSBNQUpPUl9WRVJTSU9OIDEKICNkZWZp
bmUgTUlOT1JfVkVSU0lPTiAwCiAjZGVmaW5lIEJVSUxEX1ZFUlNJT04gMAotI2RlZmluZSBCVUlM
RF9SRVZJU0lPTiAxOTg3CisjZGVmaW5lIEJVSUxEX1JFVklTSU9OIDIyNDkKIAogI2RlZmluZSBT
VFJJTkdJRlkoeCkgI3gKICNkZWZpbmUgTUFDUk9fU1RSSU5HSUZZKHgpIFNUUklOR0lGWSh4KQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CYXNlVHlw
ZXMuaAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0Jhc2VUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCwxMCArOTAsNiBAQCBlbnVt
IFRRdWFsaWZpZXIKICAgICBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAgICAvLyB2ZXJ0ZXggc2hh
ZGVycyBvbmx5ICByZWFkL3dyaXRlCiAgICAgRXZxVW5pZm9ybSwgICAgICAgLy8gUmVhZG9ubHks
IHZlcnRleCBhbmQgZnJhZ21lbnQKIAotICAgIC8vIHBhY2svdW5wYWNrIGlucHV0IGFuZCBvdXRw
dXQKLSAgICBFdnFJbnB1dCwKLSAgICBFdnFPdXRwdXQsCi0KICAgICAvLyBwYXJhbWV0ZXJzCiAg
ICAgRXZxSW4sCiAgICAgRXZxT3V0LApAQCAtMTEyLDYgKzEwOCw3IEBAIGVudW0gVFF1YWxpZmll
cgogICAgIC8vIGJ1aWx0LWlucyB3cml0dGVuIGJ5IGZyYWdtZW50IHNoYWRlcgogICAgIEV2cUZy
YWdDb2xvciwKICAgICBFdnFGcmFnRGF0YSwKKyAgICBFdnFGcmFnRGVwdGgsCiAKICAgICAvLyBl
bmQgb2YgbGlzdAogICAgIEV2cUxhc3QKQEAgLTEzNywxNCArMTM0LDEzIEBAIGlubGluZSBjb25z
dCBjaGFyKiBnZXRRdWFsaWZpZXJTdHJpbmcoVFEKICAgICBjYXNlIEV2cUluOiAgICAgICAgICAg
ICByZXR1cm4gImluIjsgICAgICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFPdXQ6ICAgICAg
ICAgICAgcmV0dXJuICJvdXQiOyAgICAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxSW5PdXQ6
ICAgICAgICAgIHJldHVybiAiaW5vdXQiOyAgICAgICAgICBicmVhazsKLSAgICBjYXNlIEV2cUlu
cHV0OiAgICAgICAgICByZXR1cm4gImlucHV0IjsgICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
dnFPdXRwdXQ6ICAgICAgICAgcmV0dXJuICJvdXRwdXQiOyAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRXZxUG9zaXRpb246ICAgICAgIHJldHVybiAiUG9zaXRpb24iOyAgICAgICBicmVhazsKICAg
ICBjYXNlIEV2cVBvaW50U2l6ZTogICAgICByZXR1cm4gIlBvaW50U2l6ZSI7ICAgICAgYnJlYWs7
CiAgICAgY2FzZSBFdnFGcmFnQ29vcmQ6ICAgICAgcmV0dXJuICJGcmFnQ29vcmQiOyAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6ICAgIHJldHVybiAiRnJvbnRGYWNpbmciOyAg
ICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb2xvcjogICAgICByZXR1cm4gIkZyYWdDb2xvciI7
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcmFnRGF0YTogICAgICAgcmV0dXJuICJGcmFnRGF0
YSI7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdnFGcmFnRGVwdGg6ICAgICAgcmV0dXJuICJGcmFn
RGVwdGgiOyAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgcmV0dXJuICJ1
bmtub3duIHF1YWxpZmllciI7CiAgICAgfQogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9Db21tb24uaAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNCwyNCArMTQsMTIgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL1Bvb2xBbGxvYy5oIgogCi0v
LyBXZSBuZWVkIHR3byBwaWVjZXMgb2YgaW5mb3JtYXRpb24gdG8gcmVwb3J0IGVycm9ycy93YXJu
aW5ncyAtIHN0cmluZyBhbmQKLS8vIGxpbmUgbnVtYmVyLiBXZSBlbmNvZGUgdGhlc2UgaW50byBh
IHNpbmdsZSBpbnQgc28gdGhhdCBpdCBjYW4gYmUgZWFzaWx5Ci0vLyBpbmNyZW1lbnRlZC9kZWNy
ZW1lbnRlZCBieSBsZXhlci4gVGhlIHJpZ2h0IFNPVVJDRV9MT0NfTElORV9TSVpFIGJpdHMgc3Rv
cmUKLS8vIGxpbmUgbnVtYmVyIHdoaWxlIHRoZSByZXN0IHN0b3JlIHRoZSBzdHJpbmcgbnVtYmVy
LiBTaW5jZSB0aGUgc2hhZGVycyBhcmUKLS8vIHVzdWFsbHkgc21hbGwsIHdlIHNob3VsZCBub3Qg
cnVuIG91dCBvZiBtZW1vcnkuIFNPVVJDRV9MT0NfTElORV9TSVpFCi0vLyBjYW4gYmUgaW5jcmVh
c2VkIHRvIGFsbGV2aWF0ZSB0aGlzIGlzc3VlLgotdHlwZWRlZiBpbnQgVFNvdXJjZUxvYzsKLWNv
bnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfU0laRSA9IDE2OyAgLy8gaW4gYml0cy4K
LWNvbnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfTUFTSyA9ICgxIDw8IFNPVVJDRV9M
T0NfTElORV9TSVpFKSAtIDE7Ci0KLWlubGluZSBUU291cmNlTG9jIEVuY29kZVNvdXJjZUxvYyhp
bnQgc3RyaW5nLCBpbnQgbGluZSkgewotICAgIHJldHVybiAoc3RyaW5nIDw8IFNPVVJDRV9MT0Nf
TElORV9TSVpFKSB8IChsaW5lICYgU09VUkNFX0xPQ19MSU5FX01BU0spOwotfQotCi1pbmxpbmUg
dm9pZCBEZWNvZGVTb3VyY2VMb2MoVFNvdXJjZUxvYyBsb2MsIGludCogc3RyaW5nLCBpbnQqIGxp
bmUpIHsKLSAgICBpZiAoc3RyaW5nKSAqc3RyaW5nID0gbG9jID4+IFNPVVJDRV9MT0NfTElORV9T
SVpFOwotICAgIGlmIChsaW5lKSAqbGluZSA9IGxvYyAmIFNPVVJDRV9MT0NfTElORV9NQVNLOwot
fQorc3RydWN0IFRTb3VyY2VMb2MgeworICAgIGludCBmaXJzdF9maWxlOworICAgIGludCBmaXJz
dF9saW5lOworICAgIGludCBsYXN0X2ZpbGU7CisgICAgaW50IGxhc3RfbGluZTsKK307CiAKIC8v
CiAvLyBQdXQgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSBpbiBiYXNlIGNsYXNzZXMgdG8gbWFr
ZSB0aGVtIHVzZSB0aGlzIHNjaGVtZS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Db21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkocmV2aXNpb24gMTUyMzIzKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNCw4ICs0LDkgQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwog
CisjaW5jbHVkZSAiY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaCIKICNpbmNsdWRlICJj
b21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIgotI2luY2x1ZGUgImNvbXBpbGVyL0Rl
dGVjdFJlY3Vyc2lvbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL0Zvckxvb3BVbnJvbGwuaCIKICNpbmNsdWRlICJjb21waWxlci9J
bml0aWFsaXplLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5o
IgpAQCAtNjIsMTEgKzYzLDI2IEBAIGJvb2wgSW5pdGlhbGl6ZVN5bWJvbFRhYmxlKAogCiAgICAg
ICAgIGlmIChQYVBhcnNlU3RyaW5ncygxLCAmYnVpbHRJblNoYWRlcnMsICZidWlsdEluTGVuZ3Ro
cywgJnBhcnNlQ29udGV4dCkgIT0gMCkKICAgICAgICAgewotICAgICAgICAgICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5hYmxlIHRvIHBhcnNlIGJ1aWx0
LWlucyIpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEludGVybmFs
RXJyb3IpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiVW5hYmxlIHRvIHBhcnNlIGJ1
aWx0LWlucyI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAK
KworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgU0hfRlJBR01FTlRfU0hBREVSOgorICAg
ICAgICBJbnNlcnRCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNlcywgJnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNIX1ZFUlRFWF9TSEFERVI6CisgICAgICAg
IEluc2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24ocmVzb3VyY2VzLCAmc3ltYm9sVGFibGUpOwor
ICAgICAgICBJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KHJlc291cmNlcywgJnN5bWJvbFRh
YmxlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UgJiYgIkxh
bmd1YWdlIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICB9CisKICAgICBJZGVudGlmeUJ1aWx0SW5zKHR5
cGUsIHNwZWMsIHJlc291cmNlcywgc3ltYm9sVGFibGUpOwogCiAgICAgcmV0dXJuIHRydWU7CkBA
IC0xMDMsNiArMTE5LDkgQEAgVFNoSGFuZGxlQmFzZTo6flRTaEhhbmRsZUJhc2UoKSB7CiBUQ29t
cGlsZXI6OlRDb21waWxlcihTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMpCiAg
ICAgOiBzaGFkZXJUeXBlKHR5cGUpLAogICAgICAgc2hhZGVyU3BlYyhzcGVjKSwKKyAgICAgIG1h
eFVuaWZvcm1WZWN0b3JzKDApLAorICAgICAgbWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkoMCksCisg
ICAgICBtYXhDYWxsU3RhY2tEZXB0aCgwKSwKICAgICAgIGZyYWdtZW50UHJlY2lzaW9uSGlnaChm
YWxzZSksCiAgICAgICBjbGFtcGluZ1N0cmF0ZWd5KFNIX0NMQU1QX1dJVEhfQ0xBTVBfSU5UUklO
U0lDKSwKICAgICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKHR5cGUpCkBAIC0xMjEsMTEgKzE0
MCwxNCBAQCBib29sIFRDb21waWxlcjo6SW5pdChjb25zdCBTaEJ1aWx0SW5SZXNvCiAgICAgbWF4
VW5pZm9ybVZlY3RvcnMgPSAoc2hhZGVyVHlwZSA9PSBTSF9WRVJURVhfU0hBREVSKSA/CiAgICAg
ICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA6CiAgICAgICAgIHJlc291cmNl
cy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzOworICAgIG1heEV4cHJlc3Npb25Db21wbGV4aXR5
ID0gcmVzb3VyY2VzLk1heEV4cHJlc3Npb25Db21wbGV4aXR5OworICAgIG1heENhbGxTdGFja0Rl
cHRoID0gcmVzb3VyY2VzLk1heENhbGxTdGFja0RlcHRoOwogICAgIFRTY29wZWRQb29sQWxsb2Nh
dG9yIHNjb3BlZEFsbG9jKCZhbGxvY2F0b3IsIGZhbHNlKTsKIAogICAgIC8vIEdlbmVyYXRlIGJ1
aWx0LWluIHN5bWJvbCB0YWJsZS4KICAgICBpZiAoIUluaXRCdWlsdEluU3ltYm9sVGFibGUocmVz
b3VyY2VzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgSW5pdEV4dGVuc2lvbkJlaGF2
aW9yKHJlc291cmNlcywgZXh0ZW5zaW9uQmVoYXZpb3IpOwogICAgIGZyYWdtZW50UHJlY2lzaW9u
SGlnaCA9IHJlc291cmNlcy5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPT0gMTsKIApAQCAtMTcwLDgg
KzE5MiwxMCBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAg
Ly8gV2UgcHJlc2VydmUgc3ltYm9scyBhdCB0aGUgYnVpbHQtaW4gbGV2ZWwgZnJvbSBjb21waWxl
LXRvLWNvbXBpbGUuCiAgICAgLy8gU3RhcnQgcHVzaGluZyB0aGUgdXNlci1kZWZpbmVkIHN5bWJv
bHMgYXQgZ2xvYmFsIGxldmVsLgogICAgIHN5bWJvbFRhYmxlLnB1c2goKTsKLSAgICBpZiAoIXN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSkKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiV3Jvbmcgc3ltYm9sIHRhYmxlIGxldmVsIik7CisgICAg
aWYgKCFzeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkpIHsKKyAgICAgICAgaW5mb1NpbmsuaW5m
by5wcmVmaXgoRVByZWZpeEludGVybmFsRXJyb3IpOworICAgICAgICBpbmZvU2luay5pbmZvIDw8
ICJXcm9uZyBzeW1ib2wgdGFibGUgbGV2ZWwiOworICAgIH0KIAogICAgIC8vIFBhcnNlIHNoYWRl
ci4KICAgICBib29sIHN1Y2Nlc3MgPQpAQCAtMTgyLDcgKzIwNiw3IEBAIGJvb2wgVENvbXBpbGVy
Ojpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAgICAgc3VjY2VzcyA9IGludGVybWVkaWF0
ZS5wb3N0UHJvY2Vzcyhyb290KTsKIAogICAgICAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgICAg
IHN1Y2Nlc3MgPSBkZXRlY3RSZWN1cnNpb24ocm9vdCk7CisgICAgICAgICAgICBzdWNjZXNzID0g
ZGV0ZWN0Q2FsbERlcHRoKHJvb3QsIGluZm9TaW5rLCAoY29tcGlsZU9wdGlvbnMgJiBTSF9MSU1J
VF9DQUxMX1NUQUNLX0RFUFRIKSAhPSAwKTsKIAogICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29t
cGlsZU9wdGlvbnMgJiBTSF9WQUxJREFURV9MT09QX0lOREVYSU5HKSkKICAgICAgICAgICAgIHN1
Y2Nlc3MgPSB2YWxpZGF0ZUxpbWl0YXRpb25zKHJvb3QpOwpAQCAtMjA1LDYgKzIyOSwxMCBAQCBi
b29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgIGlmIChzdWNj
ZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUykp
CiAgICAgICAgICAgICBhcnJheUJvdW5kc0NsYW1wZXIuTWFya0luZGlyZWN0QXJyYXlCb3VuZHNG
b3JDbGFtcGluZyhyb290KTsKIAorICAgICAgICAvLyBEaXNhbGxvdyBleHByZXNzaW9ucyBkZWVt
ZWQgdG9vIGNvbXBsZXguCisgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAm
IFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSkpCisgICAgICAgICAgICBzdWNjZXNzID0g
bGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShyb290KTsKKwogICAgICAgICAvLyBDYWxsIG1hcExv
bmdWYXJpYWJsZU5hbWVzKCkgYmVmb3JlIGNvbGxlY3RBdHRyaWJzVW5pZm9ybXMoKSBzbyBpbgog
ICAgICAgICAvLyBjb2xsZWN0QXR0cmlic1VuaWZvcm1zKCkgd2UgYWxyZWFkeSBoYXZlIHRoZSBt
YXBwZWQgc3ltYm9sIG5hbWVzIGFuZAogICAgICAgICAvLyB3ZSBjb3VsZCBjb21wb3NpdGUgbWFw
cGVkIGFuZCBvcmlnaW5hbCB2YXJpYWJsZSBuYW1lcy4KQEAgLTIxNyw3ICsyNDUsOCBAQCBib29s
IFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgICAgICBpZiAoY29t
cGlsZU9wdGlvbnMgJiBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05TKSB7CiAgICAgICAg
ICAgICAgICAgc3VjY2VzcyA9IGVuZm9yY2VQYWNraW5nUmVzdHJpY3Rpb25zKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4RXJyb3IsICJ0b28gbWFueSB1bmlmb3JtcyIpOworICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJ0b28gbWFueSB1bmlmb3JtcyI7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNjMsMTggKzI5MiwyNCBA
QCB2b2lkIFRDb21waWxlcjo6Y2xlYXJSZXN1bHRzKCkKICAgICBuYW1lTWFwLmNsZWFyKCk7CiB9
CiAKLWJvb2wgVENvbXBpbGVyOjpkZXRlY3RSZWN1cnNpb24oVEludGVybU5vZGUqIHJvb3QpCiti
b29sIFRDb21waWxlcjo6ZGV0ZWN0Q2FsbERlcHRoKFRJbnRlcm1Ob2RlKiByb290LCBUSW5mb1Np
bmsmIGluZm9TaW5rLCBib29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgpCiB7Ci0gICAgRGV0ZWN0UmVj
dXJzaW9uIGRldGVjdDsKKyAgICBEZXRlY3RDYWxsRGVwdGggZGV0ZWN0KGluZm9TaW5rLCBsaW1p
dENhbGxTdGFja0RlcHRoLCBtYXhDYWxsU3RhY2tEZXB0aCk7CiAgICAgcm9vdC0+dHJhdmVyc2Uo
JmRldGVjdCk7Ci0gICAgc3dpdGNoIChkZXRlY3QuZGV0ZWN0UmVjdXJzaW9uKCkpIHsKLSAgICAg
ICAgY2FzZSBEZXRlY3RSZWN1cnNpb246OmtFcnJvck5vbmU6CisgICAgc3dpdGNoIChkZXRlY3Qu
ZGV0ZWN0Q2FsbERlcHRoKCkpIHsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJv
ck5vbmU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBEZXRlY3RSZWN1
cnNpb246OmtFcnJvck1pc3NpbmdNYWluOgotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhFcnJvciwgIk1pc3NpbmcgbWFpbigpIik7CisgICAgICAgIGNhc2UgRGV0ZWN0
Q2FsbERlcHRoOjprRXJyb3JNaXNzaW5nTWFpbjoKKyAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
cHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJNaXNz
aW5nIG1haW4oKSI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgRGV0
ZWN0UmVjdXJzaW9uOjprRXJyb3JSZWN1cnNpb246Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVkIik7Cisg
ICAgICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JSZWN1cnNpb246CisgICAgICAgICAg
ICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAgaW5mb1Np
bmsuaW5mbyA8PCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVkIjsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvck1heERlcHRo
RXhjZWVkZWQ6CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3Ip
OworICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24gY2FsbCBzdGFjayB0b28g
ZGVlcCI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOwpAQCAtMzIwLDYgKzM1NSwyOCBAQCBib29sIFRDb21waWxl
cjo6ZW5mb3JjZVRpbWluZ1Jlc3RyaWN0aW9uCiAgICAgfQogfQogCitib29sIFRDb21waWxlcjo6
bGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCkKK3sKKyAgICBUSW50
ZXJtVHJhdmVyc2VyIHRyYXZlcnNlcjsKKyAgICByb290LT50cmF2ZXJzZSgmdHJhdmVyc2VyKTsK
KyAgICBURGVwZW5kZW5jeUdyYXBoIGdyYXBoKHJvb3QpOworCisgICAgZm9yIChURnVuY3Rpb25D
YWxsVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZ3JhcGguYmVnaW5Vc2VyRGVmaW5lZEZ1
bmN0aW9uQ2FsbHMoKTsKKyAgICAgICAgIGl0ZXIgIT0gZ3JhcGguZW5kVXNlckRlZmluZWRGdW5j
dGlvbkNhbGxzKCk7CisgICAgICAgICArK2l0ZXIpCisgICAgeworICAgICAgICBUR3JhcGhGdW5j
dGlvbkNhbGwqIHNhbXBsZXJTeW1ib2wgPSAqaXRlcjsKKyAgICAgICAgVERlcGVuZGVuY3lHcmFw
aFRyYXZlcnNlciBncmFwaFRyYXZlcnNlcjsKKyAgICAgICAgc2FtcGxlclN5bWJvbC0+dHJhdmVy
c2UoJmdyYXBoVHJhdmVyc2VyKTsKKyAgICB9CisKKyAgICBpZiAodHJhdmVyc2VyLmdldE1heERl
cHRoKCkgPiBtYXhFeHByZXNzaW9uQ29tcGxleGl0eSkgeworICAgICAgICBpbmZvU2luay5pbmZv
IDw8ICJFeHByZXNzaW9uIHRvbyBjb21wbGV4LiI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgVENvbXBpbGVyOjplbmZvcmNlRnJhZ21l
bnRTaGFkZXJUaW1pbmdSZXN0cmljdGlvbnMoY29uc3QgVERlcGVuZGVuY3lHcmFwaCYgZ3JhcGgp
CiB7CiAgICAgUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZyByZXN0cmljdG9yKGluZm9TaW5r
LmluZm8pOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbnN0
YW50VW5pb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvQ29uc3RhbnRVbmlvbi5oCShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIw
MDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0x
NCw2ICsxNCw3IEBAIHB1YmxpYzoKICAgICBDb25zdGFudFVuaW9uKCkKICAgICB7CiAgICAgICAg
IGlDb25zdCA9IDA7CisgICAgICAgIHR5cGUgPSBFYnRWb2lkOwogICAgIH0KIAogICAgIFBPT0xf
QUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikgICAgICAgIApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVj
dENhbGxEZXB0aC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE4NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL0RldGVjdENh
bGxEZXB0aC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCisKK0RldGVjdENhbGxE
ZXB0aDo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5hbWUpCisg
ICAgOiBuYW1lKGZuYW1lKSwKKyAgICAgIHZpc2l0KFByZVZpc2l0KQoreworfQorCitjb25zdCBU
U3RyaW5nJiBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK3ZvaWQgRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5v
ZGU6OmFkZENhbGxlZSgKKyAgICBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZSogY2FsbGVl
KQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsraSkgewor
ICAgICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Cit9CisKK2ludCBEZXRlY3RDYWxs
RGVwdGg6OkZ1bmN0aW9uTm9kZTo6ZGV0ZWN0Q2FsbERlcHRoKERldGVjdENhbGxEZXB0aCogZGV0
ZWN0Q2FsbERlcHRoLCBpbnQgZGVwdGgpCit7CisgICAgQVNTRVJUKHZpc2l0ID09IFByZVZpc2l0
KTsKKyAgICBBU1NFUlQoZGV0ZWN0Q2FsbERlcHRoKTsKKworICAgIGludCBtYXhEZXB0aCA9IGRl
cHRoOworICAgIHZpc2l0ID0gSW5WaXNpdDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNh
bGxlZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgc3dpdGNoIChjYWxsZWVzW2ldLT52aXNpdCkg
eworICAgICAgICAgICAgY2FzZSBJblZpc2l0OgorICAgICAgICAgICAgICAgIC8vIGN5Y2xlIGRl
dGVjdGVkLCBpLmUuLCByZWN1cnNpb24gZGV0ZWN0ZWQuCisgICAgICAgICAgICAgICAgcmV0dXJu
IGtJbmZpbml0ZUNhbGxEZXB0aDsKKyAgICAgICAgICAgIGNhc2UgUG9zdFZpc2l0OgorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQcmVWaXNpdDogeworICAgICAgICAg
ICAgICAgIC8vIENoZWNrIGJlZm9yZSB3ZSByZWN1cnNlIHNvIHdlIGRvbid0IGdvIHRvbyBkZXB0
aAorICAgICAgICAgICAgICAgIGlmIChkZXRlY3RDYWxsRGVwdGgtPmNoZWNrRXhjZWVkc01heERl
cHRoKGRlcHRoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlcHRoOworICAgICAgICAg
ICAgICAgIGludCBjYWxsRGVwdGggPSBjYWxsZWVzW2ldLT5kZXRlY3RDYWxsRGVwdGgoZGV0ZWN0
Q2FsbERlcHRoLCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIGFmdGVyIHdl
IHJlY3Vyc2Ugc28gd2UgY2FuIGV4aXQgaW1tZWRpYXRlbHkgYW5kIHByb3ZpZGUgaW5mby4KKyAg
ICAgICAgICAgICAgICBpZiAoZGV0ZWN0Q2FsbERlcHRoLT5jaGVja0V4Y2VlZHNNYXhEZXB0aChj
YWxsRGVwdGgpKSB7CisgICAgICAgICAgICAgICAgICAgIGRldGVjdENhbGxEZXB0aC0+Z2V0SW5m
b1NpbmsoKS5pbmZvIDw8ICI8LSIgPDwgY2FsbGVlc1tpXS0+Z2V0TmFtZSgpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gY2FsbERlcHRoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBtYXhEZXB0aCA9IHN0ZDo6bWF4KGNhbGxEZXB0aCwgbWF4RGVwdGgpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorICAgIHZpc2l0ID0gUG9zdFZpc2l0OworICAgIHJldHVybiBtYXhEZXB0
aDsKK30KKwordm9pZCBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6cmVzZXQoKQorewor
ICAgIHZpc2l0ID0gUHJlVmlzaXQ7Cit9CisKK0RldGVjdENhbGxEZXB0aDo6RGV0ZWN0Q2FsbERl
cHRoKFRJbmZvU2luayYgaW5mb1NpbmssIGJvb2wgbGltaXRDYWxsU3RhY2tEZXB0aCwgaW50IG1h
eENhbGxTdGFja0RlcHRoKQorICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgdHJ1
ZSwgZmFsc2UpLAorICAgICAgY3VycmVudEZ1bmN0aW9uKE5VTEwpLAorICAgICAgaW5mb1Npbmso
aW5mb1NpbmspLAorICAgICAgbWF4RGVwdGgobGltaXRDYWxsU3RhY2tEZXB0aCA/IG1heENhbGxT
dGFja0RlcHRoIDogRnVuY3Rpb25Ob2RlOjprSW5maW5pdGVDYWxsRGVwdGgpCit7Cit9CisKK0Rl
dGVjdENhbGxEZXB0aDo6fkRldGVjdENhbGxEZXB0aCgpCit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRlbGV0ZSBmdW5jdGlvbnNb
aV07Cit9CisKK2Jvb2wgRGV0ZWN0Q2FsbERlcHRoOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNp
dCwgVEludGVybUFnZ3JlZ2F0ZSogbm9kZSkKK3sKKyAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkp
CisgICAgeworICAgICAgICBjYXNlIEVPcFByb3RvdHlwZToKKyAgICAgICAgICAgIC8vIEZ1bmN0
aW9uIGRlY2xhcmF0aW9uLgorICAgICAgICAgICAgLy8gRG9uJ3QgYWRkIEZ1bmN0aW9uTm9kZSBo
ZXJlIGJlY2F1c2Ugbm9kZS0+Z2V0TmFtZSgpIGlzIHRoZQorICAgICAgICAgICAgLy8gdW5tYW5n
bGVkIGZ1bmN0aW9uIG5hbWUuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BG
dW5jdGlvbjogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KKyAgICAgICAg
ICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5j
dGlvbiA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAg
ICAgIGlmIChjdXJyZW50RnVuY3Rpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBj
dXJyZW50RnVuY3Rpb24gPSBuZXcgRnVuY3Rpb25Ob2RlKG5vZGUtPmdldE5hbWUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoX2JhY2soY3VycmVudEZ1bmN0aW9uKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKHZpc2l0ID09IFBvc3RWaXNp
dCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9IE5VTEw7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEVPcEZ1bmN0
aW9uQ2FsbDogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gY2FsbC4KKyAgICAgICAgICAgIGlm
ICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIEZ1bmN0aW9uTm9kZSogZnVu
YyA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAgICAg
IGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG5ldyBGdW5j
dGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25z
LnB1c2hfYmFjayhmdW5jKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg
KGN1cnJlbnRGdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uLT5h
ZGRDYWxsZWUoZnVuYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIERldGVjdENhbGxEZXB0aDo6Y2hlY2tFeGNlZWRzTWF4RGVw
dGgoaW50IGRlcHRoKQoreworICAgIHJldHVybiBkZXB0aCA+PSBtYXhEZXB0aDsKK30KKwordm9p
ZCBEZXRlY3RDYWxsRGVwdGg6OnJlc2V0RnVuY3Rpb25Ob2RlcygpCit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZnVuY3Rpb25z
W2ldLT5yZXNldCgpOworICAgIH0KK30KKworRGV0ZWN0Q2FsbERlcHRoOjpFcnJvckNvZGUgRGV0
ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbihGdW5jdGlvbk5vZGUqIGZ1
bmMpCit7CisgICAgY3VycmVudEZ1bmN0aW9uID0gTlVMTDsKKyAgICByZXNldEZ1bmN0aW9uTm9k
ZXMoKTsKKworICAgIGludCBtYXhDYWxsRGVwdGggPSBmdW5jLT5kZXRlY3RDYWxsRGVwdGgodGhp
cywgMSk7CisKKyAgICBpZiAobWF4Q2FsbERlcHRoID09IEZ1bmN0aW9uTm9kZTo6a0luZmluaXRl
Q2FsbERlcHRoKQorICAgICAgICByZXR1cm4ga0Vycm9yUmVjdXJzaW9uOworCisgICAgaWYgKG1h
eENhbGxEZXB0aCA+PSBtYXhEZXB0aCkKKyAgICAgICAgcmV0dXJuIGtFcnJvck1heERlcHRoRXhj
ZWVkZWQ7CisKKyAgICByZXR1cm4ga0Vycm9yTm9uZTsKK30KKworRGV0ZWN0Q2FsbERlcHRoOjpF
cnJvckNvZGUgRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGgoKQoreworICAgIGlmICht
YXhEZXB0aCAhPSBGdW5jdGlvbk5vZGU6OmtJbmZpbml0ZUNhbGxEZXB0aCkgeworICAgICAgICAv
LyBDaGVjayBhbGwgZnVuY3Rpb25zIGJlY2F1c2UgdGhlIGRyaXZlciBtYXkgZmFpbCBvbiB0aGVt
CisgICAgICAgIC8vIFRPRE86IEJlZm9yZSBkZXRlY3RpbmdSZWN1cnNpb24sIHN0cmlwIHVudXNl
ZCBmdW5jdGlvbnMuCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBFcnJvckNvZGUgZXJyb3IgPSBkZXRlY3RDYWxsRGVw
dGhGb3JGdW5jdGlvbihmdW5jdGlvbnNbaV0pOworICAgICAgICAgICAgaWYgKGVycm9yICE9IGtF
cnJvck5vbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICB9CisgICAg
fSBlbHNlIHsKKyAgICAgICAgRnVuY3Rpb25Ob2RlKiBtYWluID0gZmluZEZ1bmN0aW9uQnlOYW1l
KCJtYWluKCIpOworICAgICAgICBpZiAobWFpbiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJu
IGtFcnJvck1pc3NpbmdNYWluOworCisgICAgICAgIHJldHVybiBkZXRlY3RDYWxsRGVwdGhGb3JG
dW5jdGlvbihtYWluKTsKKyAgICB9CisKKyAgICByZXR1cm4ga0Vycm9yTm9uZTsKK30KKworRGV0
ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGUqIERldGVjdENhbGxEZXB0aDo6ZmluZEZ1bmN0aW9u
QnlOYW1lKAorICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUpCit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uc1tp
XS0+Z2V0TmFtZSgpID09IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25zW2ldOwor
ICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIworKgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5kZWYg
Q09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXworI2RlZmluZSBDT01QSUxFUl9ERVRFQ1RfUkVD
VVJTSU9OX0hfCisKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKworI2luY2x1ZGUg
PGxpbWl0cy5oPgorI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5oIgorI2luY2x1ZGUg
ImNvbXBpbGVyL1ZhcmlhYmxlSW5mby5oIgorCitjbGFzcyBUSW5mb1Npbms7CisKKy8vIFRyYXZl
cnNlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBkZXRlY3QgZnVuY3Rpb24gcmVjdXJzaW9uLgorY2xh
c3MgRGV0ZWN0Q2FsbERlcHRoIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIgeworcHVibGljOgor
ICAgIGVudW0gRXJyb3JDb2RlIHsKKyAgICAgICAga0Vycm9yTWlzc2luZ01haW4sCisgICAgICAg
IGtFcnJvclJlY3Vyc2lvbiwKKyAgICAgICAga0Vycm9yTWF4RGVwdGhFeGNlZWRlZCwKKyAgICAg
ICAga0Vycm9yTm9uZQorICAgIH07CisKKyAgICBEZXRlY3RDYWxsRGVwdGgoVEluZm9TaW5rJiBp
bmZvU3luYywgYm9vbCBsaW1pdENhbGxTdGFja0RlcHRoLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgp
OworICAgIH5EZXRlY3RDYWxsRGVwdGgoKTsKKworICAgIHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3Jl
Z2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopOworCisgICAgYm9vbCBjaGVja0V4Y2VlZHNN
YXhEZXB0aChpbnQgZGVwdGgpOworCisgICAgRXJyb3JDb2RlIGRldGVjdENhbGxEZXB0aCgpOwor
Citwcml2YXRlOgorICAgIGNsYXNzIEZ1bmN0aW9uTm9kZSB7CisgICAgcHVibGljOgorICAgICAg
ICBzdGF0aWMgY29uc3QgaW50IGtJbmZpbml0ZUNhbGxEZXB0aCA9IElOVF9NQVg7CisKKyAgICAg
ICAgRnVuY3Rpb25Ob2RlKGNvbnN0IFRTdHJpbmcmIGZuYW1lKTsKKworICAgICAgICBjb25zdCBU
U3RyaW5nJiBnZXROYW1lKCkgY29uc3Q7CisKKyAgICAgICAgLy8gSWYgYSBmdW5jdGlvbiBpcyBh
bHJlYWR5IGluIHRoZSBjYWxsZWUgbGlzdCwgdGhpcyBiZWNvbWVzIGEgbm8tb3AuCisgICAgICAg
IHZvaWQgYWRkQ2FsbGVlKEZ1bmN0aW9uTm9kZSogY2FsbGVlKTsKKworICAgICAgICAvLyBSZXR1
cm5zIGtJbmlmaW5pdHlDYWxsRGVwdGggaWYgcmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGxzIGFyZSBk
ZXRlY3RlZC4KKyAgICAgICAgaW50IGRldGVjdENhbGxEZXB0aChEZXRlY3RDYWxsRGVwdGgqIGRl
dGVjdENhbGxEZXB0aCwgaW50IGRlcHRoKTsKKworICAgICAgICAvLyBSZXNldCBzdGF0ZS4KKyAg
ICAgICAgdm9pZCByZXNldCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgLy8gbWFuZ2xlZCBm
dW5jdGlvbiBuYW1lIGlzIHVuaXF1ZS4KKyAgICAgICAgVFN0cmluZyBuYW1lOworCisgICAgICAg
IC8vIGZ1bmN0aW9ucyB0aGF0IGFyZSBkaXJlY3RseSBjYWxsZWQgYnkgdGhpcyBmdW5jdGlvbi4K
KyAgICAgICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBjYWxsZWVzOworCisgICAgICAgIFZpc2l0
IHZpc2l0OworICAgIH07CisKKyAgICBFcnJvckNvZGUgZGV0ZWN0Q2FsbERlcHRoRm9yRnVuY3Rp
b24oRnVuY3Rpb25Ob2RlKiBmdW5jKTsKKyAgICBGdW5jdGlvbk5vZGUqIGZpbmRGdW5jdGlvbkJ5
TmFtZShjb25zdCBUU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIHJlc2V0RnVuY3Rpb25Ob2Rlcygp
OworCisgICAgVEluZm9TaW5rJiBnZXRJbmZvU2luaygpIHsgcmV0dXJuIGluZm9TaW5rOyB9CisK
KyAgICBUVmVjdG9yPEZ1bmN0aW9uTm9kZSo+IGZ1bmN0aW9uczsKKyAgICBGdW5jdGlvbk5vZGUq
IGN1cnJlbnRGdW5jdGlvbjsKKyAgICBUSW5mb1NpbmsmIGluZm9TaW5rOworICAgIGludCBtYXhE
ZXB0aDsKKworICAgIERldGVjdENhbGxEZXB0aChjb25zdCBEZXRlY3RDYWxsRGVwdGgmKTsKKyAg
ICB2b2lkIG9wZXJhdG9yPShjb25zdCBEZXRlY3RDYWxsRGVwdGgmKTsKK307CisKKyNlbmRpZiAg
Ly8gQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAJKHJldmlzaW9uIDE1MjMy
MykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyNSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotCi0jaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgiCi0KLURldGVjdFJlY3Vy
c2lvbjo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5hbWUpCi0g
ICAgOiBuYW1lKGZuYW1lKSwKLSAgICAgIHZpc2l0KFByZVZpc2l0KQotewotfQotCi1jb25zdCBU
U3RyaW5nJiBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KLXZvaWQgRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5v
ZGU6OmFkZENhbGxlZSgKLSAgICBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZSogY2FsbGVl
KQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsraSkgewot
ICAgICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Ci19Ci0KLWJvb2wgRGV0ZWN0UmVj
dXJzaW9uOjpGdW5jdGlvbk5vZGU6OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgQVNTRVJUKHZp
c2l0ID09IFByZVZpc2l0KTsKLSAgICB2aXNpdCA9IEluVmlzaXQ7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN3aXRjaCAoY2FsbGVl
c1tpXS0+dmlzaXQpIHsKLSAgICAgICAgICAgIGNhc2UgSW5WaXNpdDoKLSAgICAgICAgICAgICAg
ICAvLyBjeWNsZSBkZXRlY3RlZCwgaS5lLiwgcmVjdXJzaW9uIGRldGVjdGVkLgotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgY2FzZSBQb3N0VmlzaXQ6Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFByZVZpc2l0OiB7Ci0gICAgICAgICAg
ICAgICAgYm9vbCByZWN1cnNpb24gPSBjYWxsZWVzW2ldLT5kZXRlY3RSZWN1cnNpb24oKTsKLSAg
ICAgICAgICAgICAgICBpZiAocmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICB2aXNpdCA9IFBvc3RWaXNpdDsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RGV0ZWN0UmVjdXJzaW9uKCkKLSAg
ICA6IGN1cnJlbnRGdW5jdGlvbihOVUxMKQotewotfQotCi1EZXRlY3RSZWN1cnNpb246On5EZXRl
Y3RSZWN1cnNpb24oKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNp
emUoKTsgKytpKQotICAgICAgICBkZWxldGUgZnVuY3Rpb25zW2ldOwotfQotCi1ib29sIERldGVj
dFJlY3Vyc2lvbjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUq
IG5vZGUpCi17Ci0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQotICAgIHsKLSAgICAgICAgY2Fz
ZSBFT3BQcm90b3R5cGU6Ci0gICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KLSAg
ICAgICAgICAgIC8vIERvbid0IGFkZCBGdW5jdGlvbk5vZGUgaGVyZSBiZWNhdXNlIG5vZGUtPmdl
dE5hbWUoKSBpcyB0aGUKLSAgICAgICAgICAgIC8vIHVubWFuZ2xlZCBmdW5jdGlvbiBuYW1lLgot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wRnVuY3Rpb246IHsKLSAgICAgICAg
ICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCi0gICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJl
VmlzaXQpIHsKLSAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24gPSBmaW5kRnVuY3Rpb25C
eU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZ1bmN0
aW9uID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uID0gbmV3
IEZ1bmN0aW9uTm9kZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbnMucHVzaF9iYWNrKGN1cnJlbnRGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBF
T3BGdW5jdGlvbkNhbGw6IHsKLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGNhbGwuCi0gICAgICAg
ICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoY3Vy
cmVudEZ1bmN0aW9uICE9IE5VTEwpOwotICAgICAgICAgICAgICAgIEZ1bmN0aW9uTm9kZSogZnVu
YyA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAg
IGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG5ldyBGdW5j
dGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25z
LnB1c2hfYmFjayhmdW5jKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY3Vy
cmVudEZ1bmN0aW9uLT5hZGRDYWxsZWUoZnVuYyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1EZXRlY3RSZWN1cnNpb246OkVycm9yQ29k
ZSBEZXRlY3RSZWN1cnNpb246OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgRnVuY3Rpb25Ob2Rl
KiBtYWluID0gZmluZEZ1bmN0aW9uQnlOYW1lKCJtYWluKCIpOwotICAgIGlmIChtYWluID09IE5V
TEwpCi0gICAgICAgIHJldHVybiBrRXJyb3JNaXNzaW5nTWFpbjsKLSAgICBpZiAobWFpbi0+ZGV0
ZWN0UmVjdXJzaW9uKCkpCi0gICAgICAgIHJldHVybiBrRXJyb3JSZWN1cnNpb247Ci0gICAgcmV0
dXJuIGtFcnJvck5vbmU7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlKiBEZXRl
Y3RSZWN1cnNpb246OmZpbmRGdW5jdGlvbkJ5TmFtZSgKLSAgICBjb25zdCBUU3RyaW5nJiBuYW1l
KQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIGlmIChmdW5jdGlvbnNbaV0tPmdldE5hbWUoKSA9PSBuYW1lKQotICAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uc1tpXTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0
ZWN0UmVjdXJzaW9uLmgJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw2
MCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIENPTVBJTEVSX0RFVEVDVF9S
RUNVUlNJT05fSF8KLSNkZWZpbmUgQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwotCi0jaW5j
bHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLSNpbmNsdWRlICJjb21waWxlci9pbnRlcm1l
ZGlhdGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9WYXJpYWJsZUluZm8uaCIKLQotLy8gVHJhdmVy
c2VzIGludGVybWVkaWF0ZSB0cmVlIHRvIGRldGVjdCBmdW5jdGlvbiByZWN1cnNpb24uCi1jbGFz
cyBEZXRlY3RSZWN1cnNpb24gOiBwdWJsaWMgVEludGVybVRyYXZlcnNlciB7Ci1wdWJsaWM6Ci0g
ICAgZW51bSBFcnJvckNvZGUgewotICAgICAgICBrRXJyb3JNaXNzaW5nTWFpbiwKLSAgICAgICAg
a0Vycm9yUmVjdXJzaW9uLAotICAgICAgICBrRXJyb3JOb25lCi0gICAgfTsKLQotICAgIERldGVj
dFJlY3Vyc2lvbigpOwotICAgIH5EZXRlY3RSZWN1cnNpb24oKTsKLQotICAgIHZpcnR1YWwgYm9v
bCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopOwotCi0gICAgRXJyb3JD
b2RlIGRldGVjdFJlY3Vyc2lvbigpOwotCi1wcml2YXRlOgotICAgIGNsYXNzIEZ1bmN0aW9uTm9k
ZSB7Ci0gICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5h
bWUpOwotCi0gICAgICAgIGNvbnN0IFRTdHJpbmcmIGdldE5hbWUoKSBjb25zdDsKLQotICAgICAg
ICAvLyBJZiBhIGZ1bmN0aW9uIGlzIGFscmVhZHkgaW4gdGhlIGNhbGxlZSBsaXN0LCB0aGlzIGJl
Y29tZXMgYSBuby1vcC4KLSAgICAgICAgdm9pZCBhZGRDYWxsZWUoRnVuY3Rpb25Ob2RlKiBjYWxs
ZWUpOwotCi0gICAgICAgIC8vIFJldHVybiB0cnVlIGlmIHJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxs
cyBhcmUgZGV0ZWN0ZWQuCi0gICAgICAgIGJvb2wgZGV0ZWN0UmVjdXJzaW9uKCk7Ci0KLSAgICBw
cml2YXRlOgotICAgICAgICAvLyBtYW5nbGVkIGZ1bmN0aW9uIG5hbWUgaXMgdW5pcXVlLgotICAg
ICAgICBUU3RyaW5nIG5hbWU7Ci0KLSAgICAgICAgLy8gZnVuY3Rpb25zIHRoYXQgYXJlIGRpcmVj
dGx5IGNhbGxlZCBieSB0aGlzIGZ1bmN0aW9uLgotICAgICAgICBUVmVjdG9yPEZ1bmN0aW9uTm9k
ZSo+IGNhbGxlZXM7Ci0KLSAgICAgICAgVmlzaXQgdmlzaXQ7Ci0gICAgfTsKLQotICAgIEZ1bmN0
aW9uTm9kZSogZmluZEZ1bmN0aW9uQnlOYW1lKGNvbnN0IFRTdHJpbmcmIG5hbWUpOwotCi0gICAg
VFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBmdW5jdGlvbnM7Ci0gICAgRnVuY3Rpb25Ob2RlKiBjdXJy
ZW50RnVuY3Rpb247Ci19OwotCi0jZW5kaWYgIC8vIENPTVBJTEVSX0RFVEVDVF9SRUNVUlNJT05f
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGlj
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0RpYWdub3N0aWNzLmNwcAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NyArNDYsNyBAQCB2b2lkIFREaWFnbm9zdGljczo6d3JpdGVJbmZvKFNldmVyaXR5IHNlCiAgICAg
VEluZm9TaW5rQmFzZSYgc2luayA9IG1JbmZvU2luay5pbmZvOwogICAgIC8qIFZDKysgZm9ybWF0
OiBmaWxlKGxpbmVudW0pIDogZXJyb3IgIzogJ3Rva2VuJyA6IGV4dHJhaW5mbyAqLwogICAgIHNp
bmsucHJlZml4KHByZWZpeCk7Ci0gICAgc2luay5sb2NhdGlvbihFbmNvZGVTb3VyY2VMb2MobG9j
LmZpbGUsIGxvYy5saW5lKSk7CisgICAgc2luay5sb2NhdGlvbihsb2MuZmlsZSwgbG9jLmxpbmUp
OwogICAgIHNpbmsgPDwgIiciIDw8IHRva2VuIDw8ICAiJyA6ICIgPDwgcmVhc29uIDw8ICIgIiA8
PCBleHRyYSA8PCAiXG4iOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCShyZXZpc2lvbiAxNTIzMjMp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAy
MDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgogLy8KQEAgLTIxMCw2ICsyMTAsNiBAQCBpbnQgRm9yTG9vcFVucm9sbDo6Z2V0
TG9vcEluY3JlbWVudChUSW50CiBpbnQgRm9yTG9vcFVucm9sbDo6ZXZhbHVhdGVJbnRDb25zdGFu
dChUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsKICAgICBBU1NFUlQoKG5vZGUgIT0gTlVM
TCkgJiYgKG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCkgIT0gTlVMTCkpOwotICAgIHJldHVy
biBub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAgICByZXR1cm4g
bm9kZS0+Z2V0SUNvbnN0KDApOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHJldmlzaW9uIDE1MjMyMykKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYsOCArNiw4IEBACiAKICNpbmNsdWRlICJjb21waWxlci9JbmZvU2luay5oIgog
Ci12b2lkIFRJbmZvU2lua0Jhc2U6OnByZWZpeChUUHJlZml4VHlwZSBtZXNzYWdlKSB7Ci0gICAg
c3dpdGNoKG1lc3NhZ2UpIHsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6cHJlZml4KFRQcmVmaXhUeXBl
IHApIHsKKyAgICBzd2l0Y2gocCkgewogICAgICAgICBjYXNlIEVQcmVmaXhOb25lOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRVByZWZpeFdhcm5pbmc6CkBAIC0zMSwyOSArMzEs
MjQgQEAgdm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoVFByZWZpeFR5cGUgbQogICAgIH0KIH0K
IAotdm9pZCBUSW5mb1NpbmtCYXNlOjpsb2NhdGlvbihUU291cmNlTG9jIGxvYykgewotICAgIGlu
dCBzdHJpbmcgPSAwLCBsaW5lID0gMDsKLSAgICBEZWNvZGVTb3VyY2VMb2MobG9jLCAmc3RyaW5n
LCAmbGluZSk7Ci0KK3ZvaWQgVEluZm9TaW5rQmFzZTo6bG9jYXRpb24oaW50IGZpbGUsIGludCBs
aW5lKSB7CiAgICAgVFBlcnNpc3RTdHJpbmdTdHJlYW0gc3RyZWFtOwogICAgIGlmIChsaW5lKQot
ICAgICAgICBzdHJlYW0gPDwgc3RyaW5nIDw8ICI6IiA8PCBsaW5lOworICAgICAgICBzdHJlYW0g
PDwgZmlsZSA8PCAiOiIgPDwgbGluZTsKICAgICBlbHNlCi0gICAgICAgIHN0cmVhbSA8PCBzdHJp
bmcgPDwgIjo/ICI7CisgICAgICAgIHN0cmVhbSA8PCBmaWxlIDw8ICI6PyAiOwogICAgIHN0cmVh
bSA8PCAiOiAiOwogCiAgICAgc2luay5hcHBlbmQoc3RyZWFtLnN0cigpKTsKIH0KIAotdm9pZCBU
SW5mb1NpbmtCYXNlOjptZXNzYWdlKFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMp
IHsKLSAgICBwcmVmaXgobWVzc2FnZSk7Ci0gICAgc2luay5hcHBlbmQocyk7Ci0gICAgc2luay5h
cHBlbmQoIlxuIik7Cit2b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9uKGNvbnN0IFRTb3VyY2VM
b2MmIGxvYykgeworICAgIGxvY2F0aW9uKGxvYy5maXJzdF9maWxlLCBsb2MuZmlyc3RfbGluZSk7
CiB9CiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBtZXNzYWdlLCBj
b25zdCBjaGFyKiBzLCBUU291cmNlTG9jIGxvYykgewotICAgIHByZWZpeChtZXNzYWdlKTsKK3Zv
aWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291cmNlTG9j
JiBsb2MsIGNvbnN0IGNoYXIqIG0pIHsKKyAgICBwcmVmaXgocCk7CiAgICAgbG9jYXRpb24obG9j
KTsKLSAgICBzaW5rLmFwcGVuZChzKTsKKyAgICBzaW5rLmFwcGVuZChtKTsKICAgICBzaW5rLmFw
cGVuZCgiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9JbmZvU2luay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9JbmZvU2luay5oCShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTAg
Kzk2LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBUUGVyc2lzdFN0cmluZyYgc3RyKCkgY29uc3Qg
eyByZXR1cm4gc2luazsgfQogICAgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29uc3QgeyByZXR1cm4g
c2luay5jX3N0cigpOyB9CiAKLSAgICB2b2lkIHByZWZpeChUUHJlZml4VHlwZSBtZXNzYWdlKTsK
LSAgICB2b2lkIGxvY2F0aW9uKFRTb3VyY2VMb2MgbG9jKTsKLSAgICB2b2lkIG1lc3NhZ2UoVFBy
ZWZpeFR5cGUgbWVzc2FnZSwgY29uc3QgY2hhciogcyk7Ci0gICAgdm9pZCBtZXNzYWdlKFRQcmVm
aXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMsIFRTb3VyY2VMb2MgbG9jKTsKKyAgICB2b2lk
IHByZWZpeChUUHJlZml4VHlwZSBwKTsKKyAgICB2b2lkIGxvY2F0aW9uKGludCBmaWxlLCBpbnQg
bGluZSk7CisgICAgdm9pZCBsb2NhdGlvbihjb25zdCBUU291cmNlTG9jJiBsb2MpOworICAgIHZv
aWQgbWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0IGNo
YXIqIG0pOwogCiBwcml2YXRlOgogICAgIFRQZXJzaXN0U3RyaW5nIHNpbms7CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3Bw
CShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvSW5pdGlhbGl6ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2LDM3MyArMTYsNiBAQAogCiAv
Lz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KIC8vCi0vLyBQcm90b3R5cGVzIGZvciBidWlsdC1pbiBmdW5j
dGlvbnMgc2VlbiBieSBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycy4KLS8vCi0vLz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLXN0YXRpYyBUU3RyaW5nIEJ1aWx0SW5GdW5jdGlvbnNDb21tb24o
Y29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCi17Ci0gICAgVFN0cmluZyBzOwot
Ci0gICAgLy8KLSAgICAvLyBBbmdsZSBhbmQgVHJpZ29ub21ldHJpYyBGdW5jdGlvbnMuCi0gICAg
Ly8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCByYWRpYW5zKGZsb2F0IGRlZ3JlZXMpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICByYWRpYW5zKHZlYzIgIGRlZ3JlZXMpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICByYWRpYW5zKHZlYzMgIGRlZ3JlZXMpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByYWRpYW5zKHZlYzQgIGRlZ3JlZXMpOyIp
KTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRlZ3JlZXMoZmxvYXQgcmFkaWFucyk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGRlZ3JlZXModmVjMiAgcmFkaWFucyk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGRlZ3JlZXModmVjMyAgcmFkaWFucyk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGRlZ3JlZXModmVjNCAgcmFkaWFucyk7
IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc2luKGZsb2F0IGFuZ2xlKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2luKHZlYzIgIGFuZ2xlKTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgc2luKHZlYzMgIGFuZ2xlKTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgc2luKHZlYzQgIGFuZ2xlKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJmbG9hdCBjb3MoZmxvYXQgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMyICBjb3ModmVjMiAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
ICBjb3ModmVjMyAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBjb3Mo
dmVjNCAgYW5nbGUpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHRhbihmbG9h
dCBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHRhbih2ZWMyICBhbmds
ZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHRhbih2ZWMzICBhbmdsZSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHRhbih2ZWM0ICBhbmdsZSk7IikpOwotCi0g
ICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYXNpbihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMiAgYXNpbih2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgYXNpbih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAg
YXNpbih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhY29zKGZs
b2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhY29zKHZlYzIgIHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhY29zKHZlYzMgIHgpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhY29zKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IGF0YW4oZmxvYXQgeSwgZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeSwgdmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzMgIGF0YW4odmVjMyAgeSwgdmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzQgIGF0YW4odmVjNCAgeSwgdmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBl
bmQoVFN0cmluZygiZmxvYXQgYXRhbihmbG9hdCB5X292ZXJfeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeV9vdmVyX3gpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMzICBhdGFuKHZlYzMgIHlfb3Zlcl94KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjNCAgYXRhbih2ZWM0ICB5X292ZXJfeCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBF
eHBvbmVudGlhbCBGdW5jdGlvbnMuCi0gICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCBwb3coZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IHBvdyh2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAg
cG93KHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBw
b3codmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQg
ZXhwKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAodmVjMiAg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGV4cCh2ZWMzICB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZXhwKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IGxvZyhmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiAgbG9nKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBs
b2codmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZyh2ZWM0ICB4
KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBleHAyKGZsb2F0IHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAyKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMzICBleHAyKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICBleHAyKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZs
b2F0IGxvZzIoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGxvZzIo
dmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGxvZzIodmVjMyAgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZzIodmVjNCAgeCk7IikpOwotCi0g
ICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc3FydChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMiAgc3FydCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgc3FydCh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAg
c3FydCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBpbnZlcnNl
c3FydChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgaW52ZXJzZXNx
cnQodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGludmVyc2VzcXJ0
KHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBpbnZlcnNlc3FydCh2
ZWM0ICB4KTsiKSk7Ci0KLSAgICAvLwotICAgIC8vIENvbW1vbiBGdW5jdGlvbnMuCi0gICAgLy8K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhYnMoZmxvYXQgeCk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzIgIGFicyh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgYWJzKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBh
YnModmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc2lnbihmbG9h
dCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2lnbih2ZWMyICB4KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc2lnbih2ZWMzICB4KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjNCAgc2lnbih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJmbG9hdCBmbG9vcihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMiAgZmxvb3IodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGZs
b29yKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBmbG9vcih2ZWM0
ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBjZWlsKGZsb2F0IHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBjZWlsKHZlYzIgIHgpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBjZWlsKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0ICBjZWlsKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImZsb2F0IGZyYWN0KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBm
cmFjdCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZnJhY3QodmVj
MyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGZyYWN0KHZlYzQgIHgpOyIp
KTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG1vZChmbG9hdCB4LCBmbG9hdCB5KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbW9kKHZlYzIgIHgsIGZsb2F0IHkpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtb2QodmVjMyAgeCwgZmxvYXQgeSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2ZWM0ICB4LCBmbG9hdCB5KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbW9kKHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtb2QodmVjMyAgeCwgdmVjMyAgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2ZWM0ICB4LCB2ZWM0ICB5KTsiKSk7Ci0K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtaW4oZmxvYXQgeCwgZmxvYXQgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1pbih2ZWMyICB4LCBmbG9hdCB5KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIGZsb2F0IHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4odmVjNCAgeCwgZmxvYXQgeSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1pbih2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4odmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbWF4KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzMgIG1heCh2ZWMzICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjNCAgbWF4KHZlYzQgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzMgIG1heCh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgbWF4KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IGNsYW1wKGZsb2F0IHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4
VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2xhbXAodmVjMiAgeCwgZmxv
YXQgbWluVmFsLCBmbG9hdCBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
ICBjbGFtcCh2ZWMzICB4LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIGZsb2F0IG1pblZhbCwgZmxvYXQg
bWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2xhbXAodmVjMiAgeCwg
dmVjMiAgbWluVmFsLCB2ZWMyICBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMzICBjbGFtcCh2ZWMzICB4LCB2ZWMzICBtaW5WYWwsIHZlYzMgIG1heFZhbCk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIHZlYzQgIG1pblZhbCwgdmVj
NCAgbWF4VmFsKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtaXgoZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgYSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1p
eCh2ZWMyICB4LCB2ZWMyICB5LCBmbG9hdCBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgbWl4KHZlYzMgIHgsIHZlYzMgIHksIGZsb2F0IGEpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwgdmVjNCAgeSwgZmxvYXQgYSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIG1peCh2ZWMyICB4LCB2ZWMyICB5LCB2ZWMyICBhKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWl4KHZlYzMgIHgsIHZlYzMgIHksIHZlYzMg
IGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwgdmVjNCAg
eSwgdmVjNCAgYSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc3RlcChmbG9h
dCBlZGdlLCBmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc3RlcCh2
ZWMyICBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc3Rl
cCh2ZWMzICBlZGdlLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAg
c3RlcCh2ZWM0ICBlZGdlLCB2ZWM0ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MiAgc3RlcChmbG9hdCBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgc3RlcChmbG9hdCBlZGdlLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCAgc3RlcChmbG9hdCBlZGdlLCB2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJmbG9hdCBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgZmxvYXQg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNtb290aHN0ZXAodmVjMiAgZWRn
ZTAsIHZlYzIgIGVkZ2UxLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgc21vb3Roc3RlcCh2ZWMzICBlZGdlMCwgdmVjMyAgZWRnZTEsIHZlYzMgIHgpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKHZlYzQgIGVkZ2UwLCB2ZWM0ICBl
ZGdlMSwgdmVjNCAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNtb290aHN0
ZXAoZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMyAgc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIHZlYzMg
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKGZsb2F0IGVk
Z2UwLCBmbG9hdCBlZGdlMSwgdmVjNCAgeCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBHZW9tZXRy
aWMgRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3Ro
KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsZW5ndGgodmVjMiAg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2ZWMzICB4KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKHZlYzQgIHgpOyIpKTsKLQotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKGZsb2F0IHAwLCBmbG9hdCBwMSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzIgIHAwLCB2ZWMyICBw
MSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzMgIHAwLCB2
ZWMzICBwMSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzQg
IHAwLCB2ZWM0ICBwMSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KGZs
b2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkb3QodmVj
MiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRvdCh2ZWMz
ICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KHZlYzQg
IHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgY3Jvc3ModmVj
MyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub3JtYWxpemUo
ZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG5vcm1hbGl6ZSh2ZWMy
ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbm9ybWFsaXplKHZlYzMgIHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBub3JtYWxpemUodmVjNCAgeCk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZmFjZWZvcndhcmQoZmxvYXQgTiwgZmxv
YXQgSSwgZmxvYXQgTnJlZik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGZhY2Vm
b3J3YXJkKHZlYzIgIE4sIHZlYzIgIEksIHZlYzIgIE5yZWYpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMzICBmYWNlZm9yd2FyZCh2ZWMzICBOLCB2ZWMzICBJLCB2ZWMzICBOcmVmKTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZmFjZWZvcndhcmQodmVjNCAgTiwgdmVj
NCAgSSwgdmVjNCAgTnJlZik7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgcmVm
bGVjdChmbG9hdCBJLCBmbG9hdCBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAg
cmVmbGVjdCh2ZWMyICBJLCB2ZWMyICBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgcmVmbGVjdCh2ZWMzICBJLCB2ZWMzICBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgcmVmbGVjdCh2ZWM0ICBJLCB2ZWM0ICBOKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCByZWZyYWN0KGZsb2F0IEksIGZsb2F0IE4sIGZsb2F0IGV0YSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHJlZnJhY3QodmVjMiAgSSwgdmVjMiAgTiwgZmxvYXQg
ZXRhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcmVmcmFjdCh2ZWMzICBJLCB2
ZWMzICBOLCBmbG9hdCBldGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByZWZy
YWN0KHZlYzQgIEksIHZlYzQgIE4sIGZsb2F0IGV0YSk7IikpOwotCi0gICAgLy8KLSAgICAvLyBN
YXRyaXggRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygibWF0MiBtYXRy
aXhDb21wTXVsdChtYXQyIHgsIG1hdDIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoIm1h
dDMgbWF0cml4Q29tcE11bHQobWF0MyB4LCBtYXQzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJtYXQ0IG1hdHJpeENvbXBNdWx0KG1hdDQgeCwgbWF0NCB5KTsiKSk7Ci0KLSAgICAvLwot
ICAgIC8vIFZlY3RvciByZWxhdGlvbmFsIGZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWMyIGxlc3NUaGFuKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygiYnZlYzMgbGVzc1RoYW4odmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbih2ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0gICAg
cy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbGVzc1RoYW4oaXZlYzIgeCwgaXZlYzIgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuKGl2ZWMzIHgsIGl2ZWMzIHkpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbihpdmVjNCB4LCBpdmVjNCB5
KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbkVxdWFsKHZlYzIg
eCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbGVzc1RoYW5FcXVh
bCh2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NU
aGFuRXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWMyIGxlc3NUaGFuRXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImJ2ZWMzIGxlc3NUaGFuRXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NUaGFuRXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW4odmVjMiB4LCB2ZWMy
IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbih2ZWMzIHgs
IHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFuKHZl
YzQgeCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBncmVhdGVy
VGhhbihpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMg
Z3JlYXRlclRoYW4oaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImJ2ZWM0IGdyZWF0ZXJUaGFuKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWMyIGdyZWF0ZXJUaGFuRXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbkVxdWFsKHZlYzMgeCwgdmVjMyB5
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVhbCh2ZWM0
IHgsIHZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRo
YW5FcXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZl
YzMgZ3JlYXRlclRoYW5FcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVhbChpdmVjNCB4LCBpdmVjNCB5KTsiKSk7Ci0K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBlcXVhbCh2ZWMyIHgsIHZlYzIgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGVxdWFsKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBlcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKGJ2ZWMzIHgsIGJ2ZWMzIHkp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBlcXVhbChidmVjNCB4LCBidmVjNCB5
KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBub3RFcXVhbCh2ZWMyIHgsIHZl
YzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5vdEVxdWFsKHZlYzMgeCwg
dmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1YWwodmVjNCB4
LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdEVxdWFsKGl2
ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBub3RFcXVh
bChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90
RXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZl
YzIgbm90RXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImJ2ZWMzIG5vdEVxdWFsKGJ2ZWMzIHgsIGJ2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJidmVjNCBub3RFcXVhbChidmVjNCB4LCBidmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJib29sIGFueShidmVjMiB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
Ym9vbCBhbnkoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYW55KGJ2
ZWM0IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYWxsKGJ2ZWMyIHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFsbChidmVjMyB4KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygiYm9vbCBhbGwoYnZlYzQgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzIgbm90KGJ2ZWMyIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVj
MyBub3QoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IG5vdChidmVj
NCB4KTsiKSk7Ci0KLSAgICAvLwotICAgIC8vIFRleHR1cmUgRnVuY3Rpb25zLgotICAgIC8vCi0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkQoc2FtcGxlcjJEIHNhbXBsZXIsIHZl
YzIgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2oo
c2FtcGxlcjJEIHNhbXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzQgY29vcmQpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmVDdWJlKHNhbXBsZXJDdWJlIHNhbXBs
ZXIsIHZlYzMgY29vcmQpOyIpKTsKLQotICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9l
eHRlcm5hbCkgewotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRChzYW1w
bGVyRXh0ZXJuYWxPRVMgc2FtcGxlciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlckV4dGVybmFsT0VTIHNhbXBsZXIs
IHZlYzMgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJl
MkRQcm9qKHNhbXBsZXJFeHRlcm5hbE9FUyBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7Ci0gICAg
fQotCi0gICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKLSAgICAgICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRSZWN0KHNhbXBsZXIyRFJlY3Qgc2FtcGxl
ciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1
cmUyRFJlY3RQcm9qKHNhbXBsZXIyRFJlY3Qgc2FtcGxlciwgdmVjMyBjb29yZCk7IikpOwotICAg
ICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFJlY3RQcm9qKHNhbXBsZXIyRFJl
Y3Qgc2FtcGxlciwgdmVjNCBjb29yZCk7IikpOwotICAgIH0KLQotICAgIC8vCi0gICAgLy8gTm9p
c2UgZnVuY3Rpb25zLgotICAgIC8vCi0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lz
ZTEoZmxvYXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbm9pc2UxKHZl
YzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG5vaXNlMSh2ZWMzICB4
KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lzZTEodmVjNCAgeCk7Iikp
OwotCi0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMihmbG9hdCB4KTsiKSk7Ci0g
ICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWMyICB4KTsiKSk7Ci0gICAgLy9z
LmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWM0ICB4KTsiKSk7Ci0KLSAgICAvL3MuYXBwZW5kKFRT
dHJpbmcoInZlYzMgbm9pc2UzKGZsb2F0IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmco
InZlYzMgbm9pc2UzKHZlYzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMg
bm9pc2UzKHZlYzMgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2Uz
KHZlYzQgIHgpOyIpKTsKLQotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQoZmxv
YXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjMiAgeCk7
IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjMyAgeCk7IikpOwot
ICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjNCAgeCk7IikpOwotCi0gICAg
cmV0dXJuIHM7Ci19Ci0KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFByb3RvdHlwZXMg
Zm9yIGJ1aWx0LWluIGZ1bmN0aW9ucyBzZWVuIGJ5IHZlcnRleCBzaGFkZXJzIG9ubHkuCi0vLwot
Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBCdWlsdEluRnVuY3Rpb25zVmVy
dGV4KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQotewotICAgIFRTdHJpbmcg
czsKLQotICAgIC8vCi0gICAgLy8gR2VvbWV0cmljIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIC8v
cy5hcHBlbmQoVFN0cmluZygidmVjNCBmdHJhbnNmb3JtKCk7IikpOwotCi0gICAgLy8KLSAgICAv
LyBUZXh0dXJlIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
dGV4dHVyZTJETG9kKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMyIGNvb3JkLCBmbG9hdCBsb2QpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJE
IHNhbXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0IGxvZCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzQgdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVjNCBjb29yZCwg
ZmxvYXQgbG9kKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlQ3ViZUxv
ZChzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBsb2QpOyIpKTsKLQotICAg
IHJldHVybiBzOwotfQotCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCiAvLyBQcm90b3R5cGVz
IGZvciBidWlsdC1pbiBmdW5jdGlvbnMgc2VlbiBieSBmcmFnbWVudCBzaGFkZXJzIG9ubHkuCiAv
LwogLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC01MDAsMTUgKzEzMywxMiBAQCB2b2lkIFRCdWls
dEluczo6aW5pdGlhbGl6ZShTaFNoYWRlclR5cGUKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBj
YXNlIFNIX0ZSQUdNRU5UX1NIQURFUjoKICAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNr
KERlZmF1bHRQcmVjaXNpb25GcmFnbWVudCgpKTsKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVz
aF9iYWNrKEJ1aWx0SW5GdW5jdGlvbnNDb21tb24ocmVzb3VyY2VzKSk7CiAgICAgICAgIGJ1aWx0
SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zRnJhZ21lbnQocmVzb3VyY2VzKSk7
CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhTdGFuZGFyZFVuaWZvcm1zKCkpOwog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU0hfVkVSVEVYX1NIQURFUjoKICAgICAgICAgYnVp
bHRJblN0cmluZ3MucHVzaF9iYWNrKERlZmF1bHRQcmVjaXNpb25WZXJ0ZXgoKSk7Ci0gICAgICAg
IGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNl
cykpOwotICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc1Zl
cnRleChyZXNvdXJjZXMpKTsKICAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKFN0YW5k
YXJkVW5pZm9ybXMoKSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC01MzksNiArMTY5LDEwIEBAIHZv
aWQgSWRlbnRpZnlCdWlsdElucyhTaFNoYWRlclR5cGUgdHlwZSwKICAgICAgICAgaWYgKHNwZWMg
IT0gU0hfQ1NTX1NIQURFUlNfU1BFQykgewogICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnQ29sb3IiKSwgICAgICAgICAg
ICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0NvbG9yLCAgIDQpKSk7
CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRT
dHJpbmcoImdsX0ZyYWdEYXRhW2dsX01heERyYXdCdWZmZXJzXSIpLCBUVHlwZShFYnRGbG9hdCwg
RWJwTWVkaXVtLCBFdnFGcmFnRGF0YSwgICAgNCkpKTsKKyAgICAgICAgICAgIGlmIChyZXNvdXJj
ZXMuRVhUX2ZyYWdfZGVwdGgpIHsKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQo
Km5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdEZXB0aEVYVCIpLCAgICAgICAg
ICAgIFRUeXBlKEVidEZsb2F0LCByZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID8gRWJw
SGlnaCA6IEVicE1lZGl1bSwgRXZxRnJhZ0RlcHRoLCAxKSkpOworICAgICAgICAgICAgICAgIHN5
bWJvbFRhYmxlLnJlbGF0ZVRvRXh0ZW5zaW9uKCJnbF9GcmFnRGVwdGhFWFQiLCAiR0xfRVhUX2Zy
YWdfZGVwdGgiKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiY3NzX01p
eENvbG9yIiksICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2
cUdsb2JhbCwgICAgICA0KSkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcg
VFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJjc3NfQ29sb3JNYXRyaXgiKSwgICAgICAgICAgICAg
ICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxR2xvYmFsLCAgICAgIDQsIHRydWUpKSk7
CkBAIC02NTYsNCArMjkwLDYgQEAgdm9pZCBJbml0RXh0ZW5zaW9uQmVoYXZpb3IoY29uc3QgU2hC
dWlsdAogICAgICAgICBleHRCZWhhdmlvclsiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIl0gPSBF
QmhVbmRlZmluZWQ7CiAgICAgaWYgKHJlc291cmNlcy5FWFRfZHJhd19idWZmZXJzKQogICAgICAg
ICBleHRCZWhhdmlvclsiR0xfRVhUX2RyYXdfYnVmZmVycyJdID0gRUJoVW5kZWZpbmVkOworICAg
IGlmIChyZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGgpCisgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9F
WFRfZnJhZ19kZXB0aCJdID0gRUJoVW5kZWZpbmVkOwogfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHAJKHJldmlz
aW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRl
cm1lZGlhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHly
aWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xMzEsNyArMTMxLDcgQEAgY29uc3QgY2hhciog
Z2V0T3BlcmF0b3JTdHJpbmcoVE9wZXJhdG9yCiAvLwogLy8gUmV0dXJucyB0aGUgYWRkZWQgbm9k
ZS4KIC8vCi1USW50ZXJtU3ltYm9sKiBUSW50ZXJtZWRpYXRlOjphZGRTeW1ib2woaW50IGlkLCBj
b25zdCBUU3RyaW5nJiBuYW1lLCBjb25zdCBUVHlwZSYgdHlwZSwgVFNvdXJjZUxvYyBsaW5lKQor
VEludGVybVN5bWJvbCogVEludGVybWVkaWF0ZTo6YWRkU3ltYm9sKGludCBpZCwgY29uc3QgVFN0
cmluZyYgbmFtZSwgY29uc3QgVFR5cGUmIHR5cGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7
CiAgICAgVEludGVybVN5bWJvbCogbm9kZSA9IG5ldyBUSW50ZXJtU3ltYm9sKGlkLCBuYW1lLCB0
eXBlKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFRJbnRl
cm1TeW1ib2wqIFRJbnRlcm1lZGlhdGU6OmFkZFN5bWJvbCgKIC8vCiAvLyBSZXR1cm5zIHRoZSBh
ZGRlZCBub2RlLgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQmluYXJ5TWF0
aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwg
VFNvdXJjZUxvYyBsaW5lLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQorVEludGVybVR5cGVk
KiBUSW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVk
KiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3lt
Ym9sVGFibGUmIHN5bWJvbFRhYmxlKQogewogICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2Fz
ZSBFT3BFcXVhbDoKQEAgLTIwMCw4ICsyMDAsNiBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlh
dGU6OmFkZEJpbmFyeU1hCiAgICAgLy8gb25lIGFuZCBwcm9tb3RlIGl0IHRvIHRoZSByaWdodCB0
eXBlLgogICAgIC8vCiAgICAgVEludGVybUJpbmFyeSogbm9kZSA9IG5ldyBUSW50ZXJtQmluYXJ5
KG9wKTsKLSAgICBpZiAobGluZSA9PSAwKQotICAgICAgICBsaW5lID0gcmlnaHQtPmdldExpbmUo
KTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAgbm9kZS0+c2V0TGVmdChsZWZ0KTsK
QEAgLTIzMCwxNSArMjI4LDEzIEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQmlu
YXJ5TWEKIC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8KLVRJbnRlcm1UeXBlZCog
VEludGVybWVkaWF0ZTo6YWRkQXNzaWduKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0
LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRJ
bnRlcm1lZGlhdGU6OmFkZEFzc2lnbihUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwg
VEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICAvLwog
ICAgIC8vIExpa2UgYWRkaW5nIGJpbmFyeSBtYXRoLCBleGNlcHQgdGhlIGNvbnZlcnNpb24gY2Fu
IG9ubHkgZ28KICAgICAvLyBmcm9tIHJpZ2h0IHRvIGxlZnQuCiAgICAgLy8KICAgICBUSW50ZXJt
QmluYXJ5KiBub2RlID0gbmV3IFRJbnRlcm1CaW5hcnkob3ApOwotICAgIGlmIChsaW5lID09IDAp
Ci0gICAgICAgIGxpbmUgPSBsZWZ0LT5nZXRMaW5lKCk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5l
KTsKIAogICAgIFRJbnRlcm1UeXBlZCogY2hpbGQgPSBhZGRDb252ZXJzaW9uKG9wLCBsZWZ0LT5n
ZXRUeXBlKCksIHJpZ2h0KTsKQEAgLTI2MCwxMSArMjU2LDkgQEAgVEludGVybVR5cGVkKiBUSW50
ZXJtZWRpYXRlOjphZGRBc3NpZ24oVAogLy8gUmV0dXJucyB0aGUgYWRkZWQgbm9kZS4KIC8vIFRo
ZSBjYWxsZXIgc2hvdWxkIHNldCB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuZWQgbm9kZS4KIC8vCi1U
SW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KFRPcGVyYXRvciBvcCwgVEludGVy
bVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBUU291cmNlTG9jIGxpbmUpCitUSW50
ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KFRPcGVyYXRvciBvcCwgVEludGVybVR5
cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQog
ewogICAgIFRJbnRlcm1CaW5hcnkqIG5vZGUgPSBuZXcgVEludGVybUJpbmFyeShvcCk7Ci0gICAg
aWYgKGxpbmUgPT0gMCkKLSAgICAgICAgbGluZSA9IGluZGV4LT5nZXRMaW5lKCk7CiAgICAgbm9k
ZS0+c2V0TGluZShsaW5lKTsKICAgICBub2RlLT5zZXRMZWZ0KGJhc2UpOwogICAgIG5vZGUtPnNl
dFJpZ2h0KGluZGV4KTsKQEAgLTI3OSwxMyArMjczLDEzIEBAIFRJbnRlcm1UeXBlZCogVEludGVy
bWVkaWF0ZTo6YWRkSW5kZXgoVE8KIC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8K
LVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwg
VEludGVybU5vZGUqIGNoaWxkTm9kZSwgVFNvdXJjZUxvYyBsaW5lLCBUU3ltYm9sVGFibGUmIHN5
bWJvbFRhYmxlKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdGgoVE9w
ZXJhdG9yIG9wLCBUSW50ZXJtTm9kZSogY2hpbGROb2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQogewogICAgIFRJbnRlcm1VbmFyeSogbm9kZTsK
ICAgICBUSW50ZXJtVHlwZWQqIGNoaWxkID0gY2hpbGROb2RlLT5nZXRBc1R5cGVkKCk7CiAKICAg
ICBpZiAoY2hpbGQgPT0gMCkgewotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsICJCYWQgdHlwZSBpbiBBZGRVbmFyeU1hdGgiLCBsaW5lKTsKKyAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBsaW5lLCAiQmFk
IHR5cGUgaW4gQWRkVW5hcnlNYXRoIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAt
MzQ4LDggKzM0Miw2IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkVW5hcnlNYXQK
ICAgICAvLyBNYWtlIGEgbmV3IG5vZGUgZm9yIHRoZSBvcGVyYXRvci4KICAgICAvLwogICAgIG5v
ZGUgPSBuZXcgVEludGVybVVuYXJ5KG9wKTsKLSAgICBpZiAobGluZSA9PSAwKQotICAgICAgICBs
aW5lID0gY2hpbGQtPmdldExpbmUoKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwogICAgIG5v
ZGUtPnNldE9wZXJhbmQoY2hpbGQpOwogCkBAIC0zNzYsNyArMzY4LDcgQEAgVEludGVybVR5cGVk
KiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdAogLy8gUmV0dXJucyBhbiBhZ2dyZWdhdGUgbm9k
ZSwgd2hpY2ggY291bGQgYmUgdGhlIG9uZSBwYXNzZWQgaW4gaWYKIC8vIGl0IHdhcyBhbHJlYWR5
IGFuIGFnZ3JlZ2F0ZSBidXQgbm8gb3BlcmF0b3Igd2FzIHNldC4KIC8vCi1USW50ZXJtQWdncmVn
YXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSogbm9k
ZSwgVE9wZXJhdG9yIG9wLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtQWdncmVnYXRlKiBUSW50
ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSogbm9kZSwgVE9wZXJh
dG9yIG9wLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRlcm1BZ2dyZWdhdGUq
IGFnZ05vZGU7CiAKQEAgLTM5MSw4ICszODMsNiBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJt
ZWRpYXRlOjpzZXRBZ2dyCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgYWdnTm9kZSA9IG5l
dyBUSW50ZXJtQWdncmVnYXRlKCk7CiAgICAgICAgICAgICBhZ2dOb2RlLT5nZXRTZXF1ZW5jZSgp
LnB1c2hfYmFjayhub2RlKTsKLSAgICAgICAgICAgIGlmIChsaW5lID09IDApCi0gICAgICAgICAg
ICAgICAgbGluZSA9IG5vZGUtPmdldExpbmUoKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAg
ICAgICBhZ2dOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoKTsKQEAgLTQwMSw4ICszOTEsNyBA
QCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyCiAgICAgLy8gU2V0IHRo
ZSBvcGVyYXRvci4KICAgICAvLwogICAgIGFnZ05vZGUtPnNldE9wKG9wKTsKLSAgICBpZiAobGlu
ZSAhPSAwKQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOworICAgIGFnZ05vZGUtPnNl
dExpbmUobGluZSk7CiAKICAgICByZXR1cm4gYWdnTm9kZTsKIH0KQEAgLTQ5MSw3ICs0ODAsNyBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNpCiAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0SW50OiAgIG5ld09wID0gRU9wQ29udkludFRvRmxvYXQ7ICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOiAgbmV3T3AgPSBFT3BDb252Qm9vbFRv
RmxvYXQ7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAi
QmFkIHByb21vdGlvbiBub2RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+
Z2V0TGluZSgpLCAiQmFkIHByb21vdGlvbiBub2RlIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC01MDAsNyArNDg5LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb252ZXJz
aQogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDogICBuZXdPcCA9IEVPcENvbnZJbnRU
b0Jvb2w7ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6IG5ld09w
ID0gRU9wQ29udkZsb2F0VG9Cb29sOyBicmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gbm9kZSIsIG5vZGUtPmdldExpbmUoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJhZCBwcm9tb3Rpb24gbm9kZSIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtNTA5LDEyICs0OTgsMTIgQEAgVEludGVybVR5cGVkKiBUSW50ZXJt
ZWRpYXRlOjphZGRDb252ZXJzaQogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6ICAg
bmV3T3AgPSBFT3BDb252Qm9vbFRvSW50OyAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgRWJ0RmxvYXQ6ICBuZXdPcCA9IEVPcENvbnZGbG9hdFRvSW50OyBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gbm9kZSIsIG5v
ZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJhZCBwcm9tb3Rp
b24gbm9kZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3Is
ICJCYWQgcHJvbW90aW9uIHR5cGUiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGlu
ZSgpLCAiQmFkIHByb21vdGlvbiB0eXBlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgIH0KIApAQCAtNTM0LDcgKzUyMyw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0
ZTo6YWRkQ29udmVyc2kKIC8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBhZ2dyZWdhdGUsIHVubGVz
cyAwIHdhcyBwYXNzZWQgaW4gZm9yCiAvLyBib3RoIGV4aXN0aW5nIG5vZGVzLgogLy8KLVRJbnRl
cm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2dyZWdhdGUoVEludGVybU5vZGUqIGxl
ZnQsIFRJbnRlcm1Ob2RlKiByaWdodCwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybUFnZ3JlZ2F0
ZSogVEludGVybWVkaWF0ZTo6Z3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVmdCwgVEludGVy
bU5vZGUqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGlmIChsZWZ0ID09
IDAgJiYgcmlnaHQgPT0gMCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01NTEsOCArNTQwLDcgQEAg
VEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jvd0FnZwogICAgIGlmIChyaWdodCkK
ICAgICAgICAgYWdnTm9kZS0+Z2V0U2VxdWVuY2UoKS5wdXNoX2JhY2socmlnaHQpOwogCi0gICAg
aWYgKGxpbmUgIT0gMCkKLSAgICAgICAgYWdnTm9kZS0+c2V0TGluZShsaW5lKTsKKyAgICBhZ2dO
b2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAgcmV0dXJuIGFnZ05vZGU7CiB9CkBAIC01NjIsMTgg
KzU1MCwxNCBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpncm93QWdnCiAvLwog
Ly8gUmV0dXJucyBhbiBhZ2dyZWdhdGUsIHVubGVzcyAwIHdhcyBwYXNzZWQgaW4gZm9yIHRoZSBl
eGlzdGluZyBub2RlLgogLy8KLVRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Om1ha2VB
Z2dyZWdhdGUoVEludGVybU5vZGUqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1BZ2dy
ZWdhdGUqIFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUqIG5vZGUsIGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgaWYgKG5vZGUgPT0gMCkKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICBUSW50ZXJtQWdncmVnYXRlKiBhZ2dOb2RlID0gbmV3IFRJbnRlcm1BZ2dy
ZWdhdGU7CiAgICAgYWdnTm9kZS0+Z2V0U2VxdWVuY2UoKS5wdXNoX2JhY2sobm9kZSk7Ci0KLSAg
ICBpZiAobGluZSAhPSAwKQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOwotICAgIGVs
c2UKLSAgICAgICAgYWdnTm9kZS0+c2V0TGluZShub2RlLT5nZXRMaW5lKCkpOworICAgIGFnZ05v
ZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1cm4gYWdnTm9kZTsKIH0KQEAgLTU4NSw3ICs1
NjksNyBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjptYWtlQWdnCiAvLwogLy8g
UmV0dXJucyB0aGUgc2VsZWN0aW9uIG5vZGUgY3JlYXRlZC4KIC8vCi1USW50ZXJtTm9kZSogVElu
dGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQ
YWlyIG5vZGVQYWlyLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtTm9kZSogVEludGVybWVkaWF0
ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQYWlyIG5vZGVQ
YWlyLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIC8vCiAgICAgLy8gRm9yIGNvbXBp
bGUgdGltZSBjb25zdGFudCBzZWxlY3Rpb25zLCBwcnVuZSB0aGUgY29kZSBhbmQKQEAgLTU5Myw3
ICs1NzcsNyBAQCBUSW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uCiAgICAg
Ly8KIAogICAgIGlmIChjb25kLT5nZXRBc1R5cGVkKCkgJiYgY29uZC0+Z2V0QXNUeXBlZCgpLT5n
ZXRBc0NvbnN0YW50VW5pb24oKSkgewotICAgICAgICBpZiAoY29uZC0+Z2V0QXNUeXBlZCgpLT5n
ZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0QkNvbnN0KCkg
PT0gdHJ1ZSkKKyAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRCQ29u
c3QoMCkgPT0gdHJ1ZSkKICAgICAgICAgICAgIHJldHVybiBub2RlUGFpci5ub2RlMSA/IHNldEFn
Z3JlZ2F0ZU9wZXJhdG9yKG5vZGVQYWlyLm5vZGUxLCBFT3BTZXF1ZW5jZSwgbm9kZVBhaXIubm9k
ZTEtPmdldExpbmUoKSkgOiBOVUxMOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4g
bm9kZVBhaXIubm9kZTIgPyBzZXRBZ2dyZWdhdGVPcGVyYXRvcihub2RlUGFpci5ub2RlMiwgRU9w
U2VxdWVuY2UsIG5vZGVQYWlyLm5vZGUyLT5nZXRMaW5lKCkpIDogTlVMTDsKQEAgLTYwNiw3ICs1
OTAsNyBAQCBUSW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uCiB9CiAKIAot
VEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb21tYShUSW50ZXJtVHlwZWQqIGxlZnQs
IFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVElu
dGVybWVkaWF0ZTo6YWRkQ29tbWEoVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJp
Z2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGlmIChsZWZ0LT5nZXRUeXBlKCku
Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYgcmlnaHQtPmdldFR5cGUoKS5nZXRRdWFsaWZp
ZXIoKSA9PSBFdnFDb25zdCkgewogICAgICAgICByZXR1cm4gcmlnaHQ7CkBAIC02MjYsNyArNjEw
LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb21tYShUSQogLy8KIC8vIFJl
dHVybnMgdGhlIHNlbGVjdGlvbiBub2RlIGNyZWF0ZWQsIG9yIDAgaWYgb25lIGNvdWxkIG5vdCBi
ZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvbihUSW50ZXJt
VHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZhbHNl
QmxvY2ssIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRk
U2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiB0cnVlQmxvY2ssIFRJ
bnRlcm1UeXBlZCogZmFsc2VCbG9jaywgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICAv
LwogICAgIC8vIEdldCBjb21wYXRpYmxlIHR5cGVzLgpAQCAtNjQ3LDcgKzYzMSw3IEBAIFRJbnRl
cm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW8KICAgICAvLwogCiAgICAgaWYgKGNv
bmQtPmdldEFzQ29uc3RhbnRVbmlvbigpICYmIHRydWVCbG9jay0+Z2V0QXNDb25zdGFudFVuaW9u
KCkgJiYgZmFsc2VCbG9jay0+Z2V0QXNDb25zdGFudFVuaW9uKCkpIHsKLSAgICAgICAgaWYgKGNv
bmQtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRCQ29u
c3QoKSkKKyAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRCQ29uc3Qo
MCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZUJsb2NrOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2VCbG9jazsKQEAgLTY2OSw3ICs2NTMsNyBAQCBUSW50ZXJtVHlwZWQq
IFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvCiAvLyBSZXR1cm5zIHRoZSBjb25zdGFudCB1bmlv
biBub2RlIGNyZWF0ZWQuCiAvLwogCi1USW50ZXJtQ29uc3RhbnRVbmlvbiogVEludGVybWVkaWF0
ZTo6YWRkQ29uc3RhbnRVbmlvbihDb25zdGFudFVuaW9uKiB1bmlvbkFycmF5UG9pbnRlciwgY29u
c3QgVFR5cGUmIHQsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1Db25zdGFudFVuaW9uKiBUSW50
ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXlQb2lu
dGVyLCBjb25zdCBUVHlwZSYgdCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50
ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSA9IG5ldyBUSW50ZXJtQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5UG9pbnRlciwgdCk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKQEAgLTY3Nyw3ICs2NjEs
NyBAQCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogVEludGVybWVkaWF0ZTo6YWRkCiAgICAgcmV0dXJu
IG5vZGU7CiB9CiAKLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU3dpenpsZShUVmVj
dG9yRmllbGRzJiBmaWVsZHMsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVEludGVy
bWVkaWF0ZTo6YWRkU3dpenpsZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUpCiB7CiAKICAgICBUSW50ZXJtQWdncmVnYXRlKiBub2RlID0gbmV3IFRJbnRlcm1B
Z2dyZWdhdGUoRU9wU2VxdWVuY2UpOwpAQCAtNzAwLDcgKzY4NCw3IEBAIFRJbnRlcm1UeXBlZCog
VEludGVybWVkaWF0ZTo6YWRkU3dpenpsZSgKIC8vCiAvLyBDcmVhdGUgbG9vcCBub2Rlcy4KIC8v
Ci1USW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkTG9vcChUTG9vcFR5cGUgdHlwZSwgVElu
dGVybU5vZGUqIGluaXQsIFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiBleHByLCBU
SW50ZXJtTm9kZSogYm9keSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybU5vZGUqIFRJbnRlcm1l
ZGlhdGU6OmFkZExvb3AoVExvb3BUeXBlIHR5cGUsIFRJbnRlcm1Ob2RlKiBpbml0LCBUSW50ZXJt
VHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogZXhwciwgVEludGVybU5vZGUqIGJvZHksIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybU5vZGUqIG5vZGUgPSBuZXcgVEludGVy
bUxvb3AodHlwZSwgaW5pdCwgY29uZCwgZXhwciwgYm9keSk7CiAgICAgbm9kZS0+c2V0TGluZShs
aW5lKTsKQEAgLTcxMSwxMiArNjk1LDEyIEBAIFRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjph
ZGRMb29wKFRMb28KIC8vCiAvLyBBZGQgYnJhbmNoZXMuCiAvLwotVEludGVybUJyYW5jaCogVElu
dGVybWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVyYXRvciBicmFuY2hPcCwgVFNvdXJjZUxvYyBsaW5l
KQorVEludGVybUJyYW5jaCogVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVyYXRvciBicmFu
Y2hPcCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICByZXR1cm4gYWRkQnJhbmNoKGJy
YW5jaE9wLCAwLCBsaW5lKTsKIH0KIAotVEludGVybUJyYW5jaCogVEludGVybWVkaWF0ZTo6YWRk
QnJhbmNoKFRPcGVyYXRvciBicmFuY2hPcCwgVEludGVybVR5cGVkKiBleHByZXNzaW9uLCBUU291
cmNlTG9jIGxpbmUpCitUSW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9w
ZXJhdG9yIGJyYW5jaE9wLCBUSW50ZXJtVHlwZWQqIGV4cHJlc3Npb24sIGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUpCiB7CiAgICAgVEludGVybUJyYW5jaCogbm9kZSA9IG5ldyBUSW50ZXJtQnJhbmNo
KGJyYW5jaE9wLCBleHByZXNzaW9uKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtODQ2
LDYgKzgzMCw3IEBAIGJvb2wgVEludGVybVVuYXJ5Ojpwcm9tb3RlKFRJbmZvU2luayYpCiAgICAg
fQogCiAgICAgc2V0VHlwZShvcGVyYW5kLT5nZXRUeXBlKCkpOworICAgIHR5cGUuc2V0UXVhbGlm
aWVyKEV2cVRlbXBvcmFyeSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTg2MCw3ICs4NDUs
NyBAQCBib29sIFRJbnRlcm1CaW5hcnk6OnByb21vdGUoVEluZm9TaW5rJiBpCiB7CiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBvbmx5IGhhbmRsZXMgc2NhbGFycywgdmVjdG9ycywgYW5kIG1hdHJpY2Vz
LgogICAgIGlmIChsZWZ0LT5pc0FycmF5KCkgfHwgcmlnaHQtPmlzQXJyYXkoKSkgewotICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJJbnZhbGlkIG9w
ZXJhdGlvbiBmb3IgYXJyYXlzIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5t
ZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJJbnZhbGlkIG9wZXJhdGlv
biBmb3IgYXJyYXlzIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTk2NSw3
ICs5NTAsNyBAQCBib29sIFRJbnRlcm1CaW5hcnk6OnByb21vdGUoVEluZm9TaW5rJiBpCiAgICAg
ICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24s
IEV2cVRlbXBvcmFyeSwgc2l6ZSwgZmFsc2UpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4SW50ZXJuYWxFcnJvciwgIk1pc3NpbmcgZWxzZXMiLCBnZXRMaW5lKCkpOworICAgICAgICAg
ICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGlu
ZSgpLCAiTWlzc2luZyBlbHNlcyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTk0LDcgKzk3OSw3IEBAIGJvb2wg
VEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKICAgICAgICAgICAgICAgICAgICAg
c2V0VHlwZShUVHlwZShiYXNpY1R5cGUsIGhpZ2hlclByZWNpc2lvbiwgRXZxVGVtcG9yYXJ5LCBz
aXplLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCAiTWlzc2luZyBlbHNlcyIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJNaXNzaW5nIGVs
c2VzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xMDM0LDIzICsxMDE5LDIyIEBAIGJvb2wgVEludGVybUJpbmFy
eTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKIAogYm9vbCBDb21wYXJlU3RydWN0KGNvbnN0IFRUeXBl
JiBsZWZ0Tm9kZVR5cGUsIENvbnN0YW50VW5pb24qIHJpZ2h0VW5pb25BcnJheSwgQ29uc3RhbnRV
bmlvbiogbGVmdFVuaW9uQXJyYXkpCiB7Ci0gICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSBs
ZWZ0Tm9kZVR5cGUuZ2V0U3RydWN0KCk7CisgICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0g
bGVmdE5vZGVUeXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKIAotICAgIHNpemVfdCBzdHJ1Y3RT
aXplID0gZmllbGRzLT5zaXplKCk7Ci0gICAgaW50IGluZGV4ID0gMDsKKyAgICBzaXplX3Qgc3Ry
dWN0U2l6ZSA9IGZpZWxkcy5zaXplKCk7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKIAogICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBqIDwgc3RydWN0U2l6ZTsgaisrKSB7Ci0gICAgICAgIGludCBzaXpl
ID0gKCpmaWVsZHMpW2pdLnR5cGUtPmdldE9iamVjdFNpemUoKTsKLSAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIGlmICgoKmZpZWxkcylbal0udHlw
ZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFD
b21wYXJlU3RydWN0dXJlKCooKmZpZWxkcylbal0udHlwZSwgJnJpZ2h0VW5pb25BcnJheVtpbmRl
eF0sICZsZWZ0VW5pb25BcnJheVtpbmRleF0pKQorICAgICAgICBzaXplX3Qgc2l6ZSA9IGZpZWxk
c1tqXS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZmllbGRzW2pdLT50eXBlKCktPmdl
dEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgeworICAgICAgICAgICAgICAgIGlmICghQ29tcGFy
ZVN0cnVjdHVyZSgqKGZpZWxkc1tqXS0+dHlwZSgpKSwgJnJpZ2h0VW5pb25BcnJheVtpbmRleF0s
ICZsZWZ0VW5pb25BcnJheVtpbmRleF0pKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChsZWZ0VW5pb25B
cnJheVtpbmRleF0gIT0gcmlnaHRVbmlvbkFycmF5W2luZGV4XSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGluZGV4Kys7CiAgICAgICAgICAgICB9
Ci0KICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNjIsMTAgKzEwNDYs
MTAgQEAgYm9vbCBDb21wYXJlU3RydWN0dXJlKGNvbnN0IFRUeXBlJiBsZWZ0TgogICAgICAgICBU
VHlwZSB0eXBlV2l0aG91dEFycmF5bmVzcyA9IGxlZnROb2RlVHlwZTsKICAgICAgICAgdHlwZVdp
dGhvdXRBcnJheW5lc3MuY2xlYXJBcnJheW5lc3MoKTsKIAotICAgICAgICBpbnQgYXJyYXlTaXpl
ID0gbGVmdE5vZGVUeXBlLmdldEFycmF5U2l6ZSgpOworICAgICAgICBzaXplX3QgYXJyYXlTaXpl
ID0gbGVmdE5vZGVUeXBlLmdldEFycmF5U2l6ZSgpOwogCi0gICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgYXJyYXlTaXplOyArK2kpIHsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSB0eXBlV2l0
aG91dEFycmF5bmVzcy5nZXRPYmplY3RTaXplKCkgKiBpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKSB7CisgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
dHlwZVdpdGhvdXRBcnJheW5lc3MuZ2V0T2JqZWN0U2l6ZSgpICogaTsKICAgICAgICAgICAgIGlm
ICghQ29tcGFyZVN0cnVjdCh0eXBlV2l0aG91dEFycmF5bmVzcywgJnJpZ2h0VW5pb25BcnJheVtv
ZmZzZXRdLCAmbGVmdFVuaW9uQXJyYXlbb2Zmc2V0XSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CkBAIC0xMDg1LDcgKzEwNjksNyBAQCBib29sIENvbXBhcmVTdHJ1
Y3R1cmUoY29uc3QgVFR5cGUmIGxlZnROCiBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVu
aW9uOjpmb2xkKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBjb25zdGFudE5vZGUsIFRJbmZv
U2luayYgaW5mb1NpbmspCiB7CiAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IGdldFVu
aW9uQXJyYXlQb2ludGVyKCk7Ci0gICAgaW50IG9iamVjdFNpemUgPSBnZXRUeXBlKCkuZ2V0T2Jq
ZWN0U2l6ZSgpOworICAgIHNpemVfdCBvYmplY3RTaXplID0gZ2V0VHlwZSgpLmdldE9iamVjdFNp
emUoKTsKIAogICAgIGlmIChjb25zdGFudE5vZGUpIHsgIC8vIGJpbmFyeSBvcGVyYXRpb25zCiAg
ICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2RlID0gY29uc3RhbnROb2RlLT5nZXRBc0Nv
bnN0YW50VW5pb24oKTsKQEAgLTEwOTUsMTMgKzEwNzksMTMgQEAgVEludGVybVR5cGVkKiBUSW50
ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAvLyBmb3IgYSBjYXNlIGxpa2UgZmxvYXQg
ZiA9IDEuMiArIHZlYzQoMiwzLDQsNSk7CiAgICAgICAgIGlmIChjb25zdGFudE5vZGUtPmdldFR5
cGUoKS5nZXRPYmplY3RTaXplKCkgPT0gMSAmJiBvYmplY3RTaXplID4gMSkgewogICAgICAgICAg
ICAgcmlnaHRVbmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7ICsraSkKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgKytpKQogICAgICAgICAgICAgICAg
IHJpZ2h0VW5pb25BcnJheVtpXSA9ICpub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwogICAg
ICAgICAgICAgcmV0dXJuVHlwZSA9IGdldFR5cGUoKTsKICAgICAgICAgfSBlbHNlIGlmIChjb25z
dGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkgPiAxICYmIG9iamVjdFNpemUgPT0g
MSkgewogICAgICAgICAgICAgLy8gZm9yIGEgY2FzZSBsaWtlIGZsb2F0IGYgPSB2ZWM0KDIsMyw0
LDUpICsgMS4yOwogICAgICAgICAgICAgdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW2Nv
bnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKV07Ci0gICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsg
KytpKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb25zdGFudE5vZGUtPmdl
dFR5cGUoKS5nZXRPYmplY3RTaXplKCk7ICsraSkKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5
W2ldID0gKmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAgICAgICAgICAgICByZXR1cm5UeXBlID0g
bm9kZS0+Z2V0VHlwZSgpOwogICAgICAgICAgICAgb2JqZWN0U2l6ZSA9IGNvbnN0YW50Tm9kZS0+
Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKQEAgLTExMTUsMTQgKzEwOTksMTQgQEAgVEludGVy
bVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BB
ZGQ6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltv
YmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAg
ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAg
ICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQog
ICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ld
ICsgcmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRU9wU3ViOgogICAgICAgICAgICAgICAgIHRlbXBD
b25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAg
ICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgIHRl
bXBDb25zdEFycmF5W2ldID0gdW5pb25BcnJheVtpXSAtIHJpZ2h0VW5pb25BcnJheVtpXTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTMyLDEzICsxMTE2
LDEzIEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAg
ICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7
Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENv
bnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldICogcmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRU9w
TWF0cml4VGltZXNNYXRyaXg6CiAgICAgICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNp
Y1R5cGUoKSAhPSBFYnRGbG9hdCB8fCBub2RlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCkg
ewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciBtYXRyaXggbXVs
dGlwbHkiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50IEZvbGRpbmcg
Y2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCBtdWx0aXBseSIpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgey8vIHN1cHBv
cnQgTVNWQysrNi4wCkBAIC0xMTU3LDExICsxMTQxLDExIEBAIFRJbnRlcm1UeXBlZCogVEludGVy
bUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgIGNhc2UgRU9wRGl2OgogICAgICAgICAg
ICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAg
ICAgICAgICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAg
ICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICBpZiAocmlnaHRVbmlvbkFycmF5
W2ldID09IDAuMGYpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhXYXJuaW5nLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZv
bGRpbmciLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeFdhcm5pbmcsIGdldExpbmUoKSwgIkRpdmlkZSBieSB6ZXJvIGVycm9yIGR1
cmluZyBjb25zdGFudCBmb2xkaW5nIik7CiAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFy
cmF5W2ldLnNldEZDb25zdCh1bmlvbkFycmF5W2ldLmdldEZDb25zdCgpIDwgMCA/IC1GTFRfTUFY
IDogRkxUX01BWCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCh1bmlvbkFycmF5W2ldLmdldEZDb25zdCgpIC8g
cmlnaHRVbmlvbkFycmF5W2ldLmdldEZDb25zdCgpKTsKQEAgLTExNjksMTMgKzExNTMsMTMgQEAg
VEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogCiAgICAgICAgICAgICBj
YXNlIEVidEludDoKICAgICAgICAgICAgICAgICBpZiAocmlnaHRVbmlvbkFycmF5W2ldID09IDAp
IHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhXYXJu
aW5nLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciLCBnZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eFdhcm5pbmcsIGdldExpbmUoKSwgIkRpdmlkZSBieSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFu
dCBmb2xkaW5nIik7CiAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldElD
b25zdChJTlRfTUFYKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0KHVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkg
LyByaWdodFVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDb25zdGFudCBmb2xkaW5nIGNhbm5vdCBiZSBk
b25lIGZvciBcIi9cIiIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJDb25zdGFudCBmb2xk
aW5nIGNhbm5vdCBiZSBkb25lIGZvciBcIi9cIiIpOwogICAgICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CkBAIC0x
MTg0LDcgKzExNjgsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xk
CiAKICAgICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNWZWN0b3I6CiAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNvbnN0
YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCB0aW1lcyB2ZWN0b3IiLCBnZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRv
bmUgZm9yIG1hdHJpeCB0aW1lcyB2ZWN0b3IiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0g
bmV3IENvbnN0YW50VW5pb25bZ2V0Tm9taW5hbFNpemUoKV07CkBAIC0xMjA1LDcgKzExODksNyBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAKICAgICAgICAgICAg
IGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6CiAgICAgICAgICAgICAgICAgaWYgKGdldFR5cGUo
KS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCkgewotICAgICAgICAgICAgICAgICAgICBpbmZv
U2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDb25zdGFudCBGb2xkaW5n
IGNhbm5vdCBiZSBkb25lIGZvciB2ZWN0b3IgdGltZXMgbWF0cml4IiwgZ2V0TGluZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVy
cm9yLCBnZXRMaW5lKCksICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciB2ZWN0
b3IgdGltZXMgbWF0cml4Iik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgICAgIH0KIApAQCAtMTIyMyw3ICsxMjA3LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJt
Q29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsQW5kOiAvLyB0
aGlzIGNvZGUgaXMgd3JpdHRlbiBmb3IgcG9zc2libGUgZnV0dXJlIHVzZSwgd2lsbCBub3QgZ2V0
IGV4ZWN1dGVkIGN1cnJlbnRseQogICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgey8vIHN1cHBvcnQg
TVNWQysrNi4wCi0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0
U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9i
amVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ld
ID0gdW5pb25BcnJheVtpXSAmJiByaWdodFVuaW9uQXJyYXlbaV07CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTIzMSw3ICsxMjE1LDcgQEAgVEludGVybVR5
cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BMb2dp
Y2FsT3I6IC8vIHRoaXMgY29kZSBpcyB3cml0dGVuIGZvciBwb3NzaWJsZSBmdXR1cmUgdXNlLCB3
aWxsIG5vdCBnZXQgZXhlY3V0ZWQgY3VycmVudGx5CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7
Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENv
bnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldIHx8IHJpZ2h0VW5pb25BcnJheVtpXTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjM5LDcgKzEyMjMsNyBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBj
YXNlIEVPcExvZ2ljYWxYb3I6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBN
U1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RT
aXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Jq
ZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnZXRUeXBlKCku
Z2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDogdGVtcENvbnN0QXJy
YXlbaV0uc2V0QkNvbnN0KCh1bmlvbkFycmF5W2ldID09IHJpZ2h0VW5pb25BcnJheVtpXSkgPyBm
YWxzZSA6IHRydWUpOyBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSAm
JiAiRGVmYXVsdCBtaXNzaW5nIik7CkBAIC0xMjg1LDcgKzEyNjksNyBAQCBUSW50ZXJtVHlwZWQq
IFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICAgICAgICAgIGlmICghQ29t
cGFyZVN0cnVjdHVyZShub2RlLT5nZXRUeXBlKCksIG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVy
KCksIHVuaW9uQXJyYXkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHVuaW9uQXJyYXlbaV0gIT0gcmlnaHRVbmlvbkFycmF5W2ldKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsgIC8vIGJyZWFrIG91dCBvZiBmb3IgbG9vcApAQCAtMTMx
MSw3ICsxMjk1LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAog
ICAgICAgICAgICAgICAgICAgICBpZiAoQ29tcGFyZVN0cnVjdHVyZShub2RlLT5nZXRUeXBlKCks
IG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCksIHVuaW9uQXJyYXkpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkr
KykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNp
emU7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaW9uQXJyYXlbaV0gPT0g
cmlnaHRVbmlvbkFycmF5W2ldKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5v
ZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgIC8vIGJy
ZWFrIG91dCBvZiBmb3IgbG9vcApAQCAtMTMzMyw3ICsxMzE3LDcgQEAgVEludGVybVR5cGVkKiBU
SW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wTm9k
ZTsKIAogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJJbnZhbGlkIG9wZXJhdG9yIGZvciBjb25z
dGFudCBmb2xkaW5nIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkludmFsaWQgb3BlcmF0
b3IgZm9yIGNvbnN0YW50IGZvbGRpbmciKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgfQogICAgICAgICB0ZW1wTm9kZSA9IG5ldyBUSW50ZXJtQ29uc3RhbnRVbmlvbih0ZW1w
Q29uc3RBcnJheSwgcmV0dXJuVHlwZSk7CkBAIC0xMzQ2LDE0ICsxMzMwLDE0IEBAIFRJbnRlcm1U
eXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgLy8KICAgICAgICAgVElu
dGVybUNvbnN0YW50VW5pb24gKm5ld05vZGUgPSAwOwogICAgICAgICBDb25zdGFudFVuaW9uKiB0
ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwotICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgeworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewogICAgICAgICAgICAgc3dpdGNoKG9wKSB7
CiAgICAgICAgICAgICAgICAgY2FzZSBFT3BOZWdhdGl2ZToKICAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgRWJ0RmxvYXQ6IHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCgtdW5pb25BcnJh
eVtpXS5nZXRGQ29uc3QoKSk7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRJbnQ6ICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0KC11bmlvbkFycmF5W2ldLmdldElD
b25zdCgpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiLCBnZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBm
b2xkZWQgaW50byBjb25zdGFudCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTM2MSw3ICsxMzQ1LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6
Zm9sZAogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUo
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOiAgdGVtcENvbnN0QXJy
YXlbaV0uc2V0QkNvbnN0KCF1bmlvbkFycmF5W2ldLmdldEJDb25zdCgpKTsgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVuYXJ5IG9wZXJh
dGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM3Nyw2NSArMTM2MSw2NCBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAKIFRJbnRlcm1UeXBl
ZCogVEludGVybWVkaWF0ZTo6cHJvbW90ZUNvbnN0YW50VW5pb24oVEJhc2ljVHlwZSBwcm9tb3Rl
VG8sIFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2RlKQogewotICAgIENvbnN0YW50VW5pb24gKnJp
Z2h0VW5pb25BcnJheSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0gICAgaW50IHNp
emUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgIHNpemVfdCBzaXplID0g
bm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKIAogICAgIENvbnN0YW50VW5pb24gKmxl
ZnRVbmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bc2l6ZV07CiAKLSAgICBmb3IgKGludCBp
PTA7IGkgPCBzaXplOyBpKyspIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkr
KykgewogCiAgICAgICAgIHN3aXRjaCAocHJvbW90ZVRvKSB7CiAgICAgICAgICAgICBjYXNlIEVi
dEZsb2F0OgogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VHlwZSgpLmdldEJhc2lj
VHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0
PihyaWdodFVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4obm9kZS0+
Z2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0
PihyaWdodFVuaW9uQXJyYXlbaV0uZ2V0QkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4obm9kZS0+
Z2V0QkNvbnN0KHN0YXRpY19jYXN0PGJvb2w+KGkpKSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXSA9IHJpZ2h0VW5pb25BcnJheVtpXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNf
Y2FzdDxmbG9hdD4obm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0PihpKSkpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCAiQ2Fubm90IHByb21vdGUiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVy
cm9yLCBub2RlLT5nZXRMaW5lKCksICJDYW5ub3QgcHJvbW90ZSIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAgICAgICAgICAgICAgc3dpdGNoIChu
b2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXSA9IHJp
Z2h0VW5pb25BcnJheVtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5
W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmdldElDb25zdChzdGF0aWNfY2Fz
dDxpbnQ+KGkpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlv
bkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KHJpZ2h0VW5pb25BcnJheVtpXS5n
ZXRCQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0u
c2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0QkNvbnN0KHN0YXRpY19jYXN0PGJv
b2w+KGkpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25B
cnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50PihyaWdodFVuaW9uQXJyYXlbaV0uZ2V0
RkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNl
dElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmdldEZDb25zdChzdGF0aWNfY2FzdDxmbG9h
dD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNhbm5vdCBwcm9tb3RlIiwgbm9kZS0+Z2V0TGlu
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQ2Fubm90IHByb21vdGUiKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKG5vZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAg
ICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlv
bkFycmF5W2ldLnNldEJDb25zdChyaWdodFVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkgIT0gMCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9k
ZS0+Z2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oaSkpICE9IDApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldID0gcmlnaHRVbmlvbkFycmF5W2ld
OworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5v
ZGUtPmdldEJDb25zdChzdGF0aWNfY2FzdDxib29sPihpKSkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3QocmlnaHRVbmlvbkFy
cmF5W2ldLmdldEZDb25zdCgpICE9IDAuMGYpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVm
dFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUtPmdldEZDb25zdChzdGF0aWNfY2FzdDxmbG9h
dD4oaSkpICE9IDAuMGYpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDYW5ub3QgcHJvbW90ZSIsIG5vZGUt
PmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3Nh
Z2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkNhbm5vdCBwcm9tb3Rl
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiSW5j
b3JyZWN0IGRhdGEgdHlwZSBmb3VuZCIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRM
aW5lKCksICJJbmNvcnJlY3QgZGF0YSB0eXBlIGZvdW5kIik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL091dHB1dEdMU0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmNwcAkocmV2aXNpb24gMTUyMzIzKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOSwzICsxOSwxNyBAQCBib29sIFRPdXRwdXRHTFNMOjp3cml0ZVZhcmlhYmxl
UHJlY2lzaW9uCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCit2b2lkIFRPdXRwdXRHTFNMOjp2
aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKiBub2RlKQoreworICAgIFRJbmZvU2lua0Jhc2UmIG91
dCA9IG9ialNpbmsoKTsKKworICAgIGlmIChub2RlLT5nZXRTeW1ib2woKSA9PSAiZ2xfRnJhZ0Rl
cHRoRVhUIikKKyAgICB7CisgICAgICAgIG91dCA8PCAiZ2xfRnJhZ0RlcHRoIjsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgVE91dHB1dEdMU0xCYXNlOjp2aXNpdFN5bWJvbChub2Rl
KTsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
T3V0cHV0R0xTTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9PdXRwdXRHTFNMLmgJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmgJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDYgKzIwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHdyaXRl
VmFyaWFibGVQcmVjaXNpb24oVFByZWNpc2lvbik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0U3lt
Ym9sKFRJbnRlcm1TeW1ib2wqIG5vZGUpOwogfTsKIAogI2VuZGlmICAvLyBDUk9TU0NPTVBJTEVS
R0xTTF9PVVRQVVRHTFNMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAJKHJldmlzaW9uIDE1MjMyMykK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDI1ICs3OSw5IEBAIHZvaWQgVE91dHB1dEdMU0xCYXNl
Ojp3cml0ZVZhcmlhYmxlVHlwZSgKICAgICBpZiAoKHF1YWxpZmllciAhPSBFdnFUZW1wb3Jhcnkp
ICYmIChxdWFsaWZpZXIgIT0gRXZxR2xvYmFsKSkKICAgICAgICAgb3V0IDw8IHR5cGUuZ2V0UXVh
bGlmaWVyU3RyaW5nKCkgPDwgIiAiOwogICAgIC8vIERlY2xhcmUgdGhlIHN0cnVjdCBpZiB3ZSBo
YXZlIG5vdCBkb25lIHNvIGFscmVhZHkuCi0gICAgaWYgKCh0eXBlLmdldEJhc2ljVHlwZSgpID09
IEVidFN0cnVjdCkgJiYKLSAgICAgICAgKG1EZWNsYXJlZFN0cnVjdHMuZmluZCh0eXBlLmdldFR5
cGVOYW1lKCkpID09IG1EZWNsYXJlZFN0cnVjdHMuZW5kKCkpKQorICAgIGlmICgodHlwZS5nZXRC
YXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpICYmICFzdHJ1Y3REZWNsYXJlZCh0eXBlLmdldFN0cnVj
dCgpKSkKICAgICB7Ci0gICAgICAgIG91dCA8PCAic3RydWN0ICIgPDwgaGFzaE5hbWUodHlwZS5n
ZXRUeXBlTmFtZSgpKSA8PCAie1xuIjsKLSAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBzdHJ1Y3R1
cmUgPSB0eXBlLmdldFN0cnVjdCgpOwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlICE9IE5VTEwp
OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUgPSAoKnN0cnVj
dHVyZSlbaV0udHlwZTsKLSAgICAgICAgICAgIEFTU0VSVChmaWVsZFR5cGUgIT0gTlVMTCk7Ci0g
ICAgICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVsZFR5cGUtPmdldFByZWNp
c2lvbigpKSkKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiAiOwotICAgICAgICAgICAgb3V0IDw8
IGdldFR5cGVOYW1lKCpmaWVsZFR5cGUpIDw8ICIgIiA8PCBoYXNoTmFtZShmaWVsZFR5cGUtPmdl
dEZpZWxkTmFtZSgpKTsKLSAgICAgICAgICAgIGlmIChmaWVsZFR5cGUtPmlzQXJyYXkoKSkKLSAg
ICAgICAgICAgICAgICBvdXQgPDwgYXJyYXlCcmFja2V0cygqZmllbGRUeXBlKTsKLSAgICAgICAg
ICAgIG91dCA8PCAiO1xuIjsKLSAgICAgICAgfQotICAgICAgICBvdXQgPDwgIn0iOwotICAgICAg
ICBtRGVjbGFyZWRTdHJ1Y3RzLmluc2VydCh0eXBlLmdldFR5cGVOYW1lKCkpOworICAgICAgICBk
ZWNsYXJlU3RydWN0KHR5cGUuZ2V0U3RydWN0KCkpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpA
QCAtMTM4LDI0ICsxMjIsMjUgQEAgY29uc3QgQ29uc3RhbnRVbmlvbiogVE91dHB1dEdMU0xCYXNl
Ojp3cgogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsK
LSAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5cGUuZ2V0VHlwZU5hbWUoKSkgPDwgIigiOwotICAg
ICAgICBjb25zdCBUVHlwZUxpc3QqIHN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7Ci0gICAg
ICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gTlVMTCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkKKyAgICAgICAgY29uc3QgVFN0cnVjdHVyZSog
c3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHN0
cnVjdHVyZS0+bmFtZSgpKSA8PCAiKCI7CisKKyAgICAgICAgY29uc3QgVEZpZWxkTGlzdCYgZmll
bGRzID0gc3RydWN0dXJlLT5maWVsZHMoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWVsZHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBl
KiBmaWVsZFR5cGUgPSAoKnN0cnVjdHVyZSlbaV0udHlwZTsKKyAgICAgICAgICAgIGNvbnN0IFRU
eXBlKiBmaWVsZFR5cGUgPSBmaWVsZHNbaV0tPnR5cGUoKTsKICAgICAgICAgICAgIEFTU0VSVChm
aWVsZFR5cGUgIT0gTlVMTCk7CiAgICAgICAgICAgICBwQ29uc3RVbmlvbiA9IHdyaXRlQ29uc3Rh
bnRVbmlvbigqZmllbGRUeXBlLCBwQ29uc3RVbmlvbik7Ci0gICAgICAgICAgICBpZiAoaSAhPSBz
dHJ1Y3R1cmUtPnNpemUoKSAtIDEpIG91dCA8PCAiLCAiOworICAgICAgICAgICAgaWYgKGkgIT0g
ZmllbGRzLnNpemUoKSAtIDEpIG91dCA8PCAiLCAiOwogICAgICAgICB9CiAgICAgICAgIG91dCA8
PCAiKSI7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGludCBzaXplID0gdHlwZS5n
ZXRPYmplY3RTaXplKCk7CisgICAgICAgIHNpemVfdCBzaXplID0gdHlwZS5nZXRPYmplY3RTaXpl
KCk7CiAgICAgICAgIGJvb2wgd3JpdGVUeXBlID0gc2l6ZSA+IDE7CiAgICAgICAgIGlmICh3cml0
ZVR5cGUpIG91dCA8PCBnZXRUeXBlTmFtZSh0eXBlKSA8PCAiKCI7Ci0gICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgc2l6ZTsgKytpLCArK3BDb25zdFVuaW9uKQorICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSwgKytwQ29uc3RVbmlvbikKICAgICAgICAgewogICAgICAg
ICAgICAgc3dpdGNoIChwQ29uc3RVbmlvbi0+Z2V0VHlwZSgpKQogICAgICAgICAgICAgewpAQCAt
MjYwLDEyICsyNDUsMTggQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QmluYXJ5KFZpc2l0
CiAgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6CiAgICAgICAgICAgICBpZiAodmlz
aXQgPT0gSW5WaXNpdCkKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBIZXJlIHdl
IGFyZSB3cml0aW5nIG91dCAiZm9vLmJhciIsIHdoZXJlICJmb28iIGlzIHN0cnVjdAorICAgICAg
ICAgICAgICAgIC8vIGFuZCAiYmFyIiBpcyBmaWVsZC4gSW4gQVNULCBpdCBpcyByZXByZXNlbnRl
ZCBhcyBhIGJpbmFyeQorICAgICAgICAgICAgICAgIC8vIG5vZGUsIHdoZXJlIGxlZnQgY2hpbGQg
cmVwcmVzZW50cyAiZm9vIiBhbmQgcmlnaHQgY2hpbGQgImJhciIuCisgICAgICAgICAgICAgICAg
Ly8gVGhlIG5vZGUgaXRzZWxmIHJlcHJlc2VudHMgIi4iLiBUaGUgc3RydWN0IGZpZWxkICJiYXIi
IGlzCisgICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgc3RvcmVkIGFzIGFuIGluZGV4IGludG8g
VFN0cnVjdHVyZTo6ZmllbGRzLgogICAgICAgICAgICAgICAgIG91dCA8PCAiLiI7Ci0gICAgICAg
ICAgICAgICAgLy8gVE9ETyhhbG9rcCk6IEFTU0VSVAotICAgICAgICAgICAgICAgIFRTdHJpbmcg
ZmllbGROYW1lID0gbm9kZS0+Z2V0VHlwZSgpLmdldEZpZWxkTmFtZSgpOworICAgICAgICAgICAg
ICAgIGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlw
ZSgpLmdldFN0cnVjdCgpOworICAgICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1Db25zdGFudFVu
aW9uKiBpbmRleCA9IG5vZGUtPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAg
ICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpW2lu
ZGV4LT5nZXRJQ29uc3QoMCldOwogCi0gICAgICAgICAgICAgICAgY29uc3QgVFR5cGUmIHN0cnVj
dFR5cGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKTsKLSAgICAgICAgICAgICAgICBpZiAo
IW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3RUeXBlLmdldFR5cGVOYW1lKCkpKQorICAg
ICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gZmllbGQtPm5hbWUoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3R1cmUtPm5hbWUoKSkp
CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZSA9IGhhc2hOYW1lKGZpZWxkTmFtZSk7CiAK
ICAgICAgICAgICAgICAgICBvdXQgPDwgZmllbGROYW1lOwpAQCAtNTk2LDcgKzU4Nyw3IEBAIGJv
b2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBjb25zdCBUVHlwZSYgdHlwZSA9IG5vZGUtPmdldFR5cGUoKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpOwotICAg
ICAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0eXBlLmdldFR5cGVOYW1lKCkpIDw8ICIoIjsK
KyAgICAgICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRTdHJ1Y3QoKS0+bmFtZSgp
KSA8PCAiKCI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJ
blZpc2l0KQogICAgICAgICAgICAgewpAQCAtNzY1LDcgKzc1Niw3IEBAIFRTdHJpbmcgVE91dHB1
dEdMU0xCYXNlOjpnZXRUeXBlTmFtZShjb24KICAgICBlbHNlCiAgICAgewogICAgICAgICBpZiAo
dHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCi0gICAgICAgICAgICBvdXQgPDwgaGFz
aE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKTsKKyAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0
eXBlLmdldFN0cnVjdCgpLT5uYW1lKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvdXQg
PDwgdHlwZS5nZXRCYXNpY1N0cmluZygpOwogICAgIH0KQEAgLTc5OCwzICs3ODksMjkgQEAgVFN0
cmluZyBUT3V0cHV0R0xTTEJhc2U6Omhhc2hGdW5jdGlvbk5hbQogICAgICAgICByZXR1cm4gbmFt
ZTsKICAgICByZXR1cm4gaGFzaE5hbWUobmFtZSk7CiB9CisKK2Jvb2wgVE91dHB1dEdMU0xCYXNl
OjpzdHJ1Y3REZWNsYXJlZChjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1EZWNsYXJlZFN0cnVjdHMuZmluZChzdHJ1Y3R1cmUtPm5hbWUoKSkgIT0gbURl
Y2xhcmVkU3RydWN0cy5lbmQoKTsKK30KKwordm9pZCBUT3V0cHV0R0xTTEJhc2U6OmRlY2xhcmVT
dHJ1Y3QoY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFRJbmZvU2lua0Jhc2Um
IG91dCA9IG9ialNpbmsoKTsKKworICAgIG91dCA8PCAic3RydWN0ICIgPDwgaGFzaE5hbWUoc3Ry
dWN0dXJlLT5uYW1lKCkpIDw8ICJ7XG4iOworICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9
IHN0cnVjdHVyZS0+ZmllbGRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMu
c2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBjb25zdCBURmllbGQqIGZpZWxkID0gZmllbGRz
W2ldOworICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVsZC0+dHlwZSgpLT5n
ZXRQcmVjaXNpb24oKSkpCisgICAgICAgICAgICBvdXQgPDwgIiAiOworICAgICAgICBvdXQgPDwg
Z2V0VHlwZU5hbWUoKmZpZWxkLT50eXBlKCkpIDw8ICIgIiA8PCBoYXNoTmFtZShmaWVsZC0+bmFt
ZSgpKTsKKyAgICAgICAgaWYgKGZpZWxkLT50eXBlKCktPmlzQXJyYXkoKSkKKyAgICAgICAgICAg
IG91dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZC0+dHlwZSgpKTsKKyAgICAgICAgb3V0IDw8ICI7
XG4iOworICAgIH0KKyAgICBvdXQgPDwgIn0iOworCisgICAgbURlY2xhcmVkU3RydWN0cy5pbnNl
cnQoc3RydWN0dXJlLT5uYW1lKCkpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgJKHJldmlzaW9uIDE1MjMy
MykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw5IEBAIHByb3RlY3RlZDoKICAgICBUU3Ry
aW5nIGhhc2hGdW5jdGlvbk5hbWUoY29uc3QgVFN0cmluZyYgbWFuZ2xlZF9uYW1lKTsKIAogcHJp
dmF0ZToKKyAgICBib29sIHN0cnVjdERlY2xhcmVkKGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkgY29uc3Q7CisgICAgdm9pZCBkZWNsYXJlU3RydWN0KGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSk7CisKICAgICBUSW5mb1NpbmtCYXNlJiBtT2JqU2luazsKICAgICBib29sIG1EZWNsYXJp
bmdWYXJpYWJsZXM7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9PdXRwdXRITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNiArNTIsNyBAQCBPdXRwdXRITFNMOjpPdXRwdXRITFNMKFRQYXJzZUNvbnRleHQg
JmNvCiAgICAgbVVzZXNQb2ludENvb3JkID0gZmFsc2U7CiAgICAgbVVzZXNGcm9udEZhY2luZyA9
IGZhbHNlOwogICAgIG1Vc2VzUG9pbnRTaXplID0gZmFsc2U7CisgICAgbVVzZXNGcmFnRGVwdGgg
PSBmYWxzZTsKICAgICBtVXNlc1hvciA9IGZhbHNlOwogICAgIG1Vc2VzTW9kMSA9IGZhbHNlOwog
ICAgIG1Vc2VzTW9kMnYgPSBmYWxzZTsKQEAgLTE4OSw2ICsxOTAsMTEgQEAgdm9pZCBPdXRwdXRI
TFNMOjpoZWFkZXIoKQogICAgICAgICBvdXQgPDwgIlxuIgogICAgICAgICAgICAgICAgInN0YXRp
YyBmbG9hdDQgZ2xfQ29sb3JbMV0gPSB7ZmxvYXQ0KDAsIDAsIDAsIDApfTtcbiI7CiAKKyAgICAg
ICAgaWYgKG1Vc2VzRnJhZ0RlcHRoKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgInN0
YXRpYyBmbG9hdCBnbF9EZXB0aCA9IDAuMDtcbiI7CisgICAgICAgIH0KKwogICAgICAgICBpZiAo
bVVzZXNGcmFnQ29vcmQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG91dCA8PCAic3RhdGljIGZs
b2F0NCBnbF9GcmFnQ29vcmQgPSBmbG9hdDQoMCwgMCwgMCwgMCk7XG4iOwpAQCAtNTA5LDYgKzUx
NSwxMSBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcigpCiAgICAgICAgIG91dCA8PCAiI2RlZmlu
ZSBHTF9VU0VTX1BPSU5UX1NJWkVcbiI7CiAgICAgfQogCisgICAgaWYgKG1Vc2VzRnJhZ0RlcHRo
KQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNfRlJBR19ERVBUSFxuIjsK
KyAgICB9CisKICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQogICAgIHsKICAgICAgICAgb3V0IDw8
ICJzdHJ1Y3QgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnNcbiIKQEAgLTg0Myw2ICs4NTQsMTEgQEAg
dm9pZCBPdXRwdXRITFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYgogICAgICAgICBtVXNlc1Bv
aW50U2l6ZSA9IHRydWU7CiAgICAgICAgIG91dCA8PCBuYW1lOwogICAgIH0KKyAgICBlbHNlIGlm
IChuYW1lID09ICJnbF9GcmFnRGVwdGhFWFQiKQorICAgIHsKKyAgICAgICAgbVVzZXNGcmFnRGVw
dGggPSB0cnVlOworICAgICAgICBvdXQgPDwgImdsX0RlcHRoIjsKKyAgICB9CiAgICAgZWxzZQog
ICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBub2RlLT5nZXRRdWFsaWZpZXIo
KTsKQEAgLTk1Miw3ICs5NjgsMTAgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShWaXNp
dCB2aXNpdAogICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKICAgICAgICAgaWYgKHZp
c2l0ID09IEluVmlzaXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNv
cmF0ZUZpZWxkKG5vZGUtPmdldFR5cGUoKS5nZXRGaWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgp
LT5nZXRUeXBlKCkpOworICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlID0g
bm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7CisgICAgICAgICAgICBjb25z
dCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogaW5kZXggPSBub2RlLT5nZXRSaWdodCgpLT5nZXRBc0Nv
bnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQgPSBzdHJ1Y3R1
cmUtPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOworICAgICAgICAgICAgb3V0IDw8ICIu
IiArIGRlY29yYXRlRmllbGQoZmllbGQtPm5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBl
KCkpOwogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTk3NCw3ICs5
OTMsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0CiAKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBpID0gZWxlbWVudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpID0gZWxlbWVu
dC0+Z2V0SUNvbnN0KDApOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICB7CkBAIC0xMDIxLDE4ICsxMDQwLDE4IEBAIGJvb2wgT3V0
cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQKICAgICAgICAgICAgICAgICBvdXQgPDwg
IiEoIjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0ICpmaWVs
ZHMgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgICAg
IGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdl
dFN0cnVjdCgpLT5maWVsZHMoKTsKIAotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWVsZHMtPnNpemUoKTsgaSsrKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqZmllbGRzKVtpXS50eXBlOworICAgICAgICAgICAgICAg
IGNvbnN0IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CiAKICAgICAgICAgICAgICAgICBub2Rl
LT5nZXRMZWZ0KCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgICAgIG91dCA8PCAiLiIg
KyBkZWNvcmF0ZUZpZWxkKGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCksIG5vZGUtPmdldExlZnQo
KS0+Z2V0VHlwZSgpKSArICIgPT0gIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIi4iICsgZGVj
b3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSkgKyAi
ID09ICI7CiAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0UmlnaHQoKS0+dHJhdmVyc2UodGhpcyk7
Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGRUeXBlLT5n
ZXRGaWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkpOworICAgICAgICAgICAg
ICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksIG5vZGUtPmdldExl
ZnQoKS0+Z2V0VHlwZSgpKTsKIAotICAgICAgICAgICAgICAgIGlmIChpIDwgZmllbGRzLT5zaXpl
KCkgLSAxKQorICAgICAgICAgICAgICAgIGlmIChpIDwgZmllbGRzLnNpemUoKSAtIDEpCiAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAmJiAiOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTEyMzgsNyArMTI1Nyw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRB
Z2dyZWdhdGUoVmlzaXQgdmkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1JbnNpZGVGdW5j
dGlvbikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZl
KG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShu
b2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICJ7XG4i
OwogCiAgICAgICAgICAgICAgICAgbVNjb3BlRGVwdGgrKzsKQEAgLTEyNTUsNyArMTI3NCw3IEBA
IGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKIAogICAgICAgICAgICAg
Zm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHNpdCA9IG5vZGUtPmdldFNlcXVlbmNlKCku
YmVnaW4oKTsgc2l0ICE9IG5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHNpdCsrKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpzaXQpLT5nZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpzaXQpLT5nZXRM
aW5lKCkuZmlyc3RfbGluZSk7CiAKICAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMo
KnNpdCk7CiAKQEAgLTEyNjQsNyArMTI4Myw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dy
ZWdhdGUoVmlzaXQgdmkKIAogICAgICAgICAgICAgaWYgKG1JbnNpZGVGdW5jdGlvbikKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEVu
ZExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRM
aW5lKCkubGFzdF9saW5lKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgIn1cbiI7CiAKICAgICAg
ICAgICAgICAgICBtU2NvcGVEZXB0aC0tOwpAQCAtMTI4Myw3ICsxMzAyLDcgQEAgYm9vbCBPdXRw
dXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQogICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RydWN0b3IodmFyaWFibGUtPmdldFR5
cGUoKSwgc2NvcGVkU3RydWN0KHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSksIE5V
TEwpOworICAgICAgICAgICAgICAgICAgICBhZGRDb25zdHJ1Y3Rvcih2YXJpYWJsZS0+Z2V0VHlw
ZSgpLCBzY29wZWRTdHJ1Y3QodmFyaWFibGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+bmFtZSgp
KSwgTlVMTCk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCF2YXJp
YWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCkgfHwgdmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpLT5n
ZXRTeW1ib2woKSAhPSAiIikgICAvLyBWYXJpYWJsZSBkZWNsYXJhdGlvbgpAQCAtMTQwMSw3ICsx
NDIwLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbC0+Z2V0VHlwZSgpLmdl
dFN0cnVjdCgpKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBhZGRDb25zdHJ1Y3RvcihzeW1ib2wtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KHN5bWJvbC0+
Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFkZENvbnN0cnVjdG9yKHN5bWJvbC0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3Qoc3ltYm9sLT5n
ZXRUeXBlKCkuZ2V0U3RydWN0KCktPm5hbWUoKSksIE5VTEwpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8IGFyZ3VtZW50U3RyaW5nKHN5bWJvbCk7
CkBAIC0xNjUwLDggKzE2NjksOCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZp
c2l0IHZpCiAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJtYXQ0KCIsICIsICIsICIpIik7
CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RTdHJ1Y3Q6Ci0gICAgICAg
IGFkZENvbnN0cnVjdG9yKG5vZGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5vZGUtPmdldFR5
cGUoKS5nZXRUeXBlTmFtZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOwotICAgICAgICBvdXRw
dXRUcmlwbGV0KHZpc2l0LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdldFR5cGVOYW1l
KCkpICsgIl9jdG9yKCIsICIsICIsICIpIik7CisgICAgICAgIGFkZENvbnN0cnVjdG9yKG5vZGUt
PmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+bmFt
ZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0
LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5uYW1lKCkpICsgIl9j
dG9yKCIsICIsICIsICIpIik7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BMZXNzVGhh
bjogICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgPCAiLCAiKSIpOyAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOiAgICAgIG91dHB1dFRy
aXBsZXQodmlzaXQsICIoIiwgIiA+ICIsICIpIik7ICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTE3NDEsNyArMTc2MCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24oVmlzaXQg
dmkKIAogICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAgICAgIAotICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUo
bm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQgPDwgIntcbiI7CiAKICAg
ICAgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQpAQCAtMTc0OSwyMCArMTc2OCwyMCBAQCBi
b29sIE91dHB1dEhMU0w6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpCiAgICAgICAgICAgICB0cmF2
ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRM
aW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8
ICI7XG59XG4iOwogCiAgICAgICAgIGlmIChub2RlLT5nZXRGYWxzZUJsb2NrKCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIG91dCA8PCAiZWxzZVxuIjsKIAotICAgICAgICAgICAgb3V0cHV0TGlu
ZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7CisgICAgICAgICAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZp
cnN0X2xpbmUpOwogICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwogCi0gICAgICAgICAgICBvdXRw
dXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpKTsKKyAgICAg
ICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5l
KCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0
RmFsc2VCbG9jaygpKTsKIAotICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5n
ZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7CisgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0
aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAg
ICAgICAgb3V0IDw8ICI7XG59XG4iOwogICAgICAgICB9CiAgICAgfQpAQCAtMTc5NSw3ICsxODE0
LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsCiAgICAgewogICAg
ICAgICBvdXQgPDwgIntkb1xuIjsKIAotICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUt
PmdldExpbmUoKSk7CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgp
LmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQgPDwgIntcbiI7CiAgICAgfQogICAgIGVsc2UKQEAg
LTE4MjMsNyArMTg0Miw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRMb29wKFZpc2l0IHZpc2l0
LAogCiAgICAgICAgIG91dCA8PCAiKVxuIjsKICAgICAgICAgCi0gICAgICAgIG91dHB1dExpbmVE
aXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShu
b2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAie1xuIjsKICAgICB9
CiAKQEAgLTE4MzIsMTIgKzE4NTEsMTIgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlz
aXQgdmlzaXQsCiAgICAgICAgIHRyYXZlcnNlU3RhdGVtZW50cyhub2RlLT5nZXRCb2R5KCkpOwog
ICAgIH0KIAotICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICBv
dXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICBvdXQg
PDwgIjt9XG4iOwogCiAgICAgaWYgKG5vZGUtPmdldFR5cGUoKSA9PSBFTG9vcERvV2hpbGUpCiAg
ICAgewotICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENvbmRpdGlvbigpLT5n
ZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENvbmRpdGlv
bigpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAid2hpbGUoXG4iOwog
CiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKQEAgLTE5Nzcs
NyArMTk5Niw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcChUSW4KICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0
SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBzeW1ib2w7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCA9IGNvbnN0YW50LT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpWzBdLmdldElDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluaXRpYWwgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTk5OSw3
ICsyMDE4LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgogICAg
ICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50ICYmIGNv
bnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICBjb21wYXJhdG9yID0gdGVzdC0+Z2V0T3AoKTsKLSAgICAgICAgICAgICAg
ICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29u
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDAp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjAyMCw3
ICsyMDM5LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkg
PT0gRWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSBjb25zdGFudC0+Z2V0VW5p
b25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50
IHZhbHVlID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKG9wKQogICAgICAgICAgICAgICAgICAgICB7CkBAIC0yMTA5LDcgKzIxMjgsNyBAQCBi
b29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAgICAg
b3V0IDw8IGluY3JlbWVudDsKICAgICAgICAgICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGlu
ZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAie1xuIjsKIAogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5nZXRCb2R5KCkpCkBAIC0yMTE3LDcgKzIxMzYsNyBAQCBib29s
IE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmdldEJvZHkoKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAg
ICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xp
bmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAiO31cbiI7CiAKICAgICAgICAgICAgICAgICBp
ZiAoIWZpcnN0TG9vcEZyYWdtZW50KQpAQCAtMjIxMywyMiArMjIzMiwyMyBAQCBUU3RyaW5nIE91
dHB1dEhMU0w6OnR5cGVTdHJpbmcoY29uc3QgVFR5CiB7CiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNU
eXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsKLSAgICAgICAgaWYgKHR5cGUuZ2V0VHlwZU5hbWUo
KSAhPSAiIikKKyAgICAgICAgY29uc3QgVFN0cmluZyYgdHlwZU5hbWUgPSB0eXBlLmdldFN0cnVj
dCgpLT5uYW1lKCk7CisgICAgICAgIGlmICh0eXBlTmFtZSAhPSAiIikKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlLmdldFR5cGVOYW1lKCkpOworICAgICAg
ICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlTmFtZSk7CiAgICAgICAgIH0KICAgICAgICAg
ZWxzZSAgIC8vIE5hbWVsZXNzIHN0cnVjdHVyZSwgZGVmaW5lIGluIHBsYWNlCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnN0IFRUeXBlTGlzdCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0KCk7
CisgICAgICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgp
LT5maWVsZHMoKTsKIAogICAgICAgICAgICAgVFN0cmluZyBzdHJpbmcgPSAic3RydWN0XG4iCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRzW2ldLnR5cGU7Cisg
ICAgICAgICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCA9IGZpZWxkc1tpXTsKIAotICAgICAg
ICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3RyaW5nKGZpZWxkKSArICIgIiArIGRl
Y29yYXRlKGZpZWxkLmdldEZpZWxkTmFtZSgpKSArIGFycmF5U3RyaW5nKGZpZWxkKSArICI7XG4i
OworICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3RyaW5nKCpmaWVsZC0+
dHlwZSgpKSArICIgIiArIGRlY29yYXRlKGZpZWxkLT5uYW1lKCkpICsgYXJyYXlTdHJpbmcoKmZp
ZWxkLT50eXBlKCkpICsgIjtcbiI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHN0cmlu
ZyArPSAifSAiOwpAQCAtMjMwNCwxMSArMjMyNCwxMiBAQCBUU3RyaW5nIE91dHB1dEhMU0w6Omlu
aXRpYWxpemVyKGNvbnN0IFRUCiB7CiAgICAgVFN0cmluZyBzdHJpbmc7CiAKLSAgICBmb3IgKGlu
dCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCB0eXBlLmdldE9iamVjdFNpemUoKTsgY29tcG9u
ZW50KyspCisgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICBmb3Ig
KHNpemVfdCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCBzaXplOyBjb21wb25lbnQrKykKICAg
ICB7CiAgICAgICAgIHN0cmluZyArPSAiMCI7CiAKLSAgICAgICAgaWYgKGNvbXBvbmVudCA8IHR5
cGUuZ2V0T2JqZWN0U2l6ZSgpIC0gMSkKKyAgICAgICAgaWYgKGNvbXBvbmVudCArIDEgPCBzaXpl
KQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJpbmcgKz0gIiwgIjsKICAgICAgICAgfQpAQCAt
MjM0NywxMyArMjM2OCwxMyBAQCB2b2lkIE91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0
IFRUCiAgICAgICAgIHN0cnVjdHVyZSArPSAic3RydWN0ICIgKyBkZWNvcmF0ZShuYW1lKSArICJc
biIKICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCi0gICAgICAgIGNvbnN0IFRUeXBlTGlz
dCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0KCk7CisgICAgICAgIGNvbnN0IFRGaWVsZExpc3Qg
JmZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCiAgICAgICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRzW2ldLnR5cGU7CisgICAgICAgICAg
ICBjb25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ldOwogCi0gICAgICAgICAgICBzdHJ1Y3R1
cmUgKz0gIiAgICAiICsgdHlwZVN0cmluZyhmaWVsZCkgKyAiICIgKyBkZWNvcmF0ZUZpZWxkKGZp
ZWxkLmdldEZpZWxkTmFtZSgpLCB0eXBlKSArIGFycmF5U3RyaW5nKGZpZWxkKSArICI7XG4iOwor
ICAgICAgICAgICAgc3RydWN0dXJlICs9ICIgICAgIiArIHR5cGVTdHJpbmcoKmZpZWxkLT50eXBl
KCkpICsgIiAiICsgZGVjb3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCB0eXBlKSArIGFycmF5U3Ry
aW5nKCpmaWVsZC0+dHlwZSgpKSArICI7XG4iOwogICAgICAgICB9CiAKICAgICAgICAgc3RydWN0
dXJlICs9ICJ9O1xuIjsKQEAgLTIzNjUsNyArMjM4Niw3IEBAIHZvaWQgT3V0cHV0SExTTDo6YWRk
Q29uc3RydWN0b3IoY29uc3QgVFQKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAgICAgICAgICAgY3RvclBhcmFt
ZXRlcnMucHVzaF9iYWNrKCpmaWVsZHNbaV0udHlwZSk7CisgICAgICAgICAgICBjdG9yUGFyYW1l
dGVycy5wdXNoX2JhY2soKmZpZWxkc1tpXS0+dHlwZSgpKTsKICAgICAgICAgfQogICAgIH0KICAg
ICBlbHNlIGlmIChwYXJhbWV0ZXJzKQpAQCAtMjQ1OCwyNyArMjQ3OSwzMCBAQCB2b2lkIE91dHB1
dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0g
ICAgICAgIGludCByZW1haW5pbmdDb21wb25lbnRzID0gY3RvclR5cGUuZ2V0T2JqZWN0U2l6ZSgp
OwotICAgICAgICBpbnQgcGFyYW1ldGVySW5kZXggPSAwOworICAgICAgICBzaXplX3QgcmVtYWlu
aW5nQ29tcG9uZW50cyA9IGN0b3JUeXBlLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6ZV90
IHBhcmFtZXRlckluZGV4ID0gMDsKIAogICAgICAgICB3aGlsZSAocmVtYWluaW5nQ29tcG9uZW50
cyA+IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZwYXJhbWV0ZXIgPSBj
dG9yUGFyYW1ldGVyc1twYXJhbWV0ZXJJbmRleF07Ci0gICAgICAgICAgICBib29sIG1vcmVQYXJh
bWV0ZXJzID0gcGFyYW1ldGVySW5kZXggPCAoaW50KWN0b3JQYXJhbWV0ZXJzLnNpemUoKSAtIDE7
CisgICAgICAgICAgICBjb25zdCBzaXplX3QgcGFyYW1ldGVyU2l6ZSA9IHBhcmFtZXRlci5nZXRP
YmplY3RTaXplKCk7CisgICAgICAgICAgICBib29sIG1vcmVQYXJhbWV0ZXJzID0gcGFyYW1ldGVy
SW5kZXggKyAxIDwgY3RvclBhcmFtZXRlcnMuc2l6ZSgpOwogCiAgICAgICAgICAgICBjb25zdHJ1
Y3RvciArPSAieCIgKyBzdHIocGFyYW1ldGVySW5kZXgpOwogCiAgICAgICAgICAgICBpZiAocGFy
YW1ldGVyLmlzU2NhbGFyKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVtYWlu
aW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJlbWFpbmluZ0NvbXBvbmVudHMpOworICAgICAg
ICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6ZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5pc1ZlY3RvcigpKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmdDb21wb25lbnRzID09IHBhcmFt
ZXRlci5nZXRPYmplY3RTaXplKCkgfHwgbW9yZVBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAg
aWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPT0gcGFyYW1ldGVyU2l6ZSB8fCBtb3JlUGFyYW1ldGVy
cykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBv
bmVudHMgLT0gcGFyYW1ldGVyLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKHBhcmFtZXRlclNpemUgPD0gcmVtYWluaW5nQ29tcG9uZW50cyk7CisgICAgICAgICAg
ICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6ZTsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVtYWluaW5nQ29tcG9uZW50cyA8
IHBhcmFtZXRlci5nZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJl
bWFpbmluZ0NvbXBvbmVudHMgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFtZXRlci5nZXROb21p
bmFsU2l6ZSgpKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAocmVtYWluaW5nQ29tcG9uZW50cykKICAgICAgICAgICAgICAgICAgICAgewpAQCAtMjQ5NSw5
ICsyNTE5LDEwIEBAIHZvaWQgT3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFQKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5pc01hdHJpeCgpIHx8
IHBhcmFtZXRlci5nZXRTdHJ1Y3QoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQocmVtYWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpIHx8
IG1vcmVQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmVtYWluaW5nQ29tcG9u
ZW50cyA9PSBwYXJhbWV0ZXJTaXplIHx8IG1vcmVQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQocGFyYW1ldGVyU2l6ZSA8PSByZW1haW5pbmdDb21wb25lbnRzKTsKICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRzIC09IHBhcmFtZXRl
ci5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nQ29tcG9uZW50cyAt
PSBwYXJhbWV0ZXJTaXplOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBVTlJFQUNI
QUJMRSgpOwogCkBAIC0yNTM0LDE3ICsyNTU5LDE3IEBAIGNvbnN0IENvbnN0YW50VW5pb24gKk91
dHB1dEhMU0w6OndyaXRlQ28KIAogICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0
cnVjdCkKICAgICB7Ci0gICAgICAgIG91dCA8PCBzdHJ1Y3RMb29rdXAodHlwZS5nZXRUeXBlTmFt
ZSgpKSArICJfY3RvcigiOworICAgICAgICBvdXQgPDwgc3RydWN0TG9va3VwKHR5cGUuZ2V0U3Ry
dWN0KCktPm5hbWUoKSkgKyAiX2N0b3IoIjsKICAgICAgICAgCi0gICAgICAgIGNvbnN0IFRUeXBl
TGlzdCAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgY29uc3QgVEZpZWxk
TGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgaSsrKQorICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAgICAg
ICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOworICAg
ICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9IGZpZWxkc1tpXS0+dHlwZSgpOwogCiAg
ICAgICAgICAgICBjb25zdFVuaW9uID0gd3JpdGVDb25zdGFudFVuaW9uKCpmaWVsZFR5cGUsIGNv
bnN0VW5pb24pOwogCi0gICAgICAgICAgICBpZiAoaSAhPSBzdHJ1Y3R1cmUtPnNpemUoKSAtIDEp
CisgICAgICAgICAgICBpZiAoaSAhPSBmaWVsZHMuc2l6ZSgpIC0gMSkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKICAgICAgICAgICAgIH0KQEAgLTI1NTQsNyAr
MjU3OSw3IEBAIGNvbnN0IENvbnN0YW50VW5pb24gKk91dHB1dEhMU0w6OndyaXRlQ28KICAgICB9
CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW50IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUo
KTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKICAgICAgICAg
Ym9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAgICAgCiAgICAgICAgIGlmICh3cml0ZVR5
cGUpCkBAIC0yNTYyLDcgKzI1ODcsNyBAQCBjb25zdCBDb25zdGFudFVuaW9uICpPdXRwdXRITFNM
Ojp3cml0ZUNvCiAgICAgICAgICAgICBvdXQgPDwgdHlwZVN0cmluZyh0eXBlKSA8PCAiKCI7CiAg
ICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKywgY29uc3RV
bmlvbisrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKywgY29uc3RV
bmlvbisrKQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnN0VW5pb24tPmdldFR5
cGUoKSkKICAgICAgICAgICAgIHsKQEAgLTI2NTUsNyArMjY4MCw3IEBAIFRTdHJpbmcgT3V0cHV0
SExTTDo6ZGVjb3JhdGVVbmlmb3JtKGNvbnMKIAogVFN0cmluZyBPdXRwdXRITFNMOjpkZWNvcmF0
ZUZpZWxkKGNvbnN0IFRTdHJpbmcgJnN0cmluZywgY29uc3QgVFR5cGUgJnN0cnVjdHVyZSkKIHsK
LSAgICBpZiAoc3RydWN0dXJlLmdldFR5cGVOYW1lKCkuY29tcGFyZSgwLCAzLCAiZ2xfIikgIT0g
MCkKKyAgICBpZiAoc3RydWN0dXJlLmdldFN0cnVjdCgpLT5uYW1lKCkuY29tcGFyZSgwLCAzLCAi
Z2xfIikgIT0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBkZWNvcmF0ZShzdHJpbmcpOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNM
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091
dHB1dEhMU0wuaAkocmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBA
QCBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAgICAgYm9vbCBtVXNl
c1BvaW50Q29vcmQ7CiAgICAgYm9vbCBtVXNlc0Zyb250RmFjaW5nOwogICAgIGJvb2wgbVVzZXNQ
b2ludFNpemU7CisgICAgYm9vbCBtVXNlc0ZyYWdEZXB0aDsKICAgICBib29sIG1Vc2VzWG9yOwog
ICAgIGJvb2wgbVVzZXNNb2QxOwogICAgIGJvb2wgbVVzZXNNb2QydjsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcAko
cmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1BhcnNlSGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjIsNyArMjIsNyBAQAogLy8gTG9vayBh
dCBhICcuJyBmaWVsZCBzZWxlY3RvciBzdHJpbmcgYW5kIGNoYW5nZSBpdCBpbnRvIG9mZnNldHMK
IC8vIGZvciBhIHZlY3Rvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmll
bGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCB2ZWNTaXplLCBUVmVjdG9yRmllbGRz
JiBmaWVsZHMsIGludCBsaW5lKQorYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJzZVZlY3RvckZpZWxk
cyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYg
ZmllbGRzLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGZpZWxkcy5udW0gPSAoaW50
KSBjb21wU3RyaW5nLnNpemUoKTsKICAgICBpZiAoZmllbGRzLm51bSA+IDQpIHsKQEAgLTExNSw3
ICsxMTUsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKGNvCiAvLyBM
b29rIGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0cmluZyBhbmQgY2hhbmdlIGl0IGludG8gb2Zm
c2V0cwogLy8gZm9yIGEgbWF0cml4LgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VNYXRy
aXhGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IG1hdFNpemUsIFRNYXRyaXhG
aWVsZHMmIGZpZWxkcywgaW50IGxpbmUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4
RmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCBtYXRTaXplLCBUTWF0cml4Rmll
bGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgZmllbGRzLndob2xl
Um93ID0gZmFsc2U7CiAgICAgZmllbGRzLndob2xlQ29sID0gZmFsc2U7CkBAIC0xNzUsMjIgKzE3
NSwyNCBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnJlY292ZXIoKQogLy8KIC8vIFVzZWQgYnkgZmxl
eC9iaXNvbiB0byBvdXRwdXQgYWxsIHN5bnRheCBhbmQgcGFyc2luZyBlcnJvcnMuCiAvLwotdm9p
ZCBUUGFyc2VDb250ZXh0OjplcnJvcihUU291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29udGV4
dDo6ZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvKQogewogICAgIHBwOjpTb3VyY2VMb2Nh
dGlvbiBzcmNMb2M7Ci0gICAgRGVjb2RlU291cmNlTG9jKGxvYywgJnNyY0xvYy5maWxlLCAmc3Jj
TG9jLmxpbmUpOworICAgIHNyY0xvYy5maWxlID0gbG9jLmZpcnN0X2ZpbGU7CisgICAgc3JjTG9j
LmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKICAgICBkaWFnbm9zdGljcy53cml0ZUluZm8ocHA6OkRp
YWdub3N0aWNzOjpFUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFz
b24sIHRva2VuLCBleHRyYUluZm8pOwogCiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6d2Fybmlu
ZyhUU291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29udGV4dDo6d2FybmluZyhjb25zdCBUU291
cmNlTG9jJiBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVh
c29uLCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBleHRyYUluZm8pIHsKICAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwotICAg
IERlY29kZVNvdXJjZUxvYyhsb2MsICZzcmNMb2MuZmlsZSwgJnNyY0xvYy5saW5lKTsKKyAgICBz
cmNMb2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOworICAgIHNyY0xvYy5saW5lID0gbG9jLmZpcnN0
X2xpbmU7CiAgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9zdGljczo6V0FSTklO
RywKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFzb24sIHRva2VuLCBleHRy
YUluZm8pOwogfQpAQCAtMjAzLDcgKzIwNSw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dHJhY2Uo
Y29uc3QgY2hhciogc3QKIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBwbGFjZXMg
YXNzaWdubWVudHMgZG9uJ3Qgd29yay4KIC8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OmFzc2lnbkVy
cm9yKGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0
KQordm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwg
ImNhbm5vdCBjb252ZXJ0IGZyb20gJyIgPDwgcmlnaHQgPDwgIicgdG8gJyIgPDwgbGVmdCA8PCAi
JyI7CkBAIC0yMTQsNyArMjE2LDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcihp
bnQgbGluZQogLy8KIC8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxsIHBsYWNlcyB1bmFyeSBv
cGVyYXRpb25zIGRvbid0IHdvcmsuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJy
b3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpCit2b2lkIFRQYXJz
ZUNvbnRleHQ6OnVuYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFy
KiBvcCwgVFN0cmluZyBvcGVyYW5kKQogewogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5m
b1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBvcCA8
PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhbiBvcGVyYW5kIG9mIHR5cGUgIiA8PCBvcGVyYW5kIApA
QCAtMjI2LDcgKzIyOCw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKGludCBs
aW4KIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBiaW5hcnkgb3BlcmF0aW9ucyBk
b24ndCB3b3JrLgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihpbnQgbGlu
ZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCkKK3ZvaWQgVFBh
cnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBj
aGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAgIHN0ZDo6c3RyaW5n
c3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJh
dGlvbiAnIiA8PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhIGxlZnQtaGFuZCBvcGVyYW5k
IG9mIHR5cGUgJyIgPDwgbGVmdCAKQEAgLTIzNSw3ICsyMzcsNyBAQCB2b2lkIFRQYXJzZUNvbnRl
eHQ6OmJpbmFyeU9wRXJyb3IoaW50IGxpCiAgICAgZXJyb3IobGluZSwgIiB3cm9uZyBvcGVyYW5k
IHR5cGVzICIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7IAogfQogCi1ib29sIFRQYXJzZUNvbnRl
eHQ6OnByZWNpc2lvbkVycm9yQ2hlY2soaW50IGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBU
QmFzaWNUeXBlIHR5cGUpeworYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFzaWNUeXBl
IHR5cGUpewogICAgIGlmICghY2hlY2tzUHJlY2lzaW9uRXJyb3JzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgc3dpdGNoKCB0eXBlICl7CkBAIC0yNjMsNyArMjY1LDcgQEAgYm9vbCBUUGFy
c2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVj
ayhpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRlcm1UeXBlZCogbm9kZSkKK2Jvb2wgVFBh
cnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25z
dCBjaGFyKiBvcCwgVEludGVybVR5cGVkKiBub2RlKQogewogICAgIFRJbnRlcm1TeW1ib2wqIHN5
bU5vZGUgPSBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsKICAgICBUSW50ZXJtQmluYXJ5KiBiaW5h
cnlOb2RlID0gbm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7CkBAIC0yODYsNyArMjg4LDcgQEAgYm9v
bCBUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGludAogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBwID0gYWdnck5v
ZGUtPmdldFNlcXVlbmNlKCkuYmVnaW4oKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHAgIT0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHAr
KykgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSAoKnApLT5nZXRBc1R5cGVkKCkt
PmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gKCpwKS0+Z2V0QXNUeXBlZCgpLT5n
ZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgICAgICBv
ZmZzZXRbdmFsdWVdKys7ICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldFt2YWx1
ZV0gPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFsdWUg
b2Ygc3dpenpsZSBjYW5ub3QgaGF2ZSBkdXBsaWNhdGUgY29tcG9uZW50cyIsIG9wKTsKQEAgLTMx
Nyw3ICszMTksNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soaW50CiAg
ICAgY2FzZSBFdnFBdHRyaWJ1dGU6ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYW4gYXR0
cmlidXRlIjsgICBicmVhazsKICAgICBjYXNlIEV2cVVuaWZvcm06ICAgICAgICBtZXNzYWdlID0g
ImNhbid0IG1vZGlmeSBhIHVuaWZvcm0iOyAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxVmFyeWlu
Z0luOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGEgdmFyeWluZyI7ICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBFdnFJbnB1dDogICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYW4g
aW5wdXQiOyAgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb29yZDogICAgICBtZXNzYWdl
ID0gImNhbid0IG1vZGlmeSBnbF9GcmFnQ29vcmQiOyAgIGJyZWFrOwogICAgIGNhc2UgRXZxRnJv
bnRGYWNpbmc6ICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX0Zyb250RmFjaW5nIjsgYnJl
YWs7CiAgICAgY2FzZSBFdnFQb2ludENvb3JkOiAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkg
Z2xfUG9pbnRDb29yZCI7ICBicmVhazsKQEAgLTQwOSw3ICs0MTAsNyBAQCBib29sIFRQYXJzZUNv
bnRleHQ6OmludGVnZXJFcnJvckNoZWNrKFRJCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3
YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpnbG9iYWxFcnJvckNoZWNrKGlu
dCBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pCitib29sIFRQYXJzZUNvbnRl
eHQ6Omdsb2JhbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgYm9vbCBnbG9iYWws
IGNvbnN0IGNoYXIqIHRva2VuKQogewogICAgIGlmIChnbG9iYWwpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTQyOCw3ICs0MjksNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVycm9y
Q2hlY2soaW50CiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8v
Ci1ib29sIFRQYXJzZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3Qg
VFN0cmluZyYgaWRlbnRpZmllcikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCiB7
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc2VydmVkRXJyTXNnID0gInJlc2VydmVkIGJ1aWx0
LWluIG5hbWUiOwogICAgIGlmICghc3ltYm9sVGFibGUuYXRCdWlsdEluTGV2ZWwoKSkgewpAQCAt
NDY2LDcgKzQ2Nyw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNrKGkK
IC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGluIGNvbnN0cnVjdGlv
bi4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQgbGlu
ZSwgVEludGVybU5vZGUqIG5vZGUsIFRGdW5jdGlvbiYgZnVuY3Rpb24sIFRPcGVyYXRvciBvcCwg
VFR5cGUqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogbm9kZSwgVEZ1bmN0aW9uJiBmdW5j
dGlvbiwgVE9wZXJhdG9yIG9wLCBUVHlwZSogdHlwZSkKIHsKICAgICAqdHlwZSA9IGZ1bmN0aW9u
LmdldFJldHVyblR5cGUoKTsKIApAQCAtNDg3LDcgKzQ4OCw3IEBAIGJvb2wgVFBhcnNlQ29udGV4
dDo6Y29uc3RydWN0b3JFcnJvckNoZWMKICAgICAvLyBhZ2FpbiwgdGhlcmUgaXMgYW4gZXh0cmEg
YXJndW1lbnQsIHNvICdvdmVyZnVsbCcgd2lsbCBiZWNvbWUgdHJ1ZS4KICAgICAvLwogCi0gICAg
aW50IHNpemUgPSAwOworICAgIHNpemVfdCBzaXplID0gMDsKICAgICBib29sIGNvbnN0VHlwZSA9
IHRydWU7CiAgICAgYm9vbCBmdWxsID0gZmFsc2U7CiAgICAgYm9vbCBvdmVyRnVsbCA9IGZhbHNl
OwpAQCAtNTM0LDcgKzUzNSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJv
ckNoZWMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGlmIChvcCA9PSBF
T3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXkoKSAmJiBpbnQodHlwZS0+Z2V0U3Ry
dWN0KCktPnNpemUoKSkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSB7CisgICAgaWYgKG9w
ID09IEVPcENvbnN0cnVjdFN0cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgpICYmIGludCh0eXBlLT5n
ZXRTdHJ1Y3QoKS0+ZmllbGRzKCkuc2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkp
IHsKICAgICAgICAgZXJyb3IobGluZSwgIk51bWJlciBvZiBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJz
IGRvZXMgbm90IG1hdGNoIHRoZSBudW1iZXIgb2Ygc3RydWN0dXJlIGZpZWxkcyIsICJjb25zdHJ1
Y3RvciIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC01NjgsNyArNTY5LDcgQEAg
Ym9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlYwogLy8KIC8vIHJldHVybnMg
dHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojp2b2lkRXJy
b3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgVFB1Ymxp
Y1R5cGUmIHB1YlR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFRQdWJs
aWNUeXBlJiBwdWJUeXBlKQogewogICAgIGlmIChwdWJUeXBlLnR5cGUgPT0gRWJ0Vm9pZCkgewog
ICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCBpZGVudGlm
aWVyLmNfc3RyKCkpOwpAQCAtNTgyLDcgKzU4Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6dm9p
ZEVycm9yQ2hlY2soaW50IGwKIC8vCiAvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBlcnJv
cgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0
IFRJbnRlcm1UeXBlZCogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEludGVybVR5cGVkKiB0eXBlKQogewogICAg
IGlmICh0eXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRCb29sIHx8IHR5cGUtPmlzQXJyYXkoKSB8
fCB0eXBlLT5pc01hdHJpeCgpIHx8IHR5cGUtPmlzVmVjdG9yKCkpIHsKICAgICAgICAgZXJyb3Io
bGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3RlZCIsICIiKTsKQEAgLTU5Niw3ICs1OTcs
NyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGludCBsCiAvLwogLy8gcmV0
dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmJv
b2xFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpCitib29sIFRQ
YXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0
IFRQdWJsaWNUeXBlJiBwVHlwZSkKIHsKICAgICBpZiAocFR5cGUudHlwZSAhPSBFYnRCb29sIHx8
IHBUeXBlLmFycmF5IHx8IHBUeXBlLm1hdHJpeCB8fCAocFR5cGUuc2l6ZSA+IDEpKSB7CiAgICAg
ICAgIGVycm9yKGxpbmUsICJib29sZWFuIGV4cHJlc3Npb24gZXhwZWN0ZWQiLCAiIik7CkBAIC02
MDYsNyArNjA3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhpbnQgbAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJyb3JD
aGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiByZWFz
b24pCitib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciogcmVhc29uKQog
ewogICAgIGlmIChwVHlwZS50eXBlID09IEVidFN0cnVjdCkgewogICAgICAgICBpZiAoY29udGFp
bnNTYW1wbGVyKCpwVHlwZS51c2VyRGVmKSkgewpAQCAtNjI1LDcgKzYyNiw3IEBAIGJvb2wgVFBh
cnNlQ29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2soaW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGluZSwg
Y29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0OjpzdHJ1Y3RRdWFs
aWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBl
JiBwVHlwZSkKIHsKICAgICBpZiAoKHBUeXBlLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwg
cFR5cGUucXVhbGlmaWVyID09IEV2cVZhcnlpbmdPdXQgfHwgcFR5cGUucXVhbGlmaWVyID09IEV2
cUF0dHJpYnV0ZSkgJiYKICAgICAgICAgcFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpIHsKQEAgLTY0
MCw3ICs2NDEsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9yCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBs
ZXJFcnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgY29uc3QgVFR5cGUm
IHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBjb25zdCBUVHlwZSYg
dHlwZSkKIHsKICAgICBpZiAoKHF1YWxpZmllciA9PSBFdnFPdXQgfHwgcXVhbGlmaWVyID09IEV2
cUluT3V0KSAmJiAKICAgICAgICAgICAgICB0eXBlLmdldEJhc2ljVHlwZSgpICE9IEVidFN0cnVj
dCAmJiBJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpIHsKQEAgLTY1Nyw5ICs2NTgsOSBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxlcihUVHlwCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7Ci0g
ICAgICAgIFRUeXBlTGlzdCYgc3RydWN0dXJlID0gKnR5cGUuZ2V0U3RydWN0KCk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3RydWN0dXJlLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpzdHJ1Y3R1cmVbaV0udHlwZSkpCisgICAg
ICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxlcigqZmllbGRzW2ldLT50eXBlKCkp
KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtNjcy
LDcgKzY3Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29udGFpbnNTYW1wbGVyKFRUeXAKIC8v
CiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNl
Q29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVybVR5cGVkKiBleHBy
LCBpbnQmIHNpemUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVycm9yQ2hlY2soY29u
c3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybVR5cGVkKiBleHByLCBpbnQmIHNpemUpCiB7CiAg
ICAgVEludGVybUNvbnN0YW50VW5pb24qIGNvbnN0YW50ID0gZXhwci0+Z2V0QXNDb25zdGFudFVu
aW9uKCk7CiAgICAgaWYgKGNvbnN0YW50ID09IDAgfHwgY29uc3RhbnQtPmdldEJhc2ljVHlwZSgp
ICE9IEVidEludCkgewpAQCAtNjgwLDcgKzY4MSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YXJy
YXlTaXplRXJyb3JDaGVjaygKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc2l6
ZSA9IGNvbnN0YW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAgICBz
aXplID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgIGlmIChzaXplIDw9IDApIHsKICAg
ICAgICAgZXJyb3IobGluZSwgImFycmF5IHNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIi
LCAiIik7CkBAIC02OTYsNyArNjk3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNpemVF
cnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4KIC8v
Ci1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGluZSwg
VFB1YmxpY1R5cGUgdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlRdWFsaWZpZXJFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCiB7CiAgICAg
aWYgKCh0eXBlLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpIHx8ICh0eXBlLnF1YWxpZmllciA9
PSBFdnFDb25zdCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBkZWNsYXJlIGFycmF5
cyBvZiB0aGlzIHF1YWxpZmllciIsIFRUeXBlKHR5cGUpLmdldENvbXBsZXRlU3RyaW5nKCkuY19z
dHIoKSk7CkBAIC03MTEsNyArNzEyLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVF1YWxp
ZmllckVycm9yQwogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4KIC8v
Ci1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soaW50IGxpbmUsIFRQdWJs
aWNUeXBlIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soY29u
c3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKIHsKICAgICAvLwogICAgIC8v
IENhbiB0aGUgdHlwZSBiZSBhbiBhcnJheT8KQEAgLTczMiw3ICs3MzMsNyBAQCBib29sIFRQYXJz
ZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVj
ayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlh
YmxlKiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSB0eXBl
LCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICAvLwogICAgIC8vIERvbid0IGNoZWNrIGZv
ciByZXNlcnZlZCB3b3JkIHVzZSB1bnRpbCBhZnRlciB3ZSBrbm93IGl0J3Mgbm90IGluIHRoZSBz
eW1ib2wgdGFibGUsCkBAIC03NzcsMTYgKzc3OCw2IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YXJy
YXlFcnJvckNoZWNrKGludAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAot
ICAgICAgICBUVHlwZSogdCA9IHZhcmlhYmxlLT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpOwot
ICAgICAgICB3aGlsZSAodCAhPSAwKSB7Ci0gICAgICAgICAgICBpZiAodC0+Z2V0TWF4QXJyYXlT
aXplKCkgPiB0eXBlLmFycmF5U2l6ZSkgewotICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICJo
aWdoZXIgaW5kZXggdmFsdWUgYWxyZWFkeSB1c2VkIGZvciB0aGUgYXJyYXkiLCBpZGVudGlmaWVy
LmNfc3RyKCkpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgdC0+c2V0QXJyYXlTaXplKHR5cGUuYXJyYXlTaXplKTsKLSAgICAgICAgICAg
IHQgPSB0LT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpOwotICAgICAgICB9Ci0KICAgICAgICAg
aWYgKHR5cGUuYXJyYXlTaXplKQogICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRB
cnJheVNpemUodHlwZS5hcnJheVNpemUpOwogICAgIH0gCkBAIC03OTcsNTYgKzc4OCwxMiBAQCBi
b29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayhpbnQKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlTZXRNYXhTaXplKFRJbnRlcm1TeW1ib2wg
Km5vZGUsIFRUeXBlKiB0eXBlLCBpbnQgc2l6ZSwgYm9vbCB1cGRhdGVGbGFnLCBUU291cmNlTG9j
IGxpbmUpCi17Ci0gICAgYm9vbCBidWlsdEluID0gZmFsc2U7Ci0gICAgVFN5bWJvbCogc3ltYm9s
ID0gc3ltYm9sVGFibGUuZmluZChub2RlLT5nZXRTeW1ib2woKSwgJmJ1aWx0SW4pOwotICAgIGlm
IChzeW1ib2wgPT0gMCkgewotICAgICAgICBlcnJvcihsaW5lLCAiIHVuZGVjbGFyZWQgaWRlbnRp
ZmllciIsIG5vZGUtPmdldFN5bWJvbCgpLmNfc3RyKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0gICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+
KHN5bWJvbCk7Ci0KLSAgICB0eXBlLT5zZXRBcnJheUluZm9ybWF0aW9uVHlwZSh2YXJpYWJsZS0+
Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSk7Ci0gICAgdmFyaWFibGUtPnVwZGF0ZUFycmF5SW5m
b3JtYXRpb25UeXBlKHR5cGUpOwotCi0gICAgLy8gc3BlY2lhbCBjYXNpbmcgdG8gdGVzdCBpbmRl
eCB2YWx1ZSBvZiBnbF9GcmFnRGF0YS4gSWYgdGhlIGFjY2Vzc2VkIGluZGV4IGlzID49IGdsX01h
eERyYXdCdWZmZXJzCi0gICAgLy8gaXRzIGFuIGVycm9yCi0gICAgaWYgKG5vZGUtPmdldFN5bWJv
bCgpID09ICJnbF9GcmFnRGF0YSIpIHsKLSAgICAgICAgVFN5bWJvbCogZnJhZ0RhdGEgPSBzeW1i
b2xUYWJsZS5maW5kKCJnbF9NYXhEcmF3QnVmZmVycyIsICZidWlsdEluKTsKLSAgICAgICAgQVNT
RVJUKGZyYWdEYXRhKTsKLQotICAgICAgICBpbnQgZnJhZ0RhdGFWYWx1ZSA9IHN0YXRpY19jYXN0
PFRWYXJpYWJsZSo+KGZyYWdEYXRhKS0+Z2V0Q29uc3RQb2ludGVyKClbMF0uZ2V0SUNvbnN0KCk7
Ci0gICAgICAgIGlmIChmcmFnRGF0YVZhbHVlIDw9IHNpemUpIHsKLSAgICAgICAgICAgIGVycm9y
KGxpbmUsICIiLCAiWyIsICJnbF9GcmFnRGF0YSBjYW4gb25seSBoYXZlIGEgbWF4IGFycmF5IHNp
emUgb2YgdXAgdG8gZ2xfTWF4RHJhd0J1ZmZlcnMiKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gd2UgZG9udCB3YW50IHRvIHVwZGF0ZSB0aGUg
bWF4QXJyYXlTaXplIHdoZW4gdGhpcyBmbGFnIGlzIG5vdCBzZXQsIHdlIGp1c3Qgd2FudCB0byBp
bmNsdWRlIHRoaXMgCi0gICAgLy8gbm9kZSB0eXBlIGluIHRoZSBjaGFpbiBvZiBub2RlIHR5cGVz
IHNvIHRoYXQgaXRzIHVwZGF0ZWQgd2hlbiBhIGhpZ2hlciBtYXhBcnJheVNpemUgY29tZXMgaW4u
Ci0gICAgaWYgKCF1cGRhdGVGbGFnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzaXpl
Kys7Ci0gICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRNYXhBcnJheVNpemUoc2l6ZSk7Ci0gICAg
dHlwZS0+c2V0TWF4QXJyYXlTaXplKHNpemUpOwotICAgIFRUeXBlKiB0dCA9IHR5cGU7Ci0KLSAg
ICB3aGlsZSh0dC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSAhPSAwKSB7Ci0gICAgICAgIHR0
ID0gdHQtPmdldEFycmF5SW5mb3JtYXRpb25UeXBlKCk7Ci0gICAgICAgIHR0LT5zZXRNYXhBcnJh
eVNpemUoc2l6ZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiAvLwogLy8gRW5m
b3JjZSBub24taW5pdGlhbGl6ZXIgdHlwZS9xdWFsaWZpZXIgcnVsZXMuCiAvLwogLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6Om5v
bkluaXRDb25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJs
aWNUeXBlJiB0eXBlLCBib29sIGFycmF5KQorYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29u
c3RFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIs
IFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KQogewogICAgIGlmICh0eXBlLnF1YWxpZmll
ciA9PSBFdnFDb25zdCkKICAgICB7CkBAIC04NzgsNyArODI1LDcgQEAgYm9vbCBUUGFyc2VDb250
ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZQogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3
YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhp
bnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIFRWYXJpYWJs
ZSomIHZhcmlhYmxlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlw
ZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCiB7CiAgICAgaWYgKHJlc2VydmVkRXJyb3JDaGVjayhs
aW5lLCBpZGVudGlmaWVyKSkKICAgICAgICAgcmVjb3ZlcigpOwpAQCAtODk4LDcgKzg0NSw3IEBA
IGJvb2wgVFBhcnNlQ29udGV4dDo6bm9uSW5pdEVycm9yQ2hlY2soaW4KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGludCBsaW5lLCBU
UXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5cGUqIHR5
cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwg
VFR5cGUqIHR5cGUpCiB7ICAgIAogICAgIGlmIChxdWFsaWZpZXIgIT0gRXZxQ29uc3QgJiYgcXVh
bGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgewogICAgICAgICBlcnJvcihsaW5lLCAicXVhbGlmaWVy
IG5vdCBhbGxvd2VkIG9uIGZ1bmN0aW9uIHBhcmFtZXRlciIsIGdldFF1YWxpZmllclN0cmluZyhx
dWFsaWZpZXIpKTsKQEAgLTkxNyw3ICs4NjQsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFt
RXJyb3JDaGVjayhpbnQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4
dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgZXh0ZW5zaW9u
KQorYm9vbCBUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICBjb25zdCBURXh0ZW5z
aW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZpb3IoKTsKICAgICBURXh0
ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBleHRCZWhhdmlvci5maW5kKGV4
dGVuc2lvbi5jX3N0cigpKTsKQEAgLTk0NSwyMCArODkyLDYgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjpzdXBwb3J0c0V4dGVuc2lvbihjbwogICAgIHJldHVybiAoaXRlciAhPSBleHRiZWhhdmlvci5l
bmQoKSk7CiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6aGFuZGxlRXh0ZW5zaW9uRGlyZWN0aXZl
KGludCBsaW5lLCBjb25zdCBjaGFyKiBleHROYW1lLCBjb25zdCBjaGFyKiBiZWhhdmlvcikKLXsK
LSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwotICAgIERlY29kZVNvdXJjZUxvYyhsaW5lLCAm
bG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGlyZWN0aXZlSGFuZGxlci5oYW5kbGVFeHRlbnNp
b24obG9jLCBleHROYW1lLCBiZWhhdmlvcik7Ci19Ci0KLXZvaWQgVFBhcnNlQ29udGV4dDo6aGFu
ZGxlUHJhZ21hRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFy
KiB2YWx1ZSkKLXsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwotICAgIERlY29kZVNvdXJj
ZUxvYyhsaW5lLCAmbG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGlyZWN0aXZlSGFuZGxlci5o
YW5kbGVQcmFnbWEobG9jLCBuYW1lLCB2YWx1ZSk7Ci19Ci0KIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwogLy8KIC8vIE5vbi1FcnJvcnMuCkBAIC05NzAsNyArOTAzLDcgQEAgdm9pZCBUUGFyc2VD
b250ZXh0OjpoYW5kbGVQcmFnbWFEaXJlY3RpdgogLy8KIC8vIFJldHVybiB0aGUgZnVuY3Rpb24g
c3ltYm9sIGlmIGZvdW5kLCBvdGhlcndpc2UgMC4KIC8vCi1jb25zdCBURnVuY3Rpb24qIFRQYXJz
ZUNvbnRleHQ6OmZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBib29sICpi
dWlsdEluKQorY29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuY3Rpb24oY29u
c3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBib29sICpidWlsdEluKQogewog
ICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hldGhlciB0aGUg
ZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgogICAgIC8vIGhpZGRlbiBieSBhIHZhcmlhYmxlIG5hbWUg
b3Igc3RydWN0IHR5cGVuYW1lLgpAQCAtOTkyLDExICs5MjUsMzIgQEAgY29uc3QgVEZ1bmN0aW9u
KiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuYwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBU
RnVuY3Rpb24qPihzeW1ib2wpOwogfQogCitib29sIFRQYXJzZUNvbnRleHQ6OmlzVmFyaWFibGVC
dWlsdEluKGNvbnN0IFRWYXJpYWJsZSogdmFyKQoreworICAgIGJvb2wgYnVpbHRJbiA9IGZhbHNl
OworICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hldGhlciB0
aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgorICAgIC8vIGhpZGRlbiBieSBhIHZhcmlhYmxlIG5h
bWUgb3Igc3RydWN0IHR5cGVuYW1lLgorICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9IHN5bWJv
bFRhYmxlLmZpbmQodmFyLT5nZXROYW1lKCksICZidWlsdEluKTsKKyAgICBpZiAoc3ltYm9sID09
IDApIHsKKyAgICAgICAgc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZCh2YXItPmdldE1hbmdsZWRO
YW1lKCksICZidWlsdEluKTsKKyAgICB9CisKKyAgICBpZiAoc3ltYm9sID09IDApIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghc3ltYm9sLT5pc1ZhcmlhYmxlKCkp
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBidWlsdEluOwor
fQorCiAvLwogLy8gSW5pdGlhbGl6ZXJzIHNob3cgdXAgaW4gc2V2ZXJhbCBwbGFjZXMgaW4gdGhl
IGdyYW1tYXIuICBIYXZlIG9uZSBzZXQgb2YKIC8vIGNvZGUgdG8gaGFuZGxlIHRoZW0gaGVyZS4K
IC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihUU291cmNlTG9jIGxp
bmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlwZSwgCitib29sIFRQYXJz
ZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3Ry
aW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbml0aWFsaXplciwgVEludGVybU5v
ZGUqJiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUqIHZhcmlhYmxlKQogewogICAgIFRUeXBlIHR5cGUg
PSBUVHlwZShwVHlwZSk7CkBAIC0xMDQ4LDEzICsxMDAyLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjpleGVjdXRlSW5pdGlhbGl6ZXIoVAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgeyAKLSAg
ICAgICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29uc3RQ
b2ludGVyKCk7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlLmdldE9iamVjdFNpemUoKSA9PSAxICYm
IHR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgICAgICAgICAgKnVu
aW9uQXJyYXkgPSAoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpKVswXTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
dmFyaWFibGUtPnNoYXJlQ29uc3RQb2ludGVyKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5p
b24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg
ICB2YXJpYWJsZS0+c2hhcmVDb25zdFBvaW50ZXIoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRV
bmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKTsKICAgICAgICAgfSBlbHNlIGlmIChpbml0
aWFsaXplci0+Z2V0QXNTeW1ib2xOb2RlKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2wq
IHN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQoaW5pdGlhbGl6ZXItPmdldEFzU3ltYm9sTm9kZSgp
LT5nZXRTeW1ib2woKSk7CiAgICAgICAgICAgICBjb25zdCBUVmFyaWFibGUqIHRWYXIgPSBzdGF0
aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOwpAQCAtMTEwOCwxNiArMTA1NiwxNiBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QoVEluCiAvLwogLy8gUmV0dXJu
cyAwIGZvciBhbiBlcnJvciBvciB0aGUgY29uc3RydWN0ZWQgbm9kZSAoYWdncmVnYXRlIG9yIHR5
cGVkKSBmb3Igbm8gZXJyb3IuCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRD
b25zdHJ1Y3RvcihUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRv
ciBvcCwgVEZ1bmN0aW9uKiBmbkNhbGwsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRU
eXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRGdW5jdGlvbiogZm5DYWxsLCBjb25zdCBUU291cmNl
TG9jJiBsaW5lKQogewogICAgIGlmIChub2RlID09IDApCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgVEludGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOwog
ICAgIAotICAgIFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyVHlwZXM7CisgICAgVEZp
ZWxkTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyRmllbGRzOwogICAgIGlmIChvcCA9PSBFT3BD
b25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgIG1lbWJlclR5cGVzID0gdHlwZS0+Z2V0U3RydWN0KCkt
PmJlZ2luKCk7CisgICAgICAgIG1lbWJlckZpZWxkcyA9IHR5cGUtPmdldFN0cnVjdCgpLT5maWVs
ZHMoKS5iZWdpbigpOwogICAgIAogICAgIFRUeXBlIGVsZW1lbnRUeXBlID0gKnR5cGU7CiAgICAg
aWYgKHR5cGUtPmlzQXJyYXkoKSkKQEAgLTExMzksNyArMTA4Nyw3IEBAIFRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkK
ICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgJmVsZW1lbnRUeXBl
LCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKICAgICAgICAgZWxzZSBpZiAob3AgPT0gRU9w
Q29uc3RydWN0U3RydWN0KQotICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdChu
b2RlLCAoKm1lbWJlclR5cGVzKS50eXBlLCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKKyAg
ICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgKCptZW1iZXJGaWVsZHMp
LT50eXBlKCksIDEsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBvcCwgbm9kZSwgbm9kZS0+
Z2V0TGluZSgpLCBmYWxzZSk7CiAKQEAgLTExNzAsNyArMTExOCw3IEBAIFRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkK
ICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsICZlbGVtZW50VHlwZSwg
cGFyYW1Db3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRydWUpOwogICAgICAgICBlbHNlIGlmIChv
cCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0
U3RydWN0KCpwLCAobWVtYmVyVHlwZXNbcGFyYW1Db3VudF0pLnR5cGUsIHBhcmFtQ291bnQrMSwg
bm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RT
dHJ1Y3QoKnAsIG1lbWJlckZpZWxkc1twYXJhbUNvdW50XS0+dHlwZSgpLCBwYXJhbUNvdW50KzEs
IG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5ld05v
ZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCAqcCwgbm9kZS0+Z2V0TGluZSgpLCB0cnVl
KTsKICAgICAgICAgCkBAIC0xMjE2LDcgKzExNjQsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNv
bnRleHQ6OmZvbGRDb25zdENvCiAvLwogLy8gUmV0dXJucyAwIGZvciBhbiBlcnJvciBvciB0aGUg
Y29uc3RydWN0ZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0
cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUq
IG5vZGUsIFRTb3VyY2VMb2MgbGluZSwgYm9vbCBzdWJzZXQpCitUSW50ZXJtVHlwZWQqIFRQYXJz
ZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBv
cCwgVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0
KQogewogICAgIFRJbnRlcm1UeXBlZCogbmV3Tm9kZTsKICAgICBUT3BlcmF0b3IgYmFzaWNPcDsK
QEAgLTEyNzgsNyArMTIyNiw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3Ry
dWN0QnUKIC8vCiAvLyBSZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9yIHRoZSBpbnB1dCBub2RlIGl0
c2VsZiBpZiB0aGUgZXhwZWN0ZWQgYW5kIHRoZSBnaXZlbiBwYXJhbWV0ZXIgdHlwZXMgbWF0Y2gu
CiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QoVEludGVy
bU5vZGUqIG5vZGUsIFRUeXBlKiB0eXBlLCBpbnQgcGFyYW1Db3VudCwgVFNvdXJjZUxvYyBsaW5l
LCBib29sIHN1YnNldCkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0U3Ry
dWN0KFRJbnRlcm1Ob2RlKiBub2RlLCBUVHlwZSogdHlwZSwgaW50IHBhcmFtQ291bnQsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQogewogICAgIGlmICgqdHlwZSA9PSBub2Rl
LT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKSkgewogICAgICAgICBpZiAoc3Vic2V0KQpAQCAtMTMw
NSw3ICsxMjUzLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdAog
Ly8gbm9kZSBvciBpdCBjb3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRyZWUgcmVwcmVzZW50YXRp
b24gb2YgYWNjZXNzaW5nIGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVjdHVyZSBvciBjb2x1bW4g
b2YgCiAvLyBhIGNvbnN0YW50IG1hdHJpeC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRl
eHQ6OmFkZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIFRJbnRlcm1UeXBl
ZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojph
ZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBUSW50ZXJtVHlwZWQqIG5v
ZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0eXBlZE5v
ZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5n
ZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTEzMTMsNyArMTI2MSw2IEBAIFRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
OwogICAgIGlmICh0ZW1wQ29uc3RhbnROb2RlKSB7CiAgICAgICAgIHVuaW9uQXJyYXkgPSB0ZW1w
Q29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAgICAgICBBU1NFUlQodW5p
b25BcnJheSk7CiAKICAgICAgICAgaWYgKCF1bmlvbkFycmF5KSB7CiAgICAgICAgICAgICByZXR1
cm4gbm9kZTsKQEAgLTEzMjgsNyArMTI3NSw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4
dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gbmV3IENvbnN0
YW50VW5pb25bZmllbGRzLm51bV07CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpZWxkcy5u
dW07IGkrKykgewotICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0gPj0gbm9kZS0+Z2V0VHlw
ZSgpLmdldE9iamVjdFNpemUoKSkgeworICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0gPj0g
bm9kZS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkpIHsKICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8
PCAidmVjdG9yIGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgZmllbGRzLm9mZnNl
dHNbaV0gPDwgIiciOwogICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJ
bmZvU3RyZWFtLnN0cigpOwpAQCAtMTM1MCw3ICsxMjk3LDcgQEAgVEludGVybVR5cGVkKiBUUGFy
c2VDb250ZXh0OjphZGRDb25zdFZlYwogLy8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBi
ZSBhIHN5bWJvbCBub2RlIChtWzBdIHdoZXJlIG0gaXMgYSBjb25zdGFudCBtYXRyaXgpdGhhdCBy
ZXByZXNlbnRzIGEgCiAvLyBjb25zdGFudCBtYXRyaXggb3IgaXQgY291bGQgYmUgdGhlIHRyZWUg
cmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnN0YW50IG1hdHJpeCAocy5tMVswXSB3aGVyZSBzIGlz
IGEgY29uc3RhbnQgc3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
YWRkQ29uc3RNYXRyaXhOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBUU291cmNl
TG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9k
ZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkK
IHsKICAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZTsKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlv
biogdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwpAQCAtMTM4
NSw3ICsxMzMyLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdE1hdAog
Ly8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChhWzBdIHdo
ZXJlIGEgaXMgYSBjb25zdGFudCBhcnJheSl0aGF0IHJlcHJlc2VudHMgYSAKIC8vIGNvbnN0YW50
IGFycmF5IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25z
dGFudCBhcnJheSAocy5hMVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQogLy8K
LVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4
LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVFBh
cnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5v
ZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0eXBlZE5v
ZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5n
ZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTE0MDEsOSArMTM0OCw4IEBAIFRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnIKICAgICAgICAgaW5kZXggPSAwOwogICAgIH0KIAot
ICAgIGludCBhcnJheUVsZW1lbnRTaXplID0gYXJyYXlFbGVtZW50VHlwZS5nZXRPYmplY3RTaXpl
KCk7Ci0KICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgeworICAgICAgICAgc2l6ZV90IGFycmF5
RWxlbWVudFNpemUgPSBhcnJheUVsZW1lbnRUeXBlLmdldE9iamVjdFNpemUoKTsKICAgICAgICAg
IENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpOwogICAgICAgICAgdHlwZWROb2RlID0gaW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24oJnVuaW9uQXJyYXlbYXJyYXlFbGVtZW50U2l6ZSAqIGluZGV4XSwgdGVtcENvbnN0
YW50Tm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsKICAgICB9IGVsc2UgewpAQCAtMTQyMiwyMiArMTM2
OCwyMSBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0QXJyCiAvLyBJZiB0
aGVyZSBpcyBhbiBlbWJlZGRlZC9uZXN0ZWQgc3RydWN0LCBpdCBhcHByb3ByaWF0ZWx5IGNhbGxz
IGFkZENvbnN0U3RydWN0TmVzdGVkIG9yIGFkZENvbnN0U3RydWN0RnJvbUFnZ3IKIC8vIGZ1bmN0
aW9uIGFuZCByZXR1cm5zIHRoZSBwYXJzZS10cmVlIHdpdGggdGhlIHZhbHVlcyBvZiB0aGUgZW1i
ZWRkZWQvbmVzdGVkIHN0cnVjdC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFk
ZENvbnN0U3RydWN0KFRTdHJpbmcmIGlkZW50aWZpZXIsIFRJbnRlcm1UeXBlZCogbm9kZSwgVFNv
dXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVj
dChUU3RyaW5nJiBpZGVudGlmaWVyLCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUpCiB7Ci0gICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSBub2RlLT5nZXRUeXBl
KCkuZ2V0U3RydWN0KCk7Ci0gICAgVEludGVybVR5cGVkICp0eXBlZE5vZGU7Ci0gICAgaW50IGlu
c3RhbmNlU2l6ZSA9IDA7Ci0gICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKLSAgICBUSW50ZXJt
Q29uc3RhbnRVbmlvbiAqdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlv
bigpOworICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IG5vZGUtPmdldFR5cGUoKS5nZXRT
dHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICBmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgZmllbGRz
LT5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKCgqZmllbGRzKVtpbmRleF0udHlwZS0+
Z2V0RmllbGROYW1lKCkgPT0gaWRlbnRpZmllcikgeworICAgIHNpemVfdCBpbnN0YW5jZVNpemUg
PSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZHMuc2l6ZSgpOyAr
K2luZGV4KSB7CisgICAgICAgIGlmIChmaWVsZHNbaW5kZXhdLT5uYW1lKCkgPT0gaWRlbnRpZmll
cikgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBp
bnN0YW5jZVNpemUgKz0gKCpmaWVsZHMpW2luZGV4XS50eXBlLT5nZXRPYmplY3RTaXplKCk7Cisg
ICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0gZmllbGRzW2luZGV4XS0+dHlwZSgpLT5nZXRPYmpl
Y3RTaXplKCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9k
ZSA9IDA7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2Rl
LT5nZXRBc0NvbnN0YW50VW5pb24oKTsKICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgewogICAg
ICAgICAgQ29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHRlbXBDb25zdGFudE5vZGUtPmdldFVu
aW9uQXJyYXlQb2ludGVyKCk7CiAKQEAgLTE0NTIsNyArMTM5Nyw3IEBAIFRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RTdHIKICAgICByZXR1cm4gdHlwZWROb2RlOwogfQogCi1i
b29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24oaW50IGxpbmUsIGNvbnN0
IFRTdHJpbmcmIGlkZW50aWZpZXIpCitib29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVj
bGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmll
cikKIHsKICAgICArK3N0cnVjdE5lc3RpbmdMZXZlbDsKIApAQCAtMTQ3OCwyMSArMTQyMywyMSBA
QCBjb25zdCBpbnQga1dlYkdMTWF4U3RydWN0TmVzdGluZyA9IDQ7CiAKIH0gIC8vIG5hbWVzcGFj
ZQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKFRTb3VyY2VM
b2MgbGluZSwgY29uc3QgVFR5cGUmIGZpZWxkVHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6c3Ry
dWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEZpZWxk
JiBmaWVsZCkKIHsKICAgICBpZiAoIWlzV2ViR0xCYXNlZFNwZWMoc2hhZGVyU3BlYykpIHsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChmaWVsZFR5cGUuZ2V0QmFzaWNU
eXBlKCkgIT0gRWJ0U3RydWN0KSB7CisgICAgaWYgKGZpZWxkLnR5cGUoKS0+Z2V0QmFzaWNUeXBl
KCkgIT0gRWJ0U3RydWN0KSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAv
LyBXZSdyZSBhbHJlYWR5IGluc2lkZSBhIHN0cnVjdHVyZSBkZWZpbml0aW9uIGF0IHRoaXMgcG9p
bnQsIHNvIGFkZAogICAgIC8vIG9uZSB0byB0aGUgZmllbGQncyBzdHJ1Y3QgbmVzdGluZy4KLSAg
ICBpZiAoMSArIGZpZWxkVHlwZS5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpID4ga1dlYkdMTWF4
U3RydWN0TmVzdGluZykgeworICAgIGlmICgxICsgZmllbGQudHlwZSgpLT5nZXREZWVwZXN0U3Ry
dWN0TmVzdGluZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgewogICAgICAgICBzdGQ6OnN0
cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAi
UmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGRUeXBlLmdldFR5cGVOYW1lKCkgCisg
ICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwg
ZmllbGQubmFtZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGV4Y2VlZHMgbWF4aW11
bSBzdHJ1Y3QgbmVzdGluZyBvZiAiIDw8IGtXZWJHTE1heFN0cnVjdE5lc3Rpbmc7CiAgICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKICAgICAgICAg
ZXJyb3IobGluZSwgIiIsICIiLCBleHRyYUluZm8uY19zdHIoKSk7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAkocmV2aXNp
b24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNl
SGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMyw4IEBAIHN0cnVjdCBUUGFyc2VD
b250ZXh0IHsKICAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zKG9wdGlvbnMpLAogICAgICAgICAg
ICAgc291cmNlUGF0aChzb3VyY2VQYXRoKSwKICAgICAgICAgICAgIHRyZWVSb290KDApLAotICAg
ICAgICAgICAgbGV4QWZ0ZXJUeXBlKGZhbHNlKSwKICAgICAgICAgICAgIGxvb3BOZXN0aW5nTGV2
ZWwoMCksCiAgICAgICAgICAgICBzdHJ1Y3ROZXN0aW5nTGV2ZWwoMCksCi0gICAgICAgICAgICBp
blR5cGVQYXJlbihmYWxzZSksCiAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb25UeXBlKE5VTEwp
LAogICAgICAgICAgICAgZnVuY3Rpb25SZXR1cm5zVmFsdWUoZmFsc2UpLAogICAgICAgICAgICAg
Y2hlY2tzUHJlY2lzaW9uRXJyb3JzKGNoZWNrc1ByZWNFcnJvcnMpLApAQCAtNTEsMTYgKzQ5LDEz
IEBAIHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKICAgICBpbnQgY29tcGlsZU9wdGlvbnM7CiAgICAg
Y29uc3QgY2hhciogc291cmNlUGF0aDsgICAgICAvLyBQYXRoIG9mIHNvdXJjZSBmaWxlIG9yIE5V
TEwuCiAgICAgVEludGVybU5vZGUqIHRyZWVSb290OyAgICAgICAvLyByb290IG9mIHBhcnNlIHRy
ZWUgYmVpbmcgY3JlYXRlZAotICAgIGJvb2wgbGV4QWZ0ZXJUeXBlOyAgICAgICAgICAgLy8gdHJ1
ZSBpZiB3ZSd2ZSByZWNvZ25pemVkIGEgdHlwZSwgc28gY2FuIG9ubHkgYmUgbG9va2luZyBmb3Ig
YW4gaWRlbnRpZmllcgogICAgIGludCBsb29wTmVzdGluZ0xldmVsOyAgICAgICAgLy8gMCBpZiBv
dXRzaWRlIGFsbCBsb29wcwogICAgIGludCBzdHJ1Y3ROZXN0aW5nTGV2ZWw7ICAgICAgLy8gaW5j
cmVtZW50ZWQgd2hpbGUgcGFyc2luZyBhIHN0cnVjdCBkZWNsYXJhdGlvbgotICAgIGJvb2wgaW5U
eXBlUGFyZW47ICAgICAgICAgICAgLy8gdHJ1ZSBpZiBpbiBwYXJlbnRoZXNlcywgbG9va2luZyBv
bmx5IGZvciBhbiBpZGVudGlmaWVyCiAgICAgY29uc3QgVFR5cGUqIGN1cnJlbnRGdW5jdGlvblR5
cGU7ICAvLyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQncyBjdXJyZW50bHkg
YmVpbmcgcGFyc2VkCiAgICAgYm9vbCBmdW5jdGlvblJldHVybnNWYWx1ZTsgICAvLyB0cnVlIGlm
IGEgbm9uLXZvaWQgZnVuY3Rpb24gaGFzIGEgcmV0dXJuCiAgICAgYm9vbCBjaGVja3NQcmVjaXNp
b25FcnJvcnM7ICAvLyB0cnVlIGlmIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkIHdoZW4gYSB2
YXJpYWJsZSBpcyBkZWNsYXJlZCB3aXRob3V0IHByZWNpc2lvbiwgZXhwbGljaXQgb3IgaW1wbGlj
aXQuCiAgICAgYm9vbCBmcmFnbWVudFByZWNpc2lvbkhpZ2g7ICAvLyB0cnVlIGlmIGhpZ2hwIHBy
ZWNpc2lvbiBpcyBzdXBwb3J0ZWQgaW4gdGhlIGZyYWdtZW50IGxhbmd1YWdlLgogICAgIFRTdHJp
bmcgSGFzaEVyck1zZzsKLSAgICBib29sIEFmdGVyRU9GOwogICAgIFREaWFnbm9zdGljcyBkaWFn
bm9zdGljczsKICAgICBURGlyZWN0aXZlSGFuZGxlciBkaXJlY3RpdmVIYW5kbGVyOwogICAgIHBw
OjpQcmVwcm9jZXNzb3IgcHJlcHJvY2Vzc29yOwpAQCAtNjgsNzEgKzYzLDY4IEBAIHN0cnVjdCBU
UGFyc2VDb250ZXh0IHsKIAogICAgIGludCBudW1FcnJvcnMoKSBjb25zdCB7IHJldHVybiBkaWFn
bm9zdGljcy5udW1FcnJvcnMoKTsgfQogICAgIFRJbmZvU2luayYgaW5mb1NpbmsoKSB7IHJldHVy
biBkaWFnbm9zdGljcy5pbmZvU2luaygpOyB9Ci0gICAgdm9pZCBlcnJvcihUU291cmNlTG9jIGxv
YywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKKyAgICB2b2lkIGVycm9y
KGNvbnN0IFRTb3VyY2VMb2MmIGxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyKiB0
b2tlbiwKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5mbz0iIik7Ci0gICAgdm9p
ZCB3YXJuaW5nKFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIq
IHRva2VuLAorICAgIHZvaWQgd2FybmluZyhjb25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0IGNo
YXIqIHJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCiAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGV4dHJhSW5mbz0iIik7CiAgICAgdm9pZCB0cmFjZShjb25zdCBjaGFyKiBzdHIpOwogICAg
IHZvaWQgcmVjb3ZlcigpOwogCi0gICAgYm9vbCBwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3Ry
aW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBpbnQgbGluZSk7Ci0gICAgYm9vbCBw
YXJzZU1hdHJpeEZpZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IG1hdFNpemUsIFRNYXRyaXhGaWVs
ZHMmLCBpbnQgbGluZSk7CisgICAgYm9vbCBwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3RyaW5n
JiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKTsK
KyAgICBib29sIHBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgbWF0U2l6ZSwg
VE1hdHJpeEZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpOwogCi0gICAgYm9vbCByZXNl
cnZlZEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpOwotICAg
IHZvaWQgYXNzaWduRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQs
IFRTdHJpbmcgcmlnaHQpOwotICAgIHZvaWQgdW5hcnlPcEVycm9yKGludCBsaW5lLCBjb25zdCBj
aGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKTsKLSAgICB2b2lkIGJpbmFyeU9wRXJyb3IoaW50IGxp
bmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOwotICAgIGJv
b2wgcHJlY2lzaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgVFByZWNpc2lvbiBwcmVjaXNpb24sIFRC
YXNpY1R5cGUgdHlwZSk7Ci0gICAgYm9vbCBsVmFsdWVFcnJvckNoZWNrKGludCBsaW5lLCBjb25z
dCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CisgICAgYm9vbCByZXNlcnZlZEVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcik7CisgICAg
dm9pZCBhc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwg
VFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKKyAgICB2b2lkIHVuYXJ5T3BFcnJvcihjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKTsKKyAg
ICB2b2lkIGJpbmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciog
b3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7CisgICAgYm9vbCBwcmVjaXNpb25FcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFz
aWNUeXBlIHR5cGUpOworICAgIGJvb2wgbFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CiAgICAgYm9vbCBjb25zdEVy
cm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlKTsKICAgICBib29sIGludGVnZXJFcnJvckNoZWNr
KFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgY2hhciogdG9rZW4pOwotICAgIGJvb2wgZ2xvYmFs
RXJyb3JDaGVjayhpbnQgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2VuKTsKLSAg
ICBib29sIGNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVybU5vZGUqLCBURnVu
Y3Rpb24mLCBUT3BlcmF0b3IsIFRUeXBlKik7Ci0gICAgYm9vbCBhcnJheVNpemVFcnJvckNoZWNr
KGludCBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7Ci0gICAgYm9vbCBhcnJh
eVF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOwotICAgIGJv
b2wgYXJyYXlUeXBlRXJyb3JDaGVjayhpbnQgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7Ci0gICAg
Ym9vbCBhcnJheUVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJs
aWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKLSAgICBib29sIHZvaWRFcnJvckNo
ZWNrKGludCwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRQdWJsaWNUeXBlJik7Ci0gICAgYm9vbCBi
b29sRXJyb3JDaGVjayhpbnQsIGNvbnN0IFRJbnRlcm1UeXBlZCopOwotICAgIGJvb2wgYm9vbEVy
cm9yQ2hlY2soaW50LCBjb25zdCBUUHVibGljVHlwZSYpOwotICAgIGJvb2wgc2FtcGxlckVycm9y
Q2hlY2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciogcmVh
c29uKTsKLSAgICBib29sIHN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0
IFRQdWJsaWNUeXBlJiBwVHlwZSk7Ci0gICAgYm9vbCBwYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVj
ayhpbnQgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlJiB0eXBlKTsKLSAg
ICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZp
ZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KTsKLSAgICBib29sIG5vbkluaXRFcnJv
ckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSwg
VFZhcmlhYmxlKiYgdmFyaWFibGUpOwotICAgIGJvb2wgcGFyYW1FcnJvckNoZWNrKGludCBsaW5l
LCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5cGUq
IHR5cGUpOwotICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0
cmluZyYpOworICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pOworICAgIGJvb2wgY29uc3RydWN0b3JF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1Ob2RlKiwgVEZ1bmN0aW9u
JiwgVE9wZXJhdG9yLCBUVHlwZSopOworICAgIGJvb2wgYXJyYXlTaXplRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7CisgICAg
Ym9vbCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1
YmxpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBhcnJheVR5cGVFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOworICAgIGJvb2wgYXJyYXlFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
IHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHZvaWRFcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFB1YmxpY1R5cGUmKTsKKyAg
ICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUSW50ZXJtVHlw
ZWQqKTsKKyAgICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBU
UHVibGljVHlwZSYpOworICAgIGJvb2wgc2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiByZWFzb24pOwor
ICAgIGJvb2wgc3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpOworICAgIGJvb2wgcGFyYW1ldGVyU2FtcGxlckVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNv
bnN0IFRUeXBlJiB0eXBlKTsKKyAgICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUs
IGJvb2wgYXJyYXkpOworICAgIGJvb2wgbm9uSW5pdEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIFRWYXJpYWJs
ZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwg
VFR5cGUqIHR5cGUpOworICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJik7CiAKKyAgICBjb25zdCBUUHJhZ21hJiBwcmFnbWEo
KSBjb25zdCB7IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLnByYWdtYSgpOyB9CiAgICAgY29uc3Qg
VEV4dGVuc2lvbkJlaGF2aW9yJiBleHRlbnNpb25CZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIGRp
cmVjdGl2ZUhhbmRsZXIuZXh0ZW5zaW9uQmVoYXZpb3IoKTsgfQogICAgIGJvb2wgc3VwcG9ydHNF
eHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9uKTsKLSAgICB2b2lkIGhhbmRsZUV4dGVuc2lv
bkRpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogZXh0TmFtZSwgY29uc3QgY2hhciogYmVo
YXZpb3IpOwotCi0gICAgY29uc3QgVFByYWdtYSYgcHJhZ21hKCkgY29uc3QgeyByZXR1cm4gZGly
ZWN0aXZlSGFuZGxlci5wcmFnbWEoKTsgfQotICAgIHZvaWQgaGFuZGxlUHJhZ21hRGlyZWN0aXZl
KGludCBsaW5lLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSk7CiAKICAgICBi
b29sIGNvbnRhaW5zU2FtcGxlcihUVHlwZSYgdHlwZSk7CiAgICAgYm9vbCBhcmVBbGxDaGlsZENv
bnN0KFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlKTsKLSAgICBjb25zdCBURnVuY3Rpb24qIGZp
bmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBib29sICpidWlsdEluID0g
MCk7Ci0gICAgYm9vbCBleGVjdXRlSW5pdGlhbGl6ZXIoVFNvdXJjZUxvYyBsaW5lLCBUU3RyaW5n
JiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsCisgICAgY29uc3QgVEZ1bmN0aW9uKiBm
aW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBi
b29sICpidWlsdEluID0gMCk7CisgICAgYm9vbCBpc1ZhcmlhYmxlQnVpbHRJbihjb25zdCBUVmFy
aWFibGUqIHBWYXIpOworICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluaXRpYWxpemVyLCBUSW50ZXJt
Tm9kZSomIGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwKTsKLSAgICBib29sIGFy
cmF5U2V0TWF4U2l6ZShUSW50ZXJtU3ltYm9sKiwgVFR5cGUqLCBpbnQsIGJvb2wsIFRTb3VyY2VM
b2MpOwogCi0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9kZSosIGNv
bnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBURnVuY3Rpb24qLCBUU291cmNlTG9jKTsKKyAgICBUSW50
ZXJtVHlwZWQqIGFkZENvbnN0cnVjdG9yKFRJbnRlcm1Ob2RlKiwgY29uc3QgVFR5cGUqLCBUT3Bl
cmF0b3IsIFRGdW5jdGlvbiosIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAgICBUSW50ZXJtVHlwZWQq
IGZvbGRDb25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlLCBjb25zdCBU
VHlwZSYgdHlwZSk7Ci0gICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RTdHJ1Y3QoVEludGVybU5v
ZGUqLCBUVHlwZSosIGludCwgVFNvdXJjZUxvYywgYm9vbCBzdWJzZXQpOwotICAgIFRJbnRlcm1U
eXBlZCogY29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSosIFRPcGVyYXRvciwgVEludGVybU5v
ZGUqLCBUU291cmNlTG9jLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25z
dFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCosIFRTb3VyY2VMb2MpOwot
ICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhOb2RlKGludCAsIFRJbnRlcm1UeXBlZCos
IFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RBcnJheU5vZGUoaW50IGlu
ZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSk7Ci0gICAgVEludGVybVR5
cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJbnRlcm1UeXBlZCosIFRTb3VyY2VMb2Mp
OworICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiwgVFR5cGUq
LCBpbnQsIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7CisgICAgVEludGVybVR5cGVk
KiBjb25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBUSW50ZXJtTm9kZSos
IGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7CisgICAgVEludGVybVR5cGVkKiBhZGRD
b25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3Vy
Y2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0TWF0cml4Tm9kZShpbnQgLCBUSW50
ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25z
dEFycmF5Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxv
YyYgbGluZSk7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJ
bnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKIAogICAgIC8vIFBlcmZvcm1zIGFuIGVy
cm9yIGNoZWNrIGZvciBlbWJlZGRlZCBzdHJ1Y3QgZGVjbGFyYXRpb25zLgogICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiBhbiBlcnJvciB3YXMgcmFpc2VkIGR1ZSB0byB0aGUgZGVjbGFyYXRpb24gb2YK
ICAgICAvLyB0aGlzIHN0cnVjdC4KLSAgICBib29sIGVudGVyU3RydWN0RGVjbGFyYXRpb24oVFNv
dXJjZUxvYyBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICBib29sIGVudGVy
U3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYg
aWRlbnRpZmllcik7CiAgICAgdm9pZCBleGl0U3RydWN0RGVjbGFyYXRpb24oKTsKIAotICAgIGJv
b2wgc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soVFNvdXJjZUxvYyBsaW5lLCBjb25zdCBUVHlwZSYg
ZmllbGRUeXBlKTsKKyAgICBib29sIHN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQpOwogfTsKIAogaW50IFBhUGFyc2VTdHJp
bmdzKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBs
ZW5ndGhbXSwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29s
QWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9Qb29sQWxsb2MuY3BwCShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4
LDI0ICsyMjgsMjcgQEAgdm9pZCBUUG9vbEFsbG9jYXRvcjo6cG9wQWxsKCkKIAogdm9pZCogVFBv
b2xBbGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBudW1CeXRlcykKIHsKKyAgICAvLworICAgIC8v
IEp1c3Qga2VlcCBzb21lIGludGVyZXN0aW5nIHN0YXRpc3RpY3MuCisgICAgLy8KKyAgICArK251
bUNhbGxzOworICAgIHRvdGFsQnl0ZXMgKz0gbnVtQnl0ZXM7CisKICAgICAvLyBJZiB3ZSBhcmUg
dXNpbmcgZ3VhcmQgYmxvY2tzLCBhbGwgYWxsb2NhdGlvbnMgYXJlIGJyYWNrZXRlZCBieQogICAg
IC8vIHRoZW06IFtndWFyZGJsb2NrXVthbGxvY2F0aW9uXVtndWFyZGJsb2NrXS4gIG51bUJ5dGVz
IGlzIGhvdwogICAgIC8vIG11Y2ggbWVtb3J5IHRoZSBjYWxsZXIgYXNrZWQgZm9yLiAgYWxsb2Nh
dGlvblNpemUgaXMgdGhlIHRvdGFsCiAgICAgLy8gc2l6ZSBpbmNsdWRpbmcgZ3VhcmQgYmxvY2tz
LiAgSW4gcmVsZWFzZSBidWlsZCwKICAgICAvLyBndWFyZEJsb2NrU2l6ZT0wIGFuZCB0aGlzIGFs
bCBnZXRzIG9wdGltaXplZCBhd2F5LgogICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IFRBbGxv
Y2F0aW9uOjphbGxvY2F0aW9uU2l6ZShudW1CeXRlcyk7Ci0gICAgCi0gICAgLy8KLSAgICAvLyBK
dXN0IGtlZXAgc29tZSBpbnRlcmVzdGluZyBzdGF0aXN0aWNzLgotICAgIC8vCi0gICAgKytudW1D
YWxsczsKLSAgICB0b3RhbEJ5dGVzICs9IG51bUJ5dGVzOworICAgIC8vIERldGVjdCBpbnRlZ2Vy
IG92ZXJmbG93LgorICAgIGlmIChhbGxvY2F0aW9uU2l6ZSA8IG51bUJ5dGVzKQorICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIC8vCiAgICAgLy8gRG8gdGhlIGFsbG9jYXRpb24sIG1vc3QgbGlrZWx5
IGNhc2UgZmlyc3QsIGZvciBlZmZpY2llbmN5LgogICAgIC8vIFRoaXMgc3RlcCBjb3VsZCBiZSBt
b3ZlZCB0byBiZSBpbmxpbmUgc29tZXRpbWUuCiAgICAgLy8KLSAgICBpZiAoY3VycmVudFBhZ2VP
ZmZzZXQgKyBhbGxvY2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSkgeworICAgIGlmIChhbGxvY2F0aW9u
U2l6ZSA8PSBwYWdlU2l6ZSAtIGN1cnJlbnRQYWdlT2Zmc2V0KSB7CiAgICAgICAgIC8vCiAgICAg
ICAgIC8vIFNhZmUgdG8gYWxsb2NhdGUgZnJvbSBjdXJyZW50UGFnZU9mZnNldC4KICAgICAgICAg
Ly8KQEAgLTI1NiwxMiArMjU5LDE2IEBAIHZvaWQqIFRQb29sQWxsb2NhdG9yOjphbGxvY2F0ZShz
aXplX3QgbnUKICAgICAgICAgcmV0dXJuIGluaXRpYWxpemVBbGxvY2F0aW9uKGluVXNlTGlzdCwg
bWVtb3J5LCBudW1CeXRlcyk7CiAgICAgfQogCi0gICAgaWYgKGFsbG9jYXRpb25TaXplICsgaGVh
ZGVyU2tpcCA+IHBhZ2VTaXplKSB7CisgICAgaWYgKGFsbG9jYXRpb25TaXplID4gcGFnZVNpemUg
LSBoZWFkZXJTa2lwKSB7CiAgICAgICAgIC8vCiAgICAgICAgIC8vIERvIGEgbXVsdGktcGFnZSBh
bGxvY2F0aW9uLiAgRG9uJ3QgbWl4IHRoZXNlIHdpdGggdGhlIG90aGVycy4KICAgICAgICAgLy8g
VGhlIE9TIGlzIGVmZmljaWVudCBhbmQgYWxsb2NhdGluZyBhbmQgZnJlZS1pbmcgbXVsdGlwbGUg
cGFnZXMuCiAgICAgICAgIC8vCiAgICAgICAgIHNpemVfdCBudW1CeXRlc1RvQWxsb2MgPSBhbGxv
Y2F0aW9uU2l6ZSArIGhlYWRlclNraXA7CisgICAgICAgIC8vIERldGVjdCBpbnRlZ2VyIG92ZXJm
bG93LgorICAgICAgICBpZiAobnVtQnl0ZXNUb0FsbG9jIDwgYWxsb2NhdGlvblNpemUpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKwogICAgICAgICB0SGVhZGVyKiBtZW1vcnkgPSByZWludGVycHJl
dF9jYXN0PHRIZWFkZXIqPig6Om5ldyBjaGFyW251bUJ5dGVzVG9BbGxvY10pOwogICAgICAgICBp
ZiAobWVtb3J5ID09IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCShyZXZpc2lvbiAxNTIz
MjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hIYW5kbGUuaAko
d29ya2luZyBjb3B5KQpAQCAtODEsOCArODEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBJbml0
QnVpbHRJblN5bWJvbFRhYmxlKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKTsK
ICAgICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgZnJvbSB0aGUgcHJldmlvdXMgY29tcGlsYXRpb24u
CiAgICAgdm9pZCBjbGVhclJlc3VsdHMoKTsKLSAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBmdW5jdGlv
biByZWN1cnNpb24gaXMgZGV0ZWN0ZWQuCi0gICAgYm9vbCBkZXRlY3RSZWN1cnNpb24oVEludGVy
bU5vZGUqIHJvb3QpOworICAgIC8vIFJldHVybiB0cnVlIGlmIGZ1bmN0aW9uIHJlY3Vyc2lvbiBp
cyBkZXRlY3RlZCBvciBjYWxsIGRlcHRoIGV4Y2VlZGVkLgorICAgIGJvb2wgZGV0ZWN0Q2FsbERl
cHRoKFRJbnRlcm1Ob2RlKiByb290LCBUSW5mb1NpbmsmIGluZm9TaW5rLCBib29sIGxpbWl0Q2Fs
bFN0YWNrRGVwdGgpOwogICAgIC8vIFJld3JpdGVzIGEgc2hhZGVyJ3MgaW50ZXJtZWRpYXRlIHRy
ZWUgYWNjb3JkaW5nIHRvIHRoZSBDU1MgU2hhZGVycyBzcGVjLgogICAgIHZvaWQgcmV3cml0ZUNT
U1NoYWRlcihUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBn
aXZlbiBzaGFkZXIgZG9lcyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtCkBAIC0xMDQsNiArMTA0LDgg
QEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2hhZGVyIGRvZXMgbm90
IHVzZSBzYW1wbGVyIGRlcGVuZGVudCB2YWx1ZXMgdG8gYWZmZWN0IGNvbnRyb2wgCiAgICAgLy8g
ZmxvdyBvciBpbiBvcGVyYXRpb25zIHdob3NlIHRpbWUgY2FuIGRlcGVuZCBvbiB0aGUgaW5wdXQg
dmFsdWVzLgogICAgIGJvb2wgZW5mb3JjZUZyYWdtZW50U2hhZGVyVGltaW5nUmVzdHJpY3Rpb25z
KGNvbnN0IFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKTsKKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0
aGUgbWF4aW11bSBleHByZXNzaW9uIGNvbXBsZXhpdHkgYmVsb3cgdGhlIGxpbWl0LgorICAgIGJv
b2wgbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8g
R2V0IGJ1aWx0LWluIGV4dGVuc2lvbnMgd2l0aCBkZWZhdWx0IGJlaGF2aW9yLgogICAgIGNvbnN0
IFRFeHRlbnNpb25CZWhhdmlvciYgZ2V0RXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdDsKIApAQCAt
MTE2LDYgKzExOCw4IEBAIHByaXZhdGU6CiAgICAgU2hTaGFkZXJTcGVjIHNoYWRlclNwZWM7CiAK
ICAgICBpbnQgbWF4VW5pZm9ybVZlY3RvcnM7CisgICAgaW50IG1heEV4cHJlc3Npb25Db21wbGV4
aXR5OworICAgIGludCBtYXhDYWxsU3RhY2tEZXB0aDsKIAogICAgIC8vIEJ1aWx0LWluIHN5bWJv
bCB0YWJsZSBmb3IgdGhlIGdpdmVuIGxhbmd1YWdlLCBzcGVjLCBhbmQgcmVzb3VyY2VzLgogICAg
IC8vIEl0IGlzIHByZXNlcnZlZCBmcm9tIGNvbXBpbGUtdG8tY29tcGlsZS4KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAJ
KHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9TaGFkZXJMYW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIHZvaWQg
U2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXMKICAgICByZXNvdXJjZXMtPk9FU19F
R0xfaW1hZ2VfZXh0ZXJuYWwgPSAwOwogICAgIHJlc291cmNlcy0+QVJCX3RleHR1cmVfcmVjdGFu
Z2xlID0gMDsKICAgICByZXNvdXJjZXMtPkVYVF9kcmF3X2J1ZmZlcnMgPSAwOworICAgIHJlc291
cmNlcy0+RVhUX2ZyYWdfZGVwdGggPSAwOwogCiAgICAgLy8gRGlzYWJsZSBoaWdocCBwcmVjaXNp
b24gaW4gZnJhZ21lbnQgc2hhZGVyIGJ5IGRlZmF1bHQuCiAgICAgcmVzb3VyY2VzLT5GcmFnbWVu
dFByZWNpc2lvbkhpZ2ggPSAwOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1N5bWJvbFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lvbiAxNTIzMjMpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNyw0OCArMTcsMzQgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5j
bHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNs
dWRlIDxjbGltaXRzPgogCiBUVHlwZTo6VFR5cGUoY29uc3QgVFB1YmxpY1R5cGUgJnApIDoKLSAg
ICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lzaW9uKHAucHJlY2lzaW9uKSwgcXVhbGlmaWVy
KHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBtYXRyaXgocC5tYXRyaXgpLCBhcnJheShwLmFy
cmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwKLSAgICAgICAgICAgIG1heEFycmF5U2l6ZSgw
KSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVyZSgwKSwgc3RydWN0dXJlU2l6ZSgw
KSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKSwgdHlw
ZU5hbWUoMCkKKyAgICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lzaW9uKHAucHJlY2lzaW9u
KSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBtYXRyaXgocC5tYXRyaXgp
LCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwgc3RydWN0dXJlKDApCiB7
Ci0gICAgaWYgKHAudXNlckRlZikgeworICAgIGlmIChwLnVzZXJEZWYpCiAgICAgICAgIHN0cnVj
dHVyZSA9IHAudXNlckRlZi0+Z2V0U3RydWN0KCk7Ci0gICAgICAgIHR5cGVOYW1lID0gTmV3UG9v
bFRTdHJpbmcocC51c2VyRGVmLT5nZXRUeXBlTmFtZSgpLmNfc3RyKCkpOwotICAgICAgICBjb21w
dXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsKLSAgICB9CiB9CiAKIC8vCiAvLyBSZWN1cnNpdmVs
eSBnZW5lcmF0ZSBtYW5nbGVkIG5hbWVzLgogLy8KLXZvaWQgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5h
bWUoVFN0cmluZyYgbWFuZ2xlZE5hbWUpCitUU3RyaW5nIFRUeXBlOjpidWlsZE1hbmdsZWROYW1l
KCkgY29uc3QKIHsKKyAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAgIGlmIChpc01hdHJpeCgp
KQogICAgICAgICBtYW5nbGVkTmFtZSArPSAnbSc7CiAgICAgZWxzZSBpZiAoaXNWZWN0b3IoKSkK
ICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ3YnOwogCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAg
Y2FzZSBFYnRGbG9hdDogICAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICdmJzsgICAgICBicmVh
azsKLSAgICBjYXNlIEVidEludDogICAgICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ2knOyAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0Qm9vbDogICAgICAgICAgICAgICBtYW5nbGVkTmFtZSAr
PSAnYic7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRTYW1wbGVyMkQ6ICAgICAgICAgIG1hbmds
ZWROYW1lICs9ICJzMiI7ICAgICBicmVhazsKLSAgICBjYXNlIEVidFNhbXBsZXJDdWJlOiAgICAg
ICAgbWFuZ2xlZE5hbWUgKz0gInNDIjsgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0U3RydWN0Ogot
ICAgICAgICBtYW5nbGVkTmFtZSArPSAic3RydWN0LSI7Ci0gICAgICAgIGlmICh0eXBlTmFtZSkK
LSAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICp0eXBlTmFtZTsKLSAgICAgICAgey8vIHN1cHBv
cnQgTVNWQysrNi4wCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHN0
cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAn
LSc7Ci0gICAgICAgICAgICAgICAgKCpzdHJ1Y3R1cmUpW2ldLnR5cGUtPmJ1aWxkTWFuZ2xlZE5h
bWUobWFuZ2xlZE5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRGbG9hdDogICAgICAgbWFuZ2xlZE5hbWUgKz0g
J2YnOyAgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0SW50OiAgICAgICAgIG1hbmdsZWROYW1lICs9
ICdpJzsgICAgICBicmVhazsKKyAgICBjYXNlIEVidEJvb2w6ICAgICAgICBtYW5nbGVkTmFtZSAr
PSAnYic7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRTYW1wbGVyMkQ6ICAgbWFuZ2xlZE5hbWUg
Kz0gInMyIjsgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6IG1hbmdsZWROYW1l
ICs9ICJzQyI7ICAgICBicmVhazsKKyAgICBjYXNlIEVidFN0cnVjdDogICAgICBtYW5nbGVkTmFt
ZSArPSBzdHJ1Y3R1cmUtPm1hbmdsZWROYW1lKCk7IGJyZWFrOworICAgIGRlZmF1bHQ6ICAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIG1hbmdsZWROYW1lICs9IHN0YXRpY19jYXN0PGNo
YXI+KCcwJyArIGdldE5vbWluYWxTaXplKCkpOwpAQCAtNjksNTMgKzU1LDcyIEBAIHZvaWQgVFR5
cGU6OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYgbWEKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0g
YnVmOwogICAgICAgICBtYW5nbGVkTmFtZSArPSAnXSc7CiAgICAgfQorICAgIHJldHVybiBtYW5n
bGVkTmFtZTsKIH0KIAotaW50IFRUeXBlOjpnZXRTdHJ1Y3RTaXplKCkgY29uc3QKK3NpemVfdCBU
VHlwZTo6Z2V0T2JqZWN0U2l6ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFnZXRTdHJ1Y3QoKSkgewot
ICAgICAgICBhc3NlcnQoZmFsc2UgJiYgIk5vdCBhIHN0cnVjdCIpOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9CisgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7CiAKLSAgICBpZiAoc3RydWN0dXJl
U2l6ZSA9PSAwKQotICAgICAgICBmb3IgKFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgdGwgPSBn
ZXRTdHJ1Y3QoKS0+YmVnaW4oKTsgdGwgIT0gZ2V0U3RydWN0KCktPmVuZCgpOyB0bCsrKQotICAg
ICAgICAgICAgc3RydWN0dXJlU2l6ZSArPSAoKCp0bCkudHlwZSktPmdldE9iamVjdFNpemUoKTsK
KyAgICBpZiAoZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQorICAgICAgICB0b3RhbFNpemUg
PSBzdHJ1Y3R1cmUtPm9iamVjdFNpemUoKTsKKyAgICBlbHNlIGlmIChtYXRyaXgpCisgICAgICAg
IHRvdGFsU2l6ZSA9IHNpemUgKiBzaXplOworICAgIGVsc2UKKyAgICAgICAgdG90YWxTaXplID0g
c2l6ZTsKKworICAgIGlmIChpc0FycmF5KCkpIHsKKyAgICAgICAgc2l6ZV90IGFycmF5U2l6ZSA9
IGdldEFycmF5U2l6ZSgpOworICAgICAgICBpZiAoYXJyYXlTaXplID4gSU5UX01BWCAvIHRvdGFs
U2l6ZSkKKyAgICAgICAgICAgIHRvdGFsU2l6ZSA9IElOVF9NQVg7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRvdGFsU2l6ZSAqPSBhcnJheVNpemU7CisgICAgfQogCi0gICAgcmV0dXJuIHN0
cnVjdHVyZVNpemU7CisgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAotdm9pZCBUVHlwZTo6Y29t
cHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkKK2Jvb2wgVFN0cnVjdHVyZTo6Y29udGFpbnNBcnJh
eXMoKSBjb25zdAogewotICAgIGlmICghZ2V0U3RydWN0KCkpIHsKLSAgICAgICAgcmV0dXJuOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZpZWxkcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqbUZpZWxkcylbaV0tPnR5cGUoKTsKKyAgICAg
ICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJheSgpIHx8IGZpZWxkVHlwZS0+aXNTdHJ1Y3R1cmVDb250
YWluaW5nQXJyYXlzKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQogCi0gICAgaW50IG1heE5lc3RpbmcgPSAwOwotICAgIGZvciAoVFR5cGVM
aXN0Ojpjb25zdF9pdGVyYXRvciB0bCA9IGdldFN0cnVjdCgpLT5iZWdpbigpOyB0bCAhPSBnZXRT
dHJ1Y3QoKS0+ZW5kKCk7ICsrdGwpIHsKLSAgICAgICAgbWF4TmVzdGluZyA9IHN0ZDo6bWF4KG1h
eE5lc3RpbmcsICgoKnRsKS50eXBlKS0+Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSk7CitUU3Ry
aW5nIFRTdHJ1Y3R1cmU6OmJ1aWxkTWFuZ2xlZE5hbWUoKSBjb25zdAoreworICAgIFRTdHJpbmcg
bWFuZ2xlZE5hbWUoInN0cnVjdC0iKTsKKyAgICBtYW5nbGVkTmFtZSArPSAqbU5hbWU7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsraSkgeworICAgICAgICBt
YW5nbGVkTmFtZSArPSAnLSc7CisgICAgICAgIG1hbmdsZWROYW1lICs9ICgqbUZpZWxkcylbaV0t
PnR5cGUoKS0+Z2V0TWFuZ2xlZE5hbWUoKTsKICAgICB9Ci0KLSAgICBkZWVwZXN0U3RydWN0TmVz
dGluZyA9IDEgKyBtYXhOZXN0aW5nOworICAgIHJldHVybiBtYW5nbGVkTmFtZTsKIH0KIAotYm9v
bCBUVHlwZTo6aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkgY29uc3QKK3NpemVfdCBUU3Ry
dWN0dXJlOjpjYWxjdWxhdGVPYmplY3RTaXplKCkgY29uc3QKIHsKLSAgICBpZiAoIXN0cnVjdHVy
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzaXplX3Qgc2l6ZSA9IDA7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsraSkgeworICAgICAg
ICBzaXplX3QgZmllbGRTaXplID0gKCptRmllbGRzKVtpXS0+dHlwZSgpLT5nZXRPYmplY3RTaXpl
KCk7CisgICAgICAgIGlmIChmaWVsZFNpemUgPiBJTlRfTUFYIC0gc2l6ZSkKKyAgICAgICAgICAg
IHNpemUgPSBJTlRfTUFYOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzaXplICs9IGZpZWxk
U2l6ZTsKICAgICB9CisgICAgcmV0dXJuIHNpemU7Cit9CiAKLSAgICBmb3IgKFRUeXBlTGlzdDo6
Y29uc3RfaXRlcmF0b3IgbWVtYmVyID0gc3RydWN0dXJlLT5iZWdpbigpOyBtZW1iZXIgIT0gc3Ry
dWN0dXJlLT5lbmQoKTsgbWVtYmVyKyspCi0gICAgewotICAgICAgICBpZiAobWVtYmVyLT50eXBl
LT5pc0FycmF5KCkgfHwKLSAgICAgICAgICAgIG1lbWJlci0+dHlwZS0+aXNTdHJ1Y3R1cmVDb250
YWluaW5nQXJyYXlzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9CitpbnQgVFN0cnVjdHVyZTo6Y2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBjb25zdAor
eworICAgIGludCBtYXhOZXN0aW5nID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1G
aWVsZHMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIG1heE5lc3RpbmcgPSBzdGQ6Om1heChtYXhO
ZXN0aW5nLCAoKm1GaWVsZHMpW2ldLT50eXBlKCktPmdldERlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkp
OwogICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gMSArIG1heE5lc3Rpbmc7
CiB9CiAKIC8vCkBAIC0xOTYsODQgKzIwMSw4IEBAIHZvaWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJl
bGF0ZVRvT3BlcmF0b3IKIHZvaWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvRXh0ZW5zaW9u
KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFRTdHJpbmcmIGV4dCkKIHsKICAgICBmb3IgKHRMZXZl
bDo6aXRlcmF0b3IgaXQgPSBsZXZlbC5iZWdpbigpOyBpdCAhPSBsZXZlbC5lbmQoKTsgKytpdCkg
ewotICAgICAgICBpZiAoaXQtPnNlY29uZC0+aXNGdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICBU
RnVuY3Rpb24qIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uKj4oaXQtPnNlY29uZCk7
Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSBuYW1lKQotICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uLT5yZWxhdGVUb0V4dGVuc2lvbihleHQpOwotICAgICAgICB9Ci0gICAg
fQotfQotCi1UU3ltYm9sOjpUU3ltYm9sKGNvbnN0IFRTeW1ib2wmIGNvcHlPZikKLXsKLSAgICBu
YW1lID0gTmV3UG9vbFRTdHJpbmcoY29weU9mLm5hbWUtPmNfc3RyKCkpOwotICAgIHVuaXF1ZUlk
ID0gY29weU9mLnVuaXF1ZUlkOwotfQotCi1UVmFyaWFibGU6OlRWYXJpYWJsZShjb25zdCBUVmFy
aWFibGUmIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpIDogVFN5bWJvbChjb3B5T2Yp
Ci17Ci0gICAgdHlwZS5jb3B5VHlwZShjb3B5T2YudHlwZSwgcmVtYXBwZXIpOwotICAgIHVzZXJU
eXBlID0gY29weU9mLnVzZXJUeXBlOwotICAgIC8vIGZvciBidWlsdEluIHN5bWJvbCB0YWJsZSBs
ZXZlbCwgdW5pb25BcnJheSBhbmQgYXJyYXlJbmZvcm1hdGlvbiBwb2ludGVycyBzaG91bGQgYmUg
TlVMTAotICAgIGFzc2VydChjb3B5T2YuYXJyYXlJbmZvcm1hdGlvblR5cGUgPT0gMCk7Ci0gICAg
YXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOwotCi0gICAgaWYgKGNvcHlPZi51bmlvbkFycmF5KSB7
Ci0gICAgICAgIGFzc2VydCghY29weU9mLnR5cGUuZ2V0U3RydWN0KCkpOwotICAgICAgICBhc3Nl
cnQoY29weU9mLnR5cGUuZ2V0T2JqZWN0U2l6ZSgpID09IDEpOwotICAgICAgICB1bmlvbkFycmF5
ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgIHVuaW9uQXJyYXlbMF0gPSBjb3B5T2Yu
dW5pb25BcnJheVswXTsKLSAgICB9IGVsc2UKLSAgICAgICAgdW5pb25BcnJheSA9IDA7Ci19Ci0K
LVRWYXJpYWJsZSogVFZhcmlhYmxlOjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLXsK
LSAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZSgqdGhpcywgcmVtYXBwZXIp
OwotCi0gICAgcmV0dXJuIHZhcmlhYmxlOwotfQotCi1URnVuY3Rpb246OlRGdW5jdGlvbihjb25z
dCBURnVuY3Rpb24mIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpIDogVFN5bWJvbChj
b3B5T2YpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3B5T2YucGFyYW1l
dGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBUUGFyYW1ldGVyIHBhcmFtOwotICAgICAgICBw
YXJhbWV0ZXJzLnB1c2hfYmFjayhwYXJhbSk7Ci0gICAgICAgIHBhcmFtZXRlcnMuYmFjaygpLmNv
cHlQYXJhbShjb3B5T2YucGFyYW1ldGVyc1tpXSwgcmVtYXBwZXIpOwotICAgIH0KLQotICAgIHJl
dHVyblR5cGUuY29weVR5cGUoY29weU9mLnJldHVyblR5cGUsIHJlbWFwcGVyKTsKLSAgICBtYW5n
bGVkTmFtZSA9IGNvcHlPZi5tYW5nbGVkTmFtZTsKLSAgICBvcCA9IGNvcHlPZi5vcDsKLSAgICBk
ZWZpbmVkID0gY29weU9mLmRlZmluZWQ7Ci19Ci0KLVRGdW5jdGlvbiogVEZ1bmN0aW9uOjpjbG9u
ZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLXsKLSAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0g
bmV3IFRGdW5jdGlvbigqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgcmV0dXJuIGZ1bmN0aW9uOwot
fQotCi1UU3ltYm9sVGFibGVMZXZlbCogVFN5bWJvbFRhYmxlTGV2ZWw6OmNsb25lKFRTdHJ1Y3R1
cmVNYXAmIHJlbWFwcGVyKQotewotICAgIFRTeW1ib2xUYWJsZUxldmVsICpzeW1UYWJsZUxldmVs
ID0gbmV3IFRTeW1ib2xUYWJsZUxldmVsKCk7Ci0gICAgdExldmVsOjppdGVyYXRvciBpdGVyOwot
ICAgIGZvciAoaXRlciA9IGxldmVsLmJlZ2luKCk7IGl0ZXIgIT0gbGV2ZWwuZW5kKCk7ICsraXRl
cikgewotICAgICAgICBzeW1UYWJsZUxldmVsLT5pbnNlcnQoKml0ZXItPnNlY29uZC0+Y2xvbmUo
cmVtYXBwZXIpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3ltVGFibGVMZXZlbDsKLX0KLQotdm9p
ZCBUU3ltYm9sVGFibGU6OmNvcHlUYWJsZShjb25zdCBUU3ltYm9sVGFibGUmIGNvcHlPZikKLXsK
LSAgICBUU3RydWN0dXJlTWFwIHJlbWFwcGVyOwotICAgIHVuaXF1ZUlkID0gY29weU9mLnVuaXF1
ZUlkOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29weU9mLnRhYmxlLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIHRhYmxlLnB1c2hfYmFjayhjb3B5T2YudGFibGVbaV0tPmNsb25l
KHJlbWFwcGVyKSk7Ci0gICAgfQotICAgIGZvciggdW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29w
eU9mLnByZWNpc2lvblN0YWNrLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHByZWNpc2lvblN0YWNr
LnB1c2hfYmFjayggY29weU9mLnByZWNpc2lvblN0YWNrW2ldICk7CisgICAgICAgIFRTeW1ib2wq
IHN5bWJvbCA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGlmIChzeW1ib2wtPmdldE5hbWUoKSA9PSBu
YW1lKQorICAgICAgICAgICAgc3ltYm9sLT5yZWxhdGVUb0V4dGVuc2lvbihleHQpOwogICAgIH0K
IH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9T
eW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
NyBAQAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGls
cy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIv
aW50ZXJtZWRpYXRlLmgiCiAKQEAgLTQ5LDEzICs1MCwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgc2V0
VW5pcXVlSWQoaW50IGlkKSB7IHVuaXF1ZUlkID0gaWQ7IH0KICAgICBpbnQgZ2V0VW5pcXVlSWQo
KSBjb25zdCB7IHJldHVybiB1bmlxdWVJZDsgfQotICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZv
U2luayAmaW5mb1NpbmspIGNvbnN0ID0gMDsJCi0gICAgVFN5bWJvbChjb25zdCBUU3ltYm9sJik7
Ci0gICAgdmlydHVhbCBUU3ltYm9sKiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0ID0gMDsK
KyAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBleHRlbnNp
b24gPSBleHQ7IH0KKyAgICBjb25zdCBUU3RyaW5nJiBnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJl
dHVybiBleHRlbnNpb247IH0KKworcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oVFN5bWJvbCk7CiAKLXByb3RlY3RlZDoKICAgICBjb25zdCBUU3RyaW5nICpuYW1lOwogICAg
IHVuc2lnbmVkIGludCB1bmlxdWVJZDsgICAgICAvLyBGb3IgcmVhbCBjb21wYXJpbmcgZHVyaW5n
IGNvZGUgZ2VuZXJhdGlvbgorICAgIFRTdHJpbmcgZXh0ZW5zaW9uOwogfTsKIAogLy8KQEAgLTcw
LDE1ICs3NCwxMyBAQCBwcm90ZWN0ZWQ6CiAvLwogY2xhc3MgVFZhcmlhYmxlIDogcHVibGljIFRT
eW1ib2wgewogcHVibGljOgotICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpuYW1lLCBjb25z
dCBUVHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUpLCB0eXBlKHQpLCB1
c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCksIGFycmF5SW5mb3JtYXRpb25UeXBlKDApIHsgfQor
ICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpuYW1lLCBjb25zdCBUVHlwZSYgdCwgYm9vbCB1
VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUpLCB0eXBlKHQpLCB1c2VyVHlwZSh1VCksIHVuaW9u
QXJyYXkoMCkgeyB9CiAgICAgdmlydHVhbCB+VFZhcmlhYmxlKCkgeyB9CiAgICAgdmlydHVhbCBi
b29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9ICAgIAogICAgIFRUeXBlJiBn
ZXRUeXBlKCkgeyByZXR1cm4gdHlwZTsgfSAgICAKICAgICBjb25zdCBUVHlwZSYgZ2V0VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KICAgICBib29sIGlzVXNlclR5cGUoKSBjb25zdCB7IHJl
dHVybiB1c2VyVHlwZTsgfQogICAgIHZvaWQgc2V0UXVhbGlmaWVyKFRRdWFsaWZpZXIgcXVhbGlm
aWVyKSB7IHR5cGUuc2V0UXVhbGlmaWVyKHF1YWxpZmllcik7IH0KLSAgICB2b2lkIHVwZGF0ZUFy
cmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlICp0KSB7IGFycmF5SW5mb3JtYXRpb25UeXBlID0gdDsg
fQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpIHsgcmV0dXJuIGFycmF5SW5m
b3JtYXRpb25UeXBlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChUSW5mb1NpbmsgJmluZm9T
aW5rKSBjb25zdDsKIApAQCAtMTAwLDE2ICsxMDIsMTUgQEAgcHVibGljOgogICAgICAgICBkZWxl
dGVbXSB1bmlvbkFycmF5OwogICAgICAgICB1bmlvbkFycmF5ID0gY29uc3RBcnJheTsgIAogICAg
IH0KLSAgICBUVmFyaWFibGUoY29uc3QgVFZhcmlhYmxlJiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBw
ZXIpOyAvLyBjb3B5IGNvbnN0cnVjdG9yCi0gICAgdmlydHVhbCBUVmFyaWFibGUqIGNsb25lKFRT
dHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKIAotcHJvdGVjdGVkOgorcHJpdmF0ZToKKyAgICBESVNB
TExPV19DT1BZX0FORF9BU1NJR04oVFZhcmlhYmxlKTsKKwogICAgIFRUeXBlIHR5cGU7CiAgICAg
Ym9vbCB1c2VyVHlwZTsKICAgICAvLyB3ZSBhcmUgYXNzdW1pbmcgdGhhdCBQb29sIEFsbG9jYXRv
ciB3aWxsIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgdG8gdW5pb25BcnJheQogICAgIC8vIHdo
ZW4gdGhpcyBvYmplY3QgaXMgZGVzdHJveWVkCiAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eTsKLSAgICBUVHlwZSAqYXJyYXlJbmZvcm1hdGlvblR5cGU7ICAvLyB0aGlzIGlzIHVzZWQgZm9y
IHVwZGF0aW5nIG1heEFycmF5U2l6ZSBpbiBhbGwgdGhlIHJlZmVyZW5jZXMgdG8gYSBnaXZlbiBz
eW1ib2wKIH07CiAKIC8vCkBAIC0xMTksMTEgKzEyMCw2IEBAIHByb3RlY3RlZDoKIHN0cnVjdCBU
UGFyYW1ldGVyIHsKICAgICBUU3RyaW5nICpuYW1lOwogICAgIFRUeXBlKiB0eXBlOwotICAgIHZv
aWQgY29weVBhcmFtKGNvbnN0IFRQYXJhbWV0ZXImIHBhcmFtLCBUU3RydWN0dXJlTWFwJiByZW1h
cHBlcikKLSAgICB7Ci0gICAgICAgIG5hbWUgPSBOZXdQb29sVFN0cmluZyhwYXJhbS5uYW1lLT5j
X3N0cigpKTsKLSAgICAgICAgdHlwZSA9IHBhcmFtLnR5cGUtPmNsb25lKHJlbWFwcGVyKTsKLSAg
ICB9CiB9OwogCiAvLwpAQCAtMTYzLDkgKzE1OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbGF0
ZVRvT3BlcmF0b3IoVE9wZXJhdG9yIG8pIHsgb3AgPSBvOyB9CiAgICAgVE9wZXJhdG9yIGdldEJ1
aWx0SW5PcCgpIGNvbnN0IHsgcmV0dXJuIG9wOyB9CiAKLSAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5z
aW9uKGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBleHRlbnNpb24gPSBleHQ7IH0KLSAgICBjb25zdCBU
U3RyaW5nJiBnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBleHRlbnNpb247IH0KLQogICAg
IHZvaWQgc2V0RGVmaW5lZCgpIHsgZGVmaW5lZCA9IHRydWU7IH0KICAgICBib29sIGlzRGVmaW5l
ZCgpIHsgcmV0dXJuIGRlZmluZWQ7IH0KIApAQCAtMTczLDE2ICsxNjYsMTUgQEAgcHVibGljOgog
ICAgIGNvbnN0IFRQYXJhbWV0ZXImIGdldFBhcmFtKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBw
YXJhbWV0ZXJzW2ldOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChUSW5mb1NpbmsgJmluZm9T
aW5rKSBjb25zdDsKLSAgICBURnVuY3Rpb24oY29uc3QgVEZ1bmN0aW9uJiwgVFN0cnVjdHVyZU1h
cCYgcmVtYXBwZXIpOwotICAgIHZpcnR1YWwgVEZ1bmN0aW9uKiBjbG9uZShUU3RydWN0dXJlTWFw
JiByZW1hcHBlcik7CiAKLXByb3RlY3RlZDoKK3ByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOKFRGdW5jdGlvbik7CisKICAgICB0eXBlZGVmIFRWZWN0b3I8VFBhcmFtZXRlcj4g
VFBhcmFtTGlzdDsKICAgICBUUGFyYW1MaXN0IHBhcmFtZXRlcnM7CiAgICAgVFR5cGUgcmV0dXJu
VHlwZTsKICAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAgIFRPcGVyYXRvciBvcDsKLSAgICBU
U3RyaW5nIGV4dGVuc2lvbjsKICAgICBib29sIGRlZmluZWQ7CiB9OwogCkBAIC0yMzEsNyArMjIz
LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVsYXRlVG9PcGVyYXRvcihjb25zdCBjaGFyKiBuYW1l
LCBUT3BlcmF0b3Igb3ApOwogICAgIHZvaWQgcmVsYXRlVG9FeHRlbnNpb24oY29uc3QgY2hhciog
bmFtZSwgY29uc3QgVFN0cmluZyYgZXh0KTsKICAgICB2b2lkIGR1bXAoVEluZm9TaW5rICZpbmZv
U2luaykgY29uc3Q7Ci0gICAgVFN5bWJvbFRhYmxlTGV2ZWwqIGNsb25lKFRTdHJ1Y3R1cmVNYXAm
IHJlbWFwcGVyKTsKIAogcHJvdGVjdGVkOgogICAgIHRMZXZlbCBsZXZlbDsKQEAgLTMyMSw3ICsz
MTIsNiBAQCBwdWJsaWM6CiAgICAgfQogICAgIGludCBnZXRNYXhTeW1ib2xJZCgpIHsgcmV0dXJu
IHVuaXF1ZUlkOyB9CiAgICAgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0Owot
ICAgIHZvaWQgY29weVRhYmxlKGNvbnN0IFRTeW1ib2xUYWJsZSYgY29weU9mKTsKIAogICAgIGJv
b2wgc2V0RGVmYXVsdFByZWNpc2lvbiggY29uc3QgVFB1YmxpY1R5cGUmIHR5cGUsIFRQcmVjaXNp
b24gcHJlYyApewogICAgICAgICBpZiAoSXNTYW1wbGVyKHR5cGUudHlwZSkpCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMuaAkocmV2aXNpb24gMTUy
MzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1R5cGVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcsMzAgKzcsODUgQEAKICNpZm5kZWYgX1RZUEVTX0lOQ0xVREVECiAj
ZGVmaW5lIF9UWVBFU19JTkNMVURFRAogCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIK
KwogI2luY2x1ZGUgImNvbXBpbGVyL0Jhc2VUeXBlcy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0Nv
bW1vbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL2RlYnVnLmgiCiAKLWNsYXNzIFRUeXBlOwogc3Ry
dWN0IFRQdWJsaWNUeXBlOworY2xhc3MgVFR5cGU7CiAKLS8vCi0vLyBOZWVkIHRvIGhhdmUgYXNz
b2NpYXRpb24gb2YgbGluZSBudW1iZXJzIHRvIHR5cGVzIGluIGEgbGlzdCBmb3IgYnVpbGRpbmcg
c3RydWN0cy4KLS8vCi1zdHJ1Y3QgVFR5cGVMaW5lIHsKLSAgICBUVHlwZSogdHlwZTsKLSAgICBp
bnQgbGluZTsKK2NsYXNzIFRGaWVsZAoreworcHVibGljOgorICAgIFBPT0xfQUxMT0NBVE9SX05F
V19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcik7CisgICAgVEZpZWxkKFRUeXBlKiB0eXBlLCBU
U3RyaW5nKiBuYW1lKSA6IG1UeXBlKHR5cGUpLCBtTmFtZShuYW1lKSB7fQorCisgICAgLy8gVE9E
TyhhbG9rcCk6IFdlIHNob3VsZCBvbmx5IHJldHVybiBjb25zdCB0eXBlLgorICAgIC8vIEZpeCBp
dCBieSB0d2Vha2luZyBncmFtbWFyLgorICAgIFRUeXBlKiB0eXBlKCkgeyByZXR1cm4gbVR5cGU7
IH0KKyAgICBjb25zdCBUVHlwZSogdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlOyB9CisKKyAg
ICBjb25zdCBUU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1OYW1lOyB9CisKK3ByaXZh
dGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRGaWVsZCk7CisgICAgVFR5cGUqIG1U
eXBlOworICAgIFRTdHJpbmcqIG1OYW1lOwogfTsKLXR5cGVkZWYgVFZlY3RvcjxUVHlwZUxpbmU+
IFRUeXBlTGlzdDsKIAotaW5saW5lIFRUeXBlTGlzdCogTmV3UG9vbFRUeXBlTGlzdCgpCit0eXBl
ZGVmIFRWZWN0b3I8VEZpZWxkKj4gVEZpZWxkTGlzdDsKK2lubGluZSBURmllbGRMaXN0KiBOZXdQ
b29sVEZpZWxkTGlzdCgpCiB7Ci0gICAgdm9pZCogbWVtb3J5ID0gR2xvYmFsUG9vbEFsbG9jYXRv
ci5hbGxvY2F0ZShzaXplb2YoVFR5cGVMaXN0KSk7Ci0gICAgcmV0dXJuIG5ldyhtZW1vcnkpIFRU
eXBlTGlzdDsKKyAgICB2b2lkKiBtZW1vcnkgPSBHbG9iYWxQb29sQWxsb2NhdG9yLmFsbG9jYXRl
KHNpemVvZihURmllbGRMaXN0KSk7CisgICAgcmV0dXJuIG5ldyhtZW1vcnkpIFRGaWVsZExpc3Q7
CiB9CiAKLXR5cGVkZWYgVE1hcDxUVHlwZUxpc3QqLCBUVHlwZUxpc3QqPiBUU3RydWN0dXJlTWFw
OwotdHlwZWRlZiBUTWFwPFRUeXBlTGlzdCosIFRUeXBlTGlzdCo+OjppdGVyYXRvciBUU3RydWN0
dXJlTWFwSXRlcmF0b3I7CitjbGFzcyBUU3RydWN0dXJlCit7CitwdWJsaWM6CisgICAgUE9PTF9B
TExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKTsKKyAgICBUU3RydWN0dXJl
KFRTdHJpbmcqIG5hbWUsIFRGaWVsZExpc3QqIGZpZWxkcykKKyAgICAgICAgOiBtTmFtZShuYW1l
KSwKKyAgICAgICAgICBtRmllbGRzKGZpZWxkcyksCisgICAgICAgICAgbU9iamVjdFNpemUoMCks
CisgICAgICAgICAgbURlZXBlc3ROZXN0aW5nKDApIHsKKyAgICB9CisKKyAgICBjb25zdCBUU3Ry
aW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1OYW1lOyB9CisgICAgY29uc3QgVEZpZWxkTGlz
dCYgZmllbGRzKCkgY29uc3QgeyByZXR1cm4gKm1GaWVsZHM7IH0KKworICAgIGNvbnN0IFRTdHJp
bmcmIG1hbmdsZWROYW1lKCkgY29uc3QgeworICAgICAgICBpZiAobU1hbmdsZWROYW1lLmVtcHR5
KCkpCisgICAgICAgICAgICBtTWFuZ2xlZE5hbWUgPSBidWlsZE1hbmdsZWROYW1lKCk7CisgICAg
ICAgIHJldHVybiBtTWFuZ2xlZE5hbWU7CisgICAgfQorICAgIHNpemVfdCBvYmplY3RTaXplKCkg
Y29uc3QgeworICAgICAgICBpZiAobU9iamVjdFNpemUgPT0gMCkKKyAgICAgICAgICAgIG1PYmpl
Y3RTaXplID0gY2FsY3VsYXRlT2JqZWN0U2l6ZSgpOworICAgICAgICByZXR1cm4gbU9iamVjdFNp
emU7CisgICAgfTsKKyAgICBpbnQgZGVlcGVzdE5lc3RpbmcoKSBjb25zdCB7CisgICAgICAgIGlm
IChtRGVlcGVzdE5lc3RpbmcgPT0gMCkKKyAgICAgICAgICAgIG1EZWVwZXN0TmVzdGluZyA9IGNh
bGN1bGF0ZURlZXBlc3ROZXN0aW5nKCk7CisgICAgICAgIHJldHVybiBtRGVlcGVzdE5lc3Rpbmc7
CisgICAgfQorICAgIGJvb2wgY29udGFpbnNBcnJheXMoKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFN0cnVjdHVyZSk7CisgICAgVFN0cmluZyBidWls
ZE1hbmdsZWROYW1lKCkgY29uc3Q7CisgICAgc2l6ZV90IGNhbGN1bGF0ZU9iamVjdFNpemUoKSBj
b25zdDsKKyAgICBpbnQgY2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBjb25zdDsKKworICAgIFRT
dHJpbmcqIG1OYW1lOworICAgIFRGaWVsZExpc3QqIG1GaWVsZHM7CisKKyAgICBtdXRhYmxlIFRT
dHJpbmcgbU1hbmdsZWROYW1lOworICAgIG11dGFibGUgc2l6ZV90IG1PYmplY3RTaXplOworICAg
IG11dGFibGUgaW50IG1EZWVwZXN0TmVzdGluZzsKK307CiAKIC8vCiAvLyBCYXNlIGNsYXNzIGZv
ciB0aGluZ3MgdGhhdCBoYXZlIGEgdHlwZS4KQEAgLTQxLDY5ICs5NiwxMyBAQCBwdWJsaWM6CiAg
ICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKQogICAgIFRU
eXBlKCkge30KICAgICBUVHlwZShUQmFzaWNUeXBlIHQsIFRQcmVjaXNpb24gcCwgVFF1YWxpZmll
ciBxID0gRXZxVGVtcG9yYXJ5LCBpbnQgcyA9IDEsIGJvb2wgbSA9IGZhbHNlLCBib29sIGEgPSBm
YWxzZSkgOgotICAgICAgICAgICAgdHlwZSh0KSwgcHJlY2lzaW9uKHApLCBxdWFsaWZpZXIocSks
IHNpemUocyksIG1hdHJpeChtKSwgYXJyYXkoYSksIGFycmF5U2l6ZSgwKSwKLSAgICAgICAgICAg
IG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVyZSgwKSwg
c3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwg
bWFuZ2xlZCgwKSwgdHlwZU5hbWUoMCkKKyAgICAgICAgICAgIHR5cGUodCksIHByZWNpc2lvbihw
KSwgcXVhbGlmaWVyKHEpLCBzaXplKHMpLCBtYXRyaXgobSksIGFycmF5KGEpLCBhcnJheVNpemUo
MCksIHN0cnVjdHVyZSgwKQogICAgIHsKICAgICB9CiAgICAgZXhwbGljaXQgVFR5cGUoY29uc3Qg
VFB1YmxpY1R5cGUgJnApOwotICAgIFRUeXBlKFRUeXBlTGlzdCogdXNlckRlZiwgY29uc3QgVFN0
cmluZyYgbiwgVFByZWNpc2lvbiBwID0gRWJwVW5kZWZpbmVkKSA6Ci0gICAgICAgICAgICB0eXBl
KEVidFN0cnVjdCksIHByZWNpc2lvbihwKSwgcXVhbGlmaWVyKEV2cVRlbXBvcmFyeSksIHNpemUo
MSksIG1hdHJpeChmYWxzZSksIGFycmF5KGZhbHNlKSwgYXJyYXlTaXplKDApLAotICAgICAgICAg
ICAgbWF4QXJyYXlTaXplKDApLCBhcnJheUluZm9ybWF0aW9uVHlwZSgwKSwgc3RydWN0dXJlKHVz
ZXJEZWYpLCBzdHJ1Y3R1cmVTaXplKDApLCBkZWVwZXN0U3RydWN0TmVzdGluZygwKSwgZmllbGRO
YW1lKDApLCBtYW5nbGVkKDApCi0gICAgewotICAgICAgICB0eXBlTmFtZSA9IE5ld1Bvb2xUU3Ry
aW5nKG4uY19zdHIoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb3B5VHlwZShjb25zdCBUVHlwZSYg
Y29weU9mLCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIHR5cGUgPSBj
b3B5T2YudHlwZTsKLSAgICAgICAgcHJlY2lzaW9uID0gY29weU9mLnByZWNpc2lvbjsKLSAgICAg
ICAgcXVhbGlmaWVyID0gY29weU9mLnF1YWxpZmllcjsKLSAgICAgICAgc2l6ZSA9IGNvcHlPZi5z
aXplOwotICAgICAgICBtYXRyaXggPSBjb3B5T2YubWF0cml4OwotICAgICAgICBhcnJheSA9IGNv
cHlPZi5hcnJheTsKLSAgICAgICAgYXJyYXlTaXplID0gY29weU9mLmFycmF5U2l6ZTsKLQotICAg
ICAgICBUU3RydWN0dXJlTWFwSXRlcmF0b3IgaXRlcjsKLSAgICAgICAgaWYgKGNvcHlPZi5zdHJ1
Y3R1cmUpIHsKLSAgICAgICAgICAgIGlmICgoaXRlciA9IHJlbWFwcGVyLmZpbmQoc3RydWN0dXJl
KSkgPT0gcmVtYXBwZXIuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIG5l
dyBzdHJ1Y3R1cmUgaGVyZQotICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IE5ld1Bvb2xUVHlw
ZUxpc3QoKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNv
cHlPZi5zdHJ1Y3R1cmUtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFRUeXBl
TGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxpbmUubGluZSA9ICgqY29w
eU9mLnN0cnVjdHVyZSlbaV0ubGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxpbmUudHlw
ZSA9ICgqY29weU9mLnN0cnVjdHVyZSlbaV0udHlwZS0+Y2xvbmUocmVtYXBwZXIpOwotICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnB1c2hfYmFjayh0eXBlTGluZSk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUg
PSBpdGVyLT5zZWNvbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgc3RydWN0dXJlID0gMDsKLQotICAgICAgICBmaWVsZE5hbWUgPSAwOwotICAgICAgICBpZiAo
Y29weU9mLmZpZWxkTmFtZSkKLSAgICAgICAgICAgIGZpZWxkTmFtZSA9IE5ld1Bvb2xUU3RyaW5n
KGNvcHlPZi5maWVsZE5hbWUtPmNfc3RyKCkpOwotICAgICAgICB0eXBlTmFtZSA9IDA7Ci0gICAg
ICAgIGlmIChjb3B5T2YudHlwZU5hbWUpCi0gICAgICAgICAgICB0eXBlTmFtZSA9IE5ld1Bvb2xU
U3RyaW5nKGNvcHlPZi50eXBlTmFtZS0+Y19zdHIoKSk7Ci0KLSAgICAgICAgbWFuZ2xlZCA9IDA7
Ci0gICAgICAgIGlmIChjb3B5T2YubWFuZ2xlZCkKLSAgICAgICAgICAgIG1hbmdsZWQgPSBOZXdQ
b29sVFN0cmluZyhjb3B5T2YubWFuZ2xlZC0+Y19zdHIoKSk7Ci0KLSAgICAgICAgc3RydWN0dXJl
U2l6ZSA9IGNvcHlPZi5zdHJ1Y3R1cmVTaXplOwotICAgICAgICBtYXhBcnJheVNpemUgPSBjb3B5
T2YubWF4QXJyYXlTaXplOwotICAgICAgICBkZWVwZXN0U3RydWN0TmVzdGluZyA9IGNvcHlPZi5k
ZWVwZXN0U3RydWN0TmVzdGluZzsKLSAgICAgICAgYXNzZXJ0KGNvcHlPZi5hcnJheUluZm9ybWF0
aW9uVHlwZSA9PSAwKTsKLSAgICAgICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOyAvLyBhcnJh
eUluZm9ybWF0aW9uVHlwZSBzaG91bGQgbm90IGJlIHNldCBmb3IgYnVpbHRJbiBzeW1ib2wgdGFi
bGUgbGV2ZWwKLSAgICB9Ci0KLSAgICBUVHlwZSogY2xvbmUoVFN0cnVjdHVyZU1hcCYgcmVtYXBw
ZXIpCisgICAgVFR5cGUoVFN0cnVjdHVyZSogdXNlckRlZiwgVFByZWNpc2lvbiBwID0gRWJwVW5k
ZWZpbmVkKSA6CisgICAgICAgICAgICB0eXBlKEVidFN0cnVjdCksIHByZWNpc2lvbihwKSwgcXVh
bGlmaWVyKEV2cVRlbXBvcmFyeSksIHNpemUoMSksIG1hdHJpeChmYWxzZSksIGFycmF5KGZhbHNl
KSwgYXJyYXlTaXplKDApLCBzdHJ1Y3R1cmUodXNlckRlZikKICAgICB7Ci0gICAgICAgIFRUeXBl
ICpuZXdUeXBlID0gbmV3IFRUeXBlKCk7Ci0gICAgICAgIG5ld1R5cGUtPmNvcHlUeXBlKCp0aGlz
LCByZW1hcHBlcik7Ci0KLSAgICAgICAgcmV0dXJuIG5ld1R5cGU7CiAgICAgfQogCiAgICAgVEJh
c2ljVHlwZSBnZXRCYXNpY1R5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlOyB9CkBAIC0xMTksMjIg
KzExOCw3IEBAIHB1YmxpYzoKICAgICBpbnQgZ2V0Tm9taW5hbFNpemUoKSBjb25zdCB7IHJldHVy
biBzaXplOyB9CiAgICAgdm9pZCBzZXROb21pbmFsU2l6ZShpbnQgcykgeyBzaXplID0gczsgfQog
ICAgIC8vIEZ1bGwgc2l6ZSBvZiBzaW5nbGUgaW5zdGFuY2Ugb2YgdHlwZQotICAgIGludCBnZXRP
YmplY3RTaXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGludCB0b3RhbFNpemU7Ci0KLSAgICAg
ICAgaWYgKGdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkKLSAgICAgICAgICAgIHRvdGFsU2l6
ZSA9IGdldFN0cnVjdFNpemUoKTsKLSAgICAgICAgZWxzZSBpZiAobWF0cml4KQotICAgICAgICAg
ICAgdG90YWxTaXplID0gc2l6ZSAqIHNpemU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRv
dGFsU2l6ZSA9IHNpemU7Ci0KLSAgICAgICAgaWYgKGlzQXJyYXkoKSkKLSAgICAgICAgICAgIHRv
dGFsU2l6ZSAqPSBzdGQ6Om1heChnZXRBcnJheVNpemUoKSwgZ2V0TWF4QXJyYXlTaXplKCkpOwot
Ci0gICAgICAgIHJldHVybiB0b3RhbFNpemU7Ci0gICAgfQorICAgIHNpemVfdCBnZXRPYmplY3RT
aXplKCkgY29uc3Q7CiAKICAgICBib29sIGlzTWF0cml4KCkgY29uc3QgeyByZXR1cm4gbWF0cml4
ID8gdHJ1ZSA6IGZhbHNlOyB9CiAgICAgdm9pZCBzZXRNYXRyaXgoYm9vbCBtKSB7IG1hdHJpeCA9
IG07IH0KQEAgLTE0Miw0NyArMTI2LDIwIEBAIHB1YmxpYzoKICAgICBib29sIGlzQXJyYXkoKSBj
b25zdCAgeyByZXR1cm4gYXJyYXkgPyB0cnVlIDogZmFsc2U7IH0KICAgICBpbnQgZ2V0QXJyYXlT
aXplKCkgY29uc3QgeyByZXR1cm4gYXJyYXlTaXplOyB9CiAgICAgdm9pZCBzZXRBcnJheVNpemUo
aW50IHMpIHsgYXJyYXkgPSB0cnVlOyBhcnJheVNpemUgPSBzOyB9Ci0gICAgaW50IGdldE1heEFy
cmF5U2l6ZSAoKSBjb25zdCB7IHJldHVybiBtYXhBcnJheVNpemU7IH0KLSAgICB2b2lkIHNldE1h
eEFycmF5U2l6ZSAoaW50IHMpIHsgbWF4QXJyYXlTaXplID0gczsgfQotICAgIHZvaWQgY2xlYXJB
cnJheW5lc3MoKSB7IGFycmF5ID0gZmFsc2U7IGFycmF5U2l6ZSA9IDA7IG1heEFycmF5U2l6ZSA9
IDA7IH0KLSAgICB2b2lkIHNldEFycmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlKiB0KSB7IGFycmF5
SW5mb3JtYXRpb25UeXBlID0gdDsgfQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9ybWF0aW9uVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIGFycmF5SW5mb3JtYXRpb25UeXBlOyB9CisgICAgdm9pZCBjbGVh
ckFycmF5bmVzcygpIHsgYXJyYXkgPSBmYWxzZTsgYXJyYXlTaXplID0gMDsgfQogCiAgICAgYm9v
bCBpc1ZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIHNpemUgPiAxICYmICFtYXRyaXg7IH0KICAgICBi
b29sIGlzU2NhbGFyKCkgY29uc3QgeyByZXR1cm4gc2l6ZSA9PSAxICYmICFtYXRyaXggJiYgIXN0
cnVjdHVyZTsgfQogCi0gICAgVFR5cGVMaXN0KiBnZXRTdHJ1Y3QoKSBjb25zdCB7IHJldHVybiBz
dHJ1Y3R1cmU7IH0KLSAgICB2b2lkIHNldFN0cnVjdChUVHlwZUxpc3QqIHMpIHsgc3RydWN0dXJl
ID0gczsgY29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCk7IH0KLQotICAgIGNvbnN0IFRTdHJp
bmcmIGdldFR5cGVOYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGFzc2VydCh0eXBlTmFtZSk7
Ci0gICAgICAgIHJldHVybiAqdHlwZU5hbWU7Ci0gICAgfQotICAgIHZvaWQgc2V0VHlwZU5hbWUo
Y29uc3QgVFN0cmluZyYgbikKLSAgICB7Ci0gICAgICAgIHR5cGVOYW1lID0gTmV3UG9vbFRTdHJp
bmcobi5jX3N0cigpKTsKLSAgICB9Ci0KLSAgICBib29sIGlzRmllbGQoKSBjb25zdCB7IHJldHVy
biBmaWVsZE5hbWUgIT0gMDsgfQotICAgIGNvbnN0IFRTdHJpbmcmIGdldEZpZWxkTmFtZSgpIGNv
bnN0Ci0gICAgewotICAgICAgICBhc3NlcnQoZmllbGROYW1lKTsKLSAgICAgICAgcmV0dXJuICpm
aWVsZE5hbWU7Ci0gICAgfQotICAgIHZvaWQgc2V0RmllbGROYW1lKGNvbnN0IFRTdHJpbmcmIG4p
Ci0gICAgewotICAgICAgICBmaWVsZE5hbWUgPSBOZXdQb29sVFN0cmluZyhuLmNfc3RyKCkpOwot
ICAgIH0KKyAgICBUU3RydWN0dXJlKiBnZXRTdHJ1Y3QoKSBjb25zdCB7IHJldHVybiBzdHJ1Y3R1
cmU7IH0KKyAgICB2b2lkIHNldFN0cnVjdChUU3RydWN0dXJlKiBzKSB7IHN0cnVjdHVyZSA9IHM7
IH0KIAotICAgIFRTdHJpbmcmIGdldE1hbmdsZWROYW1lKCkgewotICAgICAgICBpZiAoIW1hbmds
ZWQpIHsKLSAgICAgICAgICAgIG1hbmdsZWQgPSBOZXdQb29sVFN0cmluZygiIik7Ci0gICAgICAg
ICAgICBidWlsZE1hbmdsZWROYW1lKCptYW5nbGVkKTsKLSAgICAgICAgICAgICptYW5nbGVkICs9
ICc7JyA7CisgICAgY29uc3QgVFN0cmluZyYgZ2V0TWFuZ2xlZE5hbWUoKSBjb25zdCB7CisgICAg
ICAgIGlmIChtYW5nbGVkLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIG1hbmdsZWQgPSBidWlsZE1h
bmdsZWROYW1lKCk7CisgICAgICAgICAgICBtYW5nbGVkICs9ICc7JzsKICAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiAqbWFuZ2xlZDsKKyAgICAgICAgcmV0dXJuIG1hbmdsZWQ7CiAgICAgfQog
CiAgICAgYm9vbCBzYW1lRWxlbWVudFR5cGUoY29uc3QgVFR5cGUmIHJpZ2h0KSBjb25zdCB7CkBA
IC0yMzAsMzIgKzE4NywzNCBAQCBwdWJsaWM6CiAgICAgLy8gRm9yIHR5cGUgIm5lc3RpbmcyIiwg
dGhpcyBtZXRob2Qgd291bGQgcmV0dXJuIDIgLS0gdGhlIG51bWJlcgogICAgIC8vIG9mIHN0cnVj
dHVyZXMgdGhyb3VnaCB3aGljaCBpbmRpcmVjdGlvbiBtdXN0IG9jY3VyIHRvIHJlYWNoIHRoZQog
ICAgIC8vIGRlZXBlc3QgZmllbGQgKG5lc3RpbmcyLmZpZWxkMS5wb3NpdGlvbikuCi0gICAgaW50
IGdldERlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gZGVlcGVzdFN0cnVjdE5l
c3Rpbmc7IH0KKyAgICBpbnQgZ2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSBjb25zdCB7CisgICAg
ICAgIHJldHVybiBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmRlZXBlc3ROZXN0aW5nKCkgOiAwOwor
ICAgIH0KIAotICAgIGJvb2wgaXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkgY29uc3Q7Cisg
ICAgYm9vbCBpc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSBjb25zdCB7CisgICAgICAgIHJl
dHVybiBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmNvbnRhaW5zQXJyYXlzKCkgOiBmYWxzZTsKKyAg
ICB9CiAKLXByb3RlY3RlZDoKLSAgICB2b2lkIGJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYpOwot
ICAgIGludCBnZXRTdHJ1Y3RTaXplKCkgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlRGVlcGVzdFN0
cnVjdE5lc3RpbmcoKTsKK3ByaXZhdGU6CisgICAgVFN0cmluZyBidWlsZE1hbmdsZWROYW1lKCkg
Y29uc3Q7CiAKKyNpZmRlZiBfX0dOVUNfXworICAgIFRCYXNpY1R5cGUgdHlwZTsKKyAgICBUUHJl
Y2lzaW9uIHByZWNpc2lvbjsKKyAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKKyNlbHNlCiAgICAg
VEJhc2ljVHlwZSB0eXBlICAgICAgOiA2OwogICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOwogICAg
IFRRdWFsaWZpZXIgcXVhbGlmaWVyIDogNzsKKyNlbmRpZgogICAgIGludCBzaXplICAgICAgICAg
ICAgIDogODsgLy8gc2l6ZSBvZiB2ZWN0b3Igb3IgbWF0cml4LCBub3Qgc2l6ZSBvZiBhcnJheQog
ICAgIHVuc2lnbmVkIGludCBtYXRyaXggIDogMTsKICAgICB1bnNpZ25lZCBpbnQgYXJyYXkgICA6
IDE7CiAgICAgaW50IGFycmF5U2l6ZTsKLSAgICBpbnQgbWF4QXJyYXlTaXplOwotICAgIFRUeXBl
KiBhcnJheUluZm9ybWF0aW9uVHlwZTsKIAotICAgIFRUeXBlTGlzdCogc3RydWN0dXJlOyAgICAg
IC8vIDAgdW5sZXNzIHRoaXMgaXMgYSBzdHJ1Y3QKLSAgICBtdXRhYmxlIGludCBzdHJ1Y3R1cmVT
aXplOwotICAgIGludCBkZWVwZXN0U3RydWN0TmVzdGluZzsKLQotICAgIFRTdHJpbmcgKmZpZWxk
TmFtZTsgICAgICAgICAvLyBmb3Igc3RydWN0dXJlIGZpZWxkIG5hbWVzCi0gICAgVFN0cmluZyAq
bWFuZ2xlZDsKLSAgICBUU3RyaW5nICp0eXBlTmFtZTsgICAgICAgICAgLy8gZm9yIHN0cnVjdHVy
ZSBmaWVsZCB0eXBlIG5hbWUKKyAgICBUU3RydWN0dXJlKiBzdHJ1Y3R1cmU7ICAgICAgLy8gMCB1
bmxlc3MgdGhpcyBpcyBhIHN0cnVjdAorCisgICAgbXV0YWJsZSBUU3RyaW5nIG1hbmdsZWQ7CiB9
OwogCiAvLwpAQCAtMjc3LDkgKzIzNiw5IEBAIHN0cnVjdCBUUHVibGljVHlwZQogICAgIGJvb2wg
YXJyYXk7CiAgICAgaW50IGFycmF5U2l6ZTsKICAgICBUVHlwZSogdXNlckRlZjsKLSAgICBpbnQg
bGluZTsKKyAgICBUU291cmNlTG9jIGxpbmU7CiAKLSAgICB2b2lkIHNldEJhc2ljKFRCYXNpY1R5
cGUgYnQsIFRRdWFsaWZpZXIgcSwgaW50IGxuID0gMCkKKyAgICB2b2lkIHNldEJhc2ljKFRCYXNp
Y1R5cGUgYnQsIFRRdWFsaWZpZXIgcSwgY29uc3QgVFNvdXJjZUxvYyYgbG4pCiAgICAgewogICAg
ICAgICB0eXBlID0gYnQ7CiAgICAgICAgIHF1YWxpZmllciA9IHE7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcAko
cmV2aXNpb24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1ZhcmlhYmxlSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxMiArMTMxLDEzIEBAIHZv
aWQgZ2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8oY29uc3QgVFQKIHsKICAgICBBU1NFUlQodHlw
ZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpOwogCi0gICAgY29uc3QgVFR5cGVMaXN0KiBz
dHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c3RydWN0dXJlLT5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBUVHlwZSogZmllbGRUeXBl
ID0gKCpzdHJ1Y3R1cmUpW2ldLnR5cGU7Ci0gICAgICAgIGdldFZhcmlhYmxlSW5mbygqZmllbGRU
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArICIuIiArIGZpZWxkVHlwZS0+Z2V0
RmllbGROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXBwZWROYW1lICsgIi4iICsg
VEludGVybVRyYXZlcnNlcjo6aGFzaChmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpLCBoYXNoRnVu
Y3Rpb24pLAorICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCkt
PmZpZWxkcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGNvbnN0IFRUeXBlJiBmaWVsZFR5cGUgPSAqKGZpZWxkc1tpXS0+dHlwZSgp
KTsKKyAgICAgICAgY29uc3QgVFN0cmluZyYgZmllbGROYW1lID0gZmllbGRzW2ldLT5uYW1lKCk7
CisgICAgICAgIGdldFZhcmlhYmxlSW5mbyhmaWVsZFR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lICsgIi4iICsgZmllbGROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgbWFw
cGVkTmFtZSArICIuIiArIFRJbnRlcm1UcmF2ZXJzZXI6Omhhc2goZmllbGROYW1lLCBoYXNoRnVu
Y3Rpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgaW5mb0xpc3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBoYXNoRnVuY3Rpb24pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3Rh
YmxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
ODkgQEAKKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlX2J1aWx0aW5fc3ltYm9sX3RhYmxlLnB5LgorLy8gICAgICAgICAgICAgICAgICog
RE8gTk9UIEhBTkQgTU9ESUZZICoKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpbmNsdWRlICJjb21waWxlci9idWlsdGlu
X3N5bWJvbF90YWJsZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCisKK3N0
YXRpYyB2b2lkIGJ1aWx0aW4xKFRTeW1ib2xUYWJsZSogdCwgVFR5cGUqIHJ2YWx1ZSwgY29uc3Qg
Y2hhciogbmFtZSwgVFR5cGUqIHB0eXBlMSwgY29uc3QgY2hhciogcG5hbWUxKQoreworICBURnVu
Y3Rpb24qIGYgPSBuZXcgVEZ1bmN0aW9uKG5ldyBUU3RyaW5nKG5hbWUpLCAqcnZhbHVlKTsKKyAg
VFBhcmFtZXRlciBwYXJhbSA9IHtuZXcgVFN0cmluZyhwbmFtZTEpLCBwdHlwZTF9OworICBmLT5h
ZGRQYXJhbWV0ZXIocGFyYW0pOworICB0LT5pbnNlcnQoKmYpOworfQorCitzdGF0aWMgdm9pZCBi
dWlsdGluMihUU3ltYm9sVGFibGUqIHQsIFRUeXBlKiBydmFsdWUsIGNvbnN0IGNoYXIqIG5hbWUs
IFRUeXBlKiBwdHlwZTEsIGNvbnN0IGNoYXIqIHBuYW1lMSwgVFR5cGUqIHB0eXBlMiwgY29uc3Qg
Y2hhciogcG5hbWUyKQoreworICBURnVuY3Rpb24qIGYgPSBuZXcgVEZ1bmN0aW9uKG5ldyBUU3Ry
aW5nKG5hbWUpLCAqcnZhbHVlKTsKKyAgVFBhcmFtZXRlciBwYXJhbTEgPSB7bmV3IFRTdHJpbmco
cG5hbWUxKSwgcHR5cGUxfTsKKyAgZi0+YWRkUGFyYW1ldGVyKHBhcmFtMSk7CisgIFRQYXJhbWV0
ZXIgcGFyYW0yID0ge25ldyBUU3RyaW5nKHBuYW1lMiksIHB0eXBlMn07CisgIGYtPmFkZFBhcmFt
ZXRlcihwYXJhbTIpOworICB0LT5pbnNlcnQoKmYpOworfQorCitzdGF0aWMgdm9pZCBidWlsdGlu
MyhUU3ltYm9sVGFibGUqIHQsIFRUeXBlKiBydmFsdWUsIGNvbnN0IGNoYXIqIG5hbWUsIFRUeXBl
KiBwdHlwZTEsIGNvbnN0IGNoYXIqIHBuYW1lMSwgVFR5cGUqIHB0eXBlMiwgY29uc3QgY2hhciog
cG5hbWUyLCBUVHlwZSogcHR5cGUzLCBjb25zdCBjaGFyKiBwbmFtZTMpCit7CisgIFRGdW5jdGlv
biogZiA9IG5ldyBURnVuY3Rpb24obmV3IFRTdHJpbmcobmFtZSksICpydmFsdWUpOworICBUUGFy
YW1ldGVyIHBhcmFtMSA9IHtuZXcgVFN0cmluZyhwbmFtZTEpLCBwdHlwZTF9OworICBmLT5hZGRQ
YXJhbWV0ZXIocGFyYW0xKTsKKyAgVFBhcmFtZXRlciBwYXJhbTIgPSB7bmV3IFRTdHJpbmcocG5h
bWUyKSwgcHR5cGUyfTsKKyAgZi0+YWRkUGFyYW1ldGVyKHBhcmFtMik7CisgIFRQYXJhbWV0ZXIg
cGFyYW0zID0ge25ldyBUU3RyaW5nKHBuYW1lMyksIHB0eXBlM307CisgIGYtPmFkZFBhcmFtZXRl
cihwYXJhbTMpOworICB0LT5pbnNlcnQoKmYpOworfQorCit2b2lkIEluc2VydEJ1aWx0SW5GdW5j
dGlvbnNDb21tb24oY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsIFRTeW1ib2xU
YWJsZSogdCkgeworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImRlZ3Jl
ZXMiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmFkaWFucyIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJkZWdyZWVzIik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIpOworICAg
IGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMiKTsKKyAgICBidWls
dGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAiZGVncmVlcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgImRlZ3JlZXMiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmFkaWFucyIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJkZWdyZWVzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAi
ZGVncmVlcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNpbiIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJzaW4iLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYW5n
bGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAic2luIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgInNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiY29z
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNvcyIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJh
bmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAidGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgInRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ0
YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGFuIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
ImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFzaW4iLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJhc2luIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAiYXNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImFzaW4iLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhY29zIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAiYWNvcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgImFjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJhY29zIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
IngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5X292ZXJfeCIpOworICAgIGJ1
aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIs
IGZhbHNlLCBmYWxzZSksICJhdGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInlfb3Zlcl94Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgImF0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieV9vdmVyX3giKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ5X292ZXJfeCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJwb3ci
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInBvdyIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicG93IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
IngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJwb3ciLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7Cisg
ICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV4cDIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1
aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIs
IGZhbHNlLCBmYWxzZSksICJleHAyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAiZXhwMiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImV4cDIiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJsb2cyIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBi
dWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAibG9nMiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgImxvZzIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJsb2cyIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic3FydCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgInNxcnQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJzcXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAic3FydCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImludmVyc2VzcXJ0IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiaW52ZXJzZXNxcnQiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJpbnZlcnNlc3FydCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRp
bjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgImludmVyc2VzcXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBi
dWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAic2lnbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInNpZ24iLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJzaWduIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBi
dWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAic2lnbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgImZsb29yIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZmxvb3IiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJmbG9vciIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7Cisg
ICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgImZsb29yIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAiY2VpbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNlaWwi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjZWlsIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY2VpbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZnJh
Y3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJmcmFjdCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4
Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWls
dGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4y
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIm1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJt
b2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm1vZCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBm
YWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
eCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1pbiIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWluIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5
Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1pbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsK
KyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWluIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVp
bHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
bWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJtYXgi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiY2xhbXAiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFsIik7CisgICAgYnVpbHRpbjModCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWluVmFsIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1heFZhbCIp
OworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1pblZh
bCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY2xhbXAiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFsIik7CisgICAgYnVpbHRpbjModCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWluVmFsIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1heFZhbCIp
OworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm1pblZh
bCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY2xhbXAiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibWF4VmFsIik7CisgICAgYnVpbHRpbjModCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYSIpOworICAgIGJ1aWx0
aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJtaXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImEiKTsKKyAg
ICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAibWl4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJh
Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAiYSIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJtaXgiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgImEiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWl4IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJz
dGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJz
dGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJz
dGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJz
dGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJz
dGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJz
dGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJz
dGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJz
bW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAic21vb3Roc3RlcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJlZGdlMCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJl
ZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInNtb290aHN0ZXAiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4zKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UxIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
IngiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic21vb3Roc3RlcCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJlZGdlMCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInNtb290
aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1
aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2Ux
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWls
dGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZGlzdGFuY2Ui
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZGlzdGFu
Y2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZGlz
dGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
ZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBidWlsdGluMih0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAiZG90IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJk
b3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImRvdCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZG90IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBm
YWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjcm9zcyIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWls
dGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBm
YWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMyh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsK
KyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJJ
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWlsdGluMyh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIk4iKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIk4iKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIk4iKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIk4iKTsKKyAg
ICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAicmVmcmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIk4iLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAiZXRhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInJlZnJhY3QiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiSSIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJOIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImV0YSIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJyZWZyYWN0Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJldGEiKTsKKyAgICBidWlsdGluMyh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAicmVmcmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIk4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZXRhIik7CisgICAgYnVp
bHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
dHJ1ZSwgZmFsc2UpLCAibWF0cml4Q29tcE11bHQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCB0cnVlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgdHJ1ZSwgZmFsc2UpLCAieSIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIHRydWUsIGZhbHNlKSwgIm1hdHJpeENvbXBNdWx0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgdHJ1ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIHRydWUsIGZhbHNlKSwgInkiKTsK
KyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCB0cnVlLCBmYWxzZSksICJtYXRyaXhDb21wTXVsdCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIHRydWUsIGZhbHNlKSwgIngiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCB0cnVlLCBmYWxzZSksICJ5
Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5
Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5
Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5
Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0SW50LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsK
KyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbiIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJ
bnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVp
bHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAibGVzc1RoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIp
OworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW5FcXVhbCIsIG5ldyBUVHlwZShF
YnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuRXF1YWwiLCBuZXcgVFR5cGUo
RWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBu
ZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbkVxdWFsIiwgbmV3IFRUeXBl
KEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iiwg
bmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW4iLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW4iLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
eCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW4iLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW4iLCBu
ZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbiIsIG5l
dyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuIiwgbmV3
IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW5FcXVhbCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhh
bkVxdWFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImdy
ZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwg
bmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAiZ3JlYXRlclRoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4y
KHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWls
dGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJncmVhdGVyVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidElu
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAg
YnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVp
bHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIo
dCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSks
ICJlcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVxdWFs
IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImVxdWFsIiwgbmV3IFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJlcXVhbCIsIG5ldyBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSks
ICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5
cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInki
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShF
YnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOwor
ICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidElu
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAg
YnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWls
dGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAiYW55IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFueSIs
IG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhbnkiLCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAiYWxsIiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImFsbCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhbGwiLCBuZXcgVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQs
IG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIm5vdCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJub3QiLCBuZXcg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRCIsIG5ldyBUVHlwZShFYnRT
YW1wbGVyMkQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2Ft
cGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRQ
cm9qIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNvb3JkIik7CisgICAgYnVpbHRpbjIo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgInRleHR1cmUyRFByb2oiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJELCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY29v
cmQiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZUN1YmUiLCBuZXcgVFR5cGUoRWJ0
U2FtcGxlckN1YmUsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
c2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFn
ZV9leHRlcm5hbCkgeworICAgICAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJEIiwgbmV3
IFRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUywgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIik7CisgICAgfQorICAgIGlm
IChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCkgeworICAgICAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAidGV4dHVyZTJEUHJvaiIsIG5ldyBUVHlwZShFYnRTYW1wbGVyRXh0ZXJuYWxPRVMs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJjb29yZCIpOworICAgIH0KKyAgICBpZiAocmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0
ZXJuYWwpIHsKKyAgICAgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFByb2oiLCBuZXcg
VFR5cGUoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAgICB9CisgICAgaWYg
KHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKKyAgICAgICAgYnVpbHRpbjIodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgInRleHR1cmUyRFJlY3QiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJEUmVjdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNv
b3JkIik7CisgICAgfQorICAgIGlmIChyZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFuZ2xlKSB7
CisgICAgICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRSZWN0UHJvaiIsIG5ldyBUVHlw
ZShFYnRTYW1wbGVyMkRSZWN0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAgICB9CisgICAgaWYgKHJlc291cmNl
cy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKKyAgICAgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRl
eHR1cmUyRFJlY3RQcm9qIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRFJlY3QsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJjb29yZCIp
OworICAgIH0KK30KKwordm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KGNvbnN0IFNo
QnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLCBUU3ltYm9sVGFibGUqIHQpIHsKKyAgICBidWls
dGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBm
YWxzZSwgZmFsc2UpLCAidGV4dHVyZTJETG9kIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
ImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImxvZCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRQ
cm9qTG9kIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIp
OworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRQcm9qTG9kIiwgbmV3IFRUeXBlKEVi
dFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJz
YW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOworICAgIGJ1aWx0aW4zKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ0ZXh0dXJlQ3ViZUxvZCIsIG5ldyBUVHlwZShFYnRTYW1wbGVyQ3ViZSwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNvb3Jk
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImxvZCIpOworfQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xf
dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworI2lmbmRlZiBfQlVJTFRJTl9TWU1CT0xfVEFCTEVfSU5DTFVERURfCisjZGVmaW5lIF9CVUlM
VElOX1NZTUJPTF9UQUJMRV9JTkNMVURFRF8KKworI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFu
Zy5oIgorCitjbGFzcyBUU3ltYm9sVGFibGU7CisKK2V4dGVybiB2b2lkIEluc2VydEJ1aWx0SW5G
dW5jdGlvbnNDb21tb24oY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsIFRTeW1i
b2xUYWJsZSogdCk7CitleHRlcm4gdm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KGNv
bnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLCBUU3ltYm9sVGFibGUqIHQpOworCisj
ZW5kaWYgLy8gX0JVSUxUSU5fU1lNQk9MX1RBQkxFX0lOQ0xVREVEXwoKUHJvcGVydHkgY2hhbmdl
cyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9s
X3RhYmxlLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAjIwor
KgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwJKHJldmlzaW9uIDE1MjMyMykKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDcgKzQ3LDEwIEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhF
UiAoZ2xzbGEKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDEwMikKICNlbmRpZgogCi0jZGVm
aW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZhbC0+bGV4LmxpbmUgPSB5eWxpbmVubzsKKyNkZWZpbmUg
WVlfVVNFUl9BQ1RJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeXls
bG9jLT5maXJzdF9maWxlID0geXlsbG9jLT5sYXN0X2ZpbGUgPSB5eWNvbHVtbjsgXAorICAgIHl5
bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGxvYy0+bGFzdF9saW5lID0geXlsaW5lbm87CisKICNkZWZp
bmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1heF9zaXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5n
X2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5c2Nhbm5lcik7CiAKQEAgLTU3LDEwICs2MCw4IEBAIHN0
YXRpYyBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW4KICV9CiAKICVvcHRpb24gbm95
eXdyYXAgbm91bnB1dCBuZXZlci1pbnRlcmFjdGl2ZQotJW9wdGlvbiB5eWxpbmVubyByZWVudHJh
bnQgYmlzb24tYnJpZGdlCi0lb3B0aW9uIHN0YWNrCislb3B0aW9uIHl5bGluZW5vIHJlZW50cmFu
dCBiaXNvbi1icmlkZ2UgYmlzb24tbG9jYXRpb25zCiAlb3B0aW9uIGV4dHJhLXR5cGU9IlRQYXJz
ZUNvbnRleHQqIgotJXggQ09NTUVOVCBGSUVMRFMKIAogRCAgICAgICAgICAgWzAtOV0KIEwgICAg
ICAgICAgIFthLXpBLVpfXQpAQCAtNzAsNzMgKzcxLDYwIEBAIE8gICAgICAgICAgIFswLTddCiAK
ICUlCiAKLSV7Ci0gICAgVFBhcnNlQ29udGV4dCogY29udGV4dCA9IHl5ZXh0cmE7Ci0lfQotCi0g
ICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMgKi8KLSIvLyJbXlxuXSogOworImludmFyaWFudCIg
ICAgeyByZXR1cm4gSU5WQVJJQU5UOyB9CisiaGlnaHAiICAgICAgICB7IHJldHVybiBISUdIX1BS
RUNJU0lPTjsgfQorIm1lZGl1bXAiICAgICAgeyByZXR1cm4gTUVESVVNX1BSRUNJU0lPTjsgfQor
Imxvd3AiICAgICAgICAgeyByZXR1cm4gTE9XX1BSRUNJU0lPTjsgfQorInByZWNpc2lvbiIgICAg
eyByZXR1cm4gUFJFQ0lTSU9OOyB9CisKKyJhdHRyaWJ1dGUiICAgIHsgcmV0dXJuIEFUVFJJQlVU
RTsgfQorImNvbnN0IiAgICAgICAgeyByZXR1cm4gQ09OU1RfUVVBTDsgfQorInVuaWZvcm0iICAg
ICAgeyByZXR1cm4gVU5JRk9STTsgfQorInZhcnlpbmciICAgICAgeyByZXR1cm4gVkFSWUlORzsg
fQorCisiYnJlYWsiICAgICAgICB7IHJldHVybiBCUkVBSzsgfQorImNvbnRpbnVlIiAgICAgeyBy
ZXR1cm4gQ09OVElOVUU7IH0KKyJkbyIgICAgICAgICAgIHsgcmV0dXJuIERPOyB9CisiZm9yIiAg
ICAgICAgICB7IHJldHVybiBGT1I7IH0KKyJ3aGlsZSIgICAgICAgIHsgcmV0dXJuIFdISUxFOyB9
CisKKyJpZiIgICAgICAgICAgIHsgcmV0dXJuIElGOyB9CisiZWxzZSIgICAgICAgICB7IHJldHVy
biBFTFNFOyB9CisKKyJpbiIgICAgICAgICAgIHsgcmV0dXJuIElOX1FVQUw7IH0KKyJvdXQiICAg
ICAgICAgIHsgcmV0dXJuIE9VVF9RVUFMOyB9CisiaW5vdXQiICAgICAgICB7IHJldHVybiBJTk9V
VF9RVUFMOyB9CisKKyJmbG9hdCIgICAgICAgIHsgcmV0dXJuIEZMT0FUX1RZUEU7IH0KKyJpbnQi
ICAgICAgICAgIHsgcmV0dXJuIElOVF9UWVBFOyB9Cisidm9pZCIgICAgICAgICB7IHJldHVybiBW
T0lEX1RZUEU7IH0KKyJib29sIiAgICAgICAgIHsgcmV0dXJuIEJPT0xfVFlQRTsgfQorInRydWUi
ICAgICAgICAgeyB5eWx2YWwtPmxleC5iID0gdHJ1ZTsgIHJldHVybiBCT09MQ09OU1RBTlQ7IH0K
KyJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyByZXR1cm4gQk9PTENPTlNU
QU5UOyB9CisKKyJkaXNjYXJkIiAgICAgIHsgcmV0dXJuIERJU0NBUkQ7IH0KKyJyZXR1cm4iICAg
ICAgIHsgcmV0dXJuIFJFVFVSTjsgfQorCisibWF0MiIgICAgICAgICB7IHJldHVybiBNQVRSSVgy
OyB9CisibWF0MyIgICAgICAgICB7IHJldHVybiBNQVRSSVgzOyB9CisibWF0NCIgICAgICAgICB7
IHJldHVybiBNQVRSSVg0OyB9CisKKyJ2ZWMyIiAgICAgICAgIHsgcmV0dXJuIFZFQzI7IH0KKyJ2
ZWMzIiAgICAgICAgIHsgcmV0dXJuIFZFQzM7IH0KKyJ2ZWM0IiAgICAgICAgIHsgcmV0dXJuIFZF
QzQ7IH0KKyJpdmVjMiIgICAgICAgIHsgcmV0dXJuIElWRUMyOyB9CisiaXZlYzMiICAgICAgICB7
IHJldHVybiBJVkVDMzsgfQorIml2ZWM0IiAgICAgICAgeyByZXR1cm4gSVZFQzQ7IH0KKyJidmVj
MiIgICAgICAgIHsgcmV0dXJuIEJWRUMyOyB9CisiYnZlYzMiICAgICAgICB7IHJldHVybiBCVkVD
MzsgfQorImJ2ZWM0IiAgICAgICAgeyByZXR1cm4gQlZFQzQ7IH0KKworInNhbXBsZXIyRCIgICAg
ICAgICAgeyByZXR1cm4gU0FNUExFUjJEOyB9Cisic2FtcGxlckN1YmUiICAgICAgICB7IHJldHVy
biBTQU1QTEVSQ1VCRTsgfQorInNhbXBsZXJFeHRlcm5hbE9FUyIgeyByZXR1cm4gU0FNUExFUl9F
WFRFUk5BTF9PRVM7IH0KKyJzYW1wbGVyMkRSZWN0IiAgICAgIHsgcmV0dXJuIFNBTVBMRVIyRFJF
Q1Q7IH0KIAotICAgIC8qIE11bHRpLWxpbmUgY29tbWVudHMgKi8KLSIvKiIgICAgICAgICAgIHsg
eXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9Ci08Q09NTUVOVD4uIHwKLTxDT01N
RU5UPlxuIDsKLTxDT01NRU5UPiIqLyIgIHsgeXlfcG9wX3N0YXRlKHl5c2Nhbm5lcik7IH0KLQot
ImludmFyaWFudCIgICAgeyByZXR1cm4oSU5WQVJJQU5UKTsgfQotImhpZ2hwIiAgICAgICAgeyBy
ZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Ci0ibWVkaXVtcCIgICAgICB7IHJldHVybihNRURJVU1f
UFJFQ0lTSU9OKTsgfQotImxvd3AiICAgICAgICAgeyByZXR1cm4oTE9XX1BSRUNJU0lPTik7IH0K
LSJwcmVjaXNpb24iICAgIHsgcmV0dXJuKFBSRUNJU0lPTik7IH0KLQotImF0dHJpYnV0ZSIgICAg
eyByZXR1cm4oQVRUUklCVVRFKTsgfQotImNvbnN0IiAgICAgICAgeyByZXR1cm4oQ09OU1RfUVVB
TCk7IH0KLSJ1bmlmb3JtIiAgICAgIHsgcmV0dXJuKFVOSUZPUk0pOyB9Ci0idmFyeWluZyIgICAg
ICB7IHJldHVybihWQVJZSU5HKTsgfQotCi0iYnJlYWsiICAgICAgICB7IHJldHVybihCUkVBSyk7
IH0KLSJjb250aW51ZSIgICAgIHsgcmV0dXJuKENPTlRJTlVFKTsgfQotImRvIiAgICAgICAgICAg
eyByZXR1cm4oRE8pOyB9Ci0iZm9yIiAgICAgICAgICB7IHJldHVybihGT1IpOyB9Ci0id2hpbGUi
ICAgICAgICB7IHJldHVybihXSElMRSk7IH0KLQotImlmIiAgICAgICAgICAgeyByZXR1cm4oSUYp
OyB9Ci0iZWxzZSIgICAgICAgICB7IHJldHVybihFTFNFKTsgfQotCi0iaW4iICAgICAgICAgICB7
IHJldHVybihJTl9RVUFMKTsgfQotIm91dCIgICAgICAgICAgeyByZXR1cm4oT1VUX1FVQUwpOyB9
Ci0iaW5vdXQiICAgICAgICB7IHJldHVybihJTk9VVF9RVUFMKTsgfQotCi0iZmxvYXQiICAgICAg
ICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihGTE9BVF9UWVBFKTsgfQot
ImludCIgICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oSU5U
X1RZUEUpOyB9Ci0idm9pZCIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7
IHJldHVybihWT0lEX1RZUEUpOyB9Ci0iYm9vbCIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVy
VHlwZSA9IHRydWU7IHJldHVybihCT09MX1RZUEUpOyB9Ci0idHJ1ZSIgICAgICAgICB7IHl5bHZh
bC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuKEJPT0xDT05TVEFOVCk7IH0KLSJmYWxzZSIgICAgICAg
IHsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyByZXR1cm4oQk9PTENPTlNUQU5UKTsgfQotCi0iZGlz
Y2FyZCIgICAgICB7IHJldHVybihESVNDQVJEKTsgfQotInJldHVybiIgICAgICAgeyByZXR1cm4o
UkVUVVJOKTsgfQotCi0ibWF0MiIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRy
dWU7IHJldHVybihNQVRSSVgyKTsgfQotIm1hdDMiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRl
clR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMyk7IH0KLSJtYXQ0IiAgICAgICAgIHsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJWDQpOyB9Ci0KLSJ2ZWMyIiAgICAg
ICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChWRUMyKTsgfQotInZl
YzMiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzMp
OyB9Ci0idmVjNCIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVy
biAoVkVDNCk7IH0KLSJpdmVjMiIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuIChJVkVDMik7IH0KLSJpdmVjMyIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMyk7IH0KLSJpdmVjNCIgICAgICAgIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDNCk7IH0KLSJidmVjMiIgICAgICAgIHsg
Y29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDMik7IH0KLSJidmVjMyIg
ICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDMyk7IH0K
LSJidmVjNCIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChC
VkVDNCk7IH0KLQotInNhbXBsZXIyRCIgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0
cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Ci0ic2FtcGxlckN1YmUiICAgICB7IGNvbnRleHQtPmxl
eEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQotInNhbXBsZXJFeHRlcm5h
bE9FUyIgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUl9FWFRF
Uk5BTF9PRVM7IH0KLSJzYW1wbGVyMkRSZWN0IiB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRy
dWU7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9Ci0KLSJzdHJ1Y3QiICAgICAgIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKFNUUlVDVCk7IH0KKyJzdHJ1Y3QiICAgICAgIHsg
cmV0dXJuIFNUUlVDVDsgfQogCiAiYXNtIiAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3Jk
KHl5c2Nhbm5lcik7IH0KIApAQCAtMTgzLDEzICsxNzEsMTEgQEAgTyAgICAgICAgICAgWzAtN10K
ICJmdmVjMyIgICAgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQogImZ2
ZWM0IiAgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAKLSJzYW1w
bGVyMUQiICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQotInNhbXBsZXIz
RCIgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Ci0KLSJzYW1wbGVyMURT
aGFkb3ciIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQotInNhbXBsZXIyRFNo
YWRvdyIgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Ci0KLSJzYW1wbGVyM0RS
ZWN0IiB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMUQiICAg
ICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0Qi
ICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVy
MURTaGFkb3ciICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1w
bGVyMkRTaGFkb3ciICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJz
YW1wbGVyM0RSZWN0IiAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0K
ICJzYW1wbGVyMkRSZWN0U2hhZG93IiB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7
IH0KIAogInNpemVvZiIgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9
CkBAIC0yMDMsNzIgKzE4OSw2NCBAQCBPICAgICAgICAgICBbMC03XQogICAgcmV0dXJuIGNoZWNr
X3R5cGUoeXlzY2FubmVyKTsKIH0KIAotMFt4WF17SH0rICAgICAgICAgeyB5eWx2YWwtPmxleC5p
ID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05T
VEFOVCk7IH0KLTB7T30rICAgICAgICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0
PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Ci0we0R9
KyAgICAgICAgICAgICB7IGNvbnRleHQtPmVycm9yKHl5bGluZW5vLCAiSW52YWxpZCBPY3RhbCBu
dW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+cmVjb3ZlcigpOyByZXR1cm4gMDt9Ci17RH0rICAg
ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRl
eHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQotCi17RH0re0V9ICAgICAgICAgICB7
IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJl
dHVybihGTE9BVENPTlNUQU5UKTsgfQote0R9KyIuIntEfSooe0V9KT8geyB5eWx2YWwtPmxleC5m
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4oRkxPQVRDT05T
VEFOVCk7IH0KLSIuIntEfSsoe0V9KT8gICAgIHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0
PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Ci0KLSIr
PSIgICAgICAgICAgICB7ICByZXR1cm4oQUREX0FTU0lHTik7IH0KLSItPSIgICAgICAgICAgICB7
ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KLSIqPSIgICAgICAgICAgICB7ICByZXR1cm4oTVVMX0FT
U0lHTik7IH0KLSIvPSIgICAgICAgICAgICB7ICByZXR1cm4oRElWX0FTU0lHTik7IH0KLSIlPSIg
ICAgICAgICAgICB7ICByZXR1cm4oTU9EX0FTU0lHTik7IH0KLSI8PD0iICAgICAgICAgICB7ICBy
ZXR1cm4oTEVGVF9BU1NJR04pOyB9Ci0iPj49IiAgICAgICAgICAgeyAgcmV0dXJuKFJJR0hUX0FT
U0lHTik7IH0KLSImPSIgICAgICAgICAgICB7ICByZXR1cm4oQU5EX0FTU0lHTik7IH0KLSJePSIg
ICAgICAgICAgICB7ICByZXR1cm4oWE9SX0FTU0lHTik7IH0KLSJ8PSIgICAgICAgICAgICB7ICBy
ZXR1cm4oT1JfQVNTSUdOKTsgfQotCi0iKysiICAgICAgICAgICAgeyAgcmV0dXJuKElOQ19PUCk7
IH0KLSItLSIgICAgICAgICAgICB7ICByZXR1cm4oREVDX09QKTsgfQotIiYmIiAgICAgICAgICAg
IHsgIHJldHVybihBTkRfT1ApOyB9Ci0ifHwiICAgICAgICAgICAgeyAgcmV0dXJuKE9SX09QKTsg
fQotIl5eIiAgICAgICAgICAgIHsgIHJldHVybihYT1JfT1ApOyB9Ci0iPD0iICAgICAgICAgICAg
eyAgcmV0dXJuKExFX09QKTsgfQotIj49IiAgICAgICAgICAgIHsgIHJldHVybihHRV9PUCk7IH0K
LSI9PSIgICAgICAgICAgICB7ICByZXR1cm4oRVFfT1ApOyB9Ci0iIT0iICAgICAgICAgICAgeyAg
cmV0dXJuKE5FX09QKTsgfQotIjw8IiAgICAgICAgICAgIHsgIHJldHVybihMRUZUX09QKTsgfQot
Ij4+IiAgICAgICAgICAgIHsgIHJldHVybihSSUdIVF9PUCk7IH0KLSI7IiAgICAgICAgICAgICB7
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oU0VNSUNPTE9OKTsgfQotKCJ7
InwiPCUiKSAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihMRUZU
X0JSQUNFKTsgfQotKCJ9InwiJT4iKSAgICAgIHsgcmV0dXJuKFJJR0hUX0JSQUNFKTsgfQotIiwi
ICAgICAgICAgeyBpZiAoY29udGV4dC0+aW5UeXBlUGFyZW4pIGNvbnRleHQtPmxleEFmdGVyVHlw
ZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Ci0iOiIgICAgICAgICB7IHJldHVybihDT0xPTik7
IH0KLSI9IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihF
UVVBTCk7IH0KLSIoIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IGNv
bnRleHQtPmluVHlwZVBhcmVuID0gdHJ1ZTsgcmV0dXJuKExFRlRfUEFSRU4pOyB9Ci0iKSIgICAg
ICAgICB7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gZmFsc2U7IHJldHVybihSSUdIVF9QQVJFTik7
IH0KLSgiWyJ8Ijw6IikgICAgICB7IHJldHVybihMRUZUX0JSQUNLRVQpOyB9Ci0oIl0ifCI6PiIp
ICAgICAgeyByZXR1cm4oUklHSFRfQlJBQ0tFVCk7IH0KLSIuIiAgICAgICAgIHsgQkVHSU4oRklF
TERTKTsgIHJldHVybihET1QpOyB9Ci0iISIgICAgICAgICB7IHJldHVybihCQU5HKTsgfQotIi0i
ICAgICAgICAgeyByZXR1cm4oREFTSCk7IH0KLSJ+IiAgICAgICAgIHsgcmV0dXJuKFRJTERFKTsg
fQotIisiICAgICAgICAgeyByZXR1cm4oUExVUyk7IH0KLSIqIiAgICAgICAgIHsgcmV0dXJuKFNU
QVIpOyB9Ci0iLyIgICAgICAgICB7IHJldHVybihTTEFTSCk7IH0KLSIlIiAgICAgICAgIHsgcmV0
dXJuKFBFUkNFTlQpOyB9Ci0iPCIgICAgICAgICB7IHJldHVybihMRUZUX0FOR0xFKTsgfQotIj4i
ICAgICAgICAgeyByZXR1cm4oUklHSFRfQU5HTEUpOyB9Ci0ifCIgICAgICAgICB7IHJldHVybihW
RVJUSUNBTF9CQVIpOyB9Ci0iXiIgICAgICAgICB7IHJldHVybihDQVJFVCk7IH0KLSImIiAgICAg
ICAgIHsgcmV0dXJuKEFNUEVSU0FORCk7IH0KLSI/IiAgICAgICAgIHsgcmV0dXJuKFFVRVNUSU9O
KTsgfQotCi08RklFTERTPntMfSh7TH18e0R9KSogeyAKLSAgICBCRUdJTihJTklUSUFMKTsKLSAg
ICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAKLSAgICByZXR1
cm4gRklFTERfU0VMRUNUSU9OOwotfQotPEZJRUxEUz5bIFx0XHZcZlxyXSB7fQotCi1bIFx0XHZc
blxmXHJdICAgeyAgfQotPCo+PDxFT0Y+PiAgICAgIHsgY29udGV4dC0+QWZ0ZXJFT0YgPSB0cnVl
OyB5eXRlcm1pbmF0ZSgpOyB9Ci08Kj4uICAgICAgICAgICAgeyBjb250ZXh0LT53YXJuaW5nKHl5
bGluZW5vLCAiVW5rbm93biBjaGFyIiwgeXl0ZXh0LCAiIik7IHJldHVybiAwOyB9CiswW3hYXXtI
fSsgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRl
eHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Ciswe099KyAgICAgICAgICAgICB7IHl5
bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0
dXJuIElOVENPTlNUQU5UOyB9Cit7RH0rICAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBz
dGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5U
OyB9CisKK3tEfSt7RX0gICAgICAgICAgIHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZs
b2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KK3tEfSsiLiJ7
RH0qKHtFfSk/IHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5
eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKyIuIntEfSsoe0V9KT8gICAgIHsgeXls
dmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJu
IEZMT0FUQ09OU1RBTlQ7IH0KKworIis9IiAgICAgICAgICAgIHsgcmV0dXJuIEFERF9BU1NJR047
IH0KKyItPSIgICAgICAgICAgICB7IHJldHVybiBTVUJfQVNTSUdOOyB9CisiKj0iICAgICAgICAg
ICAgeyByZXR1cm4gTVVMX0FTU0lHTjsgfQorIi89IiAgICAgICAgICAgIHsgcmV0dXJuIERJVl9B
U1NJR047IH0KKyIlPSIgICAgICAgICAgICB7IHJldHVybiBNT0RfQVNTSUdOOyB9CisiPDw9IiAg
ICAgICAgICAgeyByZXR1cm4gTEVGVF9BU1NJR047IH0KKyI+Pj0iICAgICAgICAgICB7IHJldHVy
biBSSUdIVF9BU1NJR047IH0KKyImPSIgICAgICAgICAgICB7IHJldHVybiBBTkRfQVNTSUdOOyB9
CisiXj0iICAgICAgICAgICAgeyByZXR1cm4gWE9SX0FTU0lHTjsgfQorInw9IiAgICAgICAgICAg
IHsgcmV0dXJuIE9SX0FTU0lHTjsgfQorCisiKysiICAgICAgICAgICAgeyByZXR1cm4gSU5DX09Q
OyB9CisiLS0iICAgICAgICAgICAgeyByZXR1cm4gREVDX09QOyB9CisiJiYiICAgICAgICAgICAg
eyByZXR1cm4gQU5EX09QOyB9CisifHwiICAgICAgICAgICAgeyByZXR1cm4gT1JfT1A7IH0KKyJe
XiIgICAgICAgICAgICB7IHJldHVybiBYT1JfT1A7IH0KKyI8PSIgICAgICAgICAgICB7IHJldHVy
biBMRV9PUDsgfQorIj49IiAgICAgICAgICAgIHsgcmV0dXJuIEdFX09QOyB9CisiPT0iICAgICAg
ICAgICAgeyByZXR1cm4gRVFfT1A7IH0KKyIhPSIgICAgICAgICAgICB7IHJldHVybiBORV9PUDsg
fQorIjw8IiAgICAgICAgICAgIHsgcmV0dXJuIExFRlRfT1A7IH0KKyI+PiIgICAgICAgICAgICB7
IHJldHVybiBSSUdIVF9PUDsgfQorIjsiICAgICAgICAgICAgIHsgcmV0dXJuIFNFTUlDT0xPTjsg
fQorKCJ7InwiPCUiKSAgICAgIHsgcmV0dXJuIExFRlRfQlJBQ0U7IH0KKygifSJ8IiU+IikgICAg
ICB7IHJldHVybiBSSUdIVF9CUkFDRTsgfQorIiwiICAgICAgICAgeyByZXR1cm4gQ09NTUE7IH0K
KyI6IiAgICAgICAgIHsgcmV0dXJuIENPTE9OOyB9CisiPSIgICAgICAgICB7IHJldHVybiBFUVVB
TDsgfQorIigiICAgICAgICAgeyByZXR1cm4gTEVGVF9QQVJFTjsgfQorIikiICAgICAgICAgeyBy
ZXR1cm4gUklHSFRfUEFSRU47IH0KKygiWyJ8Ijw6IikgIHsgcmV0dXJuIExFRlRfQlJBQ0tFVDsg
fQorKCJdInwiOj4iKSAgeyByZXR1cm4gUklHSFRfQlJBQ0tFVDsgfQorIi4iICAgICAgICAgeyBy
ZXR1cm4gRE9UOyB9CisiISIgICAgICAgICB7IHJldHVybiBCQU5HOyB9CisiLSIgICAgICAgICB7
IHJldHVybiBEQVNIOyB9CisifiIgICAgICAgICB7IHJldHVybiBUSUxERTsgfQorIisiICAgICAg
ICAgeyByZXR1cm4gUExVUzsgfQorIioiICAgICAgICAgeyByZXR1cm4gU1RBUjsgfQorIi8iICAg
ICAgICAgeyByZXR1cm4gU0xBU0g7IH0KKyIlIiAgICAgICAgIHsgcmV0dXJuIFBFUkNFTlQ7IH0K
KyI8IiAgICAgICAgIHsgcmV0dXJuIExFRlRfQU5HTEU7IH0KKyI+IiAgICAgICAgIHsgcmV0dXJu
IFJJR0hUX0FOR0xFOyB9CisifCIgICAgICAgICB7IHJldHVybiBWRVJUSUNBTF9CQVI7IH0KKyJe
IiAgICAgICAgIHsgcmV0dXJuIENBUkVUOyB9CisiJiIgICAgICAgICB7IHJldHVybiBBTVBFUlNB
TkQ7IH0KKyI/IiAgICAgICAgIHsgcmV0dXJuIFFVRVNUSU9OOyB9CisKK1sgXHRcdlxuXGZccl0g
eyB9Cis8PEVPRj4+ICAgIHsgeXl0ZXJtaW5hdGUoKTsgfQorLiAgICAgICAgICB7IGFzc2VydChm
YWxzZSk7IHJldHVybiAwOyB9CiAKICUlCiAKQEAgLTI3OCw3ICsyNTYsOCBAQCB5eV9zaXplX3Qg
c3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6CiAgICAgeXlfc2l6ZV90IGxlbiA9IHRva2Vu
LnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8gMCA6IHRva2VuLnRleHQuc2l6ZSgpOwogICAgIGlm
IChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAgbWVtY3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigp
LCBsZW4pOwotICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24u
ZmlsZSwgdG9rZW4ubG9jYXRpb24ubGluZSksIHl5c2Nhbm5lcik7CisgICAgeXlzZXRfY29sdW1u
KHRva2VuLmxvY2F0aW9uLmZpbGUsIHl5c2Nhbm5lcik7CisgICAgeXlzZXRfbGluZW5vKHRva2Vu
LmxvY2F0aW9uLmxpbmUsIHl5c2Nhbm5lcik7CiAKICAgICBpZiAobGVuID49IG1heF9zaXplKQog
ICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5wdXQgYnVmZmVyIG92ZXJmbG93Iik7CkBAIC0yOTIs
MTIgKzI3MSwxMCBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKICAgICAK
ICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVSOwogICAgIFRTeW1ib2wqIHN5bWJvbCA9IHl5ZXh0
cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0KTsKLSAgICBpZiAoeXlleHRyYS0+bGV4QWZ0ZXJU
eXBlID09IGZhbHNlICYmIHN5bWJvbCAmJiBzeW1ib2wtPmlzVmFyaWFibGUoKSkgeworICAgIGlm
IChzeW1ib2wgJiYgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKICAgICAgICAgVFZhcmlhYmxlKiB2
YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KHN5bWJvbCk7Ci0gICAgICAgIGlmICh2
YXJpYWJsZS0+aXNVc2VyVHlwZSgpKSB7Ci0gICAgICAgICAgICB5eWV4dHJhLT5sZXhBZnRlclR5
cGUgPSB0cnVlOworICAgICAgICBpZiAodmFyaWFibGUtPmlzVXNlclR5cGUoKSkKICAgICAgICAg
ICAgIHRva2VuID0gVFlQRV9OQU1FOwotICAgICAgICB9CiAgICAgfQogICAgIHl5bHZhbC0+bGV4
LnN5bWJvbCA9IHN5bWJvbDsKICAgICByZXR1cm4gdG9rZW47CkBAIC0zMDYsMjIgKzI4MywxMSBA
QCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKIGludCByZXNlcnZlZF93b3Jk
KHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVj
dCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKIAotICAgIHl5ZXh0cmEtPmVycm9yKHl5bGluZW5vLCAi
SWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwgIiIpOworICAgIHl5ZXh0cmEt
PmVycm9yKCp5eWxsb2MsICJJbGxlZ2FsIHVzZSBvZiByZXNlcnZlZCB3b3JkIiwgeXl0ZXh0LCAi
Iik7CiAgICAgeXlleHRyYS0+cmVjb3ZlcigpOwogICAgIHJldHVybiAwOwogfQogCi12b2lkIHl5
ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKSB7Ci0gICAg
c3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgY29udGV4dC0+c2Nhbm5l
cjsKLQotICAgIGlmIChjb250ZXh0LT5BZnRlckVPRikgewotICAgICAgICBjb250ZXh0LT5lcnJv
cih5eWxpbmVubywgcmVhc29uLCAidW5leHBlY3RlZCBFT0YiKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29uLCB5eXRleHQpOwotICAgIH0KLSAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Ci19Ci0KIGludCBnbHNsYW5nX2luaXRpYWxpemUoVFBhcnNl
Q29udGV4dCogY29udGV4dCkgewogICAgIHl5c2Nhbl90IHNjYW5uZXIgPSBOVUxMOwogICAgIGlm
ICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQsICZzY2FubmVyKSkKQEAgLTM0NCw4ICszMTAsOCBA
QCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFyc2VDb250ZXh0KiBjb250CiBpbnQgZ2xzbGFuZ19z
Y2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBs
ZW5ndGhbXSwKICAgICAgICAgICAgICAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAg
IHl5cmVzdGFydChOVUxMLCBjb250ZXh0LT5zY2FubmVyKTsKLSAgICB5eXNldF9saW5lbm8oRW5j
b2RlU291cmNlTG9jKDAsIDEpLCBjb250ZXh0LT5zY2FubmVyKTsKLSAgICBjb250ZXh0LT5BZnRl
ckVPRiA9IGZhbHNlOworICAgIHl5c2V0X2NvbHVtbigwLCBjb250ZXh0LT5zY2FubmVyKTsKKyAg
ICB5eXNldF9saW5lbm8oMSwgY29udGV4dC0+c2Nhbm5lcik7CiAKICAgICAvLyBJbml0aWFsaXpl
IHByZXByb2Nlc3Nvci4KICAgICBpZiAoIWNvbnRleHQtPnByZXByb2Nlc3Nvci5pbml0KGNvdW50
LCBzdHJpbmcsIGxlbmd0aCkpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvZ2xzbGFuZy55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9nbHNsYW5nLnkJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDIt
MjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0zOSw3
ICszOSw2IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICNpbmNs
dWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAogI2RlZmluZSBZWUVOQUJMRV9OTFMgMAotI2Rl
ZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQogCiAjZGVmaW5lIFlZTEVYX1BBUkFNIGNvbnRleHQt
PnNjYW5uZXIKICV9CkBAIC00NywxMCArNDYsMTUgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNM
IEVTIFBBUlNFUiAoZ2xzbAogJWV4cGVjdCAxIC8qIE9uZSBzaGlmdCByZWR1Y2UgY29uZmxpY3Qg
YmVjYXVzZSBvZiBpZiB8IGVsc2UgKi8KICVwdXJlLXBhcnNlcgogJXBhcnNlLXBhcmFtIHtUUGFy
c2VDb250ZXh0KiBjb250ZXh0fQorJWxvY2F0aW9ucworCislY29kZSByZXF1aXJlcyB7CisjZGVm
aW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKK30K
IAogJXVuaW9uIHsKICAgICBzdHJ1Y3QgewotICAgICAgICBUU291cmNlTG9jIGxpbmU7CiAgICAg
ICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0cmluZzsKICAgICAgICAgICAgIGZs
b2F0IGY7CkBAIC02MCw3ICs2NCw2IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJT
RVIgKGdsc2wKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwogICAgIH0gbGV4OwogICAgIHN0cnVj
dCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgVE9wZXJhdG9yIG9wOwogICAg
ICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKQEAgLTc0
LDIzICs3NywzMSBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMgUEFSU0VSIChnbHNsCiAg
ICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKICAgICAgICAgICAgIFRGdW5jdGlvbiog
ZnVuY3Rpb247CiAgICAgICAgICAgICBUUGFyYW1ldGVyIHBhcmFtOwotICAgICAgICAgICAgVFR5
cGVMaW5lIHR5cGVMaW5lOwotICAgICAgICAgICAgVFR5cGVMaXN0KiB0eXBlTGlzdDsKKyAgICAg
ICAgICAgIFRGaWVsZCogZmllbGQ7CisgICAgICAgICAgICBURmllbGRMaXN0KiBmaWVsZExpc3Q7
CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07CiB9CiAKICV7Ci1leHRlcm4gaW50IHl5bGV4KFlZ
U1RZUEUqIHl5bHZhbF9wYXJhbSwgdm9pZCogeXlzY2FubmVyKTsKLWV4dGVybiB2b2lkIHl5ZXJy
b3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKTsKK2V4dGVybiBp
bnQgeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBZWUxUWVBFKiB5eWxsb2MsIHZvaWQqIHl5c2Nhbm5l
cik7CitzdGF0aWMgdm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCog
Y29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKTsKIAotI2RlZmluZSBGUkFHX1ZFUlRfT05MWShT
LCBMKSB7ICBcCi0gICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgIT0gU0hfRlJBR01FTlRfU0hB
REVSICYmICBcCi0gICAgICAgIGNvbnRleHQtPnNoYWRlclR5cGUgIT0gU0hfVkVSVEVYX1NIQURF
UikgeyAgXAotICAgICAgICBjb250ZXh0LT5lcnJvcihMLCAiIHN1cHBvcnRlZCBpbiB2ZXJ0ZXgv
ZnJhZ21lbnQgc2hhZGVycyBvbmx5ICIsIFMpOyAgXAotICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7ICBcCi0gICAgfSAgXAotfQorI2RlZmluZSBZWUxMT0NfREVGQVVMVChDdXJyZW50LCBSaHMs
IE4pICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBpZiAoWVlJRChOKSkgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoQ3VycmVu
dCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMSkuZmlyc3RfZmlsZTsgIFwKKyAgICAgICAg
KEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDEpLmZpcnN0X2xpbmU7ICBcCisg
ICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIE4pLmxhc3RfZmlsZTsg
ICAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0gWVlSSFNMT0MoUmhzLCBOKS5sYXN0
X2xpbmU7ICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9
IFlZUkhTTE9DKFJocywgMCkubGFzdF9maWxlOyAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0
X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsgICBcCisgICAgICAgIChDdXJyZW50
KS5sYXN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfZmlsZTsgICAgXAorICAgICAgICAo
Q3VycmVudCkubGFzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2xpbmU7ICAgIFwKKyAg
ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgVkVSVEVYX09OTFkoUywgTCkgeyAgXAogICAg
IGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX1ZFUlRFWF9TSEFERVIpIHsgIFwKQEAgLTEx
Niw3ICsxMjcsNiBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRlCiAl
dG9rZW4gPGxleD4gU0FNUExFUjJEIFNBTVBMRVJDVUJFIFNBTVBMRVJfRVhURVJOQUxfT0VTIFNB
TVBMRVIyRFJFQ1QKIAogJXRva2VuIDxsZXg+IElERU5USUZJRVIgVFlQRV9OQU1FIEZMT0FUQ09O
U1RBTlQgSU5UQ09OU1RBTlQgQk9PTENPTlNUQU5UCi0ldG9rZW4gPGxleD4gRklFTERfU0VMRUNU
SU9OCiAldG9rZW4gPGxleD4gTEVGVF9PUCBSSUdIVF9PUAogJXRva2VuIDxsZXg+IElOQ19PUCBE
RUNfT1AgTEVfT1AgR0VfT1AgRVFfT1AgTkVfT1AKICV0b2tlbiA8bGV4PiBBTkRfT1AgT1JfT1Ag
WE9SX09QIE1VTF9BU1NJR04gRElWX0FTU0lHTiBBRERfQVNTSUdOCkBAIC0xMjcsNiArMTM3LDcg
QEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBjb250ZQogJXRva2VuIDxsZXg+
IENPTU1BIENPTE9OIEVRVUFMIFNFTUlDT0xPTiBCQU5HIERBU0ggVElMREUgUExVUyBTVEFSIFNM
QVNIIFBFUkNFTlQKICV0b2tlbiA8bGV4PiBMRUZUX0FOR0xFIFJJR0hUX0FOR0xFIFZFUlRJQ0FM
X0JBUiBDQVJFVCBBTVBFUlNBTkQgUVVFU1RJT04KIAorJXR5cGUgPGxleD4gaWRlbnRpZmllcgog
JXR5cGUgPGludGVybT4gYXNzaWdubWVudF9vcGVyYXRvciB1bmFyeV9vcGVyYXRvcgogJXR5cGUg
PGludGVybS5pbnRlcm1UeXBlZE5vZGU+IHZhcmlhYmxlX2lkZW50aWZpZXIgcHJpbWFyeV9leHBy
ZXNzaW9uIHBvc3RmaXhfZXhwcmVzc2lvbgogJXR5cGUgPGludGVybS5pbnRlcm1UeXBlZE5vZGU+
IGV4cHJlc3Npb24gaW50ZWdlcl9leHByZXNzaW9uIGFzc2lnbm1lbnRfZXhwcmVzc2lvbgpAQCAt
MTU0LDggKzE2NSw4IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGUK
ICV0eXBlIDxpbnRlcm0udHlwZT4gdHlwZV9xdWFsaWZpZXIgZnVsbHlfc3BlY2lmaWVkX3R5cGUg
dHlwZV9zcGVjaWZpZXIKICV0eXBlIDxpbnRlcm0udHlwZT4gdHlwZV9zcGVjaWZpZXJfbm9fcHJl
YyB0eXBlX3NwZWNpZmllcl9ub25hcnJheQogJXR5cGUgPGludGVybS50eXBlPiBzdHJ1Y3Rfc3Bl
Y2lmaWVyCi0ldHlwZSA8aW50ZXJtLnR5cGVMaW5lPiBzdHJ1Y3RfZGVjbGFyYXRvcgotJXR5cGUg
PGludGVybS50eXBlTGlzdD4gc3RydWN0X2RlY2xhcmF0b3JfbGlzdCBzdHJ1Y3RfZGVjbGFyYXRp
b24gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QKKyV0eXBlIDxpbnRlcm0uZmllbGQ+IHN0cnVjdF9k
ZWNsYXJhdG9yCisldHlwZSA8aW50ZXJtLmZpZWxkTGlzdD4gc3RydWN0X2RlY2xhcmF0b3JfbGlz
dCBzdHJ1Y3RfZGVjbGFyYXRpb24gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QKICV0eXBlIDxpbnRl
cm0uZnVuY3Rpb24+IGZ1bmN0aW9uX2hlYWRlciBmdW5jdGlvbl9kZWNsYXJhdG9yIGZ1bmN0aW9u
X2lkZW50aWZpZXIKICV0eXBlIDxpbnRlcm0uZnVuY3Rpb24+IGZ1bmN0aW9uX2hlYWRlcl93aXRo
X3BhcmFtZXRlcnMgZnVuY3Rpb25fY2FsbF9oZWFkZXIKICV0eXBlIDxpbnRlcm0+IGZ1bmN0aW9u
X2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVycyBmdW5jdGlvbl9jYWxsX2hlYWRlcl9ub19wYXJh
bWV0ZXJzIGZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyBmdW5jdGlvbl9wcm90b3R5cGUKQEAgLTE2NCwx
MyArMTc1LDE3IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGUKICVz
dGFydCB0cmFuc2xhdGlvbl91bml0CiAlJQogCitpZGVudGlmaWVyCisgICAgOiBJREVOVElGSUVS
CisgICAgfCBUWVBFX05BTUUKKwogdmFyaWFibGVfaWRlbnRpZmllcgogICAgIDogSURFTlRJRklF
UiB7CiAgICAgICAgIC8vIFRoZSBzeW1ib2wgdGFibGUgc2VhcmNoIHdhcyBkb25lIGluIHRoZSBs
ZXhpY2FsIHBoYXNlCiAgICAgICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9ICQxLnN5bWJvbDsK
ICAgICAgICAgY29uc3QgVFZhcmlhYmxlKiB2YXJpYWJsZTsKICAgICAgICAgaWYgKHN5bWJvbCA9
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAidW5kZWNsYXJlZCBp
ZGVudGlmaWVyIiwgJDEuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKEAxLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIiwgJDEuc3RyaW5nLT5jX3N0cigpKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIFRUeXBlIHR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgICAgICBUVmFyaWFibGUqIGZha2VWYXJpYWJs
ZSA9IG5ldyBUVmFyaWFibGUoJDEuc3RyaW5nLCB0eXBlKTsKQEAgLTE3OSwxMCArMTk0LDE3IEBA
IHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRo
aXMgaWRlbnRpZmllciBjYW4gb25seSBiZSBhIHZhcmlhYmxlIHR5cGUgc3ltYm9sCiAgICAgICAg
ICAgICBpZiAoISBzeW1ib2wtPmlzVmFyaWFibGUoKSkgewotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCQxLmxpbmUsICJ2YXJpYWJsZSBleHBlY3RlZCIsICQxLnN0cmluZy0+Y19zdHIo
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJ2YXJpYWJsZSBleHBlY3Rl
ZCIsICQxLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB2YXJpYWJsZSA9IHN0YXRpY19jYXN0
PGNvbnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7CisKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5p
c1ZhcmlhYmxlQnVpbHRJbih2YXJpYWJsZSkgJiYgCisgICAgICAgICAgICAgICAgIXZhcmlhYmxl
LT5nZXRFeHRlbnNpb24oKS5lbXB0eSgpICYmCisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0
ZW5zaW9uRXJyb3JDaGVjayhAMSwgdmFyaWFibGUtPmdldEV4dGVuc2lvbigpKSkgeworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
CiAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcsIGl0J3MgdXNlZCBieSBlcnJvciBy
ZWNvdmVyeSwgYW5kIHRoZSBwb29sCkBAIC0xOTEsMTEgKzIxMywxMiBAQCB2YXJpYWJsZV9pZGVu
dGlmaWVyCiAgICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09
IEV2cUNvbnN0ICkgewogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHZh
cmlhYmxlLT5nZXRDb25zdFBvaW50ZXIoKTsKICAgICAgICAgICAgIFRUeXBlIHQodmFyaWFibGUt
PmdldFR5cGUoKSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICQxLmxpbmUpOworICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbihjb25zdEFycmF5LCB0LCBAMSk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJs
ZS0+Z2V0VHlwZSgpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEpOwogICAgIH0K
ICAgICA7CiAKQEAgLTIwOSwyMiArMjMyLDIyIEBAIHByaW1hcnlfZXhwcmVzc2lvbgogICAgICAg
ICAvLyBjaGVjayBmb3Igb3ZlcmZsb3cgZm9yIGNvbnN0YW50cwogICAgICAgICAvLwogICAgICAg
ICBpZiAoYWJzKCQxLmkpID49ICgxIDw8IDE2KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoJDEubGluZSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoQDEsICIgaW50ZWdlciBjb25zdGFudCBvdmVyZmxvdyIsICIiKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBDb25z
dGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVu
aW9uQXJyYXktPnNldElDb25zdCgkMS5pKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAgfQogICAgIHwgRkxPQVRDT05TVEFOVCB7CiAgICAg
ICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAg
ICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KCQxLmYpOwotICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAgfQogICAgIHwgQk9PTENPTlNU
QU5UIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoJDEuYik7Ci0gICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQxLmxpbmUpOworICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAgfQogICAgIHwg
TEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIHsKICAgICAgICAgJCQgPSAkMjsKQEAg
LTIzOCwxMDEgKzI2MSw5NyBAQCBwb3N0Zml4X2V4cHJlc3Npb24KICAgICB8IHBvc3RmaXhfZXhw
cmVzc2lvbiBMRUZUX0JSQUNLRVQgaW50ZWdlcl9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewog
ICAgICAgICBpZiAoISQxLT5pc0FycmF5KCkgJiYgISQxLT5pc01hdHJpeCgpICYmICEkMS0+aXNW
ZWN0b3IoKSkgewogICAgICAgICAgICAgaWYgKCQxLT5nZXRBc1N5bWJvbE5vZGUoKSkKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBv
ZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAkMS0+Z2V0QXNTeW1ib2xOb2RlKCkt
PmdldFN5bWJvbCgpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAy
LCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAi
LCAkMS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOwogICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICIgbGVmdCBv
ZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICJleHByZXNz
aW9uIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICIgbGVmdCBvZiAnWycg
aXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYgJDMtPmdldFF1YWxp
ZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeyAv
LyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmFkZENvbnN0QXJyYXlOb2RlKCQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25B
cnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCksICQxLCAkMi5saW5lKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkpIHsgIC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIHZlY3Rv
cnMKLSAgICAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKLSAgICAgICAgICAgICAg
ICBmaWVsZHMubnVtID0gMTsKLSAgICAgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1swXSA9ICQz
LT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0
KCk7IC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSB2Lnh5IHNlbmRzIGZpZWxkcyBp
bnRlZ2VyIGFycmF5Ci0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rv
ck5vZGUoZmllbGRzLCAkMSwgJDIubGluZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCQxLT5p
c01hdHJpeCgpKSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIG1hdHJpY2VzCi0gICAgICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoJDMtPmdldEFzQ29uc3RhbnRV
bmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgJDEsICQyLmxpbmUp
OworICAgICAgICBpZiAoJDMtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAg
ICAgICBpbnQgaW5kZXggPSAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldElDb25zdCgwKTsK
KyAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSBpbmZvU3RyZWFtOworICAgICAgICAgICAgICAgIGluZm9TdHJlYW0gPDwgaW5kZXg7
CisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgaW5mbyA9IGluZm9TdHJlYW0uc3RyKCk7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJuZWdhdGl2ZSBpbmRleCIsIGluZm8u
Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAg
ICAgICAgIGluZGV4ID0gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGlmICgkMy0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoKCQxLT5pc1ZlY3RvcigpIHx8ICQxLT5pc01hdHJpeCgpKSAmJiAkMS0+Z2V0VHlw
ZSgpLmdldE5vbWluYWxTaXplKCkgPD0gJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSAmJiAhJDEtPmlzQXJyYXkoKSApIHsKLSAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAg
ICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2Yg
cmFuZ2UgJyIgPDwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
IGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOwotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCQxLT5pc0FycmF5KCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUoKS5nZXRNYXhBcnJh
eVNpemUoKSA8PSAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVy
KCktPmdldElDb25zdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChj
b250ZXh0LT5hcnJheVNldE1heFNpemUoJDEtPmdldEFzU3ltYm9sTm9kZSgpLCAkMS0+Z2V0VHlw
ZVBvaW50ZXIoKSwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpLT5nZXRJQ29uc3QoKSwgdHJ1ZSwgJDIubGluZSkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5U2V0TWF4U2l6ZSgkMS0+Z2V0QXNTeW1ib2xOb2RlKCksICQxLT5nZXRUeXBlUG9p
bnRlcigpLCAwLCBmYWxzZSwgJDIubGluZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggJDMtPmdldEFzQ29uc3RhbnRV
bmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA+PSAkMS0+Z2V0VHlw
ZSgpLmdldEFycmF5U2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpz
dHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlICciIDw8ICQzLT5n
ZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkg
PDwgIiciOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5m
byA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigkMi5saW5lLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwg
JDMsICQyLmxpbmUpOworICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVy
KCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeyAv
LyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5hZGRDb25zdEFycmF5Tm9kZShpbmRleCwgJDEsIEAyKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKCQxLT5pc1ZlY3RvcigpKSB7ICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2
ZWN0b3JzCisgICAgICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVsZHMgZmllbGRzOworICAgICAg
ICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKKyAgICAgICAgICAgICAgICAgICAgZmllbGRz
Lm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVlZCB0byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHYu
eHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwgQDIpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3Ig
bWF0cmljZXMKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdE1hdHJp
eE5vZGUoaW5kZXgsICQxLCBAMik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSAmJiAkMS0+Z2V0VHlwZSgp
LmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoJDIubGluZSwgIiIsICJbIiwgImFycmF5IG11c3QgYmUgcmVkZWNsYXJlZCB3aXRoIGEgc2l6
ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRoIGEgdmFyaWFibGUiKTsKKyAgICAgICAgICAgICAg
ICBpZiAoJDEtPmlzQXJyYXkoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0g
JDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAgICAgICAgICAgICAg
ICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5k
ZXggPDwgIiciOworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZv
ID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDIsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu
ZGV4ID0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCgkMS0+aXNWZWN0b3IoKSB8fCAkMS0+
aXNNYXRyaXgoKSkgJiYgJDEtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIDw9IGluZGV4KSB7
CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsK
KyAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJmaWVsZCBzZWxlY3Rpb24g
b3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAgICAgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOwog
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAg
ICAgIGluZGV4ID0gICQxLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSAtIDE7CiAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgJDEsICQzLCAkMi5saW5lKTsKKyAgICAgICAgICAg
ICAgICAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPnNl
dElDb25zdChpbmRleCk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCAkMywgQDIpOwogICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgJDEsICQzLCBAMik7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCQkID09IDApIHsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEZDb25z
dCgwLjBmKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUNvbnN0KSwg
JDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCks
IEAyKTsKICAgICAgICAgfSBlbHNlIGlmICgkMS0+aXNBcnJheSgpKSB7CiAgICAgICAgICAgICBp
ZiAoJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSkKLSAgICAgICAgICAgICAgICAkJC0+c2V0VHlw
ZShUVHlwZSgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLCAkMS0+Z2V0VHlwZSgpLmdldFR5cGVO
YW1lKCkpKTsKKyAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0VHlwZSgp
LmdldFN0cnVjdCgpKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgJCQtPnNl
dFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRl
bXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCksICQxLT5pc01hdHJpeCgpKSk7CiAKICAgICAg
ICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQogICAg
ICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3Qp
OwotICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpICYmICQxLT5nZXRUeXBlKCkuZ2V0
UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgk
MS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QsICQxLT5nZXRO
b21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKQotICAgICAg
ICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lz
aW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCkpKTsKLSAgICAgICAgZWxz
ZSBpZiAoJDEtPmlzVmVjdG9yKCkgJiYgJDEtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBF
dnFDb25zdCkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUo
KSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCkpOwotICAgICAgICBlbHNlIGlmICgkMS0+
aXNWZWN0b3IoKSkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5
cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnkpKTsKLSAgICAgICAgZWxzZQor
ICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7CisgICAgICAgICAgICBUUXVhbGlm
aWVyIHF1YWxpZmllciA9ICQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3Qg
PyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBl
KCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBxdWFsaWZpZXIsICQxLT5n
ZXROb21pbmFsU2l6ZSgpKSk7CisgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkpIHsK
KyAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gJDEtPmdldFR5cGUoKS5nZXRRdWFs
aWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5OworICAgICAgICAg
ICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9u
KCksIHF1YWxpZmllcikpOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgJCQtPnNldFR5
cGUoJDEtPmdldFR5cGUoKSk7CisgICAgICAgIH0KICAgICB9CiAgICAgfCBmdW5jdGlvbl9jYWxs
IHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBwb3N0Zml4X2V4cHJlc3Npb24gRE9U
IEZJRUxEX1NFTEVDVElPTiB7CisgICAgfCBwb3N0Zml4X2V4cHJlc3Npb24gRE9UIGlkZW50aWZp
ZXIgewogICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoJDMubGluZSwgImNhbm5vdCBhcHBseSBkb3Qgb3BlcmF0b3IgdG8gYW4gYXJyYXkiLCAi
LiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJjYW5ub3QgYXBwbHkgZG90IG9w
ZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS0+aXNWZWN0b3IoKSkgewogICAgICAgICAg
ICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJz
ZVZlY3RvckZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAk
My5saW5lKSkgeworICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VWZWN0b3JGaWVsZHMo
KiQzLnN0cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgQDMpKSB7CiAgICAgICAg
ICAgICAgICAgZmllbGRzLm51bSA9IDE7CiAgICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNb
MF0gPSAwOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9yIGZpZWxkcwotICAgICAgICAg
ICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgJDEsICQzLmxp
bmUpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RWZWN0b3JOb2RlKGZp
ZWxkcywgJDEsIEAzKTsKICAgICAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewogICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgICAgICQkID0g
JDE7CkBAIC0zNDEsMTMgKzM2MCwxMyBAQCBwb3N0Zml4X2V4cHJlc3Npb24KICAgICAgICAgICAg
ICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJl
Y2lzaW9uKCksIEV2cUNvbnN0LCAoaW50KSAoKiQzLnN0cmluZykuc2l6ZSgpKSk7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFRTdHJpbmcgdmVjdG9yU3RyaW5nID0gKiQz
LnN0cmluZzsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmllbGRzLCAkMy5saW5lKTsKLSAgICAgICAgICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BWZWN0b3JTd2l6emxlLCAk
MSwgaW5kZXgsICQyLmxpbmUpOworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXgg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVsZHMsIEAzKTsKKyAgICAgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BWZWN0b3JTd2l6
emxlLCAkMSwgaW5kZXgsIEAyKTsKICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgk
MS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAoaW50
KSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAoJDEtPmlzTWF0cml4KCkpIHsKICAgICAgICAgICAgIFRNYXRyaXhGaWVsZHMgZmllbGRzOwot
ICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKiQzLnN0cmluZywg
JDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgJDMubGluZSkpIHsKKyAgICAgICAgICAgIGlm
ICghIGNvbnRleHQtPnBhcnNlTWF0cml4RmllbGRzKCokMy5zdHJpbmcsICQxLT5nZXROb21pbmFs
U2l6ZSgpLCBmaWVsZHMsIEAzKSkgewogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9sZVJvdyA9
IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9sZUNvbCA9IGZhbHNlOwogICAgICAg
ICAgICAgICAgIGZpZWxkcy5yb3cgPSAwOwpAQCAtMzU2LDg0ICszNzUsNzggQEAgcG9zdGZpeF9l
eHByZXNzaW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChmaWVsZHMud2hvbGVS
b3cgfHwgZmllbGRzLndob2xlQ29sKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
JDIubGluZSwgIiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiBub24tc2NhbGFyIGZpZWxkcyBu
b3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgw
KTsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRl
ZmluZWQsIEV2cUNvbnN0KSwgJDMubGluZSk7Ci0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCBpbmRleCwgJDIubGlu
ZSk7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksIEAzKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgJDEsIGluZGV4LCBAMik7CiAgICAg
ICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0
UHJlY2lzaW9uKCksRXZxVGVtcG9yYXJ5LCAkMS0+Z2V0Tm9taW5hbFNpemUoKSkpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0
SUNvbnN0KGZpZWxkcy5jb2wgKiAkMS0+Z2V0Tm9taW5hbFNpemUoKSArIGZpZWxkcy5yb3cpOwot
ICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCAkMy5saW5lKTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgJDEsIGluZGV4LCAkMi5saW5lKTsK
KyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgQDMpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwgaW5kZXgsIEAyKTsKICAgICAgICAg
ICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVj
aXNpb24oKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKCQxLT5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgICAgIGJvb2wgZmllbGRGb3VuZCA9IGZh
bHNlOwotICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSAkMS0+Z2V0VHlwZSgp
LmdldFN0cnVjdCgpOwotICAgICAgICAgICAgaWYgKGZpZWxkcyA9PSAwKSB7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInN0cnVjdHVyZSBoYXMgbm8gZmllbGRzIiwg
IkludGVybmFsIEVycm9yIik7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBpOwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBm
aWVsZHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoKmZpZWxkcylb
aV0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKiQzLnN0cmluZykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3QgVEZpZWxkTGlzdCYg
ZmllbGRzID0gJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmllbGRzW2ldLT5uYW1lKCkgPT0gKiQz
LnN0cmluZykgeworICAgICAgICAgICAgICAgICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGlmIChmaWVsZEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgp
LmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
JCA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0KCokMy5zdHJpbmcsICQxLCAkMi5saW5lKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICQkID0gJDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqKCpm
aWVsZHMpW2ldLnR5cGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZSB0
aGUgcXVhbGlmaWVyIG9mIHRoZSByZXR1cm4gdHlwZSwgbm90IG9mIHRoZSBzdHJ1Y3R1cmUgZmll
bGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyB0aGUgc3RydWN0dXJlIGRlZmlu
aXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1Y3R1cmVzLgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29u
c3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9
IG5ldyBDb25zdGFudFVuaW9uWzFdOwotICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0SUNvbnN0KGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBp
bmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
ICooKmZpZWxkcylbaV0udHlwZSwgJDMubGluZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdFN0cnVjdCwg
JDEsIGluZGV4LCAkMi5saW5lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICQkLT5zZXRUeXBl
KCooKmZpZWxkcylbaV0udHlwZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZmll
bGRGb3VuZCkgeworICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmll
cigpID09IEV2cUNvbnN0KSB7CisgICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRk
Q29uc3RTdHJ1Y3QoKiQzLnN0cmluZywgJDEsIEAyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCQkID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICQkID0gJDE7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkJC0+
c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Y2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0eXBlLCBub3Qgb2YgdGhlIHN0cnVj
dHVyZSBmaWVsZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgdGhlIHN0cnVjdHVyZSBk
ZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHZhcmlvdXMgc3RydWN0dXJlcy4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29u
c3QpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBubyBzdWNoIGZpZWxk
IGluIHN0cnVjdHVyZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAg
ICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uWzFdOworICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7Cisg
ICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAqZmllbGRzW2ldLT50eXBlKCksIEAz
KTsKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5k
ZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICQxLCBpbmRleCwgQDIpOworICAgICAgICAgICAgICAg
ICAgICAkJC0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIs
ICIgbm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1cmUiLCAkMy5zdHJpbmctPmNfc3RyKCkpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAkJCA9ICQx
OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoJDIubGluZSwgIiBmaWVsZCBzZWxlY3Rpb24gcmVxdWlyZXMgc3RydWN0dXJlLCB2ZWN0
b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiBmaWVsZCBzZWxlY3Rpb24gcmVxdWlyZXMg
c3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIsICQzLnN0cmlu
Zy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSAkMy5zdHJpbmcs
IGl0J3MgZnJvbSB0aGUgcG9vbAogICAgIH0KICAgICB8IHBvc3RmaXhfZXhwcmVzc2lvbiBJTkNf
T1AgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygkMi5saW5lLCAiKysi
LCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKEAyLCAiKysiLCAk
MSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVtZW50LCAkMSwgJDIubGlu
ZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdEluY3JlbWVudCwgJDEsIEAyLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51
bmFyeU9wRXJyb3IoJDIubGluZSwgIisrIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKEAyLCAiKysiLCAkMS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAk
JCA9ICQxOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcG9zdGZpeF9leHByZXNzaW9uIERFQ19P
UCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCQyLmxpbmUsICItLSIs
ICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soQDIsICItLSIsICQx
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNyZW1lbnQsICQxLCAkMi5saW5l
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0RGVjcmVtZW50LCAkMSwgQDIsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVu
YXJ5T3BFcnJvcigkMi5saW5lLCAiLS0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDIsICItLSIsICQxLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQk
ID0gJDE7CiAgICAgICAgIH0KQEAgLTQ2MSwxOCArNDc0LDE4IEBAIGZ1bmN0aW9uX2NhbGwKICAg
ICAgICAgICAgIC8vIFRoZWlyIHBhcmFtZXRlcnMgd2lsbCBiZSB2ZXJpZmllZCBhbGdvcml0aG1p
Y2FsbHkuCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lkLCBF
YnBVbmRlZmluZWQpOyAgLy8gdXNlIHRoaXMgdG8gZ2V0IHRoZSB0eXBlIGJhY2sKLSAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5jb25zdHJ1Y3RvckVycm9yQ2hlY2soJDEubGluZSwgJDEuaW50ZXJt
Tm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmNv
bnN0cnVjdG9yRXJyb3JDaGVjayhAMSwgJDEuaW50ZXJtTm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBl
KSkgewogICAgICAgICAgICAgICAgICQkID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAvLyBJdCdzIGEgY29uc3RydWN0b3IsIG9m
IHR5cGUgJ3R5cGUnLgogICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5hZGRDb25zdHJ1Y3RvcigkMS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwg
JDEubGluZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3Rvcigk
MS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgQDEpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoJCQgPT0gMCkgewogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dy
ZWdhdGVPcGVyYXRvcigwLCBvcCwgJDEubGluZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoMCwgb3AsIEAxKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICQkLT5zZXRUeXBlKHR5cGUpOwogICAgICAgICB9IGVsc2Ug
ewpAQCAtNDgxLDEzICs0OTQsMTMgQEAgZnVuY3Rpb25fY2FsbAogICAgICAgICAgICAgLy8KICAg
ICAgICAgICAgIGNvbnN0IFRGdW5jdGlvbiogZm5DYW5kaWRhdGU7CiAgICAgICAgICAgICBib29s
IGJ1aWx0SW47Ci0gICAgICAgICAgICBmbkNhbmRpZGF0ZSA9IGNvbnRleHQtPmZpbmRGdW5jdGlv
bigkMS5saW5lLCBmbkNhbGwsICZidWlsdEluKTsKKyAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0g
Y29udGV4dC0+ZmluZEZ1bmN0aW9uKEAxLCBmbkNhbGwsICZidWlsdEluKTsKICAgICAgICAgICAg
IGlmIChmbkNhbmRpZGF0ZSkgewogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAg
Ly8gQSBkZWNsYXJlZCBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAg
ICAgIGlmIChidWlsdEluICYmICFmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkuZW1wdHkoKSAm
JgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCQxLmxp
bmUsIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjayhAMSwgZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lv
bigpKSkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIG9wID0gZm5DYW5kaWRhdGUtPmdldEJ1aWx0SW5P
cCgpOwpAQCAtNDk5LDcgKzUxMiw3IEBAIGZ1bmN0aW9uX2NhbGwKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmVhdCBpdCBsaWtlIGEgYnVp
bHQtaW4gdW5hcnkgb3BlcmF0b3IuCiAgICAgICAgICAgICAgICAgICAgICAgICAvLwotICAgICAg
ICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRo
KG9wLCAkMS5pbnRlcm1Ob2RlLCAwLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgob3As
ICQxLmludGVybU5vZGUsIEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoJCQgPT0gMCkgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJidWlsdCBpbiB1bmFyeSBvcGVyYXRvciBmdW5jdGlv
bi4gIFR5cGU6ICIgPDwgc3RhdGljX2Nhc3Q8VEludGVybVR5cGVkKj4oJDEuaW50ZXJtTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCk7CkBAIC01MDgsMTIgKzUyMSwxMiBAQCBmdW5jdGlvbl9jYWxs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWVlFUlJPUjsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQx
LmludGVybUFnZ3JlZ2F0ZSwgb3AsICQxLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJt
QWdncmVnYXRlLCBvcCwgQDEpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHJlYWwgZnVuY3Rp
b24gY2FsbAogCi0gICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQxLmludGVybUFnZ3JlZ2F0ZSwgRU9wRnVuY3Rpb25DYWxs
LCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBFT3BGdW5jdGlvbkNh
bGwsIEAxKTsKICAgICAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoZm5DYW5kaWRhdGUtPmdl
dFJldHVyblR5cGUoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBob3cgd2Ug
a25vdyB3aGV0aGVyIHRoZSBnaXZlbiBmdW5jdGlvbiBpcyBhIGJ1aWx0SW4gZnVuY3Rpb24gb3Ig
YSB1c2VyIGRlZmluZWQgZnVuY3Rpb24KQEAgLTU0MCw3ICs1NTMsNyBAQCBmdW5jdGlvbl9jYWxs
CiAgICAgICAgICAgICAgICAgLy8gUHV0IG9uIGEgZHVtbXkgbm9kZSBmb3IgZXJyb3IgcmVjb3Zl
cnkKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0
YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYp
OwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgQDEpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTUzLDcgKzU2Niw3IEBAIGZ1bmN0aW9uX2NhbGxf
b3JfbWV0aG9kCiAgICAgICAgICQkID0gJDE7CiAgICAgfQogICAgIHwgcG9zdGZpeF9leHByZXNz
aW9uIERPVCBmdW5jdGlvbl9jYWxsX2dlbmVyaWMgewotICAgICAgICBjb250ZXh0LT5lcnJvcigk
My5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIsICIiKTsKKyAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDMsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkIiwgIiIpOwogICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICQkID0gJDM7CiAgICAgfQpAQCAtNTYyLDExICs1
NzUsOSBAQCBmdW5jdGlvbl9jYWxsX29yX21ldGhvZAogZnVuY3Rpb25fY2FsbF9nZW5lcmljCiAg
ICAgOiBmdW5jdGlvbl9jYWxsX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMgUklHSFRfUEFSRU4gewog
ICAgICAgICAkJCA9ICQxOwotICAgICAgICAkJC5saW5lID0gJDIubGluZTsKICAgICB9CiAgICAg
fCBmdW5jdGlvbl9jYWxsX2hlYWRlcl9ub19wYXJhbWV0ZXJzIFJJR0hUX1BBUkVOIHsKICAgICAg
ICAgJCQgPSAkMTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxpbmU7CiAgICAgfQogICAgIDsKIApA
QCAtNTkyLDcgKzYwMyw3IEBAIGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVycwog
ICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5cGUoJDMtPmdldFR5cGUoKSkg
fTsKICAgICAgICAgJDEuZnVuY3Rpb24tPmFkZFBhcmFtZXRlcihwYXJhbSk7CiAgICAgICAgICQk
LmZ1bmN0aW9uID0gJDEuZnVuY3Rpb247Ci0gICAgICAgICQkLmludGVybU5vZGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCAkMywgJDIubGluZSk7
CisgICAgICAgICQkLmludGVybU5vZGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3Jl
Z2F0ZSgkMS5pbnRlcm1Ob2RlLCAkMywgQDIpOwogICAgIH0KICAgICA7CiAKQEAgLTYxNywzOSAr
NjI4LDM5IEBAIGZ1bmN0aW9uX2lkZW50aWZpZXIKICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6
CiAgICAgICAgICAgICAgICAgaWYgKCQxLm1hdHJpeCkgewogICAgICAgICAgICAgICAgICAgICBz
d2l0Y2goJDEuc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0TWF0NDsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9w
Q29uc3RydWN0TWF0MjsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0g
RU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IG9w
ID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKCQxLnNpemUp
IHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVP
cENvbnN0cnVjdFZlYzI7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzM7ICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7ICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdFZlYzI7ICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdFZlYzM7ICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7ICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgogICAgICAgICAgICAgICAgIHN3aXRj
aCgkMS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RJbnQ7ICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzIiLCAkMS5saW5l
KTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAz
OiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzMiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1
Y3RJVmVjMzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiAgICAgICBGUkFHX1ZFUlRf
T05MWSgiaXZlYzQiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjNDsgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEludDsgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0SVZlYzI7IGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdElWZWM0OyBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEVi
dEJvb2w6CiAgICAgICAgICAgICAgICAgc3dpdGNoKCQxLnNpemUpIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVP
cENvbnN0cnVjdEJvb2w7ICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgIEZS
QUdfVkVSVF9PTkxZKCJidmVjMiIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMyOyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVj
MyIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMzOyBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjNCIsICQxLmxpbmUpOyBvcCA9
IEVPcENvbnN0cnVjdEJWZWM0OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0g
RU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBF
T3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVP
cENvbnN0cnVjdEJWZWMzOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9w
Q29uc3RydWN0QlZlYzQ7IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKG9wID09IEVPcE51bGwpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigkMS5saW5lLCAiY2Fubm90IGNvbnN0cnVjdCB0aGlzIHR5cGUiLCBnZXRCYXNpY1N0cmlu
ZygkMS50eXBlKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJjYW5ub3Qg
Y29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5nKCQxLnR5cGUpKTsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgJDEudHlwZSA9IEVi
dEZsb2F0OwogICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7CkBAIC02NjEs
MTQgKzY3Miw3IEBAIGZ1bmN0aW9uX2lkZW50aWZpZXIKICAgICAgICAgJCQgPSBmdW5jdGlvbjsK
ICAgICB9CiAgICAgfCBJREVOVElGSUVSIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVk
RXJyb3JDaGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAg
ICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigkMS5zdHJpbmcsIHR5cGUp
OwotICAgICAgICAkJCA9IGZ1bmN0aW9uOwotICAgIH0KLSAgICB8IEZJRUxEX1NFTEVDVElPTiB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDEubGluZSwgKiQxLnN0
cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5z
dHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBUVHlwZSB0
eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24g
PSBuZXcgVEZ1bmN0aW9uKCQxLnN0cmluZywgdHlwZSk7CkBAIC02ODEsMjggKzY4NSwyOCBAQCB1
bmFyeV9leHByZXNzaW9uCiAgICAgICAgICQkID0gJDE7CiAgICAgfQogICAgIHwgSU5DX09QIHVu
YXJ5X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygk
MS5saW5lLCAiKysiLCAkMikpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNr
KEAxLCAiKysiLCAkMikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVJbmNyZW1lbnQs
ICQyLCAkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVJbmNyZW1lbnQsICQyLCBAMSwgY29u
dGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAg
Y29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsICIrKyIsICQyLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihAMSwgIisrIiwgJDItPmdl
dENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgfQogICAgIH0KICAgICB8IERFQ19PUCB1bmFyeV9l
eHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soJDEubGlu
ZSwgIi0tIiwgJDIpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjayhAMSwg
Ii0tIiwgJDIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAkMiwg
JDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAkMiwgQDEsIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnVuYXJ5T3BFcnJvcigkMS5saW5lLCAiLS0iLCAkMi0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDEsICItLSIsICQyLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICQkID0gJDI7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCB1bmFyeV9vcGVyYXRvciB1bmFy
eV9leHByZXNzaW9uIHsKICAgICAgICAgaWYgKCQxLm9wICE9IEVPcE51bGwpIHsKLSAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgkMS5vcCwgJDIsICQx
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgkMS5vcCwgJDIsIEAxLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CiAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewogICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGVycm9yT3AgPSAiIjsKICAgICAgICAgICAgICAgICBzd2l0Y2goJDEub3ApIHsKQEAg
LTcxMCw3ICs3MTQsNyBAQCB1bmFyeV9leHByZXNzaW9uCiAgICAgICAgICAgICAgICAgY2FzZSBF
T3BMb2dpY2FsTm90OiBlcnJvck9wID0gIiEiOyBicmVhazsKICAgICAgICAgICAgICAgICBkZWZh
dWx0OiBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+
dW5hcnlPcEVycm9yKCQxLmxpbmUsIGVycm9yT3AsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDEsIGVycm9yT3AsICQyLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgICAgIH0KQEAgLTcyMSwyOCArNzI1
LDI2IEBAIHVuYXJ5X2V4cHJlc3Npb24KIC8vIEdyYW1tYXIgTm90ZTogIE5vIHRyYWRpdGlvbmFs
IHN0eWxlIHR5cGUgY2FzdHMuCiAKIHVuYXJ5X29wZXJhdG9yCi0gICAgOiBQTFVTICB7ICQkLmxp
bmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcE51bGw7IH0KLSAgICB8IERBU0ggIHsgJCQubGluZSA9
ICQxLmxpbmU7ICQkLm9wID0gRU9wTmVnYXRpdmU7IH0KLSAgICB8IEJBTkcgIHsgJCQubGluZSA9
ICQxLmxpbmU7ICQkLm9wID0gRU9wTG9naWNhbE5vdDsgfQorICAgIDogUExVUyAgeyAkJC5vcCA9
IEVPcE51bGw7IH0KKyAgICB8IERBU0ggIHsgJCQub3AgPSBFT3BOZWdhdGl2ZTsgfQorICAgIHwg
QkFORyAgeyAkJC5vcCA9IEVPcExvZ2ljYWxOb3Q7IH0KICAgICA7CiAvLyBHcmFtbWFyIE5vdGU6
ICBObyAnKicgb3IgJyYnIHVuYXJ5IG9wcy4gIFBvaW50ZXJzIGFyZSBub3Qgc3VwcG9ydGVkLgog
CiBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uCiAgICAgOiB1bmFyeV9leHByZXNzaW9uIHsgJCQg
PSAkMTsgfQogICAgIHwgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiBTVEFSIHVuYXJ5X2V4cHJl
c3Npb24gewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgiKiIsICQyLmxpbmUpOwotICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE11bCwgJDEsICQzLCAk
Mi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5i
aW5hcnlPcEVycm9yKCQyLmxpbmUsICIqIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3Io
QDIsICIqIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7
CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIFNMQVNI
IHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgiLyIsICQyLmxpbmUp
OwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcERp
diwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRGl2LCAkMSwgJDMsIEAyLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIvIiwgJDEtPmdldENvbXBsZXRlU3Ry
aW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoQDIsICIvIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTc1MiwxNyArNzU0LDE3IEBAIG11bHRpcGxpY2F0
aXZlX2V4cHJlc3Npb24KIGFkZGl0aXZlX2V4cHJlc3Npb24KICAgICA6IG11bHRpcGxpY2F0aXZl
X2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBhZGRpdGl2ZV9leHByZXNzaW9uIFBMVVMg
bXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wQWRkLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BBZGQsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAg
aWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGlu
ZSwgIisiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIisiLCAkMS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQogICAgIH0K
ICAgICB8IGFkZGl0aXZlX2V4cHJlc3Npb24gREFTSCBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9u
IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BT
dWIsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcFN1YiwgJDEsICQzLCBAMiwg
Y29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAg
ICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiLSIsICQxLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5i
aW5hcnlPcEVycm9yKEAyLCAiLSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAkJCA9ICQxOwogICAgICAgICB9CkBAIC03NzYsNDMgKzc3OCw0MyBAQCBzaGlmdF9leHBy
ZXNzaW9uCiByZWxhdGlvbmFsX2V4cHJlc3Npb24KICAgICA6IHNoaWZ0X2V4cHJlc3Npb24geyAk
JCA9ICQxOyB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Npb24gTEVGVF9BTkdMRSBzaGlmdF9l
eHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BMZXNzVGhhbiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTGVz
c1RoYW4sICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQk
ID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIjwi
LCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIjwiLCAkMS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNl
KTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQy
LmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3Rh
bnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0
KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9leHByZXNzaW9uIFJJ
R0hUX0FOR0xFIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgJDEsICQzLCAkMi5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW4sICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoJDIubGluZSwgIj4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdl
dENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihA
MiwgIj4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRV
bmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5p
b25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwg
cmVsYXRpb25hbF9leHByZXNzaW9uIExFX09QIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbkVxdWFs
LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAkMSwg
JDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI8PSIsICQxLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiPD0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwg
JDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOwor
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1
bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwog
ICAgICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9leHByZXNzaW9uIEdFX09QIHNoaWZ0
X2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmlu
YXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlP
cEVycm9yKCQyLmxpbmUsICI+PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAi
Pj0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25B
cnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAg
LTgyMCwyMyArODIyLDIzIEBAIHJlbGF0aW9uYWxfZXhwcmVzc2lvbgogZXF1YWxpdHlfZXhwcmVz
c2lvbgogICAgIDogcmVsYXRpb25hbF9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgZXF1
YWxpdHlfZXhwcmVzc2lvbiBFUV9PUCByZWxhdGlvbmFsX2V4cHJlc3Npb24gIHsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BFcXVhbCwgJDEsICQz
LCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1YWwsICQxLCAkMywgQDIsIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj09IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCks
ICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoQDIsICI9PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBD
b25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAg
ICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9
CiAgICAgfCBlcXVhbGl0eV9leHByZXNzaW9uIE5FX09QIHJlbGF0aW9uYWxfZXhwcmVzc2lvbiB7
Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTm90
RXF1YWwsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5vdEVxdWFsLCAkMSwg
JDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIhPSIsICQxLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiIT0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwg
JDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOwor
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1
bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwog
ICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg1NiwxMyArODU4LDEzIEBAIGluY2x1c2l2ZV9v
cl9leHByZXNzaW9uCiBsb2dpY2FsX2FuZF9leHByZXNzaW9uCiAgICAgOiBpbmNsdXNpdmVfb3Jf
ZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxvZ2ljYWxfYW5kX2V4cHJlc3Npb24gQU5E
X09QIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5kLCAkMSwgJDMsICQyLmxpbmUsIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5kLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5h
cnlPcEVycm9yKCQyLmxpbmUsICImJiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAy
LCAiJiYiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRV
bmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5p
b25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsK
QEAgLTg3MCwxMyArODcyLDEzIEBAIGxvZ2ljYWxfYW5kX2V4cHJlc3Npb24KIGxvZ2ljYWxfeG9y
X2V4cHJlc3Npb24KICAgICA6IGxvZ2ljYWxfYW5kX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAg
ICAgfCBsb2dpY2FsX3hvcl9leHByZXNzaW9uIFhPUl9PUCBsb2dpY2FsX2FuZF9leHByZXNzaW9u
ICB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9w
TG9naWNhbFhvciwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbFhv
ciwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0g
MCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiXl4iLCAk
MS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIl5eIiwgJDEtPmdldENvbXBsZXRlU3Ry
aW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7
Ci0gICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMi5s
aW5lKTsKKyAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
IEAyKTsKICAgICAgICAgfQogICAgIH0KICAgICA7CkBAIC04ODQsMTMgKzg4NiwxMyBAQCBsb2dp
Y2FsX3hvcl9leHByZXNzaW9uCiBsb2dpY2FsX29yX2V4cHJlc3Npb24KICAgICA6IGxvZ2ljYWxf
eG9yX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBsb2dpY2FsX29yX2V4cHJlc3Npb24g
T1JfT1AgbG9naWNhbF94b3JfZXhwcmVzc2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxPciwgJDEsICQzLCAkMi5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5h
cnlPcEVycm9yKCQyLmxpbmUsICJ8fCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAy
LCAifHwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRV
bmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5p
b25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsK
QEAgLTg5OCwxNSArOTAwLDE1IEBAIGxvZ2ljYWxfb3JfZXhwcmVzc2lvbgogY29uZGl0aW9uYWxf
ZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF9vcl9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAg
IHwgbG9naWNhbF9vcl9leHByZXNzaW9uIFFVRVNUSU9OIGV4cHJlc3Npb24gQ09MT04gYXNzaWdu
bWVudF9leHByZXNzaW9uIHsKLSAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soJDIu
bGluZSwgJDEpKQorICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjayhAMiwgJDEpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigkMSwgJDMsICQ1LCAkMi5saW5lKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCQxLCAkMywgJDUsIEAyKTsK
ICAgICAgICAgaWYgKCQzLT5nZXRUeXBlKCkgIT0gJDUtPmdldFR5cGUoKSkKICAgICAgICAgICAg
ICQkID0gMDsKIAogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiOiIsICQzLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkNS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9y
KEAyLCAiOiIsICQzLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkNS0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQ1
OwogICAgICAgICB9CkBAIC05MTYsMTEgKzkxOCwxMSBAQCBjb25kaXRpb25hbF9leHByZXNzaW9u
CiBhc3NpZ25tZW50X2V4cHJlc3Npb24KICAgICA6IGNvbmRpdGlvbmFsX2V4cHJlc3Npb24geyAk
JCA9ICQxOyB9CiAgICAgfCB1bmFyeV9leHByZXNzaW9uIGFzc2lnbm1lbnRfb3BlcmF0b3IgYXNz
aWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hl
Y2soJDIubGluZSwgImFzc2lnbiIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVy
cm9yQ2hlY2soQDIsICJhc3NpZ24iLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEFzc2lnbigkMi5vcCwg
JDEsICQzLCAkMi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QXNzaWduKCQyLm9wLCAkMSwgJDMsIEAyKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9yKCQyLmxpbmUsICJhc3NpZ24iLCAkMS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+YXNzaWduRXJyb3IoQDIsICJhc3NpZ24iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwg
JDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpAQCAtOTI4LDExICs5MzAsMTEgQEAg
YXNzaWdubWVudF9leHByZXNzaW9uCiAgICAgOwogCiBhc3NpZ25tZW50X29wZXJhdG9yCi0gICAg
OiBFUVVBTCAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLmxp
bmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcEFzc2lnbjsgfQotICAgIHwgTVVMX0FTU0lHTiAgIHsg
RlJBR19WRVJUX09OTFkoIio9IiwgJDEubGluZSk7ICAgICAkJC5saW5lID0gJDEubGluZTsgJCQu
b3AgPSBFT3BNdWxBc3NpZ247IH0KLSAgICB8IERJVl9BU1NJR04gICB7IEZSQUdfVkVSVF9PTkxZ
KCIvPSIsICQxLmxpbmUpOyAgICAgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wRGl2QXNz
aWduOyB9Ci0gICAgfCBBRERfQVNTSUdOICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcEFkZEFzc2lnbjsgfQotICAgIHwg
U1VCX0FTU0lHTiAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJC5saW5l
ID0gJDEubGluZTsgJCQub3AgPSBFT3BTdWJBc3NpZ247IH0KKyAgICA6IEVRVUFMICAgICAgICB7
ICQkLm9wID0gRU9wQXNzaWduOyB9CisgICAgfCBNVUxfQVNTSUdOICAgeyAkJC5vcCA9IEVPcE11
bEFzc2lnbjsgfQorICAgIHwgRElWX0FTU0lHTiAgIHsgJCQub3AgPSBFT3BEaXZBc3NpZ247IH0K
KyAgICB8IEFERF9BU1NJR04gICB7ICQkLm9wID0gRU9wQWRkQXNzaWduOyB9CisgICAgfCBTVUJf
QVNTSUdOICAgeyAkJC5vcCA9IEVPcFN1YkFzc2lnbjsgfQogICAgIDsKIAogZXhwcmVzc2lvbgpA
QCAtOTQwLDkgKzk0Miw5IEBAIGV4cHJlc3Npb24KICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAg
ICAgfCBleHByZXNzaW9uIENPTU1BIGFzc2lnbm1lbnRfZXhwcmVzc2lvbiB7Ci0gICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCQxLCAkMywgJDIubGluZSk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCQxLCAkMywgQDIpOwogICAg
ICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigk
Mi5saW5lLCAiLCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiLCIsICQxLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQzOwogICAgICAgICB9CkBA
IC05NzAsMTMgKzk3MiwxMyBAQCBkZWNsYXJhdGlvbgogICAgICAgICAgICAgY29uc3QgVFBhcmFt
ZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJhbShpKTsKICAgICAgICAgICAgIGlmIChwYXJh
bS5uYW1lICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVFZhcmlhYmxlICp2
YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOworICAgICAg
ICAgICAgICAgIFRWYXJpYWJsZSB2YXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlwZSk7CiAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLCB2
YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKSwgJDEubGluZSk7CisgICAgICAgICAgICAgICAg
cHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBl
LCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLmdldFVuaXF1ZUlkKCks
IHZhcmlhYmxlLmdldE5hbWUoKSwgdmFyaWFibGUuZ2V0VHlwZSgpLCBAMSksIEAxKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5
cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAk
MS5saW5lKSwgJDEubGluZSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgQDEpLCBAMSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgCkBAIC05OTIsMTEgKzk5NCwxMSBAQCBkZWNsYXJhdGlvbgog
ICAgIH0KICAgICB8IFBSRUNJU0lPTiBwcmVjaXNpb25fcXVhbGlmaWVyIHR5cGVfc3BlY2lmaWVy
X25vX3ByZWMgU0VNSUNPTE9OIHsKICAgICAgICAgaWYgKCgkMiA9PSBFYnBIaWdoKSAmJiAoY29u
dGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIpICYmICFjb250ZXh0LT5mcmFn
bWVudFByZWNpc2lvbkhpZ2gpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUs
ICJwcmVjaXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAi
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAicHJlY2lzaW9uIGlzIG5vdCBzdXBw
b3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVyIiwgImhpZ2hwIik7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFjb250ZXh0LT5zeW1ib2xUYWJs
ZS5zZXREZWZhdWx0UHJlY2lzaW9uKCAkMywgJDIgKSkgewotICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoJDEubGluZSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBmb3IgZGVmYXVsdCBwcmVjaXNp
b24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlwZSkpOworICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoQDEsICJpbGxlZ2FsIHR5cGUgYXJndW1lbnQgZm9yIGRlZmF1bHQgcHJlY2lz
aW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCQzLnR5cGUpKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAkJCA9IDA7CkBAIC0xMDE2LDEy
ICsxMDE4LDEyIEBAIGZ1bmN0aW9uX3Byb3RvdHlwZQogICAgICAgICBURnVuY3Rpb24qIHByZXZE
ZWMgPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24qPihjb250ZXh0LT5zeW1ib2xUYWJsZS5maW5kKCQx
LT5nZXRNYW5nbGVkTmFtZSgpKSk7CiAgICAgICAgIGlmIChwcmV2RGVjKSB7CiAgICAgICAgICAg
ICBpZiAocHJldkRlYy0+Z2V0UmV0dXJuVHlwZSgpICE9ICQxLT5nZXRSZXR1cm5UeXBlKCkpIHsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAib3ZlcmxvYWRlZCBmdW5j
dGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBlIiwgJDEtPmdldFJldHVyblR5cGUo
KS5nZXRCYXNpY1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwg
Im92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSByZXR1cm4gdHlwZSIsICQx
LT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwcmV2RGVjLT5nZXRQYXJhbUNvdW50KCk7ICsraSkgewogICAgICAgICAgICAg
ICAgIGlmIChwcmV2RGVjLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXIoKSAhPSAkMS0+
Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0
aGUgc2FtZSBwYXJhbWV0ZXIgcXVhbGlmaWVycyIsICQxLT5nZXRQYXJhbShpKS50eXBlLT5nZXRR
dWFsaWZpZXJTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAy
LCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHBhcmFtZXRlciBxdWFs
aWZpZXJzIiwgJDEtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllclN0cmluZygpKTsKICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KQEAgLTEwMzMsNyArMTAzNSw2IEBAIGZ1bmN0aW9uX3Byb3RvdHlwZQog
ICAgICAgICAvLyBiZWluZyByZWRlY2xhcmVkLiAgU28sIHBhc3MgYmFjayB1cCB0aGlzIGRlY2xh
cmF0aW9uLCBub3QgdGhlIG9uZSBpbiB0aGUgc3ltYm9sIHRhYmxlLgogICAgICAgICAvLwogICAg
ICAgICAkJC5mdW5jdGlvbiA9ICQxOwotICAgICAgICAkJC5saW5lID0gJDIubGluZTsKIAogICAg
ICAgICAvLyBXZSdyZSBhdCB0aGUgaW5uZXIgc2NvcGUgbGV2ZWwgb2YgdGhlIGZ1bmN0aW9uJ3Mg
YXJndW1lbnRzIGFuZCBib2R5IHN0YXRlbWVudC4KICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlv
biBwcm90b3R5cGUgdG8gdGhlIHN1cnJvdW5kaW5nIHNjb3BlIGluc3RlYWQuCkBAIC0xMDY5LDcg
KzEwNzAsNyBAQCBmdW5jdGlvbl9oZWFkZXJfd2l0aF9wYXJhbWV0ZXJzCiAgICAgICAgICAgICAv
LwogICAgICAgICAgICAgLy8gVGhpcyBwYXJhbWV0ZXIgPiBmaXJzdCBpcyB2b2lkCiAgICAgICAg
ICAgICAvLwotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgImNhbm5vdCBiZSBh
biBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSciLCAidm9pZCIpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5ub3QgYmUgYW4gYXJndW1lbnQgdHlwZSBleGNlcHQg
Zm9yICcodm9pZCknIiwgInZvaWQiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgIGRlbGV0ZSAkMy5wYXJhbS50eXBlOwogICAgICAgICB9IGVsc2UgewpAQCAt
MTA4MywxMSArMTA4NCwxMSBAQCBmdW5jdGlvbl9oZWFkZXJfd2l0aF9wYXJhbWV0ZXJzCiBmdW5j
dGlvbl9oZWFkZXIKICAgICA6IGZ1bGx5X3NwZWNpZmllZF90eXBlIElERU5USUZJRVIgTEVGVF9Q
QVJFTiB7CiAgICAgICAgIGlmICgkMS5xdWFsaWZpZXIgIT0gRXZxR2xvYmFsICYmICQxLnF1YWxp
ZmllciAhPSBFdnFUZW1wb3JhcnkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxp
bmUsICJubyBxdWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxp
ZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAy
LCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZp
ZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIH0KICAgICAgICAgLy8gbWFrZSBzdXJlIGEgc2FtcGxlciBpcyBub3QgaW52b2x2
ZWQgYXMgd2VsbC4uLgotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JD
aGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJF
cnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAg
ICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBhcyBhIHByb3RvdHlwZSBhZnRlciBwYXJzaW5nIGl0
ICh3ZSBkbyBub3Qgc3VwcG9ydCByZWN1cnNpb24pCkBAIC0xMTAyLDMzICsxMTAzLDMxIEBAIGZ1
bmN0aW9uX2hlYWRlcgogCiBwYXJhbWV0ZXJfZGVjbGFyYXRvcgogICAgIC8vIFR5cGUgKyBuYW1l
Ci0gICAgOiB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIHsKKyAgICA6IHR5cGVfc3BlY2lmaWVy
IGlkZW50aWZpZXIgewogICAgICAgICBpZiAoJDEudHlwZSA9PSBFYnRWb2lkKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCci
LCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJp
bGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsICQyLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnRleHQt
PnJlc2VydmVkRXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMiwgKiQyLnN0cmluZykpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7JDIuc3RyaW5n
LCBuZXcgVFR5cGUoJDEpfTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxpbmU7CiAgICAgICAgICQk
LnBhcmFtID0gcGFyYW07CiAgICAgfQotICAgIHwgdHlwZV9zcGVjaWZpZXIgSURFTlRJRklFUiBM
RUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAgICB8IHR5
cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24g
UklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIG1ha2UgYW4gYXJy
YXkgb3V0IG9mIHRoaXMgdHlwZQotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JD
aGVjaygkMy5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNo
ZWNrKEAzLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAg
aWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nKSkKKyAg
ICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMiwgKiQyLnN0cmluZykpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgaW50IHNpemU7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQzLmxpbmUsICQ0LCBzaXplKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQ0LCBzaXplKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgJDEuc2V0QXJyYXkodHJ1
ZSwgc2l6ZSk7CiAKICAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoJDEpOwogICAgICAg
ICBUUGFyYW1ldGVyIHBhcmFtID0geyAkMi5zdHJpbmcsIHR5cGUgfTsKLSAgICAgICAgJCQubGlu
ZSA9ICQyLmxpbmU7CiAgICAgICAgICQkLnBhcmFtID0gcGFyYW07CiAgICAgfQogICAgIDsKQEAg
LTExNDQsMTQgKzExNDMsMTQgQEAgcGFyYW1ldGVyX2RlY2xhcmF0aW9uCiAgICAgLy8KICAgICA6
IHR5cGVfcXVhbGlmaWVyIHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX2RlY2xhcmF0b3Ig
ewogICAgICAgICAkJCA9ICQzOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNr
KCQzLmxpbmUsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAo
Y29udGV4dC0+cGFyYW1FcnJvckNoZWNrKEAzLCAkMS5xdWFsaWZpZXIsICQyLCAkJC5wYXJhbS50
eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9CiAgICAgfCBwYXJh
bWV0ZXJfcXVhbGlmaWVyIHBhcmFtZXRlcl9kZWNsYXJhdG9yIHsKICAgICAgICAgJCQgPSAkMjsK
LSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCQyLmxpbmUs
ICQxLCAqJDIucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1w
bGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygkMi5s
aW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtRXJyb3JDaGVjayhAMiwgRXZxVGVtcG9yYXJ5LCAkMSwgJCQucGFyYW0udHlwZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQogICAgIC8vCkBAIC0xMTU5
LDE0ICsxMTU4LDE0IEBAIHBhcmFtZXRlcl9kZWNsYXJhdGlvbgogICAgIC8vCiAgICAgfCB0eXBl
X3F1YWxpZmllciBwYXJhbWV0ZXJfcXVhbGlmaWVyIHBhcmFtZXRlcl90eXBlX3NwZWNpZmllciB7
CiAgICAgICAgICQkID0gJDM7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2so
JDMubGluZSwgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5wYXJhbUVycm9yQ2hlY2soQDMsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFtLnR5
cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgIH0KICAgICB8IHBhcmFt
ZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX3R5cGVfc3BlY2lmaWVyIHsKICAgICAgICAgJCQgPSAk
MjsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCQyLmxp
bmUsICQxLCAqJDIucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJT
YW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygk
Mi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMiwgRXZxVGVtcG9yYXJ5LCAkMSwgJCQucGFyYW0udHlw
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQogICAgIDsKQEAgLTEx
OTcsODMgKzExOTYsODMgQEAgaW5pdF9kZWNsYXJhdG9yX2xpc3QKICAgICA6IHNpbmdsZV9kZWNs
YXJhdGlvbiB7CiAgICAgICAgICQkID0gJDE7CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9y
X2xpc3QgQ09NTUEgSURFTlRJRklFUiB7CisgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01N
QSBpZGVudGlmaWVyIHsKICAgICAgICAgaWYgKCQxLnR5cGUudHlwZSA9PSBFYnRJbnZhcmlhbnQg
JiYgISQzLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDMu
bGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMy5z
dHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJ1bmRlY2xh
cmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgJDMuc3RyaW5nLT5jX3N0cigp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCi0gICAgICAg
IFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wo
MCwgKiQzLnN0cmluZywgVFR5cGUoJDEudHlwZSksICQzLmxpbmUpOwotICAgICAgICAkJC5pbnRl
cm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRl
cm1Ob2RlLCBzeW1ib2wsICQzLmxpbmUpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMy5zdHJpbmcsIFRUeXBlKCQx
LnR5cGUpLCBAMyk7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIHN5bWJvbCwgQDMpOwogICAgICAg
ICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDMubGlu
ZSwgJCQudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKEAzLCAkJC50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAg
ICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3Ry
aW5nLCAkJC50eXBlLCBmYWxzZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RF
cnJvckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3RyaW5n
LCAkJC50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JD
aGVjayhAMywgKiQzLnN0cmluZywgJCQudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoc3ltYm9sICYmIHZhcmlhYmxlKQogICAgICAg
ICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAgICAgfQotICAg
IHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgUklH
SFRfQlJBQ0tFVCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEg
aWRlbnRpZmllciBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkMS50eXBlKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0
RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkMS50eXBlLCB0cnVlKSkKKyAgICAgICAg
aWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soQDMsICokMy5zdHJpbmcsICQxLnR5
cGUsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQk
ID0gJDE7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soJDQubGlu
ZSwgJDEudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCQ0LmxpbmUs
ICQxLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjayhANCwg
JDEudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKEA0LCAkMS50eXBl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAkMS50eXBlLnNldEFycmF5KHRydWUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2
YXJpYWJsZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soJDQubGlu
ZSwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5RXJyb3JDaGVjayhANCwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgIH0KLSAg
ICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENPTU1BIElERU5USUZJRVIgTEVGVF9CUkFDS0VUIGNv
bnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAgIHwgaW5pdF9k
ZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhw
cmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCQzLmxp
bmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9u
SW5pdENvbnN0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywgJDEudHlwZSwgdHJ1ZSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgJCQgPSAkMTsKIAotICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkNC5saW5lLCAkMS50eXBlKSB8fCBj
b250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDQubGluZSwgJDEudHlwZSkpCisgICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEA0LCAkMS50eXBlKSB8fCBjb250
ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDQsICQxLnR5cGUpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXpl
OwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDQubGluZSwg
JDUsIHNpemUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2so
QDQsICQ1LCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAkMS50eXBlLnNldEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICAgICAgVFZhcmlh
YmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNo
ZWNrKCQ0LmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soQDQsICokMy5zdHJpbmcsICQxLnR5cGUsIHZh
cmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICBUVHlwZSB0eXBlID0gVFR5cGUoJDEudHlwZSk7CiAgICAgICAgICAgICB0eXBlLnNldEFycmF5
U2l6ZShzaXplKTsKLSAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICok
My5zdHJpbmcsIHR5cGUsICQzLmxpbmUpLCAkMy5saW5lKTsKKyAgICAgICAgICAgICQkLmludGVy
bUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVy
bU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJs
ZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICokMy5zdHJpbmcsIHR5cGUsIEAzKSwgQDMpOwogICAgICAg
ICB9CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiBF
UVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJF
cnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3Qg
Q09NTUEgaWRlbnRpZmllciBFUVVBTCBpbml0aWFsaXplciB7CisgICAgICAgIGlmIChjb250ZXh0
LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkMS50eXBlKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAkJCA9ICQxOwogCiAgICAgICAgIFRJbnRlcm1O
b2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXpl
cigkMy5saW5lLCAqJDMuc3RyaW5nLCAkMS50eXBlLCAkNSwgaW50ZXJtTm9kZSkpIHsKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoQDMsICokMy5zdHJpbmcsICQxLnR5
cGUsICQ1LCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIGJ1
aWxkIHRoZSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAgICAgICAgICAgIC8vCiAgICAg
ICAgICAgICBpZiAoaW50ZXJtTm9kZSkKLSAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgaW50ZXJtTm9k
ZSwgJDQubGluZSk7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIGludGVybU5vZGUsIEA0KTsKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSAkMS5p
bnRlcm1BZ2dyZWdhdGU7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMjg2LDc5ICsxMjg1LDc5IEBA
IGluaXRfZGVjbGFyYXRvcl9saXN0CiBzaW5nbGVfZGVjbGFyYXRpb24KICAgICA6IGZ1bGx5X3Nw
ZWNpZmllZF90eXBlIHsKICAgICAgICAgJCQudHlwZSA9ICQxOwotICAgICAgICAkJC5pbnRlcm1B
Z2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgkMSksICQxLmxpbmUpLCAkMS5saW5l
KTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1h
a2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgVFR5cGUo
JDEpLCBAMSksIEAxKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElG
SUVSIHsKLSAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkMSksICQyLmxpbmUpOwotICAgICAg
ICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0
ZShzeW1ib2wsICQyLmxpbmUpOworICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmll
ciB7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEpLCBAMik7CisgICAgICAgICQkLmlu
dGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJv
bCwgQDIpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVy
cm9yQ2hlY2soJDIubGluZSwgJCQudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkJC50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygk
Mi5saW5lLCAqJDIuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgICQkLnR5cGUgPSAkMTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcs
ICQkLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNo
ZWNrKEAyLCAqJDIuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAgICAgICAg
ICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKICAgICB9Ci0gICAg
fCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFD
S0VUIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInVuc2l6ZWQgYXJyYXkgZGVj
bGFyYXRpb25zIG5vdCBzdXBwb3J0ZWQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgIHwgZnVs
bHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7
CisgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMg
bm90IHN1cHBvcnRlZCIsICQyLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKIAotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIFRUeXBlKCQxKSwgJDIubGluZSk7Ci0g
ICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdn
cmVnYXRlKHN5bWJvbCwgJDIubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEp
LCBAMik7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAgICAkJC50eXBlID0gJDE7CiAgICAg
fQotICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29u
c3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAgICB8IGZ1bGx5X3NwZWNpZmllZF90
eXBlIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJB
Q0tFVCB7CiAgICAgICAgIFRUeXBlIHR5cGUgPSBUVHlwZSgkMSk7CiAgICAgICAgIGludCBzaXpl
OwotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygkMi5saW5lLCAkNCwg
c2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKEAyLCAkNCwg
c2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIHR5cGUuc2V0
QXJyYXlTaXplKHNpemUpOwotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIHR5cGUsICQyLmxpbmUpOwot
ICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFn
Z3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIHR5cGUsIEAy
KTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1h
a2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgIAotICAgICAgICBpZiAoY29udGV4dC0+
c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9y
Q2hlY2soJDIubGluZSwgKiQyLnN0cmluZywgJDEsIHRydWUpKQorICAgICAgICBpZiAoY29udGV4
dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMiwgKiQyLnN0cmluZywgJDEsIHRydWUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQkLnR5cGUgPSAkMTsKIAot
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMy5saW5lLCAkMSkgfHwg
Y29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxKSkKKyAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDMsICQxKSB8fCBjb250ZXh0LT5hcnJh
eVF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQzLmxpbmUsICQ0LCBzaXplKSkKKyAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKEAzLCAkNCwgc2l6ZSkp
CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICAgICAkMS5z
ZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAw
OwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygkMy5saW5lLCAqJDIu
c3RyaW5nLCAkMSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJy
b3JDaGVjayhAMywgKiQyLnN0cmluZywgJDEsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQog
ICAgICAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwog
ICAgICAgICB9CiAgICAgfQotICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBF
UVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJF
cnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50
aWZpZXIgRVFVQUwgaW5pdGlhbGl6ZXIgeworICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVh
bGlmaWVyRXJyb3JDaGVjayhAMiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogCiAgICAgICAgICQkLnR5cGUgPSAkMTsKIAogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJt
Tm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoJDIubGluZSwg
KiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkgeworICAgICAgICBpZiAoIWNvbnRleHQt
PmV4ZWN1dGVJbml0aWFsaXplcihAMiwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkg
ewogICAgICAgICAvLwogICAgICAgICAvLyBCdWlsZCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRp
b24KICAgICAgICAgLy8KICAgICAgICAgICAgIGlmKGludGVybU5vZGUpCi0gICAgICAgICAgICAg
ICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdh
dGUoaW50ZXJtTm9kZSwgJDMubGluZSk7CisgICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgQDMp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9
IDA7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMzY3LDExOCArMTM2Niw1MCBAQCBzaW5nbGVfZGVj
bGFyYXRpb24KICAgICAgICAgfQogICAgIH0KICAgICB8IElOVkFSSUFOVCBJREVOVElGSUVSIHsK
LSAgICAgICAgVkVSVEVYX09OTFkoImludmFyaWFudCBkZWNsYXJhdGlvbiIsICQxLmxpbmUpOwot
ICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQorICAgICAg
ICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgQDEpOworICAgICAgICBpZiAo
Y29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLSAgICAgICAgJCQudHlwZS5zZXRCYXNpYyhFYnRJbnZhcmlhbnQsIEV2cUludmFy
aWFudFZhcnlpbmdPdXQsICQyLmxpbmUpOworICAgICAgICAkJC50eXBlLnNldEJhc2ljKEVidElu
dmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgQDIpOwogICAgICAgICBpZiAoISQyLnN5
bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInVu
ZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMi5zdHJpbmctPmNf
c3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJ1bmRlY2xhcmVkIGlkZW50
aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgJCQu
aW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsK
LSAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJCQudHlwZSksICQyLmxpbmUpOwotICAg
ICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VB
Z2dyZWdhdGUoc3ltYm9sLCAkMi5saW5lKTsKKyAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5
bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5
cGUoJCQudHlwZSksIEAyKTsKKyAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAgICB9CiAg
ICAgfQotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2Vz
LgotLy8KLS8vICAgIHwgYnVmZmVyX3NwZWNpZmllciB7Ci0vLyAgICAgICAgJCQuaW50ZXJtQWdn
cmVnYXRlID0gMDsKLS8vICAgIH0KICAgICA7CiAKLS8vIEdyYW1tYXIgTm90ZTogIE5vICdlbnVt
Jywgb3IgJ3R5cGVkZWYnLgotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUgcGFjay91bnBh
Y2sgbGFuZ3VhZ2VzLgotLy8KLS8vJXR5cGUgPGludGVybT4gYnVmZmVyX2RlY2xhcmF0aW9uCi0v
LyV0eXBlIDxpbnRlcm0udHlwZT4gYnVmZmVyX3NwZWNpZmllciBpbnB1dF9vcl9vdXRwdXQgYnVm
ZmVyX2RlY2xhcmF0aW9uX2xpc3QKLS8vYnVmZmVyX3NwZWNpZmllcgotLy8gICAgOiBpbnB1dF9v
cl9vdXRwdXQgTEVGVF9CUkFDRSBidWZmZXJfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7
Ci0vLyAgICB9Ci0vLyAgICA7Ci0vLwotLy9pbnB1dF9vcl9vdXRwdXQKLS8vICAgIDogSU5QVVQg
ewotLy8gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImlucHV0IikpCi0vLyAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKLS8vICAgICAgICBVTlBBQ0tfT05MWSgiaW5wdXQiLCAkMS5s
aW5lKTsKLS8vICAgICAgICAkJC5xdWFsaWZpZXIgPSBFdnFJbnB1dDsKLS8vICAgIH0KLS8vICAg
IHwgT1VUUFVUIHsKLS8vICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5s
aW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJvdXRwdXQiKSkKLS8v
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotLy8gICAgICAgIFBBQ0tfT05MWSgib3V0
cHV0IiwgJDEubGluZSk7Ci0vLyAgICAgICAgJCQucXVhbGlmaWVyID0gRXZxT3V0cHV0OwotLy8g
ICAgfQotLy8gICAgOwotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUgcGFjay91bnBhY2sg
bGFuZ3VhZ2VzLgotLy8KLS8vYnVmZmVyX2RlY2xhcmF0aW9uX2xpc3QKLS8vICAgIDogYnVmZmVy
X2RlY2xhcmF0aW9uIHsKLS8vICAgIH0KLS8vICAgIHwgYnVmZmVyX2RlY2xhcmF0aW9uX2xpc3Qg
YnVmZmVyX2RlY2xhcmF0aW9uIHsKLS8vICAgIH0KLS8vICAgIDsKLQotLy8KLS8vIElucHV0L291
dHB1dCBzZW1hbnRpY3M6Ci0vLyAgIGZsb2F0IG11c3QgYmUgMTYgb3IgMzIgYml0cwotLy8gICBm
bG9hdCBhbGlnbm1lbnQgcmVzdHJpY3Rpb25zPwotLy8gICBjaGVjayBmb3Igb25seSBvbmUgaW5w
dXQgYW5kIG9ubHkgb25lIG91dHB1dAotLy8gICBzdW0gb2YgYml0ZmllbGRzIGhhcyB0byBiZSBt
dWx0aXBsZSBvZiAzMgotLy8KLQotLy8KLS8vIFBsYWNlIGhvbGRlciBmb3IgdGhlIHBhY2svdW5w
YWNrIGxhbmd1YWdlcy4KLS8vCi0vL2J1ZmZlcl9kZWNsYXJhdGlvbgotLy8gICAgOiB0eXBlX3Nw
ZWNpZmllciBJREVOVElGSUVSIENPTE9OIGNvbnN0YW50X2V4cHJlc3Npb24gU0VNSUNPTE9OIHsK
LS8vICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQyLmxpbmUsICokMi5z
dHJpbmcsIGNvbnRleHQpKQotLy8gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAg
ICAgICAgJCQudmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCQyLnN0cmluZywgJDEpOwotLy8gICAg
ICAgIGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgqJCQudmFyaWFibGUpKSB7Ci0v
LyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJyZWRlZmluaXRpb24iLCAkJC52
YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotLy8gICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7Ci0vLyAgICAgICAgICAgIC8vIGRvbid0IGhhdmUgdG8gZGVsZXRlICQkLnZhcmlhYmxl
LCB0aGUgcG9vbCBwb3Agd2lsbCB0YWtlIGNhcmUgb2YgaXQKLS8vICAgICAgICB9Ci0vLyAgICB9
Ci0vLyAgICA7Ci0KIGZ1bGx5X3NwZWNpZmllZF90eXBlCiAgICAgOiB0eXBlX3NwZWNpZmllciB7
CiAgICAgICAgICQkID0gJDE7CiAKICAgICAgICAgaWYgKCQxLmFycmF5KSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBh
cnJheSIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJub3Qgc3VwcG9ydGVkIiwg
ImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAkMS5zZXRBcnJheShmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCB0
eXBlX3F1YWxpZmllciB0eXBlX3NwZWNpZmllciAgewogICAgICAgICBpZiAoJDIuYXJyYXkpIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZp
cnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIm5vdCBz
dXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICQyLnNldEFycmF5KGZhbHNlKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICgkMS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlICYmCiAgICAgICAgICAgICAo
JDIudHlwZSA9PSBFYnRCb29sIHx8ICQyLnR5cGUgPT0gRWJ0SW50KSkgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoJDIubGluZSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxp
ZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAy
LCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCQxLnF1YWxpZmll
cikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAg
IGlmICgoJDEucXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8fCAkMS5xdWFsaWZpZXIgPT0gRXZx
VmFyeWluZ091dCkgJiYKICAgICAgICAgICAgICgkMi50eXBlID09IEVidEJvb2wgfHwgJDIudHlw
ZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiY2Fu
bm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCQxLnF1YWxpZmllcikpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBn
ZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgJCQgPSAkMjsKQEAgLTE0ODgsMzQgKzE0MTks
MzQgQEAgZnVsbHlfc3BlY2lmaWVkX3R5cGUKIAogdHlwZV9xdWFsaWZpZXIKICAgICA6IENPTlNU
X1FVQUwgewotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFDb25zdCwgJDEubGluZSk7
CisgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCBAMSk7CiAgICAgfQogICAg
IHwgQVRUUklCVVRFIHsKLSAgICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsICQxLmxpbmUp
OwotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJhdHRyaWJ1dGUiKSkKKyAgICAgICAgVkVS
VEVYX09OTFkoImF0dHJpYnV0ZSIsIEAxKTsKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVy
cm9yQ2hlY2soQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJp
YnV0ZSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJC5zZXRC
YXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNp
YyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUsIEAxKTsKICAgICB9CiAgICAgfCBWQVJZSU5HIHsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soJDEubGluZSwgY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQorICAgICAgICBpZiAoY29udGV4
dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpLCAidmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJURVhfU0hBREVSKQotICAgICAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ091dCwgJDEubGluZSk7CisgICAgICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0LCBAMSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgJDEubGlu
ZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nSW4sIEAxKTsK
ICAgICB9CiAgICAgfCBJTlZBUklBTlQgVkFSWUlORyB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5n
bG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxF
cnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZh
cmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJURVhfU0hBREVSKQotICAgICAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgJDEubGluZSk7
CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0
LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2
cUludmFyaWFudFZhcnlpbmdJbiwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhF
YnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nSW4sIEAxKTsKICAgICB9CiAgICAgfCBVTklGT1JN
IHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soJDEubGluZSwgY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQorICAgICAgICBpZiAo
Y29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpLCAidW5pZm9ybSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlmb3JtLCAkMS5saW5lKTsKKyAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVW5pZm9ybSwgQDEpOwogICAgIH0KICAgICA7CiAK
QEAgLTE1MjUsNyArMTQ1Niw3IEBAIHR5cGVfc3BlY2lmaWVyCiAKICAgICAgICAgaWYgKCQkLnBy
ZWNpc2lvbiA9PSBFYnBVbmRlZmluZWQpIHsKICAgICAgICAgICAgICQkLnByZWNpc2lvbiA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmdldERlZmF1bHRQcmVjaXNpb24oJDEudHlwZSk7Ci0gICAgICAg
ICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVjaygkMS5saW5lLCAkJC5wcmVjaXNp
b24sICQxLnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9uRXJyb3JD
aGVjayhAMSwgJCQucHJlY2lzaW9uLCAkMS50eXBlKSkgewogICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTU1NSwxMSArMTQ4
NiwxMSBAQCB0eXBlX3NwZWNpZmllcl9ub19wcmVjCiAgICAgfCB0eXBlX3NwZWNpZmllcl9ub25h
cnJheSBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKICAg
ICAgICAgJCQgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVj
aygkMi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNr
KEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlT
aXplRXJyb3JDaGVjaygkMi5saW5lLCAkMywgc2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlTaXplRXJyb3JDaGVjayhAMiwgJDMsIHNpemUpKQogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkLnNldEFycmF5KHRydWUsIHNpemUpOwog
ICAgICAgICB9CkBAIC0xNTY5LDExOCArMTUwMCwxMDUgQEAgdHlwZV9zcGVjaWZpZXJfbm9fcHJl
YwogdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICAgICA6IFZPSURfVFlQRSB7CiAgICAgICAgIFRR
dWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2
cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgcXVh
bCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIHF1YWwsIEAxKTsKICAg
ICB9CiAgICAgfCBGTE9BVF9UWVBFIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5
OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAg
ICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwgSU5UX1RZUEUg
ewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2lj
KEVidEludCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVh
bCwgQDEpOwogICAgIH0KICAgICB8IEJPT0xfVFlQRSB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgJDEubGluZSk7
CisgICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsIEAxKTsKICAgICB9Ci0vLyAgICB8
IFVOU0lHTkVEIElOVF9UWVBFIHsKLS8vICAgICAgICBQQUNLX1VOUEFDS19PTkxZKCJ1bnNpZ25l
ZCIsICQxLmxpbmUpOwotLy8gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLS8vICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICQxLmxpbmUpOwotLy8gICAgfQogICAgIHwg
VkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRG
bG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMik7CiAgICAgfQogICAg
IHwgVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQog
ICAgIHwgVkVDNCB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAg
JCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNp
YyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAg
fQogICAgIHwgQlZFQzIgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAg
ICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRC
YXNpYyhFYnRCb29sLCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAg
ICB9CiAgICAgfCBCVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNl
dEJhc2ljKEVidEJvb2wsIHF1YWwsIEAxKTsKICAgICAgICAgJCQuc2V0QWdncmVnYXRlKDMpOwog
ICAgIH0KICAgICB8IEJWRUM0IHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5Owot
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoNCk7
CiAgICAgfQogICAgIHwgSVZFQzIgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQk
LnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMik7
CiAgICAgfQogICAgIHwgSVZFQzMgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQk
LnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMyk7
CiAgICAgfQogICAgIHwgSVZFQzQgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQk
LnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoNCk7
CiAgICAgfQogICAgIHwgTUFUUklYMiB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJtYXQyIiwg
JDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMiwgdHJ1ZSk7CiAg
ICAgfQogICAgIHwgTUFUUklYMyB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJtYXQzIiwgJDEu
bGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRG
bG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7CiAgICAg
fQogICAgIHwgTUFUUklYNCB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJtYXQ0IiwgJDEubGlu
ZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9h
dCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoNCwgdHJ1ZSk7CiAgICAgfQog
ICAgIHwgU0FNUExFUjJEIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXIyRCIsICQx
LmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNl
dEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2lj
KEVidFNhbXBsZXIyRCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IFNBTVBMRVJDVUJFIHsKLSAg
ICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXJDdWJlIiwgJDEubGluZSk7CiAgICAgICAgIFRR
dWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2
cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlckN1
YmUsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwg
cXVhbCwgQDEpOwogICAgIH0KICAgICB8IFNBTVBMRVJfRVhURVJOQUxfT0VTIHsKICAgICAgICAg
aWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5h
bCIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAidW5zdXBwb3J0ZWQg
dHlwZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KEAxLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICBGUkFHX1ZFUlRfT05M
WSgic2FtcGxlckV4dGVybmFsT0VTIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBx
dWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlckV4dGVybmFsT0VT
LCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJEUkVDVCB7CiAgICAgICAgIGlmICgh
Y29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSIpKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIs
ICJzYW1wbGVyMkRSZWN0Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgInVuc3Vw
cG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVjdCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyMkRSZWN0
IiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAg
JCQuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQk
LnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBzdHJ1
Y3Rfc3BlY2lmaWVyIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInN0cnVjdCIsICQxLmxpbmUp
OwogICAgICAgICAkJCA9ICQxOwogICAgICAgICAkJC5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAg
fQpAQCAtMTY5MSwyOSArMTYwOSwyOSBAQCB0eXBlX3NwZWNpZmllcl9ub25hcnJheQogICAgICAg
ICAvLwogICAgICAgICBUVHlwZSYgc3RydWN0dXJlID0gc3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4o
JDEuc3ltYm9sKS0+Z2V0VHlwZSgpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAg
ICQkLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC51c2VyRGVmID0g
JnN0cnVjdHVyZTsKICAgICB9CiAgICAgOwogCiBzdHJ1Y3Rfc3BlY2lmaWVyCi0gICAgOiBTVFJV
Q1QgSURFTlRJRklFUiBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFy
YXRpb24oJDIubGluZSwgKiQyLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfSBzdHJ1Y3Rf
ZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNl
cnZlZEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZykpCisgICAgOiBTVFJVQ1QgaWRlbnRp
ZmllciBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oQDIs
ICokMi5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IH0gc3RydWN0X2RlY2xhcmF0aW9uX2xp
c3QgUklHSFRfQlJBQ0UgeworICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNr
KEAyLCAqJDIuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAg
ICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCQ1LCAqJDIuc3RyaW5nKTsKKyAgICAg
ICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZSgkMi5zdHJpbmcs
ICQ1KSk7CiAgICAgICAgIFRWYXJpYWJsZSogdXNlclR5cGVEZWYgPSBuZXcgVFZhcmlhYmxlKCQy
LnN0cmluZywgKnN0cnVjdHVyZSwgdHJ1ZSk7CiAgICAgICAgIGlmICghIGNvbnRleHQtPnN5bWJv
bFRhYmxlLmluc2VydCgqdXNlclR5cGVEZWYpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigkMi5saW5lLCAicmVkZWZpbml0aW9uIiwgJDIuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInJlZGVmaW5pdGlvbiIsICQyLnN0cmlu
Zy0+Y19zdHIoKSwgInN0cnVjdCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICB9Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAk
MS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksIEAx
KTsKICAgICAgICAgJCQudXNlckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhp
dFN0cnVjdERlY2xhcmF0aW9uKCk7CiAgICAgfQotICAgIHwgU1RSVUNUIExFRlRfQlJBQ0UgeyBp
ZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigkMi5saW5lLCAqJDIuc3RyaW5nKSkg
Y29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNF
IHsKLSAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZSgkNCwgVFN0cmluZygiIikp
OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgJDEubGluZSk7
CisgICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSB7IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xh
cmF0aW9uKEAyLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNs
YXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5l
dyBUVHlwZShuZXcgVFN0cnVjdHVyZShOZXdQb29sVFN0cmluZygiIiksICQ0KSk7CisgICAgICAg
ICQkLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCBAMSk7CiAgICAgICAgICQkLnVz
ZXJEZWYgPSBzdHJ1Y3R1cmU7CiAgICAgICAgIGNvbnRleHQtPmV4aXRTdHJ1Y3REZWNsYXJhdGlv
bigpOwogICAgIH0KQEAgLTE3MjUsMTQgKzE2NDMsMTUgQEAgc3RydWN0X2RlY2xhcmF0aW9uX2xp
c3QKICAgICB9CiAgICAgfCBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBzdHJ1Y3RfZGVjbGFyYXRp
b24gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8ICQyLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9
IDA7IGogPCAkJC0+c2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgICAgICBpZiAoKCokJClbal0u
dHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKCokMilbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKCokMilbaV0ubGluZSwgImR1cGxp
Y2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3RydWN0IiwgKCokMilbaV0udHlwZS0+
Z2V0RmllbGROYW1lKCkuY19zdHIoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
JDItPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBURmllbGQqIGZpZWxkID0gKCokMilbaV07
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICQkLT5zaXplKCk7ICsraikgewor
ICAgICAgICAgICAgICAgIGlmICgoKiQkKVtqXS0+bmFtZSgpID09IGZpZWxkLT5uYW1lKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJkdXBsaWNhdGUgZmllbGQg
bmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAkJC0+cHVzaF9iYWNrKCgqJDIpW2ldKTsKKyAg
ICAgICAgICAgICQkLT5wdXNoX2JhY2soZmllbGQpOwogICAgICAgICB9CiAgICAgfQogICAgIDsK
QEAgLTE3NDEsMTQgKzE2NjAsMTQgQEAgc3RydWN0X2RlY2xhcmF0aW9uCiAgICAgOiB0eXBlX3Nw
ZWNpZmllciBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IFNFTUlDT0xPTiB7CiAgICAgICAgICQkID0g
JDI7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNoZWNrKCQxLmxpbmUsICgqJDIp
WzBdLnR5cGUtPmdldEZpZWxkTmFtZSgpLCAkMSkpIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnZv
aWRFcnJvckNoZWNrKEAxLCAoKiQyKVswXS0+bmFtZSgpLCAkMSkpIHsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8ICQkLT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgLy8KICAgICAgICAgICAg
IC8vIENhcmVmdWwgbm90IHRvIHJlcGxhY2UgYWxyZWFkeSBrbm93biBhc3BlY3RzIG9mIHR5cGUs
IGxpa2UgYXJyYXktbmVzcwogICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIFRUeXBlKiB0eXBl
ID0gKCokJClbaV0udHlwZTsKKyAgICAgICAgICAgIFRUeXBlKiB0eXBlID0gKCokJClbaV0tPnR5
cGUoKTsKICAgICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlwZSgkMS50eXBlKTsKICAgICAgICAg
ICAgIHR5cGUtPnNldE5vbWluYWxTaXplKCQxLnNpemUpOwogICAgICAgICAgICAgdHlwZS0+c2V0
TWF0cml4KCQxLm1hdHJpeCk7CkBAIC0xNzU2LDI2ICsxNjc1LDIzIEBAIHN0cnVjdF9kZWNsYXJh
dGlvbgogCiAgICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBhcnJheXMgb2YgYXJyYXlzCiAgICAg
ICAgICAgICBpZiAodHlwZS0+aXNBcnJheSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5VHlwZUVycm9yQ2hlY2soJDEubGluZSwgJDEpKQorICAgICAgICAgICAgICAgIGlm
IChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAxLCAkMSkpCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgk
MS5hcnJheSkKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRBcnJheVNpemUoJDEuYXJyYXlTaXpl
KTsKLSAgICAgICAgICAgIGlmICgkMS51c2VyRGVmKSB7CisgICAgICAgICAgICBpZiAoJDEudXNl
ckRlZikKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRTdHJ1Y3QoJDEudXNlckRlZi0+Z2V0U3Ry
dWN0KCkpOwotICAgICAgICAgICAgICAgIHR5cGUtPnNldFR5cGVOYW1lKCQxLnVzZXJEZWYtPmdl
dFR5cGVOYW1lKCkpOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoY29udGV4dC0+
c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soJDEubGluZSwgKnR5cGUpKSB7CisgICAgICAgICAgICBp
ZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soQDEsICooKiQkKVtpXSkpCiAgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQogICAgIDsKIAogc3RydWN0X2RlY2xhcmF0b3JfbGlzdAogICAgIDogc3RydWN0X2Rl
Y2xhcmF0b3IgewotICAgICAgICAkJCA9IE5ld1Bvb2xUVHlwZUxpc3QoKTsKKyAgICAgICAgJCQg
PSBOZXdQb29sVEZpZWxkTGlzdCgpOwogICAgICAgICAkJC0+cHVzaF9iYWNrKCQxKTsKICAgICB9
CiAgICAgfCBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IENPTU1BIHN0cnVjdF9kZWNsYXJhdG9yIHsK
QEAgLTE3ODQsMjYgKzE3MDAsMjQgQEAgc3RydWN0X2RlY2xhcmF0b3JfbGlzdAogICAgIDsKIAog
c3RydWN0X2RlY2xhcmF0b3IKLSAgICA6IElERU5USUZJRVIgewotICAgICAgICBpZiAoY29udGV4
dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5zdHJpbmcpKQorICAgIDogaWRlbnRp
ZmllciB7CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5z
dHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkLnR5
cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAgICAgJCQubGluZSA9
ICQxLmxpbmU7Ci0gICAgICAgICQkLnR5cGUtPnNldEZpZWxkTmFtZSgqJDEuc3RyaW5nKTsKKyAg
ICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKKyAg
ICAgICAgJCQgPSBuZXcgVEZpZWxkKHR5cGUsICQxLnN0cmluZyk7CiAgICAgfQotICAgIHwgSURF
TlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsK
LSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMS5saW5lLCAqJDEuc3Ry
aW5nKSkKKyAgICB8IGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24g
UklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2so
QDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAg
ICAgICQkLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAgICAg
JCQubGluZSA9ICQxLmxpbmU7Ci0gICAgICAgICQkLnR5cGUtPnNldEZpZWxkTmFtZSgqJDEuc3Ry
aW5nKTsKLQotICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6
ZUVycm9yQ2hlY2soJDIubGluZSwgJDMsIHNpemUpKQorICAgICAgICBUVHlwZSogdHlwZSA9IG5l
dyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAgICAgICBpbnQgc2l6ZSA9IDA7Cisg
ICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKEAzLCAkMywgc2l6ZSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkLnR5cGUtPnNldEFycmF5
U2l6ZShzaXplKTsKKyAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKHNpemUpOworCisgICAgICAg
ICQkID0gbmV3IFRGaWVsZCh0eXBlLCAkMS5zdHJpbmcpOwogICAgIH0KICAgICA7CiAKQEAgLTE4
MzUsNyArMTc0OSw3IEBAIGNvbXBvdW5kX3N0YXRlbWVudAogICAgIHwgTEVGVF9CUkFDRSB7IGNv
bnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfSBzdGF0ZW1lbnRfbGlzdCB7IGNvbnRleHQtPnN5
bWJvbFRhYmxlLnBvcCgpOyB9IFJJR0hUX0JSQUNFIHsKICAgICAgICAgaWYgKCQzICE9IDApIHsK
ICAgICAgICAgICAgICQzLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAkMy0+c2V0
RW5kTGluZSgkNS5saW5lKTsKKyAgICAgICAgICAgICQzLT5zZXRMaW5lKEAkKTsKICAgICAgICAg
fQogICAgICAgICAkJCA9ICQzOwogICAgIH0KQEAgLTE4NTksNyArMTc3Myw3IEBAIGNvbXBvdW5k
X3N0YXRlbWVudF9ub19uZXdfc2NvcGUKICAgICB8IExFRlRfQlJBQ0Ugc3RhdGVtZW50X2xpc3Qg
UklHSFRfQlJBQ0UgewogICAgICAgICBpZiAoJDIpIHsKICAgICAgICAgICAgICQyLT5zZXRPcChF
T3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAkMi0+c2V0RW5kTGluZSgkMy5saW5lKTsKKyAgICAg
ICAgICAgICQyLT5zZXRMaW5lKEAkKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQyOwogICAg
IH0KQEAgLTE4NjcsMTAgKzE3ODEsMTAgQEAgY29tcG91bmRfc3RhdGVtZW50X25vX25ld19zY29w
ZQogCiBzdGF0ZW1lbnRfbGlzdAogICAgIDogc3RhdGVtZW50IHsKLSAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMSwgMCk7CisgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoJDEsIEAkKTsKICAgICB9CiAgICAgfCBz
dGF0ZW1lbnRfbGlzdCBzdGF0ZW1lbnQgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5ncm93QWdncmVnYXRlKCQxLCAkMiwgMCk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCBAJCk7CiAgICAgfQogICAgIDsKIApAQCAt
MTg4MSw5ICsxNzk1LDkgQEAgZXhwcmVzc2lvbl9zdGF0ZW1lbnQKIAogc2VsZWN0aW9uX3N0YXRl
bWVudAogICAgIDogSUYgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIHNlbGVjdGlv
bl9yZXN0X3N0YXRlbWVudCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygk
MS5saW5lLCAkMykpCisgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjayhAMSwgJDMp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oJDMsICQ1LCAkMS5saW5lKTsKKyAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCQzLCAkNSwgQDEpOwogICAgIH0K
ICAgICA7CiAKQEAgLTE5MDcsMTQgKzE4MjEsMTQgQEAgY29uZGl0aW9uCiAgICAgICAgIGlmIChj
b250ZXh0LT5ib29sRXJyb3JDaGVjaygkMS0+Z2V0TGluZSgpLCAkMSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQotICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURF
TlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7CisgICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBp
ZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVyIHsKICAgICAgICAgVEludGVybU5vZGUqIGludGVy
bU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQy
LmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hl
Y2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYg
KGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPmJvb2xFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoJDIubGluZSwg
KiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5l
eGVjdXRlSW5pdGlhbGl6ZXIoQDIsICokMi5zdHJpbmcsICQxLCAkNCwgaW50ZXJtTm9kZSkpCiAg
ICAgICAgICAgICAkJCA9ICQ0OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKQEAgLTE5MjYsMTkgKzE4NDAsMTkgQEAgY29uZGl0aW9uCiBpdGVyYXRpb25f
c3RhdGVtZW50CiAgICAgOiBXSElMRSBMRUZUX1BBUkVOIHsgY29udGV4dC0+c3ltYm9sVGFibGUu
cHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0gY29uZGl0aW9uIFJJR0hUX1BB
UkVOIHN0YXRlbWVudF9ub19uZXdfc2NvcGUgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5wb3AoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9v
cFdoaWxlLCAwLCAkNCwgMCwgJDYsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hpbGUsIDAsICQ0LCAwLCAkNiwgQDEpOwogICAgICAg
ICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7CiAgICAgfQogICAgIHwgRE8geyArK2NvbnRl
eHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0gc3RhdGVtZW50X3dpdGhfc2NvcGUgV0hJTEUgTEVGVF9Q
QVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIFNFTUlDT0xPTiB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5ib29sRXJyb3JDaGVjaygkOC5saW5lLCAkNikpCisgICAgICAgIGlmIChjb250ZXh0LT5i
b29sRXJyb3JDaGVjayhAOCwgJDYpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BEb1doaWxl
LCAwLCAkNiwgMCwgJDMsICQ0LmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRMb29wKEVMb29wRG9XaGlsZSwgMCwgJDYsIDAsICQzLCBANCk7CiAgICAgICAgIC0t
Y29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAgfCBGT1IgTEVGVF9QQVJFTiB7
IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVs
OyB9IGZvcl9pbml0X3N0YXRlbWVudCBmb3JfcmVzdF9zdGF0ZW1lbnQgUklHSFRfUEFSRU4gc3Rh
dGVtZW50X25vX25ld19zY29wZSB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgp
OwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRm9yLCAk
NCwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigkNS5ub2RlMSksIHJlaW50ZXJwcmV0
X2Nhc3Q8VEludGVybVR5cGVkKj4oJDUubm9kZTIpLCAkNywgJDEubGluZSk7CisgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BGb3IsICQ0LCByZWludGVycHJl
dF9jYXN0PFRJbnRlcm1UeXBlZCo+KCQ1Lm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJt
VHlwZWQqPigkNS5ub2RlMiksICQ3LCBAMSk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3Rp
bmdMZXZlbDsKICAgICB9CiAgICAgOwpAQCAtMTk3NSwzOSArMTg4OSwzOSBAQCBmb3JfcmVzdF9z
dGF0ZW1lbnQKIGp1bXBfc3RhdGVtZW50CiAgICAgOiBDT05USU5VRSBTRU1JQ09MT04gewogICAg
ICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigkMS5saW5lLCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBp
biBsb29wcyIsICIiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiY29udGludWUg
c3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsIEAxKTsKICAgICB9CiAgICAg
fCBCUkVBSyBTRU1JQ09MT04gewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZl
bCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiYnJlYWsgc3Rh
dGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKEAxLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQnJlYWssICQxLmxpbmUpOworICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQnJlYWssIEAxKTsK
ICAgICB9CiAgICAgfCBSRVRVUk4gU0VNSUNPTE9OIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgJDEubGluZSk7CisgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sIEAxKTsKICAgICAgICAg
aWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZv
aWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJub24tdm9pZCBmdW5j
dGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOworICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDEsICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJl
dHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAg
fQogICAgIHwgUkVUVVJOIGV4cHJlc3Npb24gU0VNSUNPTE9OIHsKLSAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgJDIsICQxLmxpbmUpOworICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAkMiwg
QDEpOwogICAgICAgICBjb250ZXh0LT5mdW5jdGlvblJldHVybnNWYWx1ZSA9IHRydWU7CiAgICAg
ICAgIGlmIChjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBF
YnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAidm9pZCBmdW5j
dGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMSwgInZvaWQgZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIiwgInJl
dHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9IGVsc2Ug
aWYgKCooY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZSkgIT0gJDItPmdldFR5cGUoKSkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIHJldHVybiBpcyBu
b3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cihAMSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
fCBESVNDQVJEIFNFTUlDT0xPTiB7Ci0gICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICQxLmxp
bmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2ls
bCwgJDEubGluZSk7CisgICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsIEAxKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcEtpbGwsIEAxKTsKICAgICB9
CiAgICAgOwogCkBAIC0yMDE5LDcgKzE5MzMsNyBAQCB0cmFuc2xhdGlvbl91bml0CiAgICAgICAg
IGNvbnRleHQtPnRyZWVSb290ID0gJCQ7CiAgICAgfQogICAgIHwgdHJhbnNsYXRpb25fdW5pdCBl
eHRlcm5hbF9kZWNsYXJhdGlvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUoJDEsICQyLCAwKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMSwgJDIsIEAkKTsKICAgICAgICAgY29udGV4dC0+dHJlZVJv
b3QgPSAkJDsKICAgICB9CiAgICAgOwpAQCAtMjA0MSw3ICsxOTU1LDcgQEAgZnVuY3Rpb25fZGVm
aW5pdGlvbgogICAgICAgICAKICAgICAgICAgaWYgKGJ1aWx0SW4pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJidWlsdC1pbiBmdW5jdGlvbnMgY2Fubm90
IGJlIHJlZGVmaW5lZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcihAMSwgImJ1aWx0LWluIGZ1bmN0aW9ucyBjYW5ub3QgYmUgcmVkZWZp
bmVkIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTIwNTUsNyArMTk2OSw3IEBAIGZ1
bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBUaGVuIHRo
aXMgZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5LgogICAgICAgICAgICAgLy8KLSAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHki
LCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoQDEsICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgp
LmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAg
ICAgICAgIHByZXZEZWMtPnNldERlZmluZWQoKTsKQEAgLTIwNjUsMTEgKzE5NzksMTEgQEAgZnVu
Y3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAvLwogICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5h
bWUoKSA9PSAibWFpbiIpIHsKICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UGFyYW1Db3Vu
dCgpID4gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJmdW5j
dGlvbiBjYW5ub3QgdGFrZSBhbnkgcGFyYW1ldGVyKHMpIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5j
X3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIGNh
bm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkp
OwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9
IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiIiwg
ZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpLCAibWFpbiBmdW5jdGlv
biBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cihAMSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSwgIm1h
aW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMDk3LDcgKzIw
MTEsNyBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgLy8gSW5zZXJ0IHRo
ZSBwYXJhbWV0ZXJzIHdpdGggbmFtZSBpbiB0aGUgc3ltYm9sIHRhYmxlLgogICAgICAgICAgICAg
ICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0
KCp2YXJpYWJsZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGlu
ZSwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAicmVkZWZpbml0aW9uIiwgdmFyaWFibGUt
PmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgICAgICAgICBkZWxldGUgdmFyaWFibGU7CiAgICAgICAgICAgICAg
ICAgfQpAQCAtMjEwOCwxNCArMjAyMiwxNSBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAg
ICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRl
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbU5v
ZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+
Z2V0VHlwZSgpLCAkMS5saW5lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJDEubGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdl
dE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQDEpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1O
b2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUs
ICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsIEAxKSwgQDEpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdh
dGVPcGVyYXRvcihwYXJhbU5vZGVzLCBFT3BQYXJhbWV0ZXJzLCAkMS5saW5lKTsKKyAgICAgICAg
Y29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBhcmFtTm9kZXMsIEVP
cFBhcmFtZXRlcnMsIEAxKTsKICAgICAgICAgJDEuaW50ZXJtQWdncmVnYXRlID0gcGFyYW1Ob2Rl
czsKICAgICAgICAgY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA9IDA7CiAgICAgfQpAQCAtMjEy
MywxMiArMjAzOCwxMiBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAgIC8vPz8gQ2hlY2sg
dGhhdCBhbGwgcGF0aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0dXJuIHR5cGUgIT0gdm9pZCA/CiAg
ICAgICAgIC8vICAgTWF5IGJlIGJlc3QgZG9uZSBhcyBwb3N0IHByb2Nlc3MgcGhhc2Ugb24gaW50
ZXJtZWRpYXRlIGNvZGUKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUt
PmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQgJiYgISBjb250ZXh0LT5mdW5jdGlvblJldHVybnNW
YWx1ZSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIGRv
ZXMgbm90IHJldHVybiBhIHZhbHVlOiIsICIiLCAkMS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3Ry
KCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJmdW5jdGlvbiBkb2VzIG5vdCBy
ZXR1cm4gYSB2YWx1ZToiLCAiIiwgJDEuZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1BZ2dy
ZWdhdGUsICQzLCAwKTsKLSAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0
ZU9wZXJhdG9yKCQkLCBFT3BGdW5jdGlvbiwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtQWdncmVnYXRlLCAkMywgQCQp
OworICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJCQs
IEVPcEZ1bmN0aW9uLCBAMSk7CiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXROYW1l
KCQxLmZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAkJC0+Z2V0
QXNBZ2dyZWdhdGUoKS0+c2V0VHlwZSgkMS5mdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpKTsKIApA
QCAtMjEzNywxNSArMjA1MiwxNyBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAgICQkLT5n
ZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRPcHRpbWl6ZShjb250ZXh0LT5wcmFnbWEoKS5vcHRpbWl6ZSk7
CiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXREZWJ1Zyhjb250ZXh0LT5wcmFnbWEo
KS5kZWJ1Zyk7CiAKLSAgICAgICAgaWYgKCQzICYmICQzLT5nZXRBc0FnZ3JlZ2F0ZSgpKQotICAg
ICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldEVuZExpbmUoJDMtPmdldEFzQWdncmVn
YXRlKCktPmdldEVuZExpbmUoKSk7Ci0KICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9w
KCk7CiAgICAgfQogICAgIDsKIAogJSUKIAordm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxvYywg
VFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKSB7CisgICAgY29udGV4
dC0+ZXJyb3IoKnl5bGxvYywgcmVhc29uLCAiIik7CisgICAgY29udGV4dC0+cmVjb3ZlcigpOwor
fQorCiBpbnQgZ2xzbGFuZ19wYXJzZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgcmV0
dXJuIHl5cGFyc2UoY29udGV4dCk7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAJKHJldmlzaW9uIDE1MjMyMykK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4NCw4ICszODQsOCBAQCBzdGF0aWMgdm9pZCB5eV9mYXRhbF9l
cnJvciAoeXljb25zdCBjaGFyCiAJKnl5X2NwID0gJ1wwJzsgXAogCXl5Zy0+eXlfY19idWZfcCA9
IHl5X2NwOwogCi0jZGVmaW5lIFlZX05VTV9SVUxFUyAxNTUKLSNkZWZpbmUgWVlfRU5EX09GX0JV
RkZFUiAxNTYKKyNkZWZpbmUgWVlfTlVNX1JVTEVTIDE0NworI2RlZmluZSBZWV9FTkRfT0ZfQlVG
RkVSIDE0OAogLyogVGhpcyBzdHJ1Y3QgaXMgbm90IHVzZWQgaW4gdGhpcyBzY2FubmVyLAogICAg
YnV0IGl0cyBwcmVzZW5jZSBpcyBuZWNlc3NhcnkuICovCiBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwpA
QCAtMzkzLDU4ICszOTMsNTcgQEAgc3RydWN0IHl5X3RyYW5zX2luZm8KIAlmbGV4X2ludDMyX3Qg
eXlfdmVyaWZ5OwogCWZsZXhfaW50MzJfdCB5eV9ueHQ7CiAJfTsKLXN0YXRpYyB5eWNvbnN0IGZs
ZXhfaW50MTZfdCB5eV9hY2NlcHRbNDU5XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3Qg
eXlfYWNjZXB0WzQ0M10gPQogICAgIHsgICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAgICAw
LCAgICAwLCAgICAwLCAgMTU2LCAgMTU0LCAgMTUzLCAgMTUzLAotICAgICAgMTM4LCAgMTQ0LCAg
MTQ5LCAgMTMzLCAgMTM0LCAgMTQyLCAgMTQxLCAgMTMwLCAgMTM5LCAgMTM3LAotICAgICAgMTQz
LCAgMTAyLCAgMTAyLCAgMTMxLCAgMTI3LCAgMTQ1LCAgMTMyLCAgMTQ2LCAgMTUwLCAgIDk4LAot
ICAgICAgMTM1LCAgMTM2LCAgMTQ4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgMTI4LCAgMTQ3LCAgMTI5
LCAgMTQwLCAgICAzLCAgICA0LCAgICAzLAotICAgICAgMTUyLCAgMTU1LCAgMTUxLCAgMTI0LCAg
MTEwLCAgMTI5LCAgMTE4LCAgMTEzLCAgMTA4LCAgMTE2LAotICAgICAgMTA2LCAgMTE3LCAgMTA3
LCAgMTA1LCAgICAyLCAgICAxLCAgMTA5LCAgMTA0LCAgMTAwLCAgMTAxLAotICAgICAgICAwLCAg
ICAwLCAgMTAyLCAgMTM2LCAgMTI4LCAgMTM1LCAgMTI1LCAgMTIxLCAgMTIzLCAgMTIyLAotICAg
ICAgMTI2LCAgIDk4LCAgMTE0LCAgMTIwLCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LAotCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMTcsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgMjAsICAgMjIsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAxMTUsICAxMTksICAgIDUsCi0gICAg
ICAxNTEsICAgIDAsICAgIDEsICAxMDQsICAgIDAsICAgIDAsICAxMDMsICAgOTksICAxMTEsICAx
MTIsCi0gICAgICAgNTAsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgMTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgMjYsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgMjMsICAgOTgsICAgOTgsCi0KLSAgICAgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwKLSAgICAgICA5OCwgICAgMCwgIDEwNSwgICAgMCwgIDEwNCwgICA5OCwgICAyOCwgICA5OCwg
ICA5OCwgICA5NSwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICAyMSwgICA1MywgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA2OSwgICA5OCwgICA5OCwg
ICA1OCwgICA3MywgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA3MCwgICAgOSwgICAzMywgICAzNCwgICAzNSwKLSAgICAgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA1NiwgICAyOSwgICA5OCwgICA5OCwK
LSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAzNiwgICAzNywgICAzOCwgICAyNywgICA5
OCwgICA5OCwKLSAgICAgICA5OCwgICAxNSwgICA0MiwgICA0MywgICA0NCwgICA1MSwgICAxMiwg
ICA5OCwgICA5OCwgICA5OCwKLQotICAgICAgIDk4LCAgIDgyLCAgIDgzLCAgIDg0LCAgIDk4LCAg
IDMwLCAgIDc0LCAgIDI1LCAgIDg1LCAgIDg2LAotICAgICAgIDg3LCAgICA3LCAgIDc5LCAgIDgw
LCAgIDgxLCAgIDk4LCAgIDI0LCAgIDc3LCAgIDk4LCAgIDk4LAotICAgICAgIDM5LCAgIDQwLCAg
IDQxLCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4
LCAgIDk4LCAgIDcxLCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAot
ICAgICAgIDk4LCAgIDUyLCAgIDk4LCAgIDk3LCAgIDk4LCAgIDk4LCAgIDE5LCAgIDk4LCAgIDk4
LCAgIDk4LAotICAgICAgIDk4LCAgIDcyLCAgIDY2LCAgIDYxLCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDc4LAotICAgICAgIDU3LCAgIDk4LCAgIDY0LCAgIDMyLCAgIDk4LCAgIDk0
LCAgIDY1LCAgIDQ5LCAgIDc2LCAgIDU5LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDYwLCAgIDMxLAotICAgICAgIDk4LCAgIDk4LCAgIDk4
LCAgICA4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDU0LAotICAgICAgIDEzLCAg
IDk4LCAgIDE0LCAgIDk4LCAgIDk4LCAgIDE2LCAgIDY3LCAgIDk4LCAgIDk4LCAgIDk4LAotCi0g
ICAgICAgNjIsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNTUsICAgNzUs
ICAgNjMsCi0gICAgICAgMTEsICAgNjgsICAgIDYsICAgOTYsICAgMTAsICAgODgsICAgNDUsICAg
ODksICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgNDYsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgNDgsICAgOTgsCi0gICAgICAgOTIsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTAsICAgOTgsICAgOTEsICAgOTgsCi0gICAgICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgNDcsICAgOTMsICAgIDAKKyAgICAgICAgMCwgICAgMCwg
IDE0OCwgIDE0NiwgIDE0NSwgIDE0NSwgIDEzMiwgIDEzOCwgIDE0MywgIDEyNywKKyAgICAgIDEy
OCwgIDEzNiwgIDEzNSwgIDEyNCwgIDEzMywgIDEzMSwgIDEzNywgICA5NiwgICA5NiwgIDEyNSwK
KyAgICAgIDEyMSwgIDEzOSwgIDEyNiwgIDE0MCwgIDE0NCwgICA5MywgIDEyOSwgIDEzMCwgIDE0
MiwgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgIDEyMiwKKyAgICAgIDE0MSwgIDEyMywgIDEzNCwgIDExOCwg
IDEwNCwgIDEyMywgIDExMiwgIDEwNywgIDEwMiwgIDExMCwKKyAgICAgIDEwMCwgIDExMSwgIDEw
MSwgICA5OSwgIDEwMywgICA5OCwgICA5NSwgICA5NiwgICAgMCwgICAgMCwKKyAgICAgIDEzMCwg
IDEyMiwgIDEyOSwgIDExOSwgIDExNSwgIDExNywgIDExNiwgIDEyMCwgICA5MywgIDEwOCwKKyAg
ICAgIDExNCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA5MywKKyAgICAgICA5MywgICAxMiwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywKKworICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDE1
LCAgIDE3LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgMTA5LCAgMTEzLCAgICAwLCAgIDk4LCAgICAwLCAgICAwLAorICAg
ICAgIDk3LCAgIDk0LCAgMTA1LCAgMTA2LCAgIDQ1LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDEzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDIxLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDE4LCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorCisgICAg
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgIDAsICAgOTksICAgIDAsICAgOTgsICAg
OTMsCisgICAgICAgMjMsICAgOTMsICAgOTMsICAgOTAsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgMTYsICAgNDgsICAgOTMsICAgOTMsICAgOTMsICAg
NjQsICAgOTMsICAgOTMsICAgNTMsCisgICAgICAgNjgsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNjUsCisgICAgICAgIDQsICAgMjgsICAgMjksICAg
MzAsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAg
NTEsICAgMjQsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgMzEsICAgMzIs
CisgICAgICAgMzMsICAgMjIsICAgOTMsICAgOTMsICAgOTMsICAgMTAsICAgMzcsICAgMzgsICAg
MzksICAgNDYsCisgICAgICAgIDcsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNzcsICAgNzgs
ICAgNzksICAgOTMsICAgMjUsCisgICAgICAgNjksICAgMjAsICAgODAsICAgODEsICAgODIsICAg
IDIsICAgNzQsICAgNzUsICAgNzYsICAgOTMsCisKKyAgICAgICAxOSwgICA3MiwgICA5MywgICA5
MywgICAzNCwgICAzNSwgICAzNiwgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA2NiwgICA5MywgICA5MywgICA5MywKKyAgICAgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICA0NywgICA5MywgICA5MiwgICA5MywgICA5MywK
KyAgICAgICAxNCwgICA5MywgICA5MywgICA5MywgICA5MywgICA2NywgICA2MSwgICA1NiwgICA5
MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA3MywgICA1MiwgICA5MywgICA1OSwg
ICAyNywgICA5MywgICA4OSwKKyAgICAgICA2MCwgICA0NCwgICA3MSwgICA1NCwgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA1NSwgICAyNiwg
ICA5MywgICA5MywgICA5MywgICAgMywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5
MywgICA0OSwgICAgOCwgICA5MywgICAgOSwgICA5MywgICA5MywgICAxMSwKKyAgICAgICA2Miwg
ICA5MywgICA5MywgICA5MywgICA1NywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAg
ICAgICA5MywgICA1MCwgICA3MCwgICA1OCwgICAgNiwgICA2MywgICAgMSwgICA5MSwgICAgNSwg
ICA4MywKKworICAgICAgIDQwLCAgIDg0LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDQxLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDQzLCAgIDkzLCAg
IDg3LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDg1LCAgIDkzLCAgIDg2
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDQyLAorICAgICAgIDg4LCAg
ICAwCiAgICAgfSA7CiAKIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9lY1syNTZdID0K
QEAgLTQ4MSwyMTIgKzQ4MCwxOTggQEAgc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2Vj
WzI1Nl0gPQogCiBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfbWV0YVs2OF0gPQogICAg
IHsgICAwLAotICAgICAgICAxLCAgICAxLCAgICAyLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAxLAotICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAzLCAgICAz
LCAgICAzLCAgICAzLCAgICAzLCAgICAzLAotICAgICAgICAzLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAxLCAgICAzLCAgICAzLCAgICAzLAotICAgICAgICAzLCAgICA0LCAgICA0
LCAgICA0LCAgICA0LCAgICA0LCAgICAxLCAgICAxLCAgICAxLCAgICAzLAotICAgICAgICAzLCAg
ICAzLCAgICAzLCAgICAzLCAgICAzLCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LAotICAg
ICAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAg
ICA0LAotICAgICAgICA0LCAgICA0LCAgICA0LCAgICAxLCAgICAxLCAgICAxLCAgICAxCisgICAg
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsCisgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDIsICAgIDIsICAgIDIsICAgIDIs
ICAgIDIsICAgIDIsCisgICAgICAgIDIsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDIsICAgIDIsICAgIDIsCisgICAgICAgIDIsICAgIDMsICAgIDMsICAgIDMsICAgIDMs
ICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAgIDIsCisgICAgICAgIDIsICAgIDIsICAgIDIsICAg
IDIsICAgIDIsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsCisgICAgICAgIDMsICAgIDMs
ICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsCisgICAgICAg
IDMsICAgIDMsICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAgIDEKICAgICB9IDsKIAotc3RhdGlj
IHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Jhc2VbNDY0XSA9CitzdGF0aWMgeXljb25zdCBmbGV4
X2ludDE2X3QgeXlfYmFzZVs0NDVdID0KICAgICB7ICAgMCwKLSAgICAgICAgMCwgICAgMCwgICA2
NSwgICA2NiwgICA3NSwgICAgMCwgIDY4MCwgIDY4MSwgIDY4MSwgIDY4MSwKLSAgICAgIDY1NCwg
ICA0NSwgIDEzNywgIDY4MSwgIDY4MSwgIDY1MywgIDEzNCwgIDY4MSwgIDEzMywgIDEzMSwKLSAg
ICAgIDE0NiwgIDE1OSwgIDE2OCwgIDY1MSwgIDY4MSwgIDE4NiwgIDY1MSwgICA0NywgIDY4MSwg
ICAgMCwKLSAgICAgIDY4MSwgIDY4MSwgIDEyOCwgIDEwMCwgIDExMCwgIDE1MiwgIDE1NiwgIDE0
NiwgIDE2NiwgIDYyMiwKLSAgICAgIDE3MywgIDEwOSwgIDYyMSwgIDEyNiwgIDE3NywgIDYxNSwg
IDE3OCwgIDYyOCwgIDE4NywgIDE4NCwKLSAgICAgIDE0MSwgIDE5NywgIDYyNCwgIDY4MSwgIDE1
NywgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwgIDY1NiwKLSAgICAgIDY4MSwgIDY4MSwgICAgMCwg
IDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwKLSAgICAgIDY4MSwgIDY4
MSwgIDY4MSwgIDIzNiwgIDY4MSwgICAgMCwgIDY4MSwgIDI0MywgIDI3MywgIDI4MiwKLSAgICAg
IDMwNCwgICAgMCwgIDMxNCwgIDY4MSwgIDY4MSwgIDY4MSwgIDY0NCwgIDY4MSwgIDY4MSwgIDY4
MSwKLSAgICAgIDY0MywgICAgMCwgIDY4MSwgIDY4MSwgIDYxNiwgIDYwOSwgIDYxMiwgIDYyMCwg
IDYxOSwgIDYwNiwKLQotICAgICAgNjIxLCAgNjA4LCAgNjE0LCAgNjAyLCAgNTk5LCAgNjEyLCAg
NTk5LCAgNTk2LCAgNTk2LCAgNjAyLAotICAgICAgNTkwLCAgMTg5LCAgNTk1LCAgNjA1LCAgNTkx
LCAgNTk3LCAgNjAwLCAgNjAxLCAgICAwLCAgMjE2LAotICAgICAgNjAwLCAgMTg4LCAgNTg2LCAg
NTk5LCAgNTkwLCAgNTkyLCAgNTgyLCAgNTk2LCAgNTkzLCAgNTk1LAotICAgICAgNTc4LCAgNTgz
LCAgNTgwLCAgNTY5LCAgMTgzLCAgNTc3LCAgNTgyLCAgNTc4LCAgNTgwLCAgNTY5LAotICAgICAg
NTcyLCAgMjIwLCAgNTc3LCAgNTY5LCAgNTgxLCAgMTc2LCAgNTc0LCAgNjgxLCAgNjgxLCAgNjgx
LAotICAgICAgICAwLCAgMzMxLCAgICAwLCAgMzQ0LCAgMzYxLCAgMjkwLCAgMzc0LCAgICAwLCAg
NjgxLCAgNjgxLAotICAgICAgICAwLCAgNTY2LCAgNTcwLCAgNTc5LCAgNTc2LCAgNTYwLCAgNTYw
LCAgMjE1LCAgNTc1LCAgNTcyLAotICAgICAgNTcyLCAgNTcwLCAgNTY3LCAgNTU5LCAgNTY1LCAg
NTUyLCAgNTYzLCAgNTQ5LCAgNTY1LCAgICAwLAotICAgICAgNTYyLCAgNTUwLCAgNTU3LCAgNTU0
LCAgNTU4LCAgNTUxLCAgNTQwLCAgNTM5LCAgNTUyLCAgNTU1LAotICAgICAgNTUyLCAgNTQ3LCAg
NTM4LCAgMjYwLCAgNTQzLCAgNTQ2LCAgNTM3LCAgNTM0LCAgNTM4LCAgNTQ0LAotCi0gICAgICA1
MzUsICA1MjYsICA1MjksICA1MjcsICA1MzcsICA1MjMsICA1MjEsICA1MzQsICA1MjAsICA1MjIs
Ci0gICAgICA1MTksICA1MzAsICA1MjksICAyODMsICA1MjQsICA1MTksICA1MDgsICAyNjQsICA1
MjYsICA1MjgsCi0gICAgICA1MTcsICAzODEsICAzODgsICAzOTUsICA0MDIsICA1MTgsICAgIDAs
ICA1MTYsICAzMjAsICAgIDAsCi0gICAgICA1MDgsICA1MDYsICA1MTQsICA1MDMsICA1MjAsICA1
MDksICAzMzYsICAgIDAsICAgIDAsICA1MDMsCi0gICAgICA1MTMsICA1MTMsICAgIDAsICA0OTgs
ICAzNDksICAgIDAsICAgIDAsICA1MDAsICAzNjYsICA1MDEsCi0gICAgICA0OTUsICA0OTQsICA0
OTUsICA0OTQsICA0MDcsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsCi0gICAgICA0OTAs
ICA0OTEsICA0OTYsICA0ODcsICA1MDAsICA0OTUsICA0OTQsICA0ODYsICA0OTAsICA0ODIsCi0g
ICAgICA0ODUsICA0ODksICA0OTQsICA0ODAsICA0OTIsICA0ODMsICAgIDAsICAgIDAsICA0ODks
ICA0NzgsCi0gICAgICA0NzgsICA0ODMsICA0ODIsICA0NzksICAgIDAsICAgIDAsICAgIDAsICAg
IDAsICA0NjksICA0ODEsCi0gICAgICA0ODMsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAs
ICAgIDAsICA0NzEsICA0NzIsICA0NjYsCi0KLSAgICAgIDQ3NiwgICAgMCwgICAgMCwgICAgMCwg
IDQ2NywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAgICAgICAgMCwgICAgMCwgICAg
MCwgICAgMCwgICAgMCwgIDQ3NCwgICAgMCwgICAgMCwgIDQ3MiwgIDQ2OCwKLSAgICAgICAgMCwg
ICAgMCwgICAgMCwgIDQ2NCwgIDQ2MCwgIDQ2NSwgIDQ1NSwgIDQ2OCwgIDQ1NCwgIDQ2NywKLSAg
ICAgIDQ1NiwgIDQ2MywgICAgMCwgIDQ2MSwgIDQ2MywgIDQ0NywgIDQ0OSwgIDQ1NSwgIDQ2MSwg
IDQ1NiwKLSAgICAgIDQ0NCwgICAgMCwgIDQ0NiwgICAgMCwgIDQ0NSwgIDQ0OCwgICAgMCwgIDQz
NywgIDQzNiwgIDQzNiwKLSAgICAgIDQ0OSwgICAgMCwgIDQ1MSwgICAgMCwgIDQ1MCwgIDQ0OSwg
IDQzNCwgIDQ0NywgIDQzNCwgICAgMCwKLSAgICAgICAgMCwgIDQzNywgICAgMCwgICAgMCwgIDQy
OSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAgICAgIDQyNiwgIDQzNywgIDQzMCwg
IDQzNiwgIDQzMywgIDQyOCwgIDQyMCwgIDQzMiwgICAgMCwgICAgMCwKLSAgICAgIDQyNSwgIDQz
MiwgIDQyMSwgICAgMCwgIDQzMCwgIDQyNywgIDQxNywgIDQxMSwgIDQyNSwgICAgMCwKLSAgICAg
ICAgMCwgIDQyNSwgICAgMCwgIDQyMywgIDQyMiwgICAgMCwgICAgMCwgIDQyMSwgIDQwNywgIDQx
OSwKLQotICAgICAgICAwLCAgNDEwLCAgNDMxLCAgNDMwLCAgNDI5LCAgNDAwLCAgMzk2LCAgICAw
LCAgICAwLCAgICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgNDIxLCAg
MjUwLCAgNDIxLCAgNDExLCAgMzg0LAotICAgICAgMzkyLCAgMzk0LCAgMzkwLCAgMzkyLCAgMzkx
LCAgMzkwLCAgMzkzLCAgMzkwLCAgMzkxLCAgMzg4LAotICAgICAgICAwLCAgMzMyLCAgMzQzLCAg
MzE3LCAgMzI5LCAgMzEzLCAgMzE3LCAgMzA0LCAgMzIxLCAgMjkxLAotICAgICAgICAwLCAgMzAy
LCAgMjgwLCAgMjcxLCAgMjU1LCAgMjYyLCAgICAwLCAgMjU2LCAgICAwLCAgMjMyLAotICAgICAg
MjA2LCAgMjEyLCAgMTQ4LCAgMTU5LCAgMTEzLCAgICAwLCAgICAwLCAgNjgxLCAgNDQyLCAgNDQ0
LAotICAgICAgNDQ2LCAgNDUwLCAgMTYxCisgICAgICAgIDAsICAgIDAsICA1ODcsICA1ODgsICA1
ODgsICA1ODgsICA1NjEsICAgNDMsICAgNjQsICA1ODgsCisgICAgICA1ODgsICA1NjAsICAgNjEs
ICA1ODgsICAgNjAsICAgNTgsICA1NTksICAgNzcsICAgODYsICA1NTcsCisgICAgICA1ODgsICAx
MDQsICA1NTcsICAgNTUsICA1ODgsICAgIDAsICA1ODgsICA1ODgsICAgNzUsICAgMjYsCisgICAg
ICAgNTcsICAgODIsICAgODMsICAgNzMsICAgOTMsICA1MjgsICAgOTcsICAgOTUsICA1MjcsICAg
NDQsCisgICAgICAgNzEsICA1MjEsICAxMDQsICA1MzQsICAxMTAsICAxMTYsICAgMzUsICAxMTEs
ICA1MzAsICA1ODgsCisgICAgICAxMTQsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1
ODgsICA1ODgsICA1ODgsICA1ODgsCisgICAgICA1ODgsICA1ODgsICA1ODgsICAxNjUsICA1ODgs
ICAxNzIsICAyMDIsICAyMTEsICAyMzMsICAgIDAsCisgICAgICA1ODgsICA1ODgsICA1ODgsICA1
NTEsICA1ODgsICA1ODgsICA1ODgsICA1NTAsICAgIDAsICA1ODgsCisgICAgICA1ODgsICA1MjMs
ICA1MTYsICA1MTksICA1MjcsICA1MjYsICA1MTMsICA1MjgsICA1MTUsICA1MjEsCisgICAgICA1
MDksICA1MDYsICA1MTksICA1MDYsICA1MDMsICA1MDMsICA1MDksICA0OTcsICAxMDgsICA1MDIs
CisKKyAgICAgIDUxMiwgIDQ5OCwgIDUwNCwgIDUwNywgIDUwOCwgICAgMCwgIDE0NSwgIDUwNywg
IDExMywgIDQ5MywKKyAgICAgIDUwNiwgIDQ5NywgIDQ5OSwgIDQ4OSwgIDUwMywgIDUwMCwgIDUw
MiwgIDQ4NSwgIDQ5MCwgIDQ4NywKKyAgICAgIDQ3NiwgIDE1NywgIDQ4NCwgIDQ4OSwgIDQ4NSwg
IDQ4NywgIDQ3NiwgIDQ3OSwgIDExOCwgIDQ4NCwKKyAgICAgIDQ3NiwgIDQ4OCwgICA3MCwgIDQ4
MSwgIDU4OCwgIDU4OCwgIDI0NiwgIDI1MywgIDI3MCwgIDIxOSwKKyAgICAgIDI4MywgICAgMCwg
IDU4OCwgIDU4OCwgICAgMCwgIDQ3MywgIDQ3NywgIDQ4NiwgIDQ4MywgIDQ2NywKKyAgICAgIDQ2
NywgIDExOSwgIDQ4MiwgIDQ3OSwgIDQ3OSwgIDQ3NywgIDQ3NCwgIDQ2NiwgIDQ3MiwgIDQ1OSwK
KyAgICAgIDQ3MCwgIDQ1NiwgIDQ3MiwgICAgMCwgIDQ2OSwgIDQ1NywgIDQ2NCwgIDQ2MSwgIDQ2
NSwgIDQ1OCwKKyAgICAgIDQ0NywgIDQ0NiwgIDQ1OSwgIDQ2MiwgIDQ1OSwgIDQ1NCwgIDQ0NSwg
IDE4OCwgIDQ1MCwgIDQ1MywKKyAgICAgIDQ0NCwgIDQ0MSwgIDQ0NSwgIDQ1MSwgIDQ0MiwgIDQz
MywgIDQzNiwgIDQzNCwgIDQ0NCwgIDQzMCwKKyAgICAgIDQyOCwgIDQ0MSwgIDQyNywgIDQyOSwg
IDQyNiwgIDQzNywgIDQzNiwgIDEyNCwgIDQzMSwgIDQyNiwKKworICAgICAgNDE1LCAgMjU4LCAg
NDMzLCAgNDM1LCAgNDI0LCAgMjkwLCAgMjk3LCAgMzA0LCAgMzExLCAgNDI1LAorICAgICAgICAw
LCAgNDIzLCAgMjc1LCAgICAwLCAgNDE1LCAgNDEzLCAgNDIxLCAgNDEwLCAgNDI3LCAgNDE2LAor
ICAgICAgMzE2LCAgICAwLCAgICAwLCAgNDEwLCAgNDIwLCAgNDIwLCAgICAwLCAgNDA1LCAgMzE5
LCAgICAwLAorICAgICAgICAwLCAgNDA3LCAgMzIyLCAgNDA4LCAgNDAyLCAgNDAxLCAgNDAyLCAg
NDAxLCAgMzI1LCAgICAwLAorICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMzk3LCAgMzk4
LCAgNDAzLCAgMzk0LCAgNDA3LCAgNDAyLAorICAgICAgNDAxLCAgMzkzLCAgMzk3LCAgMzg5LCAg
MzkyLCAgMzk2LCAgNDAxLCAgMzg3LCAgMzk5LCAgMzkwLAorICAgICAgICAwLCAgICAwLCAgMzk2
LCAgMzg1LCAgMzg1LCAgMzkwLCAgMzg5LCAgMzg2LCAgICAwLCAgICAwLAorICAgICAgICAwLCAg
ICAwLCAgMzc2LCAgMzg4LCAgMzkwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLAorICAg
ICAgICAwLCAgMzc4LCAgMzc5LCAgMzczLCAgMzgzLCAgICAwLCAgICAwLCAgICAwLCAgMzc0LCAg
ICAwLAorICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAw
LCAgICAwLCAgMzgxLAorCisgICAgICAgIDAsICAgIDAsICAzNzksICAzNzUsICAgIDAsICAgIDAs
ICAgIDAsICAzNzEsICAzNjcsICAzNzIsCisgICAgICAzNjIsICAzNzUsICAzNjEsICAzNzQsICAz
NjMsICAzNzAsICAgIDAsICAzNjgsICAzNzAsICAzNTQsCisgICAgICAzNTYsICAzNjIsICAzNjgs
ICAzNjMsICAzNTEsICAgIDAsICAzNTMsICAgIDAsICAzNTIsICAzNTUsCisgICAgICAgIDAsICAz
NDQsICAzNDMsICAzNDMsICAzNTYsICAgIDAsICAzNTgsICAgIDAsICAzNTcsICAzNTYsCisgICAg
ICAzNDEsICAzNTQsICAzNDEsICAgIDAsICAgIDAsICAzNDQsICAgIDAsICAgIDAsICAzMzYsICAg
IDAsCisgICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzMzMsICAzNDQsICAzMzcsICAzNDMs
ICAzNDAsICAzMzUsCisgICAgICAzMjcsICAzMzksICAgIDAsICAgIDAsICAzMzIsICAzMzksICAz
MjgsICAgIDAsICAzMzcsICAzMzQsCisgICAgICAzMjQsICAzMjksICAzMzIsICAgIDAsICAgIDAs
ICAzMzIsICAgIDAsICAzMzAsICAzMjksICAgIDAsCisgICAgICAgIDAsICAzMjgsICAzMTQsICAz
MjYsICAgIDAsICAzMTcsICAzMzgsICAzMzcsICAzMzYsICAzMDcsCisgICAgICAzMDMsICAgIDAs
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzMjgsCisKKyAgICAg
IDE2NiwgIDMyNSwgIDMxNiwgIDI5OSwgIDMwOCwgIDMxMCwgIDMwNiwgIDMwOCwgIDMwNywgIDMw
NiwKKyAgICAgIDMwOSwgIDMwNiwgIDI1NiwgIDI1MywgICAgMCwgIDIyOCwgIDIzOCwgIDIyMiwg
IDIzNSwgIDIwMywKKyAgICAgIDIwNywgIDIwNCwgIDIxMiwgIDE5MSwgICAgMCwgIDIwMSwgIDE2
NSwgIDE2NywgIDE1MywgIDE2MSwKKyAgICAgICAgMCwgIDE3MCwgICAgMCwgIDE3NSwgIDE1MSwg
IDE0MSwgIDEwMCwgIDExNCwgICA1OSwgICAgMCwKKyAgICAgICAgMCwgIDU4OCwgIDM1OSwgIDEx
MwogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfZGVmWzQ2NF0gPQor
c3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2RlZls0NDVdID0KICAgICB7ICAgMCwKLSAg
ICAgIDQ1OCwgICAgMSwgIDQ1OSwgIDQ1OSwgIDQ1OCwgICAgNSwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAg
IDQ1OCwgIDQ1OCwgIDQ2MSwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MiwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ2MywgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDYxLCAgNDU4LCAgNDYyLCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDYzLCAgNDU4LCAgNDU4LAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAot
ICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0g
ICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0KLSAgICAgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAg
ICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgICAwLCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4CisgICAgICA0NDIsICAg
IDEsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAg
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDMsICA0NDIsICA0NDIs
ICA0NDIsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDQsCisgICAgICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDMsICA0NDIs
CisgICAgICA0NDIsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwK
KyAgICAgIDQ0MiwgIDQ0NCwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKwor
ICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAg
ICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorCisgICAgICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAg
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
CisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0
MywgICAgMCwgIDQ0MiwgIDQ0MgogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2
X3QgeXlfbnh0Wzc0OV0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X254dFs2NTZd
ID0KICAgICB7ICAgMCwKLSAgICAgICAgOCwgICAgOSwgICAxMCwgICAxMSwgICAxMiwgICAxMywg
ICAxNCwgICAxNSwgICAxNiwgICAxNywKLSAgICAgICAxOCwgICAxOSwgICAyMCwgICAyMSwgICAy
MiwgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywKLSAgICAgICAyMywgICAyNCwgICAyNSwg
ICAyNiwgICAyNywgICAyOCwgICAyOSwgICAzMCwgICAzMCwgICAzMCwKLSAgICAgICAzMCwgICAz
MCwgICAzMCwgICAzMCwgICAzMCwgICAzMCwgICAzMSwgICAzMiwgICAzMywgICAzNCwKLSAgICAg
ICAzNSwgICAzNiwgICAzNywgICAzOCwgICAzOSwgICA0MCwgICA0MSwgICA0MiwgICAzMCwgICA0
MywKLSAgICAgICA0NCwgICA0NSwgICA0NiwgICA0NywgICA0OCwgICA0OSwgICA1MCwgICA1MSwg
ICA1MiwgICA1MywKLSAgICAgICAzMCwgICAzMCwgICAzMCwgICA1NCwgICA1NSwgICA1NiwgICA1
NywgICA1OSwgICA1OSwgICA2NSwKLSAgICAgICA2NiwgICA5MCwgICA5MSwgICA2MCwgICA2MCwg
ICAgOCwgICA2MSwgICA2MiwgICAgOCwgICAgOCwKLSAgICAgICAgOCwgICAgOCwgICAgOCwgICAg
OCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwKLSAgICAgICAgOCwgICAgOCwg
ICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwKLQotICAgICAg
ICA4LCAgICA4LCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYz
LAotICAgICAgIDYzLCAgICA4LCAgICA4LCAgICA4LCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAg
IDYzLCAgIDYzLAotICAgICAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYz
LCAgIDYzLCAgIDYzLCAgIDYzLAotICAgICAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAg
IDYzLCAgIDYzLCAgIDYzLCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgIDY3LCAgIDcw
LCAgIDcyLCAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0LAotICAgICAgIDc0LCAgIDc0LCAg
IDkzLCAgMTE5LCAgIDc1LCAgIDk1LCAgIDk2LCAgIDczLCAgIDcxLCAgIDc2LAotICAgICAgMTIw
LCAgIDY4LCAgIDk3LCAgMTU4LCAgIDk4LCAgMTIzLCAgIDk0LCAgMTIxLCAgIDk5LCAgMTI0LAot
ICAgICAgIDc3LCAgIDc4LCAgNDU3LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDc5
LCAgIDgwLAotICAgICAgIDc4LCAgMTQ4LCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAg
IDgzLCAgIDgzLCAgIDgxLAotICAgICAgIDg1LCAgMTAwLCAgMTQyLCAgNDU2LCAgIDgyLCAgMTA3
LCAgMTQzLCAgMTA4LCAgIDgxLCAgMTAzLAotCi0gICAgICA0NTUsICAxMDEsICAgODEsICAxMDQs
ICAxMDIsICAxMTAsICAxMDksICAgODYsICAxMDUsICAgODcsCi0gICAgICAgODgsICAgODEsICAx
MTYsICAxMTEsICAxMDYsICAxMTIsICAxMjUsICAxMjgsICAxMTMsICAgODIsCi0gICAgICAxMTcs
ICAxNDksICAyMDYsICAyMTksICAxMTQsICAyMjAsICAxMzIsICAxMzgsICAxNzgsICAxMjYsCi0g
ICAgICAxMzksICAxMTgsICAxMjksICAxMzMsICAxMzQsICAxMzAsICAxNDQsICAyMDcsICAxNDAs
ICAxOTIsCi0gICAgICAxNDUsICAxNzksICA0NTQsICAxMzUsICAxMzYsICAxNDEsICAxMzcsICAx
OTMsICA0NTMsICAxNDYsCi0gICAgICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQs
ICAgNzQsICAxNTQsICAxNTQsICAxNTQsCi0gICAgICAxNTQsICAxNTQsICAxNTQsICAxNTQsICA0
NTIsICAxODYsICAxNTIsICAyMTQsICAxODcsICAxODgsCi0gICAgICAyMzIsICAyMzMsICAxODks
ICAxNTUsICAxOTAsICAyMTUsICAyNTgsICAyNTksICAyNjAsICAxNTIsCi0gICAgICAyODUsICAy
ODYsICAyODcsICA0MjIsICA0MjMsICAgNzgsICAxNTUsICAgNzksICAgNzksICAgNzksCi0gICAg
ICAgNzksICAgNzksICAgNzksICAgODAsICAgNzgsICA0NTEsICAgODAsICAgODAsICAgODAsICAg
ODAsCi0KLSAgICAgICA4MCwgICA4MCwgICA4MCwgICA4MSwgIDE1NywgIDE1NywgIDE1NywgIDE1
NywgIDE1NywgIDE1NywKLSAgICAgIDE1NywgIDQ1MCwgICA4MSwgIDE1NiwgIDQ0OSwgIDE1Niwg
ICA4MSwgIDQ0OCwgIDE1NywgIDE1NywKLSAgICAgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1
NywgICA4MSwgICA3OCwgIDI4MCwgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4Mywg
ICA4MywgICA4MywgIDI4MSwgIDI5MywgIDI5NCwgIDI5NSwgIDQ0NywKLSAgICAgIDIyMiwgIDQ0
NiwgIDIyMiwgIDQ0NSwgICA4MSwgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIyMywKLSAgICAg
IDIyMywgIDIyMywgIDMwMiwgIDMwMywgIDMwNCwgIDQ0NCwgIDQ0MywgICA4MSwgIDE1NCwgIDE1
NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDMwOSwgIDMxMCwgIDMxMSwg
IDQ0MiwgIDQ0MSwKLSAgICAgIDIyNCwgIDQ0MCwgIDIyNCwgIDQzOSwgIDE1NSwgIDIyNSwgIDIy
NSwgIDIyNSwgIDIyNSwgIDIyNSwKLSAgICAgIDIyNSwgIDIyNSwgIDMxMywgIDMxNCwgIDMxNSwg
IDQzOCwgIDQzNywgIDE1NSwgIDE1NywgIDE1NywKLSAgICAgIDE1NywgIDE1NywgIDE1NywgIDE1
NywgIDE1NywgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIyMywKLQotICAgICAgMjIzLCAgMjIz
LCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjI1LAotICAgICAg
MjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1
LAotICAgICAgMjI1LCAgMjI1LCAgMjI1LCAgMzIxLCAgMzIyLCAgMzIzLCAgNDAzLCAgNDA0LCAg
NDA1LCAgNDM2LAotICAgICAgNDM1LCAgNDM0LCAgNDMzLCAgNDMyLCAgNDMxLCAgNDMwLCAgNDI5
LCAgNDI4LCAgNDI3LCAgNDA2LAotICAgICAgNDI2LCAgNDA3LCAgIDU4LCAgIDU4LCAgIDU4LCAg
IDU4LCAgIDkyLCAgIDkyLCAgMTUxLCAgMTUxLAotICAgICAgMTUzLCAgNDI1LCAgMTUzLCAgMTUz
LCAgNDI0LCAgNDIxLCAgNDIwLCAgNDE5LCAgNDE4LCAgNDE3LAotICAgICAgNDE2LCAgNDE1LCAg
NDE0LCAgNDEzLCAgNDEyLCAgNDExLCAgNDEwLCAgNDA5LCAgNDA4LCAgNDAyLAotICAgICAgNDAx
LCAgNDAwLCAgMzk5LCAgMzk4LCAgMzk3LCAgMzk2LCAgMzk1LCAgMzk0LCAgMzkzLCAgMzkyLAot
ICAgICAgMzkxLCAgMzkwLCAgMzg5LCAgMzg4LCAgMzg3LCAgMzg2LCAgMzg1LCAgMzg0LCAgMzgz
LCAgMzgyLAotICAgICAgMzgxLCAgMzgwLCAgMzc5LCAgMzc4LCAgMzc3LCAgMzc2LCAgMzc1LCAg
Mzc0LCAgMzczLCAgMzcyLAotCi0gICAgICAzNzEsICAzNzAsICAzNjksICAzNjgsICAzNjcsICAz
NjYsICAzNjUsICAzNjQsICAzNjMsICAzNjIsCi0gICAgICAzNjEsICAzNjAsICAzNTksICAzNTgs
ICAzNTcsICAzNTYsICAzNTUsICAzNTQsICAzNTMsICAzNTIsCi0gICAgICAzNTEsICAzNTAsICAz
NDksICAzNDgsICAzNDcsICAzNDYsICAzNDUsICAzNDQsICAzNDMsICAzNDIsCi0gICAgICAzNDEs
ICAzNDAsICAzMzksICAzMzgsICAzMzcsICAzMzYsICAzMzUsICAzMzQsICAzMzMsICAzMzIsCi0g
ICAgICAzMzEsICAzMzAsICAzMjksICAzMjgsICAzMjcsICAzMjYsICAzMjUsICAzMjQsICAzMjAs
ICAzMTksCi0gICAgICAzMTgsICAzMTcsICAzMTYsICAzMTIsICAzMDgsICAzMDcsICAzMDYsICAz
MDUsICAzMDEsICAzMDAsCi0gICAgICAyOTksICAyOTgsICAyOTcsICAyOTYsICAyOTIsICAyOTEs
ICAyOTAsICAyODksICAyODgsICAyODQsCi0gICAgICAyODMsICAyODIsICAyNzksICAyNzgsICAy
NzcsICAyNzYsICAyNzUsICAyNzQsICAyNzMsICAyNzIsCi0gICAgICAyNzEsICAyNzAsICAyNjks
ICAyNjgsICAyNjcsICAyNjYsICAyNjUsICAyNjQsICAyNjMsICAyNjIsCi0gICAgICAyNjEsICAy
NTcsICAyNTYsICAyNTUsICAyNTQsICAyNTMsICAyNTIsICAyNTEsICAyNTAsICAyNDksCi0KLSAg
ICAgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDI0NCwgIDI0MywgIDI0MiwgIDI0MSwgIDI0MCwg
IDIzOSwKLSAgICAgIDIzOCwgIDIzNywgIDIzNiwgIDIzNSwgIDIzNCwgIDIzMSwgIDIzMCwgIDIy
OSwgIDIyOCwgIDIyNywKLSAgICAgIDIyNiwgIDIyMSwgIDIxOCwgIDIxNywgIDIxNiwgIDIxMywg
IDIxMiwgIDIxMSwgIDIxMCwgIDIwOSwKLSAgICAgIDIwOCwgIDIwNSwgIDIwNCwgIDIwMywgIDIw
MiwgIDIwMSwgIDIwMCwgIDE5OSwgIDE5OCwgIDE5NywKLSAgICAgIDE5NiwgIDE5NSwgIDE5NCwg
IDE5MSwgIDE4NSwgIDE4NCwgIDE4MywgIDE4MiwgIDE4MSwgIDE4MCwKLSAgICAgIDE3NywgIDE3
NiwgIDE3NSwgIDE3NCwgIDE3MywgIDE3MiwgIDE3MSwgIDE3MCwgIDE2OSwgIDE2OCwKLSAgICAg
IDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2MywgIDE2MiwgIDE2MSwgIDE2MCwgIDE1OSwgIDE1
MCwKLSAgICAgIDE0NywgIDEzMSwgIDEyNywgIDEyMiwgIDExNSwgICA4OSwgICA4NCwgICA2OSwg
ICA2NCwgIDQ1OCwKLSAgICAgICAgNywgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLQotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4CisgICAgICAgIDQsICAgIDUsICAgIDYsICAgIDcsICAgIDgsICAgIDksICAgMTAsICAg
MTEsICAgMTIsICAgMTMsCisgICAgICAgMTQsICAgMTUsICAgMTYsICAgMTcsICAgMTgsICAgMTks
ICAgMTksICAgMTksICAgMTksICAgMTksCisgICAgICAgMTksICAgMjAsICAgMjEsICAgMjIsICAg
MjMsICAgMjQsICAgMjUsICAgMjYsICAgMjYsICAgMjYsCisgICAgICAgMjYsICAgMjYsICAgMjYs
ICAgMjYsICAgMjYsICAgMjYsICAgMjcsICAgMjgsICAgMjksICAgMzAsCisgICAgICAgMzEsICAg
MzIsICAgMzMsICAgMzQsICAgMzUsICAgMzYsICAgMzcsICAgMzgsICAgMjYsICAgMzksCisgICAg
ICAgNDAsICAgNDEsICAgNDIsICAgNDMsICAgNDQsICAgNDUsICAgNDYsICAgNDcsICAgNDgsICAg
NDksCisgICAgICAgMjYsICAgMjYsICAgMjYsICAgNTAsICAgNTEsICAgNTIsICAgNTMsICAgNTUs
ICAgNTYsICAgNTcsCisgICAgICAgNjAsICAgNjIsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAg
NjQsICAgNjQsICAgNjQsICAgNzcsCisgICAgICAgNzgsICAgODIsICAgODMsICAxMTAsICAgNjMs
ICAgNjEsICAxMjksICAxMTEsICAgNTgsICAgNjYsCisgICAgICAxMzAsICAgNjcsICAgNjcsICAg
NjcsICAgNjcsICAgNjcsICAgNjcsICAgNjgsICAgNjYsICAgODAsCisKKyAgICAgICA2OCwgICA2
OCwgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2OSwgICA3MiwgICA4NCwKKyAgICAg
IDExMiwgICA4NSwgICA3MCwgICA4MSwgIDE0MiwgICA4NiwgICA2OSwgIDIwMywgIDQ0MSwgIDIw
NCwKKyAgICAgICA2OSwgICA4NywgICA5NCwgIDExMywgICA5NSwgICA3MywgICA5MCwgICA3NCwg
ICA3NSwgICA2OSwKKyAgICAgICA5MSwgICA4OCwgICA5NywgICA5NiwgICA4OSwgICA5MiwgIDEw
MywgICA3MCwgIDEzNSwgIDEwNiwKKyAgICAgICA5OCwgICA5MywgICA5OSwgIDExNSwgIDEwNCwg
IDEwMCwgIDEwNywgIDE2MiwgIDQ0MCwgIDExOSwKKyAgICAgIDEzMSwgIDEwMSwgIDQzOSwgIDEw
OCwgIDEzMiwgIDEwNSwgIDEyMCwgIDEyMSwgIDExNiwgIDEyNSwKKyAgICAgIDE2MywgIDExNywg
IDEyNiwgIDEzMywgIDE3NiwgIDE5OCwgIDEyMiwgIDEyMywgIDI2NCwgIDEyNCwKKyAgICAgIDEy
NywgIDQzOCwgIDE3NywgIDE5OSwgIDIxNiwgIDIxNywgIDI2NSwgIDEyOCwgIDEzNiwgICA2NCwK
KyAgICAgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgIDEzOCwgIDEzOCwgIDEz
OCwgIDEzOCwKKyAgICAgIDEzOCwgIDEzOCwgIDEzOCwgIDQzNywgIDE3MCwgIDEzNywgIDE5MCwg
IDE3MSwgIDE3MiwgIDQwNiwKKworICAgICAgNDA3LCAgMTczLCAgMTM5LCAgMTc0LCAgMjQyLCAg
MjQzLCAgMjQ0LCAgNDM2LCAgMTM3LCAgNDM1LAorICAgICAgNDM0LCAgMTkxLCAgNDMzLCAgNDMy
LCAgIDY2LCAgMTM5LCAgIDY3LCAgIDY3LCAgIDY3LCAgIDY3LAorICAgICAgIDY3LCAgIDY3LCAg
IDY4LCAgIDY2LCAgNDMxLCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LAorICAgICAgIDY4
LCAgIDY4LCAgIDY5LCAgMTQxLCAgMTQxLCAgMTQxLCAgMTQxLCAgMTQxLCAgMTQxLCAgMTQxLAor
ICAgICAgNDMwLCAgIDY5LCAgMTQwLCAgNDI5LCAgMTQwLCAgIDY5LCAgNDI4LCAgMTQxLCAgMTQx
LCAgMTQxLAorICAgICAgMTQxLCAgMTQxLCAgMTQxLCAgMTQxLCAgIDY5LCAgMjA2LCAgNDI3LCAg
MjA2LCAgNDI2LCAgNDI1LAorICAgICAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3
LCAgMjA3LCAgMTM4LCAgMTM4LCAgMTM4LAorICAgICAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LCAg
MjY5LCAgMjcwLCAgMjcxLCAgNDI0LCAgNDIzLCAgMjA4LAorICAgICAgNDIyLCAgMjA4LCAgNDIx
LCAgMTM5LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LAorICAgICAgMjA5LCAg
Mjc3LCAgMjc4LCAgMjc5LCAgNDIwLCAgNDE5LCAgMTM5LCAgMTQxLCAgMTQxLCAgMTQxLAorCisg
ICAgICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcs
ICAyMDcsCisgICAgICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAy
MDcsICAyMDksICAyMDksCisgICAgICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDks
ICAyMDksICAyMDksICAyMDksICAyMDksCisgICAgICAyMDksICAyMDksICAyODYsICAyODcsICAy
ODgsICAyOTMsICAyOTQsICAyOTUsICAyOTcsICAyOTgsCisgICAgICAyOTksICAzMDUsICAzMDYs
ICAzMDcsICAzODcsICAzODgsICAzODksICA0MTgsICA0MTcsICA0MTYsCisgICAgICA0MTUsICA0
MTQsICA0MTMsICA0MTIsICA0MTEsICA0MTAsICA0MDksICAzOTAsICA0MDgsICAzOTEsCisgICAg
ICAgNzksICAgNzksICA0MDUsICA0MDQsICA0MDMsICA0MDIsICA0MDEsICA0MDAsICAzOTksICAz
OTgsCisgICAgICAzOTcsICAzOTYsICAzOTUsICAzOTQsICAzOTMsICAzOTIsICAzODYsICAzODUs
ICAzODQsICAzODMsCisgICAgICAzODIsICAzODEsICAzODAsICAzNzksICAzNzgsICAzNzcsICAz
NzYsICAzNzUsICAzNzQsICAzNzMsCisgICAgICAzNzIsICAzNzEsICAzNzAsICAzNjksICAzNjgs
ICAzNjcsICAzNjYsICAzNjUsICAzNjQsICAzNjMsCisKKyAgICAgIDM2MiwgIDM2MSwgIDM2MCwg
IDM1OSwgIDM1OCwgIDM1NywgIDM1NiwgIDM1NSwgIDM1NCwgIDM1MywKKyAgICAgIDM1MiwgIDM1
MSwgIDM1MCwgIDM0OSwgIDM0OCwgIDM0NywgIDM0NiwgIDM0NSwgIDM0NCwgIDM0MywKKyAgICAg
IDM0MiwgIDM0MSwgIDM0MCwgIDMzOSwgIDMzOCwgIDMzNywgIDMzNiwgIDMzNSwgIDMzNCwgIDMz
MywKKyAgICAgIDMzMiwgIDMzMSwgIDMzMCwgIDMyOSwgIDMyOCwgIDMyNywgIDMyNiwgIDMyNSwg
IDMyNCwgIDMyMywKKyAgICAgIDMyMiwgIDMyMSwgIDMyMCwgIDMxOSwgIDMxOCwgIDMxNywgIDMx
NiwgIDMxNSwgIDMxNCwgIDMxMywKKyAgICAgIDMxMiwgIDMxMSwgIDMxMCwgIDMwOSwgIDMwOCwg
IDMwNCwgIDMwMywgIDMwMiwgIDMwMSwgIDMwMCwKKyAgICAgIDI5NiwgIDI5MiwgIDI5MSwgIDI5
MCwgIDI4OSwgIDI4NSwgIDI4NCwgIDI4MywgIDI4MiwgIDI4MSwKKyAgICAgIDI4MCwgIDI3Niwg
IDI3NSwgIDI3NCwgIDI3MywgIDI3MiwgIDI2OCwgIDI2NywgIDI2NiwgIDI2MywKKyAgICAgIDI2
MiwgIDI2MSwgIDI2MCwgIDI1OSwgIDI1OCwgIDI1NywgIDI1NiwgIDI1NSwgIDI1NCwgIDI1MywK
KyAgICAgIDI1MiwgIDI1MSwgIDI1MCwgIDI0OSwgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDI0
MSwgIDI0MCwKKworICAgICAgMjM5LCAgMjM4LCAgMjM3LCAgMjM2LCAgMjM1LCAgMjM0LCAgMjMz
LCAgMjMyLCAgMjMxLCAgMjMwLAorICAgICAgMjI5LCAgMjI4LCAgMjI3LCAgMjI2LCAgMjI1LCAg
MjI0LCAgMjIzLCAgMjIyLCAgMjIxLCAgMjIwLAorICAgICAgMjE5LCAgMjE4LCAgMjE1LCAgMjE0
LCAgMjEzLCAgMjEyLCAgMjExLCAgMjEwLCAgMjA1LCAgMjAyLAorICAgICAgMjAxLCAgMjAwLCAg
MTk3LCAgMTk2LCAgMTk1LCAgMTk0LCAgMTkzLCAgMTkyLCAgMTg5LCAgMTg4LAorICAgICAgMTg3
LCAgMTg2LCAgMTg1LCAgMTg0LCAgMTgzLCAgMTgyLCAgMTgxLCAgMTgwLCAgMTc5LCAgMTc4LAor
ICAgICAgMTc1LCAgMTY5LCAgMTY4LCAgMTY3LCAgMTY2LCAgMTY1LCAgMTY0LCAgMTYxLCAgMTYw
LCAgMTU5LAorICAgICAgMTU4LCAgMTU3LCAgMTU2LCAgMTU1LCAgMTU0LCAgMTUzLCAgMTUyLCAg
MTUxLCAgMTUwLCAgMTQ5LAorICAgICAgMTQ4LCAgMTQ3LCAgMTQ2LCAgMTQ1LCAgMTQ0LCAgMTQz
LCAgMTM0LCAgMTE4LCAgMTE0LCAgMTA5LAorICAgICAgMTAyLCAgIDc2LCAgIDcxLCAgIDY1LCAg
IDU5LCAgIDU0LCAgNDQyLCAgICAzLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorCisgICAgICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisg
ICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIKICAgICB9IDsKIAotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2No
a1s3NDldID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9jaGtbNjU2XSA9CiAgICAg
eyAgIDAsCiAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsCiAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsCkBAIC02OTQsOTUgKzY3OSw4NSBAQCBzdGF0aWMgeXlj
b25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzc0OV0KICAgICAgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwK
LSAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAg
NCwgICAxMiwKLSAgICAgICAxMiwgICAyOCwgICAyOCwgICAgMywgICAgNCwgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLQotICAgICAgICA1LCAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1
LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAot
ICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1
LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgIDEzLCAgIDE3LCAgIDE5LCAgIDIw
LCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLAotICAgICAgIDIwLCAgIDIwLCAgIDMzLCAgIDQyLCAg
IDIxLCAgIDM0LCAgIDM0LCAgIDE5LCAgIDE3LCAgIDIxLAotICAgICAgIDQyLCAgIDEzLCAgIDM1
LCAgNDYzLCAgIDM1LCAgIDQ0LCAgIDMzLCAgIDQyLCAgIDM1LCAgIDQ0LAotICAgICAgIDIxLCAg
IDIyLCAgNDU1LCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLAotICAg
ICAgIDIzLCAgIDU1LCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAg
IDIyLAotICAgICAgIDI2LCAgIDM2LCAgIDUxLCAgNDU0LCAgIDIyLCAgIDM4LCAgIDUxLCAgIDM4
LCAgIDIzLCAgIDM3LAotCi0gICAgICA0NTMsICAgMzYsICAgMjIsICAgMzcsICAgMzYsICAgMzks
ICAgMzgsICAgMjYsICAgMzcsICAgMjYsCi0gICAgICAgMjYsICAgMjMsICAgNDEsICAgMzksICAg
MzcsICAgMzksICAgNDUsICAgNDcsICAgMzksICAgMjIsCi0gICAgICAgNDEsICAgNTUsICAxMzUs
ICAxNDYsICAgMzksICAxNDYsICAgNDksICAgNTAsICAxMTIsICAgNDUsCi0gICAgICAgNTAsICAg
NDEsICAgNDcsICAgNDksICAgNDksICAgNDcsICAgNTIsICAxMzUsICAgNTAsICAxMjIsCi0gICAg
ICAgNTIsICAxMTIsICA0NTIsICAgNDksICAgNDksICAgNTAsICAgNDksICAxMjIsICA0NTEsICAg
NTIsCi0gICAgICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzgs
ICAgNzgsICAgNzgsCi0gICAgICAgNzgsICAgNzgsICAgNzgsICAgNzgsICA0NTAsICAxMjAsICAg
NzQsICAxNDIsICAxMjAsICAxMjAsCi0gICAgICAxNjgsICAxNjgsICAxMjAsICAgNzgsICAxMjAs
ICAxNDIsICAxOTQsICAxOTQsICAxOTQsICAgNzQsCi0gICAgICAyMTgsICAyMTgsICAyMTgsICA0
MTcsICA0MTcsICAgNzksICAgNzgsICAgNzksICAgNzksICAgNzksCi0gICAgICAgNzksICAgNzks
ICAgNzksICAgNzksICAgODAsICA0NDgsICAgODAsICAgODAsICAgODAsICAgODAsCi0KLSAgICAg
ICA4MCwgICA4MCwgICA4MCwgICA3OSwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1
NiwKLSAgICAgIDE1NiwgIDQ0NiwgICA4MCwgICA4MSwgIDQ0NSwgICA4MSwgICA3OSwgIDQ0NCwg
ICA4MSwgICA4MSwKLSAgICAgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MCwgICA4
MywgIDIxNCwgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4Mywg
IDIxNCwgIDIyOSwgIDIyOSwgIDIyOSwgIDQ0MywKLSAgICAgIDE1MiwgIDQ0MiwgIDE1MiwgIDQ0
MCwgICA4MywgIDE1MiwgIDE1MiwgIDE1MiwgIDE1MiwgIDE1MiwKLSAgICAgIDE1MiwgIDE1Miwg
IDIzNywgIDIzNywgIDIzNywgIDQzOSwgIDQzOCwgICA4MywgIDE1NCwgIDE1NCwKLSAgICAgIDE1
NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDI0NSwgIDI0NSwgIDI0NSwgIDQzNywgIDQzNiwK
LSAgICAgIDE1NSwgIDQzNSwgIDE1NSwgIDQzNCwgIDE1NCwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1
NSwgIDE1NSwKLSAgICAgIDE1NSwgIDE1NSwgIDI0OSwgIDI0OSwgIDI0OSwgIDQzMywgIDQzMiwg
IDE1NCwgIDE1NywgIDE1NywKLSAgICAgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDIy
MiwgIDIyMiwgIDIyMiwgIDIyMiwgIDIyMiwKLQotICAgICAgMjIyLCAgMjIyLCAgMjIzLCAgMjIz
LCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjI0LAotICAgICAgMjI0LCAgMjI0LCAg
MjI0LCAgMjI0LCAgMjI0LCAgMjI0LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1
LCAgMjI1LCAgMjI1LCAgMjU1LCAgMjU1LCAgMjU1LCAgMzg4LCAgMzg4LCAgMzg4LCAgNDMwLAot
ICAgICAgNDI5LCAgNDI4LCAgNDI3LCAgNDI2LCAgNDI1LCAgNDI0LCAgNDIzLCAgNDIyLCAgNDIx
LCAgMzg4LAotICAgICAgNDIwLCAgMzg4LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDYwLCAg
NDYwLCAgNDYxLCAgNDYxLAotICAgICAgNDYyLCAgNDE5LCAgNDYyLCAgNDYyLCAgNDE4LCAgNDE2
LCAgNDA3LCAgNDA2LCAgNDA1LCAgNDA0LAotICAgICAgNDAzLCAgNDAyLCAgNDAwLCAgMzk5LCAg
Mzk4LCAgMzk1LCAgMzk0LCAgMzkyLCAgMzg5LCAgMzg3LAotICAgICAgMzg2LCAgMzg1LCAgMzgz
LCAgMzgyLCAgMzgxLCAgMzc4LCAgMzc3LCAgMzc2LCAgMzc1LCAgMzc0LAotICAgICAgMzczLCAg
MzcyLCAgMzcxLCAgMzY1LCAgMzYyLCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LAotICAg
ICAgMzUzLCAgMzUxLCAgMzUwLCAgMzQ5LCAgMzQ4LCAgMzQ2LCAgMzQ1LCAgMzQzLCAgMzQxLCAg
MzQwLAotCi0gICAgICAzMzksICAzMzgsICAzMzcsICAzMzYsICAzMzUsICAzMzQsICAzMzIsICAz
MzEsICAzMzAsICAzMjksCi0gICAgICAzMjgsICAzMjcsICAzMjYsICAzMjUsICAzMjQsICAzMjAs
ICAzMTksICAzMTYsICAzMDUsICAzMDEsCi0gICAgICAzMDAsICAyOTksICAyOTgsICAyOTEsICAy
OTAsICAyODksICAyODQsICAyODMsICAyODIsICAyODEsCi0gICAgICAyODAsICAyNzksICAyNzYs
ICAyNzUsICAyNzQsICAyNzMsICAyNzIsICAyNzEsICAyNzAsICAyNjksCi0gICAgICAyNjgsICAy
NjcsICAyNjYsICAyNjUsICAyNjQsICAyNjMsICAyNjIsICAyNjEsICAyNTQsICAyNTMsCi0gICAg
ICAyNTIsICAyNTEsICAyNTAsICAyNDgsICAyNDQsICAyNDIsICAyNDEsICAyNDAsICAyMzYsICAy
MzUsCi0gICAgICAyMzQsICAyMzMsICAyMzIsICAyMzEsICAyMjgsICAyMjYsICAyMjEsICAyMjAs
ICAyMTksICAyMTcsCi0gICAgICAyMTYsICAyMTUsICAyMTMsICAyMTIsICAyMTEsICAyMTAsICAy
MDksICAyMDgsICAyMDcsICAyMDYsCi0gICAgICAyMDUsICAyMDQsICAyMDMsICAyMDIsICAyMDEs
ICAyMDAsICAxOTksICAxOTgsICAxOTcsICAxOTYsCi0gICAgICAxOTUsICAxOTMsICAxOTIsICAx
OTEsICAxOTAsICAxODksICAxODgsICAxODcsICAxODYsICAxODUsCi0KLSAgICAgIDE4NCwgIDE4
MywgIDE4MiwgIDE4MSwgIDE3OSwgIDE3OCwgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwKLSAgICAg
IDE3MywgIDE3MiwgIDE3MSwgIDE3MCwgIDE2OSwgIDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2
MywKLSAgICAgIDE2MiwgIDE0NywgIDE0NSwgIDE0NCwgIDE0MywgIDE0MSwgIDE0MCwgIDEzOSwg
IDEzOCwgIDEzNywKLSAgICAgIDEzNiwgIDEzNCwgIDEzMywgIDEzMiwgIDEzMSwgIDEzMCwgIDEy
OSwgIDEyOCwgIDEyNywgIDEyNiwKLSAgICAgIDEyNSwgIDEyNCwgIDEyMywgIDEyMSwgIDExOCwg
IDExNywgIDExNiwgIDExNSwgIDExNCwgIDExMywKLSAgICAgIDExMSwgIDExMCwgIDEwOSwgIDEw
OCwgIDEwNywgIDEwNiwgIDEwNSwgIDEwNCwgIDEwMywgIDEwMiwKLSAgICAgIDEwMSwgIDEwMCwg
ICA5OSwgICA5OCwgICA5NywgICA5NiwgICA5NSwgICA5MSwgICA4NywgICA2MCwKLSAgICAgICA1
MywgICA0OCwgICA0NiwgICA0MywgICA0MCwgICAyNywgICAyNCwgICAxNiwgICAxMSwgICAgNywK
LSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwKLQotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAot
ICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4CisgICAg
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDgsICAgIDgsICAg
IDksCisgICAgICAgMTMsICAgMTUsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYs
ICAgMTYsICAgMjQsCisgICAgICAgMjQsICAgMzAsICAgMzAsICAgNDAsICAgMTUsICAgMTMsICAg
NDcsICAgNDAsICAgIDksICAgMTgsCisgICAgICAgNDcsICAgMTgsICAgMTgsICAgMTgsICAgMTgs
ICAgMTgsICAgMTgsICAgMTgsICAgMTksICAgMjksCisKKyAgICAgICAxOSwgICAxOSwgICAxOSwg
ICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAxOCwgICAyMiwgICAzMSwKKyAgICAgICA0MSwgICAz
MSwgICAxOCwgICAyOSwgIDQ0NCwgICAzMSwgICAxOSwgIDEzMywgIDQzOSwgIDEzMywKKyAgICAg
ICAxOCwgICAzMiwgICAzNCwgICA0MSwgICAzNCwgICAyMiwgICAzMywgICAyMiwgICAyMiwgICAx
OSwKKyAgICAgICAzMywgICAzMiwgICAzNSwgICAzNCwgICAzMiwgICAzMywgICAzNywgICAxOCwg
ICA1MSwgICAzOCwKKyAgICAgICAzNSwgICAzMywgICAzNSwgICA0MywgICAzNywgICAzNSwgICAz
OCwgICA5OSwgIDQzOCwgICA0NSwKKyAgICAgICA0OCwgICAzNSwgIDQzNywgICAzOCwgICA0OCwg
ICAzNywgICA0NSwgICA0NSwgICA0MywgICA0NiwKKyAgICAgICA5OSwgICA0MywgICA0NiwgICA0
OCwgIDEwOSwgIDEyOSwgICA0NSwgICA0NSwgIDE5OCwgICA0NSwKKyAgICAgICA0NiwgIDQzNiwg
IDEwOSwgIDEyOSwgIDE1MiwgIDE1MiwgIDE5OCwgICA0NiwgICA1MSwgICA2NCwKKyAgICAgICA2
NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NiwgICA2NiwgICA2NiwgICA2NiwK
KyAgICAgICA2NiwgICA2NiwgICA2NiwgIDQzNSwgIDEwNywgICA2NCwgIDEyMiwgIDEwNywgIDEw
NywgIDQwMSwKKworICAgICAgNDAxLCAgMTA3LCAgIDY2LCAgMTA3LCAgMTc4LCAgMTc4LCAgMTc4
LCAgNDM0LCAgIDY0LCAgNDMyLAorICAgICAgNDMwLCAgMTIyLCAgNDI5LCAgNDI4LCAgIDY3LCAg
IDY2LCAgIDY3LCAgIDY3LCAgIDY3LCAgIDY3LAorICAgICAgIDY3LCAgIDY3LCAgIDY3LCAgIDY4
LCAgNDI3LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LAorICAgICAgIDY4LCAgIDY4LCAg
IDY3LCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLAorICAgICAgNDI2
LCAgIDY4LCAgIDY5LCAgNDI0LCAgIDY5LCAgIDY3LCAgNDIzLCAgIDY5LCAgIDY5LCAgIDY5LAor
ICAgICAgIDY5LCAgIDY5LCAgIDY5LCAgIDY5LCAgIDY4LCAgMTM3LCAgNDIyLCAgMTM3LCAgNDIx
LCAgNDIwLAorICAgICAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAg
MTM4LCAgMTM4LCAgMTM4LAorICAgICAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LCAgMjAyLCAgMjAy
LCAgMjAyLCAgNDE5LCAgNDE4LCAgMTM5LAorICAgICAgNDE3LCAgMTM5LCAgNDE2LCAgMTM4LCAg
MTM5LCAgMTM5LCAgMTM5LCAgMTM5LCAgMTM5LCAgMTM5LAorICAgICAgMTM5LCAgMjEzLCAgMjEz
LCAgMjEzLCAgNDE0LCAgNDEzLCAgMTM4LCAgMTQxLCAgMTQxLCAgMTQxLAorCisgICAgICAxNDEs
ICAxNDEsICAxNDEsICAxNDEsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsCisg
ICAgICAyMDYsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDgs
ICAyMDgsCisgICAgICAyMDgsICAyMDgsICAyMDgsICAyMDgsICAyMDgsICAyMDksICAyMDksICAy
MDksICAyMDksICAyMDksCisgICAgICAyMDksICAyMDksICAyMjEsICAyMjEsICAyMjEsICAyMjks
ICAyMjksICAyMjksICAyMzMsICAyMzMsCisgICAgICAyMzMsICAyMzksICAyMzksICAyMzksICAz
NzIsICAzNzIsICAzNzIsICA0MTIsICA0MTEsICA0MTAsCisgICAgICA0MDksICA0MDgsICA0MDcs
ICA0MDYsICA0MDUsICA0MDQsICA0MDMsICAzNzIsICA0MDIsICAzNzIsCisgICAgICA0NDMsICA0
NDMsICA0MDAsICAzOTEsICAzOTAsICAzODksICAzODgsICAzODcsICAzODYsICAzODQsCisgICAg
ICAzODMsICAzODIsICAzNzksICAzNzgsICAzNzYsICAzNzMsICAzNzEsICAzNzAsICAzNjksICAz
NjcsCisgICAgICAzNjYsICAzNjUsICAzNjIsICAzNjEsICAzNjAsICAzNTksICAzNTgsICAzNTcs
ICAzNTYsICAzNTUsCisgICAgICAzNDksICAzNDYsICAzNDMsICAzNDIsICAzNDEsICAzNDAsICAz
MzksICAzMzcsICAzMzUsICAzMzQsCisKKyAgICAgIDMzMywgIDMzMiwgIDMzMCwgIDMyOSwgIDMy
NywgIDMyNSwgIDMyNCwgIDMyMywgIDMyMiwgIDMyMSwKKyAgICAgIDMyMCwgIDMxOSwgIDMxOCwg
IDMxNiwgIDMxNSwgIDMxNCwgIDMxMywgIDMxMiwgIDMxMSwgIDMxMCwKKyAgICAgIDMwOSwgIDMw
OCwgIDMwNCwgIDMwMywgIDMwMCwgIDI4OSwgIDI4NSwgIDI4NCwgIDI4MywgIDI4MiwKKyAgICAg
IDI3NSwgIDI3NCwgIDI3MywgIDI2OCwgIDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2
MCwKKyAgICAgIDI1OSwgIDI1OCwgIDI1NywgIDI1NiwgIDI1NSwgIDI1NCwgIDI1MywgIDI1Miwg
IDI1MSwgIDI1MCwKKyAgICAgIDI0OSwgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDIzOCwgIDIz
NywgIDIzNiwgIDIzNSwgIDIzNCwKKyAgICAgIDIzMiwgIDIyOCwgIDIyNiwgIDIyNSwgIDIyNCwg
IDIyMCwgIDIxOSwgIDIxOCwgIDIxNywgIDIxNiwKKyAgICAgIDIxNSwgIDIxMiwgIDIxMCwgIDIw
NSwgIDIwNCwgIDIwMywgIDIwMSwgIDIwMCwgIDE5OSwgIDE5NywKKyAgICAgIDE5NiwgIDE5NSwg
IDE5NCwgIDE5MywgIDE5MiwgIDE5MSwgIDE5MCwgIDE4OSwgIDE4OCwgIDE4NywKKyAgICAgIDE4
NiwgIDE4NSwgIDE4NCwgIDE4MywgIDE4MiwgIDE4MSwgIDE4MCwgIDE3OSwgIDE3NywgIDE3NiwK
KworICAgICAgMTc1LCAgMTc0LCAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LCAg
MTY3LCAgMTY2LAorICAgICAgMTY1LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTU4
LCAgMTU3LCAgMTU2LCAgMTU1LAorICAgICAgMTU0LCAgMTUzLCAgMTUxLCAgMTUwLCAgMTQ5LCAg
MTQ4LCAgMTQ3LCAgMTQ2LCAgMTM0LCAgMTMyLAorICAgICAgMTMxLCAgMTMwLCAgMTI4LCAgMTI3
LCAgMTI2LCAgMTI1LCAgMTI0LCAgMTIzLCAgMTIxLCAgMTIwLAorICAgICAgMTE5LCAgMTE4LCAg
MTE3LCAgMTE2LCAgMTE1LCAgMTE0LCAgMTEzLCAgMTEyLCAgMTExLCAgMTEwLAorICAgICAgMTA4
LCAgMTA1LCAgMTA0LCAgMTAzLCAgMTAyLCAgMTAxLCAgMTAwLCAgIDk4LCAgIDk3LCAgIDk2LAor
ICAgICAgIDk1LCAgIDk0LCAgIDkzLCAgIDkyLCAgIDkxLCAgIDkwLCAgIDg5LCAgIDg4LCAgIDg3
LCAgIDg2LAorICAgICAgIDg1LCAgIDg0LCAgIDgzLCAgIDgyLCAgIDc4LCAgIDc0LCAgIDQ5LCAg
IDQ0LCAgIDQyLCAgIDM5LAorICAgICAgIDM2LCAgIDIzLCAgIDIwLCAgIDE3LCAgIDEyLCAgICA3
LCAgICAzLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorCisgICAgICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisg
ICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIKICAgICB9IDsKIAogLyogVGFibGUgb2YgYm9vbGVhbnMsIHRydWUgaWYgcnVsZSBjb3VsZCBt
YXRjaCBlb2wuICovCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfcnVsZV9jYW5fbWF0
Y2hfZW9sWzE1Nl0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X3J1bGVfY2FuX21h
dGNoX2VvbFsxNDhdID0KICAgICB7ICAgMCwKLTAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
CiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgICAgIH07CisgICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwg
MCwgICAgIH07CiAKIC8qIFRoZSBpbnRlbnQgYmVoaW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB0aGF0
IGl0J2xsIGNhdGNoCiAgKiBhbnkgdXNlcyBvZiBSRUpFQ1Qgd2hpY2ggZmxleCBtaXNzZWQuCkBA
IC04MTcsNyArNzkyLDEwIEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xz
bGEKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZ
X1VTRVJfQUNUSU9OIHl5bHZhbC0+bGV4LmxpbmUgPSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNF
Ul9BQ1RJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlsbG9jLT5m
aXJzdF9maWxlID0geXlsbG9jLT5sYXN0X2ZpbGUgPSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+
Zmlyc3RfbGluZSA9IHl5bGxvYy0+bGFzdF9saW5lID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlf
SU5QVVQoYnVmLCByZXN1bHQsIG1heF9zaXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0
KGJ1ZiwgbWF4X3NpemUsIHl5c2Nhbm5lcik7CiAKQEAgLTgyNiw4ICs4MDQsNiBAQCBzdGF0aWMg
aW50IGNoZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyCiBzdGF0aWMgaW50IHJlc2VydmVkX3dv
cmQoeXlzY2FuX3QgeXlzY2FubmVyKTsKIAogI2RlZmluZSBJTklUSUFMIDAKLSNkZWZpbmUgQ09N
TUVOVCAxCi0jZGVmaW5lIEZJRUxEUyAyCiAKICNkZWZpbmUgWVlfRVhUUkFfVFlQRSBUUGFyc2VD
b250ZXh0KgogCkBAIC04NjUsNiArODQxLDggQEAgc3RydWN0IHl5Z3V0c190CiAKICAgICBZWVNU
WVBFICogeXlsdmFsX3I7CiAKKyAgICBZWUxUWVBFICogeXlsbG9jX3I7CisKICAgICB9OyAvKiBl
bmQgc3RydWN0IHl5Z3V0c190ICovCiAKIHN0YXRpYyBpbnQgeXlfaW5pdF9nbG9iYWxzICh5eXNj
YW5fdCB5eXNjYW5uZXIgKTsKQEAgLTg3Myw2ICs4NTEsOCBAQCBzdGF0aWMgaW50IHl5X2luaXRf
Z2xvYmFscyAoeXlzY2FuX3QgeXlzCiAgICAgICogZnJvbSBiaXNvbiBvdXRwdXQgaW4gc2VjdGlv
biAxLiovCiAgICAgIyAgICBkZWZpbmUgeXlsdmFsIHl5Zy0+eXlsdmFsX3IKICAgICAKKyAgICAj
ICAgIGRlZmluZSB5eWxsb2MgeXlnLT55eWxsb2NfcgorICAgIAogaW50IHl5bGV4X2luaXQgKHl5
c2Nhbl90KiBzY2FubmVyKTsKIAogaW50IHl5bGV4X2luaXRfZXh0cmEgKFlZX0VYVFJBX1RZUEUg
dXNlcl9kZWZpbmVkLHl5c2Nhbl90KiBzY2FubmVyKTsKQEAgLTkxMCw2ICs4OTAsMTAgQEAgWVlT
VFlQRSAqIHl5Z2V0X2x2YWwgKHl5c2Nhbl90IHl5c2Nhbm5lcgogCiB2b2lkIHl5c2V0X2x2YWwg
KFlZU1RZUEUgKiB5eWx2YWxfcGFyYW0gLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisgICAgICAg
WVlMVFlQRSAqeXlnZXRfbGxvYyAoeXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAgCisgICAgICAg
IHZvaWQgeXlzZXRfbGxvYyAoWVlMVFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2Fu
bmVyICk7CisgICAgCiAvKiBNYWNyb3MgYWZ0ZXIgdGhpcyBwb2ludCBjYW4gYWxsIGJlIG92ZXJy
aWRkZW4gYnkgdXNlciBkZWZpbml0aW9ucyBpbgogICogc2VjdGlvbiAxLgogICovCkBAIC05NDAs
MTIgKzkyNCw2IEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCiAj
ZW5kaWYKIAotICAgIHN0YXRpYyB2b2lkIHl5X3B1c2hfc3RhdGUgKGludCBuZXdfc3RhdGUgLHl5
c2Nhbl90IHl5c2Nhbm5lcik7Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgeXlfcG9wX3N0YXRlICh5
eXNjYW5fdCB5eXNjYW5uZXIgKTsKLSAgICAKLSAgICBzdGF0aWMgaW50IHl5X3RvcF9zdGF0ZSAo
eXlzY2FuX3QgeXlzY2FubmVyICk7Ci0gICAgCiAvKiBBbW91bnQgb2Ygc3R1ZmYgdG8gc2x1cnAg
dXAgd2l0aCBlYWNoIHJlYWQuICovCiAjaWZuZGVmIFlZX1JFQURfQlVGX1NJWkUKICNkZWZpbmUg
WVlfUkVBRF9CVUZfU0laRSA4MTkyCkBAIC0xMDIyLDEwICsxMDAwLDEwIEBAIHN0YXRpYyBpbnQg
aW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogI2RlZmluZSBZWV9ERUNMX0lTX09VUlMgMQog
CiBleHRlcm4gaW50IHl5bGV4IFwKLSAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3Bh
cmFtICx5eXNjYW5fdCB5eXNjYW5uZXIpOworICAgICAgICAgICAgICAgKFlZU1RZUEUgKiB5eWx2
YWxfcGFyYW0sWVlMVFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyKTsKIAog
I2RlZmluZSBZWV9ERUNMIGludCB5eWxleCBcCi0gICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5
bHZhbF9wYXJhbSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAgICAgICAgICAgICAgIChZWVNUWVBF
ICogeXlsdmFsX3BhcmFtLCBZWUxUWVBFICogeXlsbG9jX3BhcmFtICwgeXlzY2FuX3QgeXlzY2Fu
bmVyKQogI2VuZGlmIC8qICFZWV9ERUNMICovCiAKIC8qIENvZGUgZXhlY3V0ZWQgYXQgdGhlIGJl
Z2lubmluZyBvZiBlYWNoIHJ1bGUsIGFmdGVyIHl5dGV4dCBhbmQgeXlsZW5nCkBAIC0xMDUyLDEy
ICsxMDMwLDEwIEBAIFlZX0RFQ0wKIAlyZWdpc3RlciBpbnQgeXlfYWN0OwogICAgIHN0cnVjdCB5
eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKIAotICAgIFRQYXJz
ZUNvbnRleHQqIGNvbnRleHQgPSB5eWV4dHJhOwotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVu
dHMgKi8KLQogICAgIHl5bHZhbCA9IHl5bHZhbF9wYXJhbTsKIAorICAgIHl5bGxvYyA9IHl5bGxv
Y19wYXJhbTsKKwogCWlmICggIXl5Zy0+eXlfaW5pdCApCiAJCXsKIAkJeXlnLT55eV9pbml0ID0g
MTsKQEAgLTExMDksMTMgKzEwODUsMTMgQEAgeXlfbWF0Y2g6CiAJCQl3aGlsZSAoIHl5X2Noa1t5
eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJ
CQkJewogCQkJCXl5X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0
ZV07Ci0JCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ1OSApCisJCQkJaWYgKCB5eV9jdXJy
ZW50X3N0YXRlID49IDQ0MyApCiAJCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5
X2NdOwogCQkJCX0KIAkJCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJy
ZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJKyt5eV9jcDsKIAkJCX0KLQkJ
d2hpbGUgKCB5eV9jdXJyZW50X3N0YXRlICE9IDQ1OCApOworCQl3aGlsZSAoIHl5X2N1cnJlbnRf
c3RhdGUgIT0gNDQyICk7CiAJCXl5X2NwID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19jcG9zOwog
CQl5eV9jdXJyZW50X3N0YXRlID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19zdGF0ZTsKIApAQCAt
MTE0OSwxOTggKzExMjUsMTk5IEBAIGRvX2FjdGlvbjoJLyogVGhpcyBsYWJlbCBpcyB1c2VkIG9u
bHkgdG8KIAogY2FzZSAxOgogWVlfUlVMRV9TRVRVUAotOworeyByZXR1cm4gSU5WQVJJQU5UOyB9
CiAJWVlfQlJFQUsKLS8qIE11bHRpLWxpbmUgY29tbWVudHMgKi8KIGNhc2UgMjoKIFlZX1JVTEVf
U0VUVVAKLXsgeXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9Cit7IHJldHVybiBI
SUdIX1BSRUNJU0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDM6CitZWV9SVUxFX1NFVFVQCit7IHJl
dHVybiBNRURJVU1fUFJFQ0lTSU9OOyB9CisJWVlfQlJFQUsKIGNhc2UgNDoKLS8qIHJ1bGUgNCBj
YW4gbWF0Y2ggZW9sICovCiBZWV9SVUxFX1NFVFVQCi07Cit7IHJldHVybiBMT1dfUFJFQ0lTSU9O
OyB9CiAJWVlfQlJFQUsKIGNhc2UgNToKIFlZX1JVTEVfU0VUVVAKLXsgeXlfcG9wX3N0YXRlKHl5
c2Nhbm5lcik7IH0KK3sgcmV0dXJuIFBSRUNJU0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDY6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybihJTlZBUklBTlQpOyB9Cit7IHJldHVybiBBVFRSSUJVVEU7
IH0KIAlZWV9CUkVBSwogY2FzZSA3OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSElHSF9QUkVD
SVNJT04pOyB9Cit7IHJldHVybiBDT05TVF9RVUFMOyB9CiAJWVlfQlJFQUsKIGNhc2UgODoKIFlZ
X1JVTEVfU0VUVVAKLXsgcmV0dXJuKE1FRElVTV9QUkVDSVNJT04pOyB9Cit7IHJldHVybiBVTklG
T1JNOyB9CiAJWVlfQlJFQUsKIGNhc2UgOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKExPV19Q
UkVDSVNJT04pOyB9Cit7IHJldHVybiBWQVJZSU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybihQUkVDSVNJT04pOyB9Cit7IHJldHVybiBCUkVBSzsgfQog
CVlZX0JSRUFLCiBjYXNlIDExOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQVRUUklCVVRFKTsg
fQoreyByZXR1cm4gQ09OVElOVUU7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjoKIFlZX1JVTEVfU0VU
VVAKLXsgcmV0dXJuKENPTlNUX1FVQUwpOyB9Cit7IHJldHVybiBETzsgfQogCVlZX0JSRUFLCiBj
YXNlIDEzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oVU5JRk9STSk7IH0KK3sgcmV0dXJuIEZP
UjsgfQogCVlZX0JSRUFLCiBjYXNlIDE0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oVkFSWUlO
Ryk7IH0KK3sgcmV0dXJuIFdISUxFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTU6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybihCUkVBSyk7IH0KK3sgcmV0dXJuIElGOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
MTY6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihDT05USU5VRSk7IH0KK3sgcmV0dXJuIEVMU0U7
IH0KIAlZWV9CUkVBSwogY2FzZSAxNzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKERPKTsgfQor
eyByZXR1cm4gSU5fUVVBTDsgfQogCVlZX0JSRUFLCiBjYXNlIDE4OgogWVlfUlVMRV9TRVRVUAot
eyByZXR1cm4oRk9SKTsgfQoreyByZXR1cm4gT1VUX1FVQUw7IH0KIAlZWV9CUkVBSwogY2FzZSAx
OToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFdISUxFKTsgfQoreyByZXR1cm4gSU5PVVRfUVVB
TDsgfQogCVlZX0JSRUFLCiBjYXNlIDIwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSUYpOyB9
Cit7IHJldHVybiBGTE9BVF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjE6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybihFTFNFKTsgfQoreyByZXR1cm4gSU5UX1RZUEU7IH0KIAlZWV9CUkVBSwog
Y2FzZSAyMjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKElOX1FVQUwpOyB9Cit7IHJldHVybiBW
T0lEX1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAyMzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJu
KE9VVF9RVUFMKTsgfQoreyByZXR1cm4gQk9PTF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjQ6
CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihJTk9VVF9RVUFMKTsgfQoreyB5eWx2YWwtPmxleC5i
ID0gdHJ1ZTsgIHJldHVybiBCT09MQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAyNToKIFlZ
X1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEZMT0FU
X1RZUEUpOyB9Cit7IHl5bHZhbC0+bGV4LmIgPSBmYWxzZTsgcmV0dXJuIEJPT0xDT05TVEFOVDsg
fQogCVlZX0JSRUFLCiBjYXNlIDI2OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRl
clR5cGUgPSB0cnVlOyByZXR1cm4oSU5UX1RZUEUpOyB9Cit7IHJldHVybiBESVNDQVJEOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMjc6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlw
ZSA9IHRydWU7IHJldHVybihWT0lEX1RZUEUpOyB9Cit7IHJldHVybiBSRVRVUk47IH0KIAlZWV9C
UkVBSwogY2FzZSAyODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
dHJ1ZTsgcmV0dXJuKEJPT0xfVFlQRSk7IH0KK3sgcmV0dXJuIE1BVFJJWDI7IH0KIAlZWV9CUkVB
SwogY2FzZSAyOToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguYiA9IHRydWU7ICByZXR1
cm4oQk9PTENPTlNUQU5UKTsgfQoreyByZXR1cm4gTUFUUklYMzsgfQogCVlZX0JSRUFLCiBjYXNl
IDMwOgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5iID0gZmFsc2U7IHJldHVybihCT09M
Q09OU1RBTlQpOyB9Cit7IHJldHVybiBNQVRSSVg0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzE6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybihESVNDQVJEKTsgfQoreyByZXR1cm4gVkVDMjsgfQogCVlZ
X0JSRUFLCiBjYXNlIDMyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUkVUVVJOKTsgfQoreyBy
ZXR1cm4gVkVDMzsgfQogCVlZX0JSRUFLCiBjYXNlIDMzOgogWVlfUlVMRV9TRVRVUAoteyBjb250
ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMik7IH0KK3sgcmV0dXJuIFZF
QzQ7IH0KIAlZWV9CUkVBSwogY2FzZSAzNDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4
QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJWDMpOyB9Cit7IHJldHVybiBJVkVDMjsgfQog
CVlZX0JSRUFLCiBjYXNlIDM1OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5
cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYNCk7IH0KK3sgcmV0dXJuIElWRUMzOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMzY6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRy
dWU7IHJldHVybiAoVkVDMik7IH0KK3sgcmV0dXJuIElWRUM0OyB9CiAJWVlfQlJFQUsKIGNhc2Ug
Mzc6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVy
biAoVkVDMyk7IH0KK3sgcmV0dXJuIEJWRUMyOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzg6CiBZWV9S
VUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7
IH0KK3sgcmV0dXJuIEJWRUMzOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzk6CiBZWV9SVUxFX1NFVFVQ
Ci17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzIpOyB9Cit7IHJl
dHVybiBCVkVDNDsgfQogCVlZX0JSRUFLCiBjYXNlIDQwOgogWVlfUlVMRV9TRVRVUAoteyBjb250
ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKElWRUMzKTsgfQoreyByZXR1cm4gU0FN
UExFUjJEOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzQpOyB9Cit7IHJldHVybiBTQU1QTEVS
Q1VCRTsgfQogCVlZX0JSRUFLCiBjYXNlIDQyOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5s
ZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKEJWRUMyKTsgfQoreyByZXR1cm4gU0FNUExFUl9F
WFRFUk5BTF9PRVM7IH0KIAlZWV9CUkVBSwogY2FzZSA0MzoKIFlZX1JVTEVfU0VUVVAKLXsgY29u
dGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDMyk7IH0KK3sgcmV0dXJuIFNB
TVBMRVIyRFJFQ1Q7IH0KIAlZWV9CUkVBSwogY2FzZSA0NDoKIFlZX1JVTEVfU0VUVVAKLXsgY29u
dGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KK3sgcmV0dXJuIFNU
UlVDVDsgfQogCVlZX0JSRUFLCiBjYXNlIDQ1OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5s
ZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Cit7IHJldHVybiByZXNlcnZl
ZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NjoKIFlZX1JVTEVfU0VUVVAK
LXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJDVUJFOyB9Cit7
IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NzoK
IFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNB
TVBMRVJfRVhURVJOQUxfT0VTOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7
IH0KIAlZWV9CUkVBSwogY2FzZSA0ODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0
ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KK3sgcmV0dXJuIHJlc2VydmVk
X3dvcmQoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDQ5OgogWVlfUlVMRV9TRVRVUAot
eyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oU1RSVUNUKTsgfQoreyByZXR1
cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNTA6CiBZWV9S
VUxFX1NFVFVQCkBAIC0xNTE2LDI2NiArMTQ5MywyMjggQEAgWVlfUlVMRV9TRVRVUAogCVlZX0JS
RUFLCiBjYXNlIDkzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNj
YW5uZXIpOyB9Cit7CisgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRl
eHQpOyAKKyAgIHJldHVybiBjaGVja190eXBlKHl5c2Nhbm5lcik7Cit9CiAJWVlfQlJFQUsKIGNh
c2UgOTQ6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7
IH0KK3sgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwg
MCkpOyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5NToKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreyB5eWx2YWwtPmxl
eC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRD
T05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDk2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4g
cmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CiAJWVlf
QlJFQUsKIGNhc2UgOTc6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5
c2Nhbm5lcik7IH0KK3sgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2Rv
dCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5ODoK
IFlZX1JVTEVfU0VUVVAKLXsKLSAgIHl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5n
KHl5dGV4dCk7IAotICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKLX0KK3sgeXlsdmFs
LT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZM
T0FUQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5OToKIFlZX1JVTEVfU0VUVVAKLXsgeXls
dmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1
cm4oSU5UQ09OU1RBTlQpOyB9Cit7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
YXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNh
c2UgMTAwOgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50
PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sgcmV0dXJu
IEFERF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDE6CiBZWV9SVUxFX1NFVFVQCi17IGNv
bnRleHQtPmVycm9yKHl5bGluZW5vLCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsg
Y29udGV4dC0+cmVjb3ZlcigpOyByZXR1cm4gMDt9Cit7IHJldHVybiBTVUJfQVNTSUdOOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMTAyOgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3Rh
dGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7
IH0KK3sgcmV0dXJuIE1VTF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDM6CiBZWV9SVUxF
X1NFVFVQCi17IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0
ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQoreyByZXR1cm4gRElWX0FTU0lHTjsgfQog
CVlZX0JSRUFLCiBjYXNlIDEwNDoKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguZiA9IHN0
YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQp
OyB9Cit7IHJldHVybiBNT0RfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA1OgogWVlfUlVM
RV9TRVRVUAoteyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5
dGV4dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIExFRlRfQVNTSUdOOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTA2OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEFERF9BU1NJ
R04pOyB9Cit7IHJldHVybiBSSUdIVF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDc6CiBZ
WV9SVUxFX1NFVFVQCi17ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KK3sgcmV0dXJuIEFORF9BU1NJ
R047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDg6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTVVM
X0FTU0lHTik7IH0KK3sgcmV0dXJuIFhPUl9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDk6
CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oRElWX0FTU0lHTik7IH0KK3sgcmV0dXJuIE9SX0FT
U0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDExMDoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihN
T0RfQVNTSUdOKTsgfQoreyByZXR1cm4gSU5DX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTExOgog
WVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKExFRlRfQVNTSUdOKTsgfQoreyByZXR1cm4gREVDX09Q
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTEyOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFJJR0hU
X0FTU0lHTik7IH0KK3sgcmV0dXJuIEFORF9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExMzoKIFlZ
X1JVTEVfU0VUVVAKLXsgIHJldHVybihBTkRfQVNTSUdOKTsgfQoreyByZXR1cm4gT1JfT1A7IH0K
IAlZWV9CUkVBSwogY2FzZSAxMTQ6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oWE9SX0FTU0lH
Tik7IH0KK3sgcmV0dXJuIFhPUl9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNToKIFlZX1JVTEVf
U0VUVVAKLXsgIHJldHVybihPUl9BU1NJR04pOyB9Cit7IHJldHVybiBMRV9PUDsgfQogCVlZX0JS
RUFLCiBjYXNlIDExNjoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihJTkNfT1ApOyB9Cit7IHJl
dHVybiBHRV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJl
dHVybihERUNfT1ApOyB9Cit7IHJldHVybiBFUV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExODoK
IFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihBTkRfT1ApOyB9Cit7IHJldHVybiBORV9PUDsgfQog
CVlZX0JSRUFLCiBjYXNlIDExOToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihPUl9PUCk7IH0K
K3sgcmV0dXJuIExFRlRfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjA6CiBZWV9SVUxFX1NFVFVQ
Ci17ICByZXR1cm4oWE9SX09QKTsgfQoreyByZXR1cm4gUklHSFRfT1A7IH0KIAlZWV9CUkVBSwog
Y2FzZSAxMjE6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTEVfT1ApOyB9Cit7IHJldHVybiBT
RU1JQ09MT047IH0KIAlZWV9CUkVBSwogY2FzZSAxMjI6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1
cm4oR0VfT1ApOyB9Cit7IHJldHVybiBMRUZUX0JSQUNFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIz
OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEVRX09QKTsgfQoreyByZXR1cm4gUklHSFRfQlJB
Q0U7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjQ6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTkVf
T1ApOyB9Cit7IHJldHVybiBDT01NQTsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNToKIFlZX1JVTEVf
U0VUVVAKLXsgIHJldHVybihMRUZUX09QKTsgfQoreyByZXR1cm4gQ09MT047IH0KIAlZWV9CUkVB
SwogY2FzZSAxMjY6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oUklHSFRfT1ApOyB9Cit7IHJl
dHVybiBFUVVBTDsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNzoKIFlZX1JVTEVfU0VUVVAKLXsgY29u
dGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihTRU1JQ09MT04pOyB9Cit7IHJldHVy
biBMRUZUX1BBUkVOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI4OgogWVlfUlVMRV9TRVRVUAoteyBj
b250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJuKExFRlRfQlJBQ0UpOyB9Cit7IHJl
dHVybiBSSUdIVF9QQVJFTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEyOToKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuKFJJR0hUX0JSQUNFKTsgfQoreyByZXR1cm4gTEVGVF9CUkFDS0VUOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMTMwOgogWVlfUlVMRV9TRVRVUAoteyBpZiAoY29udGV4dC0+aW5UeXBlUGFy
ZW4pIGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Cit7IHJl
dHVybiBSSUdIVF9CUkFDS0VUOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMxOgogWVlfUlVMRV9TRVRV
UAoteyByZXR1cm4oQ09MT04pOyB9Cit7IHJldHVybiBET1Q7IH0KIAlZWV9CUkVBSwogY2FzZSAx
MzI6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1
cm4oRVFVQUwpOyB9Cit7IHJldHVybiBCQU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMzOgogWVlf
UlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgY29udGV4dC0+aW5U
eXBlUGFyZW4gPSB0cnVlOyByZXR1cm4oTEVGVF9QQVJFTik7IH0KK3sgcmV0dXJuIERBU0g7IH0K
IAlZWV9CUkVBSwogY2FzZSAxMzQ6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmluVHlwZVBh
cmVuID0gZmFsc2U7IHJldHVybihSSUdIVF9QQVJFTik7IH0KK3sgcmV0dXJuIFRJTERFOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMTM1OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oTEVGVF9CUkFDS0VU
KTsgfQoreyByZXR1cm4gUExVUzsgfQogCVlZX0JSRUFLCiBjYXNlIDEzNjoKIFlZX1JVTEVfU0VU
VVAKLXsgcmV0dXJuKFJJR0hUX0JSQUNLRVQpOyB9Cit7IHJldHVybiBTVEFSOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMTM3OgogWVlfUlVMRV9TRVRVUAoteyBCRUdJTihGSUVMRFMpOyAgcmV0dXJuKERP
VCk7IH0KK3sgcmV0dXJuIFNMQVNIOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM4OgogWVlfUlVMRV9T
RVRVUAoteyByZXR1cm4oQkFORyk7IH0KK3sgcmV0dXJuIFBFUkNFTlQ7IH0KIAlZWV9CUkVBSwog
Y2FzZSAxMzk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihEQVNIKTsgfQoreyByZXR1cm4gTEVG
VF9BTkdMRTsgfQogCVlZX0JSRUFLCiBjYXNlIDE0MDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJu
KFRJTERFKTsgfQoreyByZXR1cm4gUklHSFRfQU5HTEU7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDE6
CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihQTFVTKTsgfQoreyByZXR1cm4gVkVSVElDQUxfQkFS
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oU1RBUik7
IH0KK3sgcmV0dXJuIENBUkVUOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQzOgogWVlfUlVMRV9TRVRV
UAoteyByZXR1cm4oU0xBU0gpOyB9Cit7IHJldHVybiBBTVBFUlNBTkQ7IH0KIAlZWV9CUkVBSwog
Y2FzZSAxNDQ6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihQRVJDRU5UKTsgfQoreyByZXR1cm4g
UVVFU1RJT047IH0KIAlZWV9CUkVBSwogY2FzZSAxNDU6CisvKiBydWxlIDE0NSBjYW4gbWF0Y2gg
ZW9sICovCiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihMRUZUX0FOR0xFKTsgfQotCVlZX0JSRUFL
Ci1jYXNlIDE0NjoKLVlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJJR0hUX0FOR0xFKTsgfQotCVlZ
X0JSRUFLCi1jYXNlIDE0NzoKLVlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFZFUlRJQ0FMX0JBUik7
IH0KLQlZWV9CUkVBSwotY2FzZSAxNDg6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihDQVJFVCk7
IH0KLQlZWV9CUkVBSwotY2FzZSAxNDk6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihBTVBFUlNB
TkQpOyB9Ci0JWVlfQlJFQUsKLWNhc2UgMTUwOgotWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUVVF
U1RJT04pOyB9Ci0JWVlfQlJFQUsKLWNhc2UgMTUxOgotWVlfUlVMRV9TRVRVUAoteyAKLSAgICBC
RUdJTihJTklUSUFMKTsKLSAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5
eXRleHQpOyAKLSAgICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwotfQotCVlZX0JSRUFLCi1jYXNl
IDE1MjoKLVlZX1JVTEVfU0VUVVAKLXt9Ci0JWVlfQlJFQUsKLWNhc2UgMTUzOgotLyogcnVsZSAx
NTMgY2FuIG1hdGNoIGVvbCAqLwotWVlfUlVMRV9TRVRVUAoteyAgfQoreyB9CiAJWVlfQlJFQUsK
IGNhc2UgWVlfU1RBVEVfRU9GKElOSVRJQUwpOgotY2FzZSBZWV9TVEFURV9FT0YoQ09NTUVOVCk6
Ci1jYXNlIFlZX1NUQVRFX0VPRihGSUVMRFMpOgoteyBjb250ZXh0LT5BZnRlckVPRiA9IHRydWU7
IHl5dGVybWluYXRlKCk7IH0KK3sgeXl0ZXJtaW5hdGUoKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE1
NDoKK2Nhc2UgMTQ2OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5v
LCAiVW5rbm93biBjaGFyIiwgeXl0ZXh0LCAiIik7IHJldHVybiAwOyB9Cit7IGFzc2VydChmYWxz
ZSk7IHJldHVybiAwOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTU1OgorY2FzZSAxNDc6CiBZWV9SVUxF
X1NFVFVQCiBFQ0hPOwogCVlZX0JSRUFLCkBAIC0yMDcxLDcgKzIwMTAsNyBAQCBzdGF0aWMgaW50
IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QKIAkJd2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5
eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9IHl5X2N1cnJlbnRfc3RhdGUgKQogCQkJewogCQkJ
eXlfY3VycmVudF9zdGF0ZSA9IChpbnQpIHl5X2RlZlt5eV9jdXJyZW50X3N0YXRlXTsKLQkJCWlm
ICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NTkgKQorCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49
IDQ0MyApCiAJCQkJeXlfYyA9IHl5X21ldGFbKHVuc2lnbmVkIGludCkgeXlfY107CiAJCQl9CiAJ
CXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1
bnNpZ25lZCBpbnQpIHl5X2NdOwpAQCAtMjEwMCwxMSArMjAzOSwxMSBAQCBzdGF0aWMgaW50IHl5
X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QKIAl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1
cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCXsKIAkJeXlfY3Vy
cmVudF9zdGF0ZSA9IChpbnQpIHl5X2RlZlt5eV9jdXJyZW50X3N0YXRlXTsKLQkJaWYgKCB5eV9j
dXJyZW50X3N0YXRlID49IDQ1OSApCisJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NDMgKQog
CQkJeXlfYyA9IHl5X21ldGFbKHVuc2lnbmVkIGludCkgeXlfY107CiAJCX0KIAl5eV9jdXJyZW50
X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50
KSB5eV9jXTsKLQl5eV9pc19qYW0gPSAoeXlfY3VycmVudF9zdGF0ZSA9PSA0NTgpOworCXl5X2lz
X2phbSA9ICh5eV9jdXJyZW50X3N0YXRlID09IDQ0Mik7CiAKIAlyZXR1cm4geXlfaXNfamFtID8g
MCA6IHl5X2N1cnJlbnRfc3RhdGU7CiB9CkBAIC0yNTQ4LDQ2ICsyNDg3LDYgQEAgWVlfQlVGRkVS
X1NUQVRFIHl5X3NjYW5fYnl0ZXMgICh5eWNvbnN0CiAJcmV0dXJuIGI7CiB9CiAKLSAgICBzdGF0
aWMgdm9pZCB5eV9wdXNoX3N0YXRlIChpbnQgIG5ld19zdGF0ZSAsIHl5c2Nhbl90IHl5c2Nhbm5l
cikKLXsKLSAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNj
YW5uZXI7Ci0JaWYgKCB5eWctPnl5X3N0YXJ0X3N0YWNrX3B0ciA+PSB5eWctPnl5X3N0YXJ0X3N0
YWNrX2RlcHRoICkKLQkJewotCQl5eV9zaXplX3QgbmV3X3NpemU7Ci0KLQkJeXlnLT55eV9zdGFy
dF9zdGFja19kZXB0aCArPSBZWV9TVEFSVF9TVEFDS19JTkNSOwotCQluZXdfc2l6ZSA9IHl5Zy0+
eXlfc3RhcnRfc3RhY2tfZGVwdGggKiBzaXplb2YoIGludCApOwotCi0JCWlmICggISB5eWctPnl5
X3N0YXJ0X3N0YWNrICkKLQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sgPSAoaW50ICopIHl5YWxsb2Mo
bmV3X3NpemUgLHl5c2Nhbm5lciApOwotCi0JCWVsc2UKLQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sg
PSAoaW50ICopIHl5cmVhbGxvYygodm9pZCAqKSB5eWctPnl5X3N0YXJ0X3N0YWNrLG5ld19zaXpl
ICx5eXNjYW5uZXIgKTsKLQotCQlpZiAoICEgeXlnLT55eV9zdGFydF9zdGFjayApCi0JCQlZWV9G
QVRBTF9FUlJPUiggIm91dCBvZiBtZW1vcnkgZXhwYW5kaW5nIHN0YXJ0LWNvbmRpdGlvbiBzdGFj
ayIgKTsKLQkJfQotCi0JeXlnLT55eV9zdGFydF9zdGFja1t5eWctPnl5X3N0YXJ0X3N0YWNrX3B0
cisrXSA9IFlZX1NUQVJUOwotCi0JQkVHSU4obmV3X3N0YXRlKTsKLX0KLQotICAgIHN0YXRpYyB2
b2lkIHl5X3BvcF9zdGF0ZSAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBzdHJ1Y3QgeXln
dXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0JaWYgKCAtLXl5Zy0+
eXlfc3RhcnRfc3RhY2tfcHRyIDwgMCApCi0JCVlZX0ZBVEFMX0VSUk9SKCAic3RhcnQtY29uZGl0
aW9uIHN0YWNrIHVuZGVyZmxvdyIgKTsKLQotCUJFR0lOKHl5Zy0+eXlfc3RhcnRfc3RhY2tbeXln
LT55eV9zdGFydF9zdGFja19wdHJdKTsKLX0KLQotICAgIHN0YXRpYyBpbnQgeXlfdG9wX3N0YXRl
ICAoeXlzY2FuX3QgeXlzY2FubmVyKQotewotICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChz
dHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKLQlyZXR1cm4geXlnLT55eV9zdGFydF9zdGFja1t5
eWctPnl5X3N0YXJ0X3N0YWNrX3B0ciAtIDFdOwotfQotCiAjaWZuZGVmIFlZX0VYSVRfRkFJTFVS
RQogI2RlZmluZSBZWV9FWElUX0ZBSUxVUkUgMgogI2VuZGlmCkBAIC0yNzczLDYgKzI2NzIsMTgg
QEAgdm9pZCB5eXNldF9sdmFsIChZWVNUWVBFICogIHl5bHZhbF9wYXJhbQogICAgIHl5bHZhbCA9
IHl5bHZhbF9wYXJhbTsKIH0KIAorWVlMVFlQRSAqeXlnZXRfbGxvYyAgKHl5c2Nhbl90IHl5c2Nh
bm5lcikKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5
eXNjYW5uZXI7CisgICAgcmV0dXJuIHl5bGxvYzsKK30KKyAgICAKK3ZvaWQgeXlzZXRfbGxvYyAo
WVlMVFlQRSAqICB5eWxsb2NfcGFyYW0gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3Ry
dWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAgIHl5
bGxvYyA9IHl5bGxvY19wYXJhbTsKK30KKyAgICAKIC8qIFVzZXItdmlzaWJsZSBBUEkgKi8KIAog
LyogeXlsZXhfaW5pdCBpcyBzcGVjaWFsIGJlY2F1c2UgaXQgY3JlYXRlcyB0aGUgc2Nhbm5lciBp
dHNlbGYsIHNvIGl0IGlzCkBAIC0yOTU0LDcgKzI4NjUsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lu
cHV0KGNoYXIqIGJ1ZiwgeXlfc2l6CiAgICAgeXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0g
cHA6OlRva2VuOjpMQVNUID8gMCA6IHRva2VuLnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBt
YXhfc2l6ZSkKICAgICAgICAgbWVtY3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwot
ICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9r
ZW4ubG9jYXRpb24ubGluZSkseXlzY2FubmVyKTsKKyAgICB5eXNldF9jb2x1bW4odG9rZW4ubG9j
YXRpb24uZmlsZSx5eXNjYW5uZXIpOworICAgIHl5c2V0X2xpbmVubyh0b2tlbi5sb2NhdGlvbi5s
aW5lLHl5c2Nhbm5lcik7CiAKICAgICBpZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9G
QVRBTF9FUlJPUigiSW5wdXQgYnVmZmVyIG92ZXJmbG93Iik7CkBAIC0yOTY4LDEyICsyODgwLDEw
IEBAIGludCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIAogICAgIGludCB0
b2tlbiA9IElERU5USUZJRVI7CiAgICAgVFN5bWJvbCogc3ltYm9sID0geXlleHRyYS0+c3ltYm9s
VGFibGUuZmluZCh5eXRleHQpOwotICAgIGlmICh5eWV4dHJhLT5sZXhBZnRlclR5cGUgPT0gZmFs
c2UgJiYgc3ltYm9sICYmIHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7CisgICAgaWYgKHN5bWJvbCAm
JiBzeW1ib2wtPmlzVmFyaWFibGUoKSkgewogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0g
c3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oc3ltYm9sKTsKLSAgICAgICAgaWYgKHZhcmlhYmxlLT5p
c1VzZXJUeXBlKCkpIHsKLSAgICAgICAgICAgIHl5ZXh0cmEtPmxleEFmdGVyVHlwZSA9IHRydWU7
CisgICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKQogICAgICAgICAgICAgdG9rZW4g
PSBUWVBFX05BTUU7Ci0gICAgICAgIH0KICAgICB9CiAgICAgeXlsdmFsLT5sZXguc3ltYm9sID0g
c3ltYm9sOwogICAgIHJldHVybiB0b2tlbjsKQEAgLTI5ODIsMjIgKzI4OTIsMTEgQEAgaW50IGNo
ZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5f
dCB5eXNjYW5uZXIpIHsKICAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRz
X3QqKSB5eXNjYW5uZXI7CiAKLSAgICB5eWV4dHJhLT5lcnJvcih5eWxpbmVubywgIklsbGVnYWwg
dXNlIG9mIHJlc2VydmVkIHdvcmQiLCB5eXRleHQsICIiKTsKKyAgICB5eWV4dHJhLT5lcnJvcigq
eXlsbG9jLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwgIiIpOwogICAg
IHl5ZXh0cmEtPnJlY292ZXIoKTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCB5eWVycm9yKFRQ
YXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbikgewotICAgIHN0cnVjdCB5
eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPnNjYW5uZXI7Ci0KLSAg
ICBpZiAoY29udGV4dC0+QWZ0ZXJFT0YpIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXlsaW5l
bm8sIHJlYXNvbiwgInVuZXhwZWN0ZWQgRU9GIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29u
dGV4dC0+ZXJyb3IoeXlsaW5lbm8sIHJlYXNvbiwgeXl0ZXh0KTsKLSAgICB9Ci0gICAgY29udGV4
dC0+cmVjb3ZlcigpOwotfQotCiBpbnQgZ2xzbGFuZ19pbml0aWFsaXplKFRQYXJzZUNvbnRleHQq
IGNvbnRleHQpIHsKICAgICB5eXNjYW5fdCBzY2FubmVyID0gTlVMTDsKICAgICBpZiAoeXlsZXhf
aW5pdF9leHRyYShjb250ZXh0LCZzY2FubmVyKSkKQEAgLTMwMjAsOCArMjkxOSw4IEBAIGludCBn
bHNsYW5nX2ZpbmFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnQKIGludCBnbHNsYW5nX3NjYW4oc2l6
ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtd
LAogICAgICAgICAgICAgICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlyZXN0
YXJ0KE5VTEwsY29udGV4dC0+c2Nhbm5lcik7Ci0gICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJj
ZUxvYygwLCAxKSxjb250ZXh0LT5zY2FubmVyKTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZh
bHNlOworICAgIHl5c2V0X2NvbHVtbigwLGNvbnRleHQtPnNjYW5uZXIpOworICAgIHl5c2V0X2xp
bmVubygxLGNvbnRleHQtPnNjYW5uZXIpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBwcmVwcm9jZXNz
b3IuCiAgICAgaWYgKCFjb250ZXh0LT5wcmVwcm9jZXNzb3IuaW5pdChjb3VudCwgc3RyaW5nLCBs
ZW5ndGgpKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xh
bmdfdGFiLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvZ2xzbGFuZ190YWIuY3BwCShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDI0ICsxLDIxIEBACi0vKiBBIEJpc29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24gMi4z
LiAgKi8KKy8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjcuICAqLwogCi0v
KiBTa2VsZXRvbiBpbXBsZW1lbnRhdGlvbiBmb3IgQmlzb24ncyBZYWNjLWxpa2UgcGFyc2VycyBp
biBDCi0KLSAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwgMjAw
MiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNgotICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuCi0KLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisvKiBCaXNvbiBpbXBsZW1lbnRhdGlvbiBmb3IgWWFjYy1s
aWtlIHBhcnNlcnMgaW4gQworICAgCisgICAgICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODktMTk5
MCwgMjAwMC0yMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgCisgICBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgIGFueSBsYXRlciB2ZXJz
aW9uLgotCisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAz
IG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAgIAogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQorICAgCiAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgYWxv
bmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
LSAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCisgICBhbG9uZyB3aXRoIHRoaXMgcHJv
Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAK
IC8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgY3JlYXRlIGEgbGFyZ2VyIHdvcmsg
dGhhdCBjb250YWlucwogICAgcGFydCBvciBhbGwgb2YgdGhlIEJpc29uIHBhcnNlciBza2VsZXRv
biBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKQEAgLTI5LDcgKzI2LDcgQEAKICAgIHNwZWNpYWwg
ZXhjZXB0aW9uLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBza2VsZXRvbiBhbmQgdGhlIHJlc3VsdGlu
ZwogICAgQmlzb24gb3V0cHV0IGZpbGVzIHRvIGJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMKICAgIExpY2Vuc2Ugd2l0aG91dCB0aGlzIHNwZWNpYWwgZXhjZXB0aW9uLgot
CisgICAKICAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24gaW4KICAgIHZlcnNpb24gMi4yIG9mIEJpc29uLiAgKi8KIApAQCAt
NDcsNyArNDQsNyBAQAogI2RlZmluZSBZWUJJU09OIDEKIAogLyogQmlzb24gdmVyc2lvbi4gICov
Ci0jZGVmaW5lIFlZQklTT05fVkVSU0lPTiAiMi4zIgorI2RlZmluZSBZWUJJU09OX1ZFUlNJT04g
IjIuNyIKIAogLyogU2tlbGV0b24gbmFtZS4gICovCiAjZGVmaW5lIFlZU0tFTEVUT05fTkFNRSAi
eWFjYy5jIgpAQCAtNTUsOCArNTIsODEgQEAKIC8qIFB1cmUgcGFyc2Vycy4gICovCiAjZGVmaW5l
IFlZUFVSRSAxCiAKLS8qIFVzaW5nIGxvY2F0aW9ucy4gICovCi0jZGVmaW5lIFlZTFNQX05FRURF
RCAwCisvKiBQdXNoIHBhcnNlcnMuICAqLworI2RlZmluZSBZWVBVU0ggMAorCisvKiBQdWxsIHBh
cnNlcnMuICAqLworI2RlZmluZSBZWVBVTEwgMQorCisKKworCisvKiBDb3B5IHRoZSBmaXJzdCBw
YXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8KKworCisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisv
LyBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGVfcGFyc2VyLnNoLiBETyBO
T1QgRURJVCEKKworLy8gSWdub3JlIGVycm9ycyBpbiBhdXRvLWdlbmVyYXRlZCBjb2RlLgorI2lm
IGRlZmluZWQoX19HTlVDX18pCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51
c2VkLWZ1bmN0aW9uIgorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC12
YXJpYWJsZSIKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzd2l0Y2gtZW51bSIK
KyNlbGlmIGRlZmluZWQoX01TQ19WRVIpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDA2NSkK
KyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTg5KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
IDQ1MDUpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcwMSkKKyNlbmRpZgorCisjaW5jbHVk
ZSAiY29tcGlsZXIvU3ltYm9sVGFibGUuaCIKKyNpbmNsdWRlICJjb21waWxlci9QYXJzZUhlbHBl
ci5oIgorI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorCisjZGVmaW5lIFlZRU5BQkxF
X05MUyAwCisKKyNkZWZpbmUgWVlMRVhfUEFSQU0gY29udGV4dC0+c2Nhbm5lcgorCisKKworIyBp
Zm5kZWYgWVlfTlVMTAorIyAgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiAyMDExMDNMIDw9IF9f
Y3BsdXNwbHVzCisjICAgZGVmaW5lIFlZX05VTEwgbnVsbHB0cgorIyAgZWxzZQorIyAgIGRlZmlu
ZSBZWV9OVUxMIDAKKyMgIGVuZGlmCisjIGVuZGlmCisKKy8qIEVuYWJsaW5nIHZlcmJvc2UgZXJy
b3IgbWVzc2FnZXMuICAqLworI2lmZGVmIFlZRVJST1JfVkVSQk9TRQorIyB1bmRlZiBZWUVSUk9S
X1ZFUkJPU0UKKyMgZGVmaW5lIFlZRVJST1JfVkVSQk9TRSAxCisjZWxzZQorIyBkZWZpbmUgWVlF
UlJPUl9WRVJCT1NFIDAKKyNlbmRpZgorCisvKiBJbiBhIGZ1dHVyZSByZWxlYXNlIG9mIEJpc29u
LCB0aGlzIHNlY3Rpb24gd2lsbCBiZSByZXBsYWNlZAorICAgYnkgI2luY2x1ZGUgImdsc2xhbmdf
dGFiLmgiLiAgKi8KKyNpZm5kZWYgWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRAorIyBkZWZp
bmUgWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRAorLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8K
KyNpZm5kZWYgWVlERUJVRworIyBkZWZpbmUgWVlERUJVRyAwCisjZW5kaWYKKyNpZiBZWURFQlVH
CitleHRlcm4gaW50IHl5ZGVidWc7CisjZW5kaWYKKy8qICIlY29kZSByZXF1aXJlcyIgYmxvY2tz
LiAgKi8KKworCisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxUWVBFX0lT
X0RFQ0xBUkVEIDEKKwogCiAKIApAQCAtMTEzLDIwOSArMTgzLDYxIEBACiAgICAgIEZMT0FUQ09O
U1RBTlQgPSAzMDIsCiAgICAgIElOVENPTlNUQU5UID0gMzAzLAogICAgICBCT09MQ09OU1RBTlQg
PSAzMDQsCi0gICAgIEZJRUxEX1NFTEVDVElPTiA9IDMwNSwKLSAgICAgTEVGVF9PUCA9IDMwNiwK
LSAgICAgUklHSFRfT1AgPSAzMDcsCi0gICAgIElOQ19PUCA9IDMwOCwKLSAgICAgREVDX09QID0g
MzA5LAotICAgICBMRV9PUCA9IDMxMCwKLSAgICAgR0VfT1AgPSAzMTEsCi0gICAgIEVRX09QID0g
MzEyLAotICAgICBORV9PUCA9IDMxMywKLSAgICAgQU5EX09QID0gMzE0LAotICAgICBPUl9PUCA9
IDMxNSwKLSAgICAgWE9SX09QID0gMzE2LAotICAgICBNVUxfQVNTSUdOID0gMzE3LAotICAgICBE
SVZfQVNTSUdOID0gMzE4LAotICAgICBBRERfQVNTSUdOID0gMzE5LAotICAgICBNT0RfQVNTSUdO
ID0gMzIwLAotICAgICBMRUZUX0FTU0lHTiA9IDMyMSwKLSAgICAgUklHSFRfQVNTSUdOID0gMzIy
LAotICAgICBBTkRfQVNTSUdOID0gMzIzLAotICAgICBYT1JfQVNTSUdOID0gMzI0LAotICAgICBP
Ul9BU1NJR04gPSAzMjUsCi0gICAgIFNVQl9BU1NJR04gPSAzMjYsCi0gICAgIExFRlRfUEFSRU4g
PSAzMjcsCi0gICAgIFJJR0hUX1BBUkVOID0gMzI4LAotICAgICBMRUZUX0JSQUNLRVQgPSAzMjks
Ci0gICAgIFJJR0hUX0JSQUNLRVQgPSAzMzAsCi0gICAgIExFRlRfQlJBQ0UgPSAzMzEsCi0gICAg
IFJJR0hUX0JSQUNFID0gMzMyLAotICAgICBET1QgPSAzMzMsCi0gICAgIENPTU1BID0gMzM0LAot
ICAgICBDT0xPTiA9IDMzNSwKLSAgICAgRVFVQUwgPSAzMzYsCi0gICAgIFNFTUlDT0xPTiA9IDMz
NywKLSAgICAgQkFORyA9IDMzOCwKLSAgICAgREFTSCA9IDMzOSwKLSAgICAgVElMREUgPSAzNDAs
Ci0gICAgIFBMVVMgPSAzNDEsCi0gICAgIFNUQVIgPSAzNDIsCi0gICAgIFNMQVNIID0gMzQzLAot
ICAgICBQRVJDRU5UID0gMzQ0LAotICAgICBMRUZUX0FOR0xFID0gMzQ1LAotICAgICBSSUdIVF9B
TkdMRSA9IDM0NiwKLSAgICAgVkVSVElDQUxfQkFSID0gMzQ3LAotICAgICBDQVJFVCA9IDM0OCwK
LSAgICAgQU1QRVJTQU5EID0gMzQ5LAotICAgICBRVUVTVElPTiA9IDM1MAorICAgICBMRUZUX09Q
ID0gMzA1LAorICAgICBSSUdIVF9PUCA9IDMwNiwKKyAgICAgSU5DX09QID0gMzA3LAorICAgICBE
RUNfT1AgPSAzMDgsCisgICAgIExFX09QID0gMzA5LAorICAgICBHRV9PUCA9IDMxMCwKKyAgICAg
RVFfT1AgPSAzMTEsCisgICAgIE5FX09QID0gMzEyLAorICAgICBBTkRfT1AgPSAzMTMsCisgICAg
IE9SX09QID0gMzE0LAorICAgICBYT1JfT1AgPSAzMTUsCisgICAgIE1VTF9BU1NJR04gPSAzMTYs
CisgICAgIERJVl9BU1NJR04gPSAzMTcsCisgICAgIEFERF9BU1NJR04gPSAzMTgsCisgICAgIE1P
RF9BU1NJR04gPSAzMTksCisgICAgIExFRlRfQVNTSUdOID0gMzIwLAorICAgICBSSUdIVF9BU1NJ
R04gPSAzMjEsCisgICAgIEFORF9BU1NJR04gPSAzMjIsCisgICAgIFhPUl9BU1NJR04gPSAzMjMs
CisgICAgIE9SX0FTU0lHTiA9IDMyNCwKKyAgICAgU1VCX0FTU0lHTiA9IDMyNSwKKyAgICAgTEVG
VF9QQVJFTiA9IDMyNiwKKyAgICAgUklHSFRfUEFSRU4gPSAzMjcsCisgICAgIExFRlRfQlJBQ0tF
VCA9IDMyOCwKKyAgICAgUklHSFRfQlJBQ0tFVCA9IDMyOSwKKyAgICAgTEVGVF9CUkFDRSA9IDMz
MCwKKyAgICAgUklHSFRfQlJBQ0UgPSAzMzEsCisgICAgIERPVCA9IDMzMiwKKyAgICAgQ09NTUEg
PSAzMzMsCisgICAgIENPTE9OID0gMzM0LAorICAgICBFUVVBTCA9IDMzNSwKKyAgICAgU0VNSUNP
TE9OID0gMzM2LAorICAgICBCQU5HID0gMzM3LAorICAgICBEQVNIID0gMzM4LAorICAgICBUSUxE
RSA9IDMzOSwKKyAgICAgUExVUyA9IDM0MCwKKyAgICAgU1RBUiA9IDM0MSwKKyAgICAgU0xBU0gg
PSAzNDIsCisgICAgIFBFUkNFTlQgPSAzNDMsCisgICAgIExFRlRfQU5HTEUgPSAzNDQsCisgICAg
IFJJR0hUX0FOR0xFID0gMzQ1LAorICAgICBWRVJUSUNBTF9CQVIgPSAzNDYsCisgICAgIENBUkVU
ID0gMzQ3LAorICAgICBBTVBFUlNBTkQgPSAzNDgsCisgICAgIFFVRVNUSU9OID0gMzQ5CiAgICB9
OwogI2VuZGlmCi0vKiBUb2tlbnMuICAqLwotI2RlZmluZSBJTlZBUklBTlQgMjU4Ci0jZGVmaW5l
IEhJR0hfUFJFQ0lTSU9OIDI1OQotI2RlZmluZSBNRURJVU1fUFJFQ0lTSU9OIDI2MAotI2RlZmlu
ZSBMT1dfUFJFQ0lTSU9OIDI2MQotI2RlZmluZSBQUkVDSVNJT04gMjYyCi0jZGVmaW5lIEFUVFJJ
QlVURSAyNjMKLSNkZWZpbmUgQ09OU1RfUVVBTCAyNjQKLSNkZWZpbmUgQk9PTF9UWVBFIDI2NQot
I2RlZmluZSBGTE9BVF9UWVBFIDI2NgotI2RlZmluZSBJTlRfVFlQRSAyNjcKLSNkZWZpbmUgQlJF
QUsgMjY4Ci0jZGVmaW5lIENPTlRJTlVFIDI2OQotI2RlZmluZSBETyAyNzAKLSNkZWZpbmUgRUxT
RSAyNzEKLSNkZWZpbmUgRk9SIDI3MgotI2RlZmluZSBJRiAyNzMKLSNkZWZpbmUgRElTQ0FSRCAy
NzQKLSNkZWZpbmUgUkVUVVJOIDI3NQotI2RlZmluZSBCVkVDMiAyNzYKLSNkZWZpbmUgQlZFQzMg
Mjc3Ci0jZGVmaW5lIEJWRUM0IDI3OAotI2RlZmluZSBJVkVDMiAyNzkKLSNkZWZpbmUgSVZFQzMg
MjgwCi0jZGVmaW5lIElWRUM0IDI4MQotI2RlZmluZSBWRUMyIDI4MgotI2RlZmluZSBWRUMzIDI4
MwotI2RlZmluZSBWRUM0IDI4NAotI2RlZmluZSBNQVRSSVgyIDI4NQotI2RlZmluZSBNQVRSSVgz
IDI4NgotI2RlZmluZSBNQVRSSVg0IDI4NwotI2RlZmluZSBJTl9RVUFMIDI4OAotI2RlZmluZSBP
VVRfUVVBTCAyODkKLSNkZWZpbmUgSU5PVVRfUVVBTCAyOTAKLSNkZWZpbmUgVU5JRk9STSAyOTEK
LSNkZWZpbmUgVkFSWUlORyAyOTIKLSNkZWZpbmUgU1RSVUNUIDI5MwotI2RlZmluZSBWT0lEX1RZ
UEUgMjk0Ci0jZGVmaW5lIFdISUxFIDI5NQotI2RlZmluZSBTQU1QTEVSMkQgMjk2Ci0jZGVmaW5l
IFNBTVBMRVJDVUJFIDI5NwotI2RlZmluZSBTQU1QTEVSX0VYVEVSTkFMX09FUyAyOTgKLSNkZWZp
bmUgU0FNUExFUjJEUkVDVCAyOTkKLSNkZWZpbmUgSURFTlRJRklFUiAzMDAKLSNkZWZpbmUgVFlQ
RV9OQU1FIDMwMQotI2RlZmluZSBGTE9BVENPTlNUQU5UIDMwMgotI2RlZmluZSBJTlRDT05TVEFO
VCAzMDMKLSNkZWZpbmUgQk9PTENPTlNUQU5UIDMwNAotI2RlZmluZSBGSUVMRF9TRUxFQ1RJT04g
MzA1Ci0jZGVmaW5lIExFRlRfT1AgMzA2Ci0jZGVmaW5lIFJJR0hUX09QIDMwNwotI2RlZmluZSBJ
TkNfT1AgMzA4Ci0jZGVmaW5lIERFQ19PUCAzMDkKLSNkZWZpbmUgTEVfT1AgMzEwCi0jZGVmaW5l
IEdFX09QIDMxMQotI2RlZmluZSBFUV9PUCAzMTIKLSNkZWZpbmUgTkVfT1AgMzEzCi0jZGVmaW5l
IEFORF9PUCAzMTQKLSNkZWZpbmUgT1JfT1AgMzE1Ci0jZGVmaW5lIFhPUl9PUCAzMTYKLSNkZWZp
bmUgTVVMX0FTU0lHTiAzMTcKLSNkZWZpbmUgRElWX0FTU0lHTiAzMTgKLSNkZWZpbmUgQUREX0FT
U0lHTiAzMTkKLSNkZWZpbmUgTU9EX0FTU0lHTiAzMjAKLSNkZWZpbmUgTEVGVF9BU1NJR04gMzIx
Ci0jZGVmaW5lIFJJR0hUX0FTU0lHTiAzMjIKLSNkZWZpbmUgQU5EX0FTU0lHTiAzMjMKLSNkZWZp
bmUgWE9SX0FTU0lHTiAzMjQKLSNkZWZpbmUgT1JfQVNTSUdOIDMyNQotI2RlZmluZSBTVUJfQVNT
SUdOIDMyNgotI2RlZmluZSBMRUZUX1BBUkVOIDMyNwotI2RlZmluZSBSSUdIVF9QQVJFTiAzMjgK
LSNkZWZpbmUgTEVGVF9CUkFDS0VUIDMyOQotI2RlZmluZSBSSUdIVF9CUkFDS0VUIDMzMAotI2Rl
ZmluZSBMRUZUX0JSQUNFIDMzMQotI2RlZmluZSBSSUdIVF9CUkFDRSAzMzIKLSNkZWZpbmUgRE9U
IDMzMwotI2RlZmluZSBDT01NQSAzMzQKLSNkZWZpbmUgQ09MT04gMzM1Ci0jZGVmaW5lIEVRVUFM
IDMzNgotI2RlZmluZSBTRU1JQ09MT04gMzM3Ci0jZGVmaW5lIEJBTkcgMzM4Ci0jZGVmaW5lIERB
U0ggMzM5Ci0jZGVmaW5lIFRJTERFIDM0MAotI2RlZmluZSBQTFVTIDM0MQotI2RlZmluZSBTVEFS
IDM0MgotI2RlZmluZSBTTEFTSCAzNDMKLSNkZWZpbmUgUEVSQ0VOVCAzNDQKLSNkZWZpbmUgTEVG
VF9BTkdMRSAzNDUKLSNkZWZpbmUgUklHSFRfQU5HTEUgMzQ2Ci0jZGVmaW5lIFZFUlRJQ0FMX0JB
UiAzNDcKLSNkZWZpbmUgQ0FSRVQgMzQ4Ci0jZGVmaW5lIEFNUEVSU0FORCAzNDkKLSNkZWZpbmUg
UVVFU1RJT04gMzUwCi0KLQotCi0KLS8qIENvcHkgdGhlIGZpcnN0IHBhcnQgb2YgdXNlciBkZWNs
YXJhdGlvbnMuICAqLwotCi0KLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFRoaXMgZmlsZSBpcyBh
dXRvLWdlbmVyYXRlZCBieSBnZW5lcmF0ZV9wYXJzZXIuc2guIERPIE5PVCBFRElUIQotCi0vLyBJ
Z25vcmUgZXJyb3JzIGluIGF1dG8tZ2VuZXJhdGVkIGNvZGUuCi0jaWYgZGVmaW5lZChfX0dOVUNf
XykKLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtZnVuY3Rpb24iCi0j
cHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXZhcmlhYmxlIgotI3ByYWdt
YSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3N3aXRjaC1lbnVtIgotI2VsaWYgZGVmaW5lZChf
TVNDX1ZFUikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDY1KQotI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGU6IDQxODkpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDUwNSkKLSNwcmFnbWEg
d2FybmluZyhkaXNhYmxlOiA0NzAxKQotI2VuZGlmCi0KLSNpbmNsdWRlICJjb21waWxlci9TeW1i
b2xUYWJsZS5oIgotI2luY2x1ZGUgImNvbXBpbGVyL1BhcnNlSGVscGVyLmgiCi0jaW5jbHVkZSAi
R0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLSNkZWZpbmUgWVlFTkFCTEVfTkxTIDAKLSNkZWZpbmUg
WVlMVFlQRV9JU19UUklWSUFMIDEKLQotI2RlZmluZSBZWUxFWF9QQVJBTSBjb250ZXh0LT5zY2Fu
bmVyCi0KLQotLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KLSNpZm5kZWYgWVlERUJVRwotIyBkZWZp
bmUgWVlERUJVRyAwCi0jZW5kaWYKLQotLyogRW5hYmxpbmcgdmVyYm9zZSBlcnJvciBtZXNzYWdl
cy4gICovCi0jaWZkZWYgWVlFUlJPUl9WRVJCT1NFCi0jIHVuZGVmIFlZRVJST1JfVkVSQk9TRQot
IyBkZWZpbmUgWVlFUlJPUl9WRVJCT1NFIDEKLSNlbHNlCi0jIGRlZmluZSBZWUVSUk9SX1ZFUkJP
U0UgMAotI2VuZGlmCiAKLS8qIEVuYWJsaW5nIHRoZSB0b2tlbiB0YWJsZS4gICovCi0jaWZuZGVm
IFlZVE9LRU5fVEFCTEUKLSMgZGVmaW5lIFlZVE9LRU5fVEFCTEUgMAotI2VuZGlmCiAKICNpZiAh
IGRlZmluZWQgWVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQRV9JU19ERUNMQVJFRAogdHlwZWRl
ZiB1bmlvbiBZWVNUWVBFCi0KIHsKKworCiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxv
YyBsaW5lOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUU3RyaW5nICpzdHJpbmc7CiAg
ICAgICAgICAgICBmbG9hdCBmOwpAQCAtMzI1LDcgKzI0Nyw2IEBAIHR5cGVkZWYgdW5pb24gWVlT
VFlQRQogICAgICAgICBUU3ltYm9sKiBzeW1ib2w7CiAgICAgfSBsZXg7CiAgICAgc3RydWN0IHsK
LSAgICAgICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAgICBUT3BlcmF0b3Igb3A7CiAgICAgICAg
IHVuaW9uIHsKICAgICAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwpAQCAtMzM5LDM0
ICsyNjAsNzAgQEAgdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAgICAgICAgICAgICBUUXVhbGlmaWVy
IHF1YWxpZmllcjsKICAgICAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAgICAg
ICBUUGFyYW1ldGVyIHBhcmFtOwotICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVMaW5lOwotICAg
ICAgICAgICAgVFR5cGVMaXN0KiB0eXBlTGlzdDsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7
CisgICAgICAgICAgICBURmllbGRMaXN0KiBmaWVsZExpc3Q7CiAgICAgICAgIH07CiAgICAgfSBp
bnRlcm07Ci19Ci0vKiBMaW5lIDE5MyBvZiB5YWNjLmMuICAqLwogCi0JWVlTVFlQRTsKKworCit9
IFlZU1RZUEU7CisjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogIyBkZWZpbmUgeXlzdHlw
ZSBZWVNUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3biAqLwogIyBkZWZpbmUg
WVlTVFlQRV9JU19ERUNMQVJFRCAxCi0jIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogI2Vu
ZGlmCiAKKyNpZiAhIGRlZmluZWQgWVlMVFlQRSAmJiAhIGRlZmluZWQgWVlMVFlQRV9JU19ERUNM
QVJFRAordHlwZWRlZiBzdHJ1Y3QgWVlMVFlQRQoreworICBpbnQgZmlyc3RfbGluZTsKKyAgaW50
IGZpcnN0X2NvbHVtbjsKKyAgaW50IGxhc3RfbGluZTsKKyAgaW50IGxhc3RfY29sdW1uOworfSBZ
WUxUWVBFOworIyBkZWZpbmUgeXlsdHlwZSBZWUxUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJl
IHdpdGhkcmF3biAqLworIyBkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisjIGRlZmluZSBZ
WUxUWVBFX0lTX1RSSVZJQUwgMQorI2VuZGlmCisKKworI2lmZGVmIFlZUEFSU0VfUEFSQU0KKyNp
ZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKK2ludCB5eXBhcnNlICh2
b2lkICpZWVBBUlNFX1BBUkFNKTsKKyNlbHNlCitpbnQgeXlwYXJzZSAoKTsKKyNlbmRpZgorI2Vs
c2UgLyogISBZWVBBUlNFX1BBUkFNICovCisjaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVk
IF9fY3BsdXNwbHVzCitpbnQgeXlwYXJzZSAoVFBhcnNlQ29udGV4dCogY29udGV4dCk7CisjZWxz
ZQoraW50IHl5cGFyc2UgKCk7CisjZW5kaWYKKyNlbmRpZiAvKiAhIFlZUEFSU0VfUEFSQU0gKi8K
IAorI2VuZGlmIC8qICFZWV9ZWV9HTFNMQU5HX1RBQl9IX0lOQ0xVREVEICAqLwogCiAvKiBDb3B5
IHRoZSBzZWNvbmQgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCiAKIAotZXh0ZXJuIGlu
dCB5eWxleChZWVNUWVBFKiB5eWx2YWxfcGFyYW0sIHZvaWQqIHl5c2Nhbm5lcik7Ci1leHRlcm4g
dm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7
CitleHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbCwgWVlMVFlQRSogeXlsbG9jLCB2b2lk
KiB5eXNjYW5uZXIpOworc3RhdGljIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJz
ZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAKLSNkZWZpbmUgRlJBR19W
RVJUX09OTFkoUywgTCkgeyAgXAotICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX0ZS
QUdNRU5UX1NIQURFUiAmJiAgXAotICAgICAgICBjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX1ZF
UlRFWF9TSEFERVIpIHsgIFwKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBwb3J0ZWQg
aW4gdmVydGV4L2ZyYWdtZW50IHNoYWRlcnMgb25seSAiLCBTKTsgIFwKLSAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOyAgXAotICAgIH0gIFwKLX0KKyNkZWZpbmUgWVlMTE9DX0RFRkFVTFQoQ3Vy
cmVudCwgUmhzLCBOKSAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgaWYgKFlZ
SUQoTikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgKEN1cnJlbnQpLmZpcnN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDEpLmZpcnN0X2ZpbGU7ICBc
CisgICAgICAgIChDdXJyZW50KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAxKS5maXJzdF9s
aW5lOyAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCBOKS5s
YXN0X2ZpbGU7ICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJo
cywgTikubGFzdF9saW5lOyAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZWxzZSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZp
cnN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfZmlsZTsgICBcCisgICAgICAgIChDdXJy
ZW50KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2xpbmU7ICAgXAorICAgICAg
ICAoQ3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2ZpbGU7ICAgIFwK
KyAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9saW5l
OyAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICB9IHdoaWxlICgwKQogCiAjZGVmaW5lIFZFUlRFWF9PTkxZKFMsIEwp
IHsgIFwKICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7
ICBcCkBAIC0zODMsOCArMzQwLDYgQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0
KiBjb250ZQogfQogCiAKLS8qIExpbmUgMjE2IG9mIHlhY2MuYy4gICovCi0KIAogI2lmZGVmIHNo
b3J0CiAjIHVuZGVmIHNob3J0CkBAIC00MzcsMzYgKzM5MiwzNiBAQCB0eXBlZGVmIHNob3J0IGlu
dCB5eXR5cGVfaW50MTY7CiAjIGlmIGRlZmluZWQgWVlFTkFCTEVfTkxTICYmIFlZRU5BQkxFX05M
UwogIyAgaWYgRU5BQkxFX05MUwogIyAgIGluY2x1ZGUgPGxpYmludGwuaD4gLyogSU5GUklOR0VT
IE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotIyAgIGRlZmluZSBZWV8obXNnaWQpIGRnZXR0ZXh0ICgi
Ymlzb24tcnVudGltZSIsIG1zZ2lkKQorIyAgIGRlZmluZSBZWV8oTXNnaWQpIGRnZXR0ZXh0ICgi
Ymlzb24tcnVudGltZSIsIE1zZ2lkKQogIyAgZW5kaWYKICMgZW5kaWYKICMgaWZuZGVmIFlZXwot
IyAgZGVmaW5lIFlZXyhtc2dpZCkgbXNnaWQKKyMgIGRlZmluZSBZWV8oTXNnaWQpIE1zZ2lkCiAj
IGVuZGlmCiAjZW5kaWYKIAogLyogU3VwcHJlc3MgdW51c2VkLXZhcmlhYmxlIHdhcm5pbmdzIGJ5
ICJ1c2luZyIgRS4gICovCiAjaWYgISBkZWZpbmVkIGxpbnQgfHwgZGVmaW5lZCBfX0dOVUNfXwot
IyBkZWZpbmUgWVlVU0UoZSkgKCh2b2lkKSAoZSkpCisjIGRlZmluZSBZWVVTRShFKSAoKHZvaWQp
IChFKSkKICNlbHNlCi0jIGRlZmluZSBZWVVTRShlKSAvKiBlbXB0eSAqLworIyBkZWZpbmUgWVlV
U0UoRSkgLyogZW1wdHkgKi8KICNlbmRpZgogCiAvKiBJZGVudGl0eSBmdW5jdGlvbiwgdXNlZCB0
byBzdXBwcmVzcyB3YXJuaW5ncyBhYm91dCBjb25zdGFudCBjb25kaXRpb25zLiAgKi8KICNpZm5k
ZWYgbGludAotIyBkZWZpbmUgWVlJRChuKSAobikKKyMgZGVmaW5lIFlZSUQoTikgKE4pCiAjZWxz
ZQogI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAg
IHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyBpbnQK
LVlZSUQgKGludCBpKQorWVlJRCAoaW50IHl5aSkKICNlbHNlCiBzdGF0aWMgaW50Ci1ZWUlEIChp
KQotICAgIGludCBpOworWVlJRCAoeXlpKQorICAgIGludCB5eWk7CiAjZW5kaWYKIHsKLSAgcmV0
dXJuIGk7CisgIHJldHVybiB5eWk7CiB9CiAjZW5kaWYKIApAQCAtNDg3LDExICs0NDIsMTIgQEAg
WVlJRCAoaSkKICMgICAgZGVmaW5lIGFsbG9jYSBfYWxsb2NhCiAjICAgZWxzZQogIyAgICBkZWZp
bmUgWVlTVEFDS19BTExPQyBhbGxvY2EKLSMgICAgaWYgISBkZWZpbmVkIF9BTExPQ0FfSCAmJiAh
IGRlZmluZWQgX1NURExJQl9IICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlf
X0ZVTkNfXyBcCisjICAgIGlmICEgZGVmaW5lZCBfQUxMT0NBX0ggJiYgISBkZWZpbmVkIEVYSVRf
U1VDQ0VTUyAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAog
ICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiAjICAgICBp
bmNsdWRlIDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotIyAg
ICAgaWZuZGVmIF9TVERMSUJfSAotIyAgICAgIGRlZmluZSBfU1RETElCX0ggMQorICAgICAgLyog
VXNlIEVYSVRfU1VDQ0VTUyBhcyBhIHdpdG5lc3MgZm9yIHN0ZGxpYi5oLiAgKi8KKyMgICAgIGlm
bmRlZiBFWElUX1NVQ0NFU1MKKyMgICAgICBkZWZpbmUgRVhJVF9TVUNDRVNTIDAKICMgICAgIGVu
ZGlmCiAjICAgIGVuZGlmCiAjICAgZW5kaWYKQEAgLTUxNCwyNCArNDcwLDI0IEBAIFlZSUQgKGkp
CiAjICBpZm5kZWYgWVlTVEFDS19BTExPQ19NQVhJTVVNCiAjICAgZGVmaW5lIFlZU1RBQ0tfQUxM
T0NfTUFYSU1VTSBZWVNJWkVfTUFYSU1VTQogIyAgZW5kaWYKLSMgIGlmIChkZWZpbmVkIF9fY3Bs
dXNwbHVzICYmICEgZGVmaW5lZCBfU1RETElCX0ggXAorIyAgaWYgKGRlZmluZWQgX19jcGx1c3Bs
dXMgJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VTUyBcCiAgICAgICAgJiYgISAoKGRlZmluZWQgWVlN
QUxMT0MgfHwgZGVmaW5lZCBtYWxsb2MpIFwKIAkgICAgICYmIChkZWZpbmVkIFlZRlJFRSB8fCBk
ZWZpbmVkIGZyZWUpKSkKICMgICBpbmNsdWRlIDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVT
RVIgTkFNRSBTUEFDRSAqLwotIyAgIGlmbmRlZiBfU1RETElCX0gKLSMgICAgZGVmaW5lIF9TVERM
SUJfSCAxCisjICAgaWZuZGVmIEVYSVRfU1VDQ0VTUworIyAgICBkZWZpbmUgRVhJVF9TVUNDRVNT
IDAKICMgICBlbmRpZgogIyAgZW5kaWYKICMgIGlmbmRlZiBZWU1BTExPQwogIyAgIGRlZmluZSBZ
WU1BTExPQyBtYWxsb2MKLSMgICBpZiAhIGRlZmluZWQgbWFsbG9jICYmICEgZGVmaW5lZCBfU1RE
TElCX0ggJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyMg
ICBpZiAhIGRlZmluZWQgbWFsbG9jICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MgJiYgKGRlZmlu
ZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBf
X2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogdm9pZCAqbWFsbG9jIChZWVNJWkVfVCk7
IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KICMgICBlbmRpZgogIyAgZW5kaWYK
ICMgIGlmbmRlZiBZWUZSRUUKICMgICBkZWZpbmUgWVlGUkVFIGZyZWUKLSMgICBpZiAhIGRlZmlu
ZWQgZnJlZSAmJiAhIGRlZmluZWQgX1NURExJQl9IICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRl
ZmluZWQgX19DOTlfX0ZVTkNfXyBcCisjICAgaWYgISBkZWZpbmVkIGZyZWUgJiYgISBkZWZpbmVk
IEVYSVRfU1VDQ0VTUyAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5D
X18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiB2
b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KICMg
ICBlbmRpZgpAQCAtNTQyLDE0ICs0OTgsMTYgQEAgdm9pZCBmcmVlICh2b2lkICopOyAvKiBJTkZS
SU5HRVMgT04gVVNFUgogCiAjaWYgKCEgZGVmaW5lZCB5eW92ZXJmbG93IFwKICAgICAgJiYgKCEg
ZGVmaW5lZCBfX2NwbHVzcGx1cyBcCi0JIHx8IChkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAm
JiBZWVNUWVBFX0lTX1RSSVZJQUwpKSkKKwkgfHwgKGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFM
ICYmIFlZTFRZUEVfSVNfVFJJVklBTCBcCisJICAgICAmJiBkZWZpbmVkIFlZU1RZUEVfSVNfVFJJ
VklBTCAmJiBZWVNUWVBFX0lTX1RSSVZJQUwpKSkKIAogLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVy
bHkgYWxpZ25lZCBmb3IgYW55IHN0YWNrIG1lbWJlci4gICovCiB1bmlvbiB5eWFsbG9jCiB7Ci0g
IHl5dHlwZV9pbnQxNiB5eXNzOwotICBZWVNUWVBFIHl5dnM7Ci0gIH07CisgIHl5dHlwZV9pbnQx
NiB5eXNzX2FsbG9jOworICBZWVNUWVBFIHl5dnNfYWxsb2M7CisgIFlZTFRZUEUgeXlsc19hbGxv
YzsKK307CiAKIC8qIFRoZSBzaXplIG9mIHRoZSBtYXhpbXVtIGdhcCBiZXR3ZWVuIG9uZSBhbGln
bmVkIHN0YWNrIGFuZCB0aGUgbmV4dC4gICovCiAjIGRlZmluZSBZWVNUQUNLX0dBUF9NQVhJTVVN
IChzaXplb2YgKHVuaW9uIHl5YWxsb2MpIC0gMSkKQEAgLTU1NywzOCArNTE1LDIyIEBAIHVuaW9u
IHl5YWxsb2MKIC8qIFRoZSBzaXplIG9mIGFuIGFycmF5IGxhcmdlIHRvIGVub3VnaCB0byBob2xk
IGFsbCBzdGFja3MsIGVhY2ggd2l0aAogICAgTiBlbGVtZW50cy4gICovCiAjIGRlZmluZSBZWVNU
QUNLX0JZVEVTKE4pIFwKLSAgICAgKChOKSAqIChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXpl
b2YgKFlZU1RZUEUpKSBcCi0gICAgICArIFlZU1RBQ0tfR0FQX01BWElNVU0pCisgICAgICgoTikg
KiAoc2l6ZW9mICh5eXR5cGVfaW50MTYpICsgc2l6ZW9mIChZWVNUWVBFKSArIHNpemVvZiAoWVlM
VFlQRSkpIFwKKyAgICAgICsgMiAqIFlZU1RBQ0tfR0FQX01BWElNVU0pCiAKLS8qIENvcHkgQ09V
TlQgb2JqZWN0cyBmcm9tIEZST00gdG8gVE8uICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBk
bwotICAgbm90IG92ZXJsYXAuICAqLwotIyBpZm5kZWYgWVlDT1BZCi0jICBpZiBkZWZpbmVkIF9f
R05VQ19fICYmIDEgPCBfX0dOVUNfXwotIyAgIGRlZmluZSBZWUNPUFkoVG8sIEZyb20sIENvdW50
KSBcCi0gICAgICBfX2J1aWx0aW5fbWVtY3B5IChUbywgRnJvbSwgKENvdW50KSAqIHNpemVvZiAo
KihGcm9tKSkpCi0jICBlbHNlCi0jICAgZGVmaW5lIFlZQ09QWShUbywgRnJvbSwgQ291bnQpCQlc
Ci0gICAgICBkbwkJCQkJXAotCXsJCQkJCVwKLQkgIFlZU0laRV9UIHl5aTsJCQkJXAotCSAgZm9y
ICh5eWkgPSAwOyB5eWkgPCAoQ291bnQpOyB5eWkrKykJXAotCSAgICAoVG8pW3l5aV0gPSAoRnJv
bSlbeXlpXTsJCVwKLQl9CQkJCQlcCi0gICAgICB3aGlsZSAoWVlJRCAoMCkpCi0jICBlbmRpZgot
IyBlbmRpZgorIyBkZWZpbmUgWVlDT1BZX05FRURFRCAxCiAKIC8qIFJlbG9jYXRlIFNUQUNLIGZy
b20gaXRzIG9sZCBsb2NhdGlvbiB0byB0aGUgbmV3IG9uZS4gIFRoZQogICAgbG9jYWwgdmFyaWFi
bGVzIFlZU0laRSBhbmQgWVlTVEFDS1NJWkUgZ2l2ZSB0aGUgb2xkIGFuZCBuZXcgbnVtYmVyIG9m
CiAgICBlbGVtZW50cyBpbiB0aGUgc3RhY2ssIGFuZCBZWVBUUiBnaXZlcyB0aGUgbmV3IGxvY2F0
aW9uIG9mIHRoZQogICAgc3RhY2suICBBZHZhbmNlIFlZUFRSIHRvIGEgcHJvcGVybHkgYWxpZ25l
ZCBsb2NhdGlvbiBmb3IgdGhlIG5leHQKICAgIHN0YWNrLiAgKi8KLSMgZGVmaW5lIFlZU1RBQ0tf
UkVMT0NBVEUoU3RhY2spCQkJCQlcCisjIGRlZmluZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrX2Fs
bG9jLCBTdGFjaykJCQkJXAogICAgIGRvCQkJCQkJCQkJXAogICAgICAgewkJCQkJCQkJCVwKIAlZ
WVNJWkVfVCB5eW5ld2J5dGVzOwkJCQkJCVwKLQlZWUNPUFkgKCZ5eXB0ci0+U3RhY2ssIFN0YWNr
LCB5eXNpemUpOwkJCQlcCi0JU3RhY2sgPSAmeXlwdHItPlN0YWNrOwkJCQkJCVwKKwlZWUNPUFkg
KCZ5eXB0ci0+U3RhY2tfYWxsb2MsIFN0YWNrLCB5eXNpemUpOwkJCVwKKwlTdGFjayA9ICZ5eXB0
ci0+U3RhY2tfYWxsb2M7CQkJCQlcCiAJeXluZXdieXRlcyA9IHl5c3RhY2tzaXplICogc2l6ZW9m
ICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFYSU1VTTsgXAogCXl5cHRyICs9IHl5bmV3Ynl0ZXMg
LyBzaXplb2YgKCp5eXB0cik7CQkJCVwKICAgICAgIH0JCQkJCQkJCQlcCkBAIC01OTYsMjMgKzUz
OCw0MyBAQCB1bmlvbiB5eWFsbG9jCiAKICNlbmRpZgogCisjaWYgZGVmaW5lZCBZWUNPUFlfTkVF
REVEICYmIFlZQ09QWV9ORUVERUQKKy8qIENvcHkgQ09VTlQgb2JqZWN0cyBmcm9tIFNSQyB0byBE
U1QuICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbworICAgbm90IG92ZXJsYXAuICAqLwor
IyBpZm5kZWYgWVlDT1BZCisjICBpZiBkZWZpbmVkIF9fR05VQ19fICYmIDEgPCBfX0dOVUNfXwor
IyAgIGRlZmluZSBZWUNPUFkoRHN0LCBTcmMsIENvdW50KSBcCisgICAgICBfX2J1aWx0aW5fbWVt
Y3B5IChEc3QsIFNyYywgKENvdW50KSAqIHNpemVvZiAoKihTcmMpKSkKKyMgIGVsc2UKKyMgICBk
ZWZpbmUgWVlDT1BZKERzdCwgU3JjLCBDb3VudCkgICAgICAgICAgICAgIFwKKyAgICAgIGRvICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBZWVNJWkVfVCB5eWk7
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmb3IgKHl5aSA9IDA7IHl5aSA8
IChDb3VudCk7IHl5aSsrKSAgIFwKKyAgICAgICAgICAgIChEc3QpW3l5aV0gPSAoU3JjKVt5eWld
OyAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgIHdoaWxlIChZWUlEICgwKSkKKyMgIGVuZGlmCisjIGVuZGlmCisjZW5k
aWYgLyogIVlZQ09QWV9ORUVERUQgKi8KKwogLyogWVlGSU5BTCAtLSBTdGF0ZSBudW1iZXIgb2Yg
dGhlIHRlcm1pbmF0aW9uIHN0YXRlLiAgKi8KLSNkZWZpbmUgWVlGSU5BTCAgNzEKKyNkZWZpbmUg
WVlGSU5BTCAgNzQKIC8qIFlZTEFTVCAtLSBMYXN0IGluZGV4IGluIFlZVEFCTEUuICAqLwotI2Rl
ZmluZSBZWUxBU1QgICAxNDE2CisjZGVmaW5lIFlZTEFTVCAgIDE0OTAKIAogLyogWVlOVE9LRU5T
IC0tIE51bWJlciBvZiB0ZXJtaW5hbHMuICAqLwotI2RlZmluZSBZWU5UT0tFTlMgIDk2CisjZGVm
aW5lIFlZTlRPS0VOUyAgOTUKIC8qIFlZTk5UUyAtLSBOdW1iZXIgb2Ygbm9udGVybWluYWxzLiAg
Ki8KLSNkZWZpbmUgWVlOTlRTICA4MworI2RlZmluZSBZWU5OVFMgIDg0CiAvKiBZWU5SVUxFUyAt
LSBOdW1iZXIgb2YgcnVsZXMuICAqLwotI2RlZmluZSBZWU5SVUxFUyAgMjAxCisjZGVmaW5lIFlZ
TlJVTEVTICAyMDIKIC8qIFlZTlJVTEVTIC0tIE51bWJlciBvZiBzdGF0ZXMuICAqLwotI2RlZmlu
ZSBZWU5TVEFURVMgIDMwNAorI2RlZmluZSBZWU5TVEFURVMgIDMwNwogCiAvKiBZWVRSQU5TTEFU
RShZWUxFWCkgLS0gQmlzb24gc3ltYm9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZTEVYLiAg
Ki8KICNkZWZpbmUgWVlVTkRFRlRPSyAgMgotI2RlZmluZSBZWU1BWFVUT0sgICAzNTAKKyNkZWZp
bmUgWVlNQVhVVE9LICAgMzQ5CiAKICNkZWZpbmUgWVlUUkFOU0xBVEUoWVlYKQkJCQkJCVwKICAg
KCh1bnNpZ25lZCBpbnQpIChZWVgpIDw9IFlZTUFYVVRPSyA/IHl5dHJhbnNsYXRlW1lZWF0gOiBZ
WVVOREVGVE9LKQpAQCAtNjU0LDggKzYxNiw3IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDgg
eXl0cmFuc2xhdGVbXQogICAgICAgNTUsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2
MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsCiAgICAgICA2NSwgICAgNjYsICAgIDY3LCAg
ICA2OCwgICAgNjksICAgIDcwLCAgICA3MSwgICAgNzIsICAgIDczLCAgICA3NCwKICAgICAgIDc1
LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgODMs
ICAgIDg0LAotICAgICAgODUsICAgIDg2LCAgICA4NywgICAgODgsICAgIDg5LCAgICA5MCwgICAg
OTEsICAgIDkyLCAgICA5MywgICAgOTQsCi0gICAgICA5NQorICAgICAgODUsICAgIDg2LCAgICA4
NywgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgIDkyLCAgICA5MywgICAgOTQKIH07CiAK
ICNpZiBZWURFQlVHCkBAIC02NjMsMTE5ICs2MjQsMTIwIEBAIHN0YXRpYyBjb25zdCB5eXR5cGVf
dWludDggeXl0cmFuc2xhdGVbXQogICAgWVlSSFMuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91
aW50MTYgeXlwcmhzW10gPQogewotICAgICAgIDAsICAgICAwLCAgICAgMywgICAgIDUsICAgICA3
LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNywgICAgMTksCi0gICAgICAyNCwgICAgMjYsICAg
IDMwLCAgICAzMywgICAgMzYsICAgIDM4LCAgICA0MCwgICAgNDIsICAgIDQ2LCAgICA0OSwKLSAg
ICAgIDUyLCAgICA1NSwgICAgNTcsICAgIDYwLCAgICA2NCwgICAgNjcsICAgIDY5LCAgICA3MSwg
ICAgNzMsICAgIDc1LAotICAgICAgNzgsICAgIDgxLCAgICA4NCwgICAgODYsICAgIDg4LCAgICA5
MCwgICAgOTIsICAgIDk2LCAgIDEwMCwgICAxMDIsCi0gICAgIDEwNiwgICAxMTAsICAgMTEyLCAg
IDExNCwgICAxMTgsICAgMTIyLCAgIDEyNiwgICAxMzAsICAgMTMyLCAgIDEzNiwKLSAgICAgMTQw
LCAgIDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwgICAxNTIsICAgMTU0LCAgIDE1OCwgICAxNjAs
ICAgMTY0LAotICAgICAxNjYsICAgMTcyLCAgIDE3NCwgICAxNzgsICAgMTgwLCAgIDE4MiwgICAx
ODQsICAgMTg2LCAgIDE4OCwgICAxOTAsCi0gICAgIDE5NCwgICAxOTYsICAgMTk5LCAgIDIwMiwg
ICAyMDcsICAgMjEwLCAgIDIxMiwgICAyMTQsICAgMjE3LCAgIDIyMSwKLSAgICAgMjI1LCAgIDIy
OCwgICAyMzQsICAgMjM4LCAgIDI0MSwgICAyNDUsICAgMjQ4LCAgIDI0OSwgICAyNTEsICAgMjUz
LAotICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAyNjMsICAgMjY5LCAgIDI3NiwgICAyODIsICAg
Mjg0LCAgIDI4NywgICAyOTIsCi0gICAgIDI5OCwgICAzMDMsICAgMzA2LCAgIDMwOCwgICAzMTEs
ICAgMzEzLCAgIDMxNSwgICAzMTcsICAgMzIwLCAgIDMyMiwKLSAgICAgMzI0LCAgIDMyNywgICAz
MjksICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzQwLCAgIDM0MiwgICAzNDQsICAgMzQ2LAorICAg
ICAgIDAsICAgICAwLCAgICAgMywgICAgIDUsICAgICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAg
ICAxNSwgICAgMTcsCisgICAgICAyMSwgICAgMjMsICAgIDI4LCAgICAzMCwgICAgMzQsICAgIDM3
LCAgICA0MCwgICAgNDIsICAgIDQ0LCAgICA0NiwKKyAgICAgIDUwLCAgICA1MywgICAgNTYsICAg
IDU5LCAgICA2MSwgICAgNjQsICAgIDY4LCAgICA3MSwgICAgNzMsICAgIDc1LAorICAgICAgNzcs
ICAgIDgwLCAgICA4MywgICAgODYsICAgIDg4LCAgICA5MCwgICAgOTIsICAgIDk0LCAgICA5OCwg
ICAxMDIsCisgICAgIDEwNCwgICAxMDgsICAgMTEyLCAgIDExNCwgICAxMTYsICAgMTIwLCAgIDEy
NCwgICAxMjgsICAgMTMyLCAgIDEzNCwKKyAgICAgMTM4LCAgIDE0MiwgICAxNDQsICAgMTQ2LCAg
IDE0OCwgICAxNTAsICAgMTU0LCAgIDE1NiwgICAxNjAsICAgMTYyLAorICAgICAxNjYsICAgMTY4
LCAgIDE3NCwgICAxNzYsICAgMTgwLCAgIDE4MiwgICAxODQsICAgMTg2LCAgIDE4OCwgICAxOTAs
CisgICAgIDE5MiwgICAxOTYsICAgMTk4LCAgIDIwMSwgICAyMDQsICAgMjA5LCAgIDIxMiwgICAy
MTQsICAgMjE2LCAgIDIxOSwKKyAgICAgMjIzLCAgIDIyNywgICAyMzAsICAgMjM2LCAgIDI0MCwg
ICAyNDMsICAgMjQ3LCAgIDI1MCwgICAyNTEsICAgMjUzLAorICAgICAyNTUsICAgMjU3LCAgIDI1
OSwgICAyNjEsICAgMjY1LCAgIDI3MSwgICAyNzgsICAgMjg0LCAgIDI4NiwgICAyODksCisgICAg
IDI5NCwgICAzMDAsICAgMzA1LCAgIDMwOCwgICAzMTAsICAgMzEzLCAgIDMxNSwgICAzMTcsICAg
MzE5LCAgIDMyMiwKKyAgICAgMzI0LCAgIDMyNiwgICAzMjksICAgMzMxLCAgIDMzMywgICAzMzUs
ICAgMzM3LCAgIDM0MiwgICAzNDQsICAgMzQ2LAogICAgICAzNDgsICAgMzUwLCAgIDM1MiwgICAz
NTQsICAgMzU2LCAgIDM1OCwgICAzNjAsICAgMzYyLCAgIDM2NCwgICAzNjYsCi0gICAgIDM2OCwg
ICAzNzAsICAgMzcyLCAgIDM3NCwgICAzNzYsICAgMzc4LCAgIDM4MCwgICAzODIsICAgMzg0LCAg
IDM4NSwKLSAgICAgMzkyLCAgIDM5MywgICAzOTksICAgNDAxLCAgIDQwNCwgICA0MDgsICAgNDEw
LCAgIDQxNCwgICA0MTYsICAgNDIxLAotICAgICA0MjMsICAgNDI1LCAgIDQyNywgICA0MjksICAg
NDMxLCAgIDQzMywgICA0MzUsICAgNDM3LCAgIDQzOSwgICA0NDIsCi0gICAgIDQ0MywgICA0NDQs
ICAgNDUwLCAgIDQ1MiwgICA0NTQsICAgNDU1LCAgIDQ1OCwgICA0NTksICAgNDYyLCAgIDQ2NSwK
LSAgICAgNDY5LCAgIDQ3MSwgICA0NzQsICAgNDc2LCAgIDQ3OSwgICA0ODUsICAgNDg5LCAgIDQ5
MSwgICA0OTMsICAgNDk4LAotICAgICA0OTksICAgNTA2LCAgIDUwNywgICA1MTYsICAgNTE3LCAg
IDUyNSwgICA1MjcsICAgNTI5LCAgIDUzMSwgICA1MzIsCi0gICAgIDUzNSwgICA1MzksICAgNTQy
LCAgIDU0NSwgICA1NDgsICAgNTUyLCAgIDU1NSwgICA1NTcsICAgNTYwLCAgIDU2MiwKLSAgICAg
NTY0LCAgIDU2NQorICAgICAzNjgsICAgMzcwLCAgIDM3MiwgICAzNzQsICAgMzc2LCAgIDM3OCwg
ICAzODAsICAgMzgyLCAgIDM4NCwgICAzODYsCisgICAgIDM4NywgICAzOTQsICAgMzk1LCAgIDQw
MSwgICA0MDMsICAgNDA2LCAgIDQxMCwgICA0MTIsICAgNDE2LCAgIDQxOCwKKyAgICAgNDIzLCAg
IDQyNSwgICA0MjcsICAgNDI5LCAgIDQzMSwgICA0MzMsICAgNDM1LCAgIDQzNywgICA0MzksICAg
NDQxLAorICAgICA0NDQsICAgNDQ1LCAgIDQ0NiwgICA0NTIsICAgNDU0LCAgIDQ1NiwgICA0NTcs
ICAgNDYwLCAgIDQ2MSwgICA0NjQsCisgICAgIDQ2NywgICA0NzEsICAgNDczLCAgIDQ3NiwgICA0
NzgsICAgNDgxLCAgIDQ4NywgICA0OTEsICAgNDkzLCAgIDQ5NSwKKyAgICAgNTAwLCAgIDUwMSwg
ICA1MDgsICAgNTA5LCAgIDUxOCwgICA1MTksICAgNTI3LCAgIDUyOSwgICA1MzEsICAgNTMzLAor
ICAgICA1MzQsICAgNTM3LCAgIDU0MSwgICA1NDQsICAgNTQ3LCAgIDU1MCwgICA1NTQsICAgNTU3
LCAgIDU1OSwgICA1NjIsCisgICAgIDU2NCwgICA1NjYsICAgNTY3CiB9OwogCiAvKiBZWVJIUyAt
LSBBIGAtMSctc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHJ1bGVzJyBSSFMuICAqLwogc3RhdGljIGNv
bnN0IHl5dHlwZV9pbnQxNiB5eXJoc1tdID0KIHsKLSAgICAgMTc1LCAgICAgMCwgICAgLTEsICAg
IDQ1LCAgICAtMSwgICAgOTcsICAgIC0xLCAgICA0OCwgICAgLTEsICAgIDQ3LAotICAgICAgLTEs
ICAgIDQ5LCAgICAtMSwgICAgNzIsICAgMTI0LCAgICA3MywgICAgLTEsICAgIDk4LCAgICAtMSwg
ICAgOTksCi0gICAgICA3NCwgICAxMDAsICAgIDc1LCAgICAtMSwgICAxMDEsICAgIC0xLCAgICA5
OSwgICAgNzgsICAgIDUwLCAgICAtMSwKLSAgICAgIDk5LCAgICA1MywgICAgLTEsICAgIDk5LCAg
ICA1NCwgICAgLTEsICAgMTI0LCAgICAtMSwgICAxMDIsICAgIC0xLAotICAgICAxMDMsICAgIC0x
LCAgICA5OSwgICAgNzgsICAgMTAzLCAgICAtMSwgICAxMDUsICAgIDczLCAgICAtMSwgICAxMDQs
Ci0gICAgICA3MywgICAgLTEsICAgMTA2LCAgICAzOSwgICAgLTEsICAgMTA2LCAgICAtMSwgICAx
MDYsICAgMTIyLCAgICAtMSwKLSAgICAgMTA1LCAgICA3OSwgICAxMjIsICAgIC0xLCAgIDEwNywg
ICAgNzIsICAgIC0xLCAgIDE0MiwgICAgLTEsICAgIDQ1LAotICAgICAgLTEsICAgIDUwLCAgICAt
MSwgICAgOTksICAgIC0xLCAgICA1MywgICAxMDgsICAgIC0xLCAgICA1NCwgICAxMDgsCi0gICAg
ICAtMSwgICAxMDksICAgMTA4LCAgICAtMSwgICAgODYsICAgIC0xLCAgICA4NCwgICAgLTEsICAg
IDgzLCAgICAtMSwKLSAgICAgMTA4LCAgICAtMSwgICAxMTAsICAgIDg3LCAgIDEwOCwgICAgLTEs
ICAgMTEwLCAgICA4OCwgICAxMDgsICAgIC0xLAotICAgICAxMTAsICAgIC0xLCAgIDExMSwgICAg
ODYsICAgMTEwLCAgICAtMSwgICAxMTEsICAgIDg0LCAgIDExMCwgICAgLTEsCi0gICAgIDExMSwg
ICAgLTEsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDkwLCAgIDExMiwgICAgLTEsICAgMTEzLCAg
ICA5MSwKLSAgICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDU1LCAgIDExMiwgICAgLTEsICAgMTEz
LCAgICA1NiwgICAxMTIsICAgIC0xLAotICAgICAxMTMsICAgIC0xLCAgIDExNCwgICAgNTcsICAg
MTEzLCAgICAtMSwgICAxMTQsICAgIDU4LCAgIDExMywgICAgLTEsCi0gICAgIDExNCwgICAgLTEs
ICAgMTE1LCAgICAtMSwgICAxMTYsICAgIC0xLCAgIDExNywgICAgLTEsICAgMTE4LCAgICA1OSwK
LSAgICAgMTE3LCAgICAtMSwgICAxMTgsICAgIC0xLCAgIDExOSwgICAgNjEsICAgMTE4LCAgICAt
MSwgICAxMTksICAgIC0xLAotICAgICAxMjAsICAgIDYwLCAgIDExOSwgICAgLTEsICAgMTIwLCAg
ICAtMSwgICAxMjAsICAgIDk1LCAgIDEyNCwgICAgODAsCi0gICAgIDEyMiwgICAgLTEsICAgMTIx
LCAgICAtMSwgICAxMDgsICAgMTIzLCAgIDEyMiwgICAgLTEsICAgIDgxLCAgICAtMSwKLSAgICAg
IDYyLCAgICAtMSwgICAgNjMsICAgIC0xLCAgICA2NCwgICAgLTEsICAgIDcxLCAgICAtMSwgICAx
MjIsICAgIC0xLAotICAgICAxMjQsICAgIDc5LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwg
ICAxMjcsICAgIDgyLCAgICAtMSwgICAxMzUsCi0gICAgICA4MiwgICAgLTEsICAgICA3LCAgIDE0
MCwgICAxNDEsICAgIDgyLCAgICAtMSwgICAxMjgsICAgIDczLCAgICAtMSwKLSAgICAgMTMwLCAg
ICAtMSwgICAxMjksICAgIC0xLCAgIDEzMCwgICAxMzIsICAgIC0xLCAgIDEyOSwgICAgNzksICAg
MTMyLAotICAgICAgLTEsICAgMTM3LCAgICA0NSwgICAgNzIsICAgIC0xLCAgIDEzOSwgICAgNDUs
ICAgIC0xLCAgIDEzOSwgICAgNDUsCi0gICAgICA3NCwgICAxMjUsICAgIDc1LCAgICAtMSwgICAx
MzgsICAgMTMzLCAgIDEzMSwgICAgLTEsICAgMTMzLCAgIDEzMSwKLSAgICAgIC0xLCAgIDEzOCwg
ICAxMzMsICAgMTM0LCAgICAtMSwgICAxMzMsICAgMTM0LCAgICAtMSwgICAgLTEsICAgIDMzLAot
ICAgICAgLTEsICAgIDM0LCAgICAtMSwgICAgMzUsICAgIC0xLCAgIDEzOSwgICAgLTEsICAgMTM2
LCAgICAtMSwgICAxMzUsCi0gICAgICA3OSwgICAgNDUsICAgIC0xLCAgIDEzNSwgICAgNzksICAg
IDQ1LCAgICA3NCwgICAgNzUsICAgIC0xLCAgIDEzNSwKLSAgICAgIDc5LCAgICA0NSwgICAgNzQs
ICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM1LCAgICA3OSwgICAgNDUsICAgIDgxLAotICAgICAx
NTAsICAgIC0xLCAgIDEzNywgICAgLTEsICAgMTM3LCAgICA0NSwgICAgLTEsICAgMTM3LCAgICA0
NSwgICAgNzQsCi0gICAgICA3NSwgICAgLTEsICAgMTM3LCAgICA0NSwgICAgNzQsICAgMTI1LCAg
ICA3NSwgICAgLTEsICAgMTM3LCAgICA0NSwKLSAgICAgIDgxLCAgIDE1MCwgICAgLTEsICAgICAz
LCAgICA0NSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAxMzgsICAgMTM5LAotICAgICAgLTEsICAg
ICA5LCAgICAtMSwgICAgIDgsICAgIC0xLCAgICAzNywgICAgLTEsICAgICAzLCAgICAzNywgICAg
LTEsCi0gICAgICAzNiwgICAgLTEsICAgMTQxLCAgICAtMSwgICAxNDAsICAgMTQxLCAgICAtMSwg
ICAgIDQsICAgIC0xLCAgICAgNSwKLSAgICAgIC0xLCAgICAgNiwgICAgLTEsICAgMTQyLCAgICAt
MSwgICAxNDIsICAgIDc0LCAgIDEyNSwgICAgNzUsICAgIC0xLAotICAgICAgMzksICAgIC0xLCAg
ICAxMSwgICAgLTEsICAgIDEyLCAgICAtMSwgICAgMTAsICAgIC0xLCAgICAyNywgICAgLTEsCi0g
ICAgICAyOCwgICAgLTEsICAgIDI5LCAgICAtMSwgICAgMjEsICAgIC0xLCAgICAyMiwgICAgLTEs
ICAgIDIzLCAgICAtMSwKLSAgICAgIDI0LCAgICAtMSwgICAgMjUsICAgIC0xLCAgICAyNiwgICAg
LTEsICAgIDMwLCAgICAtMSwgICAgMzEsICAgIC0xLAotICAgICAgMzIsICAgIC0xLCAgICA0MSwg
ICAgLTEsICAgIDQyLCAgICAtMSwgICAgNDMsICAgIC0xLCAgICA0NCwgICAgLTEsCi0gICAgIDE0
MywgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgLTEsICAgIDM4LCAgICA0NSwgICAgNzYsICAgMTQ0
LCAgIDE0NiwKLSAgICAgIDc3LCAgICAtMSwgICAgLTEsICAgIDM4LCAgICA3NiwgICAxNDUsICAg
MTQ2LCAgICA3NywgICAgLTEsICAgMTQ3LAotICAgICAgLTEsICAgMTQ2LCAgIDE0NywgICAgLTEs
ICAgMTM5LCAgIDE0OCwgICAgODIsICAgIC0xLCAgIDE0OSwgICAgLTEsCi0gICAgIDE0OCwgICAg
NzksICAgMTQ5LCAgICAtMSwgICAgNDUsICAgIC0xLCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3
NSwKLSAgICAgIC0xLCAgIDEyMiwgICAgLTEsICAgMTI2LCAgICAtMSwgICAxNTQsICAgIC0xLCAg
IDE1MywgICAgLTEsICAgMTUxLAotICAgICAgLTEsICAgMTYzLCAgICAtMSwgICAxNjQsICAgIC0x
LCAgIDE2NywgICAgLTEsICAgMTc0LCAgICAtMSwgICAgNzYsCi0gICAgICA3NywgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgNzYsICAgMTU1LCAgIDE2MiwgICAxNTYsICAgIDc3LCAgICAtMSwKLSAg
ICAgMTYxLCAgICAtMSwgICAxNTMsICAgIC0xLCAgICAtMSwgICAxNTksICAgMTYxLCAgICAtMSwg
ICAgLTEsICAgMTYwLAotICAgICAxNTMsICAgIC0xLCAgICA3NiwgICAgNzcsICAgIC0xLCAgICA3
NiwgICAxNjIsICAgIDc3LCAgICAtMSwgICAxNTIsCi0gICAgICAtMSwgICAxNjIsICAgMTUyLCAg
ICAtMSwgICAgODIsICAgIC0xLCAgIDEyNCwgICAgODIsICAgIC0xLCAgICAxOCwKLSAgICAgIDcy
LCAgIDEyNCwgICAgNzMsICAgMTY1LCAgICAtMSwgICAxNTgsICAgIDE2LCAgIDE1OCwgICAgLTEs
ICAgMTU4LAotICAgICAgLTEsICAgMTI0LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA4MSwgICAx
NTAsICAgIC0xLCAgICAtMSwgICAgNDAsCi0gICAgICA3MiwgICAxNjgsICAgMTY2LCAgICA3Mywg
ICAxNTcsICAgIC0xLCAgICAtMSwgICAgMTUsICAgMTY5LCAgIDE1OCwKLSAgICAgIDQwLCAgICA3
MiwgICAxMjQsICAgIDczLCAgICA4MiwgICAgLTEsICAgIC0xLCAgICAxNywgICAgNzIsICAgMTcw
LAotICAgICAxNzEsICAgMTczLCAgICA3MywgICAxNTcsICAgIC0xLCAgIDE2MywgICAgLTEsICAg
MTUxLCAgICAtMSwgICAxNjYsCi0gICAgICAtMSwgICAgLTEsICAgMTcyLCAgICA4MiwgICAgLTEs
ICAgMTcyLCAgICA4MiwgICAxMjQsICAgIC0xLCAgICAxNCwKLSAgICAgIDgyLCAgICAtMSwgICAg
MTMsICAgIDgyLCAgICAtMSwgICAgMjAsICAgIDgyLCAgICAtMSwgICAgMjAsICAgMTI0LAotICAg
ICAgODIsICAgIC0xLCAgICAxOSwgICAgODIsICAgIC0xLCAgIDE3NiwgICAgLTEsICAgMTc1LCAg
IDE3NiwgICAgLTEsCi0gICAgIDE3NywgICAgLTEsICAgMTI2LCAgICAtMSwgICAgLTEsICAgMTI3
LCAgIDE3OCwgICAxNjEsICAgIC0xCisgICAgIDE3NSwgICAgIDAsICAgIC0xLCAgICA0NSwgICAg
LTEsICAgIDQ2LCAgICAtMSwgICAgNDUsICAgIC0xLCAgICA5NywKKyAgICAgIC0xLCAgICA0OCwg
ICAgLTEsICAgIDQ3LCAgICAtMSwgICAgNDksICAgIC0xLCAgICA3MSwgICAxMjQsICAgIDcyLAor
ICAgICAgLTEsICAgIDk4LCAgICAtMSwgICAgOTksICAgIDczLCAgIDEwMCwgICAgNzQsICAgIC0x
LCAgIDEwMSwgICAgLTEsCisgICAgICA5OSwgICAgNzcsICAgIDk2LCAgICAtMSwgICAgOTksICAg
IDUyLCAgICAtMSwgICAgOTksICAgIDUzLCAgICAtMSwKKyAgICAgMTI0LCAgICAtMSwgICAxMDIs
ICAgIC0xLCAgIDEwMywgICAgLTEsICAgIDk5LCAgICA3NywgICAxMDMsICAgIC0xLAorICAgICAx
MDUsICAgIDcyLCAgICAtMSwgICAxMDQsICAgIDcyLCAgICAtMSwgICAxMDYsICAgIDM5LCAgICAt
MSwgICAxMDYsCisgICAgICAtMSwgICAxMDYsICAgMTIyLCAgICAtMSwgICAxMDUsICAgIDc4LCAg
IDEyMiwgICAgLTEsICAgMTA3LCAgICA3MSwKKyAgICAgIC0xLCAgIDE0MiwgICAgLTEsICAgIDQ1
LCAgICAtMSwgICAgOTksICAgIC0xLCAgICA1MiwgICAxMDgsICAgIC0xLAorICAgICAgNTMsICAg
MTA4LCAgICAtMSwgICAxMDksICAgMTA4LCAgICAtMSwgICAgODUsICAgIC0xLCAgICA4MywgICAg
LTEsCisgICAgICA4MiwgICAgLTEsICAgMTA4LCAgICAtMSwgICAxMTAsICAgIDg2LCAgIDEwOCwg
ICAgLTEsICAgMTEwLCAgICA4NywKKyAgICAgMTA4LCAgICAtMSwgICAxMTAsICAgIC0xLCAgIDEx
MSwgICAgODUsICAgMTEwLCAgICAtMSwgICAxMTEsICAgIDgzLAorICAgICAxMTAsICAgIC0xLCAg
IDExMSwgICAgLTEsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDg5LCAgIDExMiwgICAgLTEsCisg
ICAgIDExMywgICAgOTAsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDU0LCAgIDExMiwgICAgLTEs
ICAgMTEzLCAgICA1NSwKKyAgICAgMTEyLCAgICAtMSwgICAxMTMsICAgIC0xLCAgIDExNCwgICAg
NTYsICAgMTEzLCAgICAtMSwgICAxMTQsICAgIDU3LAorICAgICAxMTMsICAgIC0xLCAgIDExNCwg
ICAgLTEsICAgMTE1LCAgICAtMSwgICAxMTYsICAgIC0xLCAgIDExNywgICAgLTEsCisgICAgIDEx
OCwgICAgNTgsICAgMTE3LCAgICAtMSwgICAxMTgsICAgIC0xLCAgIDExOSwgICAgNjAsICAgMTE4
LCAgICAtMSwKKyAgICAgMTE5LCAgICAtMSwgICAxMjAsICAgIDU5LCAgIDExOSwgICAgLTEsICAg
MTIwLCAgICAtMSwgICAxMjAsICAgIDk0LAorICAgICAxMjQsICAgIDc5LCAgIDEyMiwgICAgLTEs
ICAgMTIxLCAgICAtMSwgICAxMDgsICAgMTIzLCAgIDEyMiwgICAgLTEsCisgICAgICA4MCwgICAg
LTEsICAgIDYxLCAgICAtMSwgICAgNjIsICAgIC0xLCAgICA2MywgICAgLTEsICAgIDcwLCAgICAt
MSwKKyAgICAgMTIyLCAgICAtMSwgICAxMjQsICAgIDc4LCAgIDEyMiwgICAgLTEsICAgMTIxLCAg
ICAtMSwgICAxMjcsICAgIDgxLAorICAgICAgLTEsICAgMTM1LCAgICA4MSwgICAgLTEsICAgICA3
LCAgIDE0MCwgICAxNDEsICAgIDgxLCAgICAtMSwgICAxMjgsCisgICAgICA3MiwgICAgLTEsICAg
MTMwLCAgICAtMSwgICAxMjksICAgIC0xLCAgIDEzMCwgICAxMzIsICAgIC0xLCAgIDEyOSwKKyAg
ICAgIDc4LCAgIDEzMiwgICAgLTEsICAgMTM3LCAgICA0NSwgICAgNzEsICAgIC0xLCAgIDEzOSwg
ICAgOTYsICAgIC0xLAorICAgICAxMzksICAgIDk2LCAgICA3MywgICAxMjUsICAgIDc0LCAgICAt
MSwgICAxMzgsICAgMTMzLCAgIDEzMSwgICAgLTEsCisgICAgIDEzMywgICAxMzEsICAgIC0xLCAg
IDEzOCwgICAxMzMsICAgMTM0LCAgICAtMSwgICAxMzMsICAgMTM0LCAgICAtMSwKKyAgICAgIC0x
LCAgICAzMywgICAgLTEsICAgIDM0LCAgICAtMSwgICAgMzUsICAgIC0xLCAgIDEzOSwgICAgLTEs
ICAgMTM2LAorICAgICAgLTEsICAgMTM1LCAgICA3OCwgICAgOTYsICAgIC0xLCAgIDEzNSwgICAg
NzgsICAgIDk2LCAgICA3MywgICAgNzQsCisgICAgICAtMSwgICAxMzUsICAgIDc4LCAgICA5Niwg
ICAgNzMsICAgMTI1LCAgICA3NCwgICAgLTEsICAgMTM1LCAgICA3OCwKKyAgICAgIDk2LCAgICA4
MCwgICAxNTAsICAgIC0xLCAgIDEzNywgICAgLTEsICAgMTM3LCAgICA5NiwgICAgLTEsICAgMTM3
LAorICAgICAgOTYsICAgIDczLCAgICA3NCwgICAgLTEsICAgMTM3LCAgICA5NiwgICAgNzMsICAg
MTI1LCAgICA3NCwgICAgLTEsCisgICAgIDEzNywgICAgOTYsICAgIDgwLCAgIDE1MCwgICAgLTEs
ICAgICAzLCAgICA0NSwgICAgLTEsICAgMTM5LCAgICAtMSwKKyAgICAgMTM4LCAgIDEzOSwgICAg
LTEsICAgICA5LCAgICAtMSwgICAgIDgsICAgIC0xLCAgICAzNywgICAgLTEsICAgICAzLAorICAg
ICAgMzcsICAgIC0xLCAgICAzNiwgICAgLTEsICAgMTQxLCAgICAtMSwgICAxNDAsICAgMTQxLCAg
ICAtMSwgICAgIDQsCisgICAgICAtMSwgICAgIDUsICAgIC0xLCAgICAgNiwgICAgLTEsICAgMTQy
LCAgICAtMSwgICAxNDIsICAgIDczLCAgIDEyNSwKKyAgICAgIDc0LCAgICAtMSwgICAgMzksICAg
IC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAgICAtMSwgICAgMTAsICAgIC0xLAorICAgICAgMjcs
ICAgIC0xLCAgICAyOCwgICAgLTEsICAgIDI5LCAgICAtMSwgICAgMjEsICAgIC0xLCAgICAyMiwg
ICAgLTEsCisgICAgICAyMywgICAgLTEsICAgIDI0LCAgICAtMSwgICAgMjUsICAgIC0xLCAgICAy
NiwgICAgLTEsICAgIDMwLCAgICAtMSwKKyAgICAgIDMxLCAgICAtMSwgICAgMzIsICAgIC0xLCAg
ICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAgNDMsICAgIC0xLAorICAgICAgNDQsICAgIC0x
LCAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgLTEsICAgIDM4LCAgICA5NiwgICAgNzUs
CisgICAgIDE0NCwgICAxNDYsICAgIDc2LCAgICAtMSwgICAgLTEsICAgIDM4LCAgICA3NSwgICAx
NDUsICAgMTQ2LCAgICA3NiwKKyAgICAgIC0xLCAgIDE0NywgICAgLTEsICAgMTQ2LCAgIDE0Nywg
ICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODEsICAgIC0xLAorICAgICAxNDksICAgIC0xLCAgIDE0
OCwgICAgNzgsICAgMTQ5LCAgICAtMSwgICAgOTYsICAgIC0xLCAgICA5NiwgICAgNzMsCisgICAg
IDEyNSwgICAgNzQsICAgIC0xLCAgIDEyMiwgICAgLTEsICAgMTI2LCAgICAtMSwgICAxNTQsICAg
IC0xLCAgIDE1MywKKyAgICAgIC0xLCAgIDE1MSwgICAgLTEsICAgMTYzLCAgICAtMSwgICAxNjQs
ICAgIC0xLCAgIDE2NywgICAgLTEsICAgMTc0LAorICAgICAgLTEsICAgIDc1LCAgICA3NiwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgMTU1LCAgIDE2MiwgICAxNTYsCisgICAgICA3Niwg
ICAgLTEsICAgMTYxLCAgICAtMSwgICAxNTMsICAgIC0xLCAgICAtMSwgICAxNTksICAgMTYxLCAg
ICAtMSwKKyAgICAgIC0xLCAgIDE2MCwgICAxNTMsICAgIC0xLCAgICA3NSwgICAgNzYsICAgIC0x
LCAgICA3NSwgICAxNjIsICAgIDc2LAorICAgICAgLTEsICAgMTUyLCAgICAtMSwgICAxNjIsICAg
MTUyLCAgICAtMSwgICAgODEsICAgIC0xLCAgIDEyNCwgICAgODEsCisgICAgICAtMSwgICAgMTgs
ICAgIDcxLCAgIDEyNCwgICAgNzIsICAgMTY1LCAgICAtMSwgICAxNTgsICAgIDE2LCAgIDE1OCwK
KyAgICAgIC0xLCAgIDE1OCwgICAgLTEsICAgMTI0LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICA4
MCwgICAxNTAsICAgIC0xLAorICAgICAgLTEsICAgIDQwLCAgICA3MSwgICAxNjgsICAgMTY2LCAg
ICA3MiwgICAxNTcsICAgIC0xLCAgICAtMSwgICAgMTUsCisgICAgIDE2OSwgICAxNTgsICAgIDQw
LCAgICA3MSwgICAxMjQsICAgIDcyLCAgICA4MSwgICAgLTEsICAgIC0xLCAgICAxNywKKyAgICAg
IDcxLCAgIDE3MCwgICAxNzEsICAgMTczLCAgICA3MiwgICAxNTcsICAgIC0xLCAgIDE2MywgICAg
LTEsICAgMTUxLAorICAgICAgLTEsICAgMTY2LCAgICAtMSwgICAgLTEsICAgMTcyLCAgICA4MSwg
ICAgLTEsICAgMTcyLCAgICA4MSwgICAxMjQsCisgICAgICAtMSwgICAgMTQsICAgIDgxLCAgICAt
MSwgICAgMTMsICAgIDgxLCAgICAtMSwgICAgMjAsICAgIDgxLCAgICAtMSwKKyAgICAgIDIwLCAg
IDEyNCwgICAgODEsICAgIC0xLCAgICAxOSwgICAgODEsICAgIC0xLCAgIDE3NiwgICAgLTEsICAg
MTc1LAorICAgICAxNzYsICAgIC0xLCAgIDE3NywgICAgLTEsICAgMTI2LCAgICAtMSwgICAgLTEs
ICAgMTI3LCAgIDE3OCwgICAxNjEsCisgICAgICAtMQogfTsKIAogLyogWVlSTElORVtZWU5dIC0t
IHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVyIFlZTiB3YXMgZGVmaW5lZC4gICovCiBzdGF0
aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXJsaW5lW10gPQogewotICAgICAgIDAsICAgMTY4LCAg
IDE2OCwgICAyMDMsICAgMjA2LCAgIDIxOSwgICAyMjQsICAgMjI5LCAgIDIzNSwgICAyMzgsCi0g
ICAgIDMxNywgICAzMjAsICAgNDIxLCAgIDQzMSwgICA0NDQsICAgNDUyLCAgIDU1MiwgICA1NTUs
ICAgNTYzLCAgIDU2NywKLSAgICAgNTc0LCAgIDU3OCwgICA1ODUsICAgNTkxLCAgIDYwMCwgICA2
MDgsICAgNjYzLCAgIDY3MCwgICA2ODAsICAgNjgzLAotICAgICA2OTMsICAgNzAzLCAgIDcyNCwg
ICA3MjUsICAgNzI2LCAgIDczMSwgICA3MzIsICAgNzQxLCAgIDc1MywgICA3NTQsCi0gICAgIDc2
MiwgICA3NzMsICAgNzc3LCAgIDc3OCwgICA3ODgsICAgNzk4LCAgIDgwOCwgICA4MjEsICAgODIy
LCAgIDgzMiwKLSAgICAgODQ1LCAgIDg0OSwgICA4NTMsICAgODU3LCAgIDg1OCwgICA4NzEsICAg
ODcyLCAgIDg4NSwgICA4ODYsICAgODk5LAotICAgICA5MDAsICAgOTE3LCAgIDkxOCwgICA5MzEs
ICAgOTMyLCAgIDkzMywgICA5MzQsICAgOTM1LCAgIDkzOSwgICA5NDIsCi0gICAgIDk1MywgICA5
NjEsICAgOTg4LCAgIDk5MywgIDEwMDcsICAxMDQ1LCAgMTA0OCwgIDEwNTUsICAxMDYzLCAgMTA4
NCwKLSAgICAxMTA1LCAgMTExNiwgIDExNDUsICAxMTUwLCAgMTE2MCwgIDExNjUsICAxMTc1LCAg
MTE3OCwgIDExODEsICAxMTg0LAotICAgIDExOTAsICAxMTk3LCAgMTIwMCwgIDEyMjIsICAxMjQw
LCAgMTI2NCwgIDEyODcsICAxMjkxLCAgMTMwOSwgIDEzMTcsCi0gICAgMTM0OSwgIDEzNjksICAx
NDU4LCAgMTQ2NywgIDE0OTAsICAxNDkzLCAgMTQ5OSwgIDE1MDcsICAxNTE1LCAgMTUyMywKLSAg
ICAxNTMzLCAgMTU0MCwgIDE1NDMsICAxNTQ2LCAgMTU1MiwgIDE1NTUsICAxNTcwLCAgMTU3NCwg
IDE1NzgsICAxNTgyLAotICAgIDE1OTEsICAxNTk2LCAgMTYwMSwgIDE2MDYsICAxNjExLCAgMTYx
NiwgIDE2MjEsICAxNjI2LCAgMTYzMSwgIDE2MzYsCi0gICAgMTY0MiwgIDE2NDgsICAxNjU0LCAg
MTY1OSwgIDE2NjQsICAxNjczLCAgMTY4MiwgIDE2ODcsICAxNzAwLCAgMTcwMCwKLSAgICAxNzE0
LCAgMTcxNCwgIDE3MjMsICAxNzI2LCAgMTc0MSwgIDE3NzcsICAxNzgxLCAgMTc4NywgIDE3OTUs
ICAxODExLAotICAgIDE4MTUsICAxODE5LCAgMTgyMCwgIDE4MjYsICAxODI3LCAgMTgyOCwgIDE4
MjksICAxODMwLCAgMTgzNCwgIDE4MzUsCi0gICAgMTgzNSwgIDE4MzUsICAxODQ1LCAgMTg0Niwg
IDE4NTAsICAxODUwLCAgMTg1MSwgIDE4NTEsICAxODU2LCAgMTg1OSwKLSAgICAxODY5LCAgMTg3
MiwgIDE4NzgsICAxODc5LCAgMTg4MywgIDE4OTEsICAxODk1LCAgMTkwNSwgIDE5MTAsICAxOTI3
LAotICAgIDE5MjcsICAxOTMyLCAgMTkzMiwgIDE5MzksICAxOTM5LCAgMTk0NywgIDE5NTAsICAx
OTU2LCAgMTk1OSwgIDE5NjUsCi0gICAgMTk2OSwgIDE5NzYsICAxOTgzLCAgMTk5MCwgIDE5OTcs
ICAyMDA4LCAgMjAxNywgIDIwMjEsICAyMDI4LCAgMjAzMSwKLSAgICAyMDM3LCAgMjAzNworICAg
ICAgIDAsICAgMTc5LCAgIDE3OSwgICAxODAsICAgMTgzLCAgIDIyNiwgICAyMjksICAgMjQyLCAg
IDI0NywgICAyNTIsCisgICAgIDI1OCwgICAyNjEsICAgMzM2LCAgIDMzOSwgICA0MzQsICAgNDQ0
LCAgIDQ1NywgICA0NjUsICAgNTY1LCAgIDU2OCwKKyAgICAgNTc2LCAgIDU3OSwgICA1ODUsICAg
NTg5LCAgIDU5NiwgICA2MDIsICAgNjExLCAgIDYxOSwgICA2NzQsICAgNjg0LAorICAgICA2ODcs
ICAgNjk3LCAgIDcwNywgICA3MjgsICAgNzI5LCAgIDczMCwgICA3MzUsICAgNzM2LCAgIDc0NCwg
ICA3NTUsCisgICAgIDc1NiwgICA3NjQsICAgNzc1LCAgIDc3OSwgICA3ODAsICAgNzkwLCAgIDgw
MCwgICA4MTAsICAgODIzLCAgIDgyNCwKKyAgICAgODM0LCAgIDg0NywgICA4NTEsICAgODU1LCAg
IDg1OSwgICA4NjAsICAgODczLCAgIDg3NCwgICA4ODcsICAgODg4LAorICAgICA5MDEsICAgOTAy
LCAgIDkxOSwgICA5MjAsICAgOTMzLCAgIDkzNCwgICA5MzUsICAgOTM2LCAgIDkzNywgICA5NDEs
CisgICAgIDk0NCwgICA5NTUsICAgOTYzLCAgIDk5MCwgICA5OTUsICAxMDA5LCAgMTA0NiwgIDEw
NDksICAxMDU2LCAgMTA2NCwKKyAgICAxMDg1LCAgMTEwNiwgIDExMTYsICAxMTQ0LCAgMTE0OSwg
IDExNTksICAxMTY0LCAgMTE3NCwgIDExNzcsICAxMTgwLAorICAgIDExODMsICAxMTg5LCAgMTE5
NiwgIDExOTksICAxMjIxLCAgMTIzOSwgIDEyNjMsICAxMjg2LCAgMTI5MCwgIDEzMDgsCisgICAg
MTMxNiwgIDEzNDgsICAxMzY4LCAgMTM4OSwgIDEzOTgsICAxNDIxLCAgMTQyNCwgIDE0MzAsICAx
NDM4LCAgMTQ0NiwKKyAgICAxNDU0LCAgMTQ2NCwgIDE0NzEsICAxNDc0LCAgMTQ3NywgIDE0ODMs
ICAxNDg2LCAgMTUwMSwgIDE1MDUsICAxNTA5LAorICAgIDE1MTMsICAxNTE3LCAgMTUyMiwgIDE1
MjcsICAxNTMyLCAgMTUzNywgIDE1NDIsICAxNTQ3LCAgMTU1MiwgIDE1NTcsCisgICAgMTU2Miwg
IDE1NjcsICAxNTcyLCAgMTU3NywgIDE1ODEsICAxNTg1LCAgMTU5MywgIDE2MDEsICAxNjA1LCAg
MTYxOCwKKyAgICAxNjE4LCAgMTYzMiwgIDE2MzIsICAxNjQxLCAgMTY0NCwgIDE2NjAsICAxNjkz
LCAgMTY5NywgIDE3MDMsICAxNzEwLAorICAgIDE3MjUsICAxNzI5LCAgMTczMywgIDE3MzQsICAx
NzQwLCAgMTc0MSwgIDE3NDIsICAxNzQzLCAgMTc0NCwgIDE3NDgsCisgICAgMTc0OSwgIDE3NDks
ICAxNzQ5LCAgMTc1OSwgIDE3NjAsICAxNzY0LCAgMTc2NCwgIDE3NjUsICAxNzY1LCAgMTc3MCwK
KyAgICAxNzczLCAgMTc4MywgIDE3ODYsICAxNzkyLCAgMTc5MywgIDE3OTcsICAxODA1LCAgMTgw
OSwgIDE4MTksICAxODI0LAorICAgIDE4NDEsICAxODQxLCAgMTg0NiwgIDE4NDYsICAxODUzLCAg
MTg1MywgIDE4NjEsICAxODY0LCAgMTg3MCwgIDE4NzMsCisgICAgMTg3OSwgIDE4ODMsICAxODkw
LCAgMTg5NywgIDE5MDQsICAxOTExLCAgMTkyMiwgIDE5MzEsICAxOTM1LCAgMTk0MiwKKyAgICAx
OTQ1LCAgMTk1MSwgIDE5NTEKIH07CiAjZW5kaWYKIAotI2lmIFlZREVCVUcgfHwgWVlFUlJPUl9W
RVJCT1NFIHx8IFlZVE9LRU5fVEFCTEUKKyNpZiBZWURFQlVHIHx8IFlZRVJST1JfVkVSQk9TRSB8
fCAwCiAvKiBZWVROQU1FW1NZTUJPTC1OVU1dIC0tIFN0cmluZyBuYW1lIG9mIHRoZSBzeW1ib2wg
U1lNQk9MLU5VTS4KICAgIEZpcnN0LCB0aGUgdGVybWluYWxzLCB0aGVuLCBzdGFydGluZyBhdCBZ
WU5UT0tFTlMsIG5vbnRlcm1pbmFscy4gICovCiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgeXl0
bmFtZVtdID0KQEAgLTc4OCwxNSArNzUwLDE1IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCB5
eXRuYW1lW10gPQogICAiTUFUUklYMyIsICJNQVRSSVg0IiwgIklOX1FVQUwiLCAiT1VUX1FVQUwi
LCAiSU5PVVRfUVVBTCIsICJVTklGT1JNIiwKICAgIlZBUllJTkciLCAiU1RSVUNUIiwgIlZPSURf
VFlQRSIsICJXSElMRSIsICJTQU1QTEVSMkQiLCAiU0FNUExFUkNVQkUiLAogICAiU0FNUExFUl9F
WFRFUk5BTF9PRVMiLCAiU0FNUExFUjJEUkVDVCIsICJJREVOVElGSUVSIiwgIlRZUEVfTkFNRSIs
Ci0gICJGTE9BVENPTlNUQU5UIiwgIklOVENPTlNUQU5UIiwgIkJPT0xDT05TVEFOVCIsICJGSUVM
RF9TRUxFQ1RJT04iLAotICAiTEVGVF9PUCIsICJSSUdIVF9PUCIsICJJTkNfT1AiLCAiREVDX09Q
IiwgIkxFX09QIiwgIkdFX09QIiwgIkVRX09QIiwKLSAgIk5FX09QIiwgIkFORF9PUCIsICJPUl9P
UCIsICJYT1JfT1AiLCAiTVVMX0FTU0lHTiIsICJESVZfQVNTSUdOIiwKLSAgIkFERF9BU1NJR04i
LCAiTU9EX0FTU0lHTiIsICJMRUZUX0FTU0lHTiIsICJSSUdIVF9BU1NJR04iLCAiQU5EX0FTU0lH
TiIsCi0gICJYT1JfQVNTSUdOIiwgIk9SX0FTU0lHTiIsICJTVUJfQVNTSUdOIiwgIkxFRlRfUEFS
RU4iLCAiUklHSFRfUEFSRU4iLAotICAiTEVGVF9CUkFDS0VUIiwgIlJJR0hUX0JSQUNLRVQiLCAi
TEVGVF9CUkFDRSIsICJSSUdIVF9CUkFDRSIsICJET1QiLAotICAiQ09NTUEiLCAiQ09MT04iLCAi
RVFVQUwiLCAiU0VNSUNPTE9OIiwgIkJBTkciLCAiREFTSCIsICJUSUxERSIsICJQTFVTIiwKLSAg
IlNUQVIiLCAiU0xBU0giLCAiUEVSQ0VOVCIsICJMRUZUX0FOR0xFIiwgIlJJR0hUX0FOR0xFIiwg
IlZFUlRJQ0FMX0JBUiIsCi0gICJDQVJFVCIsICJBTVBFUlNBTkQiLCAiUVVFU1RJT04iLCAiJGFj
Y2VwdCIsICJ2YXJpYWJsZV9pZGVudGlmaWVyIiwKKyAgIkZMT0FUQ09OU1RBTlQiLCAiSU5UQ09O
U1RBTlQiLCAiQk9PTENPTlNUQU5UIiwgIkxFRlRfT1AiLCAiUklHSFRfT1AiLAorICAiSU5DX09Q
IiwgIkRFQ19PUCIsICJMRV9PUCIsICJHRV9PUCIsICJFUV9PUCIsICJORV9PUCIsICJBTkRfT1Ai
LAorICAiT1JfT1AiLCAiWE9SX09QIiwgIk1VTF9BU1NJR04iLCAiRElWX0FTU0lHTiIsICJBRERf
QVNTSUdOIiwKKyAgIk1PRF9BU1NJR04iLCAiTEVGVF9BU1NJR04iLCAiUklHSFRfQVNTSUdOIiwg
IkFORF9BU1NJR04iLCAiWE9SX0FTU0lHTiIsCisgICJPUl9BU1NJR04iLCAiU1VCX0FTU0lHTiIs
ICJMRUZUX1BBUkVOIiwgIlJJR0hUX1BBUkVOIiwgIkxFRlRfQlJBQ0tFVCIsCisgICJSSUdIVF9C
UkFDS0VUIiwgIkxFRlRfQlJBQ0UiLCAiUklHSFRfQlJBQ0UiLCAiRE9UIiwgIkNPTU1BIiwgIkNP
TE9OIiwKKyAgIkVRVUFMIiwgIlNFTUlDT0xPTiIsICJCQU5HIiwgIkRBU0giLCAiVElMREUiLCAi
UExVUyIsICJTVEFSIiwgIlNMQVNIIiwKKyAgIlBFUkNFTlQiLCAiTEVGVF9BTkdMRSIsICJSSUdI
VF9BTkdMRSIsICJWRVJUSUNBTF9CQVIiLCAiQ0FSRVQiLAorICAiQU1QRVJTQU5EIiwgIlFVRVNU
SU9OIiwgIiRhY2NlcHQiLCAiaWRlbnRpZmllciIsICJ2YXJpYWJsZV9pZGVudGlmaWVyIiwKICAg
InByaW1hcnlfZXhwcmVzc2lvbiIsICJwb3N0Zml4X2V4cHJlc3Npb24iLCAiaW50ZWdlcl9leHBy
ZXNzaW9uIiwKICAgImZ1bmN0aW9uX2NhbGwiLCAiZnVuY3Rpb25fY2FsbF9vcl9tZXRob2QiLCAi
ZnVuY3Rpb25fY2FsbF9nZW5lcmljIiwKICAgImZ1bmN0aW9uX2NhbGxfaGVhZGVyX25vX3BhcmFt
ZXRlcnMiLApAQCAtODE1LDE2ICs3NzcsMTYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHl5
dG5hbWVbXSA9CiAgICJpbml0X2RlY2xhcmF0b3JfbGlzdCIsICJzaW5nbGVfZGVjbGFyYXRpb24i
LCAiZnVsbHlfc3BlY2lmaWVkX3R5cGUiLAogICAidHlwZV9xdWFsaWZpZXIiLCAidHlwZV9zcGVj
aWZpZXIiLCAicHJlY2lzaW9uX3F1YWxpZmllciIsCiAgICJ0eXBlX3NwZWNpZmllcl9ub19wcmVj
IiwgInR5cGVfc3BlY2lmaWVyX25vbmFycmF5IiwgInN0cnVjdF9zcGVjaWZpZXIiLAotICAiQDEi
LCAiQDIiLCAic3RydWN0X2RlY2xhcmF0aW9uX2xpc3QiLCAic3RydWN0X2RlY2xhcmF0aW9uIiwK
KyAgIiRAMSIsICIkQDIiLCAic3RydWN0X2RlY2xhcmF0aW9uX2xpc3QiLCAic3RydWN0X2RlY2xh
cmF0aW9uIiwKICAgInN0cnVjdF9kZWNsYXJhdG9yX2xpc3QiLCAic3RydWN0X2RlY2xhcmF0b3Ii
LCAiaW5pdGlhbGl6ZXIiLAogICAiZGVjbGFyYXRpb25fc3RhdGVtZW50IiwgInN0YXRlbWVudCIs
ICJzaW1wbGVfc3RhdGVtZW50IiwKLSAgImNvbXBvdW5kX3N0YXRlbWVudCIsICJAMyIsICJANCIs
ICJzdGF0ZW1lbnRfbm9fbmV3X3Njb3BlIiwKLSAgInN0YXRlbWVudF93aXRoX3Njb3BlIiwgIkA1
IiwgIkA2IiwgImNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUiLAorICAiY29tcG91bmRf
c3RhdGVtZW50IiwgIiRAMyIsICIkQDQiLCAic3RhdGVtZW50X25vX25ld19zY29wZSIsCisgICJz
dGF0ZW1lbnRfd2l0aF9zY29wZSIsICIkQDUiLCAiJEA2IiwgImNvbXBvdW5kX3N0YXRlbWVudF9u
b19uZXdfc2NvcGUiLAogICAic3RhdGVtZW50X2xpc3QiLCAiZXhwcmVzc2lvbl9zdGF0ZW1lbnQi
LCAic2VsZWN0aW9uX3N0YXRlbWVudCIsCi0gICJzZWxlY3Rpb25fcmVzdF9zdGF0ZW1lbnQiLCAi
Y29uZGl0aW9uIiwgIml0ZXJhdGlvbl9zdGF0ZW1lbnQiLCAiQDciLAotICAiQDgiLCAiQDkiLCAi
Zm9yX2luaXRfc3RhdGVtZW50IiwgImNvbmRpdGlvbm9wdCIsICJmb3JfcmVzdF9zdGF0ZW1lbnQi
LAorICAic2VsZWN0aW9uX3Jlc3Rfc3RhdGVtZW50IiwgImNvbmRpdGlvbiIsICJpdGVyYXRpb25f
c3RhdGVtZW50IiwgIiRANyIsCisgICIkQDgiLCAiJEA5IiwgImZvcl9pbml0X3N0YXRlbWVudCIs
ICJjb25kaXRpb25vcHQiLCAiZm9yX3Jlc3Rfc3RhdGVtZW50IiwKICAgImp1bXBfc3RhdGVtZW50
IiwgInRyYW5zbGF0aW9uX3VuaXQiLCAiZXh0ZXJuYWxfZGVjbGFyYXRpb24iLAotICAiZnVuY3Rp
b25fZGVmaW5pdGlvbiIsICJAMTAiLCAwCisgICJmdW5jdGlvbl9kZWZpbml0aW9uIiwgIiRAMTAi
LCBZWV9OVUxMCiB9OwogI2VuZGlmCiAKQEAgLTg0Miw0NjEgKzgwNCw0ODIgQEAgc3RhdGljIGNv
bnN0IHl5dHlwZV91aW50MTYgeXl0b2tudW1bXSA9CiAgICAgIDMxNSwgICAzMTYsICAgMzE3LCAg
IDMxOCwgICAzMTksICAgMzIwLCAgIDMyMSwgICAzMjIsICAgMzIzLCAgIDMyNCwKICAgICAgMzI1
LCAgIDMyNiwgICAzMjcsICAgMzI4LCAgIDMyOSwgICAzMzAsICAgMzMxLCAgIDMzMiwgICAzMzMs
ICAgMzM0LAogICAgICAzMzUsICAgMzM2LCAgIDMzNywgICAzMzgsICAgMzM5LCAgIDM0MCwgICAz
NDEsICAgMzQyLCAgIDM0MywgICAzNDQsCi0gICAgIDM0NSwgICAzNDYsICAgMzQ3LCAgIDM0OCwg
ICAzNDksICAgMzUwCisgICAgIDM0NSwgICAzNDYsICAgMzQ3LCAgIDM0OCwgICAzNDkKIH07CiAj
IGVuZGlmCiAKIC8qIFlZUjFbWVlOXSAtLSBTeW1ib2wgbnVtYmVyIG9mIHN5bWJvbCB0aGF0IHJ1
bGUgWVlOIGRlcml2ZXMuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIxW10gPQog
ewotICAgICAgIDAsICAgIDk2LCAgICA5NywgICAgOTgsICAgIDk4LCAgICA5OCwgICAgOTgsICAg
IDk4LCAgICA5OSwgICAgOTksCi0gICAgICA5OSwgICAgOTksICAgIDk5LCAgICA5OSwgICAxMDAs
ICAgMTAxLCAgIDEwMiwgICAxMDIsICAgMTAzLCAgIDEwMywKLSAgICAgMTA0LCAgIDEwNCwgICAx
MDUsICAgMTA1LCAgIDEwNiwgICAxMDcsICAgMTA3LCAgIDEwNywgICAxMDgsICAgMTA4LAotICAg
ICAxMDgsICAgMTA4LCAgIDEwOSwgICAxMDksICAgMTA5LCAgIDExMCwgICAxMTAsICAgMTEwLCAg
IDExMSwgICAxMTEsCi0gICAgIDExMSwgICAxMTIsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEz
LCAgIDExMywgICAxMTQsICAgMTE0LCAgIDExNCwKLSAgICAgMTE1LCAgIDExNiwgICAxMTcsICAg
MTE4LCAgIDExOCwgICAxMTksICAgMTE5LCAgIDEyMCwgICAxMjAsICAgMTIxLAotICAgICAxMjEs
ICAgMTIyLCAgIDEyMiwgICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTIzLCAgIDEyNCwg
ICAxMjQsCi0gICAgIDEyNSwgICAxMjYsICAgMTI2LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEy
OCwgICAxMjksICAgMTI5LCAgIDEzMCwKLSAgICAgMTMxLCAgIDEzMSwgICAxMzIsICAgMTMyLCAg
IDEzMiwgICAxMzIsICAgMTMzLCAgIDEzMywgICAxMzMsICAgMTMzLAotICAgICAxMzQsICAgMTM1
LCAgIDEzNSwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzYsICAgMTM2LCAgIDEzNiwgICAxMzYs
Ci0gICAgIDEzNiwgICAxMzYsICAgMTM3LCAgIDEzNywgICAxMzgsICAgMTM4LCAgIDEzOCwgICAx
MzgsICAgMTM4LCAgIDEzOSwKLSAgICAgMTM5LCAgIDE0MCwgICAxNDAsICAgMTQwLCAgIDE0MSwg
ICAxNDEsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLAorICAgICAgIDAsICAgIDk1LCAgICA5
NiwgICAgOTYsICAgIDk3LCAgICA5OCwgICAgOTgsICAgIDk4LCAgICA5OCwgICAgOTgsCisgICAg
ICA5OSwgICAgOTksICAgIDk5LCAgICA5OSwgICAgOTksICAgIDk5LCAgIDEwMCwgICAxMDEsICAg
MTAyLCAgIDEwMiwKKyAgICAgMTAzLCAgIDEwMywgICAxMDQsICAgMTA0LCAgIDEwNSwgICAxMDUs
ICAgMTA2LCAgIDEwNywgICAxMDcsICAgMTA4LAorICAgICAxMDgsICAgMTA4LCAgIDEwOCwgICAx
MDksICAgMTA5LCAgIDEwOSwgICAxMTAsICAgMTEwLCAgIDExMCwgICAxMTEsCisgICAgIDExMSwg
ICAxMTEsICAgMTEyLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTE0LCAg
IDExNCwKKyAgICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwgICAxMTgsICAgMTE5
LCAgIDExOSwgICAxMjAsICAgMTIwLAorICAgICAxMjEsICAgMTIxLCAgIDEyMiwgICAxMjIsICAg
MTIzLCAgIDEyMywgICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjQsCisgICAgIDEyNCwgICAxMjUs
ICAgMTI2LCAgIDEyNiwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjgsICAgMTI5LCAgIDEyOSwK
KyAgICAgMTMwLCAgIDEzMSwgICAxMzEsICAgMTMyLCAgIDEzMiwgICAxMzIsICAgMTMyLCAgIDEz
MywgICAxMzMsICAgMTMzLAorICAgICAxMzMsICAgMTM0LCAgIDEzNSwgICAxMzUsICAgMTM1LCAg
IDEzNSwgICAxMzUsICAgMTM2LCAgIDEzNiwgICAxMzYsCisgICAgIDEzNiwgICAxMzYsICAgMTM2
LCAgIDEzNywgICAxMzcsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEzOCwKKyAgICAg
MTM5LCAgIDEzOSwgICAxNDAsICAgMTQwLCAgIDE0MCwgICAxNDEsICAgMTQxLCAgIDE0MiwgICAx
NDIsICAgMTQyLAogICAgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0Miwg
ICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsCi0gICAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0
MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQ0LCAgIDE0MywKLSAgICAgMTQ1LCAg
IDE0MywgICAxNDYsICAgMTQ2LCAgIDE0NywgICAxNDgsICAgMTQ4LCAgIDE0OSwgICAxNDksICAg
MTUwLAotICAgICAxNTEsICAgMTUyLCAgIDE1MiwgICAxNTMsICAgMTUzLCAgIDE1MywgICAxNTMs
ICAgMTUzLCAgIDE1NCwgICAxNTUsCi0gICAgIDE1NiwgICAxNTQsICAgMTU3LCAgIDE1NywgICAx
NTksICAgMTU4LCAgIDE2MCwgICAxNTgsICAgMTYxLCAgIDE2MSwKLSAgICAgMTYyLCAgIDE2Miwg
ICAxNjMsICAgMTYzLCAgIDE2NCwgICAxNjUsICAgMTY1LCAgIDE2NiwgICAxNjYsICAgMTY4LAot
ICAgICAxNjcsICAgMTY5LCAgIDE2NywgICAxNzAsICAgMTY3LCAgIDE3MSwgICAxNzEsICAgMTcy
LCAgIDE3MiwgICAxNzMsCi0gICAgIDE3MywgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAg
MTc0LCAgIDE3NSwgICAxNzUsICAgMTc2LCAgIDE3NiwKLSAgICAgMTc4LCAgIDE3NworICAgICAx
NDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0
MiwgICAxNDQsCisgICAgIDE0MywgICAxNDUsICAgMTQzLCAgIDE0NiwgICAxNDYsICAgMTQ3LCAg
IDE0OCwgICAxNDgsICAgMTQ5LCAgIDE0OSwKKyAgICAgMTUwLCAgIDE1MSwgICAxNTIsICAgMTUy
LCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTU0LAorICAgICAxNTUsICAg
MTU2LCAgIDE1NCwgICAxNTcsICAgMTU3LCAgIDE1OSwgICAxNTgsICAgMTYwLCAgIDE1OCwgICAx
NjEsCisgICAgIDE2MSwgICAxNjIsICAgMTYyLCAgIDE2MywgICAxNjMsICAgMTY0LCAgIDE2NSwg
ICAxNjUsICAgMTY2LCAgIDE2NiwKKyAgICAgMTY4LCAgIDE2NywgICAxNjksICAgMTY3LCAgIDE3
MCwgICAxNjcsICAgMTcxLCAgIDE3MSwgICAxNzIsICAgMTcyLAorICAgICAxNzMsICAgMTczLCAg
IDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc1LCAgIDE3NSwgICAxNzYsCisg
ICAgIDE3NiwgICAxNzgsICAgMTc3CiB9OwogCiAvKiBZWVIyW1lZTl0gLS0gTnVtYmVyIG9mIHN5
bWJvbHMgY29tcG9zaW5nIHJpZ2h0IGhhbmQgc2lkZSBvZiBydWxlIFlZTi4gICovCiBzdGF0aWMg
Y29uc3QgeXl0eXBlX3VpbnQ4IHl5cjJbXSA9CiB7Ci0gICAgICAgMCwgICAgIDIsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgNCwKLSAgICAgICAx
LCAgICAgMywgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDIs
ICAgICAyLAotICAgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDIsCi0gICAgICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMywgICAgIDMsICAgICAxLCAgICAgMywKLSAgICAgICAzLCAgICAg
MSwgICAgIDEsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAz
LAotICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDMsICAg
ICAxLCAgICAgMywgICAgIDEsCi0gICAgICAgNSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywKLSAgICAgICAxLCAgICAgMiwgICAg
IDIsICAgICA0LCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDMsICAgICAzLAotICAg
ICAgIDIsICAgICA1LCAgICAgMywgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDAsICAgICAxLCAg
ICAgMSwgICAgIDEsCi0gICAgICAgMSwgICAgIDEsICAgICAzLCAgICAgNSwgICAgIDYsICAgICA1
LCAgICAgMSwgICAgIDIsICAgICA0LCAgICAgNSwKLSAgICAgICA0LCAgICAgMiwgICAgIDEsICAg
ICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLAotICAgICAgIDIs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgNCwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsCisgICAgICAgMCwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMywKKyAgICAgICAxLCAgICAgNCwgICAgIDEsICAgICAzLCAg
ICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLAorICAgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEs
CisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDMsICAgICAzLCAgICAgMSwKKyAgICAgICAzLCAgICAgMywgICAgIDEsICAgICAxLCAgICAgMywg
ICAgIDMsICAgICAzLCAgICAgMywgICAgIDEsICAgICAzLAorICAgICAgIDMsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDMsCisgICAg
ICAgMSwgICAgIDUsICAgICAxLCAgICAgMywgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwKKyAgICAgICAzLCAgICAgMSwgICAgIDIsICAgICAyLCAgICAgNCwgICAgIDIs
ICAgICAxLCAgICAgMSwgICAgIDIsICAgICAzLAorICAgICAgIDMsICAgICAyLCAgICAgNSwgICAg
IDMsICAgICAyLCAgICAgMywgICAgIDIsICAgICAwLCAgICAgMSwgICAgIDEsCisgICAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMywgICAgIDUsICAgICA2LCAgICAgNSwgICAgIDEsICAgICAyLCAg
ICAgNCwKKyAgICAgICA1LCAgICAgNCwgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDIsICAgICAxLAorICAgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDQsICAgICAxLCAgICAgMSwgICAgIDEsCiAgICAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwK
LSAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDAsICAgICA2LAotICAgICAgIDAsICAgICA1LCAgICAgMSwgICAgIDIsICAgICAzLCAg
ICAgMSwgICAgIDMsICAgICAxLCAgICAgNCwgICAgIDEsCi0gICAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAyLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgNSwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDIsICAgICAwLCAgICAgMiwgICAg
IDIsICAgICAzLAotICAgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDIsICAgICA1LCAgICAgMywg
ICAgIDEsICAgICAxLCAgICAgNCwgICAgIDAsCi0gICAgICAgNiwgICAgIDAsICAgICA4LCAgICAg
MCwgICAgIDcsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAwLCAgICAgMiwKLSAgICAgICAzLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMywgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDEsICAg
ICAxLAotICAgICAgIDAsICAgICAzCisgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwKKyAgICAgICA2LCAgICAgMCwg
ICAgIDUsICAgICAxLCAgICAgMiwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICA0LAor
ICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDIsCisgICAgICAgMCwgICAgIDAsICAgICA1LCAgICAgMSwgICAgIDEsICAg
ICAwLCAgICAgMiwgICAgIDAsICAgICAyLCAgICAgMiwKKyAgICAgICAzLCAgICAgMSwgICAgIDIs
ICAgICAxLCAgICAgMiwgICAgIDUsICAgICAzLCAgICAgMSwgICAgIDEsICAgICA0LAorICAgICAg
IDAsICAgICA2LCAgICAgMCwgICAgIDgsICAgICAwLCAgICAgNywgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDAsCisgICAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAzLCAg
ICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwKKyAgICAgICAxLCAgICAgMCwgICAgIDMKIH07CiAK
LS8qIFlZREVGQUNUW1NUQVRFLU5BTUVdIC0tIERlZmF1bHQgcnVsZSB0byByZWR1Y2Ugd2l0aCBp
biBzdGF0ZQotICAgU1RBVEUtTlVNIHdoZW4gWVlUQUJMRSBkb2Vzbid0IHNwZWNpZnkgc29tZXRo
aW5nIGVsc2UgdG8gZG8uICBaZXJvCisvKiBZWURFRkFDVFtTVEFURS1OQU1FXSAtLSBEZWZhdWx0
IHJlZHVjdGlvbiBudW1iZXIgaW4gc3RhdGUgU1RBVEUtTlVNLgorICAgUGVyZm9ybWVkIHdoZW4g
WVlUQUJMRSBkb2Vzbid0IHNwZWNpZnkgc29tZXRoaW5nIGVsc2UgdG8gZG8uICBaZXJvCiAgICBt
ZWFucyB0aGUgZGVmYXVsdCBpcyBhbiBlcnJvci4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3Vp
bnQ4IHl5ZGVmYWN0W10gPQogewotICAgICAgIDAsICAgICAwLCAgIDExMSwgICAxMTIsICAgMTEz
LCAgICAgMCwgICAxMDUsICAgMTA0LCAgIDExOSwgICAxMTcsCi0gICAgIDExOCwgICAxMjMsICAg
MTI0LCAgIDEyNSwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjAsICAgMTIxLCAgIDEyMiwKLSAg
ICAgMTI5LCAgIDEzMCwgICAxMzEsICAgMTA4LCAgIDEwNiwgICAgIDAsICAgMTE2LCAgIDEzMiwg
ICAxMzMsICAgMTM0LAotICAgICAxMzUsICAgMTM3LCAgIDE5OSwgICAyMDAsICAgICAwLCAgICA3
NiwgICAgODYsICAgICAwLCAgICA5MSwgICAgOTYsCi0gICAgICAgMCwgICAxMDIsICAgICAwLCAg
IDEwOSwgICAxMTQsICAgMTM2LCAgICAgMCwgICAxOTYsICAgMTk4LCAgIDEwNywKLSAgICAgMTAx
LCAgICAgMCwgICAgIDAsICAgMTQwLCAgICA3MSwgICAgIDAsICAgIDc0LCAgICA4NiwgICAgIDAs
ICAgIDg3LAotICAgICAgODgsICAgIDg5LCAgICA3NywgICAgIDAsICAgIDg2LCAgICAgMCwgICAg
NzIsICAgIDk3LCAgIDEwMywgICAxMTAsCi0gICAgICAgMCwgICAgIDEsICAgMTk3LCAgICAgMCwg
ICAxMzgsICAgICAwLCAgICAgMCwgICAyMDEsICAgIDc4LCAgICA4MywKLSAgICAgIDg1LCAgICA5
MCwgICAgIDAsICAgIDkyLCAgICA3OSwgICAgIDAsICAgICAwLCAgICAgMiwgICAgIDUsICAgICA0
LAotICAgICAgIDYsICAgIDI3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAzNCwgICAgMzMsICAg
IDMyLCAgICAgMywgICAgIDgsCi0gICAgICAyOCwgICAgMTAsICAgIDE1LCAgICAxNiwgICAgIDAs
ICAgICAwLCAgICAyMSwgICAgIDAsICAgIDM1LCAgICAgMCwKLSAgICAgIDM4LCAgICA0MSwgICAg
NDIsICAgIDQ3LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTUsICAgIDU3LAotICAg
ICAgNTksICAgIDcwLCAgICAgMCwgICAgMjUsICAgIDczLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDE0MiwgICAgIDAsCi0gICAgICAgMCwgICAxODEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAxNTksICAgMTY4LCAgIDE3MiwKLSAgICAgIDM1LCAgICA2MSwgICAgNjgsICAg
ICAwLCAgIDE1MCwgICAgIDAsICAgMTE0LCAgIDE1MywgICAxNzAsICAgMTUyLAotICAgICAxNTEs
ICAgICAwLCAgIDE1NCwgICAxNTUsICAgMTU2LCAgIDE1NywgICAgODAsICAgIDgyLCAgICA4NCwg
ICAgIDAsCi0gICAgICAgMCwgICAgOTgsICAgICAwLCAgIDE0OSwgICAxMDAsICAgIDI5LCAgICAz
MCwgICAgIDAsICAgIDEyLCAgICAxMywKLSAgICAgICAwLCAgICAgMCwgICAgMTksICAgIDE4LCAg
ICAgMCwgICAgMjAsICAgIDIyLCAgICAyNCwgICAgMzEsICAgICAwLAotICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
Ci0gICAgICAgMCwgICAgIDAsICAgICAwLCAgIDExNSwgICAgIDAsICAgMTQ3LCAgICAgMCwgICAx
NDUsICAgMTQxLCAgIDE0MywKLSAgICAgMTkyLCAgIDE5MSwgICAxNjYsICAgMTgzLCAgICAgMCwg
ICAxOTUsICAgMTkzLCAgICAgMCwgICAxNzksICAgMTU4LAotICAgICAgIDAsICAgIDY0LCAgICA2
NSwgICAgNjYsICAgIDY3LCAgICA2MywgICAgIDAsICAgICAwLCAgIDE3MywgICAxNjksCi0gICAg
IDE3MSwgICAgIDAsICAgIDkzLCAgICAgMCwgICAgOTUsICAgIDk5LCAgICAgNywgICAgIDAsICAg
IDE0LCAgICAyNiwKLSAgICAgIDExLCAgICAxNywgICAgMjMsICAgIDM2LCAgICAzNywgICAgNDAs
ICAgIDM5LCAgICA0NSwgICAgNDYsICAgIDQzLAotICAgICAgNDQsICAgIDQ4LCAgICA0OSwgICAg
NTQsICAgIDU2LCAgICA1OCwgICAgIDAsICAgMTM5LCAgICAgMCwgICAgIDAsCi0gICAgIDE0NCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE5NCwgICAgIDAsICAgMTYwLCAg
ICA2MiwKLSAgICAgIDY5LCAgICAgMCwgICAgOTQsICAgICA5LCAgICAgMCwgICAgIDAsICAgMTQ2
LCAgICAgMCwgICAxNjUsICAgMTY3LAotICAgICAxODYsICAgMTg1LCAgIDE4OCwgICAxNjYsICAg
MTc3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA4MSwgICAgNjAsCi0gICAgIDE0OCwgICAgIDAs
ICAgMTg3LCAgICAgMCwgICAgIDAsICAgMTc2LCAgIDE3NCwgICAgIDAsICAgICAwLCAgIDE2MSwK
LSAgICAgICAwLCAgIDE4OSwgICAgIDAsICAgMTY2LCAgICAgMCwgICAxNjMsICAgMTgwLCAgIDE2
MiwgICAgIDAsICAgMTkwLAotICAgICAxODQsICAgMTc1LCAgIDE3OCwgICAxODIKKyAgICAgICAw
LCAgICAgMCwgICAxMTIsICAgMTEzLCAgIDExNCwgICAgIDAsICAgMTA2LCAgIDEwNSwgICAxMjAs
ICAgMTE4LAorICAgICAxMTksICAgMTI0LCAgIDEyNSwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAx
MjksICAgMTIxLCAgIDEyMiwgICAxMjMsCisgICAgIDEzMCwgICAxMzEsICAgMTMyLCAgIDEwOSwg
ICAxMDcsICAgICAwLCAgIDExNywgICAxMzMsICAgMTM0LCAgIDEzNSwKKyAgICAgMTM2LCAgIDEz
OCwgICAyMDAsICAgMjAxLCAgICAgMCwgICAgNzcsICAgIDg3LCAgICAgMCwgICAgOTIsICAgIDk3
LAorICAgICAgIDAsICAgMTAzLCAgICAgMCwgICAxMTAsICAgMTE1LCAgIDEzNywgICAgIDAsICAg
MTk3LCAgIDE5OSwgICAxMDgsCisgICAgIDEwMiwgICAgIDAsICAgICAyLCAgICAgMywgICAxNDEs
ICAgICAwLCAgICA3MiwgICAgIDAsICAgIDc1LCAgICA4NywKKyAgICAgICAwLCAgICA4OCwgICAg
ODksICAgIDkwLCAgICA3OCwgICAgIDAsICAgIDg3LCAgICAgMCwgICAgNzMsICAgICAyLAorICAg
ICAgOTgsICAgMTA0LCAgIDExMSwgICAgIDAsICAgICAxLCAgIDE5OCwgICAgIDAsICAgICAwLCAg
IDEzOSwgICAgIDAsCisgICAgIDIwMiwgICAgNzksICAgIDg0LCAgICA4NiwgICAgOTEsICAgICAw
LCAgICA5MywgICAgODAsICAgICAwLCAgICAgMCwKKyAgICAgICA0LCAgICAgNywgICAgIDYsICAg
ICA4LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAzNSwgICAgMzQsICAgIDMzLAorICAgICAgIDUs
ICAgIDEwLCAgICAyOSwgICAgMTIsICAgIDE3LCAgICAxOCwgICAgIDAsICAgICAwLCAgICAyMywg
ICAgIDAsCisgICAgICAzNiwgICAgIDAsICAgIDM5LCAgICA0MiwgICAgNDMsICAgIDQ4LCAgICA1
MSwgICAgNTIsICAgIDUzLCAgICA1NCwKKyAgICAgIDU2LCAgICA1OCwgICAgNjAsICAgIDcxLCAg
ICAgMCwgICAgMjcsICAgIDc0LCAgICAgMCwgICAgIDAsICAgMTQzLAorICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAxODIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNjAs
CisgICAgIDE2OSwgICAxNzMsICAgIDM2LCAgICA2MiwgICAgNjksICAgICAwLCAgIDE1MSwgICAg
IDAsICAgMTE1LCAgIDE1NCwKKyAgICAgMTcxLCAgIDE1MywgICAxNTIsICAgICAwLCAgIDE1NSwg
ICAxNTYsICAgMTU3LCAgIDE1OCwgICAgODEsICAgIDgzLAorICAgICAgODUsICAgICAwLCAgICAg
MCwgICAgOTksICAgICAwLCAgIDE1MCwgICAxMDEsICAgIDMwLCAgICAzMSwgICAgIDAsCisgICAg
ICAxNCwgICAgMTUsICAgICAwLCAgICAgMCwgICAgMjEsICAgIDIwLCAgICAgMCwgICAgMjIsICAg
IDI0LCAgICAyNiwKKyAgICAgIDMyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgIDExNiwgICAxNDgsICAgICAwLCAgIDE0NiwgICAxNDIsCisgICAgIDE0NCwg
ICAgIDAsICAgMTkzLCAgIDE5MiwgICAxNjcsICAgMTg0LCAgICAgMCwgICAxOTYsICAgMTk0LCAg
ICAgMCwKKyAgICAgMTgwLCAgIDE1OSwgICAgIDAsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4
LCAgICA2NCwgICAgIDAsICAgICAwLAorICAgICAxNzQsICAgMTcwLCAgIDE3MiwgICAgIDAsICAg
IDk0LCAgICAgMCwgICAgOTYsICAgMTAwLCAgICAgOSwgICAgIDAsCisgICAgICAxNiwgICAgIDIs
ICAgICAzLCAgICAxMywgICAgMTksICAgIDI1LCAgICAzNywgICAgMzgsICAgIDQxLCAgICA0MCwK
KyAgICAgIDQ2LCAgICA0NywgICAgNDQsICAgIDQ1LCAgICA0OSwgICAgNTAsICAgIDU1LCAgICA1
NywgICAgNTksICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDE0NSwgICAxNDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTUsCisgICAgICAgMCwgICAxNjEsICAgIDYz
LCAgICA3MCwgICAgIDAsICAgIDk1LCAgICAxMSwgICAgIDAsICAgICAwLCAgIDE0NywKKyAgICAg
ICAwLCAgIDE2NiwgICAxNjgsICAgMTg3LCAgIDE4NiwgICAxODksICAgMTY3LCAgIDE3OCwgICAg
IDAsICAgICAwLAorICAgICAgIDAsICAgIDgyLCAgICA2MSwgICAxNDksICAgICAwLCAgIDE4OCwg
ICAgIDAsICAgICAwLCAgIDE3NywgICAxNzUsCisgICAgICAgMCwgICAgIDAsICAgMTYyLCAgICAg
MCwgICAxOTAsICAgICAwLCAgIDE2NywgICAgIDAsICAgMTY0LCAgIDE4MSwKKyAgICAgMTYzLCAg
ICAgMCwgICAxOTEsICAgMTg1LCAgIDE3NiwgICAxNzksICAgMTgzCiB9OwogCiAvKiBZWURFRkdP
VE9bTlRFUk0tTlVNXS4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5ZGVmZ290b1td
ID0KIHsKLSAgICAgIC0xLCAgICA5OCwgICAgOTksICAgMTAwLCAgIDIyNywgICAxMDEsICAgMTAy
LCAgIDEwMywgICAxMDQsICAgMTA1LAotICAgICAxMDYsICAgMTA3LCAgIDE0MCwgICAxMDksICAg
MTEwLCAgIDExMSwgICAxMTIsICAgMTEzLCAgIDExNCwgICAxMTUsCi0gICAgIDExNiwgICAxMTcs
ICAgMTE4LCAgIDExOSwgICAxMjAsICAgMTQxLCAgIDE0MiwgICAyMTYsICAgMTQzLCAgIDEyMiwK
LSAgICAgMTQ0LCAgIDE0NSwgICAgMzQsICAgIDM1LCAgICAzNiwgICAgNzksICAgIDYyLCAgICA2
MywgICAgODAsICAgIDM3LAotICAgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAg
ICA0MywgICAxMjMsICAgIDQ1LCAgIDEyNSwgICAgNzUsCi0gICAgIDEyNywgICAxMjgsICAgMTk2
LCAgIDE5NywgICAxNjQsICAgMTQ3LCAgIDE0OCwgICAxNDksICAgMTUwLCAgIDIxMCwKLSAgICAg
Mjc3LCAgIDI5NiwgICAyNTEsICAgMjUyLCAgIDI1MywgICAyOTcsICAgMTUxLCAgIDE1MiwgICAx
NTMsICAgMjg2LAotICAgICAyNzYsICAgMTU0LCAgIDI1NywgICAyMDIsICAgMjU0LCAgIDI3Miwg
ICAyODMsICAgMjg0LCAgIDE1NSwgICAgNDYsCi0gICAgICA0NywgICAgNDgsICAgIDU1CisgICAg
ICAtMSwgICAxOTYsICAgMTAwLCAgIDEwMSwgICAxMDIsICAgMjI5LCAgIDEwMywgICAxMDQsICAg
MTA1LCAgIDEwNiwKKyAgICAgMTA3LCAgIDEwOCwgICAxMDksICAgMTQyLCAgIDExMSwgICAxMTIs
ICAgMTEzLCAgIDExNCwgICAxMTUsICAgMTE2LAorICAgICAxMTcsICAgMTE4LCAgIDExOSwgICAx
MjAsICAgMTIxLCAgIDEyMiwgICAxNDMsICAgMTQ0LCAgIDIxOCwgICAxNDUsCisgICAgIDEyNCwg
ICAxNDYsICAgMTQ3LCAgICAzNCwgICAgMzUsICAgIDM2LCAgICA4MiwgICAgNjQsICAgIDY1LCAg
ICA4MywKKyAgICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQz
LCAgIDEyNSwgICAgNDUsICAgMTMwLAorICAgICAgNzcsICAgMTI4LCAgIDEyOSwgICAxOTcsICAg
MTk4LCAgIDE2NiwgICAxNDksICAgMTUwLCAgIDE1MSwgICAxNTIsCisgICAgIDIxMiwgICAyODAs
ICAgMjk5LCAgIDI1NCwgICAyNTUsICAgMjU2LCAgIDMwMCwgICAxNTMsICAgMTU0LCAgIDE1NSwK
KyAgICAgMjg5LCAgIDI3OSwgICAxNTYsICAgMjYwLCAgIDIwNCwgICAyNTcsICAgMjc1LCAgIDI4
NiwgICAyODcsICAgMTU3LAorICAgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNTcKIH07CiAKIC8q
IFlZUEFDVFtTVEFURS1OVU1dIC0tIEluZGV4IGluIFlZVEFCTEUgb2YgdGhlIHBvcnRpb24gZGVz
Y3JpYmluZwogICAgU1RBVEUtTlVNLiAgKi8KLSNkZWZpbmUgWVlQQUNUX05JTkYgLTI2NgorI2Rl
ZmluZSBZWVBBQ1RfTklORiAtMjYxCiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5cGFjdFtd
ID0KIHsKLSAgICAxMjUzLCAgIC0yMCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxNDgsICAtMjY2
LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAt
MjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYs
ICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgLTM5LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwK
LSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgLTE4LCAgICAtMiwgICAgIDYsICAgIDIxLCAgIC02
MSwgIC0yNjYsICAgIDUxLAotICAgIDEyOTYsICAtMjY2LCAgMTM3MCwgIC0yNjYsICAgIDI1LCAg
LTI2NiwgIDEyMDksICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgIDEzNzAsICAgIDQy
LCAgLTI2NiwgIC0yNjYsICAgIDUwLCAgLTI2NiwgICAgNzEsICAgIDk1LCAgLTI2NiwKLSAgICAt
MjY2LCAgLTI2NiwgIC0yNjYsICAxMjk2LCAgIDEyMywgICAxMDUsICAtMjY2LCAgICAgOSwgIC0y
NjYsICAtMjY2LAotICAgICA5NzQsICAtMjY2LCAgLTI2NiwgICAgODEsICAtMjY2LCAgMTI5Niwg
ICAyOTAsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICAxMjUsICAxMjk2LCAgIC0x
MywgIC0yNjYsICAgNzc2LCAgIDk3NCwgICAgOTksICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAg
LTI2NiwgICA5NzQsICAgOTc0LCAgIDk3NCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAt
MjY2LAotICAgICAgMzUsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTAwLCAgICAtNiwgIDEwNDAs
ICAgMTA0LCAgLTI2NiwgICA5NzQsCi0gICAgICAzNiwgICAtNjQsICAtMjY2LCAgIC0yMSwgICAx
MDIsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTEzLCAgIDExNywKLSAgICAgLTUxLCAgLTI2Niwg
ICAxMDgsICAtMjY2LCAgLTI2NiwgIDEyOTYsICAgMTI5LCAgMTEwOSwgIC0yNjYsICAgIDk3LAot
ICAgICAxMDMsICAtMjY2LCAgIDExMiwgICAxMTQsICAgMTA2LCAgIDg0MiwgICAxMTUsICAgMTE2
LCAgLTI2NiwgIC0yNjYsCi0gICAgICAzOSwgIC0yNjYsICAtMjY2LCAgIC00MywgIC0yNjYsICAg
LTE4LCAgICA0NywgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIDM3NCwgIC0yNjYs
ICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTE4LCAgLTI2NiwgIC0yNjYsICAgOTA4LAotICAgICA5
NzQsICAtMjY2LCAgIDEyMCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgIDE5LCAgLTI2
NiwgIC0yNjYsCi0gICAgIDk3NCwgIDEzMzMsICAtMjY2LCAgLTI2NiwgICA5NzQsICAgMTE5LCAg
LTI2NiwgIC0yNjYsICAtMjY2LCAgIDk3NCwKLSAgICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0
LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LAotICAgICA5NzQsICAg
OTc0LCAgIDk3NCwgIC0yNjYsICAxMTUyLCAgIDEyMiwgICAtMjksICAtMjY2LCAgLTI2NiwgIC0y
NjYsCi0gICAgLTI2NiwgIC0yNjYsICAgMTIxLCAgLTI2NiwgICA5NzQsICAtMjY2LCAgLTI2Niwg
ICAgIDUsICAtMjY2LCAgLTI2NiwKLSAgICAgNDU4LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2
NiwgIC0yNjYsICAgOTc0LCAgIDk3NCwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgOTc0LCAg
LTI2NiwgICAxMzcsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTM4LCAgIDExMSwgIC0yNjYsCi0g
ICAgIDE0MiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgIDM2LCAgICAzNiwgIC0yNjYs
ICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIC0yMSwgICAtMjEsICAtMjY2LCAgIDExMywgICAx
MTcsICAgIDgyLCAgLTI2NiwgICA5NzQsICAgMTI5LAotICAgIC0yNjYsICAgMTc1LCAgICA1MCwg
ICA2MjYsICAgNzEwLCAgICAzOCwgIC0yNjYsICAgMTk3LCAgIDQ1OCwgIC0yNjYsCi0gICAgLTI2
NiwgICAxNDEsICAtMjY2LCAgLTI2NiwgICA5NzQsICAgMTU1LCAgLTI2NiwgICAxNDUsICAtMjY2
LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgICAxOTcsICAgMTIxLCAgIDExMSwgICAxODYsICAg
MTU5LCAgIDE2MCwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgOTc0LCAgLTI2NiwgICAxNjYs
ICAgMTc2LCAgIDIzNiwgIC0yNjYsICAgMTc0LCAgIDU0MiwgIC0yNjYsCi0gICAgICA0MywgICA5
NzQsICAgNTQyLCAgIDEyMSwgICA5NzQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTc3LCAgIDEx
MSwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2CisgICAgMTMyNywgICAtMjAsICAtMjYx
LCAgLTI2MSwgIC0yNjEsICAgMTEzLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwKKyAgICAt
MjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0y
NjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIC0xOSwg
IC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIC02
MSwgICAtNDAsICAgLTI4LCAgICA3NSwgICAgLTcsICAtMjYxLCAgICAyNCwKKyAgICAxMzcwLCAg
LTI2MSwgIDE0NDQsICAtMjYxLCAgIC0xMSwgIC0yNjEsICAxMjgzLCAgLTI2MSwgIC0yNjEsICAt
MjYxLAorICAgIC0yNjEsICAxNDQ0LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICAgNiwgIC0yNjEs
ICAgIDU0LCAgLTI2MSwgICAgODgsCisgICAgICA2MiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0y
NjEsICAxMzcwLCAgICA1OSwgICAgOTEsICAtMjYxLCAgICAzNiwKKyAgICAgLTUwLCAgLTI2MSwg
IC0yNjEsICAxMDUxLCAgLTI2MSwgIC0yNjEsICAgIDYzLCAgMTM3MCwgIC0yNjEsICAgMjkzLAor
ICAgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgIDkxLCAgMTM3MCwgICAtMTIsICAtMjYx
LCAgIDg1NiwgIDEwNTEsCisgICAgICA3NywgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAx
MDUxLCAgMTA1MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgICAtMTQs
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgIDg0LCAgIC00NCwgIDExMTYsICAgIDk1LAorICAgIC0y
NjEsICAxMDUxLCAgICA1MywgICAgIDMsICAtMjYxLCAgIC0zNiwgICAgODksICAtMjYxLCAgLTI2
MSwgIC0yNjEsCisgICAgIDEwNCwgICAxMDcsICAgLTQ1LCAgLTI2MSwgICAgOTYsICAtMjYxLCAg
LTI2MSwgICAgOTEsICAxMTg0LCAgLTI2MSwKKyAgICAxMzcwLCAgICA5MiwgICAgOTMsICAtMjYx
LCAgICA5OCwgICAxMDEsICAgIDk0LCAgIDkyMSwgICAxMDUsICAgMTAyLAorICAgIC0yNjEsICAt
MjYxLCAgICA3MiwgIC0yNjEsICAtMjYxLCAgICAgOSwgIC0yNjEsICAgLTYxLCAgICA0MiwgIC0y
NjEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDM3NiwgIC0yNjEsICAtMjYxLCAgLTI2MSwg
IC0yNjEsICAgMTA2LCAgLTI2MSwKKyAgICAtMjYxLCAgIDk4NiwgIDEwNTEsICAtMjYxLCAgIDEw
MywgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgLTQxLAorICAgIC0yNjEsICAtMjYxLCAg
MTA1MSwgIDE0MDcsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAgMTEwLCAgLTI2MSwgIC0yNjEsCisg
ICAgLTI2MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEs
ICAxMDUxLCAgMTA1MSwKKyAgICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIC0y
NjEsICAgMTA5LCAgICAyMywgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAxMjI3LCAgLTI2MSwg
IC0yNjEsICAgMTExLCAgLTI2MSwgIDEwNTEsICAtMjYxLCAgLTI2MSwgICAgMjUsCisgICAgLTI2
MSwgIC0yNjEsICAgNDU5LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAxMDUx
LCAgMTA1MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgLTI2MSwgICAxMTQsICAt
MjYxLCAgLTI2MSwgIC0yNjEsICAgMTE1LAorICAgICAxMTIsICAgIDc3LCAgIDExNiwgIC0yNjEs
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICA1MywgICAgNTMsCisgICAgLTI2MSwgIC0y
NjEsICAtMjYxLCAgLTI2MSwgICAtMzYsICAgLTM2LCAgLTI2MSwgICAxMDQsICAgMTA3LCAgICA3
NiwKKyAgICAxMDUxLCAgICA5MSwgIC0yNjEsICAtMjYxLCAgIDE0NSwgICAgNTQsICAgNjI1LCAg
IDcwOCwgICAgLTYsICAtMjYxLAorICAgICA3OTEsICAgNDU5LCAgLTI2MSwgIC0yNjEsICAgMTE3
LCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgIDEyMCwgIC0yNjEsCisgICAgIDEyNCwgIC0yNjEsICAt
MjYxLCAgLTI2MSwgIC0yNjEsICAgNzkxLCAgIDExMSwgICAxMTIsICAgIDkxLCAgIDEyNSwKKyAg
ICAgMTIyLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgMTA1MSwgIC0yNjEsICAgMTE4LCAgIDEyOCwg
ICAxODAsICAtMjYxLAorICAgICAxMjYsICAgNTQyLCAgLTI2MSwgICAgLTUsICAxMDUxLCAgIDU0
MiwgICAxMTEsICAxMDUxLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgICAxMjMsICAgMTEyLCAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MQogfTsKIAogLyogWVlQR09UT1tOVEVSTS1OVU1dLiAg
Ki8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlwZ290b1tdID0KIHsKLSAgICAtMjY2LCAg
LTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgICA4NSwgIC0yNjYsICAt
MjY2LAotICAgIC0yNjYsICAtMjY2LCAgIC00NCwgIC0yNjYsICAgLTE1LCAgLTI2NiwgICAtNTUs
ICAgLTE5LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICAgNzIsICAgIDcwLCAgICA3MywgIC0y
NjYsICAgLTY2LCAgIC04MywgIC0yNjYsICAgLTkyLCAgIC03MywKLSAgICAgIDEzLCAgICAxNCwg
IC0yNjYsICAtMjY2LCAgLTI2NiwgICAxODAsICAgMjA2LCAgIDIwMSwgICAxODQsICAtMjY2LAot
ICAgIC0yNjYsICAtMjQxLCAgIC0yNSwgICAtMzAsICAgMjYyLCAgICAtNCwgICAgIDAsICAtMjY2
LCAgLTI2NiwgIC0yNjYsCi0gICAgIDE0MywgIC0xMjIsICAtMjY2LCAgICAyMiwgIC0xNDUsICAg
IDE2LCAgLTE0NCwgIC0yMjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIC0xNywgIC0yNjUs
ICAtMjY2LCAgLTI2NiwgICAtNTQsICAgIDYzLCAgICAyMCwgIC0yNjYsICAtMjY2LAotICAgICAg
IDQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2
NiwgIC0yNjYsCi0gICAgIDIzMSwgIC0yNjYsICAtMjY2CisgICAgLTI2MSwgICAtMjQsICAtMjYx
LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgIDM0LCAgLTI2MSwKKyAgICAt
MjYxLCAgLTI2MSwgIC0yNjEsICAgIDMyLCAgLTI2MSwgICAtMzMsICAtMjYxLCAgIC0yNywgICAt
MjYsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgICAxNCwgICAgMTYsICAgIDE4LCAgLTI2MSwg
ICAtNjYsICAgLTg3LCAgLTI2MSwgICAtOTIsCisgICAgIC04NSwgICAgMTEsICAgIDEyLCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgIDE0MSwgICAxNTAsICAgMTYxLCAgIDE0MywKKyAgICAtMjYxLCAg
LTI2MSwgIC0yMzEsICAgICA1LCAgIC0zMCwgICAyMjQsICAgLTE4LCAgICAgMCwgIC0yNjEsICAt
MjYxLAorICAgIC0yNjEsICAgMTAwLCAgLTExOSwgIC0yNjEsICAgLTE3LCAgLTE1NiwgICAtMjUs
ICAtMTQ1LCAgLTI0MywgIC0yNjEsCisgICAgLTI2MSwgIC0yNjEsICAgLTY0LCAgLTI2MCwgIC0y
NjEsICAtMjYxLCAgIC01MiwgICAgMjEsICAgLTIyLCAgLTI2MSwKKyAgICAtMjYxLCAgIC0zOSwg
IC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAor
ICAgIC0yNjEsICAgMTkxLCAgLTI2MSwgIC0yNjEKIH07CiAKIC8qIFlZVEFCTEVbWVlQQUNUW1NU
QVRFLU5VTV1dLiAgV2hhdCB0byBkbyBpbiBzdGF0ZSBTVEFURS1OVU0uICBJZgogICAgcG9zaXRp
dmUsIHNoaWZ0IHRoYXQgdG9rZW4uICBJZiBuZWdhdGl2ZSwgcmVkdWNlIHRoZSBydWxlIHdoaWNo
Ci0gICBudW1iZXIgaXMgdGhlIG9wcG9zaXRlLiAgSWYgemVybywgZG8gd2hhdCBZWURFRkFDVCBz
YXlzLgotICAgSWYgWVlUQUJMRV9OSU5GLCBzeW50YXggZXJyb3IuICAqLwotI2RlZmluZSBZWVRB
QkxFX05JTkYgLTE2NQorICAgbnVtYmVyIGlzIHRoZSBvcHBvc2l0ZS4gIElmIFlZVEFCTEVfTklO
Riwgc3ludGF4IGVycm9yLiAgKi8KKyNkZWZpbmUgWVlUQUJMRV9OSU5GIC0xNjYKIHN0YXRpYyBj
b25zdCB5eXR5cGVfaW50MTYgeXl0YWJsZVtdID0KIHsKLSAgICAgIDQ0LCAgICA3NywgICAxNjcs
ICAgMTYzLCAgIDEyMSwgICAxOTksICAgIDUyLCAgIDIyMCwgICAyODUsICAgMTkxLAotICAgICAg
NjgsICAgIDY0LCAgIDE2MiwgICAgMzIsICAgIDMzLCAgIDIyNCwgICAyNzUsICAgIDQ5LCAgICA2
NSwgICAxMjEsCi0gICAgIDE4MSwgICAgNjYsICAgMTgyLCAgIDE3NiwgICAgNTgsICAgIDUwLCAg
IDEwOCwgICAyNjksICAgMzAxLCAgICAgNiwKLSAgICAgICA3LCAgIDI3NSwgICAgNjQsICAgIDgx
LCAgIDE4MywgICAxODQsICAgMjE3LCAgICA1MywgICAgNjksICAgMjE4LAotICAgICAgNDQsICAg
MTA4LCAgICA0NCwgICAyMDcsICAgMTkyLCAgIDEyNiwgICAgNDQsICAgIDczLCAgIDE2NSwgICAx
NjYsCi0gICAgIDI0OSwgICAgNDQsICAgIDgxLCAgIDI1MCwgICAgNTksICAgIDYwLCAgICA2MSwg
ICAgMjMsICAgIDI0LCAgICAzMiwKLSAgICAgIDMzLCAgIDE1OSwgICAyOTUsICAgIDQ0LCAgICA1
NCwgICAxNzgsICAgMjk1LCAgIDE3MywgICAxNjAsICAgMTg1LAotICAgICAxODYsICAgIDU2LCAg
IDE5OSwgICAxNzQsICAgIDU4LCAgICA0NCwgICAxNDYsICAgMTYzLCAgIDIyOCwgICAgIDYsCi0g
ICAgICAgNywgICAgODQsICAgIDQ0LCAgICA4NSwgICAyMTcsICAgIDU3LCAgIDIyMywgICAyNTYs
ICAgMTY4LCAgIDE2OSwKLSAgICAgIDg2LCAgIDIzMiwgICAyMjYsICAgMTIxLCAgIC03NSwgICAx
MjYsICAgIDY3LCAgIDEyNiwgICAyMTcsICAgIDcwLAotICAgICAyNDYsICAgMjExLCAgIDIxMiwg
ICAyMTMsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDIzLCAgICAyNCwgICAxNzAsCi0gICAgIDIx
NCwgICAyNzMsICAgMjU1LCAgIDE3MSwgICAyMjAsICAgMTA4LCAgIDI5OCwgICAyMTcsICAgIDc0
LCAgIC0yNSwKLSAgICAgMjE1LCAgICA3MCwgICAyMTcsICAgMTc5LCAgIDE4MCwgICAgNDQsICAg
IDc2LCAgICA0NCwgICAyMzcsICAgMjM4LAotICAgICAyMzksICAgMjQwLCAgICA0OSwgICAyNTks
ICAgMjYwLCAgIDIzMywgICAyMzQsICAgMTA4LCAgIDEwOCwgICAxMDgsCi0gICAgIDEwOCwgICAx
MDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMjYxLCAgIDMw
MiwKLSAgICAgIDgzLCAgIDE0NiwgICAgIDIsICAgICAzLCAgICAgNCwgICAxMjEsICAgIDU5LCAg
ICA2MCwgICAgNjEsICAgMTg3LAotICAgICAxODgsICAgMjE3LCAgIDI2NCwgICAxMjQsICAgMTI2
LCAgIDI3NCwgICAyMzUsICAgMjM2LCAgIDI0MSwgICAyNDIsCi0gICAgIDE1NiwgICAtMjYsICAg
MTg5LCAgIDE3MiwgICAxOTUsICAgMjY1LCAgIDE3NywgICAxMDgsICAgMTkwLCAgIDIwMCwKLSAg
ICAgMjc0LCAgIDI3OSwgICAxMjEsICAgMTkzLCAgIDIwMywgICAyMDEsICAgMjA0LCAgIDIwOCwg
ICAyMDUsICAgMjkwLAotICAgICAyMTcsICAtMTE2LCAgIDIyMSwgICAyMDksICAgIDQ0LCAgIDIy
NSwgICAyNDgsICAtMTY0LCAgIDI2OCwgICAyOTksCi0gICAgICA1OCwgICAgIDIsICAgICAzLCAg
ICAgNCwgICAxMDgsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAgMTQ2
LCAgIDE2MywgICAyNjIsICAgMjYzLCAgIC0yNywgICAyNjcsICAgMjc4LCAgIDI4MSwgICAgMTEs
ICAgIDEyLAotICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAg
MTksICAgIDIwLCAgICAyMSwgICAgMjIsCi0gICAgIDI4MCwgICAyODcsICAgMjg4LCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAyODksICAgIDI3LCAgICAyOCwKLSAgICAgIDI5LCAgICAz
MCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAyOTEsICAgMjky
LAotICAgICAgOTIsICAgIDkzLCAgIDI5MywgICAxNDYsICAgMTQ2LCAgIDI5NCwgICAyMzEsICAg
MTQ2LCAgIDE0NiwgICAzMDMsCi0gICAgIDI0NCwgICAyNDMsICAgMTU3LCAgICA3OCwgICAyNDUs
ICAgIDgyLCAgIDE1OCwgICAgNTEsICAgMTk0LCAgICA5NCwKLSAgICAgMjcwLCAgIDI2NiwgICAx
NDYsICAgMjU4LCAgIDI3MSwgICAzMDAsICAgMjgyLCAgICA3MiwgICAgIDAsICAgICAwLAotICAg
ICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDE0NiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgMTQ2LCAgICAgMSwgICAgIDIsICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKLSAgICAgICA4LCAgICAgOSwgICAgMTAsICAg
MTI5LCAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LAotICAgICAxMzUs
ICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgMTM2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLAotICAgICAgOTEsICAgICAw
LCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICA0NCwgICAgNTUsICAgMTY1LCAgIDE2NCwgICAxNjksICAgIDgwLCAgIDIyNiwgICAx
MjMsICAgMjIyLCAgIDIwMCwKKyAgICAgIDcxLCAgICAzMiwgICAgMzMsICAgMjcyLCAgIDE5Mywg
ICAgNzAsICAgMjg4LCAgICA0OSwgICAxODUsICAgMTg2LAorICAgICAgNTYsICAgMTc4LCAgIDEy
MywgICAgODgsICAgIDcyLCAgICA1MCwgICAgNTIsICAgIDUzLCAgIDE3NSwgICAyNzgsCisgICAg
ICA4OSwgICAyMjgsICAgIDU4LCAgICA3NiwgICAxNzYsICAgIDg0LCAgIDMwNCwgICAyMTksICAg
MTcwLCAgIDE3MSwKKyAgICAgIDQ0LCAgICA2NiwgICAgNDQsICAgIDg2LCAgIDI3OCwgICAyMDks
ICAgIDQ0LCAgIDEyNywgICAyOTgsICAgMTk0LAorICAgICAgNTksICAgIDQ0LCAgIDI5OCwgICAx
ODcsICAgMTg4LCAgICA4NCwgICAgNTQsICAgIDMyLCAgICAzMywgICAxNzIsCisgICAgIDE1OCwg
ICAxNjEsICAgIDczLCAgIDE3MywgICAgNjYsICAgIDQ0LCAgIDI3NiwgICAzMDEsICAgMTYyLCAg
ICA2OSwKKyAgICAgIDUzLCAgICA2NywgICAyMTksICAgMjE5LCAgICA2OCwgICAxNjUsICAgMjI1
LCAgICA0NCwgICAgNjAsICAgMTQ4LAorICAgICAyMzAsICAgIDc4LCAgIDIwMCwgICAgIDYsICAg
ICA3LCAgICA0NCwgICAxODMsICAgMjE5LCAgIDE4NCwgICAyMzUsCisgICAgIDIyMCwgICAgNjAs
ICAgIDYxLCAgICA2MiwgICAgNjMsICAgMTIzLCAgICAgNiwgICAgIDcsICAgMTI3LCAgICA0OSwK
KyAgICAgMTI3LCAgIDI1MSwgICAyNDksICAgMjE5LCAgIDI1MiwgICAxMTAsICAgMjU5LCAgICA4
NywgICAgNjEsICAgIDYyLAorICAgICAgNjMsICAgIDIzLCAgICAyNCwgICAtMjcsICAgMjU4LCAg
ICA3MywgICAyMjIsICAgICAyLCAgICAgMywgICAgIDQsCisgICAgIDExMCwgICAgNjEsICAgIDYy
LCAgICA2MywgICAgMjMsICAgIDI0LCAgIDE2NywgICAxNjgsICAgIDQ0LCAgICA3OSwKKyAgICAg
IDQ0LCAgIDI2MiwgICAyNjMsICAgMjEzLCAgIDIxNCwgICAyMTUsICAgIDUyLCAgICA1MywgICAy
NjQsICAgMTgxLAorICAgICAxODIsICAgMzA1LCAgIDIxNiwgICAxODAsICAgMTI2LCAgIDE4OSwg
ICAxOTAsICAgLTc2LCAgIC0yOCwgICAyMzMsCisgICAgIDIzOCwgICAyMzksICAgMjE3LCAgIDE0
OCwgICAyMTksICAgMjY3LCAgIDE3NCwgICAxMjMsICAgMjQwLCAgIDI0MSwKKyAgICAgMjQyLCAg
IDI0MywgICAxOTEsICAgMjQ0LCAgIDI0NSwgICAyNjgsICAgMTc5LCAgIDE5MiwgICAyNzcsICAg
MjA1LAorICAgICAxOTUsICAgMTI3LCAgIDIwNiwgICAyMDIsICAgMjAzLCAgIDIwNywgICAyMTAs
ICAgMjI3LCAgIDIxMSwgICAyMjMsCisgICAgIDI4MiwgIC0xMTcsICAgMjUwLCAgIDI3NywgICAx
MjMsICAgMjcwLCAgLTE2NSwgIC0xMzgsICAgMjY1LCAgIDI2NiwKKyAgICAgMjE5LCAgIDI4MSwg
ICAyOTMsICAgMTEwLCAgIDI4MywgICAyODQsICAgMjk2LCAgIDI5MSwgICAyOTIsICAgMjk0LAor
ICAgICAyOTUsICAgIDQ0LCAgIDMwMiwgICAyNzEsICAgMzA2LCAgIDI0NiwgICAyOTcsICAgMjM0
LCAgIDI0NywgICAgODEsCisgICAgIDE2NSwgICAyNDgsICAgMTQ4LCAgIDIzNiwgICAyMzcsICAg
MTEwLCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMCwKKyAgICAgMTEwLCAgIDExMCwgICAxMTAs
ICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTU5LCAgICA4NSwgICAxNjAsICAgIDUxLAorICAgICAy
MDEsICAgMzAzLCAgIDI3MywgICAyNjEsICAgMjY5LCAgIDI3NCwgICAyODUsICAgIDc1LCAgICAg
MCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgOTQsICAgICAw
LCAgICAgMCwgICAgIDAsICAgMTM3LCAgIDEzOCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAg
ICAwLCAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAg
IDMsCi0gICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAxMjksICAgMTMwLCAgIDEzMSwKLSAgICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LCAgIDEz
NSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgMTYsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsCi0g
ICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzYsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICA4NywKLSAgICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAg
IDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgMjkwLCAgIDExMCwgICAxNDgsICAgMTQ4LCAgICAgMCwgICAgIDAsCisgICAgIDE0
OCwgICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDgsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDExMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAx
NDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ4LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAg
NCwKKyAgICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMxLCAg
IDEzMiwgICAxMzMsICAgICAwLAorICAgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCisgICAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywKKyAg
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwg
ICAgOTAsICAgIDMxLAorICAgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5
NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAs
ICAgICAwLAotICAgICAxMzcsICAgMjE5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAx
MzksICAgIDk1LCAgICA5NiwgICAgIDAsCi0gICAgICA5NywgICAgIDEsICAgICAyLCAgICAgMywg
ICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgIDEy
OSwgICAxMzAsICAgMTMxLCAgICAgMCwgICAxMzIsICAgMTMzLCAgIDEzNCwgICAxMzUsICAgIDEx
LAotICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMs
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM2LCAgICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAg
MzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLAotICAg
ICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAw
LCAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgICAxLAorICAgICAgIDIs
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAxMzEsCisgICAgIDEzMiwgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEz
NywgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAorICAgICAgIDAsICAgICAw
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjks
CisgICAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAg
IDAsICAgIDk0LCAgICA5NSwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsCisgICAg
ICAgMCwgICAxMzksICAgMjIxLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAg
IDk3LCAgICA5OCwKKyAgICAgICAwLCAgICA5OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LAorICAgICAgIDksICAgIDEwLCAgIDEzMSwgICAx
MzIsICAgMTMzLCAgICAgMCwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsCisgICAgICAxMSwg
ICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0
LCAgICAyNSwgICAgMjYsICAgMTM4LAorICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAg
IDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsCisgICAgICAgMCwgICAgOTQs
ICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK
ICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAotICAgICAgOTQsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM3LCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgIDEzOSwgICAgOTUsICAgIDk2
LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwKLSAgICAg
ICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMjksICAgMTMwLCAgIDEzMSwgICAg
IDAsICAgMTMyLAotICAgICAxMzMsICAgMTM0LCAgIDEzNSwgICAgMTEsICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCisgICAgICA5NiwgICAgIDAsICAgICAwLCAgICAg
MCwgICAxMzksICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgMTQxLCAg
ICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAg
ICA1LAorICAgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEzMSwgICAxMzIs
ICAgMTMzLCAgICAgMCwgICAxMzQsCisgICAgIDEzNSwgICAxMzYsICAgMTM3LCAgICAxMSwgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKICAgICAgIDE4LCAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LAot
ICAgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3
LCAgICAzMSwgICAgODgsCi0gICAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAg
IDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgIDI1LCAgICAyNiwgICAxMzgs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLAorICAgICAg
OTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzYsICAgICAwLAotICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAg
IDEsCi0gICAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwg
ICAgIDksICAgIDEwLCAgIDEyOSwKLSAgICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLCAgIDEz
MywgICAxMzQsICAgMTM1LCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAg
ICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCi0g
ICAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcs
ICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAg
OTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLAotICAgICAgOTMsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0
LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAxMzksICAgIDk1LAotICAgICAgOTYsICAgICAwLCAgICA5NywgICAgIDEs
ICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsCi0gICAgICAgOCwgICAg
IDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKLSAgICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAg
ICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCi0gICAgICAgMCwgICAgMjcsICAg
IDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwKLSAg
ICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDc5LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
IDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgICAxLCAgICAgMiwKKyAgICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEs
ICAgMTMyLAorICAgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAg
MTEsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LAorICAgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAg
IDk0LCAgICA5NSwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLAorICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAg
ICA5OCwgICAgIDAsCisgICAgICA5OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1
LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKKyAgICAgIDEwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLAorICAgICAgMTIs
ICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsCisgICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgICAwLCAgICAyNywKKyAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAg
ICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLAorICAgICAgOTQsICAgIDk1
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICA5NiwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLAorICAgICAgOTcsICAgIDk4LCAgICAg
MCwgICAgOTksICAgIDYwLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDYsCisgICAg
ICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAorICAgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsCisgICAgICAyNiwg
ICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAg
ICA5MiwKKyAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAs
ICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwK
LSAgICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAx
MSwgICAgMTIsICAgIDEzLAorICAgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywKICAgICAg
IDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwg
ICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgODcsICAgIDMxLCAgICA4
OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwKLSAgICAgIDkzLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICA5NCwgICAgIDAsCi0gICAgICAgMCwgICAxNjEsICAgICA4LCAgICAgOSwgICAg
MTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwKLSAgICAgIDk2LCAgICAgMCwg
ICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAot
ICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCi0gICAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwKLSAgICAgIDg5LCAgICA5MCwgICAgOTEs
ICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAg
MzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5
NCwgICAgOTUsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LAotICAgICAgMTAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMjA2LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAg
MTEsCi0gICAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwKLSAgICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LAotICAgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsCi0g
ICAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLAorICAgICAxNjMsICAgICA4LCAgICAgOSwg
ICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsCisgICAgICAg
MCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAgICA5MywgICAg
IDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAotICAgICAgOTQsICAgICAwLCAgICAgMCwgICAyMjIsICAgICA4
LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgOTUsICAg
IDk2LCAgICAgMCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKLSAg
ICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwg
ICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsCi0gICAgICAzMSwgICAgODgsICAgIDg5LCAg
ICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwKKyAgICAgICAw
LCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAs
ICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDIwOCwgICAgOTcsICAgIDk4LCAgICAgMCwgICAg
OTksICAgIDExLCAgICAxMiwgICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywg
ICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5
LAorICAgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAg
ICAwLCAgICA5NCwgICAgOTUsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLAotICAg
ICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk1LCAg
ICA5NiwgICAgIDAsCi0gICAgICA5NywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1
LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKLSAgICAgIDIwLCAgICAyMSwgICAgMjIsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgMTc1LAotICAgICAgIDAs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwg
ICAgOTAsCi0gICAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLAorICAgICAyMjQsICAgICA4
LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgs
CisgICAgICAgMCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAg
MTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAg
ICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICA5NCwgICAg
IDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsCi0gICAgICAgOSwg
ICAgMTAsICAgICAwLCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDAsICAgICAwLCAg
ICAgMCwKLSAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLAotICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsCi0gICAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwK
LSAgICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAg
ICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCi0gICAgICAxOCwgICAgMTksICAgIDIw
LCAgICAyMSwgICAgMjIsICAgICAwLCAgIDE5OCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAg
IDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAg
MzEsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgNzEsCi0gICAgICAgMCwgICAgIDAsICAgICAxLCAgICAg
MiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKLSAgICAgICA5LCAg
ICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
MjQ3LAotICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsCi0gICAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwKLSAgICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LAor
ICAgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5
LCAgICAxMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsICAg
ICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgMTYs
ICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAorICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgIDE3NywgICAgIDAsICAgIDI3LCAgICAy
OCwgICAgMjksCisgICAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAg
ICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMiwgICAg
IDMsCisgICAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgIDAsICAgIDk3LCAgICA5OCwKKyAgICAgICAwLCAgICA5OSwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAorICAgICAgMTYsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsCisg
ICAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICAgMCwKKyAgICAgIDMxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsCisgICAgICAx
MywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIx
LCAgICAyMiwKKyAgICAgMTk5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAg
IDI2LCAgICAgMCwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAg
IDAsICAgICAwLCAgICA3NCwgICAgIDAsICAgICAwLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAg
NCwKICAgICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDI1MywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwKICAg
ICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDIzLAogICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsCi0gICAgICAgMiwgICAgIDMsICAgICA0LCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKLSAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIs
ICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAg
MCwgICAgMzEsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAg
IDE0LCAgICAxNSwgICAgMTYsCi0gICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
ICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAyNSwgICAg
MjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAyMjksICAgIDMxLAotICAg
ICAgIDgsICAgICA5LCAgICAxMCwgICAyMzAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2
LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLAorICAgICAgMTMs
ICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwgICAgIDAsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAg
ICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDgsICAgICA5
LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
CiAgICAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAg
MTcsICAgIDE4LCAgICAxOSwKICAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LAotICAgICAgIDAsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEKKyAgICAgICAwLCAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwg
ICAgMTIsCisgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAx
OSwgICAgMjAsICAgIDIxLCAgICAyMiwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMw
LCAgIDIzMSwgICAyMzIsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwKKyAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAy
NSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsCisgICAg
ICAzMQogfTsKIAorI2RlZmluZSB5eXBhY3RfdmFsdWVfaXNfZGVmYXVsdChZeXN0YXRlKSBcCisg
ICghISgoWXlzdGF0ZSkgPT0gKC0yNjEpKSkKKworI2RlZmluZSB5eXRhYmxlX3ZhbHVlX2lzX2Vy
cm9yKFl5dGFibGVfdmFsdWUpIFwKKyAgWVlJRCAoMCkKKwogc3RhdGljIGNvbnN0IHl5dHlwZV9p
bnQxNiB5eWNoZWNrW10gPQogewotICAgICAgIDAsICAgIDU1LCAgICA5NCwgICAgODYsICAgIDcw
LCAgIDEyNywgICAgNDUsICAgMTUxLCAgIDI3MywgICAgNjAsCi0gICAgICA0MCwgICAgMzYsICAg
IDg1LCAgICAgMCwgICAgIDAsICAgMTYwLCAgIDI1NywgICAgMzcsICAgIDc5LCAgICA4NSwKLSAg
ICAgIDg0LCAgICA4MiwgICAgODYsICAgMTA2LCAgICAgMywgICAgNDUsICAgIDcwLCAgIDI1Mywg
ICAyOTMsICAgICA4LAotICAgICAgIDksICAgMjcyLCAgICA1NywgICAgNjMsICAgIDU1LCAgICA1
NiwgICAgNzksICAgIDc2LCAgICA0MiwgICAgODIsCi0gICAgICA0MCwgICAgODUsICAgIDQyLCAg
IDEzNSwgICAgOTUsICAgIDc1LCAgICA0NiwgICAgNTEsICAgIDkyLCAgICA5MywKLSAgICAgIDc5
LCAgICA1MSwgICAgODIsICAgIDgyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcs
ICAgIDQ2LAotICAgICAgNDYsICAgIDc0LCAgIDI4OCwgICAgNjMsICAgIDgyLCAgIDEwOSwgICAy
OTIsICAgIDczLCAgICA4MSwgICAgOTAsCi0gICAgICA5MSwgICAgNzMsICAgMTk0LCAgICA3OSwg
ICAgIDMsICAgIDc1LCAgICA3NiwgICAxNjAsICAgMTcwLCAgICAgOCwKLSAgICAgICA5LCAgICA3
MiwgICAgODIsICAgIDc0LCAgICA3OSwgICAgNzksICAgMTU5LCAgICA4MiwgICAgNTMsICAgIDU0
LAotICAgICAgODEsICAgMTc0LCAgICA3MywgICAxNTksICAgIDczLCAgIDEyNSwgICAgNDUsICAg
MTI3LCAgICA3OSwgICAgNzQsCi0gICAgIDE5MiwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgMzMs
ICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICA3NCwKLSAgICAgIDcxLCAgICA3MywgICAy
MDQsICAgIDc4LCAgIDI1OCwgICAxNTksICAgIDczLCAgICA3OSwgICAgNzYsICAgIDcyLAotICAg
ICAgODEsICAgIDc0LCAgICA3OSwgICAgODcsICAgIDg4LCAgIDEyNSwgICAgNzYsICAgMTI3LCAg
IDE4MywgICAxODQsCi0gICAgIDE4NSwgICAxODYsICAgIDM3LCAgIDIxNiwgICAyMTcsICAgMTc5
LCAgIDE4MCwgICAxODEsICAgMTgyLCAgIDE4MywKLSAgICAgMTg0LCAgIDE4NSwgICAxODYsICAg
MTg3LCAgIDE4OCwgICAxODksICAgMTkwLCAgIDE5MSwgICAyMjEsICAgMjk0LAotICAgICAgNDUs
ICAgMTUxLCAgICAgNCwgICAgIDUsICAgICA2LCAgIDIyMSwgICAgMzMsICAgIDM0LCAgICAzNSwg
ICAgNTcsCi0gICAgICA1OCwgICAgNzksICAgIDgwLCAgICA4MiwgICAxOTQsICAgMjU3LCAgIDE4
MSwgICAxODIsICAgMTg3LCAgIDE4OCwKLSAgICAgIDQ1LCAgICA3MiwgICAgNTksICAgIDczLCAg
ICA0NSwgICAyNDgsICAgIDcyLCAgIDIyMSwgICAgNjEsICAgIDgyLAotICAgICAyNzIsICAgMjY0
LCAgIDI0OCwgICAgNzUsICAgIDcyLCAgICA4MiwgICAgNzIsICAgIDcyLCAgICA4MiwgICAyODEs
Ci0gICAgICA3OSwgICAgNzIsICAgIDc0LCAgICA3NywgICAxOTQsICAgIDc1LCAgICA3NCwgICAg
NzYsICAgMjUyLCAgIDI5MSwKLSAgICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgIDI0OCwg
ICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLAotICAgICAyMTAsICAgMjk0LCAgICA3
NSwgICAgNzUsICAgIDcyLCAgICA0MCwgICAgNzUsICAgIDcyLCAgICAyMSwgICAgMjIsCi0gICAg
ICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAg
IDMxLCAgICAzMiwKLSAgICAgIDc1LCAgICA0NSwgICAgNzMsICAgIDM2LCAgICAzNywgICAgMzgs
ICAgIDM5LCAgICA3NywgICAgNDEsICAgIDQyLAotICAgICAgNDMsICAgIDQ0LCAgICA0NSwgICAg
NDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA4MiwgICAgNzMsCi0gICAgICA1Mywg
ICAgNTQsICAgIDE2LCAgIDI1MywgICAyNTQsICAgIDgxLCAgIDE3MSwgICAyNTcsICAgMjU4LCAg
ICA4MiwKLSAgICAgMTkwLCAgIDE4OSwgICAgODIsICAgIDU3LCAgIDE5MSwgICAgNjQsICAgIDgy
LCAgICAgNSwgICAxMjUsICAgIDcyLAotICAgICAyNTQsICAgMjQ5LCAgIDI3MiwgICAyMTAsICAg
MjU0LCAgIDI5MiwgICAyNzIsICAgIDQ2LCAgICAtMSwgICAgLTEsCi0gICAgICA4MywgICAgODQs
ICAgIC0xLCAgICA4NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMjg4LCAgICAtMSwK
LSAgICAgIC0xLCAgICAtMSwgICAyOTIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAg
NywgICAgIDgsICAgICA5LAotICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwgICAgLTEsICAgIDE3LCAgICAxOCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIy
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAg
IDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAg
MzgsICAgIDM5LAotICAgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwg
ICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksCi0gICAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1
MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgICAwLCAg
ICAyNSwgICAgODksICAgIDg4LCAgICA5NiwgICAgNTcsICAgMTYyLCAgICA3MywgICAxNTMsICAg
MTI4LAorICAgICAgNDAsICAgICAwLCAgICAgMCwgICAyNTYsICAgIDU5LCAgICAzOSwgICAyNzYs
ICAgIDM3LCAgICA1NCwgICAgNTUsCisgICAgICA4MSwgICAxMDgsICAgIDg4LCAgICA3MywgICAg
NDIsICAgIDQ1LCAgICA0NSwgICAgNDYsICAgIDcyLCAgIDI2MCwKKyAgICAgIDgwLCAgICA3Miwg
ICAgNzIsICAgIDUxLCAgICA3OCwgICAgNjUsICAgMjk2LCAgICA3OCwgICAgNTIsICAgIDUzLAor
ICAgICAgNDAsICAgIDM2LCAgICA0MiwgICAgNjcsICAgMjc1LCAgIDEzNywgICAgNDYsICAgIDc3
LCAgIDI5MSwgICAgOTQsCisgICAgICA3OCwgICAgNTEsICAgMjk1LCAgICA4OSwgICAgOTAsICAg
IDg1LCAgICA3NSwgICAgNDYsICAgIDQ2LCAgICA3MywKKyAgICAgIDg0LCAgICA3MywgICAgNzMs
ICAgIDc3LCAgICA1OSwgICAgNjUsICAgIDcyLCAgICA3MiwgICAgODAsICAgIDQ1LAorICAgICAg
NDYsICAgIDc4LCAgICA3OCwgICAgNzgsICAgIDgxLCAgIDE2MiwgICAxNjEsICAgIDc3LCAgICAg
MywgICAgNzksCisgICAgIDE3MiwgICAgNzUsICAgMjAxLCAgICAgOCwgICAgIDksICAgIDg1LCAg
ICA4MywgICAgNzgsICAgIDg1LCAgIDE3NiwKKyAgICAgIDgxLCAgICAgMywgICAgMzMsICAgIDM0
LCAgICAzNSwgICAxNjEsICAgICA4LCAgICAgOSwgICAxMjgsICAgIDM3LAorICAgICAxMzAsICAg
IDc4LCAgIDE5NCwgICAgNzgsICAgIDgxLCAgICA3MywgICAgODEsICAgIDcxLCAgICAzMywgICAg
MzQsCisgICAgICAzNSwgICAgMzYsICAgIDM3LCAgICA3MSwgICAyMDYsICAgIDczLCAgIDI2MSwg
ICAgIDQsICAgICA1LCAgICAgNiwKKyAgICAgIDg4LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAz
NiwgICAgMzcsICAgIDk0LCAgICA5NSwgICAxMjgsICAgIDc1LAorICAgICAxMzAsICAgMjE4LCAg
IDIxOSwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNDUsICAgIDQ2LCAgIDIyMywgICAgODYsCisg
ICAgICA4NywgICAyOTcsICAgIDcwLCAgIDExMSwgICAgODEsICAgIDU2LCAgICA1NywgICAgNzIs
ICAgIDcxLCAgIDE3MywKKyAgICAgMTgzLCAgIDE4NCwgICAgODAsICAgMTUzLCAgICA3OCwgICAg
NzksICAgIDcyLCAgIDIyMywgICAxODUsICAgMTg2LAorICAgICAxODcsICAgMTg4LCAgICA1OCwg
ICAxODksICAgMTkwLCAgIDI1MCwgICAgNzEsICAgIDYwLCAgIDI2MCwgICAgNzEsCisgICAgICA3
NCwgICAyMDEsICAgIDcxLCAgICA4MSwgICAgODEsICAgIDgxLCAgICA3MSwgICAgNzQsICAgIDc2
LCAgICA3MywKKyAgICAgMjY3LCAgICA3MSwgICAgNzMsICAgMjc1LCAgIDI1MCwgICAgNDAsICAg
IDc1LCAgICA3MSwgICAgNzQsICAgIDc0LAorICAgICAgNzgsICAgIDc0LCAgIDI4NCwgICAxNjEs
ICAgIDc0LCAgICA3MSwgICAgMTYsICAgIDcyLCAgICA3NiwgICAgODEsCisgICAgICA3MiwgICAy
MDEsICAgMjk0LCAgIDI1NSwgICAgODEsICAgMTkxLCAgICA4MCwgICAxNzMsICAgMTkyLCAgICA1
OSwKKyAgICAgMjk3LCAgIDE5MywgICAyMTIsICAgMTgxLCAgIDE4MiwgICAxODMsICAgMTg0LCAg
IDE4NSwgICAxODYsICAgMTg3LAorICAgICAxODgsICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTky
LCAgIDE5MywgICAgODUsICAgIDY2LCAgICA4NSwgICAgIDUsCisgICAgIDEzMCwgICAyOTUsICAg
MjU3LCAgIDIxMiwgICAyNTEsICAgMjU3LCAgIDI3NSwgICAgNDYsICAgIC0xLCAgICAtMSwKICAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgNzYsICAgIDc3LCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDgyLCAg
ICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgIDMsICAgICA0LCAgICAgNSwKLSAgICAgICA2
LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LAotICAgICAgLTEsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgIDIzLCAgICAyNCwgICAgMjUsCi0gICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwg
ICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDM2LCAgICAz
NywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1
LAotICAgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEsICAg
IDUzLCAgICA1NCwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyNzgs
ICAgMjIzLCAgIDI1NiwgICAyNTcsICAgIC0xLCAgICAtMSwKKyAgICAgMjYwLCAgIDI2MSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDI3NSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgMjUwLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgIDI5MSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAyOTUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LAorICAgICAgIDcs
ICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwg
ICAgLTEsCisgICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwKKyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LAorICAgICAgMzcsICAgIDM4
LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYs
CisgICAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAg
LTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAg
ICA3NiwgICAgNzcsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAg
IDg0LCAgICAtMSwKLSAgICAgIDg2LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcs
ICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLAotICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAg
MTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwg
ICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICAzMSwKLSAgICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4
LCAgICAzOSwgICAgNDAsICAgIDQxLAotICAgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAg
IDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsCi0gICAgICAtMSwgICAgNTMs
ICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
KyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgNzUsICAgIDc2LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAg
ICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgIDMsCisgICAgICAgNCwgICAgIDUsICAgICA2
LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAg
IDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgIDIzLAorICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwg
ICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDM2LCAgICAz
NywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAg
ICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAg
IDUzLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICA3NSwg
ICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLAor
ICAgICAgLTEsICAgIDg1LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4
LCAgICAgOSwgICAgMTAsCisgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAg
IC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAgMjMs
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAorICAgICAg
MzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAz
OSwgICAgNDAsCisgICAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAg
ICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwKKyAgICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsCi0gICAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4
NiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LAorICAgICAgNzEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDc1LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisg
ICAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUs
ICAgICA2LCAgICAgNywKICAgICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LAogICAgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsCiAgICAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2
LCAgICAzNywKICAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAg
IDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAotICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEs
ICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA0OCwgICAg
NDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcy
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3NiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAgMywKLSAg
ICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwg
ICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAx
OSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAgIDI2LCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKLSAgICAgIC0x
LCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIs
ICAgIDQzLAotICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAg
NTAsICAgIC0xLCAgICAtMSwgICAgNTMsCi0gICAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0x
LAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA4MiwgICAgODMsCi0gICAgICA4NCwgICAgLTEsICAgIDg2LCAgICAgMywgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAxMSwgICAg
MTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAg
ICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwKLSAgICAgIC0xLCAgICA0MSwgICAgNDIsICAg
IDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LAotICAgICAgNTAs
ICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgNzUsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAg
ICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgIDMsICAgICA0LAorICAgICAgIDUsICAgICA2
LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQs
CisgICAgICAxNSwgICAgLTEsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgIDIzLCAgICAyNCwKKyAgICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwg
ICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIDM2LCAgICAz
NywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsCisgICAg
ICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAg
IDUzLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLCAg
ICAtMSwKKyAgICAgIDg1LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4
LCAgICAgOSwgICAgMTAsICAgIDExLAorICAgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsCisgICAgICAyMiwgICAgMjMs
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwK
KyAgICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAz
OSwgICAgLTEsICAgIDQxLAorICAgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAg
ICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsCisgICAgICA1MiwgICAgNTMsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDcxLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEsCisgICAgICA4MiwgICAgODMsICAgIC0xLCAgICA4
NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAgOCwKKyAgICAgICA5LCAg
ICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAorICAgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUs
ICAgIDI2LCAgICAyNywgICAgMjgsCisgICAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwKKyAgICAgIDM5LCAgICAtMSwg
ICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAor
ICAgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgNzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLAotICAgICAg
LTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgIDIxLCAgICAy
MiwgICAgMjMsCisgICAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgy
LCAgICA4MywgICAgLTEsICAgIDg1LCAgICAyMSwgICAgMjIsICAgIDIzLAogICAgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
LTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwg
ICAgNDEsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0
OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLAotICAgICAgNTQsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0g
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDcyLCAgICAtMSwKLSAgICAgIC0xLCAgICA3NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgzLAotICAgICAgODQsICAgIC0xLCAgICA4Niwg
ICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwKLSAgICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAg
IDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAotICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEs
ICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA0NCwgICAg
NDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1
MywKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcy
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsCi0gICAgICAxMiwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAyMSwKLSAg
ICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwg
ICAgMzAsICAgIDMxLAotICAgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsCi0gICAgICA0MiwgICAgNDMsICAgIDQ0LCAg
ICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwKLSAgICAgIC0x
LCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDcxLCAgICAtMSwgICAgLTEsCisgICAgICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4
NSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4
LAorICAgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgMzgsCisgICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMs
ICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAg
LTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsCi0gICAgICA3MiwgICAgLTEsICAgIC0xLCAgICA3NSwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICA4MywgICAgODQsICAg
IC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAotICAgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwg
ICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKLSAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLAorICAgICAgLTEsICAgIC0x
LCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEs
CisgICAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAg
MjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsCisgICAg
ICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAg
IDUyLCAgICA1MywKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODMsICAgIDg0LCAg
ICAtMSwKLSAgICAgIDg2LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAyNywgICAgMjgsICAgIDI5LAotICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksCi0gICAgICAtMSwgICAgNDEs
ICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwK
LSAgICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsCisgICAgICA3NCwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAg
IC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsCisgICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAg
ICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDcyLCAgICAgNCwgICAg
IDUsICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwKLSAgICAgIDExLCAgICAxMiwg
ICAgLTEsICAgIDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwKLSAgICAgIDQxLCAgICA0MiwgICAgNDMs
ICAgIDQ0LCAgICAtMSwgICAgNDYsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLAotICAgICAg
LTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAg
ICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMx
LCAgICAzMiwgICAgLTEsICAgIDc3LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgMzgsICAg
IDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAg
LTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAgMCwKLSAgICAgIC0xLCAgICAtMSwgICAgIDMsICAgICA0LCAgICAg
NSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAotICAgICAgMTEsICAgIDEyLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzcsCi0g
ICAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwKLSAgICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIC0xLAotICAgICAgNDEsICAgIDQyLCAgICA0Mywg
ICAgNDQsICAgIC0xLCAgICA0NiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsCisgICAgICAt
MSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEy
LCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgLTEsICAg
IDg1LCAgICAyMSwgICAgMjIsICAgIDIzLAorICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcs
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCisgICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0
MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAg
ICAtMSwgICAgNTIsICAgIDUzLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgICA0LCAgICAgNSwKKyAg
ICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwg
ICAgODIsICAgIDgzLAorICAgICAgLTEsICAgIDg1LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAy
MSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsCisgICAgICAyNiwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0x
LCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQs
ICAgIC0xLAorICAgICAgNDYsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDEwLCAgICAxMSwgICAgMTIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LAorICAgICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAg
IC0xLCAgICA0MSwgICAgNDIsCisgICAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgICAwLCAgICAtMSwgICAgLTEsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LAogICAg
ICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIy
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDc2LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAogICAgICAgMjcs
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgMzYsCiAgICAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0
MywgICAgNDQsICAgIC0xLCAgICA0NiwKLSAgICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLAotICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMs
Ci0gICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
MzEsICAgIDMyLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwg
ICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLAotICAgICAgNDQsICAgIC0xLCAgICA0
NiwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwKLSAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIDM4LCAgICAzOSwgICAg
LTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCi0gICAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICA1MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKKyAgICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsICAgIDEyLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsCisgICAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwK
KyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAt
MSwgICAgNDEsICAgIDQyLAorICAgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgICA0LCAg
ICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAxMCwgICAgMTEsICAgIDEy
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAg
IC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAg
MjgsICAgIDI5LAogICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksCi0gICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0
MywgICAgNDQsICAgIC0xLCAgICA0NgorICAgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAg
IDQ0LCAgICAtMSwgICAgNDYsICAgIDEwLCAgICAxMSwgICAgMTIsCisgICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwK
KyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsICAgIDMyLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsCisgICAgICA0MywgICAgNDQsICAgIDQ1
LCAgICA0NiwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAg
MjQsICAgIDI1LAorICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDM4LCAgICAz
OSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwKKyAgICAgIDQ2CiB9
OwogCiAvKiBZWVNUT1NbU1RBVEUtTlVNXSAtLSBUaGUgKGludGVybmFsIG51bWJlciBvZiB0aGUp
IGFjY2Vzc2luZwpAQCAtMTMwOCwzMiArMTI5MSwzMiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3Vp
bnQ4IHl5c3Rvc1tdID0KICAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDM2LCAgICAzNywgICAg
MzgsICAgIDM5LCAgICA0MSwgICAgNDIsICAgIDQzLAogICAgICAgNDQsICAgIDQ2LCAgIDEyNiwg
ICAxMjcsICAgMTI4LCAgIDEyOSwgICAxMzAsICAgMTM1LCAgIDEzNiwgICAxMzcsCiAgICAgIDEz
OCwgICAxMzksICAgMTQwLCAgIDE0MSwgICAxNDIsICAgMTQzLCAgIDE3NSwgICAxNzYsICAgMTc3
LCAgICAzNywKLSAgICAgIDQ1LCAgIDE0MCwgICAgNDUsICAgIDc2LCAgICA4MiwgICAxNzgsICAg
IDczLCAgICA3OSwgICAgIDMsICAgIDMzLAotICAgICAgMzQsICAgIDM1LCAgIDEzMiwgICAxMzMs
ICAgMTM4LCAgICA3OSwgICAgODIsICAgIDQ1LCAgIDEzOSwgICAxNDEsCi0gICAgICA3NCwgICAg
IDAsICAgMTc2LCAgIDE0MSwgICAgNzYsICAgMTQ1LCAgICA3NiwgICAxNjEsICAgMTMyLCAgIDEz
MSwKLSAgICAgMTM0LCAgIDEzOSwgICAxMzMsICAgIDQ1LCAgICA3MiwgICAgNzQsICAgIDgxLCAg
ICA0NSwgICAgNDcsICAgIDQ4LAotICAgICAgNDksICAgIDUwLCAgICA1MywgICAgNTQsICAgIDcy
LCAgICA4MywgICAgODQsICAgIDg2LCAgICA5NywgICAgOTgsCi0gICAgICA5OSwgICAxMDEsICAg
MTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEwNiwgICAxMDcsICAgMTA4LCAgIDEwOSwKLSAg
ICAgMTEwLCAgIDExMSwgICAxMTIsICAgMTEzLCAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywg
ICAxMTgsICAgMTE5LAotICAgICAxMjAsICAgMTIxLCAgIDEyNSwgICAxNDIsICAgIDgyLCAgIDE0
NCwgICAxMzksICAgMTQ2LCAgIDE0NywgICAgMTMsCi0gICAgICAxNCwgICAgMTUsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICA0MCwgICAgNzYsICAgIDc3LCAgICA4MiwKLSAgICAgMTA4
LCAgIDEyMSwgICAxMjIsICAgMTI0LCAgIDEyNiwgICAxMjcsICAgMTQyLCAgIDE1MSwgICAxNTIs
ICAgMTUzLAotICAgICAxNTQsICAgMTYyLCAgIDE2MywgICAxNjQsICAgMTY3LCAgIDE3NCwgICAg
NDUsICAgMTMxLCAgIDEzNCwgICAgNzQsCi0gICAgICA4MSwgICAgNzUsICAgMTI1LCAgIDEyMiwg
ICAxNTAsICAgMTA4LCAgIDEwOCwgICAxMjQsICAgIDUzLCAgICA1NCwKLSAgICAgIDc0LCAgICA3
OCwgICAgNzMsICAgIDczLCAgICA3OSwgICAgMzksICAgMTIyLCAgICA3MiwgICAxMDgsICAgIDg3
LAotICAgICAgODgsICAgIDg0LCAgICA4NiwgICAgNTUsICAgIDU2LCAgICA5MCwgICAgOTEsICAg
IDU3LCAgICA1OCwgICAgNTksCi0gICAgICA2MSwgICAgNjAsICAgIDk1LCAgICA3NSwgICAxNDYs
ICAgIDQ1LCAgIDE0OCwgICAxNDksICAgIDc3LCAgIDE0NywKLSAgICAgIDgyLCAgICA4MiwgICAx
NjksICAgIDcyLCAgICA3MiwgICAgODIsICAgIDgyLCAgIDEyNCwgICAgNzIsICAgIDc3LAotICAg
ICAxNTUsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDcxLCAgICA4MSwgICAxMjMsICAgIDc5LCAg
ICA4MiwgICAgNzcsCi0gICAgIDE1MiwgICAgNzQsICAgIDc1LCAgIDEyNSwgICAxNTAsICAgIDc1
LCAgICA3MywgICAxMDAsICAgMTI0LCAgICA0NSwKLSAgICAgIDUwLCAgIDEwMywgICAxMjIsICAg
MTA4LCAgIDEwOCwgICAxMTAsICAgMTEwLCAgIDExMiwgICAxMTIsICAgMTEyLAotICAgICAxMTIs
ICAgMTEzLCAgIDExMywgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjQsICAgIDc3LCAgICA3NCwg
ICAgNzksCi0gICAgICA4MiwgICAxNTgsICAgMTU5LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4
MiwgICAxNjgsICAgMTYyLCAgIDEyMiwKLSAgICAgMTIyLCAgIDEyNSwgICAgNzUsICAgIDc1LCAg
ICA4MCwgICAxMjUsICAgMTQ5LCAgICA0MCwgICAxNjEsICAgMTUzLAotICAgICAxNTEsICAgMTYz
LCAgIDE3MSwgICAgNzMsICAgMTI0LCAgIDEzNywgICAxNjYsICAgMTU2LCAgICA3NSwgICAxMjIs
Ci0gICAgICA3NSwgICAgNzIsICAgMTY2LCAgIDE3MiwgICAxNzMsICAgMTU4LCAgIDE2NSwgICAg
NDUsICAgIDczLCAgICA3NywKLSAgICAgMTI0LCAgICA4MiwgICAgNzMsICAgIDE2LCAgICA4MSwg
ICAxNTMsICAgMTU3LCAgIDE2MSwgICAgNzMsICAgMTI0LAotICAgICAxNTcsICAgMTU4LCAgIDE1
MCwgICAgODIKKyAgICAgIDQ1LCAgIDE0MCwgICAgNDUsICAgIDQ2LCAgICA3NSwgICAgOTYsICAg
IDgxLCAgIDE3OCwgICAgNzIsICAgIDc4LAorICAgICAgIDMsICAgIDMzLCAgICAzNCwgICAgMzUs
ICAgMTMyLCAgIDEzMywgICAxMzgsICAgIDc4LCAgICA4MSwgICAgNDUsCisgICAgICA5NiwgICAx
MzksICAgMTQxLCAgICA3MywgICAgIDAsICAgMTc2LCAgIDE0MSwgICAxNDUsICAgIDc1LCAgICA3
NSwKKyAgICAgMTYxLCAgIDEzMiwgICAxMzEsICAgMTM0LCAgIDEzOSwgICAxMzMsICAgIDk2LCAg
ICA3MSwgICAgNzMsICAgIDgwLAorICAgICAgNDUsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUy
LCAgICA1MywgICAgNzEsICAgIDgyLCAgICA4MywgICAgODUsCisgICAgICA5NywgICAgOTgsICAg
IDk5LCAgIDEwMSwgICAxMDIsICAgMTAzLCAgIDEwNCwgICAxMDUsICAgMTA2LCAgIDEwNywKKyAg
ICAgMTA4LCAgIDEwOSwgICAxMTAsICAgMTExLCAgIDExMiwgICAxMTMsICAgMTE0LCAgIDExNSwg
ICAxMTYsICAgMTE3LAorICAgICAxMTgsICAgMTE5LCAgIDEyMCwgICAxMjEsICAgMTI1LCAgIDE0
MiwgICAgODEsICAgMTM5LCAgIDE0NiwgICAxNDcsCisgICAgIDE0NCwgICAgMTMsICAgIDE0LCAg
ICAxNSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDQwLCAgICA3NSwKKyAgICAgIDc2
LCAgICA4MSwgICAxMDgsICAgMTIxLCAgIDEyMiwgICAxMjQsICAgMTI2LCAgIDEyNywgICAxNDIs
ICAgMTUxLAorICAgICAxNTIsICAgMTUzLCAgIDE1NCwgICAxNjIsICAgMTYzLCAgIDE2NCwgICAx
NjcsICAgMTc0LCAgICA5NiwgICAxMzEsCisgICAgIDEzNCwgICAgNzMsICAgIDgwLCAgICA3NCwg
ICAxMjUsICAgMTIyLCAgIDE1MCwgICAxMDgsICAgMTA4LCAgIDEyNCwKKyAgICAgIDUyLCAgICA1
MywgICAgNzMsICAgIDc3LCAgICA3MiwgICAgNzIsICAgIDc4LCAgICAzOSwgICAxMjIsICAgIDcx
LAorICAgICAxMDgsICAgIDg2LCAgICA4NywgICAgODMsICAgIDg1LCAgICA1NCwgICAgNTUsICAg
IDg5LCAgICA5MCwgICAgNTYsCisgICAgICA1NywgICAgNTgsICAgIDYwLCAgICA1OSwgICAgOTQs
ICAgIDc0LCAgICA5NiwgICAxNDgsICAgMTQ5LCAgICA3NiwKKyAgICAgMTQ3LCAgIDE0NiwgICAg
ODEsICAgIDgxLCAgIDE2OSwgICAgNzEsICAgIDcxLCAgICA4MSwgICAgODEsICAgMTI0LAorICAg
ICAgNzEsICAgIDc2LCAgIDE1NSwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNzAsICAgIDgwLCAg
IDEyMywgICAgNzgsCisgICAgICA4MSwgICAgNzYsICAgMTUyLCAgICA3MywgICAgNzQsICAgMTI1
LCAgIDE1MCwgICAgNzQsICAgIDcyLCAgIDEwMCwKKyAgICAgMTI0LCAgICA0NSwgICAgNDYsICAg
IDk2LCAgIDEwMywgICAxMjIsICAgMTA4LCAgIDEwOCwgICAxMTAsICAgMTEwLAorICAgICAxMTIs
ICAgMTEyLCAgIDExMiwgICAxMTIsICAgMTEzLCAgIDExMywgICAxMTcsICAgMTE4LCAgIDExOSwg
ICAxMjQsCisgICAgICA3MywgICAgNzgsICAgIDgxLCAgICA3NiwgICAxNTgsICAgMTU5LCAgIDE2
MCwgICAxNzAsICAgMTI0LCAgICA4MSwKKyAgICAgMTY4LCAgIDE2MiwgICAxMjIsICAgMTIyLCAg
IDEyNSwgICAgNzQsICAgIDc0LCAgICA3OSwgICAxMjUsICAgMTQ5LAorICAgICAgNDAsICAgMTYx
LCAgIDE1MywgICAxNTEsICAgMTYzLCAgIDE3MSwgICAgNzIsICAgMTI0LCAgIDEzNywgICAxNjYs
CisgICAgIDE1NiwgICAgNzQsICAgMTIyLCAgICA3NCwgICAgNzEsICAgMTY2LCAgIDE3MiwgICAx
NzMsICAgMTU4LCAgIDE2NSwKKyAgICAgIDk2LCAgICA3MiwgICAgNzYsICAgMTI0LCAgICA4MSwg
ICAgNzIsICAgIDE2LCAgICA4MCwgICAxNTMsICAgMTU3LAorICAgICAxNjEsICAgIDcyLCAgIDEy
NCwgICAxNTcsICAgMTU4LCAgIDE1MCwgICAgODEKIH07CiAKICNkZWZpbmUgeXllcnJvawkJKHl5
ZXJyc3RhdHVzID0gMCkKQEAgLTEzNDgsMzAgKzEzMzEsMzkgQEAgc3RhdGljIGNvbnN0IHl5dHlw
ZV91aW50OCB5eXN0b3NbXSA9CiAKIC8qIExpa2UgWVlFUlJPUiBleGNlcHQgZG8gY2FsbCB5eWVy
cm9yLiAgVGhpcyByZW1haW5zIGhlcmUgdGVtcG9yYXJpbHkKICAgIHRvIGVhc2UgdGhlIHRyYW5z
aXRpb24gdG8gdGhlIG5ldyBtZWFuaW5nIG9mIFlZRVJST1IsIGZvciBHQ0MuCi0gICBPbmNlIEdD
QyB2ZXJzaW9uIDIgaGFzIHN1cHBsYW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNhbiBnby4gICovCisg
ICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFzIHN1cHBsYW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNhbiBn
by4gIEhvd2V2ZXIsCisgICBZWUZBSUwgYXBwZWFycyB0byBiZSBpbiB1c2UuICBOZXZlcnRoZWxl
c3MsIGl0IGlzIGZvcm1hbGx5IGRlcHJlY2F0ZWQKKyAgIGluIEJpc29uIDIuNC4yJ3MgTkVXUyBl
bnRyeSwgd2hlcmUgYSBwbGFuIHRvIHBoYXNlIGl0IG91dCBpcworICAgZGlzY3Vzc2VkLiAgKi8K
IAogI2RlZmluZSBZWUZBSUwJCWdvdG8geXllcnJsYWIKKyNpZiBkZWZpbmVkIFlZRkFJTAorICAv
KiBUaGlzIGlzIGhlcmUgdG8gc3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgR0NDIGNwcCdzCisg
ICAgIC1XdW51c2VkLW1hY3Jvcy4gIE5vcm1hbGx5IHdlIGRvbid0IHdvcnJ5IGFib3V0IHRoYXQg
d2FybmluZywgYnV0CisgICAgIHNvbWUgdXNlcnMgZG8sIGFuZCB3ZSB3YW50IHRvIG1ha2UgaXQg
ZWFzeSBmb3IgdXNlcnMgdG8gcmVtb3ZlCisgICAgIFlZRkFJTCB1c2VzLCB3aGljaCB3aWxsIHBy
b2R1Y2Ugd2FybmluZ3MgZnJvbSBCaXNvbiAyLjUuICAqLworI2VuZGlmCiAKICNkZWZpbmUgWVlS
RUNPVkVSSU5HKCkgICghIXl5ZXJyc3RhdHVzKQogCi0jZGVmaW5lIFlZQkFDS1VQKFRva2VuLCBW
YWx1ZSkJCQkJCVwKLWRvCQkJCQkJCQlcCi0gIGlmICh5eWNoYXIgPT0gWVlFTVBUWSAmJiB5eWxl
biA9PSAxKQkJCQlcCi0gICAgewkJCQkJCQkJXAotICAgICAgeXljaGFyID0gKFRva2VuKTsJCQkJ
CQlcCi0gICAgICB5eWx2YWwgPSAoVmFsdWUpOwkJCQkJCVwKLSAgICAgIHl5dG9rZW4gPSBZWVRS
QU5TTEFURSAoeXljaGFyKTsJCQkJXAotICAgICAgWVlQT1BTVEFDSyAoMSk7CQkJCQkJXAotICAg
ICAgZ290byB5eWJhY2t1cDsJCQkJCQlcCi0gICAgfQkJCQkJCQkJXAotICBlbHNlCQkJCQkJCQlc
Ci0gICAgewkJCQkJCQkJXAotICAgICAgeXllcnJvciAoY29udGV4dCwgWVlfKCJzeW50YXggZXJy
b3I6IGNhbm5vdCBiYWNrIHVwIikpOyBcCisjZGVmaW5lIFlZQkFDS1VQKFRva2VuLCBWYWx1ZSkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZG8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgaWYgKHl5Y2hh
ciA9PSBZWUVNUFRZKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgeXljaGFyID0gKFRva2VuKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgIHl5bHZhbCA9IChWYWx1ZSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBZWVBPUFNUQUNLICh5eWxlbik7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgeXlzdGF0ZSA9ICp5
eXNzcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGdv
dG8geXliYWNrdXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB5eWVycm9yICgmeXlsbG9jLCBj
b250ZXh0LCBZWV8oInN5bnRheCBlcnJvcjogY2Fubm90IGJhY2sgdXAiKSk7IFwKICAgICAgIFlZ
RVJST1I7CQkJCQkJCVwKICAgICB9CQkJCQkJCQlcCiB3aGlsZSAoWVlJRCAoMCkpCiAKLQorLyog
RXJyb3IgdG9rZW4gbnVtYmVyICovCiAjZGVmaW5lIFlZVEVSUk9SCTEKICNkZWZpbmUgWVlFUlJD
T0RFCTI1NgogCkBAIC0xMzgwLDI3ICsxMzcyLDI4IEBAIHdoaWxlIChZWUlEICgwKSkKICAgIElm
IE4gaXMgMCwgdGhlbiBzZXQgQ1VSUkVOVCB0byB0aGUgZW1wdHkgbG9jYXRpb24gd2hpY2ggZW5k
cwogICAgdGhlIHByZXZpb3VzIHN5bWJvbDogUkhTWzBdIChhbHdheXMgZGVmaW5lZCkuICAqLwog
Ci0jZGVmaW5lIFlZUkhTTE9DKFJocywgSykgKChSaHMpW0tdKQogI2lmbmRlZiBZWUxMT0NfREVG
QVVMVAotIyBkZWZpbmUgWVlMTE9DX0RFRkFVTFQoQ3VycmVudCwgUmhzLCBOKQkJCQlcCi0gICAg
ZG8JCQkJCQkJCQlcCi0gICAgICBpZiAoWVlJRCAoTikpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLQl7CQkJCQkJCQlcCi0JICAoQ3VycmVudCku
Zmlyc3RfbGluZSAgID0gWVlSSFNMT0MgKFJocywgMSkuZmlyc3RfbGluZTsJXAotCSAgKEN1cnJl
bnQpLmZpcnN0X2NvbHVtbiA9IFlZUkhTTE9DIChSaHMsIDEpLmZpcnN0X2NvbHVtbjsJXAotCSAg
KEN1cnJlbnQpLmxhc3RfbGluZSAgICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfbGluZTsJCVwK
LQkgIChDdXJyZW50KS5sYXN0X2NvbHVtbiAgPSBZWVJIU0xPQyAoUmhzLCBOKS5sYXN0X2NvbHVt
bjsJXAotCX0JCQkJCQkJCVwKLSAgICAgIGVsc2UJCQkJCQkJCVwKLQl7CQkJCQkJCQlcCi0JICAo
Q3VycmVudCkuZmlyc3RfbGluZSAgID0gKEN1cnJlbnQpLmxhc3RfbGluZSAgID0JCVwKLQkgICAg
WVlSSFNMT0MgKFJocywgMCkubGFzdF9saW5lOwkJCQlcCi0JICAoQ3VycmVudCkuZmlyc3RfY29s
dW1uID0gKEN1cnJlbnQpLmxhc3RfY29sdW1uID0JCVwKLQkgICAgWVlSSFNMT0MgKFJocywgMCku
bGFzdF9jb2x1bW47CQkJCVwKLQl9CQkJCQkJCQlcCisjIGRlZmluZSBZWUxMT0NfREVGQVVMVChD
dXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICBpZiAoWVlJRCAoTikpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
KEN1cnJlbnQpLmZpcnN0X2xpbmUgICA9IFlZUkhTTE9DIChSaHMsIDEpLmZpcnN0X2xpbmU7ICAg
ICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IFlZUkhTTE9DIChSaHMs
IDEpLmZpcnN0X2NvbHVtbjsgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSAg
ICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfbGluZTsgICAgICAgICBcCisgICAgICAgICAgKEN1
cnJlbnQpLmxhc3RfY29sdW1uICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfY29sdW1uOyAgICAg
ICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgICA9IChDdXJyZW50KS5sYXN0X2xpbmUg
ICA9ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBZWVJIU0xPQyAoUmhzLCAwKS5sYXN0X2xp
bmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgKEN1cnJlbnQp
LmZpcnN0X2NvbHVtbiA9IChDdXJyZW50KS5sYXN0X2NvbHVtbiA9ICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICBZWVJIU0xPQyAoUmhzLCAwKS5sYXN0X2NvbHVtbjsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgd2hpbGUgKFlZSUQgKDApKQog
I2VuZGlmCiAKKyNkZWZpbmUgWVlSSFNMT0MoUmhzLCBLKSAoKFJocylbS10pCisKIAogLyogWVlf
TE9DQVRJT05fUFJJTlQgLS0gUHJpbnQgdGhlIGxvY2F0aW9uIG9uIHRoZSBzdHJlYW0uCiAgICBU
aGlzIG1hY3JvIHdhcyBub3QgbWFuZGF0ZWQgb3JpZ2luYWxseTogZGVmaW5lIG9ubHkgaWYgd2Ug
a25vdwpAQCAtMTQwOCwxMCArMTQwMSw0NiBAQCB3aGlsZSAoWVlJRCAoMCkpCiAKICNpZm5kZWYg
WVlfTE9DQVRJT05fUFJJTlQKICMgaWYgZGVmaW5lZCBZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlM
VFlQRV9JU19UUklWSUFMCi0jICBkZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKQkJ
CVwKLSAgICAgZnByaW50ZiAoRmlsZSwgIiVkLiVkLSVkLiVkIiwJCQlcCi0JICAgICAgKExvYyku
Zmlyc3RfbGluZSwgKExvYykuZmlyc3RfY29sdW1uLAlcCi0JICAgICAgKExvYykubGFzdF9saW5l
LCAgKExvYykubGFzdF9jb2x1bW4pCisKKy8qIFByaW50ICpZWUxPQ1Agb24gWVlPLiAgUHJpdmF0
ZSwgZG8gbm90IHJlbHkgb24gaXRzIGV4aXN0ZW5jZS4gKi8KKworX19hdHRyaWJ1dGVfXygoX191
bnVzZWRfXykpCisjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19f
IFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorc3Rh
dGljIHVuc2lnbmVkCit5eV9sb2NhdGlvbl9wcmludF8gKEZJTEUgKnl5bywgWVlMVFlQRSBjb25z
dCAqIGNvbnN0IHl5bG9jcCkKKyNlbHNlCitzdGF0aWMgdW5zaWduZWQKK3l5X2xvY2F0aW9uX3By
aW50XyAoeXlvLCB5eWxvY3ApCisgICAgRklMRSAqeXlvOworICAgIFlZTFRZUEUgY29uc3QgKiBj
b25zdCB5eWxvY3A7CisjZW5kaWYKK3sKKyAgdW5zaWduZWQgcmVzID0gMDsKKyAgaW50IGVuZF9j
b2wgPSAwICE9IHl5bG9jcC0+bGFzdF9jb2x1bW4gPyB5eWxvY3AtPmxhc3RfY29sdW1uIC0gMSA6
IDA7CisgIGlmICgwIDw9IHl5bG9jcC0+Zmlyc3RfbGluZSkKKyAgICB7CisgICAgICByZXMgKz0g
ZnByaW50ZiAoeXlvLCAiJWQiLCB5eWxvY3AtPmZpcnN0X2xpbmUpOworICAgICAgaWYgKDAgPD0g
eXlsb2NwLT5maXJzdF9jb2x1bW4pCisgICAgICAgIHJlcyArPSBmcHJpbnRmICh5eW8sICIuJWQi
LCB5eWxvY3AtPmZpcnN0X2NvbHVtbik7CisgICAgfQorICBpZiAoMCA8PSB5eWxvY3AtPmxhc3Rf
bGluZSkKKyAgICB7CisgICAgICBpZiAoeXlsb2NwLT5maXJzdF9saW5lIDwgeXlsb2NwLT5sYXN0
X2xpbmUpCisgICAgICAgIHsKKyAgICAgICAgICByZXMgKz0gZnByaW50ZiAoeXlvLCAiLSVkIiwg
eXlsb2NwLT5sYXN0X2xpbmUpOworICAgICAgICAgIGlmICgwIDw9IGVuZF9jb2wpCisgICAgICAg
ICAgICByZXMgKz0gZnByaW50ZiAoeXlvLCAiLiVkIiwgZW5kX2NvbCk7CisgICAgICAgIH0KKyAg
ICAgIGVsc2UgaWYgKDAgPD0gZW5kX2NvbCAmJiB5eWxvY3AtPmZpcnN0X2NvbHVtbiA8IGVuZF9j
b2wpCisgICAgICAgIHJlcyArPSBmcHJpbnRmICh5eW8sICItJWQiLCBlbmRfY29sKTsKKyAgICB9
CisgIHJldHVybiByZXM7CisgfQorCisjICBkZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwg
TG9jKSAgICAgICAgICBcCisgIHl5X2xvY2F0aW9uX3ByaW50XyAoRmlsZSwgJihMb2MpKQorCiAj
IGVsc2UKICMgIGRlZmluZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2MpICgodm9pZCkgMCkK
ICMgZW5kaWYKQEAgLTE0MTksMTEgKzE0NDgsMTAgQEAgd2hpbGUgKFlZSUQgKDApKQogCiAKIC8q
IFlZTEVYIC0tIGNhbGxpbmcgYHl5bGV4JyB3aXRoIHRoZSByaWdodCBhcmd1bWVudHMuICAqLwot
CiAjaWZkZWYgWVlMRVhfUEFSQU0KLSMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsLCBZWUxF
WF9QQVJBTSkKKyMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsLCAmeXlsbG9jLCBZWUxFWF9Q
QVJBTSkKICNlbHNlCi0jIGRlZmluZSBZWUxFWCB5eWxleCAoJnl5bHZhbCkKKyMgZGVmaW5lIFlZ
TEVYIHl5bGV4ICgmeXlsdmFsLCAmeXlsbG9jKQogI2VuZGlmCiAKIC8qIEVuYWJsZSBkZWJ1Z2dp
bmcgaWYgcmVxdWVzdGVkLiAgKi8KQEAgLTE0NDYsNyArMTQ3NCw3IEBAIGRvIHsJCQkJCQkJCQkg
IFwKICAgICB7CQkJCQkJCQkJICBcCiAgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiVzICIsIFRp
dGxlKTsJCQkJCSAgXAogICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsCQkJCQkJICBcCi0J
CSAgVHlwZSwgVmFsdWUsIGNvbnRleHQpOyBcCisJCSAgVHlwZSwgVmFsdWUsIExvY2F0aW9uLCBj
b250ZXh0KTsgXAogICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwkJCQkJCSAgXAogICAg
IH0JCQkJCQkJCQkgIFwKIH0gd2hpbGUgKFlZSUQgKDApKQpAQCAtMTQ2MCwxOCArMTQ4OCwyMiBA
QCBkbyB7CQkJCQkJCQkJICBcCiAjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5
OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0Nf
VkVSKQogc3RhdGljIHZvaWQKLXl5X3N5bWJvbF92YWx1ZV9wcmludCAoRklMRSAqeXlvdXRwdXQs
IGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcCwgVFBhcnNlQ29udGV4
dCogY29udGV4dCkKK3l5X3N5bWJvbF92YWx1ZV9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5
eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcCwgWVlMVFlQRSBjb25zdCAqIGNv
bnN0IHl5bG9jYXRpb25wLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2
b2lkCi15eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBj
b250ZXh0KQoreXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVl
cCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpCiAgICAgRklMRSAqeXlvdXRwdXQ7CiAgICAgaW50IHl5
dHlwZTsKICAgICBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXA7CisgICAgWVlMVFlQRSBj
b25zdCAqIGNvbnN0IHl5bG9jYXRpb25wOwogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAj
ZW5kaWYKIHsKKyAgRklMRSAqeXlvID0geXlvdXRwdXQ7CisgIFlZVVNFICh5eW8pOwogICBpZiAo
IXl5dmFsdWVwKQogICAgIHJldHVybjsKKyAgWVlVU0UgKHl5bG9jYXRpb25wKTsKICAgWVlVU0Ug
KGNvbnRleHQpOwogIyBpZmRlZiBZWVBSSU5UCiAgIGlmICh5eXR5cGUgPCBZWU5UT0tFTlMpCkBA
IC0xNDgyLDcgKzE1MTQsNyBAQCB5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5
cGUsCiAgIHN3aXRjaCAoeXl0eXBlKQogICAgIHsKICAgICAgIGRlZmF1bHQ6Ci0JYnJlYWs7Cisg
ICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtMTQ5NCwxMyArMTUyNiwxNCBAQCB5eV9zeW1i
b2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsCiAjaWYgKGRlZmluZWQgX19TVERDX18g
fHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8
fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKLXl5X3N5bWJvbF9wcmludCAoRklMRSAq
eXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcCwgVFBh
cnNlQ29udGV4dCogY29udGV4dCkKK3l5X3N5bWJvbF9wcmludCAoRklMRSAqeXlvdXRwdXQsIGlu
dCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcCwgWVlMVFlQRSBjb25zdCAq
IGNvbnN0IHl5bG9jYXRpb25wLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRp
YyB2b2lkCi15eV9zeW1ib2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBjb250
ZXh0KQoreXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2Nh
dGlvbnAsIGNvbnRleHQpCiAgICAgRklMRSAqeXlvdXRwdXQ7CiAgICAgaW50IHl5dHlwZTsKICAg
ICBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXA7CisgICAgWVlMVFlQRSBjb25zdCAqIGNv
bnN0IHl5bG9jYXRpb25wOwogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsK
QEAgLTE1MDksNyArMTU0Miw5IEBAIHl5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwg
eXl2YWwKICAgZWxzZQogICAgIFlZRlBSSU5URiAoeXlvdXRwdXQsICJudGVybSAlcyAoIiwgeXl0
bmFtZVt5eXR5cGVdKTsKIAotICB5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5
cGUsIHl5dmFsdWVwLCBjb250ZXh0KTsKKyAgWVlfTE9DQVRJT05fUFJJTlQgKHl5b3V0cHV0LCAq
eXlsb2NhdGlvbnApOworICBZWUZQUklOVEYgKHl5b3V0cHV0LCAiOiAiKTsKKyAgeXlfc3ltYm9s
X3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnAsIGNv
bnRleHQpOwogICBZWUZQUklOVEYgKHl5b3V0cHV0LCAiKSIpOwogfQogCkBAIC0xNTIxLDE3ICsx
NTU2LDIwIEBAIHl5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWwKICNpZiAo
ZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZp
bmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3Rh
Y2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqYm90dG9tLCB5eXR5cGVfaW50MTYgKnRvcCkKK3l5X3N0
YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKnl5Ym90dG9tLCB5eXR5cGVfaW50MTYgKnl5dG9wKQog
I2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zdGFja19wcmludCAoYm90dG9tLCB0b3ApCi0gICAgeXl0
eXBlX2ludDE2ICpib3R0b207Ci0gICAgeXl0eXBlX2ludDE2ICp0b3A7Cit5eV9zdGFja19wcmlu
dCAoeXlib3R0b20sIHl5dG9wKQorICAgIHl5dHlwZV9pbnQxNiAqeXlib3R0b207CisgICAgeXl0
eXBlX2ludDE2ICp5eXRvcDsKICNlbmRpZgogewogICBZWUZQUklOVEYgKHN0ZGVyciwgIlN0YWNr
IG5vdyIpOwotICBmb3IgKDsgYm90dG9tIDw9IHRvcDsgKytib3R0b20pCi0gICAgWVlGUFJJTlRG
IChzdGRlcnIsICIgJWQiLCAqYm90dG9tKTsKKyAgZm9yICg7IHl5Ym90dG9tIDw9IHl5dG9wOyB5
eWJvdHRvbSsrKQorICAgIHsKKyAgICAgIGludCB5eWJvdCA9ICp5eWJvdHRvbTsKKyAgICAgIFlZ
RlBSSU5URiAoc3RkZXJyLCAiICVkIiwgeXlib3QpOworICAgIH0KICAgWVlGUFJJTlRGIChzdGRl
cnIsICJcbiIpOwogfQogCkBAIC0xNTQ5LDExICsxNTg3LDEyIEBAIGRvIHsJCQkJCQkJCVwKICNp
ZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBk
ZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlf
cmVkdWNlX3ByaW50IChZWVNUWVBFICp5eXZzcCwgaW50IHl5cnVsZSwgVFBhcnNlQ29udGV4dCog
Y29udGV4dCkKK3l5X3JlZHVjZV9wcmludCAoWVlTVFlQRSAqeXl2c3AsIFlZTFRZUEUgKnl5bHNw
LCBpbnQgeXlydWxlLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lk
Ci15eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eXJ1bGUsIGNvbnRleHQpCit5eV9yZWR1Y2VfcHJp
bnQgKHl5dnNwLCB5eWxzcCwgeXlydWxlLCBjb250ZXh0KQogICAgIFlZU1RZUEUgKnl5dnNwOwor
ICAgIFlZTFRZUEUgKnl5bHNwOwogICAgIGludCB5eXJ1bGU7CiAgICAgVFBhcnNlQ29udGV4dCog
Y29udGV4dDsKICNlbmRpZgpAQCAtMTU2NiwxOCArMTYwNSwxOCBAQCB5eV9yZWR1Y2VfcHJpbnQg
KHl5dnNwLCB5eXJ1bGUsIGNvbnRleHQpCiAgIC8qIFRoZSBzeW1ib2xzIGJlaW5nIHJlZHVjZWQu
ICAqLwogICBmb3IgKHl5aSA9IDA7IHl5aSA8IHl5bnJoczsgeXlpKyspCiAgICAgewotICAgICAg
ZnByaW50ZiAoc3RkZXJyLCAiICAgJCVkID0gIiwgeXlpICsgMSk7CisgICAgICBZWUZQUklOVEYg
KHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOwogICAgICAgeXlfc3ltYm9sX3ByaW50IChz
dGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVdICsgeXlpXSwKIAkJICAgICAgICYoeXl2c3BbKHl5
aSArIDEpIC0gKHl5bnJocyldKQotCQkgICAgICAgCQkgICAgICAgLCBjb250ZXh0KTsKLSAgICAg
IGZwcmludGYgKHN0ZGVyciwgIlxuIik7CisJCSAgICAgICAsICYoeXlsc3BbKHl5aSArIDEpIC0g
KHl5bnJocyldKQkJICAgICAgICwgY29udGV4dCk7CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwg
IlxuIik7CiAgICAgfQogfQogCiAjIGRlZmluZSBZWV9SRURVQ0VfUFJJTlQoUnVsZSkJCVwKIGRv
IHsJCQkJCVwKICAgaWYgKHl5ZGVidWcpCQkJCVwKLSAgICB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNw
LCBSdWxlLCBjb250ZXh0KTsgXAorICAgIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5bHNwLCBS
dWxlLCBjb250ZXh0KTsgXAogfSB3aGlsZSAoWVlJRCAoMCkpCiAKIC8qIE5vbnplcm8gbWVhbnMg
cHJpbnQgcGFyc2UgdHJhY2UuICBJdCBpcyBsZWZ0IHVuaW5pdGlhbGl6ZWQgc28gdGhhdApAQCAt
MTYwNyw3ICsxNjQ2LDYgQEAgaW50IHl5ZGVidWc7CiAjIGRlZmluZSBZWU1BWERFUFRIIDEwMDAw
CiAjZW5kaWYKIAotDAogCiAjaWYgWVlFUlJPUl9WRVJCT1NFCiAKQEAgLTE3MTAsMTE1ICsxNzQ4
LDE0NSBAQCB5eXRuYW1lcnIgKGNoYXIgKnl5cmVzLCBjb25zdCBjaGFyICp5eXN0CiB9CiAjIGVu
ZGlmCiAKLS8qIENvcHkgaW50byBZWVJFU1VMVCBhbiBlcnJvciBtZXNzYWdlIGFib3V0IHRoZSB1
bmV4cGVjdGVkIHRva2VuCi0gICBZWUNIQVIgd2hpbGUgaW4gc3RhdGUgWVlTVEFURS4gIFJldHVy
biB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCwKLSAgIGluY2x1ZGluZyB0aGUgdGVybWluYXRp
bmcgbnVsbCBieXRlLiAgSWYgWVlSRVNVTFQgaXMgbnVsbCwgZG8gbm90Ci0gICBjb3B5IGFueXRo
aW5nOyBqdXN0IHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd291bGQgYmUKLSAgIGNv
cGllZC4gIEFzIGEgc3BlY2lhbCBjYXNlLCByZXR1cm4gMCBpZiBhbiBvcmRpbmFyeSAic3ludGF4
IGVycm9yIgotICAgbWVzc2FnZSB3aWxsIGRvLiAgUmV0dXJuIFlZU0laRV9NQVhJTVVNIGlmIG92
ZXJmbG93IG9jY3VycyBkdXJpbmcKLSAgIHNpemUgY2FsY3VsYXRpb24uICAqLwotc3RhdGljIFlZ
U0laRV9UCi15eXN5bnRheF9lcnJvciAoY2hhciAqeXlyZXN1bHQsIGludCB5eXN0YXRlLCBpbnQg
eXljaGFyKQorLyogQ29weSBpbnRvICpZWU1TRywgd2hpY2ggaXMgb2Ygc2l6ZSAqWVlNU0dfQUxM
T0MsIGFuIGVycm9yIG1lc3NhZ2UKKyAgIGFib3V0IHRoZSB1bmV4cGVjdGVkIHRva2VuIFlZVE9L
RU4gZm9yIHRoZSBzdGF0ZSBzdGFjayB3aG9zZSB0b3AgaXMKKyAgIFlZU1NQLgorCisgICBSZXR1
cm4gMCBpZiAqWVlNU0cgd2FzIHN1Y2Nlc3NmdWxseSB3cml0dGVuLiAgUmV0dXJuIDEgaWYgKllZ
TVNHIGlzCisgICBub3QgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlIG1lc3NhZ2UuICBJbiB0aGF0
IGNhc2UsIGFsc28gc2V0CisgICAqWVlNU0dfQUxMT0MgdG8gdGhlIHJlcXVpcmVkIG51bWJlciBv
ZiBieXRlcy4gIFJldHVybiAyIGlmIHRoZQorICAgcmVxdWlyZWQgbnVtYmVyIG9mIGJ5dGVzIGlz
IHRvbyBsYXJnZSB0byBzdG9yZS4gICovCitzdGF0aWMgaW50Cit5eXN5bnRheF9lcnJvciAoWVlT
SVpFX1QgKnl5bXNnX2FsbG9jLCBjaGFyICoqeXltc2csCisgICAgICAgICAgICAgICAgeXl0eXBl
X2ludDE2ICp5eXNzcCwgaW50IHl5dG9rZW4pCiB7Ci0gIGludCB5eW4gPSB5eXBhY3RbeXlzdGF0
ZV07Ci0KLSAgaWYgKCEgKFlZUEFDVF9OSU5GIDwgeXluICYmIHl5biA8PSBZWUxBU1QpKQotICAg
IHJldHVybiAwOwotICBlbHNlCi0gICAgewotICAgICAgaW50IHl5dHlwZSA9IFlZVFJBTlNMQVRF
ICh5eWNoYXIpOwotICAgICAgWVlTSVpFX1QgeXlzaXplMCA9IHl5dG5hbWVyciAoMCwgeXl0bmFt
ZVt5eXR5cGVdKTsKLSAgICAgIFlZU0laRV9UIHl5c2l6ZSA9IHl5c2l6ZTA7Ci0gICAgICBZWVNJ
WkVfVCB5eXNpemUxOwotICAgICAgaW50IHl5c2l6ZV9vdmVyZmxvdyA9IDA7Ci0gICAgICBlbnVt
IHsgWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSA9IDUgfTsKLSAgICAgIGNoYXIgY29uc3Qg
Knl5YXJnW1lZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU1dOwotICAgICAgaW50IHl5eDsKLQot
IyBpZiAwCi0gICAgICAvKiBUaGlzIGlzIHNvIHhnZXR0ZXh0IHNlZXMgdGhlIHRyYW5zbGF0YWJs
ZSBmb3JtYXRzIHRoYXQgYXJlCi0JIGNvbnN0cnVjdGVkIG9uIHRoZSBmbHkuICAqLwotICAgICAg
WVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVy
cm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMiKTsKLSAgICAgIFlZXygic3ludGF4IGVy
cm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMiKTsKLSAgICAgIFlZXygic3lu
dGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMiKTsKLSAg
ICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMg
b3IgJXMgb3IgJXMiKTsKLSMgZW5kaWYKLSAgICAgIGNoYXIgKnl5Zm10OwotICAgICAgY2hhciBj
b25zdCAqeXlmOwotICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXl1bmV4cGVjdGVkW10gPSAic3lu
dGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIjsKLSAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHl5ZXhw
ZWN0aW5nW10gPSAiLCBleHBlY3RpbmcgJXMiOwotICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXlv
cltdID0gIiBvciAlcyI7Ci0gICAgICBjaGFyIHl5Zm9ybWF0W3NpemVvZiB5eXVuZXhwZWN0ZWQK
LQkJICAgICsgc2l6ZW9mIHl5ZXhwZWN0aW5nIC0gMQotCQkgICAgKyAoKFlZRVJST1JfVkVSQk9T
RV9BUkdTX01BWElNVU0gLSAyKQotCQkgICAgICAgKiAoc2l6ZW9mIHl5b3IgLSAxKSldOwotICAg
ICAgY2hhciBjb25zdCAqeXlwcmVmaXggPSB5eWV4cGVjdGluZzsKLQotICAgICAgLyogU3RhcnQg
WVlYIGF0IC1ZWU4gaWYgbmVnYXRpdmUgdG8gYXZvaWQgbmVnYXRpdmUgaW5kZXhlcyBpbgotCSBZ
WUNIRUNLLiAgKi8KLSAgICAgIGludCB5eXhiZWdpbiA9IHl5biA8IDAgPyAteXluIDogMDsKLQot
ICAgICAgLyogU3RheSB3aXRoaW4gYm91bmRzIG9mIGJvdGggeXljaGVjayBhbmQgeXl0bmFtZS4g
ICovCi0gICAgICBpbnQgeXljaGVja2xpbSA9IFlZTEFTVCAtIHl5biArIDE7Ci0gICAgICBpbnQg
eXl4ZW5kID0geXljaGVja2xpbSA8IFlZTlRPS0VOUyA/IHl5Y2hlY2tsaW0gOiBZWU5UT0tFTlM7
Ci0gICAgICBpbnQgeXljb3VudCA9IDE7Ci0KLSAgICAgIHl5YXJnWzBdID0geXl0bmFtZVt5eXR5
cGVdOwotICAgICAgeXlmbXQgPSB5eXN0cGNweSAoeXlmb3JtYXQsIHl5dW5leHBlY3RlZCk7Ci0K
LSAgICAgIGZvciAoeXl4ID0geXl4YmVnaW47IHl5eCA8IHl5eGVuZDsgKyt5eXgpCi0JaWYgKHl5
Y2hlY2tbeXl4ICsgeXluXSA9PSB5eXggJiYgeXl4ICE9IFlZVEVSUk9SKQotCSAgewotCSAgICBp
ZiAoeXljb3VudCA9PSBZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNKQotCSAgICAgIHsKLQkJ
eXljb3VudCA9IDE7Ci0JCXl5c2l6ZSA9IHl5c2l6ZTA7Ci0JCXl5Zm9ybWF0W3NpemVvZiB5eXVu
ZXhwZWN0ZWQgLSAxXSA9ICdcMCc7Ci0JCWJyZWFrOwotCSAgICAgIH0KLQkgICAgeXlhcmdbeXlj
b3VudCsrXSA9IHl5dG5hbWVbeXl4XTsKLQkgICAgeXlzaXplMSA9IHl5c2l6ZSArIHl5dG5hbWVy
ciAoMCwgeXl0bmFtZVt5eXhdKTsKLQkgICAgeXlzaXplX292ZXJmbG93IHw9ICh5eXNpemUxIDwg
eXlzaXplKTsKLQkgICAgeXlzaXplID0geXlzaXplMTsKLQkgICAgeXlmbXQgPSB5eXN0cGNweSAo
eXlmbXQsIHl5cHJlZml4KTsKLQkgICAgeXlwcmVmaXggPSB5eW9yOwotCSAgfQotCi0gICAgICB5
eWYgPSBZWV8oeXlmb3JtYXQpOwotICAgICAgeXlzaXplMSA9IHl5c2l6ZSArIHl5c3RybGVuICh5
eWYpOwotICAgICAgeXlzaXplX292ZXJmbG93IHw9ICh5eXNpemUxIDwgeXlzaXplKTsKLSAgICAg
IHl5c2l6ZSA9IHl5c2l6ZTE7CisgIFlZU0laRV9UIHl5c2l6ZTAgPSB5eXRuYW1lcnIgKFlZX05V
TEwsIHl5dG5hbWVbeXl0b2tlbl0pOworICBZWVNJWkVfVCB5eXNpemUgPSB5eXNpemUwOworICBl
bnVtIHsgWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSA9IDUgfTsKKyAgLyogSW50ZXJuYXRp
b25hbGl6ZWQgZm9ybWF0IHN0cmluZy4gKi8KKyAgY29uc3QgY2hhciAqeXlmb3JtYXQgPSBZWV9O
VUxMOworICAvKiBBcmd1bWVudHMgb2YgeXlmb3JtYXQuICovCisgIGNoYXIgY29uc3QgKnl5YXJn
W1lZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU1dOworICAvKiBOdW1iZXIgb2YgcmVwb3J0ZWQg
dG9rZW5zIChvbmUgZm9yIHRoZSAidW5leHBlY3RlZCIsIG9uZSBwZXIKKyAgICAgImV4cGVjdGVk
IikuICovCisgIGludCB5eWNvdW50ID0gMDsKKworICAvKiBUaGVyZSBhcmUgbWFueSBwb3NzaWJp
bGl0aWVzIGhlcmUgdG8gY29uc2lkZXI6CisgICAgIC0gQXNzdW1lIFlZRkFJTCBpcyBub3QgdXNl
ZC4gIEl0J3MgdG9vIGZsYXdlZCB0byBjb25zaWRlci4gIFNlZQorICAgICAgIDxodHRwOi8vbGlz
dHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYmlzb24tcGF0Y2hlcy8yMDA5LTEyL21zZzAwMDI0Lmh0
bWw+CisgICAgICAgZm9yIGRldGFpbHMuICBZWUVSUk9SIGlzIGZpbmUgYXMgaXQgZG9lcyBub3Qg
aW52b2tlIHRoaXMKKyAgICAgICBmdW5jdGlvbi4KKyAgICAgLSBJZiB0aGlzIHN0YXRlIGlzIGEg
Y29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVsdCBhY3Rpb24sIHRoZW4KKyAgICAgICB0aGUg
b25seSB3YXkgdGhpcyBmdW5jdGlvbiB3YXMgaW52b2tlZCBpcyBpZiB0aGUgZGVmYXVsdCBhY3Rp
b24KKyAgICAgICBpcyBhbiBlcnJvciBhY3Rpb24uICBJbiB0aGF0IGNhc2UsIGRvbid0IGNoZWNr
IGZvciBleHBlY3RlZAorICAgICAgIHRva2VucyBiZWNhdXNlIHRoZXJlIGFyZSBub25lLgorICAg
ICAtIFRoZSBvbmx5IHdheSB0aGVyZSBjYW4gYmUgbm8gbG9va2FoZWFkIHByZXNlbnQgKGluIHl5
Y2hhcikgaXMgaWYKKyAgICAgICB0aGlzIHN0YXRlIGlzIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRo
IGEgZGVmYXVsdCBhY3Rpb24uICBUaHVzLAorICAgICAgIGRldGVjdGluZyB0aGUgYWJzZW5jZSBv
ZiBhIGxvb2thaGVhZCBpcyBzdWZmaWNpZW50IHRvIGRldGVybWluZQorICAgICAgIHRoYXQgdGhl
cmUgaXMgbm8gdW5leHBlY3RlZCBvciBleHBlY3RlZCB0b2tlbiB0byByZXBvcnQuICBJbiB0aGF0
CisgICAgICAgY2FzZSwganVzdCByZXBvcnQgYSBzaW1wbGUgInN5bnRheCBlcnJvciIuCisgICAg
IC0gRG9uJ3QgYXNzdW1lIHRoZXJlIGlzbid0IGEgbG9va2FoZWFkIGp1c3QgYmVjYXVzZSB0aGlz
IHN0YXRlIGlzIGEKKyAgICAgICBjb25zaXN0ZW50IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlv
bi4gIFRoZXJlIG1pZ2h0IGhhdmUgYmVlbiBhCisgICAgICAgcHJldmlvdXMgaW5jb25zaXN0ZW50
IHN0YXRlLCBjb25zaXN0ZW50IHN0YXRlIHdpdGggYSBub24tZGVmYXVsdAorICAgICAgIGFjdGlv
biwgb3IgdXNlciBzZW1hbnRpYyBhY3Rpb24gdGhhdCBtYW5pcHVsYXRlZCB5eWNoYXIuCisgICAg
IC0gT2YgY291cnNlLCB0aGUgZXhwZWN0ZWQgdG9rZW4gbGlzdCBkZXBlbmRzIG9uIHN0YXRlcyB0
byBoYXZlCisgICAgICAgY29ycmVjdCBsb29rYWhlYWQgaW5mb3JtYXRpb24sIGFuZCBpdCBkZXBl
bmRzIG9uIHRoZSBwYXJzZXIgbm90CisgICAgICAgdG8gcGVyZm9ybSBleHRyYSByZWR1Y3Rpb25z
IGFmdGVyIGZldGNoaW5nIGEgbG9va2FoZWFkIGZyb20gdGhlCisgICAgICAgc2Nhbm5lciBhbmQg
YmVmb3JlIGRldGVjdGluZyBhIHN5bnRheCBlcnJvci4gIFRodXMsIHN0YXRlIG1lcmdpbmcKKyAg
ICAgICAoZnJvbSBMQUxSIG9yIElFTFIpIGFuZCBkZWZhdWx0IHJlZHVjdGlvbnMgY29ycnVwdCB0
aGUgZXhwZWN0ZWQKKyAgICAgICB0b2tlbiBsaXN0LiAgSG93ZXZlciwgdGhlIGxpc3QgaXMgY29y
cmVjdCBmb3IgY2Fub25pY2FsIExSIHdpdGgKKyAgICAgICBvbmUgZXhjZXB0aW9uOiBpdCB3aWxs
IHN0aWxsIGNvbnRhaW4gYW55IHRva2VuIHRoYXQgd2lsbCBub3QgYmUKKyAgICAgICBhY2NlcHRl
ZCBkdWUgdG8gYW4gZXJyb3IgYWN0aW9uIGluIGEgbGF0ZXIgc3RhdGUuCisgICovCisgIGlmICh5
eXRva2VuICE9IFlZRU1QVFkpCisgICAgeworICAgICAgaW50IHl5biA9IHl5cGFjdFsqeXlzc3Bd
OworICAgICAgeXlhcmdbeXljb3VudCsrXSA9IHl5dG5hbWVbeXl0b2tlbl07CisgICAgICBpZiAo
IXl5cGFjdF92YWx1ZV9pc19kZWZhdWx0ICh5eW4pKQorICAgICAgICB7CisgICAgICAgICAgLyog
U3RhcnQgWVlYIGF0IC1ZWU4gaWYgbmVnYXRpdmUgdG8gYXZvaWQgbmVnYXRpdmUgaW5kZXhlcyBp
bgorICAgICAgICAgICAgIFlZQ0hFQ0suICBJbiBvdGhlciB3b3Jkcywgc2tpcCB0aGUgZmlyc3Qg
LVlZTiBhY3Rpb25zIGZvcgorICAgICAgICAgICAgIHRoaXMgc3RhdGUgYmVjYXVzZSB0aGV5IGFy
ZSBkZWZhdWx0IGFjdGlvbnMuICAqLworICAgICAgICAgIGludCB5eXhiZWdpbiA9IHl5biA8IDAg
PyAteXluIDogMDsKKyAgICAgICAgICAvKiBTdGF5IHdpdGhpbiBib3VuZHMgb2YgYm90aCB5eWNo
ZWNrIGFuZCB5eXRuYW1lLiAgKi8KKyAgICAgICAgICBpbnQgeXljaGVja2xpbSA9IFlZTEFTVCAt
IHl5biArIDE7CisgICAgICAgICAgaW50IHl5eGVuZCA9IHl5Y2hlY2tsaW0gPCBZWU5UT0tFTlMg
PyB5eWNoZWNrbGltIDogWVlOVE9LRU5TOworICAgICAgICAgIGludCB5eXg7CisKKyAgICAgICAg
ICBmb3IgKHl5eCA9IHl5eGJlZ2luOyB5eXggPCB5eXhlbmQ7ICsreXl4KQorICAgICAgICAgICAg
aWYgKHl5Y2hlY2tbeXl4ICsgeXluXSA9PSB5eXggJiYgeXl4ICE9IFlZVEVSUk9SCisgICAgICAg
ICAgICAgICAgJiYgIXl5dGFibGVfdmFsdWVfaXNfZXJyb3IgKHl5dGFibGVbeXl4ICsgeXluXSkp
CisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoeXljb3VudCA9PSBZWUVSUk9S
X1ZFUkJPU0VfQVJHU19NQVhJTVVNKQorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICB5eWNvdW50ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgeXlzaXplID0geXlzaXpl
MDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgeXlhcmdbeXljb3VudCsrXSA9IHl5dG5hbWVbeXl4XTsKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICBZWVNJWkVfVCB5eXNpemUxID0geXlzaXplICsgeXl0
bmFtZXJyIChZWV9OVUxMLCB5eXRuYW1lW3l5eF0pOworICAgICAgICAgICAgICAgICAgaWYgKCEg
KHl5c2l6ZSA8PSB5eXNpemUxCisgICAgICAgICAgICAgICAgICAgICAgICAgJiYgeXlzaXplMSA8
PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsK
KyAgICAgICAgICAgICAgICAgIHl5c2l6ZSA9IHl5c2l6ZTE7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKLSAgICAgIGlmICh5eXNpemVfb3Zl
cmZsb3cpCi0JcmV0dXJuIFlZU0laRV9NQVhJTVVNOworICBzd2l0Y2ggKHl5Y291bnQpCisgICAg
eworIyBkZWZpbmUgWVlDQVNFXyhOLCBTKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBj
YXNlIE46ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeXlmb3JtYXQg
PSBTOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgYnJlYWsKKyAgICAgIFlZQ0FTRV8o
MCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CisgICAgICBZWUNBU0VfKDEsIFlZXygic3ludGF4IGVy
cm9yLCB1bmV4cGVjdGVkICVzIikpOworICAgICAgWVlDQVNFXygyLCBZWV8oInN5bnRheCBlcnJv
ciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIikpOworICAgICAgWVlDQVNFXygzLCBZWV8o
InN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIikpOworICAg
ICAgWVlDQVNFXyg0LCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5n
ICVzIG9yICVzIG9yICVzIikpOworICAgICAgWVlDQVNFXyg1LCBZWV8oInN5bnRheCBlcnJvciwg
dW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIG9yICVzIikpOworIyB1bmRl
ZiBZWUNBU0VfCisgICAgfQogCi0gICAgICBpZiAoeXlyZXN1bHQpCi0JewotCSAgLyogQXZvaWQg
c3ByaW50ZiwgYXMgdGhhdCBpbmZyaW5nZXMgb24gdGhlIHVzZXIncyBuYW1lIHNwYWNlLgotCSAg
ICAgRG9uJ3QgaGF2ZSB1bmRlZmluZWQgYmVoYXZpb3IgZXZlbiBpZiB0aGUgdHJhbnNsYXRpb24K
LQkgICAgIHByb2R1Y2VkIGEgc3RyaW5nIHdpdGggdGhlIHdyb25nIG51bWJlciBvZiAiJXMicy4g
ICovCi0JICBjaGFyICp5eXAgPSB5eXJlc3VsdDsKLQkgIGludCB5eWkgPSAwOwotCSAgd2hpbGUg
KCgqeXlwID0gKnl5ZikgIT0gJ1wwJykKLQkgICAgewotCSAgICAgIGlmICgqeXlwID09ICclJyAm
JiB5eWZbMV0gPT0gJ3MnICYmIHl5aSA8IHl5Y291bnQpCi0JCXsKLQkJICB5eXAgKz0geXl0bmFt
ZXJyICh5eXAsIHl5YXJnW3l5aSsrXSk7Ci0JCSAgeXlmICs9IDI7Ci0JCX0KLQkgICAgICBlbHNl
Ci0JCXsKLQkJICB5eXArKzsKLQkJICB5eWYrKzsKLQkJfQotCSAgICB9Ci0JfQotICAgICAgcmV0
dXJuIHl5c2l6ZTsKKyAgeworICAgIFlZU0laRV9UIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXN0cmxl
biAoeXlmb3JtYXQpOworICAgIGlmICghICh5eXNpemUgPD0geXlzaXplMSAmJiB5eXNpemUxIDw9
IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCisgICAgICByZXR1cm4gMjsKKyAgICB5eXNpemUgPSB5
eXNpemUxOworICB9CisKKyAgaWYgKCp5eW1zZ19hbGxvYyA8IHl5c2l6ZSkKKyAgICB7CisgICAg
ICAqeXltc2dfYWxsb2MgPSAyICogeXlzaXplOworICAgICAgaWYgKCEgKHl5c2l6ZSA8PSAqeXlt
c2dfYWxsb2MKKyAgICAgICAgICAgICAmJiAqeXltc2dfYWxsb2MgPD0gWVlTVEFDS19BTExPQ19N
QVhJTVVNKSkKKyAgICAgICAgKnl5bXNnX2FsbG9jID0gWVlTVEFDS19BTExPQ19NQVhJTVVNOwor
ICAgICAgcmV0dXJuIDE7CiAgICAgfQorCisgIC8qIEF2b2lkIHNwcmludGYsIGFzIHRoYXQgaW5m
cmluZ2VzIG9uIHRoZSB1c2VyJ3MgbmFtZSBzcGFjZS4KKyAgICAgRG9uJ3QgaGF2ZSB1bmRlZmlu
ZWQgYmVoYXZpb3IgZXZlbiBpZiB0aGUgdHJhbnNsYXRpb24KKyAgICAgcHJvZHVjZWQgYSBzdHJp
bmcgd2l0aCB0aGUgd3JvbmcgbnVtYmVyIG9mICIlcyJzLiAgKi8KKyAgeworICAgIGNoYXIgKnl5
cCA9ICp5eW1zZzsKKyAgICBpbnQgeXlpID0gMDsKKyAgICB3aGlsZSAoKCp5eXAgPSAqeXlmb3Jt
YXQpICE9ICdcMCcpCisgICAgICBpZiAoKnl5cCA9PSAnJScgJiYgeXlmb3JtYXRbMV0gPT0gJ3Mn
ICYmIHl5aSA8IHl5Y291bnQpCisgICAgICAgIHsKKyAgICAgICAgICB5eXAgKz0geXl0bmFtZXJy
ICh5eXAsIHl5YXJnW3l5aSsrXSk7CisgICAgICAgICAgeXlmb3JtYXQgKz0gMjsKKyAgICAgICAg
fQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgeXlwKys7CisgICAgICAgICAgeXlm
b3JtYXQrKzsKKyAgICAgICAgfQorICB9CisgIHJldHVybiAwOwogfQogI2VuZGlmIC8qIFlZRVJS
T1JfVkVSQk9TRSAqLwotDAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLgogfCBSZWxlYXNlIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB0byB0aGlzIHN5
bWJvbC4gIHwKQEAgLTE4MjgsMTcgKzE4OTYsMTkgQEAgeXlzeW50YXhfZXJyb3IgKGNoYXIgKnl5
cmVzdWx0LCBpbnQgeXlzdAogI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlf
X0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZF
UikKIHN0YXRpYyB2b2lkCi15eWRlc3RydWN0IChjb25zdCBjaGFyICp5eW1zZywgaW50IHl5dHlw
ZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eWRlc3RydWN0
IChjb25zdCBjaGFyICp5eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFlZTFRZ
UEUgKnl5bG9jYXRpb25wLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2
b2lkCi15eWRlc3RydWN0ICh5eW1zZywgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCkKK3l5ZGVz
dHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICAg
ICBjb25zdCBjaGFyICp5eW1zZzsKICAgICBpbnQgeXl0eXBlOwogICAgIFlZU1RZUEUgKnl5dmFs
dWVwOworICAgIFlZTFRZUEUgKnl5bG9jYXRpb25wOwogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRl
eHQ7CiAjZW5kaWYKIHsKICAgWVlVU0UgKHl5dmFsdWVwKTsKKyAgWVlVU0UgKHl5bG9jYXRpb25w
KTsKICAgWVlVU0UgKGNvbnRleHQpOwogCiAgIGlmICgheXltc2cpCkBAIC0xODQ5LDI4ICsxOTE5
LDkgQEAgeXlkZXN0cnVjdCAoeXltc2csIHl5dHlwZSwgeXl2YWx1ZXAsIGNvbgogICAgIHsKIAog
ICAgICAgZGVmYXVsdDoKLQlicmVhazsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQotDAotCi0v
KiBQcmV2ZW50IHdhcm5pbmdzIGZyb20gLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotCi0jaWZk
ZWYgWVlQQVJTRV9QQVJBTQotI2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVz
cGx1cwotaW50IHl5cGFyc2UgKHZvaWQgKllZUEFSU0VfUEFSQU0pOwotI2Vsc2UKLWludCB5eXBh
cnNlICgpOwotI2VuZGlmCi0jZWxzZSAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KLSNpZiBkZWZpbmVk
IF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKLWludCB5eXBhcnNlIChUUGFyc2VDb250
ZXh0KiBjb250ZXh0KTsKLSNlbHNlCi1pbnQgeXlwYXJzZSAoKTsKLSNlbmRpZgotI2VuZGlmIC8q
ICEgWVlQQVJTRV9QQVJBTSAqLwotCi0KIAogCiAKQEAgLTE5MDEsNzcgKzE5NTIsMTEzIEBAIHl5
cGFyc2UgKGNvbnRleHQpCiAjZW5kaWYKICNlbmRpZgogewotICAvKiBUaGUgbG9vay1haGVhZCBz
eW1ib2wuICAqLworLyogVGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLwogaW50IHl5Y2hhcjsKIAot
LyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCi1ZWVNU
WVBFIHl5bHZhbDsKLQotLyogTnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KLWlu
dCB5eW5lcnJzOwogCi0gIGludCB5eXN0YXRlOwotICBpbnQgeXluOwotICBpbnQgeXlyZXN1bHQ7
Ci0gIC8qIE51bWJlciBvZiB0b2tlbnMgdG8gc2hpZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVu
YWJsZWQuICAqLwotICBpbnQgeXllcnJzdGF0dXM7Ci0gIC8qIExvb2stYWhlYWQgdG9rZW4gYXMg
YW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4gICovCi0gIGludCB5eXRva2Vu
ID0gMDsKLSNpZiBZWUVSUk9SX1ZFUkJPU0UKLSAgLyogQnVmZmVyIGZvciBlcnJvciBtZXNzYWdl
cywgYW5kIGl0cyBhbGxvY2F0ZWQgc2l6ZS4gICovCi0gIGNoYXIgeXltc2didWZbMTI4XTsKLSAg
Y2hhciAqeXltc2cgPSB5eW1zZ2J1ZjsKLSAgWVlTSVpFX1QgeXltc2dfYWxsb2MgPSBzaXplb2Yg
eXltc2didWY7CisjaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiA0MDcgPD0gX19HTlVDX18gKiAxMDAg
KyBfX0dOVUNfTUlOT1JfXworLyogU3VwcHJlc3MgYW4gaW5jb3JyZWN0IGRpYWdub3N0aWMgYWJv
dXQgeXlsdmFsIGJlaW5nIHVuaW5pdGlhbGl6ZWQuICAqLworIyBkZWZpbmUgWVlfSUdOT1JFX01B
WUJFX1VOSU5JVElBTElaRURfQkVHSU4gXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBw
dXNoIikgXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVd1bmluaXRp
YWxpemVkXCIiKVwKKyAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XbWF5
YmUtdW5pbml0aWFsaXplZFwiIikKKyMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJ
WkVEX0VORCBcCisgICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIHBvcCIpCisjZWxzZQorLyog
RGVmYXVsdCB2YWx1ZSB1c2VkIGZvciBpbml0aWFsaXphdGlvbiwgZm9yIHBhY2lmeWluZyBvbGRl
ciBHQ0NzCisgICBvciBub24tR0NDIGNvbXBpbGVycy4gICovCitzdGF0aWMgWVlTVFlQRSB5eXZh
bF9kZWZhdWx0OworIyBkZWZpbmUgWVlfSU5JVElBTF9WQUxVRShWYWx1ZSkgPSBWYWx1ZQogI2Vu
ZGlmCitzdGF0aWMgWVlMVFlQRSB5eWxvY19kZWZhdWx0CisjIGlmIGRlZmluZWQgWVlMVFlQRV9J
U19UUklWSUFMICYmIFlZTFRZUEVfSVNfVFJJVklBTAorICA9IHsgMSwgMSwgMSwgMSB9CisjIGVu
ZGlmCis7CisjaWZuZGVmIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOCisjIGRl
ZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgorIyBkZWZpbmUgWVlfSUdO
T1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECisjZW5kaWYKKyNpZm5kZWYgWVlfSU5JVElBTF9W
QUxVRQorIyBkZWZpbmUgWVlfSU5JVElBTF9WQUxVRShWYWx1ZSkgLyogTm90aGluZy4gKi8KKyNl
bmRpZgorCisvKiBUaGUgc2VtYW50aWMgdmFsdWUgb2YgdGhlIGxvb2thaGVhZCBzeW1ib2wuICAq
LworWVlTVFlQRSB5eWx2YWwgWVlfSU5JVElBTF9WQUxVRSh5eXZhbF9kZWZhdWx0KTsKKworLyog
TG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLworWVlMVFlQRSB5eWxs
b2MgPSB5eWxvY19kZWZhdWx0OwogCi0gIC8qIFRocmVlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6
Ci0gICAgIGB5eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMsCi0gICAgIGB5eXZzJzogcmVsYXRlZCB0
byBzZW1hbnRpYyB2YWx1ZXMsCi0gICAgIGB5eWxzJzogcmVsYXRlZCB0byBsb2NhdGlvbnMuCiAK
LSAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0aHJ1IHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxv
dyB5eW92ZXJmbG93Ci0gICAgIHRvIHJlYWxsb2NhdGUgdGhlbSBlbHNld2hlcmUuICAqLworICAg
IC8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCisgICAgaW50IHl5bmVycnM7
CiAKLSAgLyogVGhlIHN0YXRlIHN0YWNrLiAgKi8KLSAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5J
VERFUFRIXTsKLSAgeXl0eXBlX2ludDE2ICp5eXNzID0geXlzc2E7Ci0gIHl5dHlwZV9pbnQxNiAq
eXlzc3A7CisgICAgaW50IHl5c3RhdGU7CisgICAgLyogTnVtYmVyIG9mIHRva2VucyB0byBzaGlm
dCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4gICovCisgICAgaW50IHl5ZXJyc3RhdHVz
OwogCi0gIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCi0gIFlZU1RZUEUgeXl2c2Fb
WVlJTklUREVQVEhdOwotICBZWVNUWVBFICp5eXZzID0geXl2c2E7Ci0gIFlZU1RZUEUgKnl5dnNw
OworICAgIC8qIFRoZSBzdGFja3MgYW5kIHRoZWlyIHRvb2xzOgorICAgICAgIGB5eXNzJzogcmVs
YXRlZCB0byBzdGF0ZXMuCisgICAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVl
cy4KKyAgICAgICBgeXlscyc6IHJlbGF0ZWQgdG8gbG9jYXRpb25zLgogCisgICAgICAgUmVmZXIg
dG8gdGhlIHN0YWNrcyB0aHJvdWdoIHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJm
bG93CisgICAgICAgdG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCisKKyAgICAvKiBU
aGUgc3RhdGUgc3RhY2suICAqLworICAgIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07
CisgICAgeXl0eXBlX2ludDE2ICp5eXNzOworICAgIHl5dHlwZV9pbnQxNiAqeXlzc3A7CisKKyAg
ICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3RhY2suICAqLworICAgIFlZU1RZUEUgeXl2c2FbWVlJ
TklUREVQVEhdOworICAgIFlZU1RZUEUgKnl5dnM7CisgICAgWVlTVFlQRSAqeXl2c3A7CiAKKyAg
ICAvKiBUaGUgbG9jYXRpb24gc3RhY2suICAqLworICAgIFlZTFRZUEUgeXlsc2FbWVlJTklUREVQ
VEhdOworICAgIFlZTFRZUEUgKnl5bHM7CisgICAgWVlMVFlQRSAqeXlsc3A7CiAKLSNkZWZpbmUg
WVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5c3NwIC09IChOKSkKKyAgICAvKiBUaGUg
bG9jYXRpb25zIHdoZXJlIHRoZSBlcnJvciBzdGFydGVkIGFuZCBlbmRlZC4gICovCisgICAgWVlM
VFlQRSB5eWVycm9yX3JhbmdlWzNdOwogCi0gIFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklU
REVQVEg7CisgICAgWVlTSVpFX1QgeXlzdGFja3NpemU7CiAKKyAgaW50IHl5bjsKKyAgaW50IHl5
cmVzdWx0OworICAvKiBMb29rYWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQp
IHRva2VuIG51bWJlci4gICovCisgIGludCB5eXRva2VuID0gMDsKICAgLyogVGhlIHZhcmlhYmxl
cyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKICAg
ICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KICAgWVlTVFlQRSB5eXZhbDsKKyAgWVlMVFlQRSB5eWxv
YzsKKworI2lmIFlZRVJST1JfVkVSQk9TRQorICAvKiBCdWZmZXIgZm9yIGVycm9yIG1lc3NhZ2Vz
LCBhbmQgaXRzIGFsbG9jYXRlZCBzaXplLiAgKi8KKyAgY2hhciB5eW1zZ2J1ZlsxMjhdOworICBj
aGFyICp5eW1zZyA9IHl5bXNnYnVmOworICBZWVNJWkVfVCB5eW1zZ19hbGxvYyA9IHNpemVvZiB5
eW1zZ2J1ZjsKKyNlbmRpZgogCisjZGVmaW5lIFlZUE9QU1RBQ0soTikgICAoeXl2c3AgLT0gKE4p
LCB5eXNzcCAtPSAoTiksIHl5bHNwIC09IChOKSkKIAogICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJv
bHMgb24gdGhlIFJIUyBvZiB0aGUgcmVkdWNlZCBydWxlLgogICAgICBLZWVwIHRvIHplcm8gd2hl
biBubyBzeW1ib2wgc2hvdWxkIGJlIHBvcHBlZC4gICovCiAgIGludCB5eWxlbiA9IDA7CiAKKyAg
eXlzc3AgPSB5eXNzID0geXlzc2E7CisgIHl5dnNwID0geXl2cyA9IHl5dnNhOworICB5eWxzcCA9
IHl5bHMgPSB5eWxzYTsKKyAgeXlzdGFja3NpemUgPSBZWUlOSVRERVBUSDsKKwogICBZWURQUklO
VEYgKChzdGRlcnIsICJTdGFydGluZyBwYXJzZVxuIikpOwogCiAgIHl5c3RhdGUgPSAwOwogICB5
eWVycnN0YXR1cyA9IDA7CiAgIHl5bmVycnMgPSAwOwotICB5eWNoYXIgPSBZWUVNUFRZOwkJLyog
Q2F1c2UgYSB0b2tlbiB0byBiZSByZWFkLiAgKi8KLQotICAvKiBJbml0aWFsaXplIHN0YWNrIHBv
aW50ZXJzLgotICAgICBXYXN0ZSBvbmUgZWxlbWVudCBvZiB2YWx1ZSBhbmQgbG9jYXRpb24gc3Rh
Y2sKLSAgICAgc28gdGhhdCB0aGV5IHN0YXkgb24gdGhlIHNhbWUgbGV2ZWwgYXMgdGhlIHN0YXRl
IHN0YWNrLgotICAgICBUaGUgd2FzdGVkIGVsZW1lbnRzIGFyZSBuZXZlciBpbml0aWFsaXplZC4g
ICovCi0KLSAgeXlzc3AgPSB5eXNzOwotICB5eXZzcCA9IHl5dnM7Ci0KKyAgeXljaGFyID0gWVlF
TVBUWTsgLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFkLiAgKi8KKyAgeXlsc3BbMF0gPSB5eWxs
b2M7CiAgIGdvdG8geXlzZXRzdGF0ZTsKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCkBAIC0xOTk3LDcgKzIwODQsNyBAQCBp
bnQgeXluZXJyczsKIAkgICBtZW1vcnkuICAqLwogCVlZU1RZUEUgKnl5dnMxID0geXl2czsKIAl5
eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKLQorCVlZTFRZUEUgKnl5bHMxID0geXlsczsKIAog
CS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9m
IHRoZQogCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQgc3RhY2ssIGluIGJ5dGVzLiAgVGhpcyB1c2Vk
IHRvIGJlIGEKQEAgLTIwMDYsOSArMjA5MywxMCBAQCBpbnQgeXluZXJyczsKIAl5eW92ZXJmbG93
IChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwKIAkJICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9m
ICgqeXlzc3ApLAogCQkgICAgJnl5dnMxLCB5eXNpemUgKiBzaXplb2YgKCp5eXZzcCksCi0KKwkJ
ICAgICZ5eWxzMSwgeXlzaXplICogc2l6ZW9mICgqeXlsc3ApLAogCQkgICAgJnl5c3RhY2tzaXpl
KTsKIAorCXl5bHMgPSB5eWxzMTsKIAl5eXNzID0geXlzczE7CiAJeXl2cyA9IHl5dnMxOwogICAg
ICAgfQpAQCAtMjAyOSw5ICsyMTE3LDkgQEAgaW50IHl5bmVycnM7CiAJICAodW5pb24geXlhbGxv
YyAqKSBZWVNUQUNLX0FMTE9DIChZWVNUQUNLX0JZVEVTICh5eXN0YWNrc2l6ZSkpOwogCWlmICgh
IHl5cHRyKQogCSAgZ290byB5eWV4aGF1c3RlZGxhYjsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXNz
KTsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXZzKTsKLQorCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3Nf
YWxsb2MsIHl5c3MpOworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnNfYWxsb2MsIHl5dnMpOworCVlZ
U1RBQ0tfUkVMT0NBVEUgKHl5bHNfYWxsb2MsIHl5bHMpOwogIyAgdW5kZWYgWVlTVEFDS19SRUxP
Q0FURQogCWlmICh5eXNzMSAhPSB5eXNzYSkKIAkgIFlZU1RBQ0tfRlJFRSAoeXlzczEpOwpAQCAt
MjA0MSw3ICsyMTI5LDcgQEAgaW50IHl5bmVycnM7CiAKICAgICAgIHl5c3NwID0geXlzcyArIHl5
c2l6ZSAtIDE7CiAgICAgICB5eXZzcCA9IHl5dnMgKyB5eXNpemUgLSAxOwotCisgICAgICB5eWxz
cCA9IHl5bHMgKyB5eXNpemUgLSAxOwogCiAgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFj
ayBzaXplIGluY3JlYXNlZCB0byAlbHVcbiIsCiAJCSAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0
YWNrc2l6ZSkpOwpAQCAtMjA1Miw2ICsyMTQwLDkgQEAgaW50IHl5bmVycnM7CiAKICAgWVlEUFJJ
TlRGICgoc3RkZXJyLCAiRW50ZXJpbmcgc3RhdGUgJWRcbiIsIHl5c3RhdGUpKTsKIAorICBpZiAo
eXlzdGF0ZSA9PSBZWUZJTkFMKQorICAgIFlZQUNDRVBUOworCiAgIGdvdG8geXliYWNrdXA7CiAK
IC8qLS0tLS0tLS0tLS0uCkBAIC0yMDYwLDE2ICsyMTUxLDE2IEBAIGludCB5eW5lcnJzOwogeXli
YWNrdXA6CiAKICAgLyogRG8gYXBwcm9wcmlhdGUgcHJvY2Vzc2luZyBnaXZlbiB0aGUgY3VycmVu
dCBzdGF0ZS4gIFJlYWQgYQotICAgICBsb29rLWFoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFu
ZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KKyAgICAgbG9va2FoZWFkIHRva2VuIGlmIHdl
IG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KIAotICAvKiBGaXJzdCB0
cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91dCByZWZlcmVuY2UgdG8gbG9vay1haGVhZCB0
b2tlbi4gICovCisgIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJl
ZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4uICAqLwogICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07
Ci0gIGlmICh5eW4gPT0gWVlQQUNUX05JTkYpCisgIGlmICh5eXBhY3RfdmFsdWVfaXNfZGVmYXVs
dCAoeXluKSkKICAgICBnb3RvIHl5ZGVmYXVsdDsKIAotICAvKiBOb3Qga25vd24gPT4gZ2V0IGEg
bG9vay1haGVhZCB0b2tlbiBpZiBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KKyAgLyogTm90
IGtub3duID0+IGdldCBhIGxvb2thaGVhZCB0b2tlbiBpZiBkb24ndCBhbHJlYWR5IGhhdmUgb25l
LiAgKi8KIAotICAvKiBZWUNIQVIgaXMgZWl0aGVyIFlZRU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxp
ZCBsb29rLWFoZWFkIHN5bWJvbC4gICovCisgIC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBv
ciBZWUVPRiBvciBhIHZhbGlkIGxvb2thaGVhZCBzeW1ib2wuICAqLwogICBpZiAoeXljaGFyID09
IFlZRU1QVFkpCiAgICAgewogICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiUmVhZGluZyBhIHRv
a2VuOiAiKSk7CkBAIC0yMDk1LDMwICsyMTg2LDI4IEBAIHl5YmFja3VwOgogICB5eW4gPSB5eXRh
YmxlW3l5bl07CiAgIGlmICh5eW4gPD0gMCkKICAgICB7Ci0gICAgICBpZiAoeXluID09IDAgfHwg
eXluID09IFlZVEFCTEVfTklORikKLQlnb3RvIHl5ZXJybGFiOworICAgICAgaWYgKHl5dGFibGVf
dmFsdWVfaXNfZXJyb3IgKHl5bikpCisgICAgICAgIGdvdG8geXllcnJsYWI7CiAgICAgICB5eW4g
PSAteXluOwogICAgICAgZ290byB5eXJlZHVjZTsKICAgICB9CiAKLSAgaWYgKHl5biA9PSBZWUZJ
TkFMKQotICAgIFlZQUNDRVBUOwotCiAgIC8qIENvdW50IHRva2VucyBzaGlmdGVkIHNpbmNlIGVy
cm9yOyBhZnRlciB0aHJlZSwgdHVybiBvZmYgZXJyb3IKICAgICAgc3RhdHVzLiAgKi8KICAgaWYg
KHl5ZXJyc3RhdHVzKQogICAgIHl5ZXJyc3RhdHVzLS07CiAKLSAgLyogU2hpZnQgdGhlIGxvb2st
YWhlYWQgdG9rZW4uICAqLworICAvKiBTaGlmdCB0aGUgbG9va2FoZWFkIHRva2VuLiAgKi8KICAg
WVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jKTsK
IAotICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuIHVubGVzcyBpdCBpcyBlb2YuICAqLwot
ICBpZiAoeXljaGFyICE9IFlZRU9GKQotICAgIHl5Y2hhciA9IFlZRU1QVFk7CisgIC8qIERpc2Nh
cmQgdGhlIHNoaWZ0ZWQgdG9rZW4uICAqLworICB5eWNoYXIgPSBZWUVNUFRZOwogCiAgIHl5c3Rh
dGUgPSB5eW47CisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOCiAgICorK3l5
dnNwID0geXlsdmFsOwotCisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORAorICAq
Kyt5eWxzcCA9IHl5bGxvYzsKICAgZ290byB5eW5ld3N0YXRlOwogCiAKQEAgLTIxNDksMTggKzIy
MzgsMTkgQEAgeXlyZWR1Y2U6CiAgICAgIEdDQyB3YXJuaW5nIHRoYXQgWVlWQUwgbWF5IGJlIHVz
ZWQgdW5pbml0aWFsaXplZC4gICovCiAgIHl5dmFsID0geXl2c3BbMS15eWxlbl07CiAKLQorICAv
KiBEZWZhdWx0IGxvY2F0aW9uLiAgKi8KKyAgWVlMTE9DX0RFRkFVTFQgKHl5bG9jLCAoeXlsc3Ag
LSB5eWxlbiksIHl5bGVuKTsKICAgWVlfUkVEVUNFX1BSSU5UICh5eW4pOwogICBzd2l0Y2ggKHl5
bikKICAgICB7Ci0gICAgICAgIGNhc2UgMjoKKyAgICAgICAgY2FzZSA0OgogCiAgICAgewogICAg
ICAgICAvLyBUaGUgc3ltYm9sIHRhYmxlIHNlYXJjaCB3YXMgZG9uZSBpbiB0aGUgbGV4aWNhbCBw
aGFzZQogICAgICAgICBjb25zdCBUU3ltYm9sKiBzeW1ib2wgPSAoeXl2c3BbKDEpIC0gKDEpXS5s
ZXgpLnN5bWJvbDsKICAgICAgICAgY29uc3QgVFZhcmlhYmxlKiB2YXJpYWJsZTsKICAgICAgICAg
aWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEp
IC0gKDEpXS5sZXgpLmxpbmUsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0g
KDEpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXlsc3BbKDEpIC0gKDEpXSksICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0g
KDEpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQpOwogICAg
ICAgICAgICAgVFZhcmlhYmxlKiBmYWtlVmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCh5eXZzcFso
MSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBlKTsKQEAgLTIxNjksMTAgKzIyNTksMTcgQEAgeXly
ZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlkZW50aWZpZXIg
Y2FuIG9ubHkgYmUgYSB2YXJpYWJsZSB0eXBlIHN5bWJvbAogICAgICAgICAgICAgaWYgKCEgc3lt
Ym9sLT5pc1ZhcmlhYmxlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2
c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ2YXJpYWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkg
LSAoMSldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ2YXJpYWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkg
LSAoMSldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHZhcmlhYmxlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3ltYm9sKTsKKworICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmlzVmFyaWFibGVCdWlsdEluKHZhcmlhYmxlKSAmJiAKKyAgICAgICAgICAgICAgICAhdmFy
aWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkgJiYKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwgdmFyaWFibGUtPmdldEV4
dGVuc2lvbigpKSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcs
IGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVyeSwgYW5kIHRoZSBwb29sCkBAIC0yMTgxLDIyICsy
Mjc4LDIzIEBAIHl5cmVkdWNlOgogICAgICAgICBpZiAodmFyaWFibGUtPmdldFR5cGUoKS5nZXRR
dWFsaWZpZXIoKSA9PSBFdnFDb25zdCApIHsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24qIGNv
bnN0QXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29uc3RQb2ludGVyKCk7CiAgICAgICAgICAgICBUVHlw
ZSB0KHZhcmlhYmxlLT5nZXRUeXBlKCkpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29u
c3RBcnJheSwgdCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFi
bGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5s
aW5lKTsKLSAgICA7fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXlsc3BbKDEpIC0gKDEpXSkpOwor
ICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDM6CisgIGNhc2UgNToKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA0OgorICBjYXNlIDY6CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC0yMjA0LDE1NSArMjMwMiwx
NTEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8vIGNoZWNrIGZvciBvdmVyZmxvdyBmb3IgY29uc3Rh
bnRzCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChhYnMoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5p
KSA+PSAoMSA8PCAxNikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiIGludGVnZXIgY29u
c3RhbnQgb3ZlcmZsb3ciLCAiIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFu
dFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5pKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5l
KTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJ
bnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0K
ICAgICBicmVhazsKIAotICBjYXNlIDU6CisgIGNhc2UgNzoKIAogICAgIHsKICAgICAgICAgQ29u
c3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1
bmlvbkFycmF5LT5zZXRGQ29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5mKTsKLSAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA2OgorICBjYXNlIDg6CiAKICAgICB7CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9u
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNv
bnN0KCh5eXZzcFsoMSkgLSAoMSldLmxleCkuYik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3Bb
KDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3Bb
KDEpIC0gKDEpXSkpOworICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDc6CisgIGNhc2UgOToK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WygyKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSA4OgorICBjYXNlIDEwOgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDk6CisgIGNh
c2UgMTE6CiAKICAgICB7CiAgICAgICAgIGlmICghKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSAmJiAhKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkgJiYgISh5eXZzcFsoMSkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKSB7CiAgICAgICAgICAgICBpZiAoKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzU3ltYm9sTm9kZSgpKQotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwg
IiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwg
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzU3ltYm9sTm9k
ZSgpLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXlsc3BbKDIpIC0gKDQpXSksICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXks
IG1hdHJpeCwgb3IgdmVjdG9yICIsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0
KV0ubGV4KS5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgs
IG9yIHZlY3RvciAiLCAiZXhwcmVzc2lvbiIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMikgLSAoNCldKSwgIiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJh
eSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgImV4cHJlc3Npb24iKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFD
b25zdCAmJiAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UXVh
bGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7IC8vIGNvbnN0YW50IGZvbGRp
bmcgZm9yIGFycmF5cwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlOb2RlKCh5eXZzcFsoMykgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBv
aW50ZXIoKS0+Z2V0SUNvbnN0KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgfSBlbHNl
IGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3Io
KSkgeyAgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9ycwotICAgICAgICAgICAgICAgIFRW
ZWN0b3JGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgICAgIGZpZWxkcy5udW0gPSAxOwotICAg
ICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzWzBdID0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9p
bnRlcigpLT5nZXRJQ29uc3QoKTsgLy8gbmVlZCB0byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHYu
eHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRz
LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAt
ICg0KV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpIHsgLy8gY29uc3RhbnQgZm9s
ZGluZyBmb3IgbWF0cmljZXMKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoKHl5dnNwWygzKSAtICg0KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7CisgICAgICAgIGlmICgo
eXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVyKCkg
PT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9ICh5eXZzcFsoMykgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0
KDApOworICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nc3RyZWFtIGluZm9TdHJlYW07CisgICAgICAgICAgICAgICAgaW5mb1N0cmVhbSA8PCBp
bmRleDsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBpbmZvID0gaW5mb1N0cmVhbS5zdHIo
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDQpXSksICJu
ZWdhdGl2ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOworICAgICAgICAgICAgICAgIGluZGV4ID0gMDsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5p
c1ZlY3RvcigpIHx8ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5p
c01hdHJpeCgpKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpLT5nZXRJQ29uc3QoKSAmJiAhKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmlzQXJyYXkoKSApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJl
YW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0g
PDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgKHl5dnNwWygzKSAtICg0KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIiwg
IlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgPT0gMCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldE1heEFycmF5U2l6ZSgpIDw9ICh5eXZzcFsoMykgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5p
b25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCksICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigpLCAoeXl2c3BbKDMp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdl
dFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpLCB0cnVlLCAoeXl2c3BbKDIpIC0gKDQp
XS5sZXgpLmxpbmUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNldE1heFNpemUo
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzU3ltYm9sTm9k
ZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBv
aW50ZXIoKSwgMCwgZmFsc2UsICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICggKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3Rh
bnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA+PSAoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0
cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVh
bSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlICciIDw8ICh5eXZzcFsoMykgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIiciOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDQpXS5s
ZXgpLmxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcElu
ZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoNCld
LmxleCkubGluZSk7CisgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewor
ICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+aXNBcnJheSgpKSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIGFycmF5cworICAgICAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5h
ZGRDb25zdEFycmF5Tm9kZShpbmRleCwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFsoMikgLSAoNCldKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkg
eyAgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9ycworICAgICAgICAgICAgICAgICAgICBU
VmVjdG9yRmllbGRzIGZpZWxkczsKKyAgICAgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7
CisgICAgICAgICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzWzBdID0gaW5kZXg7IC8vIG5lZWQg
dG8gZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5
CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVsZHMsICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDQpXSkpOworICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlz
TWF0cml4KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKKyAgICAgICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29u
c3RNYXRyaXhOb2RlKGluZGV4LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5bHNwWygyKSAtICg0KV0pKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpICYmICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgPT0gMCkgewotICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUs
ICIiLCAiWyIsICJhcnJheSBtdXN0IGJlIHJlZGVjbGFyZWQgd2l0aCBhIHNpemUgYmVmb3JlIGJl
aW5nIGluZGV4ZWQgd2l0aCBhIHZhcmlhYmxlIik7CisgICAgICAgICAgICAgICAgaWYgKCh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGluZGV4ID49ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdl
ICciIDw8IGluZGV4IDw8ICInIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
IGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoNCldKSwgIiIsICJbIiwgZXh0cmFJbmZv
LmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpIC0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpIHx8ICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSAmJiAoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkg
PD0gaW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJ
bmZvU3RyZWFtOworICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxk
IHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoNCldKSwgIiIs
ICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSAtIDE7
CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4SW5k
aXJlY3QsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4
KS5saW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCkt
PnNldElDb25zdChpbmRleCk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0
LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoNCldKSk7CiAgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJ
bmRpcmVjdCwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDQpXSkp
OwogICAgICAgICB9CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PT0gMCkgewogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25z
dGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwot
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVi
cEhpZ2gsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBF
dnFDb25zdCksICh5eWxzcFsoMikgLSAoNCldKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkgewogICAgICAg
ICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRU
eXBlKCkuZ2V0U3RydWN0KCkpCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSkpOworICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2
c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFN0cnVj
dCgpKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnksICh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCAoeXl2
c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSkpOwogCiAg
ICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKICAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxp
ZmllcihFdnFDb25zdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25z
dCkKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShU
VHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNU
eXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVj
aXNpb24oKSwgRXZxQ29uc3QsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKQotICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3Jh
cnksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFs
U2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpICYmICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5
dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCks
IEV2cUNvbnN0KSk7Ci0gICAgICAgIGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnkpKTsKLSAgICAg
ICAgZWxzZQorICAgICAgICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSB7CisgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxp
ZmllciA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBl
KCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsK
KyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlw
ZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBl
KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNp
b24oKSwgcXVhbGlmaWVyLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Tm9taW5hbFNpemUoKSkpOworICAgICAgICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKSB7CisgICAgICAgICAgICBU
UXVhbGlmaWVyIHF1YWxpZmllciA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgPyBFdnFDb25zdCA6
IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRQcmVjaXNpb24oKSwgcXVhbGlmaWVyKSk7CisgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSk7Ci0gICAgO30KKyAg
ICAgICAgfQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDEwOgorICBjYXNlIDEyOgogCiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDExOgorICBjYXNlIDEzOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkgewotICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAiY2Fubm90
IGFwcGx5IGRvdCBvcGVyYXRvciB0byBhbiBhcnJheSIsICIuIik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDMpXSksICJjYW5ub3QgYXBwbHkgZG90IG9wZXJhdG9y
IHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+aXNWZWN0b3IoKSkgewogICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7
Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJzZVZlY3RvckZpZWxkcygqKHl5dnNwWygz
KSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsICh5eXZzcFsoMykgLSAoMyldLmxleCku
bGluZSkpIHsKKyAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBhcnNlVmVjdG9yRmllbGRzKCoo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgKHl5bHNwWygzKSAtICgz
KV0pKSkgewogICAgICAgICAgICAgICAgIGZpZWxkcy5udW0gPSAxOwogICAgICAgICAgICAgICAg
IGZpZWxkcy5vZmZzZXRzWzBdID0gMDsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNv
bnN0KSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIHZlY3RvciBmaWVsZHMKLSAgICAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdFZl
Y3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmll
bGRzLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygz
KSAtICgzKV0pKTsKICAgICAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTIzNjEsMTMgKzI0NTUs
MTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QsIChpbnQpICgqKHl5dnNwWygz
KSAtICgzKV0ubGV4KS5zdHJpbmcpLnNpemUoKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBUU3RyaW5nIHZlY3RvclN0cmluZyA9ICooeXl2c3BbKDMpIC0gKDMpXS5s
ZXgpLnN0cmluZzsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmllbGRzLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgp
LmxpbmUpOwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BWZWN0b3JTd2l6emxlLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eXZzcFsoMikgLSAo
MyldLmxleCkubGluZSk7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxlKGZpZWxkcywgKHl5bHNwWygzKSAtICgzKV0p
KTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wVmVjdG9yU3dpenpsZSwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4LCAoeXlsc3BbKDIpIC0gKDMpXSkp
OwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlw
ZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFz
aWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQ
cmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAoaW50KSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpIHsKICAgICAgICAgICAgIFRNYXRyaXhGaWVs
ZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMo
Kih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAoeXl2c3BbKDMpIC0g
KDMpXS5sZXgpLmxpbmUpKSB7CisgICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJzZU1hdHJp
eEZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsICh5eWxz
cFsoMykgLSAoMyldKSkpIHsKICAgICAgICAgICAgICAgICBmaWVsZHMud2hvbGVSb3cgPSBmYWxz
ZTsKICAgICAgICAgICAgICAgICBmaWVsZHMud2hvbGVDb2wgPSBmYWxzZTsKICAgICAgICAgICAg
ICAgICBmaWVsZHMucm93ID0gMDsKQEAgLTIzNzYsMTA4ICsyNDcwLDEwMiBAQCB5eXJlZHVjZToK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGZpZWxkcy53aG9sZVJvdyB8fCBmaWVs
ZHMud2hvbGVDb2wpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIp
IC0gKDMpXS5sZXgpLmxpbmUsICIgbm9uLXNjYWxhciBmaWVsZHMgbm90IGltcGxlbWVudGVkIHll
dCIsICIuIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgz
KV0pLCAiIG5vbi1zY2FsYXIgZmllbGRzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiLCAiLiIpOwogICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAg
ICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KDApOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBl
ZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDMpIC0g
KDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4LCAoeXl2c3Bb
KDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5k
ZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDMpIC0gKDMpXSkp
OworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4LCAoeXlsc3BbKDIpIC0gKDMpXSkpOwog
ICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShU
VHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNU
eXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVj
aXNpb24oKSxFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsx
XTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoZmllbGRzLmNvbCAqICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgp
ICsgZmllbGRzLnJvdyk7Ci0gICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVi
dEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMykgLSAoMyldLmxleCkubGlu
ZSk7Ci0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxl
eCkubGluZSk7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgewogICAgICAg
ICAgICAgYm9vbCBmaWVsZEZvdW5kID0gZmFsc2U7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZUxp
c3QqIGZpZWxkcyA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgICAgICAgICBpZiAoZmllbGRzID09IDApIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUs
ICJzdHJ1Y3R1cmUgaGFzIG5vIGZpZWxkcyIsICJJbnRlcm5hbCBFcnJvciIpOwotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGk7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGZpZWxkcy0+c2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCgqZmllbGRzKVtpXS50eXBlLT5nZXRGaWVsZE5h
bWUoKSA9PSAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZpZWxkRm91bmQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZExpc3Qm
IGZpZWxkcyA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRU
eXBlKCkuZ2V0U3RydWN0KCktPmZpZWxkcygpOworICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7
CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGZpZWxkc1tpXS0+bmFtZSgpID09ICooeXl2c3BbKDMpIC0gKDMpXS5s
ZXgpLnN0cmluZykgeworICAgICAgICAgICAgICAgICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGlmIChmaWVsZEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigp
ID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdFN0cnVjdCgqKHl5dnNwWygzKSAtICgz
KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlw
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIg
b2YgdGhlIHJldHVybiB0eXBlLCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBmaWVsZAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGFzIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyBzaGFy
ZWQgYmV0d2VlbiB2YXJpb3VzIHN0cnVjdHVyZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRR
dWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
VEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKHVuaW9uQXJyYXksICooKmZpZWxkcylbaV0udHlwZSwgKHl5dnNwWygzKSAtICgzKV0ubGV4
KS5saW5lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdFN0
cnVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4LCAo
eXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZmllbGRGb3VuZCkgeworICAgICAgICAg
ICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAgICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0
KCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7CisgICAgICAgICAgICAgICAg
ICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPnNldFR5cGUoKmZpZWxkc1tpXS0+dHlwZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNoYW5nZSB0aGUgcXVhbGlmaWVyIG9mIHRoZSByZXR1cm4gdHlwZSwg
bm90IG9mIHRoZSBzdHJ1Y3R1cmUgZmllbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFz
IHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyBzaGFyZWQgYmV0d2VlbiB2YXJpb3VzIHN0cnVj
dHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFDb25zdCk7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIgbm8gc3Vj
aCBmaWVsZCBpbiBzdHJ1Y3R1cmUiLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19z
dHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIENvbnN0
YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKKyAgICAgICAgICAg
ICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkpOworICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgKmZpZWxkc1tpXS0+dHlwZSgpLCAoeXlsc3BbKDMpIC0gKDMpXSkpOwor
ICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5bHNwWygyKSAtICgz
KV0pKTsKKyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIp
IC0gKDMpXSksICIgbm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1cmUiLCAoeXl2c3BbKDMpIC0gKDMp
XS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAt
ICgzKV0ubGV4KS5saW5lLCAiIGZpZWxkIHNlbGVjdGlvbiByZXF1aXJlcyBzdHJ1Y3R1cmUsIHZl
Y3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRlIiwgKHl5dnNwWygzKSAtICgzKV0ubGV4
KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygy
KSAtICgzKV0pLCAiIGZpZWxkIHNlbGVjdGlvbiByZXF1aXJlcyBzdHJ1Y3R1cmUsIHZlY3Rvciwg
b3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRlIiwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJp
bmctPmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gZG9uJ3QgZGVsZXRl
ICQzLnN0cmluZywgaXQncyBmcm9tIHRoZSBwb29sCi0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxMjoKKyAgY2FzZSAxNDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQt
PmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAiKysiLCAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgIisrIiwgKHl5dnNwWygx
KSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RJbmNyZW1lbnQsICh5eXZzcFso
MSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgp
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0
SW5jcmVtZW50LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
bHNwWygyKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+
dW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIisrIiwgKHl5dnNwWygx
KSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwor
ICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgIisr
IiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAotICBjYXNlIDEzOgorICBjYXNlIDE1OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+
bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZz
cFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdERlY3JlbWVudCwgKHl5dnNwWygx
KSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMildLmxleCku
bGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RE
ZWNyZW1lbnQsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXls
c3BbKDIpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51
bmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAiLS0iLCAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiLS0i
LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTQ6CisgIGNhc2UgMTY6CiAKICAgICB7CiAgICAgICAgIGlmIChjb250ZXh0LT5p
bnRlZ2VyRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgIltdIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTU6Cisg
IGNhc2UgMTc6CiAKICAgICB7CiAgICAgICAgIFRGdW5jdGlvbiogZm5DYWxsID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtKS5mdW5jdGlvbjsKQEAgLTI0OTEsMTggKzI1NzksMTggQEAgeXlyZWR1
Y2U6CiAgICAgICAgICAgICAvLyBUaGVpciBwYXJhbWV0ZXJzIHdpbGwgYmUgdmVyaWZpZWQgYWxn
b3JpdGhtaWNhbGx5LgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIFRUeXBlIHR5cGUoRWJ0
Vm9pZCwgRWJwVW5kZWZpbmVkKTsgIC8vIHVzZSB0aGlzIHRvIGdldCB0aGUgdHlwZSBiYWNrCi0g
ICAgICAgICAgICBpZiAoY29udGV4dC0+Y29uc3RydWN0b3JFcnJvckNoZWNrKCh5eXZzcFsoMSkg
LSAoMSldLmludGVybSkubGluZSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2Rl
LCAqZm5DYWxsLCBvcCwgJnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Y29uc3Ry
dWN0b3JFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwgKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtKS5pbnRlcm1Ob2RlLCAqZm5DYWxsLCBvcCwgJnR5cGUpKSB7CiAgICAgICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAvLyBJdCdzIGEgY29uc3RydWN0
b3IsIG9mIHR5cGUgJ3R5cGUnLgogICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RydWN0b3Io
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwg
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvcigoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxsLCAoeXlsc3Bb
KDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKDAsIG9wLCAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVP
cGVyYXRvcigwLCBvcCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSh0eXBlKTsKICAg
ICAgICAgfSBlbHNlIHsKQEAgLTI1MTEsMTMgKzI1OTksMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAg
ICAgICAvLwogICAgICAgICAgICAgY29uc3QgVEZ1bmN0aW9uKiBmbkNhbmRpZGF0ZTsKICAgICAg
ICAgICAgIGJvb2wgYnVpbHRJbjsKLSAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+
ZmluZEZ1bmN0aW9uKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgZm5DYWxsLCAmYnVp
bHRJbik7CisgICAgICAgICAgICBmbkNhbmRpZGF0ZSA9IGNvbnRleHQtPmZpbmRGdW5jdGlvbigo
eXlsc3BbKDEpIC0gKDEpXSksIGZuQ2FsbCwgJmJ1aWx0SW4pOwogICAgICAgICAgICAgaWYgKGZu
Q2FuZGlkYXRlKSB7CiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAvLyBBIGRl
Y2xhcmVkIGZ1bmN0aW9uLgogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgaWYg
KGJ1aWx0SW4gJiYgIWZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKS5lbXB0eSgpICYmCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmV4dGVuc2lvbkVycm9yQ2hlY2soKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtKS5saW5lLCBmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmV4dGVuc2lvbkVycm9yQ2hlY2soKHl5bHNwWygxKSAt
ICgxKV0pLCBmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgb3AgPSBmbkNhbmRpZGF0ZS0+Z2V0QnVpbHRJbk9wKCk7CkBAIC0yNTI5LDcgKzI2MTcsNyBA
QCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBUcmVhdCBpdCBsaWtlIGEgYnVpbHQtaW4gdW5hcnkgb3BlcmF0b3IuCiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0
aChvcCwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAwLCBjb250ZXh0LT5z
eW1ib2xUYWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKG9wLCAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsICh5eWxzcFsoMSkgLSAoMSldKSwgY29u
dGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSAgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImJ1aWx0IGluIHVuYXJ5IG9wZXJhdG9yIGZ1
bmN0aW9uLiAgVHlwZTogIiA8PCBzdGF0aWNfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpOwpAQCAtMjUz
OCwxMiArMjYyNiwxMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZ
WUVSUk9SOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5eXZz
cFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCBvcCwgKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVy
YXRvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgb3AsICh5eWxz
cFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgcmVhbCBmdW5jdGlvbiBj
YWxsCiAKLSAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5eXZzcFsoMSkg
LSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCBFT3BGdW5jdGlvbkNhbGwsICh5eXZzcFso
MSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVP
cGVyYXRvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgRU9wRnVu
Y3Rpb25DYWxsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoZm5DYW5kaWRhdGUtPmdldFJldHVy
blR5cGUoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBob3cgd2Uga25vdyB3
aGV0aGVyIHRoZSBnaXZlbiBmdW5jdGlvbiBpcyBhIGJ1aWx0SW4gZnVuY3Rpb24gb3IgYSB1c2Vy
IGRlZmluZWQgZnVuY3Rpb24KQEAgLTI1NzAsOTAgKzI2NTgsODggQEAgeXlyZWR1Y2U6CiAgICAg
ICAgICAgICAgICAgLy8gUHV0IG9uIGEgZHVtbXkgbm9kZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAg
ICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5p
b25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAg
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsK
KyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIGRlbGV0ZSBmbkNhbGw7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNjoKKyAgY2FzZSAxODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTc6CisgIGNhc2UgMTk6CiAKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMykgLSAoMyldLmludGVybSkubGluZSwgIm1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQiLCAi
Iik7CisgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMykgLSAoMyldKSwgIm1ldGhvZHMg
YXJlIG5vdCBzdXBwb3J0ZWQiLCAiIik7CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg6CisgIGNhc2UgMjA6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE5OgorICBjYXNlIDIxOgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybSk7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDoKKyAgY2FzZSAyMjoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0uZnVuY3Rpb24pOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1Ob2RlID0g
MDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDIxOgorICBjYXNlIDIzOgog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5mdW5jdGlvbik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUg
PSAwOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjI6CisgIGNhc2UgMjQ6
CiAKICAgICB7CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpKSB9OwogICAg
ICAgICAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5hZGRQYXJhbWV0ZXIocGFy
YW0pOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMild
LmludGVybS5mdW5jdGlvbik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSAo
eXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAotICBjYXNlIDIzOgorICBjYXNlIDI1OgogCiAgICAgewogICAgICAgICBU
UGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5cGUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSkgfTsKICAgICAgICAgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtKS5mdW5jdGlvbi0+YWRkUGFyYW1ldGVyKHBhcmFtKTsKICAgICAgICAgKHl5dmFs
LmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uOwot
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1Ob2RlID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0u
bGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1Ob2RlID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtKS5pbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDoK
KyAgY2FzZSAyNjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwotICAgIDt9CisgICAgfQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMjU6CisgIGNhc2UgMjc6CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC0y
NjY3LDM5ICsyNzUzLDM5IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoK
ICAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLm1hdHJp
eCkgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2goKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LnR5cGUpLnNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDI7ICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDM7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSA0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0
cnVjdE1hdDQ7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENv
bnN0cnVjdE1hdDI7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVP
cENvbnN0cnVjdE1hdDM7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9
IEVPcENvbnN0cnVjdE1hdDQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCgoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0udHlwZSkuc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDE6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0Rmxv
YXQ7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjMjsgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wID0gRU9wQ29uc3RydWN0VmVjMzsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNl
IDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0
VmVjNDsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3Ry
dWN0RmxvYXQ7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29u
c3RydWN0VmVjMjsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9w
Q29uc3RydWN0VmVjMzsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0g
RU9wQ29uc3RydWN0VmVjNDsgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJ
bnQ6CiAgICAgICAgICAgICAgICAgc3dpdGNoKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBl
KS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RJbnQ7ICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzIiLCAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0SVZlYzI7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgRlJBR19WRVJUX09OTFkoIml2ZWMzIiwg
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdElW
ZWMzOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZ
KCJpdmVjNCIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BD
b25zdHJ1Y3RJVmVjNDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENv
bnN0cnVjdEludDsgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29u
c3RydWN0SVZlYzI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25z
dHJ1Y3RJVmVjMzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0
cnVjdElWZWM0OyBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIEVidEJvb2w6CiAgICAgICAgICAgICAgICAgc3dpdGNoKCh5
eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25z
dHJ1Y3RCb29sOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZF
UlRfT05MWSgiYnZlYzIiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9w
ID0gRU9wQ29uc3RydWN0QlZlYzI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzogICAg
ICAgRlJBR19WRVJUX09OTFkoImJ2ZWMzIiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUp
LmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMzOyBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjNCIsICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RCVmVjNDsgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEJvb2w7ICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0QlZlYzI7IGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMzsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdEJWZWM0OyBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OiBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChvcCA9PSBFT3BOdWxsKSB7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUp
LmxpbmUsICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5nKCh5eXZz
cFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBlKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiY2Fubm90IGNvbnN0cnVjdCB0aGlzIHR5cGUi
LCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSkpOwog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSA9IEVidEZsb2F0OwogICAgICAgICAgICAg
ICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7CkBAIC0yNzA5LDcxICsyNzk1LDYwIEBAIHl5cmVk
dWNlOgogICAgICAgICBUVHlwZSB0eXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKSk7
CiAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCZ0ZW1wU3RyaW5n
LCB0eXBlLCBvcCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247
Ci0gICAgO30KLSAgICBicmVhazsKLQotICBjYXNlIDI2OgotCi0gICAgewotICAgICAgICBpZiAo
Y29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwg
Kih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAg
ICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLnN0cmluZywgdHlwZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0g
ZnVuY3Rpb247Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNzoKKyAgY2Fz
ZSAyODoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICooeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmlu
ZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWygxKSAt
ICgxKV0pLCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5l
ZCk7CiAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCh5eXZzcFso
MSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBlKTsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5j
dGlvbikgPSBmdW5jdGlvbjsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDI4
OgorICBjYXNlIDI5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICA7
fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDI5OgorICBjYXNlIDMwOgogCiAgICAgewot
ICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5s
ZXgpLmxpbmUsICIrKyIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgy
KV0pLCAiKysiLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJl
SW5jcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRVbmFyeU1hdGgoRU9wUHJlSW5jcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAg
ICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGlu
ZSwgIisrIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxz
cFsoMSkgLSAoMildKSwgIisrIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDMwOgorICBjYXNlIDMxOgogCiAgICAgewotICAg
ICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgp
LmxpbmUsICItLSIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0p
LCAiLS0iLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVj
cmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRV
bmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAg
ICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwg
Ii0tIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFso
MSkgLSAoMildKSwgIi0tIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAotICBjYXNlIDMxOgorICBjYXNlIDMyOgogCiAgICAgewogICAgICAg
ICBpZiAoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5vcCAhPSBFT3BOdWxsKSB7Ci0gICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkVW5hcnlNYXRoKCh5eXZzcFsoMSkgLSAoMildLmludGVybSkub3AsICh5eXZzcFsoMikg
LSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0p
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtKS5vcCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eWxzcFsoMSkgLSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwog
ICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXJyb3JPcCA9ICIiOwogICAgICAgICAgICAgICAg
IHN3aXRjaCgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLm9wKSB7CkBAIC0yNzgxLDM1NyArMjg1
NiwzNTUgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OiBl
cnJvck9wID0gIiEiOyBicmVhazsKICAgICAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5
eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSwgZXJyb3JPcCwgKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDEpIC0gKDIpXSksIGVycm9yT3As
ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAt
ICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KLSAgICBicmVhazsKLQotICBj
YXNlIDMyOgotCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE51bGw7IDt9CisgICAgfQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMzM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTmVnYXRpdmU7IDt9
CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE51bGw7IH0KICAgICBicmVhazsKIAogICBj
YXNlIDM0OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcExvZ2ljYWxOb3Q7IDt9CisgICAgeyAo
eXl2YWwuaW50ZXJtKS5vcCA9IEVPcE5lZ2F0aXZlOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAz
NToKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5v
cCA9IEVPcExvZ2ljYWxOb3Q7IH0KICAgICBicmVhazsKIAogICBjYXNlIDM2OgogCisgICAgeyAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKTsgfQorICAgIGJyZWFrOworCisgIGNhc2UgMzc6CisKICAgICB7Ci0g
ICAgICAgIEZSQUdfVkVSVF9PTkxZKCIqIiwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BNdWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIqIiwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgz
KV0pLCAiKiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzc6CisgIGNhc2UgMzg6CiAKICAgICB7Ci0gICAgICAg
IEZSQUdfVkVSVF9PTkxZKCIvIiwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wRGl2LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QmluYXJ5TWF0aChFT3BEaXYsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygy
KSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5
T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIvIiwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAi
LyIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMzg6CisgIGNhc2UgMzk6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAotICBjYXNl
IDM5OgorICBjYXNlIDQwOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEFkZCwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSwgIisiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+Ymlu
YXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIrIiwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0MDoKKyAg
Y2FzZSA0MToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wU3ViLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BTdWIsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAg
ICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxp
bmUsICItIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJy
b3IoKHl5bHNwWygyKSAtICgzKV0pLCAiLSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAg
ICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDE6CisgIGNhc2UgNDI6
CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
IH0KICAgICBicmVhazsKIAotICBjYXNlIDQyOgorICBjYXNlIDQzOgogCi0gICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA0MzoKKyAgY2FzZSA0NDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9w
TGVzc1RoYW4sICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0u
bGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVP
cExlc3NUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyld
KSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3Io
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiPCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIjwiLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAg
Q29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAg
ICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5
eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAotICBjYXNlIDQ0OgorICBjYXNlIDQ1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChF
T3BHcmVhdGVyVGhhbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1h
dGgoRU9wR3JlYXRlclRoYW4sICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygy
KSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5
T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICI+IiwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAi
PiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07
CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNv
bnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCi0gIGNhc2UgNDU6CisgIGNhc2UgNDY6CiAKICAgICB7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5h
cnlNYXRoKEVPcExlc3NUaGFuRXF1YWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1YWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlm
ICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICI8PSIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFso
MikgLSAoMyldKSwgIjw9IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7
Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0NjoKKyAgY2FzZSA0NzoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW5FcXVhbCwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSwgIj49IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiPj0iLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyld
KSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDQ3Ogor
ICBjYXNlIDQ4OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0ODoKKyAgY2FzZSA0OToKIAogICAg
IHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1YWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVxdWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBp
ZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiPT0iLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3Bb
KDIpIC0gKDMpXSksICI9PSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENv
bnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2Up
OwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7Cisg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQotICAg
IDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDk6CisgIGNhc2UgNTA6CiAKICAgICB7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5vdEVxdWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BOb3RFcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAg
ICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiE9
IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5
bHNwWygyKSAtICgzKV0pLCAiIT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5l
dyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZh
bHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUp
OworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0K
LSAgICA7fQotICAgIGJyZWFrOwotCi0gIGNhc2UgNTA6Ci0KLSAgICB7ICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOyA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDUxOgogCi0gICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSA1MjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgNTM6CiAKLSAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAog
ICBjYXNlIDU0OgogCisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQorICAgIGJyZWFrOworCisg
IGNhc2UgNTU6CisKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQs
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIp
IC0gKDMpXS5sZXgpLmxpbmUsICImJiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiYmIiwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50
VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVu
aW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1
bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIp
IC0gKDMpXSkpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA1NToKKyAgY2FzZSA1NjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNTY6CisgIGNhc2UgNTc6
CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxYb3IsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5z
eW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxYb3IsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkg
ewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5s
ZXgpLmxpbmUsICJeXiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5h
cnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIl5eIiwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVu
aW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXkt
PnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgz
KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkp
OwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1NzoKKyAg
Y2FzZSA1ODoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNTg6CisgIGNhc2UgNTk6CiAKICAgICB7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxPciwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAg
ICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAi
fHwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigo
eXlsc3BbKDIpIC0gKDMpXSksICJ8fCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0g
bmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3Qo
ZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAg
fQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNTk6CisgIGNhc2UgNjA6CiAK
LSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0K
ICAgICBicmVhazsKIAotICBjYXNlIDYwOgorICBjYXNlIDYxOgogCiAgICAgewotICAgICAgIGlm
IChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICh5
eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICBpZiAoY29u
dGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDUp
XS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5eXZzcFsoMSkgLSAoNSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFso
MikgLSAoNSldKSk7CiAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0VHlwZSgpICE9ICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRUeXBlKCkpCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAwOwogCiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIp
IC0gKDUpXS5sZXgpLmxpbmUsICI6IiwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICg1KV0pLCAiOiIsICh5eXZzcFsoMykgLSAo
NSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3Bb
KDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
NjE6CisgIGNhc2UgNjI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSk7IH0KICAgICBicmVhazsKIAotICBjYXNlIDYyOgorICBjYXNlIDYzOgog
CiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDIp
IC0gKDMpXS5pbnRlcm0pLmxpbmUsICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNr
KCh5eWxzcFsoMikgLSAoMyldKSwgImFzc2lnbiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEFzc2lnbigoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0pLm9wLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmludGVybSkubGluZSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRB
c3NpZ24oKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtKS5vcCwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9y
KCh5eXZzcFsoMikgLSAoMyldLmludGVybSkubGluZSwgImFzc2lnbiIsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5hc3NpZ25FcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJh
c3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KLSAgICA7fQotICAgIGJy
ZWFrOwotCi0gIGNhc2UgNjM6Ci0KLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsg
KHl5dmFsLmludGVybSkub3AgPSBFT3BBc3NpZ247IDt9CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgNjQ6CiAKLSAgICB7IEZSQUdfVkVSVF9PTkxZKCIqPSIsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE11bEFzc2lnbjsgO30KKyAgICB7ICh5
eXZhbC5pbnRlcm0pLm9wID0gRU9wQXNzaWduOyB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2NToK
IAotICAgIHsgRlJBR19WRVJUX09OTFkoIi89IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5l
KTsgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7
ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wRGl2QXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVy
bSkub3AgPSBFT3BNdWxBc3NpZ247IH0KICAgICBicmVhazsKIAogICBjYXNlIDY2OgogCi0gICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUg
PSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQWRk
QXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BEaXZBc3NpZ247IH0KICAg
ICBicmVhazsKIAogICBjYXNlIDY3OgogCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wU3ViQXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybSkub3AgPSBFT3BBZGRBc3NpZ247IH0KICAgICBicmVhazsKIAogICBjYXNlIDY4OgogCisg
ICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcFN1YkFzc2lnbjsgfQorICAgIGJyZWFrOworCisg
IGNhc2UgNjk6CisKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjk6CisgIGNhc2UgNzA6CiAKICAgICB7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb21tYSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRDb21tYSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2
c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIsIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiLCIsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0g
IGNhc2UgNzA6CisgIGNhc2UgNzE6CiAKICAgICB7CiAgICAgICAgIGlmIChjb250ZXh0LT5jb25z
dEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDcxOgorICBjYXNlIDcyOgog
CiAgICAgewogICAgICAgICBURnVuY3Rpb24gJmZ1bmN0aW9uID0gKigoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0pLmZ1bmN0aW9uKTsKQEAgLTMxNDUsMTMgKzMyMTgsMTMgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgICAgICBjb25zdCBUUGFyYW1ldGVyICZwYXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkp
OwogICAgICAgICAgICAgaWYgKHBhcmFtLm5hbWUgIT0gMCkKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZShwYXJhbS5uYW1l
LCAqcGFyYW0udHlwZSk7CisgICAgICAgICAgICAgICAgVFZhcmlhYmxlIHZhcmlhYmxlKHBhcmFt
Lm5hbWUsICpwYXJhbS50eXBlKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBw
cm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUs
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCks
IHZhcmlhYmxlLT5nZXROYW1lKCksIHZhcmlhYmxlLT5nZXRUeXBlKCksICh5eXZzcFsoMSkgLSAo
MildLmludGVybSkubGluZSksICh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSk7CisgICAg
ICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdh
dGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLmdl
dFVuaXF1ZUlkKCksIHZhcmlhYmxlLmdldE5hbWUoKSwgdmFyaWFibGUuZ2V0VHlwZSgpLCAoeXls
c3BbKDEpIC0gKDIpXSkpLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsICh5eXZzcFsoMSkgLSAo
MildLmludGVybSkubGluZSksICh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSk7CisgICAg
ICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdh
dGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFy
YW0udHlwZSwgKHl5bHNwWygxKSAtICgyKV0pKSwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTMxNTksMzQgKzMyMzIsMzQgQEAgeXly
ZWR1Y2U6CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBwcm90b3R5cGU7CiAK
ICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSA3MjoKKyAgY2FzZSA3MzoKIAogICAgIHsKICAgICAgICAgaWYgKCh5
eXZzcFsoMSkgLSAoMildLmludGVybSkuaW50ZXJtQWdncmVnYXRlKQogICAgICAgICAgICAgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUtPnNldE9wKEVPcERlY2xhcmF0
aW9uKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAo
MildLmludGVybSkuaW50ZXJtQWdncmVnYXRlOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgNzM6CisgIGNhc2UgNzQ6CiAKICAgICB7CiAgICAgICAgIGlmICgoKHl5dnNwWygy
KSAtICg0KV0uaW50ZXJtLnByZWNpc2lvbikgPT0gRWJwSGlnaCkgJiYgKGNvbnRleHQtPnNoYWRl
clR5cGUgPT0gU0hfRlJBR01FTlRfU0hBREVSKSAmJiAhY29udGV4dC0+ZnJhZ21lbnRQcmVjaXNp
b25IaWdoKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDQpXS5s
ZXgpLmxpbmUsICJwcmVjaXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIi
LCAiaGlnaHAiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoNCld
KSwgInByZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGZyYWdtZW50IHNoYWRlciIsICJoaWdo
cCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAg
IGlmICghY29udGV4dC0+c3ltYm9sVGFibGUuc2V0RGVmYXVsdFByZWNpc2lvbiggKHl5dnNwWygz
KSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5pbnRlcm0ucHJlY2lzaW9u
KSApKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDQpXS5sZXgp
LmxpbmUsICJpbGxlZ2FsIHR5cGUgYXJndW1lbnQgZm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxp
ZmllciIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFsoMykgLSAoNCldLmludGVybS50eXBlKS50eXBl
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDQpXSksICJpbGxl
Z2FsIHR5cGUgYXJndW1lbnQgZm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJh
c2ljU3RyaW5nKCh5eXZzcFsoMykgLSAoNCldLmludGVybS50eXBlKS50eXBlKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3
NDoKKyAgY2FzZSA3NToKIAogICAgIHsKICAgICAgICAgLy8KQEAgLTMyMDAsMTIgKzMyNzMsMTIg
QEAgeXlyZWR1Y2U6CiAgICAgICAgIFRGdW5jdGlvbiogcHJldkRlYyA9IHN0YXRpY19jYXN0PFRG
dW5jdGlvbio+KGNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmQoKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLmZ1bmN0aW9uKS0+Z2V0TWFuZ2xlZE5hbWUoKSkpOwogICAgICAgICBpZiAocHJldkRlYykg
ewogICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdldFJldHVyblR5cGUoKSAhPSAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJvdmVybG9h
ZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUiLCAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmco
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAi
b3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBlIiwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2lj
U3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFy
YW1Db3VudCgpOyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0o
aSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkgIT0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0
aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAib3Zlcmxv
YWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwg
KHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0
UXVhbGlmaWVyU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXlsc3BbKDIpIC0gKDIpXSksICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNh
bWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rp
b24pLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CkBAIC0zMjE3LDI5ICszMjkwLDI4IEBAIHl5cmVkdWNlOgogICAgICAgICAvLyBiZWlu
ZyByZWRlY2xhcmVkLiAgU28sIHBhc3MgYmFjayB1cCB0aGlzIGRlY2xhcmF0aW9uLCBub3QgdGhl
IG9uZSBpbiB0aGUgc3ltYm9sIHRhYmxlLgogICAgICAgICAvLwogICAgICAgICAoeXl2YWwuaW50
ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbik7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAK
ICAgICAgICAgLy8gV2UncmUgYXQgdGhlIGlubmVyIHNjb3BlIGxldmVsIG9mIHRoZSBmdW5jdGlv
bidzIGFyZ3VtZW50cyBhbmQgYm9keSBzdGF0ZW1lbnQuCiAgICAgICAgIC8vIEFkZCB0aGUgZnVu
Y3Rpb24gcHJvdG90eXBlIHRvIHRoZSBzdXJyb3VuZGluZyBzY29wZSBpbnN0ZWFkLgogICAgICAg
ICBjb250ZXh0LT5zeW1ib2xUYWJsZS5nZXRPdXRlckxldmVsKCktPmluc2VydCgqKHl5dmFsLmlu
dGVybSkuZnVuY3Rpb24pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzU6
CisgIGNhc2UgNzY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAotICBjYXNlIDc2OgorICBjYXNlIDc3OgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLmZ1bmN0aW9uKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3NzoKKyAgY2FzZSA3ODoKIAogICAg
IHsKICAgICAgICAgLy8gQWRkIHRoZSBwYXJhbWV0ZXIKQEAgLTMyNDgsMTAgKzMzMjAsMTAgQEAg
eXlyZWR1Y2U6CiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24p
LT5hZGRQYXJhbWV0ZXIoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGRlbGV0ZSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFt
LnR5cGU7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3ODoKKyAgY2FzZSA3
OToKIAogICAgIHsKICAgICAgICAgLy8KQEAgLTMyNjIsNyArMzMzNCw3IEBAIHl5cmVkdWNlOgog
ICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIFRoaXMgcGFyYW1ldGVyID4gZmlyc3QgaXMg
dm9pZAogICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MikgLSAoMyldLmxleCkubGluZSwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBm
b3IgJyh2b2lkKSciLCAidm9pZCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WygyKSAtICgzKV0pLCAiY2Fubm90IGJlIGFuIGFyZ3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZv
aWQpJyIsICJ2b2lkIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICBkZWxldGUgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKS5wYXJhbS50eXBlOwogICAgICAg
ICB9IGVsc2UgewpAQCAtMzI3MCwxOCArMzM0MiwxOCBAQCB5eXJlZHVjZToKICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmZ1bmN0
aW9uKTsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5mdW5jdGlvbiktPmFk
ZFBhcmFtZXRlcigoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pLnBhcmFtKTsKICAgICAgICAgfQot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzk6CisgIGNhc2UgODA6CiAKICAg
ICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVy
ICE9IEV2cUdsb2JhbCAmJiAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVy
ICE9IEV2cVRlbXBvcmFyeSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZvciBmdW5jdGlvbiBy
ZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUp
LnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgz
KV0pLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFs
aWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIC8vIG1h
a2Ugc3VyZSBhIHNhbXBsZXIgaXMgbm90IGludm9sdmVkIGFzIHdlbGwuLi4KLSAgICAgICAgaWYg
KGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgzKV0ubGV4
KS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29u
dGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDMpXSksICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBhcyBhIHByb3RvdHlwZSBhZnRlciBw
YXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCByZWN1cnNpb24pCkBAIC0zMjkxLDcwMyArMzM2
Myw2OTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVu
Y3Rpb247CiAgICAgICAgIAogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4MDoKKyAgY2FzZSA4MToKIAogICAg
IHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS50eXBlID09IEVi
dFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMildLmxl
eCkubGluZSwgImlsbGVnYWwgdXNlIG9mIHR5cGUgJ3ZvaWQnIiwgKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WygyKSAtICgyKV0pLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCAoeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmlu
ZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWygyKSAt
ICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyh5eXZzcFsoMikg
LSAoMildLmxleCkuc3RyaW5nLCBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5
cGUpKX07Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5s
ZXgpLmxpbmU7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnBhcmFtID0gcGFyYW07Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4MToKKyAgY2FzZSA4MjoKIAogICAgIHsKICAg
ICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gbWFrZSBhbiBhcnJheSBvdXQgb2YgdGhpcyB0eXBl
Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAo
NSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2
c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygy
KSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcpKQorICAg
ICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwg
Kih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKIAogICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDQpIC0g
KDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkuc2V0QXJy
YXkodHJ1ZSwgc2l6ZSk7CiAKICAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoKHl5dnNw
WygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKTsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsg
KHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsIHR5cGUgfTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZTsKICAgICAgICAgKHl5dmFs
LmludGVybSkucGFyYW0gPSBwYXJhbTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBj
YXNlIDgyOgorICBjYXNlIDgzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5
eXZzcFsoMykgLSAoMyldLmludGVybSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9y
Q2hlY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0ucXVhbGlmaWVy
KSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJh
bUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
dHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5
dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4MzoKKyAgY2FzZSA4NDoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0p
OwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlm
aWVyKSwgKih5eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSks
ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAqKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5pbnRl
cm0pLmxpbmUsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmll
ciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFy
YW1FcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA4NDoKKyAgY2FzZSA4NToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFy
YW1FcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybSkubGluZSwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnF1
YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4
dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnF1YWxpZmll
ciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgODU6CisgIGNhc2Ug
ODY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNr
KCh5eXZzcFsoMikgLSAoMildLmludGVybSkubGluZSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LnF1YWxpZmllciksICooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAg
ICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soKHl5bHNwWygyKSAt
ICgyKV0pLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikg
LSAoMildLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgy
KV0uaW50ZXJtKS5saW5lLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5x
dWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksIEV2cVRlbXBvcmFyeSwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5
cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCi0gIGNhc2UgODY6CisgIGNhc2UgODc6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUluOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgODc6CisgIGNhc2UgODg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
cXVhbGlmaWVyKSA9IEV2cUluOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
ODg6CisgIGNhc2UgODk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVy
KSA9IEV2cU91dDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDg5OgorICBj
YXNlIDkwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFJ
bk91dDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDkwOgorICBjYXNlIDkx
OgogCiAgICAgewogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5cGUoKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpKSB9OwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5w
YXJhbSA9IHBhcmFtOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTE6Cisg
IGNhc2UgOTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDkyOgor
ICBjYXNlIDkzOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
KS50eXBlLnR5cGUgPT0gRWJ0SW52YXJpYW50ICYmICEoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN5
bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygzKSAt
ICgzKV0ubGV4KS5saW5lLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFy
aWFudCIsICh5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMykgLSAoMyldKSwgInVuZGVjbGFyZWQgaWRlbnRp
ZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmlu
Zy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0K
IAotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKDAsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtKS50eXBlKSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsK
LSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2Rl
LCBzeW1ib2wsICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgIFRJbnRlcm1T
eW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZz
cFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0p
LnR5cGUpLCAoeXlsc3BbKDMpIC0gKDMpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0pLmludGVybU5vZGUsIHN5bWJvbCwgKHl5bHNwWygzKSAtICgzKV0p
KTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKCh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSwgKHl5dmFsLmludGVybSkudHlwZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykg
LSAoMyldKSwgKHl5dmFsLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5
dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcs
ICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZhbHNlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbklu
aXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAqKHl5dnNwWygzKSAtICgzKV0u
bGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmxl
eCkubGluZSwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50
eXBlLCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygo
eXlsc3BbKDMpIC0gKDMpXSksICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dmFs
LmludGVybSkudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICBpZiAoc3ltYm9sICYmIHZhcmlhYmxlKQogICAgICAgICAgICAgc3ltYm9sLT5z
ZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA5MzoKKyAgY2FzZSA5NDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQt
PnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAo
eXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3Ry
dWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAo
NSldLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAg
ICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1
KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkg
LSAoNSldLmludGVybSkudHlwZSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0
Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKih5eXZzcFsoMykgLSAoNSldLmxl
eCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsIHRydWUpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5
dnNwWygxKSAtICg1KV0uaW50ZXJtKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBl
RXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSld
LmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZz
cFsoNCkgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg1
KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVh
bGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmlu
dGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLnNldEFycmF5
KHRydWUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZTsKLSAgICAgICAgICAgIGlm
IChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5dnNwWyg0KSAtICg1KV0ubGV4KS5saW5lLCAq
KHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSku
dHlwZSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVj
aygoeXlsc3BbKDQpIC0gKDUpXSksICooeXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5
dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA5NDoKKyAgY2FzZSA5NToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQt
PnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lLCAo
eXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3Ry
dWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDYpXSksICh5eXZzcFsoMSkgLSAo
NildLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAg
ICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg2
KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkg
LSAoNildLmludGVybSkudHlwZSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0
Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNildKSwgKih5eXZzcFsoMykgLSAoNildLmxl
eCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHRydWUpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5
dnNwWygxKSAtICg2KV0uaW50ZXJtKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBl
RXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNild
LmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZz
cFsoNCkgLSAoNildLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2
KV0pLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVh
bGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDYpXSksICh5eXZzcFsoMSkgLSAoNildLmlu
dGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoNSkg
LSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAgICAgICAgIGlmIChj
b250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKHl5dnNwWyg1
KSAtICg2KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoNildLmludGVy
bSkudHlwZS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgICAgIFRWYXJpYWJsZSogdmFy
aWFibGUgPSAwOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXl2
c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBp
ZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKih5eXZzcFso
MykgLSAoNildLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHZh
cmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICBUVHlwZSB0eXBlID0gVFR5cGUoKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlKTsKICAg
ICAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwotICAgICAgICAgICAgKHl5dmFsLmlu
dGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdh
dGUoKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlID8gdmFyaWFibGUtPmdldFVuaXF1ZUlkKCkgOiAwLCAq
KHl5dnNwWygzKSAtICg2KV0ubGV4KS5zdHJpbmcsIHR5cGUsICh5eXZzcFsoMykgLSAoNildLmxl
eCkubGluZSksICh5eXZzcFsoMykgLSAoNildLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0Fn
Z3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLmludGVybU5vZGUsIGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6
IDAsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5bHNwWygzKSAtICg2
KV0pKSwgKHl5bHNwWygzKSAtICg2KV0pKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAg
IGJyZWFrOwogCi0gIGNhc2UgOTU6CisgIGNhc2UgOTY6CiAKICAgICB7Ci0gICAgICAgIGlmIChj
b250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCku
bGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3Bb
KDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKTsK
IAogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0
LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNw
WygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSwg
KHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7
CisgICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eWxzcFsoMykgLSAo
NSldKSwgKih5eXZzcFsoMykgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0pLnR5cGUsICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBp
bnRlcm1Ob2RlKSkgewogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIGJ1aWxkIHRoZSBp
bnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBp
ZiAoaW50ZXJtTm9kZSkKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICg1KV0uaW50
ZXJtKS5pbnRlcm1Ob2RlLCBpbnRlcm1Ob2RlLCAoeXl2c3BbKDQpIC0gKDUpXS5sZXgpLmxpbmUp
OworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLmludGVybU5v
ZGUsIGludGVybU5vZGUsICh5eWxzcFsoNCkgLSAoNSldKSk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gKHl5dnNwWygx
KSAtICg1KV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1BZ2dyZWdhdGUgPSAwOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA5NjoKKyAgY2FzZSA5NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKLSAgICAgICAgKHl5dmFs
LmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dy
ZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgVFR5cGUoKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLnR5cGUpKSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUp
LmxpbmUpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7Ci0gICAgO30KKyAg
ICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwg
VFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpKSwgKHl5bHNwWygxKSAtICgxKV0p
KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NzoK
KyAgY2FzZSA5ODoKIAogICAgIHsKLSAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5z
dHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKSksICh5eXZzcFsoMikg
LSAoMildLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0
ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5dnNwWygy
KSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5z
dHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKSksICh5eWxzcFsoMikg
LSAoMildKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5bHNwWygyKSAtICgyKV0p
KTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgKHl5dmFsLmludGVybSkudHlwZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikg
LSAoMildKSwgKHl5dmFsLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5
dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcs
ICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZhbHNlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbklu
aXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgKHl5dmFsLmludGVy
bSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKTsKIAogICAgICAgICBUVmFy
aWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNo
ZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgKih5eXZzcFsoMikgLSAoMildLmxleCku
c3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgdmFyaWFibGUpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9s
KQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5ODoKKyAgY2FzZSA5OToKIAogICAg
IHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAi
dW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIsICh5eXZzcFsoMikgLSAo
NCldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WygyKSAtICg0KV0pLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIs
ICh5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5n
LCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpLCAoeXl2c3BbKDIpIC0gKDQp
XS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eXZzcFsoMikgLSAo
NCldLmxleCkubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5n
LCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpLCAoeXlsc3BbKDIpIC0gKDQp
XSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eWxzcFsoMikgLSAoNCldKSk7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlw
ZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5OToKKyAgY2FzZSAxMDA6
CiAKICAgICB7CiAgICAgICAgIFRUeXBlIHR5cGUgPSBUVHlwZSgoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0udHlwZSkpOwogICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmFy
cmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDQp
IC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKHl5dnNwWyg0KSAt
ICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB0eXBlLnNldEFycmF5U2l6ZShzaXplKTsKLSAgICAgICAg
VEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsIHR5cGUsICh5eXZzcFsoMikgLSAoNSld
LmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICg1
KV0ubGV4KS5saW5lKTsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcs
IHR5cGUsICh5eWxzcFsoMikgLSAoNSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVy
bUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwg
KHl5bHNwWygyKSAtICg1KV0pKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSwgKHl5dnNw
WygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1
YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAg
IGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxl
eCkubGluZSwgKih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUp
XS5pbnRlcm0udHlwZSksIHRydWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0
RXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUpXSksICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0
cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLCB0cnVlKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5
dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJh
eVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAt
ICg1KV0uaW50ZXJtLnR5cGUpKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2so
KHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlw
ZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDMp
IC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkgfHwgY29udGV4dC0+YXJy
YXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1
KV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0
LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNw
Wyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQorICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2
c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDUp
XS5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAgICAgICAgICBUVmFyaWFi
bGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hl
Y2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5z
dHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSwgdmFyaWFibGUpKQorICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICoo
eXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5
cGUpLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgICAgICAgICBzeW1ib2wt
PnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKICAgICAgICAgfQotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAwOgorICBjYXNlIDEwMToKIAogICAgIHsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0
KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBp
ZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSks
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS50eXBlKTsKIAogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAg
ICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5dnNwWygyKSAtICg0KV0u
bGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksIGludGVybU5vZGUpKSB7CisgICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxp
emVyKCh5eWxzcFsoMikgLSAoNCldKSwgKih5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSksICh5eXZzcFsoNCkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAvLwogICAgICAgICAvLyBC
dWlsZCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAgICAgICAgLy8KICAgICAgICAgICAg
IGlmKGludGVybU5vZGUpCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdn
cmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwg
KHl5dnNwWygzKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0
ZShpbnRlcm1Ob2RlLCAoeXlsc3BbKDMpIC0gKDQpXSkpOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAwOwogICAgICAgICB9Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDE6CisgIGNhc2UgMTAyOgogCiAgICAgewotICAg
ICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgKHl5dnNwWygxKSAtICgy
KV0ubGV4KS5saW5lKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5
dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQorICAgICAgICBWRVJURVhfT05MWSgiaW52YXJp
YW50IGRlY2xhcmF0aW9uIiwgKHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICAgICAgaWYgKGNvbnRl
eHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlLnNldEJhc2lj
KEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkudHlwZS5zZXRCYXNpYyhFYnRJbnZh
cmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICh5eWxzcFsoMikgLSAoMildKSk7CiAgICAg
ICAgIGlmICghKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zeW1ib2wpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgInVuZGVj
bGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAoeXl2c3BbKDIpIC0gKDIp
XS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbKDIpIC0gKDIpXSksICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJp
YW50IiwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAwOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAg
ICAgICAgewotICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRU
eXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOwot
ICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxp
bmUpOworICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBl
KCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXlsc3BbKDIpIC0gKDIpXSkpOworICAgICAgICAgICAg
KHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1h
a2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3BbKDIpIC0gKDIpXSkpOwogICAgICAgICB9Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDI6CisgIGNhc2UgMTAzOgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LnR5cGUpOwogCiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuYXJy
YXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS50eXBlKS5saW5lLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAibm90IHN1cHBvcnRl
ZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNldEFycmF5KGZh
bHNlKTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAz
OgorICBjYXNlIDEwNDoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMikgLSAoMildLmlu
dGVybS50eXBlKS5hcnJheSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNz
IGFycmF5Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSks
ICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlw
ZSkuc2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCh5eXZzcFsoMSkg
LSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlICYmCiAgICAgICAg
ICAgICAoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0Qm9vbCB8fCAo
eXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkubGluZSwg
ImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZygoeXl2c3BbKDEpIC0g
KDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXlsc3BbKDIpIC0gKDIpXSksICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZp
ZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGlmICgoKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwg
KHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nT3V0
KSAmJgogICAgICAgICAgICAgKCh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS50eXBlID09
IEVidEJvb2wgfHwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0SW50
KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJt
LnR5cGUpLmxpbmUsICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmco
KHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOworICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50
IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFs
aWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9ICh5eXZzcFsoMSkgLSAo
MildLmludGVybS50eXBlKS5xdWFsaWZpZXI7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxMDQ6CisgIGNhc2UgMTA1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
Vm9pZCwgRXZxQ29uc3QsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgfQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTA1OgorICBjYXNlIDEwNjoKIAogICAgIHsKLSAgICAgICAgVkVSVEVYX09OTFko
ImF0dHJpYnV0ZSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgIGlmIChj
b250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0cmlidXRlIikpCisgICAgICAg
IFZFUlRFWF9PTkxZKCJhdHRyaWJ1dGUiLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICBp
ZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAg
ICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUF0
dHJpYnV0ZSwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxMDY6CisgIGNhc2UgMTA3OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFs
RXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSwgInZhcnlpbmciKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmds
b2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCksICJ2YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIp
Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZh
cnlpbmdPdXQsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsICh5eWxzcFso
MSkgLSAoMSldKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LmxpbmUpOwotICAgIDt9CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxMDc6CisgIGNhc2UgMTA4OgogCiAgICAgewotICAgICAgICBpZiAo
Y29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsIGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikp
CisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMild
KSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlp
bmciKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgaWYgKGNvbnRl
eHQtPnNoYWRlclR5cGUgPT0gU0hfVkVSVEVYX1NIQURFUikKLSAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgKHl5
dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgKHl5bHNwWygxKSAt
ICgyKV0pKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nSW4sICh5eXZzcFsoMSkgLSAoMild
LmxleCkubGluZSk7Ci0gICAgO30KKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50VmFyeWluZ0luLCAoeXlsc3BbKDEpIC0gKDIpXSkp
OworICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDEwODoKKyAgY2FzZSAxMDk6CiAKICAgICB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9y
bSIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0g
KDEpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgInVuaWZvcm0iKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlmb3JtLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LmxpbmUpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
Vm9pZCwgRXZxVW5pZm9ybSwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxMDk6CisgIGNhc2UgMTEwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpOwogCiAgICAgICAgIGlm
ICgoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiA9PSBFYnBVbmRlZmluZWQpIHsKICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucHJlY2lzaW9uID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuZ2V0RGVmYXVsdFByZWNpc2lvbigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlw
ZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVjaygoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSwgKHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNp
b24sICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBlKSkgeworICAgICAgICAgICAg
aWYgKGNvbnRleHQtPnByZWNpc2lvbkVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCAoeXl2
YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUp
LnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTA6
CisgIGNhc2UgMTExOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnByZWNpc2lvbiA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5wcmVjaXNpb24pOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTExOgorICBjYXNlIDExMjoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwSGlnaDsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAotICBjYXNlIDExMjoKKyAgY2FzZSAxMTM6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVicE1lZGl1bTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAotICBjYXNlIDExMzoKKyAgY2FzZSAxMTQ6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVicExvdzsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAotICBjYXNlIDExNDoKKyAgY2FzZSAxMTU6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSk7Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTU6CisgIGNhc2UgMTE2OgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5
cGUpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eXZzcFso
MikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKKyAg
ICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg0KV0p
LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0u
bGV4KS5saW5lLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6
ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3Bb
KDIpIC0gKDQpXSksICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBz
aXplKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICB9Ci0gICAg
O30KLSAgICBicmVhazsKLQotICBjYXNlIDExNjoKLQotICAgIHsKLSAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVi
dFZvaWQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMTc6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRG
bG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTE4OgogCiAgICAgewogICAg
ICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwot
ICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1
YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTE5
OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxMjA6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDEyMToKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVt
cG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBx
dWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxMjI6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRBZ2dyZWdhdGUoNCk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CisgICAgfQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTIzOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRB
Z2dyZWdhdGUoMik7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MTI0OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdh
dGUoMyk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRC
b29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjU6CiAK
ICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5s
ZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsK
LSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1
YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QWdncmVnYXRlKDMpOworICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyNjoKIAogICAgIHsK
ICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5l
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7Ci0gICAgO30K
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXls
c3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0
ZSg0KTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjc6CiAKICAgICB7CiAgICAgICAg
IFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/
IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOwotICAgIDt9CisgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0g
KDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjg6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRJbnQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxMjk6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJt
YXQyIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBx
dWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDog
RXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZs
b2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyLCB0cnVlKTsKLSAgICA7fQorICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTMwOgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05M
WSgibWF0MyIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7Ci0gICAgO30KKyAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMiwgdHJ1
ZSk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMxOgogCiAgICAgewotICAgICAgICBG
UkFHX1ZFUlRfT05MWSgibWF0NCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCwgdHJ1ZSk7Ci0gICAg
O30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwg
KHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dy
ZWdhdGUoMywgdHJ1ZSk7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMyOgogCiAgICAg
ewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEIiwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0LCB0cnVlKTsKKyAgICB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMzM6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1w
bGVyQ3ViZSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRTYW1wbGVyQ3ViZSwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7
fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVh
bCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzQ6
CiAKICAgICB7CisgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgKHl5bHNwWygx
KSAtICgxKV0pKTsKKyAgICB9CisgICAgYnJlYWs7CisKKyAgY2FzZSAxMzU6CisKKyAgICB7CiAg
ICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Vf
ZXh0ZXJuYWwiKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgInVuc3VwcG9y
dGVkIHR5cGUiLCAic2FtcGxlckV4dGVybmFsT0VTIik7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXJFeHRl
cm5hbE9FUyIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7
Ci0gICAgO30KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVy
RXh0ZXJuYWxPRVMsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgfQogICAgIGJyZWFr
OwogCi0gIGNhc2UgMTM1OgorICBjYXNlIDEzNjoKIAogICAgIHsKICAgICAgICAgaWYgKCFjb250
ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIikpIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgInVu
c3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVjdCIpOworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRS
ZWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAg
ICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXIyRFJlY3QiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Cisg
ICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM2OgorICBjYXNlIDEzNzoKIAogICAgIHsKLSAg
ICAgICAgRlJBR19WRVJUX09OTFkoInN0cnVjdCIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKS5saW5lKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS50eXBlKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5xdWFsaWZpZXIg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzc6CisgIGNh
c2UgMTM4OgogCiAgICAgewogICAgICAgICAvLwpAQCAtMzk5Niw4NSArNDA1OCw4NiBAQCB5eXJl
ZHVjZToKICAgICAgICAgLy8KICAgICAgICAgVFR5cGUmIHN0cnVjdHVyZSA9IHN0YXRpY19jYXN0
PFRWYXJpYWJsZSo+KCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3ltYm9sKS0+Z2V0VHlwZSgpOwog
ICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgcXVh
bCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS51c2Vy
RGVmID0gJnN0cnVjdHVyZTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDEz
ODoKKyAgY2FzZSAxMzk6CiAKLSAgICB7IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0
aW9uKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgKih5eXZzcFsoMikgLSAoMyldLmxleCku
c3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyA7fQorICAgIHsgaWYgKGNvbnRleHQtPmVudGVy
U3RydWN0RGVjbGFyYXRpb24oKHl5bHNwWygyKSAtICgzKV0pLCAqKHl5dnNwWygyKSAtICgzKV0u
bGV4KS5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IH0KICAgICBicmVhazsKIAotICBjYXNl
IDEzOToKKyAgY2FzZSAxNDA6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZl
ZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg2KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg2
KV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNr
KCh5eWxzcFsoMikgLSAoNildKSwgKih5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUVHlwZSogc3RydWN0dXJl
ID0gbmV3IFRUeXBlKCh5eXZzcFsoNSkgLSAoNildLmludGVybS50eXBlTGlzdCksICooeXl2c3Bb
KDIpIC0gKDYpXS5sZXgpLnN0cmluZyk7CisgICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcg
VFR5cGUobmV3IFRTdHJ1Y3R1cmUoKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoNSkgLSAoNildLmludGVybS5maWVsZExpc3QpKSk7CiAgICAgICAgIFRWYXJpYWJsZSogdXNl
clR5cGVEZWYgPSBuZXcgVFZhcmlhYmxlKCh5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nLCAq
c3RydWN0dXJlLCB0cnVlKTsKICAgICAgICAgaWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5z
ZXJ0KCp1c2VyVHlwZURlZikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MikgLSAoNildLmxleCkubGluZSwgInJlZGVmaW5pdGlvbiIsICh5eXZzcFsoMikgLSAoNildLmxl
eCkuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXlsc3BbKDIpIC0gKDYpXSksICJyZWRlZmluaXRpb24iLCAoeXl2c3BbKDIpIC0gKDYpXS5s
ZXgpLnN0cmluZy0+Y19zdHIoKSwgInN0cnVjdCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoNildLmxleCkubGluZSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3Jh
cnksICh5eWxzcFsoMSkgLSAoNildKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkudXNl
ckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9u
KCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDA6CisgIGNhc2UgMTQx
OgogCi0gICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXl2c3BbKDIp
IC0gKDIpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZykpIGNvbnRl
eHQtPnJlY292ZXIoKTsgO30KKyAgICB7IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0
aW9uKCh5eWxzcFsoMikgLSAoMildKSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkg
Y29udGV4dC0+cmVjb3ZlcigpOyB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDE6CisgIGNhc2Ug
MTQyOgogCiAgICAgewotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCh5eXZz
cFsoNCkgLSAoNSldLmludGVybS50eXBlTGlzdCksIFRTdHJpbmcoIiIpKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5dnNw
WygxKSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBU
VHlwZShuZXcgVFN0cnVjdHVyZShOZXdQb29sVFN0cmluZygiIiksICh5eXZzcFsoNCkgLSAoNSld
LmludGVybS5maWVsZExpc3QpKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFz
aWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eWxzcFsoMSkgLSAoNSldKSk7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkudXNlckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4
dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxNDI6CisgIGNhc2UgMTQzOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGVMaXN0KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlTGlzdCk7Ci0gICAgO30K
KyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmZpZWxkTGlzdCk7CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQzOgorICBjYXNl
IDE0NDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCkgPSAoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0udHlwZUxpc3QpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8ICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCktPnNpemUoKTsgKytp
KSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8ICh5eXZhbC5pbnRl
cm0udHlwZUxpc3QpLT5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIGlmICgoKih5eXZh
bC5pbnRlcm0udHlwZUxpc3QpKVtqXS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSAoKih5eXZzcFso
MikgLSAoMildLmludGVybS50eXBlTGlzdCkpW2ldLnR5cGUtPmdldEZpZWxkTmFtZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCgqKHl5dnNwWygyKSAtICgyKV0uaW50
ZXJtLnR5cGVMaXN0KSlbaV0ubGluZSwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVy
ZToiLCAic3RydWN0IiwgKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZUxpc3QpKVtpXS50
eXBlLT5nZXRGaWVsZE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5maWVs
ZExpc3QpID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZpZWxkTGlzdCk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmZpZWxkTGlzdCkt
PnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBURmllbGQqIGZpZWxkID0gKCooeXl2c3BbKDIp
IC0gKDIpXS5pbnRlcm0uZmllbGRMaXN0KSlbaV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBq
ID0gMDsgaiA8ICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+c2l6ZSgpOyArK2opIHsKKyAgICAg
ICAgICAgICAgICBpZiAoKCooeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkpW2pdLT5uYW1lKCkgPT0g
ZmllbGQtPm5hbWUoKSkgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbKDIpIC0gKDIpXSksICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0
cnVjdCIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+cHVzaF9iYWNrKCgqKHl5dnNwWygyKSAtICgy
KV0uaW50ZXJtLnR5cGVMaXN0KSlbaV0pOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5maWVs
ZExpc3QpLT5wdXNoX2JhY2soZmllbGQpOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxNDQ6CisgIGNhc2UgMTQ1OgogCiAgICAgewotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGVMaXN0KSA9ICh5eXZzcFsoMikgLSAoMyldLmludGVybS50eXBlTGlzdCk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSA9ICh5eXZzcFsoMikgLSAoMyldLmlu
dGVybS5maWVsZExpc3QpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT52b2lkRXJyb3JDaGVjaygo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubGluZSwgKCooeXl2c3BbKDIpIC0gKDMpXS5p
bnRlcm0udHlwZUxpc3QpKVswXS50eXBlLT5nZXRGaWVsZE5hbWUoKSwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLnR5cGUpKSkgeworICAgICAgICBpZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2so
KHl5bHNwWygxKSAtICgzKV0pLCAoKih5eXZzcFsoMikgLSAoMyldLmludGVybS5maWVsZExpc3Qp
KVswXS0+bmFtZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkpKSB7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+c2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoeXl2YWwuaW50ZXJtLmZpZWxk
TGlzdCktPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gQ2Fy
ZWZ1bCBub3QgdG8gcmVwbGFjZSBhbHJlYWR5IGtub3duIGFzcGVjdHMgb2YgdHlwZSwgbGlrZSBh
cnJheS1uZXNzCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5
eXZhbC5pbnRlcm0udHlwZUxpc3QpKVtpXS50eXBlOworICAgICAgICAgICAgVFR5cGUqIHR5cGUg
PSAoKih5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSlbaV0tPnR5cGUoKTsKICAgICAgICAgICAgIHR5
cGUtPnNldEJhc2ljVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkudHlwZSk7CiAg
ICAgICAgICAgICB0eXBlLT5zZXROb21pbmFsU2l6ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
dHlwZSkuc2l6ZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXRNYXRyaXgoKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLnR5cGUpLm1hdHJpeCk7CkBAIC00MDgyLDQzNyArNDE0NSw0MzIgQEAgeXlyZWR1
Y2U6CiAKICAgICAgICAgICAgIC8vIGRvbid0IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAgICAg
ICAgICAgIGlmICh0eXBlLT5pc0FycmF5KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubGlu
ZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgICAgICAgICBpZiAo
Y29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDMpXSksICh5eXZzcFso
MSkgLSAoMyldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0udHlwZSkuYXJyYXkpCiAgICAgICAgICAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXpl
KCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5hcnJheVNpemUpOwotICAgICAgICAgICAg
aWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS51c2VyRGVmKSB7CisgICAgICAgICAg
ICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnVzZXJEZWYpCiAgICAgICAgICAg
ICAgICAgdHlwZS0+c2V0U3RydWN0KCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS51c2Vy
RGVmLT5nZXRTdHJ1Y3QoKSk7Ci0gICAgICAgICAgICAgICAgdHlwZS0+c2V0VHlwZU5hbWUoKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnVzZXJEZWYtPmdldFR5cGVOYW1lKCkpOwotICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9y
Q2hlY2soKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLmxpbmUsICp0eXBlKSkgeworICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKCh5eWxzcFsoMSkg
LSAoMyldKSwgKigqKHl5dmFsLmludGVybS5maWVsZExpc3QpKVtpXSkpCiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgO30K
KyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDU6CisgIGNhc2UgMTQ2OgogCiAgICAgewot
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9IE5ld1Bvb2xUVHlwZUxpc3QoKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0udHlwZUxpbmUpKTsKLSAgICA7fQorICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxk
TGlzdCkgPSBOZXdQb29sVEZpZWxkTGlzdCgpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxk
TGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZmllbGQpKTsKKyAgICB9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDY6CisgIGNhc2UgMTQ3OgogCiAgICAgewotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+cHVzaF9iYWNrKCh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS50eXBlTGluZSkpOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0
KS0+cHVzaF9iYWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybS5maWVsZCkpOworICAgIH0KICAg
ICBicmVhazsKIAotICBjYXNlIDE0NzoKKyAgY2FzZSAxNDg6CiAKICAgICB7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5l
LCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+
cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwgKih5eXZzcFsoMSkgLSAoMSld
LmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlID0gbmV3IFRUeXBlKEVidFZvaWQsIEVicFVu
ZGVmaW5lZCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLmxpbmUgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5sZXgpLmxpbmU7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLnR5
cGUtPnNldEZpZWxkTmFtZSgqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpOwotICAgIDt9
CisgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRUeXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGQpID0gbmV3IFRGaWVsZCh0eXBlLCAoeXl2c3Bb
KDEpIC0gKDEpXS5sZXgpLnN0cmluZyk7CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ4
OgorICBjYXNlIDE0OToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJy
b3JDaGVjaygoeXl2c3BbKDEpIC0gKDQpXS5sZXgpLmxpbmUsICooeXl2c3BbKDEpIC0gKDQpXS5s
ZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5
bHNwWygxKSAtICg0KV0pLCAqKHl5dnNwWygxKSAtICg0KV0ubGV4KS5zdHJpbmcpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxp
bmUpLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlTGluZSkubGluZSA9ICh5eXZzcFsoMSkgLSAoNCldLmxleCkubGluZTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSkudHlwZS0+c2V0RmllbGROYW1lKCooeXl2
c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZyk7Ci0KLSAgICAgICAgaW50IHNpemU7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCku
bGluZSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQor
ICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwor
ICAgICAgICBpbnQgc2l6ZSA9IDA7CisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJv
ckNoZWNrKCh5eWxzcFsoMykgLSAoNCldKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7Ci0g
ICAgO30KLSAgICBicmVhazsKKyAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKHNpemUpOwogCi0g
IGNhc2UgMTQ5OgotCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICAgICAgKHl5dmFs
LmludGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5eXZzcFsoMSkgLSAoNCldLmxleCku
c3RyaW5nKTsKKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTA6CiAKLSAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9k
ZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MTUxOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxNTI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0
ZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1MzoKIAotICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAg
ICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1NDoKIAotICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2Rl
KTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1NToKIAotICAg
IHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1
NjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE1NzoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBi
cmVhazsKIAogICBjYXNlIDE1ODoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdh
dGUpID0gMDsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE1OToK
IAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTYwOgog
Ci0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgO30KKyAgICB7IGNvbnRleHQtPnN5
bWJvbFRhYmxlLnB1c2goKTsgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTYxOgogCisgICAgeyBj
b250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgfQorICAgIGJyZWFrOworCisgIGNhc2UgMTYyOgor
CiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3Jl
Z2F0ZSkgIT0gMCkgewogICAgICAgICAgICAgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVy
bUFnZ3JlZ2F0ZSktPnNldE9wKEVPcFNlcXVlbmNlKTsKLSAgICAgICAgICAgICh5eXZzcFsoMykg
LSAoNSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRFbmRMaW5lKCh5eXZzcFsoNSkgLSAo
NSldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50
ZXJtQWdncmVnYXRlKS0+c2V0TGluZSgoeXlsb2MpKTsKICAgICAgICAgfQogICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50
ZXJtQWdncmVnYXRlKTsKLSAgICA7fQotICAgIGJyZWFrOwotCi0gIGNhc2UgMTYyOgotCi0gICAg
eyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybU5vZGUpOyA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE2MzoKIAotICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1Ob2RlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE2NDoK
IAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY1OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmlu
dGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY2OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5wdXNoKCk7IDt9CisgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKTsg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY3OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmlu
dGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY4OgogCi0gICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gMDsKLSAgICA7fQorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUu
cG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtTm9kZSk7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE2OToKIAogICAgIHsKLSAg
ICAgICAgaWYgKCh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpKSB7Ci0g
ICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0
T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAgICAgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmlu
dGVybUFnZ3JlZ2F0ZSktPnNldEVuZExpbmUoKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsK
LSAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygy
KSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7Ci0gICAgO30KKyAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSA9IDA7CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTcw
OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtTm9kZSksIDApOwotICAgIDt9CisgICAgICAgIGlmICgoeXl2c3BbKDIpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtQWdncmVnYXRlKSkgeworICAgICAgICAgICAgKHl5dnNwWygyKSAtICgzKV0u
aW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldE9wKEVPcFNlcXVlbmNlKTsKKyAgICAgICAgICAg
ICh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxv
YykpOworICAgICAgICB9CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2
c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKTsKKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxNzE6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdn
cmVnYXRlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkg
LSAoMildLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtTm9kZSksIDApOwotICAgIDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdn
cmVnYXRlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKCh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bG9jKSk7CisgICAgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMTcyOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsgO30K
KyAgICB7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRl
cm1BZ2dyZWdhdGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxv
YykpOworICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE3MzoKIAotICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRpY19jYXN0PFRJbnRlcm1Ob2RlKj4oKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9IDA7IH0KICAgICBicmVhazsKIAogICBjYXNlIDE3NDoKIAorICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRpY19jYXN0PFRJbnRlcm1Ob2RlKj4oKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOyB9CisgICAgYnJlYWs7CisKKyAg
Y2FzZSAxNzU6CisKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygo
eXl2c3BbKDEpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eWxz
cFsoMSkgLSAoNSldKSwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3Bb
KDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50
ZXJtLm5vZGVQYWlyKSwgKHl5dnNwWygxKSAtICg1KV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFNlbGVjdGlvbigoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWyg1KSAtICg1KV0uaW50ZXJtLm5vZGVQYWlyKSwgKHl5bHNwWygxKSAtICg1KV0pKTsKKyAg
ICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzU6CisgIGNhc2UgMTc2OgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1Ob2RlKTsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTIg
PSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxNzY6CisgIGNhc2UgMTc3OgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1Ob2RlKTsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTIgPSAwOwot
ICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc3OgorICBjYXNlIDE3ODoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIGlmIChjb250ZXh0LT5i
b29sRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0TGluZSgpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxNzg6CisgIGNhc2UgMTc5OgogCiAgICAgewogICAgICAgICBUSW50ZXJtTm9k
ZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVj
aygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29s
RXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXls
c3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRl
SW5pdGlhbGl6ZXIoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg0
KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0
KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKQorICAgICAgICBp
ZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigoeXlsc3BbKDIpIC0gKDQpXSksICooeXl2
c3BbKDIpIC0gKDQpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUp
LCAoeXl2c3BbKDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkp
CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDQp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAwOwogICAgICAgICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxNzk6CisgIGNhc2UgMTgwOgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5w
dXNoKCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KKyAgICB7IGNvbnRleHQtPnN5
bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyB9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxODA6CisgIGNhc2UgMTgxOgogCiAgICAgewogICAgICAgICBjb250ZXh0
LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hpbGUsIDAsICh5eXZzcFsoNCkg
LSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDYpIC0gKDYpXS5pbnRl
cm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMSkgLSAoNildLmxleCkubGluZSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChF
TG9vcFdoaWxlLCAwLCAoeXl2c3BbKDQpIC0gKDYpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
MCwgKHl5dnNwWyg2KSAtICg2KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDYp
XSkpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODE6CisgIGNhc2UgMTgyOgogCi0gICAgeyArK2NvbnRl
eHQtPmxvb3BOZXN0aW5nTGV2ZWw7IDt9CisgICAgeyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2
ZWw7IH0KICAgICBicmVhazsKIAotICBjYXNlIDE4MjoKKyAgY2FzZSAxODM6CiAKICAgICB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDgpIC0gKDgpXS5sZXgp
LmxpbmUsICh5eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAg
ICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eWxzcFsoOCkgLSAoOCldKSwgKHl5dnNw
Wyg2KSAtICg4KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAo
OCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0u
aW50ZXJtTm9kZSksICh5eXZzcFsoNCkgLSAoOCldLmxleCkubGluZSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9v
cERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAw
LCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoNCkgLSAoOCld
KSk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAotICBjYXNlIDE4MzoKKyAgY2FzZSAxODQ6CiAKLSAgICB7IGNvbnRleHQt
PnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyA7fQorICAg
IHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2
ZWw7IH0KICAgICBicmVhazsKIAotICBjYXNlIDE4NDoKKyAgY2FzZSAxODU6CiAKICAgICB7CiAg
ICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BGb3IsICh5
eXZzcFsoNCkgLSAoNyldLmludGVybS5pbnRlcm1Ob2RlKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50
ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxKSwgcmVp
bnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9k
ZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3KSAtICg3KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2
c3BbKDEpIC0gKDcpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BGb3IsICh5eXZzcFsoNCkg
LSAoNyldLmludGVybS5pbnRlcm1Ob2RlKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQq
PigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxKSwgcmVpbnRlcnByZXRf
Y2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5v
ZGUyKSwgKHl5dnNwWyg3KSAtICg3KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsc3BbKDEpIC0g
KDcpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODU6CisgIGNhc2UgMTg2OgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybU5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg2Ogor
ICBjYXNlIDE4NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAotICBjYXNlIDE4NzoKKyAgY2FzZSAxODg6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg4
OgorICBjYXNlIDE4OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gMDsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE4OToKKyAg
Y2FzZSAxOTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUx
ID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyID0gMDsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAotICBjYXNlIDE5MDoKKyAgY2FzZSAxOTE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyID0gKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxOTE6CisgIGNhc2UgMTkyOgogCiAgICAgewogICAgICAgICBpZiAo
Y29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICJjb250aW51ZSBzdGF0ZW1lbnQgb25s
eSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
bHNwWygxKSAtICgyKV0pLCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29w
cyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEJyYW5jaChFT3BDb250aW51ZSwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICA7
fQorICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgKHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICB9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxOTI6CisgIGNhc2UgMTkzOgogCiAgICAgewogICAgICAgICBp
ZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICJicmVhayBzdGF0ZW1lbnQgb25s
eSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
bHNwWygxKSAtICgyKV0pLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIs
ICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJy
YW5jaChFT3BCcmVhaywgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICA7fQorICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEJyYW5jaChFT3BCcmVhaywgKHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICB9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxOTM6CisgIGNhc2UgMTk0OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1
cm4sICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwg
KHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlv
blR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11
c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXlsc3BbKDEpIC0gKDIpXSksICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZh
bHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICB9Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTQ6CisgIGNhc2UgMTk1
OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMikgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDEpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJy
YW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXlsc3BbKDEpIC0gKDMpXSkpOwogICAgICAgICBjb250ZXh0LT5mdW5jdGlvblJldHVybnNW
YWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5n
ZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXl2c3BbKDEpIC0gKDMpXS5sZXgpLmxpbmUsICJ2b2lkIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4g
YSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFso
MSkgLSAoMyldKSwgInZvaWQgZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIiwgInJldHVy
biIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9IGVsc2UgaWYg
KCooY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZSkgIT0gKHl5dnNwWygyKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSkgewotICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0ubGV4KS5saW5lLCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5v
dCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eWxzcFsoMSkgLSAoMyldKSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlw
ZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAotICBjYXNlIDE5NToKKyAgY2FzZSAxOTY6
CiAKICAgICB7Ci0gICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICh5eXZzcFsoMSkgLSAoMild
LmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcEtpbGwsICh5eXZzcFsoMSkgLSAoMildLmxleCku
bGluZSk7Ci0gICAgO30KKyAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgKHl5bHNwWygxKSAt
ICgyKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgKHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICB9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTY6CisgIGNhc2UgMTk3OgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybU5vZGUpOwogICAgICAgICBjb250ZXh0LT50cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTc6CisgIGNh
c2UgMTk4OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxvYykpOwogICAgICAgICBjb250
ZXh0LT50cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSk7Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTg6CisgIGNhc2UgMTk5OgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybU5vZGUpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk5OgorICBj
YXNlIDIwMDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAotICBjYXNlIDIwMDoKKyAgY2FzZSAyMDE6CiAKICAgICB7CiAgICAgICAgIFRGdW5j
dGlvbiogZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmZ1bmN0aW9uOwpAQCAt
NDUyMSw3ICs0NTc5LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIAogICAgICAgICBpZiAoYnVpbHRJ
bikKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtKS5saW5lLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQi
LCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5bHNwWygxKSAtICgxKV0pLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRl
ZmluZWQiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDUzNSw3ICs0NTkzLDcgQEAg
eXlyZWR1Y2U6CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhlbiB0aGlzIGZ1bmN0
aW9uIGFscmVhZHkgaGFzIGEgYm9keS4KICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICJmdW5jdGlvbiBhbHJl
YWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiZnVuY3Rpb24gYWxyZWFkeSBo
YXMgYSBib2R5IiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBwcmV2RGVjLT5zZXREZWZpbmVk
KCk7CkBAIC00NTQ1LDExICs0NjAzLDExIEBAIHl5cmVkdWNlOgogICAgICAgICAvLwogICAgICAg
ICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAibWFpbiIpIHsKICAgICAgICAgICAgIGlmIChm
dW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpID4gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgImZ1bmN0aW9uIGNhbm5vdCB0
YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgImZ1bmN0aW9u
IGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3Ry
KCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgp
ICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmxpbmUsICIiLCBmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJh
c2ljU3RyaW5nKCksICJtYWluIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgIiIsIGZ1bmN0
aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fu
bm90IHJldHVybiBhIHZhbHVlIik7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NTc3LDcgKzQ2MzUsNyBAQCB5eXJlZHVj
ZToKICAgICAgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHBhcmFtZXRlcnMgd2l0aCBuYW1lIGlu
IHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICBp
ZiAoISBjb250ZXh0LT5zeW1ib2xUYWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkgewotICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUs
ICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJyZWRlZmluaXRp
b24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsK
ICAgICAgICAgICAgICAgICB9CkBAIC00NTg4LDMxICs0NjQ2LDMyIEBAIHl5cmVkdWNlOgogICAg
ICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3Jl
Z2F0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW1Ob2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFi
bGUtPmdldFR5cGUoKSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHl5bHNwWygxKSAtICgxKV0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5ncm93QWdncmVnYXRlKHBhcmFtTm9kZXMsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRT
eW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUp
LCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgIHBhcmFt
Tm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgKHl5bHNw
WygxKSAtICgxKV0pKSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3Io
cGFyYW1Ob2RlcywgRU9wUGFyYW1ldGVycywgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5l
KTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBh
cmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICh5
eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAg
ICAgICAgY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA9IDA7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyMDE6CisgIGNhc2UgMjAyOgogCiAgICAgewogICAgICAgICAvLz8/
IENoZWNrIHRoYXQgYWxsIHBhdGhzIHJldHVybiBhIHZhbHVlIGlmIHJldHVybiB0eXBlICE9IHZv
aWQgPwogICAgICAgICAvLyAgIE1heSBiZSBiZXN0IGRvbmUgYXMgcG9zdCBwcm9jZXNzIHBoYXNl
IG9uIGludGVybWVkaWF0ZSBjb2RlCiAgICAgICAgIGlmIChjb250ZXh0LT5jdXJyZW50RnVuY3Rp
b25UeXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRWb2lkICYmICEgY29udGV4dC0+ZnVuY3Rpb25S
ZXR1cm5zVmFsdWUpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAo
MyldLmludGVybSkubGluZSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlOiIsICIi
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDMpXSksICJmdW5jdGlv
biBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAiIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
KS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsICh5eXZzcFsoMykgLSAoMyldLmludGVybS5p
bnRlcm1Ob2RlKSwgMCk7Ci0gICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdh
dGVPcGVyYXRvcigoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLCBFT3BGdW5jdGlvbiwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAo
MyldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtTm9kZSksICh5eWxvYykpOworICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdn
cmVnYXRlT3BlcmF0b3IoKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSwgRU9wRnVuY3Rpb24sICh5
eWxzcFsoMSkgLSAoMyldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdl
dEFzQWdncmVnYXRlKCktPnNldE5hbWUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlv
bi0+Z2V0TWFuZ2xlZE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0VHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0pLmZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkpOwogCkBAIC00NjIxLDE4ICs0NjgwLDI1IEBA
IHl5cmVkdWNlOgogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3Jl
Z2F0ZSgpLT5zZXRPcHRpbWl6ZShjb250ZXh0LT5wcmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNv
bnRleHQtPnByYWdtYSgpLmRlYnVnKTsKIAotICAgICAgICBpZiAoKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybU5vZGUpICYmICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2Rl
KS0+Z2V0QXNBZ2dyZWdhdGUoKSkKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSktPmdldEFzQWdncmVnYXRlKCktPnNldEVuZExpbmUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5nZXRFbmRMaW5lKCkpOwotCiAgICAgICAg
IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
CiAKLS8qIExpbmUgMTI2NyBvZiB5YWNjLmMuICAqLwogCiAgICAgICBkZWZhdWx0OiBicmVhazsK
ICAgICB9CisgIC8qIFVzZXIgc2VtYW50aWMgYWN0aW9ucyBzb21ldGltZXMgYWx0ZXIgeXljaGFy
LCBhbmQgdGhhdCByZXF1aXJlcworICAgICB0aGF0IHl5dG9rZW4gYmUgdXBkYXRlZCB3aXRoIHRo
ZSBuZXcgdHJhbnNsYXRpb24uICBXZSB0YWtlIHRoZQorICAgICBhcHByb2FjaCBvZiB0cmFuc2xh
dGluZyBpbW1lZGlhdGVseSBiZWZvcmUgZXZlcnkgdXNlIG9mIHl5dG9rZW4uCisgICAgIE9uZSBh
bHRlcm5hdGl2ZSBpcyB0cmFuc2xhdGluZyBoZXJlIGFmdGVyIGV2ZXJ5IHNlbWFudGljIGFjdGlv
biwKKyAgICAgYnV0IHRoYXQgdHJhbnNsYXRpb24gd291bGQgYmUgbWlzc2VkIGlmIHRoZSBzZW1h
bnRpYyBhY3Rpb24gaW52b2tlcworICAgICBZWUFCT1JULCBZWUFDQ0VQVCwgb3IgWVlFUlJPUiBp
bW1lZGlhdGVseSBhZnRlciBhbHRlcmluZyB5eWNoYXIgb3IKKyAgICAgaWYgaXQgaW52b2tlcyBZ
WUJBQ0tVUC4gIEluIHRoZSBjYXNlIG9mIFlZQUJPUlQgb3IgWVlBQ0NFUFQsIGFuCisgICAgIGlu
Y29ycmVjdCBkZXN0cnVjdG9yIG1pZ2h0IHRoZW4gYmUgaW52b2tlZCBpbW1lZGlhdGVseS4gIElu
IHRoZQorICAgICBjYXNlIG9mIFlZRVJST1Igb3IgWVlCQUNLVVAsIHN1YnNlcXVlbnQgcGFyc2Vy
IGFjdGlvbnMgbWlnaHQgbGVhZAorICAgICB0byBhbiBpbmNvcnJlY3QgZGVzdHJ1Y3RvciBjYWxs
IG9yIHZlcmJvc2Ugc3ludGF4IGVycm9yIG1lc3NhZ2UKKyAgICAgYmVmb3JlIHRoZSBsb29rYWhl
YWQgaXMgdHJhbnNsYXRlZC4gICovCiAgIFlZX1NZTUJPTF9QUklOVCAoIi0+ICQkID0iLCB5eXIx
W3l5bl0sICZ5eXZhbCwgJnl5bG9jKTsKIAogICBZWVBPUFNUQUNLICh5eWxlbik7CkBAIC00NjQw
LDcgKzQ3MDYsNyBAQCB5eXJlZHVjZToKICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsK
IAogICAqKyt5eXZzcCA9IHl5dmFsOwotCisgICorK3l5bHNwID0geXlsb2M7CiAKICAgLyogTm93
IGBzaGlmdCcgdGhlIHJlc3VsdCBvZiB0aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3Rh
dGUKICAgICAgdGhhdCBnb2VzIHRvLCBiYXNlZCBvbiB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sg
dG8gYW5kIHRoZSBydWxlCkBAIC00NjYxLDUyICs0NzI3LDU1IEBAIHl5cmVkdWNlOgogfCB5eWVy
cmxhYiAtLSBoZXJlIG9uIGRldGVjdGluZyBlcnJvciB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKi8KIHl5ZXJybGFiOgorICAvKiBNYWtlIHN1cmUgd2UgaGF2ZSBsYXRl
c3QgbG9va2FoZWFkIHRyYW5zbGF0aW9uLiAgU2VlIGNvbW1lbnRzIGF0CisgICAgIHVzZXIgc2Vt
YW50aWMgYWN0aW9ucyBmb3Igd2h5IHRoaXMgaXMgbmVjZXNzYXJ5LiAgKi8KKyAgeXl0b2tlbiA9
IHl5Y2hhciA9PSBZWUVNUFRZID8gWVlFTVBUWSA6IFlZVFJBTlNMQVRFICh5eWNoYXIpOworCiAg
IC8qIElmIG5vdCBhbHJlYWR5IHJlY292ZXJpbmcgZnJvbSBhbiBlcnJvciwgcmVwb3J0IHRoaXMg
ZXJyb3IuICAqLwogICBpZiAoIXl5ZXJyc3RhdHVzKQogICAgIHsKICAgICAgICsreXluZXJyczsK
ICNpZiAhIFlZRVJST1JfVkVSQk9TRQotICAgICAgeXllcnJvciAoY29udGV4dCwgWVlfKCJzeW50
YXggZXJyb3IiKSk7CisgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZWV8oInN5bnRh
eCBlcnJvciIpKTsKICNlbHNlCisjIGRlZmluZSBZWVNZTlRBWF9FUlJPUiB5eXN5bnRheF9lcnJv
ciAoJnl5bXNnX2FsbG9jLCAmeXltc2csIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB5eXNzcCwgeXl0b2tlbikKICAgICAgIHsKLQlZWVNJWkVfVCB5eXNpemUgPSB5
eXN5bnRheF9lcnJvciAoMCwgeXlzdGF0ZSwgeXljaGFyKTsKLQlpZiAoeXltc2dfYWxsb2MgPCB5
eXNpemUgJiYgeXltc2dfYWxsb2MgPCBZWVNUQUNLX0FMTE9DX01BWElNVU0pCi0JICB7Ci0JICAg
IFlZU0laRV9UIHl5YWxsb2MgPSAyICogeXlzaXplOwotCSAgICBpZiAoISAoeXlzaXplIDw9IHl5
YWxsb2MgJiYgeXlhbGxvYyA8PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pKQotCSAgICAgIHl5YWxs
b2MgPSBZWVNUQUNLX0FMTE9DX01BWElNVU07Ci0JICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikK
LQkgICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNnKTsKLQkgICAgeXltc2cgPSAoY2hhciAqKSBZWVNU
QUNLX0FMTE9DICh5eWFsbG9jKTsKLQkgICAgaWYgKHl5bXNnKQotCSAgICAgIHl5bXNnX2FsbG9j
ID0geXlhbGxvYzsKLQkgICAgZWxzZQotCSAgICAgIHsKLQkJeXltc2cgPSB5eW1zZ2J1ZjsKLQkJ
eXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7Ci0JICAgICAgfQotCSAgfQotCi0JaWYgKDAg
PCB5eXNpemUgJiYgeXlzaXplIDw9IHl5bXNnX2FsbG9jKQotCSAgewotCSAgICAodm9pZCkgeXlz
eW50YXhfZXJyb3IgKHl5bXNnLCB5eXN0YXRlLCB5eWNoYXIpOwotCSAgICB5eWVycm9yIChjb250
ZXh0LCB5eW1zZyk7Ci0JICB9Ci0JZWxzZQotCSAgewotCSAgICB5eWVycm9yIChjb250ZXh0LCBZ
WV8oInN5bnRheCBlcnJvciIpKTsKLQkgICAgaWYgKHl5c2l6ZSAhPSAwKQotCSAgICAgIGdvdG8g
eXlleGhhdXN0ZWRsYWI7Ci0JICB9CisgICAgICAgIGNoYXIgY29uc3QgKnl5bXNncCA9IFlZXygi
c3ludGF4IGVycm9yIik7CisgICAgICAgIGludCB5eXN5bnRheF9lcnJvcl9zdGF0dXM7CisgICAg
ICAgIHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9IFlZU1lOVEFYX0VSUk9SOworICAgICAgICBpZiAo
eXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDApCisgICAgICAgICAgeXltc2dwID0geXltc2c7Cisg
ICAgICAgIGVsc2UgaWYgKHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9PSAxKQorICAgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKKyAgICAgICAgICAgICAgWVlTVEFD
S19GUkVFICh5eW1zZyk7CisgICAgICAgICAgICB5eW1zZyA9IChjaGFyICopIFlZU1RBQ0tfQUxM
T0MgKHl5bXNnX2FsbG9jKTsKKyAgICAgICAgICAgIGlmICgheXltc2cpCisgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB5eW1zZyA9IHl5bXNnYnVmOworICAgICAgICAgICAgICAgIHl5
bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOworICAgICAgICAgICAgICAgIHl5c3ludGF4X2Vy
cm9yX3N0YXR1cyA9IDI7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9IFlZU1lO
VEFYX0VSUk9SOworICAgICAgICAgICAgICAgIHl5bXNncCA9IHl5bXNnOworICAgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorICAgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCB5eW1z
Z3ApOworICAgICAgICBpZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDIpCisgICAgICAgICAg
Z290byB5eWV4aGF1c3RlZGxhYjsKICAgICAgIH0KKyMgdW5kZWYgWVlTWU5UQVhfRVJST1IKICNl
bmRpZgogICAgIH0KIAotCisgIHl5ZXJyb3JfcmFuZ2VbMV0gPSB5eWxsb2M7CiAKICAgaWYgKHl5
ZXJyc3RhdHVzID09IDMpCiAgICAgewotICAgICAgLyogSWYganVzdCB0cmllZCBhbmQgZmFpbGVk
IHRvIHJldXNlIGxvb2stYWhlYWQgdG9rZW4gYWZ0ZXIgYW4KKyAgICAgIC8qIElmIGp1c3QgdHJp
ZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIgYW4KIAkgZXJyb3Is
IGRpc2NhcmQgaXQuICAqLwogCiAgICAgICBpZiAoeXljaGFyIDw9IFlZRU9GKQpAQCAtNDcxOCwx
MiArNDc4NywxMiBAQCB5eWVycmxhYjoKICAgICAgIGVsc2UKIAl7CiAJICB5eWRlc3RydWN0ICgi
RXJyb3I6IGRpc2NhcmRpbmciLAotCQkgICAgICB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsK
KwkJICAgICAgeXl0b2tlbiwgJnl5bHZhbCwgJnl5bGxvYywgY29udGV4dCk7CiAJICB5eWNoYXIg
PSBZWUVNUFRZOwogCX0KICAgICB9CiAKLSAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVzZSBsb29r
LWFoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgorICAvKiBFbHNlIHdpbGwgdHJ5
IHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBzaGlmdGluZyB0aGUgZXJyb3IKICAgICAg
dG9rZW4uICAqLwogICBnb3RvIHl5ZXJybGFiMTsKIApAQCAtNDczOSw2ICs0ODA4LDcgQEAgeXll
cnJvcmxhYjoKICAgaWYgKC8qQ09OU1RDT05EKi8gMCkKICAgICAgZ290byB5eWVycm9ybGFiOwog
CisgIHl5ZXJyb3JfcmFuZ2VbMV0gPSB5eWxzcFsxLXl5bGVuXTsKICAgLyogRG8gbm90IHJlY2xh
aW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hpY2ggYWN0aW9uIHRyaWdnZXJlZAogICAgICB0
aGlzIFlZRVJST1IuICAqLwogICBZWVBPUFNUQUNLICh5eWxlbik7CkBAIC00NzU3LDcgKzQ4Mjcs
NyBAQCB5eWVycmxhYjE6CiAgIGZvciAoOzspCiAgICAgewogICAgICAgeXluID0geXlwYWN0W3l5
c3RhdGVdOwotICAgICAgaWYgKHl5biAhPSBZWVBBQ1RfTklORikKKyAgICAgIGlmICgheXlwYWN0
X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCiAJewogCSAgeXluICs9IFlZVEVSUk9SOwogCSAgaWYg
KDAgPD0geXluICYmIHl5biA8PSBZWUxBU1QgJiYgeXljaGVja1t5eW5dID09IFlZVEVSUk9SKQpA
QCAtNDc3MiwxOSArNDg0MiwyMyBAQCB5eWVycmxhYjE6CiAgICAgICBpZiAoeXlzc3AgPT0geXlz
cykKIAlZWUFCT1JUOwogCi0KKyAgICAgIHl5ZXJyb3JfcmFuZ2VbMV0gPSAqeXlsc3A7CiAgICAg
ICB5eWRlc3RydWN0ICgiRXJyb3I6IHBvcHBpbmciLAotCQkgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2
c3AsIGNvbnRleHQpOworCQkgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2c3AsIHl5bHNwLCBjb250ZXh0
KTsKICAgICAgIFlZUE9QU1RBQ0sgKDEpOwogICAgICAgeXlzdGF0ZSA9ICp5eXNzcDsKICAgICAg
IFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7CiAgICAgfQogCi0gIGlmICh5eW4gPT0gWVlG
SU5BTCkKLSAgICBZWUFDQ0VQVDsKLQorICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9C
RUdJTgogICAqKyt5eXZzcCA9IHl5bHZhbDsKKyAgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTEla
RURfRU5ECiAKKyAgeXllcnJvcl9yYW5nZVsyXSA9IHl5bGxvYzsKKyAgLyogVXNpbmcgWVlMTE9D
IGlzIHRlbXB0aW5nLCBidXQgd291bGQgY2hhbmdlIHRoZSBsb2NhdGlvbiBvZgorICAgICB0aGUg
bG9va2FoZWFkLiAgWVlMT0MgaXMgYXZhaWxhYmxlIHRob3VnaC4gICovCisgIFlZTExPQ19ERUZB
VUxUICh5eWxvYywgeXllcnJvcl9yYW5nZSwgMik7CisgICorK3l5bHNwID0geXlsb2M7CiAKICAg
LyogU2hpZnQgdGhlIGVycm9yIHRva2VuLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRp
bmciLCB5eXN0b3NbeXluXSwgeXl2c3AsIHl5bHNwKTsKQEAgLTQ4MDcsMjAgKzQ4ODEsMjUgQEAg
eXlhYm9ydGxhYjoKICAgeXlyZXN1bHQgPSAxOwogICBnb3RvIHl5cmV0dXJuOwogCi0jaWZuZGVm
IHl5b3ZlcmZsb3cKKyNpZiAhZGVmaW5lZCB5eW92ZXJmbG93IHx8IFlZRVJST1JfVkVSQk9TRQog
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCB5
eWV4aGF1c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJlLiAgfAogYC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogeXlleGhhdXN0
ZWRsYWI6Ci0gIHl5ZXJyb3IgKGNvbnRleHQsIFlZXygibWVtb3J5IGV4aGF1c3RlZCIpKTsKKyAg
eXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOwogICB5
eXJlc3VsdCA9IDI7CiAgIC8qIEZhbGwgdGhyb3VnaC4gICovCiAjZW5kaWYKIAogeXlyZXR1cm46
Ci0gIGlmICh5eWNoYXIgIT0gWVlFT0YgJiYgeXljaGFyICE9IFlZRU1QVFkpCi0gICAgIHl5ZGVz
dHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxvb2thaGVhZCIsCi0JCSB5eXRva2VuLCAmeXls
dmFsLCBjb250ZXh0KTsKKyAgaWYgKHl5Y2hhciAhPSBZWUVNUFRZKQorICAgIHsKKyAgICAgIC8q
IE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBsb29rYWhlYWQgdHJhbnNsYXRpb24uICBTZWUgY29t
bWVudHMgYXQKKyAgICAgICAgIHVzZXIgc2VtYW50aWMgYWN0aW9ucyBmb3Igd2h5IHRoaXMgaXMg
bmVjZXNzYXJ5LiAgKi8KKyAgICAgIHl5dG9rZW4gPSBZWVRSQU5TTEFURSAoeXljaGFyKTsKKyAg
ICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxvb2thaGVhZCIsCisgICAgICAg
ICAgICAgICAgICB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jLCBjb250ZXh0KTsKKyAgICB9CiAg
IC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0
cmlnZ2VyZWQKICAgICAgdGhpcyBZWUFCT1JUIG9yIFlZQUNDRVBULiAgKi8KICAgWVlQT1BTVEFD
SyAoeXlsZW4pOwpAQCAtNDgyOCw3ICs0OTA3LDcgQEAgeXlyZXR1cm46CiAgIHdoaWxlICh5eXNz
cCAhPSB5eXNzKQogICAgIHsKICAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBwb3BwaW5nIiwK
LQkJICB5eXN0b3NbKnl5c3NwXSwgeXl2c3AsIGNvbnRleHQpOworCQkgIHl5c3Rvc1sqeXlzc3Bd
LCB5eXZzcCwgeXlsc3AsIGNvbnRleHQpOwogICAgICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgfQog
I2lmbmRlZiB5eW92ZXJmbG93CkBAIC00ODQ3LDcgKzQ5MjYsMTEgQEAgeXlyZXR1cm46CiAKIAog
Cit2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBjaGFyKiByZWFzb24pIHsKKyAgICBjb250ZXh0LT5lcnJvcigqeXlsbG9jLCByZWFzb24s
ICIiKTsKKyAgICBjb250ZXh0LT5yZWNvdmVyKCk7Cit9CisKIGludCBnbHNsYW5nX3BhcnNlKFRQ
YXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICByZXR1cm4geXlwYXJzZShjb250ZXh0KTsKIH0K
LQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFi
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ds
c2xhbmdfdGFiLmgJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI0ICsxLDIx
IEBACi0vKiBBIEJpc29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24gMi4zLiAgKi8KKy8qIEEg
Qmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjcuICAqLwogCi0vKiBTa2VsZXRvbiBp
bnRlcmZhY2UgZm9yIEJpc29uJ3MgWWFjYy1saWtlIHBhcnNlcnMgaW4gQwotCi0gICBDb3B5cmln
aHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIw
MDUsIDIwMDYKLSAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0gICBUaGlzIHBy
b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v
ZGlmeQorLyogQmlzb24gaW50ZXJmYWNlIGZvciBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCisgICAK
KyAgICAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OS0xOTkwLCAyMDAwLTIwMTIgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3
YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eQotICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3Ig
KGF0IHlvdXIgb3B0aW9uKQotICAgYW55IGxhdGVyIHZlcnNpb24uCi0KKyAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisg
ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICAgCiAgICBUaGlzIHByb2dy
YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCiAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlCiAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotCisgICAKICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLiAgKi8KKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0
dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAogLyogQXMgYSBzcGVjaWFsIGV4Y2Vw
dGlvbiwgeW91IG1heSBjcmVhdGUgYSBsYXJnZXIgd29yayB0aGF0IGNvbnRhaW5zCiAgICBwYXJ0
IG9yIGFsbCBvZiB0aGUgQmlzb24gcGFyc2VyIHNrZWxldG9uIGFuZCBkaXN0cmlidXRlIHRoYXQg
d29yawpAQCAtMjksMTAgKzI2LDI4IEBACiAgICBzcGVjaWFsIGV4Y2VwdGlvbiwgd2hpY2ggd2ls
bCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcKICAgIEJpc29uIG91dHB1dCBm
aWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljCiAgICBMaWNl
bnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2VwdGlvbi4KLQorICAgCiAgICBUaGlzIHNwZWNp
YWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGlu
CiAgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4gICovCiAKKyNpZm5kZWYgWVlfWVlfR0xTTEFOR19U
QUJfSF9JTkNMVURFRAorIyBkZWZpbmUgWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRAorLyog
RW5hYmxpbmcgdHJhY2VzLiAgKi8KKyNpZm5kZWYgWVlERUJVRworIyBkZWZpbmUgWVlERUJVRyAw
CisjZW5kaWYKKyNpZiBZWURFQlVHCitleHRlcm4gaW50IHl5ZGVidWc7CisjZW5kaWYKKy8qICIl
Y29kZSByZXF1aXJlcyIgYmxvY2tzLiAgKi8KKworCisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxv
YworI2RlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKKworCisKKwogLyogVG9rZW5zLiAgKi8K
ICNpZm5kZWYgWVlUT0tFTlRZUEUKICMgZGVmaW5lIFlZVE9LRU5UWVBFCkBAIC04NiwxNTggKzEw
MSw2MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0gMzAyLAogICAgICBJTlRDT05TVEFOVCA9IDMw
MywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAotICAgICBGSUVMRF9TRUxFQ1RJT04gPSAzMDUs
Ci0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJR0hUX09QID0gMzA3LAotICAgICBJTkNfT1Ag
PSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAgICAgTEVfT1AgPSAzMTAsCi0gICAgIEdFX09Q
ID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAgICAgTkVfT1AgPSAzMTMsCi0gICAgIEFORF9P
UCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0gICAgIFhPUl9PUCA9IDMxNiwKLSAgICAgTVVM
X0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lHTiA9IDMxOCwKLSAgICAgQUREX0FTU0lHTiA9
IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwKLSAgICAgTEVGVF9BU1NJR04gPSAzMjEsCi0g
ICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAgQU5EX0FTU0lHTiA9IDMyMywKLSAgICAgWE9S
X0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdOID0gMzI1LAotICAgICBTVUJfQVNTSUdOID0g
MzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAotICAgICBSSUdIVF9QQVJFTiA9IDMyOCwKLSAg
ICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBSSUdIVF9CUkFDS0VUID0gMzMwLAotICAgICBM
RUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9CUkFDRSA9IDMzMiwKLSAgICAgRE9UID0gMzMz
LAotICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09MT04gPSAzMzUsCi0gICAgIEVRVUFMID0gMzM2
LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAgIEJBTkcgPSAzMzgsCi0gICAgIERBU0ggPSAz
MzksCi0gICAgIFRJTERFID0gMzQwLAotICAgICBQTFVTID0gMzQxLAotICAgICBTVEFSID0gMzQy
LAotICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVSQ0VOVCA9IDM0NCwKLSAgICAgTEVGVF9BTkdM
RSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAzNDYsCi0gICAgIFZFUlRJQ0FMX0JBUiA9IDM0
NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFNUEVSU0FORCA9IDM0OSwKLSAgICAgUVVFU1RJ
T04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwKKyAgICAgUklHSFRfT1AgPSAzMDYsCisgICAg
IElOQ19PUCA9IDMwNywKKyAgICAgREVDX09QID0gMzA4LAorICAgICBMRV9PUCA9IDMwOSwKKyAg
ICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0gMzExLAorICAgICBORV9PUCA9IDMxMiwKKyAg
ICAgQU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9IDMxNCwKKyAgICAgWE9SX09QID0gMzE1LAor
ICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBESVZfQVNTSUdOID0gMzE3LAorICAgICBBRERf
QVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdOID0gMzE5LAorICAgICBMRUZUX0FTU0lHTiA9
IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIxLAorICAgICBBTkRfQVNTSUdOID0gMzIyLAor
ICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBPUl9BU1NJR04gPSAzMjQsCisgICAgIFNVQl9B
U1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4gPSAzMjYsCisgICAgIFJJR0hUX1BBUkVOID0g
MzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgsCisgICAgIFJJR0hUX0JSQUNLRVQgPSAzMjks
CisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAgIFJJR0hUX0JSQUNFID0gMzMxLAorICAgICBE
T1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMzLAorICAgICBDT0xPTiA9IDMzNCwKKyAgICAgRVFV
QUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMzNiwKKyAgICAgQkFORyA9IDMzNywKKyAgICAg
REFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzksCisgICAgIFBMVVMgPSAzNDAsCisgICAgIFNU
QVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAorICAgICBQRVJDRU5UID0gMzQzLAorICAgICBM
RUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9BTkdMRSA9IDM0NSwKKyAgICAgVkVSVElDQUxf
QkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywKKyAgICAgQU1QRVJTQU5EID0gMzQ4LAorICAg
ICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRpZgotLyogVG9rZW5zLiAgKi8KLSNkZWZpbmUg
SU5WQVJJQU5UIDI1OAotI2RlZmluZSBISUdIX1BSRUNJU0lPTiAyNTkKLSNkZWZpbmUgTUVESVVN
X1BSRUNJU0lPTiAyNjAKLSNkZWZpbmUgTE9XX1BSRUNJU0lPTiAyNjEKLSNkZWZpbmUgUFJFQ0lT
SU9OIDI2MgotI2RlZmluZSBBVFRSSUJVVEUgMjYzCi0jZGVmaW5lIENPTlNUX1FVQUwgMjY0Ci0j
ZGVmaW5lIEJPT0xfVFlQRSAyNjUKLSNkZWZpbmUgRkxPQVRfVFlQRSAyNjYKLSNkZWZpbmUgSU5U
X1RZUEUgMjY3Ci0jZGVmaW5lIEJSRUFLIDI2OAotI2RlZmluZSBDT05USU5VRSAyNjkKLSNkZWZp
bmUgRE8gMjcwCi0jZGVmaW5lIEVMU0UgMjcxCi0jZGVmaW5lIEZPUiAyNzIKLSNkZWZpbmUgSUYg
MjczCi0jZGVmaW5lIERJU0NBUkQgMjc0Ci0jZGVmaW5lIFJFVFVSTiAyNzUKLSNkZWZpbmUgQlZF
QzIgMjc2Ci0jZGVmaW5lIEJWRUMzIDI3NwotI2RlZmluZSBCVkVDNCAyNzgKLSNkZWZpbmUgSVZF
QzIgMjc5Ci0jZGVmaW5lIElWRUMzIDI4MAotI2RlZmluZSBJVkVDNCAyODEKLSNkZWZpbmUgVkVD
MiAyODIKLSNkZWZpbmUgVkVDMyAyODMKLSNkZWZpbmUgVkVDNCAyODQKLSNkZWZpbmUgTUFUUklY
MiAyODUKLSNkZWZpbmUgTUFUUklYMyAyODYKLSNkZWZpbmUgTUFUUklYNCAyODcKLSNkZWZpbmUg
SU5fUVVBTCAyODgKLSNkZWZpbmUgT1VUX1FVQUwgMjg5Ci0jZGVmaW5lIElOT1VUX1FVQUwgMjkw
Ci0jZGVmaW5lIFVOSUZPUk0gMjkxCi0jZGVmaW5lIFZBUllJTkcgMjkyCi0jZGVmaW5lIFNUUlVD
VCAyOTMKLSNkZWZpbmUgVk9JRF9UWVBFIDI5NAotI2RlZmluZSBXSElMRSAyOTUKLSNkZWZpbmUg
U0FNUExFUjJEIDI5NgotI2RlZmluZSBTQU1QTEVSQ1VCRSAyOTcKLSNkZWZpbmUgU0FNUExFUl9F
WFRFUk5BTF9PRVMgMjk4Ci0jZGVmaW5lIFNBTVBMRVIyRFJFQ1QgMjk5Ci0jZGVmaW5lIElERU5U
SUZJRVIgMzAwCi0jZGVmaW5lIFRZUEVfTkFNRSAzMDEKLSNkZWZpbmUgRkxPQVRDT05TVEFOVCAz
MDIKLSNkZWZpbmUgSU5UQ09OU1RBTlQgMzAzCi0jZGVmaW5lIEJPT0xDT05TVEFOVCAzMDQKLSNk
ZWZpbmUgRklFTERfU0VMRUNUSU9OIDMwNQotI2RlZmluZSBMRUZUX09QIDMwNgotI2RlZmluZSBS
SUdIVF9PUCAzMDcKLSNkZWZpbmUgSU5DX09QIDMwOAotI2RlZmluZSBERUNfT1AgMzA5Ci0jZGVm
aW5lIExFX09QIDMxMAotI2RlZmluZSBHRV9PUCAzMTEKLSNkZWZpbmUgRVFfT1AgMzEyCi0jZGVm
aW5lIE5FX09QIDMxMwotI2RlZmluZSBBTkRfT1AgMzE0Ci0jZGVmaW5lIE9SX09QIDMxNQotI2Rl
ZmluZSBYT1JfT1AgMzE2Ci0jZGVmaW5lIE1VTF9BU1NJR04gMzE3Ci0jZGVmaW5lIERJVl9BU1NJ
R04gMzE4Ci0jZGVmaW5lIEFERF9BU1NJR04gMzE5Ci0jZGVmaW5lIE1PRF9BU1NJR04gMzIwCi0j
ZGVmaW5lIExFRlRfQVNTSUdOIDMyMQotI2RlZmluZSBSSUdIVF9BU1NJR04gMzIyCi0jZGVmaW5l
IEFORF9BU1NJR04gMzIzCi0jZGVmaW5lIFhPUl9BU1NJR04gMzI0Ci0jZGVmaW5lIE9SX0FTU0lH
TiAzMjUKLSNkZWZpbmUgU1VCX0FTU0lHTiAzMjYKLSNkZWZpbmUgTEVGVF9QQVJFTiAzMjcKLSNk
ZWZpbmUgUklHSFRfUEFSRU4gMzI4Ci0jZGVmaW5lIExFRlRfQlJBQ0tFVCAzMjkKLSNkZWZpbmUg
UklHSFRfQlJBQ0tFVCAzMzAKLSNkZWZpbmUgTEVGVF9CUkFDRSAzMzEKLSNkZWZpbmUgUklHSFRf
QlJBQ0UgMzMyCi0jZGVmaW5lIERPVCAzMzMKLSNkZWZpbmUgQ09NTUEgMzM0Ci0jZGVmaW5lIENP
TE9OIDMzNQotI2RlZmluZSBFUVVBTCAzMzYKLSNkZWZpbmUgU0VNSUNPTE9OIDMzNwotI2RlZmlu
ZSBCQU5HIDMzOAotI2RlZmluZSBEQVNIIDMzOQotI2RlZmluZSBUSUxERSAzNDAKLSNkZWZpbmUg
UExVUyAzNDEKLSNkZWZpbmUgU1RBUiAzNDIKLSNkZWZpbmUgU0xBU0ggMzQzCi0jZGVmaW5lIFBF
UkNFTlQgMzQ0Ci0jZGVmaW5lIExFRlRfQU5HTEUgMzQ1Ci0jZGVmaW5lIFJJR0hUX0FOR0xFIDM0
NgotI2RlZmluZSBWRVJUSUNBTF9CQVIgMzQ3Ci0jZGVmaW5lIENBUkVUIDM0OAotI2RlZmluZSBB
TVBFUlNBTkQgMzQ5Ci0jZGVmaW5lIFFVRVNUSU9OIDM1MAotCi0KIAogCiAjaWYgISBkZWZpbmVk
IFlZU1RZUEUgJiYgISBkZWZpbmVkIFlZU1RZUEVfSVNfREVDTEFSRUQKIHR5cGVkZWYgdW5pb24g
WVlTVFlQRQotCiB7CisKKwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsK
ICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgVFN0cmluZyAqc3RyaW5nOwogICAgICAgICAg
ICAgZmxvYXQgZjsKQEAgLTI0Nyw3ICsxNjUsNiBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAg
ICAgICAgVFN5bWJvbCogc3ltYm9sOwogICAgIH0gbGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAg
IFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgVE9wZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7
CiAgICAgICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKQEAgLTI2MSwxOCArMTc4LDQ1
IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZp
ZXI7CiAgICAgICAgICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFt
ZXRlciBwYXJhbTsKLSAgICAgICAgICAgIFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAg
IFRUeXBlTGlzdCogdHlwZUxpc3Q7CisgICAgICAgICAgICBURmllbGQqIGZpZWxkOworICAgICAg
ICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwot
fQotLyogTGluZSAxNTI5IG9mIHlhY2MuYy4gICovCiAKLQlZWVNUWVBFOworCisKK30gWVlTVFlQ
RTsKKyMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCiAjIGRlZmluZSB5eXN0eXBlIFlZU1RZ
UEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCiAjIGRlZmluZSBZWVNUWVBF
X0lTX0RFQ0xBUkVEIDEKLSMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCiAjZW5kaWYKIAor
I2lmICEgZGVmaW5lZCBZWUxUWVBFICYmICEgZGVmaW5lZCBZWUxUWVBFX0lTX0RFQ0xBUkVECit0
eXBlZGVmIHN0cnVjdCBZWUxUWVBFCit7CisgIGludCBmaXJzdF9saW5lOworICBpbnQgZmlyc3Rf
Y29sdW1uOworICBpbnQgbGFzdF9saW5lOworICBpbnQgbGFzdF9jb2x1bW47Cit9IFlZTFRZUEU7
CisjIGRlZmluZSB5eWx0eXBlIFlZTFRZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRy
YXduICovCisjIGRlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKKyMgZGVmaW5lIFlZTFRZUEVf
SVNfVFJJVklBTCAxCisjZW5kaWYKIAogCisjaWZkZWYgWVlQQVJTRV9QQVJBTQorI2lmIGRlZmlu
ZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cworaW50IHl5cGFyc2UgKHZvaWQgKllZ
UEFSU0VfUEFSQU0pOworI2Vsc2UKK2ludCB5eXBhcnNlICgpOworI2VuZGlmCisjZWxzZSAvKiAh
IFlZUEFSU0VfUEFSQU0gKi8KKyNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1
c3BsdXMKK2ludCB5eXBhcnNlIChUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKKyNlbHNlCitpbnQg
eXlwYXJzZSAoKTsKKyNlbmRpZgorI2VuZGlmIC8qICEgWVlQQVJTRV9QQVJBTSAqLworCisjZW5k
aWYgLyogIVlZX1lZX0dMU0xBTkdfVEFCX0hfSU5DTFVERUQgICovCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtT3V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtT3V0LmNwcAkocmV2aXNp
b24gMTUyMzIzKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVy
bU91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw3ICsxODksOSBAQCBib29sIFRPdXRwdXRU
cmF2ZXJzZXI6OnZpc2l0VW5hcnkoVmlzaXQKICAgICAgICAgY2FzZSBFT3BBbnk6ICAgICAgICAg
ICAgb3V0IDw8ICJhbnkiOyAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVP
cEFsbDogICAgICAgICAgICBvdXQgPDwgImFsbCI7ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgZGVmYXVsdDogb3V0Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiQmFkIHVuYXJ5IG9w
Iik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBvdXQucHJlZml4KEVQcmVmaXhFcnJv
cik7CisgICAgICAgICAgICBvdXQgPDwgIkJhZCB1bmFyeSBvcCI7CiAgICAgfQogCiAgICAgb3V0
IDw8ICIgKCIgPDwgbm9kZS0+Z2V0Q29tcGxldGVTdHJpbmcoKSA8PCAiKSI7CkBAIC0yMDQsNyAr
MjA2LDggQEAgYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaQogICAgIFRJ
bmZvU2lua0Jhc2UmIG91dCA9IHNpbms7CiAKICAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BO
dWxsKSB7Ci0gICAgICAgIG91dC5tZXNzYWdlKEVQcmVmaXhFcnJvciwgIm5vZGUgaXMgc3RpbGwg
RU9wTnVsbCEiKTsKKyAgICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICBv
dXQgPDwgIm5vZGUgaXMgc3RpbGwgRU9wTnVsbCEiOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKQEAgLTI2Myw3ICsyNjYsOSBAQCBib29sIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0QWdn
cmVnYXRlKFZpCiAKICAgICAgICAgY2FzZSBFT3BEZWNsYXJhdGlvbjogICBvdXQgPDwgIkRlY2xh
cmF0aW9uOiAiOyAgIGJyZWFrOwogCi0gICAgICAgIGRlZmF1bHQ6IG91dC5tZXNzYWdlKEVQcmVm
aXhFcnJvciwgIkJhZCBhZ2dyZWdhdGlvbiBvcCIpOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAgb3V0IDw8ICJCYWQg
YWdncmVnYXRpb24gb3AiOwogICAgIH0KIAogICAgIGlmIChub2RlLT5nZXRPcCgpICE9IEVPcFNl
cXVlbmNlICYmIG5vZGUtPmdldE9wKCkgIT0gRU9wUGFyYW1ldGVycykKQEAgLTMxMSw5ICszMTYs
OSBAQCB2b2lkIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvCiB7CiAgICAgVElu
Zm9TaW5rQmFzZSYgb3V0ID0gc2luazsKIAotICAgIGludCBzaXplID0gbm9kZS0+Z2V0VHlwZSgp
LmdldE9iamVjdFNpemUoKTsKKyAgICBzaXplX3Qgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRP
YmplY3RTaXplKCk7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgIE91dHB1dFRyZWVU
ZXh0KG91dCwgbm9kZSwgZGVwdGgpOwogICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldFVuaW9uQXJy
YXlQb2ludGVyKClbaV0uZ2V0VHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEVidEJvb2w6CkBA
IC0zMzQsNyArMzM5LDcgQEAgdm9pZCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5p
bwogICAgICAgICAgICAgICAgIG91dCA8PCAiIChjb25zdCBpbnQpXG4iOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBvdXQubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVua25vd24gY29uc3RhbnQiLCBub2RlLT5nZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgIG91dC5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCBub2RlLT5nZXRMaW5lKCksICJVbmtub3duIGNvbnN0YW50Iik7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCShyZXZpc2lvbiAxNTIzMjMpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENv
cHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgogLy8KQEAgLTE4LDYgKzE4LDcgQEAKIAogI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFu
Zy5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgImNvbXBpbGVyL0NvbW1vbi5o
IgogI2luY2x1ZGUgImNvbXBpbGVyL1R5cGVzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvQ29uc3Rh
bnRVbmlvbi5oIgpAQCAtMjA2LDEwICsyMDcsMTYgQEAgY2xhc3MgVEludGVybU5vZGUgewogcHVi
bGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikK
IAotICAgIFRJbnRlcm1Ob2RlKCkgOiBsaW5lKDApIHt9CisgICAgVEludGVybU5vZGUoKSB7Cisg
ICAgICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBUU291cmNlTG9jIGNvbnN0cnVjdG9yCisgICAg
ICAgIC8vIGFmdGVyIGdldHRpbmcgcmlkIG9mIFRQdWJsaWNUeXBlLgorICAgICAgICBsaW5lLmZp
cnN0X2ZpbGUgPSBsaW5lLmxhc3RfZmlsZSA9IDA7CisgICAgICAgIGxpbmUuZmlyc3RfbGluZSA9
IGxpbmUubGFzdF9saW5lID0gMDsKKyAgICB9CisgICAgdmlydHVhbCB+VEludGVybU5vZGUoKSB7
IH0KIAotICAgIFRTb3VyY2VMb2MgZ2V0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmU7IH0KLSAg
ICB2b2lkIHNldExpbmUoVFNvdXJjZUxvYyBsKSB7IGxpbmUgPSBsOyB9CisgICAgY29uc3QgVFNv
dXJjZUxvYyYgZ2V0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmU7IH0KKyAgICB2b2lkIHNldExp
bmUoY29uc3QgVFNvdXJjZUxvYyYgbCkgeyBsaW5lID0gbDsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqKSA9IDA7CiAgICAgdmlydHVhbCBUSW50ZXJtVHlw
ZWQqIGdldEFzVHlwZWQoKSB7IHJldHVybiAwOyB9CkBAIC0yMjAsNyArMjI3LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgVEludGVybVNlbGVjdGlvbiogZ2V0QXNTZWxlY3Rpb25Ob2RlKCkgeyBy
ZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgVEludGVybVN5bWJvbCogZ2V0QXNTeW1ib2xOb2RlKCkg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgVEludGVybUxvb3AqIGdldEFzTG9vcE5vZGUoKSB7
IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB+VEludGVybU5vZGUoKSB7IH0KIAogcHJvdGVjdGVk
OgogICAgIFRTb3VyY2VMb2MgbGluZTsKQEAgLTM1OCw3ICszNjQsMTAgQEAgcHVibGljOgogICAg
IFRJbnRlcm1Db25zdGFudFVuaW9uKENvbnN0YW50VW5pb24gKnVuaW9uUG9pbnRlciwgY29uc3Qg
VFR5cGUmIHQpIDogVEludGVybVR5cGVkKHQpLCB1bmlvbkFycmF5UG9pbnRlcih1bmlvblBvaW50
ZXIpIHsgfQogCiAgICAgQ29uc3RhbnRVbmlvbiogZ2V0VW5pb25BcnJheVBvaW50ZXIoKSBjb25z
dCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRlcjsgfQotICAgIHZvaWQgc2V0VW5pb25BcnJheVBv
aW50ZXIoQ29uc3RhbnRVbmlvbiAqYykgeyB1bmlvbkFycmF5UG9pbnRlciA9IGM7IH0KKyAgICAK
KyAgICBpbnQgZ2V0SUNvbnN0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBv
aW50ZXIgPyB1bmlvbkFycmF5UG9pbnRlcltpbmRleF0uZ2V0SUNvbnN0KCkgOiAwOyB9CisgICAg
ZmxvYXQgZ2V0RkNvbnN0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50
ZXIgPyB1bmlvbkFycmF5UG9pbnRlcltpbmRleF0uZ2V0RkNvbnN0KCkgOiAwLjBmOyB9CisgICAg
Ym9vbCBnZXRCQ29uc3QoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRl
ciA/IHVuaW9uQXJyYXlQb2ludGVyW2luZGV4XS5nZXRCQ29uc3QoKSA6IGZhbHNlOyB9CiAKICAg
ICB2aXJ0dWFsIFRJbnRlcm1Db25zdGFudFVuaW9uKiBnZXRBc0NvbnN0YW50VW5pb24oKSAgeyBy
ZXR1cm4gdGhpczsgfQogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2Vy
Kik7CkBAIC00NDcsNyArNDU2LDcgQEAgdHlwZWRlZiBUVmVjdG9yPGludD4gVFF1YWxpZmllckxp
c3Q7CiAvLwogY2xhc3MgVEludGVybUFnZ3JlZ2F0ZSA6IHB1YmxpYyBUSW50ZXJtT3BlcmF0b3Ig
ewogcHVibGljOgotICAgIFRJbnRlcm1BZ2dyZWdhdGUoKSA6IFRJbnRlcm1PcGVyYXRvcihFT3BO
dWxsKSwgdXNlckRlZmluZWQoZmFsc2UpLCBlbmRMaW5lKDApLCB1c2VFbXVsYXRlZEZ1bmN0aW9u
KGZhbHNlKSB7IH0KKyAgICBUSW50ZXJtQWdncmVnYXRlKCkgOiBUSW50ZXJtT3BlcmF0b3IoRU9w
TnVsbCksIHVzZXJEZWZpbmVkKGZhbHNlKSwgdXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSkgeyB9
CiAgICAgVEludGVybUFnZ3JlZ2F0ZShUT3BlcmF0b3IgbykgOiBUSW50ZXJtT3BlcmF0b3Iobyks
IHVzZUVtdWxhdGVkRnVuY3Rpb24oZmFsc2UpIHsgfQogICAgIH5USW50ZXJtQWdncmVnYXRlKCkg
eyB9CiAKQEAgLTQ2Nyw5ICs0NzYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWJ1Zyhib29s
IGQpIHsgZGVidWcgPSBkOyB9CiAgICAgYm9vbCBnZXREZWJ1ZygpIHsgcmV0dXJuIGRlYnVnOyB9
CiAKLSAgICB2b2lkIHNldEVuZExpbmUoVFNvdXJjZUxvYyBsaW5lKSB7IGVuZExpbmUgPSBsaW5l
OyB9Ci0gICAgVFNvdXJjZUxvYyBnZXRFbmRMaW5lKCkgY29uc3QgeyByZXR1cm4gZW5kTGluZTsg
fQotCiAgICAgdm9pZCBzZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkgeyB1c2VFbXVsYXRlZEZ1bmN0
aW9uID0gdHJ1ZTsgfQogICAgIGJvb2wgZ2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpIHsgcmV0dXJu
IHVzZUVtdWxhdGVkRnVuY3Rpb247IH0KIApAQCAtNDgyLDcgKzQ4OCw2IEBAIHByb3RlY3RlZDoK
IAogICAgIGJvb2wgb3B0aW1pemU7CiAgICAgYm9vbCBkZWJ1ZzsKLSAgICBUU291cmNlTG9jIGVu
ZExpbmU7CiAKICAgICAvLyBJZiBzZXQgdG8gdHJ1ZSwgcmVwbGFjZSB0aGUgYnVpbHQtaW4gZnVu
Y3Rpb24gY2FsbCB3aXRoIGFuIGVtdWxhdGVkIG9uZQogICAgIC8vIHRvIHdvcmsgYXJvdW5kIGRy
aXZlciBidWdzLgpAQCAtNTM4LDcgKzU0Myw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGluVmlz
aXQoaW5WaXNpdCksCiAgICAgICAgICAgICBwb3N0VmlzaXQocG9zdFZpc2l0KSwKICAgICAgICAg
ICAgIHJpZ2h0VG9MZWZ0KHJpZ2h0VG9MZWZ0KSwKLSAgICAgICAgICAgIGRlcHRoKDApIHt9Cisg
ICAgICAgICAgICBkZXB0aCgwKSwKKyAgICAgICAgICAgIG1heERlcHRoKDApIHt9CiAgICAgdmly
dHVhbCB+VEludGVybVRyYXZlcnNlcigpIHt9OwogCiAgICAgdmlydHVhbCB2b2lkIHZpc2l0U3lt
Ym9sKFRJbnRlcm1TeW1ib2wqKSB7fQpAQCAtNTUwLDcgKzU1Niw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCopIHtyZXR1cm4g
dHJ1ZTt9CiAgICAgdmlydHVhbCBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJt
QnJhbmNoKikge3JldHVybiB0cnVlO30KIAotICAgIHZvaWQgaW5jcmVtZW50RGVwdGgoKSB7ZGVw
dGgrKzt9CisgICAgaW50IGdldE1heERlcHRoKCkgY29uc3Qge3JldHVybiBtYXhEZXB0aDt9Cisg
ICAgdm9pZCBpbmNyZW1lbnREZXB0aCgpIHtkZXB0aCsrOyBtYXhEZXB0aCA9IHN0ZDo6bWF4KG1h
eERlcHRoLCBkZXB0aCk7IH0KICAgICB2b2lkIGRlY3JlbWVudERlcHRoKCkge2RlcHRoLS07fQog
CiAgICAgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBuYW1lIGlmIGhhc2ggZnVuY3Rpb24gcG9pbnRl
ciBpcyBOVUxMOwpAQCAtNTY0LDYgKzU3MSw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAg
IGludCBkZXB0aDsKKyAgICBpbnQgbWF4RGVwdGg7CiB9OwogCiAjZW5kaWYgLy8gX19JTlRFUk1F
RElBVEVfSApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2xvY2Fs
aW50ZXJtZWRpYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmgJKHJldmlzaW9uIDE1MjMyMykKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSwzNCArMjUsMzMgQEAgcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9S
X05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikKIAogICAgIFRJbnRlcm1lZGlhdGUoVElu
Zm9TaW5rJiBpKSA6IGluZm9TaW5rKGkpIHsgfQotICAgIFRJbnRlcm1TeW1ib2wqIGFkZFN5bWJv
bChpbnQgSWQsIGNvbnN0IFRTdHJpbmcmLCBjb25zdCBUVHlwZSYsIFRTb3VyY2VMb2MpOworICAg
IFRJbnRlcm1TeW1ib2wqIGFkZFN5bWJvbChpbnQgSWQsIGNvbnN0IFRTdHJpbmcmLCBjb25zdCBU
VHlwZSYsIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnZlcnNp
b24oVE9wZXJhdG9yLCBjb25zdCBUVHlwZSYsIFRJbnRlcm1UeXBlZCopOwotICAgIFRJbnRlcm1U
eXBlZCogYWRkQmluYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVElu
dGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYywgVFN5bWJvbFRhYmxlJik7Ci0gICAgVEludGVy
bVR5cGVkKiBhZGRBc3NpZ24oVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRl
cm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkSW5kZXgo
VE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIFRT
b3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwg
VEludGVybU5vZGUqIGNoaWxkLCBUU291cmNlTG9jLCBUU3ltYm9sVGFibGUmKTsKLSAgICBUSW50
ZXJtQWdncmVnYXRlKiBncm93QWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBsZWZ0LCBUSW50ZXJtTm9k
ZSogcmlnaHQsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIG1ha2VBZ2dyZWdh
dGUoVEludGVybU5vZGUqIG5vZGUsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUq
IHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKFRJbnRlcm1Ob2RlKiwgVE9wZXJhdG9yLCBUU291cmNlTG9j
KTsKLSAgICBUSW50ZXJtTm9kZSogIGFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJ
bnRlcm1Ob2RlUGFpciBjb2RlLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZFNl
bGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50
ZXJtVHlwZWQqIGZhbHNlQmxvY2ssIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRk
Q29tbWEoVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9j
KTsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogYWRkQ29uc3RhbnRVbmlvbihDb25zdGFudFVu
aW9uKiwgY29uc3QgVFR5cGUmLCBUU291cmNlTG9jKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZEJp
bmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCog
cmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmLCBUU3ltYm9sVGFibGUmKTsKKyAgICBUSW50ZXJtVHlw
ZWQqIGFkZEFzc2lnbihUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5
cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkSW5k
ZXgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgs
IGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZFVuYXJ5TWF0aChUT3Bl
cmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBjaGlsZCwgY29uc3QgVFNvdXJjZUxvYyYsIFRTeW1ib2xU
YWJsZSYpOworICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGdyb3dBZ2dyZWdhdGUoVEludGVybU5vZGUq
IGxlZnQsIFRJbnRlcm1Ob2RlKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRl
cm1BZ2dyZWdhdGUqIG1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3Vy
Y2VMb2MmKTsKKyAgICBUSW50ZXJtQWdncmVnYXRlKiBzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50
ZXJtTm9kZSosIFRPcGVyYXRvciwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1Ob2Rl
KiAgYWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQYWlyIGNvZGUs
IGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZFNlbGVjdGlvbihUSW50
ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZh
bHNlQmxvY2ssIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbW1h
KFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxv
YyYpOworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiBhZGRDb25zdGFudFVuaW9uKENvbnN0YW50
VW5pb24qLCBjb25zdCBUVHlwZSYsIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAgICBUSW50ZXJtVHlw
ZWQqIHByb21vdGVDb25zdGFudFVuaW9uKFRCYXNpY1R5cGUsIFRJbnRlcm1Db25zdGFudFVuaW9u
KikgOwotICAgIGJvb2wgcGFyc2VDb25zdFRyZWUoVFNvdXJjZUxvYywgVEludGVybU5vZGUqLCBD
b25zdGFudFVuaW9uKiwgVE9wZXJhdG9yLCBUU3ltYm9sVGFibGUmLCBUVHlwZSwgYm9vbCBzaW5n
bGVDb25zdGFudFBhcmFtID0gZmFsc2UpOyAgICAgICAgCi0gICAgVEludGVybU5vZGUqIGFkZExv
b3AoVExvb3BUeXBlLCBUSW50ZXJtTm9kZSosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1UeXBlZCos
IFRJbnRlcm1Ob2RlKiwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNo
KFRPcGVyYXRvciwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRP
cGVyYXRvciwgVEludGVybVR5cGVkKiwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBh
ZGRTd2l6emxlKFRWZWN0b3JGaWVsZHMmLCBUU291cmNlTG9jKTsKKyAgICBib29sIHBhcnNlQ29u
c3RUcmVlKGNvbnN0IFRTb3VyY2VMb2MmLCBUSW50ZXJtTm9kZSosIENvbnN0YW50VW5pb24qLCBU
T3BlcmF0b3IsIFRTeW1ib2xUYWJsZSYsIFRUeXBlLCBib29sIHNpbmdsZUNvbnN0YW50UGFyYW0g
PSBmYWxzZSk7ICAgICAgICAKKyAgICBUSW50ZXJtTm9kZSogYWRkTG9vcChUTG9vcFR5cGUsIFRJ
bnRlcm1Ob2RlKiwgVEludGVybVR5cGVkKiwgVEludGVybVR5cGVkKiwgVEludGVybU5vZGUqLCBj
b25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRv
ciwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3Bl
cmF0b3IsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlw
ZWQqIGFkZFN3aXp6bGUoVFZlY3RvckZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAgICBi
b29sIHBvc3RQcm9jZXNzKFRJbnRlcm1Ob2RlKik7Ci0Jdm9pZCByZW1vdmUoVEludGVybU5vZGUq
KTsKKyAgICB2b2lkIHJlbW92ZShUSW50ZXJtTm9kZSopOwogICAgIHZvaWQgb3V0cHV0VHJlZShU
SW50ZXJtTm9kZSopOwotICAgIAotcHJvdGVjdGVkOgotICAgIFRJbmZvU2luayYgaW5mb1Npbms7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBvcGVyYXRvcj0oVEludGVybWVkaWF0ZSYpOyAvLyBwcmV2
ZW50IGFzc2lnbm1lbnRzCisKKyAgICBUSW5mb1NpbmsmIGluZm9TaW5rOwogfTsKIAogI2VuZGlm
IC8vIF9MT0NBTF9JTlRFUk1FRElBVEVfSU5DTFVERURfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwCShyZXZpc2lvbiAx
NTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcGFyc2VDb25z
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE2ICszOCwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ym9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wKik7CiAgICAgYm9vbCB2aXNp
dEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCopOwogCi0gICAgaW50IGluZGV4Owor
ICAgIHNpemVfdCBpbmRleDsKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5OwogICAgIFRU
eXBlIHR5cGU7CiAgICAgVE9wZXJhdG9yIGNvbnN0cnVjdG9yVHlwZTsKICAgICBib29sIHNpbmds
ZUNvbnN0YW50UGFyYW07CiAgICAgVEluZm9TaW5rJiBpbmZvU2luazsKICAgICBUU3ltYm9sVGFi
bGUmIHN5bWJvbFRhYmxlOwotICAgIGludCBzaXplOyAvLyBzaXplIG9mIHRoZSBjb25zdHJ1Y3Rv
ciAoIDQgZm9yIHZlYzQpCisgICAgc2l6ZV90IHNpemU7IC8vIHNpemUgb2YgdGhlIGNvbnN0cnVj
dG9yICggNCBmb3IgdmVjNCkKICAgICBib29sIGlzTWF0cml4OwotICAgIGludCBtYXRyaXhTaXpl
OyAvLyBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeCAobm9taW5hbCBzaXplIGFuZCBub3QgdGhlIGlu
c3RhbmNlIHNpemUpCisgICAgc2l6ZV90IG1hdHJpeFNpemU7IC8vIGRpbWVuc2lvbiBvZiB0aGUg
bWF0cml4IChub21pbmFsIHNpemUgYW5kIG5vdCB0aGUgaW5zdGFuY2Ugc2l6ZSkKIH07CiAKIC8v
CkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKIAogdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZp
c2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqIG5vZGUpCiB7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiU3ltYm9sIE5vZGUgZm91bmQgaW4gY29uc3RhbnQg
Y29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5lKCkpOworICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiU3ltYm9sIE5vZGUgZm91
bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiKTsKICAgICByZXR1cm47CiAKIH0KQEAgLTc0LDEy
ICs3NCwxMiBAQCBib29sIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQKICAgICAg
ICAgVFN0cmluZyBidWY7CiAgICAgICAgIGJ1Zi5hcHBlbmQoIidjb25zdHJ1Y3RvcicgOiBhc3Np
Z25pbmcgbm9uLWNvbnN0YW50IHRvICIpOwogICAgICAgICBidWYuYXBwZW5kKHR5cGUuZ2V0Q29t
cGxldGVTdHJpbmcoKSk7Ci0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJy
b3IsIGJ1Zi5jX3N0cigpLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCBub2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigpKTsKICAg
ICAgICAgZXJyb3IgPSB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7ICAKICAgICB9CiAKLSAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJpbmFyeSBOb2Rl
IGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgp
LCAiQmluYXJ5IE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiKTsKICAgICAKICAg
ICByZXR1cm4gZmFsc2U7CiB9CkBAIC04OSw3ICs4OSw3IEBAIGJvb2wgVENvbnN0VHJhdmVyc2Vy
Ojp2aXNpdFVuYXJ5KFZpc2l0IHYKICAgICBUU3RyaW5nIGJ1ZjsKICAgICBidWYuYXBwZW5kKCIn
Y29uc3RydWN0b3InIDogYXNzaWduaW5nIG5vbi1jb25zdGFudCB0byAiKTsKICAgICBidWYuYXBw
ZW5kKHR5cGUuZ2V0Q29tcGxldGVTdHJpbmcoKSk7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhFcnJvciwgYnVmLmNfc3RyKCksIG5vZGUtPmdldExpbmUoKSk7CisgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCBidWYuY19zdHIo
KSk7CiAgICAgZXJyb3IgPSB0cnVlOwogICAgIHJldHVybiBmYWxzZTsgIAogfQpAQCAtMTAwLDcg
KzEwMCw3IEBAIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKICAgICAg
ICAgVFN0cmluZyBidWY7CiAgICAgICAgIGJ1Zi5hcHBlbmQoIidjb25zdHJ1Y3RvcicgOiBhc3Np
Z25pbmcgbm9uLWNvbnN0YW50IHRvICIpOwogICAgICAgICBidWYuYXBwZW5kKHR5cGUuZ2V0Q29t
cGxldGVTdHJpbmcoKSk7Ci0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJy
b3IsIGJ1Zi5jX3N0cigpLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCBub2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigpKTsKICAg
ICAgICAgZXJyb3IgPSB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7ICAKICAgICB9CkBAIC0x
NDQsMjQgKzE0NCwzMSBAQCBib29sIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlz
CiAKIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVElu
dGVybVNlbGVjdGlvbiogbm9kZSkKIHsKLSAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsICJTZWxlY3Rpb24gTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1
Y3RvciIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJTZWxlY3Rpb24gTm9kZSBmb3VuZCBp
biBjb25zdGFudCBjb25zdHJ1Y3RvciIpOwogICAgIGVycm9yID0gdHJ1ZTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIHZvaWQgVENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24oVElu
dGVybUNvbnN0YW50VW5pb24qIG5vZGUpCiB7CisgICAgaWYgKCFub2RlLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpKQorICAgIHsKKyAgICAgICAgLy8gVGhlIGNvbnN0YW50IHdhcyBub3QgaW5pdGlh
bGl6ZWQsIHRoaXMgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGxvZ2dlZAorICAgICAgICBhc3Nl
cnQoaW5mb1NpbmsuaW5mby5zaXplKCkgIT0gMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICBDb25zdGFudFVuaW9uKiBsZWZ0VW5pb25BcnJheSA9IHVuaW9uQXJyYXk7Ci0gICAgaW50
IGluc3RhbmNlU2l6ZSA9IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpOworICAgIHNpemVfdCBpbnN0YW5j
ZVNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKIAogICAgIGlmIChpbmRleCA+PSBpbnN0YW5j
ZVNpemUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghc2luZ2xlQ29uc3RhbnRQYXJhbSkg
ewotICAgICAgICBpbnQgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7Cisg
ICAgICAgIHNpemVfdCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKICAg
ICAKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqcmlnaHRVbmlvbkFycmF5ID0gbm9kZS0+Z2V0VW5p
b25BcnJheVBvaW50ZXIoKTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgc2l6ZTsgaSsrKSB7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAg
ICBpZiAoaW5kZXggPj0gaW5zdGFuY2VTaXplKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2luZGV4XSA9IHJpZ2h0VW5pb25BcnJheVtpXTsKQEAg
LTE2OSwxMSArMTc2LDExIEBAIHZvaWQgVENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5p
b24KICAgICAgICAgICAgIChpbmRleCkrKzsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGludCB0b3RhbFNpemUgPSBpbmRleCArIHNpemU7CisgICAgICAgIHNpemVfdCB0b3RhbFNp
emUgPSBpbmRleCArIHNpemU7CiAgICAgICAgIENvbnN0YW50VW5pb24gKnJpZ2h0VW5pb25BcnJh
eSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAgICAgICAgIGlmICghaXNNYXRyaXgp
IHsKLSAgICAgICAgICAgIGludCBjb3VudCA9IDA7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0g
aW5kZXg7IGkgPCB0b3RhbFNpemU7IGkrKykgeworICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0g
MDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBpbmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsr
KSB7CiAgICAgICAgICAgICAgICAgaWYgKGkgPj0gaW5zdGFuY2VTaXplKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKQEAgLTE4NSw5ICsxOTIsOSBAQCB2b2lkIFRDb25zdFRyYXZlcnNl
cjo6dmlzaXRDb25zdGFudFVuaW9uCiAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7ICAvLyBmb3IgbWF0cml4IGNvbnN0cnVjdG9ycwot
ICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKLSAgICAgICAgICAgIGludCBlbGVtZW50ID0gaW5k
ZXg7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkrKykg
eworICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKKyAgICAgICAgICAgIHNpemVfdCBlbGVt
ZW50ID0gaW5kZXg7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gaW5kZXg7IGkgPCB0b3Rh
bFNpemU7IGkrKykgewogICAgICAgICAgICAgICAgIGlmIChpID49IGluc3RhbmNlU2l6ZSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIGlmIChlbGVtZW50IC0g
aSA9PSAwIHx8IChpIC0gZWxlbWVudCkgJSAobWF0cml4U2l6ZSArIDEpID09IDAgKQpAQCAtMjA2
LDE0ICsyMTMsMTQgQEAgdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbgog
CiBib29sIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9v
cCogbm9kZSkKIHsKLSAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsICJMb29wIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRM
aW5lKCkpOworICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwg
bm9kZS0+Z2V0TGluZSgpLCAiTG9vcCBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9y
Iik7CiAgICAgZXJyb3IgPSB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBUQ29u
c3RUcmF2ZXJzZXI6OnZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKiBub2Rl
KQogewotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJy
YW5jaCBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgp
KTsKKyAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUt
PmdldExpbmUoKSwgIkJyYW5jaCBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7
CiAgICAgZXJyb3IgPSB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTIyMyw3ICsyMzAs
NyBAQCBib29sIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRCcmFuY2goVmlzaXQKIC8vIEluZGl2aWR1
YWwgZnVuY3Rpb25zIGNhbiBiZSBpbml0aWFsaXplZCB0byAwIHRvIHNraXAgcHJvY2Vzc2luZyBv
ZiB0aGF0CiAvLyB0eXBlIG9mIG5vZGUuICBJdCdzIGNoaWxkcmVuIHdpbGwgc3RpbGwgYmUgcHJv
Y2Vzc2VkLgogLy8KLWJvb2wgVEludGVybWVkaWF0ZTo6cGFyc2VDb25zdFRyZWUoVFNvdXJjZUxv
YyBsaW5lLCBUSW50ZXJtTm9kZSogcm9vdCwgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSwgVE9w
ZXJhdG9yIGNvbnN0cnVjdG9yVHlwZSwgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSwgVFR5cGUg
dCwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFtKQorYm9vbCBUSW50ZXJtZWRpYXRlOjpwYXJzZUNv
bnN0VHJlZShjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogcm9vdCwgQ29uc3Rh
bnRVbmlvbiogdW5pb25BcnJheSwgVE9wZXJhdG9yIGNvbnN0cnVjdG9yVHlwZSwgVFN5bWJvbFRh
YmxlJiBzeW1ib2xUYWJsZSwgVFR5cGUgdCwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFtKQogewog
ICAgIGlmIChyb290ID09IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcAkocmV2aXNpb24gMTUyMzIzKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNz
aW9uUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyNCArMSwyMiBAQAotLyogQSBCaXNv
biBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuMy4gICovCisvKiBBIEJpc29uIHBhcnNlciwg
bWFkZSBieSBHTlUgQmlzb24gMi40LjIuICAqLwogCiAvKiBTa2VsZXRvbiBpbXBsZW1lbnRhdGlv
biBmb3IgQmlzb24ncyBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCi0KLSAgIENvcHlyaWdodCAoQykg
MTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAw
NgotICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0KLSAgIFRoaXMgcHJvZ3JhbSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisg
ICAKKyAgICAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OS0xOTkwLCAyMDAwLTIwMDYsIDIwMDkt
MjAxMCBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuCisgICAKKyAgIFRoaXMgcHJv
Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k
aWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieQotICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgYW55IGxhdGVyIHZlcnNpb24u
Ci0KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2Yg
dGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICAgCiAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAgICBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCisgICAKICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICAg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt
LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAogLyog
QXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSBjcmVhdGUgYSBsYXJnZXIgd29yayB0aGF0
IGNvbnRhaW5zCiAgICBwYXJ0IG9yIGFsbCBvZiB0aGUgQmlzb24gcGFyc2VyIHNrZWxldG9uIGFu
ZCBkaXN0cmlidXRlIHRoYXQgd29yawpAQCAtMjksNyArMjcsNyBAQAogICAgc3BlY2lhbCBleGNl
cHRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNrZWxldG9uIGFuZCB0aGUgcmVzdWx0aW5nCiAg
ICBCaXNvbiBvdXRwdXQgZmlsZXMgdG8gYmUgbGljZW5zZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYwogICAgTGljZW5zZSB3aXRob3V0IHRoaXMgc3BlY2lhbCBleGNlcHRpb24uCi0KKyAg
IAogICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMgYWRkZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiBpbgogICAgdmVyc2lvbiAyLjIgb2YgQmlzb24uICAqLwogCkBAIC00Nyw3
ICs0NSw3IEBACiAjZGVmaW5lIFlZQklTT04gMQogCiAvKiBCaXNvbiB2ZXJzaW9uLiAgKi8KLSNk
ZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjMiCisjZGVmaW5lIFlZQklTT05fVkVSU0lPTiAiMi40
LjIiCiAKIC8qIFNrZWxldG9uIG5hbWUuICAqLwogI2RlZmluZSBZWVNLRUxFVE9OX05BTUUgInlh
Y2MuYyIKQEAgLTU1LDUwICs1MywyMyBAQAogLyogUHVyZSBwYXJzZXJzLiAgKi8KICNkZWZpbmUg
WVlQVVJFIDEKIAorLyogUHVzaCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQVVNIIDAKKworLyog
UHVsbCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQVUxMIDEKKwogLyogVXNpbmcgbG9jYXRpb25z
LiAgKi8KICNkZWZpbmUgWVlMU1BfTkVFREVEIDAKIAogLyogU3Vic3RpdHV0ZSB0aGUgdmFyaWFi
bGUgYW5kIGZ1bmN0aW9uIG5hbWVzLiAgKi8KLSNkZWZpbmUgeXlwYXJzZSBwcHBhcnNlCi0jZGVm
aW5lIHl5bGV4ICAgcHBsZXgKLSNkZWZpbmUgeXllcnJvciBwcGVycm9yCi0jZGVmaW5lIHl5bHZh
bCAgcHBsdmFsCi0jZGVmaW5lIHl5Y2hhciAgcHBjaGFyCi0jZGVmaW5lIHl5ZGVidWcgcHBkZWJ1
ZwotI2RlZmluZSB5eW5lcnJzIHBwbmVycnMKLQotCi0vKiBUb2tlbnMuICAqLwotI2lmbmRlZiBZ
WVRPS0VOVFlQRQotIyBkZWZpbmUgWVlUT0tFTlRZUEUKLSAgIC8qIFB1dCB0aGUgdG9rZW5zIGlu
dG8gdGhlIHN5bWJvbCB0YWJsZSwgc28gdGhhdCBHREIgYW5kIG90aGVyIGRlYnVnZ2VycwotICAg
ICAga25vdyBhYm91dCB0aGVtLiAgKi8KLSAgIGVudW0geXl0b2tlbnR5cGUgewotICAgICBUT0tf
Q09OU1RfSU5UID0gMjU4LAotICAgICBUT0tfT1BfT1IgPSAyNTksCi0gICAgIFRPS19PUF9BTkQg
PSAyNjAsCi0gICAgIFRPS19PUF9ORSA9IDI2MSwKLSAgICAgVE9LX09QX0VRID0gMjYyLAotICAg
ICBUT0tfT1BfR0UgPSAyNjMsCi0gICAgIFRPS19PUF9MRSA9IDI2NCwKLSAgICAgVE9LX09QX1JJ
R0hUID0gMjY1LAotICAgICBUT0tfT1BfTEVGVCA9IDI2NiwKLSAgICAgVE9LX1VOQVJZID0gMjY3
Ci0gICB9OwotI2VuZGlmCi0vKiBUb2tlbnMuICAqLwotI2RlZmluZSBUT0tfQ09OU1RfSU5UIDI1
OAotI2RlZmluZSBUT0tfT1BfT1IgMjU5Ci0jZGVmaW5lIFRPS19PUF9BTkQgMjYwCi0jZGVmaW5l
IFRPS19PUF9ORSAyNjEKLSNkZWZpbmUgVE9LX09QX0VRIDI2MgotI2RlZmluZSBUT0tfT1BfR0Ug
MjYzCi0jZGVmaW5lIFRPS19PUF9MRSAyNjQKLSNkZWZpbmUgVE9LX09QX1JJR0hUIDI2NQotI2Rl
ZmluZSBUT0tfT1BfTEVGVCAyNjYKLSNkZWZpbmUgVE9LX1VOQVJZIDI2NwotCi0KKyNkZWZpbmUg
eXlwYXJzZSAgICAgICAgIHBwcGFyc2UKKyNkZWZpbmUgeXlsZXggICAgICAgICAgIHBwbGV4Cisj
ZGVmaW5lIHl5ZXJyb3IgICAgICAgICBwcGVycm9yCisjZGVmaW5lIHl5bHZhbCAgICAgICAgICBw
cGx2YWwKKyNkZWZpbmUgeXljaGFyICAgICAgICAgIHBwY2hhcgorI2RlZmluZSB5eWRlYnVnICAg
ICAgICAgcHBkZWJ1ZworI2RlZmluZSB5eW5lcnJzICAgICAgICAgcHBuZXJycwogCiAKIC8qIENv
cHkgdGhlIGZpcnN0IHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLwpAQCAtMTU4LDYgKzEy
OSw3IEBAIHN0YXRpYyBpbnQgeXlsZXgoWVlTVFlQRSogbHZhbHAsIENvbnRleHQKIHN0YXRpYyB2
b2lkIHl5ZXJyb3IoQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKTsKIAogCisK
IC8qIEVuYWJsaW5nIHRyYWNlcy4gICovCiAjaWZuZGVmIFlZREVCVUcKICMgZGVmaW5lIFlZREVC
VUcgMApAQCAtMTc2LDIwICsxNDgsMzkgQEAgc3RhdGljIHZvaWQgeXllcnJvcihDb250ZXh0KiBj
b250ZXh0LCBjbwogIyBkZWZpbmUgWVlUT0tFTl9UQUJMRSAwCiAjZW5kaWYKIAorCisvKiBUb2tl
bnMuICAqLworI2lmbmRlZiBZWVRPS0VOVFlQRQorIyBkZWZpbmUgWVlUT0tFTlRZUEUKKyAgIC8q
IFB1dCB0aGUgdG9rZW5zIGludG8gdGhlIHN5bWJvbCB0YWJsZSwgc28gdGhhdCBHREIgYW5kIG90
aGVyIGRlYnVnZ2VycworICAgICAga25vdyBhYm91dCB0aGVtLiAgKi8KKyAgIGVudW0geXl0b2tl
bnR5cGUgeworICAgICBUT0tfQ09OU1RfSU5UID0gMjU4LAorICAgICBUT0tfT1BfT1IgPSAyNTks
CisgICAgIFRPS19PUF9BTkQgPSAyNjAsCisgICAgIFRPS19PUF9ORSA9IDI2MSwKKyAgICAgVE9L
X09QX0VRID0gMjYyLAorICAgICBUT0tfT1BfR0UgPSAyNjMsCisgICAgIFRPS19PUF9MRSA9IDI2
NCwKKyAgICAgVE9LX09QX1JJR0hUID0gMjY1LAorICAgICBUT0tfT1BfTEVGVCA9IDI2NiwKKyAg
ICAgVE9LX1VOQVJZID0gMjY3CisgICB9OworI2VuZGlmCisKKworCiAjaWYgISBkZWZpbmVkIFlZ
U1RZUEUgJiYgISBkZWZpbmVkIFlZU1RZUEVfSVNfREVDTEFSRUQKIHR5cGVkZWYgaW50IFlZU1RZ
UEU7CisjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogIyBkZWZpbmUgeXlzdHlwZSBZWVNU
WVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3biAqLwogIyBkZWZpbmUgWVlTVFlQ
RV9JU19ERUNMQVJFRCAxCi0jIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogI2VuZGlmCiAK
IAotCiAvKiBDb3B5IHRoZSBzZWNvbmQgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCiAK
IAotLyogTGluZSAyMTYgb2YgeWFjYy5jLiAgKi8KLQogCiAjaWZkZWYgc2hvcnQKICMgdW5kZWYg
c2hvcnQKQEAgLTI2NCwxNCArMjU1LDE0IEBAIHR5cGVkZWYgc2hvcnQgaW50IHl5dHlwZV9pbnQx
NjsKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAg
ICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgaW50
Ci1ZWUlEIChpbnQgaSkKK1lZSUQgKGludCB5eWkpCiAjZWxzZQogc3RhdGljIGludAotWVlJRCAo
aSkKLSAgICBpbnQgaTsKK1lZSUQgKHl5aSkKKyAgICBpbnQgeXlpOwogI2VuZGlmCiB7Ci0gIHJl
dHVybiBpOworICByZXR1cm4geXlpOwogfQogI2VuZGlmCiAKQEAgLTM1Miw5ICszNDMsOSBAQCB2
b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJTkdFUyBPTiBVU0VSCiAvKiBBIHR5cGUgdGhhdCBp
cyBwcm9wZXJseSBhbGlnbmVkIGZvciBhbnkgc3RhY2sgbWVtYmVyLiAgKi8KIHVuaW9uIHl5YWxs
b2MKIHsKLSAgeXl0eXBlX2ludDE2IHl5c3M7Ci0gIFlZU1RZUEUgeXl2czsKLSAgfTsKKyAgeXl0
eXBlX2ludDE2IHl5c3NfYWxsb2M7CisgIFlZU1RZUEUgeXl2c19hbGxvYzsKK307CiAKIC8qIFRo
ZSBzaXplIG9mIHRoZSBtYXhpbXVtIGdhcCBiZXR3ZWVuIG9uZSBhbGlnbmVkIHN0YWNrIGFuZCB0
aGUgbmV4dC4gICovCiAjIGRlZmluZSBZWVNUQUNLX0dBUF9NQVhJTVVNIChzaXplb2YgKHVuaW9u
IHl5YWxsb2MpIC0gMSkKQEAgLTM4OCwxMiArMzc5LDEyIEBAIHVuaW9uIHl5YWxsb2MKICAgIGVs
ZW1lbnRzIGluIHRoZSBzdGFjaywgYW5kIFlZUFRSIGdpdmVzIHRoZSBuZXcgbG9jYXRpb24gb2Yg
dGhlCiAgICBzdGFjay4gIEFkdmFuY2UgWVlQVFIgdG8gYSBwcm9wZXJseSBhbGlnbmVkIGxvY2F0
aW9uIGZvciB0aGUgbmV4dAogICAgc3RhY2suICAqLwotIyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FU
RShTdGFjaykJCQkJCVwKKyMgZGVmaW5lIFlZU1RBQ0tfUkVMT0NBVEUoU3RhY2tfYWxsb2MsIFN0
YWNrKQkJCQlcCiAgICAgZG8JCQkJCQkJCQlcCiAgICAgICB7CQkJCQkJCQkJXAogCVlZU0laRV9U
IHl5bmV3Ynl0ZXM7CQkJCQkJXAotCVlZQ09QWSAoJnl5cHRyLT5TdGFjaywgU3RhY2ssIHl5c2l6
ZSk7CQkJCVwKLQlTdGFjayA9ICZ5eXB0ci0+U3RhY2s7CQkJCQkJXAorCVlZQ09QWSAoJnl5cHRy
LT5TdGFja19hbGxvYywgU3RhY2ssIHl5c2l6ZSk7CQkJXAorCVN0YWNrID0gJnl5cHRyLT5TdGFj
a19hbGxvYzsJCQkJCVwKIAl5eW5ld2J5dGVzID0geXlzdGFja3NpemUgKiBzaXplb2YgKCpTdGFj
aykgKyBZWVNUQUNLX0dBUF9NQVhJTVVNOyBcCiAJeXlwdHIgKz0geXluZXdieXRlcyAvIHNpemVv
ZiAoKnl5cHRyKTsJCQkJXAogICAgICAgfQkJCQkJCQkJCVwKQEAgLTQ4Miw5ICs0NzMsOSBAQCBz
dGF0aWMgY29uc3QgeXl0eXBlX2ludDggeXlyaHNbXSA9CiAvKiBZWVJMSU5FW1lZTl0gLS0gc291
cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8KIHN0YXRpYyBj
b25zdCB5eXR5cGVfdWludDggeXlybGluZVtdID0KIHsKLSAgICAgICAwLCAgICA5MSwgICAgOTEs
ICAgIDk4LCAgICA5OSwgICAxMDIsICAgMTA1LCAgIDEwOCwgICAxMTEsICAgMTE0LAotICAgICAx
MTcsICAgMTIwLCAgIDEyMywgICAxMjYsICAgMTI5LCAgIDEzMiwgICAxMzUsICAgMTM4LCAgIDE0
MSwgICAxNDQsCi0gICAgIDE1NywgICAxNzAsICAgMTczLCAgIDE3NiwgICAxNzksICAgMTgyLCAg
IDE4NQorICAgICAgIDAsICAgIDkwLCAgICA5MCwgICAgOTcsICAgIDk4LCAgIDEwMSwgICAxMDQs
ICAgMTA3LCAgIDExMCwgICAxMTMsCisgICAgIDExNiwgICAxMTksICAgMTIyLCAgIDEyNSwgICAx
MjgsICAgMTMxLCAgIDEzNCwgICAxMzcsICAgMTQwLCAgIDE0MywKKyAgICAgMTU2LCAgIDE2OSwg
ICAxNzIsICAgMTc1LCAgIDE3OCwgICAxODEsICAgMTg0CiB9OwogI2VuZGlmCiAKQEAgLTYzOSw5
ICs2MzAsMTggQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXN0b3NbXSA9CiAKIC8qIExp
a2UgWVlFUlJPUiBleGNlcHQgZG8gY2FsbCB5eWVycm9yLiAgVGhpcyByZW1haW5zIGhlcmUgdGVt
cG9yYXJpbHkKICAgIHRvIGVhc2UgdGhlIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBtZWFuaW5nIG9m
IFlZRVJST1IsIGZvciBHQ0MuCi0gICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFzIHN1cHBsYW50ZWQg
dmVyc2lvbiAxLCB0aGlzIGNhbiBnby4gICovCisgICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFzIHN1
cHBsYW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNhbiBnby4gIEhvd2V2ZXIsCisgICBZWUZBSUwgYXBw
ZWFycyB0byBiZSBpbiB1c2UuICBOZXZlcnRoZWxlc3MsIGl0IGlzIGZvcm1hbGx5IGRlcHJlY2F0
ZWQKKyAgIGluIEJpc29uIDIuNC4yJ3MgTkVXUyBlbnRyeSwgd2hlcmUgYSBwbGFuIHRvIHBoYXNl
IGl0IG91dCBpcworICAgZGlzY3Vzc2VkLiAgKi8KIAogI2RlZmluZSBZWUZBSUwJCWdvdG8geXll
cnJsYWIKKyNpZiBkZWZpbmVkIFlZRkFJTAorICAvKiBUaGlzIGlzIGhlcmUgdG8gc3VwcHJlc3Mg
d2FybmluZ3MgZnJvbSB0aGUgR0NDIGNwcCdzCisgICAgIC1XdW51c2VkLW1hY3Jvcy4gIE5vcm1h
bGx5IHdlIGRvbid0IHdvcnJ5IGFib3V0IHRoYXQgd2FybmluZywgYnV0CisgICAgIHNvbWUgdXNl
cnMgZG8sIGFuZCB3ZSB3YW50IHRvIG1ha2UgaXQgZWFzeSBmb3IgdXNlcnMgdG8gcmVtb3ZlCisg
ICAgIFlZRkFJTCB1c2VzLCB3aGljaCB3aWxsIHByb2R1Y2Ugd2FybmluZ3MgZnJvbSBCaXNvbiAy
LjUuICAqLworI2VuZGlmCiAKICNkZWZpbmUgWVlSRUNPVkVSSU5HKCkgICghIXl5ZXJyc3RhdHVz
KQogCkBAIC04MTIsMTcgKzgxMiwyMCBAQCB5eV9zeW1ib2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5
cGUsIHl5dmFsCiAjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19f
IFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3Rh
dGljIHZvaWQKLXl5X3N0YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKmJvdHRvbSwgeXl0eXBlX2lu
dDE2ICp0b3ApCit5eV9zdGFja19wcmludCAoeXl0eXBlX2ludDE2ICp5eWJvdHRvbSwgeXl0eXBl
X2ludDE2ICp5eXRvcCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfc3RhY2tfcHJpbnQgKGJvdHRv
bSwgdG9wKQotICAgIHl5dHlwZV9pbnQxNiAqYm90dG9tOwotICAgIHl5dHlwZV9pbnQxNiAqdG9w
OworeXlfc3RhY2tfcHJpbnQgKHl5Ym90dG9tLCB5eXRvcCkKKyAgICB5eXR5cGVfaW50MTYgKnl5
Ym90dG9tOworICAgIHl5dHlwZV9pbnQxNiAqeXl0b3A7CiAjZW5kaWYKIHsKICAgWVlGUFJJTlRG
IChzdGRlcnIsICJTdGFjayBub3ciKTsKLSAgZm9yICg7IGJvdHRvbSA8PSB0b3A7ICsrYm90dG9t
KQotICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgKmJvdHRvbSk7CisgIGZvciAoOyB5eWJv
dHRvbSA8PSB5eXRvcDsgeXlib3R0b20rKykKKyAgICB7CisgICAgICBpbnQgeXlib3QgPSAqeXli
b3R0b207CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAlZCIsIHl5Ym90KTsKKyAgICB9CiAg
IFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKIH0KIApAQCAtODU3LDExICs4NjAsMTEgQEAgeXlf
cmVkdWNlX3ByaW50ICh5eXZzcCwgeXlydWxlLCBjb250ZXh0KQogICAvKiBUaGUgc3ltYm9scyBi
ZWluZyByZWR1Y2VkLiAgKi8KICAgZm9yICh5eWkgPSAwOyB5eWkgPCB5eW5yaHM7IHl5aSsrKQog
ICAgIHsKLSAgICAgIGZwcmludGYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOworICAg
ICAgWVlGUFJJTlRGIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKICAgICAgIHl5X3N5
bWJvbF9wcmludCAoc3RkZXJyLCB5eXJoc1t5eXByaHNbeXlydWxlXSArIHl5aV0sCiAJCSAgICAg
ICAmKHl5dnNwWyh5eWkgKyAxKSAtICh5eW5yaHMpXSkKIAkJICAgICAgIAkJICAgICAgICwgY29u
dGV4dCk7Ci0gICAgICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOworICAgICAgWVlGUFJJTlRGIChz
dGRlcnIsICJcbiIpOwogICAgIH0KIH0KIApAQCAtMTE0MywxMCArMTE0Niw4IEBAIHl5ZGVzdHJ1
Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVwLCBjb24KIAlicmVhazsKICAgICB9CiB9Ci0MCiAK
IC8qIFByZXZlbnQgd2FybmluZ3MgZnJvbSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCi0KICNp
ZmRlZiBZWVBBUlNFX1BBUkFNCiAjaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3Bs
dXNwbHVzCiBpbnQgeXlwYXJzZSAodm9pZCAqWVlQQVJTRV9QQVJBTSk7CkBAIC0xMTY1LDEwICsx
MTY2LDkgQEAgaW50IHl5cGFyc2UgKCk7CiAKIAogCi0KLS8qLS0tLS0tLS0tLS4KLXwgeXlwYXJz
ZS4gIHwKLWAtLS0tLS0tLS0tKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXlw
YXJzZSBvciB5eXB1c2hfcGFyc2UuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAK
ICNpZmRlZiBZWVBBUlNFX1BBUkFNCiAjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBf
X0M5OV9fRlVOQ19fIFwKQEAgLTExOTIsMjIgKzExOTIsNDYgQEAgeXlwYXJzZSAoY29udGV4dCkK
ICNlbmRpZgogI2VuZGlmCiB7Ci0gIC8qIFRoZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCisvKiBU
aGUgbG9va2FoZWFkIHN5bWJvbC4gICovCiBpbnQgeXljaGFyOwogCi0vKiBUaGUgc2VtYW50aWMg
dmFsdWUgb2YgdGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KKy8qIFRoZSBzZW1hbnRpYyB2YWx1
ZSBvZiB0aGUgbG9va2FoZWFkIHN5bWJvbC4gICovCiBZWVNUWVBFIHl5bHZhbDsKIAotLyogTnVt
YmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KLWludCB5eW5lcnJzOworICAgIC8qIE51
bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCisgICAgaW50IHl5bmVycnM7CisKKyAg
ICBpbnQgeXlzdGF0ZTsKKyAgICAvKiBOdW1iZXIgb2YgdG9rZW5zIHRvIHNoaWZ0IGJlZm9yZSBl
cnJvciBtZXNzYWdlcyBlbmFibGVkLiAgKi8KKyAgICBpbnQgeXllcnJzdGF0dXM7CisKKyAgICAv
KiBUaGUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKKyAgICAgICBgeXlzcyc6IHJlbGF0ZWQgdG8g
c3RhdGVzLgorICAgICAgIGB5eXZzJzogcmVsYXRlZCB0byBzZW1hbnRpYyB2YWx1ZXMuCisKKyAg
ICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93
IHl5b3ZlcmZsb3cKKyAgICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8KKwor
ICAgIC8qIFRoZSBzdGF0ZSBzdGFjay4gICovCisgICAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5J
VERFUFRIXTsKKyAgICB5eXR5cGVfaW50MTYgKnl5c3M7CisgICAgeXl0eXBlX2ludDE2ICp5eXNz
cDsKKworICAgIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCisgICAgWVlTVFlQRSB5
eXZzYVtZWUlOSVRERVBUSF07CisgICAgWVlTVFlQRSAqeXl2czsKKyAgICBZWVNUWVBFICp5eXZz
cDsKKworICAgIFlZU0laRV9UIHl5c3RhY2tzaXplOwogCi0gIGludCB5eXN0YXRlOwogICBpbnQg
eXluOwogICBpbnQgeXlyZXN1bHQ7Ci0gIC8qIE51bWJlciBvZiB0b2tlbnMgdG8gc2hpZnQgYmVm
b3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLwotICBpbnQgeXllcnJzdGF0dXM7Ci0gIC8q
IExvb2stYWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJl
ci4gICovCi0gIGludCB5eXRva2VuID0gMDsKKyAgLyogTG9va2FoZWFkIHRva2VuIGFzIGFuIGlu
dGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLworICBpbnQgeXl0b2tlbjsKKyAg
LyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1ZSBhbmQgbG9jYXRp
b24gZnJvbSB0aGUKKyAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KKyAgWVlTVFlQRSB5eXZhbDsK
KwogI2lmIFlZRVJST1JfVkVSQk9TRQogICAvKiBCdWZmZXIgZm9yIGVycm9yIG1lc3NhZ2VzLCBh
bmQgaXRzIGFsbG9jYXRlZCBzaXplLiAgKi8KICAgY2hhciB5eW1zZ2J1ZlsxMjhdOwpAQCAtMTIx
NSw1MSArMTIzOSwyOCBAQCBpbnQgeXluZXJyczsKICAgWVlTSVpFX1QgeXltc2dfYWxsb2MgPSBz
aXplb2YgeXltc2didWY7CiAjZW5kaWYKIAotICAvKiBUaHJlZSBzdGFja3MgYW5kIHRoZWlyIHRv
b2xzOgotICAgICBgeXlzcyc6IHJlbGF0ZWQgdG8gc3RhdGVzLAotICAgICBgeXl2cyc6IHJlbGF0
ZWQgdG8gc2VtYW50aWMgdmFsdWVzLAotICAgICBgeXlscyc6IHJlbGF0ZWQgdG8gbG9jYXRpb25z
LgotCi0gICAgIFJlZmVyIHRvIHRoZSBzdGFja3MgdGhydSBzZXBhcmF0ZSBwb2ludGVycywgdG8g
YWxsb3cgeXlvdmVyZmxvdwotICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8K
LQotICAvKiBUaGUgc3RhdGUgc3RhY2suICAqLwotICB5eXR5cGVfaW50MTYgeXlzc2FbWVlJTklU
REVQVEhdOwotICB5eXR5cGVfaW50MTYgKnl5c3MgPSB5eXNzYTsKLSAgeXl0eXBlX2ludDE2ICp5
eXNzcDsKLQotICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3RhY2suICAqLwotICBZWVNUWVBFIHl5
dnNhW1lZSU5JVERFUFRIXTsKLSAgWVlTVFlQRSAqeXl2cyA9IHl5dnNhOwotICBZWVNUWVBFICp5
eXZzcDsKLQotCi0KICNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5c3Nw
IC09IChOKSkKIAotICBZWVNJWkVfVCB5eXN0YWNrc2l6ZSA9IFlZSU5JVERFUFRIOwotCi0gIC8q
IFRoZSB2YXJpYWJsZXMgdXNlZCB0byByZXR1cm4gc2VtYW50aWMgdmFsdWUgYW5kIGxvY2F0aW9u
IGZyb20gdGhlCi0gICAgIGFjdGlvbiByb3V0aW5lcy4gICovCi0gIFlZU1RZUEUgeXl2YWw7Ci0K
LQogICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIFJIUyBvZiB0aGUgcmVkdWNlZCBy
dWxlLgogICAgICBLZWVwIHRvIHplcm8gd2hlbiBubyBzeW1ib2wgc2hvdWxkIGJlIHBvcHBlZC4g
ICovCiAgIGludCB5eWxlbiA9IDA7CiAKKyAgeXl0b2tlbiA9IDA7CisgIHl5c3MgPSB5eXNzYTsK
KyAgeXl2cyA9IHl5dnNhOworICB5eXN0YWNrc2l6ZSA9IFlZSU5JVERFUFRIOworCiAgIFlZRFBS
SU5URiAoKHN0ZGVyciwgIlN0YXJ0aW5nIHBhcnNlXG4iKSk7CiAKICAgeXlzdGF0ZSA9IDA7CiAg
IHl5ZXJyc3RhdHVzID0gMDsKICAgeXluZXJycyA9IDA7Ci0gIHl5Y2hhciA9IFlZRU1QVFk7CQkv
KiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLworICB5eWNoYXIgPSBZWUVNUFRZOyAvKiBD
YXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLwogCiAgIC8qIEluaXRpYWxpemUgc3RhY2sgcG9p
bnRlcnMuCiAgICAgIFdhc3RlIG9uZSBlbGVtZW50IG9mIHZhbHVlIGFuZCBsb2NhdGlvbiBzdGFj
awogICAgICBzbyB0aGF0IHRoZXkgc3RheSBvbiB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgc3RhdGUg
c3RhY2suCiAgICAgIFRoZSB3YXN0ZWQgZWxlbWVudHMgYXJlIG5ldmVyIGluaXRpYWxpemVkLiAg
Ki8KLQogICB5eXNzcCA9IHl5c3M7CiAgIHl5dnNwID0geXl2czsKIApAQCAtMTI4OSw3ICsxMjkw
LDYgQEAgaW50IHl5bmVycnM7CiAJWVlTVFlQRSAqeXl2czEgPSB5eXZzOwogCXl5dHlwZV9pbnQx
NiAqeXlzczEgPSB5eXNzOwogCi0KIAkvKiBFYWNoIHN0YWNrIHBvaW50ZXIgYWRkcmVzcyBpcyBm
b2xsb3dlZCBieSB0aGUgc2l6ZSBvZiB0aGUKIAkgICBkYXRhIGluIHVzZSBpbiB0aGF0IHN0YWNr
LCBpbiBieXRlcy4gIFRoaXMgdXNlZCB0byBiZSBhCiAJICAgY29uZGl0aW9uYWwgYXJvdW5kIGp1
c3QgdGhlIHR3byBleHRyYSBhcmdzLCBidXQgdGhhdCBtaWdodApAQCAtMTI5Nyw3ICsxMjk3LDYg
QEAgaW50IHl5bmVycnM7CiAJeXlvdmVyZmxvdyAoWVlfKCJtZW1vcnkgZXhoYXVzdGVkIiksCiAJ
CSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwKIAkJICAgICZ5eXZzMSwgeXlz
aXplICogc2l6ZW9mICgqeXl2c3ApLAotCiAJCSAgICAmeXlzdGFja3NpemUpOwogCiAJeXlzcyA9
IHl5c3MxOwpAQCAtMTMyMCw5ICsxMzE5LDggQEAgaW50IHl5bmVycnM7CiAJICAodW5pb24geXlh
bGxvYyAqKSBZWVNUQUNLX0FMTE9DIChZWVNUQUNLX0JZVEVTICh5eXN0YWNrc2l6ZSkpOwogCWlm
ICghIHl5cHRyKQogCSAgZ290byB5eWV4aGF1c3RlZGxhYjsKLQlZWVNUQUNLX1JFTE9DQVRFICh5
eXNzKTsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXZzKTsKLQorCVlZU1RBQ0tfUkVMT0NBVEUgKHl5
c3NfYWxsb2MsIHl5c3MpOworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnNfYWxsb2MsIHl5dnMpOwog
IyAgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQogCWlmICh5eXNzMSAhPSB5eXNzYSkKIAkgIFlZU1RB
Q0tfRlJFRSAoeXlzczEpOwpAQCAtMTMzMyw3ICsxMzMxLDYgQEAgaW50IHl5bmVycnM7CiAgICAg
ICB5eXNzcCA9IHl5c3MgKyB5eXNpemUgLSAxOwogICAgICAgeXl2c3AgPSB5eXZzICsgeXlzaXpl
IC0gMTsKIAotCiAgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFjayBzaXplIGluY3JlYXNl
ZCB0byAlbHVcbiIsCiAJCSAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0YWNrc2l6ZSkpOwogCkBA
IC0xMzQzLDYgKzEzNDAsOSBAQCBpbnQgeXluZXJyczsKIAogICBZWURQUklOVEYgKChzdGRlcnIs
ICJFbnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlzdGF0ZSkpOwogCisgIGlmICh5eXN0YXRlID09IFlZ
RklOQUwpCisgICAgWVlBQ0NFUFQ7CisKICAgZ290byB5eWJhY2t1cDsKIAogLyotLS0tLS0tLS0t
LS4KQEAgLTEzNTEsMTYgKzEzNTEsMTYgQEAgaW50IHl5bmVycnM7CiB5eWJhY2t1cDoKIAogICAv
KiBEbyBhcHByb3ByaWF0ZSBwcm9jZXNzaW5nIGdpdmVuIHRoZSBjdXJyZW50IHN0YXRlLiAgUmVh
ZCBhCi0gICAgIGxvb2stYWhlYWQgdG9rZW4gaWYgd2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVh
ZHkgaGF2ZSBvbmUuICAqLworICAgICBsb29rYWhlYWQgdG9rZW4gaWYgd2UgbmVlZCBvbmUgYW5k
IGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLwogCi0gIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUg
d2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rLWFoZWFkIHRva2VuLiAgKi8KKyAg
LyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGhvdXQgcmVmZXJlbmNlIHRvIGxv
b2thaGVhZCB0b2tlbi4gICovCiAgIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKICAgaWYgKHl5biA9
PSBZWVBBQ1RfTklORikKICAgICBnb3RvIHl5ZGVmYXVsdDsKIAotICAvKiBOb3Qga25vd24gPT4g
Z2V0IGEgbG9vay1haGVhZCB0b2tlbiBpZiBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KKyAg
LyogTm90IGtub3duID0+IGdldCBhIGxvb2thaGVhZCB0b2tlbiBpZiBkb24ndCBhbHJlYWR5IGhh
dmUgb25lLiAgKi8KIAotICAvKiBZWUNIQVIgaXMgZWl0aGVyIFlZRU1QVFkgb3IgWVlFT0Ygb3Ig
YSB2YWxpZCBsb29rLWFoZWFkIHN5bWJvbC4gICovCisgIC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlF
TVBUWSBvciBZWUVPRiBvciBhIHZhbGlkIGxvb2thaGVhZCBzeW1ib2wuICAqLwogICBpZiAoeXlj
aGFyID09IFlZRU1QVFkpCiAgICAgewogICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiUmVhZGlu
ZyBhIHRva2VuOiAiKSk7CkBAIC0xMzkyLDIwICsxMzkyLDE2IEBAIHl5YmFja3VwOgogICAgICAg
Z290byB5eXJlZHVjZTsKICAgICB9CiAKLSAgaWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUND
RVBUOwotCiAgIC8qIENvdW50IHRva2VucyBzaGlmdGVkIHNpbmNlIGVycm9yOyBhZnRlciB0aHJl
ZSwgdHVybiBvZmYgZXJyb3IKICAgICAgc3RhdHVzLiAgKi8KICAgaWYgKHl5ZXJyc3RhdHVzKQog
ICAgIHl5ZXJyc3RhdHVzLS07CiAKLSAgLyogU2hpZnQgdGhlIGxvb2stYWhlYWQgdG9rZW4uICAq
LworICAvKiBTaGlmdCB0aGUgbG9va2FoZWFkIHRva2VuLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5U
ICgiU2hpZnRpbmciLCB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jKTsKIAotICAvKiBEaXNjYXJk
IHRoZSBzaGlmdGVkIHRva2VuIHVubGVzcyBpdCBpcyBlb2YuICAqLwotICBpZiAoeXljaGFyICE9
IFlZRU9GKQotICAgIHl5Y2hhciA9IFlZRU1QVFk7CisgIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQg
dG9rZW4uICAqLworICB5eWNoYXIgPSBZWUVNUFRZOwogCiAgIHl5c3RhdGUgPSB5eW47CiAgICor
K3l5dnNwID0geXlsdmFsOwpAQCAtMTQ0OSwxMTIgKzE0NDUsMTEyIEBAIHl5cmVkdWNlOgogICAg
IHsKICAgICAgICAgKihjb250ZXh0LT5yZXN1bHQpID0gc3RhdGljX2Nhc3Q8aW50PigoeXl2c3Bb
KDEpIC0gKDEpXSkpOwogICAgICAgICBZWUFDQ0VQVDsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0g
KDMpXSkgfHwgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgNToKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyld
KSAmJiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSA2OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIHwg
KHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSBeICh5eXZz
cFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDg6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgJiAoeXl2c3BbKDMp
IC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA5OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pICE9ICh5eXZzcFsoMykgLSAo
MyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEwOgogCiAgICAgewog
ICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pID09ICh5eXZzcFsoMykgLSAoMyld
KTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExOgogCiAgICAgewogICAg
ICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pID49ICh5eXZzcFsoMykgLSAoMyldKTsK
LSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyOgogCiAgICAgewogICAgICAg
ICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIDw9ICh5eXZzcFsoMykgLSAoMyldKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEzOgogCiAgICAgewogICAgICAgICAo
eXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pID4gKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQ6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPCAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAg
ICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNToKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9
ICh5eXZzcFsoMSkgLSAoMyldKSA+PiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5
eXZzcFsoMSkgLSAoMyldKSA8PCAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxNzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFsoMSkgLSAoMyldKSAtICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDE4OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygx
KSAtICgzKV0pICsgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTk6CkBAIC0xNTcxLDcgKzE1NjcsNyBAQCB5eXJlZHVjZToKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgJSAoeXl2
c3BbKDMpIC0gKDMpXSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDIwOgpAQCAtMTU4OCw1MyArMTU4NCw1MiBAQCB5eXJlZHVjZToKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgLyAoeXl2c3Bb
KDMpIC0gKDMpXSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBj
YXNlIDIxOgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pICog
KHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MjI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAhICh5eXZzcFsoMikgLSAoMildKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIzOgogCiAgICAgewogICAgICAgICAo
eXl2YWwpID0gfiAoeXl2c3BbKDIpIC0gKDIpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAyNDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9IC0gKHl5dnNwWygyKSAt
ICgyKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjU6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbCkgPSArICh5eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgIH0K
ICAgICBicmVhazsKIAogICBjYXNlIDI2OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5
dnNwWygyKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAKLS8qIExpbmUg
MTI2NyBvZiB5YWNjLmMuICAqLwogCiAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICB9CkBAIC0x
NjQ2LDcgKzE2NDEsNiBAQCB5eXJlZHVjZToKIAogICAqKyt5eXZzcCA9IHl5dmFsOwogCi0KICAg
LyogTm93IGBzaGlmdCcgdGhlIHJlc3VsdCBvZiB0aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdo
YXQgc3RhdGUKICAgICAgdGhhdCBnb2VzIHRvLCBiYXNlZCBvbiB0aGUgc3RhdGUgd2UgcG9wcGVk
IGJhY2sgdG8gYW5kIHRoZSBydWxlCiAgICAgIG51bWJlciByZWR1Y2VkIGJ5LiAgKi8KQEAgLTE3
MTEsNyArMTcwNSw3IEBAIHl5ZXJybGFiOgogCiAgIGlmICh5eWVycnN0YXR1cyA9PSAzKQogICAg
IHsKLSAgICAgIC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rLWFoZWFk
IHRva2VuIGFmdGVyIGFuCisgICAgICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gcmV1
c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIGFuCiAJIGVycm9yLCBkaXNjYXJkIGl0LiAgKi8KIAog
ICAgICAgaWYgKHl5Y2hhciA8PSBZWUVPRikKQEAgLTE3MjgsNyArMTcyMiw3IEBAIHl5ZXJybGFi
OgogCX0KICAgICB9CiAKLSAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVzZSBsb29rLWFoZWFkIHRv
a2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgorICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNl
IGxvb2thaGVhZCB0b2tlbiBhZnRlciBzaGlmdGluZyB0aGUgZXJyb3IKICAgICAgdG9rZW4uICAq
LwogICBnb3RvIHl5ZXJybGFiMTsKIApAQCAtMTc4NSw5ICsxNzc5LDYgQEAgeXllcnJsYWIxOgog
ICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKICAgICB9CiAKLSAgaWYgKHl5biA9
PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCiAgICorK3l5dnNwID0geXlsdmFsOwogCiAKQEAg
LTE4MTIsNyArMTgwMyw3IEBAIHl5YWJvcnRsYWI6CiAgIHl5cmVzdWx0ID0gMTsKICAgZ290byB5
eXJldHVybjsKIAotI2lmbmRlZiB5eW92ZXJmbG93CisjaWYgIWRlZmluZWQoeXlvdmVyZmxvdykg
fHwgWVlFUlJPUl9WRVJCT1NFCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0uCiB8IHl5ZXhoYXVzdGVkbGFiIC0tIG1lbW9yeSBleGhhdXN0aW9uIGNv
bWVzIGhlcmUuICB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSovCkBAIC0xODIzLDcgKzE4MTQsNyBAQCB5eWV4aGF1c3RlZGxhYjoKICNlbmRpZgog
CiB5eXJldHVybjoKLSAgaWYgKHl5Y2hhciAhPSBZWUVPRiAmJiB5eWNoYXIgIT0gWVlFTVBUWSkK
KyAgaWYgKHl5Y2hhciAhPSBZWUVNUFRZKQogICAgICB5eWRlc3RydWN0ICgiQ2xlYW51cDogZGlz
Y2FyZGluZyBsb29rYWhlYWQiLAogCQkgeXl0b2tlbiwgJnl5bHZhbCwgY29udGV4dCk7CiAgIC8q
IERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmln
Z2VyZWQKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90aW1pbmcv
UmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1p
bmcuY3BwCShyZXZpc2lvbiAxNTIzMjMpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAsOCArMTAsOCBAQCB2b2lkIFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nOjp2
aXNpdFN5CiB7CiAgICAgaWYgKElzU2FtcGxlcihub2RlLT5nZXRCYXNpY1R5cGUoKSkpIHsKICAg
ICAgICAgKyttTnVtRXJyb3JzOwotICAgICAgICBtU2luay5wcmVmaXgoRVByZWZpeEVycm9yKTsK
LSAgICAgICAgbVNpbmsubG9jYXRpb24obm9kZS0+Z2V0TGluZSgpKTsKLSAgICAgICAgbVNpbmsg
PDwgIlNhbXBsZXJzIGFyZSBub3QgcGVybWl0dGVkIGluIHZlcnRleCBzaGFkZXJzLlxuIjsKKyAg
ICAgICAgbVNpbmsubWVzc2FnZShFUHJlZml4RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+Z2V0TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICJTYW1wbGVycyBhcmUgbm90
IHBlcm1pdHRlZCBpbiB2ZXJ0ZXggc2hhZGVycyIpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE1MjU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA3LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgQU5HTEUgdG8gcjI0MjYuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg1NTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OiBSZW5hbWVkIERldGVjdFJlY3Vyc2lvbiB0byBEZXRlY3RDYWxsRGVwdGggYW5kIGFk
ZGVkIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLgorCiAyMDEzLTA3LTEwICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmFuZ2UuZ2V0Q2xpZW50UmVjdHMoKSBub3Qgd29ya2lu
ZyBjb3JyZWN0bHkgZm9yIHBhcnRpYWxseSBjb250YWluZWQgdmVydGljYWxseSBzdHlsZWQgdGV4
dCBub2RlcwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE1MjMyMykKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yODYzLDYgKzI4
NjMsNyBAQCBpZiAoV1RGX1VTRV8zRF9HUkFQSElDUykKICAgICBlbmRpZiAoKQogCiAgICAgbGlz
dChBUFBFTkQgQU5HTEVTdXBwb3J0X1NPVVJDRVMKKyAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0v
QU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcAogICAgICAgICAke1RI
SVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3Iu
Y3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2Vu
R0xTTC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0Nv
bXBpbGVyLmNwcApAQCAtMjg3Myw4ICsyODc0LDggQEAgaWYgKFdURl9VU0VfM0RfR1JBUEhJQ1Mp
CiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9E
ZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdM
RS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcAogICAgICAg
ICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5j
eUdyYXBoVHJhdmVyc2UuY3BwCisgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9j
b21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FO
R0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNwcAotICAgICAgICAke1RISVJE
UEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmNwcAogICAgICAg
ICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAK
ICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmNw
cAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6
ZS5jcHAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>206683</attachid>
            <date>2013-07-15 13:40:28 -0700</date>
            <delta_ts>2013-07-15 13:40:28 -0700</delta_ts>
            <desc>changes I made to ANGLE before running bison</desc>
            <filename>anglechanges</filename>
            <type>application/octet-stream</type>
            <size>4479</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IHNyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy9j
b21waWxlci9JbnRlcm1lZGlhdGUuY3BwCShyZXZpc2lvbiAyNDI2KQorKysgc3JjL2NvbXBpbGVy
L0ludGVybWVkaWF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNzEsMTMgKzEzNzEsMTMgQEAK
ICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29u
c3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vZGUtPmdldElDb25zdChpKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0
Pihub2RlLT5nZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50PihpKSkpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG5vZGUtPmdldEJDb25zdChpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
bGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRC
Q29uc3Qoc3RhdGljX2Nhc3Q8Ym9vbD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4o
bm9kZS0+Z2V0RkNvbnN0KGkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25B
cnJheVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vZGUtPmdldEZDb25zdChzdGF0
aWNfY2FzdDxmbG9hdD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAi
Q2Fubm90IHByb21vdGUiKTsKQEAgLTEzODcsMTMgKzEzODcsMTMgQEAKICAgICAgICAgICAgIGNh
c2UgRWJ0SW50OgogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VHlwZSgpLmdldEJh
c2ljVHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAg
ICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGlu
dD4obm9kZS0+Z2V0SUNvbnN0KGkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5p
b25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5nZXRJQ29uc3Qoc3Rh
dGljX2Nhc3Q8aW50PihpKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAgICAgICAgICAgICBs
ZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5nZXRCQ29u
c3QoaSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElD
b25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmdldEJDb25zdChzdGF0aWNfY2FzdDxib29sPihp
KSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlb
aV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0RkNvbnN0KGkpKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nh
c3Q8aW50Pihub2RlLT5nZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkpKSkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkNhbm5vdCBwcm9tb3RlIik7CkBAIC0xNDAzLDEz
ICsxNDAzLDEzIEBACiAgICAgICAgICAgICBjYXNlIEVidEJvb2w6CiAgICAgICAgICAgICAgICAg
c3dpdGNoIChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJh
eVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0SUNvbnN0KGkpICE9IDApOworICAgICAgICAgICAgICAg
ICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUtPmdldElDb25zdChzdGF0
aWNfY2FzdDxpbnQ+KGkpKSAhPSAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0QkNvbnN0KGkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChub2RlLT5nZXRC
Q29uc3Qoc3RhdGljX2Nhc3Q8Ym9vbD4oaSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAg
ICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUtPmdldEZDb25zdChpKSAh
PSAwLjBmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJD
b25zdChub2RlLT5nZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkpKSAhPSAwLjBmKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJDYW5ub3QgcHJvbW90ZSIpOwpJbmRleDog
c3JjL2NvbXBpbGVyL1R5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL2NvbXBpbGVyL1R5cGVzLmgJ
KHJldmlzaW9uIDI0MjYpCisrKyBzcmMvY29tcGlsZXIvVHlwZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTk4LDkgKzE5OCwxNSBAQAogcHJpdmF0ZToKICAgICBUU3RyaW5nIGJ1aWxkTWFuZ2xlZE5h
bWUoKSBjb25zdDsKIAorI2lmZGVmIF9fR05VQ19fCisgICAgVEJhc2ljVHlwZSB0eXBlOworICAg
IFRQcmVjaXNpb24gcHJlY2lzaW9uOworICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyOworI2Vsc2UK
ICAgICBUQmFzaWNUeXBlIHR5cGUgICAgICA6IDY7CiAgICAgVFByZWNpc2lvbiBwcmVjaXNpb247
CiAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgOiA3OworI2VuZGlmCiAgICAgaW50IHNpemUgICAg
ICAgICAgICAgOiA4OyAvLyBzaXplIG9mIHZlY3RvciBvciBtYXRyaXgsIG5vdCBzaXplIG9mIGFy
cmF5CiAgICAgdW5zaWduZWQgaW50IG1hdHJpeCAgOiAxOwogICAgIHVuc2lnbmVkIGludCBhcnJh
eSAgIDogMTsKSW5kZXg6IHNyYy9jb21waWxlci9nbHNsYW5nLnkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3Jj
L2NvbXBpbGVyL2dsc2xhbmcueQkocmV2aXNpb24gMjQyNikKKysrIHNyYy9jb21waWxlci9nbHNs
YW5nLnkJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDEwIEBACiAjZGVmaW5lIFlZRU5BQkxF
X05MUyAwCiAKICNkZWZpbmUgWVlMRVhfUEFSQU0gY29udGV4dC0+c2Nhbm5lcgorCisjZGVmaW5l
IFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKKwogJX0K
IAogJWV4cGVjdCAxIC8qIE9uZSBzaGlmdCByZWR1Y2UgY29uZmxpY3QgYmVjYXVzZSBvZiBpZiB8
IGVsc2UgKi8KQEAgLTQ4LDExICs1Miw2IEBACiAlcGFyc2UtcGFyYW0ge1RQYXJzZUNvbnRleHQq
IGNvbnRleHR9CiAlbG9jYXRpb25zCiAKLSVjb2RlIHJlcXVpcmVzIHsKLSNkZWZpbmUgWVlMVFlQ
RSBUU291cmNlTG9jCi0jZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQgMQotfQotCiAldW5pb24g
ewogICAgIHN0cnVjdCB7CiAgICAgICAgIHVuaW9uIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206700</attachid>
            <date>2013-07-15 16:31:03 -0700</date>
            <delta_ts>2013-07-15 17:07:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118550-20130715163023.patch</filename>
            <type>text/plain</type>
            <size>708659</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI1NiBAQAorMjAxMy0wNy0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFOR0xFIGZyb20gcjE5ODcgdG8gcjI0MjYgd2hpbGUg
a2VlcGluZyB0aGVzZSBjaGFuZ2VzOgorICAgICAgICBLZWVwaW5nICNpZiBkZWZpbmVkKF9NU0Nf
VkVSKSBhcm91bmQgI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MTgpIGluIERlcGVuZGVuY3lH
cmFwaC5jcHAuCisgICAgICAgIEtlZXBpbmcgaW5jbHVkZSBraHJwbGF0Zm9ybS5oIGluc3RlYWQg
b2YgS0hSL2tocnBsYXRmb3JtLmggaW4gU2hhZGVyTGFuZy5oLgorICAgICAgICBBZGRlZCBzdGF0
aWNfY2FzdHMgaW4gSW50ZXJtZWRpYXRlLmNwcCB0byBmaXggY29tcGlsaW5nIG9uIE1hYy4KKyAg
ICAgICAgQ2hhbmdlZCBlbnVtIGJpdCBmaWVsZHMgdG8ganVzdCBlbnVtcyBmb3IgR0NDIGluIFR5
cGVzLmggdG8gZml4IGNvbXBpbGluZyBmb3IgR1RLLgorICAgICAgICBSYW4gQmlzb24gb24gTWFj
IGFmdGVyIHJlbW92aW5nIHRoZSB1bnN1cHBvcnRlZCAlY29kZSB0YWcgKFNlZSBkaWZmIHVwbG9h
ZGVkIHRvIGJ1ZyBmb3IgZGV0YWlscykuCisgICAgICAgIEFkZGVkIFlZTFRZUEUgZGVmaW5pdGlv
biB0byBnbHNsYW5nX3RhYi5oIHdoaWNoIHdvdWxkIGhhdmUgYmVlbiBwdXQgdGhlcmUgYnkgdGhl
IHVuc3VwcG9ydGVkICVjb2RlIHRhZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBBTkdMRS5wbGlzdDogVXBkYXRlZCByZXZpc2lvbiBvZiBBTkdM
RSB0byAyNDI2LgorICAgICAgICAqIEFOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
ICAgIFJlbmFtZWQgRGV0ZWN0UmVjdXJzaW9uIHRvIERldGVjdENhbGxEZXB0aCBhbmQgYWRkZWQg
YnVpbHRpbl9zeW1ib2xfdGFibGUuCisgICAgICAgICogaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxh
bmcuaDoKKyAgICAgICAgKiBzcmMvY29tbW9uL3ZlcnNpb24uaDoKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvQmFzZVR5cGVzLmg6CisgICAgICAgIChnZXRRdWFsaWZpZXJTdHJpbmcpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9Db21tb24uaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29tcGls
ZXIuY3BwOgorICAgICAgICAoVENvbXBpbGVyOjpUQ29tcGlsZXIpOgorICAgICAgICAoVENvbXBp
bGVyOjpJbml0KToKKyAgICAgICAgKFRDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChUQ29t
cGlsZXI6OmRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChUQ29tcGlsZXI6OmVuZm9yY2VUaW1p
bmdSZXN0cmljdGlvbnMpOgorICAgICAgICAoVENvbXBpbGVyOjpsaW1pdEV4cHJlc3Npb25Db21w
bGV4aXR5KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oOgorICAgICAg
ICAoQ29uc3RhbnRVbmlvbjo6Q29uc3RhbnRVbmlvbik6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L0RldGVjdENhbGxEZXB0aC5jcHA6IEFkZGVkLgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpG
dW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1
bmN0aW9uTm9kZTo6Z2V0TmFtZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9u
Tm9kZTo6YWRkQ2FsbGVlKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2Rl
OjpkZXRlY3RDYWxsRGVwdGgpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5v
ZGU6OnJlc2V0KToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RGV0ZWN0Q2FsbERlcHRoKToK
KyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6fkRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChE
ZXRlY3RDYWxsRGVwdGg6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0
aDo6Y2hlY2tFeGNlZWRzTWF4RGVwdGgpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpyZXNl
dEZ1bmN0aW9uTm9kZXMpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVw
dGhGb3JGdW5jdGlvbik6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmRldGVjdENhbGxEZXB0
aCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmZpbmRGdW5jdGlvbkJ5TmFtZSk6CisgICAg
ICAgICogc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oOiBBZGRlZC4KKyAgICAgICAgKERl
dGVjdENhbGxEZXB0aDo6Z2V0SW5mb1NpbmspOgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRl
Y3RSZWN1cnNpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRlY3RS
ZWN1cnNpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRGlhZ25vc3RpY3Mu
Y3BwOgorICAgICAgICAoVERpYWdub3N0aWNzOjp3cml0ZUluZm8pOgorICAgICAgICAqIHNyYy9j
b21waWxlci9Gb3JMb29wVW5yb2xsLmNwcDoKKyAgICAgICAgKEZvckxvb3BVbnJvbGw6OmV2YWx1
YXRlSW50Q29uc3RhbnQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9JbmZvU2luay5jcHA6Cisg
ICAgICAgIChUSW5mb1NpbmtCYXNlOjpwcmVmaXgpOgorICAgICAgICAoVEluZm9TaW5rQmFzZTo6
bG9jYXRpb24pOgorICAgICAgICAoVEluZm9TaW5rQmFzZTo6bWVzc2FnZSk6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL0luZm9TaW5rLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0luaXRpYWxp
emUuY3BwOgorICAgICAgICAoVEJ1aWx0SW5zOjppbml0aWFsaXplKToKKyAgICAgICAgKElkZW50
aWZ5QnVpbHRJbnMpOgorICAgICAgICAoSW5pdEV4dGVuc2lvbkJlaGF2aW9yKToKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcDogVXBkYXRlZCBhbmQgYWRkZWQgc3RhdGlj
X2Nhc3RzIHRvIGZpeCBidWlsZCBlcnJvcnMgb24gTWFjLgorICAgICAgICAoVEludGVybWVkaWF0
ZTo6YWRkU3ltYm9sKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hdGgpOgor
ICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKToKKyAgICAgICAgKFRJbnRlcm1lZGlh
dGU6OmFkZEluZGV4KToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0aCk6Cisg
ICAgICAgIChUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcik6CisgICAgICAgIChU
SW50ZXJtZWRpYXRlOjphZGRDb252ZXJzaW9uKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6Omdy
b3dBZ2dyZWdhdGUpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6bWFrZUFnZ3JlZ2F0ZSk6Cisg
ICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24pOgorICAgICAgICAoVEludGVybWVk
aWF0ZTo6YWRkQ29tbWEpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQ29uc3RhbnRVbmlv
bik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKToKKyAgICAgICAgKFRJbnRl
cm1lZGlhdGU6OmFkZExvb3ApOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKToK
KyAgICAgICAgKFRJbnRlcm1VbmFyeTo6cHJvbW90ZSk6CisgICAgICAgIChUSW50ZXJtQmluYXJ5
Ojpwcm9tb3RlKToKKyAgICAgICAgKENvbXBhcmVTdHJ1Y3QpOgorICAgICAgICAoQ29tcGFyZVN0
cnVjdHVyZSk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZCk6CisgICAgICAg
IChUSW50ZXJtZWRpYXRlOjpwcm9tb3RlQ29uc3RhbnRVbmlvbik6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL091dHB1dEdMU0wuY3BwOgorICAgICAgICAoVE91dHB1dEdMU0w6OnZpc2l0U3ltYm9s
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oOgorICAgICAgICAqIHNyYy9j
b21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHA6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6Ondy
aXRlVmFyaWFibGVUeXBlKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6d3JpdGVDb25zdGFu
dFVuaW9uKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCaW5hcnkpOgorICAgICAg
ICAoVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChUT3V0cHV0R0xT
TEJhc2U6OmdldFR5cGVOYW1lKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6aGFzaEZ1bmN0
aW9uTmFtZSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnN0cnVjdERlY2xhcmVkKToKKyAg
ICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6ZGVjbGFyZVN0cnVjdCk6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL091dHB1dEdMU0xCYXNlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEhM
U0wuY3BwOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6Ok91dHB1dEhMU0wpOgorICAgICAgICAo
c2g6Ok91dHB1dEhMU0w6OmhlYWRlcik6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRT
eW1ib2wpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KToKKyAgICAgICAg
KHNoOjpPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChzaDo6T3V0cHV0SExT
TDo6dmlzaXRTZWxlY3Rpb24pOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0TG9vcCk6
CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcCk6CisgICAgICAg
IChzaDo6T3V0cHV0SExTTDo6dHlwZVN0cmluZyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6
aW5pdGlhbGl6ZXIpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKToK
KyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp3cml0ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAo
c2g6Ok91dHB1dEhMU0w6OmRlY29yYXRlRmllbGQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9P
dXRwdXRITFNMLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcDoKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6OnBhcnNlTWF0cml4RmllbGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmVy
cm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Ondhcm5pbmcpOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6YXNzaWduRXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVy
cm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmJpbmFyeU9wRXJyb3IpOgorICAgICAgICAo
VFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250
ZXh0OjpsVmFsdWVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVy
cm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNrKToK
KyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0
Ojpib29sRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJyb3JD
aGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNr
KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKToK
KyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxlcik6CisgICAgICAgIChUUGFy
c2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6
OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJh
eVR5cGVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVj
ayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZWNrKToKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpleHRl
bnNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbik6
CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojppc1ZhcmlhYmxlQnVpbHRJbik6CisgICAgICAgIChU
UGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIpOgorICAgICAgICAoVFBhcnNlQ29udGV4
dDo6YWRkQ29uc3RydWN0b3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0QnVp
bHRJbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QpOgorICAgICAg
ICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWN0b3JOb2RlKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRD
b25zdEFycmF5Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdCk6
CisgICAgICAgIChUUGFyc2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9uKToKKyAgICAg
ICAgKFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKToKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaDoKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OlRQYXJz
ZUNvbnRleHQpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cHJhZ21hKToKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcDoKKyAgICAgICAgKFRQb29sQWxsb2NhdG9yOjphbGxv
Y2F0ZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmg6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwOgorICAgICAgICAoU2hJbml0QnVpbHRJblJlc291cmNl
cyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKFRU
eXBlOjpUVHlwZSk6CisgICAgICAgIChUVHlwZTo6YnVpbGRNYW5nbGVkTmFtZSk6CisgICAgICAg
IChUVHlwZTo6Z2V0T2JqZWN0U2l6ZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpjb250YWluc0Fy
cmF5cyk6CisgICAgICAgIChUU3RydWN0dXJlOjpidWlsZE1hbmdsZWROYW1lKToKKyAgICAgICAg
KFRTdHJ1Y3R1cmU6OmNhbGN1bGF0ZU9iamVjdFNpemUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6
Y2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcpOgorICAgICAgICAoVFN5bWJvbFRhYmxlTGV2ZWw6OnJl
bGF0ZVRvRXh0ZW5zaW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaDoK
KyAgICAgICAgKFRTeW1ib2w6OnJlbGF0ZVRvRXh0ZW5zaW9uKToKKyAgICAgICAgKFRTeW1ib2w6
OmdldEV4dGVuc2lvbik6CisgICAgICAgIChUVmFyaWFibGU6OlRWYXJpYWJsZSk6CisgICAgICAg
IChUVmFyaWFibGU6OnNldFF1YWxpZmllcik6CisgICAgICAgIChUVmFyaWFibGU6OnNoYXJlQ29u
c3RQb2ludGVyKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVHlwZXMuaDogVXBkYXRlZCBhbmQg
Y2hhbmdlZCBlbnVtIGJpdCBmaWVsZHMgdG8gZW51bXMgdG8gZml4IGNvbXBpbGluZyB3aXRoIEdD
Qy4KKyAgICAgICAgKFRGaWVsZDo6VEZpZWxkKToKKyAgICAgICAgKFRGaWVsZDo6dHlwZSk6Cisg
ICAgICAgIChURmllbGQ6Om5hbWUpOgorICAgICAgICAoTmV3UG9vbFRGaWVsZExpc3QpOgorICAg
ICAgICAoVFN0cnVjdHVyZTo6VFN0cnVjdHVyZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpuYW1l
KToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmZpZWxkcyk6CisgICAgICAgIChUU3RydWN0dXJlOjpt
YW5nbGVkTmFtZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpvYmplY3RTaXplKToKKyAgICAgICAg
KFRTdHJ1Y3R1cmU6OmRlZXBlc3ROZXN0aW5nKToKKyAgICAgICAgKFRUeXBlOjpUVHlwZSk6Cisg
ICAgICAgIChUVHlwZTo6Y2xlYXJBcnJheW5lc3MpOgorICAgICAgICAoVFR5cGU6OmdldFN0cnVj
dCk6CisgICAgICAgIChUVHlwZTo6c2V0U3RydWN0KToKKyAgICAgICAgKFRUeXBlOjpnZXRNYW5n
bGVkTmFtZSk6CisgICAgICAgIChUVHlwZTo6Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcpOgorICAg
ICAgICAoVFR5cGU6OmlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cyk6CisgICAgICAgIChUUHVi
bGljVHlwZTo6c2V0QmFzaWMpOgorICAgICAgICAqIHNyYy9jb21waWxlci9WYXJpYWJsZUluZm8u
Y3BwOgorICAgICAgICAoZ2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8pOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoYnVp
bHRpbjEpOgorICAgICAgICAoYnVpbHRpbjIpOgorICAgICAgICAoYnVpbHRpbjMpOgorICAgICAg
ICAoSW5zZXJ0QnVpbHRJbkZ1bmN0aW9uc0NvbW1vbik6CisgICAgICAgIChJbnNlcnRCdWlsdElu
RnVuY3Rpb25zVmVydGV4KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xf
dGFibGUuaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmcubDoKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy55OgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNs
YW5nX2xleC5jcHA6CisgICAgICAgICh5eV9nZXRfcHJldmlvdXNfc3RhdGUpOgorICAgICAgICAo
eXlfdHJ5X05VTF90cmFucyk6CisgICAgICAgICh5eWdldF9sbG9jKToKKyAgICAgICAgKHl5c2V0
X2xsb2MpOgorICAgICAgICAoc3RyaW5nX2lucHV0KToKKyAgICAgICAgKGNoZWNrX3R5cGUpOgor
ICAgICAgICAocmVzZXJ2ZWRfd29yZCk6CisgICAgICAgIChnbHNsYW5nX3NjYW4pOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHA6CisgICAgICAgICh5eXN5bnRheF9lcnJv
cik6CisgICAgICAgICh5eWVycm9yKToKKyAgICAgICAgKGdsc2xhbmdfcGFyc2UpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oOiBSZWFkZGVkIFlZTFRZUEUgZGVmaW5pdGlv
biBhZnRlciBCaXNvbiByZW1vdmVkIGl0LgorICAgICAgICAqIHNyYy9jb21waWxlci9pbnRlcm1P
dXQuY3BwOgorICAgICAgICAoVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRVbmFyeSk6CisgICAgICAg
IChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChUT3V0cHV0VHJh
dmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9pbnRl
cm1lZGlhdGUuaDoKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpUSW50ZXJtTm9kZSk6CisgICAgICAg
IChUSW50ZXJtTm9kZTo6flRJbnRlcm1Ob2RlKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRM
aW5lKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpzZXRMaW5lKToKKyAgICAgICAgKFRJbnRlcm1O
b2RlOjpnZXRBc0xvb3BOb2RlKToKKyAgICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjpnZXRJ
Q29uc3QpOgorICAgICAgICAoVEludGVybUNvbnN0YW50VW5pb246OmdldEZDb25zdCk6CisgICAg
ICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Z2V0QkNvbnN0KToKKyAgICAgICAgKFRJbnRlcm1B
Z2dyZWdhdGU6OlRJbnRlcm1BZ2dyZWdhdGUpOgorICAgICAgICAoVEludGVybVRyYXZlcnNlcjo6
VEludGVybVRyYXZlcnNlcik6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpnZXRNYXhEZXB0
aCk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjppbmNyZW1lbnREZXB0aCk6CisgICAgICAg
ICogc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmg6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL3BhcnNlQ29uc3QuY3BwOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdFN5bWJv
bCk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKFRD
b25zdFRyYXZlcnNlcjo6dmlzaXRVbmFyeSk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZp
c2l0QWdncmVnYXRlKToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRTZWxlY3Rpb24p
OgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24pOgorICAgICAg
ICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdExvb3ApOgorICAgICAgICAoVENvbnN0VHJhdmVyc2Vy
Ojp2aXNpdEJyYW5jaCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjpwYXJzZUNvbnN0VHJlZSk6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNw
cDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGlt
aW5nLmNwcDoKKyAgICAgICAgKFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nOjp2aXNpdFN5bWJv
bCk6CisgICAgICAgICAgICBVcGRhdGVkIEFOR0xFIHRvIHIyNDI2IGFuZCByYW4gQmlzb24uCisK
IDIwMTMtMDYtMTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNv
cnQgYWxsIHRoZSBYY29kZSBwcm9qZWN0IGZpbGVzCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9BTkdMRS5wbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9B
TkdMRS5wbGlzdAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
QU5HTEUucGxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTYsMTMgKzYsMTMgQEAKIAkJPGtleT5PcGVu
U291cmNlUHJvamVjdDwva2V5PgogCQk8c3RyaW5nPkFOR0xFPC9zdHJpbmc+CiAJCTxrZXk+T3Bl
blNvdXJjZVZlcnNpb248L2tleT4KLQkJPHN0cmluZz5yMTY0MTwvc3RyaW5nPgorCQk8c3RyaW5n
PnIyNDI2PC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJjZVdlYnNpdGVVUkw8L2tleT4KIAkJPHN0
cmluZz5odHRwOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0Lzwvc3RyaW5nPgogCQk8
a2V5Pk9wZW5Tb3VyY2VTQ008L2tleT4KLQkJPHN0cmluZz5zdm4gY28gLXIxNjQxIGh0dHA6Ly9h
bmdsZXByb2plY3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLzwvc3RyaW5nPgorCQk8c3RyaW5n
PnN2biBjbyAtcjI0MjYgaHR0cDovL2FuZ2xlcHJvamVjdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1
bmsvPC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJjZUltcG9ydERhdGU8L2tleT4KLQkJPHN0cmlu
Zz4yMDEzLTAxLTA0PC9zdHJpbmc+CisJCTxzdHJpbmc+MjAxMy0wNi0xMzwvc3RyaW5nPgogCQk8
a2V5Pk9wZW5Tb3VyY2VMaWNlbnNlPC9rZXk+CiAJCTxzdHJpbmc+QlNEPC9zdHJpbmc+CiAJCTxr
ZXk+T3BlblNvdXJjZUxpY2Vuc2VGaWxlPC9rZXk+CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAgbGli
QU5HTEVfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0tI
Ui9raHJwbGF0Zm9ybS5oIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2Fu
Z2xldXRpbHMuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VU
eXBlcy5oIFwKKwlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9z
eW1ib2xfdGFibGUuY3BwIFwKKwlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
YnVpbHRpbl9zeW1ib2xfdGFibGUuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggXAogCVNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuR0xTTC5jcHAgXApAQCAtMzksMTAg
KzQxLDEwIEBAIGxpYkFOR0xFX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5oIFwKIAlTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBo
T3V0cHV0LmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdy
YXBoL0RlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBcCisJU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAgXAorCVNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguaCBcCiAJU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwIFwKIAlTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oIFwKLQlT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmNwcCBc
Ci0JU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5o
IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3Bw
IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuaCBc
CiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpcmVjdGl2ZUhhbmRsZXIu
Y3BwIFwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1RhcmdldC5wcmkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTUyNjQ5
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpA
QCAtMTgsNiArMTgsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAKIEhFQURFUlMgKz0gXAogICAgIHNy
Yy9jb21waWxlci9CYXNlVHlwZXMuaCBcCisgICAgc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9s
X3RhYmxlLmggXAogICAgIHNyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIFwK
ICAgICBzcmMvY29tcGlsZXIvQ29tbW9uLmggXAogICAgIHNyYy9jb21waWxlci9Db25zdGFudFVu
aW9uLmggXApAQCAtMjUsOCArMjYsOCBAQCBIRUFERVJTICs9IFwKICAgICBzcmMvY29tcGlsZXIv
ZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmggXAogICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9E
ZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmggXAogICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9EZXBl
bmRlbmN5R3JhcGhPdXRwdXQuaCBcCisgICAgc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5o
IFwKICAgICBzcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oIFwKLSAgICBzcmMvY29t
cGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmggXAogICAgIHNyYy9jb21waWxlci9EaWFnbm9zdGljcy5o
IFwKICAgICBzcmMvY29tcGlsZXIvRGlyZWN0aXZlSGFuZGxlci5oIFwKICAgICBzcmMvY29tcGls
ZXIvRXh0ZW5zaW9uQmVoYXZpb3IuaCBcCkBAIC04NCw2ICs4NSw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIHNyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaAogCiBTT1VS
Q0VTICs9IFwKKyAgICBzcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwIFwKICAg
ICBzcmMvY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIFwKICAgICBzcmMvY29t
cGlsZXIvQ29kZUdlbkdMU0wuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwIFwK
QEAgLTkyLDggKzk0LDggQEAgU09VUkNFUyArPSBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBo
L0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvZGVwZ3JhcGgv
RGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0Rl
cGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBcCisgICAgc3JjL2NvbXBpbGVyL0RldGVjdENhbGxE
ZXB0aC5jcHAgXAogICAgIHNyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNwcCBcCi0g
ICAgc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAgXAogICAgIHNyYy9jb21waWxlci9E
aWFnbm9zdGljcy5jcHAgXAogICAgIHNyYy9jb21waWxlci9EaXJlY3RpdmVIYW5kbGVyLmNwcCBc
CiAgICAgc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwIFwKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOSBAQAog
CQk0OTk1MUMwMzE0QjdBQUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDIxNEI3QUFCMzAwNjBF
OTZFIC8qIGxlbmd0aF9saW1pdHMuaCAqLzsgfTsKIAkJNDk5NTFDMDkxNEI3QUFEODAwNjBFOTZF
IC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAvKiBCdWlsdElu
RnVuY3Rpb25FbXVsYXRvci5jcHAgKi87IH07CiAJCTQ5OTUxQzBBMTRCN0FBRDgwMDYwRTk2RSAv
KiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDYxNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5j
dGlvbkVtdWxhdG9yLmggKi87IH07Ci0JCTQ5OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRl
Y3RSZWN1cnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDk5NTFDMDcxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5jcHAgKi87
IH07Ci0JCTQ5OTUxQzBDMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA4MTRCN0FB
RDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLzsgfTsKKwkJNDk5NTFDMEIxNEI3QUFE
ODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0
Q2FsbERlcHRoLmNwcCAqLzsgfTsKKwkJNDk5NTFDMEMxNEI3QUFEODAwNjBFOTZFIC8qIERldGVj
dENhbGxEZXB0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDk5NTFDMDgxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5oICovOyB9Owor
CQk1Q0NFQjhCNjE3OTA4RUVDMDBGRDk0OTYgLyogYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRUI4QjQxNzkw
OEUzQTAwRkQ5NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcCAqLzsgfTsKIAkJOTBEOUIx
MDIxMkUxMURDQjAwMkQ0MjU1IC8qIENvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMEY5MTJFMTFEQ0IwMDJENDI1NSAvKiBDb21w
aWxlci5jcHAgKi87IH07CiAJCTkwRDlCMTAzMTJFMTFEQ0IwMDJENDI1NSAvKiBFeHRlbnNpb25C
ZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTBEOUIwRkExMkUxMURDQjAwMkQ0MjU1IC8qIEV4dGVuc2lvbkJlaGF2aW9yLmggKi87IH07CiAJ
CTkwRDlCMTA0MTJFMTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5nX2xleC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjBGQjEyRTExRENCMDAyRDQy
NTUgLyogZ2xzbGFuZ19sZXguY3BwICovOyB9OwpAQCAtMTQwLDggKzE0MSwxMCBAQAogCQk0OTk1
MUMwMjE0QjdBQUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBsZW5ndGhfbGltaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdEluRnVuY3Rp
b25FbXVsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OTUxQzA2MTRC
N0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVj
dXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERldGVjdFJl
Y3Vyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5OTUxQzA4MTRCN0FB
RDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGV0ZWN0UmVjdXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGV0ZWN0Q2FsbERlcHRoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk5NTFDMDgxNEI3QUFEODAwNjBFOTZFIC8qIERldGVj
dENhbGxEZXB0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXRlY3RDYWxs
RGVwdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRUI4QjQxNzkwOEUzQTAw
RkQ5NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGJ1
aWx0aW5fc3ltYm9sX3RhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUND
RUI4QjUxNzkwOEUzQTAwRkQ5NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVEN0M1OUM1MTIwOEM2OEIwMDFDODczRSAvKiBBTkdMRS54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBBTkdMRS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUQ3QzU5QzYxMjA4QzY4QjAwMUM4NzNFIC8qIEJhc2UueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QzU5QzcxMjA4QzY4QjAwMUM4NzNFIC8qIERlYnVnUmVsZWFz
ZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2Uu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zOTAsNiArMzkzLDggQEAK
IAkJCQlBMjY1NjgyQzE1OUMyM0UxMDAzOTg1MzkgLyogZGVwZ3JhcGggKi8sCiAJCQkJRkIzOUQy
NDQxMjAwRjM1QTAwMDg4RTY5IC8qIHByZXByb2Nlc3NvciAqLywKIAkJCQlBMjY1NjgzNDE1OUMy
M0UxMDAzOTg1MzkgLyogdGltaW5nICovLAorCQkJCTVDQ0VCOEI0MTc5MDhFM0EwMEZEOTQ5NiAv
KiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgKi8sCisJCQkJNUNDRUI4QjUxNzkwOEUzQTAwRkQ5
NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmggKi8sCiAJCQkJRkIzOUQyMjExMjAwRjM1QTAw
MDg4RTY5IC8qIEJhc2VUeXBlcy5oICovLAogCQkJCTQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAv
KiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgKi8sCiAJCQkJNDk5NTFDMDYxNEI3QUFEODAw
NjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggKi8sCkBAIC0zOTksOCArNDA0LDgg
QEAKIAkJCQlGQjM5RDIyNTEyMDBGMzVBMDAwODhFNjkgLyogQ29uc3RhbnRVbmlvbi5oICovLAog
CQkJCUZCMzlEMjI2MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5jcHAgKi8sCiAJCQkJRkIzOUQy
MjcxMjAwRjM1QTAwMDg4RTY5IC8qIGRlYnVnLmggKi8sCi0JCQkJNDk5NTFDMDcxNEI3QUFEODAw
NjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5jcHAgKi8sCi0JCQkJNDk5NTFDMDgxNEI3QUFEODAw
NjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5oICovLAorCQkJCTQ5OTUxQzA3MTRCN0FBRDgwMDYw
RTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguY3BwICovLAorCQkJCTQ5OTUxQzA4MTRCN0FBRDgwMDYw
RTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguaCAqLywKIAkJCQlBMjY1NjdCMDE1OUMyMUIxMDAzOTg1
MzkgLyogRGlhZ25vc3RpY3MuY3BwICovLAogCQkJCUEyNjU2N0IxMTU5QzIxQjEwMDM5ODUzOSAv
KiBEaWFnbm9zdGljcy5oICovLAogCQkJCUEyNjU2N0IyMTU5QzIxQjEwMDM5ODUzOSAvKiBEaXJl
Y3RpdmVIYW5kbGVyLmNwcCAqLywKQEAgLTUzMCw3ICs1MzUsNyBAQAogCQkJCUEyNjU2ODNBMTU5
QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCUEy
NjU2ODNDMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMjY1NjgzRTE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBo
T3V0cHV0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0OTk1MUMwQzE0QjdBQUQ4MDA2MEU5NkUgLyog
RGV0ZWN0UmVjdXJzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTk1MUMwQzE0QjdBQUQ4MDA2
MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1NjdCQzE1
OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25vc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRG
OEFEMTY5NzRERUQwMDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUEyNjU2N0JFMTU5QzIxQjEwMDM5ODUzOSAvKiBEaXJlY3RpdmVIYW5kbGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTYzNSw3ICs2NDAsNyBAQAogCQkJCUEyNjU2ODNCMTU5QzIzRTEwMDM5ODUz
OSAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2
ODNEMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTI2NTY4M0YxNTlDMjNFMTAwMzk4NTM5IC8qIERlcGVuZGVuY3lHcmFwaFRy
YXZlcnNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ5OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAv
KiBEZXRlY3RSZWN1cnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDk5NTFDMEIxNEI3QUFE
ODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1
NjdCQjE1OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25vc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTI2NEY4QUMxNjk3NERFRDAwNkZBQTVBIC8qIERpYWdub3N0aWNzQmFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBMjY1NjdCRDE1OUMyMUIxMDAzOTg1MzkgLyogRGlyZWN0aXZlSGFuZGxl
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY3MCw2ICs2NzUsNyBAQAogCQkJCUEyNjU2ODQwMTU5
QzIzRTEwMDM5ODUzOSAvKiBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUEyNjU2ODQyMTU5QzIzRTEwMDM5ODUzOSAvKiBSZXN0cmljdFZlcnRleFNo
YWRlclRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MEQ5QjEwOTEyRTExRENCMDAyRDQy
NTUgLyogU2VhcmNoU3ltYm9sLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0VCOEI2MTc5MDhF
RUMwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGQjM5RDJBODEyMDBGMzVBMDAwODhFNjkgLyogU2hhZGVyTGFuZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGQjM5RDJBQTEyMDBGMzVBMDAwODhFNjkgLyogU3ltYm9sVGFibGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTI2NEY4QzExNjk3NERFRDAwNkZBQTVBIC8qIFRva2VuLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5H
L1NoYWRlckxhbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNs
dWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw3ICsyMyw3IEBACiAjZGVmaW5lIENPTVBJTEVSX0VYUE9SVAogI2VuZGlmCiAKLSNp
bmNsdWRlICJraHJwbGF0Zm9ybS5oIgorI2luY2x1ZGUgIktIUi9raHJwbGF0Zm9ybS5oIgogI2lu
Y2x1ZGUgPHN0ZGRlZi5oPgogCiAvLwpAQCAtMTU5LDcgKzE1OSwxMyBAQCB0eXBlZGVmIGVudW0g
ewogICAvLyB2ZWMyMzQsIG9yIG1hdDIzNCB0eXBlLiBUaGUgU2hBcnJheUluZGV4Q2xhbXBpbmdT
dHJhdGVneSBlbnVtLAogICAvLyBzcGVjaWZpZWQgaW4gdGhlIFNoQnVpbHRJblJlc291cmNlcyB3
aGVuIGNvbnN0cnVjdGluZyB0aGUKICAgLy8gY29tcGlsZXIsIHNlbGVjdHMgdGhlIHN0cmF0ZWd5
IGZvciB0aGUgY2xhbXBpbmcgaW1wbGVtZW50YXRpb24uCi0gIFNIX0NMQU1QX0lORElSRUNUX0FS
UkFZX0JPVU5EUyA9IDB4MTAwMAorICBTSF9DTEFNUF9JTkRJUkVDVF9BUlJBWV9CT1VORFMgPSAw
eDEwMDAsCisKKyAgLy8gVGhpcyBmbGFnIGxpbWl0cyB0aGUgY29tcGxleGl0eSBvZiBhbiBleHBy
ZXNzaW9uLgorICBTSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkgPSAweDIwMDAsCisKKyAg
Ly8gVGhpcyBmbGFnIGxpbWl0cyB0aGUgZGVwdGggb2YgdGhlIGNhbGwgc3RhY2suCisgIFNIX0xJ
TUlUX0NBTExfU1RBQ0tfREVQVEggPSAweDQwMDAsCiB9IFNoQ29tcGlsZU9wdGlvbnM7CiAKIC8v
IERlZmluZXMgYWx0ZXJuYXRlIHN0cmF0ZWdpZXMgZm9yIGltcGxlbWVudGluZyBhcnJheSBpbmRl
eCBjbGFtcGluZy4KQEAgLTIwOSw2ICsyMTUsNyBAQCB0eXBlZGVmIHN0cnVjdAogICAgIGludCBP
RVNfRUdMX2ltYWdlX2V4dGVybmFsOwogICAgIGludCBBUkJfdGV4dHVyZV9yZWN0YW5nbGU7CiAg
ICAgaW50IEVYVF9kcmF3X2J1ZmZlcnM7CisgICAgaW50IEVYVF9mcmFnX2RlcHRoOwogCiAgICAg
Ly8gU2V0IHRvIDEgaWYgaGlnaHAgcHJlY2lzaW9uIGlzIHN1cHBvcnRlZCBpbiB0aGUgZnJhZ21l
bnQgbGFuZ3VhZ2UuCiAgICAgLy8gRGVmYXVsdCBpcyAwLgpAQCAtMjIyLDYgKzIyOSwxMiBAQCB0
eXBlZGVmIHN0cnVjdAogICAgIC8vIFNlbGVjdHMgYSBzdHJhdGVneSB0byB1c2Ugd2hlbiBpbXBs
ZW1lbnRpbmcgYXJyYXkgaW5kZXggY2xhbXBpbmcuCiAgICAgLy8gRGVmYXVsdCBpcyBTSF9DTEFN
UF9XSVRIX0NMQU1QX0lOVFJJTlNJQy4KICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5
IEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5OworCisgICAgLy8gVGhlIG1heGltdW0gY29tcGxl
eGl0eSBhbiBleHByZXNzaW9uIGNhbiBiZS4KKyAgICBpbnQgTWF4RXhwcmVzc2lvbkNvbXBsZXhp
dHk7CisKKyAgICAvLyBUaGUgbWF4aW11bSBkZXB0aCBhIGNhbGwgc3RhY2sgY2FuIGJlLgorICAg
IGludCBNYXhDYWxsU3RhY2tEZXB0aDsKIH0gU2hCdWlsdEluUmVzb3VyY2VzOwogCiAvLwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CYXNlVHlwZXMu
aAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0Jhc2VUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCwxMCArOTAsNiBAQCBlbnVtIFRR
dWFsaWZpZXIKICAgICBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAgICAvLyB2ZXJ0ZXggc2hhZGVy
cyBvbmx5ICByZWFkL3dyaXRlCiAgICAgRXZxVW5pZm9ybSwgICAgICAgLy8gUmVhZG9ubHksIHZl
cnRleCBhbmQgZnJhZ21lbnQKIAotICAgIC8vIHBhY2svdW5wYWNrIGlucHV0IGFuZCBvdXRwdXQK
LSAgICBFdnFJbnB1dCwKLSAgICBFdnFPdXRwdXQsCi0KICAgICAvLyBwYXJhbWV0ZXJzCiAgICAg
RXZxSW4sCiAgICAgRXZxT3V0LApAQCAtMTEyLDYgKzEwOCw3IEBAIGVudW0gVFF1YWxpZmllcgog
ICAgIC8vIGJ1aWx0LWlucyB3cml0dGVuIGJ5IGZyYWdtZW50IHNoYWRlcgogICAgIEV2cUZyYWdD
b2xvciwKICAgICBFdnFGcmFnRGF0YSwKKyAgICBFdnFGcmFnRGVwdGgsCiAKICAgICAvLyBlbmQg
b2YgbGlzdAogICAgIEV2cUxhc3QKQEAgLTEzNywxNCArMTM0LDEzIEBAIGlubGluZSBjb25zdCBj
aGFyKiBnZXRRdWFsaWZpZXJTdHJpbmcoVFEKICAgICBjYXNlIEV2cUluOiAgICAgICAgICAgICBy
ZXR1cm4gImluIjsgICAgICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFPdXQ6ICAgICAgICAg
ICAgcmV0dXJuICJvdXQiOyAgICAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxSW5PdXQ6ICAg
ICAgICAgIHJldHVybiAiaW5vdXQiOyAgICAgICAgICBicmVhazsKLSAgICBjYXNlIEV2cUlucHV0
OiAgICAgICAgICByZXR1cm4gImlucHV0IjsgICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFP
dXRwdXQ6ICAgICAgICAgcmV0dXJuICJvdXRwdXQiOyAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
RXZxUG9zaXRpb246ICAgICAgIHJldHVybiAiUG9zaXRpb24iOyAgICAgICBicmVhazsKICAgICBj
YXNlIEV2cVBvaW50U2l6ZTogICAgICByZXR1cm4gIlBvaW50U2l6ZSI7ICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBFdnFGcmFnQ29vcmQ6ICAgICAgcmV0dXJuICJGcmFnQ29vcmQiOyAgICAgIGJyZWFr
OwogICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6ICAgIHJldHVybiAiRnJvbnRGYWNpbmciOyAgICBi
cmVhazsKICAgICBjYXNlIEV2cUZyYWdDb2xvcjogICAgICByZXR1cm4gIkZyYWdDb2xvciI7ICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcmFnRGF0YTogICAgICAgcmV0dXJuICJGcmFnRGF0YSI7
ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdnFGcmFnRGVwdGg6ICAgICAgcmV0dXJuICJGcmFnRGVw
dGgiOyAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgcmV0dXJuICJ1bmtu
b3duIHF1YWxpZmllciI7CiAgICAgfQogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9Db21tb24uaAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NCwyNCArMTQsMTIgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL1Bvb2xBbGxvYy5oIgogCi0vLyBX
ZSBuZWVkIHR3byBwaWVjZXMgb2YgaW5mb3JtYXRpb24gdG8gcmVwb3J0IGVycm9ycy93YXJuaW5n
cyAtIHN0cmluZyBhbmQKLS8vIGxpbmUgbnVtYmVyLiBXZSBlbmNvZGUgdGhlc2UgaW50byBhIHNp
bmdsZSBpbnQgc28gdGhhdCBpdCBjYW4gYmUgZWFzaWx5Ci0vLyBpbmNyZW1lbnRlZC9kZWNyZW1l
bnRlZCBieSBsZXhlci4gVGhlIHJpZ2h0IFNPVVJDRV9MT0NfTElORV9TSVpFIGJpdHMgc3RvcmUK
LS8vIGxpbmUgbnVtYmVyIHdoaWxlIHRoZSByZXN0IHN0b3JlIHRoZSBzdHJpbmcgbnVtYmVyLiBT
aW5jZSB0aGUgc2hhZGVycyBhcmUKLS8vIHVzdWFsbHkgc21hbGwsIHdlIHNob3VsZCBub3QgcnVu
IG91dCBvZiBtZW1vcnkuIFNPVVJDRV9MT0NfTElORV9TSVpFCi0vLyBjYW4gYmUgaW5jcmVhc2Vk
IHRvIGFsbGV2aWF0ZSB0aGlzIGlzc3VlLgotdHlwZWRlZiBpbnQgVFNvdXJjZUxvYzsKLWNvbnN0
IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfU0laRSA9IDE2OyAgLy8gaW4gYml0cy4KLWNv
bnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfTUFTSyA9ICgxIDw8IFNPVVJDRV9MT0Nf
TElORV9TSVpFKSAtIDE7Ci0KLWlubGluZSBUU291cmNlTG9jIEVuY29kZVNvdXJjZUxvYyhpbnQg
c3RyaW5nLCBpbnQgbGluZSkgewotICAgIHJldHVybiAoc3RyaW5nIDw8IFNPVVJDRV9MT0NfTElO
RV9TSVpFKSB8IChsaW5lICYgU09VUkNFX0xPQ19MSU5FX01BU0spOwotfQotCi1pbmxpbmUgdm9p
ZCBEZWNvZGVTb3VyY2VMb2MoVFNvdXJjZUxvYyBsb2MsIGludCogc3RyaW5nLCBpbnQqIGxpbmUp
IHsKLSAgICBpZiAoc3RyaW5nKSAqc3RyaW5nID0gbG9jID4+IFNPVVJDRV9MT0NfTElORV9TSVpF
OwotICAgIGlmIChsaW5lKSAqbGluZSA9IGxvYyAmIFNPVVJDRV9MT0NfTElORV9NQVNLOwotfQor
c3RydWN0IFRTb3VyY2VMb2MgeworICAgIGludCBmaXJzdF9maWxlOworICAgIGludCBmaXJzdF9s
aW5lOworICAgIGludCBsYXN0X2ZpbGU7CisgICAgaW50IGxhc3RfbGluZTsKK307CiAKIC8vCiAv
LyBQdXQgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSBpbiBiYXNlIGNsYXNzZXMgdG8gbWFrZSB0
aGVtIHVzZSB0aGlzIHNjaGVtZS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9Db21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNCw4ICs0LDkgQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCisj
aW5jbHVkZSAiY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaCIKICNpbmNsdWRlICJjb21w
aWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIgotI2luY2x1ZGUgImNvbXBpbGVyL0RldGVj
dFJlY3Vyc2lvbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oIgogI2lu
Y2x1ZGUgImNvbXBpbGVyL0Zvckxvb3BVbnJvbGwuaCIKICNpbmNsdWRlICJjb21waWxlci9Jbml0
aWFsaXplLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oIgpA
QCAtNjIsMTEgKzYzLDI2IEBAIGJvb2wgSW5pdGlhbGl6ZVN5bWJvbFRhYmxlKAogCiAgICAgICAg
IGlmIChQYVBhcnNlU3RyaW5ncygxLCAmYnVpbHRJblNoYWRlcnMsICZidWlsdEluTGVuZ3Rocywg
JnBhcnNlQ29udGV4dCkgIT0gMCkKICAgICAgICAgewotICAgICAgICAgICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5hYmxlIHRvIHBhcnNlIGJ1aWx0LWlu
cyIpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEludGVybmFsRXJy
b3IpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiVW5hYmxlIHRvIHBhcnNlIGJ1aWx0
LWlucyI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAKKwor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgU0hfRlJBR01FTlRfU0hBREVSOgorICAgICAg
ICBJbnNlcnRCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNlcywgJnN5bWJvbFRhYmxlKTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNIX1ZFUlRFWF9TSEFERVI6CisgICAgICAgIElu
c2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24ocmVzb3VyY2VzLCAmc3ltYm9sVGFibGUpOworICAg
ICAgICBJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KHJlc291cmNlcywgJnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UgJiYgIkxhbmd1
YWdlIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICB9CisKICAgICBJZGVudGlmeUJ1aWx0SW5zKHR5cGUs
IHNwZWMsIHJlc291cmNlcywgc3ltYm9sVGFibGUpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0x
MDMsNiArMTE5LDkgQEAgVFNoSGFuZGxlQmFzZTo6flRTaEhhbmRsZUJhc2UoKSB7CiBUQ29tcGls
ZXI6OlRDb21waWxlcihTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMpCiAgICAg
OiBzaGFkZXJUeXBlKHR5cGUpLAogICAgICAgc2hhZGVyU3BlYyhzcGVjKSwKKyAgICAgIG1heFVu
aWZvcm1WZWN0b3JzKDApLAorICAgICAgbWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkoMCksCisgICAg
ICBtYXhDYWxsU3RhY2tEZXB0aCgwKSwKICAgICAgIGZyYWdtZW50UHJlY2lzaW9uSGlnaChmYWxz
ZSksCiAgICAgICBjbGFtcGluZ1N0cmF0ZWd5KFNIX0NMQU1QX1dJVEhfQ0xBTVBfSU5UUklOU0lD
KSwKICAgICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKHR5cGUpCkBAIC0xMjEsMTEgKzE0MCwx
NCBAQCBib29sIFRDb21waWxlcjo6SW5pdChjb25zdCBTaEJ1aWx0SW5SZXNvCiAgICAgbWF4VW5p
Zm9ybVZlY3RvcnMgPSAoc2hhZGVyVHlwZSA9PSBTSF9WRVJURVhfU0hBREVSKSA/CiAgICAgICAg
IHJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA6CiAgICAgICAgIHJlc291cmNlcy5N
YXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzOworICAgIG1heEV4cHJlc3Npb25Db21wbGV4aXR5ID0g
cmVzb3VyY2VzLk1heEV4cHJlc3Npb25Db21wbGV4aXR5OworICAgIG1heENhbGxTdGFja0RlcHRo
ID0gcmVzb3VyY2VzLk1heENhbGxTdGFja0RlcHRoOwogICAgIFRTY29wZWRQb29sQWxsb2NhdG9y
IHNjb3BlZEFsbG9jKCZhbGxvY2F0b3IsIGZhbHNlKTsKIAogICAgIC8vIEdlbmVyYXRlIGJ1aWx0
LWluIHN5bWJvbCB0YWJsZS4KICAgICBpZiAoIUluaXRCdWlsdEluU3ltYm9sVGFibGUocmVzb3Vy
Y2VzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgSW5pdEV4dGVuc2lvbkJlaGF2aW9y
KHJlc291cmNlcywgZXh0ZW5zaW9uQmVoYXZpb3IpOwogICAgIGZyYWdtZW50UHJlY2lzaW9uSGln
aCA9IHJlc291cmNlcy5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPT0gMTsKIApAQCAtMTcwLDggKzE5
MiwxMCBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgLy8g
V2UgcHJlc2VydmUgc3ltYm9scyBhdCB0aGUgYnVpbHQtaW4gbGV2ZWwgZnJvbSBjb21waWxlLXRv
LWNvbXBpbGUuCiAgICAgLy8gU3RhcnQgcHVzaGluZyB0aGUgdXNlci1kZWZpbmVkIHN5bWJvbHMg
YXQgZ2xvYmFsIGxldmVsLgogICAgIHN5bWJvbFRhYmxlLnB1c2goKTsKLSAgICBpZiAoIXN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSkKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCAiV3Jvbmcgc3ltYm9sIHRhYmxlIGxldmVsIik7CisgICAgaWYg
KCFzeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkpIHsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5w
cmVmaXgoRVByZWZpeEludGVybmFsRXJyb3IpOworICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJX
cm9uZyBzeW1ib2wgdGFibGUgbGV2ZWwiOworICAgIH0KIAogICAgIC8vIFBhcnNlIHNoYWRlci4K
ICAgICBib29sIHN1Y2Nlc3MgPQpAQCAtMTgyLDcgKzIwNiw3IEBAIGJvb2wgVENvbXBpbGVyOjpj
b21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAgICAgc3VjY2VzcyA9IGludGVybWVkaWF0ZS5w
b3N0UHJvY2Vzcyhyb290KTsKIAogICAgICAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgICAgIHN1
Y2Nlc3MgPSBkZXRlY3RSZWN1cnNpb24ocm9vdCk7CisgICAgICAgICAgICBzdWNjZXNzID0gZGV0
ZWN0Q2FsbERlcHRoKHJvb3QsIGluZm9TaW5rLCAoY29tcGlsZU9wdGlvbnMgJiBTSF9MSU1JVF9D
QUxMX1NUQUNLX0RFUFRIKSAhPSAwKTsKIAogICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29tcGls
ZU9wdGlvbnMgJiBTSF9WQUxJREFURV9MT09QX0lOREVYSU5HKSkKICAgICAgICAgICAgIHN1Y2Nl
c3MgPSB2YWxpZGF0ZUxpbWl0YXRpb25zKHJvb3QpOwpAQCAtMjA1LDYgKzIyOSwxMCBAQCBib29s
IFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgIGlmIChzdWNjZXNz
ICYmIChjb21waWxlT3B0aW9ucyAmIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUykpCiAg
ICAgICAgICAgICBhcnJheUJvdW5kc0NsYW1wZXIuTWFya0luZGlyZWN0QXJyYXlCb3VuZHNGb3JD
bGFtcGluZyhyb290KTsKIAorICAgICAgICAvLyBEaXNhbGxvdyBleHByZXNzaW9ucyBkZWVtZWQg
dG9vIGNvbXBsZXguCisgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNI
X0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSkpCisgICAgICAgICAgICBzdWNjZXNzID0gbGlt
aXRFeHByZXNzaW9uQ29tcGxleGl0eShyb290KTsKKwogICAgICAgICAvLyBDYWxsIG1hcExvbmdW
YXJpYWJsZU5hbWVzKCkgYmVmb3JlIGNvbGxlY3RBdHRyaWJzVW5pZm9ybXMoKSBzbyBpbgogICAg
ICAgICAvLyBjb2xsZWN0QXR0cmlic1VuaWZvcm1zKCkgd2UgYWxyZWFkeSBoYXZlIHRoZSBtYXBw
ZWQgc3ltYm9sIG5hbWVzIGFuZAogICAgICAgICAvLyB3ZSBjb3VsZCBjb21wb3NpdGUgbWFwcGVk
IGFuZCBvcmlnaW5hbCB2YXJpYWJsZSBuYW1lcy4KQEAgLTIxNyw3ICsyNDUsOCBAQCBib29sIFRD
b21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgICAgICBpZiAoY29tcGls
ZU9wdGlvbnMgJiBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05TKSB7CiAgICAgICAgICAg
ICAgICAgc3VjY2VzcyA9IGVuZm9yY2VQYWNraW5nUmVzdHJpY3Rpb25zKCk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4RXJyb3IsICJ0b28gbWFueSB1bmlmb3JtcyIpOworICAgICAgICAgICAg
ICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAg
ICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJ0b28gbWFueSB1bmlmb3JtcyI7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNjMsMTggKzI5MiwyNCBAQCB2
b2lkIFRDb21waWxlcjo6Y2xlYXJSZXN1bHRzKCkKICAgICBuYW1lTWFwLmNsZWFyKCk7CiB9CiAK
LWJvb2wgVENvbXBpbGVyOjpkZXRlY3RSZWN1cnNpb24oVEludGVybU5vZGUqIHJvb3QpCitib29s
IFRDb21waWxlcjo6ZGV0ZWN0Q2FsbERlcHRoKFRJbnRlcm1Ob2RlKiByb290LCBUSW5mb1Npbmsm
IGluZm9TaW5rLCBib29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgpCiB7Ci0gICAgRGV0ZWN0UmVjdXJz
aW9uIGRldGVjdDsKKyAgICBEZXRlY3RDYWxsRGVwdGggZGV0ZWN0KGluZm9TaW5rLCBsaW1pdENh
bGxTdGFja0RlcHRoLCBtYXhDYWxsU3RhY2tEZXB0aCk7CiAgICAgcm9vdC0+dHJhdmVyc2UoJmRl
dGVjdCk7Ci0gICAgc3dpdGNoIChkZXRlY3QuZGV0ZWN0UmVjdXJzaW9uKCkpIHsKLSAgICAgICAg
Y2FzZSBEZXRlY3RSZWN1cnNpb246OmtFcnJvck5vbmU6CisgICAgc3dpdGNoIChkZXRlY3QuZGV0
ZWN0Q2FsbERlcHRoKCkpIHsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvck5v
bmU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBEZXRlY3RSZWN1cnNp
b246OmtFcnJvck1pc3NpbmdNYWluOgotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhFcnJvciwgIk1pc3NpbmcgbWFpbigpIik7CisgICAgICAgIGNhc2UgRGV0ZWN0Q2Fs
bERlcHRoOjprRXJyb3JNaXNzaW5nTWFpbjoKKyAgICAgICAgICAgIGluZm9TaW5rLmluZm8ucHJl
Zml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJNaXNzaW5n
IG1haW4oKSI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgRGV0ZWN0
UmVjdXJzaW9uOjprRXJyb3JSZWN1cnNpb246Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEVycm9yLCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVkIik7CisgICAg
ICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JSZWN1cnNpb246CisgICAgICAgICAgICBp
bmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAgaW5mb1Npbmsu
aW5mbyA8PCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVkIjsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvck1heERlcHRoRXhj
ZWVkZWQ6CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOwor
ICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24gY2FsbCBzdGFjayB0b28gZGVl
cCI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOwpAQCAtMzIwLDYgKzM1NSwyOCBAQCBib29sIFRDb21waWxlcjo6
ZW5mb3JjZVRpbWluZ1Jlc3RyaWN0aW9uCiAgICAgfQogfQogCitib29sIFRDb21waWxlcjo6bGlt
aXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCkKK3sKKyAgICBUSW50ZXJt
VHJhdmVyc2VyIHRyYXZlcnNlcjsKKyAgICByb290LT50cmF2ZXJzZSgmdHJhdmVyc2VyKTsKKyAg
ICBURGVwZW5kZW5jeUdyYXBoIGdyYXBoKHJvb3QpOworCisgICAgZm9yIChURnVuY3Rpb25DYWxs
VmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZ3JhcGguYmVnaW5Vc2VyRGVmaW5lZEZ1bmN0
aW9uQ2FsbHMoKTsKKyAgICAgICAgIGl0ZXIgIT0gZ3JhcGguZW5kVXNlckRlZmluZWRGdW5jdGlv
bkNhbGxzKCk7CisgICAgICAgICArK2l0ZXIpCisgICAgeworICAgICAgICBUR3JhcGhGdW5jdGlv
bkNhbGwqIHNhbXBsZXJTeW1ib2wgPSAqaXRlcjsKKyAgICAgICAgVERlcGVuZGVuY3lHcmFwaFRy
YXZlcnNlciBncmFwaFRyYXZlcnNlcjsKKyAgICAgICAgc2FtcGxlclN5bWJvbC0+dHJhdmVyc2Uo
JmdyYXBoVHJhdmVyc2VyKTsKKyAgICB9CisKKyAgICBpZiAodHJhdmVyc2VyLmdldE1heERlcHRo
KCkgPiBtYXhFeHByZXNzaW9uQ29tcGxleGl0eSkgeworICAgICAgICBpbmZvU2luay5pbmZvIDw8
ICJFeHByZXNzaW9uIHRvbyBjb21wbGV4LiI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgVENvbXBpbGVyOjplbmZvcmNlRnJhZ21lbnRT
aGFkZXJUaW1pbmdSZXN0cmljdGlvbnMoY29uc3QgVERlcGVuZGVuY3lHcmFwaCYgZ3JhcGgpCiB7
CiAgICAgUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZyByZXN0cmljdG9yKGluZm9TaW5rLmlu
Zm8pOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbnN0YW50
VW5pb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvQ29uc3RhbnRVbmlvbi5oCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDIt
MjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xNCw2
ICsxNCw3IEBAIHB1YmxpYzoKICAgICBDb25zdGFudFVuaW9uKCkKICAgICB7CiAgICAgICAgIGlD
b25zdCA9IDA7CisgICAgICAgIHR5cGUgPSBFYnRWb2lkOwogICAgIH0KIAogICAgIFBPT0xfQUxM
T0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikgICAgICAgIApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENh
bGxEZXB0aC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4
NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL0RldGVjdENhbGxE
ZXB0aC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCisKK0RldGVjdENhbGxEZXB0
aDo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5hbWUpCisgICAg
OiBuYW1lKGZuYW1lKSwKKyAgICAgIHZpc2l0KFByZVZpc2l0KQoreworfQorCitjb25zdCBUU3Ry
aW5nJiBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG5hbWU7Cit9CisKK3ZvaWQgRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6
OmFkZENhbGxlZSgKKyAgICBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZSogY2FsbGVlKQor
eworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsraSkgeworICAg
ICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCisgICAgICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Cit9CisKK2ludCBEZXRlY3RDYWxsRGVw
dGg6OkZ1bmN0aW9uTm9kZTo6ZGV0ZWN0Q2FsbERlcHRoKERldGVjdENhbGxEZXB0aCogZGV0ZWN0
Q2FsbERlcHRoLCBpbnQgZGVwdGgpCit7CisgICAgQVNTRVJUKHZpc2l0ID09IFByZVZpc2l0KTsK
KyAgICBBU1NFUlQoZGV0ZWN0Q2FsbERlcHRoKTsKKworICAgIGludCBtYXhEZXB0aCA9IGRlcHRo
OworICAgIHZpc2l0ID0gSW5WaXNpdDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxl
ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgc3dpdGNoIChjYWxsZWVzW2ldLT52aXNpdCkgewor
ICAgICAgICAgICAgY2FzZSBJblZpc2l0OgorICAgICAgICAgICAgICAgIC8vIGN5Y2xlIGRldGVj
dGVkLCBpLmUuLCByZWN1cnNpb24gZGV0ZWN0ZWQuCisgICAgICAgICAgICAgICAgcmV0dXJuIGtJ
bmZpbml0ZUNhbGxEZXB0aDsKKyAgICAgICAgICAgIGNhc2UgUG9zdFZpc2l0OgorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQcmVWaXNpdDogeworICAgICAgICAgICAg
ICAgIC8vIENoZWNrIGJlZm9yZSB3ZSByZWN1cnNlIHNvIHdlIGRvbid0IGdvIHRvbyBkZXB0aAor
ICAgICAgICAgICAgICAgIGlmIChkZXRlY3RDYWxsRGVwdGgtPmNoZWNrRXhjZWVkc01heERlcHRo
KGRlcHRoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlcHRoOworICAgICAgICAgICAg
ICAgIGludCBjYWxsRGVwdGggPSBjYWxsZWVzW2ldLT5kZXRlY3RDYWxsRGVwdGgoZGV0ZWN0Q2Fs
bERlcHRoLCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIGFmdGVyIHdlIHJl
Y3Vyc2Ugc28gd2UgY2FuIGV4aXQgaW1tZWRpYXRlbHkgYW5kIHByb3ZpZGUgaW5mby4KKyAgICAg
ICAgICAgICAgICBpZiAoZGV0ZWN0Q2FsbERlcHRoLT5jaGVja0V4Y2VlZHNNYXhEZXB0aChjYWxs
RGVwdGgpKSB7CisgICAgICAgICAgICAgICAgICAgIGRldGVjdENhbGxEZXB0aC0+Z2V0SW5mb1Np
bmsoKS5pbmZvIDw8ICI8LSIgPDwgY2FsbGVlc1tpXS0+Z2V0TmFtZSgpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gY2FsbERlcHRoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBtYXhEZXB0aCA9IHN0ZDo6bWF4KGNhbGxEZXB0aCwgbWF4RGVwdGgpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorICAgIHZpc2l0ID0gUG9zdFZpc2l0OworICAgIHJldHVybiBtYXhEZXB0aDsK
K30KKwordm9pZCBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6cmVzZXQoKQoreworICAg
IHZpc2l0ID0gUHJlVmlzaXQ7Cit9CisKK0RldGVjdENhbGxEZXB0aDo6RGV0ZWN0Q2FsbERlcHRo
KFRJbmZvU2luayYgaW5mb1NpbmssIGJvb2wgbGltaXRDYWxsU3RhY2tEZXB0aCwgaW50IG1heENh
bGxTdGFja0RlcHRoKQorICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgdHJ1ZSwg
ZmFsc2UpLAorICAgICAgY3VycmVudEZ1bmN0aW9uKE5VTEwpLAorICAgICAgaW5mb1NpbmsoaW5m
b1NpbmspLAorICAgICAgbWF4RGVwdGgobGltaXRDYWxsU3RhY2tEZXB0aCA/IG1heENhbGxTdGFj
a0RlcHRoIDogRnVuY3Rpb25Ob2RlOjprSW5maW5pdGVDYWxsRGVwdGgpCit7Cit9CisKK0RldGVj
dENhbGxEZXB0aDo6fkRldGVjdENhbGxEZXB0aCgpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRlbGV0ZSBmdW5jdGlvbnNbaV07
Cit9CisKK2Jvb2wgRGV0ZWN0Q2FsbERlcHRoOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwg
VEludGVybUFnZ3JlZ2F0ZSogbm9kZSkKK3sKKyAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisg
ICAgeworICAgICAgICBjYXNlIEVPcFByb3RvdHlwZToKKyAgICAgICAgICAgIC8vIEZ1bmN0aW9u
IGRlY2xhcmF0aW9uLgorICAgICAgICAgICAgLy8gRG9uJ3QgYWRkIEZ1bmN0aW9uTm9kZSBoZXJl
IGJlY2F1c2Ugbm9kZS0+Z2V0TmFtZSgpIGlzIHRoZQorICAgICAgICAgICAgLy8gdW5tYW5nbGVk
IGZ1bmN0aW9uIG5hbWUuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BGdW5j
dGlvbjogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KKyAgICAgICAgICAg
IGlmICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlv
biA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAgICAg
IGlmIChjdXJyZW50RnVuY3Rpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50RnVuY3Rpb24gPSBuZXcgRnVuY3Rpb25Ob2RlKG5vZGUtPmdldE5hbWUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoX2JhY2soY3VycmVudEZ1bmN0aW9uKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKHZpc2l0ID09IFBvc3RWaXNpdCkg
eworICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9IE5VTEw7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEVPcEZ1bmN0aW9u
Q2FsbDogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gY2FsbC4KKyAgICAgICAgICAgIGlmICh2
aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIEZ1bmN0aW9uTm9kZSogZnVuYyA9
IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgIGlm
IChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG5ldyBGdW5jdGlv
bk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLnB1
c2hfYmFjayhmdW5jKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGN1
cnJlbnRGdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uLT5hZGRD
YWxsZWUoZnVuYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCitib29sIERldGVjdENhbGxEZXB0aDo6Y2hlY2tFeGNlZWRzTWF4RGVwdGgo
aW50IGRlcHRoKQoreworICAgIHJldHVybiBkZXB0aCA+PSBtYXhEZXB0aDsKK30KKwordm9pZCBE
ZXRlY3RDYWxsRGVwdGg6OnJlc2V0RnVuY3Rpb25Ob2RlcygpCit7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZnVuY3Rpb25zW2ld
LT5yZXNldCgpOworICAgIH0KK30KKworRGV0ZWN0Q2FsbERlcHRoOjpFcnJvckNvZGUgRGV0ZWN0
Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbihGdW5jdGlvbk5vZGUqIGZ1bmMp
Cit7CisgICAgY3VycmVudEZ1bmN0aW9uID0gTlVMTDsKKyAgICByZXNldEZ1bmN0aW9uTm9kZXMo
KTsKKworICAgIGludCBtYXhDYWxsRGVwdGggPSBmdW5jLT5kZXRlY3RDYWxsRGVwdGgodGhpcywg
MSk7CisKKyAgICBpZiAobWF4Q2FsbERlcHRoID09IEZ1bmN0aW9uTm9kZTo6a0luZmluaXRlQ2Fs
bERlcHRoKQorICAgICAgICByZXR1cm4ga0Vycm9yUmVjdXJzaW9uOworCisgICAgaWYgKG1heENh
bGxEZXB0aCA+PSBtYXhEZXB0aCkKKyAgICAgICAgcmV0dXJuIGtFcnJvck1heERlcHRoRXhjZWVk
ZWQ7CisKKyAgICByZXR1cm4ga0Vycm9yTm9uZTsKK30KKworRGV0ZWN0Q2FsbERlcHRoOjpFcnJv
ckNvZGUgRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGgoKQoreworICAgIGlmIChtYXhE
ZXB0aCAhPSBGdW5jdGlvbk5vZGU6OmtJbmZpbml0ZUNhbGxEZXB0aCkgeworICAgICAgICAvLyBD
aGVjayBhbGwgZnVuY3Rpb25zIGJlY2F1c2UgdGhlIGRyaXZlciBtYXkgZmFpbCBvbiB0aGVtCisg
ICAgICAgIC8vIFRPRE86IEJlZm9yZSBkZXRlY3RpbmdSZWN1cnNpb24sIHN0cmlwIHVudXNlZCBm
dW5jdGlvbnMuCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBFcnJvckNvZGUgZXJyb3IgPSBkZXRlY3RDYWxsRGVwdGhG
b3JGdW5jdGlvbihmdW5jdGlvbnNbaV0pOworICAgICAgICAgICAgaWYgKGVycm9yICE9IGtFcnJv
ck5vbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICB9CisgICAgfSBl
bHNlIHsKKyAgICAgICAgRnVuY3Rpb25Ob2RlKiBtYWluID0gZmluZEZ1bmN0aW9uQnlOYW1lKCJt
YWluKCIpOworICAgICAgICBpZiAobWFpbiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIGtF
cnJvck1pc3NpbmdNYWluOworCisgICAgICAgIHJldHVybiBkZXRlY3RDYWxsRGVwdGhGb3JGdW5j
dGlvbihtYWluKTsKKyAgICB9CisKKyAgICByZXR1cm4ga0Vycm9yTm9uZTsKK30KKworRGV0ZWN0
Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGUqIERldGVjdENhbGxEZXB0aDo6ZmluZEZ1bmN0aW9uQnlO
YW1lKAorICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uc1tpXS0+
Z2V0TmFtZSgpID09IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25zW2ldOworICAg
IH0KKyAgICByZXR1cm4gTlVMTDsKK30KKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGgu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisj
aWZuZGVmIENPTVBJTEVSX0RFVEVDVF9SRUNVUlNJT05fSF8KKyNkZWZpbmUgQ09NUElMRVJfREVU
RUNUX1JFQ1VSU0lPTl9IXworCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisKKyNp
bmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKKyNp
bmNsdWRlICJjb21waWxlci9WYXJpYWJsZUluZm8uaCIKKworY2xhc3MgVEluZm9TaW5rOworCisv
LyBUcmF2ZXJzZXMgaW50ZXJtZWRpYXRlIHRyZWUgdG8gZGV0ZWN0IGZ1bmN0aW9uIHJlY3Vyc2lv
bi4KK2NsYXNzIERldGVjdENhbGxEZXB0aCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyIHsKK3B1
YmxpYzoKKyAgICBlbnVtIEVycm9yQ29kZSB7CisgICAgICAgIGtFcnJvck1pc3NpbmdNYWluLAor
ICAgICAgICBrRXJyb3JSZWN1cnNpb24sCisgICAgICAgIGtFcnJvck1heERlcHRoRXhjZWVkZWQs
CisgICAgICAgIGtFcnJvck5vbmUKKyAgICB9OworCisgICAgRGV0ZWN0Q2FsbERlcHRoKFRJbmZv
U2luayYgaW5mb1N5bmMsIGJvb2wgbGltaXRDYWxsU3RhY2tEZXB0aCwgaW50IG1heENhbGxTdGFj
a0RlcHRoKTsKKyAgICB+RGV0ZWN0Q2FsbERlcHRoKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgdmlz
aXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqKTsKKworICAgIGJvb2wgY2hlY2tF
eGNlZWRzTWF4RGVwdGgoaW50IGRlcHRoKTsKKworICAgIEVycm9yQ29kZSBkZXRlY3RDYWxsRGVw
dGgoKTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBGdW5jdGlvbk5vZGUgeworICAgIHB1YmxpYzoK
KyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrSW5maW5pdGVDYWxsRGVwdGggPSBJTlRfTUFYOwor
CisgICAgICAgIEZ1bmN0aW9uTm9kZShjb25zdCBUU3RyaW5nJiBmbmFtZSk7CisKKyAgICAgICAg
Y29uc3QgVFN0cmluZyYgZ2V0TmFtZSgpIGNvbnN0OworCisgICAgICAgIC8vIElmIGEgZnVuY3Rp
b24gaXMgYWxyZWFkeSBpbiB0aGUgY2FsbGVlIGxpc3QsIHRoaXMgYmVjb21lcyBhIG5vLW9wLgor
ICAgICAgICB2b2lkIGFkZENhbGxlZShGdW5jdGlvbk5vZGUqIGNhbGxlZSk7CisKKyAgICAgICAg
Ly8gUmV0dXJucyBrSW5pZmluaXR5Q2FsbERlcHRoIGlmIHJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxs
cyBhcmUgZGV0ZWN0ZWQuCisgICAgICAgIGludCBkZXRlY3RDYWxsRGVwdGgoRGV0ZWN0Q2FsbERl
cHRoKiBkZXRlY3RDYWxsRGVwdGgsIGludCBkZXB0aCk7CisKKyAgICAgICAgLy8gUmVzZXQgc3Rh
dGUuCisgICAgICAgIHZvaWQgcmVzZXQoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIC8vIG1h
bmdsZWQgZnVuY3Rpb24gbmFtZSBpcyB1bmlxdWUuCisgICAgICAgIFRTdHJpbmcgbmFtZTsKKwor
ICAgICAgICAvLyBmdW5jdGlvbnMgdGhhdCBhcmUgZGlyZWN0bHkgY2FsbGVkIGJ5IHRoaXMgZnVu
Y3Rpb24uCisgICAgICAgIFRWZWN0b3I8RnVuY3Rpb25Ob2RlKj4gY2FsbGVlczsKKworICAgICAg
ICBWaXNpdCB2aXNpdDsKKyAgICB9OworCisgICAgRXJyb3JDb2RlIGRldGVjdENhbGxEZXB0aEZv
ckZ1bmN0aW9uKEZ1bmN0aW9uTm9kZSogZnVuYyk7CisgICAgRnVuY3Rpb25Ob2RlKiBmaW5kRnVu
Y3Rpb25CeU5hbWUoY29uc3QgVFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCByZXNldEZ1bmN0aW9u
Tm9kZXMoKTsKKworICAgIFRJbmZvU2luayYgZ2V0SW5mb1NpbmsoKSB7IHJldHVybiBpbmZvU2lu
azsgfQorCisgICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBmdW5jdGlvbnM7CisgICAgRnVuY3Rp
b25Ob2RlKiBjdXJyZW50RnVuY3Rpb247CisgICAgVEluZm9TaW5rJiBpbmZvU2luazsKKyAgICBp
bnQgbWF4RGVwdGg7CisKKyAgICBEZXRlY3RDYWxsRGVwdGgoY29uc3QgRGV0ZWN0Q2FsbERlcHRo
Jik7CisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgRGV0ZWN0Q2FsbERlcHRoJik7Cit9OworCisj
ZW5kaWYgIC8vIENPTVBJTEVSX0RFVEVDVF9SRUNVUlNJT05fSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24u
Y3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjUgKzAsMCBA
QAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgImNvbXBpbGVyL0RldGVjdFJlY3Vyc2lv
bi5oIgotCi1EZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6RnVuY3Rpb25Ob2RlKGNvbnN0
IFRTdHJpbmcmIGZuYW1lKQotICAgIDogbmFtZShmbmFtZSksCi0gICAgICB2aXNpdChQcmVWaXNp
dCkKLXsKLX0KLQotY29uc3QgVFN0cmluZyYgRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGU6
OmdldE5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBuYW1lOwotfQotCi12b2lkIERldGVjdFJl
Y3Vyc2lvbjo6RnVuY3Rpb25Ob2RlOjphZGRDYWxsZWUoCi0gICAgRGV0ZWN0UmVjdXJzaW9uOjpG
dW5jdGlvbk5vZGUqIGNhbGxlZSkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxl
ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGNhbGxlZXNbaV0gPT0gY2FsbGVlKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYWxsZWVzLnB1c2hfYmFjayhjYWxsZWUpOwot
fQotCi1ib29sIERldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlOjpkZXRlY3RSZWN1cnNpb24o
KQotewotICAgIEFTU0VSVCh2aXNpdCA9PSBQcmVWaXNpdCk7Ci0gICAgdmlzaXQgPSBJblZpc2l0
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsraSkgewotICAg
ICAgICBzd2l0Y2ggKGNhbGxlZXNbaV0tPnZpc2l0KSB7Ci0gICAgICAgICAgICBjYXNlIEluVmlz
aXQ6Ci0gICAgICAgICAgICAgICAgLy8gY3ljbGUgZGV0ZWN0ZWQsIGkuZS4sIHJlY3Vyc2lvbiBk
ZXRlY3RlZC4KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGNhc2Ug
UG9zdFZpc2l0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQcmVW
aXNpdDogewotICAgICAgICAgICAgICAgIGJvb2wgcmVjdXJzaW9uID0gY2FsbGVlc1tpXS0+ZGV0
ZWN0UmVjdXJzaW9uKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2lvbikKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdmlzaXQg
PSBQb3N0VmlzaXQ7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1EZXRlY3RSZWN1cnNpb246OkRl
dGVjdFJlY3Vyc2lvbigpCi0gICAgOiBjdXJyZW50RnVuY3Rpb24oTlVMTCkKLXsKLX0KLQotRGV0
ZWN0UmVjdXJzaW9uOjp+RGV0ZWN0UmVjdXJzaW9uKCkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZ1bmN0aW9ucy5zaXplKCk7ICsraSkKLSAgICAgICAgZGVsZXRlIGZ1bmN0aW9uc1tp
XTsKLX0KLQotYm9vbCBEZXRlY3RSZWN1cnNpb246OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0
LCBUSW50ZXJtQWdncmVnYXRlKiBub2RlKQotewotICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkK
LSAgICB7Ci0gICAgICAgIGNhc2UgRU9wUHJvdG90eXBlOgotICAgICAgICAgICAgLy8gRnVuY3Rp
b24gZGVjbGFyYXRpb24uCi0gICAgICAgICAgICAvLyBEb24ndCBhZGQgRnVuY3Rpb25Ob2RlIGhl
cmUgYmVjYXVzZSBub2RlLT5nZXROYW1lKCkgaXMgdGhlCi0gICAgICAgICAgICAvLyB1bm1hbmds
ZWQgZnVuY3Rpb24gbmFtZS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVPcEZ1
bmN0aW9uOiB7Ci0gICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgotICAgICAgICAg
ICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KSB7Ci0gICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0
aW9uID0gZmluZEZ1bmN0aW9uQnlOYW1lKG5vZGUtPmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGN1cnJlbnRGdW5jdGlvbiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRGdW5jdGlvbiA9IG5ldyBGdW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb25zLnB1c2hfYmFjayhjdXJyZW50RnVuY3Rpb24pOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOiB7Ci0gICAgICAgICAgICAvLyBGdW5j
dGlvbiBjYWxsLgotICAgICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KSB7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKGN1cnJlbnRGdW5jdGlvbiAhPSBOVUxMKTsKLSAgICAgICAgICAgICAg
ICBGdW5jdGlvbk5vZGUqIGZ1bmMgPSBmaW5kRnVuY3Rpb25CeU5hbWUobm9kZS0+Z2V0TmFtZSgp
KTsKLSAgICAgICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGZ1bmMgPSBuZXcgRnVuY3Rpb25Ob2RlKG5vZGUtPmdldE5hbWUoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoX2JhY2soZnVuYyk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbi0+YWRkQ2FsbGVlKGZ1bmMpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRGV0ZWN0
UmVjdXJzaW9uOjpFcnJvckNvZGUgRGV0ZWN0UmVjdXJzaW9uOjpkZXRlY3RSZWN1cnNpb24oKQot
ewotICAgIEZ1bmN0aW9uTm9kZSogbWFpbiA9IGZpbmRGdW5jdGlvbkJ5TmFtZSgibWFpbigiKTsK
LSAgICBpZiAobWFpbiA9PSBOVUxMKQotICAgICAgICByZXR1cm4ga0Vycm9yTWlzc2luZ01haW47
Ci0gICAgaWYgKG1haW4tPmRldGVjdFJlY3Vyc2lvbigpKQotICAgICAgICByZXR1cm4ga0Vycm9y
UmVjdXJzaW9uOwotICAgIHJldHVybiBrRXJyb3JOb25lOwotfQotCi1EZXRlY3RSZWN1cnNpb246
OkZ1bmN0aW9uTm9kZSogRGV0ZWN0UmVjdXJzaW9uOjpmaW5kRnVuY3Rpb25CeU5hbWUoCi0gICAg
Y29uc3QgVFN0cmluZyYgbmFtZSkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0
aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoZnVuY3Rpb25zW2ldLT5nZXROYW1lKCkg
PT0gbmFtZSkKLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbnNbaV07Ci0gICAgfQotICAgIHJl
dHVybiBOVUxMOwotfQotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvRGV0ZWN0UmVjdXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oCShyZXZpc2lvbiAxNTI2NDkpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNjAgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2lmbmRl
ZiBDT01QSUxFUl9ERVRFQ1RfUkVDVVJTSU9OX0hfCi0jZGVmaW5lIENPTVBJTEVSX0RFVEVDVF9S
RUNVUlNJT05fSF8KLQotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotCi0jaW5jbHVk
ZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvVmFyaWFibGVJ
bmZvLmgiCi0KLS8vIFRyYXZlcnNlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBkZXRlY3QgZnVuY3Rp
b24gcmVjdXJzaW9uLgotY2xhc3MgRGV0ZWN0UmVjdXJzaW9uIDogcHVibGljIFRJbnRlcm1UcmF2
ZXJzZXIgewotcHVibGljOgotICAgIGVudW0gRXJyb3JDb2RlIHsKLSAgICAgICAga0Vycm9yTWlz
c2luZ01haW4sCi0gICAgICAgIGtFcnJvclJlY3Vyc2lvbiwKLSAgICAgICAga0Vycm9yTm9uZQot
ICAgIH07Ci0KLSAgICBEZXRlY3RSZWN1cnNpb24oKTsKLSAgICB+RGV0ZWN0UmVjdXJzaW9uKCk7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdh
dGUqKTsKLQotICAgIEVycm9yQ29kZSBkZXRlY3RSZWN1cnNpb24oKTsKLQotcHJpdmF0ZToKLSAg
ICBjbGFzcyBGdW5jdGlvbk5vZGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25Ob2Rl
KGNvbnN0IFRTdHJpbmcmIGZuYW1lKTsKLQotICAgICAgICBjb25zdCBUU3RyaW5nJiBnZXROYW1l
KCkgY29uc3Q7Ci0KLSAgICAgICAgLy8gSWYgYSBmdW5jdGlvbiBpcyBhbHJlYWR5IGluIHRoZSBj
YWxsZWUgbGlzdCwgdGhpcyBiZWNvbWVzIGEgbm8tb3AuCi0gICAgICAgIHZvaWQgYWRkQ2FsbGVl
KEZ1bmN0aW9uTm9kZSogY2FsbGVlKTsKLQotICAgICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiByZWN1
cnNpdmUgZnVuY3Rpb24gY2FsbHMgYXJlIGRldGVjdGVkLgotICAgICAgICBib29sIGRldGVjdFJl
Y3Vyc2lvbigpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgLy8gbWFuZ2xlZCBmdW5jdGlvbiBu
YW1lIGlzIHVuaXF1ZS4KLSAgICAgICAgVFN0cmluZyBuYW1lOwotCi0gICAgICAgIC8vIGZ1bmN0
aW9ucyB0aGF0IGFyZSBkaXJlY3RseSBjYWxsZWQgYnkgdGhpcyBmdW5jdGlvbi4KLSAgICAgICAg
VFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBjYWxsZWVzOwotCi0gICAgICAgIFZpc2l0IHZpc2l0Owot
ICAgIH07Ci0KLSAgICBGdW5jdGlvbk5vZGUqIGZpbmRGdW5jdGlvbkJ5TmFtZShjb25zdCBUU3Ry
aW5nJiBuYW1lKTsKLQotICAgIFRWZWN0b3I8RnVuY3Rpb25Ob2RlKj4gZnVuY3Rpb25zOwotICAg
IEZ1bmN0aW9uTm9kZSogY3VycmVudEZ1bmN0aW9uOwotfTsKLQotI2VuZGlmICAvLyBDT01QSUxF
Ul9ERVRFQ1RfUkVDVVJTSU9OX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGljcy5jcHAJKHJldmlzaW9uIDE1MjY0OSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGljcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBURGlhZ25vc3RpY3M6OndyaXRlSW5m
byhTZXZlcml0eSBzZQogICAgIFRJbmZvU2lua0Jhc2UmIHNpbmsgPSBtSW5mb1NpbmsuaW5mbzsK
ICAgICAvKiBWQysrIGZvcm1hdDogZmlsZShsaW5lbnVtKSA6IGVycm9yICM6ICd0b2tlbicgOiBl
eHRyYWluZm8gKi8KICAgICBzaW5rLnByZWZpeChwcmVmaXgpOwotICAgIHNpbmsubG9jYXRpb24o
RW5jb2RlU291cmNlTG9jKGxvYy5maWxlLCBsb2MubGluZSkpOworICAgIHNpbmsubG9jYXRpb24o
bG9jLmZpbGUsIGxvYy5saW5lKTsKICAgICBzaW5rIDw8ICInIiA8PCB0b2tlbiA8PCAgIicgOiAi
IDw8IHJlYXNvbiA8PCAiICIgPDwgZXh0cmEgPDwgIlxuIjsKIH0KIApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNw
cAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0Zvckxvb3BVbnJvbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8K
LS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQog
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0yMTAsNiArMjEwLDYgQEAgaW50
IEZvckxvb3BVbnJvbGw6OmdldExvb3BJbmNyZW1lbnQoVEludAogaW50IEZvckxvb3BVbnJvbGw6
OmV2YWx1YXRlSW50Q29uc3RhbnQoVEludGVybUNvbnN0YW50VW5pb24qIG5vZGUpCiB7CiAgICAg
QVNTRVJUKChub2RlICE9IE5VTEwpICYmIChub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpICE9
IE5VTEwpKTsKLSAgICByZXR1cm4gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNv
bnN0KCk7CisgICAgcmV0dXJuIG5vZGUtPmdldElDb25zdCgwKTsKIH0KIApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwCShyZXZp
c2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5m
b1NpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogCiAjaW5jbHVkZSAiY29t
cGlsZXIvSW5mb1NpbmsuaCIKIAotdm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoVFByZWZpeFR5
cGUgbWVzc2FnZSkgewotICAgIHN3aXRjaChtZXNzYWdlKSB7Cit2b2lkIFRJbmZvU2lua0Jhc2U6
OnByZWZpeChUUHJlZml4VHlwZSBwKSB7CisgICAgc3dpdGNoKHApIHsKICAgICAgICAgY2FzZSBF
UHJlZml4Tm9uZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVQcmVmaXhXYXJu
aW5nOgpAQCAtMzEsMjkgKzMxLDI0IEBAIHZvaWQgVEluZm9TaW5rQmFzZTo6cHJlZml4KFRQcmVm
aXhUeXBlIG0KICAgICB9CiB9CiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6bG9jYXRpb24oVFNvdXJj
ZUxvYyBsb2MpIHsKLSAgICBpbnQgc3RyaW5nID0gMCwgbGluZSA9IDA7Ci0gICAgRGVjb2RlU291
cmNlTG9jKGxvYywgJnN0cmluZywgJmxpbmUpOwotCit2b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0
aW9uKGludCBmaWxlLCBpbnQgbGluZSkgewogICAgIFRQZXJzaXN0U3RyaW5nU3RyZWFtIHN0cmVh
bTsKICAgICBpZiAobGluZSkKLSAgICAgICAgc3RyZWFtIDw8IHN0cmluZyA8PCAiOiIgPDwgbGlu
ZTsKKyAgICAgICAgc3RyZWFtIDw8IGZpbGUgPDwgIjoiIDw8IGxpbmU7CiAgICAgZWxzZQotICAg
ICAgICBzdHJlYW0gPDwgc3RyaW5nIDw8ICI6PyAiOworICAgICAgICBzdHJlYW0gPDwgZmlsZSA8
PCAiOj8gIjsKICAgICBzdHJlYW0gPDwgIjogIjsKIAogICAgIHNpbmsuYXBwZW5kKHN0cmVhbS5z
dHIoKSk7CiB9CiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBtZXNz
YWdlLCBjb25zdCBjaGFyKiBzKSB7Ci0gICAgcHJlZml4KG1lc3NhZ2UpOwotICAgIHNpbmsuYXBw
ZW5kKHMpOwotICAgIHNpbmsuYXBwZW5kKCJcbiIpOwordm9pZCBUSW5mb1NpbmtCYXNlOjpsb2Nh
dGlvbihjb25zdCBUU291cmNlTG9jJiBsb2MpIHsKKyAgICBsb2NhdGlvbihsb2MuZmlyc3RfZmls
ZSwgbG9jLmZpcnN0X2xpbmUpOwogfQogCi12b2lkIFRJbmZvU2lua0Jhc2U6Om1lc3NhZ2UoVFBy
ZWZpeFR5cGUgbWVzc2FnZSwgY29uc3QgY2hhciogcywgVFNvdXJjZUxvYyBsb2MpIHsKLSAgICBw
cmVmaXgobWVzc2FnZSk7Cit2b2lkIFRJbmZvU2lua0Jhc2U6Om1lc3NhZ2UoVFByZWZpeFR5cGUg
cCwgY29uc3QgVFNvdXJjZUxvYyYgbG9jLCBjb25zdCBjaGFyKiBtKSB7CisgICAgcHJlZml4KHAp
OwogICAgIGxvY2F0aW9uKGxvYyk7Ci0gICAgc2luay5hcHBlbmQocyk7CisgICAgc2luay5hcHBl
bmQobSk7CiAgICAgc2luay5hcHBlbmQoIlxuIik7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuaAkocmV2aXNpb24gMTUyNjQ5KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk2LDEwICs5NiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVFBlcnNpc3RT
dHJpbmcmIHN0cigpIGNvbnN0IHsgcmV0dXJuIHNpbms7IH0KICAgICBjb25zdCBjaGFyKiBjX3N0
cigpIGNvbnN0IHsgcmV0dXJuIHNpbmsuY19zdHIoKTsgfQogCi0gICAgdm9pZCBwcmVmaXgoVFBy
ZWZpeFR5cGUgbWVzc2FnZSk7Ci0gICAgdm9pZCBsb2NhdGlvbihUU291cmNlTG9jIGxvYyk7Ci0g
ICAgdm9pZCBtZXNzYWdlKFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMpOwotICAg
IHZvaWQgbWVzc2FnZShUUHJlZml4VHlwZSBtZXNzYWdlLCBjb25zdCBjaGFyKiBzLCBUU291cmNl
TG9jIGxvYyk7CisgICAgdm9pZCBwcmVmaXgoVFByZWZpeFR5cGUgcCk7CisgICAgdm9pZCBsb2Nh
dGlvbihpbnQgZmlsZSwgaW50IGxpbmUpOworICAgIHZvaWQgbG9jYXRpb24oY29uc3QgVFNvdXJj
ZUxvYyYgbG9jKTsKKyAgICB2b2lkIG1lc3NhZ2UoVFByZWZpeFR5cGUgcCwgY29uc3QgVFNvdXJj
ZUxvYyYgbG9jLCBjb25zdCBjaGFyKiBtKTsKIAogcHJpdmF0ZToKICAgICBUUGVyc2lzdFN0cmlu
ZyBzaW5rOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRp
YWxpemUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9Jbml0aWFsaXplLmNwcAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NiwzNzMgKzE2LDYgQEAKIAogLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAvLwotLy8gUHJvdG90eXBl
cyBmb3IgYnVpbHQtaW4gZnVuY3Rpb25zIHNlZW4gYnkgYm90aCB2ZXJ0ZXggYW5kIGZyYWdtZW50
IHNoYWRlcnMuCi0vLwotLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBCdWls
dEluRnVuY3Rpb25zQ29tbW9uKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQot
ewotICAgIFRTdHJpbmcgczsKLQotICAgIC8vCi0gICAgLy8gQW5nbGUgYW5kIFRyaWdvbm9tZXRy
aWMgRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgcmFkaWFu
cyhmbG9hdCBkZWdyZWVzKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgcmFkaWFu
cyh2ZWMyICBkZWdyZWVzKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcmFkaWFu
cyh2ZWMzICBkZWdyZWVzKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgcmFkaWFu
cyh2ZWM0ICBkZWdyZWVzKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkZWdy
ZWVzKGZsb2F0IHJhZGlhbnMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBkZWdy
ZWVzKHZlYzIgIHJhZGlhbnMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBkZWdy
ZWVzKHZlYzMgIHJhZGlhbnMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBkZWdy
ZWVzKHZlYzQgIHJhZGlhbnMpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHNp
bihmbG9hdCBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNpbih2ZWMy
ICBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHNpbih2ZWMzICBhbmds
ZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHNpbih2ZWM0ICBhbmdsZSk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgY29zKGZsb2F0IGFuZ2xlKTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY29zKHZlYzIgIGFuZ2xlKTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMyAgY29zKHZlYzMgIGFuZ2xlKTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgY29zKHZlYzQgIGFuZ2xlKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCB0YW4oZmxvYXQgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMyICB0YW4odmVjMiAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICB0
YW4odmVjMyAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICB0YW4odmVj
NCAgYW5nbGUpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGFzaW4oZmxvYXQg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGFzaW4odmVjMiAgeCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGFzaW4odmVjMyAgeCk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzQgIGFzaW4odmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0
cmluZygiZmxvYXQgYWNvcyhmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MiAgYWNvcyh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgYWNvcyh2
ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgYWNvcyh2ZWM0ICB4KTsi
KSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhdGFuKGZsb2F0IHksIGZsb2F0IHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhdGFuKHZlYzIgIHksIHZlYzIgIHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhdGFuKHZlYzMgIHksIHZlYzMgIHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhdGFuKHZlYzQgIHksIHZlYzQgIHgp
OyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGF0YW4oZmxvYXQgeV9vdmVyX3gp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhdGFuKHZlYzIgIHlfb3Zlcl94KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgYXRhbih2ZWMzICB5X292ZXJfeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGF0YW4odmVjNCAgeV9vdmVyX3gpOyIpKTsK
LQotICAgIC8vCi0gICAgLy8gRXhwb25lbnRpYWwgRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgcG93KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMyICBwb3codmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzMgIHBvdyh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgcG93KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IGV4cChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiAgZXhwKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBl
eHAodmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGV4cCh2ZWM0ICB4
KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsb2coZmxvYXQgeCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGxvZyh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMyAgbG9nKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWM0ICBsb2codmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQg
ZXhwMihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZXhwMih2ZWMy
ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZXhwMih2ZWMzICB4KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZXhwMih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsb2cyKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMyICBsb2cyKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMzICBsb2cyKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBsb2cy
KHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHNxcnQoZmxvYXQg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNxcnQodmVjMiAgeCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHNxcnQodmVjMyAgeCk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzQgIHNxcnQodmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0
cmluZygiZmxvYXQgaW52ZXJzZXNxcnQoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzIgIGludmVyc2VzcXJ0KHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMzICBpbnZlcnNlc3FydCh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgaW52ZXJzZXNxcnQodmVjNCAgeCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBDb21tb24g
RnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYWJzKGZsb2F0
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhYnModmVjMiAgeCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGFicyh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgYWJzKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImZsb2F0IHNpZ24oZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IHNpZ24odmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHNpZ24odmVj
MyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHNpZ24odmVjNCAgeCk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZmxvb3IoZmxvYXQgeCk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGZsb29yKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMzICBmbG9vcih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCAgZmxvb3IodmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxv
YXQgY2VpbChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2VpbCh2
ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgY2VpbCh2ZWMzICB4KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgY2VpbCh2ZWM0ICB4KTsiKSk7Ci0KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBmcmFjdChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMiAgZnJhY3QodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzMgIGZyYWN0KHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0
ICBmcmFjdCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtb2Qo
ZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1vZCh2
ZWMyICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbW9kKHZl
YzMgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtb2QodmVj
NCAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1vZCh2ZWMy
ICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbW9kKHZlYzMg
IHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtb2QodmVjNCAg
eCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbWluKGZsb2F0
IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtaW4odmVjMiAg
eCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1pbih2ZWMzICB4
LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWluKHZlYzQgIHgs
IGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtaW4odmVjMiAgeCwg
dmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1pbih2ZWMzICB4LCB2
ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWluKHZlYzQgIHgsIHZl
YzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG1heChmbG9hdCB4LCBm
bG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbWF4KHZlYzIgIHgsIGZs
b2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtYXgodmVjMyAgeCwgZmxv
YXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1heCh2ZWM0ICB4LCBmbG9h
dCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbWF4KHZlYzIgIHgsIHZlYzIg
IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtYXgodmVjMyAgeCwgdmVjMyAg
eSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1heCh2ZWM0ICB4LCB2ZWM0ICB5
KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBjbGFtcChmbG9hdCB4LCBmbG9h
dCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IGNsYW1wKHZlYzIgIHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4VmFsKTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMyAgY2xhbXAodmVjMyAgeCwgZmxvYXQgbWluVmFsLCBmbG9hdCBt
YXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBjbGFtcCh2ZWM0ICB4LCBm
bG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzIgIGNsYW1wKHZlYzIgIHgsIHZlYzIgIG1pblZhbCwgdmVjMiAgbWF4VmFsKTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgY2xhbXAodmVjMyAgeCwgdmVjMyAgbWluVmFsLCB2ZWMz
ICBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBjbGFtcCh2ZWM0ICB4
LCB2ZWM0ICBtaW5WYWwsIHZlYzQgIG1heFZhbCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiZmxvYXQgbWl4KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IGEpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMyICBtaXgodmVjMiAgeCwgdmVjMiAgeSwgZmxvYXQgYSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1peCh2ZWMzICB4LCB2ZWMzICB5LCBmbG9hdCBhKTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWl4KHZlYzQgIHgsIHZlYzQgIHksIGZs
b2F0IGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtaXgodmVjMiAgeCwgdmVj
MiAgeSwgdmVjMiAgYSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1peCh2ZWMz
ICB4LCB2ZWMzICB5LCB2ZWMzICBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAg
bWl4KHZlYzQgIHgsIHZlYzQgIHksIHZlYzQgIGEpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImZsb2F0IHN0ZXAoZmxvYXQgZWRnZSwgZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzIgIHN0ZXAodmVjMiAgZWRnZSwgdmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzMgIHN0ZXAodmVjMyAgZWRnZSwgdmVjMyAgeCk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzQgIHN0ZXAodmVjNCAgZWRnZSwgdmVjNCAgeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIHN0ZXAoZmxvYXQgZWRnZSwgdmVjMiAgeCk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHN0ZXAoZmxvYXQgZWRnZSwgdmVjMyAgeCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHN0ZXAoZmxvYXQgZWRnZSwgdmVjNCAgeCk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc21vb3Roc3RlcChmbG9hdCBlZGdlMCwg
ZmxvYXQgZWRnZTEsIGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBz
bW9vdGhzdGVwKHZlYzIgIGVkZ2UwLCB2ZWMyICBlZGdlMSwgdmVjMiAgeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzMgIHNtb290aHN0ZXAodmVjMyAgZWRnZTAsIHZlYzMgIGVkZ2Ux
LCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc21vb3Roc3RlcCh2
ZWM0ICBlZGdlMCwgdmVjNCAgZWRnZTEsIHZlYzQgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMyICBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgdmVjMiAgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHNtb290aHN0ZXAoZmxvYXQgZWRnZTAs
IGZsb2F0IGVkZ2UxLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAg
c21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIHZlYzQgIHgpOyIpKTsKLQotICAg
IC8vCi0gICAgLy8gR2VvbWV0cmljIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImZsb2F0IGxlbmd0aChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
ZmxvYXQgbGVuZ3RoKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBs
ZW5ndGgodmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2
ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkaXN0YW5jZShmbG9h
dCBwMCwgZmxvYXQgcDEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkaXN0YW5j
ZSh2ZWMyICBwMCwgdmVjMiAgcDEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBk
aXN0YW5jZSh2ZWMzICBwMCwgdmVjMyAgcDEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJm
bG9hdCBkaXN0YW5jZSh2ZWM0ICBwMCwgdmVjNCAgcDEpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImZsb2F0IGRvdChmbG9hdCB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygiZmxvYXQgZG90KHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBkb3QodmVjMyAgeCwgdmVjMyAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImZsb2F0IGRvdCh2ZWM0ICB4LCB2ZWM0ICB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMzIGNyb3NzKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiZmxvYXQgbm9ybWFsaXplKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMyICBub3JtYWxpemUodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMg
IG5vcm1hbGl6ZSh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbm9y
bWFsaXplKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGZhY2Vm
b3J3YXJkKGZsb2F0IE4sIGZsb2F0IEksIGZsb2F0IE5yZWYpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMyICBmYWNlZm9yd2FyZCh2ZWMyICBOLCB2ZWMyICBJLCB2ZWMyICBOcmVmKTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZmFjZWZvcndhcmQodmVjMyAgTiwgdmVj
MyAgSSwgdmVjMyAgTnJlZik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGZhY2Vm
b3J3YXJkKHZlYzQgIE4sIHZlYzQgIEksIHZlYzQgIE5yZWYpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IHJlZmxlY3QoZmxvYXQgSSwgZmxvYXQgTik7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzIgIHJlZmxlY3QodmVjMiAgSSwgdmVjMiAgTik7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzMgIHJlZmxlY3QodmVjMyAgSSwgdmVjMyAgTik7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHJlZmxlY3QodmVjNCAgSSwgdmVjNCAgTik7IikpOwot
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgcmVmcmFjdChmbG9hdCBJLCBmbG9hdCBOLCBm
bG9hdCBldGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICByZWZyYWN0KHZlYzIg
IEksIHZlYzIgIE4sIGZsb2F0IGV0YSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMg
IHJlZnJhY3QodmVjMyAgSSwgdmVjMyAgTiwgZmxvYXQgZXRhKTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgcmVmcmFjdCh2ZWM0ICBJLCB2ZWM0ICBOLCBmbG9hdCBldGEpOyIpKTsK
LQotICAgIC8vCi0gICAgLy8gTWF0cml4IEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoIm1hdDIgbWF0cml4Q29tcE11bHQobWF0MiB4LCBtYXQyIHkpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJtYXQzIG1hdHJpeENvbXBNdWx0KG1hdDMgeCwgbWF0MyB5KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygibWF0NCBtYXRyaXhDb21wTXVsdChtYXQ0IHgsIG1hdDQg
eSk7IikpOwotCi0gICAgLy8KLSAgICAvLyBWZWN0b3IgcmVsYXRpb25hbCBmdW5jdGlvbnMuCi0g
ICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbih2ZWMyIHgsIHZlYzIg
eSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuKHZlYzMgeCwgdmVj
MyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbGVzc1RoYW4odmVjNCB4LCB2
ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGxlc3NUaGFuKGl2ZWMy
IHgsIGl2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBsZXNzVGhhbihp
dmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbGVzc1Ro
YW4oaXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIg
bGVzc1RoYW5FcXVhbCh2ZWMyIHgsIHZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImJ2ZWMzIGxlc3NUaGFuRXF1YWwodmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJidmVjNCBsZXNzVGhhbkVxdWFsKHZlYzQgeCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbkVxdWFsKGl2ZWMyIHgsIGl2ZWMyIHkpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBsZXNzVGhhbkVxdWFsKGl2ZWMzIHgsIGl2
ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbkVxdWFsKGl2
ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGdyZWF0
ZXJUaGFuKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMg
Z3JlYXRlclRoYW4odmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJi
dmVjNCBncmVhdGVyVGhhbih2ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzIgZ3JlYXRlclRoYW4oaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImJ2ZWMzIGdyZWF0ZXJUaGFuKGl2ZWMzIHgsIGl2ZWMzIHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBncmVhdGVyVGhhbihpdmVjNCB4LCBpdmVjNCB5KTsi
KSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBncmVhdGVyVGhhbkVxdWFsKHZlYzIg
eCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZ3JlYXRlclRoYW5F
cXVhbCh2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdy
ZWF0ZXJUaGFuRXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJ2ZWMyIGdyZWF0ZXJUaGFuRXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGdyZWF0ZXJUaGFuRXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFuRXF1YWwoaXZlYzQg
eCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZXF1YWwodmVj
MiB4LCB2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBlcXVhbCh2ZWMz
IHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGVxdWFsKHZlYzQg
eCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBlcXVhbChpdmVj
MiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZXF1YWwoaXZl
YzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGVxdWFsKGl2
ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGVxdWFs
KGJ2ZWMyIHgsIGJ2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBlcXVh
bChidmVjMyB4LCBidmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1
YWwoYnZlYzQgeCwgYnZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIg
bm90RXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVj
MyBub3RFcXVhbCh2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWM0IG5vdEVxdWFsKHZlYzQgeCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJidmVjMiBub3RFcXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzMgbm90RXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWM0IG5vdEVxdWFsKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdEVxdWFsKGJ2ZWMyIHgsIGJ2ZWMyIHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBub3RFcXVhbChidmVjMyB4LCBidmVjMyB5KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1YWwoYnZlYzQgeCwgYnZlYzQgeSk7
IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYm9vbCBhbnkoYnZlYzIgeCk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYW55KGJ2ZWMzIHgpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJib29sIGFueShidmVjNCB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJi
b29sIGFsbChidmVjMiB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYm9vbCBhbGwoYnZl
YzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYWxsKGJ2ZWM0IHgpOyIpKTsK
LQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdChidmVjMiB4KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygiYnZlYzMgbm90KGJ2ZWMzIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJidmVjNCBub3QoYnZlYzQgeCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBUZXh0dXJlIEZ1
bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEKHNh
bXBsZXIyRCBzYW1wbGVyLCB2ZWMyIGNvb3JkKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMzIGNvb3JkKTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzYW1wbGVy
LCB2ZWM0IGNvb3JkKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlQ3Vi
ZShzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkKTsiKSk7Ci0KLSAgICBpZiAocmVzb3Vy
Y2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwpIHsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCB0ZXh0dXJlMkQoc2FtcGxlckV4dGVybmFsT0VTIHNhbXBsZXIsIHZlYzIgY29vcmQpOyIp
KTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXJF
eHRlcm5hbE9FUyBzYW1wbGVyLCB2ZWMzIGNvb3JkKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvaihzYW1wbGVyRXh0ZXJuYWxPRVMgc2FtcGxlciwgdmVj
NCBjb29yZCk7IikpOwotICAgIH0KLQotICAgIGlmIChyZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVj
dGFuZ2xlKSB7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUmVjdChz
YW1wbGVyMkRSZWN0IHNhbXBsZXIsIHZlYzIgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCB0ZXh0dXJlMkRSZWN0UHJvaihzYW1wbGVyMkRSZWN0IHNhbXBsZXIsIHZl
YzMgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRS
ZWN0UHJvaihzYW1wbGVyMkRSZWN0IHNhbXBsZXIsIHZlYzQgY29vcmQpOyIpKTsKLSAgICB9Ci0K
LSAgICAvLwotICAgIC8vIE5vaXNlIGZ1bmN0aW9ucy4KLSAgICAvLwotICAgIC8vcy5hcHBlbmQo
VFN0cmluZygiZmxvYXQgbm9pc2UxKGZsb2F0IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJp
bmcoImZsb2F0IG5vaXNlMSh2ZWMyICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJm
bG9hdCBub2lzZTEodmVjMyAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygiZmxvYXQg
bm9pc2UxKHZlYzQgIHgpOyIpKTsKLQotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjMiBub2lz
ZTIoZmxvYXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjMiBub2lzZTIodmVj
MiAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjMiBub2lzZTIodmVjMyAgeCk7
IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjMiBub2lzZTIodmVjNCAgeCk7IikpOwot
Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMzIG5vaXNlMyhmbG9hdCB4KTsiKSk7Ci0gICAg
Ly9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMzIG5vaXNlMyh2ZWMyICB4KTsiKSk7Ci0gICAgLy9zLmFw
cGVuZChUU3RyaW5nKCJ2ZWMzIG5vaXNlMyh2ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChU
U3RyaW5nKCJ2ZWMzIG5vaXNlMyh2ZWM0ICB4KTsiKSk7Ci0KLSAgICAvL3MuYXBwZW5kKFRTdHJp
bmcoInZlYzQgbm9pc2U0KGZsb2F0IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZl
YzQgbm9pc2U0KHZlYzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzQgbm9p
c2U0KHZlYzMgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzQgbm9pc2U0KHZl
YzQgIHgpOyIpKTsKLQotICAgIHJldHVybiBzOwotfQotCi0vLz09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS8vCi0vLyBQcm90b3R5cGVzIGZvciBidWlsdC1pbiBmdW5jdGlvbnMgc2VlbiBieSB2ZXJ0ZXgg
c2hhZGVycyBvbmx5LgotLy8KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotc3RhdGljIFRTdHJpbmcg
QnVpbHRJbkZ1bmN0aW9uc1ZlcnRleChjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNl
cykKLXsKLSAgICBUU3RyaW5nIHM7Ci0KLSAgICAvLwotICAgIC8vIEdlb21ldHJpYyBGdW5jdGlv
bnMuCi0gICAgLy8KLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzQgZnRyYW5zZm9ybSgpOyIp
KTsKLQotICAgIC8vCi0gICAgLy8gVGV4dHVyZSBGdW5jdGlvbnMuCi0gICAgLy8KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRExvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVjMiBj
b29yZCwgZmxvYXQgbG9kKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJl
MkRQcm9qTG9kKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBsb2QpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHNh
bXBsZXIsIHZlYzQgY29vcmQsIGZsb2F0IGxvZCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzQgdGV4dHVyZUN1YmVMb2Qoc2FtcGxlckN1YmUgc2FtcGxlciwgdmVjMyBjb29yZCwgZmxv
YXQgbG9kKTsiKSk7Ci0KLSAgICByZXR1cm4gczsKLX0KLQotLy89PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0vLwogLy8gUHJvdG90eXBlcyBmb3IgYnVpbHQtaW4gZnVuY3Rpb25zIHNlZW4gYnkgZnJhZ21l
bnQgc2hhZGVycyBvbmx5LgogLy8KIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtNTAwLDE1ICsx
MzMsMTIgQEAgdm9pZCBUQnVpbHRJbnM6OmluaXRpYWxpemUoU2hTaGFkZXJUeXBlIAogICAgIHN3
aXRjaCAodHlwZSkgewogICAgIGNhc2UgU0hfRlJBR01FTlRfU0hBREVSOgogICAgICAgICBidWls
dEluU3RyaW5ncy5wdXNoX2JhY2soRGVmYXVsdFByZWNpc2lvbkZyYWdtZW50KCkpOwotICAgICAg
ICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc0NvbW1vbihyZXNvdXJj
ZXMpKTsKICAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1aWx0SW5GdW5jdGlvbnNG
cmFnbWVudChyZXNvdXJjZXMpKTsKICAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKFN0
YW5kYXJkVW5pZm9ybXMoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTSF9WRVJURVhf
U0hBREVSOgogICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soRGVmYXVsdFByZWNpc2lv
blZlcnRleCgpKTsKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1aWx0SW5GdW5j
dGlvbnNDb21tb24ocmVzb3VyY2VzKSk7Ci0gICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFj
ayhCdWlsdEluRnVuY3Rpb25zVmVydGV4KHJlc291cmNlcykpOwogICAgICAgICBidWlsdEluU3Ry
aW5ncy5wdXNoX2JhY2soU3RhbmRhcmRVbmlmb3JtcygpKTsKICAgICAgICAgYnJlYWs7CiAKQEAg
LTUzOSw2ICsxNjksMTAgQEAgdm9pZCBJZGVudGlmeUJ1aWx0SW5zKFNoU2hhZGVyVHlwZSB0eXBl
LAogICAgICAgICBpZiAoc3BlYyAhPSBTSF9DU1NfU0hBREVSU19TUEVDKSB7CiAgICAgICAgICAg
ICBzeW1ib2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0Zy
YWdDb2xvciIpLCAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBF
dnFGcmFnQ29sb3IsICAgNCkpKTsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgqbmV3
IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJhZ0RhdGFbZ2xfTWF4RHJhd0J1ZmZlcnNd
IiksIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUZyYWdEYXRhLCAgICA0KSkpOworICAg
ICAgICAgICAgaWYgKHJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCkgeworICAgICAgICAgICAgICAg
IHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJh
Z0RlcHRoRVhUIiksICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIHJlc291cmNlcy5GcmFnbWVu
dFByZWNpc2lvbkhpZ2ggPyBFYnBIaWdoIDogRWJwTWVkaXVtLCBFdnFGcmFnRGVwdGgsIDEpKSk7
CisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUucmVsYXRlVG9FeHRlbnNpb24oImdsX0ZyYWdE
ZXB0aEVYVCIsICJHTF9FWFRfZnJhZ19kZXB0aCIpOworICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5l
d1Bvb2xUU3RyaW5nKCJjc3NfTWl4Q29sb3IiKSwgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0
RmxvYXQsIEVicE1lZGl1bSwgRXZxR2xvYmFsLCAgICAgIDQpKSk7CiAgICAgICAgICAgICBzeW1i
b2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImNzc19Db2xvck1h
dHJpeCIpLCAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFHbG9i
YWwsICAgICAgNCwgdHJ1ZSkpKTsKQEAgLTY1Niw0ICsyOTAsNiBAQCB2b2lkIEluaXRFeHRlbnNp
b25CZWhhdmlvcihjb25zdCBTaEJ1aWx0CiAgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9BUkJfdGV4
dHVyZV9yZWN0YW5nbGUiXSA9IEVCaFVuZGVmaW5lZDsKICAgICBpZiAocmVzb3VyY2VzLkVYVF9k
cmF3X2J1ZmZlcnMpCiAgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9FWFRfZHJhd19idWZmZXJzIl0g
PSBFQmhVbmRlZmluZWQ7CisgICAgaWYgKHJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCkKKyAgICAg
ICAgZXh0QmVoYXZpb3JbIkdMX0VYVF9mcmFnX2RlcHRoIl0gPSBFQmhVbmRlZmluZWQ7CiB9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50
ZXJtZWRpYXRlLmNwcAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEz
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTEzMSw3ICsx
MzEsNyBAQCBjb25zdCBjaGFyKiBnZXRPcGVyYXRvclN0cmluZyhUT3BlcmF0b3IgCiAvLwogLy8g
UmV0dXJucyB0aGUgYWRkZWQgbm9kZS4KIC8vCi1USW50ZXJtU3ltYm9sKiBUSW50ZXJtZWRpYXRl
OjphZGRTeW1ib2woaW50IGlkLCBjb25zdCBUU3RyaW5nJiBuYW1lLCBjb25zdCBUVHlwZSYgdHlw
ZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVN5bWJvbCogVEludGVybWVkaWF0ZTo6YWRkU3lt
Ym9sKGludCBpZCwgY29uc3QgVFN0cmluZyYgbmFtZSwgY29uc3QgVFR5cGUmIHR5cGUsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVN5bWJvbCogbm9kZSA9IG5ldyBUSW50
ZXJtU3ltYm9sKGlkLCBuYW1lLCB0eXBlKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAt
MTQ0LDcgKzE0NCw3IEBAIFRJbnRlcm1TeW1ib2wqIFRJbnRlcm1lZGlhdGU6OmFkZFN5bWJvbCgK
IC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVy
bWVkaWF0ZTo6YWRkQmluYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwg
VEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYyBsaW5lLCBUU3ltYm9sVGFibGUmIHN5bWJv
bFRhYmxlKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYXRoKFRPcGVy
YXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQogewogICAgIHN3aXRj
aCAob3ApIHsKICAgICAgICAgY2FzZSBFT3BFcXVhbDoKQEAgLTIwMCw4ICsyMDAsNiBAQCBUSW50
ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hCiAgICAgLy8gb25lIGFuZCBwcm9t
b3RlIGl0IHRvIHRoZSByaWdodCB0eXBlLgogICAgIC8vCiAgICAgVEludGVybUJpbmFyeSogbm9k
ZSA9IG5ldyBUSW50ZXJtQmluYXJ5KG9wKTsKLSAgICBpZiAobGluZSA9PSAwKQotICAgICAgICBs
aW5lID0gcmlnaHQtPmdldExpbmUoKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAg
bm9kZS0+c2V0TGVmdChsZWZ0KTsKQEAgLTIzMCwxNSArMjI4LDEzIEBAIFRJbnRlcm1UeXBlZCog
VEludGVybWVkaWF0ZTo6YWRkQmluYXJ5TWEKIC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2Rl
LgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKFRPcGVyYXRvciBv
cCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jIGxp
bmUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEFzc2lnbihUT3BlcmF0b3Igb3As
IFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxv
YyYgbGluZSkKIHsKICAgICAvLwogICAgIC8vIExpa2UgYWRkaW5nIGJpbmFyeSBtYXRoLCBleGNl
cHQgdGhlIGNvbnZlcnNpb24gY2FuIG9ubHkgZ28KICAgICAvLyBmcm9tIHJpZ2h0IHRvIGxlZnQu
CiAgICAgLy8KICAgICBUSW50ZXJtQmluYXJ5KiBub2RlID0gbmV3IFRJbnRlcm1CaW5hcnkob3Ap
OwotICAgIGlmIChsaW5lID09IDApCi0gICAgICAgIGxpbmUgPSBsZWZ0LT5nZXRMaW5lKCk7CiAg
ICAgbm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAgIFRJbnRlcm1UeXBlZCogY2hpbGQgPSBhZGRD
b252ZXJzaW9uKG9wLCBsZWZ0LT5nZXRUeXBlKCksIHJpZ2h0KTsKQEAgLTI2MCwxMSArMjU2LDkg
QEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRBc3NpZ24oVAogLy8gUmV0dXJucyB0
aGUgYWRkZWQgbm9kZS4KIC8vIFRoZSBjYWxsZXIgc2hvdWxkIHNldCB0aGUgdHlwZSBvZiB0aGUg
cmV0dXJuZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4
KFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBU
U291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KFRP
cGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBjb25z
dCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRlcm1CaW5hcnkqIG5vZGUgPSBuZXcgVElu
dGVybUJpbmFyeShvcCk7Ci0gICAgaWYgKGxpbmUgPT0gMCkKLSAgICAgICAgbGluZSA9IGluZGV4
LT5nZXRMaW5lKCk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKICAgICBub2RlLT5zZXRMZWZ0
KGJhc2UpOwogICAgIG5vZGUtPnNldFJpZ2h0KGluZGV4KTsKQEAgLTI3OSwxMyArMjczLDEzIEBA
IFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkSW5kZXgoVE8KIC8vCiAvLyBSZXR1cm5z
IHRoZSBhZGRlZCBub2RlLgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkVW5h
cnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIGNoaWxkTm9kZSwgVFNvdXJjZUxvYyBs
aW5lLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRp
YXRlOjphZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtTm9kZSogY2hpbGROb2RlLCBj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQogewogICAg
IFRJbnRlcm1VbmFyeSogbm9kZTsKICAgICBUSW50ZXJtVHlwZWQqIGNoaWxkID0gY2hpbGROb2Rl
LT5nZXRBc1R5cGVkKCk7CiAKICAgICBpZiAoY2hpbGQgPT0gMCkgewotICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJCYWQgdHlwZSBpbiBBZGRVbmFy
eU1hdGgiLCBsaW5lKTsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRl
cm5hbEVycm9yLCBsaW5lLCAiQmFkIHR5cGUgaW4gQWRkVW5hcnlNYXRoIik7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIApAQCAtMzQ4LDggKzM0Miw2IEBAIFRJbnRlcm1UeXBlZCogVEludGVy
bWVkaWF0ZTo6YWRkVW5hcnlNYXQKICAgICAvLyBNYWtlIGEgbmV3IG5vZGUgZm9yIHRoZSBvcGVy
YXRvci4KICAgICAvLwogICAgIG5vZGUgPSBuZXcgVEludGVybVVuYXJ5KG9wKTsKLSAgICBpZiAo
bGluZSA9PSAwKQotICAgICAgICBsaW5lID0gY2hpbGQtPmdldExpbmUoKTsKICAgICBub2RlLT5z
ZXRMaW5lKGxpbmUpOwogICAgIG5vZGUtPnNldE9wZXJhbmQoY2hpbGQpOwogCkBAIC0zNzYsNyAr
MzY4LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdAogLy8gUmV0
dXJucyBhbiBhZ2dyZWdhdGUgbm9kZSwgd2hpY2ggY291bGQgYmUgdGhlIG9uZSBwYXNzZWQgaW4g
aWYKIC8vIGl0IHdhcyBhbHJlYWR5IGFuIGFnZ3JlZ2F0ZSBidXQgbm8gb3BlcmF0b3Igd2FzIHNl
dC4KIC8vCi1USW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVy
YXRvcihUSW50ZXJtTm9kZSogbm9kZSwgVE9wZXJhdG9yIG9wLCBUU291cmNlTG9jIGxpbmUpCitU
SW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50
ZXJtTm9kZSogbm9kZSwgVE9wZXJhdG9yIG9wLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewog
ICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ05vZGU7CiAKQEAgLTM5MSw4ICszODMsNiBAQCBUSW50
ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyCiAgICAgICAgICAgICAvLwogICAg
ICAgICAgICAgYWdnTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKCk7CiAgICAgICAgICAgICBh
Z2dOb2RlLT5nZXRTZXF1ZW5jZSgpLnB1c2hfYmFjayhub2RlKTsKLSAgICAgICAgICAgIGlmIChs
aW5lID09IDApCi0gICAgICAgICAgICAgICAgbGluZSA9IG5vZGUtPmdldExpbmUoKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZQogICAgICAgICBhZ2dOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUo
KTsKQEAgLTQwMSw4ICszOTEsNyBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpz
ZXRBZ2dyCiAgICAgLy8gU2V0IHRoZSBvcGVyYXRvci4KICAgICAvLwogICAgIGFnZ05vZGUtPnNl
dE9wKG9wKTsKLSAgICBpZiAobGluZSAhPSAwKQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKGxp
bmUpOworICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1cm4gYWdnTm9kZTsK
IH0KQEAgLTQ5MSw3ICs0ODAsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENv
bnZlcnNpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OiAgIG5ld09wID0gRU9wQ29u
dkludFRvRmxvYXQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOiAg
bmV3T3AgPSBFT3BDb252Qm9vbFRvRmxvYXQ7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlvbiBub2RlIiwgbm9kZS0+Z2V0TGluZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFkIHByb21vdGlvbiBub2RlIik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC01MDAsNyArNDg5LDcgQEAgVEludGVybVR5cGVkKiBUSW50
ZXJtZWRpYXRlOjphZGRDb252ZXJzaQogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDog
ICBuZXdPcCA9IEVPcENvbnZJbnRUb0Jvb2w7ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgRWJ0RmxvYXQ6IG5ld09wID0gRU9wQ29udkZsb2F0VG9Cb29sOyBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gbm9kZSIs
IG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJhZCBwcm9t
b3Rpb24gbm9kZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTA5LDEyICs0OTgsMTIgQEAg
VEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb252ZXJzaQogICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVidEJvb2w6ICAgbmV3T3AgPSBFT3BDb252Qm9vbFRvSW50OyAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6ICBuZXdPcCA9IEVPcENvbnZGbG9hdFRv
SW50OyBicmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJh
ZCBwcm9tb3Rpb24gbm9kZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdl
dExpbmUoKSwgIkJhZCBwcm9tb3Rpb24gbm9kZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEludGVybmFsRXJyb3IsICJCYWQgcHJvbW90aW9uIHR5cGUiLCBub2RlLT5nZXRMaW5l
KCkpOworICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFkIHByb21vdGlvbiB0eXBlIik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIApAQCAtNTM0LDcgKzUyMyw3IEBAIFRJbnRl
cm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQ29udmVyc2kKIC8vIFJldHVybnMgdGhlIHJlc3Vs
dGluZyBhZ2dyZWdhdGUsIHVubGVzcyAwIHdhcyBwYXNzZWQgaW4gZm9yCiAvLyBib3RoIGV4aXN0
aW5nIG5vZGVzLgogLy8KLVRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2dy
ZWdhdGUoVEludGVybU5vZGUqIGxlZnQsIFRJbnRlcm1Ob2RlKiByaWdodCwgVFNvdXJjZUxvYyBs
aW5lKQorVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jvd0FnZ3JlZ2F0ZShUSW50
ZXJtTm9kZSogbGVmdCwgVEludGVybU5vZGUqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5l
KQogewogICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQgPT0gMCkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC01NTEsOCArNTQwLDcgQEAgVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jv
d0FnZwogICAgIGlmIChyaWdodCkKICAgICAgICAgYWdnTm9kZS0+Z2V0U2VxdWVuY2UoKS5wdXNo
X2JhY2socmlnaHQpOwogCi0gICAgaWYgKGxpbmUgIT0gMCkKLSAgICAgICAgYWdnTm9kZS0+c2V0
TGluZShsaW5lKTsKKyAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAgcmV0dXJuIGFn
Z05vZGU7CiB9CkBAIC01NjIsMTggKzU1MCwxNCBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJt
ZWRpYXRlOjpncm93QWdnCiAvLwogLy8gUmV0dXJucyBhbiBhZ2dyZWdhdGUsIHVubGVzcyAwIHdh
cyBwYXNzZWQgaW4gZm9yIHRoZSBleGlzdGluZyBub2RlLgogLy8KLVRJbnRlcm1BZ2dyZWdhdGUq
IFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUqIG5vZGUsIFRTb3VyY2VM
b2MgbGluZSkKK1RJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUo
VEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgaWYgKG5v
ZGUgPT0gMCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBUSW50ZXJtQWdncmVnYXRlKiBhZ2dO
b2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7CiAgICAgYWdnTm9kZS0+Z2V0U2VxdWVuY2UoKS5w
dXNoX2JhY2sobm9kZSk7Ci0KLSAgICBpZiAobGluZSAhPSAwKQotICAgICAgICBhZ2dOb2RlLT5z
ZXRMaW5lKGxpbmUpOwotICAgIGVsc2UKLSAgICAgICAgYWdnTm9kZS0+c2V0TGluZShub2RlLT5n
ZXRMaW5lKCkpOworICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1cm4gYWdn
Tm9kZTsKIH0KQEAgLTU4NSw3ICs1NjksNyBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRp
YXRlOjptYWtlQWdnCiAvLwogLy8gUmV0dXJucyB0aGUgc2VsZWN0aW9uIG5vZGUgY3JlYXRlZC4K
IC8vCi1USW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBl
ZCogY29uZCwgVEludGVybU5vZGVQYWlyIG5vZGVQYWlyLCBUU291cmNlTG9jIGxpbmUpCitUSW50
ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwg
VEludGVybU5vZGVQYWlyIG5vZGVQYWlyLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAg
IC8vCiAgICAgLy8gRm9yIGNvbXBpbGUgdGltZSBjb25zdGFudCBzZWxlY3Rpb25zLCBwcnVuZSB0
aGUgY29kZSBhbmQKQEAgLTU5Myw3ICs1NzcsNyBAQCBUSW50ZXJtTm9kZSogVEludGVybWVkaWF0
ZTo6YWRkU2VsZWN0aW9uCiAgICAgLy8KIAogICAgIGlmIChjb25kLT5nZXRBc1R5cGVkKCkgJiYg
Y29uZC0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgewotICAgICAgICBpZiAo
Y29uZC0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBv
aW50ZXIoKS0+Z2V0QkNvbnN0KCkgPT0gdHJ1ZSkKKyAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29u
c3RhbnRVbmlvbigpLT5nZXRCQ29uc3QoMCkgPT0gdHJ1ZSkKICAgICAgICAgICAgIHJldHVybiBu
b2RlUGFpci5ub2RlMSA/IHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKG5vZGVQYWlyLm5vZGUxLCBFT3BT
ZXF1ZW5jZSwgbm9kZVBhaXIubm9kZTEtPmdldExpbmUoKSkgOiBOVUxMOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICByZXR1cm4gbm9kZVBhaXIubm9kZTIgPyBzZXRBZ2dyZWdhdGVPcGVyYXRv
cihub2RlUGFpci5ub2RlMiwgRU9wU2VxdWVuY2UsIG5vZGVQYWlyLm5vZGUyLT5nZXRMaW5lKCkp
IDogTlVMTDsKQEAgLTYwNiw3ICs1OTAsNyBAQCBUSW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6
YWRkU2VsZWN0aW9uCiB9CiAKIAotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb21t
YShUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MgbGlu
ZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQ29tbWEoVEludGVybVR5cGVkKiBs
ZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAg
IGlmIChsZWZ0LT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYgcmlnaHQt
PmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewogICAgICAgICByZXR1cm4g
cmlnaHQ7CkBAIC02MjYsNyArNjEwLDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjph
ZGRDb21tYShUSQogLy8KIC8vIFJldHVybnMgdGhlIHNlbGVjdGlvbiBub2RlIGNyZWF0ZWQsIG9y
IDAgaWYgb25lIGNvdWxkIG5vdCBiZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6
OmFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2Nr
LCBUSW50ZXJtVHlwZWQqIGZhbHNlQmxvY2ssIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBl
ZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVy
bVR5cGVkKiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCogZmFsc2VCbG9jaywgY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSkKIHsKICAgICAvLwogICAgIC8vIEdldCBjb21wYXRpYmxlIHR5cGVzLgpAQCAt
NjQ3LDcgKzYzMSw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW8K
ICAgICAvLwogCiAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRVbmlvbigpICYmIHRydWVCbG9j
ay0+Z2V0QXNDb25zdGFudFVuaW9uKCkgJiYgZmFsc2VCbG9jay0+Z2V0QXNDb25zdGFudFVuaW9u
KCkpIHsKLSAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpLT5nZXRCQ29uc3QoKSkKKyAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3Rh
bnRVbmlvbigpLT5nZXRCQ29uc3QoMCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZUJsb2NrOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gZmFsc2VCbG9jazsKQEAgLTY2OSw3ICs2
NTMsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvCiAvLyBSZXR1
cm5zIHRoZSBjb25zdGFudCB1bmlvbiBub2RlIGNyZWF0ZWQuCiAvLwogCi1USW50ZXJtQ29uc3Rh
bnRVbmlvbiogVEludGVybWVkaWF0ZTo6YWRkQ29uc3RhbnRVbmlvbihDb25zdGFudFVuaW9uKiB1
bmlvbkFycmF5UG9pbnRlciwgY29uc3QgVFR5cGUmIHQsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRl
cm1Db25zdGFudFVuaW9uKiBUSW50ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9uKENvbnN0YW50
VW5pb24qIHVuaW9uQXJyYXlQb2ludGVyLCBjb25zdCBUVHlwZSYgdCwgY29uc3QgVFNvdXJjZUxv
YyYgbGluZSkKIHsKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSA9IG5ldyBUSW50ZXJt
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5UG9pbnRlciwgdCk7CiAgICAgbm9kZS0+c2V0TGluZShs
aW5lKTsKQEAgLTY3Nyw3ICs2NjEsNyBAQCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogVEludGVybWVk
aWF0ZTo6YWRkCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLVRJbnRlcm1UeXBlZCogVEludGVybWVk
aWF0ZTo6YWRkU3dpenpsZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIFRTb3VyY2VMb2MgbGluZSkK
K1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU3dpenpsZShUVmVjdG9yRmllbGRzJiBm
aWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAKICAgICBUSW50ZXJtQWdncmVnYXRl
KiBub2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOwpAQCAtNzAwLDcgKzY4
NCw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU3dpenpsZSgKIC8vCiAvLyBD
cmVhdGUgbG9vcCBub2Rlcy4KIC8vCi1USW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkTG9v
cChUTG9vcFR5cGUgdHlwZSwgVEludGVybU5vZGUqIGluaXQsIFRJbnRlcm1UeXBlZCogY29uZCwg
VEludGVybVR5cGVkKiBleHByLCBUSW50ZXJtTm9kZSogYm9keSwgVFNvdXJjZUxvYyBsaW5lKQor
VEludGVybU5vZGUqIFRJbnRlcm1lZGlhdGU6OmFkZExvb3AoVExvb3BUeXBlIHR5cGUsIFRJbnRl
cm1Ob2RlKiBpbml0LCBUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogZXhwciwgVElu
dGVybU5vZGUqIGJvZHksIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybU5v
ZGUqIG5vZGUgPSBuZXcgVEludGVybUxvb3AodHlwZSwgaW5pdCwgY29uZCwgZXhwciwgYm9keSk7
CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKQEAgLTcxMSwxMiArNjk1LDEyIEBAIFRJbnRlcm1O
b2RlKiBUSW50ZXJtZWRpYXRlOjphZGRMb29wKFRMb28KIC8vCiAvLyBBZGQgYnJhbmNoZXMuCiAv
LwotVEludGVybUJyYW5jaCogVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVyYXRvciBicmFu
Y2hPcCwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybUJyYW5jaCogVEludGVybWVkaWF0ZTo6YWRk
QnJhbmNoKFRPcGVyYXRvciBicmFuY2hPcCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAg
ICByZXR1cm4gYWRkQnJhbmNoKGJyYW5jaE9wLCAwLCBsaW5lKTsKIH0KIAotVEludGVybUJyYW5j
aCogVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVyYXRvciBicmFuY2hPcCwgVEludGVybVR5
cGVkKiBleHByZXNzaW9uLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtQnJhbmNoKiBUSW50ZXJt
ZWRpYXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBUSW50ZXJtVHlwZWQqIGV4cHJl
c3Npb24sIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybUJyYW5jaCogbm9k
ZSA9IG5ldyBUSW50ZXJtQnJhbmNoKGJyYW5jaE9wLCBleHByZXNzaW9uKTsKICAgICBub2RlLT5z
ZXRMaW5lKGxpbmUpOwpAQCAtODQ2LDYgKzgzMCw3IEBAIGJvb2wgVEludGVybVVuYXJ5Ojpwcm9t
b3RlKFRJbmZvU2luayYpCiAgICAgfQogCiAgICAgc2V0VHlwZShvcGVyYW5kLT5nZXRUeXBlKCkp
OworICAgIHR5cGUuc2V0UXVhbGlmaWVyKEV2cVRlbXBvcmFyeSk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTg2MCw3ICs4NDUsNyBAQCBib29sIFRJbnRlcm1CaW5hcnk6OnByb21vdGUoVElu
Zm9TaW5rJiBpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBvbmx5IGhhbmRsZXMgc2NhbGFycywg
dmVjdG9ycywgYW5kIG1hdHJpY2VzLgogICAgIGlmIChsZWZ0LT5pc0FycmF5KCkgfHwgcmlnaHQt
PmlzQXJyYXkoKSkgewotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsICJJbnZhbGlkIG9wZXJhdGlvbiBmb3IgYXJyYXlzIiwgZ2V0TGluZSgpKTsKKyAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5l
KCksICJJbnZhbGlkIG9wZXJhdGlvbiBmb3IgYXJyYXlzIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTk2NSw3ICs5NTAsNyBAQCBib29sIFRJbnRlcm1CaW5hcnk6OnByb21v
dGUoVEluZm9TaW5rJiBpCiAgICAgICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNU
eXBlLCBoaWdoZXJQcmVjaXNpb24sIEV2cVRlbXBvcmFyeSwgc2l6ZSwgZmFsc2UpKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIk1pc3NpbmcgZWxzZXMiLCBn
ZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiTWlzc2luZyBlbHNlcyIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAt
OTk0LDcgKzk3OSw3IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkK
ICAgICAgICAgICAgICAgICAgICAgc2V0VHlwZShUVHlwZShiYXNpY1R5cGUsIGhpZ2hlclByZWNp
c2lvbiwgRXZxVGVtcG9yYXJ5LCBzaXplLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiTWlzc2luZyBlbHNlcyIsIGdldExpbmUoKSk7CisgICAg
ICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBn
ZXRMaW5lKCksICJNaXNzaW5nIGVsc2VzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDM0LDIzICsxMDE5LDIy
IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKIAogYm9vbCBDb21w
YXJlU3RydWN0KGNvbnN0IFRUeXBlJiBsZWZ0Tm9kZVR5cGUsIENvbnN0YW50VW5pb24qIHJpZ2h0
VW5pb25BcnJheSwgQ29uc3RhbnRVbmlvbiogbGVmdFVuaW9uQXJyYXkpCiB7Ci0gICAgY29uc3Qg
VFR5cGVMaXN0KiBmaWVsZHMgPSBsZWZ0Tm9kZVR5cGUuZ2V0U3RydWN0KCk7CisgICAgY29uc3Qg
VEZpZWxkTGlzdCYgZmllbGRzID0gbGVmdE5vZGVUeXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsK
IAotICAgIHNpemVfdCBzdHJ1Y3RTaXplID0gZmllbGRzLT5zaXplKCk7Ci0gICAgaW50IGluZGV4
ID0gMDsKKyAgICBzaXplX3Qgc3RydWN0U2l6ZSA9IGZpZWxkcy5zaXplKCk7CisgICAgc2l6ZV90
IGluZGV4ID0gMDsKIAogICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgc3RydWN0U2l6ZTsgaisr
KSB7Ci0gICAgICAgIGludCBzaXplID0gKCpmaWVsZHMpW2pdLnR5cGUtPmdldE9iamVjdFNpemUo
KTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAg
IGlmICgoKmZpZWxkcylbal0udHlwZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFDb21wYXJlU3RydWN0dXJlKCooKmZpZWxkcylbal0udHlwZSwg
JnJpZ2h0VW5pb25BcnJheVtpbmRleF0sICZsZWZ0VW5pb25BcnJheVtpbmRleF0pKQorICAgICAg
ICBzaXplX3Qgc2l6ZSA9IGZpZWxkc1tqXS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBpZiAo
ZmllbGRzW2pdLT50eXBlKCktPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgeworICAgICAg
ICAgICAgICAgIGlmICghQ29tcGFyZVN0cnVjdHVyZSgqKGZpZWxkc1tqXS0+dHlwZSgpKSwgJnJp
Z2h0VW5pb25BcnJheVtpbmRleF0sICZsZWZ0VW5pb25BcnJheVtpbmRleF0pKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIGlmIChsZWZ0VW5pb25BcnJheVtpbmRleF0gIT0gcmlnaHRVbmlvbkFycmF5W2luZGV4
XSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGlu
ZGV4Kys7CiAgICAgICAgICAgICB9Ci0KICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTEwNjIsMTAgKzEwNDYsMTAgQEAgYm9vbCBDb21wYXJlU3RydWN0dXJlKGNvbnN0IFRU
eXBlJiBsZWZ0TgogICAgICAgICBUVHlwZSB0eXBlV2l0aG91dEFycmF5bmVzcyA9IGxlZnROb2Rl
VHlwZTsKICAgICAgICAgdHlwZVdpdGhvdXRBcnJheW5lc3MuY2xlYXJBcnJheW5lc3MoKTsKIAot
ICAgICAgICBpbnQgYXJyYXlTaXplID0gbGVmdE5vZGVUeXBlLmdldEFycmF5U2l6ZSgpOworICAg
ICAgICBzaXplX3QgYXJyYXlTaXplID0gbGVmdE5vZGVUeXBlLmdldEFycmF5U2l6ZSgpOwogCi0g
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpIHsKLSAgICAgICAgICAg
IGludCBvZmZzZXQgPSB0eXBlV2l0aG91dEFycmF5bmVzcy5nZXRPYmplY3RTaXplKCkgKiBpOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKSB7CisgICAgICAg
ICAgICBzaXplX3Qgb2Zmc2V0ID0gdHlwZVdpdGhvdXRBcnJheW5lc3MuZ2V0T2JqZWN0U2l6ZSgp
ICogaTsKICAgICAgICAgICAgIGlmICghQ29tcGFyZVN0cnVjdCh0eXBlV2l0aG91dEFycmF5bmVz
cywgJnJpZ2h0VW5pb25BcnJheVtvZmZzZXRdLCAmbGVmdFVuaW9uQXJyYXlbb2Zmc2V0XSkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMDg1LDcgKzEwNjks
NyBAQCBib29sIENvbXBhcmVTdHJ1Y3R1cmUoY29uc3QgVFR5cGUmIGxlZnROCiBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVk
KiBjb25zdGFudE5vZGUsIFRJbmZvU2luayYgaW5mb1NpbmspCiB7CiAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IGdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0gICAgaW50IG9iamVjdFNp
emUgPSBnZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgIHNpemVfdCBvYmplY3RTaXplID0g
Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKIAogICAgIGlmIChjb25zdGFudE5vZGUpIHsgIC8v
IGJpbmFyeSBvcGVyYXRpb25zCiAgICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2RlID0g
Y29uc3RhbnROb2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTEwOTUsMTMgKzEwNzksMTMg
QEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAvLyBm
b3IgYSBjYXNlIGxpa2UgZmxvYXQgZiA9IDEuMiArIHZlYzQoMiwzLDQsNSk7CiAgICAgICAgIGlm
IChjb25zdGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkgPT0gMSAmJiBvYmplY3RT
aXplID4gMSkgewogICAgICAgICAgICAgcmlnaHRVbmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5p
b25bb2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNp
emU7ICsraSkKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsg
KytpKQogICAgICAgICAgICAgICAgIHJpZ2h0VW5pb25BcnJheVtpXSA9ICpub2RlLT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpOwogICAgICAgICAgICAgcmV0dXJuVHlwZSA9IGdldFR5cGUoKTsKICAg
ICAgICAgfSBlbHNlIGlmIChjb25zdGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkg
PiAxICYmIG9iamVjdFNpemUgPT0gMSkgewogICAgICAgICAgICAgLy8gZm9yIGEgY2FzZSBsaWtl
IGZsb2F0IGYgPSB2ZWM0KDIsMyw0LDUpICsgMS4yOwogICAgICAgICAgICAgdW5pb25BcnJheSA9
IG5ldyBDb25zdGFudFVuaW9uW2NvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUo
KV07Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbnN0YW50Tm9kZS0+Z2V0VHlw
ZSgpLmdldE9iamVjdFNpemUoKTsgKytpKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb25zdGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7ICsraSkKICAgICAg
ICAgICAgICAgICB1bmlvbkFycmF5W2ldID0gKmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAgICAg
ICAgICAgICByZXR1cm5UeXBlID0gbm9kZS0+Z2V0VHlwZSgpOwogICAgICAgICAgICAgb2JqZWN0
U2l6ZSA9IGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKQEAgLTExMTUs
MTQgKzEwOTksMTQgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAog
ICAgICAgICAgICAgY2FzZSBFT3BBZGQ6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3Vw
cG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBv
YmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJy
YXlbaV0gPSB1bmlvbkFycmF5W2ldICsgcmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRU9wU3ViOgog
ICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0
U2l6ZV07CiAgICAgICAgICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldID0gdW5pb25BcnJheVtpXSAtIHJp
Z2h0VW5pb25BcnJheVtpXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMTMyLDEzICsxMTE2LDEzIEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50
VW5pb246OmZvbGQKICAgICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6CiAgICAg
ICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXpl
XTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAg
ICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldICogcmlnaHRV
bmlvbkFycmF5W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXg6CiAgICAgICAgICAgICAgICAg
aWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCB8fCBub2RlLT5nZXRCYXNp
Y1R5cGUoKSAhPSBFYnRGbG9hdCkgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBi
ZSBkb25lIGZvciBtYXRyaXggbXVsdGlwbHkiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAg
ICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUo
KSwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCBtdWx0aXBseSIp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCkBAIC0xMTU3LDExICsxMTQxLDExIEBA
IFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgIGNh
c2UgRU9wRGl2OgogICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4w
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsr
KSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6
ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRC
YXNpY1R5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAg
ICBpZiAocmlnaHRVbmlvbkFycmF5W2ldID09IDAuMGYpIHsKLSAgICAgICAgICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhXYXJuaW5nLCAiRGl2aWRlIGJ5IHplcm8gZXJy
b3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAg
ICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsIGdldExpbmUoKSwgIkRp
dmlkZSBieSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIik7CiAgICAgICAgICAg
ICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCh1bmlvbkFycmF5W2ldLmdldEZD
b25zdCgpIDwgMCA/IC1GTFRfTUFYIDogRkxUX01BWCk7CiAgICAgICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCh1bmlvbkFy
cmF5W2ldLmdldEZDb25zdCgpIC8gcmlnaHRVbmlvbkFycmF5W2ldLmdldEZDb25zdCgpKTsKQEAg
LTExNjksMTMgKzExNTMsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6
Zm9sZAogCiAgICAgICAgICAgICBjYXNlIEVidEludDoKICAgICAgICAgICAgICAgICBpZiAocmln
aHRVbmlvbkFycmF5W2ldID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhXYXJuaW5nLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNv
bnN0YW50IGZvbGRpbmciLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsIGdldExpbmUoKSwgIkRpdmlkZSBieSB6ZXJv
IGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIik7CiAgICAgICAgICAgICAgICAgICAgIHRl
bXBDb25zdEFycmF5W2ldLnNldElDb25zdChJTlRfTUFYKTsKICAgICAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0KHVuaW9u
QXJyYXlbaV0uZ2V0SUNvbnN0KCkgLyByaWdodFVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDb25zdGFu
dCBmb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciBcIi9cIiIsIGdldExpbmUoKSk7CisgICAgICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRM
aW5lKCksICJDb25zdGFudCBmb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciBcIi9cIiIpOwogICAg
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICB9CkBAIC0xMTg0LDcgKzExNjgsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRl
cm1Db25zdGFudFVuaW9uOjpmb2xkCiAKICAgICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNW
ZWN0b3I6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldEJhc2ljVHlwZSgpICE9IEVidEZs
b2F0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJp
eCB0aW1lcyB2ZWN0b3IiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50
IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCB0aW1lcyB2ZWN0b3IiKTsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bZ2V0Tm9taW5hbFNpemUoKV07
CkBAIC0xMjA1LDcgKzExODksNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9u
Ojpmb2xkCiAKICAgICAgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6CiAgICAgICAg
ICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCkgewotICAg
ICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciB2ZWN0b3IgdGltZXMgbWF0
cml4IiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJDb25zdGFudCBGb2xkaW5nIGNh
bm5vdCBiZSBkb25lIGZvciB2ZWN0b3IgdGltZXMgbWF0cml4Iik7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTIyMyw3ICsxMjA3LDcgQEAg
VEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2Fz
ZSBFT3BMb2dpY2FsQW5kOiAvLyB0aGlzIGNvZGUgaXMgd3JpdHRlbiBmb3IgcG9zc2libGUgZnV0
dXJlIHVzZSwgd2lsbCBub3QgZ2V0IGV4ZWN1dGVkIGN1cnJlbnRseQogICAgICAgICAgICAgICAg
IHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAg
ICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlbXBDb25zdEFycmF5W2ldID0gdW5pb25BcnJheVtpXSAmJiByaWdodFVuaW9uQXJyYXlb
aV07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTIzMSw3
ICsxMjE1LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAg
ICAgICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6IC8vIHRoaXMgY29kZSBpcyB3cml0dGVuIGZvciBw
b3NzaWJsZSBmdXR1cmUgdXNlLCB3aWxsIG5vdCBnZXQgZXhlY3V0ZWQgY3VycmVudGx5CiAgICAg
ICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXpl
XTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAg
ICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldIHx8IHJpZ2h0
VW5pb25BcnJheVtpXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMjM5LDcgKzEyMjMsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9u
Ojpmb2xkCiAgICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxYb3I6CiAgICAgICAgICAgICAgICAg
dGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAg
ICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2Ug
RWJ0Qm9vbDogdGVtcENvbnN0QXJyYXlbaV0uc2V0QkNvbnN0KCh1bmlvbkFycmF5W2ldID09IHJp
Z2h0VW5pb25BcnJheVtpXSkgPyBmYWxzZSA6IHRydWUpOyBicmVhazsKICAgICAgICAgICAgIGRl
ZmF1bHQ6IGFzc2VydChmYWxzZSAmJiAiRGVmYXVsdCBtaXNzaW5nIik7CkBAIC0xMjg1LDcgKzEy
NjksNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAg
ICAgICAgICAgICAgIGlmICghQ29tcGFyZVN0cnVjdHVyZShub2RlLT5nZXRUeXBlKCksIG5vZGUt
PmdldFVuaW9uQXJyYXlQb2ludGVyKCksIHVuaW9uQXJyYXkpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkr
KykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaW9uQXJyYXlbaV0gIT0gcmlnaHRV
bmlvbkFycmF5W2ldKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFn
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgIC8vIGJyZWFrIG91
dCBvZiBmb3IgbG9vcApAQCAtMTMxMSw3ICsxMjk1LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJt
Q29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgICAgICAgICBpZiAoQ29tcGFyZVN0cnVj
dHVyZShub2RlLT5nZXRUeXBlKCksIG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCksIHVuaW9u
QXJyYXkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG9iamVjdFNpemU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHVuaW9uQXJyYXlbaV0gPT0gcmlnaHRVbmlvbkFycmF5W2ldKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsgIC8vIGJyZWFrIG91dCBvZiBmb3IgbG9vcApAQCAtMTMzMyw3ICsxMzE3
LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAg
ICAgICAgIHJldHVybiB0ZW1wTm9kZTsKIAogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJJbnZh
bGlkIG9wZXJhdG9yIGZvciBjb25zdGFudCBmb2xkaW5nIiwgZ2V0TGluZSgpKTsKKyAgICAgICAg
ICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExp
bmUoKSwgIkludmFsaWQgb3BlcmF0b3IgZm9yIGNvbnN0YW50IGZvbGRpbmciKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICB0ZW1wTm9kZSA9IG5ldyBUSW50
ZXJtQ29uc3RhbnRVbmlvbih0ZW1wQ29uc3RBcnJheSwgcmV0dXJuVHlwZSk7CkBAIC0xMzQ2LDE0
ICsxMzMwLDE0IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAg
ICAgICAgLy8KICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5ld05vZGUgPSAwOwogICAg
ICAgICBDb25zdGFudFVuaW9uKiB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29i
amVjdFNpemVdOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykg
eworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewogICAg
ICAgICAgICAgc3dpdGNoKG9wKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBFT3BOZWdhdGl2ZToK
ICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6IHRlbXBDb25zdEFycmF5W2ld
LnNldEZDb25zdCgtdW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSk7IGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6ICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0
KC11bmlvbkFycmF5W2ldLmdldElDb25zdCgpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVk
IGludG8gY29uc3RhbnQiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAi
VW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM2MSw3ICsxMzQ1LDcgQEAgVEludGVybVR5cGVkKiBU
SW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdl
dFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRCb29sOiAgdGVtcENvbnN0QXJyYXlbaV0uc2V0QkNvbnN0KCF1bmlvbkFycmF5W2ldLmdldEJD
b25zdCgpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiLCBnZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBm
b2xkZWQgaW50byBjb25zdGFudCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTM3Nyw2NSArMTM2MSw2NCBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9u
Ojpmb2xkCiAKIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6cHJvbW90ZUNvbnN0YW50VW5p
b24oVEJhc2ljVHlwZSBwcm9tb3RlVG8sIFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2RlKQogewot
ICAgIENvbnN0YW50VW5pb24gKnJpZ2h0VW5pb25BcnJheSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCk7Ci0gICAgaW50IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgp
OworICAgIHNpemVfdCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKIAog
ICAgIENvbnN0YW50VW5pb24gKmxlZnRVbmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bc2l6
ZV07CiAKLSAgICBmb3IgKGludCBpPTA7IGkgPCBzaXplOyBpKyspIHsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogCiAgICAgICAgIHN3aXRjaCAocHJvbW90ZVRvKSB7
CiAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9k
ZS0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0SW50OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNv
bnN0KHN0YXRpY19jYXN0PGZsb2F0PihyaWdodFVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0
aWNfY2FzdDxmbG9hdD4obm9kZS0+Z2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oaSkpKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRCb29sOgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNv
bnN0KHN0YXRpY19jYXN0PGZsb2F0PihyaWdodFVuaW9uQXJyYXlbaV0uZ2V0QkNvbnN0KCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0
aWNfY2FzdDxmbG9hdD4obm9kZS0+Z2V0QkNvbnN0KHN0YXRpY19jYXN0PGJvb2w+KGkpKSkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXSA9IHJp
Z2h0VW5pb25BcnJheVtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5
W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4obm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19j
YXN0PGZsb2F0PihpKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQ2Fubm90IHByb21vdGUiLCBub2Rl
LT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJDYW5ub3QgcHJvbW90
ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAg
ICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBs
ZWZ0VW5pb25BcnJheVtpXSA9IHJpZ2h0VW5pb25BcnJheVtpXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUt
PmdldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KGkpKSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+
KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRCQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0
QkNvbnN0KHN0YXRpY19jYXN0PGJvb2w+KGkpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihy
aWdodFVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmdldEZD
b25zdChzdGF0aWNfY2FzdDxmbG9hdD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNhbm5vdCBw
cm9tb3RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAi
Q2Fubm90IHByb21vdGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
RWJ0Qm9vbDoKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldFR5cGUoKS5nZXRCYXNp
Y1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChyaWdodFVuaW9uQXJyYXlb
aV0uZ2V0SUNvbnN0KCkgIT0gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25B
cnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oaSkpICE9
IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ld
ID0gcmlnaHRVbmlvbkFycmF5W2ldOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9u
QXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUtPmdldEJDb25zdChzdGF0aWNfY2FzdDxib29sPihpKSkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5z
ZXRCQ29uc3QocmlnaHRVbmlvbkFycmF5W2ldLmdldEZDb25zdCgpICE9IDAuMGYpOworICAgICAg
ICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUtPmdldEZD
b25zdChzdGF0aWNfY2FzdDxmbG9hdD4oaSkpICE9IDAuMGYpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJD
YW5ub3QgcHJvbW90ZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExp
bmUoKSwgIkNhbm5vdCBwcm9tb3RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhJbnRlcm5hbEVycm9yLCAiSW5jb3JyZWN0IGRhdGEgdHlwZSBmb3VuZCIsIG5vZGUtPmdldExp
bmUoKSk7CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRl
cm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJJbmNvcnJlY3QgZGF0YSB0eXBlIGZvdW5kIik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmNwcAkocmV2
aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091
dHB1dEdMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwzICsxOSwxNyBAQCBib29sIFRPdXRw
dXRHTFNMOjp3cml0ZVZhcmlhYmxlUHJlY2lzaW9uCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQor
Cit2b2lkIFRPdXRwdXRHTFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKiBub2RlKQorewor
ICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IG9ialNpbmsoKTsKKworICAgIGlmIChub2RlLT5nZXRT
eW1ib2woKSA9PSAiZ2xfRnJhZ0RlcHRoRVhUIikKKyAgICB7CisgICAgICAgIG91dCA8PCAiZ2xf
RnJhZ0RlcHRoIjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgVE91dHB1dEdMU0xC
YXNlOjp2aXNpdFN5bWJvbChub2RlKTsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmgJKHJldmlzaW9uIDE1MjY0
OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBib29sIHdyaXRlVmFyaWFibGVQcmVjaXNpb24oVFByZWNpc2lvbik7CisgICAg
dmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqIG5vZGUpOwogfTsKIAogI2Vu
ZGlmICAvLyBDUk9TU0NPTVBJTEVSR0xTTF9PVVRQVVRHTFNMX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5j
cHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9PdXRwdXRHTFNMQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDI1ICs3OSw5IEBA
IHZvaWQgVE91dHB1dEdMU0xCYXNlOjp3cml0ZVZhcmlhYmxlVHlwZSgKICAgICBpZiAoKHF1YWxp
ZmllciAhPSBFdnFUZW1wb3JhcnkpICYmIChxdWFsaWZpZXIgIT0gRXZxR2xvYmFsKSkKICAgICAg
ICAgb3V0IDw8IHR5cGUuZ2V0UXVhbGlmaWVyU3RyaW5nKCkgPDwgIiAiOwogICAgIC8vIERlY2xh
cmUgdGhlIHN0cnVjdCBpZiB3ZSBoYXZlIG5vdCBkb25lIHNvIGFscmVhZHkuCi0gICAgaWYgKCh0
eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgJiYKLSAgICAgICAgKG1EZWNsYXJlZFN0
cnVjdHMuZmluZCh0eXBlLmdldFR5cGVOYW1lKCkpID09IG1EZWNsYXJlZFN0cnVjdHMuZW5kKCkp
KQorICAgIGlmICgodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpICYmICFzdHJ1Y3RE
ZWNsYXJlZCh0eXBlLmdldFN0cnVjdCgpKSkKICAgICB7Ci0gICAgICAgIG91dCA8PCAic3RydWN0
ICIgPDwgaGFzaE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKSA8PCAie1xuIjsKLSAgICAgICAgY29u
c3QgVFR5cGVMaXN0KiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOwotICAgICAgICBBU1NF
UlQoc3RydWN0dXJlICE9IE5VTEwpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
cnVjdHVyZS0+c2l6ZSgpOyArK2kpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBl
KiBmaWVsZFR5cGUgPSAoKnN0cnVjdHVyZSlbaV0udHlwZTsKLSAgICAgICAgICAgIEFTU0VSVChm
aWVsZFR5cGUgIT0gTlVMTCk7Ci0gICAgICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lv
bihmaWVsZFR5cGUtPmdldFByZWNpc2lvbigpKSkKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiAi
OwotICAgICAgICAgICAgb3V0IDw8IGdldFR5cGVOYW1lKCpmaWVsZFR5cGUpIDw8ICIgIiA8PCBo
YXNoTmFtZShmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpKTsKLSAgICAgICAgICAgIGlmIChmaWVs
ZFR5cGUtPmlzQXJyYXkoKSkKLSAgICAgICAgICAgICAgICBvdXQgPDwgYXJyYXlCcmFja2V0cygq
ZmllbGRUeXBlKTsKLSAgICAgICAgICAgIG91dCA8PCAiO1xuIjsKLSAgICAgICAgfQotICAgICAg
ICBvdXQgPDwgIn0iOwotICAgICAgICBtRGVjbGFyZWRTdHJ1Y3RzLmluc2VydCh0eXBlLmdldFR5
cGVOYW1lKCkpOworICAgICAgICBkZWNsYXJlU3RydWN0KHR5cGUuZ2V0U3RydWN0KCkpOwogICAg
IH0KICAgICBlbHNlCiAgICAgewpAQCAtMTM4LDI0ICsxMjIsMjUgQEAgY29uc3QgQ29uc3RhbnRV
bmlvbiogVE91dHB1dEdMU0xCYXNlOjp3cgogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkg
PT0gRWJ0U3RydWN0KQogICAgIHsKLSAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5cGUuZ2V0VHlw
ZU5hbWUoKSkgPDwgIigiOwotICAgICAgICBjb25zdCBUVHlwZUxpc3QqIHN0cnVjdHVyZSA9IHR5
cGUuZ2V0U3RydWN0KCk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gTlVMTCk7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkKKyAgICAg
ICAgY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAg
ICAgb3V0IDw8IGhhc2hOYW1lKHN0cnVjdHVyZS0+bmFtZSgpKSA8PCAiKCI7CisKKyAgICAgICAg
Y29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gc3RydWN0dXJlLT5maWVsZHMoKTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUgPSAoKnN0cnVjdHVyZSlbaV0udHlwZTsK
KyAgICAgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUgPSBmaWVsZHNbaV0tPnR5cGUoKTsK
ICAgICAgICAgICAgIEFTU0VSVChmaWVsZFR5cGUgIT0gTlVMTCk7CiAgICAgICAgICAgICBwQ29u
c3RVbmlvbiA9IHdyaXRlQ29uc3RhbnRVbmlvbigqZmllbGRUeXBlLCBwQ29uc3RVbmlvbik7Ci0g
ICAgICAgICAgICBpZiAoaSAhPSBzdHJ1Y3R1cmUtPnNpemUoKSAtIDEpIG91dCA8PCAiLCAiOwor
ICAgICAgICAgICAgaWYgKGkgIT0gZmllbGRzLnNpemUoKSAtIDEpIG91dCA8PCAiLCAiOwogICAg
ICAgICB9CiAgICAgICAgIG91dCA8PCAiKSI7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAg
ICAgIGludCBzaXplID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIHNpemVfdCBzaXpl
ID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CiAgICAgICAgIGJvb2wgd3JpdGVUeXBlID0gc2l6ZSA+
IDE7CiAgICAgICAgIGlmICh3cml0ZVR5cGUpIG91dCA8PCBnZXRUeXBlTmFtZSh0eXBlKSA8PCAi
KCI7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpLCArK3BDb25zdFVuaW9u
KQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSwgKytwQ29uc3RVbmlv
bikKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChwQ29uc3RVbmlvbi0+Z2V0VHlwZSgp
KQogICAgICAgICAgICAgewpAQCAtMjYwLDEyICsyNDUsMTggQEAgYm9vbCBUT3V0cHV0R0xTTEJh
c2U6OnZpc2l0QmluYXJ5KFZpc2l0IAogICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0
OgogICAgICAgICAgICAgaWYgKHZpc2l0ID09IEluVmlzaXQpCiAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgLy8gSGVyZSB3ZSBhcmUgd3JpdGluZyBvdXQgImZvby5iYXIiLCB3aGVyZSAi
Zm9vIiBpcyBzdHJ1Y3QKKyAgICAgICAgICAgICAgICAvLyBhbmQgImJhciIgaXMgZmllbGQuIElu
IEFTVCwgaXQgaXMgcmVwcmVzZW50ZWQgYXMgYSBiaW5hcnkKKyAgICAgICAgICAgICAgICAvLyBu
b2RlLCB3aGVyZSBsZWZ0IGNoaWxkIHJlcHJlc2VudHMgImZvbyIgYW5kIHJpZ2h0IGNoaWxkICJi
YXIiLgorICAgICAgICAgICAgICAgIC8vIFRoZSBub2RlIGl0c2VsZiByZXByZXNlbnRzICIuIi4g
VGhlIHN0cnVjdCBmaWVsZCAiYmFyIiBpcworICAgICAgICAgICAgICAgIC8vIGFjdHVhbGx5IHN0
b3JlZCBhcyBhbiBpbmRleCBpbnRvIFRTdHJ1Y3R1cmU6OmZpZWxkcy4KICAgICAgICAgICAgICAg
ICBvdXQgPDwgIi4iOwotICAgICAgICAgICAgICAgIC8vIFRPRE8oYWxva3ApOiBBU1NFUlQKLSAg
ICAgICAgICAgICAgICBUU3RyaW5nIGZpZWxkTmFtZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRGaWVs
ZE5hbWUoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBu
b2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgICAgICAgICBj
b25zdCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogaW5kZXggPSBub2RlLT5nZXRSaWdodCgpLT5nZXRB
c0NvbnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgICAgICBjb25zdCBURmllbGQqIGZpZWxkID0g
c3RydWN0dXJlLT5maWVsZHMoKVtpbmRleC0+Z2V0SUNvbnN0KDApXTsKIAotICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlJiBzdHJ1Y3RUeXBlID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFtU3ltYm9sVGFibGUuZmluZEJ1aWx0SW4oc3RydWN0VHlw
ZS5nZXRUeXBlTmFtZSgpKSkKKyAgICAgICAgICAgICAgICBUU3RyaW5nIGZpZWxkTmFtZSA9IGZp
ZWxkLT5uYW1lKCk7CisgICAgICAgICAgICAgICAgaWYgKCFtU3ltYm9sVGFibGUuZmluZEJ1aWx0
SW4oc3RydWN0dXJlLT5uYW1lKCkpKQogICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUgPSBo
YXNoTmFtZShmaWVsZE5hbWUpOwogCiAgICAgICAgICAgICAgICAgb3V0IDw8IGZpZWxkTmFtZTsK
QEAgLTU5Niw3ICs1ODcsNyBAQCBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRBZ2dyZWdhdGUo
VmlzCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUmIHR5cGUgPSBu
b2RlLT5nZXRUeXBlKCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUuZ2V0QmFzaWNUeXBl
KCkgPT0gRWJ0U3RydWN0KTsKLSAgICAgICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5n
ZXRUeXBlTmFtZSgpKSA8PCAiKCI7CisgICAgICAgICAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5
cGUuZ2V0U3RydWN0KCktPm5hbWUoKSkgPDwgIigiOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgZWxzZSBpZiAodmlzaXQgPT0gSW5WaXNpdCkKICAgICAgICAgICAgIHsKQEAgLTc2NSw3ICs3
NTYsNyBAQCBUU3RyaW5nIFRPdXRwdXRHTFNMQmFzZTo6Z2V0VHlwZU5hbWUoY29uCiAgICAgZWxz
ZQogICAgIHsKICAgICAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQot
ICAgICAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5cGUuZ2V0VHlwZU5hbWUoKSk7CisgICAgICAg
ICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRTdHJ1Y3QoKS0+bmFtZSgpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgb3V0IDw8IHR5cGUuZ2V0QmFzaWNTdHJpbmcoKTsKICAgICB9CkBA
IC03OTgsMyArNzg5LDI5IEBAIFRTdHJpbmcgVE91dHB1dEdMU0xCYXNlOjpoYXNoRnVuY3Rpb25O
YW0KICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgcmV0dXJuIGhhc2hOYW1lKG5hbWUpOwogfQor
Citib29sIFRPdXRwdXRHTFNMQmFzZTo6c3RydWN0RGVjbGFyZWQoY29uc3QgVFN0cnVjdHVyZSog
c3RydWN0dXJlKSBjb25zdAoreworICAgIHJldHVybiBtRGVjbGFyZWRTdHJ1Y3RzLmZpbmQoc3Ry
dWN0dXJlLT5uYW1lKCkpICE9IG1EZWNsYXJlZFN0cnVjdHMuZW5kKCk7Cit9CisKK3ZvaWQgVE91
dHB1dEdMU0xCYXNlOjpkZWNsYXJlU3RydWN0KGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K3sKKyAgICBUSW5mb1NpbmtCYXNlJiBvdXQgPSBvYmpTaW5rKCk7CisKKyAgICBvdXQgPDwgInN0
cnVjdCAiIDw8IGhhc2hOYW1lKHN0cnVjdHVyZS0+bmFtZSgpKSA8PCAie1xuIjsKKyAgICBjb25z
dCBURmllbGRMaXN0JiBmaWVsZHMgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytpKQorICAgIHsKKyAgICAgICAgY29uc3Qg
VEZpZWxkKiBmaWVsZCA9IGZpZWxkc1tpXTsKKyAgICAgICAgaWYgKHdyaXRlVmFyaWFibGVQcmVj
aXNpb24oZmllbGQtPnR5cGUoKS0+Z2V0UHJlY2lzaW9uKCkpKQorICAgICAgICAgICAgb3V0IDw8
ICIgIjsKKyAgICAgICAgb3V0IDw8IGdldFR5cGVOYW1lKCpmaWVsZC0+dHlwZSgpKSA8PCAiICIg
PDwgaGFzaE5hbWUoZmllbGQtPm5hbWUoKSk7CisgICAgICAgIGlmIChmaWVsZC0+dHlwZSgpLT5p
c0FycmF5KCkpCisgICAgICAgICAgICBvdXQgPDwgYXJyYXlCcmFja2V0cygqZmllbGQtPnR5cGUo
KSk7CisgICAgICAgIG91dCA8PCAiO1xuIjsKKyAgICB9CisgICAgb3V0IDw8ICJ9IjsKKworICAg
IG1EZWNsYXJlZFN0cnVjdHMuaW5zZXJ0KHN0cnVjdHVyZS0+bmFtZSgpKTsKK30KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNM
QmFzZS5oCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgVFN0cmluZyBoYXNoRnVuY3Rpb25OYW1lKGNvbnN0IFRTdHJpbmcm
IG1hbmdsZWRfbmFtZSk7CiAKIHByaXZhdGU6CisgICAgYm9vbCBzdHJ1Y3REZWNsYXJlZChjb25z
dCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0OworICAgIHZvaWQgZGVjbGFyZVN0cnVjdChj
b25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpOworCiAgICAgVEluZm9TaW5rQmFzZSYgbU9ialNp
bms7CiAgICAgYm9vbCBtRGVjbGFyaW5nVmFyaWFibGVzOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwCShyZXZpc2lv
biAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0
SExTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgT3V0cHV0SExTTDo6T3V0
cHV0SExTTChUUGFyc2VDb250ZXh0ICZjbwogICAgIG1Vc2VzUG9pbnRDb29yZCA9IGZhbHNlOwog
ICAgIG1Vc2VzRnJvbnRGYWNpbmcgPSBmYWxzZTsKICAgICBtVXNlc1BvaW50U2l6ZSA9IGZhbHNl
OworICAgIG1Vc2VzRnJhZ0RlcHRoID0gZmFsc2U7CiAgICAgbVVzZXNYb3IgPSBmYWxzZTsKICAg
ICBtVXNlc01vZDEgPSBmYWxzZTsKICAgICBtVXNlc01vZDJ2ID0gZmFsc2U7CkBAIC0xODksNiAr
MTkwLDExIEBAIHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKCkKICAgICAgICAgb3V0IDw8ICJcbiIK
ICAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0ge2Zsb2F0NCgwLCAw
LCAwLCAwKX07XG4iOwogCisgICAgICAgIGlmIChtVXNlc0ZyYWdEZXB0aCkKKyAgICAgICAgewor
ICAgICAgICAgICAgb3V0IDw8ICJzdGF0aWMgZmxvYXQgZ2xfRGVwdGggPSAwLjA7XG4iOworICAg
ICAgICB9CisKICAgICAgICAgaWYgKG1Vc2VzRnJhZ0Nvb3JkKQogICAgICAgICB7CiAgICAgICAg
ICAgICBvdXQgPDwgInN0YXRpYyBmbG9hdDQgZ2xfRnJhZ0Nvb3JkID0gZmxvYXQ0KDAsIDAsIDAs
IDApO1xuIjsKQEAgLTUwOSw2ICs1MTUsMTEgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoKQog
ICAgICAgICBvdXQgPDwgIiNkZWZpbmUgR0xfVVNFU19QT0lOVF9TSVpFXG4iOwogICAgIH0KIAor
ICAgIGlmIChtVXNlc0ZyYWdEZXB0aCkKKyAgICB7CisgICAgICAgIG91dCA8PCAiI2RlZmluZSBH
TF9VU0VTX0ZSQUdfREVQVEhcbiI7CisgICAgfQorCiAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkK
ICAgICB7CiAgICAgICAgIG91dCA8PCAic3RydWN0IGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzXG4i
CkBAIC04NDMsNiArODU0LDExIEBAIHZvaWQgT3V0cHV0SExTTDo6dmlzaXRTeW1ib2woVEludGVy
bVN5bWIKICAgICAgICAgbVVzZXNQb2ludFNpemUgPSB0cnVlOwogICAgICAgICBvdXQgPDwgbmFt
ZTsKICAgICB9CisgICAgZWxzZSBpZiAobmFtZSA9PSAiZ2xfRnJhZ0RlcHRoRVhUIikKKyAgICB7
CisgICAgICAgIG1Vc2VzRnJhZ0RlcHRoID0gdHJ1ZTsKKyAgICAgICAgb3V0IDw8ICJnbF9EZXB0
aCI7CisgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVy
ID0gbm9kZS0+Z2V0UXVhbGlmaWVyKCk7CkBAIC05NTIsNyArOTY4LDEwIEBAIGJvb2wgT3V0cHV0
SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQKICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RT
dHJ1Y3Q6CiAgICAgICAgIGlmICh2aXNpdCA9PSBJblZpc2l0KQogICAgICAgICB7Ci0gICAgICAg
ICAgICBvdXQgPDwgIi4iICsgZGVjb3JhdGVGaWVsZChub2RlLT5nZXRUeXBlKCkuZ2V0RmllbGRO
YW1lKCksIG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgIGNvbnN0IFRT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdldFN0cnVj
dCgpOworICAgICAgICAgICAgY29uc3QgVEludGVybUNvbnN0YW50VW5pb24qIGluZGV4ID0gbm9k
ZS0+Z2V0UmlnaHQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CisgICAgICAgICAgICBjb25zdCBU
RmllbGQqIGZpZWxkID0gc3RydWN0dXJlLT5maWVsZHMoKVtpbmRleC0+Z2V0SUNvbnN0KDApXTsK
KyAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksIG5v
ZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpKTsKIAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CkBAIC05NzQsNyArOTkzLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFy
eShWaXNpdCB2aXNpdAogCiAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KQogICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgaSA9IGVsZW1lbnQt
PmdldFVuaW9uQXJyYXlQb2ludGVyKClbMF0uZ2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgaSA9IGVsZW1lbnQtPmdldElDb25zdCgwKTsKIAogICAgICAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChpKQogICAgICAgICAgICAgICAgICAgICAgICAgewpAQCAtMTAyMSwx
OCArMTA0MCwxOCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0CiAg
ICAgICAgICAgICAgICAgb3V0IDw8ICIhKCI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGNvbnN0IFRUeXBlTGlzdCAqZmllbGRzID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0
U3RydWN0KCk7CisgICAgICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBub2RlLT5n
ZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLT5zaXplKCk7IGkrKykKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpmaWVsZFR5cGUgPSAoKmZpZWxkcylbaV0u
dHlwZTsKKyAgICAgICAgICAgICAgICBjb25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ldOwog
CiAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAg
ICAgICAgICAgICBvdXQgPDwgIi4iICsgZGVjb3JhdGVGaWVsZChmaWVsZFR5cGUtPmdldEZpZWxk
TmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSkgKyAiID09ICI7CisgICAgICAgICAg
ICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGQtPm5hbWUoKSwgbm9kZS0+Z2V0
TGVmdCgpLT5nZXRUeXBlKCkpICsgIiA9PSAiOwogICAgICAgICAgICAgICAgIG5vZGUtPmdldFJp
Z2h0KCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNv
cmF0ZUZpZWxkKGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCksIG5vZGUtPmdldExlZnQoKS0+Z2V0
VHlwZSgpKTsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIi4iICsgZGVjb3JhdGVGaWVsZChmaWVs
ZC0+bmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSk7CiAKLSAgICAgICAgICAgICAg
ICBpZiAoaSA8IGZpZWxkcy0+c2l6ZSgpIC0gMSkKKyAgICAgICAgICAgICAgICBpZiAoaSA8IGZp
ZWxkcy5zaXplKCkgLSAxKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
b3V0IDw8ICIgJiYgIjsKICAgICAgICAgICAgICAgICB9CkBAIC0xMjM4LDcgKzEyNTcsNyBAQCBi
b29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmIChtSW5zaWRlRnVuY3Rpb24pCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAg
IG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAg
ICAgICAgICAgIG91dCA8PCAie1xuIjsKIAogICAgICAgICAgICAgICAgIG1TY29wZURlcHRoKys7
CkBAIC0xMjU1LDcgKzEyNzQsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZp
c2l0IHZpCiAKICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBzaXQg
PSBub2RlLT5nZXRTZXF1ZW5jZSgpLmJlZ2luKCk7IHNpdCAhPSBub2RlLT5nZXRTZXF1ZW5jZSgp
LmVuZCgpOyBzaXQrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKCgqc2l0KS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKCgqc2l0KS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogCiAgICAgICAgICAgICAg
ICAgdHJhdmVyc2VTdGF0ZW1lbnRzKCpzaXQpOwogCkBAIC0xMjY0LDcgKzEyODMsNyBAQCBib29s
IE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpCiAKICAgICAgICAgICAgIGlmICht
SW5zaWRlRnVuY3Rpb24pCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0TGlu
ZURpcmVjdGl2ZShub2RlLT5nZXRFbmRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExp
bmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmxhc3RfbGluZSk7CiAgICAgICAgICAgICAgICAg
b3V0IDw8ICJ9XG4iOwogCiAgICAgICAgICAgICAgICAgbVNjb3BlRGVwdGgtLTsKQEAgLTEyODMs
NyArMTMwMiw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUtPmdldFR5cGUoKS5nZXRT
dHJ1Y3QoKSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZENvbnN0
cnVjdG9yKHZhcmlhYmxlLT5nZXRUeXBlKCksIHNjb3BlZFN0cnVjdCh2YXJpYWJsZS0+Z2V0VHlw
ZSgpLmdldFR5cGVOYW1lKCkpLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3Ry
dWN0b3IodmFyaWFibGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KHZhcmlhYmxlLT5nZXRUeXBl
KCkuZ2V0U3RydWN0KCktPm5hbWUoKSksIE5VTEwpOwogICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIGlmICghdmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpIHx8IHZhcmlhYmxl
LT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkgIT0gIiIpICAgLy8gVmFyaWFibGUgZGVj
bGFyYXRpb24KQEAgLTE0MDEsNyArMTQyMCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dy
ZWdhdGUoVmlzaXQgdmkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChzeW1ib2wtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSkKICAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RydWN0b3Ioc3ltYm9sLT5nZXRUeXBlKCks
IHNjb3BlZFN0cnVjdChzeW1ib2wtPmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpKSwgTlVMTCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhZGRDb25zdHJ1Y3RvcihzeW1ib2wtPmdldFR5cGUoKSwg
c2NvcGVkU3RydWN0KHN5bWJvbC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5uYW1lKCkpLCBOVUxM
KTsKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIG91dCA8PCBh
cmd1bWVudFN0cmluZyhzeW1ib2wpOwpAQCAtMTY1MCw4ICsxNjY5LDggQEAgYm9vbCBPdXRwdXRI
TFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0
LCAibWF0NCgiLCAiLCAiLCAiKSIpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wQ29u
c3RydWN0U3RydWN0OgotICAgICAgICBhZGRDb25zdHJ1Y3Rvcihub2RlLT5nZXRUeXBlKCksIHNj
b3BlZFN0cnVjdChub2RlLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSksICZub2RlLT5nZXRTZXF1
ZW5jZSgpKTsKLSAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgc3RydWN0TG9va3VwKG5vZGUt
PmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpKSArICJfY3RvcigiLCAiLCAiLCAiKSIpOworICAgICAg
ICBhZGRDb25zdHJ1Y3Rvcihub2RlLT5nZXRUeXBlKCksIHNjb3BlZFN0cnVjdChub2RlLT5nZXRU
eXBlKCkuZ2V0U3RydWN0KCktPm5hbWUoKSksICZub2RlLT5nZXRTZXF1ZW5jZSgpKTsKKyAgICAg
ICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgc3RydWN0TG9va3VwKG5vZGUtPmdldFR5cGUoKS5nZXRT
dHJ1Y3QoKS0+bmFtZSgpKSArICJfY3RvcigiLCAiLCAiLCAiKSIpOwogICAgICAgICBicmVhazsK
ICAgICAgIGNhc2UgRU9wTGVzc1RoYW46ICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIigi
LCAiIDwgIiwgIikiKTsgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BHcmVh
dGVyVGhhbjogICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgPiAiLCAiKSIpOyAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzQxLDcgKzE3NjAsNyBAQCBib29sIE91dHB1dEhMU0w6
OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpCiAKICAgICAgICAgb3V0IDw8ICIpXG4iOwogICAgICAg
ICAKLSAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAg
ICAgb3V0IDw8ICJ7XG4iOwogCiAgICAgICAgIGlmIChub2RlLT5nZXRUcnVlQmxvY2soKSkKQEAg
LTE3NDksMjAgKzE3NjgsMjAgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdFNlbGVjdGlvbihWaXNp
dCB2aQogICAgICAgICAgICAgdHJhdmVyc2VTdGF0ZW1lbnRzKG5vZGUtPmdldFRydWVCbG9jaygp
KTsKICAgICAgICAgfQogCi0gICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGlu
ZSgpKTsKKyAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3Rf
bGluZSk7CiAgICAgICAgIG91dCA8PCAiO1xufVxuIjsKIAogICAgICAgICBpZiAobm9kZS0+Z2V0
RmFsc2VCbG9jaygpKQogICAgICAgICB7CiAgICAgICAgICAgICBvdXQgPDwgImVsc2VcbiI7CiAK
LSAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5n
ZXRMaW5lKCkpOworICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxz
ZUJsb2NrKCktPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgICAgIG91dCA8PCAie1xu
IjsKIAotICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2Nr
KCktPmdldExpbmUoKSk7CisgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdl
dEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgdHJhdmVy
c2VTdGF0ZW1lbnRzKG5vZGUtPmdldEZhbHNlQmxvY2soKSk7CiAKLSAgICAgICAgICAgIG91dHB1
dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5lKCkpOworICAgICAg
ICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUo
KS5maXJzdF9saW5lKTsKICAgICAgICAgICAgIG91dCA8PCAiO1xufVxuIjsKICAgICAgICAgfQog
ICAgIH0KQEAgLTE3OTUsNyArMTgxNCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRMb29wKFZp
c2l0IHZpc2l0LCAKICAgICB7CiAgICAgICAgIG91dCA8PCAie2RvXG4iOwogCi0gICAgICAgIG91
dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgb3V0cHV0TGluZURp
cmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAie1xu
IjsKICAgICB9CiAgICAgZWxzZQpAQCAtMTgyMyw3ICsxODQyLDcgQEAgYm9vbCBPdXRwdXRITFNM
Ojp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIAogCiAgICAgICAgIG91dCA8PCAiKVxuIjsKICAgICAg
ICAgCi0gICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAg
ICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAg
ICAgIG91dCA8PCAie1xuIjsKICAgICB9CiAKQEAgLTE4MzIsMTIgKzE4NTEsMTIgQEAgYm9vbCBP
dXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIAogICAgICAgICB0cmF2ZXJzZVN0YXRl
bWVudHMobm9kZS0+Z2V0Qm9keSgpKTsKICAgICB9CiAKLSAgICBvdXRwdXRMaW5lRGlyZWN0aXZl
KG5vZGUtPmdldExpbmUoKSk7CisgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5l
KCkuZmlyc3RfbGluZSk7CiAgICAgb3V0IDw8ICI7fVxuIjsKIAogICAgIGlmIChub2RlLT5nZXRU
eXBlKCkgPT0gRUxvb3BEb1doaWxlKQogICAgIHsKLSAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2
ZShub2RlLT5nZXRDb25kaXRpb24oKS0+Z2V0TGluZSgpKTsKKyAgICAgICAgb3V0cHV0TGluZURp
cmVjdGl2ZShub2RlLT5nZXRDb25kaXRpb24oKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAg
ICAgICBvdXQgPDwgIndoaWxlKFxuIjsKIAogICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+
dHJhdmVyc2UodGhpcyk7CkBAIC0xOTc3LDcgKzE5OTYsNyBAQCBib29sIE91dHB1dEhMU0w6Omhh
bmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3Rh
bnQtPmdldEJhc2ljVHlwZSgpID09IEVidEludCAmJiBjb25zdGFudC0+Z2V0Tm9taW5hbFNpemUo
KSA9PSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4ID0gc3ltYm9sOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRp
YWwgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsID0gY29uc3RhbnQtPmdldElDb25zdCgw
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KQEAgLTE5OTksNyArMjAxOCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFu
ZGxlRXhjZXNzaXZlTG9vcChUSW4KICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQtPmdldEJh
c2ljVHlwZSgpID09IEVidEludCAmJiBjb25zdGFudC0+Z2V0Tm9taW5hbFNpemUoKSA9PSAxKQog
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGFyYXRvciA9IHRlc3Qt
PmdldE9wKCk7Ci0gICAgICAgICAgICAgICAgICAgIGxpbWl0ID0gY29uc3RhbnQtPmdldFVuaW9u
QXJyYXlQb2ludGVyKClbMF0uZ2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIGxpbWl0
ID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTIwMjAsNyArMjAzOSw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFu
ZGxlRXhjZXNzaXZlTG9vcChUSW4KICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAo
Y29uc3RhbnQtPmdldEJhc2ljVHlwZSgpID09IEVidEludCAmJiBjb25zdGFudC0+Z2V0Tm9taW5h
bFNpemUoKSA9PSAxKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaW50
IHZhbHVlID0gY29uc3RhbnQtPmdldFVuaW9uQXJyYXlQb2ludGVyKClbMF0uZ2V0SUNvbnN0KCk7
CisgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9IGNvbnN0YW50LT5nZXRJQ29uc3QoMCk7
CiAKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcCkKICAgICAgICAgICAgICAgICAgICAg
ewpAQCAtMjEwOSw3ICsyMTI4LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVM
b29wKFRJbgogICAgICAgICAgICAgICAgIG91dCA8PCBpbmNyZW1lbnQ7CiAgICAgICAgICAgICAg
ICAgb3V0IDw8ICIpXG4iOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG91dHB1
dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRM
aW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgICAgICAg
ICBvdXQgPDwgIntcbiI7CiAKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0Qm9keSgpKQpA
QCAtMjExNyw3ICsyMTM2LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29w
KFRJbgogICAgICAgICAgICAgICAgICAgICBub2RlLT5nZXRCb2R5KCktPnRyYXZlcnNlKHRoaXMp
OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3Rp
dmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZl
KG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgIjt9
XG4iOwogCiAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdExvb3BGcmFnbWVudCkKQEAgLTIyMTMs
MjIgKzIyMzIsMjMgQEAgVFN0cmluZyBPdXRwdXRITFNMOjp0eXBlU3RyaW5nKGNvbnN0IFRUeQog
ewogICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkKICAgICB7Ci0gICAg
ICAgIGlmICh0eXBlLmdldFR5cGVOYW1lKCkgIT0gIiIpCisgICAgICAgIGNvbnN0IFRTdHJpbmcm
IHR5cGVOYW1lID0gdHlwZS5nZXRTdHJ1Y3QoKS0+bmFtZSgpOworICAgICAgICBpZiAodHlwZU5h
bWUgIT0gIiIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdHJ1Y3RMb29rdXAodHlw
ZS5nZXRUeXBlTmFtZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJ1Y3RMb29rdXAodHlwZU5h
bWUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgICAvLyBOYW1lbGVzcyBzdHJ1Y3R1cmUsIGRl
ZmluZSBpbiBwbGFjZQogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZUxpc3QgJmZp
ZWxkcyA9ICp0eXBlLmdldFN0cnVjdCgpOworICAgICAgICAgICAgY29uc3QgVEZpZWxkTGlzdCAm
ZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKICAgICAgICAgICAgIFRTdHJp
bmcgc3RyaW5nID0gInN0cnVjdFxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xu
IjsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBmaWVsZHMuc2l6
ZSgpOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJmZp
ZWxkID0gKmZpZWxkc1tpXS50eXBlOworICAgICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmll
bGQgPSBmaWVsZHNbaV07CiAKLSAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAgICAiICsgdHlw
ZVN0cmluZyhmaWVsZCkgKyAiICIgKyBkZWNvcmF0ZShmaWVsZC5nZXRGaWVsZE5hbWUoKSkgKyBh
cnJheVN0cmluZyhmaWVsZCkgKyAiO1xuIjsKKyAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAg
ICAiICsgdHlwZVN0cmluZygqZmllbGQtPnR5cGUoKSkgKyAiICIgKyBkZWNvcmF0ZShmaWVsZC0+
bmFtZSgpKSArIGFycmF5U3RyaW5nKCpmaWVsZC0+dHlwZSgpKSArICI7XG4iOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBzdHJpbmcgKz0gIn0gIjsKQEAgLTIzMDQsMTEgKzIzMjQsMTIg
QEAgVFN0cmluZyBPdXRwdXRITFNMOjppbml0aWFsaXplcihjb25zdCBUVAogewogICAgIFRTdHJp
bmcgc3RyaW5nOwogCi0gICAgZm9yIChpbnQgY29tcG9uZW50ID0gMDsgY29tcG9uZW50IDwgdHlw
ZS5nZXRPYmplY3RTaXplKCk7IGNvbXBvbmVudCsrKQorICAgIHNpemVfdCBzaXplID0gdHlwZS5n
ZXRPYmplY3RTaXplKCk7CisgICAgZm9yIChzaXplX3QgY29tcG9uZW50ID0gMDsgY29tcG9uZW50
IDwgc2l6ZTsgY29tcG9uZW50KyspCiAgICAgewogICAgICAgICBzdHJpbmcgKz0gIjAiOwogCi0g
ICAgICAgIGlmIChjb21wb25lbnQgPCB0eXBlLmdldE9iamVjdFNpemUoKSAtIDEpCisgICAgICAg
IGlmIChjb21wb25lbnQgKyAxIDwgc2l6ZSkKICAgICAgICAgewogICAgICAgICAgICAgc3RyaW5n
ICs9ICIsICI7CiAgICAgICAgIH0KQEAgLTIzNDcsMTMgKzIzNjgsMTMgQEAgdm9pZCBPdXRwdXRI
TFNMOjphZGRDb25zdHJ1Y3Rvcihjb25zdCBUVAogICAgICAgICBzdHJ1Y3R1cmUgKz0gInN0cnVj
dCAiICsgZGVjb3JhdGUobmFtZSkgKyAiXG4iCiAgICAgICAgICAgICAgICAgICAgICAie1xuIjsK
IAotICAgICAgICBjb25zdCBUVHlwZUxpc3QgJmZpZWxkcyA9ICp0eXBlLmdldFN0cnVjdCgpOwor
ICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVs
ZHMoKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXpl
KCk7IGkrKykKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUgJmZpZWxkID0gKmZp
ZWxkc1tpXS50eXBlOworICAgICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCA9IGZpZWxkc1tp
XTsKIAotICAgICAgICAgICAgc3RydWN0dXJlICs9ICIgICAgIiArIHR5cGVTdHJpbmcoZmllbGQp
ICsgIiAiICsgZGVjb3JhdGVGaWVsZChmaWVsZC5nZXRGaWVsZE5hbWUoKSwgdHlwZSkgKyBhcnJh
eVN0cmluZyhmaWVsZCkgKyAiO1xuIjsKKyAgICAgICAgICAgIHN0cnVjdHVyZSArPSAiICAgICIg
KyB0eXBlU3RyaW5nKCpmaWVsZC0+dHlwZSgpKSArICIgIiArIGRlY29yYXRlRmllbGQoZmllbGQt
Pm5hbWUoKSwgdHlwZSkgKyBhcnJheVN0cmluZygqZmllbGQtPnR5cGUoKSkgKyAiO1xuIjsKICAg
ICAgICAgfQogCiAgICAgICAgIHN0cnVjdHVyZSArPSAifTtcbiI7CkBAIC0yMzY1LDcgKzIzODYs
NyBAQCB2b2lkIE91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGN0b3JQYXJhbWV0ZXJzLnB1c2hfYmFjaygqZmllbGRzW2ldLnR5cGUp
OworICAgICAgICAgICAgY3RvclBhcmFtZXRlcnMucHVzaF9iYWNrKCpmaWVsZHNbaV0tPnR5cGUo
KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAocGFyYW1ldGVycykKQEAgLTI0NTgs
MjcgKzI0NzksMzAgQEAgdm9pZCBPdXRwdXRITFNMOjphZGRDb25zdHJ1Y3Rvcihjb25zdCBUVAog
ICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBpbnQgcmVtYWluaW5nQ29tcG9uZW50cyA9
IGN0b3JUeXBlLmdldE9iamVjdFNpemUoKTsKLSAgICAgICAgaW50IHBhcmFtZXRlckluZGV4ID0g
MDsKKyAgICAgICAgc2l6ZV90IHJlbWFpbmluZ0NvbXBvbmVudHMgPSBjdG9yVHlwZS5nZXRPYmpl
Y3RTaXplKCk7CisgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJJbmRleCA9IDA7CiAKICAgICAgICAg
d2hpbGUgKHJlbWFpbmluZ0NvbXBvbmVudHMgPiAwKQogICAgICAgICB7CiAgICAgICAgICAgICBj
b25zdCBUVHlwZSAmcGFyYW1ldGVyID0gY3RvclBhcmFtZXRlcnNbcGFyYW1ldGVySW5kZXhdOwot
ICAgICAgICAgICAgYm9vbCBtb3JlUGFyYW1ldGVycyA9IHBhcmFtZXRlckluZGV4IDwgKGludClj
dG9yUGFyYW1ldGVycy5zaXplKCkgLSAxOworICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHBhcmFt
ZXRlclNpemUgPSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAgICAgYm9vbCBt
b3JlUGFyYW1ldGVycyA9IHBhcmFtZXRlckluZGV4ICsgMSA8IGN0b3JQYXJhbWV0ZXJzLnNpemUo
KTsKIAogICAgICAgICAgICAgY29uc3RydWN0b3IgKz0gIngiICsgc3RyKHBhcmFtZXRlckluZGV4
KTsKIAogICAgICAgICAgICAgaWYgKHBhcmFtZXRlci5pc1NjYWxhcigpKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyLmdldE9i
amVjdFNpemUoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocGFyYW1ldGVyU2l6ZSA8PSByZW1h
aW5pbmdDb21wb25lbnRzKTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRzIC09
IHBhcmFtZXRlclNpemU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChwYXJh
bWV0ZXIuaXNWZWN0b3IoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAocmVt
YWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpIHx8IG1vcmVQYXJh
bWV0ZXJzKQorICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmdDb21wb25lbnRzID09IHBhcmFt
ZXRlclNpemUgfHwgbW9yZVBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRzIC09IHBhcmFtZXRlci5nZXRPYmplY3RTaXpl
KCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJlbWFpbmlu
Z0NvbXBvbmVudHMpOworICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRzIC09
IHBhcmFtZXRlclNpemU7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPCBwYXJhbWV0ZXIuZ2V0Tm9taW5hbFNpemUoKSkKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChyZW1haW5pbmdDb21wb25lbnRzIDwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihwYXJhbWV0ZXIuZ2V0Tm9taW5hbFNpemUoKSkpCiAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlbWFpbmluZ0NvbXBvbmVudHMpCiAgICAgICAg
ICAgICAgICAgICAgIHsKQEAgLTI0OTUsOSArMjUxOSwxMCBAQCB2b2lkIE91dHB1dEhMU0w6OmFk
ZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlm
IChwYXJhbWV0ZXIuaXNNYXRyaXgoKSB8fCBwYXJhbWV0ZXIuZ2V0U3RydWN0KCkpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlbWFpbmluZ0NvbXBvbmVudHMgPT0gcGFy
YW1ldGVyLmdldE9iamVjdFNpemUoKSB8fCBtb3JlUGFyYW1ldGVycyk7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKHJlbWFpbmluZ0NvbXBvbmVudHMgPT0gcGFyYW1ldGVyU2l6ZSB8fCBtb3JlUGFy
YW1ldGVycyk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtZXRlclNpemUgPD0gcmVtYWlu
aW5nQ29tcG9uZW50cyk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcmVtYWlu
aW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAgICAg
ICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6ZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKIApAQCAtMjUzNCwxNyArMjU1OSwxNyBA
QCBjb25zdCBDb25zdGFudFVuaW9uICpPdXRwdXRITFNMOjp3cml0ZUNvCiAKICAgICBpZiAodHlw
ZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCiAgICAgewotICAgICAgICBvdXQgPDwgc3Ry
dWN0TG9va3VwKHR5cGUuZ2V0VHlwZU5hbWUoKSkgKyAiX2N0b3IoIjsKKyAgICAgICAgb3V0IDw8
IHN0cnVjdExvb2t1cCh0eXBlLmdldFN0cnVjdCgpLT5uYW1lKCkpICsgIl9jdG9yKCI7CiAgICAg
ICAgIAotICAgICAgICBjb25zdCBUVHlwZUxpc3QgKnN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0
KCk7CisgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCkt
PmZpZWxkcygpOwogCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RydWN0dXJlLT5z
aXplKCk7IGkrKykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgp
OyBpKyspCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlICpmaWVsZFR5cGUgPSAo
KnN0cnVjdHVyZSlbaV0udHlwZTsKKyAgICAgICAgICAgIGNvbnN0IFRUeXBlICpmaWVsZFR5cGUg
PSBmaWVsZHNbaV0tPnR5cGUoKTsKIAogICAgICAgICAgICAgY29uc3RVbmlvbiA9IHdyaXRlQ29u
c3RhbnRVbmlvbigqZmllbGRUeXBlLCBjb25zdFVuaW9uKTsKIAotICAgICAgICAgICAgaWYgKGkg
IT0gc3RydWN0dXJlLT5zaXplKCkgLSAxKQorICAgICAgICAgICAgaWYgKGkgIT0gZmllbGRzLnNp
emUoKSAtIDEpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICIsICI7CiAg
ICAgICAgICAgICB9CkBAIC0yNTU0LDcgKzI1NzksNyBAQCBjb25zdCBDb25zdGFudFVuaW9uICpP
dXRwdXRITFNMOjp3cml0ZUNvCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGludCBz
aXplID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIHNpemVfdCBzaXplID0gdHlwZS5n
ZXRPYmplY3RTaXplKCk7CiAgICAgICAgIGJvb2wgd3JpdGVUeXBlID0gc2l6ZSA+IDE7CiAgICAg
ICAgIAogICAgICAgICBpZiAod3JpdGVUeXBlKQpAQCAtMjU2Miw3ICsyNTg3LDcgQEAgY29uc3Qg
Q29uc3RhbnRVbmlvbiAqT3V0cHV0SExTTDo6d3JpdGVDbwogICAgICAgICAgICAgb3V0IDw8IHR5
cGVTdHJpbmcodHlwZSkgPDwgIigiOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBzaXplOyBpKyssIGNvbnN0VW5pb24rKykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyBpKyssIGNvbnN0VW5pb24rKykKICAgICAgICAgewogICAgICAgICAgICAg
c3dpdGNoIChjb25zdFVuaW9uLT5nZXRUeXBlKCkpCiAgICAgICAgICAgICB7CkBAIC0yNjU1LDcg
KzI2ODAsNyBAQCBUU3RyaW5nIE91dHB1dEhMU0w6OmRlY29yYXRlVW5pZm9ybShjb25zCiAKIFRT
dHJpbmcgT3V0cHV0SExTTDo6ZGVjb3JhdGVGaWVsZChjb25zdCBUU3RyaW5nICZzdHJpbmcsIGNv
bnN0IFRUeXBlICZzdHJ1Y3R1cmUpCiB7Ci0gICAgaWYgKHN0cnVjdHVyZS5nZXRUeXBlTmFtZSgp
LmNvbXBhcmUoMCwgMywgImdsXyIpICE9IDApCisgICAgaWYgKHN0cnVjdHVyZS5nZXRTdHJ1Y3Qo
KS0+bmFtZSgpLmNvbXBhcmUoMCwgMywgImdsXyIpICE9IDApCiAgICAgewogICAgICAgICByZXR1
cm4gZGVjb3JhdGUoc3RyaW5nKTsKICAgICB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmgJKHJldmlzaW9uIDE1MjY0OSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk3LDYgKzk3LDcgQEAgY2xhc3MgT3V0cHV0SExTTCA6IHB1YmxpYyBUSW50
ZXJtVHJhdmVycwogICAgIGJvb2wgbVVzZXNQb2ludENvb3JkOwogICAgIGJvb2wgbVVzZXNGcm9u
dEZhY2luZzsKICAgICBib29sIG1Vc2VzUG9pbnRTaXplOworICAgIGJvb2wgbVVzZXNGcmFnRGVw
dGg7CiAgICAgYm9vbCBtVXNlc1hvcjsKICAgICBib29sIG1Vc2VzTW9kMTsKICAgICBib29sIG1V
c2VzTW9kMnY7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFy
c2VIZWxwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9QYXJzZUhlbHBlci5jcHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykg
MjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAg
LTIyLDcgKzIyLDcgQEAKIC8vIExvb2sgYXQgYSAnLicgZmllbGQgc2VsZWN0b3Igc3RyaW5nIGFu
ZCBjaGFuZ2UgaXQgaW50byBvZmZzZXRzCiAvLyBmb3IgYSB2ZWN0b3IuCiAvLwotYm9vbCBUUGFy
c2VDb250ZXh0OjpwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBp
bnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYgZmllbGRzLCBpbnQgbGluZSkKK2Jvb2wgVFBhcnNl
Q29udGV4dDo6cGFyc2VWZWN0b3JGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50
IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkK
IHsKICAgICBmaWVsZHMubnVtID0gKGludCkgY29tcFN0cmluZy5zaXplKCk7CiAgICAgaWYgKGZp
ZWxkcy5udW0gPiA0KSB7CkBAIC0xMTUsNyArMTE1LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpw
YXJzZVZlY3RvckZpZWxkcyhjbwogLy8gTG9vayBhdCBhICcuJyBmaWVsZCBzZWxlY3RvciBzdHJp
bmcgYW5kIGNoYW5nZSBpdCBpbnRvIG9mZnNldHMKIC8vIGZvciBhIG1hdHJpeC4KIC8vCi1ib29s
IFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJp
bmcsIGludCBtYXRTaXplLCBUTWF0cml4RmllbGRzJiBmaWVsZHMsIGludCBsaW5lKQorYm9vbCBU
UGFyc2VDb250ZXh0OjpwYXJzZU1hdHJpeEZpZWxkcyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5n
LCBpbnQgbWF0U2l6ZSwgVE1hdHJpeEZpZWxkcyYgZmllbGRzLCBjb25zdCBUU291cmNlTG9jJiBs
aW5lKQogewogICAgIGZpZWxkcy53aG9sZVJvdyA9IGZhbHNlOwogICAgIGZpZWxkcy53aG9sZUNv
bCA9IGZhbHNlOwpAQCAtMTc1LDIyICsxNzUsMjQgQEAgdm9pZCBUUGFyc2VDb250ZXh0OjpyZWNv
dmVyKCkKIC8vCiAvLyBVc2VkIGJ5IGZsZXgvYmlzb24gdG8gb3V0cHV0IGFsbCBzeW50YXggYW5k
IHBhcnNpbmcgZXJyb3JzLgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6ZXJyb3IoVFNvdXJjZUxv
YyBsb2MsCit2b2lkIFRQYXJzZUNvbnRleHQ6OmVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFy
KiB0b2tlbiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5m
bykKIHsKICAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwotICAgIERlY29kZVNvdXJjZUxv
Yyhsb2MsICZzcmNMb2MuZmlsZSwgJnNyY0xvYy5saW5lKTsKKyAgICBzcmNMb2MuZmlsZSA9IGxv
Yy5maXJzdF9maWxlOworICAgIHNyY0xvYy5saW5lID0gbG9jLmZpcnN0X2xpbmU7CiAgICAgZGlh
Z25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9zdGljczo6RVJST1IsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNyY0xvYywgcmVhc29uLCB0b2tlbiwgZXh0cmFJbmZvKTsKIAogfQogCi12
b2lkIFRQYXJzZUNvbnRleHQ6Ondhcm5pbmcoVFNvdXJjZUxvYyBsb2MsCit2b2lkIFRQYXJzZUNv
bnRleHQ6Ondhcm5pbmcoY29uc3QgVFNvdXJjZUxvYyYgbG9jLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvKSB7CiAgICAgcHA6OlNv
dXJjZUxvY2F0aW9uIHNyY0xvYzsKLSAgICBEZWNvZGVTb3VyY2VMb2MobG9jLCAmc3JjTG9jLmZp
bGUsICZzcmNMb2MubGluZSk7CisgICAgc3JjTG9jLmZpbGUgPSBsb2MuZmlyc3RfZmlsZTsKKyAg
ICBzcmNMb2MubGluZSA9IGxvYy5maXJzdF9saW5lOwogICAgIGRpYWdub3N0aWNzLndyaXRlSW5m
byhwcDo6RGlhZ25vc3RpY3M6OldBUk5JTkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNy
Y0xvYywgcmVhc29uLCB0b2tlbiwgZXh0cmFJbmZvKTsKIH0KQEAgLTIwMyw3ICsyMDUsNyBAQCB2
b2lkIFRQYXJzZUNvbnRleHQ6OnRyYWNlKGNvbnN0IGNoYXIqIHN0CiAvLwogLy8gU2FtZSBlcnJv
ciBtZXNzYWdlIGZvciBhbGwgcGxhY2VzIGFzc2lnbm1lbnRzIGRvbid0IHdvcmsuCiAvLwotdm9p
ZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcihpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRT
dHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCkKK3ZvaWQgVFBhcnNlQ29udGV4dDo6YXNzaWduRXJy
b3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwg
VFN0cmluZyByaWdodCkKIHsKICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07
CiAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJjYW5ub3QgY29udmVydCBmcm9tICciIDw8IHJpZ2h0
IDw8ICInIHRvICciIDw8IGxlZnQgPDwgIiciOwpAQCAtMjE0LDcgKzIxNiw3IEBAIHZvaWQgVFBh
cnNlQ29udGV4dDo6YXNzaWduRXJyb3IoaW50IGxpbmUKIC8vCiAvLyBTYW1lIGVycm9yIG1lc3Nh
Z2UgZm9yIGFsbCBwbGFjZXMgdW5hcnkgb3BlcmF0aW9ucyBkb24ndCB3b3JrLgogLy8KLXZvaWQg
VFBhcnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0
cmluZyBvcGVyYW5kKQordm9pZCBUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJyb3IoY29uc3QgVFNv
dXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgb3BlcmFuZCkKIHsKICAgICBz
dGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAgICAgZXh0cmFJbmZvU3RyZWFtIDw8
ICJubyBvcGVyYXRpb24gJyIgPDwgb3AgPDwgIicgZXhpc3RzIHRoYXQgdGFrZXMgYW4gb3BlcmFu
ZCBvZiB0eXBlICIgPDwgb3BlcmFuZCAKQEAgLTIyNiw3ICsyMjgsNyBAQCB2b2lkIFRQYXJzZUNv
bnRleHQ6OnVuYXJ5T3BFcnJvcihpbnQgbGluCiAvLwogLy8gU2FtZSBlcnJvciBtZXNzYWdlIGZv
ciBhbGwgYmluYXJ5IG9wZXJhdGlvbnMgZG9uJ3Qgd29yay4KIC8vCi12b2lkIFRQYXJzZUNvbnRl
eHQ6OmJpbmFyeU9wRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQs
IFRTdHJpbmcgcmlnaHQpCit2b2lkIFRQYXJzZUNvbnRleHQ6OmJpbmFyeU9wRXJyb3IoY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyBy
aWdodCkKIHsKICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAgICAgZXh0
cmFJbmZvU3RyZWFtIDw8ICJubyBvcGVyYXRpb24gJyIgPDwgb3AgPDwgIicgZXhpc3RzIHRoYXQg
dGFrZXMgYSBsZWZ0LWhhbmQgb3BlcmFuZCBvZiB0eXBlICciIDw8IGxlZnQgCkBAIC0yMzUsNyAr
MjM3LDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0OjpiaW5hcnlPcEVycm9yKGludCBsaQogICAgIGVy
cm9yKGxpbmUsICIgd3Jvbmcgb3BlcmFuZCB0eXBlcyAiLCBvcCwgZXh0cmFJbmZvLmNfc3RyKCkp
OyAKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKGludCBsaW5l
LCBUUHJlY2lzaW9uIHByZWNpc2lvbiwgVEJhc2ljVHlwZSB0eXBlKXsKK2Jvb2wgVFBhcnNlQ29u
dGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHJlY2lz
aW9uIHByZWNpc2lvbiwgVEJhc2ljVHlwZSB0eXBlKXsKICAgICBpZiAoIWNoZWNrc1ByZWNpc2lv
bkVycm9ycykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHN3aXRjaCggdHlwZSApewpAQCAt
MjYzLDcgKzI2NSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVjaygK
IC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJz
ZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50
ZXJtVHlwZWQqIG5vZGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soY29u
c3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRlcm1UeXBlZCogbm9kZSkK
IHsKICAgICBUSW50ZXJtU3ltYm9sKiBzeW1Ob2RlID0gbm9kZS0+Z2V0QXNTeW1ib2xOb2RlKCk7
CiAgICAgVEludGVybUJpbmFyeSogYmluYXJ5Tm9kZSA9IG5vZGUtPmdldEFzQmluYXJ5Tm9kZSgp
OwpAQCAtMjg2LDcgKzI4OCw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVj
ayhpbnQKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKFRJbnRlcm1TZXF1
ZW5jZTo6aXRlcmF0b3IgcCA9IGFnZ3JOb2RlLT5nZXRTZXF1ZW5jZSgpLmJlZ2luKCk7IAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwICE9IGFnZ3JOb2Rl
LT5nZXRTZXF1ZW5jZSgpLmVuZCgpOyBwKyspIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHZh
bHVlID0gKCpwKS0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25B
cnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIGludCB2YWx1
ZSA9ICgqcCktPmdldEFzVHlwZWQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldElDb25zdCgw
KTsKICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0W3ZhbHVlXSsrOyAgICAgCiAgICAgICAgICAg
ICAgICAgICAgIGlmIChvZmZzZXRbdmFsdWVdID4gMSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIG9mIHN3aXp6bGUgY2Fubm90IGhhdmUgZHVwbGljYXRl
IGNvbXBvbmVudHMiLCBvcCk7CkBAIC0zMTcsNyArMzE5LDYgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjpsVmFsdWVFcnJvckNoZWNrKGludAogICAgIGNhc2UgRXZxQXR0cmlidXRlOiAgICAgIG1lc3Nh
Z2UgPSAiY2FuJ3QgbW9kaWZ5IGFuIGF0dHJpYnV0ZSI7ICAgYnJlYWs7CiAgICAgY2FzZSBFdnFV
bmlmb3JtOiAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYSB1bmlmb3JtIjsgICAgICBi
cmVhazsKICAgICBjYXNlIEV2cVZhcnlpbmdJbjogICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlm
eSBhIHZhcnlpbmciOyAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxSW5wdXQ6ICAgICAgICAgIG1l
c3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGFuIGlucHV0IjsgICAgICAgYnJlYWs7CiAgICAgY2FzZSBF
dnFGcmFnQ29vcmQ6ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfRnJhZ0Nvb3JkIjsg
ICBicmVhazsKICAgICBjYXNlIEV2cUZyb250RmFjaW5nOiAgICBtZXNzYWdlID0gImNhbid0IG1v
ZGlmeSBnbF9Gcm9udEZhY2luZyI7IGJyZWFrOwogICAgIGNhc2UgRXZxUG9pbnRDb29yZDogICAg
IG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX1BvaW50Q29vcmQiOyAgYnJlYWs7CkBAIC00MDks
NyArNDEwLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjppbnRlZ2VyRXJyb3JDaGVjayhUSQogLy8K
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29u
dGV4dDo6Z2xvYmFsRXJyb3JDaGVjayhpbnQgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIq
IHRva2VuKQorYm9vbCBUUGFyc2VDb250ZXh0OjpnbG9iYWxFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGJvb2wgZ2xvYmFsLCBjb25zdCBjaGFyKiB0b2tlbikKIHsKICAgICBpZiAo
Z2xvYmFsKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjgsNyArNDI5LDcgQEAgYm9vbCBU
UGFyc2VDb250ZXh0OjpnbG9iYWxFcnJvckNoZWNrKGludAogLy8KIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpyZXNlcnZlZEVy
cm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCitib29sIFRQYXJz
ZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25z
dCBUU3RyaW5nJiBpZGVudGlmaWVyKQogewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiByZXNlcnZl
ZEVyck1zZyA9ICJyZXNlcnZlZCBidWlsdC1pbiBuYW1lIjsKICAgICBpZiAoIXN5bWJvbFRhYmxl
LmF0QnVpbHRJbkxldmVsKCkpIHsKQEAgLTQ2Niw3ICs0NjcsNyBAQCBib29sIFRQYXJzZUNvbnRl
eHQ6OnJlc2VydmVkRXJyb3JDaGVjayhpCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdh
cyBhbiBlcnJvciBpbiBjb25zdHJ1Y3Rpb24uCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25z
dHJ1Y3RvckVycm9yQ2hlY2soaW50IGxpbmUsIFRJbnRlcm1Ob2RlKiBub2RlLCBURnVuY3Rpb24m
IGZ1bmN0aW9uLCBUT3BlcmF0b3Igb3AsIFRUeXBlKiB0eXBlKQorYm9vbCBUUGFyc2VDb250ZXh0
Ojpjb25zdHJ1Y3RvckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybU5v
ZGUqIG5vZGUsIFRGdW5jdGlvbiYgZnVuY3Rpb24sIFRPcGVyYXRvciBvcCwgVFR5cGUqIHR5cGUp
CiB7CiAgICAgKnR5cGUgPSBmdW5jdGlvbi5nZXRSZXR1cm5UeXBlKCk7CiAKQEAgLTQ4Nyw3ICs0
ODgsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjCiAgICAgLy8g
YWdhaW4sIHRoZXJlIGlzIGFuIGV4dHJhIGFyZ3VtZW50LCBzbyAnb3ZlcmZ1bGwnIHdpbGwgYmVj
b21lIHRydWUuCiAgICAgLy8KIAotICAgIGludCBzaXplID0gMDsKKyAgICBzaXplX3Qgc2l6ZSA9
IDA7CiAgICAgYm9vbCBjb25zdFR5cGUgPSB0cnVlOwogICAgIGJvb2wgZnVsbCA9IGZhbHNlOwog
ICAgIGJvb2wgb3ZlckZ1bGwgPSBmYWxzZTsKQEAgLTUzNCw3ICs1MzUsNyBAQCBib29sIFRQYXJz
ZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICAKLSAgICBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0ICYmICF0eXBlLT5pc0Fy
cmF5KCkgJiYgaW50KHR5cGUtPmdldFN0cnVjdCgpLT5zaXplKCkpICE9IGZ1bmN0aW9uLmdldFBh
cmFtQ291bnQoKSkgeworICAgIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUt
PmlzQXJyYXkoKSAmJiBpbnQodHlwZS0+Z2V0U3RydWN0KCktPmZpZWxkcygpLnNpemUoKSkgIT0g
ZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJOdW1iZXIg
b2YgY29uc3RydWN0b3IgcGFyYW1ldGVycyBkb2VzIG5vdCBtYXRjaCB0aGUgbnVtYmVyIG9mIHN0
cnVjdHVyZSBmaWVsZHMiLCAiY29uc3RydWN0b3IiKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpAQCAtNTY4LDcgKzU2OSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JF
cnJvckNoZWMKIC8vCiAvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBlcnJvcgogLy8KLWJv
b2wgVFBhcnNlQ29udGV4dDo6dm9pZEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFRQdWJsaWNUeXBlJiBwdWJUeXBlKQorYm9vbCBUUGFyc2VDb250
ZXh0Ojp2b2lkRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBUUHVibGljVHlwZSYgcHViVHlwZSkKIHsKICAgICBpZiAocHVi
VHlwZS50eXBlID09IEVidFZvaWQpIHsKICAgICAgICAgZXJyb3IobGluZSwgImlsbGVnYWwgdXNl
IG9mIHR5cGUgJ3ZvaWQnIiwgaWRlbnRpZmllci5jX3N0cigpKTsKQEAgLTU4Miw3ICs1ODMsNyBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJvckNoZWNrKGludCBsCiAvLwogLy8gcmV0dXJu
cyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xF
cnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUSW50ZXJtVHlwZWQqIHR5cGUpCitib29sIFRQYXJz
ZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRJ
bnRlcm1UeXBlZCogdHlwZSkKIHsKICAgICBpZiAodHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0
Qm9vbCB8fCB0eXBlLT5pc0FycmF5KCkgfHwgdHlwZS0+aXNNYXRyaXgoKSB8fCB0eXBlLT5pc1Zl
Y3RvcigpKSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJib29sZWFuIGV4cHJlc3Npb24gZXhwZWN0
ZWQiLCAiIik7CkBAIC01OTYsNyArNTk3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJy
b3JDaGVjayhpbnQgbAogLy8KIC8vIHJldHVybnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCiAv
LwotYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFB1
YmxpY1R5cGUmIHBUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpCiB7CiAgICAgaWYg
KHBUeXBlLnR5cGUgIT0gRWJ0Qm9vbCB8fCBwVHlwZS5hcnJheSB8fCBwVHlwZS5tYXRyaXggfHwg
KHBUeXBlLnNpemUgPiAxKSkgewogICAgICAgICBlcnJvcihsaW5lLCAiYm9vbGVhbiBleHByZXNz
aW9uIGV4cGVjdGVkIiwgIiIpOwpAQCAtNjA2LDcgKzYwNyw3IEBAIGJvb2wgVFBhcnNlQ29udGV4
dDo6Ym9vbEVycm9yQ2hlY2soaW50IGwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBh
cnNlQ29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBl
JiBwVHlwZSwgY29uc3QgY2hhciogcmVhc29uKQorYm9vbCBUUGFyc2VDb250ZXh0OjpzYW1wbGVy
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5
cGUsIGNvbnN0IGNoYXIqIHJlYXNvbikKIHsKICAgICBpZiAocFR5cGUudHlwZSA9PSBFYnRTdHJ1
Y3QpIHsKICAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxlcigqcFR5cGUudXNlckRlZikpIHsKQEAg
LTYyNSw3ICs2MjYsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGlu
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSkKK2Jvb2wg
VFBhcnNlQ29udGV4dDo6c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpCiB7CiAgICAgaWYgKChwVHlwZS5xdWFs
aWZpZXIgPT0gRXZxVmFyeWluZ0luIHx8IHBUeXBlLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nT3V0
IHx8IHBUeXBlLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpICYmCiAgICAgICAgIHBUeXBlLnR5
cGUgPT0gRWJ0U3RydWN0KSB7CkBAIC02NDAsNyArNjQxLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjpzdHJ1Y3RRdWFsaWZpZXJFcnJvcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFy
c2VDb250ZXh0OjpwYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhpbnQgbGluZSwgVFF1YWxpZmll
ciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlJiB0eXBlKQorYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJh
bWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVy
IHF1YWxpZmllciwgY29uc3QgVFR5cGUmIHR5cGUpCiB7CiAgICAgaWYgKChxdWFsaWZpZXIgPT0g
RXZxT3V0IHx8IHF1YWxpZmllciA9PSBFdnFJbk91dCkgJiYgCiAgICAgICAgICAgICAgdHlwZS5n
ZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QgJiYgSXNTYW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBl
KCkpKSB7CkBAIC02NTcsOSArNjU4LDkgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb250YWluc1Nh
bXBsZXIoVFR5cAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICh0eXBlLmdldEJhc2lj
VHlwZSgpID09IEVidFN0cnVjdCkgewotICAgICAgICBUVHlwZUxpc3QmIHN0cnVjdHVyZSA9ICp0
eXBlLmdldFN0cnVjdCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHN0
cnVjdHVyZS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxlcigq
c3RydWN0dXJlW2ldLnR5cGUpKQorICAgICAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSB0
eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChjb250YWluc1Nh
bXBsZXIoKmZpZWxkc1tpXS0+dHlwZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTY3Miw3ICs2NzMsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6
OmNvbnRhaW5zU2FtcGxlcihUVHlwCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBh
biBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVycm9yQ2hlY2soaW50
IGxpbmUsIFRJbnRlcm1UeXBlZCogZXhwciwgaW50JiBzaXplKQorYm9vbCBUUGFyc2VDb250ZXh0
OjphcnJheVNpemVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1UeXBl
ZCogZXhwciwgaW50JiBzaXplKQogewogICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiBjb25zdGFu
dCA9IGV4cHItPmdldEFzQ29uc3RhbnRVbmlvbigpOwogICAgIGlmIChjb25zdGFudCA9PSAwIHx8
IGNvbnN0YW50LT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRJbnQpIHsKQEAgLTY4MCw3ICs2ODEsNyBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVycm9yQ2hlY2soCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIHNpemUgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50
ZXIoKS0+Z2V0SUNvbnN0KCk7CisgICAgc2l6ZSA9IGNvbnN0YW50LT5nZXRJQ29uc3QoMCk7CiAK
ICAgICBpZiAoc2l6ZSA8PSAwKSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJhcnJheSBzaXplIG11
c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIiwgIiIpOwpAQCAtNjk2LDcgKzY5Nyw3IEBAIGJvb2wg
VFBhcnNlQ29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjaygKIC8vCiAvLyBSZXR1cm5zIHRydWUg
aWYgdGhlcmUgaXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVF1YWxp
ZmllckVycm9yQ2hlY2soaW50IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCitib29sIFRQYXJzZUNv
bnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBU
UHVibGljVHlwZSB0eXBlKQogewogICAgIGlmICgodHlwZS5xdWFsaWZpZXIgPT0gRXZxQXR0cmli
dXRlKSB8fCAodHlwZS5xdWFsaWZpZXIgPT0gRXZxQ29uc3QpKSB7CiAgICAgICAgIGVycm9yKGxp
bmUsICJjYW5ub3QgZGVjbGFyZSBhcnJheXMgb2YgdGhpcyBxdWFsaWZpZXIiLCBUVHlwZSh0eXBl
KS5nZXRDb21wbGV0ZVN0cmluZygpLmNfc3RyKCkpOwpAQCAtNzExLDcgKzcxMiw3IEBAIGJvb2wg
VFBhcnNlQ29udGV4dDo6YXJyYXlRdWFsaWZpZXJFcnJvckMKIC8vCiAvLyBSZXR1cm5zIHRydWUg
aWYgdGhlcmUgaXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVR5cGVF
cnJvckNoZWNrKGludCBsaW5lLCBUUHVibGljVHlwZSB0eXBlKQorYm9vbCBUUGFyc2VDb250ZXh0
OjphcnJheVR5cGVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBl
IHR5cGUpCiB7CiAgICAgLy8KICAgICAvLyBDYW4gdGhlIHR5cGUgYmUgYW4gYXJyYXk/CkBAIC03
MzIsNyArNzMzLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKAog
Ly8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFy
c2VDb250ZXh0OjphcnJheUVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIs
IFRQdWJsaWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKQorYm9vbCBUUGFyc2VDb250
ZXh0OjphcnJheUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRl
bnRpZmllciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCiB7CiAgICAg
Ly8KICAgICAvLyBEb24ndCBjaGVjayBmb3IgcmVzZXJ2ZWQgd29yZCB1c2UgdW50aWwgYWZ0ZXIg
d2Uga25vdyBpdCdzIG5vdCBpbiB0aGUgc3ltYm9sIHRhYmxlLApAQCAtNzc3LDE2ICs3NzgsNiBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayhpbnQgCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIFRUeXBlKiB0ID0gdmFyaWFibGUtPmdl
dEFycmF5SW5mb3JtYXRpb25UeXBlKCk7Ci0gICAgICAgIHdoaWxlICh0ICE9IDApIHsKLSAgICAg
ICAgICAgIGlmICh0LT5nZXRNYXhBcnJheVNpemUoKSA+IHR5cGUuYXJyYXlTaXplKSB7Ci0gICAg
ICAgICAgICAgICAgZXJyb3IobGluZSwgImhpZ2hlciBpbmRleCB2YWx1ZSBhbHJlYWR5IHVzZWQg
Zm9yIHRoZSBhcnJheSIsIGlkZW50aWZpZXIuY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0LT5zZXRBcnJheVNpemUodHlw
ZS5hcnJheVNpemUpOwotICAgICAgICAgICAgdCA9IHQtPmdldEFycmF5SW5mb3JtYXRpb25UeXBl
KCk7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAodHlwZS5hcnJheVNpemUpCiAgICAgICAgICAg
ICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldEFycmF5U2l6ZSh0eXBlLmFycmF5U2l6ZSk7CiAgICAg
fSAKQEAgLTc5Nyw1NiArNzg4LDEyIEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlFcnJvckNo
ZWNrKGludCAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6YXJy
YXlTZXRNYXhTaXplKFRJbnRlcm1TeW1ib2wgKm5vZGUsIFRUeXBlKiB0eXBlLCBpbnQgc2l6ZSwg
Ym9vbCB1cGRhdGVGbGFnLCBUU291cmNlTG9jIGxpbmUpCi17Ci0gICAgYm9vbCBidWlsdEluID0g
ZmFsc2U7Ci0gICAgVFN5bWJvbCogc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZChub2RlLT5nZXRT
eW1ib2woKSwgJmJ1aWx0SW4pOwotICAgIGlmIChzeW1ib2wgPT0gMCkgewotICAgICAgICBlcnJv
cihsaW5lLCAiIHVuZGVjbGFyZWQgaWRlbnRpZmllciIsIG5vZGUtPmdldFN5bWJvbCgpLmNfc3Ry
KCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgVFZhcmlhYmxlKiB2YXJpYWJs
ZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KHN5bWJvbCk7Ci0KLSAgICB0eXBlLT5zZXRBcnJh
eUluZm9ybWF0aW9uVHlwZSh2YXJpYWJsZS0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSk7Ci0g
ICAgdmFyaWFibGUtPnVwZGF0ZUFycmF5SW5mb3JtYXRpb25UeXBlKHR5cGUpOwotCi0gICAgLy8g
c3BlY2lhbCBjYXNpbmcgdG8gdGVzdCBpbmRleCB2YWx1ZSBvZiBnbF9GcmFnRGF0YS4gSWYgdGhl
IGFjY2Vzc2VkIGluZGV4IGlzID49IGdsX01heERyYXdCdWZmZXJzCi0gICAgLy8gaXRzIGFuIGVy
cm9yCi0gICAgaWYgKG5vZGUtPmdldFN5bWJvbCgpID09ICJnbF9GcmFnRGF0YSIpIHsKLSAgICAg
ICAgVFN5bWJvbCogZnJhZ0RhdGEgPSBzeW1ib2xUYWJsZS5maW5kKCJnbF9NYXhEcmF3QnVmZmVy
cyIsICZidWlsdEluKTsKLSAgICAgICAgQVNTRVJUKGZyYWdEYXRhKTsKLQotICAgICAgICBpbnQg
ZnJhZ0RhdGFWYWx1ZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KGZyYWdEYXRhKS0+Z2V0Q29u
c3RQb2ludGVyKClbMF0uZ2V0SUNvbnN0KCk7Ci0gICAgICAgIGlmIChmcmFnRGF0YVZhbHVlIDw9
IHNpemUpIHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsICIiLCAiWyIsICJnbF9GcmFnRGF0YSBj
YW4gb25seSBoYXZlIGEgbWF4IGFycmF5IHNpemUgb2YgdXAgdG8gZ2xfTWF4RHJhd0J1ZmZlcnMi
KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8g
d2UgZG9udCB3YW50IHRvIHVwZGF0ZSB0aGUgbWF4QXJyYXlTaXplIHdoZW4gdGhpcyBmbGFnIGlz
IG5vdCBzZXQsIHdlIGp1c3Qgd2FudCB0byBpbmNsdWRlIHRoaXMgCi0gICAgLy8gbm9kZSB0eXBl
IGluIHRoZSBjaGFpbiBvZiBub2RlIHR5cGVzIHNvIHRoYXQgaXRzIHVwZGF0ZWQgd2hlbiBhIGhp
Z2hlciBtYXhBcnJheVNpemUgY29tZXMgaW4uCi0gICAgaWYgKCF1cGRhdGVGbGFnKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzaXplKys7Ci0gICAgdmFyaWFibGUtPmdldFR5cGUoKS5z
ZXRNYXhBcnJheVNpemUoc2l6ZSk7Ci0gICAgdHlwZS0+c2V0TWF4QXJyYXlTaXplKHNpemUpOwot
ICAgIFRUeXBlKiB0dCA9IHR5cGU7Ci0KLSAgICB3aGlsZSh0dC0+Z2V0QXJyYXlJbmZvcm1hdGlv
blR5cGUoKSAhPSAwKSB7Ci0gICAgICAgIHR0ID0gdHQtPmdldEFycmF5SW5mb3JtYXRpb25UeXBl
KCk7Ci0gICAgICAgIHR0LT5zZXRNYXhBcnJheVNpemUoc2l6ZSk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIGZhbHNlOwotfQotCiAvLwogLy8gRW5mb3JjZSBub24taW5pdGlhbGl6ZXIgdHlwZS9xdWFs
aWZpZXIgcnVsZXMuCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4K
IC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlY2soaW50IGxpbmUs
IFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KQorYm9v
bCBUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5
KQogewogICAgIGlmICh0eXBlLnF1YWxpZmllciA9PSBFdnFDb25zdCkKICAgICB7CkBAIC04Nzgs
NyArODI1LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZQogLy8K
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VD
b250ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwg
VFB1YmxpY1R5cGUmIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKQorYm9vbCBUUGFyc2VDb250
ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBp
ZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCiB7CiAg
ICAgaWYgKHJlc2VydmVkRXJyb3JDaGVjayhsaW5lLCBpZGVudGlmaWVyKSkKICAgICAgICAgcmVj
b3ZlcigpOwpAQCAtODk4LDcgKzg0NSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6bm9uSW5pdEVy
cm9yQ2hlY2soaW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6
cGFyYW1FcnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmll
ciBwYXJhbVF1YWxpZmllciwgVFR5cGUqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFt
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwg
VFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5cGUqIHR5cGUpCiB7ICAgIAogICAgIGlmIChx
dWFsaWZpZXIgIT0gRXZxQ29uc3QgJiYgcXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgewogICAg
ICAgICBlcnJvcihsaW5lLCAicXVhbGlmaWVyIG5vdCBhbGxvd2VkIG9uIGZ1bmN0aW9uIHBhcmFt
ZXRlciIsIGdldFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpKTsKQEAgLTkxNyw3ICs4NjQsNyBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayhpbnQgCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OmV4dGVuc2lvbkVycm9yQ2hlY2soaW50IGxp
bmUsIGNvbnN0IFRTdHJpbmcmIGV4dGVuc2lvbikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6ZXh0ZW5z
aW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBleHRl
bnNpb24pCiB7CiAgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBleHRCZWhhdmlvciA9IGV4
dGVuc2lvbkJlaGF2aW9yKCk7CiAgICAgVEV4dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRv
ciBpdGVyID0gZXh0QmVoYXZpb3IuZmluZChleHRlbnNpb24uY19zdHIoKSk7CkBAIC05NDUsMjAg
Kzg5Miw2IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6c3VwcG9ydHNFeHRlbnNpb24oY28KICAgICBy
ZXR1cm4gKGl0ZXIgIT0gZXh0YmVoYXZpb3IuZW5kKCkpOwogfQogCi12b2lkIFRQYXJzZUNvbnRl
eHQ6OmhhbmRsZUV4dGVuc2lvbkRpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogZXh0TmFt
ZSwgY29uc3QgY2hhciogYmVoYXZpb3IpCi17Ci0gICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYzsK
LSAgICBEZWNvZGVTb3VyY2VMb2MobGluZSwgJmxvYy5maWxlLCAmbG9jLmxpbmUpOwotICAgIGRp
cmVjdGl2ZUhhbmRsZXIuaGFuZGxlRXh0ZW5zaW9uKGxvYywgZXh0TmFtZSwgYmVoYXZpb3IpOwot
fQotCi12b2lkIFRQYXJzZUNvbnRleHQ6OmhhbmRsZVByYWdtYURpcmVjdGl2ZShpbnQgbGluZSwg
Y29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUpCi17Ci0gICAgcHA6OlNvdXJjZUxv
Y2F0aW9uIGxvYzsKLSAgICBEZWNvZGVTb3VyY2VMb2MobGluZSwgJmxvYy5maWxlLCAmbG9jLmxp
bmUpOwotICAgIGRpcmVjdGl2ZUhhbmRsZXIuaGFuZGxlUHJhZ21hKGxvYywgbmFtZSwgdmFsdWUp
OwotfQotCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vCiAvLyBOb24tRXJyb3JzLgpAQCAt
OTcwLDcgKzkwMyw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6aGFuZGxlUHJhZ21hRGlyZWN0aXYK
IC8vCiAvLyBSZXR1cm4gdGhlIGZ1bmN0aW9uIHN5bWJvbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIDAu
CiAvLwotY29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuY3Rpb24oaW50IGxp
bmUsIFRGdW5jdGlvbiogY2FsbCwgYm9vbCAqYnVpbHRJbikKK2NvbnN0IFRGdW5jdGlvbiogVFBh
cnNlQ29udGV4dDo6ZmluZEZ1bmN0aW9uKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRGdW5jdGlv
biogY2FsbCwgYm9vbCAqYnVpbHRJbikKIHsKICAgICAvLyBGaXJzdCBmaW5kIGJ5IHVubWFuZ2xl
ZCBuYW1lIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIG5hbWUgaGFzIGJlZW4KICAgICAv
LyBoaWRkZW4gYnkgYSB2YXJpYWJsZSBuYW1lIG9yIHN0cnVjdCB0eXBlbmFtZS4KQEAgLTk5Miwx
MSArOTI1LDMyIEBAIGNvbnN0IFRGdW5jdGlvbiogVFBhcnNlQ29udGV4dDo6ZmluZEZ1bmMKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVEZ1bmN0aW9uKj4oc3ltYm9sKTsKIH0KIAorYm9v
bCBUUGFyc2VDb250ZXh0Ojppc1ZhcmlhYmxlQnVpbHRJbihjb25zdCBUVmFyaWFibGUqIHZhcikK
K3sKKyAgICBib29sIGJ1aWx0SW4gPSBmYWxzZTsKKyAgICAvLyBGaXJzdCBmaW5kIGJ5IHVubWFu
Z2xlZCBuYW1lIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIG5hbWUgaGFzIGJlZW4KKyAg
ICAvLyBoaWRkZW4gYnkgYSB2YXJpYWJsZSBuYW1lIG9yIHN0cnVjdCB0eXBlbmFtZS4KKyAgICBj
b25zdCBUU3ltYm9sKiBzeW1ib2wgPSBzeW1ib2xUYWJsZS5maW5kKHZhci0+Z2V0TmFtZSgpLCAm
YnVpbHRJbik7CisgICAgaWYgKHN5bWJvbCA9PSAwKSB7CisgICAgICAgIHN5bWJvbCA9IHN5bWJv
bFRhYmxlLmZpbmQodmFyLT5nZXRNYW5nbGVkTmFtZSgpLCAmYnVpbHRJbik7CisgICAgfQorCisg
ICAgaWYgKHN5bWJvbCA9PSAwKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBpZiAoIXN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gYnVpbHRJbjsKK30KKwogLy8KIC8vIEluaXRpYWxpemVycyBzaG93
IHVwIGluIHNldmVyYWwgcGxhY2VzIGluIHRoZSBncmFtbWFyLiAgSGF2ZSBvbmUgc2V0IG9mCiAv
LyBjb2RlIHRvIGhhbmRsZSB0aGVtIGhlcmUuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpleGVj
dXRlSW5pdGlhbGl6ZXIoVFNvdXJjZUxvYyBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVi
bGljVHlwZSYgcFR5cGUsIAorYm9vbCBUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIo
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUm
IHBUeXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1U
eXBlZCogaW5pdGlhbGl6ZXIsIFRJbnRlcm1Ob2RlKiYgaW50ZXJtTm9kZSwgVFZhcmlhYmxlKiB2
YXJpYWJsZSkKIHsKICAgICBUVHlwZSB0eXBlID0gVFR5cGUocFR5cGUpOwpAQCAtMTA0OCwxMyAr
MTAwMiw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVyKFQKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChpbml0aWFsaXplci0+
Z2V0QXNDb25zdGFudFVuaW9uKCkpIHsgCi0gICAgICAgICAgICBDb25zdGFudFVuaW9uKiB1bmlv
bkFycmF5ID0gdmFyaWFibGUtPmdldENvbnN0UG9pbnRlcigpOwotCi0gICAgICAgICAgICBpZiAo
dHlwZS5nZXRPYmplY3RTaXplKCkgPT0gMSAmJiB0eXBlLmdldEJhc2ljVHlwZSgpICE9IEVidFN0
cnVjdCkgewotICAgICAgICAgICAgICAgICp1bmlvbkFycmF5ID0gKGluaXRpYWxpemVyLT5nZXRB
c0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSlbMF07Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5zaGFyZUNvbnN0UG9pbnRlcihp
bml0aWFsaXplci0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCkp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyaWFibGUtPnNoYXJlQ29uc3RQb2ludGVy
KGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaW5pdGlhbGl6ZXItPmdldEFzU3ltYm9sTm9kZSgpKSB7
CiAgICAgICAgICAgICBjb25zdCBUU3ltYm9sKiBzeW1ib2wgPSBzeW1ib2xUYWJsZS5maW5kKGlu
aXRpYWxpemVyLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkpOwogICAgICAgICAgICAg
Y29uc3QgVFZhcmlhYmxlKiB0VmFyID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3lt
Ym9sKTsKQEAgLTExMDgsMTYgKzEwNTYsMTYgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcmVBbGxD
aGlsZENvbnN0KFRJbgogLy8KIC8vIFJldHVybnMgMCBmb3IgYW4gZXJyb3Igb3IgdGhlIGNvbnN0
cnVjdGVkIG5vZGUgKGFnZ3JlZ2F0ZSBvciB0eXBlZCkgZm9yIG5vIGVycm9yLgogLy8KLVRJbnRl
cm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUqIG5vZGUs
IGNvbnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRGdW5jdGlvbiogZm5DYWxsLCBUU291
cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0cnVjdG9y
KFRJbnRlcm1Ob2RlKiBub2RlLCBjb25zdCBUVHlwZSogdHlwZSwgVE9wZXJhdG9yIG9wLCBURnVu
Y3Rpb24qIGZuQ2FsbCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBpZiAobm9kZSA9
PSAwKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2Rl
ID0gbm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKTsKICAgICAKLSAgICBUVHlwZUxpc3Q6OmNvbnN0X2l0
ZXJhdG9yIG1lbWJlclR5cGVzOworICAgIFRGaWVsZExpc3Q6OmNvbnN0X2l0ZXJhdG9yIG1lbWJl
ckZpZWxkczsKICAgICBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0KQotICAgICAgICBtZW1i
ZXJUeXBlcyA9IHR5cGUtPmdldFN0cnVjdCgpLT5iZWdpbigpOworICAgICAgICBtZW1iZXJGaWVs
ZHMgPSB0eXBlLT5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCkuYmVnaW4oKTsKICAgICAKICAgICBUVHlw
ZSBlbGVtZW50VHlwZSA9ICp0eXBlOwogICAgIGlmICh0eXBlLT5pc0FycmF5KCkpCkBAIC0xMTM5
LDcgKzEwODcsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0cnVjCiAg
ICAgICAgIGlmICh0eXBlLT5pc0FycmF5KCkpCiAgICAgICAgICAgICBuZXdOb2RlID0gY29uc3Ry
dWN0U3RydWN0KG5vZGUsICZlbGVtZW50VHlwZSwgMSwgbm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7
CiAgICAgICAgIGVsc2UgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCkKLSAgICAgICAgICAg
IG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgKCptZW1iZXJUeXBlcykudHlwZSwgMSwg
bm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7CisgICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0
U3RydWN0KG5vZGUsICgqbWVtYmVyRmllbGRzKS0+dHlwZSgpLCAxLCBub2RlLT5nZXRMaW5lKCks
IGZhbHNlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdEJ1
aWx0SW4odHlwZSwgb3AsIG5vZGUsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwogCkBAIC0xMTcw
LDcgKzExMTgsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0cnVjCiAg
ICAgICAgIGlmICh0eXBlLT5pc0FycmF5KCkpCiAgICAgICAgICAgICBuZXdOb2RlID0gY29uc3Ry
dWN0U3RydWN0KCpwLCAmZWxlbWVudFR5cGUsIHBhcmFtQ291bnQrMSwgbm9kZS0+Z2V0TGluZSgp
LCB0cnVlKTsKICAgICAgICAgZWxzZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0KQotICAg
ICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdCgqcCwgKG1lbWJlclR5cGVzW3BhcmFt
Q291bnRdKS50eXBlLCBwYXJhbUNvdW50KzEsIG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7CisgICAg
ICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0U3RydWN0KCpwLCBtZW1iZXJGaWVsZHNbcGFyYW1D
b3VudF0tPnR5cGUoKSwgcGFyYW1Db3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRydWUpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBv
cCwgKnAsIG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7CiAgICAgICAgIApAQCAtMTIxNiw3ICsxMTY0
LDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpmb2xkQ29uc3RDbwogLy8KIC8vIFJl
dHVybnMgMCBmb3IgYW4gZXJyb3Igb3IgdGhlIGNvbnN0cnVjdGVkIG5vZGUuCiAvLwotVEludGVy
bVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiB0eXBl
LCBUT3BlcmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBub2RlLCBUU291cmNlTG9jIGxpbmUsIGJvb2wg
c3Vic2V0KQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RCdWlsdEluKGNv
bnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBub2RlLCBjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBib29sIHN1YnNldCkKIHsKICAgICBUSW50ZXJtVHlwZWQqIG5ld05v
ZGU7CiAgICAgVE9wZXJhdG9yIGJhc2ljT3A7CkBAIC0xMjc4LDcgKzEyMjYsNyBAQCBUSW50ZXJt
VHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdEJ1CiAvLwogLy8gUmV0dXJucyAwIGZvciBh
biBlcnJvciBvciB0aGUgaW5wdXQgbm9kZSBpdHNlbGYgaWYgdGhlIGV4cGVjdGVkIGFuZCB0aGUg
Z2l2ZW4gcGFyYW1ldGVyIHR5cGVzIG1hdGNoLgogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29u
dGV4dDo6Y29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiBub2RlLCBUVHlwZSogdHlwZSwgaW50
IHBhcmFtQ291bnQsIFRTb3VyY2VMb2MgbGluZSwgYm9vbCBzdWJzZXQpCitUSW50ZXJtVHlwZWQq
IFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdFN0cnVjdChUSW50ZXJtTm9kZSogbm9kZSwgVFR5cGUq
IHR5cGUsIGludCBwYXJhbUNvdW50LCBjb25zdCBUU291cmNlTG9jJiBsaW5lLCBib29sIHN1YnNl
dCkKIHsKICAgICBpZiAoKnR5cGUgPT0gbm9kZS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkpIHsK
ICAgICAgICAgaWYgKHN1YnNldCkKQEAgLTEzMDUsNyArMTI1Myw3IEBAIFRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6Y29uc3RydWN0U3QKIC8vIG5vZGUgb3IgaXQgY291bGQgYmUgdGhlIGlu
dGVybWVkaWF0ZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIGFjY2Vzc2luZyBmaWVsZHMgaW4gYSBj
b25zdGFudCBzdHJ1Y3R1cmUgb3IgY29sdW1uIG9mIAogLy8gYSBjb25zdGFudCBtYXRyaXguCiAv
LwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFZlY3Rvck5vZGUoVFZlY3Rv
ckZpZWxkcyYgZmllbGRzLCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJ
bnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWN0b3JOb2RlKFRWZWN0b3JGaWVs
ZHMmIGZpZWxkcywgVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQog
ewogICAgIFRJbnRlcm1UeXBlZCogdHlwZWROb2RlOwogICAgIFRJbnRlcm1Db25zdGFudFVuaW9u
KiB0ZW1wQ29uc3RhbnROb2RlID0gbm9kZS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CkBAIC0xMzEz
LDcgKzEyNjEsNiBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVjCiAg
ICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheTsKICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkg
ewogICAgICAgICB1bmlvbkFycmF5ID0gdGVtcENvbnN0YW50Tm9kZS0+Z2V0VW5pb25BcnJheVBv
aW50ZXIoKTsKLSAgICAgICAgQVNTRVJUKHVuaW9uQXJyYXkpOwogCiAgICAgICAgIGlmICghdW5p
b25BcnJheSkgewogICAgICAgICAgICAgcmV0dXJuIG5vZGU7CkBAIC0xMzI4LDcgKzEyNzUsNyBA
QCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVjCiAgICAgQ29uc3RhbnRV
bmlvbiogY29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW2ZpZWxkcy5udW1dOwogCiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBmaWVsZHMubnVtOyBpKyspIHsKLSAgICAgICAgaWYgKGZpZWxk
cy5vZmZzZXRzW2ldID49IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkpIHsKKyAgICAg
ICAgaWYgKGZpZWxkcy5vZmZzZXRzW2ldID49IG5vZGUtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6
ZSgpKSB7CiAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAg
ICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgInZlY3RvciBmaWVsZCBzZWxlY3Rpb24gb3V0
IG9mIHJhbmdlICciIDw8IGZpZWxkcy5vZmZzZXRzW2ldIDw8ICInIjsKICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKQEAgLTEzNTAsNyAr
MTI5Nyw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWMKIC8vIHRv
IHRoZSBmdW5jdGlvbiBjb3VsZCBlaXRoZXIgYmUgYSBzeW1ib2wgbm9kZSAobVswXSB3aGVyZSBt
IGlzIGEgY29uc3RhbnQgbWF0cml4KXRoYXQgcmVwcmVzZW50cyBhIAogLy8gY29uc3RhbnQgbWF0
cml4IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25zdGFu
dCBtYXRyaXggKHMubTFbMF0gd2hlcmUgcyBpcyBhIGNvbnN0YW50IHN0cnVjdHVyZSkKIC8vCi1U
SW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZShpbnQgaW5kZXgs
IFRJbnRlcm1UeXBlZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFy
c2VDb250ZXh0OjphZGRDb25zdE1hdHJpeE5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5v
ZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0eXBlZE5v
ZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5n
ZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTEzODUsNyArMTMzMiw3IEBAIFRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RNYXQKIC8vIHRvIHRoZSBmdW5jdGlvbiBjb3VsZCBlaXRo
ZXIgYmUgYSBzeW1ib2wgbm9kZSAoYVswXSB3aGVyZSBhIGlzIGEgY29uc3RhbnQgYXJyYXkpdGhh
dCByZXByZXNlbnRzIGEgCiAvLyBjb25zdGFudCBhcnJheSBvciBpdCBjb3VsZCBiZSB0aGUgdHJl
ZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29uc3RhbnQgYXJyYXkgKHMuYTFbMF0gd2hlcmUgcyBp
cyBhIGNvbnN0YW50IHN0cnVjdHVyZSkKIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6
OmFkZENvbnN0QXJyYXlOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBUU291cmNl
TG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0QXJyYXlOb2Rl
KGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQog
ewogICAgIFRJbnRlcm1UeXBlZCogdHlwZWROb2RlOwogICAgIFRJbnRlcm1Db25zdGFudFVuaW9u
KiB0ZW1wQ29uc3RhbnROb2RlID0gbm9kZS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CkBAIC0xNDAx
LDkgKzEzNDgsOCBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0QXJyCiAg
ICAgICAgIGluZGV4ID0gMDsKICAgICB9CiAKLSAgICBpbnQgYXJyYXlFbGVtZW50U2l6ZSA9IGFy
cmF5RWxlbWVudFR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwotCiAgICAgaWYgKHRlbXBDb25zdGFudE5v
ZGUpIHsKKyAgICAgICAgIHNpemVfdCBhcnJheUVsZW1lbnRTaXplID0gYXJyYXlFbGVtZW50VHlw
ZS5nZXRPYmplY3RTaXplKCk7CiAgICAgICAgICBDb25zdGFudFVuaW9uKiB1bmlvbkFycmF5ID0g
dGVtcENvbnN0YW50Tm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKICAgICAgICAgIHR5cGVk
Tm9kZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKCZ1bmlvbkFycmF5W2FycmF5RWxl
bWVudFNpemUgKiBpbmRleF0sIHRlbXBDb25zdGFudE5vZGUtPmdldFR5cGUoKSwgbGluZSk7CiAg
ICAgfSBlbHNlIHsKQEAgLTE0MjIsMjIgKzEzNjgsMjEgQEAgVEludGVybVR5cGVkKiBUUGFyc2VD
b250ZXh0OjphZGRDb25zdEFycgogLy8gSWYgdGhlcmUgaXMgYW4gZW1iZWRkZWQvbmVzdGVkIHN0
cnVjdCwgaXQgYXBwcm9wcmlhdGVseSBjYWxscyBhZGRDb25zdFN0cnVjdE5lc3RlZCBvciBhZGRD
b25zdFN0cnVjdEZyb21BZ2dyCiAvLyBmdW5jdGlvbiBhbmQgcmV0dXJucyB0aGUgcGFyc2UtdHJl
ZSB3aXRoIHRoZSB2YWx1ZXMgb2YgdGhlIGVtYmVkZGVkL25lc3RlZCBzdHJ1Y3QuCiAvLwotVElu
dGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdChUU3RyaW5nJiBpZGVudGlm
aWVyLCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RTdHJ1Y3QoVFN0cmluZyYgaWRlbnRpZmllciwgVEludGVy
bVR5cGVkKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewotICAgIGNvbnN0IFRUeXBl
TGlzdCogZmllbGRzID0gbm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOwotICAgIFRJbnRlcm1U
eXBlZCAqdHlwZWROb2RlOwotICAgIGludCBpbnN0YW5jZVNpemUgPSAwOwotICAgIHVuc2lnbmVk
IGludCBpbmRleCA9IDA7Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24gKnRlbXBDb25zdGFudE5v
ZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICBjb25zdCBURmllbGRMaXN0JiBm
aWVsZHMgPSBub2RlLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCi0gICAgZm9y
ICggaW5kZXggPSAwOyBpbmRleCA8IGZpZWxkcy0+c2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAg
IGlmICgoKmZpZWxkcylbaW5kZXhdLnR5cGUtPmdldEZpZWxkTmFtZSgpID09IGlkZW50aWZpZXIp
IHsKKyAgICBzaXplX3QgaW5zdGFuY2VTaXplID0gMDsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgZmllbGRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAoZmllbGRz
W2luZGV4XS0+bmFtZSgpID09IGlkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgaW5zdGFuY2VTaXplICs9ICgqZmllbGRzKVtpbmRl
eF0udHlwZS0+Z2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAgICAgaW5zdGFuY2VTaXplICs9IGZp
ZWxkc1tpbmRleF0tPnR5cGUoKS0+Z2V0T2JqZWN0U2l6ZSgpOwogICAgICAgICB9CiAgICAgfQog
CisgICAgVEludGVybVR5cGVkKiB0eXBlZE5vZGUgPSAwOworICAgIFRJbnRlcm1Db25zdGFudFVu
aW9uKiB0ZW1wQ29uc3RhbnROb2RlID0gbm9kZS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CiAgICAg
aWYgKHRlbXBDb25zdGFudE5vZGUpIHsKICAgICAgICAgIENvbnN0YW50VW5pb24qIGNvbnN0QXJy
YXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwogCkBAIC0xNDUy
LDcgKzEzOTcsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0U3RyCiAg
ICAgcmV0dXJuIHR5cGVkTm9kZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjplbnRlclN0cnVj
dERlY2xhcmF0aW9uKGludCBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKQorYm9vbCBU
UGFyc2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9uKGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCiB7CiAgICAgKytzdHJ1Y3ROZXN0aW5nTGV2
ZWw7CiAKQEAgLTE0NzgsMjEgKzE0MjMsMjEgQEAgY29uc3QgaW50IGtXZWJHTE1heFN0cnVjdE5l
c3RpbmcgPSA0OwogCiB9ICAvLyBuYW1lc3BhY2UKIAotYm9vbCBUUGFyc2VDb250ZXh0OjpzdHJ1
Y3ROZXN0aW5nRXJyb3JDaGVjayhUU291cmNlTG9jIGxpbmUsIGNvbnN0IFRUeXBlJiBmaWVsZFR5
cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQpCiB7CiAgICAgaWYgKCFpc1dlYkdM
QmFzZWRTcGVjKHNoYWRlclNwZWMpKSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBpZiAoZmllbGRUeXBlLmdldEJhc2ljVHlwZSgpICE9IEVidFN0cnVjdCkgeworICAgIGlm
IChmaWVsZC50eXBlKCktPmdldEJhc2ljVHlwZSgpICE9IEVidFN0cnVjdCkgewogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gV2UncmUgYWxyZWFkeSBpbnNpZGUgYSBzdHJ1
Y3R1cmUgZGVmaW5pdGlvbiBhdCB0aGlzIHBvaW50LCBzbyBhZGQKICAgICAvLyBvbmUgdG8gdGhl
IGZpZWxkJ3Mgc3RydWN0IG5lc3RpbmcuCi0gICAgaWYgKDEgKyBmaWVsZFR5cGUuZ2V0RGVlcGVz
dFN0cnVjdE5lc3RpbmcoKSA+IGtXZWJHTE1heFN0cnVjdE5lc3RpbmcpIHsKKyAgICBpZiAoMSAr
IGZpZWxkLnR5cGUoKS0+Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSA+IGtXZWJHTE1heFN0cnVj
dE5lc3RpbmcpIHsKICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwot
ICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgIlJlZmVyZW5jZSBvZiBzdHJ1Y3QgdHlwZSAiIDw8
IGZpZWxkVHlwZS5nZXRUeXBlTmFtZSgpIAorICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgIlJl
ZmVyZW5jZSBvZiBzdHJ1Y3QgdHlwZSAiIDw8IGZpZWxkLm5hbWUoKQogICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgIiBleGNlZWRzIG1heGltdW0gc3RydWN0IG5lc3Rpbmcgb2YgIiA8PCBrV2Vi
R0xNYXhTdHJ1Y3ROZXN0aW5nOwogICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRy
YUluZm9TdHJlYW0uc3RyKCk7CiAgICAgICAgIGVycm9yKGxpbmUsICIiLCAiIiwgZXh0cmFJbmZv
LmNfc3RyKCkpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bh
cnNlSGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1BhcnNlSGVscGVyLmgJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MywxMCArMzMsOCBAQCBzdHJ1Y3QgVFBhcnNlQ29udGV4dCB7CiAgICAgICAgICAgICBjb21waWxl
T3B0aW9ucyhvcHRpb25zKSwKICAgICAgICAgICAgIHNvdXJjZVBhdGgoc291cmNlUGF0aCksCiAg
ICAgICAgICAgICB0cmVlUm9vdCgwKSwKLSAgICAgICAgICAgIGxleEFmdGVyVHlwZShmYWxzZSks
CiAgICAgICAgICAgICBsb29wTmVzdGluZ0xldmVsKDApLAogICAgICAgICAgICAgc3RydWN0TmVz
dGluZ0xldmVsKDApLAotICAgICAgICAgICAgaW5UeXBlUGFyZW4oZmFsc2UpLAogICAgICAgICAg
ICAgY3VycmVudEZ1bmN0aW9uVHlwZShOVUxMKSwKICAgICAgICAgICAgIGZ1bmN0aW9uUmV0dXJu
c1ZhbHVlKGZhbHNlKSwKICAgICAgICAgICAgIGNoZWNrc1ByZWNpc2lvbkVycm9ycyhjaGVja3NQ
cmVjRXJyb3JzKSwKQEAgLTUxLDE2ICs0OSwxMyBAQCBzdHJ1Y3QgVFBhcnNlQ29udGV4dCB7CiAg
ICAgaW50IGNvbXBpbGVPcHRpb25zOwogICAgIGNvbnN0IGNoYXIqIHNvdXJjZVBhdGg7ICAgICAg
Ly8gUGF0aCBvZiBzb3VyY2UgZmlsZSBvciBOVUxMLgogICAgIFRJbnRlcm1Ob2RlKiB0cmVlUm9v
dDsgICAgICAgLy8gcm9vdCBvZiBwYXJzZSB0cmVlIGJlaW5nIGNyZWF0ZWQKLSAgICBib29sIGxl
eEFmdGVyVHlwZTsgICAgICAgICAgIC8vIHRydWUgaWYgd2UndmUgcmVjb2duaXplZCBhIHR5cGUs
IHNvIGNhbiBvbmx5IGJlIGxvb2tpbmcgZm9yIGFuIGlkZW50aWZpZXIKICAgICBpbnQgbG9vcE5l
c3RpbmdMZXZlbDsgICAgICAgIC8vIDAgaWYgb3V0c2lkZSBhbGwgbG9vcHMKICAgICBpbnQgc3Ry
dWN0TmVzdGluZ0xldmVsOyAgICAgIC8vIGluY3JlbWVudGVkIHdoaWxlIHBhcnNpbmcgYSBzdHJ1
Y3QgZGVjbGFyYXRpb24KLSAgICBib29sIGluVHlwZVBhcmVuOyAgICAgICAgICAgIC8vIHRydWUg
aWYgaW4gcGFyZW50aGVzZXMsIGxvb2tpbmcgb25seSBmb3IgYW4gaWRlbnRpZmllcgogICAgIGNv
bnN0IFRUeXBlKiBjdXJyZW50RnVuY3Rpb25UeXBlOyAgLy8gdGhlIHJldHVybiB0eXBlIG9mIHRo
ZSBmdW5jdGlvbiB0aGF0J3MgY3VycmVudGx5IGJlaW5nIHBhcnNlZAogICAgIGJvb2wgZnVuY3Rp
b25SZXR1cm5zVmFsdWU7ICAgLy8gdHJ1ZSBpZiBhIG5vbi12b2lkIGZ1bmN0aW9uIGhhcyBhIHJl
dHVybgogICAgIGJvb2wgY2hlY2tzUHJlY2lzaW9uRXJyb3JzOyAgLy8gdHJ1ZSBpZiBhbiBlcnJv
ciB3aWxsIGJlIGdlbmVyYXRlZCB3aGVuIGEgdmFyaWFibGUgaXMgZGVjbGFyZWQgd2l0aG91dCBw
cmVjaXNpb24sIGV4cGxpY2l0IG9yIGltcGxpY2l0LgogICAgIGJvb2wgZnJhZ21lbnRQcmVjaXNp
b25IaWdoOyAgLy8gdHJ1ZSBpZiBoaWdocCBwcmVjaXNpb24gaXMgc3VwcG9ydGVkIGluIHRoZSBm
cmFnbWVudCBsYW5ndWFnZS4KICAgICBUU3RyaW5nIEhhc2hFcnJNc2c7Ci0gICAgYm9vbCBBZnRl
ckVPRjsKICAgICBURGlhZ25vc3RpY3MgZGlhZ25vc3RpY3M7CiAgICAgVERpcmVjdGl2ZUhhbmRs
ZXIgZGlyZWN0aXZlSGFuZGxlcjsKICAgICBwcDo6UHJlcHJvY2Vzc29yIHByZXByb2Nlc3NvcjsK
QEAgLTY4LDcxICs2Myw2OCBAQCBzdHJ1Y3QgVFBhcnNlQ29udGV4dCB7CiAKICAgICBpbnQgbnVt
RXJyb3JzKCkgY29uc3QgeyByZXR1cm4gZGlhZ25vc3RpY3MubnVtRXJyb3JzKCk7IH0KICAgICBU
SW5mb1NpbmsmIGluZm9TaW5rKCkgeyByZXR1cm4gZGlhZ25vc3RpY3MuaW5mb1NpbmsoKTsgfQot
ICAgIHZvaWQgZXJyb3IoVFNvdXJjZUxvYyBsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3Qg
Y2hhciogdG9rZW4sCisgICAgdm9pZCBlcnJvcihjb25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0
IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCiAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBleHRyYUluZm89IiIpOwotICAgIHZvaWQgd2FybmluZyhUU291cmNlTG9jIGxvYywgY29u
c3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKKyAgICB2b2lkIHdhcm5pbmcoY29u
c3QgVFNvdXJjZUxvYyYgbG9jLCBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIqIHRva2Vu
LAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRyYUluZm89IiIpOwogICAgIHZvaWQg
dHJhY2UoY29uc3QgY2hhciogc3RyKTsKICAgICB2b2lkIHJlY292ZXIoKTsKIAotICAgIGJvb2wg
cGFyc2VWZWN0b3JGaWVsZHMoY29uc3QgVFN0cmluZyYsIGludCB2ZWNTaXplLCBUVmVjdG9yRmll
bGRzJiwgaW50IGxpbmUpOwotICAgIGJvb2wgcGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmlu
ZyYsIGludCBtYXRTaXplLCBUTWF0cml4RmllbGRzJiwgaW50IGxpbmUpOworICAgIGJvb2wgcGFy
c2VWZWN0b3JGaWVsZHMoY29uc3QgVFN0cmluZyYsIGludCB2ZWNTaXplLCBUVmVjdG9yRmllbGRz
JiwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSk7CisgICAgYm9vbCBwYXJzZU1hdHJpeEZpZWxkcyhj
b25zdCBUU3RyaW5nJiwgaW50IG1hdFNpemUsIFRNYXRyaXhGaWVsZHMmLCBjb25zdCBUU291cmNl
TG9jJiBsaW5lKTsKIAotICAgIGJvb2wgcmVzZXJ2ZWRFcnJvckNoZWNrKGludCBsaW5lLCBjb25z
dCBUU3RyaW5nJiBpZGVudGlmaWVyKTsKLSAgICB2b2lkIGFzc2lnbkVycm9yKGludCBsaW5lLCBj
b25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKLSAgICB2b2lkIHVu
YXJ5T3BFcnJvcihpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgb3BlcmFuZCk7Ci0g
ICAgdm9pZCBiaW5hcnlPcEVycm9yKGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBs
ZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKLSAgICBib29sIHByZWNpc2lvbkVycm9yQ2hlY2soaW50IGxp
bmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5cGUpOwotICAgIGJvb2wgbFZh
bHVlRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRlcm1UeXBlZCopOwor
ICAgIGJvb2wgcmVzZXJ2ZWRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0
IFRTdHJpbmcmIGlkZW50aWZpZXIpOworICAgIHZvaWQgYXNzaWduRXJyb3IoY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7
CisgICAgdm9pZCB1bmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hh
ciogb3AsIFRTdHJpbmcgb3BlcmFuZCk7CisgICAgdm9pZCBiaW5hcnlPcEVycm9yKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmln
aHQpOworICAgIGJvb2wgcHJlY2lzaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBUUHJlY2lzaW9uIHByZWNpc2lvbiwgVEJhc2ljVHlwZSB0eXBlKTsKKyAgICBib29sIGxWYWx1
ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRl
cm1UeXBlZCopOwogICAgIGJvb2wgY29uc3RFcnJvckNoZWNrKFRJbnRlcm1UeXBlZCogbm9kZSk7
CiAgICAgYm9vbCBpbnRlZ2VyRXJyb3JDaGVjayhUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IGNo
YXIqIHRva2VuKTsKLSAgICBib29sIGdsb2JhbEVycm9yQ2hlY2soaW50IGxpbmUsIGJvb2wgZ2xv
YmFsLCBjb25zdCBjaGFyKiB0b2tlbik7Ci0gICAgYm9vbCBjb25zdHJ1Y3RvckVycm9yQ2hlY2so
aW50IGxpbmUsIFRJbnRlcm1Ob2RlKiwgVEZ1bmN0aW9uJiwgVE9wZXJhdG9yLCBUVHlwZSopOwot
ICAgIGJvb2wgYXJyYXlTaXplRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVybVR5cGVkKiBleHBy
LCBpbnQmIHNpemUpOwotICAgIGJvb2wgYXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKGludCBsaW5l
LCBUUHVibGljVHlwZSB0eXBlKTsKLSAgICBib29sIGFycmF5VHlwZUVycm9yQ2hlY2soaW50IGxp
bmUsIFRQdWJsaWNUeXBlIHR5cGUpOwotICAgIGJvb2wgYXJyYXlFcnJvckNoZWNrKGludCBsaW5l
LCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSB0eXBlLCBUVmFyaWFibGUqJiB2YXJp
YWJsZSk7Ci0gICAgYm9vbCB2b2lkRXJyb3JDaGVjayhpbnQsIGNvbnN0IFRTdHJpbmcmLCBjb25z
dCBUUHVibGljVHlwZSYpOwotICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soaW50LCBjb25zdCBUSW50
ZXJtVHlwZWQqKTsKLSAgICBib29sIGJvb2xFcnJvckNoZWNrKGludCwgY29uc3QgVFB1YmxpY1R5
cGUmKTsKLSAgICBib29sIHNhbXBsZXJFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUUHVibGlj
VHlwZSYgcFR5cGUsIGNvbnN0IGNoYXIqIHJlYXNvbik7Ci0gICAgYm9vbCBzdHJ1Y3RRdWFsaWZp
ZXJFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpOwotICAgIGJv
b2wgcGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soaW50IGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlm
aWVyLCBjb25zdCBUVHlwZSYgdHlwZSk7Ci0gICAgYm9vbCBub25Jbml0Q29uc3RFcnJvckNoZWNr
KGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSwgYm9vbCBh
cnJheSk7Ci0gICAgYm9vbCBub25Jbml0RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRl
bnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKLSAgICBi
b29sIHBhcmFtRXJyb3JDaGVjayhpbnQgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIFRRdWFs
aWZpZXIgcGFyYW1RdWFsaWZpZXIsIFRUeXBlKiB0eXBlKTsKLSAgICBib29sIGV4dGVuc2lvbkVy
cm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmKTsKKyAgICBib29sIGdsb2JhbEVycm9y
Q2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRv
a2VuKTsKKyAgICBib29sIGNvbnN0cnVjdG9yRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBUSW50ZXJtTm9kZSosIFRGdW5jdGlvbiYsIFRPcGVyYXRvciwgVFR5cGUqKTsKKyAgICBi
b29sIGFycmF5U2l6ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybVR5
cGVkKiBleHByLCBpbnQmIHNpemUpOworICAgIGJvb2wgYXJyYXlRdWFsaWZpZXJFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOworICAgIGJvb2wgYXJy
YXlUeXBlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHVibGljVHlwZSB0eXBl
KTsKKyAgICBib29sIGFycmF5RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3Ry
aW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSk7
CisgICAgYm9vbCB2b2lkRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiwgY29uc3QgVFN0cmlu
ZyYsIGNvbnN0IFRQdWJsaWNUeXBlJik7CisgICAgYm9vbCBib29sRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiwgY29uc3QgVEludGVybVR5cGVkKik7CisgICAgYm9vbCBib29sRXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiwgY29uc3QgVFB1YmxpY1R5cGUmKTsKKyAgICBib29sIHNhbXBs
ZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBw
VHlwZSwgY29uc3QgY2hhciogcmVhc29uKTsKKyAgICBib29sIHN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKTsK
KyAgICBib29sIHBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBjb25zdCBUVHlwZSYgdHlwZSk7CisgICAgYm9vbCBu
b25Jbml0Q29uc3RFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlk
ZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KTsKKyAgICBib29sIG5vbklu
aXRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIs
IFRQdWJsaWNUeXBlJiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSk7CisgICAgYm9vbCBwYXJh
bUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIs
IFRRdWFsaWZpZXIgcGFyYW1RdWFsaWZpZXIsIFRUeXBlKiB0eXBlKTsKKyAgICBib29sIGV4dGVu
c2lvbkVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYpOwog
CisgICAgY29uc3QgVFByYWdtYSYgcHJhZ21hKCkgY29uc3QgeyByZXR1cm4gZGlyZWN0aXZlSGFu
ZGxlci5wcmFnbWEoKTsgfQogICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZXh0ZW5zaW9u
QmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLmV4dGVuc2lvbkJlaGF2
aW9yKCk7IH0KICAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIGV4dGVuc2lv
bik7Ci0gICAgdm9pZCBoYW5kbGVFeHRlbnNpb25EaXJlY3RpdmUoaW50IGxpbmUsIGNvbnN0IGNo
YXIqIGV4dE5hbWUsIGNvbnN0IGNoYXIqIGJlaGF2aW9yKTsKLQotICAgIGNvbnN0IFRQcmFnbWEm
IHByYWdtYSgpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGl2ZUhhbmRsZXIucHJhZ21hKCk7IH0KLSAg
ICB2b2lkIGhhbmRsZVByYWdtYURpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogbmFtZSwg
Y29uc3QgY2hhciogdmFsdWUpOwogCiAgICAgYm9vbCBjb250YWluc1NhbXBsZXIoVFR5cGUmIHR5
cGUpOwogICAgIGJvb2wgYXJlQWxsQ2hpbGRDb25zdChUSW50ZXJtQWdncmVnYXRlKiBhZ2dyTm9k
ZSk7Ci0gICAgY29uc3QgVEZ1bmN0aW9uKiBmaW5kRnVuY3Rpb24oaW50IGxpbmUsIFRGdW5jdGlv
biogcGZuQ2FsbCwgYm9vbCAqYnVpbHRJbiA9IDApOwotICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxp
emVyKFRTb3VyY2VMb2MgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHBU
eXBlLAorICAgIGNvbnN0IFRGdW5jdGlvbiogZmluZEZ1bmN0aW9uKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIFRGdW5jdGlvbiogcGZuQ2FsbCwgYm9vbCAqYnVpbHRJbiA9IDApOworICAgIGJvb2wg
aXNWYXJpYWJsZUJ1aWx0SW4oY29uc3QgVFZhcmlhYmxlKiBwVmFyKTsKKyAgICBib29sIGV4ZWN1
dGVJbml0aWFsaXplcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVy
LCBUUHVibGljVHlwZSYgcFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVy
bVR5cGVkKiBpbml0aWFsaXplciwgVEludGVybU5vZGUqJiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUq
IHZhcmlhYmxlID0gMCk7Ci0gICAgYm9vbCBhcnJheVNldE1heFNpemUoVEludGVybVN5bWJvbCos
IFRUeXBlKiwgaW50LCBib29sLCBUU291cmNlTG9jKTsKIAotICAgIFRJbnRlcm1UeXBlZCogYWRk
Q29uc3RydWN0b3IoVEludGVybU5vZGUqLCBjb25zdCBUVHlwZSosIFRPcGVyYXRvciwgVEZ1bmN0
aW9uKiwgVFNvdXJjZUxvYyk7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdHJ1Y3RvcihUSW50
ZXJtTm9kZSosIGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBURnVuY3Rpb24qLCBjb25zdCBUU291
cmNlTG9jJik7CiAgICAgVEludGVybVR5cGVkKiBmb2xkQ29uc3RDb25zdHJ1Y3RvcihUSW50ZXJt
QWdncmVnYXRlKiBhZ2dyTm9kZSwgY29uc3QgVFR5cGUmIHR5cGUpOwotICAgIFRJbnRlcm1UeXBl
ZCogY29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiwgVFR5cGUqLCBpbnQsIFRTb3VyY2VMb2Ms
IGJvb2wgc3Vic2V0KTsKLSAgICBUSW50ZXJtVHlwZWQqIGNvbnN0cnVjdEJ1aWx0SW4oY29uc3Qg
VFR5cGUqLCBUT3BlcmF0b3IsIFRJbnRlcm1Ob2RlKiwgVFNvdXJjZUxvYywgYm9vbCBzdWJzZXQp
OwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RWZWN0b3JOb2RlKFRWZWN0b3JGaWVsZHMmLCBU
SW50ZXJtVHlwZWQqLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0TWF0
cml4Tm9kZShpbnQgLCBUSW50ZXJtVHlwZWQqLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlw
ZWQqIGFkZENvbnN0QXJyYXlOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBUU291
cmNlTG9jIGxpbmUpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RTdHJ1Y3QoVFN0cmluZyYg
LCBUSW50ZXJtVHlwZWQqLCBUU291cmNlTG9jKTsKKyAgICBUSW50ZXJtVHlwZWQqIGNvbnN0cnVj
dFN0cnVjdChUSW50ZXJtTm9kZSosIFRUeXBlKiwgaW50LCBjb25zdCBUU291cmNlTG9jJiwgYm9v
bCBzdWJzZXQpOworICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlw
ZSosIFRPcGVyYXRvciwgVEludGVybU5vZGUqLCBjb25zdCBUU291cmNlTG9jJiwgYm9vbCBzdWJz
ZXQpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RWZWN0b3JOb2RlKFRWZWN0b3JGaWVsZHMm
LCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBh
ZGRDb25zdE1hdHJpeE5vZGUoaW50ICwgVEludGVybVR5cGVkKiwgY29uc3QgVFNvdXJjZUxvYyYp
OworICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJt
VHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpOworICAgIFRJbnRlcm1UeXBlZCog
YWRkQ29uc3RTdHJ1Y3QoVFN0cmluZyYgLCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9j
Jik7CiAKICAgICAvLyBQZXJmb3JtcyBhbiBlcnJvciBjaGVjayBmb3IgZW1iZWRkZWQgc3RydWN0
IGRlY2xhcmF0aW9ucy4KICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW4gZXJyb3Igd2FzIHJhaXNl
ZCBkdWUgdG8gdGhlIGRlY2xhcmF0aW9uIG9mCiAgICAgLy8gdGhpcyBzdHJ1Y3QuCi0gICAgYm9v
bCBlbnRlclN0cnVjdERlY2xhcmF0aW9uKFRTb3VyY2VMb2MgbGluZSwgY29uc3QgVFN0cmluZyYg
aWRlbnRpZmllcik7CisgICAgYm9vbCBlbnRlclN0cnVjdERlY2xhcmF0aW9uKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpOwogICAgIHZvaWQgZXhpdFN0
cnVjdERlY2xhcmF0aW9uKCk7CiAKLSAgICBib29sIHN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKFRT
b3VyY2VMb2MgbGluZSwgY29uc3QgVFR5cGUmIGZpZWxkVHlwZSk7CisgICAgYm9vbCBzdHJ1Y3RO
ZXN0aW5nRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBURmllbGQmIGZp
ZWxkKTsKIH07CiAKIGludCBQYVBhcnNlU3RyaW5ncyhzaXplX3QgY291bnQsIGNvbnN0IGNoYXIq
IGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcAkocmV2aXNpb24g
MTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bvb2xBbGxv
Yy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCwyNCArMjI4LDI3IEBAIHZvaWQgVFBvb2xBbGxv
Y2F0b3I6OnBvcEFsbCgpCiAKIHZvaWQqIFRQb29sQWxsb2NhdG9yOjphbGxvY2F0ZShzaXplX3Qg
bnVtQnl0ZXMpCiB7CisgICAgLy8KKyAgICAvLyBKdXN0IGtlZXAgc29tZSBpbnRlcmVzdGluZyBz
dGF0aXN0aWNzLgorICAgIC8vCisgICAgKytudW1DYWxsczsKKyAgICB0b3RhbEJ5dGVzICs9IG51
bUJ5dGVzOworCiAgICAgLy8gSWYgd2UgYXJlIHVzaW5nIGd1YXJkIGJsb2NrcywgYWxsIGFsbG9j
YXRpb25zIGFyZSBicmFja2V0ZWQgYnkKICAgICAvLyB0aGVtOiBbZ3VhcmRibG9ja11bYWxsb2Nh
dGlvbl1bZ3VhcmRibG9ja10uICBudW1CeXRlcyBpcyBob3cKICAgICAvLyBtdWNoIG1lbW9yeSB0
aGUgY2FsbGVyIGFza2VkIGZvci4gIGFsbG9jYXRpb25TaXplIGlzIHRoZSB0b3RhbAogICAgIC8v
IHNpemUgaW5jbHVkaW5nIGd1YXJkIGJsb2Nrcy4gIEluIHJlbGVhc2UgYnVpbGQsCiAgICAgLy8g
Z3VhcmRCbG9ja1NpemU9MCBhbmQgdGhpcyBhbGwgZ2V0cyBvcHRpbWl6ZWQgYXdheS4KICAgICBz
aXplX3QgYWxsb2NhdGlvblNpemUgPSBUQWxsb2NhdGlvbjo6YWxsb2NhdGlvblNpemUobnVtQnl0
ZXMpOwotICAgIAotICAgIC8vCi0gICAgLy8gSnVzdCBrZWVwIHNvbWUgaW50ZXJlc3Rpbmcgc3Rh
dGlzdGljcy4KLSAgICAvLwotICAgICsrbnVtQ2FsbHM7Ci0gICAgdG90YWxCeXRlcyArPSBudW1C
eXRlczsKKyAgICAvLyBEZXRlY3QgaW50ZWdlciBvdmVyZmxvdy4KKyAgICBpZiAoYWxsb2NhdGlv
blNpemUgPCBudW1CeXRlcykKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLwogICAgIC8vIERv
IHRoZSBhbGxvY2F0aW9uLCBtb3N0IGxpa2VseSBjYXNlIGZpcnN0LCBmb3IgZWZmaWNpZW5jeS4K
ICAgICAvLyBUaGlzIHN0ZXAgY291bGQgYmUgbW92ZWQgdG8gYmUgaW5saW5lIHNvbWV0aW1lLgog
ICAgIC8vCi0gICAgaWYgKGN1cnJlbnRQYWdlT2Zmc2V0ICsgYWxsb2NhdGlvblNpemUgPD0gcGFn
ZVNpemUpIHsKKyAgICBpZiAoYWxsb2NhdGlvblNpemUgPD0gcGFnZVNpemUgLSBjdXJyZW50UGFn
ZU9mZnNldCkgewogICAgICAgICAvLwogICAgICAgICAvLyBTYWZlIHRvIGFsbG9jYXRlIGZyb20g
Y3VycmVudFBhZ2VPZmZzZXQuCiAgICAgICAgIC8vCkBAIC0yNTYsMTIgKzI1OSwxNiBAQCB2b2lk
KiBUUG9vbEFsbG9jYXRvcjo6YWxsb2NhdGUoc2l6ZV90IG51CiAgICAgICAgIHJldHVybiBpbml0
aWFsaXplQWxsb2NhdGlvbihpblVzZUxpc3QsIG1lbW9yeSwgbnVtQnl0ZXMpOwogICAgIH0KIAot
ICAgIGlmIChhbGxvY2F0aW9uU2l6ZSArIGhlYWRlclNraXAgPiBwYWdlU2l6ZSkgeworICAgIGlm
IChhbGxvY2F0aW9uU2l6ZSA+IHBhZ2VTaXplIC0gaGVhZGVyU2tpcCkgewogICAgICAgICAvLwog
ICAgICAgICAvLyBEbyBhIG11bHRpLXBhZ2UgYWxsb2NhdGlvbi4gIERvbid0IG1peCB0aGVzZSB3
aXRoIHRoZSBvdGhlcnMuCiAgICAgICAgIC8vIFRoZSBPUyBpcyBlZmZpY2llbnQgYW5kIGFsbG9j
YXRpbmcgYW5kIGZyZWUtaW5nIG11bHRpcGxlIHBhZ2VzLgogICAgICAgICAvLwogICAgICAgICBz
aXplX3QgbnVtQnl0ZXNUb0FsbG9jID0gYWxsb2NhdGlvblNpemUgKyBoZWFkZXJTa2lwOworICAg
ICAgICAvLyBEZXRlY3QgaW50ZWdlciBvdmVyZmxvdy4KKyAgICAgICAgaWYgKG51bUJ5dGVzVG9B
bGxvYyA8IGFsbG9jYXRpb25TaXplKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKICAgICAgICAg
dEhlYWRlciogbWVtb3J5ID0gcmVpbnRlcnByZXRfY2FzdDx0SGVhZGVyKj4oOjpuZXcgY2hhcltu
dW1CeXRlc1RvQWxsb2NdKTsKICAgICAgICAgaWYgKG1lbW9yeSA9PSAwKQogICAgICAgICAgICAg
cmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hI
YW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvU2hIYW5kbGUuaAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDggKzgxLDgg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgSW5pdEJ1aWx0SW5TeW1ib2xUYWJsZShjb25zdCBTaEJ1
aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcyk7CiAgICAgLy8gQ2xlYXJzIHRoZSByZXN1bHRzIGZy
b20gdGhlIHByZXZpb3VzIGNvbXBpbGF0aW9uLgogICAgIHZvaWQgY2xlYXJSZXN1bHRzKCk7Ci0g
ICAgLy8gUmV0dXJuIHRydWUgaWYgZnVuY3Rpb24gcmVjdXJzaW9uIGlzIGRldGVjdGVkLgotICAg
IGJvb2wgZGV0ZWN0UmVjdXJzaW9uKFRJbnRlcm1Ob2RlKiByb290KTsKKyAgICAvLyBSZXR1cm4g
dHJ1ZSBpZiBmdW5jdGlvbiByZWN1cnNpb24gaXMgZGV0ZWN0ZWQgb3IgY2FsbCBkZXB0aCBleGNl
ZWRlZC4KKyAgICBib29sIGRldGVjdENhbGxEZXB0aChUSW50ZXJtTm9kZSogcm9vdCwgVEluZm9T
aW5rJiBpbmZvU2luaywgYm9vbCBsaW1pdENhbGxTdGFja0RlcHRoKTsKICAgICAvLyBSZXdyaXRl
cyBhIHNoYWRlcidzIGludGVybWVkaWF0ZSB0cmVlIGFjY29yZGluZyB0byB0aGUgQ1NTIFNoYWRl
cnMgc3BlYy4KICAgICB2b2lkIHJld3JpdGVDU1NTaGFkZXIoVEludGVybU5vZGUqIHJvb3QpOwog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gc2hhZGVyIGRvZXMgbm90IGV4Y2VlZCB0
aGUgbWluaW11bQpAQCAtMTA0LDYgKzEwNCw4IEBAIHByb3RlY3RlZDoKICAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIHNoYWRlciBkb2VzIG5vdCB1c2Ugc2FtcGxlciBkZXBlbmRlbnQgdmFsdWVz
IHRvIGFmZmVjdCBjb250cm9sIAogICAgIC8vIGZsb3cgb3IgaW4gb3BlcmF0aW9ucyB3aG9zZSB0
aW1lIGNhbiBkZXBlbmQgb24gdGhlIGlucHV0IHZhbHVlcy4KICAgICBib29sIGVuZm9yY2VGcmFn
bWVudFNoYWRlclRpbWluZ1Jlc3RyaWN0aW9ucyhjb25zdCBURGVwZW5kZW5jeUdyYXBoJiBncmFw
aCk7CisgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIG1heGltdW0gZXhwcmVzc2lvbiBjb21wbGV4
aXR5IGJlbG93IHRoZSBsaW1pdC4KKyAgICBib29sIGxpbWl0RXhwcmVzc2lvbkNvbXBsZXhpdHko
VEludGVybU5vZGUqIHJvb3QpOwogICAgIC8vIEdldCBidWlsdC1pbiBleHRlbnNpb25zIHdpdGgg
ZGVmYXVsdCBiZWhhdmlvci4KICAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGdldEV4dGVu
c2lvbkJlaGF2aW9yKCkgY29uc3Q7CiAKQEAgLTExNiw2ICsxMTgsOCBAQCBwcml2YXRlOgogICAg
IFNoU2hhZGVyU3BlYyBzaGFkZXJTcGVjOwogCiAgICAgaW50IG1heFVuaWZvcm1WZWN0b3JzOwor
ICAgIGludCBtYXhFeHByZXNzaW9uQ29tcGxleGl0eTsKKyAgICBpbnQgbWF4Q2FsbFN0YWNrRGVw
dGg7CiAKICAgICAvLyBCdWlsdC1pbiBzeW1ib2wgdGFibGUgZm9yIHRoZSBnaXZlbiBsYW5ndWFn
ZSwgc3BlYywgYW5kIHJlc291cmNlcy4KICAgICAvLyBJdCBpcyBwcmVzZXJ2ZWQgZnJvbSBjb21w
aWxlLXRvLWNvbXBpbGUuCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvU2hhZGVyTGFuZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNiw2ICsxMjYsNyBAQCB2b2lkIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoU2hCdWls
dEluUmVzCiAgICAgcmVzb3VyY2VzLT5PRVNfRUdMX2ltYWdlX2V4dGVybmFsID0gMDsKICAgICBy
ZXNvdXJjZXMtPkFSQl90ZXh0dXJlX3JlY3RhbmdsZSA9IDA7CiAgICAgcmVzb3VyY2VzLT5FWFRf
ZHJhd19idWZmZXJzID0gMDsKKyAgICByZXNvdXJjZXMtPkVYVF9mcmFnX2RlcHRoID0gMDsKIAog
ICAgIC8vIERpc2FibGUgaGlnaHAgcHJlY2lzaW9uIGluIGZyYWdtZW50IHNoYWRlciBieSBkZWZh
dWx0LgogICAgIHJlc291cmNlcy0+RnJhZ21lbnRQcmVjaXNpb25IaWdoID0gMDsKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxl
LmNwcAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1N5bWJvbFRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcsNDggKzE3LDM0IEBA
CiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotI2luY2x1ZGUg
ImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSA8Y2xpbWl0cz4KIAogVFR5cGU6OlRUeXBl
KGNvbnN0IFRQdWJsaWNUeXBlICZwKSA6Ci0gICAgICAgICAgICB0eXBlKHAudHlwZSksIHByZWNp
c2lvbihwLnByZWNpc2lvbiksIHF1YWxpZmllcihwLnF1YWxpZmllciksIHNpemUocC5zaXplKSwg
bWF0cml4KHAubWF0cml4KSwgYXJyYXkocC5hcnJheSksIGFycmF5U2l6ZShwLmFycmF5U2l6ZSks
Ci0gICAgICAgICAgICBtYXhBcnJheVNpemUoMCksIGFycmF5SW5mb3JtYXRpb25UeXBlKDApLCBz
dHJ1Y3R1cmUoMCksIHN0cnVjdHVyZVNpemUoMCksIGRlZXBlc3RTdHJ1Y3ROZXN0aW5nKDApLCBm
aWVsZE5hbWUoMCksIG1hbmdsZWQoMCksIHR5cGVOYW1lKDApCisgICAgICAgICAgICB0eXBlKHAu
dHlwZSksIHByZWNpc2lvbihwLnByZWNpc2lvbiksIHF1YWxpZmllcihwLnF1YWxpZmllciksIHNp
emUocC5zaXplKSwgbWF0cml4KHAubWF0cml4KSwgYXJyYXkocC5hcnJheSksIGFycmF5U2l6ZShw
LmFycmF5U2l6ZSksIHN0cnVjdHVyZSgwKQogewotICAgIGlmIChwLnVzZXJEZWYpIHsKKyAgICBp
ZiAocC51c2VyRGVmKQogICAgICAgICBzdHJ1Y3R1cmUgPSBwLnVzZXJEZWYtPmdldFN0cnVjdCgp
OwotICAgICAgICB0eXBlTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKHAudXNlckRlZi0+Z2V0VHlwZU5h
bWUoKS5jX3N0cigpKTsKLSAgICAgICAgY29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCk7Ci0g
ICAgfQogfQogCiAvLwogLy8gUmVjdXJzaXZlbHkgZ2VuZXJhdGUgbWFuZ2xlZCBuYW1lcy4KIC8v
Ci12b2lkIFRUeXBlOjpidWlsZE1hbmdsZWROYW1lKFRTdHJpbmcmIG1hbmdsZWROYW1lKQorVFN0
cmluZyBUVHlwZTo6YnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0CiB7CisgICAgVFN0cmluZyBtYW5n
bGVkTmFtZTsKICAgICBpZiAoaXNNYXRyaXgoKSkKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ20n
OwogICAgIGVsc2UgaWYgKGlzVmVjdG9yKCkpCiAgICAgICAgIG1hbmdsZWROYW1lICs9ICd2JzsK
IAogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgRWJ0RmxvYXQ6ICAgICAgICAgICAgICBt
YW5nbGVkTmFtZSArPSAnZic7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRJbnQ6ICAgICAgICAg
ICAgICAgIG1hbmdsZWROYW1lICs9ICdpJzsgICAgICBicmVhazsKLSAgICBjYXNlIEVidEJvb2w6
ICAgICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ2InOyAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RWJ0U2FtcGxlcjJEOiAgICAgICAgICBtYW5nbGVkTmFtZSArPSAiczIiOyAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBFYnRTYW1wbGVyQ3ViZTogICAgICAgIG1hbmdsZWROYW1lICs9ICJzQyI7ICAgICBi
cmVhazsKLSAgICBjYXNlIEVidFN0cnVjdDoKLSAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInN0cnVj
dC0iOwotICAgICAgICBpZiAodHlwZU5hbWUpCi0gICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAq
dHlwZU5hbWU7Ci0gICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJy0nOwotICAgICAgICAgICAgICAgICgqc3RydWN0
dXJlKVtpXS50eXBlLT5idWlsZE1hbmdsZWROYW1lKG1hbmdsZWROYW1lKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0
RmxvYXQ6ICAgICAgIG1hbmdsZWROYW1lICs9ICdmJzsgICAgICBicmVhazsKKyAgICBjYXNlIEVi
dEludDogICAgICAgICBtYW5nbGVkTmFtZSArPSAnaSc7ICAgICAgYnJlYWs7CisgICAgY2FzZSBF
YnRCb29sOiAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ2InOyAgICAgIGJyZWFrOworICAgIGNhc2Ug
RWJ0U2FtcGxlcjJEOiAgIG1hbmdsZWROYW1lICs9ICJzMiI7ICAgICBicmVhazsKKyAgICBjYXNl
IEVidFNhbXBsZXJDdWJlOiBtYW5nbGVkTmFtZSArPSAic0MiOyAgICAgYnJlYWs7CisgICAgY2Fz
ZSBFYnRTdHJ1Y3Q6ICAgICAgbWFuZ2xlZE5hbWUgKz0gc3RydWN0dXJlLT5tYW5nbGVkTmFtZSgp
OyBicmVhazsKKyAgICBkZWZhdWx0OiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBt
YW5nbGVkTmFtZSArPSBzdGF0aWNfY2FzdDxjaGFyPignMCcgKyBnZXROb21pbmFsU2l6ZSgpKTsK
QEAgLTY5LDUzICs1NSw3MiBAQCB2b2lkIFRUeXBlOjpidWlsZE1hbmdsZWROYW1lKFRTdHJpbmcm
IG1hCiAgICAgICAgIG1hbmdsZWROYW1lICs9IGJ1ZjsKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0g
J10nOwogICAgIH0KKyAgICByZXR1cm4gbWFuZ2xlZE5hbWU7CiB9CiAKLWludCBUVHlwZTo6Z2V0
U3RydWN0U2l6ZSgpIGNvbnN0CitzaXplX3QgVFR5cGU6OmdldE9iamVjdFNpemUoKSBjb25zdAog
ewotICAgIGlmICghZ2V0U3RydWN0KCkpIHsKLSAgICAgICAgYXNzZXJ0KGZhbHNlICYmICJOb3Qg
YSBzdHJ1Y3QiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIHNpemVfdCB0b3RhbFNp
emUgPSAwOwogCi0gICAgaWYgKHN0cnVjdHVyZVNpemUgPT0gMCkKLSAgICAgICAgZm9yIChUVHlw
ZUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIHRsID0gZ2V0U3RydWN0KCktPmJlZ2luKCk7IHRsICE9IGdl
dFN0cnVjdCgpLT5lbmQoKTsgdGwrKykKLSAgICAgICAgICAgIHN0cnVjdHVyZVNpemUgKz0gKCgq
dGwpLnR5cGUpLT5nZXRPYmplY3RTaXplKCk7CisgICAgaWYgKGdldEJhc2ljVHlwZSgpID09IEVi
dFN0cnVjdCkKKyAgICAgICAgdG90YWxTaXplID0gc3RydWN0dXJlLT5vYmplY3RTaXplKCk7Cisg
ICAgZWxzZSBpZiAobWF0cml4KQorICAgICAgICB0b3RhbFNpemUgPSBzaXplICogc2l6ZTsKKyAg
ICBlbHNlCisgICAgICAgIHRvdGFsU2l6ZSA9IHNpemU7CisKKyAgICBpZiAoaXNBcnJheSgpKSB7
CisgICAgICAgIHNpemVfdCBhcnJheVNpemUgPSBnZXRBcnJheVNpemUoKTsKKyAgICAgICAgaWYg
KGFycmF5U2l6ZSA+IElOVF9NQVggLyB0b3RhbFNpemUpCisgICAgICAgICAgICB0b3RhbFNpemUg
PSBJTlRfTUFYOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0b3RhbFNpemUgKj0gYXJyYXlT
aXplOworICAgIH0KIAotICAgIHJldHVybiBzdHJ1Y3R1cmVTaXplOworICAgIHJldHVybiB0b3Rh
bFNpemU7CiB9CiAKLXZvaWQgVFR5cGU6OmNvbXB1dGVEZWVwZXN0U3RydWN0TmVzdGluZygpCiti
b29sIFRTdHJ1Y3R1cmU6OmNvbnRhaW5zQXJyYXlzKCkgY29uc3QKIHsKLSAgICBpZiAoIWdldFN0
cnVjdCgpKSB7Ci0gICAgICAgIHJldHVybjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1G
aWVsZHMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUgPSAo
Km1GaWVsZHMpW2ldLT50eXBlKCk7CisgICAgICAgIGlmIChmaWVsZFR5cGUtPmlzQXJyYXkoKSB8
fCBmaWVsZFR5cGUtPmlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KIAotICAgIGludCBtYXhO
ZXN0aW5nID0gMDsKLSAgICBmb3IgKFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgdGwgPSBnZXRT
dHJ1Y3QoKS0+YmVnaW4oKTsgdGwgIT0gZ2V0U3RydWN0KCktPmVuZCgpOyArK3RsKSB7Ci0gICAg
ICAgIG1heE5lc3RpbmcgPSBzdGQ6Om1heChtYXhOZXN0aW5nLCAoKCp0bCkudHlwZSktPmdldERl
ZXBlc3RTdHJ1Y3ROZXN0aW5nKCkpOworVFN0cmluZyBUU3RydWN0dXJlOjpidWlsZE1hbmdsZWRO
YW1lKCkgY29uc3QKK3sKKyAgICBUU3RyaW5nIG1hbmdsZWROYW1lKCJzdHJ1Y3QtIik7CisgICAg
bWFuZ2xlZE5hbWUgKz0gKm1OYW1lOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZpZWxk
cy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJy0nOworICAgICAgICBt
YW5nbGVkTmFtZSArPSAoKm1GaWVsZHMpW2ldLT50eXBlKCktPmdldE1hbmdsZWROYW1lKCk7CiAg
ICAgfQotCi0gICAgZGVlcGVzdFN0cnVjdE5lc3RpbmcgPSAxICsgbWF4TmVzdGluZzsKKyAgICBy
ZXR1cm4gbWFuZ2xlZE5hbWU7CiB9CiAKLWJvb2wgVFR5cGU6OmlzU3RydWN0dXJlQ29udGFpbmlu
Z0FycmF5cygpIGNvbnN0CitzaXplX3QgVFN0cnVjdHVyZTo6Y2FsY3VsYXRlT2JqZWN0U2l6ZSgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgc2l6ZV90IHNpemUgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZp
ZWxkcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgc2l6ZV90IGZpZWxkU2l6ZSA9ICgqbUZpZWxk
cylbaV0tPnR5cGUoKS0+Z2V0T2JqZWN0U2l6ZSgpOworICAgICAgICBpZiAoZmllbGRTaXplID4g
SU5UX01BWCAtIHNpemUpCisgICAgICAgICAgICBzaXplID0gSU5UX01BWDsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgc2l6ZSArPSBmaWVsZFNpemU7CiAgICAgfQorICAgIHJldHVybiBzaXpl
OworfQogCi0gICAgZm9yIChUVHlwZUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIG1lbWJlciA9IHN0cnVj
dHVyZS0+YmVnaW4oKTsgbWVtYmVyICE9IHN0cnVjdHVyZS0+ZW5kKCk7IG1lbWJlcisrKQotICAg
IHsKLSAgICAgICAgaWYgKG1lbWJlci0+dHlwZS0+aXNBcnJheSgpIHx8Ci0gICAgICAgICAgICBt
ZW1iZXItPnR5cGUtPmlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQoraW50IFRTdHJ1Y3R1cmU6OmNhbGN1
bGF0ZURlZXBlc3ROZXN0aW5nKCkgY29uc3QKK3sKKyAgICBpbnQgbWF4TmVzdGluZyA9IDA7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsraSkgeworICAgICAg
ICBtYXhOZXN0aW5nID0gc3RkOjptYXgobWF4TmVzdGluZywgKCptRmllbGRzKVtpXS0+dHlwZSgp
LT5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpKTsKICAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIDEgKyBtYXhOZXN0aW5nOwogfQogCiAvLwpAQCAtMTk2LDg0ICsyMDEsOCBA
QCB2b2lkIFRTeW1ib2xUYWJsZUxldmVsOjpyZWxhdGVUb09wZXJhdG9yCiB2b2lkIFRTeW1ib2xU
YWJsZUxldmVsOjpyZWxhdGVUb0V4dGVuc2lvbihjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBUU3Ry
aW5nJiBleHQpCiB7CiAgICAgZm9yICh0TGV2ZWw6Oml0ZXJhdG9yIGl0ID0gbGV2ZWwuYmVnaW4o
KTsgaXQgIT0gbGV2ZWwuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LT5zZWNvbmQtPmlz
RnVuY3Rpb24oKSkgewotICAgICAgICAgICAgVEZ1bmN0aW9uKiBmdW5jdGlvbiA9IHN0YXRpY19j
YXN0PFRGdW5jdGlvbio+KGl0LT5zZWNvbmQpOwotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5n
ZXROYW1lKCkgPT0gbmFtZSkKLSAgICAgICAgICAgICAgICBmdW5jdGlvbi0+cmVsYXRlVG9FeHRl
bnNpb24oZXh0KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotVFN5bWJvbDo6VFN5bWJvbChjb25z
dCBUU3ltYm9sJiBjb3B5T2YpCi17Ci0gICAgbmFtZSA9IE5ld1Bvb2xUU3RyaW5nKGNvcHlPZi5u
YW1lLT5jX3N0cigpKTsKLSAgICB1bmlxdWVJZCA9IGNvcHlPZi51bmlxdWVJZDsKLX0KLQotVFZh
cmlhYmxlOjpUVmFyaWFibGUoY29uc3QgVFZhcmlhYmxlJiBjb3B5T2YsIFRTdHJ1Y3R1cmVNYXAm
IHJlbWFwcGVyKSA6IFRTeW1ib2woY29weU9mKQotewotICAgIHR5cGUuY29weVR5cGUoY29weU9m
LnR5cGUsIHJlbWFwcGVyKTsKLSAgICB1c2VyVHlwZSA9IGNvcHlPZi51c2VyVHlwZTsKLSAgICAv
LyBmb3IgYnVpbHRJbiBzeW1ib2wgdGFibGUgbGV2ZWwsIHVuaW9uQXJyYXkgYW5kIGFycmF5SW5m
b3JtYXRpb24gcG9pbnRlcnMgc2hvdWxkIGJlIE5VTEwKLSAgICBhc3NlcnQoY29weU9mLmFycmF5
SW5mb3JtYXRpb25UeXBlID09IDApOwotICAgIGFycmF5SW5mb3JtYXRpb25UeXBlID0gMDsKLQot
ICAgIGlmIChjb3B5T2YudW5pb25BcnJheSkgewotICAgICAgICBhc3NlcnQoIWNvcHlPZi50eXBl
LmdldFN0cnVjdCgpKTsKLSAgICAgICAgYXNzZXJ0KGNvcHlPZi50eXBlLmdldE9iamVjdFNpemUo
KSA9PSAxKTsKLSAgICAgICAgdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwotICAg
ICAgICB1bmlvbkFycmF5WzBdID0gY29weU9mLnVuaW9uQXJyYXlbMF07Ci0gICAgfSBlbHNlCi0g
ICAgICAgIHVuaW9uQXJyYXkgPSAwOwotfQotCi1UVmFyaWFibGUqIFRWYXJpYWJsZTo6Y2xvbmUo
VFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpCi17Ci0gICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5l
dyBUVmFyaWFibGUoKnRoaXMsIHJlbWFwcGVyKTsKLQotICAgIHJldHVybiB2YXJpYWJsZTsKLX0K
LQotVEZ1bmN0aW9uOjpURnVuY3Rpb24oY29uc3QgVEZ1bmN0aW9uJiBjb3B5T2YsIFRTdHJ1Y3R1
cmVNYXAmIHJlbWFwcGVyKSA6IFRTeW1ib2woY29weU9mKQotewotICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgY29weU9mLnBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
VFBhcmFtZXRlciBwYXJhbTsKLSAgICAgICAgcGFyYW1ldGVycy5wdXNoX2JhY2socGFyYW0pOwot
ICAgICAgICBwYXJhbWV0ZXJzLmJhY2soKS5jb3B5UGFyYW0oY29weU9mLnBhcmFtZXRlcnNbaV0s
IHJlbWFwcGVyKTsKLSAgICB9Ci0KLSAgICByZXR1cm5UeXBlLmNvcHlUeXBlKGNvcHlPZi5yZXR1
cm5UeXBlLCByZW1hcHBlcik7Ci0gICAgbWFuZ2xlZE5hbWUgPSBjb3B5T2YubWFuZ2xlZE5hbWU7
Ci0gICAgb3AgPSBjb3B5T2Yub3A7Ci0gICAgZGVmaW5lZCA9IGNvcHlPZi5kZWZpbmVkOwotfQot
Ci1URnVuY3Rpb24qIFRGdW5jdGlvbjo6Y2xvbmUoVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpCi17
Ci0gICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oKnRoaXMsIHJlbWFwcGVy
KTsKLQotICAgIHJldHVybiBmdW5jdGlvbjsKLX0KLQotVFN5bWJvbFRhYmxlTGV2ZWwqIFRTeW1i
b2xUYWJsZUxldmVsOjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLXsKLSAgICBUU3lt
Ym9sVGFibGVMZXZlbCAqc3ltVGFibGVMZXZlbCA9IG5ldyBUU3ltYm9sVGFibGVMZXZlbCgpOwot
ICAgIHRMZXZlbDo6aXRlcmF0b3IgaXRlcjsKLSAgICBmb3IgKGl0ZXIgPSBsZXZlbC5iZWdpbigp
OyBpdGVyICE9IGxldmVsLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgc3ltVGFibGVMZXZlbC0+
aW5zZXJ0KCppdGVyLT5zZWNvbmQtPmNsb25lKHJlbWFwcGVyKSk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIHN5bVRhYmxlTGV2ZWw7Ci19Ci0KLXZvaWQgVFN5bWJvbFRhYmxlOjpjb3B5VGFibGUoY29u
c3QgVFN5bWJvbFRhYmxlJiBjb3B5T2YpCi17Ci0gICAgVFN0cnVjdHVyZU1hcCByZW1hcHBlcjsK
LSAgICB1bmlxdWVJZCA9IGNvcHlPZi51bmlxdWVJZDsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IGNvcHlPZi50YWJsZS5zaXplKCk7ICsraSkgewotICAgICAgICB0YWJsZS5wdXNo
X2JhY2soY29weU9mLnRhYmxlW2ldLT5jbG9uZShyZW1hcHBlcikpOwotICAgIH0KLSAgICBmb3Io
IHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvcHlPZi5wcmVjaXNpb25TdGFjay5zaXplKCk7IGkr
KykgewotICAgICAgICBwcmVjaXNpb25TdGFjay5wdXNoX2JhY2soIGNvcHlPZi5wcmVjaXNpb25T
dGFja1tpXSApOworICAgICAgICBUU3ltYm9sKiBzeW1ib2wgPSBpdC0+c2Vjb25kOworICAgICAg
ICBpZiAoc3ltYm9sLT5nZXROYW1lKCkgPT0gbmFtZSkKKyAgICAgICAgICAgIHN5bWJvbC0+cmVs
YXRlVG9FeHRlbnNpb24oZXh0KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMTUyNjQ5
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgPGFzc2VydC5oPgog
CisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKICNpbmNsdWRlICJjb21waWxlci9JbmZv
U2luay5oIgogI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5oIgogCkBAIC00OSwxMyAr
NTAsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHNldFVuaXF1ZUlkKGludCBpZCkgeyB1bmlxdWVJZCA9
IGlkOyB9CiAgICAgaW50IGdldFVuaXF1ZUlkKCkgY29uc3QgeyByZXR1cm4gdW5pcXVlSWQ7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZHVtcChUSW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdCA9IDA7CQot
ICAgIFRTeW1ib2woY29uc3QgVFN5bWJvbCYpOwotICAgIHZpcnR1YWwgVFN5bWJvbCogY2xvbmUo
VFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHVtcChUSW5m
b1NpbmsgJmluZm9TaW5rKSBjb25zdCA9IDA7CisgICAgdm9pZCByZWxhdGVUb0V4dGVuc2lvbihj
b25zdCBUU3RyaW5nJiBleHQpIHsgZXh0ZW5zaW9uID0gZXh0OyB9CisgICAgY29uc3QgVFN0cmlu
ZyYgZ2V0RXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gZXh0ZW5zaW9uOyB9CisKK3ByaXZhdGU6
CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRTeW1ib2wpOwogCi1wcm90ZWN0ZWQ6CiAg
ICAgY29uc3QgVFN0cmluZyAqbmFtZTsKICAgICB1bnNpZ25lZCBpbnQgdW5pcXVlSWQ7ICAgICAg
Ly8gRm9yIHJlYWwgY29tcGFyaW5nIGR1cmluZyBjb2RlIGdlbmVyYXRpb24KKyAgICBUU3RyaW5n
IGV4dGVuc2lvbjsKIH07CiAKIC8vCkBAIC03MCwxNSArNzQsMTMgQEAgcHJvdGVjdGVkOgogLy8K
IGNsYXNzIFRWYXJpYWJsZSA6IHB1YmxpYyBUU3ltYm9sIHsKIHB1YmxpYzoKLSAgICBUVmFyaWFi
bGUoY29uc3QgVFN0cmluZyAqbmFtZSwgY29uc3QgVFR5cGUmIHQsIGJvb2wgdVQgPSBmYWxzZSAp
IDogVFN5bWJvbChuYW1lKSwgdHlwZSh0KSwgdXNlclR5cGUodVQpLCB1bmlvbkFycmF5KDApLCBh
cnJheUluZm9ybWF0aW9uVHlwZSgwKSB7IH0KKyAgICBUVmFyaWFibGUoY29uc3QgVFN0cmluZyAq
bmFtZSwgY29uc3QgVFR5cGUmIHQsIGJvb2wgdVQgPSBmYWxzZSApIDogVFN5bWJvbChuYW1lKSwg
dHlwZSh0KSwgdXNlclR5cGUodVQpLCB1bmlvbkFycmF5KDApIHsgfQogICAgIHZpcnR1YWwgflRW
YXJpYWJsZSgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxlKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfSAgICAKICAgICBUVHlwZSYgZ2V0VHlwZSgpIHsgcmV0dXJuIHR5cGU7IH0gICAg
CiAgICAgY29uc3QgVFR5cGUmIGdldFR5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlOyB9CiAgICAg
Ym9vbCBpc1VzZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gdXNlclR5cGU7IH0KICAgICB2b2lkIHNl
dFF1YWxpZmllcihUUXVhbGlmaWVyIHF1YWxpZmllcikgeyB0eXBlLnNldFF1YWxpZmllcihxdWFs
aWZpZXIpOyB9Ci0gICAgdm9pZCB1cGRhdGVBcnJheUluZm9ybWF0aW9uVHlwZShUVHlwZSAqdCkg
eyBhcnJheUluZm9ybWF0aW9uVHlwZSA9IHQ7IH0KLSAgICBUVHlwZSogZ2V0QXJyYXlJbmZvcm1h
dGlvblR5cGUoKSB7IHJldHVybiBhcnJheUluZm9ybWF0aW9uVHlwZTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGR1bXAoVEluZm9TaW5rICZpbmZvU2luaykgY29uc3Q7CiAKQEAgLTEwMCwxNiArMTAy
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgZGVsZXRlW10gdW5pb25BcnJheTsKICAgICAgICAgdW5p
b25BcnJheSA9IGNvbnN0QXJyYXk7ICAKICAgICB9Ci0gICAgVFZhcmlhYmxlKGNvbnN0IFRWYXJp
YWJsZSYsIFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsgLy8gY29weSBjb25zdHJ1Y3RvcgotICAg
IHZpcnR1YWwgVFZhcmlhYmxlKiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcik7CiAKLXBy
b3RlY3RlZDoKK3ByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRWYXJpYWJs
ZSk7CisKICAgICBUVHlwZSB0eXBlOwogICAgIGJvb2wgdXNlclR5cGU7CiAgICAgLy8gd2UgYXJl
IGFzc3VtaW5nIHRoYXQgUG9vbCBBbGxvY2F0b3Igd2lsbCBmcmVlIHRoZSBtZW1vcnkgYWxsb2Nh
dGVkIHRvIHVuaW9uQXJyYXkKICAgICAvLyB3aGVuIHRoaXMgb2JqZWN0IGlzIGRlc3Ryb3llZAog
ICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXk7Ci0gICAgVFR5cGUgKmFycmF5SW5mb3JtYXRp
b25UeXBlOyAgLy8gdGhpcyBpcyB1c2VkIGZvciB1cGRhdGluZyBtYXhBcnJheVNpemUgaW4gYWxs
IHRoZSByZWZlcmVuY2VzIHRvIGEgZ2l2ZW4gc3ltYm9sCiB9OwogCiAvLwpAQCAtMTE5LDExICsx
MjAsNiBAQCBwcm90ZWN0ZWQ6CiBzdHJ1Y3QgVFBhcmFtZXRlciB7CiAgICAgVFN0cmluZyAqbmFt
ZTsKICAgICBUVHlwZSogdHlwZTsKLSAgICB2b2lkIGNvcHlQYXJhbShjb25zdCBUUGFyYW1ldGVy
JiBwYXJhbSwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpCi0gICAgewotICAgICAgICBuYW1lID0g
TmV3UG9vbFRTdHJpbmcocGFyYW0ubmFtZS0+Y19zdHIoKSk7Ci0gICAgICAgIHR5cGUgPSBwYXJh
bS50eXBlLT5jbG9uZShyZW1hcHBlcik7Ci0gICAgfQogfTsKIAogLy8KQEAgLTE2Myw5ICsxNTks
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxhdGVUb09wZXJhdG9yKFRPcGVyYXRvciBvKSB7IG9w
ID0gbzsgfQogICAgIFRPcGVyYXRvciBnZXRCdWlsdEluT3AoKSBjb25zdCB7IHJldHVybiBvcDsg
fQogCi0gICAgdm9pZCByZWxhdGVUb0V4dGVuc2lvbihjb25zdCBUU3RyaW5nJiBleHQpIHsgZXh0
ZW5zaW9uID0gZXh0OyB9Ci0gICAgY29uc3QgVFN0cmluZyYgZ2V0RXh0ZW5zaW9uKCkgY29uc3Qg
eyByZXR1cm4gZXh0ZW5zaW9uOyB9Ci0KICAgICB2b2lkIHNldERlZmluZWQoKSB7IGRlZmluZWQg
PSB0cnVlOyB9CiAgICAgYm9vbCBpc0RlZmluZWQoKSB7IHJldHVybiBkZWZpbmVkOyB9CiAKQEAg
LTE3MywxNiArMTY2LDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBUUGFyYW1ldGVyJiBnZXRQYXJh
bShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gcGFyYW1ldGVyc1tpXTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGR1bXAoVEluZm9TaW5rICZpbmZvU2luaykgY29uc3Q7Ci0gICAgVEZ1bmN0aW9uKGNv
bnN0IFRGdW5jdGlvbiYsIFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKLSAgICB2aXJ0dWFsIFRG
dW5jdGlvbiogY2xvbmUoVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpOwogCi1wcm90ZWN0ZWQ6Citw
cml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihURnVuY3Rpb24pOworCiAgICAg
dHlwZWRlZiBUVmVjdG9yPFRQYXJhbWV0ZXI+IFRQYXJhbUxpc3Q7CiAgICAgVFBhcmFtTGlzdCBw
YXJhbWV0ZXJzOwogICAgIFRUeXBlIHJldHVyblR5cGU7CiAgICAgVFN0cmluZyBtYW5nbGVkTmFt
ZTsKICAgICBUT3BlcmF0b3Igb3A7Ci0gICAgVFN0cmluZyBleHRlbnNpb247CiAgICAgYm9vbCBk
ZWZpbmVkOwogfTsKIApAQCAtMjMxLDcgKzIyMyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbGF0
ZVRvT3BlcmF0b3IoY29uc3QgY2hhciogbmFtZSwgVE9wZXJhdG9yIG9wKTsKICAgICB2b2lkIHJl
bGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFRTdHJpbmcmIGV4dCk7CiAg
ICAgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0OwotICAgIFRTeW1ib2xUYWJs
ZUxldmVsKiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcik7CiAKIHByb3RlY3RlZDoKICAg
ICB0TGV2ZWwgbGV2ZWw7CkBAIC0zMjEsNyArMzEyLDYgQEAgcHVibGljOgogICAgIH0KICAgICBp
bnQgZ2V0TWF4U3ltYm9sSWQoKSB7IHJldHVybiB1bmlxdWVJZDsgfQogICAgIHZvaWQgZHVtcChU
SW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUYWJsZShjb25zdCBUU3lt
Ym9sVGFibGUmIGNvcHlPZik7CiAKICAgICBib29sIHNldERlZmF1bHRQcmVjaXNpb24oIGNvbnN0
IFRQdWJsaWNUeXBlJiB0eXBlLCBUUHJlY2lzaW9uIHByZWMgKXsKICAgICAgICAgaWYgKElzU2Ft
cGxlcih0eXBlLnR5cGUpKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1R5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1R5cGVzLmgJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9UeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDMwICs3LDg1IEBA
CiAjaWZuZGVmIF9UWVBFU19JTkNMVURFRAogI2RlZmluZSBfVFlQRVNfSU5DTFVERUQKIAorI2lu
Y2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKICNpbmNsdWRlICJjb21waWxlci9CYXNlVHlw
ZXMuaCIKICNpbmNsdWRlICJjb21waWxlci9Db21tb24uaCIKICNpbmNsdWRlICJjb21waWxlci9k
ZWJ1Zy5oIgogCi1jbGFzcyBUVHlwZTsKIHN0cnVjdCBUUHVibGljVHlwZTsKK2NsYXNzIFRUeXBl
OwogCi0vLwotLy8gTmVlZCB0byBoYXZlIGFzc29jaWF0aW9uIG9mIGxpbmUgbnVtYmVycyB0byB0
eXBlcyBpbiBhIGxpc3QgZm9yIGJ1aWxkaW5nIHN0cnVjdHMuCi0vLwotc3RydWN0IFRUeXBlTGlu
ZSB7Ci0gICAgVFR5cGUqIHR5cGU7Ci0gICAgaW50IGxpbmU7CitjbGFzcyBURmllbGQKK3sKK3B1
YmxpYzoKKyAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3Ip
OworICAgIFRGaWVsZChUVHlwZSogdHlwZSwgVFN0cmluZyogbmFtZSkgOiBtVHlwZSh0eXBlKSwg
bU5hbWUobmFtZSkge30KKworICAgIC8vIFRPRE8oYWxva3ApOiBXZSBzaG91bGQgb25seSByZXR1
cm4gY29uc3QgdHlwZS4KKyAgICAvLyBGaXggaXQgYnkgdHdlYWtpbmcgZ3JhbW1hci4KKyAgICBU
VHlwZSogdHlwZSgpIHsgcmV0dXJuIG1UeXBlOyB9CisgICAgY29uc3QgVFR5cGUqIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtVHlwZTsgfQorCisgICAgY29uc3QgVFN0cmluZyYgbmFtZSgpIGNvbnN0
IHsgcmV0dXJuICptTmFtZTsgfQorCitwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTihURmllbGQpOworICAgIFRUeXBlKiBtVHlwZTsKKyAgICBUU3RyaW5nKiBtTmFtZTsKIH07
Ci10eXBlZGVmIFRWZWN0b3I8VFR5cGVMaW5lPiBUVHlwZUxpc3Q7CiAKLWlubGluZSBUVHlwZUxp
c3QqIE5ld1Bvb2xUVHlwZUxpc3QoKQordHlwZWRlZiBUVmVjdG9yPFRGaWVsZCo+IFRGaWVsZExp
c3Q7CitpbmxpbmUgVEZpZWxkTGlzdCogTmV3UG9vbFRGaWVsZExpc3QoKQogewotICAgIHZvaWQq
IG1lbW9yeSA9IEdsb2JhbFBvb2xBbGxvY2F0b3IuYWxsb2NhdGUoc2l6ZW9mKFRUeXBlTGlzdCkp
OwotICAgIHJldHVybiBuZXcobWVtb3J5KSBUVHlwZUxpc3Q7CisgICAgdm9pZCogbWVtb3J5ID0g
R2xvYmFsUG9vbEFsbG9jYXRvci5hbGxvY2F0ZShzaXplb2YoVEZpZWxkTGlzdCkpOworICAgIHJl
dHVybiBuZXcobWVtb3J5KSBURmllbGRMaXN0OwogfQogCi10eXBlZGVmIFRNYXA8VFR5cGVMaXN0
KiwgVFR5cGVMaXN0Kj4gVFN0cnVjdHVyZU1hcDsKLXR5cGVkZWYgVE1hcDxUVHlwZUxpc3QqLCBU
VHlwZUxpc3QqPjo6aXRlcmF0b3IgVFN0cnVjdHVyZU1hcEl0ZXJhdG9yOworY2xhc3MgVFN0cnVj
dHVyZQoreworcHVibGljOgorICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9v
bEFsbG9jYXRvcik7CisgICAgVFN0cnVjdHVyZShUU3RyaW5nKiBuYW1lLCBURmllbGRMaXN0KiBm
aWVsZHMpCisgICAgICAgIDogbU5hbWUobmFtZSksCisgICAgICAgICAgbUZpZWxkcyhmaWVsZHMp
LAorICAgICAgICAgIG1PYmplY3RTaXplKDApLAorICAgICAgICAgIG1EZWVwZXN0TmVzdGluZygw
KSB7CisgICAgfQorCisgICAgY29uc3QgVFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuICpt
TmFtZTsgfQorICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcygpIGNvbnN0IHsgcmV0dXJuICpt
RmllbGRzOyB9CisKKyAgICBjb25zdCBUU3RyaW5nJiBtYW5nbGVkTmFtZSgpIGNvbnN0IHsKKyAg
ICAgICAgaWYgKG1NYW5nbGVkTmFtZS5lbXB0eSgpKQorICAgICAgICAgICAgbU1hbmdsZWROYW1l
ID0gYnVpbGRNYW5nbGVkTmFtZSgpOworICAgICAgICByZXR1cm4gbU1hbmdsZWROYW1lOworICAg
IH0KKyAgICBzaXplX3Qgb2JqZWN0U2l6ZSgpIGNvbnN0IHsKKyAgICAgICAgaWYgKG1PYmplY3RT
aXplID09IDApCisgICAgICAgICAgICBtT2JqZWN0U2l6ZSA9IGNhbGN1bGF0ZU9iamVjdFNpemUo
KTsKKyAgICAgICAgcmV0dXJuIG1PYmplY3RTaXplOworICAgIH07CisgICAgaW50IGRlZXBlc3RO
ZXN0aW5nKCkgY29uc3QgeworICAgICAgICBpZiAobURlZXBlc3ROZXN0aW5nID09IDApCisgICAg
ICAgICAgICBtRGVlcGVzdE5lc3RpbmcgPSBjYWxjdWxhdGVEZWVwZXN0TmVzdGluZygpOworICAg
ICAgICByZXR1cm4gbURlZXBlc3ROZXN0aW5nOworICAgIH0KKyAgICBib29sIGNvbnRhaW5zQXJy
YXlzKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRT
dHJ1Y3R1cmUpOworICAgIFRTdHJpbmcgYnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0OworICAgIHNp
emVfdCBjYWxjdWxhdGVPYmplY3RTaXplKCkgY29uc3Q7CisgICAgaW50IGNhbGN1bGF0ZURlZXBl
c3ROZXN0aW5nKCkgY29uc3Q7CisKKyAgICBUU3RyaW5nKiBtTmFtZTsKKyAgICBURmllbGRMaXN0
KiBtRmllbGRzOworCisgICAgbXV0YWJsZSBUU3RyaW5nIG1NYW5nbGVkTmFtZTsKKyAgICBtdXRh
YmxlIHNpemVfdCBtT2JqZWN0U2l6ZTsKKyAgICBtdXRhYmxlIGludCBtRGVlcGVzdE5lc3Rpbmc7
Cit9OwogCiAvLwogLy8gQmFzZSBjbGFzcyBmb3IgdGhpbmdzIHRoYXQgaGF2ZSBhIHR5cGUuCkBA
IC00MSw2OSArOTYsMTMgQEAgcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUo
R2xvYmFsUG9vbEFsbG9jYXRvcikKICAgICBUVHlwZSgpIHt9CiAgICAgVFR5cGUoVEJhc2ljVHlw
ZSB0LCBUUHJlY2lzaW9uIHAsIFRRdWFsaWZpZXIgcSA9IEV2cVRlbXBvcmFyeSwgaW50IHMgPSAx
LCBib29sIG0gPSBmYWxzZSwgYm9vbCBhID0gZmFsc2UpIDoKLSAgICAgICAgICAgIHR5cGUodCks
IHByZWNpc2lvbihwKSwgcXVhbGlmaWVyKHEpLCBzaXplKHMpLCBtYXRyaXgobSksIGFycmF5KGEp
LCBhcnJheVNpemUoMCksCi0gICAgICAgICAgICBtYXhBcnJheVNpemUoMCksIGFycmF5SW5mb3Jt
YXRpb25UeXBlKDApLCBzdHJ1Y3R1cmUoMCksIHN0cnVjdHVyZVNpemUoMCksIGRlZXBlc3RTdHJ1
Y3ROZXN0aW5nKDApLCBmaWVsZE5hbWUoMCksIG1hbmdsZWQoMCksIHR5cGVOYW1lKDApCisgICAg
ICAgICAgICB0eXBlKHQpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihxKSwgc2l6ZShzKSwgbWF0
cml4KG0pLCBhcnJheShhKSwgYXJyYXlTaXplKDApLCBzdHJ1Y3R1cmUoMCkKICAgICB7CiAgICAg
fQogICAgIGV4cGxpY2l0IFRUeXBlKGNvbnN0IFRQdWJsaWNUeXBlICZwKTsKLSAgICBUVHlwZShU
VHlwZUxpc3QqIHVzZXJEZWYsIGNvbnN0IFRTdHJpbmcmIG4sIFRQcmVjaXNpb24gcCA9IEVicFVu
ZGVmaW5lZCkgOgotICAgICAgICAgICAgdHlwZShFYnRTdHJ1Y3QpLCBwcmVjaXNpb24ocCksIHF1
YWxpZmllcihFdnFUZW1wb3JhcnkpLCBzaXplKDEpLCBtYXRyaXgoZmFsc2UpLCBhcnJheShmYWxz
ZSksIGFycmF5U2l6ZSgwKSwKLSAgICAgICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZv
cm1hdGlvblR5cGUoMCksIHN0cnVjdHVyZSh1c2VyRGVmKSwgc3RydWN0dXJlU2l6ZSgwKSwgZGVl
cGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKQotICAgIHsKLSAg
ICAgICAgdHlwZU5hbWUgPSBOZXdQb29sVFN0cmluZyhuLmNfc3RyKCkpOwotICAgIH0KLQotICAg
IHZvaWQgY29weVR5cGUoY29uc3QgVFR5cGUmIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBw
ZXIpCi0gICAgewotICAgICAgICB0eXBlID0gY29weU9mLnR5cGU7Ci0gICAgICAgIHByZWNpc2lv
biA9IGNvcHlPZi5wcmVjaXNpb247Ci0gICAgICAgIHF1YWxpZmllciA9IGNvcHlPZi5xdWFsaWZp
ZXI7Ci0gICAgICAgIHNpemUgPSBjb3B5T2Yuc2l6ZTsKLSAgICAgICAgbWF0cml4ID0gY29weU9m
Lm1hdHJpeDsKLSAgICAgICAgYXJyYXkgPSBjb3B5T2YuYXJyYXk7Ci0gICAgICAgIGFycmF5U2l6
ZSA9IGNvcHlPZi5hcnJheVNpemU7Ci0KLSAgICAgICAgVFN0cnVjdHVyZU1hcEl0ZXJhdG9yIGl0
ZXI7Ci0gICAgICAgIGlmIChjb3B5T2Yuc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICBpZiAoKGl0
ZXIgPSByZW1hcHBlci5maW5kKHN0cnVjdHVyZSkpID09IHJlbWFwcGVyLmVuZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgLy8gY3JlYXRlIHRoZSBuZXcgc3RydWN0dXJlIGhlcmUKLSAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmUgPSBOZXdQb29sVFR5cGVMaXN0KCk7Ci0gICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3B5T2Yuc3RydWN0dXJlLT5zaXplKCk7ICsraSkg
ewotICAgICAgICAgICAgICAgICAgICBUVHlwZUxpbmUgdHlwZUxpbmU7Ci0gICAgICAgICAgICAg
ICAgICAgIHR5cGVMaW5lLmxpbmUgPSAoKmNvcHlPZi5zdHJ1Y3R1cmUpW2ldLmxpbmU7Ci0gICAg
ICAgICAgICAgICAgICAgIHR5cGVMaW5lLnR5cGUgPSAoKmNvcHlPZi5zdHJ1Y3R1cmUpW2ldLnR5
cGUtPmNsb25lKHJlbWFwcGVyKTsKLSAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5wdXNo
X2JhY2sodHlwZUxpbmUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgc3RydWN0dXJlID0gaXRlci0+c2Vjb25kOwotICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN0cnVjdHVyZSA9IDA7Ci0KLSAgICAgICAg
ZmllbGROYW1lID0gMDsKLSAgICAgICAgaWYgKGNvcHlPZi5maWVsZE5hbWUpCi0gICAgICAgICAg
ICBmaWVsZE5hbWUgPSBOZXdQb29sVFN0cmluZyhjb3B5T2YuZmllbGROYW1lLT5jX3N0cigpKTsK
LSAgICAgICAgdHlwZU5hbWUgPSAwOwotICAgICAgICBpZiAoY29weU9mLnR5cGVOYW1lKQotICAg
ICAgICAgICAgdHlwZU5hbWUgPSBOZXdQb29sVFN0cmluZyhjb3B5T2YudHlwZU5hbWUtPmNfc3Ry
KCkpOwotCi0gICAgICAgIG1hbmdsZWQgPSAwOwotICAgICAgICBpZiAoY29weU9mLm1hbmdsZWQp
Ci0gICAgICAgICAgICBtYW5nbGVkID0gTmV3UG9vbFRTdHJpbmcoY29weU9mLm1hbmdsZWQtPmNf
c3RyKCkpOwotCi0gICAgICAgIHN0cnVjdHVyZVNpemUgPSBjb3B5T2Yuc3RydWN0dXJlU2l6ZTsK
LSAgICAgICAgbWF4QXJyYXlTaXplID0gY29weU9mLm1heEFycmF5U2l6ZTsKLSAgICAgICAgZGVl
cGVzdFN0cnVjdE5lc3RpbmcgPSBjb3B5T2YuZGVlcGVzdFN0cnVjdE5lc3Rpbmc7Ci0gICAgICAg
IGFzc2VydChjb3B5T2YuYXJyYXlJbmZvcm1hdGlvblR5cGUgPT0gMCk7Ci0gICAgICAgIGFycmF5
SW5mb3JtYXRpb25UeXBlID0gMDsgLy8gYXJyYXlJbmZvcm1hdGlvblR5cGUgc2hvdWxkIG5vdCBi
ZSBzZXQgZm9yIGJ1aWx0SW4gc3ltYm9sIHRhYmxlIGxldmVsCi0gICAgfQotCi0gICAgVFR5cGUq
IGNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQorICAgIFRUeXBlKFRTdHJ1Y3R1cmUqIHVz
ZXJEZWYsIFRQcmVjaXNpb24gcCA9IEVicFVuZGVmaW5lZCkgOgorICAgICAgICAgICAgdHlwZShF
YnRTdHJ1Y3QpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihFdnFUZW1wb3JhcnkpLCBzaXplKDEp
LCBtYXRyaXgoZmFsc2UpLCBhcnJheShmYWxzZSksIGFycmF5U2l6ZSgwKSwgc3RydWN0dXJlKHVz
ZXJEZWYpCiAgICAgewotICAgICAgICBUVHlwZSAqbmV3VHlwZSA9IG5ldyBUVHlwZSgpOwotICAg
ICAgICBuZXdUeXBlLT5jb3B5VHlwZSgqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgICAgIHJldHVy
biBuZXdUeXBlOwogICAgIH0KIAogICAgIFRCYXNpY1R5cGUgZ2V0QmFzaWNUeXBlKCkgY29uc3Qg
eyByZXR1cm4gdHlwZTsgfQpAQCAtMTE5LDIyICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgaW50IGdl
dE5vbWluYWxTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZTsgfQogICAgIHZvaWQgc2V0Tm9taW5h
bFNpemUoaW50IHMpIHsgc2l6ZSA9IHM7IH0KICAgICAvLyBGdWxsIHNpemUgb2Ygc2luZ2xlIGlu
c3RhbmNlIG9mIHR5cGUKLSAgICBpbnQgZ2V0T2JqZWN0U2l6ZSgpIGNvbnN0Ci0gICAgewotICAg
ICAgICBpbnQgdG90YWxTaXplOwotCi0gICAgICAgIGlmIChnZXRCYXNpY1R5cGUoKSA9PSBFYnRT
dHJ1Y3QpCi0gICAgICAgICAgICB0b3RhbFNpemUgPSBnZXRTdHJ1Y3RTaXplKCk7Ci0gICAgICAg
IGVsc2UgaWYgKG1hdHJpeCkKLSAgICAgICAgICAgIHRvdGFsU2l6ZSA9IHNpemUgKiBzaXplOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB0b3RhbFNpemUgPSBzaXplOwotCi0gICAgICAgIGlm
IChpc0FycmF5KCkpCi0gICAgICAgICAgICB0b3RhbFNpemUgKj0gc3RkOjptYXgoZ2V0QXJyYXlT
aXplKCksIGdldE1heEFycmF5U2l6ZSgpKTsKLQotICAgICAgICByZXR1cm4gdG90YWxTaXplOwot
ICAgIH0KKyAgICBzaXplX3QgZ2V0T2JqZWN0U2l6ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc01h
dHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1hdHJpeCA/IHRydWUgOiBmYWxzZTsgfQogICAgIHZvaWQg
c2V0TWF0cml4KGJvb2wgbSkgeyBtYXRyaXggPSBtOyB9CkBAIC0xNDIsNDcgKzEyNiwyMCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0FycmF5KCkgY29uc3QgIHsgcmV0dXJuIGFycmF5ID8gdHJ1ZSA6
IGZhbHNlOyB9CiAgICAgaW50IGdldEFycmF5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGFycmF5U2l6
ZTsgfQogICAgIHZvaWQgc2V0QXJyYXlTaXplKGludCBzKSB7IGFycmF5ID0gdHJ1ZTsgYXJyYXlT
aXplID0gczsgfQotICAgIGludCBnZXRNYXhBcnJheVNpemUgKCkgY29uc3QgeyByZXR1cm4gbWF4
QXJyYXlTaXplOyB9Ci0gICAgdm9pZCBzZXRNYXhBcnJheVNpemUgKGludCBzKSB7IG1heEFycmF5
U2l6ZSA9IHM7IH0KLSAgICB2b2lkIGNsZWFyQXJyYXluZXNzKCkgeyBhcnJheSA9IGZhbHNlOyBh
cnJheVNpemUgPSAwOyBtYXhBcnJheVNpemUgPSAwOyB9Ci0gICAgdm9pZCBzZXRBcnJheUluZm9y
bWF0aW9uVHlwZShUVHlwZSogdCkgeyBhcnJheUluZm9ybWF0aW9uVHlwZSA9IHQ7IH0KLSAgICBU
VHlwZSogZ2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBhcnJheUluZm9y
bWF0aW9uVHlwZTsgfQorICAgIHZvaWQgY2xlYXJBcnJheW5lc3MoKSB7IGFycmF5ID0gZmFsc2U7
IGFycmF5U2l6ZSA9IDA7IH0KIAogICAgIGJvb2wgaXNWZWN0b3IoKSBjb25zdCB7IHJldHVybiBz
aXplID4gMSAmJiAhbWF0cml4OyB9CiAgICAgYm9vbCBpc1NjYWxhcigpIGNvbnN0IHsgcmV0dXJu
IHNpemUgPT0gMSAmJiAhbWF0cml4ICYmICFzdHJ1Y3R1cmU7IH0KIAotICAgIFRUeXBlTGlzdCog
Z2V0U3RydWN0KCkgY29uc3QgeyByZXR1cm4gc3RydWN0dXJlOyB9Ci0gICAgdm9pZCBzZXRTdHJ1
Y3QoVFR5cGVMaXN0KiBzKSB7IHN0cnVjdHVyZSA9IHM7IGNvbXB1dGVEZWVwZXN0U3RydWN0TmVz
dGluZygpOyB9Ci0KLSAgICBjb25zdCBUU3RyaW5nJiBnZXRUeXBlTmFtZSgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBhc3NlcnQodHlwZU5hbWUpOwotICAgICAgICByZXR1cm4gKnR5cGVOYW1lOwot
ICAgIH0KLSAgICB2b2lkIHNldFR5cGVOYW1lKGNvbnN0IFRTdHJpbmcmIG4pCi0gICAgewotICAg
ICAgICB0eXBlTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKG4uY19zdHIoKSk7Ci0gICAgfQotCi0gICAg
Ym9vbCBpc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmllbGROYW1lICE9IDA7IH0KLSAgICBjb25z
dCBUU3RyaW5nJiBnZXRGaWVsZE5hbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgYXNzZXJ0KGZp
ZWxkTmFtZSk7Ci0gICAgICAgIHJldHVybiAqZmllbGROYW1lOwotICAgIH0KLSAgICB2b2lkIHNl
dEZpZWxkTmFtZShjb25zdCBUU3RyaW5nJiBuKQotICAgIHsKLSAgICAgICAgZmllbGROYW1lID0g
TmV3UG9vbFRTdHJpbmcobi5jX3N0cigpKTsKLSAgICB9CisgICAgVFN0cnVjdHVyZSogZ2V0U3Ry
dWN0KCkgY29uc3QgeyByZXR1cm4gc3RydWN0dXJlOyB9CisgICAgdm9pZCBzZXRTdHJ1Y3QoVFN0
cnVjdHVyZSogcykgeyBzdHJ1Y3R1cmUgPSBzOyB9CiAKLSAgICBUU3RyaW5nJiBnZXRNYW5nbGVk
TmFtZSgpIHsKLSAgICAgICAgaWYgKCFtYW5nbGVkKSB7Ci0gICAgICAgICAgICBtYW5nbGVkID0g
TmV3UG9vbFRTdHJpbmcoIiIpOwotICAgICAgICAgICAgYnVpbGRNYW5nbGVkTmFtZSgqbWFuZ2xl
ZCk7Ci0gICAgICAgICAgICAqbWFuZ2xlZCArPSAnOycgOworICAgIGNvbnN0IFRTdHJpbmcmIGdl
dE1hbmdsZWROYW1lKCkgY29uc3QgeworICAgICAgICBpZiAobWFuZ2xlZC5lbXB0eSgpKSB7Cisg
ICAgICAgICAgICBtYW5nbGVkID0gYnVpbGRNYW5nbGVkTmFtZSgpOworICAgICAgICAgICAgbWFu
Z2xlZCArPSAnOyc7CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gKm1hbmdsZWQ7CisgICAg
ICAgIHJldHVybiBtYW5nbGVkOwogICAgIH0KIAogICAgIGJvb2wgc2FtZUVsZW1lbnRUeXBlKGNv
bnN0IFRUeXBlJiByaWdodCkgY29uc3QgewpAQCAtMjMwLDMyICsxODcsMzQgQEAgcHVibGljOgog
ICAgIC8vIEZvciB0eXBlICJuZXN0aW5nMiIsIHRoaXMgbWV0aG9kIHdvdWxkIHJldHVybiAyIC0t
IHRoZSBudW1iZXIKICAgICAvLyBvZiBzdHJ1Y3R1cmVzIHRocm91Z2ggd2hpY2ggaW5kaXJlY3Rp
b24gbXVzdCBvY2N1ciB0byByZWFjaCB0aGUKICAgICAvLyBkZWVwZXN0IGZpZWxkIChuZXN0aW5n
Mi5maWVsZDEucG9zaXRpb24pLgotICAgIGludCBnZXREZWVwZXN0U3RydWN0TmVzdGluZygpIGNv
bnN0IHsgcmV0dXJuIGRlZXBlc3RTdHJ1Y3ROZXN0aW5nOyB9CisgICAgaW50IGdldERlZXBlc3RT
dHJ1Y3ROZXN0aW5nKCkgY29uc3QgeworICAgICAgICByZXR1cm4gc3RydWN0dXJlID8gc3RydWN0
dXJlLT5kZWVwZXN0TmVzdGluZygpIDogMDsKKyAgICB9CiAKLSAgICBib29sIGlzU3RydWN0dXJl
Q29udGFpbmluZ0FycmF5cygpIGNvbnN0OworICAgIGJvb2wgaXNTdHJ1Y3R1cmVDb250YWluaW5n
QXJyYXlzKCkgY29uc3QgeworICAgICAgICByZXR1cm4gc3RydWN0dXJlID8gc3RydWN0dXJlLT5j
b250YWluc0FycmF5cygpIDogZmFsc2U7CisgICAgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBi
dWlsZE1hbmdsZWROYW1lKFRTdHJpbmcmKTsKLSAgICBpbnQgZ2V0U3RydWN0U2l6ZSgpIGNvbnN0
OwotICAgIHZvaWQgY29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCk7Citwcml2YXRlOgorICAg
IFRTdHJpbmcgYnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0OwogCisjaWZkZWYgX19HTlVDX18KKyAg
ICBUQmFzaWNUeXBlIHR5cGU7CisgICAgVFByZWNpc2lvbiBwcmVjaXNpb247CisgICAgVFF1YWxp
ZmllciBxdWFsaWZpZXI7CisjZWxzZQogICAgIFRCYXNpY1R5cGUgdHlwZSAgICAgIDogNjsKICAg
ICBUUHJlY2lzaW9uIHByZWNpc2lvbjsKICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA6IDc7Cisj
ZW5kaWYKICAgICBpbnQgc2l6ZSAgICAgICAgICAgICA6IDg7IC8vIHNpemUgb2YgdmVjdG9yIG9y
IG1hdHJpeCwgbm90IHNpemUgb2YgYXJyYXkKICAgICB1bnNpZ25lZCBpbnQgbWF0cml4ICA6IDE7
CiAgICAgdW5zaWduZWQgaW50IGFycmF5ICAgOiAxOwogICAgIGludCBhcnJheVNpemU7Ci0gICAg
aW50IG1heEFycmF5U2l6ZTsKLSAgICBUVHlwZSogYXJyYXlJbmZvcm1hdGlvblR5cGU7CiAKLSAg
ICBUVHlwZUxpc3QqIHN0cnVjdHVyZTsgICAgICAvLyAwIHVubGVzcyB0aGlzIGlzIGEgc3RydWN0
Ci0gICAgbXV0YWJsZSBpbnQgc3RydWN0dXJlU2l6ZTsKLSAgICBpbnQgZGVlcGVzdFN0cnVjdE5l
c3Rpbmc7Ci0KLSAgICBUU3RyaW5nICpmaWVsZE5hbWU7ICAgICAgICAgLy8gZm9yIHN0cnVjdHVy
ZSBmaWVsZCBuYW1lcwotICAgIFRTdHJpbmcgKm1hbmdsZWQ7Ci0gICAgVFN0cmluZyAqdHlwZU5h
bWU7ICAgICAgICAgIC8vIGZvciBzdHJ1Y3R1cmUgZmllbGQgdHlwZSBuYW1lCisgICAgVFN0cnVj
dHVyZSogc3RydWN0dXJlOyAgICAgIC8vIDAgdW5sZXNzIHRoaXMgaXMgYSBzdHJ1Y3QKKworICAg
IG11dGFibGUgVFN0cmluZyBtYW5nbGVkOwogfTsKIAogLy8KQEAgLTI3Nyw5ICsyMzYsOSBAQCBz
dHJ1Y3QgVFB1YmxpY1R5cGUKICAgICBib29sIGFycmF5OwogICAgIGludCBhcnJheVNpemU7CiAg
ICAgVFR5cGUqIHVzZXJEZWY7Ci0gICAgaW50IGxpbmU7CisgICAgVFNvdXJjZUxvYyBsaW5lOwog
Ci0gICAgdm9pZCBzZXRCYXNpYyhUQmFzaWNUeXBlIGJ0LCBUUXVhbGlmaWVyIHEsIGludCBsbiA9
IDApCisgICAgdm9pZCBzZXRCYXNpYyhUQmFzaWNUeXBlIGJ0LCBUUXVhbGlmaWVyIHEsIGNvbnN0
IFRTb3VyY2VMb2MmIGxuKQogICAgIHsKICAgICAgICAgdHlwZSA9IGJ0OwogICAgICAgICBxdWFs
aWZpZXIgPSBxOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Zh
cmlhYmxlSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzEsMTIgKzEzMSwxMyBAQCB2b2lkIGdldFVzZXJEZWZpbmVkVmFyaWFibGVJbmZv
KGNvbnN0IFRUCiB7CiAgICAgQVNTRVJUKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0
KTsKIAotICAgIGNvbnN0IFRUeXBlTGlzdCogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOwotICAg
ICAgICBnZXRWYXJpYWJsZUluZm8oKmZpZWxkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5hbWUgKyAiLiIgKyBmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbWFwcGVkTmFtZSArICIuIiArIFRJbnRlcm1UcmF2ZXJzZXI6Omhhc2goZmllbGRU
eXBlLT5nZXRGaWVsZE5hbWUoKSwgaGFzaEZ1bmN0aW9uKSwKKyAgICBjb25zdCBURmllbGRMaXN0
JiBmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBUVHlwZSYgZmll
bGRUeXBlID0gKihmaWVsZHNbaV0tPnR5cGUoKSk7CisgICAgICAgIGNvbnN0IFRTdHJpbmcmIGZp
ZWxkTmFtZSA9IGZpZWxkc1tpXS0+bmFtZSgpOworICAgICAgICBnZXRWYXJpYWJsZUluZm8oZmll
bGRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArICIuIiArIGZpZWxkTmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgKyAiLiIgKyBUSW50ZXJtVHJhdmVy
c2VyOjpoYXNoKGZpZWxkTmFtZSwgaGFzaEZ1bmN0aW9uKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZm9MaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgaGFzaEZ1bmN0aW9uKTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9z
eW1ib2xfdGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjg5IEBACisvLyBDb3B5cmlnaHQgKGMpIDIwMDIt
MjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor
Ly8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZV9idWlsdGluX3N5bWJvbF90YWJs
ZS5weS4KKy8vICAgICAgICAgICAgICAgICAqIERPIE5PVCBIQU5EIE1PRElGWSAqCisvLyAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CisjaW5jbHVkZSAiY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaCIKKyNpbmNsdWRlICJj
b21waWxlci9TeW1ib2xUYWJsZS5oIgorCitzdGF0aWMgdm9pZCBidWlsdGluMShUU3ltYm9sVGFi
bGUqIHQsIFRUeXBlKiBydmFsdWUsIGNvbnN0IGNoYXIqIG5hbWUsIFRUeXBlKiBwdHlwZTEsIGNv
bnN0IGNoYXIqIHBuYW1lMSkKK3sKKyAgVEZ1bmN0aW9uKiBmID0gbmV3IFRGdW5jdGlvbihuZXcg
VFN0cmluZyhuYW1lKSwgKnJ2YWx1ZSk7CisgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7bmV3IFRTdHJp
bmcocG5hbWUxKSwgcHR5cGUxfTsKKyAgZi0+YWRkUGFyYW1ldGVyKHBhcmFtKTsKKyAgdC0+aW5z
ZXJ0KCpmKTsKK30KKworc3RhdGljIHZvaWQgYnVpbHRpbjIoVFN5bWJvbFRhYmxlKiB0LCBUVHlw
ZSogcnZhbHVlLCBjb25zdCBjaGFyKiBuYW1lLCBUVHlwZSogcHR5cGUxLCBjb25zdCBjaGFyKiBw
bmFtZTEsIFRUeXBlKiBwdHlwZTIsIGNvbnN0IGNoYXIqIHBuYW1lMikKK3sKKyAgVEZ1bmN0aW9u
KiBmID0gbmV3IFRGdW5jdGlvbihuZXcgVFN0cmluZyhuYW1lKSwgKnJ2YWx1ZSk7CisgIFRQYXJh
bWV0ZXIgcGFyYW0xID0ge25ldyBUU3RyaW5nKHBuYW1lMSksIHB0eXBlMX07CisgIGYtPmFkZFBh
cmFtZXRlcihwYXJhbTEpOworICBUUGFyYW1ldGVyIHBhcmFtMiA9IHtuZXcgVFN0cmluZyhwbmFt
ZTIpLCBwdHlwZTJ9OworICBmLT5hZGRQYXJhbWV0ZXIocGFyYW0yKTsKKyAgdC0+aW5zZXJ0KCpm
KTsKK30KKworc3RhdGljIHZvaWQgYnVpbHRpbjMoVFN5bWJvbFRhYmxlKiB0LCBUVHlwZSogcnZh
bHVlLCBjb25zdCBjaGFyKiBuYW1lLCBUVHlwZSogcHR5cGUxLCBjb25zdCBjaGFyKiBwbmFtZTEs
IFRUeXBlKiBwdHlwZTIsIGNvbnN0IGNoYXIqIHBuYW1lMiwgVFR5cGUqIHB0eXBlMywgY29uc3Qg
Y2hhciogcG5hbWUzKQoreworICBURnVuY3Rpb24qIGYgPSBuZXcgVEZ1bmN0aW9uKG5ldyBUU3Ry
aW5nKG5hbWUpLCAqcnZhbHVlKTsKKyAgVFBhcmFtZXRlciBwYXJhbTEgPSB7bmV3IFRTdHJpbmco
cG5hbWUxKSwgcHR5cGUxfTsKKyAgZi0+YWRkUGFyYW1ldGVyKHBhcmFtMSk7CisgIFRQYXJhbWV0
ZXIgcGFyYW0yID0ge25ldyBUU3RyaW5nKHBuYW1lMiksIHB0eXBlMn07CisgIGYtPmFkZFBhcmFt
ZXRlcihwYXJhbTIpOworICBUUGFyYW1ldGVyIHBhcmFtMyA9IHtuZXcgVFN0cmluZyhwbmFtZTMp
LCBwdHlwZTN9OworICBmLT5hZGRQYXJhbWV0ZXIocGFyYW0zKTsKKyAgdC0+aW5zZXJ0KCpmKTsK
K30KKwordm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zQ29tbW9uKGNvbnN0IFNoQnVpbHRJblJl
c291cmNlcyYgcmVzb3VyY2VzLCBUU3ltYm9sVGFibGUqIHQpIHsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAicmFkaWFucyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJkZWdyZWVzIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
InJhZGlhbnMiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJyYWRp
YW5zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgImRlZ3JlZXMiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicmFkaWFucyIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJkZWdyZWVzIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAicmFkaWFucyIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJkZWdyZWVzIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInJh
ZGlhbnMiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5z
Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicmFkaWFucyIpOwor
ICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJzaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAic2luIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
InNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJzaW4iLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiY29zIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNvcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0
aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAiY29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInRhbiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ0YW4iLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAidGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVp
bHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgInRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJhc2luIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYXNpbiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImFzaW4iLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJhc2luIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAiYWNvcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImFjb3MiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJhY29zIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAiYWNvcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgImF0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgImF0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
ImF0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImF0
YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImF0YW4i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAieV9vdmVyX3giKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJ5X292ZXJfeCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJhdGFuIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInlfb3Zl
cl94Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImF0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieV9vdmVyX3giKTsK
KyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicG93IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJwb3ciLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVp
bHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgInBvdyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAicG93IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4xKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJleHAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJleHAiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJleHAiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAg
IGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJleHAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJsb2ciLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJsb2ciLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsb2ciLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1
aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJsb2ciLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJleHAyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXhwMiIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImV4cDIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1
aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJleHAyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAibG9nMiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImxvZzIiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsb2cyIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBi
dWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAibG9nMiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgInNxcnQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJzcXJ0IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAic3FydCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgInNxcnQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJpbnZlcnNlc3FydCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImlu
dmVyc2VzcXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiaW52ZXJzZXNx
cnQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJpbnZlcnNlc3FydCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFicyIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgImFicyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgImFicyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImFicyIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNpZ24iLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1
aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIs
IGZhbHNlLCBmYWxzZSksICJzaWduIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAic2lnbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInNpZ24iLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJmbG9vciIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgImZsb29yIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAiZmxvb3IiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJmbG9vciIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImNlaWwiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOwor
ICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJjZWlsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAiY2VpbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImNlaWwi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJmcmFjdCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAiZnJhY3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJm
cmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1vZCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInki
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOwor
ICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAg
YnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgIm1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWls
dGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAibWluIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4y
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJtaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIm1pbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAibWluIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJt
aW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm1pbiIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibWluIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBm
YWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtYXgiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
eCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNl
LCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5
Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsK
KyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAg
IGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVp
bHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWluVmFsIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
Im1heFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgIm1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY2xh
bXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFsIik7CisgICAgYnVp
bHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWluVmFsIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
Im1heFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgIm1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY2xh
bXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFsIik7CisgICAgYnVp
bHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibWluVmFsIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
Im1heFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtaXgiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgImEiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWl4IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYSIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJt
aXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImEiKTsKKyAgICBidWlsdGluMyh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAibWl4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhIik7CisgICAgYnVpbHRp
bjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYSIpOworICAg
IGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJtaXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImEi
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic3RlcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJlZGdlIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic3RlcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJlZGdlIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAic3RlcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJlZGdlIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAic3RlcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJlZGdlIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic3RlcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJlZGdlIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAic3RlcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJlZGdlIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAic3RlcCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJlZGdlIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic21vb3Roc3RlcCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJlZGdlMCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInNtb290aHN0
ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0
aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImVkZ2UxIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAic21vb3Roc3RlcCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJl
ZGdlMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
InNtb290aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOwor
ICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAic21vb3Roc3RlcCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJlZGdlMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImxlbmd0aCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxl
bmd0aCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxlbmd0aCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSks
ICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxlbmd0aCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgImRpc3RhbmNlIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInAwIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInAxIik7Cisg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgImRpc3RhbmNlIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInAwIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInAxIik7
CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImRpc3RhbmNlIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInAwIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInAx
Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImRpc3RhbmNlIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInAwIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
InAxIik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImRvdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInki
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZG90IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOwor
ICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJkb3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAg
YnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgImRvdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWls
dGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAiY3Jvc3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIm5vcm1hbGl6ZSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgIm5vcm1hbGl6ZSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIm5vcm1h
bGl6ZSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm5vcm1hbGl6ZSIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImZhY2Vmb3J3YXJkIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIk4i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAiSSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJOcmVmIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImZhY2Vm
b3J3YXJkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgIk4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiSSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJOcmVmIik7CisgICAgYnVpbHRp
bjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgImZhY2Vmb3J3YXJkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIk4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiSSIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJO
cmVmIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImZhY2Vmb3J3YXJkIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIk4iLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAiSSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJOcmVmIik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInJlZmxlY3Qi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAiSSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJOIik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInJlZmxlY3Qi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAiSSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJOIik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJlZmxlY3Qi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAiSSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDMsIGZhbHNlLCBmYWxzZSksICJOIik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInJlZmxlY3Qi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAiSSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJOIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInJlZnJhY3Qi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAiSSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJOIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV0YSIpOworICAgIGJ1aWx0aW4zKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJyZWZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJldGEiKTsKKyAgICBi
dWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAicmVmcmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIk4iLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
ZXRhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInJlZnJhY3QiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiSSIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJOIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgImV0YSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIHRydWUsIGZhbHNlKSwgIm1hdHJpeENvbXBNdWx0
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgdHJ1ZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIHRydWUsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCB0cnVlLCBmYWxzZSksICJtYXRyaXhDb21w
TXVsdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIHRy
dWUsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCB0cnVlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgdHJ1ZSwgZmFsc2UpLCAibWF0cml4
Q29tcE11bHQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCB0cnVlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgdHJ1ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImxl
c3NUaGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImxl
c3NUaGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxl
c3NUaGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImxl
c3NUaGFuIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibGVzc1Ro
YW4iLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbiIs
IG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBm
YWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuRXF1YWwi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW5F
cXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJsZXNz
VGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
Imxlc3NUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSks
ICJsZXNzVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAibGVzc1RoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgImdyZWF0ZXJUaGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQs
IG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgImdyZWF0ZXJUaGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4y
KHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgImdyZWF0ZXJUaGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW4iLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJncmVhdGVyVGhhbiIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4y
KHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAg
YnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInki
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcg
VFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
IngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbkVxdWFsIiwg
bmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW5FcXVh
bCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImVxdWFsIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImVxdWFsIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
IngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVxdWFsIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImVxdWFsIiwgbmV3IFRUeXBlKEVi
dEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3
IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsK
KyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJlcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgImVxdWFsIiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGlu
Mih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJlcXVhbCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwg
bmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
Im5vdEVxdWFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
Im5vdEVxdWFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
Im5vdEVxdWFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
Im5vdEVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIs
IGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibm90
RXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJub3RFcXVh
bCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwg
bmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5l
dyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgIngiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFueSIsIG5ldyBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJhbnkiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwg
bmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAiYW55IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFsbCIsIG5ldyBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
IngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhbGwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRp
bjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAiYWxsIiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm5vdCIs
IG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJub3QiLCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAibm90IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ0ZXh0dXJlMkQiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJELCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAgICBi
dWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJEUHJvaiIsIG5ldyBUVHlwZShFYnRTYW1wbGVyMkQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJjb29yZCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRQcm9qIiwgbmV3
IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBm
YWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
InRleHR1cmVDdWJlIiwgbmV3IFRUeXBlKEVidFNhbXBsZXJDdWJlLCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAg
ICBpZiAocmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwpIHsKKyAgICAgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgInRleHR1cmUyRCIsIG5ldyBUVHlwZShFYnRTYW1wbGVyRXh0ZXJuYWxPRVMs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJjb29yZCIpOworICAgIH0KKyAgICBpZiAocmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0
ZXJuYWwpIHsKKyAgICAgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFByb2oiLCBuZXcg
VFR5cGUoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAgICB9CisgICAgaWYg
KHJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsKSB7CisgICAgICAgIGJ1aWx0aW4yKHQs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ0ZXh0dXJlMkRQcm9qIiwgbmV3IFRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUywg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgImNvb3JkIik7CisgICAgfQorICAgIGlmIChyZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFu
Z2xlKSB7CisgICAgICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRSZWN0IiwgbmV3IFRU
eXBlKEVidFNhbXBsZXIyRFJlY3QsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIH0KKyAgICBpZiAocmVzb3Vy
Y2VzLkFSQl90ZXh0dXJlX3JlY3RhbmdsZSkgeworICAgICAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAi
dGV4dHVyZTJEUmVjdFByb2oiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJEUmVjdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNvb3Jk
Iik7CisgICAgfQorICAgIGlmIChyZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFuZ2xlKSB7Cisg
ICAgICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRSZWN0UHJvaiIsIG5ldyBUVHlwZShF
YnRTYW1wbGVyMkRSZWN0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zZXJ0QnVp
bHRJbkZ1bmN0aW9uc1ZlcnRleChjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcywg
VFN5bWJvbFRhYmxlKiB0KSB7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRExvZCIs
IG5ldyBUVHlwZShFYnRTYW1wbGVyMkQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJjb29yZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJsb2QiKTsKKyAgICBi
dWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJEUHJvakxvZCIsIG5ldyBUVHlwZShFYnRTYW1wbGVy
MkQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJjb29yZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJsb2QiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4
dHVyZTJEUHJvakxvZCIsIG5ldyBUVHlwZShFYnRTYW1wbGVyMkQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJjb29yZCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJsb2QiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZUN1YmVMb2QiLCBuZXcgVFR5
cGUoRWJ0U2FtcGxlckN1YmUsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJjb29yZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJsb2QiKTsKK30KKwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9sX3RhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1
aWx0aW5fc3ltYm9sX3RhYmxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworI2lmbmRlZiBfQlVJTFRJTl9TWU1C
T0xfVEFCTEVfSU5DTFVERURfCisjZGVmaW5lIF9CVUlMVElOX1NZTUJPTF9UQUJMRV9JTkNMVURF
RF8KKworI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorCitjbGFzcyBUU3ltYm9sVGFi
bGU7CisKK2V4dGVybiB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnNDb21tb24oY29uc3QgU2hC
dWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsIFRTeW1ib2xUYWJsZSogdCk7CitleHRlcm4gdm9p
ZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYg
cmVzb3VyY2VzLCBUU3ltYm9sVGFibGUqIHQpOworCisjZW5kaWYgLy8gX0JVSUxUSU5fU1lNQk9M
X1RBQkxFX0lOQ0xVREVEXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2dsc2xhbmcubAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvZ2xzbGFuZy5sCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0
NywxMCBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMgTEVYRVIgKGdsc2xhCiAjcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZSA6IDQxMDIpCiAjZW5kaWYKIAotI2RlZmluZSBZWV9VU0VSX0FDVElP
TiB5eWx2YWwtPmxleC5saW5lID0geXlsaW5lbm87CisjZGVmaW5lIFlZX1VTRVJfQUNUSU9OICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHl5bGxvYy0+Zmlyc3RfZmlsZSA9
IHl5bGxvYy0+bGFzdF9maWxlID0geXljb2x1bW47IFwKKyAgICB5eWxsb2MtPmZpcnN0X2xpbmUg
PSB5eWxsb2MtPmxhc3RfbGluZSA9IHl5bGluZW5vOworCiAjZGVmaW5lIFlZX0lOUFVUKGJ1Ziwg
cmVzdWx0LCBtYXhfc2l6ZSkgXAogICAgIHJlc3VsdCA9IHN0cmluZ19pbnB1dChidWYsIG1heF9z
aXplLCB5eXNjYW5uZXIpOwogCkBAIC01NywxMCArNjAsOCBAQCBzdGF0aWMgaW50IHJlc2VydmVk
X3dvcmQoeXlzY2FuX3QgeXlzY2FuCiAlfQogCiAlb3B0aW9uIG5veXl3cmFwIG5vdW5wdXQgbmV2
ZXItaW50ZXJhY3RpdmUKLSVvcHRpb24geXlsaW5lbm8gcmVlbnRyYW50IGJpc29uLWJyaWRnZQot
JW9wdGlvbiBzdGFjaworJW9wdGlvbiB5eWxpbmVubyByZWVudHJhbnQgYmlzb24tYnJpZGdlIGJp
c29uLWxvY2F0aW9ucwogJW9wdGlvbiBleHRyYS10eXBlPSJUUGFyc2VDb250ZXh0KiIKLSV4IENP
TU1FTlQgRklFTERTCiAKIEQgICAgICAgICAgIFswLTldCiBMICAgICAgICAgICBbYS16QS1aX10K
QEAgLTcwLDczICs3MSw2MCBAQCBPICAgICAgICAgICBbMC03XQogCiAlJQogCi0lewotICAgIFRQ
YXJzZUNvbnRleHQqIGNvbnRleHQgPSB5eWV4dHJhOwotJX0KLQotICAgIC8qIFNpbmdsZS1saW5l
IGNvbW1lbnRzICovCi0iLy8iW15cbl0qIDsKKyJpbnZhcmlhbnQiICAgIHsgcmV0dXJuIElOVkFS
SUFOVDsgfQorImhpZ2hwIiAgICAgICAgeyByZXR1cm4gSElHSF9QUkVDSVNJT047IH0KKyJtZWRp
dW1wIiAgICAgIHsgcmV0dXJuIE1FRElVTV9QUkVDSVNJT047IH0KKyJsb3dwIiAgICAgICAgIHsg
cmV0dXJuIExPV19QUkVDSVNJT047IH0KKyJwcmVjaXNpb24iICAgIHsgcmV0dXJuIFBSRUNJU0lP
TjsgfQorCisiYXR0cmlidXRlIiAgICB7IHJldHVybiBBVFRSSUJVVEU7IH0KKyJjb25zdCIgICAg
ICAgIHsgcmV0dXJuIENPTlNUX1FVQUw7IH0KKyJ1bmlmb3JtIiAgICAgIHsgcmV0dXJuIFVOSUZP
Uk07IH0KKyJ2YXJ5aW5nIiAgICAgIHsgcmV0dXJuIFZBUllJTkc7IH0KKworImJyZWFrIiAgICAg
ICAgeyByZXR1cm4gQlJFQUs7IH0KKyJjb250aW51ZSIgICAgIHsgcmV0dXJuIENPTlRJTlVFOyB9
CisiZG8iICAgICAgICAgICB7IHJldHVybiBETzsgfQorImZvciIgICAgICAgICAgeyByZXR1cm4g
Rk9SOyB9Cisid2hpbGUiICAgICAgICB7IHJldHVybiBXSElMRTsgfQorCisiaWYiICAgICAgICAg
ICB7IHJldHVybiBJRjsgfQorImVsc2UiICAgICAgICAgeyByZXR1cm4gRUxTRTsgfQorCisiaW4i
ICAgICAgICAgICB7IHJldHVybiBJTl9RVUFMOyB9Cisib3V0IiAgICAgICAgICB7IHJldHVybiBP
VVRfUVVBTDsgfQorImlub3V0IiAgICAgICAgeyByZXR1cm4gSU5PVVRfUVVBTDsgfQorCisiZmxv
YXQiICAgICAgICB7IHJldHVybiBGTE9BVF9UWVBFOyB9CisiaW50IiAgICAgICAgICB7IHJldHVy
biBJTlRfVFlQRTsgfQorInZvaWQiICAgICAgICAgeyByZXR1cm4gVk9JRF9UWVBFOyB9CisiYm9v
bCIgICAgICAgICB7IHJldHVybiBCT09MX1RZUEU7IH0KKyJ0cnVlIiAgICAgICAgIHsgeXlsdmFs
LT5sZXguYiA9IHRydWU7ICByZXR1cm4gQk9PTENPTlNUQU5UOyB9CisiZmFsc2UiICAgICAgICB7
IHl5bHZhbC0+bGV4LmIgPSBmYWxzZTsgcmV0dXJuIEJPT0xDT05TVEFOVDsgfQorCisiZGlzY2Fy
ZCIgICAgICB7IHJldHVybiBESVNDQVJEOyB9CisicmV0dXJuIiAgICAgICB7IHJldHVybiBSRVRV
Uk47IH0KKworIm1hdDIiICAgICAgICAgeyByZXR1cm4gTUFUUklYMjsgfQorIm1hdDMiICAgICAg
ICAgeyByZXR1cm4gTUFUUklYMzsgfQorIm1hdDQiICAgICAgICAgeyByZXR1cm4gTUFUUklYNDsg
fQorCisidmVjMiIgICAgICAgICB7IHJldHVybiBWRUMyOyB9CisidmVjMyIgICAgICAgICB7IHJl
dHVybiBWRUMzOyB9CisidmVjNCIgICAgICAgICB7IHJldHVybiBWRUM0OyB9CisiaXZlYzIiICAg
ICAgICB7IHJldHVybiBJVkVDMjsgfQorIml2ZWMzIiAgICAgICAgeyByZXR1cm4gSVZFQzM7IH0K
KyJpdmVjNCIgICAgICAgIHsgcmV0dXJuIElWRUM0OyB9CisiYnZlYzIiICAgICAgICB7IHJldHVy
biBCVkVDMjsgfQorImJ2ZWMzIiAgICAgICAgeyByZXR1cm4gQlZFQzM7IH0KKyJidmVjNCIgICAg
ICAgIHsgcmV0dXJuIEJWRUM0OyB9CisKKyJzYW1wbGVyMkQiICAgICAgICAgIHsgcmV0dXJuIFNB
TVBMRVIyRDsgfQorInNhbXBsZXJDdWJlIiAgICAgICAgeyByZXR1cm4gU0FNUExFUkNVQkU7IH0K
KyJzYW1wbGVyRXh0ZXJuYWxPRVMiIHsgcmV0dXJuIFNBTVBMRVJfRVhURVJOQUxfT0VTOyB9Cisi
c2FtcGxlcjJEUmVjdCIgICAgICB7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9CiAKLSAgICAvKiBN
dWx0aS1saW5lIGNvbW1lbnRzICovCi0iLyoiICAgICAgICAgICB7IHl5X3B1c2hfc3RhdGUoQ09N
TUVOVCwgeXlzY2FubmVyKTsgfQotPENPTU1FTlQ+LiB8Ci08Q09NTUVOVD5cbiA7Ci08Q09NTUVO
VD4iKi8iICB7IHl5X3BvcF9zdGF0ZSh5eXNjYW5uZXIpOyB9Ci0KLSJpbnZhcmlhbnQiICAgIHsg
cmV0dXJuKElOVkFSSUFOVCk7IH0KLSJoaWdocCIgICAgICAgIHsgcmV0dXJuKEhJR0hfUFJFQ0lT
SU9OKTsgfQotIm1lZGl1bXAiICAgICAgeyByZXR1cm4oTUVESVVNX1BSRUNJU0lPTik7IH0KLSJs
b3dwIiAgICAgICAgIHsgcmV0dXJuKExPV19QUkVDSVNJT04pOyB9Ci0icHJlY2lzaW9uIiAgICB7
IHJldHVybihQUkVDSVNJT04pOyB9Ci0KLSJhdHRyaWJ1dGUiICAgIHsgcmV0dXJuKEFUVFJJQlVU
RSk7IH0KLSJjb25zdCIgICAgICAgIHsgcmV0dXJuKENPTlNUX1FVQUwpOyB9Ci0idW5pZm9ybSIg
ICAgICB7IHJldHVybihVTklGT1JNKTsgfQotInZhcnlpbmciICAgICAgeyByZXR1cm4oVkFSWUlO
Ryk7IH0KLQotImJyZWFrIiAgICAgICAgeyByZXR1cm4oQlJFQUspOyB9Ci0iY29udGludWUiICAg
ICB7IHJldHVybihDT05USU5VRSk7IH0KLSJkbyIgICAgICAgICAgIHsgcmV0dXJuKERPKTsgfQot
ImZvciIgICAgICAgICAgeyByZXR1cm4oRk9SKTsgfQotIndoaWxlIiAgICAgICAgeyByZXR1cm4o
V0hJTEUpOyB9Ci0KLSJpZiIgICAgICAgICAgIHsgcmV0dXJuKElGKTsgfQotImVsc2UiICAgICAg
ICAgeyByZXR1cm4oRUxTRSk7IH0KLQotImluIiAgICAgICAgICAgeyByZXR1cm4oSU5fUVVBTCk7
IH0KLSJvdXQiICAgICAgICAgIHsgcmV0dXJuKE9VVF9RVUFMKTsgfQotImlub3V0IiAgICAgICAg
eyByZXR1cm4oSU5PVVRfUVVBTCk7IH0KLQotImZsb2F0IiAgICAgICAgeyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oRkxPQVRfVFlQRSk7IH0KLSJpbnQiICAgICAgICAgIHsg
Y29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKElOVF9UWVBFKTsgfQotInZvaWQi
ICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oVk9JRF9UWVBF
KTsgfQotImJvb2wiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1
cm4oQk9PTF9UWVBFKTsgfQotInRydWUiICAgICAgICAgeyB5eWx2YWwtPmxleC5iID0gdHJ1ZTsg
IHJldHVybihCT09MQ09OU1RBTlQpOyB9Ci0iZmFsc2UiICAgICAgICB7IHl5bHZhbC0+bGV4LmIg
PSBmYWxzZTsgcmV0dXJuKEJPT0xDT05TVEFOVCk7IH0KLQotImRpc2NhcmQiICAgICAgeyByZXR1
cm4oRElTQ0FSRCk7IH0KLSJyZXR1cm4iICAgICAgIHsgcmV0dXJuKFJFVFVSTik7IH0KLQotIm1h
dDIiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklY
Mik7IH0KLSJtYXQzIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuKE1BVFJJWDMpOyB9Ci0ibWF0NCIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9
IHRydWU7IHJldHVybihNQVRSSVg0KTsgfQotCi0idmVjMiIgICAgICAgICB7IGNvbnRleHQtPmxl
eEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDMik7IH0KLSJ2ZWMzIiAgICAgICAgIHsgY29u
dGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChWRUMzKTsgfQotInZlYzQiICAgICAg
ICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzQpOyB9Ci0iaXZl
YzIiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzIp
OyB9Ci0iaXZlYzMiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVy
biAoSVZFQzMpOyB9Ci0iaXZlYzQiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRy
dWU7IHJldHVybiAoSVZFQzQpOyB9Ci0iYnZlYzIiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVy
VHlwZSA9IHRydWU7IHJldHVybiAoQlZFQzIpOyB9Ci0iYnZlYzMiICAgICAgICB7IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoQlZFQzMpOyB9Ci0iYnZlYzQiICAgICAgICB7
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoQlZFQzQpOyB9Ci0KLSJzYW1w
bGVyMkQiICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBM
RVIyRDsgfQotInNhbXBsZXJDdWJlIiAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVl
OyByZXR1cm4gU0FNUExFUkNVQkU7IH0KLSJzYW1wbGVyRXh0ZXJuYWxPRVMiIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJfRVhURVJOQUxfT0VTOyB9Ci0ic2Ft
cGxlcjJEUmVjdCIgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExF
UjJEUkVDVDsgfQotCi0ic3RydWN0IiAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRy
dWU7IHJldHVybihTVFJVQ1QpOyB9Cisic3RydWN0IiAgICAgICB7IHJldHVybiBTVFJVQ1Q7IH0K
IAogImFzbSIgICAgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAK
QEAgLTE4MywxMyArMTcxLDExIEBAIE8gICAgICAgICAgIFswLTddCiAiZnZlYzMiICAgICAgICB7
IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KICJmdmVjNCIgICAgICAgIHsgcmV0
dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQogCi0ic2FtcGxlcjFEIiAgICB7IHJldHVy
biByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KLSJzYW1wbGVyM0QiICAgIHsgcmV0dXJuIHJl
c2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQotCi0ic2FtcGxlcjFEU2hhZG93IiB7IHJldHVybiBy
ZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KLSJzYW1wbGVyMkRTaGFkb3ciIHsgcmV0dXJuIHJl
c2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQotCi0ic2FtcGxlcjNEUmVjdCIgeyByZXR1cm4gcmVz
ZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cisic2FtcGxlcjFEIiAgICAgICAgICAgeyByZXR1cm4g
cmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cisic2FtcGxlcjNEIiAgICAgICAgICAgeyByZXR1
cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cisic2FtcGxlcjFEU2hhZG93IiAgICAgeyBy
ZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cisic2FtcGxlcjJEU2hhZG93IiAgICAg
eyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cisic2FtcGxlcjNEUmVjdCIgICAg
ICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAic2FtcGxlcjJEUmVjdFNo
YWRvdyIgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAKICJzaXplb2YiICAg
ICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQpAQCAtMjAzLDcyICsxODks
NjQgQEAgTyAgICAgICAgICAgWzAtN10KICAgIHJldHVybiBjaGVja190eXBlKHl5c2Nhbm5lcik7
CiB9CiAKLTBbeFhde0h9KyAgICAgICAgIHsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGlu
dD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Ci0we099KyAg
ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRl
eHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQotMHtEfSsgICAgICAgICAgICAgeyBj
b250ZXh0LT5lcnJvcih5eWxpbmVubywgIkludmFsaWQgT2N0YWwgbnVtYmVyLiIsIHl5dGV4dCk7
IGNvbnRleHQtPnJlY292ZXIoKTsgcmV0dXJuIDA7fQote0R9KyAgICAgICAgICAgICAgeyB5eWx2
YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVy
bihJTlRDT05TVEFOVCk7IH0KLQote0R9K3tFfSAgICAgICAgICAgeyB5eWx2YWwtPmxleC5mID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4oRkxPQVRDT05TVEFO
VCk7IH0KLXtEfSsiLiJ7RH0qKHtFfSk/IHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZs
b2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Ci0iLiJ7RH0r
KHtFfSk/ICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3Qo
eXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQotCi0iKz0iICAgICAgICAgICAgeyAg
cmV0dXJuKEFERF9BU1NJR04pOyB9Ci0iLT0iICAgICAgICAgICAgeyAgcmV0dXJuKFNVQl9BU1NJ
R04pOyB9Ci0iKj0iICAgICAgICAgICAgeyAgcmV0dXJuKE1VTF9BU1NJR04pOyB9Ci0iLz0iICAg
ICAgICAgICAgeyAgcmV0dXJuKERJVl9BU1NJR04pOyB9Ci0iJT0iICAgICAgICAgICAgeyAgcmV0
dXJuKE1PRF9BU1NJR04pOyB9Ci0iPDw9IiAgICAgICAgICAgeyAgcmV0dXJuKExFRlRfQVNTSUdO
KTsgfQotIj4+PSIgICAgICAgICAgIHsgIHJldHVybihSSUdIVF9BU1NJR04pOyB9Ci0iJj0iICAg
ICAgICAgICAgeyAgcmV0dXJuKEFORF9BU1NJR04pOyB9Ci0iXj0iICAgICAgICAgICAgeyAgcmV0
dXJuKFhPUl9BU1NJR04pOyB9Ci0ifD0iICAgICAgICAgICAgeyAgcmV0dXJuKE9SX0FTU0lHTik7
IH0KLQotIisrIiAgICAgICAgICAgIHsgIHJldHVybihJTkNfT1ApOyB9Ci0iLS0iICAgICAgICAg
ICAgeyAgcmV0dXJuKERFQ19PUCk7IH0KLSImJiIgICAgICAgICAgICB7ICByZXR1cm4oQU5EX09Q
KTsgfQotInx8IiAgICAgICAgICAgIHsgIHJldHVybihPUl9PUCk7IH0KLSJeXiIgICAgICAgICAg
ICB7ICByZXR1cm4oWE9SX09QKTsgfQotIjw9IiAgICAgICAgICAgIHsgIHJldHVybihMRV9PUCk7
IH0KLSI+PSIgICAgICAgICAgICB7ICByZXR1cm4oR0VfT1ApOyB9Ci0iPT0iICAgICAgICAgICAg
eyAgcmV0dXJuKEVRX09QKTsgfQotIiE9IiAgICAgICAgICAgIHsgIHJldHVybihORV9PUCk7IH0K
LSI8PCIgICAgICAgICAgICB7ICByZXR1cm4oTEVGVF9PUCk7IH0KLSI+PiIgICAgICAgICAgICB7
ICByZXR1cm4oUklHSFRfT1ApOyB9Ci0iOyIgICAgICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRl
clR5cGUgPSBmYWxzZTsgcmV0dXJuKFNFTUlDT0xPTik7IH0KLSgieyJ8IjwlIikgICAgICB7IGNv
bnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oTEVGVF9CUkFDRSk7IH0KLSgifSJ8
IiU+IikgICAgICB7IHJldHVybihSSUdIVF9CUkFDRSk7IH0KLSIsIiAgICAgICAgIHsgaWYgKGNv
bnRleHQtPmluVHlwZVBhcmVuKSBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJu
KENPTU1BKTsgfQotIjoiICAgICAgICAgeyByZXR1cm4oQ09MT04pOyB9Ci0iPSIgICAgICAgICB7
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oRVFVQUwpOyB9Ci0iKCIgICAg
ICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyBjb250ZXh0LT5pblR5cGVQYXJl
biA9IHRydWU7IHJldHVybihMRUZUX1BBUkVOKTsgfQotIikiICAgICAgICAgeyBjb250ZXh0LT5p
blR5cGVQYXJlbiA9IGZhbHNlOyByZXR1cm4oUklHSFRfUEFSRU4pOyB9Ci0oIlsifCI8OiIpICAg
ICAgeyByZXR1cm4oTEVGVF9CUkFDS0VUKTsgfQotKCJdInwiOj4iKSAgICAgIHsgcmV0dXJuKFJJ
R0hUX0JSQUNLRVQpOyB9Ci0iLiIgICAgICAgICB7IEJFR0lOKEZJRUxEUyk7ICByZXR1cm4oRE9U
KTsgfQotIiEiICAgICAgICAgeyByZXR1cm4oQkFORyk7IH0KLSItIiAgICAgICAgIHsgcmV0dXJu
KERBU0gpOyB9Ci0ifiIgICAgICAgICB7IHJldHVybihUSUxERSk7IH0KLSIrIiAgICAgICAgIHsg
cmV0dXJuKFBMVVMpOyB9Ci0iKiIgICAgICAgICB7IHJldHVybihTVEFSKTsgfQotIi8iICAgICAg
ICAgeyByZXR1cm4oU0xBU0gpOyB9Ci0iJSIgICAgICAgICB7IHJldHVybihQRVJDRU5UKTsgfQot
IjwiICAgICAgICAgeyByZXR1cm4oTEVGVF9BTkdMRSk7IH0KLSI+IiAgICAgICAgIHsgcmV0dXJu
KFJJR0hUX0FOR0xFKTsgfQotInwiICAgICAgICAgeyByZXR1cm4oVkVSVElDQUxfQkFSKTsgfQot
Il4iICAgICAgICAgeyByZXR1cm4oQ0FSRVQpOyB9Ci0iJiIgICAgICAgICB7IHJldHVybihBTVBF
UlNBTkQpOyB9Ci0iPyIgICAgICAgICB7IHJldHVybihRVUVTVElPTik7IH0KLQotPEZJRUxEUz57
TH0oe0x9fHtEfSkqIHsgCi0gICAgQkVHSU4oSU5JVElBTCk7Ci0gICAgeXlsdmFsLT5sZXguc3Ry
aW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsgCi0gICAgcmV0dXJuIEZJRUxEX1NFTEVDVElP
TjsKLX0KLTxGSUVMRFM+WyBcdFx2XGZccl0ge30KLQotWyBcdFx2XG5cZlxyXSAgIHsgIH0KLTwq
Pjw8RU9GPj4gICAgICB7IGNvbnRleHQtPkFmdGVyRU9GID0gdHJ1ZTsgeXl0ZXJtaW5hdGUoKTsg
fQotPCo+LiAgICAgICAgICAgIHsgY29udGV4dC0+d2FybmluZyh5eWxpbmVubywgIlVua25vd24g
Y2hhciIsIHl5dGV4dCwgIiIpOyByZXR1cm4gMDsgfQorMFt4WF17SH0rICAgICAgICAgeyB5eWx2
YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVy
biBJTlRDT05TVEFOVDsgfQorMHtPfSsgICAgICAgICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3Rh
dGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05TVEFOVDsg
fQore0R9KyAgICAgICAgICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50Pihz
dHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05TVEFOVDsgfQorCit7RH0re0V9ICAg
ICAgICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0
ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9Cit7RH0rIi4ie0R9Kih7RX0pPyB7IHl5bHZh
bC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybiBG
TE9BVENPTlNUQU5UOyB9CisiLiJ7RH0rKHtFfSk/ICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9
CisKKyIrPSIgICAgICAgICAgICB7IHJldHVybiBBRERfQVNTSUdOOyB9CisiLT0iICAgICAgICAg
ICAgeyByZXR1cm4gU1VCX0FTU0lHTjsgfQorIio9IiAgICAgICAgICAgIHsgcmV0dXJuIE1VTF9B
U1NJR047IH0KKyIvPSIgICAgICAgICAgICB7IHJldHVybiBESVZfQVNTSUdOOyB9CisiJT0iICAg
ICAgICAgICAgeyByZXR1cm4gTU9EX0FTU0lHTjsgfQorIjw8PSIgICAgICAgICAgIHsgcmV0dXJu
IExFRlRfQVNTSUdOOyB9CisiPj49IiAgICAgICAgICAgeyByZXR1cm4gUklHSFRfQVNTSUdOOyB9
CisiJj0iICAgICAgICAgICAgeyByZXR1cm4gQU5EX0FTU0lHTjsgfQorIl49IiAgICAgICAgICAg
IHsgcmV0dXJuIFhPUl9BU1NJR047IH0KKyJ8PSIgICAgICAgICAgICB7IHJldHVybiBPUl9BU1NJ
R047IH0KKworIisrIiAgICAgICAgICAgIHsgcmV0dXJuIElOQ19PUDsgfQorIi0tIiAgICAgICAg
ICAgIHsgcmV0dXJuIERFQ19PUDsgfQorIiYmIiAgICAgICAgICAgIHsgcmV0dXJuIEFORF9PUDsg
fQorInx8IiAgICAgICAgICAgIHsgcmV0dXJuIE9SX09QOyB9CisiXl4iICAgICAgICAgICAgeyBy
ZXR1cm4gWE9SX09QOyB9CisiPD0iICAgICAgICAgICAgeyByZXR1cm4gTEVfT1A7IH0KKyI+PSIg
ICAgICAgICAgICB7IHJldHVybiBHRV9PUDsgfQorIj09IiAgICAgICAgICAgIHsgcmV0dXJuIEVR
X09QOyB9CisiIT0iICAgICAgICAgICAgeyByZXR1cm4gTkVfT1A7IH0KKyI8PCIgICAgICAgICAg
ICB7IHJldHVybiBMRUZUX09QOyB9CisiPj4iICAgICAgICAgICAgeyByZXR1cm4gUklHSFRfT1A7
IH0KKyI7IiAgICAgICAgICAgICB7IHJldHVybiBTRU1JQ09MT047IH0KKygieyJ8IjwlIikgICAg
ICB7IHJldHVybiBMRUZUX0JSQUNFOyB9CisoIn0ifCIlPiIpICAgICAgeyByZXR1cm4gUklHSFRf
QlJBQ0U7IH0KKyIsIiAgICAgICAgIHsgcmV0dXJuIENPTU1BOyB9CisiOiIgICAgICAgICB7IHJl
dHVybiBDT0xPTjsgfQorIj0iICAgICAgICAgeyByZXR1cm4gRVFVQUw7IH0KKyIoIiAgICAgICAg
IHsgcmV0dXJuIExFRlRfUEFSRU47IH0KKyIpIiAgICAgICAgIHsgcmV0dXJuIFJJR0hUX1BBUkVO
OyB9CisoIlsifCI8OiIpICB7IHJldHVybiBMRUZUX0JSQUNLRVQ7IH0KKygiXSJ8Ijo+IikgIHsg
cmV0dXJuIFJJR0hUX0JSQUNLRVQ7IH0KKyIuIiAgICAgICAgIHsgcmV0dXJuIERPVDsgfQorIiEi
ICAgICAgICAgeyByZXR1cm4gQkFORzsgfQorIi0iICAgICAgICAgeyByZXR1cm4gREFTSDsgfQor
In4iICAgICAgICAgeyByZXR1cm4gVElMREU7IH0KKyIrIiAgICAgICAgIHsgcmV0dXJuIFBMVVM7
IH0KKyIqIiAgICAgICAgIHsgcmV0dXJuIFNUQVI7IH0KKyIvIiAgICAgICAgIHsgcmV0dXJuIFNM
QVNIOyB9CisiJSIgICAgICAgICB7IHJldHVybiBQRVJDRU5UOyB9CisiPCIgICAgICAgICB7IHJl
dHVybiBMRUZUX0FOR0xFOyB9CisiPiIgICAgICAgICB7IHJldHVybiBSSUdIVF9BTkdMRTsgfQor
InwiICAgICAgICAgeyByZXR1cm4gVkVSVElDQUxfQkFSOyB9CisiXiIgICAgICAgICB7IHJldHVy
biBDQVJFVDsgfQorIiYiICAgICAgICAgeyByZXR1cm4gQU1QRVJTQU5EOyB9CisiPyIgICAgICAg
ICB7IHJldHVybiBRVUVTVElPTjsgfQorCitbIFx0XHZcblxmXHJdIHsgfQorPDxFT0Y+PiAgICB7
IHl5dGVybWluYXRlKCk7IH0KKy4gICAgICAgICAgeyBhc3NlcnQoZmFsc2UpOyByZXR1cm4gMDsg
fQogCiAlJQogCkBAIC0yNzgsNyArMjU2LDggQEAgeXlfc2l6ZV90IHN0cmluZ19pbnB1dChjaGFy
KiBidWYsIHl5X3NpegogICAgIHl5X3NpemVfdCBsZW4gPSB0b2tlbi50eXBlID09IHBwOjpUb2tl
bjo6TEFTVCA/IDAgOiB0b2tlbi50ZXh0LnNpemUoKTsKICAgICBpZiAobGVuIDwgbWF4X3NpemUp
CiAgICAgICAgIG1lbWNweShidWYsIHRva2VuLnRleHQuY19zdHIoKSwgbGVuKTsKLSAgICB5eXNl
dF9saW5lbm8oRW5jb2RlU291cmNlTG9jKHRva2VuLmxvY2F0aW9uLmZpbGUsIHRva2VuLmxvY2F0
aW9uLmxpbmUpLCB5eXNjYW5uZXIpOworICAgIHl5c2V0X2NvbHVtbih0b2tlbi5sb2NhdGlvbi5m
aWxlLCB5eXNjYW5uZXIpOworICAgIHl5c2V0X2xpbmVubyh0b2tlbi5sb2NhdGlvbi5saW5lLCB5
eXNjYW5uZXIpOwogCiAgICAgaWYgKGxlbiA+PSBtYXhfc2l6ZSkKICAgICAgICAgWVlfRkFUQUxf
RVJST1IoIklucHV0IGJ1ZmZlciBvdmVyZmxvdyIpOwpAQCAtMjkyLDEyICsyNzEsMTAgQEAgaW50
IGNoZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgCiAgICAgaW50IHRva2VuID0g
SURFTlRJRklFUjsKICAgICBUU3ltYm9sKiBzeW1ib2wgPSB5eWV4dHJhLT5zeW1ib2xUYWJsZS5m
aW5kKHl5dGV4dCk7Ci0gICAgaWYgKHl5ZXh0cmEtPmxleEFmdGVyVHlwZSA9PSBmYWxzZSAmJiBz
eW1ib2wgJiYgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKKyAgICBpZiAoc3ltYm9sICYmIHN5bWJv
bC0+aXNWYXJpYWJsZSgpKSB7CiAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSBzdGF0aWNf
Y2FzdDxUVmFyaWFibGUqPihzeW1ib2wpOwotICAgICAgICBpZiAodmFyaWFibGUtPmlzVXNlclR5
cGUoKSkgewotICAgICAgICAgICAgeXlleHRyYS0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsKKyAgICAg
ICAgaWYgKHZhcmlhYmxlLT5pc1VzZXJUeXBlKCkpCiAgICAgICAgICAgICB0b2tlbiA9IFRZUEVf
TkFNRTsKLSAgICAgICAgfQogICAgIH0KICAgICB5eWx2YWwtPmxleC5zeW1ib2wgPSBzeW1ib2w7
CiAgICAgcmV0dXJuIHRva2VuOwpAQCAtMzA2LDIyICsyODMsMTEgQEAgaW50IGNoZWNrX3R5cGUo
eXlzY2FuX3QgeXlzY2FubmVyKSB7CiBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW5u
ZXIpIHsKICAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSB5eXNj
YW5uZXI7CiAKLSAgICB5eWV4dHJhLT5lcnJvcih5eWxpbmVubywgIklsbGVnYWwgdXNlIG9mIHJl
c2VydmVkIHdvcmQiLCB5eXRleHQsICIiKTsKKyAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAi
SWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwgIiIpOwogICAgIHl5ZXh0cmEt
PnJlY292ZXIoKTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbikgewotICAgIHN0cnVjdCB5eWd1dHNfdCog
eXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPnNjYW5uZXI7Ci0KLSAgICBpZiAoY29u
dGV4dC0+QWZ0ZXJFT0YpIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXlsaW5lbm8sIHJlYXNv
biwgInVuZXhwZWN0ZWQgRU9GIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29udGV4dC0+ZXJy
b3IoeXlsaW5lbm8sIHJlYXNvbiwgeXl0ZXh0KTsKLSAgICB9Ci0gICAgY29udGV4dC0+cmVjb3Zl
cigpOwotfQotCiBpbnQgZ2xzbGFuZ19pbml0aWFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnRleHQp
IHsKICAgICB5eXNjYW5fdCBzY2FubmVyID0gTlVMTDsKICAgICBpZiAoeXlsZXhfaW5pdF9leHRy
YShjb250ZXh0LCAmc2Nhbm5lcikpCkBAIC0zNDQsOCArMzEwLDggQEAgaW50IGdsc2xhbmdfZmlu
YWxpemUoVFBhcnNlQ29udGV4dCogY29udAogaW50IGdsc2xhbmdfc2NhbihzaXplX3QgY291bnQs
IGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCiAgICAgICAg
ICAgICAgICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICB5eXJlc3RhcnQoTlVMTCwg
Y29udGV4dC0+c2Nhbm5lcik7Ci0gICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJjZUxvYygwLCAx
KSwgY29udGV4dC0+c2Nhbm5lcik7Ci0gICAgY29udGV4dC0+QWZ0ZXJFT0YgPSBmYWxzZTsKKyAg
ICB5eXNldF9jb2x1bW4oMCwgY29udGV4dC0+c2Nhbm5lcik7CisgICAgeXlzZXRfbGluZW5vKDEs
IGNvbnRleHQtPnNjYW5uZXIpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBwcmVwcm9jZXNzb3IuCiAg
ICAgaWYgKCFjb250ZXh0LT5wcmVwcm9jZXNzb3IuaW5pdChjb3VudCwgc3RyaW5nLCBsZW5ndGgp
KQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcueQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFu
Zy55CShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvZ2xzbGFuZy55CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKIC8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMzksMTggKzM5LDIxIEBAIFdISUNI
IEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICNpbmNsdWRlICJHTFNMQU5HL1No
YWRlckxhbmcuaCIKIAogI2RlZmluZSBZWUVOQUJMRV9OTFMgMAotI2RlZmluZSBZWUxUWVBFX0lT
X1RSSVZJQUwgMQogCiAjZGVmaW5lIFlZTEVYX1BBUkFNIGNvbnRleHQtPnNjYW5uZXIKKworI2Rl
ZmluZSBZWUxUWVBFIFRTb3VyY2VMb2MKKyNkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisK
ICV9CiAKICVleHBlY3QgMSAvKiBPbmUgc2hpZnQgcmVkdWNlIGNvbmZsaWN0IGJlY2F1c2Ugb2Yg
aWYgfCBlbHNlICovCiAlcHVyZS1wYXJzZXIKICVwYXJzZS1wYXJhbSB7VFBhcnNlQ29udGV4dCog
Y29udGV4dH0KKyVsb2NhdGlvbnMKIAogJXVuaW9uIHsKICAgICBzdHJ1Y3QgewotICAgICAgICBU
U291cmNlTG9jIGxpbmU7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0
cmluZzsKICAgICAgICAgICAgIGZsb2F0IGY7CkBAIC02MCw3ICs2Myw2IEBAIFdISUNIIEdFTkVS
QVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwog
ICAgIH0gbGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAg
ICAgVE9wZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9k
ZSogaW50ZXJtTm9kZTsKQEAgLTc0LDIzICs3NiwzMSBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdM
U0wgRVMgUEFSU0VSIChnbHNsCiAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKICAg
ICAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAgICAgICBUUGFyYW1ldGVyIHBh
cmFtOwotICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVMaW5lOwotICAgICAgICAgICAgVFR5cGVM
aXN0KiB0eXBlTGlzdDsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7CisgICAgICAgICAgICBU
RmllbGRMaXN0KiBmaWVsZExpc3Q7CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07CiB9CiAKICV7
Ci1leHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbF9wYXJhbSwgdm9pZCogeXlzY2FubmVy
KTsKLWV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hh
ciogcmVhc29uKTsKK2V4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBZWUxUWVBFKiB5
eWxsb2MsIHZvaWQqIHl5c2Nhbm5lcik7CitzdGF0aWMgdm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5
bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKTsKIAotI2Rl
ZmluZSBGUkFHX1ZFUlRfT05MWShTLCBMKSB7ICBcCi0gICAgaWYgKGNvbnRleHQtPnNoYWRlclR5
cGUgIT0gU0hfRlJBR01FTlRfU0hBREVSICYmICBcCi0gICAgICAgIGNvbnRleHQtPnNoYWRlclR5
cGUgIT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXAotICAgICAgICBjb250ZXh0LT5lcnJvcihMLCAi
IHN1cHBvcnRlZCBpbiB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVycyBvbmx5ICIsIFMpOyAgXAotICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7ICBcCi0gICAgfSAgXAotfQorI2RlZmluZSBZWUxMT0Nf
REVGQVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICBpZiAoWVlJRChOKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMSkuZmly
c3RfZmlsZTsgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMs
IDEpLmZpcnN0X2xpbmU7ICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xP
QyhSaHMsIE4pLmxhc3RfZmlsZTsgICAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0g
WVlSSFNMT0MoUmhzLCBOKS5sYXN0X2xpbmU7ICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBlbHNlIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAo
Q3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9maWxlOyAgIFwKKyAg
ICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsg
ICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3Rf
ZmlsZTsgICAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAw
KS5sYXN0X2xpbmU7ICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgVkVSVEVY
X09OTFkoUywgTCkgeyAgXAogICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX1ZFUlRF
WF9TSEFERVIpIHsgIFwKQEAgLTExNiw3ICsxMjYsNiBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQ
YXJzZUNvbnRleHQqIGNvbnRlCiAldG9rZW4gPGxleD4gU0FNUExFUjJEIFNBTVBMRVJDVUJFIFNB
TVBMRVJfRVhURVJOQUxfT0VTIFNBTVBMRVIyRFJFQ1QKIAogJXRva2VuIDxsZXg+IElERU5USUZJ
RVIgVFlQRV9OQU1FIEZMT0FUQ09OU1RBTlQgSU5UQ09OU1RBTlQgQk9PTENPTlNUQU5UCi0ldG9r
ZW4gPGxleD4gRklFTERfU0VMRUNUSU9OCiAldG9rZW4gPGxleD4gTEVGVF9PUCBSSUdIVF9PUAog
JXRva2VuIDxsZXg+IElOQ19PUCBERUNfT1AgTEVfT1AgR0VfT1AgRVFfT1AgTkVfT1AKICV0b2tl
biA8bGV4PiBBTkRfT1AgT1JfT1AgWE9SX09QIE1VTF9BU1NJR04gRElWX0FTU0lHTiBBRERfQVNT
SUdOCkBAIC0xMjcsNiArMTM2LDcgQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0
KiBjb250ZQogJXRva2VuIDxsZXg+IENPTU1BIENPTE9OIEVRVUFMIFNFTUlDT0xPTiBCQU5HIERB
U0ggVElMREUgUExVUyBTVEFSIFNMQVNIIFBFUkNFTlQKICV0b2tlbiA8bGV4PiBMRUZUX0FOR0xF
IFJJR0hUX0FOR0xFIFZFUlRJQ0FMX0JBUiBDQVJFVCBBTVBFUlNBTkQgUVVFU1RJT04KIAorJXR5
cGUgPGxleD4gaWRlbnRpZmllcgogJXR5cGUgPGludGVybT4gYXNzaWdubWVudF9vcGVyYXRvciB1
bmFyeV9vcGVyYXRvcgogJXR5cGUgPGludGVybS5pbnRlcm1UeXBlZE5vZGU+IHZhcmlhYmxlX2lk
ZW50aWZpZXIgcHJpbWFyeV9leHByZXNzaW9uIHBvc3RmaXhfZXhwcmVzc2lvbgogJXR5cGUgPGlu
dGVybS5pbnRlcm1UeXBlZE5vZGU+IGV4cHJlc3Npb24gaW50ZWdlcl9leHByZXNzaW9uIGFzc2ln
bm1lbnRfZXhwcmVzc2lvbgpAQCAtMTU0LDggKzE2NCw4IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3Io
VFBhcnNlQ29udGV4dCogY29udGUKICV0eXBlIDxpbnRlcm0udHlwZT4gdHlwZV9xdWFsaWZpZXIg
ZnVsbHlfc3BlY2lmaWVkX3R5cGUgdHlwZV9zcGVjaWZpZXIKICV0eXBlIDxpbnRlcm0udHlwZT4g
dHlwZV9zcGVjaWZpZXJfbm9fcHJlYyB0eXBlX3NwZWNpZmllcl9ub25hcnJheQogJXR5cGUgPGlu
dGVybS50eXBlPiBzdHJ1Y3Rfc3BlY2lmaWVyCi0ldHlwZSA8aW50ZXJtLnR5cGVMaW5lPiBzdHJ1
Y3RfZGVjbGFyYXRvcgotJXR5cGUgPGludGVybS50eXBlTGlzdD4gc3RydWN0X2RlY2xhcmF0b3Jf
bGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QKKyV0eXBlIDxp
bnRlcm0uZmllbGQ+IHN0cnVjdF9kZWNsYXJhdG9yCisldHlwZSA8aW50ZXJtLmZpZWxkTGlzdD4g
c3RydWN0X2RlY2xhcmF0b3JfbGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gc3RydWN0X2RlY2xhcmF0
aW9uX2xpc3QKICV0eXBlIDxpbnRlcm0uZnVuY3Rpb24+IGZ1bmN0aW9uX2hlYWRlciBmdW5jdGlv
bl9kZWNsYXJhdG9yIGZ1bmN0aW9uX2lkZW50aWZpZXIKICV0eXBlIDxpbnRlcm0uZnVuY3Rpb24+
IGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMgZnVuY3Rpb25fY2FsbF9oZWFkZXIKICV0
eXBlIDxpbnRlcm0+IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVycyBmdW5jdGlv
bl9jYWxsX2hlYWRlcl9ub19wYXJhbWV0ZXJzIGZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyBmdW5jdGlv
bl9wcm90b3R5cGUKQEAgLTE2NCwxMyArMTc0LDE3IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBh
cnNlQ29udGV4dCogY29udGUKICVzdGFydCB0cmFuc2xhdGlvbl91bml0CiAlJQogCitpZGVudGlm
aWVyCisgICAgOiBJREVOVElGSUVSCisgICAgfCBUWVBFX05BTUUKKwogdmFyaWFibGVfaWRlbnRp
ZmllcgogICAgIDogSURFTlRJRklFUiB7CiAgICAgICAgIC8vIFRoZSBzeW1ib2wgdGFibGUgc2Vh
cmNoIHdhcyBkb25lIGluIHRoZSBsZXhpY2FsIHBoYXNlCiAgICAgICAgIGNvbnN0IFRTeW1ib2wq
IHN5bWJvbCA9ICQxLnN5bWJvbDsKICAgICAgICAgY29uc3QgVFZhcmlhYmxlKiB2YXJpYWJsZTsK
ICAgICAgICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigk
MS5saW5lLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIiwgJDEuc3RyaW5nLT5jX3N0cigpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIiwgJDEu
c3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgICAgICBU
VmFyaWFibGUqIGZha2VWYXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJDEuc3RyaW5nLCB0eXBlKTsK
QEAgLTE3OSwxMCArMTkzLDE3IEBAIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIFRoaXMgaWRlbnRpZmllciBjYW4gb25seSBiZSBhIHZhcmlhYmxl
IHR5cGUgc3ltYm9sCiAgICAgICAgICAgICBpZiAoISBzeW1ib2wtPmlzVmFyaWFibGUoKSkgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ2YXJpYWJsZSBleHBlY3Rl
ZCIsICQxLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDEsICJ2YXJpYWJsZSBleHBlY3RlZCIsICQxLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB2
YXJpYWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7CisKKyAgICAg
ICAgICAgIGlmIChjb250ZXh0LT5pc1ZhcmlhYmxlQnVpbHRJbih2YXJpYWJsZSkgJiYgCisgICAg
ICAgICAgICAgICAgIXZhcmlhYmxlLT5nZXRFeHRlbnNpb24oKS5lbXB0eSgpICYmCisgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjayhAMSwgdmFyaWFibGUtPmdldEV4
dGVuc2lvbigpKSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcs
IGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVyeSwgYW5kIHRoZSBwb29sCkBAIC0xOTEsMTEgKzIx
MiwxMiBAQCB2YXJpYWJsZV9pZGVudGlmaWVyCiAgICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlw
ZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ICkgewogICAgICAgICAgICAgQ29uc3RhbnRV
bmlvbiogY29uc3RBcnJheSA9IHZhcmlhYmxlLT5nZXRDb25zdFBvaW50ZXIoKTsKICAgICAgICAg
ICAgIFRUeXBlIHQodmFyaWFibGUtPmdldFR5cGUoKSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICQxLmxpbmUp
OworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bihjb25zdEFycmF5LCB0LCBAMSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJp
YWJsZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlLT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTIwOSwyMiArMjMxLDIyIEBAIHByaW1h
cnlfZXhwcmVzc2lvbgogICAgICAgICAvLyBjaGVjayBmb3Igb3ZlcmZsb3cgZm9yIGNvbnN0YW50
cwogICAgICAgICAvLwogICAgICAgICBpZiAoYWJzKCQxLmkpID49ICgxIDw8IDE2KSkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJm
bG93IiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICIgaW50ZWdlciBjb25z
dGFudCBvdmVyZmxvdyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgkMS5pKTsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAgfQogICAgIHwg
RkxPQVRDT05TVEFOVCB7CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KCQxLmYpOwot
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDEubGluZSk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAg
ICAgfQogICAgIHwgQk9PTENPTlNUQU5UIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29u
c3QoJDEuYik7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
ICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCBAMSk7CiAgICAgfQogICAgIHwgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIHsK
ICAgICAgICAgJCQgPSAkMjsKQEAgLTIzOCwxMDEgKzI2MCw5NyBAQCBwb3N0Zml4X2V4cHJlc3Np
b24KICAgICB8IHBvc3RmaXhfZXhwcmVzc2lvbiBMRUZUX0JSQUNLRVQgaW50ZWdlcl9leHByZXNz
aW9uIFJJR0hUX0JSQUNLRVQgewogICAgICAgICBpZiAoISQxLT5pc0FycmF5KCkgJiYgISQxLT5p
c01hdHJpeCgpICYmICEkMS0+aXNWZWN0b3IoKSkgewogICAgICAgICAgICAgaWYgKCQxLT5nZXRB
c1N5bWJvbE5vZGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAi
IGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAk
MS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAyLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5
LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAkMS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgp
LmNfc3RyKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCQyLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwg
b3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoQDIsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVj
dG9yICIsICJleHByZXNzaW9uIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QgJiYgJDMtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICBp
ZiAoJDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKLSAgICAg
ICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlOb2RlKCQzLT5nZXRBc0NvbnN0
YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCksICQxLCAkMi5s
aW5lKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkpIHsgIC8vIGNvbnN0
YW50IGZvbGRpbmcgZm9yIHZlY3RvcnMKLSAgICAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZp
ZWxkczsKLSAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKLSAgICAgICAgICAgICAgICBm
aWVsZHMub2Zmc2V0c1swXSA9ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7IC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3YXkgYmVjYXVz
ZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5Ci0gICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwgJDIubGluZSk7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9y
IG1hdHJpY2VzCi0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdE1hdHJpeE5v
ZGUoJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJ
Q29uc3QoKSwgJDEsICQyLmxpbmUpOworICAgICAgICBpZiAoJDMtPmdldFF1YWxpZmllcigpID09
IEV2cUNvbnN0KSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSAkMy0+Z2V0QXNDb25zdGFudFVu
aW9uKCktPmdldElDb25zdCgwKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBpbmZvU3RyZWFtOworICAgICAgICAgICAgICAg
IGluZm9TdHJlYW0gPDwgaW5kZXg7CisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgaW5mbyA9
IGluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJu
ZWdhdGl2ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOworICAgICAgICAgICAgICAgIGluZGV4ID0gMDsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICgkMy0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoKCQxLT5pc1ZlY3RvcigpIHx8ICQxLT5pc01h
dHJpeCgpKSAmJiAkMS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gJDMtPmdldEFzQ29u
c3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSAmJiAhJDEt
PmlzQXJyYXkoKSApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0
cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZp
ZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigp
LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsK
LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgZXh0
cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCQxLT5p
c0FycmF5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdl
dEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJDEt
PmdldFR5cGUoKS5nZXRNYXhBcnJheVNpemUoKSA8PSAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCkt
PmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNldE1heFNpemUoJDEtPmdldEFzU3lt
Ym9sTm9kZSgpLCAkMS0+Z2V0VHlwZVBvaW50ZXIoKSwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigp
LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgdHJ1ZSwgJDIubGluZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgkMS0+Z2V0QXNTeW1ib2xO
b2RlKCksICQxLT5nZXRUeXBlUG9pbnRlcigpLCAwLCBmYWxzZSwgJDIubGluZSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICggJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJ
Q29uc3QoKSA+PSAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0
IG9mIHJhbmdlICciIDw8ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBv
aW50ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIiciOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIiwgIlsiLCBleHRy
YUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4
KEVPcEluZGV4RGlyZWN0LCAkMSwgJDMsICQyLmxpbmUpOworICAgICAgICAgICAgaWYgKCQxLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoJDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKKyAgICAg
ICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdEFycmF5Tm9kZShpbmRleCwgJDEs
IEAyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc1ZlY3RvcigpKSB7ICAvLyBj
b25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAgICAgICAgICAgIFRWZWN0b3JG
aWVsZHMgZmllbGRzOworICAgICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKKyAgICAg
ICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVlZCB0byBkbyBp
dCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkKKyAgICAg
ICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAk
MSwgQDIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsgLy8g
Y29uc3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoaW5kZXgsICQxLCBAMik7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJy
YXkoKSAmJiAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgImFycmF5IG11c3QgYmUg
cmVkZWNsYXJlZCB3aXRoIGEgc2l6ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRoIGEgdmFyaWFi
bGUiKTsKKyAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoaW5kZXggPj0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBv
dXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0
cigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4ID0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSAt
IDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCgk
MS0+aXNWZWN0b3IoKSB8fCAkMS0+aXNNYXRyaXgoKSkgJiYgJDEtPmdldFR5cGUoKS5nZXROb21p
bmFsU2l6ZSgpIDw9IGluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFt
IDw8ICJmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFt
LnN0cigpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiIsICJbIiwg
ZXh0cmFJbmZvLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gICQxLT5nZXRUeXBlKCkuZ2V0Tm9taW5h
bFNpemUoKSAtIDE7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgJDEsICQzLCAk
Mi5saW5lKTsKKyAgICAgICAgICAgICAgICAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVu
aW9uQXJyYXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7CisgICAgICAgICAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCAkMywg
QDIpOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgJDEsICQzLCBA
Mik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCQkID09IDApIHsKICAgICAgICAgICAgIENvbnN0
YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAg
IHVuaW9uQXJyYXktPnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQs
IEVicEhpZ2gsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0
LCBFYnBIaWdoLCBFdnFDb25zdCksIEAyKTsKICAgICAgICAgfSBlbHNlIGlmICgkMS0+aXNBcnJh
eSgpKSB7CiAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSkKLSAgICAg
ICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLCAk
MS0+Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAkJC0+c2V0VHlw
ZShUVHlwZSgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKSk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+
Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCksICQxLT5p
c01hdHJpeCgpKSk7CiAKICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmll
cigpID09IEV2cUNvbnN0KQogICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5z
ZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgp
ICYmICQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAg
ICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24o
KSwgRXZxQ29uc3QsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKCQx
LT5pc01hdHJpeCgpKQotICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2lj
VHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxT
aXplKCkpKTsKLSAgICAgICAgZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkgJiYgJDEtPmdldFR5cGUo
KS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRU
eXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCkpOwot
ICAgICAgICBlbHNlIGlmICgkMS0+aXNWZWN0b3IoKSkKLSAgICAgICAgICAgICQkLT5zZXRUeXBl
KFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3Jh
cnkpKTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7
CisgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICQxLT5nZXRUeXBlKCkuZ2V0UXVh
bGlmaWVyKCkgPT0gRXZxQ29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAg
ICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lv
bigpLCBxdWFsaWZpZXIsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoJDEtPmlzVmVjdG9yKCkpIHsKKyAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0g
JDEtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZx
VGVtcG9yYXJ5OworICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlw
ZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIHF1YWxpZmllcikpOworICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgJCQtPnNldFR5cGUoJDEtPmdldFR5cGUoKSk7CisgICAgICAgIH0KICAgICB9
CiAgICAgfCBmdW5jdGlvbl9jYWxsIHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBw
b3N0Zml4X2V4cHJlc3Npb24gRE9UIEZJRUxEX1NFTEVDVElPTiB7CisgICAgfCBwb3N0Zml4X2V4
cHJlc3Npb24gRE9UIGlkZW50aWZpZXIgewogICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDMubGluZSwgImNhbm5vdCBhcHBseSBkb3Qgb3Bl
cmF0b3IgdG8gYW4gYXJyYXkiLCAiLiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMs
ICJjYW5ub3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS0+aXNW
ZWN0b3IoKSkgewogICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAg
ICBpZiAoISBjb250ZXh0LT5wYXJzZVZlY3RvckZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9t
aW5hbFNpemUoKSwgZmllbGRzLCAkMy5saW5lKSkgeworICAgICAgICAgICAgaWYgKCEgY29udGV4
dC0+cGFyc2VWZWN0b3JGaWVsZHMoKiQzLnN0cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZp
ZWxkcywgQDMpKSB7CiAgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CiAgICAgICAgICAg
ICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSAwOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCku
Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVj
dG9yIGZpZWxkcwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RWZWN0b3JO
b2RlKGZpZWxkcywgJDEsICQzLmxpbmUpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+
YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgJDEsIEAzKTsKICAgICAgICAgICAgICAgICBpZiAo
JCQgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAgICAgICAgICQkID0gJDE7CkBAIC0zNDEsMTMgKzM1OSwxMyBAQCBwb3N0Zml4X2V4
cHJlc3Npb24KICAgICAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJh
c2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0LCAoaW50KSAoKiQzLnN0cmlu
Zykuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFRTdHJp
bmcgdmVjdG9yU3RyaW5nID0gKiQzLnN0cmluZzsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmllbGRzLCAkMy5s
aW5lKTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRl
eChFT3BWZWN0b3JTd2l6emxlLCAkMSwgaW5kZXgsICQyLmxpbmUpOworICAgICAgICAgICAgICAg
IFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShm
aWVsZHMsIEAzKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRJbmRleChFT3BWZWN0b3JTd2l6emxlLCAkMSwgaW5kZXgsIEAyKTsKICAgICAgICAgICAgICAg
ICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24o
KSwgRXZxVGVtcG9yYXJ5LCAoaW50KSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsKICAgICAgICAgICAgIFRN
YXRyaXhGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VNYXRy
aXhGaWVsZHMoKiQzLnN0cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgJDMubGlu
ZSkpIHsKKyAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBhcnNlTWF0cml4RmllbGRzKCokMy5z
dHJpbmcsICQxLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsIEAzKSkgewogICAgICAgICAgICAg
ICAgIGZpZWxkcy53aG9sZVJvdyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9s
ZUNvbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy5yb3cgPSAwOwpAQCAtMzU2LDg0
ICszNzQsNzggQEAgcG9zdGZpeF9leHByZXNzaW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChmaWVsZHMud2hvbGVSb3cgfHwgZmllbGRzLndob2xlQ29sKSB7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1w
bGVtZW50ZWQgeWV0IiwgIi4iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwg
IiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgICAgIHVu
aW9uQXJyYXktPnNldElDb25zdCgwKTsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGlu
ZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDMubGluZSk7Ci0gICAgICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJl
Y3QsICQxLCBpbmRleCwgJDIubGluZSk7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBp
bmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAzKTsKKyAgICAgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwg
JDEsIGluZGV4LCBAMik7CiAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdl
dEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksRXZxVGVtcG9yYXJ5LCAkMS0+Z2V0Tm9t
aW5hbFNpemUoKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBDb25z
dGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAg
ICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGZpZWxkcy5jb2wgKiAkMS0+Z2V0Tm9taW5hbFNp
emUoKSArIGZpZWxkcy5yb3cpOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXgg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMy5saW5lKTsKLSAgICAgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwg
JDEsIGluZGV4LCAkMi5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDMpOworICAgICAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwg
aW5kZXgsIEAyKTsKICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFz
aWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKCQxLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgICAg
IGJvb2wgZmllbGRGb3VuZCA9IGZhbHNlOwotICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBm
aWVsZHMgPSAkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOwotICAgICAgICAgICAgaWYgKGZpZWxk
cyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInN0cnVj
dHVyZSBoYXMgbm8gZmllbGRzIiwgIkludGVybmFsIEVycm9yIik7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOwotICAgICAgICAgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICgoKmZpZWxkcylbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKiQzLnN0cmlu
ZykgewotICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+
ZmllbGRzKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgICAgIGZvciAo
aSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmll
bGRzW2ldLT5uYW1lKCkgPT0gKiQzLnN0cmluZykgeworICAgICAgICAgICAgICAgICAgICBmaWVs
ZEZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0KCokMy5zdHJp
bmcsICQxLCAkMi5saW5lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkJC0+c2V0VHlwZSgqKCpmaWVsZHMpW2ldLnR5cGUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNoYW5nZSB0aGUgcXVhbGlmaWVyIG9mIHRoZSByZXR1cm4gdHlwZSwgbm90
IG9mIHRoZSBzdHJ1Y3R1cmUgZmllbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBh
cyB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1
Y3R1cmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigp
LT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3Rh
bnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksICooKmZpZWxkcylbaV0udHlwZSwgJDMubGluZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChF
T3BJbmRleERpcmVjdFN0cnVjdCwgJDEsIGluZGV4LCAkMi5saW5lKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICQkLT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoZmllbGRGb3VuZCkgeworICAgICAgICAgICAgICAgIGlmICgkMS0+
Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAgICAgICAgICAg
ICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RTdHJ1Y3QoKiQzLnN0cmluZywgJDEsIEAyKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCQkID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICQkID0gJDE7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0
eXBlLCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBmaWVsZAorICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHZhcmlvdXMg
c3RydWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigp
LT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIu
bGluZSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAg
ICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOworICAgICAgICAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRJQ29uc3QoaSk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5k
ZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAq
ZmllbGRzW2ldLT50eXBlKCksIEAzKTsKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICQxLCBpbmRleCwg
QDIpOworICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkp
OwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoQDIsICIgbm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1cmUiLCAkMy5z
dHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAg
ICAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBmaWVsZCBzZWxlY3Rpb24gcmVx
dWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIsICQz
LnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiBmaWVs
ZCBzZWxlY3Rpb24gcmVxdWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0
IGhhbmQgc2lkZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgICAgIC8vIGRv
bid0IGRlbGV0ZSAkMy5zdHJpbmcsIGl0J3MgZnJvbSB0aGUgcG9vbAogICAgIH0KICAgICB8IHBv
c3RmaXhfZXhwcmVzc2lvbiBJTkNfT1AgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJy
b3JDaGVjaygkMi5saW5lLCAiKysiLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVF
cnJvckNoZWNrKEAyLCAiKysiLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0
SW5jcmVtZW50LCAkMSwgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdEluY3JlbWVudCwg
JDEsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDIubGluZSwgIisrIiwgJDEtPmdldENv
bXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKEAyLCAi
KysiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcG9z
dGZpeF9leHByZXNzaW9uIERFQ19PUCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJv
ckNoZWNrKCQyLmxpbmUsICItLSIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVy
cm9yQ2hlY2soQDIsICItLSIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RE
ZWNyZW1lbnQsICQxLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0RGVjcmVtZW50LCAk
MSwgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMi5saW5lLCAiLS0iLCAkMS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDIsICIt
LSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTQ2MSwxOCArNDczLDE4
IEBAIGZ1bmN0aW9uX2NhbGwKICAgICAgICAgICAgIC8vIFRoZWlyIHBhcmFtZXRlcnMgd2lsbCBi
ZSB2ZXJpZmllZCBhbGdvcml0aG1pY2FsbHkuCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAg
VFR5cGUgdHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOyAgLy8gdXNlIHRoaXMgdG8gZ2V0IHRo
ZSB0eXBlIGJhY2sKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1Y3RvckVycm9yQ2hl
Y2soJDEubGluZSwgJDEuaW50ZXJtTm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgeworICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVjayhAMSwgJDEuaW50ZXJtTm9k
ZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgewogICAgICAgICAgICAgICAgICQkID0gMDsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAvLyBJ
dCdzIGEgY29uc3RydWN0b3IsIG9mIHR5cGUgJ3R5cGUnLgogICAgICAgICAgICAgICAgIC8vCi0g
ICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvcigkMS5pbnRlcm1Ob2Rl
LCAmdHlwZSwgb3AsIGZuQ2FsbCwgJDEubGluZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5hZGRDb25zdHJ1Y3RvcigkMS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgQDEp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwgJDEubGluZSk7CisgICAg
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0
b3IoMCwgb3AsIEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICQkLT5zZXRUeXBlKHR5
cGUpOwogICAgICAgICB9IGVsc2UgewpAQCAtNDgxLDEzICs0OTMsMTMgQEAgZnVuY3Rpb25fY2Fs
bAogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIGNvbnN0IFRGdW5jdGlvbiogZm5DYW5kaWRh
dGU7CiAgICAgICAgICAgICBib29sIGJ1aWx0SW47Ci0gICAgICAgICAgICBmbkNhbmRpZGF0ZSA9
IGNvbnRleHQtPmZpbmRGdW5jdGlvbigkMS5saW5lLCBmbkNhbGwsICZidWlsdEluKTsKKyAgICAg
ICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKEAxLCBmbkNhbGwsICZi
dWlsdEluKTsKICAgICAgICAgICAgIGlmIChmbkNhbmRpZGF0ZSkgewogICAgICAgICAgICAgICAg
IC8vCiAgICAgICAgICAgICAgICAgLy8gQSBkZWNsYXJlZCBmdW5jdGlvbi4KICAgICAgICAgICAg
ICAgICAvLwogICAgICAgICAgICAgICAgIGlmIChidWlsdEluICYmICFmbkNhbmRpZGF0ZS0+Z2V0
RXh0ZW5zaW9uKCkuZW1wdHkoKSAmJgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRl
bnNpb25FcnJvckNoZWNrKCQxLmxpbmUsIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjayhAMSwgZm5D
YW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG9wID0gZm5D
YW5kaWRhdGUtPmdldEJ1aWx0SW5PcCgpOwpAQCAtNDk5LDcgKzUxMSw3IEBAIGZ1bmN0aW9uX2Nh
bGwKICAgICAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBUcmVhdCBpdCBsaWtlIGEgYnVpbHQtaW4gdW5hcnkgb3BlcmF0b3IuCiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkVW5hcnlNYXRoKG9wLCAkMS5pbnRlcm1Ob2RlLCAwLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRVbmFyeU1hdGgob3AsICQxLmludGVybU5vZGUsIEAxLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJidWlsdCBpbiB1
bmFyeSBvcGVyYXRvciBmdW5jdGlvbi4gIFR5cGU6ICIgPDwgc3RhdGljX2Nhc3Q8VEludGVybVR5
cGVkKj4oJDEuaW50ZXJtTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCk7CkBAIC01MDgsMTIgKzUy
MCwxMiBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWVlFUlJP
UjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNl
dEFnZ3JlZ2F0ZU9wZXJhdG9yKCQxLmludGVybUFnZ3JlZ2F0ZSwgb3AsICQxLmxpbmUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVn
YXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBvcCwgQDEpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyBhIHJlYWwgZnVuY3Rpb24gY2FsbAogCi0gICAgICAgICAgICAgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQxLmludGVybUFnZ3Jl
Z2F0ZSwgRU9wRnVuY3Rpb25DYWxsLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdn
cmVnYXRlLCBFT3BGdW5jdGlvbkNhbGwsIEAxKTsKICAgICAgICAgICAgICAgICAgICAgJCQtPnNl
dFR5cGUoZm5DYW5kaWRhdGUtPmdldFJldHVyblR5cGUoKSk7CiAKICAgICAgICAgICAgICAgICAg
ICAgLy8gdGhpcyBpcyBob3cgd2Uga25vdyB3aGV0aGVyIHRoZSBnaXZlbiBmdW5jdGlvbiBpcyBh
IGJ1aWx0SW4gZnVuY3Rpb24gb3IgYSB1c2VyIGRlZmluZWQgZnVuY3Rpb24KQEAgLTU0MCw3ICs1
NTIsNyBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAgICAgICAgICAgLy8gUHV0IG9uIGEgZHVtbXkg
bm9kZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1
bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25B
cnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDEpOwogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTUzLDcgKzU2
NSw3IEBAIGZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9kCiAgICAgICAgICQkID0gJDE7CiAgICAgfQog
ICAgIHwgcG9zdGZpeF9leHByZXNzaW9uIERPVCBmdW5jdGlvbl9jYWxsX2dlbmVyaWMgewotICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMy5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIs
ICIiKTsKKyAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9y
dGVkIiwgIiIpOwogICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICQkID0gJDM7
CiAgICAgfQpAQCAtNTYyLDExICs1NzQsOSBAQCBmdW5jdGlvbl9jYWxsX29yX21ldGhvZAogZnVu
Y3Rpb25fY2FsbF9nZW5lcmljCiAgICAgOiBmdW5jdGlvbl9jYWxsX2hlYWRlcl93aXRoX3BhcmFt
ZXRlcnMgUklHSFRfUEFSRU4gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICAkJC5saW5lID0g
JDIubGluZTsKICAgICB9CiAgICAgfCBmdW5jdGlvbl9jYWxsX2hlYWRlcl9ub19wYXJhbWV0ZXJz
IFJJR0hUX1BBUkVOIHsKICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxp
bmU7CiAgICAgfQogICAgIDsKIApAQCAtNTkyLDcgKzYwMiw3IEBAIGZ1bmN0aW9uX2NhbGxfaGVh
ZGVyX3dpdGhfcGFyYW1ldGVycwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcg
VFR5cGUoJDMtPmdldFR5cGUoKSkgfTsKICAgICAgICAgJDEuZnVuY3Rpb24tPmFkZFBhcmFtZXRl
cihwYXJhbSk7CiAgICAgICAgICQkLmZ1bmN0aW9uID0gJDEuZnVuY3Rpb247Ci0gICAgICAgICQk
LmludGVybU5vZGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRl
cm1Ob2RlLCAkMywgJDIubGluZSk7CisgICAgICAgICQkLmludGVybU5vZGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCAkMywgQDIpOwogICAgIH0K
ICAgICA7CiAKQEAgLTYxNywzOSArNjI3LDM5IEBAIGZ1bmN0aW9uX2lkZW50aWZpZXIKICAgICAg
ICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgaWYgKCQxLm1hdHJpeCkgewog
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2goJDEuc2l6ZSkgewotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0TWF0MjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoKCQxLnNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzI7ICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSAzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9
IEVPcENvbnN0cnVjdFZlYzM7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEZs
b2F0OyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVj
dFZlYzI7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0
cnVjdFZlYzM7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENv
bnN0cnVjdFZlYzQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0SW50Ogog
ICAgICAgICAgICAgICAgIHN3aXRjaCgkMS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAx
OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1
Y3RJbnQ7ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZFUlRf
T05MWSgiaXZlYzIiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzMiLCAkMS5s
aW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSA0OiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzQiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25z
dHJ1Y3RJVmVjNDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0
cnVjdEludDsgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3Ry
dWN0SVZlYzI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1
Y3RJVmVjMzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVj
dElWZWM0OyBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIEVidEJvb2w6CiAgICAgICAgICAgICAgICAgc3dpdGNoKCQxLnNp
emUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEJvb2w7ICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMiIsICQxLmxpbmUpOyBvcCA9
IEVPcENvbnN0cnVjdEJWZWMyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAg
IEZSQUdfVkVSVF9PTkxZKCJidmVjMyIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMz
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJi
dmVjNCIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWM0OyBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdEJWZWMzOyBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9wID09IEVPcE51bGwpIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiY2Fubm90IGNvbnN0cnVjdCB0aGlz
IHR5cGUiLCBnZXRCYXNpY1N0cmluZygkMS50eXBlKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDEsICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5n
KCQxLnR5cGUpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAgICAgJDEudHlwZSA9IEVidEZsb2F0OwogICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0RmxvYXQ7CkBAIC02NjEsMTQgKzY3MSw3IEBAIGZ1bmN0aW9uX2lkZW50aWZpZXIKICAg
ICAgICAgJCQgPSBmdW5jdGlvbjsKICAgICB9CiAgICAgfCBJREVOVElGSUVSIHsKLSAgICAgICAg
aWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKLSAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lk
LCBFYnBVbmRlZmluZWQpOwotICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5j
dGlvbigkMS5zdHJpbmcsIHR5cGUpOwotICAgICAgICAkJCA9IGZ1bmN0aW9uOwotICAgIH0KLSAg
ICB8IEZJRUxEX1NFTEVDVElPTiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9y
Q2hlY2soJDEubGluZSwgKiQxLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZl
ZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAg
IFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCQxLnN0cmluZywgdHlwZSk7CkBA
IC02ODEsMjggKzY4NCwyOCBAQCB1bmFyeV9leHByZXNzaW9uCiAgICAgICAgICQkID0gJDE7CiAg
ICAgfQogICAgIHwgSU5DX09QIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4
dC0+bFZhbHVlRXJyb3JDaGVjaygkMS5saW5lLCAiKysiLCAkMikpCisgICAgICAgIGlmIChjb250
ZXh0LT5sVmFsdWVFcnJvckNoZWNrKEAxLCAiKysiLCAkMikpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5
TWF0aChFT3BQcmVJbmNyZW1lbnQsICQyLCAkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVJ
bmNyZW1lbnQsICQyLCBAMSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQg
PT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsICIrKyIs
ICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BF
cnJvcihAMSwgIisrIiwgJDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgfQogICAgIH0K
ICAgICB8IERFQ19PUCB1bmFyeV9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxW
YWx1ZUVycm9yQ2hlY2soJDEubGluZSwgIi0tIiwgJDIpKQorICAgICAgICBpZiAoY29udGV4dC0+
bFZhbHVlRXJyb3JDaGVjayhAMSwgIi0tIiwgJDIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgo
RU9wUHJlRGVjcmVtZW50LCAkMiwgJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVt
ZW50LCAkMiwgQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDAp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMS5saW5lLCAiLS0iLCAkMi0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3Io
QDEsICItLSIsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDI7CiAgICAgICAgIH0KICAgICB9CiAgICAg
fCB1bmFyeV9vcGVyYXRvciB1bmFyeV9leHByZXNzaW9uIHsKICAgICAgICAgaWYgKCQxLm9wICE9
IEVPcE51bGwpIHsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVu
YXJ5TWF0aCgkMS5vcCwgJDIsICQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgkMS5vcCwgJDIs
IEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewog
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yT3AgPSAiIjsKICAgICAgICAgICAgICAg
ICBzd2l0Y2goJDEub3ApIHsKQEAgLTcxMCw3ICs3MTMsNyBAQCB1bmFyeV9leHByZXNzaW9uCiAg
ICAgICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OiBlcnJvck9wID0gIiEiOyBicmVhazsK
ICAgICAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsIGVycm9yT3AsICQyLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJy
b3IoQDEsIGVycm9yT3AsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAg
ICAgIH0KQEAgLTcyMSwyOCArNzI0LDI2IEBAIHVuYXJ5X2V4cHJlc3Npb24KIC8vIEdyYW1tYXIg
Tm90ZTogIE5vIHRyYWRpdGlvbmFsIHN0eWxlIHR5cGUgY2FzdHMuCiAKIHVuYXJ5X29wZXJhdG9y
Ci0gICAgOiBQTFVTICB7ICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcE51bGw7IH0KLSAg
ICB8IERBU0ggIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTmVnYXRpdmU7IH0KLSAg
ICB8IEJBTkcgIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTG9naWNhbE5vdDsgfQor
ICAgIDogUExVUyAgeyAkJC5vcCA9IEVPcE51bGw7IH0KKyAgICB8IERBU0ggIHsgJCQub3AgPSBF
T3BOZWdhdGl2ZTsgfQorICAgIHwgQkFORyAgeyAkJC5vcCA9IEVPcExvZ2ljYWxOb3Q7IH0KICAg
ICA7CiAvLyBHcmFtbWFyIE5vdGU6ICBObyAnKicgb3IgJyYnIHVuYXJ5IG9wcy4gIFBvaW50ZXJz
IGFyZSBub3Qgc3VwcG9ydGVkLgogCiBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uCiAgICAgOiB1
bmFyeV9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbXVsdGlwbGljYXRpdmVfZXhwcmVz
c2lvbiBTVEFSIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgiKiIs
ICQyLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcE11bCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAkMSwg
JDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIqIiwgJDEtPmdldENv
bXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIqIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQz
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBtdWx0aXBsaWNh
dGl2ZV9leHByZXNzaW9uIFNMQVNIIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBGUkFHX1ZF
UlRfT05MWSgiLyIsICQyLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcERpdiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wRGl2LCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgk
JCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIv
IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIvIiwgJDEtPmdldENvbXBsZXRl
U3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTc1MiwxNyAr
NzUzLDE3IEBAIG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24KIGFkZGl0aXZlX2V4cHJlc3Npb24K
ICAgICA6IG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBhZGRp
dGl2ZV9leHByZXNzaW9uIFBMVVMgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiB7Ci0gICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wQWRkLCAkMSwgJDMs
ICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIisiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cihAMiwgIisiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5n
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAk
MTsKICAgICAgICAgfQogICAgIH0KICAgICB8IGFkZGl0aXZlX2V4cHJlc3Npb24gREFTSCBtdWx0
aXBsaWNhdGl2ZV9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BTdWIsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9s
VGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRo
KEVPcFN1YiwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAo
JCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAi
LSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiLSIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CkBAIC03NzYsNDMg
Kzc3Nyw0MyBAQCBzaGlmdF9leHByZXNzaW9uCiByZWxhdGlvbmFsX2V4cHJlc3Npb24KICAgICA6
IHNoaWZ0X2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Np
b24gTEVGVF9BTkdMRSBzaGlmdF9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbiwgJDEsICQzLCAkMi5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoJDIubGluZSwgIjwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENv
bXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwg
IjwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25B
cnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVs
YXRpb25hbF9leHByZXNzaW9uIFJJR0hUX0FOR0xFIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhh
biwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW4sICQxLCAk
MywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj4iLCAkMS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIj4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAg
ICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9leHByZXNzaW9uIExFX09QIHNoaWZ0X2V4
cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChF
T3BMZXNzVGhhbkVxdWFsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAg
ICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQy
LmxpbmUsICI8PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiPD0iLCAkMS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0
QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9l
eHByZXNzaW9uIEdFX09QIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMs
ICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMsIEAy
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI+PSIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKEAyLCAiPj0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdl
dENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFd
OwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAg
ICB9CiAgICAgfQogICAgIDsKQEAgLTgyMCwyMyArODIxLDIzIEBAIHJlbGF0aW9uYWxfZXhwcmVz
c2lvbgogZXF1YWxpdHlfZXhwcmVzc2lvbgogICAgIDogcmVsYXRpb25hbF9leHByZXNzaW9uIHsg
JCQgPSAkMTsgfQogICAgIHwgZXF1YWxpdHlfZXhwcmVzc2lvbiBFUV9PUCByZWxhdGlvbmFsX2V4
cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BFcXVhbCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1YWws
ICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDAp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj09IiwgJDEt
PmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICI9PSIsICQxLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0
YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwot
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1
bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGlu
ZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBA
Mik7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBlcXVhbGl0eV9leHByZXNzaW9uIE5FX09QIHJl
bGF0aW9uYWxfZXhwcmVzc2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wTm90RXF1YWwsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcE5vdEVxdWFsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAg
ICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQy
LmxpbmUsICIhPSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiIT0iLCAkMS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0
QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg1NiwxMyAr
ODU3LDEzIEBAIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uCiBsb2dpY2FsX2FuZF9leHByZXNzaW9u
CiAgICAgOiBpbmNsdXNpdmVfb3JfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxvZ2lj
YWxfYW5kX2V4cHJlc3Npb24gQU5EX09QIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uIHsKLSAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5k
LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5kLCAkMSwgJDMs
IEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICImJiIsICQxLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiJiYiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAg
ICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg3MCwxMyArODcxLDEzIEBAIGxvZ2ljYWxfYW5kX2V4
cHJlc3Npb24KIGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24KICAgICA6IGxvZ2ljYWxfYW5kX2V4cHJl
c3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBsb2dpY2FsX3hvcl9leHByZXNzaW9uIFhPUl9PUCBs
b2dpY2FsX2FuZF9leHByZXNzaW9uICB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbFhvciwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJp
bmFyeU1hdGgoRU9wTG9naWNhbFhvciwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUp
OwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BF
cnJvcigkMi5saW5lLCAiXl4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIl5e
IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24g
KnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJy
YXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCAkMi5saW5lKTsKKyAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksIEAyKTsKICAgICAgICAgfQogICAgIH0KICAgICA7CkBAIC04
ODQsMTMgKzg4NSwxMyBAQCBsb2dpY2FsX3hvcl9leHByZXNzaW9uCiBsb2dpY2FsX29yX2V4cHJl
c3Npb24KICAgICA6IGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBs
b2dpY2FsX29yX2V4cHJlc3Npb24gT1JfT1AgbG9naWNhbF94b3JfZXhwcmVzc2lvbiAgewotICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxP
ciwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAkMSwgJDMs
IEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICJ8fCIsICQxLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAifHwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAg
ICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg5OCwxNSArODk5LDE1IEBAIGxvZ2ljYWxfb3JfZXhw
cmVzc2lvbgogY29uZGl0aW9uYWxfZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF9vcl9leHByZXNz
aW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbG9naWNhbF9vcl9leHByZXNzaW9uIFFVRVNUSU9OIGV4
cHJlc3Npb24gQ09MT04gYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICBpZiAoY29udGV4
dC0+Ym9vbEVycm9yQ2hlY2soJDIubGluZSwgJDEpKQorICAgICAgIGlmIChjb250ZXh0LT5ib29s
RXJyb3JDaGVjayhAMiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0g
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigkMSwgJDMsICQ1
LCAkMi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0
aW9uKCQxLCAkMywgJDUsIEAyKTsKICAgICAgICAgaWYgKCQzLT5nZXRUeXBlKCkgIT0gJDUtPmdl
dFR5cGUoKSkKICAgICAgICAgICAgICQkID0gMDsKIAogICAgICAgICBpZiAoJCQgPT0gMCkgewot
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiOiIsICQzLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAkNS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiOiIsICQzLT5nZXRDb21wbGV0ZVN0cmluZygpLCAk
NS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAkJCA9ICQ1OwogICAgICAgICB9CkBAIC05MTYsMTEgKzkxNywxMSBAQCBj
b25kaXRpb25hbF9leHByZXNzaW9uCiBhc3NpZ25tZW50X2V4cHJlc3Npb24KICAgICA6IGNvbmRp
dGlvbmFsX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCB1bmFyeV9leHByZXNzaW9uIGFz
c2lnbm1lbnRfb3BlcmF0b3IgYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soJDIubGluZSwgImFzc2lnbiIsICQxKSkKKyAgICAgICAg
aWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soQDIsICJhc3NpZ24iLCAkMSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEFzc2lnbigkMi5vcCwgJDEsICQzLCAkMi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWduKCQyLm9wLCAkMSwgJDMsIEAyKTsKICAgICAgICAg
aWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9yKCQyLmxpbmUs
ICJhc3NpZ24iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5n
KCkpOworICAgICAgICAgICAgY29udGV4dC0+YXNzaWduRXJyb3IoQDIsICJhc3NpZ24iLCAkMS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpA
QCAtOTI4LDExICs5MjksMTEgQEAgYXNzaWdubWVudF9leHByZXNzaW9uCiAgICAgOwogCiBhc3Np
Z25tZW50X29wZXJhdG9yCi0gICAgOiBFUVVBTCAgICAgICAgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcEFzc2lnbjsgfQot
ICAgIHwgTVVMX0FTU0lHTiAgIHsgRlJBR19WRVJUX09OTFkoIio9IiwgJDEubGluZSk7ICAgICAk
JC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BNdWxBc3NpZ247IH0KLSAgICB8IERJVl9BU1NJ
R04gICB7IEZSQUdfVkVSVF9PTkxZKCIvPSIsICQxLmxpbmUpOyAgICAgJCQubGluZSA9ICQxLmxp
bmU7ICQkLm9wID0gRU9wRGl2QXNzaWduOyB9Ci0gICAgfCBBRERfQVNTSUdOICAgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVP
cEFkZEFzc2lnbjsgfQotICAgIHwgU1VCX0FTU0lHTiAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BTdWJBc3NpZ247IH0K
KyAgICA6IEVRVUFMICAgICAgICB7ICQkLm9wID0gRU9wQXNzaWduOyB9CisgICAgfCBNVUxfQVNT
SUdOICAgeyAkJC5vcCA9IEVPcE11bEFzc2lnbjsgfQorICAgIHwgRElWX0FTU0lHTiAgIHsgJCQu
b3AgPSBFT3BEaXZBc3NpZ247IH0KKyAgICB8IEFERF9BU1NJR04gICB7ICQkLm9wID0gRU9wQWRk
QXNzaWduOyB9CisgICAgfCBTVUJfQVNTSUdOICAgeyAkJC5vcCA9IEVPcFN1YkFzc2lnbjsgfQog
ICAgIDsKIAogZXhwcmVzc2lvbgpAQCAtOTQwLDkgKzk0MSw5IEBAIGV4cHJlc3Npb24KICAgICAg
ICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCBleHByZXNzaW9uIENPTU1BIGFzc2lnbm1lbnRfZXhw
cmVzc2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCQx
LCAkMywgJDIubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bW1hKCQxLCAkMywgQDIpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiLCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlP
cEVycm9yKEAyLCAiLCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAk
JCA9ICQzOwogICAgICAgICB9CkBAIC05NzAsMTMgKzk3MSwxMyBAQCBkZWNsYXJhdGlvbgogICAg
ICAgICAgICAgY29uc3QgVFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJhbShpKTsK
ICAgICAgICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUocGFyYW0ubmFtZSwg
KnBhcmFtLnR5cGUpOworICAgICAgICAgICAgICAgIFRWYXJpYWJsZSB2YXJpYWJsZShwYXJhbS5u
YW1lLCAqcGFyYW0udHlwZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcHJv
dG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2
YXJpYWJsZS0+Z2V0TmFtZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKSwgJDEubGlu
ZSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdy
b3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZh
cmlhYmxlLmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLmdldE5hbWUoKSwgdmFyaWFibGUuZ2V0VHlw
ZSgpLCBAMSksIEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
Z3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wo
MCwgIiIsICpwYXJhbS50eXBlLCAkMS5saW5lKSwgJDEubGluZSk7CisgICAgICAgICAgICAgICAg
cHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBl
LCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgQDEp
LCBAMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC05OTIsMTEgKzk5
MywxMSBAQCBkZWNsYXJhdGlvbgogICAgIH0KICAgICB8IFBSRUNJU0lPTiBwcmVjaXNpb25fcXVh
bGlmaWVyIHR5cGVfc3BlY2lmaWVyX25vX3ByZWMgU0VNSUNPTE9OIHsKICAgICAgICAgaWYgKCgk
MiA9PSBFYnBIaWdoKSAmJiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFE
RVIpICYmICFjb250ZXh0LT5mcmFnbWVudFByZWNpc2lvbkhpZ2gpIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCQxLmxpbmUsICJwcmVjaXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFn
bWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAi
cHJlY2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVyIiwgImhpZ2hwIik7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KCFjb250ZXh0LT5zeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKCAkMywgJDIgKSkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImlsbGVnYWwgdHlwZSBhcmd1bWVu
dCBmb3IgZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlw
ZSkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJpbGxlZ2FsIHR5cGUgYXJndW1l
bnQgZm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCQzLnR5
cGUpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAg
ICAkJCA9IDA7CkBAIC0xMDE2LDEyICsxMDE3LDEyIEBAIGZ1bmN0aW9uX3Byb3RvdHlwZQogICAg
ICAgICBURnVuY3Rpb24qIHByZXZEZWMgPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24qPihjb250ZXh0
LT5zeW1ib2xUYWJsZS5maW5kKCQxLT5nZXRNYW5nbGVkTmFtZSgpKSk7CiAgICAgICAgIGlmIChw
cmV2RGVjKSB7CiAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UmV0dXJuVHlwZSgpICE9ICQx
LT5nZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5s
aW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBl
IiwgJDEtPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcihAMiwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUg
c2FtZSByZXR1cm4gdHlwZSIsICQxLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7
CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmV2RGVjLT5nZXRQYXJhbUNvdW50KCk7
ICsraSkgewogICAgICAgICAgICAgICAgIGlmIChwcmV2RGVjLT5nZXRQYXJhbShpKS50eXBlLT5n
ZXRRdWFsaWZpZXIoKSAhPSAkMS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm92ZXJsb2FkZWQg
ZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXIgcXVhbGlmaWVycyIsICQxLT5n
ZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAyLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRo
ZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgJDEtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1
YWxpZmllclN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEwMzMsNyArMTAzNCw2IEBA
IGZ1bmN0aW9uX3Byb3RvdHlwZQogICAgICAgICAvLyBiZWluZyByZWRlY2xhcmVkLiAgU28sIHBh
c3MgYmFjayB1cCB0aGlzIGRlY2xhcmF0aW9uLCBub3QgdGhlIG9uZSBpbiB0aGUgc3ltYm9sIHRh
YmxlLgogICAgICAgICAvLwogICAgICAgICAkJC5mdW5jdGlvbiA9ICQxOwotICAgICAgICAkJC5s
aW5lID0gJDIubGluZTsKIAogICAgICAgICAvLyBXZSdyZSBhdCB0aGUgaW5uZXIgc2NvcGUgbGV2
ZWwgb2YgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzIGFuZCBib2R5IHN0YXRlbWVudC4KICAgICAg
ICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUgdG8gdGhlIHN1cnJvdW5kaW5nIHNjb3Bl
IGluc3RlYWQuCkBAIC0xMDY5LDcgKzEwNjksNyBAQCBmdW5jdGlvbl9oZWFkZXJfd2l0aF9wYXJh
bWV0ZXJzCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhpcyBwYXJhbWV0ZXIgPiBm
aXJzdCBpcyB2b2lkCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
JDIubGluZSwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSci
LCAidm9pZCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5ub3QgYmUgYW4g
YXJndW1lbnQgdHlwZSBleGNlcHQgZm9yICcodm9pZCknIiwgInZvaWQiKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGRlbGV0ZSAkMy5wYXJhbS50eXBlOwog
ICAgICAgICB9IGVsc2UgewpAQCAtMTA4MywxMSArMTA4MywxMSBAQCBmdW5jdGlvbl9oZWFkZXJf
d2l0aF9wYXJhbWV0ZXJzCiBmdW5jdGlvbl9oZWFkZXIKICAgICA6IGZ1bGx5X3NwZWNpZmllZF90
eXBlIElERU5USUZJRVIgTEVGVF9QQVJFTiB7CiAgICAgICAgIGlmICgkMS5xdWFsaWZpZXIgIT0g
RXZxR2xvYmFsICYmICQxLnF1YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJubyBxdWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0
aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAyLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZvciBmdW5jdGlv
biByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gbWFrZSBzdXJlIGEg
c2FtcGxlciBpcyBub3QgaW52b2x2ZWQgYXMgd2VsbC4uLgotICAgICAgICBpZiAoY29udGV4dC0+
c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBhcyBhIHByb3Rv
dHlwZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCByZWN1cnNpb24pCkBAIC0x
MTAyLDMzICsxMTAyLDMxIEBAIGZ1bmN0aW9uX2hlYWRlcgogCiBwYXJhbWV0ZXJfZGVjbGFyYXRv
cgogICAgIC8vIFR5cGUgKyBuYW1lCi0gICAgOiB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIHsK
KyAgICA6IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgewogICAgICAgICBpZiAoJDEudHlwZSA9
PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiaWxsZWdh
bCB1c2Ugb2YgdHlwZSAndm9pZCciLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoQDIsICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsICQyLnN0cmlu
Zy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3Ry
aW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMiwgKiQyLnN0
cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRQYXJhbWV0
ZXIgcGFyYW0gPSB7JDIuc3RyaW5nLCBuZXcgVFR5cGUoJDEpfTsKLSAgICAgICAgJCQubGluZSA9
ICQyLmxpbmU7CiAgICAgICAgICQkLnBhcmFtID0gcGFyYW07CiAgICAgfQotICAgIHwgdHlwZV9z
cGVjaWZpZXIgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdI
VF9CUkFDS0VUIHsKKyAgICB8IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VU
IGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIC8vIENoZWNrIHRo
YXQgd2UgY2FuIG1ha2UgYW4gYXJyYXkgb3V0IG9mIHRoaXMgdHlwZQotICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMy5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAzLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMi5s
aW5lLCAqJDIuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVj
ayhAMiwgKiQyLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAg
ICAgICAgaW50IHNpemU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNr
KCQzLmxpbmUsICQ0LCBzaXplKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9y
Q2hlY2soQDMsICQ0LCBzaXplKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgJDEuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAKICAgICAgICAgVFR5cGUqIHR5cGUgPSBu
ZXcgVFR5cGUoJDEpOwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAkMi5zdHJpbmcsIHR5
cGUgfTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxpbmU7CiAgICAgICAgICQkLnBhcmFtID0gcGFy
YW07CiAgICAgfQogICAgIDsKQEAgLTExNDQsMTQgKzExNDIsMTQgQEAgcGFyYW1ldGVyX2RlY2xh
cmF0aW9uCiAgICAgLy8KICAgICA6IHR5cGVfcXVhbGlmaWVyIHBhcmFtZXRlcl9xdWFsaWZpZXIg
cGFyYW1ldGVyX2RlY2xhcmF0b3IgewogICAgICAgICAkJCA9ICQzOwotICAgICAgICBpZiAoY29u
dGV4dC0+cGFyYW1FcnJvckNoZWNrKCQzLmxpbmUsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFt
LnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKEAzLCAkMS5xdWFs
aWZpZXIsICQyLCAkJC5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICB9CiAgICAgfCBwYXJhbWV0ZXJfcXVhbGlmaWVyIHBhcmFtZXRlcl9kZWNsYXJhdG9y
IHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBs
ZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxLCAqJDIucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5wYXJhbS50eXBl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQt
PnBhcmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMiwgRXZxVGVtcG9yYXJ5
LCAkMSwgJCQucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgfQogICAgIC8vCkBAIC0xMTU5LDE0ICsxMTU3LDE0IEBAIHBhcmFtZXRlcl9kZWNsYXJhdGlv
bgogICAgIC8vCiAgICAgfCB0eXBlX3F1YWxpZmllciBwYXJhbWV0ZXJfcXVhbGlmaWVyIHBhcmFt
ZXRlcl90eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDM7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5wYXJhbUVycm9yQ2hlY2soJDMubGluZSwgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0u
dHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soQDMsICQxLnF1YWxp
ZmllciwgJDIsICQkLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgIH0KICAgICB8IHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX3R5cGVfc3BlY2lm
aWVyIHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNh
bXBsZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxLCAqJDIucGFyYW0udHlwZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5wYXJhbS50
eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50
eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMiwgRXZxVGVtcG9y
YXJ5LCAkMSwgJCQucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgfQogICAgIDsKQEAgLTExOTcsODMgKzExOTUsODMgQEAgaW5pdF9kZWNsYXJhdG9yX2xp
c3QKICAgICA6IHNpbmdsZV9kZWNsYXJhdGlvbiB7CiAgICAgICAgICQkID0gJDE7CiAgICAgfQot
ICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiB7CisgICAgfCBpbml0
X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIHsKICAgICAgICAgaWYgKCQxLnR5cGUu
dHlwZSA9PSBFYnRJbnZhcmlhbnQgJiYgISQzLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoJDMubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJl
ZCBhcyBpbnZhcmlhbnQiLCAkMy5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDMsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50
IiwgJDMuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQzLnN0cmluZywgVFR5cGUoJDEudHlwZSksICQzLmxp
bmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
Z3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCBzeW1ib2wsICQzLmxpbmUpOworICAgICAgICBU
SW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAs
ICokMy5zdHJpbmcsIFRUeXBlKCQxLnR5cGUpLCBAMyk7CisgICAgICAgICQkLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUs
IHN5bWJvbCwgQDMpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soJDMubGluZSwgJCQudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkJC50eXBlKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JD
aGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAkJC50eXBlLCBm
YWxzZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgVFZhcmlh
YmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVj
aygkMy5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5ub25Jbml0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywgJCQudHlwZSwgdmFyaWFi
bGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoc3ltYm9s
ICYmIHZhcmlhYmxlKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5p
cXVlSWQoKSk7CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJ
RklFUiBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAgIHwgaW5pdF9k
ZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tF
VCB7CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAk
MS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAo
Y29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkMS50
eXBlLCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2so
QDMsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogCiAgICAgICAgICQkID0gJDE7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
VHlwZUVycm9yQ2hlY2soJDQubGluZSwgJDEudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZp
ZXJFcnJvckNoZWNrKCQ0LmxpbmUsICQxLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlUeXBlRXJyb3JDaGVjayhANCwgJDEudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJF
cnJvckNoZWNrKEA0LCAkMS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAkMS50eXBlLnNldEFycmF5KHRydWUpOwogICAg
ICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5h
cnJheUVycm9yQ2hlY2soJDQubGluZSwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQor
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhANCwgKiQzLnN0cmluZywg
JDEudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgfQogICAgIH0KLSAgICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENPTU1BIElERU5U
SUZJRVIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQx
LnR5cGUpKQorICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZU
X0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAgICAgICAgaWYg
KGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0
Q29uc3RFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQorICAg
ICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywg
JDEudHlwZSwgdHJ1ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAg
ICAgJCQgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygk
NC5saW5lLCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDQu
bGluZSwgJDEudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNr
KEA0LCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDQsICQx
LnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6
ZUVycm9yQ2hlY2soJDQubGluZSwgJDUsIHNpemUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmFycmF5U2l6ZUVycm9yQ2hlY2soQDQsICQ1LCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkMS50eXBlLnNldEFycmF5KHRydWUsIHNpemUp
OwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgICAgICBpZiAo
Y29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCQ0LmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHZh
cmlhYmxlKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soQDQsICok
My5zdHJpbmcsICQxLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlID0gVFR5cGUoJDEudHlwZSk7CiAgICAg
ICAgICAgICB0eXBlLnNldEFycmF5U2l6ZShzaXplKTsKLSAgICAgICAgICAgICQkLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5v
ZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+
Z2V0VW5pcXVlSWQoKSA6IDAsICokMy5zdHJpbmcsIHR5cGUsICQzLmxpbmUpLCAkMy5saW5lKTsK
KyAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5n
cm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1i
b2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICokMy5zdHJpbmcsIHR5
cGUsIEAzKSwgQDMpOwogICAgICAgICB9CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xp
c3QgQ09NTUEgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAgIHwg
aW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBFUVVBTCBpbml0aWFsaXplciB7
CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkMS50
eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAkJCA9ICQx
OwogCiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRl
eHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMy5saW5lLCAqJDMuc3RyaW5nLCAkMS50eXBlLCAkNSwg
aW50ZXJtTm9kZSkpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIo
QDMsICokMy5zdHJpbmcsICQxLnR5cGUsICQ1LCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgIC8vIGJ1aWxkIHRoZSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24K
ICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBpZiAoaW50ZXJtTm9kZSkKLSAgICAgICAgJCQu
aW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEu
aW50ZXJtTm9kZSwgaW50ZXJtTm9kZSwgJDQubGluZSk7CisgICAgICAgICQkLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUs
IGludGVybU5vZGUsIEA0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAkJC5p
bnRlcm1BZ2dyZWdhdGUgPSAkMS5pbnRlcm1BZ2dyZWdhdGU7CiAgICAgICAgIH0gZWxzZSB7CkBA
IC0xMjg2LDc5ICsxMjg0LDc5IEBAIGluaXRfZGVjbGFyYXRvcl9saXN0CiBzaW5nbGVfZGVjbGFy
YXRpb24KICAgICA6IGZ1bGx5X3NwZWNpZmllZF90eXBlIHsKICAgICAgICAgJCQudHlwZSA9ICQx
OwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFr
ZUFnZ3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgk
MSksICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCgwLCAiIiwgVFR5cGUoJDEpLCBAMSksIEAxKTsKICAgICB9Ci0gICAgfCBmdWxseV9z
cGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIHsKLSAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9s
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgk
MSksICQyLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgIHwgZnVsbHlfc3Bl
Y2lmaWVkX3R5cGUgaWRlbnRpZmllciB7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEp
LCBAMik7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDIubGluZSwgJCQudHlwZSkpCisgICAgICAg
IGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkJC50eXBlKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9u
SW5pdENvbnN0RXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAyLCAqJDIuc3Ry
aW5nLCAkJC50eXBlLCBmYWxzZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgICQkLnR5cGUgPSAkMTsKIAogICAgICAgICBUVmFyaWFi
bGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNr
KCQyLmxpbmUsICokMi5zdHJpbmcsICQkLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPm5vbkluaXRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJs
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmICh2YXJpYWJs
ZSAmJiBzeW1ib2wpCiAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlx
dWVJZCgpKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIExF
RlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGlu
ZSwgInVuc2l6ZWQgYXJyYXkgZGVjbGFyYXRpb25zIG5vdCBzdXBwb3J0ZWQiLCAkMi5zdHJpbmct
PmNfc3RyKCkpOworICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmllciBMRUZUX0JS
QUNLRVQgUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAidW5zaXpl
ZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIsICQyLnN0cmluZy0+Y19zdHIoKSk7
CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUSW50ZXJtU3ltYm9sKiBz
eW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIFRU
eXBlKCQxKSwgJDIubGluZSk7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgJDIubGluZSk7CisgICAgICAgIFRJ
bnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
KiQyLnN0cmluZywgVFR5cGUoJDEpLCBAMik7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAg
ICAkJC50eXBlID0gJDE7CiAgICAgfQotICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJ
RklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAg
ICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIGNvbnN0YW50
X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIFRUeXBlIHR5cGUgPSBUVHlwZSgk
MSk7CiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJy
b3JDaGVjaygkMi5saW5lLCAkNCwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNp
emVFcnJvckNoZWNrKEAyLCAkNCwgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwotICAgICAgICBUSW50ZXJtU3lt
Ym9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJp
bmcsIHR5cGUsICQyLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgICAgICBU
SW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAs
ICokMi5zdHJpbmcsIHR5cGUsIEAyKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgIAot
ICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMi5saW5lLCAk
MSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAk
MSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRl
eHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZywgJDEsIHRydWUp
KQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMiwgKiQyLnN0
cmluZywgJDEsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAg
ICAgICQkLnR5cGUgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JD
aGVjaygkMy5saW5lLCAkMSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCQz
LmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDMs
ICQxKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBp
bnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQz
LmxpbmUsICQ0LCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJv
ckNoZWNrKEAzLCAkNCwgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogCiAgICAgICAgICAgICAkMS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgICAgIFRW
YXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJy
b3JDaGVjaygkMy5saW5lLCAqJDIuc3RyaW5nLCAkMSwgdmFyaWFibGUpKQorICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhAMywgKiQyLnN0cmluZywgJDEsIHZhcmlhYmxl
KSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBpZiAo
dmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFyaWFi
bGUtPmdldFVuaXF1ZUlkKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHwgZnVsbHlfc3BlY2lm
aWVkX3R5cGUgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICB8IGZ1bGx5
X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgRVFVQUwgaW5pdGlhbGl6ZXIgeworICAgICAgICBp
ZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhAMiwgJDEpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQkLnR5cGUgPSAkMTsKIAogICAgICAg
ICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRl
SW5pdGlhbGl6ZXIoJDIubGluZSwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkgewor
ICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcihAMiwgKiQyLnN0cmluZywg
JDEsICQ0LCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAvLwogICAgICAgICAvLyBCdWlsZCBpbnRl
cm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAgICAgICAgLy8KICAgICAgICAgICAgIGlmKGludGVy
bU5vZGUpCi0gICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgJDMubGluZSk7CisgICAgICAgICAg
ICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dy
ZWdhdGUoaW50ZXJtTm9kZSwgQDMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICQkLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMzY3LDExOCAr
MTM2NSw1MCBAQCBzaW5nbGVfZGVjbGFyYXRpb24KICAgICAgICAgfQogICAgIH0KICAgICB8IElO
VkFSSUFOVCBJREVOVElGSUVSIHsKLSAgICAgICAgVkVSVEVYX09OTFkoImludmFyaWFudCBkZWNs
YXJhdGlvbiIsICQxLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVj
aygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlh
bnQgdmFyeWluZyIpKQorICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9u
IiwgQDEpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQudHlwZS5zZXRCYXNpYyhF
YnRJbnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICQyLmxpbmUpOworICAgICAgICAk
JC50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgQDIp
OwogICAgICAgICBpZiAoISQyLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoJDIubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZh
cmlhbnQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDIsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgJDIuc3Ry
aW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAgICAgfQogICAg
ICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJCQu
dHlwZSksICQyLmxpbmUpOwotICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAkMi5saW5lKTsKKyAgICAgICAg
ICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1i
b2woMCwgKiQyLnN0cmluZywgVFR5cGUoJCQudHlwZSksIEAyKTsKKyAgICAgICAgICAgICQkLmlu
dGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJv
bCwgQDIpOwogICAgICAgICB9CiAgICAgfQotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUg
cGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vICAgIHwgYnVmZmVyX3NwZWNpZmllciB7Ci0v
LyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKLS8vICAgIH0KICAgICA7CiAKLS8vIEdy
YW1tYXIgTm90ZTogIE5vICdlbnVtJywgb3IgJ3R5cGVkZWYnLgotCi0vLwotLy8gUGxhY2UgaG9s
ZGVyIGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vJXR5cGUgPGludGVybT4g
YnVmZmVyX2RlY2xhcmF0aW9uCi0vLyV0eXBlIDxpbnRlcm0udHlwZT4gYnVmZmVyX3NwZWNpZmll
ciBpbnB1dF9vcl9vdXRwdXQgYnVmZmVyX2RlY2xhcmF0aW9uX2xpc3QKLS8vYnVmZmVyX3NwZWNp
ZmllcgotLy8gICAgOiBpbnB1dF9vcl9vdXRwdXQgTEVGVF9CUkFDRSBidWZmZXJfZGVjbGFyYXRp
b25fbGlzdCBSSUdIVF9CUkFDRSB7Ci0vLyAgICB9Ci0vLyAgICA7Ci0vLwotLy9pbnB1dF9vcl9v
dXRwdXQKLS8vICAgIDogSU5QVVQgewotLy8gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJv
ckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImlu
cHV0IikpCi0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLS8vICAgICAgICBVTlBB
Q0tfT05MWSgiaW5wdXQiLCAkMS5saW5lKTsKLS8vICAgICAgICAkJC5xdWFsaWZpZXIgPSBFdnFJ
bnB1dDsKLS8vICAgIH0KLS8vICAgIHwgT1VUUFVUIHsKLS8vICAgICAgICBpZiAoY29udGV4dC0+
Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCksICJvdXRwdXQiKSkKLS8vICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotLy8g
ICAgICAgIFBBQ0tfT05MWSgib3V0cHV0IiwgJDEubGluZSk7Ci0vLyAgICAgICAgJCQucXVhbGlm
aWVyID0gRXZxT3V0cHV0OwotLy8gICAgfQotLy8gICAgOwotCi0vLwotLy8gUGxhY2UgaG9sZGVy
IGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vYnVmZmVyX2RlY2xhcmF0aW9u
X2xpc3QKLS8vICAgIDogYnVmZmVyX2RlY2xhcmF0aW9uIHsKLS8vICAgIH0KLS8vICAgIHwgYnVm
ZmVyX2RlY2xhcmF0aW9uX2xpc3QgYnVmZmVyX2RlY2xhcmF0aW9uIHsKLS8vICAgIH0KLS8vICAg
IDsKLQotLy8KLS8vIElucHV0L291dHB1dCBzZW1hbnRpY3M6Ci0vLyAgIGZsb2F0IG11c3QgYmUg
MTYgb3IgMzIgYml0cwotLy8gICBmbG9hdCBhbGlnbm1lbnQgcmVzdHJpY3Rpb25zPwotLy8gICBj
aGVjayBmb3Igb25seSBvbmUgaW5wdXQgYW5kIG9ubHkgb25lIG91dHB1dAotLy8gICBzdW0gb2Yg
Yml0ZmllbGRzIGhhcyB0byBiZSBtdWx0aXBsZSBvZiAzMgotLy8KLQotLy8KLS8vIFBsYWNlIGhv
bGRlciBmb3IgdGhlIHBhY2svdW5wYWNrIGxhbmd1YWdlcy4KLS8vCi0vL2J1ZmZlcl9kZWNsYXJh
dGlvbgotLy8gICAgOiB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIENPTE9OIGNvbnN0YW50X2V4
cHJlc3Npb24gU0VNSUNPTE9OIHsKLS8vICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJv
ckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcsIGNvbnRleHQpKQotLy8gICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgJCQudmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCQy
LnN0cmluZywgJDEpOwotLy8gICAgICAgIGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2Vy
dCgqJCQudmFyaWFibGUpKSB7Ci0vLyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUs
ICJyZWRlZmluaXRpb24iLCAkJC52YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotLy8gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgICAgIC8vIGRvbid0IGhhdmUg
dG8gZGVsZXRlICQkLnZhcmlhYmxlLCB0aGUgcG9vbCBwb3Agd2lsbCB0YWtlIGNhcmUgb2YgaXQK
LS8vICAgICAgICB9Ci0vLyAgICB9Ci0vLyAgICA7Ci0KIGZ1bGx5X3NwZWNpZmllZF90eXBlCiAg
ICAgOiB0eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDE7CiAKICAgICAgICAgaWYgKCQx
LmFycmF5KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAibm90IHN1cHBv
cnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDEsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkMS5zZXRBcnJheShmYWxzZSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgfCB0eXBlX3F1YWxpZmllciB0eXBlX3NwZWNpZmllciAgewogICAg
ICAgICBpZiAoJDIuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUs
ICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMiwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQyLnNldEFycmF5KGZh
bHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS5xdWFsaWZpZXIgPT0gRXZxQXR0cmli
dXRlICYmCiAgICAgICAgICAgICAoJDIudHlwZSA9PSBFYnRCb29sIHx8ICQyLnR5cGUgPT0gRWJ0
SW50KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgImNhbm5vdCBiZSBi
b29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAyLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlm
aWVyU3RyaW5nKCQxLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9CiAgICAgICAgIGlmICgoJDEucXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8
fCAkMS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ091dCkgJiYKICAgICAgICAgICAgICgkMi50eXBl
ID09IEVidEJvb2wgfHwgJDIudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3Ry
aW5nKCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5u
b3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgJCQgPSAk
MjsKQEAgLTE0ODgsMzQgKzE0MTgsMzQgQEAgZnVsbHlfc3BlY2lmaWVkX3R5cGUKIAogdHlwZV9x
dWFsaWZpZXIKICAgICA6IENPTlNUX1FVQUwgewotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lk
LCBFdnFDb25zdCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUNv
bnN0LCBAMSk7CiAgICAgfQogICAgIHwgQVRUUklCVVRFIHsKLSAgICAgICAgVkVSVEVYX09OTFko
ImF0dHJpYnV0ZSIsICQxLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JD
aGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJhdHRy
aWJ1dGUiKSkKKyAgICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsIEAxKTsKKyAgICAgICAg
aWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUsICQxLmxpbmUp
OworICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUsIEAxKTsKICAgICB9
CiAgICAgfCBWQVJZSU5HIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2so
JDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIp
KQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJU
RVhfU0hBREVSKQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ091
dCwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5n
T3V0LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQs
IEV2cVZhcnlpbmdJbiwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lk
LCBFdnFWYXJ5aW5nSW4sIEAxKTsKICAgICB9CiAgICAgfCBJTlZBUklBTlQgVkFSWUlORyB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAg
IGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJU
RVhfU0hBREVSKQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50
VmFyeWluZ091dCwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBF
dnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICQk
LnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdJbiwgJDEubGluZSk7CisgICAg
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nSW4sIEAxKTsK
ICAgICB9CiAgICAgfCBVTklGT1JNIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9y
Q2hlY2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5p
Zm9ybSIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlm
b3JtLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVW5pZm9ybSwg
QDEpOwogICAgIH0KICAgICA7CiAKQEAgLTE1MjUsNyArMTQ1NSw3IEBAIHR5cGVfc3BlY2lmaWVy
CiAKICAgICAgICAgaWYgKCQkLnByZWNpc2lvbiA9PSBFYnBVbmRlZmluZWQpIHsKICAgICAgICAg
ICAgICQkLnByZWNpc2lvbiA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmdldERlZmF1bHRQcmVjaXNp
b24oJDEudHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVj
aygkMS5saW5lLCAkJC5wcmVjaXNpb24sICQxLnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29u
dGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVjayhAMSwgJCQucHJlY2lzaW9uLCAkMS50eXBlKSkgewog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMTU1NSwxMSArMTQ4NSwxMSBAQCB0eXBlX3NwZWNpZmllcl9ub19wcmVjCiAgICAg
fCB0eXBlX3NwZWNpZmllcl9ub25hcnJheSBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lv
biBSSUdIVF9CUkFDS0VUIHsKICAgICAgICAgJCQgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5hcnJheVR5cGVFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygkMi5saW5lLCAkMywgc2l6ZSkpCisg
ICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhAMiwgJDMsIHNpemUp
KQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkLnNl
dEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICB9CkBAIC0xNTY5LDExOCArMTQ5OSwxMDUgQEAg
dHlwZV9zcGVjaWZpZXJfbm9fcHJlYwogdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICAgICA6IFZP
SURfVFlQRSB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVi
dFZvaWQsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBGTE9BVF9UWVBFIHsKICAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVh
bCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCBAMSk7CiAg
ICAgfQogICAgIHwgSU5UX1RZUEUgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQk
LnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IEJPT0xfVFlQRSB7CiAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
Qm9vbCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWws
IEAxKTsKICAgICB9Ci0vLyAgICB8IFVOU0lHTkVEIElOVF9UWVBFIHsKLS8vICAgICAgICBQQUNL
X1VOUEFDS19PTkxZKCJ1bnNpZ25lZCIsICQxLmxpbmUpOwotLy8gICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLS8vICAgICAgICAkJC5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICQxLmxp
bmUpOwotLy8gICAgfQogICAgIHwgVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dy
ZWdhdGUoMik7CiAgICAgfQogICAgIHwgVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOwor
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRB
Z2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwgVkVDNCB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUp
OworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5z
ZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgQlZFQzIgewogICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICQxLmxp
bmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCBAMSk7CiAgICAgICAgICQk
LnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAgfCBCVkVDMyB7CiAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgJDEu
bGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsIEAxKTsKICAgICAgICAg
JCQuc2V0QWdncmVnYXRlKDMpOwogICAgIH0KICAgICB8IEJWRUM0IHsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAk
MS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgSVZFQzIgewogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoMik7CiAgICAgfQogICAgIHwgSVZFQzMgewogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwgSVZFQzQgewogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAg
ICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgTUFUUklYMiB7Ci0gICAgICAgIEZS
QUdfVkVSVF9PTkxZKCJtYXQyIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOwor
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRB
Z2dyZWdhdGUoMiwgdHJ1ZSk7CiAgICAgfQogICAgIHwgTUFUUklYMyB7Ci0gICAgICAgIEZSQUdf
VkVSVF9PTkxZKCJtYXQzIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dy
ZWdhdGUoMywgdHJ1ZSk7CiAgICAgfQogICAgIHwgTUFUUklYNCB7Ci0gICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJtYXQ0IiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdh
dGUoNCwgdHJ1ZSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJEIHsKLSAgICAgICAgRlJBR19WRVJU
X09OTFkoInNhbXBsZXIyRCIsICQxLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBj
b250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1w
b3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgJDEubGluZSk7
CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgQDEpOwogICAgIH0KICAg
ICB8IFNBTVBMRVJDVUJFIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXJDdWJlIiwg
JDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0U2FtcGxlckN1YmUsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRC
YXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IFNBTVBMRVJfRVhU
RVJOQUxfT0VTIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
T0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigk
MS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0
ZXJuYWxPRVMiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQot
ICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckV4dGVybmFsT0VTIiwgJDEubGluZSk7CiAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMo
RWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJE
UkVDVCB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl90
ZXh0dXJlX3JlY3RhbmdsZSIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5l
LCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVjdCIpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJzYW1wbGVyMkRSZWN0IiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1YWwsIEAx
KTsKICAgICB9CiAgICAgfCBzdHJ1Y3Rfc3BlY2lmaWVyIHsKLSAgICAgICAgRlJBR19WRVJUX09O
TFkoInN0cnVjdCIsICQxLmxpbmUpOwogICAgICAgICAkJCA9ICQxOwogICAgICAgICAkJC5xdWFs
aWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7CiAgICAgfQpAQCAtMTY5MSwyOSArMTYwOCwyOSBAQCB0eXBlX3NwZWNp
Zmllcl9ub25hcnJheQogICAgICAgICAvLwogICAgICAgICBUVHlwZSYgc3RydWN0dXJlID0gc3Rh
dGljX2Nhc3Q8VFZhcmlhYmxlKj4oJDEuc3ltYm9sKS0+Z2V0VHlwZSgpOwogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgcXVh
bCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwgQDEpOwog
ICAgICAgICAkJC51c2VyRGVmID0gJnN0cnVjdHVyZTsKICAgICB9CiAgICAgOwogCiBzdHJ1Y3Rf
c3BlY2lmaWVyCi0gICAgOiBTVFJVQ1QgSURFTlRJRklFUiBMRUZUX0JSQUNFIHsgaWYgKGNvbnRl
eHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oJDIubGluZSwgKiQyLnN0cmluZykpIGNvbnRleHQt
PnJlY292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZykp
CisgICAgOiBTVFJVQ1QgaWRlbnRpZmllciBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQtPmVudGVy
U3RydWN0RGVjbGFyYXRpb24oQDIsICokMi5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IH0g
c3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0UgeworICAgICAgICBpZiAoY29udGV4
dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCQ1
LCAqJDIuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcg
VFN0cnVjdHVyZSgkMi5zdHJpbmcsICQ1KSk7CiAgICAgICAgIFRWYXJpYWJsZSogdXNlclR5cGVE
ZWYgPSBuZXcgVFZhcmlhYmxlKCQyLnN0cmluZywgKnN0cnVjdHVyZSwgdHJ1ZSk7CiAgICAgICAg
IGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgqdXNlclR5cGVEZWYpKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAicmVkZWZpbml0aW9uIiwgJDIuc3RyaW5n
LT5jX3N0cigpLCAic3RydWN0Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInJl
ZGVmaW5pdGlvbiIsICQyLnN0cmluZy0+Y19zdHIoKSwgInN0cnVjdCIpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0
cnVjdCwgRXZxVGVtcG9yYXJ5LCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3Ry
dWN0LCBFdnFUZW1wb3JhcnksIEAxKTsKICAgICAgICAgJCQudXNlckRlZiA9IHN0cnVjdHVyZTsK
ICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CiAgICAgfQotICAgIHwg
U1RSVUNUIExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigk
Mi5saW5lLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJh
dGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKLSAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBU
VHlwZSgkNCwgVFN0cmluZygiIikpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2
cVRlbXBvcmFyeSwgJDEubGluZSk7CisgICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSB7IGlmIChjb250
ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKEAyLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVj
b3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKKyAgICAgICAg
VFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZShOZXdQb29sVFN0cmlu
ZygiIiksICQ0KSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5
LCBAMSk7CiAgICAgICAgICQkLnVzZXJEZWYgPSBzdHJ1Y3R1cmU7CiAgICAgICAgIGNvbnRleHQt
PmV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwogICAgIH0KQEAgLTE3MjUsMTQgKzE2NDIsMTUgQEAg
c3RydWN0X2RlY2xhcmF0aW9uX2xpc3QKICAgICB9CiAgICAgfCBzdHJ1Y3RfZGVjbGFyYXRpb25f
bGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICQyLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCAkJC0+c2l6ZSgpOyArK2opIHsKLSAgICAgICAg
ICAgICAgICBpZiAoKCokJClbal0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKCokMilbaV0udHlw
ZS0+Z2V0RmllbGROYW1lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KCokMilbaV0ubGluZSwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3Ry
dWN0IiwgKCokMilbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkuY19zdHIoKSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgJDItPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBURmll
bGQqIGZpZWxkID0gKCokMilbaV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
ICQkLT5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIGlmICgoKiQkKVtqXS0+bmFtZSgp
ID09IGZpZWxkLT5uYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDIsICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxk
LT5uYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAkJC0+cHVz
aF9iYWNrKCgqJDIpW2ldKTsKKyAgICAgICAgICAgICQkLT5wdXNoX2JhY2soZmllbGQpOwogICAg
ICAgICB9CiAgICAgfQogICAgIDsKQEAgLTE3NDEsMTQgKzE2NTksMTQgQEAgc3RydWN0X2RlY2xh
cmF0aW9uCiAgICAgOiB0eXBlX3NwZWNpZmllciBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IFNFTUlD
T0xPTiB7CiAgICAgICAgICQkID0gJDI7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJv
ckNoZWNrKCQxLmxpbmUsICgqJDIpWzBdLnR5cGUtPmdldEZpZWxkTmFtZSgpLCAkMSkpIHsKKyAg
ICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNoZWNrKEAxLCAoKiQyKVswXS0+bmFtZSgpLCAk
MSkpIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICQkLT5zaXplKCk7ICsraSkgewogICAgICAg
ICAgICAgLy8KICAgICAgICAgICAgIC8vIENhcmVmdWwgbm90IHRvIHJlcGxhY2UgYWxyZWFkeSBr
bm93biBhc3BlY3RzIG9mIHR5cGUsIGxpa2UgYXJyYXktbmVzcwogICAgICAgICAgICAgLy8KLSAg
ICAgICAgICAgIFRUeXBlKiB0eXBlID0gKCokJClbaV0udHlwZTsKKyAgICAgICAgICAgIFRUeXBl
KiB0eXBlID0gKCokJClbaV0tPnR5cGUoKTsKICAgICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlw
ZSgkMS50eXBlKTsKICAgICAgICAgICAgIHR5cGUtPnNldE5vbWluYWxTaXplKCQxLnNpemUpOwog
ICAgICAgICAgICAgdHlwZS0+c2V0TWF0cml4KCQxLm1hdHJpeCk7CkBAIC0xNzU2LDI2ICsxNjc0
LDIzIEBAIHN0cnVjdF9kZWNsYXJhdGlvbgogCiAgICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBh
cnJheXMgb2YgYXJyYXlzCiAgICAgICAgICAgICBpZiAodHlwZS0+aXNBcnJheSgpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soJDEubGluZSwgJDEp
KQorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAxLCAk
MSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmICgkMS5hcnJheSkKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRB
cnJheVNpemUoJDEuYXJyYXlTaXplKTsKLSAgICAgICAgICAgIGlmICgkMS51c2VyRGVmKSB7Cisg
ICAgICAgICAgICBpZiAoJDEudXNlckRlZikKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRTdHJ1
Y3QoJDEudXNlckRlZi0+Z2V0U3RydWN0KCkpOwotICAgICAgICAgICAgICAgIHR5cGUtPnNldFR5
cGVOYW1lKCQxLnVzZXJEZWYtPmdldFR5cGVOYW1lKCkpOwotICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soJDEubGluZSwgKnR5
cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2so
QDEsICooKiQkKVtpXSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIDsKIAogc3RydWN0X2RlY2xhcmF0b3Jf
bGlzdAogICAgIDogc3RydWN0X2RlY2xhcmF0b3IgewotICAgICAgICAkJCA9IE5ld1Bvb2xUVHlw
ZUxpc3QoKTsKKyAgICAgICAgJCQgPSBOZXdQb29sVEZpZWxkTGlzdCgpOwogICAgICAgICAkJC0+
cHVzaF9iYWNrKCQxKTsKICAgICB9CiAgICAgfCBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IENPTU1B
IHN0cnVjdF9kZWNsYXJhdG9yIHsKQEAgLTE3ODQsMjYgKzE2OTksMjQgQEAgc3RydWN0X2RlY2xh
cmF0b3JfbGlzdAogICAgIDsKIAogc3RydWN0X2RlY2xhcmF0b3IKLSAgICA6IElERU5USUZJRVIg
ewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5z
dHJpbmcpKQorICAgIDogaWRlbnRpZmllciB7CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZl
ZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogCi0gICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVk
KTsKLSAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7Ci0gICAgICAgICQkLnR5cGUtPnNldEZpZWxk
TmFtZSgqJDEuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9p
ZCwgRWJwVW5kZWZpbmVkKTsKKyAgICAgICAgJCQgPSBuZXcgVEZpZWxkKHR5cGUsICQxLnN0cmlu
Zyk7CiAgICAgfQotICAgIHwgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVz
c2lvbiBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JD
aGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKKyAgICB8IGlkZW50aWZpZXIgTEVGVF9CUkFDS0VU
IGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGlmIChjb250ZXh0
LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJw
VW5kZWZpbmVkKTsKLSAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7Ci0gICAgICAgICQkLnR5cGUt
PnNldEZpZWxkTmFtZSgqJDEuc3RyaW5nKTsKLQotICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDIubGluZSwgJDMsIHNpemUpKQorICAg
ICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAg
ICAgICBpbnQgc2l6ZSA9IDA7CisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNo
ZWNrKEAzLCAkMywgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICQkLnR5cGUtPnNldEFycmF5U2l6ZShzaXplKTsKKyAgICAgICAgdHlwZS0+c2V0QXJyYXlT
aXplKHNpemUpOworCisgICAgICAgICQkID0gbmV3IFRGaWVsZCh0eXBlLCAkMS5zdHJpbmcpOwog
ICAgIH0KICAgICA7CiAKQEAgLTE4MzUsNyArMTc0OCw3IEBAIGNvbXBvdW5kX3N0YXRlbWVudAog
ICAgIHwgTEVGVF9CUkFDRSB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfSBzdGF0ZW1l
bnRfbGlzdCB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyB9IFJJR0hUX0JSQUNFIHsKICAg
ICAgICAgaWYgKCQzICE9IDApIHsKICAgICAgICAgICAgICQzLT5zZXRPcChFT3BTZXF1ZW5jZSk7
Ci0gICAgICAgICAgICAkMy0+c2V0RW5kTGluZSgkNS5saW5lKTsKKyAgICAgICAgICAgICQzLT5z
ZXRMaW5lKEAkKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQzOwogICAgIH0KQEAgLTE4NTks
NyArMTc3Miw3IEBAIGNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUKICAgICB8IExFRlRf
QlJBQ0Ugc3RhdGVtZW50X2xpc3QgUklHSFRfQlJBQ0UgewogICAgICAgICBpZiAoJDIpIHsKICAg
ICAgICAgICAgICQyLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAkMi0+c2V0RW5k
TGluZSgkMy5saW5lKTsKKyAgICAgICAgICAgICQyLT5zZXRMaW5lKEAkKTsKICAgICAgICAgfQog
ICAgICAgICAkJCA9ICQyOwogICAgIH0KQEAgLTE4NjcsMTAgKzE3ODAsMTAgQEAgY29tcG91bmRf
c3RhdGVtZW50X25vX25ld19zY29wZQogCiBzdGF0ZW1lbnRfbGlzdAogICAgIDogc3RhdGVtZW50
IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMSwg
MCk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoJDEs
IEAkKTsKICAgICB9CiAgICAgfCBzdGF0ZW1lbnRfbGlzdCBzdGF0ZW1lbnQgewotICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLCAkMiwgMCk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCBAJCk7
CiAgICAgfQogICAgIDsKIApAQCAtMTg4MSw5ICsxNzk0LDkgQEAgZXhwcmVzc2lvbl9zdGF0ZW1l
bnQKIAogc2VsZWN0aW9uX3N0YXRlbWVudAogICAgIDogSUYgTEVGVF9QQVJFTiBleHByZXNzaW9u
IFJJR0hUX1BBUkVOIHNlbGVjdGlvbl9yZXN0X3N0YXRlbWVudCB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5ib29sRXJyb3JDaGVjaygkMS5saW5lLCAkMykpCisgICAgICAgIGlmIChjb250ZXh0LT5i
b29sRXJyb3JDaGVjayhAMSwgJDMpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oJDMsICQ1LCAk
MS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9u
KCQzLCAkNSwgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTE5MDcsMTQgKzE4MjAsMTQgQEAgY29u
ZGl0aW9uCiAgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkMS0+Z2V0TGluZSgp
LCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQotICAgIHwgZnVs
bHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7CisgICAgfCBm
dWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVyIHsKICAgICAg
ICAgVEludGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0
cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCQyLmxpbmUsICQx
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRl
SW5pdGlhbGl6ZXIoJDIubGluZSwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoQDIsICokMi5zdHJpbmcsICQx
LCAkNCwgaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAkJCA9ICQ0OwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKQEAgLTE5MjYsMTkgKzE4MzksMTkgQEAg
Y29uZGl0aW9uCiBpdGVyYXRpb25fc3RhdGVtZW50CiAgICAgOiBXSElMRSBMRUZUX1BBUkVOIHsg
Y29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7
IH0gY29uZGl0aW9uIFJJR0hUX1BBUkVOIHN0YXRlbWVudF9ub19uZXdfc2NvcGUgewogICAgICAg
ICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAkNCwgMCwgJDYsICQxLmxpbmUpOworICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hpbGUsIDAsICQ0
LCAwLCAkNiwgQDEpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7CiAgICAg
fQogICAgIHwgRE8geyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0gc3RhdGVtZW50X3dp
dGhfc2NvcGUgV0hJTEUgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIFNFTUlDT0xP
TiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkOC5saW5lLCAkNikpCisg
ICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjayhAOCwgJDYpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZExvb3AoRUxvb3BEb1doaWxlLCAwLCAkNiwgMCwgJDMsICQ0LmxpbmUpOworICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRG9XaGlsZSwgMCwgJDYsIDAs
ICQzLCBANCk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAg
ICAgfCBGT1IgTEVGVF9QQVJFTiB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250
ZXh0LT5sb29wTmVzdGluZ0xldmVsOyB9IGZvcl9pbml0X3N0YXRlbWVudCBmb3JfcmVzdF9zdGF0
ZW1lbnQgUklHSFRfUEFSRU4gc3RhdGVtZW50X25vX25ld19zY29wZSB7CiAgICAgICAgIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLnBvcCgpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRMb29wKEVMb29wRm9yLCAkNCwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigk
NS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oJDUubm9kZTIpLCAkNywg
JDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxv
b3BGb3IsICQ0LCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCQ1Lm5vZGUxKSwgcmVp
bnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigkNS5ub2RlMiksICQ3LCBAMSk7CiAgICAgICAg
IC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAgOwpAQCAtMTk3NSwzOSAr
MTg4OCwzOSBAQCBmb3JfcmVzdF9zdGF0ZW1lbnQKIGp1bXBfc3RhdGVtZW50CiAgICAgOiBDT05U
SU5VRSBTRU1JQ09MT04gewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiY29udGludWUgc3Rh
dGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKEAxLCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIi
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsICQxLmxpbmUp
OworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGlu
dWUsIEAxKTsKICAgICB9CiAgICAgfCBCUkVBSyBTRU1JQ09MT04gewogICAgICAgICBpZiAoY29u
dGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigkMS5saW5lLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxs
b3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9w
QnJlYWssICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
cmFuY2goRU9wQnJlYWssIEAxKTsKICAgICB9CiAgICAgfCBSRVRVUk4gU0VNSUNPTE9OIHsKLSAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgJDEu
bGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BS
ZXR1cm4sIEAxKTsKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdl
dEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQx
LmxpbmUsICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJub24tdm9pZCBmdW5jdGlvbiBtdXN0
IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgUkVUVVJOIGV4cHJlc3Npb24gU0VNSUNPTE9O
IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVy
biwgJDIsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
cmFuY2goRU9wUmV0dXJuLCAkMiwgQDEpOwogICAgICAgICBjb250ZXh0LT5mdW5jdGlvblJldHVy
bnNWYWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBl
LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigkMS5saW5lLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJu
Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgInZvaWQgZnVuY3Rpb24gY2Fubm90
IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9IGVsc2UgaWYgKCooY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZSkg
IT0gJDItPmdldFR5cGUoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwg
ImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hp
bmcgdHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgfCBESVNDQVJEIFNFTUlDT0xPTiB7Ci0gICAgICAgIEZSQUdf
T05MWSgiZGlzY2FyZCIsICQxLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgJDEubGluZSk7CisgICAgICAgIEZSQUdfT05MWSgiZGlz
Y2FyZCIsIEAxKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNo
KEVPcEtpbGwsIEAxKTsKICAgICB9CiAgICAgOwogCkBAIC0yMDE5LDcgKzE5MzIsNyBAQCB0cmFu
c2xhdGlvbl91bml0CiAgICAgICAgIGNvbnRleHQtPnRyZWVSb290ID0gJCQ7CiAgICAgfQogICAg
IHwgdHJhbnNsYXRpb25fdW5pdCBleHRlcm5hbF9kZWNsYXJhdGlvbiB7Ci0gICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCAwKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMSwgJDIsIEAkKTsKICAg
ICAgICAgY29udGV4dC0+dHJlZVJvb3QgPSAkJDsKICAgICB9CiAgICAgOwpAQCAtMjA0MSw3ICsx
OTU0LDcgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAKICAgICAgICAgaWYgKGJ1aWx0
SW4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJidWls
dC1pbiBmdW5jdGlvbnMgY2Fubm90IGJlIHJlZGVmaW5lZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCku
Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImJ1aWx0LWluIGZ1bmN0
aW9ucyBjYW5ub3QgYmUgcmVkZWZpbmVkIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKQEAg
LTIwNTUsNyArMTk2OCw3IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgICAgIC8vCiAg
ICAgICAgICAgICAvLyBUaGVuIHRoaXMgZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5LgogICAg
ICAgICAgICAgLy8KLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJmdW5jdGlv
biBhbHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHki
LCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIHByZXZEZWMtPnNldERlZmluZWQoKTsKQEAgLTIw
NjUsMTEgKzE5NzgsMTEgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAvLwogICAgICAg
ICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAibWFpbiIpIHsKICAgICAgICAgICAgIGlmIChm
dW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpID4gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCQxLmxpbmUsICJmdW5jdGlvbiBjYW5ub3QgdGFrZSBhbnkgcGFyYW1ldGVyKHMpIiwg
ZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcihAMSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlv
bi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJuVHlw
ZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigkMS5saW5lLCAiIiwgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0
cmluZygpLCAibWFpbiBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCku
Z2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7
CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0yMDk3LDcgKzIwMTAsNyBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAg
ICAgICAgICAgLy8gSW5zZXJ0IHRoZSBwYXJhbWV0ZXJzIHdpdGggbmFtZSBpbiB0aGUgc3ltYm9s
IHRhYmxlLgogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKCEgY29udGV4
dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoJDEubGluZSwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1l
KCkuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAicmVk
ZWZpbml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICAgICBkZWxldGUgdmFy
aWFibGU7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjEwOCwxNCArMjAyMSwxNSBAQCBmdW5jdGlv
bl9kZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbU5vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxl
LT5nZXRVbmlxdWVJZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEubGluZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJp
YWJsZS0+Z2V0VHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEpOwogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCgwLCAiIiwgKnBhcmFtLnR5cGUsICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAg
ICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1O
b2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUs
IEAxKSwgQDEpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihwYXJhbU5vZGVzLCBFT3BQYXJhbWV0ZXJz
LCAkMS5saW5lKTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsIEAxKTsKICAgICAgICAgJDEuaW50ZXJt
QWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAgICAgY29udGV4dC0+bG9vcE5lc3RpbmdMZXZl
bCA9IDA7CiAgICAgfQpAQCAtMjEyMywxMiArMjAzNywxMiBAQCBmdW5jdGlvbl9kZWZpbml0aW9u
CiAgICAgICAgIC8vPz8gQ2hlY2sgdGhhdCBhbGwgcGF0aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0
dXJuIHR5cGUgIT0gdm9pZCA/CiAgICAgICAgIC8vICAgTWF5IGJlIGJlc3QgZG9uZSBhcyBwb3N0
IHByb2Nlc3MgcGhhc2Ugb24gaW50ZXJtZWRpYXRlIGNvZGUKICAgICAgICAgaWYgKGNvbnRleHQt
PmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQgJiYgISBjb250
ZXh0LT5mdW5jdGlvblJldHVybnNWYWx1ZSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
JDEubGluZSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlOiIsICIiLCAkMS5mdW5j
dGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEs
ICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAiIiwgJDEuZnVuY3Rpb24tPmdl
dE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0Fn
Z3JlZ2F0ZSgkMS5pbnRlcm1BZ2dyZWdhdGUsICQzLCAwKTsKLSAgICAgICAgY29udGV4dC0+aW50
ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQkLCBFT3BGdW5jdGlvbiwgJDEubGluZSk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50
ZXJtQWdncmVnYXRlLCAkMywgQCQpOworICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0
QWdncmVnYXRlT3BlcmF0b3IoJCQsIEVPcEZ1bmN0aW9uLCBAMSk7CiAgICAgICAgICQkLT5nZXRB
c0FnZ3JlZ2F0ZSgpLT5zZXROYW1lKCQxLmZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFtZSgpLmNfc3Ry
KCkpOwogICAgICAgICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0VHlwZSgkMS5mdW5jdGlvbi0+
Z2V0UmV0dXJuVHlwZSgpKTsKIApAQCAtMjEzNywxNSArMjA1MSwxNyBAQCBmdW5jdGlvbl9kZWZp
bml0aW9uCiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRPcHRpbWl6ZShjb250ZXh0
LT5wcmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRE
ZWJ1Zyhjb250ZXh0LT5wcmFnbWEoKS5kZWJ1Zyk7CiAKLSAgICAgICAgaWYgKCQzICYmICQzLT5n
ZXRBc0FnZ3JlZ2F0ZSgpKQotICAgICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldEVu
ZExpbmUoJDMtPmdldEFzQWdncmVnYXRlKCktPmdldEVuZExpbmUoKSk7Ci0KICAgICAgICAgY29u
dGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgfQogICAgIDsKIAogJSUKIAordm9pZCB5eWVy
cm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciog
cmVhc29uKSB7CisgICAgY29udGV4dC0+ZXJyb3IoKnl5bGxvYywgcmVhc29uLCAiIik7CisgICAg
Y29udGV4dC0+cmVjb3ZlcigpOworfQorCiBpbnQgZ2xzbGFuZ19wYXJzZShUUGFyc2VDb250ZXh0
KiBjb250ZXh0KSB7CiAgICAgcmV0dXJuIHl5cGFyc2UoY29udGV4dCk7CiB9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5j
cHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9nbHNsYW5nX2xleC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jbGlu
ZSAxNyAiLi9nbHNsYW5nLmwiCisjbGluZSAxNyAic3JjL2NvbXBpbGVyL2dsc2xhbmcubCIKIC8v
CiAvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKQEAgLTIxLDcgKzIxLDcgQEAKIAogCiAK
LSNsaW5lIDI1ICIuL2dsc2xhbmdfbGV4LmNwcCIKKyNsaW5lIDI1ICJzcmMvY29tcGlsZXIvZ2xz
bGFuZ19sZXguY3BwIgogCiAjZGVmaW5lICBZWV9JTlRfQUxJR05FRCBzaG9ydCBpbnQKIApAQCAt
Mzg0LDggKzM4NCw4IEBAIHN0YXRpYyB2b2lkIHl5X2ZhdGFsX2Vycm9yICh5eWNvbnN0IGNoYXIK
IAkqeXlfY3AgPSAnXDAnOyBcCiAJeXlnLT55eV9jX2J1Zl9wID0geXlfY3A7CiAKLSNkZWZpbmUg
WVlfTlVNX1JVTEVTIDE1NQotI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSIDE1NgorI2RlZmluZSBZ
WV9OVU1fUlVMRVMgMTQ3CisjZGVmaW5lIFlZX0VORF9PRl9CVUZGRVIgMTQ4CiAvKiBUaGlzIHN0
cnVjdCBpcyBub3QgdXNlZCBpbiB0aGlzIHNjYW5uZXIsCiAgICBidXQgaXRzIHByZXNlbmNlIGlz
IG5lY2Vzc2FyeS4gKi8KIHN0cnVjdCB5eV90cmFuc19pbmZvCkBAIC0zOTMsNTggKzM5Myw1NyBA
QCBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwogCWZsZXhfaW50MzJfdCB5eV92ZXJpZnk7CiAJZmxleF9p
bnQzMl90IHl5X254dDsKIAl9Owotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2FjY2Vw
dFs0NTldID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2NlcHRbNDQzXSA9CiAg
ICAgeyAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAxNTYs
ICAxNTQsICAxNTMsICAxNTMsCi0gICAgICAxMzgsICAxNDQsICAxNDksICAxMzMsICAxMzQsICAx
NDIsICAxNDEsICAxMzAsICAxMzksICAxMzcsCi0gICAgICAxNDMsICAxMDIsICAxMDIsICAxMzEs
ICAxMjcsICAxNDUsICAxMzIsICAxNDYsICAxNTAsICAgOTgsCi0gICAgICAxMzUsICAxMzYsICAx
NDgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0g
ICAgICAgOTgsICAgOTgsICAgOTgsICAxMjgsICAxNDcsICAxMjksICAxNDAsICAgIDMsICAgIDQs
ICAgIDMsCi0gICAgICAxNTIsICAxNTUsICAxNTEsICAxMjQsICAxMTAsICAxMjksICAxMTgsICAx
MTMsICAxMDgsICAxMTYsCi0gICAgICAxMDYsICAxMTcsICAxMDcsICAxMDUsICAgIDIsICAgIDEs
ICAxMDksICAxMDQsICAxMDAsICAxMDEsCi0gICAgICAgIDAsICAgIDAsICAxMDIsICAxMzYsICAx
MjgsICAxMzUsICAxMjUsICAxMjEsICAxMjMsICAxMjIsCi0gICAgICAxMjYsICAgOTgsICAxMTQs
ICAxMjAsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0KLSAgICAgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICAxNywgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAg
ICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAyMCwg
ICAyMiwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgIDExNSwgIDExOSwgICAgNSwKLSAgICAgIDE1MSwgICAgMCwgICAgMSwg
IDEwNCwgICAgMCwgICAgMCwgIDEwMywgICA5OSwgIDExMSwgIDExMiwKLSAgICAgICA1MCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAx
OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICAyNiwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICAyMywgICA5OCwgICA5OCwKLQotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgICAw
LCAgMTA1LCAgICAwLCAgMTA0LCAgIDk4LCAgIDI4LCAgIDk4LCAgIDk4LCAgIDk1LAotICAgICAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDIxLCAgIDUzLCAgIDk4
LAotICAgICAgIDk4LCAgIDk4LCAgIDY5LCAgIDk4LCAgIDk4LCAgIDU4LCAgIDczLCAgIDk4LCAg
IDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDcwLCAgICA5
LCAgIDMzLCAgIDM0LCAgIDM1LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDU2LCAgIDI5LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDM2LCAgIDM3LCAgIDM4LCAgIDI3LCAgIDk4LCAgIDk4LAotICAgICAgIDk4
LCAgIDE1LCAgIDQyLCAgIDQzLCAgIDQ0LCAgIDUxLCAgIDEyLCAgIDk4LCAgIDk4LCAgIDk4LAot
Ci0gICAgICAgOTgsICAgODIsICAgODMsICAgODQsICAgOTgsICAgMzAsICAgNzQsICAgMjUsICAg
ODUsICAgODYsCi0gICAgICAgODcsICAgIDcsICAgNzksICAgODAsICAgODEsICAgOTgsICAgMjQs
ICAgNzcsICAgOTgsICAgOTgsCi0gICAgICAgMzksICAgNDAsICAgNDEsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgNzEsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgNTIsICAg
OTgsICAgOTcsICAgOTgsICAgOTgsICAgMTksICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgs
ICAgNzIsICAgNjYsICAgNjEsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNzgsCi0g
ICAgICAgNTcsICAgOTgsICAgNjQsICAgMzIsICAgOTgsICAgOTQsICAgNjUsICAgNDksICAgNzYs
ICAgNTksCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgNjAsICAgMzEsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgIDgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgNTQsCi0gICAgICAgMTMsICAgOTgsICAgMTQsICAgOTgsICAg
OTgsICAgMTYsICAgNjcsICAgOTgsICAgOTgsICAgOTgsCi0KLSAgICAgICA2MiwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA1NSwgICA3NSwgICA2MywKLSAgICAgICAxMSwg
ICA2OCwgICAgNiwgICA5NiwgICAxMCwgICA4OCwgICA0NSwgICA4OSwgICA5OCwgICA5OCwKLSAg
ICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwKLSAgICAgICA0NiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA0OCwgICA5OCwKLSAgICAgICA5MiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5MCwgICA5OCwgICA5MSwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA0NywgICA5MywgICAgMAorICAgICAgICAwLCAgICAwLCAgMTQ4LCAgMTQ2LCAgMTQ1LCAg
MTQ1LCAgMTMyLCAgMTM4LCAgMTQzLCAgMTI3LAorICAgICAgMTI4LCAgMTM2LCAgMTM1LCAgMTI0
LCAgMTMzLCAgMTMxLCAgMTM3LCAgIDk2LCAgIDk2LCAgMTI1LAorICAgICAgMTIxLCAgMTM5LCAg
MTI2LCAgMTQwLCAgMTQ0LCAgIDkzLCAgMTI5LCAgMTMwLCAgMTQyLCAgIDkzLAorICAgICAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAor
ICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgMTIyLAorICAgICAgMTQxLCAgMTIzLCAgMTM0LCAgMTE4LCAgMTA0LCAgMTIzLCAgMTEyLCAg
MTA3LCAgMTAyLCAgMTEwLAorICAgICAgMTAwLCAgMTExLCAgMTAxLCAgIDk5LCAgMTAzLCAgIDk4
LCAgIDk1LCAgIDk2LCAgICAwLCAgICAwLAorICAgICAgMTMwLCAgMTIyLCAgMTI5LCAgMTE5LCAg
MTE1LCAgMTE3LCAgMTE2LCAgMTIwLCAgIDkzLCAgMTA4LAorICAgICAgMTE0LCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAg
IDEyLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorCisg
ICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgMTUsICAgMTcsICAgOTMsICAgOTMs
ICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAx
MDksICAxMTMsICAgIDAsICAgOTgsICAgIDAsICAgIDAsCisgICAgICAgOTcsICAgOTQsICAxMDUs
ICAxMDYsICAgNDUsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAg
ICAgOTMsICAgOTMsICAgOTMsICAgMTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsCisgICAgICAgOTMsICAgOTMsICAgMjEsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgMTgsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisKKyAgICAgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICAgMCwgICA5OSwgICAgMCwgICA5OCwgICA5MywKKyAgICAgICAyMywgICA5
MywgICA5MywgICA5MCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAg
ICA5MywgICAxNiwgICA0OCwgICA5MywgICA5MywgICA5MywgICA2NCwgICA5MywgICA5MywgICA1
MywKKyAgICAgICA2OCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA2NSwKKyAgICAgICAgNCwgICAyOCwgICAyOSwgICAzMCwgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA1MSwgICAyNCwgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICAzMSwgICAzMiwKKyAgICAgICAzMywgICAyMiwg
ICA5MywgICA5MywgICA5MywgICAxMCwgICAzNywgICAzOCwgICAzOSwgICA0NiwKKyAgICAgICAg
NywgICA5MywgICA5MywgICA5MywgICA5MywgICA3NywgICA3OCwgICA3OSwgICA5MywgICAyNSwK
KyAgICAgICA2OSwgICAyMCwgICA4MCwgICA4MSwgICA4MiwgICAgMiwgICA3NCwgICA3NSwgICA3
NiwgICA5MywKKworICAgICAgIDE5LCAgIDcyLCAgIDkzLCAgIDkzLCAgIDM0LCAgIDM1LCAgIDM2
LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDY2LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDQ3LCAgIDkzLCAgIDkyLCAgIDkzLCAgIDkzLAorICAgICAgIDE0LCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDY3LCAgIDYxLCAgIDU2LCAgIDkzLCAgIDkzLAorICAgICAgIDkz
LCAgIDkzLCAgIDkzLCAgIDczLCAgIDUyLCAgIDkzLCAgIDU5LCAgIDI3LCAgIDkzLCAgIDg5LAor
ICAgICAgIDYwLCAgIDQ0LCAgIDcxLCAgIDU0LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDU1LCAgIDI2LCAgIDkzLCAgIDkzLCAgIDkzLCAg
ICAzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDQ5LCAgICA4LCAgIDkz
LCAgICA5LCAgIDkzLCAgIDkzLCAgIDExLAorICAgICAgIDYyLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDU3LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDUwLCAgIDcw
LCAgIDU4LCAgICA2LCAgIDYzLCAgICAxLCAgIDkxLCAgICA1LCAgIDgzLAorCisgICAgICAgNDAs
ICAgODQsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisg
ICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNDEsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgNDMsICAgOTMsICAgODcsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsCisgICAgICAgODUsICAgOTMsICAgODYsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgNDIsCisgICAgICAgODgsICAgIDAKICAgICB9IDsKIAogc3Rh
dGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQpAQCAtNDgxLDIxMiArNDgwLDE5
OCBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfZWNbMjU2XSA9CiAKIHN0YXRpYyB5
eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9tZXRhWzY4XSA9CiAgICAgeyAgIDAsCi0gICAgICAgIDEs
ICAgIDEsICAgIDIsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCi0g
ICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMs
ICAgIDMsCi0gICAgICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDMsICAgIDMsICAgIDMsCi0gICAgICAgIDMsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQs
ICAgIDEsICAgIDEsICAgIDEsICAgIDMsCi0gICAgICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAg
IDMsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsCi0gICAgICAgIDQsICAgIDQsICAgIDQs
ICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsCi0gICAgICAgIDQsICAg
IDQsICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAgIDEKKyAgICAgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKKyAgICAgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMiwKKyAgICAg
ICAgMiwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMiwgICAgMiwgICAg
MiwKKyAgICAgICAgMiwgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMSwgICAgMSwg
ICAgMSwgICAgMiwKKyAgICAgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMywgICAg
MywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywg
ICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAgMywgICAgMywgICAg
MSwgICAgMSwgICAgMSwgICAgMQogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2
X3QgeXlfYmFzZVs0NjRdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9iYXNlWzQ0
NV0gPQogICAgIHsgICAwLAotICAgICAgICAwLCAgICAwLCAgIDY1LCAgIDY2LCAgIDc1LCAgICAw
LCAgNjgwLCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjU0LCAgIDQ1LCAgMTM3LCAgNjgxLCAg
NjgxLCAgNjUzLCAgMTM0LCAgNjgxLCAgMTMzLCAgMTMxLAotICAgICAgMTQ2LCAgMTU5LCAgMTY4
LCAgNjUxLCAgNjgxLCAgMTg2LCAgNjUxLCAgIDQ3LCAgNjgxLCAgICAwLAotICAgICAgNjgxLCAg
NjgxLCAgMTI4LCAgMTAwLCAgMTEwLCAgMTUyLCAgMTU2LCAgMTQ2LCAgMTY2LCAgNjIyLAotICAg
ICAgMTczLCAgMTA5LCAgNjIxLCAgMTI2LCAgMTc3LCAgNjE1LCAgMTc4LCAgNjI4LCAgMTg3LCAg
MTg0LAotICAgICAgMTQxLCAgMTk3LCAgNjI0LCAgNjgxLCAgMTU3LCAgNjgxLCAgNjgxLCAgNjgx
LCAgNjgxLCAgNjU2LAotICAgICAgNjgxLCAgNjgxLCAgICAwLCAgNjgxLCAgNjgxLCAgNjgxLCAg
NjgxLCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjgxLCAgNjgxLCAgNjgxLCAgMjM2LCAgNjgx
LCAgICAwLCAgNjgxLCAgMjQzLCAgMjczLCAgMjgyLAotICAgICAgMzA0LCAgICAwLCAgMzE0LCAg
NjgxLCAgNjgxLCAgNjgxLCAgNjQ0LCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjQzLCAgICAw
LCAgNjgxLCAgNjgxLCAgNjE2LCAgNjA5LCAgNjEyLCAgNjIwLCAgNjE5LCAgNjA2LAotCi0gICAg
ICA2MjEsICA2MDgsICA2MTQsICA2MDIsICA1OTksICA2MTIsICA1OTksICA1OTYsICA1OTYsICA2
MDIsCi0gICAgICA1OTAsICAxODksICA1OTUsICA2MDUsICA1OTEsICA1OTcsICA2MDAsICA2MDEs
ICAgIDAsICAyMTYsCi0gICAgICA2MDAsICAxODgsICA1ODYsICA1OTksICA1OTAsICA1OTIsICA1
ODIsICA1OTYsICA1OTMsICA1OTUsCi0gICAgICA1NzgsICA1ODMsICA1ODAsICA1NjksICAxODMs
ICA1NzcsICA1ODIsICA1NzgsICA1ODAsICA1NjksCi0gICAgICA1NzIsICAyMjAsICA1NzcsICA1
NjksICA1ODEsICAxNzYsICA1NzQsICA2ODEsICA2ODEsICA2ODEsCi0gICAgICAgIDAsICAzMzEs
ICAgIDAsICAzNDQsICAzNjEsICAyOTAsICAzNzQsICAgIDAsICA2ODEsICA2ODEsCi0gICAgICAg
IDAsICA1NjYsICA1NzAsICA1NzksICA1NzYsICA1NjAsICA1NjAsICAyMTUsICA1NzUsICA1NzIs
Ci0gICAgICA1NzIsICA1NzAsICA1NjcsICA1NTksICA1NjUsICA1NTIsICA1NjMsICA1NDksICA1
NjUsICAgIDAsCi0gICAgICA1NjIsICA1NTAsICA1NTcsICA1NTQsICA1NTgsICA1NTEsICA1NDAs
ICA1MzksICA1NTIsICA1NTUsCi0gICAgICA1NTIsICA1NDcsICA1MzgsICAyNjAsICA1NDMsICA1
NDYsICA1MzcsICA1MzQsICA1MzgsICA1NDQsCi0KLSAgICAgIDUzNSwgIDUyNiwgIDUyOSwgIDUy
NywgIDUzNywgIDUyMywgIDUyMSwgIDUzNCwgIDUyMCwgIDUyMiwKLSAgICAgIDUxOSwgIDUzMCwg
IDUyOSwgIDI4MywgIDUyNCwgIDUxOSwgIDUwOCwgIDI2NCwgIDUyNiwgIDUyOCwKLSAgICAgIDUx
NywgIDM4MSwgIDM4OCwgIDM5NSwgIDQwMiwgIDUxOCwgICAgMCwgIDUxNiwgIDMyMCwgICAgMCwK
LSAgICAgIDUwOCwgIDUwNiwgIDUxNCwgIDUwMywgIDUyMCwgIDUwOSwgIDMzNiwgICAgMCwgICAg
MCwgIDUwMywKLSAgICAgIDUxMywgIDUxMywgICAgMCwgIDQ5OCwgIDM0OSwgICAgMCwgICAgMCwg
IDUwMCwgIDM2NiwgIDUwMSwKLSAgICAgIDQ5NSwgIDQ5NCwgIDQ5NSwgIDQ5NCwgIDQwNywgICAg
MCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAgICAgIDQ5MCwgIDQ5MSwgIDQ5NiwgIDQ4Nywg
IDUwMCwgIDQ5NSwgIDQ5NCwgIDQ4NiwgIDQ5MCwgIDQ4MiwKLSAgICAgIDQ4NSwgIDQ4OSwgIDQ5
NCwgIDQ4MCwgIDQ5MiwgIDQ4MywgICAgMCwgICAgMCwgIDQ4OSwgIDQ3OCwKLSAgICAgIDQ3OCwg
IDQ4MywgIDQ4MiwgIDQ3OSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ2OSwgIDQ4MSwKLSAg
ICAgIDQ4MywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ3MSwgIDQ3Miwg
IDQ2NiwKLQotICAgICAgNDc2LCAgICAwLCAgICAwLCAgICAwLCAgNDY3LCAgICAwLCAgICAwLCAg
ICAwLCAgICAwLCAgICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgNDc0
LCAgICAwLCAgICAwLCAgNDcyLCAgNDY4LAotICAgICAgICAwLCAgICAwLCAgICAwLCAgNDY0LCAg
NDYwLCAgNDY1LCAgNDU1LCAgNDY4LCAgNDU0LCAgNDY3LAotICAgICAgNDU2LCAgNDYzLCAgICAw
LCAgNDYxLCAgNDYzLCAgNDQ3LCAgNDQ5LCAgNDU1LCAgNDYxLCAgNDU2LAotICAgICAgNDQ0LCAg
ICAwLCAgNDQ2LCAgICAwLCAgNDQ1LCAgNDQ4LCAgICAwLCAgNDM3LCAgNDM2LCAgNDM2LAotICAg
ICAgNDQ5LCAgICAwLCAgNDUxLCAgICAwLCAgNDUwLCAgNDQ5LCAgNDM0LCAgNDQ3LCAgNDM0LCAg
ICAwLAotICAgICAgICAwLCAgNDM3LCAgICAwLCAgICAwLCAgNDI5LCAgICAwLCAgICAwLCAgICAw
LCAgICAwLCAgICAwLAotICAgICAgNDI2LCAgNDM3LCAgNDMwLCAgNDM2LCAgNDMzLCAgNDI4LCAg
NDIwLCAgNDMyLCAgICAwLCAgICAwLAotICAgICAgNDI1LCAgNDMyLCAgNDIxLCAgICAwLCAgNDMw
LCAgNDI3LCAgNDE3LCAgNDExLCAgNDI1LCAgICAwLAotICAgICAgICAwLCAgNDI1LCAgICAwLCAg
NDIzLCAgNDIyLCAgICAwLCAgICAwLCAgNDIxLCAgNDA3LCAgNDE5LAotCi0gICAgICAgIDAsICA0
MTAsICA0MzEsICA0MzAsICA0MjksICA0MDAsICAzOTYsICAgIDAsICAgIDAsICAgIDAsCi0gICAg
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0MjEsICAyNTAsICA0MjEsICA0MTEsICAz
ODQsCi0gICAgICAzOTIsICAzOTQsICAzOTAsICAzOTIsICAzOTEsICAzOTAsICAzOTMsICAzOTAs
ICAzOTEsICAzODgsCi0gICAgICAgIDAsICAzMzIsICAzNDMsICAzMTcsICAzMjksICAzMTMsICAz
MTcsICAzMDQsICAzMjEsICAyOTEsCi0gICAgICAgIDAsICAzMDIsICAyODAsICAyNzEsICAyNTUs
ICAyNjIsICAgIDAsICAyNTYsICAgIDAsICAyMzIsCi0gICAgICAyMDYsICAyMTIsICAxNDgsICAx
NTksICAxMTMsICAgIDAsICAgIDAsICA2ODEsICA0NDIsICA0NDQsCi0gICAgICA0NDYsICA0NTAs
ICAxNjEKKyAgICAgICAgMCwgICAgMCwgIDU4NywgIDU4OCwgIDU4OCwgIDU4OCwgIDU2MSwgICA0
MywgICA2NCwgIDU4OCwKKyAgICAgIDU4OCwgIDU2MCwgICA2MSwgIDU4OCwgICA2MCwgICA1OCwg
IDU1OSwgICA3NywgICA4NiwgIDU1NywKKyAgICAgIDU4OCwgIDEwNCwgIDU1NywgICA1NSwgIDU4
OCwgICAgMCwgIDU4OCwgIDU4OCwgICA3NSwgICAyNiwKKyAgICAgICA1NywgICA4MiwgICA4Mywg
ICA3MywgICA5MywgIDUyOCwgICA5NywgICA5NSwgIDUyNywgICA0NCwKKyAgICAgICA3MSwgIDUy
MSwgIDEwNCwgIDUzNCwgIDExMCwgIDExNiwgICAzNSwgIDExMSwgIDUzMCwgIDU4OCwKKyAgICAg
IDExNCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4
OCwKKyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDE2NSwgIDU4OCwgIDE3MiwgIDIwMiwgIDIxMSwg
IDIzMywgICAgMCwKKyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDU1MSwgIDU4OCwgIDU4OCwgIDU4
OCwgIDU1MCwgICAgMCwgIDU4OCwKKyAgICAgIDU4OCwgIDUyMywgIDUxNiwgIDUxOSwgIDUyNywg
IDUyNiwgIDUxMywgIDUyOCwgIDUxNSwgIDUyMSwKKyAgICAgIDUwOSwgIDUwNiwgIDUxOSwgIDUw
NiwgIDUwMywgIDUwMywgIDUwOSwgIDQ5NywgIDEwOCwgIDUwMiwKKworICAgICAgNTEyLCAgNDk4
LCAgNTA0LCAgNTA3LCAgNTA4LCAgICAwLCAgMTQ1LCAgNTA3LCAgMTEzLCAgNDkzLAorICAgICAg
NTA2LCAgNDk3LCAgNDk5LCAgNDg5LCAgNTAzLCAgNTAwLCAgNTAyLCAgNDg1LCAgNDkwLCAgNDg3
LAorICAgICAgNDc2LCAgMTU3LCAgNDg0LCAgNDg5LCAgNDg1LCAgNDg3LCAgNDc2LCAgNDc5LCAg
MTE4LCAgNDg0LAorICAgICAgNDc2LCAgNDg4LCAgIDcwLCAgNDgxLCAgNTg4LCAgNTg4LCAgMjQ2
LCAgMjUzLCAgMjcwLCAgMjE5LAorICAgICAgMjgzLCAgICAwLCAgNTg4LCAgNTg4LCAgICAwLCAg
NDczLCAgNDc3LCAgNDg2LCAgNDgzLCAgNDY3LAorICAgICAgNDY3LCAgMTE5LCAgNDgyLCAgNDc5
LCAgNDc5LCAgNDc3LCAgNDc0LCAgNDY2LCAgNDcyLCAgNDU5LAorICAgICAgNDcwLCAgNDU2LCAg
NDcyLCAgICAwLCAgNDY5LCAgNDU3LCAgNDY0LCAgNDYxLCAgNDY1LCAgNDU4LAorICAgICAgNDQ3
LCAgNDQ2LCAgNDU5LCAgNDYyLCAgNDU5LCAgNDU0LCAgNDQ1LCAgMTg4LCAgNDUwLCAgNDUzLAor
ICAgICAgNDQ0LCAgNDQxLCAgNDQ1LCAgNDUxLCAgNDQyLCAgNDMzLCAgNDM2LCAgNDM0LCAgNDQ0
LCAgNDMwLAorICAgICAgNDI4LCAgNDQxLCAgNDI3LCAgNDI5LCAgNDI2LCAgNDM3LCAgNDM2LCAg
MTI0LCAgNDMxLCAgNDI2LAorCisgICAgICA0MTUsICAyNTgsICA0MzMsICA0MzUsICA0MjQsICAy
OTAsICAyOTcsICAzMDQsICAzMTEsICA0MjUsCisgICAgICAgIDAsICA0MjMsICAyNzUsICAgIDAs
ICA0MTUsICA0MTMsICA0MjEsICA0MTAsICA0MjcsICA0MTYsCisgICAgICAzMTYsICAgIDAsICAg
IDAsICA0MTAsICA0MjAsICA0MjAsICAgIDAsICA0MDUsICAzMTksICAgIDAsCisgICAgICAgIDAs
ICA0MDcsICAzMjIsICA0MDgsICA0MDIsICA0MDEsICA0MDIsICA0MDEsICAzMjUsICAgIDAsCisg
ICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzOTcsICAzOTgsICA0MDMsICAzOTQsICA0MDcs
ICA0MDIsCisgICAgICA0MDEsICAzOTMsICAzOTcsICAzODksICAzOTIsICAzOTYsICA0MDEsICAz
ODcsICAzOTksICAzOTAsCisgICAgICAgIDAsICAgIDAsICAzOTYsICAzODUsICAzODUsICAzOTAs
ICAzODksICAzODYsICAgIDAsICAgIDAsCisgICAgICAgIDAsICAgIDAsICAzNzYsICAzODgsICAz
OTAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsCisgICAgICAgIDAsICAzNzgsICAzNzks
ICAzNzMsICAzODMsICAgIDAsICAgIDAsICAgIDAsICAzNzQsICAgIDAsCisgICAgICAgIDAsICAg
IDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzODEsCisKKyAg
ICAgICAgMCwgICAgMCwgIDM3OSwgIDM3NSwgICAgMCwgICAgMCwgICAgMCwgIDM3MSwgIDM2Nywg
IDM3MiwKKyAgICAgIDM2MiwgIDM3NSwgIDM2MSwgIDM3NCwgIDM2MywgIDM3MCwgICAgMCwgIDM2
OCwgIDM3MCwgIDM1NCwKKyAgICAgIDM1NiwgIDM2MiwgIDM2OCwgIDM2MywgIDM1MSwgICAgMCwg
IDM1MywgICAgMCwgIDM1MiwgIDM1NSwKKyAgICAgICAgMCwgIDM0NCwgIDM0MywgIDM0MywgIDM1
NiwgICAgMCwgIDM1OCwgICAgMCwgIDM1NywgIDM1NiwKKyAgICAgIDM0MSwgIDM1NCwgIDM0MSwg
ICAgMCwgICAgMCwgIDM0NCwgICAgMCwgICAgMCwgIDMzNiwgICAgMCwKKyAgICAgICAgMCwgICAg
MCwgICAgMCwgICAgMCwgIDMzMywgIDM0NCwgIDMzNywgIDM0MywgIDM0MCwgIDMzNSwKKyAgICAg
IDMyNywgIDMzOSwgICAgMCwgICAgMCwgIDMzMiwgIDMzOSwgIDMyOCwgICAgMCwgIDMzNywgIDMz
NCwKKyAgICAgIDMyNCwgIDMyOSwgIDMzMiwgICAgMCwgICAgMCwgIDMzMiwgICAgMCwgIDMzMCwg
IDMyOSwgICAgMCwKKyAgICAgICAgMCwgIDMyOCwgIDMxNCwgIDMyNiwgICAgMCwgIDMxNywgIDMz
OCwgIDMzNywgIDMzNiwgIDMwNywKKyAgICAgIDMwMywgICAgMCwgICAgMCwgICAgMCwgICAgMCwg
ICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDMyOCwKKworICAgICAgMTY2LCAgMzI1LCAgMzE2LCAg
Mjk5LCAgMzA4LCAgMzEwLCAgMzA2LCAgMzA4LCAgMzA3LCAgMzA2LAorICAgICAgMzA5LCAgMzA2
LCAgMjU2LCAgMjUzLCAgICAwLCAgMjI4LCAgMjM4LCAgMjIyLCAgMjM1LCAgMjAzLAorICAgICAg
MjA3LCAgMjA0LCAgMjEyLCAgMTkxLCAgICAwLCAgMjAxLCAgMTY1LCAgMTY3LCAgMTUzLCAgMTYx
LAorICAgICAgICAwLCAgMTcwLCAgICAwLCAgMTc1LCAgMTUxLCAgMTQxLCAgMTAwLCAgMTE0LCAg
IDU5LCAgICAwLAorICAgICAgICAwLCAgNTg4LCAgMzU5LCAgMTEzCiAgICAgfSA7CiAKLXN0YXRp
YyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9kZWZbNDY0XSA9CitzdGF0aWMgeXljb25zdCBmbGV4
X2ludDE2X3QgeXlfZGVmWzQ0NV0gPQogICAgIHsgICAwLAotICAgICAgNDU4LCAgICAxLCAgNDU5
LCAgNDU5LCAgNDU4LCAgICA1LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAg
ICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDYwLAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDYxLCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDYyLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAg
NDU4LCAgNDYzLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LAotICAgICAgNDU4LCAgNDYwLCAgNDU4LCAgNDU4LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NTgsICA0NTgsICA0NTgs
Ci0gICAgICA0NjEsICA0NTgsICA0NjIsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NjMsICA0
NTgsICA0NTgsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0KLSAgICAgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwK
LSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAg
ICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAg
ICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICAgIDAsICA0NTgsICA0NTgs
Ci0gICAgICA0NTgsICA0NTgsICA0NTgKKyAgICAgIDQ0MiwgICAgMSwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywKKyAgICAg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0NCwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywK
KworICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQ0LCAg
NDQyLCAgNDQyLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAor
ICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorCisgICAgICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDMsCisgICAgICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisg
ICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAg
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKworICAgICAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgICAwLCAgNDQyLCAgNDQy
CiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9ueHRbNzQ5XSA9Citz
dGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0WzY1Nl0gPQogICAgIHsgICAwLAotICAg
ICAgICA4LCAgICA5LCAgIDEwLCAgIDExLCAgIDEyLCAgIDEzLCAgIDE0LCAgIDE1LCAgIDE2LCAg
IDE3LAotICAgICAgIDE4LCAgIDE5LCAgIDIwLCAgIDIxLCAgIDIyLCAgIDIzLCAgIDIzLCAgIDIz
LCAgIDIzLCAgIDIzLAotICAgICAgIDIzLCAgIDI0LCAgIDI1LCAgIDI2LCAgIDI3LCAgIDI4LCAg
IDI5LCAgIDMwLCAgIDMwLCAgIDMwLAotICAgICAgIDMwLCAgIDMwLCAgIDMwLCAgIDMwLCAgIDMw
LCAgIDMwLCAgIDMxLCAgIDMyLCAgIDMzLCAgIDM0LAotICAgICAgIDM1LCAgIDM2LCAgIDM3LCAg
IDM4LCAgIDM5LCAgIDQwLCAgIDQxLCAgIDQyLCAgIDMwLCAgIDQzLAotICAgICAgIDQ0LCAgIDQ1
LCAgIDQ2LCAgIDQ3LCAgIDQ4LCAgIDQ5LCAgIDUwLCAgIDUxLCAgIDUyLCAgIDUzLAotICAgICAg
IDMwLCAgIDMwLCAgIDMwLCAgIDU0LCAgIDU1LCAgIDU2LCAgIDU3LCAgIDU5LCAgIDU5LCAgIDY1
LAotICAgICAgIDY2LCAgIDkwLCAgIDkxLCAgIDYwLCAgIDYwLCAgICA4LCAgIDYxLCAgIDYyLCAg
ICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4
LCAgICA4LCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAg
ICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAotCi0gICAgICAgIDgsICAgIDgsICAgNjMsICAg
NjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0gICAgICAgNjMsICAgIDgs
ICAgIDgsICAgIDgsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0gICAgICAg
NjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMs
Ci0gICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAg
IDgsICAgIDgsCi0gICAgICAgIDgsICAgIDgsICAgNjcsICAgNzAsICAgNzIsICAgNzQsICAgNzQs
ICAgNzQsICAgNzQsICAgNzQsCi0gICAgICAgNzQsICAgNzQsICAgOTMsICAxMTksICAgNzUsICAg
OTUsICAgOTYsICAgNzMsICAgNzEsICAgNzYsCi0gICAgICAxMjAsICAgNjgsICAgOTcsICAxNTgs
ICAgOTgsICAxMjMsICAgOTQsICAxMjEsICAgOTksICAxMjQsCi0gICAgICAgNzcsICAgNzgsICA0
NTcsICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAgODAsCi0gICAgICAgNzgs
ICAxNDgsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODEsCi0g
ICAgICAgODUsICAxMDAsICAxNDIsICA0NTYsICAgODIsICAxMDcsICAxNDMsICAxMDgsICAgODEs
ICAxMDMsCi0KLSAgICAgIDQ1NSwgIDEwMSwgICA4MSwgIDEwNCwgIDEwMiwgIDExMCwgIDEwOSwg
ICA4NiwgIDEwNSwgICA4NywKLSAgICAgICA4OCwgICA4MSwgIDExNiwgIDExMSwgIDEwNiwgIDEx
MiwgIDEyNSwgIDEyOCwgIDExMywgICA4MiwKLSAgICAgIDExNywgIDE0OSwgIDIwNiwgIDIxOSwg
IDExNCwgIDIyMCwgIDEzMiwgIDEzOCwgIDE3OCwgIDEyNiwKLSAgICAgIDEzOSwgIDExOCwgIDEy
OSwgIDEzMywgIDEzNCwgIDEzMCwgIDE0NCwgIDIwNywgIDE0MCwgIDE5MiwKLSAgICAgIDE0NSwg
IDE3OSwgIDQ1NCwgIDEzNSwgIDEzNiwgIDE0MSwgIDEzNywgIDE5MywgIDQ1MywgIDE0NiwKLSAg
ICAgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgIDE1NCwgIDE1NCwg
IDE1NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDQ1MiwgIDE4NiwgIDE1MiwgIDIx
NCwgIDE4NywgIDE4OCwKLSAgICAgIDIzMiwgIDIzMywgIDE4OSwgIDE1NSwgIDE5MCwgIDIxNSwg
IDI1OCwgIDI1OSwgIDI2MCwgIDE1MiwKLSAgICAgIDI4NSwgIDI4NiwgIDI4NywgIDQyMiwgIDQy
MywgICA3OCwgIDE1NSwgICA3OSwgICA3OSwgICA3OSwKLSAgICAgICA3OSwgICA3OSwgICA3OSwg
ICA4MCwgICA3OCwgIDQ1MSwgICA4MCwgICA4MCwgICA4MCwgICA4MCwKLQotICAgICAgIDgwLCAg
IDgwLCAgIDgwLCAgIDgxLCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LAotICAg
ICAgMTU3LCAgNDUwLCAgIDgxLCAgMTU2LCAgNDQ5LCAgMTU2LCAgIDgxLCAgNDQ4LCAgMTU3LCAg
MTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgIDgxLCAgIDc4LCAgMjgw
LCAgIDgzLCAgIDgzLAotICAgICAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgMjgxLCAg
MjkzLCAgMjk0LCAgMjk1LCAgNDQ3LAotICAgICAgMjIyLCAgNDQ2LCAgMjIyLCAgNDQ1LCAgIDgx
LCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLAotICAgICAgMjIzLCAgMjIzLCAgMzAyLCAg
MzAzLCAgMzA0LCAgNDQ0LCAgNDQzLCAgIDgxLCAgMTU0LCAgMTU0LAotICAgICAgMTU0LCAgMTU0
LCAgMTU0LCAgMTU0LCAgMTU0LCAgMzA5LCAgMzEwLCAgMzExLCAgNDQyLCAgNDQxLAotICAgICAg
MjI0LCAgNDQwLCAgMjI0LCAgNDM5LCAgMTU1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1
LAotICAgICAgMjI1LCAgMjI1LCAgMzEzLCAgMzE0LCAgMzE1LCAgNDM4LCAgNDM3LCAgMTU1LCAg
MTU3LCAgMTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMjIzLCAgMjIz
LCAgMjIzLCAgMjIzLCAgMjIzLAotCi0gICAgICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMs
ICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjUsCi0gICAgICAyMjUsICAyMjUsICAyMjUsICAy
MjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsCi0gICAgICAyMjUsICAyMjUs
ICAyMjUsICAzMjEsICAzMjIsICAzMjMsICA0MDMsICA0MDQsICA0MDUsICA0MzYsCi0gICAgICA0
MzUsICA0MzQsICA0MzMsICA0MzIsICA0MzEsICA0MzAsICA0MjksICA0MjgsICA0MjcsICA0MDYs
Ci0gICAgICA0MjYsICA0MDcsICAgNTgsICAgNTgsICAgNTgsICAgNTgsICAgOTIsICAgOTIsICAx
NTEsICAxNTEsCi0gICAgICAxNTMsICA0MjUsICAxNTMsICAxNTMsICA0MjQsICA0MjEsICA0MjAs
ICA0MTksICA0MTgsICA0MTcsCi0gICAgICA0MTYsICA0MTUsICA0MTQsICA0MTMsICA0MTIsICA0
MTEsICA0MTAsICA0MDksICA0MDgsICA0MDIsCi0gICAgICA0MDEsICA0MDAsICAzOTksICAzOTgs
ICAzOTcsICAzOTYsICAzOTUsICAzOTQsICAzOTMsICAzOTIsCi0gICAgICAzOTEsICAzOTAsICAz
ODksICAzODgsICAzODcsICAzODYsICAzODUsICAzODQsICAzODMsICAzODIsCi0gICAgICAzODEs
ICAzODAsICAzNzksICAzNzgsICAzNzcsICAzNzYsICAzNzUsICAzNzQsICAzNzMsICAzNzIsCi0K
LSAgICAgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2NywgIDM2NiwgIDM2NSwgIDM2NCwgIDM2
MywgIDM2MiwKLSAgICAgIDM2MSwgIDM2MCwgIDM1OSwgIDM1OCwgIDM1NywgIDM1NiwgIDM1NSwg
IDM1NCwgIDM1MywgIDM1MiwKLSAgICAgIDM1MSwgIDM1MCwgIDM0OSwgIDM0OCwgIDM0NywgIDM0
NiwgIDM0NSwgIDM0NCwgIDM0MywgIDM0MiwKLSAgICAgIDM0MSwgIDM0MCwgIDMzOSwgIDMzOCwg
IDMzNywgIDMzNiwgIDMzNSwgIDMzNCwgIDMzMywgIDMzMiwKLSAgICAgIDMzMSwgIDMzMCwgIDMy
OSwgIDMyOCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMCwgIDMxOSwKLSAgICAgIDMxOCwg
IDMxNywgIDMxNiwgIDMxMiwgIDMwOCwgIDMwNywgIDMwNiwgIDMwNSwgIDMwMSwgIDMwMCwKLSAg
ICAgIDI5OSwgIDI5OCwgIDI5NywgIDI5NiwgIDI5MiwgIDI5MSwgIDI5MCwgIDI4OSwgIDI4OCwg
IDI4NCwKLSAgICAgIDI4MywgIDI4MiwgIDI3OSwgIDI3OCwgIDI3NywgIDI3NiwgIDI3NSwgIDI3
NCwgIDI3MywgIDI3MiwKLSAgICAgIDI3MSwgIDI3MCwgIDI2OSwgIDI2OCwgIDI2NywgIDI2Niwg
IDI2NSwgIDI2NCwgIDI2MywgIDI2MiwKLSAgICAgIDI2MSwgIDI1NywgIDI1NiwgIDI1NSwgIDI1
NCwgIDI1MywgIDI1MiwgIDI1MSwgIDI1MCwgIDI0OSwKLQotICAgICAgMjQ4LCAgMjQ3LCAgMjQ2
LCAgMjQ1LCAgMjQ0LCAgMjQzLCAgMjQyLCAgMjQxLCAgMjQwLCAgMjM5LAotICAgICAgMjM4LCAg
MjM3LCAgMjM2LCAgMjM1LCAgMjM0LCAgMjMxLCAgMjMwLCAgMjI5LCAgMjI4LCAgMjI3LAotICAg
ICAgMjI2LCAgMjIxLCAgMjE4LCAgMjE3LCAgMjE2LCAgMjEzLCAgMjEyLCAgMjExLCAgMjEwLCAg
MjA5LAotICAgICAgMjA4LCAgMjA1LCAgMjA0LCAgMjAzLCAgMjAyLCAgMjAxLCAgMjAwLCAgMTk5
LCAgMTk4LCAgMTk3LAotICAgICAgMTk2LCAgMTk1LCAgMTk0LCAgMTkxLCAgMTg1LCAgMTg0LCAg
MTgzLCAgMTgyLCAgMTgxLCAgMTgwLAotICAgICAgMTc3LCAgMTc2LCAgMTc1LCAgMTc0LCAgMTcz
LCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LAotICAgICAgMTY3LCAgMTY2LCAgMTY1LCAg
MTY0LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTUwLAotICAgICAgMTQ3LCAgMTMx
LCAgMTI3LCAgMTIyLCAgMTE1LCAgIDg5LCAgIDg0LCAgIDY5LCAgIDY0LCAgNDU4LAotICAgICAg
ICA3LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LAotCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgKKyAgICAgICAgNCwg
ICAgNSwgICAgNiwgICAgNywgICAgOCwgICAgOSwgICAxMCwgICAxMSwgICAxMiwgICAxMywKKyAg
ICAgICAxNCwgICAxNSwgICAxNiwgICAxNywgICAxOCwgICAxOSwgICAxOSwgICAxOSwgICAxOSwg
ICAxOSwKKyAgICAgICAxOSwgICAyMCwgICAyMSwgICAyMiwgICAyMywgICAyNCwgICAyNSwgICAy
NiwgICAyNiwgICAyNiwKKyAgICAgICAyNiwgICAyNiwgICAyNiwgICAyNiwgICAyNiwgICAyNiwg
ICAyNywgICAyOCwgICAyOSwgICAzMCwKKyAgICAgICAzMSwgICAzMiwgICAzMywgICAzNCwgICAz
NSwgICAzNiwgICAzNywgICAzOCwgICAyNiwgICAzOSwKKyAgICAgICA0MCwgICA0MSwgICA0Miwg
ICA0MywgICA0NCwgICA0NSwgICA0NiwgICA0NywgICA0OCwgICA0OSwKKyAgICAgICAyNiwgICAy
NiwgICAyNiwgICA1MCwgICA1MSwgICA1MiwgICA1MywgICA1NSwgICA1NiwgICA1NywKKyAgICAg
ICA2MCwgICA2MiwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA3
NywKKyAgICAgICA3OCwgICA4MiwgICA4MywgIDExMCwgICA2MywgICA2MSwgIDEyOSwgIDExMSwg
ICA1OCwgICA2NiwKKyAgICAgIDEzMCwgICA2NywgICA2NywgICA2NywgICA2NywgICA2NywgICA2
NywgICA2OCwgICA2NiwgICA4MCwKKworICAgICAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4
LCAgIDY4LCAgIDY4LCAgIDY5LCAgIDcyLCAgIDg0LAorICAgICAgMTEyLCAgIDg1LCAgIDcwLCAg
IDgxLCAgMTQyLCAgIDg2LCAgIDY5LCAgMjAzLCAgNDQxLCAgMjA0LAorICAgICAgIDY5LCAgIDg3
LCAgIDk0LCAgMTEzLCAgIDk1LCAgIDczLCAgIDkwLCAgIDc0LCAgIDc1LCAgIDY5LAorICAgICAg
IDkxLCAgIDg4LCAgIDk3LCAgIDk2LCAgIDg5LCAgIDkyLCAgMTAzLCAgIDcwLCAgMTM1LCAgMTA2
LAorICAgICAgIDk4LCAgIDkzLCAgIDk5LCAgMTE1LCAgMTA0LCAgMTAwLCAgMTA3LCAgMTYyLCAg
NDQwLCAgMTE5LAorICAgICAgMTMxLCAgMTAxLCAgNDM5LCAgMTA4LCAgMTMyLCAgMTA1LCAgMTIw
LCAgMTIxLCAgMTE2LCAgMTI1LAorICAgICAgMTYzLCAgMTE3LCAgMTI2LCAgMTMzLCAgMTc2LCAg
MTk4LCAgMTIyLCAgMTIzLCAgMjY0LCAgMTI0LAorICAgICAgMTI3LCAgNDM4LCAgMTc3LCAgMTk5
LCAgMjE2LCAgMjE3LCAgMjY1LCAgMTI4LCAgMTM2LCAgIDY0LAorICAgICAgIDY0LCAgIDY0LCAg
IDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LAorICAgICAgMTM4
LCAgMTM4LCAgMTM4LCAgNDM3LCAgMTcwLCAgMTM3LCAgMTkwLCAgMTcxLCAgMTcyLCAgNDA2LAor
CisgICAgICA0MDcsICAxNzMsICAxMzksICAxNzQsICAyNDIsICAyNDMsICAyNDQsICA0MzYsICAx
MzcsICA0MzUsCisgICAgICA0MzQsICAxOTEsICA0MzMsICA0MzIsICAgNjYsICAxMzksICAgNjcs
ICAgNjcsICAgNjcsICAgNjcsCisgICAgICAgNjcsICAgNjcsICAgNjgsICAgNjYsICA0MzEsICAg
NjgsICAgNjgsICAgNjgsICAgNjgsICAgNjgsCisgICAgICAgNjgsICAgNjgsICAgNjksICAxNDEs
ICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsCisgICAgICA0MzAsICAgNjksICAx
NDAsICA0MjksICAxNDAsICAgNjksICA0MjgsICAxNDEsICAxNDEsICAxNDEsCisgICAgICAxNDEs
ICAxNDEsICAxNDEsICAxNDEsICAgNjksICAyMDYsICA0MjcsICAyMDYsICA0MjYsICA0MjUsCisg
ICAgICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAxMzgsICAxMzgs
ICAxMzgsCisgICAgICAxMzgsICAxMzgsICAxMzgsICAxMzgsICAyNjksICAyNzAsICAyNzEsICA0
MjQsICA0MjMsICAyMDgsCisgICAgICA0MjIsICAyMDgsICA0MjEsICAxMzksICAyMDksICAyMDks
ICAyMDksICAyMDksICAyMDksICAyMDksCisgICAgICAyMDksICAyNzcsICAyNzgsICAyNzksICA0
MjAsICA0MTksICAxMzksICAxNDEsICAxNDEsICAxNDEsCisKKyAgICAgIDE0MSwgIDE0MSwgIDE0
MSwgIDE0MSwgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywKKyAgICAgIDIwNywg
IDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwOSwgIDIwOSwKKyAg
ICAgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwg
IDIwOSwKKyAgICAgIDIwOSwgIDIwOSwgIDI4NiwgIDI4NywgIDI4OCwgIDI5MywgIDI5NCwgIDI5
NSwgIDI5NywgIDI5OCwKKyAgICAgIDI5OSwgIDMwNSwgIDMwNiwgIDMwNywgIDM4NywgIDM4OCwg
IDM4OSwgIDQxOCwgIDQxNywgIDQxNiwKKyAgICAgIDQxNSwgIDQxNCwgIDQxMywgIDQxMiwgIDQx
MSwgIDQxMCwgIDQwOSwgIDM5MCwgIDQwOCwgIDM5MSwKKyAgICAgICA3OSwgICA3OSwgIDQwNSwg
IDQwNCwgIDQwMywgIDQwMiwgIDQwMSwgIDQwMCwgIDM5OSwgIDM5OCwKKyAgICAgIDM5NywgIDM5
NiwgIDM5NSwgIDM5NCwgIDM5MywgIDM5MiwgIDM4NiwgIDM4NSwgIDM4NCwgIDM4MywKKyAgICAg
IDM4MiwgIDM4MSwgIDM4MCwgIDM3OSwgIDM3OCwgIDM3NywgIDM3NiwgIDM3NSwgIDM3NCwgIDM3
MywKKyAgICAgIDM3MiwgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2NywgIDM2NiwgIDM2NSwg
IDM2NCwgIDM2MywKKworICAgICAgMzYyLCAgMzYxLCAgMzYwLCAgMzU5LCAgMzU4LCAgMzU3LCAg
MzU2LCAgMzU1LCAgMzU0LCAgMzUzLAorICAgICAgMzUyLCAgMzUxLCAgMzUwLCAgMzQ5LCAgMzQ4
LCAgMzQ3LCAgMzQ2LCAgMzQ1LCAgMzQ0LCAgMzQzLAorICAgICAgMzQyLCAgMzQxLCAgMzQwLCAg
MzM5LCAgMzM4LCAgMzM3LCAgMzM2LCAgMzM1LCAgMzM0LCAgMzMzLAorICAgICAgMzMyLCAgMzMx
LCAgMzMwLCAgMzI5LCAgMzI4LCAgMzI3LCAgMzI2LCAgMzI1LCAgMzI0LCAgMzIzLAorICAgICAg
MzIyLCAgMzIxLCAgMzIwLCAgMzE5LCAgMzE4LCAgMzE3LCAgMzE2LCAgMzE1LCAgMzE0LCAgMzEz
LAorICAgICAgMzEyLCAgMzExLCAgMzEwLCAgMzA5LCAgMzA4LCAgMzA0LCAgMzAzLCAgMzAyLCAg
MzAxLCAgMzAwLAorICAgICAgMjk2LCAgMjkyLCAgMjkxLCAgMjkwLCAgMjg5LCAgMjg1LCAgMjg0
LCAgMjgzLCAgMjgyLCAgMjgxLAorICAgICAgMjgwLCAgMjc2LCAgMjc1LCAgMjc0LCAgMjczLCAg
MjcyLCAgMjY4LCAgMjY3LCAgMjY2LCAgMjYzLAorICAgICAgMjYyLCAgMjYxLCAgMjYwLCAgMjU5
LCAgMjU4LCAgMjU3LCAgMjU2LCAgMjU1LCAgMjU0LCAgMjUzLAorICAgICAgMjUyLCAgMjUxLCAg
MjUwLCAgMjQ5LCAgMjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAgMjQxLCAgMjQwLAorCisgICAgICAy
MzksICAyMzgsICAyMzcsICAyMzYsICAyMzUsICAyMzQsICAyMzMsICAyMzIsICAyMzEsICAyMzAs
CisgICAgICAyMjksICAyMjgsICAyMjcsICAyMjYsICAyMjUsICAyMjQsICAyMjMsICAyMjIsICAy
MjEsICAyMjAsCisgICAgICAyMTksICAyMTgsICAyMTUsICAyMTQsICAyMTMsICAyMTIsICAyMTEs
ICAyMTAsICAyMDUsICAyMDIsCisgICAgICAyMDEsICAyMDAsICAxOTcsICAxOTYsICAxOTUsICAx
OTQsICAxOTMsICAxOTIsICAxODksICAxODgsCisgICAgICAxODcsICAxODYsICAxODUsICAxODQs
ICAxODMsICAxODIsICAxODEsICAxODAsICAxNzksICAxNzgsCisgICAgICAxNzUsICAxNjksICAx
NjgsICAxNjcsICAxNjYsICAxNjUsICAxNjQsICAxNjEsICAxNjAsICAxNTksCisgICAgICAxNTgs
ICAxNTcsICAxNTYsICAxNTUsICAxNTQsICAxNTMsICAxNTIsICAxNTEsICAxNTAsICAxNDksCisg
ICAgICAxNDgsICAxNDcsICAxNDYsICAxNDUsICAxNDQsICAxNDMsICAxMzQsICAxMTgsICAxMTQs
ICAxMDksCisgICAgICAxMDIsICAgNzYsICAgNzEsICAgNjUsICAgNTksICAgNTQsICA0NDIsICAg
IDMsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAg
ICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MgogICAgIH0g
OwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzc0OV0gPQorc3RhdGljIHl5
Y29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1s2NTZdID0KICAgICB7ICAgMCwKICAgICAgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAg
ICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwKQEAgLTY5NCw5NSArNjc5LDg1IEBAIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5
eV9jaGtbNzQ5XSAKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKLSAgICAgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAgNCwgICAxMiwKLSAgICAgICAx
MiwgICAyOCwgICAyOCwgICAgMywgICAgNCwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwK
LSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwgICAgNSwKLQotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1
LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAot
ICAgICAgICA1LCAgICA1LCAgIDEzLCAgIDE3LCAgIDE5LCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIw
LCAgIDIwLAotICAgICAgIDIwLCAgIDIwLCAgIDMzLCAgIDQyLCAgIDIxLCAgIDM0LCAgIDM0LCAg
IDE5LCAgIDE3LCAgIDIxLAotICAgICAgIDQyLCAgIDEzLCAgIDM1LCAgNDYzLCAgIDM1LCAgIDQ0
LCAgIDMzLCAgIDQyLCAgIDM1LCAgIDQ0LAotICAgICAgIDIxLCAgIDIyLCAgNDU1LCAgIDIyLCAg
IDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLAotICAgICAgIDIzLCAgIDU1LCAgIDIz
LCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIyLAotICAgICAgIDI2LCAg
IDM2LCAgIDUxLCAgNDU0LCAgIDIyLCAgIDM4LCAgIDUxLCAgIDM4LCAgIDIzLCAgIDM3LAotCi0g
ICAgICA0NTMsICAgMzYsICAgMjIsICAgMzcsICAgMzYsICAgMzksICAgMzgsICAgMjYsICAgMzcs
ICAgMjYsCi0gICAgICAgMjYsICAgMjMsICAgNDEsICAgMzksICAgMzcsICAgMzksICAgNDUsICAg
NDcsICAgMzksICAgMjIsCi0gICAgICAgNDEsICAgNTUsICAxMzUsICAxNDYsICAgMzksICAxNDYs
ICAgNDksICAgNTAsICAxMTIsICAgNDUsCi0gICAgICAgNTAsICAgNDEsICAgNDcsICAgNDksICAg
NDksICAgNDcsICAgNTIsICAxMzUsICAgNTAsICAxMjIsCi0gICAgICAgNTIsICAxMTIsICA0NTIs
ICAgNDksICAgNDksICAgNTAsICAgNDksICAxMjIsICA0NTEsICAgNTIsCi0gICAgICAgNzQsICAg
NzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzgsICAgNzgsICAgNzgsCi0gICAg
ICAgNzgsICAgNzgsICAgNzgsICAgNzgsICA0NTAsICAxMjAsICAgNzQsICAxNDIsICAxMjAsICAx
MjAsCi0gICAgICAxNjgsICAxNjgsICAxMjAsICAgNzgsICAxMjAsICAxNDIsICAxOTQsICAxOTQs
ICAxOTQsICAgNzQsCi0gICAgICAyMTgsICAyMTgsICAyMTgsICA0MTcsICA0MTcsICAgNzksICAg
NzgsICAgNzksICAgNzksICAgNzksCi0gICAgICAgNzksICAgNzksICAgNzksICAgNzksICAgODAs
ICA0NDgsICAgODAsICAgODAsICAgODAsICAgODAsCi0KLSAgICAgICA4MCwgICA4MCwgICA4MCwg
ICA3OSwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwKLSAgICAgIDE1NiwgIDQ0
NiwgICA4MCwgICA4MSwgIDQ0NSwgICA4MSwgICA3OSwgIDQ0NCwgICA4MSwgICA4MSwKLSAgICAg
ICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MCwgICA4MywgIDIxNCwgICA4MywgICA4
MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgIDIxNCwgIDIyOSwgIDIyOSwg
IDIyOSwgIDQ0MywKLSAgICAgIDE1MiwgIDQ0MiwgIDE1MiwgIDQ0MCwgICA4MywgIDE1MiwgIDE1
MiwgIDE1MiwgIDE1MiwgIDE1MiwKLSAgICAgIDE1MiwgIDE1MiwgIDIzNywgIDIzNywgIDIzNywg
IDQzOSwgIDQzOCwgICA4MywgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1
NCwgIDE1NCwgIDI0NSwgIDI0NSwgIDI0NSwgIDQzNywgIDQzNiwKLSAgICAgIDE1NSwgIDQzNSwg
IDE1NSwgIDQzNCwgIDE1NCwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwKLSAgICAgIDE1
NSwgIDE1NSwgIDI0OSwgIDI0OSwgIDI0OSwgIDQzMywgIDQzMiwgIDE1NCwgIDE1NywgIDE1NywK
LSAgICAgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDIyMiwgIDIyMiwgIDIyMiwgIDIy
MiwgIDIyMiwKLQotICAgICAgMjIyLCAgMjIyLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIz
LCAgMjIzLCAgMjIzLCAgMjI0LAotICAgICAgMjI0LCAgMjI0LCAgMjI0LCAgMjI0LCAgMjI0LCAg
MjI0LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMjI1LCAgMjU1
LCAgMjU1LCAgMjU1LCAgMzg4LCAgMzg4LCAgMzg4LCAgNDMwLAotICAgICAgNDI5LCAgNDI4LCAg
NDI3LCAgNDI2LCAgNDI1LCAgNDI0LCAgNDIzLCAgNDIyLCAgNDIxLCAgMzg4LAotICAgICAgNDIw
LCAgMzg4LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDYwLCAgNDYwLCAgNDYxLCAgNDYxLAot
ICAgICAgNDYyLCAgNDE5LCAgNDYyLCAgNDYyLCAgNDE4LCAgNDE2LCAgNDA3LCAgNDA2LCAgNDA1
LCAgNDA0LAotICAgICAgNDAzLCAgNDAyLCAgNDAwLCAgMzk5LCAgMzk4LCAgMzk1LCAgMzk0LCAg
MzkyLCAgMzg5LCAgMzg3LAotICAgICAgMzg2LCAgMzg1LCAgMzgzLCAgMzgyLCAgMzgxLCAgMzc4
LCAgMzc3LCAgMzc2LCAgMzc1LCAgMzc0LAotICAgICAgMzczLCAgMzcyLCAgMzcxLCAgMzY1LCAg
MzYyLCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LAotICAgICAgMzUzLCAgMzUxLCAgMzUw
LCAgMzQ5LCAgMzQ4LCAgMzQ2LCAgMzQ1LCAgMzQzLCAgMzQxLCAgMzQwLAotCi0gICAgICAzMzks
ICAzMzgsICAzMzcsICAzMzYsICAzMzUsICAzMzQsICAzMzIsICAzMzEsICAzMzAsICAzMjksCi0g
ICAgICAzMjgsICAzMjcsICAzMjYsICAzMjUsICAzMjQsICAzMjAsICAzMTksICAzMTYsICAzMDUs
ICAzMDEsCi0gICAgICAzMDAsICAyOTksICAyOTgsICAyOTEsICAyOTAsICAyODksICAyODQsICAy
ODMsICAyODIsICAyODEsCi0gICAgICAyODAsICAyNzksICAyNzYsICAyNzUsICAyNzQsICAyNzMs
ICAyNzIsICAyNzEsICAyNzAsICAyNjksCi0gICAgICAyNjgsICAyNjcsICAyNjYsICAyNjUsICAy
NjQsICAyNjMsICAyNjIsICAyNjEsICAyNTQsICAyNTMsCi0gICAgICAyNTIsICAyNTEsICAyNTAs
ICAyNDgsICAyNDQsICAyNDIsICAyNDEsICAyNDAsICAyMzYsICAyMzUsCi0gICAgICAyMzQsICAy
MzMsICAyMzIsICAyMzEsICAyMjgsICAyMjYsICAyMjEsICAyMjAsICAyMTksICAyMTcsCi0gICAg
ICAyMTYsICAyMTUsICAyMTMsICAyMTIsICAyMTEsICAyMTAsICAyMDksICAyMDgsICAyMDcsICAy
MDYsCi0gICAgICAyMDUsICAyMDQsICAyMDMsICAyMDIsICAyMDEsICAyMDAsICAxOTksICAxOTgs
ICAxOTcsICAxOTYsCi0gICAgICAxOTUsICAxOTMsICAxOTIsICAxOTEsICAxOTAsICAxODksICAx
ODgsICAxODcsICAxODYsICAxODUsCi0KLSAgICAgIDE4NCwgIDE4MywgIDE4MiwgIDE4MSwgIDE3
OSwgIDE3OCwgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwKLSAgICAgIDE3MywgIDE3MiwgIDE3MSwg
IDE3MCwgIDE2OSwgIDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2MywKLSAgICAgIDE2MiwgIDE0
NywgIDE0NSwgIDE0NCwgIDE0MywgIDE0MSwgIDE0MCwgIDEzOSwgIDEzOCwgIDEzNywKLSAgICAg
IDEzNiwgIDEzNCwgIDEzMywgIDEzMiwgIDEzMSwgIDEzMCwgIDEyOSwgIDEyOCwgIDEyNywgIDEy
NiwKLSAgICAgIDEyNSwgIDEyNCwgIDEyMywgIDEyMSwgIDExOCwgIDExNywgIDExNiwgIDExNSwg
IDExNCwgIDExMywKLSAgICAgIDExMSwgIDExMCwgIDEwOSwgIDEwOCwgIDEwNywgIDEwNiwgIDEw
NSwgIDEwNCwgIDEwMywgIDEwMiwKLSAgICAgIDEwMSwgIDEwMCwgICA5OSwgICA5OCwgICA5Nywg
ICA5NiwgICA5NSwgICA5MSwgICA4NywgICA2MCwKLSAgICAgICA1MywgICA0OCwgICA0NiwgICA0
MywgICA0MCwgICAyNywgICAyNCwgICAxNiwgICAxMSwgICAgNywKLSAgICAgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwK
LQotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4CisgICAgICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDgsICAgIDgsICAgIDksCisgICAgICAgMTMsICAg
MTUsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMjQsCisgICAg
ICAgMjQsICAgMzAsICAgMzAsICAgNDAsICAgMTUsICAgMTMsICAgNDcsICAgNDAsICAgIDksICAg
MTgsCisgICAgICAgNDcsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgs
ICAgMTksICAgMjksCisKKyAgICAgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAxOSwg
ICAxOSwgICAxOCwgICAyMiwgICAzMSwKKyAgICAgICA0MSwgICAzMSwgICAxOCwgICAyOSwgIDQ0
NCwgICAzMSwgICAxOSwgIDEzMywgIDQzOSwgIDEzMywKKyAgICAgICAxOCwgICAzMiwgICAzNCwg
ICA0MSwgICAzNCwgICAyMiwgICAzMywgICAyMiwgICAyMiwgICAxOSwKKyAgICAgICAzMywgICAz
MiwgICAzNSwgICAzNCwgICAzMiwgICAzMywgICAzNywgICAxOCwgICA1MSwgICAzOCwKKyAgICAg
ICAzNSwgICAzMywgICAzNSwgICA0MywgICAzNywgICAzNSwgICAzOCwgICA5OSwgIDQzOCwgICA0
NSwKKyAgICAgICA0OCwgICAzNSwgIDQzNywgICAzOCwgICA0OCwgICAzNywgICA0NSwgICA0NSwg
ICA0MywgICA0NiwKKyAgICAgICA5OSwgICA0MywgICA0NiwgICA0OCwgIDEwOSwgIDEyOSwgICA0
NSwgICA0NSwgIDE5OCwgICA0NSwKKyAgICAgICA0NiwgIDQzNiwgIDEwOSwgIDEyOSwgIDE1Miwg
IDE1MiwgIDE5OCwgICA0NiwgICA1MSwgICA2NCwKKyAgICAgICA2NCwgICA2NCwgICA2NCwgICA2
NCwgICA2NCwgICA2NCwgICA2NiwgICA2NiwgICA2NiwgICA2NiwKKyAgICAgICA2NiwgICA2Niwg
ICA2NiwgIDQzNSwgIDEwNywgICA2NCwgIDEyMiwgIDEwNywgIDEwNywgIDQwMSwKKworICAgICAg
NDAxLCAgMTA3LCAgIDY2LCAgMTA3LCAgMTc4LCAgMTc4LCAgMTc4LCAgNDM0LCAgIDY0LCAgNDMy
LAorICAgICAgNDMwLCAgMTIyLCAgNDI5LCAgNDI4LCAgIDY3LCAgIDY2LCAgIDY3LCAgIDY3LCAg
IDY3LCAgIDY3LAorICAgICAgIDY3LCAgIDY3LCAgIDY3LCAgIDY4LCAgNDI3LCAgIDY4LCAgIDY4
LCAgIDY4LCAgIDY4LCAgIDY4LAorICAgICAgIDY4LCAgIDY4LCAgIDY3LCAgMTQwLCAgMTQwLCAg
MTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLAorICAgICAgNDI2LCAgIDY4LCAgIDY5LCAgNDI0
LCAgIDY5LCAgIDY3LCAgNDIzLCAgIDY5LCAgIDY5LCAgIDY5LAorICAgICAgIDY5LCAgIDY5LCAg
IDY5LCAgIDY5LCAgIDY4LCAgMTM3LCAgNDIyLCAgMTM3LCAgNDIxLCAgNDIwLAorICAgICAgMTM3
LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM4LCAgMTM4LCAgMTM4LAor
ICAgICAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LCAgMjAyLCAgMjAyLCAgMjAyLCAgNDE5LCAgNDE4
LCAgMTM5LAorICAgICAgNDE3LCAgMTM5LCAgNDE2LCAgMTM4LCAgMTM5LCAgMTM5LCAgMTM5LCAg
MTM5LCAgMTM5LCAgMTM5LAorICAgICAgMTM5LCAgMjEzLCAgMjEzLCAgMjEzLCAgNDE0LCAgNDEz
LCAgMTM4LCAgMTQxLCAgMTQxLCAgMTQxLAorCisgICAgICAxNDEsICAxNDEsICAxNDEsICAxNDEs
ICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsCisgICAgICAyMDYsICAyMDcsICAy
MDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDgsICAyMDgsCisgICAgICAyMDgs
ICAyMDgsICAyMDgsICAyMDgsICAyMDgsICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksCisg
ICAgICAyMDksICAyMDksICAyMjEsICAyMjEsICAyMjEsICAyMjksICAyMjksICAyMjksICAyMzMs
ICAyMzMsCisgICAgICAyMzMsICAyMzksICAyMzksICAyMzksICAzNzIsICAzNzIsICAzNzIsICA0
MTIsICA0MTEsICA0MTAsCisgICAgICA0MDksICA0MDgsICA0MDcsICA0MDYsICA0MDUsICA0MDQs
ICA0MDMsICAzNzIsICA0MDIsICAzNzIsCisgICAgICA0NDMsICA0NDMsICA0MDAsICAzOTEsICAz
OTAsICAzODksICAzODgsICAzODcsICAzODYsICAzODQsCisgICAgICAzODMsICAzODIsICAzNzks
ICAzNzgsICAzNzYsICAzNzMsICAzNzEsICAzNzAsICAzNjksICAzNjcsCisgICAgICAzNjYsICAz
NjUsICAzNjIsICAzNjEsICAzNjAsICAzNTksICAzNTgsICAzNTcsICAzNTYsICAzNTUsCisgICAg
ICAzNDksICAzNDYsICAzNDMsICAzNDIsICAzNDEsICAzNDAsICAzMzksICAzMzcsICAzMzUsICAz
MzQsCisKKyAgICAgIDMzMywgIDMzMiwgIDMzMCwgIDMyOSwgIDMyNywgIDMyNSwgIDMyNCwgIDMy
MywgIDMyMiwgIDMyMSwKKyAgICAgIDMyMCwgIDMxOSwgIDMxOCwgIDMxNiwgIDMxNSwgIDMxNCwg
IDMxMywgIDMxMiwgIDMxMSwgIDMxMCwKKyAgICAgIDMwOSwgIDMwOCwgIDMwNCwgIDMwMywgIDMw
MCwgIDI4OSwgIDI4NSwgIDI4NCwgIDI4MywgIDI4MiwKKyAgICAgIDI3NSwgIDI3NCwgIDI3Mywg
IDI2OCwgIDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2MCwKKyAgICAgIDI1OSwgIDI1
OCwgIDI1NywgIDI1NiwgIDI1NSwgIDI1NCwgIDI1MywgIDI1MiwgIDI1MSwgIDI1MCwKKyAgICAg
IDI0OSwgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDIzOCwgIDIzNywgIDIzNiwgIDIzNSwgIDIz
NCwKKyAgICAgIDIzMiwgIDIyOCwgIDIyNiwgIDIyNSwgIDIyNCwgIDIyMCwgIDIxOSwgIDIxOCwg
IDIxNywgIDIxNiwKKyAgICAgIDIxNSwgIDIxMiwgIDIxMCwgIDIwNSwgIDIwNCwgIDIwMywgIDIw
MSwgIDIwMCwgIDE5OSwgIDE5NywKKyAgICAgIDE5NiwgIDE5NSwgIDE5NCwgIDE5MywgIDE5Miwg
IDE5MSwgIDE5MCwgIDE4OSwgIDE4OCwgIDE4NywKKyAgICAgIDE4NiwgIDE4NSwgIDE4NCwgIDE4
MywgIDE4MiwgIDE4MSwgIDE4MCwgIDE3OSwgIDE3NywgIDE3NiwKKworICAgICAgMTc1LCAgMTc0
LCAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LCAgMTY3LCAgMTY2LAorICAgICAg
MTY1LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTU4LCAgMTU3LCAgMTU2LCAgMTU1
LAorICAgICAgMTU0LCAgMTUzLCAgMTUxLCAgMTUwLCAgMTQ5LCAgMTQ4LCAgMTQ3LCAgMTQ2LCAg
MTM0LCAgMTMyLAorICAgICAgMTMxLCAgMTMwLCAgMTI4LCAgMTI3LCAgMTI2LCAgMTI1LCAgMTI0
LCAgMTIzLCAgMTIxLCAgMTIwLAorICAgICAgMTE5LCAgMTE4LCAgMTE3LCAgMTE2LCAgMTE1LCAg
MTE0LCAgMTEzLCAgMTEyLCAgMTExLCAgMTEwLAorICAgICAgMTA4LCAgMTA1LCAgMTA0LCAgMTAz
LCAgMTAyLCAgMTAxLCAgMTAwLCAgIDk4LCAgIDk3LCAgIDk2LAorICAgICAgIDk1LCAgIDk0LCAg
IDkzLCAgIDkyLCAgIDkxLCAgIDkwLCAgIDg5LCAgIDg4LCAgIDg3LCAgIDg2LAorICAgICAgIDg1
LCAgIDg0LCAgIDgzLCAgIDgyLCAgIDc4LCAgIDc0LCAgIDQ5LCAgIDQ0LCAgIDQyLCAgIDM5LAor
ICAgICAgIDM2LCAgIDIzLCAgIDIwLCAgIDE3LCAgIDEyLCAgICA3LCAgICAzLCAgNDQyLCAgNDQy
LCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLCAgNDQyLAorCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisg
ICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIKICAgICB9IDsKIAogLyog
VGFibGUgb2YgYm9vbGVhbnMsIHRydWUgaWYgcnVsZSBjb3VsZCBtYXRjaCBlb2wuICovCi1zdGF0
aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfcnVsZV9jYW5fbWF0Y2hfZW9sWzE1Nl0gPQorc3Rh
dGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X3J1bGVfY2FuX21hdGNoX2VvbFsxNDhdID0KICAg
ICB7ICAgMCwKLTAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIAorMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
CiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwg
MCwgMCwgICAgIH07CisgICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgICAgIH07CiAKIC8qIFRo
ZSBpbnRlbnQgYmVoaW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB0aGF0IGl0J2xsIGNhdGNoCiAgKiBh
bnkgdXNlcyBvZiBSRUpFQ1Qgd2hpY2ggZmxleCBtaXNzZWQuCkBAIC04MTcsNyArNzkyLDEwIEBA
IFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlIDogNDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZh
bC0+bGV4LmxpbmUgPSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9maWxlID0geXlsbG9j
LT5sYXN0X2ZpbGUgPSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGxv
Yy0+bGFzdF9saW5lID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQs
IG1heF9zaXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5
c2Nhbm5lcik7CiAKQEAgLTgyNiw4ICs4MDQsNiBAQCBzdGF0aWMgaW50IGNoZWNrX3R5cGUoeXlz
Y2FuX3QgeXlzY2FubmVyCiBzdGF0aWMgaW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2Fu
bmVyKTsKIAogI2RlZmluZSBJTklUSUFMIDAKLSNkZWZpbmUgQ09NTUVOVCAxCi0jZGVmaW5lIEZJ
RUxEUyAyCiAKICNkZWZpbmUgWVlfRVhUUkFfVFlQRSBUUGFyc2VDb250ZXh0KgogCkBAIC04NjUs
NiArODQxLDggQEAgc3RydWN0IHl5Z3V0c190CiAKICAgICBZWVNUWVBFICogeXlsdmFsX3I7CiAK
KyAgICBZWUxUWVBFICogeXlsbG9jX3I7CisKICAgICB9OyAvKiBlbmQgc3RydWN0IHl5Z3V0c190
ICovCiAKIHN0YXRpYyBpbnQgeXlfaW5pdF9nbG9iYWxzICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsK
QEAgLTg3Myw2ICs4NTEsOCBAQCBzdGF0aWMgaW50IHl5X2luaXRfZ2xvYmFscyAoeXlzY2FuX3Qg
eXlzCiAgICAgICogZnJvbSBiaXNvbiBvdXRwdXQgaW4gc2VjdGlvbiAxLiovCiAgICAgIyAgICBk
ZWZpbmUgeXlsdmFsIHl5Zy0+eXlsdmFsX3IKICAgICAKKyAgICAjICAgIGRlZmluZSB5eWxsb2Mg
eXlnLT55eWxsb2NfcgorICAgIAogaW50IHl5bGV4X2luaXQgKHl5c2Nhbl90KiBzY2FubmVyKTsK
IAogaW50IHl5bGV4X2luaXRfZXh0cmEgKFlZX0VYVFJBX1RZUEUgdXNlcl9kZWZpbmVkLHl5c2Nh
bl90KiBzY2FubmVyKTsKQEAgLTkxMCw2ICs4OTAsMTAgQEAgWVlTVFlQRSAqIHl5Z2V0X2x2YWwg
KHl5c2Nhbl90IHl5c2Nhbm5lcgogCiB2b2lkIHl5c2V0X2x2YWwgKFlZU1RZUEUgKiB5eWx2YWxf
cGFyYW0gLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisgICAgICAgWVlMVFlQRSAqeXlnZXRfbGxv
YyAoeXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAgCisgICAgICAgIHZvaWQgeXlzZXRfbGxvYyAo
WVlMVFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAgCiAvKiBN
YWNyb3MgYWZ0ZXIgdGhpcyBwb2ludCBjYW4gYWxsIGJlIG92ZXJyaWRkZW4gYnkgdXNlciBkZWZp
bml0aW9ucyBpbgogICogc2VjdGlvbiAxLgogICovCkBAIC05NDAsMTIgKzkyNCw2IEBAIHN0YXRp
YyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCiAjZW5kaWYKIAotICAgIHN0YXRp
YyB2b2lkIHl5X3B1c2hfc3RhdGUgKGludCBuZXdfc3RhdGUgLHl5c2Nhbl90IHl5c2Nhbm5lcik7
Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgeXlfcG9wX3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIg
KTsKLSAgICAKLSAgICBzdGF0aWMgaW50IHl5X3RvcF9zdGF0ZSAoeXlzY2FuX3QgeXlzY2FubmVy
ICk7Ci0gICAgCiAvKiBBbW91bnQgb2Ygc3R1ZmYgdG8gc2x1cnAgdXAgd2l0aCBlYWNoIHJlYWQu
ICovCiAjaWZuZGVmIFlZX1JFQURfQlVGX1NJWkUKICNkZWZpbmUgWVlfUkVBRF9CVUZfU0laRSA4
MTkyCkBAIC0xMDIyLDEwICsxMDAwLDEwIEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5
c2Nhbm5lciApOwogI2RlZmluZSBZWV9ERUNMX0lTX09VUlMgMQogCiBleHRlcm4gaW50IHl5bGV4
IFwKLSAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFtICx5eXNjYW5fdCB5eXNj
YW5uZXIpOworICAgICAgICAgICAgICAgKFlZU1RZUEUgKiB5eWx2YWxfcGFyYW0sWVlMVFlQRSAq
IHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyKTsKIAogI2RlZmluZSBZWV9ERUNMIGlu
dCB5eWxleCBcCi0gICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSAsIHl5c2Nh
bl90IHl5c2Nhbm5lcikKKyAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFtLCBZ
WUxUWVBFICogeXlsbG9jX3BhcmFtICwgeXlzY2FuX3QgeXlzY2FubmVyKQogI2VuZGlmIC8qICFZ
WV9ERUNMICovCiAKIC8qIENvZGUgZXhlY3V0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHJ1
bGUsIGFmdGVyIHl5dGV4dCBhbmQgeXlsZW5nCkBAIC0xMDUyLDEyICsxMDMwLDEwIEBAIFlZX0RF
Q0wKIAlyZWdpc3RlciBpbnQgeXlfYWN0OwogICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChz
dHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKIAotICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQg
PSB5eWV4dHJhOwotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMgKi8KLQogICAgIHl5bHZh
bCA9IHl5bHZhbF9wYXJhbTsKIAorICAgIHl5bGxvYyA9IHl5bGxvY19wYXJhbTsKKwogCWlmICgg
IXl5Zy0+eXlfaW5pdCApCiAJCXsKIAkJeXlnLT55eV9pbml0ID0gMTsKQEAgLTExMDksMTMgKzEw
ODUsMTMgQEAgeXlfbWF0Y2g6CiAJCQl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRf
c3RhdGVdICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQkJewogCQkJCXl5X2N1cnJl
bnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCQkJaWYgKCB5eV9j
dXJyZW50X3N0YXRlID49IDQ1OSApCisJCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ0MyAp
CiAJCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJCX0KIAkJCXl5
X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNp
Z25lZCBpbnQpIHl5X2NdOwogCQkJKyt5eV9jcDsKIAkJCX0KLQkJd2hpbGUgKCB5eV9jdXJyZW50
X3N0YXRlICE9IDQ1OCApOworCQl3aGlsZSAoIHl5X2N1cnJlbnRfc3RhdGUgIT0gNDQyICk7CiAJ
CXl5X2NwID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19jcG9zOwogCQl5eV9jdXJyZW50X3N0YXRl
ID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19zdGF0ZTsKIApAQCAtMTE0OSwxOTggKzExMjUsMTk5
IEBAIGRvX2FjdGlvbjoJLyogVGhpcyBsYWJlbCBpcyB1c2VkIG9ubHkgdG8KIAogY2FzZSAxOgog
WVlfUlVMRV9TRVRVUAotOworeyByZXR1cm4gSU5WQVJJQU5UOyB9CiAJWVlfQlJFQUsKLS8qIE11
bHRpLWxpbmUgY29tbWVudHMgKi8KIGNhc2UgMjoKIFlZX1JVTEVfU0VUVVAKLXsgeXlfcHVzaF9z
dGF0ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9Cit7IHJldHVybiBISUdIX1BSRUNJU0lPTjsgfQog
CVlZX0JSRUFLCiBjYXNlIDM6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBNRURJVU1fUFJFQ0lT
SU9OOyB9CisJWVlfQlJFQUsKIGNhc2UgNDoKLS8qIHJ1bGUgNCBjYW4gbWF0Y2ggZW9sICovCiBZ
WV9SVUxFX1NFVFVQCi07Cit7IHJldHVybiBMT1dfUFJFQ0lTSU9OOyB9CiAJWVlfQlJFQUsKIGNh
c2UgNToKIFlZX1JVTEVfU0VUVVAKLXsgeXlfcG9wX3N0YXRlKHl5c2Nhbm5lcik7IH0KK3sgcmV0
dXJuIFBSRUNJU0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDY6CiBZWV9SVUxFX1NFVFVQCi17IHJl
dHVybihJTlZBUklBTlQpOyB9Cit7IHJldHVybiBBVFRSSUJVVEU7IH0KIAlZWV9CUkVBSwogY2Fz
ZSA3OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Cit7IHJldHVy
biBDT05TVF9RVUFMOyB9CiAJWVlfQlJFQUsKIGNhc2UgODoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0
dXJuKE1FRElVTV9QUkVDSVNJT04pOyB9Cit7IHJldHVybiBVTklGT1JNOyB9CiAJWVlfQlJFQUsK
IGNhc2UgOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKExPV19QUkVDSVNJT04pOyB9Cit7IHJl
dHVybiBWQVJZSU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA6CiBZWV9SVUxFX1NFVFVQCi17IHJl
dHVybihQUkVDSVNJT04pOyB9Cit7IHJldHVybiBCUkVBSzsgfQogCVlZX0JSRUFLCiBjYXNlIDEx
OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQVRUUklCVVRFKTsgfQoreyByZXR1cm4gQ09OVElO
VUU7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKENPTlNU
X1FVQUwpOyB9Cit7IHJldHVybiBETzsgfQogCVlZX0JSRUFLCiBjYXNlIDEzOgogWVlfUlVMRV9T
RVRVUAoteyByZXR1cm4oVU5JRk9STSk7IH0KK3sgcmV0dXJuIEZPUjsgfQogCVlZX0JSRUFLCiBj
YXNlIDE0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oVkFSWUlORyk7IH0KK3sgcmV0dXJuIFdI
SUxFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTU6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihCUkVB
Syk7IH0KK3sgcmV0dXJuIElGOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTY6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybihDT05USU5VRSk7IH0KK3sgcmV0dXJuIEVMU0U7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxNzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKERPKTsgfQoreyByZXR1cm4gSU5fUVVBTDsg
fQogCVlZX0JSRUFLCiBjYXNlIDE4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oRk9SKTsgfQor
eyByZXR1cm4gT1VUX1FVQUw7IH0KIAlZWV9CUkVBSwogY2FzZSAxOToKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuKFdISUxFKTsgfQoreyByZXR1cm4gSU5PVVRfUVVBTDsgfQogCVlZX0JSRUFLCiBj
YXNlIDIwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSUYpOyB9Cit7IHJldHVybiBGTE9BVF9U
WVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjE6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihFTFNF
KTsgfQoreyByZXR1cm4gSU5UX1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAyMjoKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKElOX1FVQUwpOyB9Cit7IHJldHVybiBWT0lEX1RZUEU7IH0KIAlZWV9C
UkVBSwogY2FzZSAyMzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKE9VVF9RVUFMKTsgfQoreyBy
ZXR1cm4gQk9PTF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjQ6CiBZWV9SVUxFX1NFVFVQCi17
IHJldHVybihJTk9VVF9RVUFMKTsgfQoreyB5eWx2YWwtPmxleC5iID0gdHJ1ZTsgIHJldHVybiBC
T09MQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAyNToKIFlZX1JVTEVfU0VUVVAKLXsgY29u
dGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEZMT0FUX1RZUEUpOyB9Cit7IHl5bHZh
bC0+bGV4LmIgPSBmYWxzZTsgcmV0dXJuIEJPT0xDT05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNl
IDI2OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1
cm4oSU5UX1RZUEUpOyB9Cit7IHJldHVybiBESVNDQVJEOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjc6
CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihW
T0lEX1RZUEUpOyB9Cit7IHJldHVybiBSRVRVUk47IH0KIAlZWV9CUkVBSwogY2FzZSAyODoKIFlZ
X1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEJPT0xf
VFlQRSk7IH0KK3sgcmV0dXJuIE1BVFJJWDI7IH0KIAlZWV9CUkVBSwogY2FzZSAyOToKIFlZX1JV
TEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4oQk9PTENPTlNUQU5UKTsg
fQoreyByZXR1cm4gTUFUUklYMzsgfQogCVlZX0JSRUFLCiBjYXNlIDMwOgogWVlfUlVMRV9TRVRV
UAoteyB5eWx2YWwtPmxleC5iID0gZmFsc2U7IHJldHVybihCT09MQ09OU1RBTlQpOyB9Cit7IHJl
dHVybiBNQVRSSVg0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzE6CiBZWV9SVUxFX1NFVFVQCi17IHJl
dHVybihESVNDQVJEKTsgfQoreyByZXR1cm4gVkVDMjsgfQogCVlZX0JSRUFLCiBjYXNlIDMyOgog
WVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUkVUVVJOKTsgfQoreyByZXR1cm4gVkVDMzsgfQogCVlZ
X0JSRUFLCiBjYXNlIDMzOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4oTUFUUklYMik7IH0KK3sgcmV0dXJuIFZFQzQ7IH0KIAlZWV9CUkVBSwog
Y2FzZSAzNDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsg
cmV0dXJuKE1BVFJJWDMpOyB9Cit7IHJldHVybiBJVkVDMjsgfQogCVlZX0JSRUFLCiBjYXNlIDM1
OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4o
TUFUUklYNCk7IH0KK3sgcmV0dXJuIElWRUMzOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzY6CiBZWV9S
VUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDMik7
IH0KK3sgcmV0dXJuIElWRUM0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzc6CiBZWV9SVUxFX1NFVFVQ
Ci17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDMyk7IH0KK3sgcmV0
dXJuIEJWRUMyOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzg6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRl
eHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KK3sgcmV0dXJuIEJWRUMz
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzk6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFm
dGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzIpOyB9Cit7IHJldHVybiBCVkVDNDsgfQogCVlZ
X0JSRUFLCiBjYXNlIDQwOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4gKElWRUMzKTsgfQoreyByZXR1cm4gU0FNUExFUjJEOyB9CiAJWVlfQlJF
QUsKIGNhc2UgNDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRy
dWU7IHJldHVybiAoSVZFQzQpOyB9Cit7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQogCVlZX0JSRUFL
CiBjYXNlIDQyOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVl
OyByZXR1cm4gKEJWRUMyKTsgfQoreyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KIAlZ
WV9CUkVBSwogY2FzZSA0MzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gdHJ1ZTsgcmV0dXJuIChCVkVDMyk7IH0KK3sgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAlZ
WV9CUkVBSwogY2FzZSA0NDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KK3sgcmV0dXJuIFNUUlVDVDsgfQogCVlZX0JSRUFL
CiBjYXNlIDQ1OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVl
OyByZXR1cm4gU0FNUExFUjJEOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7
IH0KIAlZWV9CUkVBSwogY2FzZSA0NjoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0
ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJDVUJFOyB9Cit7IHJldHVybiByZXNlcnZlZF93
b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NzoKIFlZX1JVTEVfU0VUVVAKLXsg
Y29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJfRVhURVJOQUxfT0VT
OyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2Fz
ZSA0ODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KK3sgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsg
fQogCVlZX0JSRUFLCiBjYXNlIDQ5OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRl
clR5cGUgPSB0cnVlOyByZXR1cm4oU1RSVUNUKTsgfQoreyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5
eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNTA6CiBZWV9SVUxFX1NFVFVQCkBAIC0xNTE2
LDI2NiArMTQ5MywyMjggQEAgWVlfUlVMRV9TRVRVUAogCVlZX0JSRUFLCiBjYXNlIDkzOgogWVlf
UlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7CisgICB5
eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAKKyAgIHJldHVybiBj
aGVja190eXBlKHl5c2Nhbm5lcik7Cit9CiAJWVlfQlJFQUsKIGNhc2UgOTQ6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KK3sgeXlsdmFsLT5sZXgu
aSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09O
U1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5NToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIHJl
c2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8
aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05TVEFOVDsgfQogCVlZX0JS
RUFLCiBjYXNlIDk2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNj
YW5uZXIpOyB9Cit7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRl
eHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgOTc6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KK3sgeXls
dmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJu
IEZMT0FUQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5ODoKIFlZX1JVTEVfU0VUVVAKLXsK
LSAgIHl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5nKHl5dGV4dCk7IAotICAgcmV0
dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKLX0KK3sgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19j
YXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KIAlZ
WV9CUkVBSwogY2FzZSA5OToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguaSA9IHN0YXRp
Y19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9
Cit7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7
IHJldHVybiBGTE9BVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAwOgogWVlfUlVMRV9T
RVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAw
LCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIEFERF9BU1NJR047IH0KIAlZ
WV9CUkVBSwogY2FzZSAxMDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmVycm9yKHl5bGlu
ZW5vLCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+cmVjb3Zlcigp
OyByZXR1cm4gMDt9Cit7IHJldHVybiBTVUJfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAy
OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0
b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIE1VTF9B
U1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDM6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+
bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9B
VENPTlNUQU5UKTsgfQoreyByZXR1cm4gRElWX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEw
NDoKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0Pihh
dG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Cit7IHJldHVybiBNT0Rf
QVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA1OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwt
PmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4oRkxP
QVRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIExFRlRfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
MTA2OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEFERF9BU1NJR04pOyB9Cit7IHJldHVybiBS
SUdIVF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDc6CiBZWV9SVUxFX1NFVFVQCi17ICBy
ZXR1cm4oU1VCX0FTU0lHTik7IH0KK3sgcmV0dXJuIEFORF9BU1NJR047IH0KIAlZWV9CUkVBSwog
Y2FzZSAxMDg6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KK3sgcmV0
dXJuIFhPUl9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDk6CiBZWV9SVUxFX1NFVFVQCi17
ICByZXR1cm4oRElWX0FTU0lHTik7IH0KK3sgcmV0dXJuIE9SX0FTU0lHTjsgfQogCVlZX0JSRUFL
CiBjYXNlIDExMDoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihNT0RfQVNTSUdOKTsgfQoreyBy
ZXR1cm4gSU5DX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTExOgogWVlfUlVMRV9TRVRVUAoteyAg
cmV0dXJuKExFRlRfQVNTSUdOKTsgfQoreyByZXR1cm4gREVDX09QOyB9CiAJWVlfQlJFQUsKIGNh
c2UgMTEyOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFJJR0hUX0FTU0lHTik7IH0KK3sgcmV0
dXJuIEFORF9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExMzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJl
dHVybihBTkRfQVNTSUdOKTsgfQoreyByZXR1cm4gT1JfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAx
MTQ6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oWE9SX0FTU0lHTik7IH0KK3sgcmV0dXJuIFhP
Ul9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihP
Ul9BU1NJR04pOyB9Cit7IHJldHVybiBMRV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNjoKIFlZ
X1JVTEVfU0VUVVAKLXsgIHJldHVybihJTkNfT1ApOyB9Cit7IHJldHVybiBHRV9PUDsgfQogCVlZ
X0JSRUFLCiBjYXNlIDExNzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihERUNfT1ApOyB9Cit7
IHJldHVybiBFUV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExODoKIFlZX1JVTEVfU0VUVVAKLXsg
IHJldHVybihBTkRfT1ApOyB9Cit7IHJldHVybiBORV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDEx
OToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihPUl9PUCk7IH0KK3sgcmV0dXJuIExFRlRfT1A7
IH0KIAlZWV9CUkVBSwogY2FzZSAxMjA6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oWE9SX09Q
KTsgfQoreyByZXR1cm4gUklHSFRfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjE6CiBZWV9SVUxF
X1NFVFVQCi17ICByZXR1cm4oTEVfT1ApOyB9Cit7IHJldHVybiBTRU1JQ09MT047IH0KIAlZWV9C
UkVBSwogY2FzZSAxMjI6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oR0VfT1ApOyB9Cit7IHJl
dHVybiBMRUZUX0JSQUNFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIzOgogWVlfUlVMRV9TRVRVUAot
eyAgcmV0dXJuKEVRX09QKTsgfQoreyByZXR1cm4gUklHSFRfQlJBQ0U7IH0KIAlZWV9CUkVBSwog
Y2FzZSAxMjQ6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTkVfT1ApOyB9Cit7IHJldHVybiBD
T01NQTsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihM
RUZUX09QKTsgfQoreyByZXR1cm4gQ09MT047IH0KIAlZWV9CUkVBSwogY2FzZSAxMjY6CiBZWV9S
VUxFX1NFVFVQCi17ICByZXR1cm4oUklHSFRfT1ApOyB9Cit7IHJldHVybiBFUVVBTDsgfQogCVlZ
X0JSRUFLCiBjYXNlIDEyNzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gZmFsc2U7IHJldHVybihTRU1JQ09MT04pOyB9Cit7IHJldHVybiBMRUZUX1BBUkVOOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMTI4OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5
cGUgPSBmYWxzZTsgcmV0dXJuKExFRlRfQlJBQ0UpOyB9Cit7IHJldHVybiBSSUdIVF9QQVJFTjsg
fQogCVlZX0JSRUFLCiBjYXNlIDEyOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJJR0hUX0JS
QUNFKTsgfQoreyByZXR1cm4gTEVGVF9CUkFDS0VUOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMwOgog
WVlfUlVMRV9TRVRVUAoteyBpZiAoY29udGV4dC0+aW5UeXBlUGFyZW4pIGNvbnRleHQtPmxleEFm
dGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Cit7IHJldHVybiBSSUdIVF9CUkFDS0VU
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQ09MT04p
OyB9Cit7IHJldHVybiBET1Q7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzI6CiBZWV9SVUxFX1NFVFVQ
Ci17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oRVFVQUwpOyB9Cit7IHJl
dHVybiBCQU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMzOgogWVlfUlVMRV9TRVRVUAoteyBjb250
ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgY29udGV4dC0+aW5UeXBlUGFyZW4gPSB0cnVlOyBy
ZXR1cm4oTEVGVF9QQVJFTik7IH0KK3sgcmV0dXJuIERBU0g7IH0KIAlZWV9CUkVBSwogY2FzZSAx
MzQ6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmluVHlwZVBhcmVuID0gZmFsc2U7IHJldHVy
bihSSUdIVF9QQVJFTik7IH0KK3sgcmV0dXJuIFRJTERFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM1
OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oTEVGVF9CUkFDS0VUKTsgfQoreyByZXR1cm4gUExV
UzsgfQogCVlZX0JSRUFLCiBjYXNlIDEzNjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJJR0hU
X0JSQUNLRVQpOyB9Cit7IHJldHVybiBTVEFSOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM3OgogWVlf
UlVMRV9TRVRVUAoteyBCRUdJTihGSUVMRFMpOyAgcmV0dXJuKERPVCk7IH0KK3sgcmV0dXJuIFNM
QVNIOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQkFO
Ryk7IH0KK3sgcmV0dXJuIFBFUkNFTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzk6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybihEQVNIKTsgfQoreyByZXR1cm4gTEVGVF9BTkdMRTsgfQogCVlZX0JS
RUFLCiBjYXNlIDE0MDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFRJTERFKTsgfQoreyByZXR1
cm4gUklHSFRfQU5HTEU7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDE6CiBZWV9SVUxFX1NFVFVQCi17
IHJldHVybihQTFVTKTsgfQoreyByZXR1cm4gVkVSVElDQUxfQkFSOyB9CiAJWVlfQlJFQUsKIGNh
c2UgMTQyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oU1RBUik7IH0KK3sgcmV0dXJuIENBUkVU
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oU0xBU0gp
OyB9Cit7IHJldHVybiBBTVBFUlNBTkQ7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDQ6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybihQRVJDRU5UKTsgfQoreyByZXR1cm4gUVVFU1RJT047IH0KIAlZWV9C
UkVBSwogY2FzZSAxNDU6CisvKiBydWxlIDE0NSBjYW4gbWF0Y2ggZW9sICovCiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybihMRUZUX0FOR0xFKTsgfQotCVlZX0JSRUFLCi1jYXNlIDE0NjoKLVlZX1JV
TEVfU0VUVVAKLXsgcmV0dXJuKFJJR0hUX0FOR0xFKTsgfQotCVlZX0JSRUFLCi1jYXNlIDE0NzoK
LVlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFZFUlRJQ0FMX0JBUik7IH0KLQlZWV9CUkVBSwotY2Fz
ZSAxNDg6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihDQVJFVCk7IH0KLQlZWV9CUkVBSwotY2Fz
ZSAxNDk6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihBTVBFUlNBTkQpOyB9Ci0JWVlfQlJFQUsK
LWNhc2UgMTUwOgotWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUVVFU1RJT04pOyB9Ci0JWVlfQlJF
QUsKLWNhc2UgMTUxOgotWVlfUlVMRV9TRVRVUAoteyAKLSAgICBCRUdJTihJTklUSUFMKTsKLSAg
ICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAKLSAgICByZXR1
cm4gRklFTERfU0VMRUNUSU9OOwotfQotCVlZX0JSRUFLCi1jYXNlIDE1MjoKLVlZX1JVTEVfU0VU
VVAKLXt9Ci0JWVlfQlJFQUsKLWNhc2UgMTUzOgotLyogcnVsZSAxNTMgY2FuIG1hdGNoIGVvbCAq
LwotWVlfUlVMRV9TRVRVUAoteyAgfQoreyB9CiAJWVlfQlJFQUsKIGNhc2UgWVlfU1RBVEVfRU9G
KElOSVRJQUwpOgotY2FzZSBZWV9TVEFURV9FT0YoQ09NTUVOVCk6Ci1jYXNlIFlZX1NUQVRFX0VP
RihGSUVMRFMpOgoteyBjb250ZXh0LT5BZnRlckVPRiA9IHRydWU7IHl5dGVybWluYXRlKCk7IH0K
K3sgeXl0ZXJtaW5hdGUoKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE1NDoKK2Nhc2UgMTQ2OgogWVlf
UlVMRV9TRVRVUAoteyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBjaGFyIiwg
eXl0ZXh0LCAiIik7IHJldHVybiAwOyB9Cit7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAJ
WVlfQlJFQUsKLWNhc2UgMTU1OgorY2FzZSAxNDc6CiBZWV9SVUxFX1NFVFVQCiBFQ0hPOwogCVlZ
X0JSRUFLCkBAIC0yMDcxLDcgKzIwMTAsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZl
ciAoeXlzY2FuX3QgCiAJCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0g
KyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJCXsKIAkJCXl5X2N1cnJlbnRfc3RhdGUg
PSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCQlpZiAoIHl5X2N1cnJlbnRfc3Rh
dGUgPj0gNDU5ICkKKwkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NDMgKQogCQkJCXl5X2Mg
PSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJfQogCQl5eV9jdXJyZW50X3N0YXRl
ID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9j
XTsKQEAgLTIxMDAsMTEgKzIwMzksMTEgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIg
KHl5c2Nhbl90IAogCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyB5
eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJewogCQl5eV9jdXJyZW50X3N0YXRlID0gKGlu
dCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0g
NDU5ICkKKwkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ0MyApCiAJCQl5eV9jID0geXlfbWV0
YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJfQogCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRb
eXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwotCXl5X2lz
X2phbSA9ICh5eV9jdXJyZW50X3N0YXRlID09IDQ1OCk7CisJeXlfaXNfamFtID0gKHl5X2N1cnJl
bnRfc3RhdGUgPT0gNDQyKTsKIAogCXJldHVybiB5eV9pc19qYW0gPyAwIDogeXlfY3VycmVudF9z
dGF0ZTsKIH0KQEAgLTI1NDgsNDYgKzI0ODcsNiBAQCBZWV9CVUZGRVJfU1RBVEUgeXlfc2Nhbl9i
eXRlcyAgKHl5Y29uc3QgCiAJcmV0dXJuIGI7CiB9CiAKLSAgICBzdGF0aWMgdm9pZCB5eV9wdXNo
X3N0YXRlIChpbnQgIG5ld19zdGF0ZSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBzdHJ1
Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0JaWYgKCB5
eWctPnl5X3N0YXJ0X3N0YWNrX3B0ciA+PSB5eWctPnl5X3N0YXJ0X3N0YWNrX2RlcHRoICkKLQkJ
ewotCQl5eV9zaXplX3QgbmV3X3NpemU7Ci0KLQkJeXlnLT55eV9zdGFydF9zdGFja19kZXB0aCAr
PSBZWV9TVEFSVF9TVEFDS19JTkNSOwotCQluZXdfc2l6ZSA9IHl5Zy0+eXlfc3RhcnRfc3RhY2tf
ZGVwdGggKiBzaXplb2YoIGludCApOwotCi0JCWlmICggISB5eWctPnl5X3N0YXJ0X3N0YWNrICkK
LQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sgPSAoaW50ICopIHl5YWxsb2MobmV3X3NpemUgLHl5c2Nh
bm5lciApOwotCi0JCWVsc2UKLQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sgPSAoaW50ICopIHl5cmVh
bGxvYygodm9pZCAqKSB5eWctPnl5X3N0YXJ0X3N0YWNrLG5ld19zaXplICx5eXNjYW5uZXIgKTsK
LQotCQlpZiAoICEgeXlnLT55eV9zdGFydF9zdGFjayApCi0JCQlZWV9GQVRBTF9FUlJPUiggIm91
dCBvZiBtZW1vcnkgZXhwYW5kaW5nIHN0YXJ0LWNvbmRpdGlvbiBzdGFjayIgKTsKLQkJfQotCi0J
eXlnLT55eV9zdGFydF9zdGFja1t5eWctPnl5X3N0YXJ0X3N0YWNrX3B0cisrXSA9IFlZX1NUQVJU
OwotCi0JQkVHSU4obmV3X3N0YXRlKTsKLX0KLQotICAgIHN0YXRpYyB2b2lkIHl5X3BvcF9zdGF0
ZSAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAo
c3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0JaWYgKCAtLXl5Zy0+eXlfc3RhcnRfc3RhY2tf
cHRyIDwgMCApCi0JCVlZX0ZBVEFMX0VSUk9SKCAic3RhcnQtY29uZGl0aW9uIHN0YWNrIHVuZGVy
ZmxvdyIgKTsKLQotCUJFR0lOKHl5Zy0+eXlfc3RhcnRfc3RhY2tbeXlnLT55eV9zdGFydF9zdGFj
a19wdHJdKTsKLX0KLQotICAgIHN0YXRpYyBpbnQgeXlfdG9wX3N0YXRlICAoeXlzY2FuX3QgeXlz
Y2FubmVyKQotewotICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3Qq
KXl5c2Nhbm5lcjsKLQlyZXR1cm4geXlnLT55eV9zdGFydF9zdGFja1t5eWctPnl5X3N0YXJ0X3N0
YWNrX3B0ciAtIDFdOwotfQotCiAjaWZuZGVmIFlZX0VYSVRfRkFJTFVSRQogI2RlZmluZSBZWV9F
WElUX0ZBSUxVUkUgMgogI2VuZGlmCkBAIC0yNzczLDYgKzI2NzIsMTggQEAgdm9pZCB5eXNldF9s
dmFsIChZWVNUWVBFICogIHl5bHZhbF9wYXJhbQogICAgIHl5bHZhbCA9IHl5bHZhbF9wYXJhbTsK
IH0KIAorWVlMVFlQRSAqeXlnZXRfbGxvYyAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKK3sKKyAgICBz
dHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisgICAg
cmV0dXJuIHl5bGxvYzsKK30KKyAgICAKK3ZvaWQgeXlzZXRfbGxvYyAoWVlMVFlQRSAqICB5eWxs
b2NfcGFyYW0gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0IHl5Z3V0c190ICog
eXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAgIHl5bGxvYyA9IHl5bGxvY19w
YXJhbTsKK30KKyAgICAKIC8qIFVzZXItdmlzaWJsZSBBUEkgKi8KIAogLyogeXlsZXhfaW5pdCBp
cyBzcGVjaWFsIGJlY2F1c2UgaXQgY3JlYXRlcyB0aGUgc2Nhbm5lciBpdHNlbGYsIHNvIGl0IGlz
CkBAIC0yOTU0LDcgKzI4NjUsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1Ziwg
eXlfc2l6CiAgICAgeXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNU
ID8gMCA6IHRva2VuLnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkKICAgICAg
ICAgbWVtY3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAgIHl5c2V0X2xpbmVu
byhFbmNvZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24ubGlu
ZSkseXlzY2FubmVyKTsKKyAgICB5eXNldF9jb2x1bW4odG9rZW4ubG9jYXRpb24uZmlsZSx5eXNj
YW5uZXIpOworICAgIHl5c2V0X2xpbmVubyh0b2tlbi5sb2NhdGlvbi5saW5lLHl5c2Nhbm5lcik7
CiAKICAgICBpZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5w
dXQgYnVmZmVyIG92ZXJmbG93Iik7CkBAIC0yOTY4LDEyICsyODgwLDEwIEBAIGludCBjaGVja190
eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIAogICAgIGludCB0b2tlbiA9IElERU5USUZJ
RVI7CiAgICAgVFN5bWJvbCogc3ltYm9sID0geXlleHRyYS0+c3ltYm9sVGFibGUuZmluZCh5eXRl
eHQpOwotICAgIGlmICh5eWV4dHJhLT5sZXhBZnRlclR5cGUgPT0gZmFsc2UgJiYgc3ltYm9sICYm
IHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7CisgICAgaWYgKHN5bWJvbCAmJiBzeW1ib2wtPmlzVmFy
aWFibGUoKSkgewogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8VFZh
cmlhYmxlKj4oc3ltYm9sKTsKLSAgICAgICAgaWYgKHZhcmlhYmxlLT5pc1VzZXJUeXBlKCkpIHsK
LSAgICAgICAgICAgIHl5ZXh0cmEtPmxleEFmdGVyVHlwZSA9IHRydWU7CisgICAgICAgIGlmICh2
YXJpYWJsZS0+aXNVc2VyVHlwZSgpKQogICAgICAgICAgICAgdG9rZW4gPSBUWVBFX05BTUU7Ci0g
ICAgICAgIH0KICAgICB9CiAgICAgeXlsdmFsLT5sZXguc3ltYm9sID0gc3ltYm9sOwogICAgIHJl
dHVybiB0b2tlbjsKQEAgLTI5ODIsMjIgKzI4OTIsMTEgQEAgaW50IGNoZWNrX3R5cGUoeXlzY2Fu
X3QgeXlzY2FubmVyKSB7CiBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW5uZXIpIHsK
ICAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSB5eXNjYW5uZXI7
CiAKLSAgICB5eWV4dHJhLT5lcnJvcih5eWxpbmVubywgIklsbGVnYWwgdXNlIG9mIHJlc2VydmVk
IHdvcmQiLCB5eXRleHQsICIiKTsKKyAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSWxsZWdh
bCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwgIiIpOwogICAgIHl5ZXh0cmEtPnJlY292
ZXIoKTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbikgewotICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0g
KHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPnNjYW5uZXI7Ci0KLSAgICBpZiAoY29udGV4dC0+
QWZ0ZXJFT0YpIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXlsaW5lbm8sIHJlYXNvbiwgInVu
ZXhwZWN0ZWQgRU9GIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXls
aW5lbm8sIHJlYXNvbiwgeXl0ZXh0KTsKLSAgICB9Ci0gICAgY29udGV4dC0+cmVjb3ZlcigpOwot
fQotCiBpbnQgZ2xzbGFuZ19pbml0aWFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAg
ICB5eXNjYW5fdCBzY2FubmVyID0gTlVMTDsKICAgICBpZiAoeXlsZXhfaW5pdF9leHRyYShjb250
ZXh0LCZzY2FubmVyKSkKQEAgLTMwMjAsOCArMjkxOSw4IEBAIGludCBnbHNsYW5nX2ZpbmFsaXpl
KFRQYXJzZUNvbnRleHQqIGNvbnQKIGludCBnbHNsYW5nX3NjYW4oc2l6ZV90IGNvdW50LCBjb25z
dCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAogICAgICAgICAgICAg
ICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlyZXN0YXJ0KE5VTEwsY29udGV4
dC0+c2Nhbm5lcik7Ci0gICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJjZUxvYygwLCAxKSxjb250
ZXh0LT5zY2FubmVyKTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNlOworICAgIHl5c2V0
X2NvbHVtbigwLGNvbnRleHQtPnNjYW5uZXIpOworICAgIHl5c2V0X2xpbmVubygxLGNvbnRleHQt
PnNjYW5uZXIpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBwcmVwcm9jZXNzb3IuCiAgICAgaWYgKCFj
b250ZXh0LT5wcmVwcm9jZXNzb3IuaW5pdChjb3VudCwgc3RyaW5nLCBsZW5ndGgpKQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190
YWIuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBA
CiAjZGVmaW5lIFlZUFVSRSAxCiAKIC8qIFVzaW5nIGxvY2F0aW9ucy4gICovCi0jZGVmaW5lIFlZ
TFNQX05FRURFRCAwCisjZGVmaW5lIFlZTFNQX05FRURFRCAxCiAKIAogCkBAIC0xMTMsNTIgKzEx
Myw1MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0gMzAyLAogICAgICBJTlRDT05TVEFOVCA9IDMw
MywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAotICAgICBGSUVMRF9TRUxFQ1RJT04gPSAzMDUs
Ci0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJR0hUX09QID0gMzA3LAotICAgICBJTkNfT1Ag
PSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAgICAgTEVfT1AgPSAzMTAsCi0gICAgIEdFX09Q
ID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAgICAgTkVfT1AgPSAzMTMsCi0gICAgIEFORF9P
UCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0gICAgIFhPUl9PUCA9IDMxNiwKLSAgICAgTVVM
X0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lHTiA9IDMxOCwKLSAgICAgQUREX0FTU0lHTiA9
IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwKLSAgICAgTEVGVF9BU1NJR04gPSAzMjEsCi0g
ICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAgQU5EX0FTU0lHTiA9IDMyMywKLSAgICAgWE9S
X0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdOID0gMzI1LAotICAgICBTVUJfQVNTSUdOID0g
MzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAotICAgICBSSUdIVF9QQVJFTiA9IDMyOCwKLSAg
ICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBSSUdIVF9CUkFDS0VUID0gMzMwLAotICAgICBM
RUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9CUkFDRSA9IDMzMiwKLSAgICAgRE9UID0gMzMz
LAotICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09MT04gPSAzMzUsCi0gICAgIEVRVUFMID0gMzM2
LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAgIEJBTkcgPSAzMzgsCi0gICAgIERBU0ggPSAz
MzksCi0gICAgIFRJTERFID0gMzQwLAotICAgICBQTFVTID0gMzQxLAotICAgICBTVEFSID0gMzQy
LAotICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVSQ0VOVCA9IDM0NCwKLSAgICAgTEVGVF9BTkdM
RSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAzNDYsCi0gICAgIFZFUlRJQ0FMX0JBUiA9IDM0
NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFNUEVSU0FORCA9IDM0OSwKLSAgICAgUVVFU1RJ
T04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwKKyAgICAgUklHSFRfT1AgPSAzMDYsCisgICAg
IElOQ19PUCA9IDMwNywKKyAgICAgREVDX09QID0gMzA4LAorICAgICBMRV9PUCA9IDMwOSwKKyAg
ICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0gMzExLAorICAgICBORV9PUCA9IDMxMiwKKyAg
ICAgQU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9IDMxNCwKKyAgICAgWE9SX09QID0gMzE1LAor
ICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBESVZfQVNTSUdOID0gMzE3LAorICAgICBBRERf
QVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdOID0gMzE5LAorICAgICBMRUZUX0FTU0lHTiA9
IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIxLAorICAgICBBTkRfQVNTSUdOID0gMzIyLAor
ICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBPUl9BU1NJR04gPSAzMjQsCisgICAgIFNVQl9B
U1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4gPSAzMjYsCisgICAgIFJJR0hUX1BBUkVOID0g
MzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgsCisgICAgIFJJR0hUX0JSQUNLRVQgPSAzMjks
CisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAgIFJJR0hUX0JSQUNFID0gMzMxLAorICAgICBE
T1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMzLAorICAgICBDT0xPTiA9IDMzNCwKKyAgICAgRVFV
QUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMzNiwKKyAgICAgQkFORyA9IDMzNywKKyAgICAg
REFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzksCisgICAgIFBMVVMgPSAzNDAsCisgICAgIFNU
QVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAorICAgICBQRVJDRU5UID0gMzQzLAorICAgICBM
RUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9BTkdMRSA9IDM0NSwKKyAgICAgVkVSVElDQUxf
QkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywKKyAgICAgQU1QRVJTQU5EID0gMzQ4LAorICAg
ICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRpZgogLyogVG9rZW5zLiAgKi8KQEAgLTIwOSw1
MiArMjA4LDUxIEBACiAjZGVmaW5lIEZMT0FUQ09OU1RBTlQgMzAyCiAjZGVmaW5lIElOVENPTlNU
QU5UIDMwMwogI2RlZmluZSBCT09MQ09OU1RBTlQgMzA0Ci0jZGVmaW5lIEZJRUxEX1NFTEVDVElP
TiAzMDUKLSNkZWZpbmUgTEVGVF9PUCAzMDYKLSNkZWZpbmUgUklHSFRfT1AgMzA3Ci0jZGVmaW5l
IElOQ19PUCAzMDgKLSNkZWZpbmUgREVDX09QIDMwOQotI2RlZmluZSBMRV9PUCAzMTAKLSNkZWZp
bmUgR0VfT1AgMzExCi0jZGVmaW5lIEVRX09QIDMxMgotI2RlZmluZSBORV9PUCAzMTMKLSNkZWZp
bmUgQU5EX09QIDMxNAotI2RlZmluZSBPUl9PUCAzMTUKLSNkZWZpbmUgWE9SX09QIDMxNgotI2Rl
ZmluZSBNVUxfQVNTSUdOIDMxNwotI2RlZmluZSBESVZfQVNTSUdOIDMxOAotI2RlZmluZSBBRERf
QVNTSUdOIDMxOQotI2RlZmluZSBNT0RfQVNTSUdOIDMyMAotI2RlZmluZSBMRUZUX0FTU0lHTiAz
MjEKLSNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMgotI2RlZmluZSBBTkRfQVNTSUdOIDMyMwotI2Rl
ZmluZSBYT1JfQVNTSUdOIDMyNAotI2RlZmluZSBPUl9BU1NJR04gMzI1Ci0jZGVmaW5lIFNVQl9B
U1NJR04gMzI2Ci0jZGVmaW5lIExFRlRfUEFSRU4gMzI3Ci0jZGVmaW5lIFJJR0hUX1BBUkVOIDMy
OAotI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI5Ci0jZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzMwCi0j
ZGVmaW5lIExFRlRfQlJBQ0UgMzMxCi0jZGVmaW5lIFJJR0hUX0JSQUNFIDMzMgotI2RlZmluZSBE
T1QgMzMzCi0jZGVmaW5lIENPTU1BIDMzNAotI2RlZmluZSBDT0xPTiAzMzUKLSNkZWZpbmUgRVFV
QUwgMzM2Ci0jZGVmaW5lIFNFTUlDT0xPTiAzMzcKLSNkZWZpbmUgQkFORyAzMzgKLSNkZWZpbmUg
REFTSCAzMzkKLSNkZWZpbmUgVElMREUgMzQwCi0jZGVmaW5lIFBMVVMgMzQxCi0jZGVmaW5lIFNU
QVIgMzQyCi0jZGVmaW5lIFNMQVNIIDM0MwotI2RlZmluZSBQRVJDRU5UIDM0NAotI2RlZmluZSBM
RUZUX0FOR0xFIDM0NQotI2RlZmluZSBSSUdIVF9BTkdMRSAzNDYKLSNkZWZpbmUgVkVSVElDQUxf
QkFSIDM0NwotI2RlZmluZSBDQVJFVCAzNDgKLSNkZWZpbmUgQU1QRVJTQU5EIDM0OQotI2RlZmlu
ZSBRVUVTVElPTiAzNTAKKyNkZWZpbmUgTEVGVF9PUCAzMDUKKyNkZWZpbmUgUklHSFRfT1AgMzA2
CisjZGVmaW5lIElOQ19PUCAzMDcKKyNkZWZpbmUgREVDX09QIDMwOAorI2RlZmluZSBMRV9PUCAz
MDkKKyNkZWZpbmUgR0VfT1AgMzEwCisjZGVmaW5lIEVRX09QIDMxMQorI2RlZmluZSBORV9PUCAz
MTIKKyNkZWZpbmUgQU5EX09QIDMxMworI2RlZmluZSBPUl9PUCAzMTQKKyNkZWZpbmUgWE9SX09Q
IDMxNQorI2RlZmluZSBNVUxfQVNTSUdOIDMxNgorI2RlZmluZSBESVZfQVNTSUdOIDMxNworI2Rl
ZmluZSBBRERfQVNTSUdOIDMxOAorI2RlZmluZSBNT0RfQVNTSUdOIDMxOQorI2RlZmluZSBMRUZU
X0FTU0lHTiAzMjAKKyNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMQorI2RlZmluZSBBTkRfQVNTSUdO
IDMyMgorI2RlZmluZSBYT1JfQVNTSUdOIDMyMworI2RlZmluZSBPUl9BU1NJR04gMzI0CisjZGVm
aW5lIFNVQl9BU1NJR04gMzI1CisjZGVmaW5lIExFRlRfUEFSRU4gMzI2CisjZGVmaW5lIFJJR0hU
X1BBUkVOIDMyNworI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI4CisjZGVmaW5lIFJJR0hUX0JSQUNL
RVQgMzI5CisjZGVmaW5lIExFRlRfQlJBQ0UgMzMwCisjZGVmaW5lIFJJR0hUX0JSQUNFIDMzMQor
I2RlZmluZSBET1QgMzMyCisjZGVmaW5lIENPTU1BIDMzMworI2RlZmluZSBDT0xPTiAzMzQKKyNk
ZWZpbmUgRVFVQUwgMzM1CisjZGVmaW5lIFNFTUlDT0xPTiAzMzYKKyNkZWZpbmUgQkFORyAzMzcK
KyNkZWZpbmUgREFTSCAzMzgKKyNkZWZpbmUgVElMREUgMzM5CisjZGVmaW5lIFBMVVMgMzQwCisj
ZGVmaW5lIFNUQVIgMzQxCisjZGVmaW5lIFNMQVNIIDM0MgorI2RlZmluZSBQRVJDRU5UIDM0Mwor
I2RlZmluZSBMRUZUX0FOR0xFIDM0NAorI2RlZmluZSBSSUdIVF9BTkdMRSAzNDUKKyNkZWZpbmUg
VkVSVElDQUxfQkFSIDM0NgorI2RlZmluZSBDQVJFVCAzNDcKKyNkZWZpbmUgQU1QRVJTQU5EIDM0
OAorI2RlZmluZSBRVUVTVElPTiAzNDkKIAogCiAKQEAgLTI4NywxMCArMjg1LDEzIEBACiAjaW5j
bHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCiAKICNkZWZpbmUgWVlFTkFCTEVfTkxTIDAKLSNk
ZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKIAogI2RlZmluZSBZWUxFWF9QQVJBTSBjb250ZXh0
LT5zY2FubmVyCiAKKyNkZWZpbmUgWVlMVFlQRSBUU291cmNlTG9jCisjZGVmaW5lIFlZTFRZUEVf
SVNfREVDTEFSRUQgMQorCisKIAogLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KICNpZm5kZWYgWVlE
RUJVRwpAQCAtMzE1LDcgKzMxNiw2IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogCiB7CiAgICAg
c3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAgICB1bmlvbiB7CiAgICAg
ICAgICAgICBUU3RyaW5nICpzdHJpbmc7CiAgICAgICAgICAgICBmbG9hdCBmOwpAQCAtMzI1LDcg
KzMyNSw2IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICBUU3ltYm9sKiBzeW1ib2w7
CiAgICAgfSBsZXg7CiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5lOwogICAg
ICAgICBUT3BlcmF0b3Igb3A7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRJbnRlcm1O
b2RlKiBpbnRlcm1Ob2RlOwpAQCAtMzM5LDggKzMzOCw4IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQ
RQogICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgICAgICAgICBURnVuY3Rp
b24qIGZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKLSAgICAgICAgICAg
IFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgIFRUeXBlTGlzdCogdHlwZUxpc3Q7Cisg
ICAgICAgICAgICBURmllbGQqIGZpZWxkOworICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRM
aXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwogfQpAQCAtMzUyLDIxICszNTEsNDEgQEAg
dHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogI2Vu
ZGlmCiAKKyNpZiAhIGRlZmluZWQgWVlMVFlQRSAmJiAhIGRlZmluZWQgWVlMVFlQRV9JU19ERUNM
QVJFRAordHlwZWRlZiBzdHJ1Y3QgWVlMVFlQRQoreworICBpbnQgZmlyc3RfbGluZTsKKyAgaW50
IGZpcnN0X2NvbHVtbjsKKyAgaW50IGxhc3RfbGluZTsKKyAgaW50IGxhc3RfY29sdW1uOworfSBZ
WUxUWVBFOworIyBkZWZpbmUgeXlsdHlwZSBZWUxUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJl
IHdpdGhkcmF3biAqLworIyBkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisjIGRlZmluZSBZ
WUxUWVBFX0lTX1RSSVZJQUwgMQorI2VuZGlmCiAKIAogLyogQ29weSB0aGUgc2Vjb25kIHBhcnQg
b2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLwogCiAKLWV4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSog
eXlsdmFsX3BhcmFtLCB2b2lkKiB5eXNjYW5uZXIpOwotZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFy
c2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOworZXh0ZXJuIGludCB5eWxl
eChZWVNUWVBFKiB5eWx2YWwsIFlZTFRZUEUqIHl5bGxvYywgdm9pZCogeXlzY2FubmVyKTsKK3N0
YXRpYyB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBjaGFyKiByZWFzb24pOwogCi0jZGVmaW5lIEZSQUdfVkVSVF9PTkxZKFMsIEwpIHsg
IFwKLSAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9GUkFHTUVOVF9TSEFERVIgJiYg
IFwKLSAgICAgICAgY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7ICBc
Ci0gICAgICAgIGNvbnRleHQtPmVycm9yKEwsICIgc3VwcG9ydGVkIGluIHZlcnRleC9mcmFnbWVu
dCBzaGFkZXJzIG9ubHkgIiwgUyk7ICBcCi0gICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsgIFwK
LSAgICB9ICBcCi19CisjZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJocywgTikgICAg
ICAgICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGlmIChZWUlEKE4pKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChDdXJyZW50KS5maXJz
dF9maWxlID0gWVlSSFNMT0MoUmhzLCAxKS5maXJzdF9maWxlOyAgXAorICAgICAgICAoQ3VycmVu
dCkuZmlyc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMSkuZmlyc3RfbGluZTsgIFwKKyAgICAgICAg
KEN1cnJlbnQpLmxhc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgTikubGFzdF9maWxlOyAgICBcCisg
ICAgICAgIChDdXJyZW50KS5sYXN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIE4pLmxhc3RfbGluZTsg
ICAgXAorICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9maWxlID0gWVlSSFNM
T0MoUmhzLCAwKS5sYXN0X2ZpbGU7ICAgXAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfbGluZSA9
IFlZUkhTTE9DKFJocywgMCkubGFzdF9saW5lOyAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3Rf
ZmlsZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9maWxlOyAgICBcCisgICAgICAgIChDdXJyZW50
KS5sYXN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsgICAgXAorICAgICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
fSB3aGlsZSAoMCkKIAogI2RlZmluZSBWRVJURVhfT05MWShTLCBMKSB7ICBcCiAgICAgaWYgKGNv
bnRleHQtPnNoYWRlclR5cGUgIT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXApAQCAtNTQyLDE0ICs1
NjEsMTYgQEAgdm9pZCBmcmVlICh2b2lkICopOyAvKiBJTkZSSU5HRVMgT04gVVNFUgogCiAjaWYg
KCEgZGVmaW5lZCB5eW92ZXJmbG93IFwKICAgICAgJiYgKCEgZGVmaW5lZCBfX2NwbHVzcGx1cyBc
Ci0JIHx8IChkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RSSVZJQUwp
KSkKKwkgfHwgKGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNfVFJJVklB
TCBcCisJICAgICAmJiBkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RS
SVZJQUwpKSkKIAogLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBmb3IgYW55IHN0
YWNrIG1lbWJlci4gICovCiB1bmlvbiB5eWFsbG9jCiB7CiAgIHl5dHlwZV9pbnQxNiB5eXNzOwog
ICBZWVNUWVBFIHl5dnM7Ci0gIH07CisgICAgWVlMVFlQRSB5eWxzOworfTsKIAogLyogVGhlIHNp
emUgb2YgdGhlIG1heGltdW0gZ2FwIGJldHdlZW4gb25lIGFsaWduZWQgc3RhY2sgYW5kIHRoZSBu
ZXh0LiAgKi8KICMgZGVmaW5lIFlZU1RBQ0tfR0FQX01BWElNVU0gKHNpemVvZiAodW5pb24geXlh
bGxvYykgLSAxKQpAQCAtNTU3LDggKzU3OCw4IEBAIHVuaW9uIHl5YWxsb2MKIC8qIFRoZSBzaXpl
IG9mIGFuIGFycmF5IGxhcmdlIHRvIGVub3VnaCB0byBob2xkIGFsbCBzdGFja3MsIGVhY2ggd2l0
aAogICAgTiBlbGVtZW50cy4gICovCiAjIGRlZmluZSBZWVNUQUNLX0JZVEVTKE4pIFwKLSAgICAg
KChOKSAqIChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUpKSBcCi0gICAg
ICArIFlZU1RBQ0tfR0FQX01BWElNVU0pCisgICAgICgoTikgKiAoc2l6ZW9mICh5eXR5cGVfaW50
MTYpICsgc2l6ZW9mIChZWVNUWVBFKSArIHNpemVvZiAoWVlMVFlQRSkpIFwKKyAgICAgICsgMiAq
IFlZU1RBQ0tfR0FQX01BWElNVU0pCiAKIC8qIENvcHkgQ09VTlQgb2JqZWN0cyBmcm9tIEZST00g
dG8gVE8uICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbwogICAgbm90IG92ZXJsYXAuICAq
LwpAQCAtNTk3LDIyICs2MTgsMjIgQEAgdW5pb24geXlhbGxvYwogI2VuZGlmCiAKIC8qIFlZRklO
QUwgLS0gU3RhdGUgbnVtYmVyIG9mIHRoZSB0ZXJtaW5hdGlvbiBzdGF0ZS4gICovCi0jZGVmaW5l
IFlZRklOQUwgIDcxCisjZGVmaW5lIFlZRklOQUwgIDc0CiAvKiBZWUxBU1QgLS0gTGFzdCBpbmRl
eCBpbiBZWVRBQkxFLiAgKi8KLSNkZWZpbmUgWVlMQVNUICAgMTQxNgorI2RlZmluZSBZWUxBU1Qg
ICAxNDkwCiAKIC8qIFlZTlRPS0VOUyAtLSBOdW1iZXIgb2YgdGVybWluYWxzLiAgKi8KLSNkZWZp
bmUgWVlOVE9LRU5TICA5NgorI2RlZmluZSBZWU5UT0tFTlMgIDk1CiAvKiBZWU5OVFMgLS0gTnVt
YmVyIG9mIG5vbnRlcm1pbmFscy4gICovCi0jZGVmaW5lIFlZTk5UUyAgODMKKyNkZWZpbmUgWVlO
TlRTICA4NAogLyogWVlOUlVMRVMgLS0gTnVtYmVyIG9mIHJ1bGVzLiAgKi8KLSNkZWZpbmUgWVlO
UlVMRVMgIDIwMQorI2RlZmluZSBZWU5SVUxFUyAgMjAyCiAvKiBZWU5SVUxFUyAtLSBOdW1iZXIg
b2Ygc3RhdGVzLiAgKi8KLSNkZWZpbmUgWVlOU1RBVEVTICAzMDQKKyNkZWZpbmUgWVlOU1RBVEVT
ICAzMDcKIAogLyogWVlUUkFOU0xBVEUoWVlMRVgpIC0tIEJpc29uIHN5bWJvbCBudW1iZXIgY29y
cmVzcG9uZGluZyB0byBZWUxFWC4gICovCiAjZGVmaW5lIFlZVU5ERUZUT0sgIDIKLSNkZWZpbmUg
WVlNQVhVVE9LICAgMzUwCisjZGVmaW5lIFlZTUFYVVRPSyAgIDM0OQogCiAjZGVmaW5lIFlZVFJB
TlNMQVRFKFlZWCkJCQkJCQlcCiAgICgodW5zaWduZWQgaW50KSAoWVlYKSA8PSBZWU1BWFVUT0sg
PyB5eXRyYW5zbGF0ZVtZWVhdIDogWVlVTkRFRlRPSykKQEAgLTY1NCw4ICs2NzUsNyBAQCBzdGF0
aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJhbnNsYXRlW10gCiAgICAgICA1NSwgICAgNTYsICAg
IDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwKICAg
ICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3Miwg
ICAgNzMsICAgIDc0LAogICAgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4
MCwgICAgODEsICAgIDgyLCAgICA4MywgICAgODQsCi0gICAgICA4NSwgICAgODYsICAgIDg3LCAg
ICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwKLSAgICAgIDk1
CisgICAgICA4NSwgICAgODYsICAgIDg3LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAg
OTIsICAgIDkzLCAgICA5NAogfTsKIAogI2lmIFlZREVCVUcKQEAgLTY2MywxMTUgKzY4MywxMTYg
QEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXRyYW5zbGF0ZVtdIAogICAgWVlSSFMuICAq
Lwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlwcmhzW10gPQogewotICAgICAgIDAsICAg
ICAwLCAgICAgMywgICAgIDUsICAgICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNywgICAg
MTksCi0gICAgICAyNCwgICAgMjYsICAgIDMwLCAgICAzMywgICAgMzYsICAgIDM4LCAgICA0MCwg
ICAgNDIsICAgIDQ2LCAgICA0OSwKLSAgICAgIDUyLCAgICA1NSwgICAgNTcsICAgIDYwLCAgICA2
NCwgICAgNjcsICAgIDY5LCAgICA3MSwgICAgNzMsICAgIDc1LAotICAgICAgNzgsICAgIDgxLCAg
ICA4NCwgICAgODYsICAgIDg4LCAgICA5MCwgICAgOTIsICAgIDk2LCAgIDEwMCwgICAxMDIsCi0g
ICAgIDEwNiwgICAxMTAsICAgMTEyLCAgIDExNCwgICAxMTgsICAgMTIyLCAgIDEyNiwgICAxMzAs
ICAgMTMyLCAgIDEzNiwKLSAgICAgMTQwLCAgIDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwgICAx
NTIsICAgMTU0LCAgIDE1OCwgICAxNjAsICAgMTY0LAotICAgICAxNjYsICAgMTcyLCAgIDE3NCwg
ICAxNzgsICAgMTgwLCAgIDE4MiwgICAxODQsICAgMTg2LCAgIDE4OCwgICAxOTAsCi0gICAgIDE5
NCwgICAxOTYsICAgMTk5LCAgIDIwMiwgICAyMDcsICAgMjEwLCAgIDIxMiwgICAyMTQsICAgMjE3
LCAgIDIyMSwKLSAgICAgMjI1LCAgIDIyOCwgICAyMzQsICAgMjM4LCAgIDI0MSwgICAyNDUsICAg
MjQ4LCAgIDI0OSwgICAyNTEsICAgMjUzLAotICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAyNjMs
ICAgMjY5LCAgIDI3NiwgICAyODIsICAgMjg0LCAgIDI4NywgICAyOTIsCi0gICAgIDI5OCwgICAz
MDMsICAgMzA2LCAgIDMwOCwgICAzMTEsICAgMzEzLCAgIDMxNSwgICAzMTcsICAgMzIwLCAgIDMy
MiwKLSAgICAgMzI0LCAgIDMyNywgICAzMjksICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzQwLCAg
IDM0MiwgICAzNDQsICAgMzQ2LAorICAgICAgIDAsICAgICAwLCAgICAgMywgICAgIDUsICAgICA3
LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNSwgICAgMTcsCisgICAgICAyMSwgICAgMjMsICAg
IDI4LCAgICAzMCwgICAgMzQsICAgIDM3LCAgICA0MCwgICAgNDIsICAgIDQ0LCAgICA0NiwKKyAg
ICAgIDUwLCAgICA1MywgICAgNTYsICAgIDU5LCAgICA2MSwgICAgNjQsICAgIDY4LCAgICA3MSwg
ICAgNzMsICAgIDc1LAorICAgICAgNzcsICAgIDgwLCAgICA4MywgICAgODYsICAgIDg4LCAgICA5
MCwgICAgOTIsICAgIDk0LCAgICA5OCwgICAxMDIsCisgICAgIDEwNCwgICAxMDgsICAgMTEyLCAg
IDExNCwgICAxMTYsICAgMTIwLCAgIDEyNCwgICAxMjgsICAgMTMyLCAgIDEzNCwKKyAgICAgMTM4
LCAgIDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwgICAxNTAsICAgMTU0LCAgIDE1NiwgICAxNjAs
ICAgMTYyLAorICAgICAxNjYsICAgMTY4LCAgIDE3NCwgICAxNzYsICAgMTgwLCAgIDE4MiwgICAx
ODQsICAgMTg2LCAgIDE4OCwgICAxOTAsCisgICAgIDE5MiwgICAxOTYsICAgMTk4LCAgIDIwMSwg
ICAyMDQsICAgMjA5LCAgIDIxMiwgICAyMTQsICAgMjE2LCAgIDIxOSwKKyAgICAgMjIzLCAgIDIy
NywgICAyMzAsICAgMjM2LCAgIDI0MCwgICAyNDMsICAgMjQ3LCAgIDI1MCwgICAyNTEsICAgMjUz
LAorICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAyNjEsICAgMjY1LCAgIDI3MSwgICAyNzgsICAg
Mjg0LCAgIDI4NiwgICAyODksCisgICAgIDI5NCwgICAzMDAsICAgMzA1LCAgIDMwOCwgICAzMTAs
ICAgMzEzLCAgIDMxNSwgICAzMTcsICAgMzE5LCAgIDMyMiwKKyAgICAgMzI0LCAgIDMyNiwgICAz
MjksICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzM3LCAgIDM0MiwgICAzNDQsICAgMzQ2LAogICAg
ICAzNDgsICAgMzUwLCAgIDM1MiwgICAzNTQsICAgMzU2LCAgIDM1OCwgICAzNjAsICAgMzYyLCAg
IDM2NCwgICAzNjYsCi0gICAgIDM2OCwgICAzNzAsICAgMzcyLCAgIDM3NCwgICAzNzYsICAgMzc4
LCAgIDM4MCwgICAzODIsICAgMzg0LCAgIDM4NSwKLSAgICAgMzkyLCAgIDM5MywgICAzOTksICAg
NDAxLCAgIDQwNCwgICA0MDgsICAgNDEwLCAgIDQxNCwgICA0MTYsICAgNDIxLAotICAgICA0MjMs
ICAgNDI1LCAgIDQyNywgICA0MjksICAgNDMxLCAgIDQzMywgICA0MzUsICAgNDM3LCAgIDQzOSwg
ICA0NDIsCi0gICAgIDQ0MywgICA0NDQsICAgNDUwLCAgIDQ1MiwgICA0NTQsICAgNDU1LCAgIDQ1
OCwgICA0NTksICAgNDYyLCAgIDQ2NSwKLSAgICAgNDY5LCAgIDQ3MSwgICA0NzQsICAgNDc2LCAg
IDQ3OSwgICA0ODUsICAgNDg5LCAgIDQ5MSwgICA0OTMsICAgNDk4LAotICAgICA0OTksICAgNTA2
LCAgIDUwNywgICA1MTYsICAgNTE3LCAgIDUyNSwgICA1MjcsICAgNTI5LCAgIDUzMSwgICA1MzIs
Ci0gICAgIDUzNSwgICA1MzksICAgNTQyLCAgIDU0NSwgICA1NDgsICAgNTUyLCAgIDU1NSwgICA1
NTcsICAgNTYwLCAgIDU2MiwKLSAgICAgNTY0LCAgIDU2NQorICAgICAzNjgsICAgMzcwLCAgIDM3
MiwgICAzNzQsICAgMzc2LCAgIDM3OCwgICAzODAsICAgMzgyLCAgIDM4NCwgICAzODYsCisgICAg
IDM4NywgICAzOTQsICAgMzk1LCAgIDQwMSwgICA0MDMsICAgNDA2LCAgIDQxMCwgICA0MTIsICAg
NDE2LCAgIDQxOCwKKyAgICAgNDIzLCAgIDQyNSwgICA0MjcsICAgNDI5LCAgIDQzMSwgICA0MzMs
ICAgNDM1LCAgIDQzNywgICA0MzksICAgNDQxLAorICAgICA0NDQsICAgNDQ1LCAgIDQ0NiwgICA0
NTIsICAgNDU0LCAgIDQ1NiwgICA0NTcsICAgNDYwLCAgIDQ2MSwgICA0NjQsCisgICAgIDQ2Nywg
ICA0NzEsICAgNDczLCAgIDQ3NiwgICA0NzgsICAgNDgxLCAgIDQ4NywgICA0OTEsICAgNDkzLCAg
IDQ5NSwKKyAgICAgNTAwLCAgIDUwMSwgICA1MDgsICAgNTA5LCAgIDUxOCwgICA1MTksICAgNTI3
LCAgIDUyOSwgICA1MzEsICAgNTMzLAorICAgICA1MzQsICAgNTM3LCAgIDU0MSwgICA1NDQsICAg
NTQ3LCAgIDU1MCwgICA1NTQsICAgNTU3LCAgIDU1OSwgICA1NjIsCisgICAgIDU2NCwgICA1NjYs
ICAgNTY3CiB9OwogCiAvKiBZWVJIUyAtLSBBIGAtMSctc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHJ1
bGVzJyBSSFMuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXJoc1tdID0KIHsKLSAg
ICAgMTc1LCAgICAgMCwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgOTcsICAgIC0xLCAgICA0OCwg
ICAgLTEsICAgIDQ3LAotICAgICAgLTEsICAgIDQ5LCAgICAtMSwgICAgNzIsICAgMTI0LCAgICA3
MywgICAgLTEsICAgIDk4LCAgICAtMSwgICAgOTksCi0gICAgICA3NCwgICAxMDAsICAgIDc1LCAg
ICAtMSwgICAxMDEsICAgIC0xLCAgICA5OSwgICAgNzgsICAgIDUwLCAgICAtMSwKLSAgICAgIDk5
LCAgICA1MywgICAgLTEsICAgIDk5LCAgICA1NCwgICAgLTEsICAgMTI0LCAgICAtMSwgICAxMDIs
ICAgIC0xLAotICAgICAxMDMsICAgIC0xLCAgICA5OSwgICAgNzgsICAgMTAzLCAgICAtMSwgICAx
MDUsICAgIDczLCAgICAtMSwgICAxMDQsCi0gICAgICA3MywgICAgLTEsICAgMTA2LCAgICAzOSwg
ICAgLTEsICAgMTA2LCAgICAtMSwgICAxMDYsICAgMTIyLCAgICAtMSwKLSAgICAgMTA1LCAgICA3
OSwgICAxMjIsICAgIC0xLCAgIDEwNywgICAgNzIsICAgIC0xLCAgIDE0MiwgICAgLTEsICAgIDQ1
LAotICAgICAgLTEsICAgIDUwLCAgICAtMSwgICAgOTksICAgIC0xLCAgICA1MywgICAxMDgsICAg
IC0xLCAgICA1NCwgICAxMDgsCi0gICAgICAtMSwgICAxMDksICAgMTA4LCAgICAtMSwgICAgODYs
ICAgIC0xLCAgICA4NCwgICAgLTEsICAgIDgzLCAgICAtMSwKLSAgICAgMTA4LCAgICAtMSwgICAx
MTAsICAgIDg3LCAgIDEwOCwgICAgLTEsICAgMTEwLCAgICA4OCwgICAxMDgsICAgIC0xLAotICAg
ICAxMTAsICAgIC0xLCAgIDExMSwgICAgODYsICAgMTEwLCAgICAtMSwgICAxMTEsICAgIDg0LCAg
IDExMCwgICAgLTEsCi0gICAgIDExMSwgICAgLTEsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDkw
LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA5MSwKLSAgICAgMTEyLCAgICAtMSwgICAxMTMsICAg
IDU1LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA1NiwgICAxMTIsICAgIC0xLAotICAgICAxMTMs
ICAgIC0xLCAgIDExNCwgICAgNTcsICAgMTEzLCAgICAtMSwgICAxMTQsICAgIDU4LCAgIDExMywg
ICAgLTEsCi0gICAgIDExNCwgICAgLTEsICAgMTE1LCAgICAtMSwgICAxMTYsICAgIC0xLCAgIDEx
NywgICAgLTEsICAgMTE4LCAgICA1OSwKLSAgICAgMTE3LCAgICAtMSwgICAxMTgsICAgIC0xLCAg
IDExOSwgICAgNjEsICAgMTE4LCAgICAtMSwgICAxMTksICAgIC0xLAotICAgICAxMjAsICAgIDYw
LCAgIDExOSwgICAgLTEsICAgMTIwLCAgICAtMSwgICAxMjAsICAgIDk1LCAgIDEyNCwgICAgODAs
Ci0gICAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMDgsICAgMTIzLCAgIDEyMiwgICAg
LTEsICAgIDgxLCAgICAtMSwKLSAgICAgIDYyLCAgICAtMSwgICAgNjMsICAgIC0xLCAgICA2NCwg
ICAgLTEsICAgIDcxLCAgICAtMSwgICAxMjIsICAgIC0xLAotICAgICAxMjQsICAgIDc5LCAgIDEy
MiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMjcsICAgIDgyLCAgICAtMSwgICAxMzUsCi0gICAg
ICA4MiwgICAgLTEsICAgICA3LCAgIDE0MCwgICAxNDEsICAgIDgyLCAgICAtMSwgICAxMjgsICAg
IDczLCAgICAtMSwKLSAgICAgMTMwLCAgICAtMSwgICAxMjksICAgIC0xLCAgIDEzMCwgICAxMzIs
ICAgIC0xLCAgIDEyOSwgICAgNzksICAgMTMyLAotICAgICAgLTEsICAgMTM3LCAgICA0NSwgICAg
NzIsICAgIC0xLCAgIDEzOSwgICAgNDUsICAgIC0xLCAgIDEzOSwgICAgNDUsCi0gICAgICA3NCwg
ICAxMjUsICAgIDc1LCAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzMSwgICAgLTEsICAgMTMzLCAg
IDEzMSwKLSAgICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTM0LCAgICAtMSwgICAxMzMsICAgMTM0
LCAgICAtMSwgICAgLTEsICAgIDMzLAotICAgICAgLTEsICAgIDM0LCAgICAtMSwgICAgMzUsICAg
IC0xLCAgIDEzOSwgICAgLTEsICAgMTM2LCAgICAtMSwgICAxMzUsCi0gICAgICA3OSwgICAgNDUs
ICAgIC0xLCAgIDEzNSwgICAgNzksICAgIDQ1LCAgICA3NCwgICAgNzUsICAgIC0xLCAgIDEzNSwK
LSAgICAgIDc5LCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM1LCAgICA3
OSwgICAgNDUsICAgIDgxLAotICAgICAxNTAsICAgIC0xLCAgIDEzNywgICAgLTEsICAgMTM3LCAg
ICA0NSwgICAgLTEsICAgMTM3LCAgICA0NSwgICAgNzQsCi0gICAgICA3NSwgICAgLTEsICAgMTM3
LCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM3LCAgICA0NSwKLSAgICAg
IDgxLCAgIDE1MCwgICAgLTEsICAgICAzLCAgICA0NSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAx
MzgsICAgMTM5LAotICAgICAgLTEsICAgICA5LCAgICAtMSwgICAgIDgsICAgIC0xLCAgICAzNywg
ICAgLTEsICAgICAzLCAgICAzNywgICAgLTEsCi0gICAgICAzNiwgICAgLTEsICAgMTQxLCAgICAt
MSwgICAxNDAsICAgMTQxLCAgICAtMSwgICAgIDQsICAgIC0xLCAgICAgNSwKLSAgICAgIC0xLCAg
ICAgNiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDc0LCAgIDEyNSwgICAgNzUsICAg
IC0xLAotICAgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAgICAtMSwgICAgMTAs
ICAgIC0xLCAgICAyNywgICAgLTEsCi0gICAgICAyOCwgICAgLTEsICAgIDI5LCAgICAtMSwgICAg
MjEsICAgIC0xLCAgICAyMiwgICAgLTEsICAgIDIzLCAgICAtMSwKLSAgICAgIDI0LCAgICAtMSwg
ICAgMjUsICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwgICAgMzEsICAgIC0xLAot
ICAgICAgMzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAgNDMsICAgIC0x
LCAgICA0NCwgICAgLTEsCi0gICAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgLTEsICAg
IDM4LCAgICA0NSwgICAgNzYsICAgMTQ0LCAgIDE0NiwKLSAgICAgIDc3LCAgICAtMSwgICAgLTEs
ICAgIDM4LCAgICA3NiwgICAxNDUsICAgMTQ2LCAgICA3NywgICAgLTEsICAgMTQ3LAotICAgICAg
LTEsICAgMTQ2LCAgIDE0NywgICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODIsICAgIC0xLCAgIDE0
OSwgICAgLTEsCi0gICAgIDE0OCwgICAgNzksICAgMTQ5LCAgICAtMSwgICAgNDUsICAgIC0xLCAg
ICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwKLSAgICAgIC0xLCAgIDEyMiwgICAgLTEsICAgMTI2
LCAgICAtMSwgICAxNTQsICAgIC0xLCAgIDE1MywgICAgLTEsICAgMTUxLAotICAgICAgLTEsICAg
MTYzLCAgICAtMSwgICAxNjQsICAgIC0xLCAgIDE2NywgICAgLTEsICAgMTc0LCAgICAtMSwgICAg
NzYsCi0gICAgICA3NywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgMTU1LCAgIDE2Miwg
ICAxNTYsICAgIDc3LCAgICAtMSwKLSAgICAgMTYxLCAgICAtMSwgICAxNTMsICAgIC0xLCAgICAt
MSwgICAxNTksICAgMTYxLCAgICAtMSwgICAgLTEsICAgMTYwLAotICAgICAxNTMsICAgIC0xLCAg
ICA3NiwgICAgNzcsICAgIC0xLCAgICA3NiwgICAxNjIsICAgIDc3LCAgICAtMSwgICAxNTIsCi0g
ICAgICAtMSwgICAxNjIsICAgMTUyLCAgICAtMSwgICAgODIsICAgIC0xLCAgIDEyNCwgICAgODIs
ICAgIC0xLCAgICAxOCwKLSAgICAgIDcyLCAgIDEyNCwgICAgNzMsICAgMTY1LCAgICAtMSwgICAx
NTgsICAgIDE2LCAgIDE1OCwgICAgLTEsICAgMTU4LAotICAgICAgLTEsICAgMTI0LCAgICAtMSwg
ICAxMzcsICAgIDQ1LCAgICA4MSwgICAxNTAsICAgIC0xLCAgICAtMSwgICAgNDAsCi0gICAgICA3
MiwgICAxNjgsICAgMTY2LCAgICA3MywgICAxNTcsICAgIC0xLCAgICAtMSwgICAgMTUsICAgMTY5
LCAgIDE1OCwKLSAgICAgIDQwLCAgICA3MiwgICAxMjQsICAgIDczLCAgICA4MiwgICAgLTEsICAg
IC0xLCAgICAxNywgICAgNzIsICAgMTcwLAotICAgICAxNzEsICAgMTczLCAgICA3MywgICAxNTcs
ICAgIC0xLCAgIDE2MywgICAgLTEsICAgMTUxLCAgICAtMSwgICAxNjYsCi0gICAgICAtMSwgICAg
LTEsICAgMTcyLCAgICA4MiwgICAgLTEsICAgMTcyLCAgICA4MiwgICAxMjQsICAgIC0xLCAgICAx
NCwKLSAgICAgIDgyLCAgICAtMSwgICAgMTMsICAgIDgyLCAgICAtMSwgICAgMjAsICAgIDgyLCAg
ICAtMSwgICAgMjAsICAgMTI0LAotICAgICAgODIsICAgIC0xLCAgICAxOSwgICAgODIsICAgIC0x
LCAgIDE3NiwgICAgLTEsICAgMTc1LCAgIDE3NiwgICAgLTEsCi0gICAgIDE3NywgICAgLTEsICAg
MTI2LCAgICAtMSwgICAgLTEsICAgMTI3LCAgIDE3OCwgICAxNjEsICAgIC0xCisgICAgIDE3NSwg
ICAgIDAsICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgNDUsICAgIC0xLCAg
ICA5NywKKyAgICAgIC0xLCAgICA0OCwgICAgLTEsICAgIDQ3LCAgICAtMSwgICAgNDksICAgIC0x
LCAgICA3MSwgICAxMjQsICAgIDcyLAorICAgICAgLTEsICAgIDk4LCAgICAtMSwgICAgOTksICAg
IDczLCAgIDEwMCwgICAgNzQsICAgIC0xLCAgIDEwMSwgICAgLTEsCisgICAgICA5OSwgICAgNzcs
ICAgIDk2LCAgICAtMSwgICAgOTksICAgIDUyLCAgICAtMSwgICAgOTksICAgIDUzLCAgICAtMSwK
KyAgICAgMTI0LCAgICAtMSwgICAxMDIsICAgIC0xLCAgIDEwMywgICAgLTEsICAgIDk5LCAgICA3
NywgICAxMDMsICAgIC0xLAorICAgICAxMDUsICAgIDcyLCAgICAtMSwgICAxMDQsICAgIDcyLCAg
ICAtMSwgICAxMDYsICAgIDM5LCAgICAtMSwgICAxMDYsCisgICAgICAtMSwgICAxMDYsICAgMTIy
LCAgICAtMSwgICAxMDUsICAgIDc4LCAgIDEyMiwgICAgLTEsICAgMTA3LCAgICA3MSwKKyAgICAg
IC0xLCAgIDE0MiwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgOTksICAgIC0xLCAgICA1MiwgICAx
MDgsICAgIC0xLAorICAgICAgNTMsICAgMTA4LCAgICAtMSwgICAxMDksICAgMTA4LCAgICAtMSwg
ICAgODUsICAgIC0xLCAgICA4MywgICAgLTEsCisgICAgICA4MiwgICAgLTEsICAgMTA4LCAgICAt
MSwgICAxMTAsICAgIDg2LCAgIDEwOCwgICAgLTEsICAgMTEwLCAgICA4NywKKyAgICAgMTA4LCAg
ICAtMSwgICAxMTAsICAgIC0xLCAgIDExMSwgICAgODUsICAgMTEwLCAgICAtMSwgICAxMTEsICAg
IDgzLAorICAgICAxMTAsICAgIC0xLCAgIDExMSwgICAgLTEsICAgMTEyLCAgICAtMSwgICAxMTMs
ICAgIDg5LCAgIDExMiwgICAgLTEsCisgICAgIDExMywgICAgOTAsICAgMTEyLCAgICAtMSwgICAx
MTMsICAgIDU0LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA1NSwKKyAgICAgMTEyLCAgICAtMSwg
ICAxMTMsICAgIC0xLCAgIDExNCwgICAgNTYsICAgMTEzLCAgICAtMSwgICAxMTQsICAgIDU3LAor
ICAgICAxMTMsICAgIC0xLCAgIDExNCwgICAgLTEsICAgMTE1LCAgICAtMSwgICAxMTYsICAgIC0x
LCAgIDExNywgICAgLTEsCisgICAgIDExOCwgICAgNTgsICAgMTE3LCAgICAtMSwgICAxMTgsICAg
IC0xLCAgIDExOSwgICAgNjAsICAgMTE4LCAgICAtMSwKKyAgICAgMTE5LCAgICAtMSwgICAxMjAs
ICAgIDU5LCAgIDExOSwgICAgLTEsICAgMTIwLCAgICAtMSwgICAxMjAsICAgIDk0LAorICAgICAx
MjQsICAgIDc5LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMDgsICAgMTIzLCAgIDEy
MiwgICAgLTEsCisgICAgICA4MCwgICAgLTEsICAgIDYxLCAgICAtMSwgICAgNjIsICAgIC0xLCAg
ICA2MywgICAgLTEsICAgIDcwLCAgICAtMSwKKyAgICAgMTIyLCAgICAtMSwgICAxMjQsICAgIDc4
LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMjcsICAgIDgxLAorICAgICAgLTEsICAg
MTM1LCAgICA4MSwgICAgLTEsICAgICA3LCAgIDE0MCwgICAxNDEsICAgIDgxLCAgICAtMSwgICAx
MjgsCisgICAgICA3MiwgICAgLTEsICAgMTMwLCAgICAtMSwgICAxMjksICAgIC0xLCAgIDEzMCwg
ICAxMzIsICAgIC0xLCAgIDEyOSwKKyAgICAgIDc4LCAgIDEzMiwgICAgLTEsICAgMTM3LCAgICA0
NSwgICAgNzEsICAgIC0xLCAgIDEzOSwgICAgOTYsICAgIC0xLAorICAgICAxMzksICAgIDk2LCAg
ICA3MywgICAxMjUsICAgIDc0LCAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzMSwgICAgLTEsCisg
ICAgIDEzMywgICAxMzEsICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTM0LCAgICAtMSwgICAxMzMs
ICAgMTM0LCAgICAtMSwKKyAgICAgIC0xLCAgICAzMywgICAgLTEsICAgIDM0LCAgICAtMSwgICAg
MzUsICAgIC0xLCAgIDEzOSwgICAgLTEsICAgMTM2LAorICAgICAgLTEsICAgMTM1LCAgICA3OCwg
ICAgOTYsICAgIC0xLCAgIDEzNSwgICAgNzgsICAgIDk2LCAgICA3MywgICAgNzQsCisgICAgICAt
MSwgICAxMzUsICAgIDc4LCAgICA5NiwgICAgNzMsICAgMTI1LCAgICA3NCwgICAgLTEsICAgMTM1
LCAgICA3OCwKKyAgICAgIDk2LCAgICA4MCwgICAxNTAsICAgIC0xLCAgIDEzNywgICAgLTEsICAg
MTM3LCAgICA5NiwgICAgLTEsICAgMTM3LAorICAgICAgOTYsICAgIDczLCAgICA3NCwgICAgLTEs
ICAgMTM3LCAgICA5NiwgICAgNzMsICAgMTI1LCAgICA3NCwgICAgLTEsCisgICAgIDEzNywgICAg
OTYsICAgIDgwLCAgIDE1MCwgICAgLTEsICAgICAzLCAgICA0NSwgICAgLTEsICAgMTM5LCAgICAt
MSwKKyAgICAgMTM4LCAgIDEzOSwgICAgLTEsICAgICA5LCAgICAtMSwgICAgIDgsICAgIC0xLCAg
ICAzNywgICAgLTEsICAgICAzLAorICAgICAgMzcsICAgIC0xLCAgICAzNiwgICAgLTEsICAgMTQx
LCAgICAtMSwgICAxNDAsICAgMTQxLCAgICAtMSwgICAgIDQsCisgICAgICAtMSwgICAgIDUsICAg
IC0xLCAgICAgNiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDczLCAgIDEyNSwKKyAg
ICAgIDc0LCAgICAtMSwgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAgICAtMSwg
ICAgMTAsICAgIC0xLAorICAgICAgMjcsICAgIC0xLCAgICAyOCwgICAgLTEsICAgIDI5LCAgICAt
MSwgICAgMjEsICAgIC0xLCAgICAyMiwgICAgLTEsCisgICAgICAyMywgICAgLTEsICAgIDI0LCAg
ICAtMSwgICAgMjUsICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwKKyAgICAgIDMx
LCAgICAtMSwgICAgMzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAgNDMs
ICAgIC0xLAorICAgICAgNDQsICAgIC0xLCAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAtMSwgICAg
LTEsICAgIDM4LCAgICA5NiwgICAgNzUsCisgICAgIDE0NCwgICAxNDYsICAgIDc2LCAgICAtMSwg
ICAgLTEsICAgIDM4LCAgICA3NSwgICAxNDUsICAgMTQ2LCAgICA3NiwKKyAgICAgIC0xLCAgIDE0
NywgICAgLTEsICAgMTQ2LCAgIDE0NywgICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODEsICAgIC0x
LAorICAgICAxNDksICAgIC0xLCAgIDE0OCwgICAgNzgsICAgMTQ5LCAgICAtMSwgICAgOTYsICAg
IC0xLCAgICA5NiwgICAgNzMsCisgICAgIDEyNSwgICAgNzQsICAgIC0xLCAgIDEyMiwgICAgLTEs
ICAgMTI2LCAgICAtMSwgICAxNTQsICAgIC0xLCAgIDE1MywKKyAgICAgIC0xLCAgIDE1MSwgICAg
LTEsICAgMTYzLCAgICAtMSwgICAxNjQsICAgIC0xLCAgIDE2NywgICAgLTEsICAgMTc0LAorICAg
ICAgLTEsICAgIDc1LCAgICA3NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgMTU1LCAg
IDE2MiwgICAxNTYsCisgICAgICA3NiwgICAgLTEsICAgMTYxLCAgICAtMSwgICAxNTMsICAgIC0x
LCAgICAtMSwgICAxNTksICAgMTYxLCAgICAtMSwKKyAgICAgIC0xLCAgIDE2MCwgICAxNTMsICAg
IC0xLCAgICA3NSwgICAgNzYsICAgIC0xLCAgICA3NSwgICAxNjIsICAgIDc2LAorICAgICAgLTEs
ICAgMTUyLCAgICAtMSwgICAxNjIsICAgMTUyLCAgICAtMSwgICAgODEsICAgIC0xLCAgIDEyNCwg
ICAgODEsCisgICAgICAtMSwgICAgMTgsICAgIDcxLCAgIDEyNCwgICAgNzIsICAgMTY1LCAgICAt
MSwgICAxNTgsICAgIDE2LCAgIDE1OCwKKyAgICAgIC0xLCAgIDE1OCwgICAgLTEsICAgMTI0LCAg
ICAtMSwgICAxMzcsICAgIDk2LCAgICA4MCwgICAxNTAsICAgIC0xLAorICAgICAgLTEsICAgIDQw
LCAgICA3MSwgICAxNjgsICAgMTY2LCAgICA3MiwgICAxNTcsICAgIC0xLCAgICAtMSwgICAgMTUs
CisgICAgIDE2OSwgICAxNTgsICAgIDQwLCAgICA3MSwgICAxMjQsICAgIDcyLCAgICA4MSwgICAg
LTEsICAgIC0xLCAgICAxNywKKyAgICAgIDcxLCAgIDE3MCwgICAxNzEsICAgMTczLCAgICA3Miwg
ICAxNTcsICAgIC0xLCAgIDE2MywgICAgLTEsICAgMTUxLAorICAgICAgLTEsICAgMTY2LCAgICAt
MSwgICAgLTEsICAgMTcyLCAgICA4MSwgICAgLTEsICAgMTcyLCAgICA4MSwgICAxMjQsCisgICAg
ICAtMSwgICAgMTQsICAgIDgxLCAgICAtMSwgICAgMTMsICAgIDgxLCAgICAtMSwgICAgMjAsICAg
IDgxLCAgICAtMSwKKyAgICAgIDIwLCAgIDEyNCwgICAgODEsICAgIC0xLCAgICAxOSwgICAgODEs
ICAgIC0xLCAgIDE3NiwgICAgLTEsICAgMTc1LAorICAgICAxNzYsICAgIC0xLCAgIDE3NywgICAg
LTEsICAgMTI2LCAgICAtMSwgICAgLTEsICAgMTI3LCAgIDE3OCwgICAxNjEsCisgICAgICAtMQog
fTsKIAogLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVyIFlZ
TiB3YXMgZGVmaW5lZC4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXJsaW5lW10g
PQogewotICAgICAgIDAsICAgMTY4LCAgIDE2OCwgICAyMDMsICAgMjA2LCAgIDIxOSwgICAyMjQs
ICAgMjI5LCAgIDIzNSwgICAyMzgsCi0gICAgIDMxNywgICAzMjAsICAgNDIxLCAgIDQzMSwgICA0
NDQsICAgNDUyLCAgIDU1MiwgICA1NTUsICAgNTYzLCAgIDU2NywKLSAgICAgNTc0LCAgIDU3OCwg
ICA1ODUsICAgNTkxLCAgIDYwMCwgICA2MDgsICAgNjYzLCAgIDY3MCwgICA2ODAsICAgNjgzLAot
ICAgICA2OTMsICAgNzAzLCAgIDcyNCwgICA3MjUsICAgNzI2LCAgIDczMSwgICA3MzIsICAgNzQx
LCAgIDc1MywgICA3NTQsCi0gICAgIDc2MiwgICA3NzMsICAgNzc3LCAgIDc3OCwgICA3ODgsICAg
Nzk4LCAgIDgwOCwgICA4MjEsICAgODIyLCAgIDgzMiwKLSAgICAgODQ1LCAgIDg0OSwgICA4NTMs
ICAgODU3LCAgIDg1OCwgICA4NzEsICAgODcyLCAgIDg4NSwgICA4ODYsICAgODk5LAotICAgICA5
MDAsICAgOTE3LCAgIDkxOCwgICA5MzEsICAgOTMyLCAgIDkzMywgICA5MzQsICAgOTM1LCAgIDkz
OSwgICA5NDIsCi0gICAgIDk1MywgICA5NjEsICAgOTg4LCAgIDk5MywgIDEwMDcsICAxMDQ1LCAg
MTA0OCwgIDEwNTUsICAxMDYzLCAgMTA4NCwKLSAgICAxMTA1LCAgMTExNiwgIDExNDUsICAxMTUw
LCAgMTE2MCwgIDExNjUsICAxMTc1LCAgMTE3OCwgIDExODEsICAxMTg0LAotICAgIDExOTAsICAx
MTk3LCAgMTIwMCwgIDEyMjIsICAxMjQwLCAgMTI2NCwgIDEyODcsICAxMjkxLCAgMTMwOSwgIDEz
MTcsCi0gICAgMTM0OSwgIDEzNjksICAxNDU4LCAgMTQ2NywgIDE0OTAsICAxNDkzLCAgMTQ5OSwg
IDE1MDcsICAxNTE1LCAgMTUyMywKLSAgICAxNTMzLCAgMTU0MCwgIDE1NDMsICAxNTQ2LCAgMTU1
MiwgIDE1NTUsICAxNTcwLCAgMTU3NCwgIDE1NzgsICAxNTgyLAotICAgIDE1OTEsICAxNTk2LCAg
MTYwMSwgIDE2MDYsICAxNjExLCAgMTYxNiwgIDE2MjEsICAxNjI2LCAgMTYzMSwgIDE2MzYsCi0g
ICAgMTY0MiwgIDE2NDgsICAxNjU0LCAgMTY1OSwgIDE2NjQsICAxNjczLCAgMTY4MiwgIDE2ODcs
ICAxNzAwLCAgMTcwMCwKLSAgICAxNzE0LCAgMTcxNCwgIDE3MjMsICAxNzI2LCAgMTc0MSwgIDE3
NzcsICAxNzgxLCAgMTc4NywgIDE3OTUsICAxODExLAotICAgIDE4MTUsICAxODE5LCAgMTgyMCwg
IDE4MjYsICAxODI3LCAgMTgyOCwgIDE4MjksICAxODMwLCAgMTgzNCwgIDE4MzUsCi0gICAgMTgz
NSwgIDE4MzUsICAxODQ1LCAgMTg0NiwgIDE4NTAsICAxODUwLCAgMTg1MSwgIDE4NTEsICAxODU2
LCAgMTg1OSwKLSAgICAxODY5LCAgMTg3MiwgIDE4NzgsICAxODc5LCAgMTg4MywgIDE4OTEsICAx
ODk1LCAgMTkwNSwgIDE5MTAsICAxOTI3LAotICAgIDE5MjcsICAxOTMyLCAgMTkzMiwgIDE5Mzks
ICAxOTM5LCAgMTk0NywgIDE5NTAsICAxOTU2LCAgMTk1OSwgIDE5NjUsCi0gICAgMTk2OSwgIDE5
NzYsICAxOTgzLCAgMTk5MCwgIDE5OTcsICAyMDA4LCAgMjAxNywgIDIwMjEsICAyMDI4LCAgMjAz
MSwKLSAgICAyMDM3LCAgMjAzNworICAgICAgIDAsICAgMTc4LCAgIDE3OCwgICAxNzksICAgMTgy
LCAgIDIyNSwgICAyMjgsICAgMjQxLCAgIDI0NiwgICAyNTEsCisgICAgIDI1NywgICAyNjAsICAg
MzM1LCAgIDMzOCwgICA0MzMsICAgNDQzLCAgIDQ1NiwgICA0NjQsICAgNTY0LCAgIDU2NywKKyAg
ICAgNTc1LCAgIDU3OCwgICA1ODQsICAgNTg4LCAgIDU5NSwgICA2MDEsICAgNjEwLCAgIDYxOCwg
ICA2NzMsICAgNjgzLAorICAgICA2ODYsICAgNjk2LCAgIDcwNiwgICA3MjcsICAgNzI4LCAgIDcy
OSwgICA3MzQsICAgNzM1LCAgIDc0MywgICA3NTQsCisgICAgIDc1NSwgICA3NjMsICAgNzc0LCAg
IDc3OCwgICA3NzksICAgNzg5LCAgIDc5OSwgICA4MDksICAgODIyLCAgIDgyMywKKyAgICAgODMz
LCAgIDg0NiwgICA4NTAsICAgODU0LCAgIDg1OCwgICA4NTksICAgODcyLCAgIDg3MywgICA4ODYs
ICAgODg3LAorICAgICA5MDAsICAgOTAxLCAgIDkxOCwgICA5MTksICAgOTMyLCAgIDkzMywgICA5
MzQsICAgOTM1LCAgIDkzNiwgICA5NDAsCisgICAgIDk0MywgICA5NTQsICAgOTYyLCAgIDk4OSwg
ICA5OTQsICAxMDA4LCAgMTA0NSwgIDEwNDgsICAxMDU1LCAgMTA2MywKKyAgICAxMDg0LCAgMTEw
NSwgIDExMTUsICAxMTQzLCAgMTE0OCwgIDExNTgsICAxMTYzLCAgMTE3MywgIDExNzYsICAxMTc5
LAorICAgIDExODIsICAxMTg4LCAgMTE5NSwgIDExOTgsICAxMjIwLCAgMTIzOCwgIDEyNjIsICAx
Mjg1LCAgMTI4OSwgIDEzMDcsCisgICAgMTMxNSwgIDEzNDcsICAxMzY3LCAgMTM4OCwgIDEzOTcs
ICAxNDIwLCAgMTQyMywgIDE0MjksICAxNDM3LCAgMTQ0NSwKKyAgICAxNDUzLCAgMTQ2MywgIDE0
NzAsICAxNDczLCAgMTQ3NiwgIDE0ODIsICAxNDg1LCAgMTUwMCwgIDE1MDQsICAxNTA4LAorICAg
IDE1MTIsICAxNTE2LCAgMTUyMSwgIDE1MjYsICAxNTMxLCAgMTUzNiwgIDE1NDEsICAxNTQ2LCAg
MTU1MSwgIDE1NTYsCisgICAgMTU2MSwgIDE1NjYsICAxNTcxLCAgMTU3NiwgIDE1ODAsICAxNTg0
LCAgMTU5MiwgIDE2MDAsICAxNjA0LCAgMTYxNywKKyAgICAxNjE3LCAgMTYzMSwgIDE2MzEsICAx
NjQwLCAgMTY0MywgIDE2NTksICAxNjkyLCAgMTY5NiwgIDE3MDIsICAxNzA5LAorICAgIDE3MjQs
ICAxNzI4LCAgMTczMiwgIDE3MzMsICAxNzM5LCAgMTc0MCwgIDE3NDEsICAxNzQyLCAgMTc0Mywg
IDE3NDcsCisgICAgMTc0OCwgIDE3NDgsICAxNzQ4LCAgMTc1OCwgIDE3NTksICAxNzYzLCAgMTc2
MywgIDE3NjQsICAxNzY0LCAgMTc2OSwKKyAgICAxNzcyLCAgMTc4MiwgIDE3ODUsICAxNzkxLCAg
MTc5MiwgIDE3OTYsICAxODA0LCAgMTgwOCwgIDE4MTgsICAxODIzLAorICAgIDE4NDAsICAxODQw
LCAgMTg0NSwgIDE4NDUsICAxODUyLCAgMTg1MiwgIDE4NjAsICAxODYzLCAgMTg2OSwgIDE4NzIs
CisgICAgMTg3OCwgIDE4ODIsICAxODg5LCAgMTg5NiwgIDE5MDMsICAxOTEwLCAgMTkyMSwgIDE5
MzAsICAxOTM0LCAgMTk0MSwKKyAgICAxOTQ0LCAgMTk1MCwgIDE5NTAKIH07CiAjZW5kaWYKIApA
QCAtNzg4LDE1ICs4MDksMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHl5dG5hbWVbXSA9
CiAgICJNQVRSSVgzIiwgIk1BVFJJWDQiLCAiSU5fUVVBTCIsICJPVVRfUVVBTCIsICJJTk9VVF9R
VUFMIiwgIlVOSUZPUk0iLAogICAiVkFSWUlORyIsICJTVFJVQ1QiLCAiVk9JRF9UWVBFIiwgIldI
SUxFIiwgIlNBTVBMRVIyRCIsICJTQU1QTEVSQ1VCRSIsCiAgICJTQU1QTEVSX0VYVEVSTkFMX09F
UyIsICJTQU1QTEVSMkRSRUNUIiwgIklERU5USUZJRVIiLCAiVFlQRV9OQU1FIiwKLSAgIkZMT0FU
Q09OU1RBTlQiLCAiSU5UQ09OU1RBTlQiLCAiQk9PTENPTlNUQU5UIiwgIkZJRUxEX1NFTEVDVElP
TiIsCi0gICJMRUZUX09QIiwgIlJJR0hUX09QIiwgIklOQ19PUCIsICJERUNfT1AiLCAiTEVfT1Ai
LCAiR0VfT1AiLCAiRVFfT1AiLAotICAiTkVfT1AiLCAiQU5EX09QIiwgIk9SX09QIiwgIlhPUl9P
UCIsICJNVUxfQVNTSUdOIiwgIkRJVl9BU1NJR04iLAotICAiQUREX0FTU0lHTiIsICJNT0RfQVNT
SUdOIiwgIkxFRlRfQVNTSUdOIiwgIlJJR0hUX0FTU0lHTiIsICJBTkRfQVNTSUdOIiwKLSAgIlhP
Ul9BU1NJR04iLCAiT1JfQVNTSUdOIiwgIlNVQl9BU1NJR04iLCAiTEVGVF9QQVJFTiIsICJSSUdI
VF9QQVJFTiIsCi0gICJMRUZUX0JSQUNLRVQiLCAiUklHSFRfQlJBQ0tFVCIsICJMRUZUX0JSQUNF
IiwgIlJJR0hUX0JSQUNFIiwgIkRPVCIsCi0gICJDT01NQSIsICJDT0xPTiIsICJFUVVBTCIsICJT
RU1JQ09MT04iLCAiQkFORyIsICJEQVNIIiwgIlRJTERFIiwgIlBMVVMiLAotICAiU1RBUiIsICJT
TEFTSCIsICJQRVJDRU5UIiwgIkxFRlRfQU5HTEUiLCAiUklHSFRfQU5HTEUiLCAiVkVSVElDQUxf
QkFSIiwKLSAgIkNBUkVUIiwgIkFNUEVSU0FORCIsICJRVUVTVElPTiIsICIkYWNjZXB0IiwgInZh
cmlhYmxlX2lkZW50aWZpZXIiLAorICAiRkxPQVRDT05TVEFOVCIsICJJTlRDT05TVEFOVCIsICJC
T09MQ09OU1RBTlQiLCAiTEVGVF9PUCIsICJSSUdIVF9PUCIsCisgICJJTkNfT1AiLCAiREVDX09Q
IiwgIkxFX09QIiwgIkdFX09QIiwgIkVRX09QIiwgIk5FX09QIiwgIkFORF9PUCIsCisgICJPUl9P
UCIsICJYT1JfT1AiLCAiTVVMX0FTU0lHTiIsICJESVZfQVNTSUdOIiwgIkFERF9BU1NJR04iLAor
ICAiTU9EX0FTU0lHTiIsICJMRUZUX0FTU0lHTiIsICJSSUdIVF9BU1NJR04iLCAiQU5EX0FTU0lH
TiIsICJYT1JfQVNTSUdOIiwKKyAgIk9SX0FTU0lHTiIsICJTVUJfQVNTSUdOIiwgIkxFRlRfUEFS
RU4iLCAiUklHSFRfUEFSRU4iLCAiTEVGVF9CUkFDS0VUIiwKKyAgIlJJR0hUX0JSQUNLRVQiLCAi
TEVGVF9CUkFDRSIsICJSSUdIVF9CUkFDRSIsICJET1QiLCAiQ09NTUEiLCAiQ09MT04iLAorICAi
RVFVQUwiLCAiU0VNSUNPTE9OIiwgIkJBTkciLCAiREFTSCIsICJUSUxERSIsICJQTFVTIiwgIlNU
QVIiLCAiU0xBU0giLAorICAiUEVSQ0VOVCIsICJMRUZUX0FOR0xFIiwgIlJJR0hUX0FOR0xFIiwg
IlZFUlRJQ0FMX0JBUiIsICJDQVJFVCIsCisgICJBTVBFUlNBTkQiLCAiUVVFU1RJT04iLCAiJGFj
Y2VwdCIsICJpZGVudGlmaWVyIiwgInZhcmlhYmxlX2lkZW50aWZpZXIiLAogICAicHJpbWFyeV9l
eHByZXNzaW9uIiwgInBvc3RmaXhfZXhwcmVzc2lvbiIsICJpbnRlZ2VyX2V4cHJlc3Npb24iLAog
ICAiZnVuY3Rpb25fY2FsbCIsICJmdW5jdGlvbl9jYWxsX29yX21ldGhvZCIsICJmdW5jdGlvbl9j
YWxsX2dlbmVyaWMiLAogICAiZnVuY3Rpb25fY2FsbF9oZWFkZXJfbm9fcGFyYW1ldGVycyIsCkBA
IC04NDIsNjAgKzg2Myw2MCBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXRva251bVtd
ID0KICAgICAgMzE1LCAgIDMxNiwgICAzMTcsICAgMzE4LCAgIDMxOSwgICAzMjAsICAgMzIxLCAg
IDMyMiwgICAzMjMsICAgMzI0LAogICAgICAzMjUsICAgMzI2LCAgIDMyNywgICAzMjgsICAgMzI5
LCAgIDMzMCwgICAzMzEsICAgMzMyLCAgIDMzMywgICAzMzQsCiAgICAgIDMzNSwgICAzMzYsICAg
MzM3LCAgIDMzOCwgICAzMzksICAgMzQwLCAgIDM0MSwgICAzNDIsICAgMzQzLCAgIDM0NCwKLSAg
ICAgMzQ1LCAgIDM0NiwgICAzNDcsICAgMzQ4LCAgIDM0OSwgICAzNTAKKyAgICAgMzQ1LCAgIDM0
NiwgICAzNDcsICAgMzQ4LCAgIDM0OQogfTsKICMgZW5kaWYKIAogLyogWVlSMVtZWU5dIC0tIFN5
bWJvbCBudW1iZXIgb2Ygc3ltYm9sIHRoYXQgcnVsZSBZWU4gZGVyaXZlcy4gICovCiBzdGF0aWMg
Y29uc3QgeXl0eXBlX3VpbnQ4IHl5cjFbXSA9CiB7Ci0gICAgICAgMCwgICAgOTYsICAgIDk3LCAg
ICA5OCwgICAgOTgsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk5LCAgICA5OSwKLSAgICAgIDk5
LCAgICA5OSwgICAgOTksICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMiwgICAxMDMs
ICAgMTAzLAotICAgICAxMDQsICAgMTA0LCAgIDEwNSwgICAxMDUsICAgMTA2LCAgIDEwNywgICAx
MDcsICAgMTA3LCAgIDEwOCwgICAxMDgsCi0gICAgIDEwOCwgICAxMDgsICAgMTA5LCAgIDEwOSwg
ICAxMDksICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTExLCAgIDExMSwKLSAgICAgMTExLCAgIDEx
MiwgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExNCwgICAxMTQsICAgMTE0
LAotICAgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE4LCAgIDExOSwgICAxMTksICAg
MTIwLCAgIDEyMCwgICAxMjEsCi0gICAgIDEyMSwgICAxMjIsICAgMTIyLCAgIDEyMywgICAxMjMs
ICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTI0LCAgIDEyNCwKLSAgICAgMTI1LCAgIDEyNiwgICAx
MjYsICAgMTI2LCAgIDEyNywgICAxMjgsICAgMTI4LCAgIDEyOSwgICAxMjksICAgMTMwLAotICAg
ICAxMzEsICAgMTMxLCAgIDEzMiwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzMsICAgMTMzLCAg
IDEzMywgICAxMzMsCi0gICAgIDEzNCwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM1
LCAgIDEzNiwgICAxMzYsICAgMTM2LCAgIDEzNiwKLSAgICAgMTM2LCAgIDEzNiwgICAxMzcsICAg
MTM3LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM5LAotICAgICAxMzks
ICAgMTQwLCAgIDE0MCwgICAxNDAsICAgMTQxLCAgIDE0MSwgICAxNDIsICAgMTQyLCAgIDE0Miwg
ICAxNDIsCisgICAgICAgMCwgICAgOTUsICAgIDk2LCAgICA5NiwgICAgOTcsICAgIDk4LCAgICA5
OCwgICAgOTgsICAgIDk4LCAgICA5OCwKKyAgICAgIDk5LCAgICA5OSwgICAgOTksICAgIDk5LCAg
ICA5OSwgICAgOTksICAgMTAwLCAgIDEwMSwgICAxMDIsICAgMTAyLAorICAgICAxMDMsICAgMTAz
LCAgIDEwNCwgICAxMDQsICAgMTA1LCAgIDEwNSwgICAxMDYsICAgMTA3LCAgIDEwNywgICAxMDgs
CisgICAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOSwgICAxMDksICAgMTA5LCAgIDExMCwgICAx
MTAsICAgMTEwLCAgIDExMSwKKyAgICAgMTExLCAgIDExMSwgICAxMTIsICAgMTEzLCAgIDExMywg
ICAxMTMsICAgMTEzLCAgIDExMywgICAxMTQsICAgMTE0LAorICAgICAxMTQsICAgMTE1LCAgIDEx
NiwgICAxMTcsICAgMTE4LCAgIDExOCwgICAxMTksICAgMTE5LCAgIDEyMCwgICAxMjAsCisgICAg
IDEyMSwgICAxMjEsICAgMTIyLCAgIDEyMiwgICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjMsICAg
MTIzLCAgIDEyNCwKKyAgICAgMTI0LCAgIDEyNSwgICAxMjYsICAgMTI2LCAgIDEyNiwgICAxMjcs
ICAgMTI4LCAgIDEyOCwgICAxMjksICAgMTI5LAorICAgICAxMzAsICAgMTMxLCAgIDEzMSwgICAx
MzIsICAgMTMyLCAgIDEzMiwgICAxMzIsICAgMTMzLCAgIDEzMywgICAxMzMsCisgICAgIDEzMywg
ICAxMzQsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzYsICAgMTM2LCAg
IDEzNiwKKyAgICAgMTM2LCAgIDEzNiwgICAxMzYsICAgMTM3LCAgIDEzNywgICAxMzgsICAgMTM4
LCAgIDEzOCwgICAxMzgsICAgMTM4LAorICAgICAxMzksICAgMTM5LCAgIDE0MCwgICAxNDAsICAg
MTQwLCAgIDE0MSwgICAxNDEsICAgMTQyLCAgIDE0MiwgICAxNDIsCiAgICAgIDE0MiwgICAxNDIs
ICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwK
LSAgICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0
MiwgICAxNDQsICAgMTQzLAotICAgICAxNDUsICAgMTQzLCAgIDE0NiwgICAxNDYsICAgMTQ3LCAg
IDE0OCwgICAxNDgsICAgMTQ5LCAgIDE0OSwgICAxNTAsCi0gICAgIDE1MSwgICAxNTIsICAgMTUy
LCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTU0LCAgIDE1NSwKLSAgICAg
MTU2LCAgIDE1NCwgICAxNTcsICAgMTU3LCAgIDE1OSwgICAxNTgsICAgMTYwLCAgIDE1OCwgICAx
NjEsICAgMTYxLAotICAgICAxNjIsICAgMTYyLCAgIDE2MywgICAxNjMsICAgMTY0LCAgIDE2NSwg
ICAxNjUsICAgMTY2LCAgIDE2NiwgICAxNjgsCi0gICAgIDE2NywgICAxNjksICAgMTY3LCAgIDE3
MCwgICAxNjcsICAgMTcxLCAgIDE3MSwgICAxNzIsICAgMTcyLCAgIDE3MywKLSAgICAgMTczLCAg
IDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc1LCAgIDE3NSwgICAxNzYsICAg
MTc2LAotICAgICAxNzgsICAgMTc3CisgICAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAx
NDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0NCwKKyAgICAgMTQzLCAgIDE0NSwg
ICAxNDMsICAgMTQ2LCAgIDE0NiwgICAxNDcsICAgMTQ4LCAgIDE0OCwgICAxNDksICAgMTQ5LAor
ICAgICAxNTAsICAgMTUxLCAgIDE1MiwgICAxNTIsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUz
LCAgIDE1MywgICAxNTQsCisgICAgIDE1NSwgICAxNTYsICAgMTU0LCAgIDE1NywgICAxNTcsICAg
MTU5LCAgIDE1OCwgICAxNjAsICAgMTU4LCAgIDE2MSwKKyAgICAgMTYxLCAgIDE2MiwgICAxNjIs
ICAgMTYzLCAgIDE2MywgICAxNjQsICAgMTY1LCAgIDE2NSwgICAxNjYsICAgMTY2LAorICAgICAx
NjgsICAgMTY3LCAgIDE2OSwgICAxNjcsICAgMTcwLCAgIDE2NywgICAxNzEsICAgMTcxLCAgIDE3
MiwgICAxNzIsCisgICAgIDE3MywgICAxNzMsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAg
IDE3NCwgICAxNzUsICAgMTc1LCAgIDE3NiwKKyAgICAgMTc2LCAgIDE3OCwgICAxNzcKIH07CiAK
IC8qIFlZUjJbWVlOXSAtLSBOdW1iZXIgb2Ygc3ltYm9scyBjb21wb3NpbmcgcmlnaHQgaGFuZCBz
aWRlIG9mIHJ1bGUgWVlOLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0K
IHsKLSAgICAgICAwLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMywgICAgIDEsICAgICA0LAotICAgICAgIDEsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMiwgICAgIDIsCi0gICAgICAgMiwgICAgIDEsICAg
ICAyLCAgICAgMywgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwKLSAg
ICAgICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywg
ICAgIDEsICAgICAzLAotICAgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAg
MywgICAgIDMsICAgICAxLCAgICAgMywgICAgIDMsCi0gICAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwKLSAgICAgICA1
LCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAzLAotICAgICAgIDEsICAgICAyLCAgICAgMiwgICAgIDQsICAgICAyLCAgICAgMSwgICAg
IDEsICAgICAyLCAgICAgMywgICAgIDMsCi0gICAgICAgMiwgICAgIDUsICAgICAzLCAgICAgMiwg
ICAgIDMsICAgICAyLCAgICAgMCwgICAgIDEsICAgICAxLCAgICAgMSwKLSAgICAgICAxLCAgICAg
MSwgICAgIDMsICAgICA1LCAgICAgNiwgICAgIDUsICAgICAxLCAgICAgMiwgICAgIDQsICAgICA1
LAotICAgICAgIDQsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAyLCAgICAgMSwgICAgIDEsCi0gICAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICA0LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAwLCAgICAgMiwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLAorICAg
ICAgIDEsICAgICA0LCAgICAgMSwgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDMsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAz
LCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDMsICAgICAxLAorICAgICAgIDMs
ICAgICAzLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMSwg
ICAgIDMsCisgICAgICAgMywgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAg
MSwgICAgIDMsICAgICAxLCAgICAgMywKKyAgICAgICAxLCAgICAgNSwgICAgIDEsICAgICAzLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAorICAgICAgIDMsICAgICAx
LCAgICAgMiwgICAgIDIsICAgICA0LCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDMs
CisgICAgICAgMywgICAgIDIsICAgICA1LCAgICAgMywgICAgIDIsICAgICAzLCAgICAgMiwgICAg
IDAsICAgICAxLCAgICAgMSwKKyAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgNSwg
ICAgIDYsICAgICA1LCAgICAgMSwgICAgIDIsICAgICA0LAorICAgICAgIDUsICAgICA0LCAgICAg
MiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDEsCisgICAg
ICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgNCwgICAgIDEsICAg
ICAxLCAgICAgMSwKICAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAotICAgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDYsCi0gICAgICAgMCwg
ICAgIDUsICAgICAxLCAgICAgMiwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICA0LCAg
ICAgMSwKLSAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDIsICAgICAwLAotICAgICAgIDAsICAgICA1LCAgICAgMSwgICAgIDEsICAg
ICAwLCAgICAgMiwgICAgIDAsICAgICAyLCAgICAgMiwgICAgIDMsCi0gICAgICAgMSwgICAgIDIs
ICAgICAxLCAgICAgMiwgICAgIDUsICAgICAzLCAgICAgMSwgICAgIDEsICAgICA0LCAgICAgMCwK
LSAgICAgICA2LCAgICAgMCwgICAgIDgsICAgICAwLCAgICAgNywgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDAsICAgICAyLAotICAgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAzLCAg
ICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsCi0gICAgICAgMCwgICAgIDMKKyAgICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAwLAorICAgICAgIDYsICAgICAwLCAgICAgNSwgICAgIDEsICAgICAyLCAgICAgMywg
ICAgIDEsICAgICAzLCAgICAgMSwgICAgIDQsCisgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwKKyAgICAgICAwLCAg
ICAgMCwgICAgIDUsICAgICAxLCAgICAgMSwgICAgIDAsICAgICAyLCAgICAgMCwgICAgIDIsICAg
ICAyLAorICAgICAgIDMsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgNSwgICAgIDMs
ICAgICAxLCAgICAgMSwgICAgIDQsCisgICAgICAgMCwgICAgIDYsICAgICAwLCAgICAgOCwgICAg
IDAsICAgICA3LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwKKyAgICAgICAyLCAgICAgMywg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLAor
ICAgICAgIDEsICAgICAwLCAgICAgMwogfTsKIAogLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0gLS0g
RGVmYXVsdCBydWxlIHRvIHJlZHVjZSB3aXRoIGluIHN0YXRlCkBAIC05MDMsNDAwICs5MjQsNDE2
IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0KICAgIG1lYW5zIHRoZSBkZWZh
dWx0IGlzIGFuIGVycm9yLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlkZWZhY3Rb
XSA9CiB7Ci0gICAgICAgMCwgICAgIDAsICAgMTExLCAgIDExMiwgICAxMTMsICAgICAwLCAgIDEw
NSwgICAxMDQsICAgMTE5LCAgIDExNywKLSAgICAgMTE4LCAgIDEyMywgICAxMjQsICAgMTI1LCAg
IDEyNiwgICAxMjcsICAgMTI4LCAgIDEyMCwgICAxMjEsICAgMTIyLAotICAgICAxMjksICAgMTMw
LCAgIDEzMSwgICAxMDgsICAgMTA2LCAgICAgMCwgICAxMTYsICAgMTMyLCAgIDEzMywgICAxMzQs
Ci0gICAgIDEzNSwgICAxMzcsICAgMTk5LCAgIDIwMCwgICAgIDAsICAgIDc2LCAgICA4NiwgICAg
IDAsICAgIDkxLCAgICA5NiwKLSAgICAgICAwLCAgIDEwMiwgICAgIDAsICAgMTA5LCAgIDExNCwg
ICAxMzYsICAgICAwLCAgIDE5NiwgICAxOTgsICAgMTA3LAotICAgICAxMDEsICAgICAwLCAgICAg
MCwgICAxNDAsICAgIDcxLCAgICAgMCwgICAgNzQsICAgIDg2LCAgICAgMCwgICAgODcsCi0gICAg
ICA4OCwgICAgODksICAgIDc3LCAgICAgMCwgICAgODYsICAgICAwLCAgICA3MiwgICAgOTcsICAg
MTAzLCAgIDExMCwKLSAgICAgICAwLCAgICAgMSwgICAxOTcsICAgICAwLCAgIDEzOCwgICAgIDAs
ICAgICAwLCAgIDIwMSwgICAgNzgsICAgIDgzLAotICAgICAgODUsICAgIDkwLCAgICAgMCwgICAg
OTIsICAgIDc5LCAgICAgMCwgICAgIDAsICAgICAyLCAgICAgNSwgICAgIDQsCi0gICAgICAgNiwg
ICAgMjcsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDM0LCAgICAzMywgICAgMzIsICAgICAzLCAg
ICAgOCwKLSAgICAgIDI4LCAgICAxMCwgICAgMTUsICAgIDE2LCAgICAgMCwgICAgIDAsICAgIDIx
LCAgICAgMCwgICAgMzUsICAgICAwLAotICAgICAgMzgsICAgIDQxLCAgICA0MiwgICAgNDcsICAg
IDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NSwgICAgNTcsCi0gICAgICA1OSwgICAgNzAs
ICAgICAwLCAgICAyNSwgICAgNzMsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQyLCAgICAgMCwK
LSAgICAgICAwLCAgIDE4MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1
OSwgICAxNjgsICAgMTcyLAotICAgICAgMzUsICAgIDYxLCAgICA2OCwgICAgIDAsICAgMTUwLCAg
ICAgMCwgICAxMTQsICAgMTUzLCAgIDE3MCwgICAxNTIsCi0gICAgIDE1MSwgICAgIDAsICAgMTU0
LCAgIDE1NSwgICAxNTYsICAgMTU3LCAgICA4MCwgICAgODIsICAgIDg0LCAgICAgMCwKLSAgICAg
ICAwLCAgICA5OCwgICAgIDAsICAgMTQ5LCAgIDEwMCwgICAgMjksICAgIDMwLCAgICAgMCwgICAg
MTIsICAgIDEzLAotICAgICAgIDAsICAgICAwLCAgICAxOSwgICAgMTgsICAgICAwLCAgICAyMCwg
ICAgMjIsICAgIDI0LCAgICAzMSwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTE1LCAgICAgMCwgICAxNDcsICAgICAwLCAgIDE0NSwgICAxNDEsICAg
MTQzLAotICAgICAxOTIsICAgMTkxLCAgIDE2NiwgICAxODMsICAgICAwLCAgIDE5NSwgICAxOTMs
ICAgICAwLCAgIDE3OSwgICAxNTgsCi0gICAgICAgMCwgICAgNjQsICAgIDY1LCAgICA2NiwgICAg
NjcsICAgIDYzLCAgICAgMCwgICAgIDAsICAgMTczLCAgIDE2OSwKLSAgICAgMTcxLCAgICAgMCwg
ICAgOTMsICAgICAwLCAgICA5NSwgICAgOTksICAgICA3LCAgICAgMCwgICAgMTQsICAgIDI2LAot
ICAgICAgMTEsICAgIDE3LCAgICAyMywgICAgMzYsICAgIDM3LCAgICA0MCwgICAgMzksICAgIDQ1
LCAgICA0NiwgICAgNDMsCi0gICAgICA0NCwgICAgNDgsICAgIDQ5LCAgICA1NCwgICAgNTYsICAg
IDU4LCAgICAgMCwgICAxMzksICAgICAwLCAgICAgMCwKLSAgICAgMTQ0LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgMTk0LCAgICAgMCwgICAxNjAsICAgIDYyLAotICAgICAg
NjksICAgICAwLCAgICA5NCwgICAgIDksICAgICAwLCAgICAgMCwgICAxNDYsICAgICAwLCAgIDE2
NSwgICAxNjcsCi0gICAgIDE4NiwgICAxODUsICAgMTg4LCAgIDE2NiwgICAxNzcsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDgxLCAgICA2MCwKLSAgICAgMTQ4LCAgICAgMCwgICAxODcsICAgICAw
LCAgICAgMCwgICAxNzYsICAgMTc0LCAgICAgMCwgICAgIDAsICAgMTYxLAotICAgICAgIDAsICAg
MTg5LCAgICAgMCwgICAxNjYsICAgICAwLCAgIDE2MywgICAxODAsICAgMTYyLCAgICAgMCwgICAx
OTAsCi0gICAgIDE4NCwgICAxNzUsICAgMTc4LCAgIDE4MgorICAgICAgIDAsICAgICAwLCAgIDEx
MiwgICAxMTMsICAgMTE0LCAgICAgMCwgICAxMDYsICAgMTA1LCAgIDEyMCwgICAxMTgsCisgICAg
IDExOSwgICAxMjQsICAgMTI1LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOSwgICAxMjEsICAg
MTIyLCAgIDEyMywKKyAgICAgMTMwLCAgIDEzMSwgICAxMzIsICAgMTA5LCAgIDEwNywgICAgIDAs
ICAgMTE3LCAgIDEzMywgICAxMzQsICAgMTM1LAorICAgICAxMzYsICAgMTM4LCAgIDIwMCwgICAy
MDEsICAgICAwLCAgICA3NywgICAgODcsICAgICAwLCAgICA5MiwgICAgOTcsCisgICAgICAgMCwg
ICAxMDMsICAgICAwLCAgIDExMCwgICAxMTUsICAgMTM3LCAgICAgMCwgICAxOTcsICAgMTk5LCAg
IDEwOCwKKyAgICAgMTAyLCAgICAgMCwgICAgIDIsICAgICAzLCAgIDE0MSwgICAgIDAsICAgIDcy
LCAgICAgMCwgICAgNzUsICAgIDg3LAorICAgICAgIDAsICAgIDg4LCAgICA4OSwgICAgOTAsICAg
IDc4LCAgICAgMCwgICAgODcsICAgICAwLCAgICA3MywgICAgIDIsCisgICAgICA5OCwgICAxMDQs
ICAgMTExLCAgICAgMCwgICAgIDEsICAgMTk4LCAgICAgMCwgICAgIDAsICAgMTM5LCAgICAgMCwK
KyAgICAgMjAyLCAgICA3OSwgICAgODQsICAgIDg2LCAgICA5MSwgICAgIDAsICAgIDkzLCAgICA4
MCwgICAgIDAsICAgICAwLAorICAgICAgIDQsICAgICA3LCAgICAgNiwgICAgIDgsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDM1LCAgICAzNCwgICAgMzMsCisgICAgICAgNSwgICAgMTAsICAgIDI5
LCAgICAxMiwgICAgMTcsICAgIDE4LCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAgMCwKKyAgICAg
IDM2LCAgICAgMCwgICAgMzksICAgIDQyLCAgICA0MywgICAgNDgsICAgIDUxLCAgICA1MiwgICAg
NTMsICAgIDU0LAorICAgICAgNTYsICAgIDU4LCAgICA2MCwgICAgNzEsICAgICAwLCAgICAyNywg
ICAgNzQsICAgICAwLCAgICAgMCwgICAxNDMsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE4
MiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE2MCwKKyAgICAgMTY5LCAg
IDE3MywgICAgMzYsICAgIDYyLCAgICA2OSwgICAgIDAsICAgMTUxLCAgICAgMCwgICAxMTUsICAg
MTU0LAorICAgICAxNzEsICAgMTUzLCAgIDE1MiwgICAgIDAsICAgMTU1LCAgIDE1NiwgICAxNTcs
ICAgMTU4LCAgICA4MSwgICAgODMsCisgICAgICA4NSwgICAgIDAsICAgICAwLCAgICA5OSwgICAg
IDAsICAgMTUwLCAgIDEwMSwgICAgMzAsICAgIDMxLCAgICAgMCwKKyAgICAgIDE0LCAgICAxNSwg
ICAgIDAsICAgICAwLCAgICAyMSwgICAgMjAsICAgICAwLCAgICAyMiwgICAgMjQsICAgIDI2LAor
ICAgICAgMzIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
MTE2LCAgIDE0OCwgICAgIDAsICAgMTQ2LCAgIDE0MiwKKyAgICAgMTQ0LCAgICAgMCwgICAxOTMs
ICAgMTkyLCAgIDE2NywgICAxODQsICAgICAwLCAgIDE5NiwgICAxOTQsICAgICAwLAorICAgICAx
ODAsICAgMTU5LCAgICAgMCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY0LCAgICAg
MCwgICAgIDAsCisgICAgIDE3NCwgICAxNzAsICAgMTcyLCAgICAgMCwgICAgOTQsICAgICAwLCAg
ICA5NiwgICAxMDAsICAgICA5LCAgICAgMCwKKyAgICAgIDE2LCAgICAgMiwgICAgIDMsICAgIDEz
LCAgICAxOSwgICAgMjUsICAgIDM3LCAgICAzOCwgICAgNDEsICAgIDQwLAorICAgICAgNDYsICAg
IDQ3LCAgICA0NCwgICAgNDUsICAgIDQ5LCAgICA1MCwgICAgNTUsICAgIDU3LCAgICA1OSwgICAg
IDAsCisgICAgICAgMCwgICAgIDAsICAgMTQ1LCAgIDE0MCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgIDE5NSwKKyAgICAgICAwLCAgIDE2MSwgICAgNjMsICAgIDcwLCAgICAg
MCwgICAgOTUsICAgIDExLCAgICAgMCwgICAgIDAsICAgMTQ3LAorICAgICAgIDAsICAgMTY2LCAg
IDE2OCwgICAxODcsICAgMTg2LCAgIDE4OSwgICAxNjcsICAgMTc4LCAgICAgMCwgICAgIDAsCisg
ICAgICAgMCwgICAgODIsICAgIDYxLCAgIDE0OSwgICAgIDAsICAgMTg4LCAgICAgMCwgICAgIDAs
ICAgMTc3LCAgIDE3NSwKKyAgICAgICAwLCAgICAgMCwgICAxNjIsICAgICAwLCAgIDE5MCwgICAg
IDAsICAgMTY3LCAgICAgMCwgICAxNjQsICAgMTgxLAorICAgICAxNjMsICAgICAwLCAgIDE5MSwg
ICAxODUsICAgMTc2LCAgIDE3OSwgICAxODMKIH07CiAKIC8qIFlZREVGR09UT1tOVEVSTS1OVU1d
LiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlkZWZnb3RvW10gPQogewotICAgICAg
LTEsICAgIDk4LCAgICA5OSwgICAxMDAsICAgMjI3LCAgIDEwMSwgICAxMDIsICAgMTAzLCAgIDEw
NCwgICAxMDUsCi0gICAgIDEwNiwgICAxMDcsICAgMTQwLCAgIDEwOSwgICAxMTAsICAgMTExLCAg
IDExMiwgICAxMTMsICAgMTE0LCAgIDExNSwKLSAgICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE5
LCAgIDEyMCwgICAxNDEsICAgMTQyLCAgIDIxNiwgICAxNDMsICAgMTIyLAotICAgICAxNDQsICAg
MTQ1LCAgICAzNCwgICAgMzUsICAgIDM2LCAgICA3OSwgICAgNjIsICAgIDYzLCAgICA4MCwgICAg
MzcsCi0gICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgIDEyMywg
ICAgNDUsICAgMTI1LCAgICA3NSwKLSAgICAgMTI3LCAgIDEyOCwgICAxOTYsICAgMTk3LCAgIDE2
NCwgICAxNDcsICAgMTQ4LCAgIDE0OSwgICAxNTAsICAgMjEwLAotICAgICAyNzcsICAgMjk2LCAg
IDI1MSwgICAyNTIsICAgMjUzLCAgIDI5NywgICAxNTEsICAgMTUyLCAgIDE1MywgICAyODYsCi0g
ICAgIDI3NiwgICAxNTQsICAgMjU3LCAgIDIwMiwgICAyNTQsICAgMjcyLCAgIDI4MywgICAyODQs
ICAgMTU1LCAgICA0NiwKLSAgICAgIDQ3LCAgICA0OCwgICAgNTUKKyAgICAgIC0xLCAgIDE5Niwg
ICAxMDAsICAgMTAxLCAgIDEwMiwgICAyMjksICAgMTAzLCAgIDEwNCwgICAxMDUsICAgMTA2LAor
ICAgICAxMDcsICAgMTA4LCAgIDEwOSwgICAxNDIsICAgMTExLCAgIDExMiwgICAxMTMsICAgMTE0
LCAgIDExNSwgICAxMTYsCisgICAgIDExNywgICAxMTgsICAgMTE5LCAgIDEyMCwgICAxMjEsICAg
MTIyLCAgIDE0MywgICAxNDQsICAgMjE4LCAgIDE0NSwKKyAgICAgMTI0LCAgIDE0NiwgICAxNDcs
ICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDgyLCAgICA2NCwgICAgNjUsICAgIDgzLAorICAgICAg
MzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgMTI1LCAgICA0
NSwgICAxMzAsCisgICAgICA3NywgICAxMjgsICAgMTI5LCAgIDE5NywgICAxOTgsICAgMTY2LCAg
IDE0OSwgICAxNTAsICAgMTUxLCAgIDE1MiwKKyAgICAgMjEyLCAgIDI4MCwgICAyOTksICAgMjU0
LCAgIDI1NSwgICAyNTYsICAgMzAwLCAgIDE1MywgICAxNTQsICAgMTU1LAorICAgICAyODksICAg
Mjc5LCAgIDE1NiwgICAyNjAsICAgMjA0LCAgIDI1NywgICAyNzUsICAgMjg2LCAgIDI4NywgICAx
NTcsCisgICAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA1NwogfTsKIAogLyogWVlQQUNUW1NUQVRF
LU5VTV0gLS0gSW5kZXggaW4gWVlUQUJMRSBvZiB0aGUgcG9ydGlvbiBkZXNjcmliaW5nCiAgICBT
VEFURS1OVU0uICAqLwotI2RlZmluZSBZWVBBQ1RfTklORiAtMjY2CisjZGVmaW5lIFlZUEFDVF9O
SU5GIC0yNjEKIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlwYWN0W10gPQogewotICAgIDEy
NTMsICAgLTIwLCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDE0OCwgIC0yNjYsICAtMjY2LCAgLTI2
NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
LTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2
LCAgLTI2NiwgICAtMzksICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAt
MjY2LCAgLTI2NiwgICAtMTgsICAgIC0yLCAgICAgNiwgICAgMjEsICAgLTYxLCAgLTI2NiwgICAg
NTEsCi0gICAgMTI5NiwgIC0yNjYsICAxMzcwLCAgLTI2NiwgICAgMjUsICAtMjY2LCAgMTIwOSwg
IC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgMTM3MCwgICAgNDIsICAtMjY2LCAgLTI2
NiwgICAgNTAsICAtMjY2LCAgICA3MSwgICAgOTUsICAtMjY2LAotICAgIC0yNjYsICAtMjY2LCAg
LTI2NiwgIDEyOTYsICAgMTIzLCAgIDEwNSwgIC0yNjYsICAgICA5LCAgLTI2NiwgIC0yNjYsCi0g
ICAgIDk3NCwgIC0yNjYsICAtMjY2LCAgICA4MSwgIC0yNjYsICAxMjk2LCAgIDI5MCwgIC0yNjYs
ICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIDEyNSwgIDEyOTYsICAgLTEzLCAgLTI2NiwgICA3
NzYsICAgOTc0LCAgICA5OSwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2LCAgIDk3NCwg
ICA5NzQsICAgOTc0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgICAz
NSwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxMDAsICAgIC02LCAgMTA0MCwgICAxMDQsICAtMjY2
LCAgIDk3NCwKLSAgICAgIDM2LCAgIC02NCwgIC0yNjYsICAgLTIxLCAgIDEwMiwgIC0yNjYsICAt
MjY2LCAgLTI2NiwgICAxMTMsICAgMTE3LAotICAgICAtNTEsICAtMjY2LCAgIDEwOCwgIC0yNjYs
ICAtMjY2LCAgMTI5NiwgICAxMjksICAxMTA5LCAgLTI2NiwgICAgOTcsCi0gICAgIDEwMywgIC0y
NjYsICAgMTEyLCAgIDExNCwgICAxMDYsICAgODQyLCAgIDExNSwgICAxMTYsICAtMjY2LCAgLTI2
NiwKLSAgICAgIDM5LCAgLTI2NiwgIC0yNjYsICAgLTQzLCAgLTI2NiwgICAtMTgsICAgIDQ3LCAg
LTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgMzc0LCAgLTI2NiwgIC0yNjYsICAtMjY2
LCAgLTI2NiwgICAxMTgsICAtMjY2LCAgLTI2NiwgICA5MDgsCi0gICAgIDk3NCwgIC0yNjYsICAg
MTIwLCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAgMTksICAtMjY2LCAgLTI2NiwKLSAg
ICAgOTc0LCAgMTMzMywgIC0yNjYsICAtMjY2LCAgIDk3NCwgICAxMTksICAtMjY2LCAgLTI2Niwg
IC0yNjYsICAgOTc0LAotICAgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3
NCwgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsCi0gICAgIDk3NCwgICA5NzQsICAgOTc0LCAg
LTI2NiwgIDExNTIsICAgMTIyLCAgIC0yOSwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2
LCAgLTI2NiwgICAxMjEsICAtMjY2LCAgIDk3NCwgIC0yNjYsICAtMjY2LCAgICAgNSwgIC0yNjYs
ICAtMjY2LAotICAgICA0NTgsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICA5
NzQsICAgOTc0LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICA5NzQsICAtMjY2LCAgIDEzNywg
IC0yNjYsICAtMjY2LCAgLTI2NiwgICAxMzgsICAgMTExLCAgLTI2NiwKLSAgICAgMTQyLCAgLTI2
NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAgMzYsICAgIDM2LCAgLTI2NiwgIC0yNjYsICAtMjY2
LAotICAgIC0yNjYsICAgLTIxLCAgIC0yMSwgIC0yNjYsICAgMTEzLCAgIDExNywgICAgODIsICAt
MjY2LCAgIDk3NCwgICAxMjksCi0gICAgLTI2NiwgICAxNzUsICAgIDUwLCAgIDYyNiwgICA3MTAs
ICAgIDM4LCAgLTI2NiwgICAxOTcsICAgNDU4LCAgLTI2NiwKLSAgICAtMjY2LCAgIDE0MSwgIC0y
NjYsICAtMjY2LCAgIDk3NCwgICAxNTUsICAtMjY2LCAgIDE0NSwgIC0yNjYsICAtMjY2LAotICAg
IC0yNjYsICAtMjY2LCAgIDE5NywgICAxMjEsICAgMTExLCAgIDE4NiwgICAxNTksICAgMTYwLCAg
LTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICA5NzQsICAtMjY2LCAgIDE2NiwgICAxNzYsICAgMjM2
LCAgLTI2NiwgICAxNzQsICAgNTQyLCAgLTI2NiwKLSAgICAgIDQzLCAgIDk3NCwgICA1NDIsICAg
MTIxLCAgIDk3NCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxNzcsICAgMTExLAotICAgIC0yNjYs
ICAtMjY2LCAgLTI2NiwgIC0yNjYKKyAgICAxMzI3LCAgIC0yMCwgIC0yNjEsICAtMjYxLCAgLTI2
MSwgICAxMTMsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisg
ICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgLTE5LCAgLTI2MSwgIC0yNjEs
ICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgLTYxLCAgIC00MCwgICAt
MjgsICAgIDc1LCAgICAtNywgIC0yNjEsICAgIDI0LAorICAgIDEzNzAsICAtMjYxLCAgMTQ0NCwg
IC0yNjEsICAgLTExLCAgLTI2MSwgIDEyODMsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2
MSwgIDE0NDQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgICA2LCAgLTI2MSwgICAgNTQsICAtMjYx
LCAgICA4OCwKKyAgICAgIDYyLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEzNzAsICAg
IDU5LCAgICA5MSwgIC0yNjEsICAgIDM2LAorICAgICAtNTAsICAtMjYxLCAgLTI2MSwgIDEwNTEs
ICAtMjYxLCAgLTI2MSwgICAgNjMsICAxMzcwLCAgLTI2MSwgICAyOTMsCisgICAgLTI2MSwgIC0y
NjEsICAtMjYxLCAgLTI2MSwgICAgOTEsICAxMzcwLCAgIC0xMiwgIC0yNjEsICAgODU2LCAgMTA1
MSwKKyAgICAgIDc3LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAg
LTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgIC0xNCwgIC0yNjEsICAtMjYx
LCAgLTI2MSwgICAgODQsICAgLTQ0LCAgMTExNiwgICAgOTUsCisgICAgLTI2MSwgIDEwNTEsICAg
IDUzLCAgICAgMywgIC0yNjEsICAgLTM2LCAgICA4OSwgIC0yNjEsICAtMjYxLCAgLTI2MSwKKyAg
ICAgMTA0LCAgIDEwNywgICAtNDUsICAtMjYxLCAgICA5NiwgIC0yNjEsICAtMjYxLCAgICA5MSwg
IDExODQsICAtMjYxLAorICAgIDEzNzAsICAgIDkyLCAgICA5MywgIC0yNjEsICAgIDk4LCAgIDEw
MSwgICAgOTQsICAgOTIxLCAgIDEwNSwgICAxMDIsCisgICAgLTI2MSwgIC0yNjEsICAgIDcyLCAg
LTI2MSwgIC0yNjEsICAgICA5LCAgLTI2MSwgICAtNjEsICAgIDQyLCAgLTI2MSwKKyAgICAtMjYx
LCAgLTI2MSwgIC0yNjEsICAgMzc2LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAxMDYs
ICAtMjYxLAorICAgIC0yNjEsICAgOTg2LCAgMTA1MSwgIC0yNjEsICAgMTAzLCAgLTI2MSwgIC0y
NjEsICAtMjYxLCAgLTI2MSwgICAtNDEsCisgICAgLTI2MSwgIC0yNjEsICAxMDUxLCAgMTQwNywg
IC0yNjEsICAtMjYxLCAgMTA1MSwgICAxMTAsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgMTA1
MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUx
LAorICAgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgLTI2MSwgICAxMDksICAg
IDIzLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgIDEyMjcsICAtMjYxLCAgLTI2MSwgICAxMTEs
ICAtMjYxLCAgMTA1MSwgIC0yNjEsICAtMjYxLCAgICAyNSwKKyAgICAtMjYxLCAgLTI2MSwgICA0
NTksICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAxMDUxLAorICAg
IC0yNjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAtMjYxLCAgIDExNCwgIC0yNjEsICAtMjYxLCAg
LTI2MSwgICAxMTUsCisgICAgIDExMiwgICAgNzcsICAgMTE2LCAgLTI2MSwgIC0yNjEsICAtMjYx
LCAgLTI2MSwgIC0yNjEsICAgIDUzLCAgICA1MywKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAt
MjYxLCAgIC0zNiwgICAtMzYsICAtMjYxLCAgIDEwNCwgICAxMDcsICAgIDc2LAorICAgIDEwNTEs
ICAgIDkxLCAgLTI2MSwgIC0yNjEsICAgMTQ1LCAgICA1NCwgICA2MjUsICAgNzA4LCAgICAtNiwg
IC0yNjEsCisgICAgIDc5MSwgICA0NTksICAtMjYxLCAgLTI2MSwgICAxMTcsICAtMjYxLCAgLTI2
MSwgIDEwNTEsICAgMTIwLCAgLTI2MSwKKyAgICAgMTI0LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAg
LTI2MSwgICA3OTEsICAgMTExLCAgIDExMiwgICAgOTEsICAgMTI1LAorICAgICAxMjIsICAtMjYx
LCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgLTI2MSwgICAxMTgsICAgMTI4LCAgIDE4MCwgIC0yNjEs
CisgICAgIDEyNiwgICA1NDIsICAtMjYxLCAgICAtNSwgIDEwNTEsICAgNTQyLCAgIDExMSwgIDEw
NTEsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgIDEyMywgICAxMTIsICAtMjYxLCAgLTI2MSwg
IC0yNjEsICAtMjYxCiB9OwogCiAvKiBZWVBHT1RPW05URVJNLU5VTV0uICAqLwogc3RhdGljIGNv
bnN0IHl5dHlwZV9pbnQxNiB5eXBnb3RvW10gPQogewotICAgIC0yNjYsICAtMjY2LCAgLTI2Niwg
IC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgIDg1LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2
NiwgIC0yNjYsICAgLTQ0LCAgLTI2NiwgICAtMTUsICAtMjY2LCAgIC01NSwgICAtMTksICAtMjY2
LCAgLTI2NiwKLSAgICAtMjY2LCAgICA3MiwgICAgNzAsICAgIDczLCAgLTI2NiwgICAtNjYsICAg
LTgzLCAgLTI2NiwgICAtOTIsICAgLTczLAotICAgICAgMTMsICAgIDE0LCAgLTI2NiwgIC0yNjYs
ICAtMjY2LCAgIDE4MCwgICAyMDYsICAgMjAxLCAgIDE4NCwgIC0yNjYsCi0gICAgLTI2NiwgIC0y
NDEsICAgLTI1LCAgIC0zMCwgICAyNjIsICAgIC00LCAgICAgMCwgIC0yNjYsICAtMjY2LCAgLTI2
NiwKLSAgICAgMTQzLCAgLTEyMiwgIC0yNjYsICAgIDIyLCAgLTE0NSwgICAgMTYsICAtMTQ0LCAg
LTIyNiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgLTE3LCAgLTI2NSwgIC0yNjYsICAtMjY2
LCAgIC01NCwgICAgNjMsICAgIDIwLCAgLTI2NiwgIC0yNjYsCi0gICAgICAgNCwgIC0yNjYsICAt
MjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAg
ICAgMjMxLCAgLTI2NiwgIC0yNjYKKyAgICAtMjYxLCAgIC0yNCwgIC0yNjEsICAtMjYxLCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAgMzQsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAg
LTI2MSwgICAgMzIsICAtMjYxLCAgIC0zMywgIC0yNjEsICAgLTI3LCAgIC0yNiwgIC0yNjEsCisg
ICAgLTI2MSwgIC0yNjEsICAgIDE0LCAgICAxNiwgICAgMTgsICAtMjYxLCAgIC02NiwgICAtODcs
ICAtMjYxLCAgIC05MiwKKyAgICAgLTg1LCAgICAxMSwgICAgMTIsICAtMjYxLCAgLTI2MSwgIC0y
NjEsICAgMTQxLCAgIDE1MCwgICAxNjEsICAgMTQzLAorICAgIC0yNjEsICAtMjYxLCAgLTIzMSwg
ICAgIDUsICAgLTMwLCAgIDIyNCwgICAtMTgsICAgICAwLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2
MSwgICAxMDAsICAtMTE5LCAgLTI2MSwgICAtMTcsICAtMTU2LCAgIC0yNSwgIC0xNDUsICAtMjQz
LCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgICAtNjQsICAtMjYwLCAgLTI2MSwgIC0yNjEsICAg
LTUyLCAgICAyMSwgICAtMjIsICAtMjYxLAorICAgIC0yNjEsICAgLTM5LCAgLTI2MSwgIC0yNjEs
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgICAx
OTEsICAtMjYxLCAgLTI2MQogfTsKIAogLyogWVlUQUJMRVtZWVBBQ1RbU1RBVEUtTlVNXV0uICBX
aGF0IHRvIGRvIGluIHN0YXRlIFNUQVRFLU5VTS4gIElmCiAgICBwb3NpdGl2ZSwgc2hpZnQgdGhh
dCB0b2tlbi4gIElmIG5lZ2F0aXZlLCByZWR1Y2UgdGhlIHJ1bGUgd2hpY2gKICAgIG51bWJlciBp
cyB0aGUgb3Bwb3NpdGUuICBJZiB6ZXJvLCBkbyB3aGF0IFlZREVGQUNUIHNheXMuCiAgICBJZiBZ
WVRBQkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCi0jZGVmaW5lIFlZVEFCTEVfTklORiAtMTY1
CisjZGVmaW5lIFlZVEFCTEVfTklORiAtMTY2CiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5
dGFibGVbXSA9CiB7Ci0gICAgICA0NCwgICAgNzcsICAgMTY3LCAgIDE2MywgICAxMjEsICAgMTk5
LCAgICA1MiwgICAyMjAsICAgMjg1LCAgIDE5MSwKLSAgICAgIDY4LCAgICA2NCwgICAxNjIsICAg
IDMyLCAgICAzMywgICAyMjQsICAgMjc1LCAgICA0OSwgICAgNjUsICAgMTIxLAotICAgICAxODEs
ICAgIDY2LCAgIDE4MiwgICAxNzYsICAgIDU4LCAgICA1MCwgICAxMDgsICAgMjY5LCAgIDMwMSwg
ICAgIDYsCi0gICAgICAgNywgICAyNzUsICAgIDY0LCAgICA4MSwgICAxODMsICAgMTg0LCAgIDIx
NywgICAgNTMsICAgIDY5LCAgIDIxOCwKLSAgICAgIDQ0LCAgIDEwOCwgICAgNDQsICAgMjA3LCAg
IDE5MiwgICAxMjYsICAgIDQ0LCAgICA3MywgICAxNjUsICAgMTY2LAotICAgICAyNDksICAgIDQ0
LCAgICA4MSwgICAyNTAsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDIzLCAgICAyNCwgICAgMzIs
Ci0gICAgICAzMywgICAxNTksICAgMjk1LCAgICA0NCwgICAgNTQsICAgMTc4LCAgIDI5NSwgICAx
NzMsICAgMTYwLCAgIDE4NSwKLSAgICAgMTg2LCAgICA1NiwgICAxOTksICAgMTc0LCAgICA1OCwg
ICAgNDQsICAgMTQ2LCAgIDE2MywgICAyMjgsICAgICA2LAotICAgICAgIDcsICAgIDg0LCAgICA0
NCwgICAgODUsICAgMjE3LCAgICA1NywgICAyMjMsICAgMjU2LCAgIDE2OCwgICAxNjksCi0gICAg
ICA4NiwgICAyMzIsICAgMjI2LCAgIDEyMSwgICAtNzUsICAgMTI2LCAgICA2NywgICAxMjYsICAg
MjE3LCAgICA3MCwKLSAgICAgMjQ2LCAgIDIxMSwgICAyMTIsICAgMjEzLCAgICA1OSwgICAgNjAs
ICAgIDYxLCAgICAyMywgICAgMjQsICAgMTcwLAotICAgICAyMTQsICAgMjczLCAgIDI1NSwgICAx
NzEsICAgMjIwLCAgIDEwOCwgICAyOTgsICAgMjE3LCAgICA3NCwgICAtMjUsCi0gICAgIDIxNSwg
ICAgNzAsICAgMjE3LCAgIDE3OSwgICAxODAsICAgIDQ0LCAgICA3NiwgICAgNDQsICAgMjM3LCAg
IDIzOCwKLSAgICAgMjM5LCAgIDI0MCwgICAgNDksICAgMjU5LCAgIDI2MCwgICAyMzMsICAgMjM0
LCAgIDEwOCwgICAxMDgsICAgMTA4LAotICAgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAg
MTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDI2MSwgICAzMDIsCi0gICAgICA4MywgICAxNDYs
ICAgICAyLCAgICAgMywgICAgIDQsICAgMTIxLCAgICA1OSwgICAgNjAsICAgIDYxLCAgIDE4NywK
LSAgICAgMTg4LCAgIDIxNywgICAyNjQsICAgMTI0LCAgIDEyNiwgICAyNzQsICAgMjM1LCAgIDIz
NiwgICAyNDEsICAgMjQyLAotICAgICAxNTYsICAgLTI2LCAgIDE4OSwgICAxNzIsICAgMTk1LCAg
IDI2NSwgICAxNzcsICAgMTA4LCAgIDE5MCwgICAyMDAsCi0gICAgIDI3NCwgICAyNzksICAgMTIx
LCAgIDE5MywgICAyMDMsICAgMjAxLCAgIDIwNCwgICAyMDgsICAgMjA1LCAgIDI5MCwKLSAgICAg
MjE3LCAgLTExNiwgICAyMjEsICAgMjA5LCAgICA0NCwgICAyMjUsICAgMjQ4LCAgLTE2NCwgICAy
NjgsICAgMjk5LAotICAgICAgNTgsICAgICAyLCAgICAgMywgICAgIDQsICAgMTA4LCAgICAgNiwg
ICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCi0gICAgIDE0NiwgICAxNjMsICAgMjYyLCAgIDI2
MywgICAtMjcsICAgMjY3LCAgIDI3OCwgICAyODEsICAgIDExLCAgICAxMiwKLSAgICAgIDEzLCAg
ICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAg
IDIyLAotICAgICAyODAsICAgMjg3LCAgIDI4OCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgMjg5LCAgICAyNywgICAgMjgsCi0gICAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAg
ODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgMjkxLCAgIDI5MiwKLSAgICAgIDkyLCAgICA5Mywg
ICAyOTMsICAgMTQ2LCAgIDE0NiwgICAyOTQsICAgMjMxLCAgIDE0NiwgICAxNDYsICAgMzAzLAot
ICAgICAyNDQsICAgMjQzLCAgIDE1NywgICAgNzgsICAgMjQ1LCAgICA4MiwgICAxNTgsICAgIDUx
LCAgIDE5NCwgICAgOTQsCi0gICAgIDI3MCwgICAyNjYsICAgMTQ2LCAgIDI1OCwgICAyNzEsICAg
MzAwLCAgIDI4MiwgICAgNzIsICAgICAwLCAgICAgMCwKLSAgICAgIDk1LCAgICA5NiwgICAgIDAs
ICAgIDk3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDYsICAgICAwLAotICAgICAg
IDAsICAgICAwLCAgIDE0NiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAg
NiwgICAgIDcsCi0gICAgICAgOCwgICAgIDksICAgIDEwLCAgIDEyOSwgICAxMzAsICAgMTMxLCAg
ICAgMCwgICAxMzIsICAgMTMzLCAgIDEzNCwKLSAgICAgMTM1LCAgICAxMSwgICAgMTIsICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAsICAg
IDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAg
MjYsCi0gICAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwg
ICAgODgsICAgIDg5LCAgICA5MCwKLSAgICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5
MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgNDQsICAgIDU1LCAg
IDE2NSwgICAxNjQsICAgMTY5LCAgICA4MCwgICAyMjYsICAgMTIzLCAgIDIyMiwgICAyMDAsCisg
ICAgICA3MSwgICAgMzIsICAgIDMzLCAgIDI3MiwgICAxOTMsICAgIDcwLCAgIDI4OCwgICAgNDks
ICAgMTg1LCAgIDE4NiwKKyAgICAgIDU2LCAgIDE3OCwgICAxMjMsICAgIDg4LCAgICA3MiwgICAg
NTAsICAgIDUyLCAgICA1MywgICAxNzUsICAgMjc4LAorICAgICAgODksICAgMjI4LCAgICA1OCwg
ICAgNzYsICAgMTc2LCAgICA4NCwgICAzMDQsICAgMjE5LCAgIDE3MCwgICAxNzEsCisgICAgICA0
NCwgICAgNjYsICAgIDQ0LCAgICA4NiwgICAyNzgsICAgMjA5LCAgICA0NCwgICAxMjcsICAgMjk4
LCAgIDE5NCwKKyAgICAgIDU5LCAgICA0NCwgICAyOTgsICAgMTg3LCAgIDE4OCwgICAgODQsICAg
IDU0LCAgICAzMiwgICAgMzMsICAgMTcyLAorICAgICAxNTgsICAgMTYxLCAgICA3MywgICAxNzMs
ICAgIDY2LCAgICA0NCwgICAyNzYsICAgMzAxLCAgIDE2MiwgICAgNjksCisgICAgICA1MywgICAg
NjcsICAgMjE5LCAgIDIxOSwgICAgNjgsICAgMTY1LCAgIDIyNSwgICAgNDQsICAgIDYwLCAgIDE0
OCwKKyAgICAgMjMwLCAgICA3OCwgICAyMDAsICAgICA2LCAgICAgNywgICAgNDQsICAgMTgzLCAg
IDIxOSwgICAxODQsICAgMjM1LAorICAgICAyMjAsICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYz
LCAgIDEyMywgICAgIDYsICAgICA3LCAgIDEyNywgICAgNDksCisgICAgIDEyNywgICAyNTEsICAg
MjQ5LCAgIDIxOSwgICAyNTIsICAgMTEwLCAgIDI1OSwgICAgODcsICAgIDYxLCAgICA2MiwKKyAg
ICAgIDYzLCAgICAyMywgICAgMjQsICAgLTI3LCAgIDI1OCwgICAgNzMsICAgMjIyLCAgICAgMiwg
ICAgIDMsICAgICA0LAorICAgICAxMTAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDIzLCAgICAy
NCwgICAxNjcsICAgMTY4LCAgICA0NCwgICAgNzksCisgICAgICA0NCwgICAyNjIsICAgMjYzLCAg
IDIxMywgICAyMTQsICAgMjE1LCAgICA1MiwgICAgNTMsICAgMjY0LCAgIDE4MSwKKyAgICAgMTgy
LCAgIDMwNSwgICAyMTYsICAgMTgwLCAgIDEyNiwgICAxODksICAgMTkwLCAgIC03NiwgICAtMjgs
ICAgMjMzLAorICAgICAyMzgsICAgMjM5LCAgIDIxNywgICAxNDgsICAgMjE5LCAgIDI2NywgICAx
NzQsICAgMTIzLCAgIDI0MCwgICAyNDEsCisgICAgIDI0MiwgICAyNDMsICAgMTkxLCAgIDI0NCwg
ICAyNDUsICAgMjY4LCAgIDE3OSwgICAxOTIsICAgMjc3LCAgIDIwNSwKKyAgICAgMTk1LCAgIDEy
NywgICAyMDYsICAgMjAyLCAgIDIwMywgICAyMDcsICAgMjEwLCAgIDIyNywgICAyMTEsICAgMjIz
LAorICAgICAyODIsICAtMTE3LCAgIDI1MCwgICAyNzcsICAgMTIzLCAgIDI3MCwgIC0xNjUsICAt
MTM4LCAgIDI2NSwgICAyNjYsCisgICAgIDIxOSwgICAyODEsICAgMjkzLCAgIDExMCwgICAyODMs
ICAgMjg0LCAgIDI5NiwgICAyOTEsICAgMjkyLCAgIDI5NCwKKyAgICAgMjk1LCAgICA0NCwgICAz
MDIsICAgMjcxLCAgIDMwNiwgICAyNDYsICAgMjk3LCAgIDIzNCwgICAyNDcsICAgIDgxLAorICAg
ICAxNjUsICAgMjQ4LCAgIDE0OCwgICAyMzYsICAgMjM3LCAgIDExMCwgICAxMTAsICAgMTEwLCAg
IDExMCwgICAxMTAsCisgICAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTEw
LCAgIDE1OSwgICAgODUsICAgMTYwLCAgICA1MSwKKyAgICAgMjAxLCAgIDMwMywgICAyNzMsICAg
MjYxLCAgIDI2OSwgICAyNzQsICAgMjg1LCAgICA3NSwgICAgIDAsICAgICAwLAogICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEz
NywgICAxMzgsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAg
ICA5NiwgICAgIDAsICAgIDk3LCAgICAgMSwgICAgIDIsICAgICAzLAotICAgICAgIDQsICAgICA1
LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTI5LCAgIDEzMCwgICAxMzEs
Ci0gICAgICAgMCwgICAxMzIsICAgMTMzLCAgIDEzNCwgICAxMzUsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwKLSAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgMTM2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsCi0gICAg
ICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAg
IDkzLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI5MCwgICAxMTAs
ICAgMTQ4LCAgIDE0OCwgICAgIDAsICAgICAwLAorICAgICAxNDgsICAgMTQ4LCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ4LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAxMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgMTQ4LCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE0OCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsCisgICAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEzMSwgICAxMzIsICAgMTMzLCAgICAgMCwK
KyAgICAgMTM0LCAgIDEzNSwgICAxMzYsICAgMTM3LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAx
NCwgICAgMTUsICAgIDE2LAorICAgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAg
ICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsCisgICAgICAyNCwgICAgMjUsICAgIDI2
LCAgIDEzOCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwKKyAgICAg
IDkxLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LCAgICAgMCwgICAg
IDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgMTM3LCAg
IDIxOSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICA5NSwgICAgOTYsICAg
ICAwLAotICAgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwgICAgIDksCi0gICAgICAxMCwgICAxMjksICAgMTMwLCAgIDEzMSwgICAg
IDAsICAgMTMyLCAgIDEzMywgICAxMzQsICAgMTM1LCAgICAxMSwKLSAgICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAot
ICAgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgIDEzNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAg
IDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwKLSAgICAgICAwLCAgICA5MiwgICAgOTMs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEz
OSwgICAxNDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAg
ICA5OCwgICAgIDAsICAgIDk5LCAgICAgMSwKKyAgICAgICAyLCAgICAgMywgICAgIDQsICAgICA1
LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMxLAorICAgICAxMzIsICAg
MTMzLCAgICAgMCwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAxMiwgICAg
MTMsCisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LAorICAgICAgMzAsICAgIDkwLCAg
ICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsCisg
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgMTM5LCAgIDIyMSwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLCAgICA5NywgICAgOTgsCisgICAgICAg
MCwgICAgOTksICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3
LCAgICAgOCwKKyAgICAgICA5LCAgICAxMCwgICAxMzEsICAgMTMyLCAgIDEzMywgICAgIDAsICAg
MTM0LCAgIDEzNSwgICAxMzYsICAgMTM3LAorICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCisgICAgICAyMSwgICAg
MjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEz
OCwKKyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAg
ICA5MiwgICAgOTMsICAgICAwLAorICAgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzNywgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAotICAgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAg
MSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsCi0gICAgICAgNiwgICAgIDcsICAgICA4LCAg
ICAgOSwgICAgMTAsICAgMTI5LCAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwKLSAgICAgMTMz
LCAgIDEzNCwgICAxMzUsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYs
ICAgIDE3LAorICAgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgIDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwg
ICAgOTksICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAg
NywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEsICAgMTMyLCAgIDEzMywgICAgIDAsICAgMTM0
LAorICAgICAxMzUsICAgMTM2LCAgIDEzNywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LCAgICAxNiwgICAgMTcsCiAgICAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwKLSAgICAgIDI1LCAgICAyNiwgICAx
MzYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LAotICAg
ICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAyNSwgICAgMjYsICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwKKyAgICAgIDkyLCAgICA5MywgICAgIDAsICAg
ICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDc2LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLAotICAgICAgIDIsICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMjks
Ci0gICAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LCAgIDEzNSwgICAg
MTEsICAgIDEyLCAgICAxMywKLSAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAg
ICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAg
ICAwLCAgICA5MiwKLSAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsCi0gICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAg
ICA5NSwKLSAgICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0
LCAgICAgNSwgICAgIDYsICAgICA3LAotICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgMTEs
ICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwK
LSAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LAotICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsCi0gICAgICA5MSwgICAgIDAsICAgICAw
LCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA3OSwgICAg
IDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5OCwg
ICAgIDAsICAgIDk5LCAgICAgMSwgICAgIDIsCisgICAgICAgMywgICAgIDQsICAgICA1LCAgICAg
NiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMxLCAgIDEzMiwKKyAgICAgMTMzLCAg
ICAgMCwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAxMiwgICAgMTMsICAg
IDE0LAorICAgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
ICAgIDIyLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAg
MjYsICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKKyAgICAgIDkwLCAgICAzMSwg
ICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLCAgICA5NywgICAgOTgsICAgICAwLAorICAgICAg
OTksICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAg
OCwgICAgIDksCisgICAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwKKyAgICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1
LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAorICAgICAgMjIsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAg
MjcsCisgICAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5Miwg
ICAgOTMsICAgICAwLCAgICAgMCwKKyAgICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsCisg
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDE0MSwKKyAgICAgIDk3LCAgICA5OCwgICAgIDAsICAgIDk5LCAgICA2MCwgICAg
IDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICA2LAorICAgICAgIDcsICAgICA4LCAgICAgOSwg
ICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAg
MCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAgICA5MywgICAg
IDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAg
MTM5LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgMTEsICAgIDEyLCAgICAxMywKKyAg
ICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwg
ICAgMTAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LCAgICAg
MCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsCiAgICAgICAxNCwgICAgMTUsICAgIDE2LCAg
ICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKICAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgs
ICAgIDI5LAotICAgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAg
OTEsICAgICAwLCAgICAgMCwgICAgOTIsCi0gICAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAw
LAotICAgICAgIDAsICAgMTYxLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgOTUsCi0gICAgICA5NiwgICAgIDAsICAgIDk3LCAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKLSAgICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAg
ICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAg
ICAzMSwgICAgODgsCi0gICAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDky
LCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgIDMwLCAgICA5MCwgICAgMzEsICAg
IDkxLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LAogICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDIwNiwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLAotICAgICAgMTIsICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
Ci0gICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAg
MjYsICAgICAwLCAgICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwg
ICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLAotICAgICAgIDAsICAgIDkyLCAgICA5
MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAg
ICAwLCAgICAgMCwKKyAgICAgMTYzLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LAorICAgICAgIDAsICAgIDk5LCAgICAxMSwgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCisgICAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAyNSwKKyAgICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkw
LCAgICAzMSwgICAgOTEsICAgIDkyLAorICAgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAg
IDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK
LSAgICAgIDk0LCAgICAgMCwgICAgIDAsICAgMjIyLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAg
MCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCi0gICAgICAxNiwgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAg
MzAsICAgIDg3LAotICAgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwg
ICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgIDk2LCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKKyAgICAgICAwLCAg
ICAgMCwgICAyMDgsICAgIDk3LCAgICA5OCwgICAgIDAsICAgIDk5LCAgICAxMSwgICAgMTIsICAg
IDEzLAorICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAs
ICAgIDIxLCAgICAyMiwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
MjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwKKyAgICAgIDMwLCAgICA5MCwg
ICAgMzEsICAgIDkxLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LAog
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICA4LCAgICAgOSwgICAgMTAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwgICAgOTYsICAgICAwLAotICAgICAg
OTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDI1LCAgIDE3NSwKLSAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLAotICAgICAgOTEsICAg
ICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgOTYsICAgICAwLCAgICAgMCwKKyAgICAgMjI0LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LAorICAgICAgIDAsICAgIDk5LCAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCisg
ICAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAyNSwKKyAgICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAg
MzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLAorICAgICAgOTMsICAgICAwLCAgICAgMCwg
ICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgOTQsICAgICAyLCAgICAgMywgICAgIDQsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgICAgMCwgICAgOTUs
ICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAxMSwgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwKLSAgICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAyNSwgICAgMjYsICAgICAwLAotICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgICAw
LCAgICAzMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwg
ICAgMTYsICAgIDE3LAotICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAg
MCwgICAxOTgsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAyNSwgICAgMjYsICAgICAwLCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMCwKLSAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDcxLAotICAgICAgIDAsICAgICAwLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAg
IDUsICAgICA2LCAgICAgNywgICAgIDgsCi0gICAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI0NywKLSAgICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIw
LAotICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgIDAsCi0gICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAs
ICAgIDMxLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKKyAgICAgICAwLCAgICAgMCwgICAg
OTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLAorICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgIDExLCAg
ICAxMiwgICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAyNSwgICAxNzcsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LAorICAgICAgMzAs
ICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwg
ICAgOTUsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDIsICAgICAzLAorICAgICAgIDQsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICA5NywgICAgOTgs
CisgICAgICAgMCwgICAgOTksICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwKKyAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAy
NSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsCisgICAg
ICAzMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAg
ICA5LCAgICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLAorICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAg
MTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCisgICAgIDE5OSwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAg
ICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzQsICAg
ICAwLCAgICAgMCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsCiAgICAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK
LSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAx
NCwgICAgMTUsICAgIDE2LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAyNTMsICAgIDExLCAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCiAgICAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywKICAgICAg
IDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
IDAsICAgIDMxLAotICAgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywKLSAgICAgIDE0LCAg
ICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAg
ICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAs
ICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgOCwgICAg
IDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAot
ICAgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAg
IDI4LCAgICAyOSwgICAgMzAsICAgMjI5LCAgICAzMSwKLSAgICAgICA4LCAgICAgOSwgICAgMTAs
ICAgMjMwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAg
IDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAg
OSwgICAgMTAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwKKyAgICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2
LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAorICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAg
MjgsCisgICAgICAyOSwgICAgMzAsICAgICAwLCAgICAzMSwgICAgIDIsICAgICAzLCAgICAgNCwg
ICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgIDExLCAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksCiAg
ICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDI1LCAgICAyNiwKLSAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
IDAsICAgIDMxCisgICAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgICAwLCAg
ICAzMSwgICAgIDgsICAgICA5LCAgICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLAorICAgICAgMTMsICAg
IDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwg
ICAgIDAsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAyMzEsICAgMjMyLCAgICAg
OCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCisg
ICAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgICAwLAorICAgICAgMzEKIH07CiAKIHN0YXRpYyBj
b25zdCB5eXR5cGVfaW50MTYgeXljaGVja1tdID0KIHsKLSAgICAgICAwLCAgICA1NSwgICAgOTQs
ICAgIDg2LCAgICA3MCwgICAxMjcsICAgIDQ1LCAgIDE1MSwgICAyNzMsICAgIDYwLAotICAgICAg
NDAsICAgIDM2LCAgICA4NSwgICAgIDAsICAgICAwLCAgIDE2MCwgICAyNTcsICAgIDM3LCAgICA3
OSwgICAgODUsCi0gICAgICA4NCwgICAgODIsICAgIDg2LCAgIDEwNiwgICAgIDMsICAgIDQ1LCAg
ICA3MCwgICAyNTMsICAgMjkzLCAgICAgOCwKLSAgICAgICA5LCAgIDI3MiwgICAgNTcsICAgIDYz
LCAgICA1NSwgICAgNTYsICAgIDc5LCAgICA3NiwgICAgNDIsICAgIDgyLAotICAgICAgNDAsICAg
IDg1LCAgICA0MiwgICAxMzUsICAgIDk1LCAgICA3NSwgICAgNDYsICAgIDUxLCAgICA5MiwgICAg
OTMsCi0gICAgICA3OSwgICAgNTEsICAgIDgyLCAgICA4MiwgICAgMzMsICAgIDM0LCAgICAzNSwg
ICAgMzYsICAgIDM3LCAgICA0NiwKLSAgICAgIDQ2LCAgICA3NCwgICAyODgsICAgIDYzLCAgICA4
MiwgICAxMDksICAgMjkyLCAgICA3MywgICAgODEsICAgIDkwLAotICAgICAgOTEsICAgIDczLCAg
IDE5NCwgICAgNzksICAgICAzLCAgICA3NSwgICAgNzYsICAgMTYwLCAgIDE3MCwgICAgIDgsCi0g
ICAgICAgOSwgICAgNzIsICAgIDgyLCAgICA3NCwgICAgNzksICAgIDc5LCAgIDE1OSwgICAgODIs
ICAgIDUzLCAgICA1NCwKLSAgICAgIDgxLCAgIDE3NCwgICAgNzMsICAgMTU5LCAgICA3MywgICAx
MjUsICAgIDQ1LCAgIDEyNywgICAgNzksICAgIDc0LAotICAgICAxOTIsICAgIDYyLCAgICA2Mywg
ICAgNjQsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgNzQsCi0gICAgICA3
MSwgICAgNzMsICAgMjA0LCAgICA3OCwgICAyNTgsICAgMTU5LCAgICA3MywgICAgNzksICAgIDc2
LCAgICA3MiwKLSAgICAgIDgxLCAgICA3NCwgICAgNzksICAgIDg3LCAgICA4OCwgICAxMjUsICAg
IDc2LCAgIDEyNywgICAxODMsICAgMTg0LAotICAgICAxODUsICAgMTg2LCAgICAzNywgICAyMTYs
ICAgMjE3LCAgIDE3OSwgICAxODAsICAgMTgxLCAgIDE4MiwgICAxODMsCi0gICAgIDE4NCwgICAx
ODUsICAgMTg2LCAgIDE4NywgICAxODgsICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMjIxLCAgIDI5
NCwKLSAgICAgIDQ1LCAgIDE1MSwgICAgIDQsICAgICA1LCAgICAgNiwgICAyMjEsICAgIDMzLCAg
ICAzNCwgICAgMzUsICAgIDU3LAotICAgICAgNTgsICAgIDc5LCAgICA4MCwgICAgODIsICAgMTk0
LCAgIDI1NywgICAxODEsICAgMTgyLCAgIDE4NywgICAxODgsCi0gICAgICA0NSwgICAgNzIsICAg
IDU5LCAgICA3MywgICAgNDUsICAgMjQ4LCAgICA3MiwgICAyMjEsICAgIDYxLCAgICA4MiwKLSAg
ICAgMjcyLCAgIDI2NCwgICAyNDgsICAgIDc1LCAgICA3MiwgICAgODIsICAgIDcyLCAgICA3Miwg
ICAgODIsICAgMjgxLAotICAgICAgNzksICAgIDcyLCAgICA3NCwgICAgNzcsICAgMTk0LCAgICA3
NSwgICAgNzQsICAgIDc2LCAgIDI1MiwgICAyOTEsCi0gICAgICAgMywgICAgIDQsICAgICA1LCAg
ICAgNiwgICAyNDgsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwKLSAgICAgMjEw
LCAgIDI5NCwgICAgNzUsICAgIDc1LCAgICA3MiwgICAgNDAsICAgIDc1LCAgICA3MiwgICAgMjEs
ICAgIDIyLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLCAgICAzMSwgICAgMzIsCi0gICAgICA3NSwgICAgNDUsICAgIDczLCAgICAzNiwg
ICAgMzcsICAgIDM4LCAgICAzOSwgICAgNzcsICAgIDQxLCAgICA0MiwKLSAgICAgIDQzLCAgICA0
NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgODIsICAgIDcz
LAotICAgICAgNTMsICAgIDU0LCAgICAxNiwgICAyNTMsICAgMjU0LCAgICA4MSwgICAxNzEsICAg
MjU3LCAgIDI1OCwgICAgODIsCi0gICAgIDE5MCwgICAxODksICAgIDgyLCAgICA1NywgICAxOTEs
ICAgIDY0LCAgICA4MiwgICAgIDUsICAgMTI1LCAgICA3MiwKLSAgICAgMjU0LCAgIDI0OSwgICAy
NzIsICAgMjEwLCAgIDI1NCwgICAyOTIsICAgMjcyLCAgICA0NiwgICAgLTEsICAgIC0xLAotICAg
ICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
IDI4OCwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgMjkyLCAgICAgMywgICAgIDQsICAgICA1
LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAxMSwgICAgMTIsICAg
IDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAs
ICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwg
ICAgMjksCi0gICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAz
NiwgICAgMzcsICAgIDM4LCAgICAzOSwKLSAgICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAg
ICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LAotICAgICAgNTAsICAgIC0x
LCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
CisgICAgICAgMCwgICAgMjUsICAgIDg5LCAgICA4OCwgICAgOTYsICAgIDU3LCAgIDE2MiwgICAg
NzMsICAgMTUzLCAgIDEyOCwKKyAgICAgIDQwLCAgICAgMCwgICAgIDAsICAgMjU2LCAgICA1OSwg
ICAgMzksICAgMjc2LCAgICAzNywgICAgNTQsICAgIDU1LAorICAgICAgODEsICAgMTA4LCAgICA4
OCwgICAgNzMsICAgIDQyLCAgICA0NSwgICAgNDUsICAgIDQ2LCAgICA3MiwgICAyNjAsCisgICAg
ICA4MCwgICAgNzIsICAgIDcyLCAgICA1MSwgICAgNzgsICAgIDY1LCAgIDI5NiwgICAgNzgsICAg
IDUyLCAgICA1MywKKyAgICAgIDQwLCAgICAzNiwgICAgNDIsICAgIDY3LCAgIDI3NSwgICAxMzcs
ICAgIDQ2LCAgICA3NywgICAyOTEsICAgIDk0LAorICAgICAgNzgsICAgIDUxLCAgIDI5NSwgICAg
ODksICAgIDkwLCAgICA4NSwgICAgNzUsICAgIDQ2LCAgICA0NiwgICAgNzMsCisgICAgICA4NCwg
ICAgNzMsICAgIDczLCAgICA3NywgICAgNTksICAgIDY1LCAgICA3MiwgICAgNzIsICAgIDgwLCAg
ICA0NSwKKyAgICAgIDQ2LCAgICA3OCwgICAgNzgsICAgIDc4LCAgICA4MSwgICAxNjIsICAgMTYx
LCAgICA3NywgICAgIDMsICAgIDc5LAorICAgICAxNzIsICAgIDc1LCAgIDIwMSwgICAgIDgsICAg
ICA5LCAgICA4NSwgICAgODMsICAgIDc4LCAgICA4NSwgICAxNzYsCisgICAgICA4MSwgICAgIDMs
ICAgIDMzLCAgICAzNCwgICAgMzUsICAgMTYxLCAgICAgOCwgICAgIDksICAgMTI4LCAgICAzNywK
KyAgICAgMTMwLCAgICA3OCwgICAxOTQsICAgIDc4LCAgICA4MSwgICAgNzMsICAgIDgxLCAgICA3
MSwgICAgMzMsICAgIDM0LAorICAgICAgMzUsICAgIDM2LCAgICAzNywgICAgNzEsICAgMjA2LCAg
ICA3MywgICAyNjEsICAgICA0LCAgICAgNSwgICAgIDYsCisgICAgICA4OCwgICAgMzMsICAgIDM0
LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICA5NCwgICAgOTUsICAgMTI4LCAgICA3NSwKKyAgICAg
MTMwLCAgIDIxOCwgICAyMTksICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDQ1LCAgICA0NiwgICAy
MjMsICAgIDg2LAorICAgICAgODcsICAgMjk3LCAgICA3MCwgICAxMTEsICAgIDgxLCAgICA1Niwg
ICAgNTcsICAgIDcyLCAgICA3MSwgICAxNzMsCisgICAgIDE4MywgICAxODQsICAgIDgwLCAgIDE1
MywgICAgNzgsICAgIDc5LCAgICA3MiwgICAyMjMsICAgMTg1LCAgIDE4NiwKKyAgICAgMTg3LCAg
IDE4OCwgICAgNTgsICAgMTg5LCAgIDE5MCwgICAyNTAsICAgIDcxLCAgICA2MCwgICAyNjAsICAg
IDcxLAorICAgICAgNzQsICAgMjAxLCAgICA3MSwgICAgODEsICAgIDgxLCAgICA4MSwgICAgNzEs
ICAgIDc0LCAgICA3NiwgICAgNzMsCisgICAgIDI2NywgICAgNzEsICAgIDczLCAgIDI3NSwgICAy
NTAsICAgIDQwLCAgICA3NSwgICAgNzEsICAgIDc0LCAgICA3NCwKKyAgICAgIDc4LCAgICA3NCwg
ICAyODQsICAgMTYxLCAgICA3NCwgICAgNzEsICAgIDE2LCAgICA3MiwgICAgNzYsICAgIDgxLAor
ICAgICAgNzIsICAgMjAxLCAgIDI5NCwgICAyNTUsICAgIDgxLCAgIDE5MSwgICAgODAsICAgMTcz
LCAgIDE5MiwgICAgNTksCisgICAgIDI5NywgICAxOTMsICAgMjEyLCAgIDE4MSwgICAxODIsICAg
MTgzLCAgIDE4NCwgICAxODUsICAgMTg2LCAgIDE4NywKKyAgICAgMTg4LCAgIDE4OSwgICAxOTAs
ICAgMTkxLCAgIDE5MiwgICAxOTMsICAgIDg1LCAgICA2NiwgICAgODUsICAgICA1LAorICAgICAx
MzAsICAgMjk1LCAgIDI1NywgICAyMTIsICAgMjUxLCAgIDI1NywgICAyNzUsICAgIDQ2LCAgICAt
MSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDc2LCAgICA3NywgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAg
IC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgICAzLCAgICAgNCwgICAg
IDUsCi0gICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwg
ICAgMTMsICAgIDE0LCAgICAxNSwKLSAgICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAotICAgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0g
ICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMs
ICAgIDQ0LCAgICA0NSwKLSAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAg
LTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgMjc4LCAgIDIyMywgICAyNTYsICAgMjU3LCAgICAtMSwgICAgLTEsCisgICAgIDI2
MCwgICAyNjEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyNzUsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgIDI1MCwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAy
OTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMjk1LCAgICAgMywgICAgIDQsICAgICA1LCAgICAg
NiwKKyAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAg
ICAxNCwgICAgMTUsICAgIC0xLAorICAgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIx
LCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCisgICAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwKKyAg
ICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwg
ICAgNDUsICAgIDQ2LAorICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLCAgICA1
MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgNzYsICAgIDc3LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
ODIsICAgIDgzLCAgICA4NCwgICAgLTEsCi0gICAgICA4NiwgICAgIDMsICAgICA0LCAgICAgNSwg
ICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKLSAgICAgIDEyLCAgICAx
MywgICAgMTQsICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIx
LAotICAgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAgMzEsCi0gICAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYs
ICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwKLSAgICAgIDQyLCAgICA0MywgICAg
NDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLAotICAg
ICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDc1LCAgICA3NiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwgICAgODUsICAgICAzLAorICAgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwg
ICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAorICAgICAgLTEsICAgIC0x
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMs
CisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAg
LTEsICAgIDUyLCAgICA1MywKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsCisgICAg
ICAtMSwgICAgNzUsICAgIDc2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEsICAg
IDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgMTEsICAgIDEyLCAgICAxMywgICAg
MTQsICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCisgICAgICAyMSwg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwKKyAgICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3
LCAgICAzOCwgICAgMzksICAgIDQwLAorICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsCisgICAgICAtMSwgICAgNTIs
ICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
ICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLAotICAgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA4MiwgICAgODMsICAgIDg0
LCAgICAtMSwgICAgODYsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKKyAgICAg
IDcxLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3NSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLAorICAgICAgODEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAgMywg
ICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsCiAgICAgICAgOCwgICAgIDksICAgIDEwLCAgICAx
MSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywKICAgICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDI3LAogICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAzNiwgICAgMzcsCiAgICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywKLSAgICAgIDQ4LCAgICA0OSwg
ICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLAor
ICAgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIC0xLAotICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4
NiwgICAgIDMsCi0gICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAg
ICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywKLSAgICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAotICAgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
LTEsCi0gICAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwg
ICAgNDEsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0
OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLAotICAgICAgNTQsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0g
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDcyLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLAotICAgICAgODQsICAgIC0xLCAgICA4Niwg
ICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksCi0gICAgICAx
MCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwKLSAgICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAg
IDI2LCAgICAyNywgICAgMjgsICAgIDI5LAotICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksCi0gICAgICAtMSwgICAg
NDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0
OSwKLSAgICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDc1LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwgICAgODUsICAgICAzLCAgICAgNCwKKyAg
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwg
ICAgMTMsICAgIDE0LAorICAgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsCisgICAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwKKyAgICAgIC0x
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMs
ICAgIDQ0LAorICAgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAg
LTEsICAgIDUyLCAgICA1MywgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0x
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEsICAg
IDgyLCAgICA4MywgICAgLTEsCisgICAgICA4NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKKyAgICAgIDEyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLAorICAg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgMzEsCisgICAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3
LCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwKKyAgICAgIDQyLCAgICA0MywgICAgNDQsICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLAorICAgICAgNTIs
ICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICA3MSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLAorICAgICAgODIsICAgIDgz
LCAgICAtMSwgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgIDgs
CisgICAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsCisgICAg
ICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwg
ICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAg
ICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAgICA4NCwgICAgLTEsICAgIDg2
LCAgICAyMSwgICAgMjIsICAgIDIzLAorICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywK
ICAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAg
ICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsCi0gICAgICA0NCwgICAgNDUsICAgIDQ2
LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywKLSAgICAg
IDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsCi0gICAgICAtMSwgICAgNzUsICAgIDEwLCAgICAx
MSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MywKLSAgICAgIDg0LCAg
ICAtMSwgICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDI3LAotICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywKLSAgICAgIDQ4LCAgICA0OSwg
ICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLAor
ICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0x
LCAgICA1MiwgICAgNTMsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLAotICAgICAg
MTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4
NiwgICAgMjEsCi0gICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLAotICAgICAgNDIsICAg
IDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAg
LTEsCi0gICAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLAorICAgICAgNzQsICAgIDEwLCAg
ICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsCisg
ICAgICAtMSwgICAgODUsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LAorICAgICAgMzksICAgIC0xLCAgICA0MSwg
ICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCisgICAgICA0
OSwgICAgLTEsICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgNzIsICAgIC0xLCAgICAtMSwgICAgNzUs
ICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAg
ODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAy
NSwKLSAgICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAg
ICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0x
LCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsCi0gICAgICA0NiwgICAgNDcsICAg
IDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwKKyAg
ICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwg
ICAgMTIsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLCAgICAt
MSwgICAgODUsICAgIDIxLCAgICAyMiwgICAgMjMsCisgICAgICAyNCwgICAgMjUsICAgIDI2LCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKKyAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIs
ICAgIDQzLAorICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAg
LTEsICAgIC0xLCAgICA1MiwgICAgNTMsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0x
LAotICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDgzLCAgICA4NCwgICAgLTEsCi0gICAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAzMSwgICAg
MzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LAotICAg
ICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksCi0gICAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLAorICAgICAgNzQs
ICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4Miwg
ICAgODMsCisgICAgICAtMSwgICAgODUsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LAorICAgICAgMzksICAgIC0x
LCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgs
CisgICAgICA0OSwgICAgLTEsICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICA3
MiwgICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsCi0gICAg
ICAxMSwgICAgMTIsICAgIC0xLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgLTEsICAg
IC0xLCAgICAtMSwKLSAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAotICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsCi0gICAgICA0MSwg
ICAgNDIsICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LCAgICAgNCwgICAgIDUsICAgICA2LCAg
ICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAg
IDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjks
ICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICA3NywgICAgLTEsICAgIC0xLCAgICAtMSwK
LSAgICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAt
MSwgICAgNDYsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgIDAsCi0gICAgICAtMSwgICAgLTEsICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAg
IDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDc3LAotICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAgMzIsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwKLSAgICAgIDQxLCAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgICAzLCAgICAgNCwgICAgIDUsICAg
ICA2LAorICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAs
ICAgIDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAg
ODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAor
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQx
LCAgICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAg
IDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKKyAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAg
NCwgICAgIDUsCisgICAgICAgNiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAg
ICAxMiwgICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYsICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0Miwg
ICAgNDMsICAgIDQ0LCAgICAtMSwKKyAgICAgIDQ2LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLAorICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsCisg
ICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDMxLCAgICAzMiwKKyAgICAgIDc2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAgICAgNDMsICAgIDQ0LCAgICAtMSwg
ICAgNDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAgMCwgICAgLTEsICAgIC0xLCAgICAgMywgICAgIDQsICAgICA1
LCAgICAgNiwKICAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCisgICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICA3NiwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwKICAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDM2LAogICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQx
LCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsCi0gICAgICAgNCwgICAgIDUsICAg
ICA2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKLSAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwg
ICAgMjIsICAgIDIzLAotICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0
LCAgICAtMSwgICAgNDYsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwgICAg
MjMsICAgIDI0LCAgICAyNSwgICAgMjYsCi0gICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwg
ICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAz
OCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2
LAotICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCisgICAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcs
ICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwKKyAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLAorICAg
ICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICAzMSwgICAgMzIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4
LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwKKyAgICAgIDQzLCAgICA0NCwgICAgLTEsICAg
IDQ2LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgMTAs
ICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCiAgICAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwgICAgMjcsICAgIDI4LCAgICAyOSwKICAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LAotICAgICAgLTEsICAgIDQx
LCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYKKyAgICAgIC0xLCAgICA0MSwgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LCAgICAxMCwgICAgMTEsICAgIDEyLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAyMSwgICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAgICAgNDMs
ICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAy
MiwgICAgMjMsICAgIDI0LCAgICAyNSwKKyAgICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0x
LCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgLTEs
CisgICAgICA0NgogfTsKIAogLyogWVlTVE9TW1NUQVRFLU5VTV0gLS0gVGhlIChpbnRlcm5hbCBu
dW1iZXIgb2YgdGhlKSBhY2Nlc3NpbmcKQEAgLTEzMDgsMzIgKzEzNDUsMzIgQEAgc3RhdGljIGNv
bnN0IHl5dHlwZV91aW50OCB5eXN0b3NbXSA9CiAgICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAz
NiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDEsICAgIDQyLCAgICA0MywKICAgICAgIDQ0LCAg
ICA0NiwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjksICAgMTMwLCAgIDEzNSwgICAxMzYsICAg
MTM3LAogICAgICAxMzgsICAgMTM5LCAgIDE0MCwgICAxNDEsICAgMTQyLCAgIDE0MywgICAxNzUs
ICAgMTc2LCAgIDE3NywgICAgMzcsCi0gICAgICA0NSwgICAxNDAsICAgIDQ1LCAgICA3NiwgICAg
ODIsICAgMTc4LCAgICA3MywgICAgNzksICAgICAzLCAgICAzMywKLSAgICAgIDM0LCAgICAzNSwg
ICAxMzIsICAgMTMzLCAgIDEzOCwgICAgNzksICAgIDgyLCAgICA0NSwgICAxMzksICAgMTQxLAot
ICAgICAgNzQsICAgICAwLCAgIDE3NiwgICAxNDEsICAgIDc2LCAgIDE0NSwgICAgNzYsICAgMTYx
LCAgIDEzMiwgICAxMzEsCi0gICAgIDEzNCwgICAxMzksICAgMTMzLCAgICA0NSwgICAgNzIsICAg
IDc0LCAgICA4MSwgICAgNDUsICAgIDQ3LCAgICA0OCwKLSAgICAgIDQ5LCAgICA1MCwgICAgNTMs
ICAgIDU0LCAgICA3MiwgICAgODMsICAgIDg0LCAgICA4NiwgICAgOTcsICAgIDk4LAotICAgICAg
OTksICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMTA0LCAgIDEwNSwgICAxMDYsICAgMTA3LCAgIDEw
OCwgICAxMDksCi0gICAgIDExMCwgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTQsICAgMTE1LCAg
IDExNiwgICAxMTcsICAgMTE4LCAgIDExOSwKLSAgICAgMTIwLCAgIDEyMSwgICAxMjUsICAgMTQy
LCAgICA4MiwgICAxNDQsICAgMTM5LCAgIDE0NiwgICAxNDcsICAgIDEzLAotICAgICAgMTQsICAg
IDE1LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgNDAsICAgIDc2LCAgICA3NywgICAg
ODIsCi0gICAgIDEwOCwgICAxMjEsICAgMTIyLCAgIDEyNCwgICAxMjYsICAgMTI3LCAgIDE0Miwg
ICAxNTEsICAgMTUyLCAgIDE1MywKLSAgICAgMTU0LCAgIDE2MiwgICAxNjMsICAgMTY0LCAgIDE2
NywgICAxNzQsICAgIDQ1LCAgIDEzMSwgICAxMzQsICAgIDc0LAotICAgICAgODEsICAgIDc1LCAg
IDEyNSwgICAxMjIsICAgMTUwLCAgIDEwOCwgICAxMDgsICAgMTI0LCAgICA1MywgICAgNTQsCi0g
ICAgICA3NCwgICAgNzgsICAgIDczLCAgICA3MywgICAgNzksICAgIDM5LCAgIDEyMiwgICAgNzIs
ICAgMTA4LCAgICA4NywKLSAgICAgIDg4LCAgICA4NCwgICAgODYsICAgIDU1LCAgICA1NiwgICAg
OTAsICAgIDkxLCAgICA1NywgICAgNTgsICAgIDU5LAotICAgICAgNjEsICAgIDYwLCAgICA5NSwg
ICAgNzUsICAgMTQ2LCAgICA0NSwgICAxNDgsICAgMTQ5LCAgICA3NywgICAxNDcsCi0gICAgICA4
MiwgICAgODIsICAgMTY5LCAgICA3MiwgICAgNzIsICAgIDgyLCAgICA4MiwgICAxMjQsICAgIDcy
LCAgICA3NywKLSAgICAgMTU1LCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA3MSwgICAgODEsICAg
MTIzLCAgICA3OSwgICAgODIsICAgIDc3LAotICAgICAxNTIsICAgIDc0LCAgICA3NSwgICAxMjUs
ICAgMTUwLCAgICA3NSwgICAgNzMsICAgMTAwLCAgIDEyNCwgICAgNDUsCi0gICAgICA1MCwgICAx
MDMsICAgMTIyLCAgIDEwOCwgICAxMDgsICAgMTEwLCAgIDExMCwgICAxMTIsICAgMTEyLCAgIDEx
MiwKLSAgICAgMTEyLCAgIDExMywgICAxMTMsICAgMTE3LCAgIDExOCwgICAxMTksICAgMTI0LCAg
ICA3NywgICAgNzQsICAgIDc5LAotICAgICAgODIsICAgMTU4LCAgIDE1OSwgICAxNjAsICAgMTcw
LCAgIDEyNCwgICAgODIsICAgMTY4LCAgIDE2MiwgICAxMjIsCi0gICAgIDEyMiwgICAxMjUsICAg
IDc1LCAgICA3NSwgICAgODAsICAgMTI1LCAgIDE0OSwgICAgNDAsICAgMTYxLCAgIDE1MywKLSAg
ICAgMTUxLCAgIDE2MywgICAxNzEsICAgIDczLCAgIDEyNCwgICAxMzcsICAgMTY2LCAgIDE1Niwg
ICAgNzUsICAgMTIyLAotICAgICAgNzUsICAgIDcyLCAgIDE2NiwgICAxNzIsICAgMTczLCAgIDE1
OCwgICAxNjUsICAgIDQ1LCAgICA3MywgICAgNzcsCi0gICAgIDEyNCwgICAgODIsICAgIDczLCAg
ICAxNiwgICAgODEsICAgMTUzLCAgIDE1NywgICAxNjEsICAgIDczLCAgIDEyNCwKLSAgICAgMTU3
LCAgIDE1OCwgICAxNTAsICAgIDgyCisgICAgICA0NSwgICAxNDAsICAgIDQ1LCAgICA0NiwgICAg
NzUsICAgIDk2LCAgICA4MSwgICAxNzgsICAgIDcyLCAgICA3OCwKKyAgICAgICAzLCAgICAzMywg
ICAgMzQsICAgIDM1LCAgIDEzMiwgICAxMzMsICAgMTM4LCAgICA3OCwgICAgODEsICAgIDQ1LAor
ICAgICAgOTYsICAgMTM5LCAgIDE0MSwgICAgNzMsICAgICAwLCAgIDE3NiwgICAxNDEsICAgMTQ1
LCAgICA3NSwgICAgNzUsCisgICAgIDE2MSwgICAxMzIsICAgMTMxLCAgIDEzNCwgICAxMzksICAg
MTMzLCAgICA5NiwgICAgNzEsICAgIDczLCAgICA4MCwKKyAgICAgIDQ1LCAgICA0NywgICAgNDgs
ICAgIDQ5LCAgICA1MiwgICAgNTMsICAgIDcxLCAgICA4MiwgICAgODMsICAgIDg1LAorICAgICAg
OTcsICAgIDk4LCAgICA5OSwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEw
NiwgICAxMDcsCisgICAgIDEwOCwgICAxMDksICAgMTEwLCAgIDExMSwgICAxMTIsICAgMTEzLCAg
IDExNCwgICAxMTUsICAgMTE2LCAgIDExNywKKyAgICAgMTE4LCAgIDExOSwgICAxMjAsICAgMTIx
LCAgIDEyNSwgICAxNDIsICAgIDgxLCAgIDEzOSwgICAxNDYsICAgMTQ3LAorICAgICAxNDQsICAg
IDEzLCAgICAxNCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICA0MCwgICAg
NzUsCisgICAgICA3NiwgICAgODEsICAgMTA4LCAgIDEyMSwgICAxMjIsICAgMTI0LCAgIDEyNiwg
ICAxMjcsICAgMTQyLCAgIDE1MSwKKyAgICAgMTUyLCAgIDE1MywgICAxNTQsICAgMTYyLCAgIDE2
MywgICAxNjQsICAgMTY3LCAgIDE3NCwgICAgOTYsICAgMTMxLAorICAgICAxMzQsICAgIDczLCAg
ICA4MCwgICAgNzQsICAgMTI1LCAgIDEyMiwgICAxNTAsICAgMTA4LCAgIDEwOCwgICAxMjQsCisg
ICAgICA1MiwgICAgNTMsICAgIDczLCAgICA3NywgICAgNzIsICAgIDcyLCAgICA3OCwgICAgMzks
ICAgMTIyLCAgICA3MSwKKyAgICAgMTA4LCAgICA4NiwgICAgODcsICAgIDgzLCAgICA4NSwgICAg
NTQsICAgIDU1LCAgICA4OSwgICAgOTAsICAgIDU2LAorICAgICAgNTcsICAgIDU4LCAgICA2MCwg
ICAgNTksICAgIDk0LCAgICA3NCwgICAgOTYsICAgMTQ4LCAgIDE0OSwgICAgNzYsCisgICAgIDE0
NywgICAxNDYsICAgIDgxLCAgICA4MSwgICAxNjksICAgIDcxLCAgICA3MSwgICAgODEsICAgIDgx
LCAgIDEyNCwKKyAgICAgIDcxLCAgICA3NiwgICAxNTUsICAgIDYxLCAgICA2MiwgICAgNjMsICAg
IDcwLCAgICA4MCwgICAxMjMsICAgIDc4LAorICAgICAgODEsICAgIDc2LCAgIDE1MiwgICAgNzMs
ICAgIDc0LCAgIDEyNSwgICAxNTAsICAgIDc0LCAgICA3MiwgICAxMDAsCisgICAgIDEyNCwgICAg
NDUsICAgIDQ2LCAgICA5NiwgICAxMDMsICAgMTIyLCAgIDEwOCwgICAxMDgsICAgMTEwLCAgIDEx
MCwKKyAgICAgMTEyLCAgIDExMiwgICAxMTIsICAgMTEyLCAgIDExMywgICAxMTMsICAgMTE3LCAg
IDExOCwgICAxMTksICAgMTI0LAorICAgICAgNzMsICAgIDc4LCAgICA4MSwgICAgNzYsICAgMTU4
LCAgIDE1OSwgICAxNjAsICAgMTcwLCAgIDEyNCwgICAgODEsCisgICAgIDE2OCwgICAxNjIsICAg
MTIyLCAgIDEyMiwgICAxMjUsICAgIDc0LCAgICA3NCwgICAgNzksICAgMTI1LCAgIDE0OSwKKyAg
ICAgIDQwLCAgIDE2MSwgICAxNTMsICAgMTUxLCAgIDE2MywgICAxNzEsICAgIDcyLCAgIDEyNCwg
ICAxMzcsICAgMTY2LAorICAgICAxNTYsICAgIDc0LCAgIDEyMiwgICAgNzQsICAgIDcxLCAgIDE2
NiwgICAxNzIsICAgMTczLCAgIDE1OCwgICAxNjUsCisgICAgICA5NiwgICAgNzIsICAgIDc2LCAg
IDEyNCwgICAgODEsICAgIDcyLCAgICAxNiwgICAgODAsICAgMTUzLCAgIDE1NywKKyAgICAgMTYx
LCAgICA3MiwgICAxMjQsICAgMTU3LCAgIDE1OCwgICAxNTAsICAgIDgxCiB9OwogCiAjZGVmaW5l
IHl5ZXJyb2sJCSh5eWVycnN0YXR1cyA9IDApCkBAIC0xMzY2LDcgKzE0MDMsNyBAQCBkbwkJCQkJ
CQkJXAogICAgIH0JCQkJCQkJCVwKICAgZWxzZQkJCQkJCQkJXAogICAgIHsJCQkJCQkJCVwKLSAg
ICAgIHl5ZXJyb3IgKGNvbnRleHQsIFlZXygic3ludGF4IGVycm9yOiBjYW5ub3QgYmFjayB1cCIp
KTsgXAorICAgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgWVlfKCJzeW50YXggZXJyb3I6
IGNhbm5vdCBiYWNrIHVwIikpOyBcCiAgICAgICBZWUVSUk9SOwkJCQkJCQlcCiAgICAgfQkJCQkJ
CQkJXAogd2hpbGUgKFlZSUQgKDApKQpAQCAtMTQyMSw5ICsxNDU4LDkgQEAgd2hpbGUgKFlZSUQg
KDApKQogLyogWVlMRVggLS0gY2FsbGluZyBgeXlsZXgnIHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50
cy4gICovCiAKICNpZmRlZiBZWUxFWF9QQVJBTQotIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2
YWwsIFlZTEVYX1BBUkFNKQorIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2Ms
IFlZTEVYX1BBUkFNKQogI2Vsc2UKLSMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsKQorIyBk
ZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2MpCiAjZW5kaWYKIAogLyogRW5hYmxl
IGRlYnVnZ2luZyBpZiByZXF1ZXN0ZWQuICAqLwpAQCAtMTQ0Niw3ICsxNDgzLDcgQEAgZG8gewkJ
CQkJCQkJCSAgXAogICAgIHsJCQkJCQkJCQkgIFwKICAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAi
JXMgIiwgVGl0bGUpOwkJCQkJICBcCiAgICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwJCQkJ
CQkgIFwKLQkJICBUeXBlLCBWYWx1ZSwgY29udGV4dCk7IFwKKwkJICBUeXBlLCBWYWx1ZSwgTG9j
YXRpb24sIGNvbnRleHQpOyBcCiAgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7CQkJCQkJ
ICBcCiAgICAgfQkJCQkJCQkJCSAgXAogfSB3aGlsZSAoWVlJRCAoMCkpCkBAIC0xNDYwLDE4ICsx
NDk3LDIwIEBAIGRvIHsJCQkJCQkJCQkgIFwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZp
bmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmlu
ZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ZhbHVlX3ByaW50IChGSUxFICp5
eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBUUGFy
c2VDb250ZXh0KiBjb250ZXh0KQoreXlfc3ltYm9sX3ZhbHVlX3ByaW50IChGSUxFICp5eW91dHB1
dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBZWUxUWVBFIGNv
bnN0ICogY29uc3QgeXlsb2NhdGlvbnAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiAjZWxzZQog
c3RhdGljIHZvaWQKLXl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2
YWx1ZXAsIGNvbnRleHQpCit5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUs
IHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICAgICBGSUxFICp5eW91dHB1dDsKICAg
ICBpbnQgeXl0eXBlOwogICAgIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKKyAgICBZ
WUxUWVBFIGNvbnN0ICogY29uc3QgeXlsb2NhdGlvbnA7CiAgICAgVFBhcnNlQ29udGV4dCogY29u
dGV4dDsKICNlbmRpZgogewogICBpZiAoIXl5dmFsdWVwKQogICAgIHJldHVybjsKKyAgWVlVU0Ug
KHl5bG9jYXRpb25wKTsKICAgWVlVU0UgKGNvbnRleHQpOwogIyBpZmRlZiBZWVBSSU5UCiAgIGlm
ICh5eXR5cGUgPCBZWU5UT0tFTlMpCkBAIC0xNDk0LDEzICsxNTMzLDE0IEBAIHl5X3N5bWJvbF92
YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBk
ZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRl
ZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ByaW50IChGSUxFICp5eW91
dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBUUGFyc2VD
b250ZXh0KiBjb250ZXh0KQoreXlfc3ltYm9sX3ByaW50IChGSUxFICp5eW91dHB1dCwgaW50IHl5
dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBZWUxUWVBFIGNvbnN0ICogY29u
c3QgeXlsb2NhdGlvbnAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiAjZWxzZQogc3RhdGljIHZv
aWQKLXl5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIGNvbnRleHQp
Cit5eV9zeW1ib2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9u
cCwgY29udGV4dCkKICAgICBGSUxFICp5eW91dHB1dDsKICAgICBpbnQgeXl0eXBlOwogICAgIFlZ
U1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKKyAgICBZWUxUWVBFIGNvbnN0ICogY29uc3Qg
eXlsb2NhdGlvbnA7CiAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dDsKICNlbmRpZgogewpAQCAt
MTUwOSw3ICsxNTQ5LDkgQEAgeXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZh
bAogICBlbHNlCiAgICAgWVlGUFJJTlRGICh5eW91dHB1dCwgIm50ZXJtICVzICgiLCB5eXRuYW1l
W3l5dHlwZV0pOwogCi0gIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwg
eXl2YWx1ZXAsIGNvbnRleHQpOworICBZWV9MT0NBVElPTl9QUklOVCAoeXlvdXRwdXQsICp5eWxv
Y2F0aW9ucCk7CisgIFlZRlBSSU5URiAoeXlvdXRwdXQsICI6ICIpOworICB5eV9zeW1ib2xfdmFs
dWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4
dCk7CiAgIFlZRlBSSU5URiAoeXlvdXRwdXQsICIpIik7CiB9CiAKQEAgLTE1NDksMTEgKzE1OTEs
MTIgQEAgZG8gewkJCQkJCQkJXAogI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19D
OTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVND
X1ZFUikKIHN0YXRpYyB2b2lkCi15eV9yZWR1Y2VfcHJpbnQgKFlZU1RZUEUgKnl5dnNwLCBpbnQg
eXlydWxlLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0KQoreXlfcmVkdWNlX3ByaW50IChZWVNUWVBF
ICp5eXZzcCwgWVlMVFlQRSAqeXlsc3AsIGludCB5eXJ1bGUsIFRQYXJzZUNvbnRleHQqIGNvbnRl
eHQpCiAjZWxzZQogc3RhdGljIHZvaWQKLXl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5cnVsZSwg
Y29udGV4dCkKK3l5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5bHNwLCB5eXJ1bGUsIGNvbnRleHQp
CiAgICAgWVlTVFlQRSAqeXl2c3A7CisgICAgWVlMVFlQRSAqeXlsc3A7CiAgICAgaW50IHl5cnVs
ZTsKICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0OwogI2VuZGlmCkBAIC0xNTY5LDcgKzE2MTIs
NyBAQCB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eXJ1bGUsIGNvbnRleHQpCiAgICAgICBmcHJp
bnRmIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKICAgICAgIHl5X3N5bWJvbF9wcmlu
dCAoc3RkZXJyLCB5eXJoc1t5eXByaHNbeXlydWxlXSArIHl5aV0sCiAJCSAgICAgICAmKHl5dnNw
Wyh5eWkgKyAxKSAtICh5eW5yaHMpXSkKLQkJICAgICAgIAkJICAgICAgICwgY29udGV4dCk7CisJ
CSAgICAgICAsICYoeXlsc3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQkJICAgICAgICwgY29udGV4
dCk7CiAgICAgICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOwogICAgIH0KIH0KQEAgLTE1NzcsNyAr
MTYyMCw3IEBAIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5cnVsZSwgY29udGV4dCkKICMgZGVm
aW5lIFlZX1JFRFVDRV9QUklOVChSdWxlKQkJXAogZG8gewkJCQkJXAogICBpZiAoeXlkZWJ1ZykJ
CQkJXAotICAgIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIFJ1bGUsIGNvbnRleHQpOyBcCisgICAg
eXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlsc3AsIFJ1bGUsIGNvbnRleHQpOyBcCiB9IHdoaWxl
IChZWUlEICgwKSkKIAogLyogTm9uemVybyBtZWFucyBwcmludCBwYXJzZSB0cmFjZS4gIEl0IGlz
IGxlZnQgdW5pbml0aWFsaXplZCBzbyB0aGF0CkBAIC0xODI4LDE3ICsxODcxLDE5IEBAIHl5c3lu
dGF4X2Vycm9yIChjaGFyICp5eXJlc3VsdCwgaW50IHl5c3QKICNpZiAoZGVmaW5lZCBfX1NURENf
XyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVz
IHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlkZXN0cnVjdCAoY29uc3QgY2hh
ciAqeXltc2csIGludCB5eXR5cGUsIFlZU1RZUEUgKnl5dmFsdWVwLCBUUGFyc2VDb250ZXh0KiBj
b250ZXh0KQoreXlkZXN0cnVjdCAoY29uc3QgY2hhciAqeXltc2csIGludCB5eXR5cGUsIFlZU1RZ
UEUgKnl5dmFsdWVwLCBZWUxUWVBFICp5eWxvY2F0aW9ucCwgVFBhcnNlQ29udGV4dCogY29udGV4
dCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlkZXN0cnVjdCAoeXltc2csIHl5dHlwZSwgeXl2YWx1
ZXAsIGNvbnRleHQpCit5eWRlc3RydWN0ICh5eW1zZywgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2Nh
dGlvbnAsIGNvbnRleHQpCiAgICAgY29uc3QgY2hhciAqeXltc2c7CiAgICAgaW50IHl5dHlwZTsK
ICAgICBZWVNUWVBFICp5eXZhbHVlcDsKKyAgICBZWUxUWVBFICp5eWxvY2F0aW9ucDsKICAgICBU
UGFyc2VDb250ZXh0KiBjb250ZXh0OwogI2VuZGlmCiB7CiAgIFlZVVNFICh5eXZhbHVlcCk7Cisg
IFlZVVNFICh5eWxvY2F0aW9ucCk7CiAgIFlZVVNFIChjb250ZXh0KTsKIAogICBpZiAoIXl5bXNn
KQpAQCAtMTkwOSw2ICsxOTU0LDggQEAgWVlTVFlQRSB5eWx2YWw7CiAKIC8qIE51bWJlciBvZiBz
eW50YXggZXJyb3JzIHNvIGZhci4gICovCiBpbnQgeXluZXJyczsKKy8qIExvY2F0aW9uIGRhdGEg
Zm9yIHRoZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCitZWUxUWVBFIHl5bGxvYzsKIAogICBpbnQg
eXlzdGF0ZTsKICAgaW50IHl5bjsKQEAgLTE5NDIsMTYgKzE5ODksMjEgQEAgaW50IHl5bmVycnM7
CiAgIFlZU1RZUEUgKnl5dnMgPSB5eXZzYTsKICAgWVlTVFlQRSAqeXl2c3A7CiAKKyAgLyogVGhl
IGxvY2F0aW9uIHN0YWNrLiAgKi8KKyAgWVlMVFlQRSB5eWxzYVtZWUlOSVRERVBUSF07CisgIFlZ
TFRZUEUgKnl5bHMgPSB5eWxzYTsKKyAgWVlMVFlQRSAqeXlsc3A7CisgIC8qIFRoZSBsb2NhdGlv
bnMgd2hlcmUgdGhlIGVycm9yIHN0YXJ0ZWQgYW5kIGVuZGVkLiAgKi8KKyAgWVlMVFlQRSB5eWVy
cm9yX3JhbmdlWzJdOwogCi0KLSNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiks
IHl5c3NwIC09IChOKSkKKyNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5
c3NwIC09IChOKSwgeXlsc3AgLT0gKE4pKQogCiAgIFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJ
TklUREVQVEg7CiAKICAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2
YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKICAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KICAg
WVlTVFlQRSB5eXZhbDsKLQorICBZWUxUWVBFIHl5bG9jOwogCiAgIC8qIFRoZSBudW1iZXIgb2Yg
c3ltYm9scyBvbiB0aGUgUkhTIG9mIHRoZSByZWR1Y2VkIHJ1bGUuCiAgICAgIEtlZXAgdG8gemVy
byB3aGVuIG5vIHN5bWJvbCBzaG91bGQgYmUgcG9wcGVkLiAgKi8KQEAgLTE5NzEsNiArMjAyMywx
MiBAQCBpbnQgeXluZXJyczsKIAogICB5eXNzcCA9IHl5c3M7CiAgIHl5dnNwID0geXl2czsKKyAg
eXlsc3AgPSB5eWxzOworI2lmIGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVf
SVNfVFJJVklBTAorICAvKiBJbml0aWFsaXplIHRoZSBkZWZhdWx0IGxvY2F0aW9uIGJlZm9yZSBw
YXJzaW5nIHN0YXJ0cy4gICovCisgIHl5bGxvYy5maXJzdF9saW5lICAgPSB5eWxsb2MubGFzdF9s
aW5lICAgPSAxOworICB5eWxsb2MuZmlyc3RfY29sdW1uID0geXlsbG9jLmxhc3RfY29sdW1uID0g
MDsKKyNlbmRpZgogCiAgIGdvdG8geXlzZXRzdGF0ZTsKIApAQCAtMTk5Nyw3ICsyMDU1LDcgQEAg
aW50IHl5bmVycnM7CiAJICAgbWVtb3J5LiAgKi8KIAlZWVNUWVBFICp5eXZzMSA9IHl5dnM7CiAJ
eXl0eXBlX2ludDE2ICp5eXNzMSA9IHl5c3M7Ci0KKwlZWUxUWVBFICp5eWxzMSA9IHl5bHM7CiAK
IAkvKiBFYWNoIHN0YWNrIHBvaW50ZXIgYWRkcmVzcyBpcyBmb2xsb3dlZCBieSB0aGUgc2l6ZSBv
ZiB0aGUKIAkgICBkYXRhIGluIHVzZSBpbiB0aGF0IHN0YWNrLCBpbiBieXRlcy4gIFRoaXMgdXNl
ZCB0byBiZSBhCkBAIC0yMDA2LDkgKzIwNjQsOSBAQCBpbnQgeXluZXJyczsKIAl5eW92ZXJmbG93
IChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwKIAkJICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9m
ICgqeXlzc3ApLAogCQkgICAgJnl5dnMxLCB5eXNpemUgKiBzaXplb2YgKCp5eXZzcCksCi0KKwkJ
ICAgICZ5eWxzMSwgeXlzaXplICogc2l6ZW9mICgqeXlsc3ApLAogCQkgICAgJnl5c3RhY2tzaXpl
KTsKLQorCXl5bHMgPSB5eWxzMTsKIAl5eXNzID0geXlzczE7CiAJeXl2cyA9IHl5dnMxOwogICAg
ICAgfQpAQCAtMjAzMSw3ICsyMDg5LDcgQEAgaW50IHl5bmVycnM7CiAJICBnb3RvIHl5ZXhoYXVz
dGVkbGFiOwogCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3MpOwogCVlZU1RBQ0tfUkVMT0NBVEUgKHl5
dnMpOwotCisJWVlTVEFDS19SRUxPQ0FURSAoeXlscyk7CiAjICB1bmRlZiBZWVNUQUNLX1JFTE9D
QVRFCiAJaWYgKHl5c3MxICE9IHl5c3NhKQogCSAgWVlTVEFDS19GUkVFICh5eXNzMSk7CkBAIC0y
MDQxLDcgKzIwOTksNyBAQCBpbnQgeXluZXJyczsKIAogICAgICAgeXlzc3AgPSB5eXNzICsgeXlz
aXplIC0gMTsKICAgICAgIHl5dnNwID0geXl2cyArIHl5c2l6ZSAtIDE7Ci0KKyAgICAgIHl5bHNw
ID0geXlscyArIHl5c2l6ZSAtIDE7CiAKICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YWNr
IHNpemUgaW5jcmVhc2VkIHRvICVsdVxuIiwKIAkJICAodW5zaWduZWQgbG9uZyBpbnQpIHl5c3Rh
Y2tzaXplKSk7CkBAIC0yMTE4LDcgKzIxNzYsNyBAQCB5eWJhY2t1cDoKIAogICB5eXN0YXRlID0g
eXluOwogICAqKyt5eXZzcCA9IHl5bHZhbDsKLQorICAqKyt5eWxzcCA9IHl5bGxvYzsKICAgZ290
byB5eW5ld3N0YXRlOwogCiAKQEAgLTIxNDksMTggKzIyMDcsMTkgQEAgeXlyZWR1Y2U6CiAgICAg
IEdDQyB3YXJuaW5nIHRoYXQgWVlWQUwgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZC4gICovCiAg
IHl5dmFsID0geXl2c3BbMS15eWxlbl07CiAKLQorICAvKiBEZWZhdWx0IGxvY2F0aW9uLiAgKi8K
KyAgWVlMTE9DX0RFRkFVTFQgKHl5bG9jLCAoeXlsc3AgLSB5eWxlbiksIHl5bGVuKTsKICAgWVlf
UkVEVUNFX1BSSU5UICh5eW4pOwogICBzd2l0Y2ggKHl5bikKICAgICB7Ci0gICAgICAgIGNhc2Ug
MjoKKyAgICAgICAgY2FzZSA0OgogCiAgICAgewogICAgICAgICAvLyBUaGUgc3ltYm9sIHRhYmxl
IHNlYXJjaCB3YXMgZG9uZSBpbiB0aGUgbGV4aWNhbCBwaGFzZQogICAgICAgICBjb25zdCBUU3lt
Ym9sKiBzeW1ib2wgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN5bWJvbDsKICAgICAgICAgY29u
c3QgVFZhcmlhYmxlKiB2YXJpYWJsZTsKICAgICAgICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ1bmRl
Y2xhcmVkIGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZy0+Y19zdHIo
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ1bmRl
Y2xhcmVkIGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZy0+Y19zdHIo
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiBmYWtl
VmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLCB0
eXBlKTsKQEAgLTIxNjksMTAgKzIyMjgsMTcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAvLyBUaGlzIGlkZW50aWZpZXIgY2FuIG9ubHkgYmUgYSB2YXJpYWJsZSB0
eXBlIHN5bWJvbAogICAgICAgICAgICAgaWYgKCEgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUs
ICJ2YXJpYWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLT5jX3N0
cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSks
ICJ2YXJpYWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLT5jX3N0
cigpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9
CisKICAgICAgICAgICAgIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4o
c3ltYm9sKTsKKworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmlzVmFyaWFibGVCdWlsdEluKHZh
cmlhYmxlKSAmJiAKKyAgICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVt
cHR5KCkgJiYKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5
eWxzcFsoMSkgLSAoMSldKSwgdmFyaWFibGUtPmdldEV4dGVuc2lvbigpKSkgeworICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAg
ICAgICAgIC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcsIGl0J3MgdXNlZCBieSBlcnJvciByZWNv
dmVyeSwgYW5kIHRoZSBwb29sCkBAIC0yMTgxLDIyICsyMjQ3LDIzIEBAIHl5cmVkdWNlOgogICAg
ICAgICBpZiAodmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCAp
IHsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24qIGNvbnN0QXJyYXkgPSB2YXJpYWJsZS0+Z2V0
Q29uc3RQb2ludGVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0KHZhcmlhYmxlLT5nZXRUeXBlKCkp
OwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwgKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXks
IHQsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5
bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdl
dFR5cGUoKSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5n
ZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzoK
KyAgY2FzZSA1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgNDoKKyAgY2FzZSA2OgogCiAgICAgewogICAgICAgICAvLwpA
QCAtMjIwNCwxNTUgKzIyNzEsMTUxIEBAIHl5cmVkdWNlOgogICAgICAgICAvLyBjaGVjayBmb3Ig
b3ZlcmZsb3cgZm9yIGNvbnN0YW50cwogICAgICAgICAvLwogICAgICAgICBpZiAoYWJzKCh5eXZz
cFsoMSkgLSAoMSldLmxleCkuaSkgPj0gKDEgPDwgMTYpKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICIgaW50ZWdlciBjb25zdGFudCBv
dmVyZmxvdyIsICIiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAo
MSldKSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9u
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNv
bnN0KCh5eXZzcFsoMSkgLSAoMSldLmxleCkuaSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSld
KSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDU6CisgIGNhc2UgNzoKIAogICAgIHsK
ICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFd
OwogICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5m
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDY6CisgIGNhc2UgODoKIAogICAgIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5z
ZXRCQ29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5iKTsKLSAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDEp
IC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3OgorICBjYXNlIDk6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFso
MikgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA4OgorICBjYXNlIDEwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOToKKyAgY2FzZSAxMToKIAogICAgIHsK
ICAgICAgICAgaWYgKCEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
aXNBcnJheSgpICYmICEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
aXNNYXRyaXgoKSAmJiAhKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmlzVmVjdG9yKCkpIHsKICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCkpCi0gICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIGxlZnQgb2YgJ1snIGlz
IG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgp
LmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAo
NCldKSwgIiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0
b3IgIiwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzU3lt
Ym9sTm9kZSgpLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIg
bGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICJl
eHByZXNzaW9uIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAt
ICg0KV0pLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZl
Y3RvciAiLCAiZXhwcmVzc2lvbiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICB9Ci0gICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ICYmICh5eXZzcFso
MykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFD
b25zdCkgewotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5pc0FycmF5KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgYXJyYXlzCi0g
ICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
YWRkQ29uc3RBcnJheU5vZGUoKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29u
c3QoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MikgLSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKSB7ICAvLyBjb25zdGFu
dCBmb2xkaW5nIGZvciB2ZWN0b3JzCi0gICAgICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVs
ZHM7Ci0gICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7Ci0gICAgICAgICAgICAgICAgZmll
bGRzLm9mZnNldHNbMF0gPSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25z
dCgpOyAvLyBuZWVkIHRvIGRvIGl0IHRoaXMgd2F5IGJlY2F1c2Ugdi54eSBzZW5kcyBmaWVsZHMg
aW50ZWdlciBhcnJheQotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVsZHMsICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUp
OwotICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+aXNNYXRyaXgoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBtYXRyaWNl
cwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmFkZENvbnN0TWF0cml4Tm9kZSgoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdl
dElDb25zdCgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewor
ICAgICAgICAgICAgaW50IGluZGV4ID0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRJQ29uc3QoMCk7CisgICAgICAgICAg
ICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gaW5m
b1N0cmVhbTsKKyAgICAgICAgICAgICAgICBpbmZvU3RyZWFtIDw8IGluZGV4OworICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nIGluZm8gPSBpbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMykgLSAoNCldKSwgIm5lZ2F0aXZlIGluZGV4Iiwg
aW5mby5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAg
ICAgICAgICAgICAgaW5kZXggPSAwOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewotICAgICAgICAgICAgICAgIGlmICgoKHl5
dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkgfHwgKHl5
dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpICYmICh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0Tm9t
aW5hbFNpemUoKSA8PSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgp
ICYmICEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgp
ICkgewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJl
YW07Ci0gICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiZmllbGQgc2VsZWN0
aW9uIG91dCBvZiByYW5nZSAnIiA8PCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdl
dElDb25zdCgpIDw8ICInIjsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJ
bmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5j
X3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRU
eXBlKCkuZ2V0TWF4QXJyYXlTaXplKCkgPD0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigp
LT5nZXRJQ29uc3QoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlTZXRNYXhTaXplKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRBc1N5bWJvbE5vZGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldFR5cGVQb2ludGVyKCksICh5eXZzcFsoMykgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50
ZXIoKS0+Z2V0SUNvbnN0KCksIHRydWUsICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCksICh5eXZzcFsoMSkg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigpLCAwLCBmYWxz
ZSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAoeXl2c3BbKDMpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVu
aW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpID49ICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRl
eCBvdXQgb2YgcmFuZ2UgJyIgPDwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJ
Q29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcg
ZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgIiIsICJb
IiwgZXh0cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAgICAgICAgICAg
aWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkp
IHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgYXJyYXlzCisgICAgICAgICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlOb2Rl
KGluZGV4LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNw
WygyKSAtICg0KV0pKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKSB7ICAvLyBjb25zdGFudCBm
b2xkaW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVsZHMgZmll
bGRzOworICAgICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKKyAgICAgICAgICAgICAg
ICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVlZCB0byBkbyBpdCB0aGlzIHdh
eSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkKKyAgICAgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RW
ZWN0b3JOb2RlKGZpZWxkcywgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eWxzcFsoMikgLSAoNCldKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2
c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSkgeyAvLyBj
b25zdGFudCBmb2xkaW5nIGZvciBtYXRyaWNlcworICAgICAgICAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoaW5k
ZXgsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIp
IC0gKDQpXSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5pc0FycmF5KCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgIiIsICJbIiwgImFycmF5
IG11c3QgYmUgcmVkZWNsYXJlZCB3aXRoIGEgc2l6ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRo
IGEgdmFyaWFibGUiKTsKKyAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoaW5kZXggPj0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGUoKS5nZXRBcnJheVNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpz
dHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAgICAgICAgICAgICAgICAgZXh0
cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwg
IiciOworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0
cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5bHNwWygyKSAtICg0KV0pLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleCA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgLSAxOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmlzVmVjdG9yKCkgfHwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmlzTWF0cml4KCkpICYmICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSA8PSBpbmRleCkgeworICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CisgICAg
ICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiZmllbGQgc2VsZWN0aW9uIG91dCBv
ZiByYW5nZSAnIiA8PCBpbmRleCA8PCAiJyI7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0KV0pLCAiIiwgIlsiLCBleHRyYUluZm8u
Y19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAg
ICAgICAgICAgICAgICAgaW5kZXggPSAgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIC0gMTsKICAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOworICAgICAg
ICAgICAgICAgICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRB
c0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+c2V0SUNvbnN0KGluZGV4
KTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICg0KV0pKTsKICAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleEluZGlyZWN0LCAoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoNCldKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAgICAgICAg
ICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAg
ICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoMC4wZik7Ci0gICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxQ29uc3Qp
LCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUNvbnN0KSwgKHl5bHNw
WygyKSAtICg0KV0pKTsKICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7CiAgICAgICAgICAgICBpZiAoKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRTdHJ1Y3Qo
KSkKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5
cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5
cGUoKS5nZXRTdHJ1Y3QoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpKSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpKTsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCksICh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSk7CiAKICAgICAgICAgICAgIGlmICgo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1
YWxpZmllcigpID09IEV2cUNvbnN0KQogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsK
LSAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+aXNNYXRyaXgoKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQotICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFDb25z
dCwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxT
aXplKCkpKTsKLSAgICAgICAgZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmlzTWF0cml4KCkpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCkpKTsKLSAgICAg
ICAgZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlz
VmVjdG9yKCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QpKTsKLSAg
ICAgICAgZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmlzVmVjdG9yKCkpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSkpOwotICAgICAgICBlbHNlCisgICAgICAg
IH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlz
TWF0cml4KCkpIHsKKyAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIo
KSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5OworICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBxdWFsaWZpZXIs
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6
ZSgpKSk7CisgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmlzVmVjdG9yKCkpIHsKKyAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlm
aWVyID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUo
KS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5Owor
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBl
KCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUo
KSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lv
bigpLCBxdWFsaWZpZXIpKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgfQogICAgIDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxMDoKKyAgY2FzZSAxMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDExOgorICBjYXNlIDEzOgog
CiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygz
KSAtICgzKV0ubGV4KS5saW5lLCAiY2Fubm90IGFwcGx5IGRvdCBvcGVyYXRvciB0byBhbiBhcnJh
eSIsICIuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDMpXSks
ICJjYW5ub3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkgewogICAgICAg
ICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5w
YXJzZVZlY3RvckZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVs
ZHMsICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSkpIHsKKyAgICAgICAgICAgIGlmICghIGNv
bnRleHQtPnBhcnNlVmVjdG9yRmllbGRzKCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXpl
KCksIGZpZWxkcywgKHl5bHNwWygzKSAtICgzKV0pKSkgewogICAgICAgICAgICAgICAgIGZpZWxk
cy5udW0gPSAxOwogICAgICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzWzBdID0gMDsKICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlw
ZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9y
IHZlY3RvciBmaWVsZHMKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5l
KTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygzKSAtICgzKV0pKTsKICAgICAgICAgICAgICAgICBp
ZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsKQEAgLTIzNjEsMTMgKzI0MjQsMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwg
RXZxQ29uc3QsIChpbnQpICgqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcpLnNpemUoKSkp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBUU3RyaW5nIHZlY3RvclN0
cmluZyA9ICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZzsKLSAgICAgICAgICAgICAgICBU
SW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmll
bGRzLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRl
eChFT3BWZWN0b3JTd2l6emxlLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAg
ICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxl
KGZpZWxkcywgKHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9w
VmVjdG9yU3dpenpsZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IGluZGV4LCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAoaW50
KSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkp
IHsKICAgICAgICAgICAgIFRNYXRyaXhGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEg
Y29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5n
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNp
emUoKSwgZmllbGRzLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpKSB7CisgICAgICAgICAg
ICBpZiAoISBjb250ZXh0LT5wYXJzZU1hdHJpeEZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4
KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRO
b21pbmFsU2l6ZSgpLCBmaWVsZHMsICh5eWxzcFsoMykgLSAoMyldKSkpIHsKICAgICAgICAgICAg
ICAgICBmaWVsZHMud2hvbGVSb3cgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmaWVsZHMud2hv
bGVDb2wgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmaWVsZHMucm93ID0gMDsKQEAgLTIzNzYs
NjMgKzI0MzksNTcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChmaWVsZHMud2hvbGVSb3cgfHwgZmllbGRzLndob2xlQ29sKSB7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiIG5vbi1zY2FsYXIg
ZmllbGRzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiLCAiLiIpOworICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1w
bGVtZW50ZWQgeWV0IiwgIi4iKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFu
dFVuaW9uWzFdOwogICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgwKTsKLSAg
ICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCBpbmRleCwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAg
ICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNv
bnN0KSwgKHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5k
ZXhEaXJlY3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRl
eCwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+
c2V0SUNvbnN0KGZpZWxkcy5jb2wgKiAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSArIGZpZWxkcy5yb3cpOwotICAgICAgICAgICAgICAg
IFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJ
bmRleERpcmVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGlu
ZGV4LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1
bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3Bb
KDMpIC0gKDMpXSkpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4LCAoeXlsc3BbKDIp
IC0gKDMpXSkpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRQcmVjaXNpb24oKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYg
KCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgICAgIGJvb2wgZmllbGRGb3VuZCA9IGZhbHNlOwot
ICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOwotICAgICAgICAg
ICAgaWYgKGZpZWxkcyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAic3RydWN0dXJlIGhhcyBubyBmaWVsZHMiLCAiSW50
ZXJuYWwgRXJyb3IiKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7
IGkgPCBmaWVsZHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoKmZp
ZWxkcylbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKih5eXZzcFsoMykgLSAoMyldLmxleCku
c3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGZp
ZWxkcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChmaWVsZHNbaV0tPm5hbWUo
KSA9PSAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZmllbGRGb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZmllbGRGb3VuZCkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29u
c3RTdHJ1Y3QoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
c2V0VHlwZSgqKCpmaWVsZHMpW2ldLnR5cGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGNoYW5nZSB0aGUgcXVhbGlmaWVyIG9mIHRoZSByZXR1cm4gdHlwZSwgbm90IG9mIHRoZSBz
dHJ1Y3R1cmUgZmllbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyB0aGUgc3Ry
dWN0dXJlIGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1Y3R1cmVzLgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlv
blsxXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdChpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAqKCpmaWVsZHMpW2ldLnR5
cGUsICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0
VHlwZSgqKCpmaWVsZHMpW2ldLnR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGZpZWxkRm91bmQpIHsKKyAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25z
dCkgeworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5hZGRDb25zdFN0cnVjdCgqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcs
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0g
KDMpXSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKCpmaWVsZHNb
aV0tPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFuZ2UgdGhlIHF1YWxp
ZmllciBvZiB0aGUgcmV0dXJuIHR5cGUsIG5vdCBvZiB0aGUgc3RydWN0dXJlIGZpZWxkCisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBhcyB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgc2hh
cmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1Y3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFs
aWZpZXIoRXZxQ29uc3QpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAt
ICgzKV0ubGV4KS5saW5lLCAiIG5vIHN1Y2ggZmllbGQgaW4gc3RydWN0dXJlIiwgKHl5dnNwWygz
KSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwor
ICAgICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0
YW50VW5pb25bMV07CisgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdChp
KTsKKyAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksICpmaWVsZHNbaV0tPnR5cGUo
KSwgKHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcElu
ZGV4RGlyZWN0U3RydWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgaW5kZXgsICh5eWxzcFsoMikgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOwog
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIG5vIHN1Y2ggZmllbGQgaW4gc3Ry
dWN0dXJlIiwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiBmaWVsZCBzZWxlY3Rp
b24gcmVxdWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lk
ZSIsICh5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiBmaWVsZCBzZWxlY3Rpb24gcmVx
dWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIsICh5
eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9
CkBAIC0yNDQwLDM1ICsyNDk3LDM1IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxMjoKKyAgY2FzZSAxNDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxW
YWx1ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAiKysiLCAoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgIisrIiwgKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RJbmNyZW1lbnQsICh5eXZzcFsoMSkg
LSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxp
bmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5j
cmVtZW50LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNw
WygyKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5h
cnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIisrIiwgKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgIisrIiwg
KHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTM6CisgIGNhc2UgMTU6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJv
ckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIi0tIiwgKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVl
RXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICItLSIsICh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0RGVjcmVtZW50LCAoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdERlY3JlbWVudCwg
KHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAo
MildKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJv
cigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICItLSIsICh5eXZzcFso
MSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0OgorICBj
YXNlIDE2OgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+aW50ZWdlckVycm9yQ2hlY2so
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICJbXSIpKQpAQCAtMjQ3
Nyw3ICsyNTM0LDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE1
OgorICBjYXNlIDE3OgogCiAgICAgewogICAgICAgICBURnVuY3Rpb24qIGZuQ2FsbCA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybSkuZnVuY3Rpb247CkBAIC0yNDkxLDE4ICsyNTQ4LDE4IEBAIHl5
cmVkdWNlOgogICAgICAgICAgICAgLy8gVGhlaXIgcGFyYW1ldGVycyB3aWxsIGJlIHZlcmlmaWVk
IGFsZ29yaXRobWljYWxseS4KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBUVHlwZSB0eXBl
KEVidFZvaWQsIEVicFVuZGVmaW5lZCk7ICAvLyB1c2UgdGhpcyB0byBnZXQgdGhlIHR5cGUgYmFj
awotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVjaygoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJt
Tm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmNv
bnN0cnVjdG9yRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksICh5eXZzcFsoMSkgLSAoMSld
LmludGVybSkuaW50ZXJtTm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgewogICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IDA7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgLy8gSXQncyBhIGNvbnN0
cnVjdG9yLCBvZiB0eXBlICd0eXBlJy4KICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0cnVj
dG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgJnR5cGUsIG9wLCBmbkNh
bGwsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RydWN0b3IoKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgKHl5
bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwg
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVn
YXRlT3BlcmF0b3IoMCwgb3AsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUodHlwZSk7
CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yNTExLDEzICsyNTY4LDEzIEBAIHl5cmVkdWNlOgogICAg
ICAgICAgICAgLy8KICAgICAgICAgICAgIGNvbnN0IFRGdW5jdGlvbiogZm5DYW5kaWRhdGU7CiAg
ICAgICAgICAgICBib29sIGJ1aWx0SW47Ci0gICAgICAgICAgICBmbkNhbmRpZGF0ZSA9IGNvbnRl
eHQtPmZpbmRGdW5jdGlvbigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsIGZuQ2FsbCwg
JmJ1aWx0SW4pOworICAgICAgICAgICAgZm5DYW5kaWRhdGUgPSBjb250ZXh0LT5maW5kRnVuY3Rp
b24oKHl5bHNwWygxKSAtICgxKV0pLCBmbkNhbGwsICZidWlsdEluKTsKICAgICAgICAgICAgIGlm
IChmbkNhbmRpZGF0ZSkgewogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgLy8g
QSBkZWNsYXJlZCBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAg
IGlmIChidWlsdEluICYmICFmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkuZW1wdHkoKSAmJgot
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eXZzcFso
MSkgLSAoMSldLmludGVybSkubGluZSwgZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgewor
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eWxzcFso
MSkgLSAoMSldKSwgZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgewogICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIG9wID0gZm5DYW5kaWRhdGUtPmdldEJ1aWx0SW5PcCgpOwpAQCAtMjUyOSw3ICsyNTg2
LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gVHJlYXQgaXQgbGlrZSBhIGJ1aWx0LWluIHVuYXJ5IG9wZXJhdG9yLgog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFy
eU1hdGgob3AsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgMCwgY29udGV4
dC0+c3ltYm9sVGFibGUpOworICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChvcCwg
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXlsc3BbKDEpIC0gKDEpXSks
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJidWlsdCBpbiB1bmFyeSBvcGVyYXRv
ciBmdW5jdGlvbi4gIFR5cGU6ICIgPDwgc3RhdGljX2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKTsKQEAg
LTI1MzgsMTIgKzI1OTUsMTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWVlFUlJPUjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgb3AsICh5eXZzcFsoMSkg
LSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRl
T3BlcmF0b3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIG9wLCAo
eXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHJlYWwgZnVuY3Rp
b24gY2FsbAogCi0gICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgRU9wRnVuY3Rpb25DYWxsLCAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVn
YXRlT3BlcmF0b3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIEVP
cEZ1bmN0aW9uQ2FsbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKGZuQ2FuZGlkYXRlLT5nZXRS
ZXR1cm5UeXBlKCkpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgaG93IHdlIGtu
b3cgd2hldGhlciB0aGUgZ2l2ZW4gZnVuY3Rpb24gaXMgYSBidWlsdEluIGZ1bmN0aW9uIG9yIGEg
dXNlciBkZWZpbmVkIGZ1bmN0aW9uCkBAIC0yNTcwLDcgKzI2MjcsNyBAQCB5eXJlZHVjZToKICAg
ICAgICAgICAgICAgICAvLyBQdXQgb24gYSBkdW1teSBub2RlIGZvciBlcnJvciByZWNvdmVyeQog
ICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRV
bmlvblsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoMC4wZik7Ci0g
ICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUp
OworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTI1NzgsMzkgKzI2MzUsMzcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDE2OgorICBjYXNlIDE4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDE3OgorICBjYXNlIDE5OgogCiAgICAgewotICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0pLmxpbmUsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkIiwgIiIp
OworICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDMpXSksICJtZXRob2RzIGFy
ZSBub3Qgc3VwcG9ydGVkIiwgIiIpOwogICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTg6CisgIGNhc2UgMjA6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFs
LmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTk6CisgIGNhc2UgMjE6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKICAgICA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMjA6CisgIGNhc2UgMjI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKTsKQEAg
LTI2MTgsNyArMjY3Myw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAyMToKKyAgY2FzZSAyMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rp
b24gPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwpAQCAtMjYyNiw3ICsyNjgx
LDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDIyOgorICBjYXNl
IDI0OgogCiAgICAgewogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5cGUo
KHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSkgfTsK
QEAgLTI2MzYsMjQgKzI2OTEsMjQgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDIzOgorICBjYXNlIDI1OgogCiAgICAgewogICAgICAgICBUUGFyYW1ldGVyIHBhcmFt
ID0geyAwLCBuZXcgVFR5cGUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldFR5cGUoKSkgfTsKICAgICAgICAgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5j
dGlvbi0+YWRkUGFyYW1ldGVyKHBhcmFtKTsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rp
b24gPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uOwotICAgICAgICAoeXl2YWwu
aW50ZXJtKS5pbnRlcm1Ob2RlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUo
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5n
cm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDI0OgorICBjYXNlIDI2OgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVy
bS5mdW5jdGlvbik7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDI1OgorICBjYXNlIDI3
OgogCiAgICAgewogICAgICAgICAvLwpAQCAtMjY2NywzOSArMjcyMiwzOSBAQCB5eXJlZHVjZToK
ICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFso
MSkgLSAoMSldLmludGVybS50eXBlKS5tYXRyaXgpIHsKICAgICAgICAgICAgICAgICAgICAgc3dp
dGNoKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5zaXplKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBF
T3BDb25zdHJ1Y3RNYXQyOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RNYXQyOyAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2goKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUpIHsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENv
bnN0cnVjdFZlYzI7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzM7ICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7ICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdFZlYzI7ICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdFZlYzM7ICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7ICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgogICAgICAgICAgICAgICAgIHN3aXRjaCgo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2l6ZSkgewotICAgICAgICAgICAgICAgIGNh
c2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0SW50OyAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjogICAgICAgRlJBR19W
RVJUX09OTFkoIml2ZWMyIiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBv
cCA9IEVPcENvbnN0cnVjdElWZWMyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6ICAg
ICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjMyIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBl
KS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSA0OiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzQiLCAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0SVZlYzQ7IGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgMTogb3AgPSBFT3BDb25zdHJ1Y3RJbnQ7ICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdElWZWMyOyBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0SVZlYzM7IGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjNDsgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRCb29s
OgogICAgICAgICAgICAgICAgIHN3aXRjaCgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSku
c2l6ZSkgewotICAgICAgICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgMjogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWMyIiwgKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMyOyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMyIsICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RCVmVj
MzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiAgICAgICBGUkFHX1ZFUlRfT05MWSgi
YnZlYzQiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29u
c3RydWN0QlZlYzQ7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTogb3AgPSBFT3BDb25z
dHJ1Y3RCb29sOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0
cnVjdEJWZWMyOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3Ry
dWN0QlZlYzM7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1
Y3RCVmVjNDsgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAob3AgPT0gRU9wTnVsbCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lLCAiY2Fubm90IGNvbnN0cnVjdCB0aGlz
IHR5cGUiLCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlw
ZSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwg
ImNhbm5vdCBjb25zdHJ1Y3QgdGhpcyB0eXBlIiwgZ2V0QmFzaWNTdHJpbmcoKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5
cGUgPSBFYnRGbG9hdDsKICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OwpA
QCAtMjcxMiwyMSArMjc2NywxMCBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMjY6Ci0KLSAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hl
Y2soKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5z
dHJpbmcpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBUVHlwZSB0
eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7Ci0gICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24g
PSBuZXcgVEZ1bmN0aW9uKCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBlKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBmdW5jdGlvbjsKLSAgICA7fQotICAgIGJy
ZWFrOwotCi0gIGNhc2UgMjc6CisgIGNhc2UgMjg6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAqKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2
ZWRFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCku
c3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgVFR5cGUg
dHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwogICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9u
ID0gbmV3IFRGdW5jdGlvbigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZywgdHlwZSk7CkBA
IC0yNzM0LDQ2ICsyNzc4LDQ2IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAyODoKKyAgY2FzZSAyOToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDI5OgorICBjYXNlIDMwOgogCiAgICAgewot
ICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5s
ZXgpLmxpbmUsICIrKyIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgy
KV0pLCAiKysiLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJl
SW5jcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRVbmFyeU1hdGgoRU9wUHJlSW5jcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAg
ICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGlu
ZSwgIisrIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxz
cFsoMSkgLSAoMildKSwgIisrIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMzA6CisgIGNhc2UgMzE6CiAKICAgICB7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwg
Ii0tIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAg
ICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDIpXSksICItLSIs
ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVEZWNyZW1lbnQs
ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDEpIC0g
KDIpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0
aChFT3BQcmVEZWNyZW1lbnQsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXlsc3BbKDEpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAg
aWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT51bmFyeU9wRXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAiLS0iLCAo
eXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5bHNwWygxKSAtICgy
KV0pLCAiLS0iLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAzMToKKyAgY2FzZSAzMjoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFso
MSkgLSAoMildLmludGVybSkub3AgIT0gRU9wTnVsbCkgewotICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0
aCgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLm9wLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5saW5lLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCh5eXZzcFsoMSkgLSAoMild
LmludGVybSkub3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXlsc3BbKDEpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgICAgIGlm
ICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewogICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGVycm9yT3AgPSAiIjsKICAgICAgICAgICAgICAgICBzd2l0Y2goKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtKS5vcCkgewpAQCAtMjc4MSw3ICsyODI1LDcgQEAgeXlyZWR1Y2U6
CiAgICAgICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OiBlcnJvck9wID0gIiEiOyBicmVh
azsKICAgICAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmlu
dGVybSkubGluZSwgZXJyb3JPcCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnVu
YXJ5T3BFcnJvcigoeXlsc3BbKDEpIC0gKDIpXSksIGVycm9yT3AsICh5eXZzcFsoMikgLSAoMild
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CiAgICAgICAgICAgICB9CkBAIC0yNzkwLDE4NSArMjgzNCwxNzggQEAgeXlyZWR1Y2U6
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDMyOgotCi0gICAgeyAoeXl2YWwuaW50ZXJt
KS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9
IEVPcE51bGw7IDt9Ci0gICAgYnJlYWs7Ci0KICAgY2FzZSAzMzoKIAotICAgIHsgKHl5dmFsLmlu
dGVybSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSku
b3AgPSBFT3BOZWdhdGl2ZTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTnVsbDsg
O30KICAgICBicmVhazsKIAogICBjYXNlIDM0OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5saW5l
ID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcExv
Z2ljYWxOb3Q7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE5lZ2F0aXZlOyA7fQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMzU6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQor
ICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BMb2dpY2FsTm90OyA7fQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMzY6CiAKKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIGJyZWFrOwor
CisgIGNhc2UgMzc6CisKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIqIiwgKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29u
dGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BNdWwsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkg
ewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5s
ZXgpLmxpbmUsICIqIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiKiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsK
ICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzNzoKKyAgY2FzZSAzODoK
IAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIi8iLCAoeXl2c3BbKDIpIC0gKDMpXS5s
ZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BEaXYsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcERpdiwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAg
ICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIi8i
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXls
c3BbKDIpIC0gKDMpXSksICIvIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDM4OgorICBjYXNlIDM5OgogCiAgICAgeyAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDM5OgorICBjYXNlIDQwOgog
CiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEFkZCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAg
aWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIisiLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3Bb
KDIpIC0gKDMpXSksICIrIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDQwOgorICBjYXNlIDQxOgogCiAgICAgewotICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BTdWIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
aW5hcnlNYXRoKEVPcFN1YiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIp
IC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlP
cEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIi0iLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwor
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIt
IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDQxOgorICBjYXNlIDQyOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDQyOgorICBjYXNlIDQzOgogCiAgICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDQzOgorICBjYXNlIDQ0OgogCiAgICAg
ewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbiwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAg
ICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAg
ICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICI8
IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5
bHNwWygyKSAtICgzKV0pLCAiPCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFs
c2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7
CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0NDoKKyAgY2FzZSA0NToKIAogICAgIHsKLSAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW4sICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAg
ICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAi
PiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5
eWxzcFsoMikgLSAoMyldKSwgIj4iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5l
dyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZh
bHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUp
OworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0K
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDU6CisgIGNhc2UgNDY6CiAKICAgICB7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1YWwsICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1YWwsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAg
ICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxp
bmUsICI8PSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVy
cm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIjw9IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJy
YXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJD
b25zdChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4
KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAg
ICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDQ2OgorICBjYXNlIDQ3OgogCiAg
ICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAt
ICgzKV0ubGV4KS5saW5lLCAiPj0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICI+PSIsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVu
aW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlv
bkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFso
MikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAt
ICgzKV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0NzoKKyAg
Y2FzZSA0ODoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA0ODoKKyAgY2FzZSA0OToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1
YWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVxdWFs
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4
dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lLCAiPT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICI9PSIsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1
bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZz
cFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygy
KSAtICgzKV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0OToK
KyAgY2FzZSA1MDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTm90RXF1YWwsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5vdEVxdWFsLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAt
ICgzKV0ubGV4KS5saW5lLCAiIT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIhPSIsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVu
aW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlv
bkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFso
MikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAt
ICgzKV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1MDoKLQot
ICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9Ci0gICAgYnJlYWs7Ci0KICAgY2FzZSA1MToKIAog
ICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CkBAIC0yOTg2LDE0MyArMzAyMywxNDggQEAgeXly
ZWR1Y2U6CiAKICAgY2FzZSA1NDoKIAorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAg
YnJlYWs7CisKKyAgY2FzZSA1NToKKwogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9n
aWNhbEFuZCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5s
ZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9w
TG9naWNhbEFuZCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMp
XSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9y
KCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiYmIiwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiJiYiLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAg
ICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29u
c3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
ICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgNTU6CisgIGNhc2UgNTY6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgNTY6CisgIGNhc2UgNTc6CiAKICAgICB7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5h
cnlNYXRoKEVPcExvZ2ljYWxYb3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
aW5hcnlNYXRoKEVPcExvZ2ljYWxYb3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJeXiIsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAo
MyldKSwgIl5eIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRV
bmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAgO30KICAg
ICBicmVhazsKIAotICBjYXNlIDU3OgorICBjYXNlIDU4OgogCiAgICAgeyAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDU4OgorICBjYXNlIDU5OgogCiAgICAgewot
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsT3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxPciwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAg
ICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgInx8
IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5
bHNwWygyKSAtICgzKV0pLCAifHwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5l
dyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZh
bHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUp
OworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0K
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNTk6CisgIGNhc2UgNjA6CiAKICAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjA6CisgIGNhc2UgNjE6
CiAKICAgICB7Ci0gICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eXZzcFsoMikg
LSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkpKQorICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUp
XSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5eXZzcFsoMSkg
LSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oKHl5
dnNwWygxKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoNSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICg1KV0pKTsKICAgICAgICAgaWYgKCh5eXZzcFsoMykg
LSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkgIT0gKHl5dnNwWyg1KSAt
ICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSkKICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IDA7CiAKICAgICAgICAgaWYgKCh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5h
cnlPcEVycm9yKCh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSwgIjoiLCAoeXl2c3BbKDMpIC0g
KDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNw
Wyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDUpXSks
ICI6IiwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoNSkgLSAo
NSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDYxOgorICBjYXNlIDYyOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsg
O30KICAgICBicmVhazsKIAotICBjYXNlIDYyOgorICBjYXNlIDYzOgogCiAgICAgewotICAgICAg
ICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0p
LmxpbmUsICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAo
MyldKSwgImFzc2lnbiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEFzc2lnbigoeXl2
c3BbKDIpIC0gKDMpXS5pbnRlcm0pLm9wLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eXZzcFsoMikgLSAoMyldLmludGVybSkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRBc3NpZ24oKHl5dnNwWygy
KSAtICgzKV0uaW50ZXJtKS5vcCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3Bb
KDIpIC0gKDMpXSkpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9yKCh5eXZzcFsoMikgLSAo
MyldLmludGVybSkubGluZSwgImFzc2lnbiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5hc3NpZ25FcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJhc3NpZ24iLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwg
KHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
NjM6Ci0KLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmlu
dGVybSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSku
b3AgPSBFT3BBc3NpZ247IDt9Ci0gICAgYnJlYWs7Ci0KICAgY2FzZSA2NDoKIAotICAgIHsgRlJB
R19WRVJUX09OTFkoIio9IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsgICAgICh5eXZh
bC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRl
cm0pLm9wID0gRU9wTXVsQXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BB
c3NpZ247IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2NToKIAotICAgIHsgRlJBR19WRVJUX09O
TFkoIi89IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsgICAgICh5eXZhbC5pbnRlcm0p
LmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0g
RU9wRGl2QXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BNdWxBc3NpZ247
IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2NjoKIAotICAgIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFkZEFzc2lnbjsgO30KKyAgICB7ICh5
eXZhbC5pbnRlcm0pLm9wID0gRU9wRGl2QXNzaWduOyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
Njc6CiAKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmlu
dGVybSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSku
b3AgPSBFT3BTdWJBc3NpZ247IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFkZEFz
c2lnbjsgO30KICAgICBicmVhazsKIAogICBjYXNlIDY4OgogCi0gICAgewotICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKTsKLSAgICA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BTdWJB
c3NpZ247IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2OToKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bW1hKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lKTsKLSAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxl
eCkubGluZSwgIiwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsK
KyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNzA6CisKKyAgICB7CisgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb21t
YSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7CisgICAg
ICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgeworICAgICAgICAg
ICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIsIiwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDcwOgorICBjYXNlIDcxOgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+Y29uc3RFcnJv
ckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKQEAgLTMx
MzEsNyArMzE3Myw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3
MToKKyAgY2FzZSA3MjoKIAogICAgIHsKICAgICAgICAgVEZ1bmN0aW9uICZmdW5jdGlvbiA9ICoo
KHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5mdW5jdGlvbik7CkBAIC0zMTQ1LDEzICszMTg3LDEz
IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29uc3QgVFBhcmFtZXRlciAmcGFyYW0gPSBmdW5j
dGlvbi5nZXRQYXJhbShpKTsKICAgICAgICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFy
aWFibGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOworICAgICAgICAgICAgICAgIFRWYXJpYWJs
ZSB2YXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlwZSk7CiAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dy
ZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxl
LT5nZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgp
LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0pLmxpbmUpOworICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5
bWJvbCh2YXJpYWJsZS5nZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS5nZXROYW1lKCksIHZhcmlhYmxl
LmdldFR5cGUoKSwgKHl5bHNwWygxKSAtICgyKV0pKSwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90
b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBl
LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0pLmxpbmUpOworICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5
bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsICh5eWxzcFsoMSkgLSAoMildKSksICh5eWxzcFsoMSkg
LSAoMildKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zMTYyLDcg
KzMyMDQsNyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzI6Cisg
IGNhc2UgNzM6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0p
LmludGVybUFnZ3JlZ2F0ZSkKQEAgLTMxNzEsMjIgKzMyMTMsMjIgQEAgeXlyZWR1Y2U6CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDczOgorICBjYXNlIDc0OgogCiAgICAgewogICAgICAg
ICBpZiAoKCh5eXZzcFsoMikgLSAoNCldLmludGVybS5wcmVjaXNpb24pID09IEVicEhpZ2gpICYm
IChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX0ZSQUdNRU5UX1NIQURFUikgJiYgIWNvbnRleHQt
PmZyYWdtZW50UHJlY2lzaW9uSGlnaCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygxKSAtICg0KV0ubGV4KS5saW5lLCAicHJlY2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4g
ZnJhZ21lbnQgc2hhZGVyIiwgImhpZ2hwIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXlsc3BbKDEpIC0gKDQpXSksICJwcmVjaXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVu
dCBzaGFkZXIiLCAiaGlnaHAiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoIWNvbnRleHQtPnN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVj
aXNpb24oICh5eXZzcFsoMykgLSAoNCldLmludGVybS50eXBlKSwgKHl5dnNwWygyKSAtICg0KV0u
aW50ZXJtLnByZWNpc2lvbikgKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNw
WygxKSAtICg0KV0ubGV4KS5saW5lLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0
IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDMpIC0gKDQpXS5p
bnRlcm0udHlwZSkudHlwZSkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygx
KSAtICg0KV0pLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0IHByZWNpc2lvbiBx
dWFsaWZpZXIiLCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0udHlwZSku
dHlwZSkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA3NDoKKyAgY2FzZSA3NToKIAogICAgIHsKICAgICAgICAgLy8KQEAgLTMyMDAsMTIg
KzMyNDIsMTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRGdW5jdGlvbiogcHJldkRlYyA9IHN0YXRp
Y19jYXN0PFRGdW5jdGlvbio+KGNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmQoKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0TWFuZ2xlZE5hbWUoKSkpOwogICAgICAgICBpZiAo
cHJldkRlYykgewogICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdldFJldHVyblR5cGUoKSAhPSAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkpIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUs
ICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUiLCAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFz
aWNTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAt
ICgyKV0pLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0
eXBlIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UmV0dXJuVHlwZSgp
LmdldEJhc2ljU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJldkRl
Yy0+Z2V0UGFyYW1Db3VudCgpOyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAocHJldkRlYy0+
Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkgIT0gKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5l
LCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHBhcmFtZXRlciBxdWFs
aWZpZXJzIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSku
dHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhh
dmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0uZnVuY3Rpb24pLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CkBAIC0zMjE3LDcgKzMyNTksNiBAQCB5eXJlZHVjZToKICAgICAgICAg
Ly8gYmVpbmcgcmVkZWNsYXJlZC4gIFNvLCBwYXNzIGJhY2sgdXAgdGhpcyBkZWNsYXJhdGlvbiwg
bm90IHRoZSBvbmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4KICAgICAgICAgLy8KICAgICAgICAgKHl5
dmFsLmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24p
OwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygyKSAtICgyKV0ubGV4KS5s
aW5lOwogCiAgICAgICAgIC8vIFdlJ3JlIGF0IHRoZSBpbm5lciBzY29wZSBsZXZlbCBvZiB0aGUg
ZnVuY3Rpb24ncyBhcmd1bWVudHMgYW5kIGJvZHkgc3RhdGVtZW50LgogICAgICAgICAvLyBBZGQg
dGhlIGZ1bmN0aW9uIHByb3RvdHlwZSB0byB0aGUgc3Vycm91bmRpbmcgc2NvcGUgaW5zdGVhZC4K
QEAgLTMyMjUsMjEgKzMyNjYsMjEgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDc1OgorICBjYXNlIDc2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1
bmN0aW9uKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7CiAgICAgO30KICAg
ICBicmVhazsKIAotICBjYXNlIDc2OgorICBjYXNlIDc3OgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLmZ1bmN0aW9uKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDc3OgorICBjYXNlIDc4OgogCiAgICAgewog
ICAgICAgICAvLyBBZGQgdGhlIHBhcmFtZXRlcgpAQCAtMzI1MSw3ICszMjkyLDcgQEAgeXlyZWR1
Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDc4OgorICBjYXNlIDc5OgogCiAgICAg
ewogICAgICAgICAvLwpAQCAtMzI2Miw3ICszMzAzLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAg
ICAvLwogICAgICAgICAgICAgLy8gVGhpcyBwYXJhbWV0ZXIgPiBmaXJzdCBpcyB2b2lkCiAgICAg
ICAgICAgICAvLwotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0u
bGV4KS5saW5lLCAiY2Fubm90IGJlIGFuIGFyZ3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQp
JyIsICJ2b2lkIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMp
XSksICJjYW5ub3QgYmUgYW4gYXJndW1lbnQgdHlwZSBleGNlcHQgZm9yICcodm9pZCknIiwgInZv
aWQiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGRlbGV0
ZSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pLnBhcmFtLnR5cGU7CiAgICAgICAgIH0gZWxzZSB7
CkBAIC0zMjczLDE1ICszMzE0LDE1IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA3OToKKyAgY2FzZSA4MDoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkg
LSAoMyldLmludGVybS50eXBlKS5xdWFsaWZpZXIgIT0gRXZxR2xvYmFsICYmICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS50eXBlKS5xdWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5KSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJubyBxdWFs
aWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJubyBxdWFsaWZpZXJzIGFsbG93ZWQg
Zm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gbWFrZSBzdXJlIGEgc2FtcGxlciBpcyBub3QgaW52
b2x2ZWQgYXMgd2VsbC4uLgotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJy
b3JDaGVjaygoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKCh5eWxzcFsoMikgLSAoMyldKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAvLyBBZGQgdGhlIGZ1
bmN0aW9uIGFzIGEgcHJvdG90eXBlIGFmdGVyIHBhcnNpbmcgaXQgKHdlIGRvIG5vdCBzdXBwb3J0
IHJlY3Vyc2lvbikKQEAgLTMyOTQsMTEyICszMzM1LDExMCBAQCB5eXJlZHVjZToKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgODA6CisgIGNhc2UgODE6CiAKICAgICB7CiAgICAgICAgIGlm
ICgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9PSBFYnRWb2lkKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJpbGxl
Z2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsICh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLT5j
X3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwg
ImlsbGVnYWwgdXNlIG9mIHR5cGUgJ3ZvaWQnIiwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJp
bmctPmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9
Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgy
KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBp
ZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgKih5eXZz
cFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0
cmluZywgbmV3IFRUeXBlKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKSl9OwotICAgICAg
ICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lOwogICAg
ICAgICAoeXl2YWwuaW50ZXJtKS5wYXJhbSA9IHBhcmFtOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA4MToKKyAgY2FzZSA4MjoKIAogICAgIHsKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3
ZSBjYW4gbWFrZSBhbiBhcnJheSBvdXQgb2YgdGhpcyB0eXBlCi0gICAgICAgIGlmIChjb250ZXh0
LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNw
WygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlw
ZUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0u
dHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChj
b250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lLCAq
KHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVz
ZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKih5eXZzcFsoMikgLSAoNSldLmxl
eCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBp
bnQgc2l6ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNw
WygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNr
KCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksIHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAo
eXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAKICAg
ICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5
cGUpKTsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgKHl5dnNwWygyKSAtICg1KV0ubGV4
KS5zdHJpbmcsIHR5cGUgfTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFso
MikgLSAoNSldLmxleCkubGluZTsKICAgICAgICAgKHl5dmFsLmludGVybSkucGFyYW0gPSBwYXJh
bTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODI6CisgIGNhc2UgODM6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKTsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0pLmxpbmUsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZz
cFsoMikgLSAoMyldLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMp
XSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFsoMikg
LSAoMyldLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgODM6CisgIGNhc2UgODQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNh
bXBsZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmludGVybSkubGluZSwgKHl5dnNwWygx
KSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBh
cmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hl
Y2soKHl5bHNwWygyKSAtICgyKV0pLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVy
KSwgKih5eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2so
KHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkg
LSAoMildLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAg
ICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksIEV2
cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5p
bnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4NDoKKyAgY2FzZSA4NToKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwotICAgICAgICBp
ZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybSkubGlu
ZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygyKSAt
ICgzKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAg
ICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygyKSAtICgzKV0u
aW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4NToK
KyAgY2FzZSA4NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDIp
IC0gKDIpXS5pbnRlcm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVy
cm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0udHlw
ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjaygoeXls
c3BbKDIpIC0gKDIpXSksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAqKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXl2c3Bb
KDIpIC0gKDIpXS5pbnRlcm0pLmxpbmUsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgyKV0u
aW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAgICBp
ZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgRXZxVGVtcG9y
YXJ5LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSku
cGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgO30KICAg
ICBicmVhazsKIAotICBjYXNlIDg2OgorICBjYXNlIDg3OgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFJbjsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgODc6CisgIGNhc2UgODg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlm
aWVyKSA9IEV2cUluOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4ODoKKyAgY2FzZSA4
OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxT3V0Owog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4OToKKyAgY2FzZSA5MDoKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW5PdXQ7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDkwOgorICBjYXNlIDkxOgogCiAgICAgewogICAgICAgICBUUGFyYW1l
dGVyIHBhcmFtID0geyAwLCBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUp
KSB9OwpAQCAtMzQwNywxMDQgKzM0NDYsMTA0IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSA5MToKKyAgY2FzZSA5MjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmlu
dGVybSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA5MjoKKyAgY2FzZSA5MzoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkg
LSAoMyldLmludGVybSkudHlwZS50eXBlID09IEVidEludmFyaWFudCAmJiAhKHl5dnNwWygzKSAt
ICgzKV0ubGV4KS5zeW1ib2wpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNs
YXJlZCBhcyBpbnZhcmlhbnQiLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIo
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDMpXSksICJ1bmRl
Y2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgKHl5dnNwWygzKSAtICgz
KV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9CiAKLSAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcs
IFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkudHlwZSksICh5eXZzcFsoMykgLSAoMyld
LmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bSkuaW50ZXJtTm9kZSwgc3ltYm9sLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOworICAg
ICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3lt
Ym9sKDAsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtKS50eXBlKSwgKHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgKHl5dmFs
LmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dy
ZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBzeW1ib2wsICh5eWxz
cFsoMykgLSAoMyldKSk7CiAgICAgICAgIAotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVh
bGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUsICh5eXZhbC5pbnRl
cm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVj
aygoeXlsc3BbKDMpIC0gKDMpXSksICh5eXZhbC5pbnRlcm0pLnR5cGUpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RF
cnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoMyld
LmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCBmYWxzZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKih5eXZz
cFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCBmYWxzZSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgVFZhcmlhYmxlKiB2YXJp
YWJsZSA9IDA7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXl2c3Bb
KDMpIC0gKDMpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5
dmFsLmludGVybSkudHlwZSwgdmFyaWFibGUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5p
dEVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5z
dHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgaWYgKHN5bWJvbCAmJiB2YXJpYWJsZSkKICAgICAgICAg
ICAgIHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgIDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSA5MzoKKyAgY2FzZSA5NDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNv
bnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5s
aW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4
dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5eXZzcFso
MSkgLSAoNSldLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygz
KSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5u
b25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKih5eXZzcFsoMykgLSAo
NSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsIHRydWUpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0p
ID0gKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkg
LSAoNSldLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNr
KCh5eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50
eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWyg0
KSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpIHx8IGNvbnRleHQtPmFy
cmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAo
NSldLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLnNl
dEFycmF5KHRydWUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZTsKLSAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5dnNwWyg0KSAtICg1KV0ubGV4KS5s
aW5lLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmlu
dGVybSkudHlwZSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJy
b3JDaGVjaygoeXlsc3BbKDQpIC0gKDUpXSksICooeXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmlu
ZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDk0OgorICBjYXNlIDk1OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+
c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDYpXS5sZXgpLmxpbmUsICh5
eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNildKSwgKHl5dnNwWygxKSAtICg2
KV0uaW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAg
ICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDYp
XS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAt
ICg2KV0uaW50ZXJtKS50eXBlLCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRD
b25zdEVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg2KV0pLCAqKHl5dnNwWygzKSAtICg2KV0ubGV4
KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSwgdHJ1ZSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2
c3BbKDEpIC0gKDYpXS5pbnRlcm0pOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVF
cnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNildLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg2KV0u
aW50ZXJtKS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNw
Wyg0KSAtICg2KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpKQor
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDYp
XSksICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFs
aWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKHl5dnNwWygxKSAtICg2KV0uaW50
ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJh
eVNpemVFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNildLmxleCkubGluZSwgKHl5dnNwWyg1KSAt
ICg2KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQorICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAoeXl2c3BbKDUp
IC0gKDYpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJt
KS50eXBlLnNldEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJp
YWJsZSA9IDA7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eXZz
cFsoNCkgLSAoNildLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCAo
eXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgICAgIGlm
IChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAqKHl5dnNwWygz
KSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSwgdmFy
aWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
IFRUeXBlIHR5cGUgPSBUVHlwZSgoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpOwogICAg
ICAgICAgICAgdHlwZS5zZXRBcnJheVNpemUoc2l6ZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50
ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0
ZSgoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICoo
eXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5dnNwWygzKSAtICg2KV0ubGV4
KS5saW5lKSwgKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdn
cmVnYXRlKCh5eXZzcFsoMSkgLSAoNildLmludGVybSkuaW50ZXJtTm9kZSwgY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpIDog
MCwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCB0eXBlLCAoeXlsc3BbKDMpIC0gKDYp
XSkpLCAoeXlsc3BbKDMpIC0gKDYpXSkpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDk1OgorICBjYXNlIDk2OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+
c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5
eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1
KV0uaW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAg
ICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAoNSldLmludGVybSk7CiAKICAgICAg
ICAgVEludGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0
ZUluaXRpYWxpemVyKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAo
NSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsICh5eXZzcFso
NSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkgeworICAgICAg
ICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigoeXlsc3BbKDMpIC0gKDUpXSksICoo
eXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50
eXBlLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9k
ZSkpIHsKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBidWlsZCB0aGUgaW50ZXJtZWRp
YXRlIHJlcHJlc2VudGF0aW9uCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgaWYgKGludGVy
bU5vZGUpCi0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoNSldLmludGVybSkuaW50
ZXJtTm9kZSwgaW50ZXJtTm9kZSwgKHl5dnNwWyg0KSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBpbnRl
cm1Ob2RlLCAoeXlsc3BbKDQpIC0gKDUpXSkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9ICh5eXZzcFsoMSkgLSAoNSld
LmludGVybSkuaW50ZXJtQWdncmVnYXRlOwogICAgICAgICB9IGVsc2UgewpAQCAtMzUxNCw3NyAr
MzU1Myw3NyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTY6Cisg
IGNhc2UgOTc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS50eXBlKSksICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKSwgKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0udHlwZSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NzoKKyAgY2FzZSA5ODoKIAogICAgIHsKLSAg
ICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5
bWJvbCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkg
LSAoMildLmludGVybS50eXBlKSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5
bWJvbCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkg
LSAoMildLmludGVybS50eXBlKSksICh5eWxzcFsoMikgLSAoMildKSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdn
cmVnYXRlKHN5bWJvbCwgKHl5bHNwWygyKSAtICgyKV0pKTsKICAgICAgICAgCi0gICAgICAgIGlm
IChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxl
eCkubGluZSwgKHl5dmFsLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgKHl5dmFsLmludGVybSku
dHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNv
bnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5l
LCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZh
bHNlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5bHNw
WygyKSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRl
cm0pLnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAo
MildLmludGVybS50eXBlKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxl
eCkubGluZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50
eXBlLCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygo
eXlsc3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZywgKHl5dmFs
LmludGVybSkudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgc3ltYm9sLT5z
ZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDk4OgorICBjYXNlIDk5OgogCiAgICAgewotICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2
c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICJ1bnNpemVkIGFycmF5IGRlY2xhcmF0aW9ucyBub3Qg
c3VwcG9ydGVkIiwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDQpXSksICJ1bnNpemVkIGFycmF5IGRl
Y2xhcmF0aW9ucyBub3Qgc3VwcG9ydGVkIiwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmct
PmNfc3RyKCkpOwogICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgVEludGVy
bVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5
dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS50eXBlKSksICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVn
YXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgVEludGVy
bVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5
dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS50eXBlKSksICh5eWxzcFsoMikgLSAoNCldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmlu
dGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJv
bCwgKHl5bHNwWygyKSAtICg0KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5
eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgOTk6CisgIGNhc2UgMTAwOgogCiAgICAgewogICAgICAgICBUVHlwZSB0eXBlID0gVFR5cGUo
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKTsKICAgICAgICAgaW50IHNpemU7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxl
eCkubGluZSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUp
KQorICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0g
KDUpXSksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgdHlwZS5zZXRBcnJheVNp
emUoc2l6ZSk7Ci0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCB0eXBl
LCAoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1i
b2wsICh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wq
IHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikg
LSAoNSldLmxleCkuc3RyaW5nLCB0eXBlLCAoeXlsc3BbKDIpIC0gKDUpXSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFr
ZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eWxzcFsoMikgLSAoNSldKSk7CiAgICAgICAgIAotICAgICAg
ICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUp
XS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwg
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygo
eXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmlu
ZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLCB0cnVlKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAqKHl5dnNw
WygyKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSwg
dHJ1ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFs
LmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKTsKIAotICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgp
LmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkgfHwgY29udGV4dC0+YXJyYXlR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygx
KSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVy
cm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlw
ZSkpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUp
XSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0gICAg
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUp
XS5sZXgpLmxpbmUsICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBz
aXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxz
cFsoMykgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAg
ICAgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLnNldEFycmF5KHRydWUsIHNpemUpOwog
ICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKih5eXZz
cFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSks
IHZhcmlhYmxlKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5
bHNwWygzKSAtICg1KV0pLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFso
MSkgLSAoNSldLmludGVybS50eXBlKSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAgICAg
ICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CkBAIC0z
NTkyLDIxICszNjMxLDIxIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxMDA6CisgIGNhc2UgMTAxOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0
UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICh5eXZzcFso
MSkgLSAoNCldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFs
aWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNCldKSwgKHl5dnNwWygxKSAtICg0KV0uaW50
ZXJtLnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAo
eXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpOwogCiAg
ICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRleHQtPmV4
ZWN1dGVJbml0aWFsaXplcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIp
IC0gKDQpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2
c3BbKDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpIHsKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWygyKSAtICg0KV0p
LCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS50eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVy
bU5vZGUpKSB7CiAgICAgICAgIC8vCiAgICAgICAgIC8vIEJ1aWxkIGludGVybWVkaWF0ZSByZXBy
ZXNlbnRhdGlvbgogICAgICAgICAvLwogICAgICAgICAgICAgaWYoaW50ZXJtTm9kZSkKLSAgICAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0gKDQpXS5sZXgp
LmxpbmUpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGludGVybU5vZGUsICh5eWxzcFso
MykgLSAoNCldKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKHl5dmFsLmlu
dGVybSkuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAgICAgfSBlbHNlIHsKQEAgLTM2MTYsNTgg
KzM2NTUsNTggQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwMToK
KyAgY2FzZSAxMDI6CiAKICAgICB7Ci0gICAgICAgIFZFUlRFWF9PTkxZKCJpbnZhcmlhbnQgZGVj
bGFyYXRpb24iLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUpOwotICAgICAgICBpZiAoY29u
dGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisg
ICAgICAgIFZFUlRFWF9PTkxZKCJpbnZhcmlhbnQgZGVjbGFyYXRpb24iLCAoeXlsc3BbKDEpIC0g
KDIpXSkpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEp
IC0gKDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFu
dCB2YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0pLnR5cGUuc2V0QmFzaWMoRWJ0SW52YXJpYW50LCBFdnFJbnZhcmlhbnRWYXJ5
aW5nT3V0LCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50
ZXJtKS50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwg
KHl5bHNwWygyKSAtICgyKV0pKTsKICAgICAgICAgaWYgKCEoeXl2c3BbKDIpIC0gKDIpXS5sZXgp
LnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygy
KSAtICgyKV0ubGV4KS5saW5lLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGlu
dmFyaWFudCIsICh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgInVuZGVjbGFyZWQgaWRl
bnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0
cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAg
ICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBUSW50ZXJtU3lt
Ym9sICpzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3Bb
KDIpIC0gKDIpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dmFsLmludGVybSkudHlwZSksICh5eXZz
cFsoMikgLSAoMildLmxleCkubGluZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2ws
ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7CisgICAgICAgICAgICBUSW50ZXJtU3ltYm9s
ICpzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIp
IC0gKDIpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dmFsLmludGVybSkudHlwZSksICh5eWxzcFso
MikgLSAoMildKSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eWxzcFsoMikg
LSAoMildKSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAyOgor
ICBjYXNlIDEwMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKIAogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpLmFycmF5KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3Qt
Y2xhc3MgYXJyYXkiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAo
MSldKSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS50eXBlKS5zZXRBcnJheShmYWxzZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTAzOgorICBjYXNlIDEwNDoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFso
MikgLSAoMildLmludGVybS50eXBlKS5hcnJheSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwg
ImZpcnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3Bb
KDIpIC0gKDIpXSksICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0udHlwZSkuc2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRl
ICYmCiAgICAgICAgICAgICAoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0g
RWJ0Qm9vbCB8fCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9PSBFYnRJbnQp
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
dHlwZSkubGluZSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZygo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJjYW5ub3QgYmUgYm9vbCBvciBpbnQi
LCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxp
ZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAg
ICAgIGlmICgoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9PSBFdnFW
YXJ5aW5nSW4gfHwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9PSBF
dnFWYXJ5aW5nT3V0KSAmJgogICAgICAgICAgICAgKCh5eXZzcFsoMikgLSAoMildLmludGVybS50
eXBlKS50eXBlID09IEVidEJvb2wgfHwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5
cGUgPT0gRWJ0SW50KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAt
ICgyKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFs
aWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiY2Fubm90IGJl
IGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZzcFsoMSkgLSAoMildLmludGVy
bS50eXBlKS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtLnR5cGUpOwpAQCAtMzY3NSw3MSArMzcxNCw3MSBAQCB5eXJlZHVjZToKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTA0OgorICBjYXNlIDEwNToKIAogICAgIHsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFDb25zdCwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRWb2lkLCBFdnFDb25zdCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMTA1OgorICBjYXNlIDEwNjoKIAogICAgIHsKLSAgICAgICAgVkVSVEVY
X09OTFkoImF0dHJpYnV0ZSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGlu
ZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0cmlidXRlIikpCisg
ICAgICAgIFZFUlRFWF9PTkxZKCJhdHRyaWJ1dGUiLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAg
ICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEJhc2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5l
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRy
aWJ1dGUsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDEwNjoKKyAgY2FzZSAxMDc6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxF
cnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xv
YmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSwgInZhcnlpbmciKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gU0hfVkVSVEVYX1NIQURFUikK
LSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFy
eWluZ091dCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ091dCwgKHl5bHNwWygx
KSAtICgxKV0pKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nSW4sICh5eXZzcFsoMSkgLSAoMSldLmxleCku
bGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQs
IEV2cVZhcnlpbmdJbiwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTA3OgorICBjYXNlIDEwODoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQt
Pmdsb2JhbEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQorICAgICAg
ICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDIpXSksIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChjb250ZXh0LT5zaGFk
ZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICh5eXZzcFsoMSkg
LSAoMildLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICh5eWxzcFsoMSkgLSAoMildKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0Vm9pZCwgRXZxSW52YXJpYW50VmFyeWluZ0luLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxp
bmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBF
dnFJbnZhcmlhbnRWYXJ5aW5nSW4sICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDEwODoKKyAgY2FzZSAxMDk6CiAKICAgICB7Ci0gICAgICAgIGlmIChj
b250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQorICAgICAgICBp
ZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgInVuaWZvcm0iKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRWb2lkLCBFdnFVbmlmb3JtLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVVuaWZvcm0sICh5eWxz
cFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwOToKKyAgY2Fz
ZSAxMTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0udHlwZSk7CiAKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0udHlwZSku
cHJlY2lzaW9uID09IEVicFVuZGVmaW5lZCkgewogICAgICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5wcmVjaXNpb24gPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5nZXREZWZhdWx0UHJlY2lzaW9u
KCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBlKTsKLSAgICAgICAgICAgIGlmIChj
b250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBl
KS5saW5lLCAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiwgKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLnR5cGUpLnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9u
RXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksICh5eXZhbC5pbnRlcm0udHlwZSkucHJlY2lz
aW9uLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSkpIHsKICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTEwOgorICBjYXNlIDExMToKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKTsK
QEAgLTM3NDcsNjMgKzM3ODYsNTUgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDExMToKKyAgY2FzZSAxMTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
cHJlY2lzaW9uKSA9IEVicEhpZ2g7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDExMjoK
KyAgY2FzZSAxMTM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9
IEVicE1lZGl1bTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTEzOgorICBjYXNlIDEx
NDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwTG93Owog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTQ6CisgIGNhc2UgMTE1OgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5
cGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTU6CisgIGNhc2UgMTE2OgogCiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICg0KV0uaW50
ZXJtLnR5cGUpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5
eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUp
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWygyKSAt
ICg0KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwot
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAt
ICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgc2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygo
eXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICB9
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDExNjoKLQotICAgIHsKLSAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidFZvaWQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgO30K
LSAgICBicmVhazsKLQogICBjYXNlIDExNzoKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBx
dWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDog
RXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZs
b2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7
CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzgxMSw3ICszODQyLDcgQEAgeXlyZWR1Y2U6CiAK
ICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQs
IHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzgx
OSw3ICszODUwLDcgQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29s
LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAg
ICA7fQogICAgIGJyZWFrOwogCkBAIC0zODI3LDggKzM4NTgsNyBAQCB5eXJlZHVjZToKIAogICAg
IHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3Bb
KDEpIC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4MzYsOCArMzg2Niw4IEBA
IHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QWdncmVnYXRlKDMpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZs
b2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0zODQ1LDggKzM4
NzUsOCBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFs
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzg1
NCw4ICszODg0LDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29s
LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgO30KICAgICBicmVhazsKIApA
QCAtMzg2Myw4ICszODkzLDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRCb29sLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICA7fQogICAgIGJyZWFr
OwogCkBAIC0zODcyLDggKzM5MDIsOCBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidEJvb2wsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOwogICAgIDt9CiAgICAg
YnJlYWs7CiAKQEAgLTM4ODEsOCArMzkxMSw4IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAg
ICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkg
PyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICA7fQog
ICAgIGJyZWFrOwogCkBAIC0zODkwLDggKzM5MjAsOCBAQCB5eXJlZHVjZToKIAogICAgIHsKICAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEp
XSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICA7
fQogICAgIGJyZWFrOwogCkBAIC0zODk5LDk1ICszOTI5LDk2IEBAIHl5cmVkdWNlOgogCiAgICAg
ewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOwog
ICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjk6CiAKICAgICB7Ci0gICAgICAgIEZSQUdf
VkVSVF9PTkxZKCJtYXQyIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAg
VFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8g
RXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyLCB0cnVlKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkgLSAo
MSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzA6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJtYXQzIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzLCB0cnVlKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgx
KV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMiwgdHJ1ZSk7
CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDEzMToKIAogICAgIHsKLSAgICAgICAgRlJB
R19WRVJUX09OTFkoIm1hdDQiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAg
ICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkg
PyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQsIHRydWUpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEp
IC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzLCB0
cnVlKTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMyOgogCiAgICAgewotICAgICAg
ICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5l
KTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9h
dCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRBZ2dyZWdhdGUoNCwgdHJ1ZSk7CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDEz
MzoKIAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXJDdWJlIiwgKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5
OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXJDdWJlLCBx
dWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsK
ICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTM0OgogCiAgICAgeworICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFz
aWMoRWJ0U2FtcGxlckN1YmUsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgO30KKyAg
ICBicmVhazsKKworICBjYXNlIDEzNToKKworICAgIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5z
dXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ1bnN1cHBv
cnRlZCB0eXBlIiwgInNhbXBsZXJFeHRlcm5hbE9FUyIpOworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0
ZXJuYWxPRVMiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQot
ICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckV4dGVybmFsT0VTIiwgKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXJFeHRlcm5hbE9FUywg
cXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzNToKKyAgY2FzZSAxMzY6
CiAKICAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FS
Ql90ZXh0dXJlX3JlY3RhbmdsZSIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2
c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXIyRFJl
Y3QiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgInVu
c3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVjdCIpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyMkRS
ZWN0IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBx
dWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDog
RXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNh
bXBsZXIyRFJlY3QsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgKHl5
bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM2OgorICBj
YXNlIDEzNzoKIAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInN0cnVjdCIsICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsKICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDEzNzoKKyAgY2FzZSAxMzg6CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC0zOTk2LDg1ICs0
MDI3LDg2IEBAIHl5cmVkdWNlOgogICAgICAgICAvLwogICAgICAgICBUVHlwZSYgc3RydWN0dXJl
ID0gc3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zeW1ib2wp
LT5nZXRUeXBlKCk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIHF1YWwsICh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0U3RydWN0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnVzZXJEZWYgPSAmc3RydWN0dXJlOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxMzg6CisgIGNhc2UgMTM5OgogCi0gICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3RE
ZWNsYXJhdGlvbigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDMp
XS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KKyAgICB7IGlmIChjb250ZXh0
LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFsoMikgLSAoMyldKSwgKih5eXZzcFsoMikg
LSAoMyldLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTM5OgorICBjYXNlIDE0MDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQt
PnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLmxpbmUsICooeXl2c3Bb
KDIpIC0gKDYpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVy
cm9yQ2hlY2soKHl5bHNwWygyKSAtICg2KV0pLCAqKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJp
bmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRUeXBlKiBz
dHJ1Y3R1cmUgPSBuZXcgVFR5cGUoKHl5dnNwWyg1KSAtICg2KV0uaW50ZXJtLnR5cGVMaXN0KSwg
Kih5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVy
ZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZSgoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmlu
ZywgKHl5dnNwWyg1KSAtICg2KV0uaW50ZXJtLmZpZWxkTGlzdCkpKTsKICAgICAgICAgVFZhcmlh
YmxlKiB1c2VyVHlwZURlZiA9IG5ldyBUVmFyaWFibGUoKHl5dnNwWygyKSAtICg2KV0ubGV4KS5z
dHJpbmcsICpzdHJ1Y3R1cmUsIHRydWUpOwogICAgICAgICBpZiAoISBjb250ZXh0LT5zeW1ib2xU
YWJsZS5pbnNlcnQoKnVzZXJUeXBlRGVmKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KHl5dnNwWygyKSAtICg2KV0ubGV4KS5saW5lLCAicmVkZWZpbml0aW9uIiwgKHl5dnNwWygyKSAt
ICg2KV0ubGV4KS5zdHJpbmctPmNfc3RyKCksICJzdHJ1Y3QiKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eWxzcFsoMikgLSAoNildKSwgInJlZGVmaW5pdGlvbiIsICh5eXZzcFsoMikg
LSAoNildLmxleCkuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg2KV0ubGV4KS5s
aW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2
cVRlbXBvcmFyeSwgKHl5bHNwWygxKSAtICg2KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5leGl0U3RydWN0RGVj
bGFyYXRpb24oKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQwOgorICBjYXNlIDE0
MToKIAotICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5dnNwWygy
KSAtICgyKV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcpKSBjb250
ZXh0LT5yZWNvdmVyKCk7IDt9CisgICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJh
dGlvbigoeXlsc3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZykp
IGNvbnRleHQtPnJlY292ZXIoKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0MToKKyAgY2Fz
ZSAxNDI6CiAKICAgICB7Ci0gICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUoKHl5
dnNwWyg0KSAtICg1KV0uaW50ZXJtLnR5cGVMaXN0KSwgVFN0cmluZygiIikpOwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAoeXl2
c3BbKDEpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3
IFRUeXBlKG5ldyBUU3RydWN0dXJlKE5ld1Bvb2xUU3RyaW5nKCIiKSwgKHl5dnNwWyg0KSAtICg1
KV0uaW50ZXJtLmZpZWxkTGlzdCkpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5bHNwWygxKSAtICg1KV0pKTsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250
ZXh0LT5leGl0U3RydWN0RGVjbGFyYXRpb24oKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTQyOgorICBjYXNlIDE0MzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
TGlzdCkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZUxpc3QpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZmllbGRMaXN0
KTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQzOgorICBjYXNlIDE0NDoKIAogICAg
IHsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCkgPSAoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0udHlwZUxpc3QpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICh5
eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCktPnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8ICh5eXZhbC5pbnRlcm0udHlwZUxpc3Qp
LT5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIGlmICgoKih5eXZhbC5pbnRlcm0udHlw
ZUxpc3QpKVtqXS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSAoKih5eXZzcFsoMikgLSAoMildLmlu
dGVybS50eXBlTGlzdCkpW2ldLnR5cGUtPmdldEZpZWxkTmFtZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0
KSlbaV0ubGluZSwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3RydWN0
IiwgKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZUxpc3QpKVtpXS50eXBlLT5nZXRGaWVs
ZE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpID0gKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmZpZWxkTGlzdCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBURmllbGQqIGZpZWxkID0gKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRl
cm0uZmllbGRMaXN0KSlbaV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICh5
eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+c2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICBp
ZiAoKCooeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkpW2pdLT5uYW1lKCkgPT0gZmllbGQtPm5hbWUo
KSkgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIp
XSksICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxk
LT5uYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGVMaXN0KS0+cHVzaF9iYWNrKCgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5
cGVMaXN0KSlbaV0pOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpLT5wdXNo
X2JhY2soZmllbGQpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0
NDoKKyAgY2FzZSAxNDU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3Qp
ID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnR5cGVMaXN0KTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5maWVsZExpc3QpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmZpZWxkTGlzdCk7CiAK
LSAgICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS50eXBlKS5saW5lLCAoKih5eXZzcFsoMikgLSAoMyldLmludGVybS50eXBlTGlzdCkpWzBd
LnR5cGUtPmdldEZpZWxkTmFtZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkpKSB7
CisgICAgICAgIGlmIChjb250ZXh0LT52b2lkRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDMpXSks
ICgqKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmZpZWxkTGlzdCkpWzBdLT5uYW1lKCksICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgfQotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICh5
eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5zaXplKCk7ICsraSkgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8ICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+c2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBDYXJlZnVsIG5vdCB0byByZXBsYWNl
IGFscmVhZHkga25vd24gYXNwZWN0cyBvZiB0eXBlLCBsaWtlIGFycmF5LW5lc3MKICAgICAgICAg
ICAgIC8vCi0gICAgICAgICAgICBUVHlwZSogdHlwZSA9ICgqKHl5dmFsLmludGVybS50eXBlTGlz
dCkpW2ldLnR5cGU7CisgICAgICAgICAgICBUVHlwZSogdHlwZSA9ICgqKHl5dmFsLmludGVybS5m
aWVsZExpc3QpKVtpXS0+dHlwZSgpOwogICAgICAgICAgICAgdHlwZS0+c2V0QmFzaWNUeXBlKCh5
eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS50eXBlKTsKICAgICAgICAgICAgIHR5cGUtPnNl
dE5vbWluYWxTaXplKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5zaXplKTsKICAgICAg
ICAgICAgIHR5cGUtPnNldE1hdHJpeCgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubWF0
cml4KTsKQEAgLTQwODIsODUgKzQxMTQsNzUgQEAgeXlyZWR1Y2U6CiAKICAgICAgICAgICAgIC8v
IGRvbid0IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAgICAgICAgICAgIGlmICh0eXBlLT5pc0Fy
cmF5KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVj
aygoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubGluZSwgKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLnR5cGUpKSkKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJy
b3JDaGVjaygoeXlsc3BbKDEpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBl
KSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuYXJyYXkp
CiAgICAgICAgICAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKCh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS50eXBlKS5hcnJheVNpemUpOwotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyld
LmludGVybS50eXBlKS51c2VyRGVmKSB7CisgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLnR5cGUpLnVzZXJEZWYpCiAgICAgICAgICAgICAgICAgdHlwZS0+c2V0U3RydWN0
KCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS51c2VyRGVmLT5nZXRTdHJ1Y3QoKSk7Ci0g
ICAgICAgICAgICAgICAgdHlwZS0+c2V0VHlwZU5hbWUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LnR5cGUpLnVzZXJEZWYtPmdldFR5cGVOYW1lKCkpOwotICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLnR5cGUpLmxpbmUsICp0eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQt
PnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMyldKSwgKigqKHl5dmFsLmlu
dGVybS5maWVsZExpc3QpKVtpXSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDE0NToKKyAgY2FzZSAxNDY6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxp
c3QpID0gTmV3UG9vbFRUeXBlTGlzdCgpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0
KS0+cHVzaF9iYWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlTGluZSkpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSBOZXdQb29sVEZpZWxkTGlzdCgpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uZmllbGQpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ2OgorICBjYXNl
IDE0NzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCktPnB1c2hfYmFj
aygoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0udHlwZUxpbmUpKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5maWVsZExpc3QpLT5wdXNoX2JhY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmZpZWxk
KSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0NzoKKyAgY2FzZSAxNDg6CiAKICAg
ICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5saW5lLCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpKQorICAgICAg
ICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwgKih5
eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKIAotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlID0gbmV3IFRUeXBl
KEVidFZvaWQsIEVicFVuZGVmaW5lZCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUp
LmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZUxpbmUpLnR5cGUtPnNldEZpZWxkTmFtZSgqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5z
dHJpbmcpOworICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRl
ZmluZWQpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkKSA9IG5ldyBURmllbGQodHlwZSwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxNDg6CisgIGNhc2UgMTQ5OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVz
ZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoNCldLmxleCkubGluZSwgKih5eXZzcFsoMSkg
LSAoNCldLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JD
aGVjaygoeXlsc3BbKDEpIC0gKDQpXSksICooeXl2c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZykp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlTGluZSkudHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS5saW5lID0gKHl5dnNwWygxKSAtICg0KV0ubGV4
KS5saW5lOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlLT5zZXRGaWVsZE5h
bWUoKih5eXZzcFsoMSkgLSAoNCldLmxleCkuc3RyaW5nKTsKLQotICAgICAgICBpbnQgc2l6ZTsK
LSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0
KV0ubGV4KS5saW5lLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
c2l6ZSkpCisgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRUeXBlKEVidFZvaWQsIEVicFVuZGVm
aW5lZCk7CisgICAgICAgIGludCBzaXplID0gMDsKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg0KV0pLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLnR5cGUtPnNldEFycmF5U2l6ZShz
aXplKTsKLSAgICA7fQotICAgIGJyZWFrOwotCi0gIGNhc2UgMTQ5OgorICAgICAgICB0eXBlLT5z
ZXRBcnJheVNpemUoc2l6ZSk7CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgICAg
ICAoeXl2YWwuaW50ZXJtLmZpZWxkKSA9IG5ldyBURmllbGQodHlwZSwgKHl5dnNwWygxKSAtICg0
KV0ubGV4KS5zdHJpbmcpOworICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTA6CiAKLSAg
ICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KICAgICBicmVhazsK
IAogICBjYXNlIDE1MToKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOyA7fQorICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsg
O30KICAgICBicmVhazsKIAogICBjYXNlIDE1MjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50
ZXJtQWdncmVnYXRlKTsgO30KICAgICBicmVhazsKIAogICBjYXNlIDE1MzoKQEAgLTQxOTAsMTEy
ICs0MjEyLDExNyBAQCB5eXJlZHVjZToKIAogICBjYXNlIDE1ODoKIAotICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxNTk6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsg
O30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IDA7IDt9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxNjA6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyA7
fQorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyA7fQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTYxOgogCisgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgO30KKyAgICBi
cmVhazsKKworICBjYXNlIDE2MjoKKwogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAo
NSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpICE9IDApIHsKICAgICAgICAgICAgICh5eXZzcFso
MykgLSAoNSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0g
ICAgICAgICAgICAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0
RW5kTGluZSgoeXl2c3BbKDUpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dnNw
WygzKSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldExpbmUoKHl5bG9jKSk7CiAg
ICAgICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gKHl5dnNw
WygzKSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDE2MjoKKyAgY2FzZSAxNjM6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxNjM6CisgIGNhc2UgMTY0OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTY0OgorICBjYXNlIDE2NToKIAogICAgIHsgY29udGV4dC0+c3lt
Ym9sVGFibGUucHVzaCgpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY1OgorICBjYXNlIDE2
NjoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxNjY6CisgIGNhc2UgMTY3OgogCiAgICAgeyBjb250ZXh0LT5zeW1i
b2xUYWJsZS5wdXNoKCk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjc6CisgIGNhc2UgMTY4
OgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKTsgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDE2ODoKKyAgY2FzZSAxNjk6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
Njk6CisgIGNhc2UgMTcwOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygyKSAtICgzKV0u
aW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkpIHsKICAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMyld
LmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAg
ICAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0RW5kTGluZSgo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dnNwWygyKSAtICgz
KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldExpbmUoKHl5bG9jKSk7CiAgICAgICAgIH0K
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMyldLmlu
dGVybS5pbnRlcm1BZ2dyZWdhdGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzA6
CisgIGNhc2UgMTcxOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3Jl
Z2F0ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bUFnZ3JlZ2F0ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxvYykpOwogICAgIDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxNzE6CisgIGNhc2UgMTcyOgogCiAgICAgewotICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3Jl
Z2F0ZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSwgKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAwKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1BZ2dyZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSksICh5eXZzcFsoMikgLSAoMild
LmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bG9jKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDE3MjoKKyAgY2FzZSAxNzM6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAwOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTczOgorICBjYXNlIDE3NDoKIAogICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRpY19jYXN0PFRJbnRlcm1Ob2RlKj4oKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOyA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTc0OgorICBjYXNlIDE3NToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQt
PmJvb2xFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygzKSAt
ICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+Ym9v
bEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICg1KV0pLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
U2VsZWN0aW9uKCh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2
c3BbKDUpIC0gKDUpXS5pbnRlcm0ubm9kZVBhaXIpLCAoeXl2c3BbKDEpIC0gKDUpXS5sZXgpLmxp
bmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLm5vZGVQYWlyKSwgKHl5bHNwWygxKSAtICg1
KV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc1OgorICBjYXNlIDE3NjoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CkBAIC00MzAzLDcgKzQzMzAsNyBAQCB5eXJlZHVj
ZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc2OgorICBjYXNlIDE3NzoKIAogICAg
IHsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CkBAIC00MzExLDcgKzQzMzgsNyBAQCB5eXJlZHVjZToK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc3OgorICBjYXNlIDE3ODoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CkBAIC00MzIwLDE2ICs0MzQ3LDE2IEBAIHl5cmVk
dWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzg6CisgIGNhc2UgMTc5OgogCiAg
ICAgewogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5l
LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+
c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkg
LSAoNCldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5sZXgp
LmxpbmUsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5ib29sRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAg
ICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5dnNwWygyKSAtICg0KV0ubGV4
KS5saW5lLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IGludGVybU5vZGUpKQorICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigo
eXlsc3BbKDIpIC0gKDQpXSksICooeXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0cmluZywgKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbKDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAoeXl2c3BbKDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CkBAIC00MzM4
LDc5ICs0MzY1LDc5IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
Nzk6CisgIGNhc2UgMTgwOgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7ICsr
Y29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4MDoK
KyAgY2FzZSAxODE6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgp
OwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZExvb3AoRUxvb3BXaGlsZSwgMCwgKHl5dnNwWyg0KSAtICg2KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksIDAsICh5eXZzcFsoNikgLSAoNildLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5
dnNwWygxKSAtICg2KV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hpbGUsIDAsICh5eXZz
cFsoNCkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDYpIC0gKDYp
XS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoMSkgLSAoNildKSk7CiAgICAgICAgIC0tY29u
dGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTgx
OgorICBjYXNlIDE4MjoKIAogICAgIHsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTgyOgorICBjYXNlIDE4MzoKIAogICAgIHsKLSAgICAgICAg
aWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eXZzcFsoOCkgLSAoOCldLmxleCkubGluZSwg
KHl5dnNwWyg2KSAtICg4KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAo
Y29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWyg4KSAtICg4KV0pLCAoeXl2c3BbKDYpIC0g
KDgpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRG9XaGlsZSwgMCwgKHl5dnNwWyg2KSAtICg4KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksIDAsICh5eXZzcFsoMykgLSAoOCldLmludGVybS5pbnRlcm1O
b2RlKSwgKHl5dnNwWyg0KSAtICg4KV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRG9XaGls
ZSwgMCwgKHl5dnNwWyg2KSAtICg4KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIDAsICh5eXZz
cFsoMykgLSAoOCldLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bHNwWyg0KSAtICg4KV0pKTsKICAg
ICAgICAgLS1jb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxODM6CisgIGNhc2UgMTg0OgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5w
dXNoKCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KICAgICBicmVhazsKIAotICBj
YXNlIDE4NDoKKyAgY2FzZSAxODU6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRh
YmxlLnBvcCgpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BGb3IsICh5eXZzcFsoNCkgLSAoNyldLmludGVybS5p
bnRlcm1Ob2RlKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0g
KDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlw
ZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3
KSAtICg3KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDEpIC0gKDcpXS5sZXgpLmxpbmUp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZExvb3AoRUxvb3BGb3IsICh5eXZzcFsoNCkgLSAoNyldLmludGVybS5pbnRlcm1Ob2Rl
KSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5pbnRl
cm0ubm9kZVBhaXIpLm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2
c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3KSAtICg3KV0u
aW50ZXJtLmludGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDcpXSkpOwogICAgICAgICAtLWNvbnRl
eHQtPmxvb3BOZXN0aW5nTGV2ZWw7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4NToK
KyAgY2FzZSAxODY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE4NjoKKyAgY2FzZSAxODc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4NzoKKyAgY2FzZSAxODg6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxODg6CisgIGNhc2UgMTg5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODk6CisgIGNh
c2UgMTkwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9
ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtNDQxOCw3ICs0
NDQ1LDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5MDoKKyAg
Y2FzZSAxOTE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUx
ID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CkBAIC00NDI2LDYz
ICs0NDUzLDYzIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTE6
CisgIGNhc2UgMTkyOgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdM
ZXZlbCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIp
XS5sZXgpLmxpbmUsICJjb250aW51ZSBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwg
IiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiY29u
dGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwg
KHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsICh5
eWxzcFsoMSkgLSAoMildKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5MjoKKyAg
Y2FzZSAxOTM6CiAKICAgICB7CiAgICAgICAgIGlmIChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVs
IDw9IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxl
eCkubGluZSwgImJyZWFrIHN0YXRlbWVudCBvbmx5IGFsbG93ZWQgaW4gbG9vcHMiLCAiIik7Cisg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDIpXSksICJicmVhayBzdGF0
ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcEJyZWFrLCAoeXl2c3BbKDEpIC0g
KDIpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgKHl5bHNwWygxKSAtICgyKV0p
KTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkzOgorICBjYXNlIDE5NDoKIAogICAg
IHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgICAgIGlmIChj
b250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRWb2lkKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUs
ICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAibm9uLXZvaWQgZnVu
Y3Rpb24gbXVzdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
OTQ6CisgIGNhc2UgMTk1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFso
MikgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDEpIC0gKDMpXS5sZXgp
LmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMikgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDEpIC0gKDMpXSkpOwogICAgICAgICBjb250ZXh0LT5m
dW5jdGlvblJldHVybnNWYWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChjb250ZXh0LT5jdXJyZW50
RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDMpXS5sZXgpLmxpbmUsICJ2b2lkIGZ1bmN0aW9u
IGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgInZvaWQgZnVuY3Rpb24gY2Fubm90IHJldHVybiBh
IHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICB9IGVsc2UgaWYgKCooY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZSkgIT0gKHl5dnNw
WygyKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSkgewotICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0ubGV4KS5saW5lLCAiZnVuY3Rp
b24gcmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4iKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgImZ1bmN0aW9uIHJldHVybiBpcyBu
b3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk1OgorICBj
YXNlIDE5NjoKIAogICAgIHsKLSAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgKHl5dnNwWygx
KSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgKHl5dnNwWygxKSAtICgy
KV0ubGV4KS5saW5lKTsKKyAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgKHl5bHNwWygxKSAt
ICgyKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk2OgorICBjYXNlIDE5NzoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1Ob2RlKTsKQEAgLTQ0OTAsMjkgKzQ1MTcsMjkgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAg
ICBicmVhazsKIAotICBjYXNlIDE5NzoKKyAgY2FzZSAxOTg6CiAKICAgICB7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3Jl
Z2F0ZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMikgLSAo
MildLmludGVybS5pbnRlcm1Ob2RlKSwgMCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0g
KDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1O
b2RlKSwgKHl5bG9jKSk7CiAgICAgICAgIGNvbnRleHQtPnRyZWVSb290ID0gKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk4OgorICBjYXNl
IDE5OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTk5OgorICBjYXNlIDIwMDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjAwOgorICBjYXNlIDIwMToKIAogICAgIHsKICAgICAg
ICAgVEZ1bmN0aW9uKiBmdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuZnVuY3Rp
b247CkBAIC00NTIxLDcgKzQ1NDgsNyBAQCB5eXJlZHVjZToKICAgICAgICAgCiAgICAgICAgIGlm
IChidWlsdEluKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICJidWlsdC1pbiBmdW5jdGlvbnMgY2Fubm90IGJlIHJl
ZGVmaW5lZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJidWlsdC1pbiBmdW5jdGlvbnMgY2Fubm90
IGJlIHJlZGVmaW5lZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NTM1LDcgKzQ1
NjIsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBUaGVuIHRo
aXMgZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5LgogICAgICAgICAgICAgLy8KLSAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgImZ1bmN0
aW9uIGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJmdW5jdGlvbiBh
bHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIHByZXZEZWMtPnNl
dERlZmluZWQoKTsKQEAgLTQ1NDUsMTEgKzQ1NzIsMTEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8v
CiAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0TmFtZSgpID09ICJtYWluIikgewogICAgICAgICAg
ICAgaWYgKGZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCAiZnVuY3Rpb24g
Y2Fubm90IHRha2UgYW55IHBhcmFtZXRlcihzKSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIo
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAi
ZnVuY3Rpb24gY2Fubm90IHRha2UgYW55IHBhcmFtZXRlcihzKSIsIGZ1bmN0aW9uLT5nZXROYW1l
KCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFz
aWNUeXBlKCkgIT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBl
KCkuZ2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVl
Iik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAi
IiwgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpLCAibWFpbiBmdW5j
dGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ1NzcsNyArNDYwNCw3IEBA
IHl5cmVkdWNlOgogICAgICAgICAgICAgICAgIC8vIEluc2VydCB0aGUgcGFyYW1ldGVycyB3aXRo
IG5hbWUgaW4gdGhlIHN5bWJvbCB0YWJsZS4KICAgICAgICAgICAgICAgICAvLwogICAgICAgICAg
ICAgICAgIGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgqdmFyaWFibGUpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVy
bSkubGluZSwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgInJl
ZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHZh
cmlhYmxlOwogICAgICAgICAgICAgICAgIH0KQEAgLTQ1ODgsMzEgKzQ2MTUsMzIgQEAgeXlyZWR1
Y2U6CiAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5n
cm93QWdncmVnYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbU5vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlx
dWVJZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5n
ZXROYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoeXlsc3BbKDEpIC0gKDEpXSkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bSkubGluZSksICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAg
ICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHBhcmFt
Tm9kZXMsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBl
LCAoeXlsc3BbKDEpIC0gKDEpXSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVP
cGVyYXRvcihwYXJhbU5vZGVzLCBFT3BQYXJhbWV0ZXJzLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0pLmxpbmUpOworICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3Bl
cmF0b3IocGFyYW1Ob2RlcywgRU9wUGFyYW1ldGVycywgKHl5bHNwWygxKSAtICgxKV0pKTsKICAg
ICAgICAgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBwYXJhbU5v
ZGVzOwogICAgICAgICBjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsID0gMDsKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMjAxOgorICBjYXNlIDIwMjoKIAogICAgIHsKICAgICAgICAgLy8/
PyBDaGVjayB0aGF0IGFsbCBwYXRocyByZXR1cm4gYSB2YWx1ZSBpZiByZXR1cm4gdHlwZSAhPSB2
b2lkID8KICAgICAgICAgLy8gICBNYXkgYmUgYmVzdCBkb25lIGFzIHBvc3QgcHJvY2VzcyBwaGFz
ZSBvbiBpbnRlcm1lZGlhdGUgY29kZQogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0
aW9uVHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCAmJiAhIGNvbnRleHQtPmZ1bmN0aW9u
UmV0dXJuc1ZhbHVlKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0pLmxpbmUsICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAi
IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgzKV0pLCAiZnVuY3Rp
b24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWU6IiwgIiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bSkuZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkg
LSAoMyldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtTm9kZSksIDApOwotICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVn
YXRlT3BlcmF0b3IoKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSwgRU9wRnVuY3Rpb24sICh5eXZz
cFsoMSkgLSAoMyldLmludGVybSkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybU5vZGUpLCAoeXlsb2MpKTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFn
Z3JlZ2F0ZU9wZXJhdG9yKCh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSksIEVPcEZ1bmN0aW9uLCAo
eXlsc3BbKDEpIC0gKDMpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5n
ZXRBc0FnZ3JlZ2F0ZSgpLT5zZXROYW1lKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rp
b24tPmdldE1hbmdsZWROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtKS5mdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpKTsKIApAQCAtNDYyMSw5ICs0NjQ5LDYgQEAg
eXlyZWR1Y2U6CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVn
YXRlKCktPnNldE9wdGltaXplKGNvbnRleHQtPnByYWdtYSgpLm9wdGltaXplKTsKICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RGVidWcoY29u
dGV4dC0+cHJhZ21hKCkuZGVidWcpOwogCi0gICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtTm9kZSkgJiYgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUp
LT5nZXRBc0FnZ3JlZ2F0ZSgpKQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KS0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RW5kTGluZSgoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPmdldEVuZExpbmUoKSk7Ci0KICAgICAgICAg
Y29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgO30KICAgICBicmVhazsKQEAgLTQ2NDAs
NyArNDY2NSw3IEBAIHl5cmVkdWNlOgogICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwog
CiAgICorK3l5dnNwID0geXl2YWw7Ci0KKyAgKisreXlsc3AgPSB5eWxvYzsKIAogICAvKiBOb3cg
YHNoaWZ0JyB0aGUgcmVzdWx0IG9mIHRoZSByZWR1Y3Rpb24uICBEZXRlcm1pbmUgd2hhdCBzdGF0
ZQogICAgICB0aGF0IGdvZXMgdG8sIGJhc2VkIG9uIHRoZSBzdGF0ZSB3ZSBwb3BwZWQgYmFjayB0
byBhbmQgdGhlIHJ1bGUKQEAgLTQ2NjYsNyArNDY5MSw3IEBAIHl5ZXJybGFiOgogICAgIHsKICAg
ICAgICsreXluZXJyczsKICNpZiAhIFlZRVJST1JfVkVSQk9TRQotICAgICAgeXllcnJvciAoY29u
dGV4dCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CisgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250
ZXh0LCBZWV8oInN5bnRheCBlcnJvciIpKTsKICNlbHNlCiAgICAgICB7CiAJWVlTSVpFX1QgeXlz
aXplID0geXlzeW50YXhfZXJyb3IgKDAsIHl5c3RhdGUsIHl5Y2hhcik7CkBAIC00NjkwLDExICs0
NzE1LDExIEBAIHl5ZXJybGFiOgogCWlmICgwIDwgeXlzaXplICYmIHl5c2l6ZSA8PSB5eW1zZ19h
bGxvYykKIAkgIHsKIAkgICAgKHZvaWQpIHl5c3ludGF4X2Vycm9yICh5eW1zZywgeXlzdGF0ZSwg
eXljaGFyKTsKLQkgICAgeXllcnJvciAoY29udGV4dCwgeXltc2cpOworCSAgICB5eWVycm9yICgm
eXlsbG9jLCBjb250ZXh0LCB5eW1zZyk7CiAJICB9CiAJZWxzZQogCSAgewotCSAgICB5eWVycm9y
IChjb250ZXh0LCBZWV8oInN5bnRheCBlcnJvciIpKTsKKwkgICAgeXllcnJvciAoJnl5bGxvYywg
Y29udGV4dCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CiAJICAgIGlmICh5eXNpemUgIT0gMCkKIAkg
ICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwogCSAgfQpAQCAtNDcwMiw3ICs0NzI3LDcgQEAgeXll
cnJsYWI6CiAjZW5kaWYKICAgICB9CiAKLQorICB5eWVycm9yX3JhbmdlWzBdID0geXlsbG9jOwog
CiAgIGlmICh5eWVycnN0YXR1cyA9PSAzKQogICAgIHsKQEAgLTQ3MTgsNyArNDc0Myw3IEBAIHl5
ZXJybGFiOgogICAgICAgZWxzZQogCXsKIAkgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogZGlzY2FyZGlu
ZyIsCi0JCSAgICAgIHl5dG9rZW4sICZ5eWx2YWwsIGNvbnRleHQpOworCQkgICAgICB5eXRva2Vu
LCAmeXlsdmFsLCAmeXlsbG9jLCBjb250ZXh0KTsKIAkgIHl5Y2hhciA9IFlZRU1QVFk7CiAJfQog
ICAgIH0KQEAgLTQ3MzksNiArNDc2NCw3IEBAIHl5ZXJyb3JsYWI6CiAgIGlmICgvKkNPTlNUQ09O
RCovIDApCiAgICAgIGdvdG8geXllcnJvcmxhYjsKIAorICB5eWVycm9yX3JhbmdlWzBdID0geXls
c3BbMS15eWxlbl07CiAgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxl
IHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKICAgICAgdGhpcyBZWUVSUk9SLiAgKi8KICAgWVlQT1BT
VEFDSyAoeXlsZW4pOwpAQCAtNDc3Miw5ICs0Nzk4LDkgQEAgeXllcnJsYWIxOgogICAgICAgaWYg
KHl5c3NwID09IHl5c3MpCiAJWVlBQk9SVDsKIAotCisgICAgICB5eWVycm9yX3JhbmdlWzBdID0g
Knl5bHNwOwogICAgICAgeXlkZXN0cnVjdCAoIkVycm9yOiBwb3BwaW5nIiwKLQkJICB5eXN0b3Nb
eXlzdGF0ZV0sIHl5dnNwLCBjb250ZXh0KTsKKwkJICB5eXN0b3NbeXlzdGF0ZV0sIHl5dnNwLCB5
eWxzcCwgY29udGV4dCk7CiAgICAgICBZWVBPUFNUQUNLICgxKTsKICAgICAgIHl5c3RhdGUgPSAq
eXlzc3A7CiAgICAgICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwpAQCAtNDc4NSw2ICs0
ODExLDExIEBAIHl5ZXJybGFiMToKIAogICAqKyt5eXZzcCA9IHl5bHZhbDsKIAorICB5eWVycm9y
X3JhbmdlWzFdID0geXlsbG9jOworICAvKiBVc2luZyBZWUxMT0MgaXMgdGVtcHRpbmcsIGJ1dCB3
b3VsZCBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mCisgICAgIHRoZSBsb29rLWFoZWFkLiAgWVlMT0Mg
aXMgYXZhaWxhYmxlIHRob3VnaC4gICovCisgIFlZTExPQ19ERUZBVUxUICh5eWxvYywgKHl5ZXJy
b3JfcmFuZ2UgLSAxKSwgMik7CisgICorK3l5bHNwID0geXlsb2M7CiAKICAgLyogU2hpZnQgdGhl
IGVycm9yIHRva2VuLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXN0b3Nb
eXluXSwgeXl2c3AsIHl5bHNwKTsKQEAgLTQ4MTIsNyArNDg0Myw3IEBAIHl5YWJvcnRsYWI6CiB8
IHl5ZXhoYXVzdGVkbGFiIC0tIG1lbW9yeSBleGhhdXN0aW9uIGNvbWVzIGhlcmUuICB8CiBgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiB5eWV4aGF1
c3RlZGxhYjoKLSAgeXllcnJvciAoY29udGV4dCwgWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOwor
ICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSk7CiAg
IHl5cmVzdWx0ID0gMjsKICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KICNlbmRpZgpAQCAtNDgyMCw3
ICs0ODUxLDcgQEAgeXlleGhhdXN0ZWRsYWI6CiB5eXJldHVybjoKICAgaWYgKHl5Y2hhciAhPSBZ
WUVPRiAmJiB5eWNoYXIgIT0gWVlFTVBUWSkKICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IGRp
c2NhcmRpbmcgbG9va2FoZWFkIiwKLQkJIHl5dG9rZW4sICZ5eWx2YWwsIGNvbnRleHQpOworCQkg
eXl0b2tlbiwgJnl5bHZhbCwgJnl5bGxvYywgY29udGV4dCk7CiAgIC8qIERvIG5vdCByZWNsYWlt
IHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKICAgICAgdGhp
cyBZWUFCT1JUIG9yIFlZQUNDRVBULiAgKi8KICAgWVlQT1BTVEFDSyAoeXlsZW4pOwpAQCAtNDgy
OCw3ICs0ODU5LDcgQEAgeXlyZXR1cm46CiAgIHdoaWxlICh5eXNzcCAhPSB5eXNzKQogICAgIHsK
ICAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBwb3BwaW5nIiwKLQkJICB5eXN0b3NbKnl5c3Nw
XSwgeXl2c3AsIGNvbnRleHQpOworCQkgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwgeXlsc3AsIGNv
bnRleHQpOwogICAgICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgfQogI2lmbmRlZiB5eW92ZXJmbG93
CkBAIC00ODQ3LDYgKzQ4NzgsMTEgQEAgeXlyZXR1cm46CiAKIAogCit2b2lkIHl5ZXJyb3IoWVlM
VFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24p
IHsKKyAgICBjb250ZXh0LT5lcnJvcigqeXlsbG9jLCByZWFzb24sICIiKTsKKyAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Cit9CisKIGludCBnbHNsYW5nX3BhcnNlKFRQYXJzZUNvbnRleHQqIGNvbnRl
eHQpIHsKICAgICByZXR1cm4geXlwYXJzZShjb250ZXh0KTsKIH0KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oCShyZXZpc2lv
biAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFu
Z190YWIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTEgQEAKICAgIFRoaXMgc3BlY2lh
bCBleGNlcHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4K
ICAgIHZlcnNpb24gMi4yIG9mIEJpc29uLiAgKi8KIAorLy8gVGhlc2Ugd2VyZSBwdXQgaGVyZSB3
aXRoICVjb2RlIHJlcXVpcmVzLCB3aGljaCBvdXIgdmVyc2lvbiBvZiBCaXNvbiBkb2VzIG5vdCBz
dXBwb3J0LAorLy8gc28gSSBwdXQgdGhlbSBoZXJlIG1hbnVhbGx5LgorI2RlZmluZSBZWUxUWVBF
IFRTb3VyY2VMb2MKKyNkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisKIC8qIFRva2Vucy4g
ICovCiAjaWZuZGVmIFlZVE9LRU5UWVBFCiAjIGRlZmluZSBZWVRPS0VOVFlQRQpAQCAtODYsNTIg
KzkxLDUxIEBACiAgICAgIEZMT0FUQ09OU1RBTlQgPSAzMDIsCiAgICAgIElOVENPTlNUQU5UID0g
MzAzLAogICAgICBCT09MQ09OU1RBTlQgPSAzMDQsCi0gICAgIEZJRUxEX1NFTEVDVElPTiA9IDMw
NSwKLSAgICAgTEVGVF9PUCA9IDMwNiwKLSAgICAgUklHSFRfT1AgPSAzMDcsCi0gICAgIElOQ19P
UCA9IDMwOCwKLSAgICAgREVDX09QID0gMzA5LAotICAgICBMRV9PUCA9IDMxMCwKLSAgICAgR0Vf
T1AgPSAzMTEsCi0gICAgIEVRX09QID0gMzEyLAotICAgICBORV9PUCA9IDMxMywKLSAgICAgQU5E
X09QID0gMzE0LAotICAgICBPUl9PUCA9IDMxNSwKLSAgICAgWE9SX09QID0gMzE2LAotICAgICBN
VUxfQVNTSUdOID0gMzE3LAotICAgICBESVZfQVNTSUdOID0gMzE4LAotICAgICBBRERfQVNTSUdO
ID0gMzE5LAotICAgICBNT0RfQVNTSUdOID0gMzIwLAotICAgICBMRUZUX0FTU0lHTiA9IDMyMSwK
LSAgICAgUklHSFRfQVNTSUdOID0gMzIyLAotICAgICBBTkRfQVNTSUdOID0gMzIzLAotICAgICBY
T1JfQVNTSUdOID0gMzI0LAotICAgICBPUl9BU1NJR04gPSAzMjUsCi0gICAgIFNVQl9BU1NJR04g
PSAzMjYsCi0gICAgIExFRlRfUEFSRU4gPSAzMjcsCi0gICAgIFJJR0hUX1BBUkVOID0gMzI4LAot
ICAgICBMRUZUX0JSQUNLRVQgPSAzMjksCi0gICAgIFJJR0hUX0JSQUNLRVQgPSAzMzAsCi0gICAg
IExFRlRfQlJBQ0UgPSAzMzEsCi0gICAgIFJJR0hUX0JSQUNFID0gMzMyLAotICAgICBET1QgPSAz
MzMsCi0gICAgIENPTU1BID0gMzM0LAotICAgICBDT0xPTiA9IDMzNSwKLSAgICAgRVFVQUwgPSAz
MzYsCi0gICAgIFNFTUlDT0xPTiA9IDMzNywKLSAgICAgQkFORyA9IDMzOCwKLSAgICAgREFTSCA9
IDMzOSwKLSAgICAgVElMREUgPSAzNDAsCi0gICAgIFBMVVMgPSAzNDEsCi0gICAgIFNUQVIgPSAz
NDIsCi0gICAgIFNMQVNIID0gMzQzLAotICAgICBQRVJDRU5UID0gMzQ0LAotICAgICBMRUZUX0FO
R0xFID0gMzQ1LAotICAgICBSSUdIVF9BTkdMRSA9IDM0NiwKLSAgICAgVkVSVElDQUxfQkFSID0g
MzQ3LAotICAgICBDQVJFVCA9IDM0OCwKLSAgICAgQU1QRVJTQU5EID0gMzQ5LAotICAgICBRVUVT
VElPTiA9IDM1MAorICAgICBMRUZUX09QID0gMzA1LAorICAgICBSSUdIVF9PUCA9IDMwNiwKKyAg
ICAgSU5DX09QID0gMzA3LAorICAgICBERUNfT1AgPSAzMDgsCisgICAgIExFX09QID0gMzA5LAor
ICAgICBHRV9PUCA9IDMxMCwKKyAgICAgRVFfT1AgPSAzMTEsCisgICAgIE5FX09QID0gMzEyLAor
ICAgICBBTkRfT1AgPSAzMTMsCisgICAgIE9SX09QID0gMzE0LAorICAgICBYT1JfT1AgPSAzMTUs
CisgICAgIE1VTF9BU1NJR04gPSAzMTYsCisgICAgIERJVl9BU1NJR04gPSAzMTcsCisgICAgIEFE
RF9BU1NJR04gPSAzMTgsCisgICAgIE1PRF9BU1NJR04gPSAzMTksCisgICAgIExFRlRfQVNTSUdO
ID0gMzIwLAorICAgICBSSUdIVF9BU1NJR04gPSAzMjEsCisgICAgIEFORF9BU1NJR04gPSAzMjIs
CisgICAgIFhPUl9BU1NJR04gPSAzMjMsCisgICAgIE9SX0FTU0lHTiA9IDMyNCwKKyAgICAgU1VC
X0FTU0lHTiA9IDMyNSwKKyAgICAgTEVGVF9QQVJFTiA9IDMyNiwKKyAgICAgUklHSFRfUEFSRU4g
PSAzMjcsCisgICAgIExFRlRfQlJBQ0tFVCA9IDMyOCwKKyAgICAgUklHSFRfQlJBQ0tFVCA9IDMy
OSwKKyAgICAgTEVGVF9CUkFDRSA9IDMzMCwKKyAgICAgUklHSFRfQlJBQ0UgPSAzMzEsCisgICAg
IERPVCA9IDMzMiwKKyAgICAgQ09NTUEgPSAzMzMsCisgICAgIENPTE9OID0gMzM0LAorICAgICBF
UVVBTCA9IDMzNSwKKyAgICAgU0VNSUNPTE9OID0gMzM2LAorICAgICBCQU5HID0gMzM3LAorICAg
ICBEQVNIID0gMzM4LAorICAgICBUSUxERSA9IDMzOSwKKyAgICAgUExVUyA9IDM0MCwKKyAgICAg
U1RBUiA9IDM0MSwKKyAgICAgU0xBU0ggPSAzNDIsCisgICAgIFBFUkNFTlQgPSAzNDMsCisgICAg
IExFRlRfQU5HTEUgPSAzNDQsCisgICAgIFJJR0hUX0FOR0xFID0gMzQ1LAorICAgICBWRVJUSUNB
TF9CQVIgPSAzNDYsCisgICAgIENBUkVUID0gMzQ3LAorICAgICBBTVBFUlNBTkQgPSAzNDgsCisg
ICAgIFFVRVNUSU9OID0gMzQ5CiAgICB9OwogI2VuZGlmCiAvKiBUb2tlbnMuICAqLwpAQCAtMTgy
LDUyICsxODYsNTEgQEAKICNkZWZpbmUgRkxPQVRDT05TVEFOVCAzMDIKICNkZWZpbmUgSU5UQ09O
U1RBTlQgMzAzCiAjZGVmaW5lIEJPT0xDT05TVEFOVCAzMDQKLSNkZWZpbmUgRklFTERfU0VMRUNU
SU9OIDMwNQotI2RlZmluZSBMRUZUX09QIDMwNgotI2RlZmluZSBSSUdIVF9PUCAzMDcKLSNkZWZp
bmUgSU5DX09QIDMwOAotI2RlZmluZSBERUNfT1AgMzA5Ci0jZGVmaW5lIExFX09QIDMxMAotI2Rl
ZmluZSBHRV9PUCAzMTEKLSNkZWZpbmUgRVFfT1AgMzEyCi0jZGVmaW5lIE5FX09QIDMxMwotI2Rl
ZmluZSBBTkRfT1AgMzE0Ci0jZGVmaW5lIE9SX09QIDMxNQotI2RlZmluZSBYT1JfT1AgMzE2Ci0j
ZGVmaW5lIE1VTF9BU1NJR04gMzE3Ci0jZGVmaW5lIERJVl9BU1NJR04gMzE4Ci0jZGVmaW5lIEFE
RF9BU1NJR04gMzE5Ci0jZGVmaW5lIE1PRF9BU1NJR04gMzIwCi0jZGVmaW5lIExFRlRfQVNTSUdO
IDMyMQotI2RlZmluZSBSSUdIVF9BU1NJR04gMzIyCi0jZGVmaW5lIEFORF9BU1NJR04gMzIzCi0j
ZGVmaW5lIFhPUl9BU1NJR04gMzI0Ci0jZGVmaW5lIE9SX0FTU0lHTiAzMjUKLSNkZWZpbmUgU1VC
X0FTU0lHTiAzMjYKLSNkZWZpbmUgTEVGVF9QQVJFTiAzMjcKLSNkZWZpbmUgUklHSFRfUEFSRU4g
MzI4Ci0jZGVmaW5lIExFRlRfQlJBQ0tFVCAzMjkKLSNkZWZpbmUgUklHSFRfQlJBQ0tFVCAzMzAK
LSNkZWZpbmUgTEVGVF9CUkFDRSAzMzEKLSNkZWZpbmUgUklHSFRfQlJBQ0UgMzMyCi0jZGVmaW5l
IERPVCAzMzMKLSNkZWZpbmUgQ09NTUEgMzM0Ci0jZGVmaW5lIENPTE9OIDMzNQotI2RlZmluZSBF
UVVBTCAzMzYKLSNkZWZpbmUgU0VNSUNPTE9OIDMzNwotI2RlZmluZSBCQU5HIDMzOAotI2RlZmlu
ZSBEQVNIIDMzOQotI2RlZmluZSBUSUxERSAzNDAKLSNkZWZpbmUgUExVUyAzNDEKLSNkZWZpbmUg
U1RBUiAzNDIKLSNkZWZpbmUgU0xBU0ggMzQzCi0jZGVmaW5lIFBFUkNFTlQgMzQ0Ci0jZGVmaW5l
IExFRlRfQU5HTEUgMzQ1Ci0jZGVmaW5lIFJJR0hUX0FOR0xFIDM0NgotI2RlZmluZSBWRVJUSUNB
TF9CQVIgMzQ3Ci0jZGVmaW5lIENBUkVUIDM0OAotI2RlZmluZSBBTVBFUlNBTkQgMzQ5Ci0jZGVm
aW5lIFFVRVNUSU9OIDM1MAorI2RlZmluZSBMRUZUX09QIDMwNQorI2RlZmluZSBSSUdIVF9PUCAz
MDYKKyNkZWZpbmUgSU5DX09QIDMwNworI2RlZmluZSBERUNfT1AgMzA4CisjZGVmaW5lIExFX09Q
IDMwOQorI2RlZmluZSBHRV9PUCAzMTAKKyNkZWZpbmUgRVFfT1AgMzExCisjZGVmaW5lIE5FX09Q
IDMxMgorI2RlZmluZSBBTkRfT1AgMzEzCisjZGVmaW5lIE9SX09QIDMxNAorI2RlZmluZSBYT1Jf
T1AgMzE1CisjZGVmaW5lIE1VTF9BU1NJR04gMzE2CisjZGVmaW5lIERJVl9BU1NJR04gMzE3Cisj
ZGVmaW5lIEFERF9BU1NJR04gMzE4CisjZGVmaW5lIE1PRF9BU1NJR04gMzE5CisjZGVmaW5lIExF
RlRfQVNTSUdOIDMyMAorI2RlZmluZSBSSUdIVF9BU1NJR04gMzIxCisjZGVmaW5lIEFORF9BU1NJ
R04gMzIyCisjZGVmaW5lIFhPUl9BU1NJR04gMzIzCisjZGVmaW5lIE9SX0FTU0lHTiAzMjQKKyNk
ZWZpbmUgU1VCX0FTU0lHTiAzMjUKKyNkZWZpbmUgTEVGVF9QQVJFTiAzMjYKKyNkZWZpbmUgUklH
SFRfUEFSRU4gMzI3CisjZGVmaW5lIExFRlRfQlJBQ0tFVCAzMjgKKyNkZWZpbmUgUklHSFRfQlJB
Q0tFVCAzMjkKKyNkZWZpbmUgTEVGVF9CUkFDRSAzMzAKKyNkZWZpbmUgUklHSFRfQlJBQ0UgMzMx
CisjZGVmaW5lIERPVCAzMzIKKyNkZWZpbmUgQ09NTUEgMzMzCisjZGVmaW5lIENPTE9OIDMzNAor
I2RlZmluZSBFUVVBTCAzMzUKKyNkZWZpbmUgU0VNSUNPTE9OIDMzNgorI2RlZmluZSBCQU5HIDMz
NworI2RlZmluZSBEQVNIIDMzOAorI2RlZmluZSBUSUxERSAzMzkKKyNkZWZpbmUgUExVUyAzNDAK
KyNkZWZpbmUgU1RBUiAzNDEKKyNkZWZpbmUgU0xBU0ggMzQyCisjZGVmaW5lIFBFUkNFTlQgMzQz
CisjZGVmaW5lIExFRlRfQU5HTEUgMzQ0CisjZGVmaW5lIFJJR0hUX0FOR0xFIDM0NQorI2RlZmlu
ZSBWRVJUSUNBTF9CQVIgMzQ2CisjZGVmaW5lIENBUkVUIDM0NworI2RlZmluZSBBTVBFUlNBTkQg
MzQ4CisjZGVmaW5lIFFVRVNUSU9OIDM0OQogCiAKIApAQCAtMjM3LDcgKzI0MCw2IEBAIHR5cGVk
ZWYgdW5pb24gWVlTVFlQRQogCiB7CiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBs
aW5lOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUU3RyaW5nICpzdHJpbmc7CiAgICAg
ICAgICAgICBmbG9hdCBmOwpAQCAtMjQ3LDcgKzI0OSw2IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQ
RQogICAgICAgICBUU3ltYm9sKiBzeW1ib2w7CiAgICAgfSBsZXg7CiAgICAgc3RydWN0IHsKLSAg
ICAgICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAgICBUT3BlcmF0b3Igb3A7CiAgICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwpAQCAtMjYxLDggKzI2
Miw4IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICAgICAgVFF1YWxpZmllciBxdWFs
aWZpZXI7CiAgICAgICAgICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uOwogICAgICAgICAgICAgVFBh
cmFtZXRlciBwYXJhbTsKLSAgICAgICAgICAgIFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAg
ICAgIFRUeXBlTGlzdCogdHlwZUxpc3Q7CisgICAgICAgICAgICBURmllbGQqIGZpZWxkOworICAg
ICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJt
OwogfQpAQCAtMjc2LDMgKzI3NywxNyBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKIAogCiAKKyNp
ZiAhIGRlZmluZWQgWVlMVFlQRSAmJiAhIGRlZmluZWQgWVlMVFlQRV9JU19ERUNMQVJFRAordHlw
ZWRlZiBzdHJ1Y3QgWVlMVFlQRQoreworICBpbnQgZmlyc3RfbGluZTsKKyAgaW50IGZpcnN0X2Nv
bHVtbjsKKyAgaW50IGxhc3RfbGluZTsKKyAgaW50IGxhc3RfY29sdW1uOworfSBZWUxUWVBFOwor
IyBkZWZpbmUgeXlsdHlwZSBZWUxUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3
biAqLworIyBkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisjIGRlZmluZSBZWUxUWVBFX0lT
X1RSSVZJQUwgMQorI2VuZGlmCisKKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL2ludGVybU91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybU91dC5jcHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODksNyArMTg5LDkgQEAgYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdFVu
YXJ5KFZpc2l0IAogICAgICAgICBjYXNlIEVPcEFueTogICAgICAgICAgICBvdXQgPDwgImFueSI7
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRU9wQWxsOiAgICAgICAgICAg
IG91dCA8PCAiYWxsIjsgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBkZWZhdWx0
OiBvdXQubWVzc2FnZShFUHJlZml4RXJyb3IsICJCYWQgdW5hcnkgb3AiKTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIG91dC5wcmVmaXgoRVByZWZpeEVycm9yKTsKKyAgICAgICAgICAg
IG91dCA8PCAiQmFkIHVuYXJ5IG9wIjsKICAgICB9CiAKICAgICBvdXQgPDwgIiAoIiA8PCBub2Rl
LT5nZXRDb21wbGV0ZVN0cmluZygpIDw8ICIpIjsKQEAgLTIwNCw3ICsyMDYsOCBAQCBib29sIFRP
dXRwdXRUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpCiAgICAgVEluZm9TaW5rQmFzZSYgb3V0
ID0gc2luazsKIAogICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcE51bGwpIHsKLSAgICAgICAg
b3V0Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCAibm9kZSBpcyBzdGlsbCBFT3BOdWxsISIpOworICAg
ICAgICBvdXQucHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgIG91dCA8PCAibm9kZSBpcyBz
dGlsbCBFT3BOdWxsISI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjYzLDcg
KzI2Niw5IEBAIGJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmkKIAogICAg
ICAgICBjYXNlIEVPcERlY2xhcmF0aW9uOiAgIG91dCA8PCAiRGVjbGFyYXRpb246ICI7ICAgYnJl
YWs7CiAKLSAgICAgICAgZGVmYXVsdDogb3V0Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiQmFkIGFn
Z3JlZ2F0aW9uIG9wIik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBvdXQucHJlZml4
KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICBvdXQgPDwgIkJhZCBhZ2dyZWdhdGlvbiBvcCI7
CiAgICAgfQogCiAgICAgaWYgKG5vZGUtPmdldE9wKCkgIT0gRU9wU2VxdWVuY2UgJiYgbm9kZS0+
Z2V0T3AoKSAhPSBFT3BQYXJhbWV0ZXJzKQpAQCAtMzExLDkgKzMxNiw5IEBAIHZvaWQgVE91dHB1
dFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW8KIHsKICAgICBUSW5mb1NpbmtCYXNlJiBvdXQg
PSBzaW5rOwogCi0gICAgaW50IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgp
OworICAgIHNpemVfdCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKIAot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgT3V0cHV0VHJlZVRleHQob3V0LCBub2RlLCBk
ZXB0aCk7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVtpXS5n
ZXRUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKQEAgLTMzNCw3ICszMzksNyBA
QCB2b2lkIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvCiAgICAgICAgICAgICAg
ICAgb3V0IDw8ICIgKGNvbnN0IGludClcbiI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIG91dC5tZXNzYWdlKEVQcmVmaXhJbnRl
cm5hbEVycm9yLCAiVW5rbm93biBjb25zdGFudCIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAg
ICAgICAgICAgb3V0Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUo
KSwgIlVua25vd24gY29uc3RhbnQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRl
cm1lZGlhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvaW50ZXJtZWRpYXRlLmgJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1lZGlhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTgs
NiArMTgsNyBAQAogCiAjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCiAKKyNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSAiY29tcGlsZXIvQ29tbW9uLmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvVHlwZXMuaCIKICNpbmNsdWRlICJjb21waWxlci9Db25zdGFudFVuaW9uLmgiCkBAIC0y
MDYsMTAgKzIwNywxNiBAQCBjbGFzcyBUSW50ZXJtTm9kZSB7CiBwdWJsaWM6CiAgICAgUE9PTF9B
TExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKQogCi0gICAgVEludGVybU5v
ZGUoKSA6IGxpbmUoMCkge30KKyAgICBUSW50ZXJtTm9kZSgpIHsKKyAgICAgICAgLy8gVE9ETzog
TW92ZSB0aGlzIHRvIFRTb3VyY2VMb2MgY29uc3RydWN0b3IKKyAgICAgICAgLy8gYWZ0ZXIgZ2V0
dGluZyByaWQgb2YgVFB1YmxpY1R5cGUuCisgICAgICAgIGxpbmUuZmlyc3RfZmlsZSA9IGxpbmUu
bGFzdF9maWxlID0gMDsKKyAgICAgICAgbGluZS5maXJzdF9saW5lID0gbGluZS5sYXN0X2xpbmUg
PSAwOworICAgIH0KKyAgICB2aXJ0dWFsIH5USW50ZXJtTm9kZSgpIHsgfQogCi0gICAgVFNvdXJj
ZUxvYyBnZXRMaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZTsgfQotICAgIHZvaWQgc2V0TGluZShU
U291cmNlTG9jIGwpIHsgbGluZSA9IGw7IH0KKyAgICBjb25zdCBUU291cmNlTG9jJiBnZXRMaW5l
KCkgY29uc3QgeyByZXR1cm4gbGluZTsgfQorICAgIHZvaWQgc2V0TGluZShjb25zdCBUU291cmNl
TG9jJiBsKSB7IGxpbmUgPSBsOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2UoVEludGVy
bVRyYXZlcnNlciopID0gMDsKICAgICB2aXJ0dWFsIFRJbnRlcm1UeXBlZCogZ2V0QXNUeXBlZCgp
IHsgcmV0dXJuIDA7IH0KQEAgLTIyMCw3ICsyMjcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBU
SW50ZXJtU2VsZWN0aW9uKiBnZXRBc1NlbGVjdGlvbk5vZGUoKSB7IHJldHVybiAwOyB9CiAgICAg
dmlydHVhbCBUSW50ZXJtU3ltYm9sKiBnZXRBc1N5bWJvbE5vZGUoKSB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCBUSW50ZXJtTG9vcCogZ2V0QXNMb29wTm9kZSgpIHsgcmV0dXJuIDA7IH0KLSAg
ICB2aXJ0dWFsIH5USW50ZXJtTm9kZSgpIHsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgVFNvdXJjZUxv
YyBsaW5lOwpAQCAtMzU4LDcgKzM2NCwxMCBAQCBwdWJsaWM6CiAgICAgVEludGVybUNvbnN0YW50
VW5pb24oQ29uc3RhbnRVbmlvbiAqdW5pb25Qb2ludGVyLCBjb25zdCBUVHlwZSYgdCkgOiBUSW50
ZXJtVHlwZWQodCksIHVuaW9uQXJyYXlQb2ludGVyKHVuaW9uUG9pbnRlcikgeyB9CiAKICAgICBD
b25zdGFudFVuaW9uKiBnZXRVbmlvbkFycmF5UG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIHVuaW9u
QXJyYXlQb2ludGVyOyB9Ci0gICAgdm9pZCBzZXRVbmlvbkFycmF5UG9pbnRlcihDb25zdGFudFVu
aW9uICpjKSB7IHVuaW9uQXJyYXlQb2ludGVyID0gYzsgfQorICAgIAorICAgIGludCBnZXRJQ29u
c3QoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRlciA/IHVuaW9uQXJy
YXlQb2ludGVyW2luZGV4XS5nZXRJQ29uc3QoKSA6IDA7IH0KKyAgICBmbG9hdCBnZXRGQ29uc3Qo
aW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRlciA/IHVuaW9uQXJyYXlQ
b2ludGVyW2luZGV4XS5nZXRGQ29uc3QoKSA6IDAuMGY7IH0KKyAgICBib29sIGdldEJDb25zdChp
bnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVyID8gdW5pb25BcnJheVBv
aW50ZXJbaW5kZXhdLmdldEJDb25zdCgpIDogZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgVEludGVy
bUNvbnN0YW50VW5pb24qIGdldEFzQ29uc3RhbnRVbmlvbigpICB7IHJldHVybiB0aGlzOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqKTsKQEAgLTQ0Nyw3ICs0
NTYsNyBAQCB0eXBlZGVmIFRWZWN0b3I8aW50PiBUUXVhbGlmaWVyTGlzdDsKIC8vCiBjbGFzcyBU
SW50ZXJtQWdncmVnYXRlIDogcHVibGljIFRJbnRlcm1PcGVyYXRvciB7CiBwdWJsaWM6Ci0gICAg
VEludGVybUFnZ3JlZ2F0ZSgpIDogVEludGVybU9wZXJhdG9yKEVPcE51bGwpLCB1c2VyRGVmaW5l
ZChmYWxzZSksIGVuZExpbmUoMCksIHVzZUVtdWxhdGVkRnVuY3Rpb24oZmFsc2UpIHsgfQorICAg
IFRJbnRlcm1BZ2dyZWdhdGUoKSA6IFRJbnRlcm1PcGVyYXRvcihFT3BOdWxsKSwgdXNlckRlZmlu
ZWQoZmFsc2UpLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKGZhbHNlKSB7IH0KICAgICBUSW50ZXJtQWdn
cmVnYXRlKFRPcGVyYXRvciBvKSA6IFRJbnRlcm1PcGVyYXRvcihvKSwgdXNlRW11bGF0ZWRGdW5j
dGlvbihmYWxzZSkgeyB9CiAgICAgflRJbnRlcm1BZ2dyZWdhdGUoKSB7IH0KIApAQCAtNDY3LDkg
KzQ3Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlYnVnKGJvb2wgZCkgeyBkZWJ1ZyA9IGQ7
IH0KICAgICBib29sIGdldERlYnVnKCkgeyByZXR1cm4gZGVidWc7IH0KIAotICAgIHZvaWQgc2V0
RW5kTGluZShUU291cmNlTG9jIGxpbmUpIHsgZW5kTGluZSA9IGxpbmU7IH0KLSAgICBUU291cmNl
TG9jIGdldEVuZExpbmUoKSBjb25zdCB7IHJldHVybiBlbmRMaW5lOyB9Ci0KICAgICB2b2lkIHNl
dFVzZUVtdWxhdGVkRnVuY3Rpb24oKSB7IHVzZUVtdWxhdGVkRnVuY3Rpb24gPSB0cnVlOyB9CiAg
ICAgYm9vbCBnZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkgeyByZXR1cm4gdXNlRW11bGF0ZWRGdW5j
dGlvbjsgfQogCkBAIC00ODIsNyArNDg4LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBvcHRp
bWl6ZTsKICAgICBib29sIGRlYnVnOwotICAgIFRTb3VyY2VMb2MgZW5kTGluZTsKIAogICAgIC8v
IElmIHNldCB0byB0cnVlLCByZXBsYWNlIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBjYWxsIHdpdGgg
YW4gZW11bGF0ZWQgb25lCiAgICAgLy8gdG8gd29yayBhcm91bmQgZHJpdmVyIGJ1Z3MuCkBAIC01
MzgsNyArNTQzLDggQEAgcHVibGljOgogICAgICAgICAgICAgaW5WaXNpdChpblZpc2l0KSwKICAg
ICAgICAgICAgIHBvc3RWaXNpdChwb3N0VmlzaXQpLAogICAgICAgICAgICAgcmlnaHRUb0xlZnQo
cmlnaHRUb0xlZnQpLAotICAgICAgICAgICAgZGVwdGgoMCkge30KKyAgICAgICAgICAgIGRlcHRo
KDApLAorICAgICAgICAgICAgbWF4RGVwdGgoMCkge30KICAgICB2aXJ0dWFsIH5USW50ZXJtVHJh
dmVyc2VyKCkge307CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJv
bCopIHt9CkBAIC01NTAsNyArNTU2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB2aXNp
dExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wKikge3JldHVybiB0cnVlO30KICAgICB2aXJ0
dWFsIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqKSB7cmV0dXJu
IHRydWU7fQogCi0gICAgdm9pZCBpbmNyZW1lbnREZXB0aCgpIHtkZXB0aCsrO30KKyAgICBpbnQg
Z2V0TWF4RGVwdGgoKSBjb25zdCB7cmV0dXJuIG1heERlcHRoO30KKyAgICB2b2lkIGluY3JlbWVu
dERlcHRoKCkge2RlcHRoKys7IG1heERlcHRoID0gc3RkOjptYXgobWF4RGVwdGgsIGRlcHRoKTsg
fQogICAgIHZvaWQgZGVjcmVtZW50RGVwdGgoKSB7ZGVwdGgtLTt9CiAKICAgICAvLyBSZXR1cm4g
dGhlIG9yaWdpbmFsIG5hbWUgaWYgaGFzaCBmdW5jdGlvbiBwb2ludGVyIGlzIE5VTEw7CkBAIC01
NjQsNiArNTcxLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgaW50IGRlcHRoOworICAg
IGludCBtYXhEZXB0aDsKIH07CiAKICNlbmRpZiAvLyBfX0lOVEVSTUVESUFURV9ICkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvbG9jYWxp
bnRlcm1lZGlhdGUuaAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDM0ICsyNSwzMyBAQCBwdWJsaWM6ICAgIAogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUo
R2xvYmFsUG9vbEFsbG9jYXRvcikKIAogICAgIFRJbnRlcm1lZGlhdGUoVEluZm9TaW5rJiBpKSA6
IGluZm9TaW5rKGkpIHsgfQotICAgIFRJbnRlcm1TeW1ib2wqIGFkZFN5bWJvbChpbnQgSWQsIGNv
bnN0IFRTdHJpbmcmLCBjb25zdCBUVHlwZSYsIFRTb3VyY2VMb2MpOworICAgIFRJbnRlcm1TeW1i
b2wqIGFkZFN5bWJvbChpbnQgSWQsIGNvbnN0IFRTdHJpbmcmLCBjb25zdCBUVHlwZSYsIGNvbnN0
IFRTb3VyY2VMb2MmKTsKICAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnZlcnNpb24oVE9wZXJhdG9y
LCBjb25zdCBUVHlwZSYsIFRJbnRlcm1UeXBlZCopOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQmlu
YXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiBy
aWdodCwgVFNvdXJjZUxvYywgVFN5bWJvbFRhYmxlJik7Ci0gICAgVEludGVybVR5cGVkKiBhZGRB
c3NpZ24oVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmln
aHQsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkSW5kZXgoVE9wZXJhdG9yIG9w
LCBUSW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIFRTb3VyY2VMb2MpOwot
ICAgIFRJbnRlcm1UeXBlZCogYWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUq
IGNoaWxkLCBUU291cmNlTG9jLCBUU3ltYm9sVGFibGUmKTsKLSAgICBUSW50ZXJtQWdncmVnYXRl
KiBncm93QWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBsZWZ0LCBUSW50ZXJtTm9kZSogcmlnaHQsIFRT
b3VyY2VMb2MpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIG1ha2VBZ2dyZWdhdGUoVEludGVybU5v
ZGUqIG5vZGUsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIHNldEFnZ3JlZ2F0
ZU9wZXJhdG9yKFRJbnRlcm1Ob2RlKiwgVE9wZXJhdG9yLCBUU291cmNlTG9jKTsKLSAgICBUSW50
ZXJtTm9kZSogIGFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1Ob2RlUGFp
ciBjb2RlLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZFNlbGVjdGlvbihUSW50
ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZh
bHNlQmxvY2ssIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29tbWEoVEludGVy
bVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jKTsKLSAgICBUSW50
ZXJtQ29uc3RhbnRVbmlvbiogYWRkQ29uc3RhbnRVbmlvbihDb25zdGFudFVuaW9uKiwgY29uc3Qg
VFR5cGUmLCBUU291cmNlTG9jKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZEJpbmFyeU1hdGgoVE9w
ZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0
IFRTb3VyY2VMb2MmLCBUU3ltYm9sVGFibGUmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZEFzc2ln
bihUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwg
Y29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkSW5kZXgoVE9wZXJhdG9y
IG9wLCBUSW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIGNvbnN0IFRTb3Vy
Y2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZFVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJ
bnRlcm1Ob2RlKiBjaGlsZCwgY29uc3QgVFNvdXJjZUxvYyYsIFRTeW1ib2xUYWJsZSYpOworICAg
IFRJbnRlcm1BZ2dyZWdhdGUqIGdyb3dBZ2dyZWdhdGUoVEludGVybU5vZGUqIGxlZnQsIFRJbnRl
cm1Ob2RlKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1BZ2dyZWdhdGUq
IG1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAg
ICBUSW50ZXJtQWdncmVnYXRlKiBzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSosIFRP
cGVyYXRvciwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1Ob2RlKiAgYWRkU2VsZWN0
aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQYWlyIGNvZGUsIGNvbnN0IFRTb3Vy
Y2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNv
bmQsIFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZhbHNlQmxvY2ssIGNv
bnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbW1hKFRJbnRlcm1UeXBl
ZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJ
bnRlcm1Db25zdGFudFVuaW9uKiBhZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qLCBjb25z
dCBUVHlwZSYsIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAgICBUSW50ZXJtVHlwZWQqIHByb21vdGVD
b25zdGFudFVuaW9uKFRCYXNpY1R5cGUsIFRJbnRlcm1Db25zdGFudFVuaW9uKikgOwotICAgIGJv
b2wgcGFyc2VDb25zdFRyZWUoVFNvdXJjZUxvYywgVEludGVybU5vZGUqLCBDb25zdGFudFVuaW9u
KiwgVE9wZXJhdG9yLCBUU3ltYm9sVGFibGUmLCBUVHlwZSwgYm9vbCBzaW5nbGVDb25zdGFudFBh
cmFtID0gZmFsc2UpOyAgICAgICAgCi0gICAgVEludGVybU5vZGUqIGFkZExvb3AoVExvb3BUeXBl
LCBUSW50ZXJtTm9kZSosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1Ob2Rl
KiwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwg
VFNvdXJjZUxvYyk7Ci0gICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgVElu
dGVybVR5cGVkKiwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRTd2l6emxlKFRW
ZWN0b3JGaWVsZHMmLCBUU291cmNlTG9jKTsKKyAgICBib29sIHBhcnNlQ29uc3RUcmVlKGNvbnN0
IFRTb3VyY2VMb2MmLCBUSW50ZXJtTm9kZSosIENvbnN0YW50VW5pb24qLCBUT3BlcmF0b3IsIFRT
eW1ib2xUYWJsZSYsIFRUeXBlLCBib29sIHNpbmdsZUNvbnN0YW50UGFyYW0gPSBmYWxzZSk7ICAg
ICAgICAKKyAgICBUSW50ZXJtTm9kZSogYWRkTG9vcChUTG9vcFR5cGUsIFRJbnRlcm1Ob2RlKiwg
VEludGVybVR5cGVkKiwgVEludGVybVR5cGVkKiwgVEludGVybU5vZGUqLCBjb25zdCBUU291cmNl
TG9jJik7CisgICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgY29uc3QgVFNv
dXJjZUxvYyYpOworICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3BlcmF0b3IsIFRJbnRl
cm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZFN3aXp6
bGUoVFZlY3RvckZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAgICBib29sIHBvc3RQcm9j
ZXNzKFRJbnRlcm1Ob2RlKik7Ci0Jdm9pZCByZW1vdmUoVEludGVybU5vZGUqKTsKKyAgICB2b2lk
IHJlbW92ZShUSW50ZXJtTm9kZSopOwogICAgIHZvaWQgb3V0cHV0VHJlZShUSW50ZXJtTm9kZSop
OwotICAgIAotcHJvdGVjdGVkOgotICAgIFRJbmZvU2luayYgaW5mb1Npbms7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBvcGVyYXRvcj0oVEludGVybWVkaWF0ZSYpOyAvLyBwcmV2ZW50IGFzc2lnbm1l
bnRzCisKKyAgICBUSW5mb1NpbmsmIGluZm9TaW5rOwogfTsKIAogI2VuZGlmIC8vIF9MT0NBTF9J
TlRFUk1FRElBVEVfSU5DTFVERURfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcGFyc2VDb25zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDE2ICszOCwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCB2aXNpdExv
b3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wKik7CiAgICAgYm9vbCB2aXNpdEJyYW5jaChWaXNp
dCB2aXNpdCwgVEludGVybUJyYW5jaCopOwogCi0gICAgaW50IGluZGV4OworICAgIHNpemVfdCBp
bmRleDsKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5OwogICAgIFRUeXBlIHR5cGU7CiAg
ICAgVE9wZXJhdG9yIGNvbnN0cnVjdG9yVHlwZTsKICAgICBib29sIHNpbmdsZUNvbnN0YW50UGFy
YW07CiAgICAgVEluZm9TaW5rJiBpbmZvU2luazsKICAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRh
YmxlOwotICAgIGludCBzaXplOyAvLyBzaXplIG9mIHRoZSBjb25zdHJ1Y3RvciAoIDQgZm9yIHZl
YzQpCisgICAgc2l6ZV90IHNpemU7IC8vIHNpemUgb2YgdGhlIGNvbnN0cnVjdG9yICggNCBmb3Ig
dmVjNCkKICAgICBib29sIGlzTWF0cml4OwotICAgIGludCBtYXRyaXhTaXplOyAvLyBkaW1lbnNp
b24gb2YgdGhlIG1hdHJpeCAobm9taW5hbCBzaXplIGFuZCBub3QgdGhlIGluc3RhbmNlIHNpemUp
CisgICAgc2l6ZV90IG1hdHJpeFNpemU7IC8vIGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4IChub21p
bmFsIHNpemUgYW5kIG5vdCB0aGUgaW5zdGFuY2Ugc2l6ZSkKIH07CiAKIC8vCkBAIC02MSw3ICs2
MSw3IEBAIHByb3RlY3RlZDoKIAogdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0U3ltYm9sKFRJ
bnRlcm1TeW1ib2wqIG5vZGUpCiB7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCAiU3ltYm9sIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3Ii
LCBub2RlLT5nZXRMaW5lKCkpOworICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50
ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiU3ltYm9sIE5vZGUgZm91bmQgaW4gY29uc3Rh
bnQgY29uc3RydWN0b3IiKTsKICAgICByZXR1cm47CiAKIH0KQEAgLTc0LDEyICs3NCwxMiBAQCBi
b29sIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgCiAgICAgICAgIFRTdHJpbmcg
YnVmOwogICAgICAgICBidWYuYXBwZW5kKCInY29uc3RydWN0b3InIDogYXNzaWduaW5nIG5vbi1j
b25zdGFudCB0byAiKTsKICAgICAgICAgYnVmLmFwcGVuZCh0eXBlLmdldENvbXBsZXRlU3RyaW5n
KCkpOwotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBidWYuY19z
dHIoKSwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCBidWYuY19zdHIoKSk7CiAgICAgICAgIGVycm9y
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgCiAgICAgfQogCi0gICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJCaW5hcnkgTm9kZSBmb3VuZCBpbiBj
b25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExpbmUoKSk7CisgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJpbmFyeSBO
b2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgCiAgICAgcmV0dXJuIGZh
bHNlOwogfQpAQCAtODksNyArODksNyBAQCBib29sIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRVbmFy
eShWaXNpdCB2CiAgICAgVFN0cmluZyBidWY7CiAgICAgYnVmLmFwcGVuZCgiJ2NvbnN0cnVjdG9y
JyA6IGFzc2lnbmluZyBub24tY29uc3RhbnQgdG8gIik7CiAgICAgYnVmLmFwcGVuZCh0eXBlLmdl
dENvbXBsZXRlU3RyaW5nKCkpOwotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJy
b3IsIGJ1Zi5jX3N0cigpLCBub2RlLT5nZXRMaW5lKCkpOworICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4RXJyb3IsIG5vZGUtPmdldExpbmUoKSwgYnVmLmNfc3RyKCkpOwogICAgIGVy
cm9yID0gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7ICAKIH0KQEAgLTEwMCw3ICsxMDAsNyBAQCBi
b29sIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzCiAgICAgICAgIFRTdHJpbmcg
YnVmOwogICAgICAgICBidWYuYXBwZW5kKCInY29uc3RydWN0b3InIDogYXNzaWduaW5nIG5vbi1j
b25zdGFudCB0byAiKTsKICAgICAgICAgYnVmLmFwcGVuZCh0eXBlLmdldENvbXBsZXRlU3RyaW5n
KCkpOwotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBidWYuY19z
dHIoKSwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCBidWYuY19zdHIoKSk7CiAgICAgICAgIGVycm9y
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgCiAgICAgfQpAQCAtMTQ0LDI0ICsxNDQs
MzEgQEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpcwogCiBib29sIFRD
b25zdFRyYXZlcnNlcjo6dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rp
b24qIG5vZGUpCiB7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVy
cm9yLCAiU2VsZWN0aW9uIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2Rl
LT5nZXRMaW5lKCkpOworICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxF
cnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiU2VsZWN0aW9uIE5vZGUgZm91bmQgaW4gY29uc3RhbnQg
Y29uc3RydWN0b3IiKTsKICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CiB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFu
dFVuaW9uKiBub2RlKQogeworICAgIGlmICghbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSkK
KyAgICB7CisgICAgICAgIC8vIFRoZSBjb25zdGFudCB3YXMgbm90IGluaXRpYWxpemVkLCB0aGlz
IHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBsb2dnZWQKKyAgICAgICAgYXNzZXJ0KGluZm9TaW5r
LmluZm8uc2l6ZSgpICE9IDApOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ29uc3Rh
bnRVbmlvbiogbGVmdFVuaW9uQXJyYXkgPSB1bmlvbkFycmF5OwotICAgIGludCBpbnN0YW5jZVNp
emUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICBzaXplX3QgaW5zdGFuY2VTaXplID0gdHlw
ZS5nZXRPYmplY3RTaXplKCk7CiAKICAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2VTaXplKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIXNpbmdsZUNvbnN0YW50UGFyYW0pIHsKLSAgICAgICAg
aW50IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICBzaXpl
X3Qgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CiAgICAgCiAgICAgICAg
IENvbnN0YW50VW5pb24gKnJpZ2h0VW5pb25BcnJheSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQb2lu
dGVyKCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICAgICAgaWYgKGluZGV4
ID49IGluc3RhbmNlU2l6ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBs
ZWZ0VW5pb25BcnJheVtpbmRleF0gPSByaWdodFVuaW9uQXJyYXlbaV07CkBAIC0xNjksMTEgKzE3
NiwxMSBAQCB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uCiAgICAgICAg
ICAgICAoaW5kZXgpKys7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpbnQgdG90
YWxTaXplID0gaW5kZXggKyBzaXplOworICAgICAgICBzaXplX3QgdG90YWxTaXplID0gaW5kZXgg
KyBzaXplOwogICAgICAgICBDb25zdGFudFVuaW9uICpyaWdodFVuaW9uQXJyYXkgPSBub2RlLT5n
ZXRVbmlvbkFycmF5UG9pbnRlcigpOwogICAgICAgICBpZiAoIWlzTWF0cml4KSB7Ci0gICAgICAg
ICAgICBpbnQgY291bnQgPSAwOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IGluZGV4OyBpIDwg
dG90YWxTaXplOyBpKyspIHsKKyAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IDA7CisgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkrKykgewogICAgICAg
ICAgICAgICAgIGlmIChpID49IGluc3RhbmNlU2l6ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC0xODUsOSArMTkyLDkgQEAgdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29u
c3RhbnRVbmlvbgogICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgeyAgLy8gZm9yIG1hdHJpeCBjb25zdHJ1Y3RvcnMKLSAgICAgICAgICAg
IGludCBjb3VudCA9IDA7Ci0gICAgICAgICAgICBpbnQgZWxlbWVudCA9IGluZGV4OwotICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IGluZGV4OyBpIDwgdG90YWxTaXplOyBpKyspIHsKKyAgICAgICAg
ICAgIHNpemVfdCBjb3VudCA9IDA7CisgICAgICAgICAgICBzaXplX3QgZWxlbWVudCA9IGluZGV4
OworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGluZGV4OyBpIDwgdG90YWxTaXplOyBpKysp
IHsKICAgICAgICAgICAgICAgICBpZiAoaSA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCAtIGkgPT0gMCB8fCAo
aSAtIGVsZW1lbnQpICUgKG1hdHJpeFNpemUgKyAxKSA9PSAwICkKQEAgLTIwNiwxNCArMjEzLDE0
IEBAIHZvaWQgVENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24KIAogYm9vbCBUQ29u
c3RUcmF2ZXJzZXI6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AqIG5vZGUpCiB7
Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiTG9vcCBO
b2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExp
bmUoKSwgIkxvb3AgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOwogICAgIGVy
cm9yID0gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgVENvbnN0VHJhdmVyc2Vy
Ojp2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCogbm9kZSkKIHsKLSAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJCcmFuY2ggTm9kZSBm
b3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCks
ICJCcmFuY2ggTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOwogICAgIGVycm9y
ID0gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMjMsNyArMjMwLDcgQEAgYm9vbCBU
Q29uc3RUcmF2ZXJzZXI6OnZpc2l0QnJhbmNoKFZpc2l0IAogLy8gSW5kaXZpZHVhbCBmdW5jdGlv
bnMgY2FuIGJlIGluaXRpYWxpemVkIHRvIDAgdG8gc2tpcCBwcm9jZXNzaW5nIG9mIHRoYXQKIC8v
IHR5cGUgb2Ygbm9kZS4gIEl0J3MgY2hpbGRyZW4gd2lsbCBzdGlsbCBiZSBwcm9jZXNzZWQuCiAv
LwotYm9vbCBUSW50ZXJtZWRpYXRlOjpwYXJzZUNvbnN0VHJlZShUU291cmNlTG9jIGxpbmUsIFRJ
bnRlcm1Ob2RlKiByb290LCBDb25zdGFudFVuaW9uKiB1bmlvbkFycmF5LCBUT3BlcmF0b3IgY29u
c3RydWN0b3JUeXBlLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlLCBUVHlwZSB0LCBib29sIHNp
bmdsZUNvbnN0YW50UGFyYW0pCitib29sIFRJbnRlcm1lZGlhdGU6OnBhcnNlQ29uc3RUcmVlKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1Ob2RlKiByb290LCBDb25zdGFudFVuaW9uKiB1
bmlvbkFycmF5LCBUT3BlcmF0b3IgY29uc3RydWN0b3JUeXBlLCBUU3ltYm9sVGFibGUmIHN5bWJv
bFRhYmxlLCBUVHlwZSB0LCBib29sIHNpbmdsZUNvbnN0YW50UGFyYW0pCiB7CiAgICAgaWYgKHJv
b3QgPT0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVu
ZGVuY3lHcmFwaC5jcHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00LDkgKzQsNyBAQAogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAK
LSNpZiBkZWZpbmVkKF9NU0NfVkVSKQogI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MTgpCi0j
ZW5kaWYKIAogI2luY2x1ZGUgImNvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCIKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhw
cmVzc2lvblBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcAkocmV2aXNpb24g
MTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyNCArMSwyMiBA
QAotLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuMy4gICovCisvKiBBIEJp
c29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24gMi40LjIuICAqLwogCiAvKiBTa2VsZXRvbiBp
bXBsZW1lbnRhdGlvbiBmb3IgQmlzb24ncyBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCi0KLSAgIENv
cHlyaWdodCAoQykgMTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAw
NCwgMjAwNSwgMjAwNgotICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0KLSAgIFRo
aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IgbW9kaWZ5CisgICAKKyAgICAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OS0xOTkwLCAyMDAw
LTIwMDYsIDIwMDktMjAxMCBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuCisgICAK
KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgYW55IGxh
dGVyIHZlcnNpb24uCi0KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2
ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICAgCiAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAgICBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCisgICAKICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQotICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKyAgIGFsb25nIHdpdGgg
dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+
LiAgKi8KIAogLyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSBjcmVhdGUgYSBsYXJn
ZXIgd29yayB0aGF0IGNvbnRhaW5zCiAgICBwYXJ0IG9yIGFsbCBvZiB0aGUgQmlzb24gcGFyc2Vy
IHNrZWxldG9uIGFuZCBkaXN0cmlidXRlIHRoYXQgd29yawpAQCAtMjksNyArMjcsNyBAQAogICAg
c3BlY2lhbCBleGNlcHRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNrZWxldG9uIGFuZCB0aGUg
cmVzdWx0aW5nCiAgICBCaXNvbiBvdXRwdXQgZmlsZXMgdG8gYmUgbGljZW5zZWQgdW5kZXIgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYwogICAgTGljZW5zZSB3aXRob3V0IHRoaXMgc3BlY2lhbCBleGNl
cHRpb24uCi0KKyAgIAogICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMgYWRkZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBpbgogICAgdmVyc2lvbiAyLjIgb2YgQmlzb24uICAq
LwogCkBAIC00Nyw3ICs0NSw3IEBACiAjZGVmaW5lIFlZQklTT04gMQogCiAvKiBCaXNvbiB2ZXJz
aW9uLiAgKi8KLSNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjMiCisjZGVmaW5lIFlZQklTT05f
VkVSU0lPTiAiMi40LjIiCiAKIC8qIFNrZWxldG9uIG5hbWUuICAqLwogI2RlZmluZSBZWVNLRUxF
VE9OX05BTUUgInlhY2MuYyIKQEAgLTU1LDUwICs1MywyMyBAQAogLyogUHVyZSBwYXJzZXJzLiAg
Ki8KICNkZWZpbmUgWVlQVVJFIDEKIAorLyogUHVzaCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQ
VVNIIDAKKworLyogUHVsbCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQVUxMIDEKKwogLyogVXNp
bmcgbG9jYXRpb25zLiAgKi8KICNkZWZpbmUgWVlMU1BfTkVFREVEIDAKIAogLyogU3Vic3RpdHV0
ZSB0aGUgdmFyaWFibGUgYW5kIGZ1bmN0aW9uIG5hbWVzLiAgKi8KLSNkZWZpbmUgeXlwYXJzZSBw
cHBhcnNlCi0jZGVmaW5lIHl5bGV4ICAgcHBsZXgKLSNkZWZpbmUgeXllcnJvciBwcGVycm9yCi0j
ZGVmaW5lIHl5bHZhbCAgcHBsdmFsCi0jZGVmaW5lIHl5Y2hhciAgcHBjaGFyCi0jZGVmaW5lIHl5
ZGVidWcgcHBkZWJ1ZwotI2RlZmluZSB5eW5lcnJzIHBwbmVycnMKLQotCi0vKiBUb2tlbnMuICAq
LwotI2lmbmRlZiBZWVRPS0VOVFlQRQotIyBkZWZpbmUgWVlUT0tFTlRZUEUKLSAgIC8qIFB1dCB0
aGUgdG9rZW5zIGludG8gdGhlIHN5bWJvbCB0YWJsZSwgc28gdGhhdCBHREIgYW5kIG90aGVyIGRl
YnVnZ2VycwotICAgICAga25vdyBhYm91dCB0aGVtLiAgKi8KLSAgIGVudW0geXl0b2tlbnR5cGUg
ewotICAgICBUT0tfQ09OU1RfSU5UID0gMjU4LAotICAgICBUT0tfT1BfT1IgPSAyNTksCi0gICAg
IFRPS19PUF9BTkQgPSAyNjAsCi0gICAgIFRPS19PUF9ORSA9IDI2MSwKLSAgICAgVE9LX09QX0VR
ID0gMjYyLAotICAgICBUT0tfT1BfR0UgPSAyNjMsCi0gICAgIFRPS19PUF9MRSA9IDI2NCwKLSAg
ICAgVE9LX09QX1JJR0hUID0gMjY1LAotICAgICBUT0tfT1BfTEVGVCA9IDI2NiwKLSAgICAgVE9L
X1VOQVJZID0gMjY3Ci0gICB9OwotI2VuZGlmCi0vKiBUb2tlbnMuICAqLwotI2RlZmluZSBUT0tf
Q09OU1RfSU5UIDI1OAotI2RlZmluZSBUT0tfT1BfT1IgMjU5Ci0jZGVmaW5lIFRPS19PUF9BTkQg
MjYwCi0jZGVmaW5lIFRPS19PUF9ORSAyNjEKLSNkZWZpbmUgVE9LX09QX0VRIDI2MgotI2RlZmlu
ZSBUT0tfT1BfR0UgMjYzCi0jZGVmaW5lIFRPS19PUF9MRSAyNjQKLSNkZWZpbmUgVE9LX09QX1JJ
R0hUIDI2NQotI2RlZmluZSBUT0tfT1BfTEVGVCAyNjYKLSNkZWZpbmUgVE9LX1VOQVJZIDI2Nwot
Ci0KKyNkZWZpbmUgeXlwYXJzZSAgICAgICAgIHBwcGFyc2UKKyNkZWZpbmUgeXlsZXggICAgICAg
ICAgIHBwbGV4CisjZGVmaW5lIHl5ZXJyb3IgICAgICAgICBwcGVycm9yCisjZGVmaW5lIHl5bHZh
bCAgICAgICAgICBwcGx2YWwKKyNkZWZpbmUgeXljaGFyICAgICAgICAgIHBwY2hhcgorI2RlZmlu
ZSB5eWRlYnVnICAgICAgICAgcHBkZWJ1ZworI2RlZmluZSB5eW5lcnJzICAgICAgICAgcHBuZXJy
cwogCiAKIC8qIENvcHkgdGhlIGZpcnN0IHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLwpA
QCAtMTU4LDYgKzEyOSw3IEBAIHN0YXRpYyBpbnQgeXlsZXgoWVlTVFlQRSogbHZhbHAsIENvbnRl
eHQKIHN0YXRpYyB2b2lkIHl5ZXJyb3IoQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVh
c29uKTsKIAogCisKIC8qIEVuYWJsaW5nIHRyYWNlcy4gICovCiAjaWZuZGVmIFlZREVCVUcKICMg
ZGVmaW5lIFlZREVCVUcgMApAQCAtMTc2LDIwICsxNDgsMzkgQEAgc3RhdGljIHZvaWQgeXllcnJv
cihDb250ZXh0KiBjb250ZXh0LCBjbwogIyBkZWZpbmUgWVlUT0tFTl9UQUJMRSAwCiAjZW5kaWYK
IAorCisvKiBUb2tlbnMuICAqLworI2lmbmRlZiBZWVRPS0VOVFlQRQorIyBkZWZpbmUgWVlUT0tF
TlRZUEUKKyAgIC8qIFB1dCB0aGUgdG9rZW5zIGludG8gdGhlIHN5bWJvbCB0YWJsZSwgc28gdGhh
dCBHREIgYW5kIG90aGVyIGRlYnVnZ2VycworICAgICAga25vdyBhYm91dCB0aGVtLiAgKi8KKyAg
IGVudW0geXl0b2tlbnR5cGUgeworICAgICBUT0tfQ09OU1RfSU5UID0gMjU4LAorICAgICBUT0tf
T1BfT1IgPSAyNTksCisgICAgIFRPS19PUF9BTkQgPSAyNjAsCisgICAgIFRPS19PUF9ORSA9IDI2
MSwKKyAgICAgVE9LX09QX0VRID0gMjYyLAorICAgICBUT0tfT1BfR0UgPSAyNjMsCisgICAgIFRP
S19PUF9MRSA9IDI2NCwKKyAgICAgVE9LX09QX1JJR0hUID0gMjY1LAorICAgICBUT0tfT1BfTEVG
VCA9IDI2NiwKKyAgICAgVE9LX1VOQVJZID0gMjY3CisgICB9OworI2VuZGlmCisKKworCiAjaWYg
ISBkZWZpbmVkIFlZU1RZUEUgJiYgISBkZWZpbmVkIFlZU1RZUEVfSVNfREVDTEFSRUQKIHR5cGVk
ZWYgaW50IFlZU1RZUEU7CisjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogIyBkZWZpbmUg
eXlzdHlwZSBZWVNUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3biAqLwogIyBk
ZWZpbmUgWVlTVFlQRV9JU19ERUNMQVJFRCAxCi0jIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwg
MQogI2VuZGlmCiAKIAotCiAvKiBDb3B5IHRoZSBzZWNvbmQgcGFydCBvZiB1c2VyIGRlY2xhcmF0
aW9ucy4gICovCiAKIAotLyogTGluZSAyMTYgb2YgeWFjYy5jLiAgKi8KLQogCiAjaWZkZWYgc2hv
cnQKICMgdW5kZWYgc2hvcnQKQEAgLTI2NCwxNCArMjU1LDE0IEBAIHR5cGVkZWYgc2hvcnQgaW50
IHl5dHlwZV9pbnQxNjsKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19G
VU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIp
CiBzdGF0aWMgaW50Ci1ZWUlEIChpbnQgaSkKK1lZSUQgKGludCB5eWkpCiAjZWxzZQogc3RhdGlj
IGludAotWVlJRCAoaSkKLSAgICBpbnQgaTsKK1lZSUQgKHl5aSkKKyAgICBpbnQgeXlpOwogI2Vu
ZGlmCiB7Ci0gIHJldHVybiBpOworICByZXR1cm4geXlpOwogfQogI2VuZGlmCiAKQEAgLTM1Miw5
ICszNDMsOSBAQCB2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJTkdFUyBPTiBVU0VSCiAvKiBB
IHR5cGUgdGhhdCBpcyBwcm9wZXJseSBhbGlnbmVkIGZvciBhbnkgc3RhY2sgbWVtYmVyLiAgKi8K
IHVuaW9uIHl5YWxsb2MKIHsKLSAgeXl0eXBlX2ludDE2IHl5c3M7Ci0gIFlZU1RZUEUgeXl2czsK
LSAgfTsKKyAgeXl0eXBlX2ludDE2IHl5c3NfYWxsb2M7CisgIFlZU1RZUEUgeXl2c19hbGxvYzsK
K307CiAKIC8qIFRoZSBzaXplIG9mIHRoZSBtYXhpbXVtIGdhcCBiZXR3ZWVuIG9uZSBhbGlnbmVk
IHN0YWNrIGFuZCB0aGUgbmV4dC4gICovCiAjIGRlZmluZSBZWVNUQUNLX0dBUF9NQVhJTVVNIChz
aXplb2YgKHVuaW9uIHl5YWxsb2MpIC0gMSkKQEAgLTM4OCwxMiArMzc5LDEyIEBAIHVuaW9uIHl5
YWxsb2MKICAgIGVsZW1lbnRzIGluIHRoZSBzdGFjaywgYW5kIFlZUFRSIGdpdmVzIHRoZSBuZXcg
bG9jYXRpb24gb2YgdGhlCiAgICBzdGFjay4gIEFkdmFuY2UgWVlQVFIgdG8gYSBwcm9wZXJseSBh
bGlnbmVkIGxvY2F0aW9uIGZvciB0aGUgbmV4dAogICAgc3RhY2suICAqLwotIyBkZWZpbmUgWVlT
VEFDS19SRUxPQ0FURShTdGFjaykJCQkJCVwKKyMgZGVmaW5lIFlZU1RBQ0tfUkVMT0NBVEUoU3Rh
Y2tfYWxsb2MsIFN0YWNrKQkJCQlcCiAgICAgZG8JCQkJCQkJCQlcCiAgICAgICB7CQkJCQkJCQkJ
XAogCVlZU0laRV9UIHl5bmV3Ynl0ZXM7CQkJCQkJXAotCVlZQ09QWSAoJnl5cHRyLT5TdGFjaywg
U3RhY2ssIHl5c2l6ZSk7CQkJCVwKLQlTdGFjayA9ICZ5eXB0ci0+U3RhY2s7CQkJCQkJXAorCVlZ
Q09QWSAoJnl5cHRyLT5TdGFja19hbGxvYywgU3RhY2ssIHl5c2l6ZSk7CQkJXAorCVN0YWNrID0g
Jnl5cHRyLT5TdGFja19hbGxvYzsJCQkJCVwKIAl5eW5ld2J5dGVzID0geXlzdGFja3NpemUgKiBz
aXplb2YgKCpTdGFjaykgKyBZWVNUQUNLX0dBUF9NQVhJTVVNOyBcCiAJeXlwdHIgKz0geXluZXdi
eXRlcyAvIHNpemVvZiAoKnl5cHRyKTsJCQkJXAogICAgICAgfQkJCQkJCQkJCVwKQEAgLTQ4Miw5
ICs0NzMsOSBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDggeXlyaHNbXSA9CiAvKiBZWVJMSU5F
W1lZTl0gLS0gc291cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAg
Ki8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlybGluZVtdID0KIHsKLSAgICAgICAwLCAg
ICA5MSwgICAgOTEsICAgIDk4LCAgICA5OSwgICAxMDIsICAgMTA1LCAgIDEwOCwgICAxMTEsICAg
MTE0LAotICAgICAxMTcsICAgMTIwLCAgIDEyMywgICAxMjYsICAgMTI5LCAgIDEzMiwgICAxMzUs
ICAgMTM4LCAgIDE0MSwgICAxNDQsCi0gICAgIDE1NywgICAxNzAsICAgMTczLCAgIDE3NiwgICAx
NzksICAgMTgyLCAgIDE4NQorICAgICAgIDAsICAgIDkwLCAgICA5MCwgICAgOTcsICAgIDk4LCAg
IDEwMSwgICAxMDQsICAgMTA3LCAgIDExMCwgICAxMTMsCisgICAgIDExNiwgICAxMTksICAgMTIy
LCAgIDEyNSwgICAxMjgsICAgMTMxLCAgIDEzNCwgICAxMzcsICAgMTQwLCAgIDE0MywKKyAgICAg
MTU2LCAgIDE2OSwgICAxNzIsICAgMTc1LCAgIDE3OCwgICAxODEsICAgMTg0CiB9OwogI2VuZGlm
CiAKQEAgLTYzOSw5ICs2MzAsMTggQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXN0b3Nb
XSA9CiAKIC8qIExpa2UgWVlFUlJPUiBleGNlcHQgZG8gY2FsbCB5eWVycm9yLiAgVGhpcyByZW1h
aW5zIGhlcmUgdGVtcG9yYXJpbHkKICAgIHRvIGVhc2UgdGhlIHRyYW5zaXRpb24gdG8gdGhlIG5l
dyBtZWFuaW5nIG9mIFlZRVJST1IsIGZvciBHQ0MuCi0gICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFz
IHN1cHBsYW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNhbiBnby4gICovCisgICBPbmNlIEdDQyB2ZXJz
aW9uIDIgaGFzIHN1cHBsYW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNhbiBnby4gIEhvd2V2ZXIsCisg
ICBZWUZBSUwgYXBwZWFycyB0byBiZSBpbiB1c2UuICBOZXZlcnRoZWxlc3MsIGl0IGlzIGZvcm1h
bGx5IGRlcHJlY2F0ZWQKKyAgIGluIEJpc29uIDIuNC4yJ3MgTkVXUyBlbnRyeSwgd2hlcmUgYSBw
bGFuIHRvIHBoYXNlIGl0IG91dCBpcworICAgZGlzY3Vzc2VkLiAgKi8KIAogI2RlZmluZSBZWUZB
SUwJCWdvdG8geXllcnJsYWIKKyNpZiBkZWZpbmVkIFlZRkFJTAorICAvKiBUaGlzIGlzIGhlcmUg
dG8gc3VwcHJlc3Mgd2FybmluZ3MgZnJvbSB0aGUgR0NDIGNwcCdzCisgICAgIC1XdW51c2VkLW1h
Y3Jvcy4gIE5vcm1hbGx5IHdlIGRvbid0IHdvcnJ5IGFib3V0IHRoYXQgd2FybmluZywgYnV0Cisg
ICAgIHNvbWUgdXNlcnMgZG8sIGFuZCB3ZSB3YW50IHRvIG1ha2UgaXQgZWFzeSBmb3IgdXNlcnMg
dG8gcmVtb3ZlCisgICAgIFlZRkFJTCB1c2VzLCB3aGljaCB3aWxsIHByb2R1Y2Ugd2FybmluZ3Mg
ZnJvbSBCaXNvbiAyLjUuICAqLworI2VuZGlmCiAKICNkZWZpbmUgWVlSRUNPVkVSSU5HKCkgICgh
IXl5ZXJyc3RhdHVzKQogCkBAIC04MTIsMTcgKzgxMiwyMCBAQCB5eV9zeW1ib2xfcHJpbnQgKHl5
b3V0cHV0LCB5eXR5cGUsIHl5dmFsCiAjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBf
X0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9N
U0NfVkVSKQogc3RhdGljIHZvaWQKLXl5X3N0YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKmJvdHRv
bSwgeXl0eXBlX2ludDE2ICp0b3ApCit5eV9zdGFja19wcmludCAoeXl0eXBlX2ludDE2ICp5eWJv
dHRvbSwgeXl0eXBlX2ludDE2ICp5eXRvcCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfc3RhY2tf
cHJpbnQgKGJvdHRvbSwgdG9wKQotICAgIHl5dHlwZV9pbnQxNiAqYm90dG9tOwotICAgIHl5dHlw
ZV9pbnQxNiAqdG9wOworeXlfc3RhY2tfcHJpbnQgKHl5Ym90dG9tLCB5eXRvcCkKKyAgICB5eXR5
cGVfaW50MTYgKnl5Ym90dG9tOworICAgIHl5dHlwZV9pbnQxNiAqeXl0b3A7CiAjZW5kaWYKIHsK
ICAgWVlGUFJJTlRGIChzdGRlcnIsICJTdGFjayBub3ciKTsKLSAgZm9yICg7IGJvdHRvbSA8PSB0
b3A7ICsrYm90dG9tKQotICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgKmJvdHRvbSk7Cisg
IGZvciAoOyB5eWJvdHRvbSA8PSB5eXRvcDsgeXlib3R0b20rKykKKyAgICB7CisgICAgICBpbnQg
eXlib3QgPSAqeXlib3R0b207CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAlZCIsIHl5Ym90
KTsKKyAgICB9CiAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKIH0KIApAQCAtODU3LDExICs4
NjAsMTEgQEAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlydWxlLCBjb250ZXh0KQogICAvKiBU
aGUgc3ltYm9scyBiZWluZyByZWR1Y2VkLiAgKi8KICAgZm9yICh5eWkgPSAwOyB5eWkgPCB5eW5y
aHM7IHl5aSsrKQogICAgIHsKLSAgICAgIGZwcmludGYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5
aSArIDEpOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsK
ICAgICAgIHl5X3N5bWJvbF9wcmludCAoc3RkZXJyLCB5eXJoc1t5eXByaHNbeXlydWxlXSArIHl5
aV0sCiAJCSAgICAgICAmKHl5dnNwWyh5eWkgKyAxKSAtICh5eW5yaHMpXSkKIAkJICAgICAgIAkJ
ICAgICAgICwgY29udGV4dCk7Ci0gICAgICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOworICAgICAg
WVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwogICAgIH0KIH0KIApAQCAtMTE0MywxMCArMTE0Niw4
IEBAIHl5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVwLCBjb24KIAlicmVhazsKICAg
ICB9CiB9Ci0MCiAKIC8qIFByZXZlbnQgd2FybmluZ3MgZnJvbSAtV21pc3NpbmctcHJvdG90eXBl
cy4gICovCi0KICNpZmRlZiBZWVBBUlNFX1BBUkFNCiAjaWYgZGVmaW5lZCBfX1NURENfXyB8fCBk
ZWZpbmVkIF9fY3BsdXNwbHVzCiBpbnQgeXlwYXJzZSAodm9pZCAqWVlQQVJTRV9QQVJBTSk7CkBA
IC0xMTY1LDEwICsxMTY2LDkgQEAgaW50IHl5cGFyc2UgKCk7CiAKIAogCi0KLS8qLS0tLS0tLS0t
LS4KLXwgeXlwYXJzZS4gIHwKLWAtLS0tLS0tLS0tKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS4KK3wgeXlwYXJzZSBvciB5eXB1c2hfcGFyc2UuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSovCiAKICNpZmRlZiBZWVBBUlNFX1BBUkFNCiAjaWYgKGRlZmluZWQgX19TVERDX18g
fHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKQEAgLTExOTIsMjIgKzExOTIsNDYgQEAgeXlwYXJz
ZSAoY29udGV4dCkKICNlbmRpZgogI2VuZGlmCiB7Ci0gIC8qIFRoZSBsb29rLWFoZWFkIHN5bWJv
bC4gICovCisvKiBUaGUgbG9va2FoZWFkIHN5bWJvbC4gICovCiBpbnQgeXljaGFyOwogCi0vKiBU
aGUgc2VtYW50aWMgdmFsdWUgb2YgdGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KKy8qIFRoZSBz
ZW1hbnRpYyB2YWx1ZSBvZiB0aGUgbG9va2FoZWFkIHN5bWJvbC4gICovCiBZWVNUWVBFIHl5bHZh
bDsKIAotLyogTnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KLWludCB5eW5lcnJz
OworICAgIC8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCisgICAgaW50IHl5
bmVycnM7CisKKyAgICBpbnQgeXlzdGF0ZTsKKyAgICAvKiBOdW1iZXIgb2YgdG9rZW5zIHRvIHNo
aWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFibGVkLiAgKi8KKyAgICBpbnQgeXllcnJzdGF0
dXM7CisKKyAgICAvKiBUaGUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKKyAgICAgICBgeXlzcyc6
IHJlbGF0ZWQgdG8gc3RhdGVzLgorICAgICAgIGB5eXZzJzogcmVsYXRlZCB0byBzZW1hbnRpYyB2
YWx1ZXMuCisKKyAgICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocnUgc2VwYXJhdGUgcG9pbnRl
cnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKKyAgICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxzZXdo
ZXJlLiAgKi8KKworICAgIC8qIFRoZSBzdGF0ZSBzdGFjay4gICovCisgICAgeXl0eXBlX2ludDE2
IHl5c3NhW1lZSU5JVERFUFRIXTsKKyAgICB5eXR5cGVfaW50MTYgKnl5c3M7CisgICAgeXl0eXBl
X2ludDE2ICp5eXNzcDsKKworICAgIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCisg
ICAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07CisgICAgWVlTVFlQRSAqeXl2czsKKyAgICBZ
WVNUWVBFICp5eXZzcDsKKworICAgIFlZU0laRV9UIHl5c3RhY2tzaXplOwogCi0gIGludCB5eXN0
YXRlOwogICBpbnQgeXluOwogICBpbnQgeXlyZXN1bHQ7Ci0gIC8qIE51bWJlciBvZiB0b2tlbnMg
dG8gc2hpZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLwotICBpbnQgeXllcnJz
dGF0dXM7Ci0gIC8qIExvb2stYWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQp
IHRva2VuIG51bWJlci4gICovCi0gIGludCB5eXRva2VuID0gMDsKKyAgLyogTG9va2FoZWFkIHRv
a2VuIGFzIGFuIGludGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLworICBpbnQg
eXl0b2tlbjsKKyAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1
ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKKyAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KKyAgWVlT
VFlQRSB5eXZhbDsKKwogI2lmIFlZRVJST1JfVkVSQk9TRQogICAvKiBCdWZmZXIgZm9yIGVycm9y
IG1lc3NhZ2VzLCBhbmQgaXRzIGFsbG9jYXRlZCBzaXplLiAgKi8KICAgY2hhciB5eW1zZ2J1Zlsx
MjhdOwpAQCAtMTIxNSw1MSArMTIzOSwyOCBAQCBpbnQgeXluZXJyczsKICAgWVlTSVpFX1QgeXlt
c2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7CiAjZW5kaWYKIAotICAvKiBUaHJlZSBzdGFja3Mg
YW5kIHRoZWlyIHRvb2xzOgotICAgICBgeXlzcyc6IHJlbGF0ZWQgdG8gc3RhdGVzLAotICAgICBg
eXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLAotICAgICBgeXlscyc6IHJlbGF0ZWQg
dG8gbG9jYXRpb25zLgotCi0gICAgIFJlZmVyIHRvIHRoZSBzdGFja3MgdGhydSBzZXBhcmF0ZSBw
b2ludGVycywgdG8gYWxsb3cgeXlvdmVyZmxvdwotICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxz
ZXdoZXJlLiAgKi8KLQotICAvKiBUaGUgc3RhdGUgc3RhY2suICAqLwotICB5eXR5cGVfaW50MTYg
eXlzc2FbWVlJTklUREVQVEhdOwotICB5eXR5cGVfaW50MTYgKnl5c3MgPSB5eXNzYTsKLSAgeXl0
eXBlX2ludDE2ICp5eXNzcDsKLQotICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3RhY2suICAqLwot
ICBZWVNUWVBFIHl5dnNhW1lZSU5JVERFUFRIXTsKLSAgWVlTVFlQRSAqeXl2cyA9IHl5dnNhOwot
ICBZWVNUWVBFICp5eXZzcDsKLQotCi0KICNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAt
PSAoTiksIHl5c3NwIC09IChOKSkKIAotICBZWVNJWkVfVCB5eXN0YWNrc2l6ZSA9IFlZSU5JVERF
UFRIOwotCi0gIC8qIFRoZSB2YXJpYWJsZXMgdXNlZCB0byByZXR1cm4gc2VtYW50aWMgdmFsdWUg
YW5kIGxvY2F0aW9uIGZyb20gdGhlCi0gICAgIGFjdGlvbiByb3V0aW5lcy4gICovCi0gIFlZU1RZ
UEUgeXl2YWw7Ci0KLQogICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIFJIUyBvZiB0
aGUgcmVkdWNlZCBydWxlLgogICAgICBLZWVwIHRvIHplcm8gd2hlbiBubyBzeW1ib2wgc2hvdWxk
IGJlIHBvcHBlZC4gICovCiAgIGludCB5eWxlbiA9IDA7CiAKKyAgeXl0b2tlbiA9IDA7CisgIHl5
c3MgPSB5eXNzYTsKKyAgeXl2cyA9IHl5dnNhOworICB5eXN0YWNrc2l6ZSA9IFlZSU5JVERFUFRI
OworCiAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YXJ0aW5nIHBhcnNlXG4iKSk7CiAKICAgeXlz
dGF0ZSA9IDA7CiAgIHl5ZXJyc3RhdHVzID0gMDsKICAgeXluZXJycyA9IDA7Ci0gIHl5Y2hhciA9
IFlZRU1QVFk7CQkvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLworICB5eWNoYXIgPSBZ
WUVNUFRZOyAvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLwogCiAgIC8qIEluaXRpYWxp
emUgc3RhY2sgcG9pbnRlcnMuCiAgICAgIFdhc3RlIG9uZSBlbGVtZW50IG9mIHZhbHVlIGFuZCBs
b2NhdGlvbiBzdGFjawogICAgICBzbyB0aGF0IHRoZXkgc3RheSBvbiB0aGUgc2FtZSBsZXZlbCBh
cyB0aGUgc3RhdGUgc3RhY2suCiAgICAgIFRoZSB3YXN0ZWQgZWxlbWVudHMgYXJlIG5ldmVyIGlu
aXRpYWxpemVkLiAgKi8KLQogICB5eXNzcCA9IHl5c3M7CiAgIHl5dnNwID0geXl2czsKIApAQCAt
MTI4OSw3ICsxMjkwLDYgQEAgaW50IHl5bmVycnM7CiAJWVlTVFlQRSAqeXl2czEgPSB5eXZzOwog
CXl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOwogCi0KIAkvKiBFYWNoIHN0YWNrIHBvaW50ZXIg
YWRkcmVzcyBpcyBmb2xsb3dlZCBieSB0aGUgc2l6ZSBvZiB0aGUKIAkgICBkYXRhIGluIHVzZSBp
biB0aGF0IHN0YWNrLCBpbiBieXRlcy4gIFRoaXMgdXNlZCB0byBiZSBhCiAJICAgY29uZGl0aW9u
YWwgYXJvdW5kIGp1c3QgdGhlIHR3byBleHRyYSBhcmdzLCBidXQgdGhhdCBtaWdodApAQCAtMTI5
Nyw3ICsxMjk3LDYgQEAgaW50IHl5bmVycnM7CiAJeXlvdmVyZmxvdyAoWVlfKCJtZW1vcnkgZXho
YXVzdGVkIiksCiAJCSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwKIAkJICAg
ICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAotCiAJCSAgICAmeXlzdGFja3NpemUp
OwogCiAJeXlzcyA9IHl5c3MxOwpAQCAtMTMyMCw5ICsxMzE5LDggQEAgaW50IHl5bmVycnM7CiAJ
ICAodW5pb24geXlhbGxvYyAqKSBZWVNUQUNLX0FMTE9DIChZWVNUQUNLX0JZVEVTICh5eXN0YWNr
c2l6ZSkpOwogCWlmICghIHl5cHRyKQogCSAgZ290byB5eWV4aGF1c3RlZGxhYjsKLQlZWVNUQUNL
X1JFTE9DQVRFICh5eXNzKTsKLQlZWVNUQUNLX1JFTE9DQVRFICh5eXZzKTsKLQorCVlZU1RBQ0tf
UkVMT0NBVEUgKHl5c3NfYWxsb2MsIHl5c3MpOworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnNfYWxs
b2MsIHl5dnMpOwogIyAgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQogCWlmICh5eXNzMSAhPSB5eXNz
YSkKIAkgIFlZU1RBQ0tfRlJFRSAoeXlzczEpOwpAQCAtMTMzMyw3ICsxMzMxLDYgQEAgaW50IHl5
bmVycnM7CiAgICAgICB5eXNzcCA9IHl5c3MgKyB5eXNpemUgLSAxOwogICAgICAgeXl2c3AgPSB5
eXZzICsgeXlzaXplIC0gMTsKIAotCiAgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFjayBz
aXplIGluY3JlYXNlZCB0byAlbHVcbiIsCiAJCSAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0YWNr
c2l6ZSkpOwogCkBAIC0xMzQzLDYgKzEzNDAsOSBAQCBpbnQgeXluZXJyczsKIAogICBZWURQUklO
VEYgKChzdGRlcnIsICJFbnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlzdGF0ZSkpOwogCisgIGlmICh5
eXN0YXRlID09IFlZRklOQUwpCisgICAgWVlBQ0NFUFQ7CisKICAgZ290byB5eWJhY2t1cDsKIAog
LyotLS0tLS0tLS0tLS4KQEAgLTEzNTEsMTYgKzEzNTEsMTYgQEAgaW50IHl5bmVycnM7CiB5eWJh
Y2t1cDoKIAogICAvKiBEbyBhcHByb3ByaWF0ZSBwcm9jZXNzaW5nIGdpdmVuIHRoZSBjdXJyZW50
IHN0YXRlLiAgUmVhZCBhCi0gICAgIGxvb2stYWhlYWQgdG9rZW4gaWYgd2UgbmVlZCBvbmUgYW5k
IGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLworICAgICBsb29rYWhlYWQgdG9rZW4gaWYgd2Ug
bmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLwogCi0gIC8qIEZpcnN0IHRy
eSB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rLWFoZWFkIHRv
a2VuLiAgKi8KKyAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGhvdXQgcmVm
ZXJlbmNlIHRvIGxvb2thaGVhZCB0b2tlbi4gICovCiAgIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsK
ICAgaWYgKHl5biA9PSBZWVBBQ1RfTklORikKICAgICBnb3RvIHl5ZGVmYXVsdDsKIAotICAvKiBO
b3Qga25vd24gPT4gZ2V0IGEgbG9vay1haGVhZCB0b2tlbiBpZiBkb24ndCBhbHJlYWR5IGhhdmUg
b25lLiAgKi8KKyAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2thaGVhZCB0b2tlbiBpZiBkb24n
dCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KIAotICAvKiBZWUNIQVIgaXMgZWl0aGVyIFlZRU1QVFkg
b3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29rLWFoZWFkIHN5bWJvbC4gICovCisgIC8qIFlZQ0hBUiBp
cyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRiBvciBhIHZhbGlkIGxvb2thaGVhZCBzeW1ib2wuICAq
LwogICBpZiAoeXljaGFyID09IFlZRU1QVFkpCiAgICAgewogICAgICAgWVlEUFJJTlRGICgoc3Rk
ZXJyLCAiUmVhZGluZyBhIHRva2VuOiAiKSk7CkBAIC0xMzkyLDIwICsxMzkyLDE2IEBAIHl5YmFj
a3VwOgogICAgICAgZ290byB5eXJlZHVjZTsKICAgICB9CiAKLSAgaWYgKHl5biA9PSBZWUZJTkFM
KQotICAgIFlZQUNDRVBUOwotCiAgIC8qIENvdW50IHRva2VucyBzaGlmdGVkIHNpbmNlIGVycm9y
OyBhZnRlciB0aHJlZSwgdHVybiBvZmYgZXJyb3IKICAgICAgc3RhdHVzLiAgKi8KICAgaWYgKHl5
ZXJyc3RhdHVzKQogICAgIHl5ZXJyc3RhdHVzLS07CiAKLSAgLyogU2hpZnQgdGhlIGxvb2stYWhl
YWQgdG9rZW4uICAqLworICAvKiBTaGlmdCB0aGUgbG9va2FoZWFkIHRva2VuLiAgKi8KICAgWVlf
U1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jKTsKIAot
ICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuIHVubGVzcyBpdCBpcyBlb2YuICAqLwotICBp
ZiAoeXljaGFyICE9IFlZRU9GKQotICAgIHl5Y2hhciA9IFlZRU1QVFk7CisgIC8qIERpc2NhcmQg
dGhlIHNoaWZ0ZWQgdG9rZW4uICAqLworICB5eWNoYXIgPSBZWUVNUFRZOwogCiAgIHl5c3RhdGUg
PSB5eW47CiAgICorK3l5dnNwID0geXlsdmFsOwpAQCAtMTQ0OSwxMTIgKzE0NDUsMTEyIEBAIHl5
cmVkdWNlOgogICAgIHsKICAgICAgICAgKihjb250ZXh0LT5yZXN1bHQpID0gc3RhdGljX2Nhc3Q8
aW50PigoeXl2c3BbKDEpIC0gKDEpXSkpOwogICAgICAgICBZWUFDQ0VQVDsKLSAgICA7fQorICAg
IH0KICAgICBicmVhazsKIAogICBjYXNlIDQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAo
eXl2c3BbKDEpIC0gKDMpXSkgfHwgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgNToKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFsoMSkgLSAoMyldKSAmJiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSA2OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygx
KSAtICgzKV0pIHwgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgNzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAo
MyldKSBeICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkg
JiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSA5OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pICE9ICh5
eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEw
OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pID09ICh5eXZz
cFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDExOgog
CiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pID49ICh5eXZzcFso
MykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEyOgogCiAg
ICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIDw9ICh5eXZzcFsoMykg
LSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDEzOgogCiAgICAg
ewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pID4gKHl5dnNwWygzKSAtICgz
KV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQ6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPCAoeXl2c3BbKDMpIC0gKDMpXSk7
Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNToKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA+PiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0g
ICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSA8PCAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNzoKIAogICAgIHsKICAgICAgICAgKHl5
dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAtICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQor
ICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDE4OgogCiAgICAgewogICAgICAgICAoeXl2YWwp
ID0gKHl5dnNwWygxKSAtICgzKV0pICsgKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTk6CkBAIC0xNTcxLDcgKzE1NjcsNyBAQCB5eXJlZHVj
ZToKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0g
KDMpXSkgJSAoeXl2c3BbKDMpIC0gKDMpXSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAg
ICBicmVhazsKIAogICBjYXNlIDIwOgpAQCAtMTU4OCw1MyArMTU4NCw1MiBAQCB5eXJlZHVjZToK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMp
XSkgLyAoeXl2c3BbKDMpIC0gKDMpXSk7CiAgICAgICAgIH0KLSAgICA7fQorICAgIH0KICAgICBi
cmVhazsKIAogICBjYXNlIDIxOgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygx
KSAtICgzKV0pICogKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMjI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAhICh5eXZzcFsoMikg
LSAoMildKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDIzOgogCiAgICAg
ewogICAgICAgICAoeXl2YWwpID0gfiAoeXl2c3BbKDIpIC0gKDIpXSk7Ci0gICAgO30KKyAgICB9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9IC0g
KHl5dnNwWygyKSAtICgyKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MjU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSArICh5eXZzcFsoMikgLSAoMildKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDI2OgogCiAgICAgewogICAgICAgICAo
eXl2YWwpID0gKHl5dnNwWygyKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
CiAKLS8qIExpbmUgMTI2NyBvZiB5YWNjLmMuICAqLwogCiAgICAgICBkZWZhdWx0OiBicmVhazsK
ICAgICB9CkBAIC0xNjQ2LDcgKzE2NDEsNiBAQCB5eXJlZHVjZToKIAogICAqKyt5eXZzcCA9IHl5
dmFsOwogCi0KICAgLyogTm93IGBzaGlmdCcgdGhlIHJlc3VsdCBvZiB0aGUgcmVkdWN0aW9uLiAg
RGV0ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAgdGhhdCBnb2VzIHRvLCBiYXNlZCBvbiB0aGUgc3Rh
dGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRoZSBydWxlCiAgICAgIG51bWJlciByZWR1Y2VkIGJ5
LiAgKi8KQEAgLTE3MTEsNyArMTcwNSw3IEBAIHl5ZXJybGFiOgogCiAgIGlmICh5eWVycnN0YXR1
cyA9PSAzKQogICAgIHsKLSAgICAgIC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVz
ZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIGFuCisgICAgICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBm
YWlsZWQgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIGFuCiAJIGVycm9yLCBkaXNjYXJk
IGl0LiAgKi8KIAogICAgICAgaWYgKHl5Y2hhciA8PSBZWUVPRikKQEAgLTE3MjgsNyArMTcyMiw3
IEBAIHl5ZXJybGFiOgogCX0KICAgICB9CiAKLSAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVzZSBs
b29rLWFoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgorICAvKiBFbHNlIHdpbGwg
dHJ5IHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBzaGlmdGluZyB0aGUgZXJyb3IKICAg
ICAgdG9rZW4uICAqLwogICBnb3RvIHl5ZXJybGFiMTsKIApAQCAtMTc4NSw5ICsxNzc5LDYgQEAg
eXllcnJsYWIxOgogICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKICAgICB9CiAK
LSAgaWYgKHl5biA9PSBZWUZJTkFMKQotICAgIFlZQUNDRVBUOwotCiAgICorK3l5dnNwID0geXls
dmFsOwogCiAKQEAgLTE4MTIsNyArMTgwMyw3IEBAIHl5YWJvcnRsYWI6CiAgIHl5cmVzdWx0ID0g
MTsKICAgZ290byB5eXJldHVybjsKIAotI2lmbmRlZiB5eW92ZXJmbG93CisjaWYgIWRlZmluZWQo
eXlvdmVyZmxvdykgfHwgWVlFUlJPUl9WRVJCT1NFCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCiB8IHl5ZXhoYXVzdGVkbGFiIC0tIG1lbW9yeSBl
eGhhdXN0aW9uIGNvbWVzIGhlcmUuICB8CiBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xODIzLDcgKzE4MTQsNyBAQCB5eWV4aGF1c3RlZGxh
YjoKICNlbmRpZgogCiB5eXJldHVybjoKLSAgaWYgKHl5Y2hhciAhPSBZWUVPRiAmJiB5eWNoYXIg
IT0gWVlFTVBUWSkKKyAgaWYgKHl5Y2hhciAhPSBZWUVNUFRZKQogICAgICB5eWRlc3RydWN0ICgi
Q2xlYW51cDogZGlzY2FyZGluZyBsb29rYWhlYWQiLAogCQkgeXl0b2tlbiwgJnl5bHZhbCwgY29u
dGV4dCk7CiAgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdoaWNo
IGFjdGlvbiB0cmlnZ2VyZWQKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0
ZXhTaGFkZXJUaW1pbmcuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQCB2b2lkIFJlc3RyaWN0VmVydGV4U2hh
ZGVyVGltaW5nOjp2aXNpdFN5CiB7CiAgICAgaWYgKElzU2FtcGxlcihub2RlLT5nZXRCYXNpY1R5
cGUoKSkpIHsKICAgICAgICAgKyttTnVtRXJyb3JzOwotICAgICAgICBtU2luay5wcmVmaXgoRVBy
ZWZpeEVycm9yKTsKLSAgICAgICAgbVNpbmsubG9jYXRpb24obm9kZS0+Z2V0TGluZSgpKTsKLSAg
ICAgICAgbVNpbmsgPDwgIlNhbXBsZXJzIGFyZSBub3QgcGVybWl0dGVkIGluIHZlcnRleCBzaGFk
ZXJzLlxuIjsKKyAgICAgICAgbVNpbmsubWVzc2FnZShFUHJlZml4RXJyb3IsCisgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+Z2V0TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICJTYW1w
bGVycyBhcmUgbm90IHBlcm1pdHRlZCBpbiB2ZXJ0ZXggc2hhZGVycyIpOwogICAgIH0KIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA3LTE1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgQU5HTEUg
dG8gcjI0MjYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTg1NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OiBSZW5hbWVkIERldGVjdFJlY3Vyc2lvbiB0byBEZXRlY3RDYWxs
RGVwdGggYW5kIGFkZGVkIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLgorCiAyMDEzLTA3LTE1ICBwZWF2
b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtDdXJsXSBEb3du
bG9hZCBkb2VzIG5vdCByZXBsYWNlIGV4aXN0aW5nIGZpbGUuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTI4NjYsNiArMjg2Niw3IEBAIGlmIChXVEZfVVNFXzNEX0dSQVBI
SUNTKQogICAgIGVuZGlmICgpCiAKICAgICBsaXN0KEFQUEVORCBBTkdMRVN1cHBvcnRfU09VUkNF
UworICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9z
eW1ib2xfdGFibGUuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21w
aWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJ
Un0vQU5HTEUvc3JjL2NvbXBpbGVyL0NvZGVHZW5HTFNMLmNwcAogICAgICAgICAke1RISVJEUEFS
VFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwCkBAIC0yODc2LDggKzI4Nzcs
OCBAQCBpZiAoV1RGX1VTRV8zRF9HUkFQSElDUykKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0v
QU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwCiAg
ICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBl
bmRlbmN5R3JhcGhPdXRwdXQuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3Ny
Yy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAKKyAgICAgICAg
JHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAK
ICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2Nv
bnRpbnVpdHkuY3BwCi0gICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxl
ci9EZXRlY3RSZWN1cnNpb24uY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3Ny
Yy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9B
TkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9
L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmNwcAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206705</attachid>
            <date>2013-07-15 17:07:07 -0700</date>
            <delta_ts>2013-07-15 18:19:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118550-20130715170628.patch</filename>
            <type>text/plain</type>
            <size>708064</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI1NiBAQAorMjAxMy0wNy0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFOR0xFIGZyb20gcjE5ODcgdG8gcjI0MjYgd2hpbGUg
a2VlcGluZyB0aGVzZSBjaGFuZ2VzOgorICAgICAgICBLZWVwaW5nICNpZiBkZWZpbmVkKF9NU0Nf
VkVSKSBhcm91bmQgI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MTgpIGluIERlcGVuZGVuY3lH
cmFwaC5jcHAuCisgICAgICAgIEtlZXBpbmcgaW5jbHVkZSBraHJwbGF0Zm9ybS5oIGluc3RlYWQg
b2YgS0hSL2tocnBsYXRmb3JtLmggaW4gU2hhZGVyTGFuZy5oLgorICAgICAgICBBZGRlZCBzdGF0
aWNfY2FzdHMgaW4gSW50ZXJtZWRpYXRlLmNwcCB0byBmaXggY29tcGlsaW5nIG9uIE1hYy4KKyAg
ICAgICAgQ2hhbmdlZCBlbnVtIGJpdCBmaWVsZHMgdG8ganVzdCBlbnVtcyBmb3IgR0NDIGluIFR5
cGVzLmggdG8gZml4IGNvbXBpbGluZyBmb3IgR1RLLgorICAgICAgICBSYW4gQmlzb24gb24gTWFj
IGFmdGVyIHJlbW92aW5nIHRoZSB1bnN1cHBvcnRlZCAlY29kZSB0YWcgKFNlZSBkaWZmIHVwbG9h
ZGVkIHRvIGJ1ZyBmb3IgZGV0YWlscykuCisgICAgICAgIEFkZGVkIFlZTFRZUEUgZGVmaW5pdGlv
biB0byBnbHNsYW5nX3RhYi5oIHdoaWNoIHdvdWxkIGhhdmUgYmVlbiBwdXQgdGhlcmUgYnkgdGhl
IHVuc3VwcG9ydGVkICVjb2RlIHRhZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBBTkdMRS5wbGlzdDogVXBkYXRlZCByZXZpc2lvbiBvZiBBTkdM
RSB0byAyNDI2LgorICAgICAgICAqIEFOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
ICAgIFJlbmFtZWQgRGV0ZWN0UmVjdXJzaW9uIHRvIERldGVjdENhbGxEZXB0aCBhbmQgYWRkZWQg
YnVpbHRpbl9zeW1ib2xfdGFibGUuCisgICAgICAgICogaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxh
bmcuaDoKKyAgICAgICAgKiBzcmMvY29tbW9uL3ZlcnNpb24uaDoKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvQmFzZVR5cGVzLmg6CisgICAgICAgIChnZXRRdWFsaWZpZXJTdHJpbmcpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9Db21tb24uaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29tcGls
ZXIuY3BwOgorICAgICAgICAoVENvbXBpbGVyOjpUQ29tcGlsZXIpOgorICAgICAgICAoVENvbXBp
bGVyOjpJbml0KToKKyAgICAgICAgKFRDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChUQ29t
cGlsZXI6OmRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChUQ29tcGlsZXI6OmVuZm9yY2VUaW1p
bmdSZXN0cmljdGlvbnMpOgorICAgICAgICAoVENvbXBpbGVyOjpsaW1pdEV4cHJlc3Npb25Db21w
bGV4aXR5KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oOgorICAgICAg
ICAoQ29uc3RhbnRVbmlvbjo6Q29uc3RhbnRVbmlvbik6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L0RldGVjdENhbGxEZXB0aC5jcHA6IEFkZGVkLgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpG
dW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1
bmN0aW9uTm9kZTo6Z2V0TmFtZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9u
Tm9kZTo6YWRkQ2FsbGVlKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2Rl
OjpkZXRlY3RDYWxsRGVwdGgpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5v
ZGU6OnJlc2V0KToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RGV0ZWN0Q2FsbERlcHRoKToK
KyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6fkRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChE
ZXRlY3RDYWxsRGVwdGg6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0
aDo6Y2hlY2tFeGNlZWRzTWF4RGVwdGgpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpyZXNl
dEZ1bmN0aW9uTm9kZXMpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVw
dGhGb3JGdW5jdGlvbik6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmRldGVjdENhbGxEZXB0
aCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmZpbmRGdW5jdGlvbkJ5TmFtZSk6CisgICAg
ICAgICogc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oOiBBZGRlZC4KKyAgICAgICAgKERl
dGVjdENhbGxEZXB0aDo6Z2V0SW5mb1NpbmspOgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRl
Y3RSZWN1cnNpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRlY3RS
ZWN1cnNpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRGlhZ25vc3RpY3Mu
Y3BwOgorICAgICAgICAoVERpYWdub3N0aWNzOjp3cml0ZUluZm8pOgorICAgICAgICAqIHNyYy9j
b21waWxlci9Gb3JMb29wVW5yb2xsLmNwcDoKKyAgICAgICAgKEZvckxvb3BVbnJvbGw6OmV2YWx1
YXRlSW50Q29uc3RhbnQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9JbmZvU2luay5jcHA6Cisg
ICAgICAgIChUSW5mb1NpbmtCYXNlOjpwcmVmaXgpOgorICAgICAgICAoVEluZm9TaW5rQmFzZTo6
bG9jYXRpb24pOgorICAgICAgICAoVEluZm9TaW5rQmFzZTo6bWVzc2FnZSk6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL0luZm9TaW5rLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0luaXRpYWxp
emUuY3BwOgorICAgICAgICAoVEJ1aWx0SW5zOjppbml0aWFsaXplKToKKyAgICAgICAgKElkZW50
aWZ5QnVpbHRJbnMpOgorICAgICAgICAoSW5pdEV4dGVuc2lvbkJlaGF2aW9yKToKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcDogVXBkYXRlZCBhbmQgYWRkZWQgc3RhdGlj
X2Nhc3RzIHRvIGZpeCBidWlsZCBlcnJvcnMgb24gTWFjLgorICAgICAgICAoVEludGVybWVkaWF0
ZTo6YWRkU3ltYm9sKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hdGgpOgor
ICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKToKKyAgICAgICAgKFRJbnRlcm1lZGlh
dGU6OmFkZEluZGV4KToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0aCk6Cisg
ICAgICAgIChUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcik6CisgICAgICAgIChU
SW50ZXJtZWRpYXRlOjphZGRDb252ZXJzaW9uKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6Omdy
b3dBZ2dyZWdhdGUpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6bWFrZUFnZ3JlZ2F0ZSk6Cisg
ICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24pOgorICAgICAgICAoVEludGVybWVk
aWF0ZTo6YWRkQ29tbWEpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQ29uc3RhbnRVbmlv
bik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKToKKyAgICAgICAgKFRJbnRl
cm1lZGlhdGU6OmFkZExvb3ApOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKToK
KyAgICAgICAgKFRJbnRlcm1VbmFyeTo6cHJvbW90ZSk6CisgICAgICAgIChUSW50ZXJtQmluYXJ5
Ojpwcm9tb3RlKToKKyAgICAgICAgKENvbXBhcmVTdHJ1Y3QpOgorICAgICAgICAoQ29tcGFyZVN0
cnVjdHVyZSk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZCk6CisgICAgICAg
IChUSW50ZXJtZWRpYXRlOjpwcm9tb3RlQ29uc3RhbnRVbmlvbik6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL091dHB1dEdMU0wuY3BwOgorICAgICAgICAoVE91dHB1dEdMU0w6OnZpc2l0U3ltYm9s
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oOgorICAgICAgICAqIHNyYy9j
b21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHA6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6Ondy
aXRlVmFyaWFibGVUeXBlKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6d3JpdGVDb25zdGFu
dFVuaW9uKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCaW5hcnkpOgorICAgICAg
ICAoVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChUT3V0cHV0R0xT
TEJhc2U6OmdldFR5cGVOYW1lKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6aGFzaEZ1bmN0
aW9uTmFtZSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnN0cnVjdERlY2xhcmVkKToKKyAg
ICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6ZGVjbGFyZVN0cnVjdCk6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL091dHB1dEdMU0xCYXNlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEhM
U0wuY3BwOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6Ok91dHB1dEhMU0wpOgorICAgICAgICAo
c2g6Ok91dHB1dEhMU0w6OmhlYWRlcik6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRT
eW1ib2wpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KToKKyAgICAgICAg
KHNoOjpPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChzaDo6T3V0cHV0SExT
TDo6dmlzaXRTZWxlY3Rpb24pOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0TG9vcCk6
CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcCk6CisgICAgICAg
IChzaDo6T3V0cHV0SExTTDo6dHlwZVN0cmluZyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6
aW5pdGlhbGl6ZXIpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKToK
KyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp3cml0ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAo
c2g6Ok91dHB1dEhMU0w6OmRlY29yYXRlRmllbGQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9P
dXRwdXRITFNMLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcDoKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6OnBhcnNlTWF0cml4RmllbGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmVy
cm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Ondhcm5pbmcpOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6YXNzaWduRXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVy
cm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmJpbmFyeU9wRXJyb3IpOgorICAgICAgICAo
VFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250
ZXh0OjpsVmFsdWVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVy
cm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNrKToK
KyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0
Ojpib29sRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJyb3JD
aGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNr
KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKToK
KyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxlcik6CisgICAgICAgIChUUGFy
c2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6
OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJh
eVR5cGVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVj
ayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZWNrKToKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpleHRl
bnNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbik6
CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojppc1ZhcmlhYmxlQnVpbHRJbik6CisgICAgICAgIChU
UGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIpOgorICAgICAgICAoVFBhcnNlQ29udGV4
dDo6YWRkQ29uc3RydWN0b3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0QnVp
bHRJbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QpOgorICAgICAg
ICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWN0b3JOb2RlKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRD
b25zdEFycmF5Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdCk6
CisgICAgICAgIChUUGFyc2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9uKToKKyAgICAg
ICAgKFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKToKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaDoKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OlRQYXJz
ZUNvbnRleHQpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cHJhZ21hKToKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcDoKKyAgICAgICAgKFRQb29sQWxsb2NhdG9yOjphbGxv
Y2F0ZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmg6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwOgorICAgICAgICAoU2hJbml0QnVpbHRJblJlc291cmNl
cyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKFRU
eXBlOjpUVHlwZSk6CisgICAgICAgIChUVHlwZTo6YnVpbGRNYW5nbGVkTmFtZSk6CisgICAgICAg
IChUVHlwZTo6Z2V0T2JqZWN0U2l6ZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpjb250YWluc0Fy
cmF5cyk6CisgICAgICAgIChUU3RydWN0dXJlOjpidWlsZE1hbmdsZWROYW1lKToKKyAgICAgICAg
KFRTdHJ1Y3R1cmU6OmNhbGN1bGF0ZU9iamVjdFNpemUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6
Y2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcpOgorICAgICAgICAoVFN5bWJvbFRhYmxlTGV2ZWw6OnJl
bGF0ZVRvRXh0ZW5zaW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaDoK
KyAgICAgICAgKFRTeW1ib2w6OnJlbGF0ZVRvRXh0ZW5zaW9uKToKKyAgICAgICAgKFRTeW1ib2w6
OmdldEV4dGVuc2lvbik6CisgICAgICAgIChUVmFyaWFibGU6OlRWYXJpYWJsZSk6CisgICAgICAg
IChUVmFyaWFibGU6OnNldFF1YWxpZmllcik6CisgICAgICAgIChUVmFyaWFibGU6OnNoYXJlQ29u
c3RQb2ludGVyKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVHlwZXMuaDogVXBkYXRlZCBhbmQg
Y2hhbmdlZCBlbnVtIGJpdCBmaWVsZHMgdG8gZW51bXMgdG8gZml4IGNvbXBpbGluZyB3aXRoIEdD
Qy4KKyAgICAgICAgKFRGaWVsZDo6VEZpZWxkKToKKyAgICAgICAgKFRGaWVsZDo6dHlwZSk6Cisg
ICAgICAgIChURmllbGQ6Om5hbWUpOgorICAgICAgICAoTmV3UG9vbFRGaWVsZExpc3QpOgorICAg
ICAgICAoVFN0cnVjdHVyZTo6VFN0cnVjdHVyZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpuYW1l
KToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmZpZWxkcyk6CisgICAgICAgIChUU3RydWN0dXJlOjpt
YW5nbGVkTmFtZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpvYmplY3RTaXplKToKKyAgICAgICAg
KFRTdHJ1Y3R1cmU6OmRlZXBlc3ROZXN0aW5nKToKKyAgICAgICAgKFRUeXBlOjpUVHlwZSk6Cisg
ICAgICAgIChUVHlwZTo6Y2xlYXJBcnJheW5lc3MpOgorICAgICAgICAoVFR5cGU6OmdldFN0cnVj
dCk6CisgICAgICAgIChUVHlwZTo6c2V0U3RydWN0KToKKyAgICAgICAgKFRUeXBlOjpnZXRNYW5n
bGVkTmFtZSk6CisgICAgICAgIChUVHlwZTo6Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcpOgorICAg
ICAgICAoVFR5cGU6OmlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cyk6CisgICAgICAgIChUUHVi
bGljVHlwZTo6c2V0QmFzaWMpOgorICAgICAgICAqIHNyYy9jb21waWxlci9WYXJpYWJsZUluZm8u
Y3BwOgorICAgICAgICAoZ2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8pOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoYnVp
bHRpbjEpOgorICAgICAgICAoYnVpbHRpbjIpOgorICAgICAgICAoYnVpbHRpbjMpOgorICAgICAg
ICAoSW5zZXJ0QnVpbHRJbkZ1bmN0aW9uc0NvbW1vbik6CisgICAgICAgIChJbnNlcnRCdWlsdElu
RnVuY3Rpb25zVmVydGV4KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xf
dGFibGUuaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmcubDoKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy55OgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNs
YW5nX2xleC5jcHA6CisgICAgICAgICh5eV9nZXRfcHJldmlvdXNfc3RhdGUpOgorICAgICAgICAo
eXlfdHJ5X05VTF90cmFucyk6CisgICAgICAgICh5eWdldF9sbG9jKToKKyAgICAgICAgKHl5c2V0
X2xsb2MpOgorICAgICAgICAoc3RyaW5nX2lucHV0KToKKyAgICAgICAgKGNoZWNrX3R5cGUpOgor
ICAgICAgICAocmVzZXJ2ZWRfd29yZCk6CisgICAgICAgIChnbHNsYW5nX3NjYW4pOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHA6CisgICAgICAgICh5eXN5bnRheF9lcnJv
cik6CisgICAgICAgICh5eWVycm9yKToKKyAgICAgICAgKGdsc2xhbmdfcGFyc2UpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oOiBSZWFkZGVkIFlZTFRZUEUgZGVmaW5pdGlv
biBhZnRlciBCaXNvbiByZW1vdmVkIGl0LgorICAgICAgICAqIHNyYy9jb21waWxlci9pbnRlcm1P
dXQuY3BwOgorICAgICAgICAoVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRVbmFyeSk6CisgICAgICAg
IChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChUT3V0cHV0VHJh
dmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9pbnRl
cm1lZGlhdGUuaDoKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpUSW50ZXJtTm9kZSk6CisgICAgICAg
IChUSW50ZXJtTm9kZTo6flRJbnRlcm1Ob2RlKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRM
aW5lKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpzZXRMaW5lKToKKyAgICAgICAgKFRJbnRlcm1O
b2RlOjpnZXRBc0xvb3BOb2RlKToKKyAgICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjpnZXRJ
Q29uc3QpOgorICAgICAgICAoVEludGVybUNvbnN0YW50VW5pb246OmdldEZDb25zdCk6CisgICAg
ICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Z2V0QkNvbnN0KToKKyAgICAgICAgKFRJbnRlcm1B
Z2dyZWdhdGU6OlRJbnRlcm1BZ2dyZWdhdGUpOgorICAgICAgICAoVEludGVybVRyYXZlcnNlcjo6
VEludGVybVRyYXZlcnNlcik6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpnZXRNYXhEZXB0
aCk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjppbmNyZW1lbnREZXB0aCk6CisgICAgICAg
ICogc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmg6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL3BhcnNlQ29uc3QuY3BwOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdFN5bWJv
bCk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKFRD
b25zdFRyYXZlcnNlcjo6dmlzaXRVbmFyeSk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZp
c2l0QWdncmVnYXRlKToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRTZWxlY3Rpb24p
OgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24pOgorICAgICAg
ICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdExvb3ApOgorICAgICAgICAoVENvbnN0VHJhdmVyc2Vy
Ojp2aXNpdEJyYW5jaCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjpwYXJzZUNvbnN0VHJlZSk6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNw
cDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGlt
aW5nLmNwcDoKKyAgICAgICAgKFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nOjp2aXNpdFN5bWJv
bCk6CisgICAgICAgICAgICBVcGRhdGVkIEFOR0xFIHRvIHIyNDI2IGFuZCByYW4gQmlzb24uCisK
IDIwMTMtMDYtMTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNv
cnQgYWxsIHRoZSBYY29kZSBwcm9qZWN0IGZpbGVzCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9BTkdMRS5wbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9B
TkdMRS5wbGlzdAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
QU5HTEUucGxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTYsMTMgKzYsMTMgQEAKIAkJPGtleT5PcGVu
U291cmNlUHJvamVjdDwva2V5PgogCQk8c3RyaW5nPkFOR0xFPC9zdHJpbmc+CiAJCTxrZXk+T3Bl
blNvdXJjZVZlcnNpb248L2tleT4KLQkJPHN0cmluZz5yMTY0MTwvc3RyaW5nPgorCQk8c3RyaW5n
PnIyNDI2PC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJjZVdlYnNpdGVVUkw8L2tleT4KIAkJPHN0
cmluZz5odHRwOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0Lzwvc3RyaW5nPgogCQk8
a2V5Pk9wZW5Tb3VyY2VTQ008L2tleT4KLQkJPHN0cmluZz5zdm4gY28gLXIxNjQxIGh0dHA6Ly9h
bmdsZXByb2plY3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLzwvc3RyaW5nPgorCQk8c3RyaW5n
PnN2biBjbyAtcjI0MjYgaHR0cDovL2FuZ2xlcHJvamVjdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1
bmsvPC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJjZUltcG9ydERhdGU8L2tleT4KLQkJPHN0cmlu
Zz4yMDEzLTAxLTA0PC9zdHJpbmc+CisJCTxzdHJpbmc+MjAxMy0wNi0xMzwvc3RyaW5nPgogCQk8
a2V5Pk9wZW5Tb3VyY2VMaWNlbnNlPC9rZXk+CiAJCTxzdHJpbmc+QlNEPC9zdHJpbmc+CiAJCTxr
ZXk+T3BlblNvdXJjZUxpY2Vuc2VGaWxlPC9rZXk+CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAgbGli
QU5HTEVfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0tI
Ui9raHJwbGF0Zm9ybS5oIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2Fu
Z2xldXRpbHMuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VU
eXBlcy5oIFwKKwlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9z
eW1ib2xfdGFibGUuY3BwIFwKKwlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
YnVpbHRpbl9zeW1ib2xfdGFibGUuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggXAogCVNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuR0xTTC5jcHAgXApAQCAtMzksMTAg
KzQxLDEwIEBAIGxpYkFOR0xFX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5oIFwKIAlTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBo
T3V0cHV0LmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdy
YXBoL0RlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBcCisJU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAgXAorCVNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguaCBcCiAJU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwIFwKIAlTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oIFwKLQlT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmNwcCBc
Ci0JU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5o
IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3Bw
IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuaCBc
CiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpcmVjdGl2ZUhhbmRsZXIu
Y3BwIFwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1RhcmdldC5wcmkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTUyNjQ5
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpA
QCAtMTgsNiArMTgsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAKIEhFQURFUlMgKz0gXAogICAgIHNy
Yy9jb21waWxlci9CYXNlVHlwZXMuaCBcCisgICAgc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9s
X3RhYmxlLmggXAogICAgIHNyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIFwK
ICAgICBzcmMvY29tcGlsZXIvQ29tbW9uLmggXAogICAgIHNyYy9jb21waWxlci9Db25zdGFudFVu
aW9uLmggXApAQCAtMjUsOCArMjYsOCBAQCBIRUFERVJTICs9IFwKICAgICBzcmMvY29tcGlsZXIv
ZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmggXAogICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9E
ZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmggXAogICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9EZXBl
bmRlbmN5R3JhcGhPdXRwdXQuaCBcCisgICAgc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5o
IFwKICAgICBzcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oIFwKLSAgICBzcmMvY29t
cGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmggXAogICAgIHNyYy9jb21waWxlci9EaWFnbm9zdGljcy5o
IFwKICAgICBzcmMvY29tcGlsZXIvRGlyZWN0aXZlSGFuZGxlci5oIFwKICAgICBzcmMvY29tcGls
ZXIvRXh0ZW5zaW9uQmVoYXZpb3IuaCBcCkBAIC04NCw2ICs4NSw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIHNyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaAogCiBTT1VS
Q0VTICs9IFwKKyAgICBzcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwIFwKICAg
ICBzcmMvY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIFwKICAgICBzcmMvY29t
cGlsZXIvQ29kZUdlbkdMU0wuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwIFwK
QEAgLTkyLDggKzk0LDggQEAgU09VUkNFUyArPSBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBo
L0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvZGVwZ3JhcGgv
RGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0Rl
cGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBcCisgICAgc3JjL2NvbXBpbGVyL0RldGVjdENhbGxE
ZXB0aC5jcHAgXAogICAgIHNyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNwcCBcCi0g
ICAgc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAgXAogICAgIHNyYy9jb21waWxlci9E
aWFnbm9zdGljcy5jcHAgXAogICAgIHNyYy9jb21waWxlci9EaXJlY3RpdmVIYW5kbGVyLmNwcCBc
CiAgICAgc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwIFwKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOSBAQAog
CQk0OTk1MUMwMzE0QjdBQUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDIxNEI3QUFCMzAwNjBF
OTZFIC8qIGxlbmd0aF9saW1pdHMuaCAqLzsgfTsKIAkJNDk5NTFDMDkxNEI3QUFEODAwNjBFOTZF
IC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAvKiBCdWlsdElu
RnVuY3Rpb25FbXVsYXRvci5jcHAgKi87IH07CiAJCTQ5OTUxQzBBMTRCN0FBRDgwMDYwRTk2RSAv
KiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDYxNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5j
dGlvbkVtdWxhdG9yLmggKi87IH07Ci0JCTQ5OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRl
Y3RSZWN1cnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDk5NTFDMDcxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5jcHAgKi87
IH07Ci0JCTQ5OTUxQzBDMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA4MTRCN0FB
RDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLzsgfTsKKwkJNDk5NTFDMEIxNEI3QUFE
ODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0
Q2FsbERlcHRoLmNwcCAqLzsgfTsKKwkJNDk5NTFDMEMxNEI3QUFEODAwNjBFOTZFIC8qIERldGVj
dENhbGxEZXB0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDk5NTFDMDgxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5oICovOyB9Owor
CQk1Q0NFQjhCNjE3OTA4RUVDMDBGRDk0OTYgLyogYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRUI4QjQxNzkw
OEUzQTAwRkQ5NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcCAqLzsgfTsKIAkJOTBEOUIx
MDIxMkUxMURDQjAwMkQ0MjU1IC8qIENvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMEY5MTJFMTFEQ0IwMDJENDI1NSAvKiBDb21w
aWxlci5jcHAgKi87IH07CiAJCTkwRDlCMTAzMTJFMTFEQ0IwMDJENDI1NSAvKiBFeHRlbnNpb25C
ZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTBEOUIwRkExMkUxMURDQjAwMkQ0MjU1IC8qIEV4dGVuc2lvbkJlaGF2aW9yLmggKi87IH07CiAJ
CTkwRDlCMTA0MTJFMTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5nX2xleC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjBGQjEyRTExRENCMDAyRDQy
NTUgLyogZ2xzbGFuZ19sZXguY3BwICovOyB9OwpAQCAtMTQwLDggKzE0MSwxMCBAQAogCQk0OTk1
MUMwMjE0QjdBQUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBsZW5ndGhfbGltaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdEluRnVuY3Rp
b25FbXVsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OTUxQzA2MTRC
N0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVj
dXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERldGVjdFJl
Y3Vyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5OTUxQzA4MTRCN0FB
RDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGV0ZWN0UmVjdXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGV0ZWN0Q2FsbERlcHRoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk5NTFDMDgxNEI3QUFEODAwNjBFOTZFIC8qIERldGVj
dENhbGxEZXB0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXRlY3RDYWxs
RGVwdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRUI4QjQxNzkwOEUzQTAw
RkQ5NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGJ1
aWx0aW5fc3ltYm9sX3RhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUND
RUI4QjUxNzkwOEUzQTAwRkQ5NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVEN0M1OUM1MTIwOEM2OEIwMDFDODczRSAvKiBBTkdMRS54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBBTkdMRS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUQ3QzU5QzYxMjA4QzY4QjAwMUM4NzNFIC8qIEJhc2UueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QzU5QzcxMjA4QzY4QjAwMUM4NzNFIC8qIERlYnVnUmVsZWFz
ZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2Uu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zOTAsNiArMzkzLDggQEAK
IAkJCQlBMjY1NjgyQzE1OUMyM0UxMDAzOTg1MzkgLyogZGVwZ3JhcGggKi8sCiAJCQkJRkIzOUQy
NDQxMjAwRjM1QTAwMDg4RTY5IC8qIHByZXByb2Nlc3NvciAqLywKIAkJCQlBMjY1NjgzNDE1OUMy
M0UxMDAzOTg1MzkgLyogdGltaW5nICovLAorCQkJCTVDQ0VCOEI0MTc5MDhFM0EwMEZEOTQ5NiAv
KiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgKi8sCisJCQkJNUNDRUI4QjUxNzkwOEUzQTAwRkQ5
NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmggKi8sCiAJCQkJRkIzOUQyMjExMjAwRjM1QTAw
MDg4RTY5IC8qIEJhc2VUeXBlcy5oICovLAogCQkJCTQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAv
KiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgKi8sCiAJCQkJNDk5NTFDMDYxNEI3QUFEODAw
NjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggKi8sCkBAIC0zOTksOCArNDA0LDgg
QEAKIAkJCQlGQjM5RDIyNTEyMDBGMzVBMDAwODhFNjkgLyogQ29uc3RhbnRVbmlvbi5oICovLAog
CQkJCUZCMzlEMjI2MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5jcHAgKi8sCiAJCQkJRkIzOUQy
MjcxMjAwRjM1QTAwMDg4RTY5IC8qIGRlYnVnLmggKi8sCi0JCQkJNDk5NTFDMDcxNEI3QUFEODAw
NjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5jcHAgKi8sCi0JCQkJNDk5NTFDMDgxNEI3QUFEODAw
NjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5oICovLAorCQkJCTQ5OTUxQzA3MTRCN0FBRDgwMDYw
RTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguY3BwICovLAorCQkJCTQ5OTUxQzA4MTRCN0FBRDgwMDYw
RTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguaCAqLywKIAkJCQlBMjY1NjdCMDE1OUMyMUIxMDAzOTg1
MzkgLyogRGlhZ25vc3RpY3MuY3BwICovLAogCQkJCUEyNjU2N0IxMTU5QzIxQjEwMDM5ODUzOSAv
KiBEaWFnbm9zdGljcy5oICovLAogCQkJCUEyNjU2N0IyMTU5QzIxQjEwMDM5ODUzOSAvKiBEaXJl
Y3RpdmVIYW5kbGVyLmNwcCAqLywKQEAgLTUzMCw3ICs1MzUsNyBAQAogCQkJCUEyNjU2ODNBMTU5
QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCUEy
NjU2ODNDMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMjY1NjgzRTE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBo
T3V0cHV0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0OTk1MUMwQzE0QjdBQUQ4MDA2MEU5NkUgLyog
RGV0ZWN0UmVjdXJzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTk1MUMwQzE0QjdBQUQ4MDA2
MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1NjdCQzE1
OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25vc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRG
OEFEMTY5NzRERUQwMDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUEyNjU2N0JFMTU5QzIxQjEwMDM5ODUzOSAvKiBEaXJlY3RpdmVIYW5kbGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTYzNSw3ICs2NDAsNyBAQAogCQkJCUEyNjU2ODNCMTU5QzIzRTEwMDM5ODUz
OSAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2
ODNEMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTI2NTY4M0YxNTlDMjNFMTAwMzk4NTM5IC8qIERlcGVuZGVuY3lHcmFwaFRy
YXZlcnNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ5OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAv
KiBEZXRlY3RSZWN1cnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDk5NTFDMEIxNEI3QUFE
ODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1
NjdCQjE1OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25vc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTI2NEY4QUMxNjk3NERFRDAwNkZBQTVBIC8qIERpYWdub3N0aWNzQmFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBMjY1NjdCRDE1OUMyMUIxMDAzOTg1MzkgLyogRGlyZWN0aXZlSGFuZGxl
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY3MCw2ICs2NzUsNyBAQAogCQkJCUEyNjU2ODQwMTU5
QzIzRTEwMDM5ODUzOSAvKiBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUEyNjU2ODQyMTU5QzIzRTEwMDM5ODUzOSAvKiBSZXN0cmljdFZlcnRleFNo
YWRlclRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MEQ5QjEwOTEyRTExRENCMDAyRDQy
NTUgLyogU2VhcmNoU3ltYm9sLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0VCOEI2MTc5MDhF
RUMwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGQjM5RDJBODEyMDBGMzVBMDAwODhFNjkgLyogU2hhZGVyTGFuZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGQjM5RDJBQTEyMDBGMzVBMDAwODhFNjkgLyogU3ltYm9sVGFibGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTI2NEY4QzExNjk3NERFRDAwNkZBQTVBIC8qIFRva2VuLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5H
L1NoYWRlckxhbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNs
dWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTksNyArMTU5LDEzIEBAIHR5cGVkZWYgZW51bSB7CiAgIC8vIHZlYzIzNCwgb3IgbWF0
MjM0IHR5cGUuIFRoZSBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IGVudW0sCiAgIC8vIHNw
ZWNpZmllZCBpbiB0aGUgU2hCdWlsdEluUmVzb3VyY2VzIHdoZW4gY29uc3RydWN0aW5nIHRoZQog
ICAvLyBjb21waWxlciwgc2VsZWN0cyB0aGUgc3RyYXRlZ3kgZm9yIHRoZSBjbGFtcGluZyBpbXBs
ZW1lbnRhdGlvbi4KLSAgU0hfQ0xBTVBfSU5ESVJFQ1RfQVJSQVlfQk9VTkRTID0gMHgxMDAwCisg
IFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUyA9IDB4MTAwMCwKKworICAvLyBUaGlzIGZs
YWcgbGltaXRzIHRoZSBjb21wbGV4aXR5IG9mIGFuIGV4cHJlc3Npb24uCisgIFNIX0xJTUlUX0VY
UFJFU1NJT05fQ09NUExFWElUWSA9IDB4MjAwMCwKKworICAvLyBUaGlzIGZsYWcgbGltaXRzIHRo
ZSBkZXB0aCBvZiB0aGUgY2FsbCBzdGFjay4KKyAgU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSCA9
IDB4NDAwMCwKIH0gU2hDb21waWxlT3B0aW9uczsKIAogLy8gRGVmaW5lcyBhbHRlcm5hdGUgc3Ry
YXRlZ2llcyBmb3IgaW1wbGVtZW50aW5nIGFycmF5IGluZGV4IGNsYW1waW5nLgpAQCAtMjA5LDYg
KzIxNSw3IEBAIHR5cGVkZWYgc3RydWN0CiAgICAgaW50IE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWw7
CiAgICAgaW50IEFSQl90ZXh0dXJlX3JlY3RhbmdsZTsKICAgICBpbnQgRVhUX2RyYXdfYnVmZmVy
czsKKyAgICBpbnQgRVhUX2ZyYWdfZGVwdGg7CiAKICAgICAvLyBTZXQgdG8gMSBpZiBoaWdocCBw
cmVjaXNpb24gaXMgc3VwcG9ydGVkIGluIHRoZSBmcmFnbWVudCBsYW5ndWFnZS4KICAgICAvLyBE
ZWZhdWx0IGlzIDAuCkBAIC0yMjIsNiArMjI5LDEyIEBAIHR5cGVkZWYgc3RydWN0CiAgICAgLy8g
U2VsZWN0cyBhIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIGltcGxlbWVudGluZyBhcnJheSBpbmRleCBj
bGFtcGluZy4KICAgICAvLyBEZWZhdWx0IGlzIFNIX0NMQU1QX1dJVEhfQ0xBTVBfSU5UUklOU0lD
LgogICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgQXJyYXlJbmRleENsYW1waW5nU3Ry
YXRlZ3k7CisKKyAgICAvLyBUaGUgbWF4aW11bSBjb21wbGV4aXR5IGFuIGV4cHJlc3Npb24gY2Fu
IGJlLgorICAgIGludCBNYXhFeHByZXNzaW9uQ29tcGxleGl0eTsKKworICAgIC8vIFRoZSBtYXhp
bXVtIGRlcHRoIGEgY2FsbCBzdGFjayBjYW4gYmUuCisgICAgaW50IE1heENhbGxTdGFja0RlcHRo
OwogfSBTaEJ1aWx0SW5SZXNvdXJjZXM7CiAKIC8vCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvQmFzZVR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCShyZXZpc2lvbiAxNTI2NDkpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQmFzZVR5cGVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkwLDEwICs5MCw2IEBAIGVudW0gVFF1YWxpZmllcgogICAgIEV2cUludmFy
aWFudFZhcnlpbmdPdXQsICAgIC8vIHZlcnRleCBzaGFkZXJzIG9ubHkgIHJlYWQvd3JpdGUKICAg
ICBFdnFVbmlmb3JtLCAgICAgICAvLyBSZWFkb25seSwgdmVydGV4IGFuZCBmcmFnbWVudAogCi0g
ICAgLy8gcGFjay91bnBhY2sgaW5wdXQgYW5kIG91dHB1dAotICAgIEV2cUlucHV0LAotICAgIEV2
cU91dHB1dCwKLQogICAgIC8vIHBhcmFtZXRlcnMKICAgICBFdnFJbiwKICAgICBFdnFPdXQsCkBA
IC0xMTIsNiArMTA4LDcgQEAgZW51bSBUUXVhbGlmaWVyCiAgICAgLy8gYnVpbHQtaW5zIHdyaXR0
ZW4gYnkgZnJhZ21lbnQgc2hhZGVyCiAgICAgRXZxRnJhZ0NvbG9yLAogICAgIEV2cUZyYWdEYXRh
LAorICAgIEV2cUZyYWdEZXB0aCwKIAogICAgIC8vIGVuZCBvZiBsaXN0CiAgICAgRXZxTGFzdApA
QCAtMTM3LDE0ICsxMzQsMTMgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGdldFF1YWxpZmllclN0cmlu
ZyhUUQogICAgIGNhc2UgRXZxSW46ICAgICAgICAgICAgIHJldHVybiAiaW4iOyAgICAgICAgICAg
ICBicmVhazsKICAgICBjYXNlIEV2cU91dDogICAgICAgICAgICByZXR1cm4gIm91dCI7ICAgICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFJbk91dDogICAgICAgICAgcmV0dXJuICJpbm91dCI7
ICAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxSW5wdXQ6ICAgICAgICAgIHJldHVybiAiaW5w
dXQiOyAgICAgICAgICBicmVhazsKLSAgICBjYXNlIEV2cU91dHB1dDogICAgICAgICByZXR1cm4g
Im91dHB1dCI7ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFQb3NpdGlvbjogICAgICAgcmV0
dXJuICJQb3NpdGlvbiI7ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxUG9pbnRTaXplOiAgICAg
IHJldHVybiAiUG9pbnRTaXplIjsgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb29yZDog
ICAgICByZXR1cm4gIkZyYWdDb29yZCI7ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcm9udEZh
Y2luZzogICAgcmV0dXJuICJGcm9udEZhY2luZyI7ICAgIGJyZWFrOwogICAgIGNhc2UgRXZxRnJh
Z0NvbG9yOiAgICAgIHJldHVybiAiRnJhZ0NvbG9yIjsgICAgICBicmVhazsKICAgICBjYXNlIEV2
cUZyYWdEYXRhOiAgICAgICByZXR1cm4gIkZyYWdEYXRhIjsgICAgICBicmVhazsKKyAgICBjYXNl
IEV2cUZyYWdEZXB0aDogICAgICByZXR1cm4gIkZyYWdEZXB0aCI7ICAgICBicmVhazsKICAgICBk
ZWZhdWx0OiAgICAgICAgICAgICAgICByZXR1cm4gInVua25vd24gcXVhbGlmaWVyIjsKICAgICB9
CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tbW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1v
bi5oCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0LDI0ICsxNCwxMiBAQAogCiAjaW5j
bHVkZSAiY29tcGlsZXIvUG9vbEFsbG9jLmgiCiAKLS8vIFdlIG5lZWQgdHdvIHBpZWNlcyBvZiBp
bmZvcm1hdGlvbiB0byByZXBvcnQgZXJyb3JzL3dhcm5pbmdzIC0gc3RyaW5nIGFuZAotLy8gbGlu
ZSBudW1iZXIuIFdlIGVuY29kZSB0aGVzZSBpbnRvIGEgc2luZ2xlIGludCBzbyB0aGF0IGl0IGNh
biBiZSBlYXNpbHkKLS8vIGluY3JlbWVudGVkL2RlY3JlbWVudGVkIGJ5IGxleGVyLiBUaGUgcmln
aHQgU09VUkNFX0xPQ19MSU5FX1NJWkUgYml0cyBzdG9yZQotLy8gbGluZSBudW1iZXIgd2hpbGUg
dGhlIHJlc3Qgc3RvcmUgdGhlIHN0cmluZyBudW1iZXIuIFNpbmNlIHRoZSBzaGFkZXJzIGFyZQot
Ly8gdXN1YWxseSBzbWFsbCwgd2Ugc2hvdWxkIG5vdCBydW4gb3V0IG9mIG1lbW9yeS4gU09VUkNF
X0xPQ19MSU5FX1NJWkUKLS8vIGNhbiBiZSBpbmNyZWFzZWQgdG8gYWxsZXZpYXRlIHRoaXMgaXNz
dWUuCi10eXBlZGVmIGludCBUU291cmNlTG9jOwotY29uc3QgdW5zaWduZWQgaW50IFNPVVJDRV9M
T0NfTElORV9TSVpFID0gMTY7ICAvLyBpbiBiaXRzLgotY29uc3QgdW5zaWduZWQgaW50IFNPVVJD
RV9MT0NfTElORV9NQVNLID0gKDEgPDwgU09VUkNFX0xPQ19MSU5FX1NJWkUpIC0gMTsKLQotaW5s
aW5lIFRTb3VyY2VMb2MgRW5jb2RlU291cmNlTG9jKGludCBzdHJpbmcsIGludCBsaW5lKSB7Ci0g
ICAgcmV0dXJuIChzdHJpbmcgPDwgU09VUkNFX0xPQ19MSU5FX1NJWkUpIHwgKGxpbmUgJiBTT1VS
Q0VfTE9DX0xJTkVfTUFTSyk7Ci19Ci0KLWlubGluZSB2b2lkIERlY29kZVNvdXJjZUxvYyhUU291
cmNlTG9jIGxvYywgaW50KiBzdHJpbmcsIGludCogbGluZSkgewotICAgIGlmIChzdHJpbmcpICpz
dHJpbmcgPSBsb2MgPj4gU09VUkNFX0xPQ19MSU5FX1NJWkU7Ci0gICAgaWYgKGxpbmUpICpsaW5l
ID0gbG9jICYgU09VUkNFX0xPQ19MSU5FX01BU0s7Ci19CitzdHJ1Y3QgVFNvdXJjZUxvYyB7Cisg
ICAgaW50IGZpcnN0X2ZpbGU7CisgICAgaW50IGZpcnN0X2xpbmU7CisgICAgaW50IGxhc3RfZmls
ZTsKKyAgICBpbnQgbGFzdF9saW5lOworfTsKIAogLy8KIC8vIFB1dCBQT09MX0FMTE9DQVRPUl9O
RVdfREVMRVRFIGluIGJhc2UgY2xhc3NlcyB0byBtYWtlIHRoZW0gdXNlIHRoaXMgc2NoZW1lLgpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tcGls
ZXIuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOSBAQAogLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAKKyNpbmNsdWRlICJjb21waWxlci9idWls
dGluX3N5bWJvbF90YWJsZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgiCisjaW5jbHVk
ZSAiY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvRm9yTG9v
cFVucm9sbC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0luaXRpYWxpemUuaCIKICNpbmNsdWRlICJj
b21waWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmgiCkBAIC02MiwxMSArNjMsMjYgQEAgYm9v
bCBJbml0aWFsaXplU3ltYm9sVGFibGUoCiAKICAgICAgICAgaWYgKFBhUGFyc2VTdHJpbmdzKDEs
ICZidWlsdEluU2hhZGVycywgJmJ1aWx0SW5MZW5ndGhzLCAmcGFyc2VDb250ZXh0KSAhPSAwKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsICJVbmFibGUgdG8gcGFyc2UgYnVpbHQtaW5zIik7CisgICAgICAgICAgICBpbmZv
U2luay5pbmZvLnByZWZpeChFUHJlZml4SW50ZXJuYWxFcnJvcik7CisgICAgICAgICAgICBpbmZv
U2luay5pbmZvIDw8ICJVbmFibGUgdG8gcGFyc2UgYnVpbHQtaW5zIjsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAorCisgICAgc3dpdGNoICh0eXBlKSB7Cisg
ICAgY2FzZSBTSF9GUkFHTUVOVF9TSEFERVI6CisgICAgICAgIEluc2VydEJ1aWx0SW5GdW5jdGlv
bnNDb21tb24ocmVzb3VyY2VzLCAmc3ltYm9sVGFibGUpOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgU0hfVkVSVEVYX1NIQURFUjoKKyAgICAgICAgSW5zZXJ0QnVpbHRJbkZ1bmN0aW9uc0Nv
bW1vbihyZXNvdXJjZXMsICZzeW1ib2xUYWJsZSk7CisgICAgICAgIEluc2VydEJ1aWx0SW5GdW5j
dGlvbnNWZXJ0ZXgocmVzb3VyY2VzLCAmc3ltYm9sVGFibGUpOworICAgICAgICBicmVhazsKKwor
ICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSAmJiAiTGFuZ3VhZ2Ugbm90IHN1cHBvcnRlZCIpOwor
ICAgIH0KKwogICAgIElkZW50aWZ5QnVpbHRJbnModHlwZSwgc3BlYywgcmVzb3VyY2VzLCBzeW1i
b2xUYWJsZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwMyw2ICsxMTksOSBAQCBUU2hIYW5k
bGVCYXNlOjp+VFNoSGFuZGxlQmFzZSgpIHsKIFRDb21waWxlcjo6VENvbXBpbGVyKFNoU2hhZGVy
VHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYykKICAgICA6IHNoYWRlclR5cGUodHlwZSksCiAg
ICAgICBzaGFkZXJTcGVjKHNwZWMpLAorICAgICAgbWF4VW5pZm9ybVZlY3RvcnMoMCksCisgICAg
ICBtYXhFeHByZXNzaW9uQ29tcGxleGl0eSgwKSwKKyAgICAgIG1heENhbGxTdGFja0RlcHRoKDAp
LAogICAgICAgZnJhZ21lbnRQcmVjaXNpb25IaWdoKGZhbHNlKSwKICAgICAgIGNsYW1waW5nU3Ry
YXRlZ3koU0hfQ0xBTVBfV0lUSF9DTEFNUF9JTlRSSU5TSUMpLAogICAgICAgYnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IodHlwZSkKQEAgLTEyMSwxMSArMTQwLDE0IEBAIGJvb2wgVENvbXBpbGVyOjpJ
bml0KGNvbnN0IFNoQnVpbHRJblJlc28KICAgICBtYXhVbmlmb3JtVmVjdG9ycyA9IChzaGFkZXJU
eXBlID09IFNIX1ZFUlRFWF9TSEFERVIpID8KICAgICAgICAgcmVzb3VyY2VzLk1heFZlcnRleFVu
aWZvcm1WZWN0b3JzIDoKICAgICAgICAgcmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3Rv
cnM7CisgICAgbWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkgPSByZXNvdXJjZXMuTWF4RXhwcmVzc2lv
bkNvbXBsZXhpdHk7CisgICAgbWF4Q2FsbFN0YWNrRGVwdGggPSByZXNvdXJjZXMuTWF4Q2FsbFN0
YWNrRGVwdGg7CiAgICAgVFNjb3BlZFBvb2xBbGxvY2F0b3Igc2NvcGVkQWxsb2MoJmFsbG9jYXRv
ciwgZmFsc2UpOwogCiAgICAgLy8gR2VuZXJhdGUgYnVpbHQtaW4gc3ltYm9sIHRhYmxlLgogICAg
IGlmICghSW5pdEJ1aWx0SW5TeW1ib2xUYWJsZShyZXNvdXJjZXMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICBJbml0RXh0ZW5zaW9uQmVoYXZpb3IocmVzb3VyY2VzLCBleHRlbnNpb25C
ZWhhdmlvcik7CiAgICAgZnJhZ21lbnRQcmVjaXNpb25IaWdoID0gcmVzb3VyY2VzLkZyYWdtZW50
UHJlY2lzaW9uSGlnaCA9PSAxOwogCkBAIC0xNzAsOCArMTkyLDEwIEBAIGJvb2wgVENvbXBpbGVy
Ojpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAvLyBXZSBwcmVzZXJ2ZSBzeW1ib2xzIGF0
IHRoZSBidWlsdC1pbiBsZXZlbCBmcm9tIGNvbXBpbGUtdG8tY29tcGlsZS4KICAgICAvLyBTdGFy
dCBwdXNoaW5nIHRoZSB1c2VyLWRlZmluZWQgc3ltYm9scyBhdCBnbG9iYWwgbGV2ZWwuCiAgICAg
c3ltYm9sVGFibGUucHVzaCgpOwotICAgIGlmICghc3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
KQotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJX
cm9uZyBzeW1ib2wgdGFibGUgbGV2ZWwiKTsKKyAgICBpZiAoIXN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSkgeworICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4SW50ZXJuYWxF
cnJvcik7CisgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIldyb25nIHN5bWJvbCB0YWJsZSBsZXZl
bCI7CisgICAgfQogCiAgICAgLy8gUGFyc2Ugc2hhZGVyLgogICAgIGJvb2wgc3VjY2VzcyA9CkBA
IC0xODIsNyArMjA2LDcgQEAgYm9vbCBUQ29tcGlsZXI6OmNvbXBpbGUoY29uc3QgY2hhciogY29u
cwogICAgICAgICBzdWNjZXNzID0gaW50ZXJtZWRpYXRlLnBvc3RQcm9jZXNzKHJvb3QpOwogCiAg
ICAgICAgIGlmIChzdWNjZXNzKQotICAgICAgICAgICAgc3VjY2VzcyA9IGRldGVjdFJlY3Vyc2lv
bihyb290KTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBkZXRlY3RDYWxsRGVwdGgocm9vdCwgaW5m
b1NpbmssIChjb21waWxlT3B0aW9ucyAmIFNIX0xJTUlUX0NBTExfU1RBQ0tfREVQVEgpICE9IDAp
OwogCiAgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX1ZBTElEQVRF
X0xPT1BfSU5ERVhJTkcpKQogICAgICAgICAgICAgc3VjY2VzcyA9IHZhbGlkYXRlTGltaXRhdGlv
bnMocm9vdCk7CkBAIC0yMDUsNiArMjI5LDEwIEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNv
bnN0IGNoYXIqIGNvbnMKICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYg
U0hfQ0xBTVBfSU5ESVJFQ1RfQVJSQVlfQk9VTkRTKSkKICAgICAgICAgICAgIGFycmF5Qm91bmRz
Q2xhbXBlci5NYXJrSW5kaXJlY3RBcnJheUJvdW5kc0ZvckNsYW1waW5nKHJvb3QpOwogCisgICAg
ICAgIC8vIERpc2FsbG93IGV4cHJlc3Npb25zIGRlZW1lZCB0b28gY29tcGxleC4KKyAgICAgICAg
aWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfTElNSVRfRVhQUkVTU0lPTl9DT01Q
TEVYSVRZKSkKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5
KHJvb3QpOworCiAgICAgICAgIC8vIENhbGwgbWFwTG9uZ1ZhcmlhYmxlTmFtZXMoKSBiZWZvcmUg
Y29sbGVjdEF0dHJpYnNVbmlmb3JtcygpIHNvIGluCiAgICAgICAgIC8vIGNvbGxlY3RBdHRyaWJz
VW5pZm9ybXMoKSB3ZSBhbHJlYWR5IGhhdmUgdGhlIG1hcHBlZCBzeW1ib2wgbmFtZXMgYW5kCiAg
ICAgICAgIC8vIHdlIGNvdWxkIGNvbXBvc2l0ZSBtYXBwZWQgYW5kIG9yaWdpbmFsIHZhcmlhYmxl
IG5hbWVzLgpAQCAtMjE3LDcgKzI0NSw4IEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0
IGNoYXIqIGNvbnMKICAgICAgICAgICAgIGlmIChjb21waWxlT3B0aW9ucyAmIFNIX0VORk9SQ0Vf
UEFDS0lOR19SRVNUUklDVElPTlMpIHsKICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZW5mb3Jj
ZVBhY2tpbmdSZXN0cmljdGlvbnMoKTsKICAgICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsK
LSAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwg
InRvbyBtYW55IHVuaWZvcm1zIik7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
cHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8g
PDwgInRvbyBtYW55IHVuaWZvcm1zIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTI2MywxOCArMjkyLDI0IEBAIHZvaWQgVENvbXBpbGVyOjpjbGVhclJl
c3VsdHMoKQogICAgIG5hbWVNYXAuY2xlYXIoKTsKIH0KIAotYm9vbCBUQ29tcGlsZXI6OmRldGVj
dFJlY3Vyc2lvbihUSW50ZXJtTm9kZSogcm9vdCkKK2Jvb2wgVENvbXBpbGVyOjpkZXRlY3RDYWxs
RGVwdGgoVEludGVybU5vZGUqIHJvb3QsIFRJbmZvU2luayYgaW5mb1NpbmssIGJvb2wgbGltaXRD
YWxsU3RhY2tEZXB0aCkKIHsKLSAgICBEZXRlY3RSZWN1cnNpb24gZGV0ZWN0OworICAgIERldGVj
dENhbGxEZXB0aCBkZXRlY3QoaW5mb1NpbmssIGxpbWl0Q2FsbFN0YWNrRGVwdGgsIG1heENhbGxT
dGFja0RlcHRoKTsKICAgICByb290LT50cmF2ZXJzZSgmZGV0ZWN0KTsKLSAgICBzd2l0Y2ggKGRl
dGVjdC5kZXRlY3RSZWN1cnNpb24oKSkgewotICAgICAgICBjYXNlIERldGVjdFJlY3Vyc2lvbjo6
a0Vycm9yTm9uZToKKyAgICBzd2l0Y2ggKGRldGVjdC5kZXRlY3RDYWxsRGVwdGgoKSkgeworICAg
ICAgICBjYXNlIERldGVjdENhbGxEZXB0aDo6a0Vycm9yTm9uZToKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICBjYXNlIERldGVjdFJlY3Vyc2lvbjo6a0Vycm9yTWlzc2luZ01haW46
Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiTWlzc2lu
ZyBtYWluKCkiKTsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvck1pc3NpbmdN
YWluOgorICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9yKTsKKyAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIk1pc3NpbmcgbWFpbigpIjsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBEZXRlY3RSZWN1cnNpb246OmtFcnJvclJlY3Vy
c2lvbjoKLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsICJG
dW5jdGlvbiByZWN1cnNpb24gZGV0ZWN0ZWQiKTsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVw
dGg6OmtFcnJvclJlY3Vyc2lvbjoKKyAgICAgICAgICAgIGluZm9TaW5rLmluZm8ucHJlZml4KEVQ
cmVmaXhFcnJvcik7CisgICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJGdW5jdGlvbiByZWN1
cnNpb24gZGV0ZWN0ZWQiOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNl
IERldGVjdENhbGxEZXB0aDo6a0Vycm9yTWF4RGVwdGhFeGNlZWRlZDoKKyAgICAgICAgICAgIGlu
Zm9TaW5rLmluZm8ucHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICBpbmZvU2luay5p
bmZvIDw8ICJGdW5jdGlvbiBjYWxsIHN0YWNrIHRvbyBkZWVwIjsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CkBA
IC0zMjAsNiArMzU1LDI4IEBAIGJvb2wgVENvbXBpbGVyOjplbmZvcmNlVGltaW5nUmVzdHJpY3Rp
b24KICAgICB9CiB9CiAKK2Jvb2wgVENvbXBpbGVyOjpsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5
KFRJbnRlcm1Ob2RlKiByb290KQoreworICAgIFRJbnRlcm1UcmF2ZXJzZXIgdHJhdmVyc2VyOwor
ICAgIHJvb3QtPnRyYXZlcnNlKCZ0cmF2ZXJzZXIpOworICAgIFREZXBlbmRlbmN5R3JhcGggZ3Jh
cGgocm9vdCk7CisKKyAgICBmb3IgKFRGdW5jdGlvbkNhbGxWZWN0b3I6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSBncmFwaC5iZWdpblVzZXJEZWZpbmVkRnVuY3Rpb25DYWxscygpOworICAgICAgICAg
aXRlciAhPSBncmFwaC5lbmRVc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbHMoKTsKKyAgICAgICAgICsr
aXRlcikKKyAgICB7CisgICAgICAgIFRHcmFwaEZ1bmN0aW9uQ2FsbCogc2FtcGxlclN5bWJvbCA9
ICppdGVyOworICAgICAgICBURGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyIGdyYXBoVHJhdmVyc2Vy
OworICAgICAgICBzYW1wbGVyU3ltYm9sLT50cmF2ZXJzZSgmZ3JhcGhUcmF2ZXJzZXIpOworICAg
IH0KKworICAgIGlmICh0cmF2ZXJzZXIuZ2V0TWF4RGVwdGgoKSA+IG1heEV4cHJlc3Npb25Db21w
bGV4aXR5KSB7CisgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIkV4cHJlc3Npb24gdG9vIGNvbXBs
ZXguIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogYm9vbCBUQ29tcGlsZXI6OmVuZm9yY2VGcmFnbWVudFNoYWRlclRpbWluZ1Jlc3RyaWN0aW9u
cyhjb25zdCBURGVwZW5kZW5jeUdyYXBoJiBncmFwaCkKIHsKICAgICBSZXN0cmljdEZyYWdtZW50
U2hhZGVyVGltaW5nIHJlc3RyaWN0b3IoaW5mb1NpbmsuaW5mbyk7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db25zdGFudFVuaW9uLmgJKHJl
dmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9D
b25zdGFudFVuaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE0LDYgKzE0LDcgQEAgcHVibGljOgogICAg
IENvbnN0YW50VW5pb24oKQogICAgIHsKICAgICAgICAgaUNvbnN0ID0gMDsKKyAgICAgICAgdHlw
ZSA9IEVidFZvaWQ7CiAgICAgfQogCiAgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9i
YWxQb29sQWxsb2NhdG9yKSAgICAgICAgCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVw
dGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg1IEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisjaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgiCisjaW5jbHVkZSAiY29t
cGlsZXIvSW5mb1NpbmsuaCIKKworRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OkZ1bmN0
aW9uTm9kZShjb25zdCBUU3RyaW5nJiBmbmFtZSkKKyAgICA6IG5hbWUoZm5hbWUpLAorICAgICAg
dmlzaXQoUHJlVmlzaXQpCit7Cit9CisKK2NvbnN0IFRTdHJpbmcmIERldGVjdENhbGxEZXB0aDo6
RnVuY3Rpb25Ob2RlOjpnZXROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbmFtZTsKK30KKwor
dm9pZCBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6YWRkQ2FsbGVlKAorICAgIERldGVj
dENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlKiBjYWxsZWUpCit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChjYWxsZWVzW2ldID09
IGNhbGxlZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FsbGVlcy5wdXNoX2Jh
Y2soY2FsbGVlKTsKK30KKworaW50IERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpkZXRl
Y3RDYWxsRGVwdGgoRGV0ZWN0Q2FsbERlcHRoKiBkZXRlY3RDYWxsRGVwdGgsIGludCBkZXB0aCkK
K3sKKyAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOworICAgIEFTU0VSVChkZXRlY3RDYWxs
RGVwdGgpOworCisgICAgaW50IG1heERlcHRoID0gZGVwdGg7CisgICAgdmlzaXQgPSBJblZpc2l0
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsraSkgeworICAg
ICAgICBzd2l0Y2ggKGNhbGxlZXNbaV0tPnZpc2l0KSB7CisgICAgICAgICAgICBjYXNlIEluVmlz
aXQ6CisgICAgICAgICAgICAgICAgLy8gY3ljbGUgZGV0ZWN0ZWQsIGkuZS4sIHJlY3Vyc2lvbiBk
ZXRlY3RlZC4KKyAgICAgICAgICAgICAgICByZXR1cm4ga0luZmluaXRlQ2FsbERlcHRoOworICAg
ICAgICAgICAgY2FzZSBQb3N0VmlzaXQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFByZVZpc2l0OiB7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgYmVmb3JlIHdl
IHJlY3Vyc2Ugc28gd2UgZG9uJ3QgZ28gdG9vIGRlcHRoCisgICAgICAgICAgICAgICAgaWYgKGRl
dGVjdENhbGxEZXB0aC0+Y2hlY2tFeGNlZWRzTWF4RGVwdGgoZGVwdGgpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZGVwdGg7CisgICAgICAgICAgICAgICAgaW50IGNhbGxEZXB0aCA9IGNh
bGxlZXNbaV0tPmRldGVjdENhbGxEZXB0aChkZXRlY3RDYWxsRGVwdGgsIGRlcHRoICsgMSk7Cisg
ICAgICAgICAgICAgICAgLy8gQ2hlY2sgYWZ0ZXIgd2UgcmVjdXJzZSBzbyB3ZSBjYW4gZXhpdCBp
bW1lZGlhdGVseSBhbmQgcHJvdmlkZSBpbmZvLgorICAgICAgICAgICAgICAgIGlmIChkZXRlY3RD
YWxsRGVwdGgtPmNoZWNrRXhjZWVkc01heERlcHRoKGNhbGxEZXB0aCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZGV0ZWN0Q2FsbERlcHRoLT5nZXRJbmZvU2luaygpLmluZm8gPDwgIjwtIiA8PCBj
YWxsZWVzW2ldLT5nZXROYW1lKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRGVw
dGg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1heERlcHRoID0gc3RkOjpt
YXgoY2FsbERlcHRoLCBtYXhEZXB0aCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgdmlzaXQg
PSBQb3N0VmlzaXQ7CisgICAgcmV0dXJuIG1heERlcHRoOworfQorCit2b2lkIERldGVjdENhbGxE
ZXB0aDo6RnVuY3Rpb25Ob2RlOjpyZXNldCgpCit7CisgICAgdmlzaXQgPSBQcmVWaXNpdDsKK30K
KworRGV0ZWN0Q2FsbERlcHRoOjpEZXRlY3RDYWxsRGVwdGgoVEluZm9TaW5rJiBpbmZvU2luaywg
Ym9vbCBsaW1pdENhbGxTdGFja0RlcHRoLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgpCisgICAgOiBU
SW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSksCisgICAgICBjdXJyZW50
RnVuY3Rpb24oTlVMTCksCisgICAgICBpbmZvU2luayhpbmZvU2luayksCisgICAgICBtYXhEZXB0
aChsaW1pdENhbGxTdGFja0RlcHRoID8gbWF4Q2FsbFN0YWNrRGVwdGggOiBGdW5jdGlvbk5vZGU6
OmtJbmZpbml0ZUNhbGxEZXB0aCkKK3sKK30KKworRGV0ZWN0Q2FsbERlcHRoOjp+RGV0ZWN0Q2Fs
bERlcHRoKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9ucy5zaXplKCk7
ICsraSkKKyAgICAgICAgZGVsZXRlIGZ1bmN0aW9uc1tpXTsKK30KKworYm9vbCBEZXRlY3RDYWxs
RGVwdGg6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlKiBub2Rl
KQoreworICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAgICB7CisgICAgICAgIGNhc2UgRU9w
UHJvdG90eXBlOgorICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCisgICAgICAg
ICAgICAvLyBEb24ndCBhZGQgRnVuY3Rpb25Ob2RlIGhlcmUgYmVjYXVzZSBub2RlLT5nZXROYW1l
KCkgaXMgdGhlCisgICAgICAgICAgICAvLyB1bm1hbmdsZWQgZnVuY3Rpb24gbmFtZS4KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEZ1bmN0aW9uOiB7CisgICAgICAgICAgICAv
LyBGdW5jdGlvbiBkZWZpbml0aW9uLgorICAgICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0
KSB7CisgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uID0gZmluZEZ1bmN0aW9uQnlOYW1l
KG5vZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGdW5jdGlvbiA9
PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9IG5ldyBGdW5j
dGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25z
LnB1c2hfYmFjayhjdXJyZW50RnVuY3Rpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAodmlzaXQgPT0gUG9zdFZpc2l0KSB7CisgICAgICAgICAgICAgICAgY3Vy
cmVudEZ1bmN0aW9uID0gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOiB7CisgICAgICAgICAgICAv
LyBGdW5jdGlvbiBjYWxsLgorICAgICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KSB7Cisg
ICAgICAgICAgICAgICAgRnVuY3Rpb25Ob2RlKiBmdW5jID0gZmluZEZ1bmN0aW9uQnlOYW1lKG5v
ZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAg
ICAgICAgICAgICAgICAgICBmdW5jID0gbmV3IEZ1bmN0aW9uTm9kZShub2RlLT5nZXROYW1lKCkp
OworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMucHVzaF9iYWNrKGZ1bmMpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZ1bmN0aW9uKQorICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24tPmFkZENhbGxlZShmdW5jKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRGV0
ZWN0Q2FsbERlcHRoOjpjaGVja0V4Y2VlZHNNYXhEZXB0aChpbnQgZGVwdGgpCit7CisgICAgcmV0
dXJuIGRlcHRoID49IG1heERlcHRoOworfQorCit2b2lkIERldGVjdENhbGxEZXB0aDo6cmVzZXRG
dW5jdGlvbk5vZGVzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9ucy5z
aXplKCk7ICsraSkgeworICAgICAgICBmdW5jdGlvbnNbaV0tPnJlc2V0KCk7CisgICAgfQorfQor
CitEZXRlY3RDYWxsRGVwdGg6OkVycm9yQ29kZSBEZXRlY3RDYWxsRGVwdGg6OmRldGVjdENhbGxE
ZXB0aEZvckZ1bmN0aW9uKEZ1bmN0aW9uTm9kZSogZnVuYykKK3sKKyAgICBjdXJyZW50RnVuY3Rp
b24gPSBOVUxMOworICAgIHJlc2V0RnVuY3Rpb25Ob2RlcygpOworCisgICAgaW50IG1heENhbGxE
ZXB0aCA9IGZ1bmMtPmRldGVjdENhbGxEZXB0aCh0aGlzLCAxKTsKKworICAgIGlmIChtYXhDYWxs
RGVwdGggPT0gRnVuY3Rpb25Ob2RlOjprSW5maW5pdGVDYWxsRGVwdGgpCisgICAgICAgIHJldHVy
biBrRXJyb3JSZWN1cnNpb247CisKKyAgICBpZiAobWF4Q2FsbERlcHRoID49IG1heERlcHRoKQor
ICAgICAgICByZXR1cm4ga0Vycm9yTWF4RGVwdGhFeGNlZWRlZDsKKworICAgIHJldHVybiBrRXJy
b3JOb25lOworfQorCitEZXRlY3RDYWxsRGVwdGg6OkVycm9yQ29kZSBEZXRlY3RDYWxsRGVwdGg6
OmRldGVjdENhbGxEZXB0aCgpCit7CisgICAgaWYgKG1heERlcHRoICE9IEZ1bmN0aW9uTm9kZTo6
a0luZmluaXRlQ2FsbERlcHRoKSB7CisgICAgICAgIC8vIENoZWNrIGFsbCBmdW5jdGlvbnMgYmVj
YXVzZSB0aGUgZHJpdmVyIG1heSBmYWlsIG9uIHRoZW0KKyAgICAgICAgLy8gVE9ETzogQmVmb3Jl
IGRldGVjdGluZ1JlY3Vyc2lvbiwgc3RyaXAgdW51c2VkIGZ1bmN0aW9ucy4KKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
IEVycm9yQ29kZSBlcnJvciA9IGRldGVjdENhbGxEZXB0aEZvckZ1bmN0aW9uKGZ1bmN0aW9uc1tp
XSk7CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0ga0Vycm9yTm9uZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBGdW5jdGlv
bk5vZGUqIG1haW4gPSBmaW5kRnVuY3Rpb25CeU5hbWUoIm1haW4oIik7CisgICAgICAgIGlmICht
YWluID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4ga0Vycm9yTWlzc2luZ01haW47CisKKyAg
ICAgICAgcmV0dXJuIGRldGVjdENhbGxEZXB0aEZvckZ1bmN0aW9uKG1haW4pOworICAgIH0KKwor
ICAgIHJldHVybiBrRXJyb3JOb25lOworfQorCitEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9k
ZSogRGV0ZWN0Q2FsbERlcHRoOjpmaW5kRnVuY3Rpb25CeU5hbWUoCisgICAgY29uc3QgVFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9ucy5zaXplKCk7
ICsraSkgeworICAgICAgICBpZiAoZnVuY3Rpb25zW2ldLT5nZXROYW1lKCkgPT0gbmFtZSkKKyAg
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbnNbaV07CisgICAgfQorICAgIHJldHVybiBOVUxMOwor
fQorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2Fs
bERlcHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0RldGVjdENhbGxEZXB0aC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5kZWYgQ09NUElMRVJfREVURUNU
X1JFQ1VSU0lPTl9IXworI2RlZmluZSBDT01QSUxFUl9ERVRFQ1RfUkVDVVJTSU9OX0hfCisKKyNp
bmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2lu
Y2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1Zhcmlh
YmxlSW5mby5oIgorCitjbGFzcyBUSW5mb1Npbms7CisKKy8vIFRyYXZlcnNlcyBpbnRlcm1lZGlh
dGUgdHJlZSB0byBkZXRlY3QgZnVuY3Rpb24gcmVjdXJzaW9uLgorY2xhc3MgRGV0ZWN0Q2FsbERl
cHRoIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIgeworcHVibGljOgorICAgIGVudW0gRXJyb3JD
b2RlIHsKKyAgICAgICAga0Vycm9yTWlzc2luZ01haW4sCisgICAgICAgIGtFcnJvclJlY3Vyc2lv
biwKKyAgICAgICAga0Vycm9yTWF4RGVwdGhFeGNlZWRlZCwKKyAgICAgICAga0Vycm9yTm9uZQor
ICAgIH07CisKKyAgICBEZXRlY3RDYWxsRGVwdGgoVEluZm9TaW5rJiBpbmZvU3luYywgYm9vbCBs
aW1pdENhbGxTdGFja0RlcHRoLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgpOworICAgIH5EZXRlY3RD
YWxsRGVwdGgoKTsKKworICAgIHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVElu
dGVybUFnZ3JlZ2F0ZSopOworCisgICAgYm9vbCBjaGVja0V4Y2VlZHNNYXhEZXB0aChpbnQgZGVw
dGgpOworCisgICAgRXJyb3JDb2RlIGRldGVjdENhbGxEZXB0aCgpOworCitwcml2YXRlOgorICAg
IGNsYXNzIEZ1bmN0aW9uTm9kZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGtJbmZpbml0ZUNhbGxEZXB0aCA9IElOVF9NQVg7CisKKyAgICAgICAgRnVuY3Rpb25Ob2Rl
KGNvbnN0IFRTdHJpbmcmIGZuYW1lKTsKKworICAgICAgICBjb25zdCBUU3RyaW5nJiBnZXROYW1l
KCkgY29uc3Q7CisKKyAgICAgICAgLy8gSWYgYSBmdW5jdGlvbiBpcyBhbHJlYWR5IGluIHRoZSBj
YWxsZWUgbGlzdCwgdGhpcyBiZWNvbWVzIGEgbm8tb3AuCisgICAgICAgIHZvaWQgYWRkQ2FsbGVl
KEZ1bmN0aW9uTm9kZSogY2FsbGVlKTsKKworICAgICAgICAvLyBSZXR1cm5zIGtJbmlmaW5pdHlD
YWxsRGVwdGggaWYgcmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGxzIGFyZSBkZXRlY3RlZC4KKyAgICAg
ICAgaW50IGRldGVjdENhbGxEZXB0aChEZXRlY3RDYWxsRGVwdGgqIGRldGVjdENhbGxEZXB0aCwg
aW50IGRlcHRoKTsKKworICAgICAgICAvLyBSZXNldCBzdGF0ZS4KKyAgICAgICAgdm9pZCByZXNl
dCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgLy8gbWFuZ2xlZCBmdW5jdGlvbiBuYW1lIGlz
IHVuaXF1ZS4KKyAgICAgICAgVFN0cmluZyBuYW1lOworCisgICAgICAgIC8vIGZ1bmN0aW9ucyB0
aGF0IGFyZSBkaXJlY3RseSBjYWxsZWQgYnkgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgVFZlY3Rv
cjxGdW5jdGlvbk5vZGUqPiBjYWxsZWVzOworCisgICAgICAgIFZpc2l0IHZpc2l0OworICAgIH07
CisKKyAgICBFcnJvckNvZGUgZGV0ZWN0Q2FsbERlcHRoRm9yRnVuY3Rpb24oRnVuY3Rpb25Ob2Rl
KiBmdW5jKTsKKyAgICBGdW5jdGlvbk5vZGUqIGZpbmRGdW5jdGlvbkJ5TmFtZShjb25zdCBUU3Ry
aW5nJiBuYW1lKTsKKyAgICB2b2lkIHJlc2V0RnVuY3Rpb25Ob2RlcygpOworCisgICAgVEluZm9T
aW5rJiBnZXRJbmZvU2luaygpIHsgcmV0dXJuIGluZm9TaW5rOyB9CisKKyAgICBUVmVjdG9yPEZ1
bmN0aW9uTm9kZSo+IGZ1bmN0aW9uczsKKyAgICBGdW5jdGlvbk5vZGUqIGN1cnJlbnRGdW5jdGlv
bjsKKyAgICBUSW5mb1NpbmsmIGluZm9TaW5rOworICAgIGludCBtYXhEZXB0aDsKKworICAgIERl
dGVjdENhbGxEZXB0aChjb25zdCBEZXRlY3RDYWxsRGVwdGgmKTsKKyAgICB2b2lkIG9wZXJhdG9y
PShjb25zdCBEZXRlY3RDYWxsRGVwdGgmKTsKK307CisKKyNlbmRpZiAgLy8gQ09NUElMRVJfREVU
RUNUX1JFQ1VSU0lPTl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAJKHJldmlzaW9uIDE1MjY0OSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyNSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChj
KSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ci0jaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgiCi0KLURldGVjdFJlY3Vyc2lv
bjo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5hbWUpCi0gICAg
OiBuYW1lKGZuYW1lKSwKLSAgICAgIHZpc2l0KFByZVZpc2l0KQotewotfQotCi1jb25zdCBUU3Ry
aW5nJiBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG5hbWU7Ci19Ci0KLXZvaWQgRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGU6
OmFkZENhbGxlZSgKLSAgICBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZSogY2FsbGVlKQot
ewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsraSkgewotICAg
ICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Ci19Ci0KLWJvb2wgRGV0ZWN0UmVjdXJz
aW9uOjpGdW5jdGlvbk5vZGU6OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgQVNTRVJUKHZpc2l0
ID09IFByZVZpc2l0KTsKLSAgICB2aXNpdCA9IEluVmlzaXQ7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN3aXRjaCAoY2FsbGVlc1tp
XS0+dmlzaXQpIHsKLSAgICAgICAgICAgIGNhc2UgSW5WaXNpdDoKLSAgICAgICAgICAgICAgICAv
LyBjeWNsZSBkZXRlY3RlZCwgaS5lLiwgcmVjdXJzaW9uIGRldGVjdGVkLgotICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgY2FzZSBQb3N0VmlzaXQ6Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFByZVZpc2l0OiB7Ci0gICAgICAgICAgICAg
ICAgYm9vbCByZWN1cnNpb24gPSBjYWxsZWVzW2ldLT5kZXRlY3RSZWN1cnNpb24oKTsKLSAgICAg
ICAgICAgICAgICBpZiAocmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICB2aXNpdCA9IFBvc3RWaXNpdDsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RGV0ZWN0UmVjdXJzaW9uKCkKLSAgICA6
IGN1cnJlbnRGdW5jdGlvbihOVUxMKQotewotfQotCi1EZXRlY3RSZWN1cnNpb246On5EZXRlY3RS
ZWN1cnNpb24oKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNpemUo
KTsgKytpKQotICAgICAgICBkZWxldGUgZnVuY3Rpb25zW2ldOwotfQotCi1ib29sIERldGVjdFJl
Y3Vyc2lvbjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqIG5v
ZGUpCi17Ci0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQotICAgIHsKLSAgICAgICAgY2FzZSBF
T3BQcm90b3R5cGU6Ci0gICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KLSAgICAg
ICAgICAgIC8vIERvbid0IGFkZCBGdW5jdGlvbk5vZGUgaGVyZSBiZWNhdXNlIG5vZGUtPmdldE5h
bWUoKSBpcyB0aGUKLSAgICAgICAgICAgIC8vIHVubWFuZ2xlZCBmdW5jdGlvbiBuYW1lLgotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wRnVuY3Rpb246IHsKLSAgICAgICAgICAg
IC8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCi0gICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlz
aXQpIHsKLSAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24gPSBmaW5kRnVuY3Rpb25CeU5h
bWUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZ1bmN0aW9u
ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uID0gbmV3IEZ1
bmN0aW9uTm9kZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bnMucHVzaF9iYWNrKGN1cnJlbnRGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBFT3BG
dW5jdGlvbkNhbGw6IHsKLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGNhbGwuCi0gICAgICAgICAg
ICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoY3VycmVu
dEZ1bmN0aW9uICE9IE5VTEwpOwotICAgICAgICAgICAgICAgIEZ1bmN0aW9uTm9kZSogZnVuYyA9
IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgIGlm
IChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG5ldyBGdW5jdGlv
bk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLnB1
c2hfYmFjayhmdW5jKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY3VycmVu
dEZ1bmN0aW9uLT5hZGRDYWxsZWUoZnVuYyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1EZXRlY3RSZWN1cnNpb246OkVycm9yQ29kZSBE
ZXRlY3RSZWN1cnNpb246OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgRnVuY3Rpb25Ob2RlKiBt
YWluID0gZmluZEZ1bmN0aW9uQnlOYW1lKCJtYWluKCIpOwotICAgIGlmIChtYWluID09IE5VTEwp
Ci0gICAgICAgIHJldHVybiBrRXJyb3JNaXNzaW5nTWFpbjsKLSAgICBpZiAobWFpbi0+ZGV0ZWN0
UmVjdXJzaW9uKCkpCi0gICAgICAgIHJldHVybiBrRXJyb3JSZWN1cnNpb247Ci0gICAgcmV0dXJu
IGtFcnJvck5vbmU7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlKiBEZXRlY3RS
ZWN1cnNpb246OmZpbmRGdW5jdGlvbkJ5TmFtZSgKLSAgICBjb25zdCBUU3RyaW5nJiBuYW1lKQot
ewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmIChmdW5jdGlvbnNbaV0tPmdldE5hbWUoKSA9PSBuYW1lKQotICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uc1tpXTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0
UmVjdXJzaW9uLmgJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MCAr
MCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIENPTVBJTEVSX0RFVEVDVF9SRUNV
UlNJT05fSF8KLSNkZWZpbmUgQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwotCi0jaW5jbHVk
ZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLSNpbmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlh
dGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9WYXJpYWJsZUluZm8uaCIKLQotLy8gVHJhdmVyc2Vz
IGludGVybWVkaWF0ZSB0cmVlIHRvIGRldGVjdCBmdW5jdGlvbiByZWN1cnNpb24uCi1jbGFzcyBE
ZXRlY3RSZWN1cnNpb24gOiBwdWJsaWMgVEludGVybVRyYXZlcnNlciB7Ci1wdWJsaWM6Ci0gICAg
ZW51bSBFcnJvckNvZGUgewotICAgICAgICBrRXJyb3JNaXNzaW5nTWFpbiwKLSAgICAgICAga0Vy
cm9yUmVjdXJzaW9uLAotICAgICAgICBrRXJyb3JOb25lCi0gICAgfTsKLQotICAgIERldGVjdFJl
Y3Vyc2lvbigpOwotICAgIH5EZXRlY3RSZWN1cnNpb24oKTsKLQotICAgIHZpcnR1YWwgYm9vbCB2
aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopOwotCi0gICAgRXJyb3JDb2Rl
IGRldGVjdFJlY3Vyc2lvbigpOwotCi1wcml2YXRlOgotICAgIGNsYXNzIEZ1bmN0aW9uTm9kZSB7
Ci0gICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5hbWUp
OwotCi0gICAgICAgIGNvbnN0IFRTdHJpbmcmIGdldE5hbWUoKSBjb25zdDsKLQotICAgICAgICAv
LyBJZiBhIGZ1bmN0aW9uIGlzIGFscmVhZHkgaW4gdGhlIGNhbGxlZSBsaXN0LCB0aGlzIGJlY29t
ZXMgYSBuby1vcC4KLSAgICAgICAgdm9pZCBhZGRDYWxsZWUoRnVuY3Rpb25Ob2RlKiBjYWxsZWUp
OwotCi0gICAgICAgIC8vIFJldHVybiB0cnVlIGlmIHJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxscyBh
cmUgZGV0ZWN0ZWQuCi0gICAgICAgIGJvb2wgZGV0ZWN0UmVjdXJzaW9uKCk7Ci0KLSAgICBwcml2
YXRlOgotICAgICAgICAvLyBtYW5nbGVkIGZ1bmN0aW9uIG5hbWUgaXMgdW5pcXVlLgotICAgICAg
ICBUU3RyaW5nIG5hbWU7Ci0KLSAgICAgICAgLy8gZnVuY3Rpb25zIHRoYXQgYXJlIGRpcmVjdGx5
IGNhbGxlZCBieSB0aGlzIGZ1bmN0aW9uLgotICAgICAgICBUVmVjdG9yPEZ1bmN0aW9uTm9kZSo+
IGNhbGxlZXM7Ci0KLSAgICAgICAgVmlzaXQgdmlzaXQ7Ci0gICAgfTsKLQotICAgIEZ1bmN0aW9u
Tm9kZSogZmluZEZ1bmN0aW9uQnlOYW1lKGNvbnN0IFRTdHJpbmcmIG5hbWUpOwotCi0gICAgVFZl
Y3RvcjxGdW5jdGlvbk5vZGUqPiBmdW5jdGlvbnM7Ci0gICAgRnVuY3Rpb25Ob2RlKiBjdXJyZW50
RnVuY3Rpb247Ci19OwotCi0jZW5kaWYgIC8vIENPTVBJTEVSX0RFVEVDVF9SRUNVUlNJT05fSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGljcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Rp
YWdub3N0aWNzLmNwcAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCB2b2lkIFREaWFnbm9zdGljczo6d3JpdGVJbmZvKFNldmVyaXR5IHNlCiAgICAgVElu
Zm9TaW5rQmFzZSYgc2luayA9IG1JbmZvU2luay5pbmZvOwogICAgIC8qIFZDKysgZm9ybWF0OiBm
aWxlKGxpbmVudW0pIDogZXJyb3IgIzogJ3Rva2VuJyA6IGV4dHJhaW5mbyAqLwogICAgIHNpbmsu
cHJlZml4KHByZWZpeCk7Ci0gICAgc2luay5sb2NhdGlvbihFbmNvZGVTb3VyY2VMb2MobG9jLmZp
bGUsIGxvYy5saW5lKSk7CisgICAgc2luay5sb2NhdGlvbihsb2MuZmlsZSwgbG9jLmxpbmUpOwog
ICAgIHNpbmsgPDwgIiciIDw8IHRva2VuIDw8ICAiJyA6ICIgPDwgcmVhc29uIDw8ICIgIiA8PCBl
eHRyYSA8PCAiXG4iOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvRm9yTG9vcFVucm9sbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgogLy8KQEAgLTIxMCw2ICsyMTAsNiBAQCBpbnQgRm9yTG9vcFVucm9sbDo6Z2V0TG9v
cEluY3JlbWVudChUSW50CiBpbnQgRm9yTG9vcFVucm9sbDo6ZXZhbHVhdGVJbnRDb25zdGFudChU
SW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsKICAgICBBU1NFUlQoKG5vZGUgIT0gTlVMTCkg
JiYgKG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCkgIT0gTlVMTCkpOwotICAgIHJldHVybiBu
b2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAgICByZXR1cm4gbm9k
ZS0+Z2V0SUNvbnN0KDApOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvSW5mb1NpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYsOCArNiw4IEBACiAKICNpbmNsdWRlICJjb21waWxlci9JbmZvU2luay5oIgogCi12
b2lkIFRJbmZvU2lua0Jhc2U6OnByZWZpeChUUHJlZml4VHlwZSBtZXNzYWdlKSB7Ci0gICAgc3dp
dGNoKG1lc3NhZ2UpIHsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6cHJlZml4KFRQcmVmaXhUeXBlIHAp
IHsKKyAgICBzd2l0Y2gocCkgewogICAgICAgICBjYXNlIEVQcmVmaXhOb25lOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRVByZWZpeFdhcm5pbmc6CkBAIC0zMSwyOSArMzEsMjQg
QEAgdm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoVFByZWZpeFR5cGUgbQogICAgIH0KIH0KIAot
dm9pZCBUSW5mb1NpbmtCYXNlOjpsb2NhdGlvbihUU291cmNlTG9jIGxvYykgewotICAgIGludCBz
dHJpbmcgPSAwLCBsaW5lID0gMDsKLSAgICBEZWNvZGVTb3VyY2VMb2MobG9jLCAmc3RyaW5nLCAm
bGluZSk7Ci0KK3ZvaWQgVEluZm9TaW5rQmFzZTo6bG9jYXRpb24oaW50IGZpbGUsIGludCBsaW5l
KSB7CiAgICAgVFBlcnNpc3RTdHJpbmdTdHJlYW0gc3RyZWFtOwogICAgIGlmIChsaW5lKQotICAg
ICAgICBzdHJlYW0gPDwgc3RyaW5nIDw8ICI6IiA8PCBsaW5lOworICAgICAgICBzdHJlYW0gPDwg
ZmlsZSA8PCAiOiIgPDwgbGluZTsKICAgICBlbHNlCi0gICAgICAgIHN0cmVhbSA8PCBzdHJpbmcg
PDwgIjo/ICI7CisgICAgICAgIHN0cmVhbSA8PCBmaWxlIDw8ICI6PyAiOwogICAgIHN0cmVhbSA8
PCAiOiAiOwogCiAgICAgc2luay5hcHBlbmQoc3RyZWFtLnN0cigpKTsKIH0KIAotdm9pZCBUSW5m
b1NpbmtCYXNlOjptZXNzYWdlKFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMpIHsK
LSAgICBwcmVmaXgobWVzc2FnZSk7Ci0gICAgc2luay5hcHBlbmQocyk7Ci0gICAgc2luay5hcHBl
bmQoIlxuIik7Cit2b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9uKGNvbnN0IFRTb3VyY2VMb2Mm
IGxvYykgeworICAgIGxvY2F0aW9uKGxvYy5maXJzdF9maWxlLCBsb2MuZmlyc3RfbGluZSk7CiB9
CiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBtZXNzYWdlLCBjb25z
dCBjaGFyKiBzLCBUU291cmNlTG9jIGxvYykgewotICAgIHByZWZpeChtZXNzYWdlKTsKK3ZvaWQg
VEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291cmNlTG9jJiBs
b2MsIGNvbnN0IGNoYXIqIG0pIHsKKyAgICBwcmVmaXgocCk7CiAgICAgbG9jYXRpb24obG9jKTsK
LSAgICBzaW5rLmFwcGVuZChzKTsKKyAgICBzaW5rLmFwcGVuZChtKTsKICAgICBzaW5rLmFwcGVu
ZCgiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9J
bmZvU2luay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9JbmZvU2luay5oCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTAgKzk2
LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBUUGVyc2lzdFN0cmluZyYgc3RyKCkgY29uc3QgeyBy
ZXR1cm4gc2luazsgfQogICAgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29uc3QgeyByZXR1cm4gc2lu
ay5jX3N0cigpOyB9CiAKLSAgICB2b2lkIHByZWZpeChUUHJlZml4VHlwZSBtZXNzYWdlKTsKLSAg
ICB2b2lkIGxvY2F0aW9uKFRTb3VyY2VMb2MgbG9jKTsKLSAgICB2b2lkIG1lc3NhZ2UoVFByZWZp
eFR5cGUgbWVzc2FnZSwgY29uc3QgY2hhciogcyk7Ci0gICAgdm9pZCBtZXNzYWdlKFRQcmVmaXhU
eXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMsIFRTb3VyY2VMb2MgbG9jKTsKKyAgICB2b2lkIHBy
ZWZpeChUUHJlZml4VHlwZSBwKTsKKyAgICB2b2lkIGxvY2F0aW9uKGludCBmaWxlLCBpbnQgbGlu
ZSk7CisgICAgdm9pZCBsb2NhdGlvbihjb25zdCBUU291cmNlTG9jJiBsb2MpOworICAgIHZvaWQg
bWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0IGNoYXIq
IG0pOwogCiBwcml2YXRlOgogICAgIFRQZXJzaXN0U3RyaW5nIHNpbms7CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwCShy
ZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
SW5pdGlhbGl6ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2LDM3MyArMTYsNiBAQAogCiAvLz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KIC8vCi0vLyBQcm90b3R5cGVzIGZvciBidWlsdC1pbiBmdW5jdGlv
bnMgc2VlbiBieSBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycy4KLS8vCi0vLz09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLXN0YXRpYyBUU3RyaW5nIEJ1aWx0SW5GdW5jdGlvbnNDb21tb24oY29u
c3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCi17Ci0gICAgVFN0cmluZyBzOwotCi0g
ICAgLy8KLSAgICAvLyBBbmdsZSBhbmQgVHJpZ29ub21ldHJpYyBGdW5jdGlvbnMuCi0gICAgLy8K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCByYWRpYW5zKGZsb2F0IGRlZ3JlZXMpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICByYWRpYW5zKHZlYzIgIGRlZ3JlZXMpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICByYWRpYW5zKHZlYzMgIGRlZ3JlZXMpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByYWRpYW5zKHZlYzQgIGRlZ3JlZXMpOyIpKTsK
LQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRlZ3JlZXMoZmxvYXQgcmFkaWFucyk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGRlZ3JlZXModmVjMiAgcmFkaWFucyk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGRlZ3JlZXModmVjMyAgcmFkaWFucyk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGRlZ3JlZXModmVjNCAgcmFkaWFucyk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc2luKGZsb2F0IGFuZ2xlKTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2luKHZlYzIgIGFuZ2xlKTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMyAgc2luKHZlYzMgIGFuZ2xlKTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgc2luKHZlYzQgIGFuZ2xlKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBjb3MoZmxvYXQgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMyICBjb3ModmVjMiAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBj
b3ModmVjMyAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBjb3ModmVj
NCAgYW5nbGUpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHRhbihmbG9hdCBh
bmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHRhbih2ZWMyICBhbmdsZSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHRhbih2ZWMzICBhbmdsZSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHRhbih2ZWM0ICBhbmdsZSk7IikpOwotCi0gICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYXNpbihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMiAgYXNpbih2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgYXNpbih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgYXNp
bih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhY29zKGZsb2F0
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhY29zKHZlYzIgIHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhY29zKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0ICBhY29zKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImZsb2F0IGF0YW4oZmxvYXQgeSwgZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeSwgdmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzMgIGF0YW4odmVjMyAgeSwgdmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzQgIGF0YW4odmVjNCAgeSwgdmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQo
VFN0cmluZygiZmxvYXQgYXRhbihmbG9hdCB5X292ZXJfeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeV9vdmVyX3gpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMzICBhdGFuKHZlYzMgIHlfb3Zlcl94KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCAgYXRhbih2ZWM0ICB5X292ZXJfeCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBFeHBv
bmVudGlhbCBGdW5jdGlvbnMuCi0gICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBw
b3coZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHBv
dyh2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcG93
KHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBwb3co
dmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZXhw
KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAodmVjMiAgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGV4cCh2ZWMzICB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCAgZXhwKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IGxvZyhmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMiAgbG9nKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBsb2co
dmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZyh2ZWM0ICB4KTsi
KSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBleHAyKGZsb2F0IHgpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAyKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMzICBleHAyKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWM0ICBleHAyKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0
IGxvZzIoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGxvZzIodmVj
MiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGxvZzIodmVjMyAgeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZzIodmVjNCAgeCk7IikpOwotCi0gICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc3FydChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMiAgc3FydCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgc3FydCh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc3Fy
dCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBpbnZlcnNlc3Fy
dChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgaW52ZXJzZXNxcnQo
dmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGludmVyc2VzcXJ0KHZl
YzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBpbnZlcnNlc3FydCh2ZWM0
ICB4KTsiKSk7Ci0KLSAgICAvLwotICAgIC8vIENvbW1vbiBGdW5jdGlvbnMuCi0gICAgLy8KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhYnMoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzIgIGFicyh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgYWJzKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhYnMo
dmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc2lnbihmbG9hdCB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2lnbih2ZWMyICB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc2lnbih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgc2lnbih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBmbG9vcihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MiAgZmxvb3IodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGZsb29y
KHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBmbG9vcih2ZWM0ICB4
KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBjZWlsKGZsb2F0IHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBjZWlsKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMzICBjZWlsKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICBjZWlsKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZs
b2F0IGZyYWN0KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBmcmFj
dCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZnJhY3QodmVjMyAg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGZyYWN0KHZlYzQgIHgpOyIpKTsK
LQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG1vZChmbG9hdCB4LCBmbG9hdCB5KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbW9kKHZlYzIgIHgsIGZsb2F0IHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtb2QodmVjMyAgeCwgZmxvYXQgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2ZWM0ICB4LCBmbG9hdCB5KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbW9kKHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtb2QodmVjMyAgeCwgdmVjMyAgeSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2ZWM0ICB4LCB2ZWM0ICB5KTsiKSk7Ci0KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtaW4oZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1pbih2ZWMyICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4odmVjNCAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIG1pbih2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4odmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgbWF4KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzMgIG1heCh2ZWMzICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgbWF4KHZlYzQgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzMgIG1heCh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgbWF4KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IGNsYW1wKGZsb2F0IHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4VmFs
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2xhbXAodmVjMiAgeCwgZmxvYXQg
bWluVmFsLCBmbG9hdCBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBj
bGFtcCh2ZWMzICB4LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4
VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2xhbXAodmVjMiAgeCwgdmVj
MiAgbWluVmFsLCB2ZWMyICBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
ICBjbGFtcCh2ZWMzICB4LCB2ZWMzICBtaW5WYWwsIHZlYzMgIG1heFZhbCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIHZlYzQgIG1pblZhbCwgdmVjNCAg
bWF4VmFsKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtaXgoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgYSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1peCh2
ZWMyICB4LCB2ZWMyICB5LCBmbG9hdCBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgbWl4KHZlYzMgIHgsIHZlYzMgIHksIGZsb2F0IGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwgdmVjNCAgeSwgZmxvYXQgYSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzIgIG1peCh2ZWMyICB4LCB2ZWMyICB5LCB2ZWMyICBhKTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWl4KHZlYzMgIHgsIHZlYzMgIHksIHZlYzMgIGEp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwgdmVjNCAgeSwg
dmVjNCAgYSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc3RlcChmbG9hdCBl
ZGdlLCBmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc3RlcCh2ZWMy
ICBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc3RlcCh2
ZWMzICBlZGdlLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc3Rl
cCh2ZWM0ICBlZGdlLCB2ZWM0ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAg
c3RlcChmbG9hdCBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgc3RlcChmbG9hdCBlZGdlLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgc3RlcChmbG9hdCBlZGdlLCB2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgZmxvYXQgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNtb290aHN0ZXAodmVjMiAgZWRnZTAs
IHZlYzIgIGVkZ2UxLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAg
c21vb3Roc3RlcCh2ZWMzICBlZGdlMCwgdmVjMyAgZWRnZTEsIHZlYzMgIHgpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKHZlYzQgIGVkZ2UwLCB2ZWM0ICBlZGdl
MSwgdmVjNCAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNtb290aHN0ZXAo
ZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMyAgc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIHZlYzMgIHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKGZsb2F0IGVkZ2Uw
LCBmbG9hdCBlZGdlMSwgdmVjNCAgeCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBHZW9tZXRyaWMg
RnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKGZs
b2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsZW5ndGgodmVjMiAgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2ZWMzICB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKHZlYzQgIHgpOyIpKTsKLQotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKGZsb2F0IHAwLCBmbG9hdCBwMSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzIgIHAwLCB2ZWMyICBwMSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzMgIHAwLCB2ZWMz
ICBwMSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzQgIHAw
LCB2ZWM0ICBwMSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KGZsb2F0
IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkb3QodmVjMiAg
eCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRvdCh2ZWMzICB4
LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KHZlYzQgIHgs
IHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgY3Jvc3ModmVjMyB4
LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub3JtYWxpemUoZmxv
YXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG5vcm1hbGl6ZSh2ZWMyICB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbm9ybWFsaXplKHZlYzMgIHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBub3JtYWxpemUodmVjNCAgeCk7IikpOwot
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZmFjZWZvcndhcmQoZmxvYXQgTiwgZmxvYXQg
SSwgZmxvYXQgTnJlZik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGZhY2Vmb3J3
YXJkKHZlYzIgIE4sIHZlYzIgIEksIHZlYzIgIE5yZWYpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMzICBmYWNlZm9yd2FyZCh2ZWMzICBOLCB2ZWMzICBJLCB2ZWMzICBOcmVmKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZmFjZWZvcndhcmQodmVjNCAgTiwgdmVjNCAg
SSwgdmVjNCAgTnJlZik7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgcmVmbGVj
dChmbG9hdCBJLCBmbG9hdCBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgcmVm
bGVjdCh2ZWMyICBJLCB2ZWMyICBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAg
cmVmbGVjdCh2ZWMzICBJLCB2ZWMzICBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
NCAgcmVmbGVjdCh2ZWM0ICBJLCB2ZWM0ICBOKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJmbG9hdCByZWZyYWN0KGZsb2F0IEksIGZsb2F0IE4sIGZsb2F0IGV0YSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIHJlZnJhY3QodmVjMiAgSSwgdmVjMiAgTiwgZmxvYXQgZXRh
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcmVmcmFjdCh2ZWMzICBJLCB2ZWMz
ICBOLCBmbG9hdCBldGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByZWZyYWN0
KHZlYzQgIEksIHZlYzQgIE4sIGZsb2F0IGV0YSk7IikpOwotCi0gICAgLy8KLSAgICAvLyBNYXRy
aXggRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygibWF0MiBtYXRyaXhD
b21wTXVsdChtYXQyIHgsIG1hdDIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoIm1hdDMg
bWF0cml4Q29tcE11bHQobWF0MyB4LCBtYXQzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJtYXQ0IG1hdHJpeENvbXBNdWx0KG1hdDQgeCwgbWF0NCB5KTsiKSk7Ci0KLSAgICAvLwotICAg
IC8vIFZlY3RvciByZWxhdGlvbmFsIGZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImJ2ZWMyIGxlc3NUaGFuKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygiYnZlYzMgbGVzc1RoYW4odmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbih2ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0gICAgcy5h
cHBlbmQoVFN0cmluZygiYnZlYzIgbGVzc1RoYW4oaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuKGl2ZWMzIHgsIGl2ZWMzIHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbihpdmVjNCB4LCBpdmVjNCB5KTsi
KSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbkVxdWFsKHZlYzIgeCwg
dmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbGVzc1RoYW5FcXVhbCh2
ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NUaGFu
RXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMy
IGxlc3NUaGFuRXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJ2ZWMzIGxlc3NUaGFuRXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NUaGFuRXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwot
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW4odmVjMiB4LCB2ZWMyIHkp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbih2ZWMzIHgsIHZl
YzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFuKHZlYzQg
eCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBncmVhdGVyVGhh
bihpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZ3Jl
YXRlclRoYW4oaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWM0IGdyZWF0ZXJUaGFuKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImJ2ZWMyIGdyZWF0ZXJUaGFuRXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbkVxdWFsKHZlYzMgeCwgdmVjMyB5KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVhbCh2ZWM0IHgs
IHZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW5F
cXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMg
Z3JlYXRlclRoYW5FcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVhbChpdmVjNCB4LCBpdmVjNCB5KTsiKSk7Ci0KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBlcXVhbCh2ZWMyIHgsIHZlYzIgeSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGVxdWFsKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBlcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwot
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKGJ2ZWMzIHgsIGJ2ZWMzIHkpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBlcXVhbChidmVjNCB4LCBidmVjNCB5KTsi
KSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBub3RFcXVhbCh2ZWMyIHgsIHZlYzIg
eSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5vdEVxdWFsKHZlYzMgeCwgdmVj
MyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1YWwodmVjNCB4LCB2
ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdEVxdWFsKGl2ZWMy
IHgsIGl2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBub3RFcXVhbChp
dmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1
YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIg
bm90RXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWMzIG5vdEVxdWFsKGJ2ZWMzIHgsIGJ2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJidmVjNCBub3RFcXVhbChidmVjNCB4LCBidmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJib29sIGFueShidmVjMiB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYm9v
bCBhbnkoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYW55KGJ2ZWM0
IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYWxsKGJ2ZWMyIHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFsbChidmVjMyB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygiYm9vbCBhbGwoYnZlYzQgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiYnZlYzIgbm90KGJ2ZWMyIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBu
b3QoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IG5vdChidmVjNCB4
KTsiKSk7Ci0KLSAgICAvLwotICAgIC8vIFRleHR1cmUgRnVuY3Rpb25zLgotICAgIC8vCi0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkQoc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzIg
Y29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2Ft
cGxlcjJEIHNhbXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzQgY29vcmQpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmVDdWJlKHNhbXBsZXJDdWJlIHNhbXBsZXIs
IHZlYzMgY29vcmQpOyIpKTsKLQotICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRl
cm5hbCkgewotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRChzYW1wbGVy
RXh0ZXJuYWxPRVMgc2FtcGxlciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlckV4dGVybmFsT0VTIHNhbXBsZXIsIHZl
YzMgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQ
cm9qKHNhbXBsZXJFeHRlcm5hbE9FUyBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7Ci0gICAgfQot
Ci0gICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKLSAgICAgICAgcy5h
cHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRSZWN0KHNhbXBsZXIyRFJlY3Qgc2FtcGxlciwg
dmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUy
RFJlY3RQcm9qKHNhbXBsZXIyRFJlY3Qgc2FtcGxlciwgdmVjMyBjb29yZCk7IikpOwotICAgICAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFJlY3RQcm9qKHNhbXBsZXIyRFJlY3Qg
c2FtcGxlciwgdmVjNCBjb29yZCk7IikpOwotICAgIH0KLQotICAgIC8vCi0gICAgLy8gTm9pc2Ug
ZnVuY3Rpb25zLgotICAgIC8vCi0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lzZTEo
ZmxvYXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbm9pc2UxKHZlYzIg
IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG5vaXNlMSh2ZWMzICB4KTsi
KSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lzZTEodmVjNCAgeCk7IikpOwot
Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMihmbG9hdCB4KTsiKSk7Ci0gICAg
Ly9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWMyICB4KTsiKSk7Ci0gICAgLy9zLmFw
cGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChU
U3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWM0ICB4KTsiKSk7Ci0KLSAgICAvL3MuYXBwZW5kKFRTdHJp
bmcoInZlYzMgbm9pc2UzKGZsb2F0IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZl
YzMgbm9pc2UzKHZlYzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9p
c2UzKHZlYzMgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKHZl
YzQgIHgpOyIpKTsKLQotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQoZmxvYXQg
eCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjMiAgeCk7Iikp
OwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjMyAgeCk7IikpOwotICAg
IC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjNCAgeCk7IikpOwotCi0gICAgcmV0
dXJuIHM7Ci19Ci0KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFByb3RvdHlwZXMgZm9y
IGJ1aWx0LWluIGZ1bmN0aW9ucyBzZWVuIGJ5IHZlcnRleCBzaGFkZXJzIG9ubHkuCi0vLwotLy89
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBCdWlsdEluRnVuY3Rpb25zVmVydGV4
KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQotewotICAgIFRTdHJpbmcgczsK
LQotICAgIC8vCi0gICAgLy8gR2VvbWV0cmljIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIC8vcy5h
cHBlbmQoVFN0cmluZygidmVjNCBmdHJhbnNmb3JtKCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBU
ZXh0dXJlIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4
dHVyZTJETG9kKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMyIGNvb3JkLCBmbG9hdCBsb2QpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHNh
bXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0IGxvZCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzQgdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVjNCBjb29yZCwgZmxv
YXQgbG9kKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlQ3ViZUxvZChz
YW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBsb2QpOyIpKTsKLQotICAgIHJl
dHVybiBzOwotfQotCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCiAvLyBQcm90b3R5cGVzIGZv
ciBidWlsdC1pbiBmdW5jdGlvbnMgc2VlbiBieSBmcmFnbWVudCBzaGFkZXJzIG9ubHkuCiAvLwog
Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CkBAIC01MDAsMTUgKzEzMywxMiBAQCB2b2lkIFRCdWlsdElu
czo6aW5pdGlhbGl6ZShTaFNoYWRlclR5cGUgCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2Fz
ZSBTSF9GUkFHTUVOVF9TSEFERVI6CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhE
ZWZhdWx0UHJlY2lzaW9uRnJhZ21lbnQoKSk7Ci0gICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hf
YmFjayhCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNlcykpOwogICAgICAgICBidWlsdElu
U3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc0ZyYWdtZW50KHJlc291cmNlcykpOwog
ICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soU3RhbmRhcmRVbmlmb3JtcygpKTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNIX1ZFUlRFWF9TSEFERVI6CiAgICAgICAgIGJ1aWx0
SW5TdHJpbmdzLnB1c2hfYmFjayhEZWZhdWx0UHJlY2lzaW9uVmVydGV4KCkpOwotICAgICAgICBi
dWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc0NvbW1vbihyZXNvdXJjZXMp
KTsKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1aWx0SW5GdW5jdGlvbnNWZXJ0
ZXgocmVzb3VyY2VzKSk7CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhTdGFuZGFy
ZFVuaWZvcm1zKCkpOwogICAgICAgICBicmVhazsKIApAQCAtNTM5LDYgKzE2OSwxMCBAQCB2b2lk
IElkZW50aWZ5QnVpbHRJbnMoU2hTaGFkZXJUeXBlIHR5cGUsCiAgICAgICAgIGlmIChzcGVjICE9
IFNIX0NTU19TSEFERVJTX1NQRUMpIHsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgq
bmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJhZ0NvbG9yIiksICAgICAgICAgICAg
ICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUZyYWdDb2xvciwgICA0KSkpOwog
ICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3Ry
aW5nKCJnbF9GcmFnRGF0YVtnbF9NYXhEcmF3QnVmZmVyc10iKSwgVFR5cGUoRWJ0RmxvYXQsIEVi
cE1lZGl1bSwgRXZxRnJhZ0RhdGEsICAgIDQpKSk7CisgICAgICAgICAgICBpZiAocmVzb3VyY2Vz
LkVYVF9mcmFnX2RlcHRoKSB7CisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpu
ZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGVwdGhFWFQiKSwgICAgICAgICAg
ICBUVHlwZShFYnRGbG9hdCwgcmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA/IEVicEhp
Z2ggOiBFYnBNZWRpdW0sIEV2cUZyYWdEZXB0aCwgMSkpKTsKKyAgICAgICAgICAgICAgICBzeW1i
b2xUYWJsZS5yZWxhdGVUb0V4dGVuc2lvbigiZ2xfRnJhZ0RlcHRoRVhUIiwgIkdMX0VYVF9mcmFn
X2RlcHRoIik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBz
eW1ib2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImNzc19NaXhD
b2xvciIpLCAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFH
bG9iYWwsICAgICAgNCkpKTsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRW
YXJpYWJsZShOZXdQb29sVFN0cmluZygiY3NzX0NvbG9yTWF0cml4IiksICAgICAgICAgICAgICAg
IFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUdsb2JhbCwgICAgICA0LCB0cnVlKSkpOwpA
QCAtNjU2LDQgKzI5MCw2IEBAIHZvaWQgSW5pdEV4dGVuc2lvbkJlaGF2aW9yKGNvbnN0IFNoQnVp
bHQKICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSJdID0gRUJo
VW5kZWZpbmVkOwogICAgIGlmIChyZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycykKICAgICAgICAg
ZXh0QmVoYXZpb3JbIkdMX0VYVF9kcmF3X2J1ZmZlcnMiXSA9IEVCaFVuZGVmaW5lZDsKKyAgICBp
ZiAocmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoKQorICAgICAgICBleHRCZWhhdmlvclsiR0xfRVhU
X2ZyYWdfZGVwdGgiXSA9IEVCaFVuZGVmaW5lZDsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwCShyZXZpc2lv
biAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJt
ZWRpYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmln
aHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTMxLDcgKzEzMSw3IEBAIGNvbnN0IGNoYXIqIGdl
dE9wZXJhdG9yU3RyaW5nKFRPcGVyYXRvciAKIC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2Rl
LgogLy8KLVRJbnRlcm1TeW1ib2wqIFRJbnRlcm1lZGlhdGU6OmFkZFN5bWJvbChpbnQgaWQsIGNv
bnN0IFRTdHJpbmcmIG5hbWUsIGNvbnN0IFRUeXBlJiB0eXBlLCBUU291cmNlTG9jIGxpbmUpCitU
SW50ZXJtU3ltYm9sKiBUSW50ZXJtZWRpYXRlOjphZGRTeW1ib2woaW50IGlkLCBjb25zdCBUU3Ry
aW5nJiBuYW1lLCBjb25zdCBUVHlwZSYgdHlwZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsK
ICAgICBUSW50ZXJtU3ltYm9sKiBub2RlID0gbmV3IFRJbnRlcm1TeW1ib2woaWQsIG5hbWUsIHR5
cGUpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgVEludGVy
bVN5bWJvbCogVEludGVybWVkaWF0ZTo6YWRkU3ltYm9sKAogLy8KIC8vIFJldHVybnMgdGhlIGFk
ZGVkIG5vZGUuCiAvLwotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYXRo
KFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBU
U291cmNlTG9jIGxpbmUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCitUSW50ZXJtVHlwZWQq
IFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQq
IGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTeW1i
b2xUYWJsZSYgc3ltYm9sVGFibGUpCiB7CiAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNl
IEVPcEVxdWFsOgpAQCAtMjAwLDggKzIwMCw2IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0
ZTo6YWRkQmluYXJ5TWEKICAgICAvLyBvbmUgYW5kIHByb21vdGUgaXQgdG8gdGhlIHJpZ2h0IHR5
cGUuCiAgICAgLy8KICAgICBUSW50ZXJtQmluYXJ5KiBub2RlID0gbmV3IFRJbnRlcm1CaW5hcnko
b3ApOwotICAgIGlmIChsaW5lID09IDApCi0gICAgICAgIGxpbmUgPSByaWdodC0+Z2V0TGluZSgp
OwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CiAKICAgICBub2RlLT5zZXRMZWZ0KGxlZnQpOwpA
QCAtMjMwLDE1ICsyMjgsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRCaW5h
cnlNYQogLy8KIC8vIFJldHVybnMgdGhlIGFkZGVkIG5vZGUuCiAvLwotVEludGVybVR5cGVkKiBU
SW50ZXJtZWRpYXRlOjphZGRBc3NpZ24oVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQs
IFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVElu
dGVybWVkaWF0ZTo6YWRkQXNzaWduKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBU
SW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIC8vCiAg
ICAgLy8gTGlrZSBhZGRpbmcgYmluYXJ5IG1hdGgsIGV4Y2VwdCB0aGUgY29udmVyc2lvbiBjYW4g
b25seSBnbwogICAgIC8vIGZyb20gcmlnaHQgdG8gbGVmdC4KICAgICAvLwogICAgIFRJbnRlcm1C
aW5hcnkqIG5vZGUgPSBuZXcgVEludGVybUJpbmFyeShvcCk7Ci0gICAgaWYgKGxpbmUgPT0gMCkK
LSAgICAgICAgbGluZSA9IGxlZnQtPmdldExpbmUoKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUp
OwogCiAgICAgVEludGVybVR5cGVkKiBjaGlsZCA9IGFkZENvbnZlcnNpb24ob3AsIGxlZnQtPmdl
dFR5cGUoKSwgcmlnaHQpOwpAQCAtMjYwLDExICsyNTYsOSBAQCBUSW50ZXJtVHlwZWQqIFRJbnRl
cm1lZGlhdGU6OmFkZEFzc2lnbihUCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8gVGhl
IGNhbGxlciBzaG91bGQgc2V0IHRoZSB0eXBlIG9mIHRoZSByZXR1cm5lZCBub2RlLgogLy8KLVRJ
bnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkSW5kZXgoVE9wZXJhdG9yIG9wLCBUSW50ZXJt
VHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRl
cm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkSW5kZXgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlw
ZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7
CiAgICAgVEludGVybUJpbmFyeSogbm9kZSA9IG5ldyBUSW50ZXJtQmluYXJ5KG9wKTsKLSAgICBp
ZiAobGluZSA9PSAwKQotICAgICAgICBsaW5lID0gaW5kZXgtPmdldExpbmUoKTsKICAgICBub2Rl
LT5zZXRMaW5lKGxpbmUpOwogICAgIG5vZGUtPnNldExlZnQoYmFzZSk7CiAgICAgbm9kZS0+c2V0
UmlnaHQoaW5kZXgpOwpAQCAtMjc5LDEzICsyNzMsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJt
ZWRpYXRlOjphZGRJbmRleChUTwogLy8KIC8vIFJldHVybnMgdGhlIGFkZGVkIG5vZGUuCiAvLwot
VEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBU
SW50ZXJtTm9kZSogY2hpbGROb2RlLCBUU291cmNlTG9jIGxpbmUsIFRTeW1ib2xUYWJsZSYgc3lt
Ym9sVGFibGUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0aChUT3Bl
cmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBjaGlsZE5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUs
IFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCiB7CiAgICAgVEludGVybVVuYXJ5KiBub2RlOwog
ICAgIFRJbnRlcm1UeXBlZCogY2hpbGQgPSBjaGlsZE5vZGUtPmdldEFzVHlwZWQoKTsKIAogICAg
IGlmIChjaGlsZCA9PSAwKSB7Ci0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgIkJhZCB0eXBlIGluIEFkZFVuYXJ5TWF0aCIsIGxpbmUpOworICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGxpbmUsICJCYWQg
dHlwZSBpbiBBZGRVbmFyeU1hdGgiKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0z
NDgsOCArMzQyLDYgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdAog
ICAgIC8vIE1ha2UgYSBuZXcgbm9kZSBmb3IgdGhlIG9wZXJhdG9yLgogICAgIC8vCiAgICAgbm9k
ZSA9IG5ldyBUSW50ZXJtVW5hcnkob3ApOwotICAgIGlmIChsaW5lID09IDApCi0gICAgICAgIGxp
bmUgPSBjaGlsZC0+Z2V0TGluZSgpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CiAgICAgbm9k
ZS0+c2V0T3BlcmFuZChjaGlsZCk7CiAKQEAgLTM3Niw3ICszNjgsNyBAQCBUSW50ZXJtVHlwZWQq
IFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0CiAvLyBSZXR1cm5zIGFuIGFnZ3JlZ2F0ZSBub2Rl
LCB3aGljaCBjb3VsZCBiZSB0aGUgb25lIHBhc3NlZCBpbiBpZgogLy8gaXQgd2FzIGFscmVhZHkg
YW4gYWdncmVnYXRlIGJ1dCBubyBvcGVyYXRvciB3YXMgc2V0LgogLy8KLVRJbnRlcm1BZ2dyZWdh
dGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKFRJbnRlcm1Ob2RlKiBub2Rl
LCBUT3BlcmF0b3Igb3AsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1BZ2dyZWdhdGUqIFRJbnRl
cm1lZGlhdGU6OnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKFRJbnRlcm1Ob2RlKiBub2RlLCBUT3BlcmF0
b3Igb3AsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybUFnZ3JlZ2F0ZSog
YWdnTm9kZTsKIApAQCAtMzkxLDggKzM4Myw2IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1l
ZGlhdGU6OnNldEFnZ3IKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBhZ2dOb2RlID0gbmV3
IFRJbnRlcm1BZ2dyZWdhdGUoKTsKICAgICAgICAgICAgIGFnZ05vZGUtPmdldFNlcXVlbmNlKCku
cHVzaF9iYWNrKG5vZGUpOwotICAgICAgICAgICAgaWYgKGxpbmUgPT0gMCkKLSAgICAgICAgICAg
ICAgICBsaW5lID0gbm9kZS0+Z2V0TGluZSgpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAg
ICAgIGFnZ05vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZSgpOwpAQCAtNDAxLDggKzM5MSw3IEBA
IFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3IKICAgICAvLyBTZXQgdGhl
IG9wZXJhdG9yLgogICAgIC8vCiAgICAgYWdnTm9kZS0+c2V0T3Aob3ApOwotICAgIGlmIChsaW5l
ICE9IDApCi0gICAgICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CisgICAgYWdnTm9kZS0+c2V0
TGluZShsaW5lKTsKIAogICAgIHJldHVybiBhZ2dOb2RlOwogfQpAQCAtNDkxLDcgKzQ4MCw3IEBA
IFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQ29udmVyc2kKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRJbnQ6ICAgbmV3T3AgPSBFT3BDb252SW50VG9GbG9hdDsgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6ICBuZXdPcCA9IEVPcENvbnZCb29sVG9G
bG9hdDsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJC
YWQgcHJvbW90aW9uIG5vZGUiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5n
ZXRMaW5lKCksICJCYWQgcHJvbW90aW9uIG5vZGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTUwMCw3ICs0ODksNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNp
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OiAgIG5ld09wID0gRU9wQ29udkludFRv
Qm9vbDsgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDogbmV3T3Ag
PSBFT3BDb252RmxvYXRUb0Jvb2w7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlvbiBub2RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFkIHByb21vdGlvbiBub2RlIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC01MDksMTIgKzQ5OCwxMiBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1l
ZGlhdGU6OmFkZENvbnZlcnNpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDogICBu
ZXdPcCA9IEVPcENvbnZCb29sVG9JbnQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBFYnRGbG9hdDogIG5ld09wID0gRU9wQ29udkZsb2F0VG9JbnQ7IGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlvbiBub2RlIiwgbm9k
ZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFkIHByb21vdGlv
biBub2RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwg
IkJhZCBwcm9tb3Rpb24gdHlwZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5l
KCksICJCYWQgcHJvbW90aW9uIHR5cGUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgfQogCkBAIC01MzQsNyArNTIzLDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRl
OjphZGRDb252ZXJzaQogLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIGFnZ3JlZ2F0ZSwgdW5sZXNz
IDAgd2FzIHBhc3NlZCBpbiBmb3IKIC8vIGJvdGggZXhpc3Rpbmcgbm9kZXMuCiAvLwotVEludGVy
bUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVm
dCwgVEludGVybU5vZGUqIHJpZ2h0LCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtQWdncmVnYXRl
KiBUSW50ZXJtZWRpYXRlOjpncm93QWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBsZWZ0LCBUSW50ZXJt
Tm9kZSogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgaWYgKGxlZnQgPT0g
MCAmJiByaWdodCA9PSAwKQogICAgICAgICByZXR1cm4gMDsKQEAgLTU1MSw4ICs1NDAsNyBAQCBU
SW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpncm93QWdnCiAgICAgaWYgKHJpZ2h0KQog
ICAgICAgICBhZ2dOb2RlLT5nZXRTZXF1ZW5jZSgpLnB1c2hfYmFjayhyaWdodCk7CiAKLSAgICBp
ZiAobGluZSAhPSAwKQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOworICAgIGFnZ05v
ZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1cm4gYWdnTm9kZTsKIH0KQEAgLTU2MiwxOCAr
NTUwLDE0IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2cKIC8vCiAv
LyBSZXR1cm5zIGFuIGFnZ3JlZ2F0ZSwgdW5sZXNzIDAgd2FzIHBhc3NlZCBpbiBmb3IgdGhlIGV4
aXN0aW5nIG5vZGUuCiAvLwotVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6bWFrZUFn
Z3JlZ2F0ZShUSW50ZXJtTm9kZSogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybUFnZ3Jl
Z2F0ZSogVEludGVybWVkaWF0ZTo6bWFrZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbm9kZSwgY29u
c3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBpZiAobm9kZSA9PSAwKQogICAgICAgICByZXR1
cm4gMDsKIAogICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ05vZGUgPSBuZXcgVEludGVybUFnZ3Jl
Z2F0ZTsKICAgICBhZ2dOb2RlLT5nZXRTZXF1ZW5jZSgpLnB1c2hfYmFjayhub2RlKTsKLQotICAg
IGlmIChsaW5lICE9IDApCi0gICAgICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7Ci0gICAgZWxz
ZQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7CisgICAgYWdnTm9k
ZS0+c2V0TGluZShsaW5lKTsKIAogICAgIHJldHVybiBhZ2dOb2RlOwogfQpAQCAtNTg1LDcgKzU2
OSw3IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2cKIC8vCiAvLyBS
ZXR1cm5zIHRoZSBzZWxlY3Rpb24gbm9kZSBjcmVhdGVkLgogLy8KLVRJbnRlcm1Ob2RlKiBUSW50
ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBh
aXIgbm9kZVBhaXIsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRl
OjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBhaXIgbm9kZVBh
aXIsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgLy8KICAgICAvLyBGb3IgY29tcGls
ZSB0aW1lIGNvbnN0YW50IHNlbGVjdGlvbnMsIHBydW5lIHRoZSBjb2RlIGFuZApAQCAtNTkzLDcg
KzU3Nyw3IEBAIFRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24KICAgICAv
LwogCiAgICAgaWYgKGNvbmQtPmdldEFzVHlwZWQoKSAmJiBjb25kLT5nZXRBc1R5cGVkKCktPmdl
dEFzQ29uc3RhbnRVbmlvbigpKSB7Ci0gICAgICAgIGlmIChjb25kLT5nZXRBc1R5cGVkKCktPmdl
dEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRCQ29uc3QoKSA9
PSB0cnVlKQorICAgICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldEJDb25z
dCgwKSA9PSB0cnVlKQogICAgICAgICAgICAgcmV0dXJuIG5vZGVQYWlyLm5vZGUxID8gc2V0QWdn
cmVnYXRlT3BlcmF0b3Iobm9kZVBhaXIubm9kZTEsIEVPcFNlcXVlbmNlLCBub2RlUGFpci5ub2Rl
MS0+Z2V0TGluZSgpKSA6IE5VTEw7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBu
b2RlUGFpci5ub2RlMiA/IHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKG5vZGVQYWlyLm5vZGUyLCBFT3BT
ZXF1ZW5jZSwgbm9kZVBhaXIubm9kZTItPmdldExpbmUoKSkgOiBOVUxMOwpAQCAtNjA2LDcgKzU5
MCw3IEBAIFRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24KIH0KIAogCi1U
SW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbW1hKFRJbnRlcm1UeXBlZCogbGVmdCwg
VEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUSW50
ZXJtZWRpYXRlOjphZGRDb21tYShUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmln
aHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgaWYgKGxlZnQtPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCAmJiByaWdodC0+Z2V0VHlwZSgpLmdldFF1YWxpZmll
cigpID09IEV2cUNvbnN0KSB7CiAgICAgICAgIHJldHVybiByaWdodDsKQEAgLTYyNiw3ICs2MTAs
NyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbW1hKFRJCiAvLwogLy8gUmV0
dXJucyB0aGUgc2VsZWN0aW9uIG5vZGUgY3JlYXRlZCwgb3IgMCBpZiBvbmUgY291bGQgbm90IGJl
LgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1U
eXBlZCogY29uZCwgVEludGVybVR5cGVkKiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCogZmFsc2VC
bG9jaywgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRT
ZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIHRydWVCbG9jaywgVElu
dGVybVR5cGVkKiBmYWxzZUJsb2NrLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIC8v
CiAgICAgLy8gR2V0IGNvbXBhdGlibGUgdHlwZXMuCkBAIC02NDcsNyArNjMxLDcgQEAgVEludGVy
bVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3RpbwogICAgIC8vCiAKICAgICBpZiAoY29u
ZC0+Z2V0QXNDb25zdGFudFVuaW9uKCkgJiYgdHJ1ZUJsb2NrLT5nZXRBc0NvbnN0YW50VW5pb24o
KSAmJiBmYWxzZUJsb2NrLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgewotICAgICAgICBpZiAoY29u
ZC0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldEJDb25z
dCgpKQorICAgICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldEJDb25zdCgw
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlQmxvY2s7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZUJsb2NrOwpAQCAtNjY5LDcgKzY1Myw3IEBAIFRJbnRlcm1UeXBlZCog
VEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW8KIC8vIFJldHVybnMgdGhlIGNvbnN0YW50IHVuaW9u
IG5vZGUgY3JlYXRlZC4KIC8vCiAKLVRJbnRlcm1Db25zdGFudFVuaW9uKiBUSW50ZXJtZWRpYXRl
OjphZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXlQb2ludGVyLCBjb25z
dCBUVHlwZSYgdCwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybUNvbnN0YW50VW5pb24qIFRJbnRl
cm1lZGlhdGU6OmFkZENvbnN0YW50VW5pb24oQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheVBvaW50
ZXIsIGNvbnN0IFRUeXBlJiB0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRl
cm1Db25zdGFudFVuaW9uKiBub2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHVuaW9uQXJy
YXlQb2ludGVyLCB0KTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtNjc3LDcgKzY2MSw3
IEBAIFRJbnRlcm1Db25zdGFudFVuaW9uKiBUSW50ZXJtZWRpYXRlOjphZGQKICAgICByZXR1cm4g
bm9kZTsKIH0KIAotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKFRWZWN0
b3JGaWVsZHMmIGZpZWxkcywgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUSW50ZXJt
ZWRpYXRlOjphZGRTd2l6emxlKFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgY29uc3QgVFNvdXJjZUxv
YyYgbGluZSkKIHsKIAogICAgIFRJbnRlcm1BZ2dyZWdhdGUqIG5vZGUgPSBuZXcgVEludGVybUFn
Z3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CkBAIC03MDAsNyArNjg0LDcgQEAgVEludGVybVR5cGVkKiBU
SW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKAogLy8KIC8vIENyZWF0ZSBsb29wIG5vZGVzLgogLy8K
LVRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRMb29wKFRMb29wVHlwZSB0eXBlLCBUSW50
ZXJtTm9kZSogaW5pdCwgVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIGV4cHIsIFRJ
bnRlcm1Ob2RlKiBib2R5LCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtTm9kZSogVEludGVybWVk
aWF0ZTo6YWRkTG9vcChUTG9vcFR5cGUgdHlwZSwgVEludGVybU5vZGUqIGluaXQsIFRJbnRlcm1U
eXBlZCogY29uZCwgVEludGVybVR5cGVkKiBleHByLCBUSW50ZXJtTm9kZSogYm9keSwgY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJtTm9kZSogbm9kZSA9IG5ldyBUSW50ZXJt
TG9vcCh0eXBlLCBpbml0LCBjb25kLCBleHByLCBib2R5KTsKICAgICBub2RlLT5zZXRMaW5lKGxp
bmUpOwpAQCAtNzExLDEyICs2OTUsMTIgQEAgVEludGVybU5vZGUqIFRJbnRlcm1lZGlhdGU6OmFk
ZExvb3AoVExvbwogLy8KIC8vIEFkZCBicmFuY2hlcy4KIC8vCi1USW50ZXJtQnJhbmNoKiBUSW50
ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBUU291cmNlTG9jIGxpbmUp
CitUSW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5j
aE9wLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIHJldHVybiBhZGRCcmFuY2goYnJh
bmNoT3AsIDAsIGxpbmUpOwogfQogCi1USW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRlOjphZGRC
cmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBUSW50ZXJtVHlwZWQqIGV4cHJlc3Npb24sIFRTb3Vy
Y2VMb2MgbGluZSkKK1RJbnRlcm1CcmFuY2gqIFRJbnRlcm1lZGlhdGU6OmFkZEJyYW5jaChUT3Bl
cmF0b3IgYnJhbmNoT3AsIFRJbnRlcm1UeXBlZCogZXhwcmVzc2lvbiwgY29uc3QgVFNvdXJjZUxv
YyYgbGluZSkKIHsKICAgICBUSW50ZXJtQnJhbmNoKiBub2RlID0gbmV3IFRJbnRlcm1CcmFuY2go
YnJhbmNoT3AsIGV4cHJlc3Npb24pOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CkBAIC04NDYs
NiArODMwLDcgQEAgYm9vbCBUSW50ZXJtVW5hcnk6OnByb21vdGUoVEluZm9TaW5rJikKICAgICB9
CiAKICAgICBzZXRUeXBlKG9wZXJhbmQtPmdldFR5cGUoKSk7CisgICAgdHlwZS5zZXRRdWFsaWZp
ZXIoRXZxVGVtcG9yYXJ5KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODYwLDcgKzg0NSw3
IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKIHsKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIG9ubHkgaGFuZGxlcyBzY2FsYXJzLCB2ZWN0b3JzLCBhbmQgbWF0cmljZXMu
CiAgICAgaWYgKGxlZnQtPmlzQXJyYXkoKSB8fCByaWdodC0+aXNBcnJheSgpKSB7Ci0gICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkludmFsaWQgb3Bl
cmF0aW9uIGZvciBhcnJheXMiLCBnZXRMaW5lKCkpOworICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkludmFsaWQgb3BlcmF0aW9u
IGZvciBhcnJheXMiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtOTY1LDcg
Kzk1MCw3IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKICAgICAg
ICAgICAgICAgICAgICAgc2V0VHlwZShUVHlwZShiYXNpY1R5cGUsIGhpZ2hlclByZWNpc2lvbiwg
RXZxVGVtcG9yYXJ5LCBzaXplLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhJbnRlcm5hbEVycm9yLCAiTWlzc2luZyBlbHNlcyIsIGdldExpbmUoKSk7CisgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5l
KCksICJNaXNzaW5nIGVsc2VzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC05OTQsNyArOTc5LDcgQEAgYm9vbCBU
SW50ZXJtQmluYXJ5Ojpwcm9tb3RlKFRJbmZvU2luayYgaQogICAgICAgICAgICAgICAgICAgICBz
ZXRUeXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVyUHJlY2lzaW9uLCBFdnFUZW1wb3JhcnksIHNp
emUsIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3Is
ICJNaXNzaW5nIGVsc2VzIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIk1pc3NpbmcgZWxz
ZXMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTEwMzQsMjMgKzEwMTksMjIgQEAgYm9vbCBUSW50ZXJtQmluYXJ5
Ojpwcm9tb3RlKFRJbmZvU2luayYgaQogCiBib29sIENvbXBhcmVTdHJ1Y3QoY29uc3QgVFR5cGUm
IGxlZnROb2RlVHlwZSwgQ29uc3RhbnRVbmlvbiogcmlnaHRVbmlvbkFycmF5LCBDb25zdGFudFVu
aW9uKiBsZWZ0VW5pb25BcnJheSkKIHsKLSAgICBjb25zdCBUVHlwZUxpc3QqIGZpZWxkcyA9IGxl
ZnROb2RlVHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSBs
ZWZ0Tm9kZVR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCi0gICAgc2l6ZV90IHN0cnVjdFNp
emUgPSBmaWVsZHMtPnNpemUoKTsKLSAgICBpbnQgaW5kZXggPSAwOworICAgIHNpemVfdCBzdHJ1
Y3RTaXplID0gZmllbGRzLnNpemUoKTsKKyAgICBzaXplX3QgaW5kZXggPSAwOwogCiAgICAgZm9y
IChzaXplX3QgaiA9IDA7IGogPCBzdHJ1Y3RTaXplOyBqKyspIHsKLSAgICAgICAgaW50IHNpemUg
PSAoKmZpZWxkcylbal0udHlwZS0+Z2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgaWYgKCgqZmllbGRzKVtqXS50eXBl
LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoIUNv
bXBhcmVTdHJ1Y3R1cmUoKigqZmllbGRzKVtqXS50eXBlLCAmcmlnaHRVbmlvbkFycmF5W2luZGV4
XSwgJmxlZnRVbmlvbkFycmF5W2luZGV4XSkpCisgICAgICAgIHNpemVfdCBzaXplID0gZmllbGRz
W2pdLT50eXBlKCktPmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChmaWVsZHNbal0tPnR5cGUoKS0+Z2V0
QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7CisgICAgICAgICAgICAgICAgaWYgKCFDb21wYXJl
U3RydWN0dXJlKCooZmllbGRzW2pdLT50eXBlKCkpLCAmcmlnaHRVbmlvbkFycmF5W2luZGV4XSwg
JmxlZnRVbmlvbkFycmF5W2luZGV4XSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGxlZnRVbmlvbkFy
cmF5W2luZGV4XSAhPSByaWdodFVuaW9uQXJyYXlbaW5kZXhdKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgaW5kZXgrKzsKICAgICAgICAgICAgIH0K
LQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMTA2MiwxMCArMTA0Niwx
MCBAQCBib29sIENvbXBhcmVTdHJ1Y3R1cmUoY29uc3QgVFR5cGUmIGxlZnROCiAgICAgICAgIFRU
eXBlIHR5cGVXaXRob3V0QXJyYXluZXNzID0gbGVmdE5vZGVUeXBlOwogICAgICAgICB0eXBlV2l0
aG91dEFycmF5bmVzcy5jbGVhckFycmF5bmVzcygpOwogCi0gICAgICAgIGludCBhcnJheVNpemUg
PSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlTaXplKCk7CisgICAgICAgIHNpemVfdCBhcnJheVNpemUg
PSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlTaXplKCk7CiAKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBhcnJheVNpemU7ICsraSkgewotICAgICAgICAgICAgaW50IG9mZnNldCA9IHR5cGVXaXRo
b3V0QXJyYXluZXNzLmdldE9iamVjdFNpemUoKSAqIGk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYXJyYXlTaXplOyArK2kpIHsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSB0
eXBlV2l0aG91dEFycmF5bmVzcy5nZXRPYmplY3RTaXplKCkgKiBpOwogICAgICAgICAgICAgaWYg
KCFDb21wYXJlU3RydWN0KHR5cGVXaXRob3V0QXJyYXluZXNzLCAmcmlnaHRVbmlvbkFycmF5W29m
ZnNldF0sICZsZWZ0VW5pb25BcnJheVtvZmZzZXRdKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KQEAgLTEwODUsNyArMTA2OSw3IEBAIGJvb2wgQ29tcGFyZVN0cnVj
dHVyZShjb25zdCBUVHlwZSYgbGVmdE4KIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5p
b246OmZvbGQoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGNvbnN0YW50Tm9kZSwgVEluZm9T
aW5rJiBpbmZvU2luaykKIHsKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gZ2V0VW5p
b25BcnJheVBvaW50ZXIoKTsKLSAgICBpbnQgb2JqZWN0U2l6ZSA9IGdldFR5cGUoKS5nZXRPYmpl
Y3RTaXplKCk7CisgICAgc2l6ZV90IG9iamVjdFNpemUgPSBnZXRUeXBlKCkuZ2V0T2JqZWN0U2l6
ZSgpOwogCiAgICAgaWYgKGNvbnN0YW50Tm9kZSkgeyAgLy8gYmluYXJ5IG9wZXJhdGlvbnMKICAg
ICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUgPSBjb25zdGFudE5vZGUtPmdldEFzQ29u
c3RhbnRVbmlvbigpOwpAQCAtMTA5NSwxMyArMTA3OSwxMyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRl
cm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgIC8vIGZvciBhIGNhc2UgbGlrZSBmbG9hdCBm
ID0gMS4yICsgdmVjNCgyLDMsNCw1KTsKICAgICAgICAgaWYgKGNvbnN0YW50Tm9kZS0+Z2V0VHlw
ZSgpLmdldE9iamVjdFNpemUoKSA9PSAxICYmIG9iamVjdFNpemUgPiAxKSB7CiAgICAgICAgICAg
ICByaWdodFVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKLSAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgKytpKQorICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyArK2kpCiAgICAgICAgICAgICAgICAg
cmlnaHRVbmlvbkFycmF5W2ldID0gKm5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAgICAg
ICAgICAgICByZXR1cm5UeXBlID0gZ2V0VHlwZSgpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnN0
YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSA+IDEgJiYgb2JqZWN0U2l6ZSA9PSAx
KSB7CiAgICAgICAgICAgICAvLyBmb3IgYSBjYXNlIGxpa2UgZmxvYXQgZiA9IHZlYzQoMiwzLDQs
NSkgKyAxLjI7CiAgICAgICAgICAgICB1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bY29u
c3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpXTsKLSAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOyAr
K2kpCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnN0YW50Tm9kZS0+Z2V0
VHlwZSgpLmdldE9iamVjdFNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlb
aV0gPSAqZ2V0VW5pb25BcnJheVBvaW50ZXIoKTsKICAgICAgICAgICAgIHJldHVyblR5cGUgPSBu
b2RlLT5nZXRUeXBlKCk7CiAgICAgICAgICAgICBvYmplY3RTaXplID0gY29uc3RhbnROb2RlLT5n
ZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwpAQCAtMTExNSwxNCArMTA5OSwxNCBAQCBUSW50ZXJt
VHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBjYXNlIEVPcEFk
ZDoKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29i
amVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAg
ICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAg
ICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0g
KyByaWdodFVuaW9uQXJyYXlbaV07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFT3BTdWI6CiAgICAgICAgICAgICAgICAgdGVtcENv
bnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAg
ICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVt
cENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldIC0gcmlnaHRVbmlvbkFycmF5W2ldOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMzIsMTMgKzExMTYs
MTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAg
ICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RB
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsv
LyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29u
c3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gKiByaWdodFVuaW9uQXJyYXlbaV07CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFT3BN
YXRyaXhUaW1lc01hdHJpeDoKICAgICAgICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2lj
VHlwZSgpICE9IEVidEZsb2F0IHx8IG5vZGUtPmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KSB7
Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCBtdWx0
aXBseSIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiQ29uc3RhbnQgRm9sZGluZyBj
YW5ub3QgYmUgZG9uZSBmb3IgbWF0cml4IG11bHRpcGx5Iik7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9y
dCBNU1ZDKys2LjAKQEAgLTExNTcsMTEgKzExNDEsMTEgQEAgVEludGVybVR5cGVkKiBUSW50ZXJt
Q29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BEaXY6CiAgICAgICAgICAg
ICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAg
ICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAg
ICAgICBjYXNlIEVidEZsb2F0OgogICAgICAgICAgICAgICAgIGlmIChyaWdodFVuaW9uQXJyYXlb
aV0gPT0gMC4wZikgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeFdhcm5pbmcsICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9s
ZGluZyIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4V2FybmluZywgZ2V0TGluZSgpLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVy
aW5nIGNvbnN0YW50IGZvbGRpbmciKTsKICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJy
YXlbaV0uc2V0RkNvbnN0KHVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgPCAwID8gLUZMVF9NQVgg
OiBGTFRfTUFYKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
dGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KHVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgLyBy
aWdodFVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkpOwpAQCAtMTE2OSwxMyArMTE1MywxMyBAQCBU
SW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAKICAgICAgICAgICAgIGNh
c2UgRWJ0SW50OgogICAgICAgICAgICAgICAgIGlmIChyaWdodFVuaW9uQXJyYXlbaV0gPT0gMCkg
ewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5p
bmcsICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9sZGluZyIsIGdldExp
bmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
V2FybmluZywgZ2V0TGluZSgpLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50
IGZvbGRpbmciKTsKICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNv
bnN0KElOVF9NQVgpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAg
ICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3QodW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSAv
IHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50IGZvbGRpbmcgY2Fubm90IGJlIGRv
bmUgZm9yIFwiL1wiIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50IGZvbGRp
bmcgY2Fubm90IGJlIGRvbmUgZm9yIFwiL1wiIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEx
ODQsNyArMTE2OCw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQK
IAogICAgICAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoKICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0RmxvYXQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQ29uc3Rh
bnQgRm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgbWF0cml4IHRpbWVzIHZlY3RvciIsIGdldExp
bmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiQ29uc3RhbnQgRm9sZGluZyBjYW5ub3QgYmUgZG9u
ZSBmb3IgbWF0cml4IHRpbWVzIHZlY3RvciIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBu
ZXcgQ29uc3RhbnRVbmlvbltnZXROb21pbmFsU2l6ZSgpXTsKQEAgLTEyMDUsNyArMTE4OSw3IEBA
IFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKIAogICAgICAgICAgICAg
Y2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeDoKICAgICAgICAgICAgICAgICBpZiAoZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50IEZvbGRpbmcg
Y2Fubm90IGJlIGRvbmUgZm9yIHZlY3RvciB0aW1lcyBtYXRyaXgiLCBnZXRMaW5lKCkpOworICAg
ICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsIGdldExpbmUoKSwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIHZlY3Rv
ciB0aW1lcyBtYXRyaXgiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
ICAgICAgICAgfQogCkBAIC0xMjIzLDcgKzEyMDcsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1D
b25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxBbmQ6IC8vIHRo
aXMgY29kZSBpcyB3cml0dGVuIGZvciBwb3NzaWJsZSBmdXR1cmUgdXNlLCB3aWxsIG5vdCBnZXQg
ZXhlY3V0ZWQgY3VycmVudGx5CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBN
U1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RT
aXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Jq
ZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0g
PSB1bmlvbkFycmF5W2ldICYmIHJpZ2h0VW5pb25BcnJheVtpXTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjMxLDcgKzEyMTUsNyBAQCBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBjYXNlIEVPcExvZ2lj
YWxPcjogLy8gdGhpcyBjb2RlIGlzIHdyaXR0ZW4gZm9yIHBvc3NpYmxlIGZ1dHVyZSB1c2UsIHdp
bGwgbm90IGdldCBleGVjdXRlZCBjdXJyZW50bHkKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RB
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsv
LyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29u
c3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gfHwgcmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyMzksNyArMTIyMyw3IEBA
IFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgIGNh
c2UgRU9wTG9naWNhbFhvcjoKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1T
VkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNp
emU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmpl
Y3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5n
ZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBFYnRCb29sOiB0ZW1wQ29uc3RBcnJh
eVtpXS5zZXRCQ29uc3QoKHVuaW9uQXJyYXlbaV0gPT0gcmlnaHRVbmlvbkFycmF5W2ldKSA/IGZh
bHNlIDogdHJ1ZSk7IGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlICYm
ICJEZWZhdWx0IG1pc3NpbmciKTsKQEAgLTEyODUsNyArMTI2OSw3IEBAIFRJbnRlcm1UeXBlZCog
VEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgICAgICAgICAgaWYgKCFDb21w
YXJlU3RydWN0dXJlKG5vZGUtPmdldFR5cGUoKSwgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KSwgdW5pb25BcnJheSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0
cnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodW5pb25BcnJheVtpXSAhPSByaWdodFVuaW9uQXJyYXlbaV0pIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOyAgLy8gYnJlYWsgb3V0IG9mIGZvciBsb29wCkBAIC0xMzEx
LDcgKzEyOTUsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChDb21wYXJlU3RydWN0dXJlKG5vZGUtPmdldFR5cGUoKSwg
bm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSwgdW5pb25BcnJheSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsr
KSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6
ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pb25BcnJheVtpXSA9PSBy
aWdodFVuaW9uQXJyYXlbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sTm9k
ZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgLy8gYnJl
YWsgb3V0IG9mIGZvciBsb29wCkBAIC0xMzMzLDcgKzEzMTcsNyBAQCBUSW50ZXJtVHlwZWQqIFRJ
bnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXBOb2Rl
OwogCiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkludmFsaWQgb3BlcmF0b3IgZm9yIGNvbnN0
YW50IGZvbGRpbmciLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiSW52YWxpZCBvcGVyYXRv
ciBmb3IgY29uc3RhbnQgZm9sZGluZyIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICB9CiAgICAgICAgIHRlbXBOb2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHRlbXBD
b25zdEFycmF5LCByZXR1cm5UeXBlKTsKQEAgLTEzNDYsMTQgKzEzMzAsMTQgQEAgVEludGVybVR5
cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAvLwogICAgICAgICBUSW50
ZXJtQ29uc3RhbnRVbmlvbiAqbmV3Tm9kZSA9IDA7CiAgICAgICAgIENvbnN0YW50VW5pb24qIHRl
bXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBzd2l0Y2gob3ApIHsK
ICAgICAgICAgICAgICAgICBjYXNlIEVPcE5lZ2F0aXZlOgogICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBFYnRGbG9hdDogdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KC11bmlvbkFycmF5
W2ldLmdldEZDb25zdCgpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVi
dEludDogICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3QoLXVuaW9uQXJyYXlbaV0uZ2V0SUNv
bnN0KCkpOyBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5h
bEVycm9yLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIsIGdldExp
bmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZv
bGRlZCBpbnRvIGNvbnN0YW50Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMzYxLDcgKzEzNDUsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpm
b2xkCiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6ICB0ZW1wQ29uc3RBcnJh
eVtpXS5zZXRCQ29uc3QoIXVuaW9uQXJyYXlbaV0uZ2V0QkNvbnN0KCkpOyBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5hcnkgb3BlcmF0
aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzc3LDY1ICsxMzYxLDY0IEBA
IFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKIAogVEludGVybVR5cGVk
KiBUSW50ZXJtZWRpYXRlOjpwcm9tb3RlQ29uc3RhbnRVbmlvbihUQmFzaWNUeXBlIHByb21vdGVU
bywgVEludGVybUNvbnN0YW50VW5pb24qIG5vZGUpCiB7Ci0gICAgQ29uc3RhbnRVbmlvbiAqcmln
aHRVbmlvbkFycmF5ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICBpbnQgc2l6
ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90IHNpemUgPSBu
b2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogCiAgICAgQ29uc3RhbnRVbmlvbiAqbGVm
dFVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltzaXplXTsKIAotICAgIGZvciAoaW50IGk9
MDsgaSA8IHNpemU7IGkrKykgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsr
KSB7CiAKICAgICAgICAgc3dpdGNoIChwcm9tb3RlVG8pIHsKICAgICAgICAgICAgIGNhc2UgRWJ0
RmxvYXQ6CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNU
eXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5n
ZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50PihpKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRCQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5n
ZXRCQ29uc3Qoc3RhdGljX2Nhc3Q8Ym9vbD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldID0gcmlnaHRVbmlvbkFycmF5W2ldOworICAg
ICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19j
YXN0PGZsb2F0Pihub2RlLT5nZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkpKSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeElu
dGVybmFsRXJyb3IsICJDYW5ub3QgcHJvbW90ZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsIG5vZGUtPmdldExpbmUoKSwgIkNhbm5vdCBwcm9tb3RlIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIEVidEludDoKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5v
ZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNl
IEVidEludDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldID0gcmln
aHRVbmlvbkFycmF5W2ldOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlb
aV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0SUNvbnN0KHN0YXRpY19jYXN0
PGludD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9u
QXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4ocmlnaHRVbmlvbkFycmF5W2ldLmdl
dEJDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5z
ZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5nZXRCQ29uc3Qoc3RhdGljX2Nhc3Q8Ym9v
bD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFy
cmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRG
Q29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0
SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0
PihpKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQ2Fubm90IHByb21vdGUiLCBub2RlLT5nZXRMaW5l
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJDYW5ub3QgcHJvbW90ZSIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRCb29sOgogICAgICAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9u
QXJyYXlbaV0uc2V0QkNvbnN0KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSAhPSAwKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChub2Rl
LT5nZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50PihpKSkgIT0gMCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAg
ICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0gPSByaWdodFVuaW9uQXJyYXlbaV07
CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9k
ZS0+Z2V0QkNvbnN0KHN0YXRpY19jYXN0PGJvb2w+KGkpKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChyaWdodFVuaW9uQXJy
YXlbaV0uZ2V0RkNvbnN0KCkgIT0gMC4wZik7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0
VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0
PihpKSkgIT0gMC4wZik7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNhbm5vdCBwcm9tb3RlIiwgbm9kZS0+
Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQ2Fubm90IHByb21vdGUi
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJJbmNv
cnJlY3QgZGF0YSB0eXBlIGZvdW5kIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExp
bmUoKSwgIkluY29ycmVjdCBkYXRhIHR5cGUgZm91bmQiKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvT3V0cHV0R0xTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5LDMgKzE5LDE3IEBAIGJvb2wgVE91dHB1dEdMU0w6OndyaXRlVmFyaWFibGVQ
cmVjaXNpb24KIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CisKK3ZvaWQgVE91dHB1dEdMU0w6OnZp
c2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqIG5vZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSYgb3V0
ID0gb2JqU2luaygpOworCisgICAgaWYgKG5vZGUtPmdldFN5bWJvbCgpID09ICJnbF9GcmFnRGVw
dGhFWFQiKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICJnbF9GcmFnRGVwdGgiOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0U3ltYm9sKG5vZGUp
OworICAgIH0KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9P
dXRwdXRHTFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL091dHB1dEdMU0wuaAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuaAkod29ya2luZyBjb3B5KQpAQCAtMjAs
NiArMjAsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgd3JpdGVW
YXJpYWJsZVByZWNpc2lvbihUUHJlY2lzaW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1i
b2woVEludGVybVN5bWJvbCogbm9kZSk7CiB9OwogCiAjZW5kaWYgIC8vIENST1NTQ09NUElMRVJH
TFNMX09VVFBVVEdMU0xfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9PdXRwdXRHTFNMQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcAkocmV2aXNpb24gMTUyNjQ5KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzksMjUgKzc5LDkgQEAgdm9pZCBUT3V0cHV0R0xTTEJhc2U6
OndyaXRlVmFyaWFibGVUeXBlKAogICAgIGlmICgocXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkg
JiYgKHF1YWxpZmllciAhPSBFdnFHbG9iYWwpKQogICAgICAgICBvdXQgPDwgdHlwZS5nZXRRdWFs
aWZpZXJTdHJpbmcoKSA8PCAiICI7CiAgICAgLy8gRGVjbGFyZSB0aGUgc3RydWN0IGlmIHdlIGhh
dmUgbm90IGRvbmUgc28gYWxyZWFkeS4KLSAgICBpZiAoKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0g
RWJ0U3RydWN0KSAmJgotICAgICAgICAobURlY2xhcmVkU3RydWN0cy5maW5kKHR5cGUuZ2V0VHlw
ZU5hbWUoKSkgPT0gbURlY2xhcmVkU3RydWN0cy5lbmQoKSkpCisgICAgaWYgKCh0eXBlLmdldEJh
c2ljVHlwZSgpID09IEVidFN0cnVjdCkgJiYgIXN0cnVjdERlY2xhcmVkKHR5cGUuZ2V0U3RydWN0
KCkpKQogICAgIHsKLSAgICAgICAgb3V0IDw8ICJzdHJ1Y3QgIiA8PCBoYXNoTmFtZSh0eXBlLmdl
dFR5cGVOYW1lKCkpIDw8ICJ7XG4iOwotICAgICAgICBjb25zdCBUVHlwZUxpc3QqIHN0cnVjdHVy
ZSA9IHR5cGUuZ2V0U3RydWN0KCk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gTlVMTCk7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkK
LSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0
dXJlKVtpXS50eXBlOwotICAgICAgICAgICAgQVNTRVJUKGZpZWxkVHlwZSAhPSBOVUxMKTsKLSAg
ICAgICAgICAgIGlmICh3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKGZpZWxkVHlwZS0+Z2V0UHJlY2lz
aW9uKCkpKQotICAgICAgICAgICAgICAgIG91dCA8PCAiICI7Ci0gICAgICAgICAgICBvdXQgPDwg
Z2V0VHlwZU5hbWUoKmZpZWxkVHlwZSkgPDwgIiAiIDw8IGhhc2hOYW1lKGZpZWxkVHlwZS0+Z2V0
RmllbGROYW1lKCkpOwotICAgICAgICAgICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJheSgpKQotICAg
ICAgICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZFR5cGUpOwotICAgICAgICAg
ICAgb3V0IDw8ICI7XG4iOwotICAgICAgICB9Ci0gICAgICAgIG91dCA8PCAifSI7Ci0gICAgICAg
IG1EZWNsYXJlZFN0cnVjdHMuaW5zZXJ0KHR5cGUuZ2V0VHlwZU5hbWUoKSk7CisgICAgICAgIGRl
Y2xhcmVTdHJ1Y3QodHlwZS5nZXRTdHJ1Y3QoKSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBA
IC0xMzgsMjQgKzEyMiwyNSBAQCBjb25zdCBDb25zdGFudFVuaW9uKiBUT3V0cHV0R0xTTEJhc2U6
OndyCiAKICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCiAgICAgewot
ICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKSA8PCAiKCI7Ci0gICAg
ICAgIGNvbnN0IFRUeXBlTGlzdCogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKLSAgICAg
ICAgQVNTRVJUKHN0cnVjdHVyZSAhPSBOVUxMKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgKytpKQorICAgICAgICBjb25zdCBUU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOworICAgICAgICBvdXQgPDwgaGFzaE5hbWUoc3Ry
dWN0dXJlLT5uYW1lKCkpIDw8ICIoIjsKKworICAgICAgICBjb25zdCBURmllbGRMaXN0JiBmaWVs
ZHMgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGZpZWxkcy5zaXplKCk7ICsraSkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUq
IGZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOworICAgICAgICAgICAgY29uc3QgVFR5
cGUqIGZpZWxkVHlwZSA9IGZpZWxkc1tpXS0+dHlwZSgpOwogICAgICAgICAgICAgQVNTRVJUKGZp
ZWxkVHlwZSAhPSBOVUxMKTsKICAgICAgICAgICAgIHBDb25zdFVuaW9uID0gd3JpdGVDb25zdGFu
dFVuaW9uKCpmaWVsZFR5cGUsIHBDb25zdFVuaW9uKTsKLSAgICAgICAgICAgIGlmIChpICE9IHN0
cnVjdHVyZS0+c2l6ZSgpIC0gMSkgb3V0IDw8ICIsICI7CisgICAgICAgICAgICBpZiAoaSAhPSBm
aWVsZHMuc2l6ZSgpIC0gMSkgb3V0IDw8ICIsICI7CiAgICAgICAgIH0KICAgICAgICAgb3V0IDw8
ICIpIjsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW50IHNpemUgPSB0eXBlLmdl
dE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUo
KTsKICAgICAgICAgYm9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAgICAgaWYgKHdyaXRl
VHlwZSkgb3V0IDw8IGdldFR5cGVOYW1lKHR5cGUpIDw8ICIoIjsKLSAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBzaXplOyArK2ksICsrcENvbnN0VW5pb24pCisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpLCArK3BDb25zdFVuaW9uKQogICAgICAgICB7CiAgICAgICAg
ICAgICBzd2l0Y2ggKHBDb25zdFVuaW9uLT5nZXRUeXBlKCkpCiAgICAgICAgICAgICB7CkBAIC0y
NjAsMTIgKzI0NSwxOCBAQCBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCaW5hcnkoVmlzaXQg
CiAgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6CiAgICAgICAgICAgICBpZiAodmlz
aXQgPT0gSW5WaXNpdCkKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBIZXJlIHdl
IGFyZSB3cml0aW5nIG91dCAiZm9vLmJhciIsIHdoZXJlICJmb28iIGlzIHN0cnVjdAorICAgICAg
ICAgICAgICAgIC8vIGFuZCAiYmFyIiBpcyBmaWVsZC4gSW4gQVNULCBpdCBpcyByZXByZXNlbnRl
ZCBhcyBhIGJpbmFyeQorICAgICAgICAgICAgICAgIC8vIG5vZGUsIHdoZXJlIGxlZnQgY2hpbGQg
cmVwcmVzZW50cyAiZm9vIiBhbmQgcmlnaHQgY2hpbGQgImJhciIuCisgICAgICAgICAgICAgICAg
Ly8gVGhlIG5vZGUgaXRzZWxmIHJlcHJlc2VudHMgIi4iLiBUaGUgc3RydWN0IGZpZWxkICJiYXIi
IGlzCisgICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgc3RvcmVkIGFzIGFuIGluZGV4IGludG8g
VFN0cnVjdHVyZTo6ZmllbGRzLgogICAgICAgICAgICAgICAgIG91dCA8PCAiLiI7Ci0gICAgICAg
ICAgICAgICAgLy8gVE9ETyhhbG9rcCk6IEFTU0VSVAotICAgICAgICAgICAgICAgIFRTdHJpbmcg
ZmllbGROYW1lID0gbm9kZS0+Z2V0VHlwZSgpLmdldEZpZWxkTmFtZSgpOworICAgICAgICAgICAg
ICAgIGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlw
ZSgpLmdldFN0cnVjdCgpOworICAgICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1Db25zdGFudFVu
aW9uKiBpbmRleCA9IG5vZGUtPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAg
ICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpW2lu
ZGV4LT5nZXRJQ29uc3QoMCldOwogCi0gICAgICAgICAgICAgICAgY29uc3QgVFR5cGUmIHN0cnVj
dFR5cGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKTsKLSAgICAgICAgICAgICAgICBpZiAo
IW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3RUeXBlLmdldFR5cGVOYW1lKCkpKQorICAg
ICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gZmllbGQtPm5hbWUoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3R1cmUtPm5hbWUoKSkp
CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZSA9IGhhc2hOYW1lKGZpZWxkTmFtZSk7CiAK
ICAgICAgICAgICAgICAgICBvdXQgPDwgZmllbGROYW1lOwpAQCAtNTk2LDcgKzU4Nyw3IEBAIGJv
b2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBjb25zdCBUVHlwZSYgdHlwZSA9IG5vZGUtPmdldFR5cGUoKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpOwotICAg
ICAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0eXBlLmdldFR5cGVOYW1lKCkpIDw8ICIoIjsK
KyAgICAgICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRTdHJ1Y3QoKS0+bmFtZSgp
KSA8PCAiKCI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJ
blZpc2l0KQogICAgICAgICAgICAgewpAQCAtNzY1LDcgKzc1Niw3IEBAIFRTdHJpbmcgVE91dHB1
dEdMU0xCYXNlOjpnZXRUeXBlTmFtZShjb24KICAgICBlbHNlCiAgICAgewogICAgICAgICBpZiAo
dHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCi0gICAgICAgICAgICBvdXQgPDwgaGFz
aE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKTsKKyAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0
eXBlLmdldFN0cnVjdCgpLT5uYW1lKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvdXQg
PDwgdHlwZS5nZXRCYXNpY1N0cmluZygpOwogICAgIH0KQEAgLTc5OCwzICs3ODksMjkgQEAgVFN0
cmluZyBUT3V0cHV0R0xTTEJhc2U6Omhhc2hGdW5jdGlvbk5hbQogICAgICAgICByZXR1cm4gbmFt
ZTsKICAgICByZXR1cm4gaGFzaE5hbWUobmFtZSk7CiB9CisKK2Jvb2wgVE91dHB1dEdMU0xCYXNl
OjpzdHJ1Y3REZWNsYXJlZChjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1EZWNsYXJlZFN0cnVjdHMuZmluZChzdHJ1Y3R1cmUtPm5hbWUoKSkgIT0gbURl
Y2xhcmVkU3RydWN0cy5lbmQoKTsKK30KKwordm9pZCBUT3V0cHV0R0xTTEJhc2U6OmRlY2xhcmVT
dHJ1Y3QoY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFRJbmZvU2lua0Jhc2Um
IG91dCA9IG9ialNpbmsoKTsKKworICAgIG91dCA8PCAic3RydWN0ICIgPDwgaGFzaE5hbWUoc3Ry
dWN0dXJlLT5uYW1lKCkpIDw8ICJ7XG4iOworICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9
IHN0cnVjdHVyZS0+ZmllbGRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMu
c2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBjb25zdCBURmllbGQqIGZpZWxkID0gZmllbGRz
W2ldOworICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVsZC0+dHlwZSgpLT5n
ZXRQcmVjaXNpb24oKSkpCisgICAgICAgICAgICBvdXQgPDwgIiAiOworICAgICAgICBvdXQgPDwg
Z2V0VHlwZU5hbWUoKmZpZWxkLT50eXBlKCkpIDw8ICIgIiA8PCBoYXNoTmFtZShmaWVsZC0+bmFt
ZSgpKTsKKyAgICAgICAgaWYgKGZpZWxkLT50eXBlKCktPmlzQXJyYXkoKSkKKyAgICAgICAgICAg
IG91dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZC0+dHlwZSgpKTsKKyAgICAgICAgb3V0IDw8ICI7
XG4iOworICAgIH0KKyAgICBvdXQgPDwgIn0iOworCisgICAgbURlY2xhcmVkU3RydWN0cy5pbnNl
cnQoc3RydWN0dXJlLT5uYW1lKCkpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgJKHJldmlzaW9uIDE1MjY0
OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw5IEBAIHByb3RlY3RlZDoKICAgICBUU3Ry
aW5nIGhhc2hGdW5jdGlvbk5hbWUoY29uc3QgVFN0cmluZyYgbWFuZ2xlZF9uYW1lKTsKIAogcHJp
dmF0ZToKKyAgICBib29sIHN0cnVjdERlY2xhcmVkKGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkgY29uc3Q7CisgICAgdm9pZCBkZWNsYXJlU3RydWN0KGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSk7CisKICAgICBUSW5mb1NpbmtCYXNlJiBtT2JqU2luazsKICAgICBib29sIG1EZWNsYXJp
bmdWYXJpYWJsZXM7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9PdXRwdXRITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNiArNTIsNyBAQCBPdXRwdXRITFNMOjpPdXRwdXRITFNMKFRQYXJzZUNvbnRleHQg
JmNvCiAgICAgbVVzZXNQb2ludENvb3JkID0gZmFsc2U7CiAgICAgbVVzZXNGcm9udEZhY2luZyA9
IGZhbHNlOwogICAgIG1Vc2VzUG9pbnRTaXplID0gZmFsc2U7CisgICAgbVVzZXNGcmFnRGVwdGgg
PSBmYWxzZTsKICAgICBtVXNlc1hvciA9IGZhbHNlOwogICAgIG1Vc2VzTW9kMSA9IGZhbHNlOwog
ICAgIG1Vc2VzTW9kMnYgPSBmYWxzZTsKQEAgLTE4OSw2ICsxOTAsMTEgQEAgdm9pZCBPdXRwdXRI
TFNMOjpoZWFkZXIoKQogICAgICAgICBvdXQgPDwgIlxuIgogICAgICAgICAgICAgICAgInN0YXRp
YyBmbG9hdDQgZ2xfQ29sb3JbMV0gPSB7ZmxvYXQ0KDAsIDAsIDAsIDApfTtcbiI7CiAKKyAgICAg
ICAgaWYgKG1Vc2VzRnJhZ0RlcHRoKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgInN0
YXRpYyBmbG9hdCBnbF9EZXB0aCA9IDAuMDtcbiI7CisgICAgICAgIH0KKwogICAgICAgICBpZiAo
bVVzZXNGcmFnQ29vcmQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG91dCA8PCAic3RhdGljIGZs
b2F0NCBnbF9GcmFnQ29vcmQgPSBmbG9hdDQoMCwgMCwgMCwgMCk7XG4iOwpAQCAtNTA5LDYgKzUx
NSwxMSBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcigpCiAgICAgICAgIG91dCA8PCAiI2RlZmlu
ZSBHTF9VU0VTX1BPSU5UX1NJWkVcbiI7CiAgICAgfQogCisgICAgaWYgKG1Vc2VzRnJhZ0RlcHRo
KQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNfRlJBR19ERVBUSFxuIjsK
KyAgICB9CisKICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQogICAgIHsKICAgICAgICAgb3V0IDw8
ICJzdHJ1Y3QgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnNcbiIKQEAgLTg0Myw2ICs4NTQsMTEgQEAg
dm9pZCBPdXRwdXRITFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYgogICAgICAgICBtVXNlc1Bv
aW50U2l6ZSA9IHRydWU7CiAgICAgICAgIG91dCA8PCBuYW1lOwogICAgIH0KKyAgICBlbHNlIGlm
IChuYW1lID09ICJnbF9GcmFnRGVwdGhFWFQiKQorICAgIHsKKyAgICAgICAgbVVzZXNGcmFnRGVw
dGggPSB0cnVlOworICAgICAgICBvdXQgPDwgImdsX0RlcHRoIjsKKyAgICB9CiAgICAgZWxzZQog
ICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBub2RlLT5nZXRRdWFsaWZpZXIo
KTsKQEAgLTk1Miw3ICs5NjgsMTAgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShWaXNp
dCB2aXNpdAogICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKICAgICAgICAgaWYgKHZp
c2l0ID09IEluVmlzaXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNv
cmF0ZUZpZWxkKG5vZGUtPmdldFR5cGUoKS5nZXRGaWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgp
LT5nZXRUeXBlKCkpOworICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlID0g
bm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7CisgICAgICAgICAgICBjb25z
dCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogaW5kZXggPSBub2RlLT5nZXRSaWdodCgpLT5nZXRBc0Nv
bnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQgPSBzdHJ1Y3R1
cmUtPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOworICAgICAgICAgICAgb3V0IDw8ICIu
IiArIGRlY29yYXRlRmllbGQoZmllbGQtPm5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBl
KCkpOwogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTk3NCw3ICs5
OTMsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0CiAKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBpID0gZWxlbWVudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpID0gZWxlbWVu
dC0+Z2V0SUNvbnN0KDApOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICB7CkBAIC0xMDIxLDE4ICsxMDQwLDE4IEBAIGJvb2wgT3V0
cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQKICAgICAgICAgICAgICAgICBvdXQgPDwg
IiEoIjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0ICpmaWVs
ZHMgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgICAg
IGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdl
dFN0cnVjdCgpLT5maWVsZHMoKTsKIAotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWVsZHMtPnNpemUoKTsgaSsrKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqZmllbGRzKVtpXS50eXBlOworICAgICAgICAgICAgICAg
IGNvbnN0IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CiAKICAgICAgICAgICAgICAgICBub2Rl
LT5nZXRMZWZ0KCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgICAgIG91dCA8PCAiLiIg
KyBkZWNvcmF0ZUZpZWxkKGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCksIG5vZGUtPmdldExlZnQo
KS0+Z2V0VHlwZSgpKSArICIgPT0gIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIi4iICsgZGVj
b3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSkgKyAi
ID09ICI7CiAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0UmlnaHQoKS0+dHJhdmVyc2UodGhpcyk7
Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGRUeXBlLT5n
ZXRGaWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkpOworICAgICAgICAgICAg
ICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksIG5vZGUtPmdldExl
ZnQoKS0+Z2V0VHlwZSgpKTsKIAotICAgICAgICAgICAgICAgIGlmIChpIDwgZmllbGRzLT5zaXpl
KCkgLSAxKQorICAgICAgICAgICAgICAgIGlmIChpIDwgZmllbGRzLnNpemUoKSAtIDEpCiAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAmJiAiOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTEyMzgsNyArMTI1Nyw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRB
Z2dyZWdhdGUoVmlzaXQgdmkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1JbnNpZGVGdW5j
dGlvbikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZl
KG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShu
b2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICJ7XG4i
OwogCiAgICAgICAgICAgICAgICAgbVNjb3BlRGVwdGgrKzsKQEAgLTEyNTUsNyArMTI3NCw3IEBA
IGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKIAogICAgICAgICAgICAg
Zm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHNpdCA9IG5vZGUtPmdldFNlcXVlbmNlKCku
YmVnaW4oKTsgc2l0ICE9IG5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHNpdCsrKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpzaXQpLT5nZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpzaXQpLT5nZXRM
aW5lKCkuZmlyc3RfbGluZSk7CiAKICAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMo
KnNpdCk7CiAKQEAgLTEyNjQsNyArMTI4Myw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dy
ZWdhdGUoVmlzaXQgdmkKIAogICAgICAgICAgICAgaWYgKG1JbnNpZGVGdW5jdGlvbikKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEVu
ZExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRM
aW5lKCkubGFzdF9saW5lKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgIn1cbiI7CiAKICAgICAg
ICAgICAgICAgICBtU2NvcGVEZXB0aC0tOwpAQCAtMTI4Myw3ICsxMzAyLDcgQEAgYm9vbCBPdXRw
dXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQogICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RydWN0b3IodmFyaWFibGUtPmdldFR5
cGUoKSwgc2NvcGVkU3RydWN0KHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSksIE5V
TEwpOworICAgICAgICAgICAgICAgICAgICBhZGRDb25zdHJ1Y3Rvcih2YXJpYWJsZS0+Z2V0VHlw
ZSgpLCBzY29wZWRTdHJ1Y3QodmFyaWFibGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+bmFtZSgp
KSwgTlVMTCk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCF2YXJp
YWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCkgfHwgdmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpLT5n
ZXRTeW1ib2woKSAhPSAiIikgICAvLyBWYXJpYWJsZSBkZWNsYXJhdGlvbgpAQCAtMTQwMSw3ICsx
NDIwLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbC0+Z2V0VHlwZSgpLmdl
dFN0cnVjdCgpKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBhZGRDb25zdHJ1Y3RvcihzeW1ib2wtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KHN5bWJvbC0+
Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFkZENvbnN0cnVjdG9yKHN5bWJvbC0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3Qoc3ltYm9sLT5n
ZXRUeXBlKCkuZ2V0U3RydWN0KCktPm5hbWUoKSksIE5VTEwpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8IGFyZ3VtZW50U3RyaW5nKHN5bWJvbCk7
CkBAIC0xNjUwLDggKzE2NjksOCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZp
c2l0IHZpCiAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJtYXQ0KCIsICIsICIsICIpIik7
CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RTdHJ1Y3Q6Ci0gICAgICAg
IGFkZENvbnN0cnVjdG9yKG5vZGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5vZGUtPmdldFR5
cGUoKS5nZXRUeXBlTmFtZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOwotICAgICAgICBvdXRw
dXRUcmlwbGV0KHZpc2l0LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdldFR5cGVOYW1l
KCkpICsgIl9jdG9yKCIsICIsICIsICIpIik7CisgICAgICAgIGFkZENvbnN0cnVjdG9yKG5vZGUt
PmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+bmFt
ZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0
LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5uYW1lKCkpICsgIl9j
dG9yKCIsICIsICIsICIpIik7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BMZXNzVGhh
bjogICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgPCAiLCAiKSIpOyAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOiAgICAgIG91dHB1dFRy
aXBsZXQodmlzaXQsICIoIiwgIiA+ICIsICIpIik7ICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTE3NDEsNyArMTc2MCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24oVmlzaXQg
dmkKIAogICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAgICAgIAotICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUo
bm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQgPDwgIntcbiI7CiAKICAg
ICAgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQpAQCAtMTc0OSwyMCArMTc2OCwyMCBAQCBi
b29sIE91dHB1dEhMU0w6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpCiAgICAgICAgICAgICB0cmF2
ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRM
aW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8
ICI7XG59XG4iOwogCiAgICAgICAgIGlmIChub2RlLT5nZXRGYWxzZUJsb2NrKCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIG91dCA8PCAiZWxzZVxuIjsKIAotICAgICAgICAgICAgb3V0cHV0TGlu
ZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7CisgICAgICAgICAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZp
cnN0X2xpbmUpOwogICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwogCi0gICAgICAgICAgICBvdXRw
dXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpKTsKKyAgICAg
ICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5l
KCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0
RmFsc2VCbG9jaygpKTsKIAotICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5n
ZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7CisgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0
aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAg
ICAgICAgb3V0IDw8ICI7XG59XG4iOwogICAgICAgICB9CiAgICAgfQpAQCAtMTc5NSw3ICsxODE0
LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIAogICAgIHsKICAg
ICAgICAgb3V0IDw8ICJ7ZG9cbiI7CiAKLSAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2Rl
LT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUo
KS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8ICJ7XG4iOwogICAgIH0KICAgICBlbHNlCkBA
IC0xODIzLDcgKzE4NDIsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2aXNp
dCwgCiAKICAgICAgICAgb3V0IDw8ICIpXG4iOwogICAgICAgICAKLSAgICAgICAgb3V0cHV0TGlu
ZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZl
KG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8ICJ7XG4iOwogICAg
IH0KIApAQCAtMTgzMiwxMiArMTg1MSwxMiBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChW
aXNpdCB2aXNpdCwgCiAgICAgICAgIHRyYXZlcnNlU3RhdGVtZW50cyhub2RlLT5nZXRCb2R5KCkp
OwogICAgIH0KIAotICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICBv
dXQgPDwgIjt9XG4iOwogCiAgICAgaWYgKG5vZGUtPmdldFR5cGUoKSA9PSBFTG9vcERvV2hpbGUp
CiAgICAgewotICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENvbmRpdGlvbigp
LT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENvbmRp
dGlvbigpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAid2hpbGUoXG4i
OwogCiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKQEAgLTE5
NzcsNyArMTk5Niw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcChUSW4K
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0g
RWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBzeW1ib2w7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCA9IGNvbnN0YW50LT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpWzBdLmdldElDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluaXRpYWwgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTk5
OSw3ICsyMDE4LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgog
ICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50ICYm
IGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICBjb21wYXJhdG9yID0gdGVzdC0+Z2V0T3AoKTsKLSAgICAgICAgICAg
ICAgICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVswXS5nZXRJ
Q29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0SUNvbnN0
KDApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjAy
MCw3ICsyMDM5LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBl
KCkgPT0gRWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSBjb25zdGFudC0+Z2V0
VW5pb25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAg
aW50IHZhbHVlID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKG9wKQogICAgICAgICAgICAgICAgICAgICB7CkBAIC0yMTA5LDcgKzIxMjgsNyBA
QCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAg
ICAgb3V0IDw8IGluY3JlbWVudDsKICAgICAgICAgICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5n
ZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0
TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAie1xuIjsKIAogICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5nZXRCb2R5KCkpCkBAIC0yMTE3LDcgKzIxMzYsNyBAQCBi
b29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPmdldEJvZHkoKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOwor
ICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0
X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAiO31cbiI7CiAKICAgICAgICAgICAgICAg
ICBpZiAoIWZpcnN0TG9vcEZyYWdtZW50KQpAQCAtMjIxMywyMiArMjIzMiwyMyBAQCBUU3RyaW5n
IE91dHB1dEhMU0w6OnR5cGVTdHJpbmcoY29uc3QgVFR5CiB7CiAgICAgaWYgKHR5cGUuZ2V0QmFz
aWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsKLSAgICAgICAgaWYgKHR5cGUuZ2V0VHlwZU5h
bWUoKSAhPSAiIikKKyAgICAgICAgY29uc3QgVFN0cmluZyYgdHlwZU5hbWUgPSB0eXBlLmdldFN0
cnVjdCgpLT5uYW1lKCk7CisgICAgICAgIGlmICh0eXBlTmFtZSAhPSAiIikKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlLmdldFR5cGVOYW1lKCkpOworICAg
ICAgICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlTmFtZSk7CiAgICAgICAgIH0KICAgICAg
ICAgZWxzZSAgIC8vIE5hbWVsZXNzIHN0cnVjdHVyZSwgZGVmaW5lIGluIHBsYWNlCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlTGlzdCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0
KCk7CisgICAgICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSB0eXBlLmdldFN0cnVj
dCgpLT5maWVsZHMoKTsKIAogICAgICAgICAgICAgVFN0cmluZyBzdHJpbmcgPSAic3RydWN0XG4i
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRzW2ldLnR5cGU7
CisgICAgICAgICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCA9IGZpZWxkc1tpXTsKIAotICAg
ICAgICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3RyaW5nKGZpZWxkKSArICIgIiAr
IGRlY29yYXRlKGZpZWxkLmdldEZpZWxkTmFtZSgpKSArIGFycmF5U3RyaW5nKGZpZWxkKSArICI7
XG4iOworICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3RyaW5nKCpmaWVs
ZC0+dHlwZSgpKSArICIgIiArIGRlY29yYXRlKGZpZWxkLT5uYW1lKCkpICsgYXJyYXlTdHJpbmco
KmZpZWxkLT50eXBlKCkpICsgIjtcbiI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHN0
cmluZyArPSAifSAiOwpAQCAtMjMwNCwxMSArMjMyNCwxMiBAQCBUU3RyaW5nIE91dHB1dEhMU0w6
OmluaXRpYWxpemVyKGNvbnN0IFRUCiB7CiAgICAgVFN0cmluZyBzdHJpbmc7CiAKLSAgICBmb3Ig
KGludCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCB0eXBlLmdldE9iamVjdFNpemUoKTsgY29t
cG9uZW50KyspCisgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICBm
b3IgKHNpemVfdCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCBzaXplOyBjb21wb25lbnQrKykK
ICAgICB7CiAgICAgICAgIHN0cmluZyArPSAiMCI7CiAKLSAgICAgICAgaWYgKGNvbXBvbmVudCA8
IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpIC0gMSkKKyAgICAgICAgaWYgKGNvbXBvbmVudCArIDEgPCBz
aXplKQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJpbmcgKz0gIiwgIjsKICAgICAgICAgfQpA
QCAtMjM0NywxMyArMjM2OCwxMyBAQCB2b2lkIE91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNv
bnN0IFRUCiAgICAgICAgIHN0cnVjdHVyZSArPSAic3RydWN0ICIgKyBkZWNvcmF0ZShuYW1lKSAr
ICJcbiIKICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCi0gICAgICAgIGNvbnN0IFRUeXBl
TGlzdCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0KCk7CisgICAgICAgIGNvbnN0IFRGaWVsZExp
c3QgJmZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRzW2ldLnR5cGU7CisgICAgICAg
ICAgICBjb25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ldOwogCi0gICAgICAgICAgICBzdHJ1
Y3R1cmUgKz0gIiAgICAiICsgdHlwZVN0cmluZyhmaWVsZCkgKyAiICIgKyBkZWNvcmF0ZUZpZWxk
KGZpZWxkLmdldEZpZWxkTmFtZSgpLCB0eXBlKSArIGFycmF5U3RyaW5nKGZpZWxkKSArICI7XG4i
OworICAgICAgICAgICAgc3RydWN0dXJlICs9ICIgICAgIiArIHR5cGVTdHJpbmcoKmZpZWxkLT50
eXBlKCkpICsgIiAiICsgZGVjb3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCB0eXBlKSArIGFycmF5
U3RyaW5nKCpmaWVsZC0+dHlwZSgpKSArICI7XG4iOwogICAgICAgICB9CiAKICAgICAgICAgc3Ry
dWN0dXJlICs9ICJ9O1xuIjsKQEAgLTIzNjUsNyArMjM4Niw3IEBAIHZvaWQgT3V0cHV0SExTTDo6
YWRkQ29uc3RydWN0b3IoY29uc3QgVFQKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAgICAgICAgICAgY3RvclBh
cmFtZXRlcnMucHVzaF9iYWNrKCpmaWVsZHNbaV0udHlwZSk7CisgICAgICAgICAgICBjdG9yUGFy
YW1ldGVycy5wdXNoX2JhY2soKmZpZWxkc1tpXS0+dHlwZSgpKTsKICAgICAgICAgfQogICAgIH0K
ICAgICBlbHNlIGlmIChwYXJhbWV0ZXJzKQpAQCAtMjQ1OCwyNyArMjQ3OSwzMCBAQCB2b2lkIE91
dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAgICAgfQogICAgIGVsc2UKICAgICB7
Ci0gICAgICAgIGludCByZW1haW5pbmdDb21wb25lbnRzID0gY3RvclR5cGUuZ2V0T2JqZWN0U2l6
ZSgpOwotICAgICAgICBpbnQgcGFyYW1ldGVySW5kZXggPSAwOworICAgICAgICBzaXplX3QgcmVt
YWluaW5nQ29tcG9uZW50cyA9IGN0b3JUeXBlLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6
ZV90IHBhcmFtZXRlckluZGV4ID0gMDsKIAogICAgICAgICB3aGlsZSAocmVtYWluaW5nQ29tcG9u
ZW50cyA+IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZwYXJhbWV0ZXIg
PSBjdG9yUGFyYW1ldGVyc1twYXJhbWV0ZXJJbmRleF07Ci0gICAgICAgICAgICBib29sIG1vcmVQ
YXJhbWV0ZXJzID0gcGFyYW1ldGVySW5kZXggPCAoaW50KWN0b3JQYXJhbWV0ZXJzLnNpemUoKSAt
IDE7CisgICAgICAgICAgICBjb25zdCBzaXplX3QgcGFyYW1ldGVyU2l6ZSA9IHBhcmFtZXRlci5n
ZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICBib29sIG1vcmVQYXJhbWV0ZXJzID0gcGFyYW1l
dGVySW5kZXggKyAxIDwgY3RvclBhcmFtZXRlcnMuc2l6ZSgpOwogCiAgICAgICAgICAgICBjb25z
dHJ1Y3RvciArPSAieCIgKyBzdHIocGFyYW1ldGVySW5kZXgpOwogCiAgICAgICAgICAgICBpZiAo
cGFyYW1ldGVyLmlzU2NhbGFyKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVt
YWluaW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAg
ICAgICAgIEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJlbWFpbmluZ0NvbXBvbmVudHMpOworICAg
ICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6ZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5pc1ZlY3RvcigpKQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmdDb21wb25lbnRzID09IHBh
cmFtZXRlci5nZXRPYmplY3RTaXplKCkgfHwgbW9yZVBhcmFtZXRlcnMpCisgICAgICAgICAgICAg
ICAgaWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPT0gcGFyYW1ldGVyU2l6ZSB8fCBtb3JlUGFyYW1l
dGVycykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ0Nv
bXBvbmVudHMgLT0gcGFyYW1ldGVyLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHBhcmFtZXRlclNpemUgPD0gcmVtYWluaW5nQ29tcG9uZW50cyk7CisgICAgICAg
ICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6ZTsKICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVtYWluaW5nQ29tcG9uZW50
cyA8IHBhcmFtZXRlci5nZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHJlbWFpbmluZ0NvbXBvbmVudHMgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFtZXRlci5nZXRO
b21pbmFsU2l6ZSgpKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAocmVtYWluaW5nQ29tcG9uZW50cykKICAgICAgICAgICAgICAgICAgICAgewpAQCAtMjQ5
NSw5ICsyNTE5LDEwIEBAIHZvaWQgT3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFQK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5pc01hdHJpeCgp
IHx8IHBhcmFtZXRlci5nZXRTdHJ1Y3QoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQocmVtYWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgp
IHx8IG1vcmVQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmVtYWluaW5nQ29t
cG9uZW50cyA9PSBwYXJhbWV0ZXJTaXplIHx8IG1vcmVQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQocGFyYW1ldGVyU2l6ZSA8PSByZW1haW5pbmdDb21wb25lbnRzKTsKICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRzIC09IHBhcmFt
ZXRlci5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nQ29tcG9uZW50
cyAtPSBwYXJhbWV0ZXJTaXplOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBVTlJF
QUNIQUJMRSgpOwogCkBAIC0yNTM0LDE3ICsyNTU5LDE3IEBAIGNvbnN0IENvbnN0YW50VW5pb24g
Kk91dHB1dEhMU0w6OndyaXRlQ28KIAogICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVi
dFN0cnVjdCkKICAgICB7Ci0gICAgICAgIG91dCA8PCBzdHJ1Y3RMb29rdXAodHlwZS5nZXRUeXBl
TmFtZSgpKSArICJfY3RvcigiOworICAgICAgICBvdXQgPDwgc3RydWN0TG9va3VwKHR5cGUuZ2V0
U3RydWN0KCktPm5hbWUoKSkgKyAiX2N0b3IoIjsKICAgICAgICAgCi0gICAgICAgIGNvbnN0IFRU
eXBlTGlzdCAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgY29uc3QgVEZp
ZWxkTGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgaSsrKQorICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAg
ICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOwor
ICAgICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9IGZpZWxkc1tpXS0+dHlwZSgpOwog
CiAgICAgICAgICAgICBjb25zdFVuaW9uID0gd3JpdGVDb25zdGFudFVuaW9uKCpmaWVsZFR5cGUs
IGNvbnN0VW5pb24pOwogCi0gICAgICAgICAgICBpZiAoaSAhPSBzdHJ1Y3R1cmUtPnNpemUoKSAt
IDEpCisgICAgICAgICAgICBpZiAoaSAhPSBmaWVsZHMuc2l6ZSgpIC0gMSkKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKICAgICAgICAgICAgIH0KQEAgLTI1NTQs
NyArMjU3OSw3IEBAIGNvbnN0IENvbnN0YW50VW5pb24gKk91dHB1dEhMU0w6OndyaXRlQ28KICAg
ICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW50IHNpemUgPSB0eXBlLmdldE9iamVjdFNp
emUoKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKICAgICAg
ICAgYm9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAgICAgCiAgICAgICAgIGlmICh3cml0
ZVR5cGUpCkBAIC0yNTYyLDcgKzI1ODcsNyBAQCBjb25zdCBDb25zdGFudFVuaW9uICpPdXRwdXRI
TFNMOjp3cml0ZUNvCiAgICAgICAgICAgICBvdXQgPDwgdHlwZVN0cmluZyh0eXBlKSA8PCAiKCI7
CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKywgY29u
c3RVbmlvbisrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKywgY29u
c3RVbmlvbisrKQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnN0VW5pb24tPmdl
dFR5cGUoKSkKICAgICAgICAgICAgIHsKQEAgLTI2NTUsNyArMjY4MCw3IEBAIFRTdHJpbmcgT3V0
cHV0SExTTDo6ZGVjb3JhdGVVbmlmb3JtKGNvbnMKIAogVFN0cmluZyBPdXRwdXRITFNMOjpkZWNv
cmF0ZUZpZWxkKGNvbnN0IFRTdHJpbmcgJnN0cmluZywgY29uc3QgVFR5cGUgJnN0cnVjdHVyZSkK
IHsKLSAgICBpZiAoc3RydWN0dXJlLmdldFR5cGVOYW1lKCkuY29tcGFyZSgwLCAzLCAiZ2xfIikg
IT0gMCkKKyAgICBpZiAoc3RydWN0dXJlLmdldFN0cnVjdCgpLT5uYW1lKCkuY29tcGFyZSgwLCAz
LCAiZ2xfIikgIT0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBkZWNvcmF0ZShzdHJpbmcpOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRI
TFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L091dHB1dEhMU0wuaAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcs
NyBAQCBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAgICAgYm9vbCBt
VXNlc1BvaW50Q29vcmQ7CiAgICAgYm9vbCBtVXNlc0Zyb250RmFjaW5nOwogICAgIGJvb2wgbVVz
ZXNQb2ludFNpemU7CisgICAgYm9vbCBtVXNlc0ZyYWdEZXB0aDsKICAgICBib29sIG1Vc2VzWG9y
OwogICAgIGJvb2wgbVVzZXNNb2QxOwogICAgIGJvb2wgbVVzZXNNb2QydjsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNw
cAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1BhcnNlSGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjIsNyArMjIsNyBAQAogLy8gTG9v
ayBhdCBhICcuJyBmaWVsZCBzZWxlY3RvciBzdHJpbmcgYW5kIGNoYW5nZSBpdCBpbnRvIG9mZnNl
dHMKIC8vIGZvciBhIHZlY3Rvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9y
RmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCB2ZWNTaXplLCBUVmVjdG9yRmll
bGRzJiBmaWVsZHMsIGludCBsaW5lKQorYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJzZVZlY3RvckZp
ZWxkcyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxk
cyYgZmllbGRzLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGZpZWxkcy5udW0gPSAo
aW50KSBjb21wU3RyaW5nLnNpemUoKTsKICAgICBpZiAoZmllbGRzLm51bSA+IDQpIHsKQEAgLTEx
NSw3ICsxMTUsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKGNvCiAv
LyBMb29rIGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0cmluZyBhbmQgY2hhbmdlIGl0IGludG8g
b2Zmc2V0cwogLy8gZm9yIGEgbWF0cml4LgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VN
YXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IG1hdFNpemUsIFRNYXRy
aXhGaWVsZHMmIGZpZWxkcywgaW50IGxpbmUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0
cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCBtYXRTaXplLCBUTWF0cml4
RmllbGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgZmllbGRzLndo
b2xlUm93ID0gZmFsc2U7CiAgICAgZmllbGRzLndob2xlQ29sID0gZmFsc2U7CkBAIC0xNzUsMjIg
KzE3NSwyNCBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnJlY292ZXIoKQogLy8KIC8vIFVzZWQgYnkg
ZmxleC9iaXNvbiB0byBvdXRwdXQgYWxsIHN5bnRheCBhbmQgcGFyc2luZyBlcnJvcnMuCiAvLwot
dm9pZCBUUGFyc2VDb250ZXh0OjplcnJvcihUU291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29u
dGV4dDo6ZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvKQogewogICAgIHBwOjpTb3VyY2VM
b2NhdGlvbiBzcmNMb2M7Ci0gICAgRGVjb2RlU291cmNlTG9jKGxvYywgJnNyY0xvYy5maWxlLCAm
c3JjTG9jLmxpbmUpOworICAgIHNyY0xvYy5maWxlID0gbG9jLmZpcnN0X2ZpbGU7CisgICAgc3Jj
TG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKICAgICBkaWFnbm9zdGljcy53cml0ZUluZm8ocHA6
OkRpYWdub3N0aWNzOjpFUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCBy
ZWFzb24sIHRva2VuLCBleHRyYUluZm8pOwogCiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6d2Fy
bmluZyhUU291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29udGV4dDo6d2FybmluZyhjb25zdCBU
U291cmNlTG9jJiBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
cmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBleHRyYUluZm8pIHsKICAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwot
ICAgIERlY29kZVNvdXJjZUxvYyhsb2MsICZzcmNMb2MuZmlsZSwgJnNyY0xvYy5saW5lKTsKKyAg
ICBzcmNMb2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOworICAgIHNyY0xvYy5saW5lID0gbG9jLmZp
cnN0X2xpbmU7CiAgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9zdGljczo6V0FS
TklORywKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFzb24sIHRva2VuLCBl
eHRyYUluZm8pOwogfQpAQCAtMjAzLDcgKzIwNSw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dHJh
Y2UoY29uc3QgY2hhciogc3QKIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBwbGFj
ZXMgYXNzaWdubWVudHMgZG9uJ3Qgd29yay4KIC8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OmFzc2ln
bkVycm9yKGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJp
Z2h0KQordm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0g
PDwgImNhbm5vdCBjb252ZXJ0IGZyb20gJyIgPDwgcmlnaHQgPDwgIicgdG8gJyIgPDwgbGVmdCA8
PCAiJyI7CkBAIC0yMTQsNyArMjE2LDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJv
cihpbnQgbGluZQogLy8KIC8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxsIHBsYWNlcyB1bmFy
eSBvcGVyYXRpb25zIGRvbid0IHdvcmsuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0Ojp1bmFyeU9w
RXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpCit2b2lkIFRQ
YXJzZUNvbnRleHQ6OnVuYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBj
aGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKQogewogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJh
SW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBv
cCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhbiBvcGVyYW5kIG9mIHR5cGUgIiA8PCBvcGVyYW5k
IApAQCAtMjI2LDcgKzIyOCw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKGlu
dCBsaW4KIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBiaW5hcnkgb3BlcmF0aW9u
cyBkb24ndCB3b3JrLgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihpbnQg
bGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCkKK3ZvaWQg
VFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25z
dCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAgIHN0ZDo6c3Ry
aW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9w
ZXJhdGlvbiAnIiA8PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhIGxlZnQtaGFuZCBvcGVy
YW5kIG9mIHR5cGUgJyIgPDwgbGVmdCAKQEAgLTIzNSw3ICsyMzcsNyBAQCB2b2lkIFRQYXJzZUNv
bnRleHQ6OmJpbmFyeU9wRXJyb3IoaW50IGxpCiAgICAgZXJyb3IobGluZSwgIiB3cm9uZyBvcGVy
YW5kIHR5cGVzICIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7IAogfQogCi1ib29sIFRQYXJzZUNv
bnRleHQ6OnByZWNpc2lvbkVycm9yQ2hlY2soaW50IGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9u
LCBUQmFzaWNUeXBlIHR5cGUpeworYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFzaWNU
eXBlIHR5cGUpewogICAgIGlmICghY2hlY2tzUHJlY2lzaW9uRXJyb3JzKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgc3dpdGNoKCB0eXBlICl7CkBAIC0yNjMsNyArMjY1LDcgQEAgYm9vbCBU
UGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JD
aGVjayhpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRlcm1UeXBlZCogbm9kZSkKK2Jvb2wg
VFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBj
b25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKiBub2RlKQogewogICAgIFRJbnRlcm1TeW1ib2wq
IHN5bU5vZGUgPSBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsKICAgICBUSW50ZXJtQmluYXJ5KiBi
aW5hcnlOb2RlID0gbm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7CkBAIC0yODYsNyArMjg4LDcgQEAg
Ym9vbCBUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGludAogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBwID0gYWdn
ck5vZGUtPmdldFNlcXVlbmNlKCkuYmVnaW4oKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHAgIT0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7
IHArKykgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSAoKnApLT5nZXRBc1R5cGVk
KCktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29u
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gKCpwKS0+Z2V0QXNUeXBlZCgp
LT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgICAg
ICBvZmZzZXRbdmFsdWVdKys7ICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldFt2
YWx1ZV0gPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFs
dWUgb2Ygc3dpenpsZSBjYW5ub3QgaGF2ZSBkdXBsaWNhdGUgY29tcG9uZW50cyIsIG9wKTsKQEAg
LTMxNyw3ICszMTksNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soaW50
CiAgICAgY2FzZSBFdnFBdHRyaWJ1dGU6ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYW4g
YXR0cmlidXRlIjsgICBicmVhazsKICAgICBjYXNlIEV2cVVuaWZvcm06ICAgICAgICBtZXNzYWdl
ID0gImNhbid0IG1vZGlmeSBhIHVuaWZvcm0iOyAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxVmFy
eWluZ0luOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGEgdmFyeWluZyI7ICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFdnFJbnB1dDogICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkg
YW4gaW5wdXQiOyAgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb29yZDogICAgICBtZXNz
YWdlID0gImNhbid0IG1vZGlmeSBnbF9GcmFnQ29vcmQiOyAgIGJyZWFrOwogICAgIGNhc2UgRXZx
RnJvbnRGYWNpbmc6ICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX0Zyb250RmFjaW5nIjsg
YnJlYWs7CiAgICAgY2FzZSBFdnFQb2ludENvb3JkOiAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2Rp
ZnkgZ2xfUG9pbnRDb29yZCI7ICBicmVhazsKQEAgLTQwOSw3ICs0MTAsNyBAQCBib29sIFRQYXJz
ZUNvbnRleHQ6OmludGVnZXJFcnJvckNoZWNrKFRJCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpnbG9iYWxFcnJvckNoZWNr
KGludCBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pCitib29sIFRQYXJzZUNv
bnRleHQ6Omdsb2JhbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgYm9vbCBnbG9i
YWwsIGNvbnN0IGNoYXIqIHRva2VuKQogewogICAgIGlmIChnbG9iYWwpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTQyOCw3ICs0MjksNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVy
cm9yQ2hlY2soaW50CiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4K
IC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JDaGVjayhpbnQgbGluZSwgY29u
c3QgVFN0cmluZyYgaWRlbnRpZmllcikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIp
CiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc2VydmVkRXJyTXNnID0gInJlc2VydmVkIGJ1
aWx0LWluIG5hbWUiOwogICAgIGlmICghc3ltYm9sVGFibGUuYXRCdWlsdEluTGV2ZWwoKSkgewpA
QCAtNDY2LDcgKzQ2Nyw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNr
KGkKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGluIGNvbnN0cnVj
dGlvbi4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQg
bGluZSwgVEludGVybU5vZGUqIG5vZGUsIFRGdW5jdGlvbiYgZnVuY3Rpb24sIFRPcGVyYXRvciBv
cCwgVFR5cGUqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogbm9kZSwgVEZ1bmN0aW9uJiBm
dW5jdGlvbiwgVE9wZXJhdG9yIG9wLCBUVHlwZSogdHlwZSkKIHsKICAgICAqdHlwZSA9IGZ1bmN0
aW9uLmdldFJldHVyblR5cGUoKTsKIApAQCAtNDg3LDcgKzQ4OCw3IEBAIGJvb2wgVFBhcnNlQ29u
dGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWMKICAgICAvLyBhZ2FpbiwgdGhlcmUgaXMgYW4gZXh0
cmEgYXJndW1lbnQsIHNvICdvdmVyZnVsbCcgd2lsbCBiZWNvbWUgdHJ1ZS4KICAgICAvLwogCi0g
ICAgaW50IHNpemUgPSAwOworICAgIHNpemVfdCBzaXplID0gMDsKICAgICBib29sIGNvbnN0VHlw
ZSA9IHRydWU7CiAgICAgYm9vbCBmdWxsID0gZmFsc2U7CiAgICAgYm9vbCBvdmVyRnVsbCA9IGZh
bHNlOwpAQCAtNTM0LDcgKzUzNSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JF
cnJvckNoZWMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGlmIChvcCA9
PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXkoKSAmJiBpbnQodHlwZS0+Z2V0
U3RydWN0KCktPnNpemUoKSkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSB7CisgICAgaWYg
KG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgpICYmIGludCh0eXBl
LT5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCkuc2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50
KCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgIk51bWJlciBvZiBjb25zdHJ1Y3RvciBwYXJhbWV0
ZXJzIGRvZXMgbm90IG1hdGNoIHRoZSBudW1iZXIgb2Ygc3RydWN0dXJlIGZpZWxkcyIsICJjb25z
dHJ1Y3RvciIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC01NjgsNyArNTY5LDcg
QEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlYwogLy8KIC8vIHJldHVy
bnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojp2b2lk
RXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgVFB1
YmxpY1R5cGUmIHB1YlR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFRQ
dWJsaWNUeXBlJiBwdWJUeXBlKQogewogICAgIGlmIChwdWJUeXBlLnR5cGUgPT0gRWJ0Vm9pZCkg
ewogICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCBpZGVu
dGlmaWVyLmNfc3RyKCkpOwpAQCAtNTgyLDcgKzU4Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
dm9pZEVycm9yQ2hlY2soaW50IGwKIC8vCiAvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBl
cnJvcgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soaW50IGxpbmUsIGNv
bnN0IFRJbnRlcm1UeXBlZCogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hl
Y2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEludGVybVR5cGVkKiB0eXBlKQogewog
ICAgIGlmICh0eXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRCb29sIHx8IHR5cGUtPmlzQXJyYXko
KSB8fCB0eXBlLT5pc01hdHJpeCgpIHx8IHR5cGUtPmlzVmVjdG9yKCkpIHsKICAgICAgICAgZXJy
b3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3RlZCIsICIiKTsKQEAgLTU5Niw3ICs1
OTcsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGludCBsCiAvLwogLy8g
cmV0dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6
OmJvb2xFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpCitib29s
IFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNv
bnN0IFRQdWJsaWNUeXBlJiBwVHlwZSkKIHsKICAgICBpZiAocFR5cGUudHlwZSAhPSBFYnRCb29s
IHx8IHBUeXBlLmFycmF5IHx8IHBUeXBlLm1hdHJpeCB8fCAocFR5cGUuc2l6ZSA+IDEpKSB7CiAg
ICAgICAgIGVycm9yKGxpbmUsICJib29sZWFuIGV4cHJlc3Npb24gZXhwZWN0ZWQiLCAiIik7CkBA
IC02MDYsNyArNjA3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhpbnQg
bAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJy
b3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiBy
ZWFzb24pCitib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciogcmVhc29u
KQogewogICAgIGlmIChwVHlwZS50eXBlID09IEVidFN0cnVjdCkgewogICAgICAgICBpZiAoY29u
dGFpbnNTYW1wbGVyKCpwVHlwZS51c2VyRGVmKSkgewpAQCAtNjI1LDcgKzYyNiw3IEBAIGJvb2wg
VFBhcnNlQ29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2soaW4KICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGlu
ZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0OjpzdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNU
eXBlJiBwVHlwZSkKIHsKICAgICBpZiAoKHBUeXBlLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4g
fHwgcFR5cGUucXVhbGlmaWVyID09IEV2cVZhcnlpbmdPdXQgfHwgcFR5cGUucXVhbGlmaWVyID09
IEV2cUF0dHJpYnV0ZSkgJiYKICAgICAgICAgcFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpIHsKQEAg
LTY0MCw3ICs2NDEsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9y
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNh
bXBsZXJFcnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgY29uc3QgVFR5
cGUmIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBjb25zdCBUVHlw
ZSYgdHlwZSkKIHsKICAgICBpZiAoKHF1YWxpZmllciA9PSBFdnFPdXQgfHwgcXVhbGlmaWVyID09
IEV2cUluT3V0KSAmJiAKICAgICAgICAgICAgICB0eXBlLmdldEJhc2ljVHlwZSgpICE9IEVidFN0
cnVjdCAmJiBJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpIHsKQEAgLTY1Nyw5ICs2NTgs
OSBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxlcihUVHlwCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7
Ci0gICAgICAgIFRUeXBlTGlzdCYgc3RydWN0dXJlID0gKnR5cGUuZ2V0U3RydWN0KCk7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3RydWN0dXJlLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpzdHJ1Y3R1cmVbaV0udHlwZSkpCisg
ICAgICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxk
cygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxlcigqZmllbGRzW2ldLT50eXBl
KCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAt
NjcyLDcgKzY3Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29udGFpbnNTYW1wbGVyKFRUeXAK
IC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBh
cnNlQ29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVybVR5cGVkKiBl
eHByLCBpbnQmIHNpemUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybVR5cGVkKiBleHByLCBpbnQmIHNpemUpCiB7
CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIGNvbnN0YW50ID0gZXhwci0+Z2V0QXNDb25zdGFu
dFVuaW9uKCk7CiAgICAgaWYgKGNvbnN0YW50ID09IDAgfHwgY29uc3RhbnQtPmdldEJhc2ljVHlw
ZSgpICE9IEVidEludCkgewpAQCAtNjgwLDcgKzY4MSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
YXJyYXlTaXplRXJyb3JDaGVjaygKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
c2l6ZSA9IGNvbnN0YW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAg
ICBzaXplID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgIGlmIChzaXplIDw9IDApIHsK
ICAgICAgICAgZXJyb3IobGluZSwgImFycmF5IHNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVn
ZXIiLCAiIik7CkBAIC02OTYsNyArNjk3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNp
emVFcnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4K
IC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGlu
ZSwgVFB1YmxpY1R5cGUgdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlRdWFsaWZpZXJF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCiB7CiAg
ICAgaWYgKCh0eXBlLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpIHx8ICh0eXBlLnF1YWxpZmll
ciA9PSBFdnFDb25zdCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBkZWNsYXJlIGFy
cmF5cyBvZiB0aGlzIHF1YWxpZmllciIsIFRUeXBlKHR5cGUpLmdldENvbXBsZXRlU3RyaW5nKCku
Y19zdHIoKSk7CkBAIC03MTEsNyArNzEyLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVF1
YWxpZmllckVycm9yQwogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4K
IC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soaW50IGxpbmUsIFRQ
dWJsaWNUeXBlIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKIHsKICAgICAvLwogICAg
IC8vIENhbiB0aGUgdHlwZSBiZSBhbiBhcnJheT8KQEAgLTczMiw3ICs3MzMsNyBAQCBib29sIFRQ
YXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soCiAvLwogLy8gUmV0dXJucyB0cnVlIGlm
IHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JD
aGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZh
cmlhYmxlKiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSB0
eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICAvLwogICAgIC8vIERvbid0IGNoZWNr
IGZvciByZXNlcnZlZCB3b3JkIHVzZSB1bnRpbCBhZnRlciB3ZSBrbm93IGl0J3Mgbm90IGluIHRo
ZSBzeW1ib2wgdGFibGUsCkBAIC03NzcsMTYgKzc3OCw2IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
YXJyYXlFcnJvckNoZWNrKGludCAKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAKLSAgICAgICAgVFR5cGUqIHQgPSB2YXJpYWJsZS0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUo
KTsKLSAgICAgICAgd2hpbGUgKHQgIT0gMCkgewotICAgICAgICAgICAgaWYgKHQtPmdldE1heEFy
cmF5U2l6ZSgpID4gdHlwZS5hcnJheVNpemUpIHsKLSAgICAgICAgICAgICAgICBlcnJvcihsaW5l
LCAiaGlnaGVyIGluZGV4IHZhbHVlIGFscmVhZHkgdXNlZCBmb3IgdGhlIGFycmF5IiwgaWRlbnRp
Zmllci5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHQtPnNldEFycmF5U2l6ZSh0eXBlLmFycmF5U2l6ZSk7Ci0gICAgICAg
ICAgICB0ID0gdC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKTsKLSAgICAgICAgfQotCiAgICAg
ICAgIGlmICh0eXBlLmFycmF5U2l6ZSkKICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCku
c2V0QXJyYXlTaXplKHR5cGUuYXJyYXlTaXplKTsKICAgICB9IApAQCAtNzk3LDU2ICs3ODgsMTIg
QEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheUVycm9yQ2hlY2soaW50IAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNldE1heFNpemUoVEludGVybVN5
bWJvbCAqbm9kZSwgVFR5cGUqIHR5cGUsIGludCBzaXplLCBib29sIHVwZGF0ZUZsYWcsIFRTb3Vy
Y2VMb2MgbGluZSkKLXsKLSAgICBib29sIGJ1aWx0SW4gPSBmYWxzZTsKLSAgICBUU3ltYm9sKiBz
eW1ib2wgPSBzeW1ib2xUYWJsZS5maW5kKG5vZGUtPmdldFN5bWJvbCgpLCAmYnVpbHRJbik7Ci0g
ICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICIgdW5kZWNsYXJlZCBp
ZGVudGlmaWVyIiwgbm9kZS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8VFZhcmlh
YmxlKj4oc3ltYm9sKTsKLQotICAgIHR5cGUtPnNldEFycmF5SW5mb3JtYXRpb25UeXBlKHZhcmlh
YmxlLT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpKTsKLSAgICB2YXJpYWJsZS0+dXBkYXRlQXJy
YXlJbmZvcm1hdGlvblR5cGUodHlwZSk7Ci0KLSAgICAvLyBzcGVjaWFsIGNhc2luZyB0byB0ZXN0
IGluZGV4IHZhbHVlIG9mIGdsX0ZyYWdEYXRhLiBJZiB0aGUgYWNjZXNzZWQgaW5kZXggaXMgPj0g
Z2xfTWF4RHJhd0J1ZmZlcnMKLSAgICAvLyBpdHMgYW4gZXJyb3IKLSAgICBpZiAobm9kZS0+Z2V0
U3ltYm9sKCkgPT0gImdsX0ZyYWdEYXRhIikgewotICAgICAgICBUU3ltYm9sKiBmcmFnRGF0YSA9
IHN5bWJvbFRhYmxlLmZpbmQoImdsX01heERyYXdCdWZmZXJzIiwgJmJ1aWx0SW4pOwotICAgICAg
ICBBU1NFUlQoZnJhZ0RhdGEpOwotCi0gICAgICAgIGludCBmcmFnRGF0YVZhbHVlID0gc3RhdGlj
X2Nhc3Q8VFZhcmlhYmxlKj4oZnJhZ0RhdGEpLT5nZXRDb25zdFBvaW50ZXIoKVswXS5nZXRJQ29u
c3QoKTsKLSAgICAgICAgaWYgKGZyYWdEYXRhVmFsdWUgPD0gc2l6ZSkgewotICAgICAgICAgICAg
ZXJyb3IobGluZSwgIiIsICJbIiwgImdsX0ZyYWdEYXRhIGNhbiBvbmx5IGhhdmUgYSBtYXggYXJy
YXkgc2l6ZSBvZiB1cCB0byBnbF9NYXhEcmF3QnVmZmVycyIpOwotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyB3ZSBkb250IHdhbnQgdG8gdXBkYXRl
IHRoZSBtYXhBcnJheVNpemUgd2hlbiB0aGlzIGZsYWcgaXMgbm90IHNldCwgd2UganVzdCB3YW50
IHRvIGluY2x1ZGUgdGhpcyAKLSAgICAvLyBub2RlIHR5cGUgaW4gdGhlIGNoYWluIG9mIG5vZGUg
dHlwZXMgc28gdGhhdCBpdHMgdXBkYXRlZCB3aGVuIGEgaGlnaGVyIG1heEFycmF5U2l6ZSBjb21l
cyBpbi4KLSAgICBpZiAoIXVwZGF0ZUZsYWcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHNpemUrKzsKLSAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldE1heEFycmF5U2l6ZShzaXplKTsK
LSAgICB0eXBlLT5zZXRNYXhBcnJheVNpemUoc2l6ZSk7Ci0gICAgVFR5cGUqIHR0ID0gdHlwZTsK
LQotICAgIHdoaWxlKHR0LT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpICE9IDApIHsKLSAgICAg
ICAgdHQgPSB0dC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKTsKLSAgICAgICAgdHQtPnNldE1h
eEFycmF5U2l6ZShzaXplKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIC8vCiAv
LyBFbmZvcmNlIG5vbi1pbml0aWFsaXplciB0eXBlL3F1YWxpZmllciBydWxlcy4KIC8vCiAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4
dDo6bm9uSW5pdENvbnN0RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwg
VFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpCitib29sIFRQYXJzZUNvbnRleHQ6Om5vbklu
aXRDb25zdEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRp
ZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpCiB7CiAgICAgaWYgKHR5cGUucXVh
bGlmaWVyID09IEV2cUNvbnN0KQogICAgIHsKQEAgLTg3OCw3ICs4MjUsNyBAQCBib29sIFRQYXJz
ZUNvbnRleHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNo
ZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSwgVFZh
cmlhYmxlKiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
JiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICBpZiAocmVzZXJ2ZWRFcnJvckNo
ZWNrKGxpbmUsIGlkZW50aWZpZXIpKQogICAgICAgICByZWNvdmVyKCk7CkBAIC04OTgsNyArODQ1
LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhpbgogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJhbUVycm9yQ2hlY2soaW50IGxp
bmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVhbGlmaWVyLCBUVHlw
ZSogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVhbGlm
aWVyLCBUVHlwZSogdHlwZSkKIHsgICAgCiAgICAgaWYgKHF1YWxpZmllciAhPSBFdnFDb25zdCAm
JiBxdWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5KSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJxdWFs
aWZpZXIgbm90IGFsbG93ZWQgb24gZnVuY3Rpb24gcGFyYW1ldGVyIiwgZ2V0UXVhbGlmaWVyU3Ry
aW5nKHF1YWxpZmllcikpOwpAQCAtOTE3LDcgKzg2NCw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
cGFyYW1FcnJvckNoZWNrKGludCAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNl
Q29udGV4dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgZXh0
ZW5zaW9uKQorYm9vbCBUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICBjb25zdCBU
RXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZpb3IoKTsKICAg
ICBURXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBleHRCZWhhdmlvci5m
aW5kKGV4dGVuc2lvbi5jX3N0cigpKTsKQEAgLTk0NSwyMCArODkyLDYgQEAgYm9vbCBUUGFyc2VD
b250ZXh0OjpzdXBwb3J0c0V4dGVuc2lvbihjbwogICAgIHJldHVybiAoaXRlciAhPSBleHRiZWhh
dmlvci5lbmQoKSk7CiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6aGFuZGxlRXh0ZW5zaW9uRGly
ZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBleHROYW1lLCBjb25zdCBjaGFyKiBiZWhhdmlv
cikKLXsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwotICAgIERlY29kZVNvdXJjZUxvYyhs
aW5lLCAmbG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGlyZWN0aXZlSGFuZGxlci5oYW5kbGVF
eHRlbnNpb24obG9jLCBleHROYW1lLCBiZWhhdmlvcik7Ci19Ci0KLXZvaWQgVFBhcnNlQ29udGV4
dDo6aGFuZGxlUHJhZ21hRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBjaGFyKiB2YWx1ZSkKLXsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwotICAgIERlY29k
ZVNvdXJjZUxvYyhsaW5lLCAmbG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGlyZWN0aXZlSGFu
ZGxlci5oYW5kbGVQcmFnbWEobG9jLCBuYW1lLCB2YWx1ZSk7Ci19Ci0KIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwogLy8KIC8vIE5vbi1FcnJvcnMuCkBAIC05NzAsNyArOTAzLDcgQEAgdm9pZCBU
UGFyc2VDb250ZXh0OjpoYW5kbGVQcmFnbWFEaXJlY3RpdgogLy8KIC8vIFJldHVybiB0aGUgZnVu
Y3Rpb24gc3ltYm9sIGlmIGZvdW5kLCBvdGhlcndpc2UgMC4KIC8vCi1jb25zdCBURnVuY3Rpb24q
IFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBi
b29sICpidWlsdEluKQorY29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuY3Rp
b24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBib29sICpidWlsdElu
KQogewogICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hldGhl
ciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgogICAgIC8vIGhpZGRlbiBieSBhIHZhcmlhYmxl
IG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgpAQCAtOTkyLDExICs5MjUsMzIgQEAgY29uc3QgVEZ1
bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuYwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBURnVuY3Rpb24qPihzeW1ib2wpOwogfQogCitib29sIFRQYXJzZUNvbnRleHQ6OmlzVmFy
aWFibGVCdWlsdEluKGNvbnN0IFRWYXJpYWJsZSogdmFyKQoreworICAgIGJvb2wgYnVpbHRJbiA9
IGZhbHNlOworICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hl
dGhlciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgorICAgIC8vIGhpZGRlbiBieSBhIHZhcmlh
YmxlIG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgorICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9
IHN5bWJvbFRhYmxlLmZpbmQodmFyLT5nZXROYW1lKCksICZidWlsdEluKTsKKyAgICBpZiAoc3lt
Ym9sID09IDApIHsKKyAgICAgICAgc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZCh2YXItPmdldE1h
bmdsZWROYW1lKCksICZidWlsdEluKTsKKyAgICB9CisKKyAgICBpZiAoc3ltYm9sID09IDApIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghc3ltYm9sLT5pc1Zhcmlh
YmxlKCkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBidWls
dEluOworfQorCiAvLwogLy8gSW5pdGlhbGl6ZXJzIHNob3cgdXAgaW4gc2V2ZXJhbCBwbGFjZXMg
aW4gdGhlIGdyYW1tYXIuICBIYXZlIG9uZSBzZXQgb2YKIC8vIGNvZGUgdG8gaGFuZGxlIHRoZW0g
aGVyZS4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihUU291cmNl
TG9jIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlwZSwgCitib29s
IFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbml0aWFsaXplciwgVElu
dGVybU5vZGUqJiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUqIHZhcmlhYmxlKQogewogICAgIFRUeXBl
IHR5cGUgPSBUVHlwZShwVHlwZSk7CkBAIC0xMDQ4LDEzICsxMDAyLDcgQEAgYm9vbCBUUGFyc2VD
b250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIoVAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKSkg
eyAKLSAgICAgICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB2YXJpYWJsZS0+Z2V0
Q29uc3RQb2ludGVyKCk7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlLmdldE9iamVjdFNpemUoKSA9
PSAxICYmIHR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgICAgICAg
ICAgKnVuaW9uQXJyYXkgPSAoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpKVswXTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgdmFyaWFibGUtPnNoYXJlQ29uc3RQb2ludGVyKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0
YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSk7Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICB2YXJpYWJsZS0+c2hhcmVDb25zdFBvaW50ZXIoaW5pdGlhbGl6ZXItPmdldEFzQ29u
c3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKTsKICAgICAgICAgfSBlbHNlIGlm
IChpbml0aWFsaXplci0+Z2V0QXNTeW1ib2xOb2RlKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFRT
eW1ib2wqIHN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQoaW5pdGlhbGl6ZXItPmdldEFzU3ltYm9s
Tm9kZSgpLT5nZXRTeW1ib2woKSk7CiAgICAgICAgICAgICBjb25zdCBUVmFyaWFibGUqIHRWYXIg
PSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOwpAQCAtMTEwOCwxNiArMTA1
NiwxNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QoVEluCiAvLwogLy8g
UmV0dXJucyAwIGZvciBhbiBlcnJvciBvciB0aGUgY29uc3RydWN0ZWQgbm9kZSAoYWdncmVnYXRl
IG9yIHR5cGVkKSBmb3Igbm8gZXJyb3IuCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0
OjphZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFR5cGUqIHR5cGUsIFRP
cGVyYXRvciBvcCwgVEZ1bmN0aW9uKiBmbkNhbGwsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1U
eXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUqIG5vZGUsIGNv
bnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRGdW5jdGlvbiogZm5DYWxsLCBjb25zdCBU
U291cmNlTG9jJiBsaW5lKQogewogICAgIGlmIChub2RlID09IDApCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgVEludGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0
ZSgpOwogICAgIAotICAgIFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyVHlwZXM7Cisg
ICAgVEZpZWxkTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyRmllbGRzOwogICAgIGlmIChvcCA9
PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgIG1lbWJlclR5cGVzID0gdHlwZS0+Z2V0U3Ry
dWN0KCktPmJlZ2luKCk7CisgICAgICAgIG1lbWJlckZpZWxkcyA9IHR5cGUtPmdldFN0cnVjdCgp
LT5maWVsZHMoKS5iZWdpbigpOwogICAgIAogICAgIFRUeXBlIGVsZW1lbnRUeXBlID0gKnR5cGU7
CiAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKQEAgLTExMzksNyArMTA4Nyw3IEBAIFRJbnRlcm1U
eXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5cGUtPmlzQXJy
YXkoKSkKICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgJmVsZW1l
bnRUeXBlLCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKICAgICAgICAgZWxzZSBpZiAob3Ag
PT0gRU9wQ29uc3RydWN0U3RydWN0KQotICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0
cnVjdChub2RlLCAoKm1lbWJlclR5cGVzKS50eXBlLCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNl
KTsKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgKCptZW1iZXJG
aWVsZHMpLT50eXBlKCksIDEsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBvcCwgbm9kZSwg
bm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7CiAKQEAgLTExNzAsNyArMTExOCw3IEBAIFRJbnRlcm1U
eXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5cGUtPmlzQXJy
YXkoKSkKICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsICZlbGVtZW50
VHlwZSwgcGFyYW1Db3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRydWUpOwogICAgICAgICBlbHNl
IGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgICAgICBuZXdOb2RlID0gY29u
c3RydWN0U3RydWN0KCpwLCAobWVtYmVyVHlwZXNbcGFyYW1Db3VudF0pLnR5cGUsIHBhcmFtQ291
bnQrMSwgbm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25z
dHJ1Y3RTdHJ1Y3QoKnAsIG1lbWJlckZpZWxkc1twYXJhbUNvdW50XS0+dHlwZSgpLCBwYXJhbUNv
dW50KzEsIG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IG5ld05vZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCAqcCwgbm9kZS0+Z2V0TGluZSgp
LCB0cnVlKTsKICAgICAgICAgCkBAIC0xMjE2LDcgKzExNjQsNyBAQCBUSW50ZXJtVHlwZWQqIFRQ
YXJzZUNvbnRleHQ6OmZvbGRDb25zdENvCiAvLwogLy8gUmV0dXJucyAwIGZvciBhbiBlcnJvciBv
ciB0aGUgY29uc3RydWN0ZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6
OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVEludGVy
bU5vZGUqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSwgYm9vbCBzdWJzZXQpCitUSW50ZXJtVHlwZWQq
IFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVy
YXRvciBvcCwgVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wg
c3Vic2V0KQogewogICAgIFRJbnRlcm1UeXBlZCogbmV3Tm9kZTsKICAgICBUT3BlcmF0b3IgYmFz
aWNPcDsKQEAgLTEyNzgsNyArMTIyNiw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
Y29uc3RydWN0QnUKIC8vCiAvLyBSZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9yIHRoZSBpbnB1dCBu
b2RlIGl0c2VsZiBpZiB0aGUgZXhwZWN0ZWQgYW5kIHRoZSBnaXZlbiBwYXJhbWV0ZXIgdHlwZXMg
bWF0Y2guCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3Qo
VEludGVybU5vZGUqIG5vZGUsIFRUeXBlKiB0eXBlLCBpbnQgcGFyYW1Db3VudCwgVFNvdXJjZUxv
YyBsaW5lLCBib29sIHN1YnNldCkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3Ry
dWN0U3RydWN0KFRJbnRlcm1Ob2RlKiBub2RlLCBUVHlwZSogdHlwZSwgaW50IHBhcmFtQ291bnQs
IGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQogewogICAgIGlmICgqdHlwZSA9
PSBub2RlLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKSkgewogICAgICAgICBpZiAoc3Vic2V0KQpA
QCAtMTMwNSw3ICsxMjUzLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1
Y3RTdAogLy8gbm9kZSBvciBpdCBjb3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRyZWUgcmVwcmVz
ZW50YXRpb24gb2YgYWNjZXNzaW5nIGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVjdHVyZSBvciBj
b2x1bW4gb2YgCiAvLyBhIGNvbnN0YW50IG1hdHJpeC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJz
ZUNvbnRleHQ6OmFkZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIFRJbnRl
cm1UeXBlZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250
ZXh0OjphZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBUSW50ZXJtVHlw
ZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0
eXBlZE5vZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBu
b2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTEzMTMsNyArMTI2MSw2IEBAIFRJbnRlcm1U
eXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uICp1bmlv
bkFycmF5OwogICAgIGlmICh0ZW1wQ29uc3RhbnROb2RlKSB7CiAgICAgICAgIHVuaW9uQXJyYXkg
PSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAgICAgICBBU1NF
UlQodW5pb25BcnJheSk7CiAKICAgICAgICAgaWYgKCF1bmlvbkFycmF5KSB7CiAgICAgICAgICAg
ICByZXR1cm4gbm9kZTsKQEAgLTEzMjgsNyArMTI3NSw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNl
Q29udGV4dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bZmllbGRzLm51bV07CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZp
ZWxkcy5udW07IGkrKykgewotICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0gPj0gbm9kZS0+
Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSkgeworICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNb
aV0gPj0gbm9kZS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkpIHsKICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAgIGV4dHJhSW5mb1N0
cmVhbSA8PCAidmVjdG9yIGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgZmllbGRz
Lm9mZnNldHNbaV0gPDwgIiciOwogICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0g
ZXh0cmFJbmZvU3RyZWFtLnN0cigpOwpAQCAtMTM1MCw3ICsxMjk3LDcgQEAgVEludGVybVR5cGVk
KiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFZlYwogLy8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVp
dGhlciBiZSBhIHN5bWJvbCBub2RlIChtWzBdIHdoZXJlIG0gaXMgYSBjb25zdGFudCBtYXRyaXgp
dGhhdCByZXByZXNlbnRzIGEgCiAvLyBjb25zdGFudCBtYXRyaXggb3IgaXQgY291bGQgYmUgdGhl
IHRyZWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnN0YW50IG1hdHJpeCAocy5tMVswXSB3aGVy
ZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29u
dGV4dDo6YWRkQ29uc3RNYXRyaXhOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBU
U291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0
cml4Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYg
bGluZSkKIHsKICAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZTsKICAgICBUSW50ZXJtQ29uc3Rh
bnRVbmlvbiogdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwpA
QCAtMTM4NSw3ICsxMzMyLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25z
dE1hdAogLy8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChh
WzBdIHdoZXJlIGEgaXMgYSBjb25zdGFudCBhcnJheSl0aGF0IHJlcHJlc2VudHMgYSAKIC8vIGNv
bnN0YW50IGFycmF5IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRo
ZSBjb25zdGFudCBhcnJheSAocy5hMVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJl
KQogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50
IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBl
ZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlw
ZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0
eXBlZE5vZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBu
b2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTE0MDEsOSArMTM0OCw4IEBAIFRJbnRlcm1U
eXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnIKICAgICAgICAgaW5kZXggPSAwOwogICAg
IH0KIAotICAgIGludCBhcnJheUVsZW1lbnRTaXplID0gYXJyYXlFbGVtZW50VHlwZS5nZXRPYmpl
Y3RTaXplKCk7Ci0KICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgeworICAgICAgICAgc2l6ZV90
IGFycmF5RWxlbWVudFNpemUgPSBhcnJheUVsZW1lbnRUeXBlLmdldE9iamVjdFNpemUoKTsKICAg
ICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpOwogICAgICAgICAgdHlwZWROb2RlID0gaW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24oJnVuaW9uQXJyYXlbYXJyYXlFbGVtZW50U2l6ZSAqIGluZGV4XSwgdGVt
cENvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsKICAgICB9IGVsc2UgewpAQCAtMTQyMiwy
MiArMTM2OCwyMSBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0QXJyCiAv
LyBJZiB0aGVyZSBpcyBhbiBlbWJlZGRlZC9uZXN0ZWQgc3RydWN0LCBpdCBhcHByb3ByaWF0ZWx5
IGNhbGxzIGFkZENvbnN0U3RydWN0TmVzdGVkIG9yIGFkZENvbnN0U3RydWN0RnJvbUFnZ3IKIC8v
IGZ1bmN0aW9uIGFuZCByZXR1cm5zIHRoZSBwYXJzZS10cmVlIHdpdGggdGhlIHZhbHVlcyBvZiB0
aGUgZW1iZWRkZWQvbmVzdGVkIHN0cnVjdC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRl
eHQ6OmFkZENvbnN0U3RydWN0KFRTdHJpbmcmIGlkZW50aWZpZXIsIFRJbnRlcm1UeXBlZCogbm9k
ZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25z
dFN0cnVjdChUU3RyaW5nJiBpZGVudGlmaWVyLCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUpCiB7Ci0gICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSBub2RlLT5n
ZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgVEludGVybVR5cGVkICp0eXBlZE5vZGU7Ci0gICAg
aW50IGluc3RhbmNlU2l6ZSA9IDA7Ci0gICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKLSAgICBU
SW50ZXJtQ29uc3RhbnRVbmlvbiAqdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3Rh
bnRVbmlvbigpOworICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IG5vZGUtPmdldFR5cGUo
KS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICBmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwg
ZmllbGRzLT5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKCgqZmllbGRzKVtpbmRleF0u
dHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gaWRlbnRpZmllcikgeworICAgIHNpemVfdCBpbnN0YW5j
ZVNpemUgPSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZHMuc2l6
ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChmaWVsZHNbaW5kZXhdLT5uYW1lKCkgPT0gaWRl
bnRpZmllcikgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBpbnN0YW5jZVNpemUgKz0gKCpmaWVsZHMpW2luZGV4XS50eXBlLT5nZXRPYmplY3RTaXpl
KCk7CisgICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0gZmllbGRzW2luZGV4XS0+dHlwZSgpLT5n
ZXRPYmplY3RTaXplKCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBUSW50ZXJtVHlwZWQqIHR5
cGVkTm9kZSA9IDA7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUg
PSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkg
ewogICAgICAgICAgQ29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHRlbXBDb25zdGFudE5vZGUt
PmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAKQEAgLTE0NTIsNyArMTM5Nyw3IEBAIFRJbnRlcm1U
eXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RTdHIKICAgICByZXR1cm4gdHlwZWROb2RlOwog
fQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24oaW50IGxpbmUs
IGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCitib29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3Ry
dWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRl
bnRpZmllcikKIHsKICAgICArK3N0cnVjdE5lc3RpbmdMZXZlbDsKIApAQCAtMTQ3OCwyMSArMTQy
MywyMSBAQCBjb25zdCBpbnQga1dlYkdMTWF4U3RydWN0TmVzdGluZyA9IDQ7CiAKIH0gIC8vIG5h
bWVzcGFjZQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKFRT
b3VyY2VMb2MgbGluZSwgY29uc3QgVFR5cGUmIGZpZWxkVHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4
dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3Qg
VEZpZWxkJiBmaWVsZCkKIHsKICAgICBpZiAoIWlzV2ViR0xCYXNlZFNwZWMoc2hhZGVyU3BlYykp
IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChmaWVsZFR5cGUuZ2V0
QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7CisgICAgaWYgKGZpZWxkLnR5cGUoKS0+Z2V0QmFz
aWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICAvLyBXZSdyZSBhbHJlYWR5IGluc2lkZSBhIHN0cnVjdHVyZSBkZWZpbml0aW9uIGF0IHRo
aXMgcG9pbnQsIHNvIGFkZAogICAgIC8vIG9uZSB0byB0aGUgZmllbGQncyBzdHJ1Y3QgbmVzdGlu
Zy4KLSAgICBpZiAoMSArIGZpZWxkVHlwZS5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpID4ga1dl
YkdMTWF4U3RydWN0TmVzdGluZykgeworICAgIGlmICgxICsgZmllbGQudHlwZSgpLT5nZXREZWVw
ZXN0U3RydWN0TmVzdGluZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgewogICAgICAgICBz
dGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVh
bSA8PCAiUmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGRUeXBlLmdldFR5cGVOYW1l
KCkgCisgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBl
ICIgPDwgZmllbGQubmFtZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGV4Y2VlZHMg
bWF4aW11bSBzdHJ1Y3QgbmVzdGluZyBvZiAiIDw8IGtXZWJHTE1heFN0cnVjdE5lc3Rpbmc7CiAg
ICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKICAg
ICAgICAgZXJyb3IobGluZSwgIiIsICIiLCBleHRyYUluZm8uY19zdHIoKSk7CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAko
cmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1BhcnNlSGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMyw4IEBAIHN0cnVjdCBU
UGFyc2VDb250ZXh0IHsKICAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zKG9wdGlvbnMpLAogICAg
ICAgICAgICAgc291cmNlUGF0aChzb3VyY2VQYXRoKSwKICAgICAgICAgICAgIHRyZWVSb290KDAp
LAotICAgICAgICAgICAgbGV4QWZ0ZXJUeXBlKGZhbHNlKSwKICAgICAgICAgICAgIGxvb3BOZXN0
aW5nTGV2ZWwoMCksCiAgICAgICAgICAgICBzdHJ1Y3ROZXN0aW5nTGV2ZWwoMCksCi0gICAgICAg
ICAgICBpblR5cGVQYXJlbihmYWxzZSksCiAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb25UeXBl
KE5VTEwpLAogICAgICAgICAgICAgZnVuY3Rpb25SZXR1cm5zVmFsdWUoZmFsc2UpLAogICAgICAg
ICAgICAgY2hlY2tzUHJlY2lzaW9uRXJyb3JzKGNoZWNrc1ByZWNFcnJvcnMpLApAQCAtNTEsMTYg
KzQ5LDEzIEBAIHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKICAgICBpbnQgY29tcGlsZU9wdGlvbnM7
CiAgICAgY29uc3QgY2hhciogc291cmNlUGF0aDsgICAgICAvLyBQYXRoIG9mIHNvdXJjZSBmaWxl
IG9yIE5VTEwuCiAgICAgVEludGVybU5vZGUqIHRyZWVSb290OyAgICAgICAvLyByb290IG9mIHBh
cnNlIHRyZWUgYmVpbmcgY3JlYXRlZAotICAgIGJvb2wgbGV4QWZ0ZXJUeXBlOyAgICAgICAgICAg
Ly8gdHJ1ZSBpZiB3ZSd2ZSByZWNvZ25pemVkIGEgdHlwZSwgc28gY2FuIG9ubHkgYmUgbG9va2lu
ZyBmb3IgYW4gaWRlbnRpZmllcgogICAgIGludCBsb29wTmVzdGluZ0xldmVsOyAgICAgICAgLy8g
MCBpZiBvdXRzaWRlIGFsbCBsb29wcwogICAgIGludCBzdHJ1Y3ROZXN0aW5nTGV2ZWw7ICAgICAg
Ly8gaW5jcmVtZW50ZWQgd2hpbGUgcGFyc2luZyBhIHN0cnVjdCBkZWNsYXJhdGlvbgotICAgIGJv
b2wgaW5UeXBlUGFyZW47ICAgICAgICAgICAgLy8gdHJ1ZSBpZiBpbiBwYXJlbnRoZXNlcywgbG9v
a2luZyBvbmx5IGZvciBhbiBpZGVudGlmaWVyCiAgICAgY29uc3QgVFR5cGUqIGN1cnJlbnRGdW5j
dGlvblR5cGU7ICAvLyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQncyBjdXJy
ZW50bHkgYmVpbmcgcGFyc2VkCiAgICAgYm9vbCBmdW5jdGlvblJldHVybnNWYWx1ZTsgICAvLyB0
cnVlIGlmIGEgbm9uLXZvaWQgZnVuY3Rpb24gaGFzIGEgcmV0dXJuCiAgICAgYm9vbCBjaGVja3NQ
cmVjaXNpb25FcnJvcnM7ICAvLyB0cnVlIGlmIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkIHdo
ZW4gYSB2YXJpYWJsZSBpcyBkZWNsYXJlZCB3aXRob3V0IHByZWNpc2lvbiwgZXhwbGljaXQgb3Ig
aW1wbGljaXQuCiAgICAgYm9vbCBmcmFnbWVudFByZWNpc2lvbkhpZ2g7ICAvLyB0cnVlIGlmIGhp
Z2hwIHByZWNpc2lvbiBpcyBzdXBwb3J0ZWQgaW4gdGhlIGZyYWdtZW50IGxhbmd1YWdlLgogICAg
IFRTdHJpbmcgSGFzaEVyck1zZzsKLSAgICBib29sIEFmdGVyRU9GOwogICAgIFREaWFnbm9zdGlj
cyBkaWFnbm9zdGljczsKICAgICBURGlyZWN0aXZlSGFuZGxlciBkaXJlY3RpdmVIYW5kbGVyOwog
ICAgIHBwOjpQcmVwcm9jZXNzb3IgcHJlcHJvY2Vzc29yOwpAQCAtNjgsNzEgKzYzLDY4IEBAIHN0
cnVjdCBUUGFyc2VDb250ZXh0IHsKIAogICAgIGludCBudW1FcnJvcnMoKSBjb25zdCB7IHJldHVy
biBkaWFnbm9zdGljcy5udW1FcnJvcnMoKTsgfQogICAgIFRJbmZvU2luayYgaW5mb1NpbmsoKSB7
IHJldHVybiBkaWFnbm9zdGljcy5pbmZvU2luaygpOyB9Ci0gICAgdm9pZCBlcnJvcihUU291cmNl
TG9jIGxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKKyAgICB2b2lk
IGVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBj
aGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5mbz0iIik7Ci0g
ICAgdm9pZCB3YXJuaW5nKFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0
IGNoYXIqIHRva2VuLAorICAgIHZvaWQgd2FybmluZyhjb25zdCBUU291cmNlTG9jJiBsb2MsIGNv
bnN0IGNoYXIqIHJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCiAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGV4dHJhSW5mbz0iIik7CiAgICAgdm9pZCB0cmFjZShjb25zdCBjaGFyKiBzdHIp
OwogICAgIHZvaWQgcmVjb3ZlcigpOwogCi0gICAgYm9vbCBwYXJzZVZlY3RvckZpZWxkcyhjb25z
dCBUU3RyaW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBpbnQgbGluZSk7Ci0gICAg
Ym9vbCBwYXJzZU1hdHJpeEZpZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IG1hdFNpemUsIFRNYXRy
aXhGaWVsZHMmLCBpbnQgbGluZSk7CisgICAgYm9vbCBwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBU
U3RyaW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291cmNlTG9jJiBs
aW5lKTsKKyAgICBib29sIHBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgbWF0
U2l6ZSwgVE1hdHJpeEZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpOwogCi0gICAgYm9v
bCByZXNlcnZlZEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIp
OwotICAgIHZvaWQgYXNzaWduRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5n
IGxlZnQsIFRTdHJpbmcgcmlnaHQpOwotICAgIHZvaWQgdW5hcnlPcEVycm9yKGludCBsaW5lLCBj
b25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKTsKLSAgICB2b2lkIGJpbmFyeU9wRXJyb3Io
aW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOwot
ICAgIGJvb2wgcHJlY2lzaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgVFByZWNpc2lvbiBwcmVjaXNp
b24sIFRCYXNpY1R5cGUgdHlwZSk7Ci0gICAgYm9vbCBsVmFsdWVFcnJvckNoZWNrKGludCBsaW5l
LCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CisgICAgYm9vbCByZXNlcnZlZEVycm9y
Q2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcik7
CisgICAgdm9pZCBhc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFy
KiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKKyAgICB2b2lkIHVuYXJ5T3BFcnJv
cihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5k
KTsKKyAgICB2b2lkIGJpbmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3Qg
Y2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7CisgICAgYm9vbCBwcmVjaXNp
b25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9u
LCBUQmFzaWNUeXBlIHR5cGUpOworICAgIGJvb2wgbFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CiAgICAgYm9vbCBj
b25zdEVycm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlKTsKICAgICBib29sIGludGVnZXJFcnJv
ckNoZWNrKFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgY2hhciogdG9rZW4pOwotICAgIGJvb2wg
Z2xvYmFsRXJyb3JDaGVjayhpbnQgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2Vu
KTsKLSAgICBib29sIGNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVybU5vZGUq
LCBURnVuY3Rpb24mLCBUT3BlcmF0b3IsIFRUeXBlKik7Ci0gICAgYm9vbCBhcnJheVNpemVFcnJv
ckNoZWNrKGludCBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7Ci0gICAgYm9v
bCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOwot
ICAgIGJvb2wgYXJyYXlUeXBlRXJyb3JDaGVjayhpbnQgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7
Ci0gICAgYm9vbCBhcnJheUVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIs
IFRQdWJsaWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKLSAgICBib29sIHZvaWRF
cnJvckNoZWNrKGludCwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRQdWJsaWNUeXBlJik7Ci0gICAg
Ym9vbCBib29sRXJyb3JDaGVjayhpbnQsIGNvbnN0IFRJbnRlcm1UeXBlZCopOwotICAgIGJvb2wg
Ym9vbEVycm9yQ2hlY2soaW50LCBjb25zdCBUUHVibGljVHlwZSYpOwotICAgIGJvb2wgc2FtcGxl
ckVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hh
ciogcmVhc29uKTsKLSAgICBib29sIHN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUs
IGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSk7Ci0gICAgYm9vbCBwYXJhbWV0ZXJTYW1wbGVyRXJy
b3JDaGVjayhpbnQgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlJiB0eXBl
KTsKLSAgICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlk
ZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KTsKLSAgICBib29sIG5vbklu
aXRFcnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYg
dHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOwotICAgIGJvb2wgcGFyYW1FcnJvckNoZWNrKGlu
dCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwg
VFR5cGUqIHR5cGUpOwotICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29u
c3QgVFN0cmluZyYpOworICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pOworICAgIGJvb2wgY29uc3Ry
dWN0b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1Ob2RlKiwgVEZ1
bmN0aW9uJiwgVE9wZXJhdG9yLCBUVHlwZSopOworICAgIGJvb2wgYXJyYXlTaXplRXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7
CisgICAgYm9vbCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgVFB1YmxpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBhcnJheVR5cGVFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOworICAgIGJvb2wgYXJyYXlFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJs
aWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHZvaWRFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFB1YmxpY1R5cGUm
KTsKKyAgICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUSW50
ZXJtVHlwZWQqKTsKKyAgICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBj
b25zdCBUUHVibGljVHlwZSYpOworICAgIGJvb2wgc2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNv
dXJjZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiByZWFz
b24pOworICAgIGJvb2wgc3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpOworICAgIGJvb2wgcGFyYW1ldGVyU2Ft
cGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmllciBxdWFsaWZp
ZXIsIGNvbnN0IFRUeXBlJiB0eXBlKTsKKyAgICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUm
IHR5cGUsIGJvb2wgYXJyYXkpOworICAgIGJvb2wgbm9uSW5pdEVycm9yQ2hlY2soY29uc3QgVFNv
dXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIFRW
YXJpYWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxp
ZmllciwgVFR5cGUqIHR5cGUpOworICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJik7CiAKKyAgICBjb25zdCBUUHJhZ21hJiBw
cmFnbWEoKSBjb25zdCB7IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLnByYWdtYSgpOyB9CiAgICAg
Y29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBleHRlbnNpb25CZWhhdmlvcigpIGNvbnN0IHsgcmV0
dXJuIGRpcmVjdGl2ZUhhbmRsZXIuZXh0ZW5zaW9uQmVoYXZpb3IoKTsgfQogICAgIGJvb2wgc3Vw
cG9ydHNFeHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9uKTsKLSAgICB2b2lkIGhhbmRsZUV4
dGVuc2lvbkRpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogZXh0TmFtZSwgY29uc3QgY2hh
ciogYmVoYXZpb3IpOwotCi0gICAgY29uc3QgVFByYWdtYSYgcHJhZ21hKCkgY29uc3QgeyByZXR1
cm4gZGlyZWN0aXZlSGFuZGxlci5wcmFnbWEoKTsgfQotICAgIHZvaWQgaGFuZGxlUHJhZ21hRGly
ZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSk7CiAK
ICAgICBib29sIGNvbnRhaW5zU2FtcGxlcihUVHlwZSYgdHlwZSk7CiAgICAgYm9vbCBhcmVBbGxD
aGlsZENvbnN0KFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlKTsKLSAgICBjb25zdCBURnVuY3Rp
b24qIGZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBib29sICpidWls
dEluID0gMCk7Ci0gICAgYm9vbCBleGVjdXRlSW5pdGlhbGl6ZXIoVFNvdXJjZUxvYyBsaW5lLCBU
U3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsCisgICAgY29uc3QgVEZ1bmN0
aW9uKiBmaW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBwZm5D
YWxsLCBib29sICpidWlsdEluID0gMCk7CisgICAgYm9vbCBpc1ZhcmlhYmxlQnVpbHRJbihjb25z
dCBUVmFyaWFibGUqIHBWYXIpOworICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluaXRpYWxpemVyLCBU
SW50ZXJtTm9kZSomIGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwKTsKLSAgICBi
b29sIGFycmF5U2V0TWF4U2l6ZShUSW50ZXJtU3ltYm9sKiwgVFR5cGUqLCBpbnQsIGJvb2wsIFRT
b3VyY2VMb2MpOwogCi0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9k
ZSosIGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBURnVuY3Rpb24qLCBUU291cmNlTG9jKTsKKyAg
ICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0cnVjdG9yKFRJbnRlcm1Ob2RlKiwgY29uc3QgVFR5cGUq
LCBUT3BlcmF0b3IsIFRGdW5jdGlvbiosIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAgICBUSW50ZXJt
VHlwZWQqIGZvbGRDb25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlLCBj
b25zdCBUVHlwZSYgdHlwZSk7Ci0gICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RTdHJ1Y3QoVElu
dGVybU5vZGUqLCBUVHlwZSosIGludCwgVFNvdXJjZUxvYywgYm9vbCBzdWJzZXQpOwotICAgIFRJ
bnRlcm1UeXBlZCogY29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSosIFRPcGVyYXRvciwgVElu
dGVybU5vZGUqLCBUU291cmNlTG9jLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVybVR5cGVkKiBh
ZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCosIFRTb3VyY2VM
b2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhOb2RlKGludCAsIFRJbnRlcm1U
eXBlZCosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RBcnJheU5vZGUo
aW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSk7Ci0gICAgVElu
dGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJbnRlcm1UeXBlZCosIFRTb3Vy
Y2VMb2MpOworICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiwg
VFR5cGUqLCBpbnQsIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7CisgICAgVEludGVy
bVR5cGVkKiBjb25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBUSW50ZXJt
Tm9kZSosIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7CisgICAgVEludGVybVR5cGVk
KiBhZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCosIGNvbnN0
IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0TWF0cml4Tm9kZShpbnQg
LCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBh
ZGRDb25zdEFycmF5Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNv
dXJjZUxvYyYgbGluZSk7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5n
JiAsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKIAogICAgIC8vIFBlcmZvcm1z
IGFuIGVycm9yIGNoZWNrIGZvciBlbWJlZGRlZCBzdHJ1Y3QgZGVjbGFyYXRpb25zLgogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiBhbiBlcnJvciB3YXMgcmFpc2VkIGR1ZSB0byB0aGUgZGVjbGFyYXRp
b24gb2YKICAgICAvLyB0aGlzIHN0cnVjdC4KLSAgICBib29sIGVudGVyU3RydWN0RGVjbGFyYXRp
b24oVFNvdXJjZUxvYyBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICBib29s
IGVudGVyU3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0
cmluZyYgaWRlbnRpZmllcik7CiAgICAgdm9pZCBleGl0U3RydWN0RGVjbGFyYXRpb24oKTsKIAot
ICAgIGJvb2wgc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soVFNvdXJjZUxvYyBsaW5lLCBjb25zdCBU
VHlwZSYgZmllbGRUeXBlKTsKKyAgICBib29sIHN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQpOwogfTsKIAogaW50IFBhUGFy
c2VTdHJpbmdzKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0
IGludCBsZW5ndGhbXSwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9Qb29sQWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Qb29sQWxsb2MuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjI4LDI0ICsyMjgsMjcgQEAgdm9pZCBUUG9vbEFsbG9jYXRvcjo6cG9wQWxsKCkKIAogdm9p
ZCogVFBvb2xBbGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBudW1CeXRlcykKIHsKKyAgICAvLwor
ICAgIC8vIEp1c3Qga2VlcCBzb21lIGludGVyZXN0aW5nIHN0YXRpc3RpY3MuCisgICAgLy8KKyAg
ICArK251bUNhbGxzOworICAgIHRvdGFsQnl0ZXMgKz0gbnVtQnl0ZXM7CisKICAgICAvLyBJZiB3
ZSBhcmUgdXNpbmcgZ3VhcmQgYmxvY2tzLCBhbGwgYWxsb2NhdGlvbnMgYXJlIGJyYWNrZXRlZCBi
eQogICAgIC8vIHRoZW06IFtndWFyZGJsb2NrXVthbGxvY2F0aW9uXVtndWFyZGJsb2NrXS4gIG51
bUJ5dGVzIGlzIGhvdwogICAgIC8vIG11Y2ggbWVtb3J5IHRoZSBjYWxsZXIgYXNrZWQgZm9yLiAg
YWxsb2NhdGlvblNpemUgaXMgdGhlIHRvdGFsCiAgICAgLy8gc2l6ZSBpbmNsdWRpbmcgZ3VhcmQg
YmxvY2tzLiAgSW4gcmVsZWFzZSBidWlsZCwKICAgICAvLyBndWFyZEJsb2NrU2l6ZT0wIGFuZCB0
aGlzIGFsbCBnZXRzIG9wdGltaXplZCBhd2F5LgogICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9
IFRBbGxvY2F0aW9uOjphbGxvY2F0aW9uU2l6ZShudW1CeXRlcyk7Ci0gICAgCi0gICAgLy8KLSAg
ICAvLyBKdXN0IGtlZXAgc29tZSBpbnRlcmVzdGluZyBzdGF0aXN0aWNzLgotICAgIC8vCi0gICAg
KytudW1DYWxsczsKLSAgICB0b3RhbEJ5dGVzICs9IG51bUJ5dGVzOworICAgIC8vIERldGVjdCBp
bnRlZ2VyIG92ZXJmbG93LgorICAgIGlmIChhbGxvY2F0aW9uU2l6ZSA8IG51bUJ5dGVzKQorICAg
ICAgICByZXR1cm4gMDsKIAogICAgIC8vCiAgICAgLy8gRG8gdGhlIGFsbG9jYXRpb24sIG1vc3Qg
bGlrZWx5IGNhc2UgZmlyc3QsIGZvciBlZmZpY2llbmN5LgogICAgIC8vIFRoaXMgc3RlcCBjb3Vs
ZCBiZSBtb3ZlZCB0byBiZSBpbmxpbmUgc29tZXRpbWUuCiAgICAgLy8KLSAgICBpZiAoY3VycmVu
dFBhZ2VPZmZzZXQgKyBhbGxvY2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSkgeworICAgIGlmIChhbGxv
Y2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSAtIGN1cnJlbnRQYWdlT2Zmc2V0KSB7CiAgICAgICAgIC8v
CiAgICAgICAgIC8vIFNhZmUgdG8gYWxsb2NhdGUgZnJvbSBjdXJyZW50UGFnZU9mZnNldC4KICAg
ICAgICAgLy8KQEAgLTI1NiwxMiArMjU5LDE2IEBAIHZvaWQqIFRQb29sQWxsb2NhdG9yOjphbGxv
Y2F0ZShzaXplX3QgbnUKICAgICAgICAgcmV0dXJuIGluaXRpYWxpemVBbGxvY2F0aW9uKGluVXNl
TGlzdCwgbWVtb3J5LCBudW1CeXRlcyk7CiAgICAgfQogCi0gICAgaWYgKGFsbG9jYXRpb25TaXpl
ICsgaGVhZGVyU2tpcCA+IHBhZ2VTaXplKSB7CisgICAgaWYgKGFsbG9jYXRpb25TaXplID4gcGFn
ZVNpemUgLSBoZWFkZXJTa2lwKSB7CiAgICAgICAgIC8vCiAgICAgICAgIC8vIERvIGEgbXVsdGkt
cGFnZSBhbGxvY2F0aW9uLiAgRG9uJ3QgbWl4IHRoZXNlIHdpdGggdGhlIG90aGVycy4KICAgICAg
ICAgLy8gVGhlIE9TIGlzIGVmZmljaWVudCBhbmQgYWxsb2NhdGluZyBhbmQgZnJlZS1pbmcgbXVs
dGlwbGUgcGFnZXMuCiAgICAgICAgIC8vCiAgICAgICAgIHNpemVfdCBudW1CeXRlc1RvQWxsb2Mg
PSBhbGxvY2F0aW9uU2l6ZSArIGhlYWRlclNraXA7CisgICAgICAgIC8vIERldGVjdCBpbnRlZ2Vy
IG92ZXJmbG93LgorICAgICAgICBpZiAobnVtQnl0ZXNUb0FsbG9jIDwgYWxsb2NhdGlvblNpemUp
CisgICAgICAgICAgICByZXR1cm4gMDsKKwogICAgICAgICB0SGVhZGVyKiBtZW1vcnkgPSByZWlu
dGVycHJldF9jYXN0PHRIZWFkZXIqPig6Om5ldyBjaGFyW251bUJ5dGVzVG9BbGxvY10pOwogICAg
ICAgICBpZiAobWVtb3J5ID09IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCShyZXZpc2lv
biAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hIYW5k
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtODEsOCArODEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBJbml0QnVpbHRJblN5bWJvbFRhYmxlKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3Vy
Y2VzKTsKICAgICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgZnJvbSB0aGUgcHJldmlvdXMgY29tcGls
YXRpb24uCiAgICAgdm9pZCBjbGVhclJlc3VsdHMoKTsKLSAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBm
dW5jdGlvbiByZWN1cnNpb24gaXMgZGV0ZWN0ZWQuCi0gICAgYm9vbCBkZXRlY3RSZWN1cnNpb24o
VEludGVybU5vZGUqIHJvb3QpOworICAgIC8vIFJldHVybiB0cnVlIGlmIGZ1bmN0aW9uIHJlY3Vy
c2lvbiBpcyBkZXRlY3RlZCBvciBjYWxsIGRlcHRoIGV4Y2VlZGVkLgorICAgIGJvb2wgZGV0ZWN0
Q2FsbERlcHRoKFRJbnRlcm1Ob2RlKiByb290LCBUSW5mb1NpbmsmIGluZm9TaW5rLCBib29sIGxp
bWl0Q2FsbFN0YWNrRGVwdGgpOwogICAgIC8vIFJld3JpdGVzIGEgc2hhZGVyJ3MgaW50ZXJtZWRp
YXRlIHRyZWUgYWNjb3JkaW5nIHRvIHRoZSBDU1MgU2hhZGVycyBzcGVjLgogICAgIHZvaWQgcmV3
cml0ZUNTU1NoYWRlcihUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBnaXZlbiBzaGFkZXIgZG9lcyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtCkBAIC0xMDQsNiAr
MTA0LDggQEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2hhZGVyIGRv
ZXMgbm90IHVzZSBzYW1wbGVyIGRlcGVuZGVudCB2YWx1ZXMgdG8gYWZmZWN0IGNvbnRyb2wgCiAg
ICAgLy8gZmxvdyBvciBpbiBvcGVyYXRpb25zIHdob3NlIHRpbWUgY2FuIGRlcGVuZCBvbiB0aGUg
aW5wdXQgdmFsdWVzLgogICAgIGJvb2wgZW5mb3JjZUZyYWdtZW50U2hhZGVyVGltaW5nUmVzdHJp
Y3Rpb25zKGNvbnN0IFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKTsKKyAgICAvLyBSZXR1cm4gdHJ1
ZSBpZiB0aGUgbWF4aW11bSBleHByZXNzaW9uIGNvbXBsZXhpdHkgYmVsb3cgdGhlIGxpbWl0Lgor
ICAgIGJvb2wgbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCk7CiAg
ICAgLy8gR2V0IGJ1aWx0LWluIGV4dGVuc2lvbnMgd2l0aCBkZWZhdWx0IGJlaGF2aW9yLgogICAg
IGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZ2V0RXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdDsK
IApAQCAtMTE2LDYgKzExOCw4IEBAIHByaXZhdGU6CiAgICAgU2hTaGFkZXJTcGVjIHNoYWRlclNw
ZWM7CiAKICAgICBpbnQgbWF4VW5pZm9ybVZlY3RvcnM7CisgICAgaW50IG1heEV4cHJlc3Npb25D
b21wbGV4aXR5OworICAgIGludCBtYXhDYWxsU3RhY2tEZXB0aDsKIAogICAgIC8vIEJ1aWx0LWlu
IHN5bWJvbCB0YWJsZSBmb3IgdGhlIGdpdmVuIGxhbmd1YWdlLCBzcGVjLCBhbmQgcmVzb3VyY2Vz
LgogICAgIC8vIEl0IGlzIHByZXNlcnZlZCBmcm9tIGNvbXBpbGUtdG8tY29tcGlsZS4KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hhZGVyTGFu
Zy5jcHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9TaGFkZXJMYW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBA
IHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXMKICAgICByZXNvdXJjZXMt
Pk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgPSAwOwogICAgIHJlc291cmNlcy0+QVJCX3RleHR1cmVf
cmVjdGFuZ2xlID0gMDsKICAgICByZXNvdXJjZXMtPkVYVF9kcmF3X2J1ZmZlcnMgPSAwOworICAg
IHJlc291cmNlcy0+RVhUX2ZyYWdfZGVwdGggPSAwOwogCiAgICAgLy8gRGlzYWJsZSBoaWdocCBw
cmVjaXNpb24gaW4gZnJhZ21lbnQgc2hhZGVyIGJ5IGRlZmF1bHQuCiAgICAgcmVzb3VyY2VzLT5G
cmFnbWVudFByZWNpc2lvbkhpZ2ggPSAwOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lvbiAxNTI2NDkp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNyw0OCArMTcsMzQgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIK
KyNpbmNsdWRlIDxjbGltaXRzPgogCiBUVHlwZTo6VFR5cGUoY29uc3QgVFB1YmxpY1R5cGUgJnAp
IDoKLSAgICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lzaW9uKHAucHJlY2lzaW9uKSwgcXVh
bGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBtYXRyaXgocC5tYXRyaXgpLCBhcnJh
eShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwKLSAgICAgICAgICAgIG1heEFycmF5
U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVyZSgwKSwgc3RydWN0dXJl
U2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgw
KSwgdHlwZU5hbWUoMCkKKyAgICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lzaW9uKHAucHJl
Y2lzaW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBtYXRyaXgocC5t
YXRyaXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwgc3RydWN0dXJl
KDApCiB7Ci0gICAgaWYgKHAudXNlckRlZikgeworICAgIGlmIChwLnVzZXJEZWYpCiAgICAgICAg
IHN0cnVjdHVyZSA9IHAudXNlckRlZi0+Z2V0U3RydWN0KCk7Ci0gICAgICAgIHR5cGVOYW1lID0g
TmV3UG9vbFRTdHJpbmcocC51c2VyRGVmLT5nZXRUeXBlTmFtZSgpLmNfc3RyKCkpOwotICAgICAg
ICBjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsKLSAgICB9CiB9CiAKIC8vCiAvLyBSZWN1
cnNpdmVseSBnZW5lcmF0ZSBtYW5nbGVkIG5hbWVzLgogLy8KLXZvaWQgVFR5cGU6OmJ1aWxkTWFu
Z2xlZE5hbWUoVFN0cmluZyYgbWFuZ2xlZE5hbWUpCitUU3RyaW5nIFRUeXBlOjpidWlsZE1hbmds
ZWROYW1lKCkgY29uc3QKIHsKKyAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAgIGlmIChpc01h
dHJpeCgpKQogICAgICAgICBtYW5nbGVkTmFtZSArPSAnbSc7CiAgICAgZWxzZSBpZiAoaXNWZWN0
b3IoKSkKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ3YnOwogCiAgICAgc3dpdGNoICh0eXBlKSB7
Ci0gICAgY2FzZSBFYnRGbG9hdDogICAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICdmJzsgICAg
ICBicmVhazsKLSAgICBjYXNlIEVidEludDogICAgICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0g
J2knOyAgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0Qm9vbDogICAgICAgICAgICAgICBtYW5nbGVk
TmFtZSArPSAnYic7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRTYW1wbGVyMkQ6ICAgICAgICAg
IG1hbmdsZWROYW1lICs9ICJzMiI7ICAgICBicmVhazsKLSAgICBjYXNlIEVidFNhbXBsZXJDdWJl
OiAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInNDIjsgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0U3Ry
dWN0OgotICAgICAgICBtYW5nbGVkTmFtZSArPSAic3RydWN0LSI7Ci0gICAgICAgIGlmICh0eXBl
TmFtZSkKLSAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICp0eXBlTmFtZTsKLSAgICAgICAgey8v
IHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBtYW5nbGVkTmFt
ZSArPSAnLSc7Ci0gICAgICAgICAgICAgICAgKCpzdHJ1Y3R1cmUpW2ldLnR5cGUtPmJ1aWxkTWFu
Z2xlZE5hbWUobWFuZ2xlZE5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRGbG9hdDogICAgICAgbWFuZ2xlZE5h
bWUgKz0gJ2YnOyAgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0SW50OiAgICAgICAgIG1hbmdsZWRO
YW1lICs9ICdpJzsgICAgICBicmVhazsKKyAgICBjYXNlIEVidEJvb2w6ICAgICAgICBtYW5nbGVk
TmFtZSArPSAnYic7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRTYW1wbGVyMkQ6ICAgbWFuZ2xl
ZE5hbWUgKz0gInMyIjsgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6IG1hbmds
ZWROYW1lICs9ICJzQyI7ICAgICBicmVhazsKKyAgICBjYXNlIEVidFN0cnVjdDogICAgICBtYW5n
bGVkTmFtZSArPSBzdHJ1Y3R1cmUtPm1hbmdsZWROYW1lKCk7IGJyZWFrOworICAgIGRlZmF1bHQ6
ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIG1hbmdsZWROYW1lICs9IHN0YXRpY19j
YXN0PGNoYXI+KCcwJyArIGdldE5vbWluYWxTaXplKCkpOwpAQCAtNjksNTMgKzU1LDcyIEBAIHZv
aWQgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYgbWEKICAgICAgICAgbWFuZ2xlZE5h
bWUgKz0gYnVmOwogICAgICAgICBtYW5nbGVkTmFtZSArPSAnXSc7CiAgICAgfQorICAgIHJldHVy
biBtYW5nbGVkTmFtZTsKIH0KIAotaW50IFRUeXBlOjpnZXRTdHJ1Y3RTaXplKCkgY29uc3QKK3Np
emVfdCBUVHlwZTo6Z2V0T2JqZWN0U2l6ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFnZXRTdHJ1Y3Qo
KSkgewotICAgICAgICBhc3NlcnQoZmFsc2UgJiYgIk5vdCBhIHN0cnVjdCIpOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9CisgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7CiAKLSAgICBpZiAoc3Ry
dWN0dXJlU2l6ZSA9PSAwKQotICAgICAgICBmb3IgKFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3Ig
dGwgPSBnZXRTdHJ1Y3QoKS0+YmVnaW4oKTsgdGwgIT0gZ2V0U3RydWN0KCktPmVuZCgpOyB0bCsr
KQotICAgICAgICAgICAgc3RydWN0dXJlU2l6ZSArPSAoKCp0bCkudHlwZSktPmdldE9iamVjdFNp
emUoKTsKKyAgICBpZiAoZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQorICAgICAgICB0b3Rh
bFNpemUgPSBzdHJ1Y3R1cmUtPm9iamVjdFNpemUoKTsKKyAgICBlbHNlIGlmIChtYXRyaXgpCisg
ICAgICAgIHRvdGFsU2l6ZSA9IHNpemUgKiBzaXplOworICAgIGVsc2UKKyAgICAgICAgdG90YWxT
aXplID0gc2l6ZTsKKworICAgIGlmIChpc0FycmF5KCkpIHsKKyAgICAgICAgc2l6ZV90IGFycmF5
U2l6ZSA9IGdldEFycmF5U2l6ZSgpOworICAgICAgICBpZiAoYXJyYXlTaXplID4gSU5UX01BWCAv
IHRvdGFsU2l6ZSkKKyAgICAgICAgICAgIHRvdGFsU2l6ZSA9IElOVF9NQVg7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRvdGFsU2l6ZSAqPSBhcnJheVNpemU7CisgICAgfQogCi0gICAgcmV0
dXJuIHN0cnVjdHVyZVNpemU7CisgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAotdm9pZCBUVHlw
ZTo6Y29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkKK2Jvb2wgVFN0cnVjdHVyZTo6Y29udGFp
bnNBcnJheXMoKSBjb25zdAogewotICAgIGlmICghZ2V0U3RydWN0KCkpIHsKLSAgICAgICAgcmV0
dXJuOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZpZWxkcy0+c2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqbUZpZWxkcylbaV0tPnR5cGUoKTsK
KyAgICAgICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJheSgpIHx8IGZpZWxkVHlwZS0+aXNTdHJ1Y3R1
cmVDb250YWluaW5nQXJyYXlzKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQogCi0gICAgaW50IG1heE5lc3RpbmcgPSAwOwotICAgIGZvciAo
VFR5cGVMaXN0Ojpjb25zdF9pdGVyYXRvciB0bCA9IGdldFN0cnVjdCgpLT5iZWdpbigpOyB0bCAh
PSBnZXRTdHJ1Y3QoKS0+ZW5kKCk7ICsrdGwpIHsKLSAgICAgICAgbWF4TmVzdGluZyA9IHN0ZDo6
bWF4KG1heE5lc3RpbmcsICgoKnRsKS50eXBlKS0+Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSk7
CitUU3RyaW5nIFRTdHJ1Y3R1cmU6OmJ1aWxkTWFuZ2xlZE5hbWUoKSBjb25zdAoreworICAgIFRT
dHJpbmcgbWFuZ2xlZE5hbWUoInN0cnVjdC0iKTsKKyAgICBtYW5nbGVkTmFtZSArPSAqbU5hbWU7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsraSkgeworICAg
ICAgICBtYW5nbGVkTmFtZSArPSAnLSc7CisgICAgICAgIG1hbmdsZWROYW1lICs9ICgqbUZpZWxk
cylbaV0tPnR5cGUoKS0+Z2V0TWFuZ2xlZE5hbWUoKTsKICAgICB9Ci0KLSAgICBkZWVwZXN0U3Ry
dWN0TmVzdGluZyA9IDEgKyBtYXhOZXN0aW5nOworICAgIHJldHVybiBtYW5nbGVkTmFtZTsKIH0K
IAotYm9vbCBUVHlwZTo6aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkgY29uc3QKK3NpemVf
dCBUU3RydWN0dXJlOjpjYWxjdWxhdGVPYmplY3RTaXplKCkgY29uc3QKIHsKLSAgICBpZiAoIXN0
cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzaXplX3Qgc2l6ZSA9
IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsraSkgewor
ICAgICAgICBzaXplX3QgZmllbGRTaXplID0gKCptRmllbGRzKVtpXS0+dHlwZSgpLT5nZXRPYmpl
Y3RTaXplKCk7CisgICAgICAgIGlmIChmaWVsZFNpemUgPiBJTlRfTUFYIC0gc2l6ZSkKKyAgICAg
ICAgICAgIHNpemUgPSBJTlRfTUFYOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzaXplICs9
IGZpZWxkU2l6ZTsKICAgICB9CisgICAgcmV0dXJuIHNpemU7Cit9CiAKLSAgICBmb3IgKFRUeXBl
TGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyID0gc3RydWN0dXJlLT5iZWdpbigpOyBtZW1iZXIg
IT0gc3RydWN0dXJlLT5lbmQoKTsgbWVtYmVyKyspCi0gICAgewotICAgICAgICBpZiAobWVtYmVy
LT50eXBlLT5pc0FycmF5KCkgfHwKLSAgICAgICAgICAgIG1lbWJlci0+dHlwZS0+aXNTdHJ1Y3R1
cmVDb250YWluaW5nQXJyYXlzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9CitpbnQgVFN0cnVjdHVyZTo6Y2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBj
b25zdAoreworICAgIGludCBtYXhOZXN0aW5nID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1GaWVsZHMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIG1heE5lc3RpbmcgPSBzdGQ6Om1h
eChtYXhOZXN0aW5nLCAoKm1GaWVsZHMpW2ldLT50eXBlKCktPmdldERlZXBlc3RTdHJ1Y3ROZXN0
aW5nKCkpOwogICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gMSArIG1heE5l
c3Rpbmc7CiB9CiAKIC8vCkBAIC0xOTYsODQgKzIwMSw4IEBAIHZvaWQgVFN5bWJvbFRhYmxlTGV2
ZWw6OnJlbGF0ZVRvT3BlcmF0b3IKIHZvaWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvRXh0
ZW5zaW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFRTdHJpbmcmIGV4dCkKIHsKICAgICBmb3Ig
KHRMZXZlbDo6aXRlcmF0b3IgaXQgPSBsZXZlbC5iZWdpbigpOyBpdCAhPSBsZXZlbC5lbmQoKTsg
KytpdCkgewotICAgICAgICBpZiAoaXQtPnNlY29uZC0+aXNGdW5jdGlvbigpKSB7Ci0gICAgICAg
ICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uKj4oaXQtPnNl
Y29uZCk7Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSBuYW1lKQotICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uLT5yZWxhdGVUb0V4dGVuc2lvbihleHQpOwotICAgICAgICB9
Ci0gICAgfQotfQotCi1UU3ltYm9sOjpUU3ltYm9sKGNvbnN0IFRTeW1ib2wmIGNvcHlPZikKLXsK
LSAgICBuYW1lID0gTmV3UG9vbFRTdHJpbmcoY29weU9mLm5hbWUtPmNfc3RyKCkpOwotICAgIHVu
aXF1ZUlkID0gY29weU9mLnVuaXF1ZUlkOwotfQotCi1UVmFyaWFibGU6OlRWYXJpYWJsZShjb25z
dCBUVmFyaWFibGUmIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpIDogVFN5bWJvbChj
b3B5T2YpCi17Ci0gICAgdHlwZS5jb3B5VHlwZShjb3B5T2YudHlwZSwgcmVtYXBwZXIpOwotICAg
IHVzZXJUeXBlID0gY29weU9mLnVzZXJUeXBlOwotICAgIC8vIGZvciBidWlsdEluIHN5bWJvbCB0
YWJsZSBsZXZlbCwgdW5pb25BcnJheSBhbmQgYXJyYXlJbmZvcm1hdGlvbiBwb2ludGVycyBzaG91
bGQgYmUgTlVMTAotICAgIGFzc2VydChjb3B5T2YuYXJyYXlJbmZvcm1hdGlvblR5cGUgPT0gMCk7
Ci0gICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOwotCi0gICAgaWYgKGNvcHlPZi51bmlvbkFy
cmF5KSB7Ci0gICAgICAgIGFzc2VydCghY29weU9mLnR5cGUuZ2V0U3RydWN0KCkpOwotICAgICAg
ICBhc3NlcnQoY29weU9mLnR5cGUuZ2V0T2JqZWN0U2l6ZSgpID09IDEpOwotICAgICAgICB1bmlv
bkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgIHVuaW9uQXJyYXlbMF0gPSBj
b3B5T2YudW5pb25BcnJheVswXTsKLSAgICB9IGVsc2UKLSAgICAgICAgdW5pb25BcnJheSA9IDA7
Ci19Ci0KLVRWYXJpYWJsZSogVFZhcmlhYmxlOjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBl
cikKLXsKLSAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZSgqdGhpcywgcmVt
YXBwZXIpOwotCi0gICAgcmV0dXJuIHZhcmlhYmxlOwotfQotCi1URnVuY3Rpb246OlRGdW5jdGlv
bihjb25zdCBURnVuY3Rpb24mIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpIDogVFN5
bWJvbChjb3B5T2YpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3B5T2Yu
cGFyYW1ldGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBUUGFyYW1ldGVyIHBhcmFtOwotICAg
ICAgICBwYXJhbWV0ZXJzLnB1c2hfYmFjayhwYXJhbSk7Ci0gICAgICAgIHBhcmFtZXRlcnMuYmFj
aygpLmNvcHlQYXJhbShjb3B5T2YucGFyYW1ldGVyc1tpXSwgcmVtYXBwZXIpOwotICAgIH0KLQot
ICAgIHJldHVyblR5cGUuY29weVR5cGUoY29weU9mLnJldHVyblR5cGUsIHJlbWFwcGVyKTsKLSAg
ICBtYW5nbGVkTmFtZSA9IGNvcHlPZi5tYW5nbGVkTmFtZTsKLSAgICBvcCA9IGNvcHlPZi5vcDsK
LSAgICBkZWZpbmVkID0gY29weU9mLmRlZmluZWQ7Ci19Ci0KLVRGdW5jdGlvbiogVEZ1bmN0aW9u
OjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLXsKLSAgICBURnVuY3Rpb24gKmZ1bmN0
aW9uID0gbmV3IFRGdW5jdGlvbigqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgcmV0dXJuIGZ1bmN0
aW9uOwotfQotCi1UU3ltYm9sVGFibGVMZXZlbCogVFN5bWJvbFRhYmxlTGV2ZWw6OmNsb25lKFRT
dHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQotewotICAgIFRTeW1ib2xUYWJsZUxldmVsICpzeW1UYWJs
ZUxldmVsID0gbmV3IFRTeW1ib2xUYWJsZUxldmVsKCk7Ci0gICAgdExldmVsOjppdGVyYXRvciBp
dGVyOwotICAgIGZvciAoaXRlciA9IGxldmVsLmJlZ2luKCk7IGl0ZXIgIT0gbGV2ZWwuZW5kKCk7
ICsraXRlcikgewotICAgICAgICBzeW1UYWJsZUxldmVsLT5pbnNlcnQoKml0ZXItPnNlY29uZC0+
Y2xvbmUocmVtYXBwZXIpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3ltVGFibGVMZXZlbDsKLX0K
LQotdm9pZCBUU3ltYm9sVGFibGU6OmNvcHlUYWJsZShjb25zdCBUU3ltYm9sVGFibGUmIGNvcHlP
ZikKLXsKLSAgICBUU3RydWN0dXJlTWFwIHJlbWFwcGVyOwotICAgIHVuaXF1ZUlkID0gY29weU9m
LnVuaXF1ZUlkOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29weU9mLnRhYmxl
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHRhYmxlLnB1c2hfYmFjayhjb3B5T2YudGFibGVbaV0t
PmNsb25lKHJlbWFwcGVyKSk7Ci0gICAgfQotICAgIGZvciggdW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgY29weU9mLnByZWNpc2lvblN0YWNrLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHByZWNpc2lv
blN0YWNrLnB1c2hfYmFjayggY29weU9mLnByZWNpc2lvblN0YWNrW2ldICk7CisgICAgICAgIFRT
eW1ib2wqIHN5bWJvbCA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGlmIChzeW1ib2wtPmdldE5hbWUo
KSA9PSBuYW1lKQorICAgICAgICAgICAgc3ltYm9sLT5yZWxhdGVUb0V4dGVuc2lvbihleHQpOwog
ICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1i
b2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsNyBAQAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKKyNpbmNsdWRlICJjb21tb24vYW5n
bGV1dGlscy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvaW50ZXJtZWRpYXRlLmgiCiAKQEAgLTQ5LDEzICs1MCwxNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZv
aWQgc2V0VW5pcXVlSWQoaW50IGlkKSB7IHVuaXF1ZUlkID0gaWQ7IH0KICAgICBpbnQgZ2V0VW5p
cXVlSWQoKSBjb25zdCB7IHJldHVybiB1bmlxdWVJZDsgfQotICAgIHZpcnR1YWwgdm9pZCBkdW1w
KFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0ID0gMDsJCi0gICAgVFN5bWJvbChjb25zdCBUU3lt
Ym9sJik7Ci0gICAgdmlydHVhbCBUU3ltYm9sKiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBl
cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0
ID0gMDsKKyAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBl
eHRlbnNpb24gPSBleHQ7IH0KKyAgICBjb25zdCBUU3RyaW5nJiBnZXRFeHRlbnNpb24oKSBjb25z
dCB7IHJldHVybiBleHRlbnNpb247IH0KKworcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FO
RF9BU1NJR04oVFN5bWJvbCk7CiAKLXByb3RlY3RlZDoKICAgICBjb25zdCBUU3RyaW5nICpuYW1l
OwogICAgIHVuc2lnbmVkIGludCB1bmlxdWVJZDsgICAgICAvLyBGb3IgcmVhbCBjb21wYXJpbmcg
ZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbgorICAgIFRTdHJpbmcgZXh0ZW5zaW9uOwogfTsKIAogLy8K
QEAgLTcwLDE1ICs3NCwxMyBAQCBwcm90ZWN0ZWQ6CiAvLwogY2xhc3MgVFZhcmlhYmxlIDogcHVi
bGljIFRTeW1ib2wgewogcHVibGljOgotICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpuYW1l
LCBjb25zdCBUVHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUpLCB0eXBl
KHQpLCB1c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCksIGFycmF5SW5mb3JtYXRpb25UeXBlKDAp
IHsgfQorICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpuYW1lLCBjb25zdCBUVHlwZSYgdCwg
Ym9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUpLCB0eXBlKHQpLCB1c2VyVHlwZSh1VCks
IHVuaW9uQXJyYXkoMCkgeyB9CiAgICAgdmlydHVhbCB+VFZhcmlhYmxlKCkgeyB9CiAgICAgdmly
dHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9ICAgIAogICAgIFRU
eXBlJiBnZXRUeXBlKCkgeyByZXR1cm4gdHlwZTsgfSAgICAKICAgICBjb25zdCBUVHlwZSYgZ2V0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KICAgICBib29sIGlzVXNlclR5cGUoKSBjb25z
dCB7IHJldHVybiB1c2VyVHlwZTsgfQogICAgIHZvaWQgc2V0UXVhbGlmaWVyKFRRdWFsaWZpZXIg
cXVhbGlmaWVyKSB7IHR5cGUuc2V0UXVhbGlmaWVyKHF1YWxpZmllcik7IH0KLSAgICB2b2lkIHVw
ZGF0ZUFycmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlICp0KSB7IGFycmF5SW5mb3JtYXRpb25UeXBl
ID0gdDsgfQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpIHsgcmV0dXJuIGFy
cmF5SW5mb3JtYXRpb25UeXBlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChUSW5mb1Npbmsg
JmluZm9TaW5rKSBjb25zdDsKIApAQCAtMTAwLDE2ICsxMDIsMTUgQEAgcHVibGljOgogICAgICAg
ICBkZWxldGVbXSB1bmlvbkFycmF5OwogICAgICAgICB1bmlvbkFycmF5ID0gY29uc3RBcnJheTsg
IAogICAgIH0KLSAgICBUVmFyaWFibGUoY29uc3QgVFZhcmlhYmxlJiwgVFN0cnVjdHVyZU1hcCYg
cmVtYXBwZXIpOyAvLyBjb3B5IGNvbnN0cnVjdG9yCi0gICAgdmlydHVhbCBUVmFyaWFibGUqIGNs
b25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKIAotcHJvdGVjdGVkOgorcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFZhcmlhYmxlKTsKKwogICAgIFRUeXBlIHR5cGU7
CiAgICAgYm9vbCB1c2VyVHlwZTsKICAgICAvLyB3ZSBhcmUgYXNzdW1pbmcgdGhhdCBQb29sIEFs
bG9jYXRvciB3aWxsIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgdG8gdW5pb25BcnJheQogICAg
IC8vIHdoZW4gdGhpcyBvYmplY3QgaXMgZGVzdHJveWVkCiAgICAgQ29uc3RhbnRVbmlvbiAqdW5p
b25BcnJheTsKLSAgICBUVHlwZSAqYXJyYXlJbmZvcm1hdGlvblR5cGU7ICAvLyB0aGlzIGlzIHVz
ZWQgZm9yIHVwZGF0aW5nIG1heEFycmF5U2l6ZSBpbiBhbGwgdGhlIHJlZmVyZW5jZXMgdG8gYSBn
aXZlbiBzeW1ib2wKIH07CiAKIC8vCkBAIC0xMTksMTEgKzEyMCw2IEBAIHByb3RlY3RlZDoKIHN0
cnVjdCBUUGFyYW1ldGVyIHsKICAgICBUU3RyaW5nICpuYW1lOwogICAgIFRUeXBlKiB0eXBlOwot
ICAgIHZvaWQgY29weVBhcmFtKGNvbnN0IFRQYXJhbWV0ZXImIHBhcmFtLCBUU3RydWN0dXJlTWFw
JiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIG5hbWUgPSBOZXdQb29sVFN0cmluZyhwYXJhbS5u
YW1lLT5jX3N0cigpKTsKLSAgICAgICAgdHlwZSA9IHBhcmFtLnR5cGUtPmNsb25lKHJlbWFwcGVy
KTsKLSAgICB9CiB9OwogCiAvLwpAQCAtMTYzLDkgKzE1OSw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlbGF0ZVRvT3BlcmF0b3IoVE9wZXJhdG9yIG8pIHsgb3AgPSBvOyB9CiAgICAgVE9wZXJhdG9y
IGdldEJ1aWx0SW5PcCgpIGNvbnN0IHsgcmV0dXJuIG9wOyB9CiAKLSAgICB2b2lkIHJlbGF0ZVRv
RXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBleHRlbnNpb24gPSBleHQ7IH0KLSAgICBj
b25zdCBUU3RyaW5nJiBnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBleHRlbnNpb247IH0K
LQogICAgIHZvaWQgc2V0RGVmaW5lZCgpIHsgZGVmaW5lZCA9IHRydWU7IH0KICAgICBib29sIGlz
RGVmaW5lZCgpIHsgcmV0dXJuIGRlZmluZWQ7IH0KIApAQCAtMTczLDE2ICsxNjYsMTUgQEAgcHVi
bGljOgogICAgIGNvbnN0IFRQYXJhbWV0ZXImIGdldFBhcmFtKHNpemVfdCBpKSBjb25zdCB7IHJl
dHVybiBwYXJhbWV0ZXJzW2ldOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChUSW5mb1Npbmsg
JmluZm9TaW5rKSBjb25zdDsKLSAgICBURnVuY3Rpb24oY29uc3QgVEZ1bmN0aW9uJiwgVFN0cnVj
dHVyZU1hcCYgcmVtYXBwZXIpOwotICAgIHZpcnR1YWwgVEZ1bmN0aW9uKiBjbG9uZShUU3RydWN0
dXJlTWFwJiByZW1hcHBlcik7CiAKLXByb3RlY3RlZDoKK3ByaXZhdGU6CisgICAgRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOKFRGdW5jdGlvbik7CisKICAgICB0eXBlZGVmIFRWZWN0b3I8VFBhcmFt
ZXRlcj4gVFBhcmFtTGlzdDsKICAgICBUUGFyYW1MaXN0IHBhcmFtZXRlcnM7CiAgICAgVFR5cGUg
cmV0dXJuVHlwZTsKICAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAgIFRPcGVyYXRvciBvcDsK
LSAgICBUU3RyaW5nIGV4dGVuc2lvbjsKICAgICBib29sIGRlZmluZWQ7CiB9OwogCkBAIC0yMzEs
NyArMjIzLDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVsYXRlVG9PcGVyYXRvcihjb25zdCBjaGFy
KiBuYW1lLCBUT3BlcmF0b3Igb3ApOwogICAgIHZvaWQgcmVsYXRlVG9FeHRlbnNpb24oY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgVFN0cmluZyYgZXh0KTsKICAgICB2b2lkIGR1bXAoVEluZm9TaW5r
ICZpbmZvU2luaykgY29uc3Q7Ci0gICAgVFN5bWJvbFRhYmxlTGV2ZWwqIGNsb25lKFRTdHJ1Y3R1
cmVNYXAmIHJlbWFwcGVyKTsKIAogcHJvdGVjdGVkOgogICAgIHRMZXZlbCBsZXZlbDsKQEAgLTMy
MSw3ICszMTIsNiBAQCBwdWJsaWM6CiAgICAgfQogICAgIGludCBnZXRNYXhTeW1ib2xJZCgpIHsg
cmV0dXJuIHVuaXF1ZUlkOyB9CiAgICAgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNv
bnN0OwotICAgIHZvaWQgY29weVRhYmxlKGNvbnN0IFRTeW1ib2xUYWJsZSYgY29weU9mKTsKIAog
ICAgIGJvb2wgc2V0RGVmYXVsdFByZWNpc2lvbiggY29uc3QgVFB1YmxpY1R5cGUmIHR5cGUsIFRQ
cmVjaXNpb24gcHJlYyApewogICAgICAgICBpZiAoSXNTYW1wbGVyKHR5cGUudHlwZSkpCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMuaAkocmV2aXNp
b24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1R5cGVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcsMzAgKzcsODUgQEAKICNpZm5kZWYgX1RZUEVTX0lOQ0xV
REVECiAjZGVmaW5lIF9UWVBFU19JTkNMVURFRAogCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRp
bHMuaCIKKwogI2luY2x1ZGUgImNvbXBpbGVyL0Jhc2VUeXBlcy5oIgogI2luY2x1ZGUgImNvbXBp
bGVyL0NvbW1vbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL2RlYnVnLmgiCiAKLWNsYXNzIFRUeXBl
Owogc3RydWN0IFRQdWJsaWNUeXBlOworY2xhc3MgVFR5cGU7CiAKLS8vCi0vLyBOZWVkIHRvIGhh
dmUgYXNzb2NpYXRpb24gb2YgbGluZSBudW1iZXJzIHRvIHR5cGVzIGluIGEgbGlzdCBmb3IgYnVp
bGRpbmcgc3RydWN0cy4KLS8vCi1zdHJ1Y3QgVFR5cGVMaW5lIHsKLSAgICBUVHlwZSogdHlwZTsK
LSAgICBpbnQgbGluZTsKK2NsYXNzIFRGaWVsZAoreworcHVibGljOgorICAgIFBPT0xfQUxMT0NB
VE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcik7CisgICAgVEZpZWxkKFRUeXBlKiB0
eXBlLCBUU3RyaW5nKiBuYW1lKSA6IG1UeXBlKHR5cGUpLCBtTmFtZShuYW1lKSB7fQorCisgICAg
Ly8gVE9ETyhhbG9rcCk6IFdlIHNob3VsZCBvbmx5IHJldHVybiBjb25zdCB0eXBlLgorICAgIC8v
IEZpeCBpdCBieSB0d2Vha2luZyBncmFtbWFyLgorICAgIFRUeXBlKiB0eXBlKCkgeyByZXR1cm4g
bVR5cGU7IH0KKyAgICBjb25zdCBUVHlwZSogdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlOyB9
CisKKyAgICBjb25zdCBUU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1OYW1lOyB9CisK
K3ByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRGaWVsZCk7CisgICAgVFR5
cGUqIG1UeXBlOworICAgIFRTdHJpbmcqIG1OYW1lOwogfTsKLXR5cGVkZWYgVFZlY3RvcjxUVHlw
ZUxpbmU+IFRUeXBlTGlzdDsKIAotaW5saW5lIFRUeXBlTGlzdCogTmV3UG9vbFRUeXBlTGlzdCgp
Cit0eXBlZGVmIFRWZWN0b3I8VEZpZWxkKj4gVEZpZWxkTGlzdDsKK2lubGluZSBURmllbGRMaXN0
KiBOZXdQb29sVEZpZWxkTGlzdCgpCiB7Ci0gICAgdm9pZCogbWVtb3J5ID0gR2xvYmFsUG9vbEFs
bG9jYXRvci5hbGxvY2F0ZShzaXplb2YoVFR5cGVMaXN0KSk7Ci0gICAgcmV0dXJuIG5ldyhtZW1v
cnkpIFRUeXBlTGlzdDsKKyAgICB2b2lkKiBtZW1vcnkgPSBHbG9iYWxQb29sQWxsb2NhdG9yLmFs
bG9jYXRlKHNpemVvZihURmllbGRMaXN0KSk7CisgICAgcmV0dXJuIG5ldyhtZW1vcnkpIFRGaWVs
ZExpc3Q7CiB9CiAKLXR5cGVkZWYgVE1hcDxUVHlwZUxpc3QqLCBUVHlwZUxpc3QqPiBUU3RydWN0
dXJlTWFwOwotdHlwZWRlZiBUTWFwPFRUeXBlTGlzdCosIFRUeXBlTGlzdCo+OjppdGVyYXRvciBU
U3RydWN0dXJlTWFwSXRlcmF0b3I7CitjbGFzcyBUU3RydWN0dXJlCit7CitwdWJsaWM6CisgICAg
UE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKTsKKyAgICBUU3Ry
dWN0dXJlKFRTdHJpbmcqIG5hbWUsIFRGaWVsZExpc3QqIGZpZWxkcykKKyAgICAgICAgOiBtTmFt
ZShuYW1lKSwKKyAgICAgICAgICBtRmllbGRzKGZpZWxkcyksCisgICAgICAgICAgbU9iamVjdFNp
emUoMCksCisgICAgICAgICAgbURlZXBlc3ROZXN0aW5nKDApIHsKKyAgICB9CisKKyAgICBjb25z
dCBUU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1OYW1lOyB9CisgICAgY29uc3QgVEZp
ZWxkTGlzdCYgZmllbGRzKCkgY29uc3QgeyByZXR1cm4gKm1GaWVsZHM7IH0KKworICAgIGNvbnN0
IFRTdHJpbmcmIG1hbmdsZWROYW1lKCkgY29uc3QgeworICAgICAgICBpZiAobU1hbmdsZWROYW1l
LmVtcHR5KCkpCisgICAgICAgICAgICBtTWFuZ2xlZE5hbWUgPSBidWlsZE1hbmdsZWROYW1lKCk7
CisgICAgICAgIHJldHVybiBtTWFuZ2xlZE5hbWU7CisgICAgfQorICAgIHNpemVfdCBvYmplY3RT
aXplKCkgY29uc3QgeworICAgICAgICBpZiAobU9iamVjdFNpemUgPT0gMCkKKyAgICAgICAgICAg
IG1PYmplY3RTaXplID0gY2FsY3VsYXRlT2JqZWN0U2l6ZSgpOworICAgICAgICByZXR1cm4gbU9i
amVjdFNpemU7CisgICAgfTsKKyAgICBpbnQgZGVlcGVzdE5lc3RpbmcoKSBjb25zdCB7CisgICAg
ICAgIGlmIChtRGVlcGVzdE5lc3RpbmcgPT0gMCkKKyAgICAgICAgICAgIG1EZWVwZXN0TmVzdGlu
ZyA9IGNhbGN1bGF0ZURlZXBlc3ROZXN0aW5nKCk7CisgICAgICAgIHJldHVybiBtRGVlcGVzdE5l
c3Rpbmc7CisgICAgfQorICAgIGJvb2wgY29udGFpbnNBcnJheXMoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFN0cnVjdHVyZSk7CisgICAgVFN0cmlu
ZyBidWlsZE1hbmdsZWROYW1lKCkgY29uc3Q7CisgICAgc2l6ZV90IGNhbGN1bGF0ZU9iamVjdFNp
emUoKSBjb25zdDsKKyAgICBpbnQgY2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBjb25zdDsKKwor
ICAgIFRTdHJpbmcqIG1OYW1lOworICAgIFRGaWVsZExpc3QqIG1GaWVsZHM7CisKKyAgICBtdXRh
YmxlIFRTdHJpbmcgbU1hbmdsZWROYW1lOworICAgIG11dGFibGUgc2l6ZV90IG1PYmplY3RTaXpl
OworICAgIG11dGFibGUgaW50IG1EZWVwZXN0TmVzdGluZzsKK307CiAKIC8vCiAvLyBCYXNlIGNs
YXNzIGZvciB0aGluZ3MgdGhhdCBoYXZlIGEgdHlwZS4KQEAgLTQxLDY5ICs5NiwxMyBAQCBwdWJs
aWM6CiAgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKQog
ICAgIFRUeXBlKCkge30KICAgICBUVHlwZShUQmFzaWNUeXBlIHQsIFRQcmVjaXNpb24gcCwgVFF1
YWxpZmllciBxID0gRXZxVGVtcG9yYXJ5LCBpbnQgcyA9IDEsIGJvb2wgbSA9IGZhbHNlLCBib29s
IGEgPSBmYWxzZSkgOgotICAgICAgICAgICAgdHlwZSh0KSwgcHJlY2lzaW9uKHApLCBxdWFsaWZp
ZXIocSksIHNpemUocyksIG1hdHJpeChtKSwgYXJyYXkoYSksIGFycmF5U2l6ZSgwKSwKLSAgICAg
ICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVy
ZSgwKSwgc3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFt
ZSgwKSwgbWFuZ2xlZCgwKSwgdHlwZU5hbWUoMCkKKyAgICAgICAgICAgIHR5cGUodCksIHByZWNp
c2lvbihwKSwgcXVhbGlmaWVyKHEpLCBzaXplKHMpLCBtYXRyaXgobSksIGFycmF5KGEpLCBhcnJh
eVNpemUoMCksIHN0cnVjdHVyZSgwKQogICAgIHsKICAgICB9CiAgICAgZXhwbGljaXQgVFR5cGUo
Y29uc3QgVFB1YmxpY1R5cGUgJnApOwotICAgIFRUeXBlKFRUeXBlTGlzdCogdXNlckRlZiwgY29u
c3QgVFN0cmluZyYgbiwgVFByZWNpc2lvbiBwID0gRWJwVW5kZWZpbmVkKSA6Ci0gICAgICAgICAg
ICB0eXBlKEVidFN0cnVjdCksIHByZWNpc2lvbihwKSwgcXVhbGlmaWVyKEV2cVRlbXBvcmFyeSks
IHNpemUoMSksIG1hdHJpeChmYWxzZSksIGFycmF5KGZhbHNlKSwgYXJyYXlTaXplKDApLAotICAg
ICAgICAgICAgbWF4QXJyYXlTaXplKDApLCBhcnJheUluZm9ybWF0aW9uVHlwZSgwKSwgc3RydWN0
dXJlKHVzZXJEZWYpLCBzdHJ1Y3R1cmVTaXplKDApLCBkZWVwZXN0U3RydWN0TmVzdGluZygwKSwg
ZmllbGROYW1lKDApLCBtYW5nbGVkKDApCi0gICAgewotICAgICAgICB0eXBlTmFtZSA9IE5ld1Bv
b2xUU3RyaW5nKG4uY19zdHIoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb3B5VHlwZShjb25zdCBU
VHlwZSYgY29weU9mLCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIHR5
cGUgPSBjb3B5T2YudHlwZTsKLSAgICAgICAgcHJlY2lzaW9uID0gY29weU9mLnByZWNpc2lvbjsK
LSAgICAgICAgcXVhbGlmaWVyID0gY29weU9mLnF1YWxpZmllcjsKLSAgICAgICAgc2l6ZSA9IGNv
cHlPZi5zaXplOwotICAgICAgICBtYXRyaXggPSBjb3B5T2YubWF0cml4OwotICAgICAgICBhcnJh
eSA9IGNvcHlPZi5hcnJheTsKLSAgICAgICAgYXJyYXlTaXplID0gY29weU9mLmFycmF5U2l6ZTsK
LQotICAgICAgICBUU3RydWN0dXJlTWFwSXRlcmF0b3IgaXRlcjsKLSAgICAgICAgaWYgKGNvcHlP
Zi5zdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIGlmICgoaXRlciA9IHJlbWFwcGVyLmZpbmQoc3Ry
dWN0dXJlKSkgPT0gcmVtYXBwZXIuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBjcmVhdGUg
dGhlIG5ldyBzdHJ1Y3R1cmUgaGVyZQotICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IE5ld1Bv
b2xUVHlwZUxpc3QoKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IGNvcHlPZi5zdHJ1Y3R1cmUtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxpbmUubGluZSA9
ICgqY29weU9mLnN0cnVjdHVyZSlbaV0ubGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxp
bmUudHlwZSA9ICgqY29weU9mLnN0cnVjdHVyZSlbaV0udHlwZS0+Y2xvbmUocmVtYXBwZXIpOwot
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnB1c2hfYmFjayh0eXBlTGluZSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJ1
Y3R1cmUgPSBpdGVyLT5zZWNvbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgc3RydWN0dXJlID0gMDsKLQotICAgICAgICBmaWVsZE5hbWUgPSAwOwotICAgICAg
ICBpZiAoY29weU9mLmZpZWxkTmFtZSkKLSAgICAgICAgICAgIGZpZWxkTmFtZSA9IE5ld1Bvb2xU
U3RyaW5nKGNvcHlPZi5maWVsZE5hbWUtPmNfc3RyKCkpOwotICAgICAgICB0eXBlTmFtZSA9IDA7
Ci0gICAgICAgIGlmIChjb3B5T2YudHlwZU5hbWUpCi0gICAgICAgICAgICB0eXBlTmFtZSA9IE5l
d1Bvb2xUU3RyaW5nKGNvcHlPZi50eXBlTmFtZS0+Y19zdHIoKSk7Ci0KLSAgICAgICAgbWFuZ2xl
ZCA9IDA7Ci0gICAgICAgIGlmIChjb3B5T2YubWFuZ2xlZCkKLSAgICAgICAgICAgIG1hbmdsZWQg
PSBOZXdQb29sVFN0cmluZyhjb3B5T2YubWFuZ2xlZC0+Y19zdHIoKSk7Ci0KLSAgICAgICAgc3Ry
dWN0dXJlU2l6ZSA9IGNvcHlPZi5zdHJ1Y3R1cmVTaXplOwotICAgICAgICBtYXhBcnJheVNpemUg
PSBjb3B5T2YubWF4QXJyYXlTaXplOwotICAgICAgICBkZWVwZXN0U3RydWN0TmVzdGluZyA9IGNv
cHlPZi5kZWVwZXN0U3RydWN0TmVzdGluZzsKLSAgICAgICAgYXNzZXJ0KGNvcHlPZi5hcnJheUlu
Zm9ybWF0aW9uVHlwZSA9PSAwKTsKLSAgICAgICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOyAv
LyBhcnJheUluZm9ybWF0aW9uVHlwZSBzaG91bGQgbm90IGJlIHNldCBmb3IgYnVpbHRJbiBzeW1i
b2wgdGFibGUgbGV2ZWwKLSAgICB9Ci0KLSAgICBUVHlwZSogY2xvbmUoVFN0cnVjdHVyZU1hcCYg
cmVtYXBwZXIpCisgICAgVFR5cGUoVFN0cnVjdHVyZSogdXNlckRlZiwgVFByZWNpc2lvbiBwID0g
RWJwVW5kZWZpbmVkKSA6CisgICAgICAgICAgICB0eXBlKEVidFN0cnVjdCksIHByZWNpc2lvbihw
KSwgcXVhbGlmaWVyKEV2cVRlbXBvcmFyeSksIHNpemUoMSksIG1hdHJpeChmYWxzZSksIGFycmF5
KGZhbHNlKSwgYXJyYXlTaXplKDApLCBzdHJ1Y3R1cmUodXNlckRlZikKICAgICB7Ci0gICAgICAg
IFRUeXBlICpuZXdUeXBlID0gbmV3IFRUeXBlKCk7Ci0gICAgICAgIG5ld1R5cGUtPmNvcHlUeXBl
KCp0aGlzLCByZW1hcHBlcik7Ci0KLSAgICAgICAgcmV0dXJuIG5ld1R5cGU7CiAgICAgfQogCiAg
ICAgVEJhc2ljVHlwZSBnZXRCYXNpY1R5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlOyB9CkBAIC0x
MTksMjIgKzExOCw3IEBAIHB1YmxpYzoKICAgICBpbnQgZ2V0Tm9taW5hbFNpemUoKSBjb25zdCB7
IHJldHVybiBzaXplOyB9CiAgICAgdm9pZCBzZXROb21pbmFsU2l6ZShpbnQgcykgeyBzaXplID0g
czsgfQogICAgIC8vIEZ1bGwgc2l6ZSBvZiBzaW5nbGUgaW5zdGFuY2Ugb2YgdHlwZQotICAgIGlu
dCBnZXRPYmplY3RTaXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGludCB0b3RhbFNpemU7Ci0K
LSAgICAgICAgaWYgKGdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkKLSAgICAgICAgICAgIHRv
dGFsU2l6ZSA9IGdldFN0cnVjdFNpemUoKTsKLSAgICAgICAgZWxzZSBpZiAobWF0cml4KQotICAg
ICAgICAgICAgdG90YWxTaXplID0gc2l6ZSAqIHNpemU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHRvdGFsU2l6ZSA9IHNpemU7Ci0KLSAgICAgICAgaWYgKGlzQXJyYXkoKSkKLSAgICAgICAg
ICAgIHRvdGFsU2l6ZSAqPSBzdGQ6Om1heChnZXRBcnJheVNpemUoKSwgZ2V0TWF4QXJyYXlTaXpl
KCkpOwotCi0gICAgICAgIHJldHVybiB0b3RhbFNpemU7Ci0gICAgfQorICAgIHNpemVfdCBnZXRP
YmplY3RTaXplKCkgY29uc3Q7CiAKICAgICBib29sIGlzTWF0cml4KCkgY29uc3QgeyByZXR1cm4g
bWF0cml4ID8gdHJ1ZSA6IGZhbHNlOyB9CiAgICAgdm9pZCBzZXRNYXRyaXgoYm9vbCBtKSB7IG1h
dHJpeCA9IG07IH0KQEAgLTE0Miw0NyArMTI2LDIwIEBAIHB1YmxpYzoKICAgICBib29sIGlzQXJy
YXkoKSBjb25zdCAgeyByZXR1cm4gYXJyYXkgPyB0cnVlIDogZmFsc2U7IH0KICAgICBpbnQgZ2V0
QXJyYXlTaXplKCkgY29uc3QgeyByZXR1cm4gYXJyYXlTaXplOyB9CiAgICAgdm9pZCBzZXRBcnJh
eVNpemUoaW50IHMpIHsgYXJyYXkgPSB0cnVlOyBhcnJheVNpemUgPSBzOyB9Ci0gICAgaW50IGdl
dE1heEFycmF5U2l6ZSAoKSBjb25zdCB7IHJldHVybiBtYXhBcnJheVNpemU7IH0KLSAgICB2b2lk
IHNldE1heEFycmF5U2l6ZSAoaW50IHMpIHsgbWF4QXJyYXlTaXplID0gczsgfQotICAgIHZvaWQg
Y2xlYXJBcnJheW5lc3MoKSB7IGFycmF5ID0gZmFsc2U7IGFycmF5U2l6ZSA9IDA7IG1heEFycmF5
U2l6ZSA9IDA7IH0KLSAgICB2b2lkIHNldEFycmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlKiB0KSB7
IGFycmF5SW5mb3JtYXRpb25UeXBlID0gdDsgfQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9ybWF0
aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGFycmF5SW5mb3JtYXRpb25UeXBlOyB9CisgICAgdm9p
ZCBjbGVhckFycmF5bmVzcygpIHsgYXJyYXkgPSBmYWxzZTsgYXJyYXlTaXplID0gMDsgfQogCiAg
ICAgYm9vbCBpc1ZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIHNpemUgPiAxICYmICFtYXRyaXg7IH0K
ICAgICBib29sIGlzU2NhbGFyKCkgY29uc3QgeyByZXR1cm4gc2l6ZSA9PSAxICYmICFtYXRyaXgg
JiYgIXN0cnVjdHVyZTsgfQogCi0gICAgVFR5cGVMaXN0KiBnZXRTdHJ1Y3QoKSBjb25zdCB7IHJl
dHVybiBzdHJ1Y3R1cmU7IH0KLSAgICB2b2lkIHNldFN0cnVjdChUVHlwZUxpc3QqIHMpIHsgc3Ry
dWN0dXJlID0gczsgY29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCk7IH0KLQotICAgIGNvbnN0
IFRTdHJpbmcmIGdldFR5cGVOYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGFzc2VydCh0eXBl
TmFtZSk7Ci0gICAgICAgIHJldHVybiAqdHlwZU5hbWU7Ci0gICAgfQotICAgIHZvaWQgc2V0VHlw
ZU5hbWUoY29uc3QgVFN0cmluZyYgbikKLSAgICB7Ci0gICAgICAgIHR5cGVOYW1lID0gTmV3UG9v
bFRTdHJpbmcobi5jX3N0cigpKTsKLSAgICB9Ci0KLSAgICBib29sIGlzRmllbGQoKSBjb25zdCB7
IHJldHVybiBmaWVsZE5hbWUgIT0gMDsgfQotICAgIGNvbnN0IFRTdHJpbmcmIGdldEZpZWxkTmFt
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBhc3NlcnQoZmllbGROYW1lKTsKLSAgICAgICAgcmV0
dXJuICpmaWVsZE5hbWU7Ci0gICAgfQotICAgIHZvaWQgc2V0RmllbGROYW1lKGNvbnN0IFRTdHJp
bmcmIG4pCi0gICAgewotICAgICAgICBmaWVsZE5hbWUgPSBOZXdQb29sVFN0cmluZyhuLmNfc3Ry
KCkpOwotICAgIH0KKyAgICBUU3RydWN0dXJlKiBnZXRTdHJ1Y3QoKSBjb25zdCB7IHJldHVybiBz
dHJ1Y3R1cmU7IH0KKyAgICB2b2lkIHNldFN0cnVjdChUU3RydWN0dXJlKiBzKSB7IHN0cnVjdHVy
ZSA9IHM7IH0KIAotICAgIFRTdHJpbmcmIGdldE1hbmdsZWROYW1lKCkgewotICAgICAgICBpZiAo
IW1hbmdsZWQpIHsKLSAgICAgICAgICAgIG1hbmdsZWQgPSBOZXdQb29sVFN0cmluZygiIik7Ci0g
ICAgICAgICAgICBidWlsZE1hbmdsZWROYW1lKCptYW5nbGVkKTsKLSAgICAgICAgICAgICptYW5n
bGVkICs9ICc7JyA7CisgICAgY29uc3QgVFN0cmluZyYgZ2V0TWFuZ2xlZE5hbWUoKSBjb25zdCB7
CisgICAgICAgIGlmIChtYW5nbGVkLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIG1hbmdsZWQgPSBi
dWlsZE1hbmdsZWROYW1lKCk7CisgICAgICAgICAgICBtYW5nbGVkICs9ICc7JzsKICAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiAqbWFuZ2xlZDsKKyAgICAgICAgcmV0dXJuIG1hbmdsZWQ7CiAg
ICAgfQogCiAgICAgYm9vbCBzYW1lRWxlbWVudFR5cGUoY29uc3QgVFR5cGUmIHJpZ2h0KSBjb25z
dCB7CkBAIC0yMzAsMzIgKzE4NywzNCBAQCBwdWJsaWM6CiAgICAgLy8gRm9yIHR5cGUgIm5lc3Rp
bmcyIiwgdGhpcyBtZXRob2Qgd291bGQgcmV0dXJuIDIgLS0gdGhlIG51bWJlcgogICAgIC8vIG9m
IHN0cnVjdHVyZXMgdGhyb3VnaCB3aGljaCBpbmRpcmVjdGlvbiBtdXN0IG9jY3VyIHRvIHJlYWNo
IHRoZQogICAgIC8vIGRlZXBlc3QgZmllbGQgKG5lc3RpbmcyLmZpZWxkMS5wb3NpdGlvbikuCi0g
ICAgaW50IGdldERlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gZGVlcGVzdFN0
cnVjdE5lc3Rpbmc7IH0KKyAgICBpbnQgZ2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSBjb25zdCB7
CisgICAgICAgIHJldHVybiBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmRlZXBlc3ROZXN0aW5nKCkg
OiAwOworICAgIH0KIAotICAgIGJvb2wgaXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkgY29u
c3Q7CisgICAgYm9vbCBpc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSBjb25zdCB7CisgICAg
ICAgIHJldHVybiBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmNvbnRhaW5zQXJyYXlzKCkgOiBmYWxz
ZTsKKyAgICB9CiAKLXByb3RlY3RlZDoKLSAgICB2b2lkIGJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmlu
ZyYpOwotICAgIGludCBnZXRTdHJ1Y3RTaXplKCkgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlRGVl
cGVzdFN0cnVjdE5lc3RpbmcoKTsKK3ByaXZhdGU6CisgICAgVFN0cmluZyBidWlsZE1hbmdsZWRO
YW1lKCkgY29uc3Q7CiAKKyNpZmRlZiBfX0dOVUNfXworICAgIFRCYXNpY1R5cGUgdHlwZTsKKyAg
ICBUUHJlY2lzaW9uIHByZWNpc2lvbjsKKyAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKKyNlbHNl
CiAgICAgVEJhc2ljVHlwZSB0eXBlICAgICAgOiA2OwogICAgIFRQcmVjaXNpb24gcHJlY2lzaW9u
OwogICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyIDogNzsKKyNlbmRpZgogICAgIGludCBzaXplICAg
ICAgICAgICAgIDogODsgLy8gc2l6ZSBvZiB2ZWN0b3Igb3IgbWF0cml4LCBub3Qgc2l6ZSBvZiBh
cnJheQogICAgIHVuc2lnbmVkIGludCBtYXRyaXggIDogMTsKICAgICB1bnNpZ25lZCBpbnQgYXJy
YXkgICA6IDE7CiAgICAgaW50IGFycmF5U2l6ZTsKLSAgICBpbnQgbWF4QXJyYXlTaXplOwotICAg
IFRUeXBlKiBhcnJheUluZm9ybWF0aW9uVHlwZTsKIAotICAgIFRUeXBlTGlzdCogc3RydWN0dXJl
OyAgICAgIC8vIDAgdW5sZXNzIHRoaXMgaXMgYSBzdHJ1Y3QKLSAgICBtdXRhYmxlIGludCBzdHJ1
Y3R1cmVTaXplOwotICAgIGludCBkZWVwZXN0U3RydWN0TmVzdGluZzsKLQotICAgIFRTdHJpbmcg
KmZpZWxkTmFtZTsgICAgICAgICAvLyBmb3Igc3RydWN0dXJlIGZpZWxkIG5hbWVzCi0gICAgVFN0
cmluZyAqbWFuZ2xlZDsKLSAgICBUU3RyaW5nICp0eXBlTmFtZTsgICAgICAgICAgLy8gZm9yIHN0
cnVjdHVyZSBmaWVsZCB0eXBlIG5hbWUKKyAgICBUU3RydWN0dXJlKiBzdHJ1Y3R1cmU7ICAgICAg
Ly8gMCB1bmxlc3MgdGhpcyBpcyBhIHN0cnVjdAorCisgICAgbXV0YWJsZSBUU3RyaW5nIG1hbmds
ZWQ7CiB9OwogCiAvLwpAQCAtMjc3LDkgKzIzNiw5IEBAIHN0cnVjdCBUUHVibGljVHlwZQogICAg
IGJvb2wgYXJyYXk7CiAgICAgaW50IGFycmF5U2l6ZTsKICAgICBUVHlwZSogdXNlckRlZjsKLSAg
ICBpbnQgbGluZTsKKyAgICBUU291cmNlTG9jIGxpbmU7CiAKLSAgICB2b2lkIHNldEJhc2ljKFRC
YXNpY1R5cGUgYnQsIFRRdWFsaWZpZXIgcSwgaW50IGxuID0gMCkKKyAgICB2b2lkIHNldEJhc2lj
KFRCYXNpY1R5cGUgYnQsIFRRdWFsaWZpZXIgcSwgY29uc3QgVFNvdXJjZUxvYyYgbG4pCiAgICAg
ewogICAgICAgICB0eXBlID0gYnQ7CiAgICAgICAgIHF1YWxpZmllciA9IHE7CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZv
LmNwcAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxMiArMTMxLDEz
IEBAIHZvaWQgZ2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8oY29uc3QgVFQKIHsKICAgICBBU1NF
UlQodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpOwogCi0gICAgY29uc3QgVFR5cGVM
aXN0KiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBUVHlwZSogZmll
bGRUeXBlID0gKCpzdHJ1Y3R1cmUpW2ldLnR5cGU7Ci0gICAgICAgIGdldFZhcmlhYmxlSW5mbygq
ZmllbGRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArICIuIiArIGZpZWxkVHlw
ZS0+Z2V0RmllbGROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXBwZWROYW1lICsg
Ii4iICsgVEludGVybVRyYXZlcnNlcjo6aGFzaChmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpLCBo
YXNoRnVuY3Rpb24pLAorICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHR5cGUuZ2V0U3Ry
dWN0KCktPmZpZWxkcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRUeXBlJiBmaWVsZFR5cGUgPSAqKGZpZWxkc1tpXS0+
dHlwZSgpKTsKKyAgICAgICAgY29uc3QgVFN0cmluZyYgZmllbGROYW1lID0gZmllbGRzW2ldLT5u
YW1lKCk7CisgICAgICAgIGdldFZhcmlhYmxlSW5mbyhmaWVsZFR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lICsgIi4iICsgZmllbGROYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbWFwcGVkTmFtZSArICIuIiArIFRJbnRlcm1UcmF2ZXJzZXI6Omhhc2goZmllbGROYW1lLCBo
YXNoRnVuY3Rpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgaW5mb0xpc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBoYXNoRnVuY3Rpb24pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3lt
Ym9sX3RhYmxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyODkgQEAKKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlX2J1aWx0aW5fc3ltYm9sX3RhYmxlLnB5LgorLy8gICAgICAgICAgICAg
ICAgICogRE8gTk9UIEhBTkQgTU9ESUZZICoKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpbmNsdWRlICJjb21waWxlci9i
dWlsdGluX3N5bWJvbF90YWJsZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgi
CisKK3N0YXRpYyB2b2lkIGJ1aWx0aW4xKFRTeW1ib2xUYWJsZSogdCwgVFR5cGUqIHJ2YWx1ZSwg
Y29uc3QgY2hhciogbmFtZSwgVFR5cGUqIHB0eXBlMSwgY29uc3QgY2hhciogcG5hbWUxKQorewor
ICBURnVuY3Rpb24qIGYgPSBuZXcgVEZ1bmN0aW9uKG5ldyBUU3RyaW5nKG5hbWUpLCAqcnZhbHVl
KTsKKyAgVFBhcmFtZXRlciBwYXJhbSA9IHtuZXcgVFN0cmluZyhwbmFtZTEpLCBwdHlwZTF9Owor
ICBmLT5hZGRQYXJhbWV0ZXIocGFyYW0pOworICB0LT5pbnNlcnQoKmYpOworfQorCitzdGF0aWMg
dm9pZCBidWlsdGluMihUU3ltYm9sVGFibGUqIHQsIFRUeXBlKiBydmFsdWUsIGNvbnN0IGNoYXIq
IG5hbWUsIFRUeXBlKiBwdHlwZTEsIGNvbnN0IGNoYXIqIHBuYW1lMSwgVFR5cGUqIHB0eXBlMiwg
Y29uc3QgY2hhciogcG5hbWUyKQoreworICBURnVuY3Rpb24qIGYgPSBuZXcgVEZ1bmN0aW9uKG5l
dyBUU3RyaW5nKG5hbWUpLCAqcnZhbHVlKTsKKyAgVFBhcmFtZXRlciBwYXJhbTEgPSB7bmV3IFRT
dHJpbmcocG5hbWUxKSwgcHR5cGUxfTsKKyAgZi0+YWRkUGFyYW1ldGVyKHBhcmFtMSk7CisgIFRQ
YXJhbWV0ZXIgcGFyYW0yID0ge25ldyBUU3RyaW5nKHBuYW1lMiksIHB0eXBlMn07CisgIGYtPmFk
ZFBhcmFtZXRlcihwYXJhbTIpOworICB0LT5pbnNlcnQoKmYpOworfQorCitzdGF0aWMgdm9pZCBi
dWlsdGluMyhUU3ltYm9sVGFibGUqIHQsIFRUeXBlKiBydmFsdWUsIGNvbnN0IGNoYXIqIG5hbWUs
IFRUeXBlKiBwdHlwZTEsIGNvbnN0IGNoYXIqIHBuYW1lMSwgVFR5cGUqIHB0eXBlMiwgY29uc3Qg
Y2hhciogcG5hbWUyLCBUVHlwZSogcHR5cGUzLCBjb25zdCBjaGFyKiBwbmFtZTMpCit7CisgIFRG
dW5jdGlvbiogZiA9IG5ldyBURnVuY3Rpb24obmV3IFRTdHJpbmcobmFtZSksICpydmFsdWUpOwor
ICBUUGFyYW1ldGVyIHBhcmFtMSA9IHtuZXcgVFN0cmluZyhwbmFtZTEpLCBwdHlwZTF9OworICBm
LT5hZGRQYXJhbWV0ZXIocGFyYW0xKTsKKyAgVFBhcmFtZXRlciBwYXJhbTIgPSB7bmV3IFRTdHJp
bmcocG5hbWUyKSwgcHR5cGUyfTsKKyAgZi0+YWRkUGFyYW1ldGVyKHBhcmFtMik7CisgIFRQYXJh
bWV0ZXIgcGFyYW0zID0ge25ldyBUU3RyaW5nKHBuYW1lMyksIHB0eXBlM307CisgIGYtPmFkZFBh
cmFtZXRlcihwYXJhbTMpOworICB0LT5pbnNlcnQoKmYpOworfQorCit2b2lkIEluc2VydEJ1aWx0
SW5GdW5jdGlvbnNDb21tb24oY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsIFRT
eW1ib2xUYWJsZSogdCkgeworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImRlZ3JlZXMiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmFkaWFucyIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJkZWdy
ZWVzIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIp
OworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIik7CisgICAgYnVp
bHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmFkaWFucyIpOworICAgIGJ1aWx0aW4x
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJkZWdyZWVzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAiZGVncmVlcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
InNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJzaW4iLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAic2luIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0
aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAiY29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNvcyIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJjb3MiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAidGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVp
bHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgInRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGFuIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFzaW4iLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIp
OworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhc2luIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAiYXNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImFz
aW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhY29zIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYWNvcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRp
bjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgImFjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJh
Y29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
IngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5X292ZXJfeCIpOwor
ICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJhdGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInlfb3Zlcl94Iik7CisgICAgYnVp
bHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgImF0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieV9vdmVyX3giKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5X292ZXJfeCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJwb3ciLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInBv
dyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicG93Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJwb3ciLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4
Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRp
bjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImV4
cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxvZyIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV4cDIiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOwor
ICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJleHAyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAiZXhwMiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImV4cDIi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJsb2cyIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibG9nMiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgImxvZzIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJsb2cy
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic3FydCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInNxcnQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4x
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJzcXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAic3Fy
dCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImludmVyc2VzcXJ0IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiaW52ZXJzZXNxcnQiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIp
OworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJpbnZlcnNlc3FydCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgImludmVyc2VzcXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYWJz
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAic2lnbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInNpZ24i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJzaWduIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAic2lnbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImZsb29yIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZmxv
b3IiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJmbG9vciIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4
Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImZsb29yIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWls
dGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAiY2VpbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
ImNlaWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjZWlsIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
IngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY2VpbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVp
bHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAiZnJhY3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJmcmFjdCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImZyYWN0IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIs
IGZhbHNlLCBmYWxzZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIm1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
Im1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibW9k
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1pbiIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWluIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1pbiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
InkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWluIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIp
OworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7Cisg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBi
dWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSks
ICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1h
eCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiY2xhbXAi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFsIik7CisgICAgYnVpbHRp
bjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWluVmFsIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1h
eFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
Im1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY2xhbXAi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFsIik7CisgICAgYnVpbHRp
bjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWluVmFsIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1h
eFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
Im1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY2xhbXAi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibWF4VmFsIik7CisgICAgYnVpbHRp
bjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYSIpOworICAg
IGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJtaXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImEi
KTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWl4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
InkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAiYSIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJtaXgiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgImEiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWl4IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1p
eCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4zKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UxIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic21vb3Roc3RlcCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJlZGdlMCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInNtb290aHN0
ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0
aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UxIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic21vb3Roc3RlcCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJl
ZGdlMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
InNtb290aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOwor
ICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZGlz
dGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
ZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBidWlsdGluMih0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAiZG90IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJkb3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImRvdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZG90
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjcm9zcyIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXpl
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
IngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
Myh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIk5y
ZWYiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndh
cmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWlsdGluMyh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIk5yZWYi
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIk4i
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIk4i
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIk4i
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIk4i
KTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicmVmcmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIk4i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAiZXRhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInJlZnJhY3QiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
SSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJOIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgImV0YSIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJyZWZy
YWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJldGEiKTsKKyAgICBidWlsdGluMyh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAicmVmcmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIk4iLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZXRhIik7Cisg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgdHJ1ZSwgZmFsc2UpLCAibWF0cml4Q29tcE11bHQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCB0cnVlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgdHJ1ZSwgZmFsc2UpLCAieSIp
OworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIHRydWUsIGZhbHNlKSwgIm1hdHJpeENvbXBNdWx0IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgdHJ1ZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIHRydWUsIGZhbHNlKSwg
InkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCB0cnVlLCBmYWxzZSksICJtYXRyaXhDb21wTXVsdCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIHRydWUsIGZhbHNlKSwgIngiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCB0cnVlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0
SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcg
VFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
InkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbiIsIG5ldyBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIp
OworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuIiwgbmV3IFRUeXBlKEVidEludCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVi
dEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7Cisg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInki
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuRXF1YWwiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW5FcXVhbCIsIG5ldyBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
eCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuRXF1YWwiLCBuZXcg
VFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
IngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbkVxdWFsIiwgbmV3
IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW4iLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW4iLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW4i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRo
YW4iLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhh
biIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFu
IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW5F
cXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJncmVh
dGVyVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0
SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBl
KEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7
CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7Cisg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAg
YnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVp
bHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJlcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
ImVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwi
LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImVxdWFsIiwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJlcXVhbCIsIG5ldyBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngi
LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUo
RWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBu
ZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBUVHlwZShFYnRJ
bnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
eSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBl
KEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7
CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOwor
ICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAiYW55IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImFueSIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhbnkiLCBuZXcgVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYWxsIiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQs
IG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgImFsbCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhbGwiLCBuZXcg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0
aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIm5vdCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJub3Qi
LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRCIsIG5ldyBUVHlw
ZShFYnRTYW1wbGVyMkQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0
dXJlMkRQcm9qIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNvb3JkIik7CisgICAgYnVp
bHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFByb2oiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJELCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAiY29vcmQiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZUN1YmUiLCBuZXcgVFR5
cGUoRWJ0U2FtcGxlckN1YmUsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIGlmIChyZXNvdXJjZXMuT0VTX0VH
TF9pbWFnZV9leHRlcm5hbCkgeworICAgICAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJE
IiwgbmV3IFRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUywgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIik7CisgICAgfQor
ICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCkgeworICAgICAgICBidWls
dGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBm
YWxzZSwgZmFsc2UpLCAidGV4dHVyZTJEUHJvaiIsIG5ldyBUVHlwZShFYnRTYW1wbGVyRXh0ZXJu
YWxPRVMsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxl
ciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJjb29yZCIpOworICAgIH0KKyAgICBpZiAocmVzb3VyY2VzLk9FU19FR0xfaW1h
Z2VfZXh0ZXJuYWwpIHsKKyAgICAgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFByb2oi
LCBuZXcgVFR5cGUoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAgICB9Cisg
ICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKKyAgICAgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgInRleHR1cmUyRFJlY3QiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJEUmVjdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgImNvb3JkIik7CisgICAgfQorICAgIGlmIChyZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFu
Z2xlKSB7CisgICAgICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRSZWN0UHJvaiIsIG5l
dyBUVHlwZShFYnRTYW1wbGVyMkRSZWN0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAgICB9CisgICAgaWYgKHJl
c291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKKyAgICAgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgInRleHR1cmUyRFJlY3RQcm9qIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRFJlY3QsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJj
b29yZCIpOworICAgIH0KK30KKwordm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KGNv
bnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLCBUU3ltYm9sVGFibGUqIHQpIHsKKyAg
ICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJETG9kIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIy
RCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0
dXJlMkRQcm9qTG9kIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImxvZCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRQcm9qTG9kIiwgbmV3IFRU
eXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOworICAgIGJ1aWx0aW4z
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ0ZXh0dXJlQ3ViZUxvZCIsIG5ldyBUVHlwZShFYnRTYW1wbGVyQ3ViZSwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
ImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImxvZCIpOworfQorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWls
dGluX3N5bWJvbF90YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisjaWZuZGVmIF9CVUlMVElOX1NZTUJPTF9UQUJMRV9JTkNMVURFRF8KKyNk
ZWZpbmUgX0JVSUxUSU5fU1lNQk9MX1RBQkxFX0lOQ0xVREVEXworCisjaW5jbHVkZSAiR0xTTEFO
Ry9TaGFkZXJMYW5nLmgiCisKK2NsYXNzIFRTeW1ib2xUYWJsZTsKKworZXh0ZXJuIHZvaWQgSW5z
ZXJ0QnVpbHRJbkZ1bmN0aW9uc0NvbW1vbihjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291
cmNlcywgVFN5bWJvbFRhYmxlKiB0KTsKK2V4dGVybiB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlv
bnNWZXJ0ZXgoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsIFRTeW1ib2xUYWJs
ZSogdCk7CisKKyNlbmRpZiAvLyBfQlVJTFRJTl9TWU1CT0xfVEFCTEVfSU5DTFVERURfCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwJKHJl
dmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9n
bHNsYW5nLmwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDEwIEBAIFdISUNIIEdFTkVSQVRF
UyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDEw
MikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZhbC0+bGV4LmxpbmUgPSB5
eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9maWxlID0geXlsbG9jLT5sYXN0X2ZpbGUgPSB5
eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGxvYy0+bGFzdF9saW5lID0g
eXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1heF9zaXplKSBcCiAg
ICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5c2Nhbm5lcik7CiAKQEAg
LTU3LDEwICs2MCw4IEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW4K
ICV9CiAKICVvcHRpb24gbm95eXdyYXAgbm91bnB1dCBuZXZlci1pbnRlcmFjdGl2ZQotJW9wdGlv
biB5eWxpbmVubyByZWVudHJhbnQgYmlzb24tYnJpZGdlCi0lb3B0aW9uIHN0YWNrCislb3B0aW9u
IHl5bGluZW5vIHJlZW50cmFudCBiaXNvbi1icmlkZ2UgYmlzb24tbG9jYXRpb25zCiAlb3B0aW9u
IGV4dHJhLXR5cGU9IlRQYXJzZUNvbnRleHQqIgotJXggQ09NTUVOVCBGSUVMRFMKIAogRCAgICAg
ICAgICAgWzAtOV0KIEwgICAgICAgICAgIFthLXpBLVpfXQpAQCAtNzAsNzMgKzcxLDYwIEBAIE8g
ICAgICAgICAgIFswLTddCiAKICUlCiAKLSV7Ci0gICAgVFBhcnNlQ29udGV4dCogY29udGV4dCA9
IHl5ZXh0cmE7Ci0lfQotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMgKi8KLSIvLyJbXlxu
XSogOworImludmFyaWFudCIgICAgeyByZXR1cm4gSU5WQVJJQU5UOyB9CisiaGlnaHAiICAgICAg
ICB7IHJldHVybiBISUdIX1BSRUNJU0lPTjsgfQorIm1lZGl1bXAiICAgICAgeyByZXR1cm4gTUVE
SVVNX1BSRUNJU0lPTjsgfQorImxvd3AiICAgICAgICAgeyByZXR1cm4gTE9XX1BSRUNJU0lPTjsg
fQorInByZWNpc2lvbiIgICAgeyByZXR1cm4gUFJFQ0lTSU9OOyB9CisKKyJhdHRyaWJ1dGUiICAg
IHsgcmV0dXJuIEFUVFJJQlVURTsgfQorImNvbnN0IiAgICAgICAgeyByZXR1cm4gQ09OU1RfUVVB
TDsgfQorInVuaWZvcm0iICAgICAgeyByZXR1cm4gVU5JRk9STTsgfQorInZhcnlpbmciICAgICAg
eyByZXR1cm4gVkFSWUlORzsgfQorCisiYnJlYWsiICAgICAgICB7IHJldHVybiBCUkVBSzsgfQor
ImNvbnRpbnVlIiAgICAgeyByZXR1cm4gQ09OVElOVUU7IH0KKyJkbyIgICAgICAgICAgIHsgcmV0
dXJuIERPOyB9CisiZm9yIiAgICAgICAgICB7IHJldHVybiBGT1I7IH0KKyJ3aGlsZSIgICAgICAg
IHsgcmV0dXJuIFdISUxFOyB9CisKKyJpZiIgICAgICAgICAgIHsgcmV0dXJuIElGOyB9CisiZWxz
ZSIgICAgICAgICB7IHJldHVybiBFTFNFOyB9CisKKyJpbiIgICAgICAgICAgIHsgcmV0dXJuIElO
X1FVQUw7IH0KKyJvdXQiICAgICAgICAgIHsgcmV0dXJuIE9VVF9RVUFMOyB9CisiaW5vdXQiICAg
ICAgICB7IHJldHVybiBJTk9VVF9RVUFMOyB9CisKKyJmbG9hdCIgICAgICAgIHsgcmV0dXJuIEZM
T0FUX1RZUEU7IH0KKyJpbnQiICAgICAgICAgIHsgcmV0dXJuIElOVF9UWVBFOyB9Cisidm9pZCIg
ICAgICAgICB7IHJldHVybiBWT0lEX1RZUEU7IH0KKyJib29sIiAgICAgICAgIHsgcmV0dXJuIEJP
T0xfVFlQRTsgfQorInRydWUiICAgICAgICAgeyB5eWx2YWwtPmxleC5iID0gdHJ1ZTsgIHJldHVy
biBCT09MQ09OU1RBTlQ7IH0KKyJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZhbHNl
OyByZXR1cm4gQk9PTENPTlNUQU5UOyB9CisKKyJkaXNjYXJkIiAgICAgIHsgcmV0dXJuIERJU0NB
UkQ7IH0KKyJyZXR1cm4iICAgICAgIHsgcmV0dXJuIFJFVFVSTjsgfQorCisibWF0MiIgICAgICAg
ICB7IHJldHVybiBNQVRSSVgyOyB9CisibWF0MyIgICAgICAgICB7IHJldHVybiBNQVRSSVgzOyB9
CisibWF0NCIgICAgICAgICB7IHJldHVybiBNQVRSSVg0OyB9CisKKyJ2ZWMyIiAgICAgICAgIHsg
cmV0dXJuIFZFQzI7IH0KKyJ2ZWMzIiAgICAgICAgIHsgcmV0dXJuIFZFQzM7IH0KKyJ2ZWM0IiAg
ICAgICAgIHsgcmV0dXJuIFZFQzQ7IH0KKyJpdmVjMiIgICAgICAgIHsgcmV0dXJuIElWRUMyOyB9
CisiaXZlYzMiICAgICAgICB7IHJldHVybiBJVkVDMzsgfQorIml2ZWM0IiAgICAgICAgeyByZXR1
cm4gSVZFQzQ7IH0KKyJidmVjMiIgICAgICAgIHsgcmV0dXJuIEJWRUMyOyB9CisiYnZlYzMiICAg
ICAgICB7IHJldHVybiBCVkVDMzsgfQorImJ2ZWM0IiAgICAgICAgeyByZXR1cm4gQlZFQzQ7IH0K
KworInNhbXBsZXIyRCIgICAgICAgICAgeyByZXR1cm4gU0FNUExFUjJEOyB9Cisic2FtcGxlckN1
YmUiICAgICAgICB7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQorInNhbXBsZXJFeHRlcm5hbE9FUyIg
eyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KKyJzYW1wbGVyMkRSZWN0IiAgICAgIHsg
cmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAotICAgIC8qIE11bHRpLWxpbmUgY29tbWVudHMgKi8K
LSIvKiIgICAgICAgICAgIHsgeXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9Ci08
Q09NTUVOVD4uIHwKLTxDT01NRU5UPlxuIDsKLTxDT01NRU5UPiIqLyIgIHsgeXlfcG9wX3N0YXRl
KHl5c2Nhbm5lcik7IH0KLQotImludmFyaWFudCIgICAgeyByZXR1cm4oSU5WQVJJQU5UKTsgfQot
ImhpZ2hwIiAgICAgICAgeyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Ci0ibWVkaXVtcCIgICAg
ICB7IHJldHVybihNRURJVU1fUFJFQ0lTSU9OKTsgfQotImxvd3AiICAgICAgICAgeyByZXR1cm4o
TE9XX1BSRUNJU0lPTik7IH0KLSJwcmVjaXNpb24iICAgIHsgcmV0dXJuKFBSRUNJU0lPTik7IH0K
LQotImF0dHJpYnV0ZSIgICAgeyByZXR1cm4oQVRUUklCVVRFKTsgfQotImNvbnN0IiAgICAgICAg
eyByZXR1cm4oQ09OU1RfUVVBTCk7IH0KLSJ1bmlmb3JtIiAgICAgIHsgcmV0dXJuKFVOSUZPUk0p
OyB9Ci0idmFyeWluZyIgICAgICB7IHJldHVybihWQVJZSU5HKTsgfQotCi0iYnJlYWsiICAgICAg
ICB7IHJldHVybihCUkVBSyk7IH0KLSJjb250aW51ZSIgICAgIHsgcmV0dXJuKENPTlRJTlVFKTsg
fQotImRvIiAgICAgICAgICAgeyByZXR1cm4oRE8pOyB9Ci0iZm9yIiAgICAgICAgICB7IHJldHVy
bihGT1IpOyB9Ci0id2hpbGUiICAgICAgICB7IHJldHVybihXSElMRSk7IH0KLQotImlmIiAgICAg
ICAgICAgeyByZXR1cm4oSUYpOyB9Ci0iZWxzZSIgICAgICAgICB7IHJldHVybihFTFNFKTsgfQot
Ci0iaW4iICAgICAgICAgICB7IHJldHVybihJTl9RVUFMKTsgfQotIm91dCIgICAgICAgICAgeyBy
ZXR1cm4oT1VUX1FVQUwpOyB9Ci0iaW5vdXQiICAgICAgICB7IHJldHVybihJTk9VVF9RVUFMKTsg
fQotCi0iZmxvYXQiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVy
bihGTE9BVF9UWVBFKTsgfQotImludCIgICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4oSU5UX1RZUEUpOyB9Ci0idm9pZCIgICAgICAgICB7IGNvbnRleHQtPmxl
eEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihWT0lEX1RZUEUpOyB9Ci0iYm9vbCIgICAgICAgICB7
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihCT09MX1RZUEUpOyB9Ci0idHJ1
ZSIgICAgICAgICB7IHl5bHZhbC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuKEJPT0xDT05TVEFOVCk7
IH0KLSJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyByZXR1cm4oQk9PTENP
TlNUQU5UKTsgfQotCi0iZGlzY2FyZCIgICAgICB7IHJldHVybihESVNDQVJEKTsgfQotInJldHVy
biIgICAgICAgeyByZXR1cm4oUkVUVVJOKTsgfQotCi0ibWF0MiIgICAgICAgICB7IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVgyKTsgfQotIm1hdDMiICAgICAgICAg
eyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMyk7IH0KLSJtYXQ0
IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJWDQp
OyB9Ci0KLSJ2ZWMyIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuIChWRUMyKTsgfQotInZlYzMiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0
cnVlOyByZXR1cm4gKFZFQzMpOyB9Ci0idmVjNCIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVy
VHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KLSJpdmVjMiIgICAgICAgIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMik7IH0KLSJpdmVjMyIgICAgICAgIHsg
Y29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMyk7IH0KLSJpdmVjNCIg
ICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDNCk7IH0K
LSJidmVjMiIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChC
VkVDMik7IH0KLSJidmVjMyIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsg
cmV0dXJuIChCVkVDMyk7IH0KLSJidmVjNCIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KLQotInNhbXBsZXIyRCIgICAgICAgeyBjb250ZXh0
LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Ci0ic2FtcGxlckN1YmUi
ICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSQ1VCRTsg
fQotInNhbXBsZXJFeHRlcm5hbE9FUyIgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyBy
ZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KLSJzYW1wbGVyMkRSZWN0IiB7IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9Ci0KLSJzdHJ1Y3Qi
ICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKFNUUlVDVCk7IH0K
KyJzdHJ1Y3QiICAgICAgIHsgcmV0dXJuIFNUUlVDVDsgfQogCiAiYXNtIiAgICAgICAgICB7IHJl
dHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIApAQCAtMTgzLDEzICsxNzEsMTEgQEAg
TyAgICAgICAgICAgWzAtN10KICJmdmVjMyIgICAgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQo
eXlzY2FubmVyKTsgfQogImZ2ZWM0IiAgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNj
YW5uZXIpOyB9CiAKLSJzYW1wbGVyMUQiICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2Fu
bmVyKTsgfQotInNhbXBsZXIzRCIgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIp
OyB9Ci0KLSJzYW1wbGVyMURTaGFkb3ciIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVy
KTsgfQotInNhbXBsZXIyRFNoYWRvdyIgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIp
OyB9Ci0KLSJzYW1wbGVyM0RSZWN0IiB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7
IH0KKyJzYW1wbGVyMUQiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5l
cik7IH0KKyJzYW1wbGVyM0QiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nh
bm5lcik7IH0KKyJzYW1wbGVyMURTaGFkb3ciICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5
c2Nhbm5lcik7IH0KKyJzYW1wbGVyMkRTaGFkb3ciICAgICB7IHJldHVybiByZXNlcnZlZF93b3Jk
KHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0RSZWN0IiAgICAgICB7IHJldHVybiByZXNlcnZlZF93
b3JkKHl5c2Nhbm5lcik7IH0KICJzYW1wbGVyMkRSZWN0U2hhZG93IiB7IHJldHVybiByZXNlcnZl
ZF93b3JkKHl5c2Nhbm5lcik7IH0KIAogInNpemVvZiIgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRf
d29yZCh5eXNjYW5uZXIpOyB9CkBAIC0yMDMsNzIgKzE4OSw2NCBAQCBPICAgICAgICAgICBbMC03
XQogICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKIH0KIAotMFt4WF17SH0rICAgICAg
ICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAw
KSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KLTB7T30rICAgICAgICAgICAgIHsgeXlsdmFsLT5s
ZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5U
Q09OU1RBTlQpOyB9Ci0we0R9KyAgICAgICAgICAgICB7IGNvbnRleHQtPmVycm9yKHl5bGluZW5v
LCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+cmVjb3ZlcigpOyBy
ZXR1cm4gMDt9Ci17RH0rICAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQotCi17
RH0re0V9ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRv
Zl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQote0R9KyIuIntEfSooe0V9
KT8geyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkp
OyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KLSIuIntEfSsoe0V9KT8gICAgIHsgeXlsdmFsLT5s
ZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FU
Q09OU1RBTlQpOyB9Ci0KLSIrPSIgICAgICAgICAgICB7ICByZXR1cm4oQUREX0FTU0lHTik7IH0K
LSItPSIgICAgICAgICAgICB7ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KLSIqPSIgICAgICAgICAg
ICB7ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KLSIvPSIgICAgICAgICAgICB7ICByZXR1cm4oRElW
X0FTU0lHTik7IH0KLSIlPSIgICAgICAgICAgICB7ICByZXR1cm4oTU9EX0FTU0lHTik7IH0KLSI8
PD0iICAgICAgICAgICB7ICByZXR1cm4oTEVGVF9BU1NJR04pOyB9Ci0iPj49IiAgICAgICAgICAg
eyAgcmV0dXJuKFJJR0hUX0FTU0lHTik7IH0KLSImPSIgICAgICAgICAgICB7ICByZXR1cm4oQU5E
X0FTU0lHTik7IH0KLSJePSIgICAgICAgICAgICB7ICByZXR1cm4oWE9SX0FTU0lHTik7IH0KLSJ8
PSIgICAgICAgICAgICB7ICByZXR1cm4oT1JfQVNTSUdOKTsgfQotCi0iKysiICAgICAgICAgICAg
eyAgcmV0dXJuKElOQ19PUCk7IH0KLSItLSIgICAgICAgICAgICB7ICByZXR1cm4oREVDX09QKTsg
fQotIiYmIiAgICAgICAgICAgIHsgIHJldHVybihBTkRfT1ApOyB9Ci0ifHwiICAgICAgICAgICAg
eyAgcmV0dXJuKE9SX09QKTsgfQotIl5eIiAgICAgICAgICAgIHsgIHJldHVybihYT1JfT1ApOyB9
Ci0iPD0iICAgICAgICAgICAgeyAgcmV0dXJuKExFX09QKTsgfQotIj49IiAgICAgICAgICAgIHsg
IHJldHVybihHRV9PUCk7IH0KLSI9PSIgICAgICAgICAgICB7ICByZXR1cm4oRVFfT1ApOyB9Ci0i
IT0iICAgICAgICAgICAgeyAgcmV0dXJuKE5FX09QKTsgfQotIjw8IiAgICAgICAgICAgIHsgIHJl
dHVybihMRUZUX09QKTsgfQotIj4+IiAgICAgICAgICAgIHsgIHJldHVybihSSUdIVF9PUCk7IH0K
LSI7IiAgICAgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4o
U0VNSUNPTE9OKTsgfQotKCJ7InwiPCUiKSAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
ZmFsc2U7IHJldHVybihMRUZUX0JSQUNFKTsgfQotKCJ9InwiJT4iKSAgICAgIHsgcmV0dXJuKFJJ
R0hUX0JSQUNFKTsgfQotIiwiICAgICAgICAgeyBpZiAoY29udGV4dC0+aW5UeXBlUGFyZW4pIGNv
bnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Ci0iOiIgICAgICAg
ICB7IHJldHVybihDT0xPTik7IH0KLSI9IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gZmFsc2U7IHJldHVybihFUVVBTCk7IH0KLSIoIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0
ZXJUeXBlID0gZmFsc2U7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gdHJ1ZTsgcmV0dXJuKExFRlRf
UEFSRU4pOyB9Ci0iKSIgICAgICAgICB7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gZmFsc2U7IHJl
dHVybihSSUdIVF9QQVJFTik7IH0KLSgiWyJ8Ijw6IikgICAgICB7IHJldHVybihMRUZUX0JSQUNL
RVQpOyB9Ci0oIl0ifCI6PiIpICAgICAgeyByZXR1cm4oUklHSFRfQlJBQ0tFVCk7IH0KLSIuIiAg
ICAgICAgIHsgQkVHSU4oRklFTERTKTsgIHJldHVybihET1QpOyB9Ci0iISIgICAgICAgICB7IHJl
dHVybihCQU5HKTsgfQotIi0iICAgICAgICAgeyByZXR1cm4oREFTSCk7IH0KLSJ+IiAgICAgICAg
IHsgcmV0dXJuKFRJTERFKTsgfQotIisiICAgICAgICAgeyByZXR1cm4oUExVUyk7IH0KLSIqIiAg
ICAgICAgIHsgcmV0dXJuKFNUQVIpOyB9Ci0iLyIgICAgICAgICB7IHJldHVybihTTEFTSCk7IH0K
LSIlIiAgICAgICAgIHsgcmV0dXJuKFBFUkNFTlQpOyB9Ci0iPCIgICAgICAgICB7IHJldHVybihM
RUZUX0FOR0xFKTsgfQotIj4iICAgICAgICAgeyByZXR1cm4oUklHSFRfQU5HTEUpOyB9Ci0ifCIg
ICAgICAgICB7IHJldHVybihWRVJUSUNBTF9CQVIpOyB9Ci0iXiIgICAgICAgICB7IHJldHVybihD
QVJFVCk7IH0KLSImIiAgICAgICAgIHsgcmV0dXJuKEFNUEVSU0FORCk7IH0KLSI/IiAgICAgICAg
IHsgcmV0dXJuKFFVRVNUSU9OKTsgfQotCi08RklFTERTPntMfSh7TH18e0R9KSogeyAKLSAgICBC
RUdJTihJTklUSUFMKTsKLSAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5
eXRleHQpOyAKLSAgICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwotfQotPEZJRUxEUz5bIFx0XHZc
ZlxyXSB7fQotCi1bIFx0XHZcblxmXHJdICAgeyAgfQotPCo+PDxFT0Y+PiAgICAgIHsgY29udGV4
dC0+QWZ0ZXJFT0YgPSB0cnVlOyB5eXRlcm1pbmF0ZSgpOyB9Ci08Kj4uICAgICAgICAgICAgeyBj
b250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBjaGFyIiwgeXl0ZXh0LCAiIik7IHJl
dHVybiAwOyB9CiswW3hYXXtIfSsgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Ciswe099
KyAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5
eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Cit7RH0rICAgICAgICAgICAgICB7
IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsg
cmV0dXJuIElOVENPTlNUQU5UOyB9CisKK3tEfSt7RX0gICAgICAgICAgIHsgeXlsdmFsLT5sZXgu
ZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09O
U1RBTlQ7IH0KK3tEfSsiLiJ7RH0qKHtFfSk/IHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0
PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKyIuIntE
fSsoe0V9KT8gICAgIHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2Rv
dCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKworIis9IiAgICAgICAgICAgIHsg
cmV0dXJuIEFERF9BU1NJR047IH0KKyItPSIgICAgICAgICAgICB7IHJldHVybiBTVUJfQVNTSUdO
OyB9CisiKj0iICAgICAgICAgICAgeyByZXR1cm4gTVVMX0FTU0lHTjsgfQorIi89IiAgICAgICAg
ICAgIHsgcmV0dXJuIERJVl9BU1NJR047IH0KKyIlPSIgICAgICAgICAgICB7IHJldHVybiBNT0Rf
QVNTSUdOOyB9CisiPDw9IiAgICAgICAgICAgeyByZXR1cm4gTEVGVF9BU1NJR047IH0KKyI+Pj0i
ICAgICAgICAgICB7IHJldHVybiBSSUdIVF9BU1NJR047IH0KKyImPSIgICAgICAgICAgICB7IHJl
dHVybiBBTkRfQVNTSUdOOyB9CisiXj0iICAgICAgICAgICAgeyByZXR1cm4gWE9SX0FTU0lHTjsg
fQorInw9IiAgICAgICAgICAgIHsgcmV0dXJuIE9SX0FTU0lHTjsgfQorCisiKysiICAgICAgICAg
ICAgeyByZXR1cm4gSU5DX09QOyB9CisiLS0iICAgICAgICAgICAgeyByZXR1cm4gREVDX09QOyB9
CisiJiYiICAgICAgICAgICAgeyByZXR1cm4gQU5EX09QOyB9CisifHwiICAgICAgICAgICAgeyBy
ZXR1cm4gT1JfT1A7IH0KKyJeXiIgICAgICAgICAgICB7IHJldHVybiBYT1JfT1A7IH0KKyI8PSIg
ICAgICAgICAgICB7IHJldHVybiBMRV9PUDsgfQorIj49IiAgICAgICAgICAgIHsgcmV0dXJuIEdF
X09QOyB9CisiPT0iICAgICAgICAgICAgeyByZXR1cm4gRVFfT1A7IH0KKyIhPSIgICAgICAgICAg
ICB7IHJldHVybiBORV9PUDsgfQorIjw8IiAgICAgICAgICAgIHsgcmV0dXJuIExFRlRfT1A7IH0K
KyI+PiIgICAgICAgICAgICB7IHJldHVybiBSSUdIVF9PUDsgfQorIjsiICAgICAgICAgICAgIHsg
cmV0dXJuIFNFTUlDT0xPTjsgfQorKCJ7InwiPCUiKSAgICAgIHsgcmV0dXJuIExFRlRfQlJBQ0U7
IH0KKygifSJ8IiU+IikgICAgICB7IHJldHVybiBSSUdIVF9CUkFDRTsgfQorIiwiICAgICAgICAg
eyByZXR1cm4gQ09NTUE7IH0KKyI6IiAgICAgICAgIHsgcmV0dXJuIENPTE9OOyB9CisiPSIgICAg
ICAgICB7IHJldHVybiBFUVVBTDsgfQorIigiICAgICAgICAgeyByZXR1cm4gTEVGVF9QQVJFTjsg
fQorIikiICAgICAgICAgeyByZXR1cm4gUklHSFRfUEFSRU47IH0KKygiWyJ8Ijw6IikgIHsgcmV0
dXJuIExFRlRfQlJBQ0tFVDsgfQorKCJdInwiOj4iKSAgeyByZXR1cm4gUklHSFRfQlJBQ0tFVDsg
fQorIi4iICAgICAgICAgeyByZXR1cm4gRE9UOyB9CisiISIgICAgICAgICB7IHJldHVybiBCQU5H
OyB9CisiLSIgICAgICAgICB7IHJldHVybiBEQVNIOyB9CisifiIgICAgICAgICB7IHJldHVybiBU
SUxERTsgfQorIisiICAgICAgICAgeyByZXR1cm4gUExVUzsgfQorIioiICAgICAgICAgeyByZXR1
cm4gU1RBUjsgfQorIi8iICAgICAgICAgeyByZXR1cm4gU0xBU0g7IH0KKyIlIiAgICAgICAgIHsg
cmV0dXJuIFBFUkNFTlQ7IH0KKyI8IiAgICAgICAgIHsgcmV0dXJuIExFRlRfQU5HTEU7IH0KKyI+
IiAgICAgICAgIHsgcmV0dXJuIFJJR0hUX0FOR0xFOyB9CisifCIgICAgICAgICB7IHJldHVybiBW
RVJUSUNBTF9CQVI7IH0KKyJeIiAgICAgICAgIHsgcmV0dXJuIENBUkVUOyB9CisiJiIgICAgICAg
ICB7IHJldHVybiBBTVBFUlNBTkQ7IH0KKyI/IiAgICAgICAgIHsgcmV0dXJuIFFVRVNUSU9OOyB9
CisKK1sgXHRcdlxuXGZccl0geyB9Cis8PEVPRj4+ICAgIHsgeXl0ZXJtaW5hdGUoKTsgfQorLiAg
ICAgICAgICB7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAKICUlCiAKQEAgLTI3OCw3ICsy
NTYsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6CiAgICAgeXlf
c2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8gMCA6IHRva2VuLnRl
eHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAgbWVtY3B5KGJ1Ziwg
dG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VM
b2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24ubGluZSksIHl5c2Nhbm5lcik7
CisgICAgeXlzZXRfY29sdW1uKHRva2VuLmxvY2F0aW9uLmZpbGUsIHl5c2Nhbm5lcik7CisgICAg
eXlzZXRfbGluZW5vKHRva2VuLmxvY2F0aW9uLmxpbmUsIHl5c2Nhbm5lcik7CiAKICAgICBpZiAo
bGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5wdXQgYnVmZmVyIG92
ZXJmbG93Iik7CkBAIC0yOTIsMTIgKzI3MSwxMCBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5
eXNjYW5uZXIpIHsKICAgICAKICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVSOwogICAgIFRTeW1i
b2wqIHN5bWJvbCA9IHl5ZXh0cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0KTsKLSAgICBpZiAo
eXlleHRyYS0+bGV4QWZ0ZXJUeXBlID09IGZhbHNlICYmIHN5bWJvbCAmJiBzeW1ib2wtPmlzVmFy
aWFibGUoKSkgeworICAgIGlmIChzeW1ib2wgJiYgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKICAg
ICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KHN5bWJv
bCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKSB7Ci0gICAgICAgICAgICB5
eWV4dHJhLT5sZXhBZnRlclR5cGUgPSB0cnVlOworICAgICAgICBpZiAodmFyaWFibGUtPmlzVXNl
clR5cGUoKSkKICAgICAgICAgICAgIHRva2VuID0gVFlQRV9OQU1FOwotICAgICAgICB9CiAgICAg
fQogICAgIHl5bHZhbC0+bGV4LnN5bWJvbCA9IHN5bWJvbDsKICAgICByZXR1cm4gdG9rZW47CkBA
IC0zMDYsMjIgKzI4MywxMSBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIpIHsK
IGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHN0cnVjdCB5eWd1
dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKIAotICAgIHl5ZXh0cmEt
PmVycm9yKHl5bGluZW5vLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwg
IiIpOworICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbGxlZ2FsIHVzZSBvZiByZXNlcnZl
ZCB3b3JkIiwgeXl0ZXh0LCAiIik7CiAgICAgeXlleHRyYS0+cmVjb3ZlcigpOwogICAgIHJldHVy
biAwOwogfQogCi12b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hh
ciogcmVhc29uKSB7Ci0gICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190
KikgY29udGV4dC0+c2Nhbm5lcjsKLQotICAgIGlmIChjb250ZXh0LT5BZnRlckVPRikgewotICAg
ICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29uLCAidW5leHBlY3RlZCBFT0YiKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29uLCB5
eXRleHQpOwotICAgIH0KLSAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci19Ci0KIGludCBnbHNsYW5n
X2luaXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5c2Nhbl90IHNjYW5u
ZXIgPSBOVUxMOwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQsICZzY2FubmVyKSkK
QEAgLTM0NCw4ICszMTAsOCBAQCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFyc2VDb250ZXh0KiBj
b250CiBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3Ry
aW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAgVFBhcnNlQ29udGV4
dCogY29udGV4dCkgewogICAgIHl5cmVzdGFydChOVUxMLCBjb250ZXh0LT5zY2FubmVyKTsKLSAg
ICB5eXNldF9saW5lbm8oRW5jb2RlU291cmNlTG9jKDAsIDEpLCBjb250ZXh0LT5zY2FubmVyKTsK
LSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNlOworICAgIHl5c2V0X2NvbHVtbigwLCBjb250
ZXh0LT5zY2FubmVyKTsKKyAgICB5eXNldF9saW5lbm8oMSwgY29udGV4dC0+c2Nhbm5lcik7CiAK
ICAgICAvLyBJbml0aWFsaXplIHByZXByb2Nlc3Nvci4KICAgICBpZiAoIWNvbnRleHQtPnByZXBy
b2Nlc3Nvci5pbml0KGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHJldmlzaW9uIDE1MjY0OSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KIC8vCkBAIC0zOSw3ICszOSw2IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQ
QVJTRVIgKGdsc2wKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAogI2RlZmluZSBZ
WUVOQUJMRV9OTFMgMAotI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQogCiAjZGVmaW5lIFlZ
TEVYX1BBUkFNIGNvbnRleHQtPnNjYW5uZXIKICV9CkBAIC00NywxMCArNDYsMTUgQEAgV0hJQ0gg
R0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbAogJWV4cGVjdCAxIC8qIE9uZSBzaGlm
dCByZWR1Y2UgY29uZmxpY3QgYmVjYXVzZSBvZiBpZiB8IGVsc2UgKi8KICVwdXJlLXBhcnNlcgog
JXBhcnNlLXBhcmFtIHtUUGFyc2VDb250ZXh0KiBjb250ZXh0fQorJWxvY2F0aW9ucworCislY29k
ZSByZXF1aXJlcyB7CisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxUWVBF
X0lTX0RFQ0xBUkVEIDEKK30KIAogJXVuaW9uIHsKICAgICBzdHJ1Y3QgewotICAgICAgICBUU291
cmNlTG9jIGxpbmU7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0cmlu
ZzsKICAgICAgICAgICAgIGZsb2F0IGY7CkBAIC02MCw3ICs2NCw2IEBAIFdISUNIIEdFTkVSQVRF
UyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwogICAg
IH0gbGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAg
VE9wZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9kZSog
aW50ZXJtTm9kZTsKQEAgLTc0LDIzICs3NywzMSBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wg
RVMgUEFSU0VSIChnbHNsCiAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKICAgICAg
ICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAgICAgICBUUGFyYW1ldGVyIHBhcmFt
OwotICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVMaW5lOwotICAgICAgICAgICAgVFR5cGVMaXN0
KiB0eXBlTGlzdDsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7CisgICAgICAgICAgICBURmll
bGRMaXN0KiBmaWVsZExpc3Q7CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07CiB9CiAKICV7Ci1l
eHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbF9wYXJhbSwgdm9pZCogeXlzY2FubmVyKTsK
LWV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciog
cmVhc29uKTsKK2V4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBZWUxUWVBFKiB5eWxs
b2MsIHZvaWQqIHl5c2Nhbm5lcik7CitzdGF0aWMgdm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxv
YywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKTsKIAotI2RlZmlu
ZSBGUkFHX1ZFUlRfT05MWShTLCBMKSB7ICBcCi0gICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUg
IT0gU0hfRlJBR01FTlRfU0hBREVSICYmICBcCi0gICAgICAgIGNvbnRleHQtPnNoYWRlclR5cGUg
IT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXAotICAgICAgICBjb250ZXh0LT5lcnJvcihMLCAiIHN1
cHBvcnRlZCBpbiB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVycyBvbmx5ICIsIFMpOyAgXAotICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7ICBcCi0gICAgfSAgXAotfQorI2RlZmluZSBZWUxMT0NfREVG
QVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICBpZiAoWVlJRChOKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMSkuZmlyc3Rf
ZmlsZTsgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDEp
LmZpcnN0X2xpbmU7ICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xPQyhS
aHMsIE4pLmxhc3RfZmlsZTsgICAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0gWVlS
SFNMT0MoUmhzLCBOKS5sYXN0X2xpbmU7ICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBlbHNlIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoQ3Vy
cmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9maWxlOyAgIFwKKyAgICAg
ICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsgICBc
CisgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfZmls
ZTsgICAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAwKS5s
YXN0X2xpbmU7ICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgVkVSVEVYX09O
TFkoUywgTCkgeyAgXAogICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX1ZFUlRFWF9T
SEFERVIpIHsgIFwKQEAgLTExNiw3ICsxMjcsNiBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJz
ZUNvbnRleHQqIGNvbnRlCiAldG9rZW4gPGxleD4gU0FNUExFUjJEIFNBTVBMRVJDVUJFIFNBTVBM
RVJfRVhURVJOQUxfT0VTIFNBTVBMRVIyRFJFQ1QKIAogJXRva2VuIDxsZXg+IElERU5USUZJRVIg
VFlQRV9OQU1FIEZMT0FUQ09OU1RBTlQgSU5UQ09OU1RBTlQgQk9PTENPTlNUQU5UCi0ldG9rZW4g
PGxleD4gRklFTERfU0VMRUNUSU9OCiAldG9rZW4gPGxleD4gTEVGVF9PUCBSSUdIVF9PUAogJXRv
a2VuIDxsZXg+IElOQ19PUCBERUNfT1AgTEVfT1AgR0VfT1AgRVFfT1AgTkVfT1AKICV0b2tlbiA8
bGV4PiBBTkRfT1AgT1JfT1AgWE9SX09QIE1VTF9BU1NJR04gRElWX0FTU0lHTiBBRERfQVNTSUdO
CkBAIC0xMjcsNiArMTM3LDcgQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBj
b250ZQogJXRva2VuIDxsZXg+IENPTU1BIENPTE9OIEVRVUFMIFNFTUlDT0xPTiBCQU5HIERBU0gg
VElMREUgUExVUyBTVEFSIFNMQVNIIFBFUkNFTlQKICV0b2tlbiA8bGV4PiBMRUZUX0FOR0xFIFJJ
R0hUX0FOR0xFIFZFUlRJQ0FMX0JBUiBDQVJFVCBBTVBFUlNBTkQgUVVFU1RJT04KIAorJXR5cGUg
PGxleD4gaWRlbnRpZmllcgogJXR5cGUgPGludGVybT4gYXNzaWdubWVudF9vcGVyYXRvciB1bmFy
eV9vcGVyYXRvcgogJXR5cGUgPGludGVybS5pbnRlcm1UeXBlZE5vZGU+IHZhcmlhYmxlX2lkZW50
aWZpZXIgcHJpbWFyeV9leHByZXNzaW9uIHBvc3RmaXhfZXhwcmVzc2lvbgogJXR5cGUgPGludGVy
bS5pbnRlcm1UeXBlZE5vZGU+IGV4cHJlc3Npb24gaW50ZWdlcl9leHByZXNzaW9uIGFzc2lnbm1l
bnRfZXhwcmVzc2lvbgpAQCAtMTU0LDggKzE2NSw4IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBh
cnNlQ29udGV4dCogY29udGUKICV0eXBlIDxpbnRlcm0udHlwZT4gdHlwZV9xdWFsaWZpZXIgZnVs
bHlfc3BlY2lmaWVkX3R5cGUgdHlwZV9zcGVjaWZpZXIKICV0eXBlIDxpbnRlcm0udHlwZT4gdHlw
ZV9zcGVjaWZpZXJfbm9fcHJlYyB0eXBlX3NwZWNpZmllcl9ub25hcnJheQogJXR5cGUgPGludGVy
bS50eXBlPiBzdHJ1Y3Rfc3BlY2lmaWVyCi0ldHlwZSA8aW50ZXJtLnR5cGVMaW5lPiBzdHJ1Y3Rf
ZGVjbGFyYXRvcgotJXR5cGUgPGludGVybS50eXBlTGlzdD4gc3RydWN0X2RlY2xhcmF0b3JfbGlz
dCBzdHJ1Y3RfZGVjbGFyYXRpb24gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QKKyV0eXBlIDxpbnRl
cm0uZmllbGQ+IHN0cnVjdF9kZWNsYXJhdG9yCisldHlwZSA8aW50ZXJtLmZpZWxkTGlzdD4gc3Ry
dWN0X2RlY2xhcmF0b3JfbGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gc3RydWN0X2RlY2xhcmF0aW9u
X2xpc3QKICV0eXBlIDxpbnRlcm0uZnVuY3Rpb24+IGZ1bmN0aW9uX2hlYWRlciBmdW5jdGlvbl9k
ZWNsYXJhdG9yIGZ1bmN0aW9uX2lkZW50aWZpZXIKICV0eXBlIDxpbnRlcm0uZnVuY3Rpb24+IGZ1
bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMgZnVuY3Rpb25fY2FsbF9oZWFkZXIKICV0eXBl
IDxpbnRlcm0+IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVycyBmdW5jdGlvbl9j
YWxsX2hlYWRlcl9ub19wYXJhbWV0ZXJzIGZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyBmdW5jdGlvbl9w
cm90b3R5cGUKQEAgLTE2NCwxMyArMTc1LDE3IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNl
Q29udGV4dCogY29udGUKICVzdGFydCB0cmFuc2xhdGlvbl91bml0CiAlJQogCitpZGVudGlmaWVy
CisgICAgOiBJREVOVElGSUVSCisgICAgfCBUWVBFX05BTUUKKwogdmFyaWFibGVfaWRlbnRpZmll
cgogICAgIDogSURFTlRJRklFUiB7CiAgICAgICAgIC8vIFRoZSBzeW1ib2wgdGFibGUgc2VhcmNo
IHdhcyBkb25lIGluIHRoZSBsZXhpY2FsIHBoYXNlCiAgICAgICAgIGNvbnN0IFRTeW1ib2wqIHN5
bWJvbCA9ICQxLnN5bWJvbDsKICAgICAgICAgY29uc3QgVFZhcmlhYmxlKiB2YXJpYWJsZTsKICAg
ICAgICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5s
aW5lLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIiwgJDEuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIiwgJDEuc3Ry
aW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgICAgICBUVmFy
aWFibGUqIGZha2VWYXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJDEuc3RyaW5nLCB0eXBlKTsKQEAg
LTE3OSwxMCArMTk0LDE3IEBAIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIFRoaXMgaWRlbnRpZmllciBjYW4gb25seSBiZSBhIHZhcmlhYmxlIHR5
cGUgc3ltYm9sCiAgICAgICAgICAgICBpZiAoISBzeW1ib2wtPmlzVmFyaWFibGUoKSkgewotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ2YXJpYWJsZSBleHBlY3RlZCIs
ICQxLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEs
ICJ2YXJpYWJsZSBleHBlY3RlZCIsICQxLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB2YXJp
YWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7CisKKyAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5pc1ZhcmlhYmxlQnVpbHRJbih2YXJpYWJsZSkgJiYgCisgICAgICAg
ICAgICAgICAgIXZhcmlhYmxlLT5nZXRFeHRlbnNpb24oKS5lbXB0eSgpICYmCisgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjayhAMSwgdmFyaWFibGUtPmdldEV4dGVu
c2lvbigpKSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcsIGl0
J3MgdXNlZCBieSBlcnJvciByZWNvdmVyeSwgYW5kIHRoZSBwb29sCkBAIC0xOTEsMTEgKzIxMywx
MiBAQCB2YXJpYWJsZV9pZGVudGlmaWVyCiAgICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgp
LmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ICkgewogICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biogY29uc3RBcnJheSA9IHZhcmlhYmxlLT5nZXRDb25zdFBvaW50ZXIoKTsKICAgICAgICAgICAg
IFRUeXBlIHQodmFyaWFibGUtPmdldFR5cGUoKSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICQxLmxpbmUpOwor
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbihj
b25zdEFycmF5LCB0LCBAMSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJs
ZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTIwOSwyMiArMjMyLDIyIEBAIHByaW1hcnlf
ZXhwcmVzc2lvbgogICAgICAgICAvLyBjaGVjayBmb3Igb3ZlcmZsb3cgZm9yIGNvbnN0YW50cwog
ICAgICAgICAvLwogICAgICAgICBpZiAoYWJzKCQxLmkpID49ICgxIDw8IDE2KSkgewotICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93
IiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICIgaW50ZWdlciBjb25zdGFu
dCBvdmVyZmxvdyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5p
b25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgkMS5pKTsKLSAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAgfQogICAgIHwgRkxP
QVRDT05TVEFOVCB7CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KCQxLmYpOwotICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDEubGluZSk7Cisg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAg
fQogICAgIHwgQk9PTENPTlNUQU5UIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3Qo
JDEuYik7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQx
LmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBA
MSk7CiAgICAgfQogICAgIHwgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIHsKICAg
ICAgICAgJCQgPSAkMjsKQEAgLTIzOCwxMDEgKzI2MSw5NyBAQCBwb3N0Zml4X2V4cHJlc3Npb24K
ICAgICB8IHBvc3RmaXhfZXhwcmVzc2lvbiBMRUZUX0JSQUNLRVQgaW50ZWdlcl9leHByZXNzaW9u
IFJJR0hUX0JSQUNLRVQgewogICAgICAgICBpZiAoISQxLT5pc0FycmF5KCkgJiYgISQxLT5pc01h
dHJpeCgpICYmICEkMS0+aXNWZWN0b3IoKSkgewogICAgICAgICAgICAgaWYgKCQxLT5nZXRBc1N5
bWJvbE5vZGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIGxl
ZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAkMS0+
Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOworICAgICAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKEAyLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBt
YXRyaXgsIG9yIHZlY3RvciAiLCAkMS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNf
c3RyKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCQyLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3Ig
dmVjdG9yICIsICJleHByZXNzaW9uIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDIsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9y
ICIsICJleHByZXNzaW9uIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29u
c3QgJiYgJDMtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICBpZiAo
JDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKLSAgICAgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlOb2RlKCQzLT5nZXRBc0NvbnN0YW50
VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCksICQxLCAkMi5saW5l
KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkpIHsgIC8vIGNvbnN0YW50
IGZvbGRpbmcgZm9yIHZlY3RvcnMKLSAgICAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxk
czsKLSAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKLSAgICAgICAgICAgICAgICBmaWVs
ZHMub2Zmc2V0c1swXSA9ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBv
aW50ZXIoKS0+Z2V0SUNvbnN0KCk7IC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSB2
Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5Ci0gICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwgJDIubGluZSk7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIG1h
dHJpY2VzCi0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUo
JDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29u
c3QoKSwgJDEsICQyLmxpbmUpOworICAgICAgICBpZiAoJDMtPmdldFF1YWxpZmllcigpID09IEV2
cUNvbnN0KSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSAkMy0+Z2V0QXNDb25zdGFudFVuaW9u
KCktPmdldElDb25zdCgwKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBpbmZvU3RyZWFtOworICAgICAgICAgICAgICAgIGlu
Zm9TdHJlYW0gPDwgaW5kZXg7CisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgaW5mbyA9IGlu
Zm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJuZWdh
dGl2ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOworICAgICAgICAgICAgICAgIGluZGV4ID0gMDsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICgkMy0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29u
c3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoKCQxLT5pc1ZlY3RvcigpIHx8ICQxLT5pc01hdHJp
eCgpKSAmJiAkMS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gJDMtPmdldEFzQ29uc3Rh
bnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSAmJiAhJDEtPmlz
QXJyYXkoKSApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJ
bmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxk
IHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5n
ZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgZXh0cmFJ
bmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCQxLT5pc0Fy
cmF5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldEFy
cmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJDEtPmdl
dFR5cGUoKS5nZXRNYXhBcnJheVNpemUoKSA8PSAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdl
dFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNldE1heFNpemUoJDEtPmdldEFzU3ltYm9s
Tm9kZSgpLCAkMS0+Z2V0VHlwZVBvaW50ZXIoKSwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5n
ZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgdHJ1ZSwgJDIubGluZSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgkMS0+Z2V0QXNTeW1ib2xOb2Rl
KCksICQxLT5nZXRUeXBlUG9pbnRlcigpLCAwLCBmYWxzZSwgJDIubGluZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgg
JDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29u
c3QoKSA+PSAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9m
IHJhbmdlICciIDw8ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50
ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIiciOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIiwgIlsiLCBleHRyYUlu
Zm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVP
cEluZGV4RGlyZWN0LCAkMSwgJDMsICQyLmxpbmUpOworICAgICAgICAgICAgaWYgKCQxLT5nZXRU
eXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgICAgICBpZiAo
JDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKKyAgICAgICAg
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdEFycmF5Tm9kZShpbmRleCwgJDEsIEAy
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc1ZlY3RvcigpKSB7ICAvLyBjb25z
dGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVs
ZHMgZmllbGRzOworICAgICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVlZCB0byBkbyBpdCB0
aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkKKyAgICAgICAg
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwg
QDIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsgLy8gY29u
c3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoaW5kZXgsICQxLCBAMik7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXko
KSAmJiAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgImFycmF5IG11c3QgYmUgcmVk
ZWNsYXJlZCB3aXRoIGEgc2l6ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRoIGEgdmFyaWFibGUi
KTsKKyAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoaW5kZXggPj0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAg
ICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBvdXQg
b2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4ID0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSAtIDE7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCgkMS0+
aXNWZWN0b3IoKSB8fCAkMS0+aXNNYXRyaXgoKSkgJiYgJDEtPmdldFR5cGUoKS5nZXROb21pbmFs
U2l6ZSgpIDw9IGluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8
ICJmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0
cigpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiIsICJbIiwgZXh0
cmFJbmZvLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gICQxLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNp
emUoKSAtIDE7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgJDEsICQzLCAkMi5s
aW5lKTsKKyAgICAgICAgICAgICAgICAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9u
QXJyYXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7CisgICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCAkMywgQDIp
OwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgJDEsICQzLCBAMik7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCQkID09IDApIHsKICAgICAgICAgICAgIENvbnN0YW50
VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVu
aW9uQXJyYXktPnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVi
cEhpZ2gsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBF
YnBIaWdoLCBFdnFDb25zdCksIEAyKTsKICAgICAgICAgfSBlbHNlIGlmICgkMS0+aXNBcnJheSgp
KSB7CiAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSkKLSAgICAgICAg
ICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLCAkMS0+
Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShU
VHlwZSgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0
UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCksICQxLT5pc01h
dHJpeCgpKSk7CiAKICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigp
ID09IEV2cUNvbnN0KQogICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRR
dWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpICYm
ICQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAk
JC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwg
RXZxQ29uc3QsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKCQxLT5p
c01hdHJpeCgpKQotICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlw
ZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXpl
KCkpKTsKLSAgICAgICAgZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkgJiYgJDEtPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBl
KCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCkpOwotICAg
ICAgICBlbHNlIGlmICgkMS0+aXNWZWN0b3IoKSkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRU
eXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3Jhcnkp
KTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7Cisg
ICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlm
aWVyKCkgPT0gRXZxQ29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgICAg
ICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigp
LCBxdWFsaWZpZXIsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7CisgICAgICAgIH0gZWxzZSBpZiAo
JDEtPmlzVmVjdG9yKCkpIHsKKyAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gJDEt
PmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVt
cG9yYXJ5OworICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgp
LCAkMS0+Z2V0UHJlY2lzaW9uKCksIHF1YWxpZmllcikpOworICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgJCQtPnNldFR5cGUoJDEtPmdldFR5cGUoKSk7CisgICAgICAgIH0KICAgICB9CiAg
ICAgfCBmdW5jdGlvbl9jYWxsIHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBwb3N0
Zml4X2V4cHJlc3Npb24gRE9UIEZJRUxEX1NFTEVDVElPTiB7CisgICAgfCBwb3N0Zml4X2V4cHJl
c3Npb24gRE9UIGlkZW50aWZpZXIgewogICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDMubGluZSwgImNhbm5vdCBhcHBseSBkb3Qgb3BlcmF0
b3IgdG8gYW4gYXJyYXkiLCAiLiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJj
YW5ub3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS0+aXNWZWN0
b3IoKSkgewogICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBp
ZiAoISBjb250ZXh0LT5wYXJzZVZlY3RvckZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5h
bFNpemUoKSwgZmllbGRzLCAkMy5saW5lKSkgeworICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+
cGFyc2VWZWN0b3JGaWVsZHMoKiQzLnN0cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxk
cywgQDMpKSB7CiAgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CiAgICAgICAgICAgICAg
ICAgZmllbGRzLm9mZnNldHNbMF0gPSAwOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0
UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9y
IGZpZWxkcwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RWZWN0b3JOb2Rl
KGZpZWxkcywgJDEsICQzLmxpbmUpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRk
Q29uc3RWZWN0b3JOb2RlKGZpZWxkcywgJDEsIEAzKTsKICAgICAgICAgICAgICAgICBpZiAoJCQg
PT0gMCkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAgICAgICAgICQkID0gJDE7CkBAIC0zNDEsMTMgKzM2MCwxMyBAQCBwb3N0Zml4X2V4cHJl
c3Npb24KICAgICAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2lj
VHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0LCAoaW50KSAoKiQzLnN0cmluZyku
c2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFRTdHJpbmcg
dmVjdG9yU3RyaW5nID0gKiQzLnN0cmluZzsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQq
IGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmllbGRzLCAkMy5saW5l
KTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChF
T3BWZWN0b3JTd2l6emxlLCAkMSwgaW5kZXgsICQyLmxpbmUpOworICAgICAgICAgICAgICAgIFRJ
bnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVs
ZHMsIEAzKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJ
bmRleChFT3BWZWN0b3JTd2l6emxlLCAkMSwgaW5kZXgsIEAyKTsKICAgICAgICAgICAgICAgICAk
JC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwg
RXZxVGVtcG9yYXJ5LCAoaW50KSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsKICAgICAgICAgICAgIFRNYXRy
aXhGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VNYXRyaXhG
aWVsZHMoKiQzLnN0cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgJDMubGluZSkp
IHsKKyAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBhcnNlTWF0cml4RmllbGRzKCokMy5zdHJp
bmcsICQxLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsIEAzKSkgewogICAgICAgICAgICAgICAg
IGZpZWxkcy53aG9sZVJvdyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9sZUNv
bCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy5yb3cgPSAwOwpAQCAtMzU2LDg0ICsz
NzUsNzggQEAgcG9zdGZpeF9leHByZXNzaW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmIChmaWVsZHMud2hvbGVSb3cgfHwgZmllbGRzLndob2xlQ29sKSB7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1wbGVt
ZW50ZWQgeWV0IiwgIi4iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiBu
b24tc2NhbGFyIGZpZWxkcyBub3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsKICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgICAgIHVuaW9u
QXJyYXktPnNldElDb25zdCgwKTsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDMubGluZSk7Ci0gICAgICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3Qs
ICQxLCBpbmRleCwgJDIubGluZSk7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRl
eCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAzKTsKKyAgICAgICAgICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgJDEs
IGluZGV4LCBAMik7CiAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJh
c2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksRXZxVGVtcG9yYXJ5LCAkMS0+Z2V0Tm9taW5h
bFNpemUoKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAg
ICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGZpZWxkcy5jb2wgKiAkMS0+Z2V0Tm9taW5hbFNpemUo
KSArIGZpZWxkcy5yb3cpOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMy5saW5lKTsKLSAgICAgICAgICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgJDEs
IGluZGV4LCAkMi5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUo
RWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDMpOworICAgICAgICAgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwgaW5k
ZXgsIEAyKTsKICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNU
eXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVs
c2UgaWYgKCQxLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgICAgIGJv
b2wgZmllbGRGb3VuZCA9IGZhbHNlOwotICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBmaWVs
ZHMgPSAkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOwotICAgICAgICAgICAgaWYgKGZpZWxkcyA9
PSAwKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInN0cnVjdHVy
ZSBoYXMgbm8gZmllbGRzIiwgIkludGVybmFsIEVycm9yIik7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOwotICAgICAgICAgICAgICAg
IGZvciAoaSA9IDA7IGkgPCBmaWVsZHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICgoKmZpZWxkcylbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKiQzLnN0cmluZykg
ewotICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
Y29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+Zmll
bGRzKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgICAgIGZvciAoaSA9
IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmllbGRz
W2ldLT5uYW1lKCkgPT0gKiQzLnN0cmluZykgeworICAgICAgICAgICAgICAgICAgICBmaWVsZEZv
dW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0KCokMy5zdHJpbmcs
ICQxLCAkMi5saW5lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkJC0+c2V0VHlwZSgqKCpmaWVsZHMpW2ldLnR5cGUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNoYW5nZSB0aGUgcXVhbGlmaWVyIG9mIHRoZSByZXR1cm4gdHlwZSwgbm90IG9m
IHRoZSBzdHJ1Y3R1cmUgZmllbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyB0
aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1Y3R1
cmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5z
ZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRV
bmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwotICAgICAgICAgICAgICAg
ICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksICooKmZpZWxkcylbaV0udHlwZSwgJDMubGluZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJ
bmRleERpcmVjdFN0cnVjdCwgJDEsIGluZGV4LCAkMi5saW5lKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICQkLT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoZmllbGRGb3VuZCkgeworICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0
VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAgICAgICAgICAgICAg
ICQkID0gY29udGV4dC0+YWRkQ29uc3RTdHJ1Y3QoKiQzLnN0cmluZywgJDEsIEAyKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCQkID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICQkID0gJDE7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0eXBl
LCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBmaWVsZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
YXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHZhcmlvdXMgc3Ry
dWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5z
ZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGlu
ZSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAg
ICAgJCQgPSAkMTsKKyAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOworICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5
LT5zZXRJQ29uc3QoaSk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXgg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAqZmll
bGRzW2ldLT50eXBlKCksIEAzKTsKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICQxLCBpbmRleCwgQDIp
OworICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOwog
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoQDIsICIgbm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1cmUiLCAkMy5zdHJp
bmctPmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAg
ICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBmaWVsZCBzZWxlY3Rpb24gcmVxdWly
ZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIsICQzLnN0
cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiBmaWVsZCBz
ZWxlY3Rpb24gcmVxdWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhh
bmQgc2lkZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgICAgIC8vIGRvbid0
IGRlbGV0ZSAkMy5zdHJpbmcsIGl0J3MgZnJvbSB0aGUgcG9vbAogICAgIH0KICAgICB8IHBvc3Rm
aXhfZXhwcmVzc2lvbiBJTkNfT1AgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JD
aGVjaygkMi5saW5lLCAiKysiLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJv
ckNoZWNrKEAyLCAiKysiLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5j
cmVtZW50LCAkMSwgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdEluY3JlbWVudCwgJDEs
IEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDIubGluZSwgIisrIiwgJDEtPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKEAyLCAiKysi
LCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcG9zdGZp
eF9leHByZXNzaW9uIERFQ19PUCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNo
ZWNrKCQyLmxpbmUsICItLSIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9y
Q2hlY2soQDIsICItLSIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNy
ZW1lbnQsICQxLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0RGVjcmVtZW50LCAkMSwg
QDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMi5saW5lLCAiLS0iLCAkMS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDIsICItLSIs
ICQxLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTQ2MSwxOCArNDc0LDE4IEBA
IGZ1bmN0aW9uX2NhbGwKICAgICAgICAgICAgIC8vIFRoZWlyIHBhcmFtZXRlcnMgd2lsbCBiZSB2
ZXJpZmllZCBhbGdvcml0aG1pY2FsbHkuCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgVFR5
cGUgdHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOyAgLy8gdXNlIHRoaXMgdG8gZ2V0IHRoZSB0
eXBlIGJhY2sKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1Y3RvckVycm9yQ2hlY2so
JDEubGluZSwgJDEuaW50ZXJtTm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgeworICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVjayhAMSwgJDEuaW50ZXJtTm9kZSwg
KmZuQ2FsbCwgb3AsICZ0eXBlKSkgewogICAgICAgICAgICAgICAgICQkID0gMDsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAvLyBJdCdz
IGEgY29uc3RydWN0b3IsIG9mIHR5cGUgJ3R5cGUnLgogICAgICAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvcigkMS5pbnRlcm1Ob2RlLCAm
dHlwZSwgb3AsIGZuQ2FsbCwgJDEubGluZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0
LT5hZGRDb25zdHJ1Y3RvcigkMS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgQDEpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewogICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwgJDEubGluZSk7CisgICAgICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3Io
MCwgb3AsIEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICQkLT5zZXRUeXBlKHR5cGUp
OwogICAgICAgICB9IGVsc2UgewpAQCAtNDgxLDEzICs0OTQsMTMgQEAgZnVuY3Rpb25fY2FsbAog
ICAgICAgICAgICAgLy8KICAgICAgICAgICAgIGNvbnN0IFRGdW5jdGlvbiogZm5DYW5kaWRhdGU7
CiAgICAgICAgICAgICBib29sIGJ1aWx0SW47Ci0gICAgICAgICAgICBmbkNhbmRpZGF0ZSA9IGNv
bnRleHQtPmZpbmRGdW5jdGlvbigkMS5saW5lLCBmbkNhbGwsICZidWlsdEluKTsKKyAgICAgICAg
ICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKEAxLCBmbkNhbGwsICZidWls
dEluKTsKICAgICAgICAgICAgIGlmIChmbkNhbmRpZGF0ZSkgewogICAgICAgICAgICAgICAgIC8v
CiAgICAgICAgICAgICAgICAgLy8gQSBkZWNsYXJlZCBmdW5jdGlvbi4KICAgICAgICAgICAgICAg
ICAvLwogICAgICAgICAgICAgICAgIGlmIChidWlsdEluICYmICFmbkNhbmRpZGF0ZS0+Z2V0RXh0
ZW5zaW9uKCkuZW1wdHkoKSAmJgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNp
b25FcnJvckNoZWNrKCQxLmxpbmUsIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjayhAMSwgZm5DYW5k
aWRhdGUtPmdldEV4dGVuc2lvbigpKSkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG9wID0gZm5DYW5k
aWRhdGUtPmdldEJ1aWx0SW5PcCgpOwpAQCAtNDk5LDcgKzUxMiw3IEBAIGZ1bmN0aW9uX2NhbGwK
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBU
cmVhdCBpdCBsaWtlIGEgYnVpbHQtaW4gdW5hcnkgb3BlcmF0b3IuCiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkVW5hcnlNYXRoKG9wLCAkMS5pbnRlcm1Ob2RlLCAwLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRVbmFyeU1hdGgob3AsICQxLmludGVybU5vZGUsIEAxLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJidWlsdCBpbiB1bmFy
eSBvcGVyYXRvciBmdW5jdGlvbi4gIFR5cGU6ICIgPDwgc3RhdGljX2Nhc3Q8VEludGVybVR5cGVk
Kj4oJDEuaW50ZXJtTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCk7CkBAIC01MDgsMTIgKzUyMSwx
MiBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWVlFUlJPUjsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFn
Z3JlZ2F0ZU9wZXJhdG9yKCQxLmludGVybUFnZ3JlZ2F0ZSwgb3AsICQxLmxpbmUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRl
T3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBvcCwgQDEpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhp
cyBpcyBhIHJlYWwgZnVuY3Rpb24gY2FsbAogCi0gICAgICAgICAgICAgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQxLmludGVybUFnZ3JlZ2F0
ZSwgRU9wRnVuY3Rpb25DYWxsLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVn
YXRlLCBFT3BGdW5jdGlvbkNhbGwsIEAxKTsKICAgICAgICAgICAgICAgICAgICAgJCQtPnNldFR5
cGUoZm5DYW5kaWRhdGUtPmdldFJldHVyblR5cGUoKSk7CiAKICAgICAgICAgICAgICAgICAgICAg
Ly8gdGhpcyBpcyBob3cgd2Uga25vdyB3aGV0aGVyIHRoZSBnaXZlbiBmdW5jdGlvbiBpcyBhIGJ1
aWx0SW4gZnVuY3Rpb24gb3IgYSB1c2VyIGRlZmluZWQgZnVuY3Rpb24KQEAgLTU0MCw3ICs1NTMs
NyBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAgICAgICAgICAgLy8gUHV0IG9uIGEgZHVtbXkgbm9k
ZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlv
bkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDEpOwogICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTUzLDcgKzU2Niw3
IEBAIGZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9kCiAgICAgICAgICQkID0gJDE7CiAgICAgfQogICAg
IHwgcG9zdGZpeF9leHByZXNzaW9uIERPVCBmdW5jdGlvbl9jYWxsX2dlbmVyaWMgewotICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMy5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIsICIi
KTsKKyAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVk
IiwgIiIpOwogICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICQkID0gJDM7CiAg
ICAgfQpAQCAtNTYyLDExICs1NzUsOSBAQCBmdW5jdGlvbl9jYWxsX29yX21ldGhvZAogZnVuY3Rp
b25fY2FsbF9nZW5lcmljCiAgICAgOiBmdW5jdGlvbl9jYWxsX2hlYWRlcl93aXRoX3BhcmFtZXRl
cnMgUklHSFRfUEFSRU4gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICAkJC5saW5lID0gJDIu
bGluZTsKICAgICB9CiAgICAgfCBmdW5jdGlvbl9jYWxsX2hlYWRlcl9ub19wYXJhbWV0ZXJzIFJJ
R0hUX1BBUkVOIHsKICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxpbmU7
CiAgICAgfQogICAgIDsKIApAQCAtNTkyLDcgKzYwMyw3IEBAIGZ1bmN0aW9uX2NhbGxfaGVhZGVy
X3dpdGhfcGFyYW1ldGVycwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5
cGUoJDMtPmdldFR5cGUoKSkgfTsKICAgICAgICAgJDEuZnVuY3Rpb24tPmFkZFBhcmFtZXRlcihw
YXJhbSk7CiAgICAgICAgICQkLmZ1bmN0aW9uID0gJDEuZnVuY3Rpb247Ci0gICAgICAgICQkLmlu
dGVybU5vZGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1O
b2RlLCAkMywgJDIubGluZSk7CisgICAgICAgICQkLmludGVybU5vZGUgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCAkMywgQDIpOwogICAgIH0KICAg
ICA7CiAKQEAgLTYxNywzOSArNjI4LDM5IEBAIGZ1bmN0aW9uX2lkZW50aWZpZXIKICAgICAgICAg
ICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgaWYgKCQxLm1hdHJpeCkgewogICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2goJDEuc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBj
YXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3Ry
dWN0TWF0MjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoKCQxLnNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzI7ICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSAzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVP
cENvbnN0cnVjdFZlYzM7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7ICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEZsb2F0
OyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdFZl
YzI7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVj
dFZlYzM7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0
cnVjdFZlYzQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgogICAg
ICAgICAgICAgICAgIHN3aXRjaCgkMS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RJ
bnQ7ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZFUlRfT05M
WSgiaXZlYzIiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSAzOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzMiLCAkMS5saW5l
KTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0
OiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzQiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1
Y3RJVmVjNDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVj
dEludDsgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0
SVZlYzI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RJ
VmVjMzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdElW
ZWM0OyBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIEVidEJvb2w6CiAgICAgICAgICAgICAgICAgc3dpdGNoKCQxLnNpemUp
IHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEJvb2w7ICBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMiIsICQxLmxpbmUpOyBvcCA9IEVP
cENvbnN0cnVjdEJWZWMyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgIEZS
QUdfVkVSVF9PTkxZKCJidmVjMyIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMzOyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVj
NCIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWM0OyBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdEJWZWMzOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9wID09IEVPcE51bGwpIHsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiY2Fubm90IGNvbnN0cnVjdCB0aGlzIHR5
cGUiLCBnZXRCYXNpY1N0cmluZygkMS50eXBlKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoQDEsICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5nKCQx
LnR5cGUpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAgICAgJDEudHlwZSA9IEVidEZsb2F0OwogICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3Ry
dWN0RmxvYXQ7CkBAIC02NjEsMTQgKzY3Miw3IEBAIGZ1bmN0aW9uX2lkZW50aWZpZXIKICAgICAg
ICAgJCQgPSBmdW5jdGlvbjsKICAgICB9CiAgICAgfCBJREVOVElGSUVSIHsKLSAgICAgICAgaWYg
KGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lkLCBF
YnBVbmRlZmluZWQpOwotICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlv
bigkMS5zdHJpbmcsIHR5cGUpOwotICAgICAgICAkJCA9IGZ1bmN0aW9uOwotICAgIH0KLSAgICB8
IEZJRUxEX1NFTEVDVElPTiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hl
Y2soJDEubGluZSwgKiQxLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVy
cm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgIFRG
dW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCQxLnN0cmluZywgdHlwZSk7CkBAIC02
ODEsMjggKzY4NSwyOCBAQCB1bmFyeV9leHByZXNzaW9uCiAgICAgICAgICQkID0gJDE7CiAgICAg
fQogICAgIHwgSU5DX09QIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4dC0+
bFZhbHVlRXJyb3JDaGVjaygkMS5saW5lLCAiKysiLCAkMikpCisgICAgICAgIGlmIChjb250ZXh0
LT5sVmFsdWVFcnJvckNoZWNrKEAxLCAiKysiLCAkMikpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0
aChFT3BQcmVJbmNyZW1lbnQsICQyLCAkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVJbmNy
ZW1lbnQsICQyLCBAMSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0g
MCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsICIrKyIsICQy
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJv
cihAMSwgIisrIiwgJDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgfQogICAgIH0KICAg
ICB8IERFQ19PUCB1bmFyeV9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1
ZUVycm9yQ2hlY2soJDEubGluZSwgIi0tIiwgJDIpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZh
bHVlRXJyb3JDaGVjayhAMSwgIi0tIiwgJDIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9w
UHJlRGVjcmVtZW50LCAkMiwgJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50
LCAkMiwgQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMS5saW5lLCAiLS0iLCAkMi0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDEs
ICItLSIsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDI7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCB1
bmFyeV9vcGVyYXRvciB1bmFyeV9leHByZXNzaW9uIHsKICAgICAgICAgaWYgKCQxLm9wICE9IEVP
cE51bGwpIHsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5
TWF0aCgkMS5vcCwgJDIsICQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgkMS5vcCwgJDIsIEAx
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewogICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yT3AgPSAiIjsKICAgICAgICAgICAgICAgICBz
d2l0Y2goJDEub3ApIHsKQEAgLTcxMCw3ICs3MTQsNyBAQCB1bmFyeV9leHByZXNzaW9uCiAgICAg
ICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OiBlcnJvck9wID0gIiEiOyBicmVhazsKICAg
ICAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsIGVycm9yT3AsICQyLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3Io
QDEsIGVycm9yT3AsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgICAg
IH0KQEAgLTcyMSwyOCArNzI1LDI2IEBAIHVuYXJ5X2V4cHJlc3Npb24KIC8vIEdyYW1tYXIgTm90
ZTogIE5vIHRyYWRpdGlvbmFsIHN0eWxlIHR5cGUgY2FzdHMuCiAKIHVuYXJ5X29wZXJhdG9yCi0g
ICAgOiBQTFVTICB7ICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcE51bGw7IH0KLSAgICB8
IERBU0ggIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTmVnYXRpdmU7IH0KLSAgICB8
IEJBTkcgIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTG9naWNhbE5vdDsgfQorICAg
IDogUExVUyAgeyAkJC5vcCA9IEVPcE51bGw7IH0KKyAgICB8IERBU0ggIHsgJCQub3AgPSBFT3BO
ZWdhdGl2ZTsgfQorICAgIHwgQkFORyAgeyAkJC5vcCA9IEVPcExvZ2ljYWxOb3Q7IH0KICAgICA7
CiAvLyBHcmFtbWFyIE5vdGU6ICBObyAnKicgb3IgJyYnIHVuYXJ5IG9wcy4gIFBvaW50ZXJzIGFy
ZSBub3Qgc3VwcG9ydGVkLgogCiBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uCiAgICAgOiB1bmFy
eV9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lv
biBTVEFSIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgiKiIsICQy
LmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRo
KEVPcE11bCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAkMSwgJDMs
IEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIqIiwgJDEtPmdldENvbXBs
ZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoQDIsICIqIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBtdWx0aXBsaWNhdGl2
ZV9leHByZXNzaW9uIFNMQVNIIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBGUkFHX1ZFUlRf
T05MWSgiLyIsICQyLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcERpdiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9w
RGl2LCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIvIiwg
JDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIvIiwgJDEtPmdldENvbXBsZXRlU3Ry
aW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTc1MiwxNyArNzU0
LDE3IEBAIG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24KIGFkZGl0aXZlX2V4cHJlc3Npb24KICAg
ICA6IG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBhZGRpdGl2
ZV9leHByZXNzaW9uIFBMVVMgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiB7Ci0gICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wQWRkLCAkMSwgJDMsICQy
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoJDIubGluZSwgIisiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdl
dENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihA
MiwgIisiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsK
ICAgICAgICAgfQogICAgIH0KICAgICB8IGFkZGl0aXZlX2V4cHJlc3Npb24gREFTSCBtdWx0aXBs
aWNhdGl2ZV9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BTdWIsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFi
bGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVP
cFN1YiwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQg
PT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiLSIs
ICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiLSIsICQxLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CkBAIC03NzYsNDMgKzc3
OCw0MyBAQCBzaGlmdF9leHByZXNzaW9uCiByZWxhdGlvbmFsX2V4cHJlc3Npb24KICAgICA6IHNo
aWZ0X2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Npb24g
TEVGVF9BTkdMRSBzaGlmdF9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbiwgJDEsICQzLCAkMi5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoJDIubGluZSwgIjwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIjwi
LCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRp
b25hbF9leHByZXNzaW9uIFJJR0hUX0FOR0xFIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwg
JDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW4sICQxLCAkMywg
QDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj4iLCAkMS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcihAMiwgIj4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdl
dENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFd
OwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAg
ICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9leHByZXNzaW9uIExFX09QIHNoaWZ0X2V4cHJl
c3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0
aChFT3BMZXNzVGhhbkVxdWFsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BM
ZXNzVGhhbkVxdWFsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAg
IGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxp
bmUsICI8PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiPD0iLCAkMS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNv
bnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9leHBy
ZXNzaW9uIEdFX09QIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMsICQy
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMsIEAyLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI+PSIsICQxLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5i
aW5hcnlPcEVycm9yKEAyLCAiPj0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENv
bXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwog
ICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9
CiAgICAgfQogICAgIDsKQEAgLTgyMCwyMyArODIyLDIzIEBAIHJlbGF0aW9uYWxfZXhwcmVzc2lv
bgogZXF1YWxpdHlfZXhwcmVzc2lvbgogICAgIDogcmVsYXRpb25hbF9leHByZXNzaW9uIHsgJCQg
PSAkMTsgfQogICAgIHwgZXF1YWxpdHlfZXhwcmVzc2lvbiBFUV9PUCByZWxhdGlvbmFsX2V4cHJl
c3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0
aChFT3BFcXVhbCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1YWwsICQx
LCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj09IiwgJDEtPmdl
dENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICI9PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7
CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7
CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBlcXVhbGl0eV9leHByZXNzaW9uIE5FX09QIHJlbGF0
aW9uYWxfZXhwcmVzc2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEJpbmFyeU1hdGgoRU9wTm90RXF1YWwsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9s
VGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRo
KEVPcE5vdEVxdWFsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAg
IGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxp
bmUsICIhPSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiIT0iLCAkMS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNv
bnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg1NiwxMyArODU4
LDEzIEBAIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uCiBsb2dpY2FsX2FuZF9leHByZXNzaW9uCiAg
ICAgOiBpbmNsdXNpdmVfb3JfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxvZ2ljYWxf
YW5kX2V4cHJlc3Npb24gQU5EX09QIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uIHsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5kLCAk
MSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5kLCAkMSwgJDMsIEAy
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICImJiIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKEAyLCAiJiYiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdl
dENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFd
OwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAg
ICB9CiAgICAgfQogICAgIDsKQEAgLTg3MCwxMyArODcyLDEzIEBAIGxvZ2ljYWxfYW5kX2V4cHJl
c3Npb24KIGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24KICAgICA6IGxvZ2ljYWxfYW5kX2V4cHJlc3Np
b24geyAkJCA9ICQxOyB9CiAgICAgfCBsb2dpY2FsX3hvcl9leHByZXNzaW9uIFhPUl9PUCBsb2dp
Y2FsX2FuZF9leHByZXNzaW9uICB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbFhvciwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5z
eW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFy
eU1hdGgoRU9wTG9naWNhbFhvciwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwog
ICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cigkMi5saW5lLCAiXl4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRl
U3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIl5eIiwg
JDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVu
aW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXkt
PnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCAkMi5saW5lKTsKKyAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksIEAyKTsKICAgICAgICAgfQogICAgIH0KICAgICA7CkBAIC04ODQs
MTMgKzg4NiwxMyBAQCBsb2dpY2FsX3hvcl9leHByZXNzaW9uCiBsb2dpY2FsX29yX2V4cHJlc3Np
b24KICAgICA6IGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBsb2dp
Y2FsX29yX2V4cHJlc3Npb24gT1JfT1AgbG9naWNhbF94b3JfZXhwcmVzc2lvbiAgewotICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxPciwg
JDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAkMSwgJDMsIEAy
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICJ8fCIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKEAyLCAifHwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdl
dENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFd
OwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAg
ICB9CiAgICAgfQogICAgIDsKQEAgLTg5OCwxNSArOTAwLDE1IEBAIGxvZ2ljYWxfb3JfZXhwcmVz
c2lvbgogY29uZGl0aW9uYWxfZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF9vcl9leHByZXNzaW9u
IHsgJCQgPSAkMTsgfQogICAgIHwgbG9naWNhbF9vcl9leHByZXNzaW9uIFFVRVNUSU9OIGV4cHJl
c3Npb24gQ09MT04gYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICBpZiAoY29udGV4dC0+
Ym9vbEVycm9yQ2hlY2soJDIubGluZSwgJDEpKQorICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJy
b3JDaGVjayhAMiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigkMSwgJDMsICQ1LCAk
Mi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9u
KCQxLCAkMywgJDUsIEAyKTsKICAgICAgICAgaWYgKCQzLT5nZXRUeXBlKCkgIT0gJDUtPmdldFR5
cGUoKSkKICAgICAgICAgICAgICQkID0gMDsKIAogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAg
ICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiOiIsICQzLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAkNS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiOiIsICQzLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkNS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAkJCA9ICQ1OwogICAgICAgICB9CkBAIC05MTYsMTEgKzkxOCwxMSBAQCBjb25k
aXRpb25hbF9leHByZXNzaW9uCiBhc3NpZ25tZW50X2V4cHJlc3Npb24KICAgICA6IGNvbmRpdGlv
bmFsX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCB1bmFyeV9leHByZXNzaW9uIGFzc2ln
bm1lbnRfb3BlcmF0b3IgYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPmxWYWx1ZUVycm9yQ2hlY2soJDIubGluZSwgImFzc2lnbiIsICQxKSkKKyAgICAgICAgaWYg
KGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soQDIsICJhc3NpZ24iLCAkMSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEFzc2lnbigkMi5vcCwgJDEsICQzLCAkMi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWduKCQyLm9wLCAkMSwgJDMsIEAyKTsKICAgICAgICAgaWYg
KCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9yKCQyLmxpbmUsICJh
c3NpZ24iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+YXNzaWduRXJyb3IoQDIsICJhc3NpZ24iLCAkMS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpAQCAt
OTI4LDExICs5MzAsMTEgQEAgYXNzaWdubWVudF9leHByZXNzaW9uCiAgICAgOwogCiBhc3NpZ25t
ZW50X29wZXJhdG9yCi0gICAgOiBFUVVBTCAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcEFzc2lnbjsgfQotICAg
IHwgTVVMX0FTU0lHTiAgIHsgRlJBR19WRVJUX09OTFkoIio9IiwgJDEubGluZSk7ICAgICAkJC5s
aW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BNdWxBc3NpZ247IH0KLSAgICB8IERJVl9BU1NJR04g
ICB7IEZSQUdfVkVSVF9PTkxZKCIvPSIsICQxLmxpbmUpOyAgICAgJCQubGluZSA9ICQxLmxpbmU7
ICQkLm9wID0gRU9wRGl2QXNzaWduOyB9Ci0gICAgfCBBRERfQVNTSUdOICAgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcEFk
ZEFzc2lnbjsgfQotICAgIHwgU1VCX0FTU0lHTiAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BTdWJBc3NpZ247IH0KKyAg
ICA6IEVRVUFMICAgICAgICB7ICQkLm9wID0gRU9wQXNzaWduOyB9CisgICAgfCBNVUxfQVNTSUdO
ICAgeyAkJC5vcCA9IEVPcE11bEFzc2lnbjsgfQorICAgIHwgRElWX0FTU0lHTiAgIHsgJCQub3Ag
PSBFT3BEaXZBc3NpZ247IH0KKyAgICB8IEFERF9BU1NJR04gICB7ICQkLm9wID0gRU9wQWRkQXNz
aWduOyB9CisgICAgfCBTVUJfQVNTSUdOICAgeyAkJC5vcCA9IEVPcFN1YkFzc2lnbjsgfQogICAg
IDsKIAogZXhwcmVzc2lvbgpAQCAtOTQwLDkgKzk0Miw5IEBAIGV4cHJlc3Npb24KICAgICAgICAg
JCQgPSAkMTsKICAgICB9CiAgICAgfCBleHByZXNzaW9uIENPTU1BIGFzc2lnbm1lbnRfZXhwcmVz
c2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCQxLCAk
MywgJDIubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1h
KCQxLCAkMywgQDIpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiLCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAk
My0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVy
cm9yKEAyLCAiLCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9
ICQzOwogICAgICAgICB9CkBAIC05NzAsMTMgKzk3MiwxMyBAQCBkZWNsYXJhdGlvbgogICAgICAg
ICAgICAgY29uc3QgVFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJhbShpKTsKICAg
ICAgICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUocGFyYW0ubmFtZSwgKnBh
cmFtLnR5cGUpOworICAgICAgICAgICAgICAgIFRWYXJpYWJsZSB2YXJpYWJsZShwYXJhbS5uYW1l
LCAqcGFyYW0udHlwZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcHJvdG90
eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2YXJp
YWJsZS0+Z2V0TmFtZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKSwgJDEubGluZSk7
CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dB
Z2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlh
YmxlLmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLmdldE5hbWUoKSwgdmFyaWFibGUuZ2V0VHlwZSgp
LCBAMSksIEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jv
d0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
IiIsICpwYXJhbS50eXBlLCAkMS5saW5lKSwgJDEubGluZSk7CisgICAgICAgICAgICAgICAgcHJv
dG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgQDEpLCBA
MSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC05OTIsMTEgKzk5NCwx
MSBAQCBkZWNsYXJhdGlvbgogICAgIH0KICAgICB8IFBSRUNJU0lPTiBwcmVjaXNpb25fcXVhbGlm
aWVyIHR5cGVfc3BlY2lmaWVyX25vX3ByZWMgU0VNSUNPTE9OIHsKICAgICAgICAgaWYgKCgkMiA9
PSBFYnBIaWdoKSAmJiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIp
ICYmICFjb250ZXh0LT5mcmFnbWVudFByZWNpc2lvbkhpZ2gpIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCQxLmxpbmUsICJwcmVjaXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVu
dCBzaGFkZXIiLCAiaGlnaHAiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAicHJl
Y2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVyIiwgImhpZ2hwIik7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFj
b250ZXh0LT5zeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKCAkMywgJDIgKSkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBm
b3IgZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlwZSkp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJpbGxlZ2FsIHR5cGUgYXJndW1lbnQg
Zm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCQzLnR5cGUp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAk
JCA9IDA7CkBAIC0xMDE2LDEyICsxMDE4LDEyIEBAIGZ1bmN0aW9uX3Byb3RvdHlwZQogICAgICAg
ICBURnVuY3Rpb24qIHByZXZEZWMgPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24qPihjb250ZXh0LT5z
eW1ib2xUYWJsZS5maW5kKCQxLT5nZXRNYW5nbGVkTmFtZSgpKSk7CiAgICAgICAgIGlmIChwcmV2
RGVjKSB7CiAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UmV0dXJuVHlwZSgpICE9ICQxLT5n
ZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5l
LCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBlIiwg
JDEtPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcihAMiwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2Ft
ZSByZXR1cm4gdHlwZSIsICQxLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CiAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmV2RGVjLT5nZXRQYXJhbUNvdW50KCk7ICsr
aSkgewogICAgICAgICAgICAgICAgIGlmIChwcmV2RGVjLT5nZXRQYXJhbShpKS50eXBlLT5nZXRR
dWFsaWZpZXIoKSAhPSAkMS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm92ZXJsb2FkZWQgZnVu
Y3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXIgcXVhbGlmaWVycyIsICQxLT5nZXRQ
YXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKEAyLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBz
YW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgJDEtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxp
ZmllclN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEwMzMsNyArMTAzNSw2IEBAIGZ1
bmN0aW9uX3Byb3RvdHlwZQogICAgICAgICAvLyBiZWluZyByZWRlY2xhcmVkLiAgU28sIHBhc3Mg
YmFjayB1cCB0aGlzIGRlY2xhcmF0aW9uLCBub3QgdGhlIG9uZSBpbiB0aGUgc3ltYm9sIHRhYmxl
LgogICAgICAgICAvLwogICAgICAgICAkJC5mdW5jdGlvbiA9ICQxOwotICAgICAgICAkJC5saW5l
ID0gJDIubGluZTsKIAogICAgICAgICAvLyBXZSdyZSBhdCB0aGUgaW5uZXIgc2NvcGUgbGV2ZWwg
b2YgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzIGFuZCBib2R5IHN0YXRlbWVudC4KICAgICAgICAg
Ly8gQWRkIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUgdG8gdGhlIHN1cnJvdW5kaW5nIHNjb3BlIGlu
c3RlYWQuCkBAIC0xMDY5LDcgKzEwNzAsNyBAQCBmdW5jdGlvbl9oZWFkZXJfd2l0aF9wYXJhbWV0
ZXJzCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhpcyBwYXJhbWV0ZXIgPiBmaXJz
dCBpcyB2b2lkCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIu
bGluZSwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSciLCAi
dm9pZCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5ub3QgYmUgYW4gYXJn
dW1lbnQgdHlwZSBleGNlcHQgZm9yICcodm9pZCknIiwgInZvaWQiKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGRlbGV0ZSAkMy5wYXJhbS50eXBlOwogICAg
ICAgICB9IGVsc2UgewpAQCAtMTA4MywxMSArMTA4NCwxMSBAQCBmdW5jdGlvbl9oZWFkZXJfd2l0
aF9wYXJhbWV0ZXJzCiBmdW5jdGlvbl9oZWFkZXIKICAgICA6IGZ1bGx5X3NwZWNpZmllZF90eXBl
IElERU5USUZJRVIgTEVGVF9QQVJFTiB7CiAgICAgICAgIGlmICgkMS5xdWFsaWZpZXIgIT0gRXZx
R2xvYmFsICYmICQxLnF1YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCQyLmxpbmUsICJubyBxdWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9u
IHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKEAyLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZvciBmdW5jdGlvbiBy
ZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gbWFrZSBzdXJlIGEgc2Ft
cGxlciBpcyBub3QgaW52b2x2ZWQgYXMgd2VsbC4uLgotICAgICAgICBpZiAoY29udGV4dC0+c3Ry
dWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBhcyBhIHByb3RvdHlw
ZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCByZWN1cnNpb24pCkBAIC0xMTAy
LDMzICsxMTAzLDMxIEBAIGZ1bmN0aW9uX2hlYWRlcgogCiBwYXJhbWV0ZXJfZGVjbGFyYXRvcgog
ICAgIC8vIFR5cGUgKyBuYW1lCi0gICAgOiB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIHsKKyAg
ICA6IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgewogICAgICAgICBpZiAoJDEudHlwZSA9PSBF
YnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiaWxsZWdhbCB1
c2Ugb2YgdHlwZSAndm9pZCciLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoQDIsICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsICQyLnN0cmluZy0+
Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5n
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMiwgKiQyLnN0cmlu
ZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRQYXJhbWV0ZXIg
cGFyYW0gPSB7JDIuc3RyaW5nLCBuZXcgVFR5cGUoJDEpfTsKLSAgICAgICAgJCQubGluZSA9ICQy
LmxpbmU7CiAgICAgICAgICQkLnBhcmFtID0gcGFyYW07CiAgICAgfQotICAgIHwgdHlwZV9zcGVj
aWZpZXIgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9C
UkFDS0VUIHsKKyAgICB8IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIGNv
bnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIC8vIENoZWNrIHRoYXQg
d2UgY2FuIG1ha2UgYW4gYXJyYXkgb3V0IG9mIHRoaXMgdHlwZQotICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMy5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5hcnJheVR5cGVFcnJvckNoZWNrKEAzLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMi5saW5l
LCAqJDIuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhA
MiwgKiQyLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAg
ICAgaW50IHNpemU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQz
LmxpbmUsICQ0LCBzaXplKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hl
Y2soQDMsICQ0LCBzaXplKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgJDEuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAKICAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcg
VFR5cGUoJDEpOwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAkMi5zdHJpbmcsIHR5cGUg
fTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxpbmU7CiAgICAgICAgICQkLnBhcmFtID0gcGFyYW07
CiAgICAgfQogICAgIDsKQEAgLTExNDQsMTQgKzExNDMsMTQgQEAgcGFyYW1ldGVyX2RlY2xhcmF0
aW9uCiAgICAgLy8KICAgICA6IHR5cGVfcXVhbGlmaWVyIHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFy
YW1ldGVyX2RlY2xhcmF0b3IgewogICAgICAgICAkJCA9ICQzOwotICAgICAgICBpZiAoY29udGV4
dC0+cGFyYW1FcnJvckNoZWNrKCQzLmxpbmUsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFtLnR5
cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKEAzLCAkMS5xdWFsaWZp
ZXIsICQyLCAkJC5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICB9CiAgICAgfCBwYXJhbWV0ZXJfcXVhbGlmaWVyIHBhcmFtZXRlcl9kZWNsYXJhdG9yIHsK
ICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJF
cnJvckNoZWNrKCQyLmxpbmUsICQxLCAqJDIucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5wYXJhbS50eXBlKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBh
cmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMiwgRXZxVGVtcG9yYXJ5LCAk
MSwgJCQucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
fQogICAgIC8vCkBAIC0xMTU5LDE0ICsxMTU4LDE0IEBAIHBhcmFtZXRlcl9kZWNsYXJhdGlvbgog
ICAgIC8vCiAgICAgfCB0eXBlX3F1YWxpZmllciBwYXJhbWV0ZXJfcXVhbGlmaWVyIHBhcmFtZXRl
cl90eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDM7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5wYXJhbUVycm9yQ2hlY2soJDMubGluZSwgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0udHlw
ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soQDMsICQxLnF1YWxpZmll
ciwgJDIsICQkLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgIH0KICAgICB8IHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX3R5cGVfc3BlY2lmaWVy
IHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBs
ZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxLCAqJDIucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5wYXJhbS50eXBl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQt
PnBhcmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMiwgRXZxVGVtcG9yYXJ5
LCAkMSwgJCQucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgfQogICAgIDsKQEAgLTExOTcsODMgKzExOTYsODMgQEAgaW5pdF9kZWNsYXJhdG9yX2xpc3QK
ICAgICA6IHNpbmdsZV9kZWNsYXJhdGlvbiB7CiAgICAgICAgICQkID0gJDE7CiAgICAgfQotICAg
IHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiB7CisgICAgfCBpbml0X2Rl
Y2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIHsKICAgICAgICAgaWYgKCQxLnR5cGUudHlw
ZSA9PSBFYnRJbnZhcmlhbnQgJiYgISQzLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoJDMubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBh
cyBpbnZhcmlhbnQiLCAkMy5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoQDMsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50Iiwg
JDMuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQzLnN0cmluZywgVFR5cGUoJDEudHlwZSksICQzLmxpbmUp
OwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jv
d0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCBzeW1ib2wsICQzLmxpbmUpOworICAgICAgICBUSW50
ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICok
My5zdHJpbmcsIFRUeXBlKCQxLnR5cGUpLCBAMyk7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0
ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIHN5
bWJvbCwgQDMpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmll
ckVycm9yQ2hlY2soJDMubGluZSwgJCQudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkJC50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVj
aygkMy5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAkJC50eXBlLCBmYWxz
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgVFZhcmlhYmxl
KiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygk
My5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5ub25Jbml0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywgJCQudHlwZSwgdmFyaWFibGUp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoc3ltYm9sICYm
IHZhcmlhYmxlKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVl
SWQoKSk7CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklF
UiBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAgIHwgaW5pdF9kZWNs
YXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7
CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkMS50
eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29u
dGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkMS50eXBl
LCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soQDMs
ICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogCiAgICAgICAgICQkID0gJDE7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlw
ZUVycm9yQ2hlY2soJDQubGluZSwgJDEudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJF
cnJvckNoZWNrKCQ0LmxpbmUsICQxLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlU
eXBlRXJyb3JDaGVjayhANCwgJDEudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJv
ckNoZWNrKEA0LCAkMS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAkMS50eXBlLnNldEFycmF5KHRydWUpOwogICAgICAg
ICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJh
eUVycm9yQ2hlY2soJDQubGluZSwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQorICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhANCwgKiQzLnN0cmluZywgJDEu
dHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQogICAgIH0KLSAgICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENPTU1BIElERU5USUZJ
RVIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5
cGUpKQorICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZUX0JS
QUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAgICAgICAgaWYgKGNv
bnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29u
c3RFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQorICAgICAg
ICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywgJDEu
dHlwZSwgdHJ1ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAg
JCQgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkNC5s
aW5lLCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDQubGlu
ZSwgJDEudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEA0
LCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDQsICQxLnR5
cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVy
cm9yQ2hlY2soJDQubGluZSwgJDUsIHNpemUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFy
cmF5U2l6ZUVycm9yQ2hlY2soQDQsICQ1LCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkMS50eXBlLnNldEFycmF5KHRydWUsIHNpemUpOwog
ICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlFcnJvckNoZWNrKCQ0LmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHZhcmlh
YmxlKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soQDQsICokMy5z
dHJpbmcsICQxLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlID0gVFR5cGUoJDEudHlwZSk7CiAgICAgICAg
ICAgICB0eXBlLnNldEFycmF5U2l6ZShzaXplKTsKLSAgICAgICAgICAgICQkLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUs
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0
VW5pcXVlSWQoKSA6IDAsICokMy5zdHJpbmcsIHR5cGUsICQzLmxpbmUpLCAkMy5saW5lKTsKKyAg
ICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93
QWdncmVnYXRlKCQxLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wo
dmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICokMy5zdHJpbmcsIHR5cGUs
IEAzKSwgQDMpOwogICAgICAgICB9CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3Qg
Q09NTUEgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAgIHwgaW5p
dF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBFUVVBTCBpbml0aWFsaXplciB7Cisg
ICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkMS50eXBl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAkJCA9ICQxOwog
CiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRleHQt
PmV4ZWN1dGVJbml0aWFsaXplcigkMy5saW5lLCAqJDMuc3RyaW5nLCAkMS50eXBlLCAkNSwgaW50
ZXJtTm9kZSkpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoQDMs
ICokMy5zdHJpbmcsICQxLnR5cGUsICQ1LCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAgICAgLy8K
ICAgICAgICAgICAgIC8vIGJ1aWxkIHRoZSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICBpZiAoaW50ZXJtTm9kZSkKLSAgICAgICAgJCQuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50
ZXJtTm9kZSwgaW50ZXJtTm9kZSwgJDQubGluZSk7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0
ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIGlu
dGVybU5vZGUsIEA0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAkJC5pbnRl
cm1BZ2dyZWdhdGUgPSAkMS5pbnRlcm1BZ2dyZWdhdGU7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0x
Mjg2LDc5ICsxMjg1LDc5IEBAIGluaXRfZGVjbGFyYXRvcl9saXN0CiBzaW5nbGVfZGVjbGFyYXRp
b24KICAgICA6IGZ1bGx5X3NwZWNpZmllZF90eXBlIHsKICAgICAgICAgJCQudHlwZSA9ICQxOwot
ICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFn
Z3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgkMSks
ICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5
bWJvbCgwLCAiIiwgVFR5cGUoJDEpLCBAMSksIEAxKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVj
aWZpZWRfdHlwZSBJREVOVElGSUVSIHsKLSAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkMSks
ICQyLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgIHwgZnVsbHlfc3BlY2lm
aWVkX3R5cGUgaWRlbnRpZmllciB7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEpLCBA
Mik7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5t
YWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQt
PnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDIubGluZSwgJCQudHlwZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkJC50eXBlKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5p
dENvbnN0RXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5n
LCAkJC50eXBlLCBmYWxzZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgICQkLnR5cGUgPSAkMTsKIAogICAgICAgICBUVmFyaWFibGUq
IHZhcmlhYmxlID0gMDsKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCQy
LmxpbmUsICokMi5zdHJpbmcsICQkLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPm5vbkluaXRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmICh2YXJpYWJsZSAm
JiBzeW1ib2wpCiAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJ
ZCgpKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIExFRlRf
QlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwg
InVuc2l6ZWQgYXJyYXkgZGVjbGFyYXRpb25zIG5vdCBzdXBwb3J0ZWQiLCAkMi5zdHJpbmctPmNf
c3RyKCkpOworICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmllciBMRUZUX0JSQUNL
RVQgUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAidW5zaXplZCBh
cnJheSBkZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIsICQyLnN0cmluZy0+Y19zdHIoKSk7CiAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1i
b2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIFRUeXBl
KCQxKSwgJDIubGluZSk7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgJDIubGluZSk7CisgICAgICAgIFRJbnRl
cm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQy
LnN0cmluZywgVFR5cGUoJDEpLCBAMik7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAgICAk
JC50eXBlID0gJDE7CiAgICAgfQotICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklF
UiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAgICB8
IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4
cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIFRUeXBlIHR5cGUgPSBUVHlwZSgkMSk7
CiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JD
aGVjaygkMi5saW5lLCAkNCwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVF
cnJvckNoZWNrKEAyLCAkNCwgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwotICAgICAgICBUSW50ZXJtU3ltYm9s
KiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcs
IHR5cGUsICQyLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgICAgICBUSW50
ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICok
Mi5zdHJpbmcsIHR5cGUsIEAyKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgIAotICAg
ICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMi5saW5lLCAkMSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkMSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQt
Pm5vbkluaXRDb25zdEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZywgJDEsIHRydWUpKQor
ICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMiwgKiQyLnN0cmlu
ZywgJDEsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAg
ICQkLnR5cGUgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVj
aygkMy5saW5lLCAkMSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxp
bmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDMsICQx
KSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQg
c2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQzLmxp
bmUsICQ0LCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNo
ZWNrKEAzLCAkNCwgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
CiAgICAgICAgICAgICAkMS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgICAgIFRWYXJp
YWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JD
aGVjaygkMy5saW5lLCAqJDIuc3RyaW5nLCAkMSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhAMywgKiQyLnN0cmluZywgJDEsIHZhcmlhYmxlKSkK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBpZiAodmFy
aWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFyaWFibGUt
PmdldFVuaXF1ZUlkKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHwgZnVsbHlfc3BlY2lmaWVk
X3R5cGUgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICB8IGZ1bGx5X3Nw
ZWNpZmllZF90eXBlIGlkZW50aWZpZXIgRVFVQUwgaW5pdGlhbGl6ZXIgeworICAgICAgICBpZiAo
Y29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhAMiwgJDEpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQkLnR5cGUgPSAkMTsKIAogICAgICAgICBU
SW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5p
dGlhbGl6ZXIoJDIubGluZSwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkgeworICAg
ICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcihAMiwgKiQyLnN0cmluZywgJDEs
ICQ0LCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAvLwogICAgICAgICAvLyBCdWlsZCBpbnRlcm1l
ZGlhdGUgcmVwcmVzZW50YXRpb24KICAgICAgICAgLy8KICAgICAgICAgICAgIGlmKGludGVybU5v
ZGUpCi0gICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgJDMubGluZSk7CisgICAgICAgICAgICAg
ICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdh
dGUoaW50ZXJtTm9kZSwgQDMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICQk
LmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMzY3LDExOCArMTM2
Niw1MCBAQCBzaW5nbGVfZGVjbGFyYXRpb24KICAgICAgICAgfQogICAgIH0KICAgICB8IElOVkFS
SUFOVCBJREVOVElGSUVSIHsKLSAgICAgICAgVkVSVEVYX09OTFkoImludmFyaWFudCBkZWNsYXJh
dGlvbiIsICQxLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygk
MS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQg
dmFyeWluZyIpKQorICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwg
QDEpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQudHlwZS5zZXRCYXNpYyhFYnRJ
bnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICQyLmxpbmUpOworICAgICAgICAkJC50
eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgQDIpOwog
ICAgICAgICBpZiAoISQyLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoJDIubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlh
bnQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIs
ICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgJDIuc3RyaW5n
LT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAgICAgfQogICAgICAg
ICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJCQudHlw
ZSksICQyLmxpbmUpOwotICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAkMi5saW5lKTsKKyAgICAgICAgICAg
IFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wo
MCwgKiQyLnN0cmluZywgVFR5cGUoJCQudHlwZSksIEAyKTsKKyAgICAgICAgICAgICQkLmludGVy
bUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwg
QDIpOwogICAgICAgICB9CiAgICAgfQotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUgcGFj
ay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vICAgIHwgYnVmZmVyX3NwZWNpZmllciB7Ci0vLyAg
ICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKLS8vICAgIH0KICAgICA7CiAKLS8vIEdyYW1t
YXIgTm90ZTogIE5vICdlbnVtJywgb3IgJ3R5cGVkZWYnLgotCi0vLwotLy8gUGxhY2UgaG9sZGVy
IGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vJXR5cGUgPGludGVybT4gYnVm
ZmVyX2RlY2xhcmF0aW9uCi0vLyV0eXBlIDxpbnRlcm0udHlwZT4gYnVmZmVyX3NwZWNpZmllciBp
bnB1dF9vcl9vdXRwdXQgYnVmZmVyX2RlY2xhcmF0aW9uX2xpc3QKLS8vYnVmZmVyX3NwZWNpZmll
cgotLy8gICAgOiBpbnB1dF9vcl9vdXRwdXQgTEVGVF9CUkFDRSBidWZmZXJfZGVjbGFyYXRpb25f
bGlzdCBSSUdIVF9CUkFDRSB7Ci0vLyAgICB9Ci0vLyAgICA7Ci0vLwotLy9pbnB1dF9vcl9vdXRw
dXQKLS8vICAgIDogSU5QVVQgewotLy8gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNo
ZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImlucHV0
IikpCi0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLS8vICAgICAgICBVTlBBQ0tf
T05MWSgiaW5wdXQiLCAkMS5saW5lKTsKLS8vICAgICAgICAkJC5xdWFsaWZpZXIgPSBFdnFJbnB1
dDsKLS8vICAgIH0KLS8vICAgIHwgT1VUUFVUIHsKLS8vICAgICAgICBpZiAoY29udGV4dC0+Z2xv
YmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCksICJvdXRwdXQiKSkKLS8vICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotLy8gICAg
ICAgIFBBQ0tfT05MWSgib3V0cHV0IiwgJDEubGluZSk7Ci0vLyAgICAgICAgJCQucXVhbGlmaWVy
ID0gRXZxT3V0cHV0OwotLy8gICAgfQotLy8gICAgOwotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZv
ciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vYnVmZmVyX2RlY2xhcmF0aW9uX2xp
c3QKLS8vICAgIDogYnVmZmVyX2RlY2xhcmF0aW9uIHsKLS8vICAgIH0KLS8vICAgIHwgYnVmZmVy
X2RlY2xhcmF0aW9uX2xpc3QgYnVmZmVyX2RlY2xhcmF0aW9uIHsKLS8vICAgIH0KLS8vICAgIDsK
LQotLy8KLS8vIElucHV0L291dHB1dCBzZW1hbnRpY3M6Ci0vLyAgIGZsb2F0IG11c3QgYmUgMTYg
b3IgMzIgYml0cwotLy8gICBmbG9hdCBhbGlnbm1lbnQgcmVzdHJpY3Rpb25zPwotLy8gICBjaGVj
ayBmb3Igb25seSBvbmUgaW5wdXQgYW5kIG9ubHkgb25lIG91dHB1dAotLy8gICBzdW0gb2YgYml0
ZmllbGRzIGhhcyB0byBiZSBtdWx0aXBsZSBvZiAzMgotLy8KLQotLy8KLS8vIFBsYWNlIGhvbGRl
ciBmb3IgdGhlIHBhY2svdW5wYWNrIGxhbmd1YWdlcy4KLS8vCi0vL2J1ZmZlcl9kZWNsYXJhdGlv
bgotLy8gICAgOiB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIENPTE9OIGNvbnN0YW50X2V4cHJl
c3Npb24gU0VNSUNPTE9OIHsKLS8vICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNo
ZWNrKCQyLmxpbmUsICokMi5zdHJpbmcsIGNvbnRleHQpKQotLy8gICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgJCQudmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCQyLnN0
cmluZywgJDEpOwotLy8gICAgICAgIGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgq
JCQudmFyaWFibGUpKSB7Ci0vLyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJy
ZWRlZmluaXRpb24iLCAkJC52YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotLy8gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgICAgIC8vIGRvbid0IGhhdmUgdG8g
ZGVsZXRlICQkLnZhcmlhYmxlLCB0aGUgcG9vbCBwb3Agd2lsbCB0YWtlIGNhcmUgb2YgaXQKLS8v
ICAgICAgICB9Ci0vLyAgICB9Ci0vLyAgICA7Ci0KIGZ1bGx5X3NwZWNpZmllZF90eXBlCiAgICAg
OiB0eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDE7CiAKICAgICAgICAgaWYgKCQxLmFy
cmF5KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAibm90IHN1cHBvcnRl
ZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEs
ICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkMS5zZXRBcnJheShmYWxzZSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgfCB0eXBlX3F1YWxpZmllciB0eXBlX3NwZWNpZmllciAgewogICAgICAg
ICBpZiAoJDIuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJu
b3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcihAMiwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQyLnNldEFycmF5KGZhbHNl
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRl
ICYmCiAgICAgICAgICAgICAoJDIudHlwZSA9PSBFYnRCb29sIHx8ICQyLnR5cGUgPT0gRWJ0SW50
KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgImNhbm5vdCBiZSBib29s
IG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKEAyLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVy
U3RyaW5nKCQxLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICgoJDEucXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8fCAk
MS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ091dCkgJiYKICAgICAgICAgICAgICgkMi50eXBlID09
IEVidEJvb2wgfHwgJDIudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5n
KCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5ub3Qg
YmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgJCQgPSAkMjsK
QEAgLTE0ODgsMzQgKzE0MTksMzQgQEAgZnVsbHlfc3BlY2lmaWVkX3R5cGUKIAogdHlwZV9xdWFs
aWZpZXIKICAgICA6IENPTlNUX1FVQUwgewotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBF
dnFDb25zdCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0
LCBAMSk7CiAgICAgfQogICAgIHwgQVRUUklCVVRFIHsKLSAgICAgICAgVkVSVEVYX09OTFkoImF0
dHJpYnV0ZSIsICQxLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVj
aygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJhdHRyaWJ1
dGUiKSkKKyAgICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsIEAxKTsKKyAgICAgICAgaWYg
KGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUsICQxLmxpbmUpOwor
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUsIEAxKTsKICAgICB9CiAg
ICAgfCBWQVJZSU5HIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soJDEu
bGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQor
ICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJURVhf
U0hBREVSKQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ091dCwg
JDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0
LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2
cVZhcnlpbmdJbiwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBF
dnFWYXJ5aW5nSW4sIEAxKTsKICAgICB9CiAgICAgfCBJTlZBUklBTlQgVkFSWUlORyB7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgIGlm
IChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJURVhf
U0hBREVSKQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50VmFy
eWluZ091dCwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJ
bnZhcmlhbnRWYXJ5aW5nT3V0LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICQkLnNl
dEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdJbiwgJDEubGluZSk7CisgICAgICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nSW4sIEAxKTsKICAg
ICB9CiAgICAgfCBVTklGT1JNIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hl
Y2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9y
bSIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlmb3Jt
LCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVW5pZm9ybSwgQDEp
OwogICAgIH0KICAgICA7CiAKQEAgLTE1MjUsNyArMTQ1Niw3IEBAIHR5cGVfc3BlY2lmaWVyCiAK
ICAgICAgICAgaWYgKCQkLnByZWNpc2lvbiA9PSBFYnBVbmRlZmluZWQpIHsKICAgICAgICAgICAg
ICQkLnByZWNpc2lvbiA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmdldERlZmF1bHRQcmVjaXNpb24o
JDEudHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVjaygk
MS5saW5lLCAkJC5wcmVjaXNpb24sICQxLnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4
dC0+cHJlY2lzaW9uRXJyb3JDaGVjayhAMSwgJCQucHJlY2lzaW9uLCAkMS50eXBlKSkgewogICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMTU1NSwxMSArMTQ4NiwxMSBAQCB0eXBlX3NwZWNpZmllcl9ub19wcmVjCiAgICAgfCB0
eXBlX3NwZWNpZmllcl9ub25hcnJheSBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBS
SUdIVF9CUkFDS0VUIHsKICAgICAgICAgJCQgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlUeXBlRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVR5cGVFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgICAgICBp
ZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygkMi5saW5lLCAkMywgc2l6ZSkpCisgICAg
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhAMiwgJDMsIHNpemUpKQog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkLnNldEFy
cmF5KHRydWUsIHNpemUpOwogICAgICAgICB9CkBAIC0xNTY5LDExOCArMTUwMCwxMDUgQEAgdHlw
ZV9zcGVjaWZpZXJfbm9fcHJlYwogdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICAgICA6IFZPSURf
VFlQRSB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFZv
aWQsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBGTE9BVF9UWVBFIHsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCBAMSk7CiAgICAg
fQogICAgIHwgSU5UX1RZUEUgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0g
ICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNl
dEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IEJPT0xfVFlQRSB7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9v
bCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsIEAx
KTsKICAgICB9Ci0vLyAgICB8IFVOU0lHTkVEIElOVF9UWVBFIHsKLS8vICAgICAgICBQQUNLX1VO
UEFDS19PTkxZKCJ1bnNpZ25lZCIsICQxLmxpbmUpOwotLy8gICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLS8vICAgICAgICAkJC5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICQxLmxpbmUp
OwotLy8gICAgfQogICAgIHwgVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdh
dGUoMik7CiAgICAgfQogICAgIHwgVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dy
ZWdhdGUoMyk7CiAgICAgfQogICAgIHwgVkVDNCB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOwor
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRB
Z2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgQlZFQzIgewogICAgICAgICBUUXVhbGlmaWVyIHF1
YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBF
dnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICQxLmxpbmUp
OworICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNl
dEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAgfCBCVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgJDEubGlu
ZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsIEAxKTsKICAgICAgICAgJCQu
c2V0QWdncmVnYXRlKDMpOwogICAgIH0KICAgICB8IEJWRUM0IHsKICAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAkMS5s
aW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgICAgICAk
JC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgSVZFQzIgewogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEu
bGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAgICAk
JC5zZXRBZ2dyZWdhdGUoMik7CiAgICAgfQogICAgIHwgSVZFQzMgewogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEu
bGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAgICAk
JC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwgSVZFQzQgewogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEu
bGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAgICAk
JC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgTUFUUklYMiB7Ci0gICAgICAgIEZSQUdf
VkVSVF9PTkxZKCJtYXQyIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dy
ZWdhdGUoMiwgdHJ1ZSk7CiAgICAgfQogICAgIHwgTUFUUklYMyB7Ci0gICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJtYXQzIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdh
dGUoMywgdHJ1ZSk7CiAgICAgfQogICAgIHwgTUFUUklYNCB7Ci0gICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJtYXQ0IiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsK
LSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAk
JC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUo
NCwgdHJ1ZSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJEIHsKLSAgICAgICAgRlJBR19WRVJUX09O
TFkoInNhbXBsZXIyRCIsICQxLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgJDEubGluZSk7Cisg
ICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8
IFNBTVBMRVJDVUJFIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXJDdWJlIiwgJDEu
bGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0U2FtcGxlckN1YmUsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNp
YyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IFNBTVBMRVJfRVhURVJO
QUxfT0VTIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VT
X0VHTF9pbWFnZV9leHRlcm5hbCIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5s
aW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJu
YWxPRVMiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAg
ICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckV4dGVybmFsT0VTIiwgJDEubGluZSk7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2Ft
cGxlckV4dGVybmFsT0VTLCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJEUkVD
VCB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl90ZXh0
dXJlX3JlY3RhbmdsZSIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAi
dW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CisgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcihAMSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVjdCIpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJzYW1wbGVyMkRSZWN0IiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgJDEu
bGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1YWwsIEAxKTsK
ICAgICB9CiAgICAgfCBzdHJ1Y3Rfc3BlY2lmaWVyIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFko
InN0cnVjdCIsICQxLmxpbmUpOwogICAgICAgICAkJCA9ICQxOwogICAgICAgICAkJC5xdWFsaWZp
ZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBF
dnFUZW1wb3Jhcnk7CiAgICAgfQpAQCAtMTY5MSwyOSArMTYwOSwyOSBAQCB0eXBlX3NwZWNpZmll
cl9ub25hcnJheQogICAgICAgICAvLwogICAgICAgICBUVHlwZSYgc3RydWN0dXJlID0gc3RhdGlj
X2Nhc3Q8VFZhcmlhYmxlKj4oJDEuc3ltYm9sKS0+Z2V0VHlwZSgpOwogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwgQDEpOwogICAg
ICAgICAkJC51c2VyRGVmID0gJnN0cnVjdHVyZTsKICAgICB9CiAgICAgOwogCiBzdHJ1Y3Rfc3Bl
Y2lmaWVyCi0gICAgOiBTVFJVQ1QgSURFTlRJRklFUiBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQt
PmVudGVyU3RydWN0RGVjbGFyYXRpb24oJDIubGluZSwgKiQyLnN0cmluZykpIGNvbnRleHQtPnJl
Y292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZykpCisg
ICAgOiBTVFJVQ1QgaWRlbnRpZmllciBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQtPmVudGVyU3Ry
dWN0RGVjbGFyYXRpb24oQDIsICokMi5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IH0gc3Ry
dWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0UgeworICAgICAgICBpZiAoY29udGV4dC0+
cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKIAotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCQ1LCAq
JDIuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0
cnVjdHVyZSgkMi5zdHJpbmcsICQ1KSk7CiAgICAgICAgIFRWYXJpYWJsZSogdXNlclR5cGVEZWYg
PSBuZXcgVFZhcmlhYmxlKCQyLnN0cmluZywgKnN0cnVjdHVyZSwgdHJ1ZSk7CiAgICAgICAgIGlm
ICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgqdXNlclR5cGVEZWYpKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAicmVkZWZpbml0aW9uIiwgJDIuc3RyaW5nLT5j
X3N0cigpLCAic3RydWN0Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInJlZGVm
aW5pdGlvbiIsICQyLnN0cmluZy0+Y19zdHIoKSwgInN0cnVjdCIpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVj
dCwgRXZxVGVtcG9yYXJ5LCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0
LCBFdnFUZW1wb3JhcnksIEAxKTsKICAgICAgICAgJCQudXNlckRlZiA9IHN0cnVjdHVyZTsKICAg
ICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CiAgICAgfQotICAgIHwgU1RS
VUNUIExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigkMi5s
aW5lLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJhdGlv
bl9saXN0IFJJR0hUX0JSQUNFIHsKLSAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlw
ZSgkNCwgVFN0cmluZygiIikpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRl
bXBvcmFyeSwgJDEubGluZSk7CisgICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSB7IGlmIChjb250ZXh0
LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKEAyLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3Zl
cigpOyB9IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKKyAgICAgICAgVFR5
cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZShOZXdQb29sVFN0cmluZygi
IiksICQ0KSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCBA
MSk7CiAgICAgICAgICQkLnVzZXJEZWYgPSBzdHJ1Y3R1cmU7CiAgICAgICAgIGNvbnRleHQtPmV4
aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwogICAgIH0KQEAgLTE3MjUsMTQgKzE2NDMsMTUgQEAgc3Ry
dWN0X2RlY2xhcmF0aW9uX2xpc3QKICAgICB9CiAgICAgfCBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlz
dCBzdHJ1Y3RfZGVjbGFyYXRpb24gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8ICQyLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCAkJC0+c2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAg
ICAgICBpZiAoKCokJClbal0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKCokMilbaV0udHlwZS0+
Z2V0RmllbGROYW1lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKCok
MilbaV0ubGluZSwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3RydWN0
IiwgKCokMilbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkuY19zdHIoKSk7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgJDItPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBURmllbGQq
IGZpZWxkID0gKCokMilbaV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICQk
LT5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIGlmICgoKiQkKVtqXS0+bmFtZSgpID09
IGZpZWxkLT5uYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIs
ICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxkLT5u
YW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAkJC0+cHVzaF9i
YWNrKCgqJDIpW2ldKTsKKyAgICAgICAgICAgICQkLT5wdXNoX2JhY2soZmllbGQpOwogICAgICAg
ICB9CiAgICAgfQogICAgIDsKQEAgLTE3NDEsMTQgKzE2NjAsMTQgQEAgc3RydWN0X2RlY2xhcmF0
aW9uCiAgICAgOiB0eXBlX3NwZWNpZmllciBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IFNFTUlDT0xP
TiB7CiAgICAgICAgICQkID0gJDI7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNo
ZWNrKCQxLmxpbmUsICgqJDIpWzBdLnR5cGUtPmdldEZpZWxkTmFtZSgpLCAkMSkpIHsKKyAgICAg
ICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNoZWNrKEAxLCAoKiQyKVswXS0+bmFtZSgpLCAkMSkp
IHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICQkLT5zaXplKCk7ICsraSkgewogICAgICAgICAg
ICAgLy8KICAgICAgICAgICAgIC8vIENhcmVmdWwgbm90IHRvIHJlcGxhY2UgYWxyZWFkeSBrbm93
biBhc3BlY3RzIG9mIHR5cGUsIGxpa2UgYXJyYXktbmVzcwogICAgICAgICAgICAgLy8KLSAgICAg
ICAgICAgIFRUeXBlKiB0eXBlID0gKCokJClbaV0udHlwZTsKKyAgICAgICAgICAgIFRUeXBlKiB0
eXBlID0gKCokJClbaV0tPnR5cGUoKTsKICAgICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlwZSgk
MS50eXBlKTsKICAgICAgICAgICAgIHR5cGUtPnNldE5vbWluYWxTaXplKCQxLnNpemUpOwogICAg
ICAgICAgICAgdHlwZS0+c2V0TWF0cml4KCQxLm1hdHJpeCk7CkBAIC0xNzU2LDI2ICsxNjc1LDIz
IEBAIHN0cnVjdF9kZWNsYXJhdGlvbgogCiAgICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBhcnJh
eXMgb2YgYXJyYXlzCiAgICAgICAgICAgICBpZiAodHlwZS0+aXNBcnJheSgpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soJDEubGluZSwgJDEpKQor
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAxLCAkMSkp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmICgkMS5hcnJheSkKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRBcnJh
eVNpemUoJDEuYXJyYXlTaXplKTsKLSAgICAgICAgICAgIGlmICgkMS51c2VyRGVmKSB7CisgICAg
ICAgICAgICBpZiAoJDEudXNlckRlZikKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRTdHJ1Y3Qo
JDEudXNlckRlZi0+Z2V0U3RydWN0KCkpOwotICAgICAgICAgICAgICAgIHR5cGUtPnNldFR5cGVO
YW1lKCQxLnVzZXJEZWYtPmdldFR5cGVOYW1lKCkpOwotICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soJDEubGluZSwgKnR5cGUp
KSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soQDEs
ICooKiQkKVtpXSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIDsKIAogc3RydWN0X2RlY2xhcmF0b3JfbGlz
dAogICAgIDogc3RydWN0X2RlY2xhcmF0b3IgewotICAgICAgICAkJCA9IE5ld1Bvb2xUVHlwZUxp
c3QoKTsKKyAgICAgICAgJCQgPSBOZXdQb29sVEZpZWxkTGlzdCgpOwogICAgICAgICAkJC0+cHVz
aF9iYWNrKCQxKTsKICAgICB9CiAgICAgfCBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IENPTU1BIHN0
cnVjdF9kZWNsYXJhdG9yIHsKQEAgLTE3ODQsMjYgKzE3MDAsMjQgQEAgc3RydWN0X2RlY2xhcmF0
b3JfbGlzdAogICAgIDsKIAogc3RydWN0X2RlY2xhcmF0b3IKLSAgICA6IElERU5USUZJRVIgewot
ICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5zdHJp
bmcpKQorICAgIDogaWRlbnRpZmllciB7CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVy
cm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogCi0gICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsK
LSAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7Ci0gICAgICAgICQkLnR5cGUtPnNldEZpZWxkTmFt
ZSgqJDEuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwg
RWJwVW5kZWZpbmVkKTsKKyAgICAgICAgJCQgPSBuZXcgVEZpZWxkKHR5cGUsICQxLnN0cmluZyk7
CiAgICAgfQotICAgIHwgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lv
biBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVj
aygkMS5saW5lLCAqJDEuc3RyaW5nKSkKKyAgICB8IGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIGNv
bnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGlmIChjb250ZXh0LT5y
ZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogCi0gICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5k
ZWZpbmVkKTsKLSAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7Ci0gICAgICAgICQkLnR5cGUtPnNl
dEZpZWxkTmFtZSgqJDEuc3RyaW5nKTsKLQotICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDIubGluZSwgJDMsIHNpemUpKQorICAgICAg
ICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAgICAg
ICBpbnQgc2l6ZSA9IDA7CisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNr
KEAzLCAkMywgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICQkLnR5cGUtPnNldEFycmF5U2l6ZShzaXplKTsKKyAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXpl
KHNpemUpOworCisgICAgICAgICQkID0gbmV3IFRGaWVsZCh0eXBlLCAkMS5zdHJpbmcpOwogICAg
IH0KICAgICA7CiAKQEAgLTE4MzUsNyArMTc0OSw3IEBAIGNvbXBvdW5kX3N0YXRlbWVudAogICAg
IHwgTEVGVF9CUkFDRSB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfSBzdGF0ZW1lbnRf
bGlzdCB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyB9IFJJR0hUX0JSQUNFIHsKICAgICAg
ICAgaWYgKCQzICE9IDApIHsKICAgICAgICAgICAgICQzLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0g
ICAgICAgICAgICAkMy0+c2V0RW5kTGluZSgkNS5saW5lKTsKKyAgICAgICAgICAgICQzLT5zZXRM
aW5lKEAkKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQzOwogICAgIH0KQEAgLTE4NTksNyAr
MTc3Myw3IEBAIGNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUKICAgICB8IExFRlRfQlJB
Q0Ugc3RhdGVtZW50X2xpc3QgUklHSFRfQlJBQ0UgewogICAgICAgICBpZiAoJDIpIHsKICAgICAg
ICAgICAgICQyLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAkMi0+c2V0RW5kTGlu
ZSgkMy5saW5lKTsKKyAgICAgICAgICAgICQyLT5zZXRMaW5lKEAkKTsKICAgICAgICAgfQogICAg
ICAgICAkJCA9ICQyOwogICAgIH0KQEAgLTE4NjcsMTAgKzE3ODEsMTAgQEAgY29tcG91bmRfc3Rh
dGVtZW50X25vX25ld19zY29wZQogCiBzdGF0ZW1lbnRfbGlzdAogICAgIDogc3RhdGVtZW50IHsK
LSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMSwgMCk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoJDEsIEAk
KTsKICAgICB9CiAgICAgfCBzdGF0ZW1lbnRfbGlzdCBzdGF0ZW1lbnQgewotICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLCAkMiwgMCk7CisgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCBAJCk7CiAg
ICAgfQogICAgIDsKIApAQCAtMTg4MSw5ICsxNzk1LDkgQEAgZXhwcmVzc2lvbl9zdGF0ZW1lbnQK
IAogc2VsZWN0aW9uX3N0YXRlbWVudAogICAgIDogSUYgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJ
R0hUX1BBUkVOIHNlbGVjdGlvbl9yZXN0X3N0YXRlbWVudCB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5ib29sRXJyb3JDaGVjaygkMS5saW5lLCAkMykpCisgICAgICAgIGlmIChjb250ZXh0LT5ib29s
RXJyb3JDaGVjayhAMSwgJDMpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oJDMsICQ1LCAkMS5s
aW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCQz
LCAkNSwgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTE5MDcsMTQgKzE4MjEsMTQgQEAgY29uZGl0
aW9uCiAgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkMS0+Z2V0TGluZSgpLCAk
MSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQotICAgIHwgZnVsbHlf
c3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7CisgICAgfCBmdWxs
eV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVyIHsKICAgICAgICAg
VEludGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFs
aWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVj
dFF1YWxpZmllckVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5p
dGlhbGl6ZXIoJDIubGluZSwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoQDIsICokMi5zdHJpbmcsICQxLCAk
NCwgaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAkJCA9ICQ0OwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKQEAgLTE5MjYsMTkgKzE4NDAsMTkgQEAgY29u
ZGl0aW9uCiBpdGVyYXRpb25fc3RhdGVtZW50CiAgICAgOiBXSElMRSBMRUZUX1BBUkVOIHsgY29u
dGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0g
Y29uZGl0aW9uIFJJR0hUX1BBUkVOIHN0YXRlbWVudF9ub19uZXdfc2NvcGUgewogICAgICAgICBj
b250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAkNCwgMCwgJDYsICQxLmxpbmUpOworICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hpbGUsIDAsICQ0LCAw
LCAkNiwgQDEpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7CiAgICAgfQog
ICAgIHwgRE8geyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0gc3RhdGVtZW50X3dpdGhf
c2NvcGUgV0hJTEUgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIFNFTUlDT0xPTiB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkOC5saW5lLCAkNikpCisgICAg
ICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjayhAOCwgJDYpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZExvb3AoRUxvb3BEb1doaWxlLCAwLCAkNiwgMCwgJDMsICQ0LmxpbmUpOworICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRG9XaGlsZSwgMCwgJDYsIDAsICQz
LCBANCk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAg
fCBGT1IgTEVGVF9QQVJFTiB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0
LT5sb29wTmVzdGluZ0xldmVsOyB9IGZvcl9pbml0X3N0YXRlbWVudCBmb3JfcmVzdF9zdGF0ZW1l
bnQgUklHSFRfUEFSRU4gc3RhdGVtZW50X25vX25ld19zY29wZSB7CiAgICAgICAgIGNvbnRleHQt
PnN5bWJvbFRhYmxlLnBvcCgpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRMb29wKEVMb29wRm9yLCAkNCwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigkNS5u
b2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oJDUubm9kZTIpLCAkNywgJDEu
bGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BG
b3IsICQ0LCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCQ1Lm5vZGUxKSwgcmVpbnRl
cnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigkNS5ub2RlMiksICQ3LCBAMSk7CiAgICAgICAgIC0t
Y29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAgOwpAQCAtMTk3NSwzOSArMTg4
OSwzOSBAQCBmb3JfcmVzdF9zdGF0ZW1lbnQKIGp1bXBfc3RhdGVtZW50CiAgICAgOiBDT05USU5V
RSBTRU1JQ09MT04gewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiY29udGludWUgc3RhdGVt
ZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKEAxLCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsICQxLmxpbmUpOwor
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUs
IEAxKTsKICAgICB9CiAgICAgfCBCUkVBSyBTRU1JQ09MT04gewogICAgICAgICBpZiAoY29udGV4
dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigk
MS5saW5lLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxsb3dl
ZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQnJl
YWssICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFu
Y2goRU9wQnJlYWssIEAxKTsKICAgICB9CiAgICAgfCBSRVRVUk4gU0VNSUNPTE9OIHsKLSAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgJDEubGlu
ZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1
cm4sIEAxKTsKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJh
c2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxp
bmUsICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJl
dHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9CiAgICAgfQogICAgIHwgUkVUVVJOIGV4cHJlc3Npb24gU0VNSUNPTE9OIHsK
LSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwg
JDIsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFu
Y2goRU9wUmV0dXJuLCAkMiwgQDEpOwogICAgICAgICBjb250ZXh0LT5mdW5jdGlvblJldHVybnNW
YWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5n
ZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigk
MS5saW5lLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgInZvaWQgZnVuY3Rpb24gY2Fubm90IHJl
dHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9IGVsc2UgaWYgKCooY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZSkgIT0g
JDItPmdldFR5cGUoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1
bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CisgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcg
dHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgfCBESVNDQVJEIFNFTUlDT0xPTiB7Ci0gICAgICAgIEZSQUdfT05M
WSgiZGlzY2FyZCIsICQxLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCcmFuY2goRU9wS2lsbCwgJDEubGluZSk7CisgICAgICAgIEZSQUdfT05MWSgiZGlzY2Fy
ZCIsIEAxKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVP
cEtpbGwsIEAxKTsKICAgICB9CiAgICAgOwogCkBAIC0yMDE5LDcgKzE5MzMsNyBAQCB0cmFuc2xh
dGlvbl91bml0CiAgICAgICAgIGNvbnRleHQtPnRyZWVSb290ID0gJCQ7CiAgICAgfQogICAgIHwg
dHJhbnNsYXRpb25fdW5pdCBleHRlcm5hbF9kZWNsYXJhdGlvbiB7Ci0gICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCAwKTsKKyAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMSwgJDIsIEAkKTsKICAgICAg
ICAgY29udGV4dC0+dHJlZVJvb3QgPSAkJDsKICAgICB9CiAgICAgOwpAQCAtMjA0MSw3ICsxOTU1
LDcgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAKICAgICAgICAgaWYgKGJ1aWx0SW4p
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJidWlsdC1p
biBmdW5jdGlvbnMgY2Fubm90IGJlIHJlZGVmaW5lZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19z
dHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImJ1aWx0LWluIGZ1bmN0aW9u
cyBjYW5ub3QgYmUgcmVkZWZpbmVkIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTIw
NTUsNyArMTk2OSw3IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgICAgIC8vCiAgICAg
ICAgICAgICAvLyBUaGVuIHRoaXMgZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5LgogICAgICAg
ICAgICAgLy8KLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJmdW5jdGlvbiBh
bHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHkiLCBm
dW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9CiAgICAgICAgIHByZXZEZWMtPnNldERlZmluZWQoKTsKQEAgLTIwNjUs
MTEgKzE5NzksMTEgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAvLwogICAgICAgICBp
ZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAibWFpbiIpIHsKICAgICAgICAgICAgIGlmIChmdW5j
dGlvbi0+Z2V0UGFyYW1Db3VudCgpID4gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCQxLmxpbmUsICJmdW5jdGlvbiBjYW5ub3QgdGFrZSBhbnkgcGFyYW1ldGVyKHMpIiwgZnVu
Y3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cihAMSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+
Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgp
LmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigkMS5saW5lLCAiIiwgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmlu
ZygpLCAibWFpbiBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcihAMSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0
QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7CiAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yMDk3LDcgKzIwMTEsNyBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAgICAg
ICAgICAgLy8gSW5zZXJ0IHRoZSBwYXJhbWV0ZXJzIHdpdGggbmFtZSBpbiB0aGUgc3ltYm9sIHRh
YmxlLgogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+
c3ltYm9sVGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoJDEubGluZSwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCku
Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAicmVkZWZp
bml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICAgICBkZWxldGUgdmFyaWFi
bGU7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjEwOCwxNCArMjAyMiwxNSBAQCBmdW5jdGlvbl9k
ZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5ncm93QWdncmVnYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbU5vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5n
ZXRVbmlxdWVJZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEubGluZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJs
ZS0+Z2V0VHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEpOwogICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdy
b3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAiIiwgKnBhcmFtLnR5cGUsICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICBw
YXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2Rl
cywgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsIEAx
KSwgQDEpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPmludGVy
bWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihwYXJhbU5vZGVzLCBFT3BQYXJhbWV0ZXJzLCAk
MS5saW5lKTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJh
dG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsIEAxKTsKICAgICAgICAgJDEuaW50ZXJtQWdn
cmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAgICAgY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA9
IDA7CiAgICAgfQpAQCAtMjEyMywxMiArMjAzOCwxMiBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAg
ICAgICAgIC8vPz8gQ2hlY2sgdGhhdCBhbGwgcGF0aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0dXJu
IHR5cGUgIT0gdm9pZCA/CiAgICAgICAgIC8vICAgTWF5IGJlIGJlc3QgZG9uZSBhcyBwb3N0IHBy
b2Nlc3MgcGhhc2Ugb24gaW50ZXJtZWRpYXRlIGNvZGUKICAgICAgICAgaWYgKGNvbnRleHQtPmN1
cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQgJiYgISBjb250ZXh0
LT5mdW5jdGlvblJldHVybnNWYWx1ZSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEu
bGluZSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlOiIsICIiLCAkMS5mdW5jdGlv
bi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJm
dW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAiIiwgJDEuZnVuY3Rpb24tPmdldE5h
bWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3Jl
Z2F0ZSgkMS5pbnRlcm1BZ2dyZWdhdGUsICQzLCAwKTsKLSAgICAgICAgY29udGV4dC0+aW50ZXJt
ZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQkLCBFT3BGdW5jdGlvbiwgJDEubGluZSk7Cisg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJt
QWdncmVnYXRlLCAkMywgQCQpOworICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdn
cmVnYXRlT3BlcmF0b3IoJCQsIEVPcEZ1bmN0aW9uLCBAMSk7CiAgICAgICAgICQkLT5nZXRBc0Fn
Z3JlZ2F0ZSgpLT5zZXROYW1lKCQxLmZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFtZSgpLmNfc3RyKCkp
OwogICAgICAgICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0VHlwZSgkMS5mdW5jdGlvbi0+Z2V0
UmV0dXJuVHlwZSgpKTsKIApAQCAtMjEzNywxNSArMjA1MiwxNyBAQCBmdW5jdGlvbl9kZWZpbml0
aW9uCiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRPcHRpbWl6ZShjb250ZXh0LT5w
cmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXREZWJ1
Zyhjb250ZXh0LT5wcmFnbWEoKS5kZWJ1Zyk7CiAKLSAgICAgICAgaWYgKCQzICYmICQzLT5nZXRB
c0FnZ3JlZ2F0ZSgpKQotICAgICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldEVuZExp
bmUoJDMtPmdldEFzQWdncmVnYXRlKCktPmdldEVuZExpbmUoKSk7Ci0KICAgICAgICAgY29udGV4
dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgfQogICAgIDsKIAogJSUKIAordm9pZCB5eWVycm9y
KFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVh
c29uKSB7CisgICAgY29udGV4dC0+ZXJyb3IoKnl5bGxvYywgcmVhc29uLCAiIik7CisgICAgY29u
dGV4dC0+cmVjb3ZlcigpOworfQorCiBpbnQgZ2xzbGFuZ19wYXJzZShUUGFyc2VDb250ZXh0KiBj
b250ZXh0KSB7CiAgICAgcmV0dXJuIHl5cGFyc2UoY29udGV4dCk7CiB9CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAJ
KHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9nbHNsYW5nX2xleC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jbGluZSAx
NyAiLi9nbHNsYW5nLmwiCisjbGluZSAxNyAic3JjL2NvbXBpbGVyL2dsc2xhbmcubCIKIC8vCiAv
LyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKQEAgLTIxLDcgKzIxLDcgQEAKIAogCiAKLSNs
aW5lIDI1ICIuL2dsc2xhbmdfbGV4LmNwcCIKKyNsaW5lIDI1ICJzcmMvY29tcGlsZXIvZ2xzbGFu
Z19sZXguY3BwIgogCiAjZGVmaW5lICBZWV9JTlRfQUxJR05FRCBzaG9ydCBpbnQKIApAQCAtMzg0
LDggKzM4NCw4IEBAIHN0YXRpYyB2b2lkIHl5X2ZhdGFsX2Vycm9yICh5eWNvbnN0IGNoYXIKIAkq
eXlfY3AgPSAnXDAnOyBcCiAJeXlnLT55eV9jX2J1Zl9wID0geXlfY3A7CiAKLSNkZWZpbmUgWVlf
TlVNX1JVTEVTIDE1NQotI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSIDE1NgorI2RlZmluZSBZWV9O
VU1fUlVMRVMgMTQ3CisjZGVmaW5lIFlZX0VORF9PRl9CVUZGRVIgMTQ4CiAvKiBUaGlzIHN0cnVj
dCBpcyBub3QgdXNlZCBpbiB0aGlzIHNjYW5uZXIsCiAgICBidXQgaXRzIHByZXNlbmNlIGlzIG5l
Y2Vzc2FyeS4gKi8KIHN0cnVjdCB5eV90cmFuc19pbmZvCkBAIC0zOTMsNTggKzM5Myw1NyBAQCBz
dHJ1Y3QgeXlfdHJhbnNfaW5mbwogCWZsZXhfaW50MzJfdCB5eV92ZXJpZnk7CiAJZmxleF9pbnQz
Ml90IHl5X254dDsKIAl9Owotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2FjY2VwdFs0
NTldID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2NlcHRbNDQzXSA9CiAgICAg
eyAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAxNTYsICAx
NTQsICAxNTMsICAxNTMsCi0gICAgICAxMzgsICAxNDQsICAxNDksICAxMzMsICAxMzQsICAxNDIs
ICAxNDEsICAxMzAsICAxMzksICAxMzcsCi0gICAgICAxNDMsICAxMDIsICAxMDIsICAxMzEsICAx
MjcsICAxNDUsICAxMzIsICAxNDYsICAxNTAsICAgOTgsCi0gICAgICAxMzUsICAxMzYsICAxNDgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAg
ICAgOTgsICAgOTgsICAgOTgsICAxMjgsICAxNDcsICAxMjksICAxNDAsICAgIDMsICAgIDQsICAg
IDMsCi0gICAgICAxNTIsICAxNTUsICAxNTEsICAxMjQsICAxMTAsICAxMjksICAxMTgsICAxMTMs
ICAxMDgsICAxMTYsCi0gICAgICAxMDYsICAxMTcsICAxMDcsICAxMDUsICAgIDIsICAgIDEsICAx
MDksICAxMDQsICAxMDAsICAxMDEsCi0gICAgICAgIDAsICAgIDAsICAxMDIsICAxMzYsICAxMjgs
ICAxMzUsICAxMjUsICAxMjEsICAxMjMsICAxMjIsCi0gICAgICAxMjYsICAgOTgsICAxMTQsICAx
MjAsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0KLSAgICAgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICAxNywgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAyMCwgICAy
MiwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgIDExNSwgIDExOSwgICAgNSwKLSAgICAgIDE1MSwgICAgMCwgICAgMSwgIDEw
NCwgICAgMCwgICAgMCwgIDEwMywgICA5OSwgIDExMSwgIDExMiwKLSAgICAgICA1MCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAxOCwK
LSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAy
NiwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICAyMywgICA5OCwgICA5OCwKLQotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgICAwLCAg
MTA1LCAgICAwLCAgMTA0LCAgIDk4LCAgIDI4LCAgIDk4LCAgIDk4LCAgIDk1LAotICAgICAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDIxLCAgIDUzLCAgIDk4LAot
ICAgICAgIDk4LCAgIDk4LCAgIDY5LCAgIDk4LCAgIDk4LCAgIDU4LCAgIDczLCAgIDk4LCAgIDk4
LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDcwLCAgICA5LCAg
IDMzLCAgIDM0LCAgIDM1LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDU2LCAgIDI5LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDM2LCAgIDM3LCAgIDM4LCAgIDI3LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAg
IDE1LCAgIDQyLCAgIDQzLCAgIDQ0LCAgIDUxLCAgIDEyLCAgIDk4LCAgIDk4LCAgIDk4LAotCi0g
ICAgICAgOTgsICAgODIsICAgODMsICAgODQsICAgOTgsICAgMzAsICAgNzQsICAgMjUsICAgODUs
ICAgODYsCi0gICAgICAgODcsICAgIDcsICAgNzksICAgODAsICAgODEsICAgOTgsICAgMjQsICAg
NzcsICAgOTgsICAgOTgsCi0gICAgICAgMzksICAgNDAsICAgNDEsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgNzEsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgNTIsICAgOTgs
ICAgOTcsICAgOTgsICAgOTgsICAgMTksICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAg
NzIsICAgNjYsICAgNjEsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNzgsCi0gICAg
ICAgNTcsICAgOTgsICAgNjQsICAgMzIsICAgOTgsICAgOTQsICAgNjUsICAgNDksICAgNzYsICAg
NTksCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgNjAsICAgMzEsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgIDgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgNTQsCi0gICAgICAgMTMsICAgOTgsICAgMTQsICAgOTgsICAgOTgs
ICAgMTYsICAgNjcsICAgOTgsICAgOTgsICAgOTgsCi0KLSAgICAgICA2MiwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA1NSwgICA3NSwgICA2MywKLSAgICAgICAxMSwgICA2
OCwgICAgNiwgICA5NiwgICAxMCwgICA4OCwgICA0NSwgICA4OSwgICA5OCwgICA5OCwKLSAgICAg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwKLSAgICAgICA0NiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA0OCwgICA5OCwKLSAgICAgICA5MiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
MCwgICA5OCwgICA5MSwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA0NywgICA5MywgICAgMAorICAgICAgICAwLCAgICAwLCAgMTQ4LCAgMTQ2LCAgMTQ1LCAgMTQ1
LCAgMTMyLCAgMTM4LCAgMTQzLCAgMTI3LAorICAgICAgMTI4LCAgMTM2LCAgMTM1LCAgMTI0LCAg
MTMzLCAgMTMxLCAgMTM3LCAgIDk2LCAgIDk2LCAgMTI1LAorICAgICAgMTIxLCAgMTM5LCAgMTI2
LCAgMTQwLCAgMTQ0LCAgIDkzLCAgMTI5LCAgMTMwLCAgMTQyLCAgIDkzLAorICAgICAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAg
ICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
MTIyLAorICAgICAgMTQxLCAgMTIzLCAgMTM0LCAgMTE4LCAgMTA0LCAgMTIzLCAgMTEyLCAgMTA3
LCAgMTAyLCAgMTEwLAorICAgICAgMTAwLCAgMTExLCAgMTAxLCAgIDk5LCAgMTAzLCAgIDk4LCAg
IDk1LCAgIDk2LCAgICAwLCAgICAwLAorICAgICAgMTMwLCAgMTIyLCAgMTI5LCAgMTE5LCAgMTE1
LCAgMTE3LCAgMTE2LCAgMTIwLCAgIDkzLCAgMTA4LAorICAgICAgMTE0LCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDEy
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorCisgICAg
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgMTUsICAgMTcsICAgOTMsICAgOTMsICAg
OTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAxMDks
ICAxMTMsICAgIDAsICAgOTgsICAgIDAsICAgIDAsCisgICAgICAgOTcsICAgOTQsICAxMDUsICAx
MDYsICAgNDUsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAg
OTMsICAgOTMsICAgOTMsICAgMTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
CisgICAgICAgOTMsICAgOTMsICAgMjEsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsCisgICAgICAgOTMsICAgMTgsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisKKyAgICAgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICAgMCwgICA5OSwgICAgMCwgICA5OCwgICA5MywKKyAgICAgICAyMywgICA5Mywg
ICA5MywgICA5MCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5
MywgICAxNiwgICA0OCwgICA5MywgICA5MywgICA5MywgICA2NCwgICA5MywgICA5MywgICA1MywK
KyAgICAgICA2OCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA2NSwKKyAgICAgICAgNCwgICAyOCwgICAyOSwgICAzMCwgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA1MSwgICAyNCwgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICAzMSwgICAzMiwKKyAgICAgICAzMywgICAyMiwgICA5
MywgICA5MywgICA5MywgICAxMCwgICAzNywgICAzOCwgICAzOSwgICA0NiwKKyAgICAgICAgNywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA3NywgICA3OCwgICA3OSwgICA5MywgICAyNSwKKyAg
ICAgICA2OSwgICAyMCwgICA4MCwgICA4MSwgICA4MiwgICAgMiwgICA3NCwgICA3NSwgICA3Niwg
ICA5MywKKworICAgICAgIDE5LCAgIDcyLCAgIDkzLCAgIDkzLCAgIDM0LCAgIDM1LCAgIDM2LCAg
IDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDY2LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDQ3LCAgIDkzLCAgIDkyLCAgIDkzLCAgIDkzLAorICAgICAgIDE0LCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDY3LCAgIDYxLCAgIDU2LCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAg
IDkzLCAgIDkzLCAgIDczLCAgIDUyLCAgIDkzLCAgIDU5LCAgIDI3LCAgIDkzLCAgIDg5LAorICAg
ICAgIDYwLCAgIDQ0LCAgIDcxLCAgIDU0LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDU1LCAgIDI2LCAgIDkzLCAgIDkzLCAgIDkzLCAgICAz
LCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDQ5LCAgICA4LCAgIDkzLCAg
ICA5LCAgIDkzLCAgIDkzLCAgIDExLAorICAgICAgIDYyLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDU3
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDUwLCAgIDcwLCAg
IDU4LCAgICA2LCAgIDYzLCAgICAxLCAgIDkxLCAgICA1LCAgIDgzLAorCisgICAgICAgNDAsICAg
ODQsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAg
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNDEsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsCisgICAgICAgOTMsICAgOTMsICAgNDMsICAgOTMsICAgODcsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsCisgICAgICAgODUsICAgOTMsICAgODYsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgNDIsCisgICAgICAgODgsICAgIDAKICAgICB9IDsKIAogc3RhdGlj
IHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQpAQCAtNDgxLDIxMiArNDgwLDE5OCBA
QCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfZWNbMjU2XSA9CiAKIHN0YXRpYyB5eWNv
bnN0IGZsZXhfaW50MzJfdCB5eV9tZXRhWzY4XSA9CiAgICAgeyAgIDAsCi0gICAgICAgIDEsICAg
IDEsICAgIDIsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCi0gICAg
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAg
IDMsCi0gICAgICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMs
ICAgIDMsICAgIDMsCi0gICAgICAgIDMsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAg
IDEsICAgIDEsICAgIDEsICAgIDMsCi0gICAgICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMs
ICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsCi0gICAgICAgIDQsICAgIDQsICAgIDQsICAg
IDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsCi0gICAgICAgIDQsICAgIDQs
ICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAgIDEKKyAgICAgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKKyAgICAgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMiwKKyAgICAgICAg
MiwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMiwgICAgMiwgICAgMiwK
KyAgICAgICAgMiwgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMSwgICAgMSwgICAg
MSwgICAgMiwKKyAgICAgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMywgICAgMywg
ICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAg
MywgICAgMywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAgMywgICAgMywgICAgMSwg
ICAgMSwgICAgMSwgICAgMQogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3Qg
eXlfYmFzZVs0NjRdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9iYXNlWzQ0NV0g
PQogICAgIHsgICAwLAotICAgICAgICAwLCAgICAwLCAgIDY1LCAgIDY2LCAgIDc1LCAgICAwLCAg
NjgwLCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjU0LCAgIDQ1LCAgMTM3LCAgNjgxLCAgNjgx
LCAgNjUzLCAgMTM0LCAgNjgxLCAgMTMzLCAgMTMxLAotICAgICAgMTQ2LCAgMTU5LCAgMTY4LCAg
NjUxLCAgNjgxLCAgMTg2LCAgNjUxLCAgIDQ3LCAgNjgxLCAgICAwLAotICAgICAgNjgxLCAgNjgx
LCAgMTI4LCAgMTAwLCAgMTEwLCAgMTUyLCAgMTU2LCAgMTQ2LCAgMTY2LCAgNjIyLAotICAgICAg
MTczLCAgMTA5LCAgNjIxLCAgMTI2LCAgMTc3LCAgNjE1LCAgMTc4LCAgNjI4LCAgMTg3LCAgMTg0
LAotICAgICAgMTQxLCAgMTk3LCAgNjI0LCAgNjgxLCAgMTU3LCAgNjgxLCAgNjgxLCAgNjgxLCAg
NjgxLCAgNjU2LAotICAgICAgNjgxLCAgNjgxLCAgICAwLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgx
LCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjgxLCAgNjgxLCAgNjgxLCAgMjM2LCAgNjgxLCAg
ICAwLCAgNjgxLCAgMjQzLCAgMjczLCAgMjgyLAotICAgICAgMzA0LCAgICAwLCAgMzE0LCAgNjgx
LCAgNjgxLCAgNjgxLCAgNjQ0LCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjQzLCAgICAwLCAg
NjgxLCAgNjgxLCAgNjE2LCAgNjA5LCAgNjEyLCAgNjIwLCAgNjE5LCAgNjA2LAotCi0gICAgICA2
MjEsICA2MDgsICA2MTQsICA2MDIsICA1OTksICA2MTIsICA1OTksICA1OTYsICA1OTYsICA2MDIs
Ci0gICAgICA1OTAsICAxODksICA1OTUsICA2MDUsICA1OTEsICA1OTcsICA2MDAsICA2MDEsICAg
IDAsICAyMTYsCi0gICAgICA2MDAsICAxODgsICA1ODYsICA1OTksICA1OTAsICA1OTIsICA1ODIs
ICA1OTYsICA1OTMsICA1OTUsCi0gICAgICA1NzgsICA1ODMsICA1ODAsICA1NjksICAxODMsICA1
NzcsICA1ODIsICA1NzgsICA1ODAsICA1NjksCi0gICAgICA1NzIsICAyMjAsICA1NzcsICA1Njks
ICA1ODEsICAxNzYsICA1NzQsICA2ODEsICA2ODEsICA2ODEsCi0gICAgICAgIDAsICAzMzEsICAg
IDAsICAzNDQsICAzNjEsICAyOTAsICAzNzQsICAgIDAsICA2ODEsICA2ODEsCi0gICAgICAgIDAs
ICA1NjYsICA1NzAsICA1NzksICA1NzYsICA1NjAsICA1NjAsICAyMTUsICA1NzUsICA1NzIsCi0g
ICAgICA1NzIsICA1NzAsICA1NjcsICA1NTksICA1NjUsICA1NTIsICA1NjMsICA1NDksICA1NjUs
ICAgIDAsCi0gICAgICA1NjIsICA1NTAsICA1NTcsICA1NTQsICA1NTgsICA1NTEsICA1NDAsICA1
MzksICA1NTIsICA1NTUsCi0gICAgICA1NTIsICA1NDcsICA1MzgsICAyNjAsICA1NDMsICA1NDYs
ICA1MzcsICA1MzQsICA1MzgsICA1NDQsCi0KLSAgICAgIDUzNSwgIDUyNiwgIDUyOSwgIDUyNywg
IDUzNywgIDUyMywgIDUyMSwgIDUzNCwgIDUyMCwgIDUyMiwKLSAgICAgIDUxOSwgIDUzMCwgIDUy
OSwgIDI4MywgIDUyNCwgIDUxOSwgIDUwOCwgIDI2NCwgIDUyNiwgIDUyOCwKLSAgICAgIDUxNywg
IDM4MSwgIDM4OCwgIDM5NSwgIDQwMiwgIDUxOCwgICAgMCwgIDUxNiwgIDMyMCwgICAgMCwKLSAg
ICAgIDUwOCwgIDUwNiwgIDUxNCwgIDUwMywgIDUyMCwgIDUwOSwgIDMzNiwgICAgMCwgICAgMCwg
IDUwMywKLSAgICAgIDUxMywgIDUxMywgICAgMCwgIDQ5OCwgIDM0OSwgICAgMCwgICAgMCwgIDUw
MCwgIDM2NiwgIDUwMSwKLSAgICAgIDQ5NSwgIDQ5NCwgIDQ5NSwgIDQ5NCwgIDQwNywgICAgMCwg
ICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAgICAgIDQ5MCwgIDQ5MSwgIDQ5NiwgIDQ4NywgIDUw
MCwgIDQ5NSwgIDQ5NCwgIDQ4NiwgIDQ5MCwgIDQ4MiwKLSAgICAgIDQ4NSwgIDQ4OSwgIDQ5NCwg
IDQ4MCwgIDQ5MiwgIDQ4MywgICAgMCwgICAgMCwgIDQ4OSwgIDQ3OCwKLSAgICAgIDQ3OCwgIDQ4
MywgIDQ4MiwgIDQ3OSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ2OSwgIDQ4MSwKLSAgICAg
IDQ4MywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ3MSwgIDQ3MiwgIDQ2
NiwKLQotICAgICAgNDc2LCAgICAwLCAgICAwLCAgICAwLCAgNDY3LCAgICAwLCAgICAwLCAgICAw
LCAgICAwLCAgICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgNDc0LCAg
ICAwLCAgICAwLCAgNDcyLCAgNDY4LAotICAgICAgICAwLCAgICAwLCAgICAwLCAgNDY0LCAgNDYw
LCAgNDY1LCAgNDU1LCAgNDY4LCAgNDU0LCAgNDY3LAotICAgICAgNDU2LCAgNDYzLCAgICAwLCAg
NDYxLCAgNDYzLCAgNDQ3LCAgNDQ5LCAgNDU1LCAgNDYxLCAgNDU2LAotICAgICAgNDQ0LCAgICAw
LCAgNDQ2LCAgICAwLCAgNDQ1LCAgNDQ4LCAgICAwLCAgNDM3LCAgNDM2LCAgNDM2LAotICAgICAg
NDQ5LCAgICAwLCAgNDUxLCAgICAwLCAgNDUwLCAgNDQ5LCAgNDM0LCAgNDQ3LCAgNDM0LCAgICAw
LAotICAgICAgICAwLCAgNDM3LCAgICAwLCAgICAwLCAgNDI5LCAgICAwLCAgICAwLCAgICAwLCAg
ICAwLCAgICAwLAotICAgICAgNDI2LCAgNDM3LCAgNDMwLCAgNDM2LCAgNDMzLCAgNDI4LCAgNDIw
LCAgNDMyLCAgICAwLCAgICAwLAotICAgICAgNDI1LCAgNDMyLCAgNDIxLCAgICAwLCAgNDMwLCAg
NDI3LCAgNDE3LCAgNDExLCAgNDI1LCAgICAwLAotICAgICAgICAwLCAgNDI1LCAgICAwLCAgNDIz
LCAgNDIyLCAgICAwLCAgICAwLCAgNDIxLCAgNDA3LCAgNDE5LAotCi0gICAgICAgIDAsICA0MTAs
ICA0MzEsICA0MzAsICA0MjksICA0MDAsICAzOTYsICAgIDAsICAgIDAsICAgIDAsCi0gICAgICAg
IDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0MjEsICAyNTAsICA0MjEsICA0MTEsICAzODQs
Ci0gICAgICAzOTIsICAzOTQsICAzOTAsICAzOTIsICAzOTEsICAzOTAsICAzOTMsICAzOTAsICAz
OTEsICAzODgsCi0gICAgICAgIDAsICAzMzIsICAzNDMsICAzMTcsICAzMjksICAzMTMsICAzMTcs
ICAzMDQsICAzMjEsICAyOTEsCi0gICAgICAgIDAsICAzMDIsICAyODAsICAyNzEsICAyNTUsICAy
NjIsICAgIDAsICAyNTYsICAgIDAsICAyMzIsCi0gICAgICAyMDYsICAyMTIsICAxNDgsICAxNTks
ICAxMTMsICAgIDAsICAgIDAsICA2ODEsICA0NDIsICA0NDQsCi0gICAgICA0NDYsICA0NTAsICAx
NjEKKyAgICAgICAgMCwgICAgMCwgIDU4NywgIDU4OCwgIDU4OCwgIDU4OCwgIDU2MSwgICA0Mywg
ICA2NCwgIDU4OCwKKyAgICAgIDU4OCwgIDU2MCwgICA2MSwgIDU4OCwgICA2MCwgICA1OCwgIDU1
OSwgICA3NywgICA4NiwgIDU1NywKKyAgICAgIDU4OCwgIDEwNCwgIDU1NywgICA1NSwgIDU4OCwg
ICAgMCwgIDU4OCwgIDU4OCwgICA3NSwgICAyNiwKKyAgICAgICA1NywgICA4MiwgICA4MywgICA3
MywgICA5MywgIDUyOCwgICA5NywgICA5NSwgIDUyNywgICA0NCwKKyAgICAgICA3MSwgIDUyMSwg
IDEwNCwgIDUzNCwgIDExMCwgIDExNiwgICAzNSwgIDExMSwgIDUzMCwgIDU4OCwKKyAgICAgIDEx
NCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwK
KyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDE2NSwgIDU4OCwgIDE3MiwgIDIwMiwgIDIxMSwgIDIz
MywgICAgMCwKKyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDU1MSwgIDU4OCwgIDU4OCwgIDU4OCwg
IDU1MCwgICAgMCwgIDU4OCwKKyAgICAgIDU4OCwgIDUyMywgIDUxNiwgIDUxOSwgIDUyNywgIDUy
NiwgIDUxMywgIDUyOCwgIDUxNSwgIDUyMSwKKyAgICAgIDUwOSwgIDUwNiwgIDUxOSwgIDUwNiwg
IDUwMywgIDUwMywgIDUwOSwgIDQ5NywgIDEwOCwgIDUwMiwKKworICAgICAgNTEyLCAgNDk4LCAg
NTA0LCAgNTA3LCAgNTA4LCAgICAwLCAgMTQ1LCAgNTA3LCAgMTEzLCAgNDkzLAorICAgICAgNTA2
LCAgNDk3LCAgNDk5LCAgNDg5LCAgNTAzLCAgNTAwLCAgNTAyLCAgNDg1LCAgNDkwLCAgNDg3LAor
ICAgICAgNDc2LCAgMTU3LCAgNDg0LCAgNDg5LCAgNDg1LCAgNDg3LCAgNDc2LCAgNDc5LCAgMTE4
LCAgNDg0LAorICAgICAgNDc2LCAgNDg4LCAgIDcwLCAgNDgxLCAgNTg4LCAgNTg4LCAgMjQ2LCAg
MjUzLCAgMjcwLCAgMjE5LAorICAgICAgMjgzLCAgICAwLCAgNTg4LCAgNTg4LCAgICAwLCAgNDcz
LCAgNDc3LCAgNDg2LCAgNDgzLCAgNDY3LAorICAgICAgNDY3LCAgMTE5LCAgNDgyLCAgNDc5LCAg
NDc5LCAgNDc3LCAgNDc0LCAgNDY2LCAgNDcyLCAgNDU5LAorICAgICAgNDcwLCAgNDU2LCAgNDcy
LCAgICAwLCAgNDY5LCAgNDU3LCAgNDY0LCAgNDYxLCAgNDY1LCAgNDU4LAorICAgICAgNDQ3LCAg
NDQ2LCAgNDU5LCAgNDYyLCAgNDU5LCAgNDU0LCAgNDQ1LCAgMTg4LCAgNDUwLCAgNDUzLAorICAg
ICAgNDQ0LCAgNDQxLCAgNDQ1LCAgNDUxLCAgNDQyLCAgNDMzLCAgNDM2LCAgNDM0LCAgNDQ0LCAg
NDMwLAorICAgICAgNDI4LCAgNDQxLCAgNDI3LCAgNDI5LCAgNDI2LCAgNDM3LCAgNDM2LCAgMTI0
LCAgNDMxLCAgNDI2LAorCisgICAgICA0MTUsICAyNTgsICA0MzMsICA0MzUsICA0MjQsICAyOTAs
ICAyOTcsICAzMDQsICAzMTEsICA0MjUsCisgICAgICAgIDAsICA0MjMsICAyNzUsICAgIDAsICA0
MTUsICA0MTMsICA0MjEsICA0MTAsICA0MjcsICA0MTYsCisgICAgICAzMTYsICAgIDAsICAgIDAs
ICA0MTAsICA0MjAsICA0MjAsICAgIDAsICA0MDUsICAzMTksICAgIDAsCisgICAgICAgIDAsICA0
MDcsICAzMjIsICA0MDgsICA0MDIsICA0MDEsICA0MDIsICA0MDEsICAzMjUsICAgIDAsCisgICAg
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzOTcsICAzOTgsICA0MDMsICAzOTQsICA0MDcsICA0
MDIsCisgICAgICA0MDEsICAzOTMsICAzOTcsICAzODksICAzOTIsICAzOTYsICA0MDEsICAzODcs
ICAzOTksICAzOTAsCisgICAgICAgIDAsICAgIDAsICAzOTYsICAzODUsICAzODUsICAzOTAsICAz
ODksICAzODYsICAgIDAsICAgIDAsCisgICAgICAgIDAsICAgIDAsICAzNzYsICAzODgsICAzOTAs
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsCisgICAgICAgIDAsICAzNzgsICAzNzksICAz
NzMsICAzODMsICAgIDAsICAgIDAsICAgIDAsICAzNzQsICAgIDAsCisgICAgICAgIDAsICAgIDAs
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzODEsCisKKyAgICAg
ICAgMCwgICAgMCwgIDM3OSwgIDM3NSwgICAgMCwgICAgMCwgICAgMCwgIDM3MSwgIDM2NywgIDM3
MiwKKyAgICAgIDM2MiwgIDM3NSwgIDM2MSwgIDM3NCwgIDM2MywgIDM3MCwgICAgMCwgIDM2OCwg
IDM3MCwgIDM1NCwKKyAgICAgIDM1NiwgIDM2MiwgIDM2OCwgIDM2MywgIDM1MSwgICAgMCwgIDM1
MywgICAgMCwgIDM1MiwgIDM1NSwKKyAgICAgICAgMCwgIDM0NCwgIDM0MywgIDM0MywgIDM1Niwg
ICAgMCwgIDM1OCwgICAgMCwgIDM1NywgIDM1NiwKKyAgICAgIDM0MSwgIDM1NCwgIDM0MSwgICAg
MCwgICAgMCwgIDM0NCwgICAgMCwgICAgMCwgIDMzNiwgICAgMCwKKyAgICAgICAgMCwgICAgMCwg
ICAgMCwgICAgMCwgIDMzMywgIDM0NCwgIDMzNywgIDM0MywgIDM0MCwgIDMzNSwKKyAgICAgIDMy
NywgIDMzOSwgICAgMCwgICAgMCwgIDMzMiwgIDMzOSwgIDMyOCwgICAgMCwgIDMzNywgIDMzNCwK
KyAgICAgIDMyNCwgIDMyOSwgIDMzMiwgICAgMCwgICAgMCwgIDMzMiwgICAgMCwgIDMzMCwgIDMy
OSwgICAgMCwKKyAgICAgICAgMCwgIDMyOCwgIDMxNCwgIDMyNiwgICAgMCwgIDMxNywgIDMzOCwg
IDMzNywgIDMzNiwgIDMwNywKKyAgICAgIDMwMywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAg
MCwgICAgMCwgICAgMCwgICAgMCwgIDMyOCwKKworICAgICAgMTY2LCAgMzI1LCAgMzE2LCAgMjk5
LCAgMzA4LCAgMzEwLCAgMzA2LCAgMzA4LCAgMzA3LCAgMzA2LAorICAgICAgMzA5LCAgMzA2LCAg
MjU2LCAgMjUzLCAgICAwLCAgMjI4LCAgMjM4LCAgMjIyLCAgMjM1LCAgMjAzLAorICAgICAgMjA3
LCAgMjA0LCAgMjEyLCAgMTkxLCAgICAwLCAgMjAxLCAgMTY1LCAgMTY3LCAgMTUzLCAgMTYxLAor
ICAgICAgICAwLCAgMTcwLCAgICAwLCAgMTc1LCAgMTUxLCAgMTQxLCAgMTAwLCAgMTE0LCAgIDU5
LCAgICAwLAorICAgICAgICAwLCAgNTg4LCAgMzU5LCAgMTEzCiAgICAgfSA7CiAKLXN0YXRpYyB5
eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9kZWZbNDY0XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2lu
dDE2X3QgeXlfZGVmWzQ0NV0gPQogICAgIHsgICAwLAotICAgICAgNDU4LCAgICAxLCAgNDU5LCAg
NDU5LCAgNDU4LCAgICA1LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDYw
LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDYxLCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDYyLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4
LCAgNDYzLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAot
ICAgICAgNDU4LCAgNDYwLCAgNDU4LCAgNDU4LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NTgsICA0NTgsICA0NTgsCi0g
ICAgICA0NjEsICA0NTgsICA0NjIsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NjMsICA0NTgs
ICA0NTgsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0KLSAgICAgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAg
ICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwKLSAgICAgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAot
Ci0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICAgIDAsICA0NTgsICA0NTgsCi0g
ICAgICA0NTgsICA0NTgsICA0NTgKKyAgICAgIDQ0MiwgICAgMSwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywKKyAgICAgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywK
KyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0NCwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKwor
ICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQ0LCAgNDQy
LCAgNDQyLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAg
ICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorCisgICAgICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDMsCisgICAgICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAg
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
CisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywK
KyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKworICAgICAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAor
ICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgICAwLCAgNDQyLCAgNDQyCiAg
ICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9ueHRbNzQ5XSA9CitzdGF0
aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0WzY1Nl0gPQogICAgIHsgICAwLAotICAgICAg
ICA4LCAgICA5LCAgIDEwLCAgIDExLCAgIDEyLCAgIDEzLCAgIDE0LCAgIDE1LCAgIDE2LCAgIDE3
LAotICAgICAgIDE4LCAgIDE5LCAgIDIwLCAgIDIxLCAgIDIyLCAgIDIzLCAgIDIzLCAgIDIzLCAg
IDIzLCAgIDIzLAotICAgICAgIDIzLCAgIDI0LCAgIDI1LCAgIDI2LCAgIDI3LCAgIDI4LCAgIDI5
LCAgIDMwLCAgIDMwLCAgIDMwLAotICAgICAgIDMwLCAgIDMwLCAgIDMwLCAgIDMwLCAgIDMwLCAg
IDMwLCAgIDMxLCAgIDMyLCAgIDMzLCAgIDM0LAotICAgICAgIDM1LCAgIDM2LCAgIDM3LCAgIDM4
LCAgIDM5LCAgIDQwLCAgIDQxLCAgIDQyLCAgIDMwLCAgIDQzLAotICAgICAgIDQ0LCAgIDQ1LCAg
IDQ2LCAgIDQ3LCAgIDQ4LCAgIDQ5LCAgIDUwLCAgIDUxLCAgIDUyLCAgIDUzLAotICAgICAgIDMw
LCAgIDMwLCAgIDMwLCAgIDU0LCAgIDU1LCAgIDU2LCAgIDU3LCAgIDU5LCAgIDU5LCAgIDY1LAot
ICAgICAgIDY2LCAgIDkwLCAgIDkxLCAgIDYwLCAgIDYwLCAgICA4LCAgIDYxLCAgIDYyLCAgICA4
LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAg
ICA4LCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4
LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAotCi0gICAgICAgIDgsICAgIDgsICAgNjMsICAgNjMs
ICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0gICAgICAgNjMsICAgIDgsICAg
IDgsICAgIDgsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0gICAgICAgNjMs
ICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0g
ICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgIDgs
ICAgIDgsCi0gICAgICAgIDgsICAgIDgsICAgNjcsICAgNzAsICAgNzIsICAgNzQsICAgNzQsICAg
NzQsICAgNzQsICAgNzQsCi0gICAgICAgNzQsICAgNzQsICAgOTMsICAxMTksICAgNzUsICAgOTUs
ICAgOTYsICAgNzMsICAgNzEsICAgNzYsCi0gICAgICAxMjAsICAgNjgsICAgOTcsICAxNTgsICAg
OTgsICAxMjMsICAgOTQsICAxMjEsICAgOTksICAxMjQsCi0gICAgICAgNzcsICAgNzgsICA0NTcs
ICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAgODAsCi0gICAgICAgNzgsICAx
NDgsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODEsCi0gICAg
ICAgODUsICAxMDAsICAxNDIsICA0NTYsICAgODIsICAxMDcsICAxNDMsICAxMDgsICAgODEsICAx
MDMsCi0KLSAgICAgIDQ1NSwgIDEwMSwgICA4MSwgIDEwNCwgIDEwMiwgIDExMCwgIDEwOSwgICA4
NiwgIDEwNSwgICA4NywKLSAgICAgICA4OCwgICA4MSwgIDExNiwgIDExMSwgIDEwNiwgIDExMiwg
IDEyNSwgIDEyOCwgIDExMywgICA4MiwKLSAgICAgIDExNywgIDE0OSwgIDIwNiwgIDIxOSwgIDEx
NCwgIDIyMCwgIDEzMiwgIDEzOCwgIDE3OCwgIDEyNiwKLSAgICAgIDEzOSwgIDExOCwgIDEyOSwg
IDEzMywgIDEzNCwgIDEzMCwgIDE0NCwgIDIwNywgIDE0MCwgIDE5MiwKLSAgICAgIDE0NSwgIDE3
OSwgIDQ1NCwgIDEzNSwgIDEzNiwgIDE0MSwgIDEzNywgIDE5MywgIDQ1MywgIDE0NiwKLSAgICAg
ICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgIDE1NCwgIDE1NCwgIDE1
NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDQ1MiwgIDE4NiwgIDE1MiwgIDIxNCwg
IDE4NywgIDE4OCwKLSAgICAgIDIzMiwgIDIzMywgIDE4OSwgIDE1NSwgIDE5MCwgIDIxNSwgIDI1
OCwgIDI1OSwgIDI2MCwgIDE1MiwKLSAgICAgIDI4NSwgIDI4NiwgIDI4NywgIDQyMiwgIDQyMywg
ICA3OCwgIDE1NSwgICA3OSwgICA3OSwgICA3OSwKLSAgICAgICA3OSwgICA3OSwgICA3OSwgICA4
MCwgICA3OCwgIDQ1MSwgICA4MCwgICA4MCwgICA4MCwgICA4MCwKLQotICAgICAgIDgwLCAgIDgw
LCAgIDgwLCAgIDgxLCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LAotICAgICAg
MTU3LCAgNDUwLCAgIDgxLCAgMTU2LCAgNDQ5LCAgMTU2LCAgIDgxLCAgNDQ4LCAgMTU3LCAgMTU3
LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgIDgxLCAgIDc4LCAgMjgwLCAg
IDgzLCAgIDgzLAotICAgICAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgMjgxLCAgMjkz
LCAgMjk0LCAgMjk1LCAgNDQ3LAotICAgICAgMjIyLCAgNDQ2LCAgMjIyLCAgNDQ1LCAgIDgxLCAg
MjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLAotICAgICAgMjIzLCAgMjIzLCAgMzAyLCAgMzAz
LCAgMzA0LCAgNDQ0LCAgNDQzLCAgIDgxLCAgMTU0LCAgMTU0LAotICAgICAgMTU0LCAgMTU0LCAg
MTU0LCAgMTU0LCAgMTU0LCAgMzA5LCAgMzEwLCAgMzExLCAgNDQyLCAgNDQxLAotICAgICAgMjI0
LCAgNDQwLCAgMjI0LCAgNDM5LCAgMTU1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LAot
ICAgICAgMjI1LCAgMjI1LCAgMzEzLCAgMzE0LCAgMzE1LCAgNDM4LCAgNDM3LCAgMTU1LCAgMTU3
LCAgMTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMjIzLCAgMjIzLCAg
MjIzLCAgMjIzLCAgMjIzLAotCi0gICAgICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAy
MjMsICAyMjMsICAyMjMsICAyMjMsICAyMjUsCi0gICAgICAyMjUsICAyMjUsICAyMjUsICAyMjUs
ICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsCi0gICAgICAyMjUsICAyMjUsICAy
MjUsICAzMjEsICAzMjIsICAzMjMsICA0MDMsICA0MDQsICA0MDUsICA0MzYsCi0gICAgICA0MzUs
ICA0MzQsICA0MzMsICA0MzIsICA0MzEsICA0MzAsICA0MjksICA0MjgsICA0MjcsICA0MDYsCi0g
ICAgICA0MjYsICA0MDcsICAgNTgsICAgNTgsICAgNTgsICAgNTgsICAgOTIsICAgOTIsICAxNTEs
ICAxNTEsCi0gICAgICAxNTMsICA0MjUsICAxNTMsICAxNTMsICA0MjQsICA0MjEsICA0MjAsICA0
MTksICA0MTgsICA0MTcsCi0gICAgICA0MTYsICA0MTUsICA0MTQsICA0MTMsICA0MTIsICA0MTEs
ICA0MTAsICA0MDksICA0MDgsICA0MDIsCi0gICAgICA0MDEsICA0MDAsICAzOTksICAzOTgsICAz
OTcsICAzOTYsICAzOTUsICAzOTQsICAzOTMsICAzOTIsCi0gICAgICAzOTEsICAzOTAsICAzODks
ICAzODgsICAzODcsICAzODYsICAzODUsICAzODQsICAzODMsICAzODIsCi0gICAgICAzODEsICAz
ODAsICAzNzksICAzNzgsICAzNzcsICAzNzYsICAzNzUsICAzNzQsICAzNzMsICAzNzIsCi0KLSAg
ICAgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2NywgIDM2NiwgIDM2NSwgIDM2NCwgIDM2Mywg
IDM2MiwKLSAgICAgIDM2MSwgIDM2MCwgIDM1OSwgIDM1OCwgIDM1NywgIDM1NiwgIDM1NSwgIDM1
NCwgIDM1MywgIDM1MiwKLSAgICAgIDM1MSwgIDM1MCwgIDM0OSwgIDM0OCwgIDM0NywgIDM0Niwg
IDM0NSwgIDM0NCwgIDM0MywgIDM0MiwKLSAgICAgIDM0MSwgIDM0MCwgIDMzOSwgIDMzOCwgIDMz
NywgIDMzNiwgIDMzNSwgIDMzNCwgIDMzMywgIDMzMiwKLSAgICAgIDMzMSwgIDMzMCwgIDMyOSwg
IDMyOCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMCwgIDMxOSwKLSAgICAgIDMxOCwgIDMx
NywgIDMxNiwgIDMxMiwgIDMwOCwgIDMwNywgIDMwNiwgIDMwNSwgIDMwMSwgIDMwMCwKLSAgICAg
IDI5OSwgIDI5OCwgIDI5NywgIDI5NiwgIDI5MiwgIDI5MSwgIDI5MCwgIDI4OSwgIDI4OCwgIDI4
NCwKLSAgICAgIDI4MywgIDI4MiwgIDI3OSwgIDI3OCwgIDI3NywgIDI3NiwgIDI3NSwgIDI3NCwg
IDI3MywgIDI3MiwKLSAgICAgIDI3MSwgIDI3MCwgIDI2OSwgIDI2OCwgIDI2NywgIDI2NiwgIDI2
NSwgIDI2NCwgIDI2MywgIDI2MiwKLSAgICAgIDI2MSwgIDI1NywgIDI1NiwgIDI1NSwgIDI1NCwg
IDI1MywgIDI1MiwgIDI1MSwgIDI1MCwgIDI0OSwKLQotICAgICAgMjQ4LCAgMjQ3LCAgMjQ2LCAg
MjQ1LCAgMjQ0LCAgMjQzLCAgMjQyLCAgMjQxLCAgMjQwLCAgMjM5LAotICAgICAgMjM4LCAgMjM3
LCAgMjM2LCAgMjM1LCAgMjM0LCAgMjMxLCAgMjMwLCAgMjI5LCAgMjI4LCAgMjI3LAotICAgICAg
MjI2LCAgMjIxLCAgMjE4LCAgMjE3LCAgMjE2LCAgMjEzLCAgMjEyLCAgMjExLCAgMjEwLCAgMjA5
LAotICAgICAgMjA4LCAgMjA1LCAgMjA0LCAgMjAzLCAgMjAyLCAgMjAxLCAgMjAwLCAgMTk5LCAg
MTk4LCAgMTk3LAotICAgICAgMTk2LCAgMTk1LCAgMTk0LCAgMTkxLCAgMTg1LCAgMTg0LCAgMTgz
LCAgMTgyLCAgMTgxLCAgMTgwLAotICAgICAgMTc3LCAgMTc2LCAgMTc1LCAgMTc0LCAgMTczLCAg
MTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LAotICAgICAgMTY3LCAgMTY2LCAgMTY1LCAgMTY0
LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTUwLAotICAgICAgMTQ3LCAgMTMxLCAg
MTI3LCAgMTIyLCAgMTE1LCAgIDg5LCAgIDg0LCAgIDY5LCAgIDY0LCAgNDU4LAotICAgICAgICA3
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAot
ICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LAotCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgKKyAgICAgICAgNCwgICAg
NSwgICAgNiwgICAgNywgICAgOCwgICAgOSwgICAxMCwgICAxMSwgICAxMiwgICAxMywKKyAgICAg
ICAxNCwgICAxNSwgICAxNiwgICAxNywgICAxOCwgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAx
OSwKKyAgICAgICAxOSwgICAyMCwgICAyMSwgICAyMiwgICAyMywgICAyNCwgICAyNSwgICAyNiwg
ICAyNiwgICAyNiwKKyAgICAgICAyNiwgICAyNiwgICAyNiwgICAyNiwgICAyNiwgICAyNiwgICAy
NywgICAyOCwgICAyOSwgICAzMCwKKyAgICAgICAzMSwgICAzMiwgICAzMywgICAzNCwgICAzNSwg
ICAzNiwgICAzNywgICAzOCwgICAyNiwgICAzOSwKKyAgICAgICA0MCwgICA0MSwgICA0MiwgICA0
MywgICA0NCwgICA0NSwgICA0NiwgICA0NywgICA0OCwgICA0OSwKKyAgICAgICAyNiwgICAyNiwg
ICAyNiwgICA1MCwgICA1MSwgICA1MiwgICA1MywgICA1NSwgICA1NiwgICA1NywKKyAgICAgICA2
MCwgICA2MiwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA3NywK
KyAgICAgICA3OCwgICA4MiwgICA4MywgIDExMCwgICA2MywgICA2MSwgIDEyOSwgIDExMSwgICA1
OCwgICA2NiwKKyAgICAgIDEzMCwgICA2NywgICA2NywgICA2NywgICA2NywgICA2NywgICA2Nywg
ICA2OCwgICA2NiwgICA4MCwKKworICAgICAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAg
IDY4LCAgIDY4LCAgIDY5LCAgIDcyLCAgIDg0LAorICAgICAgMTEyLCAgIDg1LCAgIDcwLCAgIDgx
LCAgMTQyLCAgIDg2LCAgIDY5LCAgMjAzLCAgNDQxLCAgMjA0LAorICAgICAgIDY5LCAgIDg3LCAg
IDk0LCAgMTEzLCAgIDk1LCAgIDczLCAgIDkwLCAgIDc0LCAgIDc1LCAgIDY5LAorICAgICAgIDkx
LCAgIDg4LCAgIDk3LCAgIDk2LCAgIDg5LCAgIDkyLCAgMTAzLCAgIDcwLCAgMTM1LCAgMTA2LAor
ICAgICAgIDk4LCAgIDkzLCAgIDk5LCAgMTE1LCAgMTA0LCAgMTAwLCAgMTA3LCAgMTYyLCAgNDQw
LCAgMTE5LAorICAgICAgMTMxLCAgMTAxLCAgNDM5LCAgMTA4LCAgMTMyLCAgMTA1LCAgMTIwLCAg
MTIxLCAgMTE2LCAgMTI1LAorICAgICAgMTYzLCAgMTE3LCAgMTI2LCAgMTMzLCAgMTc2LCAgMTk4
LCAgMTIyLCAgMTIzLCAgMjY0LCAgMTI0LAorICAgICAgMTI3LCAgNDM4LCAgMTc3LCAgMTk5LCAg
MjE2LCAgMjE3LCAgMjY1LCAgMTI4LCAgMTM2LCAgIDY0LAorICAgICAgIDY0LCAgIDY0LCAgIDY0
LCAgIDY0LCAgIDY0LCAgIDY0LCAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LAorICAgICAgMTM4LCAg
MTM4LCAgMTM4LCAgNDM3LCAgMTcwLCAgMTM3LCAgMTkwLCAgMTcxLCAgMTcyLCAgNDA2LAorCisg
ICAgICA0MDcsICAxNzMsICAxMzksICAxNzQsICAyNDIsICAyNDMsICAyNDQsICA0MzYsICAxMzcs
ICA0MzUsCisgICAgICA0MzQsICAxOTEsICA0MzMsICA0MzIsICAgNjYsICAxMzksICAgNjcsICAg
NjcsICAgNjcsICAgNjcsCisgICAgICAgNjcsICAgNjcsICAgNjgsICAgNjYsICA0MzEsICAgNjgs
ICAgNjgsICAgNjgsICAgNjgsICAgNjgsCisgICAgICAgNjgsICAgNjgsICAgNjksICAxNDEsICAx
NDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsCisgICAgICA0MzAsICAgNjksICAxNDAs
ICA0MjksICAxNDAsICAgNjksICA0MjgsICAxNDEsICAxNDEsICAxNDEsCisgICAgICAxNDEsICAx
NDEsICAxNDEsICAxNDEsICAgNjksICAyMDYsICA0MjcsICAyMDYsICA0MjYsICA0MjUsCisgICAg
ICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAxMzgsICAxMzgsICAx
MzgsCisgICAgICAxMzgsICAxMzgsICAxMzgsICAxMzgsICAyNjksICAyNzAsICAyNzEsICA0MjQs
ICA0MjMsICAyMDgsCisgICAgICA0MjIsICAyMDgsICA0MjEsICAxMzksICAyMDksICAyMDksICAy
MDksICAyMDksICAyMDksICAyMDksCisgICAgICAyMDksICAyNzcsICAyNzgsICAyNzksICA0MjAs
ICA0MTksICAxMzksICAxNDEsICAxNDEsICAxNDEsCisKKyAgICAgIDE0MSwgIDE0MSwgIDE0MSwg
IDE0MSwgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywKKyAgICAgIDIwNywgIDIw
NywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwOSwgIDIwOSwKKyAgICAg
IDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIw
OSwKKyAgICAgIDIwOSwgIDIwOSwgIDI4NiwgIDI4NywgIDI4OCwgIDI5MywgIDI5NCwgIDI5NSwg
IDI5NywgIDI5OCwKKyAgICAgIDI5OSwgIDMwNSwgIDMwNiwgIDMwNywgIDM4NywgIDM4OCwgIDM4
OSwgIDQxOCwgIDQxNywgIDQxNiwKKyAgICAgIDQxNSwgIDQxNCwgIDQxMywgIDQxMiwgIDQxMSwg
IDQxMCwgIDQwOSwgIDM5MCwgIDQwOCwgIDM5MSwKKyAgICAgICA3OSwgICA3OSwgIDQwNSwgIDQw
NCwgIDQwMywgIDQwMiwgIDQwMSwgIDQwMCwgIDM5OSwgIDM5OCwKKyAgICAgIDM5NywgIDM5Niwg
IDM5NSwgIDM5NCwgIDM5MywgIDM5MiwgIDM4NiwgIDM4NSwgIDM4NCwgIDM4MywKKyAgICAgIDM4
MiwgIDM4MSwgIDM4MCwgIDM3OSwgIDM3OCwgIDM3NywgIDM3NiwgIDM3NSwgIDM3NCwgIDM3MywK
KyAgICAgIDM3MiwgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2NywgIDM2NiwgIDM2NSwgIDM2
NCwgIDM2MywKKworICAgICAgMzYyLCAgMzYxLCAgMzYwLCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2
LCAgMzU1LCAgMzU0LCAgMzUzLAorICAgICAgMzUyLCAgMzUxLCAgMzUwLCAgMzQ5LCAgMzQ4LCAg
MzQ3LCAgMzQ2LCAgMzQ1LCAgMzQ0LCAgMzQzLAorICAgICAgMzQyLCAgMzQxLCAgMzQwLCAgMzM5
LCAgMzM4LCAgMzM3LCAgMzM2LCAgMzM1LCAgMzM0LCAgMzMzLAorICAgICAgMzMyLCAgMzMxLCAg
MzMwLCAgMzI5LCAgMzI4LCAgMzI3LCAgMzI2LCAgMzI1LCAgMzI0LCAgMzIzLAorICAgICAgMzIy
LCAgMzIxLCAgMzIwLCAgMzE5LCAgMzE4LCAgMzE3LCAgMzE2LCAgMzE1LCAgMzE0LCAgMzEzLAor
ICAgICAgMzEyLCAgMzExLCAgMzEwLCAgMzA5LCAgMzA4LCAgMzA0LCAgMzAzLCAgMzAyLCAgMzAx
LCAgMzAwLAorICAgICAgMjk2LCAgMjkyLCAgMjkxLCAgMjkwLCAgMjg5LCAgMjg1LCAgMjg0LCAg
MjgzLCAgMjgyLCAgMjgxLAorICAgICAgMjgwLCAgMjc2LCAgMjc1LCAgMjc0LCAgMjczLCAgMjcy
LCAgMjY4LCAgMjY3LCAgMjY2LCAgMjYzLAorICAgICAgMjYyLCAgMjYxLCAgMjYwLCAgMjU5LCAg
MjU4LCAgMjU3LCAgMjU2LCAgMjU1LCAgMjU0LCAgMjUzLAorICAgICAgMjUyLCAgMjUxLCAgMjUw
LCAgMjQ5LCAgMjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAgMjQxLCAgMjQwLAorCisgICAgICAyMzks
ICAyMzgsICAyMzcsICAyMzYsICAyMzUsICAyMzQsICAyMzMsICAyMzIsICAyMzEsICAyMzAsCisg
ICAgICAyMjksICAyMjgsICAyMjcsICAyMjYsICAyMjUsICAyMjQsICAyMjMsICAyMjIsICAyMjEs
ICAyMjAsCisgICAgICAyMTksICAyMTgsICAyMTUsICAyMTQsICAyMTMsICAyMTIsICAyMTEsICAy
MTAsICAyMDUsICAyMDIsCisgICAgICAyMDEsICAyMDAsICAxOTcsICAxOTYsICAxOTUsICAxOTQs
ICAxOTMsICAxOTIsICAxODksICAxODgsCisgICAgICAxODcsICAxODYsICAxODUsICAxODQsICAx
ODMsICAxODIsICAxODEsICAxODAsICAxNzksICAxNzgsCisgICAgICAxNzUsICAxNjksICAxNjgs
ICAxNjcsICAxNjYsICAxNjUsICAxNjQsICAxNjEsICAxNjAsICAxNTksCisgICAgICAxNTgsICAx
NTcsICAxNTYsICAxNTUsICAxNTQsICAxNTMsICAxNTIsICAxNTEsICAxNTAsICAxNDksCisgICAg
ICAxNDgsICAxNDcsICAxNDYsICAxNDUsICAxNDQsICAxNDMsICAxMzQsICAxMTgsICAxMTQsICAx
MDksCisgICAgICAxMDIsICAgNzYsICAgNzEsICAgNjUsICAgNTksICAgNTQsICA0NDIsICAgIDMs
ICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsCisKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MgogICAgIH0gOwog
Ci1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzc0OV0gPQorc3RhdGljIHl5Y29u
c3QgZmxleF9pbnQxNl90IHl5X2Noa1s2NTZdID0KICAgICB7ICAgMCwKICAgICAgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwKQEAgLTY5NCw5NSArNjc5LDg1IEBAIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9j
aGtbNzQ5XSAKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKLSAgICAgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAgNCwgICAxMiwKLSAgICAgICAxMiwg
ICAyOCwgICAyOCwgICAgMywgICAgNCwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLSAg
ICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwKLQotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAg
ICAgICA1LCAgICA1LCAgIDEzLCAgIDE3LCAgIDE5LCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLCAg
IDIwLAotICAgICAgIDIwLCAgIDIwLCAgIDMzLCAgIDQyLCAgIDIxLCAgIDM0LCAgIDM0LCAgIDE5
LCAgIDE3LCAgIDIxLAotICAgICAgIDQyLCAgIDEzLCAgIDM1LCAgNDYzLCAgIDM1LCAgIDQ0LCAg
IDMzLCAgIDQyLCAgIDM1LCAgIDQ0LAotICAgICAgIDIxLCAgIDIyLCAgNDU1LCAgIDIyLCAgIDIy
LCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLAotICAgICAgIDIzLCAgIDU1LCAgIDIzLCAg
IDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIyLAotICAgICAgIDI2LCAgIDM2
LCAgIDUxLCAgNDU0LCAgIDIyLCAgIDM4LCAgIDUxLCAgIDM4LCAgIDIzLCAgIDM3LAotCi0gICAg
ICA0NTMsICAgMzYsICAgMjIsICAgMzcsICAgMzYsICAgMzksICAgMzgsICAgMjYsICAgMzcsICAg
MjYsCi0gICAgICAgMjYsICAgMjMsICAgNDEsICAgMzksICAgMzcsICAgMzksICAgNDUsICAgNDcs
ICAgMzksICAgMjIsCi0gICAgICAgNDEsICAgNTUsICAxMzUsICAxNDYsICAgMzksICAxNDYsICAg
NDksICAgNTAsICAxMTIsICAgNDUsCi0gICAgICAgNTAsICAgNDEsICAgNDcsICAgNDksICAgNDks
ICAgNDcsICAgNTIsICAxMzUsICAgNTAsICAxMjIsCi0gICAgICAgNTIsICAxMTIsICA0NTIsICAg
NDksICAgNDksICAgNTAsICAgNDksICAxMjIsICA0NTEsICAgNTIsCi0gICAgICAgNzQsICAgNzQs
ICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzgsICAgNzgsICAgNzgsCi0gICAgICAg
NzgsICAgNzgsICAgNzgsICAgNzgsICA0NTAsICAxMjAsICAgNzQsICAxNDIsICAxMjAsICAxMjAs
Ci0gICAgICAxNjgsICAxNjgsICAxMjAsICAgNzgsICAxMjAsICAxNDIsICAxOTQsICAxOTQsICAx
OTQsICAgNzQsCi0gICAgICAyMTgsICAyMTgsICAyMTgsICA0MTcsICA0MTcsICAgNzksICAgNzgs
ICAgNzksICAgNzksICAgNzksCi0gICAgICAgNzksICAgNzksICAgNzksICAgNzksICAgODAsICA0
NDgsICAgODAsICAgODAsICAgODAsICAgODAsCi0KLSAgICAgICA4MCwgICA4MCwgICA4MCwgICA3
OSwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwKLSAgICAgIDE1NiwgIDQ0Niwg
ICA4MCwgICA4MSwgIDQ0NSwgICA4MSwgICA3OSwgIDQ0NCwgICA4MSwgICA4MSwKLSAgICAgICA4
MSwgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MCwgICA4MywgIDIxNCwgICA4MywgICA4MywK
LSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgIDIxNCwgIDIyOSwgIDIyOSwgIDIy
OSwgIDQ0MywKLSAgICAgIDE1MiwgIDQ0MiwgIDE1MiwgIDQ0MCwgICA4MywgIDE1MiwgIDE1Miwg
IDE1MiwgIDE1MiwgIDE1MiwKLSAgICAgIDE1MiwgIDE1MiwgIDIzNywgIDIzNywgIDIzNywgIDQz
OSwgIDQzOCwgICA4MywgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwg
IDE1NCwgIDI0NSwgIDI0NSwgIDI0NSwgIDQzNywgIDQzNiwKLSAgICAgIDE1NSwgIDQzNSwgIDE1
NSwgIDQzNCwgIDE1NCwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwKLSAgICAgIDE1NSwg
IDE1NSwgIDI0OSwgIDI0OSwgIDI0OSwgIDQzMywgIDQzMiwgIDE1NCwgIDE1NywgIDE1NywKLSAg
ICAgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDIyMiwgIDIyMiwgIDIyMiwgIDIyMiwg
IDIyMiwKLQotICAgICAgMjIyLCAgMjIyLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAg
MjIzLCAgMjIzLCAgMjI0LAotICAgICAgMjI0LCAgMjI0LCAgMjI0LCAgMjI0LCAgMjI0LCAgMjI0
LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMjI1LCAgMjU1LCAg
MjU1LCAgMjU1LCAgMzg4LCAgMzg4LCAgMzg4LCAgNDMwLAotICAgICAgNDI5LCAgNDI4LCAgNDI3
LCAgNDI2LCAgNDI1LCAgNDI0LCAgNDIzLCAgNDIyLCAgNDIxLCAgMzg4LAotICAgICAgNDIwLCAg
Mzg4LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDYwLCAgNDYwLCAgNDYxLCAgNDYxLAotICAg
ICAgNDYyLCAgNDE5LCAgNDYyLCAgNDYyLCAgNDE4LCAgNDE2LCAgNDA3LCAgNDA2LCAgNDA1LCAg
NDA0LAotICAgICAgNDAzLCAgNDAyLCAgNDAwLCAgMzk5LCAgMzk4LCAgMzk1LCAgMzk0LCAgMzky
LCAgMzg5LCAgMzg3LAotICAgICAgMzg2LCAgMzg1LCAgMzgzLCAgMzgyLCAgMzgxLCAgMzc4LCAg
Mzc3LCAgMzc2LCAgMzc1LCAgMzc0LAotICAgICAgMzczLCAgMzcyLCAgMzcxLCAgMzY1LCAgMzYy
LCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LAotICAgICAgMzUzLCAgMzUxLCAgMzUwLCAg
MzQ5LCAgMzQ4LCAgMzQ2LCAgMzQ1LCAgMzQzLCAgMzQxLCAgMzQwLAotCi0gICAgICAzMzksICAz
MzgsICAzMzcsICAzMzYsICAzMzUsICAzMzQsICAzMzIsICAzMzEsICAzMzAsICAzMjksCi0gICAg
ICAzMjgsICAzMjcsICAzMjYsICAzMjUsICAzMjQsICAzMjAsICAzMTksICAzMTYsICAzMDUsICAz
MDEsCi0gICAgICAzMDAsICAyOTksICAyOTgsICAyOTEsICAyOTAsICAyODksICAyODQsICAyODMs
ICAyODIsICAyODEsCi0gICAgICAyODAsICAyNzksICAyNzYsICAyNzUsICAyNzQsICAyNzMsICAy
NzIsICAyNzEsICAyNzAsICAyNjksCi0gICAgICAyNjgsICAyNjcsICAyNjYsICAyNjUsICAyNjQs
ICAyNjMsICAyNjIsICAyNjEsICAyNTQsICAyNTMsCi0gICAgICAyNTIsICAyNTEsICAyNTAsICAy
NDgsICAyNDQsICAyNDIsICAyNDEsICAyNDAsICAyMzYsICAyMzUsCi0gICAgICAyMzQsICAyMzMs
ICAyMzIsICAyMzEsICAyMjgsICAyMjYsICAyMjEsICAyMjAsICAyMTksICAyMTcsCi0gICAgICAy
MTYsICAyMTUsICAyMTMsICAyMTIsICAyMTEsICAyMTAsICAyMDksICAyMDgsICAyMDcsICAyMDYs
Ci0gICAgICAyMDUsICAyMDQsICAyMDMsICAyMDIsICAyMDEsICAyMDAsICAxOTksICAxOTgsICAx
OTcsICAxOTYsCi0gICAgICAxOTUsICAxOTMsICAxOTIsICAxOTEsICAxOTAsICAxODksICAxODgs
ICAxODcsICAxODYsICAxODUsCi0KLSAgICAgIDE4NCwgIDE4MywgIDE4MiwgIDE4MSwgIDE3OSwg
IDE3OCwgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwKLSAgICAgIDE3MywgIDE3MiwgIDE3MSwgIDE3
MCwgIDE2OSwgIDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2MywKLSAgICAgIDE2MiwgIDE0Nywg
IDE0NSwgIDE0NCwgIDE0MywgIDE0MSwgIDE0MCwgIDEzOSwgIDEzOCwgIDEzNywKLSAgICAgIDEz
NiwgIDEzNCwgIDEzMywgIDEzMiwgIDEzMSwgIDEzMCwgIDEyOSwgIDEyOCwgIDEyNywgIDEyNiwK
LSAgICAgIDEyNSwgIDEyNCwgIDEyMywgIDEyMSwgIDExOCwgIDExNywgIDExNiwgIDExNSwgIDEx
NCwgIDExMywKLSAgICAgIDExMSwgIDExMCwgIDEwOSwgIDEwOCwgIDEwNywgIDEwNiwgIDEwNSwg
IDEwNCwgIDEwMywgIDEwMiwKLSAgICAgIDEwMSwgIDEwMCwgICA5OSwgICA5OCwgICA5NywgICA5
NiwgICA5NSwgICA5MSwgICA4NywgICA2MCwKLSAgICAgICA1MywgICA0OCwgICA0NiwgICA0Mywg
ICA0MCwgICAyNywgICAyNCwgICAxNiwgICAxMSwgICAgNywKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLQot
ICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4CisgICAgICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDgsICAgIDgsICAgIDksCisgICAgICAgMTMsICAgMTUs
ICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMjQsCisgICAgICAg
MjQsICAgMzAsICAgMzAsICAgNDAsICAgMTUsICAgMTMsICAgNDcsICAgNDAsICAgIDksICAgMTgs
CisgICAgICAgNDcsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAg
MTksICAgMjksCisKKyAgICAgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAx
OSwgICAxOCwgICAyMiwgICAzMSwKKyAgICAgICA0MSwgICAzMSwgICAxOCwgICAyOSwgIDQ0NCwg
ICAzMSwgICAxOSwgIDEzMywgIDQzOSwgIDEzMywKKyAgICAgICAxOCwgICAzMiwgICAzNCwgICA0
MSwgICAzNCwgICAyMiwgICAzMywgICAyMiwgICAyMiwgICAxOSwKKyAgICAgICAzMywgICAzMiwg
ICAzNSwgICAzNCwgICAzMiwgICAzMywgICAzNywgICAxOCwgICA1MSwgICAzOCwKKyAgICAgICAz
NSwgICAzMywgICAzNSwgICA0MywgICAzNywgICAzNSwgICAzOCwgICA5OSwgIDQzOCwgICA0NSwK
KyAgICAgICA0OCwgICAzNSwgIDQzNywgICAzOCwgICA0OCwgICAzNywgICA0NSwgICA0NSwgICA0
MywgICA0NiwKKyAgICAgICA5OSwgICA0MywgICA0NiwgICA0OCwgIDEwOSwgIDEyOSwgICA0NSwg
ICA0NSwgIDE5OCwgICA0NSwKKyAgICAgICA0NiwgIDQzNiwgIDEwOSwgIDEyOSwgIDE1MiwgIDE1
MiwgIDE5OCwgICA0NiwgICA1MSwgICA2NCwKKyAgICAgICA2NCwgICA2NCwgICA2NCwgICA2NCwg
ICA2NCwgICA2NCwgICA2NiwgICA2NiwgICA2NiwgICA2NiwKKyAgICAgICA2NiwgICA2NiwgICA2
NiwgIDQzNSwgIDEwNywgICA2NCwgIDEyMiwgIDEwNywgIDEwNywgIDQwMSwKKworICAgICAgNDAx
LCAgMTA3LCAgIDY2LCAgMTA3LCAgMTc4LCAgMTc4LCAgMTc4LCAgNDM0LCAgIDY0LCAgNDMyLAor
ICAgICAgNDMwLCAgMTIyLCAgNDI5LCAgNDI4LCAgIDY3LCAgIDY2LCAgIDY3LCAgIDY3LCAgIDY3
LCAgIDY3LAorICAgICAgIDY3LCAgIDY3LCAgIDY3LCAgIDY4LCAgNDI3LCAgIDY4LCAgIDY4LCAg
IDY4LCAgIDY4LCAgIDY4LAorICAgICAgIDY4LCAgIDY4LCAgIDY3LCAgMTQwLCAgMTQwLCAgMTQw
LCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLAorICAgICAgNDI2LCAgIDY4LCAgIDY5LCAgNDI0LCAg
IDY5LCAgIDY3LCAgNDIzLCAgIDY5LCAgIDY5LCAgIDY5LAorICAgICAgIDY5LCAgIDY5LCAgIDY5
LCAgIDY5LCAgIDY4LCAgMTM3LCAgNDIyLCAgMTM3LCAgNDIxLCAgNDIwLAorICAgICAgMTM3LCAg
MTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM4LCAgMTM4LCAgMTM4LAorICAg
ICAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LCAgMjAyLCAgMjAyLCAgMjAyLCAgNDE5LCAgNDE4LCAg
MTM5LAorICAgICAgNDE3LCAgMTM5LCAgNDE2LCAgMTM4LCAgMTM5LCAgMTM5LCAgMTM5LCAgMTM5
LCAgMTM5LCAgMTM5LAorICAgICAgMTM5LCAgMjEzLCAgMjEzLCAgMjEzLCAgNDE0LCAgNDEzLCAg
MTM4LCAgMTQxLCAgMTQxLCAgMTQxLAorCisgICAgICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAy
MDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsCisgICAgICAyMDYsICAyMDcsICAyMDcs
ICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDgsICAyMDgsCisgICAgICAyMDgsICAy
MDgsICAyMDgsICAyMDgsICAyMDgsICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksCisgICAg
ICAyMDksICAyMDksICAyMjEsICAyMjEsICAyMjEsICAyMjksICAyMjksICAyMjksICAyMzMsICAy
MzMsCisgICAgICAyMzMsICAyMzksICAyMzksICAyMzksICAzNzIsICAzNzIsICAzNzIsICA0MTIs
ICA0MTEsICA0MTAsCisgICAgICA0MDksICA0MDgsICA0MDcsICA0MDYsICA0MDUsICA0MDQsICA0
MDMsICAzNzIsICA0MDIsICAzNzIsCisgICAgICA0NDMsICA0NDMsICA0MDAsICAzOTEsICAzOTAs
ICAzODksICAzODgsICAzODcsICAzODYsICAzODQsCisgICAgICAzODMsICAzODIsICAzNzksICAz
NzgsICAzNzYsICAzNzMsICAzNzEsICAzNzAsICAzNjksICAzNjcsCisgICAgICAzNjYsICAzNjUs
ICAzNjIsICAzNjEsICAzNjAsICAzNTksICAzNTgsICAzNTcsICAzNTYsICAzNTUsCisgICAgICAz
NDksICAzNDYsICAzNDMsICAzNDIsICAzNDEsICAzNDAsICAzMzksICAzMzcsICAzMzUsICAzMzQs
CisKKyAgICAgIDMzMywgIDMzMiwgIDMzMCwgIDMyOSwgIDMyNywgIDMyNSwgIDMyNCwgIDMyMywg
IDMyMiwgIDMyMSwKKyAgICAgIDMyMCwgIDMxOSwgIDMxOCwgIDMxNiwgIDMxNSwgIDMxNCwgIDMx
MywgIDMxMiwgIDMxMSwgIDMxMCwKKyAgICAgIDMwOSwgIDMwOCwgIDMwNCwgIDMwMywgIDMwMCwg
IDI4OSwgIDI4NSwgIDI4NCwgIDI4MywgIDI4MiwKKyAgICAgIDI3NSwgIDI3NCwgIDI3MywgIDI2
OCwgIDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2MCwKKyAgICAgIDI1OSwgIDI1OCwg
IDI1NywgIDI1NiwgIDI1NSwgIDI1NCwgIDI1MywgIDI1MiwgIDI1MSwgIDI1MCwKKyAgICAgIDI0
OSwgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDIzOCwgIDIzNywgIDIzNiwgIDIzNSwgIDIzNCwK
KyAgICAgIDIzMiwgIDIyOCwgIDIyNiwgIDIyNSwgIDIyNCwgIDIyMCwgIDIxOSwgIDIxOCwgIDIx
NywgIDIxNiwKKyAgICAgIDIxNSwgIDIxMiwgIDIxMCwgIDIwNSwgIDIwNCwgIDIwMywgIDIwMSwg
IDIwMCwgIDE5OSwgIDE5NywKKyAgICAgIDE5NiwgIDE5NSwgIDE5NCwgIDE5MywgIDE5MiwgIDE5
MSwgIDE5MCwgIDE4OSwgIDE4OCwgIDE4NywKKyAgICAgIDE4NiwgIDE4NSwgIDE4NCwgIDE4Mywg
IDE4MiwgIDE4MSwgIDE4MCwgIDE3OSwgIDE3NywgIDE3NiwKKworICAgICAgMTc1LCAgMTc0LCAg
MTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LCAgMTY3LCAgMTY2LAorICAgICAgMTY1
LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTU4LCAgMTU3LCAgMTU2LCAgMTU1LAor
ICAgICAgMTU0LCAgMTUzLCAgMTUxLCAgMTUwLCAgMTQ5LCAgMTQ4LCAgMTQ3LCAgMTQ2LCAgMTM0
LCAgMTMyLAorICAgICAgMTMxLCAgMTMwLCAgMTI4LCAgMTI3LCAgMTI2LCAgMTI1LCAgMTI0LCAg
MTIzLCAgMTIxLCAgMTIwLAorICAgICAgMTE5LCAgMTE4LCAgMTE3LCAgMTE2LCAgMTE1LCAgMTE0
LCAgMTEzLCAgMTEyLCAgMTExLCAgMTEwLAorICAgICAgMTA4LCAgMTA1LCAgMTA0LCAgMTAzLCAg
MTAyLCAgMTAxLCAgMTAwLCAgIDk4LCAgIDk3LCAgIDk2LAorICAgICAgIDk1LCAgIDk0LCAgIDkz
LCAgIDkyLCAgIDkxLCAgIDkwLCAgIDg5LCAgIDg4LCAgIDg3LCAgIDg2LAorICAgICAgIDg1LCAg
IDg0LCAgIDgzLCAgIDgyLCAgIDc4LCAgIDc0LCAgIDQ5LCAgIDQ0LCAgIDQyLCAgIDM5LAorICAg
ICAgIDM2LCAgIDIzLCAgIDIwLCAgIDE3LCAgIDEyLCAgICA3LCAgICAzLCAgNDQyLCAgNDQyLCAg
NDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLCAgNDQyLAorCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAg
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIKICAgICB9IDsKIAogLyogVGFi
bGUgb2YgYm9vbGVhbnMsIHRydWUgaWYgcnVsZSBjb3VsZCBtYXRjaCBlb2wuICovCi1zdGF0aWMg
eXljb25zdCBmbGV4X2ludDMyX3QgeXlfcnVsZV9jYW5fbWF0Y2hfZW9sWzE1Nl0gPQorc3RhdGlj
IHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X3J1bGVfY2FuX21hdGNoX2VvbFsxNDhdID0KICAgICB7
ICAgMCwKLTAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIAorMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwg
MCwgICAgIH07CisgICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgICAgIH07CiAKIC8qIFRoZSBp
bnRlbnQgYmVoaW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB0aGF0IGl0J2xsIGNhdGNoCiAgKiBhbnkg
dXNlcyBvZiBSRUpFQ1Qgd2hpY2ggZmxleCBtaXNzZWQuCkBAIC04MTcsNyArNzkyLDEwIEBAIFdI
SUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEgd2FybmluZyhk
aXNhYmxlIDogNDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZhbC0+
bGV4LmxpbmUgPSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9maWxlID0geXlsbG9jLT5s
YXN0X2ZpbGUgPSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGxvYy0+
bGFzdF9saW5lID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1h
eF9zaXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5c2Nh
bm5lcik7CiAKQEAgLTgyNiw4ICs4MDQsNiBAQCBzdGF0aWMgaW50IGNoZWNrX3R5cGUoeXlzY2Fu
X3QgeXlzY2FubmVyCiBzdGF0aWMgaW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2FubmVy
KTsKIAogI2RlZmluZSBJTklUSUFMIDAKLSNkZWZpbmUgQ09NTUVOVCAxCi0jZGVmaW5lIEZJRUxE
UyAyCiAKICNkZWZpbmUgWVlfRVhUUkFfVFlQRSBUUGFyc2VDb250ZXh0KgogCkBAIC04NjUsNiAr
ODQxLDggQEAgc3RydWN0IHl5Z3V0c190CiAKICAgICBZWVNUWVBFICogeXlsdmFsX3I7CiAKKyAg
ICBZWUxUWVBFICogeXlsbG9jX3I7CisKICAgICB9OyAvKiBlbmQgc3RydWN0IHl5Z3V0c190ICov
CiAKIHN0YXRpYyBpbnQgeXlfaW5pdF9nbG9iYWxzICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKQEAg
LTg3Myw2ICs4NTEsOCBAQCBzdGF0aWMgaW50IHl5X2luaXRfZ2xvYmFscyAoeXlzY2FuX3QgeXlz
CiAgICAgICogZnJvbSBiaXNvbiBvdXRwdXQgaW4gc2VjdGlvbiAxLiovCiAgICAgIyAgICBkZWZp
bmUgeXlsdmFsIHl5Zy0+eXlsdmFsX3IKICAgICAKKyAgICAjICAgIGRlZmluZSB5eWxsb2MgeXln
LT55eWxsb2NfcgorICAgIAogaW50IHl5bGV4X2luaXQgKHl5c2Nhbl90KiBzY2FubmVyKTsKIAog
aW50IHl5bGV4X2luaXRfZXh0cmEgKFlZX0VYVFJBX1RZUEUgdXNlcl9kZWZpbmVkLHl5c2Nhbl90
KiBzY2FubmVyKTsKQEAgLTkxMCw2ICs4OTAsMTAgQEAgWVlTVFlQRSAqIHl5Z2V0X2x2YWwgKHl5
c2Nhbl90IHl5c2Nhbm5lcgogCiB2b2lkIHl5c2V0X2x2YWwgKFlZU1RZUEUgKiB5eWx2YWxfcGFy
YW0gLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisgICAgICAgWVlMVFlQRSAqeXlnZXRfbGxvYyAo
eXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAgCisgICAgICAgIHZvaWQgeXlzZXRfbGxvYyAoWVlM
VFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAgCiAvKiBNYWNy
b3MgYWZ0ZXIgdGhpcyBwb2ludCBjYW4gYWxsIGJlIG92ZXJyaWRkZW4gYnkgdXNlciBkZWZpbml0
aW9ucyBpbgogICogc2VjdGlvbiAxLgogICovCkBAIC05NDAsMTIgKzkyNCw2IEBAIHN0YXRpYyBp
bnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCiAjZW5kaWYKIAotICAgIHN0YXRpYyB2
b2lkIHl5X3B1c2hfc3RhdGUgKGludCBuZXdfc3RhdGUgLHl5c2Nhbl90IHl5c2Nhbm5lcik7Ci0g
ICAgCi0gICAgc3RhdGljIHZvaWQgeXlfcG9wX3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsK
LSAgICAKLSAgICBzdGF0aWMgaW50IHl5X3RvcF9zdGF0ZSAoeXlzY2FuX3QgeXlzY2FubmVyICk7
Ci0gICAgCiAvKiBBbW91bnQgb2Ygc3R1ZmYgdG8gc2x1cnAgdXAgd2l0aCBlYWNoIHJlYWQuICov
CiAjaWZuZGVmIFlZX1JFQURfQlVGX1NJWkUKICNkZWZpbmUgWVlfUkVBRF9CVUZfU0laRSA4MTky
CkBAIC0xMDIyLDEwICsxMDAwLDEwIEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nh
bm5lciApOwogI2RlZmluZSBZWV9ERUNMX0lTX09VUlMgMQogCiBleHRlcm4gaW50IHl5bGV4IFwK
LSAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFtICx5eXNjYW5fdCB5eXNjYW5u
ZXIpOworICAgICAgICAgICAgICAgKFlZU1RZUEUgKiB5eWx2YWxfcGFyYW0sWVlMVFlQRSAqIHl5
bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyKTsKIAogI2RlZmluZSBZWV9ERUNMIGludCB5
eWxleCBcCi0gICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSAsIHl5c2Nhbl90
IHl5c2Nhbm5lcikKKyAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFtLCBZWUxU
WVBFICogeXlsbG9jX3BhcmFtICwgeXlzY2FuX3QgeXlzY2FubmVyKQogI2VuZGlmIC8qICFZWV9E
RUNMICovCiAKIC8qIENvZGUgZXhlY3V0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHJ1bGUs
IGFmdGVyIHl5dGV4dCBhbmQgeXlsZW5nCkBAIC0xMDUyLDEyICsxMDMwLDEwIEBAIFlZX0RFQ0wK
IAlyZWdpc3RlciBpbnQgeXlfYWN0OwogICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1
Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKIAotICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQgPSB5
eWV4dHJhOwotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMgKi8KLQogICAgIHl5bHZhbCA9
IHl5bHZhbF9wYXJhbTsKIAorICAgIHl5bGxvYyA9IHl5bGxvY19wYXJhbTsKKwogCWlmICggIXl5
Zy0+eXlfaW5pdCApCiAJCXsKIAkJeXlnLT55eV9pbml0ID0gMTsKQEAgLTExMDksMTMgKzEwODUs
MTMgQEAgeXlfbWF0Y2g6CiAJCQl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3Rh
dGVdICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQkJewogCQkJCXl5X2N1cnJlbnRf
c3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCQkJaWYgKCB5eV9jdXJy
ZW50X3N0YXRlID49IDQ1OSApCisJCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ0MyApCiAJ
CQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJCX0KIAkJCXl5X2N1
cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25l
ZCBpbnQpIHl5X2NdOwogCQkJKyt5eV9jcDsKIAkJCX0KLQkJd2hpbGUgKCB5eV9jdXJyZW50X3N0
YXRlICE9IDQ1OCApOworCQl3aGlsZSAoIHl5X2N1cnJlbnRfc3RhdGUgIT0gNDQyICk7CiAJCXl5
X2NwID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19jcG9zOwogCQl5eV9jdXJyZW50X3N0YXRlID0g
eXlnLT55eV9sYXN0X2FjY2VwdGluZ19zdGF0ZTsKIApAQCAtMTE0OSwxOTggKzExMjUsMTk5IEBA
IGRvX2FjdGlvbjoJLyogVGhpcyBsYWJlbCBpcyB1c2VkIG9ubHkgdG8KIAogY2FzZSAxOgogWVlf
UlVMRV9TRVRVUAotOworeyByZXR1cm4gSU5WQVJJQU5UOyB9CiAJWVlfQlJFQUsKLS8qIE11bHRp
LWxpbmUgY29tbWVudHMgKi8KIGNhc2UgMjoKIFlZX1JVTEVfU0VUVVAKLXsgeXlfcHVzaF9zdGF0
ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9Cit7IHJldHVybiBISUdIX1BSRUNJU0lPTjsgfQogCVlZ
X0JSRUFLCiBjYXNlIDM6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBNRURJVU1fUFJFQ0lTSU9O
OyB9CisJWVlfQlJFQUsKIGNhc2UgNDoKLS8qIHJ1bGUgNCBjYW4gbWF0Y2ggZW9sICovCiBZWV9S
VUxFX1NFVFVQCi07Cit7IHJldHVybiBMT1dfUFJFQ0lTSU9OOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
NToKIFlZX1JVTEVfU0VUVVAKLXsgeXlfcG9wX3N0YXRlKHl5c2Nhbm5lcik7IH0KK3sgcmV0dXJu
IFBSRUNJU0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDY6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
bihJTlZBUklBTlQpOyB9Cit7IHJldHVybiBBVFRSSUJVVEU7IH0KIAlZWV9CUkVBSwogY2FzZSA3
OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Cit7IHJldHVybiBD
T05TVF9RVUFMOyB9CiAJWVlfQlJFQUsKIGNhc2UgODoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJu
KE1FRElVTV9QUkVDSVNJT04pOyB9Cit7IHJldHVybiBVTklGT1JNOyB9CiAJWVlfQlJFQUsKIGNh
c2UgOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKExPV19QUkVDSVNJT04pOyB9Cit7IHJldHVy
biBWQVJZSU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
bihQUkVDSVNJT04pOyB9Cit7IHJldHVybiBCUkVBSzsgfQogCVlZX0JSRUFLCiBjYXNlIDExOgog
WVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQVRUUklCVVRFKTsgfQoreyByZXR1cm4gQ09OVElOVUU7
IH0KIAlZWV9CUkVBSwogY2FzZSAxMjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKENPTlNUX1FV
QUwpOyB9Cit7IHJldHVybiBETzsgfQogCVlZX0JSRUFLCiBjYXNlIDEzOgogWVlfUlVMRV9TRVRV
UAoteyByZXR1cm4oVU5JRk9STSk7IH0KK3sgcmV0dXJuIEZPUjsgfQogCVlZX0JSRUFLCiBjYXNl
IDE0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oVkFSWUlORyk7IH0KK3sgcmV0dXJuIFdISUxF
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTU6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihCUkVBSyk7
IH0KK3sgcmV0dXJuIElGOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTY6CiBZWV9SVUxFX1NFVFVQCi17
IHJldHVybihDT05USU5VRSk7IH0KK3sgcmV0dXJuIEVMU0U7IH0KIAlZWV9CUkVBSwogY2FzZSAx
NzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKERPKTsgfQoreyByZXR1cm4gSU5fUVVBTDsgfQog
CVlZX0JSRUFLCiBjYXNlIDE4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oRk9SKTsgfQoreyBy
ZXR1cm4gT1VUX1FVQUw7IH0KIAlZWV9CUkVBSwogY2FzZSAxOToKIFlZX1JVTEVfU0VUVVAKLXsg
cmV0dXJuKFdISUxFKTsgfQoreyByZXR1cm4gSU5PVVRfUVVBTDsgfQogCVlZX0JSRUFLCiBjYXNl
IDIwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSUYpOyB9Cit7IHJldHVybiBGTE9BVF9UWVBF
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMjE6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihFTFNFKTsg
fQoreyByZXR1cm4gSU5UX1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAyMjoKIFlZX1JVTEVfU0VU
VVAKLXsgcmV0dXJuKElOX1FVQUwpOyB9Cit7IHJldHVybiBWT0lEX1RZUEU7IH0KIAlZWV9CUkVB
SwogY2FzZSAyMzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKE9VVF9RVUFMKTsgfQoreyByZXR1
cm4gQk9PTF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjQ6CiBZWV9SVUxFX1NFVFVQCi17IHJl
dHVybihJTk9VVF9RVUFMKTsgfQoreyB5eWx2YWwtPmxleC5iID0gdHJ1ZTsgIHJldHVybiBCT09M
Q09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAyNToKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEZMT0FUX1RZUEUpOyB9Cit7IHl5bHZhbC0+
bGV4LmIgPSBmYWxzZTsgcmV0dXJuIEJPT0xDT05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDI2
OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4o
SU5UX1RZUEUpOyB9Cit7IHJldHVybiBESVNDQVJEOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjc6CiBZ
WV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihWT0lE
X1RZUEUpOyB9Cit7IHJldHVybiBSRVRVUk47IH0KIAlZWV9CUkVBSwogY2FzZSAyODoKIFlZX1JV
TEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEJPT0xfVFlQ
RSk7IH0KK3sgcmV0dXJuIE1BVFJJWDI7IH0KIAlZWV9CUkVBSwogY2FzZSAyOToKIFlZX1JVTEVf
U0VUVVAKLXsgeXlsdmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4oQk9PTENPTlNUQU5UKTsgfQor
eyByZXR1cm4gTUFUUklYMzsgfQogCVlZX0JSRUFLCiBjYXNlIDMwOgogWVlfUlVMRV9TRVRVUAot
eyB5eWx2YWwtPmxleC5iID0gZmFsc2U7IHJldHVybihCT09MQ09OU1RBTlQpOyB9Cit7IHJldHVy
biBNQVRSSVg0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzE6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
bihESVNDQVJEKTsgfQoreyByZXR1cm4gVkVDMjsgfQogCVlZX0JSRUFLCiBjYXNlIDMyOgogWVlf
UlVMRV9TRVRVUAoteyByZXR1cm4oUkVUVVJOKTsgfQoreyByZXR1cm4gVkVDMzsgfQogCVlZX0JS
RUFLCiBjYXNlIDMzOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0
cnVlOyByZXR1cm4oTUFUUklYMik7IH0KK3sgcmV0dXJuIFZFQzQ7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAzNDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuKE1BVFJJWDMpOyB9Cit7IHJldHVybiBJVkVDMjsgfQogCVlZX0JSRUFLCiBjYXNlIDM1Ogog
WVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFU
UklYNCk7IH0KK3sgcmV0dXJuIElWRUMzOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzY6CiBZWV9SVUxF
X1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDMik7IH0K
K3sgcmV0dXJuIElWRUM0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzc6CiBZWV9SVUxFX1NFVFVQCi17
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDMyk7IH0KK3sgcmV0dXJu
IEJWRUMyOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzg6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KK3sgcmV0dXJuIEJWRUMzOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMzk6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVy
VHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzIpOyB9Cit7IHJldHVybiBCVkVDNDsgfQogCVlZX0JS
RUFLCiBjYXNlIDQwOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0
cnVlOyByZXR1cm4gKElWRUMzKTsgfQoreyByZXR1cm4gU0FNUExFUjJEOyB9CiAJWVlfQlJFQUsK
IGNhc2UgNDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7
IHJldHVybiAoSVZFQzQpOyB9Cit7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQogCVlZX0JSRUFLCiBj
YXNlIDQyOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyBy
ZXR1cm4gKEJWRUMyKTsgfQoreyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KIAlZWV9C
UkVBSwogY2FzZSA0MzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
dHJ1ZTsgcmV0dXJuIChCVkVDMyk7IH0KK3sgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAlZWV9C
UkVBSwogY2FzZSA0NDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
dHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KK3sgcmV0dXJuIFNUUlVDVDsgfQogCVlZX0JSRUFLCiBj
YXNlIDQ1OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyBy
ZXR1cm4gU0FNUExFUjJEOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0K
IAlZWV9CUkVBSwogY2FzZSA0NjoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJDVUJFOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3Jk
KHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NzoKIFlZX1JVTEVfU0VUVVAKLXsgY29u
dGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJfRVhURVJOQUxfT0VTOyB9
Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0
ODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJu
IFNBTVBMRVIyRFJFQ1Q7IH0KK3sgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQog
CVlZX0JSRUFLCiBjYXNlIDQ5OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5
cGUgPSB0cnVlOyByZXR1cm4oU1RSVUNUKTsgfQoreyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNj
YW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNTA6CiBZWV9SVUxFX1NFVFVQCkBAIC0xNTE2LDI2
NiArMTQ5MywyMjggQEAgWVlfUlVMRV9TRVRVUAogCVlZX0JSRUFLCiBjYXNlIDkzOgogWVlfUlVM
RV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7CisgICB5eWx2
YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAKKyAgIHJldHVybiBjaGVj
a190eXBlKHl5c2Nhbm5lcik7Cit9CiAJWVlfQlJFQUsKIGNhc2UgOTQ6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KK3sgeXlsdmFsLT5sZXguaSA9
IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09OU1RB
TlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5NToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIHJlc2Vy
dmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50
PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05TVEFOVDsgfQogCVlZX0JSRUFL
CiBjYXNlIDk2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5u
ZXIpOyB9Cit7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQs
IDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgOTc6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KK3sgeXlsdmFs
LT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZM
T0FUQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5ODoKIFlZX1JVTEVfU0VUVVAKLXsKLSAg
IHl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5nKHl5dGV4dCk7IAotICAgcmV0dXJu
IGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKLX0KK3sgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0
PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KIAlZWV9C
UkVBSwogY2FzZSA5OToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19j
YXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Cit7
IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJl
dHVybiBGTE9BVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAwOgogWVlfUlVMRV9TRVRV
UAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAw
KSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIEFERF9BU1NJR047IH0KIAlZWV9C
UkVBSwogY2FzZSAxMDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmVycm9yKHl5bGluZW5v
LCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+cmVjb3ZlcigpOyBy
ZXR1cm4gMDt9Cit7IHJldHVybiBTVUJfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAyOgog
WVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2wo
eXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIE1VTF9BU1NJ
R047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDM6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4
LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENP
TlNUQU5UKTsgfQoreyByZXR1cm4gRElWX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEwNDoK
IFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9m
X2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Cit7IHJldHVybiBNT0RfQVNT
SUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA1OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxl
eC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4oRkxPQVRD
T05TVEFOVCk7IH0KK3sgcmV0dXJuIExFRlRfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA2
OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEFERF9BU1NJR04pOyB9Cit7IHJldHVybiBSSUdI
VF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDc6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1
cm4oU1VCX0FTU0lHTik7IH0KK3sgcmV0dXJuIEFORF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxMDg6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KK3sgcmV0dXJu
IFhPUl9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDk6CiBZWV9SVUxFX1NFVFVQCi17ICBy
ZXR1cm4oRElWX0FTU0lHTik7IH0KK3sgcmV0dXJuIE9SX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBj
YXNlIDExMDoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihNT0RfQVNTSUdOKTsgfQoreyByZXR1
cm4gSU5DX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTExOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0
dXJuKExFRlRfQVNTSUdOKTsgfQoreyByZXR1cm4gREVDX09QOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
MTEyOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFJJR0hUX0FTU0lHTik7IH0KK3sgcmV0dXJu
IEFORF9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExMzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVy
bihBTkRfQVNTSUdOKTsgfQoreyByZXR1cm4gT1JfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTQ6
CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oWE9SX0FTU0lHTik7IH0KK3sgcmV0dXJuIFhPUl9P
UDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihPUl9B
U1NJR04pOyB9Cit7IHJldHVybiBMRV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNjoKIFlZX1JV
TEVfU0VUVVAKLXsgIHJldHVybihJTkNfT1ApOyB9Cit7IHJldHVybiBHRV9PUDsgfQogCVlZX0JS
RUFLCiBjYXNlIDExNzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihERUNfT1ApOyB9Cit7IHJl
dHVybiBFUV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExODoKIFlZX1JVTEVfU0VUVVAKLXsgIHJl
dHVybihBTkRfT1ApOyB9Cit7IHJldHVybiBORV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExOToK
IFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihPUl9PUCk7IH0KK3sgcmV0dXJuIExFRlRfT1A7IH0K
IAlZWV9CUkVBSwogY2FzZSAxMjA6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oWE9SX09QKTsg
fQoreyByZXR1cm4gUklHSFRfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjE6CiBZWV9SVUxFX1NF
VFVQCi17ICByZXR1cm4oTEVfT1ApOyB9Cit7IHJldHVybiBTRU1JQ09MT047IH0KIAlZWV9CUkVB
SwogY2FzZSAxMjI6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oR0VfT1ApOyB9Cit7IHJldHVy
biBMRUZUX0JSQUNFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIzOgogWVlfUlVMRV9TRVRVUAoteyAg
cmV0dXJuKEVRX09QKTsgfQoreyByZXR1cm4gUklHSFRfQlJBQ0U7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxMjQ6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTkVfT1ApOyB9Cit7IHJldHVybiBDT01N
QTsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihMRUZU
X09QKTsgfQoreyByZXR1cm4gQ09MT047IH0KIAlZWV9CUkVBSwogY2FzZSAxMjY6CiBZWV9SVUxF
X1NFVFVQCi17ICByZXR1cm4oUklHSFRfT1ApOyB9Cit7IHJldHVybiBFUVVBTDsgfQogCVlZX0JS
RUFLCiBjYXNlIDEyNzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
ZmFsc2U7IHJldHVybihTRU1JQ09MT04pOyB9Cit7IHJldHVybiBMRUZUX1BBUkVOOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMTI4OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSBmYWxzZTsgcmV0dXJuKExFRlRfQlJBQ0UpOyB9Cit7IHJldHVybiBSSUdIVF9QQVJFTjsgfQog
CVlZX0JSRUFLCiBjYXNlIDEyOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJJR0hUX0JSQUNF
KTsgfQoreyByZXR1cm4gTEVGVF9CUkFDS0VUOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMwOgogWVlf
UlVMRV9TRVRVUAoteyBpZiAoY29udGV4dC0+aW5UeXBlUGFyZW4pIGNvbnRleHQtPmxleEFmdGVy
VHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Cit7IHJldHVybiBSSUdIVF9CUkFDS0VUOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTMxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQ09MT04pOyB9
Cit7IHJldHVybiBET1Q7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzI6CiBZWV9SVUxFX1NFVFVQCi17
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oRVFVQUwpOyB9Cit7IHJldHVy
biBCQU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMzOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0
LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgY29udGV4dC0+aW5UeXBlUGFyZW4gPSB0cnVlOyByZXR1
cm4oTEVGVF9QQVJFTik7IH0KK3sgcmV0dXJuIERBU0g7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzQ6
CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmluVHlwZVBhcmVuID0gZmFsc2U7IHJldHVybihS
SUdIVF9QQVJFTik7IH0KK3sgcmV0dXJuIFRJTERFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM1Ogog
WVlfUlVMRV9TRVRVUAoteyByZXR1cm4oTEVGVF9CUkFDS0VUKTsgfQoreyByZXR1cm4gUExVUzsg
fQogCVlZX0JSRUFLCiBjYXNlIDEzNjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJJR0hUX0JS
QUNLRVQpOyB9Cit7IHJldHVybiBTVEFSOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM3OgogWVlfUlVM
RV9TRVRVUAoteyBCRUdJTihGSUVMRFMpOyAgcmV0dXJuKERPVCk7IH0KK3sgcmV0dXJuIFNMQVNI
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQkFORyk7
IH0KK3sgcmV0dXJuIFBFUkNFTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzk6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybihEQVNIKTsgfQoreyByZXR1cm4gTEVGVF9BTkdMRTsgfQogCVlZX0JSRUFL
CiBjYXNlIDE0MDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFRJTERFKTsgfQoreyByZXR1cm4g
UklHSFRfQU5HTEU7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDE6CiBZWV9SVUxFX1NFVFVQCi17IHJl
dHVybihQTFVTKTsgfQoreyByZXR1cm4gVkVSVElDQUxfQkFSOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
MTQyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oU1RBUik7IH0KK3sgcmV0dXJuIENBUkVUOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTQzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oU0xBU0gpOyB9
Cit7IHJldHVybiBBTVBFUlNBTkQ7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDQ6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybihQRVJDRU5UKTsgfQoreyByZXR1cm4gUVVFU1RJT047IH0KIAlZWV9CUkVB
SwogY2FzZSAxNDU6CisvKiBydWxlIDE0NSBjYW4gbWF0Y2ggZW9sICovCiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybihMRUZUX0FOR0xFKTsgfQotCVlZX0JSRUFLCi1jYXNlIDE0NjoKLVlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKFJJR0hUX0FOR0xFKTsgfQotCVlZX0JSRUFLCi1jYXNlIDE0NzoKLVlZ
X1JVTEVfU0VUVVAKLXsgcmV0dXJuKFZFUlRJQ0FMX0JBUik7IH0KLQlZWV9CUkVBSwotY2FzZSAx
NDg6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihDQVJFVCk7IH0KLQlZWV9CUkVBSwotY2FzZSAx
NDk6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihBTVBFUlNBTkQpOyB9Ci0JWVlfQlJFQUsKLWNh
c2UgMTUwOgotWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUVVFU1RJT04pOyB9Ci0JWVlfQlJFQUsK
LWNhc2UgMTUxOgotWVlfUlVMRV9TRVRVUAoteyAKLSAgICBCRUdJTihJTklUSUFMKTsKLSAgICB5
eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAKLSAgICByZXR1cm4g
RklFTERfU0VMRUNUSU9OOwotfQotCVlZX0JSRUFLCi1jYXNlIDE1MjoKLVlZX1JVTEVfU0VUVVAK
LXt9Ci0JWVlfQlJFQUsKLWNhc2UgMTUzOgotLyogcnVsZSAxNTMgY2FuIG1hdGNoIGVvbCAqLwot
WVlfUlVMRV9TRVRVUAoteyAgfQoreyB9CiAJWVlfQlJFQUsKIGNhc2UgWVlfU1RBVEVfRU9GKElO
SVRJQUwpOgotY2FzZSBZWV9TVEFURV9FT0YoQ09NTUVOVCk6Ci1jYXNlIFlZX1NUQVRFX0VPRihG
SUVMRFMpOgoteyBjb250ZXh0LT5BZnRlckVPRiA9IHRydWU7IHl5dGVybWluYXRlKCk7IH0KK3sg
eXl0ZXJtaW5hdGUoKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE1NDoKK2Nhc2UgMTQ2OgogWVlfUlVM
RV9TRVRVUAoteyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBjaGFyIiwgeXl0
ZXh0LCAiIik7IHJldHVybiAwOyB9Cit7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAJWVlf
QlJFQUsKLWNhc2UgMTU1OgorY2FzZSAxNDc6CiBZWV9SVUxFX1NFVFVQCiBFQ0hPOwogCVlZX0JS
RUFLCkBAIC0yMDcxLDcgKzIwMTAsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAo
eXlzY2FuX3QgCiAJCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyB5
eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJCXsKIAkJCXl5X2N1cnJlbnRfc3RhdGUgPSAo
aW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUg
Pj0gNDU5ICkKKwkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NDMgKQogCQkJCXl5X2MgPSB5
eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJfQogCQl5eV9jdXJyZW50X3N0YXRlID0g
eXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsK
QEAgLTIxMDAsMTEgKzIwMzksMTEgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5
c2Nhbl90IAogCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyB5eV9j
XSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJewogCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkg
eXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gNDU5
ICkKKwkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ0MyApCiAJCQl5eV9jID0geXlfbWV0YVso
dW5zaWduZWQgaW50KSB5eV9jXTsKIAkJfQogCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlf
YmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwotCXl5X2lzX2ph
bSA9ICh5eV9jdXJyZW50X3N0YXRlID09IDQ1OCk7CisJeXlfaXNfamFtID0gKHl5X2N1cnJlbnRf
c3RhdGUgPT0gNDQyKTsKIAogCXJldHVybiB5eV9pc19qYW0gPyAwIDogeXlfY3VycmVudF9zdGF0
ZTsKIH0KQEAgLTI1NDgsNDYgKzI0ODcsNiBAQCBZWV9CVUZGRVJfU1RBVEUgeXlfc2Nhbl9ieXRl
cyAgKHl5Y29uc3QgCiAJcmV0dXJuIGI7CiB9CiAKLSAgICBzdGF0aWMgdm9pZCB5eV9wdXNoX3N0
YXRlIChpbnQgIG5ld19zdGF0ZSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBzdHJ1Y3Qg
eXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0JaWYgKCB5eWct
Pnl5X3N0YXJ0X3N0YWNrX3B0ciA+PSB5eWctPnl5X3N0YXJ0X3N0YWNrX2RlcHRoICkKLQkJewot
CQl5eV9zaXplX3QgbmV3X3NpemU7Ci0KLQkJeXlnLT55eV9zdGFydF9zdGFja19kZXB0aCArPSBZ
WV9TVEFSVF9TVEFDS19JTkNSOwotCQluZXdfc2l6ZSA9IHl5Zy0+eXlfc3RhcnRfc3RhY2tfZGVw
dGggKiBzaXplb2YoIGludCApOwotCi0JCWlmICggISB5eWctPnl5X3N0YXJ0X3N0YWNrICkKLQkJ
CXl5Zy0+eXlfc3RhcnRfc3RhY2sgPSAoaW50ICopIHl5YWxsb2MobmV3X3NpemUgLHl5c2Nhbm5l
ciApOwotCi0JCWVsc2UKLQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sgPSAoaW50ICopIHl5cmVhbGxv
Yygodm9pZCAqKSB5eWctPnl5X3N0YXJ0X3N0YWNrLG5ld19zaXplICx5eXNjYW5uZXIgKTsKLQot
CQlpZiAoICEgeXlnLT55eV9zdGFydF9zdGFjayApCi0JCQlZWV9GQVRBTF9FUlJPUiggIm91dCBv
ZiBtZW1vcnkgZXhwYW5kaW5nIHN0YXJ0LWNvbmRpdGlvbiBzdGFjayIgKTsKLQkJfQotCi0JeXln
LT55eV9zdGFydF9zdGFja1t5eWctPnl5X3N0YXJ0X3N0YWNrX3B0cisrXSA9IFlZX1NUQVJUOwot
Ci0JQkVHSU4obmV3X3N0YXRlKTsKLX0KLQotICAgIHN0YXRpYyB2b2lkIHl5X3BvcF9zdGF0ZSAg
KHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3Ry
dWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0JaWYgKCAtLXl5Zy0+eXlfc3RhcnRfc3RhY2tfcHRy
IDwgMCApCi0JCVlZX0ZBVEFMX0VSUk9SKCAic3RhcnQtY29uZGl0aW9uIHN0YWNrIHVuZGVyZmxv
dyIgKTsKLQotCUJFR0lOKHl5Zy0+eXlfc3RhcnRfc3RhY2tbeXlnLT55eV9zdGFydF9zdGFja19w
dHJdKTsKLX0KLQotICAgIHN0YXRpYyBpbnQgeXlfdG9wX3N0YXRlICAoeXlzY2FuX3QgeXlzY2Fu
bmVyKQotewotICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5
c2Nhbm5lcjsKLQlyZXR1cm4geXlnLT55eV9zdGFydF9zdGFja1t5eWctPnl5X3N0YXJ0X3N0YWNr
X3B0ciAtIDFdOwotfQotCiAjaWZuZGVmIFlZX0VYSVRfRkFJTFVSRQogI2RlZmluZSBZWV9FWElU
X0ZBSUxVUkUgMgogI2VuZGlmCkBAIC0yNzczLDYgKzI2NzIsMTggQEAgdm9pZCB5eXNldF9sdmFs
IChZWVNUWVBFICogIHl5bHZhbF9wYXJhbQogICAgIHl5bHZhbCA9IHl5bHZhbF9wYXJhbTsKIH0K
IAorWVlMVFlQRSAqeXlnZXRfbGxvYyAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKK3sKKyAgICBzdHJ1
Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisgICAgcmV0
dXJuIHl5bGxvYzsKK30KKyAgICAKK3ZvaWQgeXlzZXRfbGxvYyAoWVlMVFlQRSAqICB5eWxsb2Nf
cGFyYW0gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0IHl5Z3V0c190ICogeXln
ID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAgIHl5bGxvYyA9IHl5bGxvY19wYXJh
bTsKK30KKyAgICAKIC8qIFVzZXItdmlzaWJsZSBBUEkgKi8KIAogLyogeXlsZXhfaW5pdCBpcyBz
cGVjaWFsIGJlY2F1c2UgaXQgY3JlYXRlcyB0aGUgc2Nhbm5lciBpdHNlbGYsIHNvIGl0IGlzCkBA
IC0yOTU0LDcgKzI4NjUsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlf
c2l6CiAgICAgeXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8g
MCA6IHRva2VuLnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAg
bWVtY3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAgIHl5c2V0X2xpbmVubyhF
bmNvZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24ubGluZSks
eXlzY2FubmVyKTsKKyAgICB5eXNldF9jb2x1bW4odG9rZW4ubG9jYXRpb24uZmlsZSx5eXNjYW5u
ZXIpOworICAgIHl5c2V0X2xpbmVubyh0b2tlbi5sb2NhdGlvbi5saW5lLHl5c2Nhbm5lcik7CiAK
ICAgICBpZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5wdXQg
YnVmZmVyIG92ZXJmbG93Iik7CkBAIC0yOTY4LDEyICsyODgwLDEwIEBAIGludCBjaGVja190eXBl
KHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIAogICAgIGludCB0b2tlbiA9IElERU5USUZJRVI7
CiAgICAgVFN5bWJvbCogc3ltYm9sID0geXlleHRyYS0+c3ltYm9sVGFibGUuZmluZCh5eXRleHQp
OwotICAgIGlmICh5eWV4dHJhLT5sZXhBZnRlclR5cGUgPT0gZmFsc2UgJiYgc3ltYm9sICYmIHN5
bWJvbC0+aXNWYXJpYWJsZSgpKSB7CisgICAgaWYgKHN5bWJvbCAmJiBzeW1ib2wtPmlzVmFyaWFi
bGUoKSkgewogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8VFZhcmlh
YmxlKj4oc3ltYm9sKTsKLSAgICAgICAgaWYgKHZhcmlhYmxlLT5pc1VzZXJUeXBlKCkpIHsKLSAg
ICAgICAgICAgIHl5ZXh0cmEtPmxleEFmdGVyVHlwZSA9IHRydWU7CisgICAgICAgIGlmICh2YXJp
YWJsZS0+aXNVc2VyVHlwZSgpKQogICAgICAgICAgICAgdG9rZW4gPSBUWVBFX05BTUU7Ci0gICAg
ICAgIH0KICAgICB9CiAgICAgeXlsdmFsLT5sZXguc3ltYm9sID0gc3ltYm9sOwogICAgIHJldHVy
biB0b2tlbjsKQEAgLTI5ODIsMjIgKzI4OTIsMTEgQEAgaW50IGNoZWNrX3R5cGUoeXlzY2FuX3Qg
eXlzY2FubmVyKSB7CiBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKICAg
ICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSB5eXNjYW5uZXI7CiAK
LSAgICB5eWV4dHJhLT5lcnJvcih5eWxpbmVubywgIklsbGVnYWwgdXNlIG9mIHJlc2VydmVkIHdv
cmQiLCB5eXRleHQsICIiKTsKKyAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSWxsZWdhbCB1
c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwgIiIpOwogICAgIHl5ZXh0cmEtPnJlY292ZXIo
KTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IGNoYXIqIHJlYXNvbikgewotICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0
cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPnNjYW5uZXI7Ci0KLSAgICBpZiAoY29udGV4dC0+QWZ0
ZXJFT0YpIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXlsaW5lbm8sIHJlYXNvbiwgInVuZXhw
ZWN0ZWQgRU9GIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXlsaW5l
bm8sIHJlYXNvbiwgeXl0ZXh0KTsKLSAgICB9Ci0gICAgY29udGV4dC0+cmVjb3ZlcigpOwotfQot
CiBpbnQgZ2xzbGFuZ19pbml0aWFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICB5
eXNjYW5fdCBzY2FubmVyID0gTlVMTDsKICAgICBpZiAoeXlsZXhfaW5pdF9leHRyYShjb250ZXh0
LCZzY2FubmVyKSkKQEAgLTMwMjAsOCArMjkxOSw4IEBAIGludCBnbHNsYW5nX2ZpbmFsaXplKFRQ
YXJzZUNvbnRleHQqIGNvbnQKIGludCBnbHNsYW5nX3NjYW4oc2l6ZV90IGNvdW50LCBjb25zdCBj
aGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAogICAgICAgICAgICAgICAg
ICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlyZXN0YXJ0KE5VTEwsY29udGV4dC0+
c2Nhbm5lcik7Ci0gICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJjZUxvYygwLCAxKSxjb250ZXh0
LT5zY2FubmVyKTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNlOworICAgIHl5c2V0X2Nv
bHVtbigwLGNvbnRleHQtPnNjYW5uZXIpOworICAgIHl5c2V0X2xpbmVubygxLGNvbnRleHQtPnNj
YW5uZXIpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBwcmVwcm9jZXNzb3IuCiAgICAgaWYgKCFjb250
ZXh0LT5wcmVwcm9jZXNzb3IuaW5pdChjb3VudCwgc3RyaW5nLCBsZW5ndGgpKQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIu
Y3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvZ2xzbGFuZ190YWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBACiAj
ZGVmaW5lIFlZUFVSRSAxCiAKIC8qIFVzaW5nIGxvY2F0aW9ucy4gICovCi0jZGVmaW5lIFlZTFNQ
X05FRURFRCAwCisjZGVmaW5lIFlZTFNQX05FRURFRCAxCiAKIAogCkBAIC0xMTMsNTIgKzExMyw1
MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0gMzAyLAogICAgICBJTlRDT05TVEFOVCA9IDMwMywK
ICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAotICAgICBGSUVMRF9TRUxFQ1RJT04gPSAzMDUsCi0g
ICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJR0hUX09QID0gMzA3LAotICAgICBJTkNfT1AgPSAz
MDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAgICAgTEVfT1AgPSAzMTAsCi0gICAgIEdFX09QID0g
MzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAgICAgTkVfT1AgPSAzMTMsCi0gICAgIEFORF9PUCA9
IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0gICAgIFhPUl9PUCA9IDMxNiwKLSAgICAgTVVMX0FT
U0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lHTiA9IDMxOCwKLSAgICAgQUREX0FTU0lHTiA9IDMx
OSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwKLSAgICAgTEVGVF9BU1NJR04gPSAzMjEsCi0gICAg
IFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAgQU5EX0FTU0lHTiA9IDMyMywKLSAgICAgWE9SX0FT
U0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdOID0gMzI1LAotICAgICBTVUJfQVNTSUdOID0gMzI2
LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAotICAgICBSSUdIVF9QQVJFTiA9IDMyOCwKLSAgICAg
TEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBSSUdIVF9CUkFDS0VUID0gMzMwLAotICAgICBMRUZU
X0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9CUkFDRSA9IDMzMiwKLSAgICAgRE9UID0gMzMzLAot
ICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09MT04gPSAzMzUsCi0gICAgIEVRVUFMID0gMzM2LAot
ICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAgIEJBTkcgPSAzMzgsCi0gICAgIERBU0ggPSAzMzks
Ci0gICAgIFRJTERFID0gMzQwLAotICAgICBQTFVTID0gMzQxLAotICAgICBTVEFSID0gMzQyLAot
ICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVSQ0VOVCA9IDM0NCwKLSAgICAgTEVGVF9BTkdMRSA9
IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAzNDYsCi0gICAgIFZFUlRJQ0FMX0JBUiA9IDM0NywK
LSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFNUEVSU0FORCA9IDM0OSwKLSAgICAgUVVFU1RJT04g
PSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwKKyAgICAgUklHSFRfT1AgPSAzMDYsCisgICAgIElO
Q19PUCA9IDMwNywKKyAgICAgREVDX09QID0gMzA4LAorICAgICBMRV9PUCA9IDMwOSwKKyAgICAg
R0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0gMzExLAorICAgICBORV9PUCA9IDMxMiwKKyAgICAg
QU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9IDMxNCwKKyAgICAgWE9SX09QID0gMzE1LAorICAg
ICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBESVZfQVNTSUdOID0gMzE3LAorICAgICBBRERfQVNT
SUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdOID0gMzE5LAorICAgICBMRUZUX0FTU0lHTiA9IDMy
MCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIxLAorICAgICBBTkRfQVNTSUdOID0gMzIyLAorICAg
ICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBPUl9BU1NJR04gPSAzMjQsCisgICAgIFNVQl9BU1NJ
R04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4gPSAzMjYsCisgICAgIFJJR0hUX1BBUkVOID0gMzI3
LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgsCisgICAgIFJJR0hUX0JSQUNLRVQgPSAzMjksCisg
ICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAgIFJJR0hUX0JSQUNFID0gMzMxLAorICAgICBET1Qg
PSAzMzIsCisgICAgIENPTU1BID0gMzMzLAorICAgICBDT0xPTiA9IDMzNCwKKyAgICAgRVFVQUwg
PSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMzNiwKKyAgICAgQkFORyA9IDMzNywKKyAgICAgREFT
SCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzksCisgICAgIFBMVVMgPSAzNDAsCisgICAgIFNUQVIg
PSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAorICAgICBQRVJDRU5UID0gMzQzLAorICAgICBMRUZU
X0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9BTkdMRSA9IDM0NSwKKyAgICAgVkVSVElDQUxfQkFS
ID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywKKyAgICAgQU1QRVJTQU5EID0gMzQ4LAorICAgICBR
VUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRpZgogLyogVG9rZW5zLiAgKi8KQEAgLTIwOSw1MiAr
MjA4LDUxIEBACiAjZGVmaW5lIEZMT0FUQ09OU1RBTlQgMzAyCiAjZGVmaW5lIElOVENPTlNUQU5U
IDMwMwogI2RlZmluZSBCT09MQ09OU1RBTlQgMzA0Ci0jZGVmaW5lIEZJRUxEX1NFTEVDVElPTiAz
MDUKLSNkZWZpbmUgTEVGVF9PUCAzMDYKLSNkZWZpbmUgUklHSFRfT1AgMzA3Ci0jZGVmaW5lIElO
Q19PUCAzMDgKLSNkZWZpbmUgREVDX09QIDMwOQotI2RlZmluZSBMRV9PUCAzMTAKLSNkZWZpbmUg
R0VfT1AgMzExCi0jZGVmaW5lIEVRX09QIDMxMgotI2RlZmluZSBORV9PUCAzMTMKLSNkZWZpbmUg
QU5EX09QIDMxNAotI2RlZmluZSBPUl9PUCAzMTUKLSNkZWZpbmUgWE9SX09QIDMxNgotI2RlZmlu
ZSBNVUxfQVNTSUdOIDMxNwotI2RlZmluZSBESVZfQVNTSUdOIDMxOAotI2RlZmluZSBBRERfQVNT
SUdOIDMxOQotI2RlZmluZSBNT0RfQVNTSUdOIDMyMAotI2RlZmluZSBMRUZUX0FTU0lHTiAzMjEK
LSNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMgotI2RlZmluZSBBTkRfQVNTSUdOIDMyMwotI2RlZmlu
ZSBYT1JfQVNTSUdOIDMyNAotI2RlZmluZSBPUl9BU1NJR04gMzI1Ci0jZGVmaW5lIFNVQl9BU1NJ
R04gMzI2Ci0jZGVmaW5lIExFRlRfUEFSRU4gMzI3Ci0jZGVmaW5lIFJJR0hUX1BBUkVOIDMyOAot
I2RlZmluZSBMRUZUX0JSQUNLRVQgMzI5Ci0jZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzMwCi0jZGVm
aW5lIExFRlRfQlJBQ0UgMzMxCi0jZGVmaW5lIFJJR0hUX0JSQUNFIDMzMgotI2RlZmluZSBET1Qg
MzMzCi0jZGVmaW5lIENPTU1BIDMzNAotI2RlZmluZSBDT0xPTiAzMzUKLSNkZWZpbmUgRVFVQUwg
MzM2Ci0jZGVmaW5lIFNFTUlDT0xPTiAzMzcKLSNkZWZpbmUgQkFORyAzMzgKLSNkZWZpbmUgREFT
SCAzMzkKLSNkZWZpbmUgVElMREUgMzQwCi0jZGVmaW5lIFBMVVMgMzQxCi0jZGVmaW5lIFNUQVIg
MzQyCi0jZGVmaW5lIFNMQVNIIDM0MwotI2RlZmluZSBQRVJDRU5UIDM0NAotI2RlZmluZSBMRUZU
X0FOR0xFIDM0NQotI2RlZmluZSBSSUdIVF9BTkdMRSAzNDYKLSNkZWZpbmUgVkVSVElDQUxfQkFS
IDM0NwotI2RlZmluZSBDQVJFVCAzNDgKLSNkZWZpbmUgQU1QRVJTQU5EIDM0OQotI2RlZmluZSBR
VUVTVElPTiAzNTAKKyNkZWZpbmUgTEVGVF9PUCAzMDUKKyNkZWZpbmUgUklHSFRfT1AgMzA2Cisj
ZGVmaW5lIElOQ19PUCAzMDcKKyNkZWZpbmUgREVDX09QIDMwOAorI2RlZmluZSBMRV9PUCAzMDkK
KyNkZWZpbmUgR0VfT1AgMzEwCisjZGVmaW5lIEVRX09QIDMxMQorI2RlZmluZSBORV9PUCAzMTIK
KyNkZWZpbmUgQU5EX09QIDMxMworI2RlZmluZSBPUl9PUCAzMTQKKyNkZWZpbmUgWE9SX09QIDMx
NQorI2RlZmluZSBNVUxfQVNTSUdOIDMxNgorI2RlZmluZSBESVZfQVNTSUdOIDMxNworI2RlZmlu
ZSBBRERfQVNTSUdOIDMxOAorI2RlZmluZSBNT0RfQVNTSUdOIDMxOQorI2RlZmluZSBMRUZUX0FT
U0lHTiAzMjAKKyNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMQorI2RlZmluZSBBTkRfQVNTSUdOIDMy
MgorI2RlZmluZSBYT1JfQVNTSUdOIDMyMworI2RlZmluZSBPUl9BU1NJR04gMzI0CisjZGVmaW5l
IFNVQl9BU1NJR04gMzI1CisjZGVmaW5lIExFRlRfUEFSRU4gMzI2CisjZGVmaW5lIFJJR0hUX1BB
UkVOIDMyNworI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI4CisjZGVmaW5lIFJJR0hUX0JSQUNLRVQg
MzI5CisjZGVmaW5lIExFRlRfQlJBQ0UgMzMwCisjZGVmaW5lIFJJR0hUX0JSQUNFIDMzMQorI2Rl
ZmluZSBET1QgMzMyCisjZGVmaW5lIENPTU1BIDMzMworI2RlZmluZSBDT0xPTiAzMzQKKyNkZWZp
bmUgRVFVQUwgMzM1CisjZGVmaW5lIFNFTUlDT0xPTiAzMzYKKyNkZWZpbmUgQkFORyAzMzcKKyNk
ZWZpbmUgREFTSCAzMzgKKyNkZWZpbmUgVElMREUgMzM5CisjZGVmaW5lIFBMVVMgMzQwCisjZGVm
aW5lIFNUQVIgMzQxCisjZGVmaW5lIFNMQVNIIDM0MgorI2RlZmluZSBQRVJDRU5UIDM0MworI2Rl
ZmluZSBMRUZUX0FOR0xFIDM0NAorI2RlZmluZSBSSUdIVF9BTkdMRSAzNDUKKyNkZWZpbmUgVkVS
VElDQUxfQkFSIDM0NgorI2RlZmluZSBDQVJFVCAzNDcKKyNkZWZpbmUgQU1QRVJTQU5EIDM0OAor
I2RlZmluZSBRVUVTVElPTiAzNDkKIAogCiAKQEAgLTI4NywxMCArMjg1LDEzIEBACiAjaW5jbHVk
ZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCiAKICNkZWZpbmUgWVlFTkFCTEVfTkxTIDAKLSNkZWZp
bmUgWVlMVFlQRV9JU19UUklWSUFMIDEKIAogI2RlZmluZSBZWUxFWF9QQVJBTSBjb250ZXh0LT5z
Y2FubmVyCiAKKyNkZWZpbmUgWVlMVFlQRSBUU291cmNlTG9jCisjZGVmaW5lIFlZTFRZUEVfSVNf
REVDTEFSRUQgMQorCisKIAogLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KICNpZm5kZWYgWVlERUJV
RwpAQCAtMzE1LDcgKzMxNiw2IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogCiB7CiAgICAgc3Ry
dWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgICBUU3RyaW5nICpzdHJpbmc7CiAgICAgICAgICAgICBmbG9hdCBmOwpAQCAtMzI1LDcgKzMy
NSw2IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICBUU3ltYm9sKiBzeW1ib2w7CiAg
ICAgfSBsZXg7CiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAg
ICBUT3BlcmF0b3Igb3A7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRJbnRlcm1Ob2Rl
KiBpbnRlcm1Ob2RlOwpAQCAtMzM5LDggKzMzOCw4IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQog
ICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgICAgICAgICBURnVuY3Rpb24q
IGZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKLSAgICAgICAgICAgIFRU
eXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgIFRUeXBlTGlzdCogdHlwZUxpc3Q7CisgICAg
ICAgICAgICBURmllbGQqIGZpZWxkOworICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0
OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwogfQpAQCAtMzUyLDIxICszNTEsNDEgQEAgdHlw
ZWRlZiB1bmlvbiBZWVNUWVBFCiAjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogI2VuZGlm
CiAKKyNpZiAhIGRlZmluZWQgWVlMVFlQRSAmJiAhIGRlZmluZWQgWVlMVFlQRV9JU19ERUNMQVJF
RAordHlwZWRlZiBzdHJ1Y3QgWVlMVFlQRQoreworICBpbnQgZmlyc3RfbGluZTsKKyAgaW50IGZp
cnN0X2NvbHVtbjsKKyAgaW50IGxhc3RfbGluZTsKKyAgaW50IGxhc3RfY29sdW1uOworfSBZWUxU
WVBFOworIyBkZWZpbmUgeXlsdHlwZSBZWUxUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdp
dGhkcmF3biAqLworIyBkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisjIGRlZmluZSBZWUxU
WVBFX0lTX1RSSVZJQUwgMQorI2VuZGlmCiAKIAogLyogQ29weSB0aGUgc2Vjb25kIHBhcnQgb2Yg
dXNlciBkZWNsYXJhdGlvbnMuICAqLwogCiAKLWV4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXls
dmFsX3BhcmFtLCB2b2lkKiB5eXNjYW5uZXIpOwotZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOworZXh0ZXJuIGludCB5eWxleChZ
WVNUWVBFKiB5eWx2YWwsIFlZTFRZUEUqIHl5bGxvYywgdm9pZCogeXlzY2FubmVyKTsKK3N0YXRp
YyB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBjaGFyKiByZWFzb24pOwogCi0jZGVmaW5lIEZSQUdfVkVSVF9PTkxZKFMsIEwpIHsgIFwK
LSAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9GUkFHTUVOVF9TSEFERVIgJiYgIFwK
LSAgICAgICAgY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7ICBcCi0g
ICAgICAgIGNvbnRleHQtPmVycm9yKEwsICIgc3VwcG9ydGVkIGluIHZlcnRleC9mcmFnbWVudCBz
aGFkZXJzIG9ubHkgIiwgUyk7ICBcCi0gICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsgIFwKLSAg
ICB9ICBcCi19CisjZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJocywgTikgICAgICAg
ICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGlmIChZWUlEKE4pKSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9m
aWxlID0gWVlSSFNMT0MoUmhzLCAxKS5maXJzdF9maWxlOyAgXAorICAgICAgICAoQ3VycmVudCku
Zmlyc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMSkuZmlyc3RfbGluZTsgIFwKKyAgICAgICAgKEN1
cnJlbnQpLmxhc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgTikubGFzdF9maWxlOyAgICBcCisgICAg
ICAgIChDdXJyZW50KS5sYXN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIE4pLmxhc3RfbGluZTsgICAg
XAorICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9maWxlID0gWVlSSFNMT0Mo
UmhzLCAwKS5sYXN0X2ZpbGU7ICAgXAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfbGluZSA9IFlZ
UkhTTE9DKFJocywgMCkubGFzdF9saW5lOyAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfZmls
ZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9maWxlOyAgICBcCisgICAgICAgIChDdXJyZW50KS5s
YXN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsgICAgXAorICAgICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSB3
aGlsZSAoMCkKIAogI2RlZmluZSBWRVJURVhfT05MWShTLCBMKSB7ICBcCiAgICAgaWYgKGNvbnRl
eHQtPnNoYWRlclR5cGUgIT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXApAQCAtNTQyLDE0ICs1NjEs
MTYgQEAgdm9pZCBmcmVlICh2b2lkICopOyAvKiBJTkZSSU5HRVMgT04gVVNFUgogCiAjaWYgKCEg
ZGVmaW5lZCB5eW92ZXJmbG93IFwKICAgICAgJiYgKCEgZGVmaW5lZCBfX2NwbHVzcGx1cyBcCi0J
IHx8IChkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RSSVZJQUwpKSkK
KwkgfHwgKGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNfVFJJVklBTCBc
CisJICAgICAmJiBkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RSSVZJ
QUwpKSkKIAogLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBmb3IgYW55IHN0YWNr
IG1lbWJlci4gICovCiB1bmlvbiB5eWFsbG9jCiB7CiAgIHl5dHlwZV9pbnQxNiB5eXNzOwogICBZ
WVNUWVBFIHl5dnM7Ci0gIH07CisgICAgWVlMVFlQRSB5eWxzOworfTsKIAogLyogVGhlIHNpemUg
b2YgdGhlIG1heGltdW0gZ2FwIGJldHdlZW4gb25lIGFsaWduZWQgc3RhY2sgYW5kIHRoZSBuZXh0
LiAgKi8KICMgZGVmaW5lIFlZU1RBQ0tfR0FQX01BWElNVU0gKHNpemVvZiAodW5pb24geXlhbGxv
YykgLSAxKQpAQCAtNTU3LDggKzU3OCw4IEBAIHVuaW9uIHl5YWxsb2MKIC8qIFRoZSBzaXplIG9m
IGFuIGFycmF5IGxhcmdlIHRvIGVub3VnaCB0byBob2xkIGFsbCBzdGFja3MsIGVhY2ggd2l0aAog
ICAgTiBlbGVtZW50cy4gICovCiAjIGRlZmluZSBZWVNUQUNLX0JZVEVTKE4pIFwKLSAgICAgKChO
KSAqIChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUpKSBcCi0gICAgICAr
IFlZU1RBQ0tfR0FQX01BWElNVU0pCisgICAgICgoTikgKiAoc2l6ZW9mICh5eXR5cGVfaW50MTYp
ICsgc2l6ZW9mIChZWVNUWVBFKSArIHNpemVvZiAoWVlMVFlQRSkpIFwKKyAgICAgICsgMiAqIFlZ
U1RBQ0tfR0FQX01BWElNVU0pCiAKIC8qIENvcHkgQ09VTlQgb2JqZWN0cyBmcm9tIEZST00gdG8g
VE8uICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbwogICAgbm90IG92ZXJsYXAuICAqLwpA
QCAtNTk3LDIyICs2MTgsMjIgQEAgdW5pb24geXlhbGxvYwogI2VuZGlmCiAKIC8qIFlZRklOQUwg
LS0gU3RhdGUgbnVtYmVyIG9mIHRoZSB0ZXJtaW5hdGlvbiBzdGF0ZS4gICovCi0jZGVmaW5lIFlZ
RklOQUwgIDcxCisjZGVmaW5lIFlZRklOQUwgIDc0CiAvKiBZWUxBU1QgLS0gTGFzdCBpbmRleCBp
biBZWVRBQkxFLiAgKi8KLSNkZWZpbmUgWVlMQVNUICAgMTQxNgorI2RlZmluZSBZWUxBU1QgICAx
NDkwCiAKIC8qIFlZTlRPS0VOUyAtLSBOdW1iZXIgb2YgdGVybWluYWxzLiAgKi8KLSNkZWZpbmUg
WVlOVE9LRU5TICA5NgorI2RlZmluZSBZWU5UT0tFTlMgIDk1CiAvKiBZWU5OVFMgLS0gTnVtYmVy
IG9mIG5vbnRlcm1pbmFscy4gICovCi0jZGVmaW5lIFlZTk5UUyAgODMKKyNkZWZpbmUgWVlOTlRT
ICA4NAogLyogWVlOUlVMRVMgLS0gTnVtYmVyIG9mIHJ1bGVzLiAgKi8KLSNkZWZpbmUgWVlOUlVM
RVMgIDIwMQorI2RlZmluZSBZWU5SVUxFUyAgMjAyCiAvKiBZWU5SVUxFUyAtLSBOdW1iZXIgb2Yg
c3RhdGVzLiAgKi8KLSNkZWZpbmUgWVlOU1RBVEVTICAzMDQKKyNkZWZpbmUgWVlOU1RBVEVTICAz
MDcKIAogLyogWVlUUkFOU0xBVEUoWVlMRVgpIC0tIEJpc29uIHN5bWJvbCBudW1iZXIgY29ycmVz
cG9uZGluZyB0byBZWUxFWC4gICovCiAjZGVmaW5lIFlZVU5ERUZUT0sgIDIKLSNkZWZpbmUgWVlN
QVhVVE9LICAgMzUwCisjZGVmaW5lIFlZTUFYVVRPSyAgIDM0OQogCiAjZGVmaW5lIFlZVFJBTlNM
QVRFKFlZWCkJCQkJCQlcCiAgICgodW5zaWduZWQgaW50KSAoWVlYKSA8PSBZWU1BWFVUT0sgPyB5
eXRyYW5zbGF0ZVtZWVhdIDogWVlVTkRFRlRPSykKQEAgLTY1NCw4ICs2NzUsNyBAQCBzdGF0aWMg
Y29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJhbnNsYXRlW10gCiAgICAgICA1NSwgICAgNTYsICAgIDU3
LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwKICAgICAg
IDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAg
NzMsICAgIDc0LAogICAgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwg
ICAgODEsICAgIDgyLCAgICA4MywgICAgODQsCi0gICAgICA4NSwgICAgODYsICAgIDg3LCAgICA4
OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwKLSAgICAgIDk1Cisg
ICAgICA4NSwgICAgODYsICAgIDg3LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIs
ICAgIDkzLCAgICA5NAogfTsKIAogI2lmIFlZREVCVUcKQEAgLTY2MywxMTUgKzY4MywxMTYgQEAg
c3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXRyYW5zbGF0ZVtdIAogICAgWVlSSFMuICAqLwog
c3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlwcmhzW10gPQogewotICAgICAgIDAsICAgICAw
LCAgICAgMywgICAgIDUsICAgICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNywgICAgMTks
Ci0gICAgICAyNCwgICAgMjYsICAgIDMwLCAgICAzMywgICAgMzYsICAgIDM4LCAgICA0MCwgICAg
NDIsICAgIDQ2LCAgICA0OSwKLSAgICAgIDUyLCAgICA1NSwgICAgNTcsICAgIDYwLCAgICA2NCwg
ICAgNjcsICAgIDY5LCAgICA3MSwgICAgNzMsICAgIDc1LAotICAgICAgNzgsICAgIDgxLCAgICA4
NCwgICAgODYsICAgIDg4LCAgICA5MCwgICAgOTIsICAgIDk2LCAgIDEwMCwgICAxMDIsCi0gICAg
IDEwNiwgICAxMTAsICAgMTEyLCAgIDExNCwgICAxMTgsICAgMTIyLCAgIDEyNiwgICAxMzAsICAg
MTMyLCAgIDEzNiwKLSAgICAgMTQwLCAgIDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwgICAxNTIs
ICAgMTU0LCAgIDE1OCwgICAxNjAsICAgMTY0LAotICAgICAxNjYsICAgMTcyLCAgIDE3NCwgICAx
NzgsICAgMTgwLCAgIDE4MiwgICAxODQsICAgMTg2LCAgIDE4OCwgICAxOTAsCi0gICAgIDE5NCwg
ICAxOTYsICAgMTk5LCAgIDIwMiwgICAyMDcsICAgMjEwLCAgIDIxMiwgICAyMTQsICAgMjE3LCAg
IDIyMSwKLSAgICAgMjI1LCAgIDIyOCwgICAyMzQsICAgMjM4LCAgIDI0MSwgICAyNDUsICAgMjQ4
LCAgIDI0OSwgICAyNTEsICAgMjUzLAotICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAyNjMsICAg
MjY5LCAgIDI3NiwgICAyODIsICAgMjg0LCAgIDI4NywgICAyOTIsCi0gICAgIDI5OCwgICAzMDMs
ICAgMzA2LCAgIDMwOCwgICAzMTEsICAgMzEzLCAgIDMxNSwgICAzMTcsICAgMzIwLCAgIDMyMiwK
LSAgICAgMzI0LCAgIDMyNywgICAzMjksICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzQwLCAgIDM0
MiwgICAzNDQsICAgMzQ2LAorICAgICAgIDAsICAgICAwLCAgICAgMywgICAgIDUsICAgICA3LCAg
ICAgOSwgICAgMTEsICAgIDEzLCAgICAxNSwgICAgMTcsCisgICAgICAyMSwgICAgMjMsICAgIDI4
LCAgICAzMCwgICAgMzQsICAgIDM3LCAgICA0MCwgICAgNDIsICAgIDQ0LCAgICA0NiwKKyAgICAg
IDUwLCAgICA1MywgICAgNTYsICAgIDU5LCAgICA2MSwgICAgNjQsICAgIDY4LCAgICA3MSwgICAg
NzMsICAgIDc1LAorICAgICAgNzcsICAgIDgwLCAgICA4MywgICAgODYsICAgIDg4LCAgICA5MCwg
ICAgOTIsICAgIDk0LCAgICA5OCwgICAxMDIsCisgICAgIDEwNCwgICAxMDgsICAgMTEyLCAgIDEx
NCwgICAxMTYsICAgMTIwLCAgIDEyNCwgICAxMjgsICAgMTMyLCAgIDEzNCwKKyAgICAgMTM4LCAg
IDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwgICAxNTAsICAgMTU0LCAgIDE1NiwgICAxNjAsICAg
MTYyLAorICAgICAxNjYsICAgMTY4LCAgIDE3NCwgICAxNzYsICAgMTgwLCAgIDE4MiwgICAxODQs
ICAgMTg2LCAgIDE4OCwgICAxOTAsCisgICAgIDE5MiwgICAxOTYsICAgMTk4LCAgIDIwMSwgICAy
MDQsICAgMjA5LCAgIDIxMiwgICAyMTQsICAgMjE2LCAgIDIxOSwKKyAgICAgMjIzLCAgIDIyNywg
ICAyMzAsICAgMjM2LCAgIDI0MCwgICAyNDMsICAgMjQ3LCAgIDI1MCwgICAyNTEsICAgMjUzLAor
ICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAyNjEsICAgMjY1LCAgIDI3MSwgICAyNzgsICAgMjg0
LCAgIDI4NiwgICAyODksCisgICAgIDI5NCwgICAzMDAsICAgMzA1LCAgIDMwOCwgICAzMTAsICAg
MzEzLCAgIDMxNSwgICAzMTcsICAgMzE5LCAgIDMyMiwKKyAgICAgMzI0LCAgIDMyNiwgICAzMjks
ICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzM3LCAgIDM0MiwgICAzNDQsICAgMzQ2LAogICAgICAz
NDgsICAgMzUwLCAgIDM1MiwgICAzNTQsICAgMzU2LCAgIDM1OCwgICAzNjAsICAgMzYyLCAgIDM2
NCwgICAzNjYsCi0gICAgIDM2OCwgICAzNzAsICAgMzcyLCAgIDM3NCwgICAzNzYsICAgMzc4LCAg
IDM4MCwgICAzODIsICAgMzg0LCAgIDM4NSwKLSAgICAgMzkyLCAgIDM5MywgICAzOTksICAgNDAx
LCAgIDQwNCwgICA0MDgsICAgNDEwLCAgIDQxNCwgICA0MTYsICAgNDIxLAotICAgICA0MjMsICAg
NDI1LCAgIDQyNywgICA0MjksICAgNDMxLCAgIDQzMywgICA0MzUsICAgNDM3LCAgIDQzOSwgICA0
NDIsCi0gICAgIDQ0MywgICA0NDQsICAgNDUwLCAgIDQ1MiwgICA0NTQsICAgNDU1LCAgIDQ1OCwg
ICA0NTksICAgNDYyLCAgIDQ2NSwKLSAgICAgNDY5LCAgIDQ3MSwgICA0NzQsICAgNDc2LCAgIDQ3
OSwgICA0ODUsICAgNDg5LCAgIDQ5MSwgICA0OTMsICAgNDk4LAotICAgICA0OTksICAgNTA2LCAg
IDUwNywgICA1MTYsICAgNTE3LCAgIDUyNSwgICA1MjcsICAgNTI5LCAgIDUzMSwgICA1MzIsCi0g
ICAgIDUzNSwgICA1MzksICAgNTQyLCAgIDU0NSwgICA1NDgsICAgNTUyLCAgIDU1NSwgICA1NTcs
ICAgNTYwLCAgIDU2MiwKLSAgICAgNTY0LCAgIDU2NQorICAgICAzNjgsICAgMzcwLCAgIDM3Miwg
ICAzNzQsICAgMzc2LCAgIDM3OCwgICAzODAsICAgMzgyLCAgIDM4NCwgICAzODYsCisgICAgIDM4
NywgICAzOTQsICAgMzk1LCAgIDQwMSwgICA0MDMsICAgNDA2LCAgIDQxMCwgICA0MTIsICAgNDE2
LCAgIDQxOCwKKyAgICAgNDIzLCAgIDQyNSwgICA0MjcsICAgNDI5LCAgIDQzMSwgICA0MzMsICAg
NDM1LCAgIDQzNywgICA0MzksICAgNDQxLAorICAgICA0NDQsICAgNDQ1LCAgIDQ0NiwgICA0NTIs
ICAgNDU0LCAgIDQ1NiwgICA0NTcsICAgNDYwLCAgIDQ2MSwgICA0NjQsCisgICAgIDQ2NywgICA0
NzEsICAgNDczLCAgIDQ3NiwgICA0NzgsICAgNDgxLCAgIDQ4NywgICA0OTEsICAgNDkzLCAgIDQ5
NSwKKyAgICAgNTAwLCAgIDUwMSwgICA1MDgsICAgNTA5LCAgIDUxOCwgICA1MTksICAgNTI3LCAg
IDUyOSwgICA1MzEsICAgNTMzLAorICAgICA1MzQsICAgNTM3LCAgIDU0MSwgICA1NDQsICAgNTQ3
LCAgIDU1MCwgICA1NTQsICAgNTU3LCAgIDU1OSwgICA1NjIsCisgICAgIDU2NCwgICA1NjYsICAg
NTY3CiB9OwogCiAvKiBZWVJIUyAtLSBBIGAtMSctc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHJ1bGVz
JyBSSFMuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXJoc1tdID0KIHsKLSAgICAg
MTc1LCAgICAgMCwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgOTcsICAgIC0xLCAgICA0OCwgICAg
LTEsICAgIDQ3LAotICAgICAgLTEsICAgIDQ5LCAgICAtMSwgICAgNzIsICAgMTI0LCAgICA3Mywg
ICAgLTEsICAgIDk4LCAgICAtMSwgICAgOTksCi0gICAgICA3NCwgICAxMDAsICAgIDc1LCAgICAt
MSwgICAxMDEsICAgIC0xLCAgICA5OSwgICAgNzgsICAgIDUwLCAgICAtMSwKLSAgICAgIDk5LCAg
ICA1MywgICAgLTEsICAgIDk5LCAgICA1NCwgICAgLTEsICAgMTI0LCAgICAtMSwgICAxMDIsICAg
IC0xLAotICAgICAxMDMsICAgIC0xLCAgICA5OSwgICAgNzgsICAgMTAzLCAgICAtMSwgICAxMDUs
ICAgIDczLCAgICAtMSwgICAxMDQsCi0gICAgICA3MywgICAgLTEsICAgMTA2LCAgICAzOSwgICAg
LTEsICAgMTA2LCAgICAtMSwgICAxMDYsICAgMTIyLCAgICAtMSwKLSAgICAgMTA1LCAgICA3OSwg
ICAxMjIsICAgIC0xLCAgIDEwNywgICAgNzIsICAgIC0xLCAgIDE0MiwgICAgLTEsICAgIDQ1LAot
ICAgICAgLTEsICAgIDUwLCAgICAtMSwgICAgOTksICAgIC0xLCAgICA1MywgICAxMDgsICAgIC0x
LCAgICA1NCwgICAxMDgsCi0gICAgICAtMSwgICAxMDksICAgMTA4LCAgICAtMSwgICAgODYsICAg
IC0xLCAgICA4NCwgICAgLTEsICAgIDgzLCAgICAtMSwKLSAgICAgMTA4LCAgICAtMSwgICAxMTAs
ICAgIDg3LCAgIDEwOCwgICAgLTEsICAgMTEwLCAgICA4OCwgICAxMDgsICAgIC0xLAotICAgICAx
MTAsICAgIC0xLCAgIDExMSwgICAgODYsICAgMTEwLCAgICAtMSwgICAxMTEsICAgIDg0LCAgIDEx
MCwgICAgLTEsCi0gICAgIDExMSwgICAgLTEsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDkwLCAg
IDExMiwgICAgLTEsICAgMTEzLCAgICA5MSwKLSAgICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDU1
LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA1NiwgICAxMTIsICAgIC0xLAotICAgICAxMTMsICAg
IC0xLCAgIDExNCwgICAgNTcsICAgMTEzLCAgICAtMSwgICAxMTQsICAgIDU4LCAgIDExMywgICAg
LTEsCi0gICAgIDExNCwgICAgLTEsICAgMTE1LCAgICAtMSwgICAxMTYsICAgIC0xLCAgIDExNywg
ICAgLTEsICAgMTE4LCAgICA1OSwKLSAgICAgMTE3LCAgICAtMSwgICAxMTgsICAgIC0xLCAgIDEx
OSwgICAgNjEsICAgMTE4LCAgICAtMSwgICAxMTksICAgIC0xLAotICAgICAxMjAsICAgIDYwLCAg
IDExOSwgICAgLTEsICAgMTIwLCAgICAtMSwgICAxMjAsICAgIDk1LCAgIDEyNCwgICAgODAsCi0g
ICAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMDgsICAgMTIzLCAgIDEyMiwgICAgLTEs
ICAgIDgxLCAgICAtMSwKLSAgICAgIDYyLCAgICAtMSwgICAgNjMsICAgIC0xLCAgICA2NCwgICAg
LTEsICAgIDcxLCAgICAtMSwgICAxMjIsICAgIC0xLAotICAgICAxMjQsICAgIDc5LCAgIDEyMiwg
ICAgLTEsICAgMTIxLCAgICAtMSwgICAxMjcsICAgIDgyLCAgICAtMSwgICAxMzUsCi0gICAgICA4
MiwgICAgLTEsICAgICA3LCAgIDE0MCwgICAxNDEsICAgIDgyLCAgICAtMSwgICAxMjgsICAgIDcz
LCAgICAtMSwKLSAgICAgMTMwLCAgICAtMSwgICAxMjksICAgIC0xLCAgIDEzMCwgICAxMzIsICAg
IC0xLCAgIDEyOSwgICAgNzksICAgMTMyLAotICAgICAgLTEsICAgMTM3LCAgICA0NSwgICAgNzIs
ICAgIC0xLCAgIDEzOSwgICAgNDUsICAgIC0xLCAgIDEzOSwgICAgNDUsCi0gICAgICA3NCwgICAx
MjUsICAgIDc1LCAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzMSwgICAgLTEsICAgMTMzLCAgIDEz
MSwKLSAgICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTM0LCAgICAtMSwgICAxMzMsICAgMTM0LCAg
ICAtMSwgICAgLTEsICAgIDMzLAotICAgICAgLTEsICAgIDM0LCAgICAtMSwgICAgMzUsICAgIC0x
LCAgIDEzOSwgICAgLTEsICAgMTM2LCAgICAtMSwgICAxMzUsCi0gICAgICA3OSwgICAgNDUsICAg
IC0xLCAgIDEzNSwgICAgNzksICAgIDQ1LCAgICA3NCwgICAgNzUsICAgIC0xLCAgIDEzNSwKLSAg
ICAgIDc5LCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM1LCAgICA3OSwg
ICAgNDUsICAgIDgxLAotICAgICAxNTAsICAgIC0xLCAgIDEzNywgICAgLTEsICAgMTM3LCAgICA0
NSwgICAgLTEsICAgMTM3LCAgICA0NSwgICAgNzQsCi0gICAgICA3NSwgICAgLTEsICAgMTM3LCAg
ICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM3LCAgICA0NSwKLSAgICAgIDgx
LCAgIDE1MCwgICAgLTEsICAgICAzLCAgICA0NSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAxMzgs
ICAgMTM5LAotICAgICAgLTEsICAgICA5LCAgICAtMSwgICAgIDgsICAgIC0xLCAgICAzNywgICAg
LTEsICAgICAzLCAgICAzNywgICAgLTEsCi0gICAgICAzNiwgICAgLTEsICAgMTQxLCAgICAtMSwg
ICAxNDAsICAgMTQxLCAgICAtMSwgICAgIDQsICAgIC0xLCAgICAgNSwKLSAgICAgIC0xLCAgICAg
NiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDc0LCAgIDEyNSwgICAgNzUsICAgIC0x
LAotICAgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAgICAtMSwgICAgMTAsICAg
IC0xLCAgICAyNywgICAgLTEsCi0gICAgICAyOCwgICAgLTEsICAgIDI5LCAgICAtMSwgICAgMjEs
ICAgIC0xLCAgICAyMiwgICAgLTEsICAgIDIzLCAgICAtMSwKLSAgICAgIDI0LCAgICAtMSwgICAg
MjUsICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwgICAgMzEsICAgIC0xLAotICAg
ICAgMzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAgNDMsICAgIC0xLCAg
ICA0NCwgICAgLTEsCi0gICAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgLTEsICAgIDM4
LCAgICA0NSwgICAgNzYsICAgMTQ0LCAgIDE0NiwKLSAgICAgIDc3LCAgICAtMSwgICAgLTEsICAg
IDM4LCAgICA3NiwgICAxNDUsICAgMTQ2LCAgICA3NywgICAgLTEsICAgMTQ3LAotICAgICAgLTEs
ICAgMTQ2LCAgIDE0NywgICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODIsICAgIC0xLCAgIDE0OSwg
ICAgLTEsCi0gICAgIDE0OCwgICAgNzksICAgMTQ5LCAgICAtMSwgICAgNDUsICAgIC0xLCAgICA0
NSwgICAgNzQsICAgMTI1LCAgICA3NSwKLSAgICAgIC0xLCAgIDEyMiwgICAgLTEsICAgMTI2LCAg
ICAtMSwgICAxNTQsICAgIC0xLCAgIDE1MywgICAgLTEsICAgMTUxLAotICAgICAgLTEsICAgMTYz
LCAgICAtMSwgICAxNjQsICAgIC0xLCAgIDE2NywgICAgLTEsICAgMTc0LCAgICAtMSwgICAgNzYs
Ci0gICAgICA3NywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgMTU1LCAgIDE2MiwgICAx
NTYsICAgIDc3LCAgICAtMSwKLSAgICAgMTYxLCAgICAtMSwgICAxNTMsICAgIC0xLCAgICAtMSwg
ICAxNTksICAgMTYxLCAgICAtMSwgICAgLTEsICAgMTYwLAotICAgICAxNTMsICAgIC0xLCAgICA3
NiwgICAgNzcsICAgIC0xLCAgICA3NiwgICAxNjIsICAgIDc3LCAgICAtMSwgICAxNTIsCi0gICAg
ICAtMSwgICAxNjIsICAgMTUyLCAgICAtMSwgICAgODIsICAgIC0xLCAgIDEyNCwgICAgODIsICAg
IC0xLCAgICAxOCwKLSAgICAgIDcyLCAgIDEyNCwgICAgNzMsICAgMTY1LCAgICAtMSwgICAxNTgs
ICAgIDE2LCAgIDE1OCwgICAgLTEsICAgMTU4LAotICAgICAgLTEsICAgMTI0LCAgICAtMSwgICAx
MzcsICAgIDQ1LCAgICA4MSwgICAxNTAsICAgIC0xLCAgICAtMSwgICAgNDAsCi0gICAgICA3Miwg
ICAxNjgsICAgMTY2LCAgICA3MywgICAxNTcsICAgIC0xLCAgICAtMSwgICAgMTUsICAgMTY5LCAg
IDE1OCwKLSAgICAgIDQwLCAgICA3MiwgICAxMjQsICAgIDczLCAgICA4MiwgICAgLTEsICAgIC0x
LCAgICAxNywgICAgNzIsICAgMTcwLAotICAgICAxNzEsICAgMTczLCAgICA3MywgICAxNTcsICAg
IC0xLCAgIDE2MywgICAgLTEsICAgMTUxLCAgICAtMSwgICAxNjYsCi0gICAgICAtMSwgICAgLTEs
ICAgMTcyLCAgICA4MiwgICAgLTEsICAgMTcyLCAgICA4MiwgICAxMjQsICAgIC0xLCAgICAxNCwK
LSAgICAgIDgyLCAgICAtMSwgICAgMTMsICAgIDgyLCAgICAtMSwgICAgMjAsICAgIDgyLCAgICAt
MSwgICAgMjAsICAgMTI0LAotICAgICAgODIsICAgIC0xLCAgICAxOSwgICAgODIsICAgIC0xLCAg
IDE3NiwgICAgLTEsICAgMTc1LCAgIDE3NiwgICAgLTEsCi0gICAgIDE3NywgICAgLTEsICAgMTI2
LCAgICAtMSwgICAgLTEsICAgMTI3LCAgIDE3OCwgICAxNjEsICAgIC0xCisgICAgIDE3NSwgICAg
IDAsICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgNDUsICAgIC0xLCAgICA5
NywKKyAgICAgIC0xLCAgICA0OCwgICAgLTEsICAgIDQ3LCAgICAtMSwgICAgNDksICAgIC0xLCAg
ICA3MSwgICAxMjQsICAgIDcyLAorICAgICAgLTEsICAgIDk4LCAgICAtMSwgICAgOTksICAgIDcz
LCAgIDEwMCwgICAgNzQsICAgIC0xLCAgIDEwMSwgICAgLTEsCisgICAgICA5OSwgICAgNzcsICAg
IDk2LCAgICAtMSwgICAgOTksICAgIDUyLCAgICAtMSwgICAgOTksICAgIDUzLCAgICAtMSwKKyAg
ICAgMTI0LCAgICAtMSwgICAxMDIsICAgIC0xLCAgIDEwMywgICAgLTEsICAgIDk5LCAgICA3Nywg
ICAxMDMsICAgIC0xLAorICAgICAxMDUsICAgIDcyLCAgICAtMSwgICAxMDQsICAgIDcyLCAgICAt
MSwgICAxMDYsICAgIDM5LCAgICAtMSwgICAxMDYsCisgICAgICAtMSwgICAxMDYsICAgMTIyLCAg
ICAtMSwgICAxMDUsICAgIDc4LCAgIDEyMiwgICAgLTEsICAgMTA3LCAgICA3MSwKKyAgICAgIC0x
LCAgIDE0MiwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgOTksICAgIC0xLCAgICA1MiwgICAxMDgs
ICAgIC0xLAorICAgICAgNTMsICAgMTA4LCAgICAtMSwgICAxMDksICAgMTA4LCAgICAtMSwgICAg
ODUsICAgIC0xLCAgICA4MywgICAgLTEsCisgICAgICA4MiwgICAgLTEsICAgMTA4LCAgICAtMSwg
ICAxMTAsICAgIDg2LCAgIDEwOCwgICAgLTEsICAgMTEwLCAgICA4NywKKyAgICAgMTA4LCAgICAt
MSwgICAxMTAsICAgIC0xLCAgIDExMSwgICAgODUsICAgMTEwLCAgICAtMSwgICAxMTEsICAgIDgz
LAorICAgICAxMTAsICAgIC0xLCAgIDExMSwgICAgLTEsICAgMTEyLCAgICAtMSwgICAxMTMsICAg
IDg5LCAgIDExMiwgICAgLTEsCisgICAgIDExMywgICAgOTAsICAgMTEyLCAgICAtMSwgICAxMTMs
ICAgIDU0LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA1NSwKKyAgICAgMTEyLCAgICAtMSwgICAx
MTMsICAgIC0xLCAgIDExNCwgICAgNTYsICAgMTEzLCAgICAtMSwgICAxMTQsICAgIDU3LAorICAg
ICAxMTMsICAgIC0xLCAgIDExNCwgICAgLTEsICAgMTE1LCAgICAtMSwgICAxMTYsICAgIC0xLCAg
IDExNywgICAgLTEsCisgICAgIDExOCwgICAgNTgsICAgMTE3LCAgICAtMSwgICAxMTgsICAgIC0x
LCAgIDExOSwgICAgNjAsICAgMTE4LCAgICAtMSwKKyAgICAgMTE5LCAgICAtMSwgICAxMjAsICAg
IDU5LCAgIDExOSwgICAgLTEsICAgMTIwLCAgICAtMSwgICAxMjAsICAgIDk0LAorICAgICAxMjQs
ICAgIDc5LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMDgsICAgMTIzLCAgIDEyMiwg
ICAgLTEsCisgICAgICA4MCwgICAgLTEsICAgIDYxLCAgICAtMSwgICAgNjIsICAgIC0xLCAgICA2
MywgICAgLTEsICAgIDcwLCAgICAtMSwKKyAgICAgMTIyLCAgICAtMSwgICAxMjQsICAgIDc4LCAg
IDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMjcsICAgIDgxLAorICAgICAgLTEsICAgMTM1
LCAgICA4MSwgICAgLTEsICAgICA3LCAgIDE0MCwgICAxNDEsICAgIDgxLCAgICAtMSwgICAxMjgs
CisgICAgICA3MiwgICAgLTEsICAgMTMwLCAgICAtMSwgICAxMjksICAgIC0xLCAgIDEzMCwgICAx
MzIsICAgIC0xLCAgIDEyOSwKKyAgICAgIDc4LCAgIDEzMiwgICAgLTEsICAgMTM3LCAgICA0NSwg
ICAgNzEsICAgIC0xLCAgIDEzOSwgICAgOTYsICAgIC0xLAorICAgICAxMzksICAgIDk2LCAgICA3
MywgICAxMjUsICAgIDc0LCAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzMSwgICAgLTEsCisgICAg
IDEzMywgICAxMzEsICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTM0LCAgICAtMSwgICAxMzMsICAg
MTM0LCAgICAtMSwKKyAgICAgIC0xLCAgICAzMywgICAgLTEsICAgIDM0LCAgICAtMSwgICAgMzUs
ICAgIC0xLCAgIDEzOSwgICAgLTEsICAgMTM2LAorICAgICAgLTEsICAgMTM1LCAgICA3OCwgICAg
OTYsICAgIC0xLCAgIDEzNSwgICAgNzgsICAgIDk2LCAgICA3MywgICAgNzQsCisgICAgICAtMSwg
ICAxMzUsICAgIDc4LCAgICA5NiwgICAgNzMsICAgMTI1LCAgICA3NCwgICAgLTEsICAgMTM1LCAg
ICA3OCwKKyAgICAgIDk2LCAgICA4MCwgICAxNTAsICAgIC0xLCAgIDEzNywgICAgLTEsICAgMTM3
LCAgICA5NiwgICAgLTEsICAgMTM3LAorICAgICAgOTYsICAgIDczLCAgICA3NCwgICAgLTEsICAg
MTM3LCAgICA5NiwgICAgNzMsICAgMTI1LCAgICA3NCwgICAgLTEsCisgICAgIDEzNywgICAgOTYs
ICAgIDgwLCAgIDE1MCwgICAgLTEsICAgICAzLCAgICA0NSwgICAgLTEsICAgMTM5LCAgICAtMSwK
KyAgICAgMTM4LCAgIDEzOSwgICAgLTEsICAgICA5LCAgICAtMSwgICAgIDgsICAgIC0xLCAgICAz
NywgICAgLTEsICAgICAzLAorICAgICAgMzcsICAgIC0xLCAgICAzNiwgICAgLTEsICAgMTQxLCAg
ICAtMSwgICAxNDAsICAgMTQxLCAgICAtMSwgICAgIDQsCisgICAgICAtMSwgICAgIDUsICAgIC0x
LCAgICAgNiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDczLCAgIDEyNSwKKyAgICAg
IDc0LCAgICAtMSwgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAgICAtMSwgICAg
MTAsICAgIC0xLAorICAgICAgMjcsICAgIC0xLCAgICAyOCwgICAgLTEsICAgIDI5LCAgICAtMSwg
ICAgMjEsICAgIC0xLCAgICAyMiwgICAgLTEsCisgICAgICAyMywgICAgLTEsICAgIDI0LCAgICAt
MSwgICAgMjUsICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwKKyAgICAgIDMxLCAg
ICAtMSwgICAgMzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAgNDMsICAg
IC0xLAorICAgICAgNDQsICAgIC0xLCAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgLTEs
ICAgIDM4LCAgICA5NiwgICAgNzUsCisgICAgIDE0NCwgICAxNDYsICAgIDc2LCAgICAtMSwgICAg
LTEsICAgIDM4LCAgICA3NSwgICAxNDUsICAgMTQ2LCAgICA3NiwKKyAgICAgIC0xLCAgIDE0Nywg
ICAgLTEsICAgMTQ2LCAgIDE0NywgICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODEsICAgIC0xLAor
ICAgICAxNDksICAgIC0xLCAgIDE0OCwgICAgNzgsICAgMTQ5LCAgICAtMSwgICAgOTYsICAgIC0x
LCAgICA5NiwgICAgNzMsCisgICAgIDEyNSwgICAgNzQsICAgIC0xLCAgIDEyMiwgICAgLTEsICAg
MTI2LCAgICAtMSwgICAxNTQsICAgIC0xLCAgIDE1MywKKyAgICAgIC0xLCAgIDE1MSwgICAgLTEs
ICAgMTYzLCAgICAtMSwgICAxNjQsICAgIC0xLCAgIDE2NywgICAgLTEsICAgMTc0LAorICAgICAg
LTEsICAgIDc1LCAgICA3NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgMTU1LCAgIDE2
MiwgICAxNTYsCisgICAgICA3NiwgICAgLTEsICAgMTYxLCAgICAtMSwgICAxNTMsICAgIC0xLCAg
ICAtMSwgICAxNTksICAgMTYxLCAgICAtMSwKKyAgICAgIC0xLCAgIDE2MCwgICAxNTMsICAgIC0x
LCAgICA3NSwgICAgNzYsICAgIC0xLCAgICA3NSwgICAxNjIsICAgIDc2LAorICAgICAgLTEsICAg
MTUyLCAgICAtMSwgICAxNjIsICAgMTUyLCAgICAtMSwgICAgODEsICAgIC0xLCAgIDEyNCwgICAg
ODEsCisgICAgICAtMSwgICAgMTgsICAgIDcxLCAgIDEyNCwgICAgNzIsICAgMTY1LCAgICAtMSwg
ICAxNTgsICAgIDE2LCAgIDE1OCwKKyAgICAgIC0xLCAgIDE1OCwgICAgLTEsICAgMTI0LCAgICAt
MSwgICAxMzcsICAgIDk2LCAgICA4MCwgICAxNTAsICAgIC0xLAorICAgICAgLTEsICAgIDQwLCAg
ICA3MSwgICAxNjgsICAgMTY2LCAgICA3MiwgICAxNTcsICAgIC0xLCAgICAtMSwgICAgMTUsCisg
ICAgIDE2OSwgICAxNTgsICAgIDQwLCAgICA3MSwgICAxMjQsICAgIDcyLCAgICA4MSwgICAgLTEs
ICAgIC0xLCAgICAxNywKKyAgICAgIDcxLCAgIDE3MCwgICAxNzEsICAgMTczLCAgICA3MiwgICAx
NTcsICAgIC0xLCAgIDE2MywgICAgLTEsICAgMTUxLAorICAgICAgLTEsICAgMTY2LCAgICAtMSwg
ICAgLTEsICAgMTcyLCAgICA4MSwgICAgLTEsICAgMTcyLCAgICA4MSwgICAxMjQsCisgICAgICAt
MSwgICAgMTQsICAgIDgxLCAgICAtMSwgICAgMTMsICAgIDgxLCAgICAtMSwgICAgMjAsICAgIDgx
LCAgICAtMSwKKyAgICAgIDIwLCAgIDEyNCwgICAgODEsICAgIC0xLCAgICAxOSwgICAgODEsICAg
IC0xLCAgIDE3NiwgICAgLTEsICAgMTc1LAorICAgICAxNzYsICAgIC0xLCAgIDE3NywgICAgLTEs
ICAgMTI2LCAgICAtMSwgICAgLTEsICAgMTI3LCAgIDE3OCwgICAxNjEsCisgICAgICAtMQogfTsK
IAogLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVyIFlZTiB3
YXMgZGVmaW5lZC4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXJsaW5lW10gPQog
ewotICAgICAgIDAsICAgMTY4LCAgIDE2OCwgICAyMDMsICAgMjA2LCAgIDIxOSwgICAyMjQsICAg
MjI5LCAgIDIzNSwgICAyMzgsCi0gICAgIDMxNywgICAzMjAsICAgNDIxLCAgIDQzMSwgICA0NDQs
ICAgNDUyLCAgIDU1MiwgICA1NTUsICAgNTYzLCAgIDU2NywKLSAgICAgNTc0LCAgIDU3OCwgICA1
ODUsICAgNTkxLCAgIDYwMCwgICA2MDgsICAgNjYzLCAgIDY3MCwgICA2ODAsICAgNjgzLAotICAg
ICA2OTMsICAgNzAzLCAgIDcyNCwgICA3MjUsICAgNzI2LCAgIDczMSwgICA3MzIsICAgNzQxLCAg
IDc1MywgICA3NTQsCi0gICAgIDc2MiwgICA3NzMsICAgNzc3LCAgIDc3OCwgICA3ODgsICAgNzk4
LCAgIDgwOCwgICA4MjEsICAgODIyLCAgIDgzMiwKLSAgICAgODQ1LCAgIDg0OSwgICA4NTMsICAg
ODU3LCAgIDg1OCwgICA4NzEsICAgODcyLCAgIDg4NSwgICA4ODYsICAgODk5LAotICAgICA5MDAs
ICAgOTE3LCAgIDkxOCwgICA5MzEsICAgOTMyLCAgIDkzMywgICA5MzQsICAgOTM1LCAgIDkzOSwg
ICA5NDIsCi0gICAgIDk1MywgICA5NjEsICAgOTg4LCAgIDk5MywgIDEwMDcsICAxMDQ1LCAgMTA0
OCwgIDEwNTUsICAxMDYzLCAgMTA4NCwKLSAgICAxMTA1LCAgMTExNiwgIDExNDUsICAxMTUwLCAg
MTE2MCwgIDExNjUsICAxMTc1LCAgMTE3OCwgIDExODEsICAxMTg0LAotICAgIDExOTAsICAxMTk3
LCAgMTIwMCwgIDEyMjIsICAxMjQwLCAgMTI2NCwgIDEyODcsICAxMjkxLCAgMTMwOSwgIDEzMTcs
Ci0gICAgMTM0OSwgIDEzNjksICAxNDU4LCAgMTQ2NywgIDE0OTAsICAxNDkzLCAgMTQ5OSwgIDE1
MDcsICAxNTE1LCAgMTUyMywKLSAgICAxNTMzLCAgMTU0MCwgIDE1NDMsICAxNTQ2LCAgMTU1Miwg
IDE1NTUsICAxNTcwLCAgMTU3NCwgIDE1NzgsICAxNTgyLAotICAgIDE1OTEsICAxNTk2LCAgMTYw
MSwgIDE2MDYsICAxNjExLCAgMTYxNiwgIDE2MjEsICAxNjI2LCAgMTYzMSwgIDE2MzYsCi0gICAg
MTY0MiwgIDE2NDgsICAxNjU0LCAgMTY1OSwgIDE2NjQsICAxNjczLCAgMTY4MiwgIDE2ODcsICAx
NzAwLCAgMTcwMCwKLSAgICAxNzE0LCAgMTcxNCwgIDE3MjMsICAxNzI2LCAgMTc0MSwgIDE3Nzcs
ICAxNzgxLCAgMTc4NywgIDE3OTUsICAxODExLAotICAgIDE4MTUsICAxODE5LCAgMTgyMCwgIDE4
MjYsICAxODI3LCAgMTgyOCwgIDE4MjksICAxODMwLCAgMTgzNCwgIDE4MzUsCi0gICAgMTgzNSwg
IDE4MzUsICAxODQ1LCAgMTg0NiwgIDE4NTAsICAxODUwLCAgMTg1MSwgIDE4NTEsICAxODU2LCAg
MTg1OSwKLSAgICAxODY5LCAgMTg3MiwgIDE4NzgsICAxODc5LCAgMTg4MywgIDE4OTEsICAxODk1
LCAgMTkwNSwgIDE5MTAsICAxOTI3LAotICAgIDE5MjcsICAxOTMyLCAgMTkzMiwgIDE5MzksICAx
OTM5LCAgMTk0NywgIDE5NTAsICAxOTU2LCAgMTk1OSwgIDE5NjUsCi0gICAgMTk2OSwgIDE5NzYs
ICAxOTgzLCAgMTk5MCwgIDE5OTcsICAyMDA4LCAgMjAxNywgIDIwMjEsICAyMDI4LCAgMjAzMSwK
LSAgICAyMDM3LCAgMjAzNworICAgICAgIDAsICAgMTc4LCAgIDE3OCwgICAxNzksICAgMTgyLCAg
IDIyNSwgICAyMjgsICAgMjQxLCAgIDI0NiwgICAyNTEsCisgICAgIDI1NywgICAyNjAsICAgMzM1
LCAgIDMzOCwgICA0MzMsICAgNDQzLCAgIDQ1NiwgICA0NjQsICAgNTY0LCAgIDU2NywKKyAgICAg
NTc1LCAgIDU3OCwgICA1ODQsICAgNTg4LCAgIDU5NSwgICA2MDEsICAgNjEwLCAgIDYxOCwgICA2
NzMsICAgNjgzLAorICAgICA2ODYsICAgNjk2LCAgIDcwNiwgICA3MjcsICAgNzI4LCAgIDcyOSwg
ICA3MzQsICAgNzM1LCAgIDc0MywgICA3NTQsCisgICAgIDc1NSwgICA3NjMsICAgNzc0LCAgIDc3
OCwgICA3NzksICAgNzg5LCAgIDc5OSwgICA4MDksICAgODIyLCAgIDgyMywKKyAgICAgODMzLCAg
IDg0NiwgICA4NTAsICAgODU0LCAgIDg1OCwgICA4NTksICAgODcyLCAgIDg3MywgICA4ODYsICAg
ODg3LAorICAgICA5MDAsICAgOTAxLCAgIDkxOCwgICA5MTksICAgOTMyLCAgIDkzMywgICA5MzQs
ICAgOTM1LCAgIDkzNiwgICA5NDAsCisgICAgIDk0MywgICA5NTQsICAgOTYyLCAgIDk4OSwgICA5
OTQsICAxMDA4LCAgMTA0NSwgIDEwNDgsICAxMDU1LCAgMTA2MywKKyAgICAxMDg0LCAgMTEwNSwg
IDExMTUsICAxMTQzLCAgMTE0OCwgIDExNTgsICAxMTYzLCAgMTE3MywgIDExNzYsICAxMTc5LAor
ICAgIDExODIsICAxMTg4LCAgMTE5NSwgIDExOTgsICAxMjIwLCAgMTIzOCwgIDEyNjIsICAxMjg1
LCAgMTI4OSwgIDEzMDcsCisgICAgMTMxNSwgIDEzNDcsICAxMzY3LCAgMTM4OCwgIDEzOTcsICAx
NDIwLCAgMTQyMywgIDE0MjksICAxNDM3LCAgMTQ0NSwKKyAgICAxNDUzLCAgMTQ2MywgIDE0NzAs
ICAxNDczLCAgMTQ3NiwgIDE0ODIsICAxNDg1LCAgMTUwMCwgIDE1MDQsICAxNTA4LAorICAgIDE1
MTIsICAxNTE2LCAgMTUyMSwgIDE1MjYsICAxNTMxLCAgMTUzNiwgIDE1NDEsICAxNTQ2LCAgMTU1
MSwgIDE1NTYsCisgICAgMTU2MSwgIDE1NjYsICAxNTcxLCAgMTU3NiwgIDE1ODAsICAxNTg0LCAg
MTU5MiwgIDE2MDAsICAxNjA0LCAgMTYxNywKKyAgICAxNjE3LCAgMTYzMSwgIDE2MzEsICAxNjQw
LCAgMTY0MywgIDE2NTksICAxNjkyLCAgMTY5NiwgIDE3MDIsICAxNzA5LAorICAgIDE3MjQsICAx
NzI4LCAgMTczMiwgIDE3MzMsICAxNzM5LCAgMTc0MCwgIDE3NDEsICAxNzQyLCAgMTc0MywgIDE3
NDcsCisgICAgMTc0OCwgIDE3NDgsICAxNzQ4LCAgMTc1OCwgIDE3NTksICAxNzYzLCAgMTc2Mywg
IDE3NjQsICAxNzY0LCAgMTc2OSwKKyAgICAxNzcyLCAgMTc4MiwgIDE3ODUsICAxNzkxLCAgMTc5
MiwgIDE3OTYsICAxODA0LCAgMTgwOCwgIDE4MTgsICAxODIzLAorICAgIDE4NDAsICAxODQwLCAg
MTg0NSwgIDE4NDUsICAxODUyLCAgMTg1MiwgIDE4NjAsICAxODYzLCAgMTg2OSwgIDE4NzIsCisg
ICAgMTg3OCwgIDE4ODIsICAxODg5LCAgMTg5NiwgIDE5MDMsICAxOTEwLCAgMTkyMSwgIDE5MzAs
ICAxOTM0LCAgMTk0MSwKKyAgICAxOTQ0LCAgMTk1MCwgIDE5NTAKIH07CiAjZW5kaWYKIApAQCAt
Nzg4LDE1ICs4MDksMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHl5dG5hbWVbXSA9CiAg
ICJNQVRSSVgzIiwgIk1BVFJJWDQiLCAiSU5fUVVBTCIsICJPVVRfUVVBTCIsICJJTk9VVF9RVUFM
IiwgIlVOSUZPUk0iLAogICAiVkFSWUlORyIsICJTVFJVQ1QiLCAiVk9JRF9UWVBFIiwgIldISUxF
IiwgIlNBTVBMRVIyRCIsICJTQU1QTEVSQ1VCRSIsCiAgICJTQU1QTEVSX0VYVEVSTkFMX09FUyIs
ICJTQU1QTEVSMkRSRUNUIiwgIklERU5USUZJRVIiLCAiVFlQRV9OQU1FIiwKLSAgIkZMT0FUQ09O
U1RBTlQiLCAiSU5UQ09OU1RBTlQiLCAiQk9PTENPTlNUQU5UIiwgIkZJRUxEX1NFTEVDVElPTiIs
Ci0gICJMRUZUX09QIiwgIlJJR0hUX09QIiwgIklOQ19PUCIsICJERUNfT1AiLCAiTEVfT1AiLCAi
R0VfT1AiLCAiRVFfT1AiLAotICAiTkVfT1AiLCAiQU5EX09QIiwgIk9SX09QIiwgIlhPUl9PUCIs
ICJNVUxfQVNTSUdOIiwgIkRJVl9BU1NJR04iLAotICAiQUREX0FTU0lHTiIsICJNT0RfQVNTSUdO
IiwgIkxFRlRfQVNTSUdOIiwgIlJJR0hUX0FTU0lHTiIsICJBTkRfQVNTSUdOIiwKLSAgIlhPUl9B
U1NJR04iLCAiT1JfQVNTSUdOIiwgIlNVQl9BU1NJR04iLCAiTEVGVF9QQVJFTiIsICJSSUdIVF9Q
QVJFTiIsCi0gICJMRUZUX0JSQUNLRVQiLCAiUklHSFRfQlJBQ0tFVCIsICJMRUZUX0JSQUNFIiwg
IlJJR0hUX0JSQUNFIiwgIkRPVCIsCi0gICJDT01NQSIsICJDT0xPTiIsICJFUVVBTCIsICJTRU1J
Q09MT04iLCAiQkFORyIsICJEQVNIIiwgIlRJTERFIiwgIlBMVVMiLAotICAiU1RBUiIsICJTTEFT
SCIsICJQRVJDRU5UIiwgIkxFRlRfQU5HTEUiLCAiUklHSFRfQU5HTEUiLCAiVkVSVElDQUxfQkFS
IiwKLSAgIkNBUkVUIiwgIkFNUEVSU0FORCIsICJRVUVTVElPTiIsICIkYWNjZXB0IiwgInZhcmlh
YmxlX2lkZW50aWZpZXIiLAorICAiRkxPQVRDT05TVEFOVCIsICJJTlRDT05TVEFOVCIsICJCT09M
Q09OU1RBTlQiLCAiTEVGVF9PUCIsICJSSUdIVF9PUCIsCisgICJJTkNfT1AiLCAiREVDX09QIiwg
IkxFX09QIiwgIkdFX09QIiwgIkVRX09QIiwgIk5FX09QIiwgIkFORF9PUCIsCisgICJPUl9PUCIs
ICJYT1JfT1AiLCAiTVVMX0FTU0lHTiIsICJESVZfQVNTSUdOIiwgIkFERF9BU1NJR04iLAorICAi
TU9EX0FTU0lHTiIsICJMRUZUX0FTU0lHTiIsICJSSUdIVF9BU1NJR04iLCAiQU5EX0FTU0lHTiIs
ICJYT1JfQVNTSUdOIiwKKyAgIk9SX0FTU0lHTiIsICJTVUJfQVNTSUdOIiwgIkxFRlRfUEFSRU4i
LCAiUklHSFRfUEFSRU4iLCAiTEVGVF9CUkFDS0VUIiwKKyAgIlJJR0hUX0JSQUNLRVQiLCAiTEVG
VF9CUkFDRSIsICJSSUdIVF9CUkFDRSIsICJET1QiLCAiQ09NTUEiLCAiQ09MT04iLAorICAiRVFV
QUwiLCAiU0VNSUNPTE9OIiwgIkJBTkciLCAiREFTSCIsICJUSUxERSIsICJQTFVTIiwgIlNUQVIi
LCAiU0xBU0giLAorICAiUEVSQ0VOVCIsICJMRUZUX0FOR0xFIiwgIlJJR0hUX0FOR0xFIiwgIlZF
UlRJQ0FMX0JBUiIsICJDQVJFVCIsCisgICJBTVBFUlNBTkQiLCAiUVVFU1RJT04iLCAiJGFjY2Vw
dCIsICJpZGVudGlmaWVyIiwgInZhcmlhYmxlX2lkZW50aWZpZXIiLAogICAicHJpbWFyeV9leHBy
ZXNzaW9uIiwgInBvc3RmaXhfZXhwcmVzc2lvbiIsICJpbnRlZ2VyX2V4cHJlc3Npb24iLAogICAi
ZnVuY3Rpb25fY2FsbCIsICJmdW5jdGlvbl9jYWxsX29yX21ldGhvZCIsICJmdW5jdGlvbl9jYWxs
X2dlbmVyaWMiLAogICAiZnVuY3Rpb25fY2FsbF9oZWFkZXJfbm9fcGFyYW1ldGVycyIsCkBAIC04
NDIsNjAgKzg2Myw2MCBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXRva251bVtdID0K
ICAgICAgMzE1LCAgIDMxNiwgICAzMTcsICAgMzE4LCAgIDMxOSwgICAzMjAsICAgMzIxLCAgIDMy
MiwgICAzMjMsICAgMzI0LAogICAgICAzMjUsICAgMzI2LCAgIDMyNywgICAzMjgsICAgMzI5LCAg
IDMzMCwgICAzMzEsICAgMzMyLCAgIDMzMywgICAzMzQsCiAgICAgIDMzNSwgICAzMzYsICAgMzM3
LCAgIDMzOCwgICAzMzksICAgMzQwLCAgIDM0MSwgICAzNDIsICAgMzQzLCAgIDM0NCwKLSAgICAg
MzQ1LCAgIDM0NiwgICAzNDcsICAgMzQ4LCAgIDM0OSwgICAzNTAKKyAgICAgMzQ1LCAgIDM0Niwg
ICAzNDcsICAgMzQ4LCAgIDM0OQogfTsKICMgZW5kaWYKIAogLyogWVlSMVtZWU5dIC0tIFN5bWJv
bCBudW1iZXIgb2Ygc3ltYm9sIHRoYXQgcnVsZSBZWU4gZGVyaXZlcy4gICovCiBzdGF0aWMgY29u
c3QgeXl0eXBlX3VpbnQ4IHl5cjFbXSA9CiB7Ci0gICAgICAgMCwgICAgOTYsICAgIDk3LCAgICA5
OCwgICAgOTgsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk5LCAgICA5OSwKLSAgICAgIDk5LCAg
ICA5OSwgICAgOTksICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMiwgICAxMDMsICAg
MTAzLAotICAgICAxMDQsICAgMTA0LCAgIDEwNSwgICAxMDUsICAgMTA2LCAgIDEwNywgICAxMDcs
ICAgMTA3LCAgIDEwOCwgICAxMDgsCi0gICAgIDEwOCwgICAxMDgsICAgMTA5LCAgIDEwOSwgICAx
MDksICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTExLCAgIDExMSwKLSAgICAgMTExLCAgIDExMiwg
ICAxMTMsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExNCwgICAxMTQsICAgMTE0LAot
ICAgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE4LCAgIDExOSwgICAxMTksICAgMTIw
LCAgIDEyMCwgICAxMjEsCi0gICAgIDEyMSwgICAxMjIsICAgMTIyLCAgIDEyMywgICAxMjMsICAg
MTIzLCAgIDEyMywgICAxMjMsICAgMTI0LCAgIDEyNCwKLSAgICAgMTI1LCAgIDEyNiwgICAxMjYs
ICAgMTI2LCAgIDEyNywgICAxMjgsICAgMTI4LCAgIDEyOSwgICAxMjksICAgMTMwLAotICAgICAx
MzEsICAgMTMxLCAgIDEzMiwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzMsICAgMTMzLCAgIDEz
MywgICAxMzMsCi0gICAgIDEzNCwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM1LCAg
IDEzNiwgICAxMzYsICAgMTM2LCAgIDEzNiwKLSAgICAgMTM2LCAgIDEzNiwgICAxMzcsICAgMTM3
LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM5LAotICAgICAxMzksICAg
MTQwLCAgIDE0MCwgICAxNDAsICAgMTQxLCAgIDE0MSwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAx
NDIsCisgICAgICAgMCwgICAgOTUsICAgIDk2LCAgICA5NiwgICAgOTcsICAgIDk4LCAgICA5OCwg
ICAgOTgsICAgIDk4LCAgICA5OCwKKyAgICAgIDk5LCAgICA5OSwgICAgOTksICAgIDk5LCAgICA5
OSwgICAgOTksICAgMTAwLCAgIDEwMSwgICAxMDIsICAgMTAyLAorICAgICAxMDMsICAgMTAzLCAg
IDEwNCwgICAxMDQsICAgMTA1LCAgIDEwNSwgICAxMDYsICAgMTA3LCAgIDEwNywgICAxMDgsCisg
ICAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOSwgICAxMDksICAgMTA5LCAgIDExMCwgICAxMTAs
ICAgMTEwLCAgIDExMSwKKyAgICAgMTExLCAgIDExMSwgICAxMTIsICAgMTEzLCAgIDExMywgICAx
MTMsICAgMTEzLCAgIDExMywgICAxMTQsICAgMTE0LAorICAgICAxMTQsICAgMTE1LCAgIDExNiwg
ICAxMTcsICAgMTE4LCAgIDExOCwgICAxMTksICAgMTE5LCAgIDEyMCwgICAxMjAsCisgICAgIDEy
MSwgICAxMjEsICAgMTIyLCAgIDEyMiwgICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTIz
LCAgIDEyNCwKKyAgICAgMTI0LCAgIDEyNSwgICAxMjYsICAgMTI2LCAgIDEyNiwgICAxMjcsICAg
MTI4LCAgIDEyOCwgICAxMjksICAgMTI5LAorICAgICAxMzAsICAgMTMxLCAgIDEzMSwgICAxMzIs
ICAgMTMyLCAgIDEzMiwgICAxMzIsICAgMTMzLCAgIDEzMywgICAxMzMsCisgICAgIDEzMywgICAx
MzQsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzYsICAgMTM2LCAgIDEz
NiwKKyAgICAgMTM2LCAgIDEzNiwgICAxMzYsICAgMTM3LCAgIDEzNywgICAxMzgsICAgMTM4LCAg
IDEzOCwgICAxMzgsICAgMTM4LAorICAgICAxMzksICAgMTM5LCAgIDE0MCwgICAxNDAsICAgMTQw
LCAgIDE0MSwgICAxNDEsICAgMTQyLCAgIDE0MiwgICAxNDIsCiAgICAgIDE0MiwgICAxNDIsICAg
MTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwKLSAg
ICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0Miwg
ICAxNDQsICAgMTQzLAotICAgICAxNDUsICAgMTQzLCAgIDE0NiwgICAxNDYsICAgMTQ3LCAgIDE0
OCwgICAxNDgsICAgMTQ5LCAgIDE0OSwgICAxNTAsCi0gICAgIDE1MSwgICAxNTIsICAgMTUyLCAg
IDE1MywgICAxNTMsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTU0LCAgIDE1NSwKLSAgICAgMTU2
LCAgIDE1NCwgICAxNTcsICAgMTU3LCAgIDE1OSwgICAxNTgsICAgMTYwLCAgIDE1OCwgICAxNjEs
ICAgMTYxLAotICAgICAxNjIsICAgMTYyLCAgIDE2MywgICAxNjMsICAgMTY0LCAgIDE2NSwgICAx
NjUsICAgMTY2LCAgIDE2NiwgICAxNjgsCi0gICAgIDE2NywgICAxNjksICAgMTY3LCAgIDE3MCwg
ICAxNjcsICAgMTcxLCAgIDE3MSwgICAxNzIsICAgMTcyLCAgIDE3MywKLSAgICAgMTczLCAgIDE3
NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc1LCAgIDE3NSwgICAxNzYsICAgMTc2
LAotICAgICAxNzgsICAgMTc3CisgICAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIs
ICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0NCwKKyAgICAgMTQzLCAgIDE0NSwgICAx
NDMsICAgMTQ2LCAgIDE0NiwgICAxNDcsICAgMTQ4LCAgIDE0OCwgICAxNDksICAgMTQ5LAorICAg
ICAxNTAsICAgMTUxLCAgIDE1MiwgICAxNTIsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUzLCAg
IDE1MywgICAxNTQsCisgICAgIDE1NSwgICAxNTYsICAgMTU0LCAgIDE1NywgICAxNTcsICAgMTU5
LCAgIDE1OCwgICAxNjAsICAgMTU4LCAgIDE2MSwKKyAgICAgMTYxLCAgIDE2MiwgICAxNjIsICAg
MTYzLCAgIDE2MywgICAxNjQsICAgMTY1LCAgIDE2NSwgICAxNjYsICAgMTY2LAorICAgICAxNjgs
ICAgMTY3LCAgIDE2OSwgICAxNjcsICAgMTcwLCAgIDE2NywgICAxNzEsICAgMTcxLCAgIDE3Miwg
ICAxNzIsCisgICAgIDE3MywgICAxNzMsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3
NCwgICAxNzUsICAgMTc1LCAgIDE3NiwKKyAgICAgMTc2LCAgIDE3OCwgICAxNzcKIH07CiAKIC8q
IFlZUjJbWVlOXSAtLSBOdW1iZXIgb2Ygc3ltYm9scyBjb21wb3NpbmcgcmlnaHQgaGFuZCBzaWRl
IG9mIHJ1bGUgWVlOLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0KIHsK
LSAgICAgICAwLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MywgICAgIDEsICAgICA0LAotICAgICAgIDEsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAzLCAgICAgMiwgICAgIDIsCi0gICAgICAgMiwgICAgIDEsICAgICAy
LCAgICAgMywgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwKLSAgICAg
ICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAg
IDEsICAgICAzLAotICAgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMywg
ICAgIDMsICAgICAxLCAgICAgMywgICAgIDMsCi0gICAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwKLSAgICAgICA1LCAg
ICAgMSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAzLAotICAgICAgIDEsICAgICAyLCAgICAgMiwgICAgIDQsICAgICAyLCAgICAgMSwgICAgIDEs
ICAgICAyLCAgICAgMywgICAgIDMsCi0gICAgICAgMiwgICAgIDUsICAgICAzLCAgICAgMiwgICAg
IDMsICAgICAyLCAgICAgMCwgICAgIDEsICAgICAxLCAgICAgMSwKLSAgICAgICAxLCAgICAgMSwg
ICAgIDMsICAgICA1LCAgICAgNiwgICAgIDUsICAgICAxLCAgICAgMiwgICAgIDQsICAgICA1LAot
ICAgICAgIDQsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAy
LCAgICAgMSwgICAgIDEsCi0gICAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICA0LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAwLCAgICAgMiwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLAorICAgICAg
IDEsICAgICA0LCAgICAgMSwgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDMsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAzLCAg
ICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDMsICAgICAxLAorICAgICAgIDMsICAg
ICAzLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMSwgICAg
IDMsCisgICAgICAgMywgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMSwg
ICAgIDMsICAgICAxLCAgICAgMywKKyAgICAgICAxLCAgICAgNSwgICAgIDEsICAgICAzLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAorICAgICAgIDMsICAgICAxLCAg
ICAgMiwgICAgIDIsICAgICA0LCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDMsCisg
ICAgICAgMywgICAgIDIsICAgICA1LCAgICAgMywgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDAs
ICAgICAxLCAgICAgMSwKKyAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgNSwgICAg
IDYsICAgICA1LCAgICAgMSwgICAgIDIsICAgICA0LAorICAgICAgIDUsICAgICA0LCAgICAgMiwg
ICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDEsCisgICAgICAg
MSwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgNCwgICAgIDEsICAgICAx
LCAgICAgMSwKICAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLAotICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDYsCi0gICAgICAgMCwgICAg
IDUsICAgICAxLCAgICAgMiwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICA0LCAgICAg
MSwKLSAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDIsICAgICAwLAotICAgICAgIDAsICAgICA1LCAgICAgMSwgICAgIDEsICAgICAw
LCAgICAgMiwgICAgIDAsICAgICAyLCAgICAgMiwgICAgIDMsCi0gICAgICAgMSwgICAgIDIsICAg
ICAxLCAgICAgMiwgICAgIDUsICAgICAzLCAgICAgMSwgICAgIDEsICAgICA0LCAgICAgMCwKLSAg
ICAgICA2LCAgICAgMCwgICAgIDgsICAgICAwLCAgICAgNywgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDAsICAgICAyLAotICAgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAzLCAgICAg
MiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsCi0gICAgICAgMCwgICAgIDMKKyAgICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAwLAorICAgICAgIDYsICAgICAwLCAgICAgNSwgICAgIDEsICAgICAyLCAgICAgMywgICAg
IDEsICAgICAzLCAgICAgMSwgICAgIDQsCisgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwKKyAgICAgICAwLCAgICAg
MCwgICAgIDUsICAgICAxLCAgICAgMSwgICAgIDAsICAgICAyLCAgICAgMCwgICAgIDIsICAgICAy
LAorICAgICAgIDMsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgNSwgICAgIDMsICAg
ICAxLCAgICAgMSwgICAgIDQsCisgICAgICAgMCwgICAgIDYsICAgICAwLCAgICAgOCwgICAgIDAs
ICAgICA3LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwKKyAgICAgICAyLCAgICAgMywgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLAorICAg
ICAgIDEsICAgICAwLCAgICAgMwogfTsKIAogLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0gLS0gRGVm
YXVsdCBydWxlIHRvIHJlZHVjZSB3aXRoIGluIHN0YXRlCkBAIC05MDMsNDAwICs5MjQsNDE2IEBA
IHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0KICAgIG1lYW5zIHRoZSBkZWZhdWx0
IGlzIGFuIGVycm9yLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlkZWZhY3RbXSA9
CiB7Ci0gICAgICAgMCwgICAgIDAsICAgMTExLCAgIDExMiwgICAxMTMsICAgICAwLCAgIDEwNSwg
ICAxMDQsICAgMTE5LCAgIDExNywKLSAgICAgMTE4LCAgIDEyMywgICAxMjQsICAgMTI1LCAgIDEy
NiwgICAxMjcsICAgMTI4LCAgIDEyMCwgICAxMjEsICAgMTIyLAotICAgICAxMjksICAgMTMwLCAg
IDEzMSwgICAxMDgsICAgMTA2LCAgICAgMCwgICAxMTYsICAgMTMyLCAgIDEzMywgICAxMzQsCi0g
ICAgIDEzNSwgICAxMzcsICAgMTk5LCAgIDIwMCwgICAgIDAsICAgIDc2LCAgICA4NiwgICAgIDAs
ICAgIDkxLCAgICA5NiwKLSAgICAgICAwLCAgIDEwMiwgICAgIDAsICAgMTA5LCAgIDExNCwgICAx
MzYsICAgICAwLCAgIDE5NiwgICAxOTgsICAgMTA3LAotICAgICAxMDEsICAgICAwLCAgICAgMCwg
ICAxNDAsICAgIDcxLCAgICAgMCwgICAgNzQsICAgIDg2LCAgICAgMCwgICAgODcsCi0gICAgICA4
OCwgICAgODksICAgIDc3LCAgICAgMCwgICAgODYsICAgICAwLCAgICA3MiwgICAgOTcsICAgMTAz
LCAgIDExMCwKLSAgICAgICAwLCAgICAgMSwgICAxOTcsICAgICAwLCAgIDEzOCwgICAgIDAsICAg
ICAwLCAgIDIwMSwgICAgNzgsICAgIDgzLAotICAgICAgODUsICAgIDkwLCAgICAgMCwgICAgOTIs
ICAgIDc5LCAgICAgMCwgICAgIDAsICAgICAyLCAgICAgNSwgICAgIDQsCi0gICAgICAgNiwgICAg
MjcsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDM0LCAgICAzMywgICAgMzIsICAgICAzLCAgICAg
OCwKLSAgICAgIDI4LCAgICAxMCwgICAgMTUsICAgIDE2LCAgICAgMCwgICAgIDAsICAgIDIxLCAg
ICAgMCwgICAgMzUsICAgICAwLAotICAgICAgMzgsICAgIDQxLCAgICA0MiwgICAgNDcsICAgIDUw
LCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NSwgICAgNTcsCi0gICAgICA1OSwgICAgNzAsICAg
ICAwLCAgICAyNSwgICAgNzMsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQyLCAgICAgMCwKLSAg
ICAgICAwLCAgIDE4MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1OSwg
ICAxNjgsICAgMTcyLAotICAgICAgMzUsICAgIDYxLCAgICA2OCwgICAgIDAsICAgMTUwLCAgICAg
MCwgICAxMTQsICAgMTUzLCAgIDE3MCwgICAxNTIsCi0gICAgIDE1MSwgICAgIDAsICAgMTU0LCAg
IDE1NSwgICAxNTYsICAgMTU3LCAgICA4MCwgICAgODIsICAgIDg0LCAgICAgMCwKLSAgICAgICAw
LCAgICA5OCwgICAgIDAsICAgMTQ5LCAgIDEwMCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMTIs
ICAgIDEzLAotICAgICAgIDAsICAgICAwLCAgICAxOSwgICAgMTgsICAgICAwLCAgICAyMCwgICAg
MjIsICAgIDI0LCAgICAzMSwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgMTE1LCAgICAgMCwgICAxNDcsICAgICAwLCAgIDE0NSwgICAxNDEsICAgMTQz
LAotICAgICAxOTIsICAgMTkxLCAgIDE2NiwgICAxODMsICAgICAwLCAgIDE5NSwgICAxOTMsICAg
ICAwLCAgIDE3OSwgICAxNTgsCi0gICAgICAgMCwgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcs
ICAgIDYzLCAgICAgMCwgICAgIDAsICAgMTczLCAgIDE2OSwKLSAgICAgMTcxLCAgICAgMCwgICAg
OTMsICAgICAwLCAgICA5NSwgICAgOTksICAgICA3LCAgICAgMCwgICAgMTQsICAgIDI2LAotICAg
ICAgMTEsICAgIDE3LCAgICAyMywgICAgMzYsICAgIDM3LCAgICA0MCwgICAgMzksICAgIDQ1LCAg
ICA0NiwgICAgNDMsCi0gICAgICA0NCwgICAgNDgsICAgIDQ5LCAgICA1NCwgICAgNTYsICAgIDU4
LCAgICAgMCwgICAxMzksICAgICAwLCAgICAgMCwKLSAgICAgMTQ0LCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTk0LCAgICAgMCwgICAxNjAsICAgIDYyLAotICAgICAgNjks
ICAgICAwLCAgICA5NCwgICAgIDksICAgICAwLCAgICAgMCwgICAxNDYsICAgICAwLCAgIDE2NSwg
ICAxNjcsCi0gICAgIDE4NiwgICAxODUsICAgMTg4LCAgIDE2NiwgICAxNzcsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDgxLCAgICA2MCwKLSAgICAgMTQ4LCAgICAgMCwgICAxODcsICAgICAwLCAg
ICAgMCwgICAxNzYsICAgMTc0LCAgICAgMCwgICAgIDAsICAgMTYxLAotICAgICAgIDAsICAgMTg5
LCAgICAgMCwgICAxNjYsICAgICAwLCAgIDE2MywgICAxODAsICAgMTYyLCAgICAgMCwgICAxOTAs
Ci0gICAgIDE4NCwgICAxNzUsICAgMTc4LCAgIDE4MgorICAgICAgIDAsICAgICAwLCAgIDExMiwg
ICAxMTMsICAgMTE0LCAgICAgMCwgICAxMDYsICAgMTA1LCAgIDEyMCwgICAxMTgsCisgICAgIDEx
OSwgICAxMjQsICAgMTI1LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOSwgICAxMjEsICAgMTIy
LCAgIDEyMywKKyAgICAgMTMwLCAgIDEzMSwgICAxMzIsICAgMTA5LCAgIDEwNywgICAgIDAsICAg
MTE3LCAgIDEzMywgICAxMzQsICAgMTM1LAorICAgICAxMzYsICAgMTM4LCAgIDIwMCwgICAyMDEs
ICAgICAwLCAgICA3NywgICAgODcsICAgICAwLCAgICA5MiwgICAgOTcsCisgICAgICAgMCwgICAx
MDMsICAgICAwLCAgIDExMCwgICAxMTUsICAgMTM3LCAgICAgMCwgICAxOTcsICAgMTk5LCAgIDEw
OCwKKyAgICAgMTAyLCAgICAgMCwgICAgIDIsICAgICAzLCAgIDE0MSwgICAgIDAsICAgIDcyLCAg
ICAgMCwgICAgNzUsICAgIDg3LAorICAgICAgIDAsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDc4
LCAgICAgMCwgICAgODcsICAgICAwLCAgICA3MywgICAgIDIsCisgICAgICA5OCwgICAxMDQsICAg
MTExLCAgICAgMCwgICAgIDEsICAgMTk4LCAgICAgMCwgICAgIDAsICAgMTM5LCAgICAgMCwKKyAg
ICAgMjAyLCAgICA3OSwgICAgODQsICAgIDg2LCAgICA5MSwgICAgIDAsICAgIDkzLCAgICA4MCwg
ICAgIDAsICAgICAwLAorICAgICAgIDQsICAgICA3LCAgICAgNiwgICAgIDgsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDM1LCAgICAzNCwgICAgMzMsCisgICAgICAgNSwgICAgMTAsICAgIDI5LCAg
ICAxMiwgICAgMTcsICAgIDE4LCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAgMCwKKyAgICAgIDM2
LCAgICAgMCwgICAgMzksICAgIDQyLCAgICA0MywgICAgNDgsICAgIDUxLCAgICA1MiwgICAgNTMs
ICAgIDU0LAorICAgICAgNTYsICAgIDU4LCAgICA2MCwgICAgNzEsICAgICAwLCAgICAyNywgICAg
NzQsICAgICAwLCAgICAgMCwgICAxNDMsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE4Miwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE2MCwKKyAgICAgMTY5LCAgIDE3
MywgICAgMzYsICAgIDYyLCAgICA2OSwgICAgIDAsICAgMTUxLCAgICAgMCwgICAxMTUsICAgMTU0
LAorICAgICAxNzEsICAgMTUzLCAgIDE1MiwgICAgIDAsICAgMTU1LCAgIDE1NiwgICAxNTcsICAg
MTU4LCAgICA4MSwgICAgODMsCisgICAgICA4NSwgICAgIDAsICAgICAwLCAgICA5OSwgICAgIDAs
ICAgMTUwLCAgIDEwMSwgICAgMzAsICAgIDMxLCAgICAgMCwKKyAgICAgIDE0LCAgICAxNSwgICAg
IDAsICAgICAwLCAgICAyMSwgICAgMjAsICAgICAwLCAgICAyMiwgICAgMjQsICAgIDI2LAorICAg
ICAgMzIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTE2
LCAgIDE0OCwgICAgIDAsICAgMTQ2LCAgIDE0MiwKKyAgICAgMTQ0LCAgICAgMCwgICAxOTMsICAg
MTkyLCAgIDE2NywgICAxODQsICAgICAwLCAgIDE5NiwgICAxOTQsICAgICAwLAorICAgICAxODAs
ICAgMTU5LCAgICAgMCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY0LCAgICAgMCwg
ICAgIDAsCisgICAgIDE3NCwgICAxNzAsICAgMTcyLCAgICAgMCwgICAgOTQsICAgICAwLCAgICA5
NiwgICAxMDAsICAgICA5LCAgICAgMCwKKyAgICAgIDE2LCAgICAgMiwgICAgIDMsICAgIDEzLCAg
ICAxOSwgICAgMjUsICAgIDM3LCAgICAzOCwgICAgNDEsICAgIDQwLAorICAgICAgNDYsICAgIDQ3
LCAgICA0NCwgICAgNDUsICAgIDQ5LCAgICA1MCwgICAgNTUsICAgIDU3LCAgICA1OSwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgMTQ1LCAgIDE0MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgIDE5NSwKKyAgICAgICAwLCAgIDE2MSwgICAgNjMsICAgIDcwLCAgICAgMCwg
ICAgOTUsICAgIDExLCAgICAgMCwgICAgIDAsICAgMTQ3LAorICAgICAgIDAsICAgMTY2LCAgIDE2
OCwgICAxODcsICAgMTg2LCAgIDE4OSwgICAxNjcsICAgMTc4LCAgICAgMCwgICAgIDAsCisgICAg
ICAgMCwgICAgODIsICAgIDYxLCAgIDE0OSwgICAgIDAsICAgMTg4LCAgICAgMCwgICAgIDAsICAg
MTc3LCAgIDE3NSwKKyAgICAgICAwLCAgICAgMCwgICAxNjIsICAgICAwLCAgIDE5MCwgICAgIDAs
ICAgMTY3LCAgICAgMCwgICAxNjQsICAgMTgxLAorICAgICAxNjMsICAgICAwLCAgIDE5MSwgICAx
ODUsICAgMTc2LCAgIDE3OSwgICAxODMKIH07CiAKIC8qIFlZREVGR09UT1tOVEVSTS1OVU1dLiAg
Ki8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlkZWZnb3RvW10gPQogewotICAgICAgLTEs
ICAgIDk4LCAgICA5OSwgICAxMDAsICAgMjI3LCAgIDEwMSwgICAxMDIsICAgMTAzLCAgIDEwNCwg
ICAxMDUsCi0gICAgIDEwNiwgICAxMDcsICAgMTQwLCAgIDEwOSwgICAxMTAsICAgMTExLCAgIDEx
MiwgICAxMTMsICAgMTE0LCAgIDExNSwKLSAgICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE5LCAg
IDEyMCwgICAxNDEsICAgMTQyLCAgIDIxNiwgICAxNDMsICAgMTIyLAotICAgICAxNDQsICAgMTQ1
LCAgICAzNCwgICAgMzUsICAgIDM2LCAgICA3OSwgICAgNjIsICAgIDYzLCAgICA4MCwgICAgMzcs
Ci0gICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgIDEyMywgICAg
NDUsICAgMTI1LCAgICA3NSwKLSAgICAgMTI3LCAgIDEyOCwgICAxOTYsICAgMTk3LCAgIDE2NCwg
ICAxNDcsICAgMTQ4LCAgIDE0OSwgICAxNTAsICAgMjEwLAotICAgICAyNzcsICAgMjk2LCAgIDI1
MSwgICAyNTIsICAgMjUzLCAgIDI5NywgICAxNTEsICAgMTUyLCAgIDE1MywgICAyODYsCi0gICAg
IDI3NiwgICAxNTQsICAgMjU3LCAgIDIwMiwgICAyNTQsICAgMjcyLCAgIDI4MywgICAyODQsICAg
MTU1LCAgICA0NiwKLSAgICAgIDQ3LCAgICA0OCwgICAgNTUKKyAgICAgIC0xLCAgIDE5NiwgICAx
MDAsICAgMTAxLCAgIDEwMiwgICAyMjksICAgMTAzLCAgIDEwNCwgICAxMDUsICAgMTA2LAorICAg
ICAxMDcsICAgMTA4LCAgIDEwOSwgICAxNDIsICAgMTExLCAgIDExMiwgICAxMTMsICAgMTE0LCAg
IDExNSwgICAxMTYsCisgICAgIDExNywgICAxMTgsICAgMTE5LCAgIDEyMCwgICAxMjEsICAgMTIy
LCAgIDE0MywgICAxNDQsICAgMjE4LCAgIDE0NSwKKyAgICAgMTI0LCAgIDE0NiwgICAxNDcsICAg
IDM0LCAgICAzNSwgICAgMzYsICAgIDgyLCAgICA2NCwgICAgNjUsICAgIDgzLAorICAgICAgMzcs
ICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgMTI1LCAgICA0NSwg
ICAxMzAsCisgICAgICA3NywgICAxMjgsICAgMTI5LCAgIDE5NywgICAxOTgsICAgMTY2LCAgIDE0
OSwgICAxNTAsICAgMTUxLCAgIDE1MiwKKyAgICAgMjEyLCAgIDI4MCwgICAyOTksICAgMjU0LCAg
IDI1NSwgICAyNTYsICAgMzAwLCAgIDE1MywgICAxNTQsICAgMTU1LAorICAgICAyODksICAgMjc5
LCAgIDE1NiwgICAyNjAsICAgMjA0LCAgIDI1NywgICAyNzUsICAgMjg2LCAgIDI4NywgICAxNTcs
CisgICAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA1NwogfTsKIAogLyogWVlQQUNUW1NUQVRFLU5V
TV0gLS0gSW5kZXggaW4gWVlUQUJMRSBvZiB0aGUgcG9ydGlvbiBkZXNjcmliaW5nCiAgICBTVEFU
RS1OVU0uICAqLwotI2RlZmluZSBZWVBBQ1RfTklORiAtMjY2CisjZGVmaW5lIFlZUEFDVF9OSU5G
IC0yNjEKIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlwYWN0W10gPQogewotICAgIDEyNTMs
ICAgLTIwLCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDE0OCwgIC0yNjYsICAtMjY2LCAgLTI2Niwg
IC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2
NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
LTI2NiwgICAtMzksICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2
LCAgLTI2NiwgICAtMTgsICAgIC0yLCAgICAgNiwgICAgMjEsICAgLTYxLCAgLTI2NiwgICAgNTEs
Ci0gICAgMTI5NiwgIC0yNjYsICAxMzcwLCAgLTI2NiwgICAgMjUsICAtMjY2LCAgMTIwOSwgIC0y
NjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgMTM3MCwgICAgNDIsICAtMjY2LCAgLTI2Niwg
ICAgNTAsICAtMjY2LCAgICA3MSwgICAgOTUsICAtMjY2LAotICAgIC0yNjYsICAtMjY2LCAgLTI2
NiwgIDEyOTYsICAgMTIzLCAgIDEwNSwgIC0yNjYsICAgICA5LCAgLTI2NiwgIC0yNjYsCi0gICAg
IDk3NCwgIC0yNjYsICAtMjY2LCAgICA4MSwgIC0yNjYsICAxMjk2LCAgIDI5MCwgIC0yNjYsICAt
MjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIDEyNSwgIDEyOTYsICAgLTEzLCAgLTI2NiwgICA3NzYs
ICAgOTc0LCAgICA5OSwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2LCAgIDk3NCwgICA5
NzQsICAgOTc0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgICAzNSwg
IC0yNjYsICAtMjY2LCAgLTI2NiwgICAxMDAsICAgIC02LCAgMTA0MCwgICAxMDQsICAtMjY2LCAg
IDk3NCwKLSAgICAgIDM2LCAgIC02NCwgIC0yNjYsICAgLTIxLCAgIDEwMiwgIC0yNjYsICAtMjY2
LCAgLTI2NiwgICAxMTMsICAgMTE3LAotICAgICAtNTEsICAtMjY2LCAgIDEwOCwgIC0yNjYsICAt
MjY2LCAgMTI5NiwgICAxMjksICAxMTA5LCAgLTI2NiwgICAgOTcsCi0gICAgIDEwMywgIC0yNjYs
ICAgMTEyLCAgIDExNCwgICAxMDYsICAgODQyLCAgIDExNSwgICAxMTYsICAtMjY2LCAgLTI2NiwK
LSAgICAgIDM5LCAgLTI2NiwgIC0yNjYsICAgLTQzLCAgLTI2NiwgICAtMTgsICAgIDQ3LCAgLTI2
NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgMzc0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
LTI2NiwgICAxMTgsICAtMjY2LCAgLTI2NiwgICA5MDgsCi0gICAgIDk3NCwgIC0yNjYsICAgMTIw
LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAgMTksICAtMjY2LCAgLTI2NiwKLSAgICAg
OTc0LCAgMTMzMywgIC0yNjYsICAtMjY2LCAgIDk3NCwgICAxMTksICAtMjY2LCAgLTI2NiwgIC0y
NjYsICAgOTc0LAotICAgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwg
ICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsCi0gICAgIDk3NCwgICA5NzQsICAgOTc0LCAgLTI2
NiwgIDExNTIsICAgMTIyLCAgIC0yOSwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAg
LTI2NiwgICAxMjEsICAtMjY2LCAgIDk3NCwgIC0yNjYsICAtMjY2LCAgICAgNSwgIC0yNjYsICAt
MjY2LAotICAgICA0NTgsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICA5NzQs
ICAgOTc0LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICA5NzQsICAtMjY2LCAgIDEzNywgIC0y
NjYsICAtMjY2LCAgLTI2NiwgICAxMzgsICAgMTExLCAgLTI2NiwKLSAgICAgMTQyLCAgLTI2Niwg
IC0yNjYsICAtMjY2LCAgLTI2NiwgICAgMzYsICAgIDM2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAot
ICAgIC0yNjYsICAgLTIxLCAgIC0yMSwgIC0yNjYsICAgMTEzLCAgIDExNywgICAgODIsICAtMjY2
LCAgIDk3NCwgICAxMjksCi0gICAgLTI2NiwgICAxNzUsICAgIDUwLCAgIDYyNiwgICA3MTAsICAg
IDM4LCAgLTI2NiwgICAxOTcsICAgNDU4LCAgLTI2NiwKLSAgICAtMjY2LCAgIDE0MSwgIC0yNjYs
ICAtMjY2LCAgIDk3NCwgICAxNTUsICAtMjY2LCAgIDE0NSwgIC0yNjYsICAtMjY2LAotICAgIC0y
NjYsICAtMjY2LCAgIDE5NywgICAxMjEsICAgMTExLCAgIDE4NiwgICAxNTksICAgMTYwLCAgLTI2
NiwgIC0yNjYsCi0gICAgLTI2NiwgICA5NzQsICAtMjY2LCAgIDE2NiwgICAxNzYsICAgMjM2LCAg
LTI2NiwgICAxNzQsICAgNTQyLCAgLTI2NiwKLSAgICAgIDQzLCAgIDk3NCwgICA1NDIsICAgMTIx
LCAgIDk3NCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxNzcsICAgMTExLAotICAgIC0yNjYsICAt
MjY2LCAgLTI2NiwgIC0yNjYKKyAgICAxMzI3LCAgIC0yMCwgIC0yNjEsICAtMjYxLCAgLTI2MSwg
ICAxMTMsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgLTE5LCAgLTI2MSwgIC0yNjEsICAt
MjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgLTYxLCAgIC00MCwgICAtMjgs
ICAgIDc1LCAgICAtNywgIC0yNjEsICAgIDI0LAorICAgIDEzNzAsICAtMjYxLCAgMTQ0NCwgIC0y
NjEsICAgLTExLCAgLTI2MSwgIDEyODMsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwg
IDE0NDQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgICA2LCAgLTI2MSwgICAgNTQsICAtMjYxLCAg
ICA4OCwKKyAgICAgIDYyLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEzNzAsICAgIDU5
LCAgICA5MSwgIC0yNjEsICAgIDM2LAorICAgICAtNTAsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAt
MjYxLCAgLTI2MSwgICAgNjMsICAxMzcwLCAgLTI2MSwgICAyOTMsCisgICAgLTI2MSwgIC0yNjEs
ICAtMjYxLCAgLTI2MSwgICAgOTEsICAxMzcwLCAgIC0xMiwgIC0yNjEsICAgODU2LCAgMTA1MSwK
KyAgICAgIDc3LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgLTI2
MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgIC0xNCwgIC0yNjEsICAtMjYxLCAg
LTI2MSwgICAgODQsICAgLTQ0LCAgMTExNiwgICAgOTUsCisgICAgLTI2MSwgIDEwNTEsICAgIDUz
LCAgICAgMywgIC0yNjEsICAgLTM2LCAgICA4OSwgIC0yNjEsICAtMjYxLCAgLTI2MSwKKyAgICAg
MTA0LCAgIDEwNywgICAtNDUsICAtMjYxLCAgICA5NiwgIC0yNjEsICAtMjYxLCAgICA5MSwgIDEx
ODQsICAtMjYxLAorICAgIDEzNzAsICAgIDkyLCAgICA5MywgIC0yNjEsICAgIDk4LCAgIDEwMSwg
ICAgOTQsICAgOTIxLCAgIDEwNSwgICAxMDIsCisgICAgLTI2MSwgIC0yNjEsICAgIDcyLCAgLTI2
MSwgIC0yNjEsICAgICA5LCAgLTI2MSwgICAtNjEsICAgIDQyLCAgLTI2MSwKKyAgICAtMjYxLCAg
LTI2MSwgIC0yNjEsICAgMzc2LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAxMDYsICAt
MjYxLAorICAgIC0yNjEsICAgOTg2LCAgMTA1MSwgIC0yNjEsICAgMTAzLCAgLTI2MSwgIC0yNjEs
ICAtMjYxLCAgLTI2MSwgICAtNDEsCisgICAgLTI2MSwgIC0yNjEsICAxMDUxLCAgMTQwNywgIC0y
NjEsICAtMjYxLCAgMTA1MSwgICAxMTAsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgMTA1MSwg
IDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLAor
ICAgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgLTI2MSwgICAxMDksICAgIDIz
LCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgIDEyMjcsICAtMjYxLCAgLTI2MSwgICAxMTEsICAt
MjYxLCAgMTA1MSwgIC0yNjEsICAtMjYxLCAgICAyNSwKKyAgICAtMjYxLCAgLTI2MSwgICA0NTks
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAxMDUxLAorICAgIC0y
NjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAtMjYxLCAgIDExNCwgIC0yNjEsICAtMjYxLCAgLTI2
MSwgICAxMTUsCisgICAgIDExMiwgICAgNzcsICAgMTE2LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAg
LTI2MSwgIC0yNjEsICAgIDUzLCAgICA1MywKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYx
LCAgIC0zNiwgICAtMzYsICAtMjYxLCAgIDEwNCwgICAxMDcsICAgIDc2LAorICAgIDEwNTEsICAg
IDkxLCAgLTI2MSwgIC0yNjEsICAgMTQ1LCAgICA1NCwgICA2MjUsICAgNzA4LCAgICAtNiwgIC0y
NjEsCisgICAgIDc5MSwgICA0NTksICAtMjYxLCAgLTI2MSwgICAxMTcsICAtMjYxLCAgLTI2MSwg
IDEwNTEsICAgMTIwLCAgLTI2MSwKKyAgICAgMTI0LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2
MSwgICA3OTEsICAgMTExLCAgIDExMiwgICAgOTEsICAgMTI1LAorICAgICAxMjIsICAtMjYxLCAg
LTI2MSwgIC0yNjEsICAxMDUxLCAgLTI2MSwgICAxMTgsICAgMTI4LCAgIDE4MCwgIC0yNjEsCisg
ICAgIDEyNiwgICA1NDIsICAtMjYxLCAgICAtNSwgIDEwNTEsICAgNTQyLCAgIDExMSwgIDEwNTEs
ICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgIDEyMywgICAxMTIsICAtMjYxLCAgLTI2MSwgIC0y
NjEsICAtMjYxCiB9OwogCiAvKiBZWVBHT1RPW05URVJNLU5VTV0uICAqLwogc3RhdGljIGNvbnN0
IHl5dHlwZV9pbnQxNiB5eXBnb3RvW10gPQogewotICAgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0y
NjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgIDg1LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2Niwg
IC0yNjYsICAgLTQ0LCAgLTI2NiwgICAtMTUsICAtMjY2LCAgIC01NSwgICAtMTksICAtMjY2LCAg
LTI2NiwKLSAgICAtMjY2LCAgICA3MiwgICAgNzAsICAgIDczLCAgLTI2NiwgICAtNjYsICAgLTgz
LCAgLTI2NiwgICAtOTIsICAgLTczLAotICAgICAgMTMsICAgIDE0LCAgLTI2NiwgIC0yNjYsICAt
MjY2LCAgIDE4MCwgICAyMDYsICAgMjAxLCAgIDE4NCwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNDEs
ICAgLTI1LCAgIC0zMCwgICAyNjIsICAgIC00LCAgICAgMCwgIC0yNjYsICAtMjY2LCAgLTI2NiwK
LSAgICAgMTQzLCAgLTEyMiwgIC0yNjYsICAgIDIyLCAgLTE0NSwgICAgMTYsICAtMTQ0LCAgLTIy
NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgLTE3LCAgLTI2NSwgIC0yNjYsICAtMjY2LCAg
IC01NCwgICAgNjMsICAgIDIwLCAgLTI2NiwgIC0yNjYsCi0gICAgICAgNCwgIC0yNjYsICAtMjY2
LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAg
MjMxLCAgLTI2NiwgIC0yNjYKKyAgICAtMjYxLCAgIC0yNCwgIC0yNjEsICAtMjYxLCAgLTI2MSwg
IC0yNjEsICAtMjYxLCAgLTI2MSwgICAgMzQsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgLTI2
MSwgICAgMzIsICAtMjYxLCAgIC0zMywgIC0yNjEsICAgLTI3LCAgIC0yNiwgIC0yNjEsCisgICAg
LTI2MSwgIC0yNjEsICAgIDE0LCAgICAxNiwgICAgMTgsICAtMjYxLCAgIC02NiwgICAtODcsICAt
MjYxLCAgIC05MiwKKyAgICAgLTg1LCAgICAxMSwgICAgMTIsICAtMjYxLCAgLTI2MSwgIC0yNjEs
ICAgMTQxLCAgIDE1MCwgICAxNjEsICAgMTQzLAorICAgIC0yNjEsICAtMjYxLCAgLTIzMSwgICAg
IDUsICAgLTMwLCAgIDIyNCwgICAtMTgsICAgICAwLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwg
ICAxMDAsICAtMTE5LCAgLTI2MSwgICAtMTcsICAtMTU2LCAgIC0yNSwgIC0xNDUsICAtMjQzLCAg
LTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgICAtNjQsICAtMjYwLCAgLTI2MSwgIC0yNjEsICAgLTUy
LCAgICAyMSwgICAtMjIsICAtMjYxLAorICAgIC0yNjEsICAgLTM5LCAgLTI2MSwgIC0yNjEsICAt
MjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgICAxOTEs
ICAtMjYxLCAgLTI2MQogfTsKIAogLyogWVlUQUJMRVtZWVBBQ1RbU1RBVEUtTlVNXV0uICBXaGF0
IHRvIGRvIGluIHN0YXRlIFNUQVRFLU5VTS4gIElmCiAgICBwb3NpdGl2ZSwgc2hpZnQgdGhhdCB0
b2tlbi4gIElmIG5lZ2F0aXZlLCByZWR1Y2UgdGhlIHJ1bGUgd2hpY2gKICAgIG51bWJlciBpcyB0
aGUgb3Bwb3NpdGUuICBJZiB6ZXJvLCBkbyB3aGF0IFlZREVGQUNUIHNheXMuCiAgICBJZiBZWVRB
QkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCi0jZGVmaW5lIFlZVEFCTEVfTklORiAtMTY1Cisj
ZGVmaW5lIFlZVEFCTEVfTklORiAtMTY2CiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5dGFi
bGVbXSA9CiB7Ci0gICAgICA0NCwgICAgNzcsICAgMTY3LCAgIDE2MywgICAxMjEsICAgMTk5LCAg
ICA1MiwgICAyMjAsICAgMjg1LCAgIDE5MSwKLSAgICAgIDY4LCAgICA2NCwgICAxNjIsICAgIDMy
LCAgICAzMywgICAyMjQsICAgMjc1LCAgICA0OSwgICAgNjUsICAgMTIxLAotICAgICAxODEsICAg
IDY2LCAgIDE4MiwgICAxNzYsICAgIDU4LCAgICA1MCwgICAxMDgsICAgMjY5LCAgIDMwMSwgICAg
IDYsCi0gICAgICAgNywgICAyNzUsICAgIDY0LCAgICA4MSwgICAxODMsICAgMTg0LCAgIDIxNywg
ICAgNTMsICAgIDY5LCAgIDIxOCwKLSAgICAgIDQ0LCAgIDEwOCwgICAgNDQsICAgMjA3LCAgIDE5
MiwgICAxMjYsICAgIDQ0LCAgICA3MywgICAxNjUsICAgMTY2LAotICAgICAyNDksICAgIDQ0LCAg
ICA4MSwgICAyNTAsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDIzLCAgICAyNCwgICAgMzIsCi0g
ICAgICAzMywgICAxNTksICAgMjk1LCAgICA0NCwgICAgNTQsICAgMTc4LCAgIDI5NSwgICAxNzMs
ICAgMTYwLCAgIDE4NSwKLSAgICAgMTg2LCAgICA1NiwgICAxOTksICAgMTc0LCAgICA1OCwgICAg
NDQsICAgMTQ2LCAgIDE2MywgICAyMjgsICAgICA2LAotICAgICAgIDcsICAgIDg0LCAgICA0NCwg
ICAgODUsICAgMjE3LCAgICA1NywgICAyMjMsICAgMjU2LCAgIDE2OCwgICAxNjksCi0gICAgICA4
NiwgICAyMzIsICAgMjI2LCAgIDEyMSwgICAtNzUsICAgMTI2LCAgICA2NywgICAxMjYsICAgMjE3
LCAgICA3MCwKLSAgICAgMjQ2LCAgIDIxMSwgICAyMTIsICAgMjEzLCAgICA1OSwgICAgNjAsICAg
IDYxLCAgICAyMywgICAgMjQsICAgMTcwLAotICAgICAyMTQsICAgMjczLCAgIDI1NSwgICAxNzEs
ICAgMjIwLCAgIDEwOCwgICAyOTgsICAgMjE3LCAgICA3NCwgICAtMjUsCi0gICAgIDIxNSwgICAg
NzAsICAgMjE3LCAgIDE3OSwgICAxODAsICAgIDQ0LCAgICA3NiwgICAgNDQsICAgMjM3LCAgIDIz
OCwKLSAgICAgMjM5LCAgIDI0MCwgICAgNDksICAgMjU5LCAgIDI2MCwgICAyMzMsICAgMjM0LCAg
IDEwOCwgICAxMDgsICAgMTA4LAotICAgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4
LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDI2MSwgICAzMDIsCi0gICAgICA4MywgICAxNDYsICAg
ICAyLCAgICAgMywgICAgIDQsICAgMTIxLCAgICA1OSwgICAgNjAsICAgIDYxLCAgIDE4NywKLSAg
ICAgMTg4LCAgIDIxNywgICAyNjQsICAgMTI0LCAgIDEyNiwgICAyNzQsICAgMjM1LCAgIDIzNiwg
ICAyNDEsICAgMjQyLAotICAgICAxNTYsICAgLTI2LCAgIDE4OSwgICAxNzIsICAgMTk1LCAgIDI2
NSwgICAxNzcsICAgMTA4LCAgIDE5MCwgICAyMDAsCi0gICAgIDI3NCwgICAyNzksICAgMTIxLCAg
IDE5MywgICAyMDMsICAgMjAxLCAgIDIwNCwgICAyMDgsICAgMjA1LCAgIDI5MCwKLSAgICAgMjE3
LCAgLTExNiwgICAyMjEsICAgMjA5LCAgICA0NCwgICAyMjUsICAgMjQ4LCAgLTE2NCwgICAyNjgs
ICAgMjk5LAotICAgICAgNTgsICAgICAyLCAgICAgMywgICAgIDQsICAgMTA4LCAgICAgNiwgICAg
IDcsICAgICA4LCAgICAgOSwgICAgMTAsCi0gICAgIDE0NiwgICAxNjMsICAgMjYyLCAgIDI2Mywg
ICAtMjcsICAgMjY3LCAgIDI3OCwgICAyODEsICAgIDExLCAgICAxMiwKLSAgICAgIDEzLCAgICAx
NCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIy
LAotICAgICAyODAsICAgMjg3LCAgIDI4OCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
Mjg5LCAgICAyNywgICAgMjgsCi0gICAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgs
ICAgIDg5LCAgICA5MCwgICAgOTEsICAgMjkxLCAgIDI5MiwKLSAgICAgIDkyLCAgICA5MywgICAy
OTMsICAgMTQ2LCAgIDE0NiwgICAyOTQsICAgMjMxLCAgIDE0NiwgICAxNDYsICAgMzAzLAotICAg
ICAyNDQsICAgMjQzLCAgIDE1NywgICAgNzgsICAgMjQ1LCAgICA4MiwgICAxNTgsICAgIDUxLCAg
IDE5NCwgICAgOTQsCi0gICAgIDI3MCwgICAyNjYsICAgMTQ2LCAgIDI1OCwgICAyNzEsICAgMzAw
LCAgIDI4MiwgICAgNzIsICAgICAwLCAgICAgMCwKLSAgICAgIDk1LCAgICA5NiwgICAgIDAsICAg
IDk3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDYsICAgICAwLAotICAgICAgIDAs
ICAgICAwLCAgIDE0NiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwg
ICAgIDcsCi0gICAgICAgOCwgICAgIDksICAgIDEwLCAgIDEyOSwgICAxMzAsICAgMTMxLCAgICAg
MCwgICAxMzIsICAgMTMzLCAgIDEzNCwKLSAgICAgMTM1LCAgICAxMSwgICAgMTIsICAgIDEzLCAg
ICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAsICAgIDIx
LCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
Ci0gICAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAg
ODgsICAgIDg5LCAgICA5MCwKLSAgICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5Mywg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgNDQsICAgIDU1LCAgIDE2
NSwgICAxNjQsICAgMTY5LCAgICA4MCwgICAyMjYsICAgMTIzLCAgIDIyMiwgICAyMDAsCisgICAg
ICA3MSwgICAgMzIsICAgIDMzLCAgIDI3MiwgICAxOTMsICAgIDcwLCAgIDI4OCwgICAgNDksICAg
MTg1LCAgIDE4NiwKKyAgICAgIDU2LCAgIDE3OCwgICAxMjMsICAgIDg4LCAgICA3MiwgICAgNTAs
ICAgIDUyLCAgICA1MywgICAxNzUsICAgMjc4LAorICAgICAgODksICAgMjI4LCAgICA1OCwgICAg
NzYsICAgMTc2LCAgICA4NCwgICAzMDQsICAgMjE5LCAgIDE3MCwgICAxNzEsCisgICAgICA0NCwg
ICAgNjYsICAgIDQ0LCAgICA4NiwgICAyNzgsICAgMjA5LCAgICA0NCwgICAxMjcsICAgMjk4LCAg
IDE5NCwKKyAgICAgIDU5LCAgICA0NCwgICAyOTgsICAgMTg3LCAgIDE4OCwgICAgODQsICAgIDU0
LCAgICAzMiwgICAgMzMsICAgMTcyLAorICAgICAxNTgsICAgMTYxLCAgICA3MywgICAxNzMsICAg
IDY2LCAgICA0NCwgICAyNzYsICAgMzAxLCAgIDE2MiwgICAgNjksCisgICAgICA1MywgICAgNjcs
ICAgMjE5LCAgIDIxOSwgICAgNjgsICAgMTY1LCAgIDIyNSwgICAgNDQsICAgIDYwLCAgIDE0OCwK
KyAgICAgMjMwLCAgICA3OCwgICAyMDAsICAgICA2LCAgICAgNywgICAgNDQsICAgMTgzLCAgIDIx
OSwgICAxODQsICAgMjM1LAorICAgICAyMjAsICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAg
IDEyMywgICAgIDYsICAgICA3LCAgIDEyNywgICAgNDksCisgICAgIDEyNywgICAyNTEsICAgMjQ5
LCAgIDIxOSwgICAyNTIsICAgMTEwLCAgIDI1OSwgICAgODcsICAgIDYxLCAgICA2MiwKKyAgICAg
IDYzLCAgICAyMywgICAgMjQsICAgLTI3LCAgIDI1OCwgICAgNzMsICAgMjIyLCAgICAgMiwgICAg
IDMsICAgICA0LAorICAgICAxMTAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDIzLCAgICAyNCwg
ICAxNjcsICAgMTY4LCAgICA0NCwgICAgNzksCisgICAgICA0NCwgICAyNjIsICAgMjYzLCAgIDIx
MywgICAyMTQsICAgMjE1LCAgICA1MiwgICAgNTMsICAgMjY0LCAgIDE4MSwKKyAgICAgMTgyLCAg
IDMwNSwgICAyMTYsICAgMTgwLCAgIDEyNiwgICAxODksICAgMTkwLCAgIC03NiwgICAtMjgsICAg
MjMzLAorICAgICAyMzgsICAgMjM5LCAgIDIxNywgICAxNDgsICAgMjE5LCAgIDI2NywgICAxNzQs
ICAgMTIzLCAgIDI0MCwgICAyNDEsCisgICAgIDI0MiwgICAyNDMsICAgMTkxLCAgIDI0NCwgICAy
NDUsICAgMjY4LCAgIDE3OSwgICAxOTIsICAgMjc3LCAgIDIwNSwKKyAgICAgMTk1LCAgIDEyNywg
ICAyMDYsICAgMjAyLCAgIDIwMywgICAyMDcsICAgMjEwLCAgIDIyNywgICAyMTEsICAgMjIzLAor
ICAgICAyODIsICAtMTE3LCAgIDI1MCwgICAyNzcsICAgMTIzLCAgIDI3MCwgIC0xNjUsICAtMTM4
LCAgIDI2NSwgICAyNjYsCisgICAgIDIxOSwgICAyODEsICAgMjkzLCAgIDExMCwgICAyODMsICAg
Mjg0LCAgIDI5NiwgICAyOTEsICAgMjkyLCAgIDI5NCwKKyAgICAgMjk1LCAgICA0NCwgICAzMDIs
ICAgMjcxLCAgIDMwNiwgICAyNDYsICAgMjk3LCAgIDIzNCwgICAyNDcsICAgIDgxLAorICAgICAx
NjUsICAgMjQ4LCAgIDE0OCwgICAyMzYsICAgMjM3LCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDEx
MCwgICAxMTAsCisgICAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTEwLCAg
IDE1OSwgICAgODUsICAgMTYwLCAgICA1MSwKKyAgICAgMjAxLCAgIDMwMywgICAyNzMsICAgMjYx
LCAgIDI2OSwgICAyNzQsICAgMjg1LCAgICA3NSwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzNywg
ICAxMzgsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5
NiwgICAgIDAsICAgIDk3LCAgICAgMSwgICAgIDIsICAgICAzLAotICAgICAgIDQsICAgICA1LCAg
ICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTI5LCAgIDEzMCwgICAxMzEsCi0g
ICAgICAgMCwgICAxMzIsICAgMTMzLCAgIDEzNCwgICAxMzUsICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIDE0LCAgICAxNSwKLSAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgMTM2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsCi0gICAgICAz
MSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkz
LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI5MCwgICAxMTAsICAg
MTQ4LCAgIDE0OCwgICAgIDAsICAgICAwLAorICAgICAxNDgsICAgMTQ4LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ4LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKKyAgICAgICAwLCAgICAgMCwgICAxMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgMTQ4LCAgICAgMCwgICAgIDAsICAgICAw
LCAgIDE0OCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsCisgICAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEzMSwgICAxMzIsICAgMTMzLCAgICAgMCwKKyAg
ICAgMTM0LCAgIDEzNSwgICAxMzYsICAgMTM3LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwg
ICAgMTUsICAgIDE2LAorICAgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAy
MiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsCisgICAgICAyNCwgICAgMjUsICAgIDI2LCAg
IDEzOCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwKKyAgICAgIDkx
LCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAs
ICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgMTM3LCAgIDIx
OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICA5NSwgICAgOTYsICAgICAw
LAotICAgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksCi0gICAgICAxMCwgICAxMjksICAgMTMwLCAgIDEzMSwgICAgIDAs
ICAgMTMyLCAgIDEzMywgICAxMzQsICAgMTM1LCAgICAxMSwKLSAgICAgIDEyLCAgICAxMywgICAg
MTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAotICAg
ICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAg
IDEzNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4
LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwKLSAgICAgICAwLCAgICA5MiwgICAgOTMsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzOSwg
ICAxNDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5
OCwgICAgIDAsICAgIDk5LCAgICAgMSwKKyAgICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAg
ICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMxLAorICAgICAxMzIsICAgMTMz
LCAgICAgMCwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAxMiwgICAgMTMs
CisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LAorICAgICAgMzAsICAgIDkwLCAgICAz
MSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsCisgICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgMTM5LCAgIDIyMSwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLCAgICA5NywgICAgOTgsCisgICAgICAgMCwg
ICAgOTksICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAg
ICAgOCwKKyAgICAgICA5LCAgICAxMCwgICAxMzEsICAgMTMyLCAgIDEzMywgICAgIDAsICAgMTM0
LCAgIDEzNSwgICAxMzYsICAgMTM3LAorICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCisgICAgICAyMSwgICAgMjIs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEzOCwK
KyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5
MiwgICAgOTMsICAgICAwLAorICAgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAg
IDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzNywgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAgMSwg
ICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsCi0gICAgICAgNiwgICAgIDcsICAgICA4LCAgICAg
OSwgICAgMTAsICAgMTI5LCAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwKLSAgICAgMTMzLCAg
IDEzNCwgICAxMzUsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAg
IDE3LAorICAgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgIDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwgICAg
OTksICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAgNywg
ICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEsICAgMTMyLCAgIDEzMywgICAgIDAsICAgMTM0LAor
ICAgICAxMzUsICAgMTM2LCAgIDEzNywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1
LCAgICAxNiwgICAgMTcsCiAgICAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwKLSAgICAgIDI1LCAgICAyNiwgICAxMzYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LAotICAgICAg
ODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAg
MCwgICAgIDAsCisgICAgICAyNSwgICAgMjYsICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwKKyAgICAgIDkyLCAgICA5MywgICAgIDAsICAgICAw
LCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDc2LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEz
OSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLAotICAgICAgIDIsICAgICAzLCAg
ICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMjksCi0g
ICAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LCAgIDEzNSwgICAgMTEs
ICAgIDEyLCAgICAxMywKLSAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAg
MTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAz
MCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAw
LCAgICA5MiwKLSAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsCi0gICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICA5
NSwKLSAgICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAg
ICAgNSwgICAgIDYsICAgICA3LAotICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgMTEsICAg
IDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKLSAg
ICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwg
ICAgMjUsICAgIDI2LAotICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4
NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsCi0gICAgICA5MSwgICAgIDAsICAgICAwLCAg
ICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA3OSwgICAgIDAs
ICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5OCwgICAg
IDAsICAgIDk5LCAgICAgMSwgICAgIDIsCisgICAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwg
ICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMxLCAgIDEzMiwKKyAgICAgMTMzLCAgICAg
MCwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0
LAorICAgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAg
IDIyLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKKyAgICAgIDkwLCAgICAzMSwgICAg
OTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLAorICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTQxLCAgICA5NywgICAgOTgsICAgICAwLAorICAgICAgOTks
ICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwg
ICAgIDksCisgICAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAxMSwKKyAgICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAg
ICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAorICAgICAgMjIsICAgICAw
LCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcs
CisgICAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5MiwgICAg
OTMsICAgICAwLCAgICAgMCwKKyAgICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsCisgICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE0MSwKKyAgICAgIDk3LCAgICA5OCwgICAgIDAsICAgIDk5LCAgICA2MCwgICAgIDIs
ICAgICAzLCAgICAgNCwgICAgIDAsICAgICA2LAorICAgICAgIDcsICAgICA4LCAgICAgOSwgICAg
MTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwg
ICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAg
ICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAgICA5MywgICAgIDAs
ICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK
ICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgMTM5
LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAg
ICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAg
MTAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LCAgICAgMCwg
ICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsCiAgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAx
NywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKICAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAg
IDI5LAotICAgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEs
ICAgICAwLCAgICAgMCwgICAgOTIsCi0gICAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLAot
ICAgICAgIDAsICAgMTYxLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgOTUsCi0gICAgICA5NiwgICAgIDAsICAgIDk3LCAgICAxMSwgICAgMTIsICAg
IDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKLSAgICAgIDE4LCAgICAxOSwgICAgMjAs
ICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAg
MjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAz
MSwgICAgODgsCi0gICAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAg
ICA5MywgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkx
LCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LAogICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDIw
NiwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLAotICAgICAgMTIsICAgIDEzLCAg
ICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsCi0g
ICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYs
ICAgICAwLCAgICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAg
ODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLAotICAgICAgIDAsICAgIDkyLCAgICA5Mywg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAw
LCAgICAgMCwKKyAgICAgMTYzLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgOTcsICAgIDk4LAorICAgICAgIDAsICAgIDk5LCAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCisgICAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAy
NSwKKyAgICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAg
ICAzMSwgICAgOTEsICAgIDkyLAorICAgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgIDk0LCAgICAgMCwgICAgIDAsICAgMjIyLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwg
ICAgIDAsICAgICAwLAotICAgICAgIDAsICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAx
MSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCi0gICAgICAxNiwgICAgMTcsICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAw
LCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDg3LAotICAgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAg
IDAsICAgIDkyLCAgICA5MywgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKKyAgICAgICAwLCAgICAg
MCwgICAyMDgsICAgIDk3LCAgICA5OCwgICAgIDAsICAgIDk5LCAgICAxMSwgICAgMTIsICAgIDEz
LAorICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAg
IDIxLCAgICAyMiwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUs
ICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwKKyAgICAgIDMwLCAgICA5MCwgICAg
MzEsICAgIDkxLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LAogICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICA4LCAgICAgOSwgICAgMTAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwgICAgOTYsICAgICAwLAotICAgICAgOTcs
ICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDI1LCAgIDE3NSwKLSAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLAotICAgICAgOTEsICAgICAw
LCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
OTYsICAgICAwLCAgICAgMCwKKyAgICAgMjI0LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LAorICAgICAgIDAsICAgIDk5LCAgICAx
MSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCisgICAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAyNSwKKyAgICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLAorICAgICAgOTMsICAgICAwLCAgICAgMCwgICAg
OTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgOTQsICAgICAyLCAgICAgMywgICAgIDQsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgICAgMCwgICAgOTUsICAg
IDk2LCAgICAgMCwgICAgOTcsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwK
LSAgICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAy
NSwgICAgMjYsICAgICAwLAotICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgICAwLCAg
ICAzMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICA4
LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAg
MTYsICAgIDE3LAotICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwg
ICAxOTgsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAyNSwgICAgMjYsICAgICAwLCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMCwKLSAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDcxLAotICAgICAgIDAsICAgICAwLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUs
ICAgICA2LCAgICAgNywgICAgIDgsCi0gICAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI0NywKLSAgICAgIDExLCAgICAxMiwg
ICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLAot
ICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1
LCAgICAyNiwgICAgIDAsCi0gICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAg
IDMxLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKKyAgICAgICAwLCAgICAgMCwgICAgOTYs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLAorICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgIDExLCAgICAx
MiwgICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAyNSwgICAxNzcsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LAorICAgICAgMzAsICAg
IDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAg
OTUsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDIsICAgICAzLAorICAgICAgIDQsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICA5NywgICAgOTgsCisg
ICAgICAgMCwgICAgOTksICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIDE0LCAgICAxNSwKKyAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAyNSwg
ICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsCisgICAgICAz
MSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5
LCAgICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMTEsICAgIDEyLAorICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYs
ICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCisgICAgIDE5OSwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAy
OCwKKyAgICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzQsICAgICAw
LCAgICAgMCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsCiAgICAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwg
ICAgMTUsICAgIDE2LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAyNTMsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCiAgICAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywKICAgICAgIDI0
LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAs
ICAgIDMxLAotICAgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDgsICAgICA5LCAgICAxMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywKLSAgICAgIDE0LCAgICAx
NSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAw
LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAg
IDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgOCwgICAgIDks
ICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAotICAg
ICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsICAgMjI5LCAgICAzMSwKLSAgICAgICA4LCAgICAgOSwgICAgMTAsICAg
MjMwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDEs
ICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwg
ICAgMTAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDExLCAgICAxMiwKKyAgICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAg
ICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAorICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgs
CisgICAgICAyOSwgICAgMzAsICAgICAwLCAgICAzMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAg
IDAsICAgICAwLCAgICAgMCwKKyAgICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksCiAgICAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDI1LCAgICAyNiwKLSAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAs
ICAgIDMxCisgICAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgICAwLCAgICAz
MSwgICAgIDgsICAgICA5LCAgICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLAorICAgICAgMTMsICAgIDE0
LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAg
IDAsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAyMzEsICAgMjMyLCAgICAgOCwg
ICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCisgICAg
ICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAg
ICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcs
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgICAwLAorICAgICAgMzEKIH07CiAKIHN0YXRpYyBjb25z
dCB5eXR5cGVfaW50MTYgeXljaGVja1tdID0KIHsKLSAgICAgICAwLCAgICA1NSwgICAgOTQsICAg
IDg2LCAgICA3MCwgICAxMjcsICAgIDQ1LCAgIDE1MSwgICAyNzMsICAgIDYwLAotICAgICAgNDAs
ICAgIDM2LCAgICA4NSwgICAgIDAsICAgICAwLCAgIDE2MCwgICAyNTcsICAgIDM3LCAgICA3OSwg
ICAgODUsCi0gICAgICA4NCwgICAgODIsICAgIDg2LCAgIDEwNiwgICAgIDMsICAgIDQ1LCAgICA3
MCwgICAyNTMsICAgMjkzLCAgICAgOCwKLSAgICAgICA5LCAgIDI3MiwgICAgNTcsICAgIDYzLCAg
ICA1NSwgICAgNTYsICAgIDc5LCAgICA3NiwgICAgNDIsICAgIDgyLAotICAgICAgNDAsICAgIDg1
LCAgICA0MiwgICAxMzUsICAgIDk1LCAgICA3NSwgICAgNDYsICAgIDUxLCAgICA5MiwgICAgOTMs
Ci0gICAgICA3OSwgICAgNTEsICAgIDgyLCAgICA4MiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAg
MzYsICAgIDM3LCAgICA0NiwKLSAgICAgIDQ2LCAgICA3NCwgICAyODgsICAgIDYzLCAgICA4Miwg
ICAxMDksICAgMjkyLCAgICA3MywgICAgODEsICAgIDkwLAotICAgICAgOTEsICAgIDczLCAgIDE5
NCwgICAgNzksICAgICAzLCAgICA3NSwgICAgNzYsICAgMTYwLCAgIDE3MCwgICAgIDgsCi0gICAg
ICAgOSwgICAgNzIsICAgIDgyLCAgICA3NCwgICAgNzksICAgIDc5LCAgIDE1OSwgICAgODIsICAg
IDUzLCAgICA1NCwKLSAgICAgIDgxLCAgIDE3NCwgICAgNzMsICAgMTU5LCAgICA3MywgICAxMjUs
ICAgIDQ1LCAgIDEyNywgICAgNzksICAgIDc0LAotICAgICAxOTIsICAgIDYyLCAgICA2MywgICAg
NjQsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgNzQsCi0gICAgICA3MSwg
ICAgNzMsICAgMjA0LCAgICA3OCwgICAyNTgsICAgMTU5LCAgICA3MywgICAgNzksICAgIDc2LCAg
ICA3MiwKLSAgICAgIDgxLCAgICA3NCwgICAgNzksICAgIDg3LCAgICA4OCwgICAxMjUsICAgIDc2
LCAgIDEyNywgICAxODMsICAgMTg0LAotICAgICAxODUsICAgMTg2LCAgICAzNywgICAyMTYsICAg
MjE3LCAgIDE3OSwgICAxODAsICAgMTgxLCAgIDE4MiwgICAxODMsCi0gICAgIDE4NCwgICAxODUs
ICAgMTg2LCAgIDE4NywgICAxODgsICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMjIxLCAgIDI5NCwK
LSAgICAgIDQ1LCAgIDE1MSwgICAgIDQsICAgICA1LCAgICAgNiwgICAyMjEsICAgIDMzLCAgICAz
NCwgICAgMzUsICAgIDU3LAotICAgICAgNTgsICAgIDc5LCAgICA4MCwgICAgODIsICAgMTk0LCAg
IDI1NywgICAxODEsICAgMTgyLCAgIDE4NywgICAxODgsCi0gICAgICA0NSwgICAgNzIsICAgIDU5
LCAgICA3MywgICAgNDUsICAgMjQ4LCAgICA3MiwgICAyMjEsICAgIDYxLCAgICA4MiwKLSAgICAg
MjcyLCAgIDI2NCwgICAyNDgsICAgIDc1LCAgICA3MiwgICAgODIsICAgIDcyLCAgICA3MiwgICAg
ODIsICAgMjgxLAotICAgICAgNzksICAgIDcyLCAgICA3NCwgICAgNzcsICAgMTk0LCAgICA3NSwg
ICAgNzQsICAgIDc2LCAgIDI1MiwgICAyOTEsCi0gICAgICAgMywgICAgIDQsICAgICA1LCAgICAg
NiwgICAyNDgsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwKLSAgICAgMjEwLCAg
IDI5NCwgICAgNzUsICAgIDc1LCAgICA3MiwgICAgNDAsICAgIDc1LCAgICA3MiwgICAgMjEsICAg
IDIyLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICAzMSwgICAgMzIsCi0gICAgICA3NSwgICAgNDUsICAgIDczLCAgICAzNiwgICAg
MzcsICAgIDM4LCAgICAzOSwgICAgNzcsICAgIDQxLCAgICA0MiwKLSAgICAgIDQzLCAgICA0NCwg
ICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgODIsICAgIDczLAot
ICAgICAgNTMsICAgIDU0LCAgICAxNiwgICAyNTMsICAgMjU0LCAgICA4MSwgICAxNzEsICAgMjU3
LCAgIDI1OCwgICAgODIsCi0gICAgIDE5MCwgICAxODksICAgIDgyLCAgICA1NywgICAxOTEsICAg
IDY0LCAgICA4MiwgICAgIDUsICAgMTI1LCAgICA3MiwKLSAgICAgMjU0LCAgIDI0OSwgICAyNzIs
ICAgMjEwLCAgIDI1NCwgICAyOTIsICAgMjcyLCAgICA0NiwgICAgLTEsICAgIC0xLAotICAgICAg
ODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDI4
OCwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgMjkyLCAgICAgMywgICAgIDQsICAgICA1LCAg
ICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAsICAg
IDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAg
MjksCi0gICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwg
ICAgMzcsICAgIDM4LCAgICAzOSwKLSAgICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0
NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LAotICAgICAgNTAsICAgIC0xLCAg
ICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisg
ICAgICAgMCwgICAgMjUsICAgIDg5LCAgICA4OCwgICAgOTYsICAgIDU3LCAgIDE2MiwgICAgNzMs
ICAgMTUzLCAgIDEyOCwKKyAgICAgIDQwLCAgICAgMCwgICAgIDAsICAgMjU2LCAgICA1OSwgICAg
MzksICAgMjc2LCAgICAzNywgICAgNTQsICAgIDU1LAorICAgICAgODEsICAgMTA4LCAgICA4OCwg
ICAgNzMsICAgIDQyLCAgICA0NSwgICAgNDUsICAgIDQ2LCAgICA3MiwgICAyNjAsCisgICAgICA4
MCwgICAgNzIsICAgIDcyLCAgICA1MSwgICAgNzgsICAgIDY1LCAgIDI5NiwgICAgNzgsICAgIDUy
LCAgICA1MywKKyAgICAgIDQwLCAgICAzNiwgICAgNDIsICAgIDY3LCAgIDI3NSwgICAxMzcsICAg
IDQ2LCAgICA3NywgICAyOTEsICAgIDk0LAorICAgICAgNzgsICAgIDUxLCAgIDI5NSwgICAgODks
ICAgIDkwLCAgICA4NSwgICAgNzUsICAgIDQ2LCAgICA0NiwgICAgNzMsCisgICAgICA4NCwgICAg
NzMsICAgIDczLCAgICA3NywgICAgNTksICAgIDY1LCAgICA3MiwgICAgNzIsICAgIDgwLCAgICA0
NSwKKyAgICAgIDQ2LCAgICA3OCwgICAgNzgsICAgIDc4LCAgICA4MSwgICAxNjIsICAgMTYxLCAg
ICA3NywgICAgIDMsICAgIDc5LAorICAgICAxNzIsICAgIDc1LCAgIDIwMSwgICAgIDgsICAgICA5
LCAgICA4NSwgICAgODMsICAgIDc4LCAgICA4NSwgICAxNzYsCisgICAgICA4MSwgICAgIDMsICAg
IDMzLCAgICAzNCwgICAgMzUsICAgMTYxLCAgICAgOCwgICAgIDksICAgMTI4LCAgICAzNywKKyAg
ICAgMTMwLCAgICA3OCwgICAxOTQsICAgIDc4LCAgICA4MSwgICAgNzMsICAgIDgxLCAgICA3MSwg
ICAgMzMsICAgIDM0LAorICAgICAgMzUsICAgIDM2LCAgICAzNywgICAgNzEsICAgMjA2LCAgICA3
MywgICAyNjEsICAgICA0LCAgICAgNSwgICAgIDYsCisgICAgICA4OCwgICAgMzMsICAgIDM0LCAg
ICAzNSwgICAgMzYsICAgIDM3LCAgICA5NCwgICAgOTUsICAgMTI4LCAgICA3NSwKKyAgICAgMTMw
LCAgIDIxOCwgICAyMTksICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDQ1LCAgICA0NiwgICAyMjMs
ICAgIDg2LAorICAgICAgODcsICAgMjk3LCAgICA3MCwgICAxMTEsICAgIDgxLCAgICA1NiwgICAg
NTcsICAgIDcyLCAgICA3MSwgICAxNzMsCisgICAgIDE4MywgICAxODQsICAgIDgwLCAgIDE1Mywg
ICAgNzgsICAgIDc5LCAgICA3MiwgICAyMjMsICAgMTg1LCAgIDE4NiwKKyAgICAgMTg3LCAgIDE4
OCwgICAgNTgsICAgMTg5LCAgIDE5MCwgICAyNTAsICAgIDcxLCAgICA2MCwgICAyNjAsICAgIDcx
LAorICAgICAgNzQsICAgMjAxLCAgICA3MSwgICAgODEsICAgIDgxLCAgICA4MSwgICAgNzEsICAg
IDc0LCAgICA3NiwgICAgNzMsCisgICAgIDI2NywgICAgNzEsICAgIDczLCAgIDI3NSwgICAyNTAs
ICAgIDQwLCAgICA3NSwgICAgNzEsICAgIDc0LCAgICA3NCwKKyAgICAgIDc4LCAgICA3NCwgICAy
ODQsICAgMTYxLCAgICA3NCwgICAgNzEsICAgIDE2LCAgICA3MiwgICAgNzYsICAgIDgxLAorICAg
ICAgNzIsICAgMjAxLCAgIDI5NCwgICAyNTUsICAgIDgxLCAgIDE5MSwgICAgODAsICAgMTczLCAg
IDE5MiwgICAgNTksCisgICAgIDI5NywgICAxOTMsICAgMjEyLCAgIDE4MSwgICAxODIsICAgMTgz
LCAgIDE4NCwgICAxODUsICAgMTg2LCAgIDE4NywKKyAgICAgMTg4LCAgIDE4OSwgICAxOTAsICAg
MTkxLCAgIDE5MiwgICAxOTMsICAgIDg1LCAgICA2NiwgICAgODUsICAgICA1LAorICAgICAxMzAs
ICAgMjk1LCAgIDI1NywgICAyMTIsICAgMjUxLCAgIDI1NywgICAyNzUsICAgIDQ2LCAgICAtMSwg
ICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDc2LCAgICA3NywgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0x
LCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgICAzLCAgICAgNCwgICAgIDUs
Ci0gICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwKLSAgICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAotICAgICAgMjYsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAg
ICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAg
IDQ0LCAgICA0NSwKLSAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEs
ICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgMjc4LCAgIDIyMywgICAyNTYsICAgMjU3LCAgICAtMSwgICAgLTEsCisgICAgIDI2MCwg
ICAyNjEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyNzUsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgIDI1MCwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAyOTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgMjk1LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwK
KyAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAx
NCwgICAgMTUsICAgIC0xLAorICAgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAg
ICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCisgICAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwKKyAgICAg
IDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAg
NDUsICAgIDQ2LAorICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLCAgICA1Miwg
ICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAg
IC0xLAotICAgICAgNzYsICAgIDc3LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIs
ICAgIDgzLCAgICA4NCwgICAgLTEsCi0gICAgICA4NiwgICAgIDMsICAgICA0LCAgICAgNSwgICAg
IDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKLSAgICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAot
ICAgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgMzEsCi0gICAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAg
IDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwKLSAgICAgIDQyLCAgICA0MywgICAgNDQs
ICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLAotICAgICAg
LTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDc1LCAgICA3NiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwgICAgODUsICAgICAzLAorICAgICAgIDQsICAg
ICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAg
MTMsCisgICAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAg
ICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsCisg
ICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEs
ICAgIDUyLCAgICA1MywKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsCisgICAgICAt
MSwgICAgNzUsICAgIDc2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEsICAgIDgy
LCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCisgICAgICAyMSwgICAg
MjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwKKyAgICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAg
ICAzOCwgICAgMzksICAgIDQwLAorICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1
LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsCisgICAgICAtMSwgICAgNTIsICAg
IDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAotICAgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA4MiwgICAgODMsICAgIDg0LCAg
ICAtMSwgICAgODYsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKKyAgICAgIDcx
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3NSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAorICAgICAgODEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAgMywgICAg
IDQsICAgICA1LCAgICAgNiwgICAgIDcsCiAgICAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwg
ICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywKICAgICAgIDE4LCAgICAx
OSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3
LAogICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAzNiwgICAgMzcsCiAgICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIs
ICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywKLSAgICAgIDQ4LCAgICA0OSwgICAg
NTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAg
ICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIC0xLAotICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4Niwg
ICAgIDMsCi0gICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwgICAgMTEsICAgIDEyLCAgICAxMywKLSAgICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAotICAgICAgMjQsICAgIDI1
LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEs
Ci0gICAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAg
NDEsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwg
ICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLAotICAgICAgNTQsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDcyLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLAotICAgICAgODQsICAgIC0xLCAgICA4NiwgICAg
IDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksCi0gICAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKLSAgICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAyNywgICAgMjgsICAgIDI5LAotICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksCi0gICAgICAtMSwgICAgNDEs
ICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwK
LSAgICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDc1LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwgICAgODUsICAgICAzLCAgICAgNCwKKyAgICAg
ICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LAorICAgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsCisgICAgICAyNSwgICAgMjYsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAg
ICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAg
IDQ0LAorICAgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEs
ICAgIDUyLCAgICA1MywgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0xLAor
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEsICAgIDgy
LCAgICA4MywgICAgLTEsCisgICAgICA4NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKKyAgICAgIDEyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLAorICAgICAg
MjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsCisgICAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAg
ICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwKKyAgICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1
LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLAorICAgICAgNTIsICAg
IDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA3MSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLAorICAgICAgODIsICAgIDgzLCAg
ICAtMSwgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgIDgsCisg
ICAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsCisgICAgICAz
OSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3
LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAg
LTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAt
MSwKLSAgICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAg
ICAyMSwgICAgMjIsICAgIDIzLAorICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKICAg
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAz
OSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsCi0gICAgICA0NCwgICAgNDUsICAgIDQ2LCAg
ICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywKLSAgICAgIDU0
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICA3MiwgICAgLTEsCi0gICAgICAtMSwgICAgNzUsICAgIDEwLCAgICAxMSwg
ICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MywKLSAgICAgIDg0LCAgICAt
MSwgICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3
LAotICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIs
ICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywKLSAgICAgIDQ4LCAgICA0OSwgICAg
NTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAg
ICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLCAg
ICA1MiwgICAgNTMsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLAotICAgICAgMTIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4Niwg
ICAgMjEsCi0gICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLAotICAgICAgNDIsICAgIDQz
LCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEs
Ci0gICAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLAorICAgICAgNzQsICAgIDEwLCAgICAx
MSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsCisgICAg
ICAtMSwgICAgODUsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LAorICAgICAgMzksICAgIC0xLCAgICA0MSwgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCisgICAgICA0OSwg
ICAgLTEsICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgNzIsICAgIC0xLCAgICAtMSwgICAgNzUsICAg
IDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgODMs
ICAgIDg0LCAgICAtMSwgICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwK
LSAgICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAt
MSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAg
ICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsCi0gICAgICA0NiwgICAgNDcsICAgIDQ4
LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwKKyAgICAg
IC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAg
MTIsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwg
ICAgODUsICAgIDIxLCAgICAyMiwgICAgMjMsCisgICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKKyAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAg
IDQzLAorICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEs
ICAgIC0xLCAgICA1MiwgICAgNTMsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgz
LCAgICA4NCwgICAgLTEsCi0gICAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LAotICAgICAg
LTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0
OCwgICAgNDksCi0gICAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLAorICAgICAgNzQsICAg
IDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAg
ODMsCisgICAgICAtMSwgICAgODUsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LAorICAgICAgMzksICAgIC0xLCAg
ICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCisg
ICAgICA0OSwgICAgLTEsICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICA3Miwg
ICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsCi0gICAgICAx
MSwgICAgMTIsICAgIC0xLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgLTEsICAgIC0x
LCAgICAtMSwKLSAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLAotICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsCi0gICAgICA0MSwgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAt
MSwKLSAgICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIy
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjksICAg
IDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICA3NywgICAgLTEsICAgIC0xLCAgICAtMSwKLSAg
ICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwg
ICAgNDYsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgIDAsCi0gICAgICAtMSwgICAgLTEsICAgICAzLCAg
ICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAgIDEx
LCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDc3LAotICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwKLSAgICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2
LAorICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAg
IDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMs
ICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0LCAgICAyNSwgICAg
MjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAg
ICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5
LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAgNCwg
ICAgIDUsCisgICAgICAgNiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAx
MiwgICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYsICAgIDI3
LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEs
CisgICAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAg
NDMsICAgIDQ0LCAgICAtMSwKKyAgICAgIDQ2LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLAorICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsCisgICAg
ICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAg
IDMxLCAgICAzMiwKKyAgICAgIDc2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgs
ICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAgICAgNDMsICAgIDQ0LCAgICAtMSwgICAg
NDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAgMCwgICAgLTEsICAgIC0xLCAgICAgMywgICAgIDQsICAgICA1LCAg
ICAgNiwKICAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCisgICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA3NiwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwK
ICAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDM2LAogICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsCi0gICAgICAgNCwgICAgIDUsICAgICA2
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKLSAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAg
MjIsICAgIDIzLAotICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwg
ICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0LCAg
ICAtMSwgICAgNDYsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMs
ICAgIDI0LCAgICAyNSwgICAgMjYsCi0gICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
MzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAzOCwg
ICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAot
ICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsCisgICAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLAorICAgICAg
MjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAg
ICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwKKyAgICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2
LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgMTAsICAg
IDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsCiAgICAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAgMjcsICAgIDI4LCAgICAyOSwKICAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LAotICAgICAgLTEsICAgIDQxLCAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYKKyAgICAgIC0xLCAgICA0MSwgICAgNDIs
ICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LCAgICAxMCwgICAgMTEsICAgIDEyLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAy
MSwgICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAgICAgNDMsICAg
IDQ0LCAgICA0NSwgICAgNDYsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwg
ICAgMjMsICAgIDI0LCAgICAyNSwKKyAgICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAg
ICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgLTEsCisg
ICAgICA0NgogfTsKIAogLyogWVlTVE9TW1NUQVRFLU5VTV0gLS0gVGhlIChpbnRlcm5hbCBudW1i
ZXIgb2YgdGhlKSBhY2Nlc3NpbmcKQEAgLTEzMDgsMzIgKzEzNDUsMzIgQEAgc3RhdGljIGNvbnN0
IHl5dHlwZV91aW50OCB5eXN0b3NbXSA9CiAgICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzNiwg
ICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDEsICAgIDQyLCAgICA0MywKICAgICAgIDQ0LCAgICA0
NiwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjksICAgMTMwLCAgIDEzNSwgICAxMzYsICAgMTM3
LAogICAgICAxMzgsICAgMTM5LCAgIDE0MCwgICAxNDEsICAgMTQyLCAgIDE0MywgICAxNzUsICAg
MTc2LCAgIDE3NywgICAgMzcsCi0gICAgICA0NSwgICAxNDAsICAgIDQ1LCAgICA3NiwgICAgODIs
ICAgMTc4LCAgICA3MywgICAgNzksICAgICAzLCAgICAzMywKLSAgICAgIDM0LCAgICAzNSwgICAx
MzIsICAgMTMzLCAgIDEzOCwgICAgNzksICAgIDgyLCAgICA0NSwgICAxMzksICAgMTQxLAotICAg
ICAgNzQsICAgICAwLCAgIDE3NiwgICAxNDEsICAgIDc2LCAgIDE0NSwgICAgNzYsICAgMTYxLCAg
IDEzMiwgICAxMzEsCi0gICAgIDEzNCwgICAxMzksICAgMTMzLCAgICA0NSwgICAgNzIsICAgIDc0
LCAgICA4MSwgICAgNDUsICAgIDQ3LCAgICA0OCwKLSAgICAgIDQ5LCAgICA1MCwgICAgNTMsICAg
IDU0LCAgICA3MiwgICAgODMsICAgIDg0LCAgICA4NiwgICAgOTcsICAgIDk4LAotICAgICAgOTks
ICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMTA0LCAgIDEwNSwgICAxMDYsICAgMTA3LCAgIDEwOCwg
ICAxMDksCi0gICAgIDExMCwgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTQsICAgMTE1LCAgIDEx
NiwgICAxMTcsICAgMTE4LCAgIDExOSwKLSAgICAgMTIwLCAgIDEyMSwgICAxMjUsICAgMTQyLCAg
ICA4MiwgICAxNDQsICAgMTM5LCAgIDE0NiwgICAxNDcsICAgIDEzLAotICAgICAgMTQsICAgIDE1
LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgNDAsICAgIDc2LCAgICA3NywgICAgODIs
Ci0gICAgIDEwOCwgICAxMjEsICAgMTIyLCAgIDEyNCwgICAxMjYsICAgMTI3LCAgIDE0MiwgICAx
NTEsICAgMTUyLCAgIDE1MywKLSAgICAgMTU0LCAgIDE2MiwgICAxNjMsICAgMTY0LCAgIDE2Nywg
ICAxNzQsICAgIDQ1LCAgIDEzMSwgICAxMzQsICAgIDc0LAotICAgICAgODEsICAgIDc1LCAgIDEy
NSwgICAxMjIsICAgMTUwLCAgIDEwOCwgICAxMDgsICAgMTI0LCAgICA1MywgICAgNTQsCi0gICAg
ICA3NCwgICAgNzgsICAgIDczLCAgICA3MywgICAgNzksICAgIDM5LCAgIDEyMiwgICAgNzIsICAg
MTA4LCAgICA4NywKLSAgICAgIDg4LCAgICA4NCwgICAgODYsICAgIDU1LCAgICA1NiwgICAgOTAs
ICAgIDkxLCAgICA1NywgICAgNTgsICAgIDU5LAotICAgICAgNjEsICAgIDYwLCAgICA5NSwgICAg
NzUsICAgMTQ2LCAgICA0NSwgICAxNDgsICAgMTQ5LCAgICA3NywgICAxNDcsCi0gICAgICA4Miwg
ICAgODIsICAgMTY5LCAgICA3MiwgICAgNzIsICAgIDgyLCAgICA4MiwgICAxMjQsICAgIDcyLCAg
ICA3NywKLSAgICAgMTU1LCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA3MSwgICAgODEsICAgMTIz
LCAgICA3OSwgICAgODIsICAgIDc3LAotICAgICAxNTIsICAgIDc0LCAgICA3NSwgICAxMjUsICAg
MTUwLCAgICA3NSwgICAgNzMsICAgMTAwLCAgIDEyNCwgICAgNDUsCi0gICAgICA1MCwgICAxMDMs
ICAgMTIyLCAgIDEwOCwgICAxMDgsICAgMTEwLCAgIDExMCwgICAxMTIsICAgMTEyLCAgIDExMiwK
LSAgICAgMTEyLCAgIDExMywgICAxMTMsICAgMTE3LCAgIDExOCwgICAxMTksICAgMTI0LCAgICA3
NywgICAgNzQsICAgIDc5LAotICAgICAgODIsICAgMTU4LCAgIDE1OSwgICAxNjAsICAgMTcwLCAg
IDEyNCwgICAgODIsICAgMTY4LCAgIDE2MiwgICAxMjIsCi0gICAgIDEyMiwgICAxMjUsICAgIDc1
LCAgICA3NSwgICAgODAsICAgMTI1LCAgIDE0OSwgICAgNDAsICAgMTYxLCAgIDE1MywKLSAgICAg
MTUxLCAgIDE2MywgICAxNzEsICAgIDczLCAgIDEyNCwgICAxMzcsICAgMTY2LCAgIDE1NiwgICAg
NzUsICAgMTIyLAotICAgICAgNzUsICAgIDcyLCAgIDE2NiwgICAxNzIsICAgMTczLCAgIDE1OCwg
ICAxNjUsICAgIDQ1LCAgICA3MywgICAgNzcsCi0gICAgIDEyNCwgICAgODIsICAgIDczLCAgICAx
NiwgICAgODEsICAgMTUzLCAgIDE1NywgICAxNjEsICAgIDczLCAgIDEyNCwKLSAgICAgMTU3LCAg
IDE1OCwgICAxNTAsICAgIDgyCisgICAgICA0NSwgICAxNDAsICAgIDQ1LCAgICA0NiwgICAgNzUs
ICAgIDk2LCAgICA4MSwgICAxNzgsICAgIDcyLCAgICA3OCwKKyAgICAgICAzLCAgICAzMywgICAg
MzQsICAgIDM1LCAgIDEzMiwgICAxMzMsICAgMTM4LCAgICA3OCwgICAgODEsICAgIDQ1LAorICAg
ICAgOTYsICAgMTM5LCAgIDE0MSwgICAgNzMsICAgICAwLCAgIDE3NiwgICAxNDEsICAgMTQ1LCAg
ICA3NSwgICAgNzUsCisgICAgIDE2MSwgICAxMzIsICAgMTMxLCAgIDEzNCwgICAxMzksICAgMTMz
LCAgICA5NiwgICAgNzEsICAgIDczLCAgICA4MCwKKyAgICAgIDQ1LCAgICA0NywgICAgNDgsICAg
IDQ5LCAgICA1MiwgICAgNTMsICAgIDcxLCAgICA4MiwgICAgODMsICAgIDg1LAorICAgICAgOTcs
ICAgIDk4LCAgICA5OSwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEwNiwg
ICAxMDcsCisgICAgIDEwOCwgICAxMDksICAgMTEwLCAgIDExMSwgICAxMTIsICAgMTEzLCAgIDEx
NCwgICAxMTUsICAgMTE2LCAgIDExNywKKyAgICAgMTE4LCAgIDExOSwgICAxMjAsICAgMTIxLCAg
IDEyNSwgICAxNDIsICAgIDgxLCAgIDEzOSwgICAxNDYsICAgMTQ3LAorICAgICAxNDQsICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICA0MCwgICAgNzUs
CisgICAgICA3NiwgICAgODEsICAgMTA4LCAgIDEyMSwgICAxMjIsICAgMTI0LCAgIDEyNiwgICAx
MjcsICAgMTQyLCAgIDE1MSwKKyAgICAgMTUyLCAgIDE1MywgICAxNTQsICAgMTYyLCAgIDE2Mywg
ICAxNjQsICAgMTY3LCAgIDE3NCwgICAgOTYsICAgMTMxLAorICAgICAxMzQsICAgIDczLCAgICA4
MCwgICAgNzQsICAgMTI1LCAgIDEyMiwgICAxNTAsICAgMTA4LCAgIDEwOCwgICAxMjQsCisgICAg
ICA1MiwgICAgNTMsICAgIDczLCAgICA3NywgICAgNzIsICAgIDcyLCAgICA3OCwgICAgMzksICAg
MTIyLCAgICA3MSwKKyAgICAgMTA4LCAgICA4NiwgICAgODcsICAgIDgzLCAgICA4NSwgICAgNTQs
ICAgIDU1LCAgICA4OSwgICAgOTAsICAgIDU2LAorICAgICAgNTcsICAgIDU4LCAgICA2MCwgICAg
NTksICAgIDk0LCAgICA3NCwgICAgOTYsICAgMTQ4LCAgIDE0OSwgICAgNzYsCisgICAgIDE0Nywg
ICAxNDYsICAgIDgxLCAgICA4MSwgICAxNjksICAgIDcxLCAgICA3MSwgICAgODEsICAgIDgxLCAg
IDEyNCwKKyAgICAgIDcxLCAgICA3NiwgICAxNTUsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDcw
LCAgICA4MCwgICAxMjMsICAgIDc4LAorICAgICAgODEsICAgIDc2LCAgIDE1MiwgICAgNzMsICAg
IDc0LCAgIDEyNSwgICAxNTAsICAgIDc0LCAgICA3MiwgICAxMDAsCisgICAgIDEyNCwgICAgNDUs
ICAgIDQ2LCAgICA5NiwgICAxMDMsICAgMTIyLCAgIDEwOCwgICAxMDgsICAgMTEwLCAgIDExMCwK
KyAgICAgMTEyLCAgIDExMiwgICAxMTIsICAgMTEyLCAgIDExMywgICAxMTMsICAgMTE3LCAgIDEx
OCwgICAxMTksICAgMTI0LAorICAgICAgNzMsICAgIDc4LCAgICA4MSwgICAgNzYsICAgMTU4LCAg
IDE1OSwgICAxNjAsICAgMTcwLCAgIDEyNCwgICAgODEsCisgICAgIDE2OCwgICAxNjIsICAgMTIy
LCAgIDEyMiwgICAxMjUsICAgIDc0LCAgICA3NCwgICAgNzksICAgMTI1LCAgIDE0OSwKKyAgICAg
IDQwLCAgIDE2MSwgICAxNTMsICAgMTUxLCAgIDE2MywgICAxNzEsICAgIDcyLCAgIDEyNCwgICAx
MzcsICAgMTY2LAorICAgICAxNTYsICAgIDc0LCAgIDEyMiwgICAgNzQsICAgIDcxLCAgIDE2Niwg
ICAxNzIsICAgMTczLCAgIDE1OCwgICAxNjUsCisgICAgICA5NiwgICAgNzIsICAgIDc2LCAgIDEy
NCwgICAgODEsICAgIDcyLCAgICAxNiwgICAgODAsICAgMTUzLCAgIDE1NywKKyAgICAgMTYxLCAg
ICA3MiwgICAxMjQsICAgMTU3LCAgIDE1OCwgICAxNTAsICAgIDgxCiB9OwogCiAjZGVmaW5lIHl5
ZXJyb2sJCSh5eWVycnN0YXR1cyA9IDApCkBAIC0xMzY2LDcgKzE0MDMsNyBAQCBkbwkJCQkJCQkJ
XAogICAgIH0JCQkJCQkJCVwKICAgZWxzZQkJCQkJCQkJXAogICAgIHsJCQkJCQkJCVwKLSAgICAg
IHl5ZXJyb3IgKGNvbnRleHQsIFlZXygic3ludGF4IGVycm9yOiBjYW5ub3QgYmFjayB1cCIpKTsg
XAorICAgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgWVlfKCJzeW50YXggZXJyb3I6IGNh
bm5vdCBiYWNrIHVwIikpOyBcCiAgICAgICBZWUVSUk9SOwkJCQkJCQlcCiAgICAgfQkJCQkJCQkJ
XAogd2hpbGUgKFlZSUQgKDApKQpAQCAtMTQyMSw5ICsxNDU4LDkgQEAgd2hpbGUgKFlZSUQgKDAp
KQogLyogWVlMRVggLS0gY2FsbGluZyBgeXlsZXgnIHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50cy4g
ICovCiAKICNpZmRlZiBZWUxFWF9QQVJBTQotIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWws
IFlZTEVYX1BBUkFNKQorIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2MsIFlZ
TEVYX1BBUkFNKQogI2Vsc2UKLSMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsKQorIyBkZWZp
bmUgWVlMRVggeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2MpCiAjZW5kaWYKIAogLyogRW5hYmxlIGRl
YnVnZ2luZyBpZiByZXF1ZXN0ZWQuICAqLwpAQCAtMTQ0Niw3ICsxNDgzLDcgQEAgZG8gewkJCQkJ
CQkJCSAgXAogICAgIHsJCQkJCQkJCQkgIFwKICAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiJXMg
IiwgVGl0bGUpOwkJCQkJICBcCiAgICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwJCQkJCQkg
IFwKLQkJICBUeXBlLCBWYWx1ZSwgY29udGV4dCk7IFwKKwkJICBUeXBlLCBWYWx1ZSwgTG9jYXRp
b24sIGNvbnRleHQpOyBcCiAgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7CQkJCQkJICBc
CiAgICAgfQkJCQkJCQkJCSAgXAogfSB3aGlsZSAoWVlJRCAoMCkpCkBAIC0xNDYwLDE4ICsxNDk3
LDIwIEBAIGRvIHsJCQkJCQkJCQkgIFwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVk
IF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQg
X01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ZhbHVlX3ByaW50IChGSUxFICp5eW91
dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBUUGFyc2VD
b250ZXh0KiBjb250ZXh0KQoreXlfc3ltYm9sX3ZhbHVlX3ByaW50IChGSUxFICp5eW91dHB1dCwg
aW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBZWUxUWVBFIGNvbnN0
ICogY29uc3QgeXlsb2NhdGlvbnAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiAjZWxzZQogc3Rh
dGljIHZvaWQKLXl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1
ZXAsIGNvbnRleHQpCit5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5
dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICAgICBGSUxFICp5eW91dHB1dDsKICAgICBp
bnQgeXl0eXBlOwogICAgIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKKyAgICBZWUxU
WVBFIGNvbnN0ICogY29uc3QgeXlsb2NhdGlvbnA7CiAgICAgVFBhcnNlQ29udGV4dCogY29udGV4
dDsKICNlbmRpZgogewogICBpZiAoIXl5dmFsdWVwKQogICAgIHJldHVybjsKKyAgWVlVU0UgKHl5
bG9jYXRpb25wKTsKICAgWVlVU0UgKGNvbnRleHQpOwogIyBpZmRlZiBZWVBSSU5UCiAgIGlmICh5
eXR5cGUgPCBZWU5UT0tFTlMpCkBAIC0xNDk0LDEzICsxNTMzLDE0IEBAIHl5X3N5bWJvbF92YWx1
ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZp
bmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmlu
ZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ByaW50IChGSUxFICp5eW91dHB1
dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBUUGFyc2VDb250
ZXh0KiBjb250ZXh0KQoreXlfc3ltYm9sX3ByaW50IChGSUxFICp5eW91dHB1dCwgaW50IHl5dHlw
ZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBZWUxUWVBFIGNvbnN0ICogY29uc3Qg
eXlsb2NhdGlvbnAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiAjZWxzZQogc3RhdGljIHZvaWQK
LXl5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIGNvbnRleHQpCit5
eV9zeW1ib2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwg
Y29udGV4dCkKICAgICBGSUxFICp5eW91dHB1dDsKICAgICBpbnQgeXl0eXBlOwogICAgIFlZU1RZ
UEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKKyAgICBZWUxUWVBFIGNvbnN0ICogY29uc3QgeXls
b2NhdGlvbnA7CiAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dDsKICNlbmRpZgogewpAQCAtMTUw
OSw3ICsxNTQ5LDkgQEAgeXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbAog
ICBlbHNlCiAgICAgWVlGUFJJTlRGICh5eW91dHB1dCwgIm50ZXJtICVzICgiLCB5eXRuYW1lW3l5
dHlwZV0pOwogCi0gIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2
YWx1ZXAsIGNvbnRleHQpOworICBZWV9MT0NBVElPTl9QUklOVCAoeXlvdXRwdXQsICp5eWxvY2F0
aW9ucCk7CisgIFlZRlBSSU5URiAoeXlvdXRwdXQsICI6ICIpOworICB5eV9zeW1ib2xfdmFsdWVf
cHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCk7
CiAgIFlZRlBSSU5URiAoeXlvdXRwdXQsICIpIik7CiB9CiAKQEAgLTE1NDksMTEgKzE1OTEsMTIg
QEAgZG8gewkJCQkJCQkJXAogI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlf
X0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZF
UikKIHN0YXRpYyB2b2lkCi15eV9yZWR1Y2VfcHJpbnQgKFlZU1RZUEUgKnl5dnNwLCBpbnQgeXly
dWxlLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0KQoreXlfcmVkdWNlX3ByaW50IChZWVNUWVBFICp5
eXZzcCwgWVlMVFlQRSAqeXlsc3AsIGludCB5eXJ1bGUsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQp
CiAjZWxzZQogc3RhdGljIHZvaWQKLXl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5cnVsZSwgY29u
dGV4dCkKK3l5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5bHNwLCB5eXJ1bGUsIGNvbnRleHQpCiAg
ICAgWVlTVFlQRSAqeXl2c3A7CisgICAgWVlMVFlQRSAqeXlsc3A7CiAgICAgaW50IHl5cnVsZTsK
ICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0OwogI2VuZGlmCkBAIC0xNTY5LDcgKzE2MTIsNyBA
QCB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eXJ1bGUsIGNvbnRleHQpCiAgICAgICBmcHJpbnRm
IChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKICAgICAgIHl5X3N5bWJvbF9wcmludCAo
c3RkZXJyLCB5eXJoc1t5eXByaHNbeXlydWxlXSArIHl5aV0sCiAJCSAgICAgICAmKHl5dnNwWyh5
eWkgKyAxKSAtICh5eW5yaHMpXSkKLQkJICAgICAgIAkJICAgICAgICwgY29udGV4dCk7CisJCSAg
ICAgICAsICYoeXlsc3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQkJICAgICAgICwgY29udGV4dCk7
CiAgICAgICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOwogICAgIH0KIH0KQEAgLTE1NzcsNyArMTYy
MCw3IEBAIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5cnVsZSwgY29udGV4dCkKICMgZGVmaW5l
IFlZX1JFRFVDRV9QUklOVChSdWxlKQkJXAogZG8gewkJCQkJXAogICBpZiAoeXlkZWJ1ZykJCQkJ
XAotICAgIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIFJ1bGUsIGNvbnRleHQpOyBcCisgICAgeXlf
cmVkdWNlX3ByaW50ICh5eXZzcCwgeXlsc3AsIFJ1bGUsIGNvbnRleHQpOyBcCiB9IHdoaWxlIChZ
WUlEICgwKSkKIAogLyogTm9uemVybyBtZWFucyBwcmludCBwYXJzZSB0cmFjZS4gIEl0IGlzIGxl
ZnQgdW5pbml0aWFsaXplZCBzbyB0aGF0CkBAIC0xODI4LDE3ICsxODcxLDE5IEBAIHl5c3ludGF4
X2Vycm9yIChjaGFyICp5eXJlc3VsdCwgaW50IHl5c3QKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8
fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8
IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlkZXN0cnVjdCAoY29uc3QgY2hhciAq
eXltc2csIGludCB5eXR5cGUsIFlZU1RZUEUgKnl5dmFsdWVwLCBUUGFyc2VDb250ZXh0KiBjb250
ZXh0KQoreXlkZXN0cnVjdCAoY29uc3QgY2hhciAqeXltc2csIGludCB5eXR5cGUsIFlZU1RZUEUg
Knl5dmFsdWVwLCBZWUxUWVBFICp5eWxvY2F0aW9ucCwgVFBhcnNlQ29udGV4dCogY29udGV4dCkK
ICNlbHNlCiBzdGF0aWMgdm9pZAoteXlkZXN0cnVjdCAoeXltc2csIHl5dHlwZSwgeXl2YWx1ZXAs
IGNvbnRleHQpCit5eWRlc3RydWN0ICh5eW1zZywgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlv
bnAsIGNvbnRleHQpCiAgICAgY29uc3QgY2hhciAqeXltc2c7CiAgICAgaW50IHl5dHlwZTsKICAg
ICBZWVNUWVBFICp5eXZhbHVlcDsKKyAgICBZWUxUWVBFICp5eWxvY2F0aW9ucDsKICAgICBUUGFy
c2VDb250ZXh0KiBjb250ZXh0OwogI2VuZGlmCiB7CiAgIFlZVVNFICh5eXZhbHVlcCk7CisgIFlZ
VVNFICh5eWxvY2F0aW9ucCk7CiAgIFlZVVNFIChjb250ZXh0KTsKIAogICBpZiAoIXl5bXNnKQpA
QCAtMTkwOSw2ICsxOTU0LDggQEAgWVlTVFlQRSB5eWx2YWw7CiAKIC8qIE51bWJlciBvZiBzeW50
YXggZXJyb3JzIHNvIGZhci4gICovCiBpbnQgeXluZXJyczsKKy8qIExvY2F0aW9uIGRhdGEgZm9y
IHRoZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCitZWUxUWVBFIHl5bGxvYzsKIAogICBpbnQgeXlz
dGF0ZTsKICAgaW50IHl5bjsKQEAgLTE5NDIsMTYgKzE5ODksMjEgQEAgaW50IHl5bmVycnM7CiAg
IFlZU1RZUEUgKnl5dnMgPSB5eXZzYTsKICAgWVlTVFlQRSAqeXl2c3A7CiAKKyAgLyogVGhlIGxv
Y2F0aW9uIHN0YWNrLiAgKi8KKyAgWVlMVFlQRSB5eWxzYVtZWUlOSVRERVBUSF07CisgIFlZTFRZ
UEUgKnl5bHMgPSB5eWxzYTsKKyAgWVlMVFlQRSAqeXlsc3A7CisgIC8qIFRoZSBsb2NhdGlvbnMg
d2hlcmUgdGhlIGVycm9yIHN0YXJ0ZWQgYW5kIGVuZGVkLiAgKi8KKyAgWVlMVFlQRSB5eWVycm9y
X3JhbmdlWzJdOwogCi0KLSNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5
c3NwIC09IChOKSkKKyNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5c3Nw
IC09IChOKSwgeXlsc3AgLT0gKE4pKQogCiAgIFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklU
REVQVEg7CiAKICAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1
ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKICAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KICAgWVlT
VFlQRSB5eXZhbDsKLQorICBZWUxUWVBFIHl5bG9jOwogCiAgIC8qIFRoZSBudW1iZXIgb2Ygc3lt
Ym9scyBvbiB0aGUgUkhTIG9mIHRoZSByZWR1Y2VkIHJ1bGUuCiAgICAgIEtlZXAgdG8gemVybyB3
aGVuIG5vIHN5bWJvbCBzaG91bGQgYmUgcG9wcGVkLiAgKi8KQEAgLTE5NzEsNiArMjAyMywxMiBA
QCBpbnQgeXluZXJyczsKIAogICB5eXNzcCA9IHl5c3M7CiAgIHl5dnNwID0geXl2czsKKyAgeXls
c3AgPSB5eWxzOworI2lmIGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNf
VFJJVklBTAorICAvKiBJbml0aWFsaXplIHRoZSBkZWZhdWx0IGxvY2F0aW9uIGJlZm9yZSBwYXJz
aW5nIHN0YXJ0cy4gICovCisgIHl5bGxvYy5maXJzdF9saW5lICAgPSB5eWxsb2MubGFzdF9saW5l
ICAgPSAxOworICB5eWxsb2MuZmlyc3RfY29sdW1uID0geXlsbG9jLmxhc3RfY29sdW1uID0gMDsK
KyNlbmRpZgogCiAgIGdvdG8geXlzZXRzdGF0ZTsKIApAQCAtMTk5Nyw3ICsyMDU1LDcgQEAgaW50
IHl5bmVycnM7CiAJICAgbWVtb3J5LiAgKi8KIAlZWVNUWVBFICp5eXZzMSA9IHl5dnM7CiAJeXl0
eXBlX2ludDE2ICp5eXNzMSA9IHl5c3M7Ci0KKwlZWUxUWVBFICp5eWxzMSA9IHl5bHM7CiAKIAkv
KiBFYWNoIHN0YWNrIHBvaW50ZXIgYWRkcmVzcyBpcyBmb2xsb3dlZCBieSB0aGUgc2l6ZSBvZiB0
aGUKIAkgICBkYXRhIGluIHVzZSBpbiB0aGF0IHN0YWNrLCBpbiBieXRlcy4gIFRoaXMgdXNlZCB0
byBiZSBhCkBAIC0yMDA2LDkgKzIwNjQsOSBAQCBpbnQgeXluZXJyczsKIAl5eW92ZXJmbG93IChZ
WV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwKIAkJICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9mICgq
eXlzc3ApLAogCQkgICAgJnl5dnMxLCB5eXNpemUgKiBzaXplb2YgKCp5eXZzcCksCi0KKwkJICAg
ICZ5eWxzMSwgeXlzaXplICogc2l6ZW9mICgqeXlsc3ApLAogCQkgICAgJnl5c3RhY2tzaXplKTsK
LQorCXl5bHMgPSB5eWxzMTsKIAl5eXNzID0geXlzczE7CiAJeXl2cyA9IHl5dnMxOwogICAgICAg
fQpAQCAtMjAzMSw3ICsyMDg5LDcgQEAgaW50IHl5bmVycnM7CiAJICBnb3RvIHl5ZXhoYXVzdGVk
bGFiOwogCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3MpOwogCVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnMp
OwotCisJWVlTVEFDS19SRUxPQ0FURSAoeXlscyk7CiAjICB1bmRlZiBZWVNUQUNLX1JFTE9DQVRF
CiAJaWYgKHl5c3MxICE9IHl5c3NhKQogCSAgWVlTVEFDS19GUkVFICh5eXNzMSk7CkBAIC0yMDQx
LDcgKzIwOTksNyBAQCBpbnQgeXluZXJyczsKIAogICAgICAgeXlzc3AgPSB5eXNzICsgeXlzaXpl
IC0gMTsKICAgICAgIHl5dnNwID0geXl2cyArIHl5c2l6ZSAtIDE7Ci0KKyAgICAgIHl5bHNwID0g
eXlscyArIHl5c2l6ZSAtIDE7CiAKICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YWNrIHNp
emUgaW5jcmVhc2VkIHRvICVsdVxuIiwKIAkJICAodW5zaWduZWQgbG9uZyBpbnQpIHl5c3RhY2tz
aXplKSk7CkBAIC0yMTE4LDcgKzIxNzYsNyBAQCB5eWJhY2t1cDoKIAogICB5eXN0YXRlID0geXlu
OwogICAqKyt5eXZzcCA9IHl5bHZhbDsKLQorICAqKyt5eWxzcCA9IHl5bGxvYzsKICAgZ290byB5
eW5ld3N0YXRlOwogCiAKQEAgLTIxNDksMTggKzIyMDcsMTkgQEAgeXlyZWR1Y2U6CiAgICAgIEdD
QyB3YXJuaW5nIHRoYXQgWVlWQUwgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZC4gICovCiAgIHl5
dmFsID0geXl2c3BbMS15eWxlbl07CiAKLQorICAvKiBEZWZhdWx0IGxvY2F0aW9uLiAgKi8KKyAg
WVlMTE9DX0RFRkFVTFQgKHl5bG9jLCAoeXlsc3AgLSB5eWxlbiksIHl5bGVuKTsKICAgWVlfUkVE
VUNFX1BSSU5UICh5eW4pOwogICBzd2l0Y2ggKHl5bikKICAgICB7Ci0gICAgICAgIGNhc2UgMjoK
KyAgICAgICAgY2FzZSA0OgogCiAgICAgewogICAgICAgICAvLyBUaGUgc3ltYm9sIHRhYmxlIHNl
YXJjaCB3YXMgZG9uZSBpbiB0aGUgbGV4aWNhbCBwaGFzZQogICAgICAgICBjb25zdCBUU3ltYm9s
KiBzeW1ib2wgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN5bWJvbDsKICAgICAgICAgY29uc3Qg
VFZhcmlhYmxlKiB2YXJpYWJsZTsKICAgICAgICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ1bmRlY2xh
cmVkIGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ1bmRlY2xh
cmVkIGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiBmYWtlVmFy
aWFibGUgPSBuZXcgVFZhcmlhYmxlKCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBl
KTsKQEAgLTIxNjksMTAgKzIyMjgsMTcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAvLyBUaGlzIGlkZW50aWZpZXIgY2FuIG9ubHkgYmUgYSB2YXJpYWJsZSB0eXBl
IHN5bWJvbAogICAgICAgICAgICAgaWYgKCEgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ2
YXJpYWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLT5jX3N0cigp
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ2
YXJpYWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLT5jX3N0cigp
KTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3lt
Ym9sKTsKKworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmlzVmFyaWFibGVCdWlsdEluKHZhcmlh
YmxlKSAmJiAKKyAgICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5
KCkgJiYKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eWxz
cFsoMSkgLSAoMSldKSwgdmFyaWFibGUtPmdldEV4dGVuc2lvbigpKSkgeworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcsIGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVy
eSwgYW5kIHRoZSBwb29sCkBAIC0yMTgxLDIyICsyMjQ3LDIzIEBAIHl5cmVkdWNlOgogICAgICAg
ICBpZiAodmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCApIHsK
ICAgICAgICAgICAgIENvbnN0YW50VW5pb24qIGNvbnN0QXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29u
c3RQb2ludGVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0KHZhcmlhYmxlLT5nZXRUeXBlKCkpOwot
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQs
ICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5
cGUoKSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRU
eXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzoKKyAg
Y2FzZSA1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgNDoKKyAgY2FzZSA2OgogCiAgICAgewogICAgICAgICAvLwpAQCAt
MjIwNCwxNTUgKzIyNzEsMTUxIEBAIHl5cmVkdWNlOgogICAgICAgICAvLyBjaGVjayBmb3Igb3Zl
cmZsb3cgZm9yIGNvbnN0YW50cwogICAgICAgICAvLwogICAgICAgICBpZiAoYWJzKCh5eXZzcFso
MSkgLSAoMSldLmxleCkuaSkgPj0gKDEgPDwgMTYpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICIgaW50ZWdlciBjb25zdGFudCBvdmVy
ZmxvdyIsICIiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSld
KSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJy
YXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0
KCh5eXZzcFsoMSkgLSAoMSldLmxleCkuaSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDU6CisgIGNhc2UgNzoKIAogICAgIHsKICAg
ICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwog
ICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5mKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDY6CisgIGNhc2UgODoKIAogICAgIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5p
b25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRC
Q29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5iKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDEpIC0g
KDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3OgorICBjYXNlIDk6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA4OgorICBjYXNlIDEwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOToKKyAgY2FzZSAxMToKIAogICAgIHsKICAg
ICAgICAgaWYgKCEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNB
cnJheSgpICYmICEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNN
YXRyaXgoKSAmJiAhKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlz
VmVjdG9yKCkpIHsKICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCkpCi0gICAgICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5v
dCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNf
c3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoNCld
KSwgIiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3Ig
IiwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzU3ltYm9s
Tm9kZSgpLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIgbGVm
dCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICJleHBy
ZXNzaW9uIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0
KV0pLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3Rv
ciAiLCAiZXhwcmVzc2lvbiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICB9Ci0gICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ICYmICh5eXZzcFsoMykg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25z
dCkgewotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5pc0FycmF5KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgYXJyYXlzCi0gICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRk
Q29uc3RBcnJheU5vZGUoKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3Qo
KSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikg
LSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKSB7ICAvLyBjb25zdGFudCBm
b2xkaW5nIGZvciB2ZWN0b3JzCi0gICAgICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7
Ci0gICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7Ci0gICAgICAgICAgICAgICAgZmllbGRz
Lm9mZnNldHNbMF0gPSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgp
OyAvLyBuZWVkIHRvIGRvIGl0IHRoaXMgd2F5IGJlY2F1c2Ugdi54eSBzZW5kcyBmaWVsZHMgaW50
ZWdlciBhcnJheQotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVsZHMsICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOwot
ICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+aXNNYXRyaXgoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBtYXRyaWNlcwot
ICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmFkZENvbnN0TWF0cml4Tm9kZSgoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElD
b25zdCgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygyKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgeworICAg
ICAgICAgICAgaW50IGluZGV4ID0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRJQ29uc3QoMCk7CisgICAgICAgICAgICBp
ZiAoaW5kZXggPCAwKSB7CisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gaW5mb1N0
cmVhbTsKKyAgICAgICAgICAgICAgICBpbmZvU3RyZWFtIDw8IGluZGV4OworICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nIGluZm8gPSBpbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMykgLSAoNCldKSwgIm5lZ2F0aXZlIGluZGV4IiwgaW5m
by5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAg
ICAgICAgICAgaW5kZXggPSAwOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewotICAgICAgICAgICAgICAgIGlmICgoKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkgfHwgKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpICYmICh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0Tm9taW5h
bFNpemUoKSA8PSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpICYm
ICEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpICkg
ewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07
Ci0gICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiZmllbGQgc2VsZWN0aW9u
IG91dCBvZiByYW5nZSAnIiA8PCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElD
b25zdCgpIDw8ICInIjsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZv
ID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0
cigpKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGUoKS5nZXRBcnJheVNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBl
KCkuZ2V0TWF4QXJyYXlTaXplKCkgPD0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5n
ZXRJQ29uc3QoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlTZXRNYXhTaXplKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRBc1N5bWJvbE5vZGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldFR5cGVQb2ludGVyKCksICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KS0+Z2V0SUNvbnN0KCksIHRydWUsICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCksICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigpLCAwLCBmYWxzZSwg
KHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAoeXl2c3BbKDMpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9u
QXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpID49ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBv
dXQgb2YgcmFuZ2UgJyIgPDwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29u
c3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0
cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgIiIsICJbIiwg
ZXh0cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAgICAgICAgICAgaWYg
KCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkpIHsg
Ly8gY29uc3RhbnQgZm9sZGluZyBmb3IgYXJyYXlzCisgICAgICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlOb2RlKGlu
ZGV4LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygy
KSAtICg0KV0pKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKSB7ICAvLyBjb25zdGFudCBmb2xk
aW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVsZHMgZmllbGRz
OworICAgICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVlZCB0byBkbyBpdCB0aGlzIHdheSBi
ZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkKKyAgICAgICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RWZWN0
b3JOb2RlKGZpZWxkcywgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eWxzcFsoMikgLSAoNCldKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSkgeyAvLyBjb25z
dGFudCBmb2xkaW5nIGZvciBtYXRyaWNlcworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoaW5kZXgs
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0g
KDQpXSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5p
c0FycmF5KCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGUoKS5nZXRBcnJheVNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgIiIsICJbIiwgImFycmF5IG11
c3QgYmUgcmVkZWNsYXJlZCB3aXRoIGEgc2l6ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRoIGEg
dmFyaWFibGUiKTsKKyAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
aW5kZXggPj0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5
cGUoKS5nZXRBcnJheVNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJ
bmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIici
OworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJ
bmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KHl5bHNwWygyKSAtICg0KV0pLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRleCA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgLSAxOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmICgoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzVmVjdG9yKCkgfHwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzTWF0cml4KCkpICYmICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSA8PSBpbmRleCkgeworICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CisgICAgICAg
ICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiZmllbGQgc2VsZWN0aW9uIG91dCBvZiBy
YW5nZSAnIiA8PCBpbmRleCA8PCAiJyI7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
IGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0KV0pLCAiIiwgIlsiLCBleHRyYUluZm8uY19z
dHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaW5kZXggPSAgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIC0gMTsKICAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOworICAgICAgICAg
ICAgICAgICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0Nv
bnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+c2V0SUNvbnN0KGluZGV4KTsK
KyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICg0KV0pKTsKICAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleEluZGlyZWN0LCAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoNCldKSk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAgICAgICAgICAg
ICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAg
ICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoMC4wZik7Ci0gICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3Rh
bnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxQ29uc3QpLCAo
eXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUNvbnN0KSwgKHl5bHNwWygy
KSAtICg0KV0pKTsKICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7CiAgICAgICAgICAgICBpZiAoKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSkK
LSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUo
VFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUo
KS5nZXRTdHJ1Y3QoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpKSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpKTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNl
dFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSk7CiAKICAgICAgICAgICAgIGlmICgoeXl2
c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxp
ZmllcigpID09IEV2cUNvbnN0KQogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKLSAg
ICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+aXNNYXRyaXgoKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQotICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCwg
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXpl
KCkpKTsKLSAgICAgICAgZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzTWF0cml4KCkpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCkpKTsKLSAgICAgICAg
ZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzVmVj
dG9yKCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5
cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QpKTsKLSAgICAg
ICAgZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlz
VmVjdG9yKCkpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNl
dFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSkpOwotICAgICAgICBlbHNlCisgICAgICAgIH0g
ZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0
cml4KCkpIHsKKyAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9
PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5OworICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBxdWFsaWZpZXIsICh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgp
KSk7CisgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzVmVjdG9yKCkpIHsKKyAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVy
ID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5OworICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwg
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigp
LCBxdWFsaWZpZXIpKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxMDoKKyAgY2FzZSAxMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDExOgorICBjYXNlIDEzOgogCiAg
ICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygzKSAt
ICgzKV0ubGV4KS5saW5lLCAiY2Fubm90IGFwcGx5IGRvdCBvcGVyYXRvciB0byBhbiBhcnJheSIs
ICIuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDMpXSksICJj
YW5ub3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkgewogICAgICAgICAg
ICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJz
ZVZlY3RvckZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMs
ICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSkpIHsKKyAgICAgICAgICAgIGlmICghIGNvbnRl
eHQtPnBhcnNlVmVjdG9yRmllbGRzKCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCks
IGZpZWxkcywgKHl5bHNwWygzKSAtICgzKV0pKSkgewogICAgICAgICAgICAgICAgIGZpZWxkcy5u
dW0gPSAxOwogICAgICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzWzBdID0gMDsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgp
LmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIHZl
Y3RvciBmaWVsZHMKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsK
KyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygzKSAtICgzKV0pKTsKICAgICAgICAgICAgICAgICBpZiAo
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKQEAgLTIzNjEsMTMgKzI0MjQsMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZx
Q29uc3QsIChpbnQpICgqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcpLnNpemUoKSkpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBUU3RyaW5nIHZlY3RvclN0cmlu
ZyA9ICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZzsKLSAgICAgICAgICAgICAgICBUSW50
ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmllbGRz
LCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChF
T3BWZWN0b3JTd2l6emxlLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAgICAg
VEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxlKGZp
ZWxkcywgKHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wVmVj
dG9yU3dpenpsZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGlu
ZGV4LCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAoaW50KSB2
ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAo
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpIHsK
ICAgICAgICAgICAgIFRNYXRyaXhGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEgY29u
dGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUo
KSwgZmllbGRzLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpKSB7CisgICAgICAgICAgICBp
ZiAoISBjb250ZXh0LT5wYXJzZU1hdHJpeEZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5z
dHJpbmcsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21p
bmFsU2l6ZSgpLCBmaWVsZHMsICh5eWxzcFsoMykgLSAoMyldKSkpIHsKICAgICAgICAgICAgICAg
ICBmaWVsZHMud2hvbGVSb3cgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmaWVsZHMud2hvbGVD
b2wgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmaWVsZHMucm93ID0gMDsKQEAgLTIzNzYsNjMg
KzI0MzksNTcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChm
aWVsZHMud2hvbGVSb3cgfHwgZmllbGRzLndob2xlQ29sKSB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiIG5vbi1zY2FsYXIgZmll
bGRzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiLCAiLiIpOworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1wbGVt
ZW50ZWQgeWV0IiwgIi4iKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uWzFdOwogICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgwKTsKLSAgICAg
ICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
SW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCBpbmRleCwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAg
ICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0
KSwgKHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhE
aXJlY3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwg
KHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0
SUNvbnN0KGZpZWxkcy5jb2wgKiAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Tm9taW5hbFNpemUoKSArIGZpZWxkcy5yb3cpOwotICAgICAgICAgICAgICAgIFRJ
bnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2
c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRl
eERpcmVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4
LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgICAgIFRJbnRlcm1U
eXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDMp
IC0gKDMpXSkpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4LCAoeXlsc3BbKDIpIC0g
KDMpXSkpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRQcmVjaXNpb24oKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKCh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSA9
PSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgICAgIGJvb2wgZmllbGRGb3VuZCA9IGZhbHNlOwotICAg
ICAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOwotICAgICAgICAgICAg
aWYgKGZpZWxkcyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lLCAic3RydWN0dXJlIGhhcyBubyBmaWVsZHMiLCAiSW50ZXJu
YWwgRXJyb3IiKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBpOwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkg
PCBmaWVsZHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoKmZpZWxk
cylbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3Ry
aW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGZpZWxk
cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChmaWVsZHNbaV0tPm5hbWUoKSA9
PSAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAg
ZmllbGRGb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZmllbGRGb3VuZCkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RT
dHJ1Y3QoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0
VHlwZSgqKCpmaWVsZHMpW2ldLnR5cGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNoYW5nZSB0aGUgcXVhbGlmaWVyIG9mIHRoZSByZXR1cm4gdHlwZSwgbm90IG9mIHRoZSBzdHJ1
Y3R1cmUgZmllbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyB0aGUgc3RydWN0
dXJlIGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1Y3R1cmVzLgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsx
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdChpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAqKCpmaWVsZHMpW2ldLnR5cGUs
ICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
SW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlw
ZSgqKCpmaWVsZHMpW2ldLnR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZp
ZWxkRm91bmQpIHsKKyAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkg
eworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5hZGRDb25zdFN0cnVjdCgqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMp
XSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKCpmaWVsZHNbaV0t
PnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFuZ2UgdGhlIHF1YWxpZmll
ciBvZiB0aGUgcmV0dXJuIHR5cGUsIG5vdCBvZiB0aGUgc3RydWN0dXJlIGZpZWxkCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBhcyB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgc2hhcmVk
IGJldHdlZW4gdmFyaW91cyBzdHJ1Y3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZp
ZXIoRXZxQ29uc3QpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgz
KV0ubGV4KS5saW5lLCAiIG5vIHN1Y2ggZmllbGQgaW4gc3RydWN0dXJlIiwgKHl5dnNwWygzKSAt
ICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOworICAg
ICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bMV07CisgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdChpKTsK
KyAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksICpmaWVsZHNbaV0tPnR5cGUoKSwg
KHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4
RGlyZWN0U3RydWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
aW5kZXgsICh5eWxzcFsoMikgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOwogICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIG5vIHN1Y2ggZmllbGQgaW4gc3RydWN0
dXJlIiwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiBmaWVsZCBzZWxlY3Rpb24g
cmVxdWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIs
ICh5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiBmaWVsZCBzZWxlY3Rpb24gcmVxdWly
ZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIsICh5eXZz
cFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CkBA
IC0yNDQwLDM1ICsyNDk3LDM1IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxMjoKKyAgY2FzZSAxNDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1
ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAiKysiLCAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5s
VmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgIisrIiwgKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RJbmNyZW1lbnQsICh5eXZzcFsoMSkgLSAo
MildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUs
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVt
ZW50LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygy
KSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlP
cEVycm9yKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIisrIiwgKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgIisrIiwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5n
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM6
CisgIGNhc2UgMTU6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNo
ZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIi0tIiwgKHl5dnNwWygxKSAtICgyKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJy
b3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICItLSIsICh5eXZzcFsoMSkgLSAoMildLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0RGVjcmVtZW50LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdERlY3JlbWVudCwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMild
KSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFsoMSkgLSAoMildLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICItLSIsICh5eXZzcFsoMSkg
LSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0OgorICBjYXNl
IDE2OgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+aW50ZWdlckVycm9yQ2hlY2soKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICJbXSIpKQpAQCAtMjQ3Nyw3
ICsyNTM0LDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE1Ogor
ICBjYXNlIDE3OgogCiAgICAgewogICAgICAgICBURnVuY3Rpb24qIGZuQ2FsbCA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybSkuZnVuY3Rpb247CkBAIC0yNDkxLDE4ICsyNTQ4LDE4IEBAIHl5cmVk
dWNlOgogICAgICAgICAgICAgLy8gVGhlaXIgcGFyYW1ldGVycyB3aWxsIGJlIHZlcmlmaWVkIGFs
Z29yaXRobWljYWxseS4KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBUVHlwZSB0eXBlKEVi
dFZvaWQsIEVicFVuZGVmaW5lZCk7ICAvLyB1c2UgdGhpcyB0byBnZXQgdGhlIHR5cGUgYmFjawot
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVjaygoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmxpbmUsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9k
ZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmNvbnN0
cnVjdG9yRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybSkuaW50ZXJtTm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgewogICAgICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IDA7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgLy8gSXQncyBhIGNvbnN0cnVj
dG9yLCBvZiB0eXBlICd0eXBlJy4KICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0cnVjdG9y
KCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgJnR5cGUsIG9wLCBmbkNhbGws
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RydWN0b3IoKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgKHl5bHNw
WygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRl
T3BlcmF0b3IoMCwgb3AsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUodHlwZSk7CiAg
ICAgICAgIH0gZWxzZSB7CkBAIC0yNTExLDEzICsyNTY4LDEzIEBAIHl5cmVkdWNlOgogICAgICAg
ICAgICAgLy8KICAgICAgICAgICAgIGNvbnN0IFRGdW5jdGlvbiogZm5DYW5kaWRhdGU7CiAgICAg
ICAgICAgICBib29sIGJ1aWx0SW47Ci0gICAgICAgICAgICBmbkNhbmRpZGF0ZSA9IGNvbnRleHQt
PmZpbmRGdW5jdGlvbigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsIGZuQ2FsbCwgJmJ1
aWx0SW4pOworICAgICAgICAgICAgZm5DYW5kaWRhdGUgPSBjb250ZXh0LT5maW5kRnVuY3Rpb24o
KHl5bHNwWygxKSAtICgxKV0pLCBmbkNhbGwsICZidWlsdEluKTsKICAgICAgICAgICAgIGlmIChm
bkNhbmRpZGF0ZSkgewogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgLy8gQSBk
ZWNsYXJlZCBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIGlm
IChidWlsdEluICYmICFmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkuZW1wdHkoKSAmJgotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eXZzcFsoMSkg
LSAoMSldLmludGVybSkubGluZSwgZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgeworICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eWxzcFsoMSkg
LSAoMSldKSwgZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgewogICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIG9wID0gZm5DYW5kaWRhdGUtPmdldEJ1aWx0SW5PcCgpOwpAQCAtMjUyOSw3ICsyNTg2LDcg
QEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gVHJlYXQgaXQgbGlrZSBhIGJ1aWx0LWluIHVuYXJ5IG9wZXJhdG9yLgogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1h
dGgob3AsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgMCwgY29udGV4dC0+
c3ltYm9sVGFibGUpOworICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChvcCwgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXlsc3BbKDEpIC0gKDEpXSksIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJidWlsdCBpbiB1bmFyeSBvcGVyYXRvciBm
dW5jdGlvbi4gIFR5cGU6ICIgPDwgc3RhdGljX2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKTsKQEAgLTI1
MzgsMTIgKzI1OTUsMTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WVlFUlJPUjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgb3AsICh5eXZzcFsoMSkgLSAo
MSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3Bl
cmF0b3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIG9wLCAoeXls
c3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHJlYWwgZnVuY3Rpb24g
Y2FsbAogCi0gICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgRU9wRnVuY3Rpb25DYWxsLCAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRl
T3BlcmF0b3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIEVPcEZ1
bmN0aW9uQ2FsbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKGZuQ2FuZGlkYXRlLT5nZXRSZXR1
cm5UeXBlKCkpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgaG93IHdlIGtub3cg
d2hldGhlciB0aGUgZ2l2ZW4gZnVuY3Rpb24gaXMgYSBidWlsdEluIGZ1bmN0aW9uIG9yIGEgdXNl
ciBkZWZpbmVkIGZ1bmN0aW9uCkBAIC0yNTcwLDcgKzI2MjcsNyBAQCB5eXJlZHVjZToKICAgICAg
ICAgICAgICAgICAvLyBQdXQgb24gYSBkdW1teSBub2RlIGZvciBlcnJvciByZWNvdmVyeQogICAg
ICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlv
blsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoMC4wZik7Ci0gICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOwor
ICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTI1NzgsMzkgKzI2MzUsMzcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDE2OgorICBjYXNlIDE4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE3
OgorICBjYXNlIDE5OgogCiAgICAgewotICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0pLmxpbmUsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkIiwgIiIpOwor
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDMpXSksICJtZXRob2RzIGFyZSBu
b3Qgc3VwcG9ydGVkIiwgIiIpOwogICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKTsKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTg6CisgIGNhc2UgMjA6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKICAgICA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMTk6CisgIGNhc2UgMjE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0pID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFsLmludGVy
bSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgMjA6CisgIGNhc2UgMjI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0pLmZ1bmN0aW9uID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKTsKQEAgLTI2
MTgsNyArMjY3Myw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAy
MToKKyAgY2FzZSAyMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24g
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwpAQCAtMjYyNiw3ICsyNjgxLDcg
QEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDIyOgorICBjYXNlIDI0
OgogCiAgICAgewogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5cGUoKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSkgfTsKQEAg
LTI2MzYsMjQgKzI2OTEsMjQgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDIzOgorICBjYXNlIDI1OgogCiAgICAgewogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0g
eyAwLCBuZXcgVFR5cGUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldFR5cGUoKSkgfTsKICAgICAgICAgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlv
bi0+YWRkUGFyYW1ldGVyKHBhcmFtKTsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24g
PSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uOwotICAgICAgICAoeXl2YWwuaW50
ZXJtKS5pbnRlcm1Ob2RlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybSkuaW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93
QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDI0OgorICBjYXNlIDI2OgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5m
dW5jdGlvbik7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDI1OgorICBjYXNlIDI3Ogog
CiAgICAgewogICAgICAgICAvLwpAQCAtMjY2NywzOSArMjcyMiwzOSBAQCB5eXJlZHVjZToKICAg
ICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkg
LSAoMSldLmludGVybS50eXBlKS5tYXRyaXgpIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNo
KCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5zaXplKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BD
b25zdHJ1Y3RNYXQyOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RNYXQyOyAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2goKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0
cnVjdFZlYzI7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzM7ICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7ICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdFZlYzI7ICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdFZlYzM7ICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7ICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgogICAgICAgICAgICAgICAgIHN3aXRjaCgoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2l6ZSkgewotICAgICAgICAgICAgICAgIGNhc2Ug
MTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3Ry
dWN0SW50OyAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjogICAgICAgRlJBR19WRVJU
X09OTFkoIml2ZWMyIiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9
IEVPcENvbnN0cnVjdElWZWMyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAg
IEZSQUdfVkVSVF9PTkxZKCJpdmVjMyIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5s
aW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSA0OiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzQiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0SVZlYzQ7IGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMTogb3AgPSBFT3BDb25zdHJ1Y3RJbnQ7ICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdElWZWMyOyBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0SVZlYzM7IGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjNDsgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRCb29sOgog
ICAgICAgICAgICAgICAgIHN3aXRjaCgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2l6
ZSkgewotICAgICAgICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgMjogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWMyIiwgKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMyOyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMyIsICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMzsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiAgICAgICBGUkFHX1ZFUlRfT05MWSgiYnZl
YzQiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3Ry
dWN0QlZlYzQ7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTogb3AgPSBFT3BDb25zdHJ1
Y3RCb29sOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVj
dEJWZWMyOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0
QlZlYzM7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RC
VmVjNDsgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAob3AgPT0gRU9wTnVsbCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lLCAiY2Fubm90IGNvbnN0cnVjdCB0aGlzIHR5
cGUiLCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSkp
OworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgImNh
bm5vdCBjb25zdHJ1Y3QgdGhpcyB0eXBlIiwgZ2V0QmFzaWNTdHJpbmcoKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpLnR5cGUpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUg
PSBFYnRGbG9hdDsKICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OwpAQCAt
MjcxMiwyMSArMjc2NywxMCBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMjY6Ci0KLSAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2so
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJp
bmcpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBUVHlwZSB0eXBl
KEVidFZvaWQsIEVicFVuZGVmaW5lZCk7Ci0gICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBu
ZXcgVEZ1bmN0aW9uKCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBlKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBmdW5jdGlvbjsKLSAgICA7fQotICAgIGJyZWFr
OwotCi0gIGNhc2UgMjc6CisgIGNhc2UgMjg6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAqKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRF
cnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3Ry
aW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgVFR5cGUgdHlw
ZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwogICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0g
bmV3IFRGdW5jdGlvbigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZywgdHlwZSk7CkBAIC0y
NzM0LDQ2ICsyNzc4LDQ2IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAyODoKKyAgY2FzZSAyOToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDI5OgorICBjYXNlIDMwOgogCiAgICAgewotICAg
ICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgp
LmxpbmUsICIrKyIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0p
LCAiKysiLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlSW5j
cmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRV
bmFyeU1hdGgoRU9wUHJlSW5jcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAg
ICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwg
IisrIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFso
MSkgLSAoMildKSwgIisrIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMzA6CisgIGNhc2UgMzE6CiAKICAgICB7Ci0gICAgICAgIGlmIChj
b250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIi0t
IiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBp
ZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDIpXSksICItLSIsICh5
eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVEZWNyZW1lbnQsICh5
eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDEpIC0gKDIp
XS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChF
T3BQcmVEZWNyZW1lbnQsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXlsc3BbKDEpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYg
KCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT51bmFyeU9wRXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAiLS0iLCAoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5bHNwWygxKSAtICgyKV0p
LCAiLS0iLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAzMToKKyAgY2FzZSAzMjoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkg
LSAoMildLmludGVybSkub3AgIT0gRU9wTnVsbCkgewotICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLm9wLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5saW5lLCBjb250ZXh0LT5z
eW1ib2xUYWJsZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCh5eXZzcFsoMSkgLSAoMildLmlu
dGVybSkub3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXls
c3BbKDEpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgICAgIGlmICgo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewogICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGVycm9yT3AgPSAiIjsKICAgICAgICAgICAgICAgICBzd2l0Y2goKHl5dnNwWygx
KSAtICgyKV0uaW50ZXJtKS5vcCkgewpAQCAtMjc4MSw3ICsyODI1LDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OiBlcnJvck9wID0gIiEiOyBicmVhazsK
ICAgICAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmludGVy
bSkubGluZSwgZXJyb3JPcCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5
T3BFcnJvcigoeXlsc3BbKDEpIC0gKDIpXSksIGVycm9yT3AsICh5eXZzcFsoMikgLSAoMildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CiAgICAgICAgICAgICB9CkBAIC0yNzkwLDE4NSArMjgzNCwxNzggQEAgeXlyZWR1Y2U6CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDMyOgotCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5s
aW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVP
cE51bGw7IDt9Ci0gICAgYnJlYWs7Ci0KICAgY2FzZSAzMzoKIAotICAgIHsgKHl5dmFsLmludGVy
bSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3Ag
PSBFT3BOZWdhdGl2ZTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTnVsbDsgO30K
ICAgICBicmVhazsKIAogICBjYXNlIDM0OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5saW5lID0g
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcExvZ2lj
YWxOb3Q7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE5lZ2F0aXZlOyA7fQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMzU6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAg
IHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BMb2dpY2FsTm90OyA7fQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMzY6CiAKKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIGJyZWFrOworCisg
IGNhc2UgMzc6CisKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIqIiwgKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4
dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BNdWwsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewot
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUsICIqIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiKiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAg
ICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzNzoKKyAgY2FzZSAzODoKIAog
ICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIi8iLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BEaXYsICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcERpdiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAg
aWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIi8iLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3Bb
KDIpIC0gKDMpXSksICIvIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDM4OgorICBjYXNlIDM5OgogCiAgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDM5OgorICBjYXNlIDQwOgogCiAg
ICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEFkZCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYg
KCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIisiLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIp
IC0gKDMpXSksICIrIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDQwOgorICBjYXNlIDQxOgogCiAgICAgewotICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QmluYXJ5TWF0aChFT3BTdWIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5h
cnlNYXRoKEVPcFN1YiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0g
KDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVy
cm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIi0iLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICItIiwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDQxOgorICBjYXNlIDQyOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KICAg
ICBicmVhazsKIAotICBjYXNlIDQyOgorICBjYXNlIDQzOgogCiAgICAgeyAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDQzOgorICBjYXNlIDQ0OgogCiAgICAgewot
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAg
IGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAg
Y29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICI8Iiwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNw
WygyKSAtICgzKV0pLCAiPCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENv
bnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2Up
OwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7Cisg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0NDoKKyAgY2FzZSA0NToKIAogICAgIHsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW4sICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAg
ICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiPiIs
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxz
cFsoMikgLSAoMyldKSwgIj4iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNl
KTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwor
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDU6CisgIGNhc2UgNDY6CiAKICAgICB7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1YWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1YWwsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAg
ICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUs
ICI8PSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9y
KCh5eWxzcFsoMikgLSAoMyldKSwgIjw9IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25z
dChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAg
ICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDQ2OgorICBjYXNlIDQ3OgogCiAgICAg
ewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgz
KV0ubGV4KS5saW5lLCAiPj0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICI+PSIsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9u
ICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgz
KV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0NzoKKyAgY2Fz
ZSA0ODoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA0ODoKKyAgY2FzZSA0OToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1YWws
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5l
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVxdWFsLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAt
ICgzKV0ubGV4KS5saW5lLCAiPT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICI9PSIsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVu
aW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlv
bkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFso
MikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAt
ICgzKV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0OToKKyAg
Y2FzZSA1MDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTm90RXF1YWwsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5vdEVxdWFsLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgz
KV0ubGV4KS5saW5lLCAiIT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIhPSIsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9u
ICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgz
KV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1MDoKLQotICAg
IHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9Ci0gICAgYnJlYWs7Ci0KICAgY2FzZSA1MToKIAogICAg
IHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CkBAIC0yOTg2LDE0MyArMzAyMywxNDggQEAgeXlyZWR1
Y2U6CiAKICAgY2FzZSA1NDoKIAorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgYnJl
YWs7CisKKyAgY2FzZSA1NToKKwogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNh
bEFuZCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9n
aWNhbEFuZCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSks
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5
eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiYmIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiJiYiLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAg
Q29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAg
ICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5
eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgNTU6CisgIGNhc2UgNTY6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgNTY6CisgIGNhc2UgNTc6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcExvZ2ljYWxYb3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5h
cnlNYXRoKEVPcExvZ2ljYWxYb3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNw
WygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+Ymlu
YXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJeXiIsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyld
KSwgIl5eIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlv
blsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDU3OgorICBjYXNlIDU4OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDU4OgorICBjYXNlIDU5OgogCiAgICAgewotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsT3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxPciwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAg
aWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgInx8Iiwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNw
WygyKSAtICgzKV0pLCAifHwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNl
KTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwor
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNTk6CisgIGNhc2UgNjA6CiAKICAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjA6CisgIGNhc2UgNjE6CiAK
ICAgICB7Ci0gICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAo
NSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkp
KQorICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUpXSks
ICh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5eXZzcFsoMSkgLSAo
NSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oKHl5dnNw
WygxKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoNSldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5bHNwWygyKSAtICg1KV0pKTsKICAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAo
NSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkgIT0gKHl5dnNwWyg1KSAtICg1
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSkKICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IDA7CiAKICAgICAgICAgaWYgKCh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlP
cEVycm9yKCh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSwgIjoiLCAoeXl2c3BbKDMpIC0gKDUp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWyg1
KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwor
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDUpXSksICI6
IiwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoNSkgLSAoNSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDYxOgorICBjYXNlIDYyOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDYyOgorICBjYXNlIDYzOgogCiAgICAgewotICAgICAgICBp
ZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0pLmxp
bmUsICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMyld
KSwgImFzc2lnbiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEFzc2lnbigoeXl2c3Bb
KDIpIC0gKDMpXS5pbnRlcm0pLm9wLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFsoMikgLSAoMyldLmludGVybSkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRBc3NpZ24oKHl5dnNwWygyKSAt
ICgzKV0uaW50ZXJtKS5vcCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIp
IC0gKDMpXSkpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9yKCh5eXZzcFsoMikgLSAoMyld
LmludGVybSkubGluZSwgImFzc2lnbiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5hc3NpZ25FcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJhc3NpZ24iLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5n
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjM6
Ci0KLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3Ag
PSBFT3BBc3NpZ247IDt9Ci0gICAgYnJlYWs7Ci0KICAgY2FzZSA2NDoKIAotICAgIHsgRlJBR19W
RVJUX09OTFkoIio9IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsgICAgICh5eXZhbC5p
bnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0p
Lm9wID0gRU9wTXVsQXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBc3Np
Z247IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2NToKIAotICAgIHsgRlJBR19WRVJUX09OTFko
Ii89IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsgICAgICh5eXZhbC5pbnRlcm0pLmxp
bmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9w
RGl2QXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BNdWxBc3NpZ247IDt9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2NjoKIAotICAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFkZEFzc2lnbjsgO30KKyAgICB7ICh5eXZh
bC5pbnRlcm0pLm9wID0gRU9wRGl2QXNzaWduOyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjc6
CiAKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3Ag
PSBFT3BTdWJBc3NpZ247IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFkZEFzc2ln
bjsgO30KICAgICBicmVhazsKIAogICBjYXNlIDY4OgogCi0gICAgewotICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKLSAgICA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BTdWJBc3Np
Z247IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2OToKIAogICAgIHsKLSAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1h
KCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5l
KTsKLSAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCku
bGluZSwgIiwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKKyAg
ICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNzA6CisKKyAgICB7CisgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb21tYSgo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7CisgICAgICAg
IGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgeworICAgICAgICAgICAg
Y29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIsIiwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDcw
OgorICBjYXNlIDcxOgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+Y29uc3RFcnJvckNo
ZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKQEAgLTMxMzEs
NyArMzE3Myw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3MToK
KyAgY2FzZSA3MjoKIAogICAgIHsKICAgICAgICAgVEZ1bmN0aW9uICZmdW5jdGlvbiA9ICooKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtKS5mdW5jdGlvbik7CkBAIC0zMTQ1LDEzICszMTg3LDEzIEBA
IHl5cmVkdWNlOgogICAgICAgICAgICAgY29uc3QgVFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlv
bi5nZXRQYXJhbShpKTsKICAgICAgICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFyaWFi
bGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOworICAgICAgICAgICAgICAgIFRWYXJpYWJsZSB2
YXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlwZSk7CiAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdh
dGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5n
ZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0p
LmxpbmUpOworICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCh2YXJpYWJsZS5nZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS5nZXROYW1lKCksIHZhcmlhYmxlLmdl
dFR5cGUoKSwgKHl5bHNwWygxKSAtICgyKV0pKSwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5
cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0p
LmxpbmUpOworICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCgwLCAiIiwgKnBhcmFtLnR5cGUsICh5eWxzcFsoMSkgLSAoMildKSksICh5eWxzcFsoMSkgLSAo
MildKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zMTYyLDcgKzMy
MDQsNyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzI6CisgIGNh
c2UgNzM6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmlu
dGVybUFnZ3JlZ2F0ZSkKQEAgLTMxNzEsMjIgKzMyMTMsMjIgQEAgeXlyZWR1Y2U6CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDczOgorICBjYXNlIDc0OgogCiAgICAgewogICAgICAgICBp
ZiAoKCh5eXZzcFsoMikgLSAoNCldLmludGVybS5wcmVjaXNpb24pID09IEVicEhpZ2gpICYmIChj
b250ZXh0LT5zaGFkZXJUeXBlID09IFNIX0ZSQUdNRU5UX1NIQURFUikgJiYgIWNvbnRleHQtPmZy
YWdtZW50UHJlY2lzaW9uSGlnaCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNw
WygxKSAtICg0KV0ubGV4KS5saW5lLCAicHJlY2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZnJh
Z21lbnQgc2hhZGVyIiwgImhpZ2hwIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbKDEpIC0gKDQpXSksICJwcmVjaXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBz
aGFkZXIiLCAiaGlnaHAiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoIWNvbnRleHQtPnN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNp
b24oICh5eXZzcFsoMykgLSAoNCldLmludGVybS50eXBlKSwgKHl5dnNwWygyKSAtICg0KV0uaW50
ZXJtLnByZWNpc2lvbikgKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygx
KSAtICg0KV0ubGV4KS5saW5lLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0IHBy
ZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDMpIC0gKDQpXS5pbnRl
cm0udHlwZSkudHlwZSkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAt
ICg0KV0pLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFs
aWZpZXIiLCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0udHlwZSkudHlw
ZSkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA3NDoKKyAgY2FzZSA3NToKIAogICAgIHsKICAgICAgICAgLy8KQEAgLTMyMDAsMTIgKzMy
NDIsMTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRGdW5jdGlvbiogcHJldkRlYyA9IHN0YXRpY19j
YXN0PFRGdW5jdGlvbio+KGNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmQoKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0TWFuZ2xlZE5hbWUoKSkpOwogICAgICAgICBpZiAocHJl
dkRlYykgewogICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdldFJldHVyblR5cGUoKSAhPSAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJv
dmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUiLCAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNT
dHJpbmcoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgy
KV0pLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBl
IiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UmV0dXJuVHlwZSgpLmdl
dEJhc2ljU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJldkRlYy0+
Z2V0UGFyYW1Db3VudCgpOyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0
UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkgIT0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAi
b3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZp
ZXJzIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlw
ZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUg
dGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
ZnVuY3Rpb24pLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkBAIC0zMjE3LDcgKzMyNTksNiBAQCB5eXJlZHVjZToKICAgICAgICAgLy8g
YmVpbmcgcmVkZWNsYXJlZC4gIFNvLCBwYXNzIGJhY2sgdXAgdGhpcyBkZWNsYXJhdGlvbiwgbm90
IHRoZSBvbmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4KICAgICAgICAgLy8KICAgICAgICAgKHl5dmFs
LmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwot
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5l
OwogCiAgICAgICAgIC8vIFdlJ3JlIGF0IHRoZSBpbm5lciBzY29wZSBsZXZlbCBvZiB0aGUgZnVu
Y3Rpb24ncyBhcmd1bWVudHMgYW5kIGJvZHkgc3RhdGVtZW50LgogICAgICAgICAvLyBBZGQgdGhl
IGZ1bmN0aW9uIHByb3RvdHlwZSB0byB0aGUgc3Vycm91bmRpbmcgc2NvcGUgaW5zdGVhZC4KQEAg
LTMyMjUsMjEgKzMyNjYsMjEgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDc1OgorICBjYXNlIDc2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0
aW9uKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDc2OgorICBjYXNlIDc3OgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLmZ1bmN0aW9uKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDc3OgorICBjYXNlIDc4OgogCiAgICAgewogICAg
ICAgICAvLyBBZGQgdGhlIHBhcmFtZXRlcgpAQCAtMzI1MSw3ICszMjkyLDcgQEAgeXlyZWR1Y2U6
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDc4OgorICBjYXNlIDc5OgogCiAgICAgewog
ICAgICAgICAvLwpAQCAtMzI2Miw3ICszMzAzLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAv
LwogICAgICAgICAgICAgLy8gVGhpcyBwYXJhbWV0ZXIgPiBmaXJzdCBpcyB2b2lkCiAgICAgICAg
ICAgICAvLwotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4
KS5saW5lLCAiY2Fubm90IGJlIGFuIGFyZ3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIs
ICJ2b2lkIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMpXSks
ICJjYW5ub3QgYmUgYW4gYXJndW1lbnQgdHlwZSBleGNlcHQgZm9yICcodm9pZCknIiwgInZvaWQi
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGRlbGV0ZSAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pLnBhcmFtLnR5cGU7CiAgICAgICAgIH0gZWxzZSB7CkBA
IC0zMjczLDE1ICszMzE0LDE1IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA3OToKKyAgY2FzZSA4MDoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAo
MyldLmludGVybS50eXBlKS5xdWFsaWZpZXIgIT0gRXZxR2xvYmFsICYmICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS50eXBlKS5xdWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5KSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJubyBxdWFsaWZp
ZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJubyBxdWFsaWZpZXJzIGFsbG93ZWQgZm9y
IGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIH0KICAgICAgICAgLy8gbWFrZSBzdXJlIGEgc2FtcGxlciBpcyBub3QgaW52b2x2
ZWQgYXMgd2VsbC4uLgotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JD
aGVjaygoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNr
KCh5eWxzcFsoMikgLSAoMyldKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0
aW9uIGFzIGEgcHJvdG90eXBlIGFmdGVyIHBhcnNpbmcgaXQgKHdlIGRvIG5vdCBzdXBwb3J0IHJl
Y3Vyc2lvbikKQEAgLTMyOTQsMTEyICszMzM1LDExMCBAQCB5eXJlZHVjZToKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgODA6CisgIGNhc2UgODE6CiAKICAgICB7CiAgICAgICAgIGlmICgo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9PSBFYnRWb2lkKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJpbGxlZ2Fs
IHVzZSBvZiB0eXBlICd2b2lkJyIsICh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLT5jX3N0
cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgImls
bGVnYWwgdXNlIG9mIHR5cGUgJ3ZvaWQnIiwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmct
PmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAo
Y29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgKih5eXZzcFso
MikgLSAoMildLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmlu
ZywgbmV3IFRUeXBlKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKSl9OwotICAgICAgICAo
eXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lOwogICAgICAg
ICAoeXl2YWwuaW50ZXJtKS5wYXJhbSA9IHBhcmFtOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA4MToKKyAgY2FzZSA4MjoKIAogICAgIHsKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBj
YW4gbWFrZSBhbiBhcnJheSBvdXQgb2YgdGhpcyB0eXBlCi0gICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygx
KSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVy
cm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlw
ZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250
ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lLCAqKHl5
dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2
ZWRFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKih5eXZzcFsoMikgLSAoNSldLmxleCku
c3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBpbnQg
c2l6ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygz
KSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5
eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksIHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2
c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAKICAgICAg
ICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUp
KTsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgKHl5dnNwWygyKSAtICg1KV0ubGV4KS5z
dHJpbmcsIHR5cGUgfTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMikg
LSAoNSldLmxleCkubGluZTsKICAgICAgICAgKHl5dmFsLmludGVybSkucGFyYW0gPSBwYXJhbTsK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODI6CisgIGNhc2UgODM6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKTsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0p
LmxpbmUsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFso
MikgLSAoMyldLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSks
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFsoMikgLSAo
MyldLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
ODM6CisgIGNhc2UgODQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBs
ZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmludGVybSkubGluZSwgKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLnF1YWxpZmllciksICooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFt
LnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2so
KHl5bHNwWygyKSAtICgyKV0pLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwg
Kih5eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAo
MildLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAg
ICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksIEV2cVRl
bXBvcmFyeSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRl
cm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4NDoKKyAgY2FzZSA4NToKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwotICAgICAgICBpZiAo
Y29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybSkubGluZSwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygyKSAtICgz
KV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAg
ICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygyKSAtICgzKV0uaW50
ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4NToKKyAg
Y2FzZSA4NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9y
Q2hlY2soKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0udHlwZSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjaygoeXlsc3Bb
KDIpIC0gKDIpXSksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAqKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXl2c3BbKDIp
IC0gKDIpXS5pbnRlcm0pLmxpbmUsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAo
Y29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgRXZxVGVtcG9yYXJ5
LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFy
YW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDg2OgorICBjYXNlIDg3OgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLnF1YWxpZmllcikgPSBFdnFJbjsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
ODc6CisgIGNhc2UgODg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVy
KSA9IEV2cUluOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4ODoKKyAgY2FzZSA4OToK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxT3V0OwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4OToKKyAgY2FzZSA5MDoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW5PdXQ7CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDkwOgorICBjYXNlIDkxOgogCiAgICAgewogICAgICAgICBUUGFyYW1ldGVy
IHBhcmFtID0geyAwLCBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpKSB9
OwpAQCAtMzQwNywxMDQgKzM0NDYsMTA0IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA5MToKKyAgY2FzZSA5MjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA5MjoKKyAgY2FzZSA5MzoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAo
MyldLmludGVybSkudHlwZS50eXBlID09IEVidEludmFyaWFudCAmJiAhKHl5dnNwWygzKSAtICgz
KV0ubGV4KS5zeW1ib2wpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eXZzcFsoMykgLSAoMyldLmxleCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJl
ZCBhcyBpbnZhcmlhbnQiLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDMpXSksICJ1bmRlY2xh
cmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgKHl5dnNwWygzKSAtICgzKV0u
bGV4KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICB9CiAKLSAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsIFRU
eXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkudHlwZSksICh5eXZzcFsoMykgLSAoMyldLmxl
eCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSku
aW50ZXJtTm9kZSwgc3ltYm9sLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAg
ICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KDAsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtKS50eXBlKSwgKHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdh
dGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBzeW1ib2wsICh5eWxzcFso
MykgLSAoMyldKSk7CiAgICAgICAgIAotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlm
aWVyRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUsICh5eXZhbC5pbnRlcm0p
LnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygo
eXlsc3BbKDMpIC0gKDMpXSksICh5eXZhbC5pbnRlcm0pLnR5cGUpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJv
ckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoMyldLmxl
eCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCBmYWxzZSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKih5eXZzcFso
MykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCBmYWxzZSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJs
ZSA9IDA7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXl2c3BbKDMp
IC0gKDMpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dmFs
LmludGVybSkudHlwZSwgdmFyaWFibGUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVy
cm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJp
bmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgaWYgKHN5bWJvbCAmJiB2YXJpYWJsZSkKICAgICAgICAgICAg
IHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgIDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSA5MzoKKyAgY2FzZSA5NDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5l
LCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+
c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5eXZzcFsoMSkg
LSAoNSldLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAK
LSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygzKSAt
ICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFso
MSkgLSAoNSldLmludGVybSkudHlwZSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25J
bml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKih5eXZzcFsoMykgLSAoNSld
LmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsIHRydWUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0g
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlU
eXBlRXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAo
NSldLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5
eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAt
ICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5
UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSld
LmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLnNldEFy
cmF5KHRydWUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZTsKLSAgICAgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5dnNwWyg0KSAtICg1KV0ubGV4KS5saW5l
LCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVy
bSkudHlwZSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JD
aGVjaygoeXlsc3BbKDQpIC0gKDUpXSksICooeXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDk0OgorICBjYXNlIDk1OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+c3Ry
dWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDYpXS5sZXgpLmxpbmUsICh5eXZz
cFsoMSkgLSAoNildLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNildKSwgKHl5dnNwWygxKSAtICg2KV0u
aW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAg
ICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDYpXS5s
ZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg2
KV0uaW50ZXJtKS50eXBlLCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25z
dEVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg2KV0pLCAqKHl5dnNwWygzKSAtICg2KV0ubGV4KS5z
dHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSwgdHJ1ZSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3Bb
KDEpIC0gKDYpXS5pbnRlcm0pOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJv
ckNoZWNrKCh5eXZzcFsoNCkgLSAoNildLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg2KV0uaW50
ZXJtKS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWyg0
KSAtICg2KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpKQorICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDYpXSks
ICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZp
ZXJFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJt
KS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNp
emVFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNildLmxleCkubGluZSwgKHl5dnNwWyg1KSAtICg2
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQorICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAoeXl2c3BbKDUpIC0g
KDYpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50
eXBlLnNldEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJs
ZSA9IDA7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eXZzcFso
NCkgLSAoNildLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCAoeXl2
c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgICAgIGlmIChj
b250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAqKHl5dnNwWygzKSAt
ICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSwgdmFyaWFi
bGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIFRU
eXBlIHR5cGUgPSBUVHlwZSgoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpOwogICAgICAg
ICAgICAgdHlwZS5zZXRBcnJheVNpemUoc2l6ZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJt
KS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgo
eXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICooeXl2
c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5dnNwWygzKSAtICg2KV0ubGV4KS5s
aW5lKSwgKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVn
YXRlKCh5eXZzcFsoMSkgLSAoNildLmludGVybSkuaW50ZXJtTm9kZSwgY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpIDogMCwg
Kih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCB0eXBlLCAoeXlsc3BbKDMpIC0gKDYpXSkp
LCAoeXlsc3BbKDMpIC0gKDYpXSkpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDk1OgorICBjYXNlIDk2OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+c3Ry
dWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZz
cFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0u
aW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAg
ICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAoNSldLmludGVybSk7CiAKICAgICAgICAg
VEludGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUlu
aXRpYWxpemVyKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoNSld
LmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsICh5eXZzcFsoNSkg
LSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkgeworICAgICAgICBp
ZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigoeXlsc3BbKDMpIC0gKDUpXSksICooeXl2
c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBl
LCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkp
IHsKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBidWlsZCB0aGUgaW50ZXJtZWRpYXRl
IHJlcHJlc2VudGF0aW9uCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgaWYgKGludGVybU5v
ZGUpCi0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoNSldLmludGVybSkuaW50ZXJt
Tm9kZSwgaW50ZXJtTm9kZSwgKHl5dnNwWyg0KSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAgICAg
KHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdy
b3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBpbnRlcm1O
b2RlLCAoeXlsc3BbKDQpIC0gKDUpXSkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9ICh5eXZzcFsoMSkgLSAoNSldLmlu
dGVybSkuaW50ZXJtQWdncmVnYXRlOwogICAgICAgICB9IGVsc2UgewpAQCAtMzUxNCw3NyArMzU1
Myw3NyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTY6CisgIGNh
c2UgOTc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0udHlwZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKSksICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKSwgKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1B
Z2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0udHlwZSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NzoKKyAgY2FzZSA5ODoKIAogICAgIHsKLSAgICAg
ICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAo
MildLmludGVybS50eXBlKSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5t
YWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAo
MildLmludGVybS50eXBlKSksICh5eWxzcFsoMikgLSAoMildKSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVn
YXRlKHN5bWJvbCwgKHl5bHNwWygyKSAtICgyKV0pKTsKICAgICAgICAgCi0gICAgICAgIGlmIChj
b250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCku
bGluZSwgKHl5dmFsLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgKHl5dmFsLmludGVybSkudHlw
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRl
eHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAq
KHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZhbHNl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygy
KSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0p
LnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoMild
LmludGVybS50eXBlKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCku
bGluZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBl
LCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXls
c3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZywgKHl5dmFsLmlu
dGVybSkudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJ
ZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDk4OgorICBjYXNlIDk5OgogCiAgICAgewotICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDIpIC0gKDQpXS5sZXgpLmxpbmUsICJ1bnNpemVkIGFycmF5IGRlY2xhcmF0aW9ucyBub3Qgc3Vw
cG9ydGVkIiwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDQpXSksICJ1bnNpemVkIGFycmF5IGRlY2xh
cmF0aW9ucyBub3Qgc3VwcG9ydGVkIiwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmctPmNf
c3RyKCkpOwogICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgVEludGVybVN5
bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNw
WygyKSAtICg0KV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS50
eXBlKSksICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRl
KHN5bWJvbCwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgVEludGVybVN5
bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNw
WygyKSAtICg0KV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS50
eXBlKSksICh5eWxzcFsoMikgLSAoNCldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVy
bUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwg
KHl5bHNwWygyKSAtICg0KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZz
cFsoMSkgLSAoNCldLmludGVybS50eXBlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
OTk6CisgIGNhc2UgMTAwOgogCiAgICAgewogICAgICAgICBUVHlwZSB0eXBlID0gVFR5cGUoKHl5
dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKTsKICAgICAgICAgaW50IHNpemU7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCku
bGluZSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQor
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUp
XSksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgdHlwZS5zZXRBcnJheVNpemUo
c2l6ZSk7Ci0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCB0eXBlLCAo
eXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2ws
ICh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5
bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAo
NSldLmxleCkuc3RyaW5nLCB0eXBlLCAoeXlsc3BbKDIpIC0gKDUpXSkpOworICAgICAgICAoeXl2
YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFn
Z3JlZ2F0ZShzeW1ib2wsICh5eWxzcFsoMikgLSAoNSldKSk7CiAgICAgICAgIAotICAgICAgICBp
ZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKHl5
dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXl2
c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAqKHl5dnNwWygy
KSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSwgdHJ1
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmlu
dGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKTsKIAotICAgICAgICBp
ZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxp
bmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkgfHwgY29udGV4dC0+YXJyYXlRdWFs
aWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAt
ICg1KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9y
Q2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkp
IHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSks
ICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0gICAgICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXpl
KSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFso
MykgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNp
emUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAgICAg
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLnNldEFycmF5KHRydWUsIHNpemUpOwogICAg
ICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKih5eXZzcFso
MikgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSksIHZh
cmlhYmxlKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5bHNw
WygzKSAtICg1KV0pLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkg
LSAoNSldLmludGVybS50eXBlKSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAgICAgICAg
ICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CkBAIC0zNTky
LDIxICszNjMxLDIxIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
MDA6CisgIGNhc2UgMTAxOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVh
bGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkg
LSAoNCldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZp
ZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNCldKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAoeXl2
YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpOwogCiAgICAg
ICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1
dGVJbml0aWFsaXplcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0g
KDQpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3Bb
KDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpIHsKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWygyKSAtICg0KV0pLCAq
KHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50
eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5v
ZGUpKSB7CiAgICAgICAgIC8vCiAgICAgICAgIC8vIEJ1aWxkIGludGVybWVkaWF0ZSByZXByZXNl
bnRhdGlvbgogICAgICAgICAvLwogICAgICAgICAgICAgaWYoaW50ZXJtTm9kZSkKLSAgICAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0gKDQpXS5sZXgpLmxp
bmUpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGludGVybU5vZGUsICh5eWxzcFsoMykg
LSAoNCldKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bSkuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAgICAgfSBlbHNlIHsKQEAgLTM2MTYsNTggKzM2
NTUsNTggQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwMToKKyAg
Y2FzZSAxMDI6CiAKICAgICB7Ci0gICAgICAgIFZFUlRFWF9PTkxZKCJpbnZhcmlhbnQgZGVjbGFy
YXRpb24iLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4
dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAg
ICAgIFZFUlRFWF9PTkxZKCJpbnZhcmlhbnQgZGVjbGFyYXRpb24iLCAoeXlsc3BbKDEpIC0gKDIp
XSkpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0g
KDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2
YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0pLnR5cGUuc2V0QmFzaWMoRWJ0SW52YXJpYW50LCBFdnFJbnZhcmlhbnRWYXJ5aW5n
T3V0LCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJt
KS50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgKHl5
bHNwWygyKSAtICgyKV0pKTsKICAgICAgICAgaWYgKCEoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN5
bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAt
ICgyKV0ubGV4KS5saW5lLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFy
aWFudCIsICh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgInVuZGVjbGFyZWQgaWRlbnRp
ZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmlu
Zy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAg
ICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBUSW50ZXJtU3ltYm9s
ICpzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIp
IC0gKDIpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dmFsLmludGVybSkudHlwZSksICh5eXZzcFso
MikgLSAoMildLmxleCkubGluZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1B
Z2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5
eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7CisgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpz
eW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dmFsLmludGVybSkudHlwZSksICh5eWxzcFsoMikg
LSAoMildKSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eWxzcFsoMikgLSAo
MildKSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAyOgorICBj
YXNlIDEwMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS50eXBlKTsKIAogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLnR5cGUpLmFycmF5KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xh
c3MgYXJyYXkiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSld
KSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKS5zZXRBcnJheShmYWxzZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTAzOgorICBjYXNlIDEwNDoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMikg
LSAoMildLmludGVybS50eXBlKS5hcnJheSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZp
cnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIp
IC0gKDIpXSksICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0udHlwZSkuc2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCh5
eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlICYm
CiAgICAgICAgICAgICAoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0
Qm9vbCB8fCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9PSBFYnRJbnQpKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlw
ZSkubGluZSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZygoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBn
ZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmll
cikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAg
IGlmICgoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9PSBFdnFWYXJ5
aW5nSW4gfHwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9PSBFdnFW
YXJ5aW5nT3V0KSAmJgogICAgICAgICAgICAgKCh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBl
KS50eXBlID09IEVidEJvb2wgfHwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUg
PT0gRWJ0SW50KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgy
KV0uaW50ZXJtLnR5cGUpLmxpbmUsICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZp
ZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiY2Fubm90IGJlIGJv
b2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50
eXBlKS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50
ZXJtLnR5cGUpOwpAQCAtMzY3NSw3MSArMzcxNCw3MSBAQCB5eXJlZHVjZToKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTA0OgorICBjYXNlIDEwNToKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFDb25zdCwgKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRWb2lkLCBFdnFDb25zdCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgMTA1OgorICBjYXNlIDEwNjoKIAogICAgIHsKLSAgICAgICAgVkVSVEVYX09O
TFkoImF0dHJpYnV0ZSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwg
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0cmlidXRlIikpCisgICAg
ICAgIFZFUlRFWF9PTkxZKCJhdHRyaWJ1dGUiLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAg
ICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1
dGUsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEw
NjoKKyAgY2FzZSAxMDc6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJv
ckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFs
RXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSwgInZhcnlpbmciKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gU0hfVkVSVEVYX1NIQURFUikKLSAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWlu
Z091dCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ091dCwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nSW4sICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGlu
ZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2
cVZhcnlpbmdJbiwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTA3OgorICBjYXNlIDEwODoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmds
b2JhbEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQorICAgICAgICBp
ZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDIpXSksIGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChjb250ZXh0LT5zaGFkZXJU
eXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICh5eXZzcFsoMSkgLSAo
MildLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICh5eWxzcFsoMSkgLSAoMildKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
Vm9pZCwgRXZxSW52YXJpYW50VmFyeWluZ0luLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUp
OworICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJ
bnZhcmlhbnRWYXJ5aW5nSW4sICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDEwODoKKyAgY2FzZSAxMDk6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQorICAgICAgICBpZiAo
Y29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgInVuaWZvcm0iKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRW
b2lkLCBFdnFVbmlmb3JtLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVVuaWZvcm0sICh5eWxzcFso
MSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwOToKKyAgY2FzZSAx
MTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSk7CiAKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0udHlwZSkucHJl
Y2lzaW9uID09IEVicFVuZGVmaW5lZCkgewogICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5wcmVjaXNpb24gPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5nZXREZWZhdWx0UHJlY2lzaW9uKCh5
eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBlKTsKLSAgICAgICAgICAgIGlmIChjb250
ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5s
aW5lLCAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiwgKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLnR5cGUpLnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9uRXJy
b3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksICh5eXZhbC5pbnRlcm0udHlwZSkucHJlY2lzaW9u
LCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSkpIHsKICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTEwOgorICBjYXNlIDExMToKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKTsKQEAg
LTM3NDcsNjMgKzM3ODYsNTUgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDExMToKKyAgY2FzZSAxMTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJl
Y2lzaW9uKSA9IEVicEhpZ2g7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDExMjoKKyAg
Y2FzZSAxMTM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVi
cE1lZGl1bTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTEzOgorICBjYXNlIDExNDoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwTG93OwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTQ6CisgIGNhc2UgMTE1OgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUp
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTU6CisgIGNhc2UgMTE2OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LnR5cGUpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eXZz
cFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg0
KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0
KV0ubGV4KS5saW5lLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
c2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXls
c3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICB9CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDExNjoKLQotICAgIHsKLSAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFZvaWQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgO30KLSAg
ICBicmVhazsKLQogICBjYXNlIDExNzoKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0
LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAg
ICAgO30KICAgICBicmVhazsKIApAQCAtMzgxMSw3ICszODQyLDcgQEAgeXlyZWR1Y2U6CiAKICAg
ICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCku
bGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1
YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzgxOSw3
ICszODUwLDcgQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBx
dWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7
fQogICAgIGJyZWFrOwogCkBAIC0zODI3LDggKzM4NTgsNyBAQCB5eXJlZHVjZToKIAogICAgIHsK
ICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEp
IC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4MzYsOCArMzg2Niw4IEBAIHl5
cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdn
cmVnYXRlKDMpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0
LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEFnZ3JlZ2F0ZSgyKTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0zODQ1LDggKzM4NzUs
OCBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5
OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzg1NCw4
ICszODg0LDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBx
dWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgO30KICAgICBicmVhazsKIApAQCAt
Mzg2Myw4ICszODkzLDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRC
b29sLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICA7fQogICAgIGJyZWFrOwog
CkBAIC0zODcyLDggKzM5MDIsOCBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidEJvb2wsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOworICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOwogICAgIDt9CiAgICAgYnJl
YWs7CiAKQEAgLTM4ODEsOCArMzkxMSw4IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICA7fQogICAg
IGJyZWFrOwogCkBAIC0zODkwLDggKzM5MjAsOCBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAg
ICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
ID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCkBAIC0zODk5LDk1ICszOTI5LDk2IEBAIHl5cmVkdWNlOgogCiAgICAgewog
ICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUp
OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkgLSAo
MSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjk6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJtYXQyIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyLCB0cnVlKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSld
KSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzA6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJtYXQzIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzLCB0cnVlKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMiwgdHJ1ZSk7CiAg
ICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDEzMToKIAogICAgIHsKLSAgICAgICAgRlJBR19W
RVJUX09OTFkoIm1hdDQiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQsIHRydWUpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0g
KDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzLCB0cnVl
KTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMyOgogCiAgICAgewotICAgICAgICBG
UkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsK
ICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwg
cXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRBZ2dyZWdhdGUoNCwgdHJ1ZSk7CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDEzMzoK
IAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXJDdWJlIiwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5Owot
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXJDdWJlLCBxdWFs
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAg
ICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTM0OgogCiAgICAgeworICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0U2FtcGxlckN1YmUsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgO30KKyAgICBi
cmVhazsKKworICBjYXNlIDEzNToKKworICAgIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ1bnN1cHBvcnRl
ZCB0eXBlIiwgInNhbXBsZXJFeHRlcm5hbE9FUyIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5bHNwWygxKSAtICgxKV0pLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJu
YWxPRVMiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAg
ICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckV4dGVybmFsT0VTIiwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXJFeHRlcm5hbE9FUywgcXVh
bCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5eWxzcFsoMSkgLSAo
MSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzNToKKyAgY2FzZSAxMzY6CiAK
ICAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl90
ZXh0dXJlX3JlY3RhbmdsZSIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXIyRFJlY3Qi
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgInVuc3Vw
cG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVjdCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyMkRSZWN0
IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBs
ZXIyRFJlY3QsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgKHl5bHNw
WygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM2OgorICBjYXNl
IDEzNzoKIAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInN0cnVjdCIsICh5eXZzcFso
MSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKICAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkg
PyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDEzNzoKKyAgY2FzZSAxMzg6CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC0zOTk2LDg1ICs0MDI3
LDg2IEBAIHl5cmVkdWNlOgogICAgICAgICAvLwogICAgICAgICBUVHlwZSYgc3RydWN0dXJlID0g
c3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zeW1ib2wpLT5n
ZXRUeXBlKCk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIHF1YWwsICh5eXZzcFsoMSkgLSAo
MSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
U3RydWN0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnVzZXJEZWYgPSAmc3RydWN0dXJlOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxMzg6CisgIGNhc2UgMTM5OgogCi0gICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNs
YXJhdGlvbigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDMpXS5s
ZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KKyAgICB7IGlmIChjb250ZXh0LT5l
bnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFsoMikgLSAoMyldKSwgKih5eXZzcFsoMikgLSAo
MyldLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTM5OgorICBjYXNlIDE0MDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJl
c2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIp
IC0gKDYpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9y
Q2hlY2soKHl5bHNwWygyKSAtICg2KV0pLCAqKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRUeXBlKiBzdHJ1
Y3R1cmUgPSBuZXcgVFR5cGUoKHl5dnNwWyg1KSAtICg2KV0uaW50ZXJtLnR5cGVMaXN0KSwgKih5
eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9
IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZSgoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmluZywg
KHl5dnNwWyg1KSAtICg2KV0uaW50ZXJtLmZpZWxkTGlzdCkpKTsKICAgICAgICAgVFZhcmlhYmxl
KiB1c2VyVHlwZURlZiA9IG5ldyBUVmFyaWFibGUoKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJp
bmcsICpzdHJ1Y3R1cmUsIHRydWUpOwogICAgICAgICBpZiAoISBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5pbnNlcnQoKnVzZXJUeXBlRGVmKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygyKSAtICg2KV0ubGV4KS5saW5lLCAicmVkZWZpbml0aW9uIiwgKHl5dnNwWygyKSAtICg2
KV0ubGV4KS5zdHJpbmctPmNfc3RyKCksICJzdHJ1Y3QiKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFsoMikgLSAoNildKSwgInJlZGVmaW5pdGlvbiIsICh5eXZzcFsoMikgLSAo
NildLmxleCkuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg2KV0ubGV4KS5saW5l
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRl
bXBvcmFyeSwgKHl5bHNwWygxKSAtICg2KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5leGl0U3RydWN0RGVjbGFy
YXRpb24oKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQwOgorICBjYXNlIDE0MToK
IAotICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5dnNwWygyKSAt
ICgyKV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0
LT5yZWNvdmVyKCk7IDt9CisgICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlv
bigoeXlsc3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZykpIGNv
bnRleHQtPnJlY292ZXIoKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0MToKKyAgY2FzZSAx
NDI6CiAKICAgICB7Ci0gICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUoKHl5dnNw
Wyg0KSAtICg1KV0uaW50ZXJtLnR5cGVMaXN0KSwgVFN0cmluZygiIikpOwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAoeXl2c3Bb
KDEpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRU
eXBlKG5ldyBUU3RydWN0dXJlKE5ld1Bvb2xUU3RyaW5nKCIiKSwgKHl5dnNwWyg0KSAtICg1KV0u
aW50ZXJtLmZpZWxkTGlzdCkpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5bHNwWygxKSAtICg1KV0pKTsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0
LT5leGl0U3RydWN0RGVjbGFyYXRpb24oKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTQyOgorICBjYXNlIDE0MzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlz
dCkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZUxpc3QpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmZpZWxkTGlzdCkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZmllbGRMaXN0KTsK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQzOgorICBjYXNlIDE0NDoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0udHlwZUxpc3QpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICh5eXZz
cFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCktPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8ICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5z
aXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIGlmICgoKih5eXZhbC5pbnRlcm0udHlwZUxp
c3QpKVtqXS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSAoKih5eXZzcFsoMikgLSAoMildLmludGVy
bS50eXBlTGlzdCkpW2ldLnR5cGUtPmdldEZpZWxkTmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlb
aV0ubGluZSwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3RydWN0Iiwg
KCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZUxpc3QpKVtpXS50eXBlLT5nZXRGaWVsZE5h
bWUoKS5jX3N0cigpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpID0gKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLmZpZWxkTGlzdCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBURmllbGQqIGZpZWxkID0gKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
ZmllbGRMaXN0KSlbaV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICh5eXZh
bC5pbnRlcm0uZmllbGRMaXN0KS0+c2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICBpZiAo
KCooeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkpW2pdLT5uYW1lKCkgPT0gZmllbGQtPm5hbWUoKSkg
eworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSks
ICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxkLT5u
YW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGVMaXN0KS0+cHVzaF9iYWNrKCgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVM
aXN0KSlbaV0pOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpLT5wdXNoX2Jh
Y2soZmllbGQpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0NDoK
KyAgY2FzZSAxNDU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpID0g
KHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnR5cGVMaXN0KTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5maWVsZExpc3QpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmZpZWxkTGlzdCk7CiAKLSAg
ICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKS5saW5lLCAoKih5eXZzcFsoMikgLSAoMyldLmludGVybS50eXBlTGlzdCkpWzBdLnR5
cGUtPmdldEZpZWxkTmFtZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkpKSB7Cisg
ICAgICAgIGlmIChjb250ZXh0LT52b2lkRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDMpXSksICgq
KHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmZpZWxkTGlzdCkpWzBdLT5uYW1lKCksICh5eXZzcFso
MSkgLSAoMyldLmludGVybS50eXBlKSkpIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgfQotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICh5eXZh
bC5pbnRlcm0udHlwZUxpc3QpLT5zaXplKCk7ICsraSkgeworICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8ICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+c2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBDYXJlZnVsIG5vdCB0byByZXBsYWNlIGFs
cmVhZHkga25vd24gYXNwZWN0cyBvZiB0eXBlLCBsaWtlIGFycmF5LW5lc3MKICAgICAgICAgICAg
IC8vCi0gICAgICAgICAgICBUVHlwZSogdHlwZSA9ICgqKHl5dmFsLmludGVybS50eXBlTGlzdCkp
W2ldLnR5cGU7CisgICAgICAgICAgICBUVHlwZSogdHlwZSA9ICgqKHl5dmFsLmludGVybS5maWVs
ZExpc3QpKVtpXS0+dHlwZSgpOwogICAgICAgICAgICAgdHlwZS0+c2V0QmFzaWNUeXBlKCh5eXZz
cFsoMSkgLSAoMyldLmludGVybS50eXBlKS50eXBlKTsKICAgICAgICAgICAgIHR5cGUtPnNldE5v
bWluYWxTaXplKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5zaXplKTsKICAgICAgICAg
ICAgIHR5cGUtPnNldE1hdHJpeCgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubWF0cml4
KTsKQEAgLTQwODIsODUgKzQxMTQsNzUgQEAgeXlyZWR1Y2U6CiAKICAgICAgICAgICAgIC8vIGRv
bid0IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAgICAgICAgICAgIGlmICh0eXBlLT5pc0FycmF5
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubGluZSwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLnR5cGUpKSkKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JD
aGVjaygoeXlsc3BbKDEpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuYXJyYXkpCiAg
ICAgICAgICAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKS5hcnJheVNpemUpOwotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS50eXBlKS51c2VyRGVmKSB7CisgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLnR5cGUpLnVzZXJEZWYpCiAgICAgICAgICAgICAgICAgdHlwZS0+c2V0U3RydWN0KCh5
eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS51c2VyRGVmLT5nZXRTdHJ1Y3QoKSk7Ci0gICAg
ICAgICAgICAgICAgdHlwZS0+c2V0VHlwZU5hbWUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5
cGUpLnVzZXJEZWYtPmdldFR5cGVOYW1lKCkpOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLnR5cGUpLmxpbmUsICp0eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN0
cnVjdE5lc3RpbmdFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMyldKSwgKigqKHl5dmFsLmludGVy
bS5maWVsZExpc3QpKVtpXSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0
NToKKyAgY2FzZSAxNDY6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3Qp
ID0gTmV3UG9vbFRUeXBlTGlzdCgpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+
cHVzaF9iYWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlTGluZSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSBOZXdQb29sVEZpZWxkTGlzdCgpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0uZmllbGQpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ2OgorICBjYXNlIDE0
NzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCktPnB1c2hfYmFjaygo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0udHlwZUxpbmUpKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5maWVsZExpc3QpLT5wdXNoX2JhY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmZpZWxkKSk7
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0NzoKKyAgY2FzZSAxNDg6CiAKICAgICB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lLCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBp
ZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwgKih5eXZz
cFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKIAotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlID0gbmV3IFRUeXBlKEVi
dFZvaWQsIEVicFVuZGVmaW5lZCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLmxp
bmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZUxpbmUpLnR5cGUtPnNldEZpZWxkTmFtZSgqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJp
bmcpOworICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmlu
ZWQpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkKSA9IG5ldyBURmllbGQodHlwZSwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNDg6CisgIGNhc2UgMTQ5OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2
ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoNCldLmxleCkubGluZSwgKih5eXZzcFsoMSkgLSAo
NCldLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVj
aygoeXlsc3BbKDEpIC0gKDQpXSksICooeXl2c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZykpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS50
eXBlTGluZSkudHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS5saW5lID0gKHl5dnNwWygxKSAtICg0KV0ubGV4KS5s
aW5lOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlLT5zZXRGaWVsZE5hbWUo
Kih5eXZzcFsoMSkgLSAoNCldLmxleCkuc3RyaW5nKTsKLQotICAgICAgICBpbnQgc2l6ZTsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0u
bGV4KS5saW5lLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6
ZSkpCisgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRUeXBlKEVidFZvaWQsIEVicFVuZGVmaW5l
ZCk7CisgICAgICAgIGludCBzaXplID0gMDsKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6
ZUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg0KV0pLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLnR5cGUtPnNldEFycmF5U2l6ZShzaXpl
KTsKLSAgICA7fQotICAgIGJyZWFrOwotCi0gIGNhc2UgMTQ5OgorICAgICAgICB0eXBlLT5zZXRB
cnJheVNpemUoc2l6ZSk7CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgICAgICAo
eXl2YWwuaW50ZXJtLmZpZWxkKSA9IG5ldyBURmllbGQodHlwZSwgKHl5dnNwWygxKSAtICg0KV0u
bGV4KS5zdHJpbmcpOworICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTA6CiAKLSAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50
ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KICAgICBicmVhazsKIAog
ICBjYXNlIDE1MToKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30K
ICAgICBicmVhazsKIAogICBjYXNlIDE1MjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
QWdncmVnYXRlKTsgO30KICAgICBicmVhazsKIAogICBjYXNlIDE1MzoKQEAgLTQxOTAsMTEyICs0
MjEyLDExNyBAQCB5eXJlZHVjZToKIAogICBjYXNlIDE1ODoKIAotICAgIHsgKHl5dmFsLmludGVy
bS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxNTk6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgO30K
KyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IDA7IDt9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxNjA6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyA7fQor
ICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyA7fQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTYxOgogCisgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgO30KKyAgICBicmVh
azsKKworICBjYXNlIDE2MjoKKwogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAoNSld
LmludGVybS5pbnRlcm1BZ2dyZWdhdGUpICE9IDApIHsKICAgICAgICAgICAgICh5eXZzcFsoMykg
LSAoNSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAg
ICAgICAgICAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0RW5k
TGluZSgoeXl2c3BbKDUpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dnNwWygz
KSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldExpbmUoKHl5bG9jKSk7CiAgICAg
ICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gKHl5dnNwWygz
KSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDE2MjoKKyAgY2FzZSAxNjM6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxNjM6CisgIGNhc2UgMTY0OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMTY0OgorICBjYXNlIDE2NToKIAogICAgIHsgY29udGV4dC0+c3ltYm9s
VGFibGUucHVzaCgpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY1OgorICBjYXNlIDE2NjoK
IAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxNjY6CisgIGNhc2UgMTY3OgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xU
YWJsZS5wdXNoKCk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjc6CisgIGNhc2UgMTY4Ogog
CiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKTsgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE2ODoKKyAgY2FzZSAxNjk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjk6
CisgIGNhc2UgMTcwOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygyKSAtICgzKV0uaW50
ZXJtLmludGVybUFnZ3JlZ2F0ZSkpIHsKICAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMyldLmlu
dGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAo
eXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0RW5kTGluZSgoeXl2
c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dnNwWygyKSAtICgzKV0u
aW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldExpbmUoKHl5bG9jKSk7CiAgICAgICAgIH0KICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMyldLmludGVy
bS5pbnRlcm1BZ2dyZWdhdGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzA6Cisg
IGNhc2UgMTcxOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFn
Z3JlZ2F0ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxvYykpOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxNzE6CisgIGNhc2UgMTcyOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0
ZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSwgKHl5dnNwWygyKSAt
ICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAwKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1BZ2dyZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSksICh5eXZzcFsoMikgLSAoMildLmlu
dGVybS5pbnRlcm1Ob2RlKSwgKHl5bG9jKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDE3MjoKKyAgY2FzZSAxNzM6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAw
OyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTczOgorICBjYXNlIDE3NDoKIAogICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRpY19jYXN0PFRJbnRlcm1Ob2RlKj4oKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOyA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTc0OgorICBjYXNlIDE3NToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJv
b2xFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygzKSAtICg1
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVy
cm9yQ2hlY2soKHl5bHNwWygxKSAtICg1KV0pLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2Vs
ZWN0aW9uKCh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDUpIC0gKDUpXS5pbnRlcm0ubm9kZVBhaXIpLCAoeXl2c3BbKDEpIC0gKDUpXS5sZXgpLmxpbmUp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLm5vZGVQYWlyKSwgKHl5bHNwWygxKSAtICg1KV0p
KTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc1OgorICBjYXNlIDE3NjoKIAogICAg
IHsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CkBAIC00MzAzLDcgKzQzMzAsNyBAQCB5eXJlZHVjZToK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc2OgorICBjYXNlIDE3NzoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtTm9kZSk7CkBAIC00MzExLDcgKzQzMzgsNyBAQCB5eXJlZHVjZToKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc3OgorICBjYXNlIDE3ODoKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7CkBAIC00MzIwLDE2ICs0MzQ3LDE2IEBAIHl5cmVkdWNl
OgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzg6CisgIGNhc2UgMTc5OgogCiAgICAg
ewogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKGNvbnRleHQt
PnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3Ry
dWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxp
bmUsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5ib29sRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAg
aWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5s
aW5lLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS50eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGlu
dGVybU5vZGUpKQorICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigoeXls
c3BbKDIpIC0gKDQpXSksICooeXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0cmluZywgKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbKDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CkBAIC00MzM4LDc5
ICs0MzY1LDc5IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzk6
CisgIGNhc2UgMTgwOgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7ICsrY29u
dGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4MDoKKyAg
Y2FzZSAxODE6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwot
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZExvb3AoRUxvb3BXaGlsZSwgMCwgKHl5dnNwWyg0KSAtICg2KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksIDAsICh5eXZzcFsoNikgLSAoNildLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5dnNw
WygxKSAtICg2KV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hpbGUsIDAsICh5eXZzcFso
NCkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDYpIC0gKDYpXS5p
bnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoMSkgLSAoNildKSk7CiAgICAgICAgIC0tY29udGV4
dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTgxOgor
ICBjYXNlIDE4MjoKIAogICAgIHsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTgyOgorICBjYXNlIDE4MzoKIAogICAgIHsKLSAgICAgICAgaWYg
KGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eXZzcFsoOCkgLSAoOCldLmxleCkubGluZSwgKHl5
dnNwWyg2KSAtICg4KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29u
dGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWyg4KSAtICg4KV0pLCAoeXl2c3BbKDYpIC0gKDgp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRMb29wKEVMb29wRG9XaGlsZSwgMCwgKHl5dnNwWyg2KSAtICg4KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksIDAsICh5eXZzcFsoMykgLSAoOCldLmludGVybS5pbnRlcm1Ob2Rl
KSwgKHl5dnNwWyg0KSAtICg4KV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRG9XaGlsZSwg
MCwgKHl5dnNwWyg2KSAtICg4KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIDAsICh5eXZzcFso
MykgLSAoOCldLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bHNwWyg0KSAtICg4KV0pKTsKICAgICAg
ICAgLS1jb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxODM6CisgIGNhc2UgMTg0OgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNo
KCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KICAgICBicmVhazsKIAotICBjYXNl
IDE4NDoKKyAgY2FzZSAxODU6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxl
LnBvcCgpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BGb3IsICh5eXZzcFsoNCkgLSAoNyldLmludGVybS5pbnRl
cm1Ob2RlKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcp
XS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQq
PigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3KSAt
ICg3KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDEpIC0gKDcpXS5sZXgpLmxpbmUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZExvb3AoRUxvb3BGb3IsICh5eXZzcFsoNCkgLSAoNyldLmludGVybS5pbnRlcm1Ob2RlKSwg
cmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0u
bm9kZVBhaXIpLm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3Bb
KDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3KSAtICg3KV0uaW50
ZXJtLmludGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDcpXSkpOwogICAgICAgICAtLWNvbnRleHQt
Pmxvb3BOZXN0aW5nTGV2ZWw7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4NToKKyAg
Y2FzZSAxODY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDE4NjoKKyAgY2FzZSAxODc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4NzoKKyAgY2FzZSAxODg6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
ODg6CisgIGNhc2UgMTg5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODk6CisgIGNhc2Ug
MTkwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5
eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtNDQxOCw3ICs0NDQ1
LDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5MDoKKyAgY2Fz
ZSAxOTE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0g
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CkBAIC00NDI2LDYzICs0
NDUzLDYzIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTE6Cisg
IGNhc2UgMTkyOgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZl
bCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5s
ZXgpLmxpbmUsICJjb250aW51ZSBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiY29udGlu
dWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgKHl5
dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsICh5eWxz
cFsoMSkgLSAoMildKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5MjoKKyAgY2Fz
ZSAxOTM6CiAKICAgICB7CiAgICAgICAgIGlmIChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCku
bGluZSwgImJyZWFrIHN0YXRlbWVudCBvbmx5IGFsbG93ZWQgaW4gbG9vcHMiLCAiIik7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDIpXSksICJicmVhayBzdGF0ZW1l
bnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcEJyZWFrLCAoeXl2c3BbKDEpIC0gKDIp
XS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgKHl5bHNwWygxKSAtICgyKV0pKTsK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkzOgorICBjYXNlIDE5NDoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEJyYW5jaChFT3BSZXR1cm4sICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgICAgIGlmIChjb250
ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRWb2lkKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICJu
b24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAibm9uLXZvaWQgZnVuY3Rp
b24gbXVzdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTQ6
CisgIGNhc2UgMTk1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMikg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDEpIC0gKDMpXS5sZXgpLmxp
bmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXlsc3BbKDEpIC0gKDMpXSkpOwogICAgICAgICBjb250ZXh0LT5mdW5j
dGlvblJldHVybnNWYWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChjb250ZXh0LT5jdXJyZW50RnVu
Y3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDMpXS5sZXgpLmxpbmUsICJ2b2lkIGZ1bmN0aW9uIGNh
bm5vdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgInZvaWQgZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZh
bHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICB9IGVsc2UgaWYgKCooY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZSkgIT0gKHl5dnNwWygy
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSkgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0ubGV4KS5saW5lLCAiZnVuY3Rpb24g
cmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3Qg
bWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk1OgorICBjYXNl
IDE5NjoKIAogICAgIHsKLSAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgKHl5dnNwWygxKSAt
ICgyKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgKHl5dnNwWygxKSAtICgyKV0u
bGV4KS5saW5lKTsKKyAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgKHl5bHNwWygxKSAtICgy
KV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTk2OgorICBjYXNlIDE5NzoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1Ob2RlKTsKQEAgLTQ0OTAsMjkgKzQ1MTcsMjkgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDE5NzoKKyAgY2FzZSAxOTg6CiAKICAgICB7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0
ZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMikgLSAoMild
LmludGVybS5pbnRlcm1Ob2RlKSwgMCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2Rl
KSwgKHl5bG9jKSk7CiAgICAgICAgIGNvbnRleHQtPnRyZWVSb290ID0gKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk4OgorICBjYXNlIDE5
OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTk5OgorICBjYXNlIDIwMDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMjAwOgorICBjYXNlIDIwMToKIAogICAgIHsKICAgICAgICAg
VEZ1bmN0aW9uKiBmdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuZnVuY3Rpb247
CkBAIC00NTIxLDcgKzQ1NDgsNyBAQCB5eXJlZHVjZToKICAgICAgICAgCiAgICAgICAgIGlmIChi
dWlsdEluKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmxpbmUsICJidWlsdC1pbiBmdW5jdGlvbnMgY2Fubm90IGJlIHJlZGVm
aW5lZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJidWlsdC1pbiBmdW5jdGlvbnMgY2Fubm90IGJl
IHJlZGVmaW5lZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NTM1LDcgKzQ1NjIs
NyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBUaGVuIHRoaXMg
ZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5LgogICAgICAgICAgICAgLy8KLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgImZ1bmN0aW9u
IGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJmdW5jdGlvbiBhbHJl
YWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIHByZXZEZWMtPnNldERl
ZmluZWQoKTsKQEAgLTQ1NDUsMTEgKzQ1NzIsMTEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8vCiAg
ICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0TmFtZSgpID09ICJtYWluIikgewogICAgICAgICAgICAg
aWYgKGZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCAiZnVuY3Rpb24gY2Fu
bm90IHRha2UgYW55IHBhcmFtZXRlcihzKSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7
CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiZnVu
Y3Rpb24gY2Fubm90IHRha2UgYW55IHBhcmFtZXRlcihzKSIsIGZ1bmN0aW9uLT5nZXROYW1lKCku
Y19zdHIoKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNU
eXBlKCkgIT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMSkgLSAoMSldLmludGVybSkubGluZSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCku
Z2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7
CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiIiwg
ZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpLCAibWFpbiBmdW5jdGlv
biBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ1NzcsNyArNDYwNCw3IEBAIHl5
cmVkdWNlOgogICAgICAgICAgICAgICAgIC8vIEluc2VydCB0aGUgcGFyYW1ldGVycyB3aXRoIG5h
bWUgaW4gdGhlIHN5bWJvbCB0YWJsZS4KICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAg
ICAgIGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgqdmFyaWFibGUpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSku
bGluZSwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgInJlZGVm
aW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHZhcmlh
YmxlOwogICAgICAgICAgICAgICAgIH0KQEAgLTQ1ODgsMzEgKzQ2MTUsMzIgQEAgeXlyZWR1Y2U6
CiAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93
QWdncmVnYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJhbU5vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJ
ZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXJpYWJsZS0+Z2V0VHlwZSgpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRO
YW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoeXlsc3BbKDEpIC0gKDEpXSkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSku
bGluZSksICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAg
cGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHBhcmFtTm9k
ZXMsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAo
eXlsc3BbKDEpIC0gKDEpXSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVy
YXRvcihwYXJhbU5vZGVzLCBFT3BQYXJhbWV0ZXJzLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0p
LmxpbmUpOworICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0
b3IocGFyYW1Ob2RlcywgRU9wUGFyYW1ldGVycywgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAg
ICAgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBwYXJhbU5vZGVz
OwogICAgICAgICBjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsID0gMDsKICAgICA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMjAxOgorICBjYXNlIDIwMjoKIAogICAgIHsKICAgICAgICAgLy8/PyBD
aGVjayB0aGF0IGFsbCBwYXRocyByZXR1cm4gYSB2YWx1ZSBpZiByZXR1cm4gdHlwZSAhPSB2b2lk
ID8KICAgICAgICAgLy8gICBNYXkgYmUgYmVzdCBkb25lIGFzIHBvc3QgcHJvY2VzcyBwaGFzZSBv
biBpbnRlcm1lZGlhdGUgY29kZQogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0aW9u
VHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCAmJiAhIGNvbnRleHQtPmZ1bmN0aW9uUmV0
dXJuc1ZhbHVlKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0pLmxpbmUsICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAiIiwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgzKV0pLCAiZnVuY3Rpb24g
ZG9lcyBub3QgcmV0dXJuIGEgdmFsdWU6IiwgIiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybSku
ZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAo
MyldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtTm9kZSksIDApOwotICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRl
T3BlcmF0b3IoKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSwgRU9wRnVuY3Rpb24sICh5eXZzcFso
MSkgLSAoMyldLmludGVybSkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bU5vZGUpLCAoeXlsb2MpKTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3Jl
Z2F0ZU9wZXJhdG9yKCh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSksIEVPcEZ1bmN0aW9uLCAoeXls
c3BbKDEpIC0gKDMpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRB
c0FnZ3JlZ2F0ZSgpLT5zZXROYW1lKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24t
PmdldE1hbmdsZWROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
KS5mdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpKTsKIApAQCAtNDYyMSw5ICs0NjQ5LDYgQEAgeXly
ZWR1Y2U6CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRl
KCktPnNldE9wdGltaXplKGNvbnRleHQtPnByYWdtYSgpLm9wdGltaXplKTsKICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RGVidWcoY29udGV4
dC0+cHJhZ21hKCkuZGVidWcpOwogCi0gICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtTm9kZSkgJiYgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpLT5n
ZXRBc0FnZ3JlZ2F0ZSgpKQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+
Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RW5kTGluZSgoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPmdldEVuZExpbmUoKSk7Ci0KICAgICAgICAgY29u
dGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgO30KICAgICBicmVhazsKQEAgLTQ2NDAsNyAr
NDY2NSw3IEBAIHl5cmVkdWNlOgogICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwogCiAg
ICorK3l5dnNwID0geXl2YWw7Ci0KKyAgKisreXlsc3AgPSB5eWxvYzsKIAogICAvKiBOb3cgYHNo
aWZ0JyB0aGUgcmVzdWx0IG9mIHRoZSByZWR1Y3Rpb24uICBEZXRlcm1pbmUgd2hhdCBzdGF0ZQog
ICAgICB0aGF0IGdvZXMgdG8sIGJhc2VkIG9uIHRoZSBzdGF0ZSB3ZSBwb3BwZWQgYmFjayB0byBh
bmQgdGhlIHJ1bGUKQEAgLTQ2NjYsNyArNDY5MSw3IEBAIHl5ZXJybGFiOgogICAgIHsKICAgICAg
ICsreXluZXJyczsKICNpZiAhIFlZRVJST1JfVkVSQk9TRQotICAgICAgeXllcnJvciAoY29udGV4
dCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CisgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0
LCBZWV8oInN5bnRheCBlcnJvciIpKTsKICNlbHNlCiAgICAgICB7CiAJWVlTSVpFX1QgeXlzaXpl
ID0geXlzeW50YXhfZXJyb3IgKDAsIHl5c3RhdGUsIHl5Y2hhcik7CkBAIC00NjkwLDExICs0NzE1
LDExIEBAIHl5ZXJybGFiOgogCWlmICgwIDwgeXlzaXplICYmIHl5c2l6ZSA8PSB5eW1zZ19hbGxv
YykKIAkgIHsKIAkgICAgKHZvaWQpIHl5c3ludGF4X2Vycm9yICh5eW1zZywgeXlzdGF0ZSwgeXlj
aGFyKTsKLQkgICAgeXllcnJvciAoY29udGV4dCwgeXltc2cpOworCSAgICB5eWVycm9yICgmeXls
bG9jLCBjb250ZXh0LCB5eW1zZyk7CiAJICB9CiAJZWxzZQogCSAgewotCSAgICB5eWVycm9yIChj
b250ZXh0LCBZWV8oInN5bnRheCBlcnJvciIpKTsKKwkgICAgeXllcnJvciAoJnl5bGxvYywgY29u
dGV4dCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CiAJICAgIGlmICh5eXNpemUgIT0gMCkKIAkgICAg
ICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwogCSAgfQpAQCAtNDcwMiw3ICs0NzI3LDcgQEAgeXllcnJs
YWI6CiAjZW5kaWYKICAgICB9CiAKLQorICB5eWVycm9yX3JhbmdlWzBdID0geXlsbG9jOwogCiAg
IGlmICh5eWVycnN0YXR1cyA9PSAzKQogICAgIHsKQEAgLTQ3MTgsNyArNDc0Myw3IEBAIHl5ZXJy
bGFiOgogICAgICAgZWxzZQogCXsKIAkgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogZGlzY2FyZGluZyIs
Ci0JCSAgICAgIHl5dG9rZW4sICZ5eWx2YWwsIGNvbnRleHQpOworCQkgICAgICB5eXRva2VuLCAm
eXlsdmFsLCAmeXlsbG9jLCBjb250ZXh0KTsKIAkgIHl5Y2hhciA9IFlZRU1QVFk7CiAJfQogICAg
IH0KQEAgLTQ3MzksNiArNDc2NCw3IEBAIHl5ZXJyb3JsYWI6CiAgIGlmICgvKkNPTlNUQ09ORCov
IDApCiAgICAgIGdvdG8geXllcnJvcmxhYjsKIAorICB5eWVycm9yX3JhbmdlWzBdID0geXlsc3Bb
MS15eWxlbl07CiAgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdo
aWNoIGFjdGlvbiB0cmlnZ2VyZWQKICAgICAgdGhpcyBZWUVSUk9SLiAgKi8KICAgWVlQT1BTVEFD
SyAoeXlsZW4pOwpAQCAtNDc3Miw5ICs0Nzk4LDkgQEAgeXllcnJsYWIxOgogICAgICAgaWYgKHl5
c3NwID09IHl5c3MpCiAJWVlBQk9SVDsKIAotCisgICAgICB5eWVycm9yX3JhbmdlWzBdID0gKnl5
bHNwOwogICAgICAgeXlkZXN0cnVjdCAoIkVycm9yOiBwb3BwaW5nIiwKLQkJICB5eXN0b3NbeXlz
dGF0ZV0sIHl5dnNwLCBjb250ZXh0KTsKKwkJICB5eXN0b3NbeXlzdGF0ZV0sIHl5dnNwLCB5eWxz
cCwgY29udGV4dCk7CiAgICAgICBZWVBPUFNUQUNLICgxKTsKICAgICAgIHl5c3RhdGUgPSAqeXlz
c3A7CiAgICAgICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwpAQCAtNDc4NSw2ICs0ODEx
LDExIEBAIHl5ZXJybGFiMToKIAogICAqKyt5eXZzcCA9IHl5bHZhbDsKIAorICB5eWVycm9yX3Jh
bmdlWzFdID0geXlsbG9jOworICAvKiBVc2luZyBZWUxMT0MgaXMgdGVtcHRpbmcsIGJ1dCB3b3Vs
ZCBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mCisgICAgIHRoZSBsb29rLWFoZWFkLiAgWVlMT0MgaXMg
YXZhaWxhYmxlIHRob3VnaC4gICovCisgIFlZTExPQ19ERUZBVUxUICh5eWxvYywgKHl5ZXJyb3Jf
cmFuZ2UgLSAxKSwgMik7CisgICorK3l5bHNwID0geXlsb2M7CiAKICAgLyogU2hpZnQgdGhlIGVy
cm9yIHRva2VuLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXN0b3NbeXlu
XSwgeXl2c3AsIHl5bHNwKTsKQEAgLTQ4MTIsNyArNDg0Myw3IEBAIHl5YWJvcnRsYWI6CiB8IHl5
ZXhoYXVzdGVkbGFiIC0tIG1lbW9yeSBleGhhdXN0aW9uIGNvbWVzIGhlcmUuICB8CiBgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiB5eWV4aGF1c3Rl
ZGxhYjoKLSAgeXllcnJvciAoY29udGV4dCwgWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOworICB5
eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSk7CiAgIHl5
cmVzdWx0ID0gMjsKICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KICNlbmRpZgpAQCAtNDgyMCw3ICs0
ODUxLDcgQEAgeXlleGhhdXN0ZWRsYWI6CiB5eXJldHVybjoKICAgaWYgKHl5Y2hhciAhPSBZWUVP
RiAmJiB5eWNoYXIgIT0gWVlFTVBUWSkKICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IGRpc2Nh
cmRpbmcgbG9va2FoZWFkIiwKLQkJIHl5dG9rZW4sICZ5eWx2YWwsIGNvbnRleHQpOworCQkgeXl0
b2tlbiwgJnl5bHZhbCwgJnl5bGxvYywgY29udGV4dCk7CiAgIC8qIERvIG5vdCByZWNsYWltIHRo
ZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKICAgICAgdGhpcyBZ
WUFCT1JUIG9yIFlZQUNDRVBULiAgKi8KICAgWVlQT1BTVEFDSyAoeXlsZW4pOwpAQCAtNDgyOCw3
ICs0ODU5LDcgQEAgeXlyZXR1cm46CiAgIHdoaWxlICh5eXNzcCAhPSB5eXNzKQogICAgIHsKICAg
ICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBwb3BwaW5nIiwKLQkJICB5eXN0b3NbKnl5c3NwXSwg
eXl2c3AsIGNvbnRleHQpOworCQkgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwgeXlsc3AsIGNvbnRl
eHQpOwogICAgICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgfQogI2lmbmRlZiB5eW92ZXJmbG93CkBA
IC00ODQ3LDYgKzQ4NzgsMTEgQEAgeXlyZXR1cm46CiAKIAogCit2b2lkIHl5ZXJyb3IoWVlMVFlQ
RSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pIHsK
KyAgICBjb250ZXh0LT5lcnJvcigqeXlsbG9jLCByZWFzb24sICIiKTsKKyAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Cit9CisKIGludCBnbHNsYW5nX3BhcnNlKFRQYXJzZUNvbnRleHQqIGNvbnRleHQp
IHsKICAgICByZXR1cm4geXlwYXJzZShjb250ZXh0KTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oCShyZXZpc2lvbiAx
NTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190
YWIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTEgQEAKICAgIFRoaXMgc3BlY2lhbCBl
eGNlcHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KICAg
IHZlcnNpb24gMi4yIG9mIEJpc29uLiAgKi8KIAorLy8gVGhlc2Ugd2VyZSBwdXQgaGVyZSB3aXRo
ICVjb2RlIHJlcXVpcmVzLCB3aGljaCBvdXIgdmVyc2lvbiBvZiBCaXNvbiBkb2VzIG5vdCBzdXBw
b3J0LAorLy8gc28gSSBwdXQgdGhlbSBoZXJlIG1hbnVhbGx5LgorI2RlZmluZSBZWUxUWVBFIFRT
b3VyY2VMb2MKKyNkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisKIC8qIFRva2Vucy4gICov
CiAjaWZuZGVmIFlZVE9LRU5UWVBFCiAjIGRlZmluZSBZWVRPS0VOVFlQRQpAQCAtODYsNTIgKzkx
LDUxIEBACiAgICAgIEZMT0FUQ09OU1RBTlQgPSAzMDIsCiAgICAgIElOVENPTlNUQU5UID0gMzAz
LAogICAgICBCT09MQ09OU1RBTlQgPSAzMDQsCi0gICAgIEZJRUxEX1NFTEVDVElPTiA9IDMwNSwK
LSAgICAgTEVGVF9PUCA9IDMwNiwKLSAgICAgUklHSFRfT1AgPSAzMDcsCi0gICAgIElOQ19PUCA9
IDMwOCwKLSAgICAgREVDX09QID0gMzA5LAotICAgICBMRV9PUCA9IDMxMCwKLSAgICAgR0VfT1Ag
PSAzMTEsCi0gICAgIEVRX09QID0gMzEyLAotICAgICBORV9PUCA9IDMxMywKLSAgICAgQU5EX09Q
ID0gMzE0LAotICAgICBPUl9PUCA9IDMxNSwKLSAgICAgWE9SX09QID0gMzE2LAotICAgICBNVUxf
QVNTSUdOID0gMzE3LAotICAgICBESVZfQVNTSUdOID0gMzE4LAotICAgICBBRERfQVNTSUdOID0g
MzE5LAotICAgICBNT0RfQVNTSUdOID0gMzIwLAotICAgICBMRUZUX0FTU0lHTiA9IDMyMSwKLSAg
ICAgUklHSFRfQVNTSUdOID0gMzIyLAotICAgICBBTkRfQVNTSUdOID0gMzIzLAotICAgICBYT1Jf
QVNTSUdOID0gMzI0LAotICAgICBPUl9BU1NJR04gPSAzMjUsCi0gICAgIFNVQl9BU1NJR04gPSAz
MjYsCi0gICAgIExFRlRfUEFSRU4gPSAzMjcsCi0gICAgIFJJR0hUX1BBUkVOID0gMzI4LAotICAg
ICBMRUZUX0JSQUNLRVQgPSAzMjksCi0gICAgIFJJR0hUX0JSQUNLRVQgPSAzMzAsCi0gICAgIExF
RlRfQlJBQ0UgPSAzMzEsCi0gICAgIFJJR0hUX0JSQUNFID0gMzMyLAotICAgICBET1QgPSAzMzMs
Ci0gICAgIENPTU1BID0gMzM0LAotICAgICBDT0xPTiA9IDMzNSwKLSAgICAgRVFVQUwgPSAzMzYs
Ci0gICAgIFNFTUlDT0xPTiA9IDMzNywKLSAgICAgQkFORyA9IDMzOCwKLSAgICAgREFTSCA9IDMz
OSwKLSAgICAgVElMREUgPSAzNDAsCi0gICAgIFBMVVMgPSAzNDEsCi0gICAgIFNUQVIgPSAzNDIs
Ci0gICAgIFNMQVNIID0gMzQzLAotICAgICBQRVJDRU5UID0gMzQ0LAotICAgICBMRUZUX0FOR0xF
ID0gMzQ1LAotICAgICBSSUdIVF9BTkdMRSA9IDM0NiwKLSAgICAgVkVSVElDQUxfQkFSID0gMzQ3
LAotICAgICBDQVJFVCA9IDM0OCwKLSAgICAgQU1QRVJTQU5EID0gMzQ5LAotICAgICBRVUVTVElP
TiA9IDM1MAorICAgICBMRUZUX09QID0gMzA1LAorICAgICBSSUdIVF9PUCA9IDMwNiwKKyAgICAg
SU5DX09QID0gMzA3LAorICAgICBERUNfT1AgPSAzMDgsCisgICAgIExFX09QID0gMzA5LAorICAg
ICBHRV9PUCA9IDMxMCwKKyAgICAgRVFfT1AgPSAzMTEsCisgICAgIE5FX09QID0gMzEyLAorICAg
ICBBTkRfT1AgPSAzMTMsCisgICAgIE9SX09QID0gMzE0LAorICAgICBYT1JfT1AgPSAzMTUsCisg
ICAgIE1VTF9BU1NJR04gPSAzMTYsCisgICAgIERJVl9BU1NJR04gPSAzMTcsCisgICAgIEFERF9B
U1NJR04gPSAzMTgsCisgICAgIE1PRF9BU1NJR04gPSAzMTksCisgICAgIExFRlRfQVNTSUdOID0g
MzIwLAorICAgICBSSUdIVF9BU1NJR04gPSAzMjEsCisgICAgIEFORF9BU1NJR04gPSAzMjIsCisg
ICAgIFhPUl9BU1NJR04gPSAzMjMsCisgICAgIE9SX0FTU0lHTiA9IDMyNCwKKyAgICAgU1VCX0FT
U0lHTiA9IDMyNSwKKyAgICAgTEVGVF9QQVJFTiA9IDMyNiwKKyAgICAgUklHSFRfUEFSRU4gPSAz
MjcsCisgICAgIExFRlRfQlJBQ0tFVCA9IDMyOCwKKyAgICAgUklHSFRfQlJBQ0tFVCA9IDMyOSwK
KyAgICAgTEVGVF9CUkFDRSA9IDMzMCwKKyAgICAgUklHSFRfQlJBQ0UgPSAzMzEsCisgICAgIERP
VCA9IDMzMiwKKyAgICAgQ09NTUEgPSAzMzMsCisgICAgIENPTE9OID0gMzM0LAorICAgICBFUVVB
TCA9IDMzNSwKKyAgICAgU0VNSUNPTE9OID0gMzM2LAorICAgICBCQU5HID0gMzM3LAorICAgICBE
QVNIID0gMzM4LAorICAgICBUSUxERSA9IDMzOSwKKyAgICAgUExVUyA9IDM0MCwKKyAgICAgU1RB
UiA9IDM0MSwKKyAgICAgU0xBU0ggPSAzNDIsCisgICAgIFBFUkNFTlQgPSAzNDMsCisgICAgIExF
RlRfQU5HTEUgPSAzNDQsCisgICAgIFJJR0hUX0FOR0xFID0gMzQ1LAorICAgICBWRVJUSUNBTF9C
QVIgPSAzNDYsCisgICAgIENBUkVUID0gMzQ3LAorICAgICBBTVBFUlNBTkQgPSAzNDgsCisgICAg
IFFVRVNUSU9OID0gMzQ5CiAgICB9OwogI2VuZGlmCiAvKiBUb2tlbnMuICAqLwpAQCAtMTgyLDUy
ICsxODYsNTEgQEAKICNkZWZpbmUgRkxPQVRDT05TVEFOVCAzMDIKICNkZWZpbmUgSU5UQ09OU1RB
TlQgMzAzCiAjZGVmaW5lIEJPT0xDT05TVEFOVCAzMDQKLSNkZWZpbmUgRklFTERfU0VMRUNUSU9O
IDMwNQotI2RlZmluZSBMRUZUX09QIDMwNgotI2RlZmluZSBSSUdIVF9PUCAzMDcKLSNkZWZpbmUg
SU5DX09QIDMwOAotI2RlZmluZSBERUNfT1AgMzA5Ci0jZGVmaW5lIExFX09QIDMxMAotI2RlZmlu
ZSBHRV9PUCAzMTEKLSNkZWZpbmUgRVFfT1AgMzEyCi0jZGVmaW5lIE5FX09QIDMxMwotI2RlZmlu
ZSBBTkRfT1AgMzE0Ci0jZGVmaW5lIE9SX09QIDMxNQotI2RlZmluZSBYT1JfT1AgMzE2Ci0jZGVm
aW5lIE1VTF9BU1NJR04gMzE3Ci0jZGVmaW5lIERJVl9BU1NJR04gMzE4Ci0jZGVmaW5lIEFERF9B
U1NJR04gMzE5Ci0jZGVmaW5lIE1PRF9BU1NJR04gMzIwCi0jZGVmaW5lIExFRlRfQVNTSUdOIDMy
MQotI2RlZmluZSBSSUdIVF9BU1NJR04gMzIyCi0jZGVmaW5lIEFORF9BU1NJR04gMzIzCi0jZGVm
aW5lIFhPUl9BU1NJR04gMzI0Ci0jZGVmaW5lIE9SX0FTU0lHTiAzMjUKLSNkZWZpbmUgU1VCX0FT
U0lHTiAzMjYKLSNkZWZpbmUgTEVGVF9QQVJFTiAzMjcKLSNkZWZpbmUgUklHSFRfUEFSRU4gMzI4
Ci0jZGVmaW5lIExFRlRfQlJBQ0tFVCAzMjkKLSNkZWZpbmUgUklHSFRfQlJBQ0tFVCAzMzAKLSNk
ZWZpbmUgTEVGVF9CUkFDRSAzMzEKLSNkZWZpbmUgUklHSFRfQlJBQ0UgMzMyCi0jZGVmaW5lIERP
VCAzMzMKLSNkZWZpbmUgQ09NTUEgMzM0Ci0jZGVmaW5lIENPTE9OIDMzNQotI2RlZmluZSBFUVVB
TCAzMzYKLSNkZWZpbmUgU0VNSUNPTE9OIDMzNwotI2RlZmluZSBCQU5HIDMzOAotI2RlZmluZSBE
QVNIIDMzOQotI2RlZmluZSBUSUxERSAzNDAKLSNkZWZpbmUgUExVUyAzNDEKLSNkZWZpbmUgU1RB
UiAzNDIKLSNkZWZpbmUgU0xBU0ggMzQzCi0jZGVmaW5lIFBFUkNFTlQgMzQ0Ci0jZGVmaW5lIExF
RlRfQU5HTEUgMzQ1Ci0jZGVmaW5lIFJJR0hUX0FOR0xFIDM0NgotI2RlZmluZSBWRVJUSUNBTF9C
QVIgMzQ3Ci0jZGVmaW5lIENBUkVUIDM0OAotI2RlZmluZSBBTVBFUlNBTkQgMzQ5Ci0jZGVmaW5l
IFFVRVNUSU9OIDM1MAorI2RlZmluZSBMRUZUX09QIDMwNQorI2RlZmluZSBSSUdIVF9PUCAzMDYK
KyNkZWZpbmUgSU5DX09QIDMwNworI2RlZmluZSBERUNfT1AgMzA4CisjZGVmaW5lIExFX09QIDMw
OQorI2RlZmluZSBHRV9PUCAzMTAKKyNkZWZpbmUgRVFfT1AgMzExCisjZGVmaW5lIE5FX09QIDMx
MgorI2RlZmluZSBBTkRfT1AgMzEzCisjZGVmaW5lIE9SX09QIDMxNAorI2RlZmluZSBYT1JfT1Ag
MzE1CisjZGVmaW5lIE1VTF9BU1NJR04gMzE2CisjZGVmaW5lIERJVl9BU1NJR04gMzE3CisjZGVm
aW5lIEFERF9BU1NJR04gMzE4CisjZGVmaW5lIE1PRF9BU1NJR04gMzE5CisjZGVmaW5lIExFRlRf
QVNTSUdOIDMyMAorI2RlZmluZSBSSUdIVF9BU1NJR04gMzIxCisjZGVmaW5lIEFORF9BU1NJR04g
MzIyCisjZGVmaW5lIFhPUl9BU1NJR04gMzIzCisjZGVmaW5lIE9SX0FTU0lHTiAzMjQKKyNkZWZp
bmUgU1VCX0FTU0lHTiAzMjUKKyNkZWZpbmUgTEVGVF9QQVJFTiAzMjYKKyNkZWZpbmUgUklHSFRf
UEFSRU4gMzI3CisjZGVmaW5lIExFRlRfQlJBQ0tFVCAzMjgKKyNkZWZpbmUgUklHSFRfQlJBQ0tF
VCAzMjkKKyNkZWZpbmUgTEVGVF9CUkFDRSAzMzAKKyNkZWZpbmUgUklHSFRfQlJBQ0UgMzMxCisj
ZGVmaW5lIERPVCAzMzIKKyNkZWZpbmUgQ09NTUEgMzMzCisjZGVmaW5lIENPTE9OIDMzNAorI2Rl
ZmluZSBFUVVBTCAzMzUKKyNkZWZpbmUgU0VNSUNPTE9OIDMzNgorI2RlZmluZSBCQU5HIDMzNwor
I2RlZmluZSBEQVNIIDMzOAorI2RlZmluZSBUSUxERSAzMzkKKyNkZWZpbmUgUExVUyAzNDAKKyNk
ZWZpbmUgU1RBUiAzNDEKKyNkZWZpbmUgU0xBU0ggMzQyCisjZGVmaW5lIFBFUkNFTlQgMzQzCisj
ZGVmaW5lIExFRlRfQU5HTEUgMzQ0CisjZGVmaW5lIFJJR0hUX0FOR0xFIDM0NQorI2RlZmluZSBW
RVJUSUNBTF9CQVIgMzQ2CisjZGVmaW5lIENBUkVUIDM0NworI2RlZmluZSBBTVBFUlNBTkQgMzQ4
CisjZGVmaW5lIFFVRVNUSU9OIDM0OQogCiAKIApAQCAtMjM3LDcgKzI0MCw2IEBAIHR5cGVkZWYg
dW5pb24gWVlTVFlQRQogCiB7CiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5l
OwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUU3RyaW5nICpzdHJpbmc7CiAgICAgICAg
ICAgICBmbG9hdCBmOwpAQCAtMjQ3LDcgKzI0OSw2IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQog
ICAgICAgICBUU3ltYm9sKiBzeW1ib2w7CiAgICAgfSBsZXg7CiAgICAgc3RydWN0IHsKLSAgICAg
ICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAgICBUT3BlcmF0b3Igb3A7CiAgICAgICAgIHVuaW9u
IHsKICAgICAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwpAQCAtMjYxLDggKzI2Miw4
IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZp
ZXI7CiAgICAgICAgICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFt
ZXRlciBwYXJhbTsKLSAgICAgICAgICAgIFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAg
IFRUeXBlTGlzdCogdHlwZUxpc3Q7CisgICAgICAgICAgICBURmllbGQqIGZpZWxkOworICAgICAg
ICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwog
fQpAQCAtMjc2LDMgKzI3NywxNyBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKIAogCiAKKyNpZiAh
IGRlZmluZWQgWVlMVFlQRSAmJiAhIGRlZmluZWQgWVlMVFlQRV9JU19ERUNMQVJFRAordHlwZWRl
ZiBzdHJ1Y3QgWVlMVFlQRQoreworICBpbnQgZmlyc3RfbGluZTsKKyAgaW50IGZpcnN0X2NvbHVt
bjsKKyAgaW50IGxhc3RfbGluZTsKKyAgaW50IGxhc3RfY29sdW1uOworfSBZWUxUWVBFOworIyBk
ZWZpbmUgeXlsdHlwZSBZWUxUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3biAq
LworIyBkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisjIGRlZmluZSBZWUxUWVBFX0lTX1RS
SVZJQUwgMQorI2VuZGlmCisKKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL2ludGVybU91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2ludGVybU91dC5jcHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODksNyArMTg5LDkgQEAgYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdFVuYXJ5
KFZpc2l0IAogICAgICAgICBjYXNlIEVPcEFueTogICAgICAgICAgICBvdXQgPDwgImFueSI7ICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRU9wQWxsOiAgICAgICAgICAgIG91
dCA8PCAiYWxsIjsgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBkZWZhdWx0OiBv
dXQubWVzc2FnZShFUHJlZml4RXJyb3IsICJCYWQgdW5hcnkgb3AiKTsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIG91dC5wcmVmaXgoRVByZWZpeEVycm9yKTsKKyAgICAgICAgICAgIG91
dCA8PCAiQmFkIHVuYXJ5IG9wIjsKICAgICB9CiAKICAgICBvdXQgPDwgIiAoIiA8PCBub2RlLT5n
ZXRDb21wbGV0ZVN0cmluZygpIDw8ICIpIjsKQEAgLTIwNCw3ICsyMDYsOCBAQCBib29sIFRPdXRw
dXRUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpCiAgICAgVEluZm9TaW5rQmFzZSYgb3V0ID0g
c2luazsKIAogICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcE51bGwpIHsKLSAgICAgICAgb3V0
Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCAibm9kZSBpcyBzdGlsbCBFT3BOdWxsISIpOworICAgICAg
ICBvdXQucHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgIG91dCA8PCAibm9kZSBpcyBzdGls
bCBFT3BOdWxsISI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjYzLDcgKzI2
Niw5IEBAIGJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmkKIAogICAgICAg
ICBjYXNlIEVPcERlY2xhcmF0aW9uOiAgIG91dCA8PCAiRGVjbGFyYXRpb246ICI7ICAgYnJlYWs7
CiAKLSAgICAgICAgZGVmYXVsdDogb3V0Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiQmFkIGFnZ3Jl
Z2F0aW9uIG9wIik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBvdXQucHJlZml4KEVQ
cmVmaXhFcnJvcik7CisgICAgICAgICAgICBvdXQgPDwgIkJhZCBhZ2dyZWdhdGlvbiBvcCI7CiAg
ICAgfQogCiAgICAgaWYgKG5vZGUtPmdldE9wKCkgIT0gRU9wU2VxdWVuY2UgJiYgbm9kZS0+Z2V0
T3AoKSAhPSBFT3BQYXJhbWV0ZXJzKQpAQCAtMzExLDkgKzMxNiw5IEBAIHZvaWQgVE91dHB1dFRy
YXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW8KIHsKICAgICBUSW5mb1NpbmtCYXNlJiBvdXQgPSBz
aW5rOwogCi0gICAgaW50IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwor
ICAgIHNpemVfdCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKIAotICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgT3V0cHV0VHJlZVRleHQob3V0LCBub2RlLCBkZXB0
aCk7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVtpXS5nZXRU
eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKQEAgLTMzNCw3ICszMzksNyBAQCB2
b2lkIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvCiAgICAgICAgICAgICAgICAg
b3V0IDw8ICIgKGNvbnN0IGludClcbiI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIG91dC5tZXNzYWdlKEVQcmVmaXhJbnRlcm5h
bEVycm9yLCAiVW5rbm93biBjb25zdGFudCIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAg
ICAgICAgb3V0Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwg
IlVua25vd24gY29uc3RhbnQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1l
ZGlhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvaW50ZXJtZWRpYXRlLmgJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1lZGlhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTgsNiAr
MTgsNyBAQAogCiAjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCiAKKyNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSAiY29tcGlsZXIvQ29tbW9uLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvVHlwZXMuaCIKICNpbmNsdWRlICJjb21waWxlci9Db25zdGFudFVuaW9uLmgiCkBAIC0yMDYs
MTAgKzIwNywxNiBAQCBjbGFzcyBUSW50ZXJtTm9kZSB7CiBwdWJsaWM6CiAgICAgUE9PTF9BTExP
Q0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKQogCi0gICAgVEludGVybU5vZGUo
KSA6IGxpbmUoMCkge30KKyAgICBUSW50ZXJtTm9kZSgpIHsKKyAgICAgICAgLy8gVE9ETzogTW92
ZSB0aGlzIHRvIFRTb3VyY2VMb2MgY29uc3RydWN0b3IKKyAgICAgICAgLy8gYWZ0ZXIgZ2V0dGlu
ZyByaWQgb2YgVFB1YmxpY1R5cGUuCisgICAgICAgIGxpbmUuZmlyc3RfZmlsZSA9IGxpbmUubGFz
dF9maWxlID0gMDsKKyAgICAgICAgbGluZS5maXJzdF9saW5lID0gbGluZS5sYXN0X2xpbmUgPSAw
OworICAgIH0KKyAgICB2aXJ0dWFsIH5USW50ZXJtTm9kZSgpIHsgfQogCi0gICAgVFNvdXJjZUxv
YyBnZXRMaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZTsgfQotICAgIHZvaWQgc2V0TGluZShUU291
cmNlTG9jIGwpIHsgbGluZSA9IGw7IH0KKyAgICBjb25zdCBUU291cmNlTG9jJiBnZXRMaW5lKCkg
Y29uc3QgeyByZXR1cm4gbGluZTsgfQorICAgIHZvaWQgc2V0TGluZShjb25zdCBUU291cmNlTG9j
JiBsKSB7IGxpbmUgPSBsOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2UoVEludGVybVRy
YXZlcnNlciopID0gMDsKICAgICB2aXJ0dWFsIFRJbnRlcm1UeXBlZCogZ2V0QXNUeXBlZCgpIHsg
cmV0dXJuIDA7IH0KQEAgLTIyMCw3ICsyMjcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUSW50
ZXJtU2VsZWN0aW9uKiBnZXRBc1NlbGVjdGlvbk5vZGUoKSB7IHJldHVybiAwOyB9CiAgICAgdmly
dHVhbCBUSW50ZXJtU3ltYm9sKiBnZXRBc1N5bWJvbE5vZGUoKSB7IHJldHVybiAwOyB9CiAgICAg
dmlydHVhbCBUSW50ZXJtTG9vcCogZ2V0QXNMb29wTm9kZSgpIHsgcmV0dXJuIDA7IH0KLSAgICB2
aXJ0dWFsIH5USW50ZXJtTm9kZSgpIHsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgVFNvdXJjZUxvYyBs
aW5lOwpAQCAtMzU4LDcgKzM2NCwxMCBAQCBwdWJsaWM6CiAgICAgVEludGVybUNvbnN0YW50VW5p
b24oQ29uc3RhbnRVbmlvbiAqdW5pb25Qb2ludGVyLCBjb25zdCBUVHlwZSYgdCkgOiBUSW50ZXJt
VHlwZWQodCksIHVuaW9uQXJyYXlQb2ludGVyKHVuaW9uUG9pbnRlcikgeyB9CiAKICAgICBDb25z
dGFudFVuaW9uKiBnZXRVbmlvbkFycmF5UG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJy
YXlQb2ludGVyOyB9Ci0gICAgdm9pZCBzZXRVbmlvbkFycmF5UG9pbnRlcihDb25zdGFudFVuaW9u
ICpjKSB7IHVuaW9uQXJyYXlQb2ludGVyID0gYzsgfQorICAgIAorICAgIGludCBnZXRJQ29uc3Qo
aW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRlciA/IHVuaW9uQXJyYXlQ
b2ludGVyW2luZGV4XS5nZXRJQ29uc3QoKSA6IDA7IH0KKyAgICBmbG9hdCBnZXRGQ29uc3QoaW50
IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRlciA/IHVuaW9uQXJyYXlQb2lu
dGVyW2luZGV4XS5nZXRGQ29uc3QoKSA6IDAuMGY7IH0KKyAgICBib29sIGdldEJDb25zdChpbnQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVyID8gdW5pb25BcnJheVBvaW50
ZXJbaW5kZXhdLmdldEJDb25zdCgpIDogZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgVEludGVybUNv
bnN0YW50VW5pb24qIGdldEFzQ29uc3RhbnRVbmlvbigpICB7IHJldHVybiB0aGlzOyB9CiAgICAg
dmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqKTsKQEAgLTQ0Nyw3ICs0NTYs
NyBAQCB0eXBlZGVmIFRWZWN0b3I8aW50PiBUUXVhbGlmaWVyTGlzdDsKIC8vCiBjbGFzcyBUSW50
ZXJtQWdncmVnYXRlIDogcHVibGljIFRJbnRlcm1PcGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgVElu
dGVybUFnZ3JlZ2F0ZSgpIDogVEludGVybU9wZXJhdG9yKEVPcE51bGwpLCB1c2VyRGVmaW5lZChm
YWxzZSksIGVuZExpbmUoMCksIHVzZUVtdWxhdGVkRnVuY3Rpb24oZmFsc2UpIHsgfQorICAgIFRJ
bnRlcm1BZ2dyZWdhdGUoKSA6IFRJbnRlcm1PcGVyYXRvcihFT3BOdWxsKSwgdXNlckRlZmluZWQo
ZmFsc2UpLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKGZhbHNlKSB7IH0KICAgICBUSW50ZXJtQWdncmVn
YXRlKFRPcGVyYXRvciBvKSA6IFRJbnRlcm1PcGVyYXRvcihvKSwgdXNlRW11bGF0ZWRGdW5jdGlv
bihmYWxzZSkgeyB9CiAgICAgflRJbnRlcm1BZ2dyZWdhdGUoKSB7IH0KIApAQCAtNDY3LDkgKzQ3
Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlYnVnKGJvb2wgZCkgeyBkZWJ1ZyA9IGQ7IH0K
ICAgICBib29sIGdldERlYnVnKCkgeyByZXR1cm4gZGVidWc7IH0KIAotICAgIHZvaWQgc2V0RW5k
TGluZShUU291cmNlTG9jIGxpbmUpIHsgZW5kTGluZSA9IGxpbmU7IH0KLSAgICBUU291cmNlTG9j
IGdldEVuZExpbmUoKSBjb25zdCB7IHJldHVybiBlbmRMaW5lOyB9Ci0KICAgICB2b2lkIHNldFVz
ZUVtdWxhdGVkRnVuY3Rpb24oKSB7IHVzZUVtdWxhdGVkRnVuY3Rpb24gPSB0cnVlOyB9CiAgICAg
Ym9vbCBnZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkgeyByZXR1cm4gdXNlRW11bGF0ZWRGdW5jdGlv
bjsgfQogCkBAIC00ODIsNyArNDg4LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBvcHRpbWl6
ZTsKICAgICBib29sIGRlYnVnOwotICAgIFRTb3VyY2VMb2MgZW5kTGluZTsKIAogICAgIC8vIElm
IHNldCB0byB0cnVlLCByZXBsYWNlIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBjYWxsIHdpdGggYW4g
ZW11bGF0ZWQgb25lCiAgICAgLy8gdG8gd29yayBhcm91bmQgZHJpdmVyIGJ1Z3MuCkBAIC01Mzgs
NyArNTQzLDggQEAgcHVibGljOgogICAgICAgICAgICAgaW5WaXNpdChpblZpc2l0KSwKICAgICAg
ICAgICAgIHBvc3RWaXNpdChwb3N0VmlzaXQpLAogICAgICAgICAgICAgcmlnaHRUb0xlZnQocmln
aHRUb0xlZnQpLAotICAgICAgICAgICAgZGVwdGgoMCkge30KKyAgICAgICAgICAgIGRlcHRoKDAp
LAorICAgICAgICAgICAgbWF4RGVwdGgoMCkge30KICAgICB2aXJ0dWFsIH5USW50ZXJtVHJhdmVy
c2VyKCkge307CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCop
IHt9CkBAIC01NTAsNyArNTU2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB2aXNpdExv
b3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wKikge3JldHVybiB0cnVlO30KICAgICB2aXJ0dWFs
IGJvb2wgdmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqKSB7cmV0dXJuIHRy
dWU7fQogCi0gICAgdm9pZCBpbmNyZW1lbnREZXB0aCgpIHtkZXB0aCsrO30KKyAgICBpbnQgZ2V0
TWF4RGVwdGgoKSBjb25zdCB7cmV0dXJuIG1heERlcHRoO30KKyAgICB2b2lkIGluY3JlbWVudERl
cHRoKCkge2RlcHRoKys7IG1heERlcHRoID0gc3RkOjptYXgobWF4RGVwdGgsIGRlcHRoKTsgfQog
ICAgIHZvaWQgZGVjcmVtZW50RGVwdGgoKSB7ZGVwdGgtLTt9CiAKICAgICAvLyBSZXR1cm4gdGhl
IG9yaWdpbmFsIG5hbWUgaWYgaGFzaCBmdW5jdGlvbiBwb2ludGVyIGlzIE5VTEw7CkBAIC01NjQs
NiArNTcxLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgaW50IGRlcHRoOworICAgIGlu
dCBtYXhEZXB0aDsKIH07CiAKICNlbmRpZiAvLyBfX0lOVEVSTUVESUFURV9ICkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvbG9jYWxpbnRl
cm1lZGlhdGUuaAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDM0
ICsyNSwzMyBAQCBwdWJsaWM6ICAgIAogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xv
YmFsUG9vbEFsbG9jYXRvcikKIAogICAgIFRJbnRlcm1lZGlhdGUoVEluZm9TaW5rJiBpKSA6IGlu
Zm9TaW5rKGkpIHsgfQotICAgIFRJbnRlcm1TeW1ib2wqIGFkZFN5bWJvbChpbnQgSWQsIGNvbnN0
IFRTdHJpbmcmLCBjb25zdCBUVHlwZSYsIFRTb3VyY2VMb2MpOworICAgIFRJbnRlcm1TeW1ib2wq
IGFkZFN5bWJvbChpbnQgSWQsIGNvbnN0IFRTdHJpbmcmLCBjb25zdCBUVHlwZSYsIGNvbnN0IFRT
b3VyY2VMb2MmKTsKICAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnZlcnNpb24oVE9wZXJhdG9yLCBj
b25zdCBUVHlwZSYsIFRJbnRlcm1UeXBlZCopOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQmluYXJ5
TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdo
dCwgVFNvdXJjZUxvYywgVFN5bWJvbFRhYmxlJik7Ci0gICAgVEludGVybVR5cGVkKiBhZGRBc3Np
Z24oVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQs
IFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkSW5kZXgoVE9wZXJhdG9yIG9wLCBU
SW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIFRTb3VyY2VMb2MpOwotICAg
IFRJbnRlcm1UeXBlZCogYWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIGNo
aWxkLCBUU291cmNlTG9jLCBUU3ltYm9sVGFibGUmKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlKiBn
cm93QWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBsZWZ0LCBUSW50ZXJtTm9kZSogcmlnaHQsIFRTb3Vy
Y2VMb2MpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIG1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUq
IG5vZGUsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIHNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKFRJbnRlcm1Ob2RlKiwgVE9wZXJhdG9yLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJt
Tm9kZSogIGFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1Ob2RlUGFpciBj
b2RlLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZFNlbGVjdGlvbihUSW50ZXJt
VHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZhbHNl
QmxvY2ssIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29tbWEoVEludGVybVR5
cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJt
Q29uc3RhbnRVbmlvbiogYWRkQ29uc3RhbnRVbmlvbihDb25zdGFudFVuaW9uKiwgY29uc3QgVFR5
cGUmLCBUU291cmNlTG9jKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZEJpbmFyeU1hdGgoVE9wZXJh
dG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRT
b3VyY2VMb2MmLCBUU3ltYm9sVGFibGUmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZEFzc2lnbihU
T3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29u
c3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkSW5kZXgoVE9wZXJhdG9yIG9w
LCBUSW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIGNvbnN0IFRTb3VyY2VM
b2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZFVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRl
cm1Ob2RlKiBjaGlsZCwgY29uc3QgVFNvdXJjZUxvYyYsIFRTeW1ib2xUYWJsZSYpOworICAgIFRJ
bnRlcm1BZ2dyZWdhdGUqIGdyb3dBZ2dyZWdhdGUoVEludGVybU5vZGUqIGxlZnQsIFRJbnRlcm1O
b2RlKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1BZ2dyZWdhdGUqIG1h
a2VBZ2dyZWdhdGUoVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBU
SW50ZXJtQWdncmVnYXRlKiBzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSosIFRPcGVy
YXRvciwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1Ob2RlKiAgYWRkU2VsZWN0aW9u
KFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQYWlyIGNvZGUsIGNvbnN0IFRTb3VyY2VM
b2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQs
IFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZhbHNlQmxvY2ssIGNvbnN0
IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbW1hKFRJbnRlcm1UeXBlZCog
bGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRl
cm1Db25zdGFudFVuaW9uKiBhZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qLCBjb25zdCBU
VHlwZSYsIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAgICBUSW50ZXJtVHlwZWQqIHByb21vdGVDb25z
dGFudFVuaW9uKFRCYXNpY1R5cGUsIFRJbnRlcm1Db25zdGFudFVuaW9uKikgOwotICAgIGJvb2wg
cGFyc2VDb25zdFRyZWUoVFNvdXJjZUxvYywgVEludGVybU5vZGUqLCBDb25zdGFudFVuaW9uKiwg
VE9wZXJhdG9yLCBUU3ltYm9sVGFibGUmLCBUVHlwZSwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFt
ID0gZmFsc2UpOyAgICAgICAgCi0gICAgVEludGVybU5vZGUqIGFkZExvb3AoVExvb3BUeXBlLCBU
SW50ZXJtTm9kZSosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1Ob2RlKiwg
VFNvdXJjZUxvYyk7Ci0gICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgVFNv
dXJjZUxvYyk7Ci0gICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgVEludGVy
bVR5cGVkKiwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRTd2l6emxlKFRWZWN0
b3JGaWVsZHMmLCBUU291cmNlTG9jKTsKKyAgICBib29sIHBhcnNlQ29uc3RUcmVlKGNvbnN0IFRT
b3VyY2VMb2MmLCBUSW50ZXJtTm9kZSosIENvbnN0YW50VW5pb24qLCBUT3BlcmF0b3IsIFRTeW1i
b2xUYWJsZSYsIFRUeXBlLCBib29sIHNpbmdsZUNvbnN0YW50UGFyYW0gPSBmYWxzZSk7ICAgICAg
ICAKKyAgICBUSW50ZXJtTm9kZSogYWRkTG9vcChUTG9vcFR5cGUsIFRJbnRlcm1Ob2RlKiwgVElu
dGVybVR5cGVkKiwgVEludGVybVR5cGVkKiwgVEludGVybU5vZGUqLCBjb25zdCBUU291cmNlTG9j
Jik7CisgICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgY29uc3QgVFNvdXJj
ZUxvYyYpOworICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3BlcmF0b3IsIFRJbnRlcm1U
eXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZFN3aXp6bGUo
VFZlY3RvckZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAgICBib29sIHBvc3RQcm9jZXNz
KFRJbnRlcm1Ob2RlKik7Ci0Jdm9pZCByZW1vdmUoVEludGVybU5vZGUqKTsKKyAgICB2b2lkIHJl
bW92ZShUSW50ZXJtTm9kZSopOwogICAgIHZvaWQgb3V0cHV0VHJlZShUSW50ZXJtTm9kZSopOwot
ICAgIAotcHJvdGVjdGVkOgotICAgIFRJbmZvU2luayYgaW5mb1Npbms7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBvcGVyYXRvcj0oVEludGVybWVkaWF0ZSYpOyAvLyBwcmV2ZW50IGFzc2lnbm1lbnRz
CisKKyAgICBUSW5mb1NpbmsmIGluZm9TaW5rOwogfTsKIAogI2VuZGlmIC8vIF9MT0NBTF9JTlRF
Uk1FRElBVEVfSU5DTFVERURfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcGFyc2VDb25zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDE2ICszOCwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCB2aXNpdExvb3Ao
VmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wKik7CiAgICAgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCB2
aXNpdCwgVEludGVybUJyYW5jaCopOwogCi0gICAgaW50IGluZGV4OworICAgIHNpemVfdCBpbmRl
eDsKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5OwogICAgIFRUeXBlIHR5cGU7CiAgICAg
VE9wZXJhdG9yIGNvbnN0cnVjdG9yVHlwZTsKICAgICBib29sIHNpbmdsZUNvbnN0YW50UGFyYW07
CiAgICAgVEluZm9TaW5rJiBpbmZvU2luazsKICAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxl
OwotICAgIGludCBzaXplOyAvLyBzaXplIG9mIHRoZSBjb25zdHJ1Y3RvciAoIDQgZm9yIHZlYzQp
CisgICAgc2l6ZV90IHNpemU7IC8vIHNpemUgb2YgdGhlIGNvbnN0cnVjdG9yICggNCBmb3IgdmVj
NCkKICAgICBib29sIGlzTWF0cml4OwotICAgIGludCBtYXRyaXhTaXplOyAvLyBkaW1lbnNpb24g
b2YgdGhlIG1hdHJpeCAobm9taW5hbCBzaXplIGFuZCBub3QgdGhlIGluc3RhbmNlIHNpemUpCisg
ICAgc2l6ZV90IG1hdHJpeFNpemU7IC8vIGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4IChub21pbmFs
IHNpemUgYW5kIG5vdCB0aGUgaW5zdGFuY2Ugc2l6ZSkKIH07CiAKIC8vCkBAIC02MSw3ICs2MSw3
IEBAIHByb3RlY3RlZDoKIAogdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0U3ltYm9sKFRJbnRl
cm1TeW1ib2wqIG5vZGUpCiB7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRl
cm5hbEVycm9yLCAiU3ltYm9sIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBu
b2RlLT5nZXRMaW5lKCkpOworICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiU3ltYm9sIE5vZGUgZm91bmQgaW4gY29uc3RhbnQg
Y29uc3RydWN0b3IiKTsKICAgICByZXR1cm47CiAKIH0KQEAgLTc0LDEyICs3NCwxMiBAQCBib29s
IFRDb25zdFRyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgCiAgICAgICAgIFRTdHJpbmcgYnVm
OwogICAgICAgICBidWYuYXBwZW5kKCInY29uc3RydWN0b3InIDogYXNzaWduaW5nIG5vbi1jb25z
dGFudCB0byAiKTsKICAgICAgICAgYnVmLmFwcGVuZCh0eXBlLmdldENvbXBsZXRlU3RyaW5nKCkp
OwotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBidWYuY19zdHIo
KSwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCBidWYuY19zdHIoKSk7CiAgICAgICAgIGVycm9yID0g
dHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgCiAgICAgfQogCi0gICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJCaW5hcnkgTm9kZSBmb3VuZCBpbiBjb25z
dGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExpbmUoKSk7CisgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJpbmFyeSBOb2Rl
IGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgCiAgICAgcmV0dXJuIGZhbHNl
OwogfQpAQCAtODksNyArODksNyBAQCBib29sIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRVbmFyeShW
aXNpdCB2CiAgICAgVFN0cmluZyBidWY7CiAgICAgYnVmLmFwcGVuZCgiJ2NvbnN0cnVjdG9yJyA6
IGFzc2lnbmluZyBub24tY29uc3RhbnQgdG8gIik7CiAgICAgYnVmLmFwcGVuZCh0eXBlLmdldENv
bXBsZXRlU3RyaW5nKCkpOwotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3Is
IGJ1Zi5jX3N0cigpLCBub2RlLT5nZXRMaW5lKCkpOworICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4RXJyb3IsIG5vZGUtPmdldExpbmUoKSwgYnVmLmNfc3RyKCkpOwogICAgIGVycm9y
ID0gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7ICAKIH0KQEAgLTEwMCw3ICsxMDAsNyBAQCBib29s
IFRDb25zdFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzCiAgICAgICAgIFRTdHJpbmcgYnVm
OwogICAgICAgICBidWYuYXBwZW5kKCInY29uc3RydWN0b3InIDogYXNzaWduaW5nIG5vbi1jb25z
dGFudCB0byAiKTsKICAgICAgICAgYnVmLmFwcGVuZCh0eXBlLmdldENvbXBsZXRlU3RyaW5nKCkp
OwotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBidWYuY19zdHIo
KSwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCBidWYuY19zdHIoKSk7CiAgICAgICAgIGVycm9yID0g
dHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgCiAgICAgfQpAQCAtMTQ0LDI0ICsxNDQsMzEg
QEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpcwogCiBib29sIFRDb25z
dFRyYXZlcnNlcjo6dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24q
IG5vZGUpCiB7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCAiU2VsZWN0aW9uIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5n
ZXRMaW5lKCkpOworICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgbm9kZS0+Z2V0TGluZSgpLCAiU2VsZWN0aW9uIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29u
c3RydWN0b3IiKTsKICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2
b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVu
aW9uKiBub2RlKQogeworICAgIGlmICghbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSkKKyAg
ICB7CisgICAgICAgIC8vIFRoZSBjb25zdGFudCB3YXMgbm90IGluaXRpYWxpemVkLCB0aGlzIHNo
b3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBsb2dnZWQKKyAgICAgICAgYXNzZXJ0KGluZm9TaW5rLmlu
Zm8uc2l6ZSgpICE9IDApOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ29uc3RhbnRV
bmlvbiogbGVmdFVuaW9uQXJyYXkgPSB1bmlvbkFycmF5OwotICAgIGludCBpbnN0YW5jZVNpemUg
PSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICBzaXplX3QgaW5zdGFuY2VTaXplID0gdHlwZS5n
ZXRPYmplY3RTaXplKCk7CiAKICAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2VTaXplKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoIXNpbmdsZUNvbnN0YW50UGFyYW0pIHsKLSAgICAgICAgaW50
IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICBzaXplX3Qg
c2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CiAgICAgCiAgICAgICAgIENv
bnN0YW50VW5pb24gKnJpZ2h0VW5pb25BcnJheSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVy
KCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICAgICAgaWYgKGluZGV4ID49
IGluc3RhbmNlU2l6ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBsZWZ0
VW5pb25BcnJheVtpbmRleF0gPSByaWdodFVuaW9uQXJyYXlbaV07CkBAIC0xNjksMTEgKzE3Niwx
MSBAQCB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uCiAgICAgICAgICAg
ICAoaW5kZXgpKys7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpbnQgdG90YWxT
aXplID0gaW5kZXggKyBzaXplOworICAgICAgICBzaXplX3QgdG90YWxTaXplID0gaW5kZXggKyBz
aXplOwogICAgICAgICBDb25zdGFudFVuaW9uICpyaWdodFVuaW9uQXJyYXkgPSBub2RlLT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpOwogICAgICAgICBpZiAoIWlzTWF0cml4KSB7Ci0gICAgICAgICAg
ICBpbnQgY291bnQgPSAwOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IGluZGV4OyBpIDwgdG90
YWxTaXplOyBpKyspIHsKKyAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IDA7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkrKykgewogICAgICAgICAg
ICAgICAgIGlmIChpID49IGluc3RhbmNlU2l6ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC0xODUsOSArMTkyLDkgQEAgdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3Rh
bnRVbmlvbgogICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgeyAgLy8gZm9yIG1hdHJpeCBjb25zdHJ1Y3RvcnMKLSAgICAgICAgICAgIGlu
dCBjb3VudCA9IDA7Ci0gICAgICAgICAgICBpbnQgZWxlbWVudCA9IGluZGV4OwotICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IGluZGV4OyBpIDwgdG90YWxTaXplOyBpKyspIHsKKyAgICAgICAgICAg
IHNpemVfdCBjb3VudCA9IDA7CisgICAgICAgICAgICBzaXplX3QgZWxlbWVudCA9IGluZGV4Owor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGluZGV4OyBpIDwgdG90YWxTaXplOyBpKyspIHsK
ICAgICAgICAgICAgICAgICBpZiAoaSA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCAtIGkgPT0gMCB8fCAoaSAt
IGVsZW1lbnQpICUgKG1hdHJpeFNpemUgKyAxKSA9PSAwICkKQEAgLTIwNiwxNCArMjEzLDE0IEBA
IHZvaWQgVENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24KIAogYm9vbCBUQ29uc3RU
cmF2ZXJzZXI6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AqIG5vZGUpCiB7Ci0g
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiTG9vcCBOb2Rl
IGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUo
KSwgIkxvb3AgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOwogICAgIGVycm9y
ID0gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2
aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCogbm9kZSkKIHsKLSAgICBpbmZv
U2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJCcmFuY2ggTm9kZSBmb3Vu
ZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJC
cmFuY2ggTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOwogICAgIGVycm9yID0g
dHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMjMsNyArMjMwLDcgQEAgYm9vbCBUQ29u
c3RUcmF2ZXJzZXI6OnZpc2l0QnJhbmNoKFZpc2l0IAogLy8gSW5kaXZpZHVhbCBmdW5jdGlvbnMg
Y2FuIGJlIGluaXRpYWxpemVkIHRvIDAgdG8gc2tpcCBwcm9jZXNzaW5nIG9mIHRoYXQKIC8vIHR5
cGUgb2Ygbm9kZS4gIEl0J3MgY2hpbGRyZW4gd2lsbCBzdGlsbCBiZSBwcm9jZXNzZWQuCiAvLwot
Ym9vbCBUSW50ZXJtZWRpYXRlOjpwYXJzZUNvbnN0VHJlZShUU291cmNlTG9jIGxpbmUsIFRJbnRl
cm1Ob2RlKiByb290LCBDb25zdGFudFVuaW9uKiB1bmlvbkFycmF5LCBUT3BlcmF0b3IgY29uc3Ry
dWN0b3JUeXBlLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlLCBUVHlwZSB0LCBib29sIHNpbmds
ZUNvbnN0YW50UGFyYW0pCitib29sIFRJbnRlcm1lZGlhdGU6OnBhcnNlQ29uc3RUcmVlKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1Ob2RlKiByb290LCBDb25zdGFudFVuaW9uKiB1bmlv
bkFycmF5LCBUT3BlcmF0b3IgY29uc3RydWN0b3JUeXBlLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRh
YmxlLCBUVHlwZSB0LCBib29sIHNpbmdsZUNvbnN0YW50UGFyYW0pCiB7CiAgICAgaWYgKHJvb3Qg
PT0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L0V4cHJlc3Npb25QYXJzZXIuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDI0ICsxLDIyIEBACi0vKiBBIEJpc29uIHBhcnNlciwgbWFk
ZSBieSBHTlUgQmlzb24gMi4zLiAgKi8KKy8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBC
aXNvbiAyLjQuMi4gICovCiAKIC8qIFNrZWxldG9uIGltcGxlbWVudGF0aW9uIGZvciBCaXNvbidz
IFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKLQotICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LCAx
OTkwLCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2Ci0gICBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLQotICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIAorICAgICAgQ29w
eXJpZ2h0IChDKSAxOTg0LCAxOTg5LTE5OTAsIDIwMDAtMjAwNiwgMjAwOS0yMDEwIEZyZWUgU29m
dHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4KKyAgIAorICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg
c29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5Ci0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy
LCBvciAoYXQgeW91ciBvcHRpb24pCi0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLQorICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg
b3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgICAKICAgIFRoaXMg
cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0KKyAgIAogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25nIHdpdGggdGhpcyBwcm9n
cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gICBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuICAqLworICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl
ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAvKiBBcyBhIHNwZWNpYWwg
ZXhjZXB0aW9uLCB5b3UgbWF5IGNyZWF0ZSBhIGxhcmdlciB3b3JrIHRoYXQgY29udGFpbnMKICAg
IHBhcnQgb3IgYWxsIG9mIHRoZSBCaXNvbiBwYXJzZXIgc2tlbGV0b24gYW5kIGRpc3RyaWJ1dGUg
dGhhdCB3b3JrCkBAIC0yOSw3ICsyNyw3IEBACiAgICBzcGVjaWFsIGV4Y2VwdGlvbiwgd2hpY2gg
d2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcKICAgIEJpc29uIG91dHB1
dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljCiAgICBM
aWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2VwdGlvbi4KLQorICAgCiAgICBUaGlzIHNw
ZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
IGluCiAgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4gICovCiAKQEAgLTQ3LDcgKzQ1LDcgQEAKICNk
ZWZpbmUgWVlCSVNPTiAxCiAKIC8qIEJpc29uIHZlcnNpb24uICAqLwotI2RlZmluZSBZWUJJU09O
X1ZFUlNJT04gIjIuMyIKKyNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjQuMiIKIAogLyogU2tl
bGV0b24gbmFtZS4gICovCiAjZGVmaW5lIFlZU0tFTEVUT05fTkFNRSAieWFjYy5jIgpAQCAtNTUs
NTAgKzUzLDIzIEBACiAvKiBQdXJlIHBhcnNlcnMuICAqLwogI2RlZmluZSBZWVBVUkUgMQogCisv
KiBQdXNoIHBhcnNlcnMuICAqLworI2RlZmluZSBZWVBVU0ggMAorCisvKiBQdWxsIHBhcnNlcnMu
ICAqLworI2RlZmluZSBZWVBVTEwgMQorCiAvKiBVc2luZyBsb2NhdGlvbnMuICAqLwogI2RlZmlu
ZSBZWUxTUF9ORUVERUQgMAogCiAvKiBTdWJzdGl0dXRlIHRoZSB2YXJpYWJsZSBhbmQgZnVuY3Rp
b24gbmFtZXMuICAqLwotI2RlZmluZSB5eXBhcnNlIHBwcGFyc2UKLSNkZWZpbmUgeXlsZXggICBw
cGxleAotI2RlZmluZSB5eWVycm9yIHBwZXJyb3IKLSNkZWZpbmUgeXlsdmFsICBwcGx2YWwKLSNk
ZWZpbmUgeXljaGFyICBwcGNoYXIKLSNkZWZpbmUgeXlkZWJ1ZyBwcGRlYnVnCi0jZGVmaW5lIHl5
bmVycnMgcHBuZXJycwotCi0KLS8qIFRva2Vucy4gICovCi0jaWZuZGVmIFlZVE9LRU5UWVBFCi0j
IGRlZmluZSBZWVRPS0VOVFlQRQotICAgLyogUHV0IHRoZSB0b2tlbnMgaW50byB0aGUgc3ltYm9s
IHRhYmxlLCBzbyB0aGF0IEdEQiBhbmQgb3RoZXIgZGVidWdnZXJzCi0gICAgICBrbm93IGFib3V0
IHRoZW0uICAqLwotICAgZW51bSB5eXRva2VudHlwZSB7Ci0gICAgIFRPS19DT05TVF9JTlQgPSAy
NTgsCi0gICAgIFRPS19PUF9PUiA9IDI1OSwKLSAgICAgVE9LX09QX0FORCA9IDI2MCwKLSAgICAg
VE9LX09QX05FID0gMjYxLAotICAgICBUT0tfT1BfRVEgPSAyNjIsCi0gICAgIFRPS19PUF9HRSA9
IDI2MywKLSAgICAgVE9LX09QX0xFID0gMjY0LAotICAgICBUT0tfT1BfUklHSFQgPSAyNjUsCi0g
ICAgIFRPS19PUF9MRUZUID0gMjY2LAotICAgICBUT0tfVU5BUlkgPSAyNjcKLSAgIH07Ci0jZW5k
aWYKLS8qIFRva2Vucy4gICovCi0jZGVmaW5lIFRPS19DT05TVF9JTlQgMjU4Ci0jZGVmaW5lIFRP
S19PUF9PUiAyNTkKLSNkZWZpbmUgVE9LX09QX0FORCAyNjAKLSNkZWZpbmUgVE9LX09QX05FIDI2
MQotI2RlZmluZSBUT0tfT1BfRVEgMjYyCi0jZGVmaW5lIFRPS19PUF9HRSAyNjMKLSNkZWZpbmUg
VE9LX09QX0xFIDI2NAotI2RlZmluZSBUT0tfT1BfUklHSFQgMjY1Ci0jZGVmaW5lIFRPS19PUF9M
RUZUIDI2NgotI2RlZmluZSBUT0tfVU5BUlkgMjY3Ci0KLQorI2RlZmluZSB5eXBhcnNlICAgICAg
ICAgcHBwYXJzZQorI2RlZmluZSB5eWxleCAgICAgICAgICAgcHBsZXgKKyNkZWZpbmUgeXllcnJv
ciAgICAgICAgIHBwZXJyb3IKKyNkZWZpbmUgeXlsdmFsICAgICAgICAgIHBwbHZhbAorI2RlZmlu
ZSB5eWNoYXIgICAgICAgICAgcHBjaGFyCisjZGVmaW5lIHl5ZGVidWcgICAgICAgICBwcGRlYnVn
CisjZGVmaW5lIHl5bmVycnMgICAgICAgICBwcG5lcnJzCiAKIAogLyogQ29weSB0aGUgZmlyc3Qg
cGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCkBAIC0xNTgsNiArMTI5LDcgQEAgc3RhdGlj
IGludCB5eWxleChZWVNUWVBFKiBsdmFscCwgQ29udGV4dAogc3RhdGljIHZvaWQgeXllcnJvcihD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOwogCiAKKwogLyogRW5hYmxpbmcg
dHJhY2VzLiAgKi8KICNpZm5kZWYgWVlERUJVRwogIyBkZWZpbmUgWVlERUJVRyAwCkBAIC0xNzYs
MjAgKzE0OCwzOSBAQCBzdGF0aWMgdm9pZCB5eWVycm9yKENvbnRleHQqIGNvbnRleHQsIGNvCiAj
IGRlZmluZSBZWVRPS0VOX1RBQkxFIDAKICNlbmRpZgogCisKKy8qIFRva2Vucy4gICovCisjaWZu
ZGVmIFlZVE9LRU5UWVBFCisjIGRlZmluZSBZWVRPS0VOVFlQRQorICAgLyogUHV0IHRoZSB0b2tl
bnMgaW50byB0aGUgc3ltYm9sIHRhYmxlLCBzbyB0aGF0IEdEQiBhbmQgb3RoZXIgZGVidWdnZXJz
CisgICAgICBrbm93IGFib3V0IHRoZW0uICAqLworICAgZW51bSB5eXRva2VudHlwZSB7CisgICAg
IFRPS19DT05TVF9JTlQgPSAyNTgsCisgICAgIFRPS19PUF9PUiA9IDI1OSwKKyAgICAgVE9LX09Q
X0FORCA9IDI2MCwKKyAgICAgVE9LX09QX05FID0gMjYxLAorICAgICBUT0tfT1BfRVEgPSAyNjIs
CisgICAgIFRPS19PUF9HRSA9IDI2MywKKyAgICAgVE9LX09QX0xFID0gMjY0LAorICAgICBUT0tf
T1BfUklHSFQgPSAyNjUsCisgICAgIFRPS19PUF9MRUZUID0gMjY2LAorICAgICBUT0tfVU5BUlkg
PSAyNjcKKyAgIH07CisjZW5kaWYKKworCisKICNpZiAhIGRlZmluZWQgWVlTVFlQRSAmJiAhIGRl
ZmluZWQgWVlTVFlQRV9JU19ERUNMQVJFRAogdHlwZWRlZiBpbnQgWVlTVFlQRTsKKyMgZGVmaW5l
IFlZU1RZUEVfSVNfVFJJVklBTCAxCiAjIGRlZmluZSB5eXN0eXBlIFlZU1RZUEUgLyogb2Jzb2xl
c2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCiAjIGRlZmluZSBZWVNUWVBFX0lTX0RFQ0xBUkVE
IDEKLSMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCiAjZW5kaWYKIAogCi0KIC8qIENvcHkg
dGhlIHNlY29uZCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8KIAogCi0vKiBMaW5lIDIx
NiBvZiB5YWNjLmMuICAqLwotCiAKICNpZmRlZiBzaG9ydAogIyB1bmRlZiBzaG9ydApAQCAtMjY0
LDE0ICsyNTUsMTQgQEAgdHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDE2OwogI2lmIChkZWZp
bmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQg
X19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyBpbnQKLVlZSUQgKGludCBp
KQorWVlJRCAoaW50IHl5aSkKICNlbHNlCiBzdGF0aWMgaW50Ci1ZWUlEIChpKQotICAgIGludCBp
OworWVlJRCAoeXlpKQorICAgIGludCB5eWk7CiAjZW5kaWYKIHsKLSAgcmV0dXJuIGk7CisgIHJl
dHVybiB5eWk7CiB9CiAjZW5kaWYKIApAQCAtMzUyLDkgKzM0Myw5IEBAIHZvaWQgZnJlZSAodm9p
ZCAqKTsgLyogSU5GUklOR0VTIE9OIFVTRVIKIC8qIEEgdHlwZSB0aGF0IGlzIHByb3Blcmx5IGFs
aWduZWQgZm9yIGFueSBzdGFjayBtZW1iZXIuICAqLwogdW5pb24geXlhbGxvYwogewotICB5eXR5
cGVfaW50MTYgeXlzczsKLSAgWVlTVFlQRSB5eXZzOwotICB9OworICB5eXR5cGVfaW50MTYgeXlz
c19hbGxvYzsKKyAgWVlTVFlQRSB5eXZzX2FsbG9jOworfTsKIAogLyogVGhlIHNpemUgb2YgdGhl
IG1heGltdW0gZ2FwIGJldHdlZW4gb25lIGFsaWduZWQgc3RhY2sgYW5kIHRoZSBuZXh0LiAgKi8K
ICMgZGVmaW5lIFlZU1RBQ0tfR0FQX01BWElNVU0gKHNpemVvZiAodW5pb24geXlhbGxvYykgLSAx
KQpAQCAtMzg4LDEyICszNzksMTIgQEAgdW5pb24geXlhbGxvYwogICAgZWxlbWVudHMgaW4gdGhl
IHN0YWNrLCBhbmQgWVlQVFIgZ2l2ZXMgdGhlIG5ldyBsb2NhdGlvbiBvZiB0aGUKICAgIHN0YWNr
LiAgQWR2YW5jZSBZWVBUUiB0byBhIHByb3Blcmx5IGFsaWduZWQgbG9jYXRpb24gZm9yIHRoZSBu
ZXh0CiAgICBzdGFjay4gICovCi0jIGRlZmluZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrKQkJCQkJ
XAorIyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FURShTdGFja19hbGxvYywgU3RhY2spCQkJCVwKICAg
ICBkbwkJCQkJCQkJCVwKICAgICAgIHsJCQkJCQkJCQlcCiAJWVlTSVpFX1QgeXluZXdieXRlczsJ
CQkJCQlcCi0JWVlDT1BZICgmeXlwdHItPlN0YWNrLCBTdGFjaywgeXlzaXplKTsJCQkJXAotCVN0
YWNrID0gJnl5cHRyLT5TdGFjazsJCQkJCQlcCisJWVlDT1BZICgmeXlwdHItPlN0YWNrX2FsbG9j
LCBTdGFjaywgeXlzaXplKTsJCQlcCisJU3RhY2sgPSAmeXlwdHItPlN0YWNrX2FsbG9jOwkJCQkJ
XAogCXl5bmV3Ynl0ZXMgPSB5eXN0YWNrc2l6ZSAqIHNpemVvZiAoKlN0YWNrKSArIFlZU1RBQ0tf
R0FQX01BWElNVU07IFwKIAl5eXB0ciArPSB5eW5ld2J5dGVzIC8gc2l6ZW9mICgqeXlwdHIpOwkJ
CQlcCiAgICAgICB9CQkJCQkJCQkJXApAQCAtNDgyLDkgKzQ3Myw5IEBAIHN0YXRpYyBjb25zdCB5
eXR5cGVfaW50OCB5eXJoc1tdID0KIC8qIFlZUkxJTkVbWVlOXSAtLSBzb3VyY2UgbGluZSB3aGVy
ZSBydWxlIG51bWJlciBZWU4gd2FzIGRlZmluZWQuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91
aW50OCB5eXJsaW5lW10gPQogewotICAgICAgIDAsICAgIDkxLCAgICA5MSwgICAgOTgsICAgIDk5
LCAgIDEwMiwgICAxMDUsICAgMTA4LCAgIDExMSwgICAxMTQsCi0gICAgIDExNywgICAxMjAsICAg
MTIzLCAgIDEyNiwgICAxMjksICAgMTMyLCAgIDEzNSwgICAxMzgsICAgMTQxLCAgIDE0NCwKLSAg
ICAgMTU3LCAgIDE3MCwgICAxNzMsICAgMTc2LCAgIDE3OSwgICAxODIsICAgMTg1CisgICAgICAg
MCwgICAgOTAsICAgIDkwLCAgICA5NywgICAgOTgsICAgMTAxLCAgIDEwNCwgICAxMDcsICAgMTEw
LCAgIDExMywKKyAgICAgMTE2LCAgIDExOSwgICAxMjIsICAgMTI1LCAgIDEyOCwgICAxMzEsICAg
MTM0LCAgIDEzNywgICAxNDAsICAgMTQzLAorICAgICAxNTYsICAgMTY5LCAgIDE3MiwgICAxNzUs
ICAgMTc4LCAgIDE4MSwgICAxODQKIH07CiAjZW5kaWYKIApAQCAtNjM5LDkgKzYzMCwxOCBAQCBz
dGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KIAogLyogTGlrZSBZWUVSUk9SIGV4
Y2VwdCBkbyBjYWxsIHl5ZXJyb3IuICBUaGlzIHJlbWFpbnMgaGVyZSB0ZW1wb3JhcmlseQogICAg
dG8gZWFzZSB0aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3IG1lYW5pbmcgb2YgWVlFUlJPUiwgZm9y
IEdDQy4KLSAgIE9uY2UgR0NDIHZlcnNpb24gMiBoYXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRo
aXMgY2FuIGdvLiAgKi8KKyAgIE9uY2UgR0NDIHZlcnNpb24gMiBoYXMgc3VwcGxhbnRlZCB2ZXJz
aW9uIDEsIHRoaXMgY2FuIGdvLiAgSG93ZXZlciwKKyAgIFlZRkFJTCBhcHBlYXJzIHRvIGJlIGlu
IHVzZS4gIE5ldmVydGhlbGVzcywgaXQgaXMgZm9ybWFsbHkgZGVwcmVjYXRlZAorICAgaW4gQmlz
b24gMi40LjIncyBORVdTIGVudHJ5LCB3aGVyZSBhIHBsYW4gdG8gcGhhc2UgaXQgb3V0IGlzCisg
ICBkaXNjdXNzZWQuICAqLwogCiAjZGVmaW5lIFlZRkFJTAkJZ290byB5eWVycmxhYgorI2lmIGRl
ZmluZWQgWVlGQUlMCisgIC8qIFRoaXMgaXMgaGVyZSB0byBzdXBwcmVzcyB3YXJuaW5ncyBmcm9t
IHRoZSBHQ0MgY3BwJ3MKKyAgICAgLVd1bnVzZWQtbWFjcm9zLiAgTm9ybWFsbHkgd2UgZG9uJ3Qg
d29ycnkgYWJvdXQgdGhhdCB3YXJuaW5nLCBidXQKKyAgICAgc29tZSB1c2VycyBkbywgYW5kIHdl
IHdhbnQgdG8gbWFrZSBpdCBlYXN5IGZvciB1c2VycyB0byByZW1vdmUKKyAgICAgWVlGQUlMIHVz
ZXMsIHdoaWNoIHdpbGwgcHJvZHVjZSB3YXJuaW5ncyBmcm9tIEJpc29uIDIuNS4gICovCisjZW5k
aWYKIAogI2RlZmluZSBZWVJFQ09WRVJJTkcoKSAgKCEheXllcnJzdGF0dXMpCiAKQEAgLTgxMiwx
NyArODEyLDIwIEBAIHl5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWwKICNp
ZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBk
ZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlf
c3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqYm90dG9tLCB5eXR5cGVfaW50MTYgKnRvcCkKK3l5
X3N0YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKnl5Ym90dG9tLCB5eXR5cGVfaW50MTYgKnl5dG9w
KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eV9zdGFja19wcmludCAoYm90dG9tLCB0b3ApCi0gICAg
eXl0eXBlX2ludDE2ICpib3R0b207Ci0gICAgeXl0eXBlX2ludDE2ICp0b3A7Cit5eV9zdGFja19w
cmludCAoeXlib3R0b20sIHl5dG9wKQorICAgIHl5dHlwZV9pbnQxNiAqeXlib3R0b207CisgICAg
eXl0eXBlX2ludDE2ICp5eXRvcDsKICNlbmRpZgogewogICBZWUZQUklOVEYgKHN0ZGVyciwgIlN0
YWNrIG5vdyIpOwotICBmb3IgKDsgYm90dG9tIDw9IHRvcDsgKytib3R0b20pCi0gICAgWVlGUFJJ
TlRGIChzdGRlcnIsICIgJWQiLCAqYm90dG9tKTsKKyAgZm9yICg7IHl5Ym90dG9tIDw9IHl5dG9w
OyB5eWJvdHRvbSsrKQorICAgIHsKKyAgICAgIGludCB5eWJvdCA9ICp5eWJvdHRvbTsKKyAgICAg
IFlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgeXlib3QpOworICAgIH0KICAgWVlGUFJJTlRGIChz
dGRlcnIsICJcbiIpOwogfQogCkBAIC04NTcsMTEgKzg2MCwxMSBAQCB5eV9yZWR1Y2VfcHJpbnQg
KHl5dnNwLCB5eXJ1bGUsIGNvbnRleHQpCiAgIC8qIFRoZSBzeW1ib2xzIGJlaW5nIHJlZHVjZWQu
ICAqLwogICBmb3IgKHl5aSA9IDA7IHl5aSA8IHl5bnJoczsgeXlpKyspCiAgICAgewotICAgICAg
ZnByaW50ZiAoc3RkZXJyLCAiICAgJCVkID0gIiwgeXlpICsgMSk7CisgICAgICBZWUZQUklOVEYg
KHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOwogICAgICAgeXlfc3ltYm9sX3ByaW50IChz
dGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVdICsgeXlpXSwKIAkJICAgICAgICYoeXl2c3BbKHl5
aSArIDEpIC0gKHl5bnJocyldKQogCQkgICAgICAgCQkgICAgICAgLCBjb250ZXh0KTsKLSAgICAg
IGZwcmludGYgKHN0ZGVyciwgIlxuIik7CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7
CiAgICAgfQogfQogCkBAIC0xMTQzLDEwICsxMTQ2LDggQEAgeXlkZXN0cnVjdCAoeXltc2csIHl5
dHlwZSwgeXl2YWx1ZXAsIGNvbgogCWJyZWFrOwogICAgIH0KIH0KLQwKIAogLyogUHJldmVudCB3
YXJuaW5ncyBmcm9tIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KLQogI2lmZGVmIFlZUEFSU0Vf
UEFSQU0KICNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKIGludCB5
eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFNKTsKQEAgLTExNjUsMTAgKzExNjYsOSBAQCBpbnQg
eXlwYXJzZSAoKTsKIAogCiAKLQotLyotLS0tLS0tLS0tLgotfCB5eXBhcnNlLiAgfAotYC0tLS0t
LS0tLS0qLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eXBhcnNlIG9yIHl5cHVz
aF9wYXJzZS4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogI2lmZGVmIFlZUEFS
U0VfUEFSQU0KICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18g
XApAQCAtMTE5MiwyMiArMTE5Miw0NiBAQCB5eXBhcnNlIChjb250ZXh0KQogI2VuZGlmCiAjZW5k
aWYKIHsKLSAgLyogVGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KKy8qIFRoZSBsb29rYWhlYWQg
c3ltYm9sLiAgKi8KIGludCB5eWNoYXI7CiAKLS8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBvZiB0aGUg
bG9vay1haGVhZCBzeW1ib2wuICAqLworLyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBsb29r
YWhlYWQgc3ltYm9sLiAgKi8KIFlZU1RZUEUgeXlsdmFsOwogCi0vKiBOdW1iZXIgb2Ygc3ludGF4
IGVycm9ycyBzbyBmYXIuICAqLwotaW50IHl5bmVycnM7CisgICAgLyogTnVtYmVyIG9mIHN5bnRh
eCBlcnJvcnMgc28gZmFyLiAgKi8KKyAgICBpbnQgeXluZXJyczsKKworICAgIGludCB5eXN0YXRl
OworICAgIC8qIE51bWJlciBvZiB0b2tlbnMgdG8gc2hpZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2Vz
IGVuYWJsZWQuICAqLworICAgIGludCB5eWVycnN0YXR1czsKKworICAgIC8qIFRoZSBzdGFja3Mg
YW5kIHRoZWlyIHRvb2xzOgorICAgICAgIGB5eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMuCisgICAg
ICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcy4KKworICAgICAgIFJlZmVyIHRv
IHRoZSBzdGFja3MgdGhydSBzZXBhcmF0ZSBwb2ludGVycywgdG8gYWxsb3cgeXlvdmVyZmxvdwor
ICAgICAgIHRvIHJlYWxsb2NhdGUgdGhlbSBlbHNld2hlcmUuICAqLworCisgICAgLyogVGhlIHN0
YXRlIHN0YWNrLiAgKi8KKyAgICB5eXR5cGVfaW50MTYgeXlzc2FbWVlJTklUREVQVEhdOworICAg
IHl5dHlwZV9pbnQxNiAqeXlzczsKKyAgICB5eXR5cGVfaW50MTYgKnl5c3NwOworCisgICAgLyog
VGhlIHNlbWFudGljIHZhbHVlIHN0YWNrLiAgKi8KKyAgICBZWVNUWVBFIHl5dnNhW1lZSU5JVERF
UFRIXTsKKyAgICBZWVNUWVBFICp5eXZzOworICAgIFlZU1RZUEUgKnl5dnNwOworCisgICAgWVlT
SVpFX1QgeXlzdGFja3NpemU7CiAKLSAgaW50IHl5c3RhdGU7CiAgIGludCB5eW47CiAgIGludCB5
eXJlc3VsdDsKLSAgLyogTnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVz
c2FnZXMgZW5hYmxlZC4gICovCi0gIGludCB5eWVycnN0YXR1czsKLSAgLyogTG9vay1haGVhZCB0
b2tlbiBhcyBhbiBpbnRlcm5hbCAodHJhbnNsYXRlZCkgdG9rZW4gbnVtYmVyLiAgKi8KLSAgaW50
IHl5dG9rZW4gPSAwOworICAvKiBMb29rYWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5z
bGF0ZWQpIHRva2VuIG51bWJlci4gICovCisgIGludCB5eXRva2VuOworICAvKiBUaGUgdmFyaWFi
bGVzIHVzZWQgdG8gcmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQor
ICAgICBhY3Rpb24gcm91dGluZXMuICAqLworICBZWVNUWVBFIHl5dmFsOworCiAjaWYgWVlFUlJP
Ul9WRVJCT1NFCiAgIC8qIEJ1ZmZlciBmb3IgZXJyb3IgbWVzc2FnZXMsIGFuZCBpdHMgYWxsb2Nh
dGVkIHNpemUuICAqLwogICBjaGFyIHl5bXNnYnVmWzEyOF07CkBAIC0xMjE1LDUxICsxMjM5LDI4
IEBAIGludCB5eW5lcnJzOwogICBZWVNJWkVfVCB5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1
ZjsKICNlbmRpZgogCi0gIC8qIFRocmVlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6Ci0gICAgIGB5
eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMsCi0gICAgIGB5eXZzJzogcmVsYXRlZCB0byBzZW1hbnRp
YyB2YWx1ZXMsCi0gICAgIGB5eWxzJzogcmVsYXRlZCB0byBsb2NhdGlvbnMuCi0KLSAgICAgUmVm
ZXIgdG8gdGhlIHN0YWNrcyB0aHJ1IHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJm
bG93Ci0gICAgIHRvIHJlYWxsb2NhdGUgdGhlbSBlbHNld2hlcmUuICAqLwotCi0gIC8qIFRoZSBz
dGF0ZSBzdGFjay4gICovCi0gIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07Ci0gIHl5
dHlwZV9pbnQxNiAqeXlzcyA9IHl5c3NhOwotICB5eXR5cGVfaW50MTYgKnl5c3NwOwotCi0gIC8q
IFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCi0gIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQ
VEhdOwotICBZWVNUWVBFICp5eXZzID0geXl2c2E7Ci0gIFlZU1RZUEUgKnl5dnNwOwotCi0KLQog
I2RlZmluZSBZWVBPUFNUQUNLKE4pICAgKHl5dnNwIC09IChOKSwgeXlzc3AgLT0gKE4pKQogCi0g
IFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7Ci0KLSAgLyogVGhlIHZhcmlhYmxl
cyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKLSAg
ICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KLSAgWVlTVFlQRSB5eXZhbDsKLQotCiAgIC8qIFRoZSBu
dW1iZXIgb2Ygc3ltYm9scyBvbiB0aGUgUkhTIG9mIHRoZSByZWR1Y2VkIHJ1bGUuCiAgICAgIEtl
ZXAgdG8gemVybyB3aGVuIG5vIHN5bWJvbCBzaG91bGQgYmUgcG9wcGVkLiAgKi8KICAgaW50IHl5
bGVuID0gMDsKIAorICB5eXRva2VuID0gMDsKKyAgeXlzcyA9IHl5c3NhOworICB5eXZzID0geXl2
c2E7CisgIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7CisKICAgWVlEUFJJTlRGICgoc3RkZXJy
LCAiU3RhcnRpbmcgcGFyc2VcbiIpKTsKIAogICB5eXN0YXRlID0gMDsKICAgeXllcnJzdGF0dXMg
PSAwOwogICB5eW5lcnJzID0gMDsKLSAgeXljaGFyID0gWVlFTVBUWTsJCS8qIENhdXNlIGEgdG9r
ZW4gdG8gYmUgcmVhZC4gICovCisgIHl5Y2hhciA9IFlZRU1QVFk7IC8qIENhdXNlIGEgdG9rZW4g
dG8gYmUgcmVhZC4gICovCiAKICAgLyogSW5pdGlhbGl6ZSBzdGFjayBwb2ludGVycy4KICAgICAg
V2FzdGUgb25lIGVsZW1lbnQgb2YgdmFsdWUgYW5kIGxvY2F0aW9uIHN0YWNrCiAgICAgIHNvIHRo
YXQgdGhleSBzdGF5IG9uIHRoZSBzYW1lIGxldmVsIGFzIHRoZSBzdGF0ZSBzdGFjay4KICAgICAg
VGhlIHdhc3RlZCBlbGVtZW50cyBhcmUgbmV2ZXIgaW5pdGlhbGl6ZWQuICAqLwotCiAgIHl5c3Nw
ID0geXlzczsKICAgeXl2c3AgPSB5eXZzOwogCkBAIC0xMjg5LDcgKzEyOTAsNiBAQCBpbnQgeXlu
ZXJyczsKIAlZWVNUWVBFICp5eXZzMSA9IHl5dnM7CiAJeXl0eXBlX2ludDE2ICp5eXNzMSA9IHl5
c3M7CiAKLQogCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxvd2VkIGJ5IHRo
ZSBzaXplIG9mIHRoZQogCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQgc3RhY2ssIGluIGJ5dGVzLiAg
VGhpcyB1c2VkIHRvIGJlIGEKIAkgICBjb25kaXRpb25hbCBhcm91bmQganVzdCB0aGUgdHdvIGV4
dHJhIGFyZ3MsIGJ1dCB0aGF0IG1pZ2h0CkBAIC0xMjk3LDcgKzEyOTcsNiBAQCBpbnQgeXluZXJy
czsKIAl5eW92ZXJmbG93IChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwKIAkJICAgICZ5eXNzMSwg
eXlzaXplICogc2l6ZW9mICgqeXlzc3ApLAogCQkgICAgJnl5dnMxLCB5eXNpemUgKiBzaXplb2Yg
KCp5eXZzcCksCi0KIAkJICAgICZ5eXN0YWNrc2l6ZSk7CiAKIAl5eXNzID0geXlzczE7CkBAIC0x
MzIwLDkgKzEzMTksOCBAQCBpbnQgeXluZXJyczsKIAkgICh1bmlvbiB5eWFsbG9jICopIFlZU1RB
Q0tfQUxMT0MgKFlZU1RBQ0tfQllURVMgKHl5c3RhY2tzaXplKSk7CiAJaWYgKCEgeXlwdHIpCiAJ
ICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwotCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3MpOwotCVlZU1RB
Q0tfUkVMT0NBVEUgKHl5dnMpOwotCisJWVlTVEFDS19SRUxPQ0FURSAoeXlzc19hbGxvYywgeXlz
cyk7CisJWVlTVEFDS19SRUxPQ0FURSAoeXl2c19hbGxvYywgeXl2cyk7CiAjICB1bmRlZiBZWVNU
QUNLX1JFTE9DQVRFCiAJaWYgKHl5c3MxICE9IHl5c3NhKQogCSAgWVlTVEFDS19GUkVFICh5eXNz
MSk7CkBAIC0xMzMzLDcgKzEzMzEsNiBAQCBpbnQgeXluZXJyczsKICAgICAgIHl5c3NwID0geXlz
cyArIHl5c2l6ZSAtIDE7CiAgICAgICB5eXZzcCA9IHl5dnMgKyB5eXNpemUgLSAxOwogCi0KICAg
ICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YWNrIHNpemUgaW5jcmVhc2VkIHRvICVsdVxuIiwK
IAkJICAodW5zaWduZWQgbG9uZyBpbnQpIHl5c3RhY2tzaXplKSk7CiAKQEAgLTEzNDMsNiArMTM0
MCw5IEBAIGludCB5eW5lcnJzOwogCiAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIkVudGVyaW5nIHN0
YXRlICVkXG4iLCB5eXN0YXRlKSk7CiAKKyAgaWYgKHl5c3RhdGUgPT0gWVlGSU5BTCkKKyAgICBZ
WUFDQ0VQVDsKKwogICBnb3RvIHl5YmFja3VwOwogCiAvKi0tLS0tLS0tLS0tLgpAQCAtMTM1MSwx
NiArMTM1MSwxNiBAQCBpbnQgeXluZXJyczsKIHl5YmFja3VwOgogCiAgIC8qIERvIGFwcHJvcHJp
YXRlIHByb2Nlc3NpbmcgZ2l2ZW4gdGhlIGN1cnJlbnQgc3RhdGUuICBSZWFkIGEKLSAgICAgbG9v
ay1haGVhZCB0b2tlbiBpZiB3ZSBuZWVkIG9uZSBhbmQgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4g
ICovCisgICAgIGxvb2thaGVhZCB0b2tlbiBpZiB3ZSBuZWVkIG9uZSBhbmQgZG9uJ3QgYWxyZWFk
eSBoYXZlIG9uZS4gICovCiAKLSAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdp
dGhvdXQgcmVmZXJlbmNlIHRvIGxvb2stYWhlYWQgdG9rZW4uICAqLworICAvKiBGaXJzdCB0cnkg
dG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91dCByZWZlcmVuY2UgdG8gbG9va2FoZWFkIHRva2Vu
LiAgKi8KICAgeXluID0geXlwYWN0W3l5c3RhdGVdOwogICBpZiAoeXluID09IFlZUEFDVF9OSU5G
KQogICAgIGdvdG8geXlkZWZhdWx0OwogCi0gIC8qIE5vdCBrbm93biA9PiBnZXQgYSBsb29rLWFo
ZWFkIHRva2VuIGlmIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLworICAvKiBOb3Qga25vd24g
PT4gZ2V0IGEgbG9va2FoZWFkIHRva2VuIGlmIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLwog
Ci0gIC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRiBvciBhIHZhbGlkIGxvb2st
YWhlYWQgc3ltYm9sLiAgKi8KKyAgLyogWVlDSEFSIGlzIGVpdGhlciBZWUVNUFRZIG9yIFlZRU9G
IG9yIGEgdmFsaWQgbG9va2FoZWFkIHN5bWJvbC4gICovCiAgIGlmICh5eWNoYXIgPT0gWVlFTVBU
WSkKICAgICB7CiAgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJSZWFkaW5nIGEgdG9rZW46ICIp
KTsKQEAgLTEzOTIsMjAgKzEzOTIsMTYgQEAgeXliYWNrdXA6CiAgICAgICBnb3RvIHl5cmVkdWNl
OwogICAgIH0KIAotICBpZiAoeXluID09IFlZRklOQUwpCi0gICAgWVlBQ0NFUFQ7Ci0KICAgLyog
Q291bnQgdG9rZW5zIHNoaWZ0ZWQgc2luY2UgZXJyb3I7IGFmdGVyIHRocmVlLCB0dXJuIG9mZiBl
cnJvcgogICAgICBzdGF0dXMuICAqLwogICBpZiAoeXllcnJzdGF0dXMpCiAgICAgeXllcnJzdGF0
dXMtLTsKIAotICAvKiBTaGlmdCB0aGUgbG9vay1haGVhZCB0b2tlbi4gICovCisgIC8qIFNoaWZ0
IHRoZSBsb29rYWhlYWQgdG9rZW4uICAqLwogICBZWV9TWU1CT0xfUFJJTlQgKCJTaGlmdGluZyIs
IHl5dG9rZW4sICZ5eWx2YWwsICZ5eWxsb2MpOwogCi0gIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQg
dG9rZW4gdW5sZXNzIGl0IGlzIGVvZi4gICovCi0gIGlmICh5eWNoYXIgIT0gWVlFT0YpCi0gICAg
eXljaGFyID0gWVlFTVBUWTsKKyAgLyogRGlzY2FyZCB0aGUgc2hpZnRlZCB0b2tlbi4gICovCisg
IHl5Y2hhciA9IFlZRU1QVFk7CiAKICAgeXlzdGF0ZSA9IHl5bjsKICAgKisreXl2c3AgPSB5eWx2
YWw7CkBAIC0xNDQ5LDExMiArMTQ0NSwxMTIgQEAgeXlyZWR1Y2U6CiAgICAgewogICAgICAgICAq
KGNvbnRleHQtPnJlc3VsdCkgPSBzdGF0aWNfY2FzdDxpbnQ+KCh5eXZzcFsoMSkgLSAoMSldKSk7
CiAgICAgICAgIFlZQUNDRVBUOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
NDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSB8fCAoeXl2
c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pICYmICh5eXZzcFso
MykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDY6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgfCAoeXl2c3BbKDMpIC0g
KDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA3OgogCiAgICAgewog
ICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0pIF4gKHl5dnNwWygzKSAtICgzKV0p
OwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgODoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAmICh5eXZzcFsoMykgLSAoMyldKTsKLSAg
ICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDk6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgIT0gKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9
CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTA6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgPT0gKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9Cisg
ICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkg
PSAoeXl2c3BbKDEpIC0gKDMpXSkgPj0gKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAg
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAo
eXl2c3BbKDEpIC0gKDMpXSkgPD0gKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2
c3BbKDEpIC0gKDMpXSkgPiAoeXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxNDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFso
MSkgLSAoMyldKSA8ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVh
azsKIAogICBjYXNlIDE1OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAt
ICgzKV0pID4+ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsK
IAogICBjYXNlIDE2OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgz
KV0pIDw8ICh5eXZzcFsoMykgLSAoMyldKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAog
ICBjYXNlIDE3OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gKHl5dnNwWygxKSAtICgzKV0p
IC0gKHl5dnNwWygzKSAtICgzKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgKyAo
eXl2c3BbKDMpIC0gKDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
OToKQEAgLTE1NzEsNyArMTU2Nyw3IEBAIHl5cmVkdWNlOgogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAlICh5eXZzcFsoMykgLSAoMyld
KTsKICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjA6CkBA
IC0xNTg4LDUzICsxNTg0LDUyIEBAIHl5cmVkdWNlOgogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgKHl5dmFsKSA9ICh5eXZzcFsoMSkgLSAoMyldKSAvICh5eXZzcFsoMykgLSAoMyldKTsK
ICAgICAgICAgfQotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjE6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDEpIC0gKDMpXSkgKiAoeXl2c3BbKDMpIC0g
KDMpXSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMjoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsKSA9ICEgKHl5dnNwWygyKSAtICgyKV0pOwotICAgIDt9CisgICAgfQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMjM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSB+ICh5
eXZzcFsoMikgLSAoMildKTsKLSAgICA7fQorICAgIH0KICAgICBicmVhazsKIAogICBjYXNlIDI0
OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gLSAoeXl2c3BbKDIpIC0gKDIpXSk7Ci0gICAg
O30KKyAgICB9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNToKIAogICAgIHsKICAgICAgICAgKHl5
dmFsKSA9ICsgKHl5dnNwWygyKSAtICgyKV0pOwotICAgIDt9CisgICAgfQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMjY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbKDIpIC0gKDMp
XSk7Ci0gICAgO30KKyAgICB9CiAgICAgYnJlYWs7CiAKIAotLyogTGluZSAxMjY3IG9mIHlhY2Mu
Yy4gICovCiAKICAgICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgIH0KQEAgLTE2NDYsNyArMTY0MSw2
IEBAIHl5cmVkdWNlOgogCiAgICorK3l5dnNwID0geXl2YWw7CiAKLQogICAvKiBOb3cgYHNoaWZ0
JyB0aGUgcmVzdWx0IG9mIHRoZSByZWR1Y3Rpb24uICBEZXRlcm1pbmUgd2hhdCBzdGF0ZQogICAg
ICB0aGF0IGdvZXMgdG8sIGJhc2VkIG9uIHRoZSBzdGF0ZSB3ZSBwb3BwZWQgYmFjayB0byBhbmQg
dGhlIHJ1bGUKICAgICAgbnVtYmVyIHJlZHVjZWQgYnkuICAqLwpAQCAtMTcxMSw3ICsxNzA1LDcg
QEAgeXllcnJsYWI6CiAKICAgaWYgKHl5ZXJyc3RhdHVzID09IDMpCiAgICAgewotICAgICAgLyog
SWYganVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2stYWhlYWQgdG9rZW4gYWZ0ZXIg
YW4KKyAgICAgIC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rYWhlYWQg
dG9rZW4gYWZ0ZXIgYW4KIAkgZXJyb3IsIGRpc2NhcmQgaXQuICAqLwogCiAgICAgICBpZiAoeXlj
aGFyIDw9IFlZRU9GKQpAQCAtMTcyOCw3ICsxNzIyLDcgQEAgeXllcnJsYWI6CiAJfQogICAgIH0K
IAotICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2stYWhlYWQgdG9rZW4gYWZ0ZXIgc2hp
ZnRpbmcgdGhlIGVycm9yCisgIC8qIEVsc2Ugd2lsbCB0cnkgdG8gcmV1c2UgbG9va2FoZWFkIHRv
a2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgogICAgICB0b2tlbi4gICovCiAgIGdvdG8geXll
cnJsYWIxOwogCkBAIC0xNzg1LDkgKzE3NzksNiBAQCB5eWVycmxhYjE6CiAgICAgICBZWV9TVEFD
S19QUklOVCAoeXlzcywgeXlzc3ApOwogICAgIH0KIAotICBpZiAoeXluID09IFlZRklOQUwpCi0g
ICAgWVlBQ0NFUFQ7Ci0KICAgKisreXl2c3AgPSB5eWx2YWw7CiAKIApAQCAtMTgxMiw3ICsxODAz
LDcgQEAgeXlhYm9ydGxhYjoKICAgeXlyZXN1bHQgPSAxOwogICBnb3RvIHl5cmV0dXJuOwogCi0j
aWZuZGVmIHl5b3ZlcmZsb3cKKyNpZiAhZGVmaW5lZCh5eW92ZXJmbG93KSB8fCBZWUVSUk9SX1ZF
UkJPU0UKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS4KIHwgeXlleGhhdXN0ZWRsYWIgLS0gbWVtb3J5IGV4aGF1c3Rpb24gY29tZXMgaGVyZS4gIHwK
IGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAg
LTE4MjMsNyArMTgxNCw3IEBAIHl5ZXhoYXVzdGVkbGFiOgogI2VuZGlmCiAKIHl5cmV0dXJuOgot
ICBpZiAoeXljaGFyICE9IFlZRU9GICYmIHl5Y2hhciAhPSBZWUVNUFRZKQorICBpZiAoeXljaGFy
ICE9IFlZRU1QVFkpCiAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxvb2th
aGVhZCIsCiAJCSB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKICAgLyogRG8gbm90IHJlY2xh
aW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hpY2ggYWN0aW9uIHRyaWdnZXJlZApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RpbWluZy9SZXN0cmljdFZlcnRl
eFNoYWRlclRpbWluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RpbWluZy9SZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAJKHJldmlz
aW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90aW1p
bmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4
ICsxMCw4IEBAIHZvaWQgUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmc6OnZpc2l0U3kKIHsKICAg
ICBpZiAoSXNTYW1wbGVyKG5vZGUtPmdldEJhc2ljVHlwZSgpKSkgewogICAgICAgICArK21OdW1F
cnJvcnM7Ci0gICAgICAgIG1TaW5rLnByZWZpeChFUHJlZml4RXJyb3IpOwotICAgICAgICBtU2lu
ay5sb2NhdGlvbihub2RlLT5nZXRMaW5lKCkpOwotICAgICAgICBtU2luayA8PCAiU2FtcGxlcnMg
YXJlIG5vdCBwZXJtaXR0ZWQgaW4gdmVydGV4IHNoYWRlcnMuXG4iOworICAgICAgICBtU2luay5t
ZXNzYWdlKEVQcmVmaXhFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICBub2RlLT5nZXRMaW5l
KCksCisgICAgICAgICAgICAgICAgICAgICAgIlNhbXBsZXJzIGFyZSBub3QgcGVybWl0dGVkIGlu
IHZlcnRleCBzaGFkZXJzIik7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUy
NjQ5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTMtMDctMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBBTkdMRSB0byByMjQyNi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODU1MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IFJlbmFt
ZWQgRGV0ZWN0UmVjdXJzaW9uIHRvIERldGVjdENhbGxEZXB0aCBhbmQgYWRkZWQgYnVpbHRpbl9z
eW1ib2xfdGFibGUuCisKIDIwMTMtMDctMTUgIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0
bG9vay5jb20+CiAKICAgICAgICAgW0N1cmxdIERvd25sb2FkIGRvZXMgbm90IHJlcGxhY2UgZXhp
c3RpbmcgZmlsZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNTI2NDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjg2Niw2
ICsyODY2LDcgQEAgaWYgKFdURl9VU0VfM0RfR1JBUEhJQ1MpCiAgICAgZW5kaWYgKCkKIAogICAg
IGxpc3QoQVBQRU5EIEFOR0xFU3VwcG9ydF9TT1VSQ0VTCisgICAgICAgICR7VEhJUkRQQVJUWV9E
SVJ9L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHAKICAgICAgICAg
JHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvQ29k
ZUdlbkdMU0wuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxl
ci9Db21waWxlci5jcHAKQEAgLTI4NzYsOCArMjg3Nyw4IEBAIGlmIChXVEZfVVNFXzNEX0dSQVBI
SUNTKQogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3Jh
cGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0v
QU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAKICAg
ICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVu
ZGVuY3lHcmFwaFRyYXZlcnNlLmNwcAorICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElS
fS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5jcHAKLSAgICAgICAgJHtU
SElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAKICAg
ICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwu
Y3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2lu
ay5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRp
YWxpemUuY3BwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206713</attachid>
            <date>2013-07-15 18:19:13 -0700</date>
            <delta_ts>2013-07-22 16:36:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118550-20130715181836.patch</filename>
            <type>text/plain</type>
            <size>688834</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI1NiBAQAorMjAxMy0wNy0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFOR0xFIGZyb20gcjE5ODcgdG8gcjI0MjYgd2hpbGUg
a2VlcGluZyB0aGVzZSBjaGFuZ2VzOgorICAgICAgICBLZWVwaW5nICNpZiBkZWZpbmVkKF9NU0Nf
VkVSKSBhcm91bmQgI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MTgpIGluIERlcGVuZGVuY3lH
cmFwaC5jcHAuCisgICAgICAgIEtlZXBpbmcgaW5jbHVkZSBraHJwbGF0Zm9ybS5oIGluc3RlYWQg
b2YgS0hSL2tocnBsYXRmb3JtLmggaW4gU2hhZGVyTGFuZy5oLgorICAgICAgICBBZGRlZCBzdGF0
aWNfY2FzdHMgaW4gSW50ZXJtZWRpYXRlLmNwcCB0byBmaXggY29tcGlsaW5nIG9uIE1hYy4KKyAg
ICAgICAgQ2hhbmdlZCBlbnVtIGJpdCBmaWVsZHMgdG8ganVzdCBlbnVtcyBmb3IgR0NDIGluIFR5
cGVzLmggdG8gZml4IGNvbXBpbGluZyBmb3IgR1RLLgorICAgICAgICBSYW4gQmlzb24gb24gTWFj
IGFmdGVyIHJlbW92aW5nIHRoZSB1bnN1cHBvcnRlZCAlY29kZSB0YWcgKFNlZSBkaWZmIHVwbG9h
ZGVkIHRvIGJ1ZyBmb3IgZGV0YWlscykuCisgICAgICAgIEFkZGVkIFlZTFRZUEUgZGVmaW5pdGlv
biB0byBnbHNsYW5nX3RhYi5oIHdoaWNoIHdvdWxkIGhhdmUgYmVlbiBwdXQgdGhlcmUgYnkgdGhl
IHVuc3VwcG9ydGVkICVjb2RlIHRhZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBBTkdMRS5wbGlzdDogVXBkYXRlZCByZXZpc2lvbiBvZiBBTkdM
RSB0byAyNDI2LgorICAgICAgICAqIEFOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
ICAgIFJlbmFtZWQgRGV0ZWN0UmVjdXJzaW9uIHRvIERldGVjdENhbGxEZXB0aCBhbmQgYWRkZWQg
YnVpbHRpbl9zeW1ib2xfdGFibGUuCisgICAgICAgICogaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxh
bmcuaDoKKyAgICAgICAgKiBzcmMvY29tbW9uL3ZlcnNpb24uaDoKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvQmFzZVR5cGVzLmg6CisgICAgICAgIChnZXRRdWFsaWZpZXJTdHJpbmcpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9Db21tb24uaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29tcGls
ZXIuY3BwOgorICAgICAgICAoVENvbXBpbGVyOjpUQ29tcGlsZXIpOgorICAgICAgICAoVENvbXBp
bGVyOjpJbml0KToKKyAgICAgICAgKFRDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChUQ29t
cGlsZXI6OmRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChUQ29tcGlsZXI6OmVuZm9yY2VUaW1p
bmdSZXN0cmljdGlvbnMpOgorICAgICAgICAoVENvbXBpbGVyOjpsaW1pdEV4cHJlc3Npb25Db21w
bGV4aXR5KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oOgorICAgICAg
ICAoQ29uc3RhbnRVbmlvbjo6Q29uc3RhbnRVbmlvbik6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L0RldGVjdENhbGxEZXB0aC5jcHA6IEFkZGVkLgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpG
dW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1
bmN0aW9uTm9kZTo6Z2V0TmFtZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9u
Tm9kZTo6YWRkQ2FsbGVlKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2Rl
OjpkZXRlY3RDYWxsRGVwdGgpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5v
ZGU6OnJlc2V0KToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RGV0ZWN0Q2FsbERlcHRoKToK
KyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6fkRldGVjdENhbGxEZXB0aCk6CisgICAgICAgIChE
ZXRlY3RDYWxsRGVwdGg6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0
aDo6Y2hlY2tFeGNlZWRzTWF4RGVwdGgpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpyZXNl
dEZ1bmN0aW9uTm9kZXMpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVw
dGhGb3JGdW5jdGlvbik6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmRldGVjdENhbGxEZXB0
aCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmZpbmRGdW5jdGlvbkJ5TmFtZSk6CisgICAg
ICAgICogc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oOiBBZGRlZC4KKyAgICAgICAgKERl
dGVjdENhbGxEZXB0aDo6Z2V0SW5mb1NpbmspOgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRl
Y3RSZWN1cnNpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRlY3RS
ZWN1cnNpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRGlhZ25vc3RpY3Mu
Y3BwOgorICAgICAgICAoVERpYWdub3N0aWNzOjp3cml0ZUluZm8pOgorICAgICAgICAqIHNyYy9j
b21waWxlci9Gb3JMb29wVW5yb2xsLmNwcDoKKyAgICAgICAgKEZvckxvb3BVbnJvbGw6OmV2YWx1
YXRlSW50Q29uc3RhbnQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9JbmZvU2luay5jcHA6Cisg
ICAgICAgIChUSW5mb1NpbmtCYXNlOjpwcmVmaXgpOgorICAgICAgICAoVEluZm9TaW5rQmFzZTo6
bG9jYXRpb24pOgorICAgICAgICAoVEluZm9TaW5rQmFzZTo6bWVzc2FnZSk6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL0luZm9TaW5rLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0luaXRpYWxp
emUuY3BwOgorICAgICAgICAoVEJ1aWx0SW5zOjppbml0aWFsaXplKToKKyAgICAgICAgKElkZW50
aWZ5QnVpbHRJbnMpOgorICAgICAgICAoSW5pdEV4dGVuc2lvbkJlaGF2aW9yKToKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcDogVXBkYXRlZCBhbmQgYWRkZWQgc3RhdGlj
X2Nhc3RzIHRvIGZpeCBidWlsZCBlcnJvcnMgb24gTWFjLgorICAgICAgICAoVEludGVybWVkaWF0
ZTo6YWRkU3ltYm9sKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hdGgpOgor
ICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKToKKyAgICAgICAgKFRJbnRlcm1lZGlh
dGU6OmFkZEluZGV4KToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0aCk6Cisg
ICAgICAgIChUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcik6CisgICAgICAgIChU
SW50ZXJtZWRpYXRlOjphZGRDb252ZXJzaW9uKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6Omdy
b3dBZ2dyZWdhdGUpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6bWFrZUFnZ3JlZ2F0ZSk6Cisg
ICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24pOgorICAgICAgICAoVEludGVybWVk
aWF0ZTo6YWRkQ29tbWEpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQ29uc3RhbnRVbmlv
bik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKToKKyAgICAgICAgKFRJbnRl
cm1lZGlhdGU6OmFkZExvb3ApOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKToK
KyAgICAgICAgKFRJbnRlcm1VbmFyeTo6cHJvbW90ZSk6CisgICAgICAgIChUSW50ZXJtQmluYXJ5
Ojpwcm9tb3RlKToKKyAgICAgICAgKENvbXBhcmVTdHJ1Y3QpOgorICAgICAgICAoQ29tcGFyZVN0
cnVjdHVyZSk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZCk6CisgICAgICAg
IChUSW50ZXJtZWRpYXRlOjpwcm9tb3RlQ29uc3RhbnRVbmlvbik6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL091dHB1dEdMU0wuY3BwOgorICAgICAgICAoVE91dHB1dEdMU0w6OnZpc2l0U3ltYm9s
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oOgorICAgICAgICAqIHNyYy9j
b21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHA6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6Ondy
aXRlVmFyaWFibGVUeXBlKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6d3JpdGVDb25zdGFu
dFVuaW9uKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCaW5hcnkpOgorICAgICAg
ICAoVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChUT3V0cHV0R0xT
TEJhc2U6OmdldFR5cGVOYW1lKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6aGFzaEZ1bmN0
aW9uTmFtZSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnN0cnVjdERlY2xhcmVkKToKKyAg
ICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6ZGVjbGFyZVN0cnVjdCk6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL091dHB1dEdMU0xCYXNlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEhM
U0wuY3BwOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6Ok91dHB1dEhMU0wpOgorICAgICAgICAo
c2g6Ok91dHB1dEhMU0w6OmhlYWRlcik6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRT
eW1ib2wpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KToKKyAgICAgICAg
KHNoOjpPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChzaDo6T3V0cHV0SExT
TDo6dmlzaXRTZWxlY3Rpb24pOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0TG9vcCk6
CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcCk6CisgICAgICAg
IChzaDo6T3V0cHV0SExTTDo6dHlwZVN0cmluZyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6
aW5pdGlhbGl6ZXIpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKToK
KyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp3cml0ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAo
c2g6Ok91dHB1dEhMU0w6OmRlY29yYXRlRmllbGQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9P
dXRwdXRITFNMLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcDoKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6OnBhcnNlTWF0cml4RmllbGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmVy
cm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Ondhcm5pbmcpOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6YXNzaWduRXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVy
cm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmJpbmFyeU9wRXJyb3IpOgorICAgICAgICAo
VFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250
ZXh0OjpsVmFsdWVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVy
cm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNrKToK
KyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0
Ojpib29sRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJyb3JD
aGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNr
KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKToK
KyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxlcik6CisgICAgICAgIChUUGFy
c2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6
OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJh
eVR5cGVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVj
ayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZWNrKToKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpleHRl
bnNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbik6
CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojppc1ZhcmlhYmxlQnVpbHRJbik6CisgICAgICAgIChU
UGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIpOgorICAgICAgICAoVFBhcnNlQ29udGV4
dDo6YWRkQ29uc3RydWN0b3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0QnVp
bHRJbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QpOgorICAgICAg
ICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWN0b3JOb2RlKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRD
b25zdEFycmF5Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdCk6
CisgICAgICAgIChUUGFyc2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9uKToKKyAgICAg
ICAgKFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKToKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaDoKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OlRQYXJz
ZUNvbnRleHQpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cHJhZ21hKToKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcDoKKyAgICAgICAgKFRQb29sQWxsb2NhdG9yOjphbGxv
Y2F0ZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmg6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwOgorICAgICAgICAoU2hJbml0QnVpbHRJblJlc291cmNl
cyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKFRU
eXBlOjpUVHlwZSk6CisgICAgICAgIChUVHlwZTo6YnVpbGRNYW5nbGVkTmFtZSk6CisgICAgICAg
IChUVHlwZTo6Z2V0T2JqZWN0U2l6ZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpjb250YWluc0Fy
cmF5cyk6CisgICAgICAgIChUU3RydWN0dXJlOjpidWlsZE1hbmdsZWROYW1lKToKKyAgICAgICAg
KFRTdHJ1Y3R1cmU6OmNhbGN1bGF0ZU9iamVjdFNpemUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6
Y2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcpOgorICAgICAgICAoVFN5bWJvbFRhYmxlTGV2ZWw6OnJl
bGF0ZVRvRXh0ZW5zaW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaDoK
KyAgICAgICAgKFRTeW1ib2w6OnJlbGF0ZVRvRXh0ZW5zaW9uKToKKyAgICAgICAgKFRTeW1ib2w6
OmdldEV4dGVuc2lvbik6CisgICAgICAgIChUVmFyaWFibGU6OlRWYXJpYWJsZSk6CisgICAgICAg
IChUVmFyaWFibGU6OnNldFF1YWxpZmllcik6CisgICAgICAgIChUVmFyaWFibGU6OnNoYXJlQ29u
c3RQb2ludGVyKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVHlwZXMuaDogVXBkYXRlZCBhbmQg
Y2hhbmdlZCBlbnVtIGJpdCBmaWVsZHMgdG8gZW51bXMgdG8gZml4IGNvbXBpbGluZyB3aXRoIEdD
Qy4KKyAgICAgICAgKFRGaWVsZDo6VEZpZWxkKToKKyAgICAgICAgKFRGaWVsZDo6dHlwZSk6Cisg
ICAgICAgIChURmllbGQ6Om5hbWUpOgorICAgICAgICAoTmV3UG9vbFRGaWVsZExpc3QpOgorICAg
ICAgICAoVFN0cnVjdHVyZTo6VFN0cnVjdHVyZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpuYW1l
KToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmZpZWxkcyk6CisgICAgICAgIChUU3RydWN0dXJlOjpt
YW5nbGVkTmFtZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpvYmplY3RTaXplKToKKyAgICAgICAg
KFRTdHJ1Y3R1cmU6OmRlZXBlc3ROZXN0aW5nKToKKyAgICAgICAgKFRUeXBlOjpUVHlwZSk6Cisg
ICAgICAgIChUVHlwZTo6Y2xlYXJBcnJheW5lc3MpOgorICAgICAgICAoVFR5cGU6OmdldFN0cnVj
dCk6CisgICAgICAgIChUVHlwZTo6c2V0U3RydWN0KToKKyAgICAgICAgKFRUeXBlOjpnZXRNYW5n
bGVkTmFtZSk6CisgICAgICAgIChUVHlwZTo6Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcpOgorICAg
ICAgICAoVFR5cGU6OmlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cyk6CisgICAgICAgIChUUHVi
bGljVHlwZTo6c2V0QmFzaWMpOgorICAgICAgICAqIHNyYy9jb21waWxlci9WYXJpYWJsZUluZm8u
Y3BwOgorICAgICAgICAoZ2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8pOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoYnVp
bHRpbjEpOgorICAgICAgICAoYnVpbHRpbjIpOgorICAgICAgICAoYnVpbHRpbjMpOgorICAgICAg
ICAoSW5zZXJ0QnVpbHRJbkZ1bmN0aW9uc0NvbW1vbik6CisgICAgICAgIChJbnNlcnRCdWlsdElu
RnVuY3Rpb25zVmVydGV4KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xf
dGFibGUuaDogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmcubDoKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy55OgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNs
YW5nX2xleC5jcHA6CisgICAgICAgICh5eV9nZXRfcHJldmlvdXNfc3RhdGUpOgorICAgICAgICAo
eXlfdHJ5X05VTF90cmFucyk6CisgICAgICAgICh5eWdldF9sbG9jKToKKyAgICAgICAgKHl5c2V0
X2xsb2MpOgorICAgICAgICAoc3RyaW5nX2lucHV0KToKKyAgICAgICAgKGNoZWNrX3R5cGUpOgor
ICAgICAgICAocmVzZXJ2ZWRfd29yZCk6CisgICAgICAgIChnbHNsYW5nX3NjYW4pOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHA6CisgICAgICAgICh5eXN5bnRheF9lcnJv
cik6CisgICAgICAgICh5eWVycm9yKToKKyAgICAgICAgKGdsc2xhbmdfcGFyc2UpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oOiBSZWFkZGVkIFlZTFRZUEUgZGVmaW5pdGlv
biBhZnRlciBCaXNvbiByZW1vdmVkIGl0LgorICAgICAgICAqIHNyYy9jb21waWxlci9pbnRlcm1P
dXQuY3BwOgorICAgICAgICAoVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRVbmFyeSk6CisgICAgICAg
IChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChUT3V0cHV0VHJh
dmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9pbnRl
cm1lZGlhdGUuaDoKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpUSW50ZXJtTm9kZSk6CisgICAgICAg
IChUSW50ZXJtTm9kZTo6flRJbnRlcm1Ob2RlKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRM
aW5lKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpzZXRMaW5lKToKKyAgICAgICAgKFRJbnRlcm1O
b2RlOjpnZXRBc0xvb3BOb2RlKToKKyAgICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjpnZXRJ
Q29uc3QpOgorICAgICAgICAoVEludGVybUNvbnN0YW50VW5pb246OmdldEZDb25zdCk6CisgICAg
ICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Z2V0QkNvbnN0KToKKyAgICAgICAgKFRJbnRlcm1B
Z2dyZWdhdGU6OlRJbnRlcm1BZ2dyZWdhdGUpOgorICAgICAgICAoVEludGVybVRyYXZlcnNlcjo6
VEludGVybVRyYXZlcnNlcik6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpnZXRNYXhEZXB0
aCk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjppbmNyZW1lbnREZXB0aCk6CisgICAgICAg
ICogc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmg6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL3BhcnNlQ29uc3QuY3BwOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdFN5bWJv
bCk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKFRD
b25zdFRyYXZlcnNlcjo6dmlzaXRVbmFyeSk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZp
c2l0QWdncmVnYXRlKToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRTZWxlY3Rpb24p
OgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24pOgorICAgICAg
ICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdExvb3ApOgorICAgICAgICAoVENvbnN0VHJhdmVyc2Vy
Ojp2aXNpdEJyYW5jaCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjpwYXJzZUNvbnN0VHJlZSk6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNw
cDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGlt
aW5nLmNwcDoKKyAgICAgICAgKFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nOjp2aXNpdFN5bWJv
bCk6CisgICAgICAgICAgICBVcGRhdGVkIEFOR0xFIHRvIHIyNDI2IGFuZCByYW4gQmlzb24uCisK
IDIwMTMtMDYtMTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNv
cnQgYWxsIHRoZSBYY29kZSBwcm9qZWN0IGZpbGVzCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9BTkdMRS5wbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9B
TkdMRS5wbGlzdAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
QU5HTEUucGxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTYsMTMgKzYsMTMgQEAKIAkJPGtleT5PcGVu
U291cmNlUHJvamVjdDwva2V5PgogCQk8c3RyaW5nPkFOR0xFPC9zdHJpbmc+CiAJCTxrZXk+T3Bl
blNvdXJjZVZlcnNpb248L2tleT4KLQkJPHN0cmluZz5yMTY0MTwvc3RyaW5nPgorCQk8c3RyaW5n
PnIyNDI2PC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJjZVdlYnNpdGVVUkw8L2tleT4KIAkJPHN0
cmluZz5odHRwOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0Lzwvc3RyaW5nPgogCQk8
a2V5Pk9wZW5Tb3VyY2VTQ008L2tleT4KLQkJPHN0cmluZz5zdm4gY28gLXIxNjQxIGh0dHA6Ly9h
bmdsZXByb2plY3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLzwvc3RyaW5nPgorCQk8c3RyaW5n
PnN2biBjbyAtcjI0MjYgaHR0cDovL2FuZ2xlcHJvamVjdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1
bmsvPC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJjZUltcG9ydERhdGU8L2tleT4KLQkJPHN0cmlu
Zz4yMDEzLTAxLTA0PC9zdHJpbmc+CisJCTxzdHJpbmc+MjAxMy0wNi0xMzwvc3RyaW5nPgogCQk8
a2V5Pk9wZW5Tb3VyY2VMaWNlbnNlPC9rZXk+CiAJCTxzdHJpbmc+QlNEPC9zdHJpbmc+CiAJCTxr
ZXk+T3BlblNvdXJjZUxpY2Vuc2VGaWxlPC9rZXk+CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAgbGli
QU5HTEVfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0tI
Ui9raHJwbGF0Zm9ybS5oIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2Fu
Z2xldXRpbHMuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VU
eXBlcy5oIFwKKwlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9z
eW1ib2xfdGFibGUuY3BwIFwKKwlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
YnVpbHRpbl9zeW1ib2xfdGFibGUuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggXAogCVNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuR0xTTC5jcHAgXApAQCAtMzksMTAg
KzQxLDEwIEBAIGxpYkFOR0xFX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5oIFwKIAlTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBo
T3V0cHV0LmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdy
YXBoL0RlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBcCisJU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAgXAorCVNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguaCBcCiAJU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwIFwKIAlTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oIFwKLQlT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmNwcCBc
Ci0JU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5o
IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3Bw
IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuaCBc
CiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpcmVjdGl2ZUhhbmRsZXIu
Y3BwIFwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1RhcmdldC5wcmkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTUyNjQ5
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpA
QCAtMTgsNiArMTgsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAKIEhFQURFUlMgKz0gXAogICAgIHNy
Yy9jb21waWxlci9CYXNlVHlwZXMuaCBcCisgICAgc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3ltYm9s
X3RhYmxlLmggXAogICAgIHNyYy9jb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIFwK
ICAgICBzcmMvY29tcGlsZXIvQ29tbW9uLmggXAogICAgIHNyYy9jb21waWxlci9Db25zdGFudFVu
aW9uLmggXApAQCAtMjUsOCArMjYsOCBAQCBIRUFERVJTICs9IFwKICAgICBzcmMvY29tcGlsZXIv
ZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmggXAogICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9E
ZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmggXAogICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9EZXBl
bmRlbmN5R3JhcGhPdXRwdXQuaCBcCisgICAgc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5o
IFwKICAgICBzcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oIFwKLSAgICBzcmMvY29t
cGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmggXAogICAgIHNyYy9jb21waWxlci9EaWFnbm9zdGljcy5o
IFwKICAgICBzcmMvY29tcGlsZXIvRGlyZWN0aXZlSGFuZGxlci5oIFwKICAgICBzcmMvY29tcGls
ZXIvRXh0ZW5zaW9uQmVoYXZpb3IuaCBcCkBAIC04NCw2ICs4NSw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIHNyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaAogCiBTT1VS
Q0VTICs9IFwKKyAgICBzcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwIFwKICAg
ICBzcmMvY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIFwKICAgICBzcmMvY29t
cGlsZXIvQ29kZUdlbkdMU0wuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwIFwK
QEAgLTkyLDggKzk0LDggQEAgU09VUkNFUyArPSBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBo
L0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvZGVwZ3JhcGgv
RGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0Rl
cGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBcCisgICAgc3JjL2NvbXBpbGVyL0RldGVjdENhbGxE
ZXB0aC5jcHAgXAogICAgIHNyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNwcCBcCi0g
ICAgc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAgXAogICAgIHNyYy9jb21waWxlci9E
aWFnbm9zdGljcy5jcHAgXAogICAgIHNyYy9jb21waWxlci9EaXJlY3RpdmVIYW5kbGVyLmNwcCBc
CiAgICAgc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwIFwKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOSBAQAog
CQk0OTk1MUMwMzE0QjdBQUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDIxNEI3QUFCMzAwNjBF
OTZFIC8qIGxlbmd0aF9saW1pdHMuaCAqLzsgfTsKIAkJNDk5NTFDMDkxNEI3QUFEODAwNjBFOTZF
IC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAvKiBCdWlsdElu
RnVuY3Rpb25FbXVsYXRvci5jcHAgKi87IH07CiAJCTQ5OTUxQzBBMTRCN0FBRDgwMDYwRTk2RSAv
KiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDYxNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5j
dGlvbkVtdWxhdG9yLmggKi87IH07Ci0JCTQ5OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRl
Y3RSZWN1cnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDk5NTFDMDcxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5jcHAgKi87
IH07Ci0JCTQ5OTUxQzBDMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA4MTRCN0FB
RDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLzsgfTsKKwkJNDk5NTFDMEIxNEI3QUFE
ODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0
Q2FsbERlcHRoLmNwcCAqLzsgfTsKKwkJNDk5NTFDMEMxNEI3QUFEODAwNjBFOTZFIC8qIERldGVj
dENhbGxEZXB0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDk5NTFDMDgxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5oICovOyB9Owor
CQk1Q0NFQjhCNjE3OTA4RUVDMDBGRDk0OTYgLyogYnVpbHRpbl9zeW1ib2xfdGFibGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRUI4QjQxNzkw
OEUzQTAwRkQ5NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcCAqLzsgfTsKIAkJOTBEOUIx
MDIxMkUxMURDQjAwMkQ0MjU1IC8qIENvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMEY5MTJFMTFEQ0IwMDJENDI1NSAvKiBDb21w
aWxlci5jcHAgKi87IH07CiAJCTkwRDlCMTAzMTJFMTFEQ0IwMDJENDI1NSAvKiBFeHRlbnNpb25C
ZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTBEOUIwRkExMkUxMURDQjAwMkQ0MjU1IC8qIEV4dGVuc2lvbkJlaGF2aW9yLmggKi87IH07CiAJ
CTkwRDlCMTA0MTJFMTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5nX2xleC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjBGQjEyRTExRENCMDAyRDQy
NTUgLyogZ2xzbGFuZ19sZXguY3BwICovOyB9OwpAQCAtMTQwLDggKzE0MSwxMCBAQAogCQk0OTk1
MUMwMjE0QjdBQUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBsZW5ndGhfbGltaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdEluRnVuY3Rp
b25FbXVsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OTUxQzA2MTRC
N0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVj
dXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERldGVjdFJl
Y3Vyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5OTUxQzA4MTRCN0FB
RDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGV0ZWN0UmVjdXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGV0ZWN0Q2FsbERlcHRoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk5NTFDMDgxNEI3QUFEODAwNjBFOTZFIC8qIERldGVj
dENhbGxEZXB0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXRlY3RDYWxs
RGVwdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRUI4QjQxNzkwOEUzQTAw
RkQ5NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGJ1
aWx0aW5fc3ltYm9sX3RhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUND
RUI4QjUxNzkwOEUzQTAwRkQ5NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVEN0M1OUM1MTIwOEM2OEIwMDFDODczRSAvKiBBTkdMRS54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBBTkdMRS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUQ3QzU5QzYxMjA4QzY4QjAwMUM4NzNFIC8qIEJhc2UueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QzU5QzcxMjA4QzY4QjAwMUM4NzNFIC8qIERlYnVnUmVsZWFz
ZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2Uu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zOTAsNiArMzkzLDggQEAK
IAkJCQlBMjY1NjgyQzE1OUMyM0UxMDAzOTg1MzkgLyogZGVwZ3JhcGggKi8sCiAJCQkJRkIzOUQy
NDQxMjAwRjM1QTAwMDg4RTY5IC8qIHByZXByb2Nlc3NvciAqLywKIAkJCQlBMjY1NjgzNDE1OUMy
M0UxMDAzOTg1MzkgLyogdGltaW5nICovLAorCQkJCTVDQ0VCOEI0MTc5MDhFM0EwMEZEOTQ5NiAv
KiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgKi8sCisJCQkJNUNDRUI4QjUxNzkwOEUzQTAwRkQ5
NDk2IC8qIGJ1aWx0aW5fc3ltYm9sX3RhYmxlLmggKi8sCiAJCQkJRkIzOUQyMjExMjAwRjM1QTAw
MDg4RTY5IC8qIEJhc2VUeXBlcy5oICovLAogCQkJCTQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAv
KiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgKi8sCiAJCQkJNDk5NTFDMDYxNEI3QUFEODAw
NjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggKi8sCkBAIC0zOTksOCArNDA0LDgg
QEAKIAkJCQlGQjM5RDIyNTEyMDBGMzVBMDAwODhFNjkgLyogQ29uc3RhbnRVbmlvbi5oICovLAog
CQkJCUZCMzlEMjI2MTIwMEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5jcHAgKi8sCiAJCQkJRkIzOUQy
MjcxMjAwRjM1QTAwMDg4RTY5IC8qIGRlYnVnLmggKi8sCi0JCQkJNDk5NTFDMDcxNEI3QUFEODAw
NjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5jcHAgKi8sCi0JCQkJNDk5NTFDMDgxNEI3QUFEODAw
NjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5oICovLAorCQkJCTQ5OTUxQzA3MTRCN0FBRDgwMDYw
RTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguY3BwICovLAorCQkJCTQ5OTUxQzA4MTRCN0FBRDgwMDYw
RTk2RSAvKiBEZXRlY3RDYWxsRGVwdGguaCAqLywKIAkJCQlBMjY1NjdCMDE1OUMyMUIxMDAzOTg1
MzkgLyogRGlhZ25vc3RpY3MuY3BwICovLAogCQkJCUEyNjU2N0IxMTU5QzIxQjEwMDM5ODUzOSAv
KiBEaWFnbm9zdGljcy5oICovLAogCQkJCUEyNjU2N0IyMTU5QzIxQjEwMDM5ODUzOSAvKiBEaXJl
Y3RpdmVIYW5kbGVyLmNwcCAqLywKQEAgLTUzMCw3ICs1MzUsNyBAQAogCQkJCUEyNjU2ODNBMTU5
QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCUEy
NjU2ODNDMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMjY1NjgzRTE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBo
T3V0cHV0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0OTk1MUMwQzE0QjdBQUQ4MDA2MEU5NkUgLyog
RGV0ZWN0UmVjdXJzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTk1MUMwQzE0QjdBQUQ4MDA2
MEU5NkUgLyogRGV0ZWN0Q2FsbERlcHRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1NjdCQzE1
OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25vc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRG
OEFEMTY5NzRERUQwMDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUEyNjU2N0JFMTU5QzIxQjEwMDM5ODUzOSAvKiBEaXJlY3RpdmVIYW5kbGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTYzNSw3ICs2NDAsNyBAQAogCQkJCUEyNjU2ODNCMTU5QzIzRTEwMDM5ODUz
OSAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2
ODNEMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTI2NTY4M0YxNTlDMjNFMTAwMzk4NTM5IC8qIERlcGVuZGVuY3lHcmFwaFRy
YXZlcnNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ5OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAv
KiBEZXRlY3RSZWN1cnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDk5NTFDMEIxNEI3QUFE
ODAwNjBFOTZFIC8qIERldGVjdENhbGxEZXB0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1
NjdCQjE1OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25vc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTI2NEY4QUMxNjk3NERFRDAwNkZBQTVBIC8qIERpYWdub3N0aWNzQmFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBMjY1NjdCRDE1OUMyMUIxMDAzOTg1MzkgLyogRGlyZWN0aXZlSGFuZGxl
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY3MCw2ICs2NzUsNyBAQAogCQkJCUEyNjU2ODQwMTU5
QzIzRTEwMDM5ODUzOSAvKiBSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUEyNjU2ODQyMTU5QzIzRTEwMDM5ODUzOSAvKiBSZXN0cmljdFZlcnRleFNo
YWRlclRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MEQ5QjEwOTEyRTExRENCMDAyRDQy
NTUgLyogU2VhcmNoU3ltYm9sLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQ0VCOEI2MTc5MDhF
RUMwMEZEOTQ5NiAvKiBidWlsdGluX3N5bWJvbF90YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGQjM5RDJBODEyMDBGMzVBMDAwODhFNjkgLyogU2hhZGVyTGFuZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGQjM5RDJBQTEyMDBGMzVBMDAwODhFNjkgLyogU3ltYm9sVGFibGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTI2NEY4QzExNjk3NERFRDAwNkZBQTVBIC8qIFRva2VuLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5H
L1NoYWRlckxhbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNs
dWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTksNyArMTU5LDEzIEBAIHR5cGVkZWYgZW51bSB7CiAgIC8vIHZlYzIzNCwgb3IgbWF0
MjM0IHR5cGUuIFRoZSBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IGVudW0sCiAgIC8vIHNw
ZWNpZmllZCBpbiB0aGUgU2hCdWlsdEluUmVzb3VyY2VzIHdoZW4gY29uc3RydWN0aW5nIHRoZQog
ICAvLyBjb21waWxlciwgc2VsZWN0cyB0aGUgc3RyYXRlZ3kgZm9yIHRoZSBjbGFtcGluZyBpbXBs
ZW1lbnRhdGlvbi4KLSAgU0hfQ0xBTVBfSU5ESVJFQ1RfQVJSQVlfQk9VTkRTID0gMHgxMDAwCisg
IFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUyA9IDB4MTAwMCwKKworICAvLyBUaGlzIGZs
YWcgbGltaXRzIHRoZSBjb21wbGV4aXR5IG9mIGFuIGV4cHJlc3Npb24uCisgIFNIX0xJTUlUX0VY
UFJFU1NJT05fQ09NUExFWElUWSA9IDB4MjAwMCwKKworICAvLyBUaGlzIGZsYWcgbGltaXRzIHRo
ZSBkZXB0aCBvZiB0aGUgY2FsbCBzdGFjay4KKyAgU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSCA9
IDB4NDAwMCwKIH0gU2hDb21waWxlT3B0aW9uczsKIAogLy8gRGVmaW5lcyBhbHRlcm5hdGUgc3Ry
YXRlZ2llcyBmb3IgaW1wbGVtZW50aW5nIGFycmF5IGluZGV4IGNsYW1waW5nLgpAQCAtMjA5LDYg
KzIxNSw3IEBAIHR5cGVkZWYgc3RydWN0CiAgICAgaW50IE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWw7
CiAgICAgaW50IEFSQl90ZXh0dXJlX3JlY3RhbmdsZTsKICAgICBpbnQgRVhUX2RyYXdfYnVmZmVy
czsKKyAgICBpbnQgRVhUX2ZyYWdfZGVwdGg7CiAKICAgICAvLyBTZXQgdG8gMSBpZiBoaWdocCBw
cmVjaXNpb24gaXMgc3VwcG9ydGVkIGluIHRoZSBmcmFnbWVudCBsYW5ndWFnZS4KICAgICAvLyBE
ZWZhdWx0IGlzIDAuCkBAIC0yMjIsNiArMjI5LDEyIEBAIHR5cGVkZWYgc3RydWN0CiAgICAgLy8g
U2VsZWN0cyBhIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIGltcGxlbWVudGluZyBhcnJheSBpbmRleCBj
bGFtcGluZy4KICAgICAvLyBEZWZhdWx0IGlzIFNIX0NMQU1QX1dJVEhfQ0xBTVBfSU5UUklOU0lD
LgogICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgQXJyYXlJbmRleENsYW1waW5nU3Ry
YXRlZ3k7CisKKyAgICAvLyBUaGUgbWF4aW11bSBjb21wbGV4aXR5IGFuIGV4cHJlc3Npb24gY2Fu
IGJlLgorICAgIGludCBNYXhFeHByZXNzaW9uQ29tcGxleGl0eTsKKworICAgIC8vIFRoZSBtYXhp
bXVtIGRlcHRoIGEgY2FsbCBzdGFjayBjYW4gYmUuCisgICAgaW50IE1heENhbGxTdGFja0RlcHRo
OwogfSBTaEJ1aWx0SW5SZXNvdXJjZXM7CiAKIC8vCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvQmFzZVR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCShyZXZpc2lvbiAxNTI2NDkpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQmFzZVR5cGVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkwLDEwICs5MCw2IEBAIGVudW0gVFF1YWxpZmllcgogICAgIEV2cUludmFy
aWFudFZhcnlpbmdPdXQsICAgIC8vIHZlcnRleCBzaGFkZXJzIG9ubHkgIHJlYWQvd3JpdGUKICAg
ICBFdnFVbmlmb3JtLCAgICAgICAvLyBSZWFkb25seSwgdmVydGV4IGFuZCBmcmFnbWVudAogCi0g
ICAgLy8gcGFjay91bnBhY2sgaW5wdXQgYW5kIG91dHB1dAotICAgIEV2cUlucHV0LAotICAgIEV2
cU91dHB1dCwKLQogICAgIC8vIHBhcmFtZXRlcnMKICAgICBFdnFJbiwKICAgICBFdnFPdXQsCkBA
IC0xMTIsNiArMTA4LDcgQEAgZW51bSBUUXVhbGlmaWVyCiAgICAgLy8gYnVpbHQtaW5zIHdyaXR0
ZW4gYnkgZnJhZ21lbnQgc2hhZGVyCiAgICAgRXZxRnJhZ0NvbG9yLAogICAgIEV2cUZyYWdEYXRh
LAorICAgIEV2cUZyYWdEZXB0aCwKIAogICAgIC8vIGVuZCBvZiBsaXN0CiAgICAgRXZxTGFzdApA
QCAtMTM3LDE0ICsxMzQsMTMgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGdldFF1YWxpZmllclN0cmlu
ZyhUUQogICAgIGNhc2UgRXZxSW46ICAgICAgICAgICAgIHJldHVybiAiaW4iOyAgICAgICAgICAg
ICBicmVhazsKICAgICBjYXNlIEV2cU91dDogICAgICAgICAgICByZXR1cm4gIm91dCI7ICAgICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFJbk91dDogICAgICAgICAgcmV0dXJuICJpbm91dCI7
ICAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxSW5wdXQ6ICAgICAgICAgIHJldHVybiAiaW5w
dXQiOyAgICAgICAgICBicmVhazsKLSAgICBjYXNlIEV2cU91dHB1dDogICAgICAgICByZXR1cm4g
Im91dHB1dCI7ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFQb3NpdGlvbjogICAgICAgcmV0
dXJuICJQb3NpdGlvbiI7ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxUG9pbnRTaXplOiAgICAg
IHJldHVybiAiUG9pbnRTaXplIjsgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb29yZDog
ICAgICByZXR1cm4gIkZyYWdDb29yZCI7ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcm9udEZh
Y2luZzogICAgcmV0dXJuICJGcm9udEZhY2luZyI7ICAgIGJyZWFrOwogICAgIGNhc2UgRXZxRnJh
Z0NvbG9yOiAgICAgIHJldHVybiAiRnJhZ0NvbG9yIjsgICAgICBicmVhazsKICAgICBjYXNlIEV2
cUZyYWdEYXRhOiAgICAgICByZXR1cm4gIkZyYWdEYXRhIjsgICAgICBicmVhazsKKyAgICBjYXNl
IEV2cUZyYWdEZXB0aDogICAgICByZXR1cm4gIkZyYWdEZXB0aCI7ICAgICBicmVhazsKICAgICBk
ZWZhdWx0OiAgICAgICAgICAgICAgICByZXR1cm4gInVua25vd24gcXVhbGlmaWVyIjsKICAgICB9
CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tbW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1v
bi5oCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0LDI0ICsxNCwxMiBAQAogCiAjaW5j
bHVkZSAiY29tcGlsZXIvUG9vbEFsbG9jLmgiCiAKLS8vIFdlIG5lZWQgdHdvIHBpZWNlcyBvZiBp
bmZvcm1hdGlvbiB0byByZXBvcnQgZXJyb3JzL3dhcm5pbmdzIC0gc3RyaW5nIGFuZAotLy8gbGlu
ZSBudW1iZXIuIFdlIGVuY29kZSB0aGVzZSBpbnRvIGEgc2luZ2xlIGludCBzbyB0aGF0IGl0IGNh
biBiZSBlYXNpbHkKLS8vIGluY3JlbWVudGVkL2RlY3JlbWVudGVkIGJ5IGxleGVyLiBUaGUgcmln
aHQgU09VUkNFX0xPQ19MSU5FX1NJWkUgYml0cyBzdG9yZQotLy8gbGluZSBudW1iZXIgd2hpbGUg
dGhlIHJlc3Qgc3RvcmUgdGhlIHN0cmluZyBudW1iZXIuIFNpbmNlIHRoZSBzaGFkZXJzIGFyZQot
Ly8gdXN1YWxseSBzbWFsbCwgd2Ugc2hvdWxkIG5vdCBydW4gb3V0IG9mIG1lbW9yeS4gU09VUkNF
X0xPQ19MSU5FX1NJWkUKLS8vIGNhbiBiZSBpbmNyZWFzZWQgdG8gYWxsZXZpYXRlIHRoaXMgaXNz
dWUuCi10eXBlZGVmIGludCBUU291cmNlTG9jOwotY29uc3QgdW5zaWduZWQgaW50IFNPVVJDRV9M
T0NfTElORV9TSVpFID0gMTY7ICAvLyBpbiBiaXRzLgotY29uc3QgdW5zaWduZWQgaW50IFNPVVJD
RV9MT0NfTElORV9NQVNLID0gKDEgPDwgU09VUkNFX0xPQ19MSU5FX1NJWkUpIC0gMTsKLQotaW5s
aW5lIFRTb3VyY2VMb2MgRW5jb2RlU291cmNlTG9jKGludCBzdHJpbmcsIGludCBsaW5lKSB7Ci0g
ICAgcmV0dXJuIChzdHJpbmcgPDwgU09VUkNFX0xPQ19MSU5FX1NJWkUpIHwgKGxpbmUgJiBTT1VS
Q0VfTE9DX0xJTkVfTUFTSyk7Ci19Ci0KLWlubGluZSB2b2lkIERlY29kZVNvdXJjZUxvYyhUU291
cmNlTG9jIGxvYywgaW50KiBzdHJpbmcsIGludCogbGluZSkgewotICAgIGlmIChzdHJpbmcpICpz
dHJpbmcgPSBsb2MgPj4gU09VUkNFX0xPQ19MSU5FX1NJWkU7Ci0gICAgaWYgKGxpbmUpICpsaW5l
ID0gbG9jICYgU09VUkNFX0xPQ19MSU5FX01BU0s7Ci19CitzdHJ1Y3QgVFNvdXJjZUxvYyB7Cisg
ICAgaW50IGZpcnN0X2ZpbGU7CisgICAgaW50IGZpcnN0X2xpbmU7CisgICAgaW50IGxhc3RfZmls
ZTsKKyAgICBpbnQgbGFzdF9saW5lOworfTsKIAogLy8KIC8vIFB1dCBQT09MX0FMTE9DQVRPUl9O
RVdfREVMRVRFIGluIGJhc2UgY2xhc3NlcyB0byBtYWtlIHRoZW0gdXNlIHRoaXMgc2NoZW1lLgpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tcGls
ZXIuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOSBAQAogLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAKKyNpbmNsdWRlICJjb21waWxlci9idWls
dGluX3N5bWJvbF90YWJsZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgiCisjaW5jbHVk
ZSAiY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvRm9yTG9v
cFVucm9sbC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0luaXRpYWxpemUuaCIKICNpbmNsdWRlICJj
b21waWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmgiCkBAIC02MiwxMSArNjMsMjYgQEAgYm9v
bCBJbml0aWFsaXplU3ltYm9sVGFibGUoCiAKICAgICAgICAgaWYgKFBhUGFyc2VTdHJpbmdzKDEs
ICZidWlsdEluU2hhZGVycywgJmJ1aWx0SW5MZW5ndGhzLCAmcGFyc2VDb250ZXh0KSAhPSAwKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsICJVbmFibGUgdG8gcGFyc2UgYnVpbHQtaW5zIik7CisgICAgICAgICAgICBpbmZv
U2luay5pbmZvLnByZWZpeChFUHJlZml4SW50ZXJuYWxFcnJvcik7CisgICAgICAgICAgICBpbmZv
U2luay5pbmZvIDw8ICJVbmFibGUgdG8gcGFyc2UgYnVpbHQtaW5zIjsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAorCisgICAgc3dpdGNoICh0eXBlKSB7Cisg
ICAgY2FzZSBTSF9GUkFHTUVOVF9TSEFERVI6CisgICAgICAgIEluc2VydEJ1aWx0SW5GdW5jdGlv
bnNDb21tb24ocmVzb3VyY2VzLCAmc3ltYm9sVGFibGUpOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgU0hfVkVSVEVYX1NIQURFUjoKKyAgICAgICAgSW5zZXJ0QnVpbHRJbkZ1bmN0aW9uc0Nv
bW1vbihyZXNvdXJjZXMsICZzeW1ib2xUYWJsZSk7CisgICAgICAgIEluc2VydEJ1aWx0SW5GdW5j
dGlvbnNWZXJ0ZXgocmVzb3VyY2VzLCAmc3ltYm9sVGFibGUpOworICAgICAgICBicmVhazsKKwor
ICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSAmJiAiTGFuZ3VhZ2Ugbm90IHN1cHBvcnRlZCIpOwor
ICAgIH0KKwogICAgIElkZW50aWZ5QnVpbHRJbnModHlwZSwgc3BlYywgcmVzb3VyY2VzLCBzeW1i
b2xUYWJsZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwMyw2ICsxMTksOSBAQCBUU2hIYW5k
bGVCYXNlOjp+VFNoSGFuZGxlQmFzZSgpIHsKIFRDb21waWxlcjo6VENvbXBpbGVyKFNoU2hhZGVy
VHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYykKICAgICA6IHNoYWRlclR5cGUodHlwZSksCiAg
ICAgICBzaGFkZXJTcGVjKHNwZWMpLAorICAgICAgbWF4VW5pZm9ybVZlY3RvcnMoMCksCisgICAg
ICBtYXhFeHByZXNzaW9uQ29tcGxleGl0eSgwKSwKKyAgICAgIG1heENhbGxTdGFja0RlcHRoKDAp
LAogICAgICAgZnJhZ21lbnRQcmVjaXNpb25IaWdoKGZhbHNlKSwKICAgICAgIGNsYW1waW5nU3Ry
YXRlZ3koU0hfQ0xBTVBfV0lUSF9DTEFNUF9JTlRSSU5TSUMpLAogICAgICAgYnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IodHlwZSkKQEAgLTEyMSwxMSArMTQwLDE0IEBAIGJvb2wgVENvbXBpbGVyOjpJ
bml0KGNvbnN0IFNoQnVpbHRJblJlc28KICAgICBtYXhVbmlmb3JtVmVjdG9ycyA9IChzaGFkZXJU
eXBlID09IFNIX1ZFUlRFWF9TSEFERVIpID8KICAgICAgICAgcmVzb3VyY2VzLk1heFZlcnRleFVu
aWZvcm1WZWN0b3JzIDoKICAgICAgICAgcmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3Rv
cnM7CisgICAgbWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkgPSByZXNvdXJjZXMuTWF4RXhwcmVzc2lv
bkNvbXBsZXhpdHk7CisgICAgbWF4Q2FsbFN0YWNrRGVwdGggPSByZXNvdXJjZXMuTWF4Q2FsbFN0
YWNrRGVwdGg7CiAgICAgVFNjb3BlZFBvb2xBbGxvY2F0b3Igc2NvcGVkQWxsb2MoJmFsbG9jYXRv
ciwgZmFsc2UpOwogCiAgICAgLy8gR2VuZXJhdGUgYnVpbHQtaW4gc3ltYm9sIHRhYmxlLgogICAg
IGlmICghSW5pdEJ1aWx0SW5TeW1ib2xUYWJsZShyZXNvdXJjZXMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICBJbml0RXh0ZW5zaW9uQmVoYXZpb3IocmVzb3VyY2VzLCBleHRlbnNpb25C
ZWhhdmlvcik7CiAgICAgZnJhZ21lbnRQcmVjaXNpb25IaWdoID0gcmVzb3VyY2VzLkZyYWdtZW50
UHJlY2lzaW9uSGlnaCA9PSAxOwogCkBAIC0xNzAsOCArMTkyLDEwIEBAIGJvb2wgVENvbXBpbGVy
Ojpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAvLyBXZSBwcmVzZXJ2ZSBzeW1ib2xzIGF0
IHRoZSBidWlsdC1pbiBsZXZlbCBmcm9tIGNvbXBpbGUtdG8tY29tcGlsZS4KICAgICAvLyBTdGFy
dCBwdXNoaW5nIHRoZSB1c2VyLWRlZmluZWQgc3ltYm9scyBhdCBnbG9iYWwgbGV2ZWwuCiAgICAg
c3ltYm9sVGFibGUucHVzaCgpOwotICAgIGlmICghc3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
KQotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJX
cm9uZyBzeW1ib2wgdGFibGUgbGV2ZWwiKTsKKyAgICBpZiAoIXN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSkgeworICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4SW50ZXJuYWxF
cnJvcik7CisgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIldyb25nIHN5bWJvbCB0YWJsZSBsZXZl
bCI7CisgICAgfQogCiAgICAgLy8gUGFyc2Ugc2hhZGVyLgogICAgIGJvb2wgc3VjY2VzcyA9CkBA
IC0xODIsNyArMjA2LDcgQEAgYm9vbCBUQ29tcGlsZXI6OmNvbXBpbGUoY29uc3QgY2hhciogY29u
cwogICAgICAgICBzdWNjZXNzID0gaW50ZXJtZWRpYXRlLnBvc3RQcm9jZXNzKHJvb3QpOwogCiAg
ICAgICAgIGlmIChzdWNjZXNzKQotICAgICAgICAgICAgc3VjY2VzcyA9IGRldGVjdFJlY3Vyc2lv
bihyb290KTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBkZXRlY3RDYWxsRGVwdGgocm9vdCwgaW5m
b1NpbmssIChjb21waWxlT3B0aW9ucyAmIFNIX0xJTUlUX0NBTExfU1RBQ0tfREVQVEgpICE9IDAp
OwogCiAgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX1ZBTElEQVRF
X0xPT1BfSU5ERVhJTkcpKQogICAgICAgICAgICAgc3VjY2VzcyA9IHZhbGlkYXRlTGltaXRhdGlv
bnMocm9vdCk7CkBAIC0yMDUsNiArMjI5LDEwIEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNv
bnN0IGNoYXIqIGNvbnMKICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYg
U0hfQ0xBTVBfSU5ESVJFQ1RfQVJSQVlfQk9VTkRTKSkKICAgICAgICAgICAgIGFycmF5Qm91bmRz
Q2xhbXBlci5NYXJrSW5kaXJlY3RBcnJheUJvdW5kc0ZvckNsYW1waW5nKHJvb3QpOwogCisgICAg
ICAgIC8vIERpc2FsbG93IGV4cHJlc3Npb25zIGRlZW1lZCB0b28gY29tcGxleC4KKyAgICAgICAg
aWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfTElNSVRfRVhQUkVTU0lPTl9DT01Q
TEVYSVRZKSkKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5
KHJvb3QpOworCiAgICAgICAgIC8vIENhbGwgbWFwTG9uZ1ZhcmlhYmxlTmFtZXMoKSBiZWZvcmUg
Y29sbGVjdEF0dHJpYnNVbmlmb3JtcygpIHNvIGluCiAgICAgICAgIC8vIGNvbGxlY3RBdHRyaWJz
VW5pZm9ybXMoKSB3ZSBhbHJlYWR5IGhhdmUgdGhlIG1hcHBlZCBzeW1ib2wgbmFtZXMgYW5kCiAg
ICAgICAgIC8vIHdlIGNvdWxkIGNvbXBvc2l0ZSBtYXBwZWQgYW5kIG9yaWdpbmFsIHZhcmlhYmxl
IG5hbWVzLgpAQCAtMjE3LDcgKzI0NSw4IEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0
IGNoYXIqIGNvbnMKICAgICAgICAgICAgIGlmIChjb21waWxlT3B0aW9ucyAmIFNIX0VORk9SQ0Vf
UEFDS0lOR19SRVNUUklDVElPTlMpIHsKICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZW5mb3Jj
ZVBhY2tpbmdSZXN0cmljdGlvbnMoKTsKICAgICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsK
LSAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwg
InRvbyBtYW55IHVuaWZvcm1zIik7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
cHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8g
PDwgInRvbyBtYW55IHVuaWZvcm1zIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTI2MywxOCArMjkyLDI0IEBAIHZvaWQgVENvbXBpbGVyOjpjbGVhclJl
c3VsdHMoKQogICAgIG5hbWVNYXAuY2xlYXIoKTsKIH0KIAotYm9vbCBUQ29tcGlsZXI6OmRldGVj
dFJlY3Vyc2lvbihUSW50ZXJtTm9kZSogcm9vdCkKK2Jvb2wgVENvbXBpbGVyOjpkZXRlY3RDYWxs
RGVwdGgoVEludGVybU5vZGUqIHJvb3QsIFRJbmZvU2luayYgaW5mb1NpbmssIGJvb2wgbGltaXRD
YWxsU3RhY2tEZXB0aCkKIHsKLSAgICBEZXRlY3RSZWN1cnNpb24gZGV0ZWN0OworICAgIERldGVj
dENhbGxEZXB0aCBkZXRlY3QoaW5mb1NpbmssIGxpbWl0Q2FsbFN0YWNrRGVwdGgsIG1heENhbGxT
dGFja0RlcHRoKTsKICAgICByb290LT50cmF2ZXJzZSgmZGV0ZWN0KTsKLSAgICBzd2l0Y2ggKGRl
dGVjdC5kZXRlY3RSZWN1cnNpb24oKSkgewotICAgICAgICBjYXNlIERldGVjdFJlY3Vyc2lvbjo6
a0Vycm9yTm9uZToKKyAgICBzd2l0Y2ggKGRldGVjdC5kZXRlY3RDYWxsRGVwdGgoKSkgeworICAg
ICAgICBjYXNlIERldGVjdENhbGxEZXB0aDo6a0Vycm9yTm9uZToKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICBjYXNlIERldGVjdFJlY3Vyc2lvbjo6a0Vycm9yTWlzc2luZ01haW46
Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiTWlzc2lu
ZyBtYWluKCkiKTsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvck1pc3NpbmdN
YWluOgorICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9yKTsKKyAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIk1pc3NpbmcgbWFpbigpIjsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBEZXRlY3RSZWN1cnNpb246OmtFcnJvclJlY3Vy
c2lvbjoKLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsICJG
dW5jdGlvbiByZWN1cnNpb24gZGV0ZWN0ZWQiKTsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVw
dGg6OmtFcnJvclJlY3Vyc2lvbjoKKyAgICAgICAgICAgIGluZm9TaW5rLmluZm8ucHJlZml4KEVQ
cmVmaXhFcnJvcik7CisgICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJGdW5jdGlvbiByZWN1
cnNpb24gZGV0ZWN0ZWQiOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNl
IERldGVjdENhbGxEZXB0aDo6a0Vycm9yTWF4RGVwdGhFeGNlZWRlZDoKKyAgICAgICAgICAgIGlu
Zm9TaW5rLmluZm8ucHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICBpbmZvU2luay5p
bmZvIDw8ICJGdW5jdGlvbiBjYWxsIHN0YWNrIHRvbyBkZWVwIjsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CkBA
IC0zMjAsNiArMzU1LDI4IEBAIGJvb2wgVENvbXBpbGVyOjplbmZvcmNlVGltaW5nUmVzdHJpY3Rp
b24KICAgICB9CiB9CiAKK2Jvb2wgVENvbXBpbGVyOjpsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5
KFRJbnRlcm1Ob2RlKiByb290KQoreworICAgIFRJbnRlcm1UcmF2ZXJzZXIgdHJhdmVyc2VyOwor
ICAgIHJvb3QtPnRyYXZlcnNlKCZ0cmF2ZXJzZXIpOworICAgIFREZXBlbmRlbmN5R3JhcGggZ3Jh
cGgocm9vdCk7CisKKyAgICBmb3IgKFRGdW5jdGlvbkNhbGxWZWN0b3I6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSBncmFwaC5iZWdpblVzZXJEZWZpbmVkRnVuY3Rpb25DYWxscygpOworICAgICAgICAg
aXRlciAhPSBncmFwaC5lbmRVc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbHMoKTsKKyAgICAgICAgICsr
aXRlcikKKyAgICB7CisgICAgICAgIFRHcmFwaEZ1bmN0aW9uQ2FsbCogc2FtcGxlclN5bWJvbCA9
ICppdGVyOworICAgICAgICBURGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyIGdyYXBoVHJhdmVyc2Vy
OworICAgICAgICBzYW1wbGVyU3ltYm9sLT50cmF2ZXJzZSgmZ3JhcGhUcmF2ZXJzZXIpOworICAg
IH0KKworICAgIGlmICh0cmF2ZXJzZXIuZ2V0TWF4RGVwdGgoKSA+IG1heEV4cHJlc3Npb25Db21w
bGV4aXR5KSB7CisgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIkV4cHJlc3Npb24gdG9vIGNvbXBs
ZXguIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogYm9vbCBUQ29tcGlsZXI6OmVuZm9yY2VGcmFnbWVudFNoYWRlclRpbWluZ1Jlc3RyaWN0aW9u
cyhjb25zdCBURGVwZW5kZW5jeUdyYXBoJiBncmFwaCkKIHsKICAgICBSZXN0cmljdEZyYWdtZW50
U2hhZGVyVGltaW5nIHJlc3RyaWN0b3IoaW5mb1NpbmsuaW5mbyk7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db25zdGFudFVuaW9uLmgJKHJl
dmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9D
b25zdGFudFVuaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE0LDYgKzE0LDcgQEAgcHVibGljOgogICAg
IENvbnN0YW50VW5pb24oKQogICAgIHsKICAgICAgICAgaUNvbnN0ID0gMDsKKyAgICAgICAgdHlw
ZSA9IEVidFZvaWQ7CiAgICAgfQogCiAgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9i
YWxQb29sQWxsb2NhdG9yKSAgICAgICAgCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVw
dGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg1IEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisjaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgiCisjaW5jbHVkZSAiY29t
cGlsZXIvSW5mb1NpbmsuaCIKKworRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OkZ1bmN0
aW9uTm9kZShjb25zdCBUU3RyaW5nJiBmbmFtZSkKKyAgICA6IG5hbWUoZm5hbWUpLAorICAgICAg
dmlzaXQoUHJlVmlzaXQpCit7Cit9CisKK2NvbnN0IFRTdHJpbmcmIERldGVjdENhbGxEZXB0aDo6
RnVuY3Rpb25Ob2RlOjpnZXROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbmFtZTsKK30KKwor
dm9pZCBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6YWRkQ2FsbGVlKAorICAgIERldGVj
dENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlKiBjYWxsZWUpCit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChjYWxsZWVzW2ldID09
IGNhbGxlZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FsbGVlcy5wdXNoX2Jh
Y2soY2FsbGVlKTsKK30KKworaW50IERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpkZXRl
Y3RDYWxsRGVwdGgoRGV0ZWN0Q2FsbERlcHRoKiBkZXRlY3RDYWxsRGVwdGgsIGludCBkZXB0aCkK
K3sKKyAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOworICAgIEFTU0VSVChkZXRlY3RDYWxs
RGVwdGgpOworCisgICAgaW50IG1heERlcHRoID0gZGVwdGg7CisgICAgdmlzaXQgPSBJblZpc2l0
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsraSkgeworICAg
ICAgICBzd2l0Y2ggKGNhbGxlZXNbaV0tPnZpc2l0KSB7CisgICAgICAgICAgICBjYXNlIEluVmlz
aXQ6CisgICAgICAgICAgICAgICAgLy8gY3ljbGUgZGV0ZWN0ZWQsIGkuZS4sIHJlY3Vyc2lvbiBk
ZXRlY3RlZC4KKyAgICAgICAgICAgICAgICByZXR1cm4ga0luZmluaXRlQ2FsbERlcHRoOworICAg
ICAgICAgICAgY2FzZSBQb3N0VmlzaXQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFByZVZpc2l0OiB7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgYmVmb3JlIHdl
IHJlY3Vyc2Ugc28gd2UgZG9uJ3QgZ28gdG9vIGRlcHRoCisgICAgICAgICAgICAgICAgaWYgKGRl
dGVjdENhbGxEZXB0aC0+Y2hlY2tFeGNlZWRzTWF4RGVwdGgoZGVwdGgpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZGVwdGg7CisgICAgICAgICAgICAgICAgaW50IGNhbGxEZXB0aCA9IGNh
bGxlZXNbaV0tPmRldGVjdENhbGxEZXB0aChkZXRlY3RDYWxsRGVwdGgsIGRlcHRoICsgMSk7Cisg
ICAgICAgICAgICAgICAgLy8gQ2hlY2sgYWZ0ZXIgd2UgcmVjdXJzZSBzbyB3ZSBjYW4gZXhpdCBp
bW1lZGlhdGVseSBhbmQgcHJvdmlkZSBpbmZvLgorICAgICAgICAgICAgICAgIGlmIChkZXRlY3RD
YWxsRGVwdGgtPmNoZWNrRXhjZWVkc01heERlcHRoKGNhbGxEZXB0aCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZGV0ZWN0Q2FsbERlcHRoLT5nZXRJbmZvU2luaygpLmluZm8gPDwgIjwtIiA8PCBj
YWxsZWVzW2ldLT5nZXROYW1lKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRGVw
dGg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1heERlcHRoID0gc3RkOjpt
YXgoY2FsbERlcHRoLCBtYXhEZXB0aCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgdmlzaXQg
PSBQb3N0VmlzaXQ7CisgICAgcmV0dXJuIG1heERlcHRoOworfQorCit2b2lkIERldGVjdENhbGxE
ZXB0aDo6RnVuY3Rpb25Ob2RlOjpyZXNldCgpCit7CisgICAgdmlzaXQgPSBQcmVWaXNpdDsKK30K
KworRGV0ZWN0Q2FsbERlcHRoOjpEZXRlY3RDYWxsRGVwdGgoVEluZm9TaW5rJiBpbmZvU2luaywg
Ym9vbCBsaW1pdENhbGxTdGFja0RlcHRoLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgpCisgICAgOiBU
SW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSksCisgICAgICBjdXJyZW50
RnVuY3Rpb24oTlVMTCksCisgICAgICBpbmZvU2luayhpbmZvU2luayksCisgICAgICBtYXhEZXB0
aChsaW1pdENhbGxTdGFja0RlcHRoID8gbWF4Q2FsbFN0YWNrRGVwdGggOiBGdW5jdGlvbk5vZGU6
OmtJbmZpbml0ZUNhbGxEZXB0aCkKK3sKK30KKworRGV0ZWN0Q2FsbERlcHRoOjp+RGV0ZWN0Q2Fs
bERlcHRoKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9ucy5zaXplKCk7
ICsraSkKKyAgICAgICAgZGVsZXRlIGZ1bmN0aW9uc1tpXTsKK30KKworYm9vbCBEZXRlY3RDYWxs
RGVwdGg6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlKiBub2Rl
KQoreworICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAgICB7CisgICAgICAgIGNhc2UgRU9w
UHJvdG90eXBlOgorICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24uCisgICAgICAg
ICAgICAvLyBEb24ndCBhZGQgRnVuY3Rpb25Ob2RlIGhlcmUgYmVjYXVzZSBub2RlLT5nZXROYW1l
KCkgaXMgdGhlCisgICAgICAgICAgICAvLyB1bm1hbmdsZWQgZnVuY3Rpb24gbmFtZS4KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEZ1bmN0aW9uOiB7CisgICAgICAgICAgICAv
LyBGdW5jdGlvbiBkZWZpbml0aW9uLgorICAgICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0
KSB7CisgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uID0gZmluZEZ1bmN0aW9uQnlOYW1l
KG5vZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGdW5jdGlvbiA9
PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9IG5ldyBGdW5j
dGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25z
LnB1c2hfYmFjayhjdXJyZW50RnVuY3Rpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAodmlzaXQgPT0gUG9zdFZpc2l0KSB7CisgICAgICAgICAgICAgICAgY3Vy
cmVudEZ1bmN0aW9uID0gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOiB7CisgICAgICAgICAgICAv
LyBGdW5jdGlvbiBjYWxsLgorICAgICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KSB7Cisg
ICAgICAgICAgICAgICAgRnVuY3Rpb25Ob2RlKiBmdW5jID0gZmluZEZ1bmN0aW9uQnlOYW1lKG5v
ZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAg
ICAgICAgICAgICAgICAgICBmdW5jID0gbmV3IEZ1bmN0aW9uTm9kZShub2RlLT5nZXROYW1lKCkp
OworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMucHVzaF9iYWNrKGZ1bmMpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZ1bmN0aW9uKQorICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24tPmFkZENhbGxlZShmdW5jKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRGV0
ZWN0Q2FsbERlcHRoOjpjaGVja0V4Y2VlZHNNYXhEZXB0aChpbnQgZGVwdGgpCit7CisgICAgcmV0
dXJuIGRlcHRoID49IG1heERlcHRoOworfQorCit2b2lkIERldGVjdENhbGxEZXB0aDo6cmVzZXRG
dW5jdGlvbk5vZGVzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9ucy5z
aXplKCk7ICsraSkgeworICAgICAgICBmdW5jdGlvbnNbaV0tPnJlc2V0KCk7CisgICAgfQorfQor
CitEZXRlY3RDYWxsRGVwdGg6OkVycm9yQ29kZSBEZXRlY3RDYWxsRGVwdGg6OmRldGVjdENhbGxE
ZXB0aEZvckZ1bmN0aW9uKEZ1bmN0aW9uTm9kZSogZnVuYykKK3sKKyAgICBjdXJyZW50RnVuY3Rp
b24gPSBOVUxMOworICAgIHJlc2V0RnVuY3Rpb25Ob2RlcygpOworCisgICAgaW50IG1heENhbGxE
ZXB0aCA9IGZ1bmMtPmRldGVjdENhbGxEZXB0aCh0aGlzLCAxKTsKKworICAgIGlmIChtYXhDYWxs
RGVwdGggPT0gRnVuY3Rpb25Ob2RlOjprSW5maW5pdGVDYWxsRGVwdGgpCisgICAgICAgIHJldHVy
biBrRXJyb3JSZWN1cnNpb247CisKKyAgICBpZiAobWF4Q2FsbERlcHRoID49IG1heERlcHRoKQor
ICAgICAgICByZXR1cm4ga0Vycm9yTWF4RGVwdGhFeGNlZWRlZDsKKworICAgIHJldHVybiBrRXJy
b3JOb25lOworfQorCitEZXRlY3RDYWxsRGVwdGg6OkVycm9yQ29kZSBEZXRlY3RDYWxsRGVwdGg6
OmRldGVjdENhbGxEZXB0aCgpCit7CisgICAgaWYgKG1heERlcHRoICE9IEZ1bmN0aW9uTm9kZTo6
a0luZmluaXRlQ2FsbERlcHRoKSB7CisgICAgICAgIC8vIENoZWNrIGFsbCBmdW5jdGlvbnMgYmVj
YXVzZSB0aGUgZHJpdmVyIG1heSBmYWlsIG9uIHRoZW0KKyAgICAgICAgLy8gVE9ETzogQmVmb3Jl
IGRldGVjdGluZ1JlY3Vyc2lvbiwgc3RyaXAgdW51c2VkIGZ1bmN0aW9ucy4KKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
IEVycm9yQ29kZSBlcnJvciA9IGRldGVjdENhbGxEZXB0aEZvckZ1bmN0aW9uKGZ1bmN0aW9uc1tp
XSk7CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0ga0Vycm9yTm9uZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBGdW5jdGlv
bk5vZGUqIG1haW4gPSBmaW5kRnVuY3Rpb25CeU5hbWUoIm1haW4oIik7CisgICAgICAgIGlmICht
YWluID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4ga0Vycm9yTWlzc2luZ01haW47CisKKyAg
ICAgICAgcmV0dXJuIGRldGVjdENhbGxEZXB0aEZvckZ1bmN0aW9uKG1haW4pOworICAgIH0KKwor
ICAgIHJldHVybiBrRXJyb3JOb25lOworfQorCitEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9k
ZSogRGV0ZWN0Q2FsbERlcHRoOjpmaW5kRnVuY3Rpb25CeU5hbWUoCisgICAgY29uc3QgVFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9ucy5zaXplKCk7
ICsraSkgeworICAgICAgICBpZiAoZnVuY3Rpb25zW2ldLT5nZXROYW1lKCkgPT0gbmFtZSkKKyAg
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbnNbaV07CisgICAgfQorICAgIHJldHVybiBOVUxMOwor
fQorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2Fs
bERlcHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0RldGVjdENhbGxEZXB0aC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5kZWYgQ09NUElMRVJfREVURUNU
X1JFQ1VSU0lPTl9IXworI2RlZmluZSBDT01QSUxFUl9ERVRFQ1RfUkVDVVJTSU9OX0hfCisKKyNp
bmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2lu
Y2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1Zhcmlh
YmxlSW5mby5oIgorCitjbGFzcyBUSW5mb1Npbms7CisKKy8vIFRyYXZlcnNlcyBpbnRlcm1lZGlh
dGUgdHJlZSB0byBkZXRlY3QgZnVuY3Rpb24gcmVjdXJzaW9uLgorY2xhc3MgRGV0ZWN0Q2FsbERl
cHRoIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIgeworcHVibGljOgorICAgIGVudW0gRXJyb3JD
b2RlIHsKKyAgICAgICAga0Vycm9yTWlzc2luZ01haW4sCisgICAgICAgIGtFcnJvclJlY3Vyc2lv
biwKKyAgICAgICAga0Vycm9yTWF4RGVwdGhFeGNlZWRlZCwKKyAgICAgICAga0Vycm9yTm9uZQor
ICAgIH07CisKKyAgICBEZXRlY3RDYWxsRGVwdGgoVEluZm9TaW5rJiBpbmZvU3luYywgYm9vbCBs
aW1pdENhbGxTdGFja0RlcHRoLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgpOworICAgIH5EZXRlY3RD
YWxsRGVwdGgoKTsKKworICAgIHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVElu
dGVybUFnZ3JlZ2F0ZSopOworCisgICAgYm9vbCBjaGVja0V4Y2VlZHNNYXhEZXB0aChpbnQgZGVw
dGgpOworCisgICAgRXJyb3JDb2RlIGRldGVjdENhbGxEZXB0aCgpOworCitwcml2YXRlOgorICAg
IGNsYXNzIEZ1bmN0aW9uTm9kZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGtJbmZpbml0ZUNhbGxEZXB0aCA9IElOVF9NQVg7CisKKyAgICAgICAgRnVuY3Rpb25Ob2Rl
KGNvbnN0IFRTdHJpbmcmIGZuYW1lKTsKKworICAgICAgICBjb25zdCBUU3RyaW5nJiBnZXROYW1l
KCkgY29uc3Q7CisKKyAgICAgICAgLy8gSWYgYSBmdW5jdGlvbiBpcyBhbHJlYWR5IGluIHRoZSBj
YWxsZWUgbGlzdCwgdGhpcyBiZWNvbWVzIGEgbm8tb3AuCisgICAgICAgIHZvaWQgYWRkQ2FsbGVl
KEZ1bmN0aW9uTm9kZSogY2FsbGVlKTsKKworICAgICAgICAvLyBSZXR1cm5zIGtJbmlmaW5pdHlD
YWxsRGVwdGggaWYgcmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGxzIGFyZSBkZXRlY3RlZC4KKyAgICAg
ICAgaW50IGRldGVjdENhbGxEZXB0aChEZXRlY3RDYWxsRGVwdGgqIGRldGVjdENhbGxEZXB0aCwg
aW50IGRlcHRoKTsKKworICAgICAgICAvLyBSZXNldCBzdGF0ZS4KKyAgICAgICAgdm9pZCByZXNl
dCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgLy8gbWFuZ2xlZCBmdW5jdGlvbiBuYW1lIGlz
IHVuaXF1ZS4KKyAgICAgICAgVFN0cmluZyBuYW1lOworCisgICAgICAgIC8vIGZ1bmN0aW9ucyB0
aGF0IGFyZSBkaXJlY3RseSBjYWxsZWQgYnkgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgVFZlY3Rv
cjxGdW5jdGlvbk5vZGUqPiBjYWxsZWVzOworCisgICAgICAgIFZpc2l0IHZpc2l0OworICAgIH07
CisKKyAgICBFcnJvckNvZGUgZGV0ZWN0Q2FsbERlcHRoRm9yRnVuY3Rpb24oRnVuY3Rpb25Ob2Rl
KiBmdW5jKTsKKyAgICBGdW5jdGlvbk5vZGUqIGZpbmRGdW5jdGlvbkJ5TmFtZShjb25zdCBUU3Ry
aW5nJiBuYW1lKTsKKyAgICB2b2lkIHJlc2V0RnVuY3Rpb25Ob2RlcygpOworCisgICAgVEluZm9T
aW5rJiBnZXRJbmZvU2luaygpIHsgcmV0dXJuIGluZm9TaW5rOyB9CisKKyAgICBUVmVjdG9yPEZ1
bmN0aW9uTm9kZSo+IGZ1bmN0aW9uczsKKyAgICBGdW5jdGlvbk5vZGUqIGN1cnJlbnRGdW5jdGlv
bjsKKyAgICBUSW5mb1NpbmsmIGluZm9TaW5rOworICAgIGludCBtYXhEZXB0aDsKKworICAgIERl
dGVjdENhbGxEZXB0aChjb25zdCBEZXRlY3RDYWxsRGVwdGgmKTsKKyAgICB2b2lkIG9wZXJhdG9y
PShjb25zdCBEZXRlY3RDYWxsRGVwdGgmKTsKK307CisKKyNlbmRpZiAgLy8gQ09NUElMRVJfREVU
RUNUX1JFQ1VSU0lPTl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAJKHJldmlzaW9uIDE1MjY0OSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyNSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChj
KSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ci0jaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgiCi0KLURldGVjdFJlY3Vyc2lv
bjo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5hbWUpCi0gICAg
OiBuYW1lKGZuYW1lKSwKLSAgICAgIHZpc2l0KFByZVZpc2l0KQotewotfQotCi1jb25zdCBUU3Ry
aW5nJiBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG5hbWU7Ci19Ci0KLXZvaWQgRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGU6
OmFkZENhbGxlZSgKLSAgICBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZSogY2FsbGVlKQot
ewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsraSkgewotICAg
ICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Ci19Ci0KLWJvb2wgRGV0ZWN0UmVjdXJz
aW9uOjpGdW5jdGlvbk5vZGU6OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgQVNTRVJUKHZpc2l0
ID09IFByZVZpc2l0KTsKLSAgICB2aXNpdCA9IEluVmlzaXQ7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN3aXRjaCAoY2FsbGVlc1tp
XS0+dmlzaXQpIHsKLSAgICAgICAgICAgIGNhc2UgSW5WaXNpdDoKLSAgICAgICAgICAgICAgICAv
LyBjeWNsZSBkZXRlY3RlZCwgaS5lLiwgcmVjdXJzaW9uIGRldGVjdGVkLgotICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgY2FzZSBQb3N0VmlzaXQ6Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFByZVZpc2l0OiB7Ci0gICAgICAgICAgICAg
ICAgYm9vbCByZWN1cnNpb24gPSBjYWxsZWVzW2ldLT5kZXRlY3RSZWN1cnNpb24oKTsKLSAgICAg
ICAgICAgICAgICBpZiAocmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICB2aXNpdCA9IFBvc3RWaXNpdDsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RGV0ZWN0UmVjdXJzaW9uKCkKLSAgICA6
IGN1cnJlbnRGdW5jdGlvbihOVUxMKQotewotfQotCi1EZXRlY3RSZWN1cnNpb246On5EZXRlY3RS
ZWN1cnNpb24oKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNpemUo
KTsgKytpKQotICAgICAgICBkZWxldGUgZnVuY3Rpb25zW2ldOwotfQotCi1ib29sIERldGVjdFJl
Y3Vyc2lvbjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqIG5v
ZGUpCi17Ci0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQotICAgIHsKLSAgICAgICAgY2FzZSBF
T3BQcm90b3R5cGU6Ci0gICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4KLSAgICAg
ICAgICAgIC8vIERvbid0IGFkZCBGdW5jdGlvbk5vZGUgaGVyZSBiZWNhdXNlIG5vZGUtPmdldE5h
bWUoKSBpcyB0aGUKLSAgICAgICAgICAgIC8vIHVubWFuZ2xlZCBmdW5jdGlvbiBuYW1lLgotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wRnVuY3Rpb246IHsKLSAgICAgICAgICAg
IC8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCi0gICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlz
aXQpIHsKLSAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24gPSBmaW5kRnVuY3Rpb25CeU5h
bWUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZ1bmN0aW9u
ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uID0gbmV3IEZ1
bmN0aW9uTm9kZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bnMucHVzaF9iYWNrKGN1cnJlbnRGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBFT3BG
dW5jdGlvbkNhbGw6IHsKLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGNhbGwuCi0gICAgICAgICAg
ICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoY3VycmVu
dEZ1bmN0aW9uICE9IE5VTEwpOwotICAgICAgICAgICAgICAgIEZ1bmN0aW9uTm9kZSogZnVuYyA9
IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgIGlm
IChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG5ldyBGdW5jdGlv
bk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLnB1
c2hfYmFjayhmdW5jKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY3VycmVu
dEZ1bmN0aW9uLT5hZGRDYWxsZWUoZnVuYyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1EZXRlY3RSZWN1cnNpb246OkVycm9yQ29kZSBE
ZXRlY3RSZWN1cnNpb246OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgRnVuY3Rpb25Ob2RlKiBt
YWluID0gZmluZEZ1bmN0aW9uQnlOYW1lKCJtYWluKCIpOwotICAgIGlmIChtYWluID09IE5VTEwp
Ci0gICAgICAgIHJldHVybiBrRXJyb3JNaXNzaW5nTWFpbjsKLSAgICBpZiAobWFpbi0+ZGV0ZWN0
UmVjdXJzaW9uKCkpCi0gICAgICAgIHJldHVybiBrRXJyb3JSZWN1cnNpb247Ci0gICAgcmV0dXJu
IGtFcnJvck5vbmU7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlKiBEZXRlY3RS
ZWN1cnNpb246OmZpbmRGdW5jdGlvbkJ5TmFtZSgKLSAgICBjb25zdCBUU3RyaW5nJiBuYW1lKQot
ewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmIChmdW5jdGlvbnNbaV0tPmdldE5hbWUoKSA9PSBuYW1lKQotICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uc1tpXTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0
UmVjdXJzaW9uLmgJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MCAr
MCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIENPTVBJTEVSX0RFVEVDVF9SRUNV
UlNJT05fSF8KLSNkZWZpbmUgQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwotCi0jaW5jbHVk
ZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLSNpbmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlh
dGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9WYXJpYWJsZUluZm8uaCIKLQotLy8gVHJhdmVyc2Vz
IGludGVybWVkaWF0ZSB0cmVlIHRvIGRldGVjdCBmdW5jdGlvbiByZWN1cnNpb24uCi1jbGFzcyBE
ZXRlY3RSZWN1cnNpb24gOiBwdWJsaWMgVEludGVybVRyYXZlcnNlciB7Ci1wdWJsaWM6Ci0gICAg
ZW51bSBFcnJvckNvZGUgewotICAgICAgICBrRXJyb3JNaXNzaW5nTWFpbiwKLSAgICAgICAga0Vy
cm9yUmVjdXJzaW9uLAotICAgICAgICBrRXJyb3JOb25lCi0gICAgfTsKLQotICAgIERldGVjdFJl
Y3Vyc2lvbigpOwotICAgIH5EZXRlY3RSZWN1cnNpb24oKTsKLQotICAgIHZpcnR1YWwgYm9vbCB2
aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopOwotCi0gICAgRXJyb3JDb2Rl
IGRldGVjdFJlY3Vyc2lvbigpOwotCi1wcml2YXRlOgotICAgIGNsYXNzIEZ1bmN0aW9uTm9kZSB7
Ci0gICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5hbWUp
OwotCi0gICAgICAgIGNvbnN0IFRTdHJpbmcmIGdldE5hbWUoKSBjb25zdDsKLQotICAgICAgICAv
LyBJZiBhIGZ1bmN0aW9uIGlzIGFscmVhZHkgaW4gdGhlIGNhbGxlZSBsaXN0LCB0aGlzIGJlY29t
ZXMgYSBuby1vcC4KLSAgICAgICAgdm9pZCBhZGRDYWxsZWUoRnVuY3Rpb25Ob2RlKiBjYWxsZWUp
OwotCi0gICAgICAgIC8vIFJldHVybiB0cnVlIGlmIHJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxscyBh
cmUgZGV0ZWN0ZWQuCi0gICAgICAgIGJvb2wgZGV0ZWN0UmVjdXJzaW9uKCk7Ci0KLSAgICBwcml2
YXRlOgotICAgICAgICAvLyBtYW5nbGVkIGZ1bmN0aW9uIG5hbWUgaXMgdW5pcXVlLgotICAgICAg
ICBUU3RyaW5nIG5hbWU7Ci0KLSAgICAgICAgLy8gZnVuY3Rpb25zIHRoYXQgYXJlIGRpcmVjdGx5
IGNhbGxlZCBieSB0aGlzIGZ1bmN0aW9uLgotICAgICAgICBUVmVjdG9yPEZ1bmN0aW9uTm9kZSo+
IGNhbGxlZXM7Ci0KLSAgICAgICAgVmlzaXQgdmlzaXQ7Ci0gICAgfTsKLQotICAgIEZ1bmN0aW9u
Tm9kZSogZmluZEZ1bmN0aW9uQnlOYW1lKGNvbnN0IFRTdHJpbmcmIG5hbWUpOwotCi0gICAgVFZl
Y3RvcjxGdW5jdGlvbk5vZGUqPiBmdW5jdGlvbnM7Ci0gICAgRnVuY3Rpb25Ob2RlKiBjdXJyZW50
RnVuY3Rpb247Ci19OwotCi0jZW5kaWYgIC8vIENPTVBJTEVSX0RFVEVDVF9SRUNVUlNJT05fSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGljcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Rp
YWdub3N0aWNzLmNwcAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCB2b2lkIFREaWFnbm9zdGljczo6d3JpdGVJbmZvKFNldmVyaXR5IHNlCiAgICAgVElu
Zm9TaW5rQmFzZSYgc2luayA9IG1JbmZvU2luay5pbmZvOwogICAgIC8qIFZDKysgZm9ybWF0OiBm
aWxlKGxpbmVudW0pIDogZXJyb3IgIzogJ3Rva2VuJyA6IGV4dHJhaW5mbyAqLwogICAgIHNpbmsu
cHJlZml4KHByZWZpeCk7Ci0gICAgc2luay5sb2NhdGlvbihFbmNvZGVTb3VyY2VMb2MobG9jLmZp
bGUsIGxvYy5saW5lKSk7CisgICAgc2luay5sb2NhdGlvbihsb2MuZmlsZSwgbG9jLmxpbmUpOwog
ICAgIHNpbmsgPDwgIiciIDw8IHRva2VuIDw8ICAiJyA6ICIgPDwgcmVhc29uIDw8ICIgIiA8PCBl
eHRyYSA8PCAiXG4iOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvRm9yTG9vcFVucm9sbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgogLy8KQEAgLTIxMCw2ICsyMTAsNiBAQCBpbnQgRm9yTG9vcFVucm9sbDo6Z2V0TG9v
cEluY3JlbWVudChUSW50CiBpbnQgRm9yTG9vcFVucm9sbDo6ZXZhbHVhdGVJbnRDb25zdGFudChU
SW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsKICAgICBBU1NFUlQoKG5vZGUgIT0gTlVMTCkg
JiYgKG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCkgIT0gTlVMTCkpOwotICAgIHJldHVybiBu
b2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAgICByZXR1cm4gbm9k
ZS0+Z2V0SUNvbnN0KDApOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvSW5mb1NpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYsOCArNiw4IEBACiAKICNpbmNsdWRlICJjb21waWxlci9JbmZvU2luay5oIgogCi12
b2lkIFRJbmZvU2lua0Jhc2U6OnByZWZpeChUUHJlZml4VHlwZSBtZXNzYWdlKSB7Ci0gICAgc3dp
dGNoKG1lc3NhZ2UpIHsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6cHJlZml4KFRQcmVmaXhUeXBlIHAp
IHsKKyAgICBzd2l0Y2gocCkgewogICAgICAgICBjYXNlIEVQcmVmaXhOb25lOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRVByZWZpeFdhcm5pbmc6CkBAIC0zMSwyOSArMzEsMjQg
QEAgdm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoVFByZWZpeFR5cGUgbQogICAgIH0KIH0KIAot
dm9pZCBUSW5mb1NpbmtCYXNlOjpsb2NhdGlvbihUU291cmNlTG9jIGxvYykgewotICAgIGludCBz
dHJpbmcgPSAwLCBsaW5lID0gMDsKLSAgICBEZWNvZGVTb3VyY2VMb2MobG9jLCAmc3RyaW5nLCAm
bGluZSk7Ci0KK3ZvaWQgVEluZm9TaW5rQmFzZTo6bG9jYXRpb24oaW50IGZpbGUsIGludCBsaW5l
KSB7CiAgICAgVFBlcnNpc3RTdHJpbmdTdHJlYW0gc3RyZWFtOwogICAgIGlmIChsaW5lKQotICAg
ICAgICBzdHJlYW0gPDwgc3RyaW5nIDw8ICI6IiA8PCBsaW5lOworICAgICAgICBzdHJlYW0gPDwg
ZmlsZSA8PCAiOiIgPDwgbGluZTsKICAgICBlbHNlCi0gICAgICAgIHN0cmVhbSA8PCBzdHJpbmcg
PDwgIjo/ICI7CisgICAgICAgIHN0cmVhbSA8PCBmaWxlIDw8ICI6PyAiOwogICAgIHN0cmVhbSA8
PCAiOiAiOwogCiAgICAgc2luay5hcHBlbmQoc3RyZWFtLnN0cigpKTsKIH0KIAotdm9pZCBUSW5m
b1NpbmtCYXNlOjptZXNzYWdlKFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMpIHsK
LSAgICBwcmVmaXgobWVzc2FnZSk7Ci0gICAgc2luay5hcHBlbmQocyk7Ci0gICAgc2luay5hcHBl
bmQoIlxuIik7Cit2b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9uKGNvbnN0IFRTb3VyY2VMb2Mm
IGxvYykgeworICAgIGxvY2F0aW9uKGxvYy5maXJzdF9maWxlLCBsb2MuZmlyc3RfbGluZSk7CiB9
CiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBtZXNzYWdlLCBjb25z
dCBjaGFyKiBzLCBUU291cmNlTG9jIGxvYykgewotICAgIHByZWZpeChtZXNzYWdlKTsKK3ZvaWQg
VEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291cmNlTG9jJiBs
b2MsIGNvbnN0IGNoYXIqIG0pIHsKKyAgICBwcmVmaXgocCk7CiAgICAgbG9jYXRpb24obG9jKTsK
LSAgICBzaW5rLmFwcGVuZChzKTsKKyAgICBzaW5rLmFwcGVuZChtKTsKICAgICBzaW5rLmFwcGVu
ZCgiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9J
bmZvU2luay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9JbmZvU2luay5oCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTAgKzk2
LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBUUGVyc2lzdFN0cmluZyYgc3RyKCkgY29uc3QgeyBy
ZXR1cm4gc2luazsgfQogICAgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29uc3QgeyByZXR1cm4gc2lu
ay5jX3N0cigpOyB9CiAKLSAgICB2b2lkIHByZWZpeChUUHJlZml4VHlwZSBtZXNzYWdlKTsKLSAg
ICB2b2lkIGxvY2F0aW9uKFRTb3VyY2VMb2MgbG9jKTsKLSAgICB2b2lkIG1lc3NhZ2UoVFByZWZp
eFR5cGUgbWVzc2FnZSwgY29uc3QgY2hhciogcyk7Ci0gICAgdm9pZCBtZXNzYWdlKFRQcmVmaXhU
eXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMsIFRTb3VyY2VMb2MgbG9jKTsKKyAgICB2b2lkIHBy
ZWZpeChUUHJlZml4VHlwZSBwKTsKKyAgICB2b2lkIGxvY2F0aW9uKGludCBmaWxlLCBpbnQgbGlu
ZSk7CisgICAgdm9pZCBsb2NhdGlvbihjb25zdCBUU291cmNlTG9jJiBsb2MpOworICAgIHZvaWQg
bWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0IGNoYXIq
IG0pOwogCiBwcml2YXRlOgogICAgIFRQZXJzaXN0U3RyaW5nIHNpbms7CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwCShy
ZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
SW5pdGlhbGl6ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2LDM3MyArMTYsNiBAQAogCiAvLz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KIC8vCi0vLyBQcm90b3R5cGVzIGZvciBidWlsdC1pbiBmdW5jdGlv
bnMgc2VlbiBieSBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycy4KLS8vCi0vLz09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLXN0YXRpYyBUU3RyaW5nIEJ1aWx0SW5GdW5jdGlvbnNDb21tb24oY29u
c3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCi17Ci0gICAgVFN0cmluZyBzOwotCi0g
ICAgLy8KLSAgICAvLyBBbmdsZSBhbmQgVHJpZ29ub21ldHJpYyBGdW5jdGlvbnMuCi0gICAgLy8K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCByYWRpYW5zKGZsb2F0IGRlZ3JlZXMpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICByYWRpYW5zKHZlYzIgIGRlZ3JlZXMpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICByYWRpYW5zKHZlYzMgIGRlZ3JlZXMpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByYWRpYW5zKHZlYzQgIGRlZ3JlZXMpOyIpKTsK
LQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRlZ3JlZXMoZmxvYXQgcmFkaWFucyk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGRlZ3JlZXModmVjMiAgcmFkaWFucyk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGRlZ3JlZXModmVjMyAgcmFkaWFucyk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGRlZ3JlZXModmVjNCAgcmFkaWFucyk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc2luKGZsb2F0IGFuZ2xlKTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2luKHZlYzIgIGFuZ2xlKTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMyAgc2luKHZlYzMgIGFuZ2xlKTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgc2luKHZlYzQgIGFuZ2xlKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBjb3MoZmxvYXQgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMyICBjb3ModmVjMiAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBj
b3ModmVjMyAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBjb3ModmVj
NCAgYW5nbGUpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHRhbihmbG9hdCBh
bmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHRhbih2ZWMyICBhbmdsZSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHRhbih2ZWMzICBhbmdsZSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHRhbih2ZWM0ICBhbmdsZSk7IikpOwotCi0gICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYXNpbihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMiAgYXNpbih2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgYXNpbih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgYXNp
bih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhY29zKGZsb2F0
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhY29zKHZlYzIgIHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhY29zKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0ICBhY29zKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImZsb2F0IGF0YW4oZmxvYXQgeSwgZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeSwgdmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzMgIGF0YW4odmVjMyAgeSwgdmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzQgIGF0YW4odmVjNCAgeSwgdmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQo
VFN0cmluZygiZmxvYXQgYXRhbihmbG9hdCB5X292ZXJfeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeV9vdmVyX3gpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMzICBhdGFuKHZlYzMgIHlfb3Zlcl94KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCAgYXRhbih2ZWM0ICB5X292ZXJfeCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBFeHBv
bmVudGlhbCBGdW5jdGlvbnMuCi0gICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBw
b3coZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHBv
dyh2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcG93
KHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBwb3co
dmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZXhw
KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAodmVjMiAgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGV4cCh2ZWMzICB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCAgZXhwKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IGxvZyhmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMiAgbG9nKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBsb2co
dmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZyh2ZWM0ICB4KTsi
KSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBleHAyKGZsb2F0IHgpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAyKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMzICBleHAyKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWM0ICBleHAyKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0
IGxvZzIoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGxvZzIodmVj
MiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGxvZzIodmVjMyAgeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZzIodmVjNCAgeCk7IikpOwotCi0gICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc3FydChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMiAgc3FydCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgc3FydCh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc3Fy
dCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBpbnZlcnNlc3Fy
dChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgaW52ZXJzZXNxcnQo
dmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGludmVyc2VzcXJ0KHZl
YzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBpbnZlcnNlc3FydCh2ZWM0
ICB4KTsiKSk7Ci0KLSAgICAvLwotICAgIC8vIENvbW1vbiBGdW5jdGlvbnMuCi0gICAgLy8KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhYnMoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzIgIGFicyh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgYWJzKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhYnMo
dmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc2lnbihmbG9hdCB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc2lnbih2ZWMyICB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc2lnbih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgc2lnbih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBmbG9vcihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MiAgZmxvb3IodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGZsb29y
KHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBmbG9vcih2ZWM0ICB4
KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBjZWlsKGZsb2F0IHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBjZWlsKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMzICBjZWlsKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICBjZWlsKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZs
b2F0IGZyYWN0KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBmcmFj
dCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZnJhY3QodmVjMyAg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGZyYWN0KHZlYzQgIHgpOyIpKTsK
LQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG1vZChmbG9hdCB4LCBmbG9hdCB5KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbW9kKHZlYzIgIHgsIGZsb2F0IHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtb2QodmVjMyAgeCwgZmxvYXQgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2ZWM0ICB4LCBmbG9hdCB5KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbW9kKHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtb2QodmVjMyAgeCwgdmVjMyAgeSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1vZCh2ZWM0ICB4LCB2ZWM0ICB5KTsiKSk7Ci0KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtaW4oZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1pbih2ZWMyICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4odmVjNCAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIG1pbih2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMyAgbWluKHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4odmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgbWF4KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzMgIG1heCh2ZWMzICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgbWF4KHZlYzQgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzMgIG1heCh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgbWF4KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IGNsYW1wKGZsb2F0IHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4VmFs
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2xhbXAodmVjMiAgeCwgZmxvYXQg
bWluVmFsLCBmbG9hdCBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBj
bGFtcCh2ZWMzICB4LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4
VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2xhbXAodmVjMiAgeCwgdmVj
MiAgbWluVmFsLCB2ZWMyICBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
ICBjbGFtcCh2ZWMzICB4LCB2ZWMzICBtaW5WYWwsIHZlYzMgIG1heFZhbCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1wKHZlYzQgIHgsIHZlYzQgIG1pblZhbCwgdmVjNCAg
bWF4VmFsKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtaXgoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgYSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1peCh2
ZWMyICB4LCB2ZWMyICB5LCBmbG9hdCBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgbWl4KHZlYzMgIHgsIHZlYzMgIHksIGZsb2F0IGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwgdmVjNCAgeSwgZmxvYXQgYSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzIgIG1peCh2ZWMyICB4LCB2ZWMyICB5LCB2ZWMyICBhKTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWl4KHZlYzMgIHgsIHZlYzMgIHksIHZlYzMgIGEp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwgdmVjNCAgeSwg
dmVjNCAgYSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc3RlcChmbG9hdCBl
ZGdlLCBmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc3RlcCh2ZWMy
ICBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc3RlcCh2
ZWMzICBlZGdlLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc3Rl
cCh2ZWM0ICBlZGdlLCB2ZWM0ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAg
c3RlcChmbG9hdCBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgc3RlcChmbG9hdCBlZGdlLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgc3RlcChmbG9hdCBlZGdlLCB2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgZmxvYXQgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNtb290aHN0ZXAodmVjMiAgZWRnZTAs
IHZlYzIgIGVkZ2UxLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAg
c21vb3Roc3RlcCh2ZWMzICBlZGdlMCwgdmVjMyAgZWRnZTEsIHZlYzMgIHgpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKHZlYzQgIGVkZ2UwLCB2ZWM0ICBlZGdl
MSwgdmVjNCAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNtb290aHN0ZXAo
ZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMyAgc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIHZlYzMgIHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKGZsb2F0IGVkZ2Uw
LCBmbG9hdCBlZGdlMSwgdmVjNCAgeCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBHZW9tZXRyaWMg
RnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKGZs
b2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsZW5ndGgodmVjMiAgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2ZWMzICB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKHZlYzQgIHgpOyIpKTsKLQotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKGZsb2F0IHAwLCBmbG9hdCBwMSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzIgIHAwLCB2ZWMyICBwMSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzMgIHAwLCB2ZWMz
ICBwMSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzQgIHAw
LCB2ZWM0ICBwMSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KGZsb2F0
IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkb3QodmVjMiAg
eCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRvdCh2ZWMzICB4
LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KHZlYzQgIHgs
IHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgY3Jvc3ModmVjMyB4
LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub3JtYWxpemUoZmxv
YXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG5vcm1hbGl6ZSh2ZWMyICB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbm9ybWFsaXplKHZlYzMgIHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBub3JtYWxpemUodmVjNCAgeCk7IikpOwot
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZmFjZWZvcndhcmQoZmxvYXQgTiwgZmxvYXQg
SSwgZmxvYXQgTnJlZik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGZhY2Vmb3J3
YXJkKHZlYzIgIE4sIHZlYzIgIEksIHZlYzIgIE5yZWYpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMzICBmYWNlZm9yd2FyZCh2ZWMzICBOLCB2ZWMzICBJLCB2ZWMzICBOcmVmKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZmFjZWZvcndhcmQodmVjNCAgTiwgdmVjNCAg
SSwgdmVjNCAgTnJlZik7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgcmVmbGVj
dChmbG9hdCBJLCBmbG9hdCBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgcmVm
bGVjdCh2ZWMyICBJLCB2ZWMyICBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAg
cmVmbGVjdCh2ZWMzICBJLCB2ZWMzICBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
NCAgcmVmbGVjdCh2ZWM0ICBJLCB2ZWM0ICBOKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJmbG9hdCByZWZyYWN0KGZsb2F0IEksIGZsb2F0IE4sIGZsb2F0IGV0YSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIHJlZnJhY3QodmVjMiAgSSwgdmVjMiAgTiwgZmxvYXQgZXRh
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcmVmcmFjdCh2ZWMzICBJLCB2ZWMz
ICBOLCBmbG9hdCBldGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByZWZyYWN0
KHZlYzQgIEksIHZlYzQgIE4sIGZsb2F0IGV0YSk7IikpOwotCi0gICAgLy8KLSAgICAvLyBNYXRy
aXggRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygibWF0MiBtYXRyaXhD
b21wTXVsdChtYXQyIHgsIG1hdDIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoIm1hdDMg
bWF0cml4Q29tcE11bHQobWF0MyB4LCBtYXQzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJtYXQ0IG1hdHJpeENvbXBNdWx0KG1hdDQgeCwgbWF0NCB5KTsiKSk7Ci0KLSAgICAvLwotICAg
IC8vIFZlY3RvciByZWxhdGlvbmFsIGZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImJ2ZWMyIGxlc3NUaGFuKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygiYnZlYzMgbGVzc1RoYW4odmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbih2ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0gICAgcy5h
cHBlbmQoVFN0cmluZygiYnZlYzIgbGVzc1RoYW4oaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuKGl2ZWMzIHgsIGl2ZWMzIHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbihpdmVjNCB4LCBpdmVjNCB5KTsi
KSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbkVxdWFsKHZlYzIgeCwg
dmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbGVzc1RoYW5FcXVhbCh2
ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NUaGFu
RXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMy
IGxlc3NUaGFuRXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJ2ZWMzIGxlc3NUaGFuRXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NUaGFuRXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwot
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW4odmVjMiB4LCB2ZWMyIHkp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbih2ZWMzIHgsIHZl
YzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFuKHZlYzQg
eCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBncmVhdGVyVGhh
bihpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZ3Jl
YXRlclRoYW4oaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWM0IGdyZWF0ZXJUaGFuKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImJ2ZWMyIGdyZWF0ZXJUaGFuRXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbkVxdWFsKHZlYzMgeCwgdmVjMyB5KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVhbCh2ZWM0IHgs
IHZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW5F
cXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMg
Z3JlYXRlclRoYW5FcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVhbChpdmVjNCB4LCBpdmVjNCB5KTsiKSk7Ci0KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBlcXVhbCh2ZWMyIHgsIHZlYzIgeSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGVxdWFsKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBlcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwot
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKGJ2ZWMzIHgsIGJ2ZWMzIHkpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBlcXVhbChidmVjNCB4LCBidmVjNCB5KTsi
KSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBub3RFcXVhbCh2ZWMyIHgsIHZlYzIg
eSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5vdEVxdWFsKHZlYzMgeCwgdmVj
MyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1YWwodmVjNCB4LCB2
ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdEVxdWFsKGl2ZWMy
IHgsIGl2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBub3RFcXVhbChp
dmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1
YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIg
bm90RXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWMzIG5vdEVxdWFsKGJ2ZWMzIHgsIGJ2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJidmVjNCBub3RFcXVhbChidmVjNCB4LCBidmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJib29sIGFueShidmVjMiB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYm9v
bCBhbnkoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYW55KGJ2ZWM0
IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYWxsKGJ2ZWMyIHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFsbChidmVjMyB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygiYm9vbCBhbGwoYnZlYzQgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiYnZlYzIgbm90KGJ2ZWMyIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBu
b3QoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IG5vdChidmVjNCB4
KTsiKSk7Ci0KLSAgICAvLwotICAgIC8vIFRleHR1cmUgRnVuY3Rpb25zLgotICAgIC8vCi0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkQoc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzIg
Y29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2Ft
cGxlcjJEIHNhbXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzQgY29vcmQpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmVDdWJlKHNhbXBsZXJDdWJlIHNhbXBsZXIs
IHZlYzMgY29vcmQpOyIpKTsKLQotICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRl
cm5hbCkgewotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRChzYW1wbGVy
RXh0ZXJuYWxPRVMgc2FtcGxlciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlckV4dGVybmFsT0VTIHNhbXBsZXIsIHZl
YzMgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQ
cm9qKHNhbXBsZXJFeHRlcm5hbE9FUyBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7Ci0gICAgfQot
Ci0gICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKLSAgICAgICAgcy5h
cHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRSZWN0KHNhbXBsZXIyRFJlY3Qgc2FtcGxlciwg
dmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUy
RFJlY3RQcm9qKHNhbXBsZXIyRFJlY3Qgc2FtcGxlciwgdmVjMyBjb29yZCk7IikpOwotICAgICAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFJlY3RQcm9qKHNhbXBsZXIyRFJlY3Qg
c2FtcGxlciwgdmVjNCBjb29yZCk7IikpOwotICAgIH0KLQotICAgIC8vCi0gICAgLy8gTm9pc2Ug
ZnVuY3Rpb25zLgotICAgIC8vCi0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lzZTEo
ZmxvYXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbm9pc2UxKHZlYzIg
IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG5vaXNlMSh2ZWMzICB4KTsi
KSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lzZTEodmVjNCAgeCk7IikpOwot
Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMihmbG9hdCB4KTsiKSk7Ci0gICAg
Ly9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWMyICB4KTsiKSk7Ci0gICAgLy9zLmFw
cGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChU
U3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWM0ICB4KTsiKSk7Ci0KLSAgICAvL3MuYXBwZW5kKFRTdHJp
bmcoInZlYzMgbm9pc2UzKGZsb2F0IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZl
YzMgbm9pc2UzKHZlYzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9p
c2UzKHZlYzMgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKHZl
YzQgIHgpOyIpKTsKLQotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQoZmxvYXQg
eCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjMiAgeCk7Iikp
OwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjMyAgeCk7IikpOwotICAg
IC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjNCAgeCk7IikpOwotCi0gICAgcmV0
dXJuIHM7Ci19Ci0KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFByb3RvdHlwZXMgZm9y
IGJ1aWx0LWluIGZ1bmN0aW9ucyBzZWVuIGJ5IHZlcnRleCBzaGFkZXJzIG9ubHkuCi0vLwotLy89
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBCdWlsdEluRnVuY3Rpb25zVmVydGV4
KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQotewotICAgIFRTdHJpbmcgczsK
LQotICAgIC8vCi0gICAgLy8gR2VvbWV0cmljIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIC8vcy5h
cHBlbmQoVFN0cmluZygidmVjNCBmdHJhbnNmb3JtKCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBU
ZXh0dXJlIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4
dHVyZTJETG9kKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMyIGNvb3JkLCBmbG9hdCBsb2QpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHNh
bXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0IGxvZCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzQgdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVjNCBjb29yZCwgZmxv
YXQgbG9kKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlQ3ViZUxvZChz
YW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBsb2QpOyIpKTsKLQotICAgIHJl
dHVybiBzOwotfQotCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCiAvLyBQcm90b3R5cGVzIGZv
ciBidWlsdC1pbiBmdW5jdGlvbnMgc2VlbiBieSBmcmFnbWVudCBzaGFkZXJzIG9ubHkuCiAvLwog
Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CkBAIC01MDAsMTUgKzEzMywxMiBAQCB2b2lkIFRCdWlsdElu
czo6aW5pdGlhbGl6ZShTaFNoYWRlclR5cGUgCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2Fz
ZSBTSF9GUkFHTUVOVF9TSEFERVI6CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhE
ZWZhdWx0UHJlY2lzaW9uRnJhZ21lbnQoKSk7Ci0gICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hf
YmFjayhCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNlcykpOwogICAgICAgICBidWlsdElu
U3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc0ZyYWdtZW50KHJlc291cmNlcykpOwog
ICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soU3RhbmRhcmRVbmlmb3JtcygpKTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNIX1ZFUlRFWF9TSEFERVI6CiAgICAgICAgIGJ1aWx0
SW5TdHJpbmdzLnB1c2hfYmFjayhEZWZhdWx0UHJlY2lzaW9uVmVydGV4KCkpOwotICAgICAgICBi
dWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc0NvbW1vbihyZXNvdXJjZXMp
KTsKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1aWx0SW5GdW5jdGlvbnNWZXJ0
ZXgocmVzb3VyY2VzKSk7CiAgICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhTdGFuZGFy
ZFVuaWZvcm1zKCkpOwogICAgICAgICBicmVhazsKIApAQCAtNTM5LDYgKzE2OSwxMCBAQCB2b2lk
IElkZW50aWZ5QnVpbHRJbnMoU2hTaGFkZXJUeXBlIHR5cGUsCiAgICAgICAgIGlmIChzcGVjICE9
IFNIX0NTU19TSEFERVJTX1NQRUMpIHsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgq
bmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJhZ0NvbG9yIiksICAgICAgICAgICAg
ICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUZyYWdDb2xvciwgICA0KSkpOwog
ICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3Ry
aW5nKCJnbF9GcmFnRGF0YVtnbF9NYXhEcmF3QnVmZmVyc10iKSwgVFR5cGUoRWJ0RmxvYXQsIEVi
cE1lZGl1bSwgRXZxRnJhZ0RhdGEsICAgIDQpKSk7CisgICAgICAgICAgICBpZiAocmVzb3VyY2Vz
LkVYVF9mcmFnX2RlcHRoKSB7CisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpu
ZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGVwdGhFWFQiKSwgICAgICAgICAg
ICBUVHlwZShFYnRGbG9hdCwgcmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA/IEVicEhp
Z2ggOiBFYnBNZWRpdW0sIEV2cUZyYWdEZXB0aCwgMSkpKTsKKyAgICAgICAgICAgICAgICBzeW1i
b2xUYWJsZS5yZWxhdGVUb0V4dGVuc2lvbigiZ2xfRnJhZ0RlcHRoRVhUIiwgIkdMX0VYVF9mcmFn
X2RlcHRoIik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBz
eW1ib2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImNzc19NaXhD
b2xvciIpLCAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFH
bG9iYWwsICAgICAgNCkpKTsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRW
YXJpYWJsZShOZXdQb29sVFN0cmluZygiY3NzX0NvbG9yTWF0cml4IiksICAgICAgICAgICAgICAg
IFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUdsb2JhbCwgICAgICA0LCB0cnVlKSkpOwpA
QCAtNjU2LDQgKzI5MCw2IEBAIHZvaWQgSW5pdEV4dGVuc2lvbkJlaGF2aW9yKGNvbnN0IFNoQnVp
bHQKICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSJdID0gRUJo
VW5kZWZpbmVkOwogICAgIGlmIChyZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycykKICAgICAgICAg
ZXh0QmVoYXZpb3JbIkdMX0VYVF9kcmF3X2J1ZmZlcnMiXSA9IEVCaFVuZGVmaW5lZDsKKyAgICBp
ZiAocmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoKQorICAgICAgICBleHRCZWhhdmlvclsiR0xfRVhU
X2ZyYWdfZGVwdGgiXSA9IEVCaFVuZGVmaW5lZDsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwCShyZXZpc2lv
biAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJt
ZWRpYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmln
aHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTMxLDcgKzEzMSw3IEBAIGNvbnN0IGNoYXIqIGdl
dE9wZXJhdG9yU3RyaW5nKFRPcGVyYXRvciAKIC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2Rl
LgogLy8KLVRJbnRlcm1TeW1ib2wqIFRJbnRlcm1lZGlhdGU6OmFkZFN5bWJvbChpbnQgaWQsIGNv
bnN0IFRTdHJpbmcmIG5hbWUsIGNvbnN0IFRUeXBlJiB0eXBlLCBUU291cmNlTG9jIGxpbmUpCitU
SW50ZXJtU3ltYm9sKiBUSW50ZXJtZWRpYXRlOjphZGRTeW1ib2woaW50IGlkLCBjb25zdCBUU3Ry
aW5nJiBuYW1lLCBjb25zdCBUVHlwZSYgdHlwZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsK
ICAgICBUSW50ZXJtU3ltYm9sKiBub2RlID0gbmV3IFRJbnRlcm1TeW1ib2woaWQsIG5hbWUsIHR5
cGUpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgVEludGVy
bVN5bWJvbCogVEludGVybWVkaWF0ZTo6YWRkU3ltYm9sKAogLy8KIC8vIFJldHVybnMgdGhlIGFk
ZGVkIG5vZGUuCiAvLwotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYXRo
KFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBU
U291cmNlTG9jIGxpbmUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCitUSW50ZXJtVHlwZWQq
IFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQq
IGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTeW1i
b2xUYWJsZSYgc3ltYm9sVGFibGUpCiB7CiAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNl
IEVPcEVxdWFsOgpAQCAtMjAwLDggKzIwMCw2IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0
ZTo6YWRkQmluYXJ5TWEKICAgICAvLyBvbmUgYW5kIHByb21vdGUgaXQgdG8gdGhlIHJpZ2h0IHR5
cGUuCiAgICAgLy8KICAgICBUSW50ZXJtQmluYXJ5KiBub2RlID0gbmV3IFRJbnRlcm1CaW5hcnko
b3ApOwotICAgIGlmIChsaW5lID09IDApCi0gICAgICAgIGxpbmUgPSByaWdodC0+Z2V0TGluZSgp
OwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CiAKICAgICBub2RlLT5zZXRMZWZ0KGxlZnQpOwpA
QCAtMjMwLDE1ICsyMjgsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRCaW5h
cnlNYQogLy8KIC8vIFJldHVybnMgdGhlIGFkZGVkIG5vZGUuCiAvLwotVEludGVybVR5cGVkKiBU
SW50ZXJtZWRpYXRlOjphZGRBc3NpZ24oVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQs
IFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVElu
dGVybWVkaWF0ZTo6YWRkQXNzaWduKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBU
SW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIC8vCiAg
ICAgLy8gTGlrZSBhZGRpbmcgYmluYXJ5IG1hdGgsIGV4Y2VwdCB0aGUgY29udmVyc2lvbiBjYW4g
b25seSBnbwogICAgIC8vIGZyb20gcmlnaHQgdG8gbGVmdC4KICAgICAvLwogICAgIFRJbnRlcm1C
aW5hcnkqIG5vZGUgPSBuZXcgVEludGVybUJpbmFyeShvcCk7Ci0gICAgaWYgKGxpbmUgPT0gMCkK
LSAgICAgICAgbGluZSA9IGxlZnQtPmdldExpbmUoKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUp
OwogCiAgICAgVEludGVybVR5cGVkKiBjaGlsZCA9IGFkZENvbnZlcnNpb24ob3AsIGxlZnQtPmdl
dFR5cGUoKSwgcmlnaHQpOwpAQCAtMjYwLDExICsyNTYsOSBAQCBUSW50ZXJtVHlwZWQqIFRJbnRl
cm1lZGlhdGU6OmFkZEFzc2lnbihUCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8gVGhl
IGNhbGxlciBzaG91bGQgc2V0IHRoZSB0eXBlIG9mIHRoZSByZXR1cm5lZCBub2RlLgogLy8KLVRJ
bnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkSW5kZXgoVE9wZXJhdG9yIG9wLCBUSW50ZXJt
VHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRl
cm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkSW5kZXgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlw
ZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7
CiAgICAgVEludGVybUJpbmFyeSogbm9kZSA9IG5ldyBUSW50ZXJtQmluYXJ5KG9wKTsKLSAgICBp
ZiAobGluZSA9PSAwKQotICAgICAgICBsaW5lID0gaW5kZXgtPmdldExpbmUoKTsKICAgICBub2Rl
LT5zZXRMaW5lKGxpbmUpOwogICAgIG5vZGUtPnNldExlZnQoYmFzZSk7CiAgICAgbm9kZS0+c2V0
UmlnaHQoaW5kZXgpOwpAQCAtMjc5LDEzICsyNzMsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJt
ZWRpYXRlOjphZGRJbmRleChUTwogLy8KIC8vIFJldHVybnMgdGhlIGFkZGVkIG5vZGUuCiAvLwot
VEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBU
SW50ZXJtTm9kZSogY2hpbGROb2RlLCBUU291cmNlTG9jIGxpbmUsIFRTeW1ib2xUYWJsZSYgc3lt
Ym9sVGFibGUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0aChUT3Bl
cmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBjaGlsZE5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUs
IFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCiB7CiAgICAgVEludGVybVVuYXJ5KiBub2RlOwog
ICAgIFRJbnRlcm1UeXBlZCogY2hpbGQgPSBjaGlsZE5vZGUtPmdldEFzVHlwZWQoKTsKIAogICAg
IGlmIChjaGlsZCA9PSAwKSB7Ci0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgIkJhZCB0eXBlIGluIEFkZFVuYXJ5TWF0aCIsIGxpbmUpOworICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGxpbmUsICJCYWQg
dHlwZSBpbiBBZGRVbmFyeU1hdGgiKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0z
NDgsOCArMzQyLDYgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdAog
ICAgIC8vIE1ha2UgYSBuZXcgbm9kZSBmb3IgdGhlIG9wZXJhdG9yLgogICAgIC8vCiAgICAgbm9k
ZSA9IG5ldyBUSW50ZXJtVW5hcnkob3ApOwotICAgIGlmIChsaW5lID09IDApCi0gICAgICAgIGxp
bmUgPSBjaGlsZC0+Z2V0TGluZSgpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CiAgICAgbm9k
ZS0+c2V0T3BlcmFuZChjaGlsZCk7CiAKQEAgLTM3Niw3ICszNjgsNyBAQCBUSW50ZXJtVHlwZWQq
IFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0CiAvLyBSZXR1cm5zIGFuIGFnZ3JlZ2F0ZSBub2Rl
LCB3aGljaCBjb3VsZCBiZSB0aGUgb25lIHBhc3NlZCBpbiBpZgogLy8gaXQgd2FzIGFscmVhZHkg
YW4gYWdncmVnYXRlIGJ1dCBubyBvcGVyYXRvciB3YXMgc2V0LgogLy8KLVRJbnRlcm1BZ2dyZWdh
dGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKFRJbnRlcm1Ob2RlKiBub2Rl
LCBUT3BlcmF0b3Igb3AsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1BZ2dyZWdhdGUqIFRJbnRl
cm1lZGlhdGU6OnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKFRJbnRlcm1Ob2RlKiBub2RlLCBUT3BlcmF0
b3Igb3AsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybUFnZ3JlZ2F0ZSog
YWdnTm9kZTsKIApAQCAtMzkxLDggKzM4Myw2IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1l
ZGlhdGU6OnNldEFnZ3IKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBhZ2dOb2RlID0gbmV3
IFRJbnRlcm1BZ2dyZWdhdGUoKTsKICAgICAgICAgICAgIGFnZ05vZGUtPmdldFNlcXVlbmNlKCku
cHVzaF9iYWNrKG5vZGUpOwotICAgICAgICAgICAgaWYgKGxpbmUgPT0gMCkKLSAgICAgICAgICAg
ICAgICBsaW5lID0gbm9kZS0+Z2V0TGluZSgpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAg
ICAgIGFnZ05vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZSgpOwpAQCAtNDAxLDggKzM5MSw3IEBA
IFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3IKICAgICAvLyBTZXQgdGhl
IG9wZXJhdG9yLgogICAgIC8vCiAgICAgYWdnTm9kZS0+c2V0T3Aob3ApOwotICAgIGlmIChsaW5l
ICE9IDApCi0gICAgICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CisgICAgYWdnTm9kZS0+c2V0
TGluZShsaW5lKTsKIAogICAgIHJldHVybiBhZ2dOb2RlOwogfQpAQCAtNDkxLDcgKzQ4MCw3IEBA
IFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQ29udmVyc2kKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRJbnQ6ICAgbmV3T3AgPSBFT3BDb252SW50VG9GbG9hdDsgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6ICBuZXdPcCA9IEVPcENvbnZCb29sVG9G
bG9hdDsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJC
YWQgcHJvbW90aW9uIG5vZGUiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5n
ZXRMaW5lKCksICJCYWQgcHJvbW90aW9uIG5vZGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTUwMCw3ICs0ODksNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNp
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OiAgIG5ld09wID0gRU9wQ29udkludFRv
Qm9vbDsgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDogbmV3T3Ag
PSBFT3BDb252RmxvYXRUb0Jvb2w7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlvbiBub2RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFkIHByb21vdGlvbiBub2RlIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC01MDksMTIgKzQ5OCwxMiBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1l
ZGlhdGU6OmFkZENvbnZlcnNpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDogICBu
ZXdPcCA9IEVPcENvbnZCb29sVG9JbnQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBFYnRGbG9hdDogIG5ld09wID0gRU9wQ29udkZsb2F0VG9JbnQ7IGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlvbiBub2RlIiwgbm9k
ZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFkIHByb21vdGlv
biBub2RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwg
IkJhZCBwcm9tb3Rpb24gdHlwZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5l
KCksICJCYWQgcHJvbW90aW9uIHR5cGUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgfQogCkBAIC01MzQsNyArNTIzLDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRl
OjphZGRDb252ZXJzaQogLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIGFnZ3JlZ2F0ZSwgdW5sZXNz
IDAgd2FzIHBhc3NlZCBpbiBmb3IKIC8vIGJvdGggZXhpc3Rpbmcgbm9kZXMuCiAvLwotVEludGVy
bUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVm
dCwgVEludGVybU5vZGUqIHJpZ2h0LCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtQWdncmVnYXRl
KiBUSW50ZXJtZWRpYXRlOjpncm93QWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBsZWZ0LCBUSW50ZXJt
Tm9kZSogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgaWYgKGxlZnQgPT0g
MCAmJiByaWdodCA9PSAwKQogICAgICAgICByZXR1cm4gMDsKQEAgLTU1MSw4ICs1NDAsNyBAQCBU
SW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpncm93QWdnCiAgICAgaWYgKHJpZ2h0KQog
ICAgICAgICBhZ2dOb2RlLT5nZXRTZXF1ZW5jZSgpLnB1c2hfYmFjayhyaWdodCk7CiAKLSAgICBp
ZiAobGluZSAhPSAwKQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOworICAgIGFnZ05v
ZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1cm4gYWdnTm9kZTsKIH0KQEAgLTU2MiwxOCAr
NTUwLDE0IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2cKIC8vCiAv
LyBSZXR1cm5zIGFuIGFnZ3JlZ2F0ZSwgdW5sZXNzIDAgd2FzIHBhc3NlZCBpbiBmb3IgdGhlIGV4
aXN0aW5nIG5vZGUuCiAvLwotVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6bWFrZUFn
Z3JlZ2F0ZShUSW50ZXJtTm9kZSogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybUFnZ3Jl
Z2F0ZSogVEludGVybWVkaWF0ZTo6bWFrZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbm9kZSwgY29u
c3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBpZiAobm9kZSA9PSAwKQogICAgICAgICByZXR1
cm4gMDsKIAogICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ05vZGUgPSBuZXcgVEludGVybUFnZ3Jl
Z2F0ZTsKICAgICBhZ2dOb2RlLT5nZXRTZXF1ZW5jZSgpLnB1c2hfYmFjayhub2RlKTsKLQotICAg
IGlmIChsaW5lICE9IDApCi0gICAgICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7Ci0gICAgZWxz
ZQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7CisgICAgYWdnTm9k
ZS0+c2V0TGluZShsaW5lKTsKIAogICAgIHJldHVybiBhZ2dOb2RlOwogfQpAQCAtNTg1LDcgKzU2
OSw3IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2cKIC8vCiAvLyBS
ZXR1cm5zIHRoZSBzZWxlY3Rpb24gbm9kZSBjcmVhdGVkLgogLy8KLVRJbnRlcm1Ob2RlKiBUSW50
ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBh
aXIgbm9kZVBhaXIsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRl
OjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBhaXIgbm9kZVBh
aXIsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgLy8KICAgICAvLyBGb3IgY29tcGls
ZSB0aW1lIGNvbnN0YW50IHNlbGVjdGlvbnMsIHBydW5lIHRoZSBjb2RlIGFuZApAQCAtNTkzLDcg
KzU3Nyw3IEBAIFRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24KICAgICAv
LwogCiAgICAgaWYgKGNvbmQtPmdldEFzVHlwZWQoKSAmJiBjb25kLT5nZXRBc1R5cGVkKCktPmdl
dEFzQ29uc3RhbnRVbmlvbigpKSB7Ci0gICAgICAgIGlmIChjb25kLT5nZXRBc1R5cGVkKCktPmdl
dEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRCQ29uc3QoKSA9
PSB0cnVlKQorICAgICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldEJDb25z
dCgwKSA9PSB0cnVlKQogICAgICAgICAgICAgcmV0dXJuIG5vZGVQYWlyLm5vZGUxID8gc2V0QWdn
cmVnYXRlT3BlcmF0b3Iobm9kZVBhaXIubm9kZTEsIEVPcFNlcXVlbmNlLCBub2RlUGFpci5ub2Rl
MS0+Z2V0TGluZSgpKSA6IE5VTEw7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBu
b2RlUGFpci5ub2RlMiA/IHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKG5vZGVQYWlyLm5vZGUyLCBFT3BT
ZXF1ZW5jZSwgbm9kZVBhaXIubm9kZTItPmdldExpbmUoKSkgOiBOVUxMOwpAQCAtNjA2LDcgKzU5
MCw3IEBAIFRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24KIH0KIAogCi1U
SW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbW1hKFRJbnRlcm1UeXBlZCogbGVmdCwg
VEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUSW50
ZXJtZWRpYXRlOjphZGRDb21tYShUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmln
aHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgaWYgKGxlZnQtPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCAmJiByaWdodC0+Z2V0VHlwZSgpLmdldFF1YWxpZmll
cigpID09IEV2cUNvbnN0KSB7CiAgICAgICAgIHJldHVybiByaWdodDsKQEAgLTYyNiw3ICs2MTAs
NyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbW1hKFRJCiAvLwogLy8gUmV0
dXJucyB0aGUgc2VsZWN0aW9uIG5vZGUgY3JlYXRlZCwgb3IgMCBpZiBvbmUgY291bGQgbm90IGJl
LgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1U
eXBlZCogY29uZCwgVEludGVybVR5cGVkKiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCogZmFsc2VC
bG9jaywgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRT
ZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIHRydWVCbG9jaywgVElu
dGVybVR5cGVkKiBmYWxzZUJsb2NrLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIC8v
CiAgICAgLy8gR2V0IGNvbXBhdGlibGUgdHlwZXMuCkBAIC02NDcsNyArNjMxLDcgQEAgVEludGVy
bVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3RpbwogICAgIC8vCiAKICAgICBpZiAoY29u
ZC0+Z2V0QXNDb25zdGFudFVuaW9uKCkgJiYgdHJ1ZUJsb2NrLT5nZXRBc0NvbnN0YW50VW5pb24o
KSAmJiBmYWxzZUJsb2NrLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgewotICAgICAgICBpZiAoY29u
ZC0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldEJDb25z
dCgpKQorICAgICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldEJDb25zdCgw
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlQmxvY2s7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZUJsb2NrOwpAQCAtNjY5LDcgKzY1Myw3IEBAIFRJbnRlcm1UeXBlZCog
VEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW8KIC8vIFJldHVybnMgdGhlIGNvbnN0YW50IHVuaW9u
IG5vZGUgY3JlYXRlZC4KIC8vCiAKLVRJbnRlcm1Db25zdGFudFVuaW9uKiBUSW50ZXJtZWRpYXRl
OjphZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXlQb2ludGVyLCBjb25z
dCBUVHlwZSYgdCwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybUNvbnN0YW50VW5pb24qIFRJbnRl
cm1lZGlhdGU6OmFkZENvbnN0YW50VW5pb24oQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheVBvaW50
ZXIsIGNvbnN0IFRUeXBlJiB0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRl
cm1Db25zdGFudFVuaW9uKiBub2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHVuaW9uQXJy
YXlQb2ludGVyLCB0KTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtNjc3LDcgKzY2MSw3
IEBAIFRJbnRlcm1Db25zdGFudFVuaW9uKiBUSW50ZXJtZWRpYXRlOjphZGQKICAgICByZXR1cm4g
bm9kZTsKIH0KIAotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKFRWZWN0
b3JGaWVsZHMmIGZpZWxkcywgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUSW50ZXJt
ZWRpYXRlOjphZGRTd2l6emxlKFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgY29uc3QgVFNvdXJjZUxv
YyYgbGluZSkKIHsKIAogICAgIFRJbnRlcm1BZ2dyZWdhdGUqIG5vZGUgPSBuZXcgVEludGVybUFn
Z3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CkBAIC03MDAsNyArNjg0LDcgQEAgVEludGVybVR5cGVkKiBU
SW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKAogLy8KIC8vIENyZWF0ZSBsb29wIG5vZGVzLgogLy8K
LVRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRMb29wKFRMb29wVHlwZSB0eXBlLCBUSW50
ZXJtTm9kZSogaW5pdCwgVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIGV4cHIsIFRJ
bnRlcm1Ob2RlKiBib2R5LCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtTm9kZSogVEludGVybWVk
aWF0ZTo6YWRkTG9vcChUTG9vcFR5cGUgdHlwZSwgVEludGVybU5vZGUqIGluaXQsIFRJbnRlcm1U
eXBlZCogY29uZCwgVEludGVybVR5cGVkKiBleHByLCBUSW50ZXJtTm9kZSogYm9keSwgY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJtTm9kZSogbm9kZSA9IG5ldyBUSW50ZXJt
TG9vcCh0eXBlLCBpbml0LCBjb25kLCBleHByLCBib2R5KTsKICAgICBub2RlLT5zZXRMaW5lKGxp
bmUpOwpAQCAtNzExLDEyICs2OTUsMTIgQEAgVEludGVybU5vZGUqIFRJbnRlcm1lZGlhdGU6OmFk
ZExvb3AoVExvbwogLy8KIC8vIEFkZCBicmFuY2hlcy4KIC8vCi1USW50ZXJtQnJhbmNoKiBUSW50
ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBUU291cmNlTG9jIGxpbmUp
CitUSW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5j
aE9wLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIHJldHVybiBhZGRCcmFuY2goYnJh
bmNoT3AsIDAsIGxpbmUpOwogfQogCi1USW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRlOjphZGRC
cmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBUSW50ZXJtVHlwZWQqIGV4cHJlc3Npb24sIFRTb3Vy
Y2VMb2MgbGluZSkKK1RJbnRlcm1CcmFuY2gqIFRJbnRlcm1lZGlhdGU6OmFkZEJyYW5jaChUT3Bl
cmF0b3IgYnJhbmNoT3AsIFRJbnRlcm1UeXBlZCogZXhwcmVzc2lvbiwgY29uc3QgVFNvdXJjZUxv
YyYgbGluZSkKIHsKICAgICBUSW50ZXJtQnJhbmNoKiBub2RlID0gbmV3IFRJbnRlcm1CcmFuY2go
YnJhbmNoT3AsIGV4cHJlc3Npb24pOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CkBAIC04NDYs
NiArODMwLDcgQEAgYm9vbCBUSW50ZXJtVW5hcnk6OnByb21vdGUoVEluZm9TaW5rJikKICAgICB9
CiAKICAgICBzZXRUeXBlKG9wZXJhbmQtPmdldFR5cGUoKSk7CisgICAgdHlwZS5zZXRRdWFsaWZp
ZXIoRXZxVGVtcG9yYXJ5KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODYwLDcgKzg0NSw3
IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKIHsKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIG9ubHkgaGFuZGxlcyBzY2FsYXJzLCB2ZWN0b3JzLCBhbmQgbWF0cmljZXMu
CiAgICAgaWYgKGxlZnQtPmlzQXJyYXkoKSB8fCByaWdodC0+aXNBcnJheSgpKSB7Ci0gICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkludmFsaWQgb3Bl
cmF0aW9uIGZvciBhcnJheXMiLCBnZXRMaW5lKCkpOworICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkludmFsaWQgb3BlcmF0aW9u
IGZvciBhcnJheXMiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtOTY1LDcg
Kzk1MCw3IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKICAgICAg
ICAgICAgICAgICAgICAgc2V0VHlwZShUVHlwZShiYXNpY1R5cGUsIGhpZ2hlclByZWNpc2lvbiwg
RXZxVGVtcG9yYXJ5LCBzaXplLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhJbnRlcm5hbEVycm9yLCAiTWlzc2luZyBlbHNlcyIsIGdldExpbmUoKSk7CisgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5l
KCksICJNaXNzaW5nIGVsc2VzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC05OTQsNyArOTc5LDcgQEAgYm9vbCBU
SW50ZXJtQmluYXJ5Ojpwcm9tb3RlKFRJbmZvU2luayYgaQogICAgICAgICAgICAgICAgICAgICBz
ZXRUeXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVyUHJlY2lzaW9uLCBFdnFUZW1wb3JhcnksIHNp
emUsIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3Is
ICJNaXNzaW5nIGVsc2VzIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIk1pc3NpbmcgZWxz
ZXMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTEwMzQsMjMgKzEwMTksMjIgQEAgYm9vbCBUSW50ZXJtQmluYXJ5
Ojpwcm9tb3RlKFRJbmZvU2luayYgaQogCiBib29sIENvbXBhcmVTdHJ1Y3QoY29uc3QgVFR5cGUm
IGxlZnROb2RlVHlwZSwgQ29uc3RhbnRVbmlvbiogcmlnaHRVbmlvbkFycmF5LCBDb25zdGFudFVu
aW9uKiBsZWZ0VW5pb25BcnJheSkKIHsKLSAgICBjb25zdCBUVHlwZUxpc3QqIGZpZWxkcyA9IGxl
ZnROb2RlVHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSBs
ZWZ0Tm9kZVR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCi0gICAgc2l6ZV90IHN0cnVjdFNp
emUgPSBmaWVsZHMtPnNpemUoKTsKLSAgICBpbnQgaW5kZXggPSAwOworICAgIHNpemVfdCBzdHJ1
Y3RTaXplID0gZmllbGRzLnNpemUoKTsKKyAgICBzaXplX3QgaW5kZXggPSAwOwogCiAgICAgZm9y
IChzaXplX3QgaiA9IDA7IGogPCBzdHJ1Y3RTaXplOyBqKyspIHsKLSAgICAgICAgaW50IHNpemUg
PSAoKmZpZWxkcylbal0udHlwZS0+Z2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgaWYgKCgqZmllbGRzKVtqXS50eXBl
LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoIUNv
bXBhcmVTdHJ1Y3R1cmUoKigqZmllbGRzKVtqXS50eXBlLCAmcmlnaHRVbmlvbkFycmF5W2luZGV4
XSwgJmxlZnRVbmlvbkFycmF5W2luZGV4XSkpCisgICAgICAgIHNpemVfdCBzaXplID0gZmllbGRz
W2pdLT50eXBlKCktPmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChmaWVsZHNbal0tPnR5cGUoKS0+Z2V0
QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7CisgICAgICAgICAgICAgICAgaWYgKCFDb21wYXJl
U3RydWN0dXJlKCooZmllbGRzW2pdLT50eXBlKCkpLCAmcmlnaHRVbmlvbkFycmF5W2luZGV4XSwg
JmxlZnRVbmlvbkFycmF5W2luZGV4XSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGxlZnRVbmlvbkFy
cmF5W2luZGV4XSAhPSByaWdodFVuaW9uQXJyYXlbaW5kZXhdKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgaW5kZXgrKzsKICAgICAgICAgICAgIH0K
LQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMTA2MiwxMCArMTA0Niwx
MCBAQCBib29sIENvbXBhcmVTdHJ1Y3R1cmUoY29uc3QgVFR5cGUmIGxlZnROCiAgICAgICAgIFRU
eXBlIHR5cGVXaXRob3V0QXJyYXluZXNzID0gbGVmdE5vZGVUeXBlOwogICAgICAgICB0eXBlV2l0
aG91dEFycmF5bmVzcy5jbGVhckFycmF5bmVzcygpOwogCi0gICAgICAgIGludCBhcnJheVNpemUg
PSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlTaXplKCk7CisgICAgICAgIHNpemVfdCBhcnJheVNpemUg
PSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlTaXplKCk7CiAKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBhcnJheVNpemU7ICsraSkgewotICAgICAgICAgICAgaW50IG9mZnNldCA9IHR5cGVXaXRo
b3V0QXJyYXluZXNzLmdldE9iamVjdFNpemUoKSAqIGk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYXJyYXlTaXplOyArK2kpIHsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSB0
eXBlV2l0aG91dEFycmF5bmVzcy5nZXRPYmplY3RTaXplKCkgKiBpOwogICAgICAgICAgICAgaWYg
KCFDb21wYXJlU3RydWN0KHR5cGVXaXRob3V0QXJyYXluZXNzLCAmcmlnaHRVbmlvbkFycmF5W29m
ZnNldF0sICZsZWZ0VW5pb25BcnJheVtvZmZzZXRdKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KQEAgLTEwODUsNyArMTA2OSw3IEBAIGJvb2wgQ29tcGFyZVN0cnVj
dHVyZShjb25zdCBUVHlwZSYgbGVmdE4KIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5p
b246OmZvbGQoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGNvbnN0YW50Tm9kZSwgVEluZm9T
aW5rJiBpbmZvU2luaykKIHsKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gZ2V0VW5p
b25BcnJheVBvaW50ZXIoKTsKLSAgICBpbnQgb2JqZWN0U2l6ZSA9IGdldFR5cGUoKS5nZXRPYmpl
Y3RTaXplKCk7CisgICAgc2l6ZV90IG9iamVjdFNpemUgPSBnZXRUeXBlKCkuZ2V0T2JqZWN0U2l6
ZSgpOwogCiAgICAgaWYgKGNvbnN0YW50Tm9kZSkgeyAgLy8gYmluYXJ5IG9wZXJhdGlvbnMKICAg
ICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUgPSBjb25zdGFudE5vZGUtPmdldEFzQ29u
c3RhbnRVbmlvbigpOwpAQCAtMTA5NSwxMyArMTA3OSwxMyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRl
cm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgIC8vIGZvciBhIGNhc2UgbGlrZSBmbG9hdCBm
ID0gMS4yICsgdmVjNCgyLDMsNCw1KTsKICAgICAgICAgaWYgKGNvbnN0YW50Tm9kZS0+Z2V0VHlw
ZSgpLmdldE9iamVjdFNpemUoKSA9PSAxICYmIG9iamVjdFNpemUgPiAxKSB7CiAgICAgICAgICAg
ICByaWdodFVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKLSAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgKytpKQorICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyArK2kpCiAgICAgICAgICAgICAgICAg
cmlnaHRVbmlvbkFycmF5W2ldID0gKm5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAgICAg
ICAgICAgICByZXR1cm5UeXBlID0gZ2V0VHlwZSgpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnN0
YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSA+IDEgJiYgb2JqZWN0U2l6ZSA9PSAx
KSB7CiAgICAgICAgICAgICAvLyBmb3IgYSBjYXNlIGxpa2UgZmxvYXQgZiA9IHZlYzQoMiwzLDQs
NSkgKyAxLjI7CiAgICAgICAgICAgICB1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bY29u
c3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpXTsKLSAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOyAr
K2kpCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnN0YW50Tm9kZS0+Z2V0
VHlwZSgpLmdldE9iamVjdFNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlb
aV0gPSAqZ2V0VW5pb25BcnJheVBvaW50ZXIoKTsKICAgICAgICAgICAgIHJldHVyblR5cGUgPSBu
b2RlLT5nZXRUeXBlKCk7CiAgICAgICAgICAgICBvYmplY3RTaXplID0gY29uc3RhbnROb2RlLT5n
ZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwpAQCAtMTExNSwxNCArMTA5OSwxNCBAQCBUSW50ZXJt
VHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBjYXNlIEVPcEFk
ZDoKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29i
amVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAg
ICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAg
ICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0g
KyByaWdodFVuaW9uQXJyYXlbaV07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFT3BTdWI6CiAgICAgICAgICAgICAgICAgdGVtcENv
bnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAg
ICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVt
cENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldIC0gcmlnaHRVbmlvbkFycmF5W2ldOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMzIsMTMgKzExMTYs
MTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAg
ICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RB
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsv
LyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29u
c3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gKiByaWdodFVuaW9uQXJyYXlbaV07CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFT3BN
YXRyaXhUaW1lc01hdHJpeDoKICAgICAgICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2lj
VHlwZSgpICE9IEVidEZsb2F0IHx8IG5vZGUtPmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KSB7
Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCBtdWx0
aXBseSIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiQ29uc3RhbnQgRm9sZGluZyBj
YW5ub3QgYmUgZG9uZSBmb3IgbWF0cml4IG11bHRpcGx5Iik7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9y
dCBNU1ZDKys2LjAKQEAgLTExNTcsMTEgKzExNDEsMTEgQEAgVEludGVybVR5cGVkKiBUSW50ZXJt
Q29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BEaXY6CiAgICAgICAgICAg
ICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAg
ICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAg
ICAgICBjYXNlIEVidEZsb2F0OgogICAgICAgICAgICAgICAgIGlmIChyaWdodFVuaW9uQXJyYXlb
aV0gPT0gMC4wZikgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeFdhcm5pbmcsICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9s
ZGluZyIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4V2FybmluZywgZ2V0TGluZSgpLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVy
aW5nIGNvbnN0YW50IGZvbGRpbmciKTsKICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJy
YXlbaV0uc2V0RkNvbnN0KHVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgPCAwID8gLUZMVF9NQVgg
OiBGTFRfTUFYKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
dGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KHVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgLyBy
aWdodFVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkpOwpAQCAtMTE2OSwxMyArMTE1MywxMyBAQCBU
SW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAKICAgICAgICAgICAgIGNh
c2UgRWJ0SW50OgogICAgICAgICAgICAgICAgIGlmIChyaWdodFVuaW9uQXJyYXlbaV0gPT0gMCkg
ewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5p
bmcsICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9sZGluZyIsIGdldExp
bmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
V2FybmluZywgZ2V0TGluZSgpLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50
IGZvbGRpbmciKTsKICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNv
bnN0KElOVF9NQVgpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAg
ICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3QodW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSAv
IHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50IGZvbGRpbmcgY2Fubm90IGJlIGRv
bmUgZm9yIFwiL1wiIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50IGZvbGRp
bmcgY2Fubm90IGJlIGRvbmUgZm9yIFwiL1wiIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEx
ODQsNyArMTE2OCw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQK
IAogICAgICAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoKICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0RmxvYXQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQ29uc3Rh
bnQgRm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgbWF0cml4IHRpbWVzIHZlY3RvciIsIGdldExp
bmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiQ29uc3RhbnQgRm9sZGluZyBjYW5ub3QgYmUgZG9u
ZSBmb3IgbWF0cml4IHRpbWVzIHZlY3RvciIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBu
ZXcgQ29uc3RhbnRVbmlvbltnZXROb21pbmFsU2l6ZSgpXTsKQEAgLTEyMDUsNyArMTE4OSw3IEBA
IFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKIAogICAgICAgICAgICAg
Y2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeDoKICAgICAgICAgICAgICAgICBpZiAoZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50IEZvbGRpbmcg
Y2Fubm90IGJlIGRvbmUgZm9yIHZlY3RvciB0aW1lcyBtYXRyaXgiLCBnZXRMaW5lKCkpOworICAg
ICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsIGdldExpbmUoKSwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIHZlY3Rv
ciB0aW1lcyBtYXRyaXgiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
ICAgICAgICAgfQogCkBAIC0xMjIzLDcgKzEyMDcsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1D
b25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxBbmQ6IC8vIHRo
aXMgY29kZSBpcyB3cml0dGVuIGZvciBwb3NzaWJsZSBmdXR1cmUgdXNlLCB3aWxsIG5vdCBnZXQg
ZXhlY3V0ZWQgY3VycmVudGx5CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBN
U1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RT
aXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Jq
ZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0g
PSB1bmlvbkFycmF5W2ldICYmIHJpZ2h0VW5pb25BcnJheVtpXTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjMxLDcgKzEyMTUsNyBAQCBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBjYXNlIEVPcExvZ2lj
YWxPcjogLy8gdGhpcyBjb2RlIGlzIHdyaXR0ZW4gZm9yIHBvc3NpYmxlIGZ1dHVyZSB1c2UsIHdp
bGwgbm90IGdldCBleGVjdXRlZCBjdXJyZW50bHkKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RB
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsv
LyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29u
c3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gfHwgcmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyMzksNyArMTIyMyw3IEBA
IFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgIGNh
c2UgRU9wTG9naWNhbFhvcjoKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1T
VkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNp
emU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmpl
Y3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5n
ZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBFYnRCb29sOiB0ZW1wQ29uc3RBcnJh
eVtpXS5zZXRCQ29uc3QoKHVuaW9uQXJyYXlbaV0gPT0gcmlnaHRVbmlvbkFycmF5W2ldKSA/IGZh
bHNlIDogdHJ1ZSk7IGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlICYm
ICJEZWZhdWx0IG1pc3NpbmciKTsKQEAgLTEyODUsNyArMTI2OSw3IEBAIFRJbnRlcm1UeXBlZCog
VEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgICAgICAgICAgaWYgKCFDb21w
YXJlU3RydWN0dXJlKG5vZGUtPmdldFR5cGUoKSwgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KSwgdW5pb25BcnJheSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0
cnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodW5pb25BcnJheVtpXSAhPSByaWdodFVuaW9uQXJyYXlbaV0pIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOyAgLy8gYnJlYWsgb3V0IG9mIGZvciBsb29wCkBAIC0xMzEx
LDcgKzEyOTUsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChDb21wYXJlU3RydWN0dXJlKG5vZGUtPmdldFR5cGUoKSwg
bm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSwgdW5pb25BcnJheSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsr
KSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6
ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pb25BcnJheVtpXSA9PSBy
aWdodFVuaW9uQXJyYXlbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sTm9k
ZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgLy8gYnJl
YWsgb3V0IG9mIGZvciBsb29wCkBAIC0xMzMzLDcgKzEzMTcsNyBAQCBUSW50ZXJtVHlwZWQqIFRJ
bnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXBOb2Rl
OwogCiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkludmFsaWQgb3BlcmF0b3IgZm9yIGNvbnN0
YW50IGZvbGRpbmciLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiSW52YWxpZCBvcGVyYXRv
ciBmb3IgY29uc3RhbnQgZm9sZGluZyIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICB9CiAgICAgICAgIHRlbXBOb2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHRlbXBD
b25zdEFycmF5LCByZXR1cm5UeXBlKTsKQEAgLTEzNDYsMTQgKzEzMzAsMTQgQEAgVEludGVybVR5
cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAvLwogICAgICAgICBUSW50
ZXJtQ29uc3RhbnRVbmlvbiAqbmV3Tm9kZSA9IDA7CiAgICAgICAgIENvbnN0YW50VW5pb24qIHRl
bXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBzd2l0Y2gob3ApIHsK
ICAgICAgICAgICAgICAgICBjYXNlIEVPcE5lZ2F0aXZlOgogICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBFYnRGbG9hdDogdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KC11bmlvbkFycmF5
W2ldLmdldEZDb25zdCgpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVi
dEludDogICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3QoLXVuaW9uQXJyYXlbaV0uZ2V0SUNv
bnN0KCkpOyBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5h
bEVycm9yLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIsIGdldExp
bmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZv
bGRlZCBpbnRvIGNvbnN0YW50Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMzYxLDcgKzEzNDUsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpm
b2xkCiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6ICB0ZW1wQ29uc3RBcnJh
eVtpXS5zZXRCQ29uc3QoIXVuaW9uQXJyYXlbaV0uZ2V0QkNvbnN0KCkpOyBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5hcnkgb3BlcmF0
aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzc3LDY1ICsxMzYxLDY0IEBA
IFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKIAogVEludGVybVR5cGVk
KiBUSW50ZXJtZWRpYXRlOjpwcm9tb3RlQ29uc3RhbnRVbmlvbihUQmFzaWNUeXBlIHByb21vdGVU
bywgVEludGVybUNvbnN0YW50VW5pb24qIG5vZGUpCiB7Ci0gICAgQ29uc3RhbnRVbmlvbiAqcmln
aHRVbmlvbkFycmF5ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICBpbnQgc2l6
ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90IHNpemUgPSBu
b2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogCiAgICAgQ29uc3RhbnRVbmlvbiAqbGVm
dFVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltzaXplXTsKIAotICAgIGZvciAoaW50IGk9
MDsgaSA8IHNpemU7IGkrKykgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsr
KSB7CiAKICAgICAgICAgc3dpdGNoIChwcm9tb3RlVG8pIHsKICAgICAgICAgICAgIGNhc2UgRWJ0
RmxvYXQ6CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNU
eXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5n
ZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50PihpKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRCQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5n
ZXRCQ29uc3Qoc3RhdGljX2Nhc3Q8Ym9vbD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldID0gcmlnaHRVbmlvbkFycmF5W2ldOworICAg
ICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19j
YXN0PGZsb2F0Pihub2RlLT5nZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkpKSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeElu
dGVybmFsRXJyb3IsICJDYW5ub3QgcHJvbW90ZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsIG5vZGUtPmdldExpbmUoKSwgIkNhbm5vdCBwcm9tb3RlIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIEVidEludDoKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5v
ZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNl
IEVidEludDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldID0gcmln
aHRVbmlvbkFycmF5W2ldOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlb
aV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0SUNvbnN0KHN0YXRpY19jYXN0
PGludD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9u
QXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4ocmlnaHRVbmlvbkFycmF5W2ldLmdl
dEJDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5z
ZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5nZXRCQ29uc3Qoc3RhdGljX2Nhc3Q8Ym9v
bD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFy
cmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRG
Q29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0
SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0
PihpKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQ2Fubm90IHByb21vdGUiLCBub2RlLT5nZXRMaW5l
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJDYW5ub3QgcHJvbW90ZSIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRCb29sOgogICAgICAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9u
QXJyYXlbaV0uc2V0QkNvbnN0KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSAhPSAwKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChub2Rl
LT5nZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50PihpKSkgIT0gMCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAg
ICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0gPSByaWdodFVuaW9uQXJyYXlbaV07
CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9k
ZS0+Z2V0QkNvbnN0KHN0YXRpY19jYXN0PGJvb2w+KGkpKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChyaWdodFVuaW9uQXJy
YXlbaV0uZ2V0RkNvbnN0KCkgIT0gMC4wZik7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0
VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0
PihpKSkgIT0gMC4wZik7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNhbm5vdCBwcm9tb3RlIiwgbm9kZS0+
Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQ2Fubm90IHByb21vdGUi
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJJbmNv
cnJlY3QgZGF0YSB0eXBlIGZvdW5kIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExp
bmUoKSwgIkluY29ycmVjdCBkYXRhIHR5cGUgZm91bmQiKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvT3V0cHV0R0xTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5LDMgKzE5LDE3IEBAIGJvb2wgVE91dHB1dEdMU0w6OndyaXRlVmFyaWFibGVQ
cmVjaXNpb24KIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CisKK3ZvaWQgVE91dHB1dEdMU0w6OnZp
c2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqIG5vZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSYgb3V0
ID0gb2JqU2luaygpOworCisgICAgaWYgKG5vZGUtPmdldFN5bWJvbCgpID09ICJnbF9GcmFnRGVw
dGhFWFQiKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICJnbF9GcmFnRGVwdGgiOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0U3ltYm9sKG5vZGUp
OworICAgIH0KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9P
dXRwdXRHTFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL091dHB1dEdMU0wuaAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuaAkod29ya2luZyBjb3B5KQpAQCAtMjAs
NiArMjAsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgd3JpdGVW
YXJpYWJsZVByZWNpc2lvbihUUHJlY2lzaW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1i
b2woVEludGVybVN5bWJvbCogbm9kZSk7CiB9OwogCiAjZW5kaWYgIC8vIENST1NTQ09NUElMRVJH
TFNMX09VVFBVVEdMU0xfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9PdXRwdXRHTFNMQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcAkocmV2aXNpb24gMTUyNjQ5KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzksMjUgKzc5LDkgQEAgdm9pZCBUT3V0cHV0R0xTTEJhc2U6
OndyaXRlVmFyaWFibGVUeXBlKAogICAgIGlmICgocXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkg
JiYgKHF1YWxpZmllciAhPSBFdnFHbG9iYWwpKQogICAgICAgICBvdXQgPDwgdHlwZS5nZXRRdWFs
aWZpZXJTdHJpbmcoKSA8PCAiICI7CiAgICAgLy8gRGVjbGFyZSB0aGUgc3RydWN0IGlmIHdlIGhh
dmUgbm90IGRvbmUgc28gYWxyZWFkeS4KLSAgICBpZiAoKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0g
RWJ0U3RydWN0KSAmJgotICAgICAgICAobURlY2xhcmVkU3RydWN0cy5maW5kKHR5cGUuZ2V0VHlw
ZU5hbWUoKSkgPT0gbURlY2xhcmVkU3RydWN0cy5lbmQoKSkpCisgICAgaWYgKCh0eXBlLmdldEJh
c2ljVHlwZSgpID09IEVidFN0cnVjdCkgJiYgIXN0cnVjdERlY2xhcmVkKHR5cGUuZ2V0U3RydWN0
KCkpKQogICAgIHsKLSAgICAgICAgb3V0IDw8ICJzdHJ1Y3QgIiA8PCBoYXNoTmFtZSh0eXBlLmdl
dFR5cGVOYW1lKCkpIDw8ICJ7XG4iOwotICAgICAgICBjb25zdCBUVHlwZUxpc3QqIHN0cnVjdHVy
ZSA9IHR5cGUuZ2V0U3RydWN0KCk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gTlVMTCk7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkK
LSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0
dXJlKVtpXS50eXBlOwotICAgICAgICAgICAgQVNTRVJUKGZpZWxkVHlwZSAhPSBOVUxMKTsKLSAg
ICAgICAgICAgIGlmICh3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKGZpZWxkVHlwZS0+Z2V0UHJlY2lz
aW9uKCkpKQotICAgICAgICAgICAgICAgIG91dCA8PCAiICI7Ci0gICAgICAgICAgICBvdXQgPDwg
Z2V0VHlwZU5hbWUoKmZpZWxkVHlwZSkgPDwgIiAiIDw8IGhhc2hOYW1lKGZpZWxkVHlwZS0+Z2V0
RmllbGROYW1lKCkpOwotICAgICAgICAgICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJheSgpKQotICAg
ICAgICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZFR5cGUpOwotICAgICAgICAg
ICAgb3V0IDw8ICI7XG4iOwotICAgICAgICB9Ci0gICAgICAgIG91dCA8PCAifSI7Ci0gICAgICAg
IG1EZWNsYXJlZFN0cnVjdHMuaW5zZXJ0KHR5cGUuZ2V0VHlwZU5hbWUoKSk7CisgICAgICAgIGRl
Y2xhcmVTdHJ1Y3QodHlwZS5nZXRTdHJ1Y3QoKSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBA
IC0xMzgsMjQgKzEyMiwyNSBAQCBjb25zdCBDb25zdGFudFVuaW9uKiBUT3V0cHV0R0xTTEJhc2U6
OndyCiAKICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCiAgICAgewot
ICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKSA8PCAiKCI7Ci0gICAg
ICAgIGNvbnN0IFRUeXBlTGlzdCogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKLSAgICAg
ICAgQVNTRVJUKHN0cnVjdHVyZSAhPSBOVUxMKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgKytpKQorICAgICAgICBjb25zdCBUU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOworICAgICAgICBvdXQgPDwgaGFzaE5hbWUoc3Ry
dWN0dXJlLT5uYW1lKCkpIDw8ICIoIjsKKworICAgICAgICBjb25zdCBURmllbGRMaXN0JiBmaWVs
ZHMgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGZpZWxkcy5zaXplKCk7ICsraSkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUq
IGZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOworICAgICAgICAgICAgY29uc3QgVFR5
cGUqIGZpZWxkVHlwZSA9IGZpZWxkc1tpXS0+dHlwZSgpOwogICAgICAgICAgICAgQVNTRVJUKGZp
ZWxkVHlwZSAhPSBOVUxMKTsKICAgICAgICAgICAgIHBDb25zdFVuaW9uID0gd3JpdGVDb25zdGFu
dFVuaW9uKCpmaWVsZFR5cGUsIHBDb25zdFVuaW9uKTsKLSAgICAgICAgICAgIGlmIChpICE9IHN0
cnVjdHVyZS0+c2l6ZSgpIC0gMSkgb3V0IDw8ICIsICI7CisgICAgICAgICAgICBpZiAoaSAhPSBm
aWVsZHMuc2l6ZSgpIC0gMSkgb3V0IDw8ICIsICI7CiAgICAgICAgIH0KICAgICAgICAgb3V0IDw8
ICIpIjsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW50IHNpemUgPSB0eXBlLmdl
dE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUo
KTsKICAgICAgICAgYm9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAgICAgaWYgKHdyaXRl
VHlwZSkgb3V0IDw8IGdldFR5cGVOYW1lKHR5cGUpIDw8ICIoIjsKLSAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBzaXplOyArK2ksICsrcENvbnN0VW5pb24pCisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpLCArK3BDb25zdFVuaW9uKQogICAgICAgICB7CiAgICAgICAg
ICAgICBzd2l0Y2ggKHBDb25zdFVuaW9uLT5nZXRUeXBlKCkpCiAgICAgICAgICAgICB7CkBAIC0y
NjAsMTIgKzI0NSwxOCBAQCBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCaW5hcnkoVmlzaXQg
CiAgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6CiAgICAgICAgICAgICBpZiAodmlz
aXQgPT0gSW5WaXNpdCkKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBIZXJlIHdl
IGFyZSB3cml0aW5nIG91dCAiZm9vLmJhciIsIHdoZXJlICJmb28iIGlzIHN0cnVjdAorICAgICAg
ICAgICAgICAgIC8vIGFuZCAiYmFyIiBpcyBmaWVsZC4gSW4gQVNULCBpdCBpcyByZXByZXNlbnRl
ZCBhcyBhIGJpbmFyeQorICAgICAgICAgICAgICAgIC8vIG5vZGUsIHdoZXJlIGxlZnQgY2hpbGQg
cmVwcmVzZW50cyAiZm9vIiBhbmQgcmlnaHQgY2hpbGQgImJhciIuCisgICAgICAgICAgICAgICAg
Ly8gVGhlIG5vZGUgaXRzZWxmIHJlcHJlc2VudHMgIi4iLiBUaGUgc3RydWN0IGZpZWxkICJiYXIi
IGlzCisgICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgc3RvcmVkIGFzIGFuIGluZGV4IGludG8g
VFN0cnVjdHVyZTo6ZmllbGRzLgogICAgICAgICAgICAgICAgIG91dCA8PCAiLiI7Ci0gICAgICAg
ICAgICAgICAgLy8gVE9ETyhhbG9rcCk6IEFTU0VSVAotICAgICAgICAgICAgICAgIFRTdHJpbmcg
ZmllbGROYW1lID0gbm9kZS0+Z2V0VHlwZSgpLmdldEZpZWxkTmFtZSgpOworICAgICAgICAgICAg
ICAgIGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlw
ZSgpLmdldFN0cnVjdCgpOworICAgICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1Db25zdGFudFVu
aW9uKiBpbmRleCA9IG5vZGUtPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAg
ICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpW2lu
ZGV4LT5nZXRJQ29uc3QoMCldOwogCi0gICAgICAgICAgICAgICAgY29uc3QgVFR5cGUmIHN0cnVj
dFR5cGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKTsKLSAgICAgICAgICAgICAgICBpZiAo
IW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3RUeXBlLmdldFR5cGVOYW1lKCkpKQorICAg
ICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gZmllbGQtPm5hbWUoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3R1cmUtPm5hbWUoKSkp
CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZSA9IGhhc2hOYW1lKGZpZWxkTmFtZSk7CiAK
ICAgICAgICAgICAgICAgICBvdXQgPDwgZmllbGROYW1lOwpAQCAtNTk2LDcgKzU4Nyw3IEBAIGJv
b2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBjb25zdCBUVHlwZSYgdHlwZSA9IG5vZGUtPmdldFR5cGUoKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpOwotICAg
ICAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0eXBlLmdldFR5cGVOYW1lKCkpIDw8ICIoIjsK
KyAgICAgICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRTdHJ1Y3QoKS0+bmFtZSgp
KSA8PCAiKCI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJ
blZpc2l0KQogICAgICAgICAgICAgewpAQCAtNzY1LDcgKzc1Niw3IEBAIFRTdHJpbmcgVE91dHB1
dEdMU0xCYXNlOjpnZXRUeXBlTmFtZShjb24KICAgICBlbHNlCiAgICAgewogICAgICAgICBpZiAo
dHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCi0gICAgICAgICAgICBvdXQgPDwgaGFz
aE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKTsKKyAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0
eXBlLmdldFN0cnVjdCgpLT5uYW1lKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvdXQg
PDwgdHlwZS5nZXRCYXNpY1N0cmluZygpOwogICAgIH0KQEAgLTc5OCwzICs3ODksMjkgQEAgVFN0
cmluZyBUT3V0cHV0R0xTTEJhc2U6Omhhc2hGdW5jdGlvbk5hbQogICAgICAgICByZXR1cm4gbmFt
ZTsKICAgICByZXR1cm4gaGFzaE5hbWUobmFtZSk7CiB9CisKK2Jvb2wgVE91dHB1dEdMU0xCYXNl
OjpzdHJ1Y3REZWNsYXJlZChjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1EZWNsYXJlZFN0cnVjdHMuZmluZChzdHJ1Y3R1cmUtPm5hbWUoKSkgIT0gbURl
Y2xhcmVkU3RydWN0cy5lbmQoKTsKK30KKwordm9pZCBUT3V0cHV0R0xTTEJhc2U6OmRlY2xhcmVT
dHJ1Y3QoY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFRJbmZvU2lua0Jhc2Um
IG91dCA9IG9ialNpbmsoKTsKKworICAgIG91dCA8PCAic3RydWN0ICIgPDwgaGFzaE5hbWUoc3Ry
dWN0dXJlLT5uYW1lKCkpIDw8ICJ7XG4iOworICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9
IHN0cnVjdHVyZS0+ZmllbGRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMu
c2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBjb25zdCBURmllbGQqIGZpZWxkID0gZmllbGRz
W2ldOworICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVsZC0+dHlwZSgpLT5n
ZXRQcmVjaXNpb24oKSkpCisgICAgICAgICAgICBvdXQgPDwgIiAiOworICAgICAgICBvdXQgPDwg
Z2V0VHlwZU5hbWUoKmZpZWxkLT50eXBlKCkpIDw8ICIgIiA8PCBoYXNoTmFtZShmaWVsZC0+bmFt
ZSgpKTsKKyAgICAgICAgaWYgKGZpZWxkLT50eXBlKCktPmlzQXJyYXkoKSkKKyAgICAgICAgICAg
IG91dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZC0+dHlwZSgpKTsKKyAgICAgICAgb3V0IDw8ICI7
XG4iOworICAgIH0KKyAgICBvdXQgPDwgIn0iOworCisgICAgbURlY2xhcmVkU3RydWN0cy5pbnNl
cnQoc3RydWN0dXJlLT5uYW1lKCkpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgJKHJldmlzaW9uIDE1MjY0
OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw5IEBAIHByb3RlY3RlZDoKICAgICBUU3Ry
aW5nIGhhc2hGdW5jdGlvbk5hbWUoY29uc3QgVFN0cmluZyYgbWFuZ2xlZF9uYW1lKTsKIAogcHJp
dmF0ZToKKyAgICBib29sIHN0cnVjdERlY2xhcmVkKGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkgY29uc3Q7CisgICAgdm9pZCBkZWNsYXJlU3RydWN0KGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSk7CisKICAgICBUSW5mb1NpbmtCYXNlJiBtT2JqU2luazsKICAgICBib29sIG1EZWNsYXJp
bmdWYXJpYWJsZXM7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9PdXRwdXRITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNiArNTIsNyBAQCBPdXRwdXRITFNMOjpPdXRwdXRITFNMKFRQYXJzZUNvbnRleHQg
JmNvCiAgICAgbVVzZXNQb2ludENvb3JkID0gZmFsc2U7CiAgICAgbVVzZXNGcm9udEZhY2luZyA9
IGZhbHNlOwogICAgIG1Vc2VzUG9pbnRTaXplID0gZmFsc2U7CisgICAgbVVzZXNGcmFnRGVwdGgg
PSBmYWxzZTsKICAgICBtVXNlc1hvciA9IGZhbHNlOwogICAgIG1Vc2VzTW9kMSA9IGZhbHNlOwog
ICAgIG1Vc2VzTW9kMnYgPSBmYWxzZTsKQEAgLTE4OSw2ICsxOTAsMTEgQEAgdm9pZCBPdXRwdXRI
TFNMOjpoZWFkZXIoKQogICAgICAgICBvdXQgPDwgIlxuIgogICAgICAgICAgICAgICAgInN0YXRp
YyBmbG9hdDQgZ2xfQ29sb3JbMV0gPSB7ZmxvYXQ0KDAsIDAsIDAsIDApfTtcbiI7CiAKKyAgICAg
ICAgaWYgKG1Vc2VzRnJhZ0RlcHRoKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgInN0
YXRpYyBmbG9hdCBnbF9EZXB0aCA9IDAuMDtcbiI7CisgICAgICAgIH0KKwogICAgICAgICBpZiAo
bVVzZXNGcmFnQ29vcmQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG91dCA8PCAic3RhdGljIGZs
b2F0NCBnbF9GcmFnQ29vcmQgPSBmbG9hdDQoMCwgMCwgMCwgMCk7XG4iOwpAQCAtNTA5LDYgKzUx
NSwxMSBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcigpCiAgICAgICAgIG91dCA8PCAiI2RlZmlu
ZSBHTF9VU0VTX1BPSU5UX1NJWkVcbiI7CiAgICAgfQogCisgICAgaWYgKG1Vc2VzRnJhZ0RlcHRo
KQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNfRlJBR19ERVBUSFxuIjsK
KyAgICB9CisKICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQogICAgIHsKICAgICAgICAgb3V0IDw8
ICJzdHJ1Y3QgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnNcbiIKQEAgLTg0Myw2ICs4NTQsMTEgQEAg
dm9pZCBPdXRwdXRITFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYgogICAgICAgICBtVXNlc1Bv
aW50U2l6ZSA9IHRydWU7CiAgICAgICAgIG91dCA8PCBuYW1lOwogICAgIH0KKyAgICBlbHNlIGlm
IChuYW1lID09ICJnbF9GcmFnRGVwdGhFWFQiKQorICAgIHsKKyAgICAgICAgbVVzZXNGcmFnRGVw
dGggPSB0cnVlOworICAgICAgICBvdXQgPDwgImdsX0RlcHRoIjsKKyAgICB9CiAgICAgZWxzZQog
ICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBub2RlLT5nZXRRdWFsaWZpZXIo
KTsKQEAgLTk1Miw3ICs5NjgsMTAgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShWaXNp
dCB2aXNpdAogICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKICAgICAgICAgaWYgKHZp
c2l0ID09IEluVmlzaXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNv
cmF0ZUZpZWxkKG5vZGUtPmdldFR5cGUoKS5nZXRGaWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgp
LT5nZXRUeXBlKCkpOworICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlID0g
bm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7CisgICAgICAgICAgICBjb25z
dCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogaW5kZXggPSBub2RlLT5nZXRSaWdodCgpLT5nZXRBc0Nv
bnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQgPSBzdHJ1Y3R1
cmUtPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOworICAgICAgICAgICAgb3V0IDw8ICIu
IiArIGRlY29yYXRlRmllbGQoZmllbGQtPm5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBl
KCkpOwogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTk3NCw3ICs5
OTMsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0CiAKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBpID0gZWxlbWVudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpID0gZWxlbWVu
dC0+Z2V0SUNvbnN0KDApOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICB7CkBAIC0xMDIxLDE4ICsxMDQwLDE4IEBAIGJvb2wgT3V0
cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQKICAgICAgICAgICAgICAgICBvdXQgPDwg
IiEoIjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0ICpmaWVs
ZHMgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgICAg
IGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdl
dFN0cnVjdCgpLT5maWVsZHMoKTsKIAotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWVsZHMtPnNpemUoKTsgaSsrKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqZmllbGRzKVtpXS50eXBlOworICAgICAgICAgICAgICAg
IGNvbnN0IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CiAKICAgICAgICAgICAgICAgICBub2Rl
LT5nZXRMZWZ0KCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgICAgIG91dCA8PCAiLiIg
KyBkZWNvcmF0ZUZpZWxkKGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCksIG5vZGUtPmdldExlZnQo
KS0+Z2V0VHlwZSgpKSArICIgPT0gIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIi4iICsgZGVj
b3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSkgKyAi
ID09ICI7CiAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0UmlnaHQoKS0+dHJhdmVyc2UodGhpcyk7
Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGRUeXBlLT5n
ZXRGaWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkpOworICAgICAgICAgICAg
ICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksIG5vZGUtPmdldExl
ZnQoKS0+Z2V0VHlwZSgpKTsKIAotICAgICAgICAgICAgICAgIGlmIChpIDwgZmllbGRzLT5zaXpl
KCkgLSAxKQorICAgICAgICAgICAgICAgIGlmIChpIDwgZmllbGRzLnNpemUoKSAtIDEpCiAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAmJiAiOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTEyMzgsNyArMTI1Nyw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRB
Z2dyZWdhdGUoVmlzaXQgdmkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1JbnNpZGVGdW5j
dGlvbikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZl
KG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShu
b2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICJ7XG4i
OwogCiAgICAgICAgICAgICAgICAgbVNjb3BlRGVwdGgrKzsKQEAgLTEyNTUsNyArMTI3NCw3IEBA
IGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKIAogICAgICAgICAgICAg
Zm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHNpdCA9IG5vZGUtPmdldFNlcXVlbmNlKCku
YmVnaW4oKTsgc2l0ICE9IG5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHNpdCsrKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpzaXQpLT5nZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpzaXQpLT5nZXRM
aW5lKCkuZmlyc3RfbGluZSk7CiAKICAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMo
KnNpdCk7CiAKQEAgLTEyNjQsNyArMTI4Myw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dy
ZWdhdGUoVmlzaXQgdmkKIAogICAgICAgICAgICAgaWYgKG1JbnNpZGVGdW5jdGlvbikKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEVu
ZExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRM
aW5lKCkubGFzdF9saW5lKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgIn1cbiI7CiAKICAgICAg
ICAgICAgICAgICBtU2NvcGVEZXB0aC0tOwpAQCAtMTI4Myw3ICsxMzAyLDcgQEAgYm9vbCBPdXRw
dXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQogICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RydWN0b3IodmFyaWFibGUtPmdldFR5
cGUoKSwgc2NvcGVkU3RydWN0KHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSksIE5V
TEwpOworICAgICAgICAgICAgICAgICAgICBhZGRDb25zdHJ1Y3Rvcih2YXJpYWJsZS0+Z2V0VHlw
ZSgpLCBzY29wZWRTdHJ1Y3QodmFyaWFibGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+bmFtZSgp
KSwgTlVMTCk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCF2YXJp
YWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCkgfHwgdmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpLT5n
ZXRTeW1ib2woKSAhPSAiIikgICAvLyBWYXJpYWJsZSBkZWNsYXJhdGlvbgpAQCAtMTQwMSw3ICsx
NDIwLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbC0+Z2V0VHlwZSgpLmdl
dFN0cnVjdCgpKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBhZGRDb25zdHJ1Y3RvcihzeW1ib2wtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KHN5bWJvbC0+
Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFkZENvbnN0cnVjdG9yKHN5bWJvbC0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3Qoc3ltYm9sLT5n
ZXRUeXBlKCkuZ2V0U3RydWN0KCktPm5hbWUoKSksIE5VTEwpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8IGFyZ3VtZW50U3RyaW5nKHN5bWJvbCk7
CkBAIC0xNjUwLDggKzE2NjksOCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZp
c2l0IHZpCiAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJtYXQ0KCIsICIsICIsICIpIik7
CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RTdHJ1Y3Q6Ci0gICAgICAg
IGFkZENvbnN0cnVjdG9yKG5vZGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5vZGUtPmdldFR5
cGUoKS5nZXRUeXBlTmFtZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOwotICAgICAgICBvdXRw
dXRUcmlwbGV0KHZpc2l0LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdldFR5cGVOYW1l
KCkpICsgIl9jdG9yKCIsICIsICIsICIpIik7CisgICAgICAgIGFkZENvbnN0cnVjdG9yKG5vZGUt
PmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+bmFt
ZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0
LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5uYW1lKCkpICsgIl9j
dG9yKCIsICIsICIsICIpIik7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BMZXNzVGhh
bjogICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgPCAiLCAiKSIpOyAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOiAgICAgIG91dHB1dFRy
aXBsZXQodmlzaXQsICIoIiwgIiA+ICIsICIpIik7ICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTE3NDEsNyArMTc2MCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24oVmlzaXQg
dmkKIAogICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAgICAgIAotICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUo
bm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQgPDwgIntcbiI7CiAKICAg
ICAgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQpAQCAtMTc0OSwyMCArMTc2OCwyMCBAQCBi
b29sIE91dHB1dEhMU0w6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpCiAgICAgICAgICAgICB0cmF2
ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRM
aW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8
ICI7XG59XG4iOwogCiAgICAgICAgIGlmIChub2RlLT5nZXRGYWxzZUJsb2NrKCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIG91dCA8PCAiZWxzZVxuIjsKIAotICAgICAgICAgICAgb3V0cHV0TGlu
ZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7CisgICAgICAgICAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZp
cnN0X2xpbmUpOwogICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwogCi0gICAgICAgICAgICBvdXRw
dXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpKTsKKyAgICAg
ICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5l
KCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0
RmFsc2VCbG9jaygpKTsKIAotICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5n
ZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7CisgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0
aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAg
ICAgICAgb3V0IDw8ICI7XG59XG4iOwogICAgICAgICB9CiAgICAgfQpAQCAtMTc5NSw3ICsxODE0
LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIAogICAgIHsKICAg
ICAgICAgb3V0IDw8ICJ7ZG9cbiI7CiAKLSAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2Rl
LT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUo
KS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8ICJ7XG4iOwogICAgIH0KICAgICBlbHNlCkBA
IC0xODIzLDcgKzE4NDIsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2aXNp
dCwgCiAKICAgICAgICAgb3V0IDw8ICIpXG4iOwogICAgICAgICAKLSAgICAgICAgb3V0cHV0TGlu
ZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZl
KG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8ICJ7XG4iOwogICAg
IH0KIApAQCAtMTgzMiwxMiArMTg1MSwxMiBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChW
aXNpdCB2aXNpdCwgCiAgICAgICAgIHRyYXZlcnNlU3RhdGVtZW50cyhub2RlLT5nZXRCb2R5KCkp
OwogICAgIH0KIAotICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICBv
dXQgPDwgIjt9XG4iOwogCiAgICAgaWYgKG5vZGUtPmdldFR5cGUoKSA9PSBFTG9vcERvV2hpbGUp
CiAgICAgewotICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENvbmRpdGlvbigp
LT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENvbmRp
dGlvbigpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAid2hpbGUoXG4i
OwogCiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKQEAgLTE5
NzcsNyArMTk5Niw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcChUSW4K
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0g
RWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBzeW1ib2w7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCA9IGNvbnN0YW50LT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpWzBdLmdldElDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluaXRpYWwgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTk5
OSw3ICsyMDE4LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgog
ICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50ICYm
IGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICBjb21wYXJhdG9yID0gdGVzdC0+Z2V0T3AoKTsKLSAgICAgICAgICAg
ICAgICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVswXS5nZXRJ
Q29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0SUNvbnN0
KDApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjAy
MCw3ICsyMDM5LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBl
KCkgPT0gRWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSBjb25zdGFudC0+Z2V0
VW5pb25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAg
aW50IHZhbHVlID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKG9wKQogICAgICAgICAgICAgICAgICAgICB7CkBAIC0yMTA5LDcgKzIxMjgsNyBA
QCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAg
ICAgb3V0IDw8IGluY3JlbWVudDsKICAgICAgICAgICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5n
ZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0
TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAie1xuIjsKIAogICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5nZXRCb2R5KCkpCkBAIC0yMTE3LDcgKzIxMzYsNyBAQCBi
b29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPmdldEJvZHkoKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOwor
ICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0
X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAiO31cbiI7CiAKICAgICAgICAgICAgICAg
ICBpZiAoIWZpcnN0TG9vcEZyYWdtZW50KQpAQCAtMjIxMywyMiArMjIzMiwyMyBAQCBUU3RyaW5n
IE91dHB1dEhMU0w6OnR5cGVTdHJpbmcoY29uc3QgVFR5CiB7CiAgICAgaWYgKHR5cGUuZ2V0QmFz
aWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsKLSAgICAgICAgaWYgKHR5cGUuZ2V0VHlwZU5h
bWUoKSAhPSAiIikKKyAgICAgICAgY29uc3QgVFN0cmluZyYgdHlwZU5hbWUgPSB0eXBlLmdldFN0
cnVjdCgpLT5uYW1lKCk7CisgICAgICAgIGlmICh0eXBlTmFtZSAhPSAiIikKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlLmdldFR5cGVOYW1lKCkpOworICAg
ICAgICAgICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlTmFtZSk7CiAgICAgICAgIH0KICAgICAg
ICAgZWxzZSAgIC8vIE5hbWVsZXNzIHN0cnVjdHVyZSwgZGVmaW5lIGluIHBsYWNlCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlTGlzdCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0
KCk7CisgICAgICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSB0eXBlLmdldFN0cnVj
dCgpLT5maWVsZHMoKTsKIAogICAgICAgICAgICAgVFN0cmluZyBzdHJpbmcgPSAic3RydWN0XG4i
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRzW2ldLnR5cGU7
CisgICAgICAgICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCA9IGZpZWxkc1tpXTsKIAotICAg
ICAgICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3RyaW5nKGZpZWxkKSArICIgIiAr
IGRlY29yYXRlKGZpZWxkLmdldEZpZWxkTmFtZSgpKSArIGFycmF5U3RyaW5nKGZpZWxkKSArICI7
XG4iOworICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3RyaW5nKCpmaWVs
ZC0+dHlwZSgpKSArICIgIiArIGRlY29yYXRlKGZpZWxkLT5uYW1lKCkpICsgYXJyYXlTdHJpbmco
KmZpZWxkLT50eXBlKCkpICsgIjtcbiI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHN0
cmluZyArPSAifSAiOwpAQCAtMjMwNCwxMSArMjMyNCwxMiBAQCBUU3RyaW5nIE91dHB1dEhMU0w6
OmluaXRpYWxpemVyKGNvbnN0IFRUCiB7CiAgICAgVFN0cmluZyBzdHJpbmc7CiAKLSAgICBmb3Ig
KGludCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCB0eXBlLmdldE9iamVjdFNpemUoKTsgY29t
cG9uZW50KyspCisgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICBm
b3IgKHNpemVfdCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCBzaXplOyBjb21wb25lbnQrKykK
ICAgICB7CiAgICAgICAgIHN0cmluZyArPSAiMCI7CiAKLSAgICAgICAgaWYgKGNvbXBvbmVudCA8
IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpIC0gMSkKKyAgICAgICAgaWYgKGNvbXBvbmVudCArIDEgPCBz
aXplKQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJpbmcgKz0gIiwgIjsKICAgICAgICAgfQpA
QCAtMjM0NywxMyArMjM2OCwxMyBAQCB2b2lkIE91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNv
bnN0IFRUCiAgICAgICAgIHN0cnVjdHVyZSArPSAic3RydWN0ICIgKyBkZWNvcmF0ZShuYW1lKSAr
ICJcbiIKICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCi0gICAgICAgIGNvbnN0IFRUeXBl
TGlzdCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0KCk7CisgICAgICAgIGNvbnN0IFRGaWVsZExp
c3QgJmZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRzW2ldLnR5cGU7CisgICAgICAg
ICAgICBjb25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ldOwogCi0gICAgICAgICAgICBzdHJ1
Y3R1cmUgKz0gIiAgICAiICsgdHlwZVN0cmluZyhmaWVsZCkgKyAiICIgKyBkZWNvcmF0ZUZpZWxk
KGZpZWxkLmdldEZpZWxkTmFtZSgpLCB0eXBlKSArIGFycmF5U3RyaW5nKGZpZWxkKSArICI7XG4i
OworICAgICAgICAgICAgc3RydWN0dXJlICs9ICIgICAgIiArIHR5cGVTdHJpbmcoKmZpZWxkLT50
eXBlKCkpICsgIiAiICsgZGVjb3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCB0eXBlKSArIGFycmF5
U3RyaW5nKCpmaWVsZC0+dHlwZSgpKSArICI7XG4iOwogICAgICAgICB9CiAKICAgICAgICAgc3Ry
dWN0dXJlICs9ICJ9O1xuIjsKQEAgLTIzNjUsNyArMjM4Niw3IEBAIHZvaWQgT3V0cHV0SExTTDo6
YWRkQ29uc3RydWN0b3IoY29uc3QgVFQKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAgICAgICAgICAgY3RvclBh
cmFtZXRlcnMucHVzaF9iYWNrKCpmaWVsZHNbaV0udHlwZSk7CisgICAgICAgICAgICBjdG9yUGFy
YW1ldGVycy5wdXNoX2JhY2soKmZpZWxkc1tpXS0+dHlwZSgpKTsKICAgICAgICAgfQogICAgIH0K
ICAgICBlbHNlIGlmIChwYXJhbWV0ZXJzKQpAQCAtMjQ1OCwyNyArMjQ3OSwzMCBAQCB2b2lkIE91
dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAgICAgfQogICAgIGVsc2UKICAgICB7
Ci0gICAgICAgIGludCByZW1haW5pbmdDb21wb25lbnRzID0gY3RvclR5cGUuZ2V0T2JqZWN0U2l6
ZSgpOwotICAgICAgICBpbnQgcGFyYW1ldGVySW5kZXggPSAwOworICAgICAgICBzaXplX3QgcmVt
YWluaW5nQ29tcG9uZW50cyA9IGN0b3JUeXBlLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6
ZV90IHBhcmFtZXRlckluZGV4ID0gMDsKIAogICAgICAgICB3aGlsZSAocmVtYWluaW5nQ29tcG9u
ZW50cyA+IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZwYXJhbWV0ZXIg
PSBjdG9yUGFyYW1ldGVyc1twYXJhbWV0ZXJJbmRleF07Ci0gICAgICAgICAgICBib29sIG1vcmVQ
YXJhbWV0ZXJzID0gcGFyYW1ldGVySW5kZXggPCAoaW50KWN0b3JQYXJhbWV0ZXJzLnNpemUoKSAt
IDE7CisgICAgICAgICAgICBjb25zdCBzaXplX3QgcGFyYW1ldGVyU2l6ZSA9IHBhcmFtZXRlci5n
ZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICBib29sIG1vcmVQYXJhbWV0ZXJzID0gcGFyYW1l
dGVySW5kZXggKyAxIDwgY3RvclBhcmFtZXRlcnMuc2l6ZSgpOwogCiAgICAgICAgICAgICBjb25z
dHJ1Y3RvciArPSAieCIgKyBzdHIocGFyYW1ldGVySW5kZXgpOwogCiAgICAgICAgICAgICBpZiAo
cGFyYW1ldGVyLmlzU2NhbGFyKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVt
YWluaW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAg
ICAgICAgIEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJlbWFpbmluZ0NvbXBvbmVudHMpOworICAg
ICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6ZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5pc1ZlY3RvcigpKQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmdDb21wb25lbnRzID09IHBh
cmFtZXRlci5nZXRPYmplY3RTaXplKCkgfHwgbW9yZVBhcmFtZXRlcnMpCisgICAgICAgICAgICAg
ICAgaWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPT0gcGFyYW1ldGVyU2l6ZSB8fCBtb3JlUGFyYW1l
dGVycykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ0Nv
bXBvbmVudHMgLT0gcGFyYW1ldGVyLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHBhcmFtZXRlclNpemUgPD0gcmVtYWluaW5nQ29tcG9uZW50cyk7CisgICAgICAg
ICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6ZTsKICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVtYWluaW5nQ29tcG9uZW50
cyA8IHBhcmFtZXRlci5nZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHJlbWFpbmluZ0NvbXBvbmVudHMgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFtZXRlci5nZXRO
b21pbmFsU2l6ZSgpKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAocmVtYWluaW5nQ29tcG9uZW50cykKICAgICAgICAgICAgICAgICAgICAgewpAQCAtMjQ5
NSw5ICsyNTE5LDEwIEBAIHZvaWQgT3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFQK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5pc01hdHJpeCgp
IHx8IHBhcmFtZXRlci5nZXRTdHJ1Y3QoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQocmVtYWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgp
IHx8IG1vcmVQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmVtYWluaW5nQ29t
cG9uZW50cyA9PSBwYXJhbWV0ZXJTaXplIHx8IG1vcmVQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQocGFyYW1ldGVyU2l6ZSA8PSByZW1haW5pbmdDb21wb25lbnRzKTsKICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRzIC09IHBhcmFt
ZXRlci5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nQ29tcG9uZW50
cyAtPSBwYXJhbWV0ZXJTaXplOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBVTlJF
QUNIQUJMRSgpOwogCkBAIC0yNTM0LDE3ICsyNTU5LDE3IEBAIGNvbnN0IENvbnN0YW50VW5pb24g
Kk91dHB1dEhMU0w6OndyaXRlQ28KIAogICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVi
dFN0cnVjdCkKICAgICB7Ci0gICAgICAgIG91dCA8PCBzdHJ1Y3RMb29rdXAodHlwZS5nZXRUeXBl
TmFtZSgpKSArICJfY3RvcigiOworICAgICAgICBvdXQgPDwgc3RydWN0TG9va3VwKHR5cGUuZ2V0
U3RydWN0KCktPm5hbWUoKSkgKyAiX2N0b3IoIjsKICAgICAgICAgCi0gICAgICAgIGNvbnN0IFRU
eXBlTGlzdCAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgY29uc3QgVEZp
ZWxkTGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgaSsrKQorICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAg
ICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOwor
ICAgICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9IGZpZWxkc1tpXS0+dHlwZSgpOwog
CiAgICAgICAgICAgICBjb25zdFVuaW9uID0gd3JpdGVDb25zdGFudFVuaW9uKCpmaWVsZFR5cGUs
IGNvbnN0VW5pb24pOwogCi0gICAgICAgICAgICBpZiAoaSAhPSBzdHJ1Y3R1cmUtPnNpemUoKSAt
IDEpCisgICAgICAgICAgICBpZiAoaSAhPSBmaWVsZHMuc2l6ZSgpIC0gMSkKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKICAgICAgICAgICAgIH0KQEAgLTI1NTQs
NyArMjU3OSw3IEBAIGNvbnN0IENvbnN0YW50VW5pb24gKk91dHB1dEhMU0w6OndyaXRlQ28KICAg
ICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW50IHNpemUgPSB0eXBlLmdldE9iamVjdFNp
emUoKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKICAgICAg
ICAgYm9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAgICAgCiAgICAgICAgIGlmICh3cml0
ZVR5cGUpCkBAIC0yNTYyLDcgKzI1ODcsNyBAQCBjb25zdCBDb25zdGFudFVuaW9uICpPdXRwdXRI
TFNMOjp3cml0ZUNvCiAgICAgICAgICAgICBvdXQgPDwgdHlwZVN0cmluZyh0eXBlKSA8PCAiKCI7
CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKywgY29u
c3RVbmlvbisrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKywgY29u
c3RVbmlvbisrKQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnN0VW5pb24tPmdl
dFR5cGUoKSkKICAgICAgICAgICAgIHsKQEAgLTI2NTUsNyArMjY4MCw3IEBAIFRTdHJpbmcgT3V0
cHV0SExTTDo6ZGVjb3JhdGVVbmlmb3JtKGNvbnMKIAogVFN0cmluZyBPdXRwdXRITFNMOjpkZWNv
cmF0ZUZpZWxkKGNvbnN0IFRTdHJpbmcgJnN0cmluZywgY29uc3QgVFR5cGUgJnN0cnVjdHVyZSkK
IHsKLSAgICBpZiAoc3RydWN0dXJlLmdldFR5cGVOYW1lKCkuY29tcGFyZSgwLCAzLCAiZ2xfIikg
IT0gMCkKKyAgICBpZiAoc3RydWN0dXJlLmdldFN0cnVjdCgpLT5uYW1lKCkuY29tcGFyZSgwLCAz
LCAiZ2xfIikgIT0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBkZWNvcmF0ZShzdHJpbmcpOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRI
TFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L091dHB1dEhMU0wuaAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcs
NyBAQCBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAgICAgYm9vbCBt
VXNlc1BvaW50Q29vcmQ7CiAgICAgYm9vbCBtVXNlc0Zyb250RmFjaW5nOwogICAgIGJvb2wgbVVz
ZXNQb2ludFNpemU7CisgICAgYm9vbCBtVXNlc0ZyYWdEZXB0aDsKICAgICBib29sIG1Vc2VzWG9y
OwogICAgIGJvb2wgbVVzZXNNb2QxOwogICAgIGJvb2wgbVVzZXNNb2QydjsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNw
cAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1BhcnNlSGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjIsNyArMjIsNyBAQAogLy8gTG9v
ayBhdCBhICcuJyBmaWVsZCBzZWxlY3RvciBzdHJpbmcgYW5kIGNoYW5nZSBpdCBpbnRvIG9mZnNl
dHMKIC8vIGZvciBhIHZlY3Rvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9y
RmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCB2ZWNTaXplLCBUVmVjdG9yRmll
bGRzJiBmaWVsZHMsIGludCBsaW5lKQorYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJzZVZlY3RvckZp
ZWxkcyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxk
cyYgZmllbGRzLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGZpZWxkcy5udW0gPSAo
aW50KSBjb21wU3RyaW5nLnNpemUoKTsKICAgICBpZiAoZmllbGRzLm51bSA+IDQpIHsKQEAgLTEx
NSw3ICsxMTUsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKGNvCiAv
LyBMb29rIGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0cmluZyBhbmQgY2hhbmdlIGl0IGludG8g
b2Zmc2V0cwogLy8gZm9yIGEgbWF0cml4LgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VN
YXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IG1hdFNpemUsIFRNYXRy
aXhGaWVsZHMmIGZpZWxkcywgaW50IGxpbmUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0
cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCBtYXRTaXplLCBUTWF0cml4
RmllbGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgZmllbGRzLndo
b2xlUm93ID0gZmFsc2U7CiAgICAgZmllbGRzLndob2xlQ29sID0gZmFsc2U7CkBAIC0xNzUsMjIg
KzE3NSwyNCBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnJlY292ZXIoKQogLy8KIC8vIFVzZWQgYnkg
ZmxleC9iaXNvbiB0byBvdXRwdXQgYWxsIHN5bnRheCBhbmQgcGFyc2luZyBlcnJvcnMuCiAvLwot
dm9pZCBUUGFyc2VDb250ZXh0OjplcnJvcihUU291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29u
dGV4dDo6ZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvKQogewogICAgIHBwOjpTb3VyY2VM
b2NhdGlvbiBzcmNMb2M7Ci0gICAgRGVjb2RlU291cmNlTG9jKGxvYywgJnNyY0xvYy5maWxlLCAm
c3JjTG9jLmxpbmUpOworICAgIHNyY0xvYy5maWxlID0gbG9jLmZpcnN0X2ZpbGU7CisgICAgc3Jj
TG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKICAgICBkaWFnbm9zdGljcy53cml0ZUluZm8ocHA6
OkRpYWdub3N0aWNzOjpFUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCBy
ZWFzb24sIHRva2VuLCBleHRyYUluZm8pOwogCiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6d2Fy
bmluZyhUU291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29udGV4dDo6d2FybmluZyhjb25zdCBU
U291cmNlTG9jJiBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
cmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBleHRyYUluZm8pIHsKICAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwot
ICAgIERlY29kZVNvdXJjZUxvYyhsb2MsICZzcmNMb2MuZmlsZSwgJnNyY0xvYy5saW5lKTsKKyAg
ICBzcmNMb2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOworICAgIHNyY0xvYy5saW5lID0gbG9jLmZp
cnN0X2xpbmU7CiAgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9zdGljczo6V0FS
TklORywKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFzb24sIHRva2VuLCBl
eHRyYUluZm8pOwogfQpAQCAtMjAzLDcgKzIwNSw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dHJh
Y2UoY29uc3QgY2hhciogc3QKIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBwbGFj
ZXMgYXNzaWdubWVudHMgZG9uJ3Qgd29yay4KIC8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OmFzc2ln
bkVycm9yKGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJp
Z2h0KQordm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0g
PDwgImNhbm5vdCBjb252ZXJ0IGZyb20gJyIgPDwgcmlnaHQgPDwgIicgdG8gJyIgPDwgbGVmdCA8
PCAiJyI7CkBAIC0yMTQsNyArMjE2LDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJv
cihpbnQgbGluZQogLy8KIC8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxsIHBsYWNlcyB1bmFy
eSBvcGVyYXRpb25zIGRvbid0IHdvcmsuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0Ojp1bmFyeU9w
RXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpCit2b2lkIFRQ
YXJzZUNvbnRleHQ6OnVuYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBj
aGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKQogewogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJh
SW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBv
cCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhbiBvcGVyYW5kIG9mIHR5cGUgIiA8PCBvcGVyYW5k
IApAQCAtMjI2LDcgKzIyOCw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKGlu
dCBsaW4KIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBiaW5hcnkgb3BlcmF0aW9u
cyBkb24ndCB3b3JrLgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihpbnQg
bGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCkKK3ZvaWQg
VFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25z
dCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAgIHN0ZDo6c3Ry
aW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9w
ZXJhdGlvbiAnIiA8PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhIGxlZnQtaGFuZCBvcGVy
YW5kIG9mIHR5cGUgJyIgPDwgbGVmdCAKQEAgLTIzNSw3ICsyMzcsNyBAQCB2b2lkIFRQYXJzZUNv
bnRleHQ6OmJpbmFyeU9wRXJyb3IoaW50IGxpCiAgICAgZXJyb3IobGluZSwgIiB3cm9uZyBvcGVy
YW5kIHR5cGVzICIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7IAogfQogCi1ib29sIFRQYXJzZUNv
bnRleHQ6OnByZWNpc2lvbkVycm9yQ2hlY2soaW50IGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9u
LCBUQmFzaWNUeXBlIHR5cGUpeworYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFzaWNU
eXBlIHR5cGUpewogICAgIGlmICghY2hlY2tzUHJlY2lzaW9uRXJyb3JzKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgc3dpdGNoKCB0eXBlICl7CkBAIC0yNjMsNyArMjY1LDcgQEAgYm9vbCBU
UGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JD
aGVjayhpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRlcm1UeXBlZCogbm9kZSkKK2Jvb2wg
VFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBj
b25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKiBub2RlKQogewogICAgIFRJbnRlcm1TeW1ib2wq
IHN5bU5vZGUgPSBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsKICAgICBUSW50ZXJtQmluYXJ5KiBi
aW5hcnlOb2RlID0gbm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7CkBAIC0yODYsNyArMjg4LDcgQEAg
Ym9vbCBUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGludAogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBwID0gYWdn
ck5vZGUtPmdldFNlcXVlbmNlKCkuYmVnaW4oKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHAgIT0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7
IHArKykgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSAoKnApLT5nZXRBc1R5cGVk
KCktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29u
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gKCpwKS0+Z2V0QXNUeXBlZCgp
LT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgICAg
ICBvZmZzZXRbdmFsdWVdKys7ICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldFt2
YWx1ZV0gPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFs
dWUgb2Ygc3dpenpsZSBjYW5ub3QgaGF2ZSBkdXBsaWNhdGUgY29tcG9uZW50cyIsIG9wKTsKQEAg
LTMxNyw3ICszMTksNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soaW50
CiAgICAgY2FzZSBFdnFBdHRyaWJ1dGU6ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYW4g
YXR0cmlidXRlIjsgICBicmVhazsKICAgICBjYXNlIEV2cVVuaWZvcm06ICAgICAgICBtZXNzYWdl
ID0gImNhbid0IG1vZGlmeSBhIHVuaWZvcm0iOyAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxVmFy
eWluZ0luOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGEgdmFyeWluZyI7ICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFdnFJbnB1dDogICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkg
YW4gaW5wdXQiOyAgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb29yZDogICAgICBtZXNz
YWdlID0gImNhbid0IG1vZGlmeSBnbF9GcmFnQ29vcmQiOyAgIGJyZWFrOwogICAgIGNhc2UgRXZx
RnJvbnRGYWNpbmc6ICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX0Zyb250RmFjaW5nIjsg
YnJlYWs7CiAgICAgY2FzZSBFdnFQb2ludENvb3JkOiAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2Rp
ZnkgZ2xfUG9pbnRDb29yZCI7ICBicmVhazsKQEAgLTQwOSw3ICs0MTAsNyBAQCBib29sIFRQYXJz
ZUNvbnRleHQ6OmludGVnZXJFcnJvckNoZWNrKFRJCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpnbG9iYWxFcnJvckNoZWNr
KGludCBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pCitib29sIFRQYXJzZUNv
bnRleHQ6Omdsb2JhbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgYm9vbCBnbG9i
YWwsIGNvbnN0IGNoYXIqIHRva2VuKQogewogICAgIGlmIChnbG9iYWwpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTQyOCw3ICs0MjksNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVy
cm9yQ2hlY2soaW50CiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4K
IC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JDaGVjayhpbnQgbGluZSwgY29u
c3QgVFN0cmluZyYgaWRlbnRpZmllcikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIp
CiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc2VydmVkRXJyTXNnID0gInJlc2VydmVkIGJ1
aWx0LWluIG5hbWUiOwogICAgIGlmICghc3ltYm9sVGFibGUuYXRCdWlsdEluTGV2ZWwoKSkgewpA
QCAtNDY2LDcgKzQ2Nyw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNr
KGkKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGluIGNvbnN0cnVj
dGlvbi4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQg
bGluZSwgVEludGVybU5vZGUqIG5vZGUsIFRGdW5jdGlvbiYgZnVuY3Rpb24sIFRPcGVyYXRvciBv
cCwgVFR5cGUqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogbm9kZSwgVEZ1bmN0aW9uJiBm
dW5jdGlvbiwgVE9wZXJhdG9yIG9wLCBUVHlwZSogdHlwZSkKIHsKICAgICAqdHlwZSA9IGZ1bmN0
aW9uLmdldFJldHVyblR5cGUoKTsKIApAQCAtNDg3LDcgKzQ4OCw3IEBAIGJvb2wgVFBhcnNlQ29u
dGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWMKICAgICAvLyBhZ2FpbiwgdGhlcmUgaXMgYW4gZXh0
cmEgYXJndW1lbnQsIHNvICdvdmVyZnVsbCcgd2lsbCBiZWNvbWUgdHJ1ZS4KICAgICAvLwogCi0g
ICAgaW50IHNpemUgPSAwOworICAgIHNpemVfdCBzaXplID0gMDsKICAgICBib29sIGNvbnN0VHlw
ZSA9IHRydWU7CiAgICAgYm9vbCBmdWxsID0gZmFsc2U7CiAgICAgYm9vbCBvdmVyRnVsbCA9IGZh
bHNlOwpAQCAtNTM0LDcgKzUzNSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JF
cnJvckNoZWMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGlmIChvcCA9
PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXkoKSAmJiBpbnQodHlwZS0+Z2V0
U3RydWN0KCktPnNpemUoKSkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSB7CisgICAgaWYg
KG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgpICYmIGludCh0eXBl
LT5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCkuc2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50
KCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgIk51bWJlciBvZiBjb25zdHJ1Y3RvciBwYXJhbWV0
ZXJzIGRvZXMgbm90IG1hdGNoIHRoZSBudW1iZXIgb2Ygc3RydWN0dXJlIGZpZWxkcyIsICJjb25z
dHJ1Y3RvciIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC01NjgsNyArNTY5LDcg
QEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlYwogLy8KIC8vIHJldHVy
bnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojp2b2lk
RXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgVFB1
YmxpY1R5cGUmIHB1YlR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFRQ
dWJsaWNUeXBlJiBwdWJUeXBlKQogewogICAgIGlmIChwdWJUeXBlLnR5cGUgPT0gRWJ0Vm9pZCkg
ewogICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCBpZGVu
dGlmaWVyLmNfc3RyKCkpOwpAQCAtNTgyLDcgKzU4Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
dm9pZEVycm9yQ2hlY2soaW50IGwKIC8vCiAvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBl
cnJvcgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soaW50IGxpbmUsIGNv
bnN0IFRJbnRlcm1UeXBlZCogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hl
Y2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEludGVybVR5cGVkKiB0eXBlKQogewog
ICAgIGlmICh0eXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRCb29sIHx8IHR5cGUtPmlzQXJyYXko
KSB8fCB0eXBlLT5pc01hdHJpeCgpIHx8IHR5cGUtPmlzVmVjdG9yKCkpIHsKICAgICAgICAgZXJy
b3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3RlZCIsICIiKTsKQEAgLTU5Niw3ICs1
OTcsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGludCBsCiAvLwogLy8g
cmV0dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6
OmJvb2xFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpCitib29s
IFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNv
bnN0IFRQdWJsaWNUeXBlJiBwVHlwZSkKIHsKICAgICBpZiAocFR5cGUudHlwZSAhPSBFYnRCb29s
IHx8IHBUeXBlLmFycmF5IHx8IHBUeXBlLm1hdHJpeCB8fCAocFR5cGUuc2l6ZSA+IDEpKSB7CiAg
ICAgICAgIGVycm9yKGxpbmUsICJib29sZWFuIGV4cHJlc3Npb24gZXhwZWN0ZWQiLCAiIik7CkBA
IC02MDYsNyArNjA3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhpbnQg
bAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJy
b3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiBy
ZWFzb24pCitib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciogcmVhc29u
KQogewogICAgIGlmIChwVHlwZS50eXBlID09IEVidFN0cnVjdCkgewogICAgICAgICBpZiAoY29u
dGFpbnNTYW1wbGVyKCpwVHlwZS51c2VyRGVmKSkgewpAQCAtNjI1LDcgKzYyNiw3IEBAIGJvb2wg
VFBhcnNlQ29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2soaW4KICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGlu
ZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0OjpzdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNU
eXBlJiBwVHlwZSkKIHsKICAgICBpZiAoKHBUeXBlLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4g
fHwgcFR5cGUucXVhbGlmaWVyID09IEV2cVZhcnlpbmdPdXQgfHwgcFR5cGUucXVhbGlmaWVyID09
IEV2cUF0dHJpYnV0ZSkgJiYKICAgICAgICAgcFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpIHsKQEAg
LTY0MCw3ICs2NDEsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9y
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNh
bXBsZXJFcnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgY29uc3QgVFR5
cGUmIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBjb25zdCBUVHlw
ZSYgdHlwZSkKIHsKICAgICBpZiAoKHF1YWxpZmllciA9PSBFdnFPdXQgfHwgcXVhbGlmaWVyID09
IEV2cUluT3V0KSAmJiAKICAgICAgICAgICAgICB0eXBlLmdldEJhc2ljVHlwZSgpICE9IEVidFN0
cnVjdCAmJiBJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpIHsKQEAgLTY1Nyw5ICs2NTgs
OSBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxlcihUVHlwCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7
Ci0gICAgICAgIFRUeXBlTGlzdCYgc3RydWN0dXJlID0gKnR5cGUuZ2V0U3RydWN0KCk7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3RydWN0dXJlLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpzdHJ1Y3R1cmVbaV0udHlwZSkpCisg
ICAgICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxk
cygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxlcigqZmllbGRzW2ldLT50eXBl
KCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAt
NjcyLDcgKzY3Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29udGFpbnNTYW1wbGVyKFRUeXAK
IC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBh
cnNlQ29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVybVR5cGVkKiBl
eHByLCBpbnQmIHNpemUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybVR5cGVkKiBleHByLCBpbnQmIHNpemUpCiB7
CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIGNvbnN0YW50ID0gZXhwci0+Z2V0QXNDb25zdGFu
dFVuaW9uKCk7CiAgICAgaWYgKGNvbnN0YW50ID09IDAgfHwgY29uc3RhbnQtPmdldEJhc2ljVHlw
ZSgpICE9IEVidEludCkgewpAQCAtNjgwLDcgKzY4MSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
YXJyYXlTaXplRXJyb3JDaGVjaygKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
c2l6ZSA9IGNvbnN0YW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAg
ICBzaXplID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgIGlmIChzaXplIDw9IDApIHsK
ICAgICAgICAgZXJyb3IobGluZSwgImFycmF5IHNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVn
ZXIiLCAiIik7CkBAIC02OTYsNyArNjk3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNp
emVFcnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4K
IC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGlu
ZSwgVFB1YmxpY1R5cGUgdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlRdWFsaWZpZXJF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCiB7CiAg
ICAgaWYgKCh0eXBlLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpIHx8ICh0eXBlLnF1YWxpZmll
ciA9PSBFdnFDb25zdCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBkZWNsYXJlIGFy
cmF5cyBvZiB0aGlzIHF1YWxpZmllciIsIFRUeXBlKHR5cGUpLmdldENvbXBsZXRlU3RyaW5nKCku
Y19zdHIoKSk7CkBAIC03MTEsNyArNzEyLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVF1
YWxpZmllckVycm9yQwogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4K
IC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soaW50IGxpbmUsIFRQ
dWJsaWNUeXBlIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKIHsKICAgICAvLwogICAg
IC8vIENhbiB0aGUgdHlwZSBiZSBhbiBhcnJheT8KQEAgLTczMiw3ICs3MzMsNyBAQCBib29sIFRQ
YXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soCiAvLwogLy8gUmV0dXJucyB0cnVlIGlm
IHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JD
aGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZh
cmlhYmxlKiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSB0
eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICAvLwogICAgIC8vIERvbid0IGNoZWNr
IGZvciByZXNlcnZlZCB3b3JkIHVzZSB1bnRpbCBhZnRlciB3ZSBrbm93IGl0J3Mgbm90IGluIHRo
ZSBzeW1ib2wgdGFibGUsCkBAIC03NzcsMTYgKzc3OCw2IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
YXJyYXlFcnJvckNoZWNrKGludCAKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAKLSAgICAgICAgVFR5cGUqIHQgPSB2YXJpYWJsZS0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUo
KTsKLSAgICAgICAgd2hpbGUgKHQgIT0gMCkgewotICAgICAgICAgICAgaWYgKHQtPmdldE1heEFy
cmF5U2l6ZSgpID4gdHlwZS5hcnJheVNpemUpIHsKLSAgICAgICAgICAgICAgICBlcnJvcihsaW5l
LCAiaGlnaGVyIGluZGV4IHZhbHVlIGFscmVhZHkgdXNlZCBmb3IgdGhlIGFycmF5IiwgaWRlbnRp
Zmllci5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHQtPnNldEFycmF5U2l6ZSh0eXBlLmFycmF5U2l6ZSk7Ci0gICAgICAg
ICAgICB0ID0gdC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKTsKLSAgICAgICAgfQotCiAgICAg
ICAgIGlmICh0eXBlLmFycmF5U2l6ZSkKICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCku
c2V0QXJyYXlTaXplKHR5cGUuYXJyYXlTaXplKTsKICAgICB9IApAQCAtNzk3LDU2ICs3ODgsMTIg
QEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheUVycm9yQ2hlY2soaW50IAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNldE1heFNpemUoVEludGVybVN5
bWJvbCAqbm9kZSwgVFR5cGUqIHR5cGUsIGludCBzaXplLCBib29sIHVwZGF0ZUZsYWcsIFRTb3Vy
Y2VMb2MgbGluZSkKLXsKLSAgICBib29sIGJ1aWx0SW4gPSBmYWxzZTsKLSAgICBUU3ltYm9sKiBz
eW1ib2wgPSBzeW1ib2xUYWJsZS5maW5kKG5vZGUtPmdldFN5bWJvbCgpLCAmYnVpbHRJbik7Ci0g
ICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICIgdW5kZWNsYXJlZCBp
ZGVudGlmaWVyIiwgbm9kZS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8VFZhcmlh
YmxlKj4oc3ltYm9sKTsKLQotICAgIHR5cGUtPnNldEFycmF5SW5mb3JtYXRpb25UeXBlKHZhcmlh
YmxlLT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpKTsKLSAgICB2YXJpYWJsZS0+dXBkYXRlQXJy
YXlJbmZvcm1hdGlvblR5cGUodHlwZSk7Ci0KLSAgICAvLyBzcGVjaWFsIGNhc2luZyB0byB0ZXN0
IGluZGV4IHZhbHVlIG9mIGdsX0ZyYWdEYXRhLiBJZiB0aGUgYWNjZXNzZWQgaW5kZXggaXMgPj0g
Z2xfTWF4RHJhd0J1ZmZlcnMKLSAgICAvLyBpdHMgYW4gZXJyb3IKLSAgICBpZiAobm9kZS0+Z2V0
U3ltYm9sKCkgPT0gImdsX0ZyYWdEYXRhIikgewotICAgICAgICBUU3ltYm9sKiBmcmFnRGF0YSA9
IHN5bWJvbFRhYmxlLmZpbmQoImdsX01heERyYXdCdWZmZXJzIiwgJmJ1aWx0SW4pOwotICAgICAg
ICBBU1NFUlQoZnJhZ0RhdGEpOwotCi0gICAgICAgIGludCBmcmFnRGF0YVZhbHVlID0gc3RhdGlj
X2Nhc3Q8VFZhcmlhYmxlKj4oZnJhZ0RhdGEpLT5nZXRDb25zdFBvaW50ZXIoKVswXS5nZXRJQ29u
c3QoKTsKLSAgICAgICAgaWYgKGZyYWdEYXRhVmFsdWUgPD0gc2l6ZSkgewotICAgICAgICAgICAg
ZXJyb3IobGluZSwgIiIsICJbIiwgImdsX0ZyYWdEYXRhIGNhbiBvbmx5IGhhdmUgYSBtYXggYXJy
YXkgc2l6ZSBvZiB1cCB0byBnbF9NYXhEcmF3QnVmZmVycyIpOwotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyB3ZSBkb250IHdhbnQgdG8gdXBkYXRl
IHRoZSBtYXhBcnJheVNpemUgd2hlbiB0aGlzIGZsYWcgaXMgbm90IHNldCwgd2UganVzdCB3YW50
IHRvIGluY2x1ZGUgdGhpcyAKLSAgICAvLyBub2RlIHR5cGUgaW4gdGhlIGNoYWluIG9mIG5vZGUg
dHlwZXMgc28gdGhhdCBpdHMgdXBkYXRlZCB3aGVuIGEgaGlnaGVyIG1heEFycmF5U2l6ZSBjb21l
cyBpbi4KLSAgICBpZiAoIXVwZGF0ZUZsYWcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHNpemUrKzsKLSAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldE1heEFycmF5U2l6ZShzaXplKTsK
LSAgICB0eXBlLT5zZXRNYXhBcnJheVNpemUoc2l6ZSk7Ci0gICAgVFR5cGUqIHR0ID0gdHlwZTsK
LQotICAgIHdoaWxlKHR0LT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpICE9IDApIHsKLSAgICAg
ICAgdHQgPSB0dC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKTsKLSAgICAgICAgdHQtPnNldE1h
eEFycmF5U2l6ZShzaXplKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIC8vCiAv
LyBFbmZvcmNlIG5vbi1pbml0aWFsaXplciB0eXBlL3F1YWxpZmllciBydWxlcy4KIC8vCiAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4
dDo6bm9uSW5pdENvbnN0RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwg
VFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpCitib29sIFRQYXJzZUNvbnRleHQ6Om5vbklu
aXRDb25zdEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRp
ZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpCiB7CiAgICAgaWYgKHR5cGUucXVh
bGlmaWVyID09IEV2cUNvbnN0KQogICAgIHsKQEAgLTg3OCw3ICs4MjUsNyBAQCBib29sIFRQYXJz
ZUNvbnRleHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNo
ZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSwgVFZh
cmlhYmxlKiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
JiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICBpZiAocmVzZXJ2ZWRFcnJvckNo
ZWNrKGxpbmUsIGlkZW50aWZpZXIpKQogICAgICAgICByZWNvdmVyKCk7CkBAIC04OTgsNyArODQ1
LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhpbgogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJhbUVycm9yQ2hlY2soaW50IGxp
bmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVhbGlmaWVyLCBUVHlw
ZSogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVhbGlm
aWVyLCBUVHlwZSogdHlwZSkKIHsgICAgCiAgICAgaWYgKHF1YWxpZmllciAhPSBFdnFDb25zdCAm
JiBxdWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5KSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJxdWFs
aWZpZXIgbm90IGFsbG93ZWQgb24gZnVuY3Rpb24gcGFyYW1ldGVyIiwgZ2V0UXVhbGlmaWVyU3Ry
aW5nKHF1YWxpZmllcikpOwpAQCAtOTE3LDcgKzg2NCw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
cGFyYW1FcnJvckNoZWNrKGludCAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNl
Q29udGV4dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgZXh0
ZW5zaW9uKQorYm9vbCBUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICBjb25zdCBU
RXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZpb3IoKTsKICAg
ICBURXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBleHRCZWhhdmlvci5m
aW5kKGV4dGVuc2lvbi5jX3N0cigpKTsKQEAgLTk0NSwyMCArODkyLDYgQEAgYm9vbCBUUGFyc2VD
b250ZXh0OjpzdXBwb3J0c0V4dGVuc2lvbihjbwogICAgIHJldHVybiAoaXRlciAhPSBleHRiZWhh
dmlvci5lbmQoKSk7CiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6aGFuZGxlRXh0ZW5zaW9uRGly
ZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBleHROYW1lLCBjb25zdCBjaGFyKiBiZWhhdmlv
cikKLXsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwotICAgIERlY29kZVNvdXJjZUxvYyhs
aW5lLCAmbG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGlyZWN0aXZlSGFuZGxlci5oYW5kbGVF
eHRlbnNpb24obG9jLCBleHROYW1lLCBiZWhhdmlvcik7Ci19Ci0KLXZvaWQgVFBhcnNlQ29udGV4
dDo6aGFuZGxlUHJhZ21hRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBjaGFyKiB2YWx1ZSkKLXsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwotICAgIERlY29k
ZVNvdXJjZUxvYyhsaW5lLCAmbG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGlyZWN0aXZlSGFu
ZGxlci5oYW5kbGVQcmFnbWEobG9jLCBuYW1lLCB2YWx1ZSk7Ci19Ci0KIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwogLy8KIC8vIE5vbi1FcnJvcnMuCkBAIC05NzAsNyArOTAzLDcgQEAgdm9pZCBU
UGFyc2VDb250ZXh0OjpoYW5kbGVQcmFnbWFEaXJlY3RpdgogLy8KIC8vIFJldHVybiB0aGUgZnVu
Y3Rpb24gc3ltYm9sIGlmIGZvdW5kLCBvdGhlcndpc2UgMC4KIC8vCi1jb25zdCBURnVuY3Rpb24q
IFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBi
b29sICpidWlsdEluKQorY29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuY3Rp
b24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBib29sICpidWlsdElu
KQogewogICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hldGhl
ciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgogICAgIC8vIGhpZGRlbiBieSBhIHZhcmlhYmxl
IG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgpAQCAtOTkyLDExICs5MjUsMzIgQEAgY29uc3QgVEZ1
bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuYwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBURnVuY3Rpb24qPihzeW1ib2wpOwogfQogCitib29sIFRQYXJzZUNvbnRleHQ6OmlzVmFy
aWFibGVCdWlsdEluKGNvbnN0IFRWYXJpYWJsZSogdmFyKQoreworICAgIGJvb2wgYnVpbHRJbiA9
IGZhbHNlOworICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hl
dGhlciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgorICAgIC8vIGhpZGRlbiBieSBhIHZhcmlh
YmxlIG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgorICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9
IHN5bWJvbFRhYmxlLmZpbmQodmFyLT5nZXROYW1lKCksICZidWlsdEluKTsKKyAgICBpZiAoc3lt
Ym9sID09IDApIHsKKyAgICAgICAgc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZCh2YXItPmdldE1h
bmdsZWROYW1lKCksICZidWlsdEluKTsKKyAgICB9CisKKyAgICBpZiAoc3ltYm9sID09IDApIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghc3ltYm9sLT5pc1Zhcmlh
YmxlKCkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBidWls
dEluOworfQorCiAvLwogLy8gSW5pdGlhbGl6ZXJzIHNob3cgdXAgaW4gc2V2ZXJhbCBwbGFjZXMg
aW4gdGhlIGdyYW1tYXIuICBIYXZlIG9uZSBzZXQgb2YKIC8vIGNvZGUgdG8gaGFuZGxlIHRoZW0g
aGVyZS4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihUU291cmNl
TG9jIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlwZSwgCitib29s
IFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbml0aWFsaXplciwgVElu
dGVybU5vZGUqJiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUqIHZhcmlhYmxlKQogewogICAgIFRUeXBl
IHR5cGUgPSBUVHlwZShwVHlwZSk7CkBAIC0xMDQ4LDEzICsxMDAyLDcgQEAgYm9vbCBUUGFyc2VD
b250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIoVAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKSkg
eyAKLSAgICAgICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB2YXJpYWJsZS0+Z2V0
Q29uc3RQb2ludGVyKCk7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlLmdldE9iamVjdFNpemUoKSA9
PSAxICYmIHR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgICAgICAg
ICAgKnVuaW9uQXJyYXkgPSAoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpKVswXTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgdmFyaWFibGUtPnNoYXJlQ29uc3RQb2ludGVyKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0
YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSk7Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICB2YXJpYWJsZS0+c2hhcmVDb25zdFBvaW50ZXIoaW5pdGlhbGl6ZXItPmdldEFzQ29u
c3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKTsKICAgICAgICAgfSBlbHNlIGlm
IChpbml0aWFsaXplci0+Z2V0QXNTeW1ib2xOb2RlKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFRT
eW1ib2wqIHN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQoaW5pdGlhbGl6ZXItPmdldEFzU3ltYm9s
Tm9kZSgpLT5nZXRTeW1ib2woKSk7CiAgICAgICAgICAgICBjb25zdCBUVmFyaWFibGUqIHRWYXIg
PSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOwpAQCAtMTEwOCwxNiArMTA1
NiwxNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QoVEluCiAvLwogLy8g
UmV0dXJucyAwIGZvciBhbiBlcnJvciBvciB0aGUgY29uc3RydWN0ZWQgbm9kZSAoYWdncmVnYXRl
IG9yIHR5cGVkKSBmb3Igbm8gZXJyb3IuCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0
OjphZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFR5cGUqIHR5cGUsIFRP
cGVyYXRvciBvcCwgVEZ1bmN0aW9uKiBmbkNhbGwsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1U
eXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUqIG5vZGUsIGNv
bnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRGdW5jdGlvbiogZm5DYWxsLCBjb25zdCBU
U291cmNlTG9jJiBsaW5lKQogewogICAgIGlmIChub2RlID09IDApCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgVEludGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0
ZSgpOwogICAgIAotICAgIFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyVHlwZXM7Cisg
ICAgVEZpZWxkTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyRmllbGRzOwogICAgIGlmIChvcCA9
PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgIG1lbWJlclR5cGVzID0gdHlwZS0+Z2V0U3Ry
dWN0KCktPmJlZ2luKCk7CisgICAgICAgIG1lbWJlckZpZWxkcyA9IHR5cGUtPmdldFN0cnVjdCgp
LT5maWVsZHMoKS5iZWdpbigpOwogICAgIAogICAgIFRUeXBlIGVsZW1lbnRUeXBlID0gKnR5cGU7
CiAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKQEAgLTExMzksNyArMTA4Nyw3IEBAIFRJbnRlcm1U
eXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5cGUtPmlzQXJy
YXkoKSkKICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgJmVsZW1l
bnRUeXBlLCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKICAgICAgICAgZWxzZSBpZiAob3Ag
PT0gRU9wQ29uc3RydWN0U3RydWN0KQotICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0
cnVjdChub2RlLCAoKm1lbWJlclR5cGVzKS50eXBlLCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNl
KTsKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgKCptZW1iZXJG
aWVsZHMpLT50eXBlKCksIDEsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBvcCwgbm9kZSwg
bm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7CiAKQEAgLTExNzAsNyArMTExOCw3IEBAIFRJbnRlcm1U
eXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5cGUtPmlzQXJy
YXkoKSkKICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsICZlbGVtZW50
VHlwZSwgcGFyYW1Db3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRydWUpOwogICAgICAgICBlbHNl
IGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgICAgICBuZXdOb2RlID0gY29u
c3RydWN0U3RydWN0KCpwLCAobWVtYmVyVHlwZXNbcGFyYW1Db3VudF0pLnR5cGUsIHBhcmFtQ291
bnQrMSwgbm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25z
dHJ1Y3RTdHJ1Y3QoKnAsIG1lbWJlckZpZWxkc1twYXJhbUNvdW50XS0+dHlwZSgpLCBwYXJhbUNv
dW50KzEsIG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IG5ld05vZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCAqcCwgbm9kZS0+Z2V0TGluZSgp
LCB0cnVlKTsKICAgICAgICAgCkBAIC0xMjE2LDcgKzExNjQsNyBAQCBUSW50ZXJtVHlwZWQqIFRQ
YXJzZUNvbnRleHQ6OmZvbGRDb25zdENvCiAvLwogLy8gUmV0dXJucyAwIGZvciBhbiBlcnJvciBv
ciB0aGUgY29uc3RydWN0ZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6
OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVEludGVy
bU5vZGUqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSwgYm9vbCBzdWJzZXQpCitUSW50ZXJtVHlwZWQq
IFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVy
YXRvciBvcCwgVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wg
c3Vic2V0KQogewogICAgIFRJbnRlcm1UeXBlZCogbmV3Tm9kZTsKICAgICBUT3BlcmF0b3IgYmFz
aWNPcDsKQEAgLTEyNzgsNyArMTIyNiw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
Y29uc3RydWN0QnUKIC8vCiAvLyBSZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9yIHRoZSBpbnB1dCBu
b2RlIGl0c2VsZiBpZiB0aGUgZXhwZWN0ZWQgYW5kIHRoZSBnaXZlbiBwYXJhbWV0ZXIgdHlwZXMg
bWF0Y2guCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3Qo
VEludGVybU5vZGUqIG5vZGUsIFRUeXBlKiB0eXBlLCBpbnQgcGFyYW1Db3VudCwgVFNvdXJjZUxv
YyBsaW5lLCBib29sIHN1YnNldCkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3Ry
dWN0U3RydWN0KFRJbnRlcm1Ob2RlKiBub2RlLCBUVHlwZSogdHlwZSwgaW50IHBhcmFtQ291bnQs
IGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQogewogICAgIGlmICgqdHlwZSA9
PSBub2RlLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKSkgewogICAgICAgICBpZiAoc3Vic2V0KQpA
QCAtMTMwNSw3ICsxMjUzLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1
Y3RTdAogLy8gbm9kZSBvciBpdCBjb3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRyZWUgcmVwcmVz
ZW50YXRpb24gb2YgYWNjZXNzaW5nIGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVjdHVyZSBvciBj
b2x1bW4gb2YgCiAvLyBhIGNvbnN0YW50IG1hdHJpeC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJz
ZUNvbnRleHQ6OmFkZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIFRJbnRl
cm1UeXBlZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250
ZXh0OjphZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBUSW50ZXJtVHlw
ZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0
eXBlZE5vZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBu
b2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTEzMTMsNyArMTI2MSw2IEBAIFRJbnRlcm1U
eXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uICp1bmlv
bkFycmF5OwogICAgIGlmICh0ZW1wQ29uc3RhbnROb2RlKSB7CiAgICAgICAgIHVuaW9uQXJyYXkg
PSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAgICAgICBBU1NF
UlQodW5pb25BcnJheSk7CiAKICAgICAgICAgaWYgKCF1bmlvbkFycmF5KSB7CiAgICAgICAgICAg
ICByZXR1cm4gbm9kZTsKQEAgLTEzMjgsNyArMTI3NSw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNl
Q29udGV4dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bZmllbGRzLm51bV07CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZp
ZWxkcy5udW07IGkrKykgewotICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0gPj0gbm9kZS0+
Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSkgeworICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNb
aV0gPj0gbm9kZS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkpIHsKICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAgIGV4dHJhSW5mb1N0
cmVhbSA8PCAidmVjdG9yIGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgZmllbGRz
Lm9mZnNldHNbaV0gPDwgIiciOwogICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0g
ZXh0cmFJbmZvU3RyZWFtLnN0cigpOwpAQCAtMTM1MCw3ICsxMjk3LDcgQEAgVEludGVybVR5cGVk
KiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFZlYwogLy8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVp
dGhlciBiZSBhIHN5bWJvbCBub2RlIChtWzBdIHdoZXJlIG0gaXMgYSBjb25zdGFudCBtYXRyaXgp
dGhhdCByZXByZXNlbnRzIGEgCiAvLyBjb25zdGFudCBtYXRyaXggb3IgaXQgY291bGQgYmUgdGhl
IHRyZWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnN0YW50IG1hdHJpeCAocy5tMVswXSB3aGVy
ZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29u
dGV4dDo6YWRkQ29uc3RNYXRyaXhOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBU
U291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0
cml4Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYg
bGluZSkKIHsKICAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZTsKICAgICBUSW50ZXJtQ29uc3Rh
bnRVbmlvbiogdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwpA
QCAtMTM4NSw3ICsxMzMyLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25z
dE1hdAogLy8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChh
WzBdIHdoZXJlIGEgaXMgYSBjb25zdGFudCBhcnJheSl0aGF0IHJlcHJlc2VudHMgYSAKIC8vIGNv
bnN0YW50IGFycmF5IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRo
ZSBjb25zdGFudCBhcnJheSAocy5hMVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJl
KQogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50
IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBl
ZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlw
ZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0
eXBlZE5vZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBu
b2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTE0MDEsOSArMTM0OCw4IEBAIFRJbnRlcm1U
eXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnIKICAgICAgICAgaW5kZXggPSAwOwogICAg
IH0KIAotICAgIGludCBhcnJheUVsZW1lbnRTaXplID0gYXJyYXlFbGVtZW50VHlwZS5nZXRPYmpl
Y3RTaXplKCk7Ci0KICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgeworICAgICAgICAgc2l6ZV90
IGFycmF5RWxlbWVudFNpemUgPSBhcnJheUVsZW1lbnRUeXBlLmdldE9iamVjdFNpemUoKTsKICAg
ICAgICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpOwogICAgICAgICAgdHlwZWROb2RlID0gaW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24oJnVuaW9uQXJyYXlbYXJyYXlFbGVtZW50U2l6ZSAqIGluZGV4XSwgdGVt
cENvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsKICAgICB9IGVsc2UgewpAQCAtMTQyMiwy
MiArMTM2OCwyMSBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0QXJyCiAv
LyBJZiB0aGVyZSBpcyBhbiBlbWJlZGRlZC9uZXN0ZWQgc3RydWN0LCBpdCBhcHByb3ByaWF0ZWx5
IGNhbGxzIGFkZENvbnN0U3RydWN0TmVzdGVkIG9yIGFkZENvbnN0U3RydWN0RnJvbUFnZ3IKIC8v
IGZ1bmN0aW9uIGFuZCByZXR1cm5zIHRoZSBwYXJzZS10cmVlIHdpdGggdGhlIHZhbHVlcyBvZiB0
aGUgZW1iZWRkZWQvbmVzdGVkIHN0cnVjdC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRl
eHQ6OmFkZENvbnN0U3RydWN0KFRTdHJpbmcmIGlkZW50aWZpZXIsIFRJbnRlcm1UeXBlZCogbm9k
ZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25z
dFN0cnVjdChUU3RyaW5nJiBpZGVudGlmaWVyLCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUpCiB7Ci0gICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSBub2RlLT5n
ZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgVEludGVybVR5cGVkICp0eXBlZE5vZGU7Ci0gICAg
aW50IGluc3RhbmNlU2l6ZSA9IDA7Ci0gICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKLSAgICBU
SW50ZXJtQ29uc3RhbnRVbmlvbiAqdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3Rh
bnRVbmlvbigpOworICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IG5vZGUtPmdldFR5cGUo
KS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICBmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwg
ZmllbGRzLT5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKCgqZmllbGRzKVtpbmRleF0u
dHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gaWRlbnRpZmllcikgeworICAgIHNpemVfdCBpbnN0YW5j
ZVNpemUgPSAwOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZHMuc2l6
ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChmaWVsZHNbaW5kZXhdLT5uYW1lKCkgPT0gaWRl
bnRpZmllcikgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBpbnN0YW5jZVNpemUgKz0gKCpmaWVsZHMpW2luZGV4XS50eXBlLT5nZXRPYmplY3RTaXpl
KCk7CisgICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0gZmllbGRzW2luZGV4XS0+dHlwZSgpLT5n
ZXRPYmplY3RTaXplKCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBUSW50ZXJtVHlwZWQqIHR5
cGVkTm9kZSA9IDA7CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUg
PSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkg
ewogICAgICAgICAgQ29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHRlbXBDb25zdGFudE5vZGUt
PmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAKQEAgLTE0NTIsNyArMTM5Nyw3IEBAIFRJbnRlcm1U
eXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RTdHIKICAgICByZXR1cm4gdHlwZWROb2RlOwog
fQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24oaW50IGxpbmUs
IGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCitib29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3Ry
dWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRl
bnRpZmllcikKIHsKICAgICArK3N0cnVjdE5lc3RpbmdMZXZlbDsKIApAQCAtMTQ3OCwyMSArMTQy
MywyMSBAQCBjb25zdCBpbnQga1dlYkdMTWF4U3RydWN0TmVzdGluZyA9IDQ7CiAKIH0gIC8vIG5h
bWVzcGFjZQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKFRT
b3VyY2VMb2MgbGluZSwgY29uc3QgVFR5cGUmIGZpZWxkVHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4
dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3Qg
VEZpZWxkJiBmaWVsZCkKIHsKICAgICBpZiAoIWlzV2ViR0xCYXNlZFNwZWMoc2hhZGVyU3BlYykp
IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChmaWVsZFR5cGUuZ2V0
QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7CisgICAgaWYgKGZpZWxkLnR5cGUoKS0+Z2V0QmFz
aWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICAvLyBXZSdyZSBhbHJlYWR5IGluc2lkZSBhIHN0cnVjdHVyZSBkZWZpbml0aW9uIGF0IHRo
aXMgcG9pbnQsIHNvIGFkZAogICAgIC8vIG9uZSB0byB0aGUgZmllbGQncyBzdHJ1Y3QgbmVzdGlu
Zy4KLSAgICBpZiAoMSArIGZpZWxkVHlwZS5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpID4ga1dl
YkdMTWF4U3RydWN0TmVzdGluZykgeworICAgIGlmICgxICsgZmllbGQudHlwZSgpLT5nZXREZWVw
ZXN0U3RydWN0TmVzdGluZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgewogICAgICAgICBz
dGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVh
bSA8PCAiUmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGRUeXBlLmdldFR5cGVOYW1l
KCkgCisgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBl
ICIgPDwgZmllbGQubmFtZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGV4Y2VlZHMg
bWF4aW11bSBzdHJ1Y3QgbmVzdGluZyBvZiAiIDw8IGtXZWJHTE1heFN0cnVjdE5lc3Rpbmc7CiAg
ICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKICAg
ICAgICAgZXJyb3IobGluZSwgIiIsICIiLCBleHRyYUluZm8uY19zdHIoKSk7CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAko
cmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1BhcnNlSGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMyw4IEBAIHN0cnVjdCBU
UGFyc2VDb250ZXh0IHsKICAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zKG9wdGlvbnMpLAogICAg
ICAgICAgICAgc291cmNlUGF0aChzb3VyY2VQYXRoKSwKICAgICAgICAgICAgIHRyZWVSb290KDAp
LAotICAgICAgICAgICAgbGV4QWZ0ZXJUeXBlKGZhbHNlKSwKICAgICAgICAgICAgIGxvb3BOZXN0
aW5nTGV2ZWwoMCksCiAgICAgICAgICAgICBzdHJ1Y3ROZXN0aW5nTGV2ZWwoMCksCi0gICAgICAg
ICAgICBpblR5cGVQYXJlbihmYWxzZSksCiAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb25UeXBl
KE5VTEwpLAogICAgICAgICAgICAgZnVuY3Rpb25SZXR1cm5zVmFsdWUoZmFsc2UpLAogICAgICAg
ICAgICAgY2hlY2tzUHJlY2lzaW9uRXJyb3JzKGNoZWNrc1ByZWNFcnJvcnMpLApAQCAtNTEsMTYg
KzQ5LDEzIEBAIHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKICAgICBpbnQgY29tcGlsZU9wdGlvbnM7
CiAgICAgY29uc3QgY2hhciogc291cmNlUGF0aDsgICAgICAvLyBQYXRoIG9mIHNvdXJjZSBmaWxl
IG9yIE5VTEwuCiAgICAgVEludGVybU5vZGUqIHRyZWVSb290OyAgICAgICAvLyByb290IG9mIHBh
cnNlIHRyZWUgYmVpbmcgY3JlYXRlZAotICAgIGJvb2wgbGV4QWZ0ZXJUeXBlOyAgICAgICAgICAg
Ly8gdHJ1ZSBpZiB3ZSd2ZSByZWNvZ25pemVkIGEgdHlwZSwgc28gY2FuIG9ubHkgYmUgbG9va2lu
ZyBmb3IgYW4gaWRlbnRpZmllcgogICAgIGludCBsb29wTmVzdGluZ0xldmVsOyAgICAgICAgLy8g
MCBpZiBvdXRzaWRlIGFsbCBsb29wcwogICAgIGludCBzdHJ1Y3ROZXN0aW5nTGV2ZWw7ICAgICAg
Ly8gaW5jcmVtZW50ZWQgd2hpbGUgcGFyc2luZyBhIHN0cnVjdCBkZWNsYXJhdGlvbgotICAgIGJv
b2wgaW5UeXBlUGFyZW47ICAgICAgICAgICAgLy8gdHJ1ZSBpZiBpbiBwYXJlbnRoZXNlcywgbG9v
a2luZyBvbmx5IGZvciBhbiBpZGVudGlmaWVyCiAgICAgY29uc3QgVFR5cGUqIGN1cnJlbnRGdW5j
dGlvblR5cGU7ICAvLyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQncyBjdXJy
ZW50bHkgYmVpbmcgcGFyc2VkCiAgICAgYm9vbCBmdW5jdGlvblJldHVybnNWYWx1ZTsgICAvLyB0
cnVlIGlmIGEgbm9uLXZvaWQgZnVuY3Rpb24gaGFzIGEgcmV0dXJuCiAgICAgYm9vbCBjaGVja3NQ
cmVjaXNpb25FcnJvcnM7ICAvLyB0cnVlIGlmIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkIHdo
ZW4gYSB2YXJpYWJsZSBpcyBkZWNsYXJlZCB3aXRob3V0IHByZWNpc2lvbiwgZXhwbGljaXQgb3Ig
aW1wbGljaXQuCiAgICAgYm9vbCBmcmFnbWVudFByZWNpc2lvbkhpZ2g7ICAvLyB0cnVlIGlmIGhp
Z2hwIHByZWNpc2lvbiBpcyBzdXBwb3J0ZWQgaW4gdGhlIGZyYWdtZW50IGxhbmd1YWdlLgogICAg
IFRTdHJpbmcgSGFzaEVyck1zZzsKLSAgICBib29sIEFmdGVyRU9GOwogICAgIFREaWFnbm9zdGlj
cyBkaWFnbm9zdGljczsKICAgICBURGlyZWN0aXZlSGFuZGxlciBkaXJlY3RpdmVIYW5kbGVyOwog
ICAgIHBwOjpQcmVwcm9jZXNzb3IgcHJlcHJvY2Vzc29yOwpAQCAtNjgsNzEgKzYzLDY4IEBAIHN0
cnVjdCBUUGFyc2VDb250ZXh0IHsKIAogICAgIGludCBudW1FcnJvcnMoKSBjb25zdCB7IHJldHVy
biBkaWFnbm9zdGljcy5udW1FcnJvcnMoKTsgfQogICAgIFRJbmZvU2luayYgaW5mb1NpbmsoKSB7
IHJldHVybiBkaWFnbm9zdGljcy5pbmZvU2luaygpOyB9Ci0gICAgdm9pZCBlcnJvcihUU291cmNl
TG9jIGxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKKyAgICB2b2lk
IGVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBj
aGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5mbz0iIik7Ci0g
ICAgdm9pZCB3YXJuaW5nKFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0
IGNoYXIqIHRva2VuLAorICAgIHZvaWQgd2FybmluZyhjb25zdCBUU291cmNlTG9jJiBsb2MsIGNv
bnN0IGNoYXIqIHJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCiAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGV4dHJhSW5mbz0iIik7CiAgICAgdm9pZCB0cmFjZShjb25zdCBjaGFyKiBzdHIp
OwogICAgIHZvaWQgcmVjb3ZlcigpOwogCi0gICAgYm9vbCBwYXJzZVZlY3RvckZpZWxkcyhjb25z
dCBUU3RyaW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBpbnQgbGluZSk7Ci0gICAg
Ym9vbCBwYXJzZU1hdHJpeEZpZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IG1hdFNpemUsIFRNYXRy
aXhGaWVsZHMmLCBpbnQgbGluZSk7CisgICAgYm9vbCBwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBU
U3RyaW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291cmNlTG9jJiBs
aW5lKTsKKyAgICBib29sIHBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgbWF0
U2l6ZSwgVE1hdHJpeEZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpOwogCi0gICAgYm9v
bCByZXNlcnZlZEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIp
OwotICAgIHZvaWQgYXNzaWduRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5n
IGxlZnQsIFRTdHJpbmcgcmlnaHQpOwotICAgIHZvaWQgdW5hcnlPcEVycm9yKGludCBsaW5lLCBj
b25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKTsKLSAgICB2b2lkIGJpbmFyeU9wRXJyb3Io
aW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOwot
ICAgIGJvb2wgcHJlY2lzaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgVFByZWNpc2lvbiBwcmVjaXNp
b24sIFRCYXNpY1R5cGUgdHlwZSk7Ci0gICAgYm9vbCBsVmFsdWVFcnJvckNoZWNrKGludCBsaW5l
LCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CisgICAgYm9vbCByZXNlcnZlZEVycm9y
Q2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcik7
CisgICAgdm9pZCBhc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFy
KiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKKyAgICB2b2lkIHVuYXJ5T3BFcnJv
cihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5k
KTsKKyAgICB2b2lkIGJpbmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3Qg
Y2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7CisgICAgYm9vbCBwcmVjaXNp
b25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9u
LCBUQmFzaWNUeXBlIHR5cGUpOworICAgIGJvb2wgbFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CiAgICAgYm9vbCBj
b25zdEVycm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlKTsKICAgICBib29sIGludGVnZXJFcnJv
ckNoZWNrKFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgY2hhciogdG9rZW4pOwotICAgIGJvb2wg
Z2xvYmFsRXJyb3JDaGVjayhpbnQgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2Vu
KTsKLSAgICBib29sIGNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVybU5vZGUq
LCBURnVuY3Rpb24mLCBUT3BlcmF0b3IsIFRUeXBlKik7Ci0gICAgYm9vbCBhcnJheVNpemVFcnJv
ckNoZWNrKGludCBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7Ci0gICAgYm9v
bCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOwot
ICAgIGJvb2wgYXJyYXlUeXBlRXJyb3JDaGVjayhpbnQgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7
Ci0gICAgYm9vbCBhcnJheUVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIs
IFRQdWJsaWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKLSAgICBib29sIHZvaWRF
cnJvckNoZWNrKGludCwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRQdWJsaWNUeXBlJik7Ci0gICAg
Ym9vbCBib29sRXJyb3JDaGVjayhpbnQsIGNvbnN0IFRJbnRlcm1UeXBlZCopOwotICAgIGJvb2wg
Ym9vbEVycm9yQ2hlY2soaW50LCBjb25zdCBUUHVibGljVHlwZSYpOwotICAgIGJvb2wgc2FtcGxl
ckVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hh
ciogcmVhc29uKTsKLSAgICBib29sIHN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUs
IGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSk7Ci0gICAgYm9vbCBwYXJhbWV0ZXJTYW1wbGVyRXJy
b3JDaGVjayhpbnQgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlJiB0eXBl
KTsKLSAgICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlk
ZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KTsKLSAgICBib29sIG5vbklu
aXRFcnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYg
dHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOwotICAgIGJvb2wgcGFyYW1FcnJvckNoZWNrKGlu
dCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwg
VFR5cGUqIHR5cGUpOwotICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29u
c3QgVFN0cmluZyYpOworICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pOworICAgIGJvb2wgY29uc3Ry
dWN0b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1Ob2RlKiwgVEZ1
bmN0aW9uJiwgVE9wZXJhdG9yLCBUVHlwZSopOworICAgIGJvb2wgYXJyYXlTaXplRXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7
CisgICAgYm9vbCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgVFB1YmxpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBhcnJheVR5cGVFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOworICAgIGJvb2wgYXJyYXlFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJs
aWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHZvaWRFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFB1YmxpY1R5cGUm
KTsKKyAgICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUSW50
ZXJtVHlwZWQqKTsKKyAgICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBj
b25zdCBUUHVibGljVHlwZSYpOworICAgIGJvb2wgc2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNv
dXJjZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiByZWFz
b24pOworICAgIGJvb2wgc3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpOworICAgIGJvb2wgcGFyYW1ldGVyU2Ft
cGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmllciBxdWFsaWZp
ZXIsIGNvbnN0IFRUeXBlJiB0eXBlKTsKKyAgICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUm
IHR5cGUsIGJvb2wgYXJyYXkpOworICAgIGJvb2wgbm9uSW5pdEVycm9yQ2hlY2soY29uc3QgVFNv
dXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIFRW
YXJpYWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxp
ZmllciwgVFR5cGUqIHR5cGUpOworICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJik7CiAKKyAgICBjb25zdCBUUHJhZ21hJiBw
cmFnbWEoKSBjb25zdCB7IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLnByYWdtYSgpOyB9CiAgICAg
Y29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBleHRlbnNpb25CZWhhdmlvcigpIGNvbnN0IHsgcmV0
dXJuIGRpcmVjdGl2ZUhhbmRsZXIuZXh0ZW5zaW9uQmVoYXZpb3IoKTsgfQogICAgIGJvb2wgc3Vw
cG9ydHNFeHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9uKTsKLSAgICB2b2lkIGhhbmRsZUV4
dGVuc2lvbkRpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogZXh0TmFtZSwgY29uc3QgY2hh
ciogYmVoYXZpb3IpOwotCi0gICAgY29uc3QgVFByYWdtYSYgcHJhZ21hKCkgY29uc3QgeyByZXR1
cm4gZGlyZWN0aXZlSGFuZGxlci5wcmFnbWEoKTsgfQotICAgIHZvaWQgaGFuZGxlUHJhZ21hRGly
ZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSk7CiAK
ICAgICBib29sIGNvbnRhaW5zU2FtcGxlcihUVHlwZSYgdHlwZSk7CiAgICAgYm9vbCBhcmVBbGxD
aGlsZENvbnN0KFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlKTsKLSAgICBjb25zdCBURnVuY3Rp
b24qIGZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBib29sICpidWls
dEluID0gMCk7Ci0gICAgYm9vbCBleGVjdXRlSW5pdGlhbGl6ZXIoVFNvdXJjZUxvYyBsaW5lLCBU
U3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsCisgICAgY29uc3QgVEZ1bmN0
aW9uKiBmaW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBwZm5D
YWxsLCBib29sICpidWlsdEluID0gMCk7CisgICAgYm9vbCBpc1ZhcmlhYmxlQnVpbHRJbihjb25z
dCBUVmFyaWFibGUqIHBWYXIpOworICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluaXRpYWxpemVyLCBU
SW50ZXJtTm9kZSomIGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwKTsKLSAgICBi
b29sIGFycmF5U2V0TWF4U2l6ZShUSW50ZXJtU3ltYm9sKiwgVFR5cGUqLCBpbnQsIGJvb2wsIFRT
b3VyY2VMb2MpOwogCi0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9k
ZSosIGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBURnVuY3Rpb24qLCBUU291cmNlTG9jKTsKKyAg
ICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0cnVjdG9yKFRJbnRlcm1Ob2RlKiwgY29uc3QgVFR5cGUq
LCBUT3BlcmF0b3IsIFRGdW5jdGlvbiosIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAgICBUSW50ZXJt
VHlwZWQqIGZvbGRDb25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlLCBj
b25zdCBUVHlwZSYgdHlwZSk7Ci0gICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RTdHJ1Y3QoVElu
dGVybU5vZGUqLCBUVHlwZSosIGludCwgVFNvdXJjZUxvYywgYm9vbCBzdWJzZXQpOwotICAgIFRJ
bnRlcm1UeXBlZCogY29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSosIFRPcGVyYXRvciwgVElu
dGVybU5vZGUqLCBUU291cmNlTG9jLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVybVR5cGVkKiBh
ZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCosIFRTb3VyY2VM
b2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhOb2RlKGludCAsIFRJbnRlcm1U
eXBlZCosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RBcnJheU5vZGUo
aW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSk7Ci0gICAgVElu
dGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJbnRlcm1UeXBlZCosIFRTb3Vy
Y2VMb2MpOworICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiwg
VFR5cGUqLCBpbnQsIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7CisgICAgVEludGVy
bVR5cGVkKiBjb25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBUSW50ZXJt
Tm9kZSosIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7CisgICAgVEludGVybVR5cGVk
KiBhZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCosIGNvbnN0
IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0TWF0cml4Tm9kZShpbnQg
LCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBh
ZGRDb25zdEFycmF5Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNv
dXJjZUxvYyYgbGluZSk7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5n
JiAsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKIAogICAgIC8vIFBlcmZvcm1z
IGFuIGVycm9yIGNoZWNrIGZvciBlbWJlZGRlZCBzdHJ1Y3QgZGVjbGFyYXRpb25zLgogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiBhbiBlcnJvciB3YXMgcmFpc2VkIGR1ZSB0byB0aGUgZGVjbGFyYXRp
b24gb2YKICAgICAvLyB0aGlzIHN0cnVjdC4KLSAgICBib29sIGVudGVyU3RydWN0RGVjbGFyYXRp
b24oVFNvdXJjZUxvYyBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICBib29s
IGVudGVyU3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0
cmluZyYgaWRlbnRpZmllcik7CiAgICAgdm9pZCBleGl0U3RydWN0RGVjbGFyYXRpb24oKTsKIAot
ICAgIGJvb2wgc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soVFNvdXJjZUxvYyBsaW5lLCBjb25zdCBU
VHlwZSYgZmllbGRUeXBlKTsKKyAgICBib29sIHN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQpOwogfTsKIAogaW50IFBhUGFy
c2VTdHJpbmdzKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0
IGludCBsZW5ndGhbXSwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9Qb29sQWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Qb29sQWxsb2MuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjI4LDI0ICsyMjgsMjcgQEAgdm9pZCBUUG9vbEFsbG9jYXRvcjo6cG9wQWxsKCkKIAogdm9p
ZCogVFBvb2xBbGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBudW1CeXRlcykKIHsKKyAgICAvLwor
ICAgIC8vIEp1c3Qga2VlcCBzb21lIGludGVyZXN0aW5nIHN0YXRpc3RpY3MuCisgICAgLy8KKyAg
ICArK251bUNhbGxzOworICAgIHRvdGFsQnl0ZXMgKz0gbnVtQnl0ZXM7CisKICAgICAvLyBJZiB3
ZSBhcmUgdXNpbmcgZ3VhcmQgYmxvY2tzLCBhbGwgYWxsb2NhdGlvbnMgYXJlIGJyYWNrZXRlZCBi
eQogICAgIC8vIHRoZW06IFtndWFyZGJsb2NrXVthbGxvY2F0aW9uXVtndWFyZGJsb2NrXS4gIG51
bUJ5dGVzIGlzIGhvdwogICAgIC8vIG11Y2ggbWVtb3J5IHRoZSBjYWxsZXIgYXNrZWQgZm9yLiAg
YWxsb2NhdGlvblNpemUgaXMgdGhlIHRvdGFsCiAgICAgLy8gc2l6ZSBpbmNsdWRpbmcgZ3VhcmQg
YmxvY2tzLiAgSW4gcmVsZWFzZSBidWlsZCwKICAgICAvLyBndWFyZEJsb2NrU2l6ZT0wIGFuZCB0
aGlzIGFsbCBnZXRzIG9wdGltaXplZCBhd2F5LgogICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9
IFRBbGxvY2F0aW9uOjphbGxvY2F0aW9uU2l6ZShudW1CeXRlcyk7Ci0gICAgCi0gICAgLy8KLSAg
ICAvLyBKdXN0IGtlZXAgc29tZSBpbnRlcmVzdGluZyBzdGF0aXN0aWNzLgotICAgIC8vCi0gICAg
KytudW1DYWxsczsKLSAgICB0b3RhbEJ5dGVzICs9IG51bUJ5dGVzOworICAgIC8vIERldGVjdCBp
bnRlZ2VyIG92ZXJmbG93LgorICAgIGlmIChhbGxvY2F0aW9uU2l6ZSA8IG51bUJ5dGVzKQorICAg
ICAgICByZXR1cm4gMDsKIAogICAgIC8vCiAgICAgLy8gRG8gdGhlIGFsbG9jYXRpb24sIG1vc3Qg
bGlrZWx5IGNhc2UgZmlyc3QsIGZvciBlZmZpY2llbmN5LgogICAgIC8vIFRoaXMgc3RlcCBjb3Vs
ZCBiZSBtb3ZlZCB0byBiZSBpbmxpbmUgc29tZXRpbWUuCiAgICAgLy8KLSAgICBpZiAoY3VycmVu
dFBhZ2VPZmZzZXQgKyBhbGxvY2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSkgeworICAgIGlmIChhbGxv
Y2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSAtIGN1cnJlbnRQYWdlT2Zmc2V0KSB7CiAgICAgICAgIC8v
CiAgICAgICAgIC8vIFNhZmUgdG8gYWxsb2NhdGUgZnJvbSBjdXJyZW50UGFnZU9mZnNldC4KICAg
ICAgICAgLy8KQEAgLTI1NiwxMiArMjU5LDE2IEBAIHZvaWQqIFRQb29sQWxsb2NhdG9yOjphbGxv
Y2F0ZShzaXplX3QgbnUKICAgICAgICAgcmV0dXJuIGluaXRpYWxpemVBbGxvY2F0aW9uKGluVXNl
TGlzdCwgbWVtb3J5LCBudW1CeXRlcyk7CiAgICAgfQogCi0gICAgaWYgKGFsbG9jYXRpb25TaXpl
ICsgaGVhZGVyU2tpcCA+IHBhZ2VTaXplKSB7CisgICAgaWYgKGFsbG9jYXRpb25TaXplID4gcGFn
ZVNpemUgLSBoZWFkZXJTa2lwKSB7CiAgICAgICAgIC8vCiAgICAgICAgIC8vIERvIGEgbXVsdGkt
cGFnZSBhbGxvY2F0aW9uLiAgRG9uJ3QgbWl4IHRoZXNlIHdpdGggdGhlIG90aGVycy4KICAgICAg
ICAgLy8gVGhlIE9TIGlzIGVmZmljaWVudCBhbmQgYWxsb2NhdGluZyBhbmQgZnJlZS1pbmcgbXVs
dGlwbGUgcGFnZXMuCiAgICAgICAgIC8vCiAgICAgICAgIHNpemVfdCBudW1CeXRlc1RvQWxsb2Mg
PSBhbGxvY2F0aW9uU2l6ZSArIGhlYWRlclNraXA7CisgICAgICAgIC8vIERldGVjdCBpbnRlZ2Vy
IG92ZXJmbG93LgorICAgICAgICBpZiAobnVtQnl0ZXNUb0FsbG9jIDwgYWxsb2NhdGlvblNpemUp
CisgICAgICAgICAgICByZXR1cm4gMDsKKwogICAgICAgICB0SGVhZGVyKiBtZW1vcnkgPSByZWlu
dGVycHJldF9jYXN0PHRIZWFkZXIqPig6Om5ldyBjaGFyW251bUJ5dGVzVG9BbGxvY10pOwogICAg
ICAgICBpZiAobWVtb3J5ID09IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCShyZXZpc2lv
biAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hIYW5k
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtODEsOCArODEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBJbml0QnVpbHRJblN5bWJvbFRhYmxlKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3Vy
Y2VzKTsKICAgICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgZnJvbSB0aGUgcHJldmlvdXMgY29tcGls
YXRpb24uCiAgICAgdm9pZCBjbGVhclJlc3VsdHMoKTsKLSAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBm
dW5jdGlvbiByZWN1cnNpb24gaXMgZGV0ZWN0ZWQuCi0gICAgYm9vbCBkZXRlY3RSZWN1cnNpb24o
VEludGVybU5vZGUqIHJvb3QpOworICAgIC8vIFJldHVybiB0cnVlIGlmIGZ1bmN0aW9uIHJlY3Vy
c2lvbiBpcyBkZXRlY3RlZCBvciBjYWxsIGRlcHRoIGV4Y2VlZGVkLgorICAgIGJvb2wgZGV0ZWN0
Q2FsbERlcHRoKFRJbnRlcm1Ob2RlKiByb290LCBUSW5mb1NpbmsmIGluZm9TaW5rLCBib29sIGxp
bWl0Q2FsbFN0YWNrRGVwdGgpOwogICAgIC8vIFJld3JpdGVzIGEgc2hhZGVyJ3MgaW50ZXJtZWRp
YXRlIHRyZWUgYWNjb3JkaW5nIHRvIHRoZSBDU1MgU2hhZGVycyBzcGVjLgogICAgIHZvaWQgcmV3
cml0ZUNTU1NoYWRlcihUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBnaXZlbiBzaGFkZXIgZG9lcyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtCkBAIC0xMDQsNiAr
MTA0LDggQEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2hhZGVyIGRv
ZXMgbm90IHVzZSBzYW1wbGVyIGRlcGVuZGVudCB2YWx1ZXMgdG8gYWZmZWN0IGNvbnRyb2wgCiAg
ICAgLy8gZmxvdyBvciBpbiBvcGVyYXRpb25zIHdob3NlIHRpbWUgY2FuIGRlcGVuZCBvbiB0aGUg
aW5wdXQgdmFsdWVzLgogICAgIGJvb2wgZW5mb3JjZUZyYWdtZW50U2hhZGVyVGltaW5nUmVzdHJp
Y3Rpb25zKGNvbnN0IFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKTsKKyAgICAvLyBSZXR1cm4gdHJ1
ZSBpZiB0aGUgbWF4aW11bSBleHByZXNzaW9uIGNvbXBsZXhpdHkgYmVsb3cgdGhlIGxpbWl0Lgor
ICAgIGJvb2wgbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCk7CiAg
ICAgLy8gR2V0IGJ1aWx0LWluIGV4dGVuc2lvbnMgd2l0aCBkZWZhdWx0IGJlaGF2aW9yLgogICAg
IGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZ2V0RXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdDsK
IApAQCAtMTE2LDYgKzExOCw4IEBAIHByaXZhdGU6CiAgICAgU2hTaGFkZXJTcGVjIHNoYWRlclNw
ZWM7CiAKICAgICBpbnQgbWF4VW5pZm9ybVZlY3RvcnM7CisgICAgaW50IG1heEV4cHJlc3Npb25D
b21wbGV4aXR5OworICAgIGludCBtYXhDYWxsU3RhY2tEZXB0aDsKIAogICAgIC8vIEJ1aWx0LWlu
IHN5bWJvbCB0YWJsZSBmb3IgdGhlIGdpdmVuIGxhbmd1YWdlLCBzcGVjLCBhbmQgcmVzb3VyY2Vz
LgogICAgIC8vIEl0IGlzIHByZXNlcnZlZCBmcm9tIGNvbXBpbGUtdG8tY29tcGlsZS4KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hhZGVyTGFu
Zy5jcHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9TaGFkZXJMYW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBA
IHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXMKICAgICByZXNvdXJjZXMt
Pk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgPSAwOwogICAgIHJlc291cmNlcy0+QVJCX3RleHR1cmVf
cmVjdGFuZ2xlID0gMDsKICAgICByZXNvdXJjZXMtPkVYVF9kcmF3X2J1ZmZlcnMgPSAwOworICAg
IHJlc291cmNlcy0+RVhUX2ZyYWdfZGVwdGggPSAwOwogCiAgICAgLy8gRGlzYWJsZSBoaWdocCBw
cmVjaXNpb24gaW4gZnJhZ21lbnQgc2hhZGVyIGJ5IGRlZmF1bHQuCiAgICAgcmVzb3VyY2VzLT5G
cmFnbWVudFByZWNpc2lvbkhpZ2ggPSAwOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCShyZXZpc2lvbiAxNTI2NDkp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNyw0OCArMTcsMzQgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIK
KyNpbmNsdWRlIDxjbGltaXRzPgogCiBUVHlwZTo6VFR5cGUoY29uc3QgVFB1YmxpY1R5cGUgJnAp
IDoKLSAgICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lzaW9uKHAucHJlY2lzaW9uKSwgcXVh
bGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBtYXRyaXgocC5tYXRyaXgpLCBhcnJh
eShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwKLSAgICAgICAgICAgIG1heEFycmF5
U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVyZSgwKSwgc3RydWN0dXJl
U2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgw
KSwgdHlwZU5hbWUoMCkKKyAgICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lzaW9uKHAucHJl
Y2lzaW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBtYXRyaXgocC5t
YXRyaXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwgc3RydWN0dXJl
KDApCiB7Ci0gICAgaWYgKHAudXNlckRlZikgeworICAgIGlmIChwLnVzZXJEZWYpCiAgICAgICAg
IHN0cnVjdHVyZSA9IHAudXNlckRlZi0+Z2V0U3RydWN0KCk7Ci0gICAgICAgIHR5cGVOYW1lID0g
TmV3UG9vbFRTdHJpbmcocC51c2VyRGVmLT5nZXRUeXBlTmFtZSgpLmNfc3RyKCkpOwotICAgICAg
ICBjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsKLSAgICB9CiB9CiAKIC8vCiAvLyBSZWN1
cnNpdmVseSBnZW5lcmF0ZSBtYW5nbGVkIG5hbWVzLgogLy8KLXZvaWQgVFR5cGU6OmJ1aWxkTWFu
Z2xlZE5hbWUoVFN0cmluZyYgbWFuZ2xlZE5hbWUpCitUU3RyaW5nIFRUeXBlOjpidWlsZE1hbmds
ZWROYW1lKCkgY29uc3QKIHsKKyAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAgIGlmIChpc01h
dHJpeCgpKQogICAgICAgICBtYW5nbGVkTmFtZSArPSAnbSc7CiAgICAgZWxzZSBpZiAoaXNWZWN0
b3IoKSkKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ3YnOwogCiAgICAgc3dpdGNoICh0eXBlKSB7
Ci0gICAgY2FzZSBFYnRGbG9hdDogICAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICdmJzsgICAg
ICBicmVhazsKLSAgICBjYXNlIEVidEludDogICAgICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0g
J2knOyAgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0Qm9vbDogICAgICAgICAgICAgICBtYW5nbGVk
TmFtZSArPSAnYic7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRTYW1wbGVyMkQ6ICAgICAgICAg
IG1hbmdsZWROYW1lICs9ICJzMiI7ICAgICBicmVhazsKLSAgICBjYXNlIEVidFNhbXBsZXJDdWJl
OiAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInNDIjsgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0U3Ry
dWN0OgotICAgICAgICBtYW5nbGVkTmFtZSArPSAic3RydWN0LSI7Ci0gICAgICAgIGlmICh0eXBl
TmFtZSkKLSAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICp0eXBlTmFtZTsKLSAgICAgICAgey8v
IHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBtYW5nbGVkTmFt
ZSArPSAnLSc7Ci0gICAgICAgICAgICAgICAgKCpzdHJ1Y3R1cmUpW2ldLnR5cGUtPmJ1aWxkTWFu
Z2xlZE5hbWUobWFuZ2xlZE5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRGbG9hdDogICAgICAgbWFuZ2xlZE5h
bWUgKz0gJ2YnOyAgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0SW50OiAgICAgICAgIG1hbmdsZWRO
YW1lICs9ICdpJzsgICAgICBicmVhazsKKyAgICBjYXNlIEVidEJvb2w6ICAgICAgICBtYW5nbGVk
TmFtZSArPSAnYic7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRTYW1wbGVyMkQ6ICAgbWFuZ2xl
ZE5hbWUgKz0gInMyIjsgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6IG1hbmds
ZWROYW1lICs9ICJzQyI7ICAgICBicmVhazsKKyAgICBjYXNlIEVidFN0cnVjdDogICAgICBtYW5n
bGVkTmFtZSArPSBzdHJ1Y3R1cmUtPm1hbmdsZWROYW1lKCk7IGJyZWFrOworICAgIGRlZmF1bHQ6
ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIG1hbmdsZWROYW1lICs9IHN0YXRpY19j
YXN0PGNoYXI+KCcwJyArIGdldE5vbWluYWxTaXplKCkpOwpAQCAtNjksNTMgKzU1LDcyIEBAIHZv
aWQgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYgbWEKICAgICAgICAgbWFuZ2xlZE5h
bWUgKz0gYnVmOwogICAgICAgICBtYW5nbGVkTmFtZSArPSAnXSc7CiAgICAgfQorICAgIHJldHVy
biBtYW5nbGVkTmFtZTsKIH0KIAotaW50IFRUeXBlOjpnZXRTdHJ1Y3RTaXplKCkgY29uc3QKK3Np
emVfdCBUVHlwZTo6Z2V0T2JqZWN0U2l6ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFnZXRTdHJ1Y3Qo
KSkgewotICAgICAgICBhc3NlcnQoZmFsc2UgJiYgIk5vdCBhIHN0cnVjdCIpOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9CisgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7CiAKLSAgICBpZiAoc3Ry
dWN0dXJlU2l6ZSA9PSAwKQotICAgICAgICBmb3IgKFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3Ig
dGwgPSBnZXRTdHJ1Y3QoKS0+YmVnaW4oKTsgdGwgIT0gZ2V0U3RydWN0KCktPmVuZCgpOyB0bCsr
KQotICAgICAgICAgICAgc3RydWN0dXJlU2l6ZSArPSAoKCp0bCkudHlwZSktPmdldE9iamVjdFNp
emUoKTsKKyAgICBpZiAoZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQorICAgICAgICB0b3Rh
bFNpemUgPSBzdHJ1Y3R1cmUtPm9iamVjdFNpemUoKTsKKyAgICBlbHNlIGlmIChtYXRyaXgpCisg
ICAgICAgIHRvdGFsU2l6ZSA9IHNpemUgKiBzaXplOworICAgIGVsc2UKKyAgICAgICAgdG90YWxT
aXplID0gc2l6ZTsKKworICAgIGlmIChpc0FycmF5KCkpIHsKKyAgICAgICAgc2l6ZV90IGFycmF5
U2l6ZSA9IGdldEFycmF5U2l6ZSgpOworICAgICAgICBpZiAoYXJyYXlTaXplID4gSU5UX01BWCAv
IHRvdGFsU2l6ZSkKKyAgICAgICAgICAgIHRvdGFsU2l6ZSA9IElOVF9NQVg7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRvdGFsU2l6ZSAqPSBhcnJheVNpemU7CisgICAgfQogCi0gICAgcmV0
dXJuIHN0cnVjdHVyZVNpemU7CisgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAotdm9pZCBUVHlw
ZTo6Y29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkKK2Jvb2wgVFN0cnVjdHVyZTo6Y29udGFp
bnNBcnJheXMoKSBjb25zdAogewotICAgIGlmICghZ2V0U3RydWN0KCkpIHsKLSAgICAgICAgcmV0
dXJuOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZpZWxkcy0+c2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqbUZpZWxkcylbaV0tPnR5cGUoKTsK
KyAgICAgICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJheSgpIHx8IGZpZWxkVHlwZS0+aXNTdHJ1Y3R1
cmVDb250YWluaW5nQXJyYXlzKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQogCi0gICAgaW50IG1heE5lc3RpbmcgPSAwOwotICAgIGZvciAo
VFR5cGVMaXN0Ojpjb25zdF9pdGVyYXRvciB0bCA9IGdldFN0cnVjdCgpLT5iZWdpbigpOyB0bCAh
PSBnZXRTdHJ1Y3QoKS0+ZW5kKCk7ICsrdGwpIHsKLSAgICAgICAgbWF4TmVzdGluZyA9IHN0ZDo6
bWF4KG1heE5lc3RpbmcsICgoKnRsKS50eXBlKS0+Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSk7
CitUU3RyaW5nIFRTdHJ1Y3R1cmU6OmJ1aWxkTWFuZ2xlZE5hbWUoKSBjb25zdAoreworICAgIFRT
dHJpbmcgbWFuZ2xlZE5hbWUoInN0cnVjdC0iKTsKKyAgICBtYW5nbGVkTmFtZSArPSAqbU5hbWU7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsraSkgeworICAg
ICAgICBtYW5nbGVkTmFtZSArPSAnLSc7CisgICAgICAgIG1hbmdsZWROYW1lICs9ICgqbUZpZWxk
cylbaV0tPnR5cGUoKS0+Z2V0TWFuZ2xlZE5hbWUoKTsKICAgICB9Ci0KLSAgICBkZWVwZXN0U3Ry
dWN0TmVzdGluZyA9IDEgKyBtYXhOZXN0aW5nOworICAgIHJldHVybiBtYW5nbGVkTmFtZTsKIH0K
IAotYm9vbCBUVHlwZTo6aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkgY29uc3QKK3NpemVf
dCBUU3RydWN0dXJlOjpjYWxjdWxhdGVPYmplY3RTaXplKCkgY29uc3QKIHsKLSAgICBpZiAoIXN0
cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzaXplX3Qgc2l6ZSA9
IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsraSkgewor
ICAgICAgICBzaXplX3QgZmllbGRTaXplID0gKCptRmllbGRzKVtpXS0+dHlwZSgpLT5nZXRPYmpl
Y3RTaXplKCk7CisgICAgICAgIGlmIChmaWVsZFNpemUgPiBJTlRfTUFYIC0gc2l6ZSkKKyAgICAg
ICAgICAgIHNpemUgPSBJTlRfTUFYOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzaXplICs9
IGZpZWxkU2l6ZTsKICAgICB9CisgICAgcmV0dXJuIHNpemU7Cit9CiAKLSAgICBmb3IgKFRUeXBl
TGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyID0gc3RydWN0dXJlLT5iZWdpbigpOyBtZW1iZXIg
IT0gc3RydWN0dXJlLT5lbmQoKTsgbWVtYmVyKyspCi0gICAgewotICAgICAgICBpZiAobWVtYmVy
LT50eXBlLT5pc0FycmF5KCkgfHwKLSAgICAgICAgICAgIG1lbWJlci0+dHlwZS0+aXNTdHJ1Y3R1
cmVDb250YWluaW5nQXJyYXlzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9CitpbnQgVFN0cnVjdHVyZTo6Y2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBj
b25zdAoreworICAgIGludCBtYXhOZXN0aW5nID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1GaWVsZHMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIG1heE5lc3RpbmcgPSBzdGQ6Om1h
eChtYXhOZXN0aW5nLCAoKm1GaWVsZHMpW2ldLT50eXBlKCktPmdldERlZXBlc3RTdHJ1Y3ROZXN0
aW5nKCkpOwogICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gMSArIG1heE5l
c3Rpbmc7CiB9CiAKIC8vCkBAIC0xOTYsODQgKzIwMSw4IEBAIHZvaWQgVFN5bWJvbFRhYmxlTGV2
ZWw6OnJlbGF0ZVRvT3BlcmF0b3IKIHZvaWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvRXh0
ZW5zaW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFRTdHJpbmcmIGV4dCkKIHsKICAgICBmb3Ig
KHRMZXZlbDo6aXRlcmF0b3IgaXQgPSBsZXZlbC5iZWdpbigpOyBpdCAhPSBsZXZlbC5lbmQoKTsg
KytpdCkgewotICAgICAgICBpZiAoaXQtPnNlY29uZC0+aXNGdW5jdGlvbigpKSB7Ci0gICAgICAg
ICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uKj4oaXQtPnNl
Y29uZCk7Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSBuYW1lKQotICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uLT5yZWxhdGVUb0V4dGVuc2lvbihleHQpOwotICAgICAgICB9
Ci0gICAgfQotfQotCi1UU3ltYm9sOjpUU3ltYm9sKGNvbnN0IFRTeW1ib2wmIGNvcHlPZikKLXsK
LSAgICBuYW1lID0gTmV3UG9vbFRTdHJpbmcoY29weU9mLm5hbWUtPmNfc3RyKCkpOwotICAgIHVu
aXF1ZUlkID0gY29weU9mLnVuaXF1ZUlkOwotfQotCi1UVmFyaWFibGU6OlRWYXJpYWJsZShjb25z
dCBUVmFyaWFibGUmIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpIDogVFN5bWJvbChj
b3B5T2YpCi17Ci0gICAgdHlwZS5jb3B5VHlwZShjb3B5T2YudHlwZSwgcmVtYXBwZXIpOwotICAg
IHVzZXJUeXBlID0gY29weU9mLnVzZXJUeXBlOwotICAgIC8vIGZvciBidWlsdEluIHN5bWJvbCB0
YWJsZSBsZXZlbCwgdW5pb25BcnJheSBhbmQgYXJyYXlJbmZvcm1hdGlvbiBwb2ludGVycyBzaG91
bGQgYmUgTlVMTAotICAgIGFzc2VydChjb3B5T2YuYXJyYXlJbmZvcm1hdGlvblR5cGUgPT0gMCk7
Ci0gICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOwotCi0gICAgaWYgKGNvcHlPZi51bmlvbkFy
cmF5KSB7Ci0gICAgICAgIGFzc2VydCghY29weU9mLnR5cGUuZ2V0U3RydWN0KCkpOwotICAgICAg
ICBhc3NlcnQoY29weU9mLnR5cGUuZ2V0T2JqZWN0U2l6ZSgpID09IDEpOwotICAgICAgICB1bmlv
bkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgIHVuaW9uQXJyYXlbMF0gPSBj
b3B5T2YudW5pb25BcnJheVswXTsKLSAgICB9IGVsc2UKLSAgICAgICAgdW5pb25BcnJheSA9IDA7
Ci19Ci0KLVRWYXJpYWJsZSogVFZhcmlhYmxlOjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBl
cikKLXsKLSAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZSgqdGhpcywgcmVt
YXBwZXIpOwotCi0gICAgcmV0dXJuIHZhcmlhYmxlOwotfQotCi1URnVuY3Rpb246OlRGdW5jdGlv
bihjb25zdCBURnVuY3Rpb24mIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpIDogVFN5
bWJvbChjb3B5T2YpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3B5T2Yu
cGFyYW1ldGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBUUGFyYW1ldGVyIHBhcmFtOwotICAg
ICAgICBwYXJhbWV0ZXJzLnB1c2hfYmFjayhwYXJhbSk7Ci0gICAgICAgIHBhcmFtZXRlcnMuYmFj
aygpLmNvcHlQYXJhbShjb3B5T2YucGFyYW1ldGVyc1tpXSwgcmVtYXBwZXIpOwotICAgIH0KLQot
ICAgIHJldHVyblR5cGUuY29weVR5cGUoY29weU9mLnJldHVyblR5cGUsIHJlbWFwcGVyKTsKLSAg
ICBtYW5nbGVkTmFtZSA9IGNvcHlPZi5tYW5nbGVkTmFtZTsKLSAgICBvcCA9IGNvcHlPZi5vcDsK
LSAgICBkZWZpbmVkID0gY29weU9mLmRlZmluZWQ7Ci19Ci0KLVRGdW5jdGlvbiogVEZ1bmN0aW9u
OjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLXsKLSAgICBURnVuY3Rpb24gKmZ1bmN0
aW9uID0gbmV3IFRGdW5jdGlvbigqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgcmV0dXJuIGZ1bmN0
aW9uOwotfQotCi1UU3ltYm9sVGFibGVMZXZlbCogVFN5bWJvbFRhYmxlTGV2ZWw6OmNsb25lKFRT
dHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQotewotICAgIFRTeW1ib2xUYWJsZUxldmVsICpzeW1UYWJs
ZUxldmVsID0gbmV3IFRTeW1ib2xUYWJsZUxldmVsKCk7Ci0gICAgdExldmVsOjppdGVyYXRvciBp
dGVyOwotICAgIGZvciAoaXRlciA9IGxldmVsLmJlZ2luKCk7IGl0ZXIgIT0gbGV2ZWwuZW5kKCk7
ICsraXRlcikgewotICAgICAgICBzeW1UYWJsZUxldmVsLT5pbnNlcnQoKml0ZXItPnNlY29uZC0+
Y2xvbmUocmVtYXBwZXIpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3ltVGFibGVMZXZlbDsKLX0K
LQotdm9pZCBUU3ltYm9sVGFibGU6OmNvcHlUYWJsZShjb25zdCBUU3ltYm9sVGFibGUmIGNvcHlP
ZikKLXsKLSAgICBUU3RydWN0dXJlTWFwIHJlbWFwcGVyOwotICAgIHVuaXF1ZUlkID0gY29weU9m
LnVuaXF1ZUlkOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29weU9mLnRhYmxl
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHRhYmxlLnB1c2hfYmFjayhjb3B5T2YudGFibGVbaV0t
PmNsb25lKHJlbWFwcGVyKSk7Ci0gICAgfQotICAgIGZvciggdW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgY29weU9mLnByZWNpc2lvblN0YWNrLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHByZWNpc2lv
blN0YWNrLnB1c2hfYmFjayggY29weU9mLnByZWNpc2lvblN0YWNrW2ldICk7CisgICAgICAgIFRT
eW1ib2wqIHN5bWJvbCA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGlmIChzeW1ib2wtPmdldE5hbWUo
KSA9PSBuYW1lKQorICAgICAgICAgICAgc3ltYm9sLT5yZWxhdGVUb0V4dGVuc2lvbihleHQpOwog
ICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1i
b2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsNyBAQAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKKyNpbmNsdWRlICJjb21tb24vYW5n
bGV1dGlscy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvaW50ZXJtZWRpYXRlLmgiCiAKQEAgLTQ5LDEzICs1MCwxNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZv
aWQgc2V0VW5pcXVlSWQoaW50IGlkKSB7IHVuaXF1ZUlkID0gaWQ7IH0KICAgICBpbnQgZ2V0VW5p
cXVlSWQoKSBjb25zdCB7IHJldHVybiB1bmlxdWVJZDsgfQotICAgIHZpcnR1YWwgdm9pZCBkdW1w
KFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0ID0gMDsJCi0gICAgVFN5bWJvbChjb25zdCBUU3lt
Ym9sJik7Ci0gICAgdmlydHVhbCBUU3ltYm9sKiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBl
cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0
ID0gMDsKKyAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBl
eHRlbnNpb24gPSBleHQ7IH0KKyAgICBjb25zdCBUU3RyaW5nJiBnZXRFeHRlbnNpb24oKSBjb25z
dCB7IHJldHVybiBleHRlbnNpb247IH0KKworcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FO
RF9BU1NJR04oVFN5bWJvbCk7CiAKLXByb3RlY3RlZDoKICAgICBjb25zdCBUU3RyaW5nICpuYW1l
OwogICAgIHVuc2lnbmVkIGludCB1bmlxdWVJZDsgICAgICAvLyBGb3IgcmVhbCBjb21wYXJpbmcg
ZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbgorICAgIFRTdHJpbmcgZXh0ZW5zaW9uOwogfTsKIAogLy8K
QEAgLTcwLDE1ICs3NCwxMyBAQCBwcm90ZWN0ZWQ6CiAvLwogY2xhc3MgVFZhcmlhYmxlIDogcHVi
bGljIFRTeW1ib2wgewogcHVibGljOgotICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpuYW1l
LCBjb25zdCBUVHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUpLCB0eXBl
KHQpLCB1c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCksIGFycmF5SW5mb3JtYXRpb25UeXBlKDAp
IHsgfQorICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpuYW1lLCBjb25zdCBUVHlwZSYgdCwg
Ym9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUpLCB0eXBlKHQpLCB1c2VyVHlwZSh1VCks
IHVuaW9uQXJyYXkoMCkgeyB9CiAgICAgdmlydHVhbCB+VFZhcmlhYmxlKCkgeyB9CiAgICAgdmly
dHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9ICAgIAogICAgIFRU
eXBlJiBnZXRUeXBlKCkgeyByZXR1cm4gdHlwZTsgfSAgICAKICAgICBjb25zdCBUVHlwZSYgZ2V0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KICAgICBib29sIGlzVXNlclR5cGUoKSBjb25z
dCB7IHJldHVybiB1c2VyVHlwZTsgfQogICAgIHZvaWQgc2V0UXVhbGlmaWVyKFRRdWFsaWZpZXIg
cXVhbGlmaWVyKSB7IHR5cGUuc2V0UXVhbGlmaWVyKHF1YWxpZmllcik7IH0KLSAgICB2b2lkIHVw
ZGF0ZUFycmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlICp0KSB7IGFycmF5SW5mb3JtYXRpb25UeXBl
ID0gdDsgfQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpIHsgcmV0dXJuIGFy
cmF5SW5mb3JtYXRpb25UeXBlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChUSW5mb1Npbmsg
JmluZm9TaW5rKSBjb25zdDsKIApAQCAtMTAwLDE2ICsxMDIsMTUgQEAgcHVibGljOgogICAgICAg
ICBkZWxldGVbXSB1bmlvbkFycmF5OwogICAgICAgICB1bmlvbkFycmF5ID0gY29uc3RBcnJheTsg
IAogICAgIH0KLSAgICBUVmFyaWFibGUoY29uc3QgVFZhcmlhYmxlJiwgVFN0cnVjdHVyZU1hcCYg
cmVtYXBwZXIpOyAvLyBjb3B5IGNvbnN0cnVjdG9yCi0gICAgdmlydHVhbCBUVmFyaWFibGUqIGNs
b25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKIAotcHJvdGVjdGVkOgorcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFZhcmlhYmxlKTsKKwogICAgIFRUeXBlIHR5cGU7
CiAgICAgYm9vbCB1c2VyVHlwZTsKICAgICAvLyB3ZSBhcmUgYXNzdW1pbmcgdGhhdCBQb29sIEFs
bG9jYXRvciB3aWxsIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgdG8gdW5pb25BcnJheQogICAg
IC8vIHdoZW4gdGhpcyBvYmplY3QgaXMgZGVzdHJveWVkCiAgICAgQ29uc3RhbnRVbmlvbiAqdW5p
b25BcnJheTsKLSAgICBUVHlwZSAqYXJyYXlJbmZvcm1hdGlvblR5cGU7ICAvLyB0aGlzIGlzIHVz
ZWQgZm9yIHVwZGF0aW5nIG1heEFycmF5U2l6ZSBpbiBhbGwgdGhlIHJlZmVyZW5jZXMgdG8gYSBn
aXZlbiBzeW1ib2wKIH07CiAKIC8vCkBAIC0xMTksMTEgKzEyMCw2IEBAIHByb3RlY3RlZDoKIHN0
cnVjdCBUUGFyYW1ldGVyIHsKICAgICBUU3RyaW5nICpuYW1lOwogICAgIFRUeXBlKiB0eXBlOwot
ICAgIHZvaWQgY29weVBhcmFtKGNvbnN0IFRQYXJhbWV0ZXImIHBhcmFtLCBUU3RydWN0dXJlTWFw
JiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIG5hbWUgPSBOZXdQb29sVFN0cmluZyhwYXJhbS5u
YW1lLT5jX3N0cigpKTsKLSAgICAgICAgdHlwZSA9IHBhcmFtLnR5cGUtPmNsb25lKHJlbWFwcGVy
KTsKLSAgICB9CiB9OwogCiAvLwpAQCAtMTYzLDkgKzE1OSw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlbGF0ZVRvT3BlcmF0b3IoVE9wZXJhdG9yIG8pIHsgb3AgPSBvOyB9CiAgICAgVE9wZXJhdG9y
IGdldEJ1aWx0SW5PcCgpIGNvbnN0IHsgcmV0dXJuIG9wOyB9CiAKLSAgICB2b2lkIHJlbGF0ZVRv
RXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBleHRlbnNpb24gPSBleHQ7IH0KLSAgICBj
b25zdCBUU3RyaW5nJiBnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBleHRlbnNpb247IH0K
LQogICAgIHZvaWQgc2V0RGVmaW5lZCgpIHsgZGVmaW5lZCA9IHRydWU7IH0KICAgICBib29sIGlz
RGVmaW5lZCgpIHsgcmV0dXJuIGRlZmluZWQ7IH0KIApAQCAtMTczLDE2ICsxNjYsMTUgQEAgcHVi
bGljOgogICAgIGNvbnN0IFRQYXJhbWV0ZXImIGdldFBhcmFtKHNpemVfdCBpKSBjb25zdCB7IHJl
dHVybiBwYXJhbWV0ZXJzW2ldOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChUSW5mb1Npbmsg
JmluZm9TaW5rKSBjb25zdDsKLSAgICBURnVuY3Rpb24oY29uc3QgVEZ1bmN0aW9uJiwgVFN0cnVj
dHVyZU1hcCYgcmVtYXBwZXIpOwotICAgIHZpcnR1YWwgVEZ1bmN0aW9uKiBjbG9uZShUU3RydWN0
dXJlTWFwJiByZW1hcHBlcik7CiAKLXByb3RlY3RlZDoKK3ByaXZhdGU6CisgICAgRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOKFRGdW5jdGlvbik7CisKICAgICB0eXBlZGVmIFRWZWN0b3I8VFBhcmFt
ZXRlcj4gVFBhcmFtTGlzdDsKICAgICBUUGFyYW1MaXN0IHBhcmFtZXRlcnM7CiAgICAgVFR5cGUg
cmV0dXJuVHlwZTsKICAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAgIFRPcGVyYXRvciBvcDsK
LSAgICBUU3RyaW5nIGV4dGVuc2lvbjsKICAgICBib29sIGRlZmluZWQ7CiB9OwogCkBAIC0yMzEs
NyArMjIzLDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVsYXRlVG9PcGVyYXRvcihjb25zdCBjaGFy
KiBuYW1lLCBUT3BlcmF0b3Igb3ApOwogICAgIHZvaWQgcmVsYXRlVG9FeHRlbnNpb24oY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgVFN0cmluZyYgZXh0KTsKICAgICB2b2lkIGR1bXAoVEluZm9TaW5r
ICZpbmZvU2luaykgY29uc3Q7Ci0gICAgVFN5bWJvbFRhYmxlTGV2ZWwqIGNsb25lKFRTdHJ1Y3R1
cmVNYXAmIHJlbWFwcGVyKTsKIAogcHJvdGVjdGVkOgogICAgIHRMZXZlbCBsZXZlbDsKQEAgLTMy
MSw3ICszMTIsNiBAQCBwdWJsaWM6CiAgICAgfQogICAgIGludCBnZXRNYXhTeW1ib2xJZCgpIHsg
cmV0dXJuIHVuaXF1ZUlkOyB9CiAgICAgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNv
bnN0OwotICAgIHZvaWQgY29weVRhYmxlKGNvbnN0IFRTeW1ib2xUYWJsZSYgY29weU9mKTsKIAog
ICAgIGJvb2wgc2V0RGVmYXVsdFByZWNpc2lvbiggY29uc3QgVFB1YmxpY1R5cGUmIHR5cGUsIFRQ
cmVjaXNpb24gcHJlYyApewogICAgICAgICBpZiAoSXNTYW1wbGVyKHR5cGUudHlwZSkpCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMuaAkocmV2aXNp
b24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1R5cGVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcsMzAgKzcsODUgQEAKICNpZm5kZWYgX1RZUEVTX0lOQ0xV
REVECiAjZGVmaW5lIF9UWVBFU19JTkNMVURFRAogCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRp
bHMuaCIKKwogI2luY2x1ZGUgImNvbXBpbGVyL0Jhc2VUeXBlcy5oIgogI2luY2x1ZGUgImNvbXBp
bGVyL0NvbW1vbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL2RlYnVnLmgiCiAKLWNsYXNzIFRUeXBl
Owogc3RydWN0IFRQdWJsaWNUeXBlOworY2xhc3MgVFR5cGU7CiAKLS8vCi0vLyBOZWVkIHRvIGhh
dmUgYXNzb2NpYXRpb24gb2YgbGluZSBudW1iZXJzIHRvIHR5cGVzIGluIGEgbGlzdCBmb3IgYnVp
bGRpbmcgc3RydWN0cy4KLS8vCi1zdHJ1Y3QgVFR5cGVMaW5lIHsKLSAgICBUVHlwZSogdHlwZTsK
LSAgICBpbnQgbGluZTsKK2NsYXNzIFRGaWVsZAoreworcHVibGljOgorICAgIFBPT0xfQUxMT0NB
VE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcik7CisgICAgVEZpZWxkKFRUeXBlKiB0
eXBlLCBUU3RyaW5nKiBuYW1lKSA6IG1UeXBlKHR5cGUpLCBtTmFtZShuYW1lKSB7fQorCisgICAg
Ly8gVE9ETyhhbG9rcCk6IFdlIHNob3VsZCBvbmx5IHJldHVybiBjb25zdCB0eXBlLgorICAgIC8v
IEZpeCBpdCBieSB0d2Vha2luZyBncmFtbWFyLgorICAgIFRUeXBlKiB0eXBlKCkgeyByZXR1cm4g
bVR5cGU7IH0KKyAgICBjb25zdCBUVHlwZSogdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlOyB9
CisKKyAgICBjb25zdCBUU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1OYW1lOyB9CisK
K3ByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRGaWVsZCk7CisgICAgVFR5
cGUqIG1UeXBlOworICAgIFRTdHJpbmcqIG1OYW1lOwogfTsKLXR5cGVkZWYgVFZlY3RvcjxUVHlw
ZUxpbmU+IFRUeXBlTGlzdDsKIAotaW5saW5lIFRUeXBlTGlzdCogTmV3UG9vbFRUeXBlTGlzdCgp
Cit0eXBlZGVmIFRWZWN0b3I8VEZpZWxkKj4gVEZpZWxkTGlzdDsKK2lubGluZSBURmllbGRMaXN0
KiBOZXdQb29sVEZpZWxkTGlzdCgpCiB7Ci0gICAgdm9pZCogbWVtb3J5ID0gR2xvYmFsUG9vbEFs
bG9jYXRvci5hbGxvY2F0ZShzaXplb2YoVFR5cGVMaXN0KSk7Ci0gICAgcmV0dXJuIG5ldyhtZW1v
cnkpIFRUeXBlTGlzdDsKKyAgICB2b2lkKiBtZW1vcnkgPSBHbG9iYWxQb29sQWxsb2NhdG9yLmFs
bG9jYXRlKHNpemVvZihURmllbGRMaXN0KSk7CisgICAgcmV0dXJuIG5ldyhtZW1vcnkpIFRGaWVs
ZExpc3Q7CiB9CiAKLXR5cGVkZWYgVE1hcDxUVHlwZUxpc3QqLCBUVHlwZUxpc3QqPiBUU3RydWN0
dXJlTWFwOwotdHlwZWRlZiBUTWFwPFRUeXBlTGlzdCosIFRUeXBlTGlzdCo+OjppdGVyYXRvciBU
U3RydWN0dXJlTWFwSXRlcmF0b3I7CitjbGFzcyBUU3RydWN0dXJlCit7CitwdWJsaWM6CisgICAg
UE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKTsKKyAgICBUU3Ry
dWN0dXJlKFRTdHJpbmcqIG5hbWUsIFRGaWVsZExpc3QqIGZpZWxkcykKKyAgICAgICAgOiBtTmFt
ZShuYW1lKSwKKyAgICAgICAgICBtRmllbGRzKGZpZWxkcyksCisgICAgICAgICAgbU9iamVjdFNp
emUoMCksCisgICAgICAgICAgbURlZXBlc3ROZXN0aW5nKDApIHsKKyAgICB9CisKKyAgICBjb25z
dCBUU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1OYW1lOyB9CisgICAgY29uc3QgVEZp
ZWxkTGlzdCYgZmllbGRzKCkgY29uc3QgeyByZXR1cm4gKm1GaWVsZHM7IH0KKworICAgIGNvbnN0
IFRTdHJpbmcmIG1hbmdsZWROYW1lKCkgY29uc3QgeworICAgICAgICBpZiAobU1hbmdsZWROYW1l
LmVtcHR5KCkpCisgICAgICAgICAgICBtTWFuZ2xlZE5hbWUgPSBidWlsZE1hbmdsZWROYW1lKCk7
CisgICAgICAgIHJldHVybiBtTWFuZ2xlZE5hbWU7CisgICAgfQorICAgIHNpemVfdCBvYmplY3RT
aXplKCkgY29uc3QgeworICAgICAgICBpZiAobU9iamVjdFNpemUgPT0gMCkKKyAgICAgICAgICAg
IG1PYmplY3RTaXplID0gY2FsY3VsYXRlT2JqZWN0U2l6ZSgpOworICAgICAgICByZXR1cm4gbU9i
amVjdFNpemU7CisgICAgfTsKKyAgICBpbnQgZGVlcGVzdE5lc3RpbmcoKSBjb25zdCB7CisgICAg
ICAgIGlmIChtRGVlcGVzdE5lc3RpbmcgPT0gMCkKKyAgICAgICAgICAgIG1EZWVwZXN0TmVzdGlu
ZyA9IGNhbGN1bGF0ZURlZXBlc3ROZXN0aW5nKCk7CisgICAgICAgIHJldHVybiBtRGVlcGVzdE5l
c3Rpbmc7CisgICAgfQorICAgIGJvb2wgY29udGFpbnNBcnJheXMoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFN0cnVjdHVyZSk7CisgICAgVFN0cmlu
ZyBidWlsZE1hbmdsZWROYW1lKCkgY29uc3Q7CisgICAgc2l6ZV90IGNhbGN1bGF0ZU9iamVjdFNp
emUoKSBjb25zdDsKKyAgICBpbnQgY2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBjb25zdDsKKwor
ICAgIFRTdHJpbmcqIG1OYW1lOworICAgIFRGaWVsZExpc3QqIG1GaWVsZHM7CisKKyAgICBtdXRh
YmxlIFRTdHJpbmcgbU1hbmdsZWROYW1lOworICAgIG11dGFibGUgc2l6ZV90IG1PYmplY3RTaXpl
OworICAgIG11dGFibGUgaW50IG1EZWVwZXN0TmVzdGluZzsKK307CiAKIC8vCiAvLyBCYXNlIGNs
YXNzIGZvciB0aGluZ3MgdGhhdCBoYXZlIGEgdHlwZS4KQEAgLTQxLDY5ICs5NiwxMyBAQCBwdWJs
aWM6CiAgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKQog
ICAgIFRUeXBlKCkge30KICAgICBUVHlwZShUQmFzaWNUeXBlIHQsIFRQcmVjaXNpb24gcCwgVFF1
YWxpZmllciBxID0gRXZxVGVtcG9yYXJ5LCBpbnQgcyA9IDEsIGJvb2wgbSA9IGZhbHNlLCBib29s
IGEgPSBmYWxzZSkgOgotICAgICAgICAgICAgdHlwZSh0KSwgcHJlY2lzaW9uKHApLCBxdWFsaWZp
ZXIocSksIHNpemUocyksIG1hdHJpeChtKSwgYXJyYXkoYSksIGFycmF5U2l6ZSgwKSwKLSAgICAg
ICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVy
ZSgwKSwgc3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFt
ZSgwKSwgbWFuZ2xlZCgwKSwgdHlwZU5hbWUoMCkKKyAgICAgICAgICAgIHR5cGUodCksIHByZWNp
c2lvbihwKSwgcXVhbGlmaWVyKHEpLCBzaXplKHMpLCBtYXRyaXgobSksIGFycmF5KGEpLCBhcnJh
eVNpemUoMCksIHN0cnVjdHVyZSgwKQogICAgIHsKICAgICB9CiAgICAgZXhwbGljaXQgVFR5cGUo
Y29uc3QgVFB1YmxpY1R5cGUgJnApOwotICAgIFRUeXBlKFRUeXBlTGlzdCogdXNlckRlZiwgY29u
c3QgVFN0cmluZyYgbiwgVFByZWNpc2lvbiBwID0gRWJwVW5kZWZpbmVkKSA6Ci0gICAgICAgICAg
ICB0eXBlKEVidFN0cnVjdCksIHByZWNpc2lvbihwKSwgcXVhbGlmaWVyKEV2cVRlbXBvcmFyeSks
IHNpemUoMSksIG1hdHJpeChmYWxzZSksIGFycmF5KGZhbHNlKSwgYXJyYXlTaXplKDApLAotICAg
ICAgICAgICAgbWF4QXJyYXlTaXplKDApLCBhcnJheUluZm9ybWF0aW9uVHlwZSgwKSwgc3RydWN0
dXJlKHVzZXJEZWYpLCBzdHJ1Y3R1cmVTaXplKDApLCBkZWVwZXN0U3RydWN0TmVzdGluZygwKSwg
ZmllbGROYW1lKDApLCBtYW5nbGVkKDApCi0gICAgewotICAgICAgICB0eXBlTmFtZSA9IE5ld1Bv
b2xUU3RyaW5nKG4uY19zdHIoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb3B5VHlwZShjb25zdCBU
VHlwZSYgY29weU9mLCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIHR5
cGUgPSBjb3B5T2YudHlwZTsKLSAgICAgICAgcHJlY2lzaW9uID0gY29weU9mLnByZWNpc2lvbjsK
LSAgICAgICAgcXVhbGlmaWVyID0gY29weU9mLnF1YWxpZmllcjsKLSAgICAgICAgc2l6ZSA9IGNv
cHlPZi5zaXplOwotICAgICAgICBtYXRyaXggPSBjb3B5T2YubWF0cml4OwotICAgICAgICBhcnJh
eSA9IGNvcHlPZi5hcnJheTsKLSAgICAgICAgYXJyYXlTaXplID0gY29weU9mLmFycmF5U2l6ZTsK
LQotICAgICAgICBUU3RydWN0dXJlTWFwSXRlcmF0b3IgaXRlcjsKLSAgICAgICAgaWYgKGNvcHlP
Zi5zdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIGlmICgoaXRlciA9IHJlbWFwcGVyLmZpbmQoc3Ry
dWN0dXJlKSkgPT0gcmVtYXBwZXIuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBjcmVhdGUg
dGhlIG5ldyBzdHJ1Y3R1cmUgaGVyZQotICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IE5ld1Bv
b2xUVHlwZUxpc3QoKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IGNvcHlPZi5zdHJ1Y3R1cmUtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxpbmUubGluZSA9
ICgqY29weU9mLnN0cnVjdHVyZSlbaV0ubGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxp
bmUudHlwZSA9ICgqY29weU9mLnN0cnVjdHVyZSlbaV0udHlwZS0+Y2xvbmUocmVtYXBwZXIpOwot
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnB1c2hfYmFjayh0eXBlTGluZSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJ1
Y3R1cmUgPSBpdGVyLT5zZWNvbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgc3RydWN0dXJlID0gMDsKLQotICAgICAgICBmaWVsZE5hbWUgPSAwOwotICAgICAg
ICBpZiAoY29weU9mLmZpZWxkTmFtZSkKLSAgICAgICAgICAgIGZpZWxkTmFtZSA9IE5ld1Bvb2xU
U3RyaW5nKGNvcHlPZi5maWVsZE5hbWUtPmNfc3RyKCkpOwotICAgICAgICB0eXBlTmFtZSA9IDA7
Ci0gICAgICAgIGlmIChjb3B5T2YudHlwZU5hbWUpCi0gICAgICAgICAgICB0eXBlTmFtZSA9IE5l
d1Bvb2xUU3RyaW5nKGNvcHlPZi50eXBlTmFtZS0+Y19zdHIoKSk7Ci0KLSAgICAgICAgbWFuZ2xl
ZCA9IDA7Ci0gICAgICAgIGlmIChjb3B5T2YubWFuZ2xlZCkKLSAgICAgICAgICAgIG1hbmdsZWQg
PSBOZXdQb29sVFN0cmluZyhjb3B5T2YubWFuZ2xlZC0+Y19zdHIoKSk7Ci0KLSAgICAgICAgc3Ry
dWN0dXJlU2l6ZSA9IGNvcHlPZi5zdHJ1Y3R1cmVTaXplOwotICAgICAgICBtYXhBcnJheVNpemUg
PSBjb3B5T2YubWF4QXJyYXlTaXplOwotICAgICAgICBkZWVwZXN0U3RydWN0TmVzdGluZyA9IGNv
cHlPZi5kZWVwZXN0U3RydWN0TmVzdGluZzsKLSAgICAgICAgYXNzZXJ0KGNvcHlPZi5hcnJheUlu
Zm9ybWF0aW9uVHlwZSA9PSAwKTsKLSAgICAgICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOyAv
LyBhcnJheUluZm9ybWF0aW9uVHlwZSBzaG91bGQgbm90IGJlIHNldCBmb3IgYnVpbHRJbiBzeW1i
b2wgdGFibGUgbGV2ZWwKLSAgICB9Ci0KLSAgICBUVHlwZSogY2xvbmUoVFN0cnVjdHVyZU1hcCYg
cmVtYXBwZXIpCisgICAgVFR5cGUoVFN0cnVjdHVyZSogdXNlckRlZiwgVFByZWNpc2lvbiBwID0g
RWJwVW5kZWZpbmVkKSA6CisgICAgICAgICAgICB0eXBlKEVidFN0cnVjdCksIHByZWNpc2lvbihw
KSwgcXVhbGlmaWVyKEV2cVRlbXBvcmFyeSksIHNpemUoMSksIG1hdHJpeChmYWxzZSksIGFycmF5
KGZhbHNlKSwgYXJyYXlTaXplKDApLCBzdHJ1Y3R1cmUodXNlckRlZikKICAgICB7Ci0gICAgICAg
IFRUeXBlICpuZXdUeXBlID0gbmV3IFRUeXBlKCk7Ci0gICAgICAgIG5ld1R5cGUtPmNvcHlUeXBl
KCp0aGlzLCByZW1hcHBlcik7Ci0KLSAgICAgICAgcmV0dXJuIG5ld1R5cGU7CiAgICAgfQogCiAg
ICAgVEJhc2ljVHlwZSBnZXRCYXNpY1R5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlOyB9CkBAIC0x
MTksMjIgKzExOCw3IEBAIHB1YmxpYzoKICAgICBpbnQgZ2V0Tm9taW5hbFNpemUoKSBjb25zdCB7
IHJldHVybiBzaXplOyB9CiAgICAgdm9pZCBzZXROb21pbmFsU2l6ZShpbnQgcykgeyBzaXplID0g
czsgfQogICAgIC8vIEZ1bGwgc2l6ZSBvZiBzaW5nbGUgaW5zdGFuY2Ugb2YgdHlwZQotICAgIGlu
dCBnZXRPYmplY3RTaXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGludCB0b3RhbFNpemU7Ci0K
LSAgICAgICAgaWYgKGdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkKLSAgICAgICAgICAgIHRv
dGFsU2l6ZSA9IGdldFN0cnVjdFNpemUoKTsKLSAgICAgICAgZWxzZSBpZiAobWF0cml4KQotICAg
ICAgICAgICAgdG90YWxTaXplID0gc2l6ZSAqIHNpemU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHRvdGFsU2l6ZSA9IHNpemU7Ci0KLSAgICAgICAgaWYgKGlzQXJyYXkoKSkKLSAgICAgICAg
ICAgIHRvdGFsU2l6ZSAqPSBzdGQ6Om1heChnZXRBcnJheVNpemUoKSwgZ2V0TWF4QXJyYXlTaXpl
KCkpOwotCi0gICAgICAgIHJldHVybiB0b3RhbFNpemU7Ci0gICAgfQorICAgIHNpemVfdCBnZXRP
YmplY3RTaXplKCkgY29uc3Q7CiAKICAgICBib29sIGlzTWF0cml4KCkgY29uc3QgeyByZXR1cm4g
bWF0cml4ID8gdHJ1ZSA6IGZhbHNlOyB9CiAgICAgdm9pZCBzZXRNYXRyaXgoYm9vbCBtKSB7IG1h
dHJpeCA9IG07IH0KQEAgLTE0Miw0NyArMTI2LDIwIEBAIHB1YmxpYzoKICAgICBib29sIGlzQXJy
YXkoKSBjb25zdCAgeyByZXR1cm4gYXJyYXkgPyB0cnVlIDogZmFsc2U7IH0KICAgICBpbnQgZ2V0
QXJyYXlTaXplKCkgY29uc3QgeyByZXR1cm4gYXJyYXlTaXplOyB9CiAgICAgdm9pZCBzZXRBcnJh
eVNpemUoaW50IHMpIHsgYXJyYXkgPSB0cnVlOyBhcnJheVNpemUgPSBzOyB9Ci0gICAgaW50IGdl
dE1heEFycmF5U2l6ZSAoKSBjb25zdCB7IHJldHVybiBtYXhBcnJheVNpemU7IH0KLSAgICB2b2lk
IHNldE1heEFycmF5U2l6ZSAoaW50IHMpIHsgbWF4QXJyYXlTaXplID0gczsgfQotICAgIHZvaWQg
Y2xlYXJBcnJheW5lc3MoKSB7IGFycmF5ID0gZmFsc2U7IGFycmF5U2l6ZSA9IDA7IG1heEFycmF5
U2l6ZSA9IDA7IH0KLSAgICB2b2lkIHNldEFycmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlKiB0KSB7
IGFycmF5SW5mb3JtYXRpb25UeXBlID0gdDsgfQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9ybWF0
aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGFycmF5SW5mb3JtYXRpb25UeXBlOyB9CisgICAgdm9p
ZCBjbGVhckFycmF5bmVzcygpIHsgYXJyYXkgPSBmYWxzZTsgYXJyYXlTaXplID0gMDsgfQogCiAg
ICAgYm9vbCBpc1ZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIHNpemUgPiAxICYmICFtYXRyaXg7IH0K
ICAgICBib29sIGlzU2NhbGFyKCkgY29uc3QgeyByZXR1cm4gc2l6ZSA9PSAxICYmICFtYXRyaXgg
JiYgIXN0cnVjdHVyZTsgfQogCi0gICAgVFR5cGVMaXN0KiBnZXRTdHJ1Y3QoKSBjb25zdCB7IHJl
dHVybiBzdHJ1Y3R1cmU7IH0KLSAgICB2b2lkIHNldFN0cnVjdChUVHlwZUxpc3QqIHMpIHsgc3Ry
dWN0dXJlID0gczsgY29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCk7IH0KLQotICAgIGNvbnN0
IFRTdHJpbmcmIGdldFR5cGVOYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGFzc2VydCh0eXBl
TmFtZSk7Ci0gICAgICAgIHJldHVybiAqdHlwZU5hbWU7Ci0gICAgfQotICAgIHZvaWQgc2V0VHlw
ZU5hbWUoY29uc3QgVFN0cmluZyYgbikKLSAgICB7Ci0gICAgICAgIHR5cGVOYW1lID0gTmV3UG9v
bFRTdHJpbmcobi5jX3N0cigpKTsKLSAgICB9Ci0KLSAgICBib29sIGlzRmllbGQoKSBjb25zdCB7
IHJldHVybiBmaWVsZE5hbWUgIT0gMDsgfQotICAgIGNvbnN0IFRTdHJpbmcmIGdldEZpZWxkTmFt
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBhc3NlcnQoZmllbGROYW1lKTsKLSAgICAgICAgcmV0
dXJuICpmaWVsZE5hbWU7Ci0gICAgfQotICAgIHZvaWQgc2V0RmllbGROYW1lKGNvbnN0IFRTdHJp
bmcmIG4pCi0gICAgewotICAgICAgICBmaWVsZE5hbWUgPSBOZXdQb29sVFN0cmluZyhuLmNfc3Ry
KCkpOwotICAgIH0KKyAgICBUU3RydWN0dXJlKiBnZXRTdHJ1Y3QoKSBjb25zdCB7IHJldHVybiBz
dHJ1Y3R1cmU7IH0KKyAgICB2b2lkIHNldFN0cnVjdChUU3RydWN0dXJlKiBzKSB7IHN0cnVjdHVy
ZSA9IHM7IH0KIAotICAgIFRTdHJpbmcmIGdldE1hbmdsZWROYW1lKCkgewotICAgICAgICBpZiAo
IW1hbmdsZWQpIHsKLSAgICAgICAgICAgIG1hbmdsZWQgPSBOZXdQb29sVFN0cmluZygiIik7Ci0g
ICAgICAgICAgICBidWlsZE1hbmdsZWROYW1lKCptYW5nbGVkKTsKLSAgICAgICAgICAgICptYW5n
bGVkICs9ICc7JyA7CisgICAgY29uc3QgVFN0cmluZyYgZ2V0TWFuZ2xlZE5hbWUoKSBjb25zdCB7
CisgICAgICAgIGlmIChtYW5nbGVkLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIG1hbmdsZWQgPSBi
dWlsZE1hbmdsZWROYW1lKCk7CisgICAgICAgICAgICBtYW5nbGVkICs9ICc7JzsKICAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiAqbWFuZ2xlZDsKKyAgICAgICAgcmV0dXJuIG1hbmdsZWQ7CiAg
ICAgfQogCiAgICAgYm9vbCBzYW1lRWxlbWVudFR5cGUoY29uc3QgVFR5cGUmIHJpZ2h0KSBjb25z
dCB7CkBAIC0yMzAsMzIgKzE4NywzNCBAQCBwdWJsaWM6CiAgICAgLy8gRm9yIHR5cGUgIm5lc3Rp
bmcyIiwgdGhpcyBtZXRob2Qgd291bGQgcmV0dXJuIDIgLS0gdGhlIG51bWJlcgogICAgIC8vIG9m
IHN0cnVjdHVyZXMgdGhyb3VnaCB3aGljaCBpbmRpcmVjdGlvbiBtdXN0IG9jY3VyIHRvIHJlYWNo
IHRoZQogICAgIC8vIGRlZXBlc3QgZmllbGQgKG5lc3RpbmcyLmZpZWxkMS5wb3NpdGlvbikuCi0g
ICAgaW50IGdldERlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gZGVlcGVzdFN0
cnVjdE5lc3Rpbmc7IH0KKyAgICBpbnQgZ2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSBjb25zdCB7
CisgICAgICAgIHJldHVybiBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmRlZXBlc3ROZXN0aW5nKCkg
OiAwOworICAgIH0KIAotICAgIGJvb2wgaXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkgY29u
c3Q7CisgICAgYm9vbCBpc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSBjb25zdCB7CisgICAg
ICAgIHJldHVybiBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmNvbnRhaW5zQXJyYXlzKCkgOiBmYWxz
ZTsKKyAgICB9CiAKLXByb3RlY3RlZDoKLSAgICB2b2lkIGJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmlu
ZyYpOwotICAgIGludCBnZXRTdHJ1Y3RTaXplKCkgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlRGVl
cGVzdFN0cnVjdE5lc3RpbmcoKTsKK3ByaXZhdGU6CisgICAgVFN0cmluZyBidWlsZE1hbmdsZWRO
YW1lKCkgY29uc3Q7CiAKKyNpZmRlZiBfX0dOVUNfXworICAgIFRCYXNpY1R5cGUgdHlwZTsKKyAg
ICBUUHJlY2lzaW9uIHByZWNpc2lvbjsKKyAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKKyNlbHNl
CiAgICAgVEJhc2ljVHlwZSB0eXBlICAgICAgOiA2OwogICAgIFRQcmVjaXNpb24gcHJlY2lzaW9u
OwogICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyIDogNzsKKyNlbmRpZgogICAgIGludCBzaXplICAg
ICAgICAgICAgIDogODsgLy8gc2l6ZSBvZiB2ZWN0b3Igb3IgbWF0cml4LCBub3Qgc2l6ZSBvZiBh
cnJheQogICAgIHVuc2lnbmVkIGludCBtYXRyaXggIDogMTsKICAgICB1bnNpZ25lZCBpbnQgYXJy
YXkgICA6IDE7CiAgICAgaW50IGFycmF5U2l6ZTsKLSAgICBpbnQgbWF4QXJyYXlTaXplOwotICAg
IFRUeXBlKiBhcnJheUluZm9ybWF0aW9uVHlwZTsKIAotICAgIFRUeXBlTGlzdCogc3RydWN0dXJl
OyAgICAgIC8vIDAgdW5sZXNzIHRoaXMgaXMgYSBzdHJ1Y3QKLSAgICBtdXRhYmxlIGludCBzdHJ1
Y3R1cmVTaXplOwotICAgIGludCBkZWVwZXN0U3RydWN0TmVzdGluZzsKLQotICAgIFRTdHJpbmcg
KmZpZWxkTmFtZTsgICAgICAgICAvLyBmb3Igc3RydWN0dXJlIGZpZWxkIG5hbWVzCi0gICAgVFN0
cmluZyAqbWFuZ2xlZDsKLSAgICBUU3RyaW5nICp0eXBlTmFtZTsgICAgICAgICAgLy8gZm9yIHN0
cnVjdHVyZSBmaWVsZCB0eXBlIG5hbWUKKyAgICBUU3RydWN0dXJlKiBzdHJ1Y3R1cmU7ICAgICAg
Ly8gMCB1bmxlc3MgdGhpcyBpcyBhIHN0cnVjdAorCisgICAgbXV0YWJsZSBUU3RyaW5nIG1hbmds
ZWQ7CiB9OwogCiAvLwpAQCAtMjc3LDkgKzIzNiw5IEBAIHN0cnVjdCBUUHVibGljVHlwZQogICAg
IGJvb2wgYXJyYXk7CiAgICAgaW50IGFycmF5U2l6ZTsKICAgICBUVHlwZSogdXNlckRlZjsKLSAg
ICBpbnQgbGluZTsKKyAgICBUU291cmNlTG9jIGxpbmU7CiAKLSAgICB2b2lkIHNldEJhc2ljKFRC
YXNpY1R5cGUgYnQsIFRRdWFsaWZpZXIgcSwgaW50IGxuID0gMCkKKyAgICB2b2lkIHNldEJhc2lj
KFRCYXNpY1R5cGUgYnQsIFRRdWFsaWZpZXIgcSwgY29uc3QgVFNvdXJjZUxvYyYgbG4pCiAgICAg
ewogICAgICAgICB0eXBlID0gYnQ7CiAgICAgICAgIHF1YWxpZmllciA9IHE7CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZv
LmNwcAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxMiArMTMxLDEz
IEBAIHZvaWQgZ2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8oY29uc3QgVFQKIHsKICAgICBBU1NF
UlQodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpOwogCi0gICAgY29uc3QgVFR5cGVM
aXN0KiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBUVHlwZSogZmll
bGRUeXBlID0gKCpzdHJ1Y3R1cmUpW2ldLnR5cGU7Ci0gICAgICAgIGdldFZhcmlhYmxlSW5mbygq
ZmllbGRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArICIuIiArIGZpZWxkVHlw
ZS0+Z2V0RmllbGROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXBwZWROYW1lICsg
Ii4iICsgVEludGVybVRyYXZlcnNlcjo6aGFzaChmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpLCBo
YXNoRnVuY3Rpb24pLAorICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHR5cGUuZ2V0U3Ry
dWN0KCktPmZpZWxkcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRUeXBlJiBmaWVsZFR5cGUgPSAqKGZpZWxkc1tpXS0+
dHlwZSgpKTsKKyAgICAgICAgY29uc3QgVFN0cmluZyYgZmllbGROYW1lID0gZmllbGRzW2ldLT5u
YW1lKCk7CisgICAgICAgIGdldFZhcmlhYmxlSW5mbyhmaWVsZFR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lICsgIi4iICsgZmllbGROYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbWFwcGVkTmFtZSArICIuIiArIFRJbnRlcm1UcmF2ZXJzZXI6Omhhc2goZmllbGROYW1lLCBo
YXNoRnVuY3Rpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgaW5mb0xpc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBoYXNoRnVuY3Rpb24pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2J1aWx0aW5fc3lt
Ym9sX3RhYmxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyODkgQEAKKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyBUaGlzIGZpbGUgaXMgZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlX2J1aWx0aW5fc3ltYm9sX3RhYmxlLnB5LgorLy8gICAgICAgICAgICAg
ICAgICogRE8gTk9UIEhBTkQgTU9ESUZZICoKKy8vICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyNpbmNsdWRlICJjb21waWxlci9i
dWlsdGluX3N5bWJvbF90YWJsZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgi
CisKK3N0YXRpYyB2b2lkIGJ1aWx0aW4xKFRTeW1ib2xUYWJsZSogdCwgVFR5cGUqIHJ2YWx1ZSwg
Y29uc3QgY2hhciogbmFtZSwgVFR5cGUqIHB0eXBlMSwgY29uc3QgY2hhciogcG5hbWUxKQorewor
ICBURnVuY3Rpb24qIGYgPSBuZXcgVEZ1bmN0aW9uKG5ldyBUU3RyaW5nKG5hbWUpLCAqcnZhbHVl
KTsKKyAgVFBhcmFtZXRlciBwYXJhbSA9IHtuZXcgVFN0cmluZyhwbmFtZTEpLCBwdHlwZTF9Owor
ICBmLT5hZGRQYXJhbWV0ZXIocGFyYW0pOworICB0LT5pbnNlcnQoKmYpOworfQorCitzdGF0aWMg
dm9pZCBidWlsdGluMihUU3ltYm9sVGFibGUqIHQsIFRUeXBlKiBydmFsdWUsIGNvbnN0IGNoYXIq
IG5hbWUsIFRUeXBlKiBwdHlwZTEsIGNvbnN0IGNoYXIqIHBuYW1lMSwgVFR5cGUqIHB0eXBlMiwg
Y29uc3QgY2hhciogcG5hbWUyKQoreworICBURnVuY3Rpb24qIGYgPSBuZXcgVEZ1bmN0aW9uKG5l
dyBUU3RyaW5nKG5hbWUpLCAqcnZhbHVlKTsKKyAgVFBhcmFtZXRlciBwYXJhbTEgPSB7bmV3IFRT
dHJpbmcocG5hbWUxKSwgcHR5cGUxfTsKKyAgZi0+YWRkUGFyYW1ldGVyKHBhcmFtMSk7CisgIFRQ
YXJhbWV0ZXIgcGFyYW0yID0ge25ldyBUU3RyaW5nKHBuYW1lMiksIHB0eXBlMn07CisgIGYtPmFk
ZFBhcmFtZXRlcihwYXJhbTIpOworICB0LT5pbnNlcnQoKmYpOworfQorCitzdGF0aWMgdm9pZCBi
dWlsdGluMyhUU3ltYm9sVGFibGUqIHQsIFRUeXBlKiBydmFsdWUsIGNvbnN0IGNoYXIqIG5hbWUs
IFRUeXBlKiBwdHlwZTEsIGNvbnN0IGNoYXIqIHBuYW1lMSwgVFR5cGUqIHB0eXBlMiwgY29uc3Qg
Y2hhciogcG5hbWUyLCBUVHlwZSogcHR5cGUzLCBjb25zdCBjaGFyKiBwbmFtZTMpCit7CisgIFRG
dW5jdGlvbiogZiA9IG5ldyBURnVuY3Rpb24obmV3IFRTdHJpbmcobmFtZSksICpydmFsdWUpOwor
ICBUUGFyYW1ldGVyIHBhcmFtMSA9IHtuZXcgVFN0cmluZyhwbmFtZTEpLCBwdHlwZTF9OworICBm
LT5hZGRQYXJhbWV0ZXIocGFyYW0xKTsKKyAgVFBhcmFtZXRlciBwYXJhbTIgPSB7bmV3IFRTdHJp
bmcocG5hbWUyKSwgcHR5cGUyfTsKKyAgZi0+YWRkUGFyYW1ldGVyKHBhcmFtMik7CisgIFRQYXJh
bWV0ZXIgcGFyYW0zID0ge25ldyBUU3RyaW5nKHBuYW1lMyksIHB0eXBlM307CisgIGYtPmFkZFBh
cmFtZXRlcihwYXJhbTMpOworICB0LT5pbnNlcnQoKmYpOworfQorCit2b2lkIEluc2VydEJ1aWx0
SW5GdW5jdGlvbnNDb21tb24oY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsIFRT
eW1ib2xUYWJsZSogdCkgeworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImRlZ3JlZXMiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmFkaWFucyIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJkZWdy
ZWVzIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIp
OworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAiZGVncmVlcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIik7CisgICAgYnVp
bHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgImRlZ3JlZXMiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmFkaWFucyIpOworICAgIGJ1aWx0aW4x
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJkZWdyZWVzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInJhZGlhbnMiKTsKKyAgICBidWlsdGluMSh0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFs
c2UpLCAiZGVncmVlcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJyYWRpYW5zIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
InNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJzaW4iLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAic2luIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0
aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAiY29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNvcyIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJjb3MiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAidGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFuZ2xlIik7CisgICAgYnVp
bHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgInRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhbmdsZSIpOworICAgIGJ1aWx0aW4xKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAiYW5nbGUiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGFuIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgImFuZ2xlIik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImFzaW4iLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIp
OworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJhc2luIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAiYXNpbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImFz
aW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxz
ZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhY29zIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYWNvcyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRp
bjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgImFjb3MiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJh
Y29zIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
IngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5X292ZXJfeCIpOwor
ICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJhdGFuIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInlfb3Zlcl94Iik7CisgICAgYnVp
bHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgImF0YW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieV9vdmVyX3giKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAiYXRhbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5X292ZXJfeCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSks
ICJwb3ciLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInBv
dyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicG93Iiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZh
bHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJwb3ciLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4
Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRp
bjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgImV4cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImV4
cCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgImxvZyIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxvZyIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImV4cDIiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOwor
ICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIsIGZhbHNlLCBmYWxzZSksICJleHAyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAiZXhwMiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImV4cDIi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJsb2cyIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibG9nMiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgImxvZzIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJsb2cy
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic3FydCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInNxcnQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4x
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJzcXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAic3Fy
dCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImludmVyc2VzcXJ0IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiaW52ZXJzZXNxcnQiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIp
OworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJpbnZlcnNlc3FydCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgImludmVyc2VzcXJ0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
MSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiYWJz
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYWJzIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAic2lnbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInNpZ24i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJzaWduIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsK
KyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAic2lnbiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgImZsb29yIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZmxv
b3IiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJmbG9vciIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4
Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImZsb29yIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWls
dGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAiY2VpbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
ImNlaWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjZWlsIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
IngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY2VpbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVp
bHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImZyYWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAiZnJhY3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJmcmFjdCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImZyYWN0IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIs
IGZhbHNlLCBmYWxzZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIm1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAibW9kIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJtb2QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
Im1vZCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibW9k
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1pbiIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWluIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1pbiIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
InkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWluIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIp
OworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJtaW4iLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7Cisg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBi
dWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0
aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIo
dCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgIm1heCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFs
c2UpLCAibWF4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSks
ICJtYXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1h
eCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiY2xhbXAi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFsIik7CisgICAgYnVpbHRp
bjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWluVmFsIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIm1h
eFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
Im1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEs
IGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY2xhbXAi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibWF4VmFsIik7CisgICAgYnVpbHRp
bjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFs
c2UsIGZhbHNlKSwgImNsYW1wIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibWluVmFsIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIm1h
eFZhbCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjbGFtcCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
Im1pblZhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJtYXhWYWwiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY2xhbXAi
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJtaW5WYWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibWF4VmFsIik7CisgICAgYnVpbHRp
bjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYSIpOworICAg
IGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJtaXgiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImEi
KTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWl4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1peCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
InkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAiYSIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJtaXgiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJ5IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgImEiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibWl4IiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNl
KSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBm
YWxzZSwgZmFsc2UpLCAieSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm1p
eCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgInkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiYSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
NCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4zKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UxIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIngi
KTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic21vb3Roc3RlcCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJlZGdlMCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInNtb290aHN0
ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0
aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImVkZ2UxIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZh
bHNlKSwgIngiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAic21vb3Roc3RlcCIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJl
ZGdlMCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZh
bHNlLCBmYWxzZSksICJlZGdlMSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjModCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
InNtb290aHN0ZXAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZWRnZTEiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIpOwor
ICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJzbW9vdGhzdGVwIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImVkZ2UwIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImVkZ2UxIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNl
KSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxLCBmYWxzZSwgZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAibGVuZ3RoIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZGlz
dGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBm
YWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAi
ZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBidWlsdGluMih0LCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBidWlsdGluMih0LCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAiZGlzdGFuY2UiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicDAiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicDEiKTsKKyAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAiZG90IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJkb3QiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImRvdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZG90
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJjcm9zcyIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXpl
IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2Us
IGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
IngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAg
ICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAibm9ybWFsaXplIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGlu
Myh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxz
ZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIk5y
ZWYiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwg
ZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZmFjZWZvcndh
cmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxz
ZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIk5yZWYiKTsKKyAgICBidWlsdGluMyh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAiZmFjZWZvcndhcmQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVi
dEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIk5yZWYi
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIk4i
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIk4i
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIk4i
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAicmVmbGVjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIk4i
KTsKKyAgICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAicmVmcmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgIk4i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwg
ZmFsc2UpLCAiZXRhIik7CisgICAgYnVpbHRpbjModCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInJlZnJhY3QiLCBuZXcgVFR5
cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
SSIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNl
LCBmYWxzZSksICJOIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgImV0YSIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJyZWZy
YWN0IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIkkiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiTiIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJldGEiKTsKKyAgICBidWlsdGluMyh0
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAicmVmcmFjdCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJJIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIk4iLCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiZXRhIik7Cisg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMiwgdHJ1ZSwgZmFsc2UpLCAibWF0cml4Q29tcE11bHQiLCBuZXcgVFR5cGUoRWJ0RmxvYXQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCB0cnVlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgdHJ1ZSwgZmFsc2UpLCAieSIp
OworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIHRydWUsIGZhbHNlKSwgIm1hdHJpeENvbXBNdWx0IiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgdHJ1ZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIHRydWUsIGZhbHNlKSwg
InkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCB0cnVlLCBmYWxzZSksICJtYXRyaXhDb21wTXVsdCIsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIHRydWUsIGZhbHNlKSwgIngiLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCB0cnVlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5l
dyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxz
ZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW4iLCBuZXcgVFR5cGUoRWJ0
SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcg
VFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwg
InkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbiIsIG5ldyBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIp
OworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuIiwgbmV3IFRUeXBlKEVidEludCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVi
dEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7Cisg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInki
KTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuRXF1YWwiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibGVzc1RoYW5FcXVhbCIsIG5ldyBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAi
eCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwg
ZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImxlc3NUaGFuRXF1YWwiLCBuZXcg
VFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
IngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2Us
IGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJsZXNzVGhhbkVxdWFsIiwgbmV3
IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW4iLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW4iLCBu
ZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFs
c2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMs
IGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW4i
LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRo
YW4iLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2Us
IGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhh
biIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwg
ZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAz
LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFu
IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQs
IGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW5F
cXVhbCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJncmVh
dGVyVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5l
dyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxz
ZSwgZmFsc2UpLCAiZ3JlYXRlclRoYW5FcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1
aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywg
ZmFsc2UsIGZhbHNlKSwgImdyZWF0ZXJUaGFuRXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0
SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJncmVhdGVyVGhhbkVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBl
KEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7
CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRG
bG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ5Iik7Cisg
ICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAg
YnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0
LCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVp
bHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBm
YWxzZSwgZmFsc2UpLCAiZXF1YWwiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0
LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJlcXVhbCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwg
ImVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZh
bHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAiZXF1YWwi
LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJ4IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAy
LCBmYWxzZSwgZmFsc2UpLCAieSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImVxdWFsIiwgbmV3
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2Up
LCAieCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJlcXVhbCIsIG5ldyBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngi
LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUo
RWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAieCIs
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ5Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUo
RWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgIngiLCBu
ZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgInkiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBUVHlwZShFYnRJ
bnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAi
eSIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwgbmV3IFRUeXBlKEVidEludCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBl
KEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7
CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90RXF1YWwiLCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIsIGZhbHNlLCBmYWxzZSksICJ4IiwgbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieSIpOwor
ICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMywgZmFsc2UsIGZhbHNlKSwgIm5vdEVxdWFsIiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAieCIsIG5ldyBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgInkiKTsKKyAg
ICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDQsIGZhbHNlLCBmYWxzZSksICJub3RFcXVhbCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgIngiLCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ5Iik7CisgICAg
YnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAx
LCBmYWxzZSwgZmFsc2UpLCAiYW55IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQsIG5ldyBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImFueSIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhbnkiLCBuZXcgVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ4Iik7
CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAiYWxsIiwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0aW4xKHQs
IG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZh
bHNlKSwgImFsbCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJhbGwiLCBuZXcg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSks
ICJ4Iik7CisgICAgYnVpbHRpbjEodCwgbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAibm90IiwgbmV3IFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyLCBmYWxzZSwgZmFsc2UpLCAieCIpOworICAgIGJ1aWx0
aW4xKHQsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFs
c2UsIGZhbHNlKSwgIm5vdCIsIG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgIngiKTsKKyAgICBidWlsdGluMSh0LCBuZXcgVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJub3Qi
LCBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBm
YWxzZSksICJ4Iik7CisgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRCIsIG5ldyBUVHlw
ZShFYnRTYW1wbGVyMkQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2Up
LCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDIsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0
dXJlMkRQcm9qIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNvb3JkIik7CisgICAgYnVp
bHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwg
ZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFByb2oiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJELCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2Up
LCAiY29vcmQiKTsKKyAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZUN1YmUiLCBuZXcgVFR5
cGUoRWJ0U2FtcGxlckN1YmUsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFs
c2UpLCAic2FtcGxlciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDMsIGZhbHNlLCBmYWxzZSksICJjb29yZCIpOworICAgIGlmIChyZXNvdXJjZXMuT0VTX0VH
TF9pbWFnZV9leHRlcm5hbCkgeworICAgICAgICBidWlsdGluMih0LCBuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJE
IiwgbmV3IFRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUywgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIik7CisgICAgfQor
ICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCkgeworICAgICAgICBidWls
dGluMih0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBm
YWxzZSwgZmFsc2UpLCAidGV4dHVyZTJEUHJvaiIsIG5ldyBUVHlwZShFYnRTYW1wbGVyRXh0ZXJu
YWxPRVMsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxl
ciIsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIGZhbHNl
LCBmYWxzZSksICJjb29yZCIpOworICAgIH0KKyAgICBpZiAocmVzb3VyY2VzLk9FU19FR0xfaW1h
Z2VfZXh0ZXJuYWwpIHsKKyAgICAgICAgYnVpbHRpbjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNlKSwgInRleHR1cmUyRFByb2oi
LCBuZXcgVFR5cGUoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAgICB9Cisg
ICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKKyAgICAgICAgYnVpbHRp
bjIodCwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFs
c2UsIGZhbHNlKSwgInRleHR1cmUyRFJlY3QiLCBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJEUmVjdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZhbHNl
KSwgImNvb3JkIik7CisgICAgfQorICAgIGlmIChyZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFu
Z2xlKSB7CisgICAgICAgIGJ1aWx0aW4yKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRSZWN0UHJvaiIsIG5l
dyBUVHlwZShFYnRTYW1wbGVyMkRSZWN0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFs
c2UsIGZhbHNlKSwgInNhbXBsZXIiLCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAzLCBmYWxzZSwgZmFsc2UpLCAiY29vcmQiKTsKKyAgICB9CisgICAgaWYgKHJl
c291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpIHsKKyAgICAgICAgYnVpbHRpbjIodCwgbmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgZmFsc2UsIGZhbHNl
KSwgInRleHR1cmUyRFJlY3RQcm9qIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRFJlY3QsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCAxLCBmYWxzZSwgZmFsc2UpLCAic2FtcGxlciIsIG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJj
b29yZCIpOworICAgIH0KK30KKwordm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zVmVydGV4KGNv
bnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLCBUU3ltYm9sVGFibGUqIHQpIHsKKyAg
ICBidWlsdGluMyh0LCBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCA0LCBmYWxzZSwgZmFsc2UpLCAidGV4dHVyZTJETG9kIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIy
RCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwg
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgZmFsc2UsIGZh
bHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0
dXJlMkRQcm9qTG9kIiwgbmV3IFRUeXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwg
ImxvZCIpOworICAgIGJ1aWx0aW4zKHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDQsIGZhbHNlLCBmYWxzZSksICJ0ZXh0dXJlMkRQcm9qTG9kIiwgbmV3IFRU
eXBlKEVidFNhbXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxz
ZSksICJzYW1wbGVyIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCwgZmFsc2UsIGZhbHNlKSwgImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUdsb2JhbCwgMSwgZmFsc2UsIGZhbHNlKSwgImxvZCIpOworICAgIGJ1aWx0aW4z
KHQsIG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIGZhbHNl
LCBmYWxzZSksICJ0ZXh0dXJlQ3ViZUxvZCIsIG5ldyBUVHlwZShFYnRTYW1wbGVyQ3ViZSwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEsIGZhbHNlLCBmYWxzZSksICJzYW1wbGVyIiwgbmV3IFRU
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgZmFsc2UsIGZhbHNlKSwg
ImNvb3JkIiwgbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSwg
ZmFsc2UsIGZhbHNlKSwgImxvZCIpOworfQorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvYnVpbHRpbl9zeW1ib2xfdGFibGUuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9idWls
dGluX3N5bWJvbF90YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisjaWZuZGVmIF9CVUlMVElOX1NZTUJPTF9UQUJMRV9JTkNMVURFRF8KKyNk
ZWZpbmUgX0JVSUxUSU5fU1lNQk9MX1RBQkxFX0lOQ0xVREVEXworCisjaW5jbHVkZSAiR0xTTEFO
Ry9TaGFkZXJMYW5nLmgiCisKK2NsYXNzIFRTeW1ib2xUYWJsZTsKKworZXh0ZXJuIHZvaWQgSW5z
ZXJ0QnVpbHRJbkZ1bmN0aW9uc0NvbW1vbihjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291
cmNlcywgVFN5bWJvbFRhYmxlKiB0KTsKK2V4dGVybiB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlv
bnNWZXJ0ZXgoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsIFRTeW1ib2xUYWJs
ZSogdCk7CisKKyNlbmRpZiAvLyBfQlVJTFRJTl9TWU1CT0xfVEFCTEVfSU5DTFVERURfCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwJKHJl
dmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9n
bHNsYW5nLmwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDEwIEBAIFdISUNIIEdFTkVSQVRF
UyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDEw
MikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZhbC0+bGV4LmxpbmUgPSB5
eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9maWxlID0geXlsbG9jLT5sYXN0X2ZpbGUgPSB5
eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGxvYy0+bGFzdF9saW5lID0g
eXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1heF9zaXplKSBcCiAg
ICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5c2Nhbm5lcik7CiAKQEAg
LTU3LDEwICs2MCw4IEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW4K
ICV9CiAKICVvcHRpb24gbm95eXdyYXAgbm91bnB1dCBuZXZlci1pbnRlcmFjdGl2ZQotJW9wdGlv
biB5eWxpbmVubyByZWVudHJhbnQgYmlzb24tYnJpZGdlCi0lb3B0aW9uIHN0YWNrCislb3B0aW9u
IHl5bGluZW5vIHJlZW50cmFudCBiaXNvbi1icmlkZ2UgYmlzb24tbG9jYXRpb25zCiAlb3B0aW9u
IGV4dHJhLXR5cGU9IlRQYXJzZUNvbnRleHQqIgotJXggQ09NTUVOVCBGSUVMRFMKIAogRCAgICAg
ICAgICAgWzAtOV0KIEwgICAgICAgICAgIFthLXpBLVpfXQpAQCAtNzAsNzMgKzcxLDYwIEBAIE8g
ICAgICAgICAgIFswLTddCiAKICUlCiAKLSV7Ci0gICAgVFBhcnNlQ29udGV4dCogY29udGV4dCA9
IHl5ZXh0cmE7Ci0lfQotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMgKi8KLSIvLyJbXlxu
XSogOworImludmFyaWFudCIgICAgeyByZXR1cm4gSU5WQVJJQU5UOyB9CisiaGlnaHAiICAgICAg
ICB7IHJldHVybiBISUdIX1BSRUNJU0lPTjsgfQorIm1lZGl1bXAiICAgICAgeyByZXR1cm4gTUVE
SVVNX1BSRUNJU0lPTjsgfQorImxvd3AiICAgICAgICAgeyByZXR1cm4gTE9XX1BSRUNJU0lPTjsg
fQorInByZWNpc2lvbiIgICAgeyByZXR1cm4gUFJFQ0lTSU9OOyB9CisKKyJhdHRyaWJ1dGUiICAg
IHsgcmV0dXJuIEFUVFJJQlVURTsgfQorImNvbnN0IiAgICAgICAgeyByZXR1cm4gQ09OU1RfUVVB
TDsgfQorInVuaWZvcm0iICAgICAgeyByZXR1cm4gVU5JRk9STTsgfQorInZhcnlpbmciICAgICAg
eyByZXR1cm4gVkFSWUlORzsgfQorCisiYnJlYWsiICAgICAgICB7IHJldHVybiBCUkVBSzsgfQor
ImNvbnRpbnVlIiAgICAgeyByZXR1cm4gQ09OVElOVUU7IH0KKyJkbyIgICAgICAgICAgIHsgcmV0
dXJuIERPOyB9CisiZm9yIiAgICAgICAgICB7IHJldHVybiBGT1I7IH0KKyJ3aGlsZSIgICAgICAg
IHsgcmV0dXJuIFdISUxFOyB9CisKKyJpZiIgICAgICAgICAgIHsgcmV0dXJuIElGOyB9CisiZWxz
ZSIgICAgICAgICB7IHJldHVybiBFTFNFOyB9CisKKyJpbiIgICAgICAgICAgIHsgcmV0dXJuIElO
X1FVQUw7IH0KKyJvdXQiICAgICAgICAgIHsgcmV0dXJuIE9VVF9RVUFMOyB9CisiaW5vdXQiICAg
ICAgICB7IHJldHVybiBJTk9VVF9RVUFMOyB9CisKKyJmbG9hdCIgICAgICAgIHsgcmV0dXJuIEZM
T0FUX1RZUEU7IH0KKyJpbnQiICAgICAgICAgIHsgcmV0dXJuIElOVF9UWVBFOyB9Cisidm9pZCIg
ICAgICAgICB7IHJldHVybiBWT0lEX1RZUEU7IH0KKyJib29sIiAgICAgICAgIHsgcmV0dXJuIEJP
T0xfVFlQRTsgfQorInRydWUiICAgICAgICAgeyB5eWx2YWwtPmxleC5iID0gdHJ1ZTsgIHJldHVy
biBCT09MQ09OU1RBTlQ7IH0KKyJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZhbHNl
OyByZXR1cm4gQk9PTENPTlNUQU5UOyB9CisKKyJkaXNjYXJkIiAgICAgIHsgcmV0dXJuIERJU0NB
UkQ7IH0KKyJyZXR1cm4iICAgICAgIHsgcmV0dXJuIFJFVFVSTjsgfQorCisibWF0MiIgICAgICAg
ICB7IHJldHVybiBNQVRSSVgyOyB9CisibWF0MyIgICAgICAgICB7IHJldHVybiBNQVRSSVgzOyB9
CisibWF0NCIgICAgICAgICB7IHJldHVybiBNQVRSSVg0OyB9CisKKyJ2ZWMyIiAgICAgICAgIHsg
cmV0dXJuIFZFQzI7IH0KKyJ2ZWMzIiAgICAgICAgIHsgcmV0dXJuIFZFQzM7IH0KKyJ2ZWM0IiAg
ICAgICAgIHsgcmV0dXJuIFZFQzQ7IH0KKyJpdmVjMiIgICAgICAgIHsgcmV0dXJuIElWRUMyOyB9
CisiaXZlYzMiICAgICAgICB7IHJldHVybiBJVkVDMzsgfQorIml2ZWM0IiAgICAgICAgeyByZXR1
cm4gSVZFQzQ7IH0KKyJidmVjMiIgICAgICAgIHsgcmV0dXJuIEJWRUMyOyB9CisiYnZlYzMiICAg
ICAgICB7IHJldHVybiBCVkVDMzsgfQorImJ2ZWM0IiAgICAgICAgeyByZXR1cm4gQlZFQzQ7IH0K
KworInNhbXBsZXIyRCIgICAgICAgICAgeyByZXR1cm4gU0FNUExFUjJEOyB9Cisic2FtcGxlckN1
YmUiICAgICAgICB7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQorInNhbXBsZXJFeHRlcm5hbE9FUyIg
eyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KKyJzYW1wbGVyMkRSZWN0IiAgICAgIHsg
cmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAotICAgIC8qIE11bHRpLWxpbmUgY29tbWVudHMgKi8K
LSIvKiIgICAgICAgICAgIHsgeXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9Ci08
Q09NTUVOVD4uIHwKLTxDT01NRU5UPlxuIDsKLTxDT01NRU5UPiIqLyIgIHsgeXlfcG9wX3N0YXRl
KHl5c2Nhbm5lcik7IH0KLQotImludmFyaWFudCIgICAgeyByZXR1cm4oSU5WQVJJQU5UKTsgfQot
ImhpZ2hwIiAgICAgICAgeyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Ci0ibWVkaXVtcCIgICAg
ICB7IHJldHVybihNRURJVU1fUFJFQ0lTSU9OKTsgfQotImxvd3AiICAgICAgICAgeyByZXR1cm4o
TE9XX1BSRUNJU0lPTik7IH0KLSJwcmVjaXNpb24iICAgIHsgcmV0dXJuKFBSRUNJU0lPTik7IH0K
LQotImF0dHJpYnV0ZSIgICAgeyByZXR1cm4oQVRUUklCVVRFKTsgfQotImNvbnN0IiAgICAgICAg
eyByZXR1cm4oQ09OU1RfUVVBTCk7IH0KLSJ1bmlmb3JtIiAgICAgIHsgcmV0dXJuKFVOSUZPUk0p
OyB9Ci0idmFyeWluZyIgICAgICB7IHJldHVybihWQVJZSU5HKTsgfQotCi0iYnJlYWsiICAgICAg
ICB7IHJldHVybihCUkVBSyk7IH0KLSJjb250aW51ZSIgICAgIHsgcmV0dXJuKENPTlRJTlVFKTsg
fQotImRvIiAgICAgICAgICAgeyByZXR1cm4oRE8pOyB9Ci0iZm9yIiAgICAgICAgICB7IHJldHVy
bihGT1IpOyB9Ci0id2hpbGUiICAgICAgICB7IHJldHVybihXSElMRSk7IH0KLQotImlmIiAgICAg
ICAgICAgeyByZXR1cm4oSUYpOyB9Ci0iZWxzZSIgICAgICAgICB7IHJldHVybihFTFNFKTsgfQot
Ci0iaW4iICAgICAgICAgICB7IHJldHVybihJTl9RVUFMKTsgfQotIm91dCIgICAgICAgICAgeyBy
ZXR1cm4oT1VUX1FVQUwpOyB9Ci0iaW5vdXQiICAgICAgICB7IHJldHVybihJTk9VVF9RVUFMKTsg
fQotCi0iZmxvYXQiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVy
bihGTE9BVF9UWVBFKTsgfQotImludCIgICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4oSU5UX1RZUEUpOyB9Ci0idm9pZCIgICAgICAgICB7IGNvbnRleHQtPmxl
eEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihWT0lEX1RZUEUpOyB9Ci0iYm9vbCIgICAgICAgICB7
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihCT09MX1RZUEUpOyB9Ci0idHJ1
ZSIgICAgICAgICB7IHl5bHZhbC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuKEJPT0xDT05TVEFOVCk7
IH0KLSJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyByZXR1cm4oQk9PTENP
TlNUQU5UKTsgfQotCi0iZGlzY2FyZCIgICAgICB7IHJldHVybihESVNDQVJEKTsgfQotInJldHVy
biIgICAgICAgeyByZXR1cm4oUkVUVVJOKTsgfQotCi0ibWF0MiIgICAgICAgICB7IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVgyKTsgfQotIm1hdDMiICAgICAgICAg
eyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMyk7IH0KLSJtYXQ0
IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJWDQp
OyB9Ci0KLSJ2ZWMyIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuIChWRUMyKTsgfQotInZlYzMiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0
cnVlOyByZXR1cm4gKFZFQzMpOyB9Ci0idmVjNCIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVy
VHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KLSJpdmVjMiIgICAgICAgIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMik7IH0KLSJpdmVjMyIgICAgICAgIHsg
Y29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMyk7IH0KLSJpdmVjNCIg
ICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDNCk7IH0K
LSJidmVjMiIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChC
VkVDMik7IH0KLSJidmVjMyIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsg
cmV0dXJuIChCVkVDMyk7IH0KLSJidmVjNCIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KLQotInNhbXBsZXIyRCIgICAgICAgeyBjb250ZXh0
LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Ci0ic2FtcGxlckN1YmUi
ICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSQ1VCRTsg
fQotInNhbXBsZXJFeHRlcm5hbE9FUyIgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyBy
ZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KLSJzYW1wbGVyMkRSZWN0IiB7IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9Ci0KLSJzdHJ1Y3Qi
ICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKFNUUlVDVCk7IH0K
KyJzdHJ1Y3QiICAgICAgIHsgcmV0dXJuIFNUUlVDVDsgfQogCiAiYXNtIiAgICAgICAgICB7IHJl
dHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIApAQCAtMTgzLDEzICsxNzEsMTEgQEAg
TyAgICAgICAgICAgWzAtN10KICJmdmVjMyIgICAgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQo
eXlzY2FubmVyKTsgfQogImZ2ZWM0IiAgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNj
YW5uZXIpOyB9CiAKLSJzYW1wbGVyMUQiICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2Fu
bmVyKTsgfQotInNhbXBsZXIzRCIgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIp
OyB9Ci0KLSJzYW1wbGVyMURTaGFkb3ciIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVy
KTsgfQotInNhbXBsZXIyRFNoYWRvdyIgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIp
OyB9Ci0KLSJzYW1wbGVyM0RSZWN0IiB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7
IH0KKyJzYW1wbGVyMUQiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5l
cik7IH0KKyJzYW1wbGVyM0QiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nh
bm5lcik7IH0KKyJzYW1wbGVyMURTaGFkb3ciICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5
c2Nhbm5lcik7IH0KKyJzYW1wbGVyMkRTaGFkb3ciICAgICB7IHJldHVybiByZXNlcnZlZF93b3Jk
KHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0RSZWN0IiAgICAgICB7IHJldHVybiByZXNlcnZlZF93
b3JkKHl5c2Nhbm5lcik7IH0KICJzYW1wbGVyMkRSZWN0U2hhZG93IiB7IHJldHVybiByZXNlcnZl
ZF93b3JkKHl5c2Nhbm5lcik7IH0KIAogInNpemVvZiIgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRf
d29yZCh5eXNjYW5uZXIpOyB9CkBAIC0yMDMsNzIgKzE4OSw2NCBAQCBPICAgICAgICAgICBbMC03
XQogICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKIH0KIAotMFt4WF17SH0rICAgICAg
ICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAw
KSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KLTB7T30rICAgICAgICAgICAgIHsgeXlsdmFsLT5s
ZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5U
Q09OU1RBTlQpOyB9Ci0we0R9KyAgICAgICAgICAgICB7IGNvbnRleHQtPmVycm9yKHl5bGluZW5v
LCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+cmVjb3ZlcigpOyBy
ZXR1cm4gMDt9Ci17RH0rICAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQotCi17
RH0re0V9ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRv
Zl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQote0R9KyIuIntEfSooe0V9
KT8geyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkp
OyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KLSIuIntEfSsoe0V9KT8gICAgIHsgeXlsdmFsLT5s
ZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FU
Q09OU1RBTlQpOyB9Ci0KLSIrPSIgICAgICAgICAgICB7ICByZXR1cm4oQUREX0FTU0lHTik7IH0K
LSItPSIgICAgICAgICAgICB7ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KLSIqPSIgICAgICAgICAg
ICB7ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KLSIvPSIgICAgICAgICAgICB7ICByZXR1cm4oRElW
X0FTU0lHTik7IH0KLSIlPSIgICAgICAgICAgICB7ICByZXR1cm4oTU9EX0FTU0lHTik7IH0KLSI8
PD0iICAgICAgICAgICB7ICByZXR1cm4oTEVGVF9BU1NJR04pOyB9Ci0iPj49IiAgICAgICAgICAg
eyAgcmV0dXJuKFJJR0hUX0FTU0lHTik7IH0KLSImPSIgICAgICAgICAgICB7ICByZXR1cm4oQU5E
X0FTU0lHTik7IH0KLSJePSIgICAgICAgICAgICB7ICByZXR1cm4oWE9SX0FTU0lHTik7IH0KLSJ8
PSIgICAgICAgICAgICB7ICByZXR1cm4oT1JfQVNTSUdOKTsgfQotCi0iKysiICAgICAgICAgICAg
eyAgcmV0dXJuKElOQ19PUCk7IH0KLSItLSIgICAgICAgICAgICB7ICByZXR1cm4oREVDX09QKTsg
fQotIiYmIiAgICAgICAgICAgIHsgIHJldHVybihBTkRfT1ApOyB9Ci0ifHwiICAgICAgICAgICAg
eyAgcmV0dXJuKE9SX09QKTsgfQotIl5eIiAgICAgICAgICAgIHsgIHJldHVybihYT1JfT1ApOyB9
Ci0iPD0iICAgICAgICAgICAgeyAgcmV0dXJuKExFX09QKTsgfQotIj49IiAgICAgICAgICAgIHsg
IHJldHVybihHRV9PUCk7IH0KLSI9PSIgICAgICAgICAgICB7ICByZXR1cm4oRVFfT1ApOyB9Ci0i
IT0iICAgICAgICAgICAgeyAgcmV0dXJuKE5FX09QKTsgfQotIjw8IiAgICAgICAgICAgIHsgIHJl
dHVybihMRUZUX09QKTsgfQotIj4+IiAgICAgICAgICAgIHsgIHJldHVybihSSUdIVF9PUCk7IH0K
LSI7IiAgICAgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4o
U0VNSUNPTE9OKTsgfQotKCJ7InwiPCUiKSAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
ZmFsc2U7IHJldHVybihMRUZUX0JSQUNFKTsgfQotKCJ9InwiJT4iKSAgICAgIHsgcmV0dXJuKFJJ
R0hUX0JSQUNFKTsgfQotIiwiICAgICAgICAgeyBpZiAoY29udGV4dC0+aW5UeXBlUGFyZW4pIGNv
bnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Ci0iOiIgICAgICAg
ICB7IHJldHVybihDT0xPTik7IH0KLSI9IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gZmFsc2U7IHJldHVybihFUVVBTCk7IH0KLSIoIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0
ZXJUeXBlID0gZmFsc2U7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gdHJ1ZTsgcmV0dXJuKExFRlRf
UEFSRU4pOyB9Ci0iKSIgICAgICAgICB7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gZmFsc2U7IHJl
dHVybihSSUdIVF9QQVJFTik7IH0KLSgiWyJ8Ijw6IikgICAgICB7IHJldHVybihMRUZUX0JSQUNL
RVQpOyB9Ci0oIl0ifCI6PiIpICAgICAgeyByZXR1cm4oUklHSFRfQlJBQ0tFVCk7IH0KLSIuIiAg
ICAgICAgIHsgQkVHSU4oRklFTERTKTsgIHJldHVybihET1QpOyB9Ci0iISIgICAgICAgICB7IHJl
dHVybihCQU5HKTsgfQotIi0iICAgICAgICAgeyByZXR1cm4oREFTSCk7IH0KLSJ+IiAgICAgICAg
IHsgcmV0dXJuKFRJTERFKTsgfQotIisiICAgICAgICAgeyByZXR1cm4oUExVUyk7IH0KLSIqIiAg
ICAgICAgIHsgcmV0dXJuKFNUQVIpOyB9Ci0iLyIgICAgICAgICB7IHJldHVybihTTEFTSCk7IH0K
LSIlIiAgICAgICAgIHsgcmV0dXJuKFBFUkNFTlQpOyB9Ci0iPCIgICAgICAgICB7IHJldHVybihM
RUZUX0FOR0xFKTsgfQotIj4iICAgICAgICAgeyByZXR1cm4oUklHSFRfQU5HTEUpOyB9Ci0ifCIg
ICAgICAgICB7IHJldHVybihWRVJUSUNBTF9CQVIpOyB9Ci0iXiIgICAgICAgICB7IHJldHVybihD
QVJFVCk7IH0KLSImIiAgICAgICAgIHsgcmV0dXJuKEFNUEVSU0FORCk7IH0KLSI/IiAgICAgICAg
IHsgcmV0dXJuKFFVRVNUSU9OKTsgfQotCi08RklFTERTPntMfSh7TH18e0R9KSogeyAKLSAgICBC
RUdJTihJTklUSUFMKTsKLSAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5
eXRleHQpOyAKLSAgICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwotfQotPEZJRUxEUz5bIFx0XHZc
ZlxyXSB7fQotCi1bIFx0XHZcblxmXHJdICAgeyAgfQotPCo+PDxFT0Y+PiAgICAgIHsgY29udGV4
dC0+QWZ0ZXJFT0YgPSB0cnVlOyB5eXRlcm1pbmF0ZSgpOyB9Ci08Kj4uICAgICAgICAgICAgeyBj
b250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBjaGFyIiwgeXl0ZXh0LCAiIik7IHJl
dHVybiAwOyB9CiswW3hYXXtIfSsgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Ciswe099
KyAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5
eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Cit7RH0rICAgICAgICAgICAgICB7
IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsg
cmV0dXJuIElOVENPTlNUQU5UOyB9CisKK3tEfSt7RX0gICAgICAgICAgIHsgeXlsdmFsLT5sZXgu
ZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09O
U1RBTlQ7IH0KK3tEfSsiLiJ7RH0qKHtFfSk/IHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0
PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKyIuIntE
fSsoe0V9KT8gICAgIHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2Rv
dCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKworIis9IiAgICAgICAgICAgIHsg
cmV0dXJuIEFERF9BU1NJR047IH0KKyItPSIgICAgICAgICAgICB7IHJldHVybiBTVUJfQVNTSUdO
OyB9CisiKj0iICAgICAgICAgICAgeyByZXR1cm4gTVVMX0FTU0lHTjsgfQorIi89IiAgICAgICAg
ICAgIHsgcmV0dXJuIERJVl9BU1NJR047IH0KKyIlPSIgICAgICAgICAgICB7IHJldHVybiBNT0Rf
QVNTSUdOOyB9CisiPDw9IiAgICAgICAgICAgeyByZXR1cm4gTEVGVF9BU1NJR047IH0KKyI+Pj0i
ICAgICAgICAgICB7IHJldHVybiBSSUdIVF9BU1NJR047IH0KKyImPSIgICAgICAgICAgICB7IHJl
dHVybiBBTkRfQVNTSUdOOyB9CisiXj0iICAgICAgICAgICAgeyByZXR1cm4gWE9SX0FTU0lHTjsg
fQorInw9IiAgICAgICAgICAgIHsgcmV0dXJuIE9SX0FTU0lHTjsgfQorCisiKysiICAgICAgICAg
ICAgeyByZXR1cm4gSU5DX09QOyB9CisiLS0iICAgICAgICAgICAgeyByZXR1cm4gREVDX09QOyB9
CisiJiYiICAgICAgICAgICAgeyByZXR1cm4gQU5EX09QOyB9CisifHwiICAgICAgICAgICAgeyBy
ZXR1cm4gT1JfT1A7IH0KKyJeXiIgICAgICAgICAgICB7IHJldHVybiBYT1JfT1A7IH0KKyI8PSIg
ICAgICAgICAgICB7IHJldHVybiBMRV9PUDsgfQorIj49IiAgICAgICAgICAgIHsgcmV0dXJuIEdF
X09QOyB9CisiPT0iICAgICAgICAgICAgeyByZXR1cm4gRVFfT1A7IH0KKyIhPSIgICAgICAgICAg
ICB7IHJldHVybiBORV9PUDsgfQorIjw8IiAgICAgICAgICAgIHsgcmV0dXJuIExFRlRfT1A7IH0K
KyI+PiIgICAgICAgICAgICB7IHJldHVybiBSSUdIVF9PUDsgfQorIjsiICAgICAgICAgICAgIHsg
cmV0dXJuIFNFTUlDT0xPTjsgfQorKCJ7InwiPCUiKSAgICAgIHsgcmV0dXJuIExFRlRfQlJBQ0U7
IH0KKygifSJ8IiU+IikgICAgICB7IHJldHVybiBSSUdIVF9CUkFDRTsgfQorIiwiICAgICAgICAg
eyByZXR1cm4gQ09NTUE7IH0KKyI6IiAgICAgICAgIHsgcmV0dXJuIENPTE9OOyB9CisiPSIgICAg
ICAgICB7IHJldHVybiBFUVVBTDsgfQorIigiICAgICAgICAgeyByZXR1cm4gTEVGVF9QQVJFTjsg
fQorIikiICAgICAgICAgeyByZXR1cm4gUklHSFRfUEFSRU47IH0KKygiWyJ8Ijw6IikgIHsgcmV0
dXJuIExFRlRfQlJBQ0tFVDsgfQorKCJdInwiOj4iKSAgeyByZXR1cm4gUklHSFRfQlJBQ0tFVDsg
fQorIi4iICAgICAgICAgeyByZXR1cm4gRE9UOyB9CisiISIgICAgICAgICB7IHJldHVybiBCQU5H
OyB9CisiLSIgICAgICAgICB7IHJldHVybiBEQVNIOyB9CisifiIgICAgICAgICB7IHJldHVybiBU
SUxERTsgfQorIisiICAgICAgICAgeyByZXR1cm4gUExVUzsgfQorIioiICAgICAgICAgeyByZXR1
cm4gU1RBUjsgfQorIi8iICAgICAgICAgeyByZXR1cm4gU0xBU0g7IH0KKyIlIiAgICAgICAgIHsg
cmV0dXJuIFBFUkNFTlQ7IH0KKyI8IiAgICAgICAgIHsgcmV0dXJuIExFRlRfQU5HTEU7IH0KKyI+
IiAgICAgICAgIHsgcmV0dXJuIFJJR0hUX0FOR0xFOyB9CisifCIgICAgICAgICB7IHJldHVybiBW
RVJUSUNBTF9CQVI7IH0KKyJeIiAgICAgICAgIHsgcmV0dXJuIENBUkVUOyB9CisiJiIgICAgICAg
ICB7IHJldHVybiBBTVBFUlNBTkQ7IH0KKyI/IiAgICAgICAgIHsgcmV0dXJuIFFVRVNUSU9OOyB9
CisKK1sgXHRcdlxuXGZccl0geyB9Cis8PEVPRj4+ICAgIHsgeXl0ZXJtaW5hdGUoKTsgfQorLiAg
ICAgICAgICB7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAKICUlCiAKQEAgLTI3OCw3ICsy
NTYsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6CiAgICAgeXlf
c2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8gMCA6IHRva2VuLnRl
eHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAgbWVtY3B5KGJ1Ziwg
dG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VM
b2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24ubGluZSksIHl5c2Nhbm5lcik7
CisgICAgeXlzZXRfY29sdW1uKHRva2VuLmxvY2F0aW9uLmZpbGUsIHl5c2Nhbm5lcik7CisgICAg
eXlzZXRfbGluZW5vKHRva2VuLmxvY2F0aW9uLmxpbmUsIHl5c2Nhbm5lcik7CiAKICAgICBpZiAo
bGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5wdXQgYnVmZmVyIG92
ZXJmbG93Iik7CkBAIC0yOTIsMTIgKzI3MSwxMCBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5
eXNjYW5uZXIpIHsKICAgICAKICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVSOwogICAgIFRTeW1i
b2wqIHN5bWJvbCA9IHl5ZXh0cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0KTsKLSAgICBpZiAo
eXlleHRyYS0+bGV4QWZ0ZXJUeXBlID09IGZhbHNlICYmIHN5bWJvbCAmJiBzeW1ib2wtPmlzVmFy
aWFibGUoKSkgeworICAgIGlmIChzeW1ib2wgJiYgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKICAg
ICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KHN5bWJv
bCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKSB7Ci0gICAgICAgICAgICB5
eWV4dHJhLT5sZXhBZnRlclR5cGUgPSB0cnVlOworICAgICAgICBpZiAodmFyaWFibGUtPmlzVXNl
clR5cGUoKSkKICAgICAgICAgICAgIHRva2VuID0gVFlQRV9OQU1FOwotICAgICAgICB9CiAgICAg
fQogICAgIHl5bHZhbC0+bGV4LnN5bWJvbCA9IHN5bWJvbDsKICAgICByZXR1cm4gdG9rZW47CkBA
IC0zMDYsMjIgKzI4MywxMSBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIpIHsK
IGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHN0cnVjdCB5eWd1
dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKIAotICAgIHl5ZXh0cmEt
PmVycm9yKHl5bGluZW5vLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwg
IiIpOworICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbGxlZ2FsIHVzZSBvZiByZXNlcnZl
ZCB3b3JkIiwgeXl0ZXh0LCAiIik7CiAgICAgeXlleHRyYS0+cmVjb3ZlcigpOwogICAgIHJldHVy
biAwOwogfQogCi12b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hh
ciogcmVhc29uKSB7Ci0gICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190
KikgY29udGV4dC0+c2Nhbm5lcjsKLQotICAgIGlmIChjb250ZXh0LT5BZnRlckVPRikgewotICAg
ICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29uLCAidW5leHBlY3RlZCBFT0YiKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29uLCB5
eXRleHQpOwotICAgIH0KLSAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci19Ci0KIGludCBnbHNsYW5n
X2luaXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5c2Nhbl90IHNjYW5u
ZXIgPSBOVUxMOwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQsICZzY2FubmVyKSkK
QEAgLTM0NCw4ICszMTAsOCBAQCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFyc2VDb250ZXh0KiBj
b250CiBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3Ry
aW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAgVFBhcnNlQ29udGV4
dCogY29udGV4dCkgewogICAgIHl5cmVzdGFydChOVUxMLCBjb250ZXh0LT5zY2FubmVyKTsKLSAg
ICB5eXNldF9saW5lbm8oRW5jb2RlU291cmNlTG9jKDAsIDEpLCBjb250ZXh0LT5zY2FubmVyKTsK
LSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNlOworICAgIHl5c2V0X2NvbHVtbigwLCBjb250
ZXh0LT5zY2FubmVyKTsKKyAgICB5eXNldF9saW5lbm8oMSwgY29udGV4dC0+c2Nhbm5lcik7CiAK
ICAgICAvLyBJbml0aWFsaXplIHByZXByb2Nlc3Nvci4KICAgICBpZiAoIWNvbnRleHQtPnByZXBy
b2Nlc3Nvci5pbml0KGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHJldmlzaW9uIDE1MjY0OSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KIC8vCkBAIC0zOSw3ICszOSw2IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQ
QVJTRVIgKGdsc2wKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAogI2RlZmluZSBZ
WUVOQUJMRV9OTFMgMAotI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQogCiAjZGVmaW5lIFlZ
TEVYX1BBUkFNIGNvbnRleHQtPnNjYW5uZXIKICV9CkBAIC00NywxMCArNDYsMTUgQEAgV0hJQ0gg
R0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbAogJWV4cGVjdCAxIC8qIE9uZSBzaGlm
dCByZWR1Y2UgY29uZmxpY3QgYmVjYXVzZSBvZiBpZiB8IGVsc2UgKi8KICVwdXJlLXBhcnNlcgog
JXBhcnNlLXBhcmFtIHtUUGFyc2VDb250ZXh0KiBjb250ZXh0fQorJWxvY2F0aW9ucworCislY29k
ZSByZXF1aXJlcyB7CisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxUWVBF
X0lTX0RFQ0xBUkVEIDEKK30KIAogJXVuaW9uIHsKICAgICBzdHJ1Y3QgewotICAgICAgICBUU291
cmNlTG9jIGxpbmU7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0cmlu
ZzsKICAgICAgICAgICAgIGZsb2F0IGY7CkBAIC02MCw3ICs2NCw2IEBAIFdISUNIIEdFTkVSQVRF
UyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwogICAg
IH0gbGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAg
VE9wZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9kZSog
aW50ZXJtTm9kZTsKQEAgLTc0LDIzICs3NywzMSBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wg
RVMgUEFSU0VSIChnbHNsCiAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKICAgICAg
ICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAgICAgICBUUGFyYW1ldGVyIHBhcmFt
OwotICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVMaW5lOwotICAgICAgICAgICAgVFR5cGVMaXN0
KiB0eXBlTGlzdDsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7CisgICAgICAgICAgICBURmll
bGRMaXN0KiBmaWVsZExpc3Q7CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07CiB9CiAKICV7Ci1l
eHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbF9wYXJhbSwgdm9pZCogeXlzY2FubmVyKTsK
LWV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciog
cmVhc29uKTsKK2V4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBZWUxUWVBFKiB5eWxs
b2MsIHZvaWQqIHl5c2Nhbm5lcik7CitzdGF0aWMgdm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxv
YywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKTsKIAotI2RlZmlu
ZSBGUkFHX1ZFUlRfT05MWShTLCBMKSB7ICBcCi0gICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUg
IT0gU0hfRlJBR01FTlRfU0hBREVSICYmICBcCi0gICAgICAgIGNvbnRleHQtPnNoYWRlclR5cGUg
IT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXAotICAgICAgICBjb250ZXh0LT5lcnJvcihMLCAiIHN1
cHBvcnRlZCBpbiB2ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVycyBvbmx5ICIsIFMpOyAgXAotICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7ICBcCi0gICAgfSAgXAotfQorI2RlZmluZSBZWUxMT0NfREVG
QVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICBpZiAoWVlJRChOKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMSkuZmlyc3Rf
ZmlsZTsgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDEp
LmZpcnN0X2xpbmU7ICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xPQyhS
aHMsIE4pLmxhc3RfZmlsZTsgICAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0gWVlS
SFNMT0MoUmhzLCBOKS5sYXN0X2xpbmU7ICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBlbHNlIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoQ3Vy
cmVudCkuZmlyc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9maWxlOyAgIFwKKyAgICAg
ICAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsgICBc
CisgICAgICAgIChDdXJyZW50KS5sYXN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfZmls
ZTsgICAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAwKS5s
YXN0X2xpbmU7ICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgVkVSVEVYX09O
TFkoUywgTCkgeyAgXAogICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX1ZFUlRFWF9T
SEFERVIpIHsgIFwKQEAgLTExNiw3ICsxMjcsNiBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJz
ZUNvbnRleHQqIGNvbnRlCiAldG9rZW4gPGxleD4gU0FNUExFUjJEIFNBTVBMRVJDVUJFIFNBTVBM
RVJfRVhURVJOQUxfT0VTIFNBTVBMRVIyRFJFQ1QKIAogJXRva2VuIDxsZXg+IElERU5USUZJRVIg
VFlQRV9OQU1FIEZMT0FUQ09OU1RBTlQgSU5UQ09OU1RBTlQgQk9PTENPTlNUQU5UCi0ldG9rZW4g
PGxleD4gRklFTERfU0VMRUNUSU9OCiAldG9rZW4gPGxleD4gTEVGVF9PUCBSSUdIVF9PUAogJXRv
a2VuIDxsZXg+IElOQ19PUCBERUNfT1AgTEVfT1AgR0VfT1AgRVFfT1AgTkVfT1AKICV0b2tlbiA8
bGV4PiBBTkRfT1AgT1JfT1AgWE9SX09QIE1VTF9BU1NJR04gRElWX0FTU0lHTiBBRERfQVNTSUdO
CkBAIC0xMjcsNiArMTM3LDcgQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBj
b250ZQogJXRva2VuIDxsZXg+IENPTU1BIENPTE9OIEVRVUFMIFNFTUlDT0xPTiBCQU5HIERBU0gg
VElMREUgUExVUyBTVEFSIFNMQVNIIFBFUkNFTlQKICV0b2tlbiA8bGV4PiBMRUZUX0FOR0xFIFJJ
R0hUX0FOR0xFIFZFUlRJQ0FMX0JBUiBDQVJFVCBBTVBFUlNBTkQgUVVFU1RJT04KIAorJXR5cGUg
PGxleD4gaWRlbnRpZmllcgogJXR5cGUgPGludGVybT4gYXNzaWdubWVudF9vcGVyYXRvciB1bmFy
eV9vcGVyYXRvcgogJXR5cGUgPGludGVybS5pbnRlcm1UeXBlZE5vZGU+IHZhcmlhYmxlX2lkZW50
aWZpZXIgcHJpbWFyeV9leHByZXNzaW9uIHBvc3RmaXhfZXhwcmVzc2lvbgogJXR5cGUgPGludGVy
bS5pbnRlcm1UeXBlZE5vZGU+IGV4cHJlc3Npb24gaW50ZWdlcl9leHByZXNzaW9uIGFzc2lnbm1l
bnRfZXhwcmVzc2lvbgpAQCAtMTU0LDggKzE2NSw4IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBh
cnNlQ29udGV4dCogY29udGUKICV0eXBlIDxpbnRlcm0udHlwZT4gdHlwZV9xdWFsaWZpZXIgZnVs
bHlfc3BlY2lmaWVkX3R5cGUgdHlwZV9zcGVjaWZpZXIKICV0eXBlIDxpbnRlcm0udHlwZT4gdHlw
ZV9zcGVjaWZpZXJfbm9fcHJlYyB0eXBlX3NwZWNpZmllcl9ub25hcnJheQogJXR5cGUgPGludGVy
bS50eXBlPiBzdHJ1Y3Rfc3BlY2lmaWVyCi0ldHlwZSA8aW50ZXJtLnR5cGVMaW5lPiBzdHJ1Y3Rf
ZGVjbGFyYXRvcgotJXR5cGUgPGludGVybS50eXBlTGlzdD4gc3RydWN0X2RlY2xhcmF0b3JfbGlz
dCBzdHJ1Y3RfZGVjbGFyYXRpb24gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QKKyV0eXBlIDxpbnRl
cm0uZmllbGQ+IHN0cnVjdF9kZWNsYXJhdG9yCisldHlwZSA8aW50ZXJtLmZpZWxkTGlzdD4gc3Ry
dWN0X2RlY2xhcmF0b3JfbGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gc3RydWN0X2RlY2xhcmF0aW9u
X2xpc3QKICV0eXBlIDxpbnRlcm0uZnVuY3Rpb24+IGZ1bmN0aW9uX2hlYWRlciBmdW5jdGlvbl9k
ZWNsYXJhdG9yIGZ1bmN0aW9uX2lkZW50aWZpZXIKICV0eXBlIDxpbnRlcm0uZnVuY3Rpb24+IGZ1
bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMgZnVuY3Rpb25fY2FsbF9oZWFkZXIKICV0eXBl
IDxpbnRlcm0+IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVycyBmdW5jdGlvbl9j
YWxsX2hlYWRlcl9ub19wYXJhbWV0ZXJzIGZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyBmdW5jdGlvbl9w
cm90b3R5cGUKQEAgLTE2NCwxMyArMTc1LDE3IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNl
Q29udGV4dCogY29udGUKICVzdGFydCB0cmFuc2xhdGlvbl91bml0CiAlJQogCitpZGVudGlmaWVy
CisgICAgOiBJREVOVElGSUVSCisgICAgfCBUWVBFX05BTUUKKwogdmFyaWFibGVfaWRlbnRpZmll
cgogICAgIDogSURFTlRJRklFUiB7CiAgICAgICAgIC8vIFRoZSBzeW1ib2wgdGFibGUgc2VhcmNo
IHdhcyBkb25lIGluIHRoZSBsZXhpY2FsIHBoYXNlCiAgICAgICAgIGNvbnN0IFRTeW1ib2wqIHN5
bWJvbCA9ICQxLnN5bWJvbDsKICAgICAgICAgY29uc3QgVFZhcmlhYmxlKiB2YXJpYWJsZTsKICAg
ICAgICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5s
aW5lLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIiwgJDEuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIiwgJDEuc3Ry
aW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgICAgICBUVmFy
aWFibGUqIGZha2VWYXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJDEuc3RyaW5nLCB0eXBlKTsKQEAg
LTE3OSwxMCArMTk0LDE3IEBAIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIFRoaXMgaWRlbnRpZmllciBjYW4gb25seSBiZSBhIHZhcmlhYmxlIHR5
cGUgc3ltYm9sCiAgICAgICAgICAgICBpZiAoISBzeW1ib2wtPmlzVmFyaWFibGUoKSkgewotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ2YXJpYWJsZSBleHBlY3RlZCIs
ICQxLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEs
ICJ2YXJpYWJsZSBleHBlY3RlZCIsICQxLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB2YXJp
YWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7CisKKyAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5pc1ZhcmlhYmxlQnVpbHRJbih2YXJpYWJsZSkgJiYgCisgICAgICAg
ICAgICAgICAgIXZhcmlhYmxlLT5nZXRFeHRlbnNpb24oKS5lbXB0eSgpICYmCisgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjayhAMSwgdmFyaWFibGUtPmdldEV4dGVu
c2lvbigpKSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcsIGl0
J3MgdXNlZCBieSBlcnJvciByZWNvdmVyeSwgYW5kIHRoZSBwb29sCkBAIC0xOTEsMTEgKzIxMywx
MiBAQCB2YXJpYWJsZV9pZGVudGlmaWVyCiAgICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgp
LmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ICkgewogICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biogY29uc3RBcnJheSA9IHZhcmlhYmxlLT5nZXRDb25zdFBvaW50ZXIoKTsKICAgICAgICAgICAg
IFRUeXBlIHQodmFyaWFibGUtPmdldFR5cGUoKSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICQxLmxpbmUpOwor
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbihj
b25zdEFycmF5LCB0LCBAMSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJs
ZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTIwOSwyMiArMjMyLDIyIEBAIHByaW1hcnlf
ZXhwcmVzc2lvbgogICAgICAgICAvLyBjaGVjayBmb3Igb3ZlcmZsb3cgZm9yIGNvbnN0YW50cwog
ICAgICAgICAvLwogICAgICAgICBpZiAoYWJzKCQxLmkpID49ICgxIDw8IDE2KSkgewotICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93
IiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICIgaW50ZWdlciBjb25zdGFu
dCBvdmVyZmxvdyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5p
b25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgkMS5pKTsKLSAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAgfQogICAgIHwgRkxP
QVRDT05TVEFOVCB7CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KCQxLmYpOwotICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDEubGluZSk7Cisg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAg
fQogICAgIHwgQk9PTENPTlNUQU5UIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3Qo
JDEuYik7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQx
LmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBA
MSk7CiAgICAgfQogICAgIHwgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIHsKICAg
ICAgICAgJCQgPSAkMjsKQEAgLTIzOCwxMDEgKzI2MSw5NyBAQCBwb3N0Zml4X2V4cHJlc3Npb24K
ICAgICB8IHBvc3RmaXhfZXhwcmVzc2lvbiBMRUZUX0JSQUNLRVQgaW50ZWdlcl9leHByZXNzaW9u
IFJJR0hUX0JSQUNLRVQgewogICAgICAgICBpZiAoISQxLT5pc0FycmF5KCkgJiYgISQxLT5pc01h
dHJpeCgpICYmICEkMS0+aXNWZWN0b3IoKSkgewogICAgICAgICAgICAgaWYgKCQxLT5nZXRBc1N5
bWJvbE5vZGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIGxl
ZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAkMS0+
Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOworICAgICAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKEAyLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBt
YXRyaXgsIG9yIHZlY3RvciAiLCAkMS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNf
c3RyKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCQyLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3Ig
dmVjdG9yICIsICJleHByZXNzaW9uIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDIsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9y
ICIsICJleHByZXNzaW9uIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29u
c3QgJiYgJDMtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICBpZiAo
JDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKLSAgICAgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlOb2RlKCQzLT5nZXRBc0NvbnN0YW50
VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCksICQxLCAkMi5saW5l
KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkpIHsgIC8vIGNvbnN0YW50
IGZvbGRpbmcgZm9yIHZlY3RvcnMKLSAgICAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxk
czsKLSAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKLSAgICAgICAgICAgICAgICBmaWVs
ZHMub2Zmc2V0c1swXSA9ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBv
aW50ZXIoKS0+Z2V0SUNvbnN0KCk7IC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSB2
Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5Ci0gICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwgJDIubGluZSk7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIG1h
dHJpY2VzCi0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUo
JDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29u
c3QoKSwgJDEsICQyLmxpbmUpOworICAgICAgICBpZiAoJDMtPmdldFF1YWxpZmllcigpID09IEV2
cUNvbnN0KSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSAkMy0+Z2V0QXNDb25zdGFudFVuaW9u
KCktPmdldElDb25zdCgwKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBpbmZvU3RyZWFtOworICAgICAgICAgICAgICAgIGlu
Zm9TdHJlYW0gPDwgaW5kZXg7CisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgaW5mbyA9IGlu
Zm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJuZWdh
dGl2ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOworICAgICAgICAgICAgICAgIGluZGV4ID0gMDsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICgkMy0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29u
c3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoKCQxLT5pc1ZlY3RvcigpIHx8ICQxLT5pc01hdHJp
eCgpKSAmJiAkMS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gJDMtPmdldEFzQ29uc3Rh
bnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSAmJiAhJDEtPmlz
QXJyYXkoKSApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJ
bmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxk
IHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5n
ZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgZXh0cmFJ
bmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCQxLT5pc0Fy
cmF5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldEFy
cmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJDEtPmdl
dFR5cGUoKS5nZXRNYXhBcnJheVNpemUoKSA8PSAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdl
dFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNldE1heFNpemUoJDEtPmdldEFzU3ltYm9s
Tm9kZSgpLCAkMS0+Z2V0VHlwZVBvaW50ZXIoKSwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5n
ZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgdHJ1ZSwgJDIubGluZSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgkMS0+Z2V0QXNTeW1ib2xOb2Rl
KCksICQxLT5nZXRUeXBlUG9pbnRlcigpLCAwLCBmYWxzZSwgJDIubGluZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgg
JDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29u
c3QoKSA+PSAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9m
IHJhbmdlICciIDw8ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50
ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIiciOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIiwgIlsiLCBleHRyYUlu
Zm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVP
cEluZGV4RGlyZWN0LCAkMSwgJDMsICQyLmxpbmUpOworICAgICAgICAgICAgaWYgKCQxLT5nZXRU
eXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgICAgICBpZiAo
JDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKKyAgICAgICAg
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdEFycmF5Tm9kZShpbmRleCwgJDEsIEAy
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc1ZlY3RvcigpKSB7ICAvLyBjb25z
dGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVs
ZHMgZmllbGRzOworICAgICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVlZCB0byBkbyBpdCB0
aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkKKyAgICAgICAg
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwg
QDIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsgLy8gY29u
c3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoaW5kZXgsICQxLCBAMik7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXko
KSAmJiAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgImFycmF5IG11c3QgYmUgcmVk
ZWNsYXJlZCB3aXRoIGEgc2l6ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRoIGEgdmFyaWFibGUi
KTsKKyAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoaW5kZXggPj0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAg
ICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBvdXQg
b2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4ID0gJDEtPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSAtIDE7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCgkMS0+
aXNWZWN0b3IoKSB8fCAkMS0+aXNNYXRyaXgoKSkgJiYgJDEtPmdldFR5cGUoKS5nZXROb21pbmFs
U2l6ZSgpIDw9IGluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8
ICJmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0
cigpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiIsICJbIiwgZXh0
cmFJbmZvLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gICQxLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNp
emUoKSAtIDE7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgJDEsICQzLCAkMi5s
aW5lKTsKKyAgICAgICAgICAgICAgICAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9u
QXJyYXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7CisgICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCAkMywgQDIp
OwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgJDEsICQzLCBAMik7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCQkID09IDApIHsKICAgICAgICAgICAgIENvbnN0YW50
VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVu
aW9uQXJyYXktPnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVi
cEhpZ2gsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBF
YnBIaWdoLCBFdnFDb25zdCksIEAyKTsKICAgICAgICAgfSBlbHNlIGlmICgkMS0+aXNBcnJheSgp
KSB7CiAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSkKLSAgICAgICAg
ICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLCAkMS0+
Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShU
VHlwZSgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0
UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCksICQxLT5pc01h
dHJpeCgpKSk7CiAKICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigp
ID09IEV2cUNvbnN0KQogICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRR
dWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpICYm
ICQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAk
JC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwg
RXZxQ29uc3QsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKCQxLT5p
c01hdHJpeCgpKQotICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlw
ZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXpl
KCkpKTsKLSAgICAgICAgZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkgJiYgJDEtPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBl
KCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCkpOwotICAg
ICAgICBlbHNlIGlmICgkMS0+aXNWZWN0b3IoKSkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRU
eXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3Jhcnkp
KTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7Cisg
ICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlm
aWVyKCkgPT0gRXZxQ29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgICAg
ICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigp
LCBxdWFsaWZpZXIsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7CisgICAgICAgIH0gZWxzZSBpZiAo
JDEtPmlzVmVjdG9yKCkpIHsKKyAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gJDEt
PmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVt
cG9yYXJ5OworICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgp
LCAkMS0+Z2V0UHJlY2lzaW9uKCksIHF1YWxpZmllcikpOworICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgJCQtPnNldFR5cGUoJDEtPmdldFR5cGUoKSk7CisgICAgICAgIH0KICAgICB9CiAg
ICAgfCBmdW5jdGlvbl9jYWxsIHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBwb3N0
Zml4X2V4cHJlc3Npb24gRE9UIEZJRUxEX1NFTEVDVElPTiB7CisgICAgfCBwb3N0Zml4X2V4cHJl
c3Npb24gRE9UIGlkZW50aWZpZXIgewogICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDMubGluZSwgImNhbm5vdCBhcHBseSBkb3Qgb3BlcmF0
b3IgdG8gYW4gYXJyYXkiLCAiLiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJj
YW5ub3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS0+aXNWZWN0
b3IoKSkgewogICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBp
ZiAoISBjb250ZXh0LT5wYXJzZVZlY3RvckZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5h
bFNpemUoKSwgZmllbGRzLCAkMy5saW5lKSkgeworICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+
cGFyc2VWZWN0b3JGaWVsZHMoKiQzLnN0cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxk
cywgQDMpKSB7CiAgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CiAgICAgICAgICAgICAg
ICAgZmllbGRzLm9mZnNldHNbMF0gPSAwOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0
UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9y
IGZpZWxkcwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RWZWN0b3JOb2Rl
KGZpZWxkcywgJDEsICQzLmxpbmUpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRk
Q29uc3RWZWN0b3JOb2RlKGZpZWxkcywgJDEsIEAzKTsKICAgICAgICAgICAgICAgICBpZiAoJCQg
PT0gMCkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAgICAgICAgICQkID0gJDE7CkBAIC0zNDEsMTMgKzM2MCwxMyBAQCBwb3N0Zml4X2V4cHJl
c3Npb24KICAgICAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2lj
VHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0LCAoaW50KSAoKiQzLnN0cmluZyku
c2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFRTdHJpbmcg
dmVjdG9yU3RyaW5nID0gKiQzLnN0cmluZzsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQq
IGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmllbGRzLCAkMy5saW5l
KTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChF
T3BWZWN0b3JTd2l6emxlLCAkMSwgaW5kZXgsICQyLmxpbmUpOworICAgICAgICAgICAgICAgIFRJ
bnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVs
ZHMsIEAzKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJ
bmRleChFT3BWZWN0b3JTd2l6emxlLCAkMSwgaW5kZXgsIEAyKTsKICAgICAgICAgICAgICAgICAk
JC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwg
RXZxVGVtcG9yYXJ5LCAoaW50KSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsKICAgICAgICAgICAgIFRNYXRy
aXhGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VNYXRyaXhG
aWVsZHMoKiQzLnN0cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgJDMubGluZSkp
IHsKKyAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBhcnNlTWF0cml4RmllbGRzKCokMy5zdHJp
bmcsICQxLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsIEAzKSkgewogICAgICAgICAgICAgICAg
IGZpZWxkcy53aG9sZVJvdyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9sZUNv
bCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy5yb3cgPSAwOwpAQCAtMzU2LDg0ICsz
NzUsNzggQEAgcG9zdGZpeF9leHByZXNzaW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmIChmaWVsZHMud2hvbGVSb3cgfHwgZmllbGRzLndob2xlQ29sKSB7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1wbGVt
ZW50ZWQgeWV0IiwgIi4iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiBu
b24tc2NhbGFyIGZpZWxkcyBub3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsKICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgICAgIHVuaW9u
QXJyYXktPnNldElDb25zdCgwKTsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDMubGluZSk7Ci0gICAgICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3Qs
ICQxLCBpbmRleCwgJDIubGluZSk7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRl
eCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAzKTsKKyAgICAgICAgICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgJDEs
IGluZGV4LCBAMik7CiAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJh
c2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksRXZxVGVtcG9yYXJ5LCAkMS0+Z2V0Tm9taW5h
bFNpemUoKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAg
ICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGZpZWxkcy5jb2wgKiAkMS0+Z2V0Tm9taW5hbFNpemUo
KSArIGZpZWxkcy5yb3cpOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMy5saW5lKTsKLSAgICAgICAgICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgJDEs
IGluZGV4LCAkMi5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUo
RWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDMpOworICAgICAgICAgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwgaW5k
ZXgsIEAyKTsKICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNU
eXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVs
c2UgaWYgKCQxLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgICAgIGJv
b2wgZmllbGRGb3VuZCA9IGZhbHNlOwotICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBmaWVs
ZHMgPSAkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOwotICAgICAgICAgICAgaWYgKGZpZWxkcyA9
PSAwKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInN0cnVjdHVy
ZSBoYXMgbm8gZmllbGRzIiwgIkludGVybmFsIEVycm9yIik7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOwotICAgICAgICAgICAgICAg
IGZvciAoaSA9IDA7IGkgPCBmaWVsZHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICgoKmZpZWxkcylbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKiQzLnN0cmluZykg
ewotICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
Y29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+Zmll
bGRzKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgICAgIGZvciAoaSA9
IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmllbGRz
W2ldLT5uYW1lKCkgPT0gKiQzLnN0cmluZykgeworICAgICAgICAgICAgICAgICAgICBmaWVsZEZv
dW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0KCokMy5zdHJpbmcs
ICQxLCAkMi5saW5lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkJC0+c2V0VHlwZSgqKCpmaWVsZHMpW2ldLnR5cGUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNoYW5nZSB0aGUgcXVhbGlmaWVyIG9mIHRoZSByZXR1cm4gdHlwZSwgbm90IG9m
IHRoZSBzdHJ1Y3R1cmUgZmllbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyB0
aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1Y3R1
cmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5z
ZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRV
bmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwotICAgICAgICAgICAgICAg
ICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksICooKmZpZWxkcylbaV0udHlwZSwgJDMubGluZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJ
bmRleERpcmVjdFN0cnVjdCwgJDEsIGluZGV4LCAkMi5saW5lKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICQkLT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoZmllbGRGb3VuZCkgeworICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0
VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAgICAgICAgICAgICAg
ICQkID0gY29udGV4dC0+YWRkQ29uc3RTdHJ1Y3QoKiQzLnN0cmluZywgJDEsIEAyKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCQkID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICQkID0gJDE7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0eXBl
LCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBmaWVsZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8g
YXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHZhcmlvdXMgc3Ry
dWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5z
ZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGlu
ZSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAg
ICAgJCQgPSAkMTsKKyAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOworICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5
LT5zZXRJQ29uc3QoaSk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXgg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAqZmll
bGRzW2ldLT50eXBlKCksIEAzKTsKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICQxLCBpbmRleCwgQDIp
OworICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOwog
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoQDIsICIgbm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1cmUiLCAkMy5zdHJp
bmctPmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAg
ICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBmaWVsZCBzZWxlY3Rpb24gcmVxdWly
ZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIsICQzLnN0
cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiBmaWVsZCBz
ZWxlY3Rpb24gcmVxdWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhh
bmQgc2lkZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgICAgIC8vIGRvbid0
IGRlbGV0ZSAkMy5zdHJpbmcsIGl0J3MgZnJvbSB0aGUgcG9vbAogICAgIH0KICAgICB8IHBvc3Rm
aXhfZXhwcmVzc2lvbiBJTkNfT1AgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JD
aGVjaygkMi5saW5lLCAiKysiLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJv
ckNoZWNrKEAyLCAiKysiLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5j
cmVtZW50LCAkMSwgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdEluY3JlbWVudCwgJDEs
IEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDIubGluZSwgIisrIiwgJDEtPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKEAyLCAiKysi
LCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcG9zdGZp
eF9leHByZXNzaW9uIERFQ19PUCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNo
ZWNrKCQyLmxpbmUsICItLSIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9y
Q2hlY2soQDIsICItLSIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNy
ZW1lbnQsICQxLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0RGVjcmVtZW50LCAkMSwg
QDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMi5saW5lLCAiLS0iLCAkMS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDIsICItLSIs
ICQxLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTQ2MSwxOCArNDc0LDE4IEBA
IGZ1bmN0aW9uX2NhbGwKICAgICAgICAgICAgIC8vIFRoZWlyIHBhcmFtZXRlcnMgd2lsbCBiZSB2
ZXJpZmllZCBhbGdvcml0aG1pY2FsbHkuCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgVFR5
cGUgdHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOyAgLy8gdXNlIHRoaXMgdG8gZ2V0IHRoZSB0
eXBlIGJhY2sKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1Y3RvckVycm9yQ2hlY2so
JDEubGluZSwgJDEuaW50ZXJtTm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgeworICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVjayhAMSwgJDEuaW50ZXJtTm9kZSwg
KmZuQ2FsbCwgb3AsICZ0eXBlKSkgewogICAgICAgICAgICAgICAgICQkID0gMDsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAvLyBJdCdz
IGEgY29uc3RydWN0b3IsIG9mIHR5cGUgJ3R5cGUnLgogICAgICAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvcigkMS5pbnRlcm1Ob2RlLCAm
dHlwZSwgb3AsIGZuQ2FsbCwgJDEubGluZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0
LT5hZGRDb25zdHJ1Y3RvcigkMS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgQDEpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewogICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwgJDEubGluZSk7CisgICAgICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3Io
MCwgb3AsIEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICQkLT5zZXRUeXBlKHR5cGUp
OwogICAgICAgICB9IGVsc2UgewpAQCAtNDgxLDEzICs0OTQsMTMgQEAgZnVuY3Rpb25fY2FsbAog
ICAgICAgICAgICAgLy8KICAgICAgICAgICAgIGNvbnN0IFRGdW5jdGlvbiogZm5DYW5kaWRhdGU7
CiAgICAgICAgICAgICBib29sIGJ1aWx0SW47Ci0gICAgICAgICAgICBmbkNhbmRpZGF0ZSA9IGNv
bnRleHQtPmZpbmRGdW5jdGlvbigkMS5saW5lLCBmbkNhbGwsICZidWlsdEluKTsKKyAgICAgICAg
ICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKEAxLCBmbkNhbGwsICZidWls
dEluKTsKICAgICAgICAgICAgIGlmIChmbkNhbmRpZGF0ZSkgewogICAgICAgICAgICAgICAgIC8v
CiAgICAgICAgICAgICAgICAgLy8gQSBkZWNsYXJlZCBmdW5jdGlvbi4KICAgICAgICAgICAgICAg
ICAvLwogICAgICAgICAgICAgICAgIGlmIChidWlsdEluICYmICFmbkNhbmRpZGF0ZS0+Z2V0RXh0
ZW5zaW9uKCkuZW1wdHkoKSAmJgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNp
b25FcnJvckNoZWNrKCQxLmxpbmUsIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjayhAMSwgZm5DYW5k
aWRhdGUtPmdldEV4dGVuc2lvbigpKSkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG9wID0gZm5DYW5k
aWRhdGUtPmdldEJ1aWx0SW5PcCgpOwpAQCAtNDk5LDcgKzUxMiw3IEBAIGZ1bmN0aW9uX2NhbGwK
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBU
cmVhdCBpdCBsaWtlIGEgYnVpbHQtaW4gdW5hcnkgb3BlcmF0b3IuCiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkVW5hcnlNYXRoKG9wLCAkMS5pbnRlcm1Ob2RlLCAwLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRVbmFyeU1hdGgob3AsICQxLmludGVybU5vZGUsIEAxLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJidWlsdCBpbiB1bmFy
eSBvcGVyYXRvciBmdW5jdGlvbi4gIFR5cGU6ICIgPDwgc3RhdGljX2Nhc3Q8VEludGVybVR5cGVk
Kj4oJDEuaW50ZXJtTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCk7CkBAIC01MDgsMTIgKzUyMSwx
MiBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWVlFUlJPUjsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFn
Z3JlZ2F0ZU9wZXJhdG9yKCQxLmludGVybUFnZ3JlZ2F0ZSwgb3AsICQxLmxpbmUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRl
T3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBvcCwgQDEpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhp
cyBpcyBhIHJlYWwgZnVuY3Rpb24gY2FsbAogCi0gICAgICAgICAgICAgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQxLmludGVybUFnZ3JlZ2F0
ZSwgRU9wRnVuY3Rpb25DYWxsLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVn
YXRlLCBFT3BGdW5jdGlvbkNhbGwsIEAxKTsKICAgICAgICAgICAgICAgICAgICAgJCQtPnNldFR5
cGUoZm5DYW5kaWRhdGUtPmdldFJldHVyblR5cGUoKSk7CiAKICAgICAgICAgICAgICAgICAgICAg
Ly8gdGhpcyBpcyBob3cgd2Uga25vdyB3aGV0aGVyIHRoZSBnaXZlbiBmdW5jdGlvbiBpcyBhIGJ1
aWx0SW4gZnVuY3Rpb24gb3IgYSB1c2VyIGRlZmluZWQgZnVuY3Rpb24KQEAgLTU0MCw3ICs1NTMs
NyBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAgICAgICAgICAgLy8gUHV0IG9uIGEgZHVtbXkgbm9k
ZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlv
bkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDEpOwogICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTUzLDcgKzU2Niw3
IEBAIGZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9kCiAgICAgICAgICQkID0gJDE7CiAgICAgfQogICAg
IHwgcG9zdGZpeF9leHByZXNzaW9uIERPVCBmdW5jdGlvbl9jYWxsX2dlbmVyaWMgewotICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMy5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIsICIi
KTsKKyAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVk
IiwgIiIpOwogICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICQkID0gJDM7CiAg
ICAgfQpAQCAtNTYyLDExICs1NzUsOSBAQCBmdW5jdGlvbl9jYWxsX29yX21ldGhvZAogZnVuY3Rp
b25fY2FsbF9nZW5lcmljCiAgICAgOiBmdW5jdGlvbl9jYWxsX2hlYWRlcl93aXRoX3BhcmFtZXRl
cnMgUklHSFRfUEFSRU4gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICAkJC5saW5lID0gJDIu
bGluZTsKICAgICB9CiAgICAgfCBmdW5jdGlvbl9jYWxsX2hlYWRlcl9ub19wYXJhbWV0ZXJzIFJJ
R0hUX1BBUkVOIHsKICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxpbmU7
CiAgICAgfQogICAgIDsKIApAQCAtNTkyLDcgKzYwMyw3IEBAIGZ1bmN0aW9uX2NhbGxfaGVhZGVy
X3dpdGhfcGFyYW1ldGVycwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5
cGUoJDMtPmdldFR5cGUoKSkgfTsKICAgICAgICAgJDEuZnVuY3Rpb24tPmFkZFBhcmFtZXRlcihw
YXJhbSk7CiAgICAgICAgICQkLmZ1bmN0aW9uID0gJDEuZnVuY3Rpb247Ci0gICAgICAgICQkLmlu
dGVybU5vZGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1O
b2RlLCAkMywgJDIubGluZSk7CisgICAgICAgICQkLmludGVybU5vZGUgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCAkMywgQDIpOwogICAgIH0KICAg
ICA7CiAKQEAgLTYxNywzOSArNjI4LDM5IEBAIGZ1bmN0aW9uX2lkZW50aWZpZXIKICAgICAgICAg
ICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgaWYgKCQxLm1hdHJpeCkgewogICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2goJDEuc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBj
YXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3Ry
dWN0TWF0MjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoKCQxLnNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzI7ICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSAzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVP
cENvbnN0cnVjdFZlYzM7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7ICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEZsb2F0
OyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdFZl
YzI7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVj
dFZlYzM7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0
cnVjdFZlYzQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgogICAg
ICAgICAgICAgICAgIHN3aXRjaCgkMS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RJ
bnQ7ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZFUlRfT05M
WSgiaXZlYzIiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSAzOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzMiLCAkMS5saW5l
KTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0
OiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzQiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1
Y3RJVmVjNDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVj
dEludDsgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0
SVZlYzI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RJ
VmVjMzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdElW
ZWM0OyBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIEVidEJvb2w6CiAgICAgICAgICAgICAgICAgc3dpdGNoKCQxLnNpemUp
IHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEJvb2w7ICBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMiIsICQxLmxpbmUpOyBvcCA9IEVP
cENvbnN0cnVjdEJWZWMyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgIEZS
QUdfVkVSVF9PTkxZKCJidmVjMyIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMzOyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVj
NCIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWM0OyBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdEJWZWMzOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9wID09IEVPcE51bGwpIHsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiY2Fubm90IGNvbnN0cnVjdCB0aGlzIHR5
cGUiLCBnZXRCYXNpY1N0cmluZygkMS50eXBlKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoQDEsICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5nKCQx
LnR5cGUpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAgICAgJDEudHlwZSA9IEVidEZsb2F0OwogICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3Ry
dWN0RmxvYXQ7CkBAIC02NjEsMTQgKzY3Miw3IEBAIGZ1bmN0aW9uX2lkZW50aWZpZXIKICAgICAg
ICAgJCQgPSBmdW5jdGlvbjsKICAgICB9CiAgICAgfCBJREVOVElGSUVSIHsKLSAgICAgICAgaWYg
KGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lkLCBF
YnBVbmRlZmluZWQpOwotICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlv
bigkMS5zdHJpbmcsIHR5cGUpOwotICAgICAgICAkJCA9IGZ1bmN0aW9uOwotICAgIH0KLSAgICB8
IEZJRUxEX1NFTEVDVElPTiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hl
Y2soJDEubGluZSwgKiQxLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVy
cm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgIFRG
dW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCQxLnN0cmluZywgdHlwZSk7CkBAIC02
ODEsMjggKzY4NSwyOCBAQCB1bmFyeV9leHByZXNzaW9uCiAgICAgICAgICQkID0gJDE7CiAgICAg
fQogICAgIHwgSU5DX09QIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4dC0+
bFZhbHVlRXJyb3JDaGVjaygkMS5saW5lLCAiKysiLCAkMikpCisgICAgICAgIGlmIChjb250ZXh0
LT5sVmFsdWVFcnJvckNoZWNrKEAxLCAiKysiLCAkMikpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0
aChFT3BQcmVJbmNyZW1lbnQsICQyLCAkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVJbmNy
ZW1lbnQsICQyLCBAMSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0g
MCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsICIrKyIsICQy
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJv
cihAMSwgIisrIiwgJDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgfQogICAgIH0KICAg
ICB8IERFQ19PUCB1bmFyeV9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1
ZUVycm9yQ2hlY2soJDEubGluZSwgIi0tIiwgJDIpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZh
bHVlRXJyb3JDaGVjayhAMSwgIi0tIiwgJDIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9w
UHJlRGVjcmVtZW50LCAkMiwgJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50
LCAkMiwgQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMS5saW5lLCAiLS0iLCAkMi0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDEs
ICItLSIsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDI7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCB1
bmFyeV9vcGVyYXRvciB1bmFyeV9leHByZXNzaW9uIHsKICAgICAgICAgaWYgKCQxLm9wICE9IEVP
cE51bGwpIHsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5
TWF0aCgkMS5vcCwgJDIsICQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgkMS5vcCwgJDIsIEAx
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewogICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yT3AgPSAiIjsKICAgICAgICAgICAgICAgICBz
d2l0Y2goJDEub3ApIHsKQEAgLTcxMCw3ICs3MTQsNyBAQCB1bmFyeV9leHByZXNzaW9uCiAgICAg
ICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OiBlcnJvck9wID0gIiEiOyBicmVhazsKICAg
ICAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsIGVycm9yT3AsICQyLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3Io
QDEsIGVycm9yT3AsICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgICAg
IH0KQEAgLTcyMSwyOCArNzI1LDI2IEBAIHVuYXJ5X2V4cHJlc3Npb24KIC8vIEdyYW1tYXIgTm90
ZTogIE5vIHRyYWRpdGlvbmFsIHN0eWxlIHR5cGUgY2FzdHMuCiAKIHVuYXJ5X29wZXJhdG9yCi0g
ICAgOiBQTFVTICB7ICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcE51bGw7IH0KLSAgICB8
IERBU0ggIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTmVnYXRpdmU7IH0KLSAgICB8
IEJBTkcgIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTG9naWNhbE5vdDsgfQorICAg
IDogUExVUyAgeyAkJC5vcCA9IEVPcE51bGw7IH0KKyAgICB8IERBU0ggIHsgJCQub3AgPSBFT3BO
ZWdhdGl2ZTsgfQorICAgIHwgQkFORyAgeyAkJC5vcCA9IEVPcExvZ2ljYWxOb3Q7IH0KICAgICA7
CiAvLyBHcmFtbWFyIE5vdGU6ICBObyAnKicgb3IgJyYnIHVuYXJ5IG9wcy4gIFBvaW50ZXJzIGFy
ZSBub3Qgc3VwcG9ydGVkLgogCiBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uCiAgICAgOiB1bmFy
eV9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lv
biBTVEFSIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgiKiIsICQy
LmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRo
KEVPcE11bCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAkMSwgJDMs
IEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIqIiwgJDEtPmdldENvbXBs
ZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoQDIsICIqIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBtdWx0aXBsaWNhdGl2
ZV9leHByZXNzaW9uIFNMQVNIIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBGUkFHX1ZFUlRf
T05MWSgiLyIsICQyLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcERpdiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9w
RGl2LCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIvIiwg
JDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIvIiwgJDEtPmdldENvbXBsZXRlU3Ry
aW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTc1MiwxNyArNzU0
LDE3IEBAIG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24KIGFkZGl0aXZlX2V4cHJlc3Npb24KICAg
ICA6IG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBhZGRpdGl2
ZV9leHByZXNzaW9uIFBMVVMgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiB7Ci0gICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wQWRkLCAkMSwgJDMsICQy
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoJDIubGluZSwgIisiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdl
dENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihA
MiwgIisiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsK
ICAgICAgICAgfQogICAgIH0KICAgICB8IGFkZGl0aXZlX2V4cHJlc3Npb24gREFTSCBtdWx0aXBs
aWNhdGl2ZV9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BTdWIsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFi
bGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVP
cFN1YiwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQg
PT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiLSIs
ICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiLSIsICQxLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CkBAIC03NzYsNDMgKzc3
OCw0MyBAQCBzaGlmdF9leHByZXNzaW9uCiByZWxhdGlvbmFsX2V4cHJlc3Npb24KICAgICA6IHNo
aWZ0X2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Npb24g
TEVGVF9BTkdMRSBzaGlmdF9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbiwgJDEsICQzLCAkMi5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoJDIubGluZSwgIjwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIjwi
LCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRp
b25hbF9leHByZXNzaW9uIFJJR0hUX0FOR0xFIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwg
JDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW4sICQxLCAkMywg
QDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj4iLCAkMS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcihAMiwgIj4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdl
dENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFd
OwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAg
ICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9leHByZXNzaW9uIExFX09QIHNoaWZ0X2V4cHJl
c3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0
aChFT3BMZXNzVGhhbkVxdWFsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BM
ZXNzVGhhbkVxdWFsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAg
IGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxp
bmUsICI8PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiPD0iLCAkMS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNv
bnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9leHBy
ZXNzaW9uIEdFX09QIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMsICQy
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMsIEAyLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI+PSIsICQxLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5i
aW5hcnlPcEVycm9yKEAyLCAiPj0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENv
bXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwog
ICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9
CiAgICAgfQogICAgIDsKQEAgLTgyMCwyMyArODIyLDIzIEBAIHJlbGF0aW9uYWxfZXhwcmVzc2lv
bgogZXF1YWxpdHlfZXhwcmVzc2lvbgogICAgIDogcmVsYXRpb25hbF9leHByZXNzaW9uIHsgJCQg
PSAkMTsgfQogICAgIHwgZXF1YWxpdHlfZXhwcmVzc2lvbiBFUV9PUCByZWxhdGlvbmFsX2V4cHJl
c3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0
aChFT3BFcXVhbCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1YWwsICQx
LCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj09IiwgJDEtPmdl
dENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICI9PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAg
ICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7
CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7
CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBlcXVhbGl0eV9leHByZXNzaW9uIE5FX09QIHJlbGF0
aW9uYWxfZXhwcmVzc2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEJpbmFyeU1hdGgoRU9wTm90RXF1YWwsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9s
VGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRo
KEVPcE5vdEVxdWFsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAg
IGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxp
bmUsICIhPSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiIT0iLCAkMS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNv
bnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg1NiwxMyArODU4
LDEzIEBAIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uCiBsb2dpY2FsX2FuZF9leHByZXNzaW9uCiAg
ICAgOiBpbmNsdXNpdmVfb3JfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxvZ2ljYWxf
YW5kX2V4cHJlc3Npb24gQU5EX09QIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uIHsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5kLCAk
MSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5kLCAkMSwgJDMsIEAy
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICImJiIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKEAyLCAiJiYiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdl
dENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFd
OwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAg
ICB9CiAgICAgfQogICAgIDsKQEAgLTg3MCwxMyArODcyLDEzIEBAIGxvZ2ljYWxfYW5kX2V4cHJl
c3Npb24KIGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24KICAgICA6IGxvZ2ljYWxfYW5kX2V4cHJlc3Np
b24geyAkJCA9ICQxOyB9CiAgICAgfCBsb2dpY2FsX3hvcl9leHByZXNzaW9uIFhPUl9PUCBsb2dp
Y2FsX2FuZF9leHByZXNzaW9uICB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbFhvciwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5z
eW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFy
eU1hdGgoRU9wTG9naWNhbFhvciwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwog
ICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cigkMi5saW5lLCAiXl4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRl
U3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIl5eIiwg
JDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVu
aW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXkt
PnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCAkMi5saW5lKTsKKyAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksIEAyKTsKICAgICAgICAgfQogICAgIH0KICAgICA7CkBAIC04ODQs
MTMgKzg4NiwxMyBAQCBsb2dpY2FsX3hvcl9leHByZXNzaW9uCiBsb2dpY2FsX29yX2V4cHJlc3Np
b24KICAgICA6IGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBsb2dp
Y2FsX29yX2V4cHJlc3Npb24gT1JfT1AgbG9naWNhbF94b3JfZXhwcmVzc2lvbiAgewotICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxPciwg
JDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAkMSwgJDMsIEAy
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICJ8fCIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKEAyLCAifHwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdl
dENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFd
OwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAg
ICB9CiAgICAgfQogICAgIDsKQEAgLTg5OCwxNSArOTAwLDE1IEBAIGxvZ2ljYWxfb3JfZXhwcmVz
c2lvbgogY29uZGl0aW9uYWxfZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF9vcl9leHByZXNzaW9u
IHsgJCQgPSAkMTsgfQogICAgIHwgbG9naWNhbF9vcl9leHByZXNzaW9uIFFVRVNUSU9OIGV4cHJl
c3Npb24gQ09MT04gYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICBpZiAoY29udGV4dC0+
Ym9vbEVycm9yQ2hlY2soJDIubGluZSwgJDEpKQorICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJy
b3JDaGVjayhAMiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigkMSwgJDMsICQ1LCAk
Mi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9u
KCQxLCAkMywgJDUsIEAyKTsKICAgICAgICAgaWYgKCQzLT5nZXRUeXBlKCkgIT0gJDUtPmdldFR5
cGUoKSkKICAgICAgICAgICAgICQkID0gMDsKIAogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAg
ICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiOiIsICQzLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAkNS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiOiIsICQzLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkNS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAkJCA9ICQ1OwogICAgICAgICB9CkBAIC05MTYsMTEgKzkxOCwxMSBAQCBjb25k
aXRpb25hbF9leHByZXNzaW9uCiBhc3NpZ25tZW50X2V4cHJlc3Npb24KICAgICA6IGNvbmRpdGlv
bmFsX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCB1bmFyeV9leHByZXNzaW9uIGFzc2ln
bm1lbnRfb3BlcmF0b3IgYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPmxWYWx1ZUVycm9yQ2hlY2soJDIubGluZSwgImFzc2lnbiIsICQxKSkKKyAgICAgICAgaWYg
KGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soQDIsICJhc3NpZ24iLCAkMSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEFzc2lnbigkMi5vcCwgJDEsICQzLCAkMi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWduKCQyLm9wLCAkMSwgJDMsIEAyKTsKICAgICAgICAgaWYg
KCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9yKCQyLmxpbmUsICJh
c3NpZ24iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+YXNzaWduRXJyb3IoQDIsICJhc3NpZ24iLCAkMS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpAQCAt
OTI4LDExICs5MzAsMTEgQEAgYXNzaWdubWVudF9leHByZXNzaW9uCiAgICAgOwogCiBhc3NpZ25t
ZW50X29wZXJhdG9yCi0gICAgOiBFUVVBTCAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcEFzc2lnbjsgfQotICAg
IHwgTVVMX0FTU0lHTiAgIHsgRlJBR19WRVJUX09OTFkoIio9IiwgJDEubGluZSk7ICAgICAkJC5s
aW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BNdWxBc3NpZ247IH0KLSAgICB8IERJVl9BU1NJR04g
ICB7IEZSQUdfVkVSVF9PTkxZKCIvPSIsICQxLmxpbmUpOyAgICAgJCQubGluZSA9ICQxLmxpbmU7
ICQkLm9wID0gRU9wRGl2QXNzaWduOyB9Ci0gICAgfCBBRERfQVNTSUdOICAgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcEFk
ZEFzc2lnbjsgfQotICAgIHwgU1VCX0FTU0lHTiAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BTdWJBc3NpZ247IH0KKyAg
ICA6IEVRVUFMICAgICAgICB7ICQkLm9wID0gRU9wQXNzaWduOyB9CisgICAgfCBNVUxfQVNTSUdO
ICAgeyAkJC5vcCA9IEVPcE11bEFzc2lnbjsgfQorICAgIHwgRElWX0FTU0lHTiAgIHsgJCQub3Ag
PSBFT3BEaXZBc3NpZ247IH0KKyAgICB8IEFERF9BU1NJR04gICB7ICQkLm9wID0gRU9wQWRkQXNz
aWduOyB9CisgICAgfCBTVUJfQVNTSUdOICAgeyAkJC5vcCA9IEVPcFN1YkFzc2lnbjsgfQogICAg
IDsKIAogZXhwcmVzc2lvbgpAQCAtOTQwLDkgKzk0Miw5IEBAIGV4cHJlc3Npb24KICAgICAgICAg
JCQgPSAkMTsKICAgICB9CiAgICAgfCBleHByZXNzaW9uIENPTU1BIGFzc2lnbm1lbnRfZXhwcmVz
c2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCQxLCAk
MywgJDIubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1h
KCQxLCAkMywgQDIpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiLCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAk
My0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVy
cm9yKEAyLCAiLCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9
ICQzOwogICAgICAgICB9CkBAIC05NzAsMTMgKzk3MiwxMyBAQCBkZWNsYXJhdGlvbgogICAgICAg
ICAgICAgY29uc3QgVFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJhbShpKTsKICAg
ICAgICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUocGFyYW0ubmFtZSwgKnBh
cmFtLnR5cGUpOworICAgICAgICAgICAgICAgIFRWYXJpYWJsZSB2YXJpYWJsZShwYXJhbS5uYW1l
LCAqcGFyYW0udHlwZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcHJvdG90
eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2YXJp
YWJsZS0+Z2V0TmFtZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKSwgJDEubGluZSk7
CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dB
Z2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlh
YmxlLmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLmdldE5hbWUoKSwgdmFyaWFibGUuZ2V0VHlwZSgp
LCBAMSksIEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jv
d0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
IiIsICpwYXJhbS50eXBlLCAkMS5saW5lKSwgJDEubGluZSk7CisgICAgICAgICAgICAgICAgcHJv
dG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgQDEpLCBA
MSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC05OTIsMTEgKzk5NCwx
MSBAQCBkZWNsYXJhdGlvbgogICAgIH0KICAgICB8IFBSRUNJU0lPTiBwcmVjaXNpb25fcXVhbGlm
aWVyIHR5cGVfc3BlY2lmaWVyX25vX3ByZWMgU0VNSUNPTE9OIHsKICAgICAgICAgaWYgKCgkMiA9
PSBFYnBIaWdoKSAmJiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIp
ICYmICFjb250ZXh0LT5mcmFnbWVudFByZWNpc2lvbkhpZ2gpIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCQxLmxpbmUsICJwcmVjaXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVu
dCBzaGFkZXIiLCAiaGlnaHAiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAicHJl
Y2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVyIiwgImhpZ2hwIik7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFj
b250ZXh0LT5zeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKCAkMywgJDIgKSkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBm
b3IgZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlwZSkp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJpbGxlZ2FsIHR5cGUgYXJndW1lbnQg
Zm9yIGRlZmF1bHQgcHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCQzLnR5cGUp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAk
JCA9IDA7CkBAIC0xMDE2LDEyICsxMDE4LDEyIEBAIGZ1bmN0aW9uX3Byb3RvdHlwZQogICAgICAg
ICBURnVuY3Rpb24qIHByZXZEZWMgPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24qPihjb250ZXh0LT5z
eW1ib2xUYWJsZS5maW5kKCQxLT5nZXRNYW5nbGVkTmFtZSgpKSk7CiAgICAgICAgIGlmIChwcmV2
RGVjKSB7CiAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UmV0dXJuVHlwZSgpICE9ICQxLT5n
ZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5l
LCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBlIiwg
JDEtPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcihAMiwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2Ft
ZSByZXR1cm4gdHlwZSIsICQxLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CiAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmV2RGVjLT5nZXRQYXJhbUNvdW50KCk7ICsr
aSkgewogICAgICAgICAgICAgICAgIGlmIChwcmV2RGVjLT5nZXRQYXJhbShpKS50eXBlLT5nZXRR
dWFsaWZpZXIoKSAhPSAkMS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm92ZXJsb2FkZWQgZnVu
Y3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXIgcXVhbGlmaWVycyIsICQxLT5nZXRQ
YXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKEAyLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBz
YW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgJDEtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxp
ZmllclN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEwMzMsNyArMTAzNSw2IEBAIGZ1
bmN0aW9uX3Byb3RvdHlwZQogICAgICAgICAvLyBiZWluZyByZWRlY2xhcmVkLiAgU28sIHBhc3Mg
YmFjayB1cCB0aGlzIGRlY2xhcmF0aW9uLCBub3QgdGhlIG9uZSBpbiB0aGUgc3ltYm9sIHRhYmxl
LgogICAgICAgICAvLwogICAgICAgICAkJC5mdW5jdGlvbiA9ICQxOwotICAgICAgICAkJC5saW5l
ID0gJDIubGluZTsKIAogICAgICAgICAvLyBXZSdyZSBhdCB0aGUgaW5uZXIgc2NvcGUgbGV2ZWwg
b2YgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzIGFuZCBib2R5IHN0YXRlbWVudC4KICAgICAgICAg
Ly8gQWRkIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUgdG8gdGhlIHN1cnJvdW5kaW5nIHNjb3BlIGlu
c3RlYWQuCkBAIC0xMDY5LDcgKzEwNzAsNyBAQCBmdW5jdGlvbl9oZWFkZXJfd2l0aF9wYXJhbWV0
ZXJzCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhpcyBwYXJhbWV0ZXIgPiBmaXJz
dCBpcyB2b2lkCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIu
bGluZSwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSciLCAi
dm9pZCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5ub3QgYmUgYW4gYXJn
dW1lbnQgdHlwZSBleGNlcHQgZm9yICcodm9pZCknIiwgInZvaWQiKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGRlbGV0ZSAkMy5wYXJhbS50eXBlOwogICAg
ICAgICB9IGVsc2UgewpAQCAtMTA4MywxMSArMTA4NCwxMSBAQCBmdW5jdGlvbl9oZWFkZXJfd2l0
aF9wYXJhbWV0ZXJzCiBmdW5jdGlvbl9oZWFkZXIKICAgICA6IGZ1bGx5X3NwZWNpZmllZF90eXBl
IElERU5USUZJRVIgTEVGVF9QQVJFTiB7CiAgICAgICAgIGlmICgkMS5xdWFsaWZpZXIgIT0gRXZx
R2xvYmFsICYmICQxLnF1YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCQyLmxpbmUsICJubyBxdWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9u
IHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKEAyLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZvciBmdW5jdGlvbiBy
ZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gbWFrZSBzdXJlIGEgc2Ft
cGxlciBpcyBub3QgaW52b2x2ZWQgYXMgd2VsbC4uLgotICAgICAgICBpZiAoY29udGV4dC0+c3Ry
dWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBhcyBhIHByb3RvdHlw
ZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCByZWN1cnNpb24pCkBAIC0xMTAy
LDMzICsxMTAzLDMxIEBAIGZ1bmN0aW9uX2hlYWRlcgogCiBwYXJhbWV0ZXJfZGVjbGFyYXRvcgog
ICAgIC8vIFR5cGUgKyBuYW1lCi0gICAgOiB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIHsKKyAg
ICA6IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgewogICAgICAgICBpZiAoJDEudHlwZSA9PSBF
YnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiaWxsZWdhbCB1
c2Ugb2YgdHlwZSAndm9pZCciLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoQDIsICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsICQyLnN0cmluZy0+
Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5n
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMiwgKiQyLnN0cmlu
ZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRQYXJhbWV0ZXIg
cGFyYW0gPSB7JDIuc3RyaW5nLCBuZXcgVFR5cGUoJDEpfTsKLSAgICAgICAgJCQubGluZSA9ICQy
LmxpbmU7CiAgICAgICAgICQkLnBhcmFtID0gcGFyYW07CiAgICAgfQotICAgIHwgdHlwZV9zcGVj
aWZpZXIgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9C
UkFDS0VUIHsKKyAgICB8IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIGNv
bnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIC8vIENoZWNrIHRoYXQg
d2UgY2FuIG1ha2UgYW4gYXJyYXkgb3V0IG9mIHRoaXMgdHlwZQotICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMy5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5hcnJheVR5cGVFcnJvckNoZWNrKEAzLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMi5saW5l
LCAqJDIuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhA
MiwgKiQyLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAg
ICAgaW50IHNpemU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQz
LmxpbmUsICQ0LCBzaXplKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hl
Y2soQDMsICQ0LCBzaXplKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgJDEuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAKICAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcg
VFR5cGUoJDEpOwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAkMi5zdHJpbmcsIHR5cGUg
fTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxpbmU7CiAgICAgICAgICQkLnBhcmFtID0gcGFyYW07
CiAgICAgfQogICAgIDsKQEAgLTExNDQsMTQgKzExNDMsMTQgQEAgcGFyYW1ldGVyX2RlY2xhcmF0
aW9uCiAgICAgLy8KICAgICA6IHR5cGVfcXVhbGlmaWVyIHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFy
YW1ldGVyX2RlY2xhcmF0b3IgewogICAgICAgICAkJCA9ICQzOwotICAgICAgICBpZiAoY29udGV4
dC0+cGFyYW1FcnJvckNoZWNrKCQzLmxpbmUsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFtLnR5
cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKEAzLCAkMS5xdWFsaWZp
ZXIsICQyLCAkJC5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICB9CiAgICAgfCBwYXJhbWV0ZXJfcXVhbGlmaWVyIHBhcmFtZXRlcl9kZWNsYXJhdG9yIHsK
ICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJF
cnJvckNoZWNrKCQyLmxpbmUsICQxLCAqJDIucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5wYXJhbS50eXBlKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBh
cmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMiwgRXZxVGVtcG9yYXJ5LCAk
MSwgJCQucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
fQogICAgIC8vCkBAIC0xMTU5LDE0ICsxMTU4LDE0IEBAIHBhcmFtZXRlcl9kZWNsYXJhdGlvbgog
ICAgIC8vCiAgICAgfCB0eXBlX3F1YWxpZmllciBwYXJhbWV0ZXJfcXVhbGlmaWVyIHBhcmFtZXRl
cl90eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDM7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5wYXJhbUVycm9yQ2hlY2soJDMubGluZSwgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0udHlw
ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soQDMsICQxLnF1YWxpZmll
ciwgJDIsICQkLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgIH0KICAgICB8IHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX3R5cGVfc3BlY2lmaWVy
IHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBs
ZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxLCAqJDIucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwgJDEsICokMi5wYXJhbS50eXBl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQt
PnBhcmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjayhAMiwgRXZxVGVtcG9yYXJ5
LCAkMSwgJCQucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgfQogICAgIDsKQEAgLTExOTcsODMgKzExOTYsODMgQEAgaW5pdF9kZWNsYXJhdG9yX2xpc3QK
ICAgICA6IHNpbmdsZV9kZWNsYXJhdGlvbiB7CiAgICAgICAgICQkID0gJDE7CiAgICAgfQotICAg
IHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiB7CisgICAgfCBpbml0X2Rl
Y2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIHsKICAgICAgICAgaWYgKCQxLnR5cGUudHlw
ZSA9PSBFYnRJbnZhcmlhbnQgJiYgISQzLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoJDMubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBh
cyBpbnZhcmlhbnQiLCAkMy5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoQDMsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50Iiwg
JDMuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQzLnN0cmluZywgVFR5cGUoJDEudHlwZSksICQzLmxpbmUp
OwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jv
d0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCBzeW1ib2wsICQzLmxpbmUpOworICAgICAgICBUSW50
ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICok
My5zdHJpbmcsIFRUeXBlKCQxLnR5cGUpLCBAMyk7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0
ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIHN5
bWJvbCwgQDMpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmll
ckVycm9yQ2hlY2soJDMubGluZSwgJCQudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkJC50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVj
aygkMy5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAkJC50eXBlLCBmYWxz
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgVFZhcmlhYmxl
KiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygk
My5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5ub25Jbml0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywgJCQudHlwZSwgdmFyaWFibGUp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoc3ltYm9sICYm
IHZhcmlhYmxlKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVl
SWQoKSk7CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklF
UiBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAgIHwgaW5pdF9kZWNs
YXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7
CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkMS50
eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29u
dGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkMS50eXBl
LCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soQDMs
ICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogCiAgICAgICAgICQkID0gJDE7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlw
ZUVycm9yQ2hlY2soJDQubGluZSwgJDEudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJF
cnJvckNoZWNrKCQ0LmxpbmUsICQxLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlU
eXBlRXJyb3JDaGVjayhANCwgJDEudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJv
ckNoZWNrKEA0LCAkMS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAkMS50eXBlLnNldEFycmF5KHRydWUpOwogICAgICAg
ICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJh
eUVycm9yQ2hlY2soJDQubGluZSwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQorICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhANCwgKiQzLnN0cmluZywgJDEu
dHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQogICAgIH0KLSAgICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENPTU1BIElERU5USUZJ
RVIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5
cGUpKQorICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZUX0JS
QUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAgICAgICAgaWYgKGNv
bnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29u
c3RFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQorICAgICAg
ICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywgJDEu
dHlwZSwgdHJ1ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAg
JCQgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkNC5s
aW5lLCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDQubGlu
ZSwgJDEudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEA0
LCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDQsICQxLnR5
cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVy
cm9yQ2hlY2soJDQubGluZSwgJDUsIHNpemUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFy
cmF5U2l6ZUVycm9yQ2hlY2soQDQsICQ1LCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkMS50eXBlLnNldEFycmF5KHRydWUsIHNpemUpOwog
ICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlFcnJvckNoZWNrKCQ0LmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHZhcmlh
YmxlKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soQDQsICokMy5z
dHJpbmcsICQxLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlID0gVFR5cGUoJDEudHlwZSk7CiAgICAgICAg
ICAgICB0eXBlLnNldEFycmF5U2l6ZShzaXplKTsKLSAgICAgICAgICAgICQkLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUs
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0
VW5pcXVlSWQoKSA6IDAsICokMy5zdHJpbmcsIHR5cGUsICQzLmxpbmUpLCAkMy5saW5lKTsKKyAg
ICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93
QWdncmVnYXRlKCQxLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wo
dmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICokMy5zdHJpbmcsIHR5cGUs
IEAzKSwgQDMpOwogICAgICAgICB9CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3Qg
Q09NTUEgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAgIHwgaW5p
dF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBFUVVBTCBpbml0aWFsaXplciB7Cisg
ICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkMS50eXBl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAkJCA9ICQxOwog
CiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRleHQt
PmV4ZWN1dGVJbml0aWFsaXplcigkMy5saW5lLCAqJDMuc3RyaW5nLCAkMS50eXBlLCAkNSwgaW50
ZXJtTm9kZSkpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoQDMs
ICokMy5zdHJpbmcsICQxLnR5cGUsICQ1LCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAgICAgLy8K
ICAgICAgICAgICAgIC8vIGJ1aWxkIHRoZSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICBpZiAoaW50ZXJtTm9kZSkKLSAgICAgICAgJCQuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50
ZXJtTm9kZSwgaW50ZXJtTm9kZSwgJDQubGluZSk7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0
ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIGlu
dGVybU5vZGUsIEA0KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAkJC5pbnRl
cm1BZ2dyZWdhdGUgPSAkMS5pbnRlcm1BZ2dyZWdhdGU7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0x
Mjg2LDc5ICsxMjg1LDc5IEBAIGluaXRfZGVjbGFyYXRvcl9saXN0CiBzaW5nbGVfZGVjbGFyYXRp
b24KICAgICA6IGZ1bGx5X3NwZWNpZmllZF90eXBlIHsKICAgICAgICAgJCQudHlwZSA9ICQxOwot
ICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFn
Z3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgkMSks
ICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5
bWJvbCgwLCAiIiwgVFR5cGUoJDEpLCBAMSksIEAxKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVj
aWZpZWRfdHlwZSBJREVOVElGSUVSIHsKLSAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkMSks
ICQyLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgIHwgZnVsbHlfc3BlY2lm
aWVkX3R5cGUgaWRlbnRpZmllciB7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEpLCBA
Mik7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5t
YWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQt
PnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDIubGluZSwgJCQudHlwZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkJC50eXBlKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5p
dENvbnN0RXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5n
LCAkJC50eXBlLCBmYWxzZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgICQkLnR5cGUgPSAkMTsKIAogICAgICAgICBUVmFyaWFibGUq
IHZhcmlhYmxlID0gMDsKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCQy
LmxpbmUsICokMi5zdHJpbmcsICQkLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPm5vbkluaXRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmICh2YXJpYWJsZSAm
JiBzeW1ib2wpCiAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJ
ZCgpKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIExFRlRf
QlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwg
InVuc2l6ZWQgYXJyYXkgZGVjbGFyYXRpb25zIG5vdCBzdXBwb3J0ZWQiLCAkMi5zdHJpbmctPmNf
c3RyKCkpOworICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmllciBMRUZUX0JSQUNL
RVQgUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAidW5zaXplZCBh
cnJheSBkZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIsICQyLnN0cmluZy0+Y19zdHIoKSk7CiAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1i
b2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIFRUeXBl
KCQxKSwgJDIubGluZSk7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgJDIubGluZSk7CisgICAgICAgIFRJbnRl
cm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQy
LnN0cmluZywgVFR5cGUoJDEpLCBAMik7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAgICAk
JC50eXBlID0gJDE7CiAgICAgfQotICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklF
UiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAgICB8
IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4
cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIFRUeXBlIHR5cGUgPSBUVHlwZSgkMSk7
CiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JD
aGVjaygkMi5saW5lLCAkNCwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVF
cnJvckNoZWNrKEAyLCAkNCwgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwotICAgICAgICBUSW50ZXJtU3ltYm9s
KiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcs
IHR5cGUsICQyLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgICAgICBUSW50
ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICok
Mi5zdHJpbmcsIHR5cGUsIEAyKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgIAotICAg
ICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMi5saW5lLCAkMSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkMSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQt
Pm5vbkluaXRDb25zdEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZywgJDEsIHRydWUpKQor
ICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMiwgKiQyLnN0cmlu
ZywgJDEsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAg
ICQkLnR5cGUgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVj
aygkMy5saW5lLCAkMSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxp
bmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDMsICQx
KSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQg
c2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQzLmxp
bmUsICQ0LCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNo
ZWNrKEAzLCAkNCwgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
CiAgICAgICAgICAgICAkMS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgICAgIFRWYXJp
YWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JD
aGVjaygkMy5saW5lLCAqJDIuc3RyaW5nLCAkMSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhAMywgKiQyLnN0cmluZywgJDEsIHZhcmlhYmxlKSkK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBpZiAodmFy
aWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFyaWFibGUt
PmdldFVuaXF1ZUlkKCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHwgZnVsbHlfc3BlY2lmaWVk
X3R5cGUgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICB8IGZ1bGx5X3Nw
ZWNpZmllZF90eXBlIGlkZW50aWZpZXIgRVFVQUwgaW5pdGlhbGl6ZXIgeworICAgICAgICBpZiAo
Y29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhAMiwgJDEpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQkLnR5cGUgPSAkMTsKIAogICAgICAgICBU
SW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5p
dGlhbGl6ZXIoJDIubGluZSwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkgeworICAg
ICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcihAMiwgKiQyLnN0cmluZywgJDEs
ICQ0LCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAvLwogICAgICAgICAvLyBCdWlsZCBpbnRlcm1l
ZGlhdGUgcmVwcmVzZW50YXRpb24KICAgICAgICAgLy8KICAgICAgICAgICAgIGlmKGludGVybU5v
ZGUpCi0gICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgJDMubGluZSk7CisgICAgICAgICAgICAg
ICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdh
dGUoaW50ZXJtTm9kZSwgQDMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICQk
LmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMzY3LDExOCArMTM2
Niw1MCBAQCBzaW5nbGVfZGVjbGFyYXRpb24KICAgICAgICAgfQogICAgIH0KICAgICB8IElOVkFS
SUFOVCBJREVOVElGSUVSIHsKLSAgICAgICAgVkVSVEVYX09OTFkoImludmFyaWFudCBkZWNsYXJh
dGlvbiIsICQxLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygk
MS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQg
dmFyeWluZyIpKQorICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwg
QDEpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQudHlwZS5zZXRCYXNpYyhFYnRJ
bnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICQyLmxpbmUpOworICAgICAgICAkJC50
eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgQDIpOwog
ICAgICAgICBpZiAoISQyLnN5bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoJDIubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlh
bnQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIs
ICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgJDIuc3RyaW5n
LT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAgICAgfQogICAgICAg
ICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJCQudHlw
ZSksICQyLmxpbmUpOwotICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAkMi5saW5lKTsKKyAgICAgICAgICAg
IFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wo
MCwgKiQyLnN0cmluZywgVFR5cGUoJCQudHlwZSksIEAyKTsKKyAgICAgICAgICAgICQkLmludGVy
bUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwg
QDIpOwogICAgICAgICB9CiAgICAgfQotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUgcGFj
ay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vICAgIHwgYnVmZmVyX3NwZWNpZmllciB7Ci0vLyAg
ICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKLS8vICAgIH0KICAgICA7CiAKLS8vIEdyYW1t
YXIgTm90ZTogIE5vICdlbnVtJywgb3IgJ3R5cGVkZWYnLgotCi0vLwotLy8gUGxhY2UgaG9sZGVy
IGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vJXR5cGUgPGludGVybT4gYnVm
ZmVyX2RlY2xhcmF0aW9uCi0vLyV0eXBlIDxpbnRlcm0udHlwZT4gYnVmZmVyX3NwZWNpZmllciBp
bnB1dF9vcl9vdXRwdXQgYnVmZmVyX2RlY2xhcmF0aW9uX2xpc3QKLS8vYnVmZmVyX3NwZWNpZmll
cgotLy8gICAgOiBpbnB1dF9vcl9vdXRwdXQgTEVGVF9CUkFDRSBidWZmZXJfZGVjbGFyYXRpb25f
bGlzdCBSSUdIVF9CUkFDRSB7Ci0vLyAgICB9Ci0vLyAgICA7Ci0vLwotLy9pbnB1dF9vcl9vdXRw
dXQKLS8vICAgIDogSU5QVVQgewotLy8gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNo
ZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImlucHV0
IikpCi0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLS8vICAgICAgICBVTlBBQ0tf
T05MWSgiaW5wdXQiLCAkMS5saW5lKTsKLS8vICAgICAgICAkJC5xdWFsaWZpZXIgPSBFdnFJbnB1
dDsKLS8vICAgIH0KLS8vICAgIHwgT1VUUFVUIHsKLS8vICAgICAgICBpZiAoY29udGV4dC0+Z2xv
YmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCksICJvdXRwdXQiKSkKLS8vICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotLy8gICAg
ICAgIFBBQ0tfT05MWSgib3V0cHV0IiwgJDEubGluZSk7Ci0vLyAgICAgICAgJCQucXVhbGlmaWVy
ID0gRXZxT3V0cHV0OwotLy8gICAgfQotLy8gICAgOwotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZv
ciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vYnVmZmVyX2RlY2xhcmF0aW9uX2xp
c3QKLS8vICAgIDogYnVmZmVyX2RlY2xhcmF0aW9uIHsKLS8vICAgIH0KLS8vICAgIHwgYnVmZmVy
X2RlY2xhcmF0aW9uX2xpc3QgYnVmZmVyX2RlY2xhcmF0aW9uIHsKLS8vICAgIH0KLS8vICAgIDsK
LQotLy8KLS8vIElucHV0L291dHB1dCBzZW1hbnRpY3M6Ci0vLyAgIGZsb2F0IG11c3QgYmUgMTYg
b3IgMzIgYml0cwotLy8gICBmbG9hdCBhbGlnbm1lbnQgcmVzdHJpY3Rpb25zPwotLy8gICBjaGVj
ayBmb3Igb25seSBvbmUgaW5wdXQgYW5kIG9ubHkgb25lIG91dHB1dAotLy8gICBzdW0gb2YgYml0
ZmllbGRzIGhhcyB0byBiZSBtdWx0aXBsZSBvZiAzMgotLy8KLQotLy8KLS8vIFBsYWNlIGhvbGRl
ciBmb3IgdGhlIHBhY2svdW5wYWNrIGxhbmd1YWdlcy4KLS8vCi0vL2J1ZmZlcl9kZWNsYXJhdGlv
bgotLy8gICAgOiB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIENPTE9OIGNvbnN0YW50X2V4cHJl
c3Npb24gU0VNSUNPTE9OIHsKLS8vICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNo
ZWNrKCQyLmxpbmUsICokMi5zdHJpbmcsIGNvbnRleHQpKQotLy8gICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgJCQudmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCQyLnN0
cmluZywgJDEpOwotLy8gICAgICAgIGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgq
JCQudmFyaWFibGUpKSB7Ci0vLyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJy
ZWRlZmluaXRpb24iLCAkJC52YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotLy8gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgICAgIC8vIGRvbid0IGhhdmUgdG8g
ZGVsZXRlICQkLnZhcmlhYmxlLCB0aGUgcG9vbCBwb3Agd2lsbCB0YWtlIGNhcmUgb2YgaXQKLS8v
ICAgICAgICB9Ci0vLyAgICB9Ci0vLyAgICA7Ci0KIGZ1bGx5X3NwZWNpZmllZF90eXBlCiAgICAg
OiB0eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDE7CiAKICAgICAgICAgaWYgKCQxLmFy
cmF5KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAibm90IHN1cHBvcnRl
ZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEs
ICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkMS5zZXRBcnJheShmYWxzZSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgfCB0eXBlX3F1YWxpZmllciB0eXBlX3NwZWNpZmllciAgewogICAgICAg
ICBpZiAoJDIuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJu
b3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcihAMiwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQyLnNldEFycmF5KGZhbHNl
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRl
ICYmCiAgICAgICAgICAgICAoJDIudHlwZSA9PSBFYnRCb29sIHx8ICQyLnR5cGUgPT0gRWJ0SW50
KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgImNhbm5vdCBiZSBib29s
IG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKEAyLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVy
U3RyaW5nKCQxLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICgoJDEucXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8fCAk
MS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ091dCkgJiYKICAgICAgICAgICAgICgkMi50eXBlID09
IEVidEJvb2wgfHwgJDIudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5n
KCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5ub3Qg
YmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgJCQgPSAkMjsK
QEAgLTE0ODgsMzQgKzE0MTksMzQgQEAgZnVsbHlfc3BlY2lmaWVkX3R5cGUKIAogdHlwZV9xdWFs
aWZpZXIKICAgICA6IENPTlNUX1FVQUwgewotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBF
dnFDb25zdCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0
LCBAMSk7CiAgICAgfQogICAgIHwgQVRUUklCVVRFIHsKLSAgICAgICAgVkVSVEVYX09OTFkoImF0
dHJpYnV0ZSIsICQxLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVj
aygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJhdHRyaWJ1
dGUiKSkKKyAgICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsIEAxKTsKKyAgICAgICAgaWYg
KGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUsICQxLmxpbmUpOwor
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1dGUsIEAxKTsKICAgICB9CiAg
ICAgfCBWQVJZSU5HIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soJDEu
bGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQor
ICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJURVhf
U0hBREVSKQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ091dCwg
JDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0
LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2
cVZhcnlpbmdJbiwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBF
dnFWYXJ5aW5nSW4sIEAxKTsKICAgICB9CiAgICAgfCBJTlZBUklBTlQgVkFSWUlORyB7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgIGlm
IChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJURVhf
U0hBREVSKQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50VmFy
eWluZ091dCwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJ
bnZhcmlhbnRWYXJ5aW5nT3V0LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICQkLnNl
dEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdJbiwgJDEubGluZSk7CisgICAgICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nSW4sIEAxKTsKICAg
ICB9CiAgICAgfCBVTklGT1JNIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hl
Y2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9y
bSIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlmb3Jt
LCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVW5pZm9ybSwgQDEp
OwogICAgIH0KICAgICA7CiAKQEAgLTE1MjUsNyArMTQ1Niw3IEBAIHR5cGVfc3BlY2lmaWVyCiAK
ICAgICAgICAgaWYgKCQkLnByZWNpc2lvbiA9PSBFYnBVbmRlZmluZWQpIHsKICAgICAgICAgICAg
ICQkLnByZWNpc2lvbiA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmdldERlZmF1bHRQcmVjaXNpb24o
JDEudHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVjaygk
MS5saW5lLCAkJC5wcmVjaXNpb24sICQxLnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4
dC0+cHJlY2lzaW9uRXJyb3JDaGVjayhAMSwgJCQucHJlY2lzaW9uLCAkMS50eXBlKSkgewogICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMTU1NSwxMSArMTQ4NiwxMSBAQCB0eXBlX3NwZWNpZmllcl9ub19wcmVjCiAgICAgfCB0
eXBlX3NwZWNpZmllcl9ub25hcnJheSBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBS
SUdIVF9CUkFDS0VUIHsKICAgICAgICAgJCQgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlUeXBlRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVR5cGVFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgICAgICBp
ZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygkMi5saW5lLCAkMywgc2l6ZSkpCisgICAg
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhAMiwgJDMsIHNpemUpKQog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkLnNldEFy
cmF5KHRydWUsIHNpemUpOwogICAgICAgICB9CkBAIC0xNTY5LDExOCArMTUwMCwxMDUgQEAgdHlw
ZV9zcGVjaWZpZXJfbm9fcHJlYwogdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICAgICA6IFZPSURf
VFlQRSB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFZv
aWQsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBGTE9BVF9UWVBFIHsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCBAMSk7CiAgICAg
fQogICAgIHwgSU5UX1RZUEUgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0g
ICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNl
dEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IEJPT0xfVFlQRSB7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9v
bCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsIEAx
KTsKICAgICB9Ci0vLyAgICB8IFVOU0lHTkVEIElOVF9UWVBFIHsKLS8vICAgICAgICBQQUNLX1VO
UEFDS19PTkxZKCJ1bnNpZ25lZCIsICQxLmxpbmUpOwotLy8gICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLS8vICAgICAgICAkJC5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICQxLmxpbmUp
OwotLy8gICAgfQogICAgIHwgVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdh
dGUoMik7CiAgICAgfQogICAgIHwgVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dy
ZWdhdGUoMyk7CiAgICAgfQogICAgIHwgVkVDNCB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOwor
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRB
Z2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgQlZFQzIgewogICAgICAgICBUUXVhbGlmaWVyIHF1
YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBF
dnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICQxLmxpbmUp
OworICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNl
dEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAgfCBCVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgJDEubGlu
ZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsIEAxKTsKICAgICAgICAgJCQu
c2V0QWdncmVnYXRlKDMpOwogICAgIH0KICAgICB8IEJWRUM0IHsKICAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAkMS5s
aW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgICAgICAk
JC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgSVZFQzIgewogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEu
bGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAgICAk
JC5zZXRBZ2dyZWdhdGUoMik7CiAgICAgfQogICAgIHwgSVZFQzMgewogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEu
bGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAgICAk
JC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwgSVZFQzQgewogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEu
bGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgICAgICAk
JC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgTUFUUklYMiB7Ci0gICAgICAgIEZSQUdf
VkVSVF9PTkxZKCJtYXQyIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dy
ZWdhdGUoMiwgdHJ1ZSk7CiAgICAgfQogICAgIHwgTUFUUklYMyB7Ci0gICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJtYXQzIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdh
dGUoMywgdHJ1ZSk7CiAgICAgfQogICAgIHwgTUFUUklYNCB7Ci0gICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJtYXQ0IiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsK
LSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAk
JC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUo
NCwgdHJ1ZSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJEIHsKLSAgICAgICAgRlJBR19WRVJUX09O
TFkoInNhbXBsZXIyRCIsICQxLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgJDEubGluZSk7Cisg
ICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8
IFNBTVBMRVJDVUJFIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXJDdWJlIiwgJDEu
bGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0U2FtcGxlckN1YmUsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNp
YyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IFNBTVBMRVJfRVhURVJO
QUxfT0VTIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VT
X0VHTF9pbWFnZV9leHRlcm5hbCIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5s
aW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJu
YWxPRVMiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAg
ICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckV4dGVybmFsT0VTIiwgJDEubGluZSk7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2Ft
cGxlckV4dGVybmFsT0VTLCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJEUkVD
VCB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl90ZXh0
dXJlX3JlY3RhbmdsZSIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAi
dW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CisgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcihAMSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVjdCIpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJzYW1wbGVyMkRSZWN0IiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgJDEu
bGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1YWwsIEAxKTsK
ICAgICB9CiAgICAgfCBzdHJ1Y3Rfc3BlY2lmaWVyIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFko
InN0cnVjdCIsICQxLmxpbmUpOwogICAgICAgICAkJCA9ICQxOwogICAgICAgICAkJC5xdWFsaWZp
ZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBF
dnFUZW1wb3Jhcnk7CiAgICAgfQpAQCAtMTY5MSwyOSArMTYwOSwyOSBAQCB0eXBlX3NwZWNpZmll
cl9ub25hcnJheQogICAgICAgICAvLwogICAgICAgICBUVHlwZSYgc3RydWN0dXJlID0gc3RhdGlj
X2Nhc3Q8VFZhcmlhYmxlKj4oJDEuc3ltYm9sKS0+Z2V0VHlwZSgpOwogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwg
JDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwgQDEpOwogICAg
ICAgICAkJC51c2VyRGVmID0gJnN0cnVjdHVyZTsKICAgICB9CiAgICAgOwogCiBzdHJ1Y3Rfc3Bl
Y2lmaWVyCi0gICAgOiBTVFJVQ1QgSURFTlRJRklFUiBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQt
PmVudGVyU3RydWN0RGVjbGFyYXRpb24oJDIubGluZSwgKiQyLnN0cmluZykpIGNvbnRleHQtPnJl
Y292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZykpCisg
ICAgOiBTVFJVQ1QgaWRlbnRpZmllciBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQtPmVudGVyU3Ry
dWN0RGVjbGFyYXRpb24oQDIsICokMi5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IH0gc3Ry
dWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0UgeworICAgICAgICBpZiAoY29udGV4dC0+
cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKIAotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCQ1LCAq
JDIuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0
cnVjdHVyZSgkMi5zdHJpbmcsICQ1KSk7CiAgICAgICAgIFRWYXJpYWJsZSogdXNlclR5cGVEZWYg
PSBuZXcgVFZhcmlhYmxlKCQyLnN0cmluZywgKnN0cnVjdHVyZSwgdHJ1ZSk7CiAgICAgICAgIGlm
ICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgqdXNlclR5cGVEZWYpKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAicmVkZWZpbml0aW9uIiwgJDIuc3RyaW5nLT5j
X3N0cigpLCAic3RydWN0Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInJlZGVm
aW5pdGlvbiIsICQyLnN0cmluZy0+Y19zdHIoKSwgInN0cnVjdCIpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVj
dCwgRXZxVGVtcG9yYXJ5LCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0
LCBFdnFUZW1wb3JhcnksIEAxKTsKICAgICAgICAgJCQudXNlckRlZiA9IHN0cnVjdHVyZTsKICAg
ICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CiAgICAgfQotICAgIHwgU1RS
VUNUIExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigkMi5s
aW5lLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJhdGlv
bl9saXN0IFJJR0hUX0JSQUNFIHsKLSAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlw
ZSgkNCwgVFN0cmluZygiIikpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRl
bXBvcmFyeSwgJDEubGluZSk7CisgICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSB7IGlmIChjb250ZXh0
LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKEAyLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3Zl
cigpOyB9IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKKyAgICAgICAgVFR5
cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZShOZXdQb29sVFN0cmluZygi
IiksICQ0KSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCBA
MSk7CiAgICAgICAgICQkLnVzZXJEZWYgPSBzdHJ1Y3R1cmU7CiAgICAgICAgIGNvbnRleHQtPmV4
aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwogICAgIH0KQEAgLTE3MjUsMTQgKzE2NDMsMTUgQEAgc3Ry
dWN0X2RlY2xhcmF0aW9uX2xpc3QKICAgICB9CiAgICAgfCBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlz
dCBzdHJ1Y3RfZGVjbGFyYXRpb24gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8ICQyLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCAkJC0+c2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAg
ICAgICBpZiAoKCokJClbal0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKCokMilbaV0udHlwZS0+
Z2V0RmllbGROYW1lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKCok
MilbaV0ubGluZSwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3RydWN0
IiwgKCokMilbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkuY19zdHIoKSk7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgJDItPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBURmllbGQq
IGZpZWxkID0gKCokMilbaV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICQk
LT5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIGlmICgoKiQkKVtqXS0+bmFtZSgpID09
IGZpZWxkLT5uYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIs
ICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxkLT5u
YW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAkJC0+cHVzaF9i
YWNrKCgqJDIpW2ldKTsKKyAgICAgICAgICAgICQkLT5wdXNoX2JhY2soZmllbGQpOwogICAgICAg
ICB9CiAgICAgfQogICAgIDsKQEAgLTE3NDEsMTQgKzE2NjAsMTQgQEAgc3RydWN0X2RlY2xhcmF0
aW9uCiAgICAgOiB0eXBlX3NwZWNpZmllciBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IFNFTUlDT0xP
TiB7CiAgICAgICAgICQkID0gJDI7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNo
ZWNrKCQxLmxpbmUsICgqJDIpWzBdLnR5cGUtPmdldEZpZWxkTmFtZSgpLCAkMSkpIHsKKyAgICAg
ICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNoZWNrKEAxLCAoKiQyKVswXS0+bmFtZSgpLCAkMSkp
IHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICQkLT5zaXplKCk7ICsraSkgewogICAgICAgICAg
ICAgLy8KICAgICAgICAgICAgIC8vIENhcmVmdWwgbm90IHRvIHJlcGxhY2UgYWxyZWFkeSBrbm93
biBhc3BlY3RzIG9mIHR5cGUsIGxpa2UgYXJyYXktbmVzcwogICAgICAgICAgICAgLy8KLSAgICAg
ICAgICAgIFRUeXBlKiB0eXBlID0gKCokJClbaV0udHlwZTsKKyAgICAgICAgICAgIFRUeXBlKiB0
eXBlID0gKCokJClbaV0tPnR5cGUoKTsKICAgICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlwZSgk
MS50eXBlKTsKICAgICAgICAgICAgIHR5cGUtPnNldE5vbWluYWxTaXplKCQxLnNpemUpOwogICAg
ICAgICAgICAgdHlwZS0+c2V0TWF0cml4KCQxLm1hdHJpeCk7CkBAIC0xNzU2LDI2ICsxNjc1LDIz
IEBAIHN0cnVjdF9kZWNsYXJhdGlvbgogCiAgICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBhcnJh
eXMgb2YgYXJyYXlzCiAgICAgICAgICAgICBpZiAodHlwZS0+aXNBcnJheSgpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soJDEubGluZSwgJDEpKQor
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAxLCAkMSkp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmICgkMS5hcnJheSkKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRBcnJh
eVNpemUoJDEuYXJyYXlTaXplKTsKLSAgICAgICAgICAgIGlmICgkMS51c2VyRGVmKSB7CisgICAg
ICAgICAgICBpZiAoJDEudXNlckRlZikKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRTdHJ1Y3Qo
JDEudXNlckRlZi0+Z2V0U3RydWN0KCkpOwotICAgICAgICAgICAgICAgIHR5cGUtPnNldFR5cGVO
YW1lKCQxLnVzZXJEZWYtPmdldFR5cGVOYW1lKCkpOwotICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soJDEubGluZSwgKnR5cGUp
KSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soQDEs
ICooKiQkKVtpXSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIDsKIAogc3RydWN0X2RlY2xhcmF0b3JfbGlz
dAogICAgIDogc3RydWN0X2RlY2xhcmF0b3IgewotICAgICAgICAkJCA9IE5ld1Bvb2xUVHlwZUxp
c3QoKTsKKyAgICAgICAgJCQgPSBOZXdQb29sVEZpZWxkTGlzdCgpOwogICAgICAgICAkJC0+cHVz
aF9iYWNrKCQxKTsKICAgICB9CiAgICAgfCBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IENPTU1BIHN0
cnVjdF9kZWNsYXJhdG9yIHsKQEAgLTE3ODQsMjYgKzE3MDAsMjQgQEAgc3RydWN0X2RlY2xhcmF0
b3JfbGlzdAogICAgIDsKIAogc3RydWN0X2RlY2xhcmF0b3IKLSAgICA6IElERU5USUZJRVIgewot
ICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5zdHJp
bmcpKQorICAgIDogaWRlbnRpZmllciB7CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVy
cm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogCi0gICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsK
LSAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7Ci0gICAgICAgICQkLnR5cGUtPnNldEZpZWxkTmFt
ZSgqJDEuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwg
RWJwVW5kZWZpbmVkKTsKKyAgICAgICAgJCQgPSBuZXcgVEZpZWxkKHR5cGUsICQxLnN0cmluZyk7
CiAgICAgfQotICAgIHwgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lv
biBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVj
aygkMS5saW5lLCAqJDEuc3RyaW5nKSkKKyAgICB8IGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIGNv
bnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGlmIChjb250ZXh0LT5y
ZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogCi0gICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5k
ZWZpbmVkKTsKLSAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7Ci0gICAgICAgICQkLnR5cGUtPnNl
dEZpZWxkTmFtZSgqJDEuc3RyaW5nKTsKLQotICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDIubGluZSwgJDMsIHNpemUpKQorICAgICAg
ICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAgICAg
ICBpbnQgc2l6ZSA9IDA7CisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNr
KEAzLCAkMywgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICQkLnR5cGUtPnNldEFycmF5U2l6ZShzaXplKTsKKyAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXpl
KHNpemUpOworCisgICAgICAgICQkID0gbmV3IFRGaWVsZCh0eXBlLCAkMS5zdHJpbmcpOwogICAg
IH0KICAgICA7CiAKQEAgLTE4MzUsNyArMTc0OSw3IEBAIGNvbXBvdW5kX3N0YXRlbWVudAogICAg
IHwgTEVGVF9CUkFDRSB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfSBzdGF0ZW1lbnRf
bGlzdCB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyB9IFJJR0hUX0JSQUNFIHsKICAgICAg
ICAgaWYgKCQzICE9IDApIHsKICAgICAgICAgICAgICQzLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0g
ICAgICAgICAgICAkMy0+c2V0RW5kTGluZSgkNS5saW5lKTsKKyAgICAgICAgICAgICQzLT5zZXRM
aW5lKEAkKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQzOwogICAgIH0KQEAgLTE4NTksNyAr
MTc3Myw3IEBAIGNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUKICAgICB8IExFRlRfQlJB
Q0Ugc3RhdGVtZW50X2xpc3QgUklHSFRfQlJBQ0UgewogICAgICAgICBpZiAoJDIpIHsKICAgICAg
ICAgICAgICQyLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAkMi0+c2V0RW5kTGlu
ZSgkMy5saW5lKTsKKyAgICAgICAgICAgICQyLT5zZXRMaW5lKEAkKTsKICAgICAgICAgfQogICAg
ICAgICAkJCA9ICQyOwogICAgIH0KQEAgLTE4NjcsMTAgKzE3ODEsMTAgQEAgY29tcG91bmRfc3Rh
dGVtZW50X25vX25ld19zY29wZQogCiBzdGF0ZW1lbnRfbGlzdAogICAgIDogc3RhdGVtZW50IHsK
LSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMSwgMCk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoJDEsIEAk
KTsKICAgICB9CiAgICAgfCBzdGF0ZW1lbnRfbGlzdCBzdGF0ZW1lbnQgewotICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLCAkMiwgMCk7CisgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCBAJCk7CiAg
ICAgfQogICAgIDsKIApAQCAtMTg4MSw5ICsxNzk1LDkgQEAgZXhwcmVzc2lvbl9zdGF0ZW1lbnQK
IAogc2VsZWN0aW9uX3N0YXRlbWVudAogICAgIDogSUYgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJ
R0hUX1BBUkVOIHNlbGVjdGlvbl9yZXN0X3N0YXRlbWVudCB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5ib29sRXJyb3JDaGVjaygkMS5saW5lLCAkMykpCisgICAgICAgIGlmIChjb250ZXh0LT5ib29s
RXJyb3JDaGVjayhAMSwgJDMpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oJDMsICQ1LCAkMS5s
aW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCQz
LCAkNSwgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTE5MDcsMTQgKzE4MjEsMTQgQEAgY29uZGl0
aW9uCiAgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkMS0+Z2V0TGluZSgpLCAk
MSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQotICAgIHwgZnVsbHlf
c3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7CisgICAgfCBmdWxs
eV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVyIHsKICAgICAgICAg
VEludGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFs
aWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVj
dFF1YWxpZmllckVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5p
dGlhbGl6ZXIoJDIubGluZSwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoQDIsICokMi5zdHJpbmcsICQxLCAk
NCwgaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAkJCA9ICQ0OwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKQEAgLTE5MjYsMTkgKzE4NDAsMTkgQEAgY29u
ZGl0aW9uCiBpdGVyYXRpb25fc3RhdGVtZW50CiAgICAgOiBXSElMRSBMRUZUX1BBUkVOIHsgY29u
dGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0g
Y29uZGl0aW9uIFJJR0hUX1BBUkVOIHN0YXRlbWVudF9ub19uZXdfc2NvcGUgewogICAgICAgICBj
b250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAkNCwgMCwgJDYsICQxLmxpbmUpOworICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hpbGUsIDAsICQ0LCAw
LCAkNiwgQDEpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7CiAgICAgfQog
ICAgIHwgRE8geyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0gc3RhdGVtZW50X3dpdGhf
c2NvcGUgV0hJTEUgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIFNFTUlDT0xPTiB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkOC5saW5lLCAkNikpCisgICAg
ICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjayhAOCwgJDYpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZExvb3AoRUxvb3BEb1doaWxlLCAwLCAkNiwgMCwgJDMsICQ0LmxpbmUpOworICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRG9XaGlsZSwgMCwgJDYsIDAsICQz
LCBANCk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAg
fCBGT1IgTEVGVF9QQVJFTiB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0
LT5sb29wTmVzdGluZ0xldmVsOyB9IGZvcl9pbml0X3N0YXRlbWVudCBmb3JfcmVzdF9zdGF0ZW1l
bnQgUklHSFRfUEFSRU4gc3RhdGVtZW50X25vX25ld19zY29wZSB7CiAgICAgICAgIGNvbnRleHQt
PnN5bWJvbFRhYmxlLnBvcCgpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRMb29wKEVMb29wRm9yLCAkNCwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigkNS5u
b2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oJDUubm9kZTIpLCAkNywgJDEu
bGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BG
b3IsICQ0LCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCQ1Lm5vZGUxKSwgcmVpbnRl
cnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigkNS5ub2RlMiksICQ3LCBAMSk7CiAgICAgICAgIC0t
Y29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAgOwpAQCAtMTk3NSwzOSArMTg4
OSwzOSBAQCBmb3JfcmVzdF9zdGF0ZW1lbnQKIGp1bXBfc3RhdGVtZW50CiAgICAgOiBDT05USU5V
RSBTRU1JQ09MT04gewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiY29udGludWUgc3RhdGVt
ZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKEAxLCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsICQxLmxpbmUpOwor
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUs
IEAxKTsKICAgICB9CiAgICAgfCBCUkVBSyBTRU1JQ09MT04gewogICAgICAgICBpZiAoY29udGV4
dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigk
MS5saW5lLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxsb3dl
ZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQnJl
YWssICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFu
Y2goRU9wQnJlYWssIEAxKTsKICAgICB9CiAgICAgfCBSRVRVUk4gU0VNSUNPTE9OIHsKLSAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgJDEubGlu
ZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1
cm4sIEAxKTsKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJh
c2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxp
bmUsICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJl
dHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9CiAgICAgfQogICAgIHwgUkVUVVJOIGV4cHJlc3Npb24gU0VNSUNPTE9OIHsK
LSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwg
JDIsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFu
Y2goRU9wUmV0dXJuLCAkMiwgQDEpOwogICAgICAgICBjb250ZXh0LT5mdW5jdGlvblJldHVybnNW
YWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5n
ZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigk
MS5saW5lLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgInZvaWQgZnVuY3Rpb24gY2Fubm90IHJl
dHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9IGVsc2UgaWYgKCooY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZSkgIT0g
JDItPmdldFR5cGUoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1
bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CisgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcg
dHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgfCBESVNDQVJEIFNFTUlDT0xPTiB7Ci0gICAgICAgIEZSQUdfT05M
WSgiZGlzY2FyZCIsICQxLmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCcmFuY2goRU9wS2lsbCwgJDEubGluZSk7CisgICAgICAgIEZSQUdfT05MWSgiZGlzY2Fy
ZCIsIEAxKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVP
cEtpbGwsIEAxKTsKICAgICB9CiAgICAgOwogCkBAIC0yMDE5LDcgKzE5MzMsNyBAQCB0cmFuc2xh
dGlvbl91bml0CiAgICAgICAgIGNvbnRleHQtPnRyZWVSb290ID0gJCQ7CiAgICAgfQogICAgIHwg
dHJhbnNsYXRpb25fdW5pdCBleHRlcm5hbF9kZWNsYXJhdGlvbiB7Ci0gICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEsICQyLCAwKTsKKyAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMSwgJDIsIEAkKTsKICAgICAg
ICAgY29udGV4dC0+dHJlZVJvb3QgPSAkJDsKICAgICB9CiAgICAgOwpAQCAtMjA0MSw3ICsxOTU1
LDcgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAKICAgICAgICAgaWYgKGJ1aWx0SW4p
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJidWlsdC1p
biBmdW5jdGlvbnMgY2Fubm90IGJlIHJlZGVmaW5lZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19z
dHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImJ1aWx0LWluIGZ1bmN0aW9u
cyBjYW5ub3QgYmUgcmVkZWZpbmVkIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTIw
NTUsNyArMTk2OSw3IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgICAgIC8vCiAgICAg
ICAgICAgICAvLyBUaGVuIHRoaXMgZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5LgogICAgICAg
ICAgICAgLy8KLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJmdW5jdGlvbiBh
bHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHkiLCBm
dW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9CiAgICAgICAgIHByZXZEZWMtPnNldERlZmluZWQoKTsKQEAgLTIwNjUs
MTEgKzE5NzksMTEgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAvLwogICAgICAgICBp
ZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAibWFpbiIpIHsKICAgICAgICAgICAgIGlmIChmdW5j
dGlvbi0+Z2V0UGFyYW1Db3VudCgpID4gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCQxLmxpbmUsICJmdW5jdGlvbiBjYW5ub3QgdGFrZSBhbnkgcGFyYW1ldGVyKHMpIiwgZnVu
Y3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cihAMSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+
Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgp
LmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigkMS5saW5lLCAiIiwgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmlu
ZygpLCAibWFpbiBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcihAMSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0
QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7CiAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yMDk3LDcgKzIwMTEsNyBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAgICAg
ICAgICAgLy8gSW5zZXJ0IHRoZSBwYXJhbWV0ZXJzIHdpdGggbmFtZSBpbiB0aGUgc3ltYm9sIHRh
YmxlLgogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+
c3ltYm9sVGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoJDEubGluZSwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCku
Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAicmVkZWZp
bml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICAgICBkZWxldGUgdmFyaWFi
bGU7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjEwOCwxNCArMjAyMiwxNSBAQCBmdW5jdGlvbl9k
ZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5ncm93QWdncmVnYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbU5vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5n
ZXRVbmlxdWVJZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEubGluZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJs
ZS0+Z2V0VHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEpOwogICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdy
b3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAiIiwgKnBhcmFtLnR5cGUsICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICBw
YXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2Rl
cywgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsIEAx
KSwgQDEpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPmludGVy
bWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihwYXJhbU5vZGVzLCBFT3BQYXJhbWV0ZXJzLCAk
MS5saW5lKTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJh
dG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsIEAxKTsKICAgICAgICAgJDEuaW50ZXJtQWdn
cmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAgICAgY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA9
IDA7CiAgICAgfQpAQCAtMjEyMywxMiArMjAzOCwxMiBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAg
ICAgICAgIC8vPz8gQ2hlY2sgdGhhdCBhbGwgcGF0aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0dXJu
IHR5cGUgIT0gdm9pZCA/CiAgICAgICAgIC8vICAgTWF5IGJlIGJlc3QgZG9uZSBhcyBwb3N0IHBy
b2Nlc3MgcGhhc2Ugb24gaW50ZXJtZWRpYXRlIGNvZGUKICAgICAgICAgaWYgKGNvbnRleHQtPmN1
cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQgJiYgISBjb250ZXh0
LT5mdW5jdGlvblJldHVybnNWYWx1ZSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEu
bGluZSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlOiIsICIiLCAkMS5mdW5jdGlv
bi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJm
dW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAiIiwgJDEuZnVuY3Rpb24tPmdldE5h
bWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3Jl
Z2F0ZSgkMS5pbnRlcm1BZ2dyZWdhdGUsICQzLCAwKTsKLSAgICAgICAgY29udGV4dC0+aW50ZXJt
ZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQkLCBFT3BGdW5jdGlvbiwgJDEubGluZSk7Cisg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJt
QWdncmVnYXRlLCAkMywgQCQpOworICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdn
cmVnYXRlT3BlcmF0b3IoJCQsIEVPcEZ1bmN0aW9uLCBAMSk7CiAgICAgICAgICQkLT5nZXRBc0Fn
Z3JlZ2F0ZSgpLT5zZXROYW1lKCQxLmZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFtZSgpLmNfc3RyKCkp
OwogICAgICAgICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0VHlwZSgkMS5mdW5jdGlvbi0+Z2V0
UmV0dXJuVHlwZSgpKTsKIApAQCAtMjEzNywxNSArMjA1MiwxNyBAQCBmdW5jdGlvbl9kZWZpbml0
aW9uCiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRPcHRpbWl6ZShjb250ZXh0LT5w
cmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXREZWJ1
Zyhjb250ZXh0LT5wcmFnbWEoKS5kZWJ1Zyk7CiAKLSAgICAgICAgaWYgKCQzICYmICQzLT5nZXRB
c0FnZ3JlZ2F0ZSgpKQotICAgICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldEVuZExp
bmUoJDMtPmdldEFzQWdncmVnYXRlKCktPmdldEVuZExpbmUoKSk7Ci0KICAgICAgICAgY29udGV4
dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgfQogICAgIDsKIAogJSUKIAordm9pZCB5eWVycm9y
KFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVh
c29uKSB7CisgICAgY29udGV4dC0+ZXJyb3IoKnl5bGxvYywgcmVhc29uLCAiIik7CisgICAgY29u
dGV4dC0+cmVjb3ZlcigpOworfQorCiBpbnQgZ2xzbGFuZ19wYXJzZShUUGFyc2VDb250ZXh0KiBj
b250ZXh0KSB7CiAgICAgcmV0dXJuIHl5cGFyc2UoY29udGV4dCk7CiB9CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAJ
KHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9nbHNsYW5nX2xleC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jbGluZSAx
NyAiLi9nbHNsYW5nLmwiCisjbGluZSAxNyAic3JjL2NvbXBpbGVyL2dsc2xhbmcubCIKIC8vCiAv
LyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKQEAgLTIxLDcgKzIxLDcgQEAKIAogCiAKLSNs
aW5lIDI1ICIuL2dsc2xhbmdfbGV4LmNwcCIKKyNsaW5lIDI1ICJzcmMvY29tcGlsZXIvZ2xzbGFu
Z19sZXguY3BwIgogCiAjZGVmaW5lICBZWV9JTlRfQUxJR05FRCBzaG9ydCBpbnQKIApAQCAtMzg0
LDggKzM4NCw4IEBAIHN0YXRpYyB2b2lkIHl5X2ZhdGFsX2Vycm9yICh5eWNvbnN0IGNoYXIKIAkq
eXlfY3AgPSAnXDAnOyBcCiAJeXlnLT55eV9jX2J1Zl9wID0geXlfY3A7CiAKLSNkZWZpbmUgWVlf
TlVNX1JVTEVTIDE1NQotI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSIDE1NgorI2RlZmluZSBZWV9O
VU1fUlVMRVMgMTQ3CisjZGVmaW5lIFlZX0VORF9PRl9CVUZGRVIgMTQ4CiAvKiBUaGlzIHN0cnVj
dCBpcyBub3QgdXNlZCBpbiB0aGlzIHNjYW5uZXIsCiAgICBidXQgaXRzIHByZXNlbmNlIGlzIG5l
Y2Vzc2FyeS4gKi8KIHN0cnVjdCB5eV90cmFuc19pbmZvCkBAIC0zOTMsNTggKzM5Myw1NyBAQCBz
dHJ1Y3QgeXlfdHJhbnNfaW5mbwogCWZsZXhfaW50MzJfdCB5eV92ZXJpZnk7CiAJZmxleF9pbnQz
Ml90IHl5X254dDsKIAl9Owotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2FjY2VwdFs0
NTldID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2NlcHRbNDQzXSA9CiAgICAg
eyAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAxNTYsICAx
NTQsICAxNTMsICAxNTMsCi0gICAgICAxMzgsICAxNDQsICAxNDksICAxMzMsICAxMzQsICAxNDIs
ICAxNDEsICAxMzAsICAxMzksICAxMzcsCi0gICAgICAxNDMsICAxMDIsICAxMDIsICAxMzEsICAx
MjcsICAxNDUsICAxMzIsICAxNDYsICAxNTAsICAgOTgsCi0gICAgICAxMzUsICAxMzYsICAxNDgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAg
ICAgOTgsICAgOTgsICAgOTgsICAxMjgsICAxNDcsICAxMjksICAxNDAsICAgIDMsICAgIDQsICAg
IDMsCi0gICAgICAxNTIsICAxNTUsICAxNTEsICAxMjQsICAxMTAsICAxMjksICAxMTgsICAxMTMs
ICAxMDgsICAxMTYsCi0gICAgICAxMDYsICAxMTcsICAxMDcsICAxMDUsICAgIDIsICAgIDEsICAx
MDksICAxMDQsICAxMDAsICAxMDEsCi0gICAgICAgIDAsICAgIDAsICAxMDIsICAxMzYsICAxMjgs
ICAxMzUsICAxMjUsICAxMjEsICAxMjMsICAxMjIsCi0gICAgICAxMjYsICAgOTgsICAxMTQsICAx
MjAsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0KLSAgICAgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICAxNywgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAyMCwgICAy
MiwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgIDExNSwgIDExOSwgICAgNSwKLSAgICAgIDE1MSwgICAgMCwgICAgMSwgIDEw
NCwgICAgMCwgICAgMCwgIDEwMywgICA5OSwgIDExMSwgIDExMiwKLSAgICAgICA1MCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAxOCwK
LSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAy
NiwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICAyMywgICA5OCwgICA5OCwKLQotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgICAwLCAg
MTA1LCAgICAwLCAgMTA0LCAgIDk4LCAgIDI4LCAgIDk4LCAgIDk4LCAgIDk1LAotICAgICAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDIxLCAgIDUzLCAgIDk4LAot
ICAgICAgIDk4LCAgIDk4LCAgIDY5LCAgIDk4LCAgIDk4LCAgIDU4LCAgIDczLCAgIDk4LCAgIDk4
LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDcwLCAgICA5LCAg
IDMzLCAgIDM0LCAgIDM1LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDU2LCAgIDI5LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDM2LCAgIDM3LCAgIDM4LCAgIDI3LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAg
IDE1LCAgIDQyLCAgIDQzLCAgIDQ0LCAgIDUxLCAgIDEyLCAgIDk4LCAgIDk4LCAgIDk4LAotCi0g
ICAgICAgOTgsICAgODIsICAgODMsICAgODQsICAgOTgsICAgMzAsICAgNzQsICAgMjUsICAgODUs
ICAgODYsCi0gICAgICAgODcsICAgIDcsICAgNzksICAgODAsICAgODEsICAgOTgsICAgMjQsICAg
NzcsICAgOTgsICAgOTgsCi0gICAgICAgMzksICAgNDAsICAgNDEsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgNzEsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgNTIsICAgOTgs
ICAgOTcsICAgOTgsICAgOTgsICAgMTksICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAg
NzIsICAgNjYsICAgNjEsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNzgsCi0gICAg
ICAgNTcsICAgOTgsICAgNjQsICAgMzIsICAgOTgsICAgOTQsICAgNjUsICAgNDksICAgNzYsICAg
NTksCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgNjAsICAgMzEsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgIDgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgNTQsCi0gICAgICAgMTMsICAgOTgsICAgMTQsICAgOTgsICAgOTgs
ICAgMTYsICAgNjcsICAgOTgsICAgOTgsICAgOTgsCi0KLSAgICAgICA2MiwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA1NSwgICA3NSwgICA2MywKLSAgICAgICAxMSwgICA2
OCwgICAgNiwgICA5NiwgICAxMCwgICA4OCwgICA0NSwgICA4OSwgICA5OCwgICA5OCwKLSAgICAg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwKLSAgICAgICA0NiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA0OCwgICA5OCwKLSAgICAgICA5MiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
MCwgICA5OCwgICA5MSwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA0NywgICA5MywgICAgMAorICAgICAgICAwLCAgICAwLCAgMTQ4LCAgMTQ2LCAgMTQ1LCAgMTQ1
LCAgMTMyLCAgMTM4LCAgMTQzLCAgMTI3LAorICAgICAgMTI4LCAgMTM2LCAgMTM1LCAgMTI0LCAg
MTMzLCAgMTMxLCAgMTM3LCAgIDk2LCAgIDk2LCAgMTI1LAorICAgICAgMTIxLCAgMTM5LCAgMTI2
LCAgMTQwLCAgMTQ0LCAgIDkzLCAgMTI5LCAgMTMwLCAgMTQyLCAgIDkzLAorICAgICAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAg
ICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
MTIyLAorICAgICAgMTQxLCAgMTIzLCAgMTM0LCAgMTE4LCAgMTA0LCAgMTIzLCAgMTEyLCAgMTA3
LCAgMTAyLCAgMTEwLAorICAgICAgMTAwLCAgMTExLCAgMTAxLCAgIDk5LCAgMTAzLCAgIDk4LCAg
IDk1LCAgIDk2LCAgICAwLCAgICAwLAorICAgICAgMTMwLCAgMTIyLCAgMTI5LCAgMTE5LCAgMTE1
LCAgMTE3LCAgMTE2LCAgMTIwLCAgIDkzLCAgMTA4LAorICAgICAgMTE0LCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDEy
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorCisgICAg
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgMTUsICAgMTcsICAgOTMsICAgOTMsICAg
OTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAxMDks
ICAxMTMsICAgIDAsICAgOTgsICAgIDAsICAgIDAsCisgICAgICAgOTcsICAgOTQsICAxMDUsICAx
MDYsICAgNDUsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAg
OTMsICAgOTMsICAgOTMsICAgMTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
CisgICAgICAgOTMsICAgOTMsICAgMjEsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsCisgICAgICAgOTMsICAgMTgsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisKKyAgICAgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICAgMCwgICA5OSwgICAgMCwgICA5OCwgICA5MywKKyAgICAgICAyMywgICA5Mywg
ICA5MywgICA5MCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5
MywgICAxNiwgICA0OCwgICA5MywgICA5MywgICA5MywgICA2NCwgICA5MywgICA5MywgICA1MywK
KyAgICAgICA2OCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA2NSwKKyAgICAgICAgNCwgICAyOCwgICAyOSwgICAzMCwgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA1MSwgICAyNCwgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICAzMSwgICAzMiwKKyAgICAgICAzMywgICAyMiwgICA5
MywgICA5MywgICA5MywgICAxMCwgICAzNywgICAzOCwgICAzOSwgICA0NiwKKyAgICAgICAgNywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA3NywgICA3OCwgICA3OSwgICA5MywgICAyNSwKKyAg
ICAgICA2OSwgICAyMCwgICA4MCwgICA4MSwgICA4MiwgICAgMiwgICA3NCwgICA3NSwgICA3Niwg
ICA5MywKKworICAgICAgIDE5LCAgIDcyLCAgIDkzLCAgIDkzLCAgIDM0LCAgIDM1LCAgIDM2LCAg
IDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDY2LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDQ3LCAgIDkzLCAgIDkyLCAgIDkzLCAgIDkzLAorICAgICAgIDE0LCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDY3LCAgIDYxLCAgIDU2LCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAg
IDkzLCAgIDkzLCAgIDczLCAgIDUyLCAgIDkzLCAgIDU5LCAgIDI3LCAgIDkzLCAgIDg5LAorICAg
ICAgIDYwLCAgIDQ0LCAgIDcxLCAgIDU0LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDU1LCAgIDI2LCAgIDkzLCAgIDkzLCAgIDkzLCAgICAz
LCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDQ5LCAgICA4LCAgIDkzLCAg
ICA5LCAgIDkzLCAgIDkzLCAgIDExLAorICAgICAgIDYyLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDU3
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDUwLCAgIDcwLCAg
IDU4LCAgICA2LCAgIDYzLCAgICAxLCAgIDkxLCAgICA1LCAgIDgzLAorCisgICAgICAgNDAsICAg
ODQsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAg
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNDEsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsCisgICAgICAgOTMsICAgOTMsICAgNDMsICAgOTMsICAgODcsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsCisgICAgICAgODUsICAgOTMsICAgODYsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgNDIsCisgICAgICAgODgsICAgIDAKICAgICB9IDsKIAogc3RhdGlj
IHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQpAQCAtNDgxLDIxMiArNDgwLDE5OCBA
QCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfZWNbMjU2XSA9CiAKIHN0YXRpYyB5eWNv
bnN0IGZsZXhfaW50MzJfdCB5eV9tZXRhWzY4XSA9CiAgICAgeyAgIDAsCi0gICAgICAgIDEsICAg
IDEsICAgIDIsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCi0gICAg
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAg
IDMsCi0gICAgICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMs
ICAgIDMsICAgIDMsCi0gICAgICAgIDMsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAg
IDEsICAgIDEsICAgIDEsICAgIDMsCi0gICAgICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMs
ICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsCi0gICAgICAgIDQsICAgIDQsICAgIDQsICAg
IDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsCi0gICAgICAgIDQsICAgIDQs
ICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAgIDEKKyAgICAgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKKyAgICAgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMiwKKyAgICAgICAg
MiwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMiwgICAgMiwgICAgMiwK
KyAgICAgICAgMiwgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMSwgICAgMSwgICAg
MSwgICAgMiwKKyAgICAgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMywgICAgMywg
ICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAg
MywgICAgMywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAgMywgICAgMywgICAgMSwg
ICAgMSwgICAgMSwgICAgMQogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3Qg
eXlfYmFzZVs0NjRdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9iYXNlWzQ0NV0g
PQogICAgIHsgICAwLAotICAgICAgICAwLCAgICAwLCAgIDY1LCAgIDY2LCAgIDc1LCAgICAwLCAg
NjgwLCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjU0LCAgIDQ1LCAgMTM3LCAgNjgxLCAgNjgx
LCAgNjUzLCAgMTM0LCAgNjgxLCAgMTMzLCAgMTMxLAotICAgICAgMTQ2LCAgMTU5LCAgMTY4LCAg
NjUxLCAgNjgxLCAgMTg2LCAgNjUxLCAgIDQ3LCAgNjgxLCAgICAwLAotICAgICAgNjgxLCAgNjgx
LCAgMTI4LCAgMTAwLCAgMTEwLCAgMTUyLCAgMTU2LCAgMTQ2LCAgMTY2LCAgNjIyLAotICAgICAg
MTczLCAgMTA5LCAgNjIxLCAgMTI2LCAgMTc3LCAgNjE1LCAgMTc4LCAgNjI4LCAgMTg3LCAgMTg0
LAotICAgICAgMTQxLCAgMTk3LCAgNjI0LCAgNjgxLCAgMTU3LCAgNjgxLCAgNjgxLCAgNjgxLCAg
NjgxLCAgNjU2LAotICAgICAgNjgxLCAgNjgxLCAgICAwLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgx
LCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjgxLCAgNjgxLCAgNjgxLCAgMjM2LCAgNjgxLCAg
ICAwLCAgNjgxLCAgMjQzLCAgMjczLCAgMjgyLAotICAgICAgMzA0LCAgICAwLCAgMzE0LCAgNjgx
LCAgNjgxLCAgNjgxLCAgNjQ0LCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjQzLCAgICAwLCAg
NjgxLCAgNjgxLCAgNjE2LCAgNjA5LCAgNjEyLCAgNjIwLCAgNjE5LCAgNjA2LAotCi0gICAgICA2
MjEsICA2MDgsICA2MTQsICA2MDIsICA1OTksICA2MTIsICA1OTksICA1OTYsICA1OTYsICA2MDIs
Ci0gICAgICA1OTAsICAxODksICA1OTUsICA2MDUsICA1OTEsICA1OTcsICA2MDAsICA2MDEsICAg
IDAsICAyMTYsCi0gICAgICA2MDAsICAxODgsICA1ODYsICA1OTksICA1OTAsICA1OTIsICA1ODIs
ICA1OTYsICA1OTMsICA1OTUsCi0gICAgICA1NzgsICA1ODMsICA1ODAsICA1NjksICAxODMsICA1
NzcsICA1ODIsICA1NzgsICA1ODAsICA1NjksCi0gICAgICA1NzIsICAyMjAsICA1NzcsICA1Njks
ICA1ODEsICAxNzYsICA1NzQsICA2ODEsICA2ODEsICA2ODEsCi0gICAgICAgIDAsICAzMzEsICAg
IDAsICAzNDQsICAzNjEsICAyOTAsICAzNzQsICAgIDAsICA2ODEsICA2ODEsCi0gICAgICAgIDAs
ICA1NjYsICA1NzAsICA1NzksICA1NzYsICA1NjAsICA1NjAsICAyMTUsICA1NzUsICA1NzIsCi0g
ICAgICA1NzIsICA1NzAsICA1NjcsICA1NTksICA1NjUsICA1NTIsICA1NjMsICA1NDksICA1NjUs
ICAgIDAsCi0gICAgICA1NjIsICA1NTAsICA1NTcsICA1NTQsICA1NTgsICA1NTEsICA1NDAsICA1
MzksICA1NTIsICA1NTUsCi0gICAgICA1NTIsICA1NDcsICA1MzgsICAyNjAsICA1NDMsICA1NDYs
ICA1MzcsICA1MzQsICA1MzgsICA1NDQsCi0KLSAgICAgIDUzNSwgIDUyNiwgIDUyOSwgIDUyNywg
IDUzNywgIDUyMywgIDUyMSwgIDUzNCwgIDUyMCwgIDUyMiwKLSAgICAgIDUxOSwgIDUzMCwgIDUy
OSwgIDI4MywgIDUyNCwgIDUxOSwgIDUwOCwgIDI2NCwgIDUyNiwgIDUyOCwKLSAgICAgIDUxNywg
IDM4MSwgIDM4OCwgIDM5NSwgIDQwMiwgIDUxOCwgICAgMCwgIDUxNiwgIDMyMCwgICAgMCwKLSAg
ICAgIDUwOCwgIDUwNiwgIDUxNCwgIDUwMywgIDUyMCwgIDUwOSwgIDMzNiwgICAgMCwgICAgMCwg
IDUwMywKLSAgICAgIDUxMywgIDUxMywgICAgMCwgIDQ5OCwgIDM0OSwgICAgMCwgICAgMCwgIDUw
MCwgIDM2NiwgIDUwMSwKLSAgICAgIDQ5NSwgIDQ5NCwgIDQ5NSwgIDQ5NCwgIDQwNywgICAgMCwg
ICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAgICAgIDQ5MCwgIDQ5MSwgIDQ5NiwgIDQ4NywgIDUw
MCwgIDQ5NSwgIDQ5NCwgIDQ4NiwgIDQ5MCwgIDQ4MiwKLSAgICAgIDQ4NSwgIDQ4OSwgIDQ5NCwg
IDQ4MCwgIDQ5MiwgIDQ4MywgICAgMCwgICAgMCwgIDQ4OSwgIDQ3OCwKLSAgICAgIDQ3OCwgIDQ4
MywgIDQ4MiwgIDQ3OSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ2OSwgIDQ4MSwKLSAgICAg
IDQ4MywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ3MSwgIDQ3MiwgIDQ2
NiwKLQotICAgICAgNDc2LCAgICAwLCAgICAwLCAgICAwLCAgNDY3LCAgICAwLCAgICAwLCAgICAw
LCAgICAwLCAgICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgNDc0LCAg
ICAwLCAgICAwLCAgNDcyLCAgNDY4LAotICAgICAgICAwLCAgICAwLCAgICAwLCAgNDY0LCAgNDYw
LCAgNDY1LCAgNDU1LCAgNDY4LCAgNDU0LCAgNDY3LAotICAgICAgNDU2LCAgNDYzLCAgICAwLCAg
NDYxLCAgNDYzLCAgNDQ3LCAgNDQ5LCAgNDU1LCAgNDYxLCAgNDU2LAotICAgICAgNDQ0LCAgICAw
LCAgNDQ2LCAgICAwLCAgNDQ1LCAgNDQ4LCAgICAwLCAgNDM3LCAgNDM2LCAgNDM2LAotICAgICAg
NDQ5LCAgICAwLCAgNDUxLCAgICAwLCAgNDUwLCAgNDQ5LCAgNDM0LCAgNDQ3LCAgNDM0LCAgICAw
LAotICAgICAgICAwLCAgNDM3LCAgICAwLCAgICAwLCAgNDI5LCAgICAwLCAgICAwLCAgICAwLCAg
ICAwLCAgICAwLAotICAgICAgNDI2LCAgNDM3LCAgNDMwLCAgNDM2LCAgNDMzLCAgNDI4LCAgNDIw
LCAgNDMyLCAgICAwLCAgICAwLAotICAgICAgNDI1LCAgNDMyLCAgNDIxLCAgICAwLCAgNDMwLCAg
NDI3LCAgNDE3LCAgNDExLCAgNDI1LCAgICAwLAotICAgICAgICAwLCAgNDI1LCAgICAwLCAgNDIz
LCAgNDIyLCAgICAwLCAgICAwLCAgNDIxLCAgNDA3LCAgNDE5LAotCi0gICAgICAgIDAsICA0MTAs
ICA0MzEsICA0MzAsICA0MjksICA0MDAsICAzOTYsICAgIDAsICAgIDAsICAgIDAsCi0gICAgICAg
IDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0MjEsICAyNTAsICA0MjEsICA0MTEsICAzODQs
Ci0gICAgICAzOTIsICAzOTQsICAzOTAsICAzOTIsICAzOTEsICAzOTAsICAzOTMsICAzOTAsICAz
OTEsICAzODgsCi0gICAgICAgIDAsICAzMzIsICAzNDMsICAzMTcsICAzMjksICAzMTMsICAzMTcs
ICAzMDQsICAzMjEsICAyOTEsCi0gICAgICAgIDAsICAzMDIsICAyODAsICAyNzEsICAyNTUsICAy
NjIsICAgIDAsICAyNTYsICAgIDAsICAyMzIsCi0gICAgICAyMDYsICAyMTIsICAxNDgsICAxNTks
ICAxMTMsICAgIDAsICAgIDAsICA2ODEsICA0NDIsICA0NDQsCi0gICAgICA0NDYsICA0NTAsICAx
NjEKKyAgICAgICAgMCwgICAgMCwgIDU4NywgIDU4OCwgIDU4OCwgIDU4OCwgIDU2MSwgICA0Mywg
ICA2NCwgIDU4OCwKKyAgICAgIDU4OCwgIDU2MCwgICA2MSwgIDU4OCwgICA2MCwgICA1OCwgIDU1
OSwgICA3NywgICA4NiwgIDU1NywKKyAgICAgIDU4OCwgIDEwNCwgIDU1NywgICA1NSwgIDU4OCwg
ICAgMCwgIDU4OCwgIDU4OCwgICA3NSwgICAyNiwKKyAgICAgICA1NywgICA4MiwgICA4MywgICA3
MywgICA5MywgIDUyOCwgICA5NywgICA5NSwgIDUyNywgICA0NCwKKyAgICAgICA3MSwgIDUyMSwg
IDEwNCwgIDUzNCwgIDExMCwgIDExNiwgICAzNSwgIDExMSwgIDUzMCwgIDU4OCwKKyAgICAgIDEx
NCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwK
KyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDE2NSwgIDU4OCwgIDE3MiwgIDIwMiwgIDIxMSwgIDIz
MywgICAgMCwKKyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDU1MSwgIDU4OCwgIDU4OCwgIDU4OCwg
IDU1MCwgICAgMCwgIDU4OCwKKyAgICAgIDU4OCwgIDUyMywgIDUxNiwgIDUxOSwgIDUyNywgIDUy
NiwgIDUxMywgIDUyOCwgIDUxNSwgIDUyMSwKKyAgICAgIDUwOSwgIDUwNiwgIDUxOSwgIDUwNiwg
IDUwMywgIDUwMywgIDUwOSwgIDQ5NywgIDEwOCwgIDUwMiwKKworICAgICAgNTEyLCAgNDk4LCAg
NTA0LCAgNTA3LCAgNTA4LCAgICAwLCAgMTQ1LCAgNTA3LCAgMTEzLCAgNDkzLAorICAgICAgNTA2
LCAgNDk3LCAgNDk5LCAgNDg5LCAgNTAzLCAgNTAwLCAgNTAyLCAgNDg1LCAgNDkwLCAgNDg3LAor
ICAgICAgNDc2LCAgMTU3LCAgNDg0LCAgNDg5LCAgNDg1LCAgNDg3LCAgNDc2LCAgNDc5LCAgMTE4
LCAgNDg0LAorICAgICAgNDc2LCAgNDg4LCAgIDcwLCAgNDgxLCAgNTg4LCAgNTg4LCAgMjQ2LCAg
MjUzLCAgMjcwLCAgMjE5LAorICAgICAgMjgzLCAgICAwLCAgNTg4LCAgNTg4LCAgICAwLCAgNDcz
LCAgNDc3LCAgNDg2LCAgNDgzLCAgNDY3LAorICAgICAgNDY3LCAgMTE5LCAgNDgyLCAgNDc5LCAg
NDc5LCAgNDc3LCAgNDc0LCAgNDY2LCAgNDcyLCAgNDU5LAorICAgICAgNDcwLCAgNDU2LCAgNDcy
LCAgICAwLCAgNDY5LCAgNDU3LCAgNDY0LCAgNDYxLCAgNDY1LCAgNDU4LAorICAgICAgNDQ3LCAg
NDQ2LCAgNDU5LCAgNDYyLCAgNDU5LCAgNDU0LCAgNDQ1LCAgMTg4LCAgNDUwLCAgNDUzLAorICAg
ICAgNDQ0LCAgNDQxLCAgNDQ1LCAgNDUxLCAgNDQyLCAgNDMzLCAgNDM2LCAgNDM0LCAgNDQ0LCAg
NDMwLAorICAgICAgNDI4LCAgNDQxLCAgNDI3LCAgNDI5LCAgNDI2LCAgNDM3LCAgNDM2LCAgMTI0
LCAgNDMxLCAgNDI2LAorCisgICAgICA0MTUsICAyNTgsICA0MzMsICA0MzUsICA0MjQsICAyOTAs
ICAyOTcsICAzMDQsICAzMTEsICA0MjUsCisgICAgICAgIDAsICA0MjMsICAyNzUsICAgIDAsICA0
MTUsICA0MTMsICA0MjEsICA0MTAsICA0MjcsICA0MTYsCisgICAgICAzMTYsICAgIDAsICAgIDAs
ICA0MTAsICA0MjAsICA0MjAsICAgIDAsICA0MDUsICAzMTksICAgIDAsCisgICAgICAgIDAsICA0
MDcsICAzMjIsICA0MDgsICA0MDIsICA0MDEsICA0MDIsICA0MDEsICAzMjUsICAgIDAsCisgICAg
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzOTcsICAzOTgsICA0MDMsICAzOTQsICA0MDcsICA0
MDIsCisgICAgICA0MDEsICAzOTMsICAzOTcsICAzODksICAzOTIsICAzOTYsICA0MDEsICAzODcs
ICAzOTksICAzOTAsCisgICAgICAgIDAsICAgIDAsICAzOTYsICAzODUsICAzODUsICAzOTAsICAz
ODksICAzODYsICAgIDAsICAgIDAsCisgICAgICAgIDAsICAgIDAsICAzNzYsICAzODgsICAzOTAs
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsCisgICAgICAgIDAsICAzNzgsICAzNzksICAz
NzMsICAzODMsICAgIDAsICAgIDAsICAgIDAsICAzNzQsICAgIDAsCisgICAgICAgIDAsICAgIDAs
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzODEsCisKKyAgICAg
ICAgMCwgICAgMCwgIDM3OSwgIDM3NSwgICAgMCwgICAgMCwgICAgMCwgIDM3MSwgIDM2NywgIDM3
MiwKKyAgICAgIDM2MiwgIDM3NSwgIDM2MSwgIDM3NCwgIDM2MywgIDM3MCwgICAgMCwgIDM2OCwg
IDM3MCwgIDM1NCwKKyAgICAgIDM1NiwgIDM2MiwgIDM2OCwgIDM2MywgIDM1MSwgICAgMCwgIDM1
MywgICAgMCwgIDM1MiwgIDM1NSwKKyAgICAgICAgMCwgIDM0NCwgIDM0MywgIDM0MywgIDM1Niwg
ICAgMCwgIDM1OCwgICAgMCwgIDM1NywgIDM1NiwKKyAgICAgIDM0MSwgIDM1NCwgIDM0MSwgICAg
MCwgICAgMCwgIDM0NCwgICAgMCwgICAgMCwgIDMzNiwgICAgMCwKKyAgICAgICAgMCwgICAgMCwg
ICAgMCwgICAgMCwgIDMzMywgIDM0NCwgIDMzNywgIDM0MywgIDM0MCwgIDMzNSwKKyAgICAgIDMy
NywgIDMzOSwgICAgMCwgICAgMCwgIDMzMiwgIDMzOSwgIDMyOCwgICAgMCwgIDMzNywgIDMzNCwK
KyAgICAgIDMyNCwgIDMyOSwgIDMzMiwgICAgMCwgICAgMCwgIDMzMiwgICAgMCwgIDMzMCwgIDMy
OSwgICAgMCwKKyAgICAgICAgMCwgIDMyOCwgIDMxNCwgIDMyNiwgICAgMCwgIDMxNywgIDMzOCwg
IDMzNywgIDMzNiwgIDMwNywKKyAgICAgIDMwMywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAg
MCwgICAgMCwgICAgMCwgICAgMCwgIDMyOCwKKworICAgICAgMTY2LCAgMzI1LCAgMzE2LCAgMjk5
LCAgMzA4LCAgMzEwLCAgMzA2LCAgMzA4LCAgMzA3LCAgMzA2LAorICAgICAgMzA5LCAgMzA2LCAg
MjU2LCAgMjUzLCAgICAwLCAgMjI4LCAgMjM4LCAgMjIyLCAgMjM1LCAgMjAzLAorICAgICAgMjA3
LCAgMjA0LCAgMjEyLCAgMTkxLCAgICAwLCAgMjAxLCAgMTY1LCAgMTY3LCAgMTUzLCAgMTYxLAor
ICAgICAgICAwLCAgMTcwLCAgICAwLCAgMTc1LCAgMTUxLCAgMTQxLCAgMTAwLCAgMTE0LCAgIDU5
LCAgICAwLAorICAgICAgICAwLCAgNTg4LCAgMzU5LCAgMTEzCiAgICAgfSA7CiAKLXN0YXRpYyB5
eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9kZWZbNDY0XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2lu
dDE2X3QgeXlfZGVmWzQ0NV0gPQogICAgIHsgICAwLAotICAgICAgNDU4LCAgICAxLCAgNDU5LCAg
NDU5LCAgNDU4LCAgICA1LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDYw
LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDYxLCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDYyLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4
LCAgNDYzLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAot
ICAgICAgNDU4LCAgNDYwLCAgNDU4LCAgNDU4LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NTgsICA0NTgsICA0NTgsCi0g
ICAgICA0NjEsICA0NTgsICA0NjIsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NjMsICA0NTgs
ICA0NTgsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0KLSAgICAgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAg
ICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwKLSAgICAgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAot
Ci0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICAgIDAsICA0NTgsICA0NTgsCi0g
ICAgICA0NTgsICA0NTgsICA0NTgKKyAgICAgIDQ0MiwgICAgMSwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywKKyAgICAgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywK
KyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0NCwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKwor
ICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQ0LCAgNDQy
LCAgNDQyLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAg
ICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorCisgICAgICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDMsCisgICAgICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAg
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
CisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywK
KyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKworICAgICAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAor
ICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgICAwLCAgNDQyLCAgNDQyCiAg
ICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9ueHRbNzQ5XSA9CitzdGF0
aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0WzY1Nl0gPQogICAgIHsgICAwLAotICAgICAg
ICA4LCAgICA5LCAgIDEwLCAgIDExLCAgIDEyLCAgIDEzLCAgIDE0LCAgIDE1LCAgIDE2LCAgIDE3
LAotICAgICAgIDE4LCAgIDE5LCAgIDIwLCAgIDIxLCAgIDIyLCAgIDIzLCAgIDIzLCAgIDIzLCAg
IDIzLCAgIDIzLAotICAgICAgIDIzLCAgIDI0LCAgIDI1LCAgIDI2LCAgIDI3LCAgIDI4LCAgIDI5
LCAgIDMwLCAgIDMwLCAgIDMwLAotICAgICAgIDMwLCAgIDMwLCAgIDMwLCAgIDMwLCAgIDMwLCAg
IDMwLCAgIDMxLCAgIDMyLCAgIDMzLCAgIDM0LAotICAgICAgIDM1LCAgIDM2LCAgIDM3LCAgIDM4
LCAgIDM5LCAgIDQwLCAgIDQxLCAgIDQyLCAgIDMwLCAgIDQzLAotICAgICAgIDQ0LCAgIDQ1LCAg
IDQ2LCAgIDQ3LCAgIDQ4LCAgIDQ5LCAgIDUwLCAgIDUxLCAgIDUyLCAgIDUzLAotICAgICAgIDMw
LCAgIDMwLCAgIDMwLCAgIDU0LCAgIDU1LCAgIDU2LCAgIDU3LCAgIDU5LCAgIDU5LCAgIDY1LAot
ICAgICAgIDY2LCAgIDkwLCAgIDkxLCAgIDYwLCAgIDYwLCAgICA4LCAgIDYxLCAgIDYyLCAgICA4
LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAg
ICA4LCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4
LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAotCi0gICAgICAgIDgsICAgIDgsICAgNjMsICAgNjMs
ICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0gICAgICAgNjMsICAgIDgsICAg
IDgsICAgIDgsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0gICAgICAgNjMs
ICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0g
ICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgIDgs
ICAgIDgsCi0gICAgICAgIDgsICAgIDgsICAgNjcsICAgNzAsICAgNzIsICAgNzQsICAgNzQsICAg
NzQsICAgNzQsICAgNzQsCi0gICAgICAgNzQsICAgNzQsICAgOTMsICAxMTksICAgNzUsICAgOTUs
ICAgOTYsICAgNzMsICAgNzEsICAgNzYsCi0gICAgICAxMjAsICAgNjgsICAgOTcsICAxNTgsICAg
OTgsICAxMjMsICAgOTQsICAxMjEsICAgOTksICAxMjQsCi0gICAgICAgNzcsICAgNzgsICA0NTcs
ICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAgODAsCi0gICAgICAgNzgsICAx
NDgsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODEsCi0gICAg
ICAgODUsICAxMDAsICAxNDIsICA0NTYsICAgODIsICAxMDcsICAxNDMsICAxMDgsICAgODEsICAx
MDMsCi0KLSAgICAgIDQ1NSwgIDEwMSwgICA4MSwgIDEwNCwgIDEwMiwgIDExMCwgIDEwOSwgICA4
NiwgIDEwNSwgICA4NywKLSAgICAgICA4OCwgICA4MSwgIDExNiwgIDExMSwgIDEwNiwgIDExMiwg
IDEyNSwgIDEyOCwgIDExMywgICA4MiwKLSAgICAgIDExNywgIDE0OSwgIDIwNiwgIDIxOSwgIDEx
NCwgIDIyMCwgIDEzMiwgIDEzOCwgIDE3OCwgIDEyNiwKLSAgICAgIDEzOSwgIDExOCwgIDEyOSwg
IDEzMywgIDEzNCwgIDEzMCwgIDE0NCwgIDIwNywgIDE0MCwgIDE5MiwKLSAgICAgIDE0NSwgIDE3
OSwgIDQ1NCwgIDEzNSwgIDEzNiwgIDE0MSwgIDEzNywgIDE5MywgIDQ1MywgIDE0NiwKLSAgICAg
ICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgIDE1NCwgIDE1NCwgIDE1
NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDQ1MiwgIDE4NiwgIDE1MiwgIDIxNCwg
IDE4NywgIDE4OCwKLSAgICAgIDIzMiwgIDIzMywgIDE4OSwgIDE1NSwgIDE5MCwgIDIxNSwgIDI1
OCwgIDI1OSwgIDI2MCwgIDE1MiwKLSAgICAgIDI4NSwgIDI4NiwgIDI4NywgIDQyMiwgIDQyMywg
ICA3OCwgIDE1NSwgICA3OSwgICA3OSwgICA3OSwKLSAgICAgICA3OSwgICA3OSwgICA3OSwgICA4
MCwgICA3OCwgIDQ1MSwgICA4MCwgICA4MCwgICA4MCwgICA4MCwKLQotICAgICAgIDgwLCAgIDgw
LCAgIDgwLCAgIDgxLCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LAotICAgICAg
MTU3LCAgNDUwLCAgIDgxLCAgMTU2LCAgNDQ5LCAgMTU2LCAgIDgxLCAgNDQ4LCAgMTU3LCAgMTU3
LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgIDgxLCAgIDc4LCAgMjgwLCAg
IDgzLCAgIDgzLAotICAgICAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgMjgxLCAgMjkz
LCAgMjk0LCAgMjk1LCAgNDQ3LAotICAgICAgMjIyLCAgNDQ2LCAgMjIyLCAgNDQ1LCAgIDgxLCAg
MjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLAotICAgICAgMjIzLCAgMjIzLCAgMzAyLCAgMzAz
LCAgMzA0LCAgNDQ0LCAgNDQzLCAgIDgxLCAgMTU0LCAgMTU0LAotICAgICAgMTU0LCAgMTU0LCAg
MTU0LCAgMTU0LCAgMTU0LCAgMzA5LCAgMzEwLCAgMzExLCAgNDQyLCAgNDQxLAotICAgICAgMjI0
LCAgNDQwLCAgMjI0LCAgNDM5LCAgMTU1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LAot
ICAgICAgMjI1LCAgMjI1LCAgMzEzLCAgMzE0LCAgMzE1LCAgNDM4LCAgNDM3LCAgMTU1LCAgMTU3
LCAgMTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMjIzLCAgMjIzLCAg
MjIzLCAgMjIzLCAgMjIzLAotCi0gICAgICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAy
MjMsICAyMjMsICAyMjMsICAyMjMsICAyMjUsCi0gICAgICAyMjUsICAyMjUsICAyMjUsICAyMjUs
ICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsCi0gICAgICAyMjUsICAyMjUsICAy
MjUsICAzMjEsICAzMjIsICAzMjMsICA0MDMsICA0MDQsICA0MDUsICA0MzYsCi0gICAgICA0MzUs
ICA0MzQsICA0MzMsICA0MzIsICA0MzEsICA0MzAsICA0MjksICA0MjgsICA0MjcsICA0MDYsCi0g
ICAgICA0MjYsICA0MDcsICAgNTgsICAgNTgsICAgNTgsICAgNTgsICAgOTIsICAgOTIsICAxNTEs
ICAxNTEsCi0gICAgICAxNTMsICA0MjUsICAxNTMsICAxNTMsICA0MjQsICA0MjEsICA0MjAsICA0
MTksICA0MTgsICA0MTcsCi0gICAgICA0MTYsICA0MTUsICA0MTQsICA0MTMsICA0MTIsICA0MTEs
ICA0MTAsICA0MDksICA0MDgsICA0MDIsCi0gICAgICA0MDEsICA0MDAsICAzOTksICAzOTgsICAz
OTcsICAzOTYsICAzOTUsICAzOTQsICAzOTMsICAzOTIsCi0gICAgICAzOTEsICAzOTAsICAzODks
ICAzODgsICAzODcsICAzODYsICAzODUsICAzODQsICAzODMsICAzODIsCi0gICAgICAzODEsICAz
ODAsICAzNzksICAzNzgsICAzNzcsICAzNzYsICAzNzUsICAzNzQsICAzNzMsICAzNzIsCi0KLSAg
ICAgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2NywgIDM2NiwgIDM2NSwgIDM2NCwgIDM2Mywg
IDM2MiwKLSAgICAgIDM2MSwgIDM2MCwgIDM1OSwgIDM1OCwgIDM1NywgIDM1NiwgIDM1NSwgIDM1
NCwgIDM1MywgIDM1MiwKLSAgICAgIDM1MSwgIDM1MCwgIDM0OSwgIDM0OCwgIDM0NywgIDM0Niwg
IDM0NSwgIDM0NCwgIDM0MywgIDM0MiwKLSAgICAgIDM0MSwgIDM0MCwgIDMzOSwgIDMzOCwgIDMz
NywgIDMzNiwgIDMzNSwgIDMzNCwgIDMzMywgIDMzMiwKLSAgICAgIDMzMSwgIDMzMCwgIDMyOSwg
IDMyOCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMCwgIDMxOSwKLSAgICAgIDMxOCwgIDMx
NywgIDMxNiwgIDMxMiwgIDMwOCwgIDMwNywgIDMwNiwgIDMwNSwgIDMwMSwgIDMwMCwKLSAgICAg
IDI5OSwgIDI5OCwgIDI5NywgIDI5NiwgIDI5MiwgIDI5MSwgIDI5MCwgIDI4OSwgIDI4OCwgIDI4
NCwKLSAgICAgIDI4MywgIDI4MiwgIDI3OSwgIDI3OCwgIDI3NywgIDI3NiwgIDI3NSwgIDI3NCwg
IDI3MywgIDI3MiwKLSAgICAgIDI3MSwgIDI3MCwgIDI2OSwgIDI2OCwgIDI2NywgIDI2NiwgIDI2
NSwgIDI2NCwgIDI2MywgIDI2MiwKLSAgICAgIDI2MSwgIDI1NywgIDI1NiwgIDI1NSwgIDI1NCwg
IDI1MywgIDI1MiwgIDI1MSwgIDI1MCwgIDI0OSwKLQotICAgICAgMjQ4LCAgMjQ3LCAgMjQ2LCAg
MjQ1LCAgMjQ0LCAgMjQzLCAgMjQyLCAgMjQxLCAgMjQwLCAgMjM5LAotICAgICAgMjM4LCAgMjM3
LCAgMjM2LCAgMjM1LCAgMjM0LCAgMjMxLCAgMjMwLCAgMjI5LCAgMjI4LCAgMjI3LAotICAgICAg
MjI2LCAgMjIxLCAgMjE4LCAgMjE3LCAgMjE2LCAgMjEzLCAgMjEyLCAgMjExLCAgMjEwLCAgMjA5
LAotICAgICAgMjA4LCAgMjA1LCAgMjA0LCAgMjAzLCAgMjAyLCAgMjAxLCAgMjAwLCAgMTk5LCAg
MTk4LCAgMTk3LAotICAgICAgMTk2LCAgMTk1LCAgMTk0LCAgMTkxLCAgMTg1LCAgMTg0LCAgMTgz
LCAgMTgyLCAgMTgxLCAgMTgwLAotICAgICAgMTc3LCAgMTc2LCAgMTc1LCAgMTc0LCAgMTczLCAg
MTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LAotICAgICAgMTY3LCAgMTY2LCAgMTY1LCAgMTY0
LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTUwLAotICAgICAgMTQ3LCAgMTMxLCAg
MTI3LCAgMTIyLCAgMTE1LCAgIDg5LCAgIDg0LCAgIDY5LCAgIDY0LCAgNDU4LAotICAgICAgICA3
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAot
ICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LAotCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgKKyAgICAgICAgNCwgICAg
NSwgICAgNiwgICAgNywgICAgOCwgICAgOSwgICAxMCwgICAxMSwgICAxMiwgICAxMywKKyAgICAg
ICAxNCwgICAxNSwgICAxNiwgICAxNywgICAxOCwgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAx
OSwKKyAgICAgICAxOSwgICAyMCwgICAyMSwgICAyMiwgICAyMywgICAyNCwgICAyNSwgICAyNiwg
ICAyNiwgICAyNiwKKyAgICAgICAyNiwgICAyNiwgICAyNiwgICAyNiwgICAyNiwgICAyNiwgICAy
NywgICAyOCwgICAyOSwgICAzMCwKKyAgICAgICAzMSwgICAzMiwgICAzMywgICAzNCwgICAzNSwg
ICAzNiwgICAzNywgICAzOCwgICAyNiwgICAzOSwKKyAgICAgICA0MCwgICA0MSwgICA0MiwgICA0
MywgICA0NCwgICA0NSwgICA0NiwgICA0NywgICA0OCwgICA0OSwKKyAgICAgICAyNiwgICAyNiwg
ICAyNiwgICA1MCwgICA1MSwgICA1MiwgICA1MywgICA1NSwgICA1NiwgICA1NywKKyAgICAgICA2
MCwgICA2MiwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA3NywK
KyAgICAgICA3OCwgICA4MiwgICA4MywgIDExMCwgICA2MywgICA2MSwgIDEyOSwgIDExMSwgICA1
OCwgICA2NiwKKyAgICAgIDEzMCwgICA2NywgICA2NywgICA2NywgICA2NywgICA2NywgICA2Nywg
ICA2OCwgICA2NiwgICA4MCwKKworICAgICAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAg
IDY4LCAgIDY4LCAgIDY5LCAgIDcyLCAgIDg0LAorICAgICAgMTEyLCAgIDg1LCAgIDcwLCAgIDgx
LCAgMTQyLCAgIDg2LCAgIDY5LCAgMjAzLCAgNDQxLCAgMjA0LAorICAgICAgIDY5LCAgIDg3LCAg
IDk0LCAgMTEzLCAgIDk1LCAgIDczLCAgIDkwLCAgIDc0LCAgIDc1LCAgIDY5LAorICAgICAgIDkx
LCAgIDg4LCAgIDk3LCAgIDk2LCAgIDg5LCAgIDkyLCAgMTAzLCAgIDcwLCAgMTM1LCAgMTA2LAor
ICAgICAgIDk4LCAgIDkzLCAgIDk5LCAgMTE1LCAgMTA0LCAgMTAwLCAgMTA3LCAgMTYyLCAgNDQw
LCAgMTE5LAorICAgICAgMTMxLCAgMTAxLCAgNDM5LCAgMTA4LCAgMTMyLCAgMTA1LCAgMTIwLCAg
MTIxLCAgMTE2LCAgMTI1LAorICAgICAgMTYzLCAgMTE3LCAgMTI2LCAgMTMzLCAgMTc2LCAgMTk4
LCAgMTIyLCAgMTIzLCAgMjY0LCAgMTI0LAorICAgICAgMTI3LCAgNDM4LCAgMTc3LCAgMTk5LCAg
MjE2LCAgMjE3LCAgMjY1LCAgMTI4LCAgMTM2LCAgIDY0LAorICAgICAgIDY0LCAgIDY0LCAgIDY0
LCAgIDY0LCAgIDY0LCAgIDY0LCAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LAorICAgICAgMTM4LCAg
MTM4LCAgMTM4LCAgNDM3LCAgMTcwLCAgMTM3LCAgMTkwLCAgMTcxLCAgMTcyLCAgNDA2LAorCisg
ICAgICA0MDcsICAxNzMsICAxMzksICAxNzQsICAyNDIsICAyNDMsICAyNDQsICA0MzYsICAxMzcs
ICA0MzUsCisgICAgICA0MzQsICAxOTEsICA0MzMsICA0MzIsICAgNjYsICAxMzksICAgNjcsICAg
NjcsICAgNjcsICAgNjcsCisgICAgICAgNjcsICAgNjcsICAgNjgsICAgNjYsICA0MzEsICAgNjgs
ICAgNjgsICAgNjgsICAgNjgsICAgNjgsCisgICAgICAgNjgsICAgNjgsICAgNjksICAxNDEsICAx
NDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsCisgICAgICA0MzAsICAgNjksICAxNDAs
ICA0MjksICAxNDAsICAgNjksICA0MjgsICAxNDEsICAxNDEsICAxNDEsCisgICAgICAxNDEsICAx
NDEsICAxNDEsICAxNDEsICAgNjksICAyMDYsICA0MjcsICAyMDYsICA0MjYsICA0MjUsCisgICAg
ICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAxMzgsICAxMzgsICAx
MzgsCisgICAgICAxMzgsICAxMzgsICAxMzgsICAxMzgsICAyNjksICAyNzAsICAyNzEsICA0MjQs
ICA0MjMsICAyMDgsCisgICAgICA0MjIsICAyMDgsICA0MjEsICAxMzksICAyMDksICAyMDksICAy
MDksICAyMDksICAyMDksICAyMDksCisgICAgICAyMDksICAyNzcsICAyNzgsICAyNzksICA0MjAs
ICA0MTksICAxMzksICAxNDEsICAxNDEsICAxNDEsCisKKyAgICAgIDE0MSwgIDE0MSwgIDE0MSwg
IDE0MSwgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywKKyAgICAgIDIwNywgIDIw
NywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwOSwgIDIwOSwKKyAgICAg
IDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIw
OSwKKyAgICAgIDIwOSwgIDIwOSwgIDI4NiwgIDI4NywgIDI4OCwgIDI5MywgIDI5NCwgIDI5NSwg
IDI5NywgIDI5OCwKKyAgICAgIDI5OSwgIDMwNSwgIDMwNiwgIDMwNywgIDM4NywgIDM4OCwgIDM4
OSwgIDQxOCwgIDQxNywgIDQxNiwKKyAgICAgIDQxNSwgIDQxNCwgIDQxMywgIDQxMiwgIDQxMSwg
IDQxMCwgIDQwOSwgIDM5MCwgIDQwOCwgIDM5MSwKKyAgICAgICA3OSwgICA3OSwgIDQwNSwgIDQw
NCwgIDQwMywgIDQwMiwgIDQwMSwgIDQwMCwgIDM5OSwgIDM5OCwKKyAgICAgIDM5NywgIDM5Niwg
IDM5NSwgIDM5NCwgIDM5MywgIDM5MiwgIDM4NiwgIDM4NSwgIDM4NCwgIDM4MywKKyAgICAgIDM4
MiwgIDM4MSwgIDM4MCwgIDM3OSwgIDM3OCwgIDM3NywgIDM3NiwgIDM3NSwgIDM3NCwgIDM3MywK
KyAgICAgIDM3MiwgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2NywgIDM2NiwgIDM2NSwgIDM2
NCwgIDM2MywKKworICAgICAgMzYyLCAgMzYxLCAgMzYwLCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2
LCAgMzU1LCAgMzU0LCAgMzUzLAorICAgICAgMzUyLCAgMzUxLCAgMzUwLCAgMzQ5LCAgMzQ4LCAg
MzQ3LCAgMzQ2LCAgMzQ1LCAgMzQ0LCAgMzQzLAorICAgICAgMzQyLCAgMzQxLCAgMzQwLCAgMzM5
LCAgMzM4LCAgMzM3LCAgMzM2LCAgMzM1LCAgMzM0LCAgMzMzLAorICAgICAgMzMyLCAgMzMxLCAg
MzMwLCAgMzI5LCAgMzI4LCAgMzI3LCAgMzI2LCAgMzI1LCAgMzI0LCAgMzIzLAorICAgICAgMzIy
LCAgMzIxLCAgMzIwLCAgMzE5LCAgMzE4LCAgMzE3LCAgMzE2LCAgMzE1LCAgMzE0LCAgMzEzLAor
ICAgICAgMzEyLCAgMzExLCAgMzEwLCAgMzA5LCAgMzA4LCAgMzA0LCAgMzAzLCAgMzAyLCAgMzAx
LCAgMzAwLAorICAgICAgMjk2LCAgMjkyLCAgMjkxLCAgMjkwLCAgMjg5LCAgMjg1LCAgMjg0LCAg
MjgzLCAgMjgyLCAgMjgxLAorICAgICAgMjgwLCAgMjc2LCAgMjc1LCAgMjc0LCAgMjczLCAgMjcy
LCAgMjY4LCAgMjY3LCAgMjY2LCAgMjYzLAorICAgICAgMjYyLCAgMjYxLCAgMjYwLCAgMjU5LCAg
MjU4LCAgMjU3LCAgMjU2LCAgMjU1LCAgMjU0LCAgMjUzLAorICAgICAgMjUyLCAgMjUxLCAgMjUw
LCAgMjQ5LCAgMjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAgMjQxLCAgMjQwLAorCisgICAgICAyMzks
ICAyMzgsICAyMzcsICAyMzYsICAyMzUsICAyMzQsICAyMzMsICAyMzIsICAyMzEsICAyMzAsCisg
ICAgICAyMjksICAyMjgsICAyMjcsICAyMjYsICAyMjUsICAyMjQsICAyMjMsICAyMjIsICAyMjEs
ICAyMjAsCisgICAgICAyMTksICAyMTgsICAyMTUsICAyMTQsICAyMTMsICAyMTIsICAyMTEsICAy
MTAsICAyMDUsICAyMDIsCisgICAgICAyMDEsICAyMDAsICAxOTcsICAxOTYsICAxOTUsICAxOTQs
ICAxOTMsICAxOTIsICAxODksICAxODgsCisgICAgICAxODcsICAxODYsICAxODUsICAxODQsICAx
ODMsICAxODIsICAxODEsICAxODAsICAxNzksICAxNzgsCisgICAgICAxNzUsICAxNjksICAxNjgs
ICAxNjcsICAxNjYsICAxNjUsICAxNjQsICAxNjEsICAxNjAsICAxNTksCisgICAgICAxNTgsICAx
NTcsICAxNTYsICAxNTUsICAxNTQsICAxNTMsICAxNTIsICAxNTEsICAxNTAsICAxNDksCisgICAg
ICAxNDgsICAxNDcsICAxNDYsICAxNDUsICAxNDQsICAxNDMsICAxMzQsICAxMTgsICAxMTQsICAx
MDksCisgICAgICAxMDIsICAgNzYsICAgNzEsICAgNjUsICAgNTksICAgNTQsICA0NDIsICAgIDMs
ICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsCisKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MgogICAgIH0gOwog
Ci1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzc0OV0gPQorc3RhdGljIHl5Y29u
c3QgZmxleF9pbnQxNl90IHl5X2Noa1s2NTZdID0KICAgICB7ICAgMCwKICAgICAgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwKQEAgLTY5NCw5NSArNjc5LDg1IEBAIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9j
aGtbNzQ5XSAKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKLSAgICAgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAgNCwgICAxMiwKLSAgICAgICAxMiwg
ICAyOCwgICAyOCwgICAgMywgICAgNCwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLSAg
ICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwKLQotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAg
ICAgICA1LCAgICA1LCAgIDEzLCAgIDE3LCAgIDE5LCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLCAg
IDIwLAotICAgICAgIDIwLCAgIDIwLCAgIDMzLCAgIDQyLCAgIDIxLCAgIDM0LCAgIDM0LCAgIDE5
LCAgIDE3LCAgIDIxLAotICAgICAgIDQyLCAgIDEzLCAgIDM1LCAgNDYzLCAgIDM1LCAgIDQ0LCAg
IDMzLCAgIDQyLCAgIDM1LCAgIDQ0LAotICAgICAgIDIxLCAgIDIyLCAgNDU1LCAgIDIyLCAgIDIy
LCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLAotICAgICAgIDIzLCAgIDU1LCAgIDIzLCAg
IDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIyLAotICAgICAgIDI2LCAgIDM2
LCAgIDUxLCAgNDU0LCAgIDIyLCAgIDM4LCAgIDUxLCAgIDM4LCAgIDIzLCAgIDM3LAotCi0gICAg
ICA0NTMsICAgMzYsICAgMjIsICAgMzcsICAgMzYsICAgMzksICAgMzgsICAgMjYsICAgMzcsICAg
MjYsCi0gICAgICAgMjYsICAgMjMsICAgNDEsICAgMzksICAgMzcsICAgMzksICAgNDUsICAgNDcs
ICAgMzksICAgMjIsCi0gICAgICAgNDEsICAgNTUsICAxMzUsICAxNDYsICAgMzksICAxNDYsICAg
NDksICAgNTAsICAxMTIsICAgNDUsCi0gICAgICAgNTAsICAgNDEsICAgNDcsICAgNDksICAgNDks
ICAgNDcsICAgNTIsICAxMzUsICAgNTAsICAxMjIsCi0gICAgICAgNTIsICAxMTIsICA0NTIsICAg
NDksICAgNDksICAgNTAsICAgNDksICAxMjIsICA0NTEsICAgNTIsCi0gICAgICAgNzQsICAgNzQs
ICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzgsICAgNzgsICAgNzgsCi0gICAgICAg
NzgsICAgNzgsICAgNzgsICAgNzgsICA0NTAsICAxMjAsICAgNzQsICAxNDIsICAxMjAsICAxMjAs
Ci0gICAgICAxNjgsICAxNjgsICAxMjAsICAgNzgsICAxMjAsICAxNDIsICAxOTQsICAxOTQsICAx
OTQsICAgNzQsCi0gICAgICAyMTgsICAyMTgsICAyMTgsICA0MTcsICA0MTcsICAgNzksICAgNzgs
ICAgNzksICAgNzksICAgNzksCi0gICAgICAgNzksICAgNzksICAgNzksICAgNzksICAgODAsICA0
NDgsICAgODAsICAgODAsICAgODAsICAgODAsCi0KLSAgICAgICA4MCwgICA4MCwgICA4MCwgICA3
OSwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwKLSAgICAgIDE1NiwgIDQ0Niwg
ICA4MCwgICA4MSwgIDQ0NSwgICA4MSwgICA3OSwgIDQ0NCwgICA4MSwgICA4MSwKLSAgICAgICA4
MSwgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MCwgICA4MywgIDIxNCwgICA4MywgICA4MywK
LSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgIDIxNCwgIDIyOSwgIDIyOSwgIDIy
OSwgIDQ0MywKLSAgICAgIDE1MiwgIDQ0MiwgIDE1MiwgIDQ0MCwgICA4MywgIDE1MiwgIDE1Miwg
IDE1MiwgIDE1MiwgIDE1MiwKLSAgICAgIDE1MiwgIDE1MiwgIDIzNywgIDIzNywgIDIzNywgIDQz
OSwgIDQzOCwgICA4MywgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwg
IDE1NCwgIDI0NSwgIDI0NSwgIDI0NSwgIDQzNywgIDQzNiwKLSAgICAgIDE1NSwgIDQzNSwgIDE1
NSwgIDQzNCwgIDE1NCwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwKLSAgICAgIDE1NSwg
IDE1NSwgIDI0OSwgIDI0OSwgIDI0OSwgIDQzMywgIDQzMiwgIDE1NCwgIDE1NywgIDE1NywKLSAg
ICAgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDIyMiwgIDIyMiwgIDIyMiwgIDIyMiwg
IDIyMiwKLQotICAgICAgMjIyLCAgMjIyLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAg
MjIzLCAgMjIzLCAgMjI0LAotICAgICAgMjI0LCAgMjI0LCAgMjI0LCAgMjI0LCAgMjI0LCAgMjI0
LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMjI1LCAgMjU1LCAg
MjU1LCAgMjU1LCAgMzg4LCAgMzg4LCAgMzg4LCAgNDMwLAotICAgICAgNDI5LCAgNDI4LCAgNDI3
LCAgNDI2LCAgNDI1LCAgNDI0LCAgNDIzLCAgNDIyLCAgNDIxLCAgMzg4LAotICAgICAgNDIwLCAg
Mzg4LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDYwLCAgNDYwLCAgNDYxLCAgNDYxLAotICAg
ICAgNDYyLCAgNDE5LCAgNDYyLCAgNDYyLCAgNDE4LCAgNDE2LCAgNDA3LCAgNDA2LCAgNDA1LCAg
NDA0LAotICAgICAgNDAzLCAgNDAyLCAgNDAwLCAgMzk5LCAgMzk4LCAgMzk1LCAgMzk0LCAgMzky
LCAgMzg5LCAgMzg3LAotICAgICAgMzg2LCAgMzg1LCAgMzgzLCAgMzgyLCAgMzgxLCAgMzc4LCAg
Mzc3LCAgMzc2LCAgMzc1LCAgMzc0LAotICAgICAgMzczLCAgMzcyLCAgMzcxLCAgMzY1LCAgMzYy
LCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LAotICAgICAgMzUzLCAgMzUxLCAgMzUwLCAg
MzQ5LCAgMzQ4LCAgMzQ2LCAgMzQ1LCAgMzQzLCAgMzQxLCAgMzQwLAotCi0gICAgICAzMzksICAz
MzgsICAzMzcsICAzMzYsICAzMzUsICAzMzQsICAzMzIsICAzMzEsICAzMzAsICAzMjksCi0gICAg
ICAzMjgsICAzMjcsICAzMjYsICAzMjUsICAzMjQsICAzMjAsICAzMTksICAzMTYsICAzMDUsICAz
MDEsCi0gICAgICAzMDAsICAyOTksICAyOTgsICAyOTEsICAyOTAsICAyODksICAyODQsICAyODMs
ICAyODIsICAyODEsCi0gICAgICAyODAsICAyNzksICAyNzYsICAyNzUsICAyNzQsICAyNzMsICAy
NzIsICAyNzEsICAyNzAsICAyNjksCi0gICAgICAyNjgsICAyNjcsICAyNjYsICAyNjUsICAyNjQs
ICAyNjMsICAyNjIsICAyNjEsICAyNTQsICAyNTMsCi0gICAgICAyNTIsICAyNTEsICAyNTAsICAy
NDgsICAyNDQsICAyNDIsICAyNDEsICAyNDAsICAyMzYsICAyMzUsCi0gICAgICAyMzQsICAyMzMs
ICAyMzIsICAyMzEsICAyMjgsICAyMjYsICAyMjEsICAyMjAsICAyMTksICAyMTcsCi0gICAgICAy
MTYsICAyMTUsICAyMTMsICAyMTIsICAyMTEsICAyMTAsICAyMDksICAyMDgsICAyMDcsICAyMDYs
Ci0gICAgICAyMDUsICAyMDQsICAyMDMsICAyMDIsICAyMDEsICAyMDAsICAxOTksICAxOTgsICAx
OTcsICAxOTYsCi0gICAgICAxOTUsICAxOTMsICAxOTIsICAxOTEsICAxOTAsICAxODksICAxODgs
ICAxODcsICAxODYsICAxODUsCi0KLSAgICAgIDE4NCwgIDE4MywgIDE4MiwgIDE4MSwgIDE3OSwg
IDE3OCwgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwKLSAgICAgIDE3MywgIDE3MiwgIDE3MSwgIDE3
MCwgIDE2OSwgIDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2MywKLSAgICAgIDE2MiwgIDE0Nywg
IDE0NSwgIDE0NCwgIDE0MywgIDE0MSwgIDE0MCwgIDEzOSwgIDEzOCwgIDEzNywKLSAgICAgIDEz
NiwgIDEzNCwgIDEzMywgIDEzMiwgIDEzMSwgIDEzMCwgIDEyOSwgIDEyOCwgIDEyNywgIDEyNiwK
LSAgICAgIDEyNSwgIDEyNCwgIDEyMywgIDEyMSwgIDExOCwgIDExNywgIDExNiwgIDExNSwgIDEx
NCwgIDExMywKLSAgICAgIDExMSwgIDExMCwgIDEwOSwgIDEwOCwgIDEwNywgIDEwNiwgIDEwNSwg
IDEwNCwgIDEwMywgIDEwMiwKLSAgICAgIDEwMSwgIDEwMCwgICA5OSwgICA5OCwgICA5NywgICA5
NiwgICA5NSwgICA5MSwgICA4NywgICA2MCwKLSAgICAgICA1MywgICA0OCwgICA0NiwgICA0Mywg
ICA0MCwgICAyNywgICAyNCwgICAxNiwgICAxMSwgICAgNywKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLQot
ICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4CisgICAgICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDgsICAgIDgsICAgIDksCisgICAgICAgMTMsICAgMTUs
ICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMjQsCisgICAgICAg
MjQsICAgMzAsICAgMzAsICAgNDAsICAgMTUsICAgMTMsICAgNDcsICAgNDAsICAgIDksICAgMTgs
CisgICAgICAgNDcsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAg
MTksICAgMjksCisKKyAgICAgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAx
OSwgICAxOCwgICAyMiwgICAzMSwKKyAgICAgICA0MSwgICAzMSwgICAxOCwgICAyOSwgIDQ0NCwg
ICAzMSwgICAxOSwgIDEzMywgIDQzOSwgIDEzMywKKyAgICAgICAxOCwgICAzMiwgICAzNCwgICA0
MSwgICAzNCwgICAyMiwgICAzMywgICAyMiwgICAyMiwgICAxOSwKKyAgICAgICAzMywgICAzMiwg
ICAzNSwgICAzNCwgICAzMiwgICAzMywgICAzNywgICAxOCwgICA1MSwgICAzOCwKKyAgICAgICAz
NSwgICAzMywgICAzNSwgICA0MywgICAzNywgICAzNSwgICAzOCwgICA5OSwgIDQzOCwgICA0NSwK
KyAgICAgICA0OCwgICAzNSwgIDQzNywgICAzOCwgICA0OCwgICAzNywgICA0NSwgICA0NSwgICA0
MywgICA0NiwKKyAgICAgICA5OSwgICA0MywgICA0NiwgICA0OCwgIDEwOSwgIDEyOSwgICA0NSwg
ICA0NSwgIDE5OCwgICA0NSwKKyAgICAgICA0NiwgIDQzNiwgIDEwOSwgIDEyOSwgIDE1MiwgIDE1
MiwgIDE5OCwgICA0NiwgICA1MSwgICA2NCwKKyAgICAgICA2NCwgICA2NCwgICA2NCwgICA2NCwg
ICA2NCwgICA2NCwgICA2NiwgICA2NiwgICA2NiwgICA2NiwKKyAgICAgICA2NiwgICA2NiwgICA2
NiwgIDQzNSwgIDEwNywgICA2NCwgIDEyMiwgIDEwNywgIDEwNywgIDQwMSwKKworICAgICAgNDAx
LCAgMTA3LCAgIDY2LCAgMTA3LCAgMTc4LCAgMTc4LCAgMTc4LCAgNDM0LCAgIDY0LCAgNDMyLAor
ICAgICAgNDMwLCAgMTIyLCAgNDI5LCAgNDI4LCAgIDY3LCAgIDY2LCAgIDY3LCAgIDY3LCAgIDY3
LCAgIDY3LAorICAgICAgIDY3LCAgIDY3LCAgIDY3LCAgIDY4LCAgNDI3LCAgIDY4LCAgIDY4LCAg
IDY4LCAgIDY4LCAgIDY4LAorICAgICAgIDY4LCAgIDY4LCAgIDY3LCAgMTQwLCAgMTQwLCAgMTQw
LCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLAorICAgICAgNDI2LCAgIDY4LCAgIDY5LCAgNDI0LCAg
IDY5LCAgIDY3LCAgNDIzLCAgIDY5LCAgIDY5LCAgIDY5LAorICAgICAgIDY5LCAgIDY5LCAgIDY5
LCAgIDY5LCAgIDY4LCAgMTM3LCAgNDIyLCAgMTM3LCAgNDIxLCAgNDIwLAorICAgICAgMTM3LCAg
MTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM4LCAgMTM4LCAgMTM4LAorICAg
ICAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LCAgMjAyLCAgMjAyLCAgMjAyLCAgNDE5LCAgNDE4LCAg
MTM5LAorICAgICAgNDE3LCAgMTM5LCAgNDE2LCAgMTM4LCAgMTM5LCAgMTM5LCAgMTM5LCAgMTM5
LCAgMTM5LCAgMTM5LAorICAgICAgMTM5LCAgMjEzLCAgMjEzLCAgMjEzLCAgNDE0LCAgNDEzLCAg
MTM4LCAgMTQxLCAgMTQxLCAgMTQxLAorCisgICAgICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAy
MDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsCisgICAgICAyMDYsICAyMDcsICAyMDcs
ICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDgsICAyMDgsCisgICAgICAyMDgsICAy
MDgsICAyMDgsICAyMDgsICAyMDgsICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksCisgICAg
ICAyMDksICAyMDksICAyMjEsICAyMjEsICAyMjEsICAyMjksICAyMjksICAyMjksICAyMzMsICAy
MzMsCisgICAgICAyMzMsICAyMzksICAyMzksICAyMzksICAzNzIsICAzNzIsICAzNzIsICA0MTIs
ICA0MTEsICA0MTAsCisgICAgICA0MDksICA0MDgsICA0MDcsICA0MDYsICA0MDUsICA0MDQsICA0
MDMsICAzNzIsICA0MDIsICAzNzIsCisgICAgICA0NDMsICA0NDMsICA0MDAsICAzOTEsICAzOTAs
ICAzODksICAzODgsICAzODcsICAzODYsICAzODQsCisgICAgICAzODMsICAzODIsICAzNzksICAz
NzgsICAzNzYsICAzNzMsICAzNzEsICAzNzAsICAzNjksICAzNjcsCisgICAgICAzNjYsICAzNjUs
ICAzNjIsICAzNjEsICAzNjAsICAzNTksICAzNTgsICAzNTcsICAzNTYsICAzNTUsCisgICAgICAz
NDksICAzNDYsICAzNDMsICAzNDIsICAzNDEsICAzNDAsICAzMzksICAzMzcsICAzMzUsICAzMzQs
CisKKyAgICAgIDMzMywgIDMzMiwgIDMzMCwgIDMyOSwgIDMyNywgIDMyNSwgIDMyNCwgIDMyMywg
IDMyMiwgIDMyMSwKKyAgICAgIDMyMCwgIDMxOSwgIDMxOCwgIDMxNiwgIDMxNSwgIDMxNCwgIDMx
MywgIDMxMiwgIDMxMSwgIDMxMCwKKyAgICAgIDMwOSwgIDMwOCwgIDMwNCwgIDMwMywgIDMwMCwg
IDI4OSwgIDI4NSwgIDI4NCwgIDI4MywgIDI4MiwKKyAgICAgIDI3NSwgIDI3NCwgIDI3MywgIDI2
OCwgIDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2MCwKKyAgICAgIDI1OSwgIDI1OCwg
IDI1NywgIDI1NiwgIDI1NSwgIDI1NCwgIDI1MywgIDI1MiwgIDI1MSwgIDI1MCwKKyAgICAgIDI0
OSwgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDIzOCwgIDIzNywgIDIzNiwgIDIzNSwgIDIzNCwK
KyAgICAgIDIzMiwgIDIyOCwgIDIyNiwgIDIyNSwgIDIyNCwgIDIyMCwgIDIxOSwgIDIxOCwgIDIx
NywgIDIxNiwKKyAgICAgIDIxNSwgIDIxMiwgIDIxMCwgIDIwNSwgIDIwNCwgIDIwMywgIDIwMSwg
IDIwMCwgIDE5OSwgIDE5NywKKyAgICAgIDE5NiwgIDE5NSwgIDE5NCwgIDE5MywgIDE5MiwgIDE5
MSwgIDE5MCwgIDE4OSwgIDE4OCwgIDE4NywKKyAgICAgIDE4NiwgIDE4NSwgIDE4NCwgIDE4Mywg
IDE4MiwgIDE4MSwgIDE4MCwgIDE3OSwgIDE3NywgIDE3NiwKKworICAgICAgMTc1LCAgMTc0LCAg
MTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LCAgMTY3LCAgMTY2LAorICAgICAgMTY1
LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTU4LCAgMTU3LCAgMTU2LCAgMTU1LAor
ICAgICAgMTU0LCAgMTUzLCAgMTUxLCAgMTUwLCAgMTQ5LCAgMTQ4LCAgMTQ3LCAgMTQ2LCAgMTM0
LCAgMTMyLAorICAgICAgMTMxLCAgMTMwLCAgMTI4LCAgMTI3LCAgMTI2LCAgMTI1LCAgMTI0LCAg
MTIzLCAgMTIxLCAgMTIwLAorICAgICAgMTE5LCAgMTE4LCAgMTE3LCAgMTE2LCAgMTE1LCAgMTE0
LCAgMTEzLCAgMTEyLCAgMTExLCAgMTEwLAorICAgICAgMTA4LCAgMTA1LCAgMTA0LCAgMTAzLCAg
MTAyLCAgMTAxLCAgMTAwLCAgIDk4LCAgIDk3LCAgIDk2LAorICAgICAgIDk1LCAgIDk0LCAgIDkz
LCAgIDkyLCAgIDkxLCAgIDkwLCAgIDg5LCAgIDg4LCAgIDg3LCAgIDg2LAorICAgICAgIDg1LCAg
IDg0LCAgIDgzLCAgIDgyLCAgIDc4LCAgIDc0LCAgIDQ5LCAgIDQ0LCAgIDQyLCAgIDM5LAorICAg
ICAgIDM2LCAgIDIzLCAgIDIwLCAgIDE3LCAgIDEyLCAgICA3LCAgICAzLCAgNDQyLCAgNDQyLCAg
NDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLCAgNDQyLAorCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAg
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIKICAgICB9IDsKIAogLyogVGFi
bGUgb2YgYm9vbGVhbnMsIHRydWUgaWYgcnVsZSBjb3VsZCBtYXRjaCBlb2wuICovCi1zdGF0aWMg
eXljb25zdCBmbGV4X2ludDMyX3QgeXlfcnVsZV9jYW5fbWF0Y2hfZW9sWzE1Nl0gPQorc3RhdGlj
IHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X3J1bGVfY2FuX21hdGNoX2VvbFsxNDhdID0KICAgICB7
ICAgMCwKLTAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIAorMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwg
MCwgICAgIH07CisgICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgICAgIH07CiAKIC8qIFRoZSBp
bnRlbnQgYmVoaW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB0aGF0IGl0J2xsIGNhdGNoCiAgKiBhbnkg
dXNlcyBvZiBSRUpFQ1Qgd2hpY2ggZmxleCBtaXNzZWQuCkBAIC04MTcsNyArNzkyLDEwIEBAIFdI
SUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEgd2FybmluZyhk
aXNhYmxlIDogNDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZhbC0+
bGV4LmxpbmUgPSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9maWxlID0geXlsbG9jLT5s
YXN0X2ZpbGUgPSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGxvYy0+
bGFzdF9saW5lID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1h
eF9zaXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5c2Nh
bm5lcik7CiAKQEAgLTgyNiw4ICs4MDQsNiBAQCBzdGF0aWMgaW50IGNoZWNrX3R5cGUoeXlzY2Fu
X3QgeXlzY2FubmVyCiBzdGF0aWMgaW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2FubmVy
KTsKIAogI2RlZmluZSBJTklUSUFMIDAKLSNkZWZpbmUgQ09NTUVOVCAxCi0jZGVmaW5lIEZJRUxE
UyAyCiAKICNkZWZpbmUgWVlfRVhUUkFfVFlQRSBUUGFyc2VDb250ZXh0KgogCkBAIC04NjUsNiAr
ODQxLDggQEAgc3RydWN0IHl5Z3V0c190CiAKICAgICBZWVNUWVBFICogeXlsdmFsX3I7CiAKKyAg
ICBZWUxUWVBFICogeXlsbG9jX3I7CisKICAgICB9OyAvKiBlbmQgc3RydWN0IHl5Z3V0c190ICov
CiAKIHN0YXRpYyBpbnQgeXlfaW5pdF9nbG9iYWxzICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKQEAg
LTg3Myw2ICs4NTEsOCBAQCBzdGF0aWMgaW50IHl5X2luaXRfZ2xvYmFscyAoeXlzY2FuX3QgeXlz
CiAgICAgICogZnJvbSBiaXNvbiBvdXRwdXQgaW4gc2VjdGlvbiAxLiovCiAgICAgIyAgICBkZWZp
bmUgeXlsdmFsIHl5Zy0+eXlsdmFsX3IKICAgICAKKyAgICAjICAgIGRlZmluZSB5eWxsb2MgeXln
LT55eWxsb2NfcgorICAgIAogaW50IHl5bGV4X2luaXQgKHl5c2Nhbl90KiBzY2FubmVyKTsKIAog
aW50IHl5bGV4X2luaXRfZXh0cmEgKFlZX0VYVFJBX1RZUEUgdXNlcl9kZWZpbmVkLHl5c2Nhbl90
KiBzY2FubmVyKTsKQEAgLTkxMCw2ICs4OTAsMTAgQEAgWVlTVFlQRSAqIHl5Z2V0X2x2YWwgKHl5
c2Nhbl90IHl5c2Nhbm5lcgogCiB2b2lkIHl5c2V0X2x2YWwgKFlZU1RZUEUgKiB5eWx2YWxfcGFy
YW0gLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisgICAgICAgWVlMVFlQRSAqeXlnZXRfbGxvYyAo
eXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAgCisgICAgICAgIHZvaWQgeXlzZXRfbGxvYyAoWVlM
VFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAgCiAvKiBNYWNy
b3MgYWZ0ZXIgdGhpcyBwb2ludCBjYW4gYWxsIGJlIG92ZXJyaWRkZW4gYnkgdXNlciBkZWZpbml0
aW9ucyBpbgogICogc2VjdGlvbiAxLgogICovCkBAIC05NDAsMTIgKzkyNCw2IEBAIHN0YXRpYyBp
bnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCiAjZW5kaWYKIAotICAgIHN0YXRpYyB2
b2lkIHl5X3B1c2hfc3RhdGUgKGludCBuZXdfc3RhdGUgLHl5c2Nhbl90IHl5c2Nhbm5lcik7Ci0g
ICAgCi0gICAgc3RhdGljIHZvaWQgeXlfcG9wX3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsK
LSAgICAKLSAgICBzdGF0aWMgaW50IHl5X3RvcF9zdGF0ZSAoeXlzY2FuX3QgeXlzY2FubmVyICk7
Ci0gICAgCiAvKiBBbW91bnQgb2Ygc3R1ZmYgdG8gc2x1cnAgdXAgd2l0aCBlYWNoIHJlYWQuICov
CiAjaWZuZGVmIFlZX1JFQURfQlVGX1NJWkUKICNkZWZpbmUgWVlfUkVBRF9CVUZfU0laRSA4MTky
CkBAIC0xMDIyLDEwICsxMDAwLDEwIEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nh
bm5lciApOwogI2RlZmluZSBZWV9ERUNMX0lTX09VUlMgMQogCiBleHRlcm4gaW50IHl5bGV4IFwK
LSAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFtICx5eXNjYW5fdCB5eXNjYW5u
ZXIpOworICAgICAgICAgICAgICAgKFlZU1RZUEUgKiB5eWx2YWxfcGFyYW0sWVlMVFlQRSAqIHl5
bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyKTsKIAogI2RlZmluZSBZWV9ERUNMIGludCB5
eWxleCBcCi0gICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSAsIHl5c2Nhbl90
IHl5c2Nhbm5lcikKKyAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFtLCBZWUxU
WVBFICogeXlsbG9jX3BhcmFtICwgeXlzY2FuX3QgeXlzY2FubmVyKQogI2VuZGlmIC8qICFZWV9E
RUNMICovCiAKIC8qIENvZGUgZXhlY3V0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHJ1bGUs
IGFmdGVyIHl5dGV4dCBhbmQgeXlsZW5nCkBAIC0xMDUyLDEyICsxMDMwLDEwIEBAIFlZX0RFQ0wK
IAlyZWdpc3RlciBpbnQgeXlfYWN0OwogICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1
Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKIAotICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQgPSB5
eWV4dHJhOwotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMgKi8KLQogICAgIHl5bHZhbCA9
IHl5bHZhbF9wYXJhbTsKIAorICAgIHl5bGxvYyA9IHl5bGxvY19wYXJhbTsKKwogCWlmICggIXl5
Zy0+eXlfaW5pdCApCiAJCXsKIAkJeXlnLT55eV9pbml0ID0gMTsKQEAgLTExMDksMTMgKzEwODUs
MTMgQEAgeXlfbWF0Y2g6CiAJCQl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3Rh
dGVdICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQkJewogCQkJCXl5X2N1cnJlbnRf
c3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCQkJaWYgKCB5eV9jdXJy
ZW50X3N0YXRlID49IDQ1OSApCisJCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ0MyApCiAJ
CQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJCX0KIAkJCXl5X2N1
cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25l
ZCBpbnQpIHl5X2NdOwogCQkJKyt5eV9jcDsKIAkJCX0KLQkJd2hpbGUgKCB5eV9jdXJyZW50X3N0
YXRlICE9IDQ1OCApOworCQl3aGlsZSAoIHl5X2N1cnJlbnRfc3RhdGUgIT0gNDQyICk7CiAJCXl5
X2NwID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19jcG9zOwogCQl5eV9jdXJyZW50X3N0YXRlID0g
eXlnLT55eV9sYXN0X2FjY2VwdGluZ19zdGF0ZTsKIApAQCAtMTE0OSwxOTggKzExMjUsMTk5IEBA
IGRvX2FjdGlvbjoJLyogVGhpcyBsYWJlbCBpcyB1c2VkIG9ubHkgdG8KIAogY2FzZSAxOgogWVlf
UlVMRV9TRVRVUAotOworeyByZXR1cm4gSU5WQVJJQU5UOyB9CiAJWVlfQlJFQUsKLS8qIE11bHRp
LWxpbmUgY29tbWVudHMgKi8KIGNhc2UgMjoKIFlZX1JVTEVfU0VUVVAKLXsgeXlfcHVzaF9zdGF0
ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9Cit7IHJldHVybiBISUdIX1BSRUNJU0lPTjsgfQogCVlZ
X0JSRUFLCiBjYXNlIDM6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBNRURJVU1fUFJFQ0lTSU9O
OyB9CisJWVlfQlJFQUsKIGNhc2UgNDoKLS8qIHJ1bGUgNCBjYW4gbWF0Y2ggZW9sICovCiBZWV9S
VUxFX1NFVFVQCi07Cit7IHJldHVybiBMT1dfUFJFQ0lTSU9OOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
NToKIFlZX1JVTEVfU0VUVVAKLXsgeXlfcG9wX3N0YXRlKHl5c2Nhbm5lcik7IH0KK3sgcmV0dXJu
IFBSRUNJU0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDY6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
bihJTlZBUklBTlQpOyB9Cit7IHJldHVybiBBVFRSSUJVVEU7IH0KIAlZWV9CUkVBSwogY2FzZSA3
OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Cit7IHJldHVybiBD
T05TVF9RVUFMOyB9CiAJWVlfQlJFQUsKIGNhc2UgODoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJu
KE1FRElVTV9QUkVDSVNJT04pOyB9Cit7IHJldHVybiBVTklGT1JNOyB9CiAJWVlfQlJFQUsKIGNh
c2UgOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKExPV19QUkVDSVNJT04pOyB9Cit7IHJldHVy
biBWQVJZSU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
bihQUkVDSVNJT04pOyB9Cit7IHJldHVybiBCUkVBSzsgfQogCVlZX0JSRUFLCiBjYXNlIDExOgog
WVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQVRUUklCVVRFKTsgfQoreyByZXR1cm4gQ09OVElOVUU7
IH0KIAlZWV9CUkVBSwogY2FzZSAxMjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKENPTlNUX1FV
QUwpOyB9Cit7IHJldHVybiBETzsgfQogCVlZX0JSRUFLCiBjYXNlIDEzOgogWVlfUlVMRV9TRVRV
UAoteyByZXR1cm4oVU5JRk9STSk7IH0KK3sgcmV0dXJuIEZPUjsgfQogCVlZX0JSRUFLCiBjYXNl
IDE0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oVkFSWUlORyk7IH0KK3sgcmV0dXJuIFdISUxF
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTU6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihCUkVBSyk7
IH0KK3sgcmV0dXJuIElGOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTY6CiBZWV9SVUxFX1NFVFVQCi17
IHJldHVybihDT05USU5VRSk7IH0KK3sgcmV0dXJuIEVMU0U7IH0KIAlZWV9CUkVBSwogY2FzZSAx
NzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKERPKTsgfQoreyByZXR1cm4gSU5fUVVBTDsgfQog
CVlZX0JSRUFLCiBjYXNlIDE4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oRk9SKTsgfQoreyBy
ZXR1cm4gT1VUX1FVQUw7IH0KIAlZWV9CUkVBSwogY2FzZSAxOToKIFlZX1JVTEVfU0VUVVAKLXsg
cmV0dXJuKFdISUxFKTsgfQoreyByZXR1cm4gSU5PVVRfUVVBTDsgfQogCVlZX0JSRUFLCiBjYXNl
IDIwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSUYpOyB9Cit7IHJldHVybiBGTE9BVF9UWVBF
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMjE6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihFTFNFKTsg
fQoreyByZXR1cm4gSU5UX1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAyMjoKIFlZX1JVTEVfU0VU
VVAKLXsgcmV0dXJuKElOX1FVQUwpOyB9Cit7IHJldHVybiBWT0lEX1RZUEU7IH0KIAlZWV9CUkVB
SwogY2FzZSAyMzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKE9VVF9RVUFMKTsgfQoreyByZXR1
cm4gQk9PTF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjQ6CiBZWV9SVUxFX1NFVFVQCi17IHJl
dHVybihJTk9VVF9RVUFMKTsgfQoreyB5eWx2YWwtPmxleC5iID0gdHJ1ZTsgIHJldHVybiBCT09M
Q09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAyNToKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEZMT0FUX1RZUEUpOyB9Cit7IHl5bHZhbC0+
bGV4LmIgPSBmYWxzZTsgcmV0dXJuIEJPT0xDT05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDI2
OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4o
SU5UX1RZUEUpOyB9Cit7IHJldHVybiBESVNDQVJEOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjc6CiBZ
WV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihWT0lE
X1RZUEUpOyB9Cit7IHJldHVybiBSRVRVUk47IH0KIAlZWV9CUkVBSwogY2FzZSAyODoKIFlZX1JV
TEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEJPT0xfVFlQ
RSk7IH0KK3sgcmV0dXJuIE1BVFJJWDI7IH0KIAlZWV9CUkVBSwogY2FzZSAyOToKIFlZX1JVTEVf
U0VUVVAKLXsgeXlsdmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4oQk9PTENPTlNUQU5UKTsgfQor
eyByZXR1cm4gTUFUUklYMzsgfQogCVlZX0JSRUFLCiBjYXNlIDMwOgogWVlfUlVMRV9TRVRVUAot
eyB5eWx2YWwtPmxleC5iID0gZmFsc2U7IHJldHVybihCT09MQ09OU1RBTlQpOyB9Cit7IHJldHVy
biBNQVRSSVg0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzE6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
bihESVNDQVJEKTsgfQoreyByZXR1cm4gVkVDMjsgfQogCVlZX0JSRUFLCiBjYXNlIDMyOgogWVlf
UlVMRV9TRVRVUAoteyByZXR1cm4oUkVUVVJOKTsgfQoreyByZXR1cm4gVkVDMzsgfQogCVlZX0JS
RUFLCiBjYXNlIDMzOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0
cnVlOyByZXR1cm4oTUFUUklYMik7IH0KK3sgcmV0dXJuIFZFQzQ7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAzNDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuKE1BVFJJWDMpOyB9Cit7IHJldHVybiBJVkVDMjsgfQogCVlZX0JSRUFLCiBjYXNlIDM1Ogog
WVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFU
UklYNCk7IH0KK3sgcmV0dXJuIElWRUMzOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzY6CiBZWV9SVUxF
X1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDMik7IH0K
K3sgcmV0dXJuIElWRUM0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzc6CiBZWV9SVUxFX1NFVFVQCi17
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDMyk7IH0KK3sgcmV0dXJu
IEJWRUMyOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzg6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KK3sgcmV0dXJuIEJWRUMzOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMzk6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVy
VHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzIpOyB9Cit7IHJldHVybiBCVkVDNDsgfQogCVlZX0JS
RUFLCiBjYXNlIDQwOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0
cnVlOyByZXR1cm4gKElWRUMzKTsgfQoreyByZXR1cm4gU0FNUExFUjJEOyB9CiAJWVlfQlJFQUsK
IGNhc2UgNDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7
IHJldHVybiAoSVZFQzQpOyB9Cit7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQogCVlZX0JSRUFLCiBj
YXNlIDQyOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyBy
ZXR1cm4gKEJWRUMyKTsgfQoreyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KIAlZWV9C
UkVBSwogY2FzZSA0MzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
dHJ1ZTsgcmV0dXJuIChCVkVDMyk7IH0KK3sgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAlZWV9C
UkVBSwogY2FzZSA0NDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
dHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KK3sgcmV0dXJuIFNUUlVDVDsgfQogCVlZX0JSRUFLCiBj
YXNlIDQ1OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyBy
ZXR1cm4gU0FNUExFUjJEOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0K
IAlZWV9CUkVBSwogY2FzZSA0NjoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJDVUJFOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3Jk
KHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NzoKIFlZX1JVTEVfU0VUVVAKLXsgY29u
dGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJfRVhURVJOQUxfT0VTOyB9
Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0
ODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJu
IFNBTVBMRVIyRFJFQ1Q7IH0KK3sgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQog
CVlZX0JSRUFLCiBjYXNlIDQ5OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5
cGUgPSB0cnVlOyByZXR1cm4oU1RSVUNUKTsgfQoreyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNj
YW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNTA6CiBZWV9SVUxFX1NFVFVQCkBAIC0xNTE2LDI2
NiArMTQ5MywyMjggQEAgWVlfUlVMRV9TRVRVUAogCVlZX0JSRUFLCiBjYXNlIDkzOgogWVlfUlVM
RV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7CisgICB5eWx2
YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAKKyAgIHJldHVybiBjaGVj
a190eXBlKHl5c2Nhbm5lcik7Cit9CiAJWVlfQlJFQUsKIGNhc2UgOTQ6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KK3sgeXlsdmFsLT5sZXguaSA9
IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09OU1RB
TlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5NToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIHJlc2Vy
dmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50
PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05TVEFOVDsgfQogCVlZX0JSRUFL
CiBjYXNlIDk2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5u
ZXIpOyB9Cit7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQs
IDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgOTc6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KK3sgeXlsdmFs
LT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZM
T0FUQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5ODoKIFlZX1JVTEVfU0VUVVAKLXsKLSAg
IHl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5nKHl5dGV4dCk7IAotICAgcmV0dXJu
IGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKLX0KK3sgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0
PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KIAlZWV9C
UkVBSwogY2FzZSA5OToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19j
YXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Cit7
IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJl
dHVybiBGTE9BVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAwOgogWVlfUlVMRV9TRVRV
UAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAw
KSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIEFERF9BU1NJR047IH0KIAlZWV9C
UkVBSwogY2FzZSAxMDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmVycm9yKHl5bGluZW5v
LCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+cmVjb3ZlcigpOyBy
ZXR1cm4gMDt9Cit7IHJldHVybiBTVUJfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAyOgog
WVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2wo
eXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIE1VTF9BU1NJ
R047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDM6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4
LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENP
TlNUQU5UKTsgfQoreyByZXR1cm4gRElWX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEwNDoK
IFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9m
X2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Cit7IHJldHVybiBNT0RfQVNT
SUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA1OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxl
eC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4oRkxPQVRD
T05TVEFOVCk7IH0KK3sgcmV0dXJuIExFRlRfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA2
OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEFERF9BU1NJR04pOyB9Cit7IHJldHVybiBSSUdI
VF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDc6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1
cm4oU1VCX0FTU0lHTik7IH0KK3sgcmV0dXJuIEFORF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxMDg6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KK3sgcmV0dXJu
IFhPUl9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDk6CiBZWV9SVUxFX1NFVFVQCi17ICBy
ZXR1cm4oRElWX0FTU0lHTik7IH0KK3sgcmV0dXJuIE9SX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBj
YXNlIDExMDoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihNT0RfQVNTSUdOKTsgfQoreyByZXR1
cm4gSU5DX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTExOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0
dXJuKExFRlRfQVNTSUdOKTsgfQoreyByZXR1cm4gREVDX09QOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
MTEyOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFJJR0hUX0FTU0lHTik7IH0KK3sgcmV0dXJu
IEFORF9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExMzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVy
bihBTkRfQVNTSUdOKTsgfQoreyByZXR1cm4gT1JfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTQ6
CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oWE9SX0FTU0lHTik7IH0KK3sgcmV0dXJuIFhPUl9P
UDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihPUl9B
U1NJR04pOyB9Cit7IHJldHVybiBMRV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNjoKIFlZX1JV
TEVfU0VUVVAKLXsgIHJldHVybihJTkNfT1ApOyB9Cit7IHJldHVybiBHRV9PUDsgfQogCVlZX0JS
RUFLCiBjYXNlIDExNzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihERUNfT1ApOyB9Cit7IHJl
dHVybiBFUV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExODoKIFlZX1JVTEVfU0VUVVAKLXsgIHJl
dHVybihBTkRfT1ApOyB9Cit7IHJldHVybiBORV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExOToK
IFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihPUl9PUCk7IH0KK3sgcmV0dXJuIExFRlRfT1A7IH0K
IAlZWV9CUkVBSwogY2FzZSAxMjA6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oWE9SX09QKTsg
fQoreyByZXR1cm4gUklHSFRfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjE6CiBZWV9SVUxFX1NF
VFVQCi17ICByZXR1cm4oTEVfT1ApOyB9Cit7IHJldHVybiBTRU1JQ09MT047IH0KIAlZWV9CUkVB
SwogY2FzZSAxMjI6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oR0VfT1ApOyB9Cit7IHJldHVy
biBMRUZUX0JSQUNFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIzOgogWVlfUlVMRV9TRVRVUAoteyAg
cmV0dXJuKEVRX09QKTsgfQoreyByZXR1cm4gUklHSFRfQlJBQ0U7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxMjQ6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTkVfT1ApOyB9Cit7IHJldHVybiBDT01N
QTsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihMRUZU
X09QKTsgfQoreyByZXR1cm4gQ09MT047IH0KIAlZWV9CUkVBSwogY2FzZSAxMjY6CiBZWV9SVUxF
X1NFVFVQCi17ICByZXR1cm4oUklHSFRfT1ApOyB9Cit7IHJldHVybiBFUVVBTDsgfQogCVlZX0JS
RUFLCiBjYXNlIDEyNzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
ZmFsc2U7IHJldHVybihTRU1JQ09MT04pOyB9Cit7IHJldHVybiBMRUZUX1BBUkVOOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMTI4OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSBmYWxzZTsgcmV0dXJuKExFRlRfQlJBQ0UpOyB9Cit7IHJldHVybiBSSUdIVF9QQVJFTjsgfQog
CVlZX0JSRUFLCiBjYXNlIDEyOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJJR0hUX0JSQUNF
KTsgfQoreyByZXR1cm4gTEVGVF9CUkFDS0VUOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMwOgogWVlf
UlVMRV9TRVRVUAoteyBpZiAoY29udGV4dC0+aW5UeXBlUGFyZW4pIGNvbnRleHQtPmxleEFmdGVy
VHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Cit7IHJldHVybiBSSUdIVF9CUkFDS0VUOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTMxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQ09MT04pOyB9
Cit7IHJldHVybiBET1Q7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzI6CiBZWV9SVUxFX1NFVFVQCi17
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oRVFVQUwpOyB9Cit7IHJldHVy
biBCQU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMzOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0
LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgY29udGV4dC0+aW5UeXBlUGFyZW4gPSB0cnVlOyByZXR1
cm4oTEVGVF9QQVJFTik7IH0KK3sgcmV0dXJuIERBU0g7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzQ6
CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmluVHlwZVBhcmVuID0gZmFsc2U7IHJldHVybihS
SUdIVF9QQVJFTik7IH0KK3sgcmV0dXJuIFRJTERFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM1Ogog
WVlfUlVMRV9TRVRVUAoteyByZXR1cm4oTEVGVF9CUkFDS0VUKTsgfQoreyByZXR1cm4gUExVUzsg
fQogCVlZX0JSRUFLCiBjYXNlIDEzNjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJJR0hUX0JS
QUNLRVQpOyB9Cit7IHJldHVybiBTVEFSOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM3OgogWVlfUlVM
RV9TRVRVUAoteyBCRUdJTihGSUVMRFMpOyAgcmV0dXJuKERPVCk7IH0KK3sgcmV0dXJuIFNMQVNI
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQkFORyk7
IH0KK3sgcmV0dXJuIFBFUkNFTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzk6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybihEQVNIKTsgfQoreyByZXR1cm4gTEVGVF9BTkdMRTsgfQogCVlZX0JSRUFL
CiBjYXNlIDE0MDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFRJTERFKTsgfQoreyByZXR1cm4g
UklHSFRfQU5HTEU7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDE6CiBZWV9SVUxFX1NFVFVQCi17IHJl
dHVybihQTFVTKTsgfQoreyByZXR1cm4gVkVSVElDQUxfQkFSOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
MTQyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oU1RBUik7IH0KK3sgcmV0dXJuIENBUkVUOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTQzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oU0xBU0gpOyB9
Cit7IHJldHVybiBBTVBFUlNBTkQ7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDQ6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybihQRVJDRU5UKTsgfQoreyByZXR1cm4gUVVFU1RJT047IH0KIAlZWV9CUkVB
SwogY2FzZSAxNDU6CisvKiBydWxlIDE0NSBjYW4gbWF0Y2ggZW9sICovCiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybihMRUZUX0FOR0xFKTsgfQotCVlZX0JSRUFLCi1jYXNlIDE0NjoKLVlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKFJJR0hUX0FOR0xFKTsgfQotCVlZX0JSRUFLCi1jYXNlIDE0NzoKLVlZ
X1JVTEVfU0VUVVAKLXsgcmV0dXJuKFZFUlRJQ0FMX0JBUik7IH0KLQlZWV9CUkVBSwotY2FzZSAx
NDg6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihDQVJFVCk7IH0KLQlZWV9CUkVBSwotY2FzZSAx
NDk6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihBTVBFUlNBTkQpOyB9Ci0JWVlfQlJFQUsKLWNh
c2UgMTUwOgotWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUVVFU1RJT04pOyB9Ci0JWVlfQlJFQUsK
LWNhc2UgMTUxOgotWVlfUlVMRV9TRVRVUAoteyAKLSAgICBCRUdJTihJTklUSUFMKTsKLSAgICB5
eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAKLSAgICByZXR1cm4g
RklFTERfU0VMRUNUSU9OOwotfQotCVlZX0JSRUFLCi1jYXNlIDE1MjoKLVlZX1JVTEVfU0VUVVAK
LXt9Ci0JWVlfQlJFQUsKLWNhc2UgMTUzOgotLyogcnVsZSAxNTMgY2FuIG1hdGNoIGVvbCAqLwot
WVlfUlVMRV9TRVRVUAoteyAgfQoreyB9CiAJWVlfQlJFQUsKIGNhc2UgWVlfU1RBVEVfRU9GKElO
SVRJQUwpOgotY2FzZSBZWV9TVEFURV9FT0YoQ09NTUVOVCk6Ci1jYXNlIFlZX1NUQVRFX0VPRihG
SUVMRFMpOgoteyBjb250ZXh0LT5BZnRlckVPRiA9IHRydWU7IHl5dGVybWluYXRlKCk7IH0KK3sg
eXl0ZXJtaW5hdGUoKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE1NDoKK2Nhc2UgMTQ2OgogWVlfUlVM
RV9TRVRVUAoteyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBjaGFyIiwgeXl0
ZXh0LCAiIik7IHJldHVybiAwOyB9Cit7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAJWVlf
QlJFQUsKLWNhc2UgMTU1OgorY2FzZSAxNDc6CiBZWV9SVUxFX1NFVFVQCiBFQ0hPOwogCVlZX0JS
RUFLCkBAIC0yMDcxLDcgKzIwMTAsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAo
eXlzY2FuX3QgCiAJCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyB5
eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJCXsKIAkJCXl5X2N1cnJlbnRfc3RhdGUgPSAo
aW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUg
Pj0gNDU5ICkKKwkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NDMgKQogCQkJCXl5X2MgPSB5
eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJfQogCQl5eV9jdXJyZW50X3N0YXRlID0g
eXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsK
QEAgLTIxMDAsMTEgKzIwMzksMTEgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5
c2Nhbl90IAogCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyB5eV9j
XSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJewogCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkg
eXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gNDU5
ICkKKwkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ0MyApCiAJCQl5eV9jID0geXlfbWV0YVso
dW5zaWduZWQgaW50KSB5eV9jXTsKIAkJfQogCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlf
YmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwotCXl5X2lzX2ph
bSA9ICh5eV9jdXJyZW50X3N0YXRlID09IDQ1OCk7CisJeXlfaXNfamFtID0gKHl5X2N1cnJlbnRf
c3RhdGUgPT0gNDQyKTsKIAogCXJldHVybiB5eV9pc19qYW0gPyAwIDogeXlfY3VycmVudF9zdGF0
ZTsKIH0KQEAgLTI1NDgsNDYgKzI0ODcsNiBAQCBZWV9CVUZGRVJfU1RBVEUgeXlfc2Nhbl9ieXRl
cyAgKHl5Y29uc3QgCiAJcmV0dXJuIGI7CiB9CiAKLSAgICBzdGF0aWMgdm9pZCB5eV9wdXNoX3N0
YXRlIChpbnQgIG5ld19zdGF0ZSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBzdHJ1Y3Qg
eXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0JaWYgKCB5eWct
Pnl5X3N0YXJ0X3N0YWNrX3B0ciA+PSB5eWctPnl5X3N0YXJ0X3N0YWNrX2RlcHRoICkKLQkJewot
CQl5eV9zaXplX3QgbmV3X3NpemU7Ci0KLQkJeXlnLT55eV9zdGFydF9zdGFja19kZXB0aCArPSBZ
WV9TVEFSVF9TVEFDS19JTkNSOwotCQluZXdfc2l6ZSA9IHl5Zy0+eXlfc3RhcnRfc3RhY2tfZGVw
dGggKiBzaXplb2YoIGludCApOwotCi0JCWlmICggISB5eWctPnl5X3N0YXJ0X3N0YWNrICkKLQkJ
CXl5Zy0+eXlfc3RhcnRfc3RhY2sgPSAoaW50ICopIHl5YWxsb2MobmV3X3NpemUgLHl5c2Nhbm5l
ciApOwotCi0JCWVsc2UKLQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sgPSAoaW50ICopIHl5cmVhbGxv
Yygodm9pZCAqKSB5eWctPnl5X3N0YXJ0X3N0YWNrLG5ld19zaXplICx5eXNjYW5uZXIgKTsKLQot
CQlpZiAoICEgeXlnLT55eV9zdGFydF9zdGFjayApCi0JCQlZWV9GQVRBTF9FUlJPUiggIm91dCBv
ZiBtZW1vcnkgZXhwYW5kaW5nIHN0YXJ0LWNvbmRpdGlvbiBzdGFjayIgKTsKLQkJfQotCi0JeXln
LT55eV9zdGFydF9zdGFja1t5eWctPnl5X3N0YXJ0X3N0YWNrX3B0cisrXSA9IFlZX1NUQVJUOwot
Ci0JQkVHSU4obmV3X3N0YXRlKTsKLX0KLQotICAgIHN0YXRpYyB2b2lkIHl5X3BvcF9zdGF0ZSAg
KHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3Ry
dWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0JaWYgKCAtLXl5Zy0+eXlfc3RhcnRfc3RhY2tfcHRy
IDwgMCApCi0JCVlZX0ZBVEFMX0VSUk9SKCAic3RhcnQtY29uZGl0aW9uIHN0YWNrIHVuZGVyZmxv
dyIgKTsKLQotCUJFR0lOKHl5Zy0+eXlfc3RhcnRfc3RhY2tbeXlnLT55eV9zdGFydF9zdGFja19w
dHJdKTsKLX0KLQotICAgIHN0YXRpYyBpbnQgeXlfdG9wX3N0YXRlICAoeXlzY2FuX3QgeXlzY2Fu
bmVyKQotewotICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5
c2Nhbm5lcjsKLQlyZXR1cm4geXlnLT55eV9zdGFydF9zdGFja1t5eWctPnl5X3N0YXJ0X3N0YWNr
X3B0ciAtIDFdOwotfQotCiAjaWZuZGVmIFlZX0VYSVRfRkFJTFVSRQogI2RlZmluZSBZWV9FWElU
X0ZBSUxVUkUgMgogI2VuZGlmCkBAIC0yNzczLDYgKzI2NzIsMTggQEAgdm9pZCB5eXNldF9sdmFs
IChZWVNUWVBFICogIHl5bHZhbF9wYXJhbQogICAgIHl5bHZhbCA9IHl5bHZhbF9wYXJhbTsKIH0K
IAorWVlMVFlQRSAqeXlnZXRfbGxvYyAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKK3sKKyAgICBzdHJ1
Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisgICAgcmV0
dXJuIHl5bGxvYzsKK30KKyAgICAKK3ZvaWQgeXlzZXRfbGxvYyAoWVlMVFlQRSAqICB5eWxsb2Nf
cGFyYW0gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0IHl5Z3V0c190ICogeXln
ID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAgIHl5bGxvYyA9IHl5bGxvY19wYXJh
bTsKK30KKyAgICAKIC8qIFVzZXItdmlzaWJsZSBBUEkgKi8KIAogLyogeXlsZXhfaW5pdCBpcyBz
cGVjaWFsIGJlY2F1c2UgaXQgY3JlYXRlcyB0aGUgc2Nhbm5lciBpdHNlbGYsIHNvIGl0IGlzCkBA
IC0yOTU0LDcgKzI4NjUsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlf
c2l6CiAgICAgeXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8g
MCA6IHRva2VuLnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAg
bWVtY3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAgIHl5c2V0X2xpbmVubyhF
bmNvZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24ubGluZSks
eXlzY2FubmVyKTsKKyAgICB5eXNldF9jb2x1bW4odG9rZW4ubG9jYXRpb24uZmlsZSx5eXNjYW5u
ZXIpOworICAgIHl5c2V0X2xpbmVubyh0b2tlbi5sb2NhdGlvbi5saW5lLHl5c2Nhbm5lcik7CiAK
ICAgICBpZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5wdXQg
YnVmZmVyIG92ZXJmbG93Iik7CkBAIC0yOTY4LDEyICsyODgwLDEwIEBAIGludCBjaGVja190eXBl
KHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIAogICAgIGludCB0b2tlbiA9IElERU5USUZJRVI7
CiAgICAgVFN5bWJvbCogc3ltYm9sID0geXlleHRyYS0+c3ltYm9sVGFibGUuZmluZCh5eXRleHQp
OwotICAgIGlmICh5eWV4dHJhLT5sZXhBZnRlclR5cGUgPT0gZmFsc2UgJiYgc3ltYm9sICYmIHN5
bWJvbC0+aXNWYXJpYWJsZSgpKSB7CisgICAgaWYgKHN5bWJvbCAmJiBzeW1ib2wtPmlzVmFyaWFi
bGUoKSkgewogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8VFZhcmlh
YmxlKj4oc3ltYm9sKTsKLSAgICAgICAgaWYgKHZhcmlhYmxlLT5pc1VzZXJUeXBlKCkpIHsKLSAg
ICAgICAgICAgIHl5ZXh0cmEtPmxleEFmdGVyVHlwZSA9IHRydWU7CisgICAgICAgIGlmICh2YXJp
YWJsZS0+aXNVc2VyVHlwZSgpKQogICAgICAgICAgICAgdG9rZW4gPSBUWVBFX05BTUU7Ci0gICAg
ICAgIH0KICAgICB9CiAgICAgeXlsdmFsLT5sZXguc3ltYm9sID0gc3ltYm9sOwogICAgIHJldHVy
biB0b2tlbjsKQEAgLTI5ODIsMjIgKzI4OTIsMTEgQEAgaW50IGNoZWNrX3R5cGUoeXlzY2FuX3Qg
eXlzY2FubmVyKSB7CiBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKICAg
ICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSB5eXNjYW5uZXI7CiAK
LSAgICB5eWV4dHJhLT5lcnJvcih5eWxpbmVubywgIklsbGVnYWwgdXNlIG9mIHJlc2VydmVkIHdv
cmQiLCB5eXRleHQsICIiKTsKKyAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSWxsZWdhbCB1
c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwgIiIpOwogICAgIHl5ZXh0cmEtPnJlY292ZXIo
KTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IGNoYXIqIHJlYXNvbikgewotICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0
cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPnNjYW5uZXI7Ci0KLSAgICBpZiAoY29udGV4dC0+QWZ0
ZXJFT0YpIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXlsaW5lbm8sIHJlYXNvbiwgInVuZXhw
ZWN0ZWQgRU9GIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXlsaW5l
bm8sIHJlYXNvbiwgeXl0ZXh0KTsKLSAgICB9Ci0gICAgY29udGV4dC0+cmVjb3ZlcigpOwotfQot
CiBpbnQgZ2xzbGFuZ19pbml0aWFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICB5
eXNjYW5fdCBzY2FubmVyID0gTlVMTDsKICAgICBpZiAoeXlsZXhfaW5pdF9leHRyYShjb250ZXh0
LCZzY2FubmVyKSkKQEAgLTMwMjAsOCArMjkxOSw4IEBAIGludCBnbHNsYW5nX2ZpbmFsaXplKFRQ
YXJzZUNvbnRleHQqIGNvbnQKIGludCBnbHNsYW5nX3NjYW4oc2l6ZV90IGNvdW50LCBjb25zdCBj
aGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAogICAgICAgICAgICAgICAg
ICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlyZXN0YXJ0KE5VTEwsY29udGV4dC0+
c2Nhbm5lcik7Ci0gICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJjZUxvYygwLCAxKSxjb250ZXh0
LT5zY2FubmVyKTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNlOworICAgIHl5c2V0X2Nv
bHVtbigwLGNvbnRleHQtPnNjYW5uZXIpOworICAgIHl5c2V0X2xpbmVubygxLGNvbnRleHQtPnNj
YW5uZXIpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBwcmVwcm9jZXNzb3IuCiAgICAgaWYgKCFjb250
ZXh0LT5wcmVwcm9jZXNzb3IuaW5pdChjb3VudCwgc3RyaW5nLCBsZW5ndGgpKQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIu
Y3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvZ2xzbGFuZ190YWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBACiAj
ZGVmaW5lIFlZUFVSRSAxCiAKIC8qIFVzaW5nIGxvY2F0aW9ucy4gICovCi0jZGVmaW5lIFlZTFNQ
X05FRURFRCAwCisjZGVmaW5lIFlZTFNQX05FRURFRCAxCiAKIAogCkBAIC0xMTMsNTIgKzExMyw1
MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0gMzAyLAogICAgICBJTlRDT05TVEFOVCA9IDMwMywK
ICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAotICAgICBGSUVMRF9TRUxFQ1RJT04gPSAzMDUsCi0g
ICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJR0hUX09QID0gMzA3LAotICAgICBJTkNfT1AgPSAz
MDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAgICAgTEVfT1AgPSAzMTAsCi0gICAgIEdFX09QID0g
MzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAgICAgTkVfT1AgPSAzMTMsCi0gICAgIEFORF9PUCA9
IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0gICAgIFhPUl9PUCA9IDMxNiwKLSAgICAgTVVMX0FT
U0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lHTiA9IDMxOCwKLSAgICAgQUREX0FTU0lHTiA9IDMx
OSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwKLSAgICAgTEVGVF9BU1NJR04gPSAzMjEsCi0gICAg
IFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAgQU5EX0FTU0lHTiA9IDMyMywKLSAgICAgWE9SX0FT
U0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdOID0gMzI1LAotICAgICBTVUJfQVNTSUdOID0gMzI2
LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAotICAgICBSSUdIVF9QQVJFTiA9IDMyOCwKLSAgICAg
TEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBSSUdIVF9CUkFDS0VUID0gMzMwLAotICAgICBMRUZU
X0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9CUkFDRSA9IDMzMiwKLSAgICAgRE9UID0gMzMzLAot
ICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09MT04gPSAzMzUsCi0gICAgIEVRVUFMID0gMzM2LAot
ICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAgIEJBTkcgPSAzMzgsCi0gICAgIERBU0ggPSAzMzks
Ci0gICAgIFRJTERFID0gMzQwLAotICAgICBQTFVTID0gMzQxLAotICAgICBTVEFSID0gMzQyLAot
ICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVSQ0VOVCA9IDM0NCwKLSAgICAgTEVGVF9BTkdMRSA9
IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAzNDYsCi0gICAgIFZFUlRJQ0FMX0JBUiA9IDM0NywK
LSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFNUEVSU0FORCA9IDM0OSwKLSAgICAgUVVFU1RJT04g
PSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwKKyAgICAgUklHSFRfT1AgPSAzMDYsCisgICAgIElO
Q19PUCA9IDMwNywKKyAgICAgREVDX09QID0gMzA4LAorICAgICBMRV9PUCA9IDMwOSwKKyAgICAg
R0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0gMzExLAorICAgICBORV9PUCA9IDMxMiwKKyAgICAg
QU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9IDMxNCwKKyAgICAgWE9SX09QID0gMzE1LAorICAg
ICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBESVZfQVNTSUdOID0gMzE3LAorICAgICBBRERfQVNT
SUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdOID0gMzE5LAorICAgICBMRUZUX0FTU0lHTiA9IDMy
MCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIxLAorICAgICBBTkRfQVNTSUdOID0gMzIyLAorICAg
ICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBPUl9BU1NJR04gPSAzMjQsCisgICAgIFNVQl9BU1NJ
R04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4gPSAzMjYsCisgICAgIFJJR0hUX1BBUkVOID0gMzI3
LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgsCisgICAgIFJJR0hUX0JSQUNLRVQgPSAzMjksCisg
ICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAgIFJJR0hUX0JSQUNFID0gMzMxLAorICAgICBET1Qg
PSAzMzIsCisgICAgIENPTU1BID0gMzMzLAorICAgICBDT0xPTiA9IDMzNCwKKyAgICAgRVFVQUwg
PSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMzNiwKKyAgICAgQkFORyA9IDMzNywKKyAgICAgREFT
SCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzksCisgICAgIFBMVVMgPSAzNDAsCisgICAgIFNUQVIg
PSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAorICAgICBQRVJDRU5UID0gMzQzLAorICAgICBMRUZU
X0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9BTkdMRSA9IDM0NSwKKyAgICAgVkVSVElDQUxfQkFS
ID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywKKyAgICAgQU1QRVJTQU5EID0gMzQ4LAorICAgICBR
VUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRpZgogLyogVG9rZW5zLiAgKi8KQEAgLTIwOSw1MiAr
MjA4LDUxIEBACiAjZGVmaW5lIEZMT0FUQ09OU1RBTlQgMzAyCiAjZGVmaW5lIElOVENPTlNUQU5U
IDMwMwogI2RlZmluZSBCT09MQ09OU1RBTlQgMzA0Ci0jZGVmaW5lIEZJRUxEX1NFTEVDVElPTiAz
MDUKLSNkZWZpbmUgTEVGVF9PUCAzMDYKLSNkZWZpbmUgUklHSFRfT1AgMzA3Ci0jZGVmaW5lIElO
Q19PUCAzMDgKLSNkZWZpbmUgREVDX09QIDMwOQotI2RlZmluZSBMRV9PUCAzMTAKLSNkZWZpbmUg
R0VfT1AgMzExCi0jZGVmaW5lIEVRX09QIDMxMgotI2RlZmluZSBORV9PUCAzMTMKLSNkZWZpbmUg
QU5EX09QIDMxNAotI2RlZmluZSBPUl9PUCAzMTUKLSNkZWZpbmUgWE9SX09QIDMxNgotI2RlZmlu
ZSBNVUxfQVNTSUdOIDMxNwotI2RlZmluZSBESVZfQVNTSUdOIDMxOAotI2RlZmluZSBBRERfQVNT
SUdOIDMxOQotI2RlZmluZSBNT0RfQVNTSUdOIDMyMAotI2RlZmluZSBMRUZUX0FTU0lHTiAzMjEK
LSNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMgotI2RlZmluZSBBTkRfQVNTSUdOIDMyMwotI2RlZmlu
ZSBYT1JfQVNTSUdOIDMyNAotI2RlZmluZSBPUl9BU1NJR04gMzI1Ci0jZGVmaW5lIFNVQl9BU1NJ
R04gMzI2Ci0jZGVmaW5lIExFRlRfUEFSRU4gMzI3Ci0jZGVmaW5lIFJJR0hUX1BBUkVOIDMyOAot
I2RlZmluZSBMRUZUX0JSQUNLRVQgMzI5Ci0jZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzMwCi0jZGVm
aW5lIExFRlRfQlJBQ0UgMzMxCi0jZGVmaW5lIFJJR0hUX0JSQUNFIDMzMgotI2RlZmluZSBET1Qg
MzMzCi0jZGVmaW5lIENPTU1BIDMzNAotI2RlZmluZSBDT0xPTiAzMzUKLSNkZWZpbmUgRVFVQUwg
MzM2Ci0jZGVmaW5lIFNFTUlDT0xPTiAzMzcKLSNkZWZpbmUgQkFORyAzMzgKLSNkZWZpbmUgREFT
SCAzMzkKLSNkZWZpbmUgVElMREUgMzQwCi0jZGVmaW5lIFBMVVMgMzQxCi0jZGVmaW5lIFNUQVIg
MzQyCi0jZGVmaW5lIFNMQVNIIDM0MwotI2RlZmluZSBQRVJDRU5UIDM0NAotI2RlZmluZSBMRUZU
X0FOR0xFIDM0NQotI2RlZmluZSBSSUdIVF9BTkdMRSAzNDYKLSNkZWZpbmUgVkVSVElDQUxfQkFS
IDM0NwotI2RlZmluZSBDQVJFVCAzNDgKLSNkZWZpbmUgQU1QRVJTQU5EIDM0OQotI2RlZmluZSBR
VUVTVElPTiAzNTAKKyNkZWZpbmUgTEVGVF9PUCAzMDUKKyNkZWZpbmUgUklHSFRfT1AgMzA2Cisj
ZGVmaW5lIElOQ19PUCAzMDcKKyNkZWZpbmUgREVDX09QIDMwOAorI2RlZmluZSBMRV9PUCAzMDkK
KyNkZWZpbmUgR0VfT1AgMzEwCisjZGVmaW5lIEVRX09QIDMxMQorI2RlZmluZSBORV9PUCAzMTIK
KyNkZWZpbmUgQU5EX09QIDMxMworI2RlZmluZSBPUl9PUCAzMTQKKyNkZWZpbmUgWE9SX09QIDMx
NQorI2RlZmluZSBNVUxfQVNTSUdOIDMxNgorI2RlZmluZSBESVZfQVNTSUdOIDMxNworI2RlZmlu
ZSBBRERfQVNTSUdOIDMxOAorI2RlZmluZSBNT0RfQVNTSUdOIDMxOQorI2RlZmluZSBMRUZUX0FT
U0lHTiAzMjAKKyNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMQorI2RlZmluZSBBTkRfQVNTSUdOIDMy
MgorI2RlZmluZSBYT1JfQVNTSUdOIDMyMworI2RlZmluZSBPUl9BU1NJR04gMzI0CisjZGVmaW5l
IFNVQl9BU1NJR04gMzI1CisjZGVmaW5lIExFRlRfUEFSRU4gMzI2CisjZGVmaW5lIFJJR0hUX1BB
UkVOIDMyNworI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI4CisjZGVmaW5lIFJJR0hUX0JSQUNLRVQg
MzI5CisjZGVmaW5lIExFRlRfQlJBQ0UgMzMwCisjZGVmaW5lIFJJR0hUX0JSQUNFIDMzMQorI2Rl
ZmluZSBET1QgMzMyCisjZGVmaW5lIENPTU1BIDMzMworI2RlZmluZSBDT0xPTiAzMzQKKyNkZWZp
bmUgRVFVQUwgMzM1CisjZGVmaW5lIFNFTUlDT0xPTiAzMzYKKyNkZWZpbmUgQkFORyAzMzcKKyNk
ZWZpbmUgREFTSCAzMzgKKyNkZWZpbmUgVElMREUgMzM5CisjZGVmaW5lIFBMVVMgMzQwCisjZGVm
aW5lIFNUQVIgMzQxCisjZGVmaW5lIFNMQVNIIDM0MgorI2RlZmluZSBQRVJDRU5UIDM0MworI2Rl
ZmluZSBMRUZUX0FOR0xFIDM0NAorI2RlZmluZSBSSUdIVF9BTkdMRSAzNDUKKyNkZWZpbmUgVkVS
VElDQUxfQkFSIDM0NgorI2RlZmluZSBDQVJFVCAzNDcKKyNkZWZpbmUgQU1QRVJTQU5EIDM0OAor
I2RlZmluZSBRVUVTVElPTiAzNDkKIAogCiAKQEAgLTI4NywxMCArMjg1LDEzIEBACiAjaW5jbHVk
ZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCiAKICNkZWZpbmUgWVlFTkFCTEVfTkxTIDAKLSNkZWZp
bmUgWVlMVFlQRV9JU19UUklWSUFMIDEKIAogI2RlZmluZSBZWUxFWF9QQVJBTSBjb250ZXh0LT5z
Y2FubmVyCiAKKyNkZWZpbmUgWVlMVFlQRSBUU291cmNlTG9jCisjZGVmaW5lIFlZTFRZUEVfSVNf
REVDTEFSRUQgMQorCisKIAogLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KICNpZm5kZWYgWVlERUJV
RwpAQCAtMzE1LDcgKzMxNiw2IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogCiB7CiAgICAgc3Ry
dWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgICBUU3RyaW5nICpzdHJpbmc7CiAgICAgICAgICAgICBmbG9hdCBmOwpAQCAtMzI1LDcgKzMy
NSw2IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICBUU3ltYm9sKiBzeW1ib2w7CiAg
ICAgfSBsZXg7CiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAg
ICBUT3BlcmF0b3Igb3A7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRJbnRlcm1Ob2Rl
KiBpbnRlcm1Ob2RlOwpAQCAtMzM5LDggKzMzOCw4IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQog
ICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgICAgICAgICBURnVuY3Rpb24q
IGZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKLSAgICAgICAgICAgIFRU
eXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgIFRUeXBlTGlzdCogdHlwZUxpc3Q7CisgICAg
ICAgICAgICBURmllbGQqIGZpZWxkOworICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0
OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwogfQpAQCAtMzUyLDIxICszNTEsNDEgQEAgdHlw
ZWRlZiB1bmlvbiBZWVNUWVBFCiAjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQogI2VuZGlm
CiAKKyNpZiAhIGRlZmluZWQgWVlMVFlQRSAmJiAhIGRlZmluZWQgWVlMVFlQRV9JU19ERUNMQVJF
RAordHlwZWRlZiBzdHJ1Y3QgWVlMVFlQRQoreworICBpbnQgZmlyc3RfbGluZTsKKyAgaW50IGZp
cnN0X2NvbHVtbjsKKyAgaW50IGxhc3RfbGluZTsKKyAgaW50IGxhc3RfY29sdW1uOworfSBZWUxU
WVBFOworIyBkZWZpbmUgeXlsdHlwZSBZWUxUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdp
dGhkcmF3biAqLworIyBkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisjIGRlZmluZSBZWUxU
WVBFX0lTX1RSSVZJQUwgMQorI2VuZGlmCiAKIAogLyogQ29weSB0aGUgc2Vjb25kIHBhcnQgb2Yg
dXNlciBkZWNsYXJhdGlvbnMuICAqLwogCiAKLWV4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSogeXls
dmFsX3BhcmFtLCB2b2lkKiB5eXNjYW5uZXIpOwotZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOworZXh0ZXJuIGludCB5eWxleChZ
WVNUWVBFKiB5eWx2YWwsIFlZTFRZUEUqIHl5bGxvYywgdm9pZCogeXlzY2FubmVyKTsKK3N0YXRp
YyB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBjaGFyKiByZWFzb24pOwogCi0jZGVmaW5lIEZSQUdfVkVSVF9PTkxZKFMsIEwpIHsgIFwK
LSAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9GUkFHTUVOVF9TSEFERVIgJiYgIFwK
LSAgICAgICAgY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7ICBcCi0g
ICAgICAgIGNvbnRleHQtPmVycm9yKEwsICIgc3VwcG9ydGVkIGluIHZlcnRleC9mcmFnbWVudCBz
aGFkZXJzIG9ubHkgIiwgUyk7ICBcCi0gICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsgIFwKLSAg
ICB9ICBcCi19CisjZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJocywgTikgICAgICAg
ICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGlmIChZWUlEKE4pKSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9m
aWxlID0gWVlSSFNMT0MoUmhzLCAxKS5maXJzdF9maWxlOyAgXAorICAgICAgICAoQ3VycmVudCku
Zmlyc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMSkuZmlyc3RfbGluZTsgIFwKKyAgICAgICAgKEN1
cnJlbnQpLmxhc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgTikubGFzdF9maWxlOyAgICBcCisgICAg
ICAgIChDdXJyZW50KS5sYXN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIE4pLmxhc3RfbGluZTsgICAg
XAorICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9maWxlID0gWVlSSFNMT0Mo
UmhzLCAwKS5sYXN0X2ZpbGU7ICAgXAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfbGluZSA9IFlZ
UkhTTE9DKFJocywgMCkubGFzdF9saW5lOyAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfZmls
ZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9maWxlOyAgICBcCisgICAgICAgIChDdXJyZW50KS5s
YXN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsgICAgXAorICAgICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSB3
aGlsZSAoMCkKIAogI2RlZmluZSBWRVJURVhfT05MWShTLCBMKSB7ICBcCiAgICAgaWYgKGNvbnRl
eHQtPnNoYWRlclR5cGUgIT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXApAQCAtNTQyLDE0ICs1NjEs
MTYgQEAgdm9pZCBmcmVlICh2b2lkICopOyAvKiBJTkZSSU5HRVMgT04gVVNFUgogCiAjaWYgKCEg
ZGVmaW5lZCB5eW92ZXJmbG93IFwKICAgICAgJiYgKCEgZGVmaW5lZCBfX2NwbHVzcGx1cyBcCi0J
IHx8IChkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RSSVZJQUwpKSkK
KwkgfHwgKGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNfVFJJVklBTCBc
CisJICAgICAmJiBkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RSSVZJ
QUwpKSkKIAogLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBmb3IgYW55IHN0YWNr
IG1lbWJlci4gICovCiB1bmlvbiB5eWFsbG9jCiB7CiAgIHl5dHlwZV9pbnQxNiB5eXNzOwogICBZ
WVNUWVBFIHl5dnM7Ci0gIH07CisgICAgWVlMVFlQRSB5eWxzOworfTsKIAogLyogVGhlIHNpemUg
b2YgdGhlIG1heGltdW0gZ2FwIGJldHdlZW4gb25lIGFsaWduZWQgc3RhY2sgYW5kIHRoZSBuZXh0
LiAgKi8KICMgZGVmaW5lIFlZU1RBQ0tfR0FQX01BWElNVU0gKHNpemVvZiAodW5pb24geXlhbGxv
YykgLSAxKQpAQCAtNTU3LDggKzU3OCw4IEBAIHVuaW9uIHl5YWxsb2MKIC8qIFRoZSBzaXplIG9m
IGFuIGFycmF5IGxhcmdlIHRvIGVub3VnaCB0byBob2xkIGFsbCBzdGFja3MsIGVhY2ggd2l0aAog
ICAgTiBlbGVtZW50cy4gICovCiAjIGRlZmluZSBZWVNUQUNLX0JZVEVTKE4pIFwKLSAgICAgKChO
KSAqIChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUpKSBcCi0gICAgICAr
IFlZU1RBQ0tfR0FQX01BWElNVU0pCisgICAgICgoTikgKiAoc2l6ZW9mICh5eXR5cGVfaW50MTYp
ICsgc2l6ZW9mIChZWVNUWVBFKSArIHNpemVvZiAoWVlMVFlQRSkpIFwKKyAgICAgICsgMiAqIFlZ
U1RBQ0tfR0FQX01BWElNVU0pCiAKIC8qIENvcHkgQ09VTlQgb2JqZWN0cyBmcm9tIEZST00gdG8g
VE8uICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbwogICAgbm90IG92ZXJsYXAuICAqLwpA
QCAtNTk3LDIyICs2MTgsMjIgQEAgdW5pb24geXlhbGxvYwogI2VuZGlmCiAKIC8qIFlZRklOQUwg
LS0gU3RhdGUgbnVtYmVyIG9mIHRoZSB0ZXJtaW5hdGlvbiBzdGF0ZS4gICovCi0jZGVmaW5lIFlZ
RklOQUwgIDcxCisjZGVmaW5lIFlZRklOQUwgIDc0CiAvKiBZWUxBU1QgLS0gTGFzdCBpbmRleCBp
biBZWVRBQkxFLiAgKi8KLSNkZWZpbmUgWVlMQVNUICAgMTQxNgorI2RlZmluZSBZWUxBU1QgICAx
NDkwCiAKIC8qIFlZTlRPS0VOUyAtLSBOdW1iZXIgb2YgdGVybWluYWxzLiAgKi8KLSNkZWZpbmUg
WVlOVE9LRU5TICA5NgorI2RlZmluZSBZWU5UT0tFTlMgIDk1CiAvKiBZWU5OVFMgLS0gTnVtYmVy
IG9mIG5vbnRlcm1pbmFscy4gICovCi0jZGVmaW5lIFlZTk5UUyAgODMKKyNkZWZpbmUgWVlOTlRT
ICA4NAogLyogWVlOUlVMRVMgLS0gTnVtYmVyIG9mIHJ1bGVzLiAgKi8KLSNkZWZpbmUgWVlOUlVM
RVMgIDIwMQorI2RlZmluZSBZWU5SVUxFUyAgMjAyCiAvKiBZWU5SVUxFUyAtLSBOdW1iZXIgb2Yg
c3RhdGVzLiAgKi8KLSNkZWZpbmUgWVlOU1RBVEVTICAzMDQKKyNkZWZpbmUgWVlOU1RBVEVTICAz
MDcKIAogLyogWVlUUkFOU0xBVEUoWVlMRVgpIC0tIEJpc29uIHN5bWJvbCBudW1iZXIgY29ycmVz
cG9uZGluZyB0byBZWUxFWC4gICovCiAjZGVmaW5lIFlZVU5ERUZUT0sgIDIKLSNkZWZpbmUgWVlN
QVhVVE9LICAgMzUwCisjZGVmaW5lIFlZTUFYVVRPSyAgIDM0OQogCiAjZGVmaW5lIFlZVFJBTlNM
QVRFKFlZWCkJCQkJCQlcCiAgICgodW5zaWduZWQgaW50KSAoWVlYKSA8PSBZWU1BWFVUT0sgPyB5
eXRyYW5zbGF0ZVtZWVhdIDogWVlVTkRFRlRPSykKQEAgLTY1NCw4ICs2NzUsNyBAQCBzdGF0aWMg
Y29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJhbnNsYXRlW10gCiAgICAgICA1NSwgICAgNTYsICAgIDU3
LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwKICAgICAg
IDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAg
NzMsICAgIDc0LAogICAgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwg
ICAgODEsICAgIDgyLCAgICA4MywgICAgODQsCi0gICAgICA4NSwgICAgODYsICAgIDg3LCAgICA4
OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwKLSAgICAgIDk1Cisg
ICAgICA4NSwgICAgODYsICAgIDg3LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIs
ICAgIDkzLCAgICA5NAogfTsKIAogI2lmIFlZREVCVUcKQEAgLTY2MywxMTUgKzY4MywxMTYgQEAg
c3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXRyYW5zbGF0ZVtdIAogICAgWVlSSFMuICAqLwog
c3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlwcmhzW10gPQogewotICAgICAgIDAsICAgICAw
LCAgICAgMywgICAgIDUsICAgICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNywgICAgMTks
Ci0gICAgICAyNCwgICAgMjYsICAgIDMwLCAgICAzMywgICAgMzYsICAgIDM4LCAgICA0MCwgICAg
NDIsICAgIDQ2LCAgICA0OSwKLSAgICAgIDUyLCAgICA1NSwgICAgNTcsICAgIDYwLCAgICA2NCwg
ICAgNjcsICAgIDY5LCAgICA3MSwgICAgNzMsICAgIDc1LAotICAgICAgNzgsICAgIDgxLCAgICA4
NCwgICAgODYsICAgIDg4LCAgICA5MCwgICAgOTIsICAgIDk2LCAgIDEwMCwgICAxMDIsCi0gICAg
IDEwNiwgICAxMTAsICAgMTEyLCAgIDExNCwgICAxMTgsICAgMTIyLCAgIDEyNiwgICAxMzAsICAg
MTMyLCAgIDEzNiwKLSAgICAgMTQwLCAgIDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwgICAxNTIs
ICAgMTU0LCAgIDE1OCwgICAxNjAsICAgMTY0LAotICAgICAxNjYsICAgMTcyLCAgIDE3NCwgICAx
NzgsICAgMTgwLCAgIDE4MiwgICAxODQsICAgMTg2LCAgIDE4OCwgICAxOTAsCi0gICAgIDE5NCwg
ICAxOTYsICAgMTk5LCAgIDIwMiwgICAyMDcsICAgMjEwLCAgIDIxMiwgICAyMTQsICAgMjE3LCAg
IDIyMSwKLSAgICAgMjI1LCAgIDIyOCwgICAyMzQsICAgMjM4LCAgIDI0MSwgICAyNDUsICAgMjQ4
LCAgIDI0OSwgICAyNTEsICAgMjUzLAotICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAyNjMsICAg
MjY5LCAgIDI3NiwgICAyODIsICAgMjg0LCAgIDI4NywgICAyOTIsCi0gICAgIDI5OCwgICAzMDMs
ICAgMzA2LCAgIDMwOCwgICAzMTEsICAgMzEzLCAgIDMxNSwgICAzMTcsICAgMzIwLCAgIDMyMiwK
LSAgICAgMzI0LCAgIDMyNywgICAzMjksICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzQwLCAgIDM0
MiwgICAzNDQsICAgMzQ2LAorICAgICAgIDAsICAgICAwLCAgICAgMywgICAgIDUsICAgICA3LCAg
ICAgOSwgICAgMTEsICAgIDEzLCAgICAxNSwgICAgMTcsCisgICAgICAyMSwgICAgMjMsICAgIDI4
LCAgICAzMCwgICAgMzQsICAgIDM3LCAgICA0MCwgICAgNDIsICAgIDQ0LCAgICA0NiwKKyAgICAg
IDUwLCAgICA1MywgICAgNTYsICAgIDU5LCAgICA2MSwgICAgNjQsICAgIDY4LCAgICA3MSwgICAg
NzMsICAgIDc1LAorICAgICAgNzcsICAgIDgwLCAgICA4MywgICAgODYsICAgIDg4LCAgICA5MCwg
ICAgOTIsICAgIDk0LCAgICA5OCwgICAxMDIsCisgICAgIDEwNCwgICAxMDgsICAgMTEyLCAgIDEx
NCwgICAxMTYsICAgMTIwLCAgIDEyNCwgICAxMjgsICAgMTMyLCAgIDEzNCwKKyAgICAgMTM4LCAg
IDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwgICAxNTAsICAgMTU0LCAgIDE1NiwgICAxNjAsICAg
MTYyLAorICAgICAxNjYsICAgMTY4LCAgIDE3NCwgICAxNzYsICAgMTgwLCAgIDE4MiwgICAxODQs
ICAgMTg2LCAgIDE4OCwgICAxOTAsCisgICAgIDE5MiwgICAxOTYsICAgMTk4LCAgIDIwMSwgICAy
MDQsICAgMjA5LCAgIDIxMiwgICAyMTQsICAgMjE2LCAgIDIxOSwKKyAgICAgMjIzLCAgIDIyNywg
ICAyMzAsICAgMjM2LCAgIDI0MCwgICAyNDMsICAgMjQ3LCAgIDI1MCwgICAyNTEsICAgMjUzLAor
ICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAyNjEsICAgMjY1LCAgIDI3MSwgICAyNzgsICAgMjg0
LCAgIDI4NiwgICAyODksCisgICAgIDI5NCwgICAzMDAsICAgMzA1LCAgIDMwOCwgICAzMTAsICAg
MzEzLCAgIDMxNSwgICAzMTcsICAgMzE5LCAgIDMyMiwKKyAgICAgMzI0LCAgIDMyNiwgICAzMjks
ICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzM3LCAgIDM0MiwgICAzNDQsICAgMzQ2LAogICAgICAz
NDgsICAgMzUwLCAgIDM1MiwgICAzNTQsICAgMzU2LCAgIDM1OCwgICAzNjAsICAgMzYyLCAgIDM2
NCwgICAzNjYsCi0gICAgIDM2OCwgICAzNzAsICAgMzcyLCAgIDM3NCwgICAzNzYsICAgMzc4LCAg
IDM4MCwgICAzODIsICAgMzg0LCAgIDM4NSwKLSAgICAgMzkyLCAgIDM5MywgICAzOTksICAgNDAx
LCAgIDQwNCwgICA0MDgsICAgNDEwLCAgIDQxNCwgICA0MTYsICAgNDIxLAotICAgICA0MjMsICAg
NDI1LCAgIDQyNywgICA0MjksICAgNDMxLCAgIDQzMywgICA0MzUsICAgNDM3LCAgIDQzOSwgICA0
NDIsCi0gICAgIDQ0MywgICA0NDQsICAgNDUwLCAgIDQ1MiwgICA0NTQsICAgNDU1LCAgIDQ1OCwg
ICA0NTksICAgNDYyLCAgIDQ2NSwKLSAgICAgNDY5LCAgIDQ3MSwgICA0NzQsICAgNDc2LCAgIDQ3
OSwgICA0ODUsICAgNDg5LCAgIDQ5MSwgICA0OTMsICAgNDk4LAotICAgICA0OTksICAgNTA2LCAg
IDUwNywgICA1MTYsICAgNTE3LCAgIDUyNSwgICA1MjcsICAgNTI5LCAgIDUzMSwgICA1MzIsCi0g
ICAgIDUzNSwgICA1MzksICAgNTQyLCAgIDU0NSwgICA1NDgsICAgNTUyLCAgIDU1NSwgICA1NTcs
ICAgNTYwLCAgIDU2MiwKLSAgICAgNTY0LCAgIDU2NQorICAgICAzNjgsICAgMzcwLCAgIDM3Miwg
ICAzNzQsICAgMzc2LCAgIDM3OCwgICAzODAsICAgMzgyLCAgIDM4NCwgICAzODYsCisgICAgIDM4
NywgICAzOTQsICAgMzk1LCAgIDQwMSwgICA0MDMsICAgNDA2LCAgIDQxMCwgICA0MTIsICAgNDE2
LCAgIDQxOCwKKyAgICAgNDIzLCAgIDQyNSwgICA0MjcsICAgNDI5LCAgIDQzMSwgICA0MzMsICAg
NDM1LCAgIDQzNywgICA0MzksICAgNDQxLAorICAgICA0NDQsICAgNDQ1LCAgIDQ0NiwgICA0NTIs
ICAgNDU0LCAgIDQ1NiwgICA0NTcsICAgNDYwLCAgIDQ2MSwgICA0NjQsCisgICAgIDQ2NywgICA0
NzEsICAgNDczLCAgIDQ3NiwgICA0NzgsICAgNDgxLCAgIDQ4NywgICA0OTEsICAgNDkzLCAgIDQ5
NSwKKyAgICAgNTAwLCAgIDUwMSwgICA1MDgsICAgNTA5LCAgIDUxOCwgICA1MTksICAgNTI3LCAg
IDUyOSwgICA1MzEsICAgNTMzLAorICAgICA1MzQsICAgNTM3LCAgIDU0MSwgICA1NDQsICAgNTQ3
LCAgIDU1MCwgICA1NTQsICAgNTU3LCAgIDU1OSwgICA1NjIsCisgICAgIDU2NCwgICA1NjYsICAg
NTY3CiB9OwogCiAvKiBZWVJIUyAtLSBBIGAtMSctc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHJ1bGVz
JyBSSFMuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXJoc1tdID0KIHsKLSAgICAg
MTc1LCAgICAgMCwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgOTcsICAgIC0xLCAgICA0OCwgICAg
LTEsICAgIDQ3LAotICAgICAgLTEsICAgIDQ5LCAgICAtMSwgICAgNzIsICAgMTI0LCAgICA3Mywg
ICAgLTEsICAgIDk4LCAgICAtMSwgICAgOTksCi0gICAgICA3NCwgICAxMDAsICAgIDc1LCAgICAt
MSwgICAxMDEsICAgIC0xLCAgICA5OSwgICAgNzgsICAgIDUwLCAgICAtMSwKLSAgICAgIDk5LCAg
ICA1MywgICAgLTEsICAgIDk5LCAgICA1NCwgICAgLTEsICAgMTI0LCAgICAtMSwgICAxMDIsICAg
IC0xLAotICAgICAxMDMsICAgIC0xLCAgICA5OSwgICAgNzgsICAgMTAzLCAgICAtMSwgICAxMDUs
ICAgIDczLCAgICAtMSwgICAxMDQsCi0gICAgICA3MywgICAgLTEsICAgMTA2LCAgICAzOSwgICAg
LTEsICAgMTA2LCAgICAtMSwgICAxMDYsICAgMTIyLCAgICAtMSwKLSAgICAgMTA1LCAgICA3OSwg
ICAxMjIsICAgIC0xLCAgIDEwNywgICAgNzIsICAgIC0xLCAgIDE0MiwgICAgLTEsICAgIDQ1LAot
ICAgICAgLTEsICAgIDUwLCAgICAtMSwgICAgOTksICAgIC0xLCAgICA1MywgICAxMDgsICAgIC0x
LCAgICA1NCwgICAxMDgsCi0gICAgICAtMSwgICAxMDksICAgMTA4LCAgICAtMSwgICAgODYsICAg
IC0xLCAgICA4NCwgICAgLTEsICAgIDgzLCAgICAtMSwKLSAgICAgMTA4LCAgICAtMSwgICAxMTAs
ICAgIDg3LCAgIDEwOCwgICAgLTEsICAgMTEwLCAgICA4OCwgICAxMDgsICAgIC0xLAotICAgICAx
MTAsICAgIC0xLCAgIDExMSwgICAgODYsICAgMTEwLCAgICAtMSwgICAxMTEsICAgIDg0LCAgIDEx
MCwgICAgLTEsCi0gICAgIDExMSwgICAgLTEsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDkwLCAg
IDExMiwgICAgLTEsICAgMTEzLCAgICA5MSwKLSAgICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDU1
LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA1NiwgICAxMTIsICAgIC0xLAotICAgICAxMTMsICAg
IC0xLCAgIDExNCwgICAgNTcsICAgMTEzLCAgICAtMSwgICAxMTQsICAgIDU4LCAgIDExMywgICAg
LTEsCi0gICAgIDExNCwgICAgLTEsICAgMTE1LCAgICAtMSwgICAxMTYsICAgIC0xLCAgIDExNywg
ICAgLTEsICAgMTE4LCAgICA1OSwKLSAgICAgMTE3LCAgICAtMSwgICAxMTgsICAgIC0xLCAgIDEx
OSwgICAgNjEsICAgMTE4LCAgICAtMSwgICAxMTksICAgIC0xLAotICAgICAxMjAsICAgIDYwLCAg
IDExOSwgICAgLTEsICAgMTIwLCAgICAtMSwgICAxMjAsICAgIDk1LCAgIDEyNCwgICAgODAsCi0g
ICAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMDgsICAgMTIzLCAgIDEyMiwgICAgLTEs
ICAgIDgxLCAgICAtMSwKLSAgICAgIDYyLCAgICAtMSwgICAgNjMsICAgIC0xLCAgICA2NCwgICAg
LTEsICAgIDcxLCAgICAtMSwgICAxMjIsICAgIC0xLAotICAgICAxMjQsICAgIDc5LCAgIDEyMiwg
ICAgLTEsICAgMTIxLCAgICAtMSwgICAxMjcsICAgIDgyLCAgICAtMSwgICAxMzUsCi0gICAgICA4
MiwgICAgLTEsICAgICA3LCAgIDE0MCwgICAxNDEsICAgIDgyLCAgICAtMSwgICAxMjgsICAgIDcz
LCAgICAtMSwKLSAgICAgMTMwLCAgICAtMSwgICAxMjksICAgIC0xLCAgIDEzMCwgICAxMzIsICAg
IC0xLCAgIDEyOSwgICAgNzksICAgMTMyLAotICAgICAgLTEsICAgMTM3LCAgICA0NSwgICAgNzIs
ICAgIC0xLCAgIDEzOSwgICAgNDUsICAgIC0xLCAgIDEzOSwgICAgNDUsCi0gICAgICA3NCwgICAx
MjUsICAgIDc1LCAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzMSwgICAgLTEsICAgMTMzLCAgIDEz
MSwKLSAgICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTM0LCAgICAtMSwgICAxMzMsICAgMTM0LCAg
ICAtMSwgICAgLTEsICAgIDMzLAotICAgICAgLTEsICAgIDM0LCAgICAtMSwgICAgMzUsICAgIC0x
LCAgIDEzOSwgICAgLTEsICAgMTM2LCAgICAtMSwgICAxMzUsCi0gICAgICA3OSwgICAgNDUsICAg
IC0xLCAgIDEzNSwgICAgNzksICAgIDQ1LCAgICA3NCwgICAgNzUsICAgIC0xLCAgIDEzNSwKLSAg
ICAgIDc5LCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM1LCAgICA3OSwg
ICAgNDUsICAgIDgxLAotICAgICAxNTAsICAgIC0xLCAgIDEzNywgICAgLTEsICAgMTM3LCAgICA0
NSwgICAgLTEsICAgMTM3LCAgICA0NSwgICAgNzQsCi0gICAgICA3NSwgICAgLTEsICAgMTM3LCAg
ICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM3LCAgICA0NSwKLSAgICAgIDgx
LCAgIDE1MCwgICAgLTEsICAgICAzLCAgICA0NSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAxMzgs
ICAgMTM5LAotICAgICAgLTEsICAgICA5LCAgICAtMSwgICAgIDgsICAgIC0xLCAgICAzNywgICAg
LTEsICAgICAzLCAgICAzNywgICAgLTEsCi0gICAgICAzNiwgICAgLTEsICAgMTQxLCAgICAtMSwg
ICAxNDAsICAgMTQxLCAgICAtMSwgICAgIDQsICAgIC0xLCAgICAgNSwKLSAgICAgIC0xLCAgICAg
NiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDc0LCAgIDEyNSwgICAgNzUsICAgIC0x
LAotICAgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAgICAtMSwgICAgMTAsICAg
IC0xLCAgICAyNywgICAgLTEsCi0gICAgICAyOCwgICAgLTEsICAgIDI5LCAgICAtMSwgICAgMjEs
ICAgIC0xLCAgICAyMiwgICAgLTEsICAgIDIzLCAgICAtMSwKLSAgICAgIDI0LCAgICAtMSwgICAg
MjUsICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwgICAgMzEsICAgIC0xLAotICAg
ICAgMzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAgNDMsICAgIC0xLCAg
ICA0NCwgICAgLTEsCi0gICAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgLTEsICAgIDM4
LCAgICA0NSwgICAgNzYsICAgMTQ0LCAgIDE0NiwKLSAgICAgIDc3LCAgICAtMSwgICAgLTEsICAg
IDM4LCAgICA3NiwgICAxNDUsICAgMTQ2LCAgICA3NywgICAgLTEsICAgMTQ3LAotICAgICAgLTEs
ICAgMTQ2LCAgIDE0NywgICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODIsICAgIC0xLCAgIDE0OSwg
ICAgLTEsCi0gICAgIDE0OCwgICAgNzksICAgMTQ5LCAgICAtMSwgICAgNDUsICAgIC0xLCAgICA0
NSwgICAgNzQsICAgMTI1LCAgICA3NSwKLSAgICAgIC0xLCAgIDEyMiwgICAgLTEsICAgMTI2LCAg
ICAtMSwgICAxNTQsICAgIC0xLCAgIDE1MywgICAgLTEsICAgMTUxLAotICAgICAgLTEsICAgMTYz
LCAgICAtMSwgICAxNjQsICAgIC0xLCAgIDE2NywgICAgLTEsICAgMTc0LCAgICAtMSwgICAgNzYs
Ci0gICAgICA3NywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgMTU1LCAgIDE2MiwgICAx
NTYsICAgIDc3LCAgICAtMSwKLSAgICAgMTYxLCAgICAtMSwgICAxNTMsICAgIC0xLCAgICAtMSwg
ICAxNTksICAgMTYxLCAgICAtMSwgICAgLTEsICAgMTYwLAotICAgICAxNTMsICAgIC0xLCAgICA3
NiwgICAgNzcsICAgIC0xLCAgICA3NiwgICAxNjIsICAgIDc3LCAgICAtMSwgICAxNTIsCi0gICAg
ICAtMSwgICAxNjIsICAgMTUyLCAgICAtMSwgICAgODIsICAgIC0xLCAgIDEyNCwgICAgODIsICAg
IC0xLCAgICAxOCwKLSAgICAgIDcyLCAgIDEyNCwgICAgNzMsICAgMTY1LCAgICAtMSwgICAxNTgs
ICAgIDE2LCAgIDE1OCwgICAgLTEsICAgMTU4LAotICAgICAgLTEsICAgMTI0LCAgICAtMSwgICAx
MzcsICAgIDQ1LCAgICA4MSwgICAxNTAsICAgIC0xLCAgICAtMSwgICAgNDAsCi0gICAgICA3Miwg
ICAxNjgsICAgMTY2LCAgICA3MywgICAxNTcsICAgIC0xLCAgICAtMSwgICAgMTUsICAgMTY5LCAg
IDE1OCwKLSAgICAgIDQwLCAgICA3MiwgICAxMjQsICAgIDczLCAgICA4MiwgICAgLTEsICAgIC0x
LCAgICAxNywgICAgNzIsICAgMTcwLAotICAgICAxNzEsICAgMTczLCAgICA3MywgICAxNTcsICAg
IC0xLCAgIDE2MywgICAgLTEsICAgMTUxLCAgICAtMSwgICAxNjYsCi0gICAgICAtMSwgICAgLTEs
ICAgMTcyLCAgICA4MiwgICAgLTEsICAgMTcyLCAgICA4MiwgICAxMjQsICAgIC0xLCAgICAxNCwK
LSAgICAgIDgyLCAgICAtMSwgICAgMTMsICAgIDgyLCAgICAtMSwgICAgMjAsICAgIDgyLCAgICAt
MSwgICAgMjAsICAgMTI0LAotICAgICAgODIsICAgIC0xLCAgICAxOSwgICAgODIsICAgIC0xLCAg
IDE3NiwgICAgLTEsICAgMTc1LCAgIDE3NiwgICAgLTEsCi0gICAgIDE3NywgICAgLTEsICAgMTI2
LCAgICAtMSwgICAgLTEsICAgMTI3LCAgIDE3OCwgICAxNjEsICAgIC0xCisgICAgIDE3NSwgICAg
IDAsICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgNDUsICAgIC0xLCAgICA5
NywKKyAgICAgIC0xLCAgICA0OCwgICAgLTEsICAgIDQ3LCAgICAtMSwgICAgNDksICAgIC0xLCAg
ICA3MSwgICAxMjQsICAgIDcyLAorICAgICAgLTEsICAgIDk4LCAgICAtMSwgICAgOTksICAgIDcz
LCAgIDEwMCwgICAgNzQsICAgIC0xLCAgIDEwMSwgICAgLTEsCisgICAgICA5OSwgICAgNzcsICAg
IDk2LCAgICAtMSwgICAgOTksICAgIDUyLCAgICAtMSwgICAgOTksICAgIDUzLCAgICAtMSwKKyAg
ICAgMTI0LCAgICAtMSwgICAxMDIsICAgIC0xLCAgIDEwMywgICAgLTEsICAgIDk5LCAgICA3Nywg
ICAxMDMsICAgIC0xLAorICAgICAxMDUsICAgIDcyLCAgICAtMSwgICAxMDQsICAgIDcyLCAgICAt
MSwgICAxMDYsICAgIDM5LCAgICAtMSwgICAxMDYsCisgICAgICAtMSwgICAxMDYsICAgMTIyLCAg
ICAtMSwgICAxMDUsICAgIDc4LCAgIDEyMiwgICAgLTEsICAgMTA3LCAgICA3MSwKKyAgICAgIC0x
LCAgIDE0MiwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgOTksICAgIC0xLCAgICA1MiwgICAxMDgs
ICAgIC0xLAorICAgICAgNTMsICAgMTA4LCAgICAtMSwgICAxMDksICAgMTA4LCAgICAtMSwgICAg
ODUsICAgIC0xLCAgICA4MywgICAgLTEsCisgICAgICA4MiwgICAgLTEsICAgMTA4LCAgICAtMSwg
ICAxMTAsICAgIDg2LCAgIDEwOCwgICAgLTEsICAgMTEwLCAgICA4NywKKyAgICAgMTA4LCAgICAt
MSwgICAxMTAsICAgIC0xLCAgIDExMSwgICAgODUsICAgMTEwLCAgICAtMSwgICAxMTEsICAgIDgz
LAorICAgICAxMTAsICAgIC0xLCAgIDExMSwgICAgLTEsICAgMTEyLCAgICAtMSwgICAxMTMsICAg
IDg5LCAgIDExMiwgICAgLTEsCisgICAgIDExMywgICAgOTAsICAgMTEyLCAgICAtMSwgICAxMTMs
ICAgIDU0LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA1NSwKKyAgICAgMTEyLCAgICAtMSwgICAx
MTMsICAgIC0xLCAgIDExNCwgICAgNTYsICAgMTEzLCAgICAtMSwgICAxMTQsICAgIDU3LAorICAg
ICAxMTMsICAgIC0xLCAgIDExNCwgICAgLTEsICAgMTE1LCAgICAtMSwgICAxMTYsICAgIC0xLCAg
IDExNywgICAgLTEsCisgICAgIDExOCwgICAgNTgsICAgMTE3LCAgICAtMSwgICAxMTgsICAgIC0x
LCAgIDExOSwgICAgNjAsICAgMTE4LCAgICAtMSwKKyAgICAgMTE5LCAgICAtMSwgICAxMjAsICAg
IDU5LCAgIDExOSwgICAgLTEsICAgMTIwLCAgICAtMSwgICAxMjAsICAgIDk0LAorICAgICAxMjQs
ICAgIDc5LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMDgsICAgMTIzLCAgIDEyMiwg
ICAgLTEsCisgICAgICA4MCwgICAgLTEsICAgIDYxLCAgICAtMSwgICAgNjIsICAgIC0xLCAgICA2
MywgICAgLTEsICAgIDcwLCAgICAtMSwKKyAgICAgMTIyLCAgICAtMSwgICAxMjQsICAgIDc4LCAg
IDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMjcsICAgIDgxLAorICAgICAgLTEsICAgMTM1
LCAgICA4MSwgICAgLTEsICAgICA3LCAgIDE0MCwgICAxNDEsICAgIDgxLCAgICAtMSwgICAxMjgs
CisgICAgICA3MiwgICAgLTEsICAgMTMwLCAgICAtMSwgICAxMjksICAgIC0xLCAgIDEzMCwgICAx
MzIsICAgIC0xLCAgIDEyOSwKKyAgICAgIDc4LCAgIDEzMiwgICAgLTEsICAgMTM3LCAgICA0NSwg
ICAgNzEsICAgIC0xLCAgIDEzOSwgICAgOTYsICAgIC0xLAorICAgICAxMzksICAgIDk2LCAgICA3
MywgICAxMjUsICAgIDc0LCAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzMSwgICAgLTEsCisgICAg
IDEzMywgICAxMzEsICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTM0LCAgICAtMSwgICAxMzMsICAg
MTM0LCAgICAtMSwKKyAgICAgIC0xLCAgICAzMywgICAgLTEsICAgIDM0LCAgICAtMSwgICAgMzUs
ICAgIC0xLCAgIDEzOSwgICAgLTEsICAgMTM2LAorICAgICAgLTEsICAgMTM1LCAgICA3OCwgICAg
OTYsICAgIC0xLCAgIDEzNSwgICAgNzgsICAgIDk2LCAgICA3MywgICAgNzQsCisgICAgICAtMSwg
ICAxMzUsICAgIDc4LCAgICA5NiwgICAgNzMsICAgMTI1LCAgICA3NCwgICAgLTEsICAgMTM1LCAg
ICA3OCwKKyAgICAgIDk2LCAgICA4MCwgICAxNTAsICAgIC0xLCAgIDEzNywgICAgLTEsICAgMTM3
LCAgICA5NiwgICAgLTEsICAgMTM3LAorICAgICAgOTYsICAgIDczLCAgICA3NCwgICAgLTEsICAg
MTM3LCAgICA5NiwgICAgNzMsICAgMTI1LCAgICA3NCwgICAgLTEsCisgICAgIDEzNywgICAgOTYs
ICAgIDgwLCAgIDE1MCwgICAgLTEsICAgICAzLCAgICA0NSwgICAgLTEsICAgMTM5LCAgICAtMSwK
KyAgICAgMTM4LCAgIDEzOSwgICAgLTEsICAgICA5LCAgICAtMSwgICAgIDgsICAgIC0xLCAgICAz
NywgICAgLTEsICAgICAzLAorICAgICAgMzcsICAgIC0xLCAgICAzNiwgICAgLTEsICAgMTQxLCAg
ICAtMSwgICAxNDAsICAgMTQxLCAgICAtMSwgICAgIDQsCisgICAgICAtMSwgICAgIDUsICAgIC0x
LCAgICAgNiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDczLCAgIDEyNSwKKyAgICAg
IDc0LCAgICAtMSwgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAgICAtMSwgICAg
MTAsICAgIC0xLAorICAgICAgMjcsICAgIC0xLCAgICAyOCwgICAgLTEsICAgIDI5LCAgICAtMSwg
ICAgMjEsICAgIC0xLCAgICAyMiwgICAgLTEsCisgICAgICAyMywgICAgLTEsICAgIDI0LCAgICAt
MSwgICAgMjUsICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwKKyAgICAgIDMxLCAg
ICAtMSwgICAgMzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAgNDMsICAg
IC0xLAorICAgICAgNDQsICAgIC0xLCAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgLTEs
ICAgIDM4LCAgICA5NiwgICAgNzUsCisgICAgIDE0NCwgICAxNDYsICAgIDc2LCAgICAtMSwgICAg
LTEsICAgIDM4LCAgICA3NSwgICAxNDUsICAgMTQ2LCAgICA3NiwKKyAgICAgIC0xLCAgIDE0Nywg
ICAgLTEsICAgMTQ2LCAgIDE0NywgICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODEsICAgIC0xLAor
ICAgICAxNDksICAgIC0xLCAgIDE0OCwgICAgNzgsICAgMTQ5LCAgICAtMSwgICAgOTYsICAgIC0x
LCAgICA5NiwgICAgNzMsCisgICAgIDEyNSwgICAgNzQsICAgIC0xLCAgIDEyMiwgICAgLTEsICAg
MTI2LCAgICAtMSwgICAxNTQsICAgIC0xLCAgIDE1MywKKyAgICAgIC0xLCAgIDE1MSwgICAgLTEs
ICAgMTYzLCAgICAtMSwgICAxNjQsICAgIC0xLCAgIDE2NywgICAgLTEsICAgMTc0LAorICAgICAg
LTEsICAgIDc1LCAgICA3NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgMTU1LCAgIDE2
MiwgICAxNTYsCisgICAgICA3NiwgICAgLTEsICAgMTYxLCAgICAtMSwgICAxNTMsICAgIC0xLCAg
ICAtMSwgICAxNTksICAgMTYxLCAgICAtMSwKKyAgICAgIC0xLCAgIDE2MCwgICAxNTMsICAgIC0x
LCAgICA3NSwgICAgNzYsICAgIC0xLCAgICA3NSwgICAxNjIsICAgIDc2LAorICAgICAgLTEsICAg
MTUyLCAgICAtMSwgICAxNjIsICAgMTUyLCAgICAtMSwgICAgODEsICAgIC0xLCAgIDEyNCwgICAg
ODEsCisgICAgICAtMSwgICAgMTgsICAgIDcxLCAgIDEyNCwgICAgNzIsICAgMTY1LCAgICAtMSwg
ICAxNTgsICAgIDE2LCAgIDE1OCwKKyAgICAgIC0xLCAgIDE1OCwgICAgLTEsICAgMTI0LCAgICAt
MSwgICAxMzcsICAgIDk2LCAgICA4MCwgICAxNTAsICAgIC0xLAorICAgICAgLTEsICAgIDQwLCAg
ICA3MSwgICAxNjgsICAgMTY2LCAgICA3MiwgICAxNTcsICAgIC0xLCAgICAtMSwgICAgMTUsCisg
ICAgIDE2OSwgICAxNTgsICAgIDQwLCAgICA3MSwgICAxMjQsICAgIDcyLCAgICA4MSwgICAgLTEs
ICAgIC0xLCAgICAxNywKKyAgICAgIDcxLCAgIDE3MCwgICAxNzEsICAgMTczLCAgICA3MiwgICAx
NTcsICAgIC0xLCAgIDE2MywgICAgLTEsICAgMTUxLAorICAgICAgLTEsICAgMTY2LCAgICAtMSwg
ICAgLTEsICAgMTcyLCAgICA4MSwgICAgLTEsICAgMTcyLCAgICA4MSwgICAxMjQsCisgICAgICAt
MSwgICAgMTQsICAgIDgxLCAgICAtMSwgICAgMTMsICAgIDgxLCAgICAtMSwgICAgMjAsICAgIDgx
LCAgICAtMSwKKyAgICAgIDIwLCAgIDEyNCwgICAgODEsICAgIC0xLCAgICAxOSwgICAgODEsICAg
IC0xLCAgIDE3NiwgICAgLTEsICAgMTc1LAorICAgICAxNzYsICAgIC0xLCAgIDE3NywgICAgLTEs
ICAgMTI2LCAgICAtMSwgICAgLTEsICAgMTI3LCAgIDE3OCwgICAxNjEsCisgICAgICAtMQogfTsK
IAogLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVyIFlZTiB3
YXMgZGVmaW5lZC4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXJsaW5lW10gPQog
ewotICAgICAgIDAsICAgMTY4LCAgIDE2OCwgICAyMDMsICAgMjA2LCAgIDIxOSwgICAyMjQsICAg
MjI5LCAgIDIzNSwgICAyMzgsCi0gICAgIDMxNywgICAzMjAsICAgNDIxLCAgIDQzMSwgICA0NDQs
ICAgNDUyLCAgIDU1MiwgICA1NTUsICAgNTYzLCAgIDU2NywKLSAgICAgNTc0LCAgIDU3OCwgICA1
ODUsICAgNTkxLCAgIDYwMCwgICA2MDgsICAgNjYzLCAgIDY3MCwgICA2ODAsICAgNjgzLAotICAg
ICA2OTMsICAgNzAzLCAgIDcyNCwgICA3MjUsICAgNzI2LCAgIDczMSwgICA3MzIsICAgNzQxLCAg
IDc1MywgICA3NTQsCi0gICAgIDc2MiwgICA3NzMsICAgNzc3LCAgIDc3OCwgICA3ODgsICAgNzk4
LCAgIDgwOCwgICA4MjEsICAgODIyLCAgIDgzMiwKLSAgICAgODQ1LCAgIDg0OSwgICA4NTMsICAg
ODU3LCAgIDg1OCwgICA4NzEsICAgODcyLCAgIDg4NSwgICA4ODYsICAgODk5LAotICAgICA5MDAs
ICAgOTE3LCAgIDkxOCwgICA5MzEsICAgOTMyLCAgIDkzMywgICA5MzQsICAgOTM1LCAgIDkzOSwg
ICA5NDIsCi0gICAgIDk1MywgICA5NjEsICAgOTg4LCAgIDk5MywgIDEwMDcsICAxMDQ1LCAgMTA0
OCwgIDEwNTUsICAxMDYzLCAgMTA4NCwKLSAgICAxMTA1LCAgMTExNiwgIDExNDUsICAxMTUwLCAg
MTE2MCwgIDExNjUsICAxMTc1LCAgMTE3OCwgIDExODEsICAxMTg0LAotICAgIDExOTAsICAxMTk3
LCAgMTIwMCwgIDEyMjIsICAxMjQwLCAgMTI2NCwgIDEyODcsICAxMjkxLCAgMTMwOSwgIDEzMTcs
Ci0gICAgMTM0OSwgIDEzNjksICAxNDU4LCAgMTQ2NywgIDE0OTAsICAxNDkzLCAgMTQ5OSwgIDE1
MDcsICAxNTE1LCAgMTUyMywKLSAgICAxNTMzLCAgMTU0MCwgIDE1NDMsICAxNTQ2LCAgMTU1Miwg
IDE1NTUsICAxNTcwLCAgMTU3NCwgIDE1NzgsICAxNTgyLAotICAgIDE1OTEsICAxNTk2LCAgMTYw
MSwgIDE2MDYsICAxNjExLCAgMTYxNiwgIDE2MjEsICAxNjI2LCAgMTYzMSwgIDE2MzYsCi0gICAg
MTY0MiwgIDE2NDgsICAxNjU0LCAgMTY1OSwgIDE2NjQsICAxNjczLCAgMTY4MiwgIDE2ODcsICAx
NzAwLCAgMTcwMCwKLSAgICAxNzE0LCAgMTcxNCwgIDE3MjMsICAxNzI2LCAgMTc0MSwgIDE3Nzcs
ICAxNzgxLCAgMTc4NywgIDE3OTUsICAxODExLAotICAgIDE4MTUsICAxODE5LCAgMTgyMCwgIDE4
MjYsICAxODI3LCAgMTgyOCwgIDE4MjksICAxODMwLCAgMTgzNCwgIDE4MzUsCi0gICAgMTgzNSwg
IDE4MzUsICAxODQ1LCAgMTg0NiwgIDE4NTAsICAxODUwLCAgMTg1MSwgIDE4NTEsICAxODU2LCAg
MTg1OSwKLSAgICAxODY5LCAgMTg3MiwgIDE4NzgsICAxODc5LCAgMTg4MywgIDE4OTEsICAxODk1
LCAgMTkwNSwgIDE5MTAsICAxOTI3LAotICAgIDE5MjcsICAxOTMyLCAgMTkzMiwgIDE5MzksICAx
OTM5LCAgMTk0NywgIDE5NTAsICAxOTU2LCAgMTk1OSwgIDE5NjUsCi0gICAgMTk2OSwgIDE5NzYs
ICAxOTgzLCAgMTk5MCwgIDE5OTcsICAyMDA4LCAgMjAxNywgIDIwMjEsICAyMDI4LCAgMjAzMSwK
LSAgICAyMDM3LCAgMjAzNworICAgICAgIDAsICAgMTc4LCAgIDE3OCwgICAxNzksICAgMTgyLCAg
IDIyNSwgICAyMjgsICAgMjQxLCAgIDI0NiwgICAyNTEsCisgICAgIDI1NywgICAyNjAsICAgMzM1
LCAgIDMzOCwgICA0MzMsICAgNDQzLCAgIDQ1NiwgICA0NjQsICAgNTY0LCAgIDU2NywKKyAgICAg
NTc1LCAgIDU3OCwgICA1ODQsICAgNTg4LCAgIDU5NSwgICA2MDEsICAgNjEwLCAgIDYxOCwgICA2
NzMsICAgNjgzLAorICAgICA2ODYsICAgNjk2LCAgIDcwNiwgICA3MjcsICAgNzI4LCAgIDcyOSwg
ICA3MzQsICAgNzM1LCAgIDc0MywgICA3NTQsCisgICAgIDc1NSwgICA3NjMsICAgNzc0LCAgIDc3
OCwgICA3NzksICAgNzg5LCAgIDc5OSwgICA4MDksICAgODIyLCAgIDgyMywKKyAgICAgODMzLCAg
IDg0NiwgICA4NTAsICAgODU0LCAgIDg1OCwgICA4NTksICAgODcyLCAgIDg3MywgICA4ODYsICAg
ODg3LAorICAgICA5MDAsICAgOTAxLCAgIDkxOCwgICA5MTksICAgOTMyLCAgIDkzMywgICA5MzQs
ICAgOTM1LCAgIDkzNiwgICA5NDAsCisgICAgIDk0MywgICA5NTQsICAgOTYyLCAgIDk4OSwgICA5
OTQsICAxMDA4LCAgMTA0NSwgIDEwNDgsICAxMDU1LCAgMTA2MywKKyAgICAxMDg0LCAgMTEwNSwg
IDExMTUsICAxMTQzLCAgMTE0OCwgIDExNTgsICAxMTYzLCAgMTE3MywgIDExNzYsICAxMTc5LAor
ICAgIDExODIsICAxMTg4LCAgMTE5NSwgIDExOTgsICAxMjIwLCAgMTIzOCwgIDEyNjIsICAxMjg1
LCAgMTI4OSwgIDEzMDcsCisgICAgMTMxNSwgIDEzNDcsICAxMzY3LCAgMTM4OCwgIDEzOTcsICAx
NDIwLCAgMTQyMywgIDE0MjksICAxNDM3LCAgMTQ0NSwKKyAgICAxNDUzLCAgMTQ2MywgIDE0NzAs
ICAxNDczLCAgMTQ3NiwgIDE0ODIsICAxNDg1LCAgMTUwMCwgIDE1MDQsICAxNTA4LAorICAgIDE1
MTIsICAxNTE2LCAgMTUyMSwgIDE1MjYsICAxNTMxLCAgMTUzNiwgIDE1NDEsICAxNTQ2LCAgMTU1
MSwgIDE1NTYsCisgICAgMTU2MSwgIDE1NjYsICAxNTcxLCAgMTU3NiwgIDE1ODAsICAxNTg0LCAg
MTU5MiwgIDE2MDAsICAxNjA0LCAgMTYxNywKKyAgICAxNjE3LCAgMTYzMSwgIDE2MzEsICAxNjQw
LCAgMTY0MywgIDE2NTksICAxNjkyLCAgMTY5NiwgIDE3MDIsICAxNzA5LAorICAgIDE3MjQsICAx
NzI4LCAgMTczMiwgIDE3MzMsICAxNzM5LCAgMTc0MCwgIDE3NDEsICAxNzQyLCAgMTc0MywgIDE3
NDcsCisgICAgMTc0OCwgIDE3NDgsICAxNzQ4LCAgMTc1OCwgIDE3NTksICAxNzYzLCAgMTc2Mywg
IDE3NjQsICAxNzY0LCAgMTc2OSwKKyAgICAxNzcyLCAgMTc4MiwgIDE3ODUsICAxNzkxLCAgMTc5
MiwgIDE3OTYsICAxODA0LCAgMTgwOCwgIDE4MTgsICAxODIzLAorICAgIDE4NDAsICAxODQwLCAg
MTg0NSwgIDE4NDUsICAxODUyLCAgMTg1MiwgIDE4NjAsICAxODYzLCAgMTg2OSwgIDE4NzIsCisg
ICAgMTg3OCwgIDE4ODIsICAxODg5LCAgMTg5NiwgIDE5MDMsICAxOTEwLCAgMTkyMSwgIDE5MzAs
ICAxOTM0LCAgMTk0MSwKKyAgICAxOTQ0LCAgMTk1MCwgIDE5NTAKIH07CiAjZW5kaWYKIApAQCAt
Nzg4LDE1ICs4MDksMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHl5dG5hbWVbXSA9CiAg
ICJNQVRSSVgzIiwgIk1BVFJJWDQiLCAiSU5fUVVBTCIsICJPVVRfUVVBTCIsICJJTk9VVF9RVUFM
IiwgIlVOSUZPUk0iLAogICAiVkFSWUlORyIsICJTVFJVQ1QiLCAiVk9JRF9UWVBFIiwgIldISUxF
IiwgIlNBTVBMRVIyRCIsICJTQU1QTEVSQ1VCRSIsCiAgICJTQU1QTEVSX0VYVEVSTkFMX09FUyIs
ICJTQU1QTEVSMkRSRUNUIiwgIklERU5USUZJRVIiLCAiVFlQRV9OQU1FIiwKLSAgIkZMT0FUQ09O
U1RBTlQiLCAiSU5UQ09OU1RBTlQiLCAiQk9PTENPTlNUQU5UIiwgIkZJRUxEX1NFTEVDVElPTiIs
Ci0gICJMRUZUX09QIiwgIlJJR0hUX09QIiwgIklOQ19PUCIsICJERUNfT1AiLCAiTEVfT1AiLCAi
R0VfT1AiLCAiRVFfT1AiLAotICAiTkVfT1AiLCAiQU5EX09QIiwgIk9SX09QIiwgIlhPUl9PUCIs
ICJNVUxfQVNTSUdOIiwgIkRJVl9BU1NJR04iLAotICAiQUREX0FTU0lHTiIsICJNT0RfQVNTSUdO
IiwgIkxFRlRfQVNTSUdOIiwgIlJJR0hUX0FTU0lHTiIsICJBTkRfQVNTSUdOIiwKLSAgIlhPUl9B
U1NJR04iLCAiT1JfQVNTSUdOIiwgIlNVQl9BU1NJR04iLCAiTEVGVF9QQVJFTiIsICJSSUdIVF9Q
QVJFTiIsCi0gICJMRUZUX0JSQUNLRVQiLCAiUklHSFRfQlJBQ0tFVCIsICJMRUZUX0JSQUNFIiwg
IlJJR0hUX0JSQUNFIiwgIkRPVCIsCi0gICJDT01NQSIsICJDT0xPTiIsICJFUVVBTCIsICJTRU1J
Q09MT04iLCAiQkFORyIsICJEQVNIIiwgIlRJTERFIiwgIlBMVVMiLAotICAiU1RBUiIsICJTTEFT
SCIsICJQRVJDRU5UIiwgIkxFRlRfQU5HTEUiLCAiUklHSFRfQU5HTEUiLCAiVkVSVElDQUxfQkFS
IiwKLSAgIkNBUkVUIiwgIkFNUEVSU0FORCIsICJRVUVTVElPTiIsICIkYWNjZXB0IiwgInZhcmlh
YmxlX2lkZW50aWZpZXIiLAorICAiRkxPQVRDT05TVEFOVCIsICJJTlRDT05TVEFOVCIsICJCT09M
Q09OU1RBTlQiLCAiTEVGVF9PUCIsICJSSUdIVF9PUCIsCisgICJJTkNfT1AiLCAiREVDX09QIiwg
IkxFX09QIiwgIkdFX09QIiwgIkVRX09QIiwgIk5FX09QIiwgIkFORF9PUCIsCisgICJPUl9PUCIs
ICJYT1JfT1AiLCAiTVVMX0FTU0lHTiIsICJESVZfQVNTSUdOIiwgIkFERF9BU1NJR04iLAorICAi
TU9EX0FTU0lHTiIsICJMRUZUX0FTU0lHTiIsICJSSUdIVF9BU1NJR04iLCAiQU5EX0FTU0lHTiIs
ICJYT1JfQVNTSUdOIiwKKyAgIk9SX0FTU0lHTiIsICJTVUJfQVNTSUdOIiwgIkxFRlRfUEFSRU4i
LCAiUklHSFRfUEFSRU4iLCAiTEVGVF9CUkFDS0VUIiwKKyAgIlJJR0hUX0JSQUNLRVQiLCAiTEVG
VF9CUkFDRSIsICJSSUdIVF9CUkFDRSIsICJET1QiLCAiQ09NTUEiLCAiQ09MT04iLAorICAiRVFV
QUwiLCAiU0VNSUNPTE9OIiwgIkJBTkciLCAiREFTSCIsICJUSUxERSIsICJQTFVTIiwgIlNUQVIi
LCAiU0xBU0giLAorICAiUEVSQ0VOVCIsICJMRUZUX0FOR0xFIiwgIlJJR0hUX0FOR0xFIiwgIlZF
UlRJQ0FMX0JBUiIsICJDQVJFVCIsCisgICJBTVBFUlNBTkQiLCAiUVVFU1RJT04iLCAiJGFjY2Vw
dCIsICJpZGVudGlmaWVyIiwgInZhcmlhYmxlX2lkZW50aWZpZXIiLAogICAicHJpbWFyeV9leHBy
ZXNzaW9uIiwgInBvc3RmaXhfZXhwcmVzc2lvbiIsICJpbnRlZ2VyX2V4cHJlc3Npb24iLAogICAi
ZnVuY3Rpb25fY2FsbCIsICJmdW5jdGlvbl9jYWxsX29yX21ldGhvZCIsICJmdW5jdGlvbl9jYWxs
X2dlbmVyaWMiLAogICAiZnVuY3Rpb25fY2FsbF9oZWFkZXJfbm9fcGFyYW1ldGVycyIsCkBAIC04
NDIsNjAgKzg2Myw2MCBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXRva251bVtdID0K
ICAgICAgMzE1LCAgIDMxNiwgICAzMTcsICAgMzE4LCAgIDMxOSwgICAzMjAsICAgMzIxLCAgIDMy
MiwgICAzMjMsICAgMzI0LAogICAgICAzMjUsICAgMzI2LCAgIDMyNywgICAzMjgsICAgMzI5LCAg
IDMzMCwgICAzMzEsICAgMzMyLCAgIDMzMywgICAzMzQsCiAgICAgIDMzNSwgICAzMzYsICAgMzM3
LCAgIDMzOCwgICAzMzksICAgMzQwLCAgIDM0MSwgICAzNDIsICAgMzQzLCAgIDM0NCwKLSAgICAg
MzQ1LCAgIDM0NiwgICAzNDcsICAgMzQ4LCAgIDM0OSwgICAzNTAKKyAgICAgMzQ1LCAgIDM0Niwg
ICAzNDcsICAgMzQ4LCAgIDM0OQogfTsKICMgZW5kaWYKIAogLyogWVlSMVtZWU5dIC0tIFN5bWJv
bCBudW1iZXIgb2Ygc3ltYm9sIHRoYXQgcnVsZSBZWU4gZGVyaXZlcy4gICovCiBzdGF0aWMgY29u
c3QgeXl0eXBlX3VpbnQ4IHl5cjFbXSA9CiB7Ci0gICAgICAgMCwgICAgOTYsICAgIDk3LCAgICA5
OCwgICAgOTgsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk5LCAgICA5OSwKLSAgICAgIDk5LCAg
ICA5OSwgICAgOTksICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMiwgICAxMDMsICAg
MTAzLAotICAgICAxMDQsICAgMTA0LCAgIDEwNSwgICAxMDUsICAgMTA2LCAgIDEwNywgICAxMDcs
ICAgMTA3LCAgIDEwOCwgICAxMDgsCi0gICAgIDEwOCwgICAxMDgsICAgMTA5LCAgIDEwOSwgICAx
MDksICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTExLCAgIDExMSwKLSAgICAgMTExLCAgIDExMiwg
ICAxMTMsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExNCwgICAxMTQsICAgMTE0LAot
ICAgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE4LCAgIDExOSwgICAxMTksICAgMTIw
LCAgIDEyMCwgICAxMjEsCi0gICAgIDEyMSwgICAxMjIsICAgMTIyLCAgIDEyMywgICAxMjMsICAg
MTIzLCAgIDEyMywgICAxMjMsICAgMTI0LCAgIDEyNCwKLSAgICAgMTI1LCAgIDEyNiwgICAxMjYs
ICAgMTI2LCAgIDEyNywgICAxMjgsICAgMTI4LCAgIDEyOSwgICAxMjksICAgMTMwLAotICAgICAx
MzEsICAgMTMxLCAgIDEzMiwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzMsICAgMTMzLCAgIDEz
MywgICAxMzMsCi0gICAgIDEzNCwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM1LCAg
IDEzNiwgICAxMzYsICAgMTM2LCAgIDEzNiwKLSAgICAgMTM2LCAgIDEzNiwgICAxMzcsICAgMTM3
LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM5LAotICAgICAxMzksICAg
MTQwLCAgIDE0MCwgICAxNDAsICAgMTQxLCAgIDE0MSwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAx
NDIsCisgICAgICAgMCwgICAgOTUsICAgIDk2LCAgICA5NiwgICAgOTcsICAgIDk4LCAgICA5OCwg
ICAgOTgsICAgIDk4LCAgICA5OCwKKyAgICAgIDk5LCAgICA5OSwgICAgOTksICAgIDk5LCAgICA5
OSwgICAgOTksICAgMTAwLCAgIDEwMSwgICAxMDIsICAgMTAyLAorICAgICAxMDMsICAgMTAzLCAg
IDEwNCwgICAxMDQsICAgMTA1LCAgIDEwNSwgICAxMDYsICAgMTA3LCAgIDEwNywgICAxMDgsCisg
ICAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOSwgICAxMDksICAgMTA5LCAgIDExMCwgICAxMTAs
ICAgMTEwLCAgIDExMSwKKyAgICAgMTExLCAgIDExMSwgICAxMTIsICAgMTEzLCAgIDExMywgICAx
MTMsICAgMTEzLCAgIDExMywgICAxMTQsICAgMTE0LAorICAgICAxMTQsICAgMTE1LCAgIDExNiwg
ICAxMTcsICAgMTE4LCAgIDExOCwgICAxMTksICAgMTE5LCAgIDEyMCwgICAxMjAsCisgICAgIDEy
MSwgICAxMjEsICAgMTIyLCAgIDEyMiwgICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTIz
LCAgIDEyNCwKKyAgICAgMTI0LCAgIDEyNSwgICAxMjYsICAgMTI2LCAgIDEyNiwgICAxMjcsICAg
MTI4LCAgIDEyOCwgICAxMjksICAgMTI5LAorICAgICAxMzAsICAgMTMxLCAgIDEzMSwgICAxMzIs
ICAgMTMyLCAgIDEzMiwgICAxMzIsICAgMTMzLCAgIDEzMywgICAxMzMsCisgICAgIDEzMywgICAx
MzQsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzYsICAgMTM2LCAgIDEz
NiwKKyAgICAgMTM2LCAgIDEzNiwgICAxMzYsICAgMTM3LCAgIDEzNywgICAxMzgsICAgMTM4LCAg
IDEzOCwgICAxMzgsICAgMTM4LAorICAgICAxMzksICAgMTM5LCAgIDE0MCwgICAxNDAsICAgMTQw
LCAgIDE0MSwgICAxNDEsICAgMTQyLCAgIDE0MiwgICAxNDIsCiAgICAgIDE0MiwgICAxNDIsICAg
MTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwKLSAg
ICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0Miwg
ICAxNDQsICAgMTQzLAotICAgICAxNDUsICAgMTQzLCAgIDE0NiwgICAxNDYsICAgMTQ3LCAgIDE0
OCwgICAxNDgsICAgMTQ5LCAgIDE0OSwgICAxNTAsCi0gICAgIDE1MSwgICAxNTIsICAgMTUyLCAg
IDE1MywgICAxNTMsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTU0LCAgIDE1NSwKLSAgICAgMTU2
LCAgIDE1NCwgICAxNTcsICAgMTU3LCAgIDE1OSwgICAxNTgsICAgMTYwLCAgIDE1OCwgICAxNjEs
ICAgMTYxLAotICAgICAxNjIsICAgMTYyLCAgIDE2MywgICAxNjMsICAgMTY0LCAgIDE2NSwgICAx
NjUsICAgMTY2LCAgIDE2NiwgICAxNjgsCi0gICAgIDE2NywgICAxNjksICAgMTY3LCAgIDE3MCwg
ICAxNjcsICAgMTcxLCAgIDE3MSwgICAxNzIsICAgMTcyLCAgIDE3MywKLSAgICAgMTczLCAgIDE3
NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc1LCAgIDE3NSwgICAxNzYsICAgMTc2
LAotICAgICAxNzgsICAgMTc3CisgICAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIs
ICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0NCwKKyAgICAgMTQzLCAgIDE0NSwgICAx
NDMsICAgMTQ2LCAgIDE0NiwgICAxNDcsICAgMTQ4LCAgIDE0OCwgICAxNDksICAgMTQ5LAorICAg
ICAxNTAsICAgMTUxLCAgIDE1MiwgICAxNTIsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUzLCAg
IDE1MywgICAxNTQsCisgICAgIDE1NSwgICAxNTYsICAgMTU0LCAgIDE1NywgICAxNTcsICAgMTU5
LCAgIDE1OCwgICAxNjAsICAgMTU4LCAgIDE2MSwKKyAgICAgMTYxLCAgIDE2MiwgICAxNjIsICAg
MTYzLCAgIDE2MywgICAxNjQsICAgMTY1LCAgIDE2NSwgICAxNjYsICAgMTY2LAorICAgICAxNjgs
ICAgMTY3LCAgIDE2OSwgICAxNjcsICAgMTcwLCAgIDE2NywgICAxNzEsICAgMTcxLCAgIDE3Miwg
ICAxNzIsCisgICAgIDE3MywgICAxNzMsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3
NCwgICAxNzUsICAgMTc1LCAgIDE3NiwKKyAgICAgMTc2LCAgIDE3OCwgICAxNzcKIH07CiAKIC8q
IFlZUjJbWVlOXSAtLSBOdW1iZXIgb2Ygc3ltYm9scyBjb21wb3NpbmcgcmlnaHQgaGFuZCBzaWRl
IG9mIHJ1bGUgWVlOLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0KIHsK
LSAgICAgICAwLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MywgICAgIDEsICAgICA0LAotICAgICAgIDEsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAzLCAgICAgMiwgICAgIDIsCi0gICAgICAgMiwgICAgIDEsICAgICAy
LCAgICAgMywgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwKLSAgICAg
ICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAg
IDEsICAgICAzLAotICAgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMywg
ICAgIDMsICAgICAxLCAgICAgMywgICAgIDMsCi0gICAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwKLSAgICAgICA1LCAg
ICAgMSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAzLAotICAgICAgIDEsICAgICAyLCAgICAgMiwgICAgIDQsICAgICAyLCAgICAgMSwgICAgIDEs
ICAgICAyLCAgICAgMywgICAgIDMsCi0gICAgICAgMiwgICAgIDUsICAgICAzLCAgICAgMiwgICAg
IDMsICAgICAyLCAgICAgMCwgICAgIDEsICAgICAxLCAgICAgMSwKLSAgICAgICAxLCAgICAgMSwg
ICAgIDMsICAgICA1LCAgICAgNiwgICAgIDUsICAgICAxLCAgICAgMiwgICAgIDQsICAgICA1LAot
ICAgICAgIDQsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAy
LCAgICAgMSwgICAgIDEsCi0gICAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICA0LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAwLCAgICAgMiwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLAorICAgICAg
IDEsICAgICA0LCAgICAgMSwgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDMsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAzLCAg
ICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDMsICAgICAxLAorICAgICAgIDMsICAg
ICAzLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMSwgICAg
IDMsCisgICAgICAgMywgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMSwg
ICAgIDMsICAgICAxLCAgICAgMywKKyAgICAgICAxLCAgICAgNSwgICAgIDEsICAgICAzLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAorICAgICAgIDMsICAgICAxLCAg
ICAgMiwgICAgIDIsICAgICA0LCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDMsCisg
ICAgICAgMywgICAgIDIsICAgICA1LCAgICAgMywgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDAs
ICAgICAxLCAgICAgMSwKKyAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgNSwgICAg
IDYsICAgICA1LCAgICAgMSwgICAgIDIsICAgICA0LAorICAgICAgIDUsICAgICA0LCAgICAgMiwg
ICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDEsCisgICAgICAg
MSwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgNCwgICAgIDEsICAgICAx
LCAgICAgMSwKICAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLAotICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDYsCi0gICAgICAgMCwgICAg
IDUsICAgICAxLCAgICAgMiwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICA0LCAgICAg
MSwKLSAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDIsICAgICAwLAotICAgICAgIDAsICAgICA1LCAgICAgMSwgICAgIDEsICAgICAw
LCAgICAgMiwgICAgIDAsICAgICAyLCAgICAgMiwgICAgIDMsCi0gICAgICAgMSwgICAgIDIsICAg
ICAxLCAgICAgMiwgICAgIDUsICAgICAzLCAgICAgMSwgICAgIDEsICAgICA0LCAgICAgMCwKLSAg
ICAgICA2LCAgICAgMCwgICAgIDgsICAgICAwLCAgICAgNywgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDAsICAgICAyLAotICAgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAzLCAgICAg
MiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsCi0gICAgICAgMCwgICAgIDMKKyAgICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAwLAorICAgICAgIDYsICAgICAwLCAgICAgNSwgICAgIDEsICAgICAyLCAgICAgMywgICAg
IDEsICAgICAzLCAgICAgMSwgICAgIDQsCisgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwKKyAgICAgICAwLCAgICAg
MCwgICAgIDUsICAgICAxLCAgICAgMSwgICAgIDAsICAgICAyLCAgICAgMCwgICAgIDIsICAgICAy
LAorICAgICAgIDMsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgNSwgICAgIDMsICAg
ICAxLCAgICAgMSwgICAgIDQsCisgICAgICAgMCwgICAgIDYsICAgICAwLCAgICAgOCwgICAgIDAs
ICAgICA3LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwKKyAgICAgICAyLCAgICAgMywgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLAorICAg
ICAgIDEsICAgICAwLCAgICAgMwogfTsKIAogLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0gLS0gRGVm
YXVsdCBydWxlIHRvIHJlZHVjZSB3aXRoIGluIHN0YXRlCkBAIC05MDMsNDAwICs5MjQsNDE2IEBA
IHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0KICAgIG1lYW5zIHRoZSBkZWZhdWx0
IGlzIGFuIGVycm9yLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlkZWZhY3RbXSA9
CiB7Ci0gICAgICAgMCwgICAgIDAsICAgMTExLCAgIDExMiwgICAxMTMsICAgICAwLCAgIDEwNSwg
ICAxMDQsICAgMTE5LCAgIDExNywKLSAgICAgMTE4LCAgIDEyMywgICAxMjQsICAgMTI1LCAgIDEy
NiwgICAxMjcsICAgMTI4LCAgIDEyMCwgICAxMjEsICAgMTIyLAotICAgICAxMjksICAgMTMwLCAg
IDEzMSwgICAxMDgsICAgMTA2LCAgICAgMCwgICAxMTYsICAgMTMyLCAgIDEzMywgICAxMzQsCi0g
ICAgIDEzNSwgICAxMzcsICAgMTk5LCAgIDIwMCwgICAgIDAsICAgIDc2LCAgICA4NiwgICAgIDAs
ICAgIDkxLCAgICA5NiwKLSAgICAgICAwLCAgIDEwMiwgICAgIDAsICAgMTA5LCAgIDExNCwgICAx
MzYsICAgICAwLCAgIDE5NiwgICAxOTgsICAgMTA3LAotICAgICAxMDEsICAgICAwLCAgICAgMCwg
ICAxNDAsICAgIDcxLCAgICAgMCwgICAgNzQsICAgIDg2LCAgICAgMCwgICAgODcsCi0gICAgICA4
OCwgICAgODksICAgIDc3LCAgICAgMCwgICAgODYsICAgICAwLCAgICA3MiwgICAgOTcsICAgMTAz
LCAgIDExMCwKLSAgICAgICAwLCAgICAgMSwgICAxOTcsICAgICAwLCAgIDEzOCwgICAgIDAsICAg
ICAwLCAgIDIwMSwgICAgNzgsICAgIDgzLAotICAgICAgODUsICAgIDkwLCAgICAgMCwgICAgOTIs
ICAgIDc5LCAgICAgMCwgICAgIDAsICAgICAyLCAgICAgNSwgICAgIDQsCi0gICAgICAgNiwgICAg
MjcsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDM0LCAgICAzMywgICAgMzIsICAgICAzLCAgICAg
OCwKLSAgICAgIDI4LCAgICAxMCwgICAgMTUsICAgIDE2LCAgICAgMCwgICAgIDAsICAgIDIxLCAg
ICAgMCwgICAgMzUsICAgICAwLAotICAgICAgMzgsICAgIDQxLCAgICA0MiwgICAgNDcsICAgIDUw
LCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NSwgICAgNTcsCi0gICAgICA1OSwgICAgNzAsICAg
ICAwLCAgICAyNSwgICAgNzMsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQyLCAgICAgMCwKLSAg
ICAgICAwLCAgIDE4MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1OSwg
ICAxNjgsICAgMTcyLAotICAgICAgMzUsICAgIDYxLCAgICA2OCwgICAgIDAsICAgMTUwLCAgICAg
MCwgICAxMTQsICAgMTUzLCAgIDE3MCwgICAxNTIsCi0gICAgIDE1MSwgICAgIDAsICAgMTU0LCAg
IDE1NSwgICAxNTYsICAgMTU3LCAgICA4MCwgICAgODIsICAgIDg0LCAgICAgMCwKLSAgICAgICAw
LCAgICA5OCwgICAgIDAsICAgMTQ5LCAgIDEwMCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMTIs
ICAgIDEzLAotICAgICAgIDAsICAgICAwLCAgICAxOSwgICAgMTgsICAgICAwLCAgICAyMCwgICAg
MjIsICAgIDI0LCAgICAzMSwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgMTE1LCAgICAgMCwgICAxNDcsICAgICAwLCAgIDE0NSwgICAxNDEsICAgMTQz
LAotICAgICAxOTIsICAgMTkxLCAgIDE2NiwgICAxODMsICAgICAwLCAgIDE5NSwgICAxOTMsICAg
ICAwLCAgIDE3OSwgICAxNTgsCi0gICAgICAgMCwgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcs
ICAgIDYzLCAgICAgMCwgICAgIDAsICAgMTczLCAgIDE2OSwKLSAgICAgMTcxLCAgICAgMCwgICAg
OTMsICAgICAwLCAgICA5NSwgICAgOTksICAgICA3LCAgICAgMCwgICAgMTQsICAgIDI2LAotICAg
ICAgMTEsICAgIDE3LCAgICAyMywgICAgMzYsICAgIDM3LCAgICA0MCwgICAgMzksICAgIDQ1LCAg
ICA0NiwgICAgNDMsCi0gICAgICA0NCwgICAgNDgsICAgIDQ5LCAgICA1NCwgICAgNTYsICAgIDU4
LCAgICAgMCwgICAxMzksICAgICAwLCAgICAgMCwKLSAgICAgMTQ0LCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTk0LCAgICAgMCwgICAxNjAsICAgIDYyLAotICAgICAgNjks
ICAgICAwLCAgICA5NCwgICAgIDksICAgICAwLCAgICAgMCwgICAxNDYsICAgICAwLCAgIDE2NSwg
ICAxNjcsCi0gICAgIDE4NiwgICAxODUsICAgMTg4LCAgIDE2NiwgICAxNzcsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDgxLCAgICA2MCwKLSAgICAgMTQ4LCAgICAgMCwgICAxODcsICAgICAwLCAg
ICAgMCwgICAxNzYsICAgMTc0LCAgICAgMCwgICAgIDAsICAgMTYxLAotICAgICAgIDAsICAgMTg5
LCAgICAgMCwgICAxNjYsICAgICAwLCAgIDE2MywgICAxODAsICAgMTYyLCAgICAgMCwgICAxOTAs
Ci0gICAgIDE4NCwgICAxNzUsICAgMTc4LCAgIDE4MgorICAgICAgIDAsICAgICAwLCAgIDExMiwg
ICAxMTMsICAgMTE0LCAgICAgMCwgICAxMDYsICAgMTA1LCAgIDEyMCwgICAxMTgsCisgICAgIDEx
OSwgICAxMjQsICAgMTI1LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOSwgICAxMjEsICAgMTIy
LCAgIDEyMywKKyAgICAgMTMwLCAgIDEzMSwgICAxMzIsICAgMTA5LCAgIDEwNywgICAgIDAsICAg
MTE3LCAgIDEzMywgICAxMzQsICAgMTM1LAorICAgICAxMzYsICAgMTM4LCAgIDIwMCwgICAyMDEs
ICAgICAwLCAgICA3NywgICAgODcsICAgICAwLCAgICA5MiwgICAgOTcsCisgICAgICAgMCwgICAx
MDMsICAgICAwLCAgIDExMCwgICAxMTUsICAgMTM3LCAgICAgMCwgICAxOTcsICAgMTk5LCAgIDEw
OCwKKyAgICAgMTAyLCAgICAgMCwgICAgIDIsICAgICAzLCAgIDE0MSwgICAgIDAsICAgIDcyLCAg
ICAgMCwgICAgNzUsICAgIDg3LAorICAgICAgIDAsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDc4
LCAgICAgMCwgICAgODcsICAgICAwLCAgICA3MywgICAgIDIsCisgICAgICA5OCwgICAxMDQsICAg
MTExLCAgICAgMCwgICAgIDEsICAgMTk4LCAgICAgMCwgICAgIDAsICAgMTM5LCAgICAgMCwKKyAg
ICAgMjAyLCAgICA3OSwgICAgODQsICAgIDg2LCAgICA5MSwgICAgIDAsICAgIDkzLCAgICA4MCwg
ICAgIDAsICAgICAwLAorICAgICAgIDQsICAgICA3LCAgICAgNiwgICAgIDgsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDM1LCAgICAzNCwgICAgMzMsCisgICAgICAgNSwgICAgMTAsICAgIDI5LCAg
ICAxMiwgICAgMTcsICAgIDE4LCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAgMCwKKyAgICAgIDM2
LCAgICAgMCwgICAgMzksICAgIDQyLCAgICA0MywgICAgNDgsICAgIDUxLCAgICA1MiwgICAgNTMs
ICAgIDU0LAorICAgICAgNTYsICAgIDU4LCAgICA2MCwgICAgNzEsICAgICAwLCAgICAyNywgICAg
NzQsICAgICAwLCAgICAgMCwgICAxNDMsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE4Miwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE2MCwKKyAgICAgMTY5LCAgIDE3
MywgICAgMzYsICAgIDYyLCAgICA2OSwgICAgIDAsICAgMTUxLCAgICAgMCwgICAxMTUsICAgMTU0
LAorICAgICAxNzEsICAgMTUzLCAgIDE1MiwgICAgIDAsICAgMTU1LCAgIDE1NiwgICAxNTcsICAg
MTU4LCAgICA4MSwgICAgODMsCisgICAgICA4NSwgICAgIDAsICAgICAwLCAgICA5OSwgICAgIDAs
ICAgMTUwLCAgIDEwMSwgICAgMzAsICAgIDMxLCAgICAgMCwKKyAgICAgIDE0LCAgICAxNSwgICAg
IDAsICAgICAwLCAgICAyMSwgICAgMjAsICAgICAwLCAgICAyMiwgICAgMjQsICAgIDI2LAorICAg
ICAgMzIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTE2
LCAgIDE0OCwgICAgIDAsICAgMTQ2LCAgIDE0MiwKKyAgICAgMTQ0LCAgICAgMCwgICAxOTMsICAg
MTkyLCAgIDE2NywgICAxODQsICAgICAwLCAgIDE5NiwgICAxOTQsICAgICAwLAorICAgICAxODAs
ICAgMTU5LCAgICAgMCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY0LCAgICAgMCwg
ICAgIDAsCisgICAgIDE3NCwgICAxNzAsICAgMTcyLCAgICAgMCwgICAgOTQsICAgICAwLCAgICA5
NiwgICAxMDAsICAgICA5LCAgICAgMCwKKyAgICAgIDE2LCAgICAgMiwgICAgIDMsICAgIDEzLCAg
ICAxOSwgICAgMjUsICAgIDM3LCAgICAzOCwgICAgNDEsICAgIDQwLAorICAgICAgNDYsICAgIDQ3
LCAgICA0NCwgICAgNDUsICAgIDQ5LCAgICA1MCwgICAgNTUsICAgIDU3LCAgICA1OSwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgMTQ1LCAgIDE0MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgIDE5NSwKKyAgICAgICAwLCAgIDE2MSwgICAgNjMsICAgIDcwLCAgICAgMCwg
ICAgOTUsICAgIDExLCAgICAgMCwgICAgIDAsICAgMTQ3LAorICAgICAgIDAsICAgMTY2LCAgIDE2
OCwgICAxODcsICAgMTg2LCAgIDE4OSwgICAxNjcsICAgMTc4LCAgICAgMCwgICAgIDAsCisgICAg
ICAgMCwgICAgODIsICAgIDYxLCAgIDE0OSwgICAgIDAsICAgMTg4LCAgICAgMCwgICAgIDAsICAg
MTc3LCAgIDE3NSwKKyAgICAgICAwLCAgICAgMCwgICAxNjIsICAgICAwLCAgIDE5MCwgICAgIDAs
ICAgMTY3LCAgICAgMCwgICAxNjQsICAgMTgxLAorICAgICAxNjMsICAgICAwLCAgIDE5MSwgICAx
ODUsICAgMTc2LCAgIDE3OSwgICAxODMKIH07CiAKIC8qIFlZREVGR09UT1tOVEVSTS1OVU1dLiAg
Ki8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlkZWZnb3RvW10gPQogewotICAgICAgLTEs
ICAgIDk4LCAgICA5OSwgICAxMDAsICAgMjI3LCAgIDEwMSwgICAxMDIsICAgMTAzLCAgIDEwNCwg
ICAxMDUsCi0gICAgIDEwNiwgICAxMDcsICAgMTQwLCAgIDEwOSwgICAxMTAsICAgMTExLCAgIDEx
MiwgICAxMTMsICAgMTE0LCAgIDExNSwKLSAgICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE5LCAg
IDEyMCwgICAxNDEsICAgMTQyLCAgIDIxNiwgICAxNDMsICAgMTIyLAotICAgICAxNDQsICAgMTQ1
LCAgICAzNCwgICAgMzUsICAgIDM2LCAgICA3OSwgICAgNjIsICAgIDYzLCAgICA4MCwgICAgMzcs
Ci0gICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgIDEyMywgICAg
NDUsICAgMTI1LCAgICA3NSwKLSAgICAgMTI3LCAgIDEyOCwgICAxOTYsICAgMTk3LCAgIDE2NCwg
ICAxNDcsICAgMTQ4LCAgIDE0OSwgICAxNTAsICAgMjEwLAotICAgICAyNzcsICAgMjk2LCAgIDI1
MSwgICAyNTIsICAgMjUzLCAgIDI5NywgICAxNTEsICAgMTUyLCAgIDE1MywgICAyODYsCi0gICAg
IDI3NiwgICAxNTQsICAgMjU3LCAgIDIwMiwgICAyNTQsICAgMjcyLCAgIDI4MywgICAyODQsICAg
MTU1LCAgICA0NiwKLSAgICAgIDQ3LCAgICA0OCwgICAgNTUKKyAgICAgIC0xLCAgIDE5NiwgICAx
MDAsICAgMTAxLCAgIDEwMiwgICAyMjksICAgMTAzLCAgIDEwNCwgICAxMDUsICAgMTA2LAorICAg
ICAxMDcsICAgMTA4LCAgIDEwOSwgICAxNDIsICAgMTExLCAgIDExMiwgICAxMTMsICAgMTE0LCAg
IDExNSwgICAxMTYsCisgICAgIDExNywgICAxMTgsICAgMTE5LCAgIDEyMCwgICAxMjEsICAgMTIy
LCAgIDE0MywgICAxNDQsICAgMjE4LCAgIDE0NSwKKyAgICAgMTI0LCAgIDE0NiwgICAxNDcsICAg
IDM0LCAgICAzNSwgICAgMzYsICAgIDgyLCAgICA2NCwgICAgNjUsICAgIDgzLAorICAgICAgMzcs
ICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgMTI1LCAgICA0NSwg
ICAxMzAsCisgICAgICA3NywgICAxMjgsICAgMTI5LCAgIDE5NywgICAxOTgsICAgMTY2LCAgIDE0
OSwgICAxNTAsICAgMTUxLCAgIDE1MiwKKyAgICAgMjEyLCAgIDI4MCwgICAyOTksICAgMjU0LCAg
IDI1NSwgICAyNTYsICAgMzAwLCAgIDE1MywgICAxNTQsICAgMTU1LAorICAgICAyODksICAgMjc5
LCAgIDE1NiwgICAyNjAsICAgMjA0LCAgIDI1NywgICAyNzUsICAgMjg2LCAgIDI4NywgICAxNTcs
CisgICAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA1NwogfTsKIAogLyogWVlQQUNUW1NUQVRFLU5V
TV0gLS0gSW5kZXggaW4gWVlUQUJMRSBvZiB0aGUgcG9ydGlvbiBkZXNjcmliaW5nCiAgICBTVEFU
RS1OVU0uICAqLwotI2RlZmluZSBZWVBBQ1RfTklORiAtMjY2CisjZGVmaW5lIFlZUEFDVF9OSU5G
IC0yNjEKIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlwYWN0W10gPQogewotICAgIDEyNTMs
ICAgLTIwLCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDE0OCwgIC0yNjYsICAtMjY2LCAgLTI2Niwg
IC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2
NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
LTI2NiwgICAtMzksICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2
LCAgLTI2NiwgICAtMTgsICAgIC0yLCAgICAgNiwgICAgMjEsICAgLTYxLCAgLTI2NiwgICAgNTEs
Ci0gICAgMTI5NiwgIC0yNjYsICAxMzcwLCAgLTI2NiwgICAgMjUsICAtMjY2LCAgMTIwOSwgIC0y
NjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgMTM3MCwgICAgNDIsICAtMjY2LCAgLTI2Niwg
ICAgNTAsICAtMjY2LCAgICA3MSwgICAgOTUsICAtMjY2LAotICAgIC0yNjYsICAtMjY2LCAgLTI2
NiwgIDEyOTYsICAgMTIzLCAgIDEwNSwgIC0yNjYsICAgICA5LCAgLTI2NiwgIC0yNjYsCi0gICAg
IDk3NCwgIC0yNjYsICAtMjY2LCAgICA4MSwgIC0yNjYsICAxMjk2LCAgIDI5MCwgIC0yNjYsICAt
MjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIDEyNSwgIDEyOTYsICAgLTEzLCAgLTI2NiwgICA3NzYs
ICAgOTc0LCAgICA5OSwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2LCAgIDk3NCwgICA5
NzQsICAgOTc0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgICAzNSwg
IC0yNjYsICAtMjY2LCAgLTI2NiwgICAxMDAsICAgIC02LCAgMTA0MCwgICAxMDQsICAtMjY2LCAg
IDk3NCwKLSAgICAgIDM2LCAgIC02NCwgIC0yNjYsICAgLTIxLCAgIDEwMiwgIC0yNjYsICAtMjY2
LCAgLTI2NiwgICAxMTMsICAgMTE3LAotICAgICAtNTEsICAtMjY2LCAgIDEwOCwgIC0yNjYsICAt
MjY2LCAgMTI5NiwgICAxMjksICAxMTA5LCAgLTI2NiwgICAgOTcsCi0gICAgIDEwMywgIC0yNjYs
ICAgMTEyLCAgIDExNCwgICAxMDYsICAgODQyLCAgIDExNSwgICAxMTYsICAtMjY2LCAgLTI2NiwK
LSAgICAgIDM5LCAgLTI2NiwgIC0yNjYsICAgLTQzLCAgLTI2NiwgICAtMTgsICAgIDQ3LCAgLTI2
NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgMzc0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
LTI2NiwgICAxMTgsICAtMjY2LCAgLTI2NiwgICA5MDgsCi0gICAgIDk3NCwgIC0yNjYsICAgMTIw
LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAgMTksICAtMjY2LCAgLTI2NiwKLSAgICAg
OTc0LCAgMTMzMywgIC0yNjYsICAtMjY2LCAgIDk3NCwgICAxMTksICAtMjY2LCAgLTI2NiwgIC0y
NjYsICAgOTc0LAotICAgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwg
ICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsCi0gICAgIDk3NCwgICA5NzQsICAgOTc0LCAgLTI2
NiwgIDExNTIsICAgMTIyLCAgIC0yOSwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAg
LTI2NiwgICAxMjEsICAtMjY2LCAgIDk3NCwgIC0yNjYsICAtMjY2LCAgICAgNSwgIC0yNjYsICAt
MjY2LAotICAgICA0NTgsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICA5NzQs
ICAgOTc0LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICA5NzQsICAtMjY2LCAgIDEzNywgIC0y
NjYsICAtMjY2LCAgLTI2NiwgICAxMzgsICAgMTExLCAgLTI2NiwKLSAgICAgMTQyLCAgLTI2Niwg
IC0yNjYsICAtMjY2LCAgLTI2NiwgICAgMzYsICAgIDM2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAot
ICAgIC0yNjYsICAgLTIxLCAgIC0yMSwgIC0yNjYsICAgMTEzLCAgIDExNywgICAgODIsICAtMjY2
LCAgIDk3NCwgICAxMjksCi0gICAgLTI2NiwgICAxNzUsICAgIDUwLCAgIDYyNiwgICA3MTAsICAg
IDM4LCAgLTI2NiwgICAxOTcsICAgNDU4LCAgLTI2NiwKLSAgICAtMjY2LCAgIDE0MSwgIC0yNjYs
ICAtMjY2LCAgIDk3NCwgICAxNTUsICAtMjY2LCAgIDE0NSwgIC0yNjYsICAtMjY2LAotICAgIC0y
NjYsICAtMjY2LCAgIDE5NywgICAxMjEsICAgMTExLCAgIDE4NiwgICAxNTksICAgMTYwLCAgLTI2
NiwgIC0yNjYsCi0gICAgLTI2NiwgICA5NzQsICAtMjY2LCAgIDE2NiwgICAxNzYsICAgMjM2LCAg
LTI2NiwgICAxNzQsICAgNTQyLCAgLTI2NiwKLSAgICAgIDQzLCAgIDk3NCwgICA1NDIsICAgMTIx
LCAgIDk3NCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxNzcsICAgMTExLAotICAgIC0yNjYsICAt
MjY2LCAgLTI2NiwgIC0yNjYKKyAgICAxMzI3LCAgIC0yMCwgIC0yNjEsICAtMjYxLCAgLTI2MSwg
ICAxMTMsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgLTE5LCAgLTI2MSwgIC0yNjEsICAt
MjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgLTYxLCAgIC00MCwgICAtMjgs
ICAgIDc1LCAgICAtNywgIC0yNjEsICAgIDI0LAorICAgIDEzNzAsICAtMjYxLCAgMTQ0NCwgIC0y
NjEsICAgLTExLCAgLTI2MSwgIDEyODMsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwg
IDE0NDQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgICA2LCAgLTI2MSwgICAgNTQsICAtMjYxLCAg
ICA4OCwKKyAgICAgIDYyLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEzNzAsICAgIDU5
LCAgICA5MSwgIC0yNjEsICAgIDM2LAorICAgICAtNTAsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAt
MjYxLCAgLTI2MSwgICAgNjMsICAxMzcwLCAgLTI2MSwgICAyOTMsCisgICAgLTI2MSwgIC0yNjEs
ICAtMjYxLCAgLTI2MSwgICAgOTEsICAxMzcwLCAgIC0xMiwgIC0yNjEsICAgODU2LCAgMTA1MSwK
KyAgICAgIDc3LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgLTI2
MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgIC0xNCwgIC0yNjEsICAtMjYxLCAg
LTI2MSwgICAgODQsICAgLTQ0LCAgMTExNiwgICAgOTUsCisgICAgLTI2MSwgIDEwNTEsICAgIDUz
LCAgICAgMywgIC0yNjEsICAgLTM2LCAgICA4OSwgIC0yNjEsICAtMjYxLCAgLTI2MSwKKyAgICAg
MTA0LCAgIDEwNywgICAtNDUsICAtMjYxLCAgICA5NiwgIC0yNjEsICAtMjYxLCAgICA5MSwgIDEx
ODQsICAtMjYxLAorICAgIDEzNzAsICAgIDkyLCAgICA5MywgIC0yNjEsICAgIDk4LCAgIDEwMSwg
ICAgOTQsICAgOTIxLCAgIDEwNSwgICAxMDIsCisgICAgLTI2MSwgIC0yNjEsICAgIDcyLCAgLTI2
MSwgIC0yNjEsICAgICA5LCAgLTI2MSwgICAtNjEsICAgIDQyLCAgLTI2MSwKKyAgICAtMjYxLCAg
LTI2MSwgIC0yNjEsICAgMzc2LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAxMDYsICAt
MjYxLAorICAgIC0yNjEsICAgOTg2LCAgMTA1MSwgIC0yNjEsICAgMTAzLCAgLTI2MSwgIC0yNjEs
ICAtMjYxLCAgLTI2MSwgICAtNDEsCisgICAgLTI2MSwgIC0yNjEsICAxMDUxLCAgMTQwNywgIC0y
NjEsICAtMjYxLCAgMTA1MSwgICAxMTAsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgMTA1MSwg
IDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLAor
ICAgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgLTI2MSwgICAxMDksICAgIDIz
LCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgIDEyMjcsICAtMjYxLCAgLTI2MSwgICAxMTEsICAt
MjYxLCAgMTA1MSwgIC0yNjEsICAtMjYxLCAgICAyNSwKKyAgICAtMjYxLCAgLTI2MSwgICA0NTks
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAxMDUxLAorICAgIC0y
NjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAtMjYxLCAgIDExNCwgIC0yNjEsICAtMjYxLCAgLTI2
MSwgICAxMTUsCisgICAgIDExMiwgICAgNzcsICAgMTE2LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAg
LTI2MSwgIC0yNjEsICAgIDUzLCAgICA1MywKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYx
LCAgIC0zNiwgICAtMzYsICAtMjYxLCAgIDEwNCwgICAxMDcsICAgIDc2LAorICAgIDEwNTEsICAg
IDkxLCAgLTI2MSwgIC0yNjEsICAgMTQ1LCAgICA1NCwgICA2MjUsICAgNzA4LCAgICAtNiwgIC0y
NjEsCisgICAgIDc5MSwgICA0NTksICAtMjYxLCAgLTI2MSwgICAxMTcsICAtMjYxLCAgLTI2MSwg
IDEwNTEsICAgMTIwLCAgLTI2MSwKKyAgICAgMTI0LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2
MSwgICA3OTEsICAgMTExLCAgIDExMiwgICAgOTEsICAgMTI1LAorICAgICAxMjIsICAtMjYxLCAg
LTI2MSwgIC0yNjEsICAxMDUxLCAgLTI2MSwgICAxMTgsICAgMTI4LCAgIDE4MCwgIC0yNjEsCisg
ICAgIDEyNiwgICA1NDIsICAtMjYxLCAgICAtNSwgIDEwNTEsICAgNTQyLCAgIDExMSwgIDEwNTEs
ICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgIDEyMywgICAxMTIsICAtMjYxLCAgLTI2MSwgIC0y
NjEsICAtMjYxCiB9OwogCiAvKiBZWVBHT1RPW05URVJNLU5VTV0uICAqLwogc3RhdGljIGNvbnN0
IHl5dHlwZV9pbnQxNiB5eXBnb3RvW10gPQogewotICAgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0y
NjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgIDg1LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2Niwg
IC0yNjYsICAgLTQ0LCAgLTI2NiwgICAtMTUsICAtMjY2LCAgIC01NSwgICAtMTksICAtMjY2LCAg
LTI2NiwKLSAgICAtMjY2LCAgICA3MiwgICAgNzAsICAgIDczLCAgLTI2NiwgICAtNjYsICAgLTgz
LCAgLTI2NiwgICAtOTIsICAgLTczLAotICAgICAgMTMsICAgIDE0LCAgLTI2NiwgIC0yNjYsICAt
MjY2LCAgIDE4MCwgICAyMDYsICAgMjAxLCAgIDE4NCwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNDEs
ICAgLTI1LCAgIC0zMCwgICAyNjIsICAgIC00LCAgICAgMCwgIC0yNjYsICAtMjY2LCAgLTI2NiwK
LSAgICAgMTQzLCAgLTEyMiwgIC0yNjYsICAgIDIyLCAgLTE0NSwgICAgMTYsICAtMTQ0LCAgLTIy
NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgLTE3LCAgLTI2NSwgIC0yNjYsICAtMjY2LCAg
IC01NCwgICAgNjMsICAgIDIwLCAgLTI2NiwgIC0yNjYsCi0gICAgICAgNCwgIC0yNjYsICAtMjY2
LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAg
MjMxLCAgLTI2NiwgIC0yNjYKKyAgICAtMjYxLCAgIC0yNCwgIC0yNjEsICAtMjYxLCAgLTI2MSwg
IC0yNjEsICAtMjYxLCAgLTI2MSwgICAgMzQsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgLTI2
MSwgICAgMzIsICAtMjYxLCAgIC0zMywgIC0yNjEsICAgLTI3LCAgIC0yNiwgIC0yNjEsCisgICAg
LTI2MSwgIC0yNjEsICAgIDE0LCAgICAxNiwgICAgMTgsICAtMjYxLCAgIC02NiwgICAtODcsICAt
MjYxLCAgIC05MiwKKyAgICAgLTg1LCAgICAxMSwgICAgMTIsICAtMjYxLCAgLTI2MSwgIC0yNjEs
ICAgMTQxLCAgIDE1MCwgICAxNjEsICAgMTQzLAorICAgIC0yNjEsICAtMjYxLCAgLTIzMSwgICAg
IDUsICAgLTMwLCAgIDIyNCwgICAtMTgsICAgICAwLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwg
ICAxMDAsICAtMTE5LCAgLTI2MSwgICAtMTcsICAtMTU2LCAgIC0yNSwgIC0xNDUsICAtMjQzLCAg
LTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgICAtNjQsICAtMjYwLCAgLTI2MSwgIC0yNjEsICAgLTUy
LCAgICAyMSwgICAtMjIsICAtMjYxLAorICAgIC0yNjEsICAgLTM5LCAgLTI2MSwgIC0yNjEsICAt
MjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgICAxOTEs
ICAtMjYxLCAgLTI2MQogfTsKIAogLyogWVlUQUJMRVtZWVBBQ1RbU1RBVEUtTlVNXV0uICBXaGF0
IHRvIGRvIGluIHN0YXRlIFNUQVRFLU5VTS4gIElmCiAgICBwb3NpdGl2ZSwgc2hpZnQgdGhhdCB0
b2tlbi4gIElmIG5lZ2F0aXZlLCByZWR1Y2UgdGhlIHJ1bGUgd2hpY2gKICAgIG51bWJlciBpcyB0
aGUgb3Bwb3NpdGUuICBJZiB6ZXJvLCBkbyB3aGF0IFlZREVGQUNUIHNheXMuCiAgICBJZiBZWVRB
QkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCi0jZGVmaW5lIFlZVEFCTEVfTklORiAtMTY1Cisj
ZGVmaW5lIFlZVEFCTEVfTklORiAtMTY2CiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5dGFi
bGVbXSA9CiB7Ci0gICAgICA0NCwgICAgNzcsICAgMTY3LCAgIDE2MywgICAxMjEsICAgMTk5LCAg
ICA1MiwgICAyMjAsICAgMjg1LCAgIDE5MSwKLSAgICAgIDY4LCAgICA2NCwgICAxNjIsICAgIDMy
LCAgICAzMywgICAyMjQsICAgMjc1LCAgICA0OSwgICAgNjUsICAgMTIxLAotICAgICAxODEsICAg
IDY2LCAgIDE4MiwgICAxNzYsICAgIDU4LCAgICA1MCwgICAxMDgsICAgMjY5LCAgIDMwMSwgICAg
IDYsCi0gICAgICAgNywgICAyNzUsICAgIDY0LCAgICA4MSwgICAxODMsICAgMTg0LCAgIDIxNywg
ICAgNTMsICAgIDY5LCAgIDIxOCwKLSAgICAgIDQ0LCAgIDEwOCwgICAgNDQsICAgMjA3LCAgIDE5
MiwgICAxMjYsICAgIDQ0LCAgICA3MywgICAxNjUsICAgMTY2LAotICAgICAyNDksICAgIDQ0LCAg
ICA4MSwgICAyNTAsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDIzLCAgICAyNCwgICAgMzIsCi0g
ICAgICAzMywgICAxNTksICAgMjk1LCAgICA0NCwgICAgNTQsICAgMTc4LCAgIDI5NSwgICAxNzMs
ICAgMTYwLCAgIDE4NSwKLSAgICAgMTg2LCAgICA1NiwgICAxOTksICAgMTc0LCAgICA1OCwgICAg
NDQsICAgMTQ2LCAgIDE2MywgICAyMjgsICAgICA2LAotICAgICAgIDcsICAgIDg0LCAgICA0NCwg
ICAgODUsICAgMjE3LCAgICA1NywgICAyMjMsICAgMjU2LCAgIDE2OCwgICAxNjksCi0gICAgICA4
NiwgICAyMzIsICAgMjI2LCAgIDEyMSwgICAtNzUsICAgMTI2LCAgICA2NywgICAxMjYsICAgMjE3
LCAgICA3MCwKLSAgICAgMjQ2LCAgIDIxMSwgICAyMTIsICAgMjEzLCAgICA1OSwgICAgNjAsICAg
IDYxLCAgICAyMywgICAgMjQsICAgMTcwLAotICAgICAyMTQsICAgMjczLCAgIDI1NSwgICAxNzEs
ICAgMjIwLCAgIDEwOCwgICAyOTgsICAgMjE3LCAgICA3NCwgICAtMjUsCi0gICAgIDIxNSwgICAg
NzAsICAgMjE3LCAgIDE3OSwgICAxODAsICAgIDQ0LCAgICA3NiwgICAgNDQsICAgMjM3LCAgIDIz
OCwKLSAgICAgMjM5LCAgIDI0MCwgICAgNDksICAgMjU5LCAgIDI2MCwgICAyMzMsICAgMjM0LCAg
IDEwOCwgICAxMDgsICAgMTA4LAotICAgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4
LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDI2MSwgICAzMDIsCi0gICAgICA4MywgICAxNDYsICAg
ICAyLCAgICAgMywgICAgIDQsICAgMTIxLCAgICA1OSwgICAgNjAsICAgIDYxLCAgIDE4NywKLSAg
ICAgMTg4LCAgIDIxNywgICAyNjQsICAgMTI0LCAgIDEyNiwgICAyNzQsICAgMjM1LCAgIDIzNiwg
ICAyNDEsICAgMjQyLAotICAgICAxNTYsICAgLTI2LCAgIDE4OSwgICAxNzIsICAgMTk1LCAgIDI2
NSwgICAxNzcsICAgMTA4LCAgIDE5MCwgICAyMDAsCi0gICAgIDI3NCwgICAyNzksICAgMTIxLCAg
IDE5MywgICAyMDMsICAgMjAxLCAgIDIwNCwgICAyMDgsICAgMjA1LCAgIDI5MCwKLSAgICAgMjE3
LCAgLTExNiwgICAyMjEsICAgMjA5LCAgICA0NCwgICAyMjUsICAgMjQ4LCAgLTE2NCwgICAyNjgs
ICAgMjk5LAotICAgICAgNTgsICAgICAyLCAgICAgMywgICAgIDQsICAgMTA4LCAgICAgNiwgICAg
IDcsICAgICA4LCAgICAgOSwgICAgMTAsCi0gICAgIDE0NiwgICAxNjMsICAgMjYyLCAgIDI2Mywg
ICAtMjcsICAgMjY3LCAgIDI3OCwgICAyODEsICAgIDExLCAgICAxMiwKLSAgICAgIDEzLCAgICAx
NCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIy
LAotICAgICAyODAsICAgMjg3LCAgIDI4OCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
Mjg5LCAgICAyNywgICAgMjgsCi0gICAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgs
ICAgIDg5LCAgICA5MCwgICAgOTEsICAgMjkxLCAgIDI5MiwKLSAgICAgIDkyLCAgICA5MywgICAy
OTMsICAgMTQ2LCAgIDE0NiwgICAyOTQsICAgMjMxLCAgIDE0NiwgICAxNDYsICAgMzAzLAotICAg
ICAyNDQsICAgMjQzLCAgIDE1NywgICAgNzgsICAgMjQ1LCAgICA4MiwgICAxNTgsICAgIDUxLCAg
IDE5NCwgICAgOTQsCi0gICAgIDI3MCwgICAyNjYsICAgMTQ2LCAgIDI1OCwgICAyNzEsICAgMzAw
LCAgIDI4MiwgICAgNzIsICAgICAwLCAgICAgMCwKLSAgICAgIDk1LCAgICA5NiwgICAgIDAsICAg
IDk3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDYsICAgICAwLAotICAgICAgIDAs
ICAgICAwLCAgIDE0NiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwg
ICAgIDcsCi0gICAgICAgOCwgICAgIDksICAgIDEwLCAgIDEyOSwgICAxMzAsICAgMTMxLCAgICAg
MCwgICAxMzIsICAgMTMzLCAgIDEzNCwKLSAgICAgMTM1LCAgICAxMSwgICAgMTIsICAgIDEzLCAg
ICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAsICAgIDIx
LCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
Ci0gICAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAg
ODgsICAgIDg5LCAgICA5MCwKLSAgICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5Mywg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgNDQsICAgIDU1LCAgIDE2
NSwgICAxNjQsICAgMTY5LCAgICA4MCwgICAyMjYsICAgMTIzLCAgIDIyMiwgICAyMDAsCisgICAg
ICA3MSwgICAgMzIsICAgIDMzLCAgIDI3MiwgICAxOTMsICAgIDcwLCAgIDI4OCwgICAgNDksICAg
MTg1LCAgIDE4NiwKKyAgICAgIDU2LCAgIDE3OCwgICAxMjMsICAgIDg4LCAgICA3MiwgICAgNTAs
ICAgIDUyLCAgICA1MywgICAxNzUsICAgMjc4LAorICAgICAgODksICAgMjI4LCAgICA1OCwgICAg
NzYsICAgMTc2LCAgICA4NCwgICAzMDQsICAgMjE5LCAgIDE3MCwgICAxNzEsCisgICAgICA0NCwg
ICAgNjYsICAgIDQ0LCAgICA4NiwgICAyNzgsICAgMjA5LCAgICA0NCwgICAxMjcsICAgMjk4LCAg
IDE5NCwKKyAgICAgIDU5LCAgICA0NCwgICAyOTgsICAgMTg3LCAgIDE4OCwgICAgODQsICAgIDU0
LCAgICAzMiwgICAgMzMsICAgMTcyLAorICAgICAxNTgsICAgMTYxLCAgICA3MywgICAxNzMsICAg
IDY2LCAgICA0NCwgICAyNzYsICAgMzAxLCAgIDE2MiwgICAgNjksCisgICAgICA1MywgICAgNjcs
ICAgMjE5LCAgIDIxOSwgICAgNjgsICAgMTY1LCAgIDIyNSwgICAgNDQsICAgIDYwLCAgIDE0OCwK
KyAgICAgMjMwLCAgICA3OCwgICAyMDAsICAgICA2LCAgICAgNywgICAgNDQsICAgMTgzLCAgIDIx
OSwgICAxODQsICAgMjM1LAorICAgICAyMjAsICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAg
IDEyMywgICAgIDYsICAgICA3LCAgIDEyNywgICAgNDksCisgICAgIDEyNywgICAyNTEsICAgMjQ5
LCAgIDIxOSwgICAyNTIsICAgMTEwLCAgIDI1OSwgICAgODcsICAgIDYxLCAgICA2MiwKKyAgICAg
IDYzLCAgICAyMywgICAgMjQsICAgLTI3LCAgIDI1OCwgICAgNzMsICAgMjIyLCAgICAgMiwgICAg
IDMsICAgICA0LAorICAgICAxMTAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDIzLCAgICAyNCwg
ICAxNjcsICAgMTY4LCAgICA0NCwgICAgNzksCisgICAgICA0NCwgICAyNjIsICAgMjYzLCAgIDIx
MywgICAyMTQsICAgMjE1LCAgICA1MiwgICAgNTMsICAgMjY0LCAgIDE4MSwKKyAgICAgMTgyLCAg
IDMwNSwgICAyMTYsICAgMTgwLCAgIDEyNiwgICAxODksICAgMTkwLCAgIC03NiwgICAtMjgsICAg
MjMzLAorICAgICAyMzgsICAgMjM5LCAgIDIxNywgICAxNDgsICAgMjE5LCAgIDI2NywgICAxNzQs
ICAgMTIzLCAgIDI0MCwgICAyNDEsCisgICAgIDI0MiwgICAyNDMsICAgMTkxLCAgIDI0NCwgICAy
NDUsICAgMjY4LCAgIDE3OSwgICAxOTIsICAgMjc3LCAgIDIwNSwKKyAgICAgMTk1LCAgIDEyNywg
ICAyMDYsICAgMjAyLCAgIDIwMywgICAyMDcsICAgMjEwLCAgIDIyNywgICAyMTEsICAgMjIzLAor
ICAgICAyODIsICAtMTE3LCAgIDI1MCwgICAyNzcsICAgMTIzLCAgIDI3MCwgIC0xNjUsICAtMTM4
LCAgIDI2NSwgICAyNjYsCisgICAgIDIxOSwgICAyODEsICAgMjkzLCAgIDExMCwgICAyODMsICAg
Mjg0LCAgIDI5NiwgICAyOTEsICAgMjkyLCAgIDI5NCwKKyAgICAgMjk1LCAgICA0NCwgICAzMDIs
ICAgMjcxLCAgIDMwNiwgICAyNDYsICAgMjk3LCAgIDIzNCwgICAyNDcsICAgIDgxLAorICAgICAx
NjUsICAgMjQ4LCAgIDE0OCwgICAyMzYsICAgMjM3LCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDEx
MCwgICAxMTAsCisgICAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTEwLCAg
IDE1OSwgICAgODUsICAgMTYwLCAgICA1MSwKKyAgICAgMjAxLCAgIDMwMywgICAyNzMsICAgMjYx
LCAgIDI2OSwgICAyNzQsICAgMjg1LCAgICA3NSwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzNywg
ICAxMzgsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5
NiwgICAgIDAsICAgIDk3LCAgICAgMSwgICAgIDIsICAgICAzLAotICAgICAgIDQsICAgICA1LCAg
ICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTI5LCAgIDEzMCwgICAxMzEsCi0g
ICAgICAgMCwgICAxMzIsICAgMTMzLCAgIDEzNCwgICAxMzUsICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIDE0LCAgICAxNSwKLSAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgMTM2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsCi0gICAgICAz
MSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkz
LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI5MCwgICAxMTAsICAg
MTQ4LCAgIDE0OCwgICAgIDAsICAgICAwLAorICAgICAxNDgsICAgMTQ4LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ4LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKKyAgICAgICAwLCAgICAgMCwgICAxMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgMTQ4LCAgICAgMCwgICAgIDAsICAgICAw
LCAgIDE0OCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsCisgICAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEzMSwgICAxMzIsICAgMTMzLCAgICAgMCwKKyAg
ICAgMTM0LCAgIDEzNSwgICAxMzYsICAgMTM3LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwg
ICAgMTUsICAgIDE2LAorICAgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAy
MiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsCisgICAgICAyNCwgICAgMjUsICAgIDI2LCAg
IDEzOCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwKKyAgICAgIDkx
LCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAs
ICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgMTM3LCAgIDIx
OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICA5NSwgICAgOTYsICAgICAw
LAotICAgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksCi0gICAgICAxMCwgICAxMjksICAgMTMwLCAgIDEzMSwgICAgIDAs
ICAgMTMyLCAgIDEzMywgICAxMzQsICAgMTM1LCAgICAxMSwKLSAgICAgIDEyLCAgICAxMywgICAg
MTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAotICAg
ICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAg
IDEzNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4
LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwKLSAgICAgICAwLCAgICA5MiwgICAgOTMsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzOSwg
ICAxNDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5
OCwgICAgIDAsICAgIDk5LCAgICAgMSwKKyAgICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAg
ICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMxLAorICAgICAxMzIsICAgMTMz
LCAgICAgMCwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAxMiwgICAgMTMs
CisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LAorICAgICAgMzAsICAgIDkwLCAgICAz
MSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsCisgICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgMTM5LCAgIDIyMSwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLCAgICA5NywgICAgOTgsCisgICAgICAgMCwg
ICAgOTksICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAg
ICAgOCwKKyAgICAgICA5LCAgICAxMCwgICAxMzEsICAgMTMyLCAgIDEzMywgICAgIDAsICAgMTM0
LCAgIDEzNSwgICAxMzYsICAgMTM3LAorICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCisgICAgICAyMSwgICAgMjIs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEzOCwK
KyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5
MiwgICAgOTMsICAgICAwLAorICAgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAg
IDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzNywgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAgMSwg
ICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsCi0gICAgICAgNiwgICAgIDcsICAgICA4LCAgICAg
OSwgICAgMTAsICAgMTI5LCAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwKLSAgICAgMTMzLCAg
IDEzNCwgICAxMzUsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAg
IDE3LAorICAgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgIDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwgICAg
OTksICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAgNywg
ICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEsICAgMTMyLCAgIDEzMywgICAgIDAsICAgMTM0LAor
ICAgICAxMzUsICAgMTM2LCAgIDEzNywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1
LCAgICAxNiwgICAgMTcsCiAgICAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwKLSAgICAgIDI1LCAgICAyNiwgICAxMzYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LAotICAgICAg
ODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAg
MCwgICAgIDAsCisgICAgICAyNSwgICAgMjYsICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwKKyAgICAgIDkyLCAgICA5MywgICAgIDAsICAgICAw
LCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDc2LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEz
OSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLAotICAgICAgIDIsICAgICAzLCAg
ICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMjksCi0g
ICAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LCAgIDEzNSwgICAgMTEs
ICAgIDEyLCAgICAxMywKLSAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAg
MTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAz
MCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAw
LCAgICA5MiwKLSAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsCi0gICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICA5
NSwKLSAgICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAg
ICAgNSwgICAgIDYsICAgICA3LAotICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgMTEsICAg
IDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKLSAg
ICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwg
ICAgMjUsICAgIDI2LAotICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4
NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsCi0gICAgICA5MSwgICAgIDAsICAgICAwLCAg
ICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA3OSwgICAgIDAs
ICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5OCwgICAg
IDAsICAgIDk5LCAgICAgMSwgICAgIDIsCisgICAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwg
ICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMxLCAgIDEzMiwKKyAgICAgMTMzLCAgICAg
MCwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0
LAorICAgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAg
IDIyLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKKyAgICAgIDkwLCAgICAzMSwgICAg
OTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLAorICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTQxLCAgICA5NywgICAgOTgsICAgICAwLAorICAgICAgOTks
ICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwg
ICAgIDksCisgICAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAxMSwKKyAgICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAg
ICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAorICAgICAgMjIsICAgICAw
LCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcs
CisgICAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5MiwgICAg
OTMsICAgICAwLCAgICAgMCwKKyAgICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsCisgICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE0MSwKKyAgICAgIDk3LCAgICA5OCwgICAgIDAsICAgIDk5LCAgICA2MCwgICAgIDIs
ICAgICAzLCAgICAgNCwgICAgIDAsICAgICA2LAorICAgICAgIDcsICAgICA4LCAgICAgOSwgICAg
MTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwg
ICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAg
ICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAgICA5MywgICAgIDAs
ICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK
ICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgMTM5
LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAg
ICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAg
MTAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LCAgICAgMCwg
ICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsCiAgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAx
NywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKICAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAg
IDI5LAotICAgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEs
ICAgICAwLCAgICAgMCwgICAgOTIsCi0gICAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLAot
ICAgICAgIDAsICAgMTYxLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgOTUsCi0gICAgICA5NiwgICAgIDAsICAgIDk3LCAgICAxMSwgICAgMTIsICAg
IDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKLSAgICAgIDE4LCAgICAxOSwgICAgMjAs
ICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAg
MjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAz
MSwgICAgODgsCi0gICAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAg
ICA5MywgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkx
LCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LAogICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDIw
NiwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLAotICAgICAgMTIsICAgIDEzLCAg
ICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsCi0g
ICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYs
ICAgICAwLCAgICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAg
ODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLAotICAgICAgIDAsICAgIDkyLCAgICA5Mywg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAw
LCAgICAgMCwKKyAgICAgMTYzLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgOTcsICAgIDk4LAorICAgICAgIDAsICAgIDk5LCAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCisgICAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAy
NSwKKyAgICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAg
ICAzMSwgICAgOTEsICAgIDkyLAorICAgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgIDk0LCAgICAgMCwgICAgIDAsICAgMjIyLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwg
ICAgIDAsICAgICAwLAotICAgICAgIDAsICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAx
MSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCi0gICAgICAxNiwgICAgMTcsICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAw
LCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDg3LAotICAgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAg
IDAsICAgIDkyLCAgICA5MywgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKKyAgICAgICAwLCAgICAg
MCwgICAyMDgsICAgIDk3LCAgICA5OCwgICAgIDAsICAgIDk5LCAgICAxMSwgICAgMTIsICAgIDEz
LAorICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAg
IDIxLCAgICAyMiwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUs
ICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwKKyAgICAgIDMwLCAgICA5MCwgICAg
MzEsICAgIDkxLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LAogICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICA4LCAgICAgOSwgICAgMTAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwgICAgOTYsICAgICAwLAotICAgICAgOTcs
ICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDI1LCAgIDE3NSwKLSAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLAotICAgICAgOTEsICAgICAw
LCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
OTYsICAgICAwLCAgICAgMCwKKyAgICAgMjI0LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LAorICAgICAgIDAsICAgIDk5LCAgICAx
MSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCisgICAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAyNSwKKyAgICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLAorICAgICAgOTMsICAgICAwLCAgICAgMCwgICAg
OTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgOTQsICAgICAyLCAgICAgMywgICAgIDQsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgICAgMCwgICAgOTUsICAg
IDk2LCAgICAgMCwgICAgOTcsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwK
LSAgICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAy
NSwgICAgMjYsICAgICAwLAotICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgICAwLCAg
ICAzMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICA4
LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAg
MTYsICAgIDE3LAotICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwg
ICAxOTgsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAyNSwgICAgMjYsICAgICAwLCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMCwKLSAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDcxLAotICAgICAgIDAsICAgICAwLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUs
ICAgICA2LCAgICAgNywgICAgIDgsCi0gICAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI0NywKLSAgICAgIDExLCAgICAxMiwg
ICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLAot
ICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1
LCAgICAyNiwgICAgIDAsCi0gICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAg
IDMxLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKKyAgICAgICAwLCAgICAgMCwgICAgOTYs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLAorICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgIDExLCAgICAx
MiwgICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAyNSwgICAxNzcsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LAorICAgICAgMzAsICAg
IDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAg
OTUsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDIsICAgICAzLAorICAgICAgIDQsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICA5NywgICAgOTgsCisg
ICAgICAgMCwgICAgOTksICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIDE0LCAgICAxNSwKKyAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAyNSwg
ICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsCisgICAgICAz
MSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5
LCAgICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMTEsICAgIDEyLAorICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYs
ICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCisgICAgIDE5OSwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAy
OCwKKyAgICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzQsICAgICAw
LCAgICAgMCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsCiAgICAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwg
ICAgMTUsICAgIDE2LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAyNTMsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCiAgICAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywKICAgICAgIDI0
LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAs
ICAgIDMxLAotICAgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDgsICAgICA5LCAgICAxMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywKLSAgICAgIDE0LCAgICAx
NSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAw
LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAg
IDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgOCwgICAgIDks
ICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAotICAg
ICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsICAgMjI5LCAgICAzMSwKLSAgICAgICA4LCAgICAgOSwgICAgMTAsICAg
MjMwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDEs
ICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwg
ICAgMTAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDExLCAgICAxMiwKKyAgICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAg
ICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAorICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgs
CisgICAgICAyOSwgICAgMzAsICAgICAwLCAgICAzMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAg
IDAsICAgICAwLCAgICAgMCwKKyAgICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksCiAgICAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDI1LCAgICAyNiwKLSAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAs
ICAgIDMxCisgICAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgICAwLCAgICAz
MSwgICAgIDgsICAgICA5LCAgICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLAorICAgICAgMTMsICAgIDE0
LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAg
IDAsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAyMzEsICAgMjMyLCAgICAgOCwg
ICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCisgICAg
ICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAg
ICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcs
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgICAwLAorICAgICAgMzEKIH07CiAKIHN0YXRpYyBjb25z
dCB5eXR5cGVfaW50MTYgeXljaGVja1tdID0KIHsKLSAgICAgICAwLCAgICA1NSwgICAgOTQsICAg
IDg2LCAgICA3MCwgICAxMjcsICAgIDQ1LCAgIDE1MSwgICAyNzMsICAgIDYwLAotICAgICAgNDAs
ICAgIDM2LCAgICA4NSwgICAgIDAsICAgICAwLCAgIDE2MCwgICAyNTcsICAgIDM3LCAgICA3OSwg
ICAgODUsCi0gICAgICA4NCwgICAgODIsICAgIDg2LCAgIDEwNiwgICAgIDMsICAgIDQ1LCAgICA3
MCwgICAyNTMsICAgMjkzLCAgICAgOCwKLSAgICAgICA5LCAgIDI3MiwgICAgNTcsICAgIDYzLCAg
ICA1NSwgICAgNTYsICAgIDc5LCAgICA3NiwgICAgNDIsICAgIDgyLAotICAgICAgNDAsICAgIDg1
LCAgICA0MiwgICAxMzUsICAgIDk1LCAgICA3NSwgICAgNDYsICAgIDUxLCAgICA5MiwgICAgOTMs
Ci0gICAgICA3OSwgICAgNTEsICAgIDgyLCAgICA4MiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAg
MzYsICAgIDM3LCAgICA0NiwKLSAgICAgIDQ2LCAgICA3NCwgICAyODgsICAgIDYzLCAgICA4Miwg
ICAxMDksICAgMjkyLCAgICA3MywgICAgODEsICAgIDkwLAotICAgICAgOTEsICAgIDczLCAgIDE5
NCwgICAgNzksICAgICAzLCAgICA3NSwgICAgNzYsICAgMTYwLCAgIDE3MCwgICAgIDgsCi0gICAg
ICAgOSwgICAgNzIsICAgIDgyLCAgICA3NCwgICAgNzksICAgIDc5LCAgIDE1OSwgICAgODIsICAg
IDUzLCAgICA1NCwKLSAgICAgIDgxLCAgIDE3NCwgICAgNzMsICAgMTU5LCAgICA3MywgICAxMjUs
ICAgIDQ1LCAgIDEyNywgICAgNzksICAgIDc0LAotICAgICAxOTIsICAgIDYyLCAgICA2MywgICAg
NjQsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgNzQsCi0gICAgICA3MSwg
ICAgNzMsICAgMjA0LCAgICA3OCwgICAyNTgsICAgMTU5LCAgICA3MywgICAgNzksICAgIDc2LCAg
ICA3MiwKLSAgICAgIDgxLCAgICA3NCwgICAgNzksICAgIDg3LCAgICA4OCwgICAxMjUsICAgIDc2
LCAgIDEyNywgICAxODMsICAgMTg0LAotICAgICAxODUsICAgMTg2LCAgICAzNywgICAyMTYsICAg
MjE3LCAgIDE3OSwgICAxODAsICAgMTgxLCAgIDE4MiwgICAxODMsCi0gICAgIDE4NCwgICAxODUs
ICAgMTg2LCAgIDE4NywgICAxODgsICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMjIxLCAgIDI5NCwK
LSAgICAgIDQ1LCAgIDE1MSwgICAgIDQsICAgICA1LCAgICAgNiwgICAyMjEsICAgIDMzLCAgICAz
NCwgICAgMzUsICAgIDU3LAotICAgICAgNTgsICAgIDc5LCAgICA4MCwgICAgODIsICAgMTk0LCAg
IDI1NywgICAxODEsICAgMTgyLCAgIDE4NywgICAxODgsCi0gICAgICA0NSwgICAgNzIsICAgIDU5
LCAgICA3MywgICAgNDUsICAgMjQ4LCAgICA3MiwgICAyMjEsICAgIDYxLCAgICA4MiwKLSAgICAg
MjcyLCAgIDI2NCwgICAyNDgsICAgIDc1LCAgICA3MiwgICAgODIsICAgIDcyLCAgICA3MiwgICAg
ODIsICAgMjgxLAotICAgICAgNzksICAgIDcyLCAgICA3NCwgICAgNzcsICAgMTk0LCAgICA3NSwg
ICAgNzQsICAgIDc2LCAgIDI1MiwgICAyOTEsCi0gICAgICAgMywgICAgIDQsICAgICA1LCAgICAg
NiwgICAyNDgsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwKLSAgICAgMjEwLCAg
IDI5NCwgICAgNzUsICAgIDc1LCAgICA3MiwgICAgNDAsICAgIDc1LCAgICA3MiwgICAgMjEsICAg
IDIyLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICAzMSwgICAgMzIsCi0gICAgICA3NSwgICAgNDUsICAgIDczLCAgICAzNiwgICAg
MzcsICAgIDM4LCAgICAzOSwgICAgNzcsICAgIDQxLCAgICA0MiwKLSAgICAgIDQzLCAgICA0NCwg
ICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgODIsICAgIDczLAot
ICAgICAgNTMsICAgIDU0LCAgICAxNiwgICAyNTMsICAgMjU0LCAgICA4MSwgICAxNzEsICAgMjU3
LCAgIDI1OCwgICAgODIsCi0gICAgIDE5MCwgICAxODksICAgIDgyLCAgICA1NywgICAxOTEsICAg
IDY0LCAgICA4MiwgICAgIDUsICAgMTI1LCAgICA3MiwKLSAgICAgMjU0LCAgIDI0OSwgICAyNzIs
ICAgMjEwLCAgIDI1NCwgICAyOTIsICAgMjcyLCAgICA0NiwgICAgLTEsICAgIC0xLAotICAgICAg
ODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDI4
OCwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgMjkyLCAgICAgMywgICAgIDQsICAgICA1LCAg
ICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAsICAg
IDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAg
MjksCi0gICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwg
ICAgMzcsICAgIDM4LCAgICAzOSwKLSAgICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0
NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LAotICAgICAgNTAsICAgIC0xLCAg
ICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisg
ICAgICAgMCwgICAgMjUsICAgIDg5LCAgICA4OCwgICAgOTYsICAgIDU3LCAgIDE2MiwgICAgNzMs
ICAgMTUzLCAgIDEyOCwKKyAgICAgIDQwLCAgICAgMCwgICAgIDAsICAgMjU2LCAgICA1OSwgICAg
MzksICAgMjc2LCAgICAzNywgICAgNTQsICAgIDU1LAorICAgICAgODEsICAgMTA4LCAgICA4OCwg
ICAgNzMsICAgIDQyLCAgICA0NSwgICAgNDUsICAgIDQ2LCAgICA3MiwgICAyNjAsCisgICAgICA4
MCwgICAgNzIsICAgIDcyLCAgICA1MSwgICAgNzgsICAgIDY1LCAgIDI5NiwgICAgNzgsICAgIDUy
LCAgICA1MywKKyAgICAgIDQwLCAgICAzNiwgICAgNDIsICAgIDY3LCAgIDI3NSwgICAxMzcsICAg
IDQ2LCAgICA3NywgICAyOTEsICAgIDk0LAorICAgICAgNzgsICAgIDUxLCAgIDI5NSwgICAgODks
ICAgIDkwLCAgICA4NSwgICAgNzUsICAgIDQ2LCAgICA0NiwgICAgNzMsCisgICAgICA4NCwgICAg
NzMsICAgIDczLCAgICA3NywgICAgNTksICAgIDY1LCAgICA3MiwgICAgNzIsICAgIDgwLCAgICA0
NSwKKyAgICAgIDQ2LCAgICA3OCwgICAgNzgsICAgIDc4LCAgICA4MSwgICAxNjIsICAgMTYxLCAg
ICA3NywgICAgIDMsICAgIDc5LAorICAgICAxNzIsICAgIDc1LCAgIDIwMSwgICAgIDgsICAgICA5
LCAgICA4NSwgICAgODMsICAgIDc4LCAgICA4NSwgICAxNzYsCisgICAgICA4MSwgICAgIDMsICAg
IDMzLCAgICAzNCwgICAgMzUsICAgMTYxLCAgICAgOCwgICAgIDksICAgMTI4LCAgICAzNywKKyAg
ICAgMTMwLCAgICA3OCwgICAxOTQsICAgIDc4LCAgICA4MSwgICAgNzMsICAgIDgxLCAgICA3MSwg
ICAgMzMsICAgIDM0LAorICAgICAgMzUsICAgIDM2LCAgICAzNywgICAgNzEsICAgMjA2LCAgICA3
MywgICAyNjEsICAgICA0LCAgICAgNSwgICAgIDYsCisgICAgICA4OCwgICAgMzMsICAgIDM0LCAg
ICAzNSwgICAgMzYsICAgIDM3LCAgICA5NCwgICAgOTUsICAgMTI4LCAgICA3NSwKKyAgICAgMTMw
LCAgIDIxOCwgICAyMTksICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDQ1LCAgICA0NiwgICAyMjMs
ICAgIDg2LAorICAgICAgODcsICAgMjk3LCAgICA3MCwgICAxMTEsICAgIDgxLCAgICA1NiwgICAg
NTcsICAgIDcyLCAgICA3MSwgICAxNzMsCisgICAgIDE4MywgICAxODQsICAgIDgwLCAgIDE1Mywg
ICAgNzgsICAgIDc5LCAgICA3MiwgICAyMjMsICAgMTg1LCAgIDE4NiwKKyAgICAgMTg3LCAgIDE4
OCwgICAgNTgsICAgMTg5LCAgIDE5MCwgICAyNTAsICAgIDcxLCAgICA2MCwgICAyNjAsICAgIDcx
LAorICAgICAgNzQsICAgMjAxLCAgICA3MSwgICAgODEsICAgIDgxLCAgICA4MSwgICAgNzEsICAg
IDc0LCAgICA3NiwgICAgNzMsCisgICAgIDI2NywgICAgNzEsICAgIDczLCAgIDI3NSwgICAyNTAs
ICAgIDQwLCAgICA3NSwgICAgNzEsICAgIDc0LCAgICA3NCwKKyAgICAgIDc4LCAgICA3NCwgICAy
ODQsICAgMTYxLCAgICA3NCwgICAgNzEsICAgIDE2LCAgICA3MiwgICAgNzYsICAgIDgxLAorICAg
ICAgNzIsICAgMjAxLCAgIDI5NCwgICAyNTUsICAgIDgxLCAgIDE5MSwgICAgODAsICAgMTczLCAg
IDE5MiwgICAgNTksCisgICAgIDI5NywgICAxOTMsICAgMjEyLCAgIDE4MSwgICAxODIsICAgMTgz
LCAgIDE4NCwgICAxODUsICAgMTg2LCAgIDE4NywKKyAgICAgMTg4LCAgIDE4OSwgICAxOTAsICAg
MTkxLCAgIDE5MiwgICAxOTMsICAgIDg1LCAgICA2NiwgICAgODUsICAgICA1LAorICAgICAxMzAs
ICAgMjk1LCAgIDI1NywgICAyMTIsICAgMjUxLCAgIDI1NywgICAyNzUsICAgIDQ2LCAgICAtMSwg
ICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDc2LCAgICA3NywgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0x
LCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgICAzLCAgICAgNCwgICAgIDUs
Ci0gICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwKLSAgICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAotICAgICAgMjYsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAg
ICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAg
IDQ0LCAgICA0NSwKLSAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEs
ICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgMjc4LCAgIDIyMywgICAyNTYsICAgMjU3LCAgICAtMSwgICAgLTEsCisgICAgIDI2MCwg
ICAyNjEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyNzUsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgIDI1MCwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAyOTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgMjk1LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwK
KyAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAx
NCwgICAgMTUsICAgIC0xLAorICAgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAg
ICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCisgICAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwKKyAgICAg
IDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAg
NDUsICAgIDQ2LAorICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLCAgICA1Miwg
ICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAg
IC0xLAotICAgICAgNzYsICAgIDc3LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIs
ICAgIDgzLCAgICA4NCwgICAgLTEsCi0gICAgICA4NiwgICAgIDMsICAgICA0LCAgICAgNSwgICAg
IDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKLSAgICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAot
ICAgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgMzEsCi0gICAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAg
IDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwKLSAgICAgIDQyLCAgICA0MywgICAgNDQs
ICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLAotICAgICAg
LTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDc1LCAgICA3NiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwgICAgODUsICAgICAzLAorICAgICAgIDQsICAg
ICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAg
MTMsCisgICAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAg
ICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsCisg
ICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEs
ICAgIDUyLCAgICA1MywKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsCisgICAgICAt
MSwgICAgNzUsICAgIDc2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEsICAgIDgy
LCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCisgICAgICAyMSwgICAg
MjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwKKyAgICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAg
ICAzOCwgICAgMzksICAgIDQwLAorICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1
LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsCisgICAgICAtMSwgICAgNTIsICAg
IDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAotICAgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA4MiwgICAgODMsICAgIDg0LCAg
ICAtMSwgICAgODYsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKKyAgICAgIDcx
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3NSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAorICAgICAgODEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAgMywgICAg
IDQsICAgICA1LCAgICAgNiwgICAgIDcsCiAgICAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwg
ICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywKICAgICAgIDE4LCAgICAx
OSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3
LAogICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAzNiwgICAgMzcsCiAgICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIs
ICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywKLSAgICAgIDQ4LCAgICA0OSwgICAg
NTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAg
ICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIC0xLAotICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4Niwg
ICAgIDMsCi0gICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwgICAgMTEsICAgIDEyLCAgICAxMywKLSAgICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAotICAgICAgMjQsICAgIDI1
LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEs
Ci0gICAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAg
NDEsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwg
ICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLAotICAgICAgNTQsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDcyLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLAotICAgICAgODQsICAgIC0xLCAgICA4NiwgICAg
IDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksCi0gICAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKLSAgICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAyNywgICAgMjgsICAgIDI5LAotICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksCi0gICAgICAtMSwgICAgNDEs
ICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwK
LSAgICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDc1LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwgICAgODUsICAgICAzLCAgICAgNCwKKyAgICAg
ICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LAorICAgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsCisgICAgICAyNSwgICAgMjYsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAg
ICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAg
IDQ0LAorICAgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEs
ICAgIDUyLCAgICA1MywgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0xLAor
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEsICAgIDgy
LCAgICA4MywgICAgLTEsCisgICAgICA4NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKKyAgICAgIDEyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLAorICAgICAg
MjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsCisgICAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAg
ICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwKKyAgICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1
LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLAorICAgICAgNTIsICAg
IDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA3MSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLAorICAgICAgODIsICAgIDgzLCAg
ICAtMSwgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgIDgsCisg
ICAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsCisgICAgICAz
OSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3
LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAg
LTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAt
MSwKLSAgICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAg
ICAyMSwgICAgMjIsICAgIDIzLAorICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKICAg
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAz
OSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsCi0gICAgICA0NCwgICAgNDUsICAgIDQ2LCAg
ICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywKLSAgICAgIDU0
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICA3MiwgICAgLTEsCi0gICAgICAtMSwgICAgNzUsICAgIDEwLCAgICAxMSwg
ICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MywKLSAgICAgIDg0LCAgICAt
MSwgICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3
LAotICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIs
ICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywKLSAgICAgIDQ4LCAgICA0OSwgICAg
NTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAg
ICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLCAg
ICA1MiwgICAgNTMsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLAotICAgICAgMTIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4Niwg
ICAgMjEsCi0gICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLAotICAgICAgNDIsICAgIDQz
LCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEs
Ci0gICAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLAorICAgICAgNzQsICAgIDEwLCAgICAx
MSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsCisgICAg
ICAtMSwgICAgODUsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LAorICAgICAgMzksICAgIC0xLCAgICA0MSwgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCisgICAgICA0OSwg
ICAgLTEsICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgNzIsICAgIC0xLCAgICAtMSwgICAgNzUsICAg
IDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgODMs
ICAgIDg0LCAgICAtMSwgICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwK
LSAgICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAt
MSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAg
ICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsCi0gICAgICA0NiwgICAgNDcsICAgIDQ4
LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwKKyAgICAg
IC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAg
MTIsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwg
ICAgODUsICAgIDIxLCAgICAyMiwgICAgMjMsCisgICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKKyAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAg
IDQzLAorICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEs
ICAgIC0xLCAgICA1MiwgICAgNTMsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgz
LCAgICA4NCwgICAgLTEsCi0gICAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LAotICAgICAg
LTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0
OCwgICAgNDksCi0gICAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLAorICAgICAgNzQsICAg
IDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAg
ODMsCisgICAgICAtMSwgICAgODUsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LAorICAgICAgMzksICAgIC0xLCAg
ICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCisg
ICAgICA0OSwgICAgLTEsICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICA3Miwg
ICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsCi0gICAgICAx
MSwgICAgMTIsICAgIC0xLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgLTEsICAgIC0x
LCAgICAtMSwKLSAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLAotICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsCi0gICAgICA0MSwgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAt
MSwKLSAgICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIy
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjksICAg
IDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICA3NywgICAgLTEsICAgIC0xLCAgICAtMSwKLSAg
ICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwg
ICAgNDYsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgIDAsCi0gICAgICAtMSwgICAgLTEsICAgICAzLCAg
ICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAgIDEx
LCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDc3LAotICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwKLSAgICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2
LAorICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAg
IDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMs
ICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0LCAgICAyNSwgICAg
MjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAg
ICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5
LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAgNCwg
ICAgIDUsCisgICAgICAgNiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAx
MiwgICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYsICAgIDI3
LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEs
CisgICAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAg
NDMsICAgIDQ0LCAgICAtMSwKKyAgICAgIDQ2LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLAorICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsCisgICAg
ICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAg
IDMxLCAgICAzMiwKKyAgICAgIDc2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgs
ICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAgICAgNDMsICAgIDQ0LCAgICAtMSwgICAg
NDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAgMCwgICAgLTEsICAgIC0xLCAgICAgMywgICAgIDQsICAgICA1LCAg
ICAgNiwKICAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCisgICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA3NiwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwK
ICAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDM2LAogICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsCi0gICAgICAgNCwgICAgIDUsICAgICA2
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKLSAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAg
MjIsICAgIDIzLAotICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwg
ICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0LCAg
ICAtMSwgICAgNDYsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMs
ICAgIDI0LCAgICAyNSwgICAgMjYsCi0gICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
MzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAzOCwg
ICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAot
ICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsCisgICAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLAorICAgICAg
MjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAg
ICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwKKyAgICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2
LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgMTAsICAg
IDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsCiAgICAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAgMjcsICAgIDI4LCAgICAyOSwKICAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LAotICAgICAgLTEsICAgIDQxLCAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYKKyAgICAgIC0xLCAgICA0MSwgICAgNDIs
ICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LCAgICAxMCwgICAgMTEsICAgIDEyLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAy
MSwgICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAgICAgNDMsICAg
IDQ0LCAgICA0NSwgICAgNDYsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwg
ICAgMjMsICAgIDI0LCAgICAyNSwKKyAgICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAg
ICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgLTEsCisg
ICAgICA0NgogfTsKIAogLyogWVlTVE9TW1NUQVRFLU5VTV0gLS0gVGhlIChpbnRlcm5hbCBudW1i
ZXIgb2YgdGhlKSBhY2Nlc3NpbmcKQEAgLTEzMDgsMzIgKzEzNDUsMzIgQEAgc3RhdGljIGNvbnN0
IHl5dHlwZV91aW50OCB5eXN0b3NbXSA9CiAgICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzNiwg
ICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDEsICAgIDQyLCAgICA0MywKICAgICAgIDQ0LCAgICA0
NiwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjksICAgMTMwLCAgIDEzNSwgICAxMzYsICAgMTM3
LAogICAgICAxMzgsICAgMTM5LCAgIDE0MCwgICAxNDEsICAgMTQyLCAgIDE0MywgICAxNzUsICAg
MTc2LCAgIDE3NywgICAgMzcsCi0gICAgICA0NSwgICAxNDAsICAgIDQ1LCAgICA3NiwgICAgODIs
ICAgMTc4LCAgICA3MywgICAgNzksICAgICAzLCAgICAzMywKLSAgICAgIDM0LCAgICAzNSwgICAx
MzIsICAgMTMzLCAgIDEzOCwgICAgNzksICAgIDgyLCAgICA0NSwgICAxMzksICAgMTQxLAotICAg
ICAgNzQsICAgICAwLCAgIDE3NiwgICAxNDEsICAgIDc2LCAgIDE0NSwgICAgNzYsICAgMTYxLCAg
IDEzMiwgICAxMzEsCi0gICAgIDEzNCwgICAxMzksICAgMTMzLCAgICA0NSwgICAgNzIsICAgIDc0
LCAgICA4MSwgICAgNDUsICAgIDQ3LCAgICA0OCwKLSAgICAgIDQ5LCAgICA1MCwgICAgNTMsICAg
IDU0LCAgICA3MiwgICAgODMsICAgIDg0LCAgICA4NiwgICAgOTcsICAgIDk4LAotICAgICAgOTks
ICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMTA0LCAgIDEwNSwgICAxMDYsICAgMTA3LCAgIDEwOCwg
ICAxMDksCi0gICAgIDExMCwgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTQsICAgMTE1LCAgIDEx
NiwgICAxMTcsICAgMTE4LCAgIDExOSwKLSAgICAgMTIwLCAgIDEyMSwgICAxMjUsICAgMTQyLCAg
ICA4MiwgICAxNDQsICAgMTM5LCAgIDE0NiwgICAxNDcsICAgIDEzLAotICAgICAgMTQsICAgIDE1
LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgNDAsICAgIDc2LCAgICA3NywgICAgODIs
Ci0gICAgIDEwOCwgICAxMjEsICAgMTIyLCAgIDEyNCwgICAxMjYsICAgMTI3LCAgIDE0MiwgICAx
NTEsICAgMTUyLCAgIDE1MywKLSAgICAgMTU0LCAgIDE2MiwgICAxNjMsICAgMTY0LCAgIDE2Nywg
ICAxNzQsICAgIDQ1LCAgIDEzMSwgICAxMzQsICAgIDc0LAotICAgICAgODEsICAgIDc1LCAgIDEy
NSwgICAxMjIsICAgMTUwLCAgIDEwOCwgICAxMDgsICAgMTI0LCAgICA1MywgICAgNTQsCi0gICAg
ICA3NCwgICAgNzgsICAgIDczLCAgICA3MywgICAgNzksICAgIDM5LCAgIDEyMiwgICAgNzIsICAg
MTA4LCAgICA4NywKLSAgICAgIDg4LCAgICA4NCwgICAgODYsICAgIDU1LCAgICA1NiwgICAgOTAs
ICAgIDkxLCAgICA1NywgICAgNTgsICAgIDU5LAotICAgICAgNjEsICAgIDYwLCAgICA5NSwgICAg
NzUsICAgMTQ2LCAgICA0NSwgICAxNDgsICAgMTQ5LCAgICA3NywgICAxNDcsCi0gICAgICA4Miwg
ICAgODIsICAgMTY5LCAgICA3MiwgICAgNzIsICAgIDgyLCAgICA4MiwgICAxMjQsICAgIDcyLCAg
ICA3NywKLSAgICAgMTU1LCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA3MSwgICAgODEsICAgMTIz
LCAgICA3OSwgICAgODIsICAgIDc3LAotICAgICAxNTIsICAgIDc0LCAgICA3NSwgICAxMjUsICAg
MTUwLCAgICA3NSwgICAgNzMsICAgMTAwLCAgIDEyNCwgICAgNDUsCi0gICAgICA1MCwgICAxMDMs
ICAgMTIyLCAgIDEwOCwgICAxMDgsICAgMTEwLCAgIDExMCwgICAxMTIsICAgMTEyLCAgIDExMiwK
LSAgICAgMTEyLCAgIDExMywgICAxMTMsICAgMTE3LCAgIDExOCwgICAxMTksICAgMTI0LCAgICA3
NywgICAgNzQsICAgIDc5LAotICAgICAgODIsICAgMTU4LCAgIDE1OSwgICAxNjAsICAgMTcwLCAg
IDEyNCwgICAgODIsICAgMTY4LCAgIDE2MiwgICAxMjIsCi0gICAgIDEyMiwgICAxMjUsICAgIDc1
LCAgICA3NSwgICAgODAsICAgMTI1LCAgIDE0OSwgICAgNDAsICAgMTYxLCAgIDE1MywKLSAgICAg
MTUxLCAgIDE2MywgICAxNzEsICAgIDczLCAgIDEyNCwgICAxMzcsICAgMTY2LCAgIDE1NiwgICAg
NzUsICAgMTIyLAotICAgICAgNzUsICAgIDcyLCAgIDE2NiwgICAxNzIsICAgMTczLCAgIDE1OCwg
ICAxNjUsICAgIDQ1LCAgICA3MywgICAgNzcsCi0gICAgIDEyNCwgICAgODIsICAgIDczLCAgICAx
NiwgICAgODEsICAgMTUzLCAgIDE1NywgICAxNjEsICAgIDczLCAgIDEyNCwKLSAgICAgMTU3LCAg
IDE1OCwgICAxNTAsICAgIDgyCisgICAgICA0NSwgICAxNDAsICAgIDQ1LCAgICA0NiwgICAgNzUs
ICAgIDk2LCAgICA4MSwgICAxNzgsICAgIDcyLCAgICA3OCwKKyAgICAgICAzLCAgICAzMywgICAg
MzQsICAgIDM1LCAgIDEzMiwgICAxMzMsICAgMTM4LCAgICA3OCwgICAgODEsICAgIDQ1LAorICAg
ICAgOTYsICAgMTM5LCAgIDE0MSwgICAgNzMsICAgICAwLCAgIDE3NiwgICAxNDEsICAgMTQ1LCAg
ICA3NSwgICAgNzUsCisgICAgIDE2MSwgICAxMzIsICAgMTMxLCAgIDEzNCwgICAxMzksICAgMTMz
LCAgICA5NiwgICAgNzEsICAgIDczLCAgICA4MCwKKyAgICAgIDQ1LCAgICA0NywgICAgNDgsICAg
IDQ5LCAgICA1MiwgICAgNTMsICAgIDcxLCAgICA4MiwgICAgODMsICAgIDg1LAorICAgICAgOTcs
ICAgIDk4LCAgICA5OSwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEwNiwg
ICAxMDcsCisgICAgIDEwOCwgICAxMDksICAgMTEwLCAgIDExMSwgICAxMTIsICAgMTEzLCAgIDEx
NCwgICAxMTUsICAgMTE2LCAgIDExNywKKyAgICAgMTE4LCAgIDExOSwgICAxMjAsICAgMTIxLCAg
IDEyNSwgICAxNDIsICAgIDgxLCAgIDEzOSwgICAxNDYsICAgMTQ3LAorICAgICAxNDQsICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICA0MCwgICAgNzUs
CisgICAgICA3NiwgICAgODEsICAgMTA4LCAgIDEyMSwgICAxMjIsICAgMTI0LCAgIDEyNiwgICAx
MjcsICAgMTQyLCAgIDE1MSwKKyAgICAgMTUyLCAgIDE1MywgICAxNTQsICAgMTYyLCAgIDE2Mywg
ICAxNjQsICAgMTY3LCAgIDE3NCwgICAgOTYsICAgMTMxLAorICAgICAxMzQsICAgIDczLCAgICA4
MCwgICAgNzQsICAgMTI1LCAgIDEyMiwgICAxNTAsICAgMTA4LCAgIDEwOCwgICAxMjQsCisgICAg
ICA1MiwgICAgNTMsICAgIDczLCAgICA3NywgICAgNzIsICAgIDcyLCAgICA3OCwgICAgMzksICAg
MTIyLCAgICA3MSwKKyAgICAgMTA4LCAgICA4NiwgICAgODcsICAgIDgzLCAgICA4NSwgICAgNTQs
ICAgIDU1LCAgICA4OSwgICAgOTAsICAgIDU2LAorICAgICAgNTcsICAgIDU4LCAgICA2MCwgICAg
NTksICAgIDk0LCAgICA3NCwgICAgOTYsICAgMTQ4LCAgIDE0OSwgICAgNzYsCisgICAgIDE0Nywg
ICAxNDYsICAgIDgxLCAgICA4MSwgICAxNjksICAgIDcxLCAgICA3MSwgICAgODEsICAgIDgxLCAg
IDEyNCwKKyAgICAgIDcxLCAgICA3NiwgICAxNTUsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDcw
LCAgICA4MCwgICAxMjMsICAgIDc4LAorICAgICAgODEsICAgIDc2LCAgIDE1MiwgICAgNzMsICAg
IDc0LCAgIDEyNSwgICAxNTAsICAgIDc0LCAgICA3MiwgICAxMDAsCisgICAgIDEyNCwgICAgNDUs
ICAgIDQ2LCAgICA5NiwgICAxMDMsICAgMTIyLCAgIDEwOCwgICAxMDgsICAgMTEwLCAgIDExMCwK
KyAgICAgMTEyLCAgIDExMiwgICAxMTIsICAgMTEyLCAgIDExMywgICAxMTMsICAgMTE3LCAgIDEx
OCwgICAxMTksICAgMTI0LAorICAgICAgNzMsICAgIDc4LCAgICA4MSwgICAgNzYsICAgMTU4LCAg
IDE1OSwgICAxNjAsICAgMTcwLCAgIDEyNCwgICAgODEsCisgICAgIDE2OCwgICAxNjIsICAgMTIy
LCAgIDEyMiwgICAxMjUsICAgIDc0LCAgICA3NCwgICAgNzksICAgMTI1LCAgIDE0OSwKKyAgICAg
IDQwLCAgIDE2MSwgICAxNTMsICAgMTUxLCAgIDE2MywgICAxNzEsICAgIDcyLCAgIDEyNCwgICAx
MzcsICAgMTY2LAorICAgICAxNTYsICAgIDc0LCAgIDEyMiwgICAgNzQsICAgIDcxLCAgIDE2Niwg
ICAxNzIsICAgMTczLCAgIDE1OCwgICAxNjUsCisgICAgICA5NiwgICAgNzIsICAgIDc2LCAgIDEy
NCwgICAgODEsICAgIDcyLCAgICAxNiwgICAgODAsICAgMTUzLCAgIDE1NywKKyAgICAgMTYxLCAg
ICA3MiwgICAxMjQsICAgMTU3LCAgIDE1OCwgICAxNTAsICAgIDgxCiB9OwogCiAjZGVmaW5lIHl5
ZXJyb2sJCSh5eWVycnN0YXR1cyA9IDApCkBAIC0xMzY2LDcgKzE0MDMsNyBAQCBkbwkJCQkJCQkJ
XAogICAgIH0JCQkJCQkJCVwKICAgZWxzZQkJCQkJCQkJXAogICAgIHsJCQkJCQkJCVwKLSAgICAg
IHl5ZXJyb3IgKGNvbnRleHQsIFlZXygic3ludGF4IGVycm9yOiBjYW5ub3QgYmFjayB1cCIpKTsg
XAorICAgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgWVlfKCJzeW50YXggZXJyb3I6IGNh
bm5vdCBiYWNrIHVwIikpOyBcCiAgICAgICBZWUVSUk9SOwkJCQkJCQlcCiAgICAgfQkJCQkJCQkJ
XAogd2hpbGUgKFlZSUQgKDApKQpAQCAtMTQyMSw5ICsxNDU4LDkgQEAgd2hpbGUgKFlZSUQgKDAp
KQogLyogWVlMRVggLS0gY2FsbGluZyBgeXlsZXgnIHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50cy4g
ICovCiAKICNpZmRlZiBZWUxFWF9QQVJBTQotIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWws
IFlZTEVYX1BBUkFNKQorIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2MsIFlZ
TEVYX1BBUkFNKQogI2Vsc2UKLSMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsKQorIyBkZWZp
bmUgWVlMRVggeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2MpCiAjZW5kaWYKIAogLyogRW5hYmxlIGRl
YnVnZ2luZyBpZiByZXF1ZXN0ZWQuICAqLwpAQCAtMTQ0Niw3ICsxNDgzLDcgQEAgZG8gewkJCQkJ
CQkJCSAgXAogICAgIHsJCQkJCQkJCQkgIFwKICAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiJXMg
IiwgVGl0bGUpOwkJCQkJICBcCiAgICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwJCQkJCQkg
IFwKLQkJICBUeXBlLCBWYWx1ZSwgY29udGV4dCk7IFwKKwkJICBUeXBlLCBWYWx1ZSwgTG9jYXRp
b24sIGNvbnRleHQpOyBcCiAgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7CQkJCQkJICBc
CiAgICAgfQkJCQkJCQkJCSAgXAogfSB3aGlsZSAoWVlJRCAoMCkpCkBAIC0xNDYwLDE4ICsxNDk3
LDIwIEBAIGRvIHsJCQkJCQkJCQkgIFwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVk
IF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQg
X01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ZhbHVlX3ByaW50IChGSUxFICp5eW91
dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBUUGFyc2VD
b250ZXh0KiBjb250ZXh0KQoreXlfc3ltYm9sX3ZhbHVlX3ByaW50IChGSUxFICp5eW91dHB1dCwg
aW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBZWUxUWVBFIGNvbnN0
ICogY29uc3QgeXlsb2NhdGlvbnAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiAjZWxzZQogc3Rh
dGljIHZvaWQKLXl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1
ZXAsIGNvbnRleHQpCit5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5
dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICAgICBGSUxFICp5eW91dHB1dDsKICAgICBp
bnQgeXl0eXBlOwogICAgIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKKyAgICBZWUxU
WVBFIGNvbnN0ICogY29uc3QgeXlsb2NhdGlvbnA7CiAgICAgVFBhcnNlQ29udGV4dCogY29udGV4
dDsKICNlbmRpZgogewogICBpZiAoIXl5dmFsdWVwKQogICAgIHJldHVybjsKKyAgWVlVU0UgKHl5
bG9jYXRpb25wKTsKICAgWVlVU0UgKGNvbnRleHQpOwogIyBpZmRlZiBZWVBSSU5UCiAgIGlmICh5
eXR5cGUgPCBZWU5UT0tFTlMpCkBAIC0xNDk0LDEzICsxNTMzLDE0IEBAIHl5X3N5bWJvbF92YWx1
ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZp
bmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmlu
ZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ByaW50IChGSUxFICp5eW91dHB1
dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBUUGFyc2VDb250
ZXh0KiBjb250ZXh0KQoreXlfc3ltYm9sX3ByaW50IChGSUxFICp5eW91dHB1dCwgaW50IHl5dHlw
ZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBZWUxUWVBFIGNvbnN0ICogY29uc3Qg
eXlsb2NhdGlvbnAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiAjZWxzZQogc3RhdGljIHZvaWQK
LXl5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIGNvbnRleHQpCit5
eV9zeW1ib2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwg
Y29udGV4dCkKICAgICBGSUxFICp5eW91dHB1dDsKICAgICBpbnQgeXl0eXBlOwogICAgIFlZU1RZ
UEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKKyAgICBZWUxUWVBFIGNvbnN0ICogY29uc3QgeXls
b2NhdGlvbnA7CiAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dDsKICNlbmRpZgogewpAQCAtMTUw
OSw3ICsxNTQ5LDkgQEAgeXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbAog
ICBlbHNlCiAgICAgWVlGUFJJTlRGICh5eW91dHB1dCwgIm50ZXJtICVzICgiLCB5eXRuYW1lW3l5
dHlwZV0pOwogCi0gIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2
YWx1ZXAsIGNvbnRleHQpOworICBZWV9MT0NBVElPTl9QUklOVCAoeXlvdXRwdXQsICp5eWxvY2F0
aW9ucCk7CisgIFlZRlBSSU5URiAoeXlvdXRwdXQsICI6ICIpOworICB5eV9zeW1ib2xfdmFsdWVf
cHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCk7
CiAgIFlZRlBSSU5URiAoeXlvdXRwdXQsICIpIik7CiB9CiAKQEAgLTE1NDksMTEgKzE1OTEsMTIg
QEAgZG8gewkJCQkJCQkJXAogI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlf
X0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZF
UikKIHN0YXRpYyB2b2lkCi15eV9yZWR1Y2VfcHJpbnQgKFlZU1RZUEUgKnl5dnNwLCBpbnQgeXly
dWxlLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0KQoreXlfcmVkdWNlX3ByaW50IChZWVNUWVBFICp5
eXZzcCwgWVlMVFlQRSAqeXlsc3AsIGludCB5eXJ1bGUsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQp
CiAjZWxzZQogc3RhdGljIHZvaWQKLXl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5cnVsZSwgY29u
dGV4dCkKK3l5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5bHNwLCB5eXJ1bGUsIGNvbnRleHQpCiAg
ICAgWVlTVFlQRSAqeXl2c3A7CisgICAgWVlMVFlQRSAqeXlsc3A7CiAgICAgaW50IHl5cnVsZTsK
ICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0OwogI2VuZGlmCkBAIC0xNTY5LDcgKzE2MTIsNyBA
QCB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eXJ1bGUsIGNvbnRleHQpCiAgICAgICBmcHJpbnRm
IChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKICAgICAgIHl5X3N5bWJvbF9wcmludCAo
c3RkZXJyLCB5eXJoc1t5eXByaHNbeXlydWxlXSArIHl5aV0sCiAJCSAgICAgICAmKHl5dnNwWyh5
eWkgKyAxKSAtICh5eW5yaHMpXSkKLQkJICAgICAgIAkJICAgICAgICwgY29udGV4dCk7CisJCSAg
ICAgICAsICYoeXlsc3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQkJICAgICAgICwgY29udGV4dCk7
CiAgICAgICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOwogICAgIH0KIH0KQEAgLTE1NzcsNyArMTYy
MCw3IEBAIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5cnVsZSwgY29udGV4dCkKICMgZGVmaW5l
IFlZX1JFRFVDRV9QUklOVChSdWxlKQkJXAogZG8gewkJCQkJXAogICBpZiAoeXlkZWJ1ZykJCQkJ
XAotICAgIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIFJ1bGUsIGNvbnRleHQpOyBcCisgICAgeXlf
cmVkdWNlX3ByaW50ICh5eXZzcCwgeXlsc3AsIFJ1bGUsIGNvbnRleHQpOyBcCiB9IHdoaWxlIChZ
WUlEICgwKSkKIAogLyogTm9uemVybyBtZWFucyBwcmludCBwYXJzZSB0cmFjZS4gIEl0IGlzIGxl
ZnQgdW5pbml0aWFsaXplZCBzbyB0aGF0CkBAIC0xODI4LDE3ICsxODcxLDE5IEBAIHl5c3ludGF4
X2Vycm9yIChjaGFyICp5eXJlc3VsdCwgaW50IHl5c3QKICNpZiAoZGVmaW5lZCBfX1NURENfXyB8
fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8
IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlkZXN0cnVjdCAoY29uc3QgY2hhciAq
eXltc2csIGludCB5eXR5cGUsIFlZU1RZUEUgKnl5dmFsdWVwLCBUUGFyc2VDb250ZXh0KiBjb250
ZXh0KQoreXlkZXN0cnVjdCAoY29uc3QgY2hhciAqeXltc2csIGludCB5eXR5cGUsIFlZU1RZUEUg
Knl5dmFsdWVwLCBZWUxUWVBFICp5eWxvY2F0aW9ucCwgVFBhcnNlQ29udGV4dCogY29udGV4dCkK
ICNlbHNlCiBzdGF0aWMgdm9pZAoteXlkZXN0cnVjdCAoeXltc2csIHl5dHlwZSwgeXl2YWx1ZXAs
IGNvbnRleHQpCit5eWRlc3RydWN0ICh5eW1zZywgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlv
bnAsIGNvbnRleHQpCiAgICAgY29uc3QgY2hhciAqeXltc2c7CiAgICAgaW50IHl5dHlwZTsKICAg
ICBZWVNUWVBFICp5eXZhbHVlcDsKKyAgICBZWUxUWVBFICp5eWxvY2F0aW9ucDsKICAgICBUUGFy
c2VDb250ZXh0KiBjb250ZXh0OwogI2VuZGlmCiB7CiAgIFlZVVNFICh5eXZhbHVlcCk7CisgIFlZ
VVNFICh5eWxvY2F0aW9ucCk7CiAgIFlZVVNFIChjb250ZXh0KTsKIAogICBpZiAoIXl5bXNnKQpA
QCAtMTkwOSw2ICsxOTU0LDggQEAgWVlTVFlQRSB5eWx2YWw7CiAKIC8qIE51bWJlciBvZiBzeW50
YXggZXJyb3JzIHNvIGZhci4gICovCiBpbnQgeXluZXJyczsKKy8qIExvY2F0aW9uIGRhdGEgZm9y
IHRoZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCitZWUxUWVBFIHl5bGxvYzsKIAogICBpbnQgeXlz
dGF0ZTsKICAgaW50IHl5bjsKQEAgLTE5NDIsMTYgKzE5ODksMjEgQEAgaW50IHl5bmVycnM7CiAg
IFlZU1RZUEUgKnl5dnMgPSB5eXZzYTsKICAgWVlTVFlQRSAqeXl2c3A7CiAKKyAgLyogVGhlIGxv
Y2F0aW9uIHN0YWNrLiAgKi8KKyAgWVlMVFlQRSB5eWxzYVtZWUlOSVRERVBUSF07CisgIFlZTFRZ
UEUgKnl5bHMgPSB5eWxzYTsKKyAgWVlMVFlQRSAqeXlsc3A7CisgIC8qIFRoZSBsb2NhdGlvbnMg
d2hlcmUgdGhlIGVycm9yIHN0YXJ0ZWQgYW5kIGVuZGVkLiAgKi8KKyAgWVlMVFlQRSB5eWVycm9y
X3JhbmdlWzJdOwogCi0KLSNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5
c3NwIC09IChOKSkKKyNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5c3Nw
IC09IChOKSwgeXlsc3AgLT0gKE4pKQogCiAgIFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklU
REVQVEg7CiAKICAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1
ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKICAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KICAgWVlT
VFlQRSB5eXZhbDsKLQorICBZWUxUWVBFIHl5bG9jOwogCiAgIC8qIFRoZSBudW1iZXIgb2Ygc3lt
Ym9scyBvbiB0aGUgUkhTIG9mIHRoZSByZWR1Y2VkIHJ1bGUuCiAgICAgIEtlZXAgdG8gemVybyB3
aGVuIG5vIHN5bWJvbCBzaG91bGQgYmUgcG9wcGVkLiAgKi8KQEAgLTE5NzEsNiArMjAyMywxMiBA
QCBpbnQgeXluZXJyczsKIAogICB5eXNzcCA9IHl5c3M7CiAgIHl5dnNwID0geXl2czsKKyAgeXls
c3AgPSB5eWxzOworI2lmIGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNf
VFJJVklBTAorICAvKiBJbml0aWFsaXplIHRoZSBkZWZhdWx0IGxvY2F0aW9uIGJlZm9yZSBwYXJz
aW5nIHN0YXJ0cy4gICovCisgIHl5bGxvYy5maXJzdF9saW5lICAgPSB5eWxsb2MubGFzdF9saW5l
ICAgPSAxOworICB5eWxsb2MuZmlyc3RfY29sdW1uID0geXlsbG9jLmxhc3RfY29sdW1uID0gMDsK
KyNlbmRpZgogCiAgIGdvdG8geXlzZXRzdGF0ZTsKIApAQCAtMTk5Nyw3ICsyMDU1LDcgQEAgaW50
IHl5bmVycnM7CiAJICAgbWVtb3J5LiAgKi8KIAlZWVNUWVBFICp5eXZzMSA9IHl5dnM7CiAJeXl0
eXBlX2ludDE2ICp5eXNzMSA9IHl5c3M7Ci0KKwlZWUxUWVBFICp5eWxzMSA9IHl5bHM7CiAKIAkv
KiBFYWNoIHN0YWNrIHBvaW50ZXIgYWRkcmVzcyBpcyBmb2xsb3dlZCBieSB0aGUgc2l6ZSBvZiB0
aGUKIAkgICBkYXRhIGluIHVzZSBpbiB0aGF0IHN0YWNrLCBpbiBieXRlcy4gIFRoaXMgdXNlZCB0
byBiZSBhCkBAIC0yMDA2LDkgKzIwNjQsOSBAQCBpbnQgeXluZXJyczsKIAl5eW92ZXJmbG93IChZ
WV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwKIAkJICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9mICgq
eXlzc3ApLAogCQkgICAgJnl5dnMxLCB5eXNpemUgKiBzaXplb2YgKCp5eXZzcCksCi0KKwkJICAg
ICZ5eWxzMSwgeXlzaXplICogc2l6ZW9mICgqeXlsc3ApLAogCQkgICAgJnl5c3RhY2tzaXplKTsK
LQorCXl5bHMgPSB5eWxzMTsKIAl5eXNzID0geXlzczE7CiAJeXl2cyA9IHl5dnMxOwogICAgICAg
fQpAQCAtMjAzMSw3ICsyMDg5LDcgQEAgaW50IHl5bmVycnM7CiAJICBnb3RvIHl5ZXhoYXVzdGVk
bGFiOwogCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3MpOwogCVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnMp
OwotCisJWVlTVEFDS19SRUxPQ0FURSAoeXlscyk7CiAjICB1bmRlZiBZWVNUQUNLX1JFTE9DQVRF
CiAJaWYgKHl5c3MxICE9IHl5c3NhKQogCSAgWVlTVEFDS19GUkVFICh5eXNzMSk7CkBAIC0yMDQx
LDcgKzIwOTksNyBAQCBpbnQgeXluZXJyczsKIAogICAgICAgeXlzc3AgPSB5eXNzICsgeXlzaXpl
IC0gMTsKICAgICAgIHl5dnNwID0geXl2cyArIHl5c2l6ZSAtIDE7Ci0KKyAgICAgIHl5bHNwID0g
eXlscyArIHl5c2l6ZSAtIDE7CiAKICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YWNrIHNp
emUgaW5jcmVhc2VkIHRvICVsdVxuIiwKIAkJICAodW5zaWduZWQgbG9uZyBpbnQpIHl5c3RhY2tz
aXplKSk7CkBAIC0yMTE4LDcgKzIxNzYsNyBAQCB5eWJhY2t1cDoKIAogICB5eXN0YXRlID0geXlu
OwogICAqKyt5eXZzcCA9IHl5bHZhbDsKLQorICAqKyt5eWxzcCA9IHl5bGxvYzsKICAgZ290byB5
eW5ld3N0YXRlOwogCiAKQEAgLTIxNDksMTggKzIyMDcsMTkgQEAgeXlyZWR1Y2U6CiAgICAgIEdD
QyB3YXJuaW5nIHRoYXQgWVlWQUwgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZC4gICovCiAgIHl5
dmFsID0geXl2c3BbMS15eWxlbl07CiAKLQorICAvKiBEZWZhdWx0IGxvY2F0aW9uLiAgKi8KKyAg
WVlMTE9DX0RFRkFVTFQgKHl5bG9jLCAoeXlsc3AgLSB5eWxlbiksIHl5bGVuKTsKICAgWVlfUkVE
VUNFX1BSSU5UICh5eW4pOwogICBzd2l0Y2ggKHl5bikKICAgICB7Ci0gICAgICAgIGNhc2UgMjoK
KyAgICAgICAgY2FzZSA0OgogCiAgICAgewogICAgICAgICAvLyBUaGUgc3ltYm9sIHRhYmxlIHNl
YXJjaCB3YXMgZG9uZSBpbiB0aGUgbGV4aWNhbCBwaGFzZQogICAgICAgICBjb25zdCBUU3ltYm9s
KiBzeW1ib2wgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN5bWJvbDsKICAgICAgICAgY29uc3Qg
VFZhcmlhYmxlKiB2YXJpYWJsZTsKICAgICAgICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ1bmRlY2xh
cmVkIGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ1bmRlY2xh
cmVkIGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiBmYWtlVmFy
aWFibGUgPSBuZXcgVFZhcmlhYmxlKCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBl
KTsKQEAgLTIxNjksMTAgKzIyMjgsMTcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAvLyBUaGlzIGlkZW50aWZpZXIgY2FuIG9ubHkgYmUgYSB2YXJpYWJsZSB0eXBl
IHN5bWJvbAogICAgICAgICAgICAgaWYgKCEgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ2
YXJpYWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLT5jX3N0cigp
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ2
YXJpYWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLT5jX3N0cigp
KTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3lt
Ym9sKTsKKworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmlzVmFyaWFibGVCdWlsdEluKHZhcmlh
YmxlKSAmJiAKKyAgICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5
KCkgJiYKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eWxz
cFsoMSkgLSAoMSldKSwgdmFyaWFibGUtPmdldEV4dGVuc2lvbigpKSkgeworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcsIGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVy
eSwgYW5kIHRoZSBwb29sCkBAIC0yMTgxLDIyICsyMjQ3LDIzIEBAIHl5cmVkdWNlOgogICAgICAg
ICBpZiAodmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCApIHsK
ICAgICAgICAgICAgIENvbnN0YW50VW5pb24qIGNvbnN0QXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29u
c3RQb2ludGVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0KHZhcmlhYmxlLT5nZXRUeXBlKCkpOwot
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQs
ICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5
cGUoKSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRU
eXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzoKKyAg
Y2FzZSA1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgNDoKKyAgY2FzZSA2OgogCiAgICAgewogICAgICAgICAvLwpAQCAt
MjIwNCwxNTUgKzIyNzEsMTUxIEBAIHl5cmVkdWNlOgogICAgICAgICAvLyBjaGVjayBmb3Igb3Zl
cmZsb3cgZm9yIGNvbnN0YW50cwogICAgICAgICAvLwogICAgICAgICBpZiAoYWJzKCh5eXZzcFso
MSkgLSAoMSldLmxleCkuaSkgPj0gKDEgPDwgMTYpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICIgaW50ZWdlciBjb25zdGFudCBvdmVy
ZmxvdyIsICIiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSld
KSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJy
YXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0
KCh5eXZzcFsoMSkgLSAoMSldLmxleCkuaSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDU6CisgIGNhc2UgNzoKIAogICAgIHsKICAg
ICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwog
ICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5mKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDY6CisgIGNhc2UgODoKIAogICAgIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5p
b25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRC
Q29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5iKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDEpIC0g
KDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3OgorICBjYXNlIDk6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA4OgorICBjYXNlIDEwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOToKKyAgY2FzZSAxMToKIAogICAgIHsKICAg
ICAgICAgaWYgKCEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNB
cnJheSgpICYmICEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNN
YXRyaXgoKSAmJiAhKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlz
VmVjdG9yKCkpIHsKICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCkpCi0gICAgICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5v
dCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNf
c3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoNCld
KSwgIiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3Ig
IiwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzU3ltYm9s
Tm9kZSgpLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIgbGVm
dCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICJleHBy
ZXNzaW9uIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0
KV0pLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3Rv
ciAiLCAiZXhwcmVzc2lvbiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICB9Ci0gICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ICYmICh5eXZzcFsoMykg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25z
dCkgewotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5pc0FycmF5KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgYXJyYXlzCi0gICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRk
Q29uc3RBcnJheU5vZGUoKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3Qo
KSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikg
LSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKSB7ICAvLyBjb25zdGFudCBm
b2xkaW5nIGZvciB2ZWN0b3JzCi0gICAgICAgICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7
Ci0gICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7Ci0gICAgICAgICAgICAgICAgZmllbGRz
Lm9mZnNldHNbMF0gPSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgp
OyAvLyBuZWVkIHRvIGRvIGl0IHRoaXMgd2F5IGJlY2F1c2Ugdi54eSBzZW5kcyBmaWVsZHMgaW50
ZWdlciBhcnJheQotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVsZHMsICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOwot
ICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+aXNNYXRyaXgoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBtYXRyaWNlcwot
ICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmFkZENvbnN0TWF0cml4Tm9kZSgoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElD
b25zdCgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygyKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgeworICAg
ICAgICAgICAgaW50IGluZGV4ID0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRJQ29uc3QoMCk7CisgICAgICAgICAgICBp
ZiAoaW5kZXggPCAwKSB7CisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gaW5mb1N0
cmVhbTsKKyAgICAgICAgICAgICAgICBpbmZvU3RyZWFtIDw8IGluZGV4OworICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nIGluZm8gPSBpbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMykgLSAoNCldKSwgIm5lZ2F0aXZlIGluZGV4IiwgaW5m
by5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAg
ICAgICAgICAgaW5kZXggPSAwOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewotICAgICAgICAgICAgICAgIGlmICgoKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkgfHwgKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpICYmICh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0Tm9taW5h
bFNpemUoKSA8PSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpICYm
ICEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpICkg
ewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07
Ci0gICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiZmllbGQgc2VsZWN0aW9u
IG91dCBvZiByYW5nZSAnIiA8PCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElD
b25zdCgpIDw8ICInIjsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZv
ID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0
cigpKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGUoKS5nZXRBcnJheVNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBl
KCkuZ2V0TWF4QXJyYXlTaXplKCkgPD0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5n
ZXRJQ29uc3QoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlTZXRNYXhTaXplKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRBc1N5bWJvbE5vZGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldFR5cGVQb2ludGVyKCksICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KS0+Z2V0SUNvbnN0KCksIHRydWUsICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCksICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigpLCAwLCBmYWxzZSwg
KHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAoeXl2c3BbKDMpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9u
QXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpID49ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBv
dXQgb2YgcmFuZ2UgJyIgPDwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29u
c3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0
cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgIiIsICJbIiwg
ZXh0cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAgICAgICAgICAgaWYg
KCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkpIHsg
Ly8gY29uc3RhbnQgZm9sZGluZyBmb3IgYXJyYXlzCisgICAgICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlOb2RlKGlu
ZGV4LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygy
KSAtICg0KV0pKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKSB7ICAvLyBjb25zdGFudCBmb2xk
aW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVsZHMgZmllbGRz
OworICAgICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVlZCB0byBkbyBpdCB0aGlzIHdheSBi
ZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkKKyAgICAgICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RWZWN0
b3JOb2RlKGZpZWxkcywgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eWxzcFsoMikgLSAoNCldKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSkgeyAvLyBjb25z
dGFudCBmb2xkaW5nIGZvciBtYXRyaWNlcworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoaW5kZXgs
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0g
KDQpXSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5p
c0FycmF5KCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGUoKS5nZXRBcnJheVNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgIiIsICJbIiwgImFycmF5IG11
c3QgYmUgcmVkZWNsYXJlZCB3aXRoIGEgc2l6ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRoIGEg
dmFyaWFibGUiKTsKKyAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
aW5kZXggPj0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5
cGUoKS5nZXRBcnJheVNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJ
bmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIici
OworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJ
bmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KHl5bHNwWygyKSAtICg0KV0pLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRleCA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgLSAxOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmICgoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzVmVjdG9yKCkgfHwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzTWF0cml4KCkpICYmICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSA8PSBpbmRleCkgeworICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CisgICAgICAg
ICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiZmllbGQgc2VsZWN0aW9uIG91dCBvZiBy
YW5nZSAnIiA8PCBpbmRleCA8PCAiJyI7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
IGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0KV0pLCAiIiwgIlsiLCBleHRyYUluZm8uY19z
dHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaW5kZXggPSAgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIC0gMTsKICAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOworICAgICAgICAg
ICAgICAgICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0Nv
bnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+c2V0SUNvbnN0KGluZGV4KTsK
KyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICg0KV0pKTsKICAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleEluZGlyZWN0LCAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoNCldKSk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAgICAgICAgICAg
ICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAg
ICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoMC4wZik7Ci0gICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3Rh
bnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxQ29uc3QpLCAo
eXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUNvbnN0KSwgKHl5bHNwWygy
KSAtICg0KV0pKTsKICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7CiAgICAgICAgICAgICBpZiAoKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSkK
LSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUo
VFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUo
KS5nZXRTdHJ1Y3QoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpKSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpKTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNl
dFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSk7CiAKICAgICAgICAgICAgIGlmICgoeXl2
c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxp
ZmllcigpID09IEV2cUNvbnN0KQogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKLSAg
ICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+aXNNYXRyaXgoKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQotICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCwg
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXpl
KCkpKTsKLSAgICAgICAgZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzTWF0cml4KCkpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCkpKTsKLSAgICAgICAg
ZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzVmVj
dG9yKCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5
cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QpKTsKLSAgICAg
ICAgZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlz
VmVjdG9yKCkpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNl
dFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSkpOwotICAgICAgICBlbHNlCisgICAgICAgIH0g
ZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0
cml4KCkpIHsKKyAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9
PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5OworICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBxdWFsaWZpZXIsICh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgp
KSk7CisgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzVmVjdG9yKCkpIHsKKyAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVy
ID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5OworICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwg
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigp
LCBxdWFsaWZpZXIpKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxMDoKKyAgY2FzZSAxMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDExOgorICBjYXNlIDEzOgogCiAg
ICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygzKSAt
ICgzKV0ubGV4KS5saW5lLCAiY2Fubm90IGFwcGx5IGRvdCBvcGVyYXRvciB0byBhbiBhcnJheSIs
ICIuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDMpXSksICJj
YW5ub3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkgewogICAgICAgICAg
ICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJz
ZVZlY3RvckZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMs
ICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSkpIHsKKyAgICAgICAgICAgIGlmICghIGNvbnRl
eHQtPnBhcnNlVmVjdG9yRmllbGRzKCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCks
IGZpZWxkcywgKHl5bHNwWygzKSAtICgzKV0pKSkgewogICAgICAgICAgICAgICAgIGZpZWxkcy5u
dW0gPSAxOwogICAgICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzWzBdID0gMDsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgp
LmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIHZl
Y3RvciBmaWVsZHMKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsK
KyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygzKSAtICgzKV0pKTsKICAgICAgICAgICAgICAgICBpZiAo
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKQEAgLTIzNjEsMTMgKzI0MjQsMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZx
Q29uc3QsIChpbnQpICgqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcpLnNpemUoKSkpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBUU3RyaW5nIHZlY3RvclN0cmlu
ZyA9ICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZzsKLSAgICAgICAgICAgICAgICBUSW50
ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmllbGRz
LCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChF
T3BWZWN0b3JTd2l6emxlLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAgICAg
VEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxlKGZp
ZWxkcywgKHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wVmVj
dG9yU3dpenpsZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGlu
ZGV4LCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAoaW50KSB2
ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAo
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpIHsK
ICAgICAgICAgICAgIFRNYXRyaXhGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEgY29u
dGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUo
KSwgZmllbGRzLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpKSB7CisgICAgICAgICAgICBp
ZiAoISBjb250ZXh0LT5wYXJzZU1hdHJpeEZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5z
dHJpbmcsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21p
bmFsU2l6ZSgpLCBmaWVsZHMsICh5eWxzcFsoMykgLSAoMyldKSkpIHsKICAgICAgICAgICAgICAg
ICBmaWVsZHMud2hvbGVSb3cgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmaWVsZHMud2hvbGVD
b2wgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmaWVsZHMucm93ID0gMDsKQEAgLTIzNzYsNjMg
KzI0MzksNTcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChm
aWVsZHMud2hvbGVSb3cgfHwgZmllbGRzLndob2xlQ29sKSB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiIG5vbi1zY2FsYXIgZmll
bGRzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiLCAiLiIpOworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1wbGVt
ZW50ZWQgeWV0IiwgIi4iKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uWzFdOwogICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgwKTsKLSAgICAg
ICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
SW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCBpbmRleCwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAg
ICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0
KSwgKHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhE
aXJlY3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwg
KHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0
SUNvbnN0KGZpZWxkcy5jb2wgKiAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Tm9taW5hbFNpemUoKSArIGZpZWxkcy5yb3cpOwotICAgICAgICAgICAgICAgIFRJ
bnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2
c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRl
eERpcmVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4
LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgICAgIFRJbnRlcm1U
eXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDMp
IC0gKDMpXSkpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4LCAoeXlsc3BbKDIpIC0g
KDMpXSkpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRQcmVjaXNpb24oKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKCh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSA9
PSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgICAgIGJvb2wgZmllbGRGb3VuZCA9IGZhbHNlOwotICAg
ICAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOwotICAgICAgICAgICAg
aWYgKGZpZWxkcyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lLCAic3RydWN0dXJlIGhhcyBubyBmaWVsZHMiLCAiSW50ZXJu
YWwgRXJyb3IiKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBpOwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkg
PCBmaWVsZHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoKmZpZWxk
cylbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3Ry
aW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGZpZWxk
cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChmaWVsZHNbaV0tPm5hbWUoKSA9
PSAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAg
ZmllbGRGb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZmllbGRGb3VuZCkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RT
dHJ1Y3QoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0
VHlwZSgqKCpmaWVsZHMpW2ldLnR5cGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNoYW5nZSB0aGUgcXVhbGlmaWVyIG9mIHRoZSByZXR1cm4gdHlwZSwgbm90IG9mIHRoZSBzdHJ1
Y3R1cmUgZmllbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyB0aGUgc3RydWN0
dXJlIGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1Y3R1cmVzLgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsx
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdChpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAqKCpmaWVsZHMpW2ldLnR5cGUs
ICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
SW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlw
ZSgqKCpmaWVsZHMpW2ldLnR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZp
ZWxkRm91bmQpIHsKKyAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkg
eworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5hZGRDb25zdFN0cnVjdCgqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMp
XSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKCpmaWVsZHNbaV0t
PnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFuZ2UgdGhlIHF1YWxpZmll
ciBvZiB0aGUgcmV0dXJuIHR5cGUsIG5vdCBvZiB0aGUgc3RydWN0dXJlIGZpZWxkCisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBhcyB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgc2hhcmVk
IGJldHdlZW4gdmFyaW91cyBzdHJ1Y3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZp
ZXIoRXZxQ29uc3QpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgz
KV0ubGV4KS5saW5lLCAiIG5vIHN1Y2ggZmllbGQgaW4gc3RydWN0dXJlIiwgKHl5dnNwWygzKSAt
ICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOworICAg
ICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bMV07CisgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdChpKTsK
KyAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksICpmaWVsZHNbaV0tPnR5cGUoKSwg
KHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4
RGlyZWN0U3RydWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
aW5kZXgsICh5eWxzcFsoMikgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOwogICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIG5vIHN1Y2ggZmllbGQgaW4gc3RydWN0
dXJlIiwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiBmaWVsZCBzZWxlY3Rpb24g
cmVxdWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIs
ICh5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiBmaWVsZCBzZWxlY3Rpb24gcmVxdWly
ZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIsICh5eXZz
cFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CkBA
IC0yNDQwLDM1ICsyNDk3LDM1IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxMjoKKyAgY2FzZSAxNDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1
ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAiKysiLCAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5s
VmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgIisrIiwgKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RJbmNyZW1lbnQsICh5eXZzcFsoMSkgLSAo
MildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUs
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVt
ZW50LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygy
KSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlP
cEVycm9yKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIisrIiwgKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgIisrIiwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5n
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM6
CisgIGNhc2UgMTU6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNo
ZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIi0tIiwgKHl5dnNwWygxKSAtICgyKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJy
b3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICItLSIsICh5eXZzcFsoMSkgLSAoMildLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0RGVjcmVtZW50LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdERlY3JlbWVudCwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMild
KSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFsoMSkgLSAoMildLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICItLSIsICh5eXZzcFsoMSkg
LSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0OgorICBjYXNl
IDE2OgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+aW50ZWdlckVycm9yQ2hlY2soKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICJbXSIpKQpAQCAtMjQ3Nyw3
ICsyNTM0LDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE1Ogor
ICBjYXNlIDE3OgogCiAgICAgewogICAgICAgICBURnVuY3Rpb24qIGZuQ2FsbCA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybSkuZnVuY3Rpb247CkBAIC0yNDkxLDE4ICsyNTQ4LDE4IEBAIHl5cmVk
dWNlOgogICAgICAgICAgICAgLy8gVGhlaXIgcGFyYW1ldGVycyB3aWxsIGJlIHZlcmlmaWVkIGFs
Z29yaXRobWljYWxseS4KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBUVHlwZSB0eXBlKEVi
dFZvaWQsIEVicFVuZGVmaW5lZCk7ICAvLyB1c2UgdGhpcyB0byBnZXQgdGhlIHR5cGUgYmFjawot
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVjaygoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmxpbmUsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9k
ZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmNvbnN0
cnVjdG9yRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybSkuaW50ZXJtTm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgewogICAgICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IDA7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgLy8gSXQncyBhIGNvbnN0cnVj
dG9yLCBvZiB0eXBlICd0eXBlJy4KICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0cnVjdG9y
KCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgJnR5cGUsIG9wLCBmbkNhbGws
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RydWN0b3IoKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgKHl5bHNw
WygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRl
T3BlcmF0b3IoMCwgb3AsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUodHlwZSk7CiAg
ICAgICAgIH0gZWxzZSB7CkBAIC0yNTExLDEzICsyNTY4LDEzIEBAIHl5cmVkdWNlOgogICAgICAg
ICAgICAgLy8KICAgICAgICAgICAgIGNvbnN0IFRGdW5jdGlvbiogZm5DYW5kaWRhdGU7CiAgICAg
ICAgICAgICBib29sIGJ1aWx0SW47Ci0gICAgICAgICAgICBmbkNhbmRpZGF0ZSA9IGNvbnRleHQt
PmZpbmRGdW5jdGlvbigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsIGZuQ2FsbCwgJmJ1
aWx0SW4pOworICAgICAgICAgICAgZm5DYW5kaWRhdGUgPSBjb250ZXh0LT5maW5kRnVuY3Rpb24o
KHl5bHNwWygxKSAtICgxKV0pLCBmbkNhbGwsICZidWlsdEluKTsKICAgICAgICAgICAgIGlmIChm
bkNhbmRpZGF0ZSkgewogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgLy8gQSBk
ZWNsYXJlZCBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIGlm
IChidWlsdEluICYmICFmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkuZW1wdHkoKSAmJgotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eXZzcFsoMSkg
LSAoMSldLmludGVybSkubGluZSwgZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgeworICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eWxzcFsoMSkg
LSAoMSldKSwgZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgewogICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIG9wID0gZm5DYW5kaWRhdGUtPmdldEJ1aWx0SW5PcCgpOwpAQCAtMjUyOSw3ICsyNTg2LDcg
QEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gVHJlYXQgaXQgbGlrZSBhIGJ1aWx0LWluIHVuYXJ5IG9wZXJhdG9yLgogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1h
dGgob3AsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgMCwgY29udGV4dC0+
c3ltYm9sVGFibGUpOworICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChvcCwgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXlsc3BbKDEpIC0gKDEpXSksIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJidWlsdCBpbiB1bmFyeSBvcGVyYXRvciBm
dW5jdGlvbi4gIFR5cGU6ICIgPDwgc3RhdGljX2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKTsKQEAgLTI1
MzgsMTIgKzI1OTUsMTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WVlFUlJPUjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgb3AsICh5eXZzcFsoMSkgLSAo
MSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3Bl
cmF0b3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIG9wLCAoeXls
c3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHJlYWwgZnVuY3Rpb24g
Y2FsbAogCi0gICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgRU9wRnVuY3Rpb25DYWxsLCAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRl
T3BlcmF0b3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIEVPcEZ1
bmN0aW9uQ2FsbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKGZuQ2FuZGlkYXRlLT5nZXRSZXR1
cm5UeXBlKCkpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgaG93IHdlIGtub3cg
d2hldGhlciB0aGUgZ2l2ZW4gZnVuY3Rpb24gaXMgYSBidWlsdEluIGZ1bmN0aW9uIG9yIGEgdXNl
ciBkZWZpbmVkIGZ1bmN0aW9uCkBAIC0yNTcwLDcgKzI2MjcsNyBAQCB5eXJlZHVjZToKICAgICAg
ICAgICAgICAgICAvLyBQdXQgb24gYSBkdW1teSBub2RlIGZvciBlcnJvciByZWNvdmVyeQogICAg
ICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlv
blsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoMC4wZik7Ci0gICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOwor
ICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTI1NzgsMzkgKzI2MzUsMzcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDE2OgorICBjYXNlIDE4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE3
OgorICBjYXNlIDE5OgogCiAgICAgewotICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0pLmxpbmUsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkIiwgIiIpOwor
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDMpXSksICJtZXRob2RzIGFyZSBu
b3Qgc3VwcG9ydGVkIiwgIiIpOwogICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKTsKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTg6CisgIGNhc2UgMjA6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKICAgICA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMTk6CisgIGNhc2UgMjE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0pID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFsLmludGVy
bSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgMjA6CisgIGNhc2UgMjI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0pLmZ1bmN0aW9uID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKTsKQEAgLTI2
MTgsNyArMjY3Myw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAy
MToKKyAgY2FzZSAyMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24g
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwpAQCAtMjYyNiw3ICsyNjgxLDcg
QEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDIyOgorICBjYXNlIDI0
OgogCiAgICAgewogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5cGUoKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSkgfTsKQEAg
LTI2MzYsMjQgKzI2OTEsMjQgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDIzOgorICBjYXNlIDI1OgogCiAgICAgewogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0g
eyAwLCBuZXcgVFR5cGUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldFR5cGUoKSkgfTsKICAgICAgICAgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlv
bi0+YWRkUGFyYW1ldGVyKHBhcmFtKTsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24g
PSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uOwotICAgICAgICAoeXl2YWwuaW50
ZXJtKS5pbnRlcm1Ob2RlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybSkuaW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93
QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDI0OgorICBjYXNlIDI2OgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5m
dW5jdGlvbik7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDI1OgorICBjYXNlIDI3Ogog
CiAgICAgewogICAgICAgICAvLwpAQCAtMjY2NywzOSArMjcyMiwzOSBAQCB5eXJlZHVjZToKICAg
ICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkg
LSAoMSldLmludGVybS50eXBlKS5tYXRyaXgpIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNo
KCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5zaXplKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BD
b25zdHJ1Y3RNYXQyOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RNYXQyOyAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2goKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0
cnVjdFZlYzI7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzM7ICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7ICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdFZlYzI7ICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdFZlYzM7ICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7ICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgogICAgICAgICAgICAgICAgIHN3aXRjaCgoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2l6ZSkgewotICAgICAgICAgICAgICAgIGNhc2Ug
MTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3Ry
dWN0SW50OyAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjogICAgICAgRlJBR19WRVJU
X09OTFkoIml2ZWMyIiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9
IEVPcENvbnN0cnVjdElWZWMyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAg
IEZSQUdfVkVSVF9PTkxZKCJpdmVjMyIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5s
aW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSA0OiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzQiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0SVZlYzQ7IGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMTogb3AgPSBFT3BDb25zdHJ1Y3RJbnQ7ICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdElWZWMyOyBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0SVZlYzM7IGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjNDsgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRCb29sOgog
ICAgICAgICAgICAgICAgIHN3aXRjaCgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2l6
ZSkgewotICAgICAgICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgMjogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWMyIiwgKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMyOyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMyIsICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMzsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiAgICAgICBGUkFHX1ZFUlRfT05MWSgiYnZl
YzQiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3Ry
dWN0QlZlYzQ7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTogb3AgPSBFT3BDb25zdHJ1
Y3RCb29sOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVj
dEJWZWMyOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0
QlZlYzM7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RC
VmVjNDsgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAob3AgPT0gRU9wTnVsbCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lLCAiY2Fubm90IGNvbnN0cnVjdCB0aGlzIHR5
cGUiLCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSkp
OworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgImNh
bm5vdCBjb25zdHJ1Y3QgdGhpcyB0eXBlIiwgZ2V0QmFzaWNTdHJpbmcoKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpLnR5cGUpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUg
PSBFYnRGbG9hdDsKICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OwpAQCAt
MjcxMiwyMSArMjc2NywxMCBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMjY6Ci0KLSAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2so
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJp
bmcpKQotICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBUVHlwZSB0eXBl
KEVidFZvaWQsIEVicFVuZGVmaW5lZCk7Ci0gICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBu
ZXcgVEZ1bmN0aW9uKCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBlKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBmdW5jdGlvbjsKLSAgICA7fQotICAgIGJyZWFr
OwotCi0gIGNhc2UgMjc6CisgIGNhc2UgMjg6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAqKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRF
cnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3Ry
aW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgVFR5cGUgdHlw
ZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwogICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0g
bmV3IFRGdW5jdGlvbigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZywgdHlwZSk7CkBAIC0y
NzM0LDQ2ICsyNzc4LDQ2IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAyODoKKyAgY2FzZSAyOToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDI5OgorICBjYXNlIDMwOgogCiAgICAgewotICAg
ICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgp
LmxpbmUsICIrKyIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0p
LCAiKysiLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlSW5j
cmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRV
bmFyeU1hdGgoRU9wUHJlSW5jcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAg
ICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwg
IisrIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFso
MSkgLSAoMildKSwgIisrIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMzA6CisgIGNhc2UgMzE6CiAKICAgICB7Ci0gICAgICAgIGlmIChj
b250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIi0t
IiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBp
ZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDIpXSksICItLSIsICh5
eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVEZWNyZW1lbnQsICh5
eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDEpIC0gKDIp
XS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChF
T3BQcmVEZWNyZW1lbnQsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXlsc3BbKDEpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYg
KCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT51bmFyeU9wRXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAiLS0iLCAoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5bHNwWygxKSAtICgyKV0p
LCAiLS0iLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAzMToKKyAgY2FzZSAzMjoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkg
LSAoMildLmludGVybSkub3AgIT0gRU9wTnVsbCkgewotICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLm9wLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5saW5lLCBjb250ZXh0LT5z
eW1ib2xUYWJsZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCh5eXZzcFsoMSkgLSAoMildLmlu
dGVybSkub3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXls
c3BbKDEpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgICAgIGlmICgo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewogICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGVycm9yT3AgPSAiIjsKICAgICAgICAgICAgICAgICBzd2l0Y2goKHl5dnNwWygx
KSAtICgyKV0uaW50ZXJtKS5vcCkgewpAQCAtMjc4MSw3ICsyODI1LDcgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OiBlcnJvck9wID0gIiEiOyBicmVhazsK
ICAgICAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmludGVy
bSkubGluZSwgZXJyb3JPcCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5
T3BFcnJvcigoeXlsc3BbKDEpIC0gKDIpXSksIGVycm9yT3AsICh5eXZzcFsoMikgLSAoMildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CiAgICAgICAgICAgICB9CkBAIC0yNzkwLDE4NSArMjgzNCwxNzggQEAgeXlyZWR1Y2U6CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDMyOgotCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5s
aW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVP
cE51bGw7IDt9Ci0gICAgYnJlYWs7Ci0KICAgY2FzZSAzMzoKIAotICAgIHsgKHl5dmFsLmludGVy
bSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3Ag
PSBFT3BOZWdhdGl2ZTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTnVsbDsgO30K
ICAgICBicmVhazsKIAogICBjYXNlIDM0OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5saW5lID0g
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcExvZ2lj
YWxOb3Q7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE5lZ2F0aXZlOyA7fQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMzU6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAg
IHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BMb2dpY2FsTm90OyA7fQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMzY6CiAKKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIGJyZWFrOworCisg
IGNhc2UgMzc6CisKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIqIiwgKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4
dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BNdWwsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewot
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUsICIqIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiKiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAg
ICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzNzoKKyAgY2FzZSAzODoKIAog
ICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIi8iLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BEaXYsICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcERpdiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAg
aWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIi8iLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3Bb
KDIpIC0gKDMpXSksICIvIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDM4OgorICBjYXNlIDM5OgogCiAgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDM5OgorICBjYXNlIDQwOgogCiAg
ICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEFkZCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYg
KCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIisiLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIp
IC0gKDMpXSksICIrIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDQwOgorICBjYXNlIDQxOgogCiAgICAgewotICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QmluYXJ5TWF0aChFT3BTdWIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5h
cnlNYXRoKEVPcFN1YiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0g
KDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVy
cm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIi0iLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICItIiwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDQxOgorICBjYXNlIDQyOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KICAg
ICBicmVhazsKIAotICBjYXNlIDQyOgorICBjYXNlIDQzOgogCiAgICAgeyAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDQzOgorICBjYXNlIDQ0OgogCiAgICAgewot
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAg
IGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAg
Y29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICI8Iiwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNw
WygyKSAtICgzKV0pLCAiPCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENv
bnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2Up
OwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7Cisg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0NDoKKyAgY2FzZSA0NToKIAogICAgIHsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW4sICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAg
ICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiPiIs
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxz
cFsoMikgLSAoMyldKSwgIj4iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNl
KTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwor
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDU6CisgIGNhc2UgNDY6CiAKICAgICB7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1YWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuRXF1YWwsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAg
ICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUs
ICI8PSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9y
KCh5eWxzcFsoMikgLSAoMyldKSwgIjw9IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25z
dChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAg
ICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDQ2OgorICBjYXNlIDQ3OgogCiAgICAg
ewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgz
KV0ubGV4KS5saW5lLCAiPj0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICI+PSIsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9u
ICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgz
KV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0NzoKKyAgY2Fz
ZSA0ODoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA0ODoKKyAgY2FzZSA0OToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1YWws
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5l
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVxdWFsLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAt
ICgzKV0ubGV4KS5saW5lLCAiPT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICI9PSIsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVu
aW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlv
bkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFso
MikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAt
ICgzKV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0OToKKyAg
Y2FzZSA1MDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTm90RXF1YWwsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5vdEVxdWFsLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgz
KV0ubGV4KS5saW5lLCAiIT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIhPSIsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9u
ICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgz
KV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1MDoKLQotICAg
IHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9Ci0gICAgYnJlYWs7Ci0KICAgY2FzZSA1MToKIAogICAg
IHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CkBAIC0yOTg2LDE0MyArMzAyMywxNDggQEAgeXlyZWR1
Y2U6CiAKICAgY2FzZSA1NDoKIAorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgYnJl
YWs7CisKKyAgY2FzZSA1NToKKwogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNh
bEFuZCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9n
aWNhbEFuZCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSks
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5
eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiYmIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiJiYiLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAg
Q29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAg
ICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5
eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgNTU6CisgIGNhc2UgNTY6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgNTY6CisgIGNhc2UgNTc6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcExvZ2ljYWxYb3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5h
cnlNYXRoKEVPcExvZ2ljYWxYb3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNw
WygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+Ymlu
YXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJeXiIsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyld
KSwgIl5eIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlv
blsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDU3OgorICBjYXNlIDU4OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDU4OgorICBjYXNlIDU5OgogCiAgICAgewotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsT3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxPciwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAg
aWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgInx8Iiwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNw
WygyKSAtICgzKV0pLCAifHwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBD
b25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNl
KTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwor
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNTk6CisgIGNhc2UgNjA6CiAKICAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjA6CisgIGNhc2UgNjE6CiAK
ICAgICB7Ci0gICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAo
NSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkp
KQorICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUpXSks
ICh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5eXZzcFsoMSkgLSAo
NSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oKHl5dnNw
WygxKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoNSldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5bHNwWygyKSAtICg1KV0pKTsKICAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAo
NSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkgIT0gKHl5dnNwWyg1KSAtICg1
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSkKICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IDA7CiAKICAgICAgICAgaWYgKCh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlP
cEVycm9yKCh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSwgIjoiLCAoeXl2c3BbKDMpIC0gKDUp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWyg1
KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwor
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDUpXSksICI6
IiwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoNSkgLSAoNSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDYxOgorICBjYXNlIDYyOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDYyOgorICBjYXNlIDYzOgogCiAgICAgewotICAgICAgICBp
ZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0pLmxp
bmUsICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMyld
KSwgImFzc2lnbiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEFzc2lnbigoeXl2c3Bb
KDIpIC0gKDMpXS5pbnRlcm0pLm9wLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFsoMikgLSAoMyldLmludGVybSkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRBc3NpZ24oKHl5dnNwWygyKSAt
ICgzKV0uaW50ZXJtKS5vcCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIp
IC0gKDMpXSkpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9yKCh5eXZzcFsoMikgLSAoMyld
LmludGVybSkubGluZSwgImFzc2lnbiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5hc3NpZ25FcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJhc3NpZ24iLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5n
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjM6
Ci0KLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3Ag
PSBFT3BBc3NpZ247IDt9Ci0gICAgYnJlYWs7Ci0KICAgY2FzZSA2NDoKIAotICAgIHsgRlJBR19W
RVJUX09OTFkoIio9IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsgICAgICh5eXZhbC5p
bnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0p
Lm9wID0gRU9wTXVsQXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBc3Np
Z247IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2NToKIAotICAgIHsgRlJBR19WRVJUX09OTFko
Ii89IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsgICAgICh5eXZhbC5pbnRlcm0pLmxp
bmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9w
RGl2QXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BNdWxBc3NpZ247IDt9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2NjoKIAotICAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFkZEFzc2lnbjsgO30KKyAgICB7ICh5eXZh
bC5pbnRlcm0pLm9wID0gRU9wRGl2QXNzaWduOyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjc6
CiAKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3Ag
PSBFT3BTdWJBc3NpZ247IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFkZEFzc2ln
bjsgO30KICAgICBicmVhazsKIAogICBjYXNlIDY4OgogCi0gICAgewotICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKLSAgICA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BTdWJBc3Np
Z247IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2OToKIAogICAgIHsKLSAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1h
KCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5l
KTsKLSAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCku
bGluZSwgIiwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKKyAg
ICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNzA6CisKKyAgICB7CisgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb21tYSgo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7CisgICAgICAg
IGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgeworICAgICAgICAgICAg
Y29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIsIiwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDcw
OgorICBjYXNlIDcxOgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+Y29uc3RFcnJvckNo
ZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKQEAgLTMxMzEs
NyArMzE3Myw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3MToK
KyAgY2FzZSA3MjoKIAogICAgIHsKICAgICAgICAgVEZ1bmN0aW9uICZmdW5jdGlvbiA9ICooKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtKS5mdW5jdGlvbik7CkBAIC0zMTQ1LDEzICszMTg3LDEzIEBA
IHl5cmVkdWNlOgogICAgICAgICAgICAgY29uc3QgVFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlv
bi5nZXRQYXJhbShpKTsKICAgICAgICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFyaWFi
bGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOworICAgICAgICAgICAgICAgIFRWYXJpYWJsZSB2
YXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlwZSk7CiAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdh
dGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5n
ZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0p
LmxpbmUpOworICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCh2YXJpYWJsZS5nZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS5nZXROYW1lKCksIHZhcmlhYmxlLmdl
dFR5cGUoKSwgKHl5bHNwWygxKSAtICgyKV0pKSwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5
cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0p
LmxpbmUpOworICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCgwLCAiIiwgKnBhcmFtLnR5cGUsICh5eWxzcFsoMSkgLSAoMildKSksICh5eWxzcFsoMSkgLSAo
MildKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zMTYyLDcgKzMy
MDQsNyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzI6CisgIGNh
c2UgNzM6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmlu
dGVybUFnZ3JlZ2F0ZSkKQEAgLTMxNzEsMjIgKzMyMTMsMjIgQEAgeXlyZWR1Y2U6CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDczOgorICBjYXNlIDc0OgogCiAgICAgewogICAgICAgICBp
ZiAoKCh5eXZzcFsoMikgLSAoNCldLmludGVybS5wcmVjaXNpb24pID09IEVicEhpZ2gpICYmIChj
b250ZXh0LT5zaGFkZXJUeXBlID09IFNIX0ZSQUdNRU5UX1NIQURFUikgJiYgIWNvbnRleHQtPmZy
YWdtZW50UHJlY2lzaW9uSGlnaCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNw
WygxKSAtICg0KV0ubGV4KS5saW5lLCAicHJlY2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZnJh
Z21lbnQgc2hhZGVyIiwgImhpZ2hwIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbKDEpIC0gKDQpXSksICJwcmVjaXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBz
aGFkZXIiLCAiaGlnaHAiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoIWNvbnRleHQtPnN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNp
b24oICh5eXZzcFsoMykgLSAoNCldLmludGVybS50eXBlKSwgKHl5dnNwWygyKSAtICg0KV0uaW50
ZXJtLnByZWNpc2lvbikgKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygx
KSAtICg0KV0ubGV4KS5saW5lLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0IHBy
ZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDMpIC0gKDQpXS5pbnRl
cm0udHlwZSkudHlwZSkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAt
ICg0KV0pLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFs
aWZpZXIiLCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0udHlwZSkudHlw
ZSkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA3NDoKKyAgY2FzZSA3NToKIAogICAgIHsKICAgICAgICAgLy8KQEAgLTMyMDAsMTIgKzMy
NDIsMTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRGdW5jdGlvbiogcHJldkRlYyA9IHN0YXRpY19j
YXN0PFRGdW5jdGlvbio+KGNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmQoKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0TWFuZ2xlZE5hbWUoKSkpOwogICAgICAgICBpZiAocHJl
dkRlYykgewogICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdldFJldHVyblR5cGUoKSAhPSAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJv
dmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUiLCAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNT
dHJpbmcoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgy
KV0pLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBl
IiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UmV0dXJuVHlwZSgpLmdl
dEJhc2ljU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJldkRlYy0+
Z2V0UGFyYW1Db3VudCgpOyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0
UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkgIT0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAi
b3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZp
ZXJzIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlw
ZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUg
dGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
ZnVuY3Rpb24pLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkBAIC0zMjE3LDcgKzMyNTksNiBAQCB5eXJlZHVjZToKICAgICAgICAgLy8g
YmVpbmcgcmVkZWNsYXJlZC4gIFNvLCBwYXNzIGJhY2sgdXAgdGhpcyBkZWNsYXJhdGlvbiwgbm90
IHRoZSBvbmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4KICAgICAgICAgLy8KICAgICAgICAgKHl5dmFs
LmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwot
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5l
OwogCiAgICAgICAgIC8vIFdlJ3JlIGF0IHRoZSBpbm5lciBzY29wZSBsZXZlbCBvZiB0aGUgZnVu
Y3Rpb24ncyBhcmd1bWVudHMgYW5kIGJvZHkgc3RhdGVtZW50LgogICAgICAgICAvLyBBZGQgdGhl
IGZ1bmN0aW9uIHByb3RvdHlwZSB0byB0aGUgc3Vycm91bmRpbmcgc2NvcGUgaW5zdGVhZC4KQEAg
LTMyMjUsMjEgKzMyNjYsMjEgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDc1OgorICBjYXNlIDc2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0
aW9uKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDc2OgorICBjYXNlIDc3OgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLmZ1bmN0aW9uKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5mdW5jdGlvbik7CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDc3OgorICBjYXNlIDc4OgogCiAgICAgewogICAg
ICAgICAvLyBBZGQgdGhlIHBhcmFtZXRlcgpAQCAtMzI1MSw3ICszMjkyLDcgQEAgeXlyZWR1Y2U6
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDc4OgorICBjYXNlIDc5OgogCiAgICAgewog
ICAgICAgICAvLwpAQCAtMzI2Miw3ICszMzAzLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAv
LwogICAgICAgICAgICAgLy8gVGhpcyBwYXJhbWV0ZXIgPiBmaXJzdCBpcyB2b2lkCiAgICAgICAg
ICAgICAvLwotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4
KS5saW5lLCAiY2Fubm90IGJlIGFuIGFyZ3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIs
ICJ2b2lkIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMpXSks
ICJjYW5ub3QgYmUgYW4gYXJndW1lbnQgdHlwZSBleGNlcHQgZm9yICcodm9pZCknIiwgInZvaWQi
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGRlbGV0ZSAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pLnBhcmFtLnR5cGU7CiAgICAgICAgIH0gZWxzZSB7CkBA
IC0zMjczLDE1ICszMzE0LDE1IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA3OToKKyAgY2FzZSA4MDoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAo
MyldLmludGVybS50eXBlKS5xdWFsaWZpZXIgIT0gRXZxR2xvYmFsICYmICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS50eXBlKS5xdWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5KSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJubyBxdWFsaWZp
ZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJubyBxdWFsaWZpZXJzIGFsbG93ZWQgZm9y
IGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIH0KICAgICAgICAgLy8gbWFrZSBzdXJlIGEgc2FtcGxlciBpcyBub3QgaW52b2x2
ZWQgYXMgd2VsbC4uLgotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JD
aGVjaygoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNr
KCh5eWxzcFsoMikgLSAoMyldKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0
aW9uIGFzIGEgcHJvdG90eXBlIGFmdGVyIHBhcnNpbmcgaXQgKHdlIGRvIG5vdCBzdXBwb3J0IHJl
Y3Vyc2lvbikKQEAgLTMyOTQsMTEyICszMzM1LDExMCBAQCB5eXJlZHVjZToKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgODA6CisgIGNhc2UgODE6CiAKICAgICB7CiAgICAgICAgIGlmICgo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9PSBFYnRWb2lkKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJpbGxlZ2Fs
IHVzZSBvZiB0eXBlICd2b2lkJyIsICh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLT5jX3N0
cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgImls
bGVnYWwgdXNlIG9mIHR5cGUgJ3ZvaWQnIiwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmct
PmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAo
Y29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgKih5eXZzcFso
MikgLSAoMildLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmlu
ZywgbmV3IFRUeXBlKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKSl9OwotICAgICAgICAo
eXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lOwogICAgICAg
ICAoeXl2YWwuaW50ZXJtKS5wYXJhbSA9IHBhcmFtOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA4MToKKyAgY2FzZSA4MjoKIAogICAgIHsKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBj
YW4gbWFrZSBhbiBhcnJheSBvdXQgb2YgdGhpcyB0eXBlCi0gICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygx
KSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVy
cm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlw
ZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250
ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lLCAqKHl5
dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2
ZWRFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKih5eXZzcFsoMikgLSAoNSldLmxleCku
c3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBpbnQg
c2l6ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygz
KSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5
eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksIHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2
c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAKICAgICAg
ICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUp
KTsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgKHl5dnNwWygyKSAtICg1KV0ubGV4KS5z
dHJpbmcsIHR5cGUgfTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMikg
LSAoNSldLmxleCkubGluZTsKICAgICAgICAgKHl5dmFsLmludGVybSkucGFyYW0gPSBwYXJhbTsK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODI6CisgIGNhc2UgODM6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKTsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0p
LmxpbmUsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFso
MikgLSAoMyldLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSks
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFsoMikgLSAo
MyldLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
ODM6CisgIGNhc2UgODQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBs
ZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmludGVybSkubGluZSwgKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLnF1YWxpZmllciksICooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFt
LnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2so
KHl5bHNwWygyKSAtICgyKV0pLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwg
Kih5eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAo
MildLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAg
ICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksIEV2cVRl
bXBvcmFyeSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRl
cm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4NDoKKyAgY2FzZSA4NToKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwotICAgICAgICBpZiAo
Y29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybSkubGluZSwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygyKSAtICgz
KV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAg
ICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygyKSAtICgzKV0uaW50
ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4NToKKyAg
Y2FzZSA4NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9y
Q2hlY2soKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0udHlwZSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjaygoeXlsc3Bb
KDIpIC0gKDIpXSksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAqKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXl2c3BbKDIp
IC0gKDIpXS5pbnRlcm0pLmxpbmUsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAo
Y29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgRXZxVGVtcG9yYXJ5
LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFy
YW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDg2OgorICBjYXNlIDg3OgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLnF1YWxpZmllcikgPSBFdnFJbjsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
ODc6CisgIGNhc2UgODg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVy
KSA9IEV2cUluOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4ODoKKyAgY2FzZSA4OToK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxT3V0OwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4OToKKyAgY2FzZSA5MDoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW5PdXQ7CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDkwOgorICBjYXNlIDkxOgogCiAgICAgewogICAgICAgICBUUGFyYW1ldGVy
IHBhcmFtID0geyAwLCBuZXcgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpKSB9
OwpAQCAtMzQwNywxMDQgKzM0NDYsMTA0IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA5MToKKyAgY2FzZSA5MjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA5MjoKKyAgY2FzZSA5MzoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAo
MyldLmludGVybSkudHlwZS50eXBlID09IEVidEludmFyaWFudCAmJiAhKHl5dnNwWygzKSAtICgz
KV0ubGV4KS5zeW1ib2wpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eXZzcFsoMykgLSAoMyldLmxleCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJl
ZCBhcyBpbnZhcmlhbnQiLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDMpIC0gKDMpXSksICJ1bmRlY2xh
cmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgKHl5dnNwWygzKSAtICgzKV0u
bGV4KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICB9CiAKLSAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsIFRU
eXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkudHlwZSksICh5eXZzcFsoMykgLSAoMyldLmxl
eCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSku
aW50ZXJtTm9kZSwgc3ltYm9sLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAg
ICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KDAsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtKS50eXBlKSwgKHl5bHNwWygzKSAtICgzKV0pKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdh
dGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBzeW1ib2wsICh5eWxzcFso
MykgLSAoMyldKSk7CiAgICAgICAgIAotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlm
aWVyRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUsICh5eXZhbC5pbnRlcm0p
LnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygo
eXlsc3BbKDMpIC0gKDMpXSksICh5eXZhbC5pbnRlcm0pLnR5cGUpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJv
ckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoMyldLmxl
eCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCBmYWxzZSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKih5eXZzcFso
MykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCBmYWxzZSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJs
ZSA9IDA7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXl2c3BbKDMp
IC0gKDMpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dmFs
LmludGVybSkudHlwZSwgdmFyaWFibGUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVy
cm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJp
bmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgaWYgKHN5bWJvbCAmJiB2YXJpYWJsZSkKICAgICAgICAgICAg
IHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgIDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSA5MzoKKyAgY2FzZSA5NDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5l
LCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+
c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5eXZzcFsoMSkg
LSAoNSldLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAK
LSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygzKSAt
ICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFso
MSkgLSAoNSldLmludGVybSkudHlwZSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25J
bml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKih5eXZzcFsoMykgLSAoNSld
LmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsIHRydWUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0g
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlU
eXBlRXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAo
NSldLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5
eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAt
ICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5
UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSld
LmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLnNldEFy
cmF5KHRydWUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZTsKLSAgICAgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5dnNwWyg0KSAtICg1KV0ubGV4KS5saW5l
LCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVy
bSkudHlwZSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JD
aGVjaygoeXlsc3BbKDQpIC0gKDUpXSksICooeXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDk0OgorICBjYXNlIDk1OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+c3Ry
dWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDYpXS5sZXgpLmxpbmUsICh5eXZz
cFsoMSkgLSAoNildLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNildKSwgKHl5dnNwWygxKSAtICg2KV0u
aW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAg
ICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDYpXS5s
ZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg2
KV0uaW50ZXJtKS50eXBlLCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25z
dEVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg2KV0pLCAqKHl5dnNwWygzKSAtICg2KV0ubGV4KS5z
dHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSwgdHJ1ZSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3Bb
KDEpIC0gKDYpXS5pbnRlcm0pOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJv
ckNoZWNrKCh5eXZzcFsoNCkgLSAoNildLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg2KV0uaW50
ZXJtKS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWyg0
KSAtICg2KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpKQorICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDYpXSks
ICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZp
ZXJFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJt
KS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNp
emVFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNildLmxleCkubGluZSwgKHl5dnNwWyg1KSAtICg2
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQorICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAoeXl2c3BbKDUpIC0g
KDYpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50
eXBlLnNldEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJs
ZSA9IDA7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eXZzcFso
NCkgLSAoNildLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCAoeXl2
c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgICAgIGlmIChj
b250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAqKHl5dnNwWygzKSAt
ICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSwgdmFyaWFi
bGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIFRU
eXBlIHR5cGUgPSBUVHlwZSgoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpOwogICAgICAg
ICAgICAgdHlwZS5zZXRBcnJheVNpemUoc2l6ZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJt
KS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgo
eXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICooeXl2
c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5dnNwWygzKSAtICg2KV0ubGV4KS5s
aW5lKSwgKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVn
YXRlKCh5eXZzcFsoMSkgLSAoNildLmludGVybSkuaW50ZXJtTm9kZSwgY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpIDogMCwg
Kih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCB0eXBlLCAoeXlsc3BbKDMpIC0gKDYpXSkp
LCAoeXlsc3BbKDMpIC0gKDYpXSkpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDk1OgorICBjYXNlIDk2OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+c3Ry
dWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZz
cFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0u
aW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAg
ICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAoNSldLmludGVybSk7CiAKICAgICAgICAg
VEludGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUlu
aXRpYWxpemVyKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoNSld
LmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsICh5eXZzcFsoNSkg
LSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkgeworICAgICAgICBp
ZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigoeXlsc3BbKDMpIC0gKDUpXSksICooeXl2
c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBl
LCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkp
IHsKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBidWlsZCB0aGUgaW50ZXJtZWRpYXRl
IHJlcHJlc2VudGF0aW9uCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgaWYgKGludGVybU5v
ZGUpCi0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoNSldLmludGVybSkuaW50ZXJt
Tm9kZSwgaW50ZXJtTm9kZSwgKHl5dnNwWyg0KSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAgICAg
KHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdy
b3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBpbnRlcm1O
b2RlLCAoeXlsc3BbKDQpIC0gKDUpXSkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9ICh5eXZzcFsoMSkgLSAoNSldLmlu
dGVybSkuaW50ZXJtQWdncmVnYXRlOwogICAgICAgICB9IGVsc2UgewpAQCAtMzUxNCw3NyArMzU1
Myw3NyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTY6CisgIGNh
c2UgOTc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0udHlwZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKSksICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKSwgKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1B
Z2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0udHlwZSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NzoKKyAgY2FzZSA5ODoKIAogICAgIHsKLSAgICAg
ICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAo
MildLmludGVybS50eXBlKSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5t
YWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAo
MildLmludGVybS50eXBlKSksICh5eWxzcFsoMikgLSAoMildKSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVn
YXRlKHN5bWJvbCwgKHl5bHNwWygyKSAtICgyKV0pKTsKICAgICAgICAgCi0gICAgICAgIGlmIChj
b250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCku
bGluZSwgKHl5dmFsLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgKHl5dmFsLmludGVybSkudHlw
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRl
eHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAq
KHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZhbHNl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygy
KSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0p
LnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoMild
LmludGVybS50eXBlKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCku
bGluZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBl
LCB2YXJpYWJsZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXls
c3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZywgKHl5dmFsLmlu
dGVybSkudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJ
ZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDk4OgorICBjYXNlIDk5OgogCiAgICAgewotICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDIpIC0gKDQpXS5sZXgpLmxpbmUsICJ1bnNpemVkIGFycmF5IGRlY2xhcmF0aW9ucyBub3Qgc3Vw
cG9ydGVkIiwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDQpXSksICJ1bnNpemVkIGFycmF5IGRlY2xh
cmF0aW9ucyBub3Qgc3VwcG9ydGVkIiwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmctPmNf
c3RyKCkpOwogICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgVEludGVybVN5
bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNw
WygyKSAtICg0KV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS50
eXBlKSksICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRl
KHN5bWJvbCwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAgVEludGVybVN5
bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNw
WygyKSAtICg0KV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS50
eXBlKSksICh5eWxzcFsoMikgLSAoNCldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVy
bUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwg
KHl5bHNwWygyKSAtICg0KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZz
cFsoMSkgLSAoNCldLmludGVybS50eXBlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
OTk6CisgIGNhc2UgMTAwOgogCiAgICAgewogICAgICAgICBUVHlwZSB0eXBlID0gVFR5cGUoKHl5
dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKTsKICAgICAgICAgaW50IHNpemU7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCku
bGluZSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQor
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUp
XSksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgdHlwZS5zZXRBcnJheVNpemUo
c2l6ZSk7Ci0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCB0eXBlLCAo
eXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2ws
ICh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5
bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAo
NSldLmxleCkuc3RyaW5nLCB0eXBlLCAoeXlsc3BbKDIpIC0gKDUpXSkpOworICAgICAgICAoeXl2
YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFn
Z3JlZ2F0ZShzeW1ib2wsICh5eWxzcFsoMikgLSAoNSldKSk7CiAgICAgICAgIAotICAgICAgICBp
ZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKHl5
dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXl2
c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAqKHl5dnNwWygy
KSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSwgdHJ1
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmlu
dGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKTsKIAotICAgICAgICBp
ZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxp
bmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkgfHwgY29udGV4dC0+YXJyYXlRdWFs
aWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAt
ICg1KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9y
Q2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkp
IHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSks
ICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0gICAgICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXpl
KSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFso
MykgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNp
emUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAgICAg
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLnNldEFycmF5KHRydWUsIHNpemUpOwogICAg
ICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKih5eXZzcFso
MikgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSksIHZh
cmlhYmxlKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5bHNw
WygzKSAtICg1KV0pLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkg
LSAoNSldLmludGVybS50eXBlKSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAgICAgICAg
ICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CkBAIC0zNTky
LDIxICszNjMxLDIxIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
MDA6CisgIGNhc2UgMTAxOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVh
bGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkg
LSAoNCldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZp
ZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNCldKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAoeXl2
YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpOwogCiAgICAg
ICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1
dGVJbml0aWFsaXplcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0g
KDQpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3Bb
KDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpIHsKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWygyKSAtICg0KV0pLCAq
KHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50
eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5v
ZGUpKSB7CiAgICAgICAgIC8vCiAgICAgICAgIC8vIEJ1aWxkIGludGVybWVkaWF0ZSByZXByZXNl
bnRhdGlvbgogICAgICAgICAvLwogICAgICAgICAgICAgaWYoaW50ZXJtTm9kZSkKLSAgICAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0gKDQpXS5sZXgpLmxp
bmUpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGludGVybU5vZGUsICh5eWxzcFsoMykg
LSAoNCldKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bSkuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAgICAgfSBlbHNlIHsKQEAgLTM2MTYsNTggKzM2
NTUsNTggQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwMToKKyAg
Y2FzZSAxMDI6CiAKICAgICB7Ci0gICAgICAgIFZFUlRFWF9PTkxZKCJpbnZhcmlhbnQgZGVjbGFy
YXRpb24iLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4
dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAg
ICAgIFZFUlRFWF9PTkxZKCJpbnZhcmlhbnQgZGVjbGFyYXRpb24iLCAoeXlsc3BbKDEpIC0gKDIp
XSkpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0g
KDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2
YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0pLnR5cGUuc2V0QmFzaWMoRWJ0SW52YXJpYW50LCBFdnFJbnZhcmlhbnRWYXJ5aW5n
T3V0LCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJt
KS50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgKHl5
bHNwWygyKSAtICgyKV0pKTsKICAgICAgICAgaWYgKCEoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN5
bWJvbCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAt
ICgyKV0ubGV4KS5saW5lLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFy
aWFudCIsICh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgInVuZGVjbGFyZWQgaWRlbnRp
ZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmlu
Zy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAg
ICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBUSW50ZXJtU3ltYm9s
ICpzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIp
IC0gKDIpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dmFsLmludGVybSkudHlwZSksICh5eXZzcFso
MikgLSAoMildLmxleCkubGluZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1B
Z2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5
eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7CisgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpz
eW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dmFsLmludGVybSkudHlwZSksICh5eWxzcFsoMikg
LSAoMildKSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eWxzcFsoMikgLSAo
MildKSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAyOgorICBj
YXNlIDEwMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS50eXBlKTsKIAogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLnR5cGUpLmFycmF5KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xh
c3MgYXJyYXkiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSld
KSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKS5zZXRBcnJheShmYWxzZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTAzOgorICBjYXNlIDEwNDoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMikg
LSAoMildLmludGVybS50eXBlKS5hcnJheSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZp
cnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIp
IC0gKDIpXSksICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0udHlwZSkuc2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCh5
eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlICYm
CiAgICAgICAgICAgICAoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0
Qm9vbCB8fCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9PSBFYnRJbnQpKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlw
ZSkubGluZSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZygoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBn
ZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmll
cikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAg
IGlmICgoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9PSBFdnFWYXJ5
aW5nSW4gfHwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9PSBFdnFW
YXJ5aW5nT3V0KSAmJgogICAgICAgICAgICAgKCh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBl
KS50eXBlID09IEVidEJvb2wgfHwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUg
PT0gRWJ0SW50KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgy
KV0uaW50ZXJtLnR5cGUpLmxpbmUsICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZp
ZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiY2Fubm90IGJlIGJv
b2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50
eXBlKS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50
ZXJtLnR5cGUpOwpAQCAtMzY3NSw3MSArMzcxNCw3MSBAQCB5eXJlZHVjZToKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTA0OgorICBjYXNlIDEwNToKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFDb25zdCwgKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRWb2lkLCBFdnFDb25zdCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgMTA1OgorICBjYXNlIDEwNjoKIAogICAgIHsKLSAgICAgICAgVkVSVEVYX09O
TFkoImF0dHJpYnV0ZSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwg
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0cmlidXRlIikpCisgICAg
ICAgIFZFUlRFWF9PTkxZKCJhdHRyaWJ1dGUiLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAg
ICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRyaWJ1
dGUsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEw
NjoKKyAgY2FzZSAxMDc6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJv
ckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFs
RXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSwgInZhcnlpbmciKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gU0hfVkVSVEVYX1NIQURFUikKLSAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWlu
Z091dCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ091dCwgKHl5bHNwWygxKSAt
ICgxKV0pKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nSW4sICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGlu
ZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2
cVZhcnlpbmdJbiwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTA3OgorICBjYXNlIDEwODoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmds
b2JhbEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQorICAgICAgICBp
ZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDIpXSksIGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChjb250ZXh0LT5zaGFkZXJU
eXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICh5eXZzcFsoMSkgLSAo
MildLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICh5eWxzcFsoMSkgLSAoMildKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
Vm9pZCwgRXZxSW52YXJpYW50VmFyeWluZ0luLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUp
OworICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJ
bnZhcmlhbnRWYXJ5aW5nSW4sICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDEwODoKKyAgY2FzZSAxMDk6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQorICAgICAgICBpZiAo
Y29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgInVuaWZvcm0iKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRW
b2lkLCBFdnFVbmlmb3JtLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVVuaWZvcm0sICh5eWxzcFso
MSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwOToKKyAgY2FzZSAx
MTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSk7CiAKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0udHlwZSkucHJl
Y2lzaW9uID09IEVicFVuZGVmaW5lZCkgewogICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5wcmVjaXNpb24gPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5nZXREZWZhdWx0UHJlY2lzaW9uKCh5
eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBlKTsKLSAgICAgICAgICAgIGlmIChjb250
ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5s
aW5lLCAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiwgKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLnR5cGUpLnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9uRXJy
b3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksICh5eXZhbC5pbnRlcm0udHlwZSkucHJlY2lzaW9u
LCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSkpIHsKICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTEwOgorICBjYXNlIDExMToKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKTsKQEAg
LTM3NDcsNjMgKzM3ODYsNTUgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDExMToKKyAgY2FzZSAxMTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJl
Y2lzaW9uKSA9IEVicEhpZ2g7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDExMjoKKyAg
Y2FzZSAxMTM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVi
cE1lZGl1bTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTEzOgorICBjYXNlIDExNDoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwTG93OwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTQ6CisgIGNhc2UgMTE1OgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUp
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTU6CisgIGNhc2UgMTE2OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LnR5cGUpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eXZz
cFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg0
KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0
KV0ubGV4KS5saW5lLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
c2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXls
c3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICB9CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDExNjoKLQotICAgIHsKLSAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidFZvaWQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgO30KLSAg
ICBicmVhazsKLQogICBjYXNlIDExNzoKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0
LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAg
ICAgO30KICAgICBicmVhazsKIApAQCAtMzgxMSw3ICszODQyLDcgQEAgeXlyZWR1Y2U6CiAKICAg
ICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCku
bGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1
YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzgxOSw3
ICszODUwLDcgQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBx
dWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7
fQogICAgIGJyZWFrOwogCkBAIC0zODI3LDggKzM4NTgsNyBAQCB5eXJlZHVjZToKIAogICAgIHsK
ICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEp
IC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4MzYsOCArMzg2Niw4IEBAIHl5
cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdn
cmVnYXRlKDMpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0
LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEFnZ3JlZ2F0ZSgyKTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0zODQ1LDggKzM4NzUs
OCBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4
dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5
OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzg1NCw4
ICszODg0LDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBx
dWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgO30KICAgICBicmVhazsKIApAQCAt
Mzg2Myw4ICszODkzLDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRC
b29sLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICA7fQogICAgIGJyZWFrOwog
CkBAIC0zODcyLDggKzM5MDIsOCBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidEJvb2wsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOworICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOwogICAgIDt9CiAgICAgYnJl
YWs7CiAKQEAgLTM4ODEsOCArMzkxMSw4IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICA7fQogICAg
IGJyZWFrOwogCkBAIC0zODkwLDggKzM5MjAsOCBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAg
ICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
ID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCkBAIC0zODk5LDk1ICszOTI5LDk2IEBAIHl5cmVkdWNlOgogCiAgICAgewog
ICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUp
OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkgLSAo
MSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjk6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVS
VF9PTkxZKCJtYXQyIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1
YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyLCB0cnVlKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSld
KSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzA6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJtYXQzIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzLCB0cnVlKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMiwgdHJ1ZSk7CiAg
ICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDEzMToKIAogICAgIHsKLSAgICAgICAgRlJBR19W
RVJUX09OTFkoIm1hdDQiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQsIHRydWUpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0g
KDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzLCB0cnVl
KTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMyOgogCiAgICAgewotICAgICAgICBG
UkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsK
ICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwg
cXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRBZ2dyZWdhdGUoNCwgdHJ1ZSk7CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDEzMzoK
IAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXJDdWJlIiwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5Owot
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXJDdWJlLCBxdWFs
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAg
ICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTM0OgogCiAgICAgeworICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0U2FtcGxlckN1YmUsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgO30KKyAgICBi
cmVhazsKKworICBjYXNlIDEzNToKKworICAgIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ1bnN1cHBvcnRl
ZCB0eXBlIiwgInNhbXBsZXJFeHRlcm5hbE9FUyIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5bHNwWygxKSAtICgxKV0pLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0ZXJu
YWxPRVMiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAg
ICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckV4dGVybmFsT0VTIiwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXJFeHRlcm5hbE9FUywgcXVh
bCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5eWxzcFsoMSkgLSAo
MSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzNToKKyAgY2FzZSAxMzY6CiAK
ICAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX0FSQl90
ZXh0dXJlX3JlY3RhbmdsZSIpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDEpIC0gKDEpXS5sZXgpLmxpbmUsICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXIyRFJlY3Qi
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgInVuc3Vw
cG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVjdCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyMkRSZWN0
IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBs
ZXIyRFJlY3QsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgKHl5bHNw
WygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM2OgorICBjYXNl
IDEzNzoKIAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoInN0cnVjdCIsICh5eXZzcFso
MSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKICAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkg
PyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDEzNzoKKyAgY2FzZSAxMzg6CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC0zOTk2LDg1ICs0MDI3
LDg2IEBAIHl5cmVkdWNlOgogICAgICAgICAvLwogICAgICAgICBUVHlwZSYgc3RydWN0dXJlID0g
c3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zeW1ib2wpLT5n
ZXRUeXBlKCk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIHF1YWwsICh5eXZzcFsoMSkgLSAo
MSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
U3RydWN0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnVzZXJEZWYgPSAmc3RydWN0dXJlOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxMzg6CisgIGNhc2UgMTM5OgogCi0gICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNs
YXJhdGlvbigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDMpXS5s
ZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KKyAgICB7IGlmIChjb250ZXh0LT5l
bnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFsoMikgLSAoMyldKSwgKih5eXZzcFsoMikgLSAo
MyldLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTM5OgorICBjYXNlIDE0MDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJl
c2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIp
IC0gKDYpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9y
Q2hlY2soKHl5bHNwWygyKSAtICg2KV0pLCAqKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRUeXBlKiBzdHJ1
Y3R1cmUgPSBuZXcgVFR5cGUoKHl5dnNwWyg1KSAtICg2KV0uaW50ZXJtLnR5cGVMaXN0KSwgKih5
eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9
IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZSgoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmluZywg
KHl5dnNwWyg1KSAtICg2KV0uaW50ZXJtLmZpZWxkTGlzdCkpKTsKICAgICAgICAgVFZhcmlhYmxl
KiB1c2VyVHlwZURlZiA9IG5ldyBUVmFyaWFibGUoKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJp
bmcsICpzdHJ1Y3R1cmUsIHRydWUpOwogICAgICAgICBpZiAoISBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5pbnNlcnQoKnVzZXJUeXBlRGVmKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygyKSAtICg2KV0ubGV4KS5saW5lLCAicmVkZWZpbml0aW9uIiwgKHl5dnNwWygyKSAtICg2
KV0ubGV4KS5zdHJpbmctPmNfc3RyKCksICJzdHJ1Y3QiKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFsoMikgLSAoNildKSwgInJlZGVmaW5pdGlvbiIsICh5eXZzcFsoMikgLSAo
NildLmxleCkuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg2KV0ubGV4KS5saW5l
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRl
bXBvcmFyeSwgKHl5bHNwWygxKSAtICg2KV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5leGl0U3RydWN0RGVjbGFy
YXRpb24oKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQwOgorICBjYXNlIDE0MToK
IAotICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5dnNwWygyKSAt
ICgyKV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0
LT5yZWNvdmVyKCk7IDt9CisgICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlv
bigoeXlsc3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZykpIGNv
bnRleHQtPnJlY292ZXIoKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0MToKKyAgY2FzZSAx
NDI6CiAKICAgICB7Ci0gICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUoKHl5dnNw
Wyg0KSAtICg1KV0uaW50ZXJtLnR5cGVMaXN0KSwgVFN0cmluZygiIikpOwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAoeXl2c3Bb
KDEpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRU
eXBlKG5ldyBUU3RydWN0dXJlKE5ld1Bvb2xUU3RyaW5nKCIiKSwgKHl5dnNwWyg0KSAtICg1KV0u
aW50ZXJtLmZpZWxkTGlzdCkpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5bHNwWygxKSAtICg1KV0pKTsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0
LT5leGl0U3RydWN0RGVjbGFyYXRpb24oKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTQyOgorICBjYXNlIDE0MzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlz
dCkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZUxpc3QpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmZpZWxkTGlzdCkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZmllbGRMaXN0KTsK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQzOgorICBjYXNlIDE0NDoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0udHlwZUxpc3QpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICh5eXZz
cFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCktPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8ICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5z
aXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIGlmICgoKih5eXZhbC5pbnRlcm0udHlwZUxp
c3QpKVtqXS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSAoKih5eXZzcFsoMikgLSAoMildLmludGVy
bS50eXBlTGlzdCkpW2ldLnR5cGUtPmdldEZpZWxkTmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlb
aV0ubGluZSwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3RydWN0Iiwg
KCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZUxpc3QpKVtpXS50eXBlLT5nZXRGaWVsZE5h
bWUoKS5jX3N0cigpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpID0gKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLmZpZWxkTGlzdCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBURmllbGQqIGZpZWxkID0gKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
ZmllbGRMaXN0KSlbaV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICh5eXZh
bC5pbnRlcm0uZmllbGRMaXN0KS0+c2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICBpZiAo
KCooeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkpW2pdLT5uYW1lKCkgPT0gZmllbGQtPm5hbWUoKSkg
eworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSks
ICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxkLT5u
YW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGVMaXN0KS0+cHVzaF9iYWNrKCgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVM
aXN0KSlbaV0pOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpLT5wdXNoX2Jh
Y2soZmllbGQpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0NDoK
KyAgY2FzZSAxNDU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpID0g
KHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnR5cGVMaXN0KTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5maWVsZExpc3QpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmZpZWxkTGlzdCk7CiAKLSAg
ICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKS5saW5lLCAoKih5eXZzcFsoMikgLSAoMyldLmludGVybS50eXBlTGlzdCkpWzBdLnR5
cGUtPmdldEZpZWxkTmFtZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkpKSB7Cisg
ICAgICAgIGlmIChjb250ZXh0LT52b2lkRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDMpXSksICgq
KHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmZpZWxkTGlzdCkpWzBdLT5uYW1lKCksICh5eXZzcFso
MSkgLSAoMyldLmludGVybS50eXBlKSkpIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgfQotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICh5eXZh
bC5pbnRlcm0udHlwZUxpc3QpLT5zaXplKCk7ICsraSkgeworICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8ICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+c2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBDYXJlZnVsIG5vdCB0byByZXBsYWNlIGFs
cmVhZHkga25vd24gYXNwZWN0cyBvZiB0eXBlLCBsaWtlIGFycmF5LW5lc3MKICAgICAgICAgICAg
IC8vCi0gICAgICAgICAgICBUVHlwZSogdHlwZSA9ICgqKHl5dmFsLmludGVybS50eXBlTGlzdCkp
W2ldLnR5cGU7CisgICAgICAgICAgICBUVHlwZSogdHlwZSA9ICgqKHl5dmFsLmludGVybS5maWVs
ZExpc3QpKVtpXS0+dHlwZSgpOwogICAgICAgICAgICAgdHlwZS0+c2V0QmFzaWNUeXBlKCh5eXZz
cFsoMSkgLSAoMyldLmludGVybS50eXBlKS50eXBlKTsKICAgICAgICAgICAgIHR5cGUtPnNldE5v
bWluYWxTaXplKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5zaXplKTsKICAgICAgICAg
ICAgIHR5cGUtPnNldE1hdHJpeCgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubWF0cml4
KTsKQEAgLTQwODIsODUgKzQxMTQsNzUgQEAgeXlyZWR1Y2U6CiAKICAgICAgICAgICAgIC8vIGRv
bid0IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAgICAgICAgICAgIGlmICh0eXBlLT5pc0FycmF5
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubGluZSwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLnR5cGUpKSkKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JD
aGVjaygoeXlsc3BbKDEpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuYXJyYXkpCiAg
ICAgICAgICAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKS5hcnJheVNpemUpOwotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS50eXBlKS51c2VyRGVmKSB7CisgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLnR5cGUpLnVzZXJEZWYpCiAgICAgICAgICAgICAgICAgdHlwZS0+c2V0U3RydWN0KCh5
eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS51c2VyRGVmLT5nZXRTdHJ1Y3QoKSk7Ci0gICAg
ICAgICAgICAgICAgdHlwZS0+c2V0VHlwZU5hbWUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5
cGUpLnVzZXJEZWYtPmdldFR5cGVOYW1lKCkpOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLnR5cGUpLmxpbmUsICp0eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN0
cnVjdE5lc3RpbmdFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMyldKSwgKigqKHl5dmFsLmludGVy
bS5maWVsZExpc3QpKVtpXSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0
NToKKyAgY2FzZSAxNDY6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3Qp
ID0gTmV3UG9vbFRUeXBlTGlzdCgpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+
cHVzaF9iYWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlTGluZSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSBOZXdQb29sVEZpZWxkTGlzdCgpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0uZmllbGQpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ2OgorICBjYXNlIDE0
NzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCktPnB1c2hfYmFjaygo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0udHlwZUxpbmUpKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5maWVsZExpc3QpLT5wdXNoX2JhY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmZpZWxkKSk7
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0NzoKKyAgY2FzZSAxNDg6CiAKICAgICB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lLCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBp
ZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwgKih5eXZz
cFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKIAotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlID0gbmV3IFRUeXBlKEVi
dFZvaWQsIEVicFVuZGVmaW5lZCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLmxp
bmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZUxpbmUpLnR5cGUtPnNldEZpZWxkTmFtZSgqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJp
bmcpOworICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmlu
ZWQpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkKSA9IG5ldyBURmllbGQodHlwZSwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNDg6CisgIGNhc2UgMTQ5OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2
ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoNCldLmxleCkubGluZSwgKih5eXZzcFsoMSkgLSAo
NCldLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVj
aygoeXlsc3BbKDEpIC0gKDQpXSksICooeXl2c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZykpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS50
eXBlTGluZSkudHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS5saW5lID0gKHl5dnNwWygxKSAtICg0KV0ubGV4KS5s
aW5lOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlLT5zZXRGaWVsZE5hbWUo
Kih5eXZzcFsoMSkgLSAoNCldLmxleCkuc3RyaW5nKTsKLQotICAgICAgICBpbnQgc2l6ZTsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0u
bGV4KS5saW5lLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6
ZSkpCisgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRUeXBlKEVidFZvaWQsIEVicFVuZGVmaW5l
ZCk7CisgICAgICAgIGludCBzaXplID0gMDsKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6
ZUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg0KV0pLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLnR5cGUtPnNldEFycmF5U2l6ZShzaXpl
KTsKLSAgICA7fQotICAgIGJyZWFrOwotCi0gIGNhc2UgMTQ5OgorICAgICAgICB0eXBlLT5zZXRB
cnJheVNpemUoc2l6ZSk7CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgICAgICAo
eXl2YWwuaW50ZXJtLmZpZWxkKSA9IG5ldyBURmllbGQodHlwZSwgKHl5dnNwWygxKSAtICg0KV0u
bGV4KS5zdHJpbmcpOworICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTA6CiAKLSAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50
ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KICAgICBicmVhazsKIAog
ICBjYXNlIDE1MToKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30K
ICAgICBicmVhazsKIAogICBjYXNlIDE1MjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
QWdncmVnYXRlKTsgO30KICAgICBicmVhazsKIAogICBjYXNlIDE1MzoKQEAgLTQxOTAsMTEyICs0
MjEyLDExNyBAQCB5eXJlZHVjZToKIAogICBjYXNlIDE1ODoKIAotICAgIHsgKHl5dmFsLmludGVy
bS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxNTk6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgO30K
KyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IDA7IDt9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxNjA6CiAKLSAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyA7fQor
ICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyA7fQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTYxOgogCisgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgO30KKyAgICBicmVh
azsKKworICBjYXNlIDE2MjoKKwogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAoNSld
LmludGVybS5pbnRlcm1BZ2dyZWdhdGUpICE9IDApIHsKICAgICAgICAgICAgICh5eXZzcFsoMykg
LSAoNSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAg
ICAgICAgICAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0RW5k
TGluZSgoeXl2c3BbKDUpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dnNwWygz
KSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldExpbmUoKHl5bG9jKSk7CiAgICAg
ICAgIH0KICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gKHl5dnNwWygz
KSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDE2MjoKKyAgY2FzZSAxNjM6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxNjM6CisgIGNhc2UgMTY0OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMTY0OgorICBjYXNlIDE2NToKIAogICAgIHsgY29udGV4dC0+c3ltYm9s
VGFibGUucHVzaCgpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY1OgorICBjYXNlIDE2NjoK
IAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxNjY6CisgIGNhc2UgMTY3OgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xU
YWJsZS5wdXNoKCk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjc6CisgIGNhc2UgMTY4Ogog
CiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2RlKTsgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE2ODoKKyAgY2FzZSAxNjk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjk6
CisgIGNhc2UgMTcwOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygyKSAtICgzKV0uaW50
ZXJtLmludGVybUFnZ3JlZ2F0ZSkpIHsKICAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMyldLmlu
dGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAo
eXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0RW5kTGluZSgoeXl2
c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dnNwWygyKSAtICgzKV0u
aW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldExpbmUoKHl5bG9jKSk7CiAgICAgICAgIH0KICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikgLSAoMyldLmludGVy
bS5pbnRlcm1BZ2dyZWdhdGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzA6Cisg
IGNhc2UgMTcxOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFn
Z3JlZ2F0ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxvYykpOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxNzE6CisgIGNhc2UgMTcyOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0
ZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSwgKHl5dnNwWygyKSAt
ICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAwKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1BZ2dyZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSksICh5eXZzcFsoMikgLSAoMildLmlu
dGVybS5pbnRlcm1Ob2RlKSwgKHl5bG9jKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDE3MjoKKyAgY2FzZSAxNzM6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAw
OyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTczOgorICBjYXNlIDE3NDoKIAogICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRpY19jYXN0PFRJbnRlcm1Ob2RlKj4oKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOyA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTc0OgorICBjYXNlIDE3NToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJv
b2xFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygzKSAtICg1
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVy
cm9yQ2hlY2soKHl5bHNwWygxKSAtICg1KV0pLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2Vs
ZWN0aW9uKCh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDUpIC0gKDUpXS5pbnRlcm0ubm9kZVBhaXIpLCAoeXl2c3BbKDEpIC0gKDUpXS5sZXgpLmxpbmUp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLm5vZGVQYWlyKSwgKHl5bHNwWygxKSAtICg1KV0p
KTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc1OgorICBjYXNlIDE3NjoKIAogICAg
IHsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CkBAIC00MzAzLDcgKzQzMzAsNyBAQCB5eXJlZHVjZToK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc2OgorICBjYXNlIDE3NzoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtTm9kZSk7CkBAIC00MzExLDcgKzQzMzgsNyBAQCB5eXJlZHVjZToKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc3OgorICBjYXNlIDE3ODoKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7CkBAIC00MzIwLDE2ICs0MzQ3LDE2IEBAIHl5cmVkdWNl
OgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzg6CisgIGNhc2UgMTc5OgogCiAgICAg
ewogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKGNvbnRleHQt
PnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3Ry
dWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxp
bmUsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5ib29sRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAg
aWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5s
aW5lLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS50eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGlu
dGVybU5vZGUpKQorICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigoeXls
c3BbKDIpIC0gKDQpXSksICooeXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0cmluZywgKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbKDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CkBAIC00MzM4LDc5
ICs0MzY1LDc5IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzk6
CisgIGNhc2UgMTgwOgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7ICsrY29u
dGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4MDoKKyAg
Y2FzZSAxODE6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwot
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZExvb3AoRUxvb3BXaGlsZSwgMCwgKHl5dnNwWyg0KSAtICg2KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksIDAsICh5eXZzcFsoNikgLSAoNildLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5dnNw
WygxKSAtICg2KV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hpbGUsIDAsICh5eXZzcFso
NCkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDYpIC0gKDYpXS5p
bnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoMSkgLSAoNildKSk7CiAgICAgICAgIC0tY29udGV4
dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTgxOgor
ICBjYXNlIDE4MjoKIAogICAgIHsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTgyOgorICBjYXNlIDE4MzoKIAogICAgIHsKLSAgICAgICAgaWYg
KGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eXZzcFsoOCkgLSAoOCldLmxleCkubGluZSwgKHl5
dnNwWyg2KSAtICg4KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29u
dGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWyg4KSAtICg4KV0pLCAoeXl2c3BbKDYpIC0gKDgp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRMb29wKEVMb29wRG9XaGlsZSwgMCwgKHl5dnNwWyg2KSAtICg4KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksIDAsICh5eXZzcFsoMykgLSAoOCldLmludGVybS5pbnRlcm1Ob2Rl
KSwgKHl5dnNwWyg0KSAtICg4KV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRG9XaGlsZSwg
MCwgKHl5dnNwWyg2KSAtICg4KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIDAsICh5eXZzcFso
MykgLSAoOCldLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bHNwWyg0KSAtICg4KV0pKTsKICAgICAg
ICAgLS1jb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxODM6CisgIGNhc2UgMTg0OgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNo
KCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KICAgICBicmVhazsKIAotICBjYXNl
IDE4NDoKKyAgY2FzZSAxODU6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxl
LnBvcCgpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BGb3IsICh5eXZzcFsoNCkgLSAoNyldLmludGVybS5pbnRl
cm1Ob2RlKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcp
XS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQq
PigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3KSAt
ICg3KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDEpIC0gKDcpXS5sZXgpLmxpbmUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZExvb3AoRUxvb3BGb3IsICh5eXZzcFsoNCkgLSAoNyldLmludGVybS5pbnRlcm1Ob2RlKSwg
cmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDUpIC0gKDcpXS5pbnRlcm0u
bm9kZVBhaXIpLm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3Bb
KDUpIC0gKDcpXS5pbnRlcm0ubm9kZVBhaXIpLm5vZGUyKSwgKHl5dnNwWyg3KSAtICg3KV0uaW50
ZXJtLmludGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDcpXSkpOwogICAgICAgICAtLWNvbnRleHQt
Pmxvb3BOZXN0aW5nTGV2ZWw7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4NToKKyAg
Y2FzZSAxODY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDE4NjoKKyAgY2FzZSAxODc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4NzoKKyAgY2FzZSAxODg6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
ODg6CisgIGNhc2UgMTg5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODk6CisgIGNhc2Ug
MTkwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5
eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtNDQxOCw3ICs0NDQ1
LDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5MDoKKyAgY2Fz
ZSAxOTE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0g
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CkBAIC00NDI2LDYzICs0
NDUzLDYzIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTE6Cisg
IGNhc2UgMTkyOgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZl
bCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5s
ZXgpLmxpbmUsICJjb250aW51ZSBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiY29udGlu
dWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgKHl5
dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsICh5eWxz
cFsoMSkgLSAoMildKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5MjoKKyAgY2Fz
ZSAxOTM6CiAKICAgICB7CiAgICAgICAgIGlmIChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCku
bGluZSwgImJyZWFrIHN0YXRlbWVudCBvbmx5IGFsbG93ZWQgaW4gbG9vcHMiLCAiIik7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDIpXSksICJicmVhayBzdGF0ZW1l
bnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcEJyZWFrLCAoeXl2c3BbKDEpIC0gKDIp
XS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgKHl5bHNwWygxKSAtICgyKV0pKTsK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkzOgorICBjYXNlIDE5NDoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEJyYW5jaChFT3BSZXR1cm4sICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgICAgIGlmIChjb250
ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRWb2lkKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICJu
b24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAibm9uLXZvaWQgZnVuY3Rp
b24gbXVzdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTQ6
CisgIGNhc2UgMTk1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMikg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDEpIC0gKDMpXS5sZXgpLmxp
bmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXlsc3BbKDEpIC0gKDMpXSkpOwogICAgICAgICBjb250ZXh0LT5mdW5j
dGlvblJldHVybnNWYWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChjb250ZXh0LT5jdXJyZW50RnVu
Y3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDMpXS5sZXgpLmxpbmUsICJ2b2lkIGZ1bmN0aW9uIGNh
bm5vdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgInZvaWQgZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZh
bHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICB9IGVsc2UgaWYgKCooY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZSkgIT0gKHl5dnNwWygy
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSkgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0ubGV4KS5saW5lLCAiZnVuY3Rpb24g
cmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3Qg
bWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk1OgorICBjYXNl
IDE5NjoKIAogICAgIHsKLSAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgKHl5dnNwWygxKSAt
ICgyKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgKHl5dnNwWygxKSAtICgyKV0u
bGV4KS5saW5lKTsKKyAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgKHl5bHNwWygxKSAtICgy
KV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTk2OgorICBjYXNlIDE5NzoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1Ob2RlKTsKQEAgLTQ0OTAsMjkgKzQ1MTcsMjkgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDE5NzoKKyAgY2FzZSAxOTg6CiAKICAgICB7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0
ZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMikgLSAoMild
LmludGVybS5pbnRlcm1Ob2RlKSwgMCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1Ob2Rl
KSwgKHl5bG9jKSk7CiAgICAgICAgIGNvbnRleHQtPnRyZWVSb290ID0gKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk4OgorICBjYXNlIDE5
OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTk5OgorICBjYXNlIDIwMDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMjAwOgorICBjYXNlIDIwMToKIAogICAgIHsKICAgICAgICAg
VEZ1bmN0aW9uKiBmdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuZnVuY3Rpb247
CkBAIC00NTIxLDcgKzQ1NDgsNyBAQCB5eXJlZHVjZToKICAgICAgICAgCiAgICAgICAgIGlmIChi
dWlsdEluKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmxpbmUsICJidWlsdC1pbiBmdW5jdGlvbnMgY2Fubm90IGJlIHJlZGVm
aW5lZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJidWlsdC1pbiBmdW5jdGlvbnMgY2Fubm90IGJl
IHJlZGVmaW5lZCIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NTM1LDcgKzQ1NjIs
NyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBUaGVuIHRoaXMg
ZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5LgogICAgICAgICAgICAgLy8KLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgImZ1bmN0aW9u
IGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJmdW5jdGlvbiBhbHJl
YWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIHByZXZEZWMtPnNldERl
ZmluZWQoKTsKQEAgLTQ1NDUsMTEgKzQ1NzIsMTEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8vCiAg
ICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0TmFtZSgpID09ICJtYWluIikgewogICAgICAgICAgICAg
aWYgKGZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCAiZnVuY3Rpb24gY2Fu
bm90IHRha2UgYW55IHBhcmFtZXRlcihzKSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7
CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiZnVu
Y3Rpb24gY2Fubm90IHRha2UgYW55IHBhcmFtZXRlcihzKSIsIGZ1bmN0aW9uLT5nZXROYW1lKCku
Y19zdHIoKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNU
eXBlKCkgIT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMSkgLSAoMSldLmludGVybSkubGluZSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCku
Z2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7
CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiIiwg
ZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpLCAibWFpbiBmdW5jdGlv
biBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ1NzcsNyArNDYwNCw3IEBAIHl5
cmVkdWNlOgogICAgICAgICAgICAgICAgIC8vIEluc2VydCB0aGUgcGFyYW1ldGVycyB3aXRoIG5h
bWUgaW4gdGhlIHN5bWJvbCB0YWJsZS4KICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAg
ICAgIGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgqdmFyaWFibGUpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSku
bGluZSwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgInJlZGVm
aW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHZhcmlh
YmxlOwogICAgICAgICAgICAgICAgIH0KQEAgLTQ1ODgsMzEgKzQ2MTUsMzIgQEAgeXlyZWR1Y2U6
CiAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93
QWdncmVnYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJhbU5vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJ
ZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXJpYWJsZS0+Z2V0VHlwZSgpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRO
YW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoeXlsc3BbKDEpIC0gKDEpXSkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSku
bGluZSksICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAg
cGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHBhcmFtTm9k
ZXMsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAo
eXlsc3BbKDEpIC0gKDEpXSkpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVy
YXRvcihwYXJhbU5vZGVzLCBFT3BQYXJhbWV0ZXJzLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0p
LmxpbmUpOworICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0
b3IocGFyYW1Ob2RlcywgRU9wUGFyYW1ldGVycywgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAg
ICAgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBwYXJhbU5vZGVz
OwogICAgICAgICBjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsID0gMDsKICAgICA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMjAxOgorICBjYXNlIDIwMjoKIAogICAgIHsKICAgICAgICAgLy8/PyBD
aGVjayB0aGF0IGFsbCBwYXRocyByZXR1cm4gYSB2YWx1ZSBpZiByZXR1cm4gdHlwZSAhPSB2b2lk
ID8KICAgICAgICAgLy8gICBNYXkgYmUgYmVzdCBkb25lIGFzIHBvc3QgcHJvY2VzcyBwaGFzZSBv
biBpbnRlcm1lZGlhdGUgY29kZQogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0aW9u
VHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCAmJiAhIGNvbnRleHQtPmZ1bmN0aW9uUmV0
dXJuc1ZhbHVlKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0pLmxpbmUsICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAiIiwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgzKV0pLCAiZnVuY3Rpb24g
ZG9lcyBub3QgcmV0dXJuIGEgdmFsdWU6IiwgIiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybSku
ZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAo
MyldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtTm9kZSksIDApOwotICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRl
T3BlcmF0b3IoKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSwgRU9wRnVuY3Rpb24sICh5eXZzcFso
MSkgLSAoMyldLmludGVybSkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bU5vZGUpLCAoeXlsb2MpKTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3Jl
Z2F0ZU9wZXJhdG9yKCh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSksIEVPcEZ1bmN0aW9uLCAoeXls
c3BbKDEpIC0gKDMpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRB
c0FnZ3JlZ2F0ZSgpLT5zZXROYW1lKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24t
PmdldE1hbmdsZWROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
KS5mdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpKTsKIApAQCAtNDYyMSw5ICs0NjQ5LDYgQEAgeXly
ZWR1Y2U6CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRl
KCktPnNldE9wdGltaXplKGNvbnRleHQtPnByYWdtYSgpLm9wdGltaXplKTsKICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RGVidWcoY29udGV4
dC0+cHJhZ21hKCkuZGVidWcpOwogCi0gICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtTm9kZSkgJiYgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpLT5n
ZXRBc0FnZ3JlZ2F0ZSgpKQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+
Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RW5kTGluZSgoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPmdldEVuZExpbmUoKSk7Ci0KICAgICAgICAgY29u
dGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgO30KICAgICBicmVhazsKQEAgLTQ2NDAsNyAr
NDY2NSw3IEBAIHl5cmVkdWNlOgogICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwogCiAg
ICorK3l5dnNwID0geXl2YWw7Ci0KKyAgKisreXlsc3AgPSB5eWxvYzsKIAogICAvKiBOb3cgYHNo
aWZ0JyB0aGUgcmVzdWx0IG9mIHRoZSByZWR1Y3Rpb24uICBEZXRlcm1pbmUgd2hhdCBzdGF0ZQog
ICAgICB0aGF0IGdvZXMgdG8sIGJhc2VkIG9uIHRoZSBzdGF0ZSB3ZSBwb3BwZWQgYmFjayB0byBh
bmQgdGhlIHJ1bGUKQEAgLTQ2NjYsNyArNDY5MSw3IEBAIHl5ZXJybGFiOgogICAgIHsKICAgICAg
ICsreXluZXJyczsKICNpZiAhIFlZRVJST1JfVkVSQk9TRQotICAgICAgeXllcnJvciAoY29udGV4
dCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CisgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0
LCBZWV8oInN5bnRheCBlcnJvciIpKTsKICNlbHNlCiAgICAgICB7CiAJWVlTSVpFX1QgeXlzaXpl
ID0geXlzeW50YXhfZXJyb3IgKDAsIHl5c3RhdGUsIHl5Y2hhcik7CkBAIC00NjkwLDExICs0NzE1
LDExIEBAIHl5ZXJybGFiOgogCWlmICgwIDwgeXlzaXplICYmIHl5c2l6ZSA8PSB5eW1zZ19hbGxv
YykKIAkgIHsKIAkgICAgKHZvaWQpIHl5c3ludGF4X2Vycm9yICh5eW1zZywgeXlzdGF0ZSwgeXlj
aGFyKTsKLQkgICAgeXllcnJvciAoY29udGV4dCwgeXltc2cpOworCSAgICB5eWVycm9yICgmeXls
bG9jLCBjb250ZXh0LCB5eW1zZyk7CiAJICB9CiAJZWxzZQogCSAgewotCSAgICB5eWVycm9yIChj
b250ZXh0LCBZWV8oInN5bnRheCBlcnJvciIpKTsKKwkgICAgeXllcnJvciAoJnl5bGxvYywgY29u
dGV4dCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CiAJICAgIGlmICh5eXNpemUgIT0gMCkKIAkgICAg
ICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwogCSAgfQpAQCAtNDcwMiw3ICs0NzI3LDcgQEAgeXllcnJs
YWI6CiAjZW5kaWYKICAgICB9CiAKLQorICB5eWVycm9yX3JhbmdlWzBdID0geXlsbG9jOwogCiAg
IGlmICh5eWVycnN0YXR1cyA9PSAzKQogICAgIHsKQEAgLTQ3MTgsNyArNDc0Myw3IEBAIHl5ZXJy
bGFiOgogICAgICAgZWxzZQogCXsKIAkgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogZGlzY2FyZGluZyIs
Ci0JCSAgICAgIHl5dG9rZW4sICZ5eWx2YWwsIGNvbnRleHQpOworCQkgICAgICB5eXRva2VuLCAm
eXlsdmFsLCAmeXlsbG9jLCBjb250ZXh0KTsKIAkgIHl5Y2hhciA9IFlZRU1QVFk7CiAJfQogICAg
IH0KQEAgLTQ3MzksNiArNDc2NCw3IEBAIHl5ZXJyb3JsYWI6CiAgIGlmICgvKkNPTlNUQ09ORCov
IDApCiAgICAgIGdvdG8geXllcnJvcmxhYjsKIAorICB5eWVycm9yX3JhbmdlWzBdID0geXlsc3Bb
MS15eWxlbl07CiAgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdo
aWNoIGFjdGlvbiB0cmlnZ2VyZWQKICAgICAgdGhpcyBZWUVSUk9SLiAgKi8KICAgWVlQT1BTVEFD
SyAoeXlsZW4pOwpAQCAtNDc3Miw5ICs0Nzk4LDkgQEAgeXllcnJsYWIxOgogICAgICAgaWYgKHl5
c3NwID09IHl5c3MpCiAJWVlBQk9SVDsKIAotCisgICAgICB5eWVycm9yX3JhbmdlWzBdID0gKnl5
bHNwOwogICAgICAgeXlkZXN0cnVjdCAoIkVycm9yOiBwb3BwaW5nIiwKLQkJICB5eXN0b3NbeXlz
dGF0ZV0sIHl5dnNwLCBjb250ZXh0KTsKKwkJICB5eXN0b3NbeXlzdGF0ZV0sIHl5dnNwLCB5eWxz
cCwgY29udGV4dCk7CiAgICAgICBZWVBPUFNUQUNLICgxKTsKICAgICAgIHl5c3RhdGUgPSAqeXlz
c3A7CiAgICAgICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwpAQCAtNDc4NSw2ICs0ODEx
LDExIEBAIHl5ZXJybGFiMToKIAogICAqKyt5eXZzcCA9IHl5bHZhbDsKIAorICB5eWVycm9yX3Jh
bmdlWzFdID0geXlsbG9jOworICAvKiBVc2luZyBZWUxMT0MgaXMgdGVtcHRpbmcsIGJ1dCB3b3Vs
ZCBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mCisgICAgIHRoZSBsb29rLWFoZWFkLiAgWVlMT0MgaXMg
YXZhaWxhYmxlIHRob3VnaC4gICovCisgIFlZTExPQ19ERUZBVUxUICh5eWxvYywgKHl5ZXJyb3Jf
cmFuZ2UgLSAxKSwgMik7CisgICorK3l5bHNwID0geXlsb2M7CiAKICAgLyogU2hpZnQgdGhlIGVy
cm9yIHRva2VuLiAgKi8KICAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXN0b3NbeXlu
XSwgeXl2c3AsIHl5bHNwKTsKQEAgLTQ4MTIsNyArNDg0Myw3IEBAIHl5YWJvcnRsYWI6CiB8IHl5
ZXhoYXVzdGVkbGFiIC0tIG1lbW9yeSBleGhhdXN0aW9uIGNvbWVzIGhlcmUuICB8CiBgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiB5eWV4aGF1c3Rl
ZGxhYjoKLSAgeXllcnJvciAoY29udGV4dCwgWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOworICB5
eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSk7CiAgIHl5
cmVzdWx0ID0gMjsKICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KICNlbmRpZgpAQCAtNDgyMCw3ICs0
ODUxLDcgQEAgeXlleGhhdXN0ZWRsYWI6CiB5eXJldHVybjoKICAgaWYgKHl5Y2hhciAhPSBZWUVP
RiAmJiB5eWNoYXIgIT0gWVlFTVBUWSkKICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IGRpc2Nh
cmRpbmcgbG9va2FoZWFkIiwKLQkJIHl5dG9rZW4sICZ5eWx2YWwsIGNvbnRleHQpOworCQkgeXl0
b2tlbiwgJnl5bHZhbCwgJnl5bGxvYywgY29udGV4dCk7CiAgIC8qIERvIG5vdCByZWNsYWltIHRo
ZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKICAgICAgdGhpcyBZ
WUFCT1JUIG9yIFlZQUNDRVBULiAgKi8KICAgWVlQT1BTVEFDSyAoeXlsZW4pOwpAQCAtNDgyOCw3
ICs0ODU5LDcgQEAgeXlyZXR1cm46CiAgIHdoaWxlICh5eXNzcCAhPSB5eXNzKQogICAgIHsKICAg
ICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBwb3BwaW5nIiwKLQkJICB5eXN0b3NbKnl5c3NwXSwg
eXl2c3AsIGNvbnRleHQpOworCQkgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwgeXlsc3AsIGNvbnRl
eHQpOwogICAgICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgfQogI2lmbmRlZiB5eW92ZXJmbG93CkBA
IC00ODQ3LDYgKzQ4NzgsMTEgQEAgeXlyZXR1cm46CiAKIAogCit2b2lkIHl5ZXJyb3IoWVlMVFlQ
RSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pIHsK
KyAgICBjb250ZXh0LT5lcnJvcigqeXlsbG9jLCByZWFzb24sICIiKTsKKyAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Cit9CisKIGludCBnbHNsYW5nX3BhcnNlKFRQYXJzZUNvbnRleHQqIGNvbnRleHQp
IHsKICAgICByZXR1cm4geXlwYXJzZShjb250ZXh0KTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oCShyZXZpc2lvbiAx
NTI2NDkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190
YWIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTEgQEAKICAgIFRoaXMgc3BlY2lhbCBl
eGNlcHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KICAg
IHZlcnNpb24gMi4yIG9mIEJpc29uLiAgKi8KIAorLy8gVGhlc2Ugd2VyZSBwdXQgaGVyZSB3aXRo
ICVjb2RlIHJlcXVpcmVzLCB3aGljaCBvdXIgdmVyc2lvbiBvZiBCaXNvbiBkb2VzIG5vdCBzdXBw
b3J0LAorLy8gc28gSSBwdXQgdGhlbSBoZXJlIG1hbnVhbGx5LgorI2RlZmluZSBZWUxUWVBFIFRT
b3VyY2VMb2MKKyNkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisKIC8qIFRva2Vucy4gICov
CiAjaWZuZGVmIFlZVE9LRU5UWVBFCiAjIGRlZmluZSBZWVRPS0VOVFlQRQpAQCAtODYsNTIgKzkx
LDUxIEBACiAgICAgIEZMT0FUQ09OU1RBTlQgPSAzMDIsCiAgICAgIElOVENPTlNUQU5UID0gMzAz
LAogICAgICBCT09MQ09OU1RBTlQgPSAzMDQsCi0gICAgIEZJRUxEX1NFTEVDVElPTiA9IDMwNSwK
LSAgICAgTEVGVF9PUCA9IDMwNiwKLSAgICAgUklHSFRfT1AgPSAzMDcsCi0gICAgIElOQ19PUCA9
IDMwOCwKLSAgICAgREVDX09QID0gMzA5LAotICAgICBMRV9PUCA9IDMxMCwKLSAgICAgR0VfT1Ag
PSAzMTEsCi0gICAgIEVRX09QID0gMzEyLAotICAgICBORV9PUCA9IDMxMywKLSAgICAgQU5EX09Q
ID0gMzE0LAotICAgICBPUl9PUCA9IDMxNSwKLSAgICAgWE9SX09QID0gMzE2LAotICAgICBNVUxf
QVNTSUdOID0gMzE3LAotICAgICBESVZfQVNTSUdOID0gMzE4LAotICAgICBBRERfQVNTSUdOID0g
MzE5LAotICAgICBNT0RfQVNTSUdOID0gMzIwLAotICAgICBMRUZUX0FTU0lHTiA9IDMyMSwKLSAg
ICAgUklHSFRfQVNTSUdOID0gMzIyLAotICAgICBBTkRfQVNTSUdOID0gMzIzLAotICAgICBYT1Jf
QVNTSUdOID0gMzI0LAotICAgICBPUl9BU1NJR04gPSAzMjUsCi0gICAgIFNVQl9BU1NJR04gPSAz
MjYsCi0gICAgIExFRlRfUEFSRU4gPSAzMjcsCi0gICAgIFJJR0hUX1BBUkVOID0gMzI4LAotICAg
ICBMRUZUX0JSQUNLRVQgPSAzMjksCi0gICAgIFJJR0hUX0JSQUNLRVQgPSAzMzAsCi0gICAgIExF
RlRfQlJBQ0UgPSAzMzEsCi0gICAgIFJJR0hUX0JSQUNFID0gMzMyLAotICAgICBET1QgPSAzMzMs
Ci0gICAgIENPTU1BID0gMzM0LAotICAgICBDT0xPTiA9IDMzNSwKLSAgICAgRVFVQUwgPSAzMzYs
Ci0gICAgIFNFTUlDT0xPTiA9IDMzNywKLSAgICAgQkFORyA9IDMzOCwKLSAgICAgREFTSCA9IDMz
OSwKLSAgICAgVElMREUgPSAzNDAsCi0gICAgIFBMVVMgPSAzNDEsCi0gICAgIFNUQVIgPSAzNDIs
Ci0gICAgIFNMQVNIID0gMzQzLAotICAgICBQRVJDRU5UID0gMzQ0LAotICAgICBMRUZUX0FOR0xF
ID0gMzQ1LAotICAgICBSSUdIVF9BTkdMRSA9IDM0NiwKLSAgICAgVkVSVElDQUxfQkFSID0gMzQ3
LAotICAgICBDQVJFVCA9IDM0OCwKLSAgICAgQU1QRVJTQU5EID0gMzQ5LAotICAgICBRVUVTVElP
TiA9IDM1MAorICAgICBMRUZUX09QID0gMzA1LAorICAgICBSSUdIVF9PUCA9IDMwNiwKKyAgICAg
SU5DX09QID0gMzA3LAorICAgICBERUNfT1AgPSAzMDgsCisgICAgIExFX09QID0gMzA5LAorICAg
ICBHRV9PUCA9IDMxMCwKKyAgICAgRVFfT1AgPSAzMTEsCisgICAgIE5FX09QID0gMzEyLAorICAg
ICBBTkRfT1AgPSAzMTMsCisgICAgIE9SX09QID0gMzE0LAorICAgICBYT1JfT1AgPSAzMTUsCisg
ICAgIE1VTF9BU1NJR04gPSAzMTYsCisgICAgIERJVl9BU1NJR04gPSAzMTcsCisgICAgIEFERF9B
U1NJR04gPSAzMTgsCisgICAgIE1PRF9BU1NJR04gPSAzMTksCisgICAgIExFRlRfQVNTSUdOID0g
MzIwLAorICAgICBSSUdIVF9BU1NJR04gPSAzMjEsCisgICAgIEFORF9BU1NJR04gPSAzMjIsCisg
ICAgIFhPUl9BU1NJR04gPSAzMjMsCisgICAgIE9SX0FTU0lHTiA9IDMyNCwKKyAgICAgU1VCX0FT
U0lHTiA9IDMyNSwKKyAgICAgTEVGVF9QQVJFTiA9IDMyNiwKKyAgICAgUklHSFRfUEFSRU4gPSAz
MjcsCisgICAgIExFRlRfQlJBQ0tFVCA9IDMyOCwKKyAgICAgUklHSFRfQlJBQ0tFVCA9IDMyOSwK
KyAgICAgTEVGVF9CUkFDRSA9IDMzMCwKKyAgICAgUklHSFRfQlJBQ0UgPSAzMzEsCisgICAgIERP
VCA9IDMzMiwKKyAgICAgQ09NTUEgPSAzMzMsCisgICAgIENPTE9OID0gMzM0LAorICAgICBFUVVB
TCA9IDMzNSwKKyAgICAgU0VNSUNPTE9OID0gMzM2LAorICAgICBCQU5HID0gMzM3LAorICAgICBE
QVNIID0gMzM4LAorICAgICBUSUxERSA9IDMzOSwKKyAgICAgUExVUyA9IDM0MCwKKyAgICAgU1RB
UiA9IDM0MSwKKyAgICAgU0xBU0ggPSAzNDIsCisgICAgIFBFUkNFTlQgPSAzNDMsCisgICAgIExF
RlRfQU5HTEUgPSAzNDQsCisgICAgIFJJR0hUX0FOR0xFID0gMzQ1LAorICAgICBWRVJUSUNBTF9C
QVIgPSAzNDYsCisgICAgIENBUkVUID0gMzQ3LAorICAgICBBTVBFUlNBTkQgPSAzNDgsCisgICAg
IFFVRVNUSU9OID0gMzQ5CiAgICB9OwogI2VuZGlmCiAvKiBUb2tlbnMuICAqLwpAQCAtMTgyLDUy
ICsxODYsNTEgQEAKICNkZWZpbmUgRkxPQVRDT05TVEFOVCAzMDIKICNkZWZpbmUgSU5UQ09OU1RB
TlQgMzAzCiAjZGVmaW5lIEJPT0xDT05TVEFOVCAzMDQKLSNkZWZpbmUgRklFTERfU0VMRUNUSU9O
IDMwNQotI2RlZmluZSBMRUZUX09QIDMwNgotI2RlZmluZSBSSUdIVF9PUCAzMDcKLSNkZWZpbmUg
SU5DX09QIDMwOAotI2RlZmluZSBERUNfT1AgMzA5Ci0jZGVmaW5lIExFX09QIDMxMAotI2RlZmlu
ZSBHRV9PUCAzMTEKLSNkZWZpbmUgRVFfT1AgMzEyCi0jZGVmaW5lIE5FX09QIDMxMwotI2RlZmlu
ZSBBTkRfT1AgMzE0Ci0jZGVmaW5lIE9SX09QIDMxNQotI2RlZmluZSBYT1JfT1AgMzE2Ci0jZGVm
aW5lIE1VTF9BU1NJR04gMzE3Ci0jZGVmaW5lIERJVl9BU1NJR04gMzE4Ci0jZGVmaW5lIEFERF9B
U1NJR04gMzE5Ci0jZGVmaW5lIE1PRF9BU1NJR04gMzIwCi0jZGVmaW5lIExFRlRfQVNTSUdOIDMy
MQotI2RlZmluZSBSSUdIVF9BU1NJR04gMzIyCi0jZGVmaW5lIEFORF9BU1NJR04gMzIzCi0jZGVm
aW5lIFhPUl9BU1NJR04gMzI0Ci0jZGVmaW5lIE9SX0FTU0lHTiAzMjUKLSNkZWZpbmUgU1VCX0FT
U0lHTiAzMjYKLSNkZWZpbmUgTEVGVF9QQVJFTiAzMjcKLSNkZWZpbmUgUklHSFRfUEFSRU4gMzI4
Ci0jZGVmaW5lIExFRlRfQlJBQ0tFVCAzMjkKLSNkZWZpbmUgUklHSFRfQlJBQ0tFVCAzMzAKLSNk
ZWZpbmUgTEVGVF9CUkFDRSAzMzEKLSNkZWZpbmUgUklHSFRfQlJBQ0UgMzMyCi0jZGVmaW5lIERP
VCAzMzMKLSNkZWZpbmUgQ09NTUEgMzM0Ci0jZGVmaW5lIENPTE9OIDMzNQotI2RlZmluZSBFUVVB
TCAzMzYKLSNkZWZpbmUgU0VNSUNPTE9OIDMzNwotI2RlZmluZSBCQU5HIDMzOAotI2RlZmluZSBE
QVNIIDMzOQotI2RlZmluZSBUSUxERSAzNDAKLSNkZWZpbmUgUExVUyAzNDEKLSNkZWZpbmUgU1RB
UiAzNDIKLSNkZWZpbmUgU0xBU0ggMzQzCi0jZGVmaW5lIFBFUkNFTlQgMzQ0Ci0jZGVmaW5lIExF
RlRfQU5HTEUgMzQ1Ci0jZGVmaW5lIFJJR0hUX0FOR0xFIDM0NgotI2RlZmluZSBWRVJUSUNBTF9C
QVIgMzQ3Ci0jZGVmaW5lIENBUkVUIDM0OAotI2RlZmluZSBBTVBFUlNBTkQgMzQ5Ci0jZGVmaW5l
IFFVRVNUSU9OIDM1MAorI2RlZmluZSBMRUZUX09QIDMwNQorI2RlZmluZSBSSUdIVF9PUCAzMDYK
KyNkZWZpbmUgSU5DX09QIDMwNworI2RlZmluZSBERUNfT1AgMzA4CisjZGVmaW5lIExFX09QIDMw
OQorI2RlZmluZSBHRV9PUCAzMTAKKyNkZWZpbmUgRVFfT1AgMzExCisjZGVmaW5lIE5FX09QIDMx
MgorI2RlZmluZSBBTkRfT1AgMzEzCisjZGVmaW5lIE9SX09QIDMxNAorI2RlZmluZSBYT1JfT1Ag
MzE1CisjZGVmaW5lIE1VTF9BU1NJR04gMzE2CisjZGVmaW5lIERJVl9BU1NJR04gMzE3CisjZGVm
aW5lIEFERF9BU1NJR04gMzE4CisjZGVmaW5lIE1PRF9BU1NJR04gMzE5CisjZGVmaW5lIExFRlRf
QVNTSUdOIDMyMAorI2RlZmluZSBSSUdIVF9BU1NJR04gMzIxCisjZGVmaW5lIEFORF9BU1NJR04g
MzIyCisjZGVmaW5lIFhPUl9BU1NJR04gMzIzCisjZGVmaW5lIE9SX0FTU0lHTiAzMjQKKyNkZWZp
bmUgU1VCX0FTU0lHTiAzMjUKKyNkZWZpbmUgTEVGVF9QQVJFTiAzMjYKKyNkZWZpbmUgUklHSFRf
UEFSRU4gMzI3CisjZGVmaW5lIExFRlRfQlJBQ0tFVCAzMjgKKyNkZWZpbmUgUklHSFRfQlJBQ0tF
VCAzMjkKKyNkZWZpbmUgTEVGVF9CUkFDRSAzMzAKKyNkZWZpbmUgUklHSFRfQlJBQ0UgMzMxCisj
ZGVmaW5lIERPVCAzMzIKKyNkZWZpbmUgQ09NTUEgMzMzCisjZGVmaW5lIENPTE9OIDMzNAorI2Rl
ZmluZSBFUVVBTCAzMzUKKyNkZWZpbmUgU0VNSUNPTE9OIDMzNgorI2RlZmluZSBCQU5HIDMzNwor
I2RlZmluZSBEQVNIIDMzOAorI2RlZmluZSBUSUxERSAzMzkKKyNkZWZpbmUgUExVUyAzNDAKKyNk
ZWZpbmUgU1RBUiAzNDEKKyNkZWZpbmUgU0xBU0ggMzQyCisjZGVmaW5lIFBFUkNFTlQgMzQzCisj
ZGVmaW5lIExFRlRfQU5HTEUgMzQ0CisjZGVmaW5lIFJJR0hUX0FOR0xFIDM0NQorI2RlZmluZSBW
RVJUSUNBTF9CQVIgMzQ2CisjZGVmaW5lIENBUkVUIDM0NworI2RlZmluZSBBTVBFUlNBTkQgMzQ4
CisjZGVmaW5lIFFVRVNUSU9OIDM0OQogCiAKIApAQCAtMjM3LDcgKzI0MCw2IEBAIHR5cGVkZWYg
dW5pb24gWVlTVFlQRQogCiB7CiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5l
OwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUU3RyaW5nICpzdHJpbmc7CiAgICAgICAg
ICAgICBmbG9hdCBmOwpAQCAtMjQ3LDcgKzI0OSw2IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQog
ICAgICAgICBUU3ltYm9sKiBzeW1ib2w7CiAgICAgfSBsZXg7CiAgICAgc3RydWN0IHsKLSAgICAg
ICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAgICBUT3BlcmF0b3Igb3A7CiAgICAgICAgIHVuaW9u
IHsKICAgICAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwpAQCAtMjYxLDggKzI2Miw4
IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZp
ZXI7CiAgICAgICAgICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFt
ZXRlciBwYXJhbTsKLSAgICAgICAgICAgIFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAg
IFRUeXBlTGlzdCogdHlwZUxpc3Q7CisgICAgICAgICAgICBURmllbGQqIGZpZWxkOworICAgICAg
ICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwog
fQpAQCAtMjc2LDMgKzI3NywxNyBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKIAogCiAKKyNpZiAh
IGRlZmluZWQgWVlMVFlQRSAmJiAhIGRlZmluZWQgWVlMVFlQRV9JU19ERUNMQVJFRAordHlwZWRl
ZiBzdHJ1Y3QgWVlMVFlQRQoreworICBpbnQgZmlyc3RfbGluZTsKKyAgaW50IGZpcnN0X2NvbHVt
bjsKKyAgaW50IGxhc3RfbGluZTsKKyAgaW50IGxhc3RfY29sdW1uOworfSBZWUxUWVBFOworIyBk
ZWZpbmUgeXlsdHlwZSBZWUxUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3biAq
LworIyBkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisjIGRlZmluZSBZWUxUWVBFX0lTX1RS
SVZJQUwgMQorI2VuZGlmCisKKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL2ludGVybU91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2ludGVybU91dC5jcHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODksNyArMTg5LDkgQEAgYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdFVuYXJ5
KFZpc2l0IAogICAgICAgICBjYXNlIEVPcEFueTogICAgICAgICAgICBvdXQgPDwgImFueSI7ICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRU9wQWxsOiAgICAgICAgICAgIG91
dCA8PCAiYWxsIjsgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBkZWZhdWx0OiBv
dXQubWVzc2FnZShFUHJlZml4RXJyb3IsICJCYWQgdW5hcnkgb3AiKTsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIG91dC5wcmVmaXgoRVByZWZpeEVycm9yKTsKKyAgICAgICAgICAgIG91
dCA8PCAiQmFkIHVuYXJ5IG9wIjsKICAgICB9CiAKICAgICBvdXQgPDwgIiAoIiA8PCBub2RlLT5n
ZXRDb21wbGV0ZVN0cmluZygpIDw8ICIpIjsKQEAgLTIwNCw3ICsyMDYsOCBAQCBib29sIFRPdXRw
dXRUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpCiAgICAgVEluZm9TaW5rQmFzZSYgb3V0ID0g
c2luazsKIAogICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcE51bGwpIHsKLSAgICAgICAgb3V0
Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCAibm9kZSBpcyBzdGlsbCBFT3BOdWxsISIpOworICAgICAg
ICBvdXQucHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgIG91dCA8PCAibm9kZSBpcyBzdGls
bCBFT3BOdWxsISI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjYzLDcgKzI2
Niw5IEBAIGJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmkKIAogICAgICAg
ICBjYXNlIEVPcERlY2xhcmF0aW9uOiAgIG91dCA8PCAiRGVjbGFyYXRpb246ICI7ICAgYnJlYWs7
CiAKLSAgICAgICAgZGVmYXVsdDogb3V0Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiQmFkIGFnZ3Jl
Z2F0aW9uIG9wIik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBvdXQucHJlZml4KEVQ
cmVmaXhFcnJvcik7CisgICAgICAgICAgICBvdXQgPDwgIkJhZCBhZ2dyZWdhdGlvbiBvcCI7CiAg
ICAgfQogCiAgICAgaWYgKG5vZGUtPmdldE9wKCkgIT0gRU9wU2VxdWVuY2UgJiYgbm9kZS0+Z2V0
T3AoKSAhPSBFT3BQYXJhbWV0ZXJzKQpAQCAtMzExLDkgKzMxNiw5IEBAIHZvaWQgVE91dHB1dFRy
YXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW8KIHsKICAgICBUSW5mb1NpbmtCYXNlJiBvdXQgPSBz
aW5rOwogCi0gICAgaW50IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwor
ICAgIHNpemVfdCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKIAotICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgT3V0cHV0VHJlZVRleHQob3V0LCBub2RlLCBkZXB0
aCk7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVtpXS5nZXRU
eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKQEAgLTMzNCw3ICszMzksNyBAQCB2
b2lkIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvCiAgICAgICAgICAgICAgICAg
b3V0IDw8ICIgKGNvbnN0IGludClcbiI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIG91dC5tZXNzYWdlKEVQcmVmaXhJbnRlcm5h
bEVycm9yLCAiVW5rbm93biBjb25zdGFudCIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAg
ICAgICAgb3V0Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwg
IlVua25vd24gY29uc3RhbnQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1l
ZGlhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvaW50ZXJtZWRpYXRlLmgJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1lZGlhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTgsNiAr
MTgsNyBAQAogCiAjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCiAKKyNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSAiY29tcGlsZXIvQ29tbW9uLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvVHlwZXMuaCIKICNpbmNsdWRlICJjb21waWxlci9Db25zdGFudFVuaW9uLmgiCkBAIC0yMDYs
MTAgKzIwNywxNiBAQCBjbGFzcyBUSW50ZXJtTm9kZSB7CiBwdWJsaWM6CiAgICAgUE9PTF9BTExP
Q0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKQogCi0gICAgVEludGVybU5vZGUo
KSA6IGxpbmUoMCkge30KKyAgICBUSW50ZXJtTm9kZSgpIHsKKyAgICAgICAgLy8gVE9ETzogTW92
ZSB0aGlzIHRvIFRTb3VyY2VMb2MgY29uc3RydWN0b3IKKyAgICAgICAgLy8gYWZ0ZXIgZ2V0dGlu
ZyByaWQgb2YgVFB1YmxpY1R5cGUuCisgICAgICAgIGxpbmUuZmlyc3RfZmlsZSA9IGxpbmUubGFz
dF9maWxlID0gMDsKKyAgICAgICAgbGluZS5maXJzdF9saW5lID0gbGluZS5sYXN0X2xpbmUgPSAw
OworICAgIH0KKyAgICB2aXJ0dWFsIH5USW50ZXJtTm9kZSgpIHsgfQogCi0gICAgVFNvdXJjZUxv
YyBnZXRMaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZTsgfQotICAgIHZvaWQgc2V0TGluZShUU291
cmNlTG9jIGwpIHsgbGluZSA9IGw7IH0KKyAgICBjb25zdCBUU291cmNlTG9jJiBnZXRMaW5lKCkg
Y29uc3QgeyByZXR1cm4gbGluZTsgfQorICAgIHZvaWQgc2V0TGluZShjb25zdCBUU291cmNlTG9j
JiBsKSB7IGxpbmUgPSBsOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2UoVEludGVybVRy
YXZlcnNlciopID0gMDsKICAgICB2aXJ0dWFsIFRJbnRlcm1UeXBlZCogZ2V0QXNUeXBlZCgpIHsg
cmV0dXJuIDA7IH0KQEAgLTIyMCw3ICsyMjcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUSW50
ZXJtU2VsZWN0aW9uKiBnZXRBc1NlbGVjdGlvbk5vZGUoKSB7IHJldHVybiAwOyB9CiAgICAgdmly
dHVhbCBUSW50ZXJtU3ltYm9sKiBnZXRBc1N5bWJvbE5vZGUoKSB7IHJldHVybiAwOyB9CiAgICAg
dmlydHVhbCBUSW50ZXJtTG9vcCogZ2V0QXNMb29wTm9kZSgpIHsgcmV0dXJuIDA7IH0KLSAgICB2
aXJ0dWFsIH5USW50ZXJtTm9kZSgpIHsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgVFNvdXJjZUxvYyBs
aW5lOwpAQCAtMzU4LDcgKzM2NCwxMCBAQCBwdWJsaWM6CiAgICAgVEludGVybUNvbnN0YW50VW5p
b24oQ29uc3RhbnRVbmlvbiAqdW5pb25Qb2ludGVyLCBjb25zdCBUVHlwZSYgdCkgOiBUSW50ZXJt
VHlwZWQodCksIHVuaW9uQXJyYXlQb2ludGVyKHVuaW9uUG9pbnRlcikgeyB9CiAKICAgICBDb25z
dGFudFVuaW9uKiBnZXRVbmlvbkFycmF5UG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJy
YXlQb2ludGVyOyB9Ci0gICAgdm9pZCBzZXRVbmlvbkFycmF5UG9pbnRlcihDb25zdGFudFVuaW9u
ICpjKSB7IHVuaW9uQXJyYXlQb2ludGVyID0gYzsgfQorICAgIAorICAgIGludCBnZXRJQ29uc3Qo
aW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRlciA/IHVuaW9uQXJyYXlQ
b2ludGVyW2luZGV4XS5nZXRJQ29uc3QoKSA6IDA7IH0KKyAgICBmbG9hdCBnZXRGQ29uc3QoaW50
IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRlciA/IHVuaW9uQXJyYXlQb2lu
dGVyW2luZGV4XS5nZXRGQ29uc3QoKSA6IDAuMGY7IH0KKyAgICBib29sIGdldEJDb25zdChpbnQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVyID8gdW5pb25BcnJheVBvaW50
ZXJbaW5kZXhdLmdldEJDb25zdCgpIDogZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgVEludGVybUNv
bnN0YW50VW5pb24qIGdldEFzQ29uc3RhbnRVbmlvbigpICB7IHJldHVybiB0aGlzOyB9CiAgICAg
dmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqKTsKQEAgLTQ0Nyw3ICs0NTYs
NyBAQCB0eXBlZGVmIFRWZWN0b3I8aW50PiBUUXVhbGlmaWVyTGlzdDsKIC8vCiBjbGFzcyBUSW50
ZXJtQWdncmVnYXRlIDogcHVibGljIFRJbnRlcm1PcGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgVElu
dGVybUFnZ3JlZ2F0ZSgpIDogVEludGVybU9wZXJhdG9yKEVPcE51bGwpLCB1c2VyRGVmaW5lZChm
YWxzZSksIGVuZExpbmUoMCksIHVzZUVtdWxhdGVkRnVuY3Rpb24oZmFsc2UpIHsgfQorICAgIFRJ
bnRlcm1BZ2dyZWdhdGUoKSA6IFRJbnRlcm1PcGVyYXRvcihFT3BOdWxsKSwgdXNlckRlZmluZWQo
ZmFsc2UpLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKGZhbHNlKSB7IH0KICAgICBUSW50ZXJtQWdncmVn
YXRlKFRPcGVyYXRvciBvKSA6IFRJbnRlcm1PcGVyYXRvcihvKSwgdXNlRW11bGF0ZWRGdW5jdGlv
bihmYWxzZSkgeyB9CiAgICAgflRJbnRlcm1BZ2dyZWdhdGUoKSB7IH0KIApAQCAtNDY3LDkgKzQ3
Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlYnVnKGJvb2wgZCkgeyBkZWJ1ZyA9IGQ7IH0K
ICAgICBib29sIGdldERlYnVnKCkgeyByZXR1cm4gZGVidWc7IH0KIAotICAgIHZvaWQgc2V0RW5k
TGluZShUU291cmNlTG9jIGxpbmUpIHsgZW5kTGluZSA9IGxpbmU7IH0KLSAgICBUU291cmNlTG9j
IGdldEVuZExpbmUoKSBjb25zdCB7IHJldHVybiBlbmRMaW5lOyB9Ci0KICAgICB2b2lkIHNldFVz
ZUVtdWxhdGVkRnVuY3Rpb24oKSB7IHVzZUVtdWxhdGVkRnVuY3Rpb24gPSB0cnVlOyB9CiAgICAg
Ym9vbCBnZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkgeyByZXR1cm4gdXNlRW11bGF0ZWRGdW5jdGlv
bjsgfQogCkBAIC00ODIsNyArNDg4LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBvcHRpbWl6
ZTsKICAgICBib29sIGRlYnVnOwotICAgIFRTb3VyY2VMb2MgZW5kTGluZTsKIAogICAgIC8vIElm
IHNldCB0byB0cnVlLCByZXBsYWNlIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBjYWxsIHdpdGggYW4g
ZW11bGF0ZWQgb25lCiAgICAgLy8gdG8gd29yayBhcm91bmQgZHJpdmVyIGJ1Z3MuCkBAIC01Mzgs
NyArNTQzLDggQEAgcHVibGljOgogICAgICAgICAgICAgaW5WaXNpdChpblZpc2l0KSwKICAgICAg
ICAgICAgIHBvc3RWaXNpdChwb3N0VmlzaXQpLAogICAgICAgICAgICAgcmlnaHRUb0xlZnQocmln
aHRUb0xlZnQpLAotICAgICAgICAgICAgZGVwdGgoMCkge30KKyAgICAgICAgICAgIGRlcHRoKDAp
LAorICAgICAgICAgICAgbWF4RGVwdGgoMCkge30KICAgICB2aXJ0dWFsIH5USW50ZXJtVHJhdmVy
c2VyKCkge307CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCop
IHt9CkBAIC01NTAsNyArNTU2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB2aXNpdExv
b3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wKikge3JldHVybiB0cnVlO30KICAgICB2aXJ0dWFs
IGJvb2wgdmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqKSB7cmV0dXJuIHRy
dWU7fQogCi0gICAgdm9pZCBpbmNyZW1lbnREZXB0aCgpIHtkZXB0aCsrO30KKyAgICBpbnQgZ2V0
TWF4RGVwdGgoKSBjb25zdCB7cmV0dXJuIG1heERlcHRoO30KKyAgICB2b2lkIGluY3JlbWVudERl
cHRoKCkge2RlcHRoKys7IG1heERlcHRoID0gc3RkOjptYXgobWF4RGVwdGgsIGRlcHRoKTsgfQog
ICAgIHZvaWQgZGVjcmVtZW50RGVwdGgoKSB7ZGVwdGgtLTt9CiAKICAgICAvLyBSZXR1cm4gdGhl
IG9yaWdpbmFsIG5hbWUgaWYgaGFzaCBmdW5jdGlvbiBwb2ludGVyIGlzIE5VTEw7CkBAIC01NjQs
NiArNTcxLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgaW50IGRlcHRoOworICAgIGlu
dCBtYXhEZXB0aDsKIH07CiAKICNlbmRpZiAvLyBfX0lOVEVSTUVESUFURV9ICkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvbG9jYWxpbnRl
cm1lZGlhdGUuaAkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDM0
ICsyNSwzMyBAQCBwdWJsaWM6ICAgIAogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xv
YmFsUG9vbEFsbG9jYXRvcikKIAogICAgIFRJbnRlcm1lZGlhdGUoVEluZm9TaW5rJiBpKSA6IGlu
Zm9TaW5rKGkpIHsgfQotICAgIFRJbnRlcm1TeW1ib2wqIGFkZFN5bWJvbChpbnQgSWQsIGNvbnN0
IFRTdHJpbmcmLCBjb25zdCBUVHlwZSYsIFRTb3VyY2VMb2MpOworICAgIFRJbnRlcm1TeW1ib2wq
IGFkZFN5bWJvbChpbnQgSWQsIGNvbnN0IFRTdHJpbmcmLCBjb25zdCBUVHlwZSYsIGNvbnN0IFRT
b3VyY2VMb2MmKTsKICAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnZlcnNpb24oVE9wZXJhdG9yLCBj
b25zdCBUVHlwZSYsIFRJbnRlcm1UeXBlZCopOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQmluYXJ5
TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdo
dCwgVFNvdXJjZUxvYywgVFN5bWJvbFRhYmxlJik7Ci0gICAgVEludGVybVR5cGVkKiBhZGRBc3Np
Z24oVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQs
IFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkSW5kZXgoVE9wZXJhdG9yIG9wLCBU
SW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIFRTb3VyY2VMb2MpOwotICAg
IFRJbnRlcm1UeXBlZCogYWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIGNo
aWxkLCBUU291cmNlTG9jLCBUU3ltYm9sVGFibGUmKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlKiBn
cm93QWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBsZWZ0LCBUSW50ZXJtTm9kZSogcmlnaHQsIFRTb3Vy
Y2VMb2MpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIG1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUq
IG5vZGUsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIHNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKFRJbnRlcm1Ob2RlKiwgVE9wZXJhdG9yLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJt
Tm9kZSogIGFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1Ob2RlUGFpciBj
b2RlLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZFNlbGVjdGlvbihUSW50ZXJt
VHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZhbHNl
QmxvY2ssIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29tbWEoVEludGVybVR5
cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJt
Q29uc3RhbnRVbmlvbiogYWRkQ29uc3RhbnRVbmlvbihDb25zdGFudFVuaW9uKiwgY29uc3QgVFR5
cGUmLCBUU291cmNlTG9jKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZEJpbmFyeU1hdGgoVE9wZXJh
dG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRT
b3VyY2VMb2MmLCBUU3ltYm9sVGFibGUmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZEFzc2lnbihU
T3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29u
c3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkSW5kZXgoVE9wZXJhdG9yIG9w
LCBUSW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgsIGNvbnN0IFRTb3VyY2VM
b2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZFVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRl
cm1Ob2RlKiBjaGlsZCwgY29uc3QgVFNvdXJjZUxvYyYsIFRTeW1ib2xUYWJsZSYpOworICAgIFRJ
bnRlcm1BZ2dyZWdhdGUqIGdyb3dBZ2dyZWdhdGUoVEludGVybU5vZGUqIGxlZnQsIFRJbnRlcm1O
b2RlKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1BZ2dyZWdhdGUqIG1h
a2VBZ2dyZWdhdGUoVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBU
SW50ZXJtQWdncmVnYXRlKiBzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSosIFRPcGVy
YXRvciwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1Ob2RlKiAgYWRkU2VsZWN0aW9u
KFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQYWlyIGNvZGUsIGNvbnN0IFRTb3VyY2VM
b2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQs
IFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZhbHNlQmxvY2ssIGNvbnN0
IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbW1hKFRJbnRlcm1UeXBlZCog
bGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRl
cm1Db25zdGFudFVuaW9uKiBhZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qLCBjb25zdCBU
VHlwZSYsIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAgICBUSW50ZXJtVHlwZWQqIHByb21vdGVDb25z
dGFudFVuaW9uKFRCYXNpY1R5cGUsIFRJbnRlcm1Db25zdGFudFVuaW9uKikgOwotICAgIGJvb2wg
cGFyc2VDb25zdFRyZWUoVFNvdXJjZUxvYywgVEludGVybU5vZGUqLCBDb25zdGFudFVuaW9uKiwg
VE9wZXJhdG9yLCBUU3ltYm9sVGFibGUmLCBUVHlwZSwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFt
ID0gZmFsc2UpOyAgICAgICAgCi0gICAgVEludGVybU5vZGUqIGFkZExvb3AoVExvb3BUeXBlLCBU
SW50ZXJtTm9kZSosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1Ob2RlKiwg
VFNvdXJjZUxvYyk7Ci0gICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgVFNv
dXJjZUxvYyk7Ci0gICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgVEludGVy
bVR5cGVkKiwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRTd2l6emxlKFRWZWN0
b3JGaWVsZHMmLCBUU291cmNlTG9jKTsKKyAgICBib29sIHBhcnNlQ29uc3RUcmVlKGNvbnN0IFRT
b3VyY2VMb2MmLCBUSW50ZXJtTm9kZSosIENvbnN0YW50VW5pb24qLCBUT3BlcmF0b3IsIFRTeW1i
b2xUYWJsZSYsIFRUeXBlLCBib29sIHNpbmdsZUNvbnN0YW50UGFyYW0gPSBmYWxzZSk7ICAgICAg
ICAKKyAgICBUSW50ZXJtTm9kZSogYWRkTG9vcChUTG9vcFR5cGUsIFRJbnRlcm1Ob2RlKiwgVElu
dGVybVR5cGVkKiwgVEludGVybVR5cGVkKiwgVEludGVybU5vZGUqLCBjb25zdCBUU291cmNlTG9j
Jik7CisgICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgY29uc3QgVFNvdXJj
ZUxvYyYpOworICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3BlcmF0b3IsIFRJbnRlcm1U
eXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZFN3aXp6bGUo
VFZlY3RvckZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAgICBib29sIHBvc3RQcm9jZXNz
KFRJbnRlcm1Ob2RlKik7Ci0Jdm9pZCByZW1vdmUoVEludGVybU5vZGUqKTsKKyAgICB2b2lkIHJl
bW92ZShUSW50ZXJtTm9kZSopOwogICAgIHZvaWQgb3V0cHV0VHJlZShUSW50ZXJtTm9kZSopOwot
ICAgIAotcHJvdGVjdGVkOgotICAgIFRJbmZvU2luayYgaW5mb1Npbms7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBvcGVyYXRvcj0oVEludGVybWVkaWF0ZSYpOyAvLyBwcmV2ZW50IGFzc2lnbm1lbnRz
CisKKyAgICBUSW5mb1NpbmsmIGluZm9TaW5rOwogfTsKIAogI2VuZGlmIC8vIF9MT0NBTF9JTlRF
Uk1FRElBVEVfSU5DTFVERURfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcGFyc2VDb25zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwCShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDE2ICszOCwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCB2aXNpdExvb3Ao
VmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wKik7CiAgICAgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCB2
aXNpdCwgVEludGVybUJyYW5jaCopOwogCi0gICAgaW50IGluZGV4OworICAgIHNpemVfdCBpbmRl
eDsKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5OwogICAgIFRUeXBlIHR5cGU7CiAgICAg
VE9wZXJhdG9yIGNvbnN0cnVjdG9yVHlwZTsKICAgICBib29sIHNpbmdsZUNvbnN0YW50UGFyYW07
CiAgICAgVEluZm9TaW5rJiBpbmZvU2luazsKICAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxl
OwotICAgIGludCBzaXplOyAvLyBzaXplIG9mIHRoZSBjb25zdHJ1Y3RvciAoIDQgZm9yIHZlYzQp
CisgICAgc2l6ZV90IHNpemU7IC8vIHNpemUgb2YgdGhlIGNvbnN0cnVjdG9yICggNCBmb3IgdmVj
NCkKICAgICBib29sIGlzTWF0cml4OwotICAgIGludCBtYXRyaXhTaXplOyAvLyBkaW1lbnNpb24g
b2YgdGhlIG1hdHJpeCAobm9taW5hbCBzaXplIGFuZCBub3QgdGhlIGluc3RhbmNlIHNpemUpCisg
ICAgc2l6ZV90IG1hdHJpeFNpemU7IC8vIGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4IChub21pbmFs
IHNpemUgYW5kIG5vdCB0aGUgaW5zdGFuY2Ugc2l6ZSkKIH07CiAKIC8vCkBAIC02MSw3ICs2MSw3
IEBAIHByb3RlY3RlZDoKIAogdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0U3ltYm9sKFRJbnRl
cm1TeW1ib2wqIG5vZGUpCiB7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRl
cm5hbEVycm9yLCAiU3ltYm9sIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBu
b2RlLT5nZXRMaW5lKCkpOworICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiU3ltYm9sIE5vZGUgZm91bmQgaW4gY29uc3RhbnQg
Y29uc3RydWN0b3IiKTsKICAgICByZXR1cm47CiAKIH0KQEAgLTc0LDEyICs3NCwxMiBAQCBib29s
IFRDb25zdFRyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgCiAgICAgICAgIFRTdHJpbmcgYnVm
OwogICAgICAgICBidWYuYXBwZW5kKCInY29uc3RydWN0b3InIDogYXNzaWduaW5nIG5vbi1jb25z
dGFudCB0byAiKTsKICAgICAgICAgYnVmLmFwcGVuZCh0eXBlLmdldENvbXBsZXRlU3RyaW5nKCkp
OwotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBidWYuY19zdHIo
KSwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCBidWYuY19zdHIoKSk7CiAgICAgICAgIGVycm9yID0g
dHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgCiAgICAgfQogCi0gICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJCaW5hcnkgTm9kZSBmb3VuZCBpbiBjb25z
dGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExpbmUoKSk7CisgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJpbmFyeSBOb2Rl
IGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgCiAgICAgcmV0dXJuIGZhbHNl
OwogfQpAQCAtODksNyArODksNyBAQCBib29sIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRVbmFyeShW
aXNpdCB2CiAgICAgVFN0cmluZyBidWY7CiAgICAgYnVmLmFwcGVuZCgiJ2NvbnN0cnVjdG9yJyA6
IGFzc2lnbmluZyBub24tY29uc3RhbnQgdG8gIik7CiAgICAgYnVmLmFwcGVuZCh0eXBlLmdldENv
bXBsZXRlU3RyaW5nKCkpOwotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3Is
IGJ1Zi5jX3N0cigpLCBub2RlLT5nZXRMaW5lKCkpOworICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4RXJyb3IsIG5vZGUtPmdldExpbmUoKSwgYnVmLmNfc3RyKCkpOwogICAgIGVycm9y
ID0gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7ICAKIH0KQEAgLTEwMCw3ICsxMDAsNyBAQCBib29s
IFRDb25zdFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzCiAgICAgICAgIFRTdHJpbmcgYnVm
OwogICAgICAgICBidWYuYXBwZW5kKCInY29uc3RydWN0b3InIDogYXNzaWduaW5nIG5vbi1jb25z
dGFudCB0byAiKTsKICAgICAgICAgYnVmLmFwcGVuZCh0eXBlLmdldENvbXBsZXRlU3RyaW5nKCkp
OwotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBidWYuY19zdHIo
KSwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCBidWYuY19zdHIoKSk7CiAgICAgICAgIGVycm9yID0g
dHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgCiAgICAgfQpAQCAtMTQ0LDI0ICsxNDQsMzEg
QEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpcwogCiBib29sIFRDb25z
dFRyYXZlcnNlcjo6dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24q
IG5vZGUpCiB7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCAiU2VsZWN0aW9uIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5n
ZXRMaW5lKCkpOworICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgbm9kZS0+Z2V0TGluZSgpLCAiU2VsZWN0aW9uIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29u
c3RydWN0b3IiKTsKICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2
b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVu
aW9uKiBub2RlKQogeworICAgIGlmICghbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSkKKyAg
ICB7CisgICAgICAgIC8vIFRoZSBjb25zdGFudCB3YXMgbm90IGluaXRpYWxpemVkLCB0aGlzIHNo
b3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBsb2dnZWQKKyAgICAgICAgYXNzZXJ0KGluZm9TaW5rLmlu
Zm8uc2l6ZSgpICE9IDApOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQ29uc3RhbnRV
bmlvbiogbGVmdFVuaW9uQXJyYXkgPSB1bmlvbkFycmF5OwotICAgIGludCBpbnN0YW5jZVNpemUg
PSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICBzaXplX3QgaW5zdGFuY2VTaXplID0gdHlwZS5n
ZXRPYmplY3RTaXplKCk7CiAKICAgICBpZiAoaW5kZXggPj0gaW5zdGFuY2VTaXplKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoIXNpbmdsZUNvbnN0YW50UGFyYW0pIHsKLSAgICAgICAgaW50
IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICBzaXplX3Qg
c2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CiAgICAgCiAgICAgICAgIENv
bnN0YW50VW5pb24gKnJpZ2h0VW5pb25BcnJheSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVy
KCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICAgICAgaWYgKGluZGV4ID49
IGluc3RhbmNlU2l6ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBsZWZ0
VW5pb25BcnJheVtpbmRleF0gPSByaWdodFVuaW9uQXJyYXlbaV07CkBAIC0xNjksMTEgKzE3Niwx
MSBAQCB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uCiAgICAgICAgICAg
ICAoaW5kZXgpKys7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpbnQgdG90YWxT
aXplID0gaW5kZXggKyBzaXplOworICAgICAgICBzaXplX3QgdG90YWxTaXplID0gaW5kZXggKyBz
aXplOwogICAgICAgICBDb25zdGFudFVuaW9uICpyaWdodFVuaW9uQXJyYXkgPSBub2RlLT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpOwogICAgICAgICBpZiAoIWlzTWF0cml4KSB7Ci0gICAgICAgICAg
ICBpbnQgY291bnQgPSAwOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IGluZGV4OyBpIDwgdG90
YWxTaXplOyBpKyspIHsKKyAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IDA7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkrKykgewogICAgICAgICAg
ICAgICAgIGlmIChpID49IGluc3RhbmNlU2l6ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC0xODUsOSArMTkyLDkgQEAgdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3Rh
bnRVbmlvbgogICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgeyAgLy8gZm9yIG1hdHJpeCBjb25zdHJ1Y3RvcnMKLSAgICAgICAgICAgIGlu
dCBjb3VudCA9IDA7Ci0gICAgICAgICAgICBpbnQgZWxlbWVudCA9IGluZGV4OwotICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IGluZGV4OyBpIDwgdG90YWxTaXplOyBpKyspIHsKKyAgICAgICAgICAg
IHNpemVfdCBjb3VudCA9IDA7CisgICAgICAgICAgICBzaXplX3QgZWxlbWVudCA9IGluZGV4Owor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGluZGV4OyBpIDwgdG90YWxTaXplOyBpKyspIHsK
ICAgICAgICAgICAgICAgICBpZiAoaSA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCAtIGkgPT0gMCB8fCAoaSAt
IGVsZW1lbnQpICUgKG1hdHJpeFNpemUgKyAxKSA9PSAwICkKQEAgLTIwNiwxNCArMjEzLDE0IEBA
IHZvaWQgVENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24KIAogYm9vbCBUQ29uc3RU
cmF2ZXJzZXI6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AqIG5vZGUpCiB7Ci0g
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiTG9vcCBOb2Rl
IGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUo
KSwgIkxvb3AgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOwogICAgIGVycm9y
ID0gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2
aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCogbm9kZSkKIHsKLSAgICBpbmZv
U2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJCcmFuY2ggTm9kZSBmb3Vu
ZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJC
cmFuY2ggTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOwogICAgIGVycm9yID0g
dHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMjMsNyArMjMwLDcgQEAgYm9vbCBUQ29u
c3RUcmF2ZXJzZXI6OnZpc2l0QnJhbmNoKFZpc2l0IAogLy8gSW5kaXZpZHVhbCBmdW5jdGlvbnMg
Y2FuIGJlIGluaXRpYWxpemVkIHRvIDAgdG8gc2tpcCBwcm9jZXNzaW5nIG9mIHRoYXQKIC8vIHR5
cGUgb2Ygbm9kZS4gIEl0J3MgY2hpbGRyZW4gd2lsbCBzdGlsbCBiZSBwcm9jZXNzZWQuCiAvLwot
Ym9vbCBUSW50ZXJtZWRpYXRlOjpwYXJzZUNvbnN0VHJlZShUU291cmNlTG9jIGxpbmUsIFRJbnRl
cm1Ob2RlKiByb290LCBDb25zdGFudFVuaW9uKiB1bmlvbkFycmF5LCBUT3BlcmF0b3IgY29uc3Ry
dWN0b3JUeXBlLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlLCBUVHlwZSB0LCBib29sIHNpbmds
ZUNvbnN0YW50UGFyYW0pCitib29sIFRJbnRlcm1lZGlhdGU6OnBhcnNlQ29uc3RUcmVlKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1Ob2RlKiByb290LCBDb25zdGFudFVuaW9uKiB1bmlv
bkFycmF5LCBUT3BlcmF0b3IgY29uc3RydWN0b3JUeXBlLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRh
YmxlLCBUVHlwZSB0LCBib29sIHNpbmdsZUNvbnN0YW50UGFyYW0pCiB7CiAgICAgaWYgKHJvb3Qg
PT0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RpbWluZy9SZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RpbWluZy9S
ZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAJKHJldmlzaW9uIDE1MjY0OSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFk
ZXJUaW1pbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBAIHZvaWQgUmVzdHJp
Y3RWZXJ0ZXhTaGFkZXJUaW1pbmc6OnZpc2l0U3kKIHsKICAgICBpZiAoSXNTYW1wbGVyKG5vZGUt
PmdldEJhc2ljVHlwZSgpKSkgewogICAgICAgICArK21OdW1FcnJvcnM7Ci0gICAgICAgIG1TaW5r
LnByZWZpeChFUHJlZml4RXJyb3IpOwotICAgICAgICBtU2luay5sb2NhdGlvbihub2RlLT5nZXRM
aW5lKCkpOwotICAgICAgICBtU2luayA8PCAiU2FtcGxlcnMgYXJlIG5vdCBwZXJtaXR0ZWQgaW4g
dmVydGV4IHNoYWRlcnMuXG4iOworICAgICAgICBtU2luay5tZXNzYWdlKEVQcmVmaXhFcnJvciwK
KyAgICAgICAgICAgICAgICAgICAgICBub2RlLT5nZXRMaW5lKCksCisgICAgICAgICAgICAgICAg
ICAgICAgIlNhbXBsZXJzIGFyZSBub3QgcGVybWl0dGVkIGluIHZlcnRleCBzaGFkZXJzIik7CiAg
ICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyNjQ5KQorKysgU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDctMTUg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVw
ZGF0ZSBBTkdMRSB0byByMjQyNi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExODU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IFJlbmFtZWQgRGV0ZWN0UmVjdXJzaW9uIHRv
IERldGVjdENhbGxEZXB0aCBhbmQgYWRkZWQgYnVpbHRpbl9zeW1ib2xfdGFibGUuCisKIDIwMTMt
MDctMTUgIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CiAKICAgICAgICAg
W0N1cmxdIERvd25sb2FkIGRvZXMgbm90IHJlcGxhY2UgZXhpc3RpbmcgZmlsZS4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNTI2NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjg2Niw2ICsyODY2LDcgQEAgaWYgKFdURl9V
U0VfM0RfR1JBUEhJQ1MpCiAgICAgZW5kaWYgKCkKIAogICAgIGxpc3QoQVBQRU5EIEFOR0xFU3Vw
cG9ydF9TT1VSQ0VTCisgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxl
ci9idWlsdGluX3N5bWJvbF90YWJsZS5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5H
TEUvc3JjL2NvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcAogICAgICAgICAke1RI
SVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwCiAgICAgICAg
ICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxlci5jcHAKQEAgLTI4
NzYsOCArMjg3Nyw4IEBAIGlmIChXVEZfVVNFXzNEX0dSQVBISUNTKQogICAgICAgICAke1RISVJE
UEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVp
bGRlci5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL2Rl
cGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJ
Un0vQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNw
cAorICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2Fs
bERlcHRoLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIv
RGV0ZWN0RGlzY29udGludWl0eS5jcHAKLSAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUv
c3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJ
Un0vQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCiAgICAgICAgICR7VEhJUkRQ
QVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAKICAgICAgICAgJHtUSElS
RFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207292</attachid>
            <date>2013-07-22 16:36:38 -0700</date>
            <delta_ts>2013-07-22 17:19:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118550-20130722163637.patch</filename>
            <type>text/plain</type>
            <size>757118</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzAwOCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI4MiBAQAorMjAxMy0wNy0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRlZCBBTkdMRSB0byBsYXRlc3QgZ2l0IGNvbW1pdCAoMDQ3
MzczYWEzZWI0MDhiZTYyYmU1MmFkZTg0MGZhNWYxMWU3MjMzNykuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg1NTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFOR0xFLnBsaXN0OgorICAgICAgICAq
IEFOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogR05VbWFrZWZpbGUu
YW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgICAgIFJlbmFtZWQgRGV0ZWN0UmVj
dXJzaW9uIHRvIERldGVjdENhbGxEZXB0aC4KKyAgICAgICAgKiBpbmNsdWRlL0VHTC9lZ2xleHQu
aDoKKyAgICAgICAgKiBpbmNsdWRlL0dMRVMyL2dsMmV4dC5oOgorICAgICAgICAqIGluY2x1ZGUv
R0xTTEFORy9TaGFkZXJMYW5nLmg6CisgICAgICAgICogc3JjL2NvbW1vbi9SZWZDb3VudE9iamVj
dC5jcHA6CisgICAgICAgICogc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmg6CisgICAgICAgIChBcnJh
eVNpemUpOgorICAgICAgICAoU2FmZVJlbGVhc2UpOgorICAgICAgICAqIHNyYy9jb21tb24vZGVi
dWcuY3BwOgorICAgICAgICAqIHNyYy9jb21tb24vZGVidWcuaDoKKyAgICAgICAgKiBzcmMvY29t
bW9uL3N5c3RlbS5oOgorICAgICAgICAqIHNyYy9jb21tb24vdmVyc2lvbi5oOgorICAgICAgICAq
IHNyYy9jb21waWxlci9CYXNlVHlwZXMuaDoKKyAgICAgICAgKGdldFF1YWxpZmllclN0cmluZyk6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL0NvZGVHZW5ITFNMLmNwcDoKKyAgICAgICAgKENvbnN0
cnVjdENvbXBpbGVyKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29tbW9uLmg6CisgICAgICAg
ICogc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcDoKKyAgICAgICAgKFRDb21waWxlcjo6VENvbXBp
bGVyKToKKyAgICAgICAgKFRDb21waWxlcjo6SW5pdCk6CisgICAgICAgIChUQ29tcGlsZXI6OmNv
bXBpbGUpOgorICAgICAgICAoVENvbXBpbGVyOjpJbml0QnVpbHRJblN5bWJvbFRhYmxlKToKKyAg
ICAgICAgKFRDb21waWxlcjo6ZGV0ZWN0Q2FsbERlcHRoKToKKyAgICAgICAgKFRDb21waWxlcjo6
bGltaXRFeHByZXNzaW9uQ29tcGxleGl0eSk6CisgICAgICAgIChUQ29tcGlsZXI6OmdldFJlc291
cmNlcyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0NvbnN0YW50VW5pb24uaDoKKyAgICAgICAg
KENvbnN0YW50VW5pb246OkNvbnN0YW50VW5pb24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9E
ZXRlY3RDYWxsRGVwdGguY3BwOiBBZGRlZC4KKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RnVu
Y3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5j
dGlvbk5vZGU6OmdldE5hbWUpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5v
ZGU6OmFkZENhbGxlZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6
ZGV0ZWN0Q2FsbERlcHRoKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2Rl
OjpyZXNldCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkRldGVjdENhbGxEZXB0aCk6Cisg
ICAgICAgIChEZXRlY3RDYWxsRGVwdGg6On5EZXRlY3RDYWxsRGVwdGgpOgorICAgICAgICAoRGV0
ZWN0Q2FsbERlcHRoOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6
OmNoZWNrRXhjZWVkc01heERlcHRoKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6cmVzZXRG
dW5jdGlvbk5vZGVzKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6ZGV0ZWN0Q2FsbERlcHRo
Rm9yRnVuY3Rpb24pOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGgp
OgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpmaW5kRnVuY3Rpb25CeU5hbWUpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguaDogQWRkZWQuCisgICAgICAgIChEZXRl
Y3RDYWxsRGVwdGg6OmdldEluZm9TaW5rKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRGV0ZWN0
UmVjdXJzaW9uLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRGV0ZWN0UmVj
dXJzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNw
cDoKKyAgICAgICAgKFREaWFnbm9zdGljczo6d3JpdGVJbmZvKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvRm9yTG9vcFVucm9sbC5jcHA6CisgICAgICAgIChGb3JMb29wVW5yb2xsOjpldmFsdWF0
ZUludENvbnN0YW50KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwOgorICAg
ICAgICAoVEluZm9TaW5rQmFzZTo6cHJlZml4KToKKyAgICAgICAgKFRJbmZvU2lua0Jhc2U6Omxv
Y2F0aW9uKToKKyAgICAgICAgKFRJbmZvU2lua0Jhc2U6Om1lc3NhZ2UpOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9JbmZvU2luay5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9Jbml0aWFsaXpl
LmNwcDoKKyAgICAgICAgKEluc2VydEJ1aWx0SW5GdW5jdGlvbnMpOgorICAgICAgICAoSWRlbnRp
ZnlCdWlsdElucyk6CisgICAgICAgIChJbml0RXh0ZW5zaW9uQmVoYXZpb3IpOgorICAgICAgICAq
IHNyYy9jb21waWxlci9Jbml0aWFsaXplLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0ludGVy
bWVkaWF0ZS5jcHA6IFVwZGF0ZWQgYW5kIGFkZGVkIHN0YXRpY19jYXN0cyB0byBmaXggYnVpbGQg
ZXJyb3JzIG9uIE1hYy4KKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZFN5bWJvbCk6CisgICAg
ICAgIChUSW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYXRoKToKKyAgICAgICAgKFRJbnRlcm1lZGlh
dGU6OmFkZEFzc2lnbik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRJbmRleCk6CisgICAg
ICAgIChUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdGgpOgorICAgICAgICAoVEludGVybWVkaWF0
ZTo6c2V0QWdncmVnYXRlT3BlcmF0b3IpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQ29u
dmVyc2lvbik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjpncm93QWdncmVnYXRlKToKKyAgICAg
ICAgKFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUpOgorICAgICAgICAoVEludGVybWVkaWF0
ZTo6YWRkU2VsZWN0aW9uKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZENvbW1hKToKKyAg
ICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZENvbnN0YW50VW5pb24pOgorICAgICAgICAoVEludGVy
bWVkaWF0ZTo6YWRkU3dpenpsZSk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRMb29wKToK
KyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZEJyYW5jaCk6CisgICAgICAgIChUSW50ZXJtVW5h
cnk6OnByb21vdGUpOgorICAgICAgICAoVEludGVybUJpbmFyeTo6cHJvbW90ZSk6CisgICAgICAg
IChDb21wYXJlU3RydWN0KToKKyAgICAgICAgKENvbXBhcmVTdHJ1Y3R1cmUpOgorICAgICAgICAo
VEludGVybUNvbnN0YW50VW5pb246OmZvbGQpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6cHJv
bW90ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRHTFNMLmNw
cDoKKyAgICAgICAgKFRPdXRwdXRHTFNMOjp2aXNpdFN5bWJvbCk6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL091dHB1dEdMU0wuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJh
c2UuY3BwOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNlOjp3cml0ZVZhcmlhYmxlVHlwZSk6Cisg
ICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OndyaXRlQ29uc3RhbnRVbmlvbik6CisgICAgICAgIChU
T3V0cHV0R0xTTEJhc2U6OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6
dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNlOjpnZXRUeXBlTmFtZSk6
CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnN0cnVjdERlY2xhcmVkKToKKyAgICAgICAgKFRP
dXRwdXRHTFNMQmFzZTo6ZGVjbGFyZVN0cnVjdCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091
dHB1dEdMU0xCYXNlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwOgor
ICAgICAgICAoc2g6Ok91dHB1dEhMU0w6Ok91dHB1dEhMU0wpOgorICAgICAgICAoc2g6Ok91dHB1
dEhMU0w6OmdldFVuaWZvcm1zKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjpoZWFkZXIpOgor
ICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0U3ltYm9sKToKKyAgICAgICAgKHNoOjpPdXRw
dXRITFNMOjp2aXNpdEJpbmFyeSk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRBZ2dy
ZWdhdGUpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0U2VsZWN0aW9uKToKKyAgICAg
ICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdExvb3ApOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6
OmhhbmRsZUV4Y2Vzc2l2ZUxvb3ApOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmFyZ3VtZW50
U3RyaW5nKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp0eXBlU3RyaW5nKToKKyAgICAgICAg
KHNoOjpPdXRwdXRITFNMOjp0ZXh0dXJlU3RyaW5nKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNM
Ojppbml0aWFsaXplcik6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3Ip
OgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OndyaXRlQ29uc3RhbnRVbmlvbik6CisgICAgICAg
IChzaDo6T3V0cHV0SExTTDo6ZGVjb3JhdGVVbmlmb3JtKToKKyAgICAgICAgKHNoOjpPdXRwdXRI
TFNMOjpkZWNvcmF0ZUZpZWxkKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjpyZWdpc3RlclN0
cmluZyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6c2FtcGxlclJlZ2lzdGVyKToKKyAgICAg
ICAgKHNoOjpPdXRwdXRITFNMOjp1bmlmb3JtUmVnaXN0ZXIpOgorICAgICAgICAoc2g6Ok91dHB1
dEhMU0w6OmRlY2xhcmVVbmlmb3JtKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjpnbFZhcmlh
YmxlVHlwZSk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6Z2xWYXJpYWJsZVByZWNpc2lvbik6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaDoKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvUGFyc2VIZWxwZXIuY3BwOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cGFyc2VWZWN0
b3JGaWVsZHMpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cGFyc2VNYXRyaXhGaWVsZHMpOgor
ICAgICAgICAoVFBhcnNlQ29udGV4dDo6ZXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6
d2FybmluZyk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcik6CisgICAgICAg
IChUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6
YmluYXJ5T3BFcnJvcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNo
ZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2spOgorICAgICAg
ICAoVFBhcnNlQ29udGV4dDo6Z2xvYmFsRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250
ZXh0OjpyZXNlcnZlZEVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29uc3Ry
dWN0b3JFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJvckNoZWNr
KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6
OnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cGFy
YW1ldGVyU2FtcGxlckVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29udGFp
bnNTYW1wbGVyKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVycm9yQ2hlY2sp
OgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKToKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2spOgorICAgICAgICAoVFBh
cnNlQ29udGV4dDo6YXJyYXlFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Om5v
bkluaXRDb25zdEVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6bm9uSW5pdEVy
cm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNrKToKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6OmV4dGVuc2lvbkVycm9yQ2hlY2spOgorICAgICAgICAoVFBh
cnNlQ29udGV4dDo6aXNFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6
OmZpbmRGdW5jdGlvbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6
ZXIpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IpOgorICAgICAgICAo
VFBhcnNlQ29udGV4dDo6Y29uc3RydWN0QnVpbHRJbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0
Ojpjb25zdHJ1Y3RTdHJ1Y3QpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWN0
b3JOb2RlKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZSk6Cisg
ICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdEFycmF5Tm9kZSk6CisgICAgICAgIChUUGFy
c2VDb250ZXh0OjphZGRDb25zdFN0cnVjdCk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjplbnRl
clN0cnVjdERlY2xhcmF0aW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3Rp
bmdFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZEluZGV4RXhwcmVzc2lv
bik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmg6CisgICAgICAgIChUUGFy
c2VDb250ZXh0OjpUUGFyc2VDb250ZXh0KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnByYWdt
YSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHA6CisgICAgICAgIChUUG9v
bEFsbG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9TaEhhbmRsZS5o
OgorICAgICAgICAoVFNoSGFuZGxlQmFzZTo6Z2V0QXNUcmFuc2xhdG9ySExTTCk6CisgICAgICAg
ICogc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwOgorICAgICAgICAoU2hJbml0QnVpbHRJblJl
c291cmNlcyk6CisgICAgICAgIChTaEdldEluZm9Qb2ludGVyKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoVFR5cGU6OlRUeXBlKToKKyAgICAgICAg
KFRUeXBlOjpidWlsZE1hbmdsZWROYW1lKToKKyAgICAgICAgKFRUeXBlOjpnZXRPYmplY3RTaXpl
KToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmNvbnRhaW5zQXJyYXlzKToKKyAgICAgICAgKFRTdHJ1
Y3R1cmU6OmJ1aWxkTWFuZ2xlZE5hbWUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6Y2FsY3VsYXRl
T2JqZWN0U2l6ZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpjYWxjdWxhdGVEZWVwZXN0TmVzdGlu
Zyk6CisgICAgICAgIChUU3ltYm9sVGFibGVMZXZlbDo6cmVsYXRlVG9FeHRlbnNpb24pOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oOgorICAgICAgICAoVFN5bWJvbDo6cmVs
YXRlVG9FeHRlbnNpb24pOgorICAgICAgICAoVFN5bWJvbDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAg
ICAgKFRWYXJpYWJsZTo6VFZhcmlhYmxlKToKKyAgICAgICAgKFRWYXJpYWJsZTo6c2V0UXVhbGlm
aWVyKToKKyAgICAgICAgKFRWYXJpYWJsZTo6c2hhcmVDb25zdFBvaW50ZXIpOgorICAgICAgICAo
VFN5bWJvbFRhYmxlTGV2ZWw6Omluc2VydCk6CisgICAgICAgIChUU3ltYm9sVGFibGU6Omluc2Vy
dENvbnN0SW50KToKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6aW5zZXJ0QnVpbHRJbik6CisgICAg
ICAgICogc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmNwcDoKKyAgICAgICAgKFRyYW5zbGF0
b3JITFNMOjpUcmFuc2xhdG9ySExTTCk6CisgICAgICAgIChUcmFuc2xhdG9ySExTTDo6dHJhbnNs
YXRlKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuaDoKKyAgICAgICAg
KFRyYW5zbGF0b3JITFNMOjpnZXRBc1RyYW5zbGF0b3JITFNMKToKKyAgICAgICAgKFRyYW5zbGF0
b3JITFNMOjpnZXRVbmlmb3Jtcyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1R5cGVzLmg6IFVw
ZGF0ZWQgYW5kIGNoYW5nZWQgZW51bSBiaXQgZmllbGRzIHRvIGVudW1zIHRvIGZpeCBjb21waWxp
bmcgd2l0aCBHQ0MuCisgICAgICAgIChURmllbGQ6OlRGaWVsZCk6CisgICAgICAgIChURmllbGQ6
OnR5cGUpOgorICAgICAgICAoVEZpZWxkOjpuYW1lKToKKyAgICAgICAgKE5ld1Bvb2xURmllbGRM
aXN0KToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OlRTdHJ1Y3R1cmUpOgorICAgICAgICAoVFN0cnVj
dHVyZTo6bmFtZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpmaWVsZHMpOgorICAgICAgICAoVFN0
cnVjdHVyZTo6bWFuZ2xlZE5hbWUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6b2JqZWN0U2l6ZSk6
CisgICAgICAgIChUU3RydWN0dXJlOjpkZWVwZXN0TmVzdGluZyk6CisgICAgICAgIChUVHlwZTo6
VFR5cGUpOgorICAgICAgICAoVFR5cGU6OmVsZW1lbnRSZWdpc3RlckNvdW50KToKKyAgICAgICAg
KFRUeXBlOjp0b3RhbFJlZ2lzdGVyQ291bnQpOgorICAgICAgICAoVFR5cGU6OmNsZWFyQXJyYXlu
ZXNzKToKKyAgICAgICAgKFRUeXBlOjpnZXRTdHJ1Y3QpOgorICAgICAgICAoVFR5cGU6OnNldFN0
cnVjdCk6CisgICAgICAgIChUVHlwZTo6Z2V0TWFuZ2xlZE5hbWUpOgorICAgICAgICAoVFR5cGU6
OmdldERlZXBlc3RTdHJ1Y3ROZXN0aW5nKToKKyAgICAgICAgKFRUeXBlOjppc1N0cnVjdHVyZUNv
bnRhaW5pbmdBcnJheXMpOgorICAgICAgICAoVFB1YmxpY1R5cGU6OnNldEJhc2ljKToKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcDoKKyAgICAgICAgKGdldFVzZXJEZWZp
bmVkVmFyaWFibGVJbmZvKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy5sOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nLnk6IFB1dCBZWUxUWVBFIGRlZmluaXRpb24gaW50
byAldW5pb24uCisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcDoKKyAgICAg
ICAgKHl5X2dldF9wcmV2aW91c19zdGF0ZSk6CisgICAgICAgICh5eV90cnlfTlVMX3RyYW5zKToK
KyAgICAgICAgKHl5Z2V0X2xsb2MpOgorICAgICAgICAoeXlzZXRfbGxvYyk6CisgICAgICAgIChz
dHJpbmdfaW5wdXQpOgorICAgICAgICAoY2hlY2tfdHlwZSk6CisgICAgICAgIChyZXNlcnZlZF93
b3JkKToKKyAgICAgICAgKGdsc2xhbmdfc2Nhbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2ds
c2xhbmdfdGFiLmNwcDoKKyAgICAgICAgKHl5ZXJyb3IpOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9nbHNsYW5nX3RhYi5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwOgor
ICAgICAgICAoVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRVbmFyeSk6CisgICAgICAgIChUT3V0cHV0
VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChUT3V0cHV0VHJhdmVyc2VyOjp2
aXNpdENvbnN0YW50VW5pb24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9pbnRlcm1lZGlhdGUu
aDoKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpUSW50ZXJtTm9kZSk6CisgICAgICAgIChUSW50ZXJt
Tm9kZTo6flRJbnRlcm1Ob2RlKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRMaW5lKToKKyAg
ICAgICAgKFRJbnRlcm1Ob2RlOjpzZXRMaW5lKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRB
c0xvb3BOb2RlKToKKyAgICAgICAgKFRJbnRlcm1UeXBlZDo6dG90YWxSZWdpc3RlckNvdW50KToK
KyAgICAgICAgKFRJbnRlcm1UeXBlZDo6ZWxlbWVudFJlZ2lzdGVyQ291bnQpOgorICAgICAgICAo
VEludGVybVR5cGVkOjpnZXRBcnJheVNpemUpOgorICAgICAgICAoVEludGVybUNvbnN0YW50VW5p
b246OmdldElDb25zdCk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Z2V0RkNvbnN0
KToKKyAgICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjpnZXRCQ29uc3QpOgorICAgICAgICAo
VEludGVybUFnZ3JlZ2F0ZTo6VEludGVybUFnZ3JlZ2F0ZSk6CisgICAgICAgIChUSW50ZXJtVHJh
dmVyc2VyOjpUSW50ZXJtVHJhdmVyc2VyKToKKyAgICAgICAgKFRJbnRlcm1UcmF2ZXJzZXI6Omdl
dE1heERlcHRoKToKKyAgICAgICAgKFRJbnRlcm1UcmF2ZXJzZXI6OmluY3JlbWVudERlcHRoKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaDoKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHA6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZp
c2l0U3ltYm9sKToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRCaW5hcnkpOgorICAg
ICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdFVuYXJ5KToKKyAgICAgICAgKFRDb25zdFRyYXZl
cnNlcjo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdFNl
bGVjdGlvbik6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbik6
CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0TG9vcCk6CisgICAgICAgIChUQ29uc3RU
cmF2ZXJzZXI6OnZpc2l0QnJhbmNoKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OnBhcnNlQ29u
c3RUcmVlKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5j
cHA6CisgICAgICAgICh5eV9nZXRfcHJldmlvdXNfc3RhdGUpOgorICAgICAgICAoeXlfdHJ5X05V
TF90cmFucyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIu
bDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGlt
aW5nLmNwcDoKKyAgICAgICAgKFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nOjp2aXNpdFN5bWJv
bCk6CisgICAgICAgICAgICBVcGRhdGVkIEFOR0xFIHRvIGxhdGVzdCBnaXQgY29tbWl0IGFuZCBy
YW4gQmlzb24uCisKIDIwMTMtMDctMjAgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFVwZGF0ZWQgQU5HTEUgaXMgbGVha2luZyBsaWtlIGEgc2lldmUKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0CShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS5wbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTAsOSArMTAs
OSBAQAogCQk8a2V5Pk9wZW5Tb3VyY2VXZWJzaXRlVVJMPC9rZXk+CiAJCTxzdHJpbmc+aHR0cDov
L2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVjdC88L3N0cmluZz4KIAkJPGtleT5PcGVuU291
cmNlU0NNPC9rZXk+Ci0JCTxzdHJpbmc+c3ZuIGNvIC1yMTY0MSBodHRwOi8vYW5nbGVwcm9qZWN0
Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay88L3N0cmluZz4KKwkJPHN0cmluZz5naXQgY2xvbmUg
aHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXByb2plY3QvICYmIGNkIGFuZ2xlcHJvamVj
dCAmJiBnaXQgY2hlY2tvdXQgMDQ3MzczYWEzZWI0MDhiZTYyYmU1MmFkZTg0MGZhNWYxMWU3MjMz
Nzwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VJbXBvcnREYXRlPC9rZXk+Ci0JCTxzdHJpbmc+
MjAxMy0wMS0wNDwvc3RyaW5nPgorCQk8c3RyaW5nPjIwMTMtMDctMjI8L3N0cmluZz4KIAkJPGtl
eT5PcGVuU291cmNlTGljZW5zZTwva2V5PgogCQk8c3RyaW5nPkJTRDwvc3RyaW5nPgogCQk8a2V5
Pk9wZW5Tb3VyY2VMaWNlbnNlRmlsZTwva2V5PgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
R05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTAgQEAgbGli
QU5HTEVfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggXAogCVNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwIFwK
IAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5j
eUdyYXBoVHJhdmVyc2UuY3BwIFwKKwlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcCBcCisJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0RldGVjdENhbGxEZXB0aC5oIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5jcHAgXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmggXAotCVNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwIFwKLQlTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmggXAogCVNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGljcy5jcHAgXAogCVNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGljcy5oIFwKIAlTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlyZWN0aXZlSGFuZGxlci5jcHAgXApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4
IEBAIEhFQURFUlMgKz0gXAogICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3Jh
cGguaCBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIu
aCBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5oIFwK
KyAgICBzcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmggXAogICAgIHNyYy9jb21waWxlci9E
ZXRlY3REaXNjb250aW51aXR5LmggXAotICAgIHNyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24u
aCBcCiAgICAgc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmggXAogICAgIHNyYy9jb21waWxlci9E
aXJlY3RpdmVIYW5kbGVyLmggXAogICAgIHNyYy9jb21waWxlci9FeHRlbnNpb25CZWhhdmlvci5o
IFwKQEAgLTkyLDggKzkyLDggQEAgU09VUkNFUyArPSBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdy
YXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvZGVwZ3Jh
cGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBo
L0RlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBcCisgICAgc3JjL2NvbXBpbGVyL0RldGVjdENh
bGxEZXB0aC5jcHAgXAogICAgIHNyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNwcCBc
Ci0gICAgc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAgXAogICAgIHNyYy9jb21waWxl
ci9EaWFnbm9zdGljcy5jcHAgXAogICAgIHNyYy9jb21waWxlci9EaXJlY3RpdmVIYW5kbGVyLmNw
cCBcCiAgICAgc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwIFwKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBA
QAogCQk0OTk1MUMwMzE0QjdBQUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDIxNEI3QUFCMzAw
NjBFOTZFIC8qIGxlbmd0aF9saW1pdHMuaCAqLzsgfTsKIAkJNDk5NTFDMDkxNEI3QUFEODAwNjBF
OTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAvKiBCdWls
dEluRnVuY3Rpb25FbXVsYXRvci5jcHAgKi87IH07CiAJCTQ5OTUxQzBBMTRCN0FBRDgwMDYwRTk2
RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDYxNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yLmggKi87IH07Ci0JCTQ5OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBE
ZXRlY3RSZWN1cnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDk5NTFDMDcxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5jcHAg
Ki87IH07Ci0JCTQ5OTUxQzBDMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA4MTRC
N0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLzsgfTsKKwkJNUNCMTNGRDQxNzlE
QjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IxM0ZEMjE3OURCM0ZEMDAxRjg1MUQgLyogRGV0
ZWN0Q2FsbERlcHRoLmNwcCAqLzsgfTsKKwkJNUNCMTNGRDUxNzlEQjNGRDAwMUY4NTFEIC8qIERl
dGVjdENhbGxEZXB0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNCMTNGRDMxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0aC5oICovOyB9
OwogCQk5MEQ5QjEwMjEyRTExRENCMDAyRDQyNTUgLyogQ29tcGlsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBEOUIwRjkxMkUxMURDQjAwMkQ0
MjU1IC8qIENvbXBpbGVyLmNwcCAqLzsgfTsKIAkJOTBEOUIxMDMxMkUxMURDQjAwMkQ0MjU1IC8q
IEV4dGVuc2lvbkJlaGF2aW9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MEQ5QjBGQTEyRTExRENCMDAyRDQyNTUgLyogRXh0ZW5zaW9uQmVoYXZpb3Iu
aCAqLzsgfTsKIAkJOTBEOUIxMDQxMkUxMURDQjAwMkQ0MjU1IC8qIGdsc2xhbmdfbGV4LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMEZCMTJF
MTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5nX2xleC5jcHAgKi87IH07CkBAIC0xNDAsOCArMTQwLDgg
QEAKIAkJNDk5NTFDMDIxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbGVuZ3RoX2xpbWl0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OTk1MUMwNTE0QjdBQUQ3MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDk5NTFDMDcxNEI3QUFEODAwNjBFOTZFIC8q
IERldGVjdFJlY3Vyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEZXRlY3RSZWN1cnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OTk1
MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERldGVjdFJlY3Vyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0IxM0ZEMjE3OURCM0ZEMDAxRjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERldGVjdENhbGxEZXB0aC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjEzRkQzMTc5REIzRkQwMDFGODUx
RCAvKiBEZXRlY3RDYWxsRGVwdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGV0ZWN0Q2FsbERlcHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM1
MTIwOEM2OEIwMDFDODczRSAvKiBBTkdMRS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBBTkdMRS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUQ3QzU5QzYxMjA4QzY4QjAwMUM4NzNFIC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUQ3QzU5QzcxMjA4QzY4QjAwMUM4NzNFIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zOTksOCArMzk5LDggQEAKIAkJCQlGQjM5RDIy
NTEyMDBGMzVBMDAwODhFNjkgLyogQ29uc3RhbnRVbmlvbi5oICovLAogCQkJCUZCMzlEMjI2MTIw
MEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5jcHAgKi8sCiAJCQkJRkIzOUQyMjcxMjAwRjM1QTAwMDg4
RTY5IC8qIGRlYnVnLmggKi8sCi0JCQkJNDk5NTFDMDcxNEI3QUFEODAwNjBFOTZFIC8qIERldGVj
dFJlY3Vyc2lvbi5jcHAgKi8sCi0JCQkJNDk5NTFDMDgxNEI3QUFEODAwNjBFOTZFIC8qIERldGVj
dFJlY3Vyc2lvbi5oICovLAorCQkJCTVDQjEzRkQzMTc5REIzRkQwMDFGODUxRCAvKiBEZXRlY3RD
YWxsRGVwdGguaCAqLywKKwkJCQk1Q0IxM0ZEMjE3OURCM0ZEMDAxRjg1MUQgLyogRGV0ZWN0Q2Fs
bERlcHRoLmNwcCAqLywKIAkJCQlBMjY1NjdCMDE1OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25vc3Rp
Y3MuY3BwICovLAogCQkJCUEyNjU2N0IxMTU5QzIxQjEwMDM5ODUzOSAvKiBEaWFnbm9zdGljcy5o
ICovLAogCQkJCUEyNjU2N0IyMTU5QzIxQjEwMDM5ODUzOSAvKiBEaXJlY3RpdmVIYW5kbGVyLmNw
cCAqLywKQEAgLTUzMCw3ICs1MzAsNiBAQAogCQkJCUEyNjU2ODNBMTU5QzIzRTEwMDM5ODUzOSAv
KiBEZXBlbmRlbmN5R3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjU2ODNDMTU5QzIzRTEw
MDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MjY1NjgzRTE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggaW4gSGVh
ZGVycyAqLywKLQkJCQk0OTk1MUMwQzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1NjdCQzE1OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25v
c3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEFEMTY5NzRERUQwMDZGQUE1QSAvKiBE
aWFnbm9zdGljc0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjU2N0JFMTU5QzIxQjEwMDM5
ODUzOSAvKiBEaXJlY3RpdmVIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTU2OSw2ICs1Njgs
NyBAQAogCQkJCTkwRDlCMTE4MTJFMTFERDYwMDJENDI1NSAvKiBWYXJpYWJsZUluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUEyNjRGOENBMTY5NzRFMkEwMDZGQUE1QSAvKiBWYXJpYWJsZVBhY2tl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBEOUIxMUExMkUxMURENjAwMkQ0MjU1IC8qIFZlcnNp
b25HTFNMLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0IxM0ZENTE3OURCM0ZEMDAxRjg1MUQgLyog
RGV0ZWN0Q2FsbERlcHRoLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTYzNSw3ICs2MzUsNiBAQAogCQkJ
CUEyNjU2ODNCMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUEyNjU2ODNEMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5
R3JhcGhPdXRwdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NTY4M0YxNTlDMjNFMTAwMzk4
NTM5IC8qIERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ5
OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTI2NTY3QkIxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUEyNjRGOEFDMTY5NzRERUQwMDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NTY3QkQxNTlDMjFCMTAwMzk4NTM5IC8qIERp
cmVjdGl2ZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC02ODEsNiArNjgwLDcgQEAKIAkJ
CQk5MEQ5QjExNzEyRTExREQ2MDAyRDQyNTUgLyogVmFyaWFibGVJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUEyNjRGOEM5MTY5NzRFMkEwMDZGQUE1QSAvKiBWYXJpYWJsZVBhY2tlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5MEQ5QjExOTEyRTExREQ2MDAyRDQyNTUgLyogVmVyc2lvbkdM
U0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNCMTNGRDQxNzlEQjNGRDAwMUY4NTFEIC8qIERl
dGVjdENhbGxEZXB0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL2luY2x1ZGUvRUdML2VnbGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbGV4dC5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzA2LDYgKzMwNiwxMiBAQCB0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5F
R0xRCiAjZGVmaW5lIEVHTF9TT0ZUV0FSRV9ESVNQTEFZX0FOR0xFICgoRUdMTmF0aXZlRGlzcGxh
eVR5cGUpLTEpCiAjZW5kaWYKIAorI2lmbmRlZiBFR0xfQU5HTEVfZGlyZWN0M2RfZGlzcGxheQor
I2RlZmluZSBFR0xfQU5HTEVfZGlyZWN0M2RfZGlzcGxheSAxCisjZGVmaW5lIEVHTF9EM0QxMV9F
TFNFX0QzRDlfRElTUExBWV9BTkdMRSAoKEVHTE5hdGl2ZURpc3BsYXlUeXBlKS0yKQorI2RlZmlu
ZSBFR0xfRDNEMTFfT05MWV9ESVNQTEFZX0FOR0xFICgoRUdMTmF0aXZlRGlzcGxheVR5cGUpLTMp
CisjZW5kaWYKKwogI2lmbmRlZiBFR0xfQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFy
ZV9oYW5kbGUKICNkZWZpbmUgRUdMX0FOR0xFX3N1cmZhY2VfZDNkX3RleHR1cmVfMmRfc2hhcmVf
aGFuZGxlIDEKICNkZWZpbmUgRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRQkw
eDMyMDAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9n
bDJleHQuaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5j
bHVkZS9HTEVTMi9nbDJleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTU2LDYgKzU1Niw0NCBAQCB0
eXBlZGVmIHZvaWQqIEdMZWdsSW1hZ2VPRVM7CiAjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQx
NV9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VGCiAjZW5kaWYKIAorLyog
R0xfRVhUX2RyYXdfYnVmZmVycyAqLworI2lmbmRlZiBHTF9FWFRfZHJhd19idWZmZXJzCisjZGVm
aW5lIEdMX01BWF9EUkFXX0JVRkZFUlNfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4ODgyNAorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjBfRVhUICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDg4MjUKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxX0VYVCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI2CisjZGVmaW5lIEdMX0RS
QVdfQlVGRkVSMl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgy
NworI2RlZmluZSBHTF9EUkFXX0JVRkZFUjNfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDg4MjgKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVI0X0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI5CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVS
NV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyQQorI2RlZmlu
ZSBHTF9EUkFXX0JVRkZFUjZfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDg4MkIKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVI3X0VYVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4ODJDCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSOF9FWFQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyRAorI2RlZmluZSBHTF9EUkFX
X0JVRkZFUjlfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MkUK
KyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxMF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4ODJGCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTFfRVhUICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgzMAorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjEy
X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MzEKKyNkZWZpbmUg
R0xfRFJBV19CVUZGRVIxM19FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4ODMyCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTRfRVhUICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODgzMworI2RlZmluZSBHTF9EUkFXX0JVRkZFUjE1X0VYVCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MzQKKyNkZWZpbmUgR0xfQ09MT1Jf
QVRUQUNITUVOVDBfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0UwCisj
ZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4OENFMQorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMl9FWFQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDhDRTIKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVO
VDNfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0UzCisjZGVmaW5lIEdM
X0NPTE9SX0FUVEFDSE1FTlQ0X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
OENFNAorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UNV9FWFQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDhDRTUKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDZfRVhUICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U2CisjZGVmaW5lIEdMX0NPTE9SX0FU
VEFDSE1FTlQ3X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFNworI2Rl
ZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UOF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDhDRTgKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDlfRVhUICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4Q0U5CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQx
MF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFQQorI2RlZmluZSBHTF9D
T0xPUl9BVFRBQ0hNRU5UMTFfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhD
RUIKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDEyX0VYVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4Q0VDCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxM19FWFQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFRAorI2RlZmluZSBHTF9DT0xPUl9BVFRB
Q0hNRU5UMTRfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRUUKKyNkZWZp
bmUgR0xfQ09MT1JfQVRUQUNITUVOVDE1X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4Q0VGCisjZGVmaW5lIEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4OENERgorI2VuZGlmCisKIC8qIEdMX05WX2Zib19jb2xvcl9h
dHRhY2htZW50cyAqLwogI2lmbmRlZiBHTF9OVl9mYm9fY29sb3JfYXR0YWNobWVudHMKICNkZWZp
bmUgR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTX05WICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDhDREYKQEAgLTEzMzEsNiArMTM2OSwxNCBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xEcmF3QnVmZmVyCiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdCVUZG
RVJTTlZQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpOwogI2VuZGlmCiAKKyNp
Zm5kZWYgR0xfRVhUX2RyYXdfYnVmZmVycworI2RlZmluZSBHTF9FWFRfZHJhd19idWZmZXJzIDEK
KyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xEcmF3QnVmZmVyc0VYVCAoR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpOworI2VuZGlm
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdCVUZGRVJTRVhUUFJPQykgKEdM
c2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKTsKKyNlbmRpZgorCiAvKiBHTF9OVl9mYm9fY29s
b3JfYXR0YWNobWVudHMgKi8KICNpZm5kZWYgR0xfTlZfZmJvX2NvbG9yX2F0dGFjaG1lbnRzCiAj
ZGVmaW5lIEdMX05WX2Zib19jb2xvcl9hdHRhY2htZW50cyAxCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgJKHJldmlz
aW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9T
aGFkZXJMYW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTc4LDkgKzc4LDExIEBAIHR5cGVkZWYgZW51bSB7
CiB9IFNoU2hhZGVyU3BlYzsKIAogdHlwZWRlZiBlbnVtIHsKLSAgU0hfRVNTTF9PVVRQVVQgPSAw
eDhCNDUsCi0gIFNIX0dMU0xfT1VUUFVUID0gMHg4QjQ2LAotICBTSF9ITFNMX09VVFBVVCA9IDB4
OEI0NworICBTSF9FU1NMX09VVFBVVCAgID0gMHg4QjQ1LAorICBTSF9HTFNMX09VVFBVVCAgID0g
MHg4QjQ2LAorICBTSF9ITFNMX09VVFBVVCAgID0gMHg4QjQ3LAorICBTSF9ITFNMOV9PVVRQVVQg
ID0gMHg4QjQ3LAorICBTSF9ITFNMMTFfT1VUUFVUID0gMHg4QjQ4CiB9IFNoU2hhZGVyT3V0cHV0
OwogCiB0eXBlZGVmIGVudW0gewpAQCAtMTE2LDcgKzExOCw4IEBAIHR5cGVkZWYgZW51bSB7CiAg
IFNIX01BUFBFRF9OQU1FX01BWF9MRU5HVEggICAgICA9ICAweDYwMDAsCiAgIFNIX05BTUVfTUFY
X0xFTkdUSCAgICAgICAgICAgICA9ICAweDYwMDEsCiAgIFNIX0hBU0hFRF9OQU1FX01BWF9MRU5H
VEggICAgICA9ICAweDYwMDIsCi0gIFNIX0hBU0hFRF9OQU1FU19DT1VOVCAgICAgICAgICA9ICAw
eDYwMDMKKyAgU0hfSEFTSEVEX05BTUVTX0NPVU5UICAgICAgICAgID0gIDB4NjAwMywKKyAgU0hf
QUNUSVZFX1VOSUZPUk1TX0FSUkFZICAgICAgID0gIDB4NjAwNAogfSBTaFNoYWRlckluZm87CiAK
IC8vIENvbXBpbGUgb3B0aW9ucy4KQEAgLTE1OSw3ICsxNjIsMTMgQEAgdHlwZWRlZiBlbnVtIHsK
ICAgLy8gdmVjMjM0LCBvciBtYXQyMzQgdHlwZS4gVGhlIFNoQXJyYXlJbmRleENsYW1waW5nU3Ry
YXRlZ3kgZW51bSwKICAgLy8gc3BlY2lmaWVkIGluIHRoZSBTaEJ1aWx0SW5SZXNvdXJjZXMgd2hl
biBjb25zdHJ1Y3RpbmcgdGhlCiAgIC8vIGNvbXBpbGVyLCBzZWxlY3RzIHRoZSBzdHJhdGVneSBm
b3IgdGhlIGNsYW1waW5nIGltcGxlbWVudGF0aW9uLgotICBTSF9DTEFNUF9JTkRJUkVDVF9BUlJB
WV9CT1VORFMgPSAweDEwMDAKKyAgU0hfQ0xBTVBfSU5ESVJFQ1RfQVJSQVlfQk9VTkRTID0gMHgx
MDAwLAorCisgIC8vIFRoaXMgZmxhZyBsaW1pdHMgdGhlIGNvbXBsZXhpdHkgb2YgYW4gZXhwcmVz
c2lvbi4KKyAgU0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVYSVRZID0gMHgyMDAwLAorCisgIC8v
IFRoaXMgZmxhZyBsaW1pdHMgdGhlIGRlcHRoIG9mIHRoZSBjYWxsIHN0YWNrLgorICBTSF9MSU1J
VF9DQUxMX1NUQUNLX0RFUFRIID0gMHg0MDAwLAogfSBTaENvbXBpbGVPcHRpb25zOwogCiAvLyBE
ZWZpbmVzIGFsdGVybmF0ZSBzdHJhdGVnaWVzIGZvciBpbXBsZW1lbnRpbmcgYXJyYXkgaW5kZXgg
Y2xhbXBpbmcuCkBAIC0yMDksNiArMjE4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKICAgICBpbnQgT0VT
X0VHTF9pbWFnZV9leHRlcm5hbDsKICAgICBpbnQgQVJCX3RleHR1cmVfcmVjdGFuZ2xlOwogICAg
IGludCBFWFRfZHJhd19idWZmZXJzOworICAgIGludCBFWFRfZnJhZ19kZXB0aDsKIAogICAgIC8v
IFNldCB0byAxIGlmIGhpZ2hwIHByZWNpc2lvbiBpcyBzdXBwb3J0ZWQgaW4gdGhlIGZyYWdtZW50
IGxhbmd1YWdlLgogICAgIC8vIERlZmF1bHQgaXMgMC4KQEAgLTIyMiw2ICsyMzIsMTIgQEAgdHlw
ZWRlZiBzdHJ1Y3QKICAgICAvLyBTZWxlY3RzIGEgc3RyYXRlZ3kgdG8gdXNlIHdoZW4gaW1wbGVt
ZW50aW5nIGFycmF5IGluZGV4IGNsYW1waW5nLgogICAgIC8vIERlZmF1bHQgaXMgU0hfQ0xBTVBf
V0lUSF9DTEFNUF9JTlRSSU5TSUMuCiAgICAgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBB
cnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneTsKKworICAgIC8vIFRoZSBtYXhpbXVtIGNvbXBsZXhp
dHkgYW4gZXhwcmVzc2lvbiBjYW4gYmUuCisgICAgaW50IE1heEV4cHJlc3Npb25Db21wbGV4aXR5
OworCisgICAgLy8gVGhlIG1heGltdW0gZGVwdGggYSBjYWxsIHN0YWNrIGNhbiBiZS4KKyAgICBp
bnQgTWF4Q2FsbFN0YWNrRGVwdGg7CiB9IFNoQnVpbHRJblJlc291cmNlczsKIAogLy8KQEAgLTI0
OCw3ICsyNjQsNyBAQCB0eXBlZGVmIHZvaWQqIFNoSGFuZGxlOwogLy8gc3BlYzogU3BlY2lmaWVz
IHRoZSBsYW5ndWFnZSBzcGVjIHRoZSBjb21waWxlciBtdXN0IGNvbmZvcm0gdG8gLQogLy8gICAg
ICAgU0hfR0xFUzJfU1BFQyBvciBTSF9XRUJHTF9TUEVDLgogLy8gb3V0cHV0OiBTcGVjaWZpZXMg
dGhlIG91dHB1dCBjb2RlIHR5cGUgLSBTSF9FU1NMX09VVFBVVCwgU0hfR0xTTF9PVVRQVVQsCi0v
LyAgICAgICAgIG9yIFNIX0hMU0xfT1VUUFVULgorLy8gICAgICAgICBTSF9ITFNMOV9PVVRQVVQg
b3IgU0hfSExTTDExX09VVFBVVC4KIC8vIHJlc291cmNlczogU3BlY2lmaWVzIHRoZSBidWlsdC1p
biByZXNvdXJjZXMuCiBDT01QSUxFUl9FWFBPUlQgU2hIYW5kbGUgU2hDb25zdHJ1Y3RDb21waWxl
cigKICAgICBTaFNoYWRlclR5cGUgdHlwZSwKQEAgLTQxMSw2ICs0MjcsMTggQEAgQ09NUElMRVJf
RVhQT1JUIHZvaWQgU2hHZXROYW1lSGFzaGluZ0VudAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIqIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciogaGFzaGVkTmFtZSk7CiAKKy8vIFJldHVybnMgYSBwYXJh
bWV0ZXIgZnJvbSBhIGNvbXBpbGVkIHNoYWRlci4KKy8vIFBhcmFtZXRlcnM6CisvLyBoYW5kbGU6
IFNwZWNpZmllcyB0aGUgY29tcGlsZXIKKy8vIHBuYW1lOiBTcGVjaWZpZXMgdGhlIHBhcmFtZXRl
ciB0byBxdWVyeS4KKy8vIFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgZGVmaW5lZDoKKy8v
IFNIX0FDVElWRV9VTklGT1JNU19BUlJBWTogYW4gU1RMIHZlY3RvciBvZiBhY3RpdmUgdW5pZm9y
bXMuIFZhbGlkIG9ubHkgZm9yCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMU0wgb3V0
cHV0LgorLy8gcGFyYW1zOiBSZXF1ZXN0ZWQgcGFyYW1ldGVyCitDT01QSUxFUl9FWFBPUlQgdm9p
ZCBTaEdldEluZm9Qb2ludGVyKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJJbmZvIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiogcGFyYW1zKTsKKwogI2lmZGVmIF9fY3Bs
dXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21t
b24vUmVmQ291bnRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21tb24vUmVmQ291bnRPYmplY3QuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL1JlZkNvdW50T2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDQgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgogLy8K
IC8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaAkocmV2aXNpb24gMTUyOTc5
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTksMTIgKzksMzkgQEAKICNpZm5kZWYgQ09NTU9OX0FOR0xFVVRJTFNf
SF8KICNkZWZpbmUgQ09NTU9OX0FOR0xFVVRJTFNfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgor
CiAvLyBBIG1hY3JvIHRvIGRpc2FsbG93IHRoZSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBvcGVyYXRv
cj0gZnVuY3Rpb25zCiAvLyBUaGlzIG11c3QgYmUgdXNlZCBpbiB0aGUgcHJpdmF0ZTogZGVjbGFy
YXRpb25zIGZvciBhIGNsYXNzCiAjZGVmaW5lIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUeXBl
TmFtZSkgXAogICBUeXBlTmFtZShjb25zdCBUeXBlTmFtZSYpOyAgICAgICAgICAgICAgIFwKICAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgVHlwZU5hbWUmKQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dW5zaWduZWQgaW50IE4+CitpbmxpbmUgdW5zaWduZWQgaW50IEFycmF5U2l6ZShUKCYpW05dKQor
eworICAgIHJldHVybiBOOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdW5zaWduZWQgaW50
IE4+Cit2b2lkIFNhZmVSZWxlYXNlKFQgKCZyZXNvdXJjZUJsb2NrKVtOXSkKK3sKKyAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IE47IGkrKykKKyAgICB7CisgICAgICAgIFNhZmVSZWxl
YXNlKHJlc291cmNlQmxvY2tbaV0pOworICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Cit2b2lkIFNhZmVSZWxlYXNlKFQmIHJlc291cmNlKQoreworICAgIGlmIChyZXNvdXJjZSkKKyAg
ICB7CisgICAgICAgIHJlc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIHJlc291cmNlID0gTlVM
TDsKKyAgICB9Cit9CisKICNpZiBkZWZpbmVkKF9NU0NfVkVSKQogI2RlZmluZSBzbnByaW50ZiBf
c25wcmludGYKICNlbmRpZgpAQCAtMjMsNCArNTAsNyBAQAogI2RlZmluZSBWRU5ET1JfSURfSU5U
RUwgMHg4MDg2CiAjZGVmaW5lIFZFTkRPUl9JRF9OVklESUEgMHgxMERFCiAKKyNkZWZpbmUgR0xf
QkdSQTRfQU5HTEVYIDB4NkFCQworI2RlZmluZSBHTF9CR1I1X0ExX0FOR0xFWCAweDZBQkQKKwog
I2VuZGlmIC8vIENPTU1PTl9BTkdMRVVUSUxTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcsMTAgKzcsNiBAQAogLy8gZGVidWcuY3BwOiBEZWJ1Z2dpbmcgdXRpbGl0aWVzLgogCiAjaW5j
bHVkZSAiY29tbW9uL2RlYnVnLmgiCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0
ZGFyZy5oPgotCiAjaW5jbHVkZSAiY29tbW9uL3N5c3RlbS5oIgogI2luY2x1ZGUgPGQzZDkuaD4K
IApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuaAkocmV2
aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSwxMyBAQCBuYW1lc3BhY2UgZ2wKICAgICAj
ZGVmaW5lIFVOUkVBQ0hBQkxFKCkgRVJSKCJcdCEgVW5yZWFjaGFibGUgcmVhY2hlZDogJXMoJWQp
XG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKQogI2VuZGlmCiAKKy8vIEEgbWFjcm8gdGhhdCBk
ZXRlcm1pbmVzIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHJ1bnRpbWUgdHlwZS4KKyNp
ZiAhZGVmaW5lZChOREVCVUcpICYmICghZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfQ1BQ
UlRUSSkpCisjZGVmaW5lIEhBU19EWU5BTUlDX1RZUEUodHlwZSwgb2JqKSAoZHluYW1pY19jYXN0
PHR5cGUgPihvYmopICE9IE5VTEwpCisjZWxzZQorI2RlZmluZSBIQVNfRFlOQU1JQ19UWVBFKHR5
cGUsIG9iaikgdHJ1ZQorI2VuZGlmCisKIC8vIEEgbWFjcm8gZnVuY3Rpb25pbmcgYXMgYSBjb21w
aWxlLXRpbWUgYXNzZXJ0IHRvIHZhbGlkYXRlIGNvbnN0YW50IGNvbmRpdGlvbnMKICNkZWZpbmUg
TUVUQV9BU1NFUlQoY29uZGl0aW9uKSB0eXBlZGVmIGludCBDT01QSUxFX1RJTUVfQVNTRVJUXyMj
X19MSU5FX19bc3RhdGljX2Nhc3Q8Ym9vbD4oY29uZGl0aW9uKT8xOi0xXQogCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtLmgJKHJldmlzaW9uIDE1Mjk3
OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0LDEwICsxNCw2IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KLSNpbmNsdWRlIDxkM2Q5Lmg+Ci0jaW5jbHVkZSA8RDNEY29tcGlsZXIuaD4KLSNpbmNsdWRl
IDxkM2Q5dHlwZXMuaD4KLSNpbmNsdWRlIDxtbXN5c3RlbS5oPgogCiAjaWYgZGVmaW5lZChtaW4p
CiAjdW5kZWYgbWluCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3Zl
cnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9u
L3ZlcnNpb24uaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbW1vbi92ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAjZGVm
aW5lIE1BSk9SX1ZFUlNJT04gMQotI2RlZmluZSBNSU5PUl9WRVJTSU9OIDAKKyNkZWZpbmUgTUlO
T1JfVkVSU0lPTiAyCiAjZGVmaW5lIEJVSUxEX1ZFUlNJT04gMAotI2RlZmluZSBCVUlMRF9SRVZJ
U0lPTiAxOTg3CisjZGVmaW5lIEJVSUxEX1JFVklTSU9OIDI0MjYKIAogI2RlZmluZSBTVFJJTkdJ
RlkoeCkgI3gKICNkZWZpbmUgTUFDUk9fU1RSSU5HSUZZKHgpIFNUUklOR0lGWSh4KQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CYXNlVHlwZXMuaAko
cmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0Jhc2VUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCwxMCArOTAsNiBAQCBlbnVtIFRRdWFs
aWZpZXIKICAgICBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAgICAvLyB2ZXJ0ZXggc2hhZGVycyBv
bmx5ICByZWFkL3dyaXRlCiAgICAgRXZxVW5pZm9ybSwgICAgICAgLy8gUmVhZG9ubHksIHZlcnRl
eCBhbmQgZnJhZ21lbnQKIAotICAgIC8vIHBhY2svdW5wYWNrIGlucHV0IGFuZCBvdXRwdXQKLSAg
ICBFdnFJbnB1dCwKLSAgICBFdnFPdXRwdXQsCi0KICAgICAvLyBwYXJhbWV0ZXJzCiAgICAgRXZx
SW4sCiAgICAgRXZxT3V0LApAQCAtMTEyLDYgKzEwOCw3IEBAIGVudW0gVFF1YWxpZmllcgogICAg
IC8vIGJ1aWx0LWlucyB3cml0dGVuIGJ5IGZyYWdtZW50IHNoYWRlcgogICAgIEV2cUZyYWdDb2xv
ciwKICAgICBFdnFGcmFnRGF0YSwKKyAgICBFdnFGcmFnRGVwdGgsCiAKICAgICAvLyBlbmQgb2Yg
bGlzdAogICAgIEV2cUxhc3QKQEAgLTEzNywxNCArMTM0LDEzIEBAIGlubGluZSBjb25zdCBjaGFy
KiBnZXRRdWFsaWZpZXJTdHJpbmcoVFEKICAgICBjYXNlIEV2cUluOiAgICAgICAgICAgICByZXR1
cm4gImluIjsgICAgICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFPdXQ6ICAgICAgICAgICAg
cmV0dXJuICJvdXQiOyAgICAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxSW5PdXQ6ICAgICAg
ICAgIHJldHVybiAiaW5vdXQiOyAgICAgICAgICBicmVhazsKLSAgICBjYXNlIEV2cUlucHV0OiAg
ICAgICAgICByZXR1cm4gImlucHV0IjsgICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFPdXRw
dXQ6ICAgICAgICAgcmV0dXJuICJvdXRwdXQiOyAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZx
UG9zaXRpb246ICAgICAgIHJldHVybiAiUG9zaXRpb24iOyAgICAgICBicmVhazsKICAgICBjYXNl
IEV2cVBvaW50U2l6ZTogICAgICByZXR1cm4gIlBvaW50U2l6ZSI7ICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBFdnFGcmFnQ29vcmQ6ICAgICAgcmV0dXJuICJGcmFnQ29vcmQiOyAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6ICAgIHJldHVybiAiRnJvbnRGYWNpbmciOyAgICBicmVh
azsKICAgICBjYXNlIEV2cUZyYWdDb2xvcjogICAgICByZXR1cm4gIkZyYWdDb2xvciI7ICAgICAg
YnJlYWs7CiAgICAgY2FzZSBFdnFGcmFnRGF0YTogICAgICAgcmV0dXJuICJGcmFnRGF0YSI7ICAg
ICAgYnJlYWs7CisgICAgY2FzZSBFdnFGcmFnRGVwdGg6ICAgICAgcmV0dXJuICJGcmFnRGVwdGgi
OyAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgcmV0dXJuICJ1bmtub3du
IHF1YWxpZmllciI7CiAgICAgfQogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0NvZGVHZW5ITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkhMU0wuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkhMU0wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KIC8vCkBAIC0xNCw5ICsxNCwxMSBAQAogVENvbXBpbGVyKiBDb25zdHJ1Y3RDb21waWxl
cigKICAgICBTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIFNoU2hhZGVyT3V0
cHV0IG91dHB1dCkKIHsKLSAgc3dpdGNoIChvdXRwdXQpIHsKLSAgICBjYXNlIFNIX0hMU0xfT1VU
UFVUOgotICAgICAgcmV0dXJuIG5ldyBUcmFuc2xhdG9ySExTTCh0eXBlLCBzcGVjKTsKKyAgc3dp
dGNoIChvdXRwdXQpCisgIHsKKyAgICBjYXNlIFNIX0hMU0w5X09VVFBVVDoKKyAgICBjYXNlIFNI
X0hMU0wxMV9PVVRQVVQ6CisgICAgICByZXR1cm4gbmV3IFRyYW5zbGF0b3JITFNMKHR5cGUsIHNw
ZWMsIG91dHB1dCk7CiAgICAgZGVmYXVsdDoKICAgICAgIHJldHVybiBOVUxMOwogICB9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tbW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCShyZXZp
c2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29t
bW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0LDI0ICsxNCwxMiBAQAogCiAjaW5jbHVkZSAiY29t
cGlsZXIvUG9vbEFsbG9jLmgiCiAKLS8vIFdlIG5lZWQgdHdvIHBpZWNlcyBvZiBpbmZvcm1hdGlv
biB0byByZXBvcnQgZXJyb3JzL3dhcm5pbmdzIC0gc3RyaW5nIGFuZAotLy8gbGluZSBudW1iZXIu
IFdlIGVuY29kZSB0aGVzZSBpbnRvIGEgc2luZ2xlIGludCBzbyB0aGF0IGl0IGNhbiBiZSBlYXNp
bHkKLS8vIGluY3JlbWVudGVkL2RlY3JlbWVudGVkIGJ5IGxleGVyLiBUaGUgcmlnaHQgU09VUkNF
X0xPQ19MSU5FX1NJWkUgYml0cyBzdG9yZQotLy8gbGluZSBudW1iZXIgd2hpbGUgdGhlIHJlc3Qg
c3RvcmUgdGhlIHN0cmluZyBudW1iZXIuIFNpbmNlIHRoZSBzaGFkZXJzIGFyZQotLy8gdXN1YWxs
eSBzbWFsbCwgd2Ugc2hvdWxkIG5vdCBydW4gb3V0IG9mIG1lbW9yeS4gU09VUkNFX0xPQ19MSU5F
X1NJWkUKLS8vIGNhbiBiZSBpbmNyZWFzZWQgdG8gYWxsZXZpYXRlIHRoaXMgaXNzdWUuCi10eXBl
ZGVmIGludCBUU291cmNlTG9jOwotY29uc3QgdW5zaWduZWQgaW50IFNPVVJDRV9MT0NfTElORV9T
SVpFID0gMTY7ICAvLyBpbiBiaXRzLgotY29uc3QgdW5zaWduZWQgaW50IFNPVVJDRV9MT0NfTElO
RV9NQVNLID0gKDEgPDwgU09VUkNFX0xPQ19MSU5FX1NJWkUpIC0gMTsKLQotaW5saW5lIFRTb3Vy
Y2VMb2MgRW5jb2RlU291cmNlTG9jKGludCBzdHJpbmcsIGludCBsaW5lKSB7Ci0gICAgcmV0dXJu
IChzdHJpbmcgPDwgU09VUkNFX0xPQ19MSU5FX1NJWkUpIHwgKGxpbmUgJiBTT1VSQ0VfTE9DX0xJ
TkVfTUFTSyk7Ci19Ci0KLWlubGluZSB2b2lkIERlY29kZVNvdXJjZUxvYyhUU291cmNlTG9jIGxv
YywgaW50KiBzdHJpbmcsIGludCogbGluZSkgewotICAgIGlmIChzdHJpbmcpICpzdHJpbmcgPSBs
b2MgPj4gU09VUkNFX0xPQ19MSU5FX1NJWkU7Ci0gICAgaWYgKGxpbmUpICpsaW5lID0gbG9jICYg
U09VUkNFX0xPQ19MSU5FX01BU0s7Ci19CitzdHJ1Y3QgVFNvdXJjZUxvYyB7CisgICAgaW50IGZp
cnN0X2ZpbGU7CisgICAgaW50IGZpcnN0X2xpbmU7CisgICAgaW50IGxhc3RfZmlsZTsKKyAgICBp
bnQgbGFzdF9saW5lOworfTsKIAogLy8KIC8vIFB1dCBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRF
IGluIGJhc2UgY2xhc3NlcyB0byBtYWtlIHRoZW0gdXNlIHRoaXMgc2NoZW1lLgpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwCShy
ZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDExIEBACiAvLwotLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KIAogI2luY2x1ZGUgImNvbXBpbGVyL0J1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgi
CisjaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvRm9yTG9vcFVucm9sbC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0luaXRpYWxpemUuaCIKICNp
bmNsdWRlICJjb21waWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmgiCkBAIC0yNyw1MSArMjcs
NiBAQCBib29sIGlzV2ViR0xCYXNlZFNwZWMoU2hTaGFkZXJTcGVjIHNwZWMpCiB9CiAKIG5hbWVz
cGFjZSB7Ci1ib29sIEluaXRpYWxpemVTeW1ib2xUYWJsZSgKLSAgICBjb25zdCBUQnVpbHRJblN0
cmluZ3MmIGJ1aWx0SW5TdHJpbmdzLAotICAgIFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNw
ZWMgc3BlYywgY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsCi0gICAgVEluZm9T
aW5rJiBpbmZvU2luaywgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSkKLXsKLSAgICBUSW50ZXJt
ZWRpYXRlIGludGVybWVkaWF0ZShpbmZvU2luayk7Ci0gICAgVEV4dGVuc2lvbkJlaGF2aW9yIGV4
dEJlaGF2aW9yOwotICAgIEluaXRFeHRlbnNpb25CZWhhdmlvcihyZXNvdXJjZXMsIGV4dEJlaGF2
aW9yKTsKLSAgICAvLyBUaGUgYnVpbHRpbnMgZGVsaWJlcmF0ZWx5IGRvbid0IHNwZWNpZnkgcHJl
Y2lzaW9ucyBmb3IgdGhlIGZ1bmN0aW9uCi0gICAgLy8gYXJndW1lbnRzIGFuZCByZXR1cm4gdHlw
ZXMuIEZvciB0aGF0IHJlYXNvbiB3ZSBkb24ndCB0cnkgdG8gY2hlY2sgdGhlbS4KLSAgICBUUGFy
c2VDb250ZXh0IHBhcnNlQ29udGV4dChzeW1ib2xUYWJsZSwgZXh0QmVoYXZpb3IsIGludGVybWVk
aWF0ZSwgdHlwZSwgc3BlYywgMCwgZmFsc2UsIE5VTEwsIGluZm9TaW5rKTsKLSAgICBwYXJzZUNv
bnRleHQuZnJhZ21lbnRQcmVjaXNpb25IaWdoID0gcmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9u
SGlnaCA9PSAxOwotCi0gICAgR2xvYmFsUGFyc2VDb250ZXh0ID0gJnBhcnNlQ29udGV4dDsKLQot
ICAgIGFzc2VydChzeW1ib2xUYWJsZS5pc0VtcHR5KCkpOyAgICAgICAKLSAgICAvLwotICAgIC8v
IFBhcnNlIHRoZSBidWlsdC1pbnMuICBUaGlzIHNob3VsZCBvbmx5IGhhcHBlbiBvbmNlIHBlcgot
ICAgIC8vIGxhbmd1YWdlIHN5bWJvbCB0YWJsZS4KLSAgICAvLwotICAgIC8vIFB1c2ggdGhlIHN5
bWJvbCB0YWJsZSB0byBnaXZlIGl0IGFuIGluaXRpYWwgc2NvcGUuICBUaGlzCi0gICAgLy8gcHVz
aCBzaG91bGQgbm90IGhhdmUgYSBjb3JyZXNwb25kaW5nIHBvcCwgc28gdGhhdCBidWlsdC1pbnMK
LSAgICAvLyBhcmUgcHJlc2VydmVkLCBhbmQgdGhlIHRlc3QgZm9yIGFuIGVtcHR5IHRhYmxlIGZh
aWxzLgotICAgIC8vCi0gICAgc3ltYm9sVGFibGUucHVzaCgpOwotCi0gICAgZm9yIChUQnVpbHRJ
blN0cmluZ3M6OmNvbnN0X2l0ZXJhdG9yIGkgPSBidWlsdEluU3RyaW5ncy5iZWdpbigpOyBpICE9
IGJ1aWx0SW5TdHJpbmdzLmVuZCgpOyArK2kpCi0gICAgewotICAgICAgICBjb25zdCBjaGFyKiBi
dWlsdEluU2hhZGVycyA9IGktPmNfc3RyKCk7Ci0gICAgICAgIGludCBidWlsdEluTGVuZ3RocyA9
IHN0YXRpY19jYXN0PGludD4oaS0+c2l6ZSgpKTsKLSAgICAgICAgaWYgKGJ1aWx0SW5MZW5ndGhz
IDw9IDApCi0gICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKFBhUGFyc2VTdHJpbmdz
KDEsICZidWlsdEluU2hhZGVycywgJmJ1aWx0SW5MZW5ndGhzLCAmcGFyc2VDb250ZXh0KSAhPSAw
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeElu
dGVybmFsRXJyb3IsICJVbmFibGUgdG8gcGFyc2UgYnVpbHQtaW5zIik7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBJZGVudGlmeUJ1aWx0SW5zKHR5
cGUsIHNwZWMsIHJlc291cmNlcywgc3ltYm9sVGFibGUpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KIGNsYXNzIFRTY29wZWRQb29sQWxsb2NhdG9yIHsKIHB1YmxpYzoKICAgICBUU2NvcGVkUG9v
bEFsbG9jYXRvcihUUG9vbEFsbG9jYXRvciogYWxsb2NhdG9yLCBib29sIHB1c2hQb3ApCkBAIC0x
MDMsNiArNTgsOSBAQCBUU2hIYW5kbGVCYXNlOjp+VFNoSGFuZGxlQmFzZSgpIHsKIFRDb21waWxl
cjo6VENvbXBpbGVyKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYykKICAgICA6
IHNoYWRlclR5cGUodHlwZSksCiAgICAgICBzaGFkZXJTcGVjKHNwZWMpLAorICAgICAgbWF4VW5p
Zm9ybVZlY3RvcnMoMCksCisgICAgICBtYXhFeHByZXNzaW9uQ29tcGxleGl0eSgwKSwKKyAgICAg
IG1heENhbGxTdGFja0RlcHRoKDApLAogICAgICAgZnJhZ21lbnRQcmVjaXNpb25IaWdoKGZhbHNl
KSwKICAgICAgIGNsYW1waW5nU3RyYXRlZ3koU0hfQ0xBTVBfV0lUSF9DTEFNUF9JTlRSSU5TSUMp
LAogICAgICAgYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IodHlwZSkKQEAgLTEyMSw2ICs3OSw4IEBA
IGJvb2wgVENvbXBpbGVyOjpJbml0KGNvbnN0IFNoQnVpbHRJblJlc28KICAgICBtYXhVbmlmb3Jt
VmVjdG9ycyA9IChzaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpID8KICAgICAgICAgcmVz
b3VyY2VzLk1heFZlcnRleFVuaWZvcm1WZWN0b3JzIDoKICAgICAgICAgcmVzb3VyY2VzLk1heEZy
YWdtZW50VW5pZm9ybVZlY3RvcnM7CisgICAgbWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkgPSByZXNv
dXJjZXMuTWF4RXhwcmVzc2lvbkNvbXBsZXhpdHk7CisgICAgbWF4Q2FsbFN0YWNrRGVwdGggPSBy
ZXNvdXJjZXMuTWF4Q2FsbFN0YWNrRGVwdGg7CiAgICAgVFNjb3BlZFBvb2xBbGxvY2F0b3Igc2Nv
cGVkQWxsb2MoJmFsbG9jYXRvciwgZmFsc2UpOwogCiAgICAgLy8gR2VuZXJhdGUgYnVpbHQtaW4g
c3ltYm9sIHRhYmxlLgpAQCAtMTcwLDggKzEzMCwxMCBAQCBib29sIFRDb21waWxlcjo6Y29tcGls
ZShjb25zdCBjaGFyKiBjb25zCiAgICAgLy8gV2UgcHJlc2VydmUgc3ltYm9scyBhdCB0aGUgYnVp
bHQtaW4gbGV2ZWwgZnJvbSBjb21waWxlLXRvLWNvbXBpbGUuCiAgICAgLy8gU3RhcnQgcHVzaGlu
ZyB0aGUgdXNlci1kZWZpbmVkIHN5bWJvbHMgYXQgZ2xvYmFsIGxldmVsLgogICAgIHN5bWJvbFRh
YmxlLnB1c2goKTsKLSAgICBpZiAoIXN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSkKLSAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiV3Jvbmcgc3lt
Ym9sIHRhYmxlIGxldmVsIik7CisgICAgaWYgKCFzeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkp
IHsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEludGVybmFsRXJyb3IpOwor
ICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJXcm9uZyBzeW1ib2wgdGFibGUgbGV2ZWwiOworICAg
IH0KIAogICAgIC8vIFBhcnNlIHNoYWRlci4KICAgICBib29sIHN1Y2Nlc3MgPQpAQCAtMTgyLDcg
KzE0NCw3IEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAg
ICAgc3VjY2VzcyA9IGludGVybWVkaWF0ZS5wb3N0UHJvY2Vzcyhyb290KTsKIAogICAgICAgICBp
ZiAoc3VjY2VzcykKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBkZXRlY3RSZWN1cnNpb24ocm9vdCk7
CisgICAgICAgICAgICBzdWNjZXNzID0gZGV0ZWN0Q2FsbERlcHRoKHJvb3QsIGluZm9TaW5rLCAo
Y29tcGlsZU9wdGlvbnMgJiBTSF9MSU1JVF9DQUxMX1NUQUNLX0RFUFRIKSAhPSAwKTsKIAogICAg
ICAgICBpZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9WQUxJREFURV9MT09QX0lO
REVYSU5HKSkKICAgICAgICAgICAgIHN1Y2Nlc3MgPSB2YWxpZGF0ZUxpbWl0YXRpb25zKHJvb3Qp
OwpAQCAtMjA1LDYgKzE2NywxMCBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFy
KiBjb25zCiAgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX0NMQU1Q
X0lORElSRUNUX0FSUkFZX0JPVU5EUykpCiAgICAgICAgICAgICBhcnJheUJvdW5kc0NsYW1wZXIu
TWFya0luZGlyZWN0QXJyYXlCb3VuZHNGb3JDbGFtcGluZyhyb290KTsKIAorICAgICAgICAvLyBE
aXNhbGxvdyBleHByZXNzaW9ucyBkZWVtZWQgdG9vIGNvbXBsZXguCisgICAgICAgIGlmIChzdWNj
ZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSkp
CisgICAgICAgICAgICBzdWNjZXNzID0gbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShyb290KTsK
KwogICAgICAgICAvLyBDYWxsIG1hcExvbmdWYXJpYWJsZU5hbWVzKCkgYmVmb3JlIGNvbGxlY3RB
dHRyaWJzVW5pZm9ybXMoKSBzbyBpbgogICAgICAgICAvLyBjb2xsZWN0QXR0cmlic1VuaWZvcm1z
KCkgd2UgYWxyZWFkeSBoYXZlIHRoZSBtYXBwZWQgc3ltYm9sIG5hbWVzIGFuZAogICAgICAgICAv
LyB3ZSBjb3VsZCBjb21wb3NpdGUgbWFwcGVkIGFuZCBvcmlnaW5hbCB2YXJpYWJsZSBuYW1lcy4K
QEAgLTIxNyw3ICsxODMsOCBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBj
b25zCiAgICAgICAgICAgICBpZiAoY29tcGlsZU9wdGlvbnMgJiBTSF9FTkZPUkNFX1BBQ0tJTkdf
UkVTVFJJQ1RJT05TKSB7CiAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGVuZm9yY2VQYWNraW5n
UmVzdHJpY3Rpb25zKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsICJ0b28gbWFu
eSB1bmlmb3JtcyIpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChF
UHJlZml4RXJyb3IpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJ0b28g
bWFueSB1bmlmb3JtcyI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yMzksMTMgKzIwNiw0MiBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBj
aGFyKiBjb25zCiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKLWJvb2wgVENvbXBpbGVyOjpJbml0
QnVpbHRJblN5bWJvbFRhYmxlKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQor
Ym9vbCBUQ29tcGlsZXI6OkluaXRCdWlsdEluU3ltYm9sVGFibGUoY29uc3QgU2hCdWlsdEluUmVz
b3VyY2VzICZyZXNvdXJjZXMpCiB7Ci0gICAgVEJ1aWx0SW5zIGJ1aWx0SW5zOworICAgIGNvbXBp
bGVSZXNvdXJjZXMgPSByZXNvdXJjZXM7CisKKyAgICBhc3NlcnQoc3ltYm9sVGFibGUuaXNFbXB0
eSgpKTsKKyAgICBzeW1ib2xUYWJsZS5wdXNoKCk7CiAKLSAgICBidWlsdElucy5pbml0aWFsaXpl
KHNoYWRlclR5cGUsIHNoYWRlclNwZWMsIHJlc291cmNlcyk7Ci0gICAgcmV0dXJuIEluaXRpYWxp
emVTeW1ib2xUYWJsZShidWlsdElucy5nZXRCdWlsdEluU3RyaW5ncygpLAotICAgICAgICBzaGFk
ZXJUeXBlLCBzaGFkZXJTcGVjLCByZXNvdXJjZXMsIGluZm9TaW5rLCBzeW1ib2xUYWJsZSk7Cisg
ICAgVFB1YmxpY1R5cGUgaW50ZWdlcjsKKyAgICBpbnRlZ2VyLnR5cGUgPSBFYnRJbnQ7CisgICAg
aW50ZWdlci5zaXplID0gMTsKKyAgICBpbnRlZ2VyLm1hdHJpeCA9IGZhbHNlOworICAgIGludGVn
ZXIuYXJyYXkgPSBmYWxzZTsKKworICAgIFRQdWJsaWNUeXBlIGZsb2F0aW5nUG9pbnQ7CisgICAg
ZmxvYXRpbmdQb2ludC50eXBlID0gRWJ0RmxvYXQ7CisgICAgZmxvYXRpbmdQb2ludC5zaXplID0g
MTsKKyAgICBmbG9hdGluZ1BvaW50Lm1hdHJpeCA9IGZhbHNlOworICAgIGZsb2F0aW5nUG9pbnQu
YXJyYXkgPSBmYWxzZTsKKworICAgIHN3aXRjaChzaGFkZXJUeXBlKQorICAgIHsKKyAgICAgIGNh
c2UgU0hfRlJBR01FTlRfU0hBREVSOgorICAgICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJl
Y2lzaW9uKGludGVnZXIsIEVicE1lZGl1bSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBT
SF9WRVJURVhfU0hBREVSOgorICAgICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9u
KGludGVnZXIsIEVicEhpZ2gpOworICAgICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lz
aW9uKGZsb2F0aW5nUG9pbnQsIEVicEhpZ2gpOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1
bHQ6IGFzc2VydChmYWxzZSAmJiAiTGFuZ3VhZ2Ugbm90IHN1cHBvcnRlZCIpOworICAgIH0KKwor
ICAgIEluc2VydEJ1aWx0SW5GdW5jdGlvbnMoc2hhZGVyVHlwZSwgc2hhZGVyU3BlYywgcmVzb3Vy
Y2VzLCBzeW1ib2xUYWJsZSk7CisKKyAgICBJZGVudGlmeUJ1aWx0SW5zKHNoYWRlclR5cGUsIHNo
YWRlclNwZWMsIHJlc291cmNlcywgc3ltYm9sVGFibGUpOworCisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHZvaWQgVENvbXBpbGVyOjpjbGVhclJlc3VsdHMoKQpAQCAtMjYzLDE4ICsyNTksMjQgQEAg
dm9pZCBUQ29tcGlsZXI6OmNsZWFyUmVzdWx0cygpCiAgICAgbmFtZU1hcC5jbGVhcigpOwogfQog
Ci1ib29sIFRDb21waWxlcjo6ZGV0ZWN0UmVjdXJzaW9uKFRJbnRlcm1Ob2RlKiByb290KQorYm9v
bCBUQ29tcGlsZXI6OmRldGVjdENhbGxEZXB0aChUSW50ZXJtTm9kZSogcm9vdCwgVEluZm9TaW5r
JiBpbmZvU2luaywgYm9vbCBsaW1pdENhbGxTdGFja0RlcHRoKQogewotICAgIERldGVjdFJlY3Vy
c2lvbiBkZXRlY3Q7CisgICAgRGV0ZWN0Q2FsbERlcHRoIGRldGVjdChpbmZvU2luaywgbGltaXRD
YWxsU3RhY2tEZXB0aCwgbWF4Q2FsbFN0YWNrRGVwdGgpOwogICAgIHJvb3QtPnRyYXZlcnNlKCZk
ZXRlY3QpOwotICAgIHN3aXRjaCAoZGV0ZWN0LmRldGVjdFJlY3Vyc2lvbigpKSB7Ci0gICAgICAg
IGNhc2UgRGV0ZWN0UmVjdXJzaW9uOjprRXJyb3JOb25lOgorICAgIHN3aXRjaCAoZGV0ZWN0LmRl
dGVjdENhbGxEZXB0aCgpKSB7CisgICAgICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JO
b25lOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgRGV0ZWN0UmVjdXJz
aW9uOjprRXJyb3JNaXNzaW5nTWFpbjoKLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4RXJyb3IsICJNaXNzaW5nIG1haW4oKSIpOworICAgICAgICBjYXNlIERldGVjdENh
bGxEZXB0aDo6a0Vycm9yTWlzc2luZ01haW46CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLnBy
ZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiTWlzc2lu
ZyBtYWluKCkiOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNlIERldGVj
dENhbGxEZXB0aDo6a0Vycm9yUmVjdXJzaW9uOgorICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5w
cmVmaXgoRVByZWZpeEVycm9yKTsKKyAgICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIkZ1bmN0
aW9uIHJlY3Vyc2lvbiBkZXRlY3RlZCI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIGNhc2UgRGV0ZWN0UmVjdXJzaW9uOjprRXJyb3JSZWN1cnNpb246Ci0gICAgICAgICAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRl
dGVjdGVkIik7CisgICAgICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JNYXhEZXB0aEV4
Y2VlZGVkOgorICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9yKTsK
KyAgICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIkZ1bmN0aW9uIGNhbGwgc3RhY2sgdG9vIGRl
ZXAiOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKQEAgLTMyMCw2ICszMjIsMjggQEAgYm9vbCBUQ29tcGlsZXI6
OmVuZm9yY2VUaW1pbmdSZXN0cmljdGlvbgogICAgIH0KIH0KIAorYm9vbCBUQ29tcGlsZXI6Omxp
bWl0RXhwcmVzc2lvbkNvbXBsZXhpdHkoVEludGVybU5vZGUqIHJvb3QpCit7CisgICAgVEludGVy
bVRyYXZlcnNlciB0cmF2ZXJzZXI7CisgICAgcm9vdC0+dHJhdmVyc2UoJnRyYXZlcnNlcik7Cisg
ICAgVERlcGVuZGVuY3lHcmFwaCBncmFwaChyb290KTsKKworICAgIGZvciAoVEZ1bmN0aW9uQ2Fs
bFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGdyYXBoLmJlZ2luVXNlckRlZmluZWRGdW5j
dGlvbkNhbGxzKCk7CisgICAgICAgICBpdGVyICE9IGdyYXBoLmVuZFVzZXJEZWZpbmVkRnVuY3Rp
b25DYWxscygpOworICAgICAgICAgKytpdGVyKQorICAgIHsKKyAgICAgICAgVEdyYXBoRnVuY3Rp
b25DYWxsKiBzYW1wbGVyU3ltYm9sID0gKml0ZXI7CisgICAgICAgIFREZXBlbmRlbmN5R3JhcGhU
cmF2ZXJzZXIgZ3JhcGhUcmF2ZXJzZXI7CisgICAgICAgIHNhbXBsZXJTeW1ib2wtPnRyYXZlcnNl
KCZncmFwaFRyYXZlcnNlcik7CisgICAgfQorCisgICAgaWYgKHRyYXZlcnNlci5nZXRNYXhEZXB0
aCgpID4gbWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkpIHsKKyAgICAgICAgaW5mb1NpbmsuaW5mbyA8
PCAiRXhwcmVzc2lvbiB0b28gY29tcGxleC4iOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFRDb21waWxlcjo6ZW5mb3JjZUZyYWdtZW50
U2hhZGVyVGltaW5nUmVzdHJpY3Rpb25zKGNvbnN0IFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKQog
ewogICAgIFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcgcmVzdHJpY3RvcihpbmZvU2luay5p
bmZvKTsKQEAgLTM2Myw2ICszODcsMTEgQEAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBUQ29t
cGlsZXI6OmdldAogICAgIHJldHVybiBleHRlbnNpb25CZWhhdmlvcjsKIH0KIAorY29uc3QgU2hC
dWlsdEluUmVzb3VyY2VzJiBUQ29tcGlsZXI6OmdldFJlc291cmNlcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGNvbXBpbGVSZXNvdXJjZXM7Cit9CisKIGNvbnN0IEFycmF5Qm91bmRzQ2xhbXBlciYg
VENvbXBpbGVyOjpnZXRBcnJheUJvdW5kc0NsYW1wZXIoKSBjb25zdAogewogICAgIHJldHVybiBh
cnJheUJvdW5kc0NsYW1wZXI7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvQ29uc3RhbnRVbmlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9Db25zdGFudFVuaW9uLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db25zdGFudFVuaW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHly
aWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgogLy8KQEAgLTE0LDYgKzE0LDcgQEAgcHVibGljOgogICAgIENvbnN0YW50VW5pb24oKQogICAg
IHsKICAgICAgICAgaUNvbnN0ID0gMDsKKyAgICAgICAgdHlwZSA9IEVidFZvaWQ7CiAgICAgfQog
CiAgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKSAgICAg
ICAgCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2Fs
bERlcHRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE4NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVy
L0RldGVjdENhbGxEZXB0aC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCisKK0Rl
dGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYg
Zm5hbWUpCisgICAgOiBuYW1lKGZuYW1lKSwKKyAgICAgIHZpc2l0KFByZVZpc2l0KQoreworfQor
Citjb25zdCBUU3RyaW5nJiBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK3ZvaWQgRGV0ZWN0Q2FsbERlcHRoOjpG
dW5jdGlvbk5vZGU6OmFkZENhbGxlZSgKKyAgICBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9k
ZSogY2FsbGVlKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7
ICsraSkgeworICAgICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Cit9CisKK2ludCBE
ZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6ZGV0ZWN0Q2FsbERlcHRoKERldGVjdENhbGxE
ZXB0aCogZGV0ZWN0Q2FsbERlcHRoLCBpbnQgZGVwdGgpCit7CisgICAgQVNTRVJUKHZpc2l0ID09
IFByZVZpc2l0KTsKKyAgICBBU1NFUlQoZGV0ZWN0Q2FsbERlcHRoKTsKKworICAgIGludCBtYXhE
ZXB0aCA9IGRlcHRoOworICAgIHZpc2l0ID0gSW5WaXNpdDsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNhbGxlZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgc3dpdGNoIChjYWxsZWVzW2ld
LT52aXNpdCkgeworICAgICAgICAgICAgY2FzZSBJblZpc2l0OgorICAgICAgICAgICAgICAgIC8v
IGN5Y2xlIGRldGVjdGVkLCBpLmUuLCByZWN1cnNpb24gZGV0ZWN0ZWQuCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGtJbmZpbml0ZUNhbGxEZXB0aDsKKyAgICAgICAgICAgIGNhc2UgUG9zdFZpc2l0
OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQcmVWaXNpdDogewor
ICAgICAgICAgICAgICAgIC8vIENoZWNrIGJlZm9yZSB3ZSByZWN1cnNlIHNvIHdlIGRvbid0IGdv
IHRvbyBkZXB0aAorICAgICAgICAgICAgICAgIGlmIChkZXRlY3RDYWxsRGVwdGgtPmNoZWNrRXhj
ZWVkc01heERlcHRoKGRlcHRoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlcHRoOwor
ICAgICAgICAgICAgICAgIGludCBjYWxsRGVwdGggPSBjYWxsZWVzW2ldLT5kZXRlY3RDYWxsRGVw
dGgoZGV0ZWN0Q2FsbERlcHRoLCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAgIC8vIENoZWNr
IGFmdGVyIHdlIHJlY3Vyc2Ugc28gd2UgY2FuIGV4aXQgaW1tZWRpYXRlbHkgYW5kIHByb3ZpZGUg
aW5mby4KKyAgICAgICAgICAgICAgICBpZiAoZGV0ZWN0Q2FsbERlcHRoLT5jaGVja0V4Y2VlZHNN
YXhEZXB0aChjYWxsRGVwdGgpKSB7CisgICAgICAgICAgICAgICAgICAgIGRldGVjdENhbGxEZXB0
aC0+Z2V0SW5mb1NpbmsoKS5pbmZvIDw8ICI8LSIgPDwgY2FsbGVlc1tpXS0+Z2V0TmFtZSgpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbERlcHRoOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBtYXhEZXB0aCA9IHN0ZDo6bWF4KGNhbGxEZXB0aCwgbWF4RGVwdGgp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorICAgIHZpc2l0ID0gUG9zdFZpc2l0OworICAgIHJldHVy
biBtYXhEZXB0aDsKK30KKwordm9pZCBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6cmVz
ZXQoKQoreworICAgIHZpc2l0ID0gUHJlVmlzaXQ7Cit9CisKK0RldGVjdENhbGxEZXB0aDo6RGV0
ZWN0Q2FsbERlcHRoKFRJbmZvU2luayYgaW5mb1NpbmssIGJvb2wgbGltaXRDYWxsU3RhY2tEZXB0
aCwgaW50IG1heENhbGxTdGFja0RlcHRoKQorICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBm
YWxzZSwgdHJ1ZSwgZmFsc2UpLAorICAgICAgY3VycmVudEZ1bmN0aW9uKE5VTEwpLAorICAgICAg
aW5mb1NpbmsoaW5mb1NpbmspLAorICAgICAgbWF4RGVwdGgobGltaXRDYWxsU3RhY2tEZXB0aCA/
IG1heENhbGxTdGFja0RlcHRoIDogRnVuY3Rpb25Ob2RlOjprSW5maW5pdGVDYWxsRGVwdGgpCit7
Cit9CisKK0RldGVjdENhbGxEZXB0aDo6fkRldGVjdENhbGxEZXB0aCgpCit7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRlbGV0ZSBm
dW5jdGlvbnNbaV07Cit9CisKK2Jvb2wgRGV0ZWN0Q2FsbERlcHRoOjp2aXNpdEFnZ3JlZ2F0ZShW
aXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSogbm9kZSkKK3sKKyAgICBzd2l0Y2ggKG5vZGUt
PmdldE9wKCkpCisgICAgeworICAgICAgICBjYXNlIEVPcFByb3RvdHlwZToKKyAgICAgICAgICAg
IC8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgorICAgICAgICAgICAgLy8gRG9uJ3QgYWRkIEZ1bmN0
aW9uTm9kZSBoZXJlIGJlY2F1c2Ugbm9kZS0+Z2V0TmFtZSgpIGlzIHRoZQorICAgICAgICAgICAg
Ly8gdW5tYW5nbGVkIGZ1bmN0aW9uIG5hbWUuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBFT3BGdW5jdGlvbjogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4K
KyAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIGN1
cnJlbnRGdW5jdGlvbiA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOworICAg
ICAgICAgICAgICAgIGlmIChjdXJyZW50RnVuY3Rpb24gPT0gTlVMTCkgeworICAgICAgICAgICAg
ICAgICAgICBjdXJyZW50RnVuY3Rpb24gPSBuZXcgRnVuY3Rpb25Ob2RlKG5vZGUtPmdldE5hbWUo
KSk7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoX2JhY2soY3VycmVudEZ1bmN0
aW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKHZpc2l0ID09
IFBvc3RWaXNpdCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9IE5VTEw7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEVPcEZ1bmN0aW9uQ2FsbDogeworICAgICAgICAgICAgLy8gRnVuY3Rpb24gY2FsbC4KKyAgICAg
ICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIEZ1bmN0aW9u
Tm9kZSogZnVuYyA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAg
ICAgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9
IG5ldyBGdW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb25zLnB1c2hfYmFjayhmdW5jKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgaWYgKGN1cnJlbnRGdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1
bmN0aW9uLT5hZGRDYWxsZWUoZnVuYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIERldGVjdENhbGxEZXB0aDo6Y2hlY2tFeGNl
ZWRzTWF4RGVwdGgoaW50IGRlcHRoKQoreworICAgIHJldHVybiBkZXB0aCA+PSBtYXhEZXB0aDsK
K30KKwordm9pZCBEZXRlY3RDYWxsRGVwdGg6OnJlc2V0RnVuY3Rpb25Ob2RlcygpCit7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
ZnVuY3Rpb25zW2ldLT5yZXNldCgpOworICAgIH0KK30KKworRGV0ZWN0Q2FsbERlcHRoOjpFcnJv
ckNvZGUgRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbihGdW5jdGlv
bk5vZGUqIGZ1bmMpCit7CisgICAgY3VycmVudEZ1bmN0aW9uID0gTlVMTDsKKyAgICByZXNldEZ1
bmN0aW9uTm9kZXMoKTsKKworICAgIGludCBtYXhDYWxsRGVwdGggPSBmdW5jLT5kZXRlY3RDYWxs
RGVwdGgodGhpcywgMSk7CisKKyAgICBpZiAobWF4Q2FsbERlcHRoID09IEZ1bmN0aW9uTm9kZTo6
a0luZmluaXRlQ2FsbERlcHRoKQorICAgICAgICByZXR1cm4ga0Vycm9yUmVjdXJzaW9uOworCisg
ICAgaWYgKG1heENhbGxEZXB0aCA+PSBtYXhEZXB0aCkKKyAgICAgICAgcmV0dXJuIGtFcnJvck1h
eERlcHRoRXhjZWVkZWQ7CisKKyAgICByZXR1cm4ga0Vycm9yTm9uZTsKK30KKworRGV0ZWN0Q2Fs
bERlcHRoOjpFcnJvckNvZGUgRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGgoKQorewor
ICAgIGlmIChtYXhEZXB0aCAhPSBGdW5jdGlvbk5vZGU6OmtJbmZpbml0ZUNhbGxEZXB0aCkgewor
ICAgICAgICAvLyBDaGVjayBhbGwgZnVuY3Rpb25zIGJlY2F1c2UgdGhlIGRyaXZlciBtYXkgZmFp
bCBvbiB0aGVtCisgICAgICAgIC8vIFRPRE86IEJlZm9yZSBkZXRlY3RpbmdSZWN1cnNpb24sIHN0
cmlwIHVudXNlZCBmdW5jdGlvbnMuCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVu
Y3Rpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBFcnJvckNvZGUgZXJyb3IgPSBkZXRl
Y3RDYWxsRGVwdGhGb3JGdW5jdGlvbihmdW5jdGlvbnNbaV0pOworICAgICAgICAgICAgaWYgKGVy
cm9yICE9IGtFcnJvck5vbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgRnVuY3Rpb25Ob2RlKiBtYWluID0gZmluZEZ1bmN0
aW9uQnlOYW1lKCJtYWluKCIpOworICAgICAgICBpZiAobWFpbiA9PSBOVUxMKQorICAgICAgICAg
ICAgcmV0dXJuIGtFcnJvck1pc3NpbmdNYWluOworCisgICAgICAgIHJldHVybiBkZXRlY3RDYWxs
RGVwdGhGb3JGdW5jdGlvbihtYWluKTsKKyAgICB9CisKKyAgICByZXR1cm4ga0Vycm9yTm9uZTsK
K30KKworRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGUqIERldGVjdENhbGxEZXB0aDo6Zmlu
ZEZ1bmN0aW9uQnlOYW1lKAorICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUpCit7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGZ1
bmN0aW9uc1tpXS0+Z2V0TmFtZSgpID09IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b25zW2ldOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRl
Y3RDYWxsRGVwdGguaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLy8KKy8vIENvcHly
aWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworI2lmbmRlZiBDT01QSUxFUl9ERVRFQ1RfUkVDVVJTSU9OX0hfCisjZGVmaW5lIENP
TVBJTEVSX0RFVEVDVF9SRUNVUlNJT05fSF8KKworI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFu
Zy5oIgorCisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRp
YXRlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvVmFyaWFibGVJbmZvLmgiCisKK2NsYXNzIFRJbmZv
U2luazsKKworLy8gVHJhdmVyc2VzIGludGVybWVkaWF0ZSB0cmVlIHRvIGRldGVjdCBmdW5jdGlv
biByZWN1cnNpb24uCitjbGFzcyBEZXRlY3RDYWxsRGVwdGggOiBwdWJsaWMgVEludGVybVRyYXZl
cnNlciB7CitwdWJsaWM6CisgICAgZW51bSBFcnJvckNvZGUgeworICAgICAgICBrRXJyb3JNaXNz
aW5nTWFpbiwKKyAgICAgICAga0Vycm9yUmVjdXJzaW9uLAorICAgICAgICBrRXJyb3JNYXhEZXB0
aEV4Y2VlZGVkLAorICAgICAgICBrRXJyb3JOb25lCisgICAgfTsKKworICAgIERldGVjdENhbGxE
ZXB0aChUSW5mb1NpbmsmIGluZm9TeW5jLCBib29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgsIGludCBt
YXhDYWxsU3RhY2tEZXB0aCk7CisgICAgfkRldGVjdENhbGxEZXB0aCgpOworCisgICAgdmlydHVh
bCBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlKik7CisKKyAgICBi
b29sIGNoZWNrRXhjZWVkc01heERlcHRoKGludCBkZXB0aCk7CisKKyAgICBFcnJvckNvZGUgZGV0
ZWN0Q2FsbERlcHRoKCk7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0luZmluaXRlQ2FsbERlcHRoID0g
SU5UX01BWDsKKworICAgICAgICBGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5hbWUpOwor
CisgICAgICAgIGNvbnN0IFRTdHJpbmcmIGdldE5hbWUoKSBjb25zdDsKKworICAgICAgICAvLyBJ
ZiBhIGZ1bmN0aW9uIGlzIGFscmVhZHkgaW4gdGhlIGNhbGxlZSBsaXN0LCB0aGlzIGJlY29tZXMg
YSBuby1vcC4KKyAgICAgICAgdm9pZCBhZGRDYWxsZWUoRnVuY3Rpb25Ob2RlKiBjYWxsZWUpOwor
CisgICAgICAgIC8vIFJldHVybnMga0luaWZpbml0eUNhbGxEZXB0aCBpZiByZWN1cnNpdmUgZnVu
Y3Rpb24gY2FsbHMgYXJlIGRldGVjdGVkLgorICAgICAgICBpbnQgZGV0ZWN0Q2FsbERlcHRoKERl
dGVjdENhbGxEZXB0aCogZGV0ZWN0Q2FsbERlcHRoLCBpbnQgZGVwdGgpOworCisgICAgICAgIC8v
IFJlc2V0IHN0YXRlLgorICAgICAgICB2b2lkIHJlc2V0KCk7CisKKyAgICBwcml2YXRlOgorICAg
ICAgICAvLyBtYW5nbGVkIGZ1bmN0aW9uIG5hbWUgaXMgdW5pcXVlLgorICAgICAgICBUU3RyaW5n
IG5hbWU7CisKKyAgICAgICAgLy8gZnVuY3Rpb25zIHRoYXQgYXJlIGRpcmVjdGx5IGNhbGxlZCBi
eSB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBUVmVjdG9yPEZ1bmN0aW9uTm9kZSo+IGNhbGxlZXM7
CisKKyAgICAgICAgVmlzaXQgdmlzaXQ7CisgICAgfTsKKworICAgIEVycm9yQ29kZSBkZXRlY3RD
YWxsRGVwdGhGb3JGdW5jdGlvbihGdW5jdGlvbk5vZGUqIGZ1bmMpOworICAgIEZ1bmN0aW9uTm9k
ZSogZmluZEZ1bmN0aW9uQnlOYW1lKGNvbnN0IFRTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgcmVz
ZXRGdW5jdGlvbk5vZGVzKCk7CisKKyAgICBUSW5mb1NpbmsmIGdldEluZm9TaW5rKCkgeyByZXR1
cm4gaW5mb1Npbms7IH0KKworICAgIFRWZWN0b3I8RnVuY3Rpb25Ob2RlKj4gZnVuY3Rpb25zOwor
ICAgIEZ1bmN0aW9uTm9kZSogY3VycmVudEZ1bmN0aW9uOworICAgIFRJbmZvU2luayYgaW5mb1Np
bms7CisgICAgaW50IG1heERlcHRoOworCisgICAgRGV0ZWN0Q2FsbERlcHRoKGNvbnN0IERldGVj
dENhbGxEZXB0aCYpOworICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IERldGVjdENhbGxEZXB0aCYp
OworfTsKKworI2VuZGlmICAvLyBDT01QSUxFUl9ERVRFQ1RfUkVDVVJTSU9OX0hfCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0
UmVjdXJzaW9uLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTI1ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJjb21waWxlci9EZXRl
Y3RSZWN1cnNpb24uaCIKLQotRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGU6OkZ1bmN0aW9u
Tm9kZShjb25zdCBUU3RyaW5nJiBmbmFtZSkKLSAgICA6IG5hbWUoZm5hbWUpLAotICAgICAgdmlz
aXQoUHJlVmlzaXQpCi17Ci19Ci0KLWNvbnN0IFRTdHJpbmcmIERldGVjdFJlY3Vyc2lvbjo6RnVu
Y3Rpb25Ob2RlOjpnZXROYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbmFtZTsKLX0KLQotdm9p
ZCBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6YWRkQ2FsbGVlKAotICAgIERldGVjdFJl
Y3Vyc2lvbjo6RnVuY3Rpb25Ob2RlKiBjYWxsZWUpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChjYWxsZWVzW2ldID09IGNh
bGxlZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FsbGVlcy5wdXNoX2JhY2so
Y2FsbGVlKTsKLX0KLQotYm9vbCBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6ZGV0ZWN0
UmVjdXJzaW9uKCkKLXsKLSAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOwotICAgIHZpc2l0
ID0gSW5WaXNpdDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxlZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgc3dpdGNoIChjYWxsZWVzW2ldLT52aXNpdCkgewotICAgICAgICAgICAg
Y2FzZSBJblZpc2l0OgotICAgICAgICAgICAgICAgIC8vIGN5Y2xlIGRldGVjdGVkLCBpLmUuLCBy
ZWN1cnNpb24gZGV0ZWN0ZWQuCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICBjYXNlIFBvc3RWaXNpdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgUHJlVmlzaXQ6IHsKLSAgICAgICAgICAgICAgICBib29sIHJlY3Vyc2lvbiA9IGNhbGxl
ZXNbaV0tPmRldGVjdFJlY3Vyc2lvbigpOwotICAgICAgICAgICAgICAgIGlmIChyZWN1cnNpb24p
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQot
ICAgIHZpc2l0ID0gUG9zdFZpc2l0OwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotRGV0ZWN0UmVj
dXJzaW9uOjpEZXRlY3RSZWN1cnNpb24oKQotICAgIDogY3VycmVudEZ1bmN0aW9uKE5VTEwpCi17
Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6fkRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGRlbGV0ZSBm
dW5jdGlvbnNbaV07Ci19Ci0KLWJvb2wgRGV0ZWN0UmVjdXJzaW9uOjp2aXNpdEFnZ3JlZ2F0ZShW
aXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSogbm9kZSkKLXsKLSAgICBzd2l0Y2ggKG5vZGUt
PmdldE9wKCkpCi0gICAgewotICAgICAgICBjYXNlIEVPcFByb3RvdHlwZToKLSAgICAgICAgICAg
IC8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgotICAgICAgICAgICAgLy8gRG9uJ3QgYWRkIEZ1bmN0
aW9uTm9kZSBoZXJlIGJlY2F1c2Ugbm9kZS0+Z2V0TmFtZSgpIGlzIHRoZQotICAgICAgICAgICAg
Ly8gdW5tYW5nbGVkIGZ1bmN0aW9uIG5hbWUuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBFT3BGdW5jdGlvbjogewotICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4K
LSAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkgewotICAgICAgICAgICAgICAgIGN1
cnJlbnRGdW5jdGlvbiA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOwotICAg
ICAgICAgICAgICAgIGlmIChjdXJyZW50RnVuY3Rpb24gPT0gTlVMTCkgewotICAgICAgICAgICAg
ICAgICAgICBjdXJyZW50RnVuY3Rpb24gPSBuZXcgRnVuY3Rpb25Ob2RlKG5vZGUtPmdldE5hbWUo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoX2JhY2soY3VycmVudEZ1bmN0
aW9uKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEVPcEZ1bmN0aW9uQ2FsbDogewotICAgICAgICAg
ICAgLy8gRnVuY3Rpb24gY2FsbC4KLSAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkg
ewotICAgICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50RnVuY3Rpb24gIT0gTlVMTCk7Ci0gICAg
ICAgICAgICAgICAgRnVuY3Rpb25Ob2RlKiBmdW5jID0gZmluZEZ1bmN0aW9uQnlOYW1lKG5vZGUt
PmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewotICAgICAg
ICAgICAgICAgICAgICBmdW5jID0gbmV3IEZ1bmN0aW9uTm9kZShub2RlLT5nZXROYW1lKCkpOwot
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMucHVzaF9iYWNrKGZ1bmMpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24tPmFkZENhbGxlZShmdW5j
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLURldGVjdFJlY3Vyc2lvbjo6RXJyb3JDb2RlIERldGVjdFJlY3Vyc2lvbjo6ZGV0ZWN0UmVj
dXJzaW9uKCkKLXsKLSAgICBGdW5jdGlvbk5vZGUqIG1haW4gPSBmaW5kRnVuY3Rpb25CeU5hbWUo
Im1haW4oIik7Ci0gICAgaWYgKG1haW4gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIGtFcnJvck1p
c3NpbmdNYWluOwotICAgIGlmIChtYWluLT5kZXRlY3RSZWN1cnNpb24oKSkKLSAgICAgICAgcmV0
dXJuIGtFcnJvclJlY3Vyc2lvbjsKLSAgICByZXR1cm4ga0Vycm9yTm9uZTsKLX0KLQotRGV0ZWN0
UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGUqIERldGVjdFJlY3Vyc2lvbjo6ZmluZEZ1bmN0aW9uQnlO
YW1lKAotICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uc1tpXS0+
Z2V0TmFtZSgpID09IG5hbWUpCi0gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25zW2ldOwotICAg
IH0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaAkocmV2aXNpb24gMTUy
OTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vy
c2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQg
KGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0KLSNpZm5kZWYgQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwotI2RlZmluZSBDT01QSUxF
Ul9ERVRFQ1RfUkVDVVJTSU9OX0hfCi0KLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIK
LQotI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5oIgotI2luY2x1ZGUgImNvbXBpbGVy
L1ZhcmlhYmxlSW5mby5oIgotCi0vLyBUcmF2ZXJzZXMgaW50ZXJtZWRpYXRlIHRyZWUgdG8gZGV0
ZWN0IGZ1bmN0aW9uIHJlY3Vyc2lvbi4KLWNsYXNzIERldGVjdFJlY3Vyc2lvbiA6IHB1YmxpYyBU
SW50ZXJtVHJhdmVyc2VyIHsKLXB1YmxpYzoKLSAgICBlbnVtIEVycm9yQ29kZSB7Ci0gICAgICAg
IGtFcnJvck1pc3NpbmdNYWluLAotICAgICAgICBrRXJyb3JSZWN1cnNpb24sCi0gICAgICAgIGtF
cnJvck5vbmUKLSAgICB9OwotCi0gICAgRGV0ZWN0UmVjdXJzaW9uKCk7Ci0gICAgfkRldGVjdFJl
Y3Vyc2lvbigpOwotCi0gICAgdmlydHVhbCBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50
ZXJtQWdncmVnYXRlKik7Ci0KLSAgICBFcnJvckNvZGUgZGV0ZWN0UmVjdXJzaW9uKCk7Ci0KLXBy
aXZhdGU6Ci0gICAgY2xhc3MgRnVuY3Rpb25Ob2RlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEZ1
bmN0aW9uTm9kZShjb25zdCBUU3RyaW5nJiBmbmFtZSk7Ci0KLSAgICAgICAgY29uc3QgVFN0cmlu
ZyYgZ2V0TmFtZSgpIGNvbnN0OwotCi0gICAgICAgIC8vIElmIGEgZnVuY3Rpb24gaXMgYWxyZWFk
eSBpbiB0aGUgY2FsbGVlIGxpc3QsIHRoaXMgYmVjb21lcyBhIG5vLW9wLgotICAgICAgICB2b2lk
IGFkZENhbGxlZShGdW5jdGlvbk5vZGUqIGNhbGxlZSk7Ci0KLSAgICAgICAgLy8gUmV0dXJuIHRy
dWUgaWYgcmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGxzIGFyZSBkZXRlY3RlZC4KLSAgICAgICAgYm9v
bCBkZXRlY3RSZWN1cnNpb24oKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIG1hbmdsZWQg
ZnVuY3Rpb24gbmFtZSBpcyB1bmlxdWUuCi0gICAgICAgIFRTdHJpbmcgbmFtZTsKLQotICAgICAg
ICAvLyBmdW5jdGlvbnMgdGhhdCBhcmUgZGlyZWN0bHkgY2FsbGVkIGJ5IHRoaXMgZnVuY3Rpb24u
Ci0gICAgICAgIFRWZWN0b3I8RnVuY3Rpb25Ob2RlKj4gY2FsbGVlczsKLQotICAgICAgICBWaXNp
dCB2aXNpdDsKLSAgICB9OwotCi0gICAgRnVuY3Rpb25Ob2RlKiBmaW5kRnVuY3Rpb25CeU5hbWUo
Y29uc3QgVFN0cmluZyYgbmFtZSk7Ci0KLSAgICBUVmVjdG9yPEZ1bmN0aW9uTm9kZSo+IGZ1bmN0
aW9uczsKLSAgICBGdW5jdGlvbk5vZGUqIGN1cnJlbnRGdW5jdGlvbjsKLX07Ci0KLSNlbmRpZiAg
Ly8gQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwCShyZXZpc2lvbiAx
NTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlhZ25vc3Rp
Y3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgVERpYWdub3N0aWNz
Ojp3cml0ZUluZm8oU2V2ZXJpdHkgc2UKICAgICBUSW5mb1NpbmtCYXNlJiBzaW5rID0gbUluZm9T
aW5rLmluZm87CiAgICAgLyogVkMrKyBmb3JtYXQ6IGZpbGUobGluZW51bSkgOiBlcnJvciAjOiAn
dG9rZW4nIDogZXh0cmFpbmZvICovCiAgICAgc2luay5wcmVmaXgocHJlZml4KTsKLSAgICBzaW5r
LmxvY2F0aW9uKEVuY29kZVNvdXJjZUxvYyhsb2MuZmlsZSwgbG9jLmxpbmUpKTsKKyAgICBzaW5r
LmxvY2F0aW9uKGxvYy5maWxlLCBsb2MubGluZSk7CiAgICAgc2luayA8PCAiJyIgPDwgdG9rZW4g
PDwgICInIDogIiA8PCByZWFzb24gPDwgIiAiIDw8IGV4dHJhIDw8ICJcbiI7CiB9CiAKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRm9yTG9v
cFVucm9sbC5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjEwLDYgKzIx
MCw2IEBAIGludCBGb3JMb29wVW5yb2xsOjpnZXRMb29wSW5jcmVtZW50KFRJbnQKIGludCBGb3JM
b29wVW5yb2xsOjpldmFsdWF0ZUludENvbnN0YW50KFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2Rl
KQogewogICAgIEFTU0VSVCgobm9kZSAhPSBOVUxMKSAmJiAobm9kZS0+Z2V0VW5pb25BcnJheVBv
aW50ZXIoKSAhPSBOVUxMKSk7Ci0gICAgcmV0dXJuIG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVy
KCktPmdldElDb25zdCgpOworICAgIHJldHVybiBub2RlLT5nZXRJQ29uc3QoMCk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luZm9TaW5r
LmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0luZm9TaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKIAogI2lu
Y2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6cHJlZml4
KFRQcmVmaXhUeXBlIG1lc3NhZ2UpIHsKLSAgICBzd2l0Y2gobWVzc2FnZSkgewordm9pZCBUSW5m
b1NpbmtCYXNlOjpwcmVmaXgoVFByZWZpeFR5cGUgcCkgeworICAgIHN3aXRjaChwKSB7CiAgICAg
ICAgIGNhc2UgRVByZWZpeE5vbmU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBF
UHJlZml4V2FybmluZzoKQEAgLTMxLDI5ICszMSwyNCBAQCB2b2lkIFRJbmZvU2lua0Jhc2U6OnBy
ZWZpeChUUHJlZml4VHlwZSBtCiAgICAgfQogfQogCi12b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0
aW9uKFRTb3VyY2VMb2MgbG9jKSB7Ci0gICAgaW50IHN0cmluZyA9IDAsIGxpbmUgPSAwOwotICAg
IERlY29kZVNvdXJjZUxvYyhsb2MsICZzdHJpbmcsICZsaW5lKTsKLQordm9pZCBUSW5mb1NpbmtC
YXNlOjpsb2NhdGlvbihpbnQgZmlsZSwgaW50IGxpbmUpIHsKICAgICBUUGVyc2lzdFN0cmluZ1N0
cmVhbSBzdHJlYW07CiAgICAgaWYgKGxpbmUpCi0gICAgICAgIHN0cmVhbSA8PCBzdHJpbmcgPDwg
IjoiIDw8IGxpbmU7CisgICAgICAgIHN0cmVhbSA8PCBmaWxlIDw8ICI6IiA8PCBsaW5lOwogICAg
IGVsc2UKLSAgICAgICAgc3RyZWFtIDw8IHN0cmluZyA8PCAiOj8gIjsKKyAgICAgICAgc3RyZWFt
IDw8IGZpbGUgPDwgIjo/ICI7CiAgICAgc3RyZWFtIDw8ICI6ICI7CiAKICAgICBzaW5rLmFwcGVu
ZChzdHJlYW0uc3RyKCkpOwogfQogCi12b2lkIFRJbmZvU2lua0Jhc2U6Om1lc3NhZ2UoVFByZWZp
eFR5cGUgbWVzc2FnZSwgY29uc3QgY2hhciogcykgewotICAgIHByZWZpeChtZXNzYWdlKTsKLSAg
ICBzaW5rLmFwcGVuZChzKTsKLSAgICBzaW5rLmFwcGVuZCgiXG4iKTsKK3ZvaWQgVEluZm9TaW5r
QmFzZTo6bG9jYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbG9jKSB7CisgICAgbG9jYXRpb24obG9j
LmZpcnN0X2ZpbGUsIGxvYy5maXJzdF9saW5lKTsKIH0KIAotdm9pZCBUSW5mb1NpbmtCYXNlOjpt
ZXNzYWdlKFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMsIFRTb3VyY2VMb2MgbG9j
KSB7Ci0gICAgcHJlZml4KG1lc3NhZ2UpOwordm9pZCBUSW5mb1NpbmtCYXNlOjptZXNzYWdlKFRQ
cmVmaXhUeXBlIHAsIGNvbnN0IFRTb3VyY2VMb2MmIGxvYywgY29uc3QgY2hhciogbSkgeworICAg
IHByZWZpeChwKTsKICAgICBsb2NhdGlvbihsb2MpOwotICAgIHNpbmsuYXBwZW5kKHMpOworICAg
IHNpbmsuYXBwZW5kKG0pOwogICAgIHNpbmsuYXBwZW5kKCJcbiIpOwogfQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmgJKHJldmlzaW9u
IDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2lu
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxMCArOTYsMTAgQEAgcHVibGljOgogICAgIGNvbnN0
IFRQZXJzaXN0U3RyaW5nJiBzdHIoKSBjb25zdCB7IHJldHVybiBzaW5rOyB9CiAgICAgY29uc3Qg
Y2hhciogY19zdHIoKSBjb25zdCB7IHJldHVybiBzaW5rLmNfc3RyKCk7IH0KIAotICAgIHZvaWQg
cHJlZml4KFRQcmVmaXhUeXBlIG1lc3NhZ2UpOwotICAgIHZvaWQgbG9jYXRpb24oVFNvdXJjZUxv
YyBsb2MpOwotICAgIHZvaWQgbWVzc2FnZShUUHJlZml4VHlwZSBtZXNzYWdlLCBjb25zdCBjaGFy
KiBzKTsKLSAgICB2b2lkIG1lc3NhZ2UoVFByZWZpeFR5cGUgbWVzc2FnZSwgY29uc3QgY2hhciog
cywgVFNvdXJjZUxvYyBsb2MpOworICAgIHZvaWQgcHJlZml4KFRQcmVmaXhUeXBlIHApOworICAg
IHZvaWQgbG9jYXRpb24oaW50IGZpbGUsIGludCBsaW5lKTsKKyAgICB2b2lkIGxvY2F0aW9uKGNv
bnN0IFRTb3VyY2VMb2MmIGxvYyk7CisgICAgdm9pZCBtZXNzYWdlKFRQcmVmaXhUeXBlIHAsIGNv
bnN0IFRTb3VyY2VMb2MmIGxvYywgY29uc3QgY2hhciogbSk7CiAKIHByaXZhdGU6CiAgICAgVFBl
cnNpc3RTdHJpbmcgc2luazsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9Jbml0aWFsaXplLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAv
LwpAQCAtMTQsNTEzICsxNCw0MTMgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0
ZS5oIgogCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBQcm90b3R5cGVzIGZvciBidWls
dC1pbiBmdW5jdGlvbnMgc2VlbiBieSBib3RoIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycy4K
LS8vCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLXN0YXRpYyBUU3RyaW5nIEJ1aWx0SW5GdW5jdGlv
bnNDb21tb24oY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCit2b2lkIEluc2Vy
dEJ1aWx0SW5GdW5jdGlvbnMoU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBj
b25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgJnJlc291cmNlcywgVFN5bWJvbFRhYmxlICZzeW1ib2xU
YWJsZSkKIHsKLSAgICBUU3RyaW5nIHM7CisgICAgVFR5cGUgKmZsb2F0MSA9IG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEpOworICAgIFRUeXBlICpmbG9hdDIg
PSBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyKTsKKyAgICBU
VHlwZSAqZmxvYXQzID0gbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMyk7CisgICAgVFR5cGUgKmZsb2F0NCA9IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDQpOworCisgICAgVFR5cGUgKmludDIgPSBuZXcgVFR5cGUoRWJ0SW50
LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMik7CisgICAgVFR5cGUgKmludDMgPSBuZXcgVFR5
cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMyk7CisgICAgVFR5cGUgKmludDQg
PSBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCk7CiAKICAgICAv
LwogICAgIC8vIEFuZ2xlIGFuZCBUcmlnb25vbWV0cmljIEZ1bmN0aW9ucy4KICAgICAvLwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHJhZGlhbnMoZmxvYXQgZGVncmVlcyk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHJhZGlhbnModmVjMiAgZGVncmVlcyk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHJhZGlhbnModmVjMyAgZGVncmVlcyk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHJhZGlhbnModmVjNCAgZGVncmVlcyk7IikpOwotCi0g
ICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZGVncmVlcyhmbG9hdCByYWRpYW5zKTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZGVncmVlcyh2ZWMyICByYWRpYW5zKTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZGVncmVlcyh2ZWMzICByYWRpYW5zKTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZGVncmVlcyh2ZWM0ICByYWRpYW5zKTsiKSk7Ci0K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBzaW4oZmxvYXQgYW5nbGUpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBzaW4odmVjMiAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMzICBzaW4odmVjMyAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICBzaW4odmVjNCAgYW5nbGUpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImZsb2F0IGNvcyhmbG9hdCBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IGNvcyh2ZWMyICBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGNvcyh2
ZWMzICBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGNvcyh2ZWM0ICBh
bmdsZSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgdGFuKGZsb2F0IGFuZ2xl
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgdGFuKHZlYzIgIGFuZ2xlKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgdGFuKHZlYzMgIGFuZ2xlKTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCAgdGFuKHZlYzQgIGFuZ2xlKTsiKSk7Ci0KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJmbG9hdCBhc2luKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMyICBhc2luKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
ICBhc2luKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhc2luKHZl
YzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGFjb3MoZmxvYXQgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGFjb3ModmVjMiAgeCk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGFjb3ModmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzQgIGFjb3ModmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiZmxvYXQgYXRhbihmbG9hdCB5LCBmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiAgYXRhbih2ZWMyICB5LCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgYXRhbih2ZWMzICB5LCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCAgYXRhbih2ZWM0ICB5LCB2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBhdGFuKGZsb2F0IHlfb3Zlcl94KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiAgYXRhbih2ZWMyICB5X292ZXJfeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzMgIGF0YW4odmVjMyAgeV9vdmVyX3gpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0ICBhdGFuKHZlYzQgIHlfb3Zlcl94KTsiKSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDEsICJyYWRpYW5zIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0MiwgInJhZGlhbnMiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQzLCAicmFkaWFucyIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDQsICJyYWRpYW5zIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZGVncmVlcyIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJkZWdyZWVzIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImRlZ3JlZXMiLCBmbG9hdDMpOworICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiZGVncmVlcyIsIGZsb2F0NCk7CisKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgInNpbiIsIGZsb2F0MSk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJzaW4iLCBmbG9hdDIpOworICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAic2luIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInNpbiIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImNvcyIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJjb3MiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiY29zIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0NCwgImNvcyIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0MSwgInRhbiIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDIsICJ0YW4iLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQzLCAidGFuIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0NCwgInRhbiIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0MSwgImFzaW4iLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQyLCAiYXNpbiIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDMsICJhc2luIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0NCwgImFzaW4iLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDEsICJhY29zIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0MiwgImFjb3MiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQzLCAiYWNvcyIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDQsICJhY29zIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQxLCAiYXRhbiIsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0MiwgImF0YW4iLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJhdGFuIiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiYXRhbiIsIGZsb2F0NCwgZmxvYXQ0KTsK
KworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiYXRhbiIsIGZsb2F0MSk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJhdGFuIiwgZmxvYXQyKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImF0YW4iLCBmbG9hdDMpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiYXRhbiIsIGZsb2F0NCk7CiAK
ICAgICAvLwogICAgIC8vIEV4cG9uZW50aWFsIEZ1bmN0aW9ucy4KICAgICAvLwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IHBvdyhmbG9hdCB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMiAgcG93KHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMzICBwb3codmVjMyAgeCwgdmVjMyAgeSk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzQgIHBvdyh2ZWM0ICB4LCB2ZWM0ICB5KTsiKSk7Ci0KLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJmbG9hdCBleHAoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzIgIGV4cCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZXhw
KHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBleHAodmVjNCAgeCk7
IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbG9nKGZsb2F0IHgpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBsb2codmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzMgIGxvZyh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgbG9nKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGV4
cDIoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGV4cDIodmVjMiAg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGV4cDIodmVjMyAgeCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGV4cDIodmVjNCAgeCk7IikpOwotCi0gICAgcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgbG9nMihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMiAgbG9nMih2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgbG9nMih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbG9nMih2
ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBzcXJ0KGZsb2F0IHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBzcXJ0KHZlYzIgIHgpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBzcXJ0KHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWM0ICBzcXJ0KHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImZsb2F0IGludmVyc2VzcXJ0KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMyICBpbnZlcnNlc3FydCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgaW52ZXJzZXNxcnQodmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgIGludmVyc2VzcXJ0KHZlYzQgIHgpOyIpKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0MSwgInBvdyIsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0MiwgInBvdyIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgInBvdyIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInBvdyIsIGZsb2F0NCwgZmxvYXQ0KTsKKwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZXhwIiwgZmxvYXQxKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImV4cCIsIGZsb2F0Mik7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJleHAiLCBmbG9hdDMpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiZXhwIiwgZmxvYXQ0KTsKKworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAibG9nIiwgZmxvYXQxKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImxvZyIsIGZsb2F0Mik7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJsb2ciLCBmbG9hdDMpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAibG9nIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZXhwMiIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJleHAyIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImV4cDIiLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiZXhwMiIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImxvZzIiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQyLCAibG9nMiIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihmbG9hdDMsICJsb2cyIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0NCwgImxvZzIiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihmbG9hdDEsICJzcXJ0IiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0MiwgInNxcnQiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQzLCAic3FydCIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDQsICJzcXJ0IiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQxLCAiaW52ZXJzZXNxcnQiLCBmbG9hdDEpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAiaW52ZXJzZXNxcnQiLCBmbG9hdDIpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiaW52ZXJzZXNxcnQiLCBmbG9hdDMpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiaW52ZXJzZXNxcnQiLCBmbG9h
dDQpOwogCiAgICAgLy8KICAgICAvLyBDb21tb24gRnVuY3Rpb25zLgogICAgIC8vCi0gICAgcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgYWJzKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMyICBhYnModmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMg
IGFicyh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgYWJzKHZlYzQg
IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHNpZ24oZmxvYXQgeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNpZ24odmVjMiAgeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzMgIHNpZ24odmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzQgIHNpZ24odmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygi
ZmxvYXQgZmxvb3IoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGZs
b29yKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBmbG9vcih2ZWMz
ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZmxvb3IodmVjNCAgeCk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgY2VpbChmbG9hdCB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMiAgY2VpbCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMyAgY2VpbCh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgY2VpbCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBm
cmFjdChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZnJhY3QodmVj
MiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGZyYWN0KHZlYzMgIHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBmcmFjdCh2ZWM0ICB4KTsiKSk7Ci0KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtb2QoZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1vZCh2ZWMyICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgbW9kKHZlYzMgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtb2QodmVjNCAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIG1vZCh2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMyAgbW9kKHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0ICBtb2QodmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgbWluKGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMyICBtaW4odmVjMiAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzMgIG1pbih2ZWMzICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgbWluKHZlYzQgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMyICBtaW4odmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzMgIG1pbih2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgbWluKHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IG1heChmbG9hdCB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMiAgbWF4KHZlYzIgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMzICBtYXgodmVjMyAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzQgIG1heCh2ZWM0ICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMiAgbWF4KHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMzICBtYXgodmVjMyAgeCwgdmVjMyAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzQgIG1heCh2ZWM0ICB4LCB2ZWM0ICB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBjbGFtcChmbG9hdCB4LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGNsYW1wKHZlYzIgIHgsIGZsb2F0IG1pblZh
bCwgZmxvYXQgbWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgY2xhbXAo
dmVjMyAgeCwgZmxvYXQgbWluVmFsLCBmbG9hdCBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0ICBjbGFtcCh2ZWM0ICB4LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGNsYW1wKHZlYzIgIHgsIHZlYzIgIG1p
blZhbCwgdmVjMiAgbWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgY2xh
bXAodmVjMyAgeCwgdmVjMyAgbWluVmFsLCB2ZWMzICBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWM0ICBjbGFtcCh2ZWM0ICB4LCB2ZWM0ICBtaW5WYWwsIHZlYzQgIG1heFZh
bCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbWl4KGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtaXgodmVjMiAg
eCwgdmVjMiAgeSwgZmxvYXQgYSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1p
eCh2ZWMzICB4LCB2ZWMzICB5LCBmbG9hdCBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgbWl4KHZlYzQgIHgsIHZlYzQgIHksIGZsb2F0IGEpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMyICBtaXgodmVjMiAgeCwgdmVjMiAgeSwgdmVjMiAgYSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzMgIG1peCh2ZWMzICB4LCB2ZWMzICB5LCB2ZWMzICBhKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWl4KHZlYzQgIHgsIHZlYzQgIHksIHZlYzQg
IGEpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHN0ZXAoZmxvYXQgZWRnZSwg
ZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHN0ZXAodmVjMiAgZWRn
ZSwgdmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHN0ZXAodmVjMyAg
ZWRnZSwgdmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHN0ZXAodmVj
NCAgZWRnZSwgdmVjNCAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHN0ZXAo
ZmxvYXQgZWRnZSwgdmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHN0
ZXAoZmxvYXQgZWRnZSwgdmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
IHN0ZXAoZmxvYXQgZWRnZSwgdmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygi
ZmxvYXQgc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIGZsb2F0IHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBzbW9vdGhzdGVwKHZlYzIgIGVkZ2UwLCB2ZWMy
ICBlZGdlMSwgdmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHNtb290
aHN0ZXAodmVjMyAgZWRnZTAsIHZlYzMgIGVkZ2UxLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCAgc21vb3Roc3RlcCh2ZWM0ICBlZGdlMCwgdmVjNCAgZWRnZTEsIHZl
YzQgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBzbW9vdGhzdGVwKGZsb2F0
IGVkZ2UwLCBmbG9hdCBlZGdlMSwgdmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzMgIHNtb290aHN0ZXAoZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCB2ZWMzICB4KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxv
YXQgZWRnZTEsIHZlYzQgIHgpOyIpKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MSwgImFicyIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDIsICJhYnMiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQz
LCAiYWJzIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwg
ImFicyIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwg
InNpZ24iLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAi
c2lnbiIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJz
aWduIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInNp
Z24iLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJm
bG9vciIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJm
bG9vciIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJm
bG9vciIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJm
bG9vciIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwg
ImNlaWwiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAi
Y2VpbCIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJj
ZWlsIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImNl
aWwiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJm
cmFjdCIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJm
cmFjdCIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJm
cmFjdCIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJm
cmFjdCIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwg
Im1vZCIsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MiwgIm1vZCIsIGZsb2F0MiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0MywgIm1vZCIsIGZsb2F0MywgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0NCwgIm1vZCIsIGZsb2F0NCwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgIm1vZCIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgIm1vZCIsIGZsb2F0MywgZmxvYXQzKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgIm1vZCIsIGZsb2F0NCwgZmxvYXQ0
KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAibWluIiwgZmxvYXQx
LCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAibWluIiwg
ZmxvYXQyLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAi
bWluIiwgZmxvYXQzLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQ0LCAibWluIiwgZmxvYXQ0LCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQyLCAibWluIiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQzLCAibWluIiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAibWluIiwgZmxvYXQ0LCBmbG9hdDQpOworCisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJtYXgiLCBmbG9hdDEsIGZsb2F0MSk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJtYXgiLCBmbG9hdDIsIGZsb2F0
MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJtYXgiLCBmbG9hdDMs
IGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJtYXgiLCBm
bG9hdDQsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJt
YXgiLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDMsICJtYXgiLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDQsICJtYXgiLCBmbG9hdDQsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0MSwgImNsYW1wIiwgZmxvYXQxLCBmbG9hdDEsIGZsb2F0MSk7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJjbGFtcCIsIGZsb2F0MiwgZmxvYXQx
LCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiY2xhbXAi
LCBmbG9hdDMsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0NCwgImNsYW1wIiwgZmxvYXQ0LCBmbG9hdDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJjbGFtcCIsIGZsb2F0MiwgZmxvYXQyLCBmbG9hdDIp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiY2xhbXAiLCBmbG9hdDMs
IGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwg
ImNsYW1wIiwgZmxvYXQ0LCBmbG9hdDQsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0MSwgIm1peCIsIGZsb2F0MSwgZmxvYXQxLCBmbG9hdDEpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAibWl4IiwgZmxvYXQyLCBmbG9hdDIsIGZs
b2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJtaXgiLCBmbG9h
dDMsIGZsb2F0MywgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0
NCwgIm1peCIsIGZsb2F0NCwgZmxvYXQ0LCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQyLCAibWl4IiwgZmxvYXQyLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJtaXgiLCBmbG9hdDMsIGZsb2F0MywgZmxv
YXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgIm1peCIsIGZsb2F0
NCwgZmxvYXQ0LCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDEsICJzdGVwIiwgZmxvYXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQyLCAic3RlcCIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0MywgInN0ZXAiLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJzdGVwIiwgZmxvYXQ0LCBmbG9hdDQpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAic3RlcCIsIGZsb2F0MSwgZmxvYXQyKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgInN0ZXAiLCBmbG9hdDEsIGZs
b2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJzdGVwIiwgZmxv
YXQxLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJz
bW9vdGhzdGVwIiwgZmxvYXQxLCBmbG9hdDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDIsICJzbW9vdGhzdGVwIiwgZmxvYXQyLCBmbG9hdDIsIGZsb2F0Mik7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJzbW9vdGhzdGVwIiwgZmxv
YXQzLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDQsICJzbW9vdGhzdGVwIiwgZmxvYXQ0LCBmbG9hdDQsIGZsb2F0NCk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJzbW9vdGhzdGVwIiwgZmxvYXQxLCBmbG9hdDEsIGZs
b2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJzbW9vdGhzdGVw
IiwgZmxvYXQxLCBmbG9hdDEsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDQsICJzbW9vdGhzdGVwIiwgZmxvYXQxLCBmbG9hdDEsIGZsb2F0NCk7CiAKICAgICAv
LwogICAgIC8vIEdlb21ldHJpYyBGdW5jdGlvbnMuCiAgICAgLy8KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBsZW5ndGgoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZs
b2F0IGxlbmd0aCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVu
Z3RoKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsZW5ndGgodmVj
NCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZGlzdGFuY2UoZmxvYXQg
cDAsIGZsb2F0IHAxKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZGlzdGFuY2Uo
dmVjMiAgcDAsIHZlYzIgIHAxKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZGlz
dGFuY2UodmVjMyAgcDAsIHZlYzMgIHAxKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxv
YXQgZGlzdGFuY2UodmVjNCAgcDAsIHZlYzQgIHAxKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBkb3QoZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImZsb2F0IGRvdCh2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiZmxvYXQgZG90KHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJmbG9hdCBkb3QodmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyBjcm9zcyh2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImZsb2F0IG5vcm1hbGl6ZShmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MiAgbm9ybWFsaXplKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBu
b3JtYWxpemUodmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG5vcm1h
bGl6ZSh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBmYWNlZm9y
d2FyZChmbG9hdCBOLCBmbG9hdCBJLCBmbG9hdCBOcmVmKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMiAgZmFjZWZvcndhcmQodmVjMiAgTiwgdmVjMiAgSSwgdmVjMiAgTnJlZik7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGZhY2Vmb3J3YXJkKHZlYzMgIE4sIHZlYzMg
IEksIHZlYzMgIE5yZWYpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBmYWNlZm9y
d2FyZCh2ZWM0ICBOLCB2ZWM0ICBJLCB2ZWM0ICBOcmVmKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJmbG9hdCByZWZsZWN0KGZsb2F0IEksIGZsb2F0IE4pOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMyICByZWZsZWN0KHZlYzIgIEksIHZlYzIgIE4pOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMzICByZWZsZWN0KHZlYzMgIEksIHZlYzMgIE4pOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByZWZsZWN0KHZlYzQgIEksIHZlYzQgIE4pOyIpKTsKLQot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHJlZnJhY3QoZmxvYXQgSSwgZmxvYXQgTiwgZmxv
YXQgZXRhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgcmVmcmFjdCh2ZWMyICBJ
LCB2ZWMyICBOLCBmbG9hdCBldGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBy
ZWZyYWN0KHZlYzMgIEksIHZlYzMgIE4sIGZsb2F0IGV0YSk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzQgIHJlZnJhY3QodmVjNCAgSSwgdmVjNCAgTiwgZmxvYXQgZXRhKTsiKSk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJsZW5ndGgiLCBmbG9hdDEpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAibGVuZ3RoIiwgZmxvYXQyKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImxlbmd0aCIsIGZsb2F0Myk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJsZW5ndGgiLCBmbG9hdDQp
OworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJkaXN0YW5jZSIsIGZs
b2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImRp
c3RhbmNlIiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQxLCAiZGlzdGFuY2UiLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDEsICJkaXN0YW5jZSIsIGZsb2F0NCwgZmxvYXQ0KTsKKworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZG90IiwgZmxvYXQxLCBmbG9hdDEpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZG90IiwgZmxvYXQyLCBmbG9h
dDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZG90IiwgZmxvYXQz
LCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZG90Iiwg
ZmxvYXQ0LCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMs
ICJjcm9zcyIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0MSwgIm5vcm1hbGl6ZSIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDIsICJub3JtYWxpemUiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQzLCAibm9ybWFsaXplIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0NCwgIm5vcm1hbGl6ZSIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImZhY2Vmb3J3YXJkIiwgZmxvYXQxLCBmbG9hdDEs
IGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJmYWNlZm9y
d2FyZCIsIGZsb2F0MiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQzLCAiZmFjZWZvcndhcmQiLCBmbG9hdDMsIGZsb2F0MywgZmxvYXQzKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImZhY2Vmb3J3YXJkIiwgZmxvYXQ0
LCBmbG9hdDQsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0
MSwgInJlZmxlY3QiLCBmbG9hdDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDIsICJyZWZsZWN0IiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQzLCAicmVmbGVjdCIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInJlZmxlY3QiLCBmbG9hdDQsIGZsb2F0
NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgInJlZnJhY3QiLCBm
bG9hdDEsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MiwgInJlZnJhY3QiLCBmbG9hdDIsIGZsb2F0MiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgInJlZnJhY3QiLCBmbG9hdDMsIGZsb2F0MywgZmxvYXQx
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInJlZnJhY3QiLCBmbG9h
dDQsIGZsb2F0NCwgZmxvYXQxKTsKKworICAgIFRUeXBlICptYXQyID0gbmV3IFRUeXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMiwgdHJ1ZSk7CisgICAgVFR5cGUgKm1hdDMg
PSBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCB0cnVlKTsK
KyAgICBUVHlwZSAqbWF0NCA9IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDQsIHRydWUpOwogCiAgICAgLy8KICAgICAvLyBNYXRyaXggRnVuY3Rpb25zLgogICAg
IC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygibWF0MiBtYXRyaXhDb21wTXVsdChtYXQyIHgsIG1h
dDIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoIm1hdDMgbWF0cml4Q29tcE11bHQobWF0
MyB4LCBtYXQzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJtYXQ0IG1hdHJpeENvbXBN
dWx0KG1hdDQgeCwgbWF0NCB5KTsiKSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbiht
YXQyLCAibWF0cml4Q29tcE11bHQiLCBtYXQyLCBtYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKG1hdDMsICJtYXRyaXhDb21wTXVsdCIsIG1hdDMsIG1hdDMpOworICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4obWF0NCwgIm1hdHJpeENvbXBNdWx0IiwgbWF0NCwgbWF0NCk7
CisKKyAgICBUVHlwZSAqYm9vbDEgPSBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEpOworICAgIFRUeXBlICpib29sMiA9IG5ldyBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMik7CisgICAgVFR5cGUgKmJvb2wzID0gbmV3IFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzKTsKKyAgICBUVHlwZSAqYm9vbDQgPSBu
ZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQpOwogCiAgICAgLy8K
ICAgICAvLyBWZWN0b3IgcmVsYXRpb25hbCBmdW5jdGlvbnMuCiAgICAgLy8KLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbih2ZWMyIHgsIHZlYzIgeSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygiYnZlYzQgbGVzc1RoYW4odmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGxlc3NUaGFuKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBsZXNzVGhhbihpdmVjMyB4LCBpdmVjMyB5KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbGVzc1RoYW4oaXZlYzQgeCwgaXZlYzQg
eSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbGVzc1RoYW5FcXVhbCh2ZWMy
IHgsIHZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuRXF1
YWwodmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNz
VGhhbkVxdWFsKHZlYzQgeCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJi
dmVjMiBsZXNzVGhhbkVxdWFsKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJidmVjMyBsZXNzVGhhbkVxdWFsKGl2ZWMzIHgsIGl2ZWMzIHkpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbkVxdWFsKGl2ZWM0IHgsIGl2ZWM0IHkpOyIp
KTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGdyZWF0ZXJUaGFuKHZlYzIgeCwgdmVj
MiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZ3JlYXRlclRoYW4odmVjMyB4
LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBncmVhdGVyVGhhbih2
ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRl
clRoYW4oaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMz
IGdyZWF0ZXJUaGFuKGl2ZWMzIHgsIGl2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJidmVjNCBncmVhdGVyVGhhbihpdmVjNCB4LCBpdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJidmVjMiBncmVhdGVyVGhhbkVxdWFsKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZ3JlYXRlclRoYW5FcXVhbCh2ZWMzIHgsIHZlYzMg
eSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFuRXF1YWwodmVj
NCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGdyZWF0ZXJU
aGFuRXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWMzIGdyZWF0ZXJUaGFuRXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFuRXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwot
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBlcXVhbCh2ZWMzIHgsIHZlYzMgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGVxdWFsKHZlYzQgeCwgdmVjNCB5KTsiKSk7Ci0K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBlcXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGVxdWFsKGl2ZWM0IHgsIGl2ZWM0IHkpOyIp
KTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGVxdWFsKGJ2ZWMyIHgsIGJ2ZWMyIHkp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBlcXVhbChidmVjMyB4LCBidmVjMyB5
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZXF1YWwoYnZlYzQgeCwgYnZlYzQg
eSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbm90RXF1YWwodmVjMiB4LCB2
ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBub3RFcXVhbCh2ZWMzIHgs
IHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IG5vdEVxdWFsKHZlYzQg
eCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBub3RFcXVhbChp
dmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbm90RXF1
YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IG5v
dEVxdWFsKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWMyIG5vdEVxdWFsKGJ2ZWMyIHgsIGJ2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJidmVjMyBub3RFcXVhbChidmVjMyB4LCBidmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzQgbm90RXF1YWwoYnZlYzQgeCwgYnZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBl
bmQoVFN0cmluZygiYm9vbCBhbnkoYnZlYzIgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImJvb2wgYW55KGJ2ZWMzIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFueShi
dmVjNCB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFsbChidmVjMiB4KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYm9vbCBhbGwoYnZlYzMgeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJvb2wgYWxsKGJ2ZWM0IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImJ2ZWMyIG5vdChidmVjMiB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZl
YzMgbm90KGJ2ZWMzIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBub3QoYnZl
YzQgeCk7IikpOwotCi0gICAgLy8KLSAgICAvLyBUZXh0dXJlIEZ1bmN0aW9ucy4KLSAgICAvLwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEKHNhbXBsZXIyRCBzYW1wbGVyLCB2
ZWMyIGNvb3JkKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9q
KHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMzIGNvb3JkKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlQ3ViZShzYW1wbGVyQ3ViZSBzYW1w
bGVyLCB2ZWMzIGNvb3JkKTsiKSk7Ci0KLSAgICBpZiAocmVzb3VyY2VzLk9FU19FR0xfaW1hZ2Vf
ZXh0ZXJuYWwpIHsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkQoc2Ft
cGxlckV4dGVybmFsT0VTIHNhbXBsZXIsIHZlYzIgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXJFeHRlcm5hbE9FUyBzYW1wbGVy
LCB2ZWMzIGNvb3JkKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVy
ZTJEUHJvaihzYW1wbGVyRXh0ZXJuYWxPRVMgc2FtcGxlciwgdmVjNCBjb29yZCk7IikpOwotICAg
IH0KKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAibGVzc1RoYW4iLCBmbG9h
dDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgImxlc3NU
aGFuIiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9v
bDQsICJsZXNzVGhhbiIsIGZsb2F0NCwgZmxvYXQ0KTsKIAotICAgIGlmIChyZXNvdXJjZXMuQVJC
X3RleHR1cmVfcmVjdGFuZ2xlKSB7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4
dHVyZTJEUmVjdChzYW1wbGVyMkRSZWN0IHNhbXBsZXIsIHZlYzIgY29vcmQpOyIpKTsKLSAgICAg
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRSZWN0UHJvaihzYW1wbGVyMkRSZWN0
IHNhbXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVj
NCB0ZXh0dXJlMkRSZWN0UHJvaihzYW1wbGVyMkRSZWN0IHNhbXBsZXIsIHZlYzQgY29vcmQpOyIp
KTsKLSAgICB9CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMiwgImxlc3NUaGFu
IiwgaW50MiwgaW50Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgImxl
c3NUaGFuIiwgaW50MywgaW50Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29s
NCwgImxlc3NUaGFuIiwgaW50NCwgaW50NCk7CiAKLSAgICAvLwotICAgIC8vIE5vaXNlIGZ1bmN0
aW9ucy4KLSAgICAvLwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbm9pc2UxKGZsb2F0
IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG5vaXNlMSh2ZWMyICB4KTsi
KSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lzZTEodmVjMyAgeCk7IikpOwot
ICAgIC8vcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbm9pc2UxKHZlYzQgIHgpOyIpKTsKLQotICAg
IC8vcy5hcHBlbmQoVFN0cmluZygidmVjMiBub2lzZTIoZmxvYXQgeCk7IikpOwotICAgIC8vcy5h
cHBlbmQoVFN0cmluZygidmVjMiBub2lzZTIodmVjMiAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQo
VFN0cmluZygidmVjMiBub2lzZTIodmVjMyAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiBub2lzZTIodmVjNCAgeCk7IikpOwotCi0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2
ZWMzIG5vaXNlMyhmbG9hdCB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMzIG5v
aXNlMyh2ZWMyICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMzIG5vaXNlMyh2
ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMzIG5vaXNlMyh2ZWM0ICB4
KTsiKSk7Ci0KLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzQgbm9pc2U0KGZsb2F0IHgpOyIp
KTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzQgbm9pc2U0KHZlYzIgIHgpOyIpKTsKLSAg
ICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzQgbm9pc2U0KHZlYzMgIHgpOyIpKTsKLSAgICAvL3Mu
YXBwZW5kKFRTdHJpbmcoInZlYzQgbm9pc2U0KHZlYzQgIHgpOyIpKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAibGVzc1RoYW5FcXVhbCIsIGZsb2F0MiwgZmxvYXQyKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wzLCAibGVzc1RoYW5FcXVhbCIsIGZs
b2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAibGVz
c1RoYW5FcXVhbCIsIGZsb2F0NCwgZmxvYXQ0KTsKIAotICAgIHJldHVybiBzOwotfQorICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJsZXNzVGhhbkVxdWFsIiwgaW50MiwgaW50
Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgImxlc3NUaGFuRXF1YWwi
LCBpbnQzLCBpbnQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAibGVz
c1RoYW5FcXVhbCIsIGludDQsIGludDQpOwogCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0v
LyBQcm90b3R5cGVzIGZvciBidWlsdC1pbiBmdW5jdGlvbnMgc2VlbiBieSB2ZXJ0ZXggc2hhZGVy
cyBvbmx5LgotLy8KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotc3RhdGljIFRTdHJpbmcgQnVpbHRJ
bkZ1bmN0aW9uc1ZlcnRleChjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcykKLXsK
LSAgICBUU3RyaW5nIHM7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMiwgImdy
ZWF0ZXJUaGFuIiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oYm9vbDMsICJncmVhdGVyVGhhbiIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAiZ3JlYXRlclRoYW4iLCBmbG9hdDQsIGZsb2F0NCk7CiAK
LSAgICAvLwotICAgIC8vIEdlb21ldHJpYyBGdW5jdGlvbnMuCi0gICAgLy8KLSAgICAvL3MuYXBw
ZW5kKFRTdHJpbmcoInZlYzQgZnRyYW5zZm9ybSgpOyIpKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGJvb2wyLCAiZ3JlYXRlclRoYW4iLCBpbnQyLCBpbnQyKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGJvb2wzLCAiZ3JlYXRlclRoYW4iLCBpbnQzLCBpbnQzKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAiZ3JlYXRlclRoYW4iLCBpbnQ0LCBp
bnQ0KTsKIAotICAgIC8vCi0gICAgLy8gVGV4dHVyZSBGdW5jdGlvbnMuCi0gICAgLy8KLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRExvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVj
MiBjb29yZCwgZmxvYXQgbG9kKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0
dXJlMkRQcm9qTG9kKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBsb2QpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJE
IHNhbXBsZXIsIHZlYzQgY29vcmQsIGZsb2F0IGxvZCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzQgdGV4dHVyZUN1YmVMb2Qoc2FtcGxlckN1YmUgc2FtcGxlciwgdmVjMyBjb29yZCwg
ZmxvYXQgbG9kKTsiKSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMiwgImdy
ZWF0ZXJUaGFuRXF1YWwiLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihib29sMywgImdyZWF0ZXJUaGFuRXF1YWwiLCBmbG9hdDMsIGZsb2F0Myk7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwgImdyZWF0ZXJUaGFuRXF1YWwiLCBmbG9h
dDQsIGZsb2F0NCk7CiAKLSAgICByZXR1cm4gczsKLX0KKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGJvb2wyLCAiZ3JlYXRlclRoYW5FcXVhbCIsIGludDIsIGludDIpOworICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDMsICJncmVhdGVyVGhhbkVxdWFsIiwgaW50MywgaW50
Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwgImdyZWF0ZXJUaGFuRXF1
YWwiLCBpbnQ0LCBpbnQ0KTsKIAotLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLwotLy8gUHJvdG90
eXBlcyBmb3IgYnVpbHQtaW4gZnVuY3Rpb25zIHNlZW4gYnkgZnJhZ21lbnQgc2hhZGVycyBvbmx5
LgotLy8KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotc3RhdGljIFRTdHJpbmcgQnVpbHRJbkZ1bmN0
aW9uc0ZyYWdtZW50KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQotewotICAg
IFRTdHJpbmcgczsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAiZXF1YWwi
LCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywg
ImVxdWFsIiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
Ym9vbDQsICJlcXVhbCIsIGZsb2F0NCwgZmxvYXQ0KTsKIAotICAgIC8vCi0gICAgLy8gVGV4dHVy
ZSBGdW5jdGlvbnMuCi0gICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUy
RChzYW1wbGVyMkQgc2FtcGxlciwgdmVjMiBjb29yZCwgZmxvYXQgYmlhcyk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgc2FtcGxlciwgdmVj
MyBjb29yZCwgZmxvYXQgYmlhcyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4
dHVyZTJEUHJvaihzYW1wbGVyMkQgc2FtcGxlciwgdmVjNCBjb29yZCwgZmxvYXQgYmlhcyk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZUN1YmUoc2FtcGxlckN1YmUgc2Ft
cGxlciwgdmVjMyBjb29yZCwgZmxvYXQgYmlhcyk7IikpOwotCi0gICAgaWYgKHJlc291cmNlcy5P
RVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMpIHsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiZmxv
YXQgZEZkeChmbG9hdCBwKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGRG
ZHgodmVjMiAgcCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBkRmR4KHZl
YzMgIHApOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZEZkeCh2ZWM0ICBw
KTsiKSk7Ci0KLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZEZkeShmbG9hdCBwKTsi
KSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGRGZHkodmVjMiAgcCk7IikpOwot
ICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBkRmR5KHZlYzMgIHApOyIpKTsKLSAgICAg
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZEZkeSh2ZWM0ICBwKTsiKSk7Ci0KLSAgICAgICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZndpZHRoKGZsb2F0IHApOyIpKTsKLSAgICAgICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMiAgZndpZHRoKHZlYzIgIHApOyIpKTsKLSAgICAgICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMyAgZndpZHRoKHZlYzMgIHApOyIpKTsKLSAgICAgICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgZndpZHRoKHZlYzQgIHApOyIpKTsKLSAgICB9CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihib29sMiwgImVxdWFsIiwgaW50MiwgaW50Mik7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgImVxdWFsIiwgaW50MywgaW50Myk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwgImVxdWFsIiwgaW50NCwgaW50NCk7CiAKLSAg
ICByZXR1cm4gczsKLX0KKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAiZXF1
YWwiLCBib29sMiwgYm9vbDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDMs
ICJlcXVhbCIsIGJvb2wzLCBib29sMyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihi
b29sNCwgImVxdWFsIiwgYm9vbDQsIGJvb2w0KTsKIAotLy89PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0v
LwotLy8gU3RhbmRhcmQgdW5pZm9ybXMuCi0vLwotLy89PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1zdGF0
aWMgVFN0cmluZyBTdGFuZGFyZFVuaWZvcm1zKCkKLXsKLSAgICBUU3RyaW5nIHM7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMiwgIm5vdEVxdWFsIiwgZmxvYXQyLCBmbG9hdDIp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDMsICJub3RFcXVhbCIsIGZsb2F0
MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAibm90RXF1
YWwiLCBmbG9hdDQsIGZsb2F0NCk7CiAKLSAgICAvLwotICAgIC8vIERlcHRoIHJhbmdlIGluIHdp
bmRvdyBjb29yZGluYXRlcwotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygic3RydWN0IGds
X0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIHsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiICAgIGhp
Z2hwIGZsb2F0IG5lYXI7IikpOyAgICAgICAgLy8gbgotICAgIHMuYXBwZW5kKFRTdHJpbmcoIiAg
ICBoaWdocCBmbG9hdCBmYXI7IikpOyAgICAgICAgIC8vIGYKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCIgICAgaGlnaHAgZmxvYXQgZGlmZjsiKSk7ICAgICAgICAvLyBmIC0gbgotICAgIHMuYXBwZW5k
KFRTdHJpbmcoIn07IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInVuaWZvcm0gZ2xfRGVwdGhS
YW5nZVBhcmFtZXRlcnMgZ2xfRGVwdGhSYW5nZTsiKSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihib29sMiwgIm5vdEVxdWFsIiwgaW50MiwgaW50Mik7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihib29sMywgIm5vdEVxdWFsIiwgaW50MywgaW50Myk7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwgIm5vdEVxdWFsIiwgaW50NCwgaW50NCk7CiAKLSAg
ICByZXR1cm4gczsKLX0KKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAibm90
RXF1YWwiLCBib29sMiwgYm9vbDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9v
bDMsICJub3RFcXVhbCIsIGJvb2wzLCBib29sMyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihib29sNCwgIm5vdEVxdWFsIiwgYm9vbDQsIGJvb2w0KTsKIAotLy89PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0vLwotLy8gRGVmYXVsdCBwcmVjaXNpb24gZm9yIHZlcnRleCBzaGFkZXJzLgotLy8K
LS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotc3RhdGljIFRTdHJpbmcgRGVmYXVsdFByZWNpc2lvblZl
cnRleCgpCi17Ci0gICAgVFN0cmluZyBzOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
Ym9vbDEsICJhbnkiLCBib29sMik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29s
MSwgImFueSIsIGJvb2wzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wxLCAi
YW55IiwgYm9vbDQpOwogCi0gICAgcy5hcHBlbmQoVFN0cmluZygicHJlY2lzaW9uIGhpZ2hwIGlu
dDsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygicHJlY2lzaW9uIGhpZ2hwIGZsb2F0OyIpKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wxLCAiYWxsIiwgYm9vbDIpOworICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDEsICJhbGwiLCBib29sMyk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMSwgImFsbCIsIGJvb2w0KTsKIAotICAgIHJldHVy
biBzOwotfQotCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBEZWZhdWx0IHByZWNpc2lv
biBmb3IgZnJhZ21lbnQgc2hhZGVycy4KLS8vCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLXN0YXRp
YyBUU3RyaW5nIERlZmF1bHRQcmVjaXNpb25GcmFnbWVudCgpCi17Ci0gICAgVFN0cmluZyBzOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJub3QiLCBib29sMik7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgIm5vdCIsIGJvb2wzKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAibm90IiwgYm9vbDQpOwogCi0gICAgcy5hcHBl
bmQoVFN0cmluZygicHJlY2lzaW9uIG1lZGl1bXAgaW50OyIpKTsKLSAgICAvLyBObyBkZWZhdWx0
IHByZWNpc2lvbiBmb3IgZmxvYXQgaW4gZnJhZ21lbnQgc2hhZGVycworICAgIFRUeXBlICpzYW1w
bGVyMkQgPSBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJELCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSk7CisgICAgVFR5cGUgKnNhbXBsZXJDdWJlID0gbmV3IFRUeXBlKEVidFNhbXBsZXJDdWJlLCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSk7CiAKLSAgICByZXR1cm4gczsKLX0KKyAgICAvLwor
ICAgIC8vIFRleHR1cmUgRnVuY3Rpb25zIGZvciBHTFNMIEVTIDEuMAorICAgIC8vCisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0dXJlMkQiLCBzYW1wbGVyMkQsIGZs
b2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0dXJlMkRQ
cm9qIiwgc2FtcGxlcjJELCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQ0LCAidGV4dHVyZTJEUHJvaiIsIHNhbXBsZXIyRCwgZmxvYXQ0KTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmVDdWJlIiwgc2FtcGxlckN1YmUsIGZs
b2F0Myk7CiAKLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIEltcGxlbWVudGF0aW9uIGRl
cGVuZGVudCBidWlsdC1pbiBjb25zdGFudHMuCi0vLwotLy89PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1z
dGF0aWMgVFN0cmluZyBCdWlsdEluQ29uc3RhbnRzKFNoU2hhZGVyU3BlYyBzcGVjLCBjb25zdCBT
aEJ1aWx0SW5SZXNvdXJjZXMgJnJlc291cmNlcykKLXsKLSAgICBUU3RyaW5nU3RyZWFtIHM7Cisg
ICAgaWYgKHJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsKQorICAgIHsKKyAgICAgICAg
VFR5cGUgKnNhbXBsZXJFeHRlcm5hbE9FUyA9IG5ldyBUVHlwZShFYnRTYW1wbGVyRXh0ZXJuYWxP
RVMsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxKTsKIAotICAgIHMgPDwgImNvbnN0IGludCBn
bF9NYXhWZXJ0ZXhBdHRyaWJzID0gIiA8PCByZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyA8PCAi
OyI7Ci0gICAgcyA8PCAiY29uc3QgaW50IGdsX01heFZlcnRleFVuaWZvcm1WZWN0b3JzID0gIiA8
PCByZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgPDwgIjsiOworICAgICAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRCIsIHNhbXBsZXJFeHRlcm5h
bE9FUywgZmxvYXQyKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQs
ICJ0ZXh0dXJlMkRQcm9qIiwgc2FtcGxlckV4dGVybmFsT0VTLCBmbG9hdDMpOworICAgICAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRFByb2oiLCBzYW1wbGVy
RXh0ZXJuYWxPRVMsIGZsb2F0NCk7CisgICAgfQogCi0gICAgcyA8PCAiY29uc3QgaW50IGdsX01h
eFZhcnlpbmdWZWN0b3JzID0gIiA8PCByZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMgPDwgIjsi
OwotICAgIHMgPDwgImNvbnN0IGludCBnbF9NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyA9ICIg
PDwgcmVzb3VyY2VzLk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzIDw8ICI7IjsKLSAgICBzIDw8
ICJjb25zdCBpbnQgZ2xfTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9ICIgPDwgcmVzb3Vy
Y2VzLk1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgPDwgIjsiOwotICAgIHMgPDwgImNvbnN0
IGludCBnbF9NYXhUZXh0dXJlSW1hZ2VVbml0cyA9ICIgPDwgcmVzb3VyY2VzLk1heFRleHR1cmVJ
bWFnZVVuaXRzIDw8ICI7IjsKLSAgICBzIDw8ICJjb25zdCBpbnQgZ2xfTWF4RnJhZ21lbnRVbmlm
b3JtVmVjdG9ycyA9ICIgPDwgcmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgPDwg
IjsiOworICAgIGlmIChyZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFuZ2xlKQorICAgIHsKKyAg
ICAgICAgVFR5cGUgKnNhbXBsZXIyRFJlY3QgPSBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJEUmVjdCwg
RWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEpOwogCi0gICAgaWYgKHNwZWMgIT0gU0hfQ1NTX1NI
QURFUlNfU1BFQykKLSAgICAgICAgcyA8PCAiY29uc3QgaW50IGdsX01heERyYXdCdWZmZXJzID0g
IiA8PCByZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPDwgIjsiOworICAgICAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRFJlY3QiLCBzYW1wbGVyMkRSZWN0LCBm
bG9hdDIpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1
cmUyRFJlY3RQcm9qIiwgc2FtcGxlcjJEUmVjdCwgZmxvYXQzKTsKKyAgICAgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0dXJlMkRSZWN0UHJvaiIsIHNhbXBsZXIyRFJl
Y3QsIGZsb2F0NCk7CisgICAgfQogCi0gICAgcmV0dXJuIHMuc3RyKCk7Ci19CisgICAgaWYgKHR5
cGUgPT0gU0hfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0dXJlMkQiLCBzYW1wbGVyMkQsIGZsb2F0MiwgZmxvYXQx
KTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0dXJlMkRQ
cm9qIiwgc2FtcGxlcjJELCBmbG9hdDMsIGZsb2F0MSk7CisgICAgICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZTJEUHJvaiIsIHNhbXBsZXIyRCwgZmxvYXQ0LCBm
bG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1
cmVDdWJlIiwgc2FtcGxlckN1YmUsIGZsb2F0MywgZmxvYXQxKTsKKworICAgICAgICBpZiAocmVz
b3VyY2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcykKKyAgICAgICAgeworICAgICAgICAgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJkRmR4IiwgZmxvYXQxKTsKKyAgICAg
ICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAiZEZkeCIsIGZsb2F0Mik7
CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImRGZHgiLCBm
bG9hdDMpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJk
RmR4IiwgZmxvYXQ0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDEsICJkRmR5IiwgZmxvYXQxKTsKKyAgICAgICAgICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAiZEZkeSIsIGZsb2F0Mik7CisgICAgICAgICAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImRGZHkiLCBmbG9hdDMpOworICAgICAg
ICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJkRmR5IiwgZmxvYXQ0KTsK
KworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJmd2lkdGgi
LCBmbG9hdDEpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIs
ICJmd2lkdGgiLCBmbG9hdDIpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDMsICJmd2lkdGgiLCBmbG9hdDMpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDQsICJmd2lkdGgiLCBmbG9hdDQpOworICAgICAgICB9CisgICAgfQog
Ci12b2lkIFRCdWlsdEluczo6aW5pdGlhbGl6ZShTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJT
cGVjIHNwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaEJ1aWx0SW5SZXNv
dXJjZXMmIHJlc291cmNlcykKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFNIX0ZS
QUdNRU5UX1NIQURFUjoKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKERlZmF1bHRQ
cmVjaXNpb25GcmFnbWVudCgpKTsKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1
aWx0SW5GdW5jdGlvbnNDb21tb24ocmVzb3VyY2VzKSk7Ci0gICAgICAgIGJ1aWx0SW5TdHJpbmdz
LnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zRnJhZ21lbnQocmVzb3VyY2VzKSk7Ci0gICAgICAg
IGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhTdGFuZGFyZFVuaWZvcm1zKCkpOwotICAgICAgICBi
cmVhazsKKyAgICBpZih0eXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCisgICAgeworICAgICAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRExvZCIsIHNhbXBsZXIy
RCwgZmxvYXQyLCBmbG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0NCwgInRleHR1cmUyRFByb2pMb2QiLCBzYW1wbGVyMkQsIGZsb2F0MywgZmxvYXQxKTsKKyAg
ICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qTG9k
Iiwgc2FtcGxlcjJELCBmbG9hdDQsIGZsb2F0MSk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZUN1YmVMb2QiLCBzYW1wbGVyQ3ViZSwgZmxvYXQzLCBm
bG9hdDEpOworICAgIH0KIAotICAgIGNhc2UgU0hfVkVSVEVYX1NIQURFUjoKLSAgICAgICAgYnVp
bHRJblN0cmluZ3MucHVzaF9iYWNrKERlZmF1bHRQcmVjaXNpb25WZXJ0ZXgoKSk7Ci0gICAgICAg
IGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNl
cykpOwotICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc1Zl
cnRleChyZXNvdXJjZXMpKTsKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKFN0YW5k
YXJkVW5pZm9ybXMoKSk7Ci0gICAgICAgIGJyZWFrOworICAgIC8vCisgICAgLy8gRGVwdGggcmFu
Z2UgaW4gd2luZG93IGNvb3JkaW5hdGVzCisgICAgLy8KKyAgICBURmllbGRMaXN0ICpmaWVsZHMg
PSBOZXdQb29sVEZpZWxkTGlzdCgpOworICAgIFRGaWVsZCAqbmVhciA9IG5ldyBURmllbGQobmV3
IFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFHbG9iYWwsIDEpLCBOZXdQb29sVFN0cmluZygi
bmVhciIpKTsKKyAgICBURmllbGQgKmZhciA9IG5ldyBURmllbGQobmV3IFRUeXBlKEVidEZsb2F0
LCBFYnBIaWdoLCBFdnFHbG9iYWwsIDEpLCBOZXdQb29sVFN0cmluZygiZmFyIikpOworICAgIFRG
aWVsZCAqZGlmZiA9IG5ldyBURmllbGQobmV3IFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFH
bG9iYWwsIDEpLCBOZXdQb29sVFN0cmluZygiZGlmZiIpKTsKKyAgICBmaWVsZHMtPnB1c2hfYmFj
ayhuZWFyKTsKKyAgICBmaWVsZHMtPnB1c2hfYmFjayhmYXIpOworICAgIGZpZWxkcy0+cHVzaF9i
YWNrKGRpZmYpOworICAgIFRTdHJ1Y3R1cmUgKmRlcHRoUmFuZ2VTdHJ1Y3QgPSBuZXcgVFN0cnVj
dHVyZShOZXdQb29sVFN0cmluZygiZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnMiKSwgZmllbGRzKTsK
KyAgICBUVmFyaWFibGUgKmRlcHRoUmFuZ2VQYXJhbWV0ZXJzID0gbmV3IFRWYXJpYWJsZSgmZGVw
dGhSYW5nZVN0cnVjdC0+bmFtZSgpLCBkZXB0aFJhbmdlU3RydWN0LCB0cnVlKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnQoKmRlcHRoUmFuZ2VQYXJhbWV0ZXJzKTsKKyAgICBUVmFyaWFibGUgKmRl
cHRoUmFuZ2UgPSBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9EZXB0aFJhbmdlIiks
IFRUeXBlKGRlcHRoUmFuZ2VTdHJ1Y3QpKTsKKyAgICBkZXB0aFJhbmdlLT5zZXRRdWFsaWZpZXIo
RXZxVW5pZm9ybSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpkZXB0aFJhbmdlKTsKKworICAg
IC8vCisgICAgLy8gSW1wbGVtZW50YXRpb24gZGVwZW5kZW50IGJ1aWx0LWluIGNvbnN0YW50cy4K
KyAgICAvLworICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KCJnbF9NYXhWZXJ0ZXhBdHRy
aWJzIiwgcmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dENvbnN0SW50KCJnbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyIsIHJlc291cmNlcy5NYXhWZXJ0
ZXhVbmlmb3JtVmVjdG9ycyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoImdsX01h
eFZhcnlpbmdWZWN0b3JzIiwgcmVzb3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRDb25zdEludCgiZ2xfTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMiLCBy
ZXNvdXJjZXMuTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydENvbnN0SW50KCJnbF9NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzIiwgcmVzb3VyY2Vz
Lk1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydENv
bnN0SW50KCJnbF9NYXhUZXh0dXJlSW1hZ2VVbml0cyIsIHJlc291cmNlcy5NYXhUZXh0dXJlSW1h
Z2VVbml0cyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoImdsX01heEZyYWdtZW50
VW5pZm9ybVZlY3RvcnMiLCByZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyk7CiAK
LSAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UgJiYgIkxhbmd1YWdlIG5vdCBzdXBwb3J0ZWQiKTsK
KyAgICBpZiAoc3BlYyAhPSBTSF9DU1NfU0hBREVSU19TUEVDKQorICAgIHsKKyAgICAgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoImdsX01heERyYXdCdWZmZXJzIiwgcmVzb3VyY2VzLk1h
eERyYXdCdWZmZXJzKTsKICAgICB9Ci0KLSAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVp
bHRJbkNvbnN0YW50cyhzcGVjLCByZXNvdXJjZXMpKTsKIH0KIAogdm9pZCBJZGVudGlmeUJ1aWx0
SW5zKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywKLSAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcywKLSAgICAgICAgICAg
ICAgICAgICAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQorICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzLAorICAgICAgICAgICAgICAg
ICAgICAgIFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUpCiB7CiAgICAgLy8KICAgICAvLyBGaXJz
dCwgaW5zZXJ0IHNvbWUgc3BlY2lhbCBidWlsdC1pbiB2YXJpYWJsZXMgdGhhdCBhcmUgbm90IGlu
IApAQCAtNTM5LDYgKzQzOSwxMCBAQCB2b2lkIElkZW50aWZ5QnVpbHRJbnMoU2hTaGFkZXJUeXBl
IHR5cGUsCiAgICAgICAgIGlmIChzcGVjICE9IFNIX0NTU19TSEFERVJTX1NQRUMpIHsKICAgICAg
ICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygi
Z2xfRnJhZ0NvbG9yIiksICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRp
dW0sIEV2cUZyYWdDb2xvciwgICA0KSkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGF0YVtnbF9NYXhEcmF3QnVm
ZmVyc10iKSwgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0RhdGEsICAgIDQpKSk7
CisgICAgICAgICAgICBpZiAocmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoKSB7CisgICAgICAgICAg
ICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJn
bF9GcmFnRGVwdGhFWFQiKSwgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgcmVzb3VyY2VzLkZy
YWdtZW50UHJlY2lzaW9uSGlnaCA/IEVicEhpZ2ggOiBFYnBNZWRpdW0sIEV2cUZyYWdEZXB0aCwg
MSkpKTsKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS5yZWxhdGVUb0V4dGVuc2lvbigiZ2xf
RnJhZ0RlcHRoRVhUIiwgIkdMX0VYVF9mcmFnX2RlcHRoIik7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFi
bGUoTmV3UG9vbFRTdHJpbmcoImNzc19NaXhDb2xvciIpLCAgICAgICAgICAgICAgICAgICBUVHlw
ZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFHbG9iYWwsICAgICAgNCkpKTsKICAgICAgICAgICAg
IHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiY3NzX0Nv
bG9yTWF0cml4IiksICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2
cUdsb2JhbCwgICAgICA0LCB0cnVlKSkpOwpAQCAtNTYwLDggKzQ2NCw2IEBAIHZvaWQgSWRlbnRp
ZnlCdWlsdElucyhTaFNoYWRlclR5cGUgdHlwZSwKICAgICAvLyBleHBlY3RlZCB0byBiZSByZXNv
bHZlZCB0aHJvdWdoIGEgbGlicmFyeSBvZiBmdW5jdGlvbnMsIHZlcnN1cyBhcwogICAgIC8vIG9w
ZXJhdGlvbnMuCiAgICAgLy8KLSAgICBzeW1ib2xUYWJsZS5yZWxhdGVUb09wZXJhdG9yKCJub3Qi
LCAgICAgICAgICAgICAgRU9wVmVjdG9yTG9naWNhbE5vdCk7Ci0KICAgICBzeW1ib2xUYWJsZS5y
ZWxhdGVUb09wZXJhdG9yKCJtYXRyaXhDb21wTXVsdCIsICAgRU9wTXVsKTsKIAogICAgIHN5bWJv
bFRhYmxlLnJlbGF0ZVRvT3BlcmF0b3IoImVxdWFsIiwgICAgICAgICAgICBFT3BWZWN0b3JFcXVh
bCk7CkBAIC02MTIsNiArNTE0LDcgQEAgdm9pZCBJZGVudGlmeUJ1aWx0SW5zKFNoU2hhZGVyVHlw
ZSB0eXBlLAogICAgIAogICAgIHN5bWJvbFRhYmxlLnJlbGF0ZVRvT3BlcmF0b3IoImFueSIsICAg
ICAgICAgIEVPcEFueSk7CiAgICAgc3ltYm9sVGFibGUucmVsYXRlVG9PcGVyYXRvcigiYWxsIiwg
ICAgICAgICAgRU9wQWxsKTsKKyAgICBzeW1ib2xUYWJsZS5yZWxhdGVUb09wZXJhdG9yKCJub3Qi
LCAgICAgICAgICBFT3BWZWN0b3JMb2dpY2FsTm90KTsKIAogICAgIC8vIE1hcCBsYW5ndWFnZS1z
cGVjaWZpYyBvcGVyYXRvcnMuCiAgICAgc3dpdGNoKHR5cGUpIHsKQEAgLTY1Niw0ICs1NTksNiBA
QCB2b2lkIEluaXRFeHRlbnNpb25CZWhhdmlvcihjb25zdCBTaEJ1aWx0CiAgICAgICAgIGV4dEJl
aGF2aW9yWyJHTF9BUkJfdGV4dHVyZV9yZWN0YW5nbGUiXSA9IEVCaFVuZGVmaW5lZDsKICAgICBp
ZiAocmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMpCiAgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9F
WFRfZHJhd19idWZmZXJzIl0gPSBFQmhVbmRlZmluZWQ7CisgICAgaWYgKHJlc291cmNlcy5FWFRf
ZnJhZ19kZXB0aCkKKyAgICAgICAgZXh0QmVoYXZpb3JbIkdMX0VYVF9mcmFnX2RlcHRoIl0gPSBF
QmhVbmRlZmluZWQ7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvSW5pdGlhbGl6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Jbml0aWFsaXplLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTEx
LDE5ICsxMSw3IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvU2hIYW5kbGUuaCIKICNpbmNsdWRlICJj
b21waWxlci9TeW1ib2xUYWJsZS5oIgogCi10eXBlZGVmIFRWZWN0b3I8VFN0cmluZz4gVEJ1aWx0
SW5TdHJpbmdzOwotCi1jbGFzcyBUQnVpbHRJbnMgewotcHVibGljOgotICAgIFBPT0xfQUxMT0NB
VE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikKLQotICAgIHZvaWQgaW5pdGlhbGl6
ZShTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKTsKLSAgICBjb25zdCBUQnVp
bHRJblN0cmluZ3MmIGdldEJ1aWx0SW5TdHJpbmdzKCkgeyByZXR1cm4gYnVpbHRJblN0cmluZ3M7
IH0KLQotcHJvdGVjdGVkOgotICAgIFRCdWlsdEluU3RyaW5ncyBidWlsdEluU3RyaW5nczsKLX07
Cit2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnMoU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVy
U3BlYyBzcGVjLCBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgJnJlc291cmNlcywgVFN5bWJvbFRh
YmxlICZ0YWJsZSk7CiAKIHZvaWQgSWRlbnRpZnlCdWlsdElucyhTaFNoYWRlclR5cGUgdHlwZSwg
U2hTaGFkZXJTcGVjIHNwZWMsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hCdWlsdElu
UmVzb3VyY2VzJiByZXNvdXJjZXMsCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcAkocmV2aXNpb24gMTUyOTc5KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgogLy8KQEAgLTEzMSw3ICsxMzEsNyBAQCBjb25zdCBjaGFyKiBnZXRPcGVyYXRvclN0
cmluZyhUT3BlcmF0b3IgCiAvLwogLy8gUmV0dXJucyB0aGUgYWRkZWQgbm9kZS4KIC8vCi1USW50
ZXJtU3ltYm9sKiBUSW50ZXJtZWRpYXRlOjphZGRTeW1ib2woaW50IGlkLCBjb25zdCBUU3RyaW5n
JiBuYW1lLCBjb25zdCBUVHlwZSYgdHlwZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVN5bWJv
bCogVEludGVybWVkaWF0ZTo6YWRkU3ltYm9sKGludCBpZCwgY29uc3QgVFN0cmluZyYgbmFtZSwg
Y29uc3QgVFR5cGUmIHR5cGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVy
bVN5bWJvbCogbm9kZSA9IG5ldyBUSW50ZXJtU3ltYm9sKGlkLCBuYW1lLCB0eXBlKTsKICAgICBu
b2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFRJbnRlcm1TeW1ib2wqIFRJ
bnRlcm1lZGlhdGU6OmFkZFN5bWJvbCgKIC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgog
Ly8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQmluYXJ5TWF0aChUT3BlcmF0b3Ig
b3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYyBs
aW5lLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRp
YXRlOjphZGRCaW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50
ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3ltYm9sVGFibGUmIHN5
bWJvbFRhYmxlKQogewogICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBFT3BFcXVhbDoK
QEAgLTIwMCw4ICsyMDAsNiBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFy
eU1hCiAgICAgLy8gb25lIGFuZCBwcm9tb3RlIGl0IHRvIHRoZSByaWdodCB0eXBlLgogICAgIC8v
CiAgICAgVEludGVybUJpbmFyeSogbm9kZSA9IG5ldyBUSW50ZXJtQmluYXJ5KG9wKTsKLSAgICBp
ZiAobGluZSA9PSAwKQotICAgICAgICBsaW5lID0gcmlnaHQtPmdldExpbmUoKTsKICAgICBub2Rl
LT5zZXRMaW5lKGxpbmUpOwogCiAgICAgbm9kZS0+c2V0TGVmdChsZWZ0KTsKQEAgLTIzMCwxNSAr
MjI4LDEzIEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQmluYXJ5TWEKIC8vCiAv
LyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0
ZTo6YWRkQXNzaWduKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlw
ZWQqIHJpZ2h0LCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6
OmFkZEFzc2lnbihUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVk
KiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICAvLwogICAgIC8vIExpa2Ug
YWRkaW5nIGJpbmFyeSBtYXRoLCBleGNlcHQgdGhlIGNvbnZlcnNpb24gY2FuIG9ubHkgZ28KICAg
ICAvLyBmcm9tIHJpZ2h0IHRvIGxlZnQuCiAgICAgLy8KICAgICBUSW50ZXJtQmluYXJ5KiBub2Rl
ID0gbmV3IFRJbnRlcm1CaW5hcnkob3ApOwotICAgIGlmIChsaW5lID09IDApCi0gICAgICAgIGxp
bmUgPSBsZWZ0LT5nZXRMaW5lKCk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAgIFRJ
bnRlcm1UeXBlZCogY2hpbGQgPSBhZGRDb252ZXJzaW9uKG9wLCBsZWZ0LT5nZXRUeXBlKCksIHJp
Z2h0KTsKQEAgLTI2MCwxMSArMjU2LDkgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjph
ZGRBc3NpZ24oVAogLy8gUmV0dXJucyB0aGUgYWRkZWQgbm9kZS4KIC8vIFRoZSBjYWxsZXIgc2hv
dWxkIHNldCB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQq
IFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBiYXNl
LCBUSW50ZXJtVHlwZWQqIGluZGV4LCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRJ
bnRlcm1lZGlhdGU6OmFkZEluZGV4KFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBU
SW50ZXJtVHlwZWQqIGluZGV4LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRl
cm1CaW5hcnkqIG5vZGUgPSBuZXcgVEludGVybUJpbmFyeShvcCk7Ci0gICAgaWYgKGxpbmUgPT0g
MCkKLSAgICAgICAgbGluZSA9IGluZGV4LT5nZXRMaW5lKCk7CiAgICAgbm9kZS0+c2V0TGluZShs
aW5lKTsKICAgICBub2RlLT5zZXRMZWZ0KGJhc2UpOwogICAgIG5vZGUtPnNldFJpZ2h0KGluZGV4
KTsKQEAgLTI3OSwxMyArMjczLDEzIEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRk
SW5kZXgoVE8KIC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8KLVRJbnRlcm1UeXBl
ZCogVEludGVybWVkaWF0ZTo6YWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUq
IGNoaWxkTm9kZSwgVFNvdXJjZUxvYyBsaW5lLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQor
VEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBU
SW50ZXJtTm9kZSogY2hpbGROb2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3ltYm9sVGFi
bGUmIHN5bWJvbFRhYmxlKQogewogICAgIFRJbnRlcm1VbmFyeSogbm9kZTsKICAgICBUSW50ZXJt
VHlwZWQqIGNoaWxkID0gY2hpbGROb2RlLT5nZXRBc1R5cGVkKCk7CiAKICAgICBpZiAoY2hpbGQg
PT0gMCkgewotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsICJCYWQgdHlwZSBpbiBBZGRVbmFyeU1hdGgiLCBsaW5lKTsKKyAgICAgICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBsaW5lLCAiQmFkIHR5cGUgaW4gQWRk
VW5hcnlNYXRoIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMzQ4LDggKzM0Miw2
IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkVW5hcnlNYXQKICAgICAvLyBNYWtl
IGEgbmV3IG5vZGUgZm9yIHRoZSBvcGVyYXRvci4KICAgICAvLwogICAgIG5vZGUgPSBuZXcgVElu
dGVybVVuYXJ5KG9wKTsKLSAgICBpZiAobGluZSA9PSAwKQotICAgICAgICBsaW5lID0gY2hpbGQt
PmdldExpbmUoKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwogICAgIG5vZGUtPnNldE9wZXJh
bmQoY2hpbGQpOwogCkBAIC0zNzYsNyArMzY4LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRp
YXRlOjphZGRVbmFyeU1hdAogLy8gUmV0dXJucyBhbiBhZ2dyZWdhdGUgbm9kZSwgd2hpY2ggY291
bGQgYmUgdGhlIG9uZSBwYXNzZWQgaW4gaWYKIC8vIGl0IHdhcyBhbHJlYWR5IGFuIGFnZ3JlZ2F0
ZSBidXQgbm8gb3BlcmF0b3Igd2FzIHNldC4KIC8vCi1USW50ZXJtQWdncmVnYXRlKiBUSW50ZXJt
ZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSogbm9kZSwgVE9wZXJhdG9y
IG9wLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpz
ZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSogbm9kZSwgVE9wZXJhdG9yIG9wLCBjb25z
dCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ05vZGU7CiAK
QEAgLTM5MSw4ICszODMsNiBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRB
Z2dyCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgYWdnTm9kZSA9IG5ldyBUSW50ZXJtQWdn
cmVnYXRlKCk7CiAgICAgICAgICAgICBhZ2dOb2RlLT5nZXRTZXF1ZW5jZSgpLnB1c2hfYmFjayhu
b2RlKTsKLSAgICAgICAgICAgIGlmIChsaW5lID09IDApCi0gICAgICAgICAgICAgICAgbGluZSA9
IG5vZGUtPmdldExpbmUoKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBhZ2dOb2Rl
ID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoKTsKQEAgLTQwMSw4ICszOTEsNyBAQCBUSW50ZXJtQWdn
cmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyCiAgICAgLy8gU2V0IHRoZSBvcGVyYXRvci4K
ICAgICAvLwogICAgIGFnZ05vZGUtPnNldE9wKG9wKTsKLSAgICBpZiAobGluZSAhPSAwKQotICAg
ICAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOworICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7
CiAKICAgICByZXR1cm4gYWdnTm9kZTsKIH0KQEAgLTQ5MSw3ICs0ODAsNyBAQCBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNpCiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0SW50OiAgIG5ld09wID0gRU9wQ29udkludFRvRmxvYXQ7ICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBFYnRCb29sOiAgbmV3T3AgPSBFT3BDb252Qm9vbFRvRmxvYXQ7IGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlv
biBub2RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAi
QmFkIHByb21vdGlvbiBub2RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01MDAsNyArNDg5
LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb252ZXJzaQogICAgICAgICAg
ICAgICAgICAgICBjYXNlIEVidEludDogICBuZXdPcCA9IEVPcENvbnZJbnRUb0Jvb2w7ICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6IG5ld09wID0gRU9wQ29udkZs
b2F0VG9Cb29sOyBicmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgIkJhZCBwcm9tb3Rpb24gbm9kZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5v
ZGUtPmdldExpbmUoKSwgIkJhZCBwcm9tb3Rpb24gbm9kZSIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNTA5LDEyICs0OTgsMTIgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRD
b252ZXJzaQogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6ICAgbmV3T3AgPSBFT3BD
b252Qm9vbFRvSW50OyAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6
ICBuZXdPcCA9IEVPcENvbnZGbG9hdFRvSW50OyBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShF
UHJlZml4SW50ZXJuYWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gbm9kZSIsIG5vZGUtPmdldExpbmUo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJhZCBwcm9tb3Rpb24gbm9kZSIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJCYWQgcHJvbW90
aW9uIHR5cGUiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFkIHBy
b21vdGlvbiB0eXBlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIApA
QCAtNTM0LDcgKzUyMyw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQ29udmVy
c2kKIC8vIFJldHVybnMgdGhlIHJlc3VsdGluZyBhZ2dyZWdhdGUsIHVubGVzcyAwIHdhcyBwYXNz
ZWQgaW4gZm9yCiAvLyBib3RoIGV4aXN0aW5nIG5vZGVzLgogLy8KLVRJbnRlcm1BZ2dyZWdhdGUq
IFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2dyZWdhdGUoVEludGVybU5vZGUqIGxlZnQsIFRJbnRlcm1O
b2RlKiByaWdodCwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVk
aWF0ZTo6Z3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVmdCwgVEludGVybU5vZGUqIHJpZ2h0
LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQg
PT0gMCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01NTEsOCArNTQwLDcgQEAgVEludGVybUFnZ3Jl
Z2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jvd0FnZwogICAgIGlmIChyaWdodCkKICAgICAgICAgYWdn
Tm9kZS0+Z2V0U2VxdWVuY2UoKS5wdXNoX2JhY2socmlnaHQpOwogCi0gICAgaWYgKGxpbmUgIT0g
MCkKLSAgICAgICAgYWdnTm9kZS0+c2V0TGluZShsaW5lKTsKKyAgICBhZ2dOb2RlLT5zZXRMaW5l
KGxpbmUpOwogCiAgICAgcmV0dXJuIGFnZ05vZGU7CiB9CkBAIC01NjIsMTggKzU1MCwxNCBAQCBU
SW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpncm93QWdnCiAvLwogLy8gUmV0dXJucyBh
biBhZ2dyZWdhdGUsIHVubGVzcyAwIHdhcyBwYXNzZWQgaW4gZm9yIHRoZSBleGlzdGluZyBub2Rl
LgogLy8KLVRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUoVElu
dGVybU5vZGUqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1BZ2dyZWdhdGUqIFRJbnRl
cm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUpCiB7CiAgICAgaWYgKG5vZGUgPT0gMCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICBUSW50ZXJtQWdncmVnYXRlKiBhZ2dOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7CiAgICAg
YWdnTm9kZS0+Z2V0U2VxdWVuY2UoKS5wdXNoX2JhY2sobm9kZSk7Ci0KLSAgICBpZiAobGluZSAh
PSAwKQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOwotICAgIGVsc2UKLSAgICAgICAg
YWdnTm9kZS0+c2V0TGluZShub2RlLT5nZXRMaW5lKCkpOworICAgIGFnZ05vZGUtPnNldExpbmUo
bGluZSk7CiAKICAgICByZXR1cm4gYWdnTm9kZTsKIH0KQEAgLTU4NSw3ICs1NjksNyBAQCBUSW50
ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjptYWtlQWdnCiAvLwogLy8gUmV0dXJucyB0aGUg
c2VsZWN0aW9uIG5vZGUgY3JlYXRlZC4KIC8vCi1USW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6
YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQYWlyIG5vZGVQYWly
LCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0
aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQYWlyIG5vZGVQYWlyLCBjb25zdCBU
U291cmNlTG9jJiBsaW5lKQogewogICAgIC8vCiAgICAgLy8gRm9yIGNvbXBpbGUgdGltZSBjb25z
dGFudCBzZWxlY3Rpb25zLCBwcnVuZSB0aGUgY29kZSBhbmQKQEAgLTU5Myw3ICs1NzcsNyBAQCBU
SW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uCiAgICAgLy8KIAogICAgIGlm
IChjb25kLT5nZXRBc1R5cGVkKCkgJiYgY29uZC0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50
VW5pb24oKSkgewotICAgICAgICBpZiAoY29uZC0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50
VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0QkNvbnN0KCkgPT0gdHJ1ZSkKKyAg
ICAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRCQ29uc3QoMCkgPT0gdHJ1
ZSkKICAgICAgICAgICAgIHJldHVybiBub2RlUGFpci5ub2RlMSA/IHNldEFnZ3JlZ2F0ZU9wZXJh
dG9yKG5vZGVQYWlyLm5vZGUxLCBFT3BTZXF1ZW5jZSwgbm9kZVBhaXIubm9kZTEtPmdldExpbmUo
KSkgOiBOVUxMOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gbm9kZVBhaXIubm9k
ZTIgPyBzZXRBZ2dyZWdhdGVPcGVyYXRvcihub2RlUGFpci5ub2RlMiwgRU9wU2VxdWVuY2UsIG5v
ZGVQYWlyLm5vZGUyLT5nZXRMaW5lKCkpIDogTlVMTDsKQEAgLTYwNiw3ICs1OTAsNyBAQCBUSW50
ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uCiB9CiAKIAotVEludGVybVR5cGVk
KiBUSW50ZXJtZWRpYXRlOjphZGRDb21tYShUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBl
ZCogcmlnaHQsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6
YWRkQ29tbWEoVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBU
U291cmNlTG9jJiBsaW5lKQogewogICAgIGlmIChsZWZ0LT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVy
KCkgPT0gRXZxQ29uc3QgJiYgcmlnaHQtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFD
b25zdCkgewogICAgICAgICByZXR1cm4gcmlnaHQ7CkBAIC02MjYsNyArNjEwLDcgQEAgVEludGVy
bVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb21tYShUSQogLy8KIC8vIFJldHVybnMgdGhlIHNl
bGVjdGlvbiBub2RlIGNyZWF0ZWQsIG9yIDAgaWYgb25lIGNvdWxkIG5vdCBiZS4KIC8vCi1USW50
ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQs
IFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZhbHNlQmxvY2ssIFRTb3Vy
Y2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJ
bnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCog
ZmFsc2VCbG9jaywgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICAvLwogICAgIC8vIEdl
dCBjb21wYXRpYmxlIHR5cGVzLgpAQCAtNjQ3LDcgKzYzMSw3IEBAIFRJbnRlcm1UeXBlZCogVElu
dGVybWVkaWF0ZTo6YWRkU2VsZWN0aW8KICAgICAvLwogCiAgICAgaWYgKGNvbmQtPmdldEFzQ29u
c3RhbnRVbmlvbigpICYmIHRydWVCbG9jay0+Z2V0QXNDb25zdGFudFVuaW9uKCkgJiYgZmFsc2VC
bG9jay0+Z2V0QXNDb25zdGFudFVuaW9uKCkpIHsKLSAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29u
c3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRCQ29uc3QoKSkKKyAgICAg
ICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRCQ29uc3QoMCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZUJsb2NrOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2VCbG9jazsKQEAgLTY2OSw3ICs2NTMsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlh
dGU6OmFkZFNlbGVjdGlvCiAvLyBSZXR1cm5zIHRoZSBjb25zdGFudCB1bmlvbiBub2RlIGNyZWF0
ZWQuCiAvLwogCi1USW50ZXJtQ29uc3RhbnRVbmlvbiogVEludGVybWVkaWF0ZTo6YWRkQ29uc3Rh
bnRVbmlvbihDb25zdGFudFVuaW9uKiB1bmlvbkFycmF5UG9pbnRlciwgY29uc3QgVFR5cGUmIHQs
IFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1Db25zdGFudFVuaW9uKiBUSW50ZXJtZWRpYXRlOjph
ZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXlQb2ludGVyLCBjb25zdCBU
VHlwZSYgdCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJtQ29uc3RhbnRV
bmlvbiogbm9kZSA9IG5ldyBUSW50ZXJtQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5UG9pbnRlciwg
dCk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKQEAgLTY3Nyw3ICs2NjEsNyBAQCBUSW50ZXJt
Q29uc3RhbnRVbmlvbiogVEludGVybWVkaWF0ZTo6YWRkCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAK
LVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU3dpenpsZShUVmVjdG9yRmllbGRzJiBm
aWVsZHMsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRk
U3dpenpsZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7
CiAKICAgICBUSW50ZXJtQWdncmVnYXRlKiBub2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9w
U2VxdWVuY2UpOwpAQCAtNzAwLDcgKzY4NCw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0
ZTo6YWRkU3dpenpsZSgKIC8vCiAvLyBDcmVhdGUgbG9vcCBub2Rlcy4KIC8vCi1USW50ZXJtTm9k
ZSogVEludGVybWVkaWF0ZTo6YWRkTG9vcChUTG9vcFR5cGUgdHlwZSwgVEludGVybU5vZGUqIGlu
aXQsIFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiBleHByLCBUSW50ZXJtTm9kZSog
Ym9keSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybU5vZGUqIFRJbnRlcm1lZGlhdGU6OmFkZExv
b3AoVExvb3BUeXBlIHR5cGUsIFRJbnRlcm1Ob2RlKiBpbml0LCBUSW50ZXJtVHlwZWQqIGNvbmQs
IFRJbnRlcm1UeXBlZCogZXhwciwgVEludGVybU5vZGUqIGJvZHksIGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUpCiB7CiAgICAgVEludGVybU5vZGUqIG5vZGUgPSBuZXcgVEludGVybUxvb3AodHlwZSwg
aW5pdCwgY29uZCwgZXhwciwgYm9keSk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKQEAgLTcx
MSwxMiArNjk1LDEyIEBAIFRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRMb29wKFRMb28K
IC8vCiAvLyBBZGQgYnJhbmNoZXMuCiAvLwotVEludGVybUJyYW5jaCogVEludGVybWVkaWF0ZTo6
YWRkQnJhbmNoKFRPcGVyYXRvciBicmFuY2hPcCwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybUJy
YW5jaCogVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVyYXRvciBicmFuY2hPcCwgY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICByZXR1cm4gYWRkQnJhbmNoKGJyYW5jaE9wLCAwLCBs
aW5lKTsKIH0KIAotVEludGVybUJyYW5jaCogVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVy
YXRvciBicmFuY2hPcCwgVEludGVybVR5cGVkKiBleHByZXNzaW9uLCBUU291cmNlTG9jIGxpbmUp
CitUSW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5j
aE9wLCBUSW50ZXJtVHlwZWQqIGV4cHJlc3Npb24sIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7
CiAgICAgVEludGVybUJyYW5jaCogbm9kZSA9IG5ldyBUSW50ZXJtQnJhbmNoKGJyYW5jaE9wLCBl
eHByZXNzaW9uKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtODQ2LDYgKzgzMCw3IEBA
IGJvb2wgVEludGVybVVuYXJ5Ojpwcm9tb3RlKFRJbmZvU2luayYpCiAgICAgfQogCiAgICAgc2V0
VHlwZShvcGVyYW5kLT5nZXRUeXBlKCkpOworICAgIHR5cGUuc2V0UXVhbGlmaWVyKEV2cVRlbXBv
cmFyeSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTg2MCw3ICs4NDUsNyBAQCBib29sIFRJ
bnRlcm1CaW5hcnk6OnByb21vdGUoVEluZm9TaW5rJiBpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlv
biBvbmx5IGhhbmRsZXMgc2NhbGFycywgdmVjdG9ycywgYW5kIG1hdHJpY2VzLgogICAgIGlmIChs
ZWZ0LT5pc0FycmF5KCkgfHwgcmlnaHQtPmlzQXJyYXkoKSkgewotICAgICAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJJbnZhbGlkIG9wZXJhdGlvbiBmb3Ig
YXJyYXlzIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJJbnZhbGlkIG9wZXJhdGlvbiBmb3IgYXJyYXlz
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTk2NSw3ICs5NTAsNyBAQCBi
b29sIFRJbnRlcm1CaW5hcnk6OnByb21vdGUoVEluZm9TaW5rJiBpCiAgICAgICAgICAgICAgICAg
ICAgIHNldFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24sIEV2cVRlbXBvcmFy
eSwgc2l6ZSwgZmFsc2UpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxF
cnJvciwgIk1pc3NpbmcgZWxzZXMiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiTWlzc2lu
ZyBlbHNlcyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTk0LDcgKzk3OSw3IEBAIGJvb2wgVEludGVybUJpbmFy
eTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKICAgICAgICAgICAgICAgICAgICAgc2V0VHlwZShUVHlw
ZShiYXNpY1R5cGUsIGhpZ2hlclByZWNpc2lvbiwgRXZxVGVtcG9yYXJ5LCBzaXplLCBmYWxzZSkp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiTWlzc2luZyBl
bHNlcyIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJNaXNzaW5nIGVsc2VzIik7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMDM0LDIzICsxMDE5LDIyIEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShU
SW5mb1NpbmsmIGkKIAogYm9vbCBDb21wYXJlU3RydWN0KGNvbnN0IFRUeXBlJiBsZWZ0Tm9kZVR5
cGUsIENvbnN0YW50VW5pb24qIHJpZ2h0VW5pb25BcnJheSwgQ29uc3RhbnRVbmlvbiogbGVmdFVu
aW9uQXJyYXkpCiB7Ci0gICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSBsZWZ0Tm9kZVR5cGUu
Z2V0U3RydWN0KCk7CisgICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gbGVmdE5vZGVUeXBl
LmdldFN0cnVjdCgpLT5maWVsZHMoKTsKIAotICAgIHNpemVfdCBzdHJ1Y3RTaXplID0gZmllbGRz
LT5zaXplKCk7Ci0gICAgaW50IGluZGV4ID0gMDsKKyAgICBzaXplX3Qgc3RydWN0U2l6ZSA9IGZp
ZWxkcy5zaXplKCk7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKIAogICAgIGZvciAoc2l6ZV90IGog
PSAwOyBqIDwgc3RydWN0U2l6ZTsgaisrKSB7Ci0gICAgICAgIGludCBzaXplID0gKCpmaWVsZHMp
W2pdLnR5cGUtPmdldE9iamVjdFNpemUoKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBz
aXplOyBpKyspIHsKLSAgICAgICAgICAgIGlmICgoKmZpZWxkcylbal0udHlwZS0+Z2V0QmFzaWNU
eXBlKCkgPT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFDb21wYXJlU3RydWN0
dXJlKCooKmZpZWxkcylbal0udHlwZSwgJnJpZ2h0VW5pb25BcnJheVtpbmRleF0sICZsZWZ0VW5p
b25BcnJheVtpbmRleF0pKQorICAgICAgICBzaXplX3Qgc2l6ZSA9IGZpZWxkc1tqXS0+dHlwZSgp
LT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
aSsrKSB7CisgICAgICAgICAgICBpZiAoZmllbGRzW2pdLT50eXBlKCktPmdldEJhc2ljVHlwZSgp
ID09IEVidFN0cnVjdCkgeworICAgICAgICAgICAgICAgIGlmICghQ29tcGFyZVN0cnVjdHVyZSgq
KGZpZWxkc1tqXS0+dHlwZSgpKSwgJnJpZ2h0VW5pb25BcnJheVtpbmRleF0sICZsZWZ0VW5pb25B
cnJheVtpbmRleF0pKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChsZWZ0VW5pb25BcnJheVtpbmRleF0g
IT0gcmlnaHRVbmlvbkFycmF5W2luZGV4XSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgICAgIGluZGV4Kys7CiAgICAgICAgICAgICB9Ci0KICAgICAgICAg
fQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNjIsMTAgKzEwNDYsMTAgQEAgYm9vbCBD
b21wYXJlU3RydWN0dXJlKGNvbnN0IFRUeXBlJiBsZWZ0TgogICAgICAgICBUVHlwZSB0eXBlV2l0
aG91dEFycmF5bmVzcyA9IGxlZnROb2RlVHlwZTsKICAgICAgICAgdHlwZVdpdGhvdXRBcnJheW5l
c3MuY2xlYXJBcnJheW5lc3MoKTsKIAotICAgICAgICBpbnQgYXJyYXlTaXplID0gbGVmdE5vZGVU
eXBlLmdldEFycmF5U2l6ZSgpOworICAgICAgICBzaXplX3QgYXJyYXlTaXplID0gbGVmdE5vZGVU
eXBlLmdldEFycmF5U2l6ZSgpOwogCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXlT
aXplOyArK2kpIHsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSB0eXBlV2l0aG91dEFycmF5bmVz
cy5nZXRPYmplY3RTaXplKCkgKiBpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
cmF5U2l6ZTsgKytpKSB7CisgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gdHlwZVdpdGhvdXRB
cnJheW5lc3MuZ2V0T2JqZWN0U2l6ZSgpICogaTsKICAgICAgICAgICAgIGlmICghQ29tcGFyZVN0
cnVjdCh0eXBlV2l0aG91dEFycmF5bmVzcywgJnJpZ2h0VW5pb25BcnJheVtvZmZzZXRdLCAmbGVm
dFVuaW9uQXJyYXlbb2Zmc2V0XSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CkBAIC0xMDg1LDcgKzEwNjksNyBAQCBib29sIENvbXBhcmVTdHJ1Y3R1cmUoY29uc3Qg
VFR5cGUmIGxlZnROCiBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkKFRP
cGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBjb25zdGFudE5vZGUsIFRJbmZvU2luayYgaW5mb1Np
bmspCiB7CiAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IGdldFVuaW9uQXJyYXlQb2lu
dGVyKCk7Ci0gICAgaW50IG9iamVjdFNpemUgPSBnZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwor
ICAgIHNpemVfdCBvYmplY3RTaXplID0gZ2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKIAogICAg
IGlmIChjb25zdGFudE5vZGUpIHsgIC8vIGJpbmFyeSBvcGVyYXRpb25zCiAgICAgICAgIFRJbnRl
cm1Db25zdGFudFVuaW9uICpub2RlID0gY29uc3RhbnROb2RlLT5nZXRBc0NvbnN0YW50VW5pb24o
KTsKQEAgLTEwOTUsMTMgKzEwNzksMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRV
bmlvbjo6Zm9sZAogICAgICAgICAvLyBmb3IgYSBjYXNlIGxpa2UgZmxvYXQgZiA9IDEuMiArIHZl
YzQoMiwzLDQsNSk7CiAgICAgICAgIGlmIChjb25zdGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmpl
Y3RTaXplKCkgPT0gMSAmJiBvYmplY3RTaXplID4gMSkgewogICAgICAgICAgICAgcmlnaHRVbmlv
bkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7ICsraSkKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgKytpKQogICAgICAgICAgICAgICAgIHJpZ2h0VW5pb25B
cnJheVtpXSA9ICpub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwogICAgICAgICAgICAgcmV0
dXJuVHlwZSA9IGdldFR5cGUoKTsKICAgICAgICAgfSBlbHNlIGlmIChjb25zdGFudE5vZGUtPmdl
dFR5cGUoKS5nZXRPYmplY3RTaXplKCkgPiAxICYmIG9iamVjdFNpemUgPT0gMSkgewogICAgICAg
ICAgICAgLy8gZm9yIGEgY2FzZSBsaWtlIGZsb2F0IGYgPSB2ZWM0KDIsMyw0LDUpICsgMS4yOwog
ICAgICAgICAgICAgdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW2NvbnN0YW50Tm9kZS0+
Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKV07Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsgKytpKQorICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb25zdGFudE5vZGUtPmdldFR5cGUoKS5nZXRP
YmplY3RTaXplKCk7ICsraSkKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5W2ldID0gKmdldFVu
aW9uQXJyYXlQb2ludGVyKCk7CiAgICAgICAgICAgICByZXR1cm5UeXBlID0gbm9kZS0+Z2V0VHlw
ZSgpOwogICAgICAgICAgICAgb2JqZWN0U2l6ZSA9IGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdl
dE9iamVjdFNpemUoKTsKQEAgLTExMTUsMTQgKzEwOTksMTQgQEAgVEludGVybVR5cGVkKiBUSW50
ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BBZGQ6CiAgICAgICAg
ICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsK
ICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAg
ICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldICsgcmlnaHRVbmlv
bkFycmF5W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgRU9wU3ViOgogICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0g
bmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgey8vIHN1cHBv
cnQgTVNWQysrNi4wCi0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2Jq
ZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5
W2ldID0gdW5pb25BcnJheVtpXSAtIHJpZ2h0VW5pb25BcnJheVtpXTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTMyLDEzICsxMTE2LDEzIEBAIFRJbnRl
cm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgIGNhc2UgRU9w
TWF0cml4VGltZXNTY2FsYXI6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBN
U1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RT
aXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Jq
ZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0g
PSB1bmlvbkFycmF5W2ldICogcmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNN
YXRyaXg6CiAgICAgICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSAhPSBF
YnRGbG9hdCB8fCBub2RlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCkgewotICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJD
b25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciBtYXRyaXggbXVsdGlwbHkiLCBnZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRv
bmUgZm9yIG1hdHJpeCBtdWx0aXBseSIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4w
CkBAIC0xMTU3LDExICsxMTQxLDExIEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5p
b246OmZvbGQKICAgICAgICAgICAgIGNhc2UgRU9wRGl2OgogICAgICAgICAgICAgICAgIHRlbXBD
b25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAg
ICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBF
YnRGbG9hdDoKICAgICAgICAgICAgICAgICBpZiAocmlnaHRVbmlvbkFycmF5W2ldID09IDAuMGYp
IHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhXYXJu
aW5nLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciLCBnZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eFdhcm5pbmcsIGdldExpbmUoKSwgIkRpdmlkZSBieSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFu
dCBmb2xkaW5nIik7CiAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldEZD
b25zdCh1bmlvbkFycmF5W2ldLmdldEZDb25zdCgpIDwgMCA/IC1GTFRfTUFYIDogRkxUX01BWCk7
CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFy
cmF5W2ldLnNldEZDb25zdCh1bmlvbkFycmF5W2ldLmdldEZDb25zdCgpIC8gcmlnaHRVbmlvbkFy
cmF5W2ldLmdldEZDb25zdCgpKTsKQEAgLTExNjksMTMgKzExNTMsMTMgQEAgVEludGVybVR5cGVk
KiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogCiAgICAgICAgICAgICBjYXNlIEVidEludDoK
ICAgICAgICAgICAgICAgICBpZiAocmlnaHRVbmlvbkFycmF5W2ldID09IDApIHsKLSAgICAgICAg
ICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhXYXJuaW5nLCAiRGl2aWRl
IGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciLCBnZXRMaW5lKCkpOworICAg
ICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsIGdl
dExpbmUoKSwgIkRpdmlkZSBieSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIik7
CiAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldElDb25zdChJTlRfTUFY
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0
QXJyYXlbaV0uc2V0SUNvbnN0KHVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkgLyByaWdodFVuaW9u
QXJyYXlbaV0uZ2V0SUNvbnN0KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsICJDb25zdGFudCBmb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciBcIi9c
IiIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJDb25zdGFudCBmb2xkaW5nIGNhbm5vdCBi
ZSBkb25lIGZvciBcIi9cIiIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xMTg0LDcgKzExNjgs
NyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAKICAgICAgICAg
ICAgIGNhc2UgRU9wTWF0cml4VGltZXNWZWN0b3I6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50IEZvbGRpbmcg
Y2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCB0aW1lcyB2ZWN0b3IiLCBnZXRMaW5lKCkpOworICAg
ICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsIGdldExpbmUoKSwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJp
eCB0aW1lcyB2ZWN0b3IiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bZ2V0Tm9taW5hbFNpemUoKV07CkBAIC0xMjA1LDcgKzExODksNyBAQCBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAKICAgICAgICAgICAgIGNhc2UgRU9wVmVj
dG9yVGltZXNNYXRyaXg6CiAgICAgICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5
cGUoKSAhPSBFYnRGbG9hdCkgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBk
b25lIGZvciB2ZWN0b3IgdGltZXMgbWF0cml4IiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5l
KCksICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciB2ZWN0b3IgdGltZXMgbWF0
cml4Iik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0K
IApAQCAtMTIyMyw3ICsxMjA3LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlv
bjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsQW5kOiAvLyB0aGlzIGNvZGUgaXMg
d3JpdHRlbiBmb3IgcG9zc2libGUgZnV0dXJlIHVzZSwgd2lsbCBub3QgZ2V0IGV4ZWN1dGVkIGN1
cnJlbnRseQogICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5p
b25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0g
ICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkr
KykKICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldID0gdW5pb25BcnJh
eVtpXSAmJiByaWdodFVuaW9uQXJyYXlbaV07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTIzMSw3ICsxMjE1LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJt
Q29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6IC8vIHRo
aXMgY29kZSBpcyB3cml0dGVuIGZvciBwb3NzaWJsZSBmdXR1cmUgdXNlLCB3aWxsIG5vdCBnZXQg
ZXhlY3V0ZWQgY3VycmVudGx5CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBN
U1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RT
aXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Jq
ZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0g
PSB1bmlvbkFycmF5W2ldIHx8IHJpZ2h0VW5pb25BcnJheVtpXTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjM5LDcgKzEyMjMsNyBAQCBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBjYXNlIEVPcExvZ2lj
YWxYb3I6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlv
bltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAg
ICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisg
ICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsr
KQogICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBl
KCkpIHsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDogdGVtcENvbnN0QXJyYXlbaV0uc2V0QkNv
bnN0KCh1bmlvbkFycmF5W2ldID09IHJpZ2h0VW5pb25BcnJheVtpXSkgPyBmYWxzZSA6IHRydWUp
OyBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSAmJiAiRGVmYXVsdCBt
aXNzaW5nIik7CkBAIC0xMjg1LDcgKzEyNjksNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25z
dGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICAgICAgICAgIGlmICghQ29tcGFyZVN0cnVjdHVy
ZShub2RlLT5nZXRUeXBlKCksIG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCksIHVuaW9uQXJy
YXkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG9iamVjdFNpemU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHVuaW9uQXJyYXlbaV0gIT0gcmlnaHRVbmlvbkFycmF5W2ldKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsgIC8vIGJyZWFrIG91dCBvZiBmb3IgbG9vcApAQCAtMTMxMSw3ICsxMjk1LDcg
QEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAg
ICAgICAgICBpZiAoQ29tcGFyZVN0cnVjdHVyZShub2RlLT5nZXRUeXBlKCksIG5vZGUtPmdldFVu
aW9uQXJyYXlQb2ludGVyKCksIHVuaW9uQXJyYXkpKQogICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgeworICAgICAg
ICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaW9uQXJyYXlbaV0gPT0gcmlnaHRVbmlvbkFy
cmF5W2ldKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgIC8vIGJyZWFrIG91dCBvZiBm
b3IgbG9vcApAQCAtMTMzMyw3ICsxMzE3LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3Rh
bnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wTm9kZTsKIAogICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVBy
ZWZpeEludGVybmFsRXJyb3IsICJJbnZhbGlkIG9wZXJhdG9yIGZvciBjb25zdGFudCBmb2xkaW5n
IiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVBy
ZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkludmFsaWQgb3BlcmF0b3IgZm9yIGNvbnN0
YW50IGZvbGRpbmciKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAg
ICAgICB0ZW1wTm9kZSA9IG5ldyBUSW50ZXJtQ29uc3RhbnRVbmlvbih0ZW1wQ29uc3RBcnJheSwg
cmV0dXJuVHlwZSk7CkBAIC0xMzQ2LDE0ICsxMzMwLDE0IEBAIFRJbnRlcm1UeXBlZCogVEludGVy
bUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgLy8KICAgICAgICAgVEludGVybUNvbnN0YW50
VW5pb24gKm5ld05vZGUgPSAwOwogICAgICAgICBDb25zdGFudFVuaW9uKiB0ZW1wQ29uc3RBcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwotICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG9iamVjdFNpemU7IGkrKykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG9iamVjdFNpemU7IGkrKykgewogICAgICAgICAgICAgc3dpdGNoKG9wKSB7CiAgICAgICAgICAg
ICAgICAgY2FzZSBFT3BOZWdhdGl2ZToKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnZXRU
eXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0
RmxvYXQ6IHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCgtdW5pb25BcnJheVtpXS5nZXRGQ29u
c3QoKSk7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6ICAgdGVt
cENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0KC11bmlvbkFycmF5W2ldLmdldElDb25zdCgpKTsgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVu
YXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiLCBnZXRMaW5lKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50
ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBj
b25zdGFudCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM2MSw3ICsx
MzQ1LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOiAgdGVtcENvbnN0QXJyYXlbaV0uc2V0QkNv
bnN0KCF1bmlvbkFycmF5W2ldLmdldEJDb25zdCgpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9s
ZGVkIGludG8gY29uc3RhbnQiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgp
LCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM3Nyw2NSArMTM2MSw2NCBAQCBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAKIFRJbnRlcm1UeXBlZCogVEludGVybWVk
aWF0ZTo6cHJvbW90ZUNvbnN0YW50VW5pb24oVEJhc2ljVHlwZSBwcm9tb3RlVG8sIFRJbnRlcm1D
b25zdGFudFVuaW9uKiBub2RlKQogewotICAgIENvbnN0YW50VW5pb24gKnJpZ2h0VW5pb25BcnJh
eSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0gICAgaW50IHNpemUgPSBub2RlLT5n
ZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgIHNpemVfdCBzaXplID0gbm9kZS0+Z2V0VHlw
ZSgpLmdldE9iamVjdFNpemUoKTsKIAogICAgIENvbnN0YW50VW5pb24gKmxlZnRVbmlvbkFycmF5
ID0gbmV3IENvbnN0YW50VW5pb25bc2l6ZV07CiAKLSAgICBmb3IgKGludCBpPTA7IGkgPCBzaXpl
OyBpKyspIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogCiAgICAg
ICAgIHN3aXRjaCAocHJvbW90ZVRvKSB7CiAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgogICAg
ICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAgICAgICAg
bGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0PihyaWdodFVuaW9u
QXJyYXlbaV0uZ2V0SUNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlv
bkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4obm9kZS0+Z2V0SUNvbnN0KHN0
YXRpY19jYXN0PGludD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAgICAgICAgICAgICAg
bGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0PihyaWdodFVuaW9u
QXJyYXlbaV0uZ2V0QkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlv
bkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4obm9kZS0+Z2V0QkNvbnN0KHN0
YXRpY19jYXN0PGJvb2w+KGkpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBsZWZ0VW5pb25BcnJheVtpXSA9IHJpZ2h0VW5pb25BcnJheVtpXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4o
bm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0PihpKSkpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCAiQ2Fubm90IHByb21vdGUiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5n
ZXRMaW5lKCksICJDYW5ub3QgcHJvbW90ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBFYnRJbnQ6CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRUeXBl
KCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXSA9IHJpZ2h0VW5pb25BcnJh
eVtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25z
dChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmdldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KGkpKSkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNl
dElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRCQ29uc3QoKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0
YXRpY19jYXN0PGludD4obm9kZS0+Z2V0QkNvbnN0KHN0YXRpY19jYXN0PGJvb2w+KGkpKSkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJ
Q29uc3Qoc3RhdGljX2Nhc3Q8aW50PihyaWdodFVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0
aWNfY2FzdDxpbnQ+KG5vZGUtPmdldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4oaSkpKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgIkNhbm5vdCBwcm9tb3RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxF
cnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQ2Fubm90IHByb21vdGUiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKICAgICAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICBj
YXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNl
dEJDb25zdChyaWdodFVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkgIT0gMCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0SUNvbnN0
KHN0YXRpY19jYXN0PGludD4oaSkpICE9IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxlZnRVbmlvbkFycmF5W2ldID0gcmlnaHRVbmlvbkFycmF5W2ldOworICAgICAgICAg
ICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUtPmdldEJDb25z
dChzdGF0aWNfY2FzdDxib29sPihpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3QocmlnaHRVbmlvbkFycmF5W2ldLmdldEZD
b25zdCgpICE9IDAuMGYpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlb
aV0uc2V0QkNvbnN0KG5vZGUtPmdldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4oaSkpICE9IDAu
MGYpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEludGVybmFsRXJyb3IsICJDYW5ub3QgcHJvbW90ZSIsIG5vZGUtPmdldExpbmUoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeElu
dGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkNhbm5vdCBwcm9tb3RlIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiSW5jb3JyZWN0IGRhdGEg
dHlwZSBmb3VuZCIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJJbmNv
cnJlY3QgZGF0YSB0eXBlIGZvdW5kIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1
dEdMU0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9PdXRwdXRHTFNMLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OSwzICsxOSwxNyBAQCBib29sIFRPdXRwdXRHTFNMOjp3cml0ZVZhcmlhYmxlUHJlY2lzaW9uCiB7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCit2b2lkIFRPdXRwdXRHTFNMOjp2aXNpdFN5bWJvbChU
SW50ZXJtU3ltYm9sKiBub2RlKQoreworICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IG9ialNpbmso
KTsKKworICAgIGlmIChub2RlLT5nZXRTeW1ib2woKSA9PSAiZ2xfRnJhZ0RlcHRoRVhUIikKKyAg
ICB7CisgICAgICAgIG91dCA8PCAiZ2xfRnJhZ0RlcHRoIjsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgVE91dHB1dEdMU0xCYXNlOjp2aXNpdFN5bWJvbChub2RlKTsKKyAgICB9Cit9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRw
dXRHTFNMLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9PdXRwdXRHTFNMLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAg
cHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHdyaXRlVmFyaWFibGVQcmVj
aXNpb24oVFByZWNpc2lvbik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1T
eW1ib2wqIG5vZGUpOwogfTsKIAogI2VuZGlmICAvLyBDUk9TU0NPTVBJTEVSR0xTTF9PVVRQVVRH
TFNMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0
R0xTTEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc5LDI1ICs3OSw5IEBAIHZvaWQgVE91dHB1dEdMU0xCYXNlOjp3cml0ZVZhcmlh
YmxlVHlwZSgKICAgICBpZiAoKHF1YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpICYmIChxdWFsaWZp
ZXIgIT0gRXZxR2xvYmFsKSkKICAgICAgICAgb3V0IDw8IHR5cGUuZ2V0UXVhbGlmaWVyU3RyaW5n
KCkgPDwgIiAiOwogICAgIC8vIERlY2xhcmUgdGhlIHN0cnVjdCBpZiB3ZSBoYXZlIG5vdCBkb25l
IHNvIGFscmVhZHkuCi0gICAgaWYgKCh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkg
JiYKLSAgICAgICAgKG1EZWNsYXJlZFN0cnVjdHMuZmluZCh0eXBlLmdldFR5cGVOYW1lKCkpID09
IG1EZWNsYXJlZFN0cnVjdHMuZW5kKCkpKQorICAgIGlmICgodHlwZS5nZXRCYXNpY1R5cGUoKSA9
PSBFYnRTdHJ1Y3QpICYmICFzdHJ1Y3REZWNsYXJlZCh0eXBlLmdldFN0cnVjdCgpKSkKICAgICB7
Ci0gICAgICAgIG91dCA8PCAic3RydWN0ICIgPDwgaGFzaE5hbWUodHlwZS5nZXRUeXBlTmFtZSgp
KSA8PCAie1xuIjsKLSAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBzdHJ1Y3R1cmUgPSB0eXBlLmdl
dFN0cnVjdCgpOwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlICE9IE5VTEwpOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUgPSAoKnN0cnVjdHVyZSlbaV0udHlw
ZTsKLSAgICAgICAgICAgIEFTU0VSVChmaWVsZFR5cGUgIT0gTlVMTCk7Ci0gICAgICAgICAgICBp
ZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVsZFR5cGUtPmdldFByZWNpc2lvbigpKSkKLSAg
ICAgICAgICAgICAgICBvdXQgPDwgIiAiOwotICAgICAgICAgICAgb3V0IDw8IGdldFR5cGVOYW1l
KCpmaWVsZFR5cGUpIDw8ICIgIiA8PCBoYXNoTmFtZShmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgp
KTsKLSAgICAgICAgICAgIGlmIChmaWVsZFR5cGUtPmlzQXJyYXkoKSkKLSAgICAgICAgICAgICAg
ICBvdXQgPDwgYXJyYXlCcmFja2V0cygqZmllbGRUeXBlKTsKLSAgICAgICAgICAgIG91dCA8PCAi
O1xuIjsKLSAgICAgICAgfQotICAgICAgICBvdXQgPDwgIn0iOwotICAgICAgICBtRGVjbGFyZWRT
dHJ1Y3RzLmluc2VydCh0eXBlLmdldFR5cGVOYW1lKCkpOworICAgICAgICBkZWNsYXJlU3RydWN0
KHR5cGUuZ2V0U3RydWN0KCkpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMTM4LDI0ICsx
MjIsMjUgQEAgY29uc3QgQ29uc3RhbnRVbmlvbiogVE91dHB1dEdMU0xCYXNlOjp3cgogCiAgICAg
aWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsKLSAgICAgICAgb3V0
IDw8IGhhc2hOYW1lKHR5cGUuZ2V0VHlwZU5hbWUoKSkgPDwgIigiOwotICAgICAgICBjb25zdCBU
VHlwZUxpc3QqIHN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7Ci0gICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUgIT0gTlVMTCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RydWN0
dXJlLT5zaXplKCk7ICsraSkKKyAgICAgICAgY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlID0g
dHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHN0cnVjdHVyZS0+bmFt
ZSgpKSA8PCAiKCI7CisKKyAgICAgICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gc3RydWN0
dXJlLT5maWVsZHMoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMuc2l6
ZSgpOyArK2kpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUg
PSAoKnN0cnVjdHVyZSlbaV0udHlwZTsKKyAgICAgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5
cGUgPSBmaWVsZHNbaV0tPnR5cGUoKTsKICAgICAgICAgICAgIEFTU0VSVChmaWVsZFR5cGUgIT0g
TlVMTCk7CiAgICAgICAgICAgICBwQ29uc3RVbmlvbiA9IHdyaXRlQ29uc3RhbnRVbmlvbigqZmll
bGRUeXBlLCBwQ29uc3RVbmlvbik7Ci0gICAgICAgICAgICBpZiAoaSAhPSBzdHJ1Y3R1cmUtPnNp
emUoKSAtIDEpIG91dCA8PCAiLCAiOworICAgICAgICAgICAgaWYgKGkgIT0gZmllbGRzLnNpemUo
KSAtIDEpIG91dCA8PCAiLCAiOwogICAgICAgICB9CiAgICAgICAgIG91dCA8PCAiKSI7CiAgICAg
fQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGludCBzaXplID0gdHlwZS5nZXRPYmplY3RTaXpl
KCk7CisgICAgICAgIHNpemVfdCBzaXplID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CiAgICAgICAg
IGJvb2wgd3JpdGVUeXBlID0gc2l6ZSA+IDE7CiAgICAgICAgIGlmICh3cml0ZVR5cGUpIG91dCA8
PCBnZXRUeXBlTmFtZSh0eXBlKSA8PCAiKCI7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
c2l6ZTsgKytpLCArK3BDb25zdFVuaW9uKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSwgKytwQ29uc3RVbmlvbikKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNo
IChwQ29uc3RVbmlvbi0+Z2V0VHlwZSgpKQogICAgICAgICAgICAgewpAQCAtMjYwLDEyICsyNDUs
MTggQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QmluYXJ5KFZpc2l0IAogICAgICAgICBj
YXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgogICAgICAgICAgICAgaWYgKHZpc2l0ID09IEluVmlz
aXQpCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gSGVyZSB3ZSBhcmUgd3JpdGlu
ZyBvdXQgImZvby5iYXIiLCB3aGVyZSAiZm9vIiBpcyBzdHJ1Y3QKKyAgICAgICAgICAgICAgICAv
LyBhbmQgImJhciIgaXMgZmllbGQuIEluIEFTVCwgaXQgaXMgcmVwcmVzZW50ZWQgYXMgYSBiaW5h
cnkKKyAgICAgICAgICAgICAgICAvLyBub2RlLCB3aGVyZSBsZWZ0IGNoaWxkIHJlcHJlc2VudHMg
ImZvbyIgYW5kIHJpZ2h0IGNoaWxkICJiYXIiLgorICAgICAgICAgICAgICAgIC8vIFRoZSBub2Rl
IGl0c2VsZiByZXByZXNlbnRzICIuIi4gVGhlIHN0cnVjdCBmaWVsZCAiYmFyIiBpcworICAgICAg
ICAgICAgICAgIC8vIGFjdHVhbGx5IHN0b3JlZCBhcyBhbiBpbmRleCBpbnRvIFRTdHJ1Y3R1cmU6
OmZpZWxkcy4KICAgICAgICAgICAgICAgICBvdXQgPDwgIi4iOwotICAgICAgICAgICAgICAgIC8v
IFRPRE8oYWxva3ApOiBBU1NFUlQKLSAgICAgICAgICAgICAgICBUU3RyaW5nIGZpZWxkTmFtZSA9
IG5vZGUtPmdldFR5cGUoKS5nZXRGaWVsZE5hbWUoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBU
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1
Y3QoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogaW5kZXgg
PSBub2RlLT5nZXRSaWdodCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBURmllbGQqIGZpZWxkID0gc3RydWN0dXJlLT5maWVsZHMoKVtpbmRleC0+Z2V0SUNv
bnN0KDApXTsKIAotICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlJiBzdHJ1Y3RUeXBlID0gbm9k
ZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFtU3ltYm9sVGFi
bGUuZmluZEJ1aWx0SW4oc3RydWN0VHlwZS5nZXRUeXBlTmFtZSgpKSkKKyAgICAgICAgICAgICAg
ICBUU3RyaW5nIGZpZWxkTmFtZSA9IGZpZWxkLT5uYW1lKCk7CisgICAgICAgICAgICAgICAgaWYg
KCFtU3ltYm9sVGFibGUuZmluZEJ1aWx0SW4oc3RydWN0dXJlLT5uYW1lKCkpKQogICAgICAgICAg
ICAgICAgICAgICBmaWVsZE5hbWUgPSBoYXNoTmFtZShmaWVsZE5hbWUpOwogCiAgICAgICAgICAg
ICAgICAgb3V0IDw8IGZpZWxkTmFtZTsKQEAgLTU5Niw3ICs1ODcsNyBAQCBib29sIFRPdXRwdXRH
TFNMQmFzZTo6dmlzaXRBZ2dyZWdhdGUoVmlzCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgY29uc3QgVFR5cGUmIHR5cGUgPSBub2RlLT5nZXRUeXBlKCk7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KTsKLSAgICAgICAgICAgICAg
ICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKSA8PCAiKCI7CisgICAgICAgICAg
ICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5cGUuZ2V0U3RydWN0KCktPm5hbWUoKSkgPDwgIigiOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAodmlzaXQgPT0gSW5WaXNpdCkKICAg
ICAgICAgICAgIHsKQEAgLTc2NSw3ICs3NTYsNyBAQCBUU3RyaW5nIFRPdXRwdXRHTFNMQmFzZTo6
Z2V0VHlwZU5hbWUoY29uCiAgICAgZWxzZQogICAgIHsKICAgICAgICAgaWYgKHR5cGUuZ2V0QmFz
aWNUeXBlKCkgPT0gRWJ0U3RydWN0KQotICAgICAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5cGUu
Z2V0VHlwZU5hbWUoKSk7CisgICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRTdHJ1
Y3QoKS0+bmFtZSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3V0IDw8IHR5cGUuZ2V0
QmFzaWNTdHJpbmcoKTsKICAgICB9CkBAIC03OTgsMyArNzg5LDI5IEBAIFRTdHJpbmcgVE91dHB1
dEdMU0xCYXNlOjpoYXNoRnVuY3Rpb25OYW0KICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgcmV0
dXJuIGhhc2hOYW1lKG5hbWUpOwogfQorCitib29sIFRPdXRwdXRHTFNMQmFzZTo6c3RydWN0RGVj
bGFyZWQoY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdAoreworICAgIHJldHVybiBt
RGVjbGFyZWRTdHJ1Y3RzLmZpbmQoc3RydWN0dXJlLT5uYW1lKCkpICE9IG1EZWNsYXJlZFN0cnVj
dHMuZW5kKCk7Cit9CisKK3ZvaWQgVE91dHB1dEdMU0xCYXNlOjpkZWNsYXJlU3RydWN0KGNvbnN0
IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlJiBvdXQgPSBvYmpT
aW5rKCk7CisKKyAgICBvdXQgPDwgInN0cnVjdCAiIDw8IGhhc2hOYW1lKHN0cnVjdHVyZS0+bmFt
ZSgpKSA8PCAie1xuIjsKKyAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSBzdHJ1Y3R1cmUt
PmZpZWxkcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytp
KQorICAgIHsKKyAgICAgICAgY29uc3QgVEZpZWxkKiBmaWVsZCA9IGZpZWxkc1tpXTsKKyAgICAg
ICAgaWYgKHdyaXRlVmFyaWFibGVQcmVjaXNpb24oZmllbGQtPnR5cGUoKS0+Z2V0UHJlY2lzaW9u
KCkpKQorICAgICAgICAgICAgb3V0IDw8ICIgIjsKKyAgICAgICAgb3V0IDw8IGdldFR5cGVOYW1l
KCpmaWVsZC0+dHlwZSgpKSA8PCAiICIgPDwgaGFzaE5hbWUoZmllbGQtPm5hbWUoKSk7CisgICAg
ICAgIGlmIChmaWVsZC0+dHlwZSgpLT5pc0FycmF5KCkpCisgICAgICAgICAgICBvdXQgPDwgYXJy
YXlCcmFja2V0cygqZmllbGQtPnR5cGUoKSk7CisgICAgICAgIG91dCA8PCAiO1xuIjsKKyAgICB9
CisgICAgb3V0IDw8ICJ9IjsKKworICAgIG1EZWNsYXJlZFN0cnVjdHMuaW5zZXJ0KHN0cnVjdHVy
ZS0+bmFtZSgpKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9PdXRwdXRHTFNMQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNiArNTIsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgVFN0cmluZyBoYXNoRnVu
Y3Rpb25OYW1lKGNvbnN0IFRTdHJpbmcmIG1hbmdsZWRfbmFtZSk7CiAKIHByaXZhdGU6CisgICAg
Ym9vbCBzdHJ1Y3REZWNsYXJlZChjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Owor
ICAgIHZvaWQgZGVjbGFyZVN0cnVjdChjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpOworCiAg
ICAgVEluZm9TaW5rQmFzZSYgbU9ialNpbms7CiAgICAgYm9vbCBtRGVjbGFyaW5nVmFyaWFibGVz
OwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExT
TC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L091dHB1dEhMU0wuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEz
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTI3LDcgKzI3
LDggQEAgVFN0cmluZyBzdHIoaW50IGkpCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotT3V0cHV0
SExTTDo6T3V0cHV0SExTTChUUGFyc2VDb250ZXh0ICZjb250ZXh0KSA6IFRJbnRlcm1UcmF2ZXJz
ZXIodHJ1ZSwgdHJ1ZSwgdHJ1ZSksIG1Db250ZXh0KGNvbnRleHQpCitPdXRwdXRITFNMOjpPdXRw
dXRITFNMKFRQYXJzZUNvbnRleHQgJmNvbnRleHQsIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYg
cmVzb3VyY2VzLCBTaFNoYWRlck91dHB1dCBvdXRwdXRUeXBlKQorICAgIDogVEludGVybVRyYXZl
cnNlcih0cnVlLCB0cnVlLCB0cnVlKSwgbUNvbnRleHQoY29udGV4dCksIG1PdXRwdXRUeXBlKG91
dHB1dFR5cGUpCiB7CiAgICAgbVVuZm9sZFNob3J0Q2lyY3VpdCA9IG5ldyBVbmZvbGRTaG9ydENp
cmN1aXQoY29udGV4dCwgdGhpcyk7CiAgICAgbUluc2lkZUZ1bmN0aW9uID0gZmFsc2U7CkBAIC00
NywxMSArNDgsMTQgQEAgT3V0cHV0SExTTDo6T3V0cHV0SExTTChUUGFyc2VDb250ZXh0ICZjbwog
ICAgIG1Vc2VzVGV4dHVyZTJEUHJvakxvZDBfYmlhcyA9IGZhbHNlOwogICAgIG1Vc2VzVGV4dHVy
ZUN1YmVMb2QwID0gZmFsc2U7CiAgICAgbVVzZXNUZXh0dXJlQ3ViZUxvZDBfYmlhcyA9IGZhbHNl
OworICAgIG1Vc2VzRnJhZ0NvbG9yID0gZmFsc2U7CisgICAgbVVzZXNGcmFnRGF0YSA9IGZhbHNl
OwogICAgIG1Vc2VzRGVwdGhSYW5nZSA9IGZhbHNlOwogICAgIG1Vc2VzRnJhZ0Nvb3JkID0gZmFs
c2U7CiAgICAgbVVzZXNQb2ludENvb3JkID0gZmFsc2U7CiAgICAgbVVzZXNGcm9udEZhY2luZyA9
IGZhbHNlOwogICAgIG1Vc2VzUG9pbnRTaXplID0gZmFsc2U7CisgICAgbVVzZXNGcmFnRGVwdGgg
PSBmYWxzZTsKICAgICBtVXNlc1hvciA9IGZhbHNlOwogICAgIG1Vc2VzTW9kMSA9IGZhbHNlOwog
ICAgIG1Vc2VzTW9kMnYgPSBmYWxzZTsKQEAgLTgxLDYgKzg1LDggQEAgT3V0cHV0SExTTDo6T3V0
cHV0SExTTChUUGFyc2VDb250ZXh0ICZjbwogICAgIG1Vc2VzQXRhbjJfMyA9IGZhbHNlOwogICAg
IG1Vc2VzQXRhbjJfNCA9IGZhbHNlOwogCisgICAgbU51bVJlbmRlclRhcmdldHMgPSByZXNvdXJj
ZXMuRVhUX2RyYXdfYnVmZmVycyA/IHJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA6IDE7CisKICAg
ICBtU2NvcGVEZXB0aCA9IDA7CiAKICAgICBtVW5pcXVlSW5kZXggPSAwOwpAQCAtOTAsNiArOTYs
MjQgQEAgT3V0cHV0SExTTDo6T3V0cHV0SExTTChUUGFyc2VDb250ZXh0ICZjbwogICAgIG1JbnNp
ZGVEaXNjb250aW51b3VzTG9vcCA9IGZhbHNlOwogCiAgICAgbUV4Y2Vzc2l2ZUxvb3BJbmRleCA9
IE5VTEw7CisKKyAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgIHsK
KyAgICAgICAgaWYgKG1Db250ZXh0LnNoYWRlclR5cGUgPT0gU0hfRlJBR01FTlRfU0hBREVSKQor
ICAgICAgICB7CisgICAgICAgICAgICBtVW5pZm9ybVJlZ2lzdGVyID0gMzsgICAvLyBSZXNlcnZl
IHJlZ2lzdGVycyBmb3IgZHhfRGVwdGhSYW5nZSwgZHhfVmlld0Nvb3JkcyBhbmQgZHhfRGVwdGhG
cm9udAorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbVVu
aWZvcm1SZWdpc3RlciA9IDI7ICAgLy8gUmVzZXJ2ZSByZWdpc3RlcnMgZm9yIGR4X0RlcHRoUmFu
Z2UgYW5kIGR4X1ZpZXdBZGp1c3QKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBtVW5pZm9ybVJlZ2lzdGVyID0gMDsKKyAgICB9CisKKyAgICBtU2FtcGxlclJlZ2lz
dGVyID0gMDsKIH0KIAogT3V0cHV0SExTTDo6fk91dHB1dEhMU0woKQpAQCAtMTEzLDYgKzEzNywx
MSBAQCBUSW5mb1NpbmtCYXNlICZPdXRwdXRITFNMOjpnZXRCb2R5U3RyZWFtCiAgICAgcmV0dXJu
IG1Cb2R5OwogfQogCitjb25zdCBBY3RpdmVVbmlmb3JtcyAmT3V0cHV0SExTTDo6Z2V0VW5pZm9y
bXMoKQoreworICAgIHJldHVybiBtQWN0aXZlVW5pZm9ybXM7Cit9CisKIGludCBPdXRwdXRITFNM
Ojp2ZWN0b3JTaXplKGNvbnN0IFRUeXBlICZ0eXBlKSBjb25zdAogewogICAgIGludCBlbGVtZW50
U2l6ZSA9IHR5cGUuaXNNYXRyaXgoKSA/IHR5cGUuZ2V0Tm9taW5hbFNpemUoKSA6IDE7CkBAIC0x
MzYsNTggKzE2NSw3NiBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcigpCiAgICAgICAgIG91dCA8
PCAqY29uc3RydWN0b3I7CiAgICAgfQogCi0gICAgaWYgKHNoYWRlclR5cGUgPT0gU0hfRlJBR01F
TlRfU0hBREVSKQorICAgIFRTdHJpbmcgdW5pZm9ybXM7CisgICAgVFN0cmluZyB2YXJ5aW5nczsK
KyAgICBUU3RyaW5nIGF0dHJpYnV0ZXM7CisKKyAgICBmb3IgKFJlZmVyZW5jZWRTeW1ib2xzOjpj
b25zdF9pdGVyYXRvciB1bmlmb3JtID0gbVJlZmVyZW5jZWRVbmlmb3Jtcy5iZWdpbigpOyB1bmlm
b3JtICE9IG1SZWZlcmVuY2VkVW5pZm9ybXMuZW5kKCk7IHVuaWZvcm0rKykKICAgICB7Ci0gICAg
ICAgIFRTdHJpbmcgdW5pZm9ybXM7Ci0gICAgICAgIFRTdHJpbmcgdmFyeWluZ3M7CisgICAgICAg
IGNvbnN0IFRUeXBlICZ0eXBlID0gdW5pZm9ybS0+c2Vjb25kLT5nZXRUeXBlKCk7CisgICAgICAg
IGNvbnN0IFRTdHJpbmcgJm5hbWUgPSB1bmlmb3JtLT5zZWNvbmQtPmdldFN5bWJvbCgpOwogCi0g
ICAgICAgIFRTeW1ib2xUYWJsZUxldmVsICpzeW1ib2xzID0gbUNvbnRleHQuc3ltYm9sVGFibGUu
Z2V0R2xvYmFsTGV2ZWwoKTsKLSAgICAgICAgaW50IHNlbWFudGljSW5kZXggPSAwOworICAgICAg
ICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCAmJiBJc1NhbXBsZXIodHlwZS5n
ZXRCYXNpY1R5cGUoKSkpICAgLy8gQWxzbyBkZWNsYXJlIHRoZSB0ZXh0dXJlCisgICAgICAgIHsK
KyAgICAgICAgICAgIGludCBpbmRleCA9IHNhbXBsZXJSZWdpc3RlcihtUmVmZXJlbmNlZFVuaWZv
cm1zW25hbWVdKTsKIAotICAgICAgICBmb3IgKFRTeW1ib2xUYWJsZUxldmVsOjpjb25zdF9pdGVy
YXRvciBuYW1lZFN5bWJvbCA9IHN5bWJvbHMtPmJlZ2luKCk7IG5hbWVkU3ltYm9sICE9IHN5bWJv
bHMtPmVuZCgpOyBuYW1lZFN5bWJvbCsrKQorICAgICAgICAgICAgdW5pZm9ybXMgKz0gInVuaWZv
cm0gU2FtcGxlclN0YXRlIHNhbXBsZXJfIiArIGRlY29yYXRlVW5pZm9ybShuYW1lLCB0eXBlKSAr
IGFycmF5U3RyaW5nKHR5cGUpICsgCisgICAgICAgICAgICAgICAgICAgICAgICAiIDogcmVnaXN0
ZXIocyIgKyBzdHIoaW5kZXgpICsgIik7XG4iOworCisgICAgICAgICAgICB1bmlmb3JtcyArPSAi
dW5pZm9ybSAiICsgdGV4dHVyZVN0cmluZyh0eXBlKSArICIgdGV4dHVyZV8iICsgZGVjb3JhdGVV
bmlmb3JtKG5hbWUsIHR5cGUpICsgYXJyYXlTdHJpbmcodHlwZSkgKyAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICIgOiByZWdpc3Rlcih0IiArIHN0cihpbmRleCkgKyAiKTtcbiI7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBUU3ltYm9sICpz
eW1ib2wgPSAoKm5hbWVkU3ltYm9sKS5zZWNvbmQ7Ci0gICAgICAgICAgICBjb25zdCBUU3RyaW5n
ICZuYW1lID0gc3ltYm9sLT5nZXROYW1lKCk7CisgICAgICAgICAgICB1bmlmb3JtcyArPSAidW5p
Zm9ybSAiICsgdHlwZVN0cmluZyh0eXBlKSArICIgIiArIGRlY29yYXRlVW5pZm9ybShuYW1lLCB0
eXBlKSArIGFycmF5U3RyaW5nKHR5cGUpICsgCisgICAgICAgICAgICAgICAgICAgICAgICAiIDog
cmVnaXN0ZXIoIiArIHJlZ2lzdGVyU3RyaW5nKG1SZWZlcmVuY2VkVW5pZm9ybXNbbmFtZV0pICsg
Iik7XG4iOworICAgICAgICB9CisgICAgfQogCi0gICAgICAgICAgICBpZiAoc3ltYm9sLT5pc1Zh
cmlhYmxlKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgVFZhcmlhYmxl
ICp2YXJpYWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7Ci0gICAg
ICAgICAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgPSB2YXJpYWJsZS0+Z2V0VHlwZSgpOwotICAg
ICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gdHlwZS5nZXRRdWFsaWZpZXIoKTsK
KyAgICBmb3IgKFJlZmVyZW5jZWRTeW1ib2xzOjpjb25zdF9pdGVyYXRvciB2YXJ5aW5nID0gbVJl
ZmVyZW5jZWRWYXJ5aW5ncy5iZWdpbigpOyB2YXJ5aW5nICE9IG1SZWZlcmVuY2VkVmFyeWluZ3Mu
ZW5kKCk7IHZhcnlpbmcrKykKKyAgICB7CisgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gdmFy
eWluZy0+c2Vjb25kLT5nZXRUeXBlKCk7CisgICAgICAgIGNvbnN0IFRTdHJpbmcgJm5hbWUgPSB2
YXJ5aW5nLT5zZWNvbmQtPmdldFN5bWJvbCgpOwogCi0gICAgICAgICAgICAgICAgaWYgKHF1YWxp
ZmllciA9PSBFdnFVbmlmb3JtKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKG1SZWZlcmVuY2VkVW5pZm9ybXMuZmluZChuYW1lLmNfc3RyKCkpICE9IG1SZWZlcmVu
Y2VkVW5pZm9ybXMuZW5kKCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaWZvcm1zICs9ICJ1bmlmb3JtICIgKyB0eXBlU3RyaW5nKHR5cGUpICsgIiAi
ICsgZGVjb3JhdGVVbmlmb3JtKG5hbWUsIHR5cGUpICsgYXJyYXlTdHJpbmcodHlwZSkgKyAiO1xu
IjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxVmFyeWluZ0luIHx8IHF1YWxpZmllciA9PSBF
dnFJbnZhcmlhbnRWYXJ5aW5nSW4pCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBpZiAobVJlZmVyZW5jZWRWYXJ5aW5ncy5maW5kKG5hbWUuY19zdHIoKSkgIT0gbVJlZmVy
ZW5jZWRWYXJ5aW5ncy5lbmQoKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gUHJvZ3JhbSBsaW5raW5nIGRlcGVuZHMgb24gdGhpcyBleGFjdCBmb3Jt
YXQKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcnlpbmdzICs9ICJzdGF0aWMgIiArIHR5cGVT
dHJpbmcodHlwZSkgKyAiICIgKyBkZWNvcmF0ZShuYW1lKSArIGFycmF5U3RyaW5nKHR5cGUpICsg
IiA9ICIgKyBpbml0aWFsaXplcih0eXBlKSArICI7XG4iOworICAgICAgICAvLyBQcm9ncmFtIGxp
bmtpbmcgZGVwZW5kcyBvbiB0aGlzIGV4YWN0IGZvcm1hdAorICAgICAgICB2YXJ5aW5ncyArPSAi
c3RhdGljICIgKyB0eXBlU3RyaW5nKHR5cGUpICsgIiAiICsgZGVjb3JhdGUobmFtZSkgKyBhcnJh
eVN0cmluZyh0eXBlKSArICIgPSAiICsgaW5pdGlhbGl6ZXIodHlwZSkgKyAiO1xuIjsKKyAgICB9
CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljSW5kZXggKz0gdHlwZS5pc0FycmF5
KCkgPyB0eXBlLmdldEFycmF5U2l6ZSgpIDogMTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZx
R2xvYmFsIHx8IHF1YWxpZmllciA9PSBFdnFUZW1wb3JhcnkpCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAvLyBHbG9iYWxzIGFyZSBkZWNsYXJlZCBhbmQgaW50aWFsaXpl
ZCBhcyBhbiBhZ2dyZWdhdGUgbm9kZQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAvLyBDb25zdGFudHMgYXJlIHJlcGVhdGVkIGFzIGxpdGVyYWxzIHdo
ZXJlIHVzZWQKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNI
QUJMRSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgZm9yIChSZWZlcmVuY2VkU3lt
Ym9sczo6Y29uc3RfaXRlcmF0b3IgYXR0cmlidXRlID0gbVJlZmVyZW5jZWRBdHRyaWJ1dGVzLmJl
Z2luKCk7IGF0dHJpYnV0ZSAhPSBtUmVmZXJlbmNlZEF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0
ZSsrKQorICAgIHsKKyAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgPSBhdHRyaWJ1dGUtPnNlY29u
ZC0+Z2V0VHlwZSgpOworICAgICAgICBjb25zdCBUU3RyaW5nICZuYW1lID0gYXR0cmlidXRlLT5z
ZWNvbmQtPmdldFN5bWJvbCgpOworCisgICAgICAgIGF0dHJpYnV0ZXMgKz0gInN0YXRpYyAiICsg
dHlwZVN0cmluZyh0eXBlKSArICIgIiArIGRlY29yYXRlKG5hbWUpICsgYXJyYXlTdHJpbmcodHlw
ZSkgKyAiID0gIiArIGluaXRpYWxpemVyKHR5cGUpICsgIjtcbiI7CisgICAgfQorCisgICAgaWYg
KHNoYWRlclR5cGUgPT0gU0hfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAgVEV4dGVu
c2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbUNvbnRleHQuZXh0ZW5zaW9uQmVo
YXZpb3IoKS5maW5kKCJHTF9FWFRfZHJhd19idWZmZXJzIik7CisgICAgICAgIGNvbnN0IGJvb2wg
dXNpbmdNUlRFeHRlbnNpb24gPSAoaXRlciAhPSBtQ29udGV4dC5leHRlbnNpb25CZWhhdmlvcigp
LmVuZCgpICYmIChpdGVyLT5zZWNvbmQgPT0gRUJoRW5hYmxlIHx8IGl0ZXItPnNlY29uZCA9PSBF
QmhSZXF1aXJlKSk7CisKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IG51bUNvbG9yVmFsdWVz
ID0gdXNpbmdNUlRFeHRlbnNpb24gPyBtTnVtUmVuZGVyVGFyZ2V0cyA6IDE7CiAKICAgICAgICAg
b3V0IDw8ICIvLyBWYXJ5aW5nc1xuIjsKICAgICAgICAgb3V0IDw8ICB2YXJ5aW5nczsKICAgICAg
ICAgb3V0IDw8ICJcbiIKLSAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFd
ID0ge2Zsb2F0NCgwLCAwLCAwLCAwKX07XG4iOworICAgICAgICAgICAgICAgInN0YXRpYyBmbG9h
dDQgZ2xfQ29sb3JbIiA8PCBudW1Db2xvclZhbHVlcyA8PCAiXSA9XG4iCisgICAgICAgICAgICAg
ICAie1xuIjsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1Db2xvclZh
bHVlczsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDQoMCwg
MCwgMCwgMCkiOworICAgICAgICAgICAgaWYgKGkgKyAxICE9IG51bUNvbG9yVmFsdWVzKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiLCI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBvdXQgPDwgIlxuIjsKKyAgICAgICAgfQorICAgICAgICBvdXQgPDwgIn07XG4i
OworCisgICAgICAgIGlmIChtVXNlc0ZyYWdEZXB0aCkKKyAgICAgICAgeworICAgICAgICAgICAg
b3V0IDw8ICJzdGF0aWMgZmxvYXQgZ2xfRGVwdGggPSAwLjA7XG4iOworICAgICAgICB9CiAKICAg
ICAgICAgaWYgKG1Vc2VzRnJhZ0Nvb3JkKQogICAgICAgICB7CkBAIC0yMDYsMjA1ICsyNTMsMzc5
IEBAIHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKCkKIAogICAgICAgICBvdXQgPDwgIlxuIjsKIAot
ICAgICAgICBpZiAobVVzZXNGcmFnQ29vcmQpCisgICAgICAgIGlmIChtVXNlc0RlcHRoUmFuZ2Up
CiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAidW5pZm9ybSBmbG9hdDQgZHhfQ29vcmQ7
XG4iCi0gICAgICAgICAgICAgICAgICAgInVuaWZvcm0gZmxvYXQyIGR4X0RlcHRoO1xuIjsKKyAg
ICAgICAgICAgIG91dCA8PCAic3RydWN0IGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzXG4iCisgICAg
ICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IG5lYXI7
XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBmYXI7XG4iCisgICAgICAgICAgICAg
ICAgICAgIiAgICBmbG9hdCBkaWZmO1xuIgorICAgICAgICAgICAgICAgICAgICJ9O1xuIgorICAg
ICAgICAgICAgICAgICAgICJcbiI7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobVVzZXNGcm9u
dEZhY2luZykKKyAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAidW5pZm9ybSBib29sIGR4X1BvaW50c09yTGlu
ZXM7XG4iCi0gICAgICAgICAgICAgICAgICAgInVuaWZvcm0gYm9vbCBkeF9Gcm9udENDVztcbiI7
CisgICAgICAgICAgICBvdXQgPDwgImNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIo
YjEpXG4iCisgICAgICAgICAgICAgICAgICAgIntcbiI7CisKKyAgICAgICAgICAgIGlmIChtVXNl
c0RlcHRoUmFuZ2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAg
ZmxvYXQzIGR4X0RlcHRoUmFuZ2UgOiBwYWNrb2Zmc2V0KGMwKTtcbiI7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChtVXNlc0ZyYWdDb29yZCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDQgZHhfVmlld0Nvb3JkcyA6IHBhY2tvZmZzZXQo
YzEpO1xuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1Vc2VzRnJhZ0Nvb3Jk
IHx8IG1Vc2VzRnJvbnRGYWNpbmcpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0
IDw8ICIgICAgZmxvYXQzIGR4X0RlcHRoRnJvbnQgOiBwYWNrb2Zmc2V0KGMyKTtcbiI7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIG91dCA8PCAifTtcbiI7CiAgICAgICAgIH0KLSAgICAg
ICAgCisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1Vc2VzRGVwdGhS
YW5nZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgInVuaWZvcm0gZmxv
YXQzIGR4X0RlcHRoUmFuZ2UgOiByZWdpc3RlcihjMCk7IjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKG1Vc2VzRnJhZ0Nvb3JkKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG91dCA8PCAidW5pZm9ybSBmbG9hdDQgZHhfVmlld0Nvb3JkcyA6IHJlZ2lzdGVyKGMxKTtc
biI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtVXNlc0ZyYWdDb29yZCB8fCBt
VXNlc0Zyb250RmFjaW5nKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAi
dW5pZm9ybSBmbG9hdDMgZHhfRGVwdGhGcm9udCA6IHJlZ2lzdGVyKGMyKTtcbiI7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBvdXQgPDwgIlxuIjsKKworICAgICAgICBpZiAo
bVVzZXNEZXB0aFJhbmdlKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgInN0YXRpYyBn
bF9EZXB0aFJhbmdlUGFyYW1ldGVycyBnbF9EZXB0aFJhbmdlID0ge2R4X0RlcHRoUmFuZ2UueCwg
ZHhfRGVwdGhSYW5nZS55LCBkeF9EZXB0aFJhbmdlLnp9O1xuIgorICAgICAgICAgICAgICAgICAg
ICJcbiI7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIG91dCA8PCAgdW5pZm9ybXM7CiAg
ICAgICAgIG91dCA8PCAiXG4iOwogCiAgICAgICAgIGlmIChtVXNlc1RleHR1cmUyRCkKICAgICAg
ICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEKHNhbXBsZXIyRCBz
LCBmbG9hdDIgdClcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAg
ICAgICIgICAgcmV0dXJuIHRleDJEKHMsIHQpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4i
Ci0gICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9
PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8
ICJmbG9hdDQgZ2xfdGV4dHVyZTJEKHNhbXBsZXIyRCBzLCBmbG9hdDIgdClcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
dGV4MkQocywgdCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICht
T3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRChUZXh0dXJlMkQgdCwgU2FtcGxlclN0
YXRlIHMsIGZsb2F0MiB1dilcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGUocywgdXYpO1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJEX2JpYXMpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRChzYW1wbGVyMkQgcywgZmxvYXQyIHQsIGZsb2F0
IGJpYXMpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAi
ICAgIHJldHVybiB0ZXgyRGJpYXMocywgZmxvYXQ0KHQueCwgdC55LCAwLCBiaWFzKSk7XG4iCi0g
ICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAg
ICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkQoc2FtcGxlcjJEIHMs
IGZsb2F0MiB0LCBmbG9hdCBiaWFzKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGJpYXMocywgZmxvYXQ0KHQu
eCwgdC55LCAwLCBiaWFzKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRChUZXh0dXJlMkQgdCwgU2Ft
cGxlclN0YXRlIHMsIGZsb2F0MiB1diwgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVC
aWFzKHMsIHV2LCBiaWFzKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
VU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtVXNlc1RleHR1cmUyRFBy
b2opCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFBy
b2ooc2FtcGxlcjJEIHMsIGZsb2F0MyB0KVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0g
ICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRwcm9qKHMsIGZsb2F0NCh0LngsIHQu
eSwgMCwgdC56KSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAg
ICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKHNh
bXBsZXIyRCBzLCBmbG9hdDQgdClcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAg
ICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEcHJvaihzLCB0KTtcbiIKLSAgICAgICAgICAg
ICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAo
bU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZsb2F0
MyB0KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIHJldHVybiB0ZXgyRHByb2oocywgZmxvYXQ0KHQueCwgdC55LCAwLCB0LnopKTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2Ft
cGxlcjJEIHMsIGZsb2F0NCB0KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRHByb2oocywgdCk7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNM
MTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0
IGdsX3RleHR1cmUyRFByb2ooVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDMgdXZ3
KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIHJldHVybiB0LlNhbXBsZShzLCBmbG9hdDIodXZ3LnggLyB1dncueiwgdXZ3LnkgLyB1
dncueikpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJE
UHJvaihUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0NCB1dncpXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJu
IHQuU2FtcGxlKHMsIGZsb2F0Mih1dncueCAvIHV2dy53LCB1dncueSAvIHV2dy53KSk7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAobVVzZXNUZXh0dXJlMkRQcm9qX2JpYXMpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZs
b2F0MyB0LCBmbG9hdCBiaWFzKVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAg
ICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRiaWFzKHMsIGZsb2F0NCh0LnggLyB0LnosIHQu
eSAvIHQueiwgMCwgYmlhcykpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAg
ICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJE
UHJvaihzYW1wbGVyMkQgcywgZmxvYXQ0IHQsIGZsb2F0IGJpYXMpXG4iCi0gICAgICAgICAgICAg
ICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGJpYXMocywg
ZmxvYXQ0KHQueCAvIHQudywgdC55IC8gdC53LCAwLCBiaWFzKSk7XG4iCi0gICAgICAgICAgICAg
ICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYgKG1P
dXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzLCBmbG9hdDMg
dCwgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRiaWFzKHMsIGZsb2F0NCh0LnggLyB0Lnos
IHQueSAvIHQueiwgMCwgYmlhcykpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJmbG9h
dDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxvYXQ0IHQsIGZsb2F0IGJpYXMpXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgcmV0dXJuIHRleDJEYmlhcyhzLCBmbG9hdDQodC54IC8gdC53LCB0LnkgLyB0LncsIDAsIGJp
YXMpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRU
eXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
b3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRl
IHMsIGZsb2F0MyB1dncsIGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlQmlhcyhzLCBm
bG9hdDIodXZ3LnggLyB1dncueiwgdXZ3LnkgLyB1dncueiksIGJpYXMpO1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihUZXh0dXJlMkQgdCwgU2Ft
cGxlclN0YXRlIHMsIGZsb2F0NCB1dncsIGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxl
QmlhcyhzLCBmbG9hdDIodXZ3LnggLyB1dncudywgdXZ3LnkgLyB1dncudyksIGJpYXMpO1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4i
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZUN1YmUpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlKHNhbXBsZXJDVUJFIHMsIGZsb2F0MyB0
KVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICBy
ZXR1cm4gdGV4Q1VCRShzLCB0KTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAg
ICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExT
TDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0
IGdsX3RleHR1cmVDdWJlKHNhbXBsZXJDVUJFIHMsIGZsb2F0MyB0KVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhD
VUJFKHMsIHQpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91
dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZShUZXh0dXJlQ3ViZSB0LCBTYW1wbGVy
U3RhdGUgcywgZmxvYXQzIHV2dylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGUocywgdXZ3KTtcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChtVXNlc1RleHR1cmVDdWJlX2JpYXMpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlKHNhbXBsZXJDVUJFIHMsIGZsb2F0
MyB0LCBmbG9hdCBiaWFzKVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAg
ICAgICAgICAgIiAgICByZXR1cm4gdGV4Q1VCRWJpYXMocywgZmxvYXQ0KHQueCwgdC55LCB0Lnos
IGJpYXMpKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAg
ICJcbiI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVD
dWJlKHNhbXBsZXJDVUJFIHMsIGZsb2F0MyB0LCBmbG9hdCBiaWFzKVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhD
VUJFYmlhcyhzLCBmbG9hdDQodC54LCB0LnksIHQueiwgYmlhcykpO1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBV
VCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0
dXJlQ3ViZShUZXh0dXJlQ3ViZSB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dywgZmxvYXQg
YmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVCaWFzKHMsIHV2dywgYmlhcyk7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBUaGVzZSAqTG9kMCBpbnRyaW5zaWNzIGFyZSBub3QgYXZhaWxhYmxlIGluIEdM
IGZyYWdtZW50IHNoYWRlcnMuCiAgICAgICAgIC8vIFRoZXkgYXJlIHVzZWQgdG8gc2FtcGxlIHVz
aW5nIGRpc2NvbnRpbnVvdXMgdGV4dHVyZSBjb29yZGluYXRlcy4KICAgICAgICAgaWYgKG1Vc2Vz
VGV4dHVyZTJETG9kMCkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xf
dGV4dHVyZTJETG9kMChzYW1wbGVyMkQgcywgZmxvYXQyIHQpXG4iCi0gICAgICAgICAgICAgICAg
ICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9h
dDQodC54LCB0LnksIDAsIDApKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAg
ICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExT
TDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0
IGdsX3RleHR1cmUyRExvZDAoc2FtcGxlcjJEIHMsIGZsb2F0MiB0KVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgy
RGxvZChzLCBmbG9hdDQodC54LCB0LnksIDAsIDApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJETG9k
MChUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MiB1dilcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5T
YW1wbGVMZXZlbChzLCB1diwgMCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobVVzZXNUZXh0dXJl
MkRMb2QwX2JpYXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3Rl
eHR1cmUyRExvZDAoc2FtcGxlcjJEIHMsIGZsb2F0MiB0LCBmbG9hdCBiaWFzKVxuIgotICAgICAg
ICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRs
b2QocywgZmxvYXQ0KHQueCwgdC55LCAwLCAwKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1c
biIKLSAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBl
ID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQg
PDwgImZsb2F0NCBnbF90ZXh0dXJlMkRMb2QwKHNhbXBsZXIyRCBzLCBmbG9hdDIgdCwgZmxvYXQg
YmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCwgdC55LCAwLCAwKSk7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJc
biI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBT
SF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAi
ZmxvYXQ0IGdsX3RleHR1cmUyRExvZDAoVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9h
dDIgdXYsIGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgdXYsIDApO1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAi
XG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJEUHJvakxvZDApCiAgICAgICAgIHsK
LSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2QwKHNhbXBsZXIy
RCBzLCBmbG9hdDMgdClcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAg
ICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LnosIHQueSAvIHQu
eiwgMCwgMCkpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAg
ICAgIlxuIgotICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZChz
YW1wbGVyMkQgcywgZmxvYXQ0IHQpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAg
ICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC53LCB0
LnkgLyB0LncsIDAsIDApKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAg
ICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlf
T1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGds
X3RleHR1cmUyRFByb2pMb2QwKHNhbXBsZXIyRCBzLCBmbG9hdDMgdClcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4
MkRsb2QocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8gdC56LCAwLCAwKSk7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kKHNhbXBsZXIyRCBz
LCBmbG9hdDQgdClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQudywgdC55
IC8gdC53LCAwLCAwKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlm
IChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2QwKFRleHR1cmUyRCB0
LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChz
LCBmbG9hdDIodXZ3LnggLyB1dncueiwgdXZ3LnkgLyB1dncueiksIDApO1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZDAoVGV4dHVyZTJEIHQs
IFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDQgdXZ3KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAi
e1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUxldmVsKHMs
IGZsb2F0Mih1dncueCAvIHV2dy53LCB1dncueSAvIHV2dy53KSwgMCk7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAobVVzZXNUZXh0dXJlMkRQcm9qTG9kMF9iaWFzKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kMF9iaWFzKHNhbXBsZXIyRCBz
LCBmbG9hdDMgdCwgZmxvYXQgYmlhcylcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAg
ICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0Lnos
IHQueSAvIHQueiwgMCwgMCkpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAg
ICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJE
UHJvakxvZF9iaWFzKHNhbXBsZXIyRCBzLCBmbG9hdDQgdCwgZmxvYXQgYmlhcylcbiIKLSAgICAg
ICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJE
bG9kKHMsIGZsb2F0NCh0LnggLyB0LncsIHQueSAvIHQudywgMCwgMCkpO1xuIgotICAgICAgICAg
ICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIGlm
IChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZDBfYmlhcyhzYW1wbGVy
MkQgcywgZmxvYXQzIHQsIGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0
NCh0LnggLyB0LnosIHQueSAvIHQueiwgMCwgMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZF9iaWFzKHNhbXBsZXIyRCBzLCBmbG9hdDQg
dCwgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQudywg
dC55IC8gdC53LCAwLCAwKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2RfYmlhcyhUZXh0
dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MyB1dncsIGZsb2F0IGJpYXMpXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuIHQuU2FtcGxlTGV2ZWwocywgZmxvYXQyKHV2dy54IC8gdXZ3LnosIHV2dy55IC8gdXZ3Lnop
LCAwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFBy
b2pMb2RfYmlhcyhUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0NCB1dncsIGZsb2F0
IGJpYXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgZmxvYXQyKHV2dy54IC8gdXZ3Lncs
IHV2dy55IC8gdXZ3LncpLCAwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtVXNlc1RleHR1cmVD
dWJlTG9kMCkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVy
ZUN1YmVMb2QwKHNhbXBsZXJDVUJFIHMsIGZsb2F0MyB0KVxuIgotICAgICAgICAgICAgICAgICAg
ICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4Q1VCRWxvZChzLCBmbG9h
dDQodC54LCB0LnksIHQueiwgMCkpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAg
ICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9I
TFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9h
dDQgZ2xfdGV4dHVyZUN1YmVMb2QwKHNhbXBsZXJDVUJFIHMsIGZsb2F0MyB0KVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVy
biB0ZXhDVUJFbG9kKHMsIGZsb2F0NCh0LngsIHQueSwgdC56LCAwKSk7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VU
UFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3Rl
eHR1cmVDdWJlTG9kMChUZXh0dXJlQ3ViZSB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dylc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCB1dncsIDApO1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKG1Vc2VzVGV4dHVyZUN1YmVMb2QwX2JpYXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91
dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlTG9kMChzYW1wbGVyQ1VCRSBzLCBmbG9hdDMgdCwg
ZmxvYXQgYmlhcylcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAg
ICAgICIgICAgcmV0dXJuIHRleENVQkVsb2QocywgZmxvYXQ0KHQueCwgdC55LCB0LnosIDApKTtc
biIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiI7Cisg
ICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlTG9kMChz
YW1wbGVyQ1VCRSBzLCBmbG9hdDMgdCwgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4Q1VCRWxv
ZChzLCBmbG9hdDQodC54LCB0LnksIHQueiwgMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZUxv
ZDAoVGV4dHVyZUN1YmUgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MyB1dncsIGZsb2F0IGJpYXMp
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgdXZ3LCAwKTtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQotICAgIH0KLSAg
ICBlbHNlICAgLy8gVmVydGV4IHNoYWRlcgotICAgIHsKLSAgICAgICAgVFN0cmluZyB1bmlmb3Jt
czsKLSAgICAgICAgVFN0cmluZyBhdHRyaWJ1dGVzOwotICAgICAgICBUU3RyaW5nIHZhcnlpbmdz
OwotCi0gICAgICAgIFRTeW1ib2xUYWJsZUxldmVsICpzeW1ib2xzID0gbUNvbnRleHQuc3ltYm9s
VGFibGUuZ2V0R2xvYmFsTGV2ZWwoKTsKIAotICAgICAgICBmb3IgKFRTeW1ib2xUYWJsZUxldmVs
Ojpjb25zdF9pdGVyYXRvciBuYW1lZFN5bWJvbCA9IHN5bWJvbHMtPmJlZ2luKCk7IG5hbWVkU3lt
Ym9sICE9IHN5bWJvbHMtPmVuZCgpOyBuYW1lZFN5bWJvbCsrKQorICAgICAgICBpZiAodXNpbmdN
UlRFeHRlbnNpb24gJiYgbU51bVJlbmRlclRhcmdldHMgPiAxKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb25zdCBUU3ltYm9sICpzeW1ib2wgPSAoKm5hbWVkU3ltYm9sKS5zZWNvbmQ7Ci0gICAg
ICAgICAgICBjb25zdCBUU3RyaW5nICZuYW1lID0gc3ltYm9sLT5nZXROYW1lKCk7Ci0KLSAgICAg
ICAgICAgIGlmIChzeW1ib2wtPmlzVmFyaWFibGUoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBjb25zdCBUVmFyaWFibGUgKnZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZh
cmlhYmxlKj4oc3ltYm9sKTsKLSAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSA9IHZh
cmlhYmxlLT5nZXRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIg
PSB0eXBlLmdldFF1YWxpZmllcigpOworICAgICAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VT
RVNfTVJUXG4iOworICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAocXVhbGlmaWVyID09
IEV2cVVuaWZvcm0pCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAo
bVJlZmVyZW5jZWRVbmlmb3Jtcy5maW5kKG5hbWUuY19zdHIoKSkgIT0gbVJlZmVyZW5jZWRVbmlm
b3Jtcy5lbmQoKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgdW5pZm9ybXMgKz0gInVuaWZvcm0gIiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBkZWNv
cmF0ZVVuaWZvcm0obmFtZSwgdHlwZSkgKyBhcnJheVN0cmluZyh0eXBlKSArICI7XG4iOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBpZiAobVJlZmVyZW5jZWRBdHRyaWJ1dGVzLmZpbmQobmFtZS5jX3N0
cigpKSAhPSBtUmVmZXJlbmNlZEF0dHJpYnV0ZXMuZW5kKCkpCi0gICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgKz0gInN0YXRpYyAiICsgdHlw
ZVN0cmluZyh0eXBlKSArICIgIiArIGRlY29yYXRlKG5hbWUpICsgYXJyYXlTdHJpbmcodHlwZSkg
KyAiID0gIiArIGluaXRpYWxpemVyKHR5cGUpICsgIjtcbiI7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVy
ID09IEV2cVZhcnlpbmdPdXQgfHwgcXVhbGlmaWVyID09IEV2cUludmFyaWFudFZhcnlpbmdPdXQp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAobVJlZmVyZW5jZWRW
YXJ5aW5ncy5maW5kKG5hbWUuY19zdHIoKSkgIT0gbVJlZmVyZW5jZWRWYXJ5aW5ncy5lbmQoKSkK
LSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJvZ3Jh
bSBsaW5raW5nIGRlcGVuZHMgb24gdGhpcyBleGFjdCBmb3JtYXQKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHZhcnlpbmdzICs9ICJzdGF0aWMgIiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBk
ZWNvcmF0ZShuYW1lKSArIGFycmF5U3RyaW5nKHR5cGUpICsgIiA9ICIgKyBpbml0aWFsaXplcih0
eXBlKSArICI7XG4iOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHF1YWxpZmllciA9PSBFdnFHbG9iYWwgfHwgcXVhbGlm
aWVyID09IEV2cVRlbXBvcmFyeSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIEdsb2JhbHMgYXJlIGRlY2xhcmVkIGFuZCBpbnRpYWxpemVkIGFzIGFuIGFnZ3JlZ2F0
ZSBub2RlCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHF1YWxp
ZmllciA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIENvbnN0YW50cyBhcmUgcmVwZWF0ZWQgYXMgbGl0ZXJhbHMgd2hlcmUgdXNlZAotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgIGlmIChtVXNlc0ZyYWdDb2xvcikKKyAgICAgICAgeworICAgICAgICAg
ICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNfRlJBR19DT0xPUlxuIjsKICAgICAgICAgfQogCisg
ICAgICAgIGlmIChtVXNlc0ZyYWdEYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwg
IiNkZWZpbmUgR0xfVVNFU19GUkFHX0RBVEFcbiI7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxz
ZSAgIC8vIFZlcnRleCBzaGFkZXIKKyAgICB7CiAgICAgICAgIG91dCA8PCAiLy8gQXR0cmlidXRl
c1xuIjsKICAgICAgICAgb3V0IDw8ICBhdHRyaWJ1dGVzOwogICAgICAgICBvdXQgPDwgIlxuIgpA
QCAtNDE4LDc0ICs2MzksMTk0IEBAIHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKCkKICAgICAgICAg
b3V0IDw8ICJcbiIKICAgICAgICAgICAgICAgICIvLyBWYXJ5aW5nc1xuIjsKICAgICAgICAgb3V0
IDw8ICB2YXJ5aW5nczsKLSAgICAgICAgb3V0IDw8ICJcbiIKLSAgICAgICAgICAgICAgICJ1bmlm
b3JtIGZsb2F0MiBkeF9IYWxmUGl4ZWxTaXplO1xuIgotICAgICAgICAgICAgICAgIlxuIjsKLSAg
ICAgICAgb3V0IDw8ICB1bmlmb3JtczsKICAgICAgICAgb3V0IDw8ICJcbiI7Ci0gICAgICAgIAot
ICAgICAgICBpZiAobVVzZXNUZXh0dXJlMkQpCisKKyAgICAgICAgaWYgKG1Vc2VzRGVwdGhSYW5n
ZSkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEKHNh
bXBsZXIyRCBzLCBmbG9hdDIgdClcbiIKKyAgICAgICAgICAgIG91dCA8PCAic3RydWN0IGdsX0Rl
cHRoUmFuZ2VQYXJhbWV0ZXJzXG4iCiAgICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAg
ICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54LCB0LnksIDAsIDAp
KTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICIgICAg
ZmxvYXQgbmVhcjtcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGZhcjtcbiIKKyAg
ICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGRpZmY7XG4iCisgICAgICAgICAgICAgICAgICAg
In07XG4iCiAgICAgICAgICAgICAgICAgICAgIlxuIjsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChtVXNlc1RleHR1cmUyRExvZCkKKyAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wx
MV9PVVRQVVQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1
cmUyRExvZChzYW1wbGVyMkQgcywgZmxvYXQyIHQsIGZsb2F0IGxvZClcbiIKLSAgICAgICAgICAg
ICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMs
IGZsb2F0NCh0LngsIHQueSwgMCwgbG9kKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIK
KyAgICAgICAgICAgIGlmIChtVXNlc0RlcHRoUmFuZ2UpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgb3V0IDw8ICJjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKVxu
IgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIGZsb2F0MyBkeF9EZXB0aFJhbmdlIDogcGFja29mZnNldChjMCk7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJ9O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKG1Vc2VzRGVwdGhSYW5nZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQg
PDwgInVuaWZvcm0gZmxvYXQzIGR4X0RlcHRoUmFuZ2UgOiByZWdpc3RlcihjMCk7XG4iOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBvdXQgPDwgInVuaWZvcm0gZmxvYXQ0IGR4X1ZpZXdB
ZGp1c3QgOiByZWdpc3RlcihjMSk7XG4iCiAgICAgICAgICAgICAgICAgICAgIlxuIjsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChtVXNlc1RleHR1cmUyRFByb2opCisgICAgICAgIGlmIChtVXNl
c0RlcHRoUmFuZ2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3Rl
eHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZsb2F0MyB0KVxuIgotICAgICAgICAgICAgICAgICAg
ICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0
KHQueCAvIHQueiwgdC55IC8gdC56LCAwLCAwKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1c
biIKLSAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgImZsb2F0NCBn
bF90ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzLCBmbG9hdDQgdClcbiIKLSAgICAgICAgICAgICAg
ICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZs
b2F0NCh0LnggLyB0LncsIHQueSAvIHQudywgMCwgMCkpO1xuIgotICAgICAgICAgICAgICAgICAg
ICJ9XG4iCisgICAgICAgICAgICBvdXQgPDwgInN0YXRpYyBnbF9EZXB0aFJhbmdlUGFyYW1ldGVy
cyBnbF9EZXB0aFJhbmdlID0ge2R4X0RlcHRoUmFuZ2UueCwgZHhfRGVwdGhSYW5nZS55LCBkeF9E
ZXB0aFJhbmdlLnp9O1xuIgogICAgICAgICAgICAgICAgICAgICJcbiI7CiAgICAgICAgIH0KIAor
ICAgICAgICBvdXQgPDwgdW5pZm9ybXM7CisgICAgICAgIG91dCA8PCAiXG4iOworICAgICAgICAK
KyAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJEKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
bU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRChzYW1wbGVyMkQgcywgZmxvYXQyIHQp
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LngsIHQueSwgMCwgMCkpO1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExT
TDExX09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0
NCBnbF90ZXh0dXJlMkQoVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDIgdXYpXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgdXYsIDApO1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KG1Vc2VzVGV4dHVyZTJETG9kKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5
cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91
dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRExvZChzYW1wbGVyMkQgcywgZmxvYXQyIHQsIGZsb2F0
IGxvZClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCwgdC55LCAwLCBsb2QpKTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09
IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8
ICJmbG9hdDQgZ2xfdGV4dHVyZTJETG9kKFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxv
YXQyIHV2LCBmbG9hdCBsb2QpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgdXYsIGxvZCk7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAobVVzZXNUZXh0dXJlMkRQcm9qKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2Ft
cGxlcjJEIHMsIGZsb2F0MyB0KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8g
dC56LCB0LnkgLyB0LnosIDAsIDApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiZmxv
YXQ0IGdsX3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZsb2F0NCB0KVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0
ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC53LCB0LnkgLyB0LncsIDAsIDApKTtcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wx
MV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQg
Z2xfdGV4dHVyZTJEUHJvaihUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MyB1dncp
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgZmxvYXQyKHV2dy54IC8gdXZ3LnosIHV2dy55
IC8gdXZ3LnopLCAwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3Rl
eHR1cmUyRFByb2ooVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDQgdXZ3KVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiB0LlNhbXBsZUxldmVsKHMsIGZsb2F0Mih1dncueCAvIHV2dy53LCB1dncueSAvIHV2
dy53KSwgMCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAobVVzZXNUZXh0dXJlMkRQcm9qTG9kKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9k
KHNhbXBsZXIyRCBzLCBmbG9hdDMgdCwgZmxvYXQgbG9kKVxuIgotICAgICAgICAgICAgICAgICAg
ICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0
KHQueCAvIHQueiwgdC55IC8gdC56LCAwLCBsb2QpKTtcbiIKLSAgICAgICAgICAgICAgICAgICAi
fVxuIgotICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAiZmxvYXQ0
IGdsX3RleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHMsIGZsb2F0NCB0LCBmbG9hdCBsb2QpXG4i
Ci0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVy
biB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC53LCB0LnkgLyB0LncsIDAsIGxvZCkpO1xuIgot
ICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAg
ICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZChzYW1w
bGVyMkQgcywgZmxvYXQzIHQsIGZsb2F0IGxvZClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxv
YXQ0KHQueCAvIHQueiwgdC55IC8gdC56LCAwLCBsb2QpKTtcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHMsIGZsb2F0NCB0
LCBmbG9hdCBsb2QpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LncsIHQu
eSAvIHQudywgMCwgbG9kKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooVGV4dHVyZTJEIHQs
IFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDMgdXZ3LCBmbG9hdCBsb2QpXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2Ft
cGxlTGV2ZWwocywgZmxvYXQyKHV2dy54IC8gdXZ3LnosIHV2dy55IC8gdXZ3LnopLCBsb2QpO1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihUZXh0
dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0NCB1dncpXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxl
TGV2ZWwocywgZmxvYXQyKHV2dy54IC8gdXZ3LncsIHV2dy55IC8gdXZ3LncpLCBsb2QpO1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4i
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZUN1YmUpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlKHNhbXBsZXJDVUJFIHMsIGZsb2F0MyB0
KVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICBy
ZXR1cm4gdGV4Q1VCRWxvZChzLCBmbG9hdDQodC54LCB0LnksIHQueiwgMCkpO1xuIgotICAgICAg
ICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAg
IGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmUoc2FtcGxlckNVQkUgcywg
ZmxvYXQzIHQpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICIgICAgcmV0dXJuIHRleENVQkVsb2QocywgZmxvYXQ0KHQueCwgdC55LCB0Lnos
IDApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRU
eXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
b3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmUoVGV4dHVyZUN1YmUgdCwgU2FtcGxlclN0YXRl
IHMsIGZsb2F0MyB1dncpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgdXZ3LCAwKTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxu
IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChtVXNlc1RleHR1cmVDdWJlTG9kKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZUxvZChzYW1wbGVyQ1VCRSBzLCBm
bG9hdDMgdCwgZmxvYXQgbG9kKVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAg
ICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4Q1VCRWxvZChzLCBmbG9hdDQodC54LCB0LnksIHQu
eiwgbG9kKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAg
ICAiXG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJl
Q3ViZUxvZChzYW1wbGVyQ1VCRSBzLCBmbG9hdDMgdCwgZmxvYXQgbG9kKVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0
ZXhDVUJFbG9kKHMsIGZsb2F0NCh0LngsIHQueSwgdC56LCBsb2QpKTtcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQ
VVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4
dHVyZUN1YmVMb2QoVGV4dHVyZUN1YmUgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MyB1dncsIGZs
b2F0IGxvZClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCB1dncsIGxvZCk7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTUwOSwxOCArODUwLDE0IEBAIHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKCkK
ICAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNfUE9JTlRfU0laRVxuIjsKICAgICB9CiAK
KyAgICBpZiAobVVzZXNGcmFnRGVwdGgpCisgICAgeworICAgICAgICBvdXQgPDwgIiNkZWZpbmUg
R0xfVVNFU19GUkFHX0RFUFRIXG4iOworICAgIH0KKwogICAgIGlmIChtVXNlc0RlcHRoUmFuZ2Up
CiAgICAgewotICAgICAgICBvdXQgPDwgInN0cnVjdCBnbF9EZXB0aFJhbmdlUGFyYW1ldGVyc1xu
IgotICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgZmxvYXQgbmVhcjtc
biIKLSAgICAgICAgICAgICAgICIgICAgZmxvYXQgZmFyO1xuIgotICAgICAgICAgICAgICAgIiAg
ICBmbG9hdCBkaWZmO1xuIgotICAgICAgICAgICAgICAgIn07XG4iCi0gICAgICAgICAgICAgICAi
XG4iCi0gICAgICAgICAgICAgICAidW5pZm9ybSBmbG9hdDMgZHhfRGVwdGhSYW5nZTsiCi0gICAg
ICAgICAgICAgICAic3RhdGljIGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIGdsX0RlcHRoUmFuZ2Ug
PSB7ZHhfRGVwdGhSYW5nZS54LCBkeF9EZXB0aFJhbmdlLnksIGR4X0RlcHRoUmFuZ2Uuen07XG4i
Ci0gICAgICAgICAgICAgICAiXG4iOworICAgICAgICBvdXQgPDwgIiNkZWZpbmUgR0xfVVNFU19E
RVBUSF9SQU5HRVxuIjsKICAgICB9CiAKICAgICBpZiAobVVzZXNYb3IpCkBAIC04MTMsMTAgKzEx
NTAsMTIgQEAgdm9pZCBPdXRwdXRITFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYgogICAgIGlm
IChuYW1lID09ICJnbF9GcmFnQ29sb3IiKQogICAgIHsKICAgICAgICAgb3V0IDw8ICJnbF9Db2xv
clswXSI7CisgICAgICAgIG1Vc2VzRnJhZ0NvbG9yID0gdHJ1ZTsKICAgICB9CiAgICAgZWxzZSBp
ZiAobmFtZSA9PSAiZ2xfRnJhZ0RhdGEiKQogICAgIHsKICAgICAgICAgb3V0IDw8ICJnbF9Db2xv
ciI7CisgICAgICAgIG1Vc2VzRnJhZ0RhdGEgPSB0cnVlOwogICAgIH0KICAgICBlbHNlIGlmIChu
YW1lID09ICJnbF9EZXB0aFJhbmdlIikKICAgICB7CkBAIC04NDMsMjMgKzExODIsMjggQEAgdm9p
ZCBPdXRwdXRITFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYgogICAgICAgICBtVXNlc1BvaW50
U2l6ZSA9IHRydWU7CiAgICAgICAgIG91dCA8PCBuYW1lOwogICAgIH0KKyAgICBlbHNlIGlmIChu
YW1lID09ICJnbF9GcmFnRGVwdGhFWFQiKQorICAgIHsKKyAgICAgICAgbVVzZXNGcmFnRGVwdGgg
PSB0cnVlOworICAgICAgICBvdXQgPDwgImdsX0RlcHRoIjsKKyAgICB9CiAgICAgZWxzZQogICAg
IHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBub2RlLT5nZXRRdWFsaWZpZXIoKTsK
IAogICAgICAgICBpZiAocXVhbGlmaWVyID09IEV2cVVuaWZvcm0pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIG1SZWZlcmVuY2VkVW5pZm9ybXMuaW5zZXJ0KG5hbWUuY19zdHIoKSk7CisgICAgICAg
ICAgICBtUmVmZXJlbmNlZFVuaWZvcm1zW25hbWVdID0gbm9kZTsKICAgICAgICAgICAgIG91dCA8
PCBkZWNvcmF0ZVVuaWZvcm0obmFtZSwgbm9kZS0+Z2V0VHlwZSgpKTsKICAgICAgICAgfQogICAg
ICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBtUmVmZXJlbmNlZEF0dHJpYnV0ZXMuaW5zZXJ0KG5hbWUuY19zdHIoKSk7CisgICAg
ICAgICAgICBtUmVmZXJlbmNlZEF0dHJpYnV0ZXNbbmFtZV0gPSBub2RlOwogICAgICAgICAgICAg
b3V0IDw8IGRlY29yYXRlKG5hbWUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHF1YWxp
ZmllciA9PSBFdnFWYXJ5aW5nT3V0IHx8IHF1YWxpZmllciA9PSBFdnFJbnZhcmlhbnRWYXJ5aW5n
T3V0IHx8IHF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwgcXVhbGlmaWVyID09IEV2cUludmFy
aWFudFZhcnlpbmdJbikKICAgICAgICAgewotICAgICAgICAgICAgbVJlZmVyZW5jZWRWYXJ5aW5n
cy5pbnNlcnQobmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIG1SZWZlcmVuY2VkVmFyeWluZ3Nb
bmFtZV0gPSBub2RlOwogICAgICAgICAgICAgb3V0IDw8IGRlY29yYXRlKG5hbWUpOwogICAgICAg
ICB9CiAgICAgICAgIGVsc2UKQEAgLTk1Miw3ICsxMjk2LDEwIEBAIGJvb2wgT3V0cHV0SExTTDo6
dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQKICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6
CiAgICAgICAgIGlmICh2aXNpdCA9PSBJblZpc2l0KQogICAgICAgICB7Ci0gICAgICAgICAgICBv
dXQgPDwgIi4iICsgZGVjb3JhdGVGaWVsZChub2RlLT5nZXRUeXBlKCkuZ2V0RmllbGROYW1lKCks
IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgIGNvbnN0IFRTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOwor
ICAgICAgICAgICAgY29uc3QgVEludGVybUNvbnN0YW50VW5pb24qIGluZGV4ID0gbm9kZS0+Z2V0
UmlnaHQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CisgICAgICAgICAgICBjb25zdCBURmllbGQq
IGZpZWxkID0gc3RydWN0dXJlLT5maWVsZHMoKVtpbmRleC0+Z2V0SUNvbnN0KDApXTsKKyAgICAg
ICAgICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksIG5vZGUtPmdl
dExlZnQoKS0+Z2V0VHlwZSgpKTsKIAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CkBAIC05NzQsNyArMTMyMSw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlz
aXQgdmlzaXQKIAogICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkKICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGkgPSBlbGVtZW50LT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpWzBdLmdldElDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGkgPSBlbGVtZW50LT5nZXRJQ29uc3QoMCk7CiAKICAgICAgICAgICAgICAgICAgICAg
ICAgIHN3aXRjaCAoaSkKICAgICAgICAgICAgICAgICAgICAgICAgIHsKQEAgLTEwMjEsMTggKzEz
NjgsMTggQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdAogICAgICAg
ICAgICAgICAgIG91dCA8PCAiISgiOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBjb25z
dCBUVHlwZUxpc3QgKmZpZWxkcyA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdldFN0cnVj
dCgpOworICAgICAgICAgICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0gbm9kZS0+Z2V0TGVm
dCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCi0gICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy0+c2l6ZSgpOyBpKyspCisgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqZmllbGRUeXBlID0gKCpmaWVsZHMpW2ldLnR5cGU7
CisgICAgICAgICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCA9IGZpZWxkc1tpXTsKIAogICAg
ICAgICAgICAgICAgIG5vZGUtPmdldExlZnQoKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgICAg
ICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGRUeXBlLT5nZXRGaWVsZE5hbWUo
KSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkpICsgIiA9PSAiOworICAgICAgICAgICAgICAg
IG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksIG5vZGUtPmdldExlZnQo
KS0+Z2V0VHlwZSgpKSArICIgPT0gIjsKICAgICAgICAgICAgICAgICBub2RlLT5nZXRSaWdodCgp
LT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIi4iICsgZGVjb3JhdGVG
aWVsZChmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUo
KSk7CisgICAgICAgICAgICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGQtPm5h
bWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkpOwogCi0gICAgICAgICAgICAgICAgaWYg
KGkgPCBmaWVsZHMtPnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAgaWYgKGkgPCBmaWVsZHMu
c2l6ZSgpIC0gMSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIG91dCA8
PCAiICYmICI7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTIzOCw3ICsxNTg1LDcgQEAgYm9vbCBP
dXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAobUluc2lkZUZ1bmN0aW9uKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91
dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBvdXRw
dXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgICAg
ICAgICBvdXQgPDwgIntcbiI7CiAKICAgICAgICAgICAgICAgICBtU2NvcGVEZXB0aCsrOwpAQCAt
MTI1NSw3ICsxNjAyLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2
aQogCiAgICAgICAgICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Igc2l0ID0gbm9k
ZS0+Z2V0U2VxdWVuY2UoKS5iZWdpbigpOyBzaXQgIT0gbm9kZS0+Z2V0U2VxdWVuY2UoKS5lbmQo
KTsgc2l0KyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVj
dGl2ZSgoKnNpdCktPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVj
dGl2ZSgoKnNpdCktPmdldExpbmUoKS5maXJzdF9saW5lKTsKIAogICAgICAgICAgICAgICAgIHRy
YXZlcnNlU3RhdGVtZW50cygqc2l0KTsKIApAQCAtMTI2NCw3ICsxNjExLDcgQEAgYm9vbCBPdXRw
dXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogCiAgICAgICAgICAgICBpZiAobUluc2lk
ZUZ1bmN0aW9uKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJl
Y3RpdmUobm9kZS0+Z2V0RW5kTGluZSgpKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGly
ZWN0aXZlKG5vZGUtPmdldExpbmUoKS5sYXN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8
PCAifVxuIjsKIAogICAgICAgICAgICAgICAgIG1TY29wZURlcHRoLS07CkBAIC0xMjc3LDEzICsx
NjI0LDEyIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKICAgICAg
ICAgewogICAgICAgICAgICAgVEludGVybVNlcXVlbmNlICZzZXF1ZW5jZSA9IG5vZGUtPmdldFNl
cXVlbmNlKCk7CiAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnZhcmlhYmxlID0gc2VxdWVuY2Vb
MF0tPmdldEFzVHlwZWQoKTsKLSAgICAgICAgICAgIGJvb2wgdmlzaXQgPSB0cnVlOwogCiAgICAg
ICAgICAgICBpZiAodmFyaWFibGUgJiYgKHZhcmlhYmxlLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFU
ZW1wb3JhcnkgfHwgdmFyaWFibGUtPmdldFF1YWxpZmllcigpID09IEV2cUdsb2JhbCkpCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0U3Ry
dWN0KCkpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBhZGRDb25zdHJ1
Y3Rvcih2YXJpYWJsZS0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3QodmFyaWFibGUtPmdldFR5cGUo
KS5nZXRUeXBlTmFtZSgpKSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgIGFkZENvbnN0cnVj
dG9yKHZhcmlhYmxlLT5nZXRUeXBlKCksIHNjb3BlZFN0cnVjdCh2YXJpYWJsZS0+Z2V0VHlwZSgp
LmdldFN0cnVjdCgpLT5uYW1lKCkpLCBOVUxMKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICBpZiAoIXZhcmlhYmxlLT5nZXRBc1N5bWJvbE5vZGUoKSB8fCB2YXJpYWJsZS0+
Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpICE9ICIiKSAgIC8vIFZhcmlhYmxlIGRlY2xh
cmF0aW9uCkBAIC0xMzEwLDE5ICsxNjU2LDExIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dy
ZWdhdGUoVmlzaXQgdmkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKnNpdCktPnRyYXZl
cnNlKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodmlzaXQgJiYgdGhpcy0+aW5WaXNpdCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgqc2l0ICE9IHNlcXVlbmNlLmJhY2soKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnNpdCAhPSBzZXF1ZW5jZS5iYWNr
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2aXNpdCA9IHRoaXMtPnZpc2l0QWdncmVnYXRlKEluVmlzaXQsIG5vZGUpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdXQgPDwgIiwgIjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmICh2aXNpdCAmJiB0aGlzLT5wb3N0Vmlz
aXQpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMt
PnZpc2l0QWdncmVnYXRlKFBvc3RWaXNpdCwgbm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFyaWFibGUtPmdl
dEFzU3ltYm9sTm9kZSgpICYmIHZhcmlhYmxlLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9s
KCkgPT0gIiIpICAgLy8gVHlwZSAoc3RydWN0KSBkZWNsYXJhdGlvbgogICAgICAgICAgICAgICAg
IHsKQEAgLTEzMzAsNyArMTY2OCwyNCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRl
KFZpc2l0IHZpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFD
SEFCTEUoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorICAgICAgICAgICAgZWxzZSBp
ZiAodmFyaWFibGUgJiYgKHZhcmlhYmxlLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFWYXJ5aW5nT3V0
IHx8IHZhcmlhYmxlLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0KSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRl
cmF0b3Igc2l0ID0gc2VxdWVuY2UuYmVnaW4oKTsgc2l0ICE9IHNlcXVlbmNlLmVuZCgpOyBzaXQr
KykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wg
KnN5bWJvbCA9ICgqc2l0KS0+Z2V0QXNTeW1ib2xOb2RlKCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHN5bWJvbCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gVmVydGV4IChvdXRwdXQpIHZhcnlpbmdzIHdoaWNoIGFyZSBkZWNsYXJlZCBidXQg
bm90IHdyaXR0ZW4gdG8gc2hvdWxkIHN0aWxsIGJlIGRlY2xhcmVkIHRvIGFsbG93IHN1Y2Nlc3Nm
dWwgbGlua2luZworICAgICAgICAgICAgICAgICAgICAgICAgbVJlZmVyZW5jZWRWYXJ5aW5nc1tz
eW1ib2wtPmdldFN5bWJvbCgpXSA9IHN5bWJvbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICgqc2l0KS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZpc2l0KQpA
QCAtMTQwMSw3ICsxNzU2LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNp
dCB2aQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbC0+
Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBhZGRDb25zdHJ1Y3RvcihzeW1ib2wtPmdldFR5cGUoKSwgc2NvcGVkU3Ry
dWN0KHN5bWJvbC0+Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpLCBOVUxMKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZENvbnN0cnVjdG9yKHN5bWJvbC0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1
Y3Qoc3ltYm9sLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPm5hbWUoKSksIE5VTEwpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8IGFyZ3VtZW50U3Ry
aW5nKHN5bWJvbCk7CkBAIC0xNDQxLDE1MSArMTc5NiwxNjMgQEAgYm9vbCBPdXRwdXRITFNMOjp2
aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wRnVu
Y3Rpb25DYWxsOgogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVFN0cmluZyBuYW1lID0gVEZ1bmN0aW9u
Ojp1bm1hbmdsZU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICBib29sIGxv
ZDAgPSBtSW5zaWRlRGlzY29udGludW91c0xvb3AgfHwgbU91dHB1dExvZDBGdW5jdGlvbjsKKyAg
ICAgICAgICAgIFRTdHJpbmcgbmFtZSA9IFRGdW5jdGlvbjo6dW5tYW5nbGVOYW1lKG5vZGUtPmdl
dE5hbWUoKSk7CisgICAgICAgICAgICBib29sIGxvZDAgPSBtSW5zaWRlRGlzY29udGludW91c0xv
b3AgfHwgbU91dHB1dExvZDBGdW5jdGlvbjsKIAotICAgICAgICAgICAgICAgIGlmIChub2RlLT5p
c1VzZXJEZWZpbmVkKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBv
dXQgPDwgZGVjb3JhdGUobmFtZSkgPDwgKGxvZDAgPyAiTG9kMCgiIDogIigiKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKG5vZGUtPmlz
VXNlckRlZmluZWQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgZGVj
b3JhdGUobmFtZSkgPDwgKGxvZDAgPyAiTG9kMCgiIDogIigiKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAobmFtZSA9
PSAidGV4dHVyZTJEIikKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChuYW1lID09ICJ0ZXh0dXJlMkQiKQorICAgICAgICAgICAgICAgICAgICBpZiAoIWxvZDApCiAg
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9kMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9
PSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0
dXJlMkQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAz
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbVVzZXNUZXh0dXJlMkRfYmlhcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUo
KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJEKCI7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkQgPSB0cnVlOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkg
PT0gMykKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMikKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4
dHVyZTJETG9kMCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgp
ID09IDMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRExvZDBfYmlhcyA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5S
RUFDSEFCTEUoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4
dHVyZTJETG9kMCgiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJE
X2JpYXMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworCisgICAgICAgICAgICAgICAgICAgICAgICBv
dXQgPDwgImdsX3RleHR1cmUyRCgiOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmUyRFByb2oiKQorICAgICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghbG9kMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1
ZW5jZSgpLnNpemUoKSA9PSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbVVzZXNUZXh0dXJlMkRQcm9qID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0U2Vx
dWVuY2UoKS5zaXplKCkgPT0gMykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJEUHJval9iaWFzID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0IDw8ICJnbF90ZXh0dXJlMkRQcm9qKCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bVVzZXNUZXh0dXJlMkRMb2QwID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCiAgICAgICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNl
KCkuc2l6ZSgpID09IDIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRFByb2pMb2QwID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4
dHVyZTJEUHJvakxvZDBfYmlhcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJEUHJvakxvZDAoIjsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRExvZDBfYmlhcyA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xf
dGV4dHVyZTJETG9kMCgiOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVDdWJlIikKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVyZTJEUHJvaiIpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWxvZDApCiAgICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9kMCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQogICAgICAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlQ3ViZSA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
VXNlc1RleHR1cmVDdWJlX2JpYXMgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmVDdWJlKCI7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRQcm9qID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09
IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDIpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1
cmVDdWJlTG9kMCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgp
ID09IDMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtVXNlc1RleHR1cmVDdWJlTG9kMF9iaWFzID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBV
TlJFQUNIQUJMRSgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90
ZXh0dXJlQ3ViZUxvZDAoIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1
cmUyRFByb2pfYmlhcyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJEUHJvaigiOwogICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmUyRExvZCIpCisg
ICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMikK
KyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
VXNlc1RleHR1cmUyRFByb2pMb2QwID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6
ZSgpID09IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbVVzZXNUZXh0dXJlMkRMb2QgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1Vc2VzVGV4dHVyZTJEUHJvakxvZDBfYmlhcyA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7
CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJETG9kKCI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmUyRFByb2pMb2QwKCI7CiAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9
PSAidGV4dHVyZTJEUHJvakxvZCIpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVDdWJlIikKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghbG9kMCkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0g
MikKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtVXNlc1RleHR1cmVDdWJlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgp
ID09IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbVVzZXNUZXh0dXJlMkRQcm9qTG9kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtVXNlc1RleHR1cmVDdWJlX2JpYXMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogCi0g
ICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmUyRFByb2pMb2QoIjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZUN1YmUoIjsKICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0
dXJlQ3ViZUxvZCIpCisgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6
ZSgpID09IDMpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2Uo
KS5zaXplKCkgPT0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtVXNlc1RleHR1cmVDdWJlTG9kMCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5nZXRT
ZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZUN1YmVMb2QgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZUN1YmVMb2QwX2JpYXMgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBV
TlJFQUNIQUJMRSgpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1
cmVDdWJlTG9kKCI7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmVD
dWJlTG9kMCgiOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmUyRExvZCIpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXpl
KCkgPT0gMykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
bVVzZXNUZXh0dXJlMkRMb2QgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKworICAgICAgICAgICAgICAgICAgICBv
dXQgPDwgImdsX3RleHR1cmUyRExvZCgiOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlMkRQcm9qTG9kIikKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9
PSAzKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBtVXNl
c1RleHR1cmUyRFByb2pMb2QgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKworICAgICAgICAgICAgICAgICAgICBv
dXQgPDwgImdsX3RleHR1cmUyRFByb2pMb2QoIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVyZUN1YmVMb2QiKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgp
ID09IDMpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1V
c2VzVGV4dHVyZUN1YmVMb2QgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKworICAgICAgICAgICAgICAgICAgICBv
dXQgPDwgImdsX3RleHR1cmVDdWJlTG9kKCI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVs
c2UgaWYgKHZpc2l0ID09IEluVmlzaXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
b3V0IDw8ICIsICI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCisKKyAgICAgICAg
ICAgIFRJbnRlcm1TZXF1ZW5jZSAmYXJndW1lbnRzID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKKwor
ICAgICAgICAgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIGFyZyA9IGFyZ3VtZW50
cy5iZWdpbigpOyBhcmcgIT0gYXJndW1lbnRzLmVuZCgpOyBhcmcrKykKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBvdXQgPDwgIikiOworICAgICAgICAgICAgICAgIGlmIChtT3V0cHV0
VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUICYmIElzU2FtcGxlcigoKmFyZyktPmdldEFzVHlwZWQo
KS0+Z2V0QmFzaWNUeXBlKCkpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgb3V0IDw8ICJ0ZXh0dXJlXyI7CisgICAgICAgICAgICAgICAgICAgICgqYXJnKS0+dHJhdmVy
c2UodGhpcyk7CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLCBzYW1wbGVyXyI7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKCphcmcpLT50cmF2ZXJzZSh0aGlzKTsK
KworICAgICAgICAgICAgICAgIGlmIChhcmcgPCBhcmd1bWVudHMuZW5kKCkgLSAxKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIsICI7CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBvdXQgPDwgIikiOworCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgICBj
YXNlIEVPcFBhcmFtZXRlcnM6ICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiwgIiwg
IilcbntcbiIpOyAgICAgICAgICAgICBicmVhazsKQEAgLTE2NTAsOCArMjAxNyw4IEBAIGJvb2wg
T3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKICAgICAgICAgb3V0cHV0VHJpcGxl
dCh2aXNpdCwgIm1hdDQoIiwgIiwgIiwgIikiKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNl
IEVPcENvbnN0cnVjdFN0cnVjdDoKLSAgICAgICAgYWRkQ29uc3RydWN0b3Iobm9kZS0+Z2V0VHlw
ZSgpLCBzY29wZWRTdHJ1Y3Qobm9kZS0+Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpLCAmbm9kZS0+
Z2V0U2VxdWVuY2UoKSk7Ci0gICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsIHN0cnVjdExvb2t1
cChub2RlLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSkgKyAiX2N0b3IoIiwgIiwgIiwgIikiKTsK
KyAgICAgICAgYWRkQ29uc3RydWN0b3Iobm9kZS0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3Qobm9k
ZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5uYW1lKCkpLCAmbm9kZS0+Z2V0U2VxdWVuY2UoKSk7
CisgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsIHN0cnVjdExvb2t1cChub2RlLT5nZXRUeXBl
KCkuZ2V0U3RydWN0KCktPm5hbWUoKSkgKyAiX2N0b3IoIiwgIiwgIiwgIikiKTsKICAgICAgICAg
YnJlYWs7CiAgICAgICBjYXNlIEVPcExlc3NUaGFuOiAgICAgICAgIG91dHB1dFRyaXBsZXQodmlz
aXQsICIoIiwgIiA8ICIsICIpIik7ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgIGNhc2Ug
RU9wR3JlYXRlclRoYW46ICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIigiLCAiID4gIiwgIiki
KTsgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc0MSw3ICsyMTA4LDcgQEAgYm9vbCBPdXRw
dXRITFNMOjp2aXNpdFNlbGVjdGlvbihWaXNpdCB2aQogCiAgICAgICAgIG91dCA8PCAiKVxuIjsK
ICAgICAgICAgCi0gICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsK
KyAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7
CiAgICAgICAgIG91dCA8PCAie1xuIjsKIAogICAgICAgICBpZiAobm9kZS0+Z2V0VHJ1ZUJsb2Nr
KCkpCkBAIC0xNzQ5LDIwICsyMTE2LDIwIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rp
b24oVmlzaXQgdmkKICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGVtZW50cyhub2RlLT5nZXRUcnVl
QmxvY2soKSk7CiAgICAgICAgIH0KIAotICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUt
PmdldExpbmUoKSk7CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgp
LmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQgPDwgIjtcbn1cbiI7CiAKICAgICAgICAgaWYgKG5v
ZGUtPmdldEZhbHNlQmxvY2soKSkKICAgICAgICAgewogICAgICAgICAgICAgb3V0IDw8ICJlbHNl
XG4iOwogCi0gICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxv
Y2soKS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+
Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICBvdXQg
PDwgIntcbiI7CiAKLSAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFs
c2VCbG9jaygpLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShu
b2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgICAg
IHRyYXZlcnNlU3RhdGVtZW50cyhub2RlLT5nZXRGYWxzZUJsb2NrKCkpOwogCi0gICAgICAgICAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpKTsK
KyAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5n
ZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICBvdXQgPDwgIjtcbn1cbiI7CiAgICAg
ICAgIH0KICAgICB9CkBAIC0xNzg0LDkgKzIxNTEsMTIgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNp
dExvb3AoVmlzaXQgdmlzaXQsIAogICAgICAgICBtSW5zaWRlRGlzY29udGludW91c0xvb3AgPSBj
b250YWluc0xvb3BEaXNjb250aW51aXR5KG5vZGUpOwogICAgIH0KIAotICAgIGlmIChoYW5kbGVF
eGNlc3NpdmVMb29wKG5vZGUpKQorICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQ
VVQpCiAgICAgewotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChoYW5kbGVFeGNl
c3NpdmVMb29wKG5vZGUpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBtQm9keTsKQEAgLTE3
OTUsNyArMjE2NSw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCAK
ICAgICB7CiAgICAgICAgIG91dCA8PCAie2RvXG4iOwogCi0gICAgICAgIG91dHB1dExpbmVEaXJl
Y3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2Rl
LT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAie1xuIjsKICAgICB9CiAg
ICAgZWxzZQpAQCAtMTgyMyw3ICsyMTkzLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3Ao
VmlzaXQgdmlzaXQsIAogCiAgICAgICAgIG91dCA8PCAiKVxuIjsKICAgICAgICAgCi0gICAgICAg
IG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgb3V0cHV0TGlu
ZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAi
e1xuIjsKICAgICB9CiAKQEAgLTE4MzIsMTIgKzIyMDIsMTIgQEAgYm9vbCBPdXRwdXRITFNMOjp2
aXNpdExvb3AoVmlzaXQgdmlzaXQsIAogICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9kZS0+
Z2V0Qm9keSgpKTsKICAgICB9CiAKLSAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExp
bmUoKSk7CisgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGlu
ZSk7CiAgICAgb3V0IDw8ICI7fVxuIjsKIAogICAgIGlmIChub2RlLT5nZXRUeXBlKCkgPT0gRUxv
b3BEb1doaWxlKQogICAgIHsKLSAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRD
b25kaXRpb24oKS0+Z2V0TGluZSgpKTsKKyAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2Rl
LT5nZXRDb25kaXRpb24oKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQgPDwg
IndoaWxlKFxuIjsKIAogICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhp
cyk7CkBAIC0xOTc3LDcgKzIzNDcsNyBAQCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2
ZUxvb3AoVEluCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQtPmdldEJhc2lj
VHlwZSgpID09IEVidEludCAmJiBjb25zdGFudC0+Z2V0Tm9taW5hbFNpemUoKSA9PSAxKQogICAg
ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4
ID0gc3ltYm9sOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWwgPSBjb25zdGFu
dC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbml0aWFsID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KQEAgLTE5OTksNyArMjM2OSw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZl
TG9vcChUSW4KICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQtPmdldEJhc2ljVHlwZSgpID09
IEVidEludCAmJiBjb25zdGFudC0+Z2V0Tm9taW5hbFNpemUoKSA9PSAxKQogICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGFyYXRvciA9IHRlc3QtPmdldE9wKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGxpbWl0ID0gY29uc3RhbnQtPmdldFVuaW9uQXJyYXlQb2ludGVy
KClbMF0uZ2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIGxpbWl0ID0gY29uc3RhbnQt
PmdldElDb25zdCgwKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTIwMjAsNyArMjM5MCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZl
TG9vcChUSW4KICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQtPmdl
dEJhc2ljVHlwZSgpID09IEVidEludCAmJiBjb25zdGFudC0+Z2V0Tm9taW5hbFNpemUoKSA9PSAx
KQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gY29u
c3RhbnQtPmdldFVuaW9uQXJyYXlQb2ludGVyKClbMF0uZ2V0SUNvbnN0KCk7CisgICAgICAgICAg
ICAgICAgICAgIGludCB2YWx1ZSA9IGNvbnN0YW50LT5nZXRJQ29uc3QoMCk7CiAKICAgICAgICAg
ICAgICAgICAgICAgc3dpdGNoIChvcCkKICAgICAgICAgICAgICAgICAgICAgewpAQCAtMjEwOSw3
ICsyNDc5LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgogICAg
ICAgICAgICAgICAgIG91dCA8PCBpbmNyZW1lbnQ7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICIp
XG4iOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3Rp
dmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZl
KG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgIntc
biI7CiAKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0Qm9keSgpKQpAQCAtMjExNyw3ICsy
NDg3LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgogICAgICAg
ICAgICAgICAgICAgICBub2RlLT5nZXRCb2R5KCktPnRyYXZlcnNlKHRoaXMpOwogICAgICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0
TGluZSgpKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExp
bmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgIjt9XG4iOwogCiAgICAg
ICAgICAgICAgICAgaWYgKCFmaXJzdExvb3BGcmFnbWVudCkKQEAgLTIxOTIsNiArMjU2MiwxMiBA
QCBUU3RyaW5nIE91dHB1dEhMU0w6OmFyZ3VtZW50U3RyaW5nKGNvbnN0CiAgICAgICAgIG5hbWUg
PSBkZWNvcmF0ZShuYW1lKTsKICAgICB9CiAKKyAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExT
TDExX09VVFBVVCAmJiBJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpCisgICAgeworICAg
ICAgIHJldHVybiBxdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSArICIgIiArIHRleHR1cmVTdHJp
bmcodHlwZSkgKyAiIHRleHR1cmVfIiArIG5hbWUgKyBhcnJheVN0cmluZyh0eXBlKSArICIsICIg
KworICAgICAgICAgICAgICBxdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSArICIgU2FtcGxlclN0
YXRlIHNhbXBsZXJfIiArIG5hbWUgKyBhcnJheVN0cmluZyh0eXBlKTsKKyAgICB9CisKICAgICBy
ZXR1cm4gcXVhbGlmaWVyU3RyaW5nKHF1YWxpZmllcikgKyAiICIgKyB0eXBlU3RyaW5nKHR5cGUp
ICsgIiAiICsgbmFtZSArIGFycmF5U3RyaW5nKHR5cGUpOwogfQogCkBAIC0yMjEzLDIyICsyNTg5
LDIzIEBAIFRTdHJpbmcgT3V0cHV0SExTTDo6dHlwZVN0cmluZyhjb25zdCBUVHkKIHsKICAgICBp
ZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCiAgICAgewotICAgICAgICBpZiAo
dHlwZS5nZXRUeXBlTmFtZSgpICE9ICIiKQorICAgICAgICBjb25zdCBUU3RyaW5nJiB0eXBlTmFt
ZSA9IHR5cGUuZ2V0U3RydWN0KCktPm5hbWUoKTsKKyAgICAgICAgaWYgKHR5cGVOYW1lICE9ICIi
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RydWN0TG9va3VwKHR5cGUuZ2V0VHlw
ZU5hbWUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RydWN0TG9va3VwKHR5cGVOYW1lKTsKICAg
ICAgICAgfQogICAgICAgICBlbHNlICAgLy8gTmFtZWxlc3Mgc3RydWN0dXJlLCBkZWZpbmUgaW4g
cGxhY2UKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0ICZmaWVsZHMgPSAq
dHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9
IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCiAgICAgICAgICAgICBUU3RyaW5nIHN0cmlu
ZyA9ICJzdHJ1Y3RcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiI7CiAKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsr
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZmaWVsZCA9ICpm
aWVsZHNbaV0udHlwZTsKKyAgICAgICAgICAgICAgICBjb25zdCBURmllbGQgKmZpZWxkID0gZmll
bGRzW2ldOwogCi0gICAgICAgICAgICAgICAgc3RyaW5nICs9ICIgICAgIiArIHR5cGVTdHJpbmco
ZmllbGQpICsgIiAiICsgZGVjb3JhdGUoZmllbGQuZ2V0RmllbGROYW1lKCkpICsgYXJyYXlTdHJp
bmcoZmllbGQpICsgIjtcbiI7CisgICAgICAgICAgICAgICAgc3RyaW5nICs9ICIgICAgIiArIHR5
cGVTdHJpbmcoKmZpZWxkLT50eXBlKCkpICsgIiAiICsgZGVjb3JhdGUoZmllbGQtPm5hbWUoKSkg
KyBhcnJheVN0cmluZygqZmllbGQtPnR5cGUoKSkgKyAiO1xuIjsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgc3RyaW5nICs9ICJ9ICI7CkBAIC0yMjg2LDEwICsyNjYzLDI4IEBAIFRTdHJp
bmcgT3V0cHV0SExTTDo6dHlwZVN0cmluZyhjb25zdCBUVHkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAg
cmV0dXJuICI8dW5rbm93biB0eXBlPiI7CiB9CiAKK1RTdHJpbmcgT3V0cHV0SExTTDo6dGV4dHVy
ZVN0cmluZyhjb25zdCBUVHlwZSAmdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUuZ2V0QmFzaWNU
eXBlKCkpCisgICAgeworICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6CisgICAgICAgIHJldHVybiAi
VGV4dHVyZTJEIjsKKyAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6CisgICAgICAgIHJldHVybiAi
VGV4dHVyZUN1YmUiOworICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6CisgICAgICAg
IHJldHVybiAiVGV4dHVyZTJEIjsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuICI8dW5rbm93biB0ZXh0dXJlIHR5
cGU+IjsKK30KKwogVFN0cmluZyBPdXRwdXRITFNMOjphcnJheVN0cmluZyhjb25zdCBUVHlwZSAm
dHlwZSkKIHsKICAgICBpZiAoIXR5cGUuaXNBcnJheSgpKQpAQCAtMjMwNCwxMSArMjY5OSwxMiBA
QCBUU3RyaW5nIE91dHB1dEhMU0w6OmluaXRpYWxpemVyKGNvbnN0IFRUCiB7CiAgICAgVFN0cmlu
ZyBzdHJpbmc7CiAKLSAgICBmb3IgKGludCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCB0eXBl
LmdldE9iamVjdFNpemUoKTsgY29tcG9uZW50KyspCisgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdl
dE9iamVjdFNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQg
PCBzaXplOyBjb21wb25lbnQrKykKICAgICB7CiAgICAgICAgIHN0cmluZyArPSAiMCI7CiAKLSAg
ICAgICAgaWYgKGNvbXBvbmVudCA8IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpIC0gMSkKKyAgICAgICAg
aWYgKGNvbXBvbmVudCArIDEgPCBzaXplKQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJpbmcg
Kz0gIiwgIjsKICAgICAgICAgfQpAQCAtMjM0NywxMyArMjc0MywxMyBAQCB2b2lkIE91dHB1dEhM
U0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAgICAgICAgIHN0cnVjdHVyZSArPSAic3RydWN0
ICIgKyBkZWNvcmF0ZShuYW1lKSArICJcbiIKICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwog
Ci0gICAgICAgIGNvbnN0IFRUeXBlTGlzdCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0KCk7Cisg
ICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxk
cygpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUo
KTsgaSsrKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmll
bGRzW2ldLnR5cGU7CisgICAgICAgICAgICBjb25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ld
OwogCi0gICAgICAgICAgICBzdHJ1Y3R1cmUgKz0gIiAgICAiICsgdHlwZVN0cmluZyhmaWVsZCkg
KyAiICIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLmdldEZpZWxkTmFtZSgpLCB0eXBlKSArIGFycmF5
U3RyaW5nKGZpZWxkKSArICI7XG4iOworICAgICAgICAgICAgc3RydWN0dXJlICs9ICIgICAgIiAr
IHR5cGVTdHJpbmcoKmZpZWxkLT50eXBlKCkpICsgIiAiICsgZGVjb3JhdGVGaWVsZChmaWVsZC0+
bmFtZSgpLCB0eXBlKSArIGFycmF5U3RyaW5nKCpmaWVsZC0+dHlwZSgpKSArICI7XG4iOwogICAg
ICAgICB9CiAKICAgICAgICAgc3RydWN0dXJlICs9ICJ9O1xuIjsKQEAgLTIzNjUsNyArMjc2MSw3
IEBAIHZvaWQgT3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFQKIAogICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAg
ewotICAgICAgICAgICAgY3RvclBhcmFtZXRlcnMucHVzaF9iYWNrKCpmaWVsZHNbaV0udHlwZSk7
CisgICAgICAgICAgICBjdG9yUGFyYW1ldGVycy5wdXNoX2JhY2soKmZpZWxkc1tpXS0+dHlwZSgp
KTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmIChwYXJhbWV0ZXJzKQpAQCAtMjQ1OCwy
NyArMjg1NCwzMCBAQCB2b2lkIE91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAg
ICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGludCByZW1haW5pbmdDb21wb25lbnRzID0g
Y3RvclR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICBpbnQgcGFyYW1ldGVySW5kZXggPSAw
OworICAgICAgICBzaXplX3QgcmVtYWluaW5nQ29tcG9uZW50cyA9IGN0b3JUeXBlLmdldE9iamVj
dFNpemUoKTsKKyAgICAgICAgc2l6ZV90IHBhcmFtZXRlckluZGV4ID0gMDsKIAogICAgICAgICB3
aGlsZSAocmVtYWluaW5nQ29tcG9uZW50cyA+IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGNv
bnN0IFRUeXBlICZwYXJhbWV0ZXIgPSBjdG9yUGFyYW1ldGVyc1twYXJhbWV0ZXJJbmRleF07Ci0g
ICAgICAgICAgICBib29sIG1vcmVQYXJhbWV0ZXJzID0gcGFyYW1ldGVySW5kZXggPCAoaW50KWN0
b3JQYXJhbWV0ZXJzLnNpemUoKSAtIDE7CisgICAgICAgICAgICBjb25zdCBzaXplX3QgcGFyYW1l
dGVyU2l6ZSA9IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICBib29sIG1v
cmVQYXJhbWV0ZXJzID0gcGFyYW1ldGVySW5kZXggKyAxIDwgY3RvclBhcmFtZXRlcnMuc2l6ZSgp
OwogCiAgICAgICAgICAgICBjb25zdHJ1Y3RvciArPSAieCIgKyBzdHIocGFyYW1ldGVySW5kZXgp
OwogCiAgICAgICAgICAgICBpZiAocGFyYW1ldGVyLmlzU2NhbGFyKCkpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXIuZ2V0T2Jq
ZWN0U2l6ZSgpOworICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJlbWFp
bmluZ0NvbXBvbmVudHMpOworICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0g
cGFyYW1ldGVyU2l6ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFt
ZXRlci5pc1ZlY3RvcigpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChyZW1h
aW5pbmdDb21wb25lbnRzID09IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCkgfHwgbW9yZVBhcmFt
ZXRlcnMpCisgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPT0gcGFyYW1l
dGVyU2l6ZSB8fCBtb3JlUGFyYW1ldGVycykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyLmdldE9iamVjdFNpemUo
KTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtZXRlclNpemUgPD0gcmVtYWluaW5n
Q29tcG9uZW50cyk7CisgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0g
cGFyYW1ldGVyU2l6ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAocmVtYWluaW5nQ29tcG9uZW50cyA8IHBhcmFtZXRlci5nZXROb21pbmFsU2l6ZSgpKQorICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPCBzdGF0aWNfY2FzdDxz
aXplX3Q+KHBhcmFtZXRlci5nZXROb21pbmFsU2l6ZSgpKSkKICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocmVtYWluaW5nQ29tcG9uZW50cykKICAgICAgICAg
ICAgICAgICAgICAgewpAQCAtMjQ5NSw5ICsyODk0LDEwIEBAIHZvaWQgT3V0cHV0SExTTDo6YWRk
Q29uc3RydWN0b3IoY29uc3QgVFQKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYg
KHBhcmFtZXRlci5pc01hdHJpeCgpIHx8IHBhcmFtZXRlci5nZXRTdHJ1Y3QoKSkKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVtYWluaW5nQ29tcG9uZW50cyA9PSBwYXJh
bWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpIHx8IG1vcmVQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQocmVtYWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXJTaXplIHx8IG1vcmVQYXJh
bWV0ZXJzKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocGFyYW1ldGVyU2l6ZSA8PSByZW1haW5p
bmdDb21wb25lbnRzKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByZW1haW5p
bmdDb21wb25lbnRzIC09IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICAg
ICAgcmVtYWluaW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXJTaXplOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogCkBAIC0yNTM0LDE3ICsyOTM0LDE3IEBA
IGNvbnN0IENvbnN0YW50VW5pb24gKk91dHB1dEhMU0w6OndyaXRlQ28KIAogICAgIGlmICh0eXBl
LmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkKICAgICB7Ci0gICAgICAgIG91dCA8PCBzdHJ1
Y3RMb29rdXAodHlwZS5nZXRUeXBlTmFtZSgpKSArICJfY3RvcigiOworICAgICAgICBvdXQgPDwg
c3RydWN0TG9va3VwKHR5cGUuZ2V0U3RydWN0KCktPm5hbWUoKSkgKyAiX2N0b3IoIjsKICAgICAg
ICAgCi0gICAgICAgIGNvbnN0IFRUeXBlTGlzdCAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3Qo
KTsKKyAgICAgICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+
ZmllbGRzKCk7CiAKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNp
emUoKTsgaSsrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7
IGkrKykKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgq
c3RydWN0dXJlKVtpXS50eXBlOworICAgICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9
IGZpZWxkc1tpXS0+dHlwZSgpOwogCiAgICAgICAgICAgICBjb25zdFVuaW9uID0gd3JpdGVDb25z
dGFudFVuaW9uKCpmaWVsZFR5cGUsIGNvbnN0VW5pb24pOwogCi0gICAgICAgICAgICBpZiAoaSAh
PSBzdHJ1Y3R1cmUtPnNpemUoKSAtIDEpCisgICAgICAgICAgICBpZiAoaSAhPSBmaWVsZHMuc2l6
ZSgpIC0gMSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKICAg
ICAgICAgICAgIH0KQEAgLTI1NTQsNyArMjk1NCw3IEBAIGNvbnN0IENvbnN0YW50VW5pb24gKk91
dHB1dEhMU0w6OndyaXRlQ28KICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW50IHNp
emUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdl
dE9iamVjdFNpemUoKTsKICAgICAgICAgYm9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAg
ICAgCiAgICAgICAgIGlmICh3cml0ZVR5cGUpCkBAIC0yNTYyLDcgKzI5NjIsNyBAQCBjb25zdCBD
b25zdGFudFVuaW9uICpPdXRwdXRITFNMOjp3cml0ZUNvCiAgICAgICAgICAgICBvdXQgPDwgdHlw
ZVN0cmluZyh0eXBlKSA8PCAiKCI7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IHNpemU7IGkrKywgY29uc3RVbmlvbisrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7IGkrKywgY29uc3RVbmlvbisrKQogICAgICAgICB7CiAgICAgICAgICAgICBz
d2l0Y2ggKGNvbnN0VW5pb24tPmdldFR5cGUoKSkKICAgICAgICAgICAgIHsKQEAgLTI2NDEsMTEg
KzMwNDEsNyBAQCBUU3RyaW5nIE91dHB1dEhMU0w6OmRlY29yYXRlKGNvbnN0IFRTdHJpCiAKIFRT
dHJpbmcgT3V0cHV0SExTTDo6ZGVjb3JhdGVVbmlmb3JtKGNvbnN0IFRTdHJpbmcgJnN0cmluZywg
Y29uc3QgVFR5cGUgJnR5cGUpCiB7Ci0gICAgaWYgKHR5cGUuaXNBcnJheSgpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuICJhcl8iICsgc3RyaW5nOyAgIC8vIEFsbG93cyBpZGVudGlmeWluZyBhcnJh
eXMgb2Ygc2l6ZSAxCi0gICAgfQotICAgIGVsc2UgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0g
RWJ0U2FtcGxlckV4dGVybmFsT0VTKQorICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVi
dFNhbXBsZXJFeHRlcm5hbE9FUykKICAgICB7CiAgICAgICAgIHJldHVybiAiZXhfIiArIHN0cmlu
ZzsKICAgICB9CkBAIC0yNjU1LDExICszMDUxLDIwMiBAQCBUU3RyaW5nIE91dHB1dEhMU0w6OmRl
Y29yYXRlVW5pZm9ybShjb25zCiAKIFRTdHJpbmcgT3V0cHV0SExTTDo6ZGVjb3JhdGVGaWVsZChj
b25zdCBUU3RyaW5nICZzdHJpbmcsIGNvbnN0IFRUeXBlICZzdHJ1Y3R1cmUpCiB7Ci0gICAgaWYg
KHN0cnVjdHVyZS5nZXRUeXBlTmFtZSgpLmNvbXBhcmUoMCwgMywgImdsXyIpICE9IDApCisgICAg
aWYgKHN0cnVjdHVyZS5nZXRTdHJ1Y3QoKS0+bmFtZSgpLmNvbXBhcmUoMCwgMywgImdsXyIpICE9
IDApCiAgICAgewogICAgICAgICByZXR1cm4gZGVjb3JhdGUoc3RyaW5nKTsKICAgICB9CiAKICAg
ICByZXR1cm4gc3RyaW5nOwogfQorCitUU3RyaW5nIE91dHB1dEhMU0w6OnJlZ2lzdGVyU3RyaW5n
KFRJbnRlcm1TeW1ib2wgKm9wZXJhbmQpCit7CisgICAgQVNTRVJUKG9wZXJhbmQtPmdldFF1YWxp
ZmllcigpID09IEV2cVVuaWZvcm0pOworCisgICAgaWYgKElzU2FtcGxlcihvcGVyYW5kLT5nZXRC
YXNpY1R5cGUoKSkpCisgICAgeworICAgICAgICByZXR1cm4gInMiICsgc3RyKHNhbXBsZXJSZWdp
c3RlcihvcGVyYW5kKSk7CisgICAgfQorCisgICAgcmV0dXJuICJjIiArIHN0cih1bmlmb3JtUmVn
aXN0ZXIob3BlcmFuZCkpOworfQorCitpbnQgT3V0cHV0SExTTDo6c2FtcGxlclJlZ2lzdGVyKFRJ
bnRlcm1TeW1ib2wgKnNhbXBsZXIpCit7CisgICAgY29uc3QgVFR5cGUgJnR5cGUgPSBzYW1wbGVy
LT5nZXRUeXBlKCk7CisgICAgQVNTRVJUKElzU2FtcGxlcih0eXBlLmdldEJhc2ljVHlwZSgpKSk7
CisKKyAgICBpbnQgaW5kZXggPSBtU2FtcGxlclJlZ2lzdGVyOworICAgIG1TYW1wbGVyUmVnaXN0
ZXIgKz0gc2FtcGxlci0+dG90YWxSZWdpc3RlckNvdW50KCk7CisKKyAgICBkZWNsYXJlVW5pZm9y
bSh0eXBlLCBzYW1wbGVyLT5nZXRTeW1ib2woKSwgaW5kZXgpOworCisgICAgcmV0dXJuIGluZGV4
OworfQorCitpbnQgT3V0cHV0SExTTDo6dW5pZm9ybVJlZ2lzdGVyKFRJbnRlcm1TeW1ib2wgKnVu
aWZvcm0pCit7CisgICAgY29uc3QgVFR5cGUgJnR5cGUgPSB1bmlmb3JtLT5nZXRUeXBlKCk7Cisg
ICAgQVNTRVJUKCFJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpOworCisgICAgaW50IGlu
ZGV4ID0gbVVuaWZvcm1SZWdpc3RlcjsKKyAgICBtVW5pZm9ybVJlZ2lzdGVyICs9IHVuaWZvcm0t
PnRvdGFsUmVnaXN0ZXJDb3VudCgpOworCisgICAgZGVjbGFyZVVuaWZvcm0odHlwZSwgdW5pZm9y
bS0+Z2V0U3ltYm9sKCksIGluZGV4KTsKKworICAgIHJldHVybiBpbmRleDsKK30KKwordm9pZCBP
dXRwdXRITFNMOjpkZWNsYXJlVW5pZm9ybShjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgVFN0cmlu
ZyAmbmFtZSwgaW50IGluZGV4KQoreworICAgIFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IHR5cGUu
Z2V0U3RydWN0KCk7CisKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIG1BY3Rp
dmVVbmlmb3Jtcy5wdXNoX2JhY2soVW5pZm9ybShnbFZhcmlhYmxlVHlwZSh0eXBlKSwgZ2xWYXJp
YWJsZVByZWNpc2lvbih0eXBlKSwgbmFtZS5jX3N0cigpLCB0eXBlLmdldEFycmF5U2l6ZSgpLCBp
bmRleCkpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjb25zdCBURmllbGRMaXN0
ICZmaWVsZHMgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpOworCisgICAgICAgIGlmICh0eXBlLmlzQXJy
YXkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IGVsZW1lbnRJbmRleCA9IGluZGV4Owor
CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHR5cGUuZ2V0QXJyYXlTaXplKCk7IGkr
KykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
IGZpZWxkcy5zaXplKCk7IGorKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlICZmaWVsZFR5cGUgPSAqZmllbGRzW2pdLT50eXBlKCk7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgdW5pZm9ybU5hbWUgPSBuYW1lICsgIlsiICsgc3Ry
KGkpICsgIl0uIiArIGZpZWxkc1tqXS0+bmFtZSgpOworICAgICAgICAgICAgICAgICAgICBkZWNs
YXJlVW5pZm9ybShmaWVsZFR5cGUsIHVuaWZvcm1OYW1lLCBlbGVtZW50SW5kZXgpOworICAgICAg
ICAgICAgICAgICAgICBlbGVtZW50SW5kZXggKz0gZmllbGRUeXBlLnRvdGFsUmVnaXN0ZXJDb3Vu
dCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBmaWVsZEluZGV4ID0gaW5kZXg7CisK
KyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZmaWVsZFR5cGUgPSAq
ZmllbGRzW2ldLT50eXBlKCk7CisgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyB1bmlmb3Jt
TmFtZSA9IG5hbWUgKyAiLiIgKyBmaWVsZHNbaV0tPm5hbWUoKTsKKyAgICAgICAgICAgICAgICBk
ZWNsYXJlVW5pZm9ybShmaWVsZFR5cGUsIHVuaWZvcm1OYW1lLCBmaWVsZEluZGV4KTsKKyAgICAg
ICAgICAgICAgICBmaWVsZEluZGV4ICs9IGZpZWxkVHlwZS50b3RhbFJlZ2lzdGVyQ291bnQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworR0xlbnVtIE91dHB1dEhMU0w6
OmdsVmFyaWFibGVUeXBlKGNvbnN0IFRUeXBlICZ0eXBlKQoreworICAgIGlmICh0eXBlLmdldEJh
c2ljVHlwZSgpID09IEVidEZsb2F0KQorICAgIHsKKyAgICAgICAgaWYgKHR5cGUuaXNTY2FsYXIo
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgaWYgKHR5cGUuaXNWZWN0b3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
c3dpdGNoKHR5cGUuZ2V0Tm9taW5hbFNpemUoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgY2FzZSAyOiByZXR1cm4gR0xfRkxPQVRfVkVDMjsKKyAgICAgICAgICAgICAgY2FzZSAzOiBy
ZXR1cm4gR0xfRkxPQVRfVkVDMzsKKyAgICAgICAgICAgICAgY2FzZSA0OiByZXR1cm4gR0xfRkxP
QVRfVkVDNDsKKyAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh0eXBlLmlzTWF0cml4KCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCh0eXBlLmdldE5vbWluYWxTaXplKCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIEdMX0ZMT0FUX01BVDI7CisgICAg
ICAgICAgICAgIGNhc2UgMzogcmV0dXJuIEdMX0ZMT0FUX01BVDM7CisgICAgICAgICAgICAgIGNh
c2UgNDogcmV0dXJuIEdMX0ZMT0FUX01BVDQ7CisgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBVTlJFQUNI
QUJMRSgpOworICAgIH0KKyAgICBlbHNlIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidElu
dCkKKyAgICB7CisgICAgICAgIGlmICh0eXBlLmlzU2NhbGFyKCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBHTF9JTlQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAodHlwZS5p
c1ZlY3RvcigpKQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2godHlwZS5nZXROb21pbmFs
U2l6ZSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBHTF9J
TlRfVkVDMjsKKyAgICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gR0xfSU5UX1ZFQzM7CisgICAg
ICAgICAgICAgIGNhc2UgNDogcmV0dXJuIEdMX0lOVF9WRUM0OworICAgICAgICAgICAgICBkZWZh
dWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZS5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRCb29sKQorICAgIHsKKyAgICAgICAgaWYgKHR5cGUuaXNTY2FsYXIoKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIEdMX0JPT0w7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSBpZiAodHlwZS5pc1ZlY3RvcigpKQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2godHlw
ZS5nZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIDI6
IHJldHVybiBHTF9CT09MX1ZFQzI7CisgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIEdMX0JP
T0xfVkVDMzsKKyAgICAgICAgICAgICAgY2FzZSA0OiByZXR1cm4gR0xfQk9PTF9WRUM0OworICAg
ICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisgICAgZWxzZSBpZiAodHlw
ZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTYW1wbGVyMkQpCisgICAgeworICAgICAgICByZXR1cm4g
R0xfU0FNUExFUl8yRDsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9
PSBFYnRTYW1wbGVyQ3ViZSkKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9TQU1QTEVSX0NVQkU7
CisgICAgfQorICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKworICAgIHJldHVybiBHTF9OT05FOwor
fQorCitHTGVudW0gT3V0cHV0SExTTDo6Z2xWYXJpYWJsZVByZWNpc2lvbihjb25zdCBUVHlwZSAm
dHlwZSkKK3sKKyAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkKKyAgICB7
CisgICAgICAgIHN3aXRjaCAodHlwZS5nZXRQcmVjaXNpb24oKSkKKyAgICAgICAgeworICAgICAg
ICAgIGNhc2UgRWJwSGlnaDogICByZXR1cm4gR0xfSElHSF9GTE9BVDsKKyAgICAgICAgICBjYXNl
IEVicE1lZGl1bTogcmV0dXJuIEdMX01FRElVTV9GTE9BVDsKKyAgICAgICAgICBjYXNlIEVicExv
dzogICAgcmV0dXJuIEdMX0xPV19GTE9BVDsKKyAgICAgICAgICBjYXNlIEVicFVuZGVmaW5lZDoK
KyAgICAgICAgICAgIC8vIFNob3VsZCBiZSBkZWZpbmVkIGFzIHRoZSBkZWZhdWx0IHByZWNpc2lv
biBieSB0aGUgcGFyc2VyCisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidEludCkK
KyAgICB7CisgICAgICAgIHN3aXRjaCAodHlwZS5nZXRQcmVjaXNpb24oKSkKKyAgICAgICAgewor
ICAgICAgICAgIGNhc2UgRWJwSGlnaDogICByZXR1cm4gR0xfSElHSF9JTlQ7CisgICAgICAgICAg
Y2FzZSBFYnBNZWRpdW06IHJldHVybiBHTF9NRURJVU1fSU5UOworICAgICAgICAgIGNhc2UgRWJw
TG93OiAgICByZXR1cm4gR0xfTE9XX0lOVDsKKyAgICAgICAgICBjYXNlIEVicFVuZGVmaW5lZDoK
KyAgICAgICAgICAgIC8vIFNob3VsZCBiZSBkZWZpbmVkIGFzIHRoZSBkZWZhdWx0IHByZWNpc2lv
biBieSB0aGUgcGFyc2VyCisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIE90aGVyIHR5cGVzIChib29sZWFuLCBzYW1wbGVyKSBkb24n
dCBoYXZlIGEgcHJlY2lzaW9uCisgICAgcmV0dXJuIEdMX05PTkU7Cit9CisKIH0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAko
cmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L091dHB1dEhMU0wuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtOSw5ICs5LDE0IEBACiAKICNpbmNsdWRlIDxs
aXN0PgogI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxtYXA+CisKKyNkZWZpbmUgR0xfQVBJQ0FM
TAorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgogCiAjaW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRp
YXRlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKKyNpbmNsdWRlICJjb21w
aWxlci9Vbmlmb3JtLmgiCiAKIG5hbWVzcGFjZSBzaAogewpAQCAtMjAsMTQgKzI1LDE2IEBAIGNs
YXNzIFVuZm9sZFNob3J0Q2lyY3VpdDsKIGNsYXNzIE91dHB1dEhMU0wgOiBwdWJsaWMgVEludGVy
bVRyYXZlcnNlcgogewogICBwdWJsaWM6Ci0gICAgZXhwbGljaXQgT3V0cHV0SExTTChUUGFyc2VD
b250ZXh0ICZjb250ZXh0KTsKKyAgICBPdXRwdXRITFNMKFRQYXJzZUNvbnRleHQgJmNvbnRleHQs
IGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLCBTaFNoYWRlck91dHB1dCBvdXRw
dXRUeXBlKTsKICAgICB+T3V0cHV0SExTTCgpOwogCiAgICAgdm9pZCBvdXRwdXQoKTsKIAogICAg
IFRJbmZvU2lua0Jhc2UgJmdldEJvZHlTdHJlYW0oKTsKKyAgICBjb25zdCBBY3RpdmVVbmlmb3Jt
cyAmZ2V0VW5pZm9ybXMoKTsKIAogICAgIFRTdHJpbmcgdHlwZVN0cmluZyhjb25zdCBUVHlwZSAm
dHlwZSk7CisgICAgVFN0cmluZyB0ZXh0dXJlU3RyaW5nKGNvbnN0IFRUeXBlICZ0eXBlKTsKICAg
ICBzdGF0aWMgVFN0cmluZyBxdWFsaWZpZXJTdHJpbmcoVFF1YWxpZmllciBxdWFsaWZpZXIpOwog
ICAgIHN0YXRpYyBUU3RyaW5nIGFycmF5U3RyaW5nKGNvbnN0IFRUeXBlICZ0eXBlKTsKICAgICBz
dGF0aWMgVFN0cmluZyBpbml0aWFsaXplcihjb25zdCBUVHlwZSAmdHlwZSk7CkBAIC02NCw2ICs3
MSw3IEBAIGNsYXNzIE91dHB1dEhMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnMKICAgICBUU3Ry
aW5nIHN0cnVjdExvb2t1cChjb25zdCBUU3RyaW5nICZ0eXBlTmFtZSk7CiAKICAgICBUUGFyc2VD
b250ZXh0ICZtQ29udGV4dDsKKyAgICBjb25zdCBTaFNoYWRlck91dHB1dCBtT3V0cHV0VHlwZTsK
ICAgICBVbmZvbGRTaG9ydENpcmN1aXQgKm1VbmZvbGRTaG9ydENpcmN1aXQ7CiAgICAgYm9vbCBt
SW5zaWRlRnVuY3Rpb247CiAKQEAgLTcyLDkgKzgwLDEwIEBAIGNsYXNzIE91dHB1dEhMU0wgOiBw
dWJsaWMgVEludGVybVRyYXZlcnMKICAgICBUSW5mb1NpbmtCYXNlIG1Cb2R5OwogICAgIFRJbmZv
U2lua0Jhc2UgbUZvb3RlcjsKIAotICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtUmVmZXJlbmNl
ZFVuaWZvcm1zOwotICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtUmVmZXJlbmNlZEF0dHJpYnV0
ZXM7Ci0gICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1SZWZlcmVuY2VkVmFyeWluZ3M7CisgICAg
dHlwZWRlZiBzdGQ6Om1hcDxUU3RyaW5nLCBUSW50ZXJtU3ltYm9sKj4gUmVmZXJlbmNlZFN5bWJv
bHM7CisgICAgUmVmZXJlbmNlZFN5bWJvbHMgbVJlZmVyZW5jZWRVbmlmb3JtczsKKyAgICBSZWZl
cmVuY2VkU3ltYm9scyBtUmVmZXJlbmNlZEF0dHJpYnV0ZXM7CisgICAgUmVmZXJlbmNlZFN5bWJv
bHMgbVJlZmVyZW5jZWRWYXJ5aW5nczsKIAogICAgIC8vIFBhcmFtZXRlcnMgZGV0ZXJtaW5pbmcg
d2hhdCBnb2VzIGluIHRoZSBoZWFkZXIgb3V0cHV0CiAgICAgYm9vbCBtVXNlc1RleHR1cmUyRDsK
QEAgLTkyLDExICsxMDEsMTQgQEAgY2xhc3MgT3V0cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJh
dmVycwogICAgIGJvb2wgbVVzZXNUZXh0dXJlMkRQcm9qTG9kMF9iaWFzOwogICAgIGJvb2wgbVVz
ZXNUZXh0dXJlQ3ViZUxvZDA7CiAgICAgYm9vbCBtVXNlc1RleHR1cmVDdWJlTG9kMF9iaWFzOwor
ICAgIGJvb2wgbVVzZXNGcmFnQ29sb3I7CisgICAgYm9vbCBtVXNlc0ZyYWdEYXRhOwogICAgIGJv
b2wgbVVzZXNEZXB0aFJhbmdlOwogICAgIGJvb2wgbVVzZXNGcmFnQ29vcmQ7CiAgICAgYm9vbCBt
VXNlc1BvaW50Q29vcmQ7CiAgICAgYm9vbCBtVXNlc0Zyb250RmFjaW5nOwogICAgIGJvb2wgbVVz
ZXNQb2ludFNpemU7CisgICAgYm9vbCBtVXNlc0ZyYWdEZXB0aDsKICAgICBib29sIG1Vc2VzWG9y
OwogICAgIGJvb2wgbVVzZXNNb2QxOwogICAgIGJvb2wgbVVzZXNNb2QydjsKQEAgLTEyNiw2ICsx
MzgsOCBAQCBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAgICAgYm9v
bCBtVXNlc0F0YW4yXzM7CiAgICAgYm9vbCBtVXNlc0F0YW4yXzQ7CiAKKyAgICBpbnQgbU51bVJl
bmRlclRhcmdldHM7CisKICAgICB0eXBlZGVmIHN0ZDo6c2V0PFRTdHJpbmc+IENvbnN0cnVjdG9y
czsKICAgICBDb25zdHJ1Y3RvcnMgbUNvbnN0cnVjdG9yczsKIApAQCAtMTQ2LDYgKzE2MCwxOCBA
QCBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAgICAgYm9vbCBtSW5z
aWRlRGlzY29udGludW91c0xvb3A7CiAKICAgICBUSW50ZXJtU3ltYm9sICptRXhjZXNzaXZlTG9v
cEluZGV4OworCisgICAgaW50IG1Vbmlmb3JtUmVnaXN0ZXI7CisgICAgaW50IG1TYW1wbGVyUmVn
aXN0ZXI7CisKKyAgICBUU3RyaW5nIHJlZ2lzdGVyU3RyaW5nKFRJbnRlcm1TeW1ib2wgKm9wZXJh
bmQpOworICAgIGludCBzYW1wbGVyUmVnaXN0ZXIoVEludGVybVN5bWJvbCAqc2FtcGxlcik7Cisg
ICAgaW50IHVuaWZvcm1SZWdpc3RlcihUSW50ZXJtU3ltYm9sICp1bmlmb3JtKTsKKyAgICB2b2lk
IGRlY2xhcmVVbmlmb3JtKGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBUU3RyaW5nICZuYW1lLCBp
bnQgaW5kZXgpOworICAgIHN0YXRpYyBHTGVudW0gZ2xWYXJpYWJsZVR5cGUoY29uc3QgVFR5cGUg
JnR5cGUpOworICAgIHN0YXRpYyBHTGVudW0gZ2xWYXJpYWJsZVByZWNpc2lvbihjb25zdCBUVHlw
ZSAmdHlwZSk7CisKKyAgICBBY3RpdmVVbmlmb3JtcyBtQWN0aXZlVW5pZm9ybXM7CiB9OwogfQog
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Q
YXJzZUhlbHBlci5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEz
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTIyLDcgKzIy
LDcgQEAKIC8vIExvb2sgYXQgYSAnLicgZmllbGQgc2VsZWN0b3Igc3RyaW5nIGFuZCBjaGFuZ2Ug
aXQgaW50byBvZmZzZXRzCiAvLyBmb3IgYSB2ZWN0b3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0
OjpwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgdmVjU2l6
ZSwgVFZlY3RvckZpZWxkcyYgZmllbGRzLCBpbnQgbGluZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6
cGFyc2VWZWN0b3JGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IHZlY1NpemUs
IFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBm
aWVsZHMubnVtID0gKGludCkgY29tcFN0cmluZy5zaXplKCk7CiAgICAgaWYgKGZpZWxkcy5udW0g
PiA0KSB7CkBAIC0xMTUsNyArMTE1LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJzZVZlY3Rv
ckZpZWxkcyhjbwogLy8gTG9vayBhdCBhICcuJyBmaWVsZCBzZWxlY3RvciBzdHJpbmcgYW5kIGNo
YW5nZSBpdCBpbnRvIG9mZnNldHMKIC8vIGZvciBhIG1hdHJpeC4KIC8vCi1ib29sIFRQYXJzZUNv
bnRleHQ6OnBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCBt
YXRTaXplLCBUTWF0cml4RmllbGRzJiBmaWVsZHMsIGludCBsaW5lKQorYm9vbCBUUGFyc2VDb250
ZXh0OjpwYXJzZU1hdHJpeEZpZWxkcyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgbWF0
U2l6ZSwgVE1hdHJpeEZpZWxkcyYgZmllbGRzLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewog
ICAgIGZpZWxkcy53aG9sZVJvdyA9IGZhbHNlOwogICAgIGZpZWxkcy53aG9sZUNvbCA9IGZhbHNl
OwpAQCAtMTc1LDIyICsxNzUsMjQgQEAgdm9pZCBUUGFyc2VDb250ZXh0OjpyZWNvdmVyKCkKIC8v
CiAvLyBVc2VkIGJ5IGZsZXgvYmlzb24gdG8gb3V0cHV0IGFsbCBzeW50YXggYW5kIHBhcnNpbmcg
ZXJyb3JzLgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6ZXJyb3IoVFNvdXJjZUxvYyBsb2MsCit2
b2lkIFRQYXJzZUNvbnRleHQ6OmVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5mbykKIHsKICAg
ICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwotICAgIERlY29kZVNvdXJjZUxvYyhsb2MsICZz
cmNMb2MuZmlsZSwgJnNyY0xvYy5saW5lKTsKKyAgICBzcmNMb2MuZmlsZSA9IGxvYy5maXJzdF9m
aWxlOworICAgIHNyY0xvYy5saW5lID0gbG9jLmZpcnN0X2xpbmU7CiAgICAgZGlhZ25vc3RpY3Mu
d3JpdGVJbmZvKHBwOjpEaWFnbm9zdGljczo6RVJST1IsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNyY0xvYywgcmVhc29uLCB0b2tlbiwgZXh0cmFJbmZvKTsKIAogfQogCi12b2lkIFRQYXJz
ZUNvbnRleHQ6Ondhcm5pbmcoVFNvdXJjZUxvYyBsb2MsCit2b2lkIFRQYXJzZUNvbnRleHQ6Ondh
cm5pbmcoY29uc3QgVFNvdXJjZUxvYyYgbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIHJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvKSB7CiAgICAgcHA6OlNvdXJjZUxvY2F0
aW9uIHNyY0xvYzsKLSAgICBEZWNvZGVTb3VyY2VMb2MobG9jLCAmc3JjTG9jLmZpbGUsICZzcmNM
b2MubGluZSk7CisgICAgc3JjTG9jLmZpbGUgPSBsb2MuZmlyc3RfZmlsZTsKKyAgICBzcmNMb2Mu
bGluZSA9IGxvYy5maXJzdF9saW5lOwogICAgIGRpYWdub3N0aWNzLndyaXRlSW5mbyhwcDo6RGlh
Z25vc3RpY3M6OldBUk5JTkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY0xvYywgcmVh
c29uLCB0b2tlbiwgZXh0cmFJbmZvKTsKIH0KQEAgLTIwMyw3ICsyMDUsNyBAQCB2b2lkIFRQYXJz
ZUNvbnRleHQ6OnRyYWNlKGNvbnN0IGNoYXIqIHN0CiAvLwogLy8gU2FtZSBlcnJvciBtZXNzYWdl
IGZvciBhbGwgcGxhY2VzIGFzc2lnbm1lbnRzIGRvbid0IHdvcmsuCiAvLwotdm9pZCBUUGFyc2VD
b250ZXh0Ojphc3NpZ25FcnJvcihpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVm
dCwgVFN0cmluZyByaWdodCkKK3ZvaWQgVFBhcnNlQ29udGV4dDo6YXNzaWduRXJyb3IoY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyBy
aWdodCkKIHsKICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAgICAgZXh0
cmFJbmZvU3RyZWFtIDw8ICJjYW5ub3QgY29udmVydCBmcm9tICciIDw8IHJpZ2h0IDw8ICInIHRv
ICciIDw8IGxlZnQgPDwgIiciOwpAQCAtMjE0LDcgKzIxNiw3IEBAIHZvaWQgVFBhcnNlQ29udGV4
dDo6YXNzaWduRXJyb3IoaW50IGxpbmUKIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFs
bCBwbGFjZXMgdW5hcnkgb3BlcmF0aW9ucyBkb24ndCB3b3JrLgogLy8KLXZvaWQgVFBhcnNlQ29u
dGV4dDo6dW5hcnlPcEVycm9yKGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVy
YW5kKQordm9pZCBUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYg
bGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgb3BlcmFuZCkKIHsKICAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJubyBvcGVy
YXRpb24gJyIgPDwgb3AgPDwgIicgZXhpc3RzIHRoYXQgdGFrZXMgYW4gb3BlcmFuZCBvZiB0eXBl
ICIgPDwgb3BlcmFuZCAKQEAgLTIyNiw3ICsyMjgsNyBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnVu
YXJ5T3BFcnJvcihpbnQgbGluCiAvLwogLy8gU2FtZSBlcnJvciBtZXNzYWdlIGZvciBhbGwgYmlu
YXJ5IG9wZXJhdGlvbnMgZG9uJ3Qgd29yay4KIC8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OmJpbmFy
eU9wRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcg
cmlnaHQpCit2b2lkIFRQYXJzZUNvbnRleHQ6OmJpbmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxv
YyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCkKIHsK
ICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAgICAgZXh0cmFJbmZvU3Ry
ZWFtIDw8ICJubyBvcGVyYXRpb24gJyIgPDwgb3AgPDwgIicgZXhpc3RzIHRoYXQgdGFrZXMgYSBs
ZWZ0LWhhbmQgb3BlcmFuZCBvZiB0eXBlICciIDw8IGxlZnQgCkBAIC0yMzUsNyArMjM3LDcgQEAg
dm9pZCBUUGFyc2VDb250ZXh0OjpiaW5hcnlPcEVycm9yKGludCBsaQogICAgIGVycm9yKGxpbmUs
ICIgd3Jvbmcgb3BlcmFuZCB0eXBlcyAiLCBvcCwgZXh0cmFJbmZvLmNfc3RyKCkpOyAKIH0KIAot
Ym9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKGludCBsaW5lLCBUUHJlY2lz
aW9uIHByZWNpc2lvbiwgVEJhc2ljVHlwZSB0eXBlKXsKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cHJl
Y2lzaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHJlY2lzaW9uIHByZWNp
c2lvbiwgVEJhc2ljVHlwZSB0eXBlKXsKICAgICBpZiAoIWNoZWNrc1ByZWNpc2lvbkVycm9ycykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHN3aXRjaCggdHlwZSApewpAQCAtMjYzLDcgKzI2
NSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVjaygKIC8vCiAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6
OmxWYWx1ZUVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50ZXJtVHlwZWQq
IG5vZGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRlcm1UeXBlZCogbm9kZSkKIHsKICAgICBU
SW50ZXJtU3ltYm9sKiBzeW1Ob2RlID0gbm9kZS0+Z2V0QXNTeW1ib2xOb2RlKCk7CiAgICAgVElu
dGVybUJpbmFyeSogYmluYXJ5Tm9kZSA9IG5vZGUtPmdldEFzQmluYXJ5Tm9kZSgpOwpAQCAtMjg2
LDcgKzI4OCw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhpbnQKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRl
cmF0b3IgcCA9IGFnZ3JOb2RlLT5nZXRTZXF1ZW5jZSgpLmJlZ2luKCk7IAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwICE9IGFnZ3JOb2RlLT5nZXRTZXF1
ZW5jZSgpLmVuZCgpOyBwKyspIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gKCpw
KS0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50
ZXIoKS0+Z2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9ICgqcCkt
PmdldEFzVHlwZWQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldElDb25zdCgwKTsKICAgICAg
ICAgICAgICAgICAgICAgb2Zmc2V0W3ZhbHVlXSsrOyAgICAgCiAgICAgICAgICAgICAgICAgICAg
IGlmIChvZmZzZXRbdmFsdWVdID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Io
bGluZSwgIiBsLXZhbHVlIG9mIHN3aXp6bGUgY2Fubm90IGhhdmUgZHVwbGljYXRlIGNvbXBvbmVu
dHMiLCBvcCk7CkBAIC0zMTcsNyArMzE5LDYgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpsVmFsdWVF
cnJvckNoZWNrKGludAogICAgIGNhc2UgRXZxQXR0cmlidXRlOiAgICAgIG1lc3NhZ2UgPSAiY2Fu
J3QgbW9kaWZ5IGFuIGF0dHJpYnV0ZSI7ICAgYnJlYWs7CiAgICAgY2FzZSBFdnFVbmlmb3JtOiAg
ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYSB1bmlmb3JtIjsgICAgICBicmVhazsKICAg
ICBjYXNlIEV2cVZhcnlpbmdJbjogICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHZhcnlp
bmciOyAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxSW5wdXQ6ICAgICAgICAgIG1lc3NhZ2UgPSAi
Y2FuJ3QgbW9kaWZ5IGFuIGlucHV0IjsgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcmFnQ29v
cmQ6ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfRnJhZ0Nvb3JkIjsgICBicmVhazsK
ICAgICBjYXNlIEV2cUZyb250RmFjaW5nOiAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBnbF9G
cm9udEZhY2luZyI7IGJyZWFrOwogICAgIGNhc2UgRXZxUG9pbnRDb29yZDogICAgIG1lc3NhZ2Ug
PSAiY2FuJ3QgbW9kaWZ5IGdsX1BvaW50Q29vcmQiOyAgYnJlYWs7CkBAIC00MDksNyArNDEwLDcg
QEAgYm9vbCBUUGFyc2VDb250ZXh0OjppbnRlZ2VyRXJyb3JDaGVjayhUSQogLy8KIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Z2xv
YmFsRXJyb3JDaGVjayhpbnQgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2VuKQor
Ym9vbCBUUGFyc2VDb250ZXh0OjpnbG9iYWxFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUsIGJvb2wgZ2xvYmFsLCBjb25zdCBjaGFyKiB0b2tlbikKIHsKICAgICBpZiAoZ2xvYmFsKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjgsNyArNDI5LDcgQEAgYm9vbCBUUGFyc2VDb250
ZXh0OjpnbG9iYWxFcnJvckNoZWNrKGludAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3
YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpyZXNlcnZlZEVycm9yQ2hlY2so
aW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCitib29sIFRQYXJzZUNvbnRleHQ6
OnJlc2VydmVkRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5n
JiBpZGVudGlmaWVyKQogewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiByZXNlcnZlZEVyck1zZyA9
ICJyZXNlcnZlZCBidWlsdC1pbiBuYW1lIjsKICAgICBpZiAoIXN5bWJvbFRhYmxlLmF0QnVpbHRJ
bkxldmVsKCkpIHsKQEAgLTQ2Niw3ICs0NjcsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnJlc2Vy
dmVkRXJyb3JDaGVjayhpCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJv
ciBpbiBjb25zdHJ1Y3Rpb24uCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVy
cm9yQ2hlY2soaW50IGxpbmUsIFRJbnRlcm1Ob2RlKiBub2RlLCBURnVuY3Rpb24mIGZ1bmN0aW9u
LCBUT3BlcmF0b3Igb3AsIFRUeXBlKiB0eXBlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1
Y3RvckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybU5vZGUqIG5vZGUs
IFRGdW5jdGlvbiYgZnVuY3Rpb24sIFRPcGVyYXRvciBvcCwgVFR5cGUqIHR5cGUpCiB7CiAgICAg
KnR5cGUgPSBmdW5jdGlvbi5nZXRSZXR1cm5UeXBlKCk7CiAKQEAgLTQ4Nyw3ICs0ODgsNyBAQCBi
b29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjCiAgICAgLy8gYWdhaW4sIHRo
ZXJlIGlzIGFuIGV4dHJhIGFyZ3VtZW50LCBzbyAnb3ZlcmZ1bGwnIHdpbGwgYmVjb21lIHRydWUu
CiAgICAgLy8KIAotICAgIGludCBzaXplID0gMDsKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CiAgICAg
Ym9vbCBjb25zdFR5cGUgPSB0cnVlOwogICAgIGJvb2wgZnVsbCA9IGZhbHNlOwogICAgIGJvb2wg
b3ZlckZ1bGwgPSBmYWxzZTsKQEAgLTUzNCw3ICs1MzUsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6
OmNvbnN0cnVjdG9yRXJyb3JDaGVjCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAK
LSAgICBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0ICYmICF0eXBlLT5pc0FycmF5KCkgJiYg
aW50KHR5cGUtPmdldFN0cnVjdCgpLT5zaXplKCkpICE9IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQo
KSkgeworICAgIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXko
KSAmJiBpbnQodHlwZS0+Z2V0U3RydWN0KCktPmZpZWxkcygpLnNpemUoKSkgIT0gZnVuY3Rpb24u
Z2V0UGFyYW1Db3VudCgpKSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJOdW1iZXIgb2YgY29uc3Ry
dWN0b3IgcGFyYW1ldGVycyBkb2VzIG5vdCBtYXRjaCB0aGUgbnVtYmVyIG9mIHN0cnVjdHVyZSBm
aWVsZHMiLCAiY29uc3RydWN0b3IiKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
NTY4LDcgKzU2OSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWMK
IC8vCiAvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBlcnJvcgogLy8KLWJvb2wgVFBhcnNl
Q29udGV4dDo6dm9pZEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFRQdWJsaWNUeXBlJiBwdWJUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojp2b2lk
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlm
aWVyLCBjb25zdCBUUHVibGljVHlwZSYgcHViVHlwZSkKIHsKICAgICBpZiAocHViVHlwZS50eXBl
ID09IEVidFZvaWQpIHsKICAgICAgICAgZXJyb3IobGluZSwgImlsbGVnYWwgdXNlIG9mIHR5cGUg
J3ZvaWQnIiwgaWRlbnRpZmllci5jX3N0cigpKTsKQEAgLTU4Miw3ICs1ODMsNyBAQCBib29sIFRQ
YXJzZUNvbnRleHQ6OnZvaWRFcnJvckNoZWNrKGludCBsCiAvLwogLy8gcmV0dXJucyB0cnVlIGlu
IGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNr
KGludCBsaW5lLCBjb25zdCBUSW50ZXJtVHlwZWQqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6
OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRJbnRlcm1UeXBl
ZCogdHlwZSkKIHsKICAgICBpZiAodHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Qm9vbCB8fCB0
eXBlLT5pc0FycmF5KCkgfHwgdHlwZS0+aXNNYXRyaXgoKSB8fCB0eXBlLT5pc1ZlY3RvcigpKSB7
CiAgICAgICAgIGVycm9yKGxpbmUsICJib29sZWFuIGV4cHJlc3Npb24gZXhwZWN0ZWQiLCAiIik7
CkBAIC01OTYsNyArNTk3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhp
bnQgbAogLy8KIC8vIHJldHVybnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCiAvLwotYm9vbCBU
UGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUm
IHBUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpCiB7CiAgICAgaWYgKHBUeXBlLnR5
cGUgIT0gRWJ0Qm9vbCB8fCBwVHlwZS5hcnJheSB8fCBwVHlwZS5tYXRyaXggfHwgKHBUeXBlLnNp
emUgPiAxKSkgewogICAgICAgICBlcnJvcihsaW5lLCAiYm9vbGVhbiBleHByZXNzaW9uIGV4cGVj
dGVkIiwgIiIpOwpAQCAtNjA2LDcgKzYwNyw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVy
cm9yQ2hlY2soaW50IGwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4
dDo6c2FtcGxlckVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwg
Y29uc3QgY2hhciogcmVhc29uKQorYm9vbCBUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUsIGNvbnN0
IGNoYXIqIHJlYXNvbikKIHsKICAgICBpZiAocFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpIHsKICAg
ICAgICAgaWYgKGNvbnRhaW5zU2FtcGxlcigqcFR5cGUudXNlckRlZikpIHsKQEAgLTYyNSw3ICs2
MjYsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGluCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSkKK2Jvb2wgVFBhcnNlQ29u
dGV4dDo6c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBj
b25zdCBUUHVibGljVHlwZSYgcFR5cGUpCiB7CiAgICAgaWYgKChwVHlwZS5xdWFsaWZpZXIgPT0g
RXZxVmFyeWluZ0luIHx8IHBUeXBlLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nT3V0IHx8IHBUeXBl
LnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpICYmCiAgICAgICAgIHBUeXBlLnR5cGUgPT0gRWJ0
U3RydWN0KSB7CkBAIC02NDAsNyArNjQxLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpzdHJ1Y3RR
dWFsaWZpZXJFcnJvcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0
OjpwYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhpbnQgbGluZSwgVFF1YWxpZmllciBxdWFsaWZp
ZXIsIGNvbnN0IFRUeXBlJiB0eXBlKQorYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJhbWV0ZXJTYW1w
bGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmll
ciwgY29uc3QgVFR5cGUmIHR5cGUpCiB7CiAgICAgaWYgKChxdWFsaWZpZXIgPT0gRXZxT3V0IHx8
IHF1YWxpZmllciA9PSBFdnFJbk91dCkgJiYgCiAgICAgICAgICAgICAgdHlwZS5nZXRCYXNpY1R5
cGUoKSAhPSBFYnRTdHJ1Y3QgJiYgSXNTYW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKSB7CkBA
IC02NTcsOSArNjU4LDkgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb250YWluc1NhbXBsZXIoVFR5
cAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09
IEVidFN0cnVjdCkgewotICAgICAgICBUVHlwZUxpc3QmIHN0cnVjdHVyZSA9ICp0eXBlLmdldFN0
cnVjdCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHN0cnVjdHVyZS5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxlcigqc3RydWN0dXJl
W2ldLnR5cGUpKQorICAgICAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSB0eXBlLmdldFN0
cnVjdCgpLT5maWVsZHMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBm
aWVsZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChjb250YWluc1NhbXBsZXIoKmZp
ZWxkc1tpXS0+dHlwZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogICAgIH0KQEAgLTY3Miw3ICs2NzMsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5z
U2FtcGxlcihUVHlwCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4K
IC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVycm9yQ2hlY2soaW50IGxpbmUsIFRJ
bnRlcm1UeXBlZCogZXhwciwgaW50JiBzaXplKQorYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNp
emVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1UeXBlZCogZXhwciwg
aW50JiBzaXplKQogewogICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiBjb25zdGFudCA9IGV4cHIt
PmdldEFzQ29uc3RhbnRVbmlvbigpOwogICAgIGlmIChjb25zdGFudCA9PSAwIHx8IGNvbnN0YW50
LT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRJbnQpIHsKQEAgLTY4MCw3ICs2ODEsNyBAQCBib29sIFRQ
YXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVycm9yQ2hlY2soCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIHNpemUgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0
SUNvbnN0KCk7CisgICAgc2l6ZSA9IGNvbnN0YW50LT5nZXRJQ29uc3QoMCk7CiAKICAgICBpZiAo
c2l6ZSA8PSAwKSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJhcnJheSBzaXplIG11c3QgYmUgYSBw
b3NpdGl2ZSBpbnRlZ2VyIiwgIiIpOwpAQCAtNjk2LDcgKzY5Nyw3IEBAIGJvb2wgVFBhcnNlQ29u
dGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjaygKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUg
aXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVF1YWxpZmllckVycm9y
Q2hlY2soaW50IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFy
cmF5UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHVibGljVHlw
ZSB0eXBlKQogewogICAgIGlmICgodHlwZS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlKSB8fCAo
dHlwZS5xdWFsaWZpZXIgPT0gRXZxQ29uc3QpKSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJjYW5u
b3QgZGVjbGFyZSBhcnJheXMgb2YgdGhpcyBxdWFsaWZpZXIiLCBUVHlwZSh0eXBlKS5nZXRDb21w
bGV0ZVN0cmluZygpLmNfc3RyKCkpOwpAQCAtNzExLDcgKzcxMiw3IEBAIGJvb2wgVFBhcnNlQ29u
dGV4dDo6YXJyYXlRdWFsaWZpZXJFcnJvckMKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUg
aXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNr
KGludCBsaW5lLCBUUHVibGljVHlwZSB0eXBlKQorYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVR5
cGVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCiB7
CiAgICAgLy8KICAgICAvLyBDYW4gdGhlIHR5cGUgYmUgYW4gYXJyYXk/CkBAIC03MzIsNyArNzMz
LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKAogLy8KIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0
OjphcnJheUVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNU
eXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKQorYm9vbCBUUGFyc2VDb250ZXh0OjphcnJh
eUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwg
VFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCiB7CiAgICAgLy8KICAgICAv
LyBEb24ndCBjaGVjayBmb3IgcmVzZXJ2ZWQgd29yZCB1c2UgdW50aWwgYWZ0ZXIgd2Uga25vdyBp
dCdzIG5vdCBpbiB0aGUgc3ltYm9sIHRhYmxlLApAQCAtNzc3LDE2ICs3NzgsNiBAQCBib29sIFRQ
YXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayhpbnQgCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogCi0gICAgICAgIFRUeXBlKiB0ID0gdmFyaWFibGUtPmdldEFycmF5SW5m
b3JtYXRpb25UeXBlKCk7Ci0gICAgICAgIHdoaWxlICh0ICE9IDApIHsKLSAgICAgICAgICAgIGlm
ICh0LT5nZXRNYXhBcnJheVNpemUoKSA+IHR5cGUuYXJyYXlTaXplKSB7Ci0gICAgICAgICAgICAg
ICAgZXJyb3IobGluZSwgImhpZ2hlciBpbmRleCB2YWx1ZSBhbHJlYWR5IHVzZWQgZm9yIHRoZSBh
cnJheSIsIGlkZW50aWZpZXIuY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0LT5zZXRBcnJheVNpemUodHlwZS5hcnJheVNp
emUpOwotICAgICAgICAgICAgdCA9IHQtPmdldEFycmF5SW5mb3JtYXRpb25UeXBlKCk7Ci0gICAg
ICAgIH0KLQogICAgICAgICBpZiAodHlwZS5hcnJheVNpemUpCiAgICAgICAgICAgICB2YXJpYWJs
ZS0+Z2V0VHlwZSgpLnNldEFycmF5U2l6ZSh0eXBlLmFycmF5U2l6ZSk7CiAgICAgfSAKQEAgLTc5
Nyw1NiArNzg4LDEyIEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlFcnJvckNoZWNrKGludCAK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlTZXRNYXhT
aXplKFRJbnRlcm1TeW1ib2wgKm5vZGUsIFRUeXBlKiB0eXBlLCBpbnQgc2l6ZSwgYm9vbCB1cGRh
dGVGbGFnLCBUU291cmNlTG9jIGxpbmUpCi17Ci0gICAgYm9vbCBidWlsdEluID0gZmFsc2U7Ci0g
ICAgVFN5bWJvbCogc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZChub2RlLT5nZXRTeW1ib2woKSwg
JmJ1aWx0SW4pOwotICAgIGlmIChzeW1ib2wgPT0gMCkgewotICAgICAgICBlcnJvcihsaW5lLCAi
IHVuZGVjbGFyZWQgaWRlbnRpZmllciIsIG5vZGUtPmdldFN5bWJvbCgpLmNfc3RyKCkpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRp
Y19jYXN0PFRWYXJpYWJsZSo+KHN5bWJvbCk7Ci0KLSAgICB0eXBlLT5zZXRBcnJheUluZm9ybWF0
aW9uVHlwZSh2YXJpYWJsZS0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSk7Ci0gICAgdmFyaWFi
bGUtPnVwZGF0ZUFycmF5SW5mb3JtYXRpb25UeXBlKHR5cGUpOwotCi0gICAgLy8gc3BlY2lhbCBj
YXNpbmcgdG8gdGVzdCBpbmRleCB2YWx1ZSBvZiBnbF9GcmFnRGF0YS4gSWYgdGhlIGFjY2Vzc2Vk
IGluZGV4IGlzID49IGdsX01heERyYXdCdWZmZXJzCi0gICAgLy8gaXRzIGFuIGVycm9yCi0gICAg
aWYgKG5vZGUtPmdldFN5bWJvbCgpID09ICJnbF9GcmFnRGF0YSIpIHsKLSAgICAgICAgVFN5bWJv
bCogZnJhZ0RhdGEgPSBzeW1ib2xUYWJsZS5maW5kKCJnbF9NYXhEcmF3QnVmZmVycyIsICZidWls
dEluKTsKLSAgICAgICAgQVNTRVJUKGZyYWdEYXRhKTsKLQotICAgICAgICBpbnQgZnJhZ0RhdGFW
YWx1ZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KGZyYWdEYXRhKS0+Z2V0Q29uc3RQb2ludGVy
KClbMF0uZ2V0SUNvbnN0KCk7Ci0gICAgICAgIGlmIChmcmFnRGF0YVZhbHVlIDw9IHNpemUpIHsK
LSAgICAgICAgICAgIGVycm9yKGxpbmUsICIiLCAiWyIsICJnbF9GcmFnRGF0YSBjYW4gb25seSBo
YXZlIGEgbWF4IGFycmF5IHNpemUgb2YgdXAgdG8gZ2xfTWF4RHJhd0J1ZmZlcnMiKTsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gd2UgZG9udCB3
YW50IHRvIHVwZGF0ZSB0aGUgbWF4QXJyYXlTaXplIHdoZW4gdGhpcyBmbGFnIGlzIG5vdCBzZXQs
IHdlIGp1c3Qgd2FudCB0byBpbmNsdWRlIHRoaXMgCi0gICAgLy8gbm9kZSB0eXBlIGluIHRoZSBj
aGFpbiBvZiBub2RlIHR5cGVzIHNvIHRoYXQgaXRzIHVwZGF0ZWQgd2hlbiBhIGhpZ2hlciBtYXhB
cnJheVNpemUgY29tZXMgaW4uCi0gICAgaWYgKCF1cGRhdGVGbGFnKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBzaXplKys7Ci0gICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRNYXhBcnJh
eVNpemUoc2l6ZSk7Ci0gICAgdHlwZS0+c2V0TWF4QXJyYXlTaXplKHNpemUpOwotICAgIFRUeXBl
KiB0dCA9IHR5cGU7Ci0KLSAgICB3aGlsZSh0dC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSAh
PSAwKSB7Ci0gICAgICAgIHR0ID0gdHQtPmdldEFycmF5SW5mb3JtYXRpb25UeXBlKCk7Ci0gICAg
ICAgIHR0LT5zZXRNYXhBcnJheVNpemUoc2l6ZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiAvLwogLy8gRW5mb3JjZSBub24taW5pdGlhbGl6ZXIgdHlwZS9xdWFsaWZpZXIgcnVs
ZXMuCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29s
IFRQYXJzZUNvbnRleHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcm
IGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KQorYm9vbCBUUGFyc2VD
b250ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRT
dHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KQogewogICAg
IGlmICh0eXBlLnF1YWxpZmllciA9PSBFdnFDb25zdCkKICAgICB7CkBAIC04NzgsNyArODI1LDcg
QEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZQogLy8KIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojpu
b25Jbml0RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5
cGUmIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojpub25J
bml0RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVy
LCBUUHVibGljVHlwZSYgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpCiB7CiAgICAgaWYgKHJl
c2VydmVkRXJyb3JDaGVjayhsaW5lLCBpZGVudGlmaWVyKSkKICAgICAgICAgcmVjb3ZlcigpOwpA
QCAtODk4LDcgKzg0NSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6bm9uSW5pdEVycm9yQ2hlY2so
aW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJv
ckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1
YWxpZmllciwgVFR5cGUqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmll
ciBwYXJhbVF1YWxpZmllciwgVFR5cGUqIHR5cGUpCiB7ICAgIAogICAgIGlmIChxdWFsaWZpZXIg
IT0gRXZxQ29uc3QgJiYgcXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgewogICAgICAgICBlcnJv
cihsaW5lLCAicXVhbGlmaWVyIG5vdCBhbGxvd2VkIG9uIGZ1bmN0aW9uIHBhcmFtZXRlciIsIGdl
dFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpKTsKQEAgLTkxNyw3ICs4NjQsNyBAQCBib29sIFRQ
YXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayhpbnQgCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIFRQYXJzZUNvbnRleHQ6OmV4dGVuc2lvbkVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0
IFRTdHJpbmcmIGV4dGVuc2lvbikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6ZXh0ZW5zaW9uRXJyb3JD
aGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBleHRlbnNpb24pCiB7
CiAgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBleHRCZWhhdmlvciA9IGV4dGVuc2lvbkJl
aGF2aW9yKCk7CiAgICAgVEV4dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0g
ZXh0QmVoYXZpb3IuZmluZChleHRlbnNpb24uY19zdHIoKSk7CkBAIC05NDUsMTggKzg5MiwxNyBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvCiAgICAgcmV0dXJuIChp
dGVyICE9IGV4dGJlaGF2aW9yLmVuZCgpKTsKIH0KIAotdm9pZCBUUGFyc2VDb250ZXh0OjpoYW5k
bGVFeHRlbnNpb25EaXJlY3RpdmUoaW50IGxpbmUsIGNvbnN0IGNoYXIqIGV4dE5hbWUsIGNvbnN0
IGNoYXIqIGJlaGF2aW9yKQorYm9vbCBUUGFyc2VDb250ZXh0Ojppc0V4dGVuc2lvbkVuYWJsZWQo
Y29uc3QgY2hhciogZXh0ZW5zaW9uKSBjb25zdAogewotICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBs
b2M7Ci0gICAgRGVjb2RlU291cmNlTG9jKGxpbmUsICZsb2MuZmlsZSwgJmxvYy5saW5lKTsKLSAg
ICBkaXJlY3RpdmVIYW5kbGVyLmhhbmRsZUV4dGVuc2lvbihsb2MsIGV4dE5hbWUsIGJlaGF2aW9y
KTsKLX0KKyAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dGJlaGF2aW9yID0gZXh0ZW5z
aW9uQmVoYXZpb3IoKTsKKyAgICBhdXRvIGl0ZXIgPSBleHRiZWhhdmlvci5maW5kKGV4dGVuc2lv
bik7CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6aGFuZGxlUHJhZ21hRGlyZWN0aXZlKGludCBsaW5l
LCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSkKLXsKLSAgICBwcDo6U291cmNl
TG9jYXRpb24gbG9jOwotICAgIERlY29kZVNvdXJjZUxvYyhsaW5lLCAmbG9jLmZpbGUsICZsb2Mu
bGluZSk7Ci0gICAgZGlyZWN0aXZlSGFuZGxlci5oYW5kbGVQcmFnbWEobG9jLCBuYW1lLCB2YWx1
ZSk7CisgICAgaWYgKGl0ZXIgPT0gZXh0YmVoYXZpb3IuZW5kKCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIChpdGVyLT5zZWNvbmQgPT0gRUJoRW5h
YmxlIHx8IGl0ZXItPnNlY29uZCA9PSBFQmhSZXF1aXJlKTsKIH0KIAogLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCkBAIC05NzAsMTIgKzkxNiwxMyBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OmhhbmRs
ZVByYWdtYURpcmVjdGl2CiAvLwogLy8gUmV0dXJuIHRoZSBmdW5jdGlvbiBzeW1ib2wgaWYgZm91
bmQsIG90aGVyd2lzZSAwLgogLy8KLWNvbnN0IFRGdW5jdGlvbiogVFBhcnNlQ29udGV4dDo6Zmlu
ZEZ1bmN0aW9uKGludCBsaW5lLCBURnVuY3Rpb24qIGNhbGwsIGJvb2wgKmJ1aWx0SW4pCitjb25z
dCBURnVuY3Rpb24qIFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbihjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBURnVuY3Rpb24qIGNhbGwsIGJvb2wgKmJ1aWx0SW4pCiB7CiAgICAgLy8gRmlyc3Qg
ZmluZCBieSB1bm1hbmdsZWQgbmFtZSB0byBjaGVjayB3aGV0aGVyIHRoZSBmdW5jdGlvbiBuYW1l
IGhhcyBiZWVuCiAgICAgLy8gaGlkZGVuIGJ5IGEgdmFyaWFibGUgbmFtZSBvciBzdHJ1Y3QgdHlw
ZW5hbWUuCisgICAgLy8gSWYgYSBmdW5jdGlvbiBpcyBmb3VuZCwgY2hlY2sgZm9yIG9uZSB3aXRo
IGEgbWF0Y2hpbmcgYXJndW1lbnQgbGlzdC4KICAgICBjb25zdCBUU3ltYm9sKiBzeW1ib2wgPSBz
eW1ib2xUYWJsZS5maW5kKGNhbGwtPmdldE5hbWUoKSwgYnVpbHRJbik7Ci0gICAgaWYgKHN5bWJv
bCA9PSAwKSB7CisgICAgaWYgKHN5bWJvbCA9PSAwIHx8IHN5bWJvbC0+aXNGdW5jdGlvbigpKSB7
CiAgICAgICAgIHN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQoY2FsbC0+Z2V0TWFuZ2xlZE5hbWUo
KSwgYnVpbHRJbik7CiAgICAgfQogCkBAIC05OTYsNyArOTQzLDcgQEAgY29uc3QgVEZ1bmN0aW9u
KiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuYwogLy8gSW5pdGlhbGl6ZXJzIHNob3cgdXAgaW4gc2V2
ZXJhbCBwbGFjZXMgaW4gdGhlIGdyYW1tYXIuICBIYXZlIG9uZSBzZXQgb2YKIC8vIGNvZGUgdG8g
aGFuZGxlIHRoZW0gaGVyZS4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFs
aXplcihUU291cmNlTG9jIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBw
VHlwZSwgCitib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbml0
aWFsaXplciwgVEludGVybU5vZGUqJiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUqIHZhcmlhYmxlKQog
ewogICAgIFRUeXBlIHR5cGUgPSBUVHlwZShwVHlwZSk7CkBAIC0xMDQ4LDEzICs5OTUsNyBAQCBi
b29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihUCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3Rh
bnRVbmlvbigpKSB7IAotICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSA9IHZh
cmlhYmxlLT5nZXRDb25zdFBvaW50ZXIoKTsKLQotICAgICAgICAgICAgaWYgKHR5cGUuZ2V0T2Jq
ZWN0U2l6ZSgpID09IDEgJiYgdHlwZS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QpIHsKLSAg
ICAgICAgICAgICAgICAqdW5pb25BcnJheSA9IChpbml0aWFsaXplci0+Z2V0QXNDb25zdGFudFVu
aW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCkpWzBdOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICB2YXJpYWJsZS0+c2hhcmVDb25zdFBvaW50ZXIoaW5pdGlhbGl6ZXIt
PmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKTsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHZhcmlhYmxlLT5zaGFyZUNvbnN0UG9pbnRlcihpbml0aWFsaXpl
ci0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCkpOwogICAgICAg
ICB9IGVsc2UgaWYgKGluaXRpYWxpemVyLT5nZXRBc1N5bWJvbE5vZGUoKSkgewogICAgICAgICAg
ICAgY29uc3QgVFN5bWJvbCogc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZChpbml0aWFsaXplci0+
Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpKTsKICAgICAgICAgICAgIGNvbnN0IFRWYXJp
YWJsZSogdFZhciA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7CkBAIC0x
MTA4LDE2ICsxMDQ5LDE2IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YXJlQWxsQ2hpbGRDb25zdChU
SW4KIC8vCiAvLyBSZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9yIHRoZSBjb25zdHJ1Y3RlZCBub2Rl
IChhZ2dyZWdhdGUgb3IgdHlwZWQpIGZvciBubyBlcnJvci4KIC8vCi1USW50ZXJtVHlwZWQqIFRQ
YXJzZUNvbnRleHQ6OmFkZENvbnN0cnVjdG9yKFRJbnRlcm1Ob2RlKiBub2RlLCBjb25zdCBUVHlw
ZSogdHlwZSwgVE9wZXJhdG9yIG9wLCBURnVuY3Rpb24qIGZuQ2FsbCwgVFNvdXJjZUxvYyBsaW5l
KQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9k
ZSogbm9kZSwgY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVEZ1bmN0aW9uKiBmbkNh
bGwsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgaWYgKG5vZGUgPT0gMCkKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBUSW50ZXJtQWdncmVnYXRlKiBhZ2dyTm9kZSA9IG5vZGUtPmdl
dEFzQWdncmVnYXRlKCk7CiAgICAgCi0gICAgVFR5cGVMaXN0Ojpjb25zdF9pdGVyYXRvciBtZW1i
ZXJUeXBlczsKKyAgICBURmllbGRMaXN0Ojpjb25zdF9pdGVyYXRvciBtZW1iZXJGaWVsZHM7CiAg
ICAgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCkKLSAgICAgICAgbWVtYmVyVHlwZXMgPSB0
eXBlLT5nZXRTdHJ1Y3QoKS0+YmVnaW4oKTsKKyAgICAgICAgbWVtYmVyRmllbGRzID0gdHlwZS0+
Z2V0U3RydWN0KCktPmZpZWxkcygpLmJlZ2luKCk7CiAgICAgCiAgICAgVFR5cGUgZWxlbWVudFR5
cGUgPSAqdHlwZTsKICAgICBpZiAodHlwZS0+aXNBcnJheSgpKQpAQCAtMTEzOSw3ICsxMDgwLDcg
QEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdHJ1YwogICAgICAgICBpZiAo
dHlwZS0+aXNBcnJheSgpKQogICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdChu
b2RlLCAmZWxlbWVudFR5cGUsIDEsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwogICAgICAgICBl
bHNlIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgICAgICBuZXdOb2RlID0g
Y29uc3RydWN0U3RydWN0KG5vZGUsICgqbWVtYmVyVHlwZXMpLnR5cGUsIDEsIG5vZGUtPmdldExp
bmUoKSwgZmFsc2UpOworICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdChub2Rl
LCAoKm1lbWJlckZpZWxkcyktPnR5cGUoKSwgMSwgbm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RCdWlsdEluKHR5cGUs
IG9wLCBub2RlLCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKIApAQCAtMTE3MCw3ICsxMTExLDcg
QEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdHJ1YwogICAgICAgICBpZiAo
dHlwZS0+aXNBcnJheSgpKQogICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdCgq
cCwgJmVsZW1lbnRUeXBlLCBwYXJhbUNvdW50KzEsIG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7CiAg
ICAgICAgIGVsc2UgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCkKLSAgICAgICAgICAgIG5l
d05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsIChtZW1iZXJUeXBlc1twYXJhbUNvdW50XSkudHlw
ZSwgcGFyYW1Db3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRydWUpOworICAgICAgICAgICAgbmV3
Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdCgqcCwgbWVtYmVyRmllbGRzW3BhcmFtQ291bnRdLT50eXBl
KCksIHBhcmFtQ291bnQrMSwgbm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdEJ1aWx0SW4odHlwZSwgb3AsICpwLCBub2Rl
LT5nZXRMaW5lKCksIHRydWUpOwogICAgICAgICAKQEAgLTEyMTYsNyArMTE1Nyw3IEBAIFRJbnRl
cm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Zm9sZENvbnN0Q28KIC8vCiAvLyBSZXR1cm5zIDAgZm9y
IGFuIGVycm9yIG9yIHRoZSBjb25zdHJ1Y3RlZCBub2RlLgogLy8KLVRJbnRlcm1UeXBlZCogVFBh
cnNlQ29udGV4dDo6Y29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSogdHlwZSwgVE9wZXJhdG9y
IG9wLCBUSW50ZXJtTm9kZSogbm9kZSwgVFNvdXJjZUxvYyBsaW5lLCBib29sIHN1YnNldCkKK1RJ
bnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSog
dHlwZSwgVE9wZXJhdG9yIG9wLCBUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYg
bGluZSwgYm9vbCBzdWJzZXQpCiB7CiAgICAgVEludGVybVR5cGVkKiBuZXdOb2RlOwogICAgIFRP
cGVyYXRvciBiYXNpY09wOwpAQCAtMTI3OCw3ICsxMjE5LDcgQEAgVEludGVybVR5cGVkKiBUUGFy
c2VDb250ZXh0Ojpjb25zdHJ1Y3RCdQogLy8KIC8vIFJldHVybnMgMCBmb3IgYW4gZXJyb3Igb3Ig
dGhlIGlucHV0IG5vZGUgaXRzZWxmIGlmIHRoZSBleHBlY3RlZCBhbmQgdGhlIGdpdmVuIHBhcmFt
ZXRlciB0eXBlcyBtYXRjaC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0
cnVjdFN0cnVjdChUSW50ZXJtTm9kZSogbm9kZSwgVFR5cGUqIHR5cGUsIGludCBwYXJhbUNvdW50
LCBUU291cmNlTG9jIGxpbmUsIGJvb2wgc3Vic2V0KQorVEludGVybVR5cGVkKiBUUGFyc2VDb250
ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QoVEludGVybU5vZGUqIG5vZGUsIFRUeXBlKiB0eXBlLCBpbnQg
cGFyYW1Db3VudCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgYm9vbCBzdWJzZXQpCiB7CiAgICAg
aWYgKCp0eXBlID09IG5vZGUtPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgpKSB7CiAgICAgICAgIGlm
IChzdWJzZXQpCkBAIC0xMzA1LDcgKzEyNDYsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRl
eHQ6OmNvbnN0cnVjdFN0CiAvLyBub2RlIG9yIGl0IGNvdWxkIGJlIHRoZSBpbnRlcm1lZGlhdGUg
dHJlZSByZXByZXNlbnRhdGlvbiBvZiBhY2Nlc3NpbmcgZmllbGRzIGluIGEgY29uc3RhbnQgc3Ry
dWN0dXJlIG9yIGNvbHVtbiBvZiAKIC8vIGEgY29uc3RhbnQgbWF0cml4LgogLy8KLVRJbnRlcm1U
eXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWN0b3JOb2RlKFRWZWN0b3JGaWVsZHMmIGZp
ZWxkcywgVEludGVybVR5cGVkKiBub2RlLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQq
IFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVsZHMs
IFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50
ZXJtVHlwZWQqIHR5cGVkTm9kZTsKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0
YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwpAQCAtMTMxMyw3ICsxMjU0LDYg
QEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFZlYwogICAgIENvbnN0YW50
VW5pb24gKnVuaW9uQXJyYXk7CiAgICAgaWYgKHRlbXBDb25zdGFudE5vZGUpIHsKICAgICAgICAg
dW5pb25BcnJheSA9IHRlbXBDb25zdGFudE5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0g
ICAgICAgIEFTU0VSVCh1bmlvbkFycmF5KTsKIAogICAgICAgICBpZiAoIXVuaW9uQXJyYXkpIHsK
ICAgICAgICAgICAgIHJldHVybiBub2RlOwpAQCAtMTMyOCw3ICsxMjY4LDcgQEAgVEludGVybVR5
cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFZlYwogICAgIENvbnN0YW50VW5pb24qIGNvbnN0
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltmaWVsZHMubnVtXTsKIAogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgZmllbGRzLm51bTsgaSsrKSB7Ci0gICAgICAgIGlmIChmaWVsZHMub2Zmc2V0c1tp
XSA+PSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpKSB7CisgICAgICAgIGlmIChmaWVs
ZHMub2Zmc2V0c1tpXSA+PSBub2RlLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSkgewogICAg
ICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwogICAgICAgICAgICAg
ZXh0cmFJbmZvU3RyZWFtIDw8ICJ2ZWN0b3IgZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAn
IiA8PCBmaWVsZHMub2Zmc2V0c1tpXSA8PCAiJyI7CiAgICAgICAgICAgICBzdGQ6OnN0cmluZyBl
eHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CkBAIC0xMzUwLDcgKzEyOTAsNyBAQCBU
SW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVjCiAvLyB0byB0aGUgZnVuY3Rp
b24gY291bGQgZWl0aGVyIGJlIGEgc3ltYm9sIG5vZGUgKG1bMF0gd2hlcmUgbSBpcyBhIGNvbnN0
YW50IG1hdHJpeCl0aGF0IHJlcHJlc2VudHMgYSAKIC8vIGNvbnN0YW50IG1hdHJpeCBvciBpdCBj
b3VsZCBiZSB0aGUgdHJlZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29uc3RhbnQgbWF0cml4IChz
Lm0xWzBdIHdoZXJlIHMgaXMgYSBjb25zdGFudCBzdHJ1Y3R1cmUpCiAvLwotVEludGVybVR5cGVk
KiBUUGFyc2VDb250ZXh0OjphZGRDb25zdE1hdHJpeE5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlw
ZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
YWRkQ29uc3RNYXRyaXhOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBU
U291cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRlcm1UeXBlZCogdHlwZWROb2RlOwogICAgIFRJ
bnRlcm1Db25zdGFudFVuaW9uKiB0ZW1wQ29uc3RhbnROb2RlID0gbm9kZS0+Z2V0QXNDb25zdGFu
dFVuaW9uKCk7CkBAIC0xMzg1LDcgKzEzMjUsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRl
eHQ6OmFkZENvbnN0TWF0CiAvLyB0byB0aGUgZnVuY3Rpb24gY291bGQgZWl0aGVyIGJlIGEgc3lt
Ym9sIG5vZGUgKGFbMF0gd2hlcmUgYSBpcyBhIGNvbnN0YW50IGFycmF5KXRoYXQgcmVwcmVzZW50
cyBhIAogLy8gY29uc3RhbnQgYXJyYXkgb3IgaXQgY291bGQgYmUgdGhlIHRyZWUgcmVwcmVzZW50
YXRpb24gb2YgdGhlIGNvbnN0YW50IGFycmF5IChzLmExWzBdIHdoZXJlIHMgaXMgYSBjb25zdGFu
dCBzdHJ1Y3R1cmUpCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdEFy
cmF5Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQor
VEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdEFycmF5Tm9kZShpbnQgaW5kZXgs
IFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50
ZXJtVHlwZWQqIHR5cGVkTm9kZTsKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0
YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwpAQCAtMTQwMSw5ICsxMzQxLDgg
QEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdEFycgogICAgICAgICBpbmRl
eCA9IDA7CiAgICAgfQogCi0gICAgaW50IGFycmF5RWxlbWVudFNpemUgPSBhcnJheUVsZW1lbnRU
eXBlLmdldE9iamVjdFNpemUoKTsKLQogICAgIGlmICh0ZW1wQ29uc3RhbnROb2RlKSB7CisgICAg
ICAgICBzaXplX3QgYXJyYXlFbGVtZW50U2l6ZSA9IGFycmF5RWxlbWVudFR5cGUuZ2V0T2JqZWN0
U2l6ZSgpOwogICAgICAgICAgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSA9IHRlbXBDb25zdGFu
dE5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAgICAgICAgICB0eXBlZE5vZGUgPSBpbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbigmdW5pb25BcnJheVthcnJheUVsZW1lbnRTaXplICog
aW5kZXhdLCB0ZW1wQ29uc3RhbnROb2RlLT5nZXRUeXBlKCksIGxpbmUpOwogICAgIH0gZWxzZSB7
CkBAIC0xNDIyLDIyICsxMzYxLDIxIEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRk
Q29uc3RBcnIKIC8vIElmIHRoZXJlIGlzIGFuIGVtYmVkZGVkL25lc3RlZCBzdHJ1Y3QsIGl0IGFw
cHJvcHJpYXRlbHkgY2FsbHMgYWRkQ29uc3RTdHJ1Y3ROZXN0ZWQgb3IgYWRkQ29uc3RTdHJ1Y3RG
cm9tQWdncgogLy8gZnVuY3Rpb24gYW5kIHJldHVybnMgdGhlIHBhcnNlLXRyZWUgd2l0aCB0aGUg
dmFsdWVzIG9mIHRoZSBlbWJlZGRlZC9uZXN0ZWQgc3RydWN0LgogLy8KLVRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RTdHJ1Y3QoVFN0cmluZyYgaWRlbnRpZmllciwgVEludGVy
bVR5cGVkKiBub2RlLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRl
eHQ6OmFkZENvbnN0U3RydWN0KFRTdHJpbmcmIGlkZW50aWZpZXIsIFRJbnRlcm1UeXBlZCogbm9k
ZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKLSAgICBjb25zdCBUVHlwZUxpc3QqIGZpZWxk
cyA9IG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKLSAgICBUSW50ZXJtVHlwZWQgKnR5cGVk
Tm9kZTsKLSAgICBpbnQgaW5zdGFuY2VTaXplID0gMDsKLSAgICB1bnNpZ25lZCBpbnQgaW5kZXgg
PSAwOwotICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICp0ZW1wQ29uc3RhbnROb2RlID0gbm9kZS0+
Z2V0QXNDb25zdGFudFVuaW9uKCk7CisgICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gbm9k
ZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKIAotICAgIGZvciAoIGluZGV4ID0g
MDsgaW5kZXggPCBmaWVsZHMtPnNpemUoKTsgKytpbmRleCkgewotICAgICAgICBpZiAoKCpmaWVs
ZHMpW2luZGV4XS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSBpZGVudGlmaWVyKSB7CisgICAgc2l6
ZV90IGluc3RhbmNlU2l6ZSA9IDA7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IGZpZWxkcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKGZpZWxkc1tpbmRleF0tPm5h
bWUoKSA9PSBpZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGluc3RhbmNlU2l6ZSArPSAoKmZpZWxkcylbaW5kZXhdLnR5cGUtPmdl
dE9iamVjdFNpemUoKTsKKyAgICAgICAgICAgIGluc3RhbmNlU2l6ZSArPSBmaWVsZHNbaW5kZXhd
LT50eXBlKCktPmdldE9iamVjdFNpemUoKTsKICAgICAgICAgfQogICAgIH0KIAorICAgIFRJbnRl
cm1UeXBlZCogdHlwZWROb2RlID0gMDsKKyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENv
bnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwogICAgIGlmICh0ZW1wQ29u
c3RhbnROb2RlKSB7CiAgICAgICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gdGVtcENv
bnN0YW50Tm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKIApAQCAtMTQ1Miw3ICsxMzkwLDcg
QEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cgogICAgIHJldHVybiB0
eXBlZE5vZGU7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6ZW50ZXJTdHJ1Y3REZWNsYXJhdGlv
bihpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKK2Jvb2wgVFBhcnNlQ29udGV4
dDo6ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBU
U3RyaW5nJiBpZGVudGlmaWVyKQogewogICAgICsrc3RydWN0TmVzdGluZ0xldmVsOwogCkBAIC0x
NDc4LDIxICsxNDE2LDIxIEBAIGNvbnN0IGludCBrV2ViR0xNYXhTdHJ1Y3ROZXN0aW5nID0gNDsK
IAogfSAgLy8gbmFtZXNwYWNlCiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0TmVzdGluZ0Vy
cm9yQ2hlY2soVFNvdXJjZUxvYyBsaW5lLCBjb25zdCBUVHlwZSYgZmllbGRUeXBlKQorYm9vbCBU
UGFyc2VDb250ZXh0OjpzdHJ1Y3ROZXN0aW5nRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBjb25zdCBURmllbGQmIGZpZWxkKQogewogICAgIGlmICghaXNXZWJHTEJhc2VkU3BlYyhz
aGFkZXJTcGVjKSkgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGZp
ZWxkVHlwZS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QpIHsKKyAgICBpZiAoZmllbGQudHlw
ZSgpLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIC8vIFdlJ3JlIGFscmVhZHkgaW5zaWRlIGEgc3RydWN0dXJlIGRlZmlu
aXRpb24gYXQgdGhpcyBwb2ludCwgc28gYWRkCiAgICAgLy8gb25lIHRvIHRoZSBmaWVsZCdzIHN0
cnVjdCBuZXN0aW5nLgotICAgIGlmICgxICsgZmllbGRUeXBlLmdldERlZXBlc3RTdHJ1Y3ROZXN0
aW5nKCkgPiBrV2ViR0xNYXhTdHJ1Y3ROZXN0aW5nKSB7CisgICAgaWYgKDEgKyBmaWVsZC50eXBl
KCktPmdldERlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkgPiBrV2ViR0xNYXhTdHJ1Y3ROZXN0aW5nKSB7
CiAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgZXh0
cmFJbmZvU3RyZWFtIDw8ICJSZWZlcmVuY2Ugb2Ygc3RydWN0IHR5cGUgIiA8PCBmaWVsZFR5cGUu
Z2V0VHlwZU5hbWUoKSAKKyAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJSZWZlcmVuY2Ugb2Yg
c3RydWN0IHR5cGUgIiA8PCBmaWVsZC5uYW1lKCkKICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICIgZXhjZWVkcyBtYXhpbXVtIHN0cnVjdCBuZXN0aW5nIG9mICIgPDwga1dlYkdMTWF4U3RydWN0
TmVzdGluZzsKICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFt
LnN0cigpOwogICAgICAgICBlcnJvcihsaW5lLCAiIiwgIiIsIGV4dHJhSW5mby5jX3N0cigpKTsK
QEAgLTE1MDMsNiArMTQ0MSwxNDAgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpzdHJ1Y3ROZXN0aW5n
RXJyb3JDaAogfQogCiAvLworLy8gUGFyc2UgYW4gYXJyYXkgaW5kZXggZXhwcmVzc2lvbgorLy8K
K1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkSW5kZXhFeHByZXNzaW9uKFRJbnRlcm1U
eXBlZCAqYmFzZUV4cHJlc3Npb24sIGNvbnN0IFRTb3VyY2VMb2MmIGxvY2F0aW9uLCBUSW50ZXJt
VHlwZWQgKmluZGV4RXhwcmVzc2lvbikKK3sKKyAgICBUSW50ZXJtVHlwZWQgKmluZGV4ZWRFeHBy
ZXNzaW9uID0gTlVMTDsKKworICAgIGlmICghYmFzZUV4cHJlc3Npb24tPmlzQXJyYXkoKSAmJiAh
YmFzZUV4cHJlc3Npb24tPmlzTWF0cml4KCkgJiYgIWJhc2VFeHByZXNzaW9uLT5pc1ZlY3Rvcigp
KQorICAgIHsKKyAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRBc1N5bWJvbE5vZGUoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICIgbGVmdCBvZiAnWycgaXMg
bm90IG9mIHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsIGJhc2VFeHByZXNzaW9uLT5n
ZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIiBsZWZ0IG9m
ICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgImV4cHJlc3Np
b24iKTsKKyAgICAgICAgfQorICAgICAgICByZWNvdmVyKCk7CisgICAgfQorCisgICAgaWYgKGlu
ZGV4RXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCisgICAgeworICAgICAg
ICBpbnQgaW5kZXggPSBpbmRleEV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRJ
Q29uc3QoMCk7CisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIGluZm9TdHJlYW07CisgICAgICAgICAgICBpbmZvU3RyZWFtIDw8
IGluZGV4OworICAgICAgICAgICAgc3RkOjpzdHJpbmcgaW5mbyA9IGluZm9TdHJlYW0uc3RyKCk7
CisgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIm5lZ2F0aXZlIGluZGV4IiwgaW5mby5jX3N0
cigpKTsKKyAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRRdWFsaWZp
ZXIoKSA9PSBFdnFDb25zdCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGJhc2VFeHByZXNz
aW9uLT5pc0FycmF5KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gY29uc3Rh
bnQgZm9sZGluZyBmb3IgYXJyYXlzCisgICAgICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24g
PSBhZGRDb25zdEFycmF5Tm9kZShpbmRleCwgYmFzZUV4cHJlc3Npb24sIGxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5pc1ZlY3Rv
cigpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IGZvbGRpbmcg
Zm9yIHZlY3RvcnMKKyAgICAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKKyAgICAg
ICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKKyAgICAgICAgICAgICAgICBmaWVsZHMub2Zmc2V0
c1swXSA9IGluZGV4OyAvLyBuZWVkIHRvIGRvIGl0IHRoaXMgd2F5IGJlY2F1c2Ugdi54eSBzZW5k
cyBmaWVsZHMgaW50ZWdlciBhcnJheQorICAgICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9u
ID0gYWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgYmFzZUV4cHJlc3Npb24sIGxvY2F0aW9uKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5pc01h
dHJpeCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IGZvbGRp
bmcgZm9yIG1hdHJpY2VzCisgICAgICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPSBhZGRD
b25zdE1hdHJpeE5vZGUoaW5kZXgsIGJhc2VFeHByZXNzaW9uLCBsb2NhdGlvbik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoYmFzZUV4cHJlc3Npb24tPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoaW5kZXggPj0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRBcnJheVNpemUo
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIGV4dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFt
IDw8ICJhcnJheSBpbmRleCBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3Ry
KCk7CisgICAgICAgICAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiIiwgIlsiLCBleHRyYUlu
Zm8uY19zdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaW5kZXggPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgp
IC0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYmFzZUV4
cHJlc3Npb24tPmdldFF1YWxpZmllcigpID09IEV2cUZyYWdEYXRhICYmIGluZGV4ID4gMCAmJiAh
aXNFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIikpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIiIsICJbIiwgImFycmF5
IGluZGV4ZXMgZm9yIGdsX0ZyYWdEYXRhIG11c3QgYmUgemVybyB3aGVuIEdMX0VYVF9kcmF3X2J1
ZmZlcnMgaXMgZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgcmVjb3ZlcigpOworICAg
ICAgICAgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoKGJhc2VFeHByZXNzaW9uLT5pc1ZlY3RvcigpIHx8
IGJhc2VFeHByZXNzaW9uLT5pc01hdHJpeCgpKSAmJiBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgp
LmdldE5vbWluYWxTaXplKCkgPD0gaW5kZXgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAgICAgICAgIGV4
dHJhSW5mb1N0cmVhbSA8PCAiZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8PCBpbmRl
eCA8PCAiJyI7CisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJ
bmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiIiwgIlsi
LCBleHRyYUluZm8uY19zdHIoKSk7CisgICAgICAgICAgICAgICAgcmVjb3ZlcigpOworICAgICAg
ICAgICAgICAgIGluZGV4ID0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXROb21pbmFsU2l6
ZSgpIC0gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5kZXhFeHByZXNzaW9uLT5n
ZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+c2V0SUNvbnN0KGlu
ZGV4KTsKKyAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gaW50ZXJtZWRpYXRlLmFkZElu
ZGV4KEVPcEluZGV4RGlyZWN0LCBiYXNlRXhwcmVzc2lvbiwgaW5kZXhFeHByZXNzaW9uLCBsb2Nh
dGlvbik7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaW5kZXhl
ZEV4cHJlc3Npb24gPSBpbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgYmFz
ZUV4cHJlc3Npb24sIGluZGV4RXhwcmVzc2lvbiwgbG9jYXRpb24pOworICAgIH0KKworICAgIGlm
IChpbmRleGVkRXhwcmVzc2lvbiA9PSAwKQorICAgIHsKKyAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOworICAgICAgICB1bmlvbkFycmF5LT5z
ZXRGQ29uc3QoMC4wZik7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gaW50ZXJtZWRpYXRl
LmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2
cUNvbnN0KSwgbG9jYXRpb24pOworICAgIH0KKyAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+
aXNBcnJheSgpKQorICAgIHsKKyAgICAgICAgY29uc3QgVFR5cGUgJmJhc2VUeXBlID0gYmFzZUV4
cHJlc3Npb24tPmdldFR5cGUoKTsKKyAgICAgICAgaWYgKGJhc2VUeXBlLmdldFN0cnVjdCgpKQor
ICAgICAgICB7CisgICAgICAgICAgICBUVHlwZSBjb3B5T2ZUeXBlKGJhc2VUeXBlLmdldFN0cnVj
dCgpKTsKKyAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKGNvcHlPZlR5cGUp
OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaW5kZXhl
ZEV4cHJlc3Npb24tPnNldFR5cGUoVFR5cGUoYmFzZUV4cHJlc3Npb24tPmdldEJhc2ljVHlwZSgp
LCBiYXNlRXhwcmVzc2lvbi0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgYmFzZUV4cHJl
c3Npb24tPmdldE5vbWluYWxTaXplKCksIGJhc2VFeHByZXNzaW9uLT5pc01hdHJpeCgpKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRRdWFs
aWZpZXIoKSA9PSBFdnFDb25zdCkKKyAgICAgICAgeworICAgICAgICAgICAgaW5kZXhlZEV4cHJl
c3Npb24tPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFDb25zdCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgZWxzZSBpZiAoYmFzZUV4cHJlc3Npb24tPmlzTWF0cml4KCkpCisgICAg
eworICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBl
KCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsK
KyAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNldFR5cGUoVFR5cGUoYmFzZUV4cHJlc3Npb24t
PmdldEJhc2ljVHlwZSgpLCBiYXNlRXhwcmVzc2lvbi0+Z2V0UHJlY2lzaW9uKCksIHF1YWxpZmll
ciwgYmFzZUV4cHJlc3Npb24tPmdldE5vbWluYWxTaXplKCkpKTsKKyAgICB9CisgICAgZWxzZSBp
ZiAoYmFzZUV4cHJlc3Npb24tPmlzVmVjdG9yKCkpCisgICAgeworICAgICAgICBUUXVhbGlmaWVy
IHF1YWxpZmllciA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0g
RXZxQ29uc3QgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKKyAgICAgICAgaW5kZXhlZEV4cHJl
c3Npb24tPnNldFR5cGUoVFR5cGUoYmFzZUV4cHJlc3Npb24tPmdldEJhc2ljVHlwZSgpLCBiYXNl
RXhwcmVzc2lvbi0+Z2V0UHJlY2lzaW9uKCksIHF1YWxpZmllcikpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShiYXNlRXhwcmVzc2lv
bi0+Z2V0VHlwZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gaW5kZXhlZEV4cHJlc3Npb247Cit9
CisKKy8vCiAvLyBQYXJzZSBhbiBhcnJheSBvZiBzdHJpbmdzIHVzaW5nIHl5cGFyc2UuCiAvLwog
Ly8gUmV0dXJucyAwIGZvciBzdWNjZXNzLgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEy
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KIC8vCkBAIC0zMywxMCArMzMsOCBAQCBzdHJ1Y3QgVFBhcnNlQ29udGV4dCB7CiAgICAgICAg
ICAgICBjb21waWxlT3B0aW9ucyhvcHRpb25zKSwKICAgICAgICAgICAgIHNvdXJjZVBhdGgoc291
cmNlUGF0aCksCiAgICAgICAgICAgICB0cmVlUm9vdCgwKSwKLSAgICAgICAgICAgIGxleEFmdGVy
VHlwZShmYWxzZSksCiAgICAgICAgICAgICBsb29wTmVzdGluZ0xldmVsKDApLAogICAgICAgICAg
ICAgc3RydWN0TmVzdGluZ0xldmVsKDApLAotICAgICAgICAgICAgaW5UeXBlUGFyZW4oZmFsc2Up
LAogICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uVHlwZShOVUxMKSwKICAgICAgICAgICAgIGZ1
bmN0aW9uUmV0dXJuc1ZhbHVlKGZhbHNlKSwKICAgICAgICAgICAgIGNoZWNrc1ByZWNpc2lvbkVy
cm9ycyhjaGVja3NQcmVjRXJyb3JzKSwKQEAgLTUxLDE2ICs0OSwxMyBAQCBzdHJ1Y3QgVFBhcnNl
Q29udGV4dCB7CiAgICAgaW50IGNvbXBpbGVPcHRpb25zOwogICAgIGNvbnN0IGNoYXIqIHNvdXJj
ZVBhdGg7ICAgICAgLy8gUGF0aCBvZiBzb3VyY2UgZmlsZSBvciBOVUxMLgogICAgIFRJbnRlcm1O
b2RlKiB0cmVlUm9vdDsgICAgICAgLy8gcm9vdCBvZiBwYXJzZSB0cmVlIGJlaW5nIGNyZWF0ZWQK
LSAgICBib29sIGxleEFmdGVyVHlwZTsgICAgICAgICAgIC8vIHRydWUgaWYgd2UndmUgcmVjb2du
aXplZCBhIHR5cGUsIHNvIGNhbiBvbmx5IGJlIGxvb2tpbmcgZm9yIGFuIGlkZW50aWZpZXIKICAg
ICBpbnQgbG9vcE5lc3RpbmdMZXZlbDsgICAgICAgIC8vIDAgaWYgb3V0c2lkZSBhbGwgbG9vcHMK
ICAgICBpbnQgc3RydWN0TmVzdGluZ0xldmVsOyAgICAgIC8vIGluY3JlbWVudGVkIHdoaWxlIHBh
cnNpbmcgYSBzdHJ1Y3QgZGVjbGFyYXRpb24KLSAgICBib29sIGluVHlwZVBhcmVuOyAgICAgICAg
ICAgIC8vIHRydWUgaWYgaW4gcGFyZW50aGVzZXMsIGxvb2tpbmcgb25seSBmb3IgYW4gaWRlbnRp
ZmllcgogICAgIGNvbnN0IFRUeXBlKiBjdXJyZW50RnVuY3Rpb25UeXBlOyAgLy8gdGhlIHJldHVy
biB0eXBlIG9mIHRoZSBmdW5jdGlvbiB0aGF0J3MgY3VycmVudGx5IGJlaW5nIHBhcnNlZAogICAg
IGJvb2wgZnVuY3Rpb25SZXR1cm5zVmFsdWU7ICAgLy8gdHJ1ZSBpZiBhIG5vbi12b2lkIGZ1bmN0
aW9uIGhhcyBhIHJldHVybgogICAgIGJvb2wgY2hlY2tzUHJlY2lzaW9uRXJyb3JzOyAgLy8gdHJ1
ZSBpZiBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZCB3aGVuIGEgdmFyaWFibGUgaXMgZGVjbGFy
ZWQgd2l0aG91dCBwcmVjaXNpb24sIGV4cGxpY2l0IG9yIGltcGxpY2l0LgogICAgIGJvb2wgZnJh
Z21lbnRQcmVjaXNpb25IaWdoOyAgLy8gdHJ1ZSBpZiBoaWdocCBwcmVjaXNpb24gaXMgc3VwcG9y
dGVkIGluIHRoZSBmcmFnbWVudCBsYW5ndWFnZS4KICAgICBUU3RyaW5nIEhhc2hFcnJNc2c7Ci0g
ICAgYm9vbCBBZnRlckVPRjsKICAgICBURGlhZ25vc3RpY3MgZGlhZ25vc3RpY3M7CiAgICAgVERp
cmVjdGl2ZUhhbmRsZXIgZGlyZWN0aXZlSGFuZGxlcjsKICAgICBwcDo6UHJlcHJvY2Vzc29yIHBy
ZXByb2Nlc3NvcjsKQEAgLTY4LDcxICs2Myw2OSBAQCBzdHJ1Y3QgVFBhcnNlQ29udGV4dCB7CiAK
ICAgICBpbnQgbnVtRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gZGlhZ25vc3RpY3MubnVtRXJyb3Jz
KCk7IH0KICAgICBUSW5mb1NpbmsmIGluZm9TaW5rKCkgeyByZXR1cm4gZGlhZ25vc3RpY3MuaW5m
b1NpbmsoKTsgfQotICAgIHZvaWQgZXJyb3IoVFNvdXJjZUxvYyBsb2MsIGNvbnN0IGNoYXIgKnJl
YXNvbiwgY29uc3QgY2hhciogdG9rZW4sCisgICAgdm9pZCBlcnJvcihjb25zdCBUU291cmNlTG9j
JiBsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCiAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBleHRyYUluZm89IiIpOwotICAgIHZvaWQgd2FybmluZyhUU291cmNl
TG9jIGxvYywgY29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKKyAgICB2b2lk
IHdhcm5pbmcoY29uc3QgVFNvdXJjZUxvYyYgbG9jLCBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0
IGNoYXIqIHRva2VuLAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRyYUluZm89IiIp
OwogICAgIHZvaWQgdHJhY2UoY29uc3QgY2hhciogc3RyKTsKICAgICB2b2lkIHJlY292ZXIoKTsK
IAotICAgIGJvb2wgcGFyc2VWZWN0b3JGaWVsZHMoY29uc3QgVFN0cmluZyYsIGludCB2ZWNTaXpl
LCBUVmVjdG9yRmllbGRzJiwgaW50IGxpbmUpOwotICAgIGJvb2wgcGFyc2VNYXRyaXhGaWVsZHMo
Y29uc3QgVFN0cmluZyYsIGludCBtYXRTaXplLCBUTWF0cml4RmllbGRzJiwgaW50IGxpbmUpOwor
ICAgIGJvb2wgcGFyc2VWZWN0b3JGaWVsZHMoY29uc3QgVFN0cmluZyYsIGludCB2ZWNTaXplLCBU
VmVjdG9yRmllbGRzJiwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSk7CisgICAgYm9vbCBwYXJzZU1h
dHJpeEZpZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IG1hdFNpemUsIFRNYXRyaXhGaWVsZHMmLCBj
b25zdCBUU291cmNlTG9jJiBsaW5lKTsKIAotICAgIGJvb2wgcmVzZXJ2ZWRFcnJvckNoZWNrKGlu
dCBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsKLSAgICB2b2lkIGFzc2lnbkVycm9y
KGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsK
LSAgICB2b2lkIHVuYXJ5T3BFcnJvcihpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcg
b3BlcmFuZCk7Ci0gICAgdm9pZCBiaW5hcnlPcEVycm9yKGludCBsaW5lLCBjb25zdCBjaGFyKiBv
cCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKLSAgICBib29sIHByZWNpc2lvbkVycm9y
Q2hlY2soaW50IGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5cGUpOwot
ICAgIGJvb2wgbFZhbHVlRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRl
cm1UeXBlZCopOworICAgIGJvb2wgcmVzZXJ2ZWRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpOworICAgIHZvaWQgYXNzaWduRXJyb3Io
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0
cmluZyByaWdodCk7CisgICAgdm9pZCB1bmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgb3BlcmFuZCk7CisgICAgdm9pZCBiaW5hcnlPcEVy
cm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQs
IFRTdHJpbmcgcmlnaHQpOworICAgIGJvb2wgcHJlY2lzaW9uRXJyb3JDaGVjayhjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBUUHJlY2lzaW9uIHByZWNpc2lvbiwgVEJhc2ljVHlwZSB0eXBlKTsKKyAg
ICBib29sIGxWYWx1ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hh
ciogb3AsIFRJbnRlcm1UeXBlZCopOwogICAgIGJvb2wgY29uc3RFcnJvckNoZWNrKFRJbnRlcm1U
eXBlZCogbm9kZSk7CiAgICAgYm9vbCBpbnRlZ2VyRXJyb3JDaGVjayhUSW50ZXJtVHlwZWQqIG5v
ZGUsIGNvbnN0IGNoYXIqIHRva2VuKTsKLSAgICBib29sIGdsb2JhbEVycm9yQ2hlY2soaW50IGxp
bmUsIGJvb2wgZ2xvYmFsLCBjb25zdCBjaGFyKiB0b2tlbik7Ci0gICAgYm9vbCBjb25zdHJ1Y3Rv
ckVycm9yQ2hlY2soaW50IGxpbmUsIFRJbnRlcm1Ob2RlKiwgVEZ1bmN0aW9uJiwgVE9wZXJhdG9y
LCBUVHlwZSopOwotICAgIGJvb2wgYXJyYXlTaXplRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVy
bVR5cGVkKiBleHByLCBpbnQmIHNpemUpOwotICAgIGJvb2wgYXJyYXlRdWFsaWZpZXJFcnJvckNo
ZWNrKGludCBsaW5lLCBUUHVibGljVHlwZSB0eXBlKTsKLSAgICBib29sIGFycmF5VHlwZUVycm9y
Q2hlY2soaW50IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOwotICAgIGJvb2wgYXJyYXlFcnJvckNo
ZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSB0eXBlLCBUVmFy
aWFibGUqJiB2YXJpYWJsZSk7Ci0gICAgYm9vbCB2b2lkRXJyb3JDaGVjayhpbnQsIGNvbnN0IFRT
dHJpbmcmLCBjb25zdCBUUHVibGljVHlwZSYpOwotICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soaW50
LCBjb25zdCBUSW50ZXJtVHlwZWQqKTsKLSAgICBib29sIGJvb2xFcnJvckNoZWNrKGludCwgY29u
c3QgVFB1YmxpY1R5cGUmKTsKLSAgICBib29sIHNhbXBsZXJFcnJvckNoZWNrKGludCBsaW5lLCBj
b25zdCBUUHVibGljVHlwZSYgcFR5cGUsIGNvbnN0IGNoYXIqIHJlYXNvbik7Ci0gICAgYm9vbCBz
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5
cGUpOwotICAgIGJvb2wgcGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soaW50IGxpbmUsIFRRdWFs
aWZpZXIgcXVhbGlmaWVyLCBjb25zdCBUVHlwZSYgdHlwZSk7Ci0gICAgYm9vbCBub25Jbml0Q29u
c3RFcnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYg
dHlwZSwgYm9vbCBhcnJheSk7Ci0gICAgYm9vbCBub25Jbml0RXJyb3JDaGVjayhpbnQgbGluZSwg
VFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlh
YmxlKTsKLSAgICBib29sIHBhcmFtRXJyb3JDaGVjayhpbnQgbGluZSwgVFF1YWxpZmllciBxdWFs
aWZpZXIsIFRRdWFsaWZpZXIgcGFyYW1RdWFsaWZpZXIsIFRUeXBlKiB0eXBlKTsKLSAgICBib29s
IGV4dGVuc2lvbkVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmKTsKKyAgICBib29s
IGdsb2JhbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgYm9vbCBnbG9iYWwsIGNv
bnN0IGNoYXIqIHRva2VuKTsKKyAgICBib29sIGNvbnN0cnVjdG9yRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSosIFRGdW5jdGlvbiYsIFRPcGVyYXRvciwgVFR5
cGUqKTsKKyAgICBib29sIGFycmF5U2l6ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgVEludGVybVR5cGVkKiBleHByLCBpbnQmIHNpemUpOworICAgIGJvb2wgYXJyYXlRdWFsaWZp
ZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOwor
ICAgIGJvb2wgYXJyYXlUeXBlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHVi
bGljVHlwZSB0eXBlKTsKKyAgICBib29sIGFycmF5RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSB0eXBlLCBUVmFyaWFibGUq
JiB2YXJpYWJsZSk7CisgICAgYm9vbCB2b2lkRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiwg
Y29uc3QgVFN0cmluZyYsIGNvbnN0IFRQdWJsaWNUeXBlJik7CisgICAgYm9vbCBib29sRXJyb3JD
aGVjayhjb25zdCBUU291cmNlTG9jJiwgY29uc3QgVEludGVybVR5cGVkKik7CisgICAgYm9vbCBi
b29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiwgY29uc3QgVFB1YmxpY1R5cGUmKTsKKyAg
ICBib29sIHNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQ
dWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciogcmVhc29uKTsKKyAgICBib29sIHN0cnVjdFF1
YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5
cGUmIHBUeXBlKTsKKyAgICBib29sIHBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBjb25zdCBUVHlwZSYgdHlwZSk7
CisgICAgYm9vbCBub25Jbml0Q29uc3RFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUs
IFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KTsKKyAg
ICBib29sIG5vbkluaXRFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcm
IGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSk7Cisg
ICAgYm9vbCBwYXJhbUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmll
ciBxdWFsaWZpZXIsIFRRdWFsaWZpZXIgcGFyYW1RdWFsaWZpZXIsIFRUeXBlKiB0eXBlKTsKKyAg
ICBib29sIGV4dGVuc2lvbkVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3Qg
VFN0cmluZyYpOwogCisgICAgY29uc3QgVFByYWdtYSYgcHJhZ21hKCkgY29uc3QgeyByZXR1cm4g
ZGlyZWN0aXZlSGFuZGxlci5wcmFnbWEoKTsgfQogICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlv
ciYgZXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLmV4
dGVuc2lvbkJlaGF2aW9yKCk7IH0KICAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IGNo
YXIqIGV4dGVuc2lvbik7Ci0gICAgdm9pZCBoYW5kbGVFeHRlbnNpb25EaXJlY3RpdmUoaW50IGxp
bmUsIGNvbnN0IGNoYXIqIGV4dE5hbWUsIGNvbnN0IGNoYXIqIGJlaGF2aW9yKTsKLQotICAgIGNv
bnN0IFRQcmFnbWEmIHByYWdtYSgpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGl2ZUhhbmRsZXIucHJh
Z21hKCk7IH0KLSAgICB2b2lkIGhhbmRsZVByYWdtYURpcmVjdGl2ZShpbnQgbGluZSwgY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUpOworICAgIGJvb2wgaXNFeHRlbnNpb25FbmFi
bGVkKGNvbnN0IGNoYXIqIGV4dGVuc2lvbikgY29uc3Q7CiAKICAgICBib29sIGNvbnRhaW5zU2Ft
cGxlcihUVHlwZSYgdHlwZSk7CiAgICAgYm9vbCBhcmVBbGxDaGlsZENvbnN0KFRJbnRlcm1BZ2dy
ZWdhdGUqIGFnZ3JOb2RlKTsKLSAgICBjb25zdCBURnVuY3Rpb24qIGZpbmRGdW5jdGlvbihpbnQg
bGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBib29sICpidWlsdEluID0gMCk7Ci0gICAgYm9vbCBl
eGVjdXRlSW5pdGlhbGl6ZXIoVFNvdXJjZUxvYyBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBU
UHVibGljVHlwZSYgcFR5cGUsCisgICAgY29uc3QgVEZ1bmN0aW9uKiBmaW5kRnVuY3Rpb24oY29u
c3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBib29sICpidWlsdEluID0g
MCk7CisgICAgYm9vbCBleGVjdXRlSW5pdGlhbGl6ZXIoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
VFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHBUeXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5pdGlhbGl6ZXIsIFRJbnRlcm1Ob2RlKiYgaW50
ZXJtTm9kZSwgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDApOwotICAgIGJvb2wgYXJyYXlTZXRNYXhT
aXplKFRJbnRlcm1TeW1ib2wqLCBUVHlwZSosIGludCwgYm9vbCwgVFNvdXJjZUxvYyk7CiAKLSAg
ICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0cnVjdG9yKFRJbnRlcm1Ob2RlKiwgY29uc3QgVFR5cGUq
LCBUT3BlcmF0b3IsIFRGdW5jdGlvbiosIFRTb3VyY2VMb2MpOworICAgIFRJbnRlcm1UeXBlZCog
YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUqLCBjb25zdCBUVHlwZSosIFRPcGVyYXRvciwgVEZ1
bmN0aW9uKiwgY29uc3QgVFNvdXJjZUxvYyYpOwogICAgIFRJbnRlcm1UeXBlZCogZm9sZENvbnN0
Q29uc3RydWN0b3IoVEludGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUsIGNvbnN0IFRUeXBlJiB0eXBl
KTsKLSAgICBUSW50ZXJtVHlwZWQqIGNvbnN0cnVjdFN0cnVjdChUSW50ZXJtTm9kZSosIFRUeXBl
KiwgaW50LCBUU291cmNlTG9jLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVybVR5cGVkKiBjb25z
dHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBUSW50ZXJtTm9kZSosIFRTb3Vy
Y2VMb2MsIGJvb2wgc3Vic2V0KTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0VmVjdG9yTm9k
ZShUVmVjdG9yRmllbGRzJiwgVEludGVybVR5cGVkKiwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVy
bVR5cGVkKiBhZGRDb25zdE1hdHJpeE5vZGUoaW50ICwgVEludGVybVR5cGVkKiwgVFNvdXJjZUxv
Yyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdEFycmF5Tm9kZShpbnQgaW5kZXgsIFRJbnRl
cm1UeXBlZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENv
bnN0U3RydWN0KFRTdHJpbmcmICwgVEludGVybVR5cGVkKiwgVFNvdXJjZUxvYyk7CisgICAgVElu
dGVybVR5cGVkKiBjb25zdHJ1Y3RTdHJ1Y3QoVEludGVybU5vZGUqLCBUVHlwZSosIGludCwgY29u
c3QgVFNvdXJjZUxvYyYsIGJvb2wgc3Vic2V0KTsKKyAgICBUSW50ZXJtVHlwZWQqIGNvbnN0cnVj
dEJ1aWx0SW4oY29uc3QgVFR5cGUqLCBUT3BlcmF0b3IsIFRJbnRlcm1Ob2RlKiwgY29uc3QgVFNv
dXJjZUxvYyYsIGJvb2wgc3Vic2V0KTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0VmVjdG9y
Tm9kZShUVmVjdG9yRmllbGRzJiwgVEludGVybVR5cGVkKiwgY29uc3QgVFNvdXJjZUxvYyYpOwor
ICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhOb2RlKGludCAsIFRJbnRlcm1UeXBlZCos
IGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0QXJyYXlOb2Rl
KGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKTsK
KyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0U3RydWN0KFRTdHJpbmcmICwgVEludGVybVR5cGVk
KiwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkSW5kZXhFeHByZXNz
aW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24sIGNvbnN0IFRTb3VyY2VMb2MmIGxvY2F0
aW9uLCBUSW50ZXJtVHlwZWQgKmluZGV4RXhwcmVzc2lvbik7CiAKICAgICAvLyBQZXJmb3JtcyBh
biBlcnJvciBjaGVjayBmb3IgZW1iZWRkZWQgc3RydWN0IGRlY2xhcmF0aW9ucy4KICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgYW4gZXJyb3Igd2FzIHJhaXNlZCBkdWUgdG8gdGhlIGRlY2xhcmF0aW9u
IG9mCiAgICAgLy8gdGhpcyBzdHJ1Y3QuCi0gICAgYm9vbCBlbnRlclN0cnVjdERlY2xhcmF0aW9u
KFRTb3VyY2VMb2MgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcik7CisgICAgYm9vbCBl
bnRlclN0cnVjdERlY2xhcmF0aW9uKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJp
bmcmIGlkZW50aWZpZXIpOwogICAgIHZvaWQgZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CiAKLSAg
ICBib29sIHN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKFRTb3VyY2VMb2MgbGluZSwgY29uc3QgVFR5
cGUmIGZpZWxkVHlwZSk7CisgICAgYm9vbCBzdHJ1Y3ROZXN0aW5nRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBjb25zdCBURmllbGQmIGZpZWxkKTsKIH07CiAKIGludCBQYVBhcnNl
U3RyaW5ncyhzaXplX3QgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBp
bnQgbGVuZ3RoW10sCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
UG9vbEFsbG9jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvUG9vbEFsbG9jLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyOCwyNCArMjI4LDI3IEBAIHZvaWQgVFBvb2xBbGxvY2F0b3I6OnBvcEFsbCgpCiAKIHZvaWQq
IFRQb29sQWxsb2NhdG9yOjphbGxvY2F0ZShzaXplX3QgbnVtQnl0ZXMpCiB7CisgICAgLy8KKyAg
ICAvLyBKdXN0IGtlZXAgc29tZSBpbnRlcmVzdGluZyBzdGF0aXN0aWNzLgorICAgIC8vCisgICAg
KytudW1DYWxsczsKKyAgICB0b3RhbEJ5dGVzICs9IG51bUJ5dGVzOworCiAgICAgLy8gSWYgd2Ug
YXJlIHVzaW5nIGd1YXJkIGJsb2NrcywgYWxsIGFsbG9jYXRpb25zIGFyZSBicmFja2V0ZWQgYnkK
ICAgICAvLyB0aGVtOiBbZ3VhcmRibG9ja11bYWxsb2NhdGlvbl1bZ3VhcmRibG9ja10uICBudW1C
eXRlcyBpcyBob3cKICAgICAvLyBtdWNoIG1lbW9yeSB0aGUgY2FsbGVyIGFza2VkIGZvci4gIGFs
bG9jYXRpb25TaXplIGlzIHRoZSB0b3RhbAogICAgIC8vIHNpemUgaW5jbHVkaW5nIGd1YXJkIGJs
b2Nrcy4gIEluIHJlbGVhc2UgYnVpbGQsCiAgICAgLy8gZ3VhcmRCbG9ja1NpemU9MCBhbmQgdGhp
cyBhbGwgZ2V0cyBvcHRpbWl6ZWQgYXdheS4KICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBU
QWxsb2NhdGlvbjo6YWxsb2NhdGlvblNpemUobnVtQnl0ZXMpOwotICAgIAotICAgIC8vCi0gICAg
Ly8gSnVzdCBrZWVwIHNvbWUgaW50ZXJlc3Rpbmcgc3RhdGlzdGljcy4KLSAgICAvLwotICAgICsr
bnVtQ2FsbHM7Ci0gICAgdG90YWxCeXRlcyArPSBudW1CeXRlczsKKyAgICAvLyBEZXRlY3QgaW50
ZWdlciBvdmVyZmxvdy4KKyAgICBpZiAoYWxsb2NhdGlvblNpemUgPCBudW1CeXRlcykKKyAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICAvLwogICAgIC8vIERvIHRoZSBhbGxvY2F0aW9uLCBtb3N0IGxp
a2VseSBjYXNlIGZpcnN0LCBmb3IgZWZmaWNpZW5jeS4KICAgICAvLyBUaGlzIHN0ZXAgY291bGQg
YmUgbW92ZWQgdG8gYmUgaW5saW5lIHNvbWV0aW1lLgogICAgIC8vCi0gICAgaWYgKGN1cnJlbnRQ
YWdlT2Zmc2V0ICsgYWxsb2NhdGlvblNpemUgPD0gcGFnZVNpemUpIHsKKyAgICBpZiAoYWxsb2Nh
dGlvblNpemUgPD0gcGFnZVNpemUgLSBjdXJyZW50UGFnZU9mZnNldCkgewogICAgICAgICAvLwog
ICAgICAgICAvLyBTYWZlIHRvIGFsbG9jYXRlIGZyb20gY3VycmVudFBhZ2VPZmZzZXQuCiAgICAg
ICAgIC8vCkBAIC0yNTYsMTIgKzI1OSwxNiBAQCB2b2lkKiBUUG9vbEFsbG9jYXRvcjo6YWxsb2Nh
dGUoc2l6ZV90IG51CiAgICAgICAgIHJldHVybiBpbml0aWFsaXplQWxsb2NhdGlvbihpblVzZUxp
c3QsIG1lbW9yeSwgbnVtQnl0ZXMpOwogICAgIH0KIAotICAgIGlmIChhbGxvY2F0aW9uU2l6ZSAr
IGhlYWRlclNraXAgPiBwYWdlU2l6ZSkgeworICAgIGlmIChhbGxvY2F0aW9uU2l6ZSA+IHBhZ2VT
aXplIC0gaGVhZGVyU2tpcCkgewogICAgICAgICAvLwogICAgICAgICAvLyBEbyBhIG11bHRpLXBh
Z2UgYWxsb2NhdGlvbi4gIERvbid0IG1peCB0aGVzZSB3aXRoIHRoZSBvdGhlcnMuCiAgICAgICAg
IC8vIFRoZSBPUyBpcyBlZmZpY2llbnQgYW5kIGFsbG9jYXRpbmcgYW5kIGZyZWUtaW5nIG11bHRp
cGxlIHBhZ2VzLgogICAgICAgICAvLwogICAgICAgICBzaXplX3QgbnVtQnl0ZXNUb0FsbG9jID0g
YWxsb2NhdGlvblNpemUgKyBoZWFkZXJTa2lwOworICAgICAgICAvLyBEZXRlY3QgaW50ZWdlciBv
dmVyZmxvdy4KKyAgICAgICAgaWYgKG51bUJ5dGVzVG9BbGxvYyA8IGFsbG9jYXRpb25TaXplKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisKICAgICAgICAgdEhlYWRlciogbWVtb3J5ID0gcmVpbnRl
cnByZXRfY2FzdDx0SGVhZGVyKj4oOjpuZXcgY2hhcltudW1CeXRlc1RvQWxsb2NdKTsKICAgICAg
ICAgaWYgKG1lbW9yeSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hIYW5kbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hIYW5kbGUuaAkocmV2aXNpb24g
MTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoSGFuZGxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIGNsYXNzIExvbmdOYW1lTWFwOwog
Y2xhc3MgVENvbXBpbGVyOwogY2xhc3MgVERlcGVuZGVuY3lHcmFwaDsKK2NsYXNzIFRyYW5zbGF0
b3JITFNMOwogCiAvLwogLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGlkZW50aWZ5IHNwZWNzIHRoYXQg
YXJlIGJhc2VkIG9uIHRoZSBXZWJHTCBzcGVjLApAQCAtNDIsNiArNDMsNyBAQCBwdWJsaWM6CiAg
ICAgVFNoSGFuZGxlQmFzZSgpOwogICAgIHZpcnR1YWwgflRTaEhhbmRsZUJhc2UoKTsKICAgICB2
aXJ0dWFsIFRDb21waWxlciogZ2V0QXNDb21waWxlcigpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0
dWFsIFRyYW5zbGF0b3JITFNMKiBnZXRBc1RyYW5zbGF0b3JITFNMKCkgeyByZXR1cm4gMDsgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgLy8gTWVtb3J5IGFsbG9jYXRvci4gQWxsb2NhdGVzIGFuZCB0cmFj
a3MgbWVtb3J5IHJlcXVpcmVkIGJ5IHRoZSBjb21waWxlci4KQEAgLTgxLDggKzgzLDggQEAgcHJv
dGVjdGVkOgogICAgIGJvb2wgSW5pdEJ1aWx0SW5TeW1ib2xUYWJsZShjb25zdCBTaEJ1aWx0SW5S
ZXNvdXJjZXMmIHJlc291cmNlcyk7CiAgICAgLy8gQ2xlYXJzIHRoZSByZXN1bHRzIGZyb20gdGhl
IHByZXZpb3VzIGNvbXBpbGF0aW9uLgogICAgIHZvaWQgY2xlYXJSZXN1bHRzKCk7Ci0gICAgLy8g
UmV0dXJuIHRydWUgaWYgZnVuY3Rpb24gcmVjdXJzaW9uIGlzIGRldGVjdGVkLgotICAgIGJvb2wg
ZGV0ZWN0UmVjdXJzaW9uKFRJbnRlcm1Ob2RlKiByb290KTsKKyAgICAvLyBSZXR1cm4gdHJ1ZSBp
ZiBmdW5jdGlvbiByZWN1cnNpb24gaXMgZGV0ZWN0ZWQgb3IgY2FsbCBkZXB0aCBleGNlZWRlZC4K
KyAgICBib29sIGRldGVjdENhbGxEZXB0aChUSW50ZXJtTm9kZSogcm9vdCwgVEluZm9TaW5rJiBp
bmZvU2luaywgYm9vbCBsaW1pdENhbGxTdGFja0RlcHRoKTsKICAgICAvLyBSZXdyaXRlcyBhIHNo
YWRlcidzIGludGVybWVkaWF0ZSB0cmVlIGFjY29yZGluZyB0byB0aGUgQ1NTIFNoYWRlcnMgc3Bl
Yy4KICAgICB2b2lkIHJld3JpdGVDU1NTaGFkZXIoVEludGVybU5vZGUqIHJvb3QpOwogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gc2hhZGVyIGRvZXMgbm90IGV4Y2VlZCB0aGUgbWlu
aW11bQpAQCAtMTA0LDggKzEwNiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoZSBzaGFkZXIgZG9lcyBub3QgdXNlIHNhbXBsZXIgZGVwZW5kZW50IHZhbHVlcyB0byBh
ZmZlY3QgY29udHJvbCAKICAgICAvLyBmbG93IG9yIGluIG9wZXJhdGlvbnMgd2hvc2UgdGltZSBj
YW4gZGVwZW5kIG9uIHRoZSBpbnB1dCB2YWx1ZXMuCiAgICAgYm9vbCBlbmZvcmNlRnJhZ21lbnRT
aGFkZXJUaW1pbmdSZXN0cmljdGlvbnMoY29uc3QgVERlcGVuZGVuY3lHcmFwaCYgZ3JhcGgpOwor
ICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBtYXhpbXVtIGV4cHJlc3Npb24gY29tcGxleGl0eSBi
ZWxvdyB0aGUgbGltaXQuCisgICAgYm9vbCBsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5KFRJbnRl
cm1Ob2RlKiByb290KTsKICAgICAvLyBHZXQgYnVpbHQtaW4gZXh0ZW5zaW9ucyB3aXRoIGRlZmF1
bHQgYmVoYXZpb3IuCiAgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBnZXRFeHRlbnNpb25C
ZWhhdmlvcigpIGNvbnN0OworICAgIC8vIEdldCB0aGUgcmVzb3VyY2VzIHNldCBieSBJbml0QnVp
bHRJblN5bWJvbFRhYmxlCisgICAgY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiBnZXRSZXNvdXJj
ZXMoKSBjb25zdDsKIAogICAgIGNvbnN0IEFycmF5Qm91bmRzQ2xhbXBlciYgZ2V0QXJyYXlCb3Vu
ZHNDbGFtcGVyKCkgY29uc3Q7CiAgICAgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBnZXRB
cnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSgpIGNvbnN0OwpAQCAtMTE2LDYgKzEyMiwxMCBAQCBw
cml2YXRlOgogICAgIFNoU2hhZGVyU3BlYyBzaGFkZXJTcGVjOwogCiAgICAgaW50IG1heFVuaWZv
cm1WZWN0b3JzOworICAgIGludCBtYXhFeHByZXNzaW9uQ29tcGxleGl0eTsKKyAgICBpbnQgbWF4
Q2FsbFN0YWNrRGVwdGg7CisKKyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgY29tcGlsZVJlc291cmNl
czsKIAogICAgIC8vIEJ1aWx0LWluIHN5bWJvbCB0YWJsZSBmb3IgdGhlIGdpdmVuIGxhbmd1YWdl
LCBzcGVjLCBhbmQgcmVzb3VyY2VzLgogICAgIC8vIEl0IGlzIHByZXNlcnZlZCBmcm9tIGNvbXBp
bGUtdG8tY29tcGlsZS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9TaGFkZXJMYW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChj
KSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpA
QCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgImNvbXBpbGVyL0luaXRpYWxpemVEbGwuaCIKICNp
bmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvbGVuZ3RoX2xpbWl0cy5oIgogI2luY2x1ZGUg
ImNvbXBpbGVyL1NoSGFuZGxlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvVHJhbnNsYXRvckhMU0wu
aCIKIAogLy8KIC8vIFRoaXMgaXMgdGhlIHBsYXRmb3JtIGluZGVwZW5kZW50IGludGVyZmFjZSBi
ZXR3ZWVuIGFuIE9HTCBkcml2ZXIKQEAgLTEyNiw2ICsxMjcsNyBAQCB2b2lkIFNoSW5pdEJ1aWx0
SW5SZXNvdXJjZXMoU2hCdWlsdEluUmVzCiAgICAgcmVzb3VyY2VzLT5PRVNfRUdMX2ltYWdlX2V4
dGVybmFsID0gMDsKICAgICByZXNvdXJjZXMtPkFSQl90ZXh0dXJlX3JlY3RhbmdsZSA9IDA7CiAg
ICAgcmVzb3VyY2VzLT5FWFRfZHJhd19idWZmZXJzID0gMDsKKyAgICByZXNvdXJjZXMtPkVYVF9m
cmFnX2RlcHRoID0gMDsKIAogICAgIC8vIERpc2FibGUgaGlnaHAgcHJlY2lzaW9uIGluIGZyYWdt
ZW50IHNoYWRlciBieSBkZWZhdWx0LgogICAgIHJlc291cmNlcy0+RnJhZ21lbnRQcmVjaXNpb25I
aWdoID0gMDsKQEAgLTM1MSwzICszNTMsMjEgQEAgdm9pZCBTaEdldE5hbWVIYXNoaW5nRW50cnko
Y29uc3QgU2hIYW5kbAogICAgIC8vIFRvIGJlIG9uIHRoZSBzYWZlIHNpZGUgaW4gY2FzZSB0aGUg
c291cmNlIGlzIGxvbmdlciB0aGFuIGV4cGVjdGVkLgogICAgIGhhc2hlZE5hbWVbbGVuIC0gMV0g
PSAnXDAnOwogfQorCit2b2lkIFNoR2V0SW5mb1BvaW50ZXIoY29uc3QgU2hIYW5kbGUgaGFuZGxl
LCBTaFNoYWRlckluZm8gcG5hbWUsIHZvaWQqKiBwYXJhbXMpCit7CisgICAgaWYgKCFoYW5kbGUg
fHwgIXBhcmFtcykKKyAgICAgICAgcmV0dXJuOworCisgICAgVFNoSGFuZGxlQmFzZSogYmFzZSA9
IHN0YXRpY19jYXN0PFRTaEhhbmRsZUJhc2UqPihoYW5kbGUpOworICAgIFRyYW5zbGF0b3JITFNM
KiB0cmFuc2xhdG9yID0gYmFzZS0+Z2V0QXNUcmFuc2xhdG9ySExTTCgpOworICAgIGlmICghdHJh
bnNsYXRvcikgcmV0dXJuOworCisgICAgc3dpdGNoKHBuYW1lKQorICAgIHsKKyAgICBjYXNlIFNI
X0FDVElWRV9VTklGT1JNU19BUlJBWToKKyAgICAgICAgKnBhcmFtcyA9ICh2b2lkKikmdHJhbnNs
YXRvci0+Z2V0VW5pZm9ybXMoKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDogVU5SRUFD
SEFCTEUoKTsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvU3ltYm9sVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3LDQ4ICsxNywzNCBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNs
dWRlIDxhbGdvcml0aG0+Ci0KLSNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1
ZGUgPGNsaW1pdHM+CiAKIFRUeXBlOjpUVHlwZShjb25zdCBUUHVibGljVHlwZSAmcCkgOgotICAg
ICAgICAgICAgdHlwZShwLnR5cGUpLCBwcmVjaXNpb24ocC5wcmVjaXNpb24pLCBxdWFsaWZpZXIo
cC5xdWFsaWZpZXIpLCBzaXplKHAuc2l6ZSksIG1hdHJpeChwLm1hdHJpeCksIGFycmF5KHAuYXJy
YXkpLCBhcnJheVNpemUocC5hcnJheVNpemUpLAotICAgICAgICAgICAgbWF4QXJyYXlTaXplKDAp
LCBhcnJheUluZm9ybWF0aW9uVHlwZSgwKSwgc3RydWN0dXJlKDApLCBzdHJ1Y3R1cmVTaXplKDAp
LCBkZWVwZXN0U3RydWN0TmVzdGluZygwKSwgZmllbGROYW1lKDApLCBtYW5nbGVkKDApLCB0eXBl
TmFtZSgwKQorICAgICAgICAgICAgdHlwZShwLnR5cGUpLCBwcmVjaXNpb24ocC5wcmVjaXNpb24p
LCBxdWFsaWZpZXIocC5xdWFsaWZpZXIpLCBzaXplKHAuc2l6ZSksIG1hdHJpeChwLm1hdHJpeCks
IGFycmF5KHAuYXJyYXkpLCBhcnJheVNpemUocC5hcnJheVNpemUpLCBzdHJ1Y3R1cmUoMCkKIHsK
LSAgICBpZiAocC51c2VyRGVmKSB7CisgICAgaWYgKHAudXNlckRlZikKICAgICAgICAgc3RydWN0
dXJlID0gcC51c2VyRGVmLT5nZXRTdHJ1Y3QoKTsKLSAgICAgICAgdHlwZU5hbWUgPSBOZXdQb29s
VFN0cmluZyhwLnVzZXJEZWYtPmdldFR5cGVOYW1lKCkuY19zdHIoKSk7Ci0gICAgICAgIGNvbXB1
dGVEZWVwZXN0U3RydWN0TmVzdGluZygpOwotICAgIH0KIH0KIAogLy8KIC8vIFJlY3Vyc2l2ZWx5
IGdlbmVyYXRlIG1hbmdsZWQgbmFtZXMuCiAvLwotdm9pZCBUVHlwZTo6YnVpbGRNYW5nbGVkTmFt
ZShUU3RyaW5nJiBtYW5nbGVkTmFtZSkKK1RTdHJpbmcgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUo
KSBjb25zdAogeworICAgIFRTdHJpbmcgbWFuZ2xlZE5hbWU7CiAgICAgaWYgKGlzTWF0cml4KCkp
CiAgICAgICAgIG1hbmdsZWROYW1lICs9ICdtJzsKICAgICBlbHNlIGlmIChpc1ZlY3RvcigpKQog
ICAgICAgICBtYW5nbGVkTmFtZSArPSAndic7CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBj
YXNlIEVidEZsb2F0OiAgICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ2YnOyAgICAgIGJyZWFr
OwotICAgIGNhc2UgRWJ0SW50OiAgICAgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAnaSc7ICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRCb29sOiAgICAgICAgICAgICAgIG1hbmdsZWROYW1lICs9
ICdiJzsgICAgICBicmVhazsKLSAgICBjYXNlIEVidFNhbXBsZXIyRDogICAgICAgICAgbWFuZ2xl
ZE5hbWUgKz0gInMyIjsgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6ICAgICAg
ICBtYW5nbGVkTmFtZSArPSAic0MiOyAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRTdHJ1Y3Q6Ci0g
ICAgICAgIG1hbmdsZWROYW1lICs9ICJzdHJ1Y3QtIjsKLSAgICAgICAgaWYgKHR5cGVOYW1lKQot
ICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gKnR5cGVOYW1lOwotICAgICAgICB7Ly8gc3VwcG9y
dCBNU1ZDKys2LjAKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3Ry
dWN0dXJlLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICct
JzsKLSAgICAgICAgICAgICAgICAoKnN0cnVjdHVyZSlbaV0udHlwZS0+YnVpbGRNYW5nbGVkTmFt
ZShtYW5nbGVkTmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICBkZWZhdWx0Ogot
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEVidEZsb2F0OiAgICAgICBtYW5nbGVkTmFtZSArPSAn
Zic7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRJbnQ6ICAgICAgICAgbWFuZ2xlZE5hbWUgKz0g
J2knOyAgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0Qm9vbDogICAgICAgIG1hbmdsZWROYW1lICs9
ICdiJzsgICAgICBicmVhazsKKyAgICBjYXNlIEVidFNhbXBsZXIyRDogICBtYW5nbGVkTmFtZSAr
PSAiczIiOyAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZTogbWFuZ2xlZE5hbWUg
Kz0gInNDIjsgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0U3RydWN0OiAgICAgIG1hbmdsZWROYW1l
ICs9IHN0cnVjdHVyZS0+bWFuZ2xlZE5hbWUoKTsgYnJlYWs7CisgICAgZGVmYXVsdDogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgbWFuZ2xlZE5hbWUgKz0gc3RhdGljX2Nhc3Q8Y2hh
cj4oJzAnICsgZ2V0Tm9taW5hbFNpemUoKSk7CkBAIC02OSw1MyArNTUsNzIgQEAgdm9pZCBUVHlw
ZTo6YnVpbGRNYW5nbGVkTmFtZShUU3RyaW5nJiBtYQogICAgICAgICBtYW5nbGVkTmFtZSArPSBi
dWY7CiAgICAgICAgIG1hbmdsZWROYW1lICs9ICddJzsKICAgICB9CisgICAgcmV0dXJuIG1hbmds
ZWROYW1lOwogfQogCi1pbnQgVFR5cGU6OmdldFN0cnVjdFNpemUoKSBjb25zdAorc2l6ZV90IFRU
eXBlOjpnZXRPYmplY3RTaXplKCkgY29uc3QKIHsKLSAgICBpZiAoIWdldFN0cnVjdCgpKSB7Ci0g
ICAgICAgIGFzc2VydChmYWxzZSAmJiAiTm90IGEgc3RydWN0Iik7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KKyAgICBzaXplX3QgdG90YWxTaXplID0gMDsKIAotICAgIGlmIChzdHJ1Y3R1cmVT
aXplID09IDApCi0gICAgICAgIGZvciAoVFR5cGVMaXN0Ojpjb25zdF9pdGVyYXRvciB0bCA9IGdl
dFN0cnVjdCgpLT5iZWdpbigpOyB0bCAhPSBnZXRTdHJ1Y3QoKS0+ZW5kKCk7IHRsKyspCi0gICAg
ICAgICAgICBzdHJ1Y3R1cmVTaXplICs9ICgoKnRsKS50eXBlKS0+Z2V0T2JqZWN0U2l6ZSgpOwor
ICAgIGlmIChnZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCisgICAgICAgIHRvdGFsU2l6ZSA9
IHN0cnVjdHVyZS0+b2JqZWN0U2l6ZSgpOworICAgIGVsc2UgaWYgKG1hdHJpeCkKKyAgICAgICAg
dG90YWxTaXplID0gc2l6ZSAqIHNpemU7CisgICAgZWxzZQorICAgICAgICB0b3RhbFNpemUgPSBz
aXplOworCisgICAgaWYgKGlzQXJyYXkoKSkgeworICAgICAgICBzaXplX3QgYXJyYXlTaXplID0g
Z2V0QXJyYXlTaXplKCk7CisgICAgICAgIGlmIChhcnJheVNpemUgPiBJTlRfTUFYIC8gdG90YWxT
aXplKQorICAgICAgICAgICAgdG90YWxTaXplID0gSU5UX01BWDsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgdG90YWxTaXplICo9IGFycmF5U2l6ZTsKKyAgICB9CiAKLSAgICByZXR1cm4gc3Ry
dWN0dXJlU2l6ZTsKKyAgICByZXR1cm4gdG90YWxTaXplOwogfQogCi12b2lkIFRUeXBlOjpjb21w
dXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKQorYm9vbCBUU3RydWN0dXJlOjpjb250YWluc0FycmF5
cygpIGNvbnN0CiB7Ci0gICAgaWYgKCFnZXRTdHJ1Y3QoKSkgewotICAgICAgICByZXR1cm47Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsraSkgeworICAgICAg
ICBjb25zdCBUVHlwZSogZmllbGRUeXBlID0gKCptRmllbGRzKVtpXS0+dHlwZSgpOworICAgICAg
ICBpZiAoZmllbGRUeXBlLT5pc0FycmF5KCkgfHwgZmllbGRUeXBlLT5pc1N0cnVjdHVyZUNvbnRh
aW5pbmdBcnJheXMoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CiAKLSAgICBpbnQgbWF4TmVzdGluZyA9IDA7Ci0gICAgZm9yIChUVHlwZUxp
c3Q6OmNvbnN0X2l0ZXJhdG9yIHRsID0gZ2V0U3RydWN0KCktPmJlZ2luKCk7IHRsICE9IGdldFN0
cnVjdCgpLT5lbmQoKTsgKyt0bCkgewotICAgICAgICBtYXhOZXN0aW5nID0gc3RkOjptYXgobWF4
TmVzdGluZywgKCgqdGwpLnR5cGUpLT5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpKTsKK1RTdHJp
bmcgVFN0cnVjdHVyZTo6YnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0Cit7CisgICAgVFN0cmluZyBt
YW5nbGVkTmFtZSgic3RydWN0LSIpOworICAgIG1hbmdsZWROYW1lICs9ICptTmFtZTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1GaWVsZHMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIG1h
bmdsZWROYW1lICs9ICctJzsKKyAgICAgICAgbWFuZ2xlZE5hbWUgKz0gKCptRmllbGRzKVtpXS0+
dHlwZSgpLT5nZXRNYW5nbGVkTmFtZSgpOwogICAgIH0KLQotICAgIGRlZXBlc3RTdHJ1Y3ROZXN0
aW5nID0gMSArIG1heE5lc3Rpbmc7CisgICAgcmV0dXJuIG1hbmdsZWROYW1lOwogfQogCi1ib29s
IFRUeXBlOjppc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSBjb25zdAorc2l6ZV90IFRTdHJ1
Y3R1cmU6OmNhbGN1bGF0ZU9iamVjdFNpemUoKSBjb25zdAogewotICAgIGlmICghc3RydWN0dXJl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHNpemVfdCBzaXplID0gMDsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1GaWVsZHMtPnNpemUoKTsgKytpKSB7CisgICAgICAg
IHNpemVfdCBmaWVsZFNpemUgPSAoKm1GaWVsZHMpW2ldLT50eXBlKCktPmdldE9iamVjdFNpemUo
KTsKKyAgICAgICAgaWYgKGZpZWxkU2l6ZSA+IElOVF9NQVggLSBzaXplKQorICAgICAgICAgICAg
c2l6ZSA9IElOVF9NQVg7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNpemUgKz0gZmllbGRT
aXplOwogICAgIH0KKyAgICByZXR1cm4gc2l6ZTsKK30KIAotICAgIGZvciAoVFR5cGVMaXN0Ojpj
b25zdF9pdGVyYXRvciBtZW1iZXIgPSBzdHJ1Y3R1cmUtPmJlZ2luKCk7IG1lbWJlciAhPSBzdHJ1
Y3R1cmUtPmVuZCgpOyBtZW1iZXIrKykKLSAgICB7Ci0gICAgICAgIGlmIChtZW1iZXItPnR5cGUt
PmlzQXJyYXkoKSB8fAotICAgICAgICAgICAgbWVtYmVyLT50eXBlLT5pc1N0cnVjdHVyZUNvbnRh
aW5pbmdBcnJheXMoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KK2ludCBUU3RydWN0dXJlOjpjYWxjdWxhdGVEZWVwZXN0TmVzdGluZygpIGNvbnN0Cit7
CisgICAgaW50IG1heE5lc3RpbmcgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZp
ZWxkcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgbWF4TmVzdGluZyA9IHN0ZDo6bWF4KG1heE5l
c3RpbmcsICgqbUZpZWxkcylbaV0tPnR5cGUoKS0+Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSk7
CiAgICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAxICsgbWF4TmVzdGluZzsK
IH0KIAogLy8KQEAgLTE5Niw4NCArMjAxLDggQEAgdm9pZCBUU3ltYm9sVGFibGVMZXZlbDo6cmVs
YXRlVG9PcGVyYXRvcgogdm9pZCBUU3ltYm9sVGFibGVMZXZlbDo6cmVsYXRlVG9FeHRlbnNpb24o
Y29uc3QgY2hhciogbmFtZSwgY29uc3QgVFN0cmluZyYgZXh0KQogewogICAgIGZvciAodExldmVs
OjppdGVyYXRvciBpdCA9IGxldmVsLmJlZ2luKCk7IGl0ICE9IGxldmVsLmVuZCgpOyArK2l0KSB7
Ci0gICAgICAgIGlmIChpdC0+c2Vjb25kLT5pc0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgICAgIFRG
dW5jdGlvbiogZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24qPihpdC0+c2Vjb25kKTsK
LSAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0TmFtZSgpID09IG5hbWUpCi0gICAgICAgICAg
ICAgICAgZnVuY3Rpb24tPnJlbGF0ZVRvRXh0ZW5zaW9uKGV4dCk7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLVRTeW1ib2w6OlRTeW1ib2woY29uc3QgVFN5bWJvbCYgY29weU9mKQotewotICAgIG5h
bWUgPSBOZXdQb29sVFN0cmluZyhjb3B5T2YubmFtZS0+Y19zdHIoKSk7Ci0gICAgdW5pcXVlSWQg
PSBjb3B5T2YudW5pcXVlSWQ7Ci19Ci0KLVRWYXJpYWJsZTo6VFZhcmlhYmxlKGNvbnN0IFRWYXJp
YWJsZSYgY29weU9mLCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcikgOiBUU3ltYm9sKGNvcHlPZikK
LXsKLSAgICB0eXBlLmNvcHlUeXBlKGNvcHlPZi50eXBlLCByZW1hcHBlcik7Ci0gICAgdXNlclR5
cGUgPSBjb3B5T2YudXNlclR5cGU7Ci0gICAgLy8gZm9yIGJ1aWx0SW4gc3ltYm9sIHRhYmxlIGxl
dmVsLCB1bmlvbkFycmF5IGFuZCBhcnJheUluZm9ybWF0aW9uIHBvaW50ZXJzIHNob3VsZCBiZSBO
VUxMCi0gICAgYXNzZXJ0KGNvcHlPZi5hcnJheUluZm9ybWF0aW9uVHlwZSA9PSAwKTsKLSAgICBh
cnJheUluZm9ybWF0aW9uVHlwZSA9IDA7Ci0KLSAgICBpZiAoY29weU9mLnVuaW9uQXJyYXkpIHsK
LSAgICAgICAgYXNzZXJ0KCFjb3B5T2YudHlwZS5nZXRTdHJ1Y3QoKSk7Ci0gICAgICAgIGFzc2Vy
dChjb3B5T2YudHlwZS5nZXRPYmplY3RTaXplKCkgPT0gMSk7Ci0gICAgICAgIHVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgdW5pb25BcnJheVswXSA9IGNvcHlPZi51
bmlvbkFycmF5WzBdOwotICAgIH0gZWxzZQotICAgICAgICB1bmlvbkFycmF5ID0gMDsKLX0KLQot
VFZhcmlhYmxlKiBUVmFyaWFibGU6OmNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQotewot
ICAgIFRWYXJpYWJsZSAqdmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCp0aGlzLCByZW1hcHBlcik7
Ci0KLSAgICByZXR1cm4gdmFyaWFibGU7Ci19Ci0KLVRGdW5jdGlvbjo6VEZ1bmN0aW9uKGNvbnN0
IFRGdW5jdGlvbiYgY29weU9mLCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcikgOiBUU3ltYm9sKGNv
cHlPZikKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvcHlPZi5wYXJhbWV0
ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFRQYXJhbWV0ZXIgcGFyYW07Ci0gICAgICAgIHBh
cmFtZXRlcnMucHVzaF9iYWNrKHBhcmFtKTsKLSAgICAgICAgcGFyYW1ldGVycy5iYWNrKCkuY29w
eVBhcmFtKGNvcHlPZi5wYXJhbWV0ZXJzW2ldLCByZW1hcHBlcik7Ci0gICAgfQotCi0gICAgcmV0
dXJuVHlwZS5jb3B5VHlwZShjb3B5T2YucmV0dXJuVHlwZSwgcmVtYXBwZXIpOwotICAgIG1hbmds
ZWROYW1lID0gY29weU9mLm1hbmdsZWROYW1lOwotICAgIG9wID0gY29weU9mLm9wOwotICAgIGRl
ZmluZWQgPSBjb3B5T2YuZGVmaW5lZDsKLX0KLQotVEZ1bmN0aW9uKiBURnVuY3Rpb246OmNsb25l
KFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQotewotICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBu
ZXcgVEZ1bmN0aW9uKCp0aGlzLCByZW1hcHBlcik7Ci0KLSAgICByZXR1cm4gZnVuY3Rpb247Ci19
Ci0KLVRTeW1ib2xUYWJsZUxldmVsKiBUU3ltYm9sVGFibGVMZXZlbDo6Y2xvbmUoVFN0cnVjdHVy
ZU1hcCYgcmVtYXBwZXIpCi17Ci0gICAgVFN5bWJvbFRhYmxlTGV2ZWwgKnN5bVRhYmxlTGV2ZWwg
PSBuZXcgVFN5bWJvbFRhYmxlTGV2ZWwoKTsKLSAgICB0TGV2ZWw6Oml0ZXJhdG9yIGl0ZXI7Ci0g
ICAgZm9yIChpdGVyID0gbGV2ZWwuYmVnaW4oKTsgaXRlciAhPSBsZXZlbC5lbmQoKTsgKytpdGVy
KSB7Ci0gICAgICAgIHN5bVRhYmxlTGV2ZWwtPmluc2VydCgqaXRlci0+c2Vjb25kLT5jbG9uZShy
ZW1hcHBlcikpOwotICAgIH0KLQotICAgIHJldHVybiBzeW1UYWJsZUxldmVsOwotfQotCi12b2lk
IFRTeW1ib2xUYWJsZTo6Y29weVRhYmxlKGNvbnN0IFRTeW1ib2xUYWJsZSYgY29weU9mKQotewot
ICAgIFRTdHJ1Y3R1cmVNYXAgcmVtYXBwZXI7Ci0gICAgdW5pcXVlSWQgPSBjb3B5T2YudW5pcXVl
SWQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3B5T2YudGFibGUuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgdGFibGUucHVzaF9iYWNrKGNvcHlPZi50YWJsZVtpXS0+Y2xvbmUo
cmVtYXBwZXIpKTsKLSAgICB9Ci0gICAgZm9yKCB1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3B5
T2YucHJlY2lzaW9uU3RhY2suc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgcHJlY2lzaW9uU3RhY2su
cHVzaF9iYWNrKCBjb3B5T2YucHJlY2lzaW9uU3RhY2tbaV0gKTsKKyAgICAgICAgVFN5bWJvbCog
c3ltYm9sID0gaXQtPnNlY29uZDsKKyAgICAgICAgaWYgKHN5bWJvbC0+Z2V0TmFtZSgpID09IG5h
bWUpCisgICAgICAgICAgICBzeW1ib2wtPnJlbGF0ZVRvRXh0ZW5zaW9uKGV4dCk7CiAgICAgfQog
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5
bWJvbFRhYmxlLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0zMiw2ICszMiw3IEBA
CiAKICNpbmNsdWRlIDxhc3NlcnQuaD4KIAorI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvSW5mb1NpbmsuaCIKICNpbmNsdWRlICJjb21waWxlci9pbnRl
cm1lZGlhdGUuaCIKIApAQCAtNDksMTMgKzUwLDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaXNWYXJpYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBzZXRVbmlx
dWVJZChpbnQgaWQpIHsgdW5pcXVlSWQgPSBpZDsgfQogICAgIGludCBnZXRVbmlxdWVJZCgpIGNv
bnN0IHsgcmV0dXJuIHVuaXF1ZUlkOyB9Ci0gICAgdmlydHVhbCB2b2lkIGR1bXAoVEluZm9TaW5r
ICZpbmZvU2luaykgY29uc3QgPSAwOwkKLSAgICBUU3ltYm9sKGNvbnN0IFRTeW1ib2wmKTsKLSAg
ICB2aXJ0dWFsIFRTeW1ib2wqIGNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGR1bXAoVEluZm9TaW5rICZpbmZvU2luaykgY29uc3QgPSAwOworICAg
IHZvaWQgcmVsYXRlVG9FeHRlbnNpb24oY29uc3QgVFN0cmluZyYgZXh0KSB7IGV4dGVuc2lvbiA9
IGV4dDsgfQorICAgIGNvbnN0IFRTdHJpbmcmIGdldEV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJu
IGV4dGVuc2lvbjsgfQorCitwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihU
U3ltYm9sKTsKIAotcHJvdGVjdGVkOgogICAgIGNvbnN0IFRTdHJpbmcgKm5hbWU7CiAgICAgdW5z
aWduZWQgaW50IHVuaXF1ZUlkOyAgICAgIC8vIEZvciByZWFsIGNvbXBhcmluZyBkdXJpbmcgY29k
ZSBnZW5lcmF0aW9uCisgICAgVFN0cmluZyBleHRlbnNpb247CiB9OwogCiAvLwpAQCAtNzAsMTUg
Kzc0LDEzIEBAIHByb3RlY3RlZDoKIC8vCiBjbGFzcyBUVmFyaWFibGUgOiBwdWJsaWMgVFN5bWJv
bCB7CiBwdWJsaWM6Ci0gICAgVFZhcmlhYmxlKGNvbnN0IFRTdHJpbmcgKm5hbWUsIGNvbnN0IFRU
eXBlJiB0LCBib29sIHVUID0gZmFsc2UgKSA6IFRTeW1ib2wobmFtZSksIHR5cGUodCksIHVzZXJU
eXBlKHVUKSwgdW5pb25BcnJheSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCkgeyB9CisgICAg
VFZhcmlhYmxlKGNvbnN0IFRTdHJpbmcgKm5hbWUsIGNvbnN0IFRUeXBlJiB0LCBib29sIHVUID0g
ZmFsc2UgKSA6IFRTeW1ib2wobmFtZSksIHR5cGUodCksIHVzZXJUeXBlKHVUKSwgdW5pb25BcnJh
eSgwKSB7IH0KICAgICB2aXJ0dWFsIH5UVmFyaWFibGUoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNWYXJpYWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0gICAgCiAgICAgVFR5cGUmIGdldFR5
cGUoKSB7IHJldHVybiB0eXBlOyB9ICAgIAogICAgIGNvbnN0IFRUeXBlJiBnZXRUeXBlKCkgY29u
c3QgeyByZXR1cm4gdHlwZTsgfQogICAgIGJvb2wgaXNVc2VyVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHVzZXJUeXBlOyB9CiAgICAgdm9pZCBzZXRRdWFsaWZpZXIoVFF1YWxpZmllciBxdWFsaWZpZXIp
IHsgdHlwZS5zZXRRdWFsaWZpZXIocXVhbGlmaWVyKTsgfQotICAgIHZvaWQgdXBkYXRlQXJyYXlJ
bmZvcm1hdGlvblR5cGUoVFR5cGUgKnQpIHsgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSB0OyB9Ci0g
ICAgVFR5cGUqIGdldEFycmF5SW5mb3JtYXRpb25UeXBlKCkgeyByZXR1cm4gYXJyYXlJbmZvcm1h
dGlvblR5cGU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1Npbmsp
IGNvbnN0OwogCkBAIC0xMDAsMTYgKzEwMiwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGRlbGV0ZVtd
IHVuaW9uQXJyYXk7CiAgICAgICAgIHVuaW9uQXJyYXkgPSBjb25zdEFycmF5OyAgCiAgICAgfQot
ICAgIFRWYXJpYWJsZShjb25zdCBUVmFyaWFibGUmLCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcik7
IC8vIGNvcHkgY29uc3RydWN0b3IKLSAgICB2aXJ0dWFsIFRWYXJpYWJsZSogY2xvbmUoVFN0cnVj
dHVyZU1hcCYgcmVtYXBwZXIpOwogCi1wcm90ZWN0ZWQ6Citwcml2YXRlOgorICAgIERJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTihUVmFyaWFibGUpOworCiAgICAgVFR5cGUgdHlwZTsKICAgICBib29s
IHVzZXJUeXBlOwogICAgIC8vIHdlIGFyZSBhc3N1bWluZyB0aGF0IFBvb2wgQWxsb2NhdG9yIHdp
bGwgZnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZCB0byB1bmlvbkFycmF5CiAgICAgLy8gd2hlbiB0
aGlzIG9iamVjdCBpcyBkZXN0cm95ZWQKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5Owot
ICAgIFRUeXBlICphcnJheUluZm9ybWF0aW9uVHlwZTsgIC8vIHRoaXMgaXMgdXNlZCBmb3IgdXBk
YXRpbmcgbWF4QXJyYXlTaXplIGluIGFsbCB0aGUgcmVmZXJlbmNlcyB0byBhIGdpdmVuIHN5bWJv
bAogfTsKIAogLy8KQEAgLTExOSwxMSArMTIwLDYgQEAgcHJvdGVjdGVkOgogc3RydWN0IFRQYXJh
bWV0ZXIgewogICAgIFRTdHJpbmcgKm5hbWU7CiAgICAgVFR5cGUqIHR5cGU7Ci0gICAgdm9pZCBj
b3B5UGFyYW0oY29uc3QgVFBhcmFtZXRlciYgcGFyYW0sIFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVy
KQotICAgIHsKLSAgICAgICAgbmFtZSA9IE5ld1Bvb2xUU3RyaW5nKHBhcmFtLm5hbWUtPmNfc3Ry
KCkpOwotICAgICAgICB0eXBlID0gcGFyYW0udHlwZS0+Y2xvbmUocmVtYXBwZXIpOwotICAgIH0K
IH07CiAKIC8vCkBAIC0xNjMsOSArMTU5LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVsYXRlVG9P
cGVyYXRvcihUT3BlcmF0b3IgbykgeyBvcCA9IG87IH0KICAgICBUT3BlcmF0b3IgZ2V0QnVpbHRJ
bk9wKCkgY29uc3QgeyByZXR1cm4gb3A7IH0KIAotICAgIHZvaWQgcmVsYXRlVG9FeHRlbnNpb24o
Y29uc3QgVFN0cmluZyYgZXh0KSB7IGV4dGVuc2lvbiA9IGV4dDsgfQotICAgIGNvbnN0IFRTdHJp
bmcmIGdldEV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIGV4dGVuc2lvbjsgfQotCiAgICAgdm9p
ZCBzZXREZWZpbmVkKCkgeyBkZWZpbmVkID0gdHJ1ZTsgfQogICAgIGJvb2wgaXNEZWZpbmVkKCkg
eyByZXR1cm4gZGVmaW5lZDsgfQogCkBAIC0xNzMsMTYgKzE2NiwxNSBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgVFBhcmFtZXRlciYgZ2V0UGFyYW0oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIHBhcmFt
ZXRlcnNbaV07IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1Npbmsp
IGNvbnN0OwotICAgIFRGdW5jdGlvbihjb25zdCBURnVuY3Rpb24mLCBUU3RydWN0dXJlTWFwJiBy
ZW1hcHBlcik7Ci0gICAgdmlydHVhbCBURnVuY3Rpb24qIGNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJl
bWFwcGVyKTsKIAotcHJvdGVjdGVkOgorcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9B
U1NJR04oVEZ1bmN0aW9uKTsKKwogICAgIHR5cGVkZWYgVFZlY3RvcjxUUGFyYW1ldGVyPiBUUGFy
YW1MaXN0OwogICAgIFRQYXJhbUxpc3QgcGFyYW1ldGVyczsKICAgICBUVHlwZSByZXR1cm5UeXBl
OwogICAgIFRTdHJpbmcgbWFuZ2xlZE5hbWU7CiAgICAgVE9wZXJhdG9yIG9wOwotICAgIFRTdHJp
bmcgZXh0ZW5zaW9uOwogICAgIGJvb2wgZGVmaW5lZDsKIH07CiAKQEAgLTE5OCwxNyArMTkwLDIy
IEBAIHB1YmxpYzoKICAgICBUU3ltYm9sVGFibGVMZXZlbCgpIHsgfQogICAgIH5UU3ltYm9sVGFi
bGVMZXZlbCgpOwogCi0gICAgYm9vbCBpbnNlcnQoVFN5bWJvbCYgc3ltYm9sKSAKKyAgICBib29s
IGluc2VydChjb25zdCBUU3RyaW5nICZuYW1lLCBUU3ltYm9sICZzeW1ib2wpCiAgICAgewogICAg
ICAgICAvLwogICAgICAgICAvLyByZXR1cm5pbmcgdHJ1ZSBtZWFucyBzeW1ib2wgd2FzIGFkZGVk
IHRvIHRoZSB0YWJsZQogICAgICAgICAvLwogICAgICAgICB0SW5zZXJ0UmVzdWx0IHJlc3VsdDsK
LSAgICAgICAgcmVzdWx0ID0gbGV2ZWwuaW5zZXJ0KHRMZXZlbFBhaXIoc3ltYm9sLmdldE1hbmds
ZWROYW1lKCksICZzeW1ib2wpKTsKKyAgICAgICAgcmVzdWx0ID0gbGV2ZWwuaW5zZXJ0KHRMZXZl
bFBhaXIobmFtZSwgJnN5bWJvbCkpOwogCiAgICAgICAgIHJldHVybiByZXN1bHQuc2Vjb25kOwog
ICAgIH0KIAorICAgIGJvb2wgaW5zZXJ0KFRTeW1ib2wgJnN5bWJvbCkKKyAgICB7CisgICAgICAg
IHJldHVybiBpbnNlcnQoc3ltYm9sLmdldE1hbmdsZWROYW1lKCksIHN5bWJvbCk7CisgICAgfQor
CiAgICAgVFN5bWJvbCogZmluZChjb25zdCBUU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIHsKICAg
ICAgICAgdExldmVsOjpjb25zdF9pdGVyYXRvciBpdCA9IGxldmVsLmZpbmQobmFtZSk7CkBAIC0y
MzEsNyArMjI4LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVsYXRlVG9PcGVyYXRvcihjb25zdCBj
aGFyKiBuYW1lLCBUT3BlcmF0b3Igb3ApOwogICAgIHZvaWQgcmVsYXRlVG9FeHRlbnNpb24oY29u
c3QgY2hhciogbmFtZSwgY29uc3QgVFN0cmluZyYgZXh0KTsKICAgICB2b2lkIGR1bXAoVEluZm9T
aW5rICZpbmZvU2luaykgY29uc3Q7Ci0gICAgVFN5bWJvbFRhYmxlTGV2ZWwqIGNsb25lKFRTdHJ1
Y3R1cmVNYXAmIHJlbWFwcGVyKTsKIAogcHJvdGVjdGVkOgogICAgIHRMZXZlbCBsZXZlbDsKQEAg
LTI4Miw2ICsyNzgsMzUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdGFibGVbY3VycmVudExl
dmVsKCldLT5pbnNlcnQoc3ltYm9sKTsKICAgICB9CiAKKyAgICBib29sIGluc2VydENvbnN0SW50
KGNvbnN0IGNoYXIgKm5hbWUsIGludCB2YWx1ZSkKKyAgICB7CisgICAgICAgIFRWYXJpYWJsZSAq
Y29uc3RhbnQgPSBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKG5hbWUpLCBUVHlwZShFYnRJ
bnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QsIDEpKTsKKyAgICAgICAgY29uc3RhbnQtPmdldENv
bnN0UG9pbnRlcigpLT5zZXRJQ29uc3QodmFsdWUpOworICAgICAgICByZXR1cm4gaW5zZXJ0KCpj
b25zdGFudCk7CisgICAgfQorCisgICAgYm9vbCBpbnNlcnRCdWlsdEluKFRUeXBlICpydmFsdWUs
IGNvbnN0IGNoYXIgKm5hbWUsIFRUeXBlICpwdHlwZTEsIFRUeXBlICpwdHlwZTIgPSAwLCBUVHlw
ZSAqcHR5cGUzID0gMCkKKyAgICB7CisgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcg
VEZ1bmN0aW9uKE5ld1Bvb2xUU3RyaW5nKG5hbWUpLCAqcnZhbHVlKTsKKworICAgICAgICBUUGFy
YW1ldGVyIHBhcmFtMSA9IHtOVUxMLCBwdHlwZTF9OworICAgICAgICBmdW5jdGlvbi0+YWRkUGFy
YW1ldGVyKHBhcmFtMSk7CisKKyAgICAgICAgaWYocHR5cGUyKQorICAgICAgICB7CisgICAgICAg
ICAgICBUUGFyYW1ldGVyIHBhcmFtMiA9IHtOVUxMLCBwdHlwZTJ9OworICAgICAgICAgICAgZnVu
Y3Rpb24tPmFkZFBhcmFtZXRlcihwYXJhbTIpOworICAgICAgICB9CisKKyAgICAgICAgaWYocHR5
cGUzKQorICAgICAgICB7CisgICAgICAgICAgICBUUGFyYW1ldGVyIHBhcmFtMyA9IHtOVUxMLCBw
dHlwZTN9OworICAgICAgICAgICAgZnVuY3Rpb24tPmFkZFBhcmFtZXRlcihwYXJhbTMpOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIGluc2VydCgqZnVuY3Rpb24pOworICAgIH0KKwogICAg
IFRTeW1ib2wqIGZpbmQoY29uc3QgVFN0cmluZyYgbmFtZSwgYm9vbCogYnVpbHRJbiA9IDAsIGJv
b2wgKnNhbWVTY29wZSA9IDApIAogICAgIHsKICAgICAgICAgaW50IGxldmVsID0gY3VycmVudExl
dmVsKCk7CkBAIC0zMjEsNyArMzQ2LDYgQEAgcHVibGljOgogICAgIH0KICAgICBpbnQgZ2V0TWF4
U3ltYm9sSWQoKSB7IHJldHVybiB1bmlxdWVJZDsgfQogICAgIHZvaWQgZHVtcChUSW5mb1Npbmsg
JmluZm9TaW5rKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUYWJsZShjb25zdCBUU3ltYm9sVGFibGUm
IGNvcHlPZik7CiAKICAgICBib29sIHNldERlZmF1bHRQcmVjaXNpb24oIGNvbnN0IFRQdWJsaWNU
eXBlJiB0eXBlLCBUUHJlY2lzaW9uIHByZWMgKXsKICAgICAgICAgaWYgKElzU2FtcGxlcih0eXBl
LnR5cGUpKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1RyYW5z
bGF0b3JITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvVHJhbnNsYXRvckhMU0wuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmln
aHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
IC8vCkBAIC05LDE1ICs5LDE2IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNl
Q29udGV4dC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL091dHB1dEhMU0wuaCIKIAotVHJhbnNsYXRv
ckhMU0w6OlRyYW5zbGF0b3JITFNMKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3Bl
YykKLSAgICA6IFRDb21waWxlcih0eXBlLCBzcGVjKQorVHJhbnNsYXRvckhMU0w6OlRyYW5zbGF0
b3JITFNMKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgU2hTaGFkZXJPdXRw
dXQgb3V0cHV0KQorICAgIDogVENvbXBpbGVyKHR5cGUsIHNwZWMpLCBtT3V0cHV0VHlwZShvdXRw
dXQpCiB7CiB9CiAKIHZvaWQgVHJhbnNsYXRvckhMU0w6OnRyYW5zbGF0ZShUSW50ZXJtTm9kZSAq
cm9vdCkKIHsKICAgICBUUGFyc2VDb250ZXh0JiBwYXJzZUNvbnRleHQgPSAqR2V0R2xvYmFsUGFy
c2VDb250ZXh0KCk7Ci0gICAgc2g6Ok91dHB1dEhMU0wgb3V0cHV0SExTTChwYXJzZUNvbnRleHQp
OworICAgIHNoOjpPdXRwdXRITFNMIG91dHB1dEhMU0wocGFyc2VDb250ZXh0LCBnZXRSZXNvdXJj
ZXMoKSwgbU91dHB1dFR5cGUpOwogCiAgICAgb3V0cHV0SExTTC5vdXRwdXQoKTsKKyAgICBtQWN0
aXZlVW5pZm9ybXMgPSBvdXRwdXRITFNMLmdldFVuaWZvcm1zKCk7CiB9CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckhMU0wu
aAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1RyYW5zbGF0b3JITFNMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwot
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTgsMTMgKzgsMjAgQEAKICNkZWZp
bmUgQ09NUElMRVJfVFJBTlNMQVRPUkhMU0xfSF8KIAogI2luY2x1ZGUgImNvbXBpbGVyL1NoSGFu
ZGxlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvVW5pZm9ybS5oIgogCiBjbGFzcyBUcmFuc2xhdG9y
SExTTCA6IHB1YmxpYyBUQ29tcGlsZXIgewogcHVibGljOgotICAgIFRyYW5zbGF0b3JITFNMKFNo
U2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYyk7CisgICAgVHJhbnNsYXRvckhMU0wo
U2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBTaFNoYWRlck91dHB1dCBvdXRw
dXQpOworCisgICAgdmlydHVhbCBUcmFuc2xhdG9ySExTTCAqZ2V0QXNUcmFuc2xhdG9ySExTTCgp
IHsgcmV0dXJuIHRoaXM7IH0KKyAgICBjb25zdCBzaDo6QWN0aXZlVW5pZm9ybXMgJmdldFVuaWZv
cm1zKCkgeyByZXR1cm4gbUFjdGl2ZVVuaWZvcm1zOyB9CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQgdHJhbnNsYXRlKFRJbnRlcm1Ob2RlKiByb290KTsKKworICAgIHNoOjpBY3RpdmVV
bmlmb3JtcyBtQWN0aXZlVW5pZm9ybXM7CisgICAgU2hTaGFkZXJPdXRwdXQgbU91dHB1dFR5cGU7
CiB9OwogCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JITFNMX0hfCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHlwZXMuaAkocmV2aXNpb24gMTUy
OTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1R5cGVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcsMzAgKzcsODUgQEAKICNpZm5kZWYgX1RZUEVTX0lOQ0xVREVECiAj
ZGVmaW5lIF9UWVBFU19JTkNMVURFRAogCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIK
KwogI2luY2x1ZGUgImNvbXBpbGVyL0Jhc2VUeXBlcy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0Nv
bW1vbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL2RlYnVnLmgiCiAKLWNsYXNzIFRUeXBlOwogc3Ry
dWN0IFRQdWJsaWNUeXBlOworY2xhc3MgVFR5cGU7CiAKLS8vCi0vLyBOZWVkIHRvIGhhdmUgYXNz
b2NpYXRpb24gb2YgbGluZSBudW1iZXJzIHRvIHR5cGVzIGluIGEgbGlzdCBmb3IgYnVpbGRpbmcg
c3RydWN0cy4KLS8vCi1zdHJ1Y3QgVFR5cGVMaW5lIHsKLSAgICBUVHlwZSogdHlwZTsKLSAgICBp
bnQgbGluZTsKK2NsYXNzIFRGaWVsZAoreworcHVibGljOgorICAgIFBPT0xfQUxMT0NBVE9SX05F
V19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcik7CisgICAgVEZpZWxkKFRUeXBlKiB0eXBlLCBU
U3RyaW5nKiBuYW1lKSA6IG1UeXBlKHR5cGUpLCBtTmFtZShuYW1lKSB7fQorCisgICAgLy8gVE9E
TyhhbG9rcCk6IFdlIHNob3VsZCBvbmx5IHJldHVybiBjb25zdCB0eXBlLgorICAgIC8vIEZpeCBp
dCBieSB0d2Vha2luZyBncmFtbWFyLgorICAgIFRUeXBlKiB0eXBlKCkgeyByZXR1cm4gbVR5cGU7
IH0KKyAgICBjb25zdCBUVHlwZSogdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlOyB9CisKKyAg
ICBjb25zdCBUU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1OYW1lOyB9CisKK3ByaXZh
dGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRGaWVsZCk7CisgICAgVFR5cGUqIG1U
eXBlOworICAgIFRTdHJpbmcqIG1OYW1lOwogfTsKLXR5cGVkZWYgVFZlY3RvcjxUVHlwZUxpbmU+
IFRUeXBlTGlzdDsKIAotaW5saW5lIFRUeXBlTGlzdCogTmV3UG9vbFRUeXBlTGlzdCgpCit0eXBl
ZGVmIFRWZWN0b3I8VEZpZWxkKj4gVEZpZWxkTGlzdDsKK2lubGluZSBURmllbGRMaXN0KiBOZXdQ
b29sVEZpZWxkTGlzdCgpCiB7Ci0gICAgdm9pZCogbWVtb3J5ID0gR2xvYmFsUG9vbEFsbG9jYXRv
ci5hbGxvY2F0ZShzaXplb2YoVFR5cGVMaXN0KSk7Ci0gICAgcmV0dXJuIG5ldyhtZW1vcnkpIFRU
eXBlTGlzdDsKKyAgICB2b2lkKiBtZW1vcnkgPSBHbG9iYWxQb29sQWxsb2NhdG9yLmFsbG9jYXRl
KHNpemVvZihURmllbGRMaXN0KSk7CisgICAgcmV0dXJuIG5ldyhtZW1vcnkpIFRGaWVsZExpc3Q7
CiB9CiAKLXR5cGVkZWYgVE1hcDxUVHlwZUxpc3QqLCBUVHlwZUxpc3QqPiBUU3RydWN0dXJlTWFw
OwotdHlwZWRlZiBUTWFwPFRUeXBlTGlzdCosIFRUeXBlTGlzdCo+OjppdGVyYXRvciBUU3RydWN0
dXJlTWFwSXRlcmF0b3I7CitjbGFzcyBUU3RydWN0dXJlCit7CitwdWJsaWM6CisgICAgUE9PTF9B
TExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKTsKKyAgICBUU3RydWN0dXJl
KFRTdHJpbmcqIG5hbWUsIFRGaWVsZExpc3QqIGZpZWxkcykKKyAgICAgICAgOiBtTmFtZShuYW1l
KSwKKyAgICAgICAgICBtRmllbGRzKGZpZWxkcyksCisgICAgICAgICAgbU9iamVjdFNpemUoMCks
CisgICAgICAgICAgbURlZXBlc3ROZXN0aW5nKDApIHsKKyAgICB9CisKKyAgICBjb25zdCBUU3Ry
aW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1OYW1lOyB9CisgICAgY29uc3QgVEZpZWxkTGlz
dCYgZmllbGRzKCkgY29uc3QgeyByZXR1cm4gKm1GaWVsZHM7IH0KKworICAgIGNvbnN0IFRTdHJp
bmcmIG1hbmdsZWROYW1lKCkgY29uc3QgeworICAgICAgICBpZiAobU1hbmdsZWROYW1lLmVtcHR5
KCkpCisgICAgICAgICAgICBtTWFuZ2xlZE5hbWUgPSBidWlsZE1hbmdsZWROYW1lKCk7CisgICAg
ICAgIHJldHVybiBtTWFuZ2xlZE5hbWU7CisgICAgfQorICAgIHNpemVfdCBvYmplY3RTaXplKCkg
Y29uc3QgeworICAgICAgICBpZiAobU9iamVjdFNpemUgPT0gMCkKKyAgICAgICAgICAgIG1PYmpl
Y3RTaXplID0gY2FsY3VsYXRlT2JqZWN0U2l6ZSgpOworICAgICAgICByZXR1cm4gbU9iamVjdFNp
emU7CisgICAgfTsKKyAgICBpbnQgZGVlcGVzdE5lc3RpbmcoKSBjb25zdCB7CisgICAgICAgIGlm
IChtRGVlcGVzdE5lc3RpbmcgPT0gMCkKKyAgICAgICAgICAgIG1EZWVwZXN0TmVzdGluZyA9IGNh
bGN1bGF0ZURlZXBlc3ROZXN0aW5nKCk7CisgICAgICAgIHJldHVybiBtRGVlcGVzdE5lc3Rpbmc7
CisgICAgfQorICAgIGJvb2wgY29udGFpbnNBcnJheXMoKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFN0cnVjdHVyZSk7CisgICAgVFN0cmluZyBidWls
ZE1hbmdsZWROYW1lKCkgY29uc3Q7CisgICAgc2l6ZV90IGNhbGN1bGF0ZU9iamVjdFNpemUoKSBj
b25zdDsKKyAgICBpbnQgY2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBjb25zdDsKKworICAgIFRT
dHJpbmcqIG1OYW1lOworICAgIFRGaWVsZExpc3QqIG1GaWVsZHM7CisKKyAgICBtdXRhYmxlIFRT
dHJpbmcgbU1hbmdsZWROYW1lOworICAgIG11dGFibGUgc2l6ZV90IG1PYmplY3RTaXplOworICAg
IG11dGFibGUgaW50IG1EZWVwZXN0TmVzdGluZzsKK307CiAKIC8vCiAvLyBCYXNlIGNsYXNzIGZv
ciB0aGluZ3MgdGhhdCBoYXZlIGEgdHlwZS4KQEAgLTQxLDY5ICs5NiwxMyBAQCBwdWJsaWM6CiAg
ICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKQogICAgIFRU
eXBlKCkge30KICAgICBUVHlwZShUQmFzaWNUeXBlIHQsIFRQcmVjaXNpb24gcCwgVFF1YWxpZmll
ciBxID0gRXZxVGVtcG9yYXJ5LCBpbnQgcyA9IDEsIGJvb2wgbSA9IGZhbHNlLCBib29sIGEgPSBm
YWxzZSkgOgotICAgICAgICAgICAgdHlwZSh0KSwgcHJlY2lzaW9uKHApLCBxdWFsaWZpZXIocSks
IHNpemUocyksIG1hdHJpeChtKSwgYXJyYXkoYSksIGFycmF5U2l6ZSgwKSwKLSAgICAgICAgICAg
IG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVyZSgwKSwg
c3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwg
bWFuZ2xlZCgwKSwgdHlwZU5hbWUoMCkKKyAgICAgICAgICAgIHR5cGUodCksIHByZWNpc2lvbihw
KSwgcXVhbGlmaWVyKHEpLCBzaXplKHMpLCBtYXRyaXgobSksIGFycmF5KGEpLCBhcnJheVNpemUo
MCksIHN0cnVjdHVyZSgwKQogICAgIHsKICAgICB9CiAgICAgZXhwbGljaXQgVFR5cGUoY29uc3Qg
VFB1YmxpY1R5cGUgJnApOwotICAgIFRUeXBlKFRUeXBlTGlzdCogdXNlckRlZiwgY29uc3QgVFN0
cmluZyYgbiwgVFByZWNpc2lvbiBwID0gRWJwVW5kZWZpbmVkKSA6Ci0gICAgICAgICAgICB0eXBl
KEVidFN0cnVjdCksIHByZWNpc2lvbihwKSwgcXVhbGlmaWVyKEV2cVRlbXBvcmFyeSksIHNpemUo
MSksIG1hdHJpeChmYWxzZSksIGFycmF5KGZhbHNlKSwgYXJyYXlTaXplKDApLAotICAgICAgICAg
ICAgbWF4QXJyYXlTaXplKDApLCBhcnJheUluZm9ybWF0aW9uVHlwZSgwKSwgc3RydWN0dXJlKHVz
ZXJEZWYpLCBzdHJ1Y3R1cmVTaXplKDApLCBkZWVwZXN0U3RydWN0TmVzdGluZygwKSwgZmllbGRO
YW1lKDApLCBtYW5nbGVkKDApCisgICAgVFR5cGUoVFN0cnVjdHVyZSogdXNlckRlZiwgVFByZWNp
c2lvbiBwID0gRWJwVW5kZWZpbmVkKSA6CisgICAgICAgICAgICB0eXBlKEVidFN0cnVjdCksIHBy
ZWNpc2lvbihwKSwgcXVhbGlmaWVyKEV2cVRlbXBvcmFyeSksIHNpemUoMSksIG1hdHJpeChmYWxz
ZSksIGFycmF5KGZhbHNlKSwgYXJyYXlTaXplKDApLCBzdHJ1Y3R1cmUodXNlckRlZikKICAgICB7
Ci0gICAgICAgIHR5cGVOYW1lID0gTmV3UG9vbFRTdHJpbmcobi5jX3N0cigpKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGNvcHlUeXBlKGNvbnN0IFRUeXBlJiBjb3B5T2YsIFRTdHJ1Y3R1cmVNYXAmIHJl
bWFwcGVyKQotICAgIHsKLSAgICAgICAgdHlwZSA9IGNvcHlPZi50eXBlOwotICAgICAgICBwcmVj
aXNpb24gPSBjb3B5T2YucHJlY2lzaW9uOwotICAgICAgICBxdWFsaWZpZXIgPSBjb3B5T2YucXVh
bGlmaWVyOwotICAgICAgICBzaXplID0gY29weU9mLnNpemU7Ci0gICAgICAgIG1hdHJpeCA9IGNv
cHlPZi5tYXRyaXg7Ci0gICAgICAgIGFycmF5ID0gY29weU9mLmFycmF5OwotICAgICAgICBhcnJh
eVNpemUgPSBjb3B5T2YuYXJyYXlTaXplOwotCi0gICAgICAgIFRTdHJ1Y3R1cmVNYXBJdGVyYXRv
ciBpdGVyOwotICAgICAgICBpZiAoY29weU9mLnN0cnVjdHVyZSkgewotICAgICAgICAgICAgaWYg
KChpdGVyID0gcmVtYXBwZXIuZmluZChzdHJ1Y3R1cmUpKSA9PSByZW1hcHBlci5lbmQoKSkgewot
ICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgbmV3IHN0cnVjdHVyZSBoZXJlCi0gICAgICAg
ICAgICAgICAgc3RydWN0dXJlID0gTmV3UG9vbFRUeXBlTGlzdCgpOwotICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29weU9mLnN0cnVjdHVyZS0+c2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVMaW5lOwotICAgICAgICAg
ICAgICAgICAgICB0eXBlTGluZS5saW5lID0gKCpjb3B5T2Yuc3RydWN0dXJlKVtpXS5saW5lOwot
ICAgICAgICAgICAgICAgICAgICB0eXBlTGluZS50eXBlID0gKCpjb3B5T2Yuc3RydWN0dXJlKVtp
XS50eXBlLT5jbG9uZShyZW1hcHBlcik7Ci0gICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+
cHVzaF9iYWNrKHR5cGVMaW5lKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IGl0ZXItPnNlY29uZDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzdHJ1Y3R1cmUgPSAwOwotCi0gICAg
ICAgIGZpZWxkTmFtZSA9IDA7Ci0gICAgICAgIGlmIChjb3B5T2YuZmllbGROYW1lKQotICAgICAg
ICAgICAgZmllbGROYW1lID0gTmV3UG9vbFRTdHJpbmcoY29weU9mLmZpZWxkTmFtZS0+Y19zdHIo
KSk7Ci0gICAgICAgIHR5cGVOYW1lID0gMDsKLSAgICAgICAgaWYgKGNvcHlPZi50eXBlTmFtZSkK
LSAgICAgICAgICAgIHR5cGVOYW1lID0gTmV3UG9vbFRTdHJpbmcoY29weU9mLnR5cGVOYW1lLT5j
X3N0cigpKTsKLQotICAgICAgICBtYW5nbGVkID0gMDsKLSAgICAgICAgaWYgKGNvcHlPZi5tYW5n
bGVkKQotICAgICAgICAgICAgbWFuZ2xlZCA9IE5ld1Bvb2xUU3RyaW5nKGNvcHlPZi5tYW5nbGVk
LT5jX3N0cigpKTsKLQotICAgICAgICBzdHJ1Y3R1cmVTaXplID0gY29weU9mLnN0cnVjdHVyZVNp
emU7Ci0gICAgICAgIG1heEFycmF5U2l6ZSA9IGNvcHlPZi5tYXhBcnJheVNpemU7Ci0gICAgICAg
IGRlZXBlc3RTdHJ1Y3ROZXN0aW5nID0gY29weU9mLmRlZXBlc3RTdHJ1Y3ROZXN0aW5nOwotICAg
ICAgICBhc3NlcnQoY29weU9mLmFycmF5SW5mb3JtYXRpb25UeXBlID09IDApOwotICAgICAgICBh
cnJheUluZm9ybWF0aW9uVHlwZSA9IDA7IC8vIGFycmF5SW5mb3JtYXRpb25UeXBlIHNob3VsZCBu
b3QgYmUgc2V0IGZvciBidWlsdEluIHN5bWJvbCB0YWJsZSBsZXZlbAotICAgIH0KLQotICAgIFRU
eXBlKiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIFRUeXBl
ICpuZXdUeXBlID0gbmV3IFRUeXBlKCk7Ci0gICAgICAgIG5ld1R5cGUtPmNvcHlUeXBlKCp0aGlz
LCByZW1hcHBlcik7Ci0KLSAgICAgICAgcmV0dXJuIG5ld1R5cGU7CiAgICAgfQogCiAgICAgVEJh
c2ljVHlwZSBnZXRCYXNpY1R5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlOyB9CkBAIC0xMTksMjEg
KzExOCw0MiBAQCBwdWJsaWM6CiAgICAgaW50IGdldE5vbWluYWxTaXplKCkgY29uc3QgeyByZXR1
cm4gc2l6ZTsgfQogICAgIHZvaWQgc2V0Tm9taW5hbFNpemUoaW50IHMpIHsgc2l6ZSA9IHM7IH0K
ICAgICAvLyBGdWxsIHNpemUgb2Ygc2luZ2xlIGluc3RhbmNlIG9mIHR5cGUKLSAgICBpbnQgZ2V0
T2JqZWN0U2l6ZSgpIGNvbnN0CisgICAgc2l6ZV90IGdldE9iamVjdFNpemUoKSBjb25zdDsKKwor
ICAgIGludCBlbGVtZW50UmVnaXN0ZXJDb3VudCgpIGNvbnN0CiAgICAgewotICAgICAgICBpbnQg
dG90YWxTaXplOworICAgICAgICBpZiAoc3RydWN0dXJlKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBnZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAg
ICAgICAgICBpbnQgcmVnaXN0ZXJDb3VudCA9IDA7CiAKLSAgICAgICAgaWYgKGdldEJhc2ljVHlw
ZSgpID09IEVidFN0cnVjdCkKLSAgICAgICAgICAgIHRvdGFsU2l6ZSA9IGdldFN0cnVjdFNpemUo
KTsKLSAgICAgICAgZWxzZSBpZiAobWF0cml4KQotICAgICAgICAgICAgdG90YWxTaXplID0gc2l6
ZSAqIHNpemU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRvdGFsU2l6ZSA9IHNpemU7Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZWdpc3RlckNvdW50ICs9IGZpZWxkc1tpXS0+
dHlwZSgpLT50b3RhbFJlZ2lzdGVyQ291bnQoKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoaXNBcnJheSgpKQotICAgICAgICAgICAgdG90YWxTaXplICo9IHN0ZDo6bWF4KGdldEFycmF5
U2l6ZSgpLCBnZXRNYXhBcnJheVNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gcmVnaXN0ZXJD
b3VudDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChpc01hdHJpeCgpKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gZ2V0Tm9taW5hbFNpemUoKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAg
fQogCi0gICAgICAgIHJldHVybiB0b3RhbFNpemU7CisgICAgaW50IHRvdGFsUmVnaXN0ZXJDb3Vu
dCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoYXJyYXkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBhcnJheVNpemUgKiBlbGVtZW50UmVnaXN0ZXJDb3VudCgpOworICAgICAgICB9
CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRSZWdp
c3RlckNvdW50KCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIGlzTWF0cml4KCkgY29u
c3QgeyByZXR1cm4gbWF0cml4ID8gdHJ1ZSA6IGZhbHNlOyB9CkBAIC0xNDIsNDcgKzE2MiwyMCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0FycmF5KCkgY29uc3QgIHsgcmV0dXJuIGFycmF5ID8gdHJ1
ZSA6IGZhbHNlOyB9CiAgICAgaW50IGdldEFycmF5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGFycmF5
U2l6ZTsgfQogICAgIHZvaWQgc2V0QXJyYXlTaXplKGludCBzKSB7IGFycmF5ID0gdHJ1ZTsgYXJy
YXlTaXplID0gczsgfQotICAgIGludCBnZXRNYXhBcnJheVNpemUgKCkgY29uc3QgeyByZXR1cm4g
bWF4QXJyYXlTaXplOyB9Ci0gICAgdm9pZCBzZXRNYXhBcnJheVNpemUgKGludCBzKSB7IG1heEFy
cmF5U2l6ZSA9IHM7IH0KLSAgICB2b2lkIGNsZWFyQXJyYXluZXNzKCkgeyBhcnJheSA9IGZhbHNl
OyBhcnJheVNpemUgPSAwOyBtYXhBcnJheVNpemUgPSAwOyB9Ci0gICAgdm9pZCBzZXRBcnJheUlu
Zm9ybWF0aW9uVHlwZShUVHlwZSogdCkgeyBhcnJheUluZm9ybWF0aW9uVHlwZSA9IHQ7IH0KLSAg
ICBUVHlwZSogZ2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBhcnJheUlu
Zm9ybWF0aW9uVHlwZTsgfQorICAgIHZvaWQgY2xlYXJBcnJheW5lc3MoKSB7IGFycmF5ID0gZmFs
c2U7IGFycmF5U2l6ZSA9IDA7IH0KIAogICAgIGJvb2wgaXNWZWN0b3IoKSBjb25zdCB7IHJldHVy
biBzaXplID4gMSAmJiAhbWF0cml4OyB9CiAgICAgYm9vbCBpc1NjYWxhcigpIGNvbnN0IHsgcmV0
dXJuIHNpemUgPT0gMSAmJiAhbWF0cml4ICYmICFzdHJ1Y3R1cmU7IH0KIAotICAgIFRUeXBlTGlz
dCogZ2V0U3RydWN0KCkgY29uc3QgeyByZXR1cm4gc3RydWN0dXJlOyB9Ci0gICAgdm9pZCBzZXRT
dHJ1Y3QoVFR5cGVMaXN0KiBzKSB7IHN0cnVjdHVyZSA9IHM7IGNvbXB1dGVEZWVwZXN0U3RydWN0
TmVzdGluZygpOyB9CisgICAgVFN0cnVjdHVyZSogZ2V0U3RydWN0KCkgY29uc3QgeyByZXR1cm4g
c3RydWN0dXJlOyB9CisgICAgdm9pZCBzZXRTdHJ1Y3QoVFN0cnVjdHVyZSogcykgeyBzdHJ1Y3R1
cmUgPSBzOyB9CiAKLSAgICBjb25zdCBUU3RyaW5nJiBnZXRUeXBlTmFtZSgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBhc3NlcnQodHlwZU5hbWUpOwotICAgICAgICByZXR1cm4gKnR5cGVOYW1lOwot
ICAgIH0KLSAgICB2b2lkIHNldFR5cGVOYW1lKGNvbnN0IFRTdHJpbmcmIG4pCi0gICAgewotICAg
ICAgICB0eXBlTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKG4uY19zdHIoKSk7Ci0gICAgfQotCi0gICAg
Ym9vbCBpc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmllbGROYW1lICE9IDA7IH0KLSAgICBjb25z
dCBUU3RyaW5nJiBnZXRGaWVsZE5hbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgYXNzZXJ0KGZp
ZWxkTmFtZSk7Ci0gICAgICAgIHJldHVybiAqZmllbGROYW1lOwotICAgIH0KLSAgICB2b2lkIHNl
dEZpZWxkTmFtZShjb25zdCBUU3RyaW5nJiBuKQotICAgIHsKLSAgICAgICAgZmllbGROYW1lID0g
TmV3UG9vbFRTdHJpbmcobi5jX3N0cigpKTsKLSAgICB9Ci0KLSAgICBUU3RyaW5nJiBnZXRNYW5n
bGVkTmFtZSgpIHsKLSAgICAgICAgaWYgKCFtYW5nbGVkKSB7Ci0gICAgICAgICAgICBtYW5nbGVk
ID0gTmV3UG9vbFRTdHJpbmcoIiIpOwotICAgICAgICAgICAgYnVpbGRNYW5nbGVkTmFtZSgqbWFu
Z2xlZCk7Ci0gICAgICAgICAgICAqbWFuZ2xlZCArPSAnOycgOworICAgIGNvbnN0IFRTdHJpbmcm
IGdldE1hbmdsZWROYW1lKCkgY29uc3QgeworICAgICAgICBpZiAobWFuZ2xlZC5lbXB0eSgpKSB7
CisgICAgICAgICAgICBtYW5nbGVkID0gYnVpbGRNYW5nbGVkTmFtZSgpOworICAgICAgICAgICAg
bWFuZ2xlZCArPSAnOyc7CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gKm1hbmdsZWQ7Cisg
ICAgICAgIHJldHVybiBtYW5nbGVkOwogICAgIH0KIAogICAgIGJvb2wgc2FtZUVsZW1lbnRUeXBl
KGNvbnN0IFRUeXBlJiByaWdodCkgY29uc3QgewpAQCAtMjMwLDMyICsyMjMsMzQgQEAgcHVibGlj
OgogICAgIC8vIEZvciB0eXBlICJuZXN0aW5nMiIsIHRoaXMgbWV0aG9kIHdvdWxkIHJldHVybiAy
IC0tIHRoZSBudW1iZXIKICAgICAvLyBvZiBzdHJ1Y3R1cmVzIHRocm91Z2ggd2hpY2ggaW5kaXJl
Y3Rpb24gbXVzdCBvY2N1ciB0byByZWFjaCB0aGUKICAgICAvLyBkZWVwZXN0IGZpZWxkIChuZXN0
aW5nMi5maWVsZDEucG9zaXRpb24pLgotICAgIGludCBnZXREZWVwZXN0U3RydWN0TmVzdGluZygp
IGNvbnN0IHsgcmV0dXJuIGRlZXBlc3RTdHJ1Y3ROZXN0aW5nOyB9CisgICAgaW50IGdldERlZXBl
c3RTdHJ1Y3ROZXN0aW5nKCkgY29uc3QgeworICAgICAgICByZXR1cm4gc3RydWN0dXJlID8gc3Ry
dWN0dXJlLT5kZWVwZXN0TmVzdGluZygpIDogMDsKKyAgICB9CiAKLSAgICBib29sIGlzU3RydWN0
dXJlQ29udGFpbmluZ0FycmF5cygpIGNvbnN0OworICAgIGJvb2wgaXNTdHJ1Y3R1cmVDb250YWlu
aW5nQXJyYXlzKCkgY29uc3QgeworICAgICAgICByZXR1cm4gc3RydWN0dXJlID8gc3RydWN0dXJl
LT5jb250YWluc0FycmF5cygpIDogZmFsc2U7CisgICAgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgdm9p
ZCBidWlsZE1hbmdsZWROYW1lKFRTdHJpbmcmKTsKLSAgICBpbnQgZ2V0U3RydWN0U2l6ZSgpIGNv
bnN0OwotICAgIHZvaWQgY29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCk7Citwcml2YXRlOgor
ICAgIFRTdHJpbmcgYnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0OwogCisjaWZkZWYgX19HTlVDX18K
KyAgICBUQmFzaWNUeXBlIHR5cGU7CisgICAgVFByZWNpc2lvbiBwcmVjaXNpb247CisgICAgVFF1
YWxpZmllciBxdWFsaWZpZXI7CisjZWxzZQogICAgIFRCYXNpY1R5cGUgdHlwZSAgICAgIDogNjsK
ICAgICBUUHJlY2lzaW9uIHByZWNpc2lvbjsKICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA6IDc7
CisjZW5kaWYKICAgICBpbnQgc2l6ZSAgICAgICAgICAgICA6IDg7IC8vIHNpemUgb2YgdmVjdG9y
IG9yIG1hdHJpeCwgbm90IHNpemUgb2YgYXJyYXkKICAgICB1bnNpZ25lZCBpbnQgbWF0cml4ICA6
IDE7CiAgICAgdW5zaWduZWQgaW50IGFycmF5ICAgOiAxOwogICAgIGludCBhcnJheVNpemU7Ci0g
ICAgaW50IG1heEFycmF5U2l6ZTsKLSAgICBUVHlwZSogYXJyYXlJbmZvcm1hdGlvblR5cGU7CiAK
LSAgICBUVHlwZUxpc3QqIHN0cnVjdHVyZTsgICAgICAvLyAwIHVubGVzcyB0aGlzIGlzIGEgc3Ry
dWN0Ci0gICAgbXV0YWJsZSBpbnQgc3RydWN0dXJlU2l6ZTsKLSAgICBpbnQgZGVlcGVzdFN0cnVj
dE5lc3Rpbmc7Ci0KLSAgICBUU3RyaW5nICpmaWVsZE5hbWU7ICAgICAgICAgLy8gZm9yIHN0cnVj
dHVyZSBmaWVsZCBuYW1lcwotICAgIFRTdHJpbmcgKm1hbmdsZWQ7Ci0gICAgVFN0cmluZyAqdHlw
ZU5hbWU7ICAgICAgICAgIC8vIGZvciBzdHJ1Y3R1cmUgZmllbGQgdHlwZSBuYW1lCisgICAgVFN0
cnVjdHVyZSogc3RydWN0dXJlOyAgICAgIC8vIDAgdW5sZXNzIHRoaXMgaXMgYSBzdHJ1Y3QKKwor
ICAgIG11dGFibGUgVFN0cmluZyBtYW5nbGVkOwogfTsKIAogLy8KQEAgLTI3Nyw5ICsyNzIsOSBA
QCBzdHJ1Y3QgVFB1YmxpY1R5cGUKICAgICBib29sIGFycmF5OwogICAgIGludCBhcnJheVNpemU7
CiAgICAgVFR5cGUqIHVzZXJEZWY7Ci0gICAgaW50IGxpbmU7CisgICAgVFNvdXJjZUxvYyBsaW5l
OwogCi0gICAgdm9pZCBzZXRCYXNpYyhUQmFzaWNUeXBlIGJ0LCBUUXVhbGlmaWVyIHEsIGludCBs
biA9IDApCisgICAgdm9pZCBzZXRCYXNpYyhUQmFzaWNUeXBlIGJ0LCBUUXVhbGlmaWVyIHEsIGNv
bnN0IFRTb3VyY2VMb2MmIGxuKQogICAgIHsKICAgICAgICAgdHlwZSA9IGJ0OwogICAgICAgICBx
dWFsaWZpZXIgPSBxOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1ZhcmlhYmxlSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzEsMTIgKzEzMSwxMyBAQCB2b2lkIGdldFVzZXJEZWZpbmVkVmFyaWFibGVJ
bmZvKGNvbnN0IFRUCiB7CiAgICAgQVNTRVJUKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3Ry
dWN0KTsKIAotICAgIGNvbnN0IFRUeXBlTGlzdCogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3Qo
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOwot
ICAgICAgICBnZXRWYXJpYWJsZUluZm8oKmZpZWxkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG5hbWUgKyAiLiIgKyBmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbWFwcGVkTmFtZSArICIuIiArIFRJbnRlcm1UcmF2ZXJzZXI6Omhhc2goZmll
bGRUeXBlLT5nZXRGaWVsZE5hbWUoKSwgaGFzaEZ1bmN0aW9uKSwKKyAgICBjb25zdCBURmllbGRM
aXN0JiBmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBUVHlwZSYg
ZmllbGRUeXBlID0gKihmaWVsZHNbaV0tPnR5cGUoKSk7CisgICAgICAgIGNvbnN0IFRTdHJpbmcm
IGZpZWxkTmFtZSA9IGZpZWxkc1tpXS0+bmFtZSgpOworICAgICAgICBnZXRWYXJpYWJsZUluZm8o
ZmllbGRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArICIuIiArIGZpZWxkTmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgKyAiLiIgKyBUSW50ZXJtVHJh
dmVyc2VyOjpoYXNoKGZpZWxkTmFtZSwgaGFzaEZ1bmN0aW9uKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZm9MaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgaGFzaEZ1bmN0aW9uKTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFu
Zy5sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9n
bHNsYW5nLmwJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9nbHNsYW5nLmwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDEwIEBAIFdI
SUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEgd2FybmluZyhk
aXNhYmxlIDogNDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZhbC0+
bGV4LmxpbmUgPSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9maWxlID0geXlsbG9jLT5s
YXN0X2ZpbGUgPSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGxvYy0+
bGFzdF9saW5lID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1h
eF9zaXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5c2Nh
bm5lcik7CiAKQEAgLTU3LDEwICs2MCw4IEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNj
YW5fdCB5eXNjYW4KICV9CiAKICVvcHRpb24gbm95eXdyYXAgbm91bnB1dCBuZXZlci1pbnRlcmFj
dGl2ZQotJW9wdGlvbiB5eWxpbmVubyByZWVudHJhbnQgYmlzb24tYnJpZGdlCi0lb3B0aW9uIHN0
YWNrCislb3B0aW9uIHl5bGluZW5vIHJlZW50cmFudCBiaXNvbi1icmlkZ2UgYmlzb24tbG9jYXRp
b25zCiAlb3B0aW9uIGV4dHJhLXR5cGU9IlRQYXJzZUNvbnRleHQqIgotJXggQ09NTUVOVCBGSUVM
RFMKIAogRCAgICAgICAgICAgWzAtOV0KIEwgICAgICAgICAgIFthLXpBLVpfXQpAQCAtNzAsNzMg
KzcxLDYwIEBAIE8gICAgICAgICAgIFswLTddCiAKICUlCiAKLSV7Ci0gICAgVFBhcnNlQ29udGV4
dCogY29udGV4dCA9IHl5ZXh0cmE7Ci0lfQotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMg
Ki8KLSIvLyJbXlxuXSogOworImludmFyaWFudCIgICAgeyByZXR1cm4gSU5WQVJJQU5UOyB9Cisi
aGlnaHAiICAgICAgICB7IHJldHVybiBISUdIX1BSRUNJU0lPTjsgfQorIm1lZGl1bXAiICAgICAg
eyByZXR1cm4gTUVESVVNX1BSRUNJU0lPTjsgfQorImxvd3AiICAgICAgICAgeyByZXR1cm4gTE9X
X1BSRUNJU0lPTjsgfQorInByZWNpc2lvbiIgICAgeyByZXR1cm4gUFJFQ0lTSU9OOyB9CisKKyJh
dHRyaWJ1dGUiICAgIHsgcmV0dXJuIEFUVFJJQlVURTsgfQorImNvbnN0IiAgICAgICAgeyByZXR1
cm4gQ09OU1RfUVVBTDsgfQorInVuaWZvcm0iICAgICAgeyByZXR1cm4gVU5JRk9STTsgfQorInZh
cnlpbmciICAgICAgeyByZXR1cm4gVkFSWUlORzsgfQorCisiYnJlYWsiICAgICAgICB7IHJldHVy
biBCUkVBSzsgfQorImNvbnRpbnVlIiAgICAgeyByZXR1cm4gQ09OVElOVUU7IH0KKyJkbyIgICAg
ICAgICAgIHsgcmV0dXJuIERPOyB9CisiZm9yIiAgICAgICAgICB7IHJldHVybiBGT1I7IH0KKyJ3
aGlsZSIgICAgICAgIHsgcmV0dXJuIFdISUxFOyB9CisKKyJpZiIgICAgICAgICAgIHsgcmV0dXJu
IElGOyB9CisiZWxzZSIgICAgICAgICB7IHJldHVybiBFTFNFOyB9CisKKyJpbiIgICAgICAgICAg
IHsgcmV0dXJuIElOX1FVQUw7IH0KKyJvdXQiICAgICAgICAgIHsgcmV0dXJuIE9VVF9RVUFMOyB9
CisiaW5vdXQiICAgICAgICB7IHJldHVybiBJTk9VVF9RVUFMOyB9CisKKyJmbG9hdCIgICAgICAg
IHsgcmV0dXJuIEZMT0FUX1RZUEU7IH0KKyJpbnQiICAgICAgICAgIHsgcmV0dXJuIElOVF9UWVBF
OyB9Cisidm9pZCIgICAgICAgICB7IHJldHVybiBWT0lEX1RZUEU7IH0KKyJib29sIiAgICAgICAg
IHsgcmV0dXJuIEJPT0xfVFlQRTsgfQorInRydWUiICAgICAgICAgeyB5eWx2YWwtPmxleC5iID0g
dHJ1ZTsgIHJldHVybiBCT09MQ09OU1RBTlQ7IH0KKyJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5s
ZXguYiA9IGZhbHNlOyByZXR1cm4gQk9PTENPTlNUQU5UOyB9CisKKyJkaXNjYXJkIiAgICAgIHsg
cmV0dXJuIERJU0NBUkQ7IH0KKyJyZXR1cm4iICAgICAgIHsgcmV0dXJuIFJFVFVSTjsgfQorCisi
bWF0MiIgICAgICAgICB7IHJldHVybiBNQVRSSVgyOyB9CisibWF0MyIgICAgICAgICB7IHJldHVy
biBNQVRSSVgzOyB9CisibWF0NCIgICAgICAgICB7IHJldHVybiBNQVRSSVg0OyB9CisKKyJ2ZWMy
IiAgICAgICAgIHsgcmV0dXJuIFZFQzI7IH0KKyJ2ZWMzIiAgICAgICAgIHsgcmV0dXJuIFZFQzM7
IH0KKyJ2ZWM0IiAgICAgICAgIHsgcmV0dXJuIFZFQzQ7IH0KKyJpdmVjMiIgICAgICAgIHsgcmV0
dXJuIElWRUMyOyB9CisiaXZlYzMiICAgICAgICB7IHJldHVybiBJVkVDMzsgfQorIml2ZWM0IiAg
ICAgICAgeyByZXR1cm4gSVZFQzQ7IH0KKyJidmVjMiIgICAgICAgIHsgcmV0dXJuIEJWRUMyOyB9
CisiYnZlYzMiICAgICAgICB7IHJldHVybiBCVkVDMzsgfQorImJ2ZWM0IiAgICAgICAgeyByZXR1
cm4gQlZFQzQ7IH0KKworInNhbXBsZXIyRCIgICAgICAgICAgeyByZXR1cm4gU0FNUExFUjJEOyB9
Cisic2FtcGxlckN1YmUiICAgICAgICB7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQorInNhbXBsZXJF
eHRlcm5hbE9FUyIgeyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KKyJzYW1wbGVyMkRS
ZWN0IiAgICAgIHsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAotICAgIC8qIE11bHRpLWxpbmUg
Y29tbWVudHMgKi8KLSIvKiIgICAgICAgICAgIHsgeXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNj
YW5uZXIpOyB9Ci08Q09NTUVOVD4uIHwKLTxDT01NRU5UPlxuIDsKLTxDT01NRU5UPiIqLyIgIHsg
eXlfcG9wX3N0YXRlKHl5c2Nhbm5lcik7IH0KLQotImludmFyaWFudCIgICAgeyByZXR1cm4oSU5W
QVJJQU5UKTsgfQotImhpZ2hwIiAgICAgICAgeyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Ci0i
bWVkaXVtcCIgICAgICB7IHJldHVybihNRURJVU1fUFJFQ0lTSU9OKTsgfQotImxvd3AiICAgICAg
ICAgeyByZXR1cm4oTE9XX1BSRUNJU0lPTik7IH0KLSJwcmVjaXNpb24iICAgIHsgcmV0dXJuKFBS
RUNJU0lPTik7IH0KLQotImF0dHJpYnV0ZSIgICAgeyByZXR1cm4oQVRUUklCVVRFKTsgfQotImNv
bnN0IiAgICAgICAgeyByZXR1cm4oQ09OU1RfUVVBTCk7IH0KLSJ1bmlmb3JtIiAgICAgIHsgcmV0
dXJuKFVOSUZPUk0pOyB9Ci0idmFyeWluZyIgICAgICB7IHJldHVybihWQVJZSU5HKTsgfQotCi0i
YnJlYWsiICAgICAgICB7IHJldHVybihCUkVBSyk7IH0KLSJjb250aW51ZSIgICAgIHsgcmV0dXJu
KENPTlRJTlVFKTsgfQotImRvIiAgICAgICAgICAgeyByZXR1cm4oRE8pOyB9Ci0iZm9yIiAgICAg
ICAgICB7IHJldHVybihGT1IpOyB9Ci0id2hpbGUiICAgICAgICB7IHJldHVybihXSElMRSk7IH0K
LQotImlmIiAgICAgICAgICAgeyByZXR1cm4oSUYpOyB9Ci0iZWxzZSIgICAgICAgICB7IHJldHVy
bihFTFNFKTsgfQotCi0iaW4iICAgICAgICAgICB7IHJldHVybihJTl9RVUFMKTsgfQotIm91dCIg
ICAgICAgICAgeyByZXR1cm4oT1VUX1FVQUwpOyB9Ci0iaW5vdXQiICAgICAgICB7IHJldHVybihJ
Tk9VVF9RVUFMKTsgfQotCi0iZmxvYXQiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9
IHRydWU7IHJldHVybihGTE9BVF9UWVBFKTsgfQotImludCIgICAgICAgICAgeyBjb250ZXh0LT5s
ZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oSU5UX1RZUEUpOyB9Ci0idm9pZCIgICAgICAgICB7
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihWT0lEX1RZUEUpOyB9Ci0iYm9v
bCIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihCT09MX1RZ
UEUpOyB9Ci0idHJ1ZSIgICAgICAgICB7IHl5bHZhbC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuKEJP
T0xDT05TVEFOVCk7IH0KLSJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyBy
ZXR1cm4oQk9PTENPTlNUQU5UKTsgfQotCi0iZGlzY2FyZCIgICAgICB7IHJldHVybihESVNDQVJE
KTsgfQotInJldHVybiIgICAgICAgeyByZXR1cm4oUkVUVVJOKTsgfQotCi0ibWF0MiIgICAgICAg
ICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVgyKTsgfQotIm1h
dDMiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklY
Myk7IH0KLSJtYXQ0IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuKE1BVFJJWDQpOyB9Ci0KLSJ2ZWMyIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gdHJ1ZTsgcmV0dXJuIChWRUMyKTsgfQotInZlYzMiICAgICAgICAgeyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzMpOyB9Ci0idmVjNCIgICAgICAgICB7IGNvbnRl
eHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KLSJpdmVjMiIgICAgICAg
IHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMik7IH0KLSJpdmVj
MyIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMyk7
IH0KLSJpdmVjNCIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJu
IChJVkVDNCk7IH0KLSJidmVjMiIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuIChCVkVDMik7IH0KLSJidmVjMyIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDMyk7IH0KLSJidmVjNCIgICAgICAgIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KLQotInNhbXBsZXIyRCIgICAg
ICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Ci0i
c2FtcGxlckN1YmUiICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBT
QU1QTEVSQ1VCRTsgfQotInNhbXBsZXJFeHRlcm5hbE9FUyIgeyBjb250ZXh0LT5sZXhBZnRlclR5
cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KLSJzYW1wbGVyMkRSZWN0
IiB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9
Ci0KLSJzdHJ1Y3QiICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJu
KFNUUlVDVCk7IH0KKyJzdHJ1Y3QiICAgICAgIHsgcmV0dXJuIFNUUlVDVDsgfQogCiAiYXNtIiAg
ICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIApAQCAtMTgzLDEz
ICsxNzEsMTEgQEAgTyAgICAgICAgICAgWzAtN10KICJmdmVjMyIgICAgICAgIHsgcmV0dXJuIHJl
c2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQogImZ2ZWM0IiAgICAgICAgeyByZXR1cm4gcmVzZXJ2
ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAKLSJzYW1wbGVyMUQiICAgIHsgcmV0dXJuIHJlc2VydmVk
X3dvcmQoeXlzY2FubmVyKTsgfQotInNhbXBsZXIzRCIgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29y
ZCh5eXNjYW5uZXIpOyB9Ci0KLSJzYW1wbGVyMURTaGFkb3ciIHsgcmV0dXJuIHJlc2VydmVkX3dv
cmQoeXlzY2FubmVyKTsgfQotInNhbXBsZXIyRFNoYWRvdyIgeyByZXR1cm4gcmVzZXJ2ZWRfd29y
ZCh5eXNjYW5uZXIpOyB9Ci0KLSJzYW1wbGVyM0RSZWN0IiB7IHJldHVybiByZXNlcnZlZF93b3Jk
KHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMUQiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93
b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0QiICAgICAgICAgICB7IHJldHVybiByZXNlcnZl
ZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMURTaGFkb3ciICAgICB7IHJldHVybiByZXNl
cnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMkRTaGFkb3ciICAgICB7IHJldHVybiBy
ZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0RSZWN0IiAgICAgICB7IHJldHVy
biByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KICJzYW1wbGVyMkRSZWN0U2hhZG93IiB7IHJl
dHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAogInNpemVvZiIgICAgICAgeyByZXR1
cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CkBAIC0yMDMsNzIgKzE4OSw2NCBAQCBPICAg
ICAgICAgICBbMC03XQogICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKIH0KIAotMFt4
WF17SH0rICAgICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2wo
eXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KLTB7T30rICAgICAgICAgICAg
IHsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkp
OyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Ci0we0R9KyAgICAgICAgICAgICB7IGNvbnRleHQtPmVy
cm9yKHl5bGluZW5vLCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+
cmVjb3ZlcigpOyByZXR1cm4gMDt9Ci17RH0rICAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4Lmkg
PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNU
QU5UKTsgfQotCi17RH0re0V9ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQote0R9
KyIuIntEfSooe0V9KT8geyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2Zf
ZG90KHl5dGV4dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KLSIuIntEfSsoe0V9KT8gICAg
IHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsg
cmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Ci0KLSIrPSIgICAgICAgICAgICB7ICByZXR1cm4oQURE
X0FTU0lHTik7IH0KLSItPSIgICAgICAgICAgICB7ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KLSIq
PSIgICAgICAgICAgICB7ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KLSIvPSIgICAgICAgICAgICB7
ICByZXR1cm4oRElWX0FTU0lHTik7IH0KLSIlPSIgICAgICAgICAgICB7ICByZXR1cm4oTU9EX0FT
U0lHTik7IH0KLSI8PD0iICAgICAgICAgICB7ICByZXR1cm4oTEVGVF9BU1NJR04pOyB9Ci0iPj49
IiAgICAgICAgICAgeyAgcmV0dXJuKFJJR0hUX0FTU0lHTik7IH0KLSImPSIgICAgICAgICAgICB7
ICByZXR1cm4oQU5EX0FTU0lHTik7IH0KLSJePSIgICAgICAgICAgICB7ICByZXR1cm4oWE9SX0FT
U0lHTik7IH0KLSJ8PSIgICAgICAgICAgICB7ICByZXR1cm4oT1JfQVNTSUdOKTsgfQotCi0iKysi
ICAgICAgICAgICAgeyAgcmV0dXJuKElOQ19PUCk7IH0KLSItLSIgICAgICAgICAgICB7ICByZXR1
cm4oREVDX09QKTsgfQotIiYmIiAgICAgICAgICAgIHsgIHJldHVybihBTkRfT1ApOyB9Ci0ifHwi
ICAgICAgICAgICAgeyAgcmV0dXJuKE9SX09QKTsgfQotIl5eIiAgICAgICAgICAgIHsgIHJldHVy
bihYT1JfT1ApOyB9Ci0iPD0iICAgICAgICAgICAgeyAgcmV0dXJuKExFX09QKTsgfQotIj49IiAg
ICAgICAgICAgIHsgIHJldHVybihHRV9PUCk7IH0KLSI9PSIgICAgICAgICAgICB7ICByZXR1cm4o
RVFfT1ApOyB9Ci0iIT0iICAgICAgICAgICAgeyAgcmV0dXJuKE5FX09QKTsgfQotIjw8IiAgICAg
ICAgICAgIHsgIHJldHVybihMRUZUX09QKTsgfQotIj4+IiAgICAgICAgICAgIHsgIHJldHVybihS
SUdIVF9PUCk7IH0KLSI7IiAgICAgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZh
bHNlOyByZXR1cm4oU0VNSUNPTE9OKTsgfQotKCJ7InwiPCUiKSAgICAgIHsgY29udGV4dC0+bGV4
QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihMRUZUX0JSQUNFKTsgfQotKCJ9InwiJT4iKSAgICAg
IHsgcmV0dXJuKFJJR0hUX0JSQUNFKTsgfQotIiwiICAgICAgICAgeyBpZiAoY29udGV4dC0+aW5U
eXBlUGFyZW4pIGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9
Ci0iOiIgICAgICAgICB7IHJldHVybihDT0xPTik7IH0KLSI9IiAgICAgICAgIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihFUVVBTCk7IH0KLSIoIiAgICAgICAgIHsgY29u
dGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gdHJ1ZTsg
cmV0dXJuKExFRlRfUEFSRU4pOyB9Ci0iKSIgICAgICAgICB7IGNvbnRleHQtPmluVHlwZVBhcmVu
ID0gZmFsc2U7IHJldHVybihSSUdIVF9QQVJFTik7IH0KLSgiWyJ8Ijw6IikgICAgICB7IHJldHVy
bihMRUZUX0JSQUNLRVQpOyB9Ci0oIl0ifCI6PiIpICAgICAgeyByZXR1cm4oUklHSFRfQlJBQ0tF
VCk7IH0KLSIuIiAgICAgICAgIHsgQkVHSU4oRklFTERTKTsgIHJldHVybihET1QpOyB9Ci0iISIg
ICAgICAgICB7IHJldHVybihCQU5HKTsgfQotIi0iICAgICAgICAgeyByZXR1cm4oREFTSCk7IH0K
LSJ+IiAgICAgICAgIHsgcmV0dXJuKFRJTERFKTsgfQotIisiICAgICAgICAgeyByZXR1cm4oUExV
Uyk7IH0KLSIqIiAgICAgICAgIHsgcmV0dXJuKFNUQVIpOyB9Ci0iLyIgICAgICAgICB7IHJldHVy
bihTTEFTSCk7IH0KLSIlIiAgICAgICAgIHsgcmV0dXJuKFBFUkNFTlQpOyB9Ci0iPCIgICAgICAg
ICB7IHJldHVybihMRUZUX0FOR0xFKTsgfQotIj4iICAgICAgICAgeyByZXR1cm4oUklHSFRfQU5H
TEUpOyB9Ci0ifCIgICAgICAgICB7IHJldHVybihWRVJUSUNBTF9CQVIpOyB9Ci0iXiIgICAgICAg
ICB7IHJldHVybihDQVJFVCk7IH0KLSImIiAgICAgICAgIHsgcmV0dXJuKEFNUEVSU0FORCk7IH0K
LSI/IiAgICAgICAgIHsgcmV0dXJuKFFVRVNUSU9OKTsgfQotCi08RklFTERTPntMfSh7TH18e0R9
KSogeyAKLSAgICBCRUdJTihJTklUSUFMKTsKLSAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQ
b29sVFN0cmluZyh5eXRleHQpOyAKLSAgICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwotfQotPEZJ
RUxEUz5bIFx0XHZcZlxyXSB7fQotCi1bIFx0XHZcblxmXHJdICAgeyAgfQotPCo+PDxFT0Y+PiAg
ICAgIHsgY29udGV4dC0+QWZ0ZXJFT0YgPSB0cnVlOyB5eXRlcm1pbmF0ZSgpOyB9Ci08Kj4uICAg
ICAgICAgICAgeyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBjaGFyIiwgeXl0
ZXh0LCAiIik7IHJldHVybiAwOyB9CiswW3hYXXtIfSsgICAgICAgICB7IHl5bHZhbC0+bGV4Lmkg
PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNU
QU5UOyB9Ciswe099KyAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxp
bnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Cit7RH0rICAg
ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRl
eHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CisKK3tEfSt7RX0gICAgICAgICAgIHsg
eXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0
dXJuIEZMT0FUQ09OU1RBTlQ7IH0KK3tEfSsiLiJ7RH0qKHtFfSk/IHsgeXlsdmFsLT5sZXguZiA9
IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RB
TlQ7IH0KKyIuIntEfSsoe0V9KT8gICAgIHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZs
b2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKworIis9IiAg
ICAgICAgICAgIHsgcmV0dXJuIEFERF9BU1NJR047IH0KKyItPSIgICAgICAgICAgICB7IHJldHVy
biBTVUJfQVNTSUdOOyB9CisiKj0iICAgICAgICAgICAgeyByZXR1cm4gTVVMX0FTU0lHTjsgfQor
Ii89IiAgICAgICAgICAgIHsgcmV0dXJuIERJVl9BU1NJR047IH0KKyIlPSIgICAgICAgICAgICB7
IHJldHVybiBNT0RfQVNTSUdOOyB9CisiPDw9IiAgICAgICAgICAgeyByZXR1cm4gTEVGVF9BU1NJ
R047IH0KKyI+Pj0iICAgICAgICAgICB7IHJldHVybiBSSUdIVF9BU1NJR047IH0KKyImPSIgICAg
ICAgICAgICB7IHJldHVybiBBTkRfQVNTSUdOOyB9CisiXj0iICAgICAgICAgICAgeyByZXR1cm4g
WE9SX0FTU0lHTjsgfQorInw9IiAgICAgICAgICAgIHsgcmV0dXJuIE9SX0FTU0lHTjsgfQorCisi
KysiICAgICAgICAgICAgeyByZXR1cm4gSU5DX09QOyB9CisiLS0iICAgICAgICAgICAgeyByZXR1
cm4gREVDX09QOyB9CisiJiYiICAgICAgICAgICAgeyByZXR1cm4gQU5EX09QOyB9CisifHwiICAg
ICAgICAgICAgeyByZXR1cm4gT1JfT1A7IH0KKyJeXiIgICAgICAgICAgICB7IHJldHVybiBYT1Jf
T1A7IH0KKyI8PSIgICAgICAgICAgICB7IHJldHVybiBMRV9PUDsgfQorIj49IiAgICAgICAgICAg
IHsgcmV0dXJuIEdFX09QOyB9CisiPT0iICAgICAgICAgICAgeyByZXR1cm4gRVFfT1A7IH0KKyIh
PSIgICAgICAgICAgICB7IHJldHVybiBORV9PUDsgfQorIjw8IiAgICAgICAgICAgIHsgcmV0dXJu
IExFRlRfT1A7IH0KKyI+PiIgICAgICAgICAgICB7IHJldHVybiBSSUdIVF9PUDsgfQorIjsiICAg
ICAgICAgICAgIHsgcmV0dXJuIFNFTUlDT0xPTjsgfQorKCJ7InwiPCUiKSAgICAgIHsgcmV0dXJu
IExFRlRfQlJBQ0U7IH0KKygifSJ8IiU+IikgICAgICB7IHJldHVybiBSSUdIVF9CUkFDRTsgfQor
IiwiICAgICAgICAgeyByZXR1cm4gQ09NTUE7IH0KKyI6IiAgICAgICAgIHsgcmV0dXJuIENPTE9O
OyB9CisiPSIgICAgICAgICB7IHJldHVybiBFUVVBTDsgfQorIigiICAgICAgICAgeyByZXR1cm4g
TEVGVF9QQVJFTjsgfQorIikiICAgICAgICAgeyByZXR1cm4gUklHSFRfUEFSRU47IH0KKygiWyJ8
Ijw6IikgIHsgcmV0dXJuIExFRlRfQlJBQ0tFVDsgfQorKCJdInwiOj4iKSAgeyByZXR1cm4gUklH
SFRfQlJBQ0tFVDsgfQorIi4iICAgICAgICAgeyByZXR1cm4gRE9UOyB9CisiISIgICAgICAgICB7
IHJldHVybiBCQU5HOyB9CisiLSIgICAgICAgICB7IHJldHVybiBEQVNIOyB9CisifiIgICAgICAg
ICB7IHJldHVybiBUSUxERTsgfQorIisiICAgICAgICAgeyByZXR1cm4gUExVUzsgfQorIioiICAg
ICAgICAgeyByZXR1cm4gU1RBUjsgfQorIi8iICAgICAgICAgeyByZXR1cm4gU0xBU0g7IH0KKyIl
IiAgICAgICAgIHsgcmV0dXJuIFBFUkNFTlQ7IH0KKyI8IiAgICAgICAgIHsgcmV0dXJuIExFRlRf
QU5HTEU7IH0KKyI+IiAgICAgICAgIHsgcmV0dXJuIFJJR0hUX0FOR0xFOyB9CisifCIgICAgICAg
ICB7IHJldHVybiBWRVJUSUNBTF9CQVI7IH0KKyJeIiAgICAgICAgIHsgcmV0dXJuIENBUkVUOyB9
CisiJiIgICAgICAgICB7IHJldHVybiBBTVBFUlNBTkQ7IH0KKyI/IiAgICAgICAgIHsgcmV0dXJu
IFFVRVNUSU9OOyB9CisKK1sgXHRcdlxuXGZccl0geyB9Cis8PEVPRj4+ICAgIHsgeXl0ZXJtaW5h
dGUoKTsgfQorLiAgICAgICAgICB7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAKICUlCiAK
QEAgLTI3OCw3ICsyNTYsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlf
c2l6CiAgICAgeXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8g
MCA6IHRva2VuLnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAg
bWVtY3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAgIHl5c2V0X2xpbmVubyhF
bmNvZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24ubGluZSks
IHl5c2Nhbm5lcik7CisgICAgeXlzZXRfY29sdW1uKHRva2VuLmxvY2F0aW9uLmZpbGUsIHl5c2Nh
bm5lcik7CisgICAgeXlzZXRfbGluZW5vKHRva2VuLmxvY2F0aW9uLmxpbmUsIHl5c2Nhbm5lcik7
CiAKICAgICBpZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5w
dXQgYnVmZmVyIG92ZXJmbG93Iik7CkBAIC0yOTIsMTIgKzI3MSwxMCBAQCBpbnQgY2hlY2tfdHlw
ZSh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKICAgICAKICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVS
OwogICAgIFRTeW1ib2wqIHN5bWJvbCA9IHl5ZXh0cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0
KTsKLSAgICBpZiAoeXlleHRyYS0+bGV4QWZ0ZXJUeXBlID09IGZhbHNlICYmIHN5bWJvbCAmJiBz
eW1ib2wtPmlzVmFyaWFibGUoKSkgeworICAgIGlmIChzeW1ib2wgJiYgc3ltYm9sLT5pc1Zhcmlh
YmxlKCkpIHsKICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJp
YWJsZSo+KHN5bWJvbCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKSB7Ci0g
ICAgICAgICAgICB5eWV4dHJhLT5sZXhBZnRlclR5cGUgPSB0cnVlOworICAgICAgICBpZiAodmFy
aWFibGUtPmlzVXNlclR5cGUoKSkKICAgICAgICAgICAgIHRva2VuID0gVFlQRV9OQU1FOwotICAg
ICAgICB9CiAgICAgfQogICAgIHl5bHZhbC0+bGV4LnN5bWJvbCA9IHN5bWJvbDsKICAgICByZXR1
cm4gdG9rZW47CkBAIC0zMDYsMjIgKzI4MywxMSBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5
eXNjYW5uZXIpIHsKIGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAg
IHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKIAot
ICAgIHl5ZXh0cmEtPmVycm9yKHl5bGluZW5vLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29y
ZCIsIHl5dGV4dCwgIiIpOworICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbGxlZ2FsIHVz
ZSBvZiByZXNlcnZlZCB3b3JkIiwgeXl0ZXh0LCAiIik7CiAgICAgeXlleHRyYS0+cmVjb3Zlcigp
OwogICAgIHJldHVybiAwOwogfQogCi12b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4
dCwgY29uc3QgY2hhciogcmVhc29uKSB7Ci0gICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3Ry
dWN0IHl5Z3V0c190KikgY29udGV4dC0+c2Nhbm5lcjsKLQotICAgIGlmIChjb250ZXh0LT5BZnRl
ckVPRikgewotICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29uLCAidW5leHBl
Y3RlZCBFT0YiKTsKLSAgICB9IGVsc2UgewotICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVu
bywgcmVhc29uLCB5eXRleHQpOwotICAgIH0KLSAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci19Ci0K
IGludCBnbHNsYW5nX2luaXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5
c2Nhbl90IHNjYW5uZXIgPSBOVUxMOwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQs
ICZzY2FubmVyKSkKQEAgLTM0NCw4ICszMTAsOCBAQCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFy
c2VDb250ZXh0KiBjb250CiBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hh
ciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAg
VFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5cmVzdGFydChOVUxMLCBjb250ZXh0LT5z
Y2FubmVyKTsKLSAgICB5eXNldF9saW5lbm8oRW5jb2RlU291cmNlTG9jKDAsIDEpLCBjb250ZXh0
LT5zY2FubmVyKTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNlOworICAgIHl5c2V0X2Nv
bHVtbigwLCBjb250ZXh0LT5zY2FubmVyKTsKKyAgICB5eXNldF9saW5lbm8oMSwgY29udGV4dC0+
c2Nhbm5lcik7CiAKICAgICAvLyBJbml0aWFsaXplIHByZXByb2Nlc3Nvci4KICAgICBpZiAoIWNv
bnRleHQtPnByZXByb2Nlc3Nvci5pbml0KGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHJldmlz
aW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNs
YW5nLnkJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogLy8KLS8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0zOSw3ICszOSw2IEBAIFdISUNIIEdFTkVSQVRFUyBU
SEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIK
IAogI2RlZmluZSBZWUVOQUJMRV9OTFMgMAotI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQog
CiAjZGVmaW5lIFlZTEVYX1BBUkFNIGNvbnRleHQtPnNjYW5uZXIKICV9CkBAIC00NywxMCArNDYs
MTIgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbAogJWV4cGVjdCAx
IC8qIE9uZSBzaGlmdCByZWR1Y2UgY29uZmxpY3QgYmVjYXVzZSBvZiBpZiB8IGVsc2UgKi8KICVw
dXJlLXBhcnNlcgogJXBhcnNlLXBhcmFtIHtUUGFyc2VDb250ZXh0KiBjb250ZXh0fQorJWxvY2F0
aW9ucwogCiAldW5pb24geworI2RlZmluZSBZWUxUWVBFIFRTb3VyY2VMb2MKKyNkZWZpbmUgWVlM
VFlQRV9JU19ERUNMQVJFRCAxCiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5l
OwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUU3RyaW5nICpzdHJpbmc7CiAgICAgICAg
ICAgICBmbG9hdCBmOwpAQCAtNjAsNyArNjEsNiBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wg
RVMgUEFSU0VSIChnbHNsCiAgICAgICAgIFRTeW1ib2wqIHN5bWJvbDsKICAgICB9IGxleDsKICAg
ICBzdHJ1Y3QgewotICAgICAgICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAgIFRPcGVyYXRvciBv
cDsKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7
CkBAIC03NCwyMyArNzQsMzEgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAo
Z2xzbAogICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgICAgICAgICBURnVu
Y3Rpb24qIGZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKLSAgICAgICAg
ICAgIFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgIFRUeXBlTGlzdCogdHlwZUxpc3Q7
CisgICAgICAgICAgICBURmllbGQqIGZpZWxkOworICAgICAgICAgICAgVEZpZWxkTGlzdCogZmll
bGRMaXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwogfQogCiAlewotZXh0ZXJuIGludCB5
eWxleChZWVNUWVBFKiB5eWx2YWxfcGFyYW0sIHZvaWQqIHl5c2Nhbm5lcik7Ci1leHRlcm4gdm9p
ZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7Citl
eHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbCwgWVlMVFlQRSogeXlsbG9jLCB2b2lkKiB5
eXNjYW5uZXIpOworc3RhdGljIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAKLSNkZWZpbmUgRlJBR19WRVJU
X09OTFkoUywgTCkgeyAgXAotICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX0ZSQUdN
RU5UX1NIQURFUiAmJiAgXAotICAgICAgICBjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX1ZFUlRF
WF9TSEFERVIpIHsgIFwKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBwb3J0ZWQgaW4g
dmVydGV4L2ZyYWdtZW50IHNoYWRlcnMgb25seSAiLCBTKTsgIFwKLSAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOyAgXAotICAgIH0gIFwKLX0KKyNkZWZpbmUgWVlMTE9DX0RFRkFVTFQoQ3VycmVu
dCwgUmhzLCBOKSAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgaWYgKFlZSUQo
TikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
KEN1cnJlbnQpLmZpcnN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDEpLmZpcnN0X2ZpbGU7ICBcCisg
ICAgICAgIChDdXJyZW50KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAxKS5maXJzdF9saW5l
OyAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCBOKS5sYXN0
X2ZpbGU7ICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywg
TikubGFzdF9saW5lOyAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0
X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfZmlsZTsgICBcCisgICAgICAgIChDdXJyZW50
KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2xpbmU7ICAgXAorICAgICAgICAo
Q3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2ZpbGU7ICAgIFwKKyAg
ICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9saW5lOyAg
ICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICB9IHdoaWxlICgwKQogCiAjZGVmaW5lIFZFUlRFWF9PTkxZKFMsIEwpIHsg
IFwKICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7ICBc
CkBAIC0xMTYsNyArMTI0LDYgQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBj
b250ZQogJXRva2VuIDxsZXg+IFNBTVBMRVIyRCBTQU1QTEVSQ1VCRSBTQU1QTEVSX0VYVEVSTkFM
X09FUyBTQU1QTEVSMkRSRUNUCiAKICV0b2tlbiA8bGV4PiBJREVOVElGSUVSIFRZUEVfTkFNRSBG
TE9BVENPTlNUQU5UIElOVENPTlNUQU5UIEJPT0xDT05TVEFOVAotJXRva2VuIDxsZXg+IEZJRUxE
X1NFTEVDVElPTgogJXRva2VuIDxsZXg+IExFRlRfT1AgUklHSFRfT1AKICV0b2tlbiA8bGV4PiBJ
TkNfT1AgREVDX09QIExFX09QIEdFX09QIEVRX09QIE5FX09QCiAldG9rZW4gPGxleD4gQU5EX09Q
IE9SX09QIFhPUl9PUCBNVUxfQVNTSUdOIERJVl9BU1NJR04gQUREX0FTU0lHTgpAQCAtMTI3LDYg
KzEzNCw3IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGUKICV0b2tl
biA8bGV4PiBDT01NQSBDT0xPTiBFUVVBTCBTRU1JQ09MT04gQkFORyBEQVNIIFRJTERFIFBMVVMg
U1RBUiBTTEFTSCBQRVJDRU5UCiAldG9rZW4gPGxleD4gTEVGVF9BTkdMRSBSSUdIVF9BTkdMRSBW
RVJUSUNBTF9CQVIgQ0FSRVQgQU1QRVJTQU5EIFFVRVNUSU9OCiAKKyV0eXBlIDxsZXg+IGlkZW50
aWZpZXIKICV0eXBlIDxpbnRlcm0+IGFzc2lnbm1lbnRfb3BlcmF0b3IgdW5hcnlfb3BlcmF0b3IK
ICV0eXBlIDxpbnRlcm0uaW50ZXJtVHlwZWROb2RlPiB2YXJpYWJsZV9pZGVudGlmaWVyIHByaW1h
cnlfZXhwcmVzc2lvbiBwb3N0Zml4X2V4cHJlc3Npb24KICV0eXBlIDxpbnRlcm0uaW50ZXJtVHlw
ZWROb2RlPiBleHByZXNzaW9uIGludGVnZXJfZXhwcmVzc2lvbiBhc3NpZ25tZW50X2V4cHJlc3Np
b24KQEAgLTE1NCw4ICsxNjIsOCBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQq
IGNvbnRlCiAldHlwZSA8aW50ZXJtLnR5cGU+IHR5cGVfcXVhbGlmaWVyIGZ1bGx5X3NwZWNpZmll
ZF90eXBlIHR5cGVfc3BlY2lmaWVyCiAldHlwZSA8aW50ZXJtLnR5cGU+IHR5cGVfc3BlY2lmaWVy
X25vX3ByZWMgdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICV0eXBlIDxpbnRlcm0udHlwZT4gc3Ry
dWN0X3NwZWNpZmllcgotJXR5cGUgPGludGVybS50eXBlTGluZT4gc3RydWN0X2RlY2xhcmF0b3IK
LSV0eXBlIDxpbnRlcm0udHlwZUxpc3Q+IHN0cnVjdF9kZWNsYXJhdG9yX2xpc3Qgc3RydWN0X2Rl
Y2xhcmF0aW9uIHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0CisldHlwZSA8aW50ZXJtLmZpZWxkPiBz
dHJ1Y3RfZGVjbGFyYXRvcgorJXR5cGUgPGludGVybS5maWVsZExpc3Q+IHN0cnVjdF9kZWNsYXJh
dG9yX2xpc3Qgc3RydWN0X2RlY2xhcmF0aW9uIHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0CiAldHlw
ZSA8aW50ZXJtLmZ1bmN0aW9uPiBmdW5jdGlvbl9oZWFkZXIgZnVuY3Rpb25fZGVjbGFyYXRvciBm
dW5jdGlvbl9pZGVudGlmaWVyCiAldHlwZSA8aW50ZXJtLmZ1bmN0aW9uPiBmdW5jdGlvbl9oZWFk
ZXJfd2l0aF9wYXJhbWV0ZXJzIGZ1bmN0aW9uX2NhbGxfaGVhZGVyCiAldHlwZSA8aW50ZXJtPiBm
dW5jdGlvbl9jYWxsX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMgZnVuY3Rpb25fY2FsbF9oZWFkZXJf
bm9fcGFyYW1ldGVycyBmdW5jdGlvbl9jYWxsX2dlbmVyaWMgZnVuY3Rpb25fcHJvdG90eXBlCkBA
IC0xNjQsMTMgKzE3MiwxNyBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNv
bnRlCiAlc3RhcnQgdHJhbnNsYXRpb25fdW5pdAogJSUKIAoraWRlbnRpZmllcgorICAgIDogSURF
TlRJRklFUgorICAgIHwgVFlQRV9OQU1FCisKIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICA6IElE
RU5USUZJRVIgewogICAgICAgICAvLyBUaGUgc3ltYm9sIHRhYmxlIHNlYXJjaCB3YXMgZG9uZSBp
biB0aGUgbGV4aWNhbCBwaGFzZQogICAgICAgICBjb25zdCBUU3ltYm9sKiBzeW1ib2wgPSAkMS5z
eW1ib2w7CiAgICAgICAgIGNvbnN0IFRWYXJpYWJsZSogdmFyaWFibGU7CiAgICAgICAgIGlmIChz
eW1ib2wgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgInVuZGVj
bGFyZWQgaWRlbnRpZmllciIsICQxLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciIsICQxLnN0cmluZy0+Y19zdHIo
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiBmYWtl
VmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCQxLnN0cmluZywgdHlwZSk7CkBAIC0xNzksMTAgKzE5
MSwxNyBAQCB2YXJpYWJsZV9pZGVudGlmaWVyCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAvLyBUaGlzIGlkZW50aWZpZXIgY2FuIG9ubHkgYmUgYSB2YXJpYWJsZSB0eXBlIHN5bWJvbAog
ICAgICAgICAgICAgaWYgKCEgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAidmFyaWFibGUgZXhwZWN0ZWQiLCAkMS5zdHJpbmct
PmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidmFyaWFibGUg
ZXhwZWN0ZWQiLCAkMS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgdmFy
aWFibGUgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOworCisgICAgICAg
ICAgICBpZiAoY29udGV4dC0+c3ltYm9sVGFibGUuZmluZEJ1aWx0SW4odmFyaWFibGUtPmdldE5h
bWUoKSkgJiYKKyAgICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5
KCkgJiYKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKEAxLCB2
YXJpYWJsZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gZG9uJ3QgZGVs
ZXRlICQxLnN0cmluZywgaXQncyB1c2VkIGJ5IGVycm9yIHJlY292ZXJ5LCBhbmQgdGhlIHBvb2wK
QEAgLTE5MSwxMSArMjEwLDEyIEBAIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICAgICAgaWYgKHZh
cmlhYmxlLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgKSB7CiAgICAgICAg
ICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gdmFyaWFibGUtPmdldENvbnN0UG9pbnRl
cigpOwogICAgICAgICAgICAgVFR5cGUgdCh2YXJpYWJsZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJh
eSwgdCwgJDEubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsIEAxKTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdl
dFVuaXF1ZUlkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksICQxLmxpbmUp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlLT5nZXROYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBAMSk7CiAgICAgfQogICAgIDsKIApAQCAtMjA5LDIyICsy
MjksMjIgQEAgcHJpbWFyeV9leHByZXNzaW9uCiAgICAgICAgIC8vIGNoZWNrIGZvciBvdmVyZmxv
dyBmb3IgY29uc3RhbnRzCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChhYnMoJDEuaSkgPj0gKDEg
PDwgMTYpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiIGludGVnZXIg
Y29uc3RhbnQgb3ZlcmZsb3ciLCAiIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwg
IiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KCQx
LmkpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQxLmxp
bmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAxKTsK
ICAgICB9CiAgICAgfCBGTE9BVENPTlNUQU5UIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5p
b25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRG
Q29uc3QoJDEuZik7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29u
c3QpLCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksIEAxKTsKICAgICB9CiAgICAgfCBCT09MQ09OU1RBTlQgewogICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9u
QXJyYXktPnNldEJDb25zdCgkMS5iKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFDb25zdCksIEAxKTsKICAgICB9CiAgICAgfCBMRUZUX1BBUkVOIGV4cHJlc3Npb24g
UklHSFRfUEFSRU4gewogICAgICAgICAkJCA9ICQyOwpAQCAtMjM2LDEwMyArMjU2LDI3IEBAIHBv
c3RmaXhfZXhwcmVzc2lvbgogICAgICAgICAkJCA9ICQxOwogICAgIH0KICAgICB8IHBvc3RmaXhf
ZXhwcmVzc2lvbiBMRUZUX0JSQUNLRVQgaW50ZWdlcl9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQg
ewotICAgICAgICBpZiAoISQxLT5pc0FycmF5KCkgJiYgISQxLT5pc01hdHJpeCgpICYmICEkMS0+
aXNWZWN0b3IoKSkgewotICAgICAgICAgICAgaWYgKCQxLT5nZXRBc1N5bWJvbE5vZGUoKSkKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5v
dCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAkMS0+Z2V0QXNTeW1ib2xOb2Rl
KCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUg
YXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCku
Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYgJDMtPmdldFF1YWxpZmllcigpID09IEV2cUNv
bnN0KSB7Ci0gICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xk
aW5nIGZvciBhcnJheXMKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0QXJy
YXlOb2RlKCQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+
Z2V0SUNvbnN0KCksICQxLCAkMi5saW5lKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlz
VmVjdG9yKCkpIHsgIC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIHZlY3RvcnMKLSAgICAgICAgICAg
ICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKLSAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0g
MTsKLSAgICAgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1swXSA9ICQzLT5nZXRBc0NvbnN0YW50
VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7IC8vIG5lZWQgdG8g
ZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5Ci0g
ICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAk
MSwgJDIubGluZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7IC8v
IGNvbnN0YW50IGZvbGRpbmcgZm9yIG1hdHJpY2VzCi0gICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgJDEsICQyLmxpbmUpOwotICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKCQzLT5nZXRRdWFsaWZpZXIoKSA9
PSBFdnFDb25zdCkgewotICAgICAgICAgICAgICAgIGlmICgoJDEtPmlzVmVjdG9yKCkgfHwgJDEt
PmlzTWF0cml4KCkpICYmICQxLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSA8PSAkMy0+Z2V0
QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpICYm
ICEkMS0+aXNBcnJheSgpICkgewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVh
bSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8
PCAiZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8PCAkMy0+Z2V0QXNDb25zdGFudFVu
aW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpIDw8ICInIjsKLSAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0
cigpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIiwgIlsi
LCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAo
JDEtPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBl
KCkuZ2V0QXJyYXlTaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgkMS0+Z2V0VHlwZSgpLmdldE1heEFycmF5U2l6ZSgpIDw9ICQzLT5nZXRBc0NvbnN0YW50VW5p
b24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgkMS0+Z2V0
QXNTeW1ib2xOb2RlKCksICQxLT5nZXRUeXBlUG9pbnRlcigpLCAkMy0+Z2V0QXNDb25zdGFudFVu
aW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpLCB0cnVlLCAkMi5saW5l
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTZXRNYXhTaXplKCQxLT5nZXRBc1N5
bWJvbE5vZGUoKSwgJDEtPmdldFR5cGVQb2ludGVyKCksIDAsIGZhbHNlLCAkMi5saW5lKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKCAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCkt
PmdldElDb25zdCgpID49ICQxLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRl
eCBvdXQgb2YgcmFuZ2UgJyIgPDwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICIiLCAiWyIs
IGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
SW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCAkMywgJDIubGluZSk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXko
KSAmJiAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgImFycmF5IG11c3QgYmUgcmVk
ZWNsYXJlZCB3aXRoIGEgc2l6ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRoIGEgdmFyaWFibGUi
KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZElu
ZGV4KEVPcEluZGV4SW5kaXJlY3QsICQxLCAkMywgJDIubGluZSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIENvbnN0YW50VW5p
b24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgICAgIHVuaW9u
QXJyYXktPnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhp
Z2gsIEV2cUNvbnN0KSwgJDIubGluZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzQXJyYXko
KSkgewotICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpCi0gICAgICAg
ICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSwgJDEt
PmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lz
aW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCksICQxLT5pc01hdHJpeCgp
KSk7Ci0KLSAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2
cUNvbnN0KQotICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZp
ZXIoRXZxQ29uc3QpOwotICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpICYmICQxLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAkJC0+c2V0
VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29u
c3QsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKCQxLT5pc01hdHJp
eCgpKQotICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAk
MS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCkpKTsK
LSAgICAgICAgZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkgJiYgJDEtPmdldFR5cGUoKS5nZXRRdWFs
aWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5n
ZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCkpOwotICAgICAgICBl
bHNlIGlmICgkMS0+aXNWZWN0b3IoKSkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQx
LT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnkpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgJCQtPnNldFR5cGUoJDEtPmdldFR5cGUoKSk7CisgICAg
ICAgICQkID0gY29udGV4dC0+YWRkSW5kZXhFeHByZXNzaW9uKCQxLCBAMiwgJDMpOwogICAgIH0K
ICAgICB8IGZ1bmN0aW9uX2NhbGwgewogICAgICAgICAkJCA9ICQxOwogICAgIH0KLSAgICB8IHBv
c3RmaXhfZXhwcmVzc2lvbiBET1QgRklFTERfU0VMRUNUSU9OIHsKKyAgICB8IHBvc3RmaXhfZXhw
cmVzc2lvbiBET1QgaWRlbnRpZmllciB7CiAgICAgICAgIGlmICgkMS0+aXNBcnJheSgpKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMy5saW5lLCAiY2Fubm90IGFwcGx5IGRvdCBvcGVy
YXRvciB0byBhbiBhcnJheSIsICIuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMywg
ImNhbm5vdCBhcHBseSBkb3Qgb3BlcmF0b3IgdG8gYW4gYXJyYXkiLCAiLiIpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCQxLT5pc1Zl
Y3RvcigpKSB7CiAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKLSAgICAgICAgICAg
IGlmICghIGNvbnRleHQtPnBhcnNlVmVjdG9yRmllbGRzKCokMy5zdHJpbmcsICQxLT5nZXROb21p
bmFsU2l6ZSgpLCBmaWVsZHMsICQzLmxpbmUpKSB7CisgICAgICAgICAgICBpZiAoISBjb250ZXh0
LT5wYXJzZVZlY3RvckZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5hbFNpemUoKSwgZmll
bGRzLCBAMykpIHsKICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKICAgICAgICAgICAg
ICAgICBmaWVsZHMub2Zmc2V0c1swXSA9IDA7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0
b3IgZmllbGRzCi0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5v
ZGUoZmllbGRzLCAkMSwgJDMubGluZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5h
ZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwgQDMpOwogICAgICAgICAgICAgICAgIGlmICgk
JCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICAgICAgICAgJCQgPSAkMTsKQEAgLTM0MSwxMyArMjg1LDEzIEBAIHBvc3RmaXhfZXhw
cmVzc2lvbgogICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFz
aWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QsIChpbnQpICgqJDMuc3RyaW5n
KS5zaXplKCkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgVFN0cmlu
ZyB2ZWN0b3JTdHJpbmcgPSAqJDMuc3RyaW5nOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBl
ZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVsZHMsICQzLmxp
bmUpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4
KEVPcFZlY3RvclN3aXp6bGUsICQxLCBpbmRleCwgJDIubGluZSk7CisgICAgICAgICAgICAgICAg
VEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxlKGZp
ZWxkcywgQDMpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEluZGV4KEVPcFZlY3RvclN3aXp6bGUsICQxLCBpbmRleCwgQDIpOwogICAgICAgICAgICAgICAg
ICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigp
LCBFdnFUZW1wb3JhcnksIChpbnQpIHZlY3RvclN0cmluZy5zaXplKCkpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIGlmICgkMS0+aXNNYXRyaXgoKSkgewogICAgICAgICAgICAgVE1h
dHJpeEZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJzZU1hdHJp
eEZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAkMy5saW5l
KSkgeworICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKiQzLnN0
cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgQDMpKSB7CiAgICAgICAgICAgICAg
ICAgZmllbGRzLndob2xlUm93ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLndob2xl
Q29sID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLnJvdyA9IDA7CkBAIC0zNTYsODQg
KzMwMCw3OCBAQCBwb3N0Zml4X2V4cHJlc3Npb24KICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKGZpZWxkcy53aG9sZVJvdyB8fCBmaWVsZHMud2hvbGVDb2wpIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIG5vbi1zY2FsYXIgZmllbGRzIG5vdCBpbXBs
ZW1lbnRlZCB5ZXQiLCAiLiIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAi
IG5vbi1zY2FsYXIgZmllbGRzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiLCAiLiIpOwogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9u
ICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5p
b25BcnJheS0+c2V0SUNvbnN0KDApOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5k
ZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMy5saW5lKTsKLSAgICAgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVj
dCwgJDEsIGluZGV4LCAkMi5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGlu
ZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDMpOworICAgICAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAk
MSwgaW5kZXgsIEAyKTsKICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0
QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSxFdnFUZW1wb3JhcnksICQxLT5nZXROb21p
bmFsU2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIENvbnN0
YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAg
ICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoZmllbGRzLmNvbCAqICQxLT5nZXROb21pbmFsU2l6
ZSgpICsgZmllbGRzLnJvdyk7Ci0gICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBl
KEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQzLmxpbmUpOwotICAgICAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAk
MSwgaW5kZXgsICQyLmxpbmUpOworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXgg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMyk7CisgICAgICAgICAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCBp
bmRleCwgQDIpOwogICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNp
Y1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSBpZiAoJDEtPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgewogICAgICAgICAgICAg
Ym9vbCBmaWVsZEZvdW5kID0gZmFsc2U7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZUxpc3QqIGZp
ZWxkcyA9ICQxLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgICAgICAgICBpZiAoZmllbGRz
ID09IDApIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAic3RydWN0
dXJlIGhhcyBubyBmaWVsZHMiLCAiSW50ZXJuYWwgRXJyb3IiKTsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7Ci0gICAgICAgICAgICAg
ICAgZm9yIChpID0gMDsgaSA8IGZpZWxkcy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCgqZmllbGRzKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSAqJDMuc3RyaW5n
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSAkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5m
aWVsZHMoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICAgICAgZm9yIChp
ID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChmaWVs
ZHNbaV0tPm5hbWUoKSA9PSAqJDMuc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGZpZWxk
Rm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKGZpZWxkRm91bmQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RTdHJ1Y3QoKiQzLnN0cmlu
ZywgJDEsICQyLmxpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQkID09IDApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICQkLT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0eXBlLCBub3Qg
b2YgdGhlIHN0cnVjdHVyZSBmaWVsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFz
IHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyBzaGFyZWQgYmV0d2VlbiB2YXJpb3VzIHN0cnVj
dHVyZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQtPmdldFR5cGVQb2ludGVyKCkt
PnNldFF1YWxpZmllcihFdnFDb25zdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgKigqZmllbGRzKVtpXS50eXBlLCAkMy5saW5lKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVP
cEluZGV4RGlyZWN0U3RydWN0LCAkMSwgaW5kZXgsICQyLmxpbmUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgJCQtPnNldFR5cGUoKigqZmllbGRzKVtpXS50eXBlKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKCQxLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFN0cnVjdCgqJDMuc3RyaW5nLCAkMSwgQDIpOworICAg
ICAgICAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSAkMTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBjaGFuZ2UgdGhlIHF1YWxpZmllciBvZiB0aGUgcmV0dXJuIHR5
cGUsIG5vdCBvZiB0aGUgc3RydWN0dXJlIGZpZWxkCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBhcyB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBz
dHJ1Y3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgJCQtPmdldFR5cGVQb2ludGVyKCkt
PnNldFF1YWxpZmllcihFdnFDb25zdCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5s
aW5lLCAiIG5vIHN1Y2ggZmllbGQgaW4gc3RydWN0dXJlIiwgJDMuc3RyaW5nLT5jX3N0cigpKTsK
LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAg
ICAgICAkJCA9ICQxOworICAgICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CisgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJy
YXktPnNldElDb25zdChpKTsKKyAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRl
eCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksICpm
aWVsZHNbaV0tPnR5cGUoKSwgQDMpOworICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdFN0cnVjdCwgJDEsIGluZGV4LCBA
Mik7CisgICAgICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7
CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcihAMiwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICQzLnN0
cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAg
ICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIGZpZWxkIHNlbGVjdGlvbiByZXF1
aXJlcyBzdHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRlIiwgJDMu
c3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiIGZpZWxk
IHNlbGVjdGlvbiByZXF1aXJlcyBzdHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQg
aGFuZCBzaWRlIiwgJDMuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICAgICAgLy8gZG9u
J3QgZGVsZXRlICQzLnN0cmluZywgaXQncyBmcm9tIHRoZSBwb29sCiAgICAgfQogICAgIHwgcG9z
dGZpeF9leHByZXNzaW9uIElOQ19PUCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJv
ckNoZWNrKCQyLmxpbmUsICIrKyIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVy
cm9yQ2hlY2soQDIsICIrKyIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RJ
bmNyZW1lbnQsICQxLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVtZW50LCAk
MSwgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMi5saW5lLCAiKysiLCAkMS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDIsICIr
KyIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBwb3N0
Zml4X2V4cHJlc3Npb24gREVDX09QIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9y
Q2hlY2soJDIubGluZSwgIi0tIiwgJDEpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJy
b3JDaGVjayhAMiwgIi0tIiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdERl
Y3JlbWVudCwgJDEsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNyZW1lbnQsICQx
LCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAg
ICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQyLmxpbmUsICItLSIsICQxLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihAMiwgIi0t
IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpAQCAtNDYxLDE4ICszOTksMTgg
QEAgZnVuY3Rpb25fY2FsbAogICAgICAgICAgICAgLy8gVGhlaXIgcGFyYW1ldGVycyB3aWxsIGJl
IHZlcmlmaWVkIGFsZ29yaXRobWljYWxseS4KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBU
VHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7ICAvLyB1c2UgdGhpcyB0byBnZXQgdGhl
IHR5cGUgYmFjawotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVj
aygkMS5saW5lLCAkMS5pbnRlcm1Ob2RlLCAqZm5DYWxsLCBvcCwgJnR5cGUpKSB7CisgICAgICAg
ICAgICBpZiAoY29udGV4dC0+Y29uc3RydWN0b3JFcnJvckNoZWNrKEAxLCAkMS5pbnRlcm1Ob2Rl
LCAqZm5DYWxsLCBvcCwgJnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgJCQgPSAwOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEl0
J3MgYSBjb25zdHJ1Y3Rvciwgb2YgdHlwZSAndHlwZScuCiAgICAgICAgICAgICAgICAgLy8KLSAg
ICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0cnVjdG9yKCQxLmludGVybU5vZGUs
ICZ0eXBlLCBvcCwgZm5DYWxsLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmFkZENvbnN0cnVjdG9yKCQxLmludGVybU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxsLCBAMSk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKDAsIG9wLCAkMS5saW5lKTsKKyAgICAg
ICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRv
cigwLCBvcCwgQDEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgJCQtPnNldFR5cGUodHlw
ZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC00ODEsMTMgKzQxOSwxMyBAQCBmdW5jdGlvbl9jYWxs
CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgY29uc3QgVEZ1bmN0aW9uKiBmbkNhbmRpZGF0
ZTsKICAgICAgICAgICAgIGJvb2wgYnVpbHRJbjsKLSAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0g
Y29udGV4dC0+ZmluZEZ1bmN0aW9uKCQxLmxpbmUsIGZuQ2FsbCwgJmJ1aWx0SW4pOworICAgICAg
ICAgICAgZm5DYW5kaWRhdGUgPSBjb250ZXh0LT5maW5kRnVuY3Rpb24oQDEsIGZuQ2FsbCwgJmJ1
aWx0SW4pOwogICAgICAgICAgICAgaWYgKGZuQ2FuZGlkYXRlKSB7CiAgICAgICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgICAgICAvLyBBIGRlY2xhcmVkIGZ1bmN0aW9uLgogICAgICAgICAgICAg
ICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKGJ1aWx0SW4gJiYgIWZuQ2FuZGlkYXRlLT5nZXRF
eHRlbnNpb24oKS5lbXB0eSgpICYmCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmV4dGVu
c2lvbkVycm9yQ2hlY2soJDEubGluZSwgZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgewor
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKEAxLCBmbkNh
bmRpZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3AgPSBmbkNh
bmRpZGF0ZS0+Z2V0QnVpbHRJbk9wKCk7CkBAIC00OTksNyArNDM3LDcgQEAgZnVuY3Rpb25fY2Fs
bAogICAgICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFRyZWF0IGl0IGxpa2UgYSBidWlsdC1pbiB1bmFyeSBvcGVyYXRvci4KICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRVbmFyeU1hdGgob3AsICQxLmludGVybU5vZGUsIDAsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZFVuYXJ5TWF0aChvcCwgJDEuaW50ZXJtTm9kZSwgQDEsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkJCA9PSAwKSAgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImJ1aWx0IGluIHVu
YXJ5IG9wZXJhdG9yIGZ1bmN0aW9uLiAgVHlwZTogIiA8PCBzdGF0aWNfY2FzdDxUSW50ZXJtVHlw
ZWQqPigkMS5pbnRlcm1Ob2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKTsKQEAgLTUwOCwxMiArNDQ2
LDEyIEBAIGZ1bmN0aW9uX2NhbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZWUVSUk9S
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0
QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBvcCwgJDEubGluZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdh
dGVPcGVyYXRvcigkMS5pbnRlcm1BZ2dyZWdhdGUsIG9wLCBAMSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIGlzIGEgcmVhbCBmdW5jdGlvbiBjYWxsCiAKLSAgICAgICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVn
YXRlLCBFT3BGdW5jdGlvbkNhbGwsICQxLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigkMS5pbnRlcm1BZ2dy
ZWdhdGUsIEVPcEZ1bmN0aW9uQ2FsbCwgQDEpOwogICAgICAgICAgICAgICAgICAgICAkJC0+c2V0
VHlwZShmbkNhbmRpZGF0ZS0+Z2V0UmV0dXJuVHlwZSgpKTsKIAogICAgICAgICAgICAgICAgICAg
ICAvLyB0aGlzIGlzIGhvdyB3ZSBrbm93IHdoZXRoZXIgdGhlIGdpdmVuIGZ1bmN0aW9uIGlzIGEg
YnVpbHRJbiBmdW5jdGlvbiBvciBhIHVzZXIgZGVmaW5lZCBmdW5jdGlvbgpAQCAtNTQwLDcgKzQ3
OCw3IEBAIGZ1bmN0aW9uX2NhbGwKICAgICAgICAgICAgICAgICAvLyBQdXQgb24gYSBkdW1teSBu
b2RlIGZvciBlcnJvciByZWNvdmVyeQogICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVu
aW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRGQ29uc3QoMC4wZik7Ci0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksICQxLmxpbmUpOworICAgICAgICAgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01NTMsNyArNDkx
LDcgQEAgZnVuY3Rpb25fY2FsbF9vcl9tZXRob2QKICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAg
ICAgfCBwb3N0Zml4X2V4cHJlc3Npb24gRE9UIGZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyB7Ci0gICAg
ICAgIGNvbnRleHQtPmVycm9yKCQzLmxpbmUsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkIiwg
IiIpOworICAgICAgICBjb250ZXh0LT5lcnJvcihAMywgIm1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0
ZWQiLCAiIik7CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgJCQgPSAkMzsK
ICAgICB9CkBAIC01NjIsMTEgKzUwMCw5IEBAIGZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9kCiBmdW5j
dGlvbl9jYWxsX2dlbmVyaWMKICAgICA6IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1l
dGVycyBSSUdIVF9QQVJFTiB7CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICQkLmxpbmUgPSAk
Mi5saW5lOwogICAgIH0KICAgICB8IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX25vX3BhcmFtZXRlcnMg
UklHSFRfUEFSRU4gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICAkJC5saW5lID0gJDIubGlu
ZTsKICAgICB9CiAgICAgOwogCkBAIC01OTIsNyArNTI4LDcgQEAgZnVuY3Rpb25fY2FsbF9oZWFk
ZXJfd2l0aF9wYXJhbWV0ZXJzCiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBU
VHlwZSgkMy0+Z2V0VHlwZSgpKSB9OwogICAgICAgICAkMS5mdW5jdGlvbi0+YWRkUGFyYW1ldGVy
KHBhcmFtKTsKICAgICAgICAgJCQuZnVuY3Rpb24gPSAkMS5mdW5jdGlvbjsKLSAgICAgICAgJCQu
aW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVy
bU5vZGUsICQzLCAkMi5saW5lKTsKKyAgICAgICAgJCQuaW50ZXJtTm9kZSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsICQzLCBAMik7CiAgICAgfQog
ICAgIDsKIApAQCAtNjE3LDM5ICs1NTMsMzkgQEAgZnVuY3Rpb25faWRlbnRpZmllcgogICAgICAg
ICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICBpZiAoJDEubWF0cml4KSB7CiAg
ICAgICAgICAgICAgICAgICAgIHN3aXRjaCgkMS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25z
dHJ1Y3RNYXQyOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RNYXQyOyAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2goJDEuc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjMjsgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0g
RU9wQ29uc3RydWN0VmVjMzsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjNDsg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0Rmxv
YXQ7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0
VmVjMjsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3Ry
dWN0VmVjMzsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29u
c3RydWN0VmVjNDsgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAg
ICAgICAgICAgICAgICAgc3dpdGNoKCQxLnNpemUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVj
dEludDsgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJpdmVjMiIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWMyOyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjMyIsICQxLmxp
bmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWMzOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjNCIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0
cnVjdElWZWM0OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3Ry
dWN0SW50OyAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1
Y3RJVmVjMjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVj
dElWZWMzOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0
SVZlYzQ7IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKICAgICAgICAgICAgICAgICBzd2l0Y2goJDEuc2l6
ZSkgewotICAgICAgICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgMjogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWMyIiwgJDEubGluZSk7IG9wID0g
RU9wQ29uc3RydWN0QlZlYzI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAg
RlJBR19WRVJUX09OTFkoImJ2ZWMzIiwgJDEubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgRlJBR19WRVJUX09OTFkoImJ2
ZWM0IiwgJDEubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMTogb3AgPSBFT3BDb25zdHJ1Y3RCb29sOyAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdEJWZWMyOyBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7IGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjNDsgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAob3AgPT0gRU9wTnVsbCkgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJjYW5ub3QgY29uc3RydWN0IHRoaXMg
dHlwZSIsIGdldEJhc2ljU3RyaW5nKCQxLnR5cGUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcihAMSwgImNhbm5vdCBjb25zdHJ1Y3QgdGhpcyB0eXBlIiwgZ2V0QmFzaWNTdHJpbmco
JDEudHlwZSkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICAgICAkMS50eXBlID0gRWJ0RmxvYXQ7CiAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25z
dHJ1Y3RGbG9hdDsKQEAgLTY2MSwxNCArNTk3LDcgQEAgZnVuY3Rpb25faWRlbnRpZmllcgogICAg
ICAgICAkJCA9IGZ1bmN0aW9uOwogICAgIH0KICAgICB8IElERU5USUZJRVIgewotICAgICAgICBp
ZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5zdHJpbmcpKQotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQs
IEVicFVuZGVmaW5lZCk7Ci0gICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0
aW9uKCQxLnN0cmluZywgdHlwZSk7Ci0gICAgICAgICQkID0gZnVuY3Rpb247Ci0gICAgfQotICAg
IHwgRklFTERfU0VMRUNUSU9OIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JD
aGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVk
RXJyb3JDaGVjayhAMSwgKiQxLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAg
VEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oJDEuc3RyaW5nLCB0eXBlKTsKQEAg
LTY4MSwyOCArNjEwLDI4IEBAIHVuYXJ5X2V4cHJlc3Npb24KICAgICAgICAgJCQgPSAkMTsKICAg
ICB9CiAgICAgfCBJTkNfT1AgdW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5sVmFsdWVFcnJvckNoZWNrKCQxLmxpbmUsICIrKyIsICQyKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPmxWYWx1ZUVycm9yQ2hlY2soQDEsICIrKyIsICQyKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlN
YXRoKEVPcFByZUluY3JlbWVudCwgJDIsICQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsK
KyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFByZUlu
Y3JlbWVudCwgJDIsIEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDEubGluZSwgIisrIiwg
JDItPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVy
cm9yKEAxLCAiKysiLCAkMi0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQyOwogICAgICAgICB9CiAgICAgfQog
ICAgIHwgREVDX09QIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4dC0+bFZh
bHVlRXJyb3JDaGVjaygkMS5saW5lLCAiLS0iLCAkMikpCisgICAgICAgIGlmIChjb250ZXh0LT5s
VmFsdWVFcnJvckNoZWNrKEAxLCAiLS0iLCAkMikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChF
T3BQcmVEZWNyZW1lbnQsICQyLCAkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVEZWNyZW1l
bnQsICQyLCBAMSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkg
ewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsICItLSIsICQyLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihA
MSwgIi0tIiwgJDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgfQogICAgIH0KICAgICB8
IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X2V4cHJlc3Npb24gewogICAgICAgICBpZiAoJDEub3AgIT0g
RU9wTnVsbCkgewotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5h
cnlNYXRoKCQxLm9wLCAkMiwgJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCQxLm9wLCAkMiwg
QDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7CiAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXJyb3JPcCA9ICIiOwogICAgICAgICAgICAgICAg
IHN3aXRjaCgkMS5vcCkgewpAQCAtNzEwLDcgKzYzOSw3IEBAIHVuYXJ5X2V4cHJlc3Npb24KICAg
ICAgICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxOb3Q6IGVycm9yT3AgPSAiISI7IGJyZWFrOwog
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDEubGluZSwgZXJyb3JPcCwgJDItPmdl
dENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJv
cihAMSwgZXJyb3JPcCwgJDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAkJCA9ICQyOwogICAgICAgICAg
ICAgfQpAQCAtNzIxLDI4ICs2NTAsMjYgQEAgdW5hcnlfZXhwcmVzc2lvbgogLy8gR3JhbW1hciBO
b3RlOiAgTm8gdHJhZGl0aW9uYWwgc3R5bGUgdHlwZSBjYXN0cy4KIAogdW5hcnlfb3BlcmF0b3IK
LSAgICA6IFBMVVMgIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTnVsbDsgfQotICAg
IHwgREFTSCAgeyAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BOZWdhdGl2ZTsgfQotICAg
IHwgQkFORyAgeyAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BMb2dpY2FsTm90OyB9Cisg
ICAgOiBQTFVTICB7ICQkLm9wID0gRU9wTnVsbDsgfQorICAgIHwgREFTSCAgeyAkJC5vcCA9IEVP
cE5lZ2F0aXZlOyB9CisgICAgfCBCQU5HICB7ICQkLm9wID0gRU9wTG9naWNhbE5vdDsgfQogICAg
IDsKIC8vIEdyYW1tYXIgTm90ZTogIE5vICcqJyBvciAnJicgdW5hcnkgb3BzLiAgUG9pbnRlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQuCiAKIG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24KICAgICA6IHVu
YXJ5X2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBtdWx0aXBsaWNhdGl2ZV9leHByZXNz
aW9uIFNUQVIgdW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIqIiwg
JDIubGluZSk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1h
dGgoRU9wTXVsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BNdWwsICQxLCAk
MywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIioiLCAkMS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIioiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQogICAgIH0KICAgICB8IG11bHRpcGxpY2F0
aXZlX2V4cHJlc3Npb24gU0xBU0ggdW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIEZSQUdfVkVS
VF9PTkxZKCIvIiwgJDIubGluZSk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wRGl2LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChF
T3BEaXYsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQk
ID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIi8i
LCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIi8iLCAkMS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpAQCAtNzUyLDE3ICs2
NzksMTcgQEAgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbgogYWRkaXRpdmVfZXhwcmVzc2lvbgog
ICAgIDogbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGFkZGl0
aXZlX2V4cHJlc3Npb24gUExVUyBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIHsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICQxLCAkMywg
JDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEFkZCwgJDEsICQzLCBAMiwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiKyIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9y
KEAyLCAiKyIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQx
OwogICAgICAgICB9CiAgICAgfQogICAgIHwgYWRkaXRpdmVfZXhwcmVzc2lvbiBEQVNIIG11bHRp
cGxpY2F0aXZlX2V4cHJlc3Npb24gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcFN1YiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wU3ViLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgk
JCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIt
IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICItIiwgJDEtPmdldENvbXBsZXRl
U3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTc3Niw0MyAr
NzAzLDQzIEBAIHNoaWZ0X2V4cHJlc3Npb24KIHJlbGF0aW9uYWxfZXhwcmVzc2lvbgogICAgIDog
c2hpZnRfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IHJlbGF0aW9uYWxfZXhwcmVzc2lv
biBMRUZUX0FOR0xFIHNoaWZ0X2V4cHJlc3Npb24gewotICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuLCAkMSwgJDMsICQyLmxpbmUsIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbiwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFi
bGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5
T3BFcnJvcigkMi5saW5lLCAiPCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAi
PCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9u
ICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCByZWxh
dGlvbmFsX2V4cHJlc3Npb24gUklHSFRfQU5HTEUgc2hpZnRfZXhwcmVzc2lvbiAgewotICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFu
LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgJDEsICQz
LCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAg
ICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiPiIsICQxLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiPiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25b
MV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Npb24gTEVfT1Agc2hpZnRfZXhw
cmVzc2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcExlc3NUaGFuRXF1YWwsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFi
bGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVP
cExlc3NUaGFuRXF1YWwsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAg
ICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIu
bGluZSwgIjw9IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICI8PSIsICQxLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRC
Q29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCByZWxhdGlvbmFsX2V4
cHJlc3Npb24gR0VfT1Agc2hpZnRfZXhwcmVzc2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuRXF1YWwsICQxLCAkMywg
JDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuRXF1YWwsICQxLCAkMywgQDIs
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj49IiwgJDEtPmdldENvbXBsZXRl
U3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmJpbmFyeU9wRXJyb3IoQDIsICI+PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07
CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAg
IH0KICAgICB9CiAgICAgOwpAQCAtODIwLDIzICs3NDcsMjMgQEAgcmVsYXRpb25hbF9leHByZXNz
aW9uCiBlcXVhbGl0eV9leHByZXNzaW9uCiAgICAgOiByZWxhdGlvbmFsX2V4cHJlc3Npb24geyAk
JCA9ICQxOyB9CiAgICAgfCBlcXVhbGl0eV9leHByZXNzaW9uIEVRX09QIHJlbGF0aW9uYWxfZXhw
cmVzc2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcEVxdWFsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BFcXVhbCwg
JDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkg
ewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiPT0iLCAkMS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIj09IiwgJDEtPmdldENvbXBsZXRlU3RyaW5n
KCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3Rh
bnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0g
ICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMi5saW5l
KTsKKyAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAy
KTsKICAgICAgICAgfQogICAgIH0KICAgICB8IGVxdWFsaXR5X2V4cHJlc3Npb24gTkVfT1AgcmVs
YXRpb25hbF9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BOb3RFcXVhbCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1h
dGgoRU9wTm90RXF1YWwsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAg
ICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIu
bGluZSwgIiE9IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIhPSIsICQxLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRC
Q29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgOwpAQCAtODU2LDEzICs3
ODMsMTMgQEAgaW5jbHVzaXZlX29yX2V4cHJlc3Npb24KIGxvZ2ljYWxfYW5kX2V4cHJlc3Npb24K
ICAgICA6IGluY2x1c2l2ZV9vcl9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbG9naWNh
bF9hbmRfZXhwcmVzc2lvbiBBTkRfT1AgaW5jbHVzaXZlX29yX2V4cHJlc3Npb24gewotICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQs
ICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICQxLCAkMywg
QDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIiYmIiwgJDEtPmdldENvbXBs
ZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoQDIsICImJiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25b
MV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgOwpAQCAtODcwLDEzICs3OTcsMTMgQEAgbG9naWNhbF9hbmRfZXhw
cmVzc2lvbgogbG9naWNhbF94b3JfZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF9hbmRfZXhwcmVz
c2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24gWE9SX09QIGxv
Z2ljYWxfYW5kX2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsWG9yLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmlu
YXJ5TWF0aChFT3BMb2dpY2FsWG9yLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVy
cm9yKCQyLmxpbmUsICJeXiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiXl4i
LCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg4
NCwxMyArODExLDEzIEBAIGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24KIGxvZ2ljYWxfb3JfZXhwcmVz
c2lvbgogICAgIDogbG9naWNhbF94b3JfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxv
Z2ljYWxfb3JfZXhwcmVzc2lvbiBPUl9PUCBsb2dpY2FsX3hvcl9leHByZXNzaW9uICB7Ci0gICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9y
LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsT3IsICQxLCAkMywg
QDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgInx8IiwgJDEtPmdldENvbXBs
ZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoQDIsICJ8fCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25b
MV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgOwpAQCAtODk4LDE1ICs4MjUsMTUgQEAgbG9naWNhbF9vcl9leHBy
ZXNzaW9uCiBjb25kaXRpb25hbF9leHByZXNzaW9uCiAgICAgOiBsb2dpY2FsX29yX2V4cHJlc3Np
b24geyAkJCA9ICQxOyB9CiAgICAgfCBsb2dpY2FsX29yX2V4cHJlc3Npb24gUVVFU1RJT04gZXhw
cmVzc2lvbiBDT0xPTiBhc3NpZ25tZW50X2V4cHJlc3Npb24gewotICAgICAgIGlmIChjb250ZXh0
LT5ib29sRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgaWYgKGNvbnRleHQtPmJvb2xF
cnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCQxLCAkMywgJDUs
ICQyLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rp
b24oJDEsICQzLCAkNSwgQDIpOwogICAgICAgICBpZiAoJDMtPmdldFR5cGUoKSAhPSAkNS0+Z2V0
VHlwZSgpKQogICAgICAgICAgICAgJCQgPSAwOwogCiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI6IiwgJDMtPmdldENv
bXBsZXRlU3RyaW5nKCksICQ1LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICI6IiwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCksICQ1
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICQkID0gJDU7CiAgICAgICAgIH0KQEAgLTkxNiwxMSArODQzLDExIEBAIGNv
bmRpdGlvbmFsX2V4cHJlc3Npb24KIGFzc2lnbm1lbnRfZXhwcmVzc2lvbgogICAgIDogY29uZGl0
aW9uYWxfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IHVuYXJ5X2V4cHJlc3Npb24gYXNz
aWdubWVudF9vcGVyYXRvciBhc3NpZ25tZW50X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29u
dGV4dC0+bFZhbHVlRXJyb3JDaGVjaygkMi5saW5lLCAiYXNzaWduIiwgJDEpKQorICAgICAgICBp
ZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjayhAMiwgImFzc2lnbiIsICQxKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQXNzaWduKCQyLm9wLCAkMSwgJDMsICQyLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRBc3NpZ24oJDIub3AsICQxLCAkMywgQDIpOwogICAgICAgICBp
ZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YXNzaWduRXJyb3IoJDIubGluZSwg
ImFzc2lnbiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5hc3NpZ25FcnJvcihAMiwgImFzc2lnbiIsICQxLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CkBA
IC05MjgsMTEgKzg1NSwxMSBAQCBhc3NpZ25tZW50X2V4cHJlc3Npb24KICAgICA7CiAKIGFzc2ln
bm1lbnRfb3BlcmF0b3IKLSAgICA6IEVRVUFMICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wQXNzaWduOyB9Ci0g
ICAgfCBNVUxfQVNTSUdOICAgeyBGUkFHX1ZFUlRfT05MWSgiKj0iLCAkMS5saW5lKTsgICAgICQk
LmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcE11bEFzc2lnbjsgfQotICAgIHwgRElWX0FTU0lH
TiAgIHsgRlJBR19WRVJUX09OTFkoIi89IiwgJDEubGluZSk7ICAgICAkJC5saW5lID0gJDEubGlu
ZTsgJCQub3AgPSBFT3BEaXZBc3NpZ247IH0KLSAgICB8IEFERF9BU1NJR04gICB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9w
QWRkQXNzaWduOyB9Ci0gICAgfCBTVUJfQVNTSUdOICAgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcFN1YkFzc2lnbjsgfQor
ICAgIDogRVFVQUwgICAgICAgIHsgJCQub3AgPSBFT3BBc3NpZ247IH0KKyAgICB8IE1VTF9BU1NJ
R04gICB7ICQkLm9wID0gRU9wTXVsQXNzaWduOyB9CisgICAgfCBESVZfQVNTSUdOICAgeyAkJC5v
cCA9IEVPcERpdkFzc2lnbjsgfQorICAgIHwgQUREX0FTU0lHTiAgIHsgJCQub3AgPSBFT3BBZGRB
c3NpZ247IH0KKyAgICB8IFNVQl9BU1NJR04gICB7ICQkLm9wID0gRU9wU3ViQXNzaWduOyB9CiAg
ICAgOwogCiBleHByZXNzaW9uCkBAIC05NDAsOSArODY3LDkgQEAgZXhwcmVzc2lvbgogICAgICAg
ICAkJCA9ICQxOwogICAgIH0KICAgICB8IGV4cHJlc3Npb24gQ09NTUEgYXNzaWdubWVudF9leHBy
ZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29tbWEoJDEs
ICQzLCAkMi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29t
bWEoJDEsICQzLCBAMik7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIsIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCks
ICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoQDIsICIsIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQk
ID0gJDM7CiAgICAgICAgIH0KQEAgLTk3MCwxMyArODk3LDEzIEBAIGRlY2xhcmF0aW9uCiAgICAg
ICAgICAgICBjb25zdCBUUGFyYW1ldGVyICZwYXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOwog
ICAgICAgICAgICAgaWYgKHBhcmFtLm5hbWUgIT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZShwYXJhbS5uYW1lLCAq
cGFyYW0udHlwZSk7CisgICAgICAgICAgICAgICAgVFZhcmlhYmxlIHZhcmlhYmxlKHBhcmFtLm5h
bWUsICpwYXJhbS50eXBlKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBwcm90
b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksIHZh
cmlhYmxlLT5nZXROYW1lKCksIHZhcmlhYmxlLT5nZXRUeXBlKCksICQxLmxpbmUpLCAkMS5saW5l
KTsKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jv
d0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFy
aWFibGUuZ2V0VW5pcXVlSWQoKSwgdmFyaWFibGUuZ2V0TmFtZSgpLCB2YXJpYWJsZS5nZXRUeXBl
KCksIEAxKSwgQDEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5n
cm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAiIiwgKnBhcmFtLnR5cGUsICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICBw
cm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUs
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCBAMSks
IEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTk5MiwxMSArOTE5
LDExIEBAIGRlY2xhcmF0aW9uCiAgICAgfQogICAgIHwgUFJFQ0lTSU9OIHByZWNpc2lvbl9xdWFs
aWZpZXIgdHlwZV9zcGVjaWZpZXJfbm9fcHJlYyBTRU1JQ09MT04gewogICAgICAgICBpZiAoKCQy
ID09IEVicEhpZ2gpICYmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX0ZSQUdNRU5UX1NIQURF
UikgJiYgIWNvbnRleHQtPmZyYWdtZW50UHJlY2lzaW9uSGlnaCkgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoJDEubGluZSwgInByZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGZyYWdt
ZW50IHNoYWRlciIsICJoaWdocCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJw
cmVjaXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
IWNvbnRleHQtPnN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oICQzLCAkMiApKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50
IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmluZygkMy50eXBl
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImlsbGVnYWwgdHlwZSBhcmd1bWVu
dCBmb3IgZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlw
ZSkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAg
ICQkID0gMDsKQEAgLTEwMTYsMjQgKzk0Myw0MSBAQCBmdW5jdGlvbl9wcm90b3R5cGUKICAgICAg
ICAgVEZ1bmN0aW9uKiBwcmV2RGVjID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uKj4oY29udGV4dC0+
c3ltYm9sVGFibGUuZmluZCgkMS0+Z2V0TWFuZ2xlZE5hbWUoKSkpOwogICAgICAgICBpZiAocHJl
dkRlYykgewogICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdldFJldHVyblR5cGUoKSAhPSAkMS0+
Z2V0UmV0dXJuVHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGlu
ZSwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSByZXR1cm4gdHlwZSIs
ICQxLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoQDIsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNh
bWUgcmV0dXJuIHR5cGUiLCAkMS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCkpOwog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFyYW1Db3VudCgpOyAr
K2kpIHsKICAgICAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0
UXVhbGlmaWVyKCkgIT0gJDEtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllcigpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJvdmVybG9hZGVkIGZ1
bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAkMS0+Z2V0
UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcihAMiwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUg
c2FtZSBwYXJhbWV0ZXIgcXVhbGlmaWVycyIsICQxLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFs
aWZpZXJTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAv
LworICAgICAgICAvLyBDaGVjayBmb3IgcHJldmlvdXNseSBkZWNsYXJlZCB2YXJpYWJsZXMgdXNp
bmcgdGhlIHNhbWUgbmFtZS4KKyAgICAgICAgLy8KKyAgICAgICAgVFN5bWJvbCAqcHJldlN5bSA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmQoJDEtPmdldE5hbWUoKSk7CisgICAgICAgIGlmIChw
cmV2U3ltKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXByZXZTeW0tPmlzRnVuY3Rpb24o
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInJl
ZGVmaW5pdGlvbiIsICQxLT5nZXROYW1lKCkuY19zdHIoKSwgImZ1bmN0aW9uIik7CisgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgLy8gSW5zZXJ0IHRoZSB1bm1hbmds
ZWQgbmFtZSB0byBkZXRlY3QgcG90ZW50aWFsIGZ1dHVyZSByZWRlZmluaXRpb24gYXMgYSB2YXJp
YWJsZS4KKyAgICAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLmdldE91dGVyTGV2ZWwoKS0+
aW5zZXJ0KCQxLT5nZXROYW1lKCksICokMSk7CisgICAgICAgIH0KKworICAgICAgICAvLwogICAg
ICAgICAvLyBJZiB0aGlzIGlzIGEgcmVkZWNsYXJhdGlvbiwgaXQgY291bGQgYWxzbyBiZSBhIGRl
ZmluaXRpb24sCiAgICAgICAgIC8vIGluIHdoaWNoIGNhc2UsIHdlIHdhbnQgdG8gdXNlIHRoZSB2
YXJpYWJsZSBuYW1lcyBmcm9tIHRoaXMgb25lLCBhbmQgbm90IHRoZSBvbmUgdGhhdCdzCiAgICAg
ICAgIC8vIGJlaW5nIHJlZGVjbGFyZWQuICBTbywgcGFzcyBiYWNrIHVwIHRoaXMgZGVjbGFyYXRp
b24sIG5vdCB0aGUgb25lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgIC8vCiAgICAgICAg
ICQkLmZ1bmN0aW9uID0gJDE7Ci0gICAgICAgICQkLmxpbmUgPSAkMi5saW5lOwogCiAgICAgICAg
IC8vIFdlJ3JlIGF0IHRoZSBpbm5lciBzY29wZSBsZXZlbCBvZiB0aGUgZnVuY3Rpb24ncyBhcmd1
bWVudHMgYW5kIGJvZHkgc3RhdGVtZW50LgogICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9uIHBy
b3RvdHlwZSB0byB0aGUgc3Vycm91bmRpbmcgc2NvcGUgaW5zdGVhZC4KQEAgLTEwNjksNyArMTAx
Myw3IEBAIGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMKICAgICAgICAgICAgIC8vCiAg
ICAgICAgICAgICAvLyBUaGlzIHBhcmFtZXRlciA+IGZpcnN0IGlzIHZvaWQKICAgICAgICAgICAg
IC8vCi0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGFuIGFy
Z3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7CisgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcihAMiwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3Ig
Jyh2b2lkKSciLCAidm9pZCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgZGVsZXRlICQzLnBhcmFtLnR5cGU7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMDgz
LDExICsxMDI3LDExIEBAIGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMKIGZ1bmN0aW9u
X2hlYWRlcgogICAgIDogZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBMRUZUX1BBUkVO
IHsKICAgICAgICAgaWYgKCQxLnF1YWxpZmllciAhPSBFdnFHbG9iYWwgJiYgJDEucXVhbGlmaWVy
ICE9IEV2cVRlbXBvcmFyeSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwg
Im5vIHF1YWxpZmllcnMgYWxsb3dlZCBmb3IgZnVuY3Rpb24gcmV0dXJuIiwgZ2V0UXVhbGlmaWVy
U3RyaW5nKCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJu
byBxdWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0
cmluZygkMS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQogICAgICAgICAvLyBtYWtlIHN1cmUgYSBzYW1wbGVyIGlzIG5vdCBpbnZvbHZlZCBh
cyB3ZWxsLi4uCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNr
KCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAg
ICAvLyBBZGQgdGhlIGZ1bmN0aW9uIGFzIGEgcHJvdG90eXBlIGFmdGVyIHBhcnNpbmcgaXQgKHdl
IGRvIG5vdCBzdXBwb3J0IHJlY3Vyc2lvbikKQEAgLTExMDIsMzMgKzEwNDYsMzEgQEAgZnVuY3Rp
b25faGVhZGVyCiAKIHBhcmFtZXRlcl9kZWNsYXJhdG9yCiAgICAgLy8gVHlwZSArIG5hbWUKLSAg
ICA6IHR5cGVfc3BlY2lmaWVyIElERU5USUZJRVIgeworICAgIDogdHlwZV9zcGVjaWZpZXIgaWRl
bnRpZmllciB7CiAgICAgICAgIGlmICgkMS50eXBlID09IEVidFZvaWQpIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsICQy
LnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgImlsbGVn
YWwgdXNlIG9mIHR5cGUgJ3ZvaWQnIiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICBpZiAoY29udGV4dC0+cmVz
ZXJ2ZWRFcnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4
dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHskMi5zdHJpbmcsIG5l
dyBUVHlwZSgkMSl9OwotICAgICAgICAkJC5saW5lID0gJDIubGluZTsKICAgICAgICAgJCQucGFy
YW0gPSBwYXJhbTsKICAgICB9Ci0gICAgfCB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIExFRlRf
QlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgeworICAgIHwgdHlwZV9z
cGVjaWZpZXIgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdI
VF9CUkFDS0VUIHsKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gbWFrZSBhbiBhcnJheSBv
dXQgb2YgdGhpcyB0eXBlCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNr
KCQzLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2so
QDMsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAo
Y29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcpKQorICAgICAg
ICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDMubGluZSwgJDQsIHNpemUpKQorICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhAMywgJDQsIHNpemUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAkMS5zZXRBcnJheSh0cnVlLCBz
aXplKTsKIAogICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZSgkMSk7CiAgICAgICAgIFRQ
YXJhbWV0ZXIgcGFyYW0gPSB7ICQyLnN0cmluZywgdHlwZSB9OwotICAgICAgICAkJC5saW5lID0g
JDIubGluZTsKICAgICAgICAgJCQucGFyYW0gPSBwYXJhbTsKICAgICB9CiAgICAgOwpAQCAtMTE0
NCwxNCArMTA4NiwxNCBAQCBwYXJhbWV0ZXJfZGVjbGFyYXRpb24KICAgICAvLwogICAgIDogdHlw
ZV9xdWFsaWZpZXIgcGFyYW1ldGVyX3F1YWxpZmllciBwYXJhbWV0ZXJfZGVjbGFyYXRvciB7CiAg
ICAgICAgICQkID0gJDM7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soJDMu
bGluZSwgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5wYXJhbUVycm9yQ2hlY2soQDMsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFtLnR5cGUp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgIH0KICAgICB8IHBhcmFtZXRl
cl9xdWFsaWZpZXIgcGFyYW1ldGVyX2RlY2xhcmF0b3IgewogICAgICAgICAkJCA9ICQyOwotICAg
ICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soJDIubGluZSwgJDEs
ICokMi5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJF
cnJvckNoZWNrKEAyLCAkMSwgKiQyLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCQyLmxpbmUs
IEV2cVRlbXBvcmFyeSwgJDEsICQkLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+
cGFyYW1FcnJvckNoZWNrKEAyLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9CiAgICAgLy8KQEAgLTExNTksMTQg
KzExMDEsMTQgQEAgcGFyYW1ldGVyX2RlY2xhcmF0aW9uCiAgICAgLy8KICAgICB8IHR5cGVfcXVh
bGlmaWVyIHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX3R5cGVfc3BlY2lmaWVyIHsKICAg
ICAgICAgJCQgPSAkMzsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygkMy5s
aW5lLCAkMS5xdWFsaWZpZXIsICQyLCAkJC5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtRXJyb3JDaGVjayhAMywgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0udHlwZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQogICAgIHwgcGFyYW1ldGVy
X3F1YWxpZmllciBwYXJhbWV0ZXJfdHlwZV9zcGVjaWZpZXIgewogICAgICAgICAkJCA9ICQyOwot
ICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soJDIubGluZSwg
JDEsICokMi5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBs
ZXJFcnJvckNoZWNrKEAyLCAkMSwgKiQyLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCQyLmxp
bmUsIEV2cVRlbXBvcmFyeSwgJDEsICQkLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4
dC0+cGFyYW1FcnJvckNoZWNrKEAyLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9CiAgICAgOwpAQCAtMTE5Nyw4
MyArMTEzOSw4MyBAQCBpbml0X2RlY2xhcmF0b3JfbGlzdAogICAgIDogc2luZ2xlX2RlY2xhcmF0
aW9uIHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBpbml0X2RlY2xhcmF0b3JfbGlz
dCBDT01NQSBJREVOVElGSUVSIHsKKyAgICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENPTU1BIGlk
ZW50aWZpZXIgewogICAgICAgICBpZiAoJDEudHlwZS50eXBlID09IEVidEludmFyaWFudCAmJiAh
JDMuc3ltYm9sKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMy5saW5l
LCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICQzLnN0cmlu
Zy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMywgInVuZGVjbGFyZWQg
aWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMy5zdHJpbmctPmNfc3RyKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAKLSAgICAgICAgVElu
dGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAq
JDMuc3RyaW5nLCBUVHlwZSgkMS50eXBlKSwgJDMubGluZSk7Ci0gICAgICAgICQkLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5v
ZGUsIHN5bWJvbCwgJDMubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQzLnN0cmluZywgVFR5cGUoJDEudHlw
ZSksIEAzKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgc3ltYm9sLCBAMyk7CiAgICAgICAgIAot
ICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMy5saW5lLCAk
JC50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
QDMsICQkLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAg
IGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcs
ICQkLnR5cGUsIGZhbHNlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9y
Q2hlY2soQDMsICokMy5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQk
LnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNr
KEAzLCAqJDMuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChzeW1ib2wgJiYgdmFyaWFibGUpCiAgICAgICAgICAg
ICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKICAgICB9Ci0gICAgfCBp
bml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBSSUdIVF9C
UkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
JDMubGluZSwgJDEudHlwZSkpCisgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBpZGVu
dGlmaWVyIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKKyAgICAgICAgaWYgKGNvbnRleHQt
PnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJv
ckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQorICAgICAgICBpZiAo
Y29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywgJDEudHlwZSwg
dHJ1ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgJCQgPSAk
MTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkNC5saW5lLCAk
MS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDQubGluZSwgJDEu
dHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEA0LCAkMS50
eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDQsICQxLnR5cGUpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICQxLnR5cGUuc2V0QXJyYXkodHJ1ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUqIHZhcmlh
YmxlOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygkNC5saW5lLCAq
JDMuc3RyaW5nLCAkMS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlFcnJvckNoZWNrKEA0LCAqJDMuc3RyaW5nLCAkMS50eXBlLCB2YXJpYWJsZSkpCiAgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgfQotICAgIHwg
aW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3Rh
bnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVj
dFF1YWxpZmllckVycm9yQ2hlY2soJDMubGluZSwgJDEudHlwZSkpCisgICAgfCBpbml0X2RlY2xh
cmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNz
aW9uIFJJR0hUX0JSQUNLRVQgeworICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVy
RXJyb3JDaGVjayhAMywgJDEudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soJDMubGluZSwg
KiQzLnN0cmluZywgJDEudHlwZSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0
Q29uc3RFcnJvckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAkMS50eXBlLCB0cnVlKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAkJCA9ICQxOwogCi0gICAgICAgIGlm
IChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQ0LmxpbmUsICQxLnR5cGUpIHx8IGNvbnRl
eHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygkNC5saW5lLCAkMS50eXBlKSkKKyAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDQsICQxLnR5cGUpIHx8IGNvbnRleHQt
PmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhANCwgJDEudHlwZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0g
ICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygkNC5saW5lLCAkNSwg
c2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhANCwg
JDUsIHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICQxLnR5cGUuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUq
IHZhcmlhYmxlID0gMDsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2so
JDQubGluZSwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhANCwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFi
bGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIFRU
eXBlIHR5cGUgPSBUVHlwZSgkMS50eXBlKTsKICAgICAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXpl
KHNpemUpOwotICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpIDogMCwgKiQzLnN0
cmluZywgdHlwZSwgJDMubGluZSksICQzLmxpbmUpOworICAgICAgICAgICAgJCQuaW50ZXJtQWdn
cmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9k
ZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5n
ZXRVbmlxdWVJZCgpIDogMCwgKiQzLnN0cmluZywgdHlwZSwgQDMpLCBAMyk7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBJREVOVElGSUVSIEVRVUFM
IGluaXRpYWxpemVyIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soJDMubGluZSwgJDEudHlwZSkpCisgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01N
QSBpZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVyIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0
cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQkID0gJDE7CiAKICAgICAgICAgVEludGVybU5vZGUq
IGludGVybU5vZGU7Ci0gICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCQz
LmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsICQ1LCBpbnRlcm1Ob2RlKSkgeworICAgICAgICBp
ZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcihAMywgKiQzLnN0cmluZywgJDEudHlwZSwg
JDUsIGludGVybU5vZGUpKSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gYnVpbGQg
dGhlIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICAgICAgICAgLy8KICAgICAgICAg
ICAgIGlmIChpbnRlcm1Ob2RlKQotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCBpbnRlcm1Ob2RlLCAk
NC5saW5lKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgaW50ZXJtTm9kZSwgQDQpOwogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9ICQxLmludGVy
bUFnZ3JlZ2F0ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTEyODYsNzkgKzEyMjgsNzkgQEAgaW5p
dF9kZWNsYXJhdG9yX2xpc3QKIHNpbmdsZV9kZWNsYXJhdGlvbgogICAgIDogZnVsbHlfc3BlY2lm
aWVkX3R5cGUgewogICAgICAgICAkJC50eXBlID0gJDE7Ci0gICAgICAgICQkLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsIFRUeXBlKCQxKSwgJDEubGluZSksICQxLmxpbmUpOwor
ICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFn
Z3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgkMSks
IEAxKSwgQDEpOwogICAgIH0KLSAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIElERU5USUZJRVIg
ewotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIFRUeXBlKCQxKSwgJDIubGluZSk7Ci0gICAgICAgICQk
LmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5
bWJvbCwgJDIubGluZSk7CisgICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIHsK
KyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkMSksIEAyKTsKKyAgICAgICAgJCQuaW50ZXJt
QWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBA
Mik7CiAgICAgICAgIAotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JD
aGVjaygkMi5saW5lLCAkJC50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soQDIsICQkLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCQyLmxp
bmUsICokMi5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5v
bkluaXRDb25zdEVycm9yQ2hlY2soQDIsICokMi5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
JCQudHlwZSA9ICQxOwogCiAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAg
ICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZywgJCQu
dHlwZSwgdmFyaWFibGUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2so
QDIsICokMi5zdHJpbmcsICQkLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgICAg
IHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgIH0KLSAgICB8IGZ1
bGx5X3NwZWNpZmllZF90eXBlIElERU5USUZJRVIgTEVGVF9CUkFDS0VUIFJJR0hUX0JSQUNLRVQg
ewotICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAidW5zaXplZCBhcnJheSBkZWNsYXJh
dGlvbnMgbm90IHN1cHBvcnRlZCIsICQyLnN0cmluZy0+Y19zdHIoKSk7CisgICAgfCBmdWxseV9z
cGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKKyAg
ICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJ1bnNpemVkIGFycmF5IGRlY2xhcmF0aW9ucyBub3Qg
c3VwcG9ydGVkIiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEpLCAkMi5saW5lKTsKLSAgICAg
ICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdh
dGUoc3ltYm9sLCAkMi5saW5lKTsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkMSksIEAy
KTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1h
a2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgICQkLnR5cGUgPSAkMTsKICAgICB9Ci0g
ICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBjb25zdGFu
dF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgeworICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUg
aWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VU
IHsKICAgICAgICAgVFR5cGUgdHlwZSA9IFRUeXBlKCQxKTsKICAgICAgICAgaW50IHNpemU7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQyLmxpbmUsICQ0LCBzaXpl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDIsICQ0LCBzaXpl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgdHlwZS5zZXRBcnJh
eVNpemUoc2l6ZSk7Ci0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgdHlwZSwgJDIubGluZSk7Ci0gICAg
ICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVn
YXRlKHN5bWJvbCwgJDIubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgdHlwZSwgQDIpOwor
ICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFn
Z3JlZ2F0ZShzeW1ib2wsIEAyKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVj
aygkMi5saW5lLCAqJDIuc3RyaW5nLCAkMSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5u
b25Jbml0Q29uc3RFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nLCAkMSwgdHJ1ZSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgJCQudHlwZSA9ICQxOwogCi0gICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQzLmxpbmUsICQxKSB8fCBjb250
ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDMubGluZSwgJDEpKQorICAgICAgICBpZiAo
Y29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjayhAMywgJDEpIHx8IGNvbnRleHQtPmFycmF5UXVh
bGlmaWVyRXJyb3JDaGVjayhAMywgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDMubGluZSwgJDQsIHNpemUpKQorICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQ0LCBzaXplKSkKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgICAgICQxLnNldEFy
cmF5KHRydWUsIHNpemUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0g
ICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCQzLmxpbmUsICokMi5zdHJp
bmcsICQxLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNo
ZWNrKEAzLCAqJDIuc3RyaW5nLCAkMSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAgICAg
ICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIEVRVUFM
IGluaXRpYWxpemVyIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soJDIubGluZSwgJDEpKQorICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmll
ciBFUVVBTCBpbml0aWFsaXplciB7CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZp
ZXJFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAK
ICAgICAgICAgJCQudHlwZSA9ICQxOwogCiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2Rl
OwotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMi5saW5lLCAqJDIu
c3RyaW5nLCAkMSwgJDQsIGludGVybU5vZGUpKSB7CisgICAgICAgIGlmICghY29udGV4dC0+ZXhl
Y3V0ZUluaXRpYWxpemVyKEAyLCAqJDIuc3RyaW5nLCAkMSwgJDQsIGludGVybU5vZGUpKSB7CiAg
ICAgICAgIC8vCiAgICAgICAgIC8vIEJ1aWxkIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbgog
ICAgICAgICAvLwogICAgICAgICAgICAgaWYoaW50ZXJtTm9kZSkKLSAgICAgICAgICAgICAgICAk
JC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShp
bnRlcm1Ob2RlLCAkMy5saW5lKTsKKyAgICAgICAgICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCBAMyk7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsK
ICAgICAgICAgfSBlbHNlIHsKQEAgLTEzNjcsMTE4ICsxMzA5LDUwIEBAIHNpbmdsZV9kZWNsYXJh
dGlvbgogICAgICAgICB9CiAgICAgfQogICAgIHwgSU5WQVJJQU5UIElERU5USUZJRVIgewotICAg
ICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgJDEubGluZSk7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgIFZF
UlRFWF9PTkxZKCJpbnZhcmlhbnQgZGVjbGFyYXRpb24iLCBAMSk7CisgICAgICAgIGlmIChjb250
ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAkJC50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50
VmFyeWluZ091dCwgJDIubGluZSk7CisgICAgICAgICQkLnR5cGUuc2V0QmFzaWMoRWJ0SW52YXJp
YW50LCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCBAMik7CiAgICAgICAgIGlmICghJDIuc3ltYm9s
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAidW5kZWNs
YXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICQyLnN0cmluZy0+Y19zdHIo
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInVuZGVjbGFyZWQgaWRlbnRpZmll
ciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAkJC5pbnRl
cm1BZ2dyZWdhdGUgPSAwOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAg
ICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkJC50eXBlKSwgJDIubGluZSk7Ci0gICAgICAg
ICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3Jl
Z2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9s
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgk
JC50eXBlKSwgQDIpOworICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgIH0KICAgICB9
Ci0KLS8vCi0vLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBsYW5ndWFnZXMuCi0v
LwotLy8gICAgfCBidWZmZXJfc3BlY2lmaWVyIHsKLS8vICAgICAgICAkJC5pbnRlcm1BZ2dyZWdh
dGUgPSAwOwotLy8gICAgfQogICAgIDsKIAotLy8gR3JhbW1hciBOb3RlOiAgTm8gJ2VudW0nLCBv
ciAndHlwZWRlZicuCi0KLS8vCi0vLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBs
YW5ndWFnZXMuCi0vLwotLy8ldHlwZSA8aW50ZXJtPiBidWZmZXJfZGVjbGFyYXRpb24KLS8vJXR5
cGUgPGludGVybS50eXBlPiBidWZmZXJfc3BlY2lmaWVyIGlucHV0X29yX291dHB1dCBidWZmZXJf
ZGVjbGFyYXRpb25fbGlzdAotLy9idWZmZXJfc3BlY2lmaWVyCi0vLyAgICA6IGlucHV0X29yX291
dHB1dCBMRUZUX0JSQUNFIGJ1ZmZlcl9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKLS8v
ICAgIH0KLS8vICAgIDsKLS8vCi0vL2lucHV0X29yX291dHB1dAotLy8gICAgOiBJTlBVVCB7Ci0v
LyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soJDEubGluZSwgY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW5wdXQiKSkKLS8vICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotLy8gICAgICAgIFVOUEFDS19PTkxZKCJpbnB1dCIsICQxLmxpbmUp
OwotLy8gICAgICAgICQkLnF1YWxpZmllciA9IEV2cUlucHV0OwotLy8gICAgfQotLy8gICAgfCBP
VVRQVVQgewotLy8gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUs
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgIm91dHB1dCIpKQotLy8gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgUEFDS19PTkxZKCJvdXRwdXQi
LCAkMS5saW5lKTsKLS8vICAgICAgICAkJC5xdWFsaWZpZXIgPSBFdnFPdXRwdXQ7Ci0vLyAgICB9
Ci0vLyAgICA7Ci0KLS8vCi0vLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBsYW5n
dWFnZXMuCi0vLwotLy9idWZmZXJfZGVjbGFyYXRpb25fbGlzdAotLy8gICAgOiBidWZmZXJfZGVj
bGFyYXRpb24gewotLy8gICAgfQotLy8gICAgfCBidWZmZXJfZGVjbGFyYXRpb25fbGlzdCBidWZm
ZXJfZGVjbGFyYXRpb24gewotLy8gICAgfQotLy8gICAgOwotCi0vLwotLy8gSW5wdXQvb3V0cHV0
IHNlbWFudGljczoKLS8vICAgZmxvYXQgbXVzdCBiZSAxNiBvciAzMiBiaXRzCi0vLyAgIGZsb2F0
IGFsaWdubWVudCByZXN0cmljdGlvbnM/Ci0vLyAgIGNoZWNrIGZvciBvbmx5IG9uZSBpbnB1dCBh
bmQgb25seSBvbmUgb3V0cHV0Ci0vLyAgIHN1bSBvZiBiaXRmaWVsZHMgaGFzIHRvIGJlIG11bHRp
cGxlIG9mIDMyCi0vLwotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUgcGFjay91bnBhY2sg
bGFuZ3VhZ2VzLgotLy8KLS8vYnVmZmVyX2RlY2xhcmF0aW9uCi0vLyAgICA6IHR5cGVfc3BlY2lm
aWVyIElERU5USUZJRVIgQ09MT04gY29uc3RhbnRfZXhwcmVzc2lvbiBTRU1JQ09MT04gewotLy8g
ICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmlu
ZywgY29udGV4dCkpCi0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLS8vICAgICAg
ICAkJC52YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJDIuc3RyaW5nLCAkMSk7Ci0vLyAgICAgICAg
aWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCokJC52YXJpYWJsZSkpIHsKLS8vICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInJlZGVmaW5pdGlvbiIsICQkLnZhcmlh
YmxlLT5nZXROYW1lKCkuY19zdHIoKSk7Ci0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLS8vICAgICAgICAgICAgLy8gZG9uJ3QgaGF2ZSB0byBkZWxldGUgJCQudmFyaWFibGUsIHRo
ZSBwb29sIHBvcCB3aWxsIHRha2UgY2FyZSBvZiBpdAotLy8gICAgICAgIH0KLS8vICAgIH0KLS8v
ICAgIDsKLQogZnVsbHlfc3BlY2lmaWVkX3R5cGUKICAgICA6IHR5cGVfc3BlY2lmaWVyIHsKICAg
ICAgICAgJCQgPSAkMTsKIAogICAgICAgICBpZiAoJDEuYXJyYXkpIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCQxLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5
Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmly
c3QtY2xhc3MgYXJyYXkiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICQxLnNldEFycmF5KGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KICAgICB8IHR5cGVf
cXVhbGlmaWVyIHR5cGVfc3BlY2lmaWVyICB7CiAgICAgICAgIGlmICgkMi5hcnJheSkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3Qt
Y2xhc3MgYXJyYXkiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAibm90IHN1cHBv
cnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgJDIuc2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKCQxLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgJiYKICAgICAgICAgICAgICgkMi50
eXBlID09IEVidEJvb2wgfHwgJDIudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVy
U3RyaW5nKCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJj
YW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KCgkMS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ0luIHx8ICQxLnF1YWxpZmllciA9PSBFdnFWYXJ5
aW5nT3V0KSAmJgogICAgICAgICAgICAgKCQyLnR5cGUgPT0gRWJ0Qm9vbCB8fCAkMi50eXBlID09
IEVidEludCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJjYW5ub3Qg
YmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1
YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQyOwpAQCAtMTQ4OCwzNCArMTM2MiwzNCBA
QCBmdWxseV9zcGVjaWZpZWRfdHlwZQogCiB0eXBlX3F1YWxpZmllcgogICAgIDogQ09OU1RfUVVB
TCB7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCAkMS5saW5lKTsKKyAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQ29uc3QsIEAxKTsKICAgICB9CiAgICAgfCBB
VFRSSUJVVEUgewotICAgICAgICBWRVJURVhfT05MWSgiYXR0cmlidXRlIiwgJDEubGluZSk7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQorICAgICAgICBWRVJURVhf
T05MWSgiYXR0cmlidXRlIiwgQDEpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JD
aGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0cmlidXRl
IikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkLnNldEJhc2lj
KEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVi
dFZvaWQsIEV2cUF0dHJpYnV0ZSwgQDEpOwogICAgIH0KICAgICB8IFZBUllJTkcgewotICAgICAg
ICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCksICJ2YXJ5aW5nIikpCisgICAgICAgIGlmIChjb250ZXh0LT5n
bG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCks
ICJ2YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlm
IChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAk
JC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0LCAkMS5saW5lKTsKKyAgICAgICAgICAg
ICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsIEAxKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCAkMS5saW5lKTsK
KyAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgQDEpOwogICAg
IH0KICAgICB8IElOVkFSSUFOVCBWQVJZSU5HIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2Jh
bEVycm9yQ2hlY2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
LCAiaW52YXJpYW50IHZhcnlpbmciKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9y
Q2hlY2soQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFu
dCB2YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlm
IChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAk
JC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAkMS5saW5lKTsKKyAg
ICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsIEAx
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52
YXJpYW50VmFyeWluZ0luLCAkMS5saW5lKTsKKyAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZv
aWQsIEV2cUludmFyaWFudFZhcnlpbmdJbiwgQDEpOwogICAgIH0KICAgICB8IFVOSUZPUk0gewot
ICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ1bmlmb3JtIikpCisgICAgICAgIGlmIChjb250
ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCksICJ1bmlmb3JtIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVVuaWZvcm0sICQxLmxpbmUpOworICAgICAgICAk
JC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlmb3JtLCBAMSk7CiAgICAgfQogICAgIDsKIApAQCAt
MTUyNSw3ICsxMzk5LDcgQEAgdHlwZV9zcGVjaWZpZXIKIAogICAgICAgICBpZiAoJCQucHJlY2lz
aW9uID09IEVicFVuZGVmaW5lZCkgewogICAgICAgICAgICAgJCQucHJlY2lzaW9uID0gY29udGV4
dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigkMS50eXBlKTsKLSAgICAgICAgICAg
IGlmIChjb250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKCQxLmxpbmUsICQkLnByZWNpc2lvbiwg
JDEudHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNr
KEAxLCAkJC5wcmVjaXNpb24sICQxLnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNTU1LDExICsxNDI5LDEx
IEBAIHR5cGVfc3BlY2lmaWVyX25vX3ByZWMKICAgICB8IHR5cGVfc3BlY2lmaWVyX25vbmFycmF5
IExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewogICAgICAg
ICAkJCA9ICQxOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQy
LmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDIs
ICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVF
cnJvckNoZWNrKCQyLmxpbmUsICQzLCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVNpemVFcnJvckNoZWNrKEAyLCAkMywgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAg
ICAgIH0KQEAgLTE1NjksMTE4ICsxNDQzLDEwNSBAQCB0eXBlX3NwZWNpZmllcl9ub19wcmVjCiB0
eXBlX3NwZWNpZmllcl9ub25hcnJheQogICAgIDogVk9JRF9UWVBFIHsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBxdWFsLCAk
MS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgQDEpOwogICAgIH0K
ICAgICB8IEZMT0FUX1RZUEUgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0g
ICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBJTlRfVFlQRSB7CiAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCBA
MSk7CiAgICAgfQogICAgIHwgQk9PTF9UWVBFIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVt
cG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAkMS5saW5lKTsKKyAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgIH0KLS8vICAgIHwgVU5T
SUdORUQgSU5UX1RZUEUgewotLy8gICAgICAgIFBBQ0tfVU5QQUNLX09OTFkoInVuc2lnbmVkIiwg
JDEubGluZSk7Ci0vLyAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotLy8gICAgICAg
ICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7Ci0vLyAgICB9CiAgICAgfCBWRUMy
IHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNp
YyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0
LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAgfCBW
RUMzIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRC
YXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZs
b2F0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICB9CiAgICAg
fCBWRUM0IHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVi
dEZsb2F0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICB9CiAg
ICAgfCBCVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAg
JCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2lj
KEVidEJvb2wsIHF1YWwsIEAxKTsKICAgICAgICAgJCQuc2V0QWdncmVnYXRlKDIpOwogICAgIH0K
ICAgICB8IEJWRUMzIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAg
fQogICAgIHwgQlZFQzQgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAg
ICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRC
YXNpYyhFYnRCb29sLCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAg
ICB9CiAgICAgfCBJVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAg
ICB9CiAgICAgfCBJVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzKTsKICAg
ICB9CiAgICAgfCBJVkVDNCB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAg
ICB9CiAgICAgfCBNQVRSSVgyIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDIiLCAkMS5s
aW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRC
YXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZs
b2F0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyLCB0cnVlKTsKICAgICB9
CiAgICAgfCBNQVRSSVgzIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDMiLCAkMS5saW5l
KTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNp
YyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0
LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzLCB0cnVlKTsKICAgICB9CiAg
ICAgfCBNQVRSSVg0IHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDQiLCAkMS5saW5lKTsK
ICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBx
dWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0LCB0cnVlKTsKICAgICB9CiAgICAg
fCBTQU1QTEVSMkQgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEIiwgJDEubGlu
ZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0U2FtcGxlcjJELCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
U2FtcGxlcjJELCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUkNVQkUgewotICAgICAg
ICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckN1YmUiLCAkMS5saW5lKTsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwg
cXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXJDdWJlLCBxdWFs
LCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUl9FWFRFUk5BTF9PRVMgewogICAgICAgICBpZiAo
IWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1bnN1cHBvcnRlZCB0eXBl
IiwgInNhbXBsZXJFeHRlcm5hbE9FUyIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEs
ICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXJFeHRlcm5hbE9FUyIpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJz
YW1wbGVyRXh0ZXJuYWxPRVMiLCAkMS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVt
cG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWws
ICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1
YWwsIEAxKTsKICAgICB9CiAgICAgfCBTQU1QTEVSMkRSRUNUIHsKICAgICAgICAgaWYgKCFjb250
ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIikpIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNh
bXBsZXIyRFJlY3QiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5zdXBwb3J0
ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIH0KLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXIyRFJlY3QiLCAk
MS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRTYW1wbGVyMkRSZWN0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IHN0cnVjdF9z
cGVjaWZpZXIgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic3RydWN0IiwgJDEubGluZSk7CiAg
ICAgICAgICQkID0gJDE7CiAgICAgICAgICQkLnF1YWxpZmllciA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICB9CkBA
IC0xNjkxLDI5ICsxNTUyLDI5IEBAIHR5cGVfc3BlY2lmaWVyX25vbmFycmF5CiAgICAgICAgIC8v
CiAgICAgICAgIFRUeXBlJiBzdHJ1Y3R1cmUgPSBzdGF0aWNfY2FzdDxUVmFyaWFibGUqPigkMS5z
eW1ib2wpLT5nZXRUeXBlKCk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnVzZXJEZWYgPSAmc3Ry
dWN0dXJlOwogICAgIH0KICAgICA7CiAKIHN0cnVjdF9zcGVjaWZpZXIKLSAgICA6IFNUUlVDVCBJ
REVOVElGSUVSIExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlv
bigkMi5saW5lLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNs
YXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVk
RXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nKSkKKyAgICA6IFNUUlVDVCBpZGVudGlmaWVy
IExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihAMiwgKiQy
LnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBS
SUdIVF9CUkFDRSB7CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDIs
ICokMi5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAg
IFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUoJDUsICokMi5zdHJpbmcpOworICAgICAgICBU
VHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKG5ldyBUU3RydWN0dXJlKCQyLnN0cmluZywgJDUp
KTsKICAgICAgICAgVFZhcmlhYmxlKiB1c2VyVHlwZURlZiA9IG5ldyBUVmFyaWFibGUoJDIuc3Ry
aW5nLCAqc3RydWN0dXJlLCB0cnVlKTsKICAgICAgICAgaWYgKCEgY29udGV4dC0+c3ltYm9sVGFi
bGUuaW5zZXJ0KCp1c2VyVHlwZURlZikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQy
LmxpbmUsICJyZWRlZmluaXRpb24iLCAkMi5zdHJpbmctPmNfc3RyKCksICJzdHJ1Y3QiKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAicmVkZWZpbml0aW9uIiwgJDIuc3RyaW5nLT5j
X3N0cigpLCAic3RydWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICQxLmxp
bmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgQDEpOwog
ICAgICAgICAkJC51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5leGl0U3Ry
dWN0RGVjbGFyYXRpb24oKTsKICAgICB9Ci0gICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSB7IGlmIChj
b250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCQyLmxpbmUsICokMi5zdHJpbmcpKSBjb250
ZXh0LT5yZWNvdmVyKCk7IH0gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0Ugewot
ICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCQ0LCBUU3RyaW5nKCIiKSk7Ci0g
ICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAkMS5saW5lKTsKKyAg
ICB8IFNUUlVDVCBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRp
b24oQDIsICokMi5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IH0gc3RydWN0X2RlY2xhcmF0
aW9uX2xpc3QgUklHSFRfQlJBQ0UgeworICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRU
eXBlKG5ldyBUU3RydWN0dXJlKE5ld1Bvb2xUU3RyaW5nKCIiKSwgJDQpKTsKKyAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksIEAxKTsKICAgICAgICAgJCQudXNlckRl
ZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7
CiAgICAgfQpAQCAtMTcyNSwxNCArMTU4NiwxNSBAQCBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdAog
ICAgIH0KICAgICB8IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IHN0cnVjdF9kZWNsYXJhdGlvbiB7
CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
JDItPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsg
aiA8ICQkLT5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIGlmICgoKiQkKVtqXS50eXBl
LT5nZXRGaWVsZE5hbWUoKSA9PSAoKiQyKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSkgewotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoKiQyKVtpXS5saW5lLCAiZHVwbGljYXRl
IGZpZWxkIG5hbWUgaW4gc3RydWN0dXJlOiIsICJzdHJ1Y3QiLCAoKiQyKVtpXS50eXBlLT5nZXRG
aWVsZE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAkMi0+
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQgPSAoKiQyKVtpXTsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgJCQtPnNpemUoKTsgKytqKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCgqJCQpW2pdLT5uYW1lKCkgPT0gZmllbGQtPm5hbWUoKSkgeworICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgImR1cGxpY2F0ZSBmaWVsZCBuYW1l
IGluIHN0cnVjdHVyZToiLCAic3RydWN0IiwgZmllbGQtPm5hbWUoKS5jX3N0cigpKTsKICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICQkLT5wdXNoX2JhY2soKCokMilbaV0pOworICAgICAg
ICAgICAgJCQtPnB1c2hfYmFjayhmaWVsZCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgOwpAQCAt
MTc0MSwxNCArMTYwMywxNCBAQCBzdHJ1Y3RfZGVjbGFyYXRpb24KICAgICA6IHR5cGVfc3BlY2lm
aWVyIHN0cnVjdF9kZWNsYXJhdG9yX2xpc3QgU0VNSUNPTE9OIHsKICAgICAgICAgJCQgPSAkMjsK
IAotICAgICAgICBpZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2soJDEubGluZSwgKCokMilbMF0u
dHlwZS0+Z2V0RmllbGROYW1lKCksICQxKSkgeworICAgICAgICBpZiAoY29udGV4dC0+dm9pZEVy
cm9yQ2hlY2soQDEsICgqJDIpWzBdLT5uYW1lKCksICQxKSkgewogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgJCQtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8g
Q2FyZWZ1bCBub3QgdG8gcmVwbGFjZSBhbHJlYWR5IGtub3duIGFzcGVjdHMgb2YgdHlwZSwgbGlr
ZSBhcnJheS1uZXNzCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAo
KiQkKVtpXS50eXBlOworICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKiQkKVtpXS0+dHlwZSgp
OwogICAgICAgICAgICAgdHlwZS0+c2V0QmFzaWNUeXBlKCQxLnR5cGUpOwogICAgICAgICAgICAg
dHlwZS0+c2V0Tm9taW5hbFNpemUoJDEuc2l6ZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXRNYXRy
aXgoJDEubWF0cml4KTsKQEAgLTE3NTYsMjYgKzE2MTgsMjMgQEAgc3RydWN0X2RlY2xhcmF0aW9u
CiAKICAgICAgICAgICAgIC8vIGRvbid0IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAgICAgICAg
ICAgIGlmICh0eXBlLT5pc0FycmF5KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlUeXBlRXJyb3JDaGVjaygkMS5saW5lLCAkMSkpCisgICAgICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDEsICQxKSkKICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCQxLmFy
cmF5KQogICAgICAgICAgICAgICAgIHR5cGUtPnNldEFycmF5U2l6ZSgkMS5hcnJheVNpemUpOwot
ICAgICAgICAgICAgaWYgKCQxLnVzZXJEZWYpIHsKKyAgICAgICAgICAgIGlmICgkMS51c2VyRGVm
KQogICAgICAgICAgICAgICAgIHR5cGUtPnNldFN0cnVjdCgkMS51c2VyRGVmLT5nZXRTdHJ1Y3Qo
KSk7Ci0gICAgICAgICAgICAgICAgdHlwZS0+c2V0VHlwZU5hbWUoJDEudXNlckRlZi0+Z2V0VHlw
ZU5hbWUoKSk7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3ROZXN0aW5nRXJyb3JDaGVjaygkMS5saW5lLCAqdHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChj
b250ZXh0LT5zdHJ1Y3ROZXN0aW5nRXJyb3JDaGVjayhAMSwgKigqJCQpW2ldKSkKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CiAgICAgOwogCiBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0CiAgICAgOiBzdHJ1Y3RfZGVjbGFy
YXRvciB7Ci0gICAgICAgICQkID0gTmV3UG9vbFRUeXBlTGlzdCgpOworICAgICAgICAkJCA9IE5l
d1Bvb2xURmllbGRMaXN0KCk7CiAgICAgICAgICQkLT5wdXNoX2JhY2soJDEpOwogICAgIH0KICAg
ICB8IHN0cnVjdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgc3RydWN0X2RlY2xhcmF0b3IgewpAQCAt
MTc4NCwyNiArMTY0MywyNCBAQCBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0CiAgICAgOwogCiBzdHJ1
Y3RfZGVjbGFyYXRvcgotICAgIDogSURFTlRJRklFUiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5y
ZXNlcnZlZEVycm9yQ2hlY2soJDEubGluZSwgKiQxLnN0cmluZykpCisgICAgOiBpZGVudGlmaWVy
IHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMSwgKiQxLnN0cmlu
ZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgJCQudHlwZSA9
IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICAkJC5saW5lID0gJDEu
bGluZTsKLSAgICAgICAgJCQudHlwZS0+c2V0RmllbGROYW1lKCokMS5zdHJpbmcpOworICAgICAg
ICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAgICAg
ICAkJCA9IG5ldyBURmllbGQodHlwZSwgJDEuc3RyaW5nKTsKICAgICB9Ci0gICAgfCBJREVOVElG
SUVSIExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewotICAg
ICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5zdHJpbmcp
KQorICAgIHwgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdI
VF9CUkFDS0VUIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMSwg
KiQxLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAg
JCQudHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICAkJC5s
aW5lID0gJDEubGluZTsKLSAgICAgICAgJCQudHlwZS0+c2V0RmllbGROYW1lKCokMS5zdHJpbmcp
OwotCi0gICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJy
b3JDaGVjaygkMi5saW5lLCAkMywgc2l6ZSkpCisgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRU
eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CisgICAgICAgIGludCBzaXplID0gMDsKKyAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQzLCBzaXplKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQudHlwZS0+c2V0QXJyYXlTaXpl
KHNpemUpOworICAgICAgICB0eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7CisKKyAgICAgICAgJCQg
PSBuZXcgVEZpZWxkKHR5cGUsICQxLnN0cmluZyk7CiAgICAgfQogICAgIDsKIApAQCAtMTgzNSw3
ICsxNjkyLDcgQEAgY29tcG91bmRfc3RhdGVtZW50CiAgICAgfCBMRUZUX0JSQUNFIHsgY29udGV4
dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9IHN0YXRlbWVudF9saXN0IHsgY29udGV4dC0+c3ltYm9s
VGFibGUucG9wKCk7IH0gUklHSFRfQlJBQ0UgewogICAgICAgICBpZiAoJDMgIT0gMCkgewogICAg
ICAgICAgICAgJDMtPnNldE9wKEVPcFNlcXVlbmNlKTsKLSAgICAgICAgICAgICQzLT5zZXRFbmRM
aW5lKCQ1LmxpbmUpOworICAgICAgICAgICAgJDMtPnNldExpbmUoQCQpOwogICAgICAgICB9CiAg
ICAgICAgICQkID0gJDM7CiAgICAgfQpAQCAtMTg1OSw3ICsxNzE2LDcgQEAgY29tcG91bmRfc3Rh
dGVtZW50X25vX25ld19zY29wZQogICAgIHwgTEVGVF9CUkFDRSBzdGF0ZW1lbnRfbGlzdCBSSUdI
VF9CUkFDRSB7CiAgICAgICAgIGlmICgkMikgewogICAgICAgICAgICAgJDItPnNldE9wKEVPcFNl
cXVlbmNlKTsKLSAgICAgICAgICAgICQyLT5zZXRFbmRMaW5lKCQzLmxpbmUpOworICAgICAgICAg
ICAgJDItPnNldExpbmUoQCQpOwogICAgICAgICB9CiAgICAgICAgICQkID0gJDI7CiAgICAgfQpA
QCAtMTg2NywxMCArMTcyNCwxMCBAQCBjb21wb3VuZF9zdGF0ZW1lbnRfbm9fbmV3X3Njb3BlCiAK
IHN0YXRlbWVudF9saXN0CiAgICAgOiBzdGF0ZW1lbnQgewotICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKCQxLCAwKTsKKyAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMSwgQCQpOwogICAgIH0KICAgICB8IHN0YXRl
bWVudF9saXN0IHN0YXRlbWVudCB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUoJDEsICQyLCAwKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMSwgJDIsIEAkKTsKICAgICB9CiAgICAgOwogCkBAIC0xODgx
LDkgKzE3MzgsOSBAQCBleHByZXNzaW9uX3N0YXRlbWVudAogCiBzZWxlY3Rpb25fc3RhdGVtZW50
CiAgICAgOiBJRiBMRUZUX1BBUkVOIGV4cHJlc3Npb24gUklHSFRfUEFSRU4gc2VsZWN0aW9uX3Jl
c3Rfc3RhdGVtZW50IHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCQxLmxp
bmUsICQzKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKEAxLCAkMykpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigkMywgJDUsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oJDMsICQ1LCBAMSk7CiAgICAgfQogICAg
IDsKIApAQCAtMTkwNywxNCArMTc2NCwxNCBAQCBjb25kaXRpb24KICAgICAgICAgaWYgKGNvbnRl
eHQtPmJvb2xFcnJvckNoZWNrKCQxLT5nZXRMaW5lKCksICQxKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElG
SUVSIEVRVUFMIGluaXRpYWxpemVyIHsKKyAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50
aWZpZXIgRVFVQUwgaW5pdGlhbGl6ZXIgewogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9k
ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDIubGlu
ZSwgJDEpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhA
MiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29u
dGV4dC0+Ym9vbEVycm9yQ2hlY2soJDIubGluZSwgJDEpKQorICAgICAgICBpZiAoY29udGV4dC0+
Ym9vbEVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
IAotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMi5saW5lLCAqJDIu
c3RyaW5nLCAkMSwgJDQsIGludGVybU5vZGUpKQorICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1
dGVJbml0aWFsaXplcihAMiwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkKICAgICAg
ICAgICAgICQkID0gJDQ7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwpAQCAtMTkyNiwxOSArMTc4MywxOSBAQCBjb25kaXRpb24KIGl0ZXJhdGlvbl9zdGF0
ZW1lbnQKICAgICA6IFdISUxFIExFRlRfUEFSRU4geyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNo
KCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgfSBjb25kaXRpb24gUklHSFRfUEFSRU4g
c3RhdGVtZW50X25vX25ld19zY29wZSB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBv
cCgpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hp
bGUsIDAsICQ0LCAwLCAkNiwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZExvb3AoRUxvb3BXaGlsZSwgMCwgJDQsIDAsICQ2LCBAMSk7CiAgICAgICAgIC0t
Y29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAgfCBETyB7ICsrY29udGV4dC0+
bG9vcE5lc3RpbmdMZXZlbDsgfSBzdGF0ZW1lbnRfd2l0aF9zY29wZSBXSElMRSBMRUZUX1BBUkVO
IGV4cHJlc3Npb24gUklHSFRfUEFSRU4gU0VNSUNPTE9OIHsKLSAgICAgICAgaWYgKGNvbnRleHQt
PmJvb2xFcnJvckNoZWNrKCQ4LmxpbmUsICQ2KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xF
cnJvckNoZWNrKEA4LCAkNikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAs
ICQ2LCAwLCAkMywgJDQubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZExvb3AoRUxvb3BEb1doaWxlLCAwLCAkNiwgMCwgJDMsIEA0KTsKICAgICAgICAgLS1jb250
ZXh0LT5sb29wTmVzdGluZ0xldmVsOwogICAgIH0KICAgICB8IEZPUiBMRUZUX1BBUkVOIHsgY29u
dGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0g
Zm9yX2luaXRfc3RhdGVtZW50IGZvcl9yZXN0X3N0YXRlbWVudCBSSUdIVF9QQVJFTiBzdGF0ZW1l
bnRfbm9fbmV3X3Njb3BlIHsKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7Ci0g
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BGb3IsICQ0LCBy
ZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCQ1Lm5vZGUxKSwgcmVpbnRlcnByZXRfY2Fz
dDxUSW50ZXJtVHlwZWQqPigkNS5ub2RlMiksICQ3LCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcEZvciwgJDQsIHJlaW50ZXJwcmV0X2Nh
c3Q8VEludGVybVR5cGVkKj4oJDUubm9kZTEpLCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBl
ZCo+KCQ1Lm5vZGUyKSwgJDcsIEAxKTsKICAgICAgICAgLS1jb250ZXh0LT5sb29wTmVzdGluZ0xl
dmVsOwogICAgIH0KICAgICA7CkBAIC0xOTc1LDM5ICsxODMyLDM5IEBAIGZvcl9yZXN0X3N0YXRl
bWVudAoganVtcF9zdGF0ZW1lbnQKICAgICA6IENPTlRJTlVFIFNFTUlDT0xPTiB7CiAgICAgICAg
IGlmIChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9IDApIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCQxLmxpbmUsICJjb250aW51ZSBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxv
b3BzIiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJjb250aW51ZSBzdGF0
ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJyYW5jaChFT3BDb250aW51ZSwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgQDEpOwogICAgIH0KICAgICB8IEJS
RUFLIFNFTUlDT0xPTiB7CiAgICAgICAgIGlmIChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJicmVhayBzdGF0ZW1l
bnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoQDEsICJicmVhayBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgJDEubGluZSk7CisgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgQDEpOwogICAg
IH0KICAgICB8IFJFVFVSTiBTRU1JQ09MT04gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgQDEpOwogICAgICAgICBpZiAo
Y29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCkg
ewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIm5vbi12b2lkIGZ1bmN0aW9u
IG11c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcihAMSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJu
Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgfCBSRVRVUk4gZXhwcmVzc2lvbiBTRU1JQ09MT04gewotICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAkMiwgJDEubGluZSk7CisgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICQyLCBAMSk7
CiAgICAgICAgIGNvbnRleHQtPmZ1bmN0aW9uUmV0dXJuc1ZhbHVlID0gdHJ1ZTsKICAgICAgICAg
aWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpID09IEVidFZv
aWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ2b2lkIGZ1bmN0aW9u
IGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKEAxLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJu
Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0gZWxzZSBpZiAo
Kihjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlKSAhPSAkMi0+Z2V0VHlwZSgpKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBt
YXRjaGluZyB0eXBlOiIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAx
LCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4iKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgIH0KICAgICB8IERJ
U0NBUkQgU0VNSUNPTE9OIHsKLSAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgJDEubGluZSk7
Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BLaWxsLCAk
MS5saW5lKTsKKyAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgQDEpOworICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgQDEpOwogICAgIH0KICAg
ICA7CiAKQEAgLTIwMTksNyArMTg3Niw3IEBAIHRyYW5zbGF0aW9uX3VuaXQKICAgICAgICAgY29u
dGV4dC0+dHJlZVJvb3QgPSAkJDsKICAgICB9CiAgICAgfCB0cmFuc2xhdGlvbl91bml0IGV4dGVy
bmFsX2RlY2xhcmF0aW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jv
d0FnZ3JlZ2F0ZSgkMSwgJDIsIDApOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKCQxLCAkMiwgQCQpOwogICAgICAgICBjb250ZXh0LT50cmVlUm9vdCA9
ICQkOwogICAgIH0KICAgICA7CkBAIC0yMDQxLDcgKzE4OTgsNyBAQCBmdW5jdGlvbl9kZWZpbml0
aW9uCiAgICAgICAgIAogICAgICAgICBpZiAoYnVpbHRJbikKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImJ1aWx0LWluIGZ1bmN0aW9ucyBjYW5ub3QgYmUg
cmVkZWZpbmVkIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKEAxLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQi
LCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjA1NSw3ICsxOTEyLDcgQEAgZnVuY3Rp
b25fZGVmaW5pdGlvbgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIFRoZW4gdGhpcyBm
dW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHkuCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1
bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihA
MSwgImZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19z
dHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAg
ICAgcHJldkRlYy0+c2V0RGVmaW5lZCgpOwpAQCAtMjA2NSwxMSArMTkyMiwxMSBAQCBmdW5jdGlv
bl9kZWZpbml0aW9uCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0TmFtZSgp
ID09ICJtYWluIikgewogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCkg
PiAwKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9u
IGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3Ry
KCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiZnVuY3Rpb24gY2Fubm90
IHRha2UgYW55IHBhcmFtZXRlcihzKSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CiAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0
Vm9pZCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICIiLCBmdW5j
dGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCksICJtYWluIGZ1bmN0aW9uIGNh
bm5vdCByZXR1cm4gYSB2YWx1ZSIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAx
LCAiIiwgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpLCAibWFpbiBm
dW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIwOTcsNyArMTk1NCw3
IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHBh
cmFtZXRlcnMgd2l0aCBuYW1lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgICAgICBpZiAoISBjb250ZXh0LT5zeW1ib2xUYWJsZS5pbnNlcnQoKnZh
cmlhYmxlKSkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAi
cmVkZWZpbml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0
TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsKICAgICAgICAgICAgICAgICB9
CkBAIC0yMTA4LDE0ICsxOTY1LDE1IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgICAg
ICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRU
eXBlKCksICQxLmxpbmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFt
ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBAMSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBh
cmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVz
LCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgJDEu
bGluZSksICQxLmxpbmUpOworICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgQDEpLCBAMSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsICQxLmxpbmUpOworICAgICAgICBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2RlcywgRU9wUGFy
YW1ldGVycywgQDEpOwogICAgICAgICAkMS5pbnRlcm1BZ2dyZWdhdGUgPSBwYXJhbU5vZGVzOwog
ICAgICAgICBjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsID0gMDsKICAgICB9CkBAIC0yMTIzLDEy
ICsxOTgxLDEyIEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgLy8/PyBDaGVjayB0aGF0
IGFsbCBwYXRocyByZXR1cm4gYSB2YWx1ZSBpZiByZXR1cm4gdHlwZSAhPSB2b2lkID8KICAgICAg
ICAgLy8gICBNYXkgYmUgYmVzdCBkb25lIGFzIHBvc3QgcHJvY2VzcyBwaGFzZSBvbiBpbnRlcm1l
ZGlhdGUgY29kZQogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZS0+Z2V0
QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCAmJiAhIGNvbnRleHQtPmZ1bmN0aW9uUmV0dXJuc1ZhbHVl
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiZnVuY3Rpb24gZG9lcyBu
b3QgcmV0dXJuIGEgdmFsdWU6IiwgIiIsICQxLmZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVy
biBhIHZhbHVlOiIsICIiLCAkMS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybUFnZ3JlZ2F0
ZSwgJDMsIDApOwotICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3Bl
cmF0b3IoJCQsIEVPcEZ1bmN0aW9uLCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1BZ2dyZWdhdGUsICQzLCBAJCk7Cisg
ICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigkJCwgRU9w
RnVuY3Rpb24sIEAxKTsKICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldE5hbWUoJDEu
ZnVuY3Rpb24tPmdldE1hbmdsZWROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICQkLT5nZXRBc0Fn
Z3JlZ2F0ZSgpLT5zZXRUeXBlKCQxLmZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkpOwogCkBAIC0y
MTM3LDE1ICsxOTk1LDE3IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgJCQtPmdldEFz
QWdncmVnYXRlKCktPnNldE9wdGltaXplKGNvbnRleHQtPnByYWdtYSgpLm9wdGltaXplKTsKICAg
ICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnByYWdtYSgpLmRl
YnVnKTsKIAotICAgICAgICBpZiAoJDMgJiYgJDMtPmdldEFzQWdncmVnYXRlKCkpCi0gICAgICAg
ICAgICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RW5kTGluZSgkMy0+Z2V0QXNBZ2dyZWdhdGUo
KS0+Z2V0RW5kTGluZSgpKTsKLQogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsK
ICAgICB9CiAgICAgOwogCiAlJQogCit2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGFy
c2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pIHsKKyAgICBjb250ZXh0LT5l
cnJvcigqeXlsbG9jLCByZWFzb24sICIiKTsKKyAgICBjb250ZXh0LT5yZWNvdmVyKCk7Cit9CisK
IGludCBnbHNsYW5nX3BhcnNlKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICByZXR1cm4g
eXlwYXJzZShjb250ZXh0KTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9nbHNsYW5nX2xleC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzg0LDggKzM4NCw4IEBAIHN0YXRpYyB2b2lkIHl5X2ZhdGFsX2Vycm9y
ICh5eWNvbnN0IGNoYXIKIAkqeXlfY3AgPSAnXDAnOyBcCiAJeXlnLT55eV9jX2J1Zl9wID0geXlf
Y3A7CiAKLSNkZWZpbmUgWVlfTlVNX1JVTEVTIDE1NQotI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVS
IDE1NgorI2RlZmluZSBZWV9OVU1fUlVMRVMgMTQ3CisjZGVmaW5lIFlZX0VORF9PRl9CVUZGRVIg
MTQ4CiAvKiBUaGlzIHN0cnVjdCBpcyBub3QgdXNlZCBpbiB0aGlzIHNjYW5uZXIsCiAgICBidXQg
aXRzIHByZXNlbmNlIGlzIG5lY2Vzc2FyeS4gKi8KIHN0cnVjdCB5eV90cmFuc19pbmZvCkBAIC0z
OTMsNTggKzM5Myw1NyBAQCBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwogCWZsZXhfaW50MzJfdCB5eV92
ZXJpZnk7CiAJZmxleF9pbnQzMl90IHl5X254dDsKIAl9Owotc3RhdGljIHl5Y29uc3QgZmxleF9p
bnQxNl90IHl5X2FjY2VwdFs0NTldID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9h
Y2NlcHRbNDQzXSA9CiAgICAgeyAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAg
IDAsICAgIDAsICAxNTYsICAxNTQsICAxNTMsICAxNTMsCi0gICAgICAxMzgsICAxNDQsICAxNDks
ICAxMzMsICAxMzQsICAxNDIsICAxNDEsICAxMzAsICAxMzksICAxMzcsCi0gICAgICAxNDMsICAx
MDIsICAxMDIsICAxMzEsICAxMjcsICAxNDUsICAxMzIsICAxNDYsICAxNTAsICAgOTgsCi0gICAg
ICAxMzUsICAxMzYsICAxNDgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAxMjgsICAxNDcsICAxMjksICAx
NDAsICAgIDMsICAgIDQsICAgIDMsCi0gICAgICAxNTIsICAxNTUsICAxNTEsICAxMjQsICAxMTAs
ICAxMjksICAxMTgsICAxMTMsICAxMDgsICAxMTYsCi0gICAgICAxMDYsICAxMTcsICAxMDcsICAx
MDUsICAgIDIsICAgIDEsICAxMDksICAxMDQsICAxMDAsICAxMDEsCi0gICAgICAgIDAsICAgIDAs
ICAxMDIsICAxMzYsICAxMjgsICAxMzUsICAxMjUsICAxMjEsICAxMjMsICAxMjIsCi0gICAgICAx
MjYsICAgOTgsICAxMTQsICAxMjAsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
Ci0KLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAxNywgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICAyMCwgICAyMiwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgIDExNSwgIDExOSwgICAgNSwKLSAgICAgIDE1
MSwgICAgMCwgICAgMSwgIDEwNCwgICAgMCwgICAgMCwgIDEwMywgICA5OSwgIDExMSwgIDExMiwK
LSAgICAgICA1MCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICAxOCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICAyNiwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICAyMywgICA5OCwgICA5OCwKLQotICAgICAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAot
ICAgICAgIDk4LCAgICAwLCAgMTA1LCAgICAwLCAgMTA0LCAgIDk4LCAgIDI4LCAgIDk4LCAgIDk4
LCAgIDk1LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDIxLCAgIDUzLCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDY5LCAgIDk4LCAgIDk4LCAgIDU4
LCAgIDczLCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDcwLCAgICA5LCAgIDMzLCAgIDM0LCAgIDM1LAotICAgICAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDU2LCAgIDI5LCAgIDk4LCAgIDk4LAotICAg
ICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDM2LCAgIDM3LCAgIDM4LCAgIDI3LCAgIDk4LCAg
IDk4LAotICAgICAgIDk4LCAgIDE1LCAgIDQyLCAgIDQzLCAgIDQ0LCAgIDUxLCAgIDEyLCAgIDk4
LCAgIDk4LCAgIDk4LAotCi0gICAgICAgOTgsICAgODIsICAgODMsICAgODQsICAgOTgsICAgMzAs
ICAgNzQsICAgMjUsICAgODUsICAgODYsCi0gICAgICAgODcsICAgIDcsICAgNzksICAgODAsICAg
ODEsICAgOTgsICAgMjQsICAgNzcsICAgOTgsICAgOTgsCi0gICAgICAgMzksICAgNDAsICAgNDEs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAg
OTgsICAgNzEsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAg
ICAgOTgsICAgNTIsICAgOTgsICAgOTcsICAgOTgsICAgOTgsICAgMTksICAgOTgsICAgOTgsICAg
OTgsCi0gICAgICAgOTgsICAgNzIsICAgNjYsICAgNjEsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgNzgsCi0gICAgICAgNTcsICAgOTgsICAgNjQsICAgMzIsICAgOTgsICAgOTQsICAg
NjUsICAgNDksICAgNzYsICAgNTksCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgNjAsICAgMzEsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAg
IDgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNTQsCi0gICAgICAgMTMsICAgOTgs
ICAgMTQsICAgOTgsICAgOTgsICAgMTYsICAgNjcsICAgOTgsICAgOTgsICAgOTgsCi0KLSAgICAg
ICA2MiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA1NSwgICA3NSwgICA2
MywKLSAgICAgICAxMSwgICA2OCwgICAgNiwgICA5NiwgICAxMCwgICA4OCwgICA0NSwgICA4OSwg
ICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA0NiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA0OCwgICA5OCwKLSAgICAgICA5MiwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5MCwgICA5OCwgICA5MSwgICA5OCwKLSAgICAgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA0NywgICA5MywgICAgMAorICAgICAgICAwLCAgICAwLCAgMTQ4
LCAgMTQ2LCAgMTQ1LCAgMTQ1LCAgMTMyLCAgMTM4LCAgMTQzLCAgMTI3LAorICAgICAgMTI4LCAg
MTM2LCAgMTM1LCAgMTI0LCAgMTMzLCAgMTMxLCAgMTM3LCAgIDk2LCAgIDk2LCAgMTI1LAorICAg
ICAgMTIxLCAgMTM5LCAgMTI2LCAgMTQwLCAgMTQ0LCAgIDkzLCAgMTI5LCAgMTMwLCAgMTQyLCAg
IDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgMTIyLAorICAgICAgMTQxLCAgMTIzLCAgMTM0LCAgMTE4LCAgMTA0
LCAgMTIzLCAgMTEyLCAgMTA3LCAgMTAyLCAgMTEwLAorICAgICAgMTAwLCAgMTExLCAgMTAxLCAg
IDk5LCAgMTAzLCAgIDk4LCAgIDk1LCAgIDk2LCAgICAwLCAgICAwLAorICAgICAgMTMwLCAgMTIy
LCAgMTI5LCAgMTE5LCAgMTE1LCAgMTE3LCAgMTE2LCAgMTIwLCAgIDkzLCAgMTA4LAorICAgICAg
MTE0LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LAorICAgICAgIDkzLCAgIDEyLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLAorCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgMTUsICAg
MTcsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAxMDksICAxMTMsICAgIDAsICAgOTgsICAgIDAsICAgIDAsCisgICAgICAg
OTcsICAgOTQsICAxMDUsICAxMDYsICAgNDUsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
CisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgMTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgMjEsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgMTgsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisKKyAgICAgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICAgMCwgICA5OSwgICAgMCwgICA5OCwgICA5MywK
KyAgICAgICAyMywgICA5MywgICA5MywgICA5MCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywKKyAgICAgICA5MywgICAxNiwgICA0OCwgICA5MywgICA5MywgICA5MywgICA2NCwg
ICA5MywgICA5MywgICA1MywKKyAgICAgICA2OCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA2NSwKKyAgICAgICAgNCwgICAyOCwgICAyOSwgICAzMCwg
ICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA1MSwg
ICAyNCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICAzMSwgICAzMiwKKyAg
ICAgICAzMywgICAyMiwgICA5MywgICA5MywgICA5MywgICAxMCwgICAzNywgICAzOCwgICAzOSwg
ICA0NiwKKyAgICAgICAgNywgICA5MywgICA5MywgICA5MywgICA5MywgICA3NywgICA3OCwgICA3
OSwgICA5MywgICAyNSwKKyAgICAgICA2OSwgICAyMCwgICA4MCwgICA4MSwgICA4MiwgICAgMiwg
ICA3NCwgICA3NSwgICA3NiwgICA5MywKKworICAgICAgIDE5LCAgIDcyLCAgIDkzLCAgIDkzLCAg
IDM0LCAgIDM1LCAgIDM2LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDY2LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDQ3LCAgIDkzLCAgIDkyLCAgIDkzLCAgIDkzLAorICAg
ICAgIDE0LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDY3LCAgIDYxLCAgIDU2LCAgIDkzLCAg
IDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDczLCAgIDUyLCAgIDkzLCAgIDU5LCAgIDI3
LCAgIDkzLCAgIDg5LAorICAgICAgIDYwLCAgIDQ0LCAgIDcxLCAgIDU0LCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDU1LCAgIDI2LCAgIDkz
LCAgIDkzLCAgIDkzLCAgICAzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAg
IDQ5LCAgICA4LCAgIDkzLCAgICA5LCAgIDkzLCAgIDkzLCAgIDExLAorICAgICAgIDYyLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDU3LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAg
IDkzLCAgIDUwLCAgIDcwLCAgIDU4LCAgICA2LCAgIDYzLCAgICAxLCAgIDkxLCAgICA1LCAgIDgz
LAorCisgICAgICAgNDAsICAgODQsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNDEsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgNDMsICAgOTMsICAgODcs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgODUsICAgOTMsICAgODYsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNDIsCisgICAgICAgODgsICAgIDAK
ICAgICB9IDsKIAogc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQpAQCAt
NDgxLDIxMiArNDgwLDE5OCBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfZWNbMjU2
XSA9CiAKIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9tZXRhWzY4XSA9CiAgICAgeyAg
IDAsCi0gICAgICAgIDEsICAgIDEsICAgIDIsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsCi0gICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMsICAgIDMsICAg
IDMsICAgIDMsICAgIDMsICAgIDMsCi0gICAgICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDMsICAgIDMsICAgIDMsCi0gICAgICAgIDMsICAgIDQsICAgIDQsICAg
IDQsICAgIDQsICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAgIDMsCi0gICAgICAgIDMsICAgIDMs
ICAgIDMsICAgIDMsICAgIDMsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsCi0gICAgICAg
IDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQs
Ci0gICAgICAgIDQsICAgIDQsICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAgIDEKKyAgICAgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwK
KyAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAg
MiwgICAgMiwKKyAgICAgICAgMiwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMiwgICAgMiwgICAgMiwKKyAgICAgICAgMiwgICAgMywgICAgMywgICAgMywgICAgMywgICAg
MywgICAgMSwgICAgMSwgICAgMSwgICAgMiwKKyAgICAgICAgMiwgICAgMiwgICAgMiwgICAgMiwg
ICAgMiwgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAgMywgICAg
MywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywg
ICAgMywgICAgMywgICAgMSwgICAgMSwgICAgMSwgICAgMQogICAgIH0gOwogCi1zdGF0aWMgeXlj
b25zdCBmbGV4X2ludDE2X3QgeXlfYmFzZVs0NjRdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50
MTZfdCB5eV9iYXNlWzQ0NV0gPQogICAgIHsgICAwLAotICAgICAgICAwLCAgICAwLCAgIDY1LCAg
IDY2LCAgIDc1LCAgICAwLCAgNjgwLCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjU0LCAgIDQ1
LCAgMTM3LCAgNjgxLCAgNjgxLCAgNjUzLCAgMTM0LCAgNjgxLCAgMTMzLCAgMTMxLAotICAgICAg
MTQ2LCAgMTU5LCAgMTY4LCAgNjUxLCAgNjgxLCAgMTg2LCAgNjUxLCAgIDQ3LCAgNjgxLCAgICAw
LAotICAgICAgNjgxLCAgNjgxLCAgMTI4LCAgMTAwLCAgMTEwLCAgMTUyLCAgMTU2LCAgMTQ2LCAg
MTY2LCAgNjIyLAotICAgICAgMTczLCAgMTA5LCAgNjIxLCAgMTI2LCAgMTc3LCAgNjE1LCAgMTc4
LCAgNjI4LCAgMTg3LCAgMTg0LAotICAgICAgMTQxLCAgMTk3LCAgNjI0LCAgNjgxLCAgMTU3LCAg
NjgxLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjU2LAotICAgICAgNjgxLCAgNjgxLCAgICAwLCAgNjgx
LCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjgxLCAgNjgxLCAg
NjgxLCAgMjM2LCAgNjgxLCAgICAwLCAgNjgxLCAgMjQzLCAgMjczLCAgMjgyLAotICAgICAgMzA0
LCAgICAwLCAgMzE0LCAgNjgxLCAgNjgxLCAgNjgxLCAgNjQ0LCAgNjgxLCAgNjgxLCAgNjgxLAot
ICAgICAgNjQzLCAgICAwLCAgNjgxLCAgNjgxLCAgNjE2LCAgNjA5LCAgNjEyLCAgNjIwLCAgNjE5
LCAgNjA2LAotCi0gICAgICA2MjEsICA2MDgsICA2MTQsICA2MDIsICA1OTksICA2MTIsICA1OTks
ICA1OTYsICA1OTYsICA2MDIsCi0gICAgICA1OTAsICAxODksICA1OTUsICA2MDUsICA1OTEsICA1
OTcsICA2MDAsICA2MDEsICAgIDAsICAyMTYsCi0gICAgICA2MDAsICAxODgsICA1ODYsICA1OTks
ICA1OTAsICA1OTIsICA1ODIsICA1OTYsICA1OTMsICA1OTUsCi0gICAgICA1NzgsICA1ODMsICA1
ODAsICA1NjksICAxODMsICA1NzcsICA1ODIsICA1NzgsICA1ODAsICA1NjksCi0gICAgICA1NzIs
ICAyMjAsICA1NzcsICA1NjksICA1ODEsICAxNzYsICA1NzQsICA2ODEsICA2ODEsICA2ODEsCi0g
ICAgICAgIDAsICAzMzEsICAgIDAsICAzNDQsICAzNjEsICAyOTAsICAzNzQsICAgIDAsICA2ODEs
ICA2ODEsCi0gICAgICAgIDAsICA1NjYsICA1NzAsICA1NzksICA1NzYsICA1NjAsICA1NjAsICAy
MTUsICA1NzUsICA1NzIsCi0gICAgICA1NzIsICA1NzAsICA1NjcsICA1NTksICA1NjUsICA1NTIs
ICA1NjMsICA1NDksICA1NjUsICAgIDAsCi0gICAgICA1NjIsICA1NTAsICA1NTcsICA1NTQsICA1
NTgsICA1NTEsICA1NDAsICA1MzksICA1NTIsICA1NTUsCi0gICAgICA1NTIsICA1NDcsICA1Mzgs
ICAyNjAsICA1NDMsICA1NDYsICA1MzcsICA1MzQsICA1MzgsICA1NDQsCi0KLSAgICAgIDUzNSwg
IDUyNiwgIDUyOSwgIDUyNywgIDUzNywgIDUyMywgIDUyMSwgIDUzNCwgIDUyMCwgIDUyMiwKLSAg
ICAgIDUxOSwgIDUzMCwgIDUyOSwgIDI4MywgIDUyNCwgIDUxOSwgIDUwOCwgIDI2NCwgIDUyNiwg
IDUyOCwKLSAgICAgIDUxNywgIDM4MSwgIDM4OCwgIDM5NSwgIDQwMiwgIDUxOCwgICAgMCwgIDUx
NiwgIDMyMCwgICAgMCwKLSAgICAgIDUwOCwgIDUwNiwgIDUxNCwgIDUwMywgIDUyMCwgIDUwOSwg
IDMzNiwgICAgMCwgICAgMCwgIDUwMywKLSAgICAgIDUxMywgIDUxMywgICAgMCwgIDQ5OCwgIDM0
OSwgICAgMCwgICAgMCwgIDUwMCwgIDM2NiwgIDUwMSwKLSAgICAgIDQ5NSwgIDQ5NCwgIDQ5NSwg
IDQ5NCwgIDQwNywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAgICAgIDQ5MCwgIDQ5
MSwgIDQ5NiwgIDQ4NywgIDUwMCwgIDQ5NSwgIDQ5NCwgIDQ4NiwgIDQ5MCwgIDQ4MiwKLSAgICAg
IDQ4NSwgIDQ4OSwgIDQ5NCwgIDQ4MCwgIDQ5MiwgIDQ4MywgICAgMCwgICAgMCwgIDQ4OSwgIDQ3
OCwKLSAgICAgIDQ3OCwgIDQ4MywgIDQ4MiwgIDQ3OSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwg
IDQ2OSwgIDQ4MSwKLSAgICAgIDQ4MywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAg
MCwgIDQ3MSwgIDQ3MiwgIDQ2NiwKLQotICAgICAgNDc2LCAgICAwLCAgICAwLCAgICAwLCAgNDY3
LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAg
ICAwLCAgICAwLCAgNDc0LCAgICAwLCAgICAwLCAgNDcyLCAgNDY4LAotICAgICAgICAwLCAgICAw
LCAgICAwLCAgNDY0LCAgNDYwLCAgNDY1LCAgNDU1LCAgNDY4LCAgNDU0LCAgNDY3LAotICAgICAg
NDU2LCAgNDYzLCAgICAwLCAgNDYxLCAgNDYzLCAgNDQ3LCAgNDQ5LCAgNDU1LCAgNDYxLCAgNDU2
LAotICAgICAgNDQ0LCAgICAwLCAgNDQ2LCAgICAwLCAgNDQ1LCAgNDQ4LCAgICAwLCAgNDM3LCAg
NDM2LCAgNDM2LAotICAgICAgNDQ5LCAgICAwLCAgNDUxLCAgICAwLCAgNDUwLCAgNDQ5LCAgNDM0
LCAgNDQ3LCAgNDM0LCAgICAwLAotICAgICAgICAwLCAgNDM3LCAgICAwLCAgICAwLCAgNDI5LCAg
ICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLAotICAgICAgNDI2LCAgNDM3LCAgNDMwLCAgNDM2
LCAgNDMzLCAgNDI4LCAgNDIwLCAgNDMyLCAgICAwLCAgICAwLAotICAgICAgNDI1LCAgNDMyLCAg
NDIxLCAgICAwLCAgNDMwLCAgNDI3LCAgNDE3LCAgNDExLCAgNDI1LCAgICAwLAotICAgICAgICAw
LCAgNDI1LCAgICAwLCAgNDIzLCAgNDIyLCAgICAwLCAgICAwLCAgNDIxLCAgNDA3LCAgNDE5LAot
Ci0gICAgICAgIDAsICA0MTAsICA0MzEsICA0MzAsICA0MjksICA0MDAsICAzOTYsICAgIDAsICAg
IDAsICAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0MjEsICAyNTAs
ICA0MjEsICA0MTEsICAzODQsCi0gICAgICAzOTIsICAzOTQsICAzOTAsICAzOTIsICAzOTEsICAz
OTAsICAzOTMsICAzOTAsICAzOTEsICAzODgsCi0gICAgICAgIDAsICAzMzIsICAzNDMsICAzMTcs
ICAzMjksICAzMTMsICAzMTcsICAzMDQsICAzMjEsICAyOTEsCi0gICAgICAgIDAsICAzMDIsICAy
ODAsICAyNzEsICAyNTUsICAyNjIsICAgIDAsICAyNTYsICAgIDAsICAyMzIsCi0gICAgICAyMDYs
ICAyMTIsICAxNDgsICAxNTksICAxMTMsICAgIDAsICAgIDAsICA2ODEsICA0NDIsICA0NDQsCi0g
ICAgICA0NDYsICA0NTAsICAxNjEKKyAgICAgICAgMCwgICAgMCwgIDU4NywgIDU4OCwgIDU4OCwg
IDU4OCwgIDU2MSwgICA0MywgICA2NCwgIDU4OCwKKyAgICAgIDU4OCwgIDU2MCwgICA2MSwgIDU4
OCwgICA2MCwgICA1OCwgIDU1OSwgICA3NywgICA4NiwgIDU1NywKKyAgICAgIDU4OCwgIDEwNCwg
IDU1NywgICA1NSwgIDU4OCwgICAgMCwgIDU4OCwgIDU4OCwgICA3NSwgICAyNiwKKyAgICAgICA1
NywgICA4MiwgICA4MywgICA3MywgICA5MywgIDUyOCwgICA5NywgICA5NSwgIDUyNywgICA0NCwK
KyAgICAgICA3MSwgIDUyMSwgIDEwNCwgIDUzNCwgIDExMCwgIDExNiwgICAzNSwgIDExMSwgIDUz
MCwgIDU4OCwKKyAgICAgIDExNCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwg
IDU4OCwgIDU4OCwgIDU4OCwKKyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDE2NSwgIDU4OCwgIDE3
MiwgIDIwMiwgIDIxMSwgIDIzMywgICAgMCwKKyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDU1MSwg
IDU4OCwgIDU4OCwgIDU4OCwgIDU1MCwgICAgMCwgIDU4OCwKKyAgICAgIDU4OCwgIDUyMywgIDUx
NiwgIDUxOSwgIDUyNywgIDUyNiwgIDUxMywgIDUyOCwgIDUxNSwgIDUyMSwKKyAgICAgIDUwOSwg
IDUwNiwgIDUxOSwgIDUwNiwgIDUwMywgIDUwMywgIDUwOSwgIDQ5NywgIDEwOCwgIDUwMiwKKwor
ICAgICAgNTEyLCAgNDk4LCAgNTA0LCAgNTA3LCAgNTA4LCAgICAwLCAgMTQ1LCAgNTA3LCAgMTEz
LCAgNDkzLAorICAgICAgNTA2LCAgNDk3LCAgNDk5LCAgNDg5LCAgNTAzLCAgNTAwLCAgNTAyLCAg
NDg1LCAgNDkwLCAgNDg3LAorICAgICAgNDc2LCAgMTU3LCAgNDg0LCAgNDg5LCAgNDg1LCAgNDg3
LCAgNDc2LCAgNDc5LCAgMTE4LCAgNDg0LAorICAgICAgNDc2LCAgNDg4LCAgIDcwLCAgNDgxLCAg
NTg4LCAgNTg4LCAgMjQ2LCAgMjUzLCAgMjcwLCAgMjE5LAorICAgICAgMjgzLCAgICAwLCAgNTg4
LCAgNTg4LCAgICAwLCAgNDczLCAgNDc3LCAgNDg2LCAgNDgzLCAgNDY3LAorICAgICAgNDY3LCAg
MTE5LCAgNDgyLCAgNDc5LCAgNDc5LCAgNDc3LCAgNDc0LCAgNDY2LCAgNDcyLCAgNDU5LAorICAg
ICAgNDcwLCAgNDU2LCAgNDcyLCAgICAwLCAgNDY5LCAgNDU3LCAgNDY0LCAgNDYxLCAgNDY1LCAg
NDU4LAorICAgICAgNDQ3LCAgNDQ2LCAgNDU5LCAgNDYyLCAgNDU5LCAgNDU0LCAgNDQ1LCAgMTg4
LCAgNDUwLCAgNDUzLAorICAgICAgNDQ0LCAgNDQxLCAgNDQ1LCAgNDUxLCAgNDQyLCAgNDMzLCAg
NDM2LCAgNDM0LCAgNDQ0LCAgNDMwLAorICAgICAgNDI4LCAgNDQxLCAgNDI3LCAgNDI5LCAgNDI2
LCAgNDM3LCAgNDM2LCAgMTI0LCAgNDMxLCAgNDI2LAorCisgICAgICA0MTUsICAyNTgsICA0MzMs
ICA0MzUsICA0MjQsICAyOTAsICAyOTcsICAzMDQsICAzMTEsICA0MjUsCisgICAgICAgIDAsICA0
MjMsICAyNzUsICAgIDAsICA0MTUsICA0MTMsICA0MjEsICA0MTAsICA0MjcsICA0MTYsCisgICAg
ICAzMTYsICAgIDAsICAgIDAsICA0MTAsICA0MjAsICA0MjAsICAgIDAsICA0MDUsICAzMTksICAg
IDAsCisgICAgICAgIDAsICA0MDcsICAzMjIsICA0MDgsICA0MDIsICA0MDEsICA0MDIsICA0MDEs
ICAzMjUsICAgIDAsCisgICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzOTcsICAzOTgsICA0
MDMsICAzOTQsICA0MDcsICA0MDIsCisgICAgICA0MDEsICAzOTMsICAzOTcsICAzODksICAzOTIs
ICAzOTYsICA0MDEsICAzODcsICAzOTksICAzOTAsCisgICAgICAgIDAsICAgIDAsICAzOTYsICAz
ODUsICAzODUsICAzOTAsICAzODksICAzODYsICAgIDAsICAgIDAsCisgICAgICAgIDAsICAgIDAs
ICAzNzYsICAzODgsICAzOTAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsCisgICAgICAg
IDAsICAzNzgsICAzNzksICAzNzMsICAzODMsICAgIDAsICAgIDAsICAgIDAsICAzNzQsICAgIDAs
CisgICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAg
IDAsICAzODEsCisKKyAgICAgICAgMCwgICAgMCwgIDM3OSwgIDM3NSwgICAgMCwgICAgMCwgICAg
MCwgIDM3MSwgIDM2NywgIDM3MiwKKyAgICAgIDM2MiwgIDM3NSwgIDM2MSwgIDM3NCwgIDM2Mywg
IDM3MCwgICAgMCwgIDM2OCwgIDM3MCwgIDM1NCwKKyAgICAgIDM1NiwgIDM2MiwgIDM2OCwgIDM2
MywgIDM1MSwgICAgMCwgIDM1MywgICAgMCwgIDM1MiwgIDM1NSwKKyAgICAgICAgMCwgIDM0NCwg
IDM0MywgIDM0MywgIDM1NiwgICAgMCwgIDM1OCwgICAgMCwgIDM1NywgIDM1NiwKKyAgICAgIDM0
MSwgIDM1NCwgIDM0MSwgICAgMCwgICAgMCwgIDM0NCwgICAgMCwgICAgMCwgIDMzNiwgICAgMCwK
KyAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDMzMywgIDM0NCwgIDMzNywgIDM0MywgIDM0
MCwgIDMzNSwKKyAgICAgIDMyNywgIDMzOSwgICAgMCwgICAgMCwgIDMzMiwgIDMzOSwgIDMyOCwg
ICAgMCwgIDMzNywgIDMzNCwKKyAgICAgIDMyNCwgIDMyOSwgIDMzMiwgICAgMCwgICAgMCwgIDMz
MiwgICAgMCwgIDMzMCwgIDMyOSwgICAgMCwKKyAgICAgICAgMCwgIDMyOCwgIDMxNCwgIDMyNiwg
ICAgMCwgIDMxNywgIDMzOCwgIDMzNywgIDMzNiwgIDMwNywKKyAgICAgIDMwMywgICAgMCwgICAg
MCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDMyOCwKKworICAgICAgMTY2
LCAgMzI1LCAgMzE2LCAgMjk5LCAgMzA4LCAgMzEwLCAgMzA2LCAgMzA4LCAgMzA3LCAgMzA2LAor
ICAgICAgMzA5LCAgMzA2LCAgMjU2LCAgMjUzLCAgICAwLCAgMjI4LCAgMjM4LCAgMjIyLCAgMjM1
LCAgMjAzLAorICAgICAgMjA3LCAgMjA0LCAgMjEyLCAgMTkxLCAgICAwLCAgMjAxLCAgMTY1LCAg
MTY3LCAgMTUzLCAgMTYxLAorICAgICAgICAwLCAgMTcwLCAgICAwLCAgMTc1LCAgMTUxLCAgMTQx
LCAgMTAwLCAgMTE0LCAgIDU5LCAgICAwLAorICAgICAgICAwLCAgNTg4LCAgMzU5LCAgMTEzCiAg
ICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9kZWZbNDY0XSA9CitzdGF0
aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfZGVmWzQ0NV0gPQogICAgIHsgICAwLAotICAgICAg
NDU4LCAgICAxLCAgNDU5LCAgNDU5LCAgNDU4LCAgICA1LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDYwLAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAg
NDYwLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4
LCAgNDU4LCAgNDYxLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAot
ICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDYyLCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LAotICAgICAgNDU4LCAgNDYzLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDYwLCAgNDU4LCAgNDU4LCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0g
ICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NTgsICA0NTgsICA0NTgsCi0gICAgICA0NjEsICA0NTgsICA0NjIsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NjMsICA0NTgsICA0NTgsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAg
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsCi0KLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAgICAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAot
ICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0g
ICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICAg
IDAsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgKKyAgICAgIDQ0MiwgICAgMSwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwK
KyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0NCwKKyAgICAgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwKKyAg
ICAgIDQ0MiwgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywKKworICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAg
ICAgNDQyLCAgNDQ0LCAgNDQyLCAgNDQyLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorCisgICAg
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
CisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywK
KyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAg
ICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywKKworICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAg
ICAwLCAgNDQyLCAgNDQyCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5
eV9ueHRbNzQ5XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0WzY1Nl0gPQog
ICAgIHsgICAwLAotICAgICAgICA4LCAgICA5LCAgIDEwLCAgIDExLCAgIDEyLCAgIDEzLCAgIDE0
LCAgIDE1LCAgIDE2LCAgIDE3LAotICAgICAgIDE4LCAgIDE5LCAgIDIwLCAgIDIxLCAgIDIyLCAg
IDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLAotICAgICAgIDIzLCAgIDI0LCAgIDI1LCAgIDI2
LCAgIDI3LCAgIDI4LCAgIDI5LCAgIDMwLCAgIDMwLCAgIDMwLAotICAgICAgIDMwLCAgIDMwLCAg
IDMwLCAgIDMwLCAgIDMwLCAgIDMwLCAgIDMxLCAgIDMyLCAgIDMzLCAgIDM0LAotICAgICAgIDM1
LCAgIDM2LCAgIDM3LCAgIDM4LCAgIDM5LCAgIDQwLCAgIDQxLCAgIDQyLCAgIDMwLCAgIDQzLAot
ICAgICAgIDQ0LCAgIDQ1LCAgIDQ2LCAgIDQ3LCAgIDQ4LCAgIDQ5LCAgIDUwLCAgIDUxLCAgIDUy
LCAgIDUzLAotICAgICAgIDMwLCAgIDMwLCAgIDMwLCAgIDU0LCAgIDU1LCAgIDU2LCAgIDU3LCAg
IDU5LCAgIDU5LCAgIDY1LAotICAgICAgIDY2LCAgIDkwLCAgIDkxLCAgIDYwLCAgIDYwLCAgICA4
LCAgIDYxLCAgIDYyLCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4LCAgICA4LCAg
ICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4
LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAotCi0gICAgICAgIDgs
ICAgIDgsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0g
ICAgICAgNjMsICAgIDgsICAgIDgsICAgIDgsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMs
ICAgNjMsCi0gICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAg
NjMsICAgNjMsICAgNjMsCi0gICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMs
ICAgNjMsICAgNjMsICAgIDgsICAgIDgsCi0gICAgICAgIDgsICAgIDgsICAgNjcsICAgNzAsICAg
NzIsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsCi0gICAgICAgNzQsICAgNzQsICAgOTMs
ICAxMTksICAgNzUsICAgOTUsICAgOTYsICAgNzMsICAgNzEsICAgNzYsCi0gICAgICAxMjAsICAg
NjgsICAgOTcsICAxNTgsICAgOTgsICAxMjMsICAgOTQsICAxMjEsICAgOTksICAxMjQsCi0gICAg
ICAgNzcsICAgNzgsICA0NTcsICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAg
ODAsCi0gICAgICAgNzgsICAxNDgsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMs
ICAgODMsICAgODEsCi0gICAgICAgODUsICAxMDAsICAxNDIsICA0NTYsICAgODIsICAxMDcsICAx
NDMsICAxMDgsICAgODEsICAxMDMsCi0KLSAgICAgIDQ1NSwgIDEwMSwgICA4MSwgIDEwNCwgIDEw
MiwgIDExMCwgIDEwOSwgICA4NiwgIDEwNSwgICA4NywKLSAgICAgICA4OCwgICA4MSwgIDExNiwg
IDExMSwgIDEwNiwgIDExMiwgIDEyNSwgIDEyOCwgIDExMywgICA4MiwKLSAgICAgIDExNywgIDE0
OSwgIDIwNiwgIDIxOSwgIDExNCwgIDIyMCwgIDEzMiwgIDEzOCwgIDE3OCwgIDEyNiwKLSAgICAg
IDEzOSwgIDExOCwgIDEyOSwgIDEzMywgIDEzNCwgIDEzMCwgIDE0NCwgIDIwNywgIDE0MCwgIDE5
MiwKLSAgICAgIDE0NSwgIDE3OSwgIDQ1NCwgIDEzNSwgIDEzNiwgIDE0MSwgIDEzNywgIDE5Mywg
IDQ1MywgIDE0NiwKLSAgICAgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3
NCwgIDE1NCwgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDQ1Miwg
IDE4NiwgIDE1MiwgIDIxNCwgIDE4NywgIDE4OCwKLSAgICAgIDIzMiwgIDIzMywgIDE4OSwgIDE1
NSwgIDE5MCwgIDIxNSwgIDI1OCwgIDI1OSwgIDI2MCwgIDE1MiwKLSAgICAgIDI4NSwgIDI4Niwg
IDI4NywgIDQyMiwgIDQyMywgICA3OCwgIDE1NSwgICA3OSwgICA3OSwgICA3OSwKLSAgICAgICA3
OSwgICA3OSwgICA3OSwgICA4MCwgICA3OCwgIDQ1MSwgICA4MCwgICA4MCwgICA4MCwgICA4MCwK
LQotICAgICAgIDgwLCAgIDgwLCAgIDgwLCAgIDgxLCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAg
MTU3LCAgMTU3LAotICAgICAgMTU3LCAgNDUwLCAgIDgxLCAgMTU2LCAgNDQ5LCAgMTU2LCAgIDgx
LCAgNDQ4LCAgMTU3LCAgMTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAg
IDgxLCAgIDc4LCAgMjgwLCAgIDgzLCAgIDgzLAotICAgICAgIDgzLCAgIDgzLCAgIDgzLCAgIDgz
LCAgIDgzLCAgMjgxLCAgMjkzLCAgMjk0LCAgMjk1LCAgNDQ3LAotICAgICAgMjIyLCAgNDQ2LCAg
MjIyLCAgNDQ1LCAgIDgxLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLAotICAgICAgMjIz
LCAgMjIzLCAgMzAyLCAgMzAzLCAgMzA0LCAgNDQ0LCAgNDQzLCAgIDgxLCAgMTU0LCAgMTU0LAot
ICAgICAgMTU0LCAgMTU0LCAgMTU0LCAgMTU0LCAgMTU0LCAgMzA5LCAgMzEwLCAgMzExLCAgNDQy
LCAgNDQxLAotICAgICAgMjI0LCAgNDQwLCAgMjI0LCAgNDM5LCAgMTU1LCAgMjI1LCAgMjI1LCAg
MjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMzEzLCAgMzE0LCAgMzE1LCAgNDM4
LCAgNDM3LCAgMTU1LCAgMTU3LCAgMTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAg
MTU3LCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLAotCi0gICAgICAyMjMsICAyMjMsICAy
MjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjUsCi0gICAgICAyMjUs
ICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsCi0g
ICAgICAyMjUsICAyMjUsICAyMjUsICAzMjEsICAzMjIsICAzMjMsICA0MDMsICA0MDQsICA0MDUs
ICA0MzYsCi0gICAgICA0MzUsICA0MzQsICA0MzMsICA0MzIsICA0MzEsICA0MzAsICA0MjksICA0
MjgsICA0MjcsICA0MDYsCi0gICAgICA0MjYsICA0MDcsICAgNTgsICAgNTgsICAgNTgsICAgNTgs
ICAgOTIsICAgOTIsICAxNTEsICAxNTEsCi0gICAgICAxNTMsICA0MjUsICAxNTMsICAxNTMsICA0
MjQsICA0MjEsICA0MjAsICA0MTksICA0MTgsICA0MTcsCi0gICAgICA0MTYsICA0MTUsICA0MTQs
ICA0MTMsICA0MTIsICA0MTEsICA0MTAsICA0MDksICA0MDgsICA0MDIsCi0gICAgICA0MDEsICA0
MDAsICAzOTksICAzOTgsICAzOTcsICAzOTYsICAzOTUsICAzOTQsICAzOTMsICAzOTIsCi0gICAg
ICAzOTEsICAzOTAsICAzODksICAzODgsICAzODcsICAzODYsICAzODUsICAzODQsICAzODMsICAz
ODIsCi0gICAgICAzODEsICAzODAsICAzNzksICAzNzgsICAzNzcsICAzNzYsICAzNzUsICAzNzQs
ICAzNzMsICAzNzIsCi0KLSAgICAgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2NywgIDM2Niwg
IDM2NSwgIDM2NCwgIDM2MywgIDM2MiwKLSAgICAgIDM2MSwgIDM2MCwgIDM1OSwgIDM1OCwgIDM1
NywgIDM1NiwgIDM1NSwgIDM1NCwgIDM1MywgIDM1MiwKLSAgICAgIDM1MSwgIDM1MCwgIDM0OSwg
IDM0OCwgIDM0NywgIDM0NiwgIDM0NSwgIDM0NCwgIDM0MywgIDM0MiwKLSAgICAgIDM0MSwgIDM0
MCwgIDMzOSwgIDMzOCwgIDMzNywgIDMzNiwgIDMzNSwgIDMzNCwgIDMzMywgIDMzMiwKLSAgICAg
IDMzMSwgIDMzMCwgIDMyOSwgIDMyOCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMCwgIDMx
OSwKLSAgICAgIDMxOCwgIDMxNywgIDMxNiwgIDMxMiwgIDMwOCwgIDMwNywgIDMwNiwgIDMwNSwg
IDMwMSwgIDMwMCwKLSAgICAgIDI5OSwgIDI5OCwgIDI5NywgIDI5NiwgIDI5MiwgIDI5MSwgIDI5
MCwgIDI4OSwgIDI4OCwgIDI4NCwKLSAgICAgIDI4MywgIDI4MiwgIDI3OSwgIDI3OCwgIDI3Nywg
IDI3NiwgIDI3NSwgIDI3NCwgIDI3MywgIDI3MiwKLSAgICAgIDI3MSwgIDI3MCwgIDI2OSwgIDI2
OCwgIDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2MiwKLSAgICAgIDI2MSwgIDI1Nywg
IDI1NiwgIDI1NSwgIDI1NCwgIDI1MywgIDI1MiwgIDI1MSwgIDI1MCwgIDI0OSwKLQotICAgICAg
MjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAgMjQ0LCAgMjQzLCAgMjQyLCAgMjQxLCAgMjQwLCAgMjM5
LAotICAgICAgMjM4LCAgMjM3LCAgMjM2LCAgMjM1LCAgMjM0LCAgMjMxLCAgMjMwLCAgMjI5LCAg
MjI4LCAgMjI3LAotICAgICAgMjI2LCAgMjIxLCAgMjE4LCAgMjE3LCAgMjE2LCAgMjEzLCAgMjEy
LCAgMjExLCAgMjEwLCAgMjA5LAotICAgICAgMjA4LCAgMjA1LCAgMjA0LCAgMjAzLCAgMjAyLCAg
MjAxLCAgMjAwLCAgMTk5LCAgMTk4LCAgMTk3LAotICAgICAgMTk2LCAgMTk1LCAgMTk0LCAgMTkx
LCAgMTg1LCAgMTg0LCAgMTgzLCAgMTgyLCAgMTgxLCAgMTgwLAotICAgICAgMTc3LCAgMTc2LCAg
MTc1LCAgMTc0LCAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LAotICAgICAgMTY3
LCAgMTY2LCAgMTY1LCAgMTY0LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTUwLAot
ICAgICAgMTQ3LCAgMTMxLCAgMTI3LCAgMTIyLCAgMTE1LCAgIDg5LCAgIDg0LCAgIDY5LCAgIDY0
LCAgNDU4LAotICAgICAgICA3LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0g
ICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0
NTgKKyAgICAgICAgNCwgICAgNSwgICAgNiwgICAgNywgICAgOCwgICAgOSwgICAxMCwgICAxMSwg
ICAxMiwgICAxMywKKyAgICAgICAxNCwgICAxNSwgICAxNiwgICAxNywgICAxOCwgICAxOSwgICAx
OSwgICAxOSwgICAxOSwgICAxOSwKKyAgICAgICAxOSwgICAyMCwgICAyMSwgICAyMiwgICAyMywg
ICAyNCwgICAyNSwgICAyNiwgICAyNiwgICAyNiwKKyAgICAgICAyNiwgICAyNiwgICAyNiwgICAy
NiwgICAyNiwgICAyNiwgICAyNywgICAyOCwgICAyOSwgICAzMCwKKyAgICAgICAzMSwgICAzMiwg
ICAzMywgICAzNCwgICAzNSwgICAzNiwgICAzNywgICAzOCwgICAyNiwgICAzOSwKKyAgICAgICA0
MCwgICA0MSwgICA0MiwgICA0MywgICA0NCwgICA0NSwgICA0NiwgICA0NywgICA0OCwgICA0OSwK
KyAgICAgICAyNiwgICAyNiwgICAyNiwgICA1MCwgICA1MSwgICA1MiwgICA1MywgICA1NSwgICA1
NiwgICA1NywKKyAgICAgICA2MCwgICA2MiwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwg
ICA2NCwgICA2NCwgICA3NywKKyAgICAgICA3OCwgICA4MiwgICA4MywgIDExMCwgICA2MywgICA2
MSwgIDEyOSwgIDExMSwgICA1OCwgICA2NiwKKyAgICAgIDEzMCwgICA2NywgICA2NywgICA2Nywg
ICA2NywgICA2NywgICA2NywgICA2OCwgICA2NiwgICA4MCwKKworICAgICAgIDY4LCAgIDY4LCAg
IDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY5LCAgIDcyLCAgIDg0LAorICAgICAgMTEy
LCAgIDg1LCAgIDcwLCAgIDgxLCAgMTQyLCAgIDg2LCAgIDY5LCAgMjAzLCAgNDQxLCAgMjA0LAor
ICAgICAgIDY5LCAgIDg3LCAgIDk0LCAgMTEzLCAgIDk1LCAgIDczLCAgIDkwLCAgIDc0LCAgIDc1
LCAgIDY5LAorICAgICAgIDkxLCAgIDg4LCAgIDk3LCAgIDk2LCAgIDg5LCAgIDkyLCAgMTAzLCAg
IDcwLCAgMTM1LCAgMTA2LAorICAgICAgIDk4LCAgIDkzLCAgIDk5LCAgMTE1LCAgMTA0LCAgMTAw
LCAgMTA3LCAgMTYyLCAgNDQwLCAgMTE5LAorICAgICAgMTMxLCAgMTAxLCAgNDM5LCAgMTA4LCAg
MTMyLCAgMTA1LCAgMTIwLCAgMTIxLCAgMTE2LCAgMTI1LAorICAgICAgMTYzLCAgMTE3LCAgMTI2
LCAgMTMzLCAgMTc2LCAgMTk4LCAgMTIyLCAgMTIzLCAgMjY0LCAgMTI0LAorICAgICAgMTI3LCAg
NDM4LCAgMTc3LCAgMTk5LCAgMjE2LCAgMjE3LCAgMjY1LCAgMTI4LCAgMTM2LCAgIDY0LAorICAg
ICAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgMTM4LCAgMTM4LCAgMTM4LCAg
MTM4LAorICAgICAgMTM4LCAgMTM4LCAgMTM4LCAgNDM3LCAgMTcwLCAgMTM3LCAgMTkwLCAgMTcx
LCAgMTcyLCAgNDA2LAorCisgICAgICA0MDcsICAxNzMsICAxMzksICAxNzQsICAyNDIsICAyNDMs
ICAyNDQsICA0MzYsICAxMzcsICA0MzUsCisgICAgICA0MzQsICAxOTEsICA0MzMsICA0MzIsICAg
NjYsICAxMzksICAgNjcsICAgNjcsICAgNjcsICAgNjcsCisgICAgICAgNjcsICAgNjcsICAgNjgs
ICAgNjYsICA0MzEsICAgNjgsICAgNjgsICAgNjgsICAgNjgsICAgNjgsCisgICAgICAgNjgsICAg
NjgsICAgNjksICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsCisgICAg
ICA0MzAsICAgNjksICAxNDAsICA0MjksICAxNDAsICAgNjksICA0MjgsICAxNDEsICAxNDEsICAx
NDEsCisgICAgICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAgNjksICAyMDYsICA0MjcsICAyMDYs
ICA0MjYsICA0MjUsCisgICAgICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAy
MDcsICAxMzgsICAxMzgsICAxMzgsCisgICAgICAxMzgsICAxMzgsICAxMzgsICAxMzgsICAyNjks
ICAyNzAsICAyNzEsICA0MjQsICA0MjMsICAyMDgsCisgICAgICA0MjIsICAyMDgsICA0MjEsICAx
MzksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksCisgICAgICAyMDksICAyNzcs
ICAyNzgsICAyNzksICA0MjAsICA0MTksICAxMzksICAxNDEsICAxNDEsICAxNDEsCisKKyAgICAg
IDE0MSwgIDE0MSwgIDE0MSwgIDE0MSwgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIw
NywKKyAgICAgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywg
IDIwOSwgIDIwOSwKKyAgICAgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIw
OSwgIDIwOSwgIDIwOSwgIDIwOSwKKyAgICAgIDIwOSwgIDIwOSwgIDI4NiwgIDI4NywgIDI4OCwg
IDI5MywgIDI5NCwgIDI5NSwgIDI5NywgIDI5OCwKKyAgICAgIDI5OSwgIDMwNSwgIDMwNiwgIDMw
NywgIDM4NywgIDM4OCwgIDM4OSwgIDQxOCwgIDQxNywgIDQxNiwKKyAgICAgIDQxNSwgIDQxNCwg
IDQxMywgIDQxMiwgIDQxMSwgIDQxMCwgIDQwOSwgIDM5MCwgIDQwOCwgIDM5MSwKKyAgICAgICA3
OSwgICA3OSwgIDQwNSwgIDQwNCwgIDQwMywgIDQwMiwgIDQwMSwgIDQwMCwgIDM5OSwgIDM5OCwK
KyAgICAgIDM5NywgIDM5NiwgIDM5NSwgIDM5NCwgIDM5MywgIDM5MiwgIDM4NiwgIDM4NSwgIDM4
NCwgIDM4MywKKyAgICAgIDM4MiwgIDM4MSwgIDM4MCwgIDM3OSwgIDM3OCwgIDM3NywgIDM3Niwg
IDM3NSwgIDM3NCwgIDM3MywKKyAgICAgIDM3MiwgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2
NywgIDM2NiwgIDM2NSwgIDM2NCwgIDM2MywKKworICAgICAgMzYyLCAgMzYxLCAgMzYwLCAgMzU5
LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LCAgMzU0LCAgMzUzLAorICAgICAgMzUyLCAgMzUxLCAg
MzUwLCAgMzQ5LCAgMzQ4LCAgMzQ3LCAgMzQ2LCAgMzQ1LCAgMzQ0LCAgMzQzLAorICAgICAgMzQy
LCAgMzQxLCAgMzQwLCAgMzM5LCAgMzM4LCAgMzM3LCAgMzM2LCAgMzM1LCAgMzM0LCAgMzMzLAor
ICAgICAgMzMyLCAgMzMxLCAgMzMwLCAgMzI5LCAgMzI4LCAgMzI3LCAgMzI2LCAgMzI1LCAgMzI0
LCAgMzIzLAorICAgICAgMzIyLCAgMzIxLCAgMzIwLCAgMzE5LCAgMzE4LCAgMzE3LCAgMzE2LCAg
MzE1LCAgMzE0LCAgMzEzLAorICAgICAgMzEyLCAgMzExLCAgMzEwLCAgMzA5LCAgMzA4LCAgMzA0
LCAgMzAzLCAgMzAyLCAgMzAxLCAgMzAwLAorICAgICAgMjk2LCAgMjkyLCAgMjkxLCAgMjkwLCAg
Mjg5LCAgMjg1LCAgMjg0LCAgMjgzLCAgMjgyLCAgMjgxLAorICAgICAgMjgwLCAgMjc2LCAgMjc1
LCAgMjc0LCAgMjczLCAgMjcyLCAgMjY4LCAgMjY3LCAgMjY2LCAgMjYzLAorICAgICAgMjYyLCAg
MjYxLCAgMjYwLCAgMjU5LCAgMjU4LCAgMjU3LCAgMjU2LCAgMjU1LCAgMjU0LCAgMjUzLAorICAg
ICAgMjUyLCAgMjUxLCAgMjUwLCAgMjQ5LCAgMjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAgMjQxLCAg
MjQwLAorCisgICAgICAyMzksICAyMzgsICAyMzcsICAyMzYsICAyMzUsICAyMzQsICAyMzMsICAy
MzIsICAyMzEsICAyMzAsCisgICAgICAyMjksICAyMjgsICAyMjcsICAyMjYsICAyMjUsICAyMjQs
ICAyMjMsICAyMjIsICAyMjEsICAyMjAsCisgICAgICAyMTksICAyMTgsICAyMTUsICAyMTQsICAy
MTMsICAyMTIsICAyMTEsICAyMTAsICAyMDUsICAyMDIsCisgICAgICAyMDEsICAyMDAsICAxOTcs
ICAxOTYsICAxOTUsICAxOTQsICAxOTMsICAxOTIsICAxODksICAxODgsCisgICAgICAxODcsICAx
ODYsICAxODUsICAxODQsICAxODMsICAxODIsICAxODEsICAxODAsICAxNzksICAxNzgsCisgICAg
ICAxNzUsICAxNjksICAxNjgsICAxNjcsICAxNjYsICAxNjUsICAxNjQsICAxNjEsICAxNjAsICAx
NTksCisgICAgICAxNTgsICAxNTcsICAxNTYsICAxNTUsICAxNTQsICAxNTMsICAxNTIsICAxNTEs
ICAxNTAsICAxNDksCisgICAgICAxNDgsICAxNDcsICAxNDYsICAxNDUsICAxNDQsICAxNDMsICAx
MzQsICAxMTgsICAxMTQsICAxMDksCisgICAgICAxMDIsICAgNzYsICAgNzEsICAgNjUsICAgNTks
ICAgNTQsICA0NDIsICAgIDMsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisKKyAgICAgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MgogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzc0
OV0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1s2NTZdID0KICAgICB7ICAg
MCwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwKQEAgLTY5NCw5NSArNjc5LDg1IEBAIHN0YXRpYyB5eWNvbnN0
IGZsZXhfaW50MTZfdCB5eV9jaGtbNzQ5XSAKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKLSAg
ICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAgNCwg
ICAxMiwKLSAgICAgICAxMiwgICAyOCwgICAyOCwgICAgMywgICAgNCwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLQotICAgICAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAg
ICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICA1LAotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgIDEzLCAgIDE3LCAgIDE5LCAgIDIwLCAg
IDIwLCAgIDIwLCAgIDIwLCAgIDIwLAotICAgICAgIDIwLCAgIDIwLCAgIDMzLCAgIDQyLCAgIDIx
LCAgIDM0LCAgIDM0LCAgIDE5LCAgIDE3LCAgIDIxLAotICAgICAgIDQyLCAgIDEzLCAgIDM1LCAg
NDYzLCAgIDM1LCAgIDQ0LCAgIDMzLCAgIDQyLCAgIDM1LCAgIDQ0LAotICAgICAgIDIxLCAgIDIy
LCAgNDU1LCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLAotICAgICAg
IDIzLCAgIDU1LCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIy
LAotICAgICAgIDI2LCAgIDM2LCAgIDUxLCAgNDU0LCAgIDIyLCAgIDM4LCAgIDUxLCAgIDM4LCAg
IDIzLCAgIDM3LAotCi0gICAgICA0NTMsICAgMzYsICAgMjIsICAgMzcsICAgMzYsICAgMzksICAg
MzgsICAgMjYsICAgMzcsICAgMjYsCi0gICAgICAgMjYsICAgMjMsICAgNDEsICAgMzksICAgMzcs
ICAgMzksICAgNDUsICAgNDcsICAgMzksICAgMjIsCi0gICAgICAgNDEsICAgNTUsICAxMzUsICAx
NDYsICAgMzksICAxNDYsICAgNDksICAgNTAsICAxMTIsICAgNDUsCi0gICAgICAgNTAsICAgNDEs
ICAgNDcsICAgNDksICAgNDksICAgNDcsICAgNTIsICAxMzUsICAgNTAsICAxMjIsCi0gICAgICAg
NTIsICAxMTIsICA0NTIsICAgNDksICAgNDksICAgNTAsICAgNDksICAxMjIsICA0NTEsICAgNTIs
Ci0gICAgICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzgsICAg
NzgsICAgNzgsCi0gICAgICAgNzgsICAgNzgsICAgNzgsICAgNzgsICA0NTAsICAxMjAsICAgNzQs
ICAxNDIsICAxMjAsICAxMjAsCi0gICAgICAxNjgsICAxNjgsICAxMjAsICAgNzgsICAxMjAsICAx
NDIsICAxOTQsICAxOTQsICAxOTQsICAgNzQsCi0gICAgICAyMTgsICAyMTgsICAyMTgsICA0MTcs
ICA0MTcsICAgNzksICAgNzgsICAgNzksICAgNzksICAgNzksCi0gICAgICAgNzksICAgNzksICAg
NzksICAgNzksICAgODAsICA0NDgsICAgODAsICAgODAsICAgODAsICAgODAsCi0KLSAgICAgICA4
MCwgICA4MCwgICA4MCwgICA3OSwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwK
LSAgICAgIDE1NiwgIDQ0NiwgICA4MCwgICA4MSwgIDQ0NSwgICA4MSwgICA3OSwgIDQ0NCwgICA4
MSwgICA4MSwKLSAgICAgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MCwgICA4Mywg
IDIxNCwgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgIDIx
NCwgIDIyOSwgIDIyOSwgIDIyOSwgIDQ0MywKLSAgICAgIDE1MiwgIDQ0MiwgIDE1MiwgIDQ0MCwg
ICA4MywgIDE1MiwgIDE1MiwgIDE1MiwgIDE1MiwgIDE1MiwKLSAgICAgIDE1MiwgIDE1MiwgIDIz
NywgIDIzNywgIDIzNywgIDQzOSwgIDQzOCwgICA4MywgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwg
IDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDI0NSwgIDI0NSwgIDI0NSwgIDQzNywgIDQzNiwKLSAg
ICAgIDE1NSwgIDQzNSwgIDE1NSwgIDQzNCwgIDE1NCwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwg
IDE1NSwKLSAgICAgIDE1NSwgIDE1NSwgIDI0OSwgIDI0OSwgIDI0OSwgIDQzMywgIDQzMiwgIDE1
NCwgIDE1NywgIDE1NywKLSAgICAgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDIyMiwg
IDIyMiwgIDIyMiwgIDIyMiwgIDIyMiwKLQotICAgICAgMjIyLCAgMjIyLCAgMjIzLCAgMjIzLCAg
MjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjI0LAotICAgICAgMjI0LCAgMjI0LCAgMjI0
LCAgMjI0LCAgMjI0LCAgMjI0LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAg
MjI1LCAgMjI1LCAgMjU1LCAgMjU1LCAgMjU1LCAgMzg4LCAgMzg4LCAgMzg4LCAgNDMwLAotICAg
ICAgNDI5LCAgNDI4LCAgNDI3LCAgNDI2LCAgNDI1LCAgNDI0LCAgNDIzLCAgNDIyLCAgNDIxLCAg
Mzg4LAotICAgICAgNDIwLCAgMzg4LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDYwLCAgNDYw
LCAgNDYxLCAgNDYxLAotICAgICAgNDYyLCAgNDE5LCAgNDYyLCAgNDYyLCAgNDE4LCAgNDE2LCAg
NDA3LCAgNDA2LCAgNDA1LCAgNDA0LAotICAgICAgNDAzLCAgNDAyLCAgNDAwLCAgMzk5LCAgMzk4
LCAgMzk1LCAgMzk0LCAgMzkyLCAgMzg5LCAgMzg3LAotICAgICAgMzg2LCAgMzg1LCAgMzgzLCAg
MzgyLCAgMzgxLCAgMzc4LCAgMzc3LCAgMzc2LCAgMzc1LCAgMzc0LAotICAgICAgMzczLCAgMzcy
LCAgMzcxLCAgMzY1LCAgMzYyLCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LAotICAgICAg
MzUzLCAgMzUxLCAgMzUwLCAgMzQ5LCAgMzQ4LCAgMzQ2LCAgMzQ1LCAgMzQzLCAgMzQxLCAgMzQw
LAotCi0gICAgICAzMzksICAzMzgsICAzMzcsICAzMzYsICAzMzUsICAzMzQsICAzMzIsICAzMzEs
ICAzMzAsICAzMjksCi0gICAgICAzMjgsICAzMjcsICAzMjYsICAzMjUsICAzMjQsICAzMjAsICAz
MTksICAzMTYsICAzMDUsICAzMDEsCi0gICAgICAzMDAsICAyOTksICAyOTgsICAyOTEsICAyOTAs
ICAyODksICAyODQsICAyODMsICAyODIsICAyODEsCi0gICAgICAyODAsICAyNzksICAyNzYsICAy
NzUsICAyNzQsICAyNzMsICAyNzIsICAyNzEsICAyNzAsICAyNjksCi0gICAgICAyNjgsICAyNjcs
ICAyNjYsICAyNjUsICAyNjQsICAyNjMsICAyNjIsICAyNjEsICAyNTQsICAyNTMsCi0gICAgICAy
NTIsICAyNTEsICAyNTAsICAyNDgsICAyNDQsICAyNDIsICAyNDEsICAyNDAsICAyMzYsICAyMzUs
Ci0gICAgICAyMzQsICAyMzMsICAyMzIsICAyMzEsICAyMjgsICAyMjYsICAyMjEsICAyMjAsICAy
MTksICAyMTcsCi0gICAgICAyMTYsICAyMTUsICAyMTMsICAyMTIsICAyMTEsICAyMTAsICAyMDks
ICAyMDgsICAyMDcsICAyMDYsCi0gICAgICAyMDUsICAyMDQsICAyMDMsICAyMDIsICAyMDEsICAy
MDAsICAxOTksICAxOTgsICAxOTcsICAxOTYsCi0gICAgICAxOTUsICAxOTMsICAxOTIsICAxOTEs
ICAxOTAsICAxODksICAxODgsICAxODcsICAxODYsICAxODUsCi0KLSAgICAgIDE4NCwgIDE4Mywg
IDE4MiwgIDE4MSwgIDE3OSwgIDE3OCwgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwKLSAgICAgIDE3
MywgIDE3MiwgIDE3MSwgIDE3MCwgIDE2OSwgIDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2MywK
LSAgICAgIDE2MiwgIDE0NywgIDE0NSwgIDE0NCwgIDE0MywgIDE0MSwgIDE0MCwgIDEzOSwgIDEz
OCwgIDEzNywKLSAgICAgIDEzNiwgIDEzNCwgIDEzMywgIDEzMiwgIDEzMSwgIDEzMCwgIDEyOSwg
IDEyOCwgIDEyNywgIDEyNiwKLSAgICAgIDEyNSwgIDEyNCwgIDEyMywgIDEyMSwgIDExOCwgIDEx
NywgIDExNiwgIDExNSwgIDExNCwgIDExMywKLSAgICAgIDExMSwgIDExMCwgIDEwOSwgIDEwOCwg
IDEwNywgIDEwNiwgIDEwNSwgIDEwNCwgIDEwMywgIDEwMiwKLSAgICAgIDEwMSwgIDEwMCwgICA5
OSwgICA5OCwgICA5NywgICA5NiwgICA5NSwgICA5MSwgICA4NywgICA2MCwKLSAgICAgICA1Mywg
ICA0OCwgICA0NiwgICA0MywgICA0MCwgICAyNywgICAyNCwgICAxNiwgICAxMSwgICAgNywKLSAg
ICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwKLQotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAg
ICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4CisgICAgICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDgsICAgIDgsICAgIDks
CisgICAgICAgMTMsICAgMTUsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAg
MTYsICAgMjQsCisgICAgICAgMjQsICAgMzAsICAgMzAsICAgNDAsICAgMTUsICAgMTMsICAgNDcs
ICAgNDAsICAgIDksICAgMTgsCisgICAgICAgNDcsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAg
MTgsICAgMTgsICAgMTgsICAgMTksICAgMjksCisKKyAgICAgICAxOSwgICAxOSwgICAxOSwgICAx
OSwgICAxOSwgICAxOSwgICAxOSwgICAxOCwgICAyMiwgICAzMSwKKyAgICAgICA0MSwgICAzMSwg
ICAxOCwgICAyOSwgIDQ0NCwgICAzMSwgICAxOSwgIDEzMywgIDQzOSwgIDEzMywKKyAgICAgICAx
OCwgICAzMiwgICAzNCwgICA0MSwgICAzNCwgICAyMiwgICAzMywgICAyMiwgICAyMiwgICAxOSwK
KyAgICAgICAzMywgICAzMiwgICAzNSwgICAzNCwgICAzMiwgICAzMywgICAzNywgICAxOCwgICA1
MSwgICAzOCwKKyAgICAgICAzNSwgICAzMywgICAzNSwgICA0MywgICAzNywgICAzNSwgICAzOCwg
ICA5OSwgIDQzOCwgICA0NSwKKyAgICAgICA0OCwgICAzNSwgIDQzNywgICAzOCwgICA0OCwgICAz
NywgICA0NSwgICA0NSwgICA0MywgICA0NiwKKyAgICAgICA5OSwgICA0MywgICA0NiwgICA0OCwg
IDEwOSwgIDEyOSwgICA0NSwgICA0NSwgIDE5OCwgICA0NSwKKyAgICAgICA0NiwgIDQzNiwgIDEw
OSwgIDEyOSwgIDE1MiwgIDE1MiwgIDE5OCwgICA0NiwgICA1MSwgICA2NCwKKyAgICAgICA2NCwg
ICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NiwgICA2NiwgICA2NiwgICA2NiwKKyAg
ICAgICA2NiwgICA2NiwgICA2NiwgIDQzNSwgIDEwNywgICA2NCwgIDEyMiwgIDEwNywgIDEwNywg
IDQwMSwKKworICAgICAgNDAxLCAgMTA3LCAgIDY2LCAgMTA3LCAgMTc4LCAgMTc4LCAgMTc4LCAg
NDM0LCAgIDY0LCAgNDMyLAorICAgICAgNDMwLCAgMTIyLCAgNDI5LCAgNDI4LCAgIDY3LCAgIDY2
LCAgIDY3LCAgIDY3LCAgIDY3LCAgIDY3LAorICAgICAgIDY3LCAgIDY3LCAgIDY3LCAgIDY4LCAg
NDI3LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LAorICAgICAgIDY4LCAgIDY4LCAgIDY3
LCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLAorICAgICAgNDI2LCAg
IDY4LCAgIDY5LCAgNDI0LCAgIDY5LCAgIDY3LCAgNDIzLCAgIDY5LCAgIDY5LCAgIDY5LAorICAg
ICAgIDY5LCAgIDY5LCAgIDY5LCAgIDY5LCAgIDY4LCAgMTM3LCAgNDIyLCAgMTM3LCAgNDIxLCAg
NDIwLAorICAgICAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM4
LCAgMTM4LCAgMTM4LAorICAgICAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LCAgMjAyLCAgMjAyLCAg
MjAyLCAgNDE5LCAgNDE4LCAgMTM5LAorICAgICAgNDE3LCAgMTM5LCAgNDE2LCAgMTM4LCAgMTM5
LCAgMTM5LCAgMTM5LCAgMTM5LCAgMTM5LCAgMTM5LAorICAgICAgMTM5LCAgMjEzLCAgMjEzLCAg
MjEzLCAgNDE0LCAgNDEzLCAgMTM4LCAgMTQxLCAgMTQxLCAgMTQxLAorCisgICAgICAxNDEsICAx
NDEsICAxNDEsICAxNDEsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsCisgICAg
ICAyMDYsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDgsICAy
MDgsCisgICAgICAyMDgsICAyMDgsICAyMDgsICAyMDgsICAyMDgsICAyMDksICAyMDksICAyMDks
ICAyMDksICAyMDksCisgICAgICAyMDksICAyMDksICAyMjEsICAyMjEsICAyMjEsICAyMjksICAy
MjksICAyMjksICAyMzMsICAyMzMsCisgICAgICAyMzMsICAyMzksICAyMzksICAyMzksICAzNzIs
ICAzNzIsICAzNzIsICA0MTIsICA0MTEsICA0MTAsCisgICAgICA0MDksICA0MDgsICA0MDcsICA0
MDYsICA0MDUsICA0MDQsICA0MDMsICAzNzIsICA0MDIsICAzNzIsCisgICAgICA0NDMsICA0NDMs
ICA0MDAsICAzOTEsICAzOTAsICAzODksICAzODgsICAzODcsICAzODYsICAzODQsCisgICAgICAz
ODMsICAzODIsICAzNzksICAzNzgsICAzNzYsICAzNzMsICAzNzEsICAzNzAsICAzNjksICAzNjcs
CisgICAgICAzNjYsICAzNjUsICAzNjIsICAzNjEsICAzNjAsICAzNTksICAzNTgsICAzNTcsICAz
NTYsICAzNTUsCisgICAgICAzNDksICAzNDYsICAzNDMsICAzNDIsICAzNDEsICAzNDAsICAzMzks
ICAzMzcsICAzMzUsICAzMzQsCisKKyAgICAgIDMzMywgIDMzMiwgIDMzMCwgIDMyOSwgIDMyNywg
IDMyNSwgIDMyNCwgIDMyMywgIDMyMiwgIDMyMSwKKyAgICAgIDMyMCwgIDMxOSwgIDMxOCwgIDMx
NiwgIDMxNSwgIDMxNCwgIDMxMywgIDMxMiwgIDMxMSwgIDMxMCwKKyAgICAgIDMwOSwgIDMwOCwg
IDMwNCwgIDMwMywgIDMwMCwgIDI4OSwgIDI4NSwgIDI4NCwgIDI4MywgIDI4MiwKKyAgICAgIDI3
NSwgIDI3NCwgIDI3MywgIDI2OCwgIDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2MCwK
KyAgICAgIDI1OSwgIDI1OCwgIDI1NywgIDI1NiwgIDI1NSwgIDI1NCwgIDI1MywgIDI1MiwgIDI1
MSwgIDI1MCwKKyAgICAgIDI0OSwgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDIzOCwgIDIzNywg
IDIzNiwgIDIzNSwgIDIzNCwKKyAgICAgIDIzMiwgIDIyOCwgIDIyNiwgIDIyNSwgIDIyNCwgIDIy
MCwgIDIxOSwgIDIxOCwgIDIxNywgIDIxNiwKKyAgICAgIDIxNSwgIDIxMiwgIDIxMCwgIDIwNSwg
IDIwNCwgIDIwMywgIDIwMSwgIDIwMCwgIDE5OSwgIDE5NywKKyAgICAgIDE5NiwgIDE5NSwgIDE5
NCwgIDE5MywgIDE5MiwgIDE5MSwgIDE5MCwgIDE4OSwgIDE4OCwgIDE4NywKKyAgICAgIDE4Niwg
IDE4NSwgIDE4NCwgIDE4MywgIDE4MiwgIDE4MSwgIDE4MCwgIDE3OSwgIDE3NywgIDE3NiwKKwor
ICAgICAgMTc1LCAgMTc0LCAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LCAgMTY3
LCAgMTY2LAorICAgICAgMTY1LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTU4LCAg
MTU3LCAgMTU2LCAgMTU1LAorICAgICAgMTU0LCAgMTUzLCAgMTUxLCAgMTUwLCAgMTQ5LCAgMTQ4
LCAgMTQ3LCAgMTQ2LCAgMTM0LCAgMTMyLAorICAgICAgMTMxLCAgMTMwLCAgMTI4LCAgMTI3LCAg
MTI2LCAgMTI1LCAgMTI0LCAgMTIzLCAgMTIxLCAgMTIwLAorICAgICAgMTE5LCAgMTE4LCAgMTE3
LCAgMTE2LCAgMTE1LCAgMTE0LCAgMTEzLCAgMTEyLCAgMTExLCAgMTEwLAorICAgICAgMTA4LCAg
MTA1LCAgMTA0LCAgMTAzLCAgMTAyLCAgMTAxLCAgMTAwLCAgIDk4LCAgIDk3LCAgIDk2LAorICAg
ICAgIDk1LCAgIDk0LCAgIDkzLCAgIDkyLCAgIDkxLCAgIDkwLCAgIDg5LCAgIDg4LCAgIDg3LCAg
IDg2LAorICAgICAgIDg1LCAgIDg0LCAgIDgzLCAgIDgyLCAgIDc4LCAgIDc0LCAgIDQ5LCAgIDQ0
LCAgIDQyLCAgIDM5LAorICAgICAgIDM2LCAgIDIzLCAgIDIwLCAgIDE3LCAgIDEyLCAgICA3LCAg
ICAzLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorCisgICAgICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAg
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIK
ICAgICB9IDsKIAogLyogVGFibGUgb2YgYm9vbGVhbnMsIHRydWUgaWYgcnVsZSBjb3VsZCBtYXRj
aCBlb2wuICovCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfcnVsZV9jYW5fbWF0Y2hf
ZW9sWzE1Nl0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X3J1bGVfY2FuX21hdGNo
X2VvbFsxNDhdID0KICAgICB7ICAgMCwKLTAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMSwgMCwgMCwgICAgIH07CisgICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwg
ICAgIH07CiAKIC8qIFRoZSBpbnRlbnQgYmVoaW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB0aGF0IGl0
J2xsIGNhdGNoCiAgKiBhbnkgdXNlcyBvZiBSRUpFQ1Qgd2hpY2ggZmxleCBtaXNzZWQuCkBAIC04
MTcsNyArNzkyLDEwIEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEK
ICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VT
RVJfQUNUSU9OIHl5bHZhbC0+bGV4LmxpbmUgPSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9B
Q1RJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJz
dF9maWxlID0geXlsbG9jLT5sYXN0X2ZpbGUgPSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmly
c3RfbGluZSA9IHl5bGxvYy0+bGFzdF9saW5lID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5Q
VVQoYnVmLCByZXN1bHQsIG1heF9zaXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1
ZiwgbWF4X3NpemUsIHl5c2Nhbm5lcik7CiAKQEAgLTgyNiw4ICs4MDQsNiBAQCBzdGF0aWMgaW50
IGNoZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyCiBzdGF0aWMgaW50IHJlc2VydmVkX3dvcmQo
eXlzY2FuX3QgeXlzY2FubmVyKTsKIAogI2RlZmluZSBJTklUSUFMIDAKLSNkZWZpbmUgQ09NTUVO
VCAxCi0jZGVmaW5lIEZJRUxEUyAyCiAKICNkZWZpbmUgWVlfRVhUUkFfVFlQRSBUUGFyc2VDb250
ZXh0KgogCkBAIC04NjUsNiArODQxLDggQEAgc3RydWN0IHl5Z3V0c190CiAKICAgICBZWVNUWVBF
ICogeXlsdmFsX3I7CiAKKyAgICBZWUxUWVBFICogeXlsbG9jX3I7CisKICAgICB9OyAvKiBlbmQg
c3RydWN0IHl5Z3V0c190ICovCiAKIHN0YXRpYyBpbnQgeXlfaW5pdF9nbG9iYWxzICh5eXNjYW5f
dCB5eXNjYW5uZXIgKTsKQEAgLTg3Myw2ICs4NTEsOCBAQCBzdGF0aWMgaW50IHl5X2luaXRfZ2xv
YmFscyAoeXlzY2FuX3QgeXlzCiAgICAgICogZnJvbSBiaXNvbiBvdXRwdXQgaW4gc2VjdGlvbiAx
LiovCiAgICAgIyAgICBkZWZpbmUgeXlsdmFsIHl5Zy0+eXlsdmFsX3IKICAgICAKKyAgICAjICAg
IGRlZmluZSB5eWxsb2MgeXlnLT55eWxsb2NfcgorICAgIAogaW50IHl5bGV4X2luaXQgKHl5c2Nh
bl90KiBzY2FubmVyKTsKIAogaW50IHl5bGV4X2luaXRfZXh0cmEgKFlZX0VYVFJBX1RZUEUgdXNl
cl9kZWZpbmVkLHl5c2Nhbl90KiBzY2FubmVyKTsKQEAgLTkxMCw2ICs4OTAsMTAgQEAgWVlTVFlQ
RSAqIHl5Z2V0X2x2YWwgKHl5c2Nhbl90IHl5c2Nhbm5lcgogCiB2b2lkIHl5c2V0X2x2YWwgKFlZ
U1RZUEUgKiB5eWx2YWxfcGFyYW0gLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisgICAgICAgWVlM
VFlQRSAqeXlnZXRfbGxvYyAoeXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAgCisgICAgICAgIHZv
aWQgeXlzZXRfbGxvYyAoWVlMVFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVy
ICk7CisgICAgCiAvKiBNYWNyb3MgYWZ0ZXIgdGhpcyBwb2ludCBjYW4gYWxsIGJlIG92ZXJyaWRk
ZW4gYnkgdXNlciBkZWZpbml0aW9ucyBpbgogICogc2VjdGlvbiAxLgogICovCkBAIC05NDAsMTIg
KzkyNCw2IEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCiAjZW5k
aWYKIAotICAgIHN0YXRpYyB2b2lkIHl5X3B1c2hfc3RhdGUgKGludCBuZXdfc3RhdGUgLHl5c2Nh
bl90IHl5c2Nhbm5lcik7Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgeXlfcG9wX3N0YXRlICh5eXNj
YW5fdCB5eXNjYW5uZXIgKTsKLSAgICAKLSAgICBzdGF0aWMgaW50IHl5X3RvcF9zdGF0ZSAoeXlz
Y2FuX3QgeXlzY2FubmVyICk7Ci0gICAgCiAvKiBBbW91bnQgb2Ygc3R1ZmYgdG8gc2x1cnAgdXAg
d2l0aCBlYWNoIHJlYWQuICovCiAjaWZuZGVmIFlZX1JFQURfQlVGX1NJWkUKICNkZWZpbmUgWVlf
UkVBRF9CVUZfU0laRSA4MTkyCkBAIC0xMDIyLDEwICsxMDAwLDEwIEBAIHN0YXRpYyBpbnQgaW5w
dXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogI2RlZmluZSBZWV9ERUNMX0lTX09VUlMgMQogCiBl
eHRlcm4gaW50IHl5bGV4IFwKLSAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFt
ICx5eXNjYW5fdCB5eXNjYW5uZXIpOworICAgICAgICAgICAgICAgKFlZU1RZUEUgKiB5eWx2YWxf
cGFyYW0sWVlMVFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyKTsKIAogI2Rl
ZmluZSBZWV9ERUNMIGludCB5eWxleCBcCi0gICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZh
bF9wYXJhbSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAgICAgICAgICAgICAgIChZWVNUWVBFICog
eXlsdmFsX3BhcmFtLCBZWUxUWVBFICogeXlsbG9jX3BhcmFtICwgeXlzY2FuX3QgeXlzY2FubmVy
KQogI2VuZGlmIC8qICFZWV9ERUNMICovCiAKIC8qIENvZGUgZXhlY3V0ZWQgYXQgdGhlIGJlZ2lu
bmluZyBvZiBlYWNoIHJ1bGUsIGFmdGVyIHl5dGV4dCBhbmQgeXlsZW5nCkBAIC0xMDUyLDEyICsx
MDMwLDEwIEBAIFlZX0RFQ0wKIAlyZWdpc3RlciBpbnQgeXlfYWN0OwogICAgIHN0cnVjdCB5eWd1
dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKIAotICAgIFRQYXJzZUNv
bnRleHQqIGNvbnRleHQgPSB5eWV4dHJhOwotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMg
Ki8KLQogICAgIHl5bHZhbCA9IHl5bHZhbF9wYXJhbTsKIAorICAgIHl5bGxvYyA9IHl5bGxvY19w
YXJhbTsKKwogCWlmICggIXl5Zy0+eXlfaW5pdCApCiAJCXsKIAkJeXlnLT55eV9pbml0ID0gMTsK
QEAgLTExMDksMTMgKzEwODUsMTMgQEAgeXlfbWF0Y2g6CiAJCQl3aGlsZSAoIHl5X2Noa1t5eV9i
YXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQkJ
ewogCQkJCXl5X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07
Ci0JCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ1OSApCisJCQkJaWYgKCB5eV9jdXJyZW50
X3N0YXRlID49IDQ0MyApCiAJCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2Nd
OwogCQkJCX0KIAkJCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50
X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJKyt5eV9jcDsKIAkJCX0KLQkJd2hp
bGUgKCB5eV9jdXJyZW50X3N0YXRlICE9IDQ1OCApOworCQl3aGlsZSAoIHl5X2N1cnJlbnRfc3Rh
dGUgIT0gNDQyICk7CiAJCXl5X2NwID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19jcG9zOwogCQl5
eV9jdXJyZW50X3N0YXRlID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19zdGF0ZTsKIApAQCAtMTE0
OSwxOTggKzExMjUsMTk5IEBAIGRvX2FjdGlvbjoJLyogVGhpcyBsYWJlbCBpcyB1c2VkIG9ubHkg
dG8KIAogY2FzZSAxOgogWVlfUlVMRV9TRVRVUAotOworeyByZXR1cm4gSU5WQVJJQU5UOyB9CiAJ
WVlfQlJFQUsKLS8qIE11bHRpLWxpbmUgY29tbWVudHMgKi8KIGNhc2UgMjoKIFlZX1JVTEVfU0VU
VVAKLXsgeXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9Cit7IHJldHVybiBISUdI
X1BSRUNJU0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDM6CitZWV9SVUxFX1NFVFVQCit7IHJldHVy
biBNRURJVU1fUFJFQ0lTSU9OOyB9CisJWVlfQlJFQUsKIGNhc2UgNDoKLS8qIHJ1bGUgNCBjYW4g
bWF0Y2ggZW9sICovCiBZWV9SVUxFX1NFVFVQCi07Cit7IHJldHVybiBMT1dfUFJFQ0lTSU9OOyB9
CiAJWVlfQlJFQUsKIGNhc2UgNToKIFlZX1JVTEVfU0VUVVAKLXsgeXlfcG9wX3N0YXRlKHl5c2Nh
bm5lcik7IH0KK3sgcmV0dXJuIFBSRUNJU0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDY6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybihJTlZBUklBTlQpOyB9Cit7IHJldHVybiBBVFRSSUJVVEU7IH0K
IAlZWV9CUkVBSwogY2FzZSA3OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSElHSF9QUkVDSVNJ
T04pOyB9Cit7IHJldHVybiBDT05TVF9RVUFMOyB9CiAJWVlfQlJFQUsKIGNhc2UgODoKIFlZX1JV
TEVfU0VUVVAKLXsgcmV0dXJuKE1FRElVTV9QUkVDSVNJT04pOyB9Cit7IHJldHVybiBVTklGT1JN
OyB9CiAJWVlfQlJFQUsKIGNhc2UgOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKExPV19QUkVD
SVNJT04pOyB9Cit7IHJldHVybiBWQVJZSU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybihQUkVDSVNJT04pOyB9Cit7IHJldHVybiBCUkVBSzsgfQogCVlZ
X0JSRUFLCiBjYXNlIDExOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQVRUUklCVVRFKTsgfQor
eyByZXR1cm4gQ09OVElOVUU7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjoKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuKENPTlNUX1FVQUwpOyB9Cit7IHJldHVybiBETzsgfQogCVlZX0JSRUFLCiBjYXNl
IDEzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oVU5JRk9STSk7IH0KK3sgcmV0dXJuIEZPUjsg
fQogCVlZX0JSRUFLCiBjYXNlIDE0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oVkFSWUlORyk7
IH0KK3sgcmV0dXJuIFdISUxFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTU6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybihCUkVBSyk7IH0KK3sgcmV0dXJuIElGOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTY6
CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihDT05USU5VRSk7IH0KK3sgcmV0dXJuIEVMU0U7IH0K
IAlZWV9CUkVBSwogY2FzZSAxNzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKERPKTsgfQoreyBy
ZXR1cm4gSU5fUVVBTDsgfQogCVlZX0JSRUFLCiBjYXNlIDE4OgogWVlfUlVMRV9TRVRVUAoteyBy
ZXR1cm4oRk9SKTsgfQoreyByZXR1cm4gT1VUX1FVQUw7IH0KIAlZWV9CUkVBSwogY2FzZSAxOToK
IFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFdISUxFKTsgfQoreyByZXR1cm4gSU5PVVRfUVVBTDsg
fQogCVlZX0JSRUFLCiBjYXNlIDIwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSUYpOyB9Cit7
IHJldHVybiBGTE9BVF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjE6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybihFTFNFKTsgfQoreyByZXR1cm4gSU5UX1RZUEU7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAyMjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKElOX1FVQUwpOyB9Cit7IHJldHVybiBWT0lE
X1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAyMzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKE9V
VF9RVUFMKTsgfQoreyByZXR1cm4gQk9PTF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjQ6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybihJTk9VVF9RVUFMKTsgfQoreyB5eWx2YWwtPmxleC5iID0g
dHJ1ZTsgIHJldHVybiBCT09MQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAyNToKIFlZX1JV
TEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEZMT0FUX1RZ
UEUpOyB9Cit7IHl5bHZhbC0+bGV4LmIgPSBmYWxzZTsgcmV0dXJuIEJPT0xDT05TVEFOVDsgfQog
CVlZX0JSRUFLCiBjYXNlIDI2OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5
cGUgPSB0cnVlOyByZXR1cm4oSU5UX1RZUEUpOyB9Cit7IHJldHVybiBESVNDQVJEOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMjc6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9
IHRydWU7IHJldHVybihWT0lEX1RZUEUpOyB9Cit7IHJldHVybiBSRVRVUk47IH0KIAlZWV9CUkVB
SwogY2FzZSAyODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuKEJPT0xfVFlQRSk7IH0KK3sgcmV0dXJuIE1BVFJJWDI7IH0KIAlZWV9CUkVBSwog
Y2FzZSAyOToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4o
Qk9PTENPTlNUQU5UKTsgfQoreyByZXR1cm4gTUFUUklYMzsgfQogCVlZX0JSRUFLCiBjYXNlIDMw
OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5iID0gZmFsc2U7IHJldHVybihCT09MQ09O
U1RBTlQpOyB9Cit7IHJldHVybiBNQVRSSVg0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzE6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybihESVNDQVJEKTsgfQoreyByZXR1cm4gVkVDMjsgfQogCVlZX0JS
RUFLCiBjYXNlIDMyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUkVUVVJOKTsgfQoreyByZXR1
cm4gVkVDMzsgfQogCVlZX0JSRUFLCiBjYXNlIDMzOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0
LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMik7IH0KK3sgcmV0dXJuIFZFQzQ7
IH0KIAlZWV9CUkVBSwogY2FzZSAzNDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0
ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJWDMpOyB9Cit7IHJldHVybiBJVkVDMjsgfQogCVlZ
X0JSRUFLCiBjYXNlIDM1OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4oTUFUUklYNCk7IH0KK3sgcmV0dXJuIElWRUMzOyB9CiAJWVlfQlJFQUsK
IGNhc2UgMzY6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7
IHJldHVybiAoVkVDMik7IH0KK3sgcmV0dXJuIElWRUM0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzc6
CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAo
VkVDMyk7IH0KK3sgcmV0dXJuIEJWRUMyOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzg6CiBZWV9SVUxF
X1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0K
K3sgcmV0dXJuIEJWRUMzOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzk6CiBZWV9SVUxFX1NFVFVQCi17
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzIpOyB9Cit7IHJldHVy
biBCVkVDNDsgfQogCVlZX0JSRUFLCiBjYXNlIDQwOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0
LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKElWRUMzKTsgfQoreyByZXR1cm4gU0FNUExF
UjJEOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxl
eEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzQpOyB9Cit7IHJldHVybiBTQU1QTEVSQ1VC
RTsgfQogCVlZX0JSRUFLCiBjYXNlIDQyOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKEJWRUMyKTsgfQoreyByZXR1cm4gU0FNUExFUl9FWFRF
Uk5BTF9PRVM7IH0KIAlZWV9CUkVBSwogY2FzZSA0MzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDMyk7IH0KK3sgcmV0dXJuIFNBTVBM
RVIyRFJFQ1Q7IH0KIAlZWV9CUkVBSwogY2FzZSA0NDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KK3sgcmV0dXJuIFNUUlVD
VDsgfQogCVlZX0JSRUFLCiBjYXNlIDQ1OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Cit7IHJldHVybiByZXNlcnZlZF93
b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NjoKIFlZX1JVTEVfU0VUVVAKLXsg
Y29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJDVUJFOyB9Cit7IHJl
dHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NzoKIFlZ
X1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBM
RVJfRVhURVJOQUxfT0VTOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0K
IAlZWV9CUkVBSwogY2FzZSA0ODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KK3sgcmV0dXJuIHJlc2VydmVkX3dv
cmQoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDQ5OgogWVlfUlVMRV9TRVRVUAoteyBj
b250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oU1RSVUNUKTsgfQoreyByZXR1cm4g
cmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNTA6CiBZWV9SVUxF
X1NFVFVQCkBAIC0xNTE2LDI2NiArMTQ5MywyMjggQEAgWVlfUlVMRV9TRVRVUAogCVlZX0JSRUFL
CiBjYXNlIDkzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5u
ZXIpOyB9Cit7CisgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQp
OyAKKyAgIHJldHVybiBjaGVja190eXBlKHl5c2Nhbm5lcik7Cit9CiAJWVlfQlJFQUsKIGNhc2Ug
OTQ6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0K
K3sgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkp
OyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5NToKIFlZX1JVTEVfU0VU
VVAKLXsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreyB5eWx2YWwtPmxleC5p
ID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05T
VEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDk2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVz
ZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxp
bnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CiAJWVlfQlJF
QUsKIGNhc2UgOTc6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nh
bm5lcik7IH0KK3sgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5
eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5ODoKIFlZ
X1JVTEVfU0VUVVAKLXsKLSAgIHl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5nKHl5
dGV4dCk7IAotICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKLX0KK3sgeXlsdmFsLT5s
ZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FU
Q09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5OToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFs
LT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4o
SU5UQ09OU1RBTlQpOyB9Cit7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRv
Zl9kb3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
MTAwOgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50Pihz
dHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIEFE
RF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRl
eHQtPmVycm9yKHl5bGluZW5vLCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29u
dGV4dC0+cmVjb3ZlcigpOyByZXR1cm4gMDt9Cit7IHJldHVybiBTVUJfQVNTSUdOOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMTAyOgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGlj
X2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0K
K3sgcmV0dXJuIE1VTF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDM6CiBZWV9SVUxFX1NF
VFVQCi17IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0
KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQoreyByZXR1cm4gRElWX0FTU0lHTjsgfQogCVlZ
X0JSRUFLCiBjYXNlIDEwNDoKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguZiA9IHN0YXRp
Y19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9
Cit7IHJldHVybiBNT0RfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA1OgogWVlfUlVMRV9T
RVRVUAoteyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4
dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIExFRlRfQVNTSUdOOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMTA2OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEFERF9BU1NJR04p
OyB9Cit7IHJldHVybiBSSUdIVF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDc6CiBZWV9S
VUxFX1NFVFVQCi17ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KK3sgcmV0dXJuIEFORF9BU1NJR047
IH0KIAlZWV9CUkVBSwogY2FzZSAxMDg6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTVVMX0FT
U0lHTik7IH0KK3sgcmV0dXJuIFhPUl9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDk6CiBZ
WV9SVUxFX1NFVFVQCi17ICByZXR1cm4oRElWX0FTU0lHTik7IH0KK3sgcmV0dXJuIE9SX0FTU0lH
TjsgfQogCVlZX0JSRUFLCiBjYXNlIDExMDoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihNT0Rf
QVNTSUdOKTsgfQoreyByZXR1cm4gSU5DX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTExOgogWVlf
UlVMRV9TRVRVUAoteyAgcmV0dXJuKExFRlRfQVNTSUdOKTsgfQoreyByZXR1cm4gREVDX09QOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTEyOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFJJR0hUX0FT
U0lHTik7IH0KK3sgcmV0dXJuIEFORF9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExMzoKIFlZX1JV
TEVfU0VUVVAKLXsgIHJldHVybihBTkRfQVNTSUdOKTsgfQoreyByZXR1cm4gT1JfT1A7IH0KIAlZ
WV9CUkVBSwogY2FzZSAxMTQ6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oWE9SX0FTU0lHTik7
IH0KK3sgcmV0dXJuIFhPUl9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNToKIFlZX1JVTEVfU0VU
VVAKLXsgIHJldHVybihPUl9BU1NJR04pOyB9Cit7IHJldHVybiBMRV9PUDsgfQogCVlZX0JSRUFL
CiBjYXNlIDExNjoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihJTkNfT1ApOyB9Cit7IHJldHVy
biBHRV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVy
bihERUNfT1ApOyB9Cit7IHJldHVybiBFUV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExODoKIFlZ
X1JVTEVfU0VUVVAKLXsgIHJldHVybihBTkRfT1ApOyB9Cit7IHJldHVybiBORV9PUDsgfQogCVlZ
X0JSRUFLCiBjYXNlIDExOToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihPUl9PUCk7IH0KK3sg
cmV0dXJuIExFRlRfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjA6CiBZWV9SVUxFX1NFVFVQCi17
ICByZXR1cm4oWE9SX09QKTsgfQoreyByZXR1cm4gUklHSFRfT1A7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxMjE6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTEVfT1ApOyB9Cit7IHJldHVybiBTRU1J
Q09MT047IH0KIAlZWV9CUkVBSwogY2FzZSAxMjI6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4o
R0VfT1ApOyB9Cit7IHJldHVybiBMRUZUX0JSQUNFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIzOgog
WVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEVRX09QKTsgfQoreyByZXR1cm4gUklHSFRfQlJBQ0U7
IH0KIAlZWV9CUkVBSwogY2FzZSAxMjQ6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTkVfT1Ap
OyB9Cit7IHJldHVybiBDT01NQTsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNToKIFlZX1JVTEVfU0VU
VVAKLXsgIHJldHVybihMRUZUX09QKTsgfQoreyByZXR1cm4gQ09MT047IH0KIAlZWV9CUkVBSwog
Y2FzZSAxMjY6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oUklHSFRfT1ApOyB9Cit7IHJldHVy
biBFUVVBTDsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihTRU1JQ09MT04pOyB9Cit7IHJldHVybiBM
RUZUX1BBUkVOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI4OgogWVlfUlVMRV9TRVRVUAoteyBjb250
ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJuKExFRlRfQlJBQ0UpOyB9Cit7IHJldHVy
biBSSUdIVF9QQVJFTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEyOToKIFlZX1JVTEVfU0VUVVAKLXsg
cmV0dXJuKFJJR0hUX0JSQUNFKTsgfQoreyByZXR1cm4gTEVGVF9CUkFDS0VUOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMTMwOgogWVlfUlVMRV9TRVRVUAoteyBpZiAoY29udGV4dC0+aW5UeXBlUGFyZW4p
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Cit7IHJldHVy
biBSSUdIVF9CUkFDS0VUOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMxOgogWVlfUlVMRV9TRVRVUAot
eyByZXR1cm4oQ09MT04pOyB9Cit7IHJldHVybiBET1Q7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzI6
CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4o
RVFVQUwpOyB9Cit7IHJldHVybiBCQU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMzOgogWVlfUlVM
RV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgY29udGV4dC0+aW5UeXBl
UGFyZW4gPSB0cnVlOyByZXR1cm4oTEVGVF9QQVJFTik7IH0KK3sgcmV0dXJuIERBU0g7IH0KIAlZ
WV9CUkVBSwogY2FzZSAxMzQ6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmluVHlwZVBhcmVu
ID0gZmFsc2U7IHJldHVybihSSUdIVF9QQVJFTik7IH0KK3sgcmV0dXJuIFRJTERFOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMTM1OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oTEVGVF9CUkFDS0VUKTsg
fQoreyByZXR1cm4gUExVUzsgfQogCVlZX0JSRUFLCiBjYXNlIDEzNjoKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuKFJJR0hUX0JSQUNLRVQpOyB9Cit7IHJldHVybiBTVEFSOyB9CiAJWVlfQlJFQUsK
IGNhc2UgMTM3OgogWVlfUlVMRV9TRVRVUAoteyBCRUdJTihGSUVMRFMpOyAgcmV0dXJuKERPVCk7
IH0KK3sgcmV0dXJuIFNMQVNIOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM4OgogWVlfUlVMRV9TRVRV
UAoteyByZXR1cm4oQkFORyk7IH0KK3sgcmV0dXJuIFBFUkNFTlQ7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxMzk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihEQVNIKTsgfQoreyByZXR1cm4gTEVGVF9B
TkdMRTsgfQogCVlZX0JSRUFLCiBjYXNlIDE0MDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFRJ
TERFKTsgfQoreyByZXR1cm4gUklHSFRfQU5HTEU7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDE6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybihQTFVTKTsgfQoreyByZXR1cm4gVkVSVElDQUxfQkFSOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTQyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oU1RBUik7IH0K
K3sgcmV0dXJuIENBUkVUOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQzOgogWVlfUlVMRV9TRVRVUAot
eyByZXR1cm4oU0xBU0gpOyB9Cit7IHJldHVybiBBTVBFUlNBTkQ7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxNDQ6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihQRVJDRU5UKTsgfQoreyByZXR1cm4gUVVF
U1RJT047IH0KIAlZWV9CUkVBSwogY2FzZSAxNDU6CisvKiBydWxlIDE0NSBjYW4gbWF0Y2ggZW9s
ICovCiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihMRUZUX0FOR0xFKTsgfQotCVlZX0JSRUFLCi1j
YXNlIDE0NjoKLVlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJJR0hUX0FOR0xFKTsgfQotCVlZX0JS
RUFLCi1jYXNlIDE0NzoKLVlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFZFUlRJQ0FMX0JBUik7IH0K
LQlZWV9CUkVBSwotY2FzZSAxNDg6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihDQVJFVCk7IH0K
LQlZWV9CUkVBSwotY2FzZSAxNDk6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihBTVBFUlNBTkQp
OyB9Ci0JWVlfQlJFQUsKLWNhc2UgMTUwOgotWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUVVFU1RJ
T04pOyB9Ci0JWVlfQlJFQUsKLWNhc2UgMTUxOgotWVlfUlVMRV9TRVRVUAoteyAKLSAgICBCRUdJ
TihJTklUSUFMKTsKLSAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRl
eHQpOyAKLSAgICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwotfQotCVlZX0JSRUFLCi1jYXNlIDE1
MjoKLVlZX1JVTEVfU0VUVVAKLXt9Ci0JWVlfQlJFQUsKLWNhc2UgMTUzOgotLyogcnVsZSAxNTMg
Y2FuIG1hdGNoIGVvbCAqLwotWVlfUlVMRV9TRVRVUAoteyAgfQoreyB9CiAJWVlfQlJFQUsKIGNh
c2UgWVlfU1RBVEVfRU9GKElOSVRJQUwpOgotY2FzZSBZWV9TVEFURV9FT0YoQ09NTUVOVCk6Ci1j
YXNlIFlZX1NUQVRFX0VPRihGSUVMRFMpOgoteyBjb250ZXh0LT5BZnRlckVPRiA9IHRydWU7IHl5
dGVybWluYXRlKCk7IH0KK3sgeXl0ZXJtaW5hdGUoKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE1NDoK
K2Nhc2UgMTQ2OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAi
VW5rbm93biBjaGFyIiwgeXl0ZXh0LCAiIik7IHJldHVybiAwOyB9Cit7IGFzc2VydChmYWxzZSk7
IHJldHVybiAwOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTU1OgorY2FzZSAxNDc6CiBZWV9SVUxFX1NF
VFVQCiBFQ0hPOwogCVlZX0JSRUFLCkBAIC0yMDcxLDcgKzIwMTAsNyBAQCBzdGF0aWMgaW50IHl5
X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgCiAJCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlf
Y3VycmVudF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJCXsKIAkJCXl5
X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCQlpZiAo
IHl5X2N1cnJlbnRfc3RhdGUgPj0gNDU5ICkKKwkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0
NDMgKQogCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJfQogCQl5
eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5z
aWduZWQgaW50KSB5eV9jXTsKQEAgLTIxMDAsMTEgKzIwMzksMTEgQEAgc3RhdGljIGludCB5eV9n
ZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IAogCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3Vy
cmVudF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJewogCQl5eV9jdXJy
ZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQlpZiAoIHl5X2N1
cnJlbnRfc3RhdGUgPj0gNDU5ICkKKwkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ0MyApCiAJ
CQl5eV9jID0geXlfbWV0YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJfQogCXl5X2N1cnJlbnRf
c3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQp
IHl5X2NdOwotCXl5X2lzX2phbSA9ICh5eV9jdXJyZW50X3N0YXRlID09IDQ1OCk7CisJeXlfaXNf
amFtID0gKHl5X2N1cnJlbnRfc3RhdGUgPT0gNDQyKTsKIAogCXJldHVybiB5eV9pc19qYW0gPyAw
IDogeXlfY3VycmVudF9zdGF0ZTsKIH0KQEAgLTI1NDgsNDYgKzI0ODcsNiBAQCBZWV9CVUZGRVJf
U1RBVEUgeXlfc2Nhbl9ieXRlcyAgKHl5Y29uc3QgCiAJcmV0dXJuIGI7CiB9CiAKLSAgICBzdGF0
aWMgdm9pZCB5eV9wdXNoX3N0YXRlIChpbnQgIG5ld19zdGF0ZSAsIHl5c2Nhbl90IHl5c2Nhbm5l
cikKLXsKLSAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNj
YW5uZXI7Ci0JaWYgKCB5eWctPnl5X3N0YXJ0X3N0YWNrX3B0ciA+PSB5eWctPnl5X3N0YXJ0X3N0
YWNrX2RlcHRoICkKLQkJewotCQl5eV9zaXplX3QgbmV3X3NpemU7Ci0KLQkJeXlnLT55eV9zdGFy
dF9zdGFja19kZXB0aCArPSBZWV9TVEFSVF9TVEFDS19JTkNSOwotCQluZXdfc2l6ZSA9IHl5Zy0+
eXlfc3RhcnRfc3RhY2tfZGVwdGggKiBzaXplb2YoIGludCApOwotCi0JCWlmICggISB5eWctPnl5
X3N0YXJ0X3N0YWNrICkKLQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sgPSAoaW50ICopIHl5YWxsb2Mo
bmV3X3NpemUgLHl5c2Nhbm5lciApOwotCi0JCWVsc2UKLQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sg
PSAoaW50ICopIHl5cmVhbGxvYygodm9pZCAqKSB5eWctPnl5X3N0YXJ0X3N0YWNrLG5ld19zaXpl
ICx5eXNjYW5uZXIgKTsKLQotCQlpZiAoICEgeXlnLT55eV9zdGFydF9zdGFjayApCi0JCQlZWV9G
QVRBTF9FUlJPUiggIm91dCBvZiBtZW1vcnkgZXhwYW5kaW5nIHN0YXJ0LWNvbmRpdGlvbiBzdGFj
ayIgKTsKLQkJfQotCi0JeXlnLT55eV9zdGFydF9zdGFja1t5eWctPnl5X3N0YXJ0X3N0YWNrX3B0
cisrXSA9IFlZX1NUQVJUOwotCi0JQkVHSU4obmV3X3N0YXRlKTsKLX0KLQotICAgIHN0YXRpYyB2
b2lkIHl5X3BvcF9zdGF0ZSAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBzdHJ1Y3QgeXln
dXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0JaWYgKCAtLXl5Zy0+
eXlfc3RhcnRfc3RhY2tfcHRyIDwgMCApCi0JCVlZX0ZBVEFMX0VSUk9SKCAic3RhcnQtY29uZGl0
aW9uIHN0YWNrIHVuZGVyZmxvdyIgKTsKLQotCUJFR0lOKHl5Zy0+eXlfc3RhcnRfc3RhY2tbeXln
LT55eV9zdGFydF9zdGFja19wdHJdKTsKLX0KLQotICAgIHN0YXRpYyBpbnQgeXlfdG9wX3N0YXRl
ICAoeXlzY2FuX3QgeXlzY2FubmVyKQotewotICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChz
dHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKLQlyZXR1cm4geXlnLT55eV9zdGFydF9zdGFja1t5
eWctPnl5X3N0YXJ0X3N0YWNrX3B0ciAtIDFdOwotfQotCiAjaWZuZGVmIFlZX0VYSVRfRkFJTFVS
RQogI2RlZmluZSBZWV9FWElUX0ZBSUxVUkUgMgogI2VuZGlmCkBAIC0yNzczLDYgKzI2NzIsMTgg
QEAgdm9pZCB5eXNldF9sdmFsIChZWVNUWVBFICogIHl5bHZhbF9wYXJhbQogICAgIHl5bHZhbCA9
IHl5bHZhbF9wYXJhbTsKIH0KIAorWVlMVFlQRSAqeXlnZXRfbGxvYyAgKHl5c2Nhbl90IHl5c2Nh
bm5lcikKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5
eXNjYW5uZXI7CisgICAgcmV0dXJuIHl5bGxvYzsKK30KKyAgICAKK3ZvaWQgeXlzZXRfbGxvYyAo
WVlMVFlQRSAqICB5eWxsb2NfcGFyYW0gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3Ry
dWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAgIHl5
bGxvYyA9IHl5bGxvY19wYXJhbTsKK30KKyAgICAKIC8qIFVzZXItdmlzaWJsZSBBUEkgKi8KIAog
LyogeXlsZXhfaW5pdCBpcyBzcGVjaWFsIGJlY2F1c2UgaXQgY3JlYXRlcyB0aGUgc2Nhbm5lciBp
dHNlbGYsIHNvIGl0IGlzCkBAIC0yOTU0LDcgKzI4NjUsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lu
cHV0KGNoYXIqIGJ1ZiwgeXlfc2l6CiAgICAgeXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0g
cHA6OlRva2VuOjpMQVNUID8gMCA6IHRva2VuLnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBt
YXhfc2l6ZSkKICAgICAgICAgbWVtY3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwot
ICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9r
ZW4ubG9jYXRpb24ubGluZSkseXlzY2FubmVyKTsKKyAgICB5eXNldF9jb2x1bW4odG9rZW4ubG9j
YXRpb24uZmlsZSx5eXNjYW5uZXIpOworICAgIHl5c2V0X2xpbmVubyh0b2tlbi5sb2NhdGlvbi5s
aW5lLHl5c2Nhbm5lcik7CiAKICAgICBpZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9G
QVRBTF9FUlJPUigiSW5wdXQgYnVmZmVyIG92ZXJmbG93Iik7CkBAIC0yOTY4LDEyICsyODgwLDEw
IEBAIGludCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIAogICAgIGludCB0
b2tlbiA9IElERU5USUZJRVI7CiAgICAgVFN5bWJvbCogc3ltYm9sID0geXlleHRyYS0+c3ltYm9s
VGFibGUuZmluZCh5eXRleHQpOwotICAgIGlmICh5eWV4dHJhLT5sZXhBZnRlclR5cGUgPT0gZmFs
c2UgJiYgc3ltYm9sICYmIHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7CisgICAgaWYgKHN5bWJvbCAm
JiBzeW1ib2wtPmlzVmFyaWFibGUoKSkgewogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0g
c3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oc3ltYm9sKTsKLSAgICAgICAgaWYgKHZhcmlhYmxlLT5p
c1VzZXJUeXBlKCkpIHsKLSAgICAgICAgICAgIHl5ZXh0cmEtPmxleEFmdGVyVHlwZSA9IHRydWU7
CisgICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKQogICAgICAgICAgICAgdG9rZW4g
PSBUWVBFX05BTUU7Ci0gICAgICAgIH0KICAgICB9CiAgICAgeXlsdmFsLT5sZXguc3ltYm9sID0g
c3ltYm9sOwogICAgIHJldHVybiB0b2tlbjsKQEAgLTI5ODIsMjIgKzI4OTIsMTEgQEAgaW50IGNo
ZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5f
dCB5eXNjYW5uZXIpIHsKICAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRz
X3QqKSB5eXNjYW5uZXI7CiAKLSAgICB5eWV4dHJhLT5lcnJvcih5eWxpbmVubywgIklsbGVnYWwg
dXNlIG9mIHJlc2VydmVkIHdvcmQiLCB5eXRleHQsICIiKTsKKyAgICB5eWV4dHJhLT5lcnJvcigq
eXlsbG9jLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwgIiIpOwogICAg
IHl5ZXh0cmEtPnJlY292ZXIoKTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCB5eWVycm9yKFRQ
YXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbikgewotICAgIHN0cnVjdCB5
eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPnNjYW5uZXI7Ci0KLSAg
ICBpZiAoY29udGV4dC0+QWZ0ZXJFT0YpIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXlsaW5l
bm8sIHJlYXNvbiwgInVuZXhwZWN0ZWQgRU9GIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29u
dGV4dC0+ZXJyb3IoeXlsaW5lbm8sIHJlYXNvbiwgeXl0ZXh0KTsKLSAgICB9Ci0gICAgY29udGV4
dC0+cmVjb3ZlcigpOwotfQotCiBpbnQgZ2xzbGFuZ19pbml0aWFsaXplKFRQYXJzZUNvbnRleHQq
IGNvbnRleHQpIHsKICAgICB5eXNjYW5fdCBzY2FubmVyID0gTlVMTDsKICAgICBpZiAoeXlsZXhf
aW5pdF9leHRyYShjb250ZXh0LCZzY2FubmVyKSkKQEAgLTMwMjAsOCArMjkxOSw4IEBAIGludCBn
bHNsYW5nX2ZpbmFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnQKIGludCBnbHNsYW5nX3NjYW4oc2l6
ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtd
LAogICAgICAgICAgICAgICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlyZXN0
YXJ0KE5VTEwsY29udGV4dC0+c2Nhbm5lcik7Ci0gICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJj
ZUxvYygwLCAxKSxjb250ZXh0LT5zY2FubmVyKTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZh
bHNlOworICAgIHl5c2V0X2NvbHVtbigwLGNvbnRleHQtPnNjYW5uZXIpOworICAgIHl5c2V0X2xp
bmVubygxLGNvbnRleHQtPnNjYW5uZXIpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBwcmVwcm9jZXNz
b3IuCiAgICAgaWYgKCFjb250ZXh0LT5wcmVwcm9jZXNzb3IuaW5pdChjb3VudCwgc3RyaW5nLCBs
ZW5ndGgpKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xh
bmdfdGFiLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvZ2xzbGFuZ190YWIuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw3ICs1Niw3IEBACiAjZGVmaW5lIFlZUFVSRSAxCiAKIC8qIFVzaW5nIGxvY2F0aW9ucy4g
ICovCi0jZGVmaW5lIFlZTFNQX05FRURFRCAwCisjZGVmaW5lIFlZTFNQX05FRURFRCAxCiAKIAog
CkBAIC0xMTMsNTIgKzExMyw1MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0gMzAyLAogICAgICBJ
TlRDT05TVEFOVCA9IDMwMywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAotICAgICBGSUVMRF9T
RUxFQ1RJT04gPSAzMDUsCi0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJR0hUX09QID0gMzA3
LAotICAgICBJTkNfT1AgPSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAgICAgTEVfT1AgPSAz
MTAsCi0gICAgIEdFX09QID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAgICAgTkVfT1AgPSAz
MTMsCi0gICAgIEFORF9PUCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0gICAgIFhPUl9PUCA9
IDMxNiwKLSAgICAgTVVMX0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lHTiA9IDMxOCwKLSAg
ICAgQUREX0FTU0lHTiA9IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwKLSAgICAgTEVGVF9B
U1NJR04gPSAzMjEsCi0gICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAgQU5EX0FTU0lHTiA9
IDMyMywKLSAgICAgWE9SX0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdOID0gMzI1LAotICAg
ICBTVUJfQVNTSUdOID0gMzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAotICAgICBSSUdIVF9Q
QVJFTiA9IDMyOCwKLSAgICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBSSUdIVF9CUkFDS0VU
ID0gMzMwLAotICAgICBMRUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9CUkFDRSA9IDMzMiwK
LSAgICAgRE9UID0gMzMzLAotICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09MT04gPSAzMzUsCi0g
ICAgIEVRVUFMID0gMzM2LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAgIEJBTkcgPSAzMzgs
Ci0gICAgIERBU0ggPSAzMzksCi0gICAgIFRJTERFID0gMzQwLAotICAgICBQTFVTID0gMzQxLAot
ICAgICBTVEFSID0gMzQyLAotICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVSQ0VOVCA9IDM0NCwK
LSAgICAgTEVGVF9BTkdMRSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAzNDYsCi0gICAgIFZF
UlRJQ0FMX0JBUiA9IDM0NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFNUEVSU0FORCA9IDM0
OSwKLSAgICAgUVVFU1RJT04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwKKyAgICAgUklHSFRf
T1AgPSAzMDYsCisgICAgIElOQ19PUCA9IDMwNywKKyAgICAgREVDX09QID0gMzA4LAorICAgICBM
RV9PUCA9IDMwOSwKKyAgICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0gMzExLAorICAgICBO
RV9PUCA9IDMxMiwKKyAgICAgQU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9IDMxNCwKKyAgICAg
WE9SX09QID0gMzE1LAorICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBESVZfQVNTSUdOID0g
MzE3LAorICAgICBBRERfQVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdOID0gMzE5LAorICAg
ICBMRUZUX0FTU0lHTiA9IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIxLAorICAgICBBTkRf
QVNTSUdOID0gMzIyLAorICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBPUl9BU1NJR04gPSAz
MjQsCisgICAgIFNVQl9BU1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4gPSAzMjYsCisgICAg
IFJJR0hUX1BBUkVOID0gMzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgsCisgICAgIFJJR0hU
X0JSQUNLRVQgPSAzMjksCisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAgIFJJR0hUX0JSQUNF
ID0gMzMxLAorICAgICBET1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMzLAorICAgICBDT0xPTiA9
IDMzNCwKKyAgICAgRVFVQUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMzNiwKKyAgICAgQkFO
RyA9IDMzNywKKyAgICAgREFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzksCisgICAgIFBMVVMg
PSAzNDAsCisgICAgIFNUQVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAorICAgICBQRVJDRU5U
ID0gMzQzLAorICAgICBMRUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9BTkdMRSA9IDM0NSwK
KyAgICAgVkVSVElDQUxfQkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywKKyAgICAgQU1QRVJT
QU5EID0gMzQ4LAorICAgICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRpZgogLyogVG9rZW5z
LiAgKi8KQEAgLTIwOSw1MiArMjA4LDUxIEBACiAjZGVmaW5lIEZMT0FUQ09OU1RBTlQgMzAyCiAj
ZGVmaW5lIElOVENPTlNUQU5UIDMwMwogI2RlZmluZSBCT09MQ09OU1RBTlQgMzA0Ci0jZGVmaW5l
IEZJRUxEX1NFTEVDVElPTiAzMDUKLSNkZWZpbmUgTEVGVF9PUCAzMDYKLSNkZWZpbmUgUklHSFRf
T1AgMzA3Ci0jZGVmaW5lIElOQ19PUCAzMDgKLSNkZWZpbmUgREVDX09QIDMwOQotI2RlZmluZSBM
RV9PUCAzMTAKLSNkZWZpbmUgR0VfT1AgMzExCi0jZGVmaW5lIEVRX09QIDMxMgotI2RlZmluZSBO
RV9PUCAzMTMKLSNkZWZpbmUgQU5EX09QIDMxNAotI2RlZmluZSBPUl9PUCAzMTUKLSNkZWZpbmUg
WE9SX09QIDMxNgotI2RlZmluZSBNVUxfQVNTSUdOIDMxNwotI2RlZmluZSBESVZfQVNTSUdOIDMx
OAotI2RlZmluZSBBRERfQVNTSUdOIDMxOQotI2RlZmluZSBNT0RfQVNTSUdOIDMyMAotI2RlZmlu
ZSBMRUZUX0FTU0lHTiAzMjEKLSNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMgotI2RlZmluZSBBTkRf
QVNTSUdOIDMyMwotI2RlZmluZSBYT1JfQVNTSUdOIDMyNAotI2RlZmluZSBPUl9BU1NJR04gMzI1
Ci0jZGVmaW5lIFNVQl9BU1NJR04gMzI2Ci0jZGVmaW5lIExFRlRfUEFSRU4gMzI3Ci0jZGVmaW5l
IFJJR0hUX1BBUkVOIDMyOAotI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI5Ci0jZGVmaW5lIFJJR0hU
X0JSQUNLRVQgMzMwCi0jZGVmaW5lIExFRlRfQlJBQ0UgMzMxCi0jZGVmaW5lIFJJR0hUX0JSQUNF
IDMzMgotI2RlZmluZSBET1QgMzMzCi0jZGVmaW5lIENPTU1BIDMzNAotI2RlZmluZSBDT0xPTiAz
MzUKLSNkZWZpbmUgRVFVQUwgMzM2Ci0jZGVmaW5lIFNFTUlDT0xPTiAzMzcKLSNkZWZpbmUgQkFO
RyAzMzgKLSNkZWZpbmUgREFTSCAzMzkKLSNkZWZpbmUgVElMREUgMzQwCi0jZGVmaW5lIFBMVVMg
MzQxCi0jZGVmaW5lIFNUQVIgMzQyCi0jZGVmaW5lIFNMQVNIIDM0MwotI2RlZmluZSBQRVJDRU5U
IDM0NAotI2RlZmluZSBMRUZUX0FOR0xFIDM0NQotI2RlZmluZSBSSUdIVF9BTkdMRSAzNDYKLSNk
ZWZpbmUgVkVSVElDQUxfQkFSIDM0NwotI2RlZmluZSBDQVJFVCAzNDgKLSNkZWZpbmUgQU1QRVJT
QU5EIDM0OQotI2RlZmluZSBRVUVTVElPTiAzNTAKKyNkZWZpbmUgTEVGVF9PUCAzMDUKKyNkZWZp
bmUgUklHSFRfT1AgMzA2CisjZGVmaW5lIElOQ19PUCAzMDcKKyNkZWZpbmUgREVDX09QIDMwOAor
I2RlZmluZSBMRV9PUCAzMDkKKyNkZWZpbmUgR0VfT1AgMzEwCisjZGVmaW5lIEVRX09QIDMxMQor
I2RlZmluZSBORV9PUCAzMTIKKyNkZWZpbmUgQU5EX09QIDMxMworI2RlZmluZSBPUl9PUCAzMTQK
KyNkZWZpbmUgWE9SX09QIDMxNQorI2RlZmluZSBNVUxfQVNTSUdOIDMxNgorI2RlZmluZSBESVZf
QVNTSUdOIDMxNworI2RlZmluZSBBRERfQVNTSUdOIDMxOAorI2RlZmluZSBNT0RfQVNTSUdOIDMx
OQorI2RlZmluZSBMRUZUX0FTU0lHTiAzMjAKKyNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMQorI2Rl
ZmluZSBBTkRfQVNTSUdOIDMyMgorI2RlZmluZSBYT1JfQVNTSUdOIDMyMworI2RlZmluZSBPUl9B
U1NJR04gMzI0CisjZGVmaW5lIFNVQl9BU1NJR04gMzI1CisjZGVmaW5lIExFRlRfUEFSRU4gMzI2
CisjZGVmaW5lIFJJR0hUX1BBUkVOIDMyNworI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI4CisjZGVm
aW5lIFJJR0hUX0JSQUNLRVQgMzI5CisjZGVmaW5lIExFRlRfQlJBQ0UgMzMwCisjZGVmaW5lIFJJ
R0hUX0JSQUNFIDMzMQorI2RlZmluZSBET1QgMzMyCisjZGVmaW5lIENPTU1BIDMzMworI2RlZmlu
ZSBDT0xPTiAzMzQKKyNkZWZpbmUgRVFVQUwgMzM1CisjZGVmaW5lIFNFTUlDT0xPTiAzMzYKKyNk
ZWZpbmUgQkFORyAzMzcKKyNkZWZpbmUgREFTSCAzMzgKKyNkZWZpbmUgVElMREUgMzM5CisjZGVm
aW5lIFBMVVMgMzQwCisjZGVmaW5lIFNUQVIgMzQxCisjZGVmaW5lIFNMQVNIIDM0MgorI2RlZmlu
ZSBQRVJDRU5UIDM0MworI2RlZmluZSBMRUZUX0FOR0xFIDM0NAorI2RlZmluZSBSSUdIVF9BTkdM
RSAzNDUKKyNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NgorI2RlZmluZSBDQVJFVCAzNDcKKyNkZWZp
bmUgQU1QRVJTQU5EIDM0OAorI2RlZmluZSBRVUVTVElPTiAzNDkKIAogCiAKQEAgLTI4Nyw3ICsy
ODUsNiBAQAogI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgogCiAjZGVmaW5lIFlZRU5B
QkxFX05MUyAwCi0jZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCiAKICNkZWZpbmUgWVlMRVhf
UEFSQU0gY29udGV4dC0+c2Nhbm5lcgogCkBAIC0zMTQsOCArMzExLDkgQEAKIHR5cGVkZWYgdW5p
b24gWVlTVFlQRQogCiB7CisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxU
WVBFX0lTX0RFQ0xBUkVEIDEKICAgICBzdHJ1Y3QgewotICAgICAgICBUU291cmNlTG9jIGxpbmU7
CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0cmluZzsKICAgICAgICAg
ICAgIGZsb2F0IGY7CkBAIC0zMjUsNyArMzIzLDYgQEAgdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAg
ICAgICAgIFRTeW1ib2wqIHN5bWJvbDsKICAgICB9IGxleDsKICAgICBzdHJ1Y3QgewotICAgICAg
ICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAgIFRPcGVyYXRvciBvcDsKICAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7CkBAIC0zMzksOCArMzM2LDgg
QEAgdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmll
cjsKICAgICAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAgICAgICBUUGFyYW1l
dGVyIHBhcmFtOwotICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVMaW5lOwotICAgICAgICAgICAg
VFR5cGVMaXN0KiB0eXBlTGlzdDsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7CisgICAgICAg
ICAgICBURmllbGRMaXN0KiBmaWVsZExpc3Q7CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07CiB9
CkBAIC0zNTIsMjEgKzM0OSw0MSBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICMgZGVmaW5lIFlZ
U1RZUEVfSVNfVFJJVklBTCAxCiAjZW5kaWYKIAorI2lmICEgZGVmaW5lZCBZWUxUWVBFICYmICEg
ZGVmaW5lZCBZWUxUWVBFX0lTX0RFQ0xBUkVECit0eXBlZGVmIHN0cnVjdCBZWUxUWVBFCit7Cisg
IGludCBmaXJzdF9saW5lOworICBpbnQgZmlyc3RfY29sdW1uOworICBpbnQgbGFzdF9saW5lOwor
ICBpbnQgbGFzdF9jb2x1bW47Cit9IFlZTFRZUEU7CisjIGRlZmluZSB5eWx0eXBlIFlZTFRZUEUg
Lyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCisjIGRlZmluZSBZWUxUWVBFX0lT
X0RFQ0xBUkVEIDEKKyMgZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCisjZW5kaWYKIAogCiAv
KiBDb3B5IHRoZSBzZWNvbmQgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCiAKIAotZXh0
ZXJuIGludCB5eWxleChZWVNUWVBFKiB5eWx2YWxfcGFyYW0sIHZvaWQqIHl5c2Nhbm5lcik7Ci1l
eHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJl
YXNvbik7CitleHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbCwgWVlMVFlQRSogeXlsbG9j
LCB2b2lkKiB5eXNjYW5uZXIpOworc3RhdGljIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2Ms
IFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAKLSNkZWZpbmUg
RlJBR19WRVJUX09OTFkoUywgTCkgeyAgXAotICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9
IFNIX0ZSQUdNRU5UX1NIQURFUiAmJiAgXAotICAgICAgICBjb250ZXh0LT5zaGFkZXJUeXBlICE9
IFNIX1ZFUlRFWF9TSEFERVIpIHsgIFwKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBw
b3J0ZWQgaW4gdmVydGV4L2ZyYWdtZW50IHNoYWRlcnMgb25seSAiLCBTKTsgIFwKLSAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOyAgXAotICAgIH0gIFwKLX0KKyNkZWZpbmUgWVlMTE9DX0RFRkFV
TFQoQ3VycmVudCwgUmhzLCBOKSAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
aWYgKFlZSUQoTikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDEpLmZpcnN0X2Zp
bGU7ICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAxKS5m
aXJzdF9saW5lOyAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhz
LCBOKS5sYXN0X2ZpbGU7ICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhT
TE9DKFJocywgTikubGFzdF9saW5lOyAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZWxzZSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKEN1cnJl
bnQpLmZpcnN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfZmlsZTsgICBcCisgICAgICAg
IChDdXJyZW50KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2xpbmU7ICAgXAor
ICAgICAgICAoQ3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2ZpbGU7
ICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMCkubGFz
dF9saW5lOyAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICB9IHdoaWxlICgwKQogCiAjZGVmaW5lIFZFUlRFWF9PTkxZ
KFMsIEwpIHsgIFwKICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hB
REVSKSB7ICBcCkBAIC01NDIsMTQgKzU1OSwxNiBAQCB2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElO
RlJJTkdFUyBPTiBVU0VSCiAKICNpZiAoISBkZWZpbmVkIHl5b3ZlcmZsb3cgXAogICAgICAmJiAo
ISBkZWZpbmVkIF9fY3BsdXNwbHVzIFwKLQkgfHwgKGRlZmluZWQgWVlTVFlQRV9JU19UUklWSUFM
ICYmIFlZU1RZUEVfSVNfVFJJVklBTCkpKQorCSB8fCAoZGVmaW5lZCBZWUxUWVBFX0lTX1RSSVZJ
QUwgJiYgWVlMVFlQRV9JU19UUklWSUFMIFwKKwkgICAgICYmIGRlZmluZWQgWVlTVFlQRV9JU19U
UklWSUFMICYmIFlZU1RZUEVfSVNfVFJJVklBTCkpKQogCiAvKiBBIHR5cGUgdGhhdCBpcyBwcm9w
ZXJseSBhbGlnbmVkIGZvciBhbnkgc3RhY2sgbWVtYmVyLiAgKi8KIHVuaW9uIHl5YWxsb2MKIHsK
ICAgeXl0eXBlX2ludDE2IHl5c3M7CiAgIFlZU1RZUEUgeXl2czsKLSAgfTsKKyAgICBZWUxUWVBF
IHl5bHM7Cit9OwogCiAvKiBUaGUgc2l6ZSBvZiB0aGUgbWF4aW11bSBnYXAgYmV0d2VlbiBvbmUg
YWxpZ25lZCBzdGFjayBhbmQgdGhlIG5leHQuICAqLwogIyBkZWZpbmUgWVlTVEFDS19HQVBfTUFY
SU1VTSAoc2l6ZW9mICh1bmlvbiB5eWFsbG9jKSAtIDEpCkBAIC01NTcsOCArNTc2LDggQEAgdW5p
b24geXlhbGxvYwogLyogVGhlIHNpemUgb2YgYW4gYXJyYXkgbGFyZ2UgdG8gZW5vdWdoIHRvIGhv
bGQgYWxsIHN0YWNrcywgZWFjaCB3aXRoCiAgICBOIGVsZW1lbnRzLiAgKi8KICMgZGVmaW5lIFlZ
U1RBQ0tfQllURVMoTikgXAotICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNp
emVvZiAoWVlTVFlQRSkpIFwKLSAgICAgICsgWVlTVEFDS19HQVBfTUFYSU1VTSkKKyAgICAgKChO
KSAqIChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUpICsgc2l6ZW9mIChZ
WUxUWVBFKSkgXAorICAgICAgKyAyICogWVlTVEFDS19HQVBfTUFYSU1VTSkKIAogLyogQ29weSBD
T1VOVCBvYmplY3RzIGZyb20gRlJPTSB0byBUTy4gIFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9u
IGRvCiAgICBub3Qgb3ZlcmxhcC4gICovCkBAIC01OTcsMjIgKzYxNiwyMiBAQCB1bmlvbiB5eWFs
bG9jCiAjZW5kaWYKIAogLyogWVlGSU5BTCAtLSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0
aW9uIHN0YXRlLiAgKi8KLSNkZWZpbmUgWVlGSU5BTCAgNzEKKyNkZWZpbmUgWVlGSU5BTCAgNzQK
IC8qIFlZTEFTVCAtLSBMYXN0IGluZGV4IGluIFlZVEFCTEUuICAqLwotI2RlZmluZSBZWUxBU1Qg
ICAxNDE2CisjZGVmaW5lIFlZTEFTVCAgIDE0OTAKIAogLyogWVlOVE9LRU5TIC0tIE51bWJlciBv
ZiB0ZXJtaW5hbHMuICAqLwotI2RlZmluZSBZWU5UT0tFTlMgIDk2CisjZGVmaW5lIFlZTlRPS0VO
UyAgOTUKIC8qIFlZTk5UUyAtLSBOdW1iZXIgb2Ygbm9udGVybWluYWxzLiAgKi8KLSNkZWZpbmUg
WVlOTlRTICA4MworI2RlZmluZSBZWU5OVFMgIDg0CiAvKiBZWU5SVUxFUyAtLSBOdW1iZXIgb2Yg
cnVsZXMuICAqLwotI2RlZmluZSBZWU5SVUxFUyAgMjAxCisjZGVmaW5lIFlZTlJVTEVTICAyMDIK
IC8qIFlZTlJVTEVTIC0tIE51bWJlciBvZiBzdGF0ZXMuICAqLwotI2RlZmluZSBZWU5TVEFURVMg
IDMwNAorI2RlZmluZSBZWU5TVEFURVMgIDMwNwogCiAvKiBZWVRSQU5TTEFURShZWUxFWCkgLS0g
Qmlzb24gc3ltYm9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZTEVYLiAgKi8KICNkZWZpbmUg
WVlVTkRFRlRPSyAgMgotI2RlZmluZSBZWU1BWFVUT0sgICAzNTAKKyNkZWZpbmUgWVlNQVhVVE9L
ICAgMzQ5CiAKICNkZWZpbmUgWVlUUkFOU0xBVEUoWVlYKQkJCQkJCVwKICAgKCh1bnNpZ25lZCBp
bnQpIChZWVgpIDw9IFlZTUFYVVRPSyA/IHl5dHJhbnNsYXRlW1lZWF0gOiBZWVVOREVGVE9LKQpA
QCAtNjU0LDggKzY3Myw3IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXl0cmFuc2xhdGVb
XSAKICAgICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAg
ICA2MiwgICAgNjMsICAgIDY0LAogICAgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5
LCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsCiAgICAgICA3NSwgICAgNzYsICAg
IDc3LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIDgzLCAgICA4NCwKLSAg
ICAgIDg1LCAgICA4NiwgICAgODcsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICA5Miwg
ICAgOTMsICAgIDk0LAotICAgICAgOTUKKyAgICAgIDg1LCAgICA4NiwgICAgODcsICAgIDg4LCAg
ICA4OSwgICAgOTAsICAgIDkxLCAgICA5MiwgICAgOTMsICAgIDk0CiB9OwogCiAjaWYgWVlERUJV
RwpAQCAtNjYzLDExNSArNjgxLDExNiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJh
bnNsYXRlW10gCiAgICBZWVJIUy4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXBy
aHNbXSA9CiB7Ci0gICAgICAgMCwgICAgIDAsICAgICAzLCAgICAgNSwgICAgIDcsICAgICA5LCAg
ICAxMSwgICAgMTMsICAgIDE3LCAgICAxOSwKLSAgICAgIDI0LCAgICAyNiwgICAgMzAsICAgIDMz
LCAgICAzNiwgICAgMzgsICAgIDQwLCAgICA0MiwgICAgNDYsICAgIDQ5LAotICAgICAgNTIsICAg
IDU1LCAgICA1NywgICAgNjAsICAgIDY0LCAgICA2NywgICAgNjksICAgIDcxLCAgICA3MywgICAg
NzUsCi0gICAgICA3OCwgICAgODEsICAgIDg0LCAgICA4NiwgICAgODgsICAgIDkwLCAgICA5Miwg
ICAgOTYsICAgMTAwLCAgIDEwMiwKLSAgICAgMTA2LCAgIDExMCwgICAxMTIsICAgMTE0LCAgIDEx
OCwgICAxMjIsICAgMTI2LCAgIDEzMCwgICAxMzIsICAgMTM2LAotICAgICAxNDAsICAgMTQyLCAg
IDE0NCwgICAxNDYsICAgMTQ4LCAgIDE1MiwgICAxNTQsICAgMTU4LCAgIDE2MCwgICAxNjQsCi0g
ICAgIDE2NiwgICAxNzIsICAgMTc0LCAgIDE3OCwgICAxODAsICAgMTgyLCAgIDE4NCwgICAxODYs
ICAgMTg4LCAgIDE5MCwKLSAgICAgMTk0LCAgIDE5NiwgICAxOTksICAgMjAyLCAgIDIwNywgICAy
MTAsICAgMjEyLCAgIDIxNCwgICAyMTcsICAgMjIxLAotICAgICAyMjUsICAgMjI4LCAgIDIzNCwg
ICAyMzgsICAgMjQxLCAgIDI0NSwgICAyNDgsICAgMjQ5LCAgIDI1MSwgICAyNTMsCi0gICAgIDI1
NSwgICAyNTcsICAgMjU5LCAgIDI2MywgICAyNjksICAgMjc2LCAgIDI4MiwgICAyODQsICAgMjg3
LCAgIDI5MiwKLSAgICAgMjk4LCAgIDMwMywgICAzMDYsICAgMzA4LCAgIDMxMSwgICAzMTMsICAg
MzE1LCAgIDMxNywgICAzMjAsICAgMzIyLAotICAgICAzMjQsICAgMzI3LCAgIDMyOSwgICAzMzEs
ICAgMzMzLCAgIDMzNSwgICAzNDAsICAgMzQyLCAgIDM0NCwgICAzNDYsCisgICAgICAgMCwgICAg
IDAsICAgICAzLCAgICAgNSwgICAgIDcsICAgICA5LCAgICAxMSwgICAgMTMsICAgIDE1LCAgICAx
NywKKyAgICAgIDIxLCAgICAyMywgICAgMjgsICAgIDMwLCAgICAzNCwgICAgMzcsICAgIDQwLCAg
ICA0MiwgICAgNDQsICAgIDQ2LAorICAgICAgNTAsICAgIDUzLCAgICA1NiwgICAgNTksICAgIDYx
LCAgICA2NCwgICAgNjgsICAgIDcxLCAgICA3MywgICAgNzUsCisgICAgICA3NywgICAgODAsICAg
IDgzLCAgICA4NiwgICAgODgsICAgIDkwLCAgICA5MiwgICAgOTQsICAgIDk4LCAgIDEwMiwKKyAg
ICAgMTA0LCAgIDEwOCwgICAxMTIsICAgMTE0LCAgIDExNiwgICAxMjAsICAgMTI0LCAgIDEyOCwg
ICAxMzIsICAgMTM0LAorICAgICAxMzgsICAgMTQyLCAgIDE0NCwgICAxNDYsICAgMTQ4LCAgIDE1
MCwgICAxNTQsICAgMTU2LCAgIDE2MCwgICAxNjIsCisgICAgIDE2NiwgICAxNjgsICAgMTc0LCAg
IDE3NiwgICAxODAsICAgMTgyLCAgIDE4NCwgICAxODYsICAgMTg4LCAgIDE5MCwKKyAgICAgMTky
LCAgIDE5NiwgICAxOTgsICAgMjAxLCAgIDIwNCwgICAyMDksICAgMjEyLCAgIDIxNCwgICAyMTYs
ICAgMjE5LAorICAgICAyMjMsICAgMjI3LCAgIDIzMCwgICAyMzYsICAgMjQwLCAgIDI0MywgICAy
NDcsICAgMjUwLCAgIDI1MSwgICAyNTMsCisgICAgIDI1NSwgICAyNTcsICAgMjU5LCAgIDI2MSwg
ICAyNjUsICAgMjcxLCAgIDI3OCwgICAyODQsICAgMjg2LCAgIDI4OSwKKyAgICAgMjk0LCAgIDMw
MCwgICAzMDUsICAgMzA4LCAgIDMxMCwgICAzMTMsICAgMzE1LCAgIDMxNywgICAzMTksICAgMzIy
LAorICAgICAzMjQsICAgMzI2LCAgIDMyOSwgICAzMzEsICAgMzMzLCAgIDMzNSwgICAzMzcsICAg
MzQyLCAgIDM0NCwgICAzNDYsCiAgICAgIDM0OCwgICAzNTAsICAgMzUyLCAgIDM1NCwgICAzNTYs
ICAgMzU4LCAgIDM2MCwgICAzNjIsICAgMzY0LCAgIDM2NiwKLSAgICAgMzY4LCAgIDM3MCwgICAz
NzIsICAgMzc0LCAgIDM3NiwgICAzNzgsICAgMzgwLCAgIDM4MiwgICAzODQsICAgMzg1LAotICAg
ICAzOTIsICAgMzkzLCAgIDM5OSwgICA0MDEsICAgNDA0LCAgIDQwOCwgICA0MTAsICAgNDE0LCAg
IDQxNiwgICA0MjEsCi0gICAgIDQyMywgICA0MjUsICAgNDI3LCAgIDQyOSwgICA0MzEsICAgNDMz
LCAgIDQzNSwgICA0MzcsICAgNDM5LCAgIDQ0MiwKLSAgICAgNDQzLCAgIDQ0NCwgICA0NTAsICAg
NDUyLCAgIDQ1NCwgICA0NTUsICAgNDU4LCAgIDQ1OSwgICA0NjIsICAgNDY1LAotICAgICA0Njks
ICAgNDcxLCAgIDQ3NCwgICA0NzYsICAgNDc5LCAgIDQ4NSwgICA0ODksICAgNDkxLCAgIDQ5Mywg
ICA0OTgsCi0gICAgIDQ5OSwgICA1MDYsICAgNTA3LCAgIDUxNiwgICA1MTcsICAgNTI1LCAgIDUy
NywgICA1MjksICAgNTMxLCAgIDUzMiwKLSAgICAgNTM1LCAgIDUzOSwgICA1NDIsICAgNTQ1LCAg
IDU0OCwgICA1NTIsICAgNTU1LCAgIDU1NywgICA1NjAsICAgNTYyLAotICAgICA1NjQsICAgNTY1
CisgICAgIDM2OCwgICAzNzAsICAgMzcyLCAgIDM3NCwgICAzNzYsICAgMzc4LCAgIDM4MCwgICAz
ODIsICAgMzg0LCAgIDM4NiwKKyAgICAgMzg3LCAgIDM5NCwgICAzOTUsICAgNDAxLCAgIDQwMywg
ICA0MDYsICAgNDEwLCAgIDQxMiwgICA0MTYsICAgNDE4LAorICAgICA0MjMsICAgNDI1LCAgIDQy
NywgICA0MjksICAgNDMxLCAgIDQzMywgICA0MzUsICAgNDM3LCAgIDQzOSwgICA0NDEsCisgICAg
IDQ0NCwgICA0NDUsICAgNDQ2LCAgIDQ1MiwgICA0NTQsICAgNDU2LCAgIDQ1NywgICA0NjAsICAg
NDYxLCAgIDQ2NCwKKyAgICAgNDY3LCAgIDQ3MSwgICA0NzMsICAgNDc2LCAgIDQ3OCwgICA0ODEs
ICAgNDg3LCAgIDQ5MSwgICA0OTMsICAgNDk1LAorICAgICA1MDAsICAgNTAxLCAgIDUwOCwgICA1
MDksICAgNTE4LCAgIDUxOSwgICA1MjcsICAgNTI5LCAgIDUzMSwgICA1MzMsCisgICAgIDUzNCwg
ICA1MzcsICAgNTQxLCAgIDU0NCwgICA1NDcsICAgNTUwLCAgIDU1NCwgICA1NTcsICAgNTU5LCAg
IDU2MiwKKyAgICAgNTY0LCAgIDU2NiwgICA1NjcKIH07CiAKIC8qIFlZUkhTIC0tIEEgYC0xJy1z
ZXBhcmF0ZWQgbGlzdCBvZiB0aGUgcnVsZXMnIFJIUy4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBl
X2ludDE2IHl5cmhzW10gPQogewotICAgICAxNzUsICAgICAwLCAgICAtMSwgICAgNDUsICAgIC0x
LCAgICA5NywgICAgLTEsICAgIDQ4LCAgICAtMSwgICAgNDcsCi0gICAgICAtMSwgICAgNDksICAg
IC0xLCAgICA3MiwgICAxMjQsICAgIDczLCAgICAtMSwgICAgOTgsICAgIC0xLCAgICA5OSwKLSAg
ICAgIDc0LCAgIDEwMCwgICAgNzUsICAgIC0xLCAgIDEwMSwgICAgLTEsICAgIDk5LCAgICA3OCwg
ICAgNTAsICAgIC0xLAotICAgICAgOTksICAgIDUzLCAgICAtMSwgICAgOTksICAgIDU0LCAgICAt
MSwgICAxMjQsICAgIC0xLCAgIDEwMiwgICAgLTEsCi0gICAgIDEwMywgICAgLTEsICAgIDk5LCAg
ICA3OCwgICAxMDMsICAgIC0xLCAgIDEwNSwgICAgNzMsICAgIC0xLCAgIDEwNCwKLSAgICAgIDcz
LCAgICAtMSwgICAxMDYsICAgIDM5LCAgICAtMSwgICAxMDYsICAgIC0xLCAgIDEwNiwgICAxMjIs
ICAgIC0xLAotICAgICAxMDUsICAgIDc5LCAgIDEyMiwgICAgLTEsICAgMTA3LCAgICA3MiwgICAg
LTEsICAgMTQyLCAgICAtMSwgICAgNDUsCi0gICAgICAtMSwgICAgNTAsICAgIC0xLCAgICA5OSwg
ICAgLTEsICAgIDUzLCAgIDEwOCwgICAgLTEsICAgIDU0LCAgIDEwOCwKLSAgICAgIC0xLCAgIDEw
OSwgICAxMDgsICAgIC0xLCAgICA4NiwgICAgLTEsICAgIDg0LCAgICAtMSwgICAgODMsICAgIC0x
LAotICAgICAxMDgsICAgIC0xLCAgIDExMCwgICAgODcsICAgMTA4LCAgICAtMSwgICAxMTAsICAg
IDg4LCAgIDEwOCwgICAgLTEsCi0gICAgIDExMCwgICAgLTEsICAgMTExLCAgICA4NiwgICAxMTAs
ICAgIC0xLCAgIDExMSwgICAgODQsICAgMTEwLCAgICAtMSwKLSAgICAgMTExLCAgICAtMSwgICAx
MTIsICAgIC0xLCAgIDExMywgICAgOTAsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDkxLAotICAg
ICAxMTIsICAgIC0xLCAgIDExMywgICAgNTUsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDU2LCAg
IDExMiwgICAgLTEsCi0gICAgIDExMywgICAgLTEsICAgMTE0LCAgICA1NywgICAxMTMsICAgIC0x
LCAgIDExNCwgICAgNTgsICAgMTEzLCAgICAtMSwKLSAgICAgMTE0LCAgICAtMSwgICAxMTUsICAg
IC0xLCAgIDExNiwgICAgLTEsICAgMTE3LCAgICAtMSwgICAxMTgsICAgIDU5LAotICAgICAxMTcs
ICAgIC0xLCAgIDExOCwgICAgLTEsICAgMTE5LCAgICA2MSwgICAxMTgsICAgIC0xLCAgIDExOSwg
ICAgLTEsCi0gICAgIDEyMCwgICAgNjAsICAgMTE5LCAgICAtMSwgICAxMjAsICAgIC0xLCAgIDEy
MCwgICAgOTUsICAgMTI0LCAgICA4MCwKLSAgICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAg
IDEwOCwgICAxMjMsICAgMTIyLCAgICAtMSwgICAgODEsICAgIC0xLAotICAgICAgNjIsICAgIC0x
LCAgICA2MywgICAgLTEsICAgIDY0LCAgICAtMSwgICAgNzEsICAgIC0xLCAgIDEyMiwgICAgLTEs
Ci0gICAgIDEyNCwgICAgNzksICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEyNywgICAg
ODIsICAgIC0xLCAgIDEzNSwKLSAgICAgIDgyLCAgICAtMSwgICAgIDcsICAgMTQwLCAgIDE0MSwg
ICAgODIsICAgIC0xLCAgIDEyOCwgICAgNzMsICAgIC0xLAotICAgICAxMzAsICAgIC0xLCAgIDEy
OSwgICAgLTEsICAgMTMwLCAgIDEzMiwgICAgLTEsICAgMTI5LCAgICA3OSwgICAxMzIsCi0gICAg
ICAtMSwgICAxMzcsICAgIDQ1LCAgICA3MiwgICAgLTEsICAgMTM5LCAgICA0NSwgICAgLTEsICAg
MTM5LCAgICA0NSwKLSAgICAgIDc0LCAgIDEyNSwgICAgNzUsICAgIC0xLCAgIDEzOCwgICAxMzMs
ICAgMTMxLCAgICAtMSwgICAxMzMsICAgMTMxLAotICAgICAgLTEsICAgMTM4LCAgIDEzMywgICAx
MzQsICAgIC0xLCAgIDEzMywgICAxMzQsICAgIC0xLCAgICAtMSwgICAgMzMsCi0gICAgICAtMSwg
ICAgMzQsICAgIC0xLCAgICAzNSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAxMzYsICAgIC0xLCAg
IDEzNSwKLSAgICAgIDc5LCAgICA0NSwgICAgLTEsICAgMTM1LCAgICA3OSwgICAgNDUsICAgIDc0
LCAgICA3NSwgICAgLTEsICAgMTM1LAotICAgICAgNzksICAgIDQ1LCAgICA3NCwgICAxMjUsICAg
IDc1LCAgICAtMSwgICAxMzUsICAgIDc5LCAgICA0NSwgICAgODEsCi0gICAgIDE1MCwgICAgLTEs
ICAgMTM3LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3NCwK
LSAgICAgIDc1LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3NCwgICAxMjUsICAgIDc1LCAgICAt
MSwgICAxMzcsICAgIDQ1LAotICAgICAgODEsICAgMTUwLCAgICAtMSwgICAgIDMsICAgIDQ1LCAg
ICAtMSwgICAxMzksICAgIC0xLCAgIDEzOCwgICAxMzksCi0gICAgICAtMSwgICAgIDksICAgIC0x
LCAgICAgOCwgICAgLTEsICAgIDM3LCAgICAtMSwgICAgIDMsICAgIDM3LCAgICAtMSwKLSAgICAg
IDM2LCAgICAtMSwgICAxNDEsICAgIC0xLCAgIDE0MCwgICAxNDEsICAgIC0xLCAgICAgNCwgICAg
LTEsICAgICA1LAotICAgICAgLTEsICAgICA2LCAgICAtMSwgICAxNDIsICAgIC0xLCAgIDE0Miwg
ICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsCi0gICAgICAzOSwgICAgLTEsICAgIDExLCAgICAt
MSwgICAgMTIsICAgIC0xLCAgICAxMCwgICAgLTEsICAgIDI3LCAgICAtMSwKLSAgICAgIDI4LCAg
ICAtMSwgICAgMjksICAgIC0xLCAgICAyMSwgICAgLTEsICAgIDIyLCAgICAtMSwgICAgMjMsICAg
IC0xLAotICAgICAgMjQsICAgIC0xLCAgICAyNSwgICAgLTEsICAgIDI2LCAgICAtMSwgICAgMzAs
ICAgIC0xLCAgICAzMSwgICAgLTEsCi0gICAgICAzMiwgICAgLTEsICAgIDQxLCAgICAtMSwgICAg
NDIsICAgIC0xLCAgICA0MywgICAgLTEsICAgIDQ0LCAgICAtMSwKLSAgICAgMTQzLCAgICAtMSwg
ICAgNDYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDQ1LCAgICA3NiwgICAxNDQsICAgMTQ2LAot
ICAgICAgNzcsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDc2LCAgIDE0NSwgICAxNDYsICAgIDc3
LCAgICAtMSwgICAxNDcsCi0gICAgICAtMSwgICAxNDYsICAgMTQ3LCAgICAtMSwgICAxMzksICAg
MTQ4LCAgICA4MiwgICAgLTEsICAgMTQ5LCAgICAtMSwKLSAgICAgMTQ4LCAgICA3OSwgICAxNDks
ICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDQ1LCAgICA3NCwgICAxMjUsICAgIDc1LAotICAgICAg
LTEsICAgMTIyLCAgICAtMSwgICAxMjYsICAgIC0xLCAgIDE1NCwgICAgLTEsICAgMTUzLCAgICAt
MSwgICAxNTEsCi0gICAgICAtMSwgICAxNjMsICAgIC0xLCAgIDE2NCwgICAgLTEsICAgMTY3LCAg
ICAtMSwgICAxNzQsICAgIC0xLCAgICA3NiwKLSAgICAgIDc3LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA3NiwgICAxNTUsICAgMTYyLCAgIDE1NiwgICAgNzcsICAgIC0xLAotICAgICAxNjEsICAg
IC0xLCAgIDE1MywgICAgLTEsICAgIC0xLCAgIDE1OSwgICAxNjEsICAgIC0xLCAgICAtMSwgICAx
NjAsCi0gICAgIDE1MywgICAgLTEsICAgIDc2LCAgICA3NywgICAgLTEsICAgIDc2LCAgIDE2Miwg
ICAgNzcsICAgIC0xLCAgIDE1MiwKLSAgICAgIC0xLCAgIDE2MiwgICAxNTIsICAgIC0xLCAgICA4
MiwgICAgLTEsICAgMTI0LCAgICA4MiwgICAgLTEsICAgIDE4LAotICAgICAgNzIsICAgMTI0LCAg
ICA3MywgICAxNjUsICAgIC0xLCAgIDE1OCwgICAgMTYsICAgMTU4LCAgICAtMSwgICAxNTgsCi0g
ICAgICAtMSwgICAxMjQsICAgIC0xLCAgIDEzNywgICAgNDUsICAgIDgxLCAgIDE1MCwgICAgLTEs
ICAgIC0xLCAgICA0MCwKLSAgICAgIDcyLCAgIDE2OCwgICAxNjYsICAgIDczLCAgIDE1NywgICAg
LTEsICAgIC0xLCAgICAxNSwgICAxNjksICAgMTU4LAotICAgICAgNDAsICAgIDcyLCAgIDEyNCwg
ICAgNzMsICAgIDgyLCAgICAtMSwgICAgLTEsICAgIDE3LCAgICA3MiwgICAxNzAsCi0gICAgIDE3
MSwgICAxNzMsICAgIDczLCAgIDE1NywgICAgLTEsICAgMTYzLCAgICAtMSwgICAxNTEsICAgIC0x
LCAgIDE2NiwKLSAgICAgIC0xLCAgICAtMSwgICAxNzIsICAgIDgyLCAgICAtMSwgICAxNzIsICAg
IDgyLCAgIDEyNCwgICAgLTEsICAgIDE0LAotICAgICAgODIsICAgIC0xLCAgICAxMywgICAgODIs
ICAgIC0xLCAgICAyMCwgICAgODIsICAgIC0xLCAgICAyMCwgICAxMjQsCi0gICAgICA4MiwgICAg
LTEsICAgIDE5LCAgICA4MiwgICAgLTEsICAgMTc2LCAgICAtMSwgICAxNzUsICAgMTc2LCAgICAt
MSwKLSAgICAgMTc3LCAgICAtMSwgICAxMjYsICAgIC0xLCAgICAtMSwgICAxMjcsICAgMTc4LCAg
IDE2MSwgICAgLTEKKyAgICAgMTc1LCAgICAgMCwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgNDYs
ICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDk3LAorICAgICAgLTEsICAgIDQ4LCAgICAtMSwgICAg
NDcsICAgIC0xLCAgICA0OSwgICAgLTEsICAgIDcxLCAgIDEyNCwgICAgNzIsCisgICAgICAtMSwg
ICAgOTgsICAgIC0xLCAgICA5OSwgICAgNzMsICAgMTAwLCAgICA3NCwgICAgLTEsICAgMTAxLCAg
ICAtMSwKKyAgICAgIDk5LCAgICA3NywgICAgOTYsICAgIC0xLCAgICA5OSwgICAgNTIsICAgIC0x
LCAgICA5OSwgICAgNTMsICAgIC0xLAorICAgICAxMjQsICAgIC0xLCAgIDEwMiwgICAgLTEsICAg
MTAzLCAgICAtMSwgICAgOTksICAgIDc3LCAgIDEwMywgICAgLTEsCisgICAgIDEwNSwgICAgNzIs
ICAgIC0xLCAgIDEwNCwgICAgNzIsICAgIC0xLCAgIDEwNiwgICAgMzksICAgIC0xLCAgIDEwNiwK
KyAgICAgIC0xLCAgIDEwNiwgICAxMjIsICAgIC0xLCAgIDEwNSwgICAgNzgsICAgMTIyLCAgICAt
MSwgICAxMDcsICAgIDcxLAorICAgICAgLTEsICAgMTQyLCAgICAtMSwgICAgNDUsICAgIC0xLCAg
ICA5OSwgICAgLTEsICAgIDUyLCAgIDEwOCwgICAgLTEsCisgICAgICA1MywgICAxMDgsICAgIC0x
LCAgIDEwOSwgICAxMDgsICAgIC0xLCAgICA4NSwgICAgLTEsICAgIDgzLCAgICAtMSwKKyAgICAg
IDgyLCAgICAtMSwgICAxMDgsICAgIC0xLCAgIDExMCwgICAgODYsICAgMTA4LCAgICAtMSwgICAx
MTAsICAgIDg3LAorICAgICAxMDgsICAgIC0xLCAgIDExMCwgICAgLTEsICAgMTExLCAgICA4NSwg
ICAxMTAsICAgIC0xLCAgIDExMSwgICAgODMsCisgICAgIDExMCwgICAgLTEsICAgMTExLCAgICAt
MSwgICAxMTIsICAgIC0xLCAgIDExMywgICAgODksICAgMTEyLCAgICAtMSwKKyAgICAgMTEzLCAg
ICA5MCwgICAxMTIsICAgIC0xLCAgIDExMywgICAgNTQsICAgMTEyLCAgICAtMSwgICAxMTMsICAg
IDU1LAorICAgICAxMTIsICAgIC0xLCAgIDExMywgICAgLTEsICAgMTE0LCAgICA1NiwgICAxMTMs
ICAgIC0xLCAgIDExNCwgICAgNTcsCisgICAgIDExMywgICAgLTEsICAgMTE0LCAgICAtMSwgICAx
MTUsICAgIC0xLCAgIDExNiwgICAgLTEsICAgMTE3LCAgICAtMSwKKyAgICAgMTE4LCAgICA1OCwg
ICAxMTcsICAgIC0xLCAgIDExOCwgICAgLTEsICAgMTE5LCAgICA2MCwgICAxMTgsICAgIC0xLAor
ICAgICAxMTksICAgIC0xLCAgIDEyMCwgICAgNTksICAgMTE5LCAgICAtMSwgICAxMjAsICAgIC0x
LCAgIDEyMCwgICAgOTQsCisgICAgIDEyNCwgICAgNzksICAgMTIyLCAgICAtMSwgICAxMjEsICAg
IC0xLCAgIDEwOCwgICAxMjMsICAgMTIyLCAgICAtMSwKKyAgICAgIDgwLCAgICAtMSwgICAgNjEs
ICAgIC0xLCAgICA2MiwgICAgLTEsICAgIDYzLCAgICAtMSwgICAgNzAsICAgIC0xLAorICAgICAx
MjIsICAgIC0xLCAgIDEyNCwgICAgNzgsICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEy
NywgICAgODEsCisgICAgICAtMSwgICAxMzUsICAgIDgxLCAgICAtMSwgICAgIDcsICAgMTQwLCAg
IDE0MSwgICAgODEsICAgIC0xLCAgIDEyOCwKKyAgICAgIDcyLCAgICAtMSwgICAxMzAsICAgIC0x
LCAgIDEyOSwgICAgLTEsICAgMTMwLCAgIDEzMiwgICAgLTEsICAgMTI5LAorICAgICAgNzgsICAg
MTMyLCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3MSwgICAgLTEsICAgMTM5LCAgICA5NiwgICAg
LTEsCisgICAgIDEzOSwgICAgOTYsICAgIDczLCAgIDEyNSwgICAgNzQsICAgIC0xLCAgIDEzOCwg
ICAxMzMsICAgMTMxLCAgICAtMSwKKyAgICAgMTMzLCAgIDEzMSwgICAgLTEsICAgMTM4LCAgIDEz
MywgICAxMzQsICAgIC0xLCAgIDEzMywgICAxMzQsICAgIC0xLAorICAgICAgLTEsICAgIDMzLCAg
ICAtMSwgICAgMzQsICAgIC0xLCAgICAzNSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAxMzYsCisg
ICAgICAtMSwgICAxMzUsICAgIDc4LCAgICA5NiwgICAgLTEsICAgMTM1LCAgICA3OCwgICAgOTYs
ICAgIDczLCAgICA3NCwKKyAgICAgIC0xLCAgIDEzNSwgICAgNzgsICAgIDk2LCAgICA3MywgICAx
MjUsICAgIDc0LCAgICAtMSwgICAxMzUsICAgIDc4LAorICAgICAgOTYsICAgIDgwLCAgIDE1MCwg
ICAgLTEsICAgMTM3LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICAtMSwgICAxMzcsCisgICAgICA5
NiwgICAgNzMsICAgIDc0LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICA3MywgICAxMjUsICAgIDc0
LCAgICAtMSwKKyAgICAgMTM3LCAgICA5NiwgICAgODAsICAgMTUwLCAgICAtMSwgICAgIDMsICAg
IDQ1LCAgICAtMSwgICAxMzksICAgIC0xLAorICAgICAxMzgsICAgMTM5LCAgICAtMSwgICAgIDks
ICAgIC0xLCAgICAgOCwgICAgLTEsICAgIDM3LCAgICAtMSwgICAgIDMsCisgICAgICAzNywgICAg
LTEsICAgIDM2LCAgICAtMSwgICAxNDEsICAgIC0xLCAgIDE0MCwgICAxNDEsICAgIC0xLCAgICAg
NCwKKyAgICAgIC0xLCAgICAgNSwgICAgLTEsICAgICA2LCAgICAtMSwgICAxNDIsICAgIC0xLCAg
IDE0MiwgICAgNzMsICAgMTI1LAorICAgICAgNzQsICAgIC0xLCAgICAzOSwgICAgLTEsICAgIDEx
LCAgICAtMSwgICAgMTIsICAgIC0xLCAgICAxMCwgICAgLTEsCisgICAgICAyNywgICAgLTEsICAg
IDI4LCAgICAtMSwgICAgMjksICAgIC0xLCAgICAyMSwgICAgLTEsICAgIDIyLCAgICAtMSwKKyAg
ICAgIDIzLCAgICAtMSwgICAgMjQsICAgIC0xLCAgICAyNSwgICAgLTEsICAgIDI2LCAgICAtMSwg
ICAgMzAsICAgIC0xLAorICAgICAgMzEsICAgIC0xLCAgICAzMiwgICAgLTEsICAgIDQxLCAgICAt
MSwgICAgNDIsICAgIC0xLCAgICA0MywgICAgLTEsCisgICAgICA0NCwgICAgLTEsICAgMTQzLCAg
ICAtMSwgICAgNDYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDk2LCAgICA3NSwKKyAgICAgMTQ0
LCAgIDE0NiwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDc1LCAgIDE0NSwgICAxNDYs
ICAgIDc2LAorICAgICAgLTEsICAgMTQ3LCAgICAtMSwgICAxNDYsICAgMTQ3LCAgICAtMSwgICAx
MzksICAgMTQ4LCAgICA4MSwgICAgLTEsCisgICAgIDE0OSwgICAgLTEsICAgMTQ4LCAgICA3OCwg
ICAxNDksICAgIC0xLCAgICA5NiwgICAgLTEsICAgIDk2LCAgICA3MywKKyAgICAgMTI1LCAgICA3
NCwgICAgLTEsICAgMTIyLCAgICAtMSwgICAxMjYsICAgIC0xLCAgIDE1NCwgICAgLTEsICAgMTUz
LAorICAgICAgLTEsICAgMTUxLCAgICAtMSwgICAxNjMsICAgIC0xLCAgIDE2NCwgICAgLTEsICAg
MTY3LCAgICAtMSwgICAxNzQsCisgICAgICAtMSwgICAgNzUsICAgIDc2LCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA3NSwgICAxNTUsICAgMTYyLCAgIDE1NiwKKyAgICAgIDc2LCAgICAtMSwgICAx
NjEsICAgIC0xLCAgIDE1MywgICAgLTEsICAgIC0xLCAgIDE1OSwgICAxNjEsICAgIC0xLAorICAg
ICAgLTEsICAgMTYwLCAgIDE1MywgICAgLTEsICAgIDc1LCAgICA3NiwgICAgLTEsICAgIDc1LCAg
IDE2MiwgICAgNzYsCisgICAgICAtMSwgICAxNTIsICAgIC0xLCAgIDE2MiwgICAxNTIsICAgIC0x
LCAgICA4MSwgICAgLTEsICAgMTI0LCAgICA4MSwKKyAgICAgIC0xLCAgICAxOCwgICAgNzEsICAg
MTI0LCAgICA3MiwgICAxNjUsICAgIC0xLCAgIDE1OCwgICAgMTYsICAgMTU4LAorICAgICAgLTEs
ICAgMTU4LCAgICAtMSwgICAxMjQsICAgIC0xLCAgIDEzNywgICAgOTYsICAgIDgwLCAgIDE1MCwg
ICAgLTEsCisgICAgICAtMSwgICAgNDAsICAgIDcxLCAgIDE2OCwgICAxNjYsICAgIDcyLCAgIDE1
NywgICAgLTEsICAgIC0xLCAgICAxNSwKKyAgICAgMTY5LCAgIDE1OCwgICAgNDAsICAgIDcxLCAg
IDEyNCwgICAgNzIsICAgIDgxLCAgICAtMSwgICAgLTEsICAgIDE3LAorICAgICAgNzEsICAgMTcw
LCAgIDE3MSwgICAxNzMsICAgIDcyLCAgIDE1NywgICAgLTEsICAgMTYzLCAgICAtMSwgICAxNTEs
CisgICAgICAtMSwgICAxNjYsICAgIC0xLCAgICAtMSwgICAxNzIsICAgIDgxLCAgICAtMSwgICAx
NzIsICAgIDgxLCAgIDEyNCwKKyAgICAgIC0xLCAgICAxNCwgICAgODEsICAgIC0xLCAgICAxMywg
ICAgODEsICAgIC0xLCAgICAyMCwgICAgODEsICAgIC0xLAorICAgICAgMjAsICAgMTI0LCAgICA4
MSwgICAgLTEsICAgIDE5LCAgICA4MSwgICAgLTEsICAgMTc2LCAgICAtMSwgICAxNzUsCisgICAg
IDE3NiwgICAgLTEsICAgMTc3LCAgICAtMSwgICAxMjYsICAgIC0xLCAgICAtMSwgICAxMjcsICAg
MTc4LCAgIDE2MSwKKyAgICAgIC0xCiB9OwogCiAvKiBZWVJMSU5FW1lZTl0gLS0gc291cmNlIGxp
bmUgd2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8KIHN0YXRpYyBjb25zdCB5
eXR5cGVfdWludDE2IHl5cmxpbmVbXSA9CiB7Ci0gICAgICAgMCwgICAxNjgsICAgMTY4LCAgIDIw
MywgICAyMDYsICAgMjE5LCAgIDIyNCwgICAyMjksICAgMjM1LCAgIDIzOCwKLSAgICAgMzE3LCAg
IDMyMCwgICA0MjEsICAgNDMxLCAgIDQ0NCwgICA0NTIsICAgNTUyLCAgIDU1NSwgICA1NjMsICAg
NTY3LAotICAgICA1NzQsICAgNTc4LCAgIDU4NSwgICA1OTEsICAgNjAwLCAgIDYwOCwgICA2NjMs
ICAgNjcwLCAgIDY4MCwgICA2ODMsCi0gICAgIDY5MywgICA3MDMsICAgNzI0LCAgIDcyNSwgICA3
MjYsICAgNzMxLCAgIDczMiwgICA3NDEsICAgNzUzLCAgIDc1NCwKLSAgICAgNzYyLCAgIDc3Mywg
ICA3NzcsICAgNzc4LCAgIDc4OCwgICA3OTgsICAgODA4LCAgIDgyMSwgICA4MjIsICAgODMyLAot
ICAgICA4NDUsICAgODQ5LCAgIDg1MywgICA4NTcsICAgODU4LCAgIDg3MSwgICA4NzIsICAgODg1
LCAgIDg4NiwgICA4OTksCi0gICAgIDkwMCwgICA5MTcsICAgOTE4LCAgIDkzMSwgICA5MzIsICAg
OTMzLCAgIDkzNCwgICA5MzUsICAgOTM5LCAgIDk0MiwKLSAgICAgOTUzLCAgIDk2MSwgICA5ODgs
ICAgOTkzLCAgMTAwNywgIDEwNDUsICAxMDQ4LCAgMTA1NSwgIDEwNjMsICAxMDg0LAotICAgIDEx
MDUsICAxMTE2LCAgMTE0NSwgIDExNTAsICAxMTYwLCAgMTE2NSwgIDExNzUsICAxMTc4LCAgMTE4
MSwgIDExODQsCi0gICAgMTE5MCwgIDExOTcsICAxMjAwLCAgMTIyMiwgIDEyNDAsICAxMjY0LCAg
MTI4NywgIDEyOTEsICAxMzA5LCAgMTMxNywKLSAgICAxMzQ5LCAgMTM2OSwgIDE0NTgsICAxNDY3
LCAgMTQ5MCwgIDE0OTMsICAxNDk5LCAgMTUwNywgIDE1MTUsICAxNTIzLAotICAgIDE1MzMsICAx
NTQwLCAgMTU0MywgIDE1NDYsICAxNTUyLCAgMTU1NSwgIDE1NzAsICAxNTc0LCAgMTU3OCwgIDE1
ODIsCi0gICAgMTU5MSwgIDE1OTYsICAxNjAxLCAgMTYwNiwgIDE2MTEsICAxNjE2LCAgMTYyMSwg
IDE2MjYsICAxNjMxLCAgMTYzNiwKLSAgICAxNjQyLCAgMTY0OCwgIDE2NTQsICAxNjU5LCAgMTY2
NCwgIDE2NzMsICAxNjgyLCAgMTY4NywgIDE3MDAsICAxNzAwLAotICAgIDE3MTQsICAxNzE0LCAg
MTcyMywgIDE3MjYsICAxNzQxLCAgMTc3NywgIDE3ODEsICAxNzg3LCAgMTc5NSwgIDE4MTEsCi0g
ICAgMTgxNSwgIDE4MTksICAxODIwLCAgMTgyNiwgIDE4MjcsICAxODI4LCAgMTgyOSwgIDE4MzAs
ICAxODM0LCAgMTgzNSwKLSAgICAxODM1LCAgMTgzNSwgIDE4NDUsICAxODQ2LCAgMTg1MCwgIDE4
NTAsICAxODUxLCAgMTg1MSwgIDE4NTYsICAxODU5LAotICAgIDE4NjksICAxODcyLCAgMTg3OCwg
IDE4NzksICAxODgzLCAgMTg5MSwgIDE4OTUsICAxOTA1LCAgMTkxMCwgIDE5MjcsCi0gICAgMTky
NywgIDE5MzIsICAxOTMyLCAgMTkzOSwgIDE5MzksICAxOTQ3LCAgMTk1MCwgIDE5NTYsICAxOTU5
LCAgMTk2NSwKLSAgICAxOTY5LCAgMTk3NiwgIDE5ODMsICAxOTkwLCAgMTk5NywgIDIwMDgsICAy
MDE3LCAgMjAyMSwgIDIwMjgsICAyMDMxLAotICAgIDIwMzcsICAyMDM3CisgICAgICAgMCwgICAx
NzYsICAgMTc2LCAgIDE3NywgICAxODAsICAgMjIzLCAgIDIyNiwgICAyMzksICAgMjQ0LCAgIDI0
OSwKKyAgICAgMjU1LCAgIDI1OCwgICAyNjEsICAgMjY0LCAgIDM1OSwgICAzNjksICAgMzgyLCAg
IDM5MCwgICA0OTAsICAgNDkzLAorICAgICA1MDEsICAgNTA0LCAgIDUxMCwgICA1MTQsICAgNTIx
LCAgIDUyNywgICA1MzYsICAgNTQ0LCAgIDU5OSwgICA2MDksCisgICAgIDYxMiwgICA2MjIsICAg
NjMyLCAgIDY1MywgICA2NTQsICAgNjU1LCAgIDY2MCwgICA2NjEsICAgNjY5LCAgIDY4MCwKKyAg
ICAgNjgxLCAgIDY4OSwgICA3MDAsICAgNzA0LCAgIDcwNSwgICA3MTUsICAgNzI1LCAgIDczNSwg
ICA3NDgsICAgNzQ5LAorICAgICA3NTksICAgNzcyLCAgIDc3NiwgICA3ODAsICAgNzg0LCAgIDc4
NSwgICA3OTgsICAgNzk5LCAgIDgxMiwgICA4MTMsCisgICAgIDgyNiwgICA4MjcsICAgODQ0LCAg
IDg0NSwgICA4NTgsICAgODU5LCAgIDg2MCwgICA4NjEsICAgODYyLCAgIDg2NiwKKyAgICAgODY5
LCAgIDg4MCwgICA4ODgsICAgOTE1LCAgIDkyMCwgICA5MzQsICAgOTg5LCAgIDk5MiwgICA5OTks
ICAxMDA3LAorICAgIDEwMjgsICAxMDQ5LCAgMTA1OSwgIDEwODcsICAxMDkyLCAgMTEwMiwgIDEx
MDcsICAxMTE3LCAgMTEyMCwgIDExMjMsCisgICAgMTEyNiwgIDExMzIsICAxMTM5LCAgMTE0Miwg
IDExNjQsICAxMTgyLCAgMTIwNiwgIDEyMjksICAxMjMzLCAgMTI1MSwKKyAgICAxMjU5LCAgMTI5
MSwgIDEzMTEsICAxMzMyLCAgMTM0MSwgIDEzNjQsICAxMzY3LCAgMTM3MywgIDEzODEsICAxMzg5
LAorICAgIDEzOTcsICAxNDA3LCAgMTQxNCwgIDE0MTcsICAxNDIwLCAgMTQyNiwgIDE0MjksICAx
NDQ0LCAgMTQ0OCwgIDE0NTIsCisgICAgMTQ1NiwgIDE0NjAsICAxNDY1LCAgMTQ3MCwgIDE0NzUs
ICAxNDgwLCAgMTQ4NSwgIDE0OTAsICAxNDk1LCAgMTUwMCwKKyAgICAxNTA1LCAgMTUxMCwgIDE1
MTUsICAxNTIwLCAgMTUyNCwgIDE1MjgsICAxNTM2LCAgMTU0NCwgIDE1NDgsICAxNTYxLAorICAg
IDE1NjEsICAxNTc1LCAgMTU3NSwgIDE1ODQsICAxNTg3LCAgMTYwMywgIDE2MzYsICAxNjQwLCAg
MTY0NiwgIDE2NTMsCisgICAgMTY2OCwgIDE2NzIsICAxNjc2LCAgMTY3NywgIDE2ODMsICAxNjg0
LCAgMTY4NSwgIDE2ODYsICAxNjg3LCAgMTY5MSwKKyAgICAxNjkyLCAgMTY5MiwgIDE2OTIsICAx
NzAyLCAgMTcwMywgIDE3MDcsICAxNzA3LCAgMTcwOCwgIDE3MDgsICAxNzEzLAorICAgIDE3MTYs
ICAxNzI2LCAgMTcyOSwgIDE3MzUsICAxNzM2LCAgMTc0MCwgIDE3NDgsICAxNzUyLCAgMTc2Miwg
IDE3NjcsCisgICAgMTc4NCwgIDE3ODQsICAxNzg5LCAgMTc4OSwgIDE3OTYsICAxNzk2LCAgMTgw
NCwgIDE4MDcsICAxODEzLCAgMTgxNiwKKyAgICAxODIyLCAgMTgyNiwgIDE4MzMsICAxODQwLCAg
MTg0NywgIDE4NTQsICAxODY1LCAgMTg3NCwgIDE4NzgsICAxODg1LAorICAgIDE4ODgsICAxODk0
LCAgMTg5NAogfTsKICNlbmRpZgogCkBAIC03ODgsMTUgKzgwNywxNSBAQCBzdGF0aWMgY29uc3Qg
Y2hhciAqY29uc3QgeXl0bmFtZVtdID0KICAgIk1BVFJJWDMiLCAiTUFUUklYNCIsICJJTl9RVUFM
IiwgIk9VVF9RVUFMIiwgIklOT1VUX1FVQUwiLCAiVU5JRk9STSIsCiAgICJWQVJZSU5HIiwgIlNU
UlVDVCIsICJWT0lEX1RZUEUiLCAiV0hJTEUiLCAiU0FNUExFUjJEIiwgIlNBTVBMRVJDVUJFIiwK
ICAgIlNBTVBMRVJfRVhURVJOQUxfT0VTIiwgIlNBTVBMRVIyRFJFQ1QiLCAiSURFTlRJRklFUiIs
ICJUWVBFX05BTUUiLAotICAiRkxPQVRDT05TVEFOVCIsICJJTlRDT05TVEFOVCIsICJCT09MQ09O
U1RBTlQiLCAiRklFTERfU0VMRUNUSU9OIiwKLSAgIkxFRlRfT1AiLCAiUklHSFRfT1AiLCAiSU5D
X09QIiwgIkRFQ19PUCIsICJMRV9PUCIsICJHRV9PUCIsICJFUV9PUCIsCi0gICJORV9PUCIsICJB
TkRfT1AiLCAiT1JfT1AiLCAiWE9SX09QIiwgIk1VTF9BU1NJR04iLCAiRElWX0FTU0lHTiIsCi0g
ICJBRERfQVNTSUdOIiwgIk1PRF9BU1NJR04iLCAiTEVGVF9BU1NJR04iLCAiUklHSFRfQVNTSUdO
IiwgIkFORF9BU1NJR04iLAotICAiWE9SX0FTU0lHTiIsICJPUl9BU1NJR04iLCAiU1VCX0FTU0lH
TiIsICJMRUZUX1BBUkVOIiwgIlJJR0hUX1BBUkVOIiwKLSAgIkxFRlRfQlJBQ0tFVCIsICJSSUdI
VF9CUkFDS0VUIiwgIkxFRlRfQlJBQ0UiLCAiUklHSFRfQlJBQ0UiLCAiRE9UIiwKLSAgIkNPTU1B
IiwgIkNPTE9OIiwgIkVRVUFMIiwgIlNFTUlDT0xPTiIsICJCQU5HIiwgIkRBU0giLCAiVElMREUi
LCAiUExVUyIsCi0gICJTVEFSIiwgIlNMQVNIIiwgIlBFUkNFTlQiLCAiTEVGVF9BTkdMRSIsICJS
SUdIVF9BTkdMRSIsICJWRVJUSUNBTF9CQVIiLAotICAiQ0FSRVQiLCAiQU1QRVJTQU5EIiwgIlFV
RVNUSU9OIiwgIiRhY2NlcHQiLCAidmFyaWFibGVfaWRlbnRpZmllciIsCisgICJGTE9BVENPTlNU
QU5UIiwgIklOVENPTlNUQU5UIiwgIkJPT0xDT05TVEFOVCIsICJMRUZUX09QIiwgIlJJR0hUX09Q
IiwKKyAgIklOQ19PUCIsICJERUNfT1AiLCAiTEVfT1AiLCAiR0VfT1AiLCAiRVFfT1AiLCAiTkVf
T1AiLCAiQU5EX09QIiwKKyAgIk9SX09QIiwgIlhPUl9PUCIsICJNVUxfQVNTSUdOIiwgIkRJVl9B
U1NJR04iLCAiQUREX0FTU0lHTiIsCisgICJNT0RfQVNTSUdOIiwgIkxFRlRfQVNTSUdOIiwgIlJJ
R0hUX0FTU0lHTiIsICJBTkRfQVNTSUdOIiwgIlhPUl9BU1NJR04iLAorICAiT1JfQVNTSUdOIiwg
IlNVQl9BU1NJR04iLCAiTEVGVF9QQVJFTiIsICJSSUdIVF9QQVJFTiIsICJMRUZUX0JSQUNLRVQi
LAorICAiUklHSFRfQlJBQ0tFVCIsICJMRUZUX0JSQUNFIiwgIlJJR0hUX0JSQUNFIiwgIkRPVCIs
ICJDT01NQSIsICJDT0xPTiIsCisgICJFUVVBTCIsICJTRU1JQ09MT04iLCAiQkFORyIsICJEQVNI
IiwgIlRJTERFIiwgIlBMVVMiLCAiU1RBUiIsICJTTEFTSCIsCisgICJQRVJDRU5UIiwgIkxFRlRf
QU5HTEUiLCAiUklHSFRfQU5HTEUiLCAiVkVSVElDQUxfQkFSIiwgIkNBUkVUIiwKKyAgIkFNUEVS
U0FORCIsICJRVUVTVElPTiIsICIkYWNjZXB0IiwgImlkZW50aWZpZXIiLCAidmFyaWFibGVfaWRl
bnRpZmllciIsCiAgICJwcmltYXJ5X2V4cHJlc3Npb24iLCAicG9zdGZpeF9leHByZXNzaW9uIiwg
ImludGVnZXJfZXhwcmVzc2lvbiIsCiAgICJmdW5jdGlvbl9jYWxsIiwgImZ1bmN0aW9uX2NhbGxf
b3JfbWV0aG9kIiwgImZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyIsCiAgICJmdW5jdGlvbl9jYWxsX2hl
YWRlcl9ub19wYXJhbWV0ZXJzIiwKQEAgLTg0Miw2MCArODYxLDYwIEBAIHN0YXRpYyBjb25zdCB5
eXR5cGVfdWludDE2IHl5dG9rbnVtW10gPQogICAgICAzMTUsICAgMzE2LCAgIDMxNywgICAzMTgs
ICAgMzE5LCAgIDMyMCwgICAzMjEsICAgMzIyLCAgIDMyMywgICAzMjQsCiAgICAgIDMyNSwgICAz
MjYsICAgMzI3LCAgIDMyOCwgICAzMjksICAgMzMwLCAgIDMzMSwgICAzMzIsICAgMzMzLCAgIDMz
NCwKICAgICAgMzM1LCAgIDMzNiwgICAzMzcsICAgMzM4LCAgIDMzOSwgICAzNDAsICAgMzQxLCAg
IDM0MiwgICAzNDMsICAgMzQ0LAotICAgICAzNDUsICAgMzQ2LCAgIDM0NywgICAzNDgsICAgMzQ5
LCAgIDM1MAorICAgICAzNDUsICAgMzQ2LCAgIDM0NywgICAzNDgsICAgMzQ5CiB9OwogIyBlbmRp
ZgogCiAvKiBZWVIxW1lZTl0gLS0gU3ltYm9sIG51bWJlciBvZiBzeW1ib2wgdGhhdCBydWxlIFlZ
TiBkZXJpdmVzLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMVtdID0KIHsKLSAg
ICAgICAwLCAgICA5NiwgICAgOTcsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk4LCAgICA5OCwg
ICAgOTksICAgIDk5LAotICAgICAgOTksICAgIDk5LCAgICA5OSwgICAgOTksICAgMTAwLCAgIDEw
MSwgICAxMDIsICAgMTAyLCAgIDEwMywgICAxMDMsCi0gICAgIDEwNCwgICAxMDQsICAgMTA1LCAg
IDEwNSwgICAxMDYsICAgMTA3LCAgIDEwNywgICAxMDcsICAgMTA4LCAgIDEwOCwKLSAgICAgMTA4
LCAgIDEwOCwgICAxMDksICAgMTA5LCAgIDEwOSwgICAxMTAsICAgMTEwLCAgIDExMCwgICAxMTEs
ICAgMTExLAotICAgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExMywgICAx
MTMsICAgMTE0LCAgIDExNCwgICAxMTQsCi0gICAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwg
ICAxMTgsICAgMTE5LCAgIDExOSwgICAxMjAsICAgMTIwLCAgIDEyMSwKLSAgICAgMTIxLCAgIDEy
MiwgICAxMjIsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjQsICAgMTI0
LAotICAgICAxMjUsICAgMTI2LCAgIDEyNiwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjgsICAg
MTI5LCAgIDEyOSwgICAxMzAsCi0gICAgIDEzMSwgICAxMzEsICAgMTMyLCAgIDEzMiwgICAxMzIs
ICAgMTMyLCAgIDEzMywgICAxMzMsICAgMTMzLCAgIDEzMywKLSAgICAgMTM0LCAgIDEzNSwgICAx
MzUsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM2LCAgIDEzNiwgICAxMzYsICAgMTM2LAotICAg
ICAxMzYsICAgMTM2LCAgIDEzNywgICAxMzcsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM4LCAg
IDEzOCwgICAxMzksCi0gICAgIDEzOSwgICAxNDAsICAgMTQwLCAgIDE0MCwgICAxNDEsICAgMTQx
LCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwKKyAgICAgICAwLCAgICA5NSwgICAgOTYsICAg
IDk2LCAgICA5NywgICAgOTgsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk4LAorICAgICAgOTks
ICAgIDk5LCAgICA5OSwgICAgOTksICAgIDk5LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwg
ICAxMDIsCisgICAgIDEwMywgICAxMDMsICAgMTA0LCAgIDEwNCwgICAxMDUsICAgMTA1LCAgIDEw
NiwgICAxMDcsICAgMTA3LCAgIDEwOCwKKyAgICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA5LCAg
IDEwOSwgICAxMDksICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTExLAorICAgICAxMTEsICAgMTEx
LCAgIDExMiwgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExNCwgICAxMTQs
CisgICAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE4LCAgIDExOSwgICAx
MTksICAgMTIwLCAgIDEyMCwKKyAgICAgMTIxLCAgIDEyMSwgICAxMjIsICAgMTIyLCAgIDEyMywg
ICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTI0LAorICAgICAxMjQsICAgMTI1LCAgIDEy
NiwgICAxMjYsICAgMTI2LCAgIDEyNywgICAxMjgsICAgMTI4LCAgIDEyOSwgICAxMjksCisgICAg
IDEzMCwgICAxMzEsICAgMTMxLCAgIDEzMiwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzMsICAg
MTMzLCAgIDEzMywKKyAgICAgMTMzLCAgIDEzNCwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzUs
ICAgMTM1LCAgIDEzNiwgICAxMzYsICAgMTM2LAorICAgICAxMzYsICAgMTM2LCAgIDEzNiwgICAx
MzcsICAgMTM3LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEzOCwgICAxMzgsCisgICAgIDEzOSwg
ICAxMzksICAgMTQwLCAgIDE0MCwgICAxNDAsICAgMTQxLCAgIDE0MSwgICAxNDIsICAgMTQyLCAg
IDE0MiwKICAgICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQy
LCAgIDE0MiwgICAxNDIsICAgMTQyLAotICAgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAg
MTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0NCwgICAxNDMsCi0gICAgIDE0NSwgICAxNDMs
ICAgMTQ2LCAgIDE0NiwgICAxNDcsICAgMTQ4LCAgIDE0OCwgICAxNDksICAgMTQ5LCAgIDE1MCwK
LSAgICAgMTUxLCAgIDE1MiwgICAxNTIsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1
MywgICAxNTQsICAgMTU1LAotICAgICAxNTYsICAgMTU0LCAgIDE1NywgICAxNTcsICAgMTU5LCAg
IDE1OCwgICAxNjAsICAgMTU4LCAgIDE2MSwgICAxNjEsCi0gICAgIDE2MiwgICAxNjIsICAgMTYz
LCAgIDE2MywgICAxNjQsICAgMTY1LCAgIDE2NSwgICAxNjYsICAgMTY2LCAgIDE2OCwKLSAgICAg
MTY3LCAgIDE2OSwgICAxNjcsICAgMTcwLCAgIDE2NywgICAxNzEsICAgMTcxLCAgIDE3MiwgICAx
NzIsICAgMTczLAotICAgICAxNzMsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwg
ICAxNzUsICAgMTc1LCAgIDE3NiwgICAxNzYsCi0gICAgIDE3OCwgICAxNzcKKyAgICAgMTQyLCAg
IDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAg
MTQ0LAorICAgICAxNDMsICAgMTQ1LCAgIDE0MywgICAxNDYsICAgMTQ2LCAgIDE0NywgICAxNDgs
ICAgMTQ4LCAgIDE0OSwgICAxNDksCisgICAgIDE1MCwgICAxNTEsICAgMTUyLCAgIDE1MiwgICAx
NTMsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1NCwKKyAgICAgMTU1LCAgIDE1Niwg
ICAxNTQsICAgMTU3LCAgIDE1NywgICAxNTksICAgMTU4LCAgIDE2MCwgICAxNTgsICAgMTYxLAor
ICAgICAxNjEsICAgMTYyLCAgIDE2MiwgICAxNjMsICAgMTYzLCAgIDE2NCwgICAxNjUsICAgMTY1
LCAgIDE2NiwgICAxNjYsCisgICAgIDE2OCwgICAxNjcsICAgMTY5LCAgIDE2NywgICAxNzAsICAg
MTY3LCAgIDE3MSwgICAxNzEsICAgMTcyLCAgIDE3MiwKKyAgICAgMTczLCAgIDE3MywgICAxNzQs
ICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NSwgICAxNzUsICAgMTc2LAorICAgICAx
NzYsICAgMTc4LCAgIDE3NwogfTsKIAogLyogWVlSMltZWU5dIC0tIE51bWJlciBvZiBzeW1ib2xz
IGNvbXBvc2luZyByaWdodCBoYW5kIHNpZGUgb2YgcnVsZSBZWU4uICAqLwogc3RhdGljIGNvbnN0
IHl5dHlwZV91aW50OCB5eXIyW10gPQogewotICAgICAgIDAsICAgICAyLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDQsCi0gICAgICAgMSwgICAg
IDMsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAyLCAgICAg
MiwKLSAgICAgICAyLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAyLAotICAgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDMsCi0gICAgICAgMywgICAgIDEsICAg
ICAxLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMywKLSAg
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwg
ICAgIDMsICAgICAxLAotICAgICAgIDUsICAgICAxLCAgICAgMywgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsCi0gICAgICAgMSwgICAgIDIsICAgICAyLCAg
ICAgNCwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMywKLSAgICAgICAy
LCAgICAgNSwgICAgIDMsICAgICAyLCAgICAgMywgICAgIDIsICAgICAwLCAgICAgMSwgICAgIDEs
ICAgICAxLAotICAgICAgIDEsICAgICAxLCAgICAgMywgICAgIDUsICAgICA2LCAgICAgNSwgICAg
IDEsICAgICAyLCAgICAgNCwgICAgIDUsCi0gICAgICAgNCwgICAgIDIsICAgICAxLCAgICAgMiwg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwKLSAgICAgICAyLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDQsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LAorICAgICAgIDAsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDMsCisgICAgICAgMSwgICAgIDQsICAgICAxLCAgICAgMywgICAgIDIs
ICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywKKyAgICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAxLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLAorICAg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAg
ICAgMywgICAgIDEsCisgICAgICAgMywgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAz
LCAgICAgMywgICAgIDMsICAgICAxLCAgICAgMywKKyAgICAgICAzLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLAorICAgICAgIDEs
ICAgICA1LCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsCisgICAgICAgMywgICAgIDEsICAgICAyLCAgICAgMiwgICAgIDQsICAgICAyLCAgICAg
MSwgICAgIDEsICAgICAyLCAgICAgMywKKyAgICAgICAzLCAgICAgMiwgICAgIDUsICAgICAzLCAg
ICAgMiwgICAgIDMsICAgICAyLCAgICAgMCwgICAgIDEsICAgICAxLAorICAgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDMsICAgICA1LCAgICAgNiwgICAgIDUsICAgICAxLCAgICAgMiwgICAgIDQs
CisgICAgICAgNSwgICAgIDQsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAyLCAgICAgMSwKKyAgICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICA0LCAgICAgMSwgICAgIDEsICAgICAxLAogICAgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAwLCAgICAgNiwKLSAgICAgICAwLCAgICAgNSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDEs
ICAgICAzLCAgICAgMSwgICAgIDQsICAgICAxLAotICAgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDAsCi0gICAgICAgMCwg
ICAgIDUsICAgICAxLCAgICAgMSwgICAgIDAsICAgICAyLCAgICAgMCwgICAgIDIsICAgICAyLCAg
ICAgMywKLSAgICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgNSwgICAgIDMsICAgICAx
LCAgICAgMSwgICAgIDQsICAgICAwLAotICAgICAgIDYsICAgICAwLCAgICAgOCwgICAgIDAsICAg
ICA3LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDIsCi0gICAgICAgMywgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwK
LSAgICAgICAwLCAgICAgMworICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDAsCisgICAgICAgNiwgICAgIDAsICAgICA1
LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgNCwKKyAgICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAyLAorICAgICAgIDAsICAgICAwLCAgICAgNSwgICAgIDEsICAgICAxLCAgICAgMCwg
ICAgIDIsICAgICAwLCAgICAgMiwgICAgIDIsCisgICAgICAgMywgICAgIDEsICAgICAyLCAgICAg
MSwgICAgIDIsICAgICA1LCAgICAgMywgICAgIDEsICAgICAxLCAgICAgNCwKKyAgICAgICAwLCAg
ICAgNiwgICAgIDAsICAgICA4LCAgICAgMCwgICAgIDcsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAwLAorICAgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMywgICAgIDIs
ICAgICAxLCAgICAgMiwgICAgIDEsCisgICAgICAgMSwgICAgIDAsICAgICAzCiB9OwogCiAvKiBZ
WURFRkFDVFtTVEFURS1OQU1FXSAtLSBEZWZhdWx0IHJ1bGUgdG8gcmVkdWNlIHdpdGggaW4gc3Rh
dGUKQEAgLTkwMyw0MDAgKzkyMiw0MTYgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIy
W10gPQogICAgbWVhbnMgdGhlIGRlZmF1bHQgaXMgYW4gZXJyb3IuICAqLwogc3RhdGljIGNvbnN0
IHl5dHlwZV91aW50OCB5eWRlZmFjdFtdID0KIHsKLSAgICAgICAwLCAgICAgMCwgICAxMTEsICAg
MTEyLCAgIDExMywgICAgIDAsICAgMTA1LCAgIDEwNCwgICAxMTksICAgMTE3LAotICAgICAxMTgs
ICAgMTIzLCAgIDEyNCwgICAxMjUsICAgMTI2LCAgIDEyNywgICAxMjgsICAgMTIwLCAgIDEyMSwg
ICAxMjIsCi0gICAgIDEyOSwgICAxMzAsICAgMTMxLCAgIDEwOCwgICAxMDYsICAgICAwLCAgIDEx
NiwgICAxMzIsICAgMTMzLCAgIDEzNCwKLSAgICAgMTM1LCAgIDEzNywgICAxOTksICAgMjAwLCAg
ICAgMCwgICAgNzYsICAgIDg2LCAgICAgMCwgICAgOTEsICAgIDk2LAotICAgICAgIDAsICAgMTAy
LCAgICAgMCwgICAxMDksICAgMTE0LCAgIDEzNiwgICAgIDAsICAgMTk2LCAgIDE5OCwgICAxMDcs
Ci0gICAgIDEwMSwgICAgIDAsICAgICAwLCAgIDE0MCwgICAgNzEsICAgICAwLCAgICA3NCwgICAg
ODYsICAgICAwLCAgICA4NywKLSAgICAgIDg4LCAgICA4OSwgICAgNzcsICAgICAwLCAgICA4Niwg
ICAgIDAsICAgIDcyLCAgICA5NywgICAxMDMsICAgMTEwLAotICAgICAgIDAsICAgICAxLCAgIDE5
NywgICAgIDAsICAgMTM4LCAgICAgMCwgICAgIDAsICAgMjAxLCAgICA3OCwgICAgODMsCi0gICAg
ICA4NSwgICAgOTAsICAgICAwLCAgICA5MiwgICAgNzksICAgICAwLCAgICAgMCwgICAgIDIsICAg
ICA1LCAgICAgNCwKLSAgICAgICA2LCAgICAyNywgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzQs
ICAgIDMzLCAgICAzMiwgICAgIDMsICAgICA4LAotICAgICAgMjgsICAgIDEwLCAgICAxNSwgICAg
MTYsICAgICAwLCAgICAgMCwgICAgMjEsICAgICAwLCAgICAzNSwgICAgIDAsCi0gICAgICAzOCwg
ICAgNDEsICAgIDQyLCAgICA0NywgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU1LCAg
ICA1NywKLSAgICAgIDU5LCAgICA3MCwgICAgIDAsICAgIDI1LCAgICA3MywgICAgIDAsICAgICAw
LCAgICAgMCwgICAxNDIsICAgICAwLAotICAgICAgIDAsICAgMTgxLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTU5LCAgIDE2OCwgICAxNzIsCi0gICAgICAzNSwgICAgNjEs
ICAgIDY4LCAgICAgMCwgICAxNTAsICAgICAwLCAgIDExNCwgICAxNTMsICAgMTcwLCAgIDE1MiwK
LSAgICAgMTUxLCAgICAgMCwgICAxNTQsICAgMTU1LCAgIDE1NiwgICAxNTcsICAgIDgwLCAgICA4
MiwgICAgODQsICAgICAwLAotICAgICAgIDAsICAgIDk4LCAgICAgMCwgICAxNDksICAgMTAwLCAg
ICAyOSwgICAgMzAsICAgICAwLCAgICAxMiwgICAgMTMsCi0gICAgICAgMCwgICAgIDAsICAgIDE5
LCAgICAxOCwgICAgIDAsICAgIDIwLCAgICAyMiwgICAgMjQsICAgIDMxLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxMTUsICAgICAwLCAgIDE0Nywg
ICAgIDAsICAgMTQ1LCAgIDE0MSwgICAxNDMsCi0gICAgIDE5MiwgICAxOTEsICAgMTY2LCAgIDE4
MywgICAgIDAsICAgMTk1LCAgIDE5MywgICAgIDAsICAgMTc5LCAgIDE1OCwKLSAgICAgICAwLCAg
ICA2NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjMsICAgICAwLCAgICAgMCwgICAxNzMsICAg
MTY5LAotICAgICAxNzEsICAgICAwLCAgICA5MywgICAgIDAsICAgIDk1LCAgICA5OSwgICAgIDcs
ICAgICAwLCAgICAxNCwgICAgMjYsCi0gICAgICAxMSwgICAgMTcsICAgIDIzLCAgICAzNiwgICAg
MzcsICAgIDQwLCAgICAzOSwgICAgNDUsICAgIDQ2LCAgICA0MywKLSAgICAgIDQ0LCAgICA0OCwg
ICAgNDksICAgIDU0LCAgICA1NiwgICAgNTgsICAgICAwLCAgIDEzOSwgICAgIDAsICAgICAwLAot
ICAgICAxNDQsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTQsICAgICAw
LCAgIDE2MCwgICAgNjIsCi0gICAgICA2OSwgICAgIDAsICAgIDk0LCAgICAgOSwgICAgIDAsICAg
ICAwLCAgIDE0NiwgICAgIDAsICAgMTY1LCAgIDE2NywKLSAgICAgMTg2LCAgIDE4NSwgICAxODgs
ICAgMTY2LCAgIDE3NywgICAgIDAsICAgICAwLCAgICAgMCwgICAgODEsICAgIDYwLAotICAgICAx
NDgsICAgICAwLCAgIDE4NywgICAgIDAsICAgICAwLCAgIDE3NiwgICAxNzQsICAgICAwLCAgICAg
MCwgICAxNjEsCi0gICAgICAgMCwgICAxODksICAgICAwLCAgIDE2NiwgICAgIDAsICAgMTYzLCAg
IDE4MCwgICAxNjIsICAgICAwLCAgIDE5MCwKLSAgICAgMTg0LCAgIDE3NSwgICAxNzgsICAgMTgy
CisgICAgICAgMCwgICAgIDAsICAgMTEyLCAgIDExMywgICAxMTQsICAgICAwLCAgIDEwNiwgICAx
MDUsICAgMTIwLCAgIDExOCwKKyAgICAgMTE5LCAgIDEyNCwgICAxMjUsICAgMTI2LCAgIDEyNywg
ICAxMjgsICAgMTI5LCAgIDEyMSwgICAxMjIsICAgMTIzLAorICAgICAxMzAsICAgMTMxLCAgIDEz
MiwgICAxMDksICAgMTA3LCAgICAgMCwgICAxMTcsICAgMTMzLCAgIDEzNCwgICAxMzUsCisgICAg
IDEzNiwgICAxMzgsICAgMjAwLCAgIDIwMSwgICAgIDAsICAgIDc3LCAgICA4NywgICAgIDAsICAg
IDkyLCAgICA5NywKKyAgICAgICAwLCAgIDEwMywgICAgIDAsICAgMTEwLCAgIDExNSwgICAxMzcs
ICAgICAwLCAgIDE5NywgICAxOTksICAgMTA4LAorICAgICAxMDIsICAgICAwLCAgICAgMiwgICAg
IDMsICAgMTQxLCAgICAgMCwgICAgNzIsICAgICAwLCAgICA3NSwgICAgODcsCisgICAgICAgMCwg
ICAgODgsICAgIDg5LCAgICA5MCwgICAgNzgsICAgICAwLCAgICA4NywgICAgIDAsICAgIDczLCAg
ICAgMiwKKyAgICAgIDk4LCAgIDEwNCwgICAxMTEsICAgICAwLCAgICAgMSwgICAxOTgsICAgICAw
LCAgICAgMCwgICAxMzksICAgICAwLAorICAgICAyMDIsICAgIDc5LCAgICA4NCwgICAgODYsICAg
IDkxLCAgICAgMCwgICAgOTMsICAgIDgwLCAgICAgMCwgICAgIDAsCisgICAgICAgNCwgICAgIDcs
ICAgICA2LCAgICAgOCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzUsICAgIDM0LCAgICAzMywK
KyAgICAgICA1LCAgICAxMCwgICAgMjksICAgIDEyLCAgICAxNywgICAgMTgsICAgICAwLCAgICAg
MCwgICAgMjMsICAgICAwLAorICAgICAgMzYsICAgICAwLCAgICAzOSwgICAgNDIsICAgIDQzLCAg
ICA0OCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsCisgICAgICA1NiwgICAgNTgsICAgIDYw
LCAgICA3MSwgICAgIDAsICAgIDI3LCAgICA3NCwgICAgIDAsICAgICAwLCAgIDE0MywKKyAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTgyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgMTYwLAorICAgICAxNjksICAgMTczLCAgICAzNiwgICAgNjIsICAgIDY5LCAgICAgMCwg
ICAxNTEsICAgICAwLCAgIDExNSwgICAxNTQsCisgICAgIDE3MSwgICAxNTMsICAgMTUyLCAgICAg
MCwgICAxNTUsICAgMTU2LCAgIDE1NywgICAxNTgsICAgIDgxLCAgICA4MywKKyAgICAgIDg1LCAg
ICAgMCwgICAgIDAsICAgIDk5LCAgICAgMCwgICAxNTAsICAgMTAxLCAgICAzMCwgICAgMzEsICAg
ICAwLAorICAgICAgMTQsICAgIDE1LCAgICAgMCwgICAgIDAsICAgIDIxLCAgICAyMCwgICAgIDAs
ICAgIDIyLCAgICAyNCwgICAgMjYsCisgICAgICAzMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAxMTYsICAgMTQ4LCAgICAgMCwgICAxNDYsICAgMTQyLAor
ICAgICAxNDQsICAgICAwLCAgIDE5MywgICAxOTIsICAgMTY3LCAgIDE4NCwgICAgIDAsICAgMTk2
LCAgIDE5NCwgICAgIDAsCisgICAgIDE4MCwgICAxNTksICAgICAwLCAgICA2NSwgICAgNjYsICAg
IDY3LCAgICA2OCwgICAgNjQsICAgICAwLCAgICAgMCwKKyAgICAgMTc0LCAgIDE3MCwgICAxNzIs
ICAgICAwLCAgICA5NCwgICAgIDAsICAgIDk2LCAgIDEwMCwgICAgIDksICAgICAwLAorICAgICAg
MTYsICAgICAyLCAgICAgMywgICAgMTMsICAgIDE5LCAgICAyNSwgICAgMzcsICAgIDM4LCAgICA0
MSwgICAgNDAsCisgICAgICA0NiwgICAgNDcsICAgIDQ0LCAgICA0NSwgICAgNDksICAgIDUwLCAg
ICA1NSwgICAgNTcsICAgIDU5LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAxNDUsICAgMTQw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTk1LAorICAgICAgIDAsICAg
MTYxLCAgICA2MywgICAgNzAsICAgICAwLCAgICA5NSwgICAgMTEsICAgICAwLCAgICAgMCwgICAx
NDcsCisgICAgICAgMCwgICAxNjYsICAgMTY4LCAgIDE4NywgICAxODYsICAgMTg5LCAgIDE2Nywg
ICAxNzgsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICA4MiwgICAgNjEsICAgMTQ5LCAgICAg
MCwgICAxODgsICAgICAwLCAgICAgMCwgICAxNzcsICAgMTc1LAorICAgICAgIDAsICAgICAwLCAg
IDE2MiwgICAgIDAsICAgMTkwLCAgICAgMCwgICAxNjcsICAgICAwLCAgIDE2NCwgICAxODEsCisg
ICAgIDE2MywgICAgIDAsICAgMTkxLCAgIDE4NSwgICAxNzYsICAgMTc5LCAgIDE4MwogfTsKIAog
LyogWVlERUZHT1RPW05URVJNLU5VTV0uICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5
eWRlZmdvdG9bXSA9CiB7Ci0gICAgICAtMSwgICAgOTgsICAgIDk5LCAgIDEwMCwgICAyMjcsICAg
MTAxLCAgIDEwMiwgICAxMDMsICAgMTA0LCAgIDEwNSwKLSAgICAgMTA2LCAgIDEwNywgICAxNDAs
ICAgMTA5LCAgIDExMCwgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTQsICAgMTE1LAotICAgICAx
MTYsICAgMTE3LCAgIDExOCwgICAxMTksICAgMTIwLCAgIDE0MSwgICAxNDIsICAgMjE2LCAgIDE0
MywgICAxMjIsCi0gICAgIDE0NCwgICAxNDUsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDc5LCAg
ICA2MiwgICAgNjMsICAgIDgwLCAgICAzNywKLSAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQx
LCAgICA0MiwgICAgNDMsICAgMTIzLCAgICA0NSwgICAxMjUsICAgIDc1LAotICAgICAxMjcsICAg
MTI4LCAgIDE5NiwgICAxOTcsICAgMTY0LCAgIDE0NywgICAxNDgsICAgMTQ5LCAgIDE1MCwgICAy
MTAsCi0gICAgIDI3NywgICAyOTYsICAgMjUxLCAgIDI1MiwgICAyNTMsICAgMjk3LCAgIDE1MSwg
ICAxNTIsICAgMTUzLCAgIDI4NiwKLSAgICAgMjc2LCAgIDE1NCwgICAyNTcsICAgMjAyLCAgIDI1
NCwgICAyNzIsICAgMjgzLCAgIDI4NCwgICAxNTUsICAgIDQ2LAotICAgICAgNDcsICAgIDQ4LCAg
ICA1NQorICAgICAgLTEsICAgMTk2LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDIyOSwgICAxMDMs
ICAgMTA0LCAgIDEwNSwgICAxMDYsCisgICAgIDEwNywgICAxMDgsICAgMTA5LCAgIDE0MiwgICAx
MTEsICAgMTEyLCAgIDExMywgICAxMTQsICAgMTE1LCAgIDExNiwKKyAgICAgMTE3LCAgIDExOCwg
ICAxMTksICAgMTIwLCAgIDEyMSwgICAxMjIsICAgMTQzLCAgIDE0NCwgICAyMTgsICAgMTQ1LAor
ICAgICAxMjQsICAgMTQ2LCAgIDE0NywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgODIsICAgIDY0
LCAgICA2NSwgICAgODMsCisgICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAg
IDQyLCAgICA0MywgICAxMjUsICAgIDQ1LCAgIDEzMCwKKyAgICAgIDc3LCAgIDEyOCwgICAxMjks
ICAgMTk3LCAgIDE5OCwgICAxNjYsICAgMTQ5LCAgIDE1MCwgICAxNTEsICAgMTUyLAorICAgICAy
MTIsICAgMjgwLCAgIDI5OSwgICAyNTQsICAgMjU1LCAgIDI1NiwgICAzMDAsICAgMTUzLCAgIDE1
NCwgICAxNTUsCisgICAgIDI4OSwgICAyNzksICAgMTU2LCAgIDI2MCwgICAyMDQsICAgMjU3LCAg
IDI3NSwgICAyODYsICAgMjg3LCAgIDE1NywKKyAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDU3
CiB9OwogCiAvKiBZWVBBQ1RbU1RBVEUtTlVNXSAtLSBJbmRleCBpbiBZWVRBQkxFIG9mIHRoZSBw
b3J0aW9uIGRlc2NyaWJpbmcKICAgIFNUQVRFLU5VTS4gICovCi0jZGVmaW5lIFlZUEFDVF9OSU5G
IC0yNjYKKyNkZWZpbmUgWVlQQUNUX05JTkYgLTI2MQogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQx
NiB5eXBhY3RbXSA9CiB7Ci0gICAgMTI1MywgICAtMjAsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAg
MTQ4LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYs
ICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0y
NjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIC0zOSwgIC0yNjYsICAtMjY2LCAgLTI2
NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIC0xOCwgICAgLTIsICAgICA2LCAg
ICAyMSwgICAtNjEsICAtMjY2LCAgICA1MSwKLSAgICAxMjk2LCAgLTI2NiwgIDEzNzAsICAtMjY2
LCAgICAyNSwgIC0yNjYsICAxMjA5LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAx
MzcwLCAgICA0MiwgIC0yNjYsICAtMjY2LCAgICA1MCwgIC0yNjYsICAgIDcxLCAgICA5NSwgIC0y
NjYsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgMTI5NiwgICAxMjMsICAgMTA1LCAgLTI2Niwg
ICAgIDksICAtMjY2LCAgLTI2NiwKLSAgICAgOTc0LCAgLTI2NiwgIC0yNjYsICAgIDgxLCAgLTI2
NiwgIDEyOTYsICAgMjkwLCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgMTI1LCAg
MTI5NiwgICAtMTMsICAtMjY2LCAgIDc3NiwgICA5NzQsICAgIDk5LCAgLTI2NiwgIC0yNjYsCi0g
ICAgLTI2NiwgIC0yNjYsICAgOTc0LCAgIDk3NCwgICA5NzQsICAtMjY2LCAgLTI2NiwgIC0yNjYs
ICAtMjY2LCAgLTI2NiwKLSAgICAgIDM1LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDEwMCwgICAg
LTYsICAxMDQwLCAgIDEwNCwgIC0yNjYsICAgOTc0LAotICAgICAgMzYsICAgLTY0LCAgLTI2Niwg
ICAtMjEsICAgMTAyLCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDExMywgICAxMTcsCi0gICAgIC01
MSwgIC0yNjYsICAgMTA4LCAgLTI2NiwgIC0yNjYsICAxMjk2LCAgIDEyOSwgIDExMDksICAtMjY2
LCAgICA5NywKLSAgICAgMTAzLCAgLTI2NiwgICAxMTIsICAgMTE0LCAgIDEwNiwgICA4NDIsICAg
MTE1LCAgIDExNiwgIC0yNjYsICAtMjY2LAotICAgICAgMzksICAtMjY2LCAgLTI2NiwgICAtNDMs
ICAtMjY2LCAgIC0xOCwgICAgNDcsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICAz
NzQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDExOCwgIC0yNjYsICAtMjY2LCAgIDkw
OCwKLSAgICAgOTc0LCAgLTI2NiwgICAxMjAsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
ICAxOSwgIC0yNjYsICAtMjY2LAotICAgICA5NzQsICAxMzMzLCAgLTI2NiwgIC0yNjYsICAgOTc0
LCAgIDExOSwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICA5NzQsCi0gICAgIDk3NCwgICA5NzQsICAg
OTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwKLSAg
ICAgOTc0LCAgIDk3NCwgICA5NzQsICAtMjY2LCAgMTE1MiwgICAxMjIsICAgLTI5LCAgLTI2Niwg
IC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2LCAgIDEyMSwgIC0yNjYsICAgOTc0LCAgLTI2
NiwgIC0yNjYsICAgICA1LCAgLTI2NiwgIC0yNjYsCi0gICAgIDQ1OCwgIC0yNjYsICAtMjY2LCAg
LTI2NiwgIC0yNjYsICAtMjY2LCAgIDk3NCwgICA5NzQsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2
LCAgIDk3NCwgIC0yNjYsICAgMTM3LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDEzOCwgICAxMTEs
ICAtMjY2LAotICAgICAxNDIsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgICAzNiwgICAg
MzYsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICAtMjEsICAgLTIxLCAgLTI2Niwg
ICAxMTMsICAgMTE3LCAgICA4MiwgIC0yNjYsICAgOTc0LCAgIDEyOSwKLSAgICAtMjY2LCAgIDE3
NSwgICAgNTAsICAgNjI2LCAgIDcxMCwgICAgMzgsICAtMjY2LCAgIDE5NywgICA0NTgsICAtMjY2
LAotICAgIC0yNjYsICAgMTQxLCAgLTI2NiwgIC0yNjYsICAgOTc0LCAgIDE1NSwgIC0yNjYsICAg
MTQ1LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAgMTk3LCAgIDEyMSwgICAxMTEs
ICAgMTg2LCAgIDE1OSwgICAxNjAsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIDk3NCwgIC0y
NjYsICAgMTY2LCAgIDE3NiwgICAyMzYsICAtMjY2LCAgIDE3NCwgICA1NDIsICAtMjY2LAotICAg
ICAgNDMsICAgOTc0LCAgIDU0MiwgICAxMjEsICAgOTc0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
IDE3NywgICAxMTEsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NgorICAgIDEzMjcsICAg
LTIwLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDExMywgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0y
NjEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwg
IC0yNjEsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2
MSwgICAtMTksICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAg
LTI2MSwgICAtNjEsICAgLTQwLCAgIC0yOCwgICAgNzUsICAgIC03LCAgLTI2MSwgICAgMjQsCisg
ICAgMTM3MCwgIC0yNjEsICAxNDQ0LCAgLTI2MSwgICAtMTEsICAtMjYxLCAgMTI4MywgIC0yNjEs
ICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgMTQ0NCwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAg
IDYsICAtMjYxLCAgICA1NCwgIC0yNjEsICAgIDg4LAorICAgICAgNjIsICAtMjYxLCAgLTI2MSwg
IC0yNjEsICAtMjYxLCAgMTM3MCwgICAgNTksICAgIDkxLCAgLTI2MSwgICAgMzYsCisgICAgIC01
MCwgIC0yNjEsICAtMjYxLCAgMTA1MSwgIC0yNjEsICAtMjYxLCAgICA2MywgIDEzNzAsICAtMjYx
LCAgIDI5MywKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICA5MSwgIDEzNzAsICAg
LTEyLCAgLTI2MSwgICA4NTYsICAxMDUxLAorICAgICAgNzcsICAtMjYxLCAgLTI2MSwgIC0yNjEs
ICAxMDUxLCAgMTA1MSwgIDEwNTEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgIC0y
NjEsICAgLTE0LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICA4NCwgICAtNDQsICAxMTE2LCAgICA5
NSwKKyAgICAtMjYxLCAgMTA1MSwgICAgNTMsICAgICAzLCAgLTI2MSwgICAtMzYsICAgIDg5LCAg
LTI2MSwgIC0yNjEsICAtMjYxLAorICAgICAxMDQsICAgMTA3LCAgIC00NSwgIC0yNjEsICAgIDk2
LCAgLTI2MSwgIC0yNjEsICAgIDkxLCAgMTE4NCwgIC0yNjEsCisgICAgMTM3MCwgICAgOTIsICAg
IDkzLCAgLTI2MSwgICAgOTgsICAgMTAxLCAgICA5NCwgICA5MjEsICAgMTA1LCAgIDEwMiwKKyAg
ICAtMjYxLCAgLTI2MSwgICAgNzIsICAtMjYxLCAgLTI2MSwgICAgIDksICAtMjYxLCAgIC02MSwg
ICAgNDIsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAzNzYsICAtMjYxLCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgIDEwNiwgIC0yNjEsCisgICAgLTI2MSwgICA5ODYsICAxMDUxLCAg
LTI2MSwgICAxMDMsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIC00MSwKKyAgICAtMjYx
LCAgLTI2MSwgIDEwNTEsICAxNDA3LCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgIDExMCwgIC0yNjEs
ICAtMjYxLAorICAgIC0yNjEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEw
NTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsCisgICAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwg
IDEwNTEsICAtMjYxLCAgIDEwOSwgICAgMjMsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgMTIy
NywgIC0yNjEsICAtMjYxLCAgIDExMSwgIC0yNjEsICAxMDUxLCAgLTI2MSwgIC0yNjEsICAgIDI1
LAorICAgIC0yNjEsICAtMjYxLCAgIDQ1OSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAt
MjYxLCAgMTA1MSwgIDEwNTEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgMTA1MSwgIC0yNjEs
ICAgMTE0LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDExNSwKKyAgICAgMTEyLCAgICA3NywgICAx
MTYsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAgNTMsICAgIDUzLAorICAg
IC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgLTM2LCAgIC0zNiwgIC0yNjEsICAgMTA0LCAg
IDEwNywgICAgNzYsCisgICAgMTA1MSwgICAgOTEsICAtMjYxLCAgLTI2MSwgICAxNDUsICAgIDU0
LCAgIDYyNSwgICA3MDgsICAgIC02LCAgLTI2MSwKKyAgICAgNzkxLCAgIDQ1OSwgIC0yNjEsICAt
MjYxLCAgIDExNywgIC0yNjEsICAtMjYxLCAgMTA1MSwgICAxMjAsICAtMjYxLAorICAgICAxMjQs
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDc5MSwgICAxMTEsICAgMTEyLCAgICA5MSwg
ICAxMjUsCisgICAgIDEyMiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAtMjYxLCAgIDEx
OCwgICAxMjgsICAgMTgwLCAgLTI2MSwKKyAgICAgMTI2LCAgIDU0MiwgIC0yNjEsICAgIC01LCAg
MTA1MSwgICA1NDIsICAgMTExLCAgMTA1MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAgMTIz
LCAgIDExMiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEKIH07CiAKIC8qIFlZUEdPVE9bTlRF
Uk0tTlVNXS4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5cGdvdG9bXSA9CiB7Ci0g
ICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAgODUs
ICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgICAtNDQsICAtMjY2LCAgIC0xNSwgIC0y
NjYsICAgLTU1LCAgIC0xOSwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgIDcyLCAgICA3MCwg
ICAgNzMsICAtMjY2LCAgIC02NiwgICAtODMsICAtMjY2LCAgIC05MiwgICAtNzMsCi0gICAgICAx
MywgICAgMTQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTgwLCAgIDIwNiwgICAyMDEsICAgMTg0
LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI0MSwgICAtMjUsICAgLTMwLCAgIDI2MiwgICAgLTQsICAg
ICAwLCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgICAxNDMsICAtMTIyLCAgLTI2NiwgICAgMjIs
ICAtMTQ1LCAgICAxNiwgIC0xNDQsICAtMjI2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICAt
MTcsICAtMjY1LCAgLTI2NiwgIC0yNjYsICAgLTU0LCAgICA2MywgICAgMjAsICAtMjY2LCAgLTI2
NiwKLSAgICAgICA0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
LTI2NiwgIC0yNjYsICAtMjY2LAotICAgICAyMzEsICAtMjY2LCAgLTI2NgorICAgIC0yNjEsICAg
LTI0LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICAzNCwgIC0y
NjEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICAzMiwgIC0yNjEsICAgLTMzLCAgLTI2MSwg
ICAtMjcsICAgLTI2LCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgICAgMTQsICAgIDE2LCAgICAx
OCwgIC0yNjEsICAgLTY2LCAgIC04NywgIC0yNjEsICAgLTkyLAorICAgICAtODUsICAgIDExLCAg
ICAxMiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAxNDEsICAgMTUwLCAgIDE2MSwgICAxNDMsCisg
ICAgLTI2MSwgIC0yNjEsICAtMjMxLCAgICAgNSwgICAtMzAsICAgMjI0LCAgIC0xOCwgICAgIDAs
ICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgIDEwMCwgIC0xMTksICAtMjYxLCAgIC0xNywgIC0x
NTYsICAgLTI1LCAgLTE0NSwgIC0yNDMsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgIC02NCwg
IC0yNjAsICAtMjYxLCAgLTI2MSwgICAtNTIsICAgIDIxLCAgIC0yMiwgIC0yNjEsCisgICAgLTI2
MSwgICAtMzksICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYx
LCAgLTI2MSwKKyAgICAtMjYxLCAgIDE5MSwgIC0yNjEsICAtMjYxCiB9OwogCiAvKiBZWVRBQkxF
W1lZUEFDVFtTVEFURS1OVU1dXS4gIFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUtTlVNLiAgSWYK
ICAgIHBvc2l0aXZlLCBzaGlmdCB0aGF0IHRva2VuLiAgSWYgbmVnYXRpdmUsIHJlZHVjZSB0aGUg
cnVsZSB3aGljaAogICAgbnVtYmVyIGlzIHRoZSBvcHBvc2l0ZS4gIElmIHplcm8sIGRvIHdoYXQg
WVlERUZBQ1Qgc2F5cy4KICAgIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8KLSNk
ZWZpbmUgWVlUQUJMRV9OSU5GIC0xNjUKKyNkZWZpbmUgWVlUQUJMRV9OSU5GIC0xNjYKIHN0YXRp
YyBjb25zdCB5eXR5cGVfaW50MTYgeXl0YWJsZVtdID0KIHsKLSAgICAgIDQ0LCAgICA3NywgICAx
NjcsICAgMTYzLCAgIDEyMSwgICAxOTksICAgIDUyLCAgIDIyMCwgICAyODUsICAgMTkxLAotICAg
ICAgNjgsICAgIDY0LCAgIDE2MiwgICAgMzIsICAgIDMzLCAgIDIyNCwgICAyNzUsICAgIDQ5LCAg
ICA2NSwgICAxMjEsCi0gICAgIDE4MSwgICAgNjYsICAgMTgyLCAgIDE3NiwgICAgNTgsICAgIDUw
LCAgIDEwOCwgICAyNjksICAgMzAxLCAgICAgNiwKLSAgICAgICA3LCAgIDI3NSwgICAgNjQsICAg
IDgxLCAgIDE4MywgICAxODQsICAgMjE3LCAgICA1MywgICAgNjksICAgMjE4LAotICAgICAgNDQs
ICAgMTA4LCAgICA0NCwgICAyMDcsICAgMTkyLCAgIDEyNiwgICAgNDQsICAgIDczLCAgIDE2NSwg
ICAxNjYsCi0gICAgIDI0OSwgICAgNDQsICAgIDgxLCAgIDI1MCwgICAgNTksICAgIDYwLCAgICA2
MSwgICAgMjMsICAgIDI0LCAgICAzMiwKLSAgICAgIDMzLCAgIDE1OSwgICAyOTUsICAgIDQ0LCAg
ICA1NCwgICAxNzgsICAgMjk1LCAgIDE3MywgICAxNjAsICAgMTg1LAotICAgICAxODYsICAgIDU2
LCAgIDE5OSwgICAxNzQsICAgIDU4LCAgICA0NCwgICAxNDYsICAgMTYzLCAgIDIyOCwgICAgIDYs
Ci0gICAgICAgNywgICAgODQsICAgIDQ0LCAgICA4NSwgICAyMTcsICAgIDU3LCAgIDIyMywgICAy
NTYsICAgMTY4LCAgIDE2OSwKLSAgICAgIDg2LCAgIDIzMiwgICAyMjYsICAgMTIxLCAgIC03NSwg
ICAxMjYsICAgIDY3LCAgIDEyNiwgICAyMTcsICAgIDcwLAotICAgICAyNDYsICAgMjExLCAgIDIx
MiwgICAyMTMsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDIzLCAgICAyNCwgICAxNzAsCi0gICAg
IDIxNCwgICAyNzMsICAgMjU1LCAgIDE3MSwgICAyMjAsICAgMTA4LCAgIDI5OCwgICAyMTcsICAg
IDc0LCAgIC0yNSwKLSAgICAgMjE1LCAgICA3MCwgICAyMTcsICAgMTc5LCAgIDE4MCwgICAgNDQs
ICAgIDc2LCAgICA0NCwgICAyMzcsICAgMjM4LAotICAgICAyMzksICAgMjQwLCAgICA0OSwgICAy
NTksICAgMjYwLCAgIDIzMywgICAyMzQsICAgMTA4LCAgIDEwOCwgICAxMDgsCi0gICAgIDEwOCwg
ICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMjYxLCAg
IDMwMiwKLSAgICAgIDgzLCAgIDE0NiwgICAgIDIsICAgICAzLCAgICAgNCwgICAxMjEsICAgIDU5
LCAgICA2MCwgICAgNjEsICAgMTg3LAotICAgICAxODgsICAgMjE3LCAgIDI2NCwgICAxMjQsICAg
MTI2LCAgIDI3NCwgICAyMzUsICAgMjM2LCAgIDI0MSwgICAyNDIsCi0gICAgIDE1NiwgICAtMjYs
ICAgMTg5LCAgIDE3MiwgICAxOTUsICAgMjY1LCAgIDE3NywgICAxMDgsICAgMTkwLCAgIDIwMCwK
LSAgICAgMjc0LCAgIDI3OSwgICAxMjEsICAgMTkzLCAgIDIwMywgICAyMDEsICAgMjA0LCAgIDIw
OCwgICAyMDUsICAgMjkwLAotICAgICAyMTcsICAtMTE2LCAgIDIyMSwgICAyMDksICAgIDQ0LCAg
IDIyNSwgICAyNDgsICAtMTY0LCAgIDI2OCwgICAyOTksCi0gICAgICA1OCwgICAgIDIsICAgICAz
LCAgICAgNCwgICAxMDgsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAg
MTQ2LCAgIDE2MywgICAyNjIsICAgMjYzLCAgIC0yNywgICAyNjcsICAgMjc4LCAgIDI4MSwgICAg
MTEsICAgIDEyLAotICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCi0gICAgIDI4MCwgICAyODcsICAgMjg4LCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAyODksICAgIDI3LCAgICAyOCwKLSAgICAgIDI5LCAg
ICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAyOTEsICAg
MjkyLAotICAgICAgOTIsICAgIDkzLCAgIDI5MywgICAxNDYsICAgMTQ2LCAgIDI5NCwgICAyMzEs
ICAgMTQ2LCAgIDE0NiwgICAzMDMsCi0gICAgIDI0NCwgICAyNDMsICAgMTU3LCAgICA3OCwgICAy
NDUsICAgIDgyLCAgIDE1OCwgICAgNTEsICAgMTk0LCAgICA5NCwKLSAgICAgMjcwLCAgIDI2Niwg
ICAxNDYsICAgMjU4LCAgIDI3MSwgICAzMDAsICAgMjgyLCAgICA3MiwgICAgIDAsICAgICAwLAot
ICAgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgIDE0NiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgMTQ2LCAgICAgMSwgICAgIDIsICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKLSAgICAgICA4LCAgICAgOSwgICAgMTAs
ICAgMTI5LCAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LAotICAgICAx
MzUsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgMTM2LCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLAotICAgICAgOTEsICAg
ICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCisgICAgICA0NCwgICAgNTUsICAgMTY1LCAgIDE2NCwgICAxNjksICAgIDgwLCAgIDIyNiwg
ICAxMjMsICAgMjIyLCAgIDIwMCwKKyAgICAgIDcxLCAgICAzMiwgICAgMzMsICAgMjcyLCAgIDE5
MywgICAgNzAsICAgMjg4LCAgICA0OSwgICAxODUsICAgMTg2LAorICAgICAgNTYsICAgMTc4LCAg
IDEyMywgICAgODgsICAgIDcyLCAgICA1MCwgICAgNTIsICAgIDUzLCAgIDE3NSwgICAyNzgsCisg
ICAgICA4OSwgICAyMjgsICAgIDU4LCAgICA3NiwgICAxNzYsICAgIDg0LCAgIDMwNCwgICAyMTks
ICAgMTcwLCAgIDE3MSwKKyAgICAgIDQ0LCAgICA2NiwgICAgNDQsICAgIDg2LCAgIDI3OCwgICAy
MDksICAgIDQ0LCAgIDEyNywgICAyOTgsICAgMTk0LAorICAgICAgNTksICAgIDQ0LCAgIDI5OCwg
ICAxODcsICAgMTg4LCAgICA4NCwgICAgNTQsICAgIDMyLCAgICAzMywgICAxNzIsCisgICAgIDE1
OCwgICAxNjEsICAgIDczLCAgIDE3MywgICAgNjYsICAgIDQ0LCAgIDI3NiwgICAzMDEsICAgMTYy
LCAgICA2OSwKKyAgICAgIDUzLCAgICA2NywgICAyMTksICAgMjE5LCAgICA2OCwgICAxNjUsICAg
MjI1LCAgICA0NCwgICAgNjAsICAgMTQ4LAorICAgICAyMzAsICAgIDc4LCAgIDIwMCwgICAgIDYs
ICAgICA3LCAgICA0NCwgICAxODMsICAgMjE5LCAgIDE4NCwgICAyMzUsCisgICAgIDIyMCwgICAg
NjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgMTIzLCAgICAgNiwgICAgIDcsICAgMTI3LCAgICA0
OSwKKyAgICAgMTI3LCAgIDI1MSwgICAyNDksICAgMjE5LCAgIDI1MiwgICAxMTAsICAgMjU5LCAg
ICA4NywgICAgNjEsICAgIDYyLAorICAgICAgNjMsICAgIDIzLCAgICAyNCwgICAtMjcsICAgMjU4
LCAgICA3MywgICAyMjIsICAgICAyLCAgICAgMywgICAgIDQsCisgICAgIDExMCwgICAgNjEsICAg
IDYyLCAgICA2MywgICAgMjMsICAgIDI0LCAgIDE2NywgICAxNjgsICAgIDQ0LCAgICA3OSwKKyAg
ICAgIDQ0LCAgIDI2MiwgICAyNjMsICAgMjEzLCAgIDIxNCwgICAyMTUsICAgIDUyLCAgICA1Mywg
ICAyNjQsICAgMTgxLAorICAgICAxODIsICAgMzA1LCAgIDIxNiwgICAxODAsICAgMTI2LCAgIDE4
OSwgICAxOTAsICAgLTc2LCAgIC0yOCwgICAyMzMsCisgICAgIDIzOCwgICAyMzksICAgMjE3LCAg
IDE0OCwgICAyMTksICAgMjY3LCAgIDE3NCwgICAxMjMsICAgMjQwLCAgIDI0MSwKKyAgICAgMjQy
LCAgIDI0MywgICAxOTEsICAgMjQ0LCAgIDI0NSwgICAyNjgsICAgMTc5LCAgIDE5MiwgICAyNzcs
ICAgMjA1LAorICAgICAxOTUsICAgMTI3LCAgIDIwNiwgICAyMDIsICAgMjAzLCAgIDIwNywgICAy
MTAsICAgMjI3LCAgIDIxMSwgICAyMjMsCisgICAgIDI4MiwgIC0xMTcsICAgMjUwLCAgIDI3Nywg
ICAxMjMsICAgMjcwLCAgLTE2NSwgIC0xMzgsICAgMjY1LCAgIDI2NiwKKyAgICAgMjE5LCAgIDI4
MSwgICAyOTMsICAgMTEwLCAgIDI4MywgICAyODQsICAgMjk2LCAgIDI5MSwgICAyOTIsICAgMjk0
LAorICAgICAyOTUsICAgIDQ0LCAgIDMwMiwgICAyNzEsICAgMzA2LCAgIDI0NiwgICAyOTcsICAg
MjM0LCAgIDI0NywgICAgODEsCisgICAgIDE2NSwgICAyNDgsICAgMTQ4LCAgIDIzNiwgICAyMzcs
ICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMCwKKyAgICAgMTEwLCAgIDExMCwgICAx
MTAsICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTU5LCAgICA4NSwgICAxNjAsICAgIDUxLAorICAg
ICAyMDEsICAgMzAzLCAgIDI3MywgICAyNjEsICAgMjY5LCAgIDI3NCwgICAyODUsICAgIDc1LCAg
ICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgOTQsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTM3LCAgIDEzOCwgICAgIDAsICAgICAwLAotICAgICAgIDAs
ICAgICAwLCAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwg
ICAgIDMsCi0gICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwgICAxMjksICAgMTMwLCAgIDEzMSwKLSAgICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LCAg
IDEzNSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAs
Ci0gICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzYsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLCAgICA4NywKLSAgICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwg
ICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgMjkwLCAgIDExMCwgICAxNDgsICAgMTQ4LCAgICAgMCwgICAgIDAsCisgICAg
IDE0OCwgICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDgs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDExMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwg
ICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ4LCAgICAgMSwgICAgIDIsICAgICAzLCAg
ICAgNCwKKyAgICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMx
LCAgIDEzMiwgICAxMzMsICAgICAwLAorICAgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAg
IDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCisgICAgICAxNywgICAgMTgs
ICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywK
KyAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgOTAsICAgIDMxLAorICAgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAg
ICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAxMzcsICAgMjE5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsCi0gICAgICA5NywgICAgIDEsICAgICAyLCAgICAg
MywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAg
IDEyOSwgICAxMzAsICAgMTMxLCAgICAgMCwgICAxMzIsICAgMTMzLCAgIDEzNCwgICAxMzUsICAg
IDExLAotICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgs
ICAgIDE5LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
MjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM2LCAgICAyNywKLSAgICAgIDI4LCAgICAyOSwg
ICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLAot
ICAgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgICAxLAorICAgICAg
IDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwgICAxMzEsCisgICAgIDEzMiwgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAg
IDEzNywgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAorICAgICAgIDAsICAg
ICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAg
MjksCisgICAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwg
ICAgIDAsICAgIDk0LCAgICA5NSwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgOTQsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTM3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0g
ICAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMs
ICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAx
MjksICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLAotICAgICAxMzMsICAgMTM0LCAgIDEzNSwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCisgICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAw
LCAgICAgMCwKKyAgICAgICAwLCAgIDEzOSwgICAyMjEsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE0MSwgICAgOTcsICAgIDk4LAorICAgICAgIDAsICAgIDk5LCAgICAgMSwgICAgIDIs
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsCisgICAgICAgOSwgICAg
MTAsICAgMTMxLCAgIDEzMiwgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEz
NywKKyAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLAorICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgsCisgICAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwKKyAg
ICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICA5NiwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAxMzksICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgMTQx
LCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQs
ICAgICA1LAorICAgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEzMSwgICAx
MzIsICAgMTMzLCAgICAgMCwgICAxMzQsCisgICAgIDEzNSwgICAxMzYsICAgMTM3LCAgICAxMSwg
ICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKICAgICAgIDE4LCAgICAx
OSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0
LAotICAgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAg
IDg3LCAgICAzMSwgICAgODgsCi0gICAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAs
ICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgIDI1LCAgICAyNiwgICAx
MzgsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLAorICAg
ICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzYsICAgICAwLAotICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5Nywg
ICAgIDEsCi0gICAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAg
OCwgICAgIDksICAgIDEwLCAgIDEyOSwKLSAgICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLCAg
IDEzMywgICAxMzQsICAgMTM1LCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1
LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAs
Ci0gICAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEzNiwgICAg
MjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwg
ICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLAotICAgICAgOTMsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDk0LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LAotICAgICAgOTYsICAgICAwLCAgICA5NywgICAg
IDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsCi0gICAgICAgOCwg
ICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKLSAgICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2
LCAgICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCi0gICAgICAgMCwgICAgMjcs
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwK
LSAgICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDc5LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAw
LCAgIDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgICAxLCAgICAgMiwKKyAgICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAx
MzEsICAgMTMyLAorICAgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAg
ICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjksICAg
IDMwLAorICAgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAs
ICAgIDk0LCAgICA5NSwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3
LCAgICA5OCwgICAgIDAsCisgICAgICA5OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAg
ICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKKyAgICAgIDEwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLAorICAgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwgICAgMjEsCisgICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAg
ICAyNSwgICAgMjYsICAgICAwLCAgICAyNywKKyAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkw
LCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLAorICAgICAgOTQsICAg
IDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NiwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLAorICAgICAgOTcsICAgIDk4LCAg
ICAgMCwgICAgOTksICAgIDYwLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDYsCisg
ICAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAg
MTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAorICAgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsCisgICAgICAy
NiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkx
LCAgICA5MiwKKyAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAg
IDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAg
MCwKLSAgICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAg
ICAxMSwgICAgMTIsICAgIDEzLAorICAgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywKICAg
ICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAy
NiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgODcsICAgIDMxLCAg
ICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwKLSAgICAgIDkz
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICA5NCwgICAgIDAsCi0gICAgICAgMCwgICAxNjEsICAgICA4LCAgICAgOSwg
ICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwKLSAgICAgIDk2LCAgICAg
MCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LAotICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwKLSAgICAgIDg5LCAgICA5MCwgICAg
OTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLAorICAg
ICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAg
ICA5NCwgICAgOTUsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LAotICAgICAgMTAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgMjA2LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5Nywg
ICAgMTEsCi0gICAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwKLSAgICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LAotICAgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAs
Ci0gICAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLAorICAgICAxNjMsICAgICA4LCAgICAg
OSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsCisgICAg
ICAgMCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAg
IDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAgICA5Mywg
ICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgOTQsICAgICAwLCAgICAgMCwgICAyMjIsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgOTUs
ICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwK
LSAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAg
MCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsCi0gICAgICAzMSwgICAgODgsICAgIDg5
LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwKKyAgICAg
ICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAg
MTAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDIwOCwgICAgOTcsICAgIDk4LCAgICAgMCwg
ICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAx
NywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAg
IDI5LAorICAgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAs
ICAgICAwLCAgICA5NCwgICAgOTUsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLAot
ICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk1
LCAgICA5NiwgICAgIDAsCi0gICAgICA5NywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKLSAgICAgIDIwLCAgICAyMSwgICAgMjIs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgMTc1LAotICAgICAg
IDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4
OSwgICAgOTAsCi0gICAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLAorICAgICAyMjQsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAg
OTgsCisgICAgICAgMCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwg
ICAgMTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisg
ICAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICA5NCwg
ICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsCi0gICAgICAg
OSwgICAgMTAsICAgICAwLCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDAsICAgICAw
LCAgICAgMCwKLSAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAg
IDE3LCAgICAxOCwgICAgMTksICAgIDIwLAotICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsCi0gICAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAg
MCwKLSAgICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEy
LCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCi0gICAgICAxOCwgICAgMTksICAg
IDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgIDE5OCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwg
ICAgMzEsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzEsCi0gICAgICAgMCwgICAgIDAsICAgICAxLCAg
ICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKLSAgICAgICA5
LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMjQ3LAotICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAg
MTcsICAgIDE4LCAgICAxOSwgICAgMjAsCi0gICAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwKLSAgICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0
LAorICAgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAg
ICA5LCAgICAxMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgs
ICAgICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAg
MTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAorICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgIDE3NywgICAgIDAsICAgIDI3LCAg
ICAyOCwgICAgMjksCisgICAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkz
LCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMiwg
ICAgIDMsCisgICAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAx
MCwgICAgIDAsICAgIDk3LCAgICA5OCwKKyAgICAgICAwLCAgICA5OSwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAorICAgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLCAgICAgMCwKKyAgICAgIDMxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsCisgICAg
ICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAg
IDIxLCAgICAyMiwKKyAgICAgMTk5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUs
ICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAgMCwgICAg
MzEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA3NCwgICAgIDAsICAgICAwLCAgICAgMSwgICAgIDIsICAgICAzLCAg
ICAgNCwKICAgICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCisgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDI1MywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwK
ICAgICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDIzLAogICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsCi0gICAgICAgMiwgICAgIDMsICAgICA0
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAg
MTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAg
ICAgMCwgICAgMzEsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIDE0LCAgICAxNSwgICAgMTYsCi0gICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAyNSwg
ICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAyMjksICAgIDMxLAot
ICAgICAgIDgsICAgICA5LCAgICAxMCwgICAyMzAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCisgICAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAg
ICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLAorICAgICAg
MTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAy
MSwgICAgMjIsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMx
LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDgsICAg
ICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCiAgICAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwg
ICAgMTcsICAgIDE4LCAgICAxOSwKICAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LAotICAgICAgIDAsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEKKyAgICAgICAwLCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAx
MSwgICAgMTIsCisgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAg
IDMwLCAgIDIzMSwgICAyMzIsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAg
IDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwg
ICAgMTMsICAgIDE0LCAgICAxNSwKKyAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAg
ICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsCisg
ICAgICAzMQogfTsKIAogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWNoZWNrW10gPQogewot
ICAgICAgIDAsICAgIDU1LCAgICA5NCwgICAgODYsICAgIDcwLCAgIDEyNywgICAgNDUsICAgMTUx
LCAgIDI3MywgICAgNjAsCi0gICAgICA0MCwgICAgMzYsICAgIDg1LCAgICAgMCwgICAgIDAsICAg
MTYwLCAgIDI1NywgICAgMzcsICAgIDc5LCAgICA4NSwKLSAgICAgIDg0LCAgICA4MiwgICAgODYs
ICAgMTA2LCAgICAgMywgICAgNDUsICAgIDcwLCAgIDI1MywgICAyOTMsICAgICA4LAotICAgICAg
IDksICAgMjcyLCAgICA1NywgICAgNjMsICAgIDU1LCAgICA1NiwgICAgNzksICAgIDc2LCAgICA0
MiwgICAgODIsCi0gICAgICA0MCwgICAgODUsICAgIDQyLCAgIDEzNSwgICAgOTUsICAgIDc1LCAg
ICA0NiwgICAgNTEsICAgIDkyLCAgICA5MywKLSAgICAgIDc5LCAgICA1MSwgICAgODIsICAgIDgy
LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDQ2LAotICAgICAgNDYsICAg
IDc0LCAgIDI4OCwgICAgNjMsICAgIDgyLCAgIDEwOSwgICAyOTIsICAgIDczLCAgICA4MSwgICAg
OTAsCi0gICAgICA5MSwgICAgNzMsICAgMTk0LCAgICA3OSwgICAgIDMsICAgIDc1LCAgICA3Niwg
ICAxNjAsICAgMTcwLCAgICAgOCwKLSAgICAgICA5LCAgICA3MiwgICAgODIsICAgIDc0LCAgICA3
OSwgICAgNzksICAgMTU5LCAgICA4MiwgICAgNTMsICAgIDU0LAotICAgICAgODEsICAgMTc0LCAg
ICA3MywgICAxNTksICAgIDczLCAgIDEyNSwgICAgNDUsICAgMTI3LCAgICA3OSwgICAgNzQsCi0g
ICAgIDE5MiwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYs
ICAgIDM3LCAgICA3NCwKLSAgICAgIDcxLCAgICA3MywgICAyMDQsICAgIDc4LCAgIDI1OCwgICAx
NTksICAgIDczLCAgICA3OSwgICAgNzYsICAgIDcyLAotICAgICAgODEsICAgIDc0LCAgICA3OSwg
ICAgODcsICAgIDg4LCAgIDEyNSwgICAgNzYsICAgMTI3LCAgIDE4MywgICAxODQsCi0gICAgIDE4
NSwgICAxODYsICAgIDM3LCAgIDIxNiwgICAyMTcsICAgMTc5LCAgIDE4MCwgICAxODEsICAgMTgy
LCAgIDE4MywKLSAgICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LCAgIDE4OCwgICAxODksICAg
MTkwLCAgIDE5MSwgICAyMjEsICAgMjk0LAotICAgICAgNDUsICAgMTUxLCAgICAgNCwgICAgIDUs
ICAgICA2LCAgIDIyMSwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgNTcsCi0gICAgICA1OCwgICAg
NzksICAgIDgwLCAgICA4MiwgICAxOTQsICAgMjU3LCAgIDE4MSwgICAxODIsICAgMTg3LCAgIDE4
OCwKLSAgICAgIDQ1LCAgICA3MiwgICAgNTksICAgIDczLCAgICA0NSwgICAyNDgsICAgIDcyLCAg
IDIyMSwgICAgNjEsICAgIDgyLAotICAgICAyNzIsICAgMjY0LCAgIDI0OCwgICAgNzUsICAgIDcy
LCAgICA4MiwgICAgNzIsICAgIDcyLCAgICA4MiwgICAyODEsCi0gICAgICA3OSwgICAgNzIsICAg
IDc0LCAgICA3NywgICAxOTQsICAgIDc1LCAgICA3NCwgICAgNzYsICAgMjUyLCAgIDI5MSwKLSAg
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgIDI0OCwgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLAotICAgICAyMTAsICAgMjk0LCAgICA3NSwgICAgNzUsICAgIDcyLCAgICA0
MCwgICAgNzUsICAgIDcyLCAgICAyMSwgICAgMjIsCi0gICAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKLSAgICAgIDc1
LCAgICA0NSwgICAgNzMsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA3NywgICAgNDEs
ICAgIDQyLAotICAgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLCAgICA4MiwgICAgNzMsCi0gICAgICA1MywgICAgNTQsICAgIDE2LCAgIDI1Mywg
ICAyNTQsICAgIDgxLCAgIDE3MSwgICAyNTcsICAgMjU4LCAgICA4MiwKLSAgICAgMTkwLCAgIDE4
OSwgICAgODIsICAgIDU3LCAgIDE5MSwgICAgNjQsICAgIDgyLCAgICAgNSwgICAxMjUsICAgIDcy
LAotICAgICAyNTQsICAgMjQ5LCAgIDI3MiwgICAyMTAsICAgMjU0LCAgIDI5MiwgICAyNzIsICAg
IDQ2LCAgICAtMSwgICAgLTEsCi0gICAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgMjg4LCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAy
OTIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LAotICAg
ICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAg
ICAxOCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1
LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAzMSwgICAgMzIsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LAotICAgICAgNDAs
ICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwg
ICAgNDksCi0gICAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgICAwLCAgICAyNSwgICAgODksICAgIDg4LCAg
ICA5NiwgICAgNTcsICAgMTYyLCAgICA3MywgICAxNTMsICAgMTI4LAorICAgICAgNDAsICAgICAw
LCAgICAgMCwgICAyNTYsICAgIDU5LCAgICAzOSwgICAyNzYsICAgIDM3LCAgICA1NCwgICAgNTUs
CisgICAgICA4MSwgICAxMDgsICAgIDg4LCAgICA3MywgICAgNDIsICAgIDQ1LCAgICA0NSwgICAg
NDYsICAgIDcyLCAgIDI2MCwKKyAgICAgIDgwLCAgICA3MiwgICAgNzIsICAgIDUxLCAgICA3OCwg
ICAgNjUsICAgMjk2LCAgICA3OCwgICAgNTIsICAgIDUzLAorICAgICAgNDAsICAgIDM2LCAgICA0
MiwgICAgNjcsICAgMjc1LCAgIDEzNywgICAgNDYsICAgIDc3LCAgIDI5MSwgICAgOTQsCisgICAg
ICA3OCwgICAgNTEsICAgMjk1LCAgICA4OSwgICAgOTAsICAgIDg1LCAgICA3NSwgICAgNDYsICAg
IDQ2LCAgICA3MywKKyAgICAgIDg0LCAgICA3MywgICAgNzMsICAgIDc3LCAgICA1OSwgICAgNjUs
ICAgIDcyLCAgICA3MiwgICAgODAsICAgIDQ1LAorICAgICAgNDYsICAgIDc4LCAgICA3OCwgICAg
NzgsICAgIDgxLCAgIDE2MiwgICAxNjEsICAgIDc3LCAgICAgMywgICAgNzksCisgICAgIDE3Miwg
ICAgNzUsICAgMjAxLCAgICAgOCwgICAgIDksICAgIDg1LCAgICA4MywgICAgNzgsICAgIDg1LCAg
IDE3NiwKKyAgICAgIDgxLCAgICAgMywgICAgMzMsICAgIDM0LCAgICAzNSwgICAxNjEsICAgICA4
LCAgICAgOSwgICAxMjgsICAgIDM3LAorICAgICAxMzAsICAgIDc4LCAgIDE5NCwgICAgNzgsICAg
IDgxLCAgICA3MywgICAgODEsICAgIDcxLCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYs
ICAgIDM3LCAgICA3MSwgICAyMDYsICAgIDczLCAgIDI2MSwgICAgIDQsICAgICA1LCAgICAgNiwK
KyAgICAgIDg4LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDk0LCAgICA5
NSwgICAxMjgsICAgIDc1LAorICAgICAxMzAsICAgMjE4LCAgIDIxOSwgICAgNjEsICAgIDYyLCAg
ICA2MywgICAgNDUsICAgIDQ2LCAgIDIyMywgICAgODYsCisgICAgICA4NywgICAyOTcsICAgIDcw
LCAgIDExMSwgICAgODEsICAgIDU2LCAgICA1NywgICAgNzIsICAgIDcxLCAgIDE3MywKKyAgICAg
MTgzLCAgIDE4NCwgICAgODAsICAgMTUzLCAgICA3OCwgICAgNzksICAgIDcyLCAgIDIyMywgICAx
ODUsICAgMTg2LAorICAgICAxODcsICAgMTg4LCAgICA1OCwgICAxODksICAgMTkwLCAgIDI1MCwg
ICAgNzEsICAgIDYwLCAgIDI2MCwgICAgNzEsCisgICAgICA3NCwgICAyMDEsICAgIDcxLCAgICA4
MSwgICAgODEsICAgIDgxLCAgICA3MSwgICAgNzQsICAgIDc2LCAgICA3MywKKyAgICAgMjY3LCAg
ICA3MSwgICAgNzMsICAgMjc1LCAgIDI1MCwgICAgNDAsICAgIDc1LCAgICA3MSwgICAgNzQsICAg
IDc0LAorICAgICAgNzgsICAgIDc0LCAgIDI4NCwgICAxNjEsICAgIDc0LCAgICA3MSwgICAgMTYs
ICAgIDcyLCAgICA3NiwgICAgODEsCisgICAgICA3MiwgICAyMDEsICAgMjk0LCAgIDI1NSwgICAg
ODEsICAgMTkxLCAgICA4MCwgICAxNzMsICAgMTkyLCAgICA1OSwKKyAgICAgMjk3LCAgIDE5Mywg
ICAyMTIsICAgMTgxLCAgIDE4MiwgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LAor
ICAgICAxODgsICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTkyLCAgIDE5MywgICAgODUsICAgIDY2
LCAgICA4NSwgICAgIDUsCisgICAgIDEzMCwgICAyOTUsICAgMjU3LCAgIDIxMiwgICAyNTEsICAg
MjU3LCAgIDI3NSwgICAgNDYsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAg
LTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIDc3LCAgICAt
MSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAg
ICA4NiwgICAgIDMsICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgLTEsICAg
IDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAg
MjUsCi0gICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0
MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAotICAgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsCisg
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyNzgsICAgMjIzLCAgIDI1NiwgICAyNTcs
ICAgIC0xLCAgICAtMSwKKyAgICAgMjYwLCAgIDI2MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgIDI3NSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAt
MSwgICAgLTEsICAgMjUwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwKKyAgICAgIC0xLCAgIDI5MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyOTUsICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LAorICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAs
ICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsCisgICAgICAxNywgICAg
MTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwKKyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDM2LAorICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQx
LCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCisgICAgICA0NywgICAgNDgsICAg
IDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0xLCAgICAtMSwKICAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3NiwgICAgNzcsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwKLSAgICAgIDg2
LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAs
ICAgIDExLAotICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAg
MTgsICAgIDE5LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQx
LAotICAgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAg
IDQ5LCAgICA1MCwgICAgLTEsCi0gICAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgIDc2LAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAg
ICA4NSwgICAgIDMsCisgICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgLTEsICAg
IDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAorICAgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0
MCwgICAgNDEsICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAorICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
CisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
NzEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICA3NSwgICAgNzYsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLAorICAgICAgLTEsICAgIDg1LCAgICAg
MywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCisgICAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAorICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCisgICAgICA0MSwg
ICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICAtMSwKKyAgICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3MiwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
LSAgICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgIDMsICAgICA0LCAgICAg
NSwgICAgIDYsICAgICA3LAorICAgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc1LCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA4MSwgICAgODIsICAgIDgz
LCAgICAtMSwgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKICAgICAg
ICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAg
LTEsICAgIDE3LAogICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsCiAgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywKICAgICAgIDM4LCAg
ICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LAotICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQs
ICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAg
NTIsICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA3NiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAg
IDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAgMywKLSAgICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAg
MTQsICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAy
MiwgICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3
LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLAotICAgICAgNDQsICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAg
NTMsCi0gICAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsCi0g
ICAgICA4NCwgICAgLTEsICAgIDg2LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcs
ICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIDIxLCAgICAyMiwg
ICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAz
MCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4
LCAgICAzOSwKLSAgICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAg
IDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LAotICAgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMs
ICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgIC0xLCAgICAt
MSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAg
ICA4NSwgICAgIDMsICAgICA0LAorICAgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgLTEsICAg
IDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwKKyAg
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0
MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsCisgICAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLCAgICAtMSwKICAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MTAsICAgIDExLCAgICAxMiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4Mywg
ICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0x
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEsICAg
IDgyLCAgICA4MywgICAgLTEsCisgICAgICA4NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKKyAgICAgIDEyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLAorICAg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgMzEsCisgICAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3
LCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwKKyAgICAgIDQyLCAgICA0MywgICAgNDQsICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLAorICAgICAgNTIs
ICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICA3MSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLAorICAgICAgODIsICAgIDgz
LCAgICAtMSwgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgIDgs
CisgICAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsCisgICAg
ICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwg
ICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAg
ICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1
LCAgICAyMSwgICAgMjIsICAgIDIzLAogICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAg
IDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCiAgICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywK
LSAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAt
MSwgICAgLTEsICAgIDUzLAotICAgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwKLSAgICAg
IC0xLCAgICA3NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDgzLAotICAgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDM4LCAg
ICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LAotICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQs
ICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAg
NDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKICAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAxMCwgICAgMTEsCi0gICAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAg
IDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAyMSwKLSAgICAgIDIyLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLAotICAgICAg
MzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAt
MSwgICAgNDEsCi0gICAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwKLSAgICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAg
LTEsCisgICAgICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAg
ICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsCisg
ICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYs
ICAgIDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3
MiwgICAgLTEsICAgIC0xLCAgICA3NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0x
LCAgICAtMSwKLSAgICAgIC0xLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAg
IDIyLCAgICAyMywgICAgMjQsICAgIDI1LAotICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAg
LTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0
NSwKLSAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAg
ICA1MywgICAgNTQsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAg
IDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKKyAg
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAz
OSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAg
ICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKICAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
NzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgODMsICAgIDg0LCAgICAtMSwKLSAgICAgIDg2LCAgICAy
MSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5
LAotICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAzOCwgICAgMzksCi0gICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQs
ICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwKLSAgICAgIDUwLCAgICAtMSwgICAg
LTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAg
ICAtMSwgICAgLTEsCisgICAgICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgMjEsICAg
IDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjks
ICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgMzgsCisgICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0
NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAg
ICA1MywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
Ci0gICAgICAtMSwgICAgLTEsICAgIDcyLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAxMCwKLSAgICAgIDExLCAgICAxMiwgICAgLTEsICAgIDgzLCAgICA4NCwg
ICAgLTEsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgMjEsICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAg
ICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAg
IDM5LCAgICAtMSwKLSAgICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYs
ICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAxMCwgICAg
MTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAg
ICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIDc3
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAg
IDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMCwK
LSAgICAgIC0xLCAgICAtMSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAg
OCwgICAgIDksICAgIDEwLAotICAgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzcsCi0gICAgICAyMSwgICAgMjIsICAgIDIz
LCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKLSAgICAg
IDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAg
MzksICAgIC0xLAotICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0Niwg
ICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsCisgICAgICAtMSwgICAgLTEsICAgIDcxLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKKyAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAyMSwgICAgMjIsICAg
IDIzLAorICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDMxLCAgICAzMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwg
ICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAor
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgNzEsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgODIsICAgIDgzLAorICAgICAg
LTEsICAgIDg1LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAy
NCwgICAgMjUsCisgICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5
LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLAorICAgICAgNDYsICAg
ICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAg
MTIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgNzYsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsCisg
ICAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAwLCAgICAtMSwgICAg
LTEsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LAogICAgICAgIDcsICAgICA4LCAgICAgOSwg
ICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1
LCAgICAyNiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAgICAyMSwgICAgMjIsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAogICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsCiAgICAgICAzNywgICAg
MzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0
NiwKLSAgICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAg
ICAxMSwgICAgMTIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAg
IDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKLSAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwg
ICAgNDIsICAgIDQzLAotICAgICAgNDQsICAgIC0xLCAgICA0NiwgICAgMTAsICAgIDExLCAgICAx
MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgIDI3
LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAg
NDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICA1MCwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEy
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAyMSwgICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcs
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAg
ICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAyMSwgICAgMjIsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAogICAgICAgMzAs
ICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwg
ICAgMzksCi0gICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0
NgorICAgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAg
IDEwLCAgICAxMSwgICAgMTIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAg
ICA0MSwgICAgNDIsCisgICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICAtMSwKKyAgICAgIDQ2CiB9OwogCiAvKiBZWVNUT1NbU1RBVEUt
TlVNXSAtLSBUaGUgKGludGVybmFsIG51bWJlciBvZiB0aGUpIGFjY2Vzc2luZwpAQCAtMTMwOCwz
MiArMTM0MywzMiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KICAgICAg
IDMwLCAgICAzMSwgICAgMzIsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MSwgICAg
NDIsICAgIDQzLAogICAgICAgNDQsICAgIDQ2LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOSwg
ICAxMzAsICAgMTM1LCAgIDEzNiwgICAxMzcsCiAgICAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0
MSwgICAxNDIsICAgMTQzLCAgIDE3NSwgICAxNzYsICAgMTc3LCAgICAzNywKLSAgICAgIDQ1LCAg
IDE0MCwgICAgNDUsICAgIDc2LCAgICA4MiwgICAxNzgsICAgIDczLCAgICA3OSwgICAgIDMsICAg
IDMzLAotICAgICAgMzQsICAgIDM1LCAgIDEzMiwgICAxMzMsICAgMTM4LCAgICA3OSwgICAgODIs
ICAgIDQ1LCAgIDEzOSwgICAxNDEsCi0gICAgICA3NCwgICAgIDAsICAgMTc2LCAgIDE0MSwgICAg
NzYsICAgMTQ1LCAgICA3NiwgICAxNjEsICAgMTMyLCAgIDEzMSwKLSAgICAgMTM0LCAgIDEzOSwg
ICAxMzMsICAgIDQ1LCAgICA3MiwgICAgNzQsICAgIDgxLCAgICA0NSwgICAgNDcsICAgIDQ4LAot
ICAgICAgNDksICAgIDUwLCAgICA1MywgICAgNTQsICAgIDcyLCAgICA4MywgICAgODQsICAgIDg2
LCAgICA5NywgICAgOTgsCi0gICAgICA5OSwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAg
MTA1LCAgIDEwNiwgICAxMDcsICAgMTA4LCAgIDEwOSwKLSAgICAgMTEwLCAgIDExMSwgICAxMTIs
ICAgMTEzLCAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE5LAotICAgICAx
MjAsICAgMTIxLCAgIDEyNSwgICAxNDIsICAgIDgyLCAgIDE0NCwgICAxMzksICAgMTQ2LCAgIDE0
NywgICAgMTMsCi0gICAgICAxNCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAg
ICA0MCwgICAgNzYsICAgIDc3LCAgICA4MiwKLSAgICAgMTA4LCAgIDEyMSwgICAxMjIsICAgMTI0
LCAgIDEyNiwgICAxMjcsICAgMTQyLCAgIDE1MSwgICAxNTIsICAgMTUzLAotICAgICAxNTQsICAg
MTYyLCAgIDE2MywgICAxNjQsICAgMTY3LCAgIDE3NCwgICAgNDUsICAgMTMxLCAgIDEzNCwgICAg
NzQsCi0gICAgICA4MSwgICAgNzUsICAgMTI1LCAgIDEyMiwgICAxNTAsICAgMTA4LCAgIDEwOCwg
ICAxMjQsICAgIDUzLCAgICA1NCwKLSAgICAgIDc0LCAgICA3OCwgICAgNzMsICAgIDczLCAgICA3
OSwgICAgMzksICAgMTIyLCAgICA3MiwgICAxMDgsICAgIDg3LAotICAgICAgODgsICAgIDg0LCAg
ICA4NiwgICAgNTUsICAgIDU2LCAgICA5MCwgICAgOTEsICAgIDU3LCAgICA1OCwgICAgNTksCi0g
ICAgICA2MSwgICAgNjAsICAgIDk1LCAgICA3NSwgICAxNDYsICAgIDQ1LCAgIDE0OCwgICAxNDks
ICAgIDc3LCAgIDE0NywKLSAgICAgIDgyLCAgICA4MiwgICAxNjksICAgIDcyLCAgICA3MiwgICAg
ODIsICAgIDgyLCAgIDEyNCwgICAgNzIsICAgIDc3LAotICAgICAxNTUsICAgIDYyLCAgICA2Mywg
ICAgNjQsICAgIDcxLCAgICA4MSwgICAxMjMsICAgIDc5LCAgICA4MiwgICAgNzcsCi0gICAgIDE1
MiwgICAgNzQsICAgIDc1LCAgIDEyNSwgICAxNTAsICAgIDc1LCAgICA3MywgICAxMDAsICAgMTI0
LCAgICA0NSwKLSAgICAgIDUwLCAgIDEwMywgICAxMjIsICAgMTA4LCAgIDEwOCwgICAxMTAsICAg
MTEwLCAgIDExMiwgICAxMTIsICAgMTEyLAotICAgICAxMTIsICAgMTEzLCAgIDExMywgICAxMTcs
ICAgMTE4LCAgIDExOSwgICAxMjQsICAgIDc3LCAgICA3NCwgICAgNzksCi0gICAgICA4MiwgICAx
NTgsICAgMTU5LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4MiwgICAxNjgsICAgMTYyLCAgIDEy
MiwKLSAgICAgMTIyLCAgIDEyNSwgICAgNzUsICAgIDc1LCAgICA4MCwgICAxMjUsICAgMTQ5LCAg
ICA0MCwgICAxNjEsICAgMTUzLAotICAgICAxNTEsICAgMTYzLCAgIDE3MSwgICAgNzMsICAgMTI0
LCAgIDEzNywgICAxNjYsICAgMTU2LCAgICA3NSwgICAxMjIsCi0gICAgICA3NSwgICAgNzIsICAg
MTY2LCAgIDE3MiwgICAxNzMsICAgMTU4LCAgIDE2NSwgICAgNDUsICAgIDczLCAgICA3NywKLSAg
ICAgMTI0LCAgICA4MiwgICAgNzMsICAgIDE2LCAgICA4MSwgICAxNTMsICAgMTU3LCAgIDE2MSwg
ICAgNzMsICAgMTI0LAotICAgICAxNTcsICAgMTU4LCAgIDE1MCwgICAgODIKKyAgICAgIDQ1LCAg
IDE0MCwgICAgNDUsICAgIDQ2LCAgICA3NSwgICAgOTYsICAgIDgxLCAgIDE3OCwgICAgNzIsICAg
IDc4LAorICAgICAgIDMsICAgIDMzLCAgICAzNCwgICAgMzUsICAgMTMyLCAgIDEzMywgICAxMzgs
ICAgIDc4LCAgICA4MSwgICAgNDUsCisgICAgICA5NiwgICAxMzksICAgMTQxLCAgICA3MywgICAg
IDAsICAgMTc2LCAgIDE0MSwgICAxNDUsICAgIDc1LCAgICA3NSwKKyAgICAgMTYxLCAgIDEzMiwg
ICAxMzEsICAgMTM0LCAgIDEzOSwgICAxMzMsICAgIDk2LCAgICA3MSwgICAgNzMsICAgIDgwLAor
ICAgICAgNDUsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUyLCAgICA1MywgICAgNzEsICAgIDgy
LCAgICA4MywgICAgODUsCisgICAgICA5NywgICAgOTgsICAgIDk5LCAgIDEwMSwgICAxMDIsICAg
MTAzLCAgIDEwNCwgICAxMDUsICAgMTA2LCAgIDEwNywKKyAgICAgMTA4LCAgIDEwOSwgICAxMTAs
ICAgMTExLCAgIDExMiwgICAxMTMsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LAorICAgICAx
MTgsICAgMTE5LCAgIDEyMCwgICAxMjEsICAgMTI1LCAgIDE0MiwgICAgODEsICAgMTM5LCAgIDE0
NiwgICAxNDcsCisgICAgIDE0NCwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTcsICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDQwLCAgICA3NSwKKyAgICAgIDc2LCAgICA4MSwgICAxMDgsICAgMTIx
LCAgIDEyMiwgICAxMjQsICAgMTI2LCAgIDEyNywgICAxNDIsICAgMTUxLAorICAgICAxNTIsICAg
MTUzLCAgIDE1NCwgICAxNjIsICAgMTYzLCAgIDE2NCwgICAxNjcsICAgMTc0LCAgICA5NiwgICAx
MzEsCisgICAgIDEzNCwgICAgNzMsICAgIDgwLCAgICA3NCwgICAxMjUsICAgMTIyLCAgIDE1MCwg
ICAxMDgsICAgMTA4LCAgIDEyNCwKKyAgICAgIDUyLCAgICA1MywgICAgNzMsICAgIDc3LCAgICA3
MiwgICAgNzIsICAgIDc4LCAgICAzOSwgICAxMjIsICAgIDcxLAorICAgICAxMDgsICAgIDg2LCAg
ICA4NywgICAgODMsICAgIDg1LCAgICA1NCwgICAgNTUsICAgIDg5LCAgICA5MCwgICAgNTYsCisg
ICAgICA1NywgICAgNTgsICAgIDYwLCAgICA1OSwgICAgOTQsICAgIDc0LCAgICA5NiwgICAxNDgs
ICAgMTQ5LCAgICA3NiwKKyAgICAgMTQ3LCAgIDE0NiwgICAgODEsICAgIDgxLCAgIDE2OSwgICAg
NzEsICAgIDcxLCAgICA4MSwgICAgODEsICAgMTI0LAorICAgICAgNzEsICAgIDc2LCAgIDE1NSwg
ICAgNjEsICAgIDYyLCAgICA2MywgICAgNzAsICAgIDgwLCAgIDEyMywgICAgNzgsCisgICAgICA4
MSwgICAgNzYsICAgMTUyLCAgICA3MywgICAgNzQsICAgMTI1LCAgIDE1MCwgICAgNzQsICAgIDcy
LCAgIDEwMCwKKyAgICAgMTI0LCAgICA0NSwgICAgNDYsICAgIDk2LCAgIDEwMywgICAxMjIsICAg
MTA4LCAgIDEwOCwgICAxMTAsICAgMTEwLAorICAgICAxMTIsICAgMTEyLCAgIDExMiwgICAxMTIs
ICAgMTEzLCAgIDExMywgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjQsCisgICAgICA3MywgICAg
NzgsICAgIDgxLCAgICA3NiwgICAxNTgsICAgMTU5LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4
MSwKKyAgICAgMTY4LCAgIDE2MiwgICAxMjIsICAgMTIyLCAgIDEyNSwgICAgNzQsICAgIDc0LCAg
ICA3OSwgICAxMjUsICAgMTQ5LAorICAgICAgNDAsICAgMTYxLCAgIDE1MywgICAxNTEsICAgMTYz
LCAgIDE3MSwgICAgNzIsICAgMTI0LCAgIDEzNywgICAxNjYsCisgICAgIDE1NiwgICAgNzQsICAg
MTIyLCAgICA3NCwgICAgNzEsICAgMTY2LCAgIDE3MiwgICAxNzMsICAgMTU4LCAgIDE2NSwKKyAg
ICAgIDk2LCAgICA3MiwgICAgNzYsICAgMTI0LCAgICA4MSwgICAgNzIsICAgIDE2LCAgICA4MCwg
ICAxNTMsICAgMTU3LAorICAgICAxNjEsICAgIDcyLCAgIDEyNCwgICAxNTcsICAgMTU4LCAgIDE1
MCwgICAgODEKIH07CiAKICNkZWZpbmUgeXllcnJvawkJKHl5ZXJyc3RhdHVzID0gMCkKQEAgLTEz
NjYsNyArMTQwMSw3IEBAIGRvCQkJCQkJCQlcCiAgICAgfQkJCQkJCQkJXAogICBlbHNlCQkJCQkJ
CQlcCiAgICAgewkJCQkJCQkJXAotICAgICAgeXllcnJvciAoY29udGV4dCwgWVlfKCJzeW50YXgg
ZXJyb3I6IGNhbm5vdCBiYWNrIHVwIikpOyBcCisgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250
ZXh0LCBZWV8oInN5bnRheCBlcnJvcjogY2Fubm90IGJhY2sgdXAiKSk7IFwKICAgICAgIFlZRVJS
T1I7CQkJCQkJCVwKICAgICB9CQkJCQkJCQlcCiB3aGlsZSAoWVlJRCAoMCkpCkBAIC0xNDIxLDkg
KzE0NTYsOSBAQCB3aGlsZSAoWVlJRCAoMCkpCiAvKiBZWUxFWCAtLSBjYWxsaW5nIGB5eWxleCcg
d2l0aCB0aGUgcmlnaHQgYXJndW1lbnRzLiAgKi8KIAogI2lmZGVmIFlZTEVYX1BBUkFNCi0jIGRl
ZmluZSBZWUxFWCB5eWxleCAoJnl5bHZhbCwgWVlMRVhfUEFSQU0pCisjIGRlZmluZSBZWUxFWCB5
eWxleCAoJnl5bHZhbCwgJnl5bGxvYywgWVlMRVhfUEFSQU0pCiAjZWxzZQotIyBkZWZpbmUgWVlM
RVggeXlsZXggKCZ5eWx2YWwpCisjIGRlZmluZSBZWUxFWCB5eWxleCAoJnl5bHZhbCwgJnl5bGxv
YykKICNlbmRpZgogCiAvKiBFbmFibGUgZGVidWdnaW5nIGlmIHJlcXVlc3RlZC4gICovCkBAIC0x
NDQ2LDcgKzE0ODEsNyBAQCBkbyB7CQkJCQkJCQkJICBcCiAgICAgewkJCQkJCQkJCSAgXAogICAg
ICAgWVlGUFJJTlRGIChzdGRlcnIsICIlcyAiLCBUaXRsZSk7CQkJCQkgIFwKICAgICAgIHl5X3N5
bWJvbF9wcmludCAoc3RkZXJyLAkJCQkJCSAgXAotCQkgIFR5cGUsIFZhbHVlLCBjb250ZXh0KTsg
XAorCQkgIFR5cGUsIFZhbHVlLCBMb2NhdGlvbiwgY29udGV4dCk7IFwKICAgICAgIFlZRlBSSU5U
RiAoc3RkZXJyLCAiXG4iKTsJCQkJCQkgIFwKICAgICB9CQkJCQkJCQkJICBcCiB9IHdoaWxlIChZ
WUlEICgwKSkKQEAgLTE0NjAsMTggKzE0OTUsMjAgQEAgZG8gewkJCQkJCQkJCSAgXAogI2lmIChk
ZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmlu
ZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9zeW1i
b2xfdmFsdWVfcHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0
ICogY29uc3QgeXl2YWx1ZXAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eV9zeW1ib2xfdmFs
dWVfcHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29u
c3QgeXl2YWx1ZXAsIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucCwgVFBhcnNlQ29u
dGV4dCogY29udGV4dCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ZhbHVlX3ByaW50
ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCkKK3l5X3N5bWJvbF92YWx1ZV9w
cmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIHl5bG9jYXRpb25wLCBjb250ZXh0KQog
ICAgIEZJTEUgKnl5b3V0cHV0OwogICAgIGludCB5eXR5cGU7CiAgICAgWVlTVFlQRSBjb25zdCAq
IGNvbnN0IHl5dmFsdWVwOworICAgIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucDsK
ICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0OwogI2VuZGlmCiB7CiAgIGlmICgheXl2YWx1ZXAp
CiAgICAgcmV0dXJuOworICBZWVVTRSAoeXlsb2NhdGlvbnApOwogICBZWVVTRSAoY29udGV4dCk7
CiAjIGlmZGVmIFlZUFJJTlQKICAgaWYgKHl5dHlwZSA8IFlZTlRPS0VOUykKQEAgLTE0OTQsMTMg
KzE1MzEsMTQgQEAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLAogI2lm
IChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRl
ZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9z
eW1ib2xfcHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICog
Y29uc3QgeXl2YWx1ZXAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eV9zeW1ib2xfcHJpbnQg
KEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1
ZXAsIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucCwgVFBhcnNlQ29udGV4dCogY29u
dGV4dCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0
eXBlLCB5eXZhbHVlcCwgY29udGV4dCkKK3l5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlw
ZSwgeXl2YWx1ZXAsIHl5bG9jYXRpb25wLCBjb250ZXh0KQogICAgIEZJTEUgKnl5b3V0cHV0Owog
ICAgIGludCB5eXR5cGU7CiAgICAgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwOworICAg
IFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucDsKICAgICBUUGFyc2VDb250ZXh0KiBj
b250ZXh0OwogI2VuZGlmCiB7CkBAIC0xNTA5LDcgKzE1NDcsOSBAQCB5eV9zeW1ib2xfcHJpbnQg
KHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsCiAgIGVsc2UKICAgICBZWUZQUklOVEYgKHl5b3V0cHV0
LCAibnRlcm0gJXMgKCIsIHl5dG5hbWVbeXl0eXBlXSk7CiAKLSAgeXlfc3ltYm9sX3ZhbHVlX3By
aW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCk7CisgIFlZX0xPQ0FUSU9O
X1BSSU5UICh5eW91dHB1dCwgKnl5bG9jYXRpb25wKTsKKyAgWVlGUFJJTlRGICh5eW91dHB1dCwg
IjogIik7CisgIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1
ZXAsIHl5bG9jYXRpb25wLCBjb250ZXh0KTsKICAgWVlGUFJJTlRGICh5eW91dHB1dCwgIikiKTsK
IH0KIApAQCAtMTU0OSwxMSArMTU4OSwxMiBAQCBkbyB7CQkJCQkJCQlcCiAjaWYgKGRlZmluZWQg
X19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2Nw
bHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKLXl5X3JlZHVjZV9wcmlu
dCAoWVlTVFlQRSAqeXl2c3AsIGludCB5eXJ1bGUsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5
eV9yZWR1Y2VfcHJpbnQgKFlZU1RZUEUgKnl5dnNwLCBZWUxUWVBFICp5eWxzcCwgaW50IHl5cnVs
ZSwgVFBhcnNlQ29udGV4dCogY29udGV4dCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfcmVkdWNl
X3ByaW50ICh5eXZzcCwgeXlydWxlLCBjb250ZXh0KQoreXlfcmVkdWNlX3ByaW50ICh5eXZzcCwg
eXlsc3AsIHl5cnVsZSwgY29udGV4dCkKICAgICBZWVNUWVBFICp5eXZzcDsKKyAgICBZWUxUWVBF
ICp5eWxzcDsKICAgICBpbnQgeXlydWxlOwogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAj
ZW5kaWYKQEAgLTE1NjksNyArMTYxMCw3IEBAIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5cnVs
ZSwgY29udGV4dCkKICAgICAgIGZwcmludGYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEp
OwogICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVdICsg
eXlpXSwKIAkJICAgICAgICYoeXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQotCQkgICAgICAg
CQkgICAgICAgLCBjb250ZXh0KTsKKwkJICAgICAgICwgJih5eWxzcFsoeXlpICsgMSkgLSAoeXlu
cmhzKV0pCQkgICAgICAgLCBjb250ZXh0KTsKICAgICAgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7
CiAgICAgfQogfQpAQCAtMTU3Nyw3ICsxNjE4LDcgQEAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwg
eXlydWxlLCBjb250ZXh0KQogIyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpCQlcCiBkbyB7
CQkJCQlcCiAgIGlmICh5eWRlYnVnKQkJCQlcCi0gICAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwg
UnVsZSwgY29udGV4dCk7IFwKKyAgICB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eWxzcCwgUnVs
ZSwgY29udGV4dCk7IFwKIH0gd2hpbGUgKFlZSUQgKDApKQogCiAvKiBOb256ZXJvIG1lYW5zIHBy
aW50IHBhcnNlIHRyYWNlLiAgSXQgaXMgbGVmdCB1bmluaXRpYWxpemVkIHNvIHRoYXQKQEAgLTE4
MjgsMTcgKzE4NjksMTkgQEAgeXlzeW50YXhfZXJyb3IgKGNoYXIgKnl5cmVzdWx0LCBpbnQgeXlz
dAogI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAg
IHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lk
Ci15eWRlc3RydWN0IChjb25zdCBjaGFyICp5eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2
YWx1ZXAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eWRlc3RydWN0IChjb25zdCBjaGFyICp5
eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFlZTFRZUEUgKnl5bG9jYXRpb25w
LCBUUGFyc2VDb250ZXh0KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eWRlc3RydWN0
ICh5eW1zZywgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCkKK3l5ZGVzdHJ1Y3QgKHl5bXNnLCB5
eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICAgICBjb25zdCBjaGFyICp5
eW1zZzsKICAgICBpbnQgeXl0eXBlOwogICAgIFlZU1RZUEUgKnl5dmFsdWVwOworICAgIFlZTFRZ
UEUgKnl5bG9jYXRpb25wOwogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsK
ICAgWVlVU0UgKHl5dmFsdWVwKTsKKyAgWVlVU0UgKHl5bG9jYXRpb25wKTsKICAgWVlVU0UgKGNv
bnRleHQpOwogCiAgIGlmICgheXltc2cpCkBAIC0xOTA5LDYgKzE5NTIsOCBAQCBZWVNUWVBFIHl5
bHZhbDsKIAogLyogTnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KIGludCB5eW5l
cnJzOworLyogTG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KK1lZ
TFRZUEUgeXlsbG9jOwogCiAgIGludCB5eXN0YXRlOwogICBpbnQgeXluOwpAQCAtMTk0MiwxNiAr
MTk4NywyMSBAQCBpbnQgeXluZXJyczsKICAgWVlTVFlQRSAqeXl2cyA9IHl5dnNhOwogICBZWVNU
WVBFICp5eXZzcDsKIAorICAvKiBUaGUgbG9jYXRpb24gc3RhY2suICAqLworICBZWUxUWVBFIHl5
bHNhW1lZSU5JVERFUFRIXTsKKyAgWVlMVFlQRSAqeXlscyA9IHl5bHNhOworICBZWUxUWVBFICp5
eWxzcDsKKyAgLyogVGhlIGxvY2F0aW9ucyB3aGVyZSB0aGUgZXJyb3Igc3RhcnRlZCBhbmQgZW5k
ZWQuICAqLworICBZWUxUWVBFIHl5ZXJyb3JfcmFuZ2VbMl07CiAKLQotI2RlZmluZSBZWVBPUFNU
QUNLKE4pICAgKHl5dnNwIC09IChOKSwgeXlzc3AgLT0gKE4pKQorI2RlZmluZSBZWVBPUFNUQUNL
KE4pICAgKHl5dnNwIC09IChOKSwgeXlzc3AgLT0gKE4pLCB5eWxzcCAtPSAoTikpCiAKICAgWVlT
SVpFX1QgeXlzdGFja3NpemUgPSBZWUlOSVRERVBUSDsKIAogICAvKiBUaGUgdmFyaWFibGVzIHVz
ZWQgdG8gcmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQogICAgICBh
Y3Rpb24gcm91dGluZXMuICAqLwogICBZWVNUWVBFIHl5dmFsOwotCisgIFlZTFRZUEUgeXlsb2M7
CiAKICAgLyogVGhlIG51bWJlciBvZiBzeW1ib2xzIG9uIHRoZSBSSFMgb2YgdGhlIHJlZHVjZWQg
cnVsZS4KICAgICAgS2VlcCB0byB6ZXJvIHdoZW4gbm8gc3ltYm9sIHNob3VsZCBiZSBwb3BwZWQu
ICAqLwpAQCAtMTk3MSw2ICsyMDIxLDEyIEBAIGludCB5eW5lcnJzOwogCiAgIHl5c3NwID0geXlz
czsKICAgeXl2c3AgPSB5eXZzOworICB5eWxzcCA9IHl5bHM7CisjaWYgZGVmaW5lZCBZWUxUWVBF
X0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFMCisgIC8qIEluaXRpYWxpemUgdGhlIGRl
ZmF1bHQgbG9jYXRpb24gYmVmb3JlIHBhcnNpbmcgc3RhcnRzLiAgKi8KKyAgeXlsbG9jLmZpcnN0
X2xpbmUgICA9IHl5bGxvYy5sYXN0X2xpbmUgICA9IDE7CisgIHl5bGxvYy5maXJzdF9jb2x1bW4g
PSB5eWxsb2MubGFzdF9jb2x1bW4gPSAwOworI2VuZGlmCiAKICAgZ290byB5eXNldHN0YXRlOwog
CkBAIC0xOTk3LDcgKzIwNTMsNyBAQCBpbnQgeXluZXJyczsKIAkgICBtZW1vcnkuICAqLwogCVlZ
U1RZUEUgKnl5dnMxID0geXl2czsKIAl5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKLQorCVlZ
TFRZUEUgKnl5bHMxID0geXlsczsKIAogCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlz
IGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQogCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQgc3Rh
Y2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKQEAgLTIwMDYsOSArMjA2Miw5IEBAIGlu
dCB5eW5lcnJzOwogCXl5b3ZlcmZsb3cgKFlZXygibWVtb3J5IGV4aGF1c3RlZCIpLAogCQkgICAg
Jnl5c3MxLCB5eXNpemUgKiBzaXplb2YgKCp5eXNzcCksCiAJCSAgICAmeXl2czEsIHl5c2l6ZSAq
IHNpemVvZiAoKnl5dnNwKSwKLQorCQkgICAgJnl5bHMxLCB5eXNpemUgKiBzaXplb2YgKCp5eWxz
cCksCiAJCSAgICAmeXlzdGFja3NpemUpOwotCisJeXlscyA9IHl5bHMxOwogCXl5c3MgPSB5eXNz
MTsKIAl5eXZzID0geXl2czE7CiAgICAgICB9CkBAIC0yMDMxLDcgKzIwODcsNyBAQCBpbnQgeXlu
ZXJyczsKIAkgIGdvdG8geXlleGhhdXN0ZWRsYWI7CiAJWVlTVEFDS19SRUxPQ0FURSAoeXlzcyk7
CiAJWVlTVEFDS19SRUxPQ0FURSAoeXl2cyk7Ci0KKwlZWVNUQUNLX1JFTE9DQVRFICh5eWxzKTsK
ICMgIHVuZGVmIFlZU1RBQ0tfUkVMT0NBVEUKIAlpZiAoeXlzczEgIT0geXlzc2EpCiAJICBZWVNU
QUNLX0ZSRUUgKHl5c3MxKTsKQEAgLTIwNDEsNyArMjA5Nyw3IEBAIGludCB5eW5lcnJzOwogCiAg
ICAgICB5eXNzcCA9IHl5c3MgKyB5eXNpemUgLSAxOwogICAgICAgeXl2c3AgPSB5eXZzICsgeXlz
aXplIC0gMTsKLQorICAgICAgeXlsc3AgPSB5eWxzICsgeXlzaXplIC0gMTsKIAogICAgICAgWVlE
UFJJTlRGICgoc3RkZXJyLCAiU3RhY2sgc2l6ZSBpbmNyZWFzZWQgdG8gJWx1XG4iLAogCQkgICh1
bnNpZ25lZCBsb25nIGludCkgeXlzdGFja3NpemUpKTsKQEAgLTIxMTgsNyArMjE3NCw3IEBAIHl5
YmFja3VwOgogCiAgIHl5c3RhdGUgPSB5eW47CiAgICorK3l5dnNwID0geXlsdmFsOwotCisgICor
K3l5bHNwID0geXlsbG9jOwogICBnb3RvIHl5bmV3c3RhdGU7CiAKIApAQCAtMjE0OSwxOCArMjIw
NSwxOSBAQCB5eXJlZHVjZToKICAgICAgR0NDIHdhcm5pbmcgdGhhdCBZWVZBTCBtYXkgYmUgdXNl
ZCB1bmluaXRpYWxpemVkLiAgKi8KICAgeXl2YWwgPSB5eXZzcFsxLXl5bGVuXTsKIAotCisgIC8q
IERlZmF1bHQgbG9jYXRpb24uICAqLworICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWxzcCAt
IHl5bGVuKSwgeXlsZW4pOwogICBZWV9SRURVQ0VfUFJJTlQgKHl5bik7CiAgIHN3aXRjaCAoeXlu
KQogICAgIHsKLSAgICAgICAgY2FzZSAyOgorICAgICAgICBjYXNlIDQ6CiAKICAgICB7CiAgICAg
ICAgIC8vIFRoZSBzeW1ib2wgdGFibGUgc2VhcmNoIHdhcyBkb25lIGluIHRoZSBsZXhpY2FsIHBo
YXNlCiAgICAgICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9ICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkuc3ltYm9sOwogICAgICAgICBjb25zdCBUVmFyaWFibGUqIHZhcmlhYmxlOwogICAgICAgICBp
ZiAoc3ltYm9sID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciIsICh5eXZzcFsoMSkgLSAo
MSldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMSkgLSAoMSldKSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciIsICh5eXZzcFsoMSkgLSAo
MSldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCk7CiAgICAg
ICAgICAgICBUVmFyaWFibGUqIGZha2VWYXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5zdHJpbmcsIHR5cGUpOwpAQCAtMjE2OSwxMCArMjIyNiwxNyBAQCB5eXJl
ZHVjZToKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoaXMgaWRlbnRpZmllciBj
YW4gb25seSBiZSBhIHZhcmlhYmxlIHR5cGUgc3ltYm9sCiAgICAgICAgICAgICBpZiAoISBzeW1i
b2wtPmlzVmFyaWFibGUoKSkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSwgInZhcmlhYmxlIGV4cGVjdGVkIiwgKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgInZhcmlhYmxlIGV4cGVjdGVkIiwgKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgdmFyaWFi
bGUgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOworCisgICAgICAgICAg
ICBpZiAoY29udGV4dC0+c3ltYm9sVGFibGUuZmluZEJ1aWx0SW4odmFyaWFibGUtPmdldE5hbWUo
KSkgJiYKKyAgICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkg
JiYKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eWxzcFso
MSkgLSAoMSldKSwgdmFyaWFibGUtPmdldEV4dGVuc2lvbigpKSkgeworICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAg
IC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcsIGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVyeSwg
YW5kIHRoZSBwb29sCkBAIC0yMTgxLDIyICsyMjQ1LDIzIEBAIHl5cmVkdWNlOgogICAgICAgICBp
ZiAodmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCApIHsKICAg
ICAgICAgICAgIENvbnN0YW50VW5pb24qIGNvbnN0QXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29uc3RQ
b2ludGVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0KHZhcmlhYmxlLT5nZXRUeXBlKCkpOwotICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICh5
eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2
YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUo
KSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5
bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzoKKyAgY2Fz
ZSA1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgNDoKKyAgY2FzZSA2OgogCiAgICAgewogICAgICAgICAvLwpAQCAtMjIw
NCwxNTUgKzIyNjksNzkgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8vIGNoZWNrIGZvciBvdmVyZmxv
dyBmb3IgY29uc3RhbnRzCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChhYnMoKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5pKSA+PSAoMSA8PCAxNikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93
IiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAi
IGludGVnZXIgY29uc3RhbnQgb3ZlcmZsb3ciLCAiIik7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9
IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5pKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUo
RWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNToKKyAgY2FzZSA3OgogCiAgICAgewogICAgICAg
ICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAg
ICAgIHVuaW9uQXJyYXktPnNldEZDb25zdCgoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmYpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFDb25zdCksICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgNjoKKyAgY2FzZSA4OgogCiAgICAgewogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25z
dCgoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmIpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSld
KSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDc6CisgIGNhc2UgOToKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDg6CisgIGNhc2UgMTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5OgorICBjYXNlIDExOgogCiAgICAgewotICAgICAg
ICBpZiAoISh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5
KCkgJiYgISh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJp
eCgpICYmICEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0
b3IoKSkgewotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRBc1N5bWJvbE5vZGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9m
IHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkuY19zdHIo
KSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFy
cmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAiZXhwcmVzc2lvbiIpOwotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2
cUNvbnN0ICYmICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRR
dWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkpIHsgLy8gY29uc3RhbnQgZm9s
ZGluZyBmb3IgYXJyYXlzCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RBcnJheU5vZGUoKHl5dnNwWygzKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3Rv
cigpKSB7ICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCi0gICAgICAgICAgICAgICAg
VFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7Ci0g
ICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCktPmdldElDb25zdCgpOyAvLyBuZWVkIHRvIGRvIGl0IHRoaXMgd2F5IGJlY2F1c2Ug
di54eSBzZW5kcyBmaWVsZHMgaW50ZWdlciBhcnJheQotICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVs
ZHMsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIp
IC0gKDQpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSkgeyAvLyBjb25zdGFudCBm
b2xkaW5nIGZvciBtYXRyaWNlcwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0TWF0cml4Tm9kZSgoeXl2c3BbKDMpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9u
QXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5pc1ZlY3RvcigpIHx8ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5pc01hdHJpeCgpKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gKHl5dnNwWygzKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpLT5nZXRJQ29uc3QoKSAmJiAhKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmlzQXJyYXkoKSApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9T
dHJlYW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgKHl5dnNwWygzKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5l
LCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJy
YXkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgPT0gMCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldE1heEFycmF5U2l6ZSgpIDw9ICh5eXZzcFso
MykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+
Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCksICh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigpLCAoeXl2
c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9u
KCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpLCB0cnVlLCAoeXl2c3BbKDIp
IC0gKDQpXS5sZXgpLmxpbmUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNldE1h
eFNpemUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzU3lt
Ym9sTm9kZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
VHlwZVBvaW50ZXIoKSwgMCwgZmFsc2UsICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICggKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFz
Q29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA+PSAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldEFy
cmF5U2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJl
YW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhSW5m
b1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlICciIDw8ICh5eXZzcFsoMykgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5p
b25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIiciOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0g
KDQpXS5sZXgpLmxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4
KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikg
LSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzQXJyYXkoKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIiwgIlsi
LCAiYXJyYXkgbXVzdCBiZSByZWRlY2xhcmVkIHdpdGggYSBzaXplIGJlZm9yZSBiZWluZyBpbmRl
eGVkIHdpdGggYSB2YXJpYWJsZSIpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcElu
ZGV4SW5kaXJlY3QsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0
KV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIENvbnN0YW50
VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgICAgIHVu
aW9uQXJyYXktPnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCksICh5eXZzcFsoMikg
LSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgaWYgKCh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3Ry
dWN0KCkpCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5z
ZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRUeXBlKCkuZ2V0U3RydWN0KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSkpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlw
ZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBl
KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNp
b24oKSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Tm9taW5hbFNpemUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzTWF0cml4KCkpKTsKLQotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0g
RXZxQ29uc3QpCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICB9IGVs
c2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJp
eCgpICYmICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBl
KCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0LCAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOwotICAg
ICAgICBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
aXNNYXRyaXgoKSkKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOwotICAgICAgICBlbHNlIGlmICgo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSAmJiAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1
YWxpZmllcigpID09IEV2cUNvbnN0KQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCkpOwotICAgICAgICBlbHNlIGlm
ICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkK
LSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlw
ZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBl
KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNp
b24oKSwgRXZxVGVtcG9yYXJ5KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkSW5kZXhFeHByZXNzaW9uKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFso
MykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTA6CisgIGNhc2UgMTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMToKKyAgY2FzZSAxMzoKIAogICAg
IHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5pc0FycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMykgLSAo
MyldLmxleCkubGluZSwgImNhbm5vdCBhcHBseSBkb3Qgb3BlcmF0b3IgdG8gYW4gYXJyYXkiLCAi
LiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAiY2Fu
bm90IGFwcGx5IGRvdCBvcGVyYXRvciB0byBhbiBhcnJheSIsICIuIik7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkpIHsKICAgICAgICAgICAg
IFRWZWN0b3JGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VW
ZWN0b3JGaWVsZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpKSB7CisgICAgICAgICAgICBpZiAoISBjb250ZXh0
LT5wYXJzZVZlY3RvckZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBm
aWVsZHMsICh5eWxzcFsoMykgLSAoMyldKSkpIHsKICAgICAgICAgICAgICAgICBmaWVsZHMubnVt
ID0gMTsKICAgICAgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1swXSA9IDA7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0
b3IgZmllbGRzCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7Cisg
ICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eWxzcFsoMykgLSAoMyldKSk7CiAgICAgICAgICAgICAgICAgaWYgKCh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CkBAIC0yMzYxLDEzICsyMzUwLDEzIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNv
bnN0LCAoaW50KSAoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nKS5zaXplKCkpKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgVFN0cmluZyB2ZWN0b3JTdHJpbmcg
PSAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmc7Ci0gICAgICAgICAgICAgICAgVEludGVy
bVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxlKGZpZWxkcywg
KHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9w
VmVjdG9yU3dpenpsZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IGluZGV4LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgICAgIFRJ
bnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVs
ZHMsICh5eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcFZlY3Rv
clN3aXp6bGUsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRl
eCwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgKGludCkgdmVj
dG9yU3RyaW5nLnNpemUoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKCh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSB7CiAg
ICAgICAgICAgICBUTWF0cml4RmllbGRzIGZpZWxkczsKLSAgICAgICAgICAgIGlmICghIGNvbnRl
eHQtPnBhcnNlTWF0cml4RmllbGRzKCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCks
IGZpZWxkcywgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKSkgeworICAgICAgICAgICAgaWYg
KCEgY29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3Ry
aW5nLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5h
bFNpemUoKSwgZmllbGRzLCAoeXlsc3BbKDMpIC0gKDMpXSkpKSB7CiAgICAgICAgICAgICAgICAg
ZmllbGRzLndob2xlUm93ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLndob2xlQ29s
ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLnJvdyA9IDA7CkBAIC0yMzc2LDYzICsy
MzY1LDU3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZmll
bGRzLndob2xlUm93IHx8IGZpZWxkcy53aG9sZUNvbCkgewotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiBub24tc2NhbGFyIGZpZWxk
cyBub3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIgbm9uLXNjYWxhciBmaWVsZHMgbm90IGltcGxlbWVu
dGVkIHlldCIsICIuIik7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlv
blsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoMCk7Ci0gICAgICAg
ICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZElu
ZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAg
ICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
ICh5eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGly
ZWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5
eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCkpKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9
IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElD
b25zdChmaWVsZHMuY29sICogKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldE5vbWluYWxTaXplKCkgKyBmaWVsZHMucm93KTsKLSAgICAgICAgICAgICAgICBUSW50
ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNw
WygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhE
aXJlY3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwg
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygzKSAt
ICgzKV0pKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5bHNwWygyKSAtICgz
KV0pKTsKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNl
dFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0UHJlY2lzaW9uKCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICgoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCkgPT0g
RWJ0U3RydWN0KSB7CiAgICAgICAgICAgICBib29sIGZpZWxkRm91bmQgPSBmYWxzZTsKLSAgICAg
ICAgICAgIGNvbnN0IFRUeXBlTGlzdCogZmllbGRzID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKLSAgICAgICAgICAgIGlm
IChmaWVsZHMgPT0gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MikgLSAoMyldLmxleCkubGluZSwgInN0cnVjdHVyZSBoYXMgbm8gZmllbGRzIiwgIkludGVybmFs
IEVycm9yIik7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg
ZmllbGRzLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKCpmaWVsZHMp
W2ldLnR5cGUtPmdldEZpZWxkTmFtZSgpID09ICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmlu
ZykgewotICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmllbGRzW2ldLT5uYW1lKCkgPT0g
Kih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGZp
ZWxkRm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGZpZWxkRm91bmQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRU
eXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0U3Ry
dWN0KCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09
IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5
cGUoKigqZmllbGRzKVtpXS50eXBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBj
aGFuZ2UgdGhlIHF1YWxpZmllciBvZiB0aGUgcmV0dXJuIHR5cGUsIG5vdCBvZiB0aGUgc3RydWN0
dXJlIGZpZWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgdGhlIHN0cnVjdHVy
ZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHZhcmlvdXMgc3RydWN0dXJlcy4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFDb25zdCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07
Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgKigqZmllbGRzKVtpXS50eXBlLCAo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZElu
ZGV4KEVPcEluZGV4RGlyZWN0U3RydWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUo
KigqZmllbGRzKVtpXS50eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmaWVs
ZEZvdW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsK
KyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+YWRkQ29uc3RTdHJ1Y3QoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0p
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgqZmllbGRzW2ldLT50
eXBlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIg
b2YgdGhlIHJldHVybiB0eXBlLCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBmaWVsZAorICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gYXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBi
ZXR3ZWVuIHZhcmlvdXMgc3RydWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVy
KEV2cUNvbnN0KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICh5eXZzcFsoMykgLSAo
MyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKKyAgICAg
ICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uWzFdOworICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7Cisg
ICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAqZmllbGRzW2ldLT50eXBlKCksICh5
eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERp
cmVjdFN0cnVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGlu
ZGV4LCAoeXlsc3BbKDIpIC0gKDMpXSkpOworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoKmZpZWxkc1tpXS0+dHlwZSgpKTsKICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVy
ZSIsICh5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIgZmllbGQgc2VsZWN0aW9uIHJl
cXVpcmVzIHN0cnVjdHVyZSwgdmVjdG9yLCBvciBtYXRyaXggb24gbGVmdCBoYW5kIHNpZGUiLCAo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIgZmllbGQgc2VsZWN0aW9uIHJlcXVpcmVz
IHN0cnVjdHVyZSwgdmVjdG9yLCBvciBtYXRyaXggb24gbGVmdCBoYW5kIHNpZGUiLCAoeXl2c3Bb
KDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQpAQCAt
MjQ0MCwzNSArMjQyMywzNSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTI6CisgIGNhc2UgMTQ6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVF
cnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIisrIiwgKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZh
bHVlRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICIrKyIsICh5eXZzcFsoMSkgLSAoMild
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVtZW50LCAoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdEluY3JlbWVu
dCwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikg
LSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BF
cnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICIrKyIsICh5eXZzcFsoMSkgLSAoMild
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICIrKyIsICh5eXZz
cFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzOgor
ICBjYXNlIDE1OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVj
aygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9y
Q2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdERlY3JlbWVudCwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNyZW1lbnQsICh5eXZz
cFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDIpXSks
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5
dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT51bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEpIC0g
KDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDoKKyAgY2FzZSAx
NjoKIAogICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQtPmludGVnZXJFcnJvckNoZWNrKCh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAiW10iKSkKQEAgLTI0NzcsNyAr
MjQ2MCw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNToKKyAg
Y2FzZSAxNzoKIAogICAgIHsKICAgICAgICAgVEZ1bmN0aW9uKiBmbkNhbGwgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmZ1bmN0aW9uOwpAQCAtMjQ5MSwxOCArMjQ3NCwxOCBAQCB5eXJlZHVj
ZToKICAgICAgICAgICAgIC8vIFRoZWlyIHBhcmFtZXRlcnMgd2lsbCBiZSB2ZXJpZmllZCBhbGdv
cml0aG1pY2FsbHkuCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgVFR5cGUgdHlwZShFYnRW
b2lkLCBFYnBVbmRlZmluZWQpOyAgLy8gdXNlIHRoaXMgdG8gZ2V0IHRoZSB0eXBlIGJhY2sKLSAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1Y3RvckVycm9yQ2hlY2soKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUs
ICpmbkNhbGwsIG9wLCAmdHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1
Y3RvckVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0pLmludGVybU5vZGUsICpmbkNhbGwsIG9wLCAmdHlwZSkpIHsKICAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEl0J3MgYSBjb25zdHJ1Y3Rv
ciwgb2YgdHlwZSAndHlwZScuCiAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3Rvcigo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxsLCAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0cnVjdG9yKCh5eXZzcFso
MSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgJnR5cGUsIG9wLCBmbkNhbGwsICh5eWxzcFso
MSkgLSAoMSldKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoMCwgb3AsICh5eXZz
cFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKDAsIG9wLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKHR5cGUpOwogICAg
ICAgICB9IGVsc2UgewpAQCAtMjUxMSwxMyArMjQ5NCwxMyBAQCB5eXJlZHVjZToKICAgICAgICAg
ICAgIC8vCiAgICAgICAgICAgICBjb25zdCBURnVuY3Rpb24qIGZuQ2FuZGlkYXRlOwogICAgICAg
ICAgICAgYm9vbCBidWlsdEluOwotICAgICAgICAgICAgZm5DYW5kaWRhdGUgPSBjb250ZXh0LT5m
aW5kRnVuY3Rpb24oKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCBmbkNhbGwsICZidWls
dEluKTsKKyAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKCh5
eWxzcFsoMSkgLSAoMSldKSwgZm5DYWxsLCAmYnVpbHRJbik7CiAgICAgICAgICAgICBpZiAoZm5D
YW5kaWRhdGUpIHsKICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEEgZGVj
bGFyZWQgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICBpZiAo
YnVpbHRJbiAmJiAhZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkgJiYKLSAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0pLmxpbmUsIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0g
KDEpXSksIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBvcCA9IGZuQ2FuZGlkYXRlLT5nZXRCdWlsdEluT3AoKTsKQEAgLTI1MjksNyArMjUxMiw3IEBA
IHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFRyZWF0IGl0IGxpa2UgYSBidWlsdC1pbiB1bmFyeSBvcGVyYXRvci4KICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRo
KG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsIDAsIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgob3AsICh5eXZz
cFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5bHNwWygxKSAtICgxKV0pLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYnVpbHQgaW4gdW5hcnkgb3BlcmF0b3IgZnVu
Y3Rpb24uICBUeXBlOiAiIDw8IHN0YXRpY19jYXN0PFRJbnRlcm1UeXBlZCo+KCh5eXZzcFsoMSkg
LSAoMSldLmludGVybSkuaW50ZXJtTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCk7CkBAIC0yNTM4
LDEyICsyNTIxLDEyIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlZ
RVJST1I7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIG9wLCAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJh
dG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCBvcCwgKHl5bHNw
WygxKSAtICgxKV0pKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSByZWFsIGZ1bmN0aW9uIGNh
bGwKIAotICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIEVPcEZ1bmN0aW9uQ2FsbCwgKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCBFT3BGdW5j
dGlvbkNhbGwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShmbkNhbmRpZGF0ZS0+Z2V0UmV0dXJu
VHlwZSgpKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGhvdyB3ZSBrbm93IHdo
ZXRoZXIgdGhlIGdpdmVuIGZ1bmN0aW9uIGlzIGEgYnVpbHRJbiBmdW5jdGlvbiBvciBhIHVzZXIg
ZGVmaW5lZCBmdW5jdGlvbgpAQCAtMjU3MCw3ICsyNTUzLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAg
ICAgICAgICAgLy8gUHV0IG9uIGEgZHVtbXkgbm9kZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAgICAg
ICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25b
MV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0y
NTc4LDM5ICsyNTYxLDM3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNjoKKyAgY2FzZSAxODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzoK
KyAgY2FzZSAxOToKIAogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtKS5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIsICIiKTsKKyAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAibWV0aG9kcyBhcmUgbm90
IHN1cHBvcnRlZCIsICIiKTsKICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAo
eXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDE4OgorICBjYXNlIDIwOgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE5OgorICBjYXNlIDIxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0p
LmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDIwOgorICBjYXNlIDIyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
KS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbik7CkBAIC0yNjE4
LDcgKzI1OTksNyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjE6
CisgIGNhc2UgMjM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsKQEAgLTI2MjYsNyArMjYwNyw3IEBA
IHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjoKKyAgY2FzZSAyNDoK
IAogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgMCwgbmV3IFRUeXBlKCh5eXZz
cFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpIH07CkBAIC0y
NjM2LDI0ICsyNjE3LDI0IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAyMzoKKyAgY2FzZSAyNToKIAogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsg
MCwgbmV3IFRUeXBlKCh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRUeXBlKCkpIH07CiAgICAgICAgICh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24t
PmFkZFBhcmFtZXRlcihwYXJhbSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0g
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbjsKLSAgICAgICAgKHl5dmFsLmludGVy
bSkuaW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZz
cFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0Fn
Z3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVybU5vZGUsICh5eXZzcFsoMykg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDoKKyAgY2FzZSAyNjoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVu
Y3Rpb24pOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNToKKyAgY2FzZSAyNzoKIAog
ICAgIHsKICAgICAgICAgLy8KQEAgLTI2NjcsMzkgKzI2NDgsMzkgQEAgeXlyZWR1Y2U6CiAgICAg
ICAgICAgICBjYXNlIEVidEZsb2F0OgogICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSkubWF0cml4KSB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCgo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2l6ZSkgewotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0TWF0MjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5zaXplKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3AgPSBFT3BDb25zdHJ1Y3RGbG9hdDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1
Y3RWZWMyOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RWZWMzOyAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RWZWM0OyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgMTogb3AgPSBFT3BDb25zdHJ1Y3RGbG9hdDsgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RWZWMyOyAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RWZWMzOyAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RWZWM0OyAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIEVidEludDoKICAgICAgICAgICAgICAgICBzd2l0Y2goKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVj
dEludDsgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJpdmVjMiIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3AgPSBF
T3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICBG
UkFHX1ZFUlRfT05MWSgiaXZlYzMiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGlu
ZSk7IG9wID0gRU9wQ29uc3RydWN0SVZlYzM7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
NDogICAgICAgRlJBR19WRVJUX09OTFkoIml2ZWM0IiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWM0OyBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0SW50OyAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdElWZWMzOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0SVZlYzQ7IGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKICAg
ICAgICAgICAgICAgICBzd2l0Y2goKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUp
IHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEJvb2w7ICBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMiIsICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSAzOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiYnZlYzMiLCAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7IGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWM0
IiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVj
dEJWZWM0OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0
Qm9vbDsgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RC
VmVjMjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdEJW
ZWMzOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0QlZl
YzQ7IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KG9wID09IEVPcE51bGwpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSwgImNhbm5vdCBjb25zdHJ1Y3QgdGhpcyB0eXBl
IiwgZ2V0QmFzaWNTdHJpbmcoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJjYW5u
b3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlKS50eXBlKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBlID0g
RWJ0RmxvYXQ7CiAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RGbG9hdDsKQEAgLTI3
MTIsMjEgKzI2OTMsMTAgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDI2OgotCi0gICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5n
KSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShF
YnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3
IFRGdW5jdGlvbigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZywgdHlwZSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0gICAgO30KLSAgICBicmVhazsK
LQotICBjYXNlIDI3OgorICBjYXNlIDI4OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+
cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgKih5eXZzcFso
MSkgLSAoMSldLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJy
b3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksICooeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmlu
ZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRUeXBlIHR5cGUo
RWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5l
dyBURnVuY3Rpb24oKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcsIHR5cGUpOwpAQCAtMjcz
NCw0NiArMjcwNCw0NiBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
Mjg6CisgIGNhc2UgMjk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyOToKKyAgY2FzZSAzMDoKIAogICAgIHsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5s
aW5lLCAiKysiLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMildKSwg
IisrIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFByZUluY3Jl
bWVudCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MSkgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5h
cnlNYXRoKEVPcFByZUluY3JlbWVudCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFsoMSkgLSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAg
ICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICIr
KyIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDEp
IC0gKDIpXSksICIrKyIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikg
LSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDMwOgorICBjYXNlIDMxOgogCiAgICAgewotICAgICAgICBpZiAoY29u
dGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIs
ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYg
KGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCAiLS0iLCAoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0u
bGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9w
UHJlRGVjcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIi0tIiwgKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwg
Ii0tIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMzE6CisgIGNhc2UgMzI6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0g
KDIpXS5pbnRlcm0pLm9wICE9IEVPcE51bGwpIHsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtKS5vcCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0pLm9wLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNw
WygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICBpZiAoKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBlcnJvck9wID0gIiI7CiAgICAgICAgICAgICAgICAgc3dpdGNoKCh5eXZzcFsoMSkg
LSAoMildLmludGVybSkub3ApIHsKQEAgLTI3ODEsNyArMjc1MSw3IEBAIHl5cmVkdWNlOgogICAg
ICAgICAgICAgICAgIGNhc2UgRU9wTG9naWNhbE5vdDogZXJyb3JPcCA9ICIhIjsgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0p
LmxpbmUsIGVycm9yT3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9w
RXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCBlcnJvck9wLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OwogICAgICAgICAgICAgfQpAQCAtMjc5MCwxODUgKzI3NjAsMTc4IEBAIHl5cmVkdWNlOgogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzMjoKLQotICAgIHsgKHl5dmFsLmludGVybSkubGlu
ZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BO
dWxsOyA7fQotICAgIGJyZWFrOwotCiAgIGNhc2UgMzM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0p
LmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0g
RU9wTmVnYXRpdmU7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE51bGw7IDt9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAzNDoKIAotICAgIHsgKHl5dmFsLmludGVybSkubGluZSA9ICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BMb2dpY2Fs
Tm90OyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BOZWdhdGl2ZTsgO30KICAgICBi
cmVhazsKIAogICBjYXNlIDM1OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7
ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTG9naWNhbE5vdDsgO30KICAgICBicmVhazsKIAogICBj
YXNlIDM2OgogCisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICBicmVhazsKKworICBj
YXNlIDM3OgorCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgiKiIsICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE11bCwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUp
OwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lLCAiKiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVy
cm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIioiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAg
ICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzc6CisgIGNhc2UgMzg6CiAKICAg
ICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIvIiwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRGl2LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BEaXYsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlm
ICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIvIiwgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5n
KCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygy
KSAtICgzKV0pLCAiLyIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzODoKKyAgY2FzZSAzOToKIAogICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzOToKKyAgY2FzZSA0MDoKIAogICAg
IHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wQWRkLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIrIiwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAt
ICgzKV0pLCAiKyIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA0MDoKKyAgY2FzZSA0MToKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJp
bmFyeU1hdGgoRU9wU3ViLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BTdWIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgz
KV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICItIiwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiLSIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA0MToKKyAgY2FzZSA0MjoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSA0MjoKKyAgY2FzZSA0MzoKIAogICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0MzoKKyAgY2FzZSA0NDoKIAogICAgIHsKLSAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBp
ZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiPCIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFso
MikgLSAoMyldKSwgIjwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25z
dGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsK
LSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KICAgICA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDQ6CisgIGNhc2UgNDU6CiAKICAgICB7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAg
aWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIj4iLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3Bb
KDIpIC0gKDMpXSksICI+IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7
Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDQ1OgorICBjYXNlIDQ2OgogCiAgICAgewotICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAg
ICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAi
PD0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigo
eXlsc3BbKDIpIC0gKDMpXSksICI8PSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0g
bmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3Qo
ZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAg
fQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0NjoKKyAgY2FzZSA0NzoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW5FcXVhbCwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSwgIj49IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiPj0iLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyld
KSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDc6CisgIGNhc2Ug
NDg6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
NDg6CisgIGNhc2UgNDk6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVxdWFsLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwg
Y29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BFcXVhbCwgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAo
MyldLmxleCkubGluZSwgIj09IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiPT0iLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25B
cnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIp
IC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAo
MyldKSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDk6CisgIGNh
c2UgNTA6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5vdEVxdWFsLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4
dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BOb3RFcXVhbCwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSwgIiE9IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyld
KSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNTA6Ci0KLSAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOyA7fQotICAgIGJyZWFrOwotCiAgIGNhc2UgNTE6CiAKICAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOyA7fQpAQCAtMjk4NiwxNDMgKzI5NDksMTQ4IEBAIHl5cmVkdWNl
OgogCiAgIGNhc2UgNTQ6CiAKKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIGJyZWFr
OworCisgIGNhc2UgNTU6CisKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxB
bmQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2lj
YWxBbmQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2
c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICImJiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiYmIiwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENv
bnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAg
ICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXls
c3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDU1OgorICBjYXNlIDU2OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KICAgICBicmVh
azsKIAotICBjYXNlIDU2OgorICBjYXNlIDU3OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0
aChFT3BMb2dpY2FsWG9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BMb2dpY2FsWG9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFso
MikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiXl4iLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSks
ICJeXiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25b
MV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSA1NzoKKyAgY2FzZSA1ODoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1ODoKKyAgY2FzZSA1OToKIAogICAgIHsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsT3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlm
ICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJ8fCIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFso
MikgLSAoMyldKSwgInx8IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7
Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDU5OgorICBjYXNlIDYwOgogCiAgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDYwOgorICBjYXNlIDYxOgogCiAg
ICAgewotICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUp
XS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkK
KyAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAo
eXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDEpIC0gKDUp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5eXZzcFso
MSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eWxzcFsoMikgLSAoNSldKSk7CiAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDUp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpICE9ICh5eXZzcFsoNSkgLSAoNSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpCiAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogCiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BF
cnJvcigoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICI6IiwgKHl5dnNwWygzKSAtICg1KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoNSkg
LSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICg1KV0pLCAiOiIs
ICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDUpIC0gKDUpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA2MToKKyAgY2FzZSA2MjoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA2MjoKKyAgY2FzZSA2MzoKIAogICAgIHsKLSAgICAgICAgaWYg
KGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtKS5saW5l
LCAiYXNzaWduIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQor
ICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDMpXSks
ICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRBc3NpZ24oKHl5dnNwWygy
KSAtICgzKV0uaW50ZXJtKS5vcCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDIpIC0gKDMpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWduKCh5eXZzcFsoMikgLSAo
MyldLmludGVybSkub3AsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAt
ICgzKV0pKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5hc3NpZ25FcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5p
bnRlcm0pLmxpbmUsICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4
dC0+YXNzaWduRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiYXNzaWduIiwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDYzOgot
Ci0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0p
LmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0g
RU9wQXNzaWduOyA7fQotICAgIGJyZWFrOwotCiAgIGNhc2UgNjQ6CiAKLSAgICB7IEZSQUdfVkVS
VF9PTkxZKCIqPSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50
ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5v
cCA9IEVPcE11bEFzc2lnbjsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQXNzaWdu
OyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjU6CiAKLSAgICB7IEZSQUdfVkVSVF9PTkxZKCIv
PSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50ZXJtKS5saW5l
ID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcERp
dkFzc2lnbjsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTXVsQXNzaWduOyA7fQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgNjY6CiAKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCku
bGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBZGRBc3NpZ247IDt9CisgICAgeyAoeXl2YWwu
aW50ZXJtKS5vcCA9IEVPcERpdkFzc2lnbjsgO30KICAgICBicmVhazsKIAogICBjYXNlIDY3Ogog
Ci0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0p
LmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0g
RU9wU3ViQXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBZGRBc3NpZ247
IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2ODoKIAotICAgIHsKKyAgICB7ICh5eXZhbC5pbnRl
cm0pLm9wID0gRU9wU3ViQXNzaWduOyA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNjk6CisKKyAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA2OToKKyAgY2FzZSA3MDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbW1hKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pKTsK
ICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSwgIiwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cigoeXlsc3BbKDIpIC0gKDMpXSksICIsIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAg
ICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDcwOgorICBjYXNlIDcxOgogCiAgICAg
ewogICAgICAgICBpZiAoY29udGV4dC0+Y29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKQEAgLTMxMzEsNyArMzA5OSw3IEBAIHl5cmVkdWNl
OgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3MToKKyAgY2FzZSA3MjoKIAogICAgIHsK
ICAgICAgICAgVEZ1bmN0aW9uICZmdW5jdGlvbiA9ICooKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
KS5mdW5jdGlvbik7CkBAIC0zMTQ1LDEzICszMTEzLDEzIEBAIHl5cmVkdWNlOgogICAgICAgICAg
ICAgY29uc3QgVFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJhbShpKTsKICAgICAg
ICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUocGFyYW0ubmFtZSwgKnBhcmFt
LnR5cGUpOworICAgICAgICAgICAgICAgIFRWYXJpYWJsZSB2YXJpYWJsZShwYXJhbS5uYW1lLCAq
cGFyYW0udHlwZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcHJvdG90eXBl
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2YXJpYWJs
ZS0+Z2V0TmFtZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0pLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAg
ICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3Rv
dHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS5nZXRVbmlxdWVJ
ZCgpLCB2YXJpYWJsZS5nZXROYW1lKCksIHZhcmlhYmxlLmdldFR5cGUoKSwgKHl5bHNwWygxKSAt
ICgyKV0pKSwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0pLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAg
ICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3Rv
dHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUs
ICh5eWxzcFsoMSkgLSAoMildKSksICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zMTYyLDcgKzMxMzAsNyBAQCB5eXJlZHVjZToKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzI6CisgIGNhc2UgNzM6CiAKICAgICB7CiAgICAg
ICAgIGlmICgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSkKQEAgLTMx
NzEsMjIgKzMxMzksMjIgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDczOgorICBjYXNlIDc0OgogCiAgICAgewogICAgICAgICBpZiAoKCh5eXZzcFsoMikgLSAoNCld
LmludGVybS5wcmVjaXNpb24pID09IEVicEhpZ2gpICYmIChjb250ZXh0LT5zaGFkZXJUeXBlID09
IFNIX0ZSQUdNRU5UX1NIQURFUikgJiYgIWNvbnRleHQtPmZyYWdtZW50UHJlY2lzaW9uSGlnaCkg
ewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICg0KV0ubGV4KS5saW5l
LCAicHJlY2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVyIiwgImhpZ2hw
Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDQpXSksICJwcmVj
aXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWNv
bnRleHQtPnN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oICh5eXZzcFsoMykgLSAoNCld
LmludGVybS50eXBlKSwgKHl5dnNwWygyKSAtICg0KV0uaW50ZXJtLnByZWNpc2lvbikgKSkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICg0KV0ubGV4KS5saW5lLCAi
aWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBn
ZXRCYXNpY1N0cmluZygoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0udHlwZSkudHlwZSkpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICg0KV0pLCAiaWxsZWdhbCB0eXBl
IGFyZ3VtZW50IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmlu
ZygoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0udHlwZSkudHlwZSkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3NDoKKyAgY2FzZSA3NToK
IAogICAgIHsKICAgICAgICAgLy8KQEAgLTMyMDAsMjQgKzMxNjgsNDEgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgIFRGdW5jdGlvbiogcHJldkRlYyA9IHN0YXRpY19jYXN0PFRGdW5jdGlvbio+KGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmZpbmQoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+
Z2V0TWFuZ2xlZE5hbWUoKSkpOwogICAgICAgICBpZiAocHJldkRlYykgewogICAgICAgICAgICAg
aWYgKHByZXZEZWMtPmdldFJldHVyblR5cGUoKSAhPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
ZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBt
dXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
ZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAib3ZlcmxvYWRlZCBmdW5j
dGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBlIiwgKHl5dnNwWygxKSAtICgyKV0u
aW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCkpOwogICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFyYW1Db3VudCgpOyArK2kp
IHsKICAgICAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVh
bGlmaWVyKCkgIT0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0o
aSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMg
bXVzdCBoYXZlIHRoZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5n
KCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIp
XSksICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1
YWxpZmllcnMiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRQYXJhbShp
KS50eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAogICAgICAgICAvLworICAgICAgICAvLyBDaGVjayBmb3IgcHJldmlvdXNseSBkZWNsYXJl
ZCB2YXJpYWJsZXMgdXNpbmcgdGhlIHNhbWUgbmFtZS4KKyAgICAgICAgLy8KKyAgICAgICAgVFN5
bWJvbCAqcHJldlN5bSA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmQoKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgaWYgKHByZXZTeW0pCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICghcHJldlN5bS0+aXNGdW5jdGlvbigpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMild
KSwgInJlZGVmaW5pdGlvbiIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbiktPmdl
dE5hbWUoKS5jX3N0cigpLCAiZnVuY3Rpb24iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHVubWFuZ2xlZCBuYW1lIHRvIGRldGVjdCBw
b3RlbnRpYWwgZnV0dXJlIHJlZGVmaW5pdGlvbiBhcyBhIHZhcmlhYmxlLgorICAgICAgICAgICAg
Y29udGV4dC0+c3ltYm9sVGFibGUuZ2V0T3V0ZXJMZXZlbCgpLT5pbnNlcnQoKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0TmFtZSgpLCAqKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLmZ1bmN0aW9uKSk7CisgICAgICAgIH0KKworICAgICAgICAvLwogICAgICAgICAvLyBJZiB0
aGlzIGlzIGEgcmVkZWNsYXJhdGlvbiwgaXQgY291bGQgYWxzbyBiZSBhIGRlZmluaXRpb24sCiAg
ICAgICAgIC8vIGluIHdoaWNoIGNhc2UsIHdlIHdhbnQgdG8gdXNlIHRoZSB2YXJpYWJsZSBuYW1l
cyBmcm9tIHRoaXMgb25lLCBhbmQgbm90IHRoZSBvbmUgdGhhdCdzCiAgICAgICAgIC8vIGJlaW5n
IHJlZGVjbGFyZWQuICBTbywgcGFzcyBiYWNrIHVwIHRoaXMgZGVjbGFyYXRpb24sIG5vdCB0aGUg
b25lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgIC8vCiAgICAgICAgICh5eXZhbC5pbnRl
cm0pLmZ1bmN0aW9uID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKIAog
ICAgICAgICAvLyBXZSdyZSBhdCB0aGUgaW5uZXIgc2NvcGUgbGV2ZWwgb2YgdGhlIGZ1bmN0aW9u
J3MgYXJndW1lbnRzIGFuZCBib2R5IHN0YXRlbWVudC4KICAgICAgICAgLy8gQWRkIHRoZSBmdW5j
dGlvbiBwcm90b3R5cGUgdG8gdGhlIHN1cnJvdW5kaW5nIHNjb3BlIGluc3RlYWQuCkBAIC0zMjI1
LDIxICszMjEwLDIxIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3
NToKKyAgY2FzZSA3NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA3NjoKKyAgY2FzZSA3NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5mdW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3NzoKKyAgY2FzZSA3ODoKIAogICAgIHsKICAgICAgICAg
Ly8gQWRkIHRoZSBwYXJhbWV0ZXIKQEAgLTMyNTEsNyArMzIzNiw3IEBAIHl5cmVkdWNlOgogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3ODoKKyAgY2FzZSA3OToKIAogICAgIHsKICAgICAg
ICAgLy8KQEAgLTMyNjIsNyArMzI0Nyw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgLy8KICAg
ICAgICAgICAgIC8vIFRoaXMgcGFyYW1ldGVyID4gZmlyc3QgaXMgdm9pZAogICAgICAgICAgICAg
Ly8KLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSciLCAidm9p
ZCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiY2Fu
bm90IGJlIGFuIGFyZ3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBkZWxldGUgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtKS5wYXJhbS50eXBlOwogICAgICAgICB9IGVsc2UgewpAQCAtMzI3
MywxNSArMzI1OCwxNSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
Nzk6CisgIGNhc2UgODA6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0udHlwZSkucXVhbGlmaWVyICE9IEV2cUdsb2JhbCAmJiAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0udHlwZSkucXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAibm8gcXVhbGlmaWVycyBh
bGxvd2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZvciBmdW5j
dGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LnR5cGUpLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICB9CiAgICAgICAgIC8vIG1ha2Ugc3VyZSBhIHNhbXBsZXIgaXMgbm90IGludm9sdmVkIGFz
IHdlbGwuLi4KLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlw
ZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXls
c3BbKDIpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBh
cyBhIHByb3RvdHlwZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCByZWN1cnNp
b24pCkBAIC0zMjk0LDExMiArMzI3OSwxMTAgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDgwOgorICBjYXNlIDgxOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAiaWxsZWdhbCB1c2Ug
b2YgdHlwZSAndm9pZCciLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJpbGxlZ2Fs
IHVzZSBvZiB0eXBlICd2b2lkJyIsICh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLT5jX3N0
cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAg
ICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCku
bGluZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7KHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIG5l
dyBUVHlwZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkpfTsKLSAgICAgICAgKHl5dmFs
LmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKICAgICAgICAgKHl5
dmFsLmludGVybSkucGFyYW0gPSBwYXJhbTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
ODE6CisgIGNhc2UgODI6CiAKICAgICB7CiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIG1h
a2UgYW4gYXJyYXkgb3V0IG9mIHRoaXMgdHlwZQotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlU
eXBlRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAo
NSldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNo
ZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+
cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSwgKih5eXZzcFso
MikgLSAoNSldLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJy
b3JDaGVjaygoeXlsc3BbKDIpIC0gKDUpXSksICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmlu
ZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgaW50IHNpemU7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAo
NSldLmxleCkubGluZSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IHNpemUpKQorICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3Bb
KDMpIC0gKDUpXSksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBz
aXplKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5dnNwWygx
KSAtICg1KV0uaW50ZXJtLnR5cGUpLnNldEFycmF5KHRydWUsIHNpemUpOwogCiAgICAgICAgIFRU
eXBlKiB0eXBlID0gbmV3IFRUeXBlKCh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSk7CiAg
ICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7ICh5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5n
LCB0eXBlIH07Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDUp
XS5sZXgpLmxpbmU7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnBhcmFtID0gcGFyYW07CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDgyOgorICBjYXNlIDgzOgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKS5saW5l
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0g
KDMpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCisgICAg
ICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5p
bnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDgzOgor
ICBjYXNlIDg0OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMikg
LSAoMildLmludGVybSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJy
b3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLmxpbmUsICh5eXZzcFsoMSkgLSAoMild
LmludGVybS5xdWFsaWZpZXIpLCAqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCh5eWxz
cFsoMikgLSAoMildKSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICooeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eXZzcFso
MikgLSAoMildLmludGVybSkubGluZSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCBFdnFUZW1wb3Jh
cnksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5w
YXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgODQ6CisgIGNhc2UgODU6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0pID0gKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pLmxpbmUsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFsoMikgLSAoMyldLmlu
dGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYg
KGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSksICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFsoMikgLSAoMyldLmludGVybS5x
dWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODU6CisgIGNhc2Ug
ODY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNr
KCh5eXZzcFsoMikgLSAoMildLmludGVybSkubGluZSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LnF1YWxpZmllciksICooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAg
ICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soKHl5bHNwWygyKSAt
ICgyKV0pLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikg
LSAoMildLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgy
KV0uaW50ZXJtKS5saW5lLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5x
dWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksIEV2cVRlbXBvcmFyeSwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5
cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA4NjoKKyAgY2FzZSA4NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5xdWFsaWZpZXIpID0gRXZxSW47CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDg3Ogor
ICBjYXNlIDg4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBF
dnFJbjsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODg6CisgIGNhc2UgODk6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cU91dDsKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgODk6CisgIGNhc2UgOTA6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUluT3V0OwogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA5MDoKKyAgY2FzZSA5MToKIAogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJh
bSA9IHsgMCwgbmV3IFRUeXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKSkgfTsKQEAg
LTM0MDcsMTA0ICszMzkwLDEwNCBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgOTE6CisgIGNhc2UgOTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
OTI6CisgIGNhc2UgOTM6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0pLnR5cGUudHlwZSA9PSBFYnRJbnZhcmlhbnQgJiYgISh5eXZzcFsoMykgLSAoMyldLmxl
eCkuc3ltYm9sKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDMpIC0gKDMpXS5sZXgpLmxpbmUsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMg
aW52YXJpYW50IiwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAidW5kZWNsYXJlZCBp
ZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICh5eXZzcFsoMykgLSAoMyldLmxleCku
c3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCBUVHlwZSgo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLnR5cGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxp
bmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVy
bU5vZGUsIHN5bWJvbCwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgVElu
dGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAq
KHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybSkudHlwZSksICh5eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0p
LmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5
eXZzcFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgc3ltYm9sLCAoeXlsc3BbKDMpIC0g
KDMpXSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVy
cm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAoeXl2YWwuaW50ZXJtKS50eXBl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNw
WygzKSAtICgzKV0pLCAoeXl2YWwuaW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVj
aygoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0
cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQorICAgICAgICBpZiAoY29udGV4dC0+
bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSksICooeXl2c3BbKDMpIC0g
KDMpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAw
OwotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgz
KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRl
cm0pLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNo
ZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAo
eXl2YWwuaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIGlmIChzeW1ib2wgJiYgdmFyaWFibGUpCiAgICAgICAgICAgICBzeW1i
b2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgOTM6CisgIGNhc2UgOTQ6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5
dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVj
dFF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUp
XS5pbnRlcm0pLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAg
ICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSld
LmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0g
KDUpXS5pbnRlcm0pLnR5cGUsIHRydWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENv
bnN0RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICooeXl2c3BbKDMpIC0gKDUpXS5sZXgp
LnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB0cnVlKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZz
cFsoMSkgLSAoNSldLmludGVybSk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVy
cm9yQ2hlY2soKHl5dnNwWyg0KSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0pLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3Bb
KDQpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNSld
KSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxp
ZmllckVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRl
cm0pLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZS5zZXRBcnJheSh0
cnVlKTsKICAgICAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGU7Ci0gICAgICAgICAgICBpZiAo
Y29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSwgKih5
eXZzcFsoMykgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5
cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2so
KHl5bHNwWyg0KSAtICg1KV0pLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA5NDoKKyAgY2FzZSA5NToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1
YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEp
IC0gKDYpXS5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlm
aWVyRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVy
bSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYg
KGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg2KV0ubGV4KS5s
aW5lLCAqKHl5dnNwWygzKSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmlu
dGVybSkudHlwZSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJv
ckNoZWNrKCh5eWxzcFsoMykgLSAoNildKSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5n
LCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAt
ICg2KV0uaW50ZXJtKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVj
aygoeXl2c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNildLmludGVybSku
dHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAo
NildLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAoeXl2
c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJy
b3JDaGVjaygoeXlsc3BbKDQpIC0gKDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlw
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJy
b3JDaGVjaygoeXl2c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoNSkgLSAoNildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKHl5dnNwWyg1KSAtICg2KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZS5z
ZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAw
OwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXl2c3BbKDQpIC0g
KDYpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgKHl5dnNwWygx
KSAtICg2KV0uaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKih5eXZzcFsoMykgLSAoNild
LmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0
eXBlID0gVFR5cGUoKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlKTsKICAgICAgICAgICAg
IHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNw
WygxKSAtICg2KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
U3ltYm9sKHZhcmlhYmxlID8gdmFyaWFibGUtPmdldFVuaXF1ZUlkKCkgOiAwLCAqKHl5dnNwWygz
KSAtICg2KV0ubGV4KS5zdHJpbmcsIHR5cGUsICh5eXZzcFsoMykgLSAoNildLmxleCkubGluZSks
ICh5eXZzcFsoMykgLSAoNildLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
KS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgo
eXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICooeXl2
c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5bHNwWygzKSAtICg2KV0pKSwgKHl5
bHNwWygzKSAtICg2KV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA5NToKKyAgY2FzZSA5NjoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1
YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEp
IC0gKDUpXS5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlm
aWVyRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVy
bSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5
dmFsLmludGVybSkgPSAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pOwogCiAgICAgICAgIFRJbnRl
cm1Ob2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFs
aXplcigoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDUpXS5sZXgp
LnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCAoeXl2c3BbKDUpIC0gKDUp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpIHsKKyAgICAgICAgaWYgKCFj
b250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWygzKSAtICg1KV0pLCAqKHl5dnNwWygz
KSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgKHl5
dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CiAg
ICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gYnVpbGQgdGhlIGludGVybWVkaWF0ZSByZXBy
ZXNlbnRhdGlvbgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIGlmIChpbnRlcm1Ob2RlKQot
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLmludGVybU5vZGUs
IGludGVybU5vZGUsICh5eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdn
cmVnYXRlKCh5eXZzcFsoMSkgLSAoNSldLmludGVybSkuaW50ZXJtTm9kZSwgaW50ZXJtTm9kZSwg
KHl5bHNwWyg0KSAtICg1KV0pKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0p
LmludGVybUFnZ3JlZ2F0ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTM1MTQsNzcgKzM0OTcsNzcg
QEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDk2OgorICBjYXNlIDk3
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkp
LCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSksICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlKS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5
cGUpKSwgKHl5bHNwWygxKSAtICgxKV0pKSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgOTc6CisgIGNhc2UgOTg6CiAKICAgICB7Ci0gICAgICAgIFRJ
bnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
Kih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0udHlwZSkpLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2
YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFn
Z3JlZ2F0ZShzeW1ib2wsICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7CisgICAgICAgIFRJ
bnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
Kih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0udHlwZSkpLCAoeXlsc3BbKDIpIC0gKDIpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJt
KS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShz
eW1ib2wsICh5eWxzcFsoMikgLSAoMildKSk7CiAgICAgICAgIAotICAgICAgICBpZiAoY29udGV4
dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUs
ICh5eXZhbC5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlm
aWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICh5eXZhbC5pbnRlcm0pLnR5cGUpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5u
b25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgKih5eXZz
cFsoMikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCBmYWxzZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAo
MildKSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBl
LCBmYWxzZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0udHlwZSk7CiAKICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUs
ICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgdmFy
aWFibGUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soKHl5bHNwWygy
KSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0p
LnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFy
aWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5ODoK
KyAgY2FzZSA5OToKIAogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAt
ICg0KV0ubGV4KS5saW5lLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRl
ZCIsICh5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0KV0pLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlv
bnMgbm90IHN1cHBvcnRlZCIsICh5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLT5jX3N0cigp
KTsKICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wq
IHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikg
LSAoNCldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkp
LCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1i
b2wsICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wq
IHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikg
LSAoNCldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkp
LCAoeXlsc3BbKDIpIC0gKDQpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dy
ZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eWxz
cFsoMikgLSAoNCldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0udHlwZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDk5Ogor
ICBjYXNlIDEwMDoKIAogICAgIHsKICAgICAgICAgVFR5cGUgdHlwZSA9IFRUeXBlKCh5eXZzcFso
MSkgLSAoNSldLmludGVybS50eXBlKSk7CiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAo
Y29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUs
ICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAo
eXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUp
OwotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5dnNw
WygyKSAtICg1KV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdn
cmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXl2
c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDUpXS5s
ZXgpLnN0cmluZywgdHlwZSwgKHl5bHNwWygyKSAtICg1KV0pKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdh
dGUoc3ltYm9sLCAoeXlsc3BbKDIpIC0gKDUpXSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNv
bnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5s
aW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4
dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUpXSksICh5eXZzcFso
MSkgLSAoNSldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygy
KSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoMSkgLSAoNSldLmludGVybS50eXBlKSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5u
b25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKih5eXZzcFsoMikgLSAo
NSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSksIHRydWUpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0p
LnR5cGUgPSAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSk7CiAKLSAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAo
eXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVy
RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSld
LmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNr
KCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSB8fCBj
b250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2
c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5s
aW5lLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCisg
ICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0g
KDUpXSksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgICAgICh5eXZz
cFsoMSkgLSAoNSldLmludGVybS50eXBlKS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAg
ICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFy
cmF5RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0g
KDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLCB2YXJpYWJs
ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eWxzcFsoMykg
LSAoNSldKSwgKih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUp
XS5pbnRlcm0udHlwZSksIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAg
ICAgIHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwpAQCAtMzU5MiwyMSAr
MzU3NSwyMSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAwOgor
ICBjYXNlIDEwMToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmll
ckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJy
b3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBl
KSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmlu
dGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKTsKIAogICAgICAgICBU
SW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5p
dGlhbGl6ZXIoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg0KV0u
bGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CisgICAgICAgIGlm
ICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eWxzcFsoMikgLSAoNCldKSwgKih5eXZz
cFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSks
ICh5eXZzcFsoNCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkg
ewogICAgICAgICAvLwogICAgICAgICAvLyBCdWlsZCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRp
b24KICAgICAgICAgLy8KICAgICAgICAgICAgIGlmKGludGVybU5vZGUpCi0gICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgKHl5dnNwWygzKSAtICg0KV0ubGV4KS5saW5lKTsK
KyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCAoeXlsc3BbKDMpIC0gKDQp
XSkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmlu
dGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNjE2LDU4ICszNTk5LDU4
IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDE6CisgIGNhc2Ug
MTAyOgogCiAgICAgewotICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9u
IiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmds
b2JhbEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQorICAgICAgICBW
RVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgKHl5bHNwWygxKSAtICgyKV0pKTsK
KyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0p
LCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWlu
ZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50
ZXJtKS50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwg
KHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkudHlw
ZS5zZXRCYXNpYyhFYnRJbnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICh5eWxzcFso
MikgLSAoMildKSk7CiAgICAgICAgIGlmICghKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zeW1ib2wp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMild
LmxleCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQi
LCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIg
ZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmctPmNf
c3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAwOwogICAgICAgICB9
CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3lt
Ym9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICgy
KV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXl2c3Bb
KDIpIC0gKDIpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9s
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXlsc3BbKDIpIC0gKDIp
XSkpOworICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3BbKDIpIC0gKDIpXSkp
OwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwMjoKKyAgY2FzZSAx
MDM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSk7CiAKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS50eXBlKS5hcnJheSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFy
cmF5Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJu
b3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSku
c2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDEwMzoKKyAgY2FzZSAxMDQ6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0udHlwZSkuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMikgLSAoMildLmludGVybS50eXBlKS5saW5lLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1j
bGFzcyBhcnJheSIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgy
KV0pLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJt
LnR5cGUpLnNldEFycmF5KGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyID09IEV2cUF0dHJpYnV0ZSAmJgogICAg
ICAgICAgICAgKCh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS50eXBlID09IEVidEJvb2wg
fHwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0SW50KSkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLmxp
bmUsICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygx
KSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVh
bGlmaWVyU3RyaW5nKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIpKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
KCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ0lu
IHx8ICh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIgPT0gRXZxVmFyeWlu
Z091dCkgJiYKICAgICAgICAgICAgICgoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlw
ZSA9PSBFYnRCb29sIHx8ICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS50eXBlID09IEVi
dEludCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMildLmlu
dGVybS50eXBlKS5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3Ry
aW5nKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgImNhbm5vdCBiZSBib29sIG9y
IGludCIsIGdldFF1YWxpZmllclN0cmluZygoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSku
cXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0K
ICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS50
eXBlKTsKQEAgLTM2NzUsNzEgKzM2NTgsNzEgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDEwNDoKKyAgY2FzZSAxMDU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQ29uc3QsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9p
ZCwgRXZxQ29uc3QsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDEwNToKKyAgY2FzZSAxMDY6CiAKICAgICB7Ci0gICAgICAgIFZFUlRFWF9PTkxZKCJh
dHRyaWJ1dGUiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICBpZiAoY29u
dGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQorICAgICAgICBW
RVJURVhfT05MWSgiYXR0cmlidXRlIiwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgaWYg
KGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJhdHRyaWJ1dGUiKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRWb2lkLCBFdnFBdHRyaWJ1dGUsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQXR0cmlidXRlLCAo
eXlsc3BbKDEpIC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDY6Cisg
IGNhc2UgMTA3OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVj
aygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSwgInZhcnlpbmciKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9y
Q2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCksICJ2YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQs
ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsICh5eWxzcFsoMSkgLSAoMSld
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFz
aWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwor
ICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5
aW5nSW4sICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDEwNzoKKyAgY2FzZSAxMDg6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxF
cnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9
PSBTSF9WRVJURVhfU0hBREVSKQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXl2c3BbKDEpIC0gKDIpXS5s
ZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRW
b2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQs
IEV2cUludmFyaWFudFZhcnlpbmdJbiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJp
YW50VmFyeWluZ0luLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxMDg6CisgIGNhc2UgMTA5OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+
Z2xvYmFsRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgInVuaWZvcm0iKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCksICJ1bmlmb3JtIikpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwg
RXZxVW5pZm9ybSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlmb3JtLCAoeXlsc3BbKDEpIC0g
KDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDk6CisgIGNhc2UgMTEwOgog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLnR5cGUpOwogCiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lv
biA9PSBFYnBVbmRlZmluZWQpIHsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucHJl
Y2lzaW9uID0gY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+
cHJlY2lzaW9uRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSwg
KHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24sICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKS50eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPnByZWNpc2lvbkVycm9yQ2hl
Y2soKHl5bHNwWygxKSAtICgxKV0pLCAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiwgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDExMDoKKyAgY2FzZSAxMTE6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSk7CkBAIC0zNzQ3
LDYzICszNzMwLDU1IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
MTE6CisgIGNhc2UgMTEyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lv
bikgPSBFYnBIaWdoOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTI6CisgIGNhc2Ug
MTEzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBNZWRp
dW07CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDExMzoKKyAgY2FzZSAxMTQ6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVicExvdzsKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTE0OgorICBjYXNlIDExNToKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTE1OgorICBjYXNlIDExNjoKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBl
KTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDIp
IC0gKDQpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCisgICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNCldKSwg
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxl
eCkubGluZSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUp
KQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygy
KSAtICg0KV0pLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6
ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgfQogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTY6Ci0KLSAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRW
b2lkLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9Ci0gICAgYnJl
YWs7Ci0KICAgY2FzZSAxMTc6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVh
bCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKQEAgLTM4MTEsNyArMzc4Niw3IEBAIHl5cmVkdWNlOgogCiAgICAgewog
ICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAo
eXlsc3BbKDEpIC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4MTksNyArMzc5
NCw3IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAg
ICBicmVhazsKIApAQCAtMzgyNyw4ICszODAyLDcgQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgx
KV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0zODM2LDggKzM4MTAsOCBAQCB5eXJlZHVj
ZToKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0g
KDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0
ZSgzKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVh
bCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRB
Z2dyZWdhdGUoMik7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzg0NSw4ICszODE5LDggQEAg
eXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRB
Z2dyZWdhdGUoNCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Rmxv
YXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QWdncmVnYXRlKDMpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4NTQsOCArMzgy
OCw4IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRBZ2dyZWdhdGUoMik7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4NjMs
OCArMzgzNyw4IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwg
cXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CiAgICAgO30KICAgICBicmVhazsKIApAQCAt
Mzg3Miw4ICszODQ2LDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRC
b29sLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICA7fQogICAgIGJyZWFrOwog
CkBAIC0zODgxLDggKzM4NTUsOCBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidEludCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgO30KICAgICBicmVh
azsKIApAQCAtMzg5MCw4ICszODY0LDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRR
dWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2
cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRJbnQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CiAgICAgO30KICAgICBi
cmVhazsKIApAQCAtMzg5OSw5NSArMzg3Myw5NiBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAg
ICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
ID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTI5OgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05M
WSgibWF0MiIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMiwgdHJ1ZSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICA7fQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTMwOgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgi
bWF0MyIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRG
bG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIsIHRydWUpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzE6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJtYXQ0IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0LCB0cnVlKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7CiAg
ICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDEzMjoKIAogICAgIHsKLSAgICAgICAgRlJBR19W
RVJUX09OTFkoInNhbXBsZXIyRCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRTYW1wbGVyMkQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGlu
ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWws
ICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdn
cmVnYXRlKDQsIHRydWUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzM6CiAKICAg
ICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyQ3ViZSIsICh5eXZzcFsoMSkgLSAo
MSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRTYW1wbGVyMkQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30K
ICAgICBicmVhazsKIAogICBjYXNlIDEzNDoKIAogICAgIHsKKyAgICAgICAgVFF1YWxpZmllciBx
dWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDog
RXZxVGVtcG9yYXJ5OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNh
bXBsZXJDdWJlLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIDt9CisgICAgYnJlYWs7
CisKKyAgY2FzZSAxMzU6CisKKyAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNF
eHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAidW5zdXBwb3J0ZWQgdHlw
ZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMSkgLSAoMSldKSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlckV4dGVybmFsT0VT
Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAg
RlJBR19WRVJUX09OTFkoInNhbXBsZXJFeHRlcm5hbE9FUyIsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QmFzaWMoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzU6CisgIGNhc2UgMTM2OgogCiAgICAg
ewogICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfdGV4dHVy
ZV9yZWN0YW5nbGUiKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7Cisg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ1bnN1cHBvcnRl
ZCB0eXBlIiwgInNhbXBsZXIyRFJlY3QiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgfQotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEUmVjdCIsICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyMkRS
ZWN0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzNjoKKyAgY2FzZSAxMzc6
CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzdHJ1Y3QiLCAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSkubGluZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkucXVhbGlmaWVyID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzc6
CisgIGNhc2UgMTM4OgogCiAgICAgewogICAgICAgICAvLwpAQCAtMzk5Niw4NSArMzk3MSw4NiBA
QCB5eXJlZHVjZToKICAgICAgICAgLy8KICAgICAgICAgVFR5cGUmIHN0cnVjdHVyZSA9IHN0YXRp
Y19jYXN0PFRWYXJpYWJsZSo+KCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3ltYm9sKS0+Z2V0VHlw
ZSgpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5s
ZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVj
dCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS51c2VyRGVmID0gJnN0cnVjdHVyZTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM4
OgorICBjYXNlIDEzOToKIAotICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRp
b24oKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgzKV0ubGV4KS5z
dHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IDt9CisgICAgeyBpZiAoY29udGV4dC0+ZW50ZXJT
dHJ1Y3REZWNsYXJhdGlvbigoeXlsc3BbKDIpIC0gKDMpXSksICooeXl2c3BbKDIpIC0gKDMpXS5s
ZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KICAgICBicmVhazsKIAotICBjYXNl
IDEzOToKKyAgY2FzZSAxNDA6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZl
ZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg2KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg2
KV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNr
KCh5eWxzcFsoMikgLSAoNildKSwgKih5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUVHlwZSogc3RydWN0dXJl
ID0gbmV3IFRUeXBlKCh5eXZzcFsoNSkgLSAoNildLmludGVybS50eXBlTGlzdCksICooeXl2c3Bb
KDIpIC0gKDYpXS5sZXgpLnN0cmluZyk7CisgICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcg
VFR5cGUobmV3IFRTdHJ1Y3R1cmUoKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoNSkgLSAoNildLmludGVybS5maWVsZExpc3QpKSk7CiAgICAgICAgIFRWYXJpYWJsZSogdXNl
clR5cGVEZWYgPSBuZXcgVFZhcmlhYmxlKCh5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nLCAq
c3RydWN0dXJlLCB0cnVlKTsKICAgICAgICAgaWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5z
ZXJ0KCp1c2VyVHlwZURlZikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MikgLSAoNildLmxleCkubGluZSwgInJlZGVmaW5pdGlvbiIsICh5eXZzcFsoMikgLSAoNildLmxl
eCkuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXlsc3BbKDIpIC0gKDYpXSksICJyZWRlZmluaXRpb24iLCAoeXl2c3BbKDIpIC0gKDYpXS5s
ZXgpLnN0cmluZy0+Y19zdHIoKSwgInN0cnVjdCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoNildLmxleCkubGluZSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3Jh
cnksICh5eWxzcFsoMSkgLSAoNildKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkudXNl
ckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9u
KCk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0MDoKKyAgY2FzZSAxNDE6CiAKLSAg
ICB7IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eXZzcFsoMikgLSAoMild
LmxleCkubGluZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVj
b3ZlcigpOyA7fQorICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5
bHNwWygyKSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0
LT5yZWNvdmVyKCk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDE6CisgIGNhc2UgMTQyOgog
CiAgICAgewotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCh5eXZzcFsoNCkg
LSAoNSldLmludGVybS50eXBlTGlzdCksIFRTdHJpbmcoIiIpKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAt
ICg1KV0ubGV4KS5saW5lKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShu
ZXcgVFN0cnVjdHVyZShOZXdQb29sVFN0cmluZygiIiksICh5eXZzcFsoNCkgLSAoNSldLmludGVy
bS5maWVsZExpc3QpKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eWxzcFsoMSkgLSAoNSldKSk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkudXNlckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhp
dFN0cnVjdERlY2xhcmF0aW9uKCk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0MjoK
KyAgY2FzZSAxNDM6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGVMaXN0KTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5maWVsZExpc3QpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZpZWxkTGlzdCk7CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDE0MzoKKyAgY2FzZSAxNDQ6CiAKICAgICB7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5
cGVMaXN0KTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoeXl2c3BbKDIp
IC0gKDIpXS5pbnRlcm0udHlwZUxpc3QpLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+c2l6ZSgp
OyArK2opIHsKLSAgICAgICAgICAgICAgICBpZiAoKCooeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSlb
al0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlw
ZUxpc3QpKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSkgewotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigoKih5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCkpW2ldLmxp
bmUsICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsICgqKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlbaV0udHlwZS0+Z2V0RmllbGROYW1lKCku
Y19zdHIoKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSA9ICh5eXZzcFsoMSkg
LSAoMildLmludGVybS5maWVsZExpc3QpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
ICh5eXZzcFsoMikgLSAoMildLmludGVybS5maWVsZExpc3QpLT5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgVEZpZWxkKiBmaWVsZCA9ICgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmZpZWxk
TGlzdCkpW2ldOworICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCAoeXl2YWwuaW50
ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgaWYgKCgqKHl5
dmFsLmludGVybS5maWVsZExpc3QpKVtqXS0+bmFtZSgpID09IGZpZWxkLT5uYW1lKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiZHVw
bGljYXRlIGZpZWxkIG5hbWUgaW4gc3RydWN0dXJlOiIsICJzdHJ1Y3QiLCBmaWVsZC0+bmFtZSgp
LmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlTGlzdCktPnB1c2hfYmFjaygoKih5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCkp
W2ldKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+cHVzaF9iYWNrKGZp
ZWxkKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDQ6CisgIGNh
c2UgMTQ1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9ICh5eXZz
cFsoMikgLSAoMyldLmludGVybS50eXBlTGlzdCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmll
bGRMaXN0KSA9ICh5eXZzcFsoMikgLSAoMyldLmludGVybS5maWVsZExpc3QpOwogCi0gICAgICAg
IGlmIChjb250ZXh0LT52b2lkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlw
ZSkubGluZSwgKCooeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0udHlwZUxpc3QpKVswXS50eXBlLT5n
ZXRGaWVsZE5hbWUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkgeworICAgICAg
ICBpZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgzKV0pLCAoKih5eXZz
cFsoMikgLSAoMyldLmludGVybS5maWVsZExpc3QpKVswXS0+bmFtZSgpLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkpKSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoeXl2YWwuaW50
ZXJtLnR5cGVMaXN0KS0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytpKSB7CiAgICAg
ICAgICAgICAvLwogICAgICAgICAgICAgLy8gQ2FyZWZ1bCBub3QgdG8gcmVwbGFjZSBhbHJlYWR5
IGtub3duIGFzcGVjdHMgb2YgdHlwZSwgbGlrZSBhcnJheS1uZXNzCiAgICAgICAgICAgICAvLwot
ICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0udHlwZUxpc3QpKVtpXS50
eXBlOworICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0uZmllbGRMaXN0
KSlbaV0tPnR5cGUoKTsKICAgICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlwZSgoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0udHlwZSkudHlwZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXROb21pbmFs
U2l6ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuc2l6ZSk7CiAgICAgICAgICAgICB0
eXBlLT5zZXRNYXRyaXgoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLm1hdHJpeCk7CkBA
IC00MDgyLDg1ICs0MDU4LDc1IEBAIHl5cmVkdWNlOgogCiAgICAgICAgICAgICAvLyBkb24ndCBh
bGxvdyBhcnJheXMgb2YgYXJyYXlzCiAgICAgICAgICAgICBpZiAodHlwZS0+aXNBcnJheSgpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLmxpbmUsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50
eXBlKSkpCisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2so
KHl5bHNwWygxKSAtICgzKV0pLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkpKQogICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLmFycmF5KQogICAgICAg
ICAgICAgICAgIHR5cGUtPnNldEFycmF5U2l6ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlw
ZSkuYXJyYXlTaXplKTsKLSAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
dHlwZSkudXNlckRlZikgeworICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKS51c2VyRGVmKQogICAgICAgICAgICAgICAgIHR5cGUtPnNldFN0cnVjdCgoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0udHlwZSkudXNlckRlZi0+Z2V0U3RydWN0KCkpOwotICAgICAgICAg
ICAgICAgIHR5cGUtPnNldFR5cGVOYW1lKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS51
c2VyRGVmLT5nZXRUeXBlTmFtZSgpKTsKLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYg
KGNvbnRleHQtPnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKS5saW5lLCAqdHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RO
ZXN0aW5nRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDMpXSksICooKih5eXZhbC5pbnRlcm0uZmll
bGRMaXN0KSlbaV0pKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDU6Cisg
IGNhc2UgMTQ2OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9IE5l
d1Bvb2xUVHlwZUxpc3QoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCktPnB1c2hf
YmFjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZUxpbmUpKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS5maWVsZExpc3QpID0gTmV3UG9vbFRGaWVsZExpc3QoKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS5maWVsZExpc3QpLT5wdXNoX2JhY2soKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZp
ZWxkKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0NjoKKyAgY2FzZSAxNDc6CiAK
ICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5wdXNoX2JhY2soKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLnR5cGVMaW5lKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmll
bGRMaXN0KS0+cHVzaF9iYWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybS5maWVsZCkpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDc6CisgIGNhc2UgMTQ4OgogCiAgICAgewotICAg
ICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksICooeXl2c3BbKDEp
IC0gKDEpXS5sZXgpLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSkudHlwZSA9IG5ldyBUVHlwZShFYnRWb2lk
LCBFYnBVbmRlZmluZWQpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS5saW5lID0g
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVM
aW5lKS50eXBlLT5zZXRGaWVsZE5hbWUoKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKTsK
KyAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5eXZzcFso
MSkgLSAoMSldLmxleCkuc3RyaW5nKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ4
OgorICBjYXNlIDE0OToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJy
b3JDaGVjaygoeXl2c3BbKDEpIC0gKDQpXS5sZXgpLmxpbmUsICooeXl2c3BbKDEpIC0gKDQpXS5s
ZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5
bHNwWygxKSAtICg0KV0pLCAqKHl5dnNwWygxKSAtICg0KV0ubGV4KS5zdHJpbmcpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxp
bmUpLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlTGluZSkubGluZSA9ICh5eXZzcFsoMSkgLSAoNCldLmxleCkubGluZTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSkudHlwZS0+c2V0RmllbGROYW1lKCooeXl2
c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZyk7Ci0KLSAgICAgICAgaW50IHNpemU7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCku
bGluZSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQor
ICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwor
ICAgICAgICBpbnQgc2l6ZSA9IDA7CisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJv
ckNoZWNrKCh5eWxzcFsoMykgLSAoNCldKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7Ci0g
ICAgO30KLSAgICBicmVhazsKKyAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKHNpemUpOwogCi0g
IGNhc2UgMTQ5OgotCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICAgICAgKHl5dmFs
LmludGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5eXZzcFsoMSkgLSAoNCldLmxleCku
c3RyaW5nKTsKKyAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTUwOgogCi0gICAgeyAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5v
ZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxNTE6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxNTI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybUFnZ3Jl
Z2F0ZSk7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTM6CkBAIC00MTkwLDExMiArNDE1Niwx
MTcgQEAgeXlyZWR1Y2U6CiAKICAgY2FzZSAxNTg6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtQWdncmVnYXRlKSA9IDA7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTU5OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IDt9CisgICAg
eyAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAwOyA7fQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTYwOgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgO30KKyAgICB7
IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgO30KICAgICBicmVhazsKIAogICBjYXNlIDE2
MToKIAorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7IDt9CisgICAgYnJlYWs7CisK
KyAgY2FzZSAxNjI6CisKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDUpXS5pbnRl
cm0uaW50ZXJtQWdncmVnYXRlKSAhPSAwKSB7CiAgICAgICAgICAgICAoeXl2c3BbKDMpIC0gKDUp
XS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAg
ICAgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldEVuZExpbmUo
KHl5dnNwWyg1KSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZzcFsoMykgLSAo
NSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykpOwogICAgICAgICB9
CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9ICh5eXZzcFsoMykgLSAo
NSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNjI6CisgIGNhc2UgMTYzOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTYzOgorICBjYXNlIDE2NDoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KICAgICBicmVhazsK
IAotICBjYXNlIDE2NDoKKyAgY2FzZSAxNjU6CiAKICAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxl
LnB1c2goKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE2NToKKyAgY2FzZSAxNjY6CiAKICAg
ICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTY2OgorICBjYXNlIDE2NzoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUu
cHVzaCgpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY3OgorICBjYXNlIDE2ODoKIAogICAg
IHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxNjg6CisgIGNhc2UgMTY5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gMDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY5OgorICBj
YXNlIDE3MDoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMikgLSAoMyldLmludGVybS5p
bnRlcm1BZ2dyZWdhdGUpKSB7CiAgICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAgICAgKHl5dnNw
WygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldEVuZExpbmUoKHl5dnNwWygz
KSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMyldLmludGVy
bS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykpOwogICAgICAgICB9CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtQWdncmVnYXRlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTcwOgorICBjYXNl
IDE3MToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybU5vZGUpLCAwKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdh
dGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsb2MpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTcxOgorICBjYXNlIDE3MjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1BZ2dyZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSksICh5eXZzcFsoMikgLSAoMild
LmludGVybS5pbnRlcm1Ob2RlKSwgMCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdn
cmVnYXRlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkg
LSAoMildLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtTm9kZSksICh5eWxvYykpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzI6
CisgIGNhc2UgMTczOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDE3MzoKKyAgY2FzZSAxNzQ6CiAKICAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSBzdGF0aWNfY2FzdDxUSW50ZXJtTm9kZSo+KCh5eXZzcFsoMSkg
LSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsgO30KICAgICBicmVhazsKIAotICBjYXNl
IDE3NDoKKyAgY2FzZSAxNzU6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJy
b3JDaGVjaygoeXl2c3BbKDEpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMykgLSAoNSldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNo
ZWNrKCh5eWxzcFsoMSkgLSAoNSldKSwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlv
bigoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAt
ICg1KV0uaW50ZXJtLm5vZGVQYWlyKSwgKHl5dnNwWygxKSAtICg1KV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRTZWxlY3Rpb24oKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eXZzcFsoNSkgLSAoNSldLmludGVybS5ub2RlUGFpciksICh5eWxzcFsoMSkgLSAoNSldKSk7CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE3NToKKyAgY2FzZSAxNzY6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybU5vZGUpOwpAQCAtNDMwMyw3ICs0Mjc0LDcgQEAgeXlyZWR1Y2U6CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDE3NjoKKyAgY2FzZSAxNzc6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybU5vZGUpOwpAQCAtNDMxMSw3ICs0MjgyLDcgQEAgeXlyZWR1Y2U6CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDE3NzoKKyAgY2FzZSAxNzg6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtNDMyMCwxNiArNDI5MSwxNiBAQCB5eXJlZHVjZToKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc4OgorICBjYXNlIDE3OToKIAogICAgIHsKICAg
ICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1
YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg0KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBp
ZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+Ym9v
bEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg0KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
dHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmICgh
Y29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwg
Kih5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
dHlwZSksICh5eXZzcFsoNCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1O
b2RlKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWygy
KSAtICg0KV0pLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksIGludGVybU5vZGUpKQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwpAQCAtNDMzOCw3OSArNDMw
OSw3OSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc5OgorICBj
YXNlIDE4MDoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQt
Pmxvb3BOZXN0aW5nTGV2ZWw7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODA6CisgIGNhc2Ug
MTgxOgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRM
b29wKEVMb29wV2hpbGUsIDAsICh5eXZzcFsoNCkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAwLCAoeXl2c3BbKDYpIC0gKDYpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMSkg
LSAoNildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAoeXl2c3BbKDQpIC0g
KDYpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgMCwgKHl5dnNwWyg2KSAtICg2KV0uaW50ZXJt
LmludGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDYpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxv
b3BOZXN0aW5nTGV2ZWw7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4MToKKyAgY2Fz
ZSAxODI6CiAKICAgICB7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE4MjoKKyAgY2FzZSAxODM6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDgpIC0gKDgpXS5sZXgpLmxpbmUsICh5eXZzcFso
NikgLSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PmJvb2xFcnJvckNoZWNrKCh5eWxzcFsoOCkgLSAoOCldKSwgKHl5dnNwWyg2KSAtICg4KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5
eXZzcFsoNCkgLSAoOCldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICh5
eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDMpIC0g
KDgpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoNCkgLSAoOCldKSk7CiAgICAgICAgIC0t
Y29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTgzOgorICBjYXNlIDE4NDoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyAr
K2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODQ6
CisgIGNhc2UgMTg1OgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3Ao
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRMb29wKEVMb29wRm9yLCAoeXl2c3BbKDQpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9k
ZSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAtICg3KV0uaW50
ZXJtLm5vZGVQYWlyKS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5
dnNwWyg1KSAtICg3KV0uaW50ZXJtLm5vZGVQYWlyKS5ub2RlMiksICh5eXZzcFsoNykgLSAoNyld
LmludGVybS5pbnRlcm1Ob2RlKSwgKHl5dnNwWygxKSAtICg3KV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRM
b29wKEVMb29wRm9yLCAoeXl2c3BbKDQpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9kZSksIHJlaW50
ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAtICg3KV0uaW50ZXJtLm5vZGVQ
YWlyKS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAt
ICg3KV0uaW50ZXJtLm5vZGVQYWlyKS5ub2RlMiksICh5eXZzcFsoNykgLSAoNyldLmludGVybS5p
bnRlcm1Ob2RlKSwgKHl5bHNwWygxKSAtICg3KV0pKTsKICAgICAgICAgLS1jb250ZXh0LT5sb29w
TmVzdGluZ0xldmVsOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODU6CisgIGNhc2Ug
MTg2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxODY6CisgIGNhc2UgMTg3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODc6CisgIGNhc2UgMTg4OgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg4Ogor
ICBjYXNlIDE4OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gMDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg5OgorICBjYXNlIDE5MDoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTQ0MTgsNyArNDM4OSw3IEBA
IHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTA6CisgIGNhc2UgMTkx
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtNDQyNiw2MyArNDM5Nyw2
MyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkxOgorICBjYXNl
IDE5MjoKIAogICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWwgPD0g
MCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5s
aW5lLCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgImNvbnRpbnVlIHN0
YXRlbWVudCBvbmx5IGFsbG93ZWQgaW4gbG9vcHMiLCAiIik7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsICh5eXZzcFso
MSkgLSAoMildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcENvbnRpbnVlLCAoeXlsc3BbKDEp
IC0gKDIpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTI6CisgIGNhc2UgMTkz
OgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUs
ICJicmVhayBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiYnJlYWsgc3RhdGVtZW50IG9u
bHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgKHl5dnNwWygxKSAtICgyKV0ubGV4
KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQnJlYWssICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDE5MzoKKyAgY2FzZSAxOTQ6CiAKICAgICB7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QnJhbmNoKEVPcFJldHVybiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFu
Y2goRU9wUmV0dXJuLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgICAgICBpZiAoY29udGV4dC0+
Y3VycmVudEZ1bmN0aW9uVHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCkgewotICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAibm9uLXZv
aWQgZnVuY3Rpb24gbXVzdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11
c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk0OgorICBj
YXNlIDE5NToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAoeXl2c3BbKDIpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgzKV0ubGV4KS5saW5lKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5bHNwWygxKSAtICgzKV0pKTsKICAgICAgICAgY29udGV4dC0+ZnVuY3Rpb25S
ZXR1cm5zVmFsdWUgPSB0cnVlOwogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0aW9u
VHlwZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0ubGV4KS5saW5lLCAidm9pZCBmdW5jdGlvbiBjYW5ub3Qg
cmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXlsc3BbKDEpIC0gKDMpXSksICJ2b2lkIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIs
ICJyZXR1cm4iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfSBl
bHNlIGlmICgqKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUpICE9ICh5eXZzcFsoMikgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMyldLmxleCkubGluZSwgImZ1bmN0aW9uIHJldHVy
biBpcyBub3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXlsc3BbKDEpIC0gKDMpXSksICJmdW5jdGlvbiByZXR1cm4gaXMgbm90IG1hdGNo
aW5nIHR5cGU6IiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5NToKKyAgY2FzZSAxOTY6
CiAKICAgICB7Ci0gICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICh5eXZzcFsoMSkgLSAoMild
LmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcEtpbGwsICh5eXZzcFsoMSkgLSAoMildLmxleCku
bGluZSk7CisgICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICh5eWxzcFsoMSkgLSAoMildKSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQnJhbmNoKEVPcEtpbGwsICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDE5NjoKKyAgY2FzZSAxOTc6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9k
ZSk7CkBAIC00NDkwLDI5ICs0NDYxLDI5IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxOTc6CisgIGNhc2UgMTk4OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtTm9kZSksIDApOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5
eWxvYykpOwogICAgICAgICBjb250ZXh0LT50cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5ODoKKyAgY2FzZSAxOTk6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5
OToKKyAgY2FzZSAyMDA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDIwMDoKKyAgY2FzZSAyMDE6CiAKICAgICB7CiAgICAgICAgIFRGdW5j
dGlvbiogZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmZ1bmN0aW9uOwpAQCAt
NDUyMSw3ICs0NDkyLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIAogICAgICAgICBpZiAoYnVpbHRJ
bikKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtKS5saW5lLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQi
LCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5bHNwWygxKSAtICgxKV0pLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRl
ZmluZWQiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDUzNSw3ICs0NTA2LDcgQEAg
eXlyZWR1Y2U6CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhlbiB0aGlzIGZ1bmN0
aW9uIGFscmVhZHkgaGFzIGEgYm9keS4KICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICJmdW5jdGlvbiBhbHJl
YWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiZnVuY3Rpb24gYWxyZWFkeSBo
YXMgYSBib2R5IiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBwcmV2RGVjLT5zZXREZWZpbmVk
KCk7CkBAIC00NTQ1LDExICs0NTE2LDExIEBAIHl5cmVkdWNlOgogICAgICAgICAvLwogICAgICAg
ICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAibWFpbiIpIHsKICAgICAgICAgICAgIGlmIChm
dW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpID4gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgImZ1bmN0aW9uIGNhbm5vdCB0
YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgImZ1bmN0aW9u
IGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3Ry
KCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgp
ICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmxpbmUsICIiLCBmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJh
c2ljU3RyaW5nKCksICJtYWluIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgIiIsIGZ1bmN0
aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fu
bm90IHJldHVybiBhIHZhbHVlIik7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NTc3LDcgKzQ1NDgsNyBAQCB5eXJlZHVj
ZToKICAgICAgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHBhcmFtZXRlcnMgd2l0aCBuYW1lIGlu
IHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICBp
ZiAoISBjb250ZXh0LT5zeW1ib2xUYWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkgewotICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUs
ICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJyZWRlZmluaXRp
b24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsK
ICAgICAgICAgICAgICAgICB9CkBAIC00NTg4LDMxICs0NTU5LDMyIEBAIHl5cmVkdWNlOgogICAg
ICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3Jl
Z2F0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW1Ob2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFi
bGUtPmdldFR5cGUoKSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHl5bHNwWygxKSAtICgxKV0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5ncm93QWdncmVnYXRlKHBhcmFtTm9kZXMsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRT
eW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUp
LCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgIHBhcmFt
Tm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgKHl5bHNw
WygxKSAtICgxKV0pKSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3Io
cGFyYW1Ob2RlcywgRU9wUGFyYW1ldGVycywgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5l
KTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBh
cmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICh5
eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAg
ICAgICAgY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA9IDA7CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDIwMToKKyAgY2FzZSAyMDI6CiAKICAgICB7CiAgICAgICAgIC8vPz8gQ2hlY2sg
dGhhdCBhbGwgcGF0aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0dXJuIHR5cGUgIT0gdm9pZCA/CiAg
ICAgICAgIC8vICAgTWF5IGJlIGJlc3QgZG9uZSBhcyBwb3N0IHByb2Nlc3MgcGhhc2Ugb24gaW50
ZXJtZWRpYXRlIGNvZGUKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUt
PmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQgJiYgISBjb250ZXh0LT5mdW5jdGlvblJldHVybnNW
YWx1ZSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtKS5saW5lLCAiZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWU6IiwgIiIsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgImZ1bmN0aW9uIGRvZXMg
bm90IHJldHVybiBhIHZhbHVlOiIsICIiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0
aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5v
ZGUpLCAwKTsKLSAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJh
dG9yKCh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSksIEVPcEZ1bmN0aW9uLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2Rl
KSwgKHl5bG9jKSk7CisgICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVP
cGVyYXRvcigoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLCBFT3BGdW5jdGlvbiwgKHl5bHNwWygx
KSAtICgzKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dy
ZWdhdGUoKS0+c2V0TmFtZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uLT5nZXRN
YW5nbGVkTmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
LT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVu
Y3Rpb24tPmdldFJldHVyblR5cGUoKSk7CiAKQEAgLTQ2MjEsOSArNDU5Myw2IEBAIHl5cmVkdWNl
OgogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5z
ZXRPcHRpbWl6ZShjb250ZXh0LT5wcmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnBy
YWdtYSgpLmRlYnVnKTsKIAotICAgICAgICBpZiAoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybU5vZGUpICYmICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNB
Z2dyZWdhdGUoKSkKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFz
QWdncmVnYXRlKCktPnNldEVuZExpbmUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5v
ZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5nZXRFbmRMaW5lKCkpOwotCiAgICAgICAgIGNvbnRleHQt
PnN5bWJvbFRhYmxlLnBvcCgpOwogICAgIDt9CiAgICAgYnJlYWs7CkBAIC00NjQwLDcgKzQ2MDks
NyBAQCB5eXJlZHVjZToKICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKIAogICAqKyt5
eXZzcCA9IHl5dmFsOwotCisgICorK3l5bHNwID0geXlsb2M7CiAKICAgLyogTm93IGBzaGlmdCcg
dGhlIHJlc3VsdCBvZiB0aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAg
dGhhdCBnb2VzIHRvLCBiYXNlZCBvbiB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRo
ZSBydWxlCkBAIC00NjY2LDcgKzQ2MzUsNyBAQCB5eWVycmxhYjoKICAgICB7CiAgICAgICArK3l5
bmVycnM7CiAjaWYgISBZWUVSUk9SX1ZFUkJPU0UKLSAgICAgIHl5ZXJyb3IgKGNvbnRleHQsIFlZ
Xygic3ludGF4IGVycm9yIikpOworICAgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgWVlf
KCJzeW50YXggZXJyb3IiKSk7CiAjZWxzZQogICAgICAgewogCVlZU0laRV9UIHl5c2l6ZSA9IHl5
c3ludGF4X2Vycm9yICgwLCB5eXN0YXRlLCB5eWNoYXIpOwpAQCAtNDY5MCwxMSArNDY1OSwxMSBA
QCB5eWVycmxhYjoKIAlpZiAoMCA8IHl5c2l6ZSAmJiB5eXNpemUgPD0geXltc2dfYWxsb2MpCiAJ
ICB7CiAJICAgICh2b2lkKSB5eXN5bnRheF9lcnJvciAoeXltc2csIHl5c3RhdGUsIHl5Y2hhcik7
Ci0JICAgIHl5ZXJyb3IgKGNvbnRleHQsIHl5bXNnKTsKKwkgICAgeXllcnJvciAoJnl5bGxvYywg
Y29udGV4dCwgeXltc2cpOwogCSAgfQogCWVsc2UKIAkgIHsKLQkgICAgeXllcnJvciAoY29udGV4
dCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CisJICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQs
IFlZXygic3ludGF4IGVycm9yIikpOwogCSAgICBpZiAoeXlzaXplICE9IDApCiAJICAgICAgZ290
byB5eWV4aGF1c3RlZGxhYjsKIAkgIH0KQEAgLTQ3MDIsNyArNDY3MSw3IEBAIHl5ZXJybGFiOgog
I2VuZGlmCiAgICAgfQogCi0KKyAgeXllcnJvcl9yYW5nZVswXSA9IHl5bGxvYzsKIAogICBpZiAo
eXllcnJzdGF0dXMgPT0gMykKICAgICB7CkBAIC00NzE4LDcgKzQ2ODcsNyBAQCB5eWVycmxhYjoK
ICAgICAgIGVsc2UKIAl7CiAJICB5eWRlc3RydWN0ICgiRXJyb3I6IGRpc2NhcmRpbmciLAotCQkg
ICAgICB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKKwkJICAgICAgeXl0b2tlbiwgJnl5bHZh
bCwgJnl5bGxvYywgY29udGV4dCk7CiAJICB5eWNoYXIgPSBZWUVNUFRZOwogCX0KICAgICB9CkBA
IC00NzM5LDYgKzQ3MDgsNyBAQCB5eWVycm9ybGFiOgogICBpZiAoLypDT05TVENPTkQqLyAwKQog
ICAgICBnb3RvIHl5ZXJyb3JsYWI7CiAKKyAgeXllcnJvcl9yYW5nZVswXSA9IHl5bHNwWzEteXls
ZW5dOwogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3aGljaCBh
Y3Rpb24gdHJpZ2dlcmVkCiAgICAgIHRoaXMgWVlFUlJPUi4gICovCiAgIFlZUE9QU1RBQ0sgKHl5
bGVuKTsKQEAgLTQ3NzIsOSArNDc0Miw5IEBAIHl5ZXJybGFiMToKICAgICAgIGlmICh5eXNzcCA9
PSB5eXNzKQogCVlZQUJPUlQ7CiAKLQorICAgICAgeXllcnJvcl9yYW5nZVswXSA9ICp5eWxzcDsK
ICAgICAgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogcG9wcGluZyIsCi0JCSAgeXlzdG9zW3l5c3RhdGVd
LCB5eXZzcCwgY29udGV4dCk7CisJCSAgeXlzdG9zW3l5c3RhdGVdLCB5eXZzcCwgeXlsc3AsIGNv
bnRleHQpOwogICAgICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgICB5eXN0YXRlID0gKnl5c3NwOwog
ICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKQEAgLTQ3ODUsNiArNDc1NSwxMSBA
QCB5eWVycmxhYjE6CiAKICAgKisreXl2c3AgPSB5eWx2YWw7CiAKKyAgeXllcnJvcl9yYW5nZVsx
XSA9IHl5bGxvYzsKKyAgLyogVXNpbmcgWVlMTE9DIGlzIHRlbXB0aW5nLCBidXQgd291bGQgY2hh
bmdlIHRoZSBsb2NhdGlvbiBvZgorICAgICB0aGUgbG9vay1haGVhZC4gIFlZTE9DIGlzIGF2YWls
YWJsZSB0aG91Z2guICAqLworICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWVycm9yX3Jhbmdl
IC0gMSksIDIpOworICAqKyt5eWxzcCA9IHl5bG9jOwogCiAgIC8qIFNoaWZ0IHRoZSBlcnJvciB0
b2tlbi4gICovCiAgIFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0aW5nIiwgeXlzdG9zW3l5bl0sIHl5
dnNwLCB5eWxzcCk7CkBAIC00ODEyLDcgKzQ3ODcsNyBAQCB5eWFib3J0bGFiOgogfCB5eWV4aGF1
c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJlLiAgfAogYC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogeXlleGhhdXN0ZWRsYWI6
Ci0gIHl5ZXJyb3IgKGNvbnRleHQsIFlZXygibWVtb3J5IGV4aGF1c3RlZCIpKTsKKyAgeXllcnJv
ciAoJnl5bGxvYywgY29udGV4dCwgWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOwogICB5eXJlc3Vs
dCA9IDI7CiAgIC8qIEZhbGwgdGhyb3VnaC4gICovCiAjZW5kaWYKQEAgLTQ4MjAsNyArNDc5NSw3
IEBAIHl5ZXhoYXVzdGVkbGFiOgogeXlyZXR1cm46CiAgIGlmICh5eWNoYXIgIT0gWVlFT0YgJiYg
eXljaGFyICE9IFlZRU1QVFkpCiAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5n
IGxvb2thaGVhZCIsCi0JCSB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKKwkJIHl5dG9rZW4s
ICZ5eWx2YWwsICZ5eWxsb2MsIGNvbnRleHQpOwogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3lt
Ym9scyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCiAgICAgIHRoaXMgWVlBQk9S
VCBvciBZWUFDQ0VQVC4gICovCiAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKQEAgLTQ4MjgsNyArNDgw
Myw3IEBAIHl5cmV0dXJuOgogICB3aGlsZSAoeXlzc3AgIT0geXlzcykKICAgICB7CiAgICAgICB5
eWRlc3RydWN0ICgiQ2xlYW51cDogcG9wcGluZyIsCi0JCSAgeXlzdG9zWyp5eXNzcF0sIHl5dnNw
LCBjb250ZXh0KTsKKwkJICB5eXN0b3NbKnl5c3NwXSwgeXl2c3AsIHl5bHNwLCBjb250ZXh0KTsK
ICAgICAgIFlZUE9QU1RBQ0sgKDEpOwogICAgIH0KICNpZm5kZWYgeXlvdmVyZmxvdwpAQCAtNDg0
Nyw2ICs0ODIyLDExIEBAIHl5cmV0dXJuOgogCiAKIAordm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5
bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKSB7CisgICAg
Y29udGV4dC0+ZXJyb3IoKnl5bGxvYywgcmVhc29uLCAiIik7CisgICAgY29udGV4dC0+cmVjb3Zl
cigpOworfQorCiBpbnQgZ2xzbGFuZ19wYXJzZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAg
ICAgcmV0dXJuIHl5cGFyc2UoY29udGV4dCk7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaAkocmV2aXNpb24gMTUyOTc5
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg2LDUyICs4Niw1MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0g
MzAyLAogICAgICBJTlRDT05TVEFOVCA9IDMwMywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAot
ICAgICBGSUVMRF9TRUxFQ1RJT04gPSAzMDUsCi0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJ
R0hUX09QID0gMzA3LAotICAgICBJTkNfT1AgPSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAg
ICAgTEVfT1AgPSAzMTAsCi0gICAgIEdFX09QID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAg
ICAgTkVfT1AgPSAzMTMsCi0gICAgIEFORF9PUCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0g
ICAgIFhPUl9PUCA9IDMxNiwKLSAgICAgTVVMX0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lH
TiA9IDMxOCwKLSAgICAgQUREX0FTU0lHTiA9IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwK
LSAgICAgTEVGVF9BU1NJR04gPSAzMjEsCi0gICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAg
QU5EX0FTU0lHTiA9IDMyMywKLSAgICAgWE9SX0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdO
ID0gMzI1LAotICAgICBTVUJfQVNTSUdOID0gMzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAot
ICAgICBSSUdIVF9QQVJFTiA9IDMyOCwKLSAgICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBS
SUdIVF9CUkFDS0VUID0gMzMwLAotICAgICBMRUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9C
UkFDRSA9IDMzMiwKLSAgICAgRE9UID0gMzMzLAotICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09M
T04gPSAzMzUsCi0gICAgIEVRVUFMID0gMzM2LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAg
IEJBTkcgPSAzMzgsCi0gICAgIERBU0ggPSAzMzksCi0gICAgIFRJTERFID0gMzQwLAotICAgICBQ
TFVTID0gMzQxLAotICAgICBTVEFSID0gMzQyLAotICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVS
Q0VOVCA9IDM0NCwKLSAgICAgTEVGVF9BTkdMRSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAz
NDYsCi0gICAgIFZFUlRJQ0FMX0JBUiA9IDM0NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFN
UEVSU0FORCA9IDM0OSwKLSAgICAgUVVFU1RJT04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwK
KyAgICAgUklHSFRfT1AgPSAzMDYsCisgICAgIElOQ19PUCA9IDMwNywKKyAgICAgREVDX09QID0g
MzA4LAorICAgICBMRV9PUCA9IDMwOSwKKyAgICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0g
MzExLAorICAgICBORV9PUCA9IDMxMiwKKyAgICAgQU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9
IDMxNCwKKyAgICAgWE9SX09QID0gMzE1LAorICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBE
SVZfQVNTSUdOID0gMzE3LAorICAgICBBRERfQVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdO
ID0gMzE5LAorICAgICBMRUZUX0FTU0lHTiA9IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIx
LAorICAgICBBTkRfQVNTSUdOID0gMzIyLAorICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBP
Ul9BU1NJR04gPSAzMjQsCisgICAgIFNVQl9BU1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4g
PSAzMjYsCisgICAgIFJJR0hUX1BBUkVOID0gMzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgs
CisgICAgIFJJR0hUX0JSQUNLRVQgPSAzMjksCisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAg
IFJJR0hUX0JSQUNFID0gMzMxLAorICAgICBET1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMzLAor
ICAgICBDT0xPTiA9IDMzNCwKKyAgICAgRVFVQUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMz
NiwKKyAgICAgQkFORyA9IDMzNywKKyAgICAgREFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzks
CisgICAgIFBMVVMgPSAzNDAsCisgICAgIFNUQVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAor
ICAgICBQRVJDRU5UID0gMzQzLAorICAgICBMRUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9B
TkdMRSA9IDM0NSwKKyAgICAgVkVSVElDQUxfQkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywK
KyAgICAgQU1QRVJTQU5EID0gMzQ4LAorICAgICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRp
ZgogLyogVG9rZW5zLiAgKi8KQEAgLTE4Miw1MiArMTgxLDUxIEBACiAjZGVmaW5lIEZMT0FUQ09O
U1RBTlQgMzAyCiAjZGVmaW5lIElOVENPTlNUQU5UIDMwMwogI2RlZmluZSBCT09MQ09OU1RBTlQg
MzA0Ci0jZGVmaW5lIEZJRUxEX1NFTEVDVElPTiAzMDUKLSNkZWZpbmUgTEVGVF9PUCAzMDYKLSNk
ZWZpbmUgUklHSFRfT1AgMzA3Ci0jZGVmaW5lIElOQ19PUCAzMDgKLSNkZWZpbmUgREVDX09QIDMw
OQotI2RlZmluZSBMRV9PUCAzMTAKLSNkZWZpbmUgR0VfT1AgMzExCi0jZGVmaW5lIEVRX09QIDMx
MgotI2RlZmluZSBORV9PUCAzMTMKLSNkZWZpbmUgQU5EX09QIDMxNAotI2RlZmluZSBPUl9PUCAz
MTUKLSNkZWZpbmUgWE9SX09QIDMxNgotI2RlZmluZSBNVUxfQVNTSUdOIDMxNwotI2RlZmluZSBE
SVZfQVNTSUdOIDMxOAotI2RlZmluZSBBRERfQVNTSUdOIDMxOQotI2RlZmluZSBNT0RfQVNTSUdO
IDMyMAotI2RlZmluZSBMRUZUX0FTU0lHTiAzMjEKLSNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMgot
I2RlZmluZSBBTkRfQVNTSUdOIDMyMwotI2RlZmluZSBYT1JfQVNTSUdOIDMyNAotI2RlZmluZSBP
Ul9BU1NJR04gMzI1Ci0jZGVmaW5lIFNVQl9BU1NJR04gMzI2Ci0jZGVmaW5lIExFRlRfUEFSRU4g
MzI3Ci0jZGVmaW5lIFJJR0hUX1BBUkVOIDMyOAotI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI5Ci0j
ZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzMwCi0jZGVmaW5lIExFRlRfQlJBQ0UgMzMxCi0jZGVmaW5l
IFJJR0hUX0JSQUNFIDMzMgotI2RlZmluZSBET1QgMzMzCi0jZGVmaW5lIENPTU1BIDMzNAotI2Rl
ZmluZSBDT0xPTiAzMzUKLSNkZWZpbmUgRVFVQUwgMzM2Ci0jZGVmaW5lIFNFTUlDT0xPTiAzMzcK
LSNkZWZpbmUgQkFORyAzMzgKLSNkZWZpbmUgREFTSCAzMzkKLSNkZWZpbmUgVElMREUgMzQwCi0j
ZGVmaW5lIFBMVVMgMzQxCi0jZGVmaW5lIFNUQVIgMzQyCi0jZGVmaW5lIFNMQVNIIDM0MwotI2Rl
ZmluZSBQRVJDRU5UIDM0NAotI2RlZmluZSBMRUZUX0FOR0xFIDM0NQotI2RlZmluZSBSSUdIVF9B
TkdMRSAzNDYKLSNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NwotI2RlZmluZSBDQVJFVCAzNDgKLSNk
ZWZpbmUgQU1QRVJTQU5EIDM0OQotI2RlZmluZSBRVUVTVElPTiAzNTAKKyNkZWZpbmUgTEVGVF9P
UCAzMDUKKyNkZWZpbmUgUklHSFRfT1AgMzA2CisjZGVmaW5lIElOQ19PUCAzMDcKKyNkZWZpbmUg
REVDX09QIDMwOAorI2RlZmluZSBMRV9PUCAzMDkKKyNkZWZpbmUgR0VfT1AgMzEwCisjZGVmaW5l
IEVRX09QIDMxMQorI2RlZmluZSBORV9PUCAzMTIKKyNkZWZpbmUgQU5EX09QIDMxMworI2RlZmlu
ZSBPUl9PUCAzMTQKKyNkZWZpbmUgWE9SX09QIDMxNQorI2RlZmluZSBNVUxfQVNTSUdOIDMxNgor
I2RlZmluZSBESVZfQVNTSUdOIDMxNworI2RlZmluZSBBRERfQVNTSUdOIDMxOAorI2RlZmluZSBN
T0RfQVNTSUdOIDMxOQorI2RlZmluZSBMRUZUX0FTU0lHTiAzMjAKKyNkZWZpbmUgUklHSFRfQVNT
SUdOIDMyMQorI2RlZmluZSBBTkRfQVNTSUdOIDMyMgorI2RlZmluZSBYT1JfQVNTSUdOIDMyMwor
I2RlZmluZSBPUl9BU1NJR04gMzI0CisjZGVmaW5lIFNVQl9BU1NJR04gMzI1CisjZGVmaW5lIExF
RlRfUEFSRU4gMzI2CisjZGVmaW5lIFJJR0hUX1BBUkVOIDMyNworI2RlZmluZSBMRUZUX0JSQUNL
RVQgMzI4CisjZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzI5CisjZGVmaW5lIExFRlRfQlJBQ0UgMzMw
CisjZGVmaW5lIFJJR0hUX0JSQUNFIDMzMQorI2RlZmluZSBET1QgMzMyCisjZGVmaW5lIENPTU1B
IDMzMworI2RlZmluZSBDT0xPTiAzMzQKKyNkZWZpbmUgRVFVQUwgMzM1CisjZGVmaW5lIFNFTUlD
T0xPTiAzMzYKKyNkZWZpbmUgQkFORyAzMzcKKyNkZWZpbmUgREFTSCAzMzgKKyNkZWZpbmUgVElM
REUgMzM5CisjZGVmaW5lIFBMVVMgMzQwCisjZGVmaW5lIFNUQVIgMzQxCisjZGVmaW5lIFNMQVNI
IDM0MgorI2RlZmluZSBQRVJDRU5UIDM0MworI2RlZmluZSBMRUZUX0FOR0xFIDM0NAorI2RlZmlu
ZSBSSUdIVF9BTkdMRSAzNDUKKyNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NgorI2RlZmluZSBDQVJF
VCAzNDcKKyNkZWZpbmUgQU1QRVJTQU5EIDM0OAorI2RlZmluZSBRVUVTVElPTiAzNDkKIAogCiAK
QEAgLTIzNiw4ICsyMzQsOSBAQAogdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAKIHsKKyNkZWZpbmUg
WVlMVFlQRSBUU291cmNlTG9jCisjZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQgMQogICAgIHN0
cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgdW5pb24gewogICAgICAg
ICAgICAgVFN0cmluZyAqc3RyaW5nOwogICAgICAgICAgICAgZmxvYXQgZjsKQEAgLTI0Nyw3ICsy
NDYsNiBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwog
ICAgIH0gbGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAg
ICAgVE9wZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9k
ZSogaW50ZXJtTm9kZTsKQEAgLTI2MSw4ICsyNTksOCBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUK
ICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyOwogICAgICAgICAgICAgVEZ1bmN0aW9u
KiBmdW5jdGlvbjsKICAgICAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW07Ci0gICAgICAgICAgICBU
VHlwZUxpbmUgdHlwZUxpbmU7Ci0gICAgICAgICAgICBUVHlwZUxpc3QqIHR5cGVMaXN0OworICAg
ICAgICAgICAgVEZpZWxkKiBmaWVsZDsKKyAgICAgICAgICAgIFRGaWVsZExpc3QqIGZpZWxkTGlz
dDsKICAgICAgICAgfTsKICAgICB9IGludGVybTsKIH0KQEAgLTI3NiwzICsyNzQsMTcgQEAgdHlw
ZWRlZiB1bmlvbiBZWVNUWVBFCiAKIAogCisjaWYgISBkZWZpbmVkIFlZTFRZUEUgJiYgISBkZWZp
bmVkIFlZTFRZUEVfSVNfREVDTEFSRUQKK3R5cGVkZWYgc3RydWN0IFlZTFRZUEUKK3sKKyAgaW50
IGZpcnN0X2xpbmU7CisgIGludCBmaXJzdF9jb2x1bW47CisgIGludCBsYXN0X2xpbmU7CisgIGlu
dCBsYXN0X2NvbHVtbjsKK30gWVlMVFlQRTsKKyMgZGVmaW5lIHl5bHR5cGUgWVlMVFlQRSAvKiBv
YnNvbGVzY2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KKyMgZGVmaW5lIFlZTFRZUEVfSVNfREVD
TEFSRUQgMQorIyBkZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKKyNlbmRpZgorCisKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQu
Y3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvaW50ZXJtT3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDcgKzE4OSw5IEBAIGJv
b2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRVbmFyeShWaXNpdCAKICAgICAgICAgY2FzZSBFT3BB
bnk6ICAgICAgICAgICAgb3V0IDw8ICJhbnkiOyAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEVPcEFsbDogICAgICAgICAgICBvdXQgPDwgImFsbCI7ICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgZGVmYXVsdDogb3V0Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCAi
QmFkIHVuYXJ5IG9wIik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBvdXQucHJlZml4
KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICBvdXQgPDwgIkJhZCB1bmFyeSBvcCI7CiAgICAg
fQogCiAgICAgb3V0IDw8ICIgKCIgPDwgbm9kZS0+Z2V0Q29tcGxldGVTdHJpbmcoKSA8PCAiKSI7
CkBAIC0yMDQsNyArMjA2LDggQEAgYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0
ZShWaQogICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IHNpbms7CiAKICAgICBpZiAobm9kZS0+Z2V0
T3AoKSA9PSBFT3BOdWxsKSB7Ci0gICAgICAgIG91dC5tZXNzYWdlKEVQcmVmaXhFcnJvciwgIm5v
ZGUgaXMgc3RpbGwgRU9wTnVsbCEiKTsKKyAgICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3Ip
OworICAgICAgICBvdXQgPDwgIm5vZGUgaXMgc3RpbGwgRU9wTnVsbCEiOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI2Myw3ICsyNjYsOSBAQCBib29sIFRPdXRwdXRUcmF2ZXJz
ZXI6OnZpc2l0QWdncmVnYXRlKFZpCiAKICAgICAgICAgY2FzZSBFT3BEZWNsYXJhdGlvbjogICBv
dXQgPDwgIkRlY2xhcmF0aW9uOiAiOyAgIGJyZWFrOwogCi0gICAgICAgIGRlZmF1bHQ6IG91dC5t
ZXNzYWdlKEVQcmVmaXhFcnJvciwgIkJhZCBhZ2dyZWdhdGlvbiBvcCIpOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAg
b3V0IDw8ICJCYWQgYWdncmVnYXRpb24gb3AiOwogICAgIH0KIAogICAgIGlmIChub2RlLT5nZXRP
cCgpICE9IEVPcFNlcXVlbmNlICYmIG5vZGUtPmdldE9wKCkgIT0gRU9wUGFyYW1ldGVycykKQEAg
LTMxMSw5ICszMTYsOSBAQCB2b2lkIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlv
CiB7CiAgICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gc2luazsKIAotICAgIGludCBzaXplID0gbm9k
ZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKKyAgICBzaXplX3Qgc2l6ZSA9IG5vZGUtPmdl
dFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
IGkrKykgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAg
IE91dHB1dFRyZWVUZXh0KG91dCwgbm9kZSwgZGVwdGgpOwogICAgICAgICBzd2l0Y2ggKG5vZGUt
PmdldFVuaW9uQXJyYXlQb2ludGVyKClbaV0uZ2V0VHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNl
IEVidEJvb2w6CkBAIC0zMzQsNyArMzM5LDcgQEAgdm9pZCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNp
dENvbnN0YW50VW5pbwogICAgICAgICAgICAgICAgIG91dCA8PCAiIChjb25zdCBpbnQpXG4iOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICBvdXQubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVua25vd24gY29uc3RhbnQi
LCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dC5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJVbmtub3duIGNvbnN0YW50Iik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCShyZXZpc2lv
biAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJt
ZWRpYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE4LDYgKzE4LDcgQEAKIAogI2luY2x1ZGUgIkdMU0xB
TkcvU2hhZGVyTGFuZy5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgImNvbXBp
bGVyL0NvbW1vbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL1R5cGVzLmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvQ29uc3RhbnRVbmlvbi5oIgpAQCAtMjA2LDEwICsyMDcsMTYgQEAgY2xhc3MgVEludGVy
bU5vZGUgewogcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9v
bEFsbG9jYXRvcikKIAotICAgIFRJbnRlcm1Ob2RlKCkgOiBsaW5lKDApIHt9CisgICAgVEludGVy
bU5vZGUoKSB7CisgICAgICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBUU291cmNlTG9jIGNvbnN0
cnVjdG9yCisgICAgICAgIC8vIGFmdGVyIGdldHRpbmcgcmlkIG9mIFRQdWJsaWNUeXBlLgorICAg
ICAgICBsaW5lLmZpcnN0X2ZpbGUgPSBsaW5lLmxhc3RfZmlsZSA9IDA7CisgICAgICAgIGxpbmUu
Zmlyc3RfbGluZSA9IGxpbmUubGFzdF9saW5lID0gMDsKKyAgICB9CisgICAgdmlydHVhbCB+VElu
dGVybU5vZGUoKSB7IH0KIAotICAgIFRTb3VyY2VMb2MgZ2V0TGluZSgpIGNvbnN0IHsgcmV0dXJu
IGxpbmU7IH0KLSAgICB2b2lkIHNldExpbmUoVFNvdXJjZUxvYyBsKSB7IGxpbmUgPSBsOyB9Cisg
ICAgY29uc3QgVFNvdXJjZUxvYyYgZ2V0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmU7IH0KKyAg
ICB2b2lkIHNldExpbmUoY29uc3QgVFNvdXJjZUxvYyYgbCkgeyBsaW5lID0gbDsgfQogCiAgICAg
dmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqKSA9IDA7CiAgICAgdmlydHVh
bCBUSW50ZXJtVHlwZWQqIGdldEFzVHlwZWQoKSB7IHJldHVybiAwOyB9CkBAIC0yMjAsNyArMjI3
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVEludGVybVNlbGVjdGlvbiogZ2V0QXNTZWxlY3Rp
b25Ob2RlKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgVEludGVybVN5bWJvbCogZ2V0QXNT
eW1ib2xOb2RlKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgVEludGVybUxvb3AqIGdldEFz
TG9vcE5vZGUoKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB+VEludGVybU5vZGUoKSB7IH0K
IAogcHJvdGVjdGVkOgogICAgIFRTb3VyY2VMb2MgbGluZTsKQEAgLTI1OSw2ICsyNjUsMTAgQEAg
cHVibGljOgogICAgIGNvbnN0IGNoYXIqIGdldFF1YWxpZmllclN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIHR5cGUuZ2V0UXVhbGlmaWVyU3RyaW5nKCk7IH0KICAgICBUU3RyaW5nIGdldENvbXBsZXRl
U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gdHlwZS5nZXRDb21wbGV0ZVN0cmluZygpOyB9CiAKKyAg
ICBpbnQgdG90YWxSZWdpc3RlckNvdW50KCkgY29uc3QgeyByZXR1cm4gdHlwZS50b3RhbFJlZ2lz
dGVyQ291bnQoKTsgfQorICAgIGludCBlbGVtZW50UmVnaXN0ZXJDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIHR5cGUuZWxlbWVudFJlZ2lzdGVyQ291bnQoKTsgfQorICAgIGludCBnZXRBcnJheVNpemUo
KSBjb25zdCB7IHJldHVybiB0eXBlLmdldEFycmF5U2l6ZSgpOyB9CisKIHByb3RlY3RlZDoKICAg
ICBUVHlwZSB0eXBlOwogfTsKQEAgLTM1OCw3ICszNjgsMTAgQEAgcHVibGljOgogICAgIFRJbnRl
cm1Db25zdGFudFVuaW9uKENvbnN0YW50VW5pb24gKnVuaW9uUG9pbnRlciwgY29uc3QgVFR5cGUm
IHQpIDogVEludGVybVR5cGVkKHQpLCB1bmlvbkFycmF5UG9pbnRlcih1bmlvblBvaW50ZXIpIHsg
fQogCiAgICAgQ29uc3RhbnRVbmlvbiogZ2V0VW5pb25BcnJheVBvaW50ZXIoKSBjb25zdCB7IHJl
dHVybiB1bmlvbkFycmF5UG9pbnRlcjsgfQotICAgIHZvaWQgc2V0VW5pb25BcnJheVBvaW50ZXIo
Q29uc3RhbnRVbmlvbiAqYykgeyB1bmlvbkFycmF5UG9pbnRlciA9IGM7IH0KKyAgICAKKyAgICBp
bnQgZ2V0SUNvbnN0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXIg
PyB1bmlvbkFycmF5UG9pbnRlcltpbmRleF0uZ2V0SUNvbnN0KCkgOiAwOyB9CisgICAgZmxvYXQg
Z2V0RkNvbnN0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXIgPyB1
bmlvbkFycmF5UG9pbnRlcltpbmRleF0uZ2V0RkNvbnN0KCkgOiAwLjBmOyB9CisgICAgYm9vbCBn
ZXRCQ29uc3QoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRlciA/IHVu
aW9uQXJyYXlQb2ludGVyW2luZGV4XS5nZXRCQ29uc3QoKSA6IGZhbHNlOyB9CiAKICAgICB2aXJ0
dWFsIFRJbnRlcm1Db25zdGFudFVuaW9uKiBnZXRBc0NvbnN0YW50VW5pb24oKSAgeyByZXR1cm4g
dGhpczsgfQogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKik7CkBA
IC00NDcsNyArNDYwLDcgQEAgdHlwZWRlZiBUVmVjdG9yPGludD4gVFF1YWxpZmllckxpc3Q7CiAv
LwogY2xhc3MgVEludGVybUFnZ3JlZ2F0ZSA6IHB1YmxpYyBUSW50ZXJtT3BlcmF0b3IgewogcHVi
bGljOgotICAgIFRJbnRlcm1BZ2dyZWdhdGUoKSA6IFRJbnRlcm1PcGVyYXRvcihFT3BOdWxsKSwg
dXNlckRlZmluZWQoZmFsc2UpLCBlbmRMaW5lKDApLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKGZhbHNl
KSB7IH0KKyAgICBUSW50ZXJtQWdncmVnYXRlKCkgOiBUSW50ZXJtT3BlcmF0b3IoRU9wTnVsbCks
IHVzZXJEZWZpbmVkKGZhbHNlKSwgdXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSkgeyB9CiAgICAg
VEludGVybUFnZ3JlZ2F0ZShUT3BlcmF0b3IgbykgOiBUSW50ZXJtT3BlcmF0b3IobyksIHVzZUVt
dWxhdGVkRnVuY3Rpb24oZmFsc2UpIHsgfQogICAgIH5USW50ZXJtQWdncmVnYXRlKCkgeyB9CiAK
QEAgLTQ2Nyw5ICs0ODAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWJ1Zyhib29sIGQpIHsg
ZGVidWcgPSBkOyB9CiAgICAgYm9vbCBnZXREZWJ1ZygpIHsgcmV0dXJuIGRlYnVnOyB9CiAKLSAg
ICB2b2lkIHNldEVuZExpbmUoVFNvdXJjZUxvYyBsaW5lKSB7IGVuZExpbmUgPSBsaW5lOyB9Ci0g
ICAgVFNvdXJjZUxvYyBnZXRFbmRMaW5lKCkgY29uc3QgeyByZXR1cm4gZW5kTGluZTsgfQotCiAg
ICAgdm9pZCBzZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkgeyB1c2VFbXVsYXRlZEZ1bmN0aW9uID0g
dHJ1ZTsgfQogICAgIGJvb2wgZ2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpIHsgcmV0dXJuIHVzZUVt
dWxhdGVkRnVuY3Rpb247IH0KIApAQCAtNDgyLDcgKzQ5Miw2IEBAIHByb3RlY3RlZDoKIAogICAg
IGJvb2wgb3B0aW1pemU7CiAgICAgYm9vbCBkZWJ1ZzsKLSAgICBUU291cmNlTG9jIGVuZExpbmU7
CiAKICAgICAvLyBJZiBzZXQgdG8gdHJ1ZSwgcmVwbGFjZSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24g
Y2FsbCB3aXRoIGFuIGVtdWxhdGVkIG9uZQogICAgIC8vIHRvIHdvcmsgYXJvdW5kIGRyaXZlciBi
dWdzLgpAQCAtNTM4LDcgKzU0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGluVmlzaXQoaW5W
aXNpdCksCiAgICAgICAgICAgICBwb3N0VmlzaXQocG9zdFZpc2l0KSwKICAgICAgICAgICAgIHJp
Z2h0VG9MZWZ0KHJpZ2h0VG9MZWZ0KSwKLSAgICAgICAgICAgIGRlcHRoKDApIHt9CisgICAgICAg
ICAgICBkZXB0aCgwKSwKKyAgICAgICAgICAgIG1heERlcHRoKDApIHt9CiAgICAgdmlydHVhbCB+
VEludGVybVRyYXZlcnNlcigpIHt9OwogCiAgICAgdmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJ
bnRlcm1TeW1ib2wqKSB7fQpAQCAtNTUwLDcgKzU2MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCopIHtyZXR1cm4gdHJ1ZTt9
CiAgICAgdmlydHVhbCBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNo
Kikge3JldHVybiB0cnVlO30KIAotICAgIHZvaWQgaW5jcmVtZW50RGVwdGgoKSB7ZGVwdGgrKzt9
CisgICAgaW50IGdldE1heERlcHRoKCkgY29uc3Qge3JldHVybiBtYXhEZXB0aDt9CisgICAgdm9p
ZCBpbmNyZW1lbnREZXB0aCgpIHtkZXB0aCsrOyBtYXhEZXB0aCA9IHN0ZDo6bWF4KG1heERlcHRo
LCBkZXB0aCk7IH0KICAgICB2b2lkIGRlY3JlbWVudERlcHRoKCkge2RlcHRoLS07fQogCiAgICAg
Ly8gUmV0dXJuIHRoZSBvcmlnaW5hbCBuYW1lIGlmIGhhc2ggZnVuY3Rpb24gcG9pbnRlciBpcyBO
VUxMOwpAQCAtNTY0LDYgKzU3NSw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIGludCBk
ZXB0aDsKKyAgICBpbnQgbWF4RGVwdGg7CiB9OwogCiAjZW5kaWYgLy8gX19JTlRFUk1FRElBVEVf
SApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJt
ZWRpYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2xvY2FsaW50ZXJtZWRpYXRlLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSwzNCArMjUsMzMgQEAgcHVibGljOiAgICAKICAgICBQT09MX0FMTE9DQVRPUl9O
RVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpCiAKICAgICBUSW50ZXJtZWRpYXRlKFRJbmZv
U2luayYgaSkgOiBpbmZvU2luayhpKSB7IH0KLSAgICBUSW50ZXJtU3ltYm9sKiBhZGRTeW1ib2wo
aW50IElkLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFR5cGUmLCBUU291cmNlTG9jKTsKKyAgICBU
SW50ZXJtU3ltYm9sKiBhZGRTeW1ib2woaW50IElkLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFR5
cGUmLCBjb25zdCBUU291cmNlTG9jJik7CiAgICAgVEludGVybVR5cGVkKiBhZGRDb252ZXJzaW9u
KFRPcGVyYXRvciwgY29uc3QgVFR5cGUmLCBUSW50ZXJtVHlwZWQqKTsKLSAgICBUSW50ZXJtVHlw
ZWQqIGFkZEJpbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRl
cm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MsIFRTeW1ib2xUYWJsZSYpOwotICAgIFRJbnRlcm1U
eXBlZCogYWRkQXNzaWduKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJt
VHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZEluZGV4KFRP
cGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBUU291
cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZFVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJ
bnRlcm1Ob2RlKiBjaGlsZCwgVFNvdXJjZUxvYywgVFN5bWJvbFRhYmxlJik7Ci0gICAgVEludGVy
bUFnZ3JlZ2F0ZSogZ3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVmdCwgVEludGVybU5vZGUq
IHJpZ2h0LCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlKiBtYWtlQWdncmVnYXRl
KFRJbnRlcm1Ob2RlKiBub2RlLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlKiBz
ZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSosIFRPcGVyYXRvciwgVFNvdXJjZUxvYyk7
Ci0gICAgVEludGVybU5vZGUqICBhZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50
ZXJtTm9kZVBhaXIgY29kZSwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRTZWxl
Y3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIHRydWVCbG9jaywgVEludGVy
bVR5cGVkKiBmYWxzZUJsb2NrLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENv
bW1hKFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYyk7
Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24qIGFkZENvbnN0YW50VW5pb24oQ29uc3RhbnRVbmlv
biosIGNvbnN0IFRUeXBlJiwgVFNvdXJjZUxvYyk7CisgICAgVEludGVybVR5cGVkKiBhZGRCaW5h
cnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJp
Z2h0LCBjb25zdCBUU291cmNlTG9jJiwgVFN5bWJvbFRhYmxlJik7CisgICAgVEludGVybVR5cGVk
KiBhZGRBc3NpZ24oVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBl
ZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZEluZGV4
KFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBj
b25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRVbmFyeU1hdGgoVE9wZXJh
dG9yIG9wLCBUSW50ZXJtTm9kZSogY2hpbGQsIGNvbnN0IFRTb3VyY2VMb2MmLCBUU3ltYm9sVGFi
bGUmKTsKKyAgICBUSW50ZXJtQWdncmVnYXRlKiBncm93QWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBs
ZWZ0LCBUSW50ZXJtTm9kZSogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJt
QWdncmVnYXRlKiBtYWtlQWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBub2RlLCBjb25zdCBUU291cmNl
TG9jJik7CisgICAgVEludGVybUFnZ3JlZ2F0ZSogc2V0QWdncmVnYXRlT3BlcmF0b3IoVEludGVy
bU5vZGUqLCBUT3BlcmF0b3IsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtTm9kZSog
IGFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1Ob2RlUGFpciBjb2RlLCBj
b25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRTZWxlY3Rpb24oVEludGVy
bVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIHRydWVCbG9jaywgVEludGVybVR5cGVkKiBmYWxz
ZUJsb2NrLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRDb21tYShU
SW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2Mm
KTsKKyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogYWRkQ29uc3RhbnRVbmlvbihDb25zdGFudFVu
aW9uKiwgY29uc3QgVFR5cGUmLCBjb25zdCBUU291cmNlTG9jJik7CiAgICAgVEludGVybVR5cGVk
KiBwcm9tb3RlQ29uc3RhbnRVbmlvbihUQmFzaWNUeXBlLCBUSW50ZXJtQ29uc3RhbnRVbmlvbiop
IDsKLSAgICBib29sIHBhcnNlQ29uc3RUcmVlKFRTb3VyY2VMb2MsIFRJbnRlcm1Ob2RlKiwgQ29u
c3RhbnRVbmlvbiosIFRPcGVyYXRvciwgVFN5bWJvbFRhYmxlJiwgVFR5cGUsIGJvb2wgc2luZ2xl
Q29uc3RhbnRQYXJhbSA9IGZhbHNlKTsgICAgICAgIAotICAgIFRJbnRlcm1Ob2RlKiBhZGRMb29w
KFRMb29wVHlwZSwgVEludGVybU5vZGUqLCBUSW50ZXJtVHlwZWQqLCBUSW50ZXJtVHlwZWQqLCBU
SW50ZXJtTm9kZSosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChU
T3BlcmF0b3IsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3Bl
cmF0b3IsIFRJbnRlcm1UeXBlZCosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRk
U3dpenpsZShUVmVjdG9yRmllbGRzJiwgVFNvdXJjZUxvYyk7CisgICAgYm9vbCBwYXJzZUNvbnN0
VHJlZShjb25zdCBUU291cmNlTG9jJiwgVEludGVybU5vZGUqLCBDb25zdGFudFVuaW9uKiwgVE9w
ZXJhdG9yLCBUU3ltYm9sVGFibGUmLCBUVHlwZSwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFtID0g
ZmFsc2UpOyAgICAgICAgCisgICAgVEludGVybU5vZGUqIGFkZExvb3AoVExvb3BUeXBlLCBUSW50
ZXJtTm9kZSosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1Ob2RlKiwgY29u
c3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3BlcmF0b3Is
IGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtQnJhbmNoKiBhZGRCcmFuY2goVE9wZXJh
dG9yLCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVk
KiBhZGRTd2l6emxlKFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291cmNlTG9jJik7CiAgICAgYm9v
bCBwb3N0UHJvY2VzcyhUSW50ZXJtTm9kZSopOwotCXZvaWQgcmVtb3ZlKFRJbnRlcm1Ob2RlKik7
CisgICAgdm9pZCByZW1vdmUoVEludGVybU5vZGUqKTsKICAgICB2b2lkIG91dHB1dFRyZWUoVElu
dGVybU5vZGUqKTsKLSAgICAKLXByb3RlY3RlZDoKLSAgICBUSW5mb1NpbmsmIGluZm9TaW5rOwog
CiBwcml2YXRlOgogICAgIHZvaWQgb3BlcmF0b3I9KFRJbnRlcm1lZGlhdGUmKTsgLy8gcHJldmVu
dCBhc3NpZ25tZW50cworCisgICAgVEluZm9TaW5rJiBpbmZvU2luazsKIH07CiAKICNlbmRpZiAv
LyBfTE9DQUxfSU5URVJNRURJQVRFX0lOQ0xVREVEXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wYXJzZUNvbnN0LmNwcAkocmV2aXNpb24gMTUy
OTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNiArMzgsMTYgQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCopOwogICAgIGJvb2wgdmlzaXRC
cmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqKTsKIAotICAgIGludCBpbmRleDsKKyAg
ICBzaXplX3QgaW5kZXg7CiAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheTsKICAgICBUVHlw
ZSB0eXBlOwogICAgIFRPcGVyYXRvciBjb25zdHJ1Y3RvclR5cGU7CiAgICAgYm9vbCBzaW5nbGVD
b25zdGFudFBhcmFtOwogICAgIFRJbmZvU2luayYgaW5mb1Npbms7CiAgICAgVFN5bWJvbFRhYmxl
JiBzeW1ib2xUYWJsZTsKLSAgICBpbnQgc2l6ZTsgLy8gc2l6ZSBvZiB0aGUgY29uc3RydWN0b3Ig
KCA0IGZvciB2ZWM0KQorICAgIHNpemVfdCBzaXplOyAvLyBzaXplIG9mIHRoZSBjb25zdHJ1Y3Rv
ciAoIDQgZm9yIHZlYzQpCiAgICAgYm9vbCBpc01hdHJpeDsKLSAgICBpbnQgbWF0cml4U2l6ZTsg
Ly8gZGltZW5zaW9uIG9mIHRoZSBtYXRyaXggKG5vbWluYWwgc2l6ZSBhbmQgbm90IHRoZSBpbnN0
YW5jZSBzaXplKQorICAgIHNpemVfdCBtYXRyaXhTaXplOyAvLyBkaW1lbnNpb24gb2YgdGhlIG1h
dHJpeCAobm9taW5hbCBzaXplIGFuZCBub3QgdGhlIGluc3RhbmNlIHNpemUpCiB9OwogCiAvLwpA
QCAtNjEsNyArNjEsNyBAQCBwcm90ZWN0ZWQ6CiAKIHZvaWQgVENvbnN0VHJhdmVyc2VyOjp2aXNp
dFN5bWJvbChUSW50ZXJtU3ltYm9sKiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlN5bWJvbCBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNv
bnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIlN5bWJvbCBOb2RlIGZvdW5k
IGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgcmV0dXJuOwogCiB9CkBAIC03NCwxMiAr
NzQsMTIgQEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KFZpc2l0IAogICAgICAg
ICBUU3RyaW5nIGJ1ZjsKICAgICAgICAgYnVmLmFwcGVuZCgiJ2NvbnN0cnVjdG9yJyA6IGFzc2ln
bmluZyBub24tY29uc3RhbnQgdG8gIik7CiAgICAgICAgIGJ1Zi5hcHBlbmQodHlwZS5nZXRDb21w
bGV0ZVN0cmluZygpKTsKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJv
ciwgYnVmLmNfc3RyKCksIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4RXJyb3IsIG5vZGUtPmdldExpbmUoKSwgYnVmLmNfc3RyKCkpOwogICAg
ICAgICBlcnJvciA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsgIAogICAgIH0KIAotICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmluYXJ5IE5vZGUg
Zm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5lKCkpOworICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCks
ICJCaW5hcnkgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOwogICAgIAogICAg
IHJldHVybiBmYWxzZTsKIH0KQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6
OnZpc2l0VW5hcnkoVmlzaXQgdgogICAgIFRTdHJpbmcgYnVmOwogICAgIGJ1Zi5hcHBlbmQoIidj
b25zdHJ1Y3RvcicgOiBhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvICIpOwogICAgIGJ1Zi5hcHBl
bmQodHlwZS5nZXRDb21wbGV0ZVN0cmluZygpKTsKLSAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEVycm9yLCBidWYuY19zdHIoKSwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBub2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigp
KTsKICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOyAgCiB9CkBAIC0xMDAsNyAr
MTAwLDcgQEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpcwogICAgICAg
ICBUU3RyaW5nIGJ1ZjsKICAgICAgICAgYnVmLmFwcGVuZCgiJ2NvbnN0cnVjdG9yJyA6IGFzc2ln
bmluZyBub24tY29uc3RhbnQgdG8gIik7CiAgICAgICAgIGJ1Zi5hcHBlbmQodHlwZS5nZXRDb21w
bGV0ZVN0cmluZygpKTsKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJv
ciwgYnVmLmNfc3RyKCksIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4RXJyb3IsIG5vZGUtPmdldExpbmUoKSwgYnVmLmNfc3RyKCkpOwogICAg
ICAgICBlcnJvciA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsgIAogICAgIH0KQEAgLTE0
NCwyNCArMTQ0LDMxIEBAIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXMK
IAogYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpc2l0LCBUSW50
ZXJtU2VsZWN0aW9uKiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgIlNlbGVjdGlvbiBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVj
dG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIlNlbGVjdGlvbiBOb2RlIGZvdW5kIGlu
IGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgZXJyb3IgPSB0cnVlOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAogdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbihUSW50
ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsKKyAgICBpZiAoIW5vZGUtPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCkpCisgICAgeworICAgICAgICAvLyBUaGUgY29uc3RhbnQgd2FzIG5vdCBpbml0aWFs
aXplZCwgdGhpcyBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gbG9nZ2VkCisgICAgICAgIGFzc2Vy
dChpbmZvU2luay5pbmZvLnNpemUoKSAhPSAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIENvbnN0YW50VW5pb24qIGxlZnRVbmlvbkFycmF5ID0gdW5pb25BcnJheTsKLSAgICBpbnQg
aW5zdGFuY2VTaXplID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90IGluc3RhbmNl
U2l6ZSA9IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwogCiAgICAgaWYgKGluZGV4ID49IGluc3RhbmNl
U2l6ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFzaW5nbGVDb25zdGFudFBhcmFtKSB7
Ci0gICAgICAgIGludCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKKyAg
ICAgICAgc2l6ZV90IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogICAg
IAogICAgICAgICBDb25zdGFudFVuaW9uICpyaWdodFVuaW9uQXJyYXkgPSBub2RlLT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpOwotICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzaXplOyBpKyspIHsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgICAg
IGlmIChpbmRleCA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaW5kZXhdID0gcmlnaHRVbmlvbkFycmF5W2ldOwpAQCAt
MTY5LDExICsxNzYsMTEgQEAgdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlv
bgogICAgICAgICAgICAgKGluZGV4KSsrOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgaW50IHRvdGFsU2l6ZSA9IGluZGV4ICsgc2l6ZTsKKyAgICAgICAgc2l6ZV90IHRvdGFsU2l6
ZSA9IGluZGV4ICsgc2l6ZTsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqcmlnaHRVbmlvbkFycmF5
ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKICAgICAgICAgaWYgKCFpc01hdHJpeCkg
ewotICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSBp
bmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBzaXplX3QgY291bnQgPSAw
OworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGluZGV4OyBpIDwgdG90YWxTaXplOyBpKysp
IHsKICAgICAgICAgICAgICAgICBpZiAoaSA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtMTg1LDkgKzE5Miw5IEBAIHZvaWQgVENvbnN0VHJhdmVyc2Vy
Ojp2aXNpdENvbnN0YW50VW5pb24KICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsgIC8vIGZvciBtYXRyaXggY29uc3RydWN0b3JzCi0g
ICAgICAgICAgICBpbnQgY291bnQgPSAwOwotICAgICAgICAgICAgaW50IGVsZW1lbnQgPSBpbmRl
eDsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSBpbmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsrKSB7
CisgICAgICAgICAgICBzaXplX3QgY291bnQgPSAwOworICAgICAgICAgICAgc2l6ZV90IGVsZW1l
bnQgPSBpbmRleDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBpbmRleDsgaSA8IHRvdGFs
U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYgKGkgPj0gaW5zdGFuY2VTaXplKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgLSBp
ID09IDAgfHwgKGkgLSBlbGVtZW50KSAlIChtYXRyaXhTaXplICsgMSkgPT0gMCApCkBAIC0yMDYs
MTQgKzIxMywxNCBAQCB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uCiAK
IGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29w
KiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgIkxvb3AgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExp
bmUoKSk7CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBu
b2RlLT5nZXRMaW5lKCksICJMb29wIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3Ii
KTsKICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFRDb25z
dFRyYXZlcnNlcjo6dmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqIG5vZGUp
CiB7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQnJh
bmNoIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5lKCkp
OworICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+
Z2V0TGluZSgpLCAiQnJhbmNoIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiKTsK
ICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjIzLDcgKzIzMCw3
IEBAIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdEJyYW5jaChWaXNpdCAKIC8vIEluZGl2aWR1
YWwgZnVuY3Rpb25zIGNhbiBiZSBpbml0aWFsaXplZCB0byAwIHRvIHNraXAgcHJvY2Vzc2luZyBv
ZiB0aGF0CiAvLyB0eXBlIG9mIG5vZGUuICBJdCdzIGNoaWxkcmVuIHdpbGwgc3RpbGwgYmUgcHJv
Y2Vzc2VkLgogLy8KLWJvb2wgVEludGVybWVkaWF0ZTo6cGFyc2VDb25zdFRyZWUoVFNvdXJjZUxv
YyBsaW5lLCBUSW50ZXJtTm9kZSogcm9vdCwgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSwgVE9w
ZXJhdG9yIGNvbnN0cnVjdG9yVHlwZSwgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSwgVFR5cGUg
dCwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFtKQorYm9vbCBUSW50ZXJtZWRpYXRlOjpwYXJzZUNv
bnN0VHJlZShjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogcm9vdCwgQ29uc3Rh
bnRVbmlvbiogdW5pb25BcnJheSwgVE9wZXJhdG9yIGNvbnN0cnVjdG9yVHlwZSwgVFN5bWJvbFRh
YmxlJiBzeW1ib2xUYWJsZSwgVFR5cGUgdCwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFtKQogewog
ICAgIGlmIChyb290ID09IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL1Rva2VuaXplci5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKICNsaW5lIDE2ICIuL1Rva2VuaXplci5sIgogLy8KLS8v
IENvcHlyaWdodCAoYykgMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDExLTIwMTMgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMzU5LDggKzM1OSw4IEBAIHN0YXRpYyB2b2lk
IHl5X2ZhdGFsX2Vycm9yICh5eWNvbnN0IGNoYXIKIAkqeXlfY3AgPSAnXDAnOyBcCiAJeXlnLT55
eV9jX2J1Zl9wID0geXlfY3A7CiAKLSNkZWZpbmUgWVlfTlVNX1JVTEVTIDM3Ci0jZGVmaW5lIFlZ
X0VORF9PRl9CVUZGRVIgMzgKKyNkZWZpbmUgWVlfTlVNX1JVTEVTIDM4CisjZGVmaW5lIFlZX0VO
RF9PRl9CVUZGRVIgMzkKIC8qIFRoaXMgc3RydWN0IGlzIG5vdCB1c2VkIGluIHRoaXMgc2Nhbm5l
ciwKICAgIGJ1dCBpdHMgcHJlc2VuY2UgaXMgbmVjZXNzYXJ5LiAqLwogc3RydWN0IHl5X3RyYW5z
X2luZm8KQEAgLTM2OCwxNyArMzY4LDE3IEBAIHN0cnVjdCB5eV90cmFuc19pbmZvCiAJZmxleF9p
bnQzMl90IHl5X3ZlcmlmeTsKIAlmbGV4X2ludDMyX3QgeXlfbnh0OwogCX07Ci1zdGF0aWMgeXlj
b25zdCBmbGV4X2ludDE2X3QgeXlfYWNjZXB0Wzg0XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2lu
dDE2X3QgeXlfYWNjZXB0Wzg3XSA9CiAgICAgeyAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgIDAs
ICAgIDAsICAgMzgsICAgMzYsICAgMzQsICAgMzUsICAgMzUsICAgMzMsCisgICAgICAgIDAsICAg
IDAsICAgIDAsICAgIDAsICAgMzksICAgMzcsICAgMzQsICAgMzUsICAgMzUsICAgMzMsCiAgICAg
ICAgIDcsICAgMzMsICAgMzMsICAgMzMsICAgMzMsICAgMzMsICAgMzMsICAgMzMsICAgMzMsICAg
IDksCi0gICAgICAgIDksICAgMzMsICAgMzMsICAgMzMsICAgIDgsICAgMzMsICAgMzMsICAgIDMs
ICAgIDUsICAgIDUsCi0gICAgICAgIDQsICAgMzQsICAgMzUsICAgMTksICAgMjcsICAgMjAsICAg
MzAsICAgMjUsICAgMTIsICAgMjMsCi0gICAgICAgMTMsICAgMjQsICAgMTAsICAgIDIsICAgIDEs
ICAgMjYsICAgMTAsICAgIDksICAgMTEsICAgMTEsCi0gICAgICAgMTEsICAgMTEsICAgIDksICAg
MTQsICAgMTYsICAgMTgsICAgMTcsICAgMTUsICAgIDgsICAgMzEsCi0gICAgICAgMjEsICAgMzIs
ICAgMjIsICAgIDMsICAgIDUsICAgIDYsICAgMTEsICAgMTAsICAgMTEsICAgIDEsCi0gICAgICAg
MTAsICAgMTEsICAgIDAsICAgMTAsICAgIDksICAgMjgsICAgMjksICAgIDAsICAgMTAsICAgMTAs
Ci0gICAgICAgMTAsICAgMTAsICAgIDAKKyAgICAgICAgOSwgICAzMywgICAzMywgICAzMywgICAg
OCwgICAzNywgICAzMywgICAzMywgICAgMywgICAgNSwKKyAgICAgICAgNSwgICAgNCwgICAzNCwg
ICAzNSwgICAxOSwgICAyNywgICAyMCwgICAzMCwgICAyNSwgICAxMiwKKyAgICAgICAyMywgICAx
MywgICAyNCwgICAxMCwgICAgMiwgICAgMSwgICAyNiwgICAxMCwgICAgOSwgICAxMSwKKyAgICAg
ICAxMSwgICAxMSwgICAxMSwgICAgOSwgICAxNCwgICAxNiwgICAxOCwgICAxNywgICAxNSwgICAg
OCwKKyAgICAgICAzNiwgICAzNiwgICAzMSwgICAyMSwgICAzMiwgICAyMiwgICAgMywgICAgNSwg
ICAgNiwgICAxMSwKKyAgICAgICAxMCwgICAxMSwgICAgMSwgICAxMCwgICAxMSwgICAgMCwgICAx
MCwgICAgOSwgICAyOCwgICAyOSwKKyAgICAgICAgMCwgICAxMCwgICAxMCwgICAxMCwgICAxMCwg
ICAgMAogICAgIH0gOwogCiBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfZWNbMjU2XSA9
CkBAIC0zOTIsMTEgKzM5MiwxMSBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfZWNb
MjU2XSA9CiAgICAgICAgMTksICAgMjAsICAgIDksICAgIDEsICAgMjEsICAgMjEsICAgMjEsICAg
MjEsICAgMjIsICAgMjEsCiAgICAgICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAgMjMs
ICAgMjMsICAgMjMsICAgMjMsICAgMjMsCiAgICAgICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAg
MjMsICAgMjMsICAgMjMsICAgMjQsICAgMjMsICAgMjMsCi0gICAgICAgIDksICAgIDEsICAgIDks
ICAgMjUsICAgMjMsICAgIDEsICAgMjEsICAgMjEsICAgMjEsICAgMjEsCisgICAgICAgIDksICAg
MjUsICAgIDksICAgMjYsICAgMjMsICAgIDEsICAgMjEsICAgMjEsICAgMjEsICAgMjEsCiAKICAg
ICAgICAyMiwgICAyMSwgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywg
ICAyMywKICAgICAgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAy
MywgICAyMywgICAyNCwKLSAgICAgICAyMywgICAyMywgICAgOSwgICAyNiwgICAgOSwgICAgOSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwKKyAgICAgICAyMywgICAyMywgICAgOSwgICAyNywgICAg
OSwgICAgOSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwKQEAgLTQxMyw4NSArNDEzLDg5IEBAIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9l
Y1syNTZdID0KICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMQogICAgIH0gOwogCi1z
dGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfbWV0YVsyN10gPQorc3RhdGljIHl5Y29uc3Qg
ZmxleF9pbnQzMl90IHl5X21ldGFbMjhdID0KICAgICB7ICAgMCwKICAgICAgICAgMSwgICAgMSwg
ICAgMiwgICAgMiwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMywKICAgICAgICAg
MSwgICAgMSwgICAgNCwgICAgMSwgICAgNSwgICAgNSwgICAgNSwgICAgMSwgICAgMSwgICAgMSwK
LSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgMSwgICAgMQorICAgICAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICAxLCAgICAxLCAgICAxCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0
IGZsZXhfaW50MTZfdCB5eV9iYXNlWzg5XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3Qg
eXlfYmFzZVs5Ml0gPQogICAgIHsgICAwLAotICAgICAgICAwLCAgICAwLCAgIDI0LCAgIDI2LCAg
MTU4LCAgMTU5LCAgMTUwLCAgMTU5LCAgMTQ1LCAgMTI4LAotICAgICAgMTU5LCAgMTEyLCAgIDIz
LCAgMTU5LCAgMTExLCAgIDIxLCAgIDI1LCAgIDMwLCAgIDI5LCAgIDM2LAotICAgICAgIDQ2LCAg
IDM2LCAgMTAwLCAgIDQ1LCAgICAwLCAgIDE2LCAgIDQ3LCAgICAwLCAgMTU5LCAgIDg0LAotICAg
ICAgIDY1LCAgIDczLCAgMTU5LCAgMTU5LCAgMTU5LCAgMTU5LCAgMTU5LCAgMTU5LCAgMTU5LCAg
MTU5LAotICAgICAgMTU5LCAgMTU5LCAgIDYxLCAgMTU5LCAgICAwLCAgMTU5LCAgIDczLCAgIDMy
LCAgIDU2LCAgIDgzLAotICAgICAgIDk1LCAgIDY4LCAgICAwLCAgIDMxLCAgMTU5LCAgMTU5LCAg
MTU5LCAgIDE5LCAgICAwLCAgMTU5LAotICAgICAgMTU5LCAgMTU5LCAgMTU5LCAgICAwLCAgMTU5
LCAgMTU5LCAgIDk4LCAgICAwLCAgMTEwLCAgICAwLAotICAgICAgICAwLCAgMTE3LCAgIDUyLCAg
IDkwLCAgIDgwLCAgMTU5LCAgMTU5LCAgMTAxLCAgIDk3LCAgMTEyLAotICAgICAgMTIwLCAgMTIz
LCAgMTU5LCAgMTQwLCAgIDI4LCAgMTQ1LCAgMTUwLCAgMTUyCisgICAgICAgIDAsICAgIDAsICAg
MjUsICAgMjcsICAxNjIsICAxNjMsICAxNTksICAxNjMsICAxNTIsICAxMzIsCisgICAgICAxNjMs
ICAxMzEsICAgMjQsICAxNjMsICAxMTYsICAgMjIsICAgMjYsICAgMzEsICAgMzAsICAgMzcsCisg
ICAgICAgNDAsICAgNDQsICAxMTUsICAgNDYsICAgIDAsICAgNjQsICAgNTAsICAgMTUsICAgIDAs
ICAxNjMsCisgICAgICAxMjQsICAgOTEsICAgODgsICAxNjMsICAxNjMsICAxNjMsICAxNjMsICAx
NjMsICAxNjMsICAxNjMsCisgICAgICAxNjMsICAxNjMsICAxNjMsICAgNjQsICAxNjMsICAgIDAs
ICAxNjMsICAgNzYsICAgNTQsICAgNTgsCisgICAgICAgNzksICAgOTEsICAgOTEsICAgIDAsICAg
NTYsICAxNjMsICAxNjMsICAxNjMsICAgMzIsICAgIDAsCisgICAgICAxNjMsICAgMzYsICAxNjMs
ICAxNjMsICAxNjMsICAxNjMsICAgIDAsICAxNjMsICAxNjMsICAgOTQsCisgICAgICAgIDAsICAx
MDYsICAgIDAsICAgIDAsICAxMTMsICAgNTUsICAgNzIsICAxMTMsICAxNjMsICAxNjMsCisgICAg
ICAxMTYsICAxMDEsICAxMDgsICAxMjMsICAxMjYsICAxNjMsICAxNDMsICAgMzEsICAxNDgsICAx
NTMsCisgICAgICAxNTUKKwogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3Qg
eXlfZGVmWzg5XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfZGVmWzkyXSA9CiAg
ICAgeyAgIDAsCi0gICAgICAgODMsICAgIDEsICAgODQsICAgODQsICAgODMsICAgODMsICAgODMs
ICAgODMsICAgODMsICAgODMsCi0gICAgICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAg
ODMsICAgODMsICAgODMsICAgODMsICAgODMsCi0gICAgICAgMjAsICAgODMsICAgODMsICAgODMs
ICAgODUsICAgODMsICAgODMsICAgODYsICAgODMsICAgODMsCi0gICAgICAgODMsICAgODMsICAg
ODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsCi0gICAgICAgODMs
ICAgODMsICAgODMsICAgODMsICAgODcsICAgODMsICAgODMsICAgMjAsICAgMjAsICAgNDcsCi0g
ICAgICAgNTAsICAgODgsICAgMjEsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODUs
ICAgODMsCi0gICAgICAgODMsICAgODMsICAgODMsICAgODYsICAgODMsICAgODMsICAgNDMsICAg
NDMsICAgNjcsICAgODcsCi0gICAgICAgNDcsICAgNTAsICAgODMsICAgNTEsICAgODgsICAgODMs
ICAgODMsICAgODMsICAgNjksICAgNzIsCi0gICAgICAgODMsICAgODMsICAgIDAsICAgODMsICAg
ODMsICAgODMsICAgODMsICAgODMKKyAgICAgICA4NiwgICAgMSwgICA4NywgICA4NywgICA4Niwg
ICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwKKyAgICAgICA4NiwgICA4NiwgICA4NiwgICA4
NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwKKyAgICAgICAyMCwgICA4Niwg
ICA4NiwgICA4NiwgICA4OCwgICA4NiwgICA4NiwgICA4NiwgICA4OSwgICA4NiwKKyAgICAgICA4
NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwK
KyAgICAgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA5MCwgICA4NiwgICA4NiwgICAy
MCwgICAyMCwKKyAgICAgICA0OCwgICA1MSwgICA5MSwgICAyMSwgICA4NiwgICA4NiwgICA4Niwg
ICA4NiwgICA4NiwgICA4OCwKKyAgICAgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4
NiwgICA4OSwgICA4NiwgICA4NiwgICA0NCwKKyAgICAgICA0NCwgICA3MCwgICA5MCwgICA0OCwg
ICA1MSwgICA4NiwgICA1MiwgICA5MSwgICA4NiwgICA4NiwKKyAgICAgICA4NiwgICA3MiwgICA3
NSwgICA4NiwgICA4NiwgICAgMCwgICA4NiwgICA4NiwgICA4NiwgICA4NiwKKyAgICAgICA4Ngor
CiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9ueHRbMTg2XSA9Citz
dGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0WzE5MV0gPQogICAgIHsgICAwLAogICAg
ICAgICA2LCAgICA3LCAgICA4LCAgICA5LCAgIDEwLCAgIDExLCAgIDEyLCAgIDEzLCAgIDE0LCAg
IDE1LAogICAgICAgIDE2LCAgIDE3LCAgIDE4LCAgIDE5LCAgIDIwLCAgIDIxLCAgIDIxLCAgIDIy
LCAgIDIzLCAgIDI0LAotICAgICAgIDI1LCAgIDI1LCAgIDI1LCAgIDI1LCAgIDI2LCAgIDI3LCAg
IDI5LCAgIDMwLCAgIDI5LCAgIDMwLAotICAgICAgIDM2LCAgIDM5LCAgIDU5LCAgIDMxLCAgIDYw
LCAgIDMxLCAgIDQxLCAgIDc3LCAgIDQ0LCAgIDQwLAotICAgICAgIDYxLCAgIDM3LCAgIDQ1LCAg
IDQyLCAgIDQzLCAgIDQzLCAgIDQzLCAgIDQ2LCAgIDQ3LCAgIDc2LAotICAgICAgIDQ4LCAgIDQ4
LCAgIDQ5LCAgIDU0LCAgIDU1LCAgIDUwLCAgIDUwLCAgIDUxLCAgIDUwLCAgIDUyLAotICAgICAg
IDUzLCAgIDUzLCAgIDUzLCAgIDU3LCAgIDU4LCAgIDYyLCAgIDgxLCAgIDgxLCAgIDgxLCAgIDUw
LAotICAgICAgIDQ5LCAgIDQ5LCAgIDYzLCAgIDY3LCAgIDMyLCAgIDY4LCAgIDY4LCAgIDY4LCAg
IDY2LCAgIDUwLAotICAgICAgIDUwLCAgIDY3LCAgIDY5LCAgIDY3LCAgIDY3LCAgIDUwLCAgIDY1
LCAgIDcxLCAgIDcxLCAgIDcxLAotICAgICAgIDUwLCAgIDUwLCAgIDUwLCAgIDUwLCAgIDcyLCAg
IDUwLCAgIDUwLCAgIDUwLCAgIDUwLCAgIDUwLAotCi0gICAgICAgODMsICAgODMsICAgNTAsICAg
NTAsICAgNTAsICAgNzMsICAgNzMsICAgODMsICAgODMsICAgNzQsCi0gICAgICAgNzQsICAgNzQs
ICAgNjcsICAgNjcsICAgNjcsICAgODIsICAgODIsICAgODIsICAgNTYsICAgNjcsCi0gICAgICAg
NzgsICAgNzgsICAgODMsICAgODMsICAgNzksICAgNzksICAgNzksICAgNzgsICAgNzgsICAgMzgs
Ci0gICAgICAgMzUsICAgODAsICAgODAsICAgODAsICAgODEsICAgODEsICAgODEsICAgODIsICAg
ODIsICAgODIsCi0gICAgICAgMjgsICAgMjgsICAgMjgsICAgMjgsICAgMjgsICAgNjQsICAgMzQs
ICAgMzMsICAgNjQsICAgNjQsCi0gICAgICAgNzAsICAgMzIsICAgNzAsICAgNzAsICAgNzAsICAg
NzUsICAgNzUsICAgODMsICAgIDUsICAgODMsCi0gICAgICAgODMsICAgODMsICAgODMsICAgODMs
ICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsCi0gICAgICAgODMsICAgODMsICAg
ODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsCi0gICAgICAgODMs
ICAgODMsICAgODMsICAgODMsICAgODMKKyAgICAgICAyNSwgICAyNSwgICAyNSwgICAyNSwgICAy
NiwgICAyNywgICAyOCwgICAzMCwgICAzMSwgICAzMCwKKyAgICAgICAzMSwgICAzNywgICA0MCwg
ICA2NSwgICAzMiwgICA2MCwgICAzMiwgICA0MiwgICA2MSwgICA0NSwKKyAgICAgICA0MSwgICA2
NiwgICAzOCwgICA0NiwgICA0MywgICA0NCwgICA0NCwgICA0NCwgICA0NywgICA0OCwKKyAgICAg
ICA4MCwgICA0OSwgICA0OSwgICA1MCwgICA1NCwgICA1NCwgICA1NCwgICA1MSwgICA1MiwgICA1
MSwKKyAgICAgICA1MywgICA1NSwgICA1NiwgICA1MSwgICA1OCwgICA1OSwgICA2MSwgICA2Miwg
ICA2MywgICA4NCwKKyAgICAgICA4NCwgICA4NCwgICA1MCwgICA1MCwgICA3OSwgICA2NCwgICA3
MCwgICA1MSwgICA3MSwgICA3MSwKKyAgICAgICA3MSwgICA1MSwgICA4NiwgICA4NiwgICA3MCwg
ICA3MiwgICA3MCwgICA3MCwgICA1MSwgICAzMywKKyAgICAgICA3NCwgICA3NCwgICA3NCwgICA1
MSwgICA1MSwgICA1MSwgICA1MSwgICA3NSwgICA1MSwgICA1MSwKKworICAgICAgIDUxLCAgIDc2
LCAgIDc2LCAgIDUxLCAgIDY5LCAgIDc3LCAgIDc3LCAgIDc3LCAgIDcwLCAgIDcwLAorICAgICAg
IDcwLCAgIDg2LCAgIDg2LCAgIDUxLCAgIDUxLCAgIDcwLCAgIDgxLCAgIDgxLCAgIDg2LCAgIDg2
LAorICAgICAgIDgyLCAgIDgyLCAgIDgyLCAgIDgxLCAgIDgxLCAgIDUxLCAgIDY4LCAgIDgzLCAg
IDgzLCAgIDgzLAorICAgICAgIDg1LCAgIDg1LCAgIDg1LCAgIDU3LCAgIDM5LCAgIDUxLCAgIDUx
LCAgIDg0LCAgIDg0LCAgIDg0LAorICAgICAgIDg1LCAgIDg1LCAgIDg1LCAgIDI5LCAgIDI5LCAg
IDI5LCAgIDI5LCAgIDI5LCAgIDY3LCAgIDM2LAorICAgICAgIDM1LCAgIDY3LCAgIDY3LCAgIDcz
LCAgIDM0LCAgIDczLCAgIDczLCAgIDczLCAgIDc4LCAgIDc4LAorICAgICAgIDMzLCAgIDg2LCAg
ICA1LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LAorICAgICAgIDg2
LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LAor
ICAgICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2
LCAgIDg2CiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9jaGtbMTg2
XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzE5MV0gPQogICAgIHsgICAw
LAogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLAogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLAotICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAzLCAgICAzLCAgICA0LCAgICA0LAotICAgICAgIDEzLCAgIDE2LCAgIDg1LCAgICAz
LCAgIDI2LCAgICA0LCAgIDE3LCAgIDU4LCAgIDE5LCAgIDE2LAotICAgICAgIDI2LCAgIDEzLCAg
IDE5LCAgIDE3LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE5LCAgIDIwLCAgIDU0LAotICAgICAgIDIw
LCAgIDIwLCAgIDIwLCAgIDIyLCAgIDIyLCAgIDQ4LCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLAot
ICAgICAgIDIxLCAgIDIxLCAgIDIxLCAgIDI0LCAgIDI0LCAgIDI3LCAgIDczLCAgIDczLCAgIDcz
LCAgIDIxLAotICAgICAgIDQ5LCAgIDQ5LCAgIDI3LCAgIDQzLCAgIDMyLCAgIDQzLCAgIDQzLCAg
IDQzLCAgIDMxLCAgIDQ5LAotICAgICAgIDUyLCAgIDQzLCAgIDQzLCAgIDQzLCAgIDQzLCAgIDQ3
LCAgIDMwLCAgIDQ3LCAgIDQ3LCAgIDQ3LAotICAgICAgIDUyLCAgIDUyLCAgIDc1LCAgIDQ3LCAg
IDQ3LCAgIDQ3LCAgIDQ3LCAgIDUwLCAgIDUwLCAgIDUwLAotCi0gICAgICAgNzQsICAgNzQsICAg
NzUsICAgNzUsICAgNTAsICAgNTEsICAgNTEsICAgNzksICAgNzksICAgNTEsCi0gICAgICAgNTEs
ICAgNTEsICAgNjcsICAgNjcsICAgNjcsICAgNzgsICAgNzgsICAgNzgsICAgMjMsICAgNjcsCi0g
ICAgICAgNjksICAgNjksICAgODAsICAgODAsICAgNjksICAgNjksICAgNjksICAgNzIsICAgNzIs
ICAgMTUsCi0gICAgICAgMTIsICAgNzIsICAgNzIsICAgNzIsICAgODEsICAgODEsICAgODEsICAg
ODIsICAgODIsICAgODIsCi0gICAgICAgODQsICAgODQsICAgODQsICAgODQsICAgODQsICAgODYs
ICAgMTAsICAgIDksICAgODYsICAgODYsCi0gICAgICAgODcsICAgIDcsICAgODcsICAgODcsICAg
ODcsICAgODgsICAgODgsICAgIDUsICAgODMsICAgODMsCi0gICAgICAgODMsICAgODMsICAgODMs
ICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsCi0gICAgICAgODMsICAg
ODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsCi0gICAg
ICAgODMsICAgODMsICAgODMsICAgODMsICAgODMKKyAgICAgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAgMywgICAgNCwKKyAgICAgICAgNCwgICAxMywg
ICAxNiwgICAyOCwgICAgMywgICA4OCwgICAgNCwgICAxNywgICA2MiwgICAxOSwKKyAgICAgICAx
NiwgICAyOCwgICAxMywgICAxOSwgICAxNywgICAxOCwgICAxOCwgICAxOCwgICAxOSwgICAyMCwK
KyAgICAgICA1OSwgICAyMCwgICAyMCwgICAyMCwgICAyMSwgICAyMSwgICAyMSwgICAyMCwgICAy
MCwgICAyMCwKKyAgICAgICAyMCwgICAyMiwgICAyMiwgICAyMSwgICAyNCwgICAyNCwgICAyNiwg
ICAyNiwgICAyNywgICA3NiwKKyAgICAgICA3NiwgICA3NiwgICA1MCwgICA1MCwgICA1NSwgICAy
NywgICA0NCwgICA0OSwgICA0NCwgICA0NCwKKyAgICAgICA0NCwgICA1MCwgICA3NywgICA3Nywg
ICA0NCwgICA0NCwgICA0NCwgICA0NCwgICA0OCwgICAzMywKKyAgICAgICA0OCwgICA0OCwgICA0
OCwgICA1MSwgICA1MSwgICA1MSwgICA0OCwgICA0OCwgICA0OCwgICA0OCwKKworICAgICAgIDUx
LCAgIDUyLCAgIDUyLCAgIDUzLCAgIDMyLCAgIDUyLCAgIDUyLCAgIDUyLCAgIDcwLCAgIDcwLAor
ICAgICAgIDcwLCAgIDgyLCAgIDgyLCAgIDUzLCAgIDUzLCAgIDcwLCAgIDcyLCAgIDcyLCAgIDgz
LCAgIDgzLAorICAgICAgIDcyLCAgIDcyLCAgIDcyLCAgIDc1LCAgIDc1LCAgIDc4LCAgIDMxLCAg
IDc1LCAgIDc1LCAgIDc1LAorICAgICAgIDgxLCAgIDgxLCAgIDgxLCAgIDIzLCAgIDE1LCAgIDc4
LCAgIDc4LCAgIDg0LCAgIDg0LCAgIDg0LAorICAgICAgIDg1LCAgIDg1LCAgIDg1LCAgIDg3LCAg
IDg3LCAgIDg3LCAgIDg3LCAgIDg3LCAgIDg5LCAgIDEyLAorICAgICAgIDEwLCAgIDg5LCAgIDg5
LCAgIDkwLCAgICA5LCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkxLCAgIDkxLAorICAgICAgICA3LCAg
ICA1LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LAorICAg
ICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAg
IDg2LAorICAgICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2
LCAgIDg2LCAgIDg2CiAgICAgfSA7CiAKIC8qIFRoZSBpbnRlbnQgYmVoaW5kIHRoaXMgZGVmaW5p
dGlvbiBpcyB0aGF0IGl0J2xsIGNhdGNoCkBAIC01MDMsNyArNTA3LDcgQEAgc3RhdGljIHl5Y29u
c3QgZmxleF9pbnQxNl90IHl5X2Noa1sxODZdIAogI2RlZmluZSBZWV9SRVNUT1JFX1lZX01PUkVf
T0ZGU0VUCiAvKgogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDIt
MjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC04NDMs
MTMgKzg0NywxMyBAQCB5eV9tYXRjaDoKIAkJCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3Vy
cmVudF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJCQl7CiAJCQkJeXlf
Y3VycmVudF9zdGF0ZSA9IChpbnQpIHl5X2RlZlt5eV9jdXJyZW50X3N0YXRlXTsKLQkJCQlpZiAo
IHl5X2N1cnJlbnRfc3RhdGUgPj0gODQgKQorCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4
NyApCiAJCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJCX0KIAkJ
CXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1
bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJKyt5eV9jcDsKIAkJCX0KLQkJd2hpbGUgKCB5eV9jdXJy
ZW50X3N0YXRlICE9IDgzICk7CisJCXdoaWxlICggeXlfY3VycmVudF9zdGF0ZSAhPSA4NiApOwog
CQl5eV9jcCA9IHl5Zy0+eXlfbGFzdF9hY2NlcHRpbmdfY3BvczsKIAkJeXlfY3VycmVudF9zdGF0
ZSA9IHl5Zy0+eXlfbGFzdF9hY2NlcHRpbmdfc3RhdGU7CiAKQEAgLTExMDYsNiArMTExMCwxMSBA
QCBZWV9SVUxFX1NFVFVQCiB9CiAJWVlfQlJFQUsKIGNhc2UgMzY6CisvKiBydWxlIDM2IGNhbiBt
YXRjaCBlb2wgKi8KK1lZX1JVTEVfU0VUVVAKK3sgKyt5eWxpbmVubzsgfQorCVlZX0JSRUFLCitj
YXNlIDM3OgogWVlfUlVMRV9TRVRVUAogewogICAgIHl5bHZhbC0+YXNzaWduKDEsIHl5dGV4dFsw
XSk7CkBAIC0xMTQxLDcgKzExNTAsNyBAQCBjYXNlIFlZX1NUQVRFX0VPRihDT01NRU5UKToKICAg
ICB5eXRlcm1pbmF0ZSgpOwogfQogCVlZX0JSRUFLCi1jYXNlIDM3OgorY2FzZSAzODoKIFlZX1JV
TEVfU0VUVVAKIEVDSE87CiAJWVlfQlJFQUsKQEAgLTE0MzcsNyArMTQ0Niw3IEBAIHN0YXRpYyBp
bnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCAKIAkJd2hpbGUgKCB5eV9jaGtbeXlfYmFz
ZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9IHl5X2N1cnJlbnRfc3RhdGUgKQogCQkJewog
CQkJeXlfY3VycmVudF9zdGF0ZSA9IChpbnQpIHl5X2RlZlt5eV9jdXJyZW50X3N0YXRlXTsKLQkJ
CWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4NCApCisJCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUg
Pj0gODcgKQogCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJfQog
CQl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAo
dW5zaWduZWQgaW50KSB5eV9jXTsKQEAgLTE0NjYsMTEgKzE0NzUsMTEgQEAgc3RhdGljIGludCB5
eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IAogCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlf
Y3VycmVudF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJewogCQl5eV9j
dXJyZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQlpZiAoIHl5
X2N1cnJlbnRfc3RhdGUgPj0gODQgKQorCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gODcgKQog
CQkJeXlfYyA9IHl5X21ldGFbKHVuc2lnbmVkIGludCkgeXlfY107CiAJCX0KIAl5eV9jdXJyZW50
X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50
KSB5eV9jXTsKLQl5eV9pc19qYW0gPSAoeXlfY3VycmVudF9zdGF0ZSA9PSA4Myk7CisJeXlfaXNf
amFtID0gKHl5X2N1cnJlbnRfc3RhdGUgPT0gODYpOwogCiAJcmV0dXJuIHl5X2lzX2phbSA/IDAg
OiB5eV9jdXJyZW50X3N0YXRlOwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIubAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5sCShy
ZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL1Rva2VuaXplci5sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
LyoKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTQsNyArMTQsNyBA
QCBJRiBZT1UgTU9ESUZZIFRISVMgRklMRSBZT1UgQUxTTyBORUVEIFRPCiAKICV0b3B7CiAvLwot
Ly8gQ29weXJpZ2h0IChjKSAyMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxMyBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0yMjksNiArMjI5LDggQEAgRlJBQ1RJT05B
TF9DT05TVEFOVCAgKHtESUdJVH0qIi4ie0RJR0lUfQogICAgIHJldHVybiAnXG4nOwogfQogCitc
XHtORVdMSU5FfSB7ICsreXlsaW5lbm87IH0KKwogLiB7CiAgICAgeXlsdmFsLT5hc3NpZ24oMSwg
eXl0ZXh0WzBdKTsKICAgICByZXR1cm4gcHA6OlRva2VuOjpQUF9PVEhFUjsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFk
ZXJUaW1pbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwCShyZXZpc2lvbiAx
NTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdGltaW5nL1Jl
c3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAs
OCBAQCB2b2lkIFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nOjp2aXNpdFN5CiB7CiAgICAgaWYg
KElzU2FtcGxlcihub2RlLT5nZXRCYXNpY1R5cGUoKSkpIHsKICAgICAgICAgKyttTnVtRXJyb3Jz
OwotICAgICAgICBtU2luay5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAgICAgICAgbVNpbmsubG9j
YXRpb24obm9kZS0+Z2V0TGluZSgpKTsKLSAgICAgICAgbVNpbmsgPDwgIlNhbXBsZXJzIGFyZSBu
b3QgcGVybWl0dGVkIGluIHZlcnRleCBzaGFkZXJzLlxuIjsKKyAgICAgICAgbVNpbmsubWVzc2Fn
ZShFUHJlZml4RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0TGluZSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICJTYW1wbGVycyBhcmUgbm90IHBlcm1pdHRlZCBpbiB2ZXJ0
ZXggc2hhZGVycyIpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzAwOCkK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEy
IEBACisyMDEzLTA3LTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFwcGxlLmNv
bT4KKworICAgICAgICBVcGRhdGVkIEFOR0xFIHRvIGxhdGVzdCBnaXQgY29tbWl0ICgwNDczNzNh
YTNlYjQwOGJlNjJiZTUyYWRlODQwZmE1ZjExZTcyMzM3KS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODU1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IFJlbmFtZWQgRGV0
ZWN0UmVjdXJzaW9uIHRvIERldGVjdENhbGxEZXB0aC4KKwogMjAxMy0wNy0yMiAgQmVuamFtaW4g
UG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRG8gbm90IGFsbG9jYXRl
IDIgQXRvbWljU3RyaW5nIGp1c3QgdG8gZG8gYSBjb21wYXJpc29uIGluIEhUTUxBbmNob3JFbGVt
ZW50OjpzZXRSZWwoKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE1Mjk3OSkK
KysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yODc5
LDggKzI4NzksOCBAQCBpZiAoV1RGX1VTRV8zRF9HUkFQSElDUykKICAgICAgICAgJHtUSElSRFBB
UlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxk
ZXIuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9kZXBn
cmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9
L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAK
KyAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxE
ZXB0aC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0Rl
dGVjdERpc2NvbnRpbnVpdHkuY3BwCi0gICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3Ny
Yy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9
L0FOR0xFL3NyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcAogICAgICAgICAke1RISVJEUEFS
VFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwCiAgICAgICAgICR7VEhJUkRQ
QVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmNwcAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207296</attachid>
            <date>2013-07-22 17:19:49 -0700</date>
            <delta_ts>2013-07-22 17:45:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118550-20130722171948.patch</filename>
            <type>text/plain</type>
            <size>2566198</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzAxMikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE5NTYgQEAKKzIwMTMtMDctMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgQU5HTEUgdG8gbGF0ZXN0IGdpdCBjb21taXQgKDA0
NzM3M2FhM2ViNDA4YmU2MmJlNTJhZGU4NDBmYTVmMTFlNzIzMzcpLgorICAgICAgICBBZGRlZCBt
aXNzaW5nIEFOR0xFIGZpbGVzIGV4Y2VwdCB1bnVzZWQgdGVzdHMsIGV4dGVuc2lvbnMsIHNhbXBs
ZXMsIGJ1aWxkLCBhbmQgLmdpdCBkaXJlY3Rvcmllcy4KKyAgICAgICAgUmFuIEJpc29uIGFmdGVy
IG1ha2luZyBzb21lIGNoYW5nZXMgdG8gZml4IGNvbXBpbGUgZXJyb3JzIChzZWUgYmVsb3cpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg1NTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFOR0xF
LnBsaXN0OiBVcGRhdGVkIGZyb20gc3ZuIHRvIGdpdC4KKyAgICAgICAgKiBBTkdMRS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBSZW5hbWVkIERldGVjdFJlY3Vyc2lvbiB0byBEZXRlY3RDYWxs
RGVwdGguCisgICAgICAgICogQVVUSE9SUzogQWRkZWQuCisgICAgICAgICogQ09OVFJJQlVUT1JT
OiBBZGRlZC4KKyAgICAgICAgKiBERVBTOiBBZGRlZC4KKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOiBBZGRlZC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogUmVuYW1lZCBEZXRlY3RS
ZWN1cnNpb24gdG8gRGV0ZWN0Q2FsbERlcHRoLgorICAgICAgICAqIExJQ0VOU0U6IEFkZGVkLgor
ICAgICAgICAqIFJFQURNRS5jaHJvbWl1bTogQWRkZWQuCisgICAgICAgICogVGFyZ2V0LnByaTog
UmVuYW1lZCBEZXRlY3RSZWN1cnNpb24gdG8gRGV0ZWN0Q2FsbERlcHRoLgorICAgICAgICAqIGNv
ZGVyZXZpZXcuc2V0dGluZ3M6IEFkZGVkLgorICAgICAgICAqIGluY2x1ZGUvRUdML2VnbGV4dC5o
OgorICAgICAgICAqIGluY2x1ZGUvR0xFUzIvZ2wyZXh0Lmg6CisgICAgICAgICogaW5jbHVkZS9H
TFNMQU5HL1NoYWRlckxhbmcuaDoKKyAgICAgICAgKiBzcmMvQU5HTEUuc2xuOiBBZGRlZC4KKyAg
ICAgICAgKiBzcmMvYnVpbGRfYW5nbGUuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYnVpbGRf
YW5nbGUuZ3lwaTogQWRkZWQuCisgICAgICAgICogc3JjL2NvbW1vbi9SZWZDb3VudE9iamVjdC5j
cHA6CisgICAgICAgICogc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmg6CisgICAgICAgIChBcnJheVNp
emUpOgorICAgICAgICAoU2FmZVJlbGVhc2UpOgorICAgICAgICAqIHNyYy9jb21tb24vZGVidWcu
Y3BwOgorICAgICAgICAqIHNyYy9jb21tb24vZGVidWcuaDoKKyAgICAgICAgKiBzcmMvY29tbW9u
L3N5c3RlbS5oOgorICAgICAgICAqIHNyYy9jb21tb24vdmVyc2lvbi5oOgorICAgICAgICAqIHNy
Yy9jb21waWxlci82NGJpdC1sZXhlci1zYWZldHkucGF0Y2g6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9jb21waWxlci9CYXNlVHlwZXMuaDoKKyAgICAgICAgKGdldFF1YWxpZmllclN0cmluZyk6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL0NvZGVHZW5ITFNMLmNwcDoKKyAgICAgICAgKENvbnN0cnVj
dENvbXBpbGVyKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29tbW9uLmg6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcDoKKyAgICAgICAgKFRDb21waWxlcjo6VENvbXBpbGVy
KToKKyAgICAgICAgKFRDb21waWxlcjo6SW5pdCk6CisgICAgICAgIChUQ29tcGlsZXI6OmNvbXBp
bGUpOgorICAgICAgICAoVENvbXBpbGVyOjpJbml0QnVpbHRJblN5bWJvbFRhYmxlKToKKyAgICAg
ICAgKFRDb21waWxlcjo6ZGV0ZWN0Q2FsbERlcHRoKToKKyAgICAgICAgKFRDb21waWxlcjo6bGlt
aXRFeHByZXNzaW9uQ29tcGxleGl0eSk6CisgICAgICAgIChUQ29tcGlsZXI6OmdldFJlc291cmNl
cyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0NvbnN0YW50VW5pb24uaDoKKyAgICAgICAgKENv
bnN0YW50VW5pb246OkNvbnN0YW50VW5pb24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRl
Y3RDYWxsRGVwdGguY3BwOiBBZGRlZC4KKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RnVuY3Rp
b25Ob2RlOjpGdW5jdGlvbk5vZGUpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlv
bk5vZGU6OmdldE5hbWUpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6
OmFkZENhbGxlZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6ZGV0
ZWN0Q2FsbERlcHRoKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpy
ZXNldCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkRldGVjdENhbGxEZXB0aCk6CisgICAg
ICAgIChEZXRlY3RDYWxsRGVwdGg6On5EZXRlY3RDYWxsRGVwdGgpOgorICAgICAgICAoRGV0ZWN0
Q2FsbERlcHRoOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmNo
ZWNrRXhjZWVkc01heERlcHRoKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6cmVzZXRGdW5j
dGlvbk5vZGVzKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6ZGV0ZWN0Q2FsbERlcHRoRm9y
RnVuY3Rpb24pOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGgpOgor
ICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpmaW5kRnVuY3Rpb25CeU5hbWUpOgorICAgICAgICAq
IHNyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguaDogQWRkZWQuCisgICAgICAgIChEZXRlY3RD
YWxsRGVwdGg6OmdldEluZm9TaW5rKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRGV0ZWN0UmVj
dXJzaW9uLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJz
aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcDoK
KyAgICAgICAgKFREaWFnbm9zdGljczo6d3JpdGVJbmZvKToKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvRm9yTG9vcFVucm9sbC5jcHA6CisgICAgICAgIChGb3JMb29wVW5yb2xsOjpldmFsdWF0ZUlu
dENvbnN0YW50KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwOgorICAgICAg
ICAoVEluZm9TaW5rQmFzZTo6cHJlZml4KToKKyAgICAgICAgKFRJbmZvU2lua0Jhc2U6OmxvY2F0
aW9uKToKKyAgICAgICAgKFRJbmZvU2lua0Jhc2U6Om1lc3NhZ2UpOgorICAgICAgICAqIHNyYy9j
b21waWxlci9JbmZvU2luay5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9Jbml0aWFsaXplLmNw
cDoKKyAgICAgICAgKEluc2VydEJ1aWx0SW5GdW5jdGlvbnMpOgorICAgICAgICAoSWRlbnRpZnlC
dWlsdElucyk6CisgICAgICAgIChJbml0RXh0ZW5zaW9uQmVoYXZpb3IpOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9Jbml0aWFsaXplLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0ludGVybWVk
aWF0ZS5jcHA6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTeW1ib2wpOgorICAgICAgICAo
VEludGVybWVkaWF0ZTo6YWRkQmluYXJ5TWF0aCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjph
ZGRBc3NpZ24pOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkSW5kZXgpOgorICAgICAgICAo
VEludGVybWVkaWF0ZTo6YWRkVW5hcnlNYXRoKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OnNl
dEFnZ3JlZ2F0ZU9wZXJhdG9yKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNp
b24pOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6Z3Jvd0FnZ3JlZ2F0ZSk6CisgICAgICAgIChU
SW50ZXJtZWRpYXRlOjptYWtlQWdncmVnYXRlKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFk
ZFNlbGVjdGlvbik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRDb21tYSk6CisgICAgICAg
IChUSW50ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9uKToKKyAgICAgICAgKFRJbnRlcm1lZGlh
dGU6OmFkZFN3aXp6bGUpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkTG9vcCk6CisgICAg
ICAgIChUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2gpOgorICAgICAgICAoVEludGVybVVuYXJ5Ojpw
cm9tb3RlKToKKyAgICAgICAgKFRJbnRlcm1CaW5hcnk6OnByb21vdGUpOgorICAgICAgICAoQ29t
cGFyZVN0cnVjdCk6CisgICAgICAgIChDb21wYXJlU3RydWN0dXJlKToKKyAgICAgICAgKFRJbnRl
cm1Db25zdGFudFVuaW9uOjpmb2xkKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OnByb21vdGVD
b25zdGFudFVuaW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHA6Cisg
ICAgICAgIChUT3V0cHV0R0xTTDo6dmlzaXRTeW1ib2wpOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9PdXRwdXRHTFNMLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNw
cDoKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6d3JpdGVWYXJpYWJsZVR5cGUpOgorICAgICAg
ICAoVE91dHB1dEdMU0xCYXNlOjp3cml0ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAoVE91dHB1
dEdMU0xCYXNlOjp2aXNpdEJpbmFyeSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnZpc2l0
QWdncmVnYXRlKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6Z2V0VHlwZU5hbWUpOgorICAg
ICAgICAoVE91dHB1dEdMU0xCYXNlOjpzdHJ1Y3REZWNsYXJlZCk6CisgICAgICAgIChUT3V0cHV0
R0xTTEJhc2U6OmRlY2xhcmVTdHJ1Y3QpOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRH
TFNMQmFzZS5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcDoKKyAgICAg
ICAgKHNoOjpPdXRwdXRITFNMOjpPdXRwdXRITFNMKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNM
OjpnZXRVbmlmb3Jtcyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6aGVhZGVyKToKKyAgICAg
ICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdFN5bWJvbCk6CisgICAgICAgIChzaDo6T3V0cHV0SExT
TDo6dmlzaXRCaW5hcnkpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRl
KToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdFNlbGVjdGlvbik6CisgICAgICAgIChz
aDo6T3V0cHV0SExTTDo6dmlzaXRMb29wKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjpoYW5k
bGVFeGNlc3NpdmVMb29wKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjphcmd1bWVudFN0cmlu
Zyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dHlwZVN0cmluZyk6CisgICAgICAgIChzaDo6
T3V0cHV0SExTTDo6dGV4dHVyZVN0cmluZyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6aW5p
dGlhbGl6ZXIpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKToKKyAg
ICAgICAgKHNoOjpPdXRwdXRITFNMOjp3cml0ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAoc2g6
Ok91dHB1dEhMU0w6OmRlY29yYXRlVW5pZm9ybSk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6
ZGVjb3JhdGVGaWVsZCk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6cmVnaXN0ZXJTdHJpbmcp
OgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnNhbXBsZXJSZWdpc3Rlcik6CisgICAgICAgIChz
aDo6T3V0cHV0SExTTDo6dW5pZm9ybVJlZ2lzdGVyKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNM
OjpkZWNsYXJlVW5pZm9ybSk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6Z2xWYXJpYWJsZVR5
cGUpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmdsVmFyaWFibGVQcmVjaXNpb24pOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNMLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L1BhcnNlSGVscGVyLmNwcDoKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmll
bGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4RmllbGRzKToKKyAgICAg
ICAgKFRQYXJzZUNvbnRleHQ6OmVycm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Ondhcm5p
bmcpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YXNzaWduRXJyb3IpOgorICAgICAgICAoVFBh
cnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmJpbmFy
eU9wRXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVjayk6
CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6
cmVzZXJ2ZWRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9y
RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayk6Cisg
ICAgICAgIChUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VD
b250ZXh0OjpzYW1wbGVyRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRl
clNhbXBsZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2Ft
cGxlcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKToKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmFycmF5RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpub25Jbml0
Q29uc3RFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNo
ZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmlzRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpmaW5k
RnVuY3Rpb24pOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVyKToK
KyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0cnVjdG9yKToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0SW4pOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29u
c3RydWN0U3RydWN0KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVjdG9yTm9k
ZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdE1hdHJpeE5vZGUpOgorICAgICAg
ICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUpOgorICAgICAgICAoVFBhcnNlQ29u
dGV4dDo6YWRkQ29uc3RTdHJ1Y3QpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6ZW50ZXJTdHJ1
Y3REZWNsYXJhdGlvbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1Y3ROZXN0aW5nRXJy
b3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRJbmRleEV4cHJlc3Npb24pOgor
ICAgICAgICAqIHNyYy9jb21waWxlci9QYXJzZUhlbHBlci5oOgorICAgICAgICAoVFBhcnNlQ29u
dGV4dDo6VFBhcnNlQ29udGV4dCk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpwcmFnbWEpOgor
ICAgICAgICAqIHNyYy9jb21waWxlci9Qb29sQWxsb2MuY3BwOgorICAgICAgICAoVFBvb2xBbGxv
Y2F0b3I6OmFsbG9jYXRlKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvU2hIYW5kbGUuaDoKKyAg
ICAgICAgKFRTaEhhbmRsZUJhc2U6OmdldEFzVHJhbnNsYXRvckhMU0wpOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9TaGFkZXJMYW5nLmNwcDoKKyAgICAgICAgKFNoSW5pdEJ1aWx0SW5SZXNvdXJj
ZXMpOgorICAgICAgICAoU2hHZXRJbmZvUG9pbnRlcik6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKFRUeXBlOjpUVHlwZSk6CisgICAgICAgIChUVHlw
ZTo6YnVpbGRNYW5nbGVkTmFtZSk6CisgICAgICAgIChUVHlwZTo6Z2V0T2JqZWN0U2l6ZSk6Cisg
ICAgICAgIChUU3RydWN0dXJlOjpjb250YWluc0FycmF5cyk6CisgICAgICAgIChUU3RydWN0dXJl
OjpidWlsZE1hbmdsZWROYW1lKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmNhbGN1bGF0ZU9iamVj
dFNpemUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6Y2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcpOgor
ICAgICAgICAoVFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvRXh0ZW5zaW9uKToKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKFRTeW1ib2w6OnJlbGF0ZVRv
RXh0ZW5zaW9uKToKKyAgICAgICAgKFRTeW1ib2w6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChU
VmFyaWFibGU6OlRWYXJpYWJsZSk6CisgICAgICAgIChUVmFyaWFibGU6OnNldFF1YWxpZmllcik6
CisgICAgICAgIChUVmFyaWFibGU6OnNoYXJlQ29uc3RQb2ludGVyKToKKyAgICAgICAgKFRTeW1i
b2xUYWJsZUxldmVsOjppbnNlcnQpOgorICAgICAgICAoVFN5bWJvbFRhYmxlOjppbnNlcnRDb25z
dEludCk6CisgICAgICAgIChUU3ltYm9sVGFibGU6Omluc2VydEJ1aWx0SW4pOgorICAgICAgICAq
IHNyYy9jb21waWxlci9UcmFuc2xhdG9ySExTTC5jcHA6CisgICAgICAgIChUcmFuc2xhdG9ySExT
TDo6VHJhbnNsYXRvckhMU0wpOgorICAgICAgICAoVHJhbnNsYXRvckhMU0w6OnRyYW5zbGF0ZSk6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmg6CisgICAgICAgIChUcmFu
c2xhdG9ySExTTDo6Z2V0QXNUcmFuc2xhdG9ySExTTCk6CisgICAgICAgIChUcmFuc2xhdG9ySExT
TDo6Z2V0VW5pZm9ybXMpOgorICAgICAgICAqIHNyYy9jb21waWxlci9UeXBlcy5oOgorICAgICAg
ICAoVEZpZWxkOjpURmllbGQpOgorICAgICAgICAoVEZpZWxkOjp0eXBlKToKKyAgICAgICAgKFRG
aWVsZDo6bmFtZSk6CisgICAgICAgIChOZXdQb29sVEZpZWxkTGlzdCk6CisgICAgICAgIChUU3Ry
dWN0dXJlOjpUU3RydWN0dXJlKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6Om5hbWUpOgorICAgICAg
ICAoVFN0cnVjdHVyZTo6ZmllbGRzKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6Om1hbmdsZWROYW1l
KToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6Om9iamVjdFNpemUpOgorICAgICAgICAoVFN0cnVjdHVy
ZTo6ZGVlcGVzdE5lc3RpbmcpOgorICAgICAgICAoVFR5cGU6OlRUeXBlKToKKyAgICAgICAgKFRU
eXBlOjplbGVtZW50UmVnaXN0ZXJDb3VudCk6CisgICAgICAgIChUVHlwZTo6dG90YWxSZWdpc3Rl
ckNvdW50KToKKyAgICAgICAgKFRUeXBlOjpjbGVhckFycmF5bmVzcyk6CisgICAgICAgIChUVHlw
ZTo6Z2V0U3RydWN0KToKKyAgICAgICAgKFRUeXBlOjpzZXRTdHJ1Y3QpOgorICAgICAgICAoVFR5
cGU6OmdldE1hbmdsZWROYW1lKToKKyAgICAgICAgKFRUeXBlOjpnZXREZWVwZXN0U3RydWN0TmVz
dGluZyk6CisgICAgICAgIChUVHlwZTo6aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKToKKyAg
ICAgICAgKFRQdWJsaWNUeXBlOjpzZXRCYXNpYyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1Vu
aWZvcm0uY3BwOiBBZGRlZC4KKyAgICAgICAgKHNoOjpVbmlmb3JtOjpVbmlmb3JtKToKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvVW5pZm9ybS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvVmFyaWFibGVJbmZvLmNwcDoKKyAgICAgICAgKGdldFVzZXJEZWZpbmVkVmFyaWFibGVJbmZv
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy5sOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9nbHNsYW5nLnk6IE1vdmVkIFlZTFRZUEUgZGVmaW5pdGlvbiBpbnRvICV1bmlvbiB0byB3
b3JrIHdpdGggQmlzb24gMi4zLgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX2xleC5j
cHA6CisgICAgICAgICh5eV9nZXRfcHJldmlvdXNfc3RhdGUpOgorICAgICAgICAoeXlfdHJ5X05V
TF90cmFucyk6CisgICAgICAgICh5eWdldF9sbG9jKToKKyAgICAgICAgKHl5c2V0X2xsb2MpOgor
ICAgICAgICAoc3RyaW5nX2lucHV0KToKKyAgICAgICAgKGNoZWNrX3R5cGUpOgorICAgICAgICAo
cmVzZXJ2ZWRfd29yZCk6CisgICAgICAgIChnbHNsYW5nX3NjYW4pOgorICAgICAgICAqIHNyYy9j
b21waWxlci9nbHNsYW5nX3RhYi5jcHA6CisgICAgICAgICh5eWVycm9yKToKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvaW50ZXJt
T3V0LmNwcDoKKyAgICAgICAgKFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0VW5hcnkpOgorICAgICAg
ICAoVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoVE91dHB1dFRy
YXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvaW50
ZXJtZWRpYXRlLmg6CisgICAgICAgIChUSW50ZXJtTm9kZTo6VEludGVybU5vZGUpOgorICAgICAg
ICAoVEludGVybU5vZGU6On5USW50ZXJtTm9kZSk6CisgICAgICAgIChUSW50ZXJtTm9kZTo6Z2V0
TGluZSk6CisgICAgICAgIChUSW50ZXJtTm9kZTo6c2V0TGluZSk6CisgICAgICAgIChUSW50ZXJt
Tm9kZTo6Z2V0QXNMb29wTm9kZSk6CisgICAgICAgIChUSW50ZXJtVHlwZWQ6OnRvdGFsUmVnaXN0
ZXJDb3VudCk6CisgICAgICAgIChUSW50ZXJtVHlwZWQ6OmVsZW1lbnRSZWdpc3RlckNvdW50KToK
KyAgICAgICAgKFRJbnRlcm1UeXBlZDo6Z2V0QXJyYXlTaXplKToKKyAgICAgICAgKFRJbnRlcm1D
b25zdGFudFVuaW9uOjpnZXRJQ29uc3QpOgorICAgICAgICAoVEludGVybUNvbnN0YW50VW5pb246
OmdldEZDb25zdCk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Z2V0QkNvbnN0KToK
KyAgICAgICAgKFRJbnRlcm1BZ2dyZWdhdGU6OlRJbnRlcm1BZ2dyZWdhdGUpOgorICAgICAgICAo
VEludGVybVRyYXZlcnNlcjo6VEludGVybVRyYXZlcnNlcik6CisgICAgICAgIChUSW50ZXJtVHJh
dmVyc2VyOjpnZXRNYXhEZXB0aCk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjppbmNyZW1l
bnREZXB0aCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmg6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwOgorICAgICAgICAoVENvbnN0VHJh
dmVyc2VyOjp2aXNpdFN5bWJvbCk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Qmlu
YXJ5KToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRVbmFyeSk6CisgICAgICAgIChU
Q29uc3RUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNl
cjo6dmlzaXRTZWxlY3Rpb24pOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0
YW50VW5pb24pOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdExvb3ApOgorICAgICAg
ICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdEJyYW5jaCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRl
OjpwYXJzZUNvbnN0VHJlZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci82
NGJpdC10b2tlbml6ZXItc2FmZXR5LnBhdGNoOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHA6CisgICAgICAgICh5eV9nZXRfcHJldmlvdXNf
c3RhdGUpOgorICAgICAgICAoeXlfdHJ5X05VTF90cmFucyk6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIubDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL3ByZXByb2Nlc3Nvci52Y3hwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL3ByZXByb2Nlc3Nvci52Y3hwcm9qLmZpbHRlcnM6IEFkZGVkLgor
ICAgICAgICAqIHNyYy9jb21waWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcu
Y3BwOgorICAgICAgICAoUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmc6OnZpc2l0U3ltYm9sKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9jb21tb24udmN4cHJvajogQWRkZWQu
CisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3JfY29tbW9uLnZjeHByb2ouZmlsdGVy
czogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3JfaGxzbC52Y3hwcm9q
OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9obHNsLnZjeHByb2ou
ZmlsdGVyczogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkVHTC9Db25maWcuY3BwOiBBZGRlZC4K
KyAgICAgICAgKGVnbDo6Q29uZmlnOjpDb25maWcpOgorICAgICAgICAoZWdsOjpDb25maWc6Omdl
dEhhbmRsZSk6CisgICAgICAgIChlZ2w6OlNvcnRDb25maWc6OlNvcnRDb25maWcpOgorICAgICAg
ICAoZWdsOjpTb3J0Q29uZmlnOjpzY2FuRm9yV2FudGVkQ29tcG9uZW50cyk6CisgICAgICAgIChl
Z2w6OlNvcnRDb25maWc6OndhbnRlZENvbXBvbmVudHNTaXplKToKKyAgICAgICAgKGVnbDo6U29y
dENvbmZpZzo6b3BlcmF0b3IoKSk6CisgICAgICAgIChlZ2w6OkNvbmZpZ1NldDo6Q29uZmlnU2V0
KToKKyAgICAgICAgKGVnbDo6Q29uZmlnU2V0OjphZGQpOgorICAgICAgICAoZWdsOjpDb25maWdT
ZXQ6OnNpemUpOgorICAgICAgICAoZWdsOjpDb25maWdTZXQ6OmdldENvbmZpZ3MpOgorICAgICAg
ICAoZWdsOjpDb25maWdTZXQ6OmdldCk6CisgICAgICAgICogc3JjL2xpYkVHTC9Db25maWcuaDog
QWRkZWQuCisgICAgICAgICogc3JjL2xpYkVHTC9EaXNwbGF5LmNwcDogQWRkZWQuCisgICAgICAg
IChlZ2w6OkRpc3BsYXk6OmdldERpc3BsYXkpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpEaXNw
bGF5KToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6fkRpc3BsYXkpOgorICAgICAgICAoZWdsOjpE
aXNwbGF5Ojppbml0aWFsaXplKToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6dGVybWluYXRlKToK
KyAgICAgICAgKGVnbDo6RGlzcGxheTo6Z2V0Q29uZmlncyk6CisgICAgICAgIChlZ2w6OkRpc3Bs
YXk6OmdldENvbmZpZ0F0dHJpYik6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmNyZWF0ZVdpbmRv
d1N1cmZhY2UpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpjcmVhdGVPZmZzY3JlZW5TdXJmYWNl
KToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6Y3JlYXRlQ29udGV4dCk6CisgICAgICAgIChlZ2w6
OkRpc3BsYXk6OnJlc3RvcmVMb3N0RGV2aWNlKToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6ZGVz
dHJveVN1cmZhY2UpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpkZXN0cm95Q29udGV4dCk6Cisg
ICAgICAgIChlZ2w6OkRpc3BsYXk6Om5vdGlmeURldmljZUxvc3QpOgorICAgICAgICAoZWdsOjpE
aXNwbGF5OjpyZWNyZWF0ZVN3YXBDaGFpbnMpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojppc0lu
aXRpYWxpemVkKToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6aXNWYWxpZENvbmZpZyk6CisgICAg
ICAgIChlZ2w6OkRpc3BsYXk6OmlzVmFsaWRDb250ZXh0KToKKyAgICAgICAgKGVnbDo6RGlzcGxh
eTo6aXNWYWxpZFN1cmZhY2UpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpoYXNFeGlzdGluZ1dp
bmRvd1N1cmZhY2UpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojppbml0RXh0ZW5zaW9uU3RyaW5n
KToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6Z2V0RXh0ZW5zaW9uU3RyaW5nKToKKyAgICAgICAg
KGVnbDo6RGlzcGxheTo6aW5pdFZlbmRvclN0cmluZyk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6
OmdldFZlbmRvclN0cmluZyk6CisgICAgICAgICogc3JjL2xpYkVHTC9EaXNwbGF5Lmg6IEFkZGVk
LgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpnZXRSZW5kZXJlcik6CisgICAgICAgICogc3JjL2xp
YkVHTC9TdXJmYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChlZ2w6OlN1cmZhY2U6OlN1cmZhY2Up
OgorICAgICAgICAoZWdsOjpTdXJmYWNlOjp+U3VyZmFjZSk6CisgICAgICAgIChlZ2w6OlN1cmZh
Y2U6OmluaXRpYWxpemUpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpyZWxlYXNlKToKKyAgICAg
ICAgKGVnbDo6U3VyZmFjZTo6cmVzZXRTd2FwQ2hhaW4pOgorICAgICAgICAoZWdsOjpTdXJmYWNl
OjpyZXNpemVTd2FwQ2hhaW4pOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpzd2FwUmVjdCk6Cisg
ICAgICAgIChlZ2w6OlN1cmZhY2U6OmdldFdpbmRvd0hhbmRsZSk6CisgICAgICAgIChlZ2w6OlN1
cmZhY2VXaW5kb3dQcm9jKToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6c3ViY2xhc3NXaW5kb3cp
OgorICAgICAgICAoZWdsOjpTdXJmYWNlOjp1bnN1YmNsYXNzV2luZG93KToKKyAgICAgICAgKGVn
bDo6U3VyZmFjZTo6Y2hlY2tGb3JPdXRPZkRhdGVTd2FwQ2hhaW4pOgorICAgICAgICAoZWdsOjpT
dXJmYWNlOjpzd2FwKToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6cG9zdFN1YkJ1ZmZlcik6Cisg
ICAgICAgIChlZ2w6OlN1cmZhY2U6OmdldFdpZHRoKToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6
Z2V0SGVpZ2h0KToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6aXNQb3N0U3ViQnVmZmVyU3VwcG9y
dGVkKToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6Z2V0U3dhcENoYWluKToKKyAgICAgICAgKGVn
bDo6U3VyZmFjZTo6c2V0U3dhcEludGVydmFsKToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6Z2V0
VGV4dHVyZUZvcm1hdCk6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OmdldFRleHR1cmVUYXJnZXQp
OgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpzZXRCb3VuZFRleHR1cmUpOgorICAgICAgICAoZWds
OjpTdXJmYWNlOjpnZXRCb3VuZFRleHR1cmUpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpnZXRG
b3JtYXQpOgorICAgICAgICAqIHNyYy9saWJFR0wvU3VyZmFjZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBzcmMvbGliRUdML2xpYkVHTC5jcHA6IEFkZGVkLgorICAgICAgICAodmFsaWRhdGVEaXNwbGF5
KToKKyAgICAgICAgKHZhbGlkYXRlQ29uZmlnKToKKyAgICAgICAgKHZhbGlkYXRlQ29udGV4dCk6
CisgICAgICAgICh2YWxpZGF0ZVN1cmZhY2UpOgorICAgICAgICAqIHNyYy9saWJFR0wvbGliRUdM
LmRlZjogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkVHTC9saWJFR0wucmM6IEFkZGVkLgorICAg
ICAgICAqIHNyYy9saWJFR0wvbGliRUdMLnZjeHByb2o6IEFkZGVkLgorICAgICAgICAqIHNyYy9s
aWJFR0wvbGliRUdMLnZjeHByb2ouZmlsdGVyczogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkVH
TC9tYWluLmNwcDogQWRkZWQuCisgICAgICAgIChEbGxNYWluKToKKyAgICAgICAgKGVnbDo6c2V0
Q3VycmVudEVycm9yKToKKyAgICAgICAgKGVnbDo6Z2V0Q3VycmVudEVycm9yKToKKyAgICAgICAg
KGVnbDo6c2V0Q3VycmVudEFQSSk6CisgICAgICAgIChlZ2w6OmdldEN1cnJlbnRBUEkpOgorICAg
ICAgICAoZWdsOjpzZXRDdXJyZW50RGlzcGxheSk6CisgICAgICAgIChlZ2w6OmdldEN1cnJlbnRE
aXNwbGF5KToKKyAgICAgICAgKGVnbDo6c2V0Q3VycmVudERyYXdTdXJmYWNlKToKKyAgICAgICAg
KGVnbDo6Z2V0Q3VycmVudERyYXdTdXJmYWNlKToKKyAgICAgICAgKGVnbDo6c2V0Q3VycmVudFJl
YWRTdXJmYWNlKToKKyAgICAgICAgKGVnbDo6Z2V0Q3VycmVudFJlYWRTdXJmYWNlKToKKyAgICAg
ICAgKGVnbDo6ZXJyb3IpOgorICAgICAgICAqIHNyYy9saWJFR0wvbWFpbi5oOiBBZGRlZC4KKyAg
ICAgICAgKGVnbDo6ZXJyb3IpOgorICAgICAgICAoZWdsOjpzdWNjZXNzKToKKyAgICAgICAgKiBz
cmMvbGliRUdML3Jlc291cmNlLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvQmlu
YXJ5U3RyZWFtLmg6IEFkZGVkLgorICAgICAgICAoZ2w6OkJpbmFyeUlucHV0U3RyZWFtOjpCaW5h
cnlJbnB1dFN0cmVhbSk6CisgICAgICAgIChnbDo6QmluYXJ5SW5wdXRTdHJlYW06OnJlYWQpOgor
ICAgICAgICAoZ2w6OkJpbmFyeUlucHV0U3RyZWFtOjpza2lwKToKKyAgICAgICAgKGdsOjpCaW5h
cnlJbnB1dFN0cmVhbTo6b2Zmc2V0KToKKyAgICAgICAgKGdsOjpCaW5hcnlJbnB1dFN0cmVhbTo6
ZXJyb3IpOgorICAgICAgICAoZ2w6OkJpbmFyeUlucHV0U3RyZWFtOjplbmRPZlN0cmVhbSk6Cisg
ICAgICAgIChnbDo6QmluYXJ5T3V0cHV0U3RyZWFtOjpCaW5hcnlPdXRwdXRTdHJlYW0pOgorICAg
ICAgICAoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbTo6d3JpdGUpOgorICAgICAgICAoZ2w6OkJpbmFy
eU91dHB1dFN0cmVhbTo6bGVuZ3RoKToKKyAgICAgICAgKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW06
OmRhdGEpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvQnVmZmVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChnbDo6QnVmZmVyOjpCdWZmZXIpOgorICAgICAgICAoZ2w6OkJ1ZmZlcjo6fkJ1ZmZlcik6
CisgICAgICAgIChnbDo6QnVmZmVyOjpidWZmZXJEYXRhKToKKyAgICAgICAgKGdsOjpCdWZmZXI6
OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoZ2w6OkJ1ZmZlcjo6Z2V0U3RvcmFnZSk6CisgICAg
ICAgIChnbDo6QnVmZmVyOjpzaXplKToKKyAgICAgICAgKGdsOjpCdWZmZXI6OnVzYWdlKToKKyAg
ICAgICAgKGdsOjpCdWZmZXI6OmdldFN0YXRpY1ZlcnRleEJ1ZmZlcik6CisgICAgICAgIChnbDo6
QnVmZmVyOjpnZXRTdGF0aWNJbmRleEJ1ZmZlcik6CisgICAgICAgIChnbDo6QnVmZmVyOjppbnZh
bGlkYXRlU3RhdGljRGF0YSk6CisgICAgICAgIChnbDo6QnVmZmVyOjpwcm9tb3RlU3RhdGljVXNh
Z2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvQnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvQ29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoZ2w6Om1ha2VTdGF0
aWNTdHJpbmcpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAoZ2w6
OkNvbnRleHQ6On5Db250ZXh0KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjptYWtlQ3VycmVudCk6
CisgICAgICAgIChnbDo6Q29udGV4dDo6bWFya0NvbnRleHRMb3N0KToKKyAgICAgICAgKGdsOjpD
b250ZXh0Ojppc0NvbnRleHRMb3N0KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRDbGVhckNv
bG9yKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRDbGVhckRlcHRoKToKKyAgICAgICAgKGds
OjpDb250ZXh0OjpzZXRDbGVhclN0ZW5jaWwpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldEN1
bGxGYWNlKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc0N1bGxGYWNlRW5hYmxlZCk6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6c2V0Q3VsbE1vZGUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNl
dEZyb250RmFjZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0RGVwdGhUZXN0KToKKyAgICAg
ICAgKGdsOjpDb250ZXh0Ojppc0RlcHRoVGVzdEVuYWJsZWQpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OnNldERlcHRoRnVuYyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0RGVwdGhSYW5nZSk6
CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0QmxlbmQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmlzQmxlbmRFbmFibGVkKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRCbGVuZEZhY3RvcnMp
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldEJsZW5kQ29sb3IpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OnNldEJsZW5kRXF1YXRpb24pOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFN0ZW5j
aWxUZXN0KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc1N0ZW5jaWxUZXN0RW5hYmxlZCk6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6c2V0U3RlbmNpbFBhcmFtcyk6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6c2V0U3RlbmNpbEJhY2tQYXJhbXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFN0
ZW5jaWxXcml0ZW1hc2spOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFN0ZW5jaWxCYWNrV3Jp
dGVtYXNrKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRTdGVuY2lsT3BlcmF0aW9ucyk6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6c2V0U3RlbmNpbEJhY2tPcGVyYXRpb25zKToKKyAgICAgICAg
KGdsOjpDb250ZXh0OjpzZXRQb2x5Z29uT2Zmc2V0RmlsbCk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6aXNQb2x5Z29uT2Zmc2V0RmlsbEVuYWJsZWQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNl
dFBvbHlnb25PZmZzZXRQYXJhbXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFNhbXBsZUFs
cGhhVG9Db3ZlcmFnZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6aXNTYW1wbGVBbHBoYVRvQ292
ZXJhZ2VFbmFibGVkKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRTYW1wbGVDb3ZlcmFnZSk6
CisgICAgICAgIChnbDo6Q29udGV4dDo6aXNTYW1wbGVDb3ZlcmFnZUVuYWJsZWQpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OnNldFNhbXBsZUNvdmVyYWdlUGFyYW1zKToKKyAgICAgICAgKGdsOjpD
b250ZXh0OjpzZXRTY2lzc29yVGVzdCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6aXNTY2lzc29y
VGVzdEVuYWJsZWQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldERpdGhlcik6CisgICAgICAg
IChnbDo6Q29udGV4dDo6aXNEaXRoZXJFbmFibGVkKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpz
ZXRMaW5lV2lkdGgpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldEdlbmVyYXRlTWlwbWFwSGlu
dCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0RnJhZ21lbnRTaGFkZXJEZXJpdmF0aXZlSGlu
dCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0Vmlld3BvcnRQYXJhbXMpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OnNldFNjaXNzb3JQYXJhbXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNl
dENvbG9yTWFzayk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0RGVwdGhNYXNrKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpzZXRBY3RpdmVTYW1wbGVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0
OjpnZXRSZWFkRnJhbWVidWZmZXJIYW5kbGUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldERy
YXdGcmFtZWJ1ZmZlckhhbmRsZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0UmVuZGVyYnVm
ZmVySGFuZGxlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRBcnJheUJ1ZmZlckhhbmRsZSk6
CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0QWN0aXZlUXVlcnkpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OnNldEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGdsOjpDb250ZXh0
OjpnZXRWZXJ0ZXhBdHRyaWJTdGF0ZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0VmVydGV4
QXR0cmliU3RhdGUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFZlcnRleEF0dHJpYlBvaW50
ZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFBhY2tBbGlnbm1lbnQpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OmdldFBhY2tBbGlnbm1lbnQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNl
dFVucGFja0FsaWdubWVudCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0VW5wYWNrQWxpZ25t
ZW50KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRQYWNrUmV2ZXJzZVJvd09yZGVyKToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpnZXRQYWNrUmV2ZXJzZVJvd09yZGVyKToKKyAgICAgICAgKGds
OjpDb250ZXh0OjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmNyZWF0ZVBy
b2dyYW0pOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChn
bDo6Q29udGV4dDo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Y3JlYXRl
UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpjcmVhdGVGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChnbDo6Q29udGV4dDo6Y3JlYXRlRmVuY2UpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OmNyZWF0ZVF1ZXJ5KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpkZWxldGVCdWZmZXIpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChnbDo6Q29udGV4
dDo6ZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6ZGVsZXRlVGV4dHVyZSk6
CisgICAgICAgIChnbDo6Q29udGV4dDo6ZGVsZXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGds
OjpDb250ZXh0OjpkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6ZGVs
ZXRlRmVuY2UpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmRlbGV0ZVF1ZXJ5KToKKyAgICAgICAg
KGdsOjpDb250ZXh0OjpnZXRCdWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFNoYWRl
cik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0UHJvZ3JhbSk6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6Z2V0VGV4dHVyZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0UmVuZGVyYnVmZmVy
KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRSZWFkRnJhbWVidWZmZXIpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OmdldERyYXdGcmFtZWJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6
YmluZEFycmF5QnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpiaW5kRWxlbWVudEFycmF5
QnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpiaW5kVGV4dHVyZTJEKToKKyAgICAgICAg
KGdsOjpDb250ZXh0OjpiaW5kVGV4dHVyZUN1YmVNYXApOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmJpbmRSZWFkRnJhbWVidWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmJpbmREcmF3RnJh
bWVidWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmJpbmRSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OnVzZVByb2dyYW0pOgorICAgICAgICAoZ2w6OkNvbnRleHQ6Omxp
bmtQcm9ncmFtKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRQcm9ncmFtQmluYXJ5KToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpiZWdpblF1ZXJ5KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpl
bmRRdWVyeSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0RnJhbWVidWZmZXJaZXJvKToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpzZXRSZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKGds
OjpDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0RmVu
Y2UpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFF1ZXJ5KToKKyAgICAgICAgKGdsOjpDb250
ZXh0OjpnZXRBcnJheUJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0RWxlbWVudEFy
cmF5QnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRDdXJyZW50UHJvZ3JhbUJpbmFy
eSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0VGV4dHVyZTJEKToKKyAgICAgICAgKGdsOjpD
b250ZXh0OjpnZXRUZXh0dXJlQ3ViZU1hcCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0U2Ft
cGxlclRleHR1cmUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEJvb2xlYW52KToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpnZXRGbG9hdHYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldElu
dGVnZXJ2KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlckluZm8pOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OmFwcGx5UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpD
b250ZXh0OjphcHBseVN0YXRlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjphcHBseVNoYWRlcnMp
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmFwcGx5VGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OnJlYWRQaXhlbHMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmNsZWFyKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpkcmF3
RWxlbWVudHMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN5bmMpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OnJlY29yZEludmFsaWRFbnVtKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpyZWNvcmRJ
bnZhbGlkVmFsdWUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnJlY29yZEludmFsaWRPcGVyYXRp
b24pOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnJlY29yZE91dE9mTWVtb3J5KToKKyAgICAgICAg
KGdsOjpDb250ZXh0OjpyZWNvcmRJbnZhbGlkRnJhbWVidWZmZXJPcGVyYXRpb24pOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmdldEVycm9yKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRSZXNl
dFN0YXR1cyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6aXNSZXNldE5vdGlmaWNhdGlvbkVuYWJs
ZWQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldE1ham9yU2hhZGVyTW9kZWwpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmdldE1heGltdW1Qb2ludFNpemUpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OmdldE1heGltdW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKToKKyAgICAgICAgKGdsOjpD
b250ZXh0OjpnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpn
ZXRNYXhpbXVtUmVuZGVyVGFyZ2V0cyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNF
dmVudFF1ZXJpZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzT2NjbHVzaW9uUXVl
cmllcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNCR1JBVGV4dHVyZXMpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzRFhUMVRleHR1cmVzKToKKyAgICAgICAgKGdsOjpD
b250ZXh0OjpzdXBwb3J0c0RYVDNUZXh0dXJlcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3Vw
cG9ydHNEWFQ1VGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzRmxvYXQz
MlRleHR1cmVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0Zsb2F0MzJMaW5lYXJG
aWx0ZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzRmxvYXQzMlJlbmRlcmFibGVU
ZXh0dXJlcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNGbG9hdDE2VGV4dHVyZXMp
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzRmxvYXQxNkxpbmVhckZpbHRlcik6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNGbG9hdDE2UmVuZGVyYWJsZVRleHR1cmVzKToK
KyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRNYXhpbXVtUmVuZGVyYnVmZmVyRGltZW5zaW9uKToK
KyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRNYXhpbXVtVGV4dHVyZURpbWVuc2lvbik6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6Z2V0TWF4aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpnZXRNYXhpbXVtVGV4dHVyZUxldmVsKToKKyAgICAgICAgKGdsOjpD
b250ZXh0OjpzdXBwb3J0c0x1bWluYW5jZVRleHR1cmVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0
OjpzdXBwb3J0c0x1bWluYW5jZUFscGhhVGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OnN1cHBvcnRzRGVwdGhUZXh0dXJlcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHMz
MmJpdEluZGljZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzTm9uUG93ZXIyVGV4
dHVyZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNJbnN0YW5jaW5nKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5KToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpnZXRUZXh0dXJlTWF4QW5pc290cm9weSk6CisgICAgICAgIChnbDo6
Q29udGV4dDo6Z2V0Q3VycmVudFJlYWRGb3JtYXRUeXBlKToKKyAgICAgICAgKGdsOjpDb250ZXh0
OjpkZXRhY2hCdWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmRldGFjaFRleHR1cmUpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OmRldGFjaEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpD
b250ZXh0OjpkZXRhY2hSZW5kZXJidWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldElu
Y29tcGxldGVUZXh0dXJlKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpza2lwRHJhdyk6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6c2V0VmVydGV4QXR0cmliKToKKyAgICAgICAgKGdsOjpDb250ZXh0
OjpzZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppbml0RXh0
ZW5zaW9uU3RyaW5nKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRFeHRlbnNpb25TdHJpbmcp
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmluaXRSZW5kZXJlclN0cmluZyk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6Z2V0UmVuZGVyZXJTdHJpbmcpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmJs
aXRGcmFtZWJ1ZmZlcik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Db250ZXh0Lmg6IEFkZGVk
LgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYnV0ZTo6VmVydGV4QXR0cmlidXRlKToKKyAgICAg
ICAgKGdsOjpWZXJ0ZXhBdHRyaWJ1dGU6OnR5cGVTaXplKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhB
dHRyaWJ1dGU6OnN0cmlkZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9GZW5jZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoZ2w6OkZlbmNlOjpGZW5jZSk6CisgICAgICAgIChnbDo6RmVuY2U6On5G
ZW5jZSk6CisgICAgICAgIChnbDo6RmVuY2U6OmlzRmVuY2UpOgorICAgICAgICAoZ2w6OkZlbmNl
OjpzZXRGZW5jZSk6CisgICAgICAgIChnbDo6RmVuY2U6OnRlc3RGZW5jZSk6CisgICAgICAgIChn
bDo6RmVuY2U6OmZpbmlzaEZlbmNlKToKKyAgICAgICAgKGdsOjpGZW5jZTo6Z2V0RmVuY2Vpdik6
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9GZW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL0Zsb2F0MTZUb0Zsb2F0MzIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdsOjpmbG9h
dDE2VG9GbG9hdDMyKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0Zsb2F0MTZUb0Zsb2F0MzIu
cHk6IEFkZGVkLgorICAgICAgICAoY29udmVydE1hbnRpc3NhKToKKyAgICAgICAgKGNvbnZlcnRF
eHBvbmVudCk6CisgICAgICAgIChjb252ZXJ0T2Zmc2V0KToKKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL0ZyYW1lYnVmZmVyLmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OkZy
YW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6fkZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6bG9va3VwUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGds
OjpGcmFtZWJ1ZmZlcjo6c2V0Q29sb3JidWZmZXIpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVy
OjpzZXREZXB0aGJ1ZmZlcik6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OnNldFN0ZW5jaWxi
dWZmZXIpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpkZXRhY2hUZXh0dXJlKToKKyAgICAg
ICAgKGdsOjpGcmFtZWJ1ZmZlcjo6ZGV0YWNoUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGdsOjpG
cmFtZWJ1ZmZlcjo6Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1
ZmZlcjo6Z2V0RGVwdGhidWZmZXJTZXJpYWwpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpn
ZXRTdGVuY2lsYnVmZmVyU2VyaWFsKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0Q29s
b3JidWZmZXIpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXREZXB0aGJ1ZmZlcik6Cisg
ICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmdldFN0ZW5jaWxidWZmZXIpOgorICAgICAgICAoZ2w6
OkZyYW1lYnVmZmVyOjpnZXREZXB0aE9yU3RlbmNpbGJ1ZmZlcik6CisgICAgICAgIChnbDo6RnJh
bWVidWZmZXI6OmdldFJlYWRDb2xvcmJ1ZmZlcik6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6
OmdldFJlYWRDb2xvcmJ1ZmZlclR5cGUpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXRG
aXJzdENvbG9yYnVmZmVyKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0Q29sb3JidWZm
ZXJUeXBlKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0RGVwdGhidWZmZXJUeXBlKToK
KyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0U3RlbmNpbGJ1ZmZlclR5cGUpOgorICAgICAg
ICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXRDb2xvcmJ1ZmZlckhhbmRsZSk6CisgICAgICAgIChnbDo6
RnJhbWVidWZmZXI6OmdldERlcHRoYnVmZmVySGFuZGxlKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1
ZmZlcjo6Z2V0U3RlbmNpbGJ1ZmZlckhhbmRsZSk6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6
OmdldERyYXdCdWZmZXJTdGF0ZSk6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OnNldERyYXdC
dWZmZXJTdGF0ZSk6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmlzRW5hYmxlZENvbG9yQXR0
YWNobWVudCk6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6Omhhc0VuYWJsZWRDb2xvckF0dGFj
aG1lbnQpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpoYXNTdGVuY2lsKToKKyAgICAgICAg
KGdsOjpGcmFtZWJ1ZmZlcjo6dXNpbmdFeHRlbmRlZERyYXdCdWZmZXJzKToKKyAgICAgICAgKGds
OjpGcmFtZWJ1ZmZlcjo6Y29tcGxldGVuZXNzKToKKyAgICAgICAgKGdsOjpEZWZhdWx0RnJhbWVi
dWZmZXI6OkRlZmF1bHRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6Omdl
dFNhbXBsZXMpOgorICAgICAgICAoZ2w6OkRlZmF1bHRGcmFtZWJ1ZmZlcjo6Y29tcGxldGVuZXNz
KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0ZyYW1lYnVmZmVyLmg6IEFkZGVkLgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChn
bDo6SGFuZGxlQWxsb2NhdG9yOjpIYW5kbGVBbGxvY2F0b3IpOgorICAgICAgICAoZ2w6OkhhbmRs
ZUFsbG9jYXRvcjo6fkhhbmRsZUFsbG9jYXRvcik6CisgICAgICAgIChnbDo6SGFuZGxlQWxsb2Nh
dG9yOjpzZXRCYXNlSGFuZGxlKToKKyAgICAgICAgKGdsOjpIYW5kbGVBbGxvY2F0b3I6OmFsbG9j
YXRlKToKKyAgICAgICAgKGdsOjpIYW5kbGVBbGxvY2F0b3I6OnJlbGVhc2UpOgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvUHJvZ3JhbS5jcHA6IEFkZGVkLgorICAgICAgICAoZ2w6OkF0dHJpYnV0ZUJpbmRp
bmdzOjpBdHRyaWJ1dGVCaW5kaW5ncyk6CisgICAgICAgIChnbDo6QXR0cmlidXRlQmluZGluZ3M6
On5BdHRyaWJ1dGVCaW5kaW5ncyk6CisgICAgICAgIChnbDo6SW5mb0xvZzo6SW5mb0xvZyk6Cisg
ICAgICAgIChnbDo6SW5mb0xvZzo6fkluZm9Mb2cpOgorICAgICAgICAoZ2w6OkluZm9Mb2c6Omdl
dExlbmd0aCk6CisgICAgICAgIChnbDo6SW5mb0xvZzo6Z2V0TG9nKToKKyAgICAgICAgKGdsOjpJ
bmZvTG9nOjphcHBlbmRTYW5pdGl6ZWQpOgorICAgICAgICAoZ2w6OkluZm9Mb2c6OmFwcGVuZCk6
CisgICAgICAgIChnbDo6SW5mb0xvZzo6cmVzZXQpOgorICAgICAgICAoZ2w6OlByb2dyYW06OlBy
b2dyYW0pOgorICAgICAgICAoZ2w6OlByb2dyYW06On5Qcm9ncmFtKToKKyAgICAgICAgKGdsOjpQ
cm9ncmFtOjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmRldGFjaFNoYWRl
cik6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0QXR0YWNoZWRTaGFkZXJzQ291bnQpOgorICAg
ICAgICAoZ2w6OkF0dHJpYnV0ZUJpbmRpbmdzOjpiaW5kQXR0cmlidXRlTG9jYXRpb24pOgorICAg
ICAgICAoZ2w6OlByb2dyYW06OmJpbmRBdHRyaWJ1dGVMb2NhdGlvbik6CisgICAgICAgIChnbDo6
UHJvZ3JhbTo6bGluayk6CisgICAgICAgIChnbDo6QXR0cmlidXRlQmluZGluZ3M6OmdldEF0dHJp
YnV0ZUJpbmRpbmcpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnVubGluayk6CisgICAgICAgIChn
bDo6UHJvZ3JhbTo6aXNMaW5rZWQpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldFByb2dyYW1C
aW5hcnkpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnNldFByb2dyYW1CaW5hcnkpOgorICAgICAg
ICAoZ2w6OlByb2dyYW06OnJlbGVhc2UpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmFkZFJlZik6
CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0UmVmQ291bnQpOgorICAgICAgICAoZ2w6OlByb2dy
YW06OmdldFByb2dyYW1CaW5hcnlMZW5ndGgpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldElu
Zm9Mb2dMZW5ndGgpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldEluZm9Mb2cpOgorICAgICAg
ICAoZ2w6OlByb2dyYW06OmdldEF0dGFjaGVkU2hhZGVycyk6CisgICAgICAgIChnbDo6UHJvZ3Jh
bTo6Z2V0QWN0aXZlQXR0cmlidXRlKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRBY3RpdmVB
dHRyaWJ1dGVDb3VudCk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0QWN0aXZlQXR0cmlidXRl
TWF4TGVuZ3RoKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAg
ICAgICAgKGdsOjpQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtQ291bnQpOgorICAgICAgICAoZ2w6
OlByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm1NYXhMZW5ndGgpOgorICAgICAgICAoZ2w6OlByb2dy
YW06OmZsYWdGb3JEZWxldGlvbik6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6aXNGbGFnZ2VkRm9y
RGVsZXRpb24pOgorICAgICAgICAoZ2w6OlByb2dyYW06OnZhbGlkYXRlKToKKyAgICAgICAgKGds
OjpQcm9ncmFtOjppc1ZhbGlkYXRlZCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Qcm9ncmFt
Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5jcHA6IEFk
ZGVkLgorICAgICAgICAoZ2w6OnN0cik6CisgICAgICAgIChnbDo6VW5pZm9ybUxvY2F0aW9uOjpV
bmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OlByb2dyYW1CaW5h
cnkpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6On5Qcm9ncmFtQmluYXJ5KToKKyAgICAg
ICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRTZXJpYWwpOgorICAgICAgICAoZ2w6OlByb2dyYW1C
aW5hcnk6Omlzc3VlU2VyaWFsKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRQaXhl
bEV4ZWN1dGFibGUpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldFZlcnRleEV4ZWN1
dGFibGUpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldEdlb21ldHJ5RXhlY3V0YWJs
ZSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2V0QXR0cmlidXRlTG9jYXRpb24pOgor
ICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldFNlbWFudGljSW5kZXgpOgorICAgICAgICAo
Z2w6OlByb2dyYW1CaW5hcnk6OmdldFVzZWRTYW1wbGVyUmFuZ2UpOgorICAgICAgICAoZ2w6OlBy
b2dyYW1CaW5hcnk6OnVzZXNQb2ludFNpemUpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6
OnVzZXNQb2ludFNwcml0ZUVtdWxhdGlvbik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6
dXNlc0dlb21ldHJ5U2hhZGVyKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRTYW1w
bGVyTWFwcGluZyk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2V0U2FtcGxlclRleHR1
cmVUeXBlKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRVbmlmb3JtTG9jYXRpb24p
OgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm0xZnYpOgorICAgICAgICAo
Z2w6OlByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm0yZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW1C
aW5hcnk6OnNldFVuaWZvcm0zZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OnNldFVu
aWZvcm00ZnYpOgorICAgICAgICAoZ2w6OnRyYW5zcG9zZU1hdHJpeCk6CisgICAgICAgIChnbDo6
UHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChnbDo6UHJvZ3Jh
bUJpbmFyeTo6c2V0VW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFy
eTo6c2V0VW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6c2V0
VW5pZm9ybTFpdik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTJpdik6
CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTNpdik6CisgICAgICAgIChn
bDo6UHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTRpdik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJp
bmFyeTo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRVbmlm
b3JtaXYpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmRpcnR5QWxsVW5pZm9ybXMpOgor
ICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmFwcGx5VW5pZm9ybXMpOgorICAgICAgICAoZ2w6
OlByb2dyYW1CaW5hcnk6OnBhY2tWYXJ5aW5ncyk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFy
eTo6bGlua1ZhcnlpbmdzKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5Ojpsb2FkKToKKyAg
ICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpzYXZlKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmlu
YXJ5OjpnZXRMZW5ndGgpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmxpbmspOgorICAg
ICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmxpbmtBdHRyaWJ1dGVzKToKKyAgICAgICAgKGdsOjpQ
cm9ncmFtQmluYXJ5OjpsaW5rVW5pZm9ybXMpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6
OmRlZmluZVVuaWZvcm0pOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdlbmVyYXRlR2Vv
bWV0cnlTaGFkZXJITFNMKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZW5lcmF0ZVBv
aW50U3ByaXRlSExTTCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6ZGVjb3JhdGVBdHRy
aWJ1dGUpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmlzVmFsaWRhdGVkKToKKyAgICAg
ICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRBY3RpdmVBdHRyaWJ1dGUpOgorICAgICAgICAoZ2w6
OlByb2dyYW1CaW5hcnk6OmdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KToKKyAgICAgICAgKGdsOjpQ
cm9ncmFtQmluYXJ5OjpnZXRBY3RpdmVBdHRyaWJ1dGVNYXhMZW5ndGgpOgorICAgICAgICAoZ2w6
OlByb2dyYW1CaW5hcnk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoZ2w6OlByb2dyYW1C
aW5hcnk6OmdldEFjdGl2ZVVuaWZvcm1Db3VudCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFy
eTo6Z2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFy
eTo6dmFsaWRhdGUpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OnZhbGlkYXRlU2FtcGxl
cnMpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OlNhbXBsZXI6OlNhbXBsZXIpOgorICAg
ICAgICAoZ2w6OkF0dHJpYnV0ZVNvcnRlcjo6QXR0cmlidXRlU29ydGVyKToKKyAgICAgICAgKGds
OjpBdHRyaWJ1dGVTb3J0ZXI6Om9wZXJhdG9yKCkpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5h
cnk6OnNvcnRBdHRyaWJ1dGVzQnlMYXlvdXQpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUHJv
Z3JhbUJpbmFyeS5oOiBBZGRlZC4KKyAgICAgICAgKGdsOjpVbmlmb3JtTG9jYXRpb246OlVuaWZv
cm1Mb2NhdGlvbik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9RdWVyeS5jcHA6IEFkZGVkLgor
ICAgICAgICAoZ2w6OlF1ZXJ5OjpRdWVyeSk6CisgICAgICAgIChnbDo6UXVlcnk6On5RdWVyeSk6
CisgICAgICAgIChnbDo6UXVlcnk6OmJlZ2luKToKKyAgICAgICAgKGdsOjpRdWVyeTo6ZW5kKToK
KyAgICAgICAgKGdsOjpRdWVyeTo6Z2V0UmVzdWx0KToKKyAgICAgICAgKGdsOjpRdWVyeTo6aXNS
ZXN1bHRBdmFpbGFibGUpOgorICAgICAgICAoZ2w6OlF1ZXJ5OjpnZXRUeXBlKToKKyAgICAgICAg
KiBzcmMvbGliR0xFU3YyL1F1ZXJ5Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
UmVuZGVyYnVmZmVyLmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVySW50ZXJm
YWNlOjpSZW5kZXJidWZmZXJJbnRlcmZhY2UpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcklu
dGVyZmFjZTo6YWRkUHJveHlSZWYpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVyZmFj
ZTo6cmVsZWFzZVByb3h5KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJJbnRlcmZhY2U6Omdl
dFJlZFNpemUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVyZmFjZTo6Z2V0R3JlZW5T
aXplKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldEJsdWVTaXplKToK
KyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldEFscGhhU2l6ZSk6CisgICAg
ICAgIChnbDo6UmVuZGVyYnVmZmVySW50ZXJmYWNlOjpnZXREZXB0aFNpemUpOgorICAgICAgICAo
Z2w6OlJlbmRlcmJ1ZmZlckludGVyZmFjZTo6Z2V0U3RlbmNpbFNpemUpOgorICAgICAgICAoZ2w6
OlJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6UmVuZGVyYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAg
KGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6On5SZW5kZXJidWZmZXJUZXh0dXJlMkQpOgorICAg
ICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6YWRkUHJveHlSZWYpOgorICAgICAgICAo
Z2w6OlJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6cmVsZWFzZVByb3h5KToKKyAgICAgICAgKGdsOjpS
ZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChnbDo6UmVu
ZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXREZXB0aFN0ZW5jaWwpOgorICAgICAgICAoZ2w6OlJlbmRl
cmJ1ZmZlclRleHR1cmUyRDo6Z2V0V2lkdGgpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRl
eHR1cmUyRDo6Z2V0SGVpZ2h0KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6
OmdldEludGVybmFsRm9ybWF0KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6
OmdldEFjdHVhbEZvcm1hdCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpn
ZXRTYW1wbGVzKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldFNlcmlh
bCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6OlJlbmRlcmJ1ZmZl
clRleHR1cmVDdWJlTWFwKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1h
cDo6flJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZm
ZXJUZXh0dXJlQ3ViZU1hcDo6YWRkUHJveHlSZWYpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZl
clRleHR1cmVDdWJlTWFwOjpyZWxlYXNlUHJveHkpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZl
clRleHR1cmVDdWJlTWFwOjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1
ZmZlclRleHR1cmVDdWJlTWFwOjpnZXREZXB0aFN0ZW5jaWwpOgorICAgICAgICAoZ2w6OlJlbmRl
cmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRXaWR0aCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVm
ZmVyVGV4dHVyZUN1YmVNYXA6OmdldEhlaWdodCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVy
VGV4dHVyZUN1YmVNYXA6OmdldEludGVybmFsRm9ybWF0KToKKyAgICAgICAgKGdsOjpSZW5kZXJi
dWZmZXJUZXh0dXJlQ3ViZU1hcDo6Z2V0QWN0dWFsRm9ybWF0KToKKyAgICAgICAgKGdsOjpSZW5k
ZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6Z2V0U2FtcGxlcyk6CisgICAgICAgIChnbDo6UmVuZGVy
YnVmZmVyVGV4dHVyZUN1YmVNYXA6OmdldFNlcmlhbCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVm
ZmVyOjpSZW5kZXJidWZmZXIpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6flJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjphZGRSZWYpOgorICAgICAgICAoZ2w6
OlJlbmRlcmJ1ZmZlcjo6cmVsZWFzZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRS
ZW5kZXJUYXJnZXQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0RGVwdGhTdGVuY2ls
KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldFdpZHRoKToKKyAgICAgICAgKGdsOjpS
ZW5kZXJidWZmZXI6OmdldEhlaWdodCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRJ
bnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRBY3R1YWxGb3Jt
YXQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0UmVkU2l6ZSk6CisgICAgICAgIChn
bDo6UmVuZGVyYnVmZmVyOjpnZXRHcmVlblNpemUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZl
cjo6Z2V0Qmx1ZVNpemUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0QWxwaGFTaXpl
KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldERlcHRoU2l6ZSk6CisgICAgICAgIChn
bDo6UmVuZGVyYnVmZmVyOjpnZXRTdGVuY2lsU2l6ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVm
ZmVyOjpnZXRTYW1wbGVzKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldFNlcmlhbCk6
CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpzZXRTdG9yYWdlKToKKyAgICAgICAgKGdsOjpS
ZW5kZXJidWZmZXJTdG9yYWdlOjpSZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKGdsOjpS
ZW5kZXJidWZmZXJTdG9yYWdlOjp+UmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChnbDo6
UmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpSZW5k
ZXJidWZmZXJTdG9yYWdlOjpnZXREZXB0aFN0ZW5jaWwpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1
ZmZlclN0b3JhZ2U6OmdldFdpZHRoKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJTdG9yYWdl
OjpnZXRIZWlnaHQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldEludGVy
bmFsRm9ybWF0KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRBY3R1YWxG
b3JtYXQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldFNhbXBsZXMpOgor
ICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldFNlcmlhbCk6CisgICAgICAgIChn
bDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNzdWVTZXJpYWwpOgorICAgICAgICAoZ2w6OlJlbmRl
cmJ1ZmZlclN0b3JhZ2U6Omlzc3VlQ3ViZVNlcmlhbHMpOgorICAgICAgICAoZ2w6OkNvbG9yYnVm
ZmVyOjpDb2xvcmJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29sb3JidWZmZXI6On5Db2xvcmJ1ZmZl
cik6CisgICAgICAgIChnbDo6Q29sb3JidWZmZXI6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAg
IChnbDo6RGVwdGhTdGVuY2lsYnVmZmVyOjpEZXB0aFN0ZW5jaWxidWZmZXIpOgorICAgICAgICAo
Z2w6OkRlcHRoU3RlbmNpbGJ1ZmZlcjo6fkRlcHRoU3RlbmNpbGJ1ZmZlcik6CisgICAgICAgIChn
bDo6RGVwdGhTdGVuY2lsYnVmZmVyOjpnZXREZXB0aFN0ZW5jaWwpOgorICAgICAgICAoZ2w6OkRl
cHRoYnVmZmVyOjpEZXB0aGJ1ZmZlcik6CisgICAgICAgIChnbDo6RGVwdGhidWZmZXI6On5EZXB0
aGJ1ZmZlcik6CisgICAgICAgIChnbDo6U3RlbmNpbGJ1ZmZlcjo6U3RlbmNpbGJ1ZmZlcik6Cisg
ICAgICAgIChnbDo6U3RlbmNpbGJ1ZmZlcjo6flN0ZW5jaWxidWZmZXIpOgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAoZ2w6OlJlbmRlcmJ1
ZmZlckludGVyZmFjZTo6flJlbmRlcmJ1ZmZlckludGVyZmFjZSk6CisgICAgICAgICogc3JjL2xp
YkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdsOjpSZXNvdXJj
ZU1hbmFnZXI6OlJlc291cmNlTWFuYWdlcik6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2Vy
Ojp+UmVzb3VyY2VNYW5hZ2VyKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmFkZFJl
Zik6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpyZWxlYXNlKToKKyAgICAgICAgKGds
OjpSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChnbDo6UmVzb3VyY2VN
YW5hZ2VyOjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6Y3Jl
YXRlUHJvZ3JhbSk6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVUZXh0dXJl
KToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6Cisg
ICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVCdWZmZXIpOgorICAgICAgICAoZ2w6
OlJlc291cmNlTWFuYWdlcjo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1h
bmFnZXI6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6ZGVs
ZXRlVGV4dHVyZSk6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVSZW5kZXJi
dWZmZXIpOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6Z2V0QnVmZmVyKToKKyAgICAg
ICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmdldFNoYWRlcik6CisgICAgICAgIChnbDo6UmVzb3Vy
Y2VNYW5hZ2VyOjpnZXRUZXh0dXJlKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6Omdl
dFByb2dyYW0pOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6Z2V0UmVuZGVyYnVmZmVy
KToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OnNldFJlbmRlcmJ1ZmZlcik6CisgICAg
ICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpjaGVja0J1ZmZlckFsbG9jYXRpb24pOgorICAgICAg
ICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6Y2hlY2tUZXh0dXJlQWxsb2NhdGlvbik6CisgICAgICAg
IChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpjaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24pOgorICAg
ICAgICAqIHNyYy9saWJHTEVTdjIvUmVzb3VyY2VNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvU2hhZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6U2hhZGVyOjpT
aGFkZXIpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6flNoYWRlcik6CisgICAgICAgIChnbDo6U2hh
ZGVyOjpnZXRIYW5kbGUpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6c2V0U291cmNlKToKKyAgICAg
ICAgKGdsOjpTaGFkZXI6OmdldEluZm9Mb2dMZW5ndGgpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6
Z2V0SW5mb0xvZyk6CisgICAgICAgIChnbDo6U2hhZGVyOjpnZXRTb3VyY2VMZW5ndGgpOgorICAg
ICAgICAoZ2w6OlNoYWRlcjo6Z2V0VHJhbnNsYXRlZFNvdXJjZUxlbmd0aCk6CisgICAgICAgIChn
bDo6U2hhZGVyOjpnZXRTb3VyY2VJbXBsKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmdldFNvdXJj
ZSk6CisgICAgICAgIChnbDo6U2hhZGVyOjpnZXRUcmFuc2xhdGVkU291cmNlKToKKyAgICAgICAg
KGdsOjpTaGFkZXI6OmdldFVuaWZvcm1zKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmlzQ29tcGls
ZWQpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6Z2V0SExTTCk6CisgICAgICAgIChnbDo6U2hhZGVy
OjphZGRSZWYpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6cmVsZWFzZSk6CisgICAgICAgIChnbDo6
U2hhZGVyOjpnZXRSZWZDb3VudCk6CisgICAgICAgIChnbDo6U2hhZGVyOjppc0ZsYWdnZWRGb3JE
ZWxldGlvbik6CisgICAgICAgIChnbDo6U2hhZGVyOjpmbGFnRm9yRGVsZXRpb24pOgorICAgICAg
ICAoZ2w6OlNoYWRlcjo6aW5pdGlhbGl6ZUNvbXBpbGVyKToKKyAgICAgICAgKGdsOjpTaGFkZXI6
OnJlbGVhc2VDb21waWxlcik6CisgICAgICAgIChnbDo6U2hhZGVyOjpwYXJzZVZhcnlpbmdzKToK
KyAgICAgICAgKGdsOjpTaGFkZXI6OnJlc2V0VmFyeWluZ3NSZWdpc3RlckFzc2lnbm1lbnQpOgor
ICAgICAgICAoZ2w6OlNoYWRlcjo6dW5jb21waWxlKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmNv
bXBpbGVUb0hMU0wpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6cGFyc2VUeXBlKToKKyAgICAgICAg
KGdsOjpTaGFkZXI6OmNvbXBhcmVWYXJ5aW5nKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhTaGFkZXI6
OlZlcnRleFNoYWRlcik6CisgICAgICAgIChnbDo6VmVydGV4U2hhZGVyOjp+VmVydGV4U2hhZGVy
KToKKyAgICAgICAgKGdsOjpWZXJ0ZXhTaGFkZXI6OmdldFR5cGUpOgorICAgICAgICAoZ2w6OlZl
cnRleFNoYWRlcjo6dW5jb21waWxlKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhTaGFkZXI6OmNvbXBp
bGUpOgorICAgICAgICAoZ2w6OlZlcnRleFNoYWRlcjo6Z2V0U2VtYW50aWNJbmRleCk6CisgICAg
ICAgIChnbDo6VmVydGV4U2hhZGVyOjpwYXJzZUF0dHJpYnV0ZXMpOgorICAgICAgICAoZ2w6OkZy
YWdtZW50U2hhZGVyOjpGcmFnbWVudFNoYWRlcik6CisgICAgICAgIChnbDo6RnJhZ21lbnRTaGFk
ZXI6On5GcmFnbWVudFNoYWRlcik6CisgICAgICAgIChnbDo6RnJhZ21lbnRTaGFkZXI6OmdldFR5
cGUpOgorICAgICAgICAoZ2w6OkZyYWdtZW50U2hhZGVyOjpjb21waWxlKToKKyAgICAgICAgKiBz
cmMvbGliR0xFU3YyL1NoYWRlci5oOiBBZGRlZC4KKyAgICAgICAgKGdsOjpWYXJ5aW5nOjpWYXJ5
aW5nKToKKyAgICAgICAgKGdsOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZSk6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9UZXh0dXJlLmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6VGV4dHVyZTo6VGV4
dHVyZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6flRleHR1cmUpOgorICAgICAgICAoZ2w6OlRl
eHR1cmU6OnNldE1pbkZpbHRlcik6CisgICAgICAgIChnbDo6VGV4dHVyZTo6c2V0TWFnRmlsdGVy
KToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpzZXRXcmFwUyk6CisgICAgICAgIChnbDo6VGV4dHVy
ZTo6c2V0V3JhcFQpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OnNldE1heEFuaXNvdHJvcHkpOgor
ICAgICAgICAoZ2w6OlRleHR1cmU6OnNldFVzYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpn
ZXRNaW5GaWx0ZXIpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmdldE1hZ0ZpbHRlcik6CisgICAg
ICAgIChnbDo6VGV4dHVyZTo6Z2V0V3JhcFMpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmdldFdy
YXBUKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpnZXRNYXhBbmlzb3Ryb3B5KToKKyAgICAgICAg
KGdsOjpUZXh0dXJlOjpnZXRMb2RPZmZzZXQpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmdldFNh
bXBsZXJTdGF0ZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6Z2V0VXNhZ2UpOgorICAgICAgICAo
Z2w6OlRleHR1cmU6OmlzTWlwbWFwRmlsdGVyZWQpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OnNl
dEltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpzZXRDb21wcmVzc2VkSW1hZ2UpOgorICAg
ICAgICAoZ2w6OlRleHR1cmU6OnN1YkltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpzdWJJ
bWFnZUNvbXByZXNzZWQpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmdldE5hdGl2ZVRleHR1cmUp
OgorICAgICAgICAoZ2w6OlRleHR1cmU6Omhhc0RpcnR5SW1hZ2VzKToKKyAgICAgICAgKGdsOjpU
ZXh0dXJlOjpyZXNldERpcnR5KToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpnZXRUZXh0dXJlU2Vy
aWFsKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpnZXRSZW5kZXJUYXJnZXRTZXJpYWwpOgorICAg
ICAgICAoZ2w6OlRleHR1cmU6OmlzSW1tdXRhYmxlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpj
cmVhdGlvbkxldmVscyk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpUZXh0dXJlMkQpOgorICAg
ICAgICAoZ2w6OlRleHR1cmUyRDo6flRleHR1cmUyRCk6CisgICAgICAgIChnbDo6VGV4dHVyZTJE
OjphZGRQcm94eVJlZik6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpyZWxlYXNlUHJveHkpOgor
ICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Z2V0VGFyZ2V0KToKKyAgICAgICAgKGdsOjpUZXh0dXJl
MkQ6OmdldFdpZHRoKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdldEhlaWdodCk6CisgICAg
ICAgIChnbDo6VGV4dHVyZTJEOjpnZXRJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChnbDo6VGV4
dHVyZTJEOjpnZXRBY3R1YWxGb3JtYXQpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6cmVkZWZp
bmVJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpzZXRJbWFnZSk6CisgICAgICAgIChn
bDo6VGV4dHVyZTJEOjpiaW5kVGV4SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6cmVs
ZWFzZVRleEltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnNldENvbXByZXNzZWRJbWFn
ZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpjb21taXRSZWN0KToKKyAgICAgICAgKGdsOjpU
ZXh0dXJlMkQ6OnN1YkltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnN1YkltYWdlQ29t
cHJlc3NlZCk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpjb3B5SW1hZ2UpOgorICAgICAgICAo
Z2w6OlRleHR1cmUyRDo6Y29weVN1YkltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnN0
b3JhZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6aXNTYW1wbGVyQ29tcGxldGUpOgorICAg
ICAgICAoZ2w6OlRleHR1cmUyRDo6aXNNaXBtYXBDb21wbGV0ZSk6CisgICAgICAgIChnbDo6VGV4
dHVyZTJEOjppc0NvbXByZXNzZWQpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6aXNEZXB0aCk6
CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKGdsOjpU
ZXh0dXJlMkQ6OnVwZGF0ZVRleHR1cmUpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Y29udmVy
dFRvUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdlbmVyYXRlTWlwbWFw
cyk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpnZXRSZW5kZXJidWZmZXIpOgorICAgICAgICAo
Z2w6OlRleHR1cmUyRDo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6
OmdldERlcHRoU3RlbmNpbCk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpsZXZlbENvdW50KToK
KyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdldFN0b3JhZ2UpOgorICAgICAgICAoZ2w6OlRleHR1
cmVDdWJlTWFwOjpUZXh0dXJlQ3ViZU1hcCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6
On5UZXh0dXJlQ3ViZU1hcCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmFkZFByb3h5
UmVmKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6cmVsZWFzZVByb3h5KToKKyAgICAg
ICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Z2V0VGFyZ2V0KToKKyAgICAgICAgKGdsOjpUZXh0dXJl
Q3ViZU1hcDo6Z2V0V2lkdGgpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpnZXRIZWln
aHQpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpnZXRJbnRlcm5hbEZvcm1hdCk6Cisg
ICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmdldEFjdHVhbEZvcm1hdCk6CisgICAgICAgIChn
bDo6VGV4dHVyZUN1YmVNYXA6OnNldEltYWdlUG9zWCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1
YmVNYXA6OnNldEltYWdlTmVnWCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnNldElt
YWdlUG9zWSk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnNldEltYWdlTmVnWSk6Cisg
ICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnNldEltYWdlUG9zWik6CisgICAgICAgIChnbDo6
VGV4dHVyZUN1YmVNYXA6OnNldEltYWdlTmVnWik6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVN
YXA6OnNldENvbXByZXNzZWRJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmNv
bW1pdFJlY3QpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpzdWJJbWFnZSk6CisgICAg
ICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnN1YkltYWdlQ29tcHJlc3NlZCk6CisgICAgICAgIChn
bDo6VGV4dHVyZUN1YmVNYXA6OmlzU2FtcGxlckNvbXBsZXRlKToKKyAgICAgICAgKGdsOjpUZXh0
dXJlQ3ViZU1hcDo6aXNDdWJlQ29tcGxldGUpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFw
Ojppc01pcG1hcEN1YmVDb21wbGV0ZSk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6Omlz
Q29tcHJlc3NlZCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmNyZWF0ZVRleHR1cmUp
OgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjp1cGRhdGVUZXh0dXJlKToKKyAgICAgICAg
KGdsOjpUZXh0dXJlQ3ViZU1hcDo6Y29udmVydFRvUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGds
OjpUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFw
OjpmYWNlSW5kZXgpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpyZWRlZmluZUltYWdl
KToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Y29weUltYWdlKToKKyAgICAgICAgKGds
OjpUZXh0dXJlQ3ViZU1hcDo6Y29weVN1YkltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3Vi
ZU1hcDo6c3RvcmFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmdlbmVyYXRlTWlw
bWFwcyk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmdldFJlbmRlcmJ1ZmZlcik6Cisg
ICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChn
bDo6VGV4dHVyZUN1YmVNYXA6OmxldmVsQ291bnQpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJl
TWFwOjpnZXRTdG9yYWdlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1RleHR1cmUuaDogQWRk
ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Vbmlmb3JtLmNwcDogQWRkZWQuCisgICAgICAg
IChnbDo6VW5pZm9ybTo6VW5pZm9ybSk6CisgICAgICAgIChnbDo6VW5pZm9ybTo6flVuaWZvcm0p
OgorICAgICAgICAoZ2w6OlVuaWZvcm06OmlzQXJyYXkpOgorICAgICAgICAoZ2w6OlVuaWZvcm06
OmVsZW1lbnRDb3VudCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Vbmlmb3JtLmg6IEFkZGVk
LgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvYW5nbGV0eXBlcy5oOiBBZGRlZC4KKyAgICAgICAg
KiBzcmMvbGliR0xFU3YyL2NvbnN0YW50cy5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL2xpYkdMRVN2Mi5jcHA6IEFkZGVkLgorICAgICAgICAodmFsaWRJbWFnZVNpemUpOgorICAg
ICAgICAoY2hlY2tUZXh0dXJlRm9ybWF0VHlwZSk6CisgICAgICAgICh2YWxpZGF0ZVN1YkltYWdl
UGFyYW1zMkQpOgorICAgICAgICAodmFsaWRhdGVTdWJJbWFnZVBhcmFtc0N1YmUpOgorICAgICAg
ICAodmFsaWRSZWFkRm9ybWF0VHlwZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9saWJHTEVT
djIuZGVmOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYzogQWRk
ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIudmN4cHJvajogQWRkZWQuCisg
ICAgICAgICogc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIudmN4cHJvai5maWx0ZXJzOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL21haW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKERsbE1h
aW4pOgorICAgICAgICAoZ2w6Om1ha2VDdXJyZW50KToKKyAgICAgICAgKGdsOjpnZXRDb250ZXh0
KToKKyAgICAgICAgKGdsOjpnZXROb25Mb3N0Q29udGV4dCk6CisgICAgICAgIChnbDo6Z2V0RGlz
cGxheSk6CisgICAgICAgIChnbDo6ZXJyb3IpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvbWFp
bi5oOiBBZGRlZC4KKyAgICAgICAgKGdsOjplcnJvcik6CisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9tYXRodXRpbC5oOiBBZGRlZC4KKyAgICAgICAgKGdsOjpWZWN0b3I0OjpWZWN0b3I0KToKKyAg
ICAgICAgKGdsOjppc1BvdzIpOgorICAgICAgICAoZ2w6OmxvZzIpOgorICAgICAgICAoZ2w6OmNl
aWxQb3cyKToKKyAgICAgICAgKGdsOjpjbGFtcCk6CisgICAgICAgIChnbDo6Y2xhbXAwMSk6Cisg
ICAgICAgIChnbDo6dW5vcm0pOgorICAgICAgICAoZ2w6OnN1cHBvcnRzU1NFMik6CisgICAgICAg
IChnbDo6ZmxvYXQzMlRvRmxvYXQxNik6CisgICAgICAgIChyeDo6UmFuZ2U6OlJhbmdlKToKKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmNwcDogQWRkZWQuCisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9wcmVjb21waWxlZC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL3JlbmRlcmVyOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0Js
aXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpCbGl0OjpCbGl0KToKKyAgICAgICAgKHJ4OjpC
bGl0Ojp+QmxpdCk6CisgICAgICAgIChyeDo6QmxpdDo6aW5pdEdlb21ldHJ5KToKKyAgICAgICAg
KHJ4OjpCbGl0OjpzZXRTaGFkZXIpOgorICAgICAgICAocng6OkJsaXQ6OnNldFZlcnRleFNoYWRl
cik6CisgICAgICAgIChyeDo6QmxpdDo6c2V0UGl4ZWxTaGFkZXIpOgorICAgICAgICAocng6OkJs
aXQ6OmdldFN1cmZhY2VSZWN0KToKKyAgICAgICAgKHJ4OjpCbGl0Ojpib3hGaWx0ZXIpOgorICAg
ICAgICAocng6OkJsaXQ6OmNvcHkpOgorICAgICAgICAocng6OkJsaXQ6OmZvcm1hdENvbnZlcnQp
OgorICAgICAgICAocng6OkJsaXQ6OnNldEZvcm1hdENvbnZlcnRTaGFkZXJzKToKKyAgICAgICAg
KHJ4OjpCbGl0Ojpjb3B5U3VyZmFjZVRvVGV4dHVyZSk6CisgICAgICAgIChyeDo6QmxpdDo6c2V0
Vmlld3BvcnQpOgorICAgICAgICAocng6OkJsaXQ6OnNldENvbW1vbkJsaXRTdGF0ZSk6CisgICAg
ICAgIChyeDo6QmxpdDo6cmVuZGVyKToKKyAgICAgICAgKHJ4OjpCbGl0OjpzYXZlU3RhdGUpOgor
ICAgICAgICAocng6OkJsaXQ6OnJlc3RvcmVTdGF0ZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9CbGl0Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvQnVmZmVyU3RvcmFnZS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2U6
OkJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2U6On5CdWZmZXJTdG9y
YWdlKToKKyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlOjpnZXRTZXJpYWwpOgorICAgICAgICAo
cng6OkJ1ZmZlclN0b3JhZ2U6OnVwZGF0ZVNlcmlhbCk6CisgICAgICAgIChyeDo6QnVmZmVyU3Rv
cmFnZTo6bWFya0J1ZmZlclVzYWdlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVy
L0J1ZmZlclN0b3JhZ2UuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9CdWZmZXJTdG9yYWdlMTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdl
MTE6OkJ1ZmZlclN0b3JhZ2UxMSk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTExOjp+QnVm
ZmVyU3RvcmFnZTExKToKKyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlMTE6Om1ha2VCdWZmZXJT
dG9yYWdlMTEpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2UxMTo6Z2V0RGF0YSk6CisgICAg
ICAgIChyeDo6QnVmZmVyU3RvcmFnZTExOjpzZXREYXRhKToKKyAgICAgICAgKHJ4OjpCdWZmZXJT
dG9yYWdlMTE6OmNsZWFyKToKKyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlMTE6OmdldFNpemUp
OgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2UxMTo6c3VwcG9ydHNEaXJlY3RCaW5kaW5nKToK
KyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlMTE6Om1hcmtCdWZmZXJVc2FnZSk6CisgICAgICAg
IChyeDo6QnVmZmVyU3RvcmFnZTExOjpnZXRCdWZmZXIpOgorICAgICAgICAqIHNyYy9saWJHTEVT
djIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJH
TEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTkuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpC
dWZmZXJTdG9yYWdlOTo6QnVmZmVyU3RvcmFnZTkpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3Jh
Z2U5Ojp+QnVmZmVyU3RvcmFnZTkpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2U5OjptYWtl
QnVmZmVyU3RvcmFnZTkpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2U5OjpnZXREYXRhKToK
KyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlOTo6c2V0RGF0YSk6CisgICAgICAgIChyeDo6QnVm
ZmVyU3RvcmFnZTk6OmNsZWFyKToKKyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlOTo6Z2V0U2l6
ZSk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTk6OnN1cHBvcnRzRGlyZWN0QmluZGluZyk6
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlMTEuY3BwOiBBZGRlZC4K
KyAgICAgICAgKHJ4OjpGZW5jZTExOjpGZW5jZTExKToKKyAgICAgICAgKHJ4OjpGZW5jZTExOjp+
RmVuY2UxMSk6CisgICAgICAgIChyeDo6RmVuY2UxMTo6aXNGZW5jZSk6CisgICAgICAgIChyeDo6
RmVuY2UxMTo6c2V0RmVuY2UpOgorICAgICAgICAocng6OkZlbmNlMTE6OnRlc3RGZW5jZSk6Cisg
ICAgICAgIChyeDo6RmVuY2UxMTo6ZmluaXNoRmVuY2UpOgorICAgICAgICAocng6OkZlbmNlMTE6
OmdldEZlbmNlaXYpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2UxMS5o
OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlOS5jcHA6IEFk
ZGVkLgorICAgICAgICAocng6OkZlbmNlOTo6RmVuY2U5KToKKyAgICAgICAgKHJ4OjpGZW5jZTk6
On5GZW5jZTkpOgorICAgICAgICAocng6OkZlbmNlOTo6aXNGZW5jZSk6CisgICAgICAgIChyeDo6
RmVuY2U5OjpzZXRGZW5jZSk6CisgICAgICAgIChyeDo6RmVuY2U5Ojp0ZXN0RmVuY2UpOgorICAg
ICAgICAocng6OkZlbmNlOTo6ZmluaXNoRmVuY2UpOgorICAgICAgICAocng6OkZlbmNlOTo6Z2V0
RmVuY2Vpdik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuaDogQWRk
ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZUltcGwuaDogQWRkZWQu
CisgICAgICAgIChyeDo6RmVuY2VJbXBsOjpGZW5jZUltcGwpOgorICAgICAgICAocng6OkZlbmNl
SW1wbDo6fkZlbmNlSW1wbCk6CisgICAgICAgIChyeDo6RmVuY2VJbXBsOjpzZXRTdGF0dXMpOgor
ICAgICAgICAocng6OkZlbmNlSW1wbDo6Z2V0U3RhdHVzKToKKyAgICAgICAgKHJ4OjpGZW5jZUlt
cGw6OnNldENvbmRpdGlvbik6CisgICAgICAgIChyeDo6RmVuY2VJbXBsOjpnZXRDb25kaXRpb24p
OgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKHJ4OjpJbWFnZTo6SW1hZ2UpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkQWxwaGFE
YXRhVG9CR1JBKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZEFscGhhRGF0YVRvTmF0aXZlKToK
KyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZEFscGhhRmxvYXREYXRhVG9SR0JBKToKKyAgICAgICAg
KHJ4OjpJbWFnZTo6bG9hZEFscGhhSGFsZkZsb2F0RGF0YVRvUkdCQSk6CisgICAgICAgIChyeDo6
SW1hZ2U6OmxvYWRMdW1pbmFuY2VEYXRhVG9OYXRpdmVPckJHUkEpOgorICAgICAgICAocng6Oklt
YWdlOjpsb2FkTHVtaW5hbmNlRmxvYXREYXRhVG9SR0JBKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6
bG9hZEx1bWluYW5jZUZsb2F0RGF0YVRvUkdCKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZEx1
bWluYW5jZUhhbGZGbG9hdERhdGFUb1JHQkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkTHVt
aW5hbmNlQWxwaGFEYXRhVG9OYXRpdmVPckJHUkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2Fk
THVtaW5hbmNlQWxwaGFGbG9hdERhdGFUb1JHQkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2Fk
THVtaW5hbmNlQWxwaGFIYWxmRmxvYXREYXRhVG9SR0JBKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6
bG9hZFJHQlVCeXRlRGF0YVRvQkdSWCk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRSR0JVQnl0
ZURhdGFUb1JHQkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkUkdCNTY1RGF0YVRvQkdSQSk6
CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRSR0I1NjVEYXRhVG9SR0JBKToKKyAgICAgICAgKHJ4
OjpJbWFnZTo6bG9hZFJHQkZsb2F0RGF0YVRvUkdCQSk6CisgICAgICAgIChyeDo6SW1hZ2U6Omxv
YWRSR0JGbG9hdERhdGFUb05hdGl2ZSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRSR0JIYWxm
RmxvYXREYXRhVG9SR0JBKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQkFVQnl0ZURhdGFU
b0JHUkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkUkdCQVVCeXRlRGF0YVRvTmF0aXZlKToK
KyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQkE0NDQ0RGF0YVRvQkdSQSk6CisgICAgICAgIChy
eDo6SW1hZ2U6OmxvYWRSR0JBNDQ0NERhdGFUb1JHQkEpOgorICAgICAgICAocng6OkltYWdlOjps
b2FkUkdCQTU1NTFEYXRhVG9CR1JBKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQkE1NTUx
RGF0YVRvUkdCQSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRSR0JBRmxvYXREYXRhVG9SR0JB
KToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQkFIYWxmRmxvYXREYXRhVG9SR0JBKToKKyAg
ICAgICAgKHJ4OjpJbWFnZTo6bG9hZEJHUkFEYXRhVG9CR1JBKToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0ltYWdlLmg6IEFkZGVkLgorICAgICAgICAocng6OkltYWdlOjp+SW1h
Z2UpOgorICAgICAgICAocng6OkltYWdlOjpnZXRXaWR0aCk6CisgICAgICAgIChyeDo6SW1hZ2U6
OmdldEhlaWdodCk6CisgICAgICAgIChyeDo6SW1hZ2U6OmdldEludGVybmFsRm9ybWF0KToKKyAg
ICAgICAgKHJ4OjpJbWFnZTo6Z2V0QWN0dWFsRm9ybWF0KToKKyAgICAgICAgKHJ4OjpJbWFnZTo6
bWFya0RpcnR5KToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bWFya0NsZWFuKToKKyAgICAgICAgKHJ4
OjpJbWFnZTo6c2V0TWFuYWdlZFN1cmZhY2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvSW1hZ2UxMS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OkltYWdlMTE6OkltYWdlMTEp
OgorICAgICAgICAocng6OkltYWdlMTE6On5JbWFnZTExKToKKyAgICAgICAgKHJ4OjpJbWFnZTEx
OjptYWtlSW1hZ2UxMSk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6Z2VuZXJhdGVNaXBtYXApOgor
ICAgICAgICAocng6OkltYWdlMTE6OmlzRGlydHkpOgorICAgICAgICAocng6OkltYWdlMTE6OnVw
ZGF0ZVN1cmZhY2UpOgorICAgICAgICAocng6OkltYWdlMTE6OnJlZGVmaW5lKToKKyAgICAgICAg
KHJ4OjpJbWFnZTExOjppc1JlbmRlcmFibGVGb3JtYXQpOgorICAgICAgICAocng6OkltYWdlMTE6
OmdldERYR0lGb3JtYXQpOgorICAgICAgICAocng6OkltYWdlMTE6OmxvYWREYXRhKToKKyAgICAg
ICAgKHJ4OjpJbWFnZTExOjpsb2FkQ29tcHJlc3NlZERhdGEpOgorICAgICAgICAocng6OkltYWdl
MTE6OmNvcHkpOgorICAgICAgICAocng6OkltYWdlMTE6OmdldFN0YWdpbmdUZXh0dXJlKToKKyAg
ICAgICAgKHJ4OjpJbWFnZTExOjpnZXRTdGFnaW5nU3VicmVzb3VyY2UpOgorICAgICAgICAocng6
OkltYWdlMTE6OmNyZWF0ZVN0YWdpbmdUZXh0dXJlKToKKyAgICAgICAgKHJ4OjpJbWFnZTExOjpt
YXApOgorICAgICAgICAocng6OkltYWdlMTE6OnVubWFwKToKKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL3JlbmRlcmVyL0ltYWdlMTEuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9JbWFnZTkuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpJbWFnZTk6OkltYWdlOSk6
CisgICAgICAgIChyeDo6SW1hZ2U5Ojp+SW1hZ2U5KToKKyAgICAgICAgKHJ4OjpJbWFnZTk6Omdl
bmVyYXRlTWlwKToKKyAgICAgICAgKHJ4OjpJbWFnZTk6Om1ha2VJbWFnZTkpOgorICAgICAgICAo
cng6OkltYWdlOTo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAocng6OkltYWdlOTo6Y29weUxv
Y2thYmxlU3VyZmFjZXMpOgorICAgICAgICAocng6OkltYWdlOTo6cmVkZWZpbmUpOgorICAgICAg
ICAocng6OkltYWdlOTo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgIChyeDo6SW1hZ2U5Ojpsb2Nr
KToKKyAgICAgICAgKHJ4OjpJbWFnZTk6OnVubG9jayk6CisgICAgICAgIChyeDo6SW1hZ2U5Ojpp
c1JlbmRlcmFibGVGb3JtYXQpOgorICAgICAgICAocng6OkltYWdlOTo6Z2V0RDNERm9ybWF0KToK
KyAgICAgICAgKHJ4OjpJbWFnZTk6OmdldFN1cmZhY2UpOgorICAgICAgICAocng6OkltYWdlOTo6
c2V0TWFuYWdlZFN1cmZhY2UpOgorICAgICAgICAocng6OkltYWdlOTo6dXBkYXRlU3VyZmFjZSk6
CisgICAgICAgIChyeDo6SW1hZ2U5Ojpsb2FkRGF0YSk6CisgICAgICAgIChyeDo6SW1hZ2U5Ojps
b2FkQ29tcHJlc3NlZERhdGEpOgorICAgICAgICAocng6OkltYWdlOTo6Y29weSk6CisgICAgICAg
ICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTkuaDogQWRkZWQuCisgICAgICAgIChyeDo6
SW1hZ2U5Ojppc0RpcnR5KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdl
U1NFMi5jcHA6IEFkZGVkLgorICAgICAgICAocng6OkltYWdlOjpsb2FkUkdCQVVCeXRlRGF0YVRv
QkdSQVNTRTIpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkQWxwaGFEYXRhVG9CR1JBU1NFMik6
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5jcHA6IEFkZGVk
LgorICAgICAgICAocng6OkluZGV4QnVmZmVyOjpJbmRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6
SW5kZXhCdWZmZXI6On5JbmRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI6Omdl
dFNlcmlhbCk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI6OnVwZGF0ZVNlcmlhbCk6CisgICAg
ICAgIChyeDo6SW5kZXhCdWZmZXJJbnRlcmZhY2U6OkluZGV4QnVmZmVySW50ZXJmYWNlKToKKyAg
ICAgICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6fkluZGV4QnVmZmVySW50ZXJmYWNlKToK
KyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6Z2V0SW5kZXhUeXBlKToKKyAgICAg
ICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6Z2V0QnVmZmVyU2l6ZSk6CisgICAgICAgIChy
eDo6SW5kZXhCdWZmZXJJbnRlcmZhY2U6OmdldFNlcmlhbCk6CisgICAgICAgIChyeDo6SW5kZXhC
dWZmZXJJbnRlcmZhY2U6Om1hcEJ1ZmZlcik6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXJJbnRl
cmZhY2U6OnVubWFwQnVmZmVyKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6
Z2V0SW5kZXhCdWZmZXIpOgorICAgICAgICAocng6OkluZGV4QnVmZmVySW50ZXJmYWNlOjpnZXRX
cml0ZVBvc2l0aW9uKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6c2V0V3Jp
dGVQb3NpdGlvbik6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXJJbnRlcmZhY2U6OmRpc2NhcmQp
OgorICAgICAgICAocng6OkluZGV4QnVmZmVySW50ZXJmYWNlOjpzZXRCdWZmZXJTaXplKToKKyAg
ICAgICAgKHJ4OjpTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZTo6U3RyZWFtaW5nSW5kZXhC
dWZmZXJJbnRlcmZhY2UpOgorICAgICAgICAocng6OlN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJm
YWNlOjp+U3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2UpOgorICAgICAgICAocng6OlN0cmVh
bWluZ0luZGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZlQnVmZmVyU3BhY2UpOgorICAgICAgICAo
cng6OlN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlOjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFj
ZSk6CisgICAgICAgIChyeDo6U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6On5TdGF0aWNJbmRl
eEJ1ZmZlckludGVyZmFjZSk6CisgICAgICAgIChyeDo6U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZh
Y2U6OnJlc2VydmVCdWZmZXJTcGFjZSk6CisgICAgICAgIChyeDo6U3RhdGljSW5kZXhCdWZmZXJJ
bnRlcmZhY2U6Omxvb2t1cFJhbmdlKToKKyAgICAgICAgKHJ4OjpTdGF0aWNJbmRleEJ1ZmZlcklu
dGVyZmFjZTo6YWRkUmFuZ2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5k
ZXhCdWZmZXIuaDogQWRkZWQuCisgICAgICAgIChyeDo6U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZh
Y2U6OkluZGV4UmFuZ2U6Om9wZXJhdG9yPCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9JbmRleEJ1ZmZlcjExLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6SW5kZXhCdWZmZXIx
MTo6SW5kZXhCdWZmZXIxMSk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXIxMTo6fkluZGV4QnVm
ZmVyMTEpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyMTE6OmluaXRpYWxpemUpOgorICAgICAg
ICAocng6OkluZGV4QnVmZmVyMTE6Om1ha2VJbmRleEJ1ZmZlcjExKToKKyAgICAgICAgKHJ4OjpJ
bmRleEJ1ZmZlcjExOjptYXBCdWZmZXIpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyMTE6OnVu
bWFwQnVmZmVyKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjExOjpnZXRJbmRleFR5cGUpOgor
ICAgICAgICAocng6OkluZGV4QnVmZmVyMTE6OmdldEJ1ZmZlclNpemUpOgorICAgICAgICAocng6
OkluZGV4QnVmZmVyMTE6OnNldFNpemUpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyMTE6OmRp
c2NhcmQpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyMTE6OmdldEluZGV4Rm9ybWF0KToKKyAg
ICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjExOjpnZXRCdWZmZXIpOgorICAgICAgICAqIHNyYy9saWJH
TEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXIxMS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyOS5jcHA6IEFkZGVkLgorICAgICAgICAocng6Oklu
ZGV4QnVmZmVyOTo6SW5kZXhCdWZmZXI5KToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjk6On5J
bmRleEJ1ZmZlcjkpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyOTo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChyeDo6SW5kZXhCdWZmZXI5OjptYWtlSW5kZXhCdWZmZXI5KToKKyAgICAgICAgKHJ4
OjpJbmRleEJ1ZmZlcjk6Om1hcEJ1ZmZlcik6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI5Ojp1
bm1hcEJ1ZmZlcik6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI5OjpnZXRJbmRleFR5cGUpOgor
ICAgICAgICAocng6OkluZGV4QnVmZmVyOTo6Z2V0QnVmZmVyU2l6ZSk6CisgICAgICAgIChyeDo6
SW5kZXhCdWZmZXI5OjpzZXRTaXplKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjk6OmRpc2Nh
cmQpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyOTo6Z2V0SW5kZXhGb3JtYXQpOgorICAgICAg
ICAocng6OkluZGV4QnVmZmVyOTo6Z2V0QnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL0luZGV4QnVmZmVyOS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpJbmRl
eERhdGFNYW5hZ2VyOjpJbmRleERhdGFNYW5hZ2VyKToKKyAgICAgICAgKHJ4OjpJbmRleERhdGFN
YW5hZ2VyOjp+SW5kZXhEYXRhTWFuYWdlcik6CisgICAgICAgIChyeDo6aW5kZXhUeXBlU2l6ZSk6
CisgICAgICAgIChyeDo6Y29udmVydEluZGljZXMpOgorICAgICAgICAocng6OmNvbXB1dGVSYW5n
ZSk6CisgICAgICAgIChyeDo6SW5kZXhEYXRhTWFuYWdlcjo6cHJlcGFyZUluZGV4RGF0YSk6Cisg
ICAgICAgIChyeDo6SW5kZXhEYXRhTWFuYWdlcjo6Z2V0Q291bnRpbmdJbmRpY2VzKToKKyAgICAg
ICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuaDogQWRkZWQuCisg
ICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbnB1dExheW91dENhY2hlLmNwcDogQWRk
ZWQuCisgICAgICAgIChyeDo6SW5wdXRMYXlvdXRDYWNoZTo6SW5wdXRMYXlvdXRDYWNoZSk6Cisg
ICAgICAgIChyeDo6SW5wdXRMYXlvdXRDYWNoZTo6fklucHV0TGF5b3V0Q2FjaGUpOgorICAgICAg
ICAocng6OklucHV0TGF5b3V0Q2FjaGU6OmluaXRpYWxpemUpOgorICAgICAgICAocng6OklucHV0
TGF5b3V0Q2FjaGU6OmNsZWFyKToKKyAgICAgICAgKHJ4OjpJbnB1dExheW91dENhY2hlOjphcHBs
eVZlcnRleEJ1ZmZlcnMpOgorICAgICAgICAocng6OklucHV0TGF5b3V0Q2FjaGU6Omhhc2hJbnB1
dExheW91dCk6CisgICAgICAgIChyeDo6SW5wdXRMYXlvdXRDYWNoZTo6Y29tcGFyZUlucHV0TGF5
b3V0cyk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbnB1dExheW91dENhY2hl
Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnkxMS5jcHA6
IEFkZGVkLgorICAgICAgICAocng6OlF1ZXJ5MTE6OlF1ZXJ5MTEpOgorICAgICAgICAocng6OlF1
ZXJ5MTE6On5RdWVyeTExKToKKyAgICAgICAgKHJ4OjpRdWVyeTExOjpiZWdpbik6CisgICAgICAg
IChyeDo6UXVlcnkxMTo6ZW5kKToKKyAgICAgICAgKHJ4OjpRdWVyeTExOjpnZXRSZXN1bHQpOgor
ICAgICAgICAocng6OlF1ZXJ5MTE6OmlzUmVzdWx0QXZhaWxhYmxlKToKKyAgICAgICAgKHJ4OjpR
dWVyeTExOjp0ZXN0UXVlcnkpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVl
cnkxMS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5OS5j
cHA6IEFkZGVkLgorICAgICAgICAocng6OlF1ZXJ5OTo6UXVlcnk5KToKKyAgICAgICAgKHJ4OjpR
dWVyeTk6On5RdWVyeTkpOgorICAgICAgICAocng6OlF1ZXJ5OTo6YmVnaW4pOgorICAgICAgICAo
cng6OlF1ZXJ5OTo6ZW5kKToKKyAgICAgICAgKHJ4OjpRdWVyeTk6OmdldFJlc3VsdCk6CisgICAg
ICAgIChyeDo6UXVlcnk5Ojppc1Jlc3VsdEF2YWlsYWJsZSk6CisgICAgICAgIChyeDo6UXVlcnk5
Ojp0ZXN0UXVlcnkpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnk5Lmg6
IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnlJbXBsLmg6IEFk
ZGVkLgorICAgICAgICAocng6OlF1ZXJ5SW1wbDo6UXVlcnlJbXBsKToKKyAgICAgICAgKHJ4OjpR
dWVyeUltcGw6On5RdWVyeUltcGwpOgorICAgICAgICAocng6OlF1ZXJ5SW1wbDo6Z2V0VHlwZSk6
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJTdGF0ZUNhY2hlLmNwcDog
QWRkZWQuCisgICAgICAgIChyeDo6UmVuZGVyU3RhdGVDYWNoZTo6UmVuZGVyU3RhdGVDYWNoZSk6
CisgICAgICAgIChyeDo6UmVuZGVyU3RhdGVDYWNoZTo6flJlbmRlclN0YXRlQ2FjaGUpOgorICAg
ICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6OmluaXRpYWxpemUpOgorICAgICAgICAocng6OlJl
bmRlclN0YXRlQ2FjaGU6OmNsZWFyKToKKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpo
YXNoQmxlbmRTdGF0ZSk6CisgICAgICAgIChyeDo6UmVuZGVyU3RhdGVDYWNoZTo6Y29tcGFyZUJs
ZW5kU3RhdGVzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpnZXRCbGVuZFN0YXRl
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpoYXNoUmFzdGVyaXplclN0YXRlKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpjb21wYXJlUmFzdGVyaXplclN0YXRlcyk6
CisgICAgICAgIChyeDo6UmVuZGVyU3RhdGVDYWNoZTo6Z2V0UmFzdGVyaXplclN0YXRlKToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpoYXNoRGVwdGhTdGVuY2lsU3RhdGUpOgorICAg
ICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6OmNvbXBhcmVEZXB0aFN0ZW5jaWxTdGF0ZXMpOgor
ICAgICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6OmdldERlcHRoU3RlbmNpbFN0YXRlKToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpoYXNoU2FtcGxlclN0YXRlKToKKyAgICAgICAg
KHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpjb21wYXJlU2FtcGxlclN0YXRlcyk6CisgICAgICAgIChy
eDo6UmVuZGVyU3RhdGVDYWNoZTo6Z2V0U2FtcGxlclN0YXRlKToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlclN0YXRlQ2FjaGUuaDogQWRkZWQuCisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQuaDogQWRkZWQuCisgICAgICAgIChyeDo6
UmVuZGVyVGFyZ2V0OjpSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDo6
flJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0OjpnZXRXaWR0aCk6Cisg
ICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0OjpnZXRIZWlnaHQpOgorICAgICAgICAocng6OlJlbmRl
clRhcmdldDo6Z2V0SW50ZXJuYWxGb3JtYXQpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDo6
Z2V0QWN0dWFsRm9ybWF0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQ6OmdldFNhbXBsZXMp
OgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0MTEuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKHJ4OjpnZXRSVFZTdWJyZXNvdXJjZUluZGV4KToKKyAgICAgICAgKHJ4
OjpnZXREU1ZTdWJyZXNvdXJjZUluZGV4KToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQxMTo6
UmVuZGVyVGFyZ2V0MTEpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDExOjp+UmVuZGVyVGFy
Z2V0MTEpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEp
OgorICAgICAgICAocng6OlJlbmRlclRhcmdldDExOjpnZXRUZXh0dXJlKToKKyAgICAgICAgKHJ4
OjpSZW5kZXJUYXJnZXQxMTo6Z2V0UmVuZGVyVGFyZ2V0Vmlldyk6CisgICAgICAgIChyeDo6UmVu
ZGVyVGFyZ2V0MTE6OmdldERlcHRoU3RlbmNpbFZpZXcpOgorICAgICAgICAocng6OlJlbmRlclRh
cmdldDExOjpnZXRTaGFkZXJSZXNvdXJjZVZpZXcpOgorICAgICAgICAocng6OlJlbmRlclRhcmdl
dDExOjpnZXRTdWJyZXNvdXJjZUluZGV4KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRl
cmVyL1JlbmRlclRhcmdldDExLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyVGFyZ2V0OS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OlJlbmRlclRhcmdl
dDk6OlJlbmRlclRhcmdldDkpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDk6On5SZW5kZXJU
YXJnZXQ5KToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQ5OjptYWtlUmVuZGVyVGFyZ2V0OSk6
CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0OTo6Z2V0U3VyZmFjZSk6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQ5Lmg6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpS
ZW5kZXJlcjo6UmVuZGVyZXIpOgorICAgICAgICAocng6OlJlbmRlcmVyOjp+UmVuZGVyZXIpOgor
ICAgICAgICAocng6OlJlbmRlcmVyOjppbml0aWFsaXplQ29tcGlsZXIpOgorICAgICAgICAocng6
OlJlbmRlcmVyOjpjb21waWxlVG9CaW5hcnkpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyZXIuaDogQWRkZWQuCisgICAgICAgIChnZXRDb21wYXJhYmxlT1NWZXJzaW9u
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjo6Z2V0VmVydGV4VGV4dHVyZVN1cHBvcnQpOgorICAg
ICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIxMS5jcHA6IEFkZGVkLgorICAg
ICAgICAocng6OlJlbmRlcmVyMTE6OlJlbmRlcmVyMTEpOgorICAgICAgICAocng6OlJlbmRlcmVy
MTE6On5SZW5kZXJlcjExKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjptYWtlUmVuZGVyZXIx
MSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChyeDo6
UmVuZGVyZXIxMTo6aW5pdGlhbGl6ZURldmljZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6
Z2VuZXJhdGVDb25maWdzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpkZWxldGVDb25maWdz
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpzeW5jKToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjExOjpjcmVhdGVTd2FwQ2hhaW4pOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OnNldFNhbXBs
ZXJTdGF0ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6c2V0VGV4dHVyZSk6CisgICAgICAg
IChyeDo6UmVuZGVyZXIxMTo6c2V0UmFzdGVyaXplclN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjExOjpzZXRCbGVuZFN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpzZXREZXB0
aFN0ZW5jaWxTdGF0ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6c2V0U2Npc3NvclJlY3Rh
bmdsZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6c2V0Vmlld3BvcnQpOgorICAgICAgICAo
cng6OlJlbmRlcmVyMTE6OmFwcGx5UHJpbWl0aXZlVHlwZSk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXIxMTo6YXBwbHlSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmFwcGx5
VmVydGV4QnVmZmVyKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjphcHBseUluZGV4QnVmZmVy
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpkcmF3QXJyYXlzKToKKyAgICAgICAgKHJ4OjpS
ZW5kZXJlcjExOjpkcmF3RWxlbWVudHMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmRyYXdM
aW5lTG9vcCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6ZHJhd1RyaWFuZ2xlRmFuKToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJlcjExOjphcHBseVNoYWRlcnMpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OmFwcGx5VW5pZm9ybXMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmNsZWFyKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjptYXNrZWRDbGVhcik6CisgICAgICAgIChyeDo6UmVu
ZGVyZXIxMTo6bWFya0FsbFN0YXRlRGlydHkpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OnJl
bGVhc2VEZXZpY2VSZXNvdXJjZXMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6Om5vdGlmeURl
dmljZUxvc3QpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmlzRGV2aWNlTG9zdCk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXIxMTo6dGVzdERldmljZUxvc3QpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OnRlc3REZXZpY2VSZXNldHRhYmxlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpy
ZWxlYXNlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpyZXNldERldmljZSk6CisgICAgICAg
IChyeDo6UmVuZGVyZXIxMTo6Z2V0QWRhcHRlclZlbmRvcik6CisgICAgICAgIChyeDo6UmVuZGVy
ZXIxMTo6Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbik6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6
Z2V0QWRhcHRlcklkZW50aWZpZXIpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldEJHUkFU
ZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0RFhUMVRleHR1cmVT
dXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXREWFQzVGV4dHVyZVN1cHBvcnQp
OgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldERYVDVUZXh0dXJlU3VwcG9ydCk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0RGVwdGhUZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChy
eDo6UmVuZGVyZXIxMTo6Z2V0RmxvYXQzMlRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpS
ZW5kZXJlcjExOjpnZXRGbG9hdDE2VGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OmdldEx1bWluYW5jZVRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjExOjpnZXRMdW1pbmFuY2VBbHBoYVRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjExOjpnZXRUZXh0dXJlRmlsdGVyQW5pc290cm9weVN1cHBvcnQpOgorICAgICAgICAocng6
OlJlbmRlcmVyMTE6OmdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjExOjpnZXRFdmVudFF1ZXJ5U3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6
Z2V0Vmlld3BvcnRCb3VuZHMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldE1heFZlcnRl
eFRleHR1cmVJbWFnZVVuaXRzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRNYXhDb21i
aW5lZFRleHR1cmVJbWFnZVVuaXRzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRSZXNl
cnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRS
ZXNlcnZlZEZyYWdtZW50VW5pZm9ybVZlY3RvcnMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6
OmdldE1heFZlcnRleFVuaWZvcm1WZWN0b3JzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpn
ZXRNYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpn
ZXRNYXhWYXJ5aW5nVmVjdG9ycyk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0Tm9uUG93
ZXIyVGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldE9jY2x1c2lv
blF1ZXJ5U3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0SW5zdGFuY2luZ1N1
cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldFNoYXJlSGFuZGxlU3VwcG9ydCk6
CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0RGVyaXZhdGl2ZUluc3RydWN0aW9uU3VwcG9y
dCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0UG9zdFN1YkJ1ZmZlclN1cHBvcnQpOgor
ICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldE1ham9yU2hhZGVyTW9kZWwpOgorICAgICAgICAo
cng6OlJlbmRlcmVyMTE6OmdldE1pbm9yU2hhZGVyTW9kZWwpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OmdldE1heFBvaW50U2l6ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0TWF4
Vmlld3BvcnREaW1lbnNpb24pOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldE1heFRleHR1
cmVXaWR0aCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0TWF4VGV4dHVyZUhlaWdodCk6
CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0MzJCaXRJbmRleFN1cHBvcnQpOgorICAgICAg
ICAocng6OlJlbmRlcmVyMTE6OmdldE1pblN3YXBJbnRlcnZhbCk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXIxMTo6Z2V0TWF4U3dhcEludGVydmFsKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpn
ZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXROZWFy
ZXN0U3VwcG9ydGVkU2FtcGxlcyk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0TWF4UmVu
ZGVyVGFyZ2V0cyk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y29weVRvUmVuZGVyVGFyZ2V0
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjb3B5SW1hZ2UpOgorICAgICAgICAocng6OlJl
bmRlcmVyMTE6OmNvcHlUZXh0dXJlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjp1bmFwcGx5
UmVuZGVyVGFyZ2V0cyk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6c2V0T25lVGltZVJlbmRl
clRhcmdldCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y3JlYXRlUmVuZGVyVGFyZ2V0KToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpsb2FkRXhlY3V0YWJsZSk6CisgICAgICAgIChyeDo6
UmVuZGVyZXIxMTo6Y29tcGlsZVRvRXhlY3V0YWJsZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIx
MTo6Y3JlYXRlVmVydGV4QnVmZmVyKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjcmVhdGVJ
bmRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y3JlYXRlQnVmZmVyU3RvcmFn
ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAocng6
OlJlbmRlcmVyMTE6OmNyZWF0ZUZlbmNlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRS
ZW5kZXJUYXJnZXRSZXNvdXJjZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6YmxpdFJlY3Qp
OgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OnJlYWRQaXhlbHMpOgorICAgICAgICAocng6OlJl
bmRlcmVyMTE6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZW5lcmF0
ZU1pcG1hcCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2Uy
RCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2VDdWJlKToK
KyAgICAgICAgKHJ4OjpnZXRGYXN0UGl4ZWxDb3B5U2l6ZSk6CisgICAgICAgIChyeDo6cmVhZFBp
eGVsQ29sb3IpOgorICAgICAgICAocng6OndyaXRlUGl4ZWxDb2xvcik6CisgICAgICAgIChyeDo6
UmVuZGVyZXIxMTo6cmVhZFRleHR1cmVEYXRhKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpi
bGl0UmVuZGVyYnVmZmVyUmVjdCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6cmVzb2x2ZU11
bHRpc2FtcGxlZFRleHR1cmUpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldExVSUQpOgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIxMS5oOiBBZGRlZC4KKyAg
ICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXREZXZpY2UpOgorICAgICAgICAocng6OlJlbmRlcmVy
MTE6OmdldERldmljZUNvbnRleHQpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldER4Z2lG
YWN0b3J5KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5jcHA6
IEFkZGVkLgorICAgICAgICAocng6OlJlbmRlcmVyOTo6UmVuZGVyZXI5KToKKyAgICAgICAgKHJ4
OjpSZW5kZXJlcjk6On5SZW5kZXJlcjkpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6bWFrZVJl
bmRlcmVyOSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojppbml0aWFsaXplKToKKyAgICAgICAg
KHJ4OjpSZW5kZXJlcjk6OmluaXRpYWxpemVEZXZpY2UpOgorICAgICAgICAocng6OlJlbmRlcmVy
OTo6Z2V0RGVmYXVsdFByZXNlbnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6
OmdlbmVyYXRlQ29uZmlncyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpkZWxldGVDb25maWdz
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OnN0YXJ0U2NlbmUpOgorICAgICAgICAocng6OlJl
bmRlcmVyOTo6ZW5kU2NlbmUpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6c3luYyk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXI5OjpjcmVhdGVTd2FwQ2hhaW4pOgorICAgICAgICAocng6OlJlbmRl
cmVyOTo6YWxsb2NhdGVFdmVudFF1ZXJ5KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmZyZWVF
dmVudFF1ZXJ5KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmNyZWF0ZVZlcnRleFNoYWRlcik6
CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpjcmVhdGVQaXhlbFNoYWRlcik6CisgICAgICAgIChy
eDo6UmVuZGVyZXI5OjpjcmVhdGVWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAocng6OlJlbmRlcmVy
OTo6Y3JlYXRlSW5kZXhCdWZmZXIpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Y3JlYXRlQnVm
ZmVyU3RvcmFnZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpjcmVhdGVRdWVyeSk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXI5OjpjcmVhdGVGZW5jZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5
OjpzZXRTYW1wbGVyU3RhdGUpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6c2V0VGV4dHVyZSk6
CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpzZXRSYXN0ZXJpemVyU3RhdGUpOgorICAgICAgICAo
cng6OlJlbmRlcmVyOTo6c2V0QmxlbmRTdGF0ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpz
ZXREZXB0aFN0ZW5jaWxTdGF0ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpzZXRTY2lzc29y
UmVjdGFuZ2xlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OnNldFZpZXdwb3J0KToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjk6OmFwcGx5UHJpbWl0aXZlVHlwZSk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXI5OjpnZXROdWxsQ29sb3JidWZmZXIpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6YXBw
bHlSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6YXBwbHlWZXJ0ZXhCdWZm
ZXIpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6YXBwbHlJbmRleEJ1ZmZlcik6CisgICAgICAg
IChyeDo6UmVuZGVyZXI5OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmRy
YXdFbGVtZW50cyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpkcmF3TGluZUxvb3ApOgorICAg
ICAgICAocng6OmRyYXdQb2ludHMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6ZHJhd0luZGV4
ZWRQb2ludHMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6YXBwbHlTaGFkZXJzKToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjk6OmFwcGx5VW5pZm9ybXMpOgorICAgICAgICAocng6OlJlbmRlcmVy
OTo6YXBwbHlVbmlmb3JtbmZ2KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmFwcGx5VW5pZm9y
bW5pdik6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjphcHBseVVuaWZvcm1uYnYpOgorICAgICAg
ICAocng6OlJlbmRlcmVyOTo6Y2xlYXIpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6bWFya0Fs
bFN0YXRlRGlydHkpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6cmVsZWFzZURldmljZVJlc291
cmNlcyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpub3RpZnlEZXZpY2VMb3N0KToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjk6OmlzRGV2aWNlTG9zdCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5
Ojp0ZXN0RGV2aWNlTG9zdCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojp0ZXN0RGV2aWNlUmVz
ZXR0YWJsZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpyZXNldERldmljZSk6CisgICAgICAg
IChyeDo6UmVuZGVyZXI5OjpnZXRBZGFwdGVyVmVuZG9yKToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjk6OmdldFJlbmRlcmVyRGVzY3JpcHRpb24pOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0
QWRhcHRlcklkZW50aWZpZXIpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0TXVsdGlTYW1w
bGVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldEJHUkFUZXh0dXJlU3VwcG9y
dCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXREWFQxVGV4dHVyZVN1cHBvcnQpOgorICAg
ICAgICAocng6OlJlbmRlcmVyOTo6Z2V0RFhUM1RleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4
OjpSZW5kZXJlcjk6OmdldERYVDVUZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXI5OjpnZXREZXB0aFRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6Omdl
dEZsb2F0MzJUZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRGbG9h
dDE2VGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0THVtaW5hbmNl
VGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0THVtaW5hbmNlQWxw
aGFUZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRUZXh0dXJlRmls
dGVyQW5pc290cm9weVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0VGV4dHVy
ZU1heEFuaXNvdHJvcHkpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0RXZlbnRRdWVyeVN1
cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0TWF4VmVydGV4VGV4dHVyZUltYWdl
VW5pdHMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0TWF4Q29tYmluZWRUZXh0dXJlSW1h
Z2VVbml0cyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRSZXNlcnZlZFZlcnRleFVuaWZv
cm1WZWN0b3JzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldFJlc2VydmVkRnJhZ21lbnRV
bmlmb3JtVmVjdG9ycyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNYXhWZXJ0ZXhVbmlm
b3JtVmVjdG9ycyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNYXhGcmFnbWVudFVuaWZv
cm1WZWN0b3JzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1heFZhcnlpbmdWZWN0b3Jz
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydCk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXI5OjpnZXRJbnN0YW5jaW5nU3VwcG9ydCk6CisgICAgICAgIChyeDo6
UmVuZGVyZXI5OjpnZXRTaGFyZUhhbmRsZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVy
OTo6Z2V0RGVyaXZhdGl2ZUluc3RydWN0aW9uU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXI5OjpnZXRQb3N0U3ViQnVmZmVyU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpn
ZXRNYWpvclNoYWRlck1vZGVsKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1heFBvaW50
U2l6ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNYXhWaWV3cG9ydERpbWVuc2lvbik6
CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNYXhUZXh0dXJlV2lkdGgpOgorICAgICAgICAo
cng6OlJlbmRlcmVyOTo6Z2V0TWF4VGV4dHVyZUhlaWdodCk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXI5OjpnZXQzMkJpdEluZGV4U3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRD
YXBzRGVjbFR5cGVzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1pblN3YXBJbnRlcnZh
bCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNYXhTd2FwSW50ZXJ2YWwpOgorICAgICAg
ICAocng6OlJlbmRlcmVyOTo6Z2V0TWF4U3VwcG9ydGVkU2FtcGxlcyk6CisgICAgICAgIChyeDo6
UmVuZGVyZXI5OjpnZXROZWFyZXN0U3VwcG9ydGVkU2FtcGxlcyk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXI5OjpnZXRNYXhSZW5kZXJUYXJnZXRzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OkNv
bnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Y29w
eVRvUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldEJ1ZmZlclBvb2wp
OgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Y29weUltYWdlKToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjk6OmJsaXRSZWN0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OnJlYWRQaXhlbHMpOgor
ICAgICAgICAocng6OlJlbmRlcmVyOTo6Y3JlYXRlUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4
OjpSZW5kZXJlcjk6OmxvYWRFeGVjdXRhYmxlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmNv
bXBpbGVUb0V4ZWN1dGFibGUpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Ym94RmlsdGVyKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldFRleHR1cmVQb29sKToKKyAgICAgICAgKHJ4OjpS
ZW5kZXJlcjk6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdlbmVyYXRl
TWlwbWFwKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQp
OgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2VDdWJlKToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldExVSUQpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
cmVuZGVyZXIvUmVuZGVyZXI5Lmg6IEFkZGVkLgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0
RGV2aWNlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckNhY2hlLmg6
IEFkZGVkLgorICAgICAgICAocng6OlNoYWRlckNhY2hlOjpTaGFkZXJDYWNoZSk6CisgICAgICAg
IChyeDo6U2hhZGVyQ2FjaGU6On5TaGFkZXJDYWNoZSk6CisgICAgICAgIChyeDo6U2hhZGVyQ2Fj
aGU6OmluaXRpYWxpemUpOgorICAgICAgICAocng6OlNoYWRlckNhY2hlOjpjcmVhdGUpOgorICAg
ICAgICAocng6OlNoYWRlckNhY2hlOjpjbGVhcik6CisgICAgICAgIChyeDo6U2hhZGVyQ2FjaGU6
OmNyZWF0ZVNoYWRlcik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJF
eGVjdXRhYmxlLmg6IEFkZGVkLgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGU6OlNoYWRl
ckV4ZWN1dGFibGUpOgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGU6On5TaGFkZXJFeGVj
dXRhYmxlKToKKyAgICAgICAgKHJ4OjpTaGFkZXJFeGVjdXRhYmxlOjpnZXRGdW5jdGlvbik6Cisg
ICAgICAgIChyeDo6U2hhZGVyRXhlY3V0YWJsZTo6Z2V0TGVuZ3RoKToKKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUxMS5jcHA6IEFkZGVkLgorICAgICAg
ICAocng6OlNoYWRlckV4ZWN1dGFibGUxMTo6U2hhZGVyRXhlY3V0YWJsZTExKToKKyAgICAgICAg
KHJ4OjpTaGFkZXJFeGVjdXRhYmxlMTE6On5TaGFkZXJFeGVjdXRhYmxlMTEpOgorICAgICAgICAo
cng6OlNoYWRlckV4ZWN1dGFibGUxMTo6bWFrZVNoYWRlckV4ZWN1dGFibGUxMSk6CisgICAgICAg
IChyeDo6U2hhZGVyRXhlY3V0YWJsZTExOjpnZXRWZXJ0ZXhTaGFkZXIpOgorICAgICAgICAocng6
OlNoYWRlckV4ZWN1dGFibGUxMTo6Z2V0UGl4ZWxTaGFkZXIpOgorICAgICAgICAocng6OlNoYWRl
ckV4ZWN1dGFibGUxMTo6Z2V0R2VvbWV0cnlTaGFkZXIpOgorICAgICAgICAocng6OlNoYWRlckV4
ZWN1dGFibGUxMTo6Z2V0Q29uc3RhbnRCdWZmZXIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
cmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTExLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJH
TEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTkuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4
OjpTaGFkZXJFeGVjdXRhYmxlOTo6U2hhZGVyRXhlY3V0YWJsZTkpOgorICAgICAgICAocng6OlNo
YWRlckV4ZWN1dGFibGU5Ojp+U2hhZGVyRXhlY3V0YWJsZTkpOgorICAgICAgICAocng6OlNoYWRl
ckV4ZWN1dGFibGU5OjptYWtlU2hhZGVyRXhlY3V0YWJsZTkpOgorICAgICAgICAocng6OlNoYWRl
ckV4ZWN1dGFibGU5OjpnZXRWZXJ0ZXhTaGFkZXIpOgorICAgICAgICAocng6OlNoYWRlckV4ZWN1
dGFibGU5OjpnZXRQaXhlbFNoYWRlcik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9TaGFkZXJFeGVjdXRhYmxlOS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1N3YXBDaGFpbi5oOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW46OlN3YXBD
aGFpbik6CisgICAgICAgIChyeDo6U3dhcENoYWluOjp+U3dhcENoYWluKToKKyAgICAgICAgKHJ4
OjpTd2FwQ2hhaW46OmdldFNoYXJlSGFuZGxlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1N3YXBDaGFpbjExLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6U3dhcENoYWluMTE6
OlN3YXBDaGFpbjExKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6flN3YXBDaGFpbjExKToK
KyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6cmVsZWFzZSk6CisgICAgICAgIChyeDo6U3dhcENo
YWluMTE6OnJlbGVhc2VPZmZzY3JlZW5UZXh0dXJlKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4x
MTo6cmVzZXRPZmZzY3JlZW5UZXh0dXJlKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6cmVz
aXplKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6cmVzZXQpOgorICAgICAgICAocng6OlN3
YXBDaGFpbjExOjppbml0UGFzc1Rocm91Z2hSZXNvdXJjZXMpOgorICAgICAgICAocng6OlN3YXBD
aGFpbjExOjpzd2FwUmVjdCk6CisgICAgICAgIChyeDo6U3dhcENoYWluMTE6OmdldE9mZnNjcmVl
blRleHR1cmUpOgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjpnZXRSZW5kZXJUYXJnZXQpOgor
ICAgICAgICAocng6OlN3YXBDaGFpbjExOjpnZXRSZW5kZXJUYXJnZXRTaGFkZXJSZXNvdXJjZSk6
CisgICAgICAgIChyeDo6U3dhcENoYWluMTE6OmdldERlcHRoU3RlbmNpbCk6CisgICAgICAgIChy
eDo6U3dhcENoYWluMTE6OmdldERlcHRoU3RlbmNpbFRleHR1cmUpOgorICAgICAgICAocng6OlN3
YXBDaGFpbjExOjptYWtlU3dhcENoYWluMTEpOgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjpy
ZWNyZWF0ZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5o
OiBBZGRlZC4KKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6Z2V0V2lkdGgpOgorICAgICAgICAo
cng6OlN3YXBDaGFpbjExOjpnZXRIZWlnaHQpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvU3dhcENoYWluOS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OlN3YXBDaGFpbjk6OlN3
YXBDaGFpbjkpOgorICAgICAgICAocng6OlN3YXBDaGFpbjk6On5Td2FwQ2hhaW45KToKKyAgICAg
ICAgKHJ4OjpTd2FwQ2hhaW45OjpyZWxlYXNlKToKKyAgICAgICAgKHJ4Ojpjb252ZXJ0SW50ZXJ2
YWwpOgorICAgICAgICAocng6OlN3YXBDaGFpbjk6OnJlc2l6ZSk6CisgICAgICAgIChyeDo6U3dh
cENoYWluOTo6cmVzZXQpOgorICAgICAgICAocng6OlN3YXBDaGFpbjk6OnN3YXBSZWN0KToKKyAg
ICAgICAgKHJ4OjpTd2FwQ2hhaW45OjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlN3
YXBDaGFpbjk6OmdldERlcHRoU3RlbmNpbCk6CisgICAgICAgIChyeDo6U3dhcENoYWluOTo6Z2V0
T2Zmc2NyZWVuVGV4dHVyZSk6CisgICAgICAgIChyeDo6U3dhcENoYWluOTo6bWFrZVN3YXBDaGFp
bjkpOgorICAgICAgICAocng6OlN3YXBDaGFpbjk6OnJlY3JlYXRlKToKKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjkuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5jcHA6IEFkZGVkLgorICAgICAgICAocng6
OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlOjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZSk6CisgICAg
ICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6On5UZXh0dXJlU3RvcmFnZUludGVyZmFj
ZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OmlzUmVuZGVyVGFyZ2V0
KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6aXNNYW5hZ2VkKToKKyAg
ICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6Z2V0VGV4dHVyZVNlcmlhbCk6Cisg
ICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6Omlzc3VlVGV4dHVyZVNlcmlhbCk6
CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OmdldExvZE9mZnNldCk6Cisg
ICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OmxldmVsQ291bnQpOgorICAgICAg
ICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
MkQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ6On5UZXh0dXJlU3Rv
cmFnZUludGVyZmFjZTJEKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJE
OjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
MkQ6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFj
ZTJEOjpnZXRSZW5kZXJUYXJnZXRTZXJpYWwpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdl
SW50ZXJmYWNlQ3ViZTo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlKToKKyAgICAgICAgKHJ4
OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmU6On5UZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1
YmUpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6Z2V0UmVuZGVy
VGFyZ2V0KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmU6OmdlbmVy
YXRlTWlwbWFwKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmU6Omdl
dFJlbmRlclRhcmdldFNlcmlhbCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9U
ZXh0dXJlU3RvcmFnZS5oOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTo6VGV4
dHVyZVN0b3JhZ2UpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOjp+VGV4dHVyZVN0b3Jh
Z2UpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlOjpnZXRTdG9yYWdlSW5z
dGFuY2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2Ux
MS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6OlRleHR1cmVTdG9y
YWdlMTEpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6On5UZXh0dXJlU3RvcmFnZTEx
KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjptYWtlVGV4dHVyZVN0b3JhZ2UxMSk6
CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2UxMTo6R2V0VGV4dHVyZUJpbmRGbGFncyk6Cisg
ICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2UxMTo6SXNUZXh0dXJlRm9ybWF0UmVuZGVyYWJsZSk6
CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2UxMTo6Z2V0QmluZEZsYWdzKToKKyAgICAgICAg
KHJ4OjpUZXh0dXJlU3RvcmFnZTExOjpnZXRCYXNlVGV4dHVyZSk6CisgICAgICAgIChyeDo6VGV4
dHVyZVN0b3JhZ2UxMTo6Z2V0TG9kT2Zmc2V0KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFn
ZTExOjppc1JlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2UxMTo6aXNN
YW5hZ2VkKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjpsZXZlbENvdW50KToKKyAg
ICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjpnZXRTdWJyZXNvdXJjZUluZGV4KToKKyAgICAg
ICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjp1cGRhdGVTdWJyZXNvdXJjZUxldmVsKToKKyAgICAg
ICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjpnZW5lcmF0ZU1pcG1hcExheWVyKToKKyAgICAgICAg
KHJ4OjpUZXh0dXJlU3RvcmFnZTExXzJEOjpUZXh0dXJlU3RvcmFnZTExXzJEKToKKyAgICAgICAg
KHJ4OjpUZXh0dXJlU3RvcmFnZTExXzJEOjp+VGV4dHVyZVN0b3JhZ2UxMV8yRCk6CisgICAgICAg
IChyeDo6VGV4dHVyZVN0b3JhZ2UxMV8yRDo6bWFrZVRleHR1cmVTdG9yYWdlMTFfMkQpOgorICAg
ICAgICAocng6OlRleHR1cmVTdG9yYWdlMTFfMkQ6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAg
IChyeDo6VGV4dHVyZVN0b3JhZ2UxMV8yRDo6Z2V0U1JWKToKKyAgICAgICAgKHJ4OjpUZXh0dXJl
U3RvcmFnZTExXzJEOjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3Jh
Z2UxMV9DdWJlOjpUZXh0dXJlU3RvcmFnZTExX0N1YmUpOgorICAgICAgICAocng6OlRleHR1cmVT
dG9yYWdlMTFfQ3ViZTo6flRleHR1cmVTdG9yYWdlMTFfQ3ViZSk6CisgICAgICAgIChyeDo6VGV4
dHVyZVN0b3JhZ2UxMV9DdWJlOjptYWtlVGV4dHVyZVN0b3JhZ2UxMV9DdWJlKToKKyAgICAgICAg
KHJ4OjpUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChy
eDo6VGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpnZXRTUlYpOgorICAgICAgICAocng6OlRleHR1cmVT
dG9yYWdlMTFfQ3ViZTo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
cmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UxMS5oOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpUZXh0dXJl
U3RvcmFnZTExOjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdl
MTE6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Rl
eHR1cmVTdG9yYWdlOS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOTo6
VGV4dHVyZVN0b3JhZ2U5KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTk6On5UZXh0dXJl
U3RvcmFnZTkpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOTo6bWFrZVRleHR1cmVTdG9y
YWdlOSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5OjpHZXRUZXh0dXJlVXNhZ2UpOgor
ICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOTo6SXNUZXh0dXJlRm9ybWF0UmVuZGVyYWJsZSk6
CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5Ojppc1JlbmRlclRhcmdldCk6CisgICAgICAg
IChyeDo6VGV4dHVyZVN0b3JhZ2U5Ojppc01hbmFnZWQpOgorICAgICAgICAocng6OlRleHR1cmVT
dG9yYWdlOTo6Z2V0UG9vbCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5OjpnZXRVc2Fn
ZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5OjpnZXRMb2RPZmZzZXQpOgorICAgICAg
ICAocng6OlRleHR1cmVTdG9yYWdlOTo6bGV2ZWxDb3VudCk6CisgICAgICAgIChyeDo6VGV4dHVy
ZVN0b3JhZ2U5XzJEOjpUZXh0dXJlU3RvcmFnZTlfMkQpOgorICAgICAgICAocng6OlRleHR1cmVT
dG9yYWdlOV8yRDo6flRleHR1cmVTdG9yYWdlOV8yRCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0
b3JhZ2U5XzJEOjptYWtlVGV4dHVyZVN0b3JhZ2U5XzJEKToKKyAgICAgICAgKHJ4OjpUZXh0dXJl
U3RvcmFnZTlfMkQ6OmdldFN1cmZhY2VMZXZlbCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3Jh
Z2U5XzJEOjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOV8y
RDo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOV8yRDo6Z2V0
QmFzZVRleHR1cmUpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOV8yRDo6aW5pdGlhbGl6
ZVJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5X0N1YmU6OlRleHR1
cmVTdG9yYWdlOV9DdWJlKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6flRl
eHR1cmVTdG9yYWdlOV9DdWJlKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6
bWFrZVRleHR1cmVTdG9yYWdlOV9DdWJlKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTlf
Q3ViZTo6Z2V0Q3ViZU1hcFN1cmZhY2UpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOV9D
dWJlOjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOV9DdWJl
OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5X0N1YmU6Omdl
dEJhc2VUZXh0dXJlKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6aW5pdGlh
bGl6ZVJlbmRlclRhcmdldCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0
dXJlU3RvcmFnZTkuaDogQWRkZWQuCisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5OjpnZXRS
ZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOTo6Z2VuZXJhdGVNaXBt
YXApOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmNwcDog
QWRkZWQuCisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOjpWZXJ0ZXhCdWZmZXIpOgorICAgICAg
ICAocng6OlZlcnRleEJ1ZmZlcjo6flZlcnRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6VmVydGV4
QnVmZmVyOjp1cGRhdGVTZXJpYWwpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjo6Z2V0U2Vy
aWFsKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OlZlcnRleEJ1ZmZlcklu
dGVyZmFjZSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVySW50ZXJmYWNlOjp+VmVydGV4QnVm
ZmVySW50ZXJmYWNlKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OmdldFNl
cmlhbCk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVySW50ZXJmYWNlOjpnZXRCdWZmZXJTaXpl
KToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnNldEJ1ZmZlclNpemUpOgor
ICAgICAgICAocng6OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6Z2V0V3JpdGVQb3NpdGlvbik6Cisg
ICAgICAgIChyeDo6VmVydGV4QnVmZmVySW50ZXJmYWNlOjpzZXRXcml0ZVBvc2l0aW9uKToKKyAg
ICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OmRpc2NhcmQpOgorICAgICAgICAocng6
OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAg
KHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnN0b3JlUmF3RGF0YSk6CisgICAgICAgIChyeDo6
VmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZlVmVydGV4U3BhY2UpOgorICAgICAgICAocng6
OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2ZVJhd0RhdGFTcGFjZSk6CisgICAgICAgIChy
eDo6VmVydGV4QnVmZmVySW50ZXJmYWNlOjpnZXRWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAocng6
OlN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6U3RyZWFtaW5nVmVydGV4QnVmZmVySW50
ZXJmYWNlKToKKyAgICAgICAgKHJ4OjpTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6On5T
dHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UpOgorICAgICAgICAocng6OlN0cmVhbWluZ1Zl
cnRleEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2ZVNwYWNlKToKKyAgICAgICAgKHJ4OjpTdGF0aWNW
ZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OlN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSk6CisgICAg
ICAgIChyeDo6U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjp+U3RhdGljVmVydGV4QnVmZmVy
SW50ZXJmYWNlKToKKyAgICAgICAgKHJ4OjpTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6Omxv
b2t1cEF0dHJpYnV0ZSk6CisgICAgICAgIChyeDo6U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNl
OjpyZXNlcnZlU3BhY2UpOgorICAgICAgICAocng6OlN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFj
ZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRl
cmVyL1ZlcnRleEJ1ZmZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRl
cmVyL1ZlcnRleEJ1ZmZlcjExLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6VmVydGV4QnVmZmVy
MTE6OlZlcnRleEJ1ZmZlcjExKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6flZlcnRl
eEJ1ZmZlcjExKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChyeDo6VmVydGV4QnVmZmVyMTE6Om1ha2VWZXJ0ZXhCdWZmZXIxMSk6CisgICAgICAg
IChyeDo6VmVydGV4QnVmZmVyMTE6OnN0b3JlVmVydGV4QXR0cmlidXRlcyk6CisgICAgICAgIChy
eDo6VmVydGV4QnVmZmVyMTE6OnN0b3JlUmF3RGF0YSk6CisgICAgICAgIChyeDo6VmVydGV4QnVm
ZmVyMTE6OmdldFNwYWNlUmVxdWlyZWQpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjExOjpy
ZXF1aXJlc0NvbnZlcnNpb24pOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjExOjpnZXRCdWZm
ZXJTaXplKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6c2V0QnVmZmVyU2l6ZSk6Cisg
ICAgICAgIChyeDo6VmVydGV4QnVmZmVyMTE6OmRpc2NhcmQpOgorICAgICAgICAocng6OlZlcnRl
eEJ1ZmZlcjExOjpnZXRWZXJ0ZXhTaXplKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6
Z2V0RFhHSUZvcm1hdCk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyMTE6OmdldEJ1ZmZlcik6
CisgICAgICAgIChyeDo6Y29weVZlcnRleERhdGEpOgorICAgICAgICAocng6OmNvcHlGaXhlZFZl
cnRleERhdGEpOgorICAgICAgICAocng6OmNvcHlUb0Zsb2F0VmVydGV4RGF0YSk6CisgICAgICAg
IChyeDo6VmVydGV4QnVmZmVyMTE6OmdldFZlcnRleENvbnZlcnNpb24pOgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuaDogQWRkZWQuCisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmNwcDogQWRkZWQuCisgICAgICAg
IChyeDo6VmVydGV4QnVmZmVyOTo6VmVydGV4QnVmZmVyOSk6CisgICAgICAgIChyeDo6VmVydGV4
QnVmZmVyOTo6flZlcnRleEJ1ZmZlcjkpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6Omlu
aXRpYWxpemUpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6Om1ha2VWZXJ0ZXhCdWZmZXI5
KToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5OjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMpOgor
ICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6OnN0b3JlUmF3RGF0YSk6CisgICAgICAgIChyeDo6
VmVydGV4QnVmZmVyOTo6Z2V0U3BhY2VSZXF1aXJlZCk6CisgICAgICAgIChyeDo6VmVydGV4QnVm
ZmVyOTo6cmVxdWlyZXNDb252ZXJzaW9uKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5Ojpn
ZXRWZXJ0ZXhTaXplKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5OjpnZXREZWNsVHlwZSk6
CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6Z2V0QnVmZmVyU2l6ZSk6CisgICAgICAgIChy
eDo6VmVydGV4QnVmZmVyOTo6c2V0QnVmZmVyU2l6ZSk6CisgICAgICAgIChyeDo6VmVydGV4QnVm
ZmVyOTo6ZGlzY2FyZCk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6Z2V0QnVmZmVyKToK
KyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5Ojppbml0aWFsaXplVHJhbnNsYXRpb25zKToKKyAg
ICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5Ojp0eXBlSW5kZXgpOgorICAgICAgICAocng6OlZlcnRl
eEJ1ZmZlcjk6OmZvcm1hdENvbnZlcnRlcik6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6
c3BhY2VSZXF1aXJlZCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhC
dWZmZXI5Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4
RGF0YU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjplbGVtZW50c0luQnVmZmVyKToK
KyAgICAgICAgKHJ4OjpWZXJ0ZXhEYXRhTWFuYWdlcjo6VmVydGV4RGF0YU1hbmFnZXIpOgorICAg
ICAgICAocng6OlZlcnRleERhdGFNYW5hZ2VyOjp+VmVydGV4RGF0YU1hbmFnZXIpOgorICAgICAg
ICAocng6OmRpcmVjdFN0b3JhZ2VQb3NzaWJsZSk6CisgICAgICAgIChyeDo6VmVydGV4RGF0YU1h
bmFnZXI6OnByZXBhcmVWZXJ0ZXhEYXRhKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRl
cmVyL1ZlcnRleERhdGFNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
cmVuZGVyZXIvVmVydGV4RGVjbGFyYXRpb25DYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAocng6
OlZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OlZlcnRleERlY2xhcmF0aW9uQ2FjaGUpOgorICAgICAg
ICAocng6OlZlcnRleERlY2xhcmF0aW9uQ2FjaGU6On5WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlKToK
KyAgICAgICAgKHJ4OjpWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlOjphcHBseURlY2xhcmF0aW9uKToK
KyAgICAgICAgKHJ4OjpWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlOjptYXJrU3RhdGVEaXJ0eSk6Cisg
ICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmg6
IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvZ2VuZXJhdGVtaXAuaDog
QWRkZWQuCisgICAgICAgIChyeDo6TDg6OmF2ZXJhZ2UpOgorICAgICAgICAocng6OkE4TDg6OmF2
ZXJhZ2UpOgorICAgICAgICAocng6OkE4UjhHOEI4OjphdmVyYWdlKToKKyAgICAgICAgKHJ4OjpB
MTZCMTZHMTZSMTZGOjphdmVyYWdlKToKKyAgICAgICAgKHJ4OjpSMTZGOjphdmVyYWdlKToKKyAg
ICAgICAgKHJ4OjpSMTZHMTZGOjphdmVyYWdlKToKKyAgICAgICAgKHJ4OjpBMzJCMzJHMzJSMzJG
OjphdmVyYWdlKToKKyAgICAgICAgKHJ4OjpSMzJGOjphdmVyYWdlKToKKyAgICAgICAgKHJ4OjpS
MzJHMzJGOjphdmVyYWdlKToKKyAgICAgICAgKHJ4OjpSMzJHMzJCMzJGOjphdmVyYWdlKToKKyAg
ICAgICAgKHJ4OjpHZW5lcmF0ZU1pcCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9yZW5kZXJlcjExX3V0aWxzLmNwcDogQWRkZWQuCisgICAgICAgIChnbF9kM2QxMTo6Q29udmVy
dEJsZW5kRnVuYyk6CisgICAgICAgIChnbF9kM2QxMTo6Q29udmVydEJsZW5kT3ApOgorICAgICAg
ICAoZ2xfZDNkMTE6OkNvbnZlcnRDb2xvck1hc2spOgorICAgICAgICAoZ2xfZDNkMTE6OkNvbnZl
cnRDdWxsTW9kZSk6CisgICAgICAgIChnbF9kM2QxMTo6Q29udmVydENvbXBhcmlzb24pOgorICAg
ICAgICAoZ2xfZDNkMTE6OkNvbnZlcnREZXB0aE1hc2spOgorICAgICAgICAoZ2xfZDNkMTE6OkNv
bnZlcnRTdGVuY2lsTWFzayk6CisgICAgICAgIChnbF9kM2QxMTo6Q29udmVydFN0ZW5jaWxPcCk6
CisgICAgICAgIChnbF9kM2QxMTo6Q29udmVydEZpbHRlcik6CisgICAgICAgIChnbF9kM2QxMTo6
Q29udmVydFRleHR1cmVXcmFwKToKKyAgICAgICAgKGdsX2QzZDExOjpDb252ZXJ0TWluTE9EKToK
KyAgICAgICAgKGdsX2QzZDExOjpDb252ZXJ0TWF4TE9EKToKKyAgICAgICAgKGQzZDExX2dsOjpD
b252ZXJ0QmFja0J1ZmZlckZvcm1hdCk6CisgICAgICAgIChkM2QxMV9nbDo6Q29udmVydERlcHRo
U3RlbmNpbEZvcm1hdCk6CisgICAgICAgIChkM2QxMV9nbDo6Q29udmVydFJlbmRlcmJ1ZmZlckZv
cm1hdCk6CisgICAgICAgIChkM2QxMV9nbDo6Q29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdCk6
CisgICAgICAgIChnbF9kM2QxMTo6Q29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdCk6CisgICAgICAg
IChnbF9kM2QxMTo6Q29udmVydFRleHR1cmVGb3JtYXQpOgorICAgICAgICAoZDNkMTE6OlNldFBv
c2l0aW9uVGV4Q29vcmRWZXJ0ZXgpOgorICAgICAgICAoZDNkMTE6OlNldFBvc2l0aW9uRGVwdGhD
b2xvclZlcnRleCk6CisgICAgICAgIChkM2QxMTo6Q29tcHV0ZVBpeGVsU2l6ZUJpdHMpOgorICAg
ICAgICAoZDNkMTE6OkNvbXB1dGVCbG9ja1NpemVCaXRzKToKKyAgICAgICAgKGQzZDExOjpJc0Nv
bXByZXNzZWQpOgorICAgICAgICAoZDNkMTE6OkdldFRleHR1cmVGb3JtYXREaW1lbnNpb25BbGln
bm1lbnQpOgorICAgICAgICAoZDNkMTE6OklzRGVwdGhTdGVuY2lsRm9ybWF0KToKKyAgICAgICAg
KGQzZDExOjpHZXREZXB0aFRleHR1cmVGb3JtYXQpOgorICAgICAgICAoZDNkMTE6OkdldERlcHRo
U2hhZGVyUmVzb3VyY2VGb3JtYXQpOgorICAgICAgICAoZDNkMTE6OlNldERlYnVnTmFtZSk6Cisg
ICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmg6IEFkZGVk
LgorICAgICAgICAoZDNkMTE6OmlzRGV2aWNlTG9zdEVycm9yKToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyOV91dGlscy5jcHA6IEFkZGVkLgorICAgICAgICAoZ2xf
ZDNkOTo6Q29udmVydENvbXBhcmlzb24pOgorICAgICAgICAoZ2xfZDNkOTo6Q29udmVydENvbG9y
KToKKyAgICAgICAgKGdsX2QzZDk6OkNvbnZlcnRCbGVuZEZ1bmMpOgorICAgICAgICAoZ2xfZDNk
OTo6Q29udmVydEJsZW5kT3ApOgorICAgICAgICAoZ2xfZDNkOTo6Q29udmVydFN0ZW5jaWxPcCk6
CisgICAgICAgIChnbF9kM2Q5OjpDb252ZXJ0VGV4dHVyZVdyYXApOgorICAgICAgICAoZ2xfZDNk
OTo6Q29udmVydEN1bGxNb2RlKToKKyAgICAgICAgKGdsX2QzZDk6OkNvbnZlcnRDdWJlRmFjZSk6
CisgICAgICAgIChnbF9kM2Q5OjpDb252ZXJ0Q29sb3JNYXNrKToKKyAgICAgICAgKGdsX2QzZDk6
OkNvbnZlcnRNYWdGaWx0ZXIpOgorICAgICAgICAoZ2xfZDNkOTo6Q29udmVydE1pbkZpbHRlcik6
CisgICAgICAgIChnbF9kM2Q5OjpDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KToKKyAgICAgICAg
KGdsX2QzZDk6OkdldE11bHRpc2FtcGxlVHlwZUZyb21TYW1wbGVzKToKKyAgICAgICAgKGQzZDlf
Z2w6OkdldFN0ZW5jaWxTaXplKToKKyAgICAgICAgKGQzZDlfZ2w6OkdldEFscGhhU2l6ZSk6Cisg
ICAgICAgIChkM2Q5X2dsOjpHZXRTYW1wbGVzRnJvbU11bHRpc2FtcGxlVHlwZSk6CisgICAgICAg
IChkM2Q5X2dsOjpJc0Zvcm1hdENoYW5uZWxFcXVpdmFsZW50KToKKyAgICAgICAgKGQzZDlfZ2w6
OkNvbnZlcnRCYWNrQnVmZmVyRm9ybWF0KToKKyAgICAgICAgKGQzZDlfZ2w6OkNvbnZlcnREZXB0
aFN0ZW5jaWxGb3JtYXQpOgorICAgICAgICAoZDNkOV9nbDo6Q29udmVydFJlbmRlclRhcmdldEZv
cm1hdCk6CisgICAgICAgIChkM2Q5X2dsOjpHZXRFcXVpdmFsZW50Rm9ybWF0KToKKyAgICAgICAg
KGQzZDk6OklzQ29tcHJlc3NlZEZvcm1hdCk6CisgICAgICAgIChkM2Q5OjpDb21wdXRlUm93U2l6
ZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaDog
QWRkZWQuCisgICAgICAgIChkM2Q5Ojppc0RldmljZUxvc3RFcnJvcik6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL3JlbmRlcmVyL3NoYWRlcnMvQmxpdC5wczogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9zaGFkZXJzL0JsaXQudnM6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJH
TEVTdjIvcmVuZGVyZXIvc2hhZGVycy9DbGVhcjExLmhsc2w6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9QYXNzdGhyb3VnaDExLmhsc2w6IEFkZGVkLgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZDogQWRkZWQu
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFy
MTF2cy5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMv
Y29tcGlsZWQvY2xlYXJtdWx0aXBsZTExcHMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyc2luZ2xlMTFwcy5oOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY29tcG9u
ZW50bWFza3BzLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hh
ZGVycy9jb21waWxlZC9mbGlweXZzLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
cmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oOiBBZGRlZC4KKyAgICAgICAg
KiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2gxMXZz
Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21w
aWxlZC9wYXNzdGhyb3VnaGx1bTExcHMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVtYWxwaGExMXBzLmg6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9w
YXNzdGhyb3VnaHBzLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIv
c2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjExcHMuaDogQWRkZWQuCisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTEx
cHMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2Nv
bXBpbGVkL3N0YW5kYXJkdnMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9zaGFkZXJzL2dlbmVyYXRlX3NoYWRlcnMuYmF0OiBBZGRlZC4KKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL3JlbmRlcmVyL3ZlcnRleGNvbnZlcnNpb24uaDogQWRkZWQuCisgICAgICAgIChy
eDo6SWRlbnRpdHk6OmNvbnZlcnQpOgorICAgICAgICAocng6OkNhc3Q6OmNvbnZlcnQpOgorICAg
ICAgICAocng6Ok5vcm1hbGl6ZTo6Y29udmVydCk6CisgICAgICAgIChyeDo6Rml4ZWRUb0Zsb2F0
Ojpjb252ZXJ0KToKKyAgICAgICAgKHJ4OjpTaW1wbGVEZWZhdWx0VmFsdWVzOjp6ZXJvKToKKyAg
ICAgICAgKHJ4OjpTaW1wbGVEZWZhdWx0VmFsdWVzOjpvbmUpOgorICAgICAgICAocng6Ok5vcm1h
bGl6ZWREZWZhdWx0VmFsdWVzOjp6ZXJvKToKKyAgICAgICAgKHJ4OjpOb3JtYWxpemVkRGVmYXVs
dFZhbHVlczo6b25lKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhEYXRhQ29udmVydGVyOjpjb252ZXJ0
QXJyYXkpOgorICAgICAgICAocng6OlZlcnRleERhdGFDb252ZXJ0ZXI6OnBvaW50ZXJBZGRCeXRl
cyk6CisgICAgICAgIChyeDo6VmVydGV4RGF0YUNvbnZlcnRlcjo6Y29weUNvbXBvbmVudCk6Cisg
ICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZXNvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL3V0aWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICAoZ2w6OlVuaWZvcm1Db21w
b25lbnRDb3VudCk6CisgICAgICAgIChnbDo6VW5pZm9ybUNvbXBvbmVudFR5cGUpOgorICAgICAg
ICAoZ2w6OlVuaWZvcm1Db21wb25lbnRTaXplKToKKyAgICAgICAgKGdsOjpVbmlmb3JtSW50ZXJu
YWxTaXplKToKKyAgICAgICAgKGdsOjpVbmlmb3JtRXh0ZXJuYWxTaXplKToKKyAgICAgICAgKGds
OjpWYXJpYWJsZVJvd0NvdW50KToKKyAgICAgICAgKGdsOjpWYXJpYWJsZUNvbHVtbkNvdW50KToK
KyAgICAgICAgKGdsOjpBbGxvY2F0ZUZpcnN0RnJlZUJpdHMpOgorICAgICAgICAoZ2w6OkNvbXB1
dGVQaXRjaCk6CisgICAgICAgIChnbDo6Q29tcHV0ZUNvbXByZXNzZWRQaXRjaCk6CisgICAgICAg
IChnbDo6Q29tcHV0ZUNvbXByZXNzZWRTaXplKToKKyAgICAgICAgKGdsOjpJc0NvbXByZXNzZWQp
OgorICAgICAgICAoZ2w6OklzRGVwdGhUZXh0dXJlKToKKyAgICAgICAgKGdsOjpJc1N0ZW5jaWxU
ZXh0dXJlKToKKyAgICAgICAgKGdsOjpNYWtlVmFsaWRTaXplKToKKyAgICAgICAgKGdsOjpDb21w
dXRlUGl4ZWxTaXplKToKKyAgICAgICAgKGdsOjpJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0KToKKyAg
ICAgICAgKGdsOjpJc0ludGVybmFsVGV4dHVyZVRhcmdldCk6CisgICAgICAgIChnbDo6Q29udmVy
dFNpemVkSW50ZXJuYWxGb3JtYXQpOgorICAgICAgICAoZ2w6OkV4dHJhY3RGb3JtYXQpOgorICAg
ICAgICAoZ2w6OkV4dHJhY3RUeXBlKToKKyAgICAgICAgKGdsOjpJc0NvbG9yUmVuZGVyYWJsZSk6
CisgICAgICAgIChnbDo6SXNEZXB0aFJlbmRlcmFibGUpOgorICAgICAgICAoZ2w6OklzU3RlbmNp
bFJlbmRlcmFibGUpOgorICAgICAgICAoZ2w6OklzRmxvYXQzMkZvcm1hdCk6CisgICAgICAgIChn
bDo6SXNGbG9hdDE2Rm9ybWF0KToKKyAgICAgICAgKGdsOjpHZXRBbHBoYVNpemUpOgorICAgICAg
ICAoZ2w6OkdldFJlZFNpemUpOgorICAgICAgICAoZ2w6OkdldEdyZWVuU2l6ZSk6CisgICAgICAg
IChnbDo6R2V0Qmx1ZVNpemUpOgorICAgICAgICAoZ2w6OkdldERlcHRoU2l6ZSk6CisgICAgICAg
IChnbDo6R2V0U3RlbmNpbFNpemUpOgorICAgICAgICAoZ2w6OklzVHJpYW5nbGVNb2RlKToKKyAg
ICAgICAgKGdldFRlbXBQYXRoKToKKyAgICAgICAgKHdyaXRlRmlsZSk6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi91dGlsaXRpZXMuaDogQWRkZWQuCisgICAgICAgICogc3JjL3RoaXJkX3BhcnR5
L211cm11cmhhc2g6IEFkZGVkLgorICAgICAgICAqIHNyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNo
L0xJQ0VOU0U6IEFkZGVkLgorICAgICAgICAqIHNyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011
cm11ckhhc2gzLmNwcDogQWRkZWQuCisgICAgICAgIChyb3RsMzIpOgorICAgICAgICAocm90bDY0
KToKKyAgICAgICAgKGdldGJsb2NrKToKKyAgICAgICAgKGZtaXgpOgorICAgICAgICAoTXVybXVy
SGFzaDNfeDg2XzMyKToKKyAgICAgICAgKE11cm11ckhhc2gzX3g4Nl8xMjgpOgorICAgICAgICAo
TXVybXVySGFzaDNfeDY0XzEyOCk6CisgICAgICAgICogc3JjL3RoaXJkX3BhcnR5L211cm11cmhh
c2gvTXVybXVySGFzaDMuaDogQWRkZWQuCisKIDIwMTMtMDctMjAgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZWQgQU5HTEUgaXMgbGVha2luZyBsaWtlIGEg
c2lldmUKQEAgLTcwLDcgKzIwMjMsNyBAQAogICAgICAgICAoVEludGVybUJpbmFyeTo6cHJvbW90
ZSk6CiAgICAgICAgIChDb21wYXJlU3RydWN0KToKICAgICAgICAgKENvbXBhcmVTdHJ1Y3R1cmUp
OgotICAgICAgICAoVEludGVybUNvbnN0YW50VW5pb246OmZvbGQpOgorICAgICAgICAoVEludGVy
bUNvbnN0YW50VW5pb246OmZvbGQpOiBBZGRlZCBpbXBsaWVkIHN0YXRpY19jYXN0cyB0byBmaXgg
Y29tcGlsaW5nIGVycm9ycyBvbiBNYWMuCiAgICAgICAgIChUSW50ZXJtZWRpYXRlOjpwcm9tb3Rl
Q29uc3RhbnRVbmlvbik6CiAgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwOgog
ICAgICAgICAoVE91dHB1dEdMU0w6OndyaXRlVmFyaWFibGVQcmVjaXNpb24pOgpAQCAtMTY4LDcg
KzIxMjEsNyBAQAogICAgICAgICAoVFBhcmFtZXRlcjo6Y29weVBhcmFtKToKICAgICAgICAgKFRG
dW5jdGlvbjo6cmVsYXRlVG9FeHRlbnNpb24pOgogICAgICAgICAoVEZ1bmN0aW9uOjpnZXRFeHRl
bnNpb24pOgotICAgICAgICAqIHNyYy9jb21waWxlci9UeXBlcy5oOgorICAgICAgICAqIHNyYy9j
b21waWxlci9UeXBlcy5oOiBSZW1vdmVkIGVudW0gYml0IGZpZWxkcyB0byBmaXggZ2NjIGNvbXBp
bGVyIGVycm9ycy4KICAgICAgICAgKE5ld1Bvb2xUVHlwZUxpc3QpOgogICAgICAgICAoVFR5cGU6
OlRUeXBlKToKICAgICAgICAgKFRUeXBlOjpjb3B5VHlwZSk6CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9BTkdMRS5wbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9BTkdMRS5wbGlzdAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvQU5HTEUucGxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTEwLDkgKzEwLDkgQEAKIAkJPGtl
eT5PcGVuU291cmNlV2Vic2l0ZVVSTDwva2V5PgogCQk8c3RyaW5nPmh0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9hbmdsZXByb2plY3QvPC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJjZVNDTTwva2V5
PgotCQk8c3RyaW5nPnN2biBjbyAtcjE2NDEgaHR0cDovL2FuZ2xlcHJvamVjdC5nb29nbGVjb2Rl
LmNvbS9zdm4vdHJ1bmsvPC9zdHJpbmc+CisJCTxzdHJpbmc+Z2l0IGNsb25lIGh0dHBzOi8vY29k
ZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0LyAmJiBjZCBhbmdsZXByb2plY3QgJiYgZ2l0IGNo
ZWNrb3V0IDA0NzM3M2FhM2ViNDA4YmU2MmJlNTJhZGU4NDBmYTVmMTFlNzIzMzc8L3N0cmluZz4K
IAkJPGtleT5PcGVuU291cmNlSW1wb3J0RGF0ZTwva2V5PgotCQk8c3RyaW5nPjIwMTMtMDEtMDQ8
L3N0cmluZz4KKwkJPHN0cmluZz4yMDEzLTA3LTIyPC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJj
ZUxpY2Vuc2U8L2tleT4KIAkJPHN0cmluZz5CU0Q8L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNl
TGljZW5zZUZpbGU8L2tleT4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FVVEhPUlMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQVVUSE9SUwkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FVVEhPUlMJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzIgQEAKKyMgVGhpcyBpcyB0aGUgb2ZmaWNpYWwgbGlzdCBvZiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzCisjIGZvciBjb3B5cmlnaHQgcHVycG9zZXMuCisjIFRoaXMgZmlsZSBpcyBk
aXN0aW5jdCBmcm9tIHRoZSBDT05UUklCVVRPUlMgZmlsZXMuCisjIFNlZSB0aGUgbGF0dGVyIGZv
ciBhbiBleHBsYW5hdGlvbi4KKworIyBOYW1lcyBzaG91bGQgYmUgYWRkZWQgdG8gdGhpcyBmaWxl
IGFzCisjCU5hbWUgb3IgT3JnYW5pemF0aW9uCisjIEVtYWlsIGFkZHJlc3NlcyBmb3IgaW5kaXZp
ZHVhbHMgYXJlIHRyYWNrZWQgZWxzZXdoZXJlIHRvIGF2b2lkIHNwYW0uCisKK0dvb2dsZSBJbmMu
CitUcmFuc0dhbWluZyBJbmMuCiszRExhYnMgSW5jLiBMdGQuCisKK0Fkb2JlIFN5c3RlbXMgSW5j
LgorQXV0b2Rlc2ssIEluYy4KK0Nsb3VkIFBhcnR5LCBJbmMuCitJbnRlbCBDb3Jwb3JhdGlvbgor
TW96aWxsYSBDb3Jwb3JhdGlvbgorVHVyYnVsZW56CitLbGFyw6RsdmRhbGVucyBEYXRha29uc3Vs
dCBBQgorCitKYWNlayBDYWJhbgorTWFyayBDYWxsb3cKK0dpbm4gQ2hlbgorSmFtZXMgSGF1eHdl
bGwKK1NhbSBIb2NldmFyCitQaWVycmUgTGV2ZWlsbGUKK0pvbmF0aGFuIExpdQorQm95aW5nIEx1
CitBaXRvciBNb3Jlbm8KK1l1cmkgTydEb25uZWxsCitKb3NoIFNvcmVmCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9DT05UUklCVVRPUlMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvQ09OVFJJQlVUT1JTCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ09OVFJJQlVUT1JTCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2IEBACisjIFRo
aXMgaXMgdGhlIG9mZmljaWFsIGxpc3Qgb2YgcGVvcGxlIHdobyBjYW4gY29udHJpYnV0ZQ0KKyMg
KGFuZCB3aG8gaGF2ZSBjb250cmlidXRlZCkgY29kZSB0byB0aGUgQU5HTEUgcHJvamVjdA0KKyMg
cmVwb3NpdG9yeS4NCisjIFRoZSBBVVRIT1JTIGZpbGUgbGlzdHMgdGhlIGNvcHlyaWdodCBob2xk
ZXJzOyB0aGlzIGZpbGUNCisjIGxpc3RzIHBlb3BsZS4gIEZvciBleGFtcGxlLCBHb29nbGUgZW1w
bG95ZWVzIGFyZSBsaXN0ZWQgaGVyZQ0KKyMgYnV0IG5vdCBpbiBBVVRIT1JTLCBiZWNhdXNlIEdv
b2dsZSBob2xkcyB0aGUgY29weXJpZ2h0Lg0KKyMNCisNCitUcmFuc0dhbWluZyBJbmMuDQorIE5p
Y29sYXMgQ2FwZW5zDQorIERhbmllbCBLb2NoDQorIEdlb2ZmIExhbmcNCisgQW5kcmV3IExld3lj
a3kNCisgSmFtaWUgTWFkaWxsDQorIEdhdnJpZWwgU3RhdGUNCisgU2hhbm5vbiBXb29kcw0KKw0K
K0dvb2dsZSBJbmMuDQorIEJyZW50IEF1c3Rpbg0KKyBNaWNoYWVsIEJhaQ0KKyBKb2huIEJhdW1h
bg0KKyBQZXRlciBCZXZlcmxvbw0KKyBTdGV2ZSBCbG9jaw0KKyBSYWNoZWwgQmx1bQ0KKyBFcmlj
IEJvcmVuDQorIEhlbnJ5IEJyaWRnZQ0KKyBOYXQgRHVjYQ0KKyBQZXRlciBLYXN0aW5nDQorIFZh
bmdlbGlzIEtva2tldmlzDQorIFpoZW55YW8gTW8NCisgRGFuaWVsIE5pY29hcmENCisgQWxhc3Rh
aXIgUGF0cmljaw0KKyBBbG9rIFByaXlhZGFyc2hpDQorIEtlbm5ldGggUnVzc2VsbA0KKyBCcmlh
biBTYWxvbW9uDQorIEdyZWdnIFRhdmFyZXMNCisgSmVmZiBUaW1hbnVzDQorIEJlbiBWYW5paw0K
KyBBZHJpZW5uZSBXYWxrZXINCisgdGhlc3RpZ0BjaHJvbWl1bS5vcmcNCisgSnVzdGluIFNjaHVo
DQorDQorQWRvYmUgU3lzdGVtcyBJbmMuDQorIEFsZXhhbmRydSBDaGljdWxpdGENCisgU3RldmUg
TWlubnMNCisgTWF4IFZ1am92aWMNCisNCitBdXRvZGVzaywgSW5jLg0KKyBSYW5nZXIgSGFya2UN
CisNCitDbG91ZCBQYXJ0eSwgSW5jLg0KKyBDb25vciBEaWNraW5zb24NCisNCitJbnRlbCBDb3Jw
b3JhdGlvbg0KKyBKaW4gWWFuZw0KKyBBbmR5IENoZW4NCisgSm9zaCBUcmlwbGV0dA0KKw0KK0ts
YXLDpGx2ZGFsZW5zIERhdGFrb25zdWx0IEFCDQorIE1pbGlhbiBXb2xmZg0KKw0KK01vemlsbGEg
Q29ycC4NCisgRWhzYW4gQWtoZ2FyaQ0KKyBKZWZmIEdpbGJlcnQNCisgTWlrZSBIb21tZXkNCisg
QmVub2l0IEphY29iDQorIE1ha290byBLYXRvDQorIFZsYWRpbWlyIFZ1a2ljZXZpYw0KKw0KK1R1
cmJ1bGVueg0KKyBNaWNoYWVsIEJyYWl0aHdhaXRlDQorDQorVWxyaWsgUGVyc3NvbiAoZGRlZnJv
c3R0KQ0KK01hcmsgQmFubmVyIChzdGFuZGFyZDhtYnApDQorRGF2aWQgS2lsemVyDQorDQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvREVQUwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9ERVBTCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvREVQUwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOCBAQAorZGVwcyA9IHsKKyAgInRydW5r
L3RoaXJkX3BhcnR5L2d5cCI6CisgICAgICAiaHR0cDovL2d5cC5nb29nbGVjb2RlLmNvbS9zdm4v
dHJ1bmtAMTU2NCIsCisKKyAgInRydW5rL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QiOgorICAgICAg
Imh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVua0A1NzMiLCAjcmVsZWFz
ZSAxLjYuMAorCisgICJ0cnVuay90aGlyZF9wYXJ0eS9nb29nbGVtb2NrIjoKKyAgICAgICJodHRw
Oi8vZ29vZ2xlbW9jay5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmtAMzg3IiwgI3JlbGVhc2UgMS42
LjAKK30KKworaG9va3MgPSBbCisgIHsKKyAgICAjIEEgY2hhbmdlIHRvIGEgLmd5cCwgLmd5cGks
IG9yIHRvIEdZUCBpdHNlbGYgc2hvdWxkIHJ1biB0aGUgZ2VuZXJhdG9yLgorICAgICJwYXR0ZXJu
IjogIi4iLAorICAgICJhY3Rpb24iOiBbInB5dGhvbiIsICJ0cnVuay9idWlsZC9neXBfYW5nbGUi
XSwKKyAgfSwKK10KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0Rlcml2ZWRT
b3VyY2VzLm1ha2UJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK2FsbDogZ2xzbGFuZ19s
ZXguY3BwIGdsc2xhbmdfdGFiLmggZ2xzbGFuZ190YWIuY3BwIEV4cHJlc3Npb25QYXJzZXIuY3Bw
IFRva2VuaXplci5jcHAKKworZ2xzbGFuZ19sZXguY3BwOiBBTkdMRS9zcmMvY29tcGlsZXIvZ2xz
bGFuZy5sCisJZmxleCAtLW5vbGluZSAtLW5vdW5pc3RkIC0tb3V0ZmlsZT1nbHNsYW5nX2xleC5j
cHAgQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcubAorCitnbHNsYW5nX3RhYi5oIGdsc2xhbmdf
dGFiLmNwcDogQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcueQorCWJpc29uIC0tbm8tbGluZXMg
LS1za2VsZXRvbj15YWNjLmMgLS1kZWZpbmVzPWdsc2xhbmdfdGFiLmggLS1vdXRwdXQ9Z2xzbGFu
Z190YWIuY3BwIEFOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkKKworRXhwcmVzc2lvblBhcnNl
ci5jcHA6IEFOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci55
CisJYmlzb24gLS1uby1saW5lcyAtLXNrZWxldG9uPXlhY2MuYyAtLW91dHB1dD1FeHByZXNzaW9u
UGFyc2VyLmNwcCBBTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJz
ZXIueQorCitUb2tlbml6ZXIuY3BwOiBBTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rv
a2VuaXplci5sCisJZmxleCAtLW5vbGluZSAtLW5vdW5pc3RkIC0tb3V0ZmlsZT1Ub2tlbml6ZXIu
Y3BwIEFOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmwKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxNTI5NzkpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAt
MzksMTAgKzM5LDEwIEBAIGxpYkFOR0xFX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5oIFwK
IAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5j
eUdyYXBoT3V0cHV0LmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBcCisJU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAgXAorCVNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguaCBcCiAJU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwIFwKIAlT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5o
IFwKLQlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9u
LmNwcCBcCi0JU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vy
c2lvbi5oIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlhZ25vc3Rp
Y3MuY3BwIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlhZ25vc3Rp
Y3MuaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpcmVjdGl2ZUhh
bmRsZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0xJQ0VOU0UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvTElDRU5TRQkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0xJQ0VOU0UJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzIgQEAKKy8vIENvcHlyaWdodCAoQykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIAorLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworLy8gYXJlIG1ldDoKKy8vCisvLyAgICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLworLy8g
ICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgCisvLyAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKy8vICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisvLworLy8gICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgVHJhbnNHYW1pbmcgSW5jLiwgR29v
Z2xlIEluYy4sIDNETGFicyBJbmMuCisvLyAgICAgTHRkLiwgbm9yIHRoZSBuYW1lcyBvZiB0aGVp
ciBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZQorLy8gICAgIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYworLy8g
ICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCAKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTCisvLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorLy8gQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorLy8gSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywKKy8vIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKy8vIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4KKy8v
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRQorLy8gUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9SRUFETUUuY2hyb21pdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvUkVBRE1FLmNocm9taXVtCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvUkVBRE1FLmNocm9taXVtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBA
CitOYW1lOiBBTkdMRQorVVJMOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVj
dC8KK1ZlcnNpb246IDI0MjIKK0xpY2Vuc2U6IEJTRAorTGljZW5zZSBGaWxlOiBMSUNFTlNFCisK
K0Rlc2NyaXB0aW9uOgorQU5HTEUgaXMgYSBjb25mb3JtYW50IGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBPcGVuR0wgRVMgMi4wCitzcGVjaWZpY2F0aW9uIHRoYXQgaXMgaGFyZHdhcmXigJBhY2NlbGVy
YXRlZCB2aWEgRGlyZWN0M0QuCisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1Rhcmdl
dC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvVGFyZ2V0LnByaQko
cmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvVGFyZ2V0LnByaQko
d29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQCBIRUFERVJTICs9IFwKICAgICBzcmMvY29t
cGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmggXAogICAgIHNyYy9jb21waWxlci9kZXBn
cmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmggXAogICAgIHNyYy9jb21waWxlci9kZXBncmFw
aC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuaCBcCisgICAgc3JjL2NvbXBpbGVyL0RldGVjdENhbGxE
ZXB0aC5oIFwKICAgICBzcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oIFwKLSAgICBz
cmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmggXAogICAgIHNyYy9jb21waWxlci9EaWFnbm9z
dGljcy5oIFwKICAgICBzcmMvY29tcGlsZXIvRGlyZWN0aXZlSGFuZGxlci5oIFwKICAgICBzcmMv
Y29tcGlsZXIvRXh0ZW5zaW9uQmVoYXZpb3IuaCBcCkBAIC05Miw4ICs5Miw4IEBAIFNPVVJDRVMg
Kz0gXAogICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNw
cCBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAg
XAogICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAg
XAorICAgIHNyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwIFwKICAgICBzcmMvY29tcGls
ZXIvRGV0ZWN0RGlzY29udGludWl0eS5jcHAgXAotICAgIHNyYy9jb21waWxlci9EZXRlY3RSZWN1
cnNpb24uY3BwIFwKICAgICBzcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwIFwKICAgICBzcmMv
Y29tcGlsZXIvRGlyZWN0aXZlSGFuZGxlci5jcHAgXAogICAgIHNyYy9jb21waWxlci9Gb3JMb29w
VW5yb2xsLmNwcCBcCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9jb2RlcmV2aWV3LnNl
dHRpbmdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2NvZGVyZXZpZXcu
c2V0dGluZ3MJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9jb2RlcmV2
aWV3LnNldHRpbmdzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKKyMgVGhpcyBmaWxlIGlz
IHVzZWQgYnkgZ2NsIHRvIGdldCByZXBvc2l0b3J5IHNwZWNpZmljIGluZm9ybWF0aW9uLg0KK0NP
REVfUkVWSUVXX1NFUlZFUjogY29kZXJldmlldy5hcHBzcG90LmNvbQ0KK0NDX0xJU1Q6IGFuZ2xl
cHJvamVjdC1yZXZpZXdAZ29vZ2xlZ3JvdXBzLmNvbQ0KK1ZJRVdfVkM6IGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vcC9hbmdsZXByb2plY3Qvc291cmNlL2RldGFpbD9yPQ0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBA
QAogCQk0OTk1MUMwMzE0QjdBQUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDIxNEI3QUFCMzAw
NjBFOTZFIC8qIGxlbmd0aF9saW1pdHMuaCAqLzsgfTsKIAkJNDk5NTFDMDkxNEI3QUFEODAwNjBF
OTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAvKiBCdWls
dEluRnVuY3Rpb25FbXVsYXRvci5jcHAgKi87IH07CiAJCTQ5OTUxQzBBMTRCN0FBRDgwMDYwRTk2
RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDYxNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yLmggKi87IH07Ci0JCTQ5OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBE
ZXRlY3RSZWN1cnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDk5NTFDMDcxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5jcHAg
Ki87IH07Ci0JCTQ5OTUxQzBDMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA4MTRC
N0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLzsgfTsKKwkJNUNCMTNGRDQxNzlE
QjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IxM0ZEMjE3OURCM0ZEMDAxRjg1MUQgLyogRGV0
ZWN0Q2FsbERlcHRoLmNwcCAqLzsgfTsKKwkJNUNCMTNGRDUxNzlEQjNGRDAwMUY4NTFEIC8qIERl
dGVjdENhbGxEZXB0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNCMTNGRDMxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0aC5oICovOyB9
OwogCQk5MEQ5QjEwMjEyRTExRENCMDAyRDQyNTUgLyogQ29tcGlsZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBEOUIwRjkxMkUxMURDQjAwMkQ0
MjU1IC8qIENvbXBpbGVyLmNwcCAqLzsgfTsKIAkJOTBEOUIxMDMxMkUxMURDQjAwMkQ0MjU1IC8q
IEV4dGVuc2lvbkJlaGF2aW9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MEQ5QjBGQTEyRTExRENCMDAyRDQyNTUgLyogRXh0ZW5zaW9uQmVoYXZpb3Iu
aCAqLzsgfTsKIAkJOTBEOUIxMDQxMkUxMURDQjAwMkQ0MjU1IC8qIGdsc2xhbmdfbGV4LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMEZCMTJF
MTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5nX2xleC5jcHAgKi87IH07CkBAIC0xNDAsOCArMTQwLDgg
QEAKIAkJNDk5NTFDMDIxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbGVuZ3RoX2xpbWl0cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OTk1MUMwNTE0QjdBQUQ3MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDk5NTFDMDcxNEI3QUFEODAwNjBFOTZFIC8q
IERldGVjdFJlY3Vyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEZXRlY3RSZWN1cnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OTk1
MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERldGVjdFJlY3Vyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1Q0IxM0ZEMjE3OURCM0ZEMDAxRjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERldGVjdENhbGxEZXB0aC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjEzRkQzMTc5REIzRkQwMDFGODUx
RCAvKiBEZXRlY3RDYWxsRGVwdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGV0ZWN0Q2FsbERlcHRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM1
MTIwOEM2OEIwMDFDODczRSAvKiBBTkdMRS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBBTkdMRS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUQ3QzU5QzYxMjA4QzY4QjAwMUM4NzNFIC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUQ3QzU5QzcxMjA4QzY4QjAwMUM4NzNFIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zOTksOCArMzk5LDggQEAKIAkJCQlGQjM5RDIy
NTEyMDBGMzVBMDAwODhFNjkgLyogQ29uc3RhbnRVbmlvbi5oICovLAogCQkJCUZCMzlEMjI2MTIw
MEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5jcHAgKi8sCiAJCQkJRkIzOUQyMjcxMjAwRjM1QTAwMDg4
RTY5IC8qIGRlYnVnLmggKi8sCi0JCQkJNDk5NTFDMDcxNEI3QUFEODAwNjBFOTZFIC8qIERldGVj
dFJlY3Vyc2lvbi5jcHAgKi8sCi0JCQkJNDk5NTFDMDgxNEI3QUFEODAwNjBFOTZFIC8qIERldGVj
dFJlY3Vyc2lvbi5oICovLAorCQkJCTVDQjEzRkQzMTc5REIzRkQwMDFGODUxRCAvKiBEZXRlY3RD
YWxsRGVwdGguaCAqLywKKwkJCQk1Q0IxM0ZEMjE3OURCM0ZEMDAxRjg1MUQgLyogRGV0ZWN0Q2Fs
bERlcHRoLmNwcCAqLywKIAkJCQlBMjY1NjdCMDE1OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25vc3Rp
Y3MuY3BwICovLAogCQkJCUEyNjU2N0IxMTU5QzIxQjEwMDM5ODUzOSAvKiBEaWFnbm9zdGljcy5o
ICovLAogCQkJCUEyNjU2N0IyMTU5QzIxQjEwMDM5ODUzOSAvKiBEaXJlY3RpdmVIYW5kbGVyLmNw
cCAqLywKQEAgLTUzMCw3ICs1MzAsNiBAQAogCQkJCUEyNjU2ODNBMTU5QzIzRTEwMDM5ODUzOSAv
KiBEZXBlbmRlbmN5R3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjU2ODNDMTU5QzIzRTEw
MDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MjY1NjgzRTE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggaW4gSGVh
ZGVycyAqLywKLQkJCQk0OTk1MUMwQzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1NjdCQzE1OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25v
c3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEFEMTY5NzRERUQwMDZGQUE1QSAvKiBE
aWFnbm9zdGljc0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjU2N0JFMTU5QzIxQjEwMDM5
ODUzOSAvKiBEaXJlY3RpdmVIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTU2OSw2ICs1Njgs
NyBAQAogCQkJCTkwRDlCMTE4MTJFMTFERDYwMDJENDI1NSAvKiBWYXJpYWJsZUluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUEyNjRGOENBMTY5NzRFMkEwMDZGQUE1QSAvKiBWYXJpYWJsZVBhY2tl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTBEOUIxMUExMkUxMURENjAwMkQ0MjU1IC8qIFZlcnNp
b25HTFNMLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0IxM0ZENTE3OURCM0ZEMDAxRjg1MUQgLyog
RGV0ZWN0Q2FsbERlcHRoLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTYzNSw3ICs2MzUsNiBAQAogCQkJ
CUEyNjU2ODNCMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUEyNjU2ODNEMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5
R3JhcGhPdXRwdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NTY4M0YxNTlDMjNFMTAwMzk4
NTM5IC8qIERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ5
OTUxQzBCMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTI2NTY3QkIxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUEyNjRGOEFDMTY5NzRERUQwMDZGQUE1QSAvKiBEaWFnbm9zdGljc0Jh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NTY3QkQxNTlDMjFCMTAwMzk4NTM5IC8qIERp
cmVjdGl2ZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC02ODEsNiArNjgwLDcgQEAKIAkJ
CQk5MEQ5QjExNzEyRTExREQ2MDAyRDQyNTUgLyogVmFyaWFibGVJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUEyNjRGOEM5MTY5NzRFMkEwMDZGQUE1QSAvKiBWYXJpYWJsZVBhY2tlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5MEQ5QjExOTEyRTExREQ2MDAyRDQyNTUgLyogVmVyc2lvbkdM
U0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUNCMTNGRDQxNzlEQjNGRDAwMUY4NTFEIC8qIERl
dGVjdENhbGxEZXB0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL2luY2x1ZGUvRUdML2VnbGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbGV4dC5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzA2LDYgKzMwNiwxMiBAQCB0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5F
R0xRCiAjZGVmaW5lIEVHTF9TT0ZUV0FSRV9ESVNQTEFZX0FOR0xFICgoRUdMTmF0aXZlRGlzcGxh
eVR5cGUpLTEpCiAjZW5kaWYKIAorI2lmbmRlZiBFR0xfQU5HTEVfZGlyZWN0M2RfZGlzcGxheQor
I2RlZmluZSBFR0xfQU5HTEVfZGlyZWN0M2RfZGlzcGxheSAxCisjZGVmaW5lIEVHTF9EM0QxMV9F
TFNFX0QzRDlfRElTUExBWV9BTkdMRSAoKEVHTE5hdGl2ZURpc3BsYXlUeXBlKS0yKQorI2RlZmlu
ZSBFR0xfRDNEMTFfT05MWV9ESVNQTEFZX0FOR0xFICgoRUdMTmF0aXZlRGlzcGxheVR5cGUpLTMp
CisjZW5kaWYKKwogI2lmbmRlZiBFR0xfQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFy
ZV9oYW5kbGUKICNkZWZpbmUgRUdMX0FOR0xFX3N1cmZhY2VfZDNkX3RleHR1cmVfMmRfc2hhcmVf
aGFuZGxlIDEKICNkZWZpbmUgRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRQkw
eDMyMDAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9n
bDJleHQuaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5j
bHVkZS9HTEVTMi9nbDJleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTU2LDYgKzU1Niw0NCBAQCB0
eXBlZGVmIHZvaWQqIEdMZWdsSW1hZ2VPRVM7CiAjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQx
NV9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VGCiAjZW5kaWYKIAorLyog
R0xfRVhUX2RyYXdfYnVmZmVycyAqLworI2lmbmRlZiBHTF9FWFRfZHJhd19idWZmZXJzCisjZGVm
aW5lIEdMX01BWF9EUkFXX0JVRkZFUlNfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4ODgyNAorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjBfRVhUICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDg4MjUKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxX0VYVCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI2CisjZGVmaW5lIEdMX0RS
QVdfQlVGRkVSMl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgy
NworI2RlZmluZSBHTF9EUkFXX0JVRkZFUjNfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDg4MjgKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVI0X0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI5CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVS
NV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyQQorI2RlZmlu
ZSBHTF9EUkFXX0JVRkZFUjZfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDg4MkIKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVI3X0VYVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4ODJDCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSOF9FWFQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyRAorI2RlZmluZSBHTF9EUkFX
X0JVRkZFUjlfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MkUK
KyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxMF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4ODJGCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTFfRVhUICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgzMAorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjEy
X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MzEKKyNkZWZpbmUg
R0xfRFJBV19CVUZGRVIxM19FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4ODMyCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTRfRVhUICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODgzMworI2RlZmluZSBHTF9EUkFXX0JVRkZFUjE1X0VYVCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MzQKKyNkZWZpbmUgR0xfQ09MT1Jf
QVRUQUNITUVOVDBfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0UwCisj
ZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4OENFMQorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMl9FWFQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDhDRTIKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVO
VDNfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0UzCisjZGVmaW5lIEdM
X0NPTE9SX0FUVEFDSE1FTlQ0X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
OENFNAorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UNV9FWFQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDhDRTUKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDZfRVhUICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U2CisjZGVmaW5lIEdMX0NPTE9SX0FU
VEFDSE1FTlQ3X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFNworI2Rl
ZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UOF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDhDRTgKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDlfRVhUICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4Q0U5CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQx
MF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFQQorI2RlZmluZSBHTF9D
T0xPUl9BVFRBQ0hNRU5UMTFfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhD
RUIKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDEyX0VYVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4Q0VDCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxM19FWFQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFRAorI2RlZmluZSBHTF9DT0xPUl9BVFRB
Q0hNRU5UMTRfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRUUKKyNkZWZp
bmUgR0xfQ09MT1JfQVRUQUNITUVOVDE1X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4Q0VGCisjZGVmaW5lIEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UU19FWFQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4OENERgorI2VuZGlmCisKIC8qIEdMX05WX2Zib19jb2xvcl9h
dHRhY2htZW50cyAqLwogI2lmbmRlZiBHTF9OVl9mYm9fY29sb3JfYXR0YWNobWVudHMKICNkZWZp
bmUgR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTX05WICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDhDREYKQEAgLTEzMzEsNiArMTM2OSwxNCBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xEcmF3QnVmZmVyCiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdCVUZG
RVJTTlZQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpOwogI2VuZGlmCiAKKyNp
Zm5kZWYgR0xfRVhUX2RyYXdfYnVmZmVycworI2RlZmluZSBHTF9FWFRfZHJhd19idWZmZXJzIDEK
KyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xEcmF3QnVmZmVyc0VYVCAoR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpOworI2VuZGlm
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdCVUZGRVJTRVhUUFJPQykgKEdM
c2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKTsKKyNlbmRpZgorCiAvKiBHTF9OVl9mYm9fY29s
b3JfYXR0YWNobWVudHMgKi8KICNpZm5kZWYgR0xfTlZfZmJvX2NvbG9yX2F0dGFjaG1lbnRzCiAj
ZGVmaW5lIEdMX05WX2Zib19jb2xvcl9hdHRhY2htZW50cyAxCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgJKHJldmlz
aW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9T
aGFkZXJMYW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTc4LDkgKzc4LDExIEBAIHR5cGVkZWYgZW51bSB7
CiB9IFNoU2hhZGVyU3BlYzsKIAogdHlwZWRlZiBlbnVtIHsKLSAgU0hfRVNTTF9PVVRQVVQgPSAw
eDhCNDUsCi0gIFNIX0dMU0xfT1VUUFVUID0gMHg4QjQ2LAotICBTSF9ITFNMX09VVFBVVCA9IDB4
OEI0NworICBTSF9FU1NMX09VVFBVVCAgID0gMHg4QjQ1LAorICBTSF9HTFNMX09VVFBVVCAgID0g
MHg4QjQ2LAorICBTSF9ITFNMX09VVFBVVCAgID0gMHg4QjQ3LAorICBTSF9ITFNMOV9PVVRQVVQg
ID0gMHg4QjQ3LAorICBTSF9ITFNMMTFfT1VUUFVUID0gMHg4QjQ4CiB9IFNoU2hhZGVyT3V0cHV0
OwogCiB0eXBlZGVmIGVudW0gewpAQCAtMTE2LDcgKzExOCw4IEBAIHR5cGVkZWYgZW51bSB7CiAg
IFNIX01BUFBFRF9OQU1FX01BWF9MRU5HVEggICAgICA9ICAweDYwMDAsCiAgIFNIX05BTUVfTUFY
X0xFTkdUSCAgICAgICAgICAgICA9ICAweDYwMDEsCiAgIFNIX0hBU0hFRF9OQU1FX01BWF9MRU5H
VEggICAgICA9ICAweDYwMDIsCi0gIFNIX0hBU0hFRF9OQU1FU19DT1VOVCAgICAgICAgICA9ICAw
eDYwMDMKKyAgU0hfSEFTSEVEX05BTUVTX0NPVU5UICAgICAgICAgID0gIDB4NjAwMywKKyAgU0hf
QUNUSVZFX1VOSUZPUk1TX0FSUkFZICAgICAgID0gIDB4NjAwNAogfSBTaFNoYWRlckluZm87CiAK
IC8vIENvbXBpbGUgb3B0aW9ucy4KQEAgLTE1OSw3ICsxNjIsMTMgQEAgdHlwZWRlZiBlbnVtIHsK
ICAgLy8gdmVjMjM0LCBvciBtYXQyMzQgdHlwZS4gVGhlIFNoQXJyYXlJbmRleENsYW1waW5nU3Ry
YXRlZ3kgZW51bSwKICAgLy8gc3BlY2lmaWVkIGluIHRoZSBTaEJ1aWx0SW5SZXNvdXJjZXMgd2hl
biBjb25zdHJ1Y3RpbmcgdGhlCiAgIC8vIGNvbXBpbGVyLCBzZWxlY3RzIHRoZSBzdHJhdGVneSBm
b3IgdGhlIGNsYW1waW5nIGltcGxlbWVudGF0aW9uLgotICBTSF9DTEFNUF9JTkRJUkVDVF9BUlJB
WV9CT1VORFMgPSAweDEwMDAKKyAgU0hfQ0xBTVBfSU5ESVJFQ1RfQVJSQVlfQk9VTkRTID0gMHgx
MDAwLAorCisgIC8vIFRoaXMgZmxhZyBsaW1pdHMgdGhlIGNvbXBsZXhpdHkgb2YgYW4gZXhwcmVz
c2lvbi4KKyAgU0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVYSVRZID0gMHgyMDAwLAorCisgIC8v
IFRoaXMgZmxhZyBsaW1pdHMgdGhlIGRlcHRoIG9mIHRoZSBjYWxsIHN0YWNrLgorICBTSF9MSU1J
VF9DQUxMX1NUQUNLX0RFUFRIID0gMHg0MDAwLAogfSBTaENvbXBpbGVPcHRpb25zOwogCiAvLyBE
ZWZpbmVzIGFsdGVybmF0ZSBzdHJhdGVnaWVzIGZvciBpbXBsZW1lbnRpbmcgYXJyYXkgaW5kZXgg
Y2xhbXBpbmcuCkBAIC0yMDksNiArMjE4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKICAgICBpbnQgT0VT
X0VHTF9pbWFnZV9leHRlcm5hbDsKICAgICBpbnQgQVJCX3RleHR1cmVfcmVjdGFuZ2xlOwogICAg
IGludCBFWFRfZHJhd19idWZmZXJzOworICAgIGludCBFWFRfZnJhZ19kZXB0aDsKIAogICAgIC8v
IFNldCB0byAxIGlmIGhpZ2hwIHByZWNpc2lvbiBpcyBzdXBwb3J0ZWQgaW4gdGhlIGZyYWdtZW50
IGxhbmd1YWdlLgogICAgIC8vIERlZmF1bHQgaXMgMC4KQEAgLTIyMiw2ICsyMzIsMTIgQEAgdHlw
ZWRlZiBzdHJ1Y3QKICAgICAvLyBTZWxlY3RzIGEgc3RyYXRlZ3kgdG8gdXNlIHdoZW4gaW1wbGVt
ZW50aW5nIGFycmF5IGluZGV4IGNsYW1waW5nLgogICAgIC8vIERlZmF1bHQgaXMgU0hfQ0xBTVBf
V0lUSF9DTEFNUF9JTlRSSU5TSUMuCiAgICAgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBB
cnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneTsKKworICAgIC8vIFRoZSBtYXhpbXVtIGNvbXBsZXhp
dHkgYW4gZXhwcmVzc2lvbiBjYW4gYmUuCisgICAgaW50IE1heEV4cHJlc3Npb25Db21wbGV4aXR5
OworCisgICAgLy8gVGhlIG1heGltdW0gZGVwdGggYSBjYWxsIHN0YWNrIGNhbiBiZS4KKyAgICBp
bnQgTWF4Q2FsbFN0YWNrRGVwdGg7CiB9IFNoQnVpbHRJblJlc291cmNlczsKIAogLy8KQEAgLTI0
OCw3ICsyNjQsNyBAQCB0eXBlZGVmIHZvaWQqIFNoSGFuZGxlOwogLy8gc3BlYzogU3BlY2lmaWVz
IHRoZSBsYW5ndWFnZSBzcGVjIHRoZSBjb21waWxlciBtdXN0IGNvbmZvcm0gdG8gLQogLy8gICAg
ICAgU0hfR0xFUzJfU1BFQyBvciBTSF9XRUJHTF9TUEVDLgogLy8gb3V0cHV0OiBTcGVjaWZpZXMg
dGhlIG91dHB1dCBjb2RlIHR5cGUgLSBTSF9FU1NMX09VVFBVVCwgU0hfR0xTTF9PVVRQVVQsCi0v
LyAgICAgICAgIG9yIFNIX0hMU0xfT1VUUFVULgorLy8gICAgICAgICBTSF9ITFNMOV9PVVRQVVQg
b3IgU0hfSExTTDExX09VVFBVVC4KIC8vIHJlc291cmNlczogU3BlY2lmaWVzIHRoZSBidWlsdC1p
biByZXNvdXJjZXMuCiBDT01QSUxFUl9FWFBPUlQgU2hIYW5kbGUgU2hDb25zdHJ1Y3RDb21waWxl
cigKICAgICBTaFNoYWRlclR5cGUgdHlwZSwKQEAgLTQxMSw2ICs0MjcsMTggQEAgQ09NUElMRVJf
RVhQT1JUIHZvaWQgU2hHZXROYW1lSGFzaGluZ0VudAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIqIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciogaGFzaGVkTmFtZSk7CiAKKy8vIFJldHVybnMgYSBwYXJh
bWV0ZXIgZnJvbSBhIGNvbXBpbGVkIHNoYWRlci4KKy8vIFBhcmFtZXRlcnM6CisvLyBoYW5kbGU6
IFNwZWNpZmllcyB0aGUgY29tcGlsZXIKKy8vIHBuYW1lOiBTcGVjaWZpZXMgdGhlIHBhcmFtZXRl
ciB0byBxdWVyeS4KKy8vIFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgZGVmaW5lZDoKKy8v
IFNIX0FDVElWRV9VTklGT1JNU19BUlJBWTogYW4gU1RMIHZlY3RvciBvZiBhY3RpdmUgdW5pZm9y
bXMuIFZhbGlkIG9ubHkgZm9yCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMU0wgb3V0
cHV0LgorLy8gcGFyYW1zOiBSZXF1ZXN0ZWQgcGFyYW1ldGVyCitDT01QSUxFUl9FWFBPUlQgdm9p
ZCBTaEdldEluZm9Qb2ludGVyKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJJbmZvIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiogcGFyYW1zKTsKKwogI2lmZGVmIF9fY3Bs
dXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9BTkdM
RS5zbG4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL0FOR0xFLnNs
bgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9BTkdMRS5zbG4J
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKK++7vw0KK01pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDExLjAwDQorIyBWaXN1YWwgQysrIEV4
cHJlc3MgMjAxMA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5
NDJ9IikgPSAibGliRUdMIiwgImxpYkVHTFxsaWJFR0wudmN4cHJvaiIsICJ7RTc0NkZDQTktNjRD
My00MzNFLTg1RTgtOUE1QTY3QUI3RUQ2fSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlD
RUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJsaWJHTEVTdjIiLCAibGliR0xF
U3YyXGxpYkdMRVN2Mi52Y3hwcm9qIiwgIntCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFFNkY0
NDhFNzh9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEt
MDBBMEM5MUJDOTQyfSIpID0gInRyYW5zbGF0b3JfaGxzbCIsICJjb21waWxlclx0cmFuc2xhdG9y
X2hsc2wudmN4cHJvaiIsICJ7NTYyMEYwRTQtNkM0My00OUJDLUExNzgtQjgwNEUxQTBDM0E3fSIN
CitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFC
Qzk0Mn0iKSA9ICJ0cmFuc2xhdG9yX2NvbW1vbiIsICJjb21waWxlclx0cmFuc2xhdG9yX2NvbW1v
bi52Y3hwcm9qIiwgIns1QjNBNkRCOC0xRTdFLTQwRDctOTJCOS1EQThBQUU2MTlGQUR9Ig0KK0Vu
ZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQy
fSIpID0gInByZXByb2Nlc3NvciIsICJjb21waWxlclxwcmVwcm9jZXNzb3JccHJlcHJvY2Vzc29y
LnZjeHByb2oiLCAie0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0iDQorRW5k
UHJvamVjdA0KK0dsb2JhbA0KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBs
YXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KKwkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMg0KKwkJ
RGVidWd8eDY0ID0gRGVidWd8eDY0DQorCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMg0K
KwkJUmVsZWFzZXx4NjQgPSBSZWxlYXNlfHg2NA0KKwlFbmRHbG9iYWxTZWN0aW9uDQorCUdsb2Jh
bFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uDQor
CQl7RTc0NkZDQTktNjRDMy00MzNFLTg1RTgtOUE1QTY3QUI3RUQ2fS5EZWJ1Z3xXaW4zMi5BY3Rp
dmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FC
N0VENn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RTc0NkZDQTktNjRD
My00MzNFLTg1RTgtOUE1QTY3QUI3RUQ2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0
DQorCQl7RTc0NkZDQTktNjRDMy00MzNFLTg1RTgtOUE1QTY3QUI3RUQ2fS5EZWJ1Z3x4NjQuQnVp
bGQuMCA9IERlYnVnfHg2NA0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VE
Nn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RTc0NkZDQTkt
NjRDMy00MzNFLTg1RTgtOUE1QTY3QUI3RUQ2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxl
YXNlfFdpbjMyDQorCQl7RTc0NkZDQTktNjRDMy00MzNFLTg1RTgtOUE1QTY3QUI3RUQ2fS5SZWxl
YXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04
NUU4LTlBNUE2N0FCN0VENn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7
QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0ItOTgxRTZGNDQ4RTc4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVD
ZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3
OH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QjU4NzFBN0EtOTY4Qy00
MkUzLUEzM0ItOTgxRTZGNDQ4RTc4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQor
CQl7QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0ItOTgxRTZGNDQ4RTc4fS5EZWJ1Z3x4NjQuQnVpbGQu
MCA9IERlYnVnfHg2NA0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0u
UmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjU4NzFBN0EtOTY4
Qy00MkUzLUEzM0ItOTgxRTZGNDQ4RTc4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNl
fFdpbjMyDQorCQl7QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0ItOTgxRTZGNDQ4RTc4fS5SZWxlYXNl
fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNC
LTk4MUU2RjQ0OEU3OH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7NTYy
MEYwRTQtNkM0My00OUJDLUExNzgtQjgwNEUxQTBDM0E3fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcg
PSBEZWJ1Z3xXaW4zMg0KKwkJezU2MjBGMEU0LTZDNDMtNDlCQy1BMTc4LUI4MDRFMUEwQzNBN30u
RGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7NTYyMEYwRTQtNkM0My00OUJD
LUExNzgtQjgwNEUxQTBDM0E3fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7
NTYyMEYwRTQtNkM0My00OUJDLUExNzgtQjgwNEUxQTBDM0E3fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9
IERlYnVnfHg2NA0KKwkJezU2MjBGMEU0LTZDNDMtNDlCQy1BMTc4LUI4MDRFMUEwQzNBN30uUmVs
ZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NTYyMEYwRTQtNkM0My00
OUJDLUExNzgtQjgwNEUxQTBDM0E3fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdp
bjMyDQorCQl7NTYyMEYwRTQtNkM0My00OUJDLUExNzgtQjgwNEUxQTBDM0E3fS5SZWxlYXNlfHg2
NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezU2MjBGMEU0LTZDNDMtNDlCQy1BMTc4LUI4
MDRFMUEwQzNBN30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7NUIzQTZE
QjgtMUU3RS00MEQ3LTkyQjktREE4QUFFNjE5RkFEfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBE
ZWJ1Z3xXaW4zMg0KKwkJezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uRGVi
dWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7NUIzQTZEQjgtMUU3RS00MEQ3LTky
QjktREE4QUFFNjE5RkFEfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7NUIz
QTZEQjgtMUU3RS00MEQ3LTkyQjktREE4QUFFNjE5RkFEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERl
YnVnfHg2NA0KKwkJezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uUmVsZWFz
ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NUIzQTZEQjgtMUU3RS00MEQ3
LTkyQjktREE4QUFFNjE5RkFEfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMy
DQorCQl7NUIzQTZEQjgtMUU3RS00MEQ3LTkyQjktREE4QUFFNjE5RkFEfS5SZWxlYXNlfHg2NC5B
Y3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFB
RTYxOUZBRH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RkJFMzJERjMt
MEZCMC00RjJGLUE0MjQtMkMyMUJEN0JDMzI1fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1
Z3xXaW4zMg0KKwkJe0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uRGVidWd8
V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RkJFMzJERjMtMEZCMC00RjJGLUE0MjQt
MkMyMUJEN0JDMzI1fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RkJFMzJE
RjMtMEZCMC00RjJGLUE0MjQtMkMyMUJEN0JDMzI1fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVn
fHg2NA0KKwkJe0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uUmVsZWFzZXxX
aW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RkJFMzJERjMtMEZCMC00RjJGLUE0
MjQtMkMyMUJEN0JDMzI1fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQor
CQl7RkJFMzJERjMtMEZCMC00RjJGLUE0MjQtMkMyMUJEN0JDMzI1fS5SZWxlYXNlfHg2NC5BY3Rp
dmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdC
QzMyNX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCUVuZEdsb2JhbFNlY3Rp
b24NCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24NCisJ
CUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KKwlFbmRHbG9iYWxTZWN0aW9uDQorRW5kR2xvYmFs
DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2J1aWxkX2FuZ2xlLmd5cAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYnVpbGRfYW5nbGUuZ3lwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2J1aWxkX2FuZ2xlLmd5
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCit7CisgICdpbmNsdWRlcyc6IFsK
KyAgICAnYnVpbGRfYW5nbGUuZ3lwaScsCisgIF0sCit9CisKKyMgTG9jYWwgVmFyaWFibGVzOgor
IyB0YWItd2lkdGg6MgorIyBpbmRlbnQtdGFicy1tb2RlOm5pbAorIyBFbmQ6CisjIHZpbTogc2V0
IGV4cGFuZHRhYiB0YWJzdG9wPTIgc2hpZnR3aWR0aD0yOgpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2J1aWxkX2FuZ2xlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2J1aWxkX2FuZ2xlLmd5cGkJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvYnVpbGRfYW5nbGUuZ3lwaQkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MjAgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKworeworICAndmFyaWFibGVzJzogeworICAgICdhbmdsZV9jb2RlJzog
MSwKKyAgfSwKKyAgJ3RhcmdldF9kZWZhdWx0cyc6IHsKKyAgICAnZGVmaW5lcyc6IFsKKyAgICAg
ICdBTkdMRV9ESVNBQkxFX1RSQUNFJywKKyAgICAgICdBTkdMRV9DT01QSUxFX09QVElNSVpBVElP
Tl9MRVZFTD1EM0RDT01QSUxFX09QVElNSVpBVElPTl9MRVZFTDEnLAorICAgICAgJ0FOR0xFX1BS
RUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVM9eyBURVhUKCJkM2Rjb21waWxlcl80Ni5k
bGwiKSwgVEVYVCgiZDNkY29tcGlsZXJfNDMuZGxsIikgfScsCisgICAgXSwKKyAgfSwKKyAgJ3Rh
cmdldHMnOiBbCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ3ByZXByb2Nlc3NvcicsCisg
ICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCisgICAgICAnaW5jbHVkZV9kaXJzJzogWwor
ICAgICAgXSwKKyAgICAgICdzb3VyY2VzJzogWworICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vz
c29yL0RpYWdub3N0aWNzQmFzZS5jcHAnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29y
L0RpYWdub3N0aWNzQmFzZS5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJl
Y3RpdmVIYW5kbGVyQmFzZS5jcHAnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0Rp
cmVjdGl2ZUhhbmRsZXJCYXNlLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0Rp
cmVjdGl2ZVBhcnNlci5jcHAnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVj
dGl2ZVBhcnNlci5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9u
UGFyc2VyLmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBh
cnNlci5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5jcHAnLAorICAg
ICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmgnLAorICAgICAgICAnY29tcGlsZXIv
cHJlcHJvY2Vzc29yL2xlbmd0aF9saW1pdHMuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9j
ZXNzb3IvTGV4ZXIuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9MZXhlci5o
JywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyby5jcHAnLAorICAgICAgICAn
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL01hY3JvRXhwYW5kZXIuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9NYWNyb0V4cGFuZGVyLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL251bWVy
aWNfbGV4LmgnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL3BwX3V0aWxzLmgnLAor
ICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5jcHAnLAorICAgICAg
ICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5oJywKKyAgICAgICAgJ2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9Tb3VyY2VMb2NhdGlvbi5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9Ub2tlbi5jcHAnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rv
a2VuLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAnLAor
ICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5oJywKKyAgICAgIF0sCisg
ICAgICAjIFRPRE8oanNjaHVoKTogaHR0cDovL2NyYnVnLmNvbS8xNjcxODcKKyAgICAgICdtc3Zz
X2Rpc2FibGVkX3dhcm5pbmdzJzogWworICAgICAgICA0MjY3LAorICAgICAgXSwgICAgICAKKyAg
ICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICd0cmFuc2xhdG9yX2NvbW1vbicsCisg
ICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCisgICAgICAnZGVwZW5kZW5jaWVzJzogWydw
cmVwcm9jZXNzb3InXSwKKyAgICAgICdpbmNsdWRlX2RpcnMnOiBbCisgICAgICAgICcuJywKKyAg
ICAgICAgJy4uL2luY2x1ZGUnLAorICAgICAgXSwKKyAgICAgICdkZWZpbmVzJzogWworICAgICAg
ICAnQ09NUElMRVJfSU1QTEVNRU5UQVRJT04nLAorICAgICAgXSwKKyAgICAgICdzb3VyY2VzJzog
WworICAgICAgICAnY29tcGlsZXIvQmFzZVR5cGVzLmgnLAorICAgICAgICAnY29tcGlsZXIvQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL0J1aWx0SW5GdW5j
dGlvbkVtdWxhdG9yLmgnLAorICAgICAgICAnY29tcGlsZXIvQ29tbW9uLmgnLAorICAgICAgICAn
Y29tcGlsZXIvQ29tcGlsZXIuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL0NvbnN0YW50VW5pb24u
aCcsCisgICAgICAgICdjb21waWxlci9kZWJ1Zy5jcHAnLAorICAgICAgICAnY29tcGlsZXIvZGVi
dWcuaCcsCisgICAgICAgICdjb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwJywKKyAgICAgICAg
J2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0RpYWdub3N0
aWNzLmgnLAorICAgICAgICAnY29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwJywKKyAgICAgICAgJ2Nv
bXBpbGVyL0RpcmVjdGl2ZUhhbmRsZXIuaCcsCisgICAgICAgICdjb21waWxlci9EaXJlY3RpdmVI
YW5kbGVyLmNwcCcsCisgICAgICAgICdjb21waWxlci9FeHRlbnNpb25CZWhhdmlvci5oJywKKyAg
ICAgICAgJ2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL0Zv
ckxvb3BVbnJvbGwuaCcsCisgICAgICAgICdjb21waWxlci9nbHNsYW5nLmgnLAorICAgICAgICAn
Y29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL2dsc2xhbmdfdGFi
LmNwcCcsCisgICAgICAgICdjb21waWxlci9nbHNsYW5nX3RhYi5oJywKKyAgICAgICAgJ2NvbXBp
bGVyL0hhc2hOYW1lcy5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0luZm9TaW5rLmNwcCcsCisgICAg
ICAgICdjb21waWxlci9JbmZvU2luay5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0luaXRpYWxpemUu
Y3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL0luaXRpYWxpemUuaCcsCisgICAgICAgICdjb21waWxl
ci9Jbml0aWFsaXplRGxsLmNwcCcsCisgICAgICAgICdjb21waWxlci9Jbml0aWFsaXplRGxsLmgn
LAorICAgICAgICAnY29tcGlsZXIvSW5pdGlhbGl6ZUdsb2JhbHMuaCcsCisgICAgICAgICdjb21w
aWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmNwcCcsCisgICAgICAgICdjb21waWxlci9Jbml0
aWFsaXplUGFyc2VDb250ZXh0LmgnLAorICAgICAgICAnY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNw
cCcsCisgICAgICAgICdjb21waWxlci9pbnRlcm1lZGlhdGUuaCcsCisgICAgICAgICdjb21waWxl
ci9pbnRlcm1PdXQuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL0ludGVybVRyYXZlcnNlLmNwcCcs
CisgICAgICAgICdjb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oJywKKyAgICAgICAgJ2NvbXBp
bGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmNwcCcsCisgICAgICAgICdjb21waWxlci9NYXBMb25n
VmFyaWFibGVOYW1lcy5oJywKKyAgICAgICAgJ2NvbXBpbGVyL01NYXAuaCcsCisgICAgICAgICdj
b21waWxlci9vc2luY2x1ZGUuaCcsCisgICAgICAgICdjb21waWxlci9wYXJzZUNvbnN0LmNwcCcs
CisgICAgICAgICdjb21waWxlci9QYXJzZUhlbHBlci5jcHAnLAorICAgICAgICAnY29tcGlsZXIv
UGFyc2VIZWxwZXIuaCcsCisgICAgICAgICdjb21waWxlci9Qb29sQWxsb2MuY3BwJywKKyAgICAg
ICAgJ2NvbXBpbGVyL1Bvb2xBbGxvYy5oJywKKyAgICAgICAgJ2NvbXBpbGVyL1F1YWxpZmllckFs
aXZlLmNwcCcsCisgICAgICAgICdjb21waWxlci9RdWFsaWZpZXJBbGl2ZS5oJywKKyAgICAgICAg
J2NvbXBpbGVyL1JlbW92ZVRyZWUuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1JlbW92ZVRyZWUu
aCcsCisgICAgICAgICdjb21waWxlci9SZW5hbWVGdW5jdGlvbi5oJywKKyAgICAgICAgJ2NvbXBp
bGVyL1NoSGFuZGxlLmgnLAorICAgICAgICAnY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwJywKKyAg
ICAgICAgJ2NvbXBpbGVyL1N5bWJvbFRhYmxlLmgnLAorICAgICAgICAnY29tcGlsZXIvVHlwZXMu
aCcsCisgICAgICAgICdjb21waWxlci9Vbmlmb3JtLmNwcCcsCisgICAgICAgICdjb21waWxlci9V
bmlmb3JtLmgnLAorICAgICAgICAnY29tcGlsZXIvdXRpbC5jcHAnLAorICAgICAgICAnY29tcGls
ZXIvdXRpbC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL1ZhbGlkYXRlTGltaXRhdGlvbnMuY3BwJywK
KyAgICAgICAgJ2NvbXBpbGVyL1ZhbGlkYXRlTGltaXRhdGlvbnMuaCcsCisgICAgICAgICdjb21w
aWxlci9WYXJpYWJsZUluZm8uY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5o
JywKKyAgICAgICAgJ2NvbXBpbGVyL1ZhcmlhYmxlUGFja2VyLmNwcCcsCisgICAgICAgICdjb21w
aWxlci9WYXJpYWJsZVBhY2tlci5oJywKKyAgICAgICAgIyBEZXBlbmRlbmN5IGdyYXBoCisgICAg
ICAgICdjb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguY3BwJywKKyAgICAgICAgJ2Nv
bXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL2Rl
cGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL2Rl
cGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCcsCisgICAgICAgICdjb21waWxlci9kZXBn
cmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL2RlcGdy
YXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL2RlcGdyYXBo
L0RlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCcsCisgICAgICAgICMgVGltaW5nIHJlc3RyaWN0
aW9ucworICAgICAgICAnY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1p
bmcuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3RpbWluZy9SZXN0cmljdEZyYWdtZW50U2hhZGVy
VGltaW5nLmgnLAorICAgICAgICAnY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVy
VGltaW5nLmNwcCcsCisgICAgICAgICdjb21waWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFk
ZXJUaW1pbmcuaCcsCisgICAgICAgICd0aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0Ns
YW1wZXIuY3BwJywKKyAgICAgICAgJ3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xh
bXBlci5oJywKKyAgICAgIF0sCisgICAgICAnY29uZGl0aW9ucyc6IFsKKyAgICAgICAgWydPUz09
IndpbiInLCB7CisgICAgICAgICAgIyBUT0RPKGpzY2h1aCk6IGh0dHA6Ly9jcmJ1Zy5jb20vMTY3
MTg3IHNpemVfdCAtPiBpbnQKKyAgICAgICAgICAnbXN2c19kaXNhYmxlZF93YXJuaW5ncyc6IFsg
NDI2NyBdLAorICAgICAgICAgICdzb3VyY2VzJzogWydjb21waWxlci9vc3NvdXJjZV93aW4uY3Bw
J10sCisgICAgICAgIH0sIHsgIyBlbHNlOiBwb3NpeAorICAgICAgICAgICdzb3VyY2VzJzogWydj
b21waWxlci9vc3NvdXJjZV9wb3NpeC5jcHAnXSwKKyAgICAgICAgfV0sCisgICAgICBdLAorICAg
IH0sCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ3RyYW5zbGF0b3JfZ2xzbCcsCisgICAg
ICAndHlwZSc6ICc8KGNvbXBvbmVudCknLAorICAgICAgJ2RlcGVuZGVuY2llcyc6IFsndHJhbnNs
YXRvcl9jb21tb24nXSwKKyAgICAgICdpbmNsdWRlX2RpcnMnOiBbCisgICAgICAgICcuJywKKyAg
ICAgICAgJy4uL2luY2x1ZGUnLAorICAgICAgXSwKKyAgICAgICdkZWZpbmVzJzogWworICAgICAg
ICAnQ09NUElMRVJfSU1QTEVNRU5UQVRJT04nLAorICAgICAgXSwKKyAgICAgICdzb3VyY2VzJzog
WworICAgICAgICAnY29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVy
L091dHB1dEVTU0wuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL091dHB1dEVTU0wuaCcsICAgICAg
ICAKKyAgICAgICAgJ2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcCcsCisgICAgICAgICdjb21w
aWxlci9PdXRwdXRHTFNMQmFzZS5oJywKKyAgICAgICAgJ2NvbXBpbGVyL091dHB1dEdMU0wuY3Bw
JywKKyAgICAgICAgJ2NvbXBpbGVyL091dHB1dEdMU0wuaCcsCisgICAgICAgICdjb21waWxlci9T
aGFkZXJMYW5nLmNwcCcsCisgICAgICAgICdjb21waWxlci9UcmFuc2xhdG9yRVNTTC5jcHAnLAor
ICAgICAgICAnY29tcGlsZXIvVHJhbnNsYXRvckVTU0wuaCcsCisgICAgICAgICdjb21waWxlci9U
cmFuc2xhdG9yR0xTTC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvVHJhbnNsYXRvckdMU0wuaCcs
CisgICAgICAgICdjb21waWxlci9WZXJzaW9uR0xTTC5jcHAnLAorICAgICAgICAnY29tcGlsZXIv
VmVyc2lvbkdMU0wuaCcsCisgICAgICBdLAorICAgICAgIyBUT0RPKGpzY2h1aCk6IGh0dHA6Ly9j
cmJ1Zy5jb20vMTY3MTg3IHNpemVfdCAtPiBpbnQKKyAgICAgICdtc3ZzX2Rpc2FibGVkX3dhcm5p
bmdzJzogWyA0MjY3IF0sCisgICAgfSwKKyAgXSwKKyAgJ2NvbmRpdGlvbnMnOiBbCisgICAgWydP
Uz09IndpbiInLCB7CisgICAgICAndGFyZ2V0cyc6IFsKKyAgICAgICAgeworICAgICAgICAgICd0
YXJnZXRfbmFtZSc6ICd0cmFuc2xhdG9yX2hsc2wnLAorICAgICAgICAgICd0eXBlJzogJzwoY29t
cG9uZW50KScsCisgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsndHJhbnNsYXRvcl9jb21tb24n
XSwKKyAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWworICAgICAgICAgICAgJy4nLAorICAgICAg
ICAgICAgJy4uL2luY2x1ZGUnLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ2RlZmluZXMnOiBb
CisgICAgICAgICAgICAnQ09NUElMRVJfSU1QTEVNRU5UQVRJT04nLAorICAgICAgICAgIF0sCisg
ICAgICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICAgICAnY29tcGlsZXIvU2hhZGVyTGFuZy5j
cHAnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwJywKKyAg
ICAgICAgICAgICdjb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmgnLAorICAgICAgICAgICAg
J2NvbXBpbGVyL0NvZGVHZW5ITFNMLmNwcCcsCisgICAgICAgICAgICAnY29tcGlsZXIvT3V0cHV0
SExTTC5jcHAnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL091dHB1dEhMU0wuaCcsCisgICAgICAg
ICAgICAnY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuY3BwJywKKyAgICAgICAgICAgICdjb21waWxl
ci9UcmFuc2xhdG9ySExTTC5oJywKKyAgICAgICAgICAgICdjb21waWxlci9VbmZvbGRTaG9ydENp
cmN1aXQuY3BwJywKKyAgICAgICAgICAgICdjb21waWxlci9VbmZvbGRTaG9ydENpcmN1aXQuaCcs
CisgICAgICAgICAgICAnY29tcGlsZXIvU2VhcmNoU3ltYm9sLmNwcCcsCisgICAgICAgICAgICAn
Y29tcGlsZXIvU2VhcmNoU3ltYm9sLmgnLAorICAgICAgICAgIF0sCisgICAgICAgICAgIyBUT0RP
KGpzY2h1aCk6IGh0dHA6Ly9jcmJ1Zy5jb20vMTY3MTg3IHNpemVfdCAtPiBpbnQKKyAgICAgICAg
ICAnbXN2c19kaXNhYmxlZF93YXJuaW5ncyc6IFsgNDI2NyBdLAorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2xpYkdMRVN2MicsCisgICAgICAgICAgJ3R5
cGUnOiAnc2hhcmVkX2xpYnJhcnknLAorICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbJ3RyYW5z
bGF0b3JfaGxzbCddLAorICAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCisgICAgICAgICAgICAn
LicsCisgICAgICAgICAgICAnLi4vaW5jbHVkZScsCisgICAgICAgICAgICAnbGliR0xFU3YyJywK
KyAgICAgICAgICBdLAorICAgICAgICAgICdzb3VyY2VzJzogWworICAgICAgICAgICAgJ3RoaXJk
X3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuaCcsCisgICAgICAgICAgICAndGhpcmRfcGFy
dHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5jcHAnLAorICAgICAgICAgICAgJ2NvbW1vbi9hbmds
ZXV0aWxzLmgnLAorICAgICAgICAgICAgJ2NvbW1vbi9kZWJ1Zy5jcHAnLAorICAgICAgICAgICAg
J2NvbW1vbi9kZWJ1Zy5oJywKKyAgICAgICAgICAgICdjb21tb24vUmVmQ291bnRPYmplY3QuY3Bw
JywKKyAgICAgICAgICAgICdjb21tb24vUmVmQ291bnRPYmplY3QuaCcsCisgICAgICAgICAgICAn
Y29tbW9uL3ZlcnNpb24uaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3ByZWNvbXBpbGVkLmgn
LAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9wcmVjb21waWxlZC5jcHAnLAorICAgICAgICAgICAg
J2xpYkdMRVN2Mi9CaW5hcnlTdHJlYW0uaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL0J1ZmZl
ci5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9CdWZmZXIuaCcsCisgICAgICAgICAgICAn
bGliR0xFU3YyL2NvbnN0YW50cy5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvQ29udGV4dC5j
cHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9Db250ZXh0LmgnLAorICAgICAgICAgICAgJ2xp
YkdMRVN2Mi9hbmdsZXR5cGVzLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9GZW5jZS5jcHAn
LAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9GZW5jZS5oJywKKyAgICAgICAgICAgICdsaWJHTEVT
djIvRmxvYXQxNlRvRmxvYXQzMi5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9GcmFtZWJ1
ZmZlci5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oJywKKyAgICAg
ICAgICAgICdsaWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmNwcCcsCisgICAgICAgICAgICAnbGli
R0xFU3YyL0hhbmRsZUFsbG9jYXRvci5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvbGliR0xF
U3YyLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWYnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2Mi9saWJHTEVTdjIucmMnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9t
YWluLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL21haW4uaCcsCisgICAgICAgICAgICAn
bGliR0xFU3YyL21hdGh1dGlsLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9Qcm9ncmFtLmNw
cCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1Byb2dyYW0uaCcsCisgICAgICAgICAgICAnbGli
R0xFU3YyL1Byb2dyYW1CaW5hcnkuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvUHJvZ3Jh
bUJpbmFyeS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvUXVlcnkuaCcsCisgICAgICAgICAg
ICAnbGliR0xFU3YyL1F1ZXJ5LmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1JlbmRlcmJ1
ZmZlci5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCcsCisgICAg
ICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuY3BwJywKKyAgICAgICAgICAgICdsaWJH
TEVTdjIvcmVuZGVyZXIvQmxpdC5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIv
QnVmZmVyU3RvcmFnZS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVy
U3RvcmFnZS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9y
YWdlOS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdl
OS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmNw
cCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2UxMS5oJywK
KyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvRmVuY2VJbXBsLmgnLAorICAgICAgICAg
ICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVT
djIvcmVuZGVyZXIvRmVuY2U5LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9G
ZW5jZTExLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlMTEuaCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL2dlbmVyYXRlbWlwLmgnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdM
RVN2Mi9yZW5kZXJlci9JbWFnZS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIv
SW1hZ2UxMS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTExLmgn
LAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTkuY3BwJywKKyAgICAgICAg
ICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2U5LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2
Mi9yZW5kZXJlci9JbWFnZVNTRTIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVy
ZXIvSW5kZXhCdWZmZXIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5k
ZXhCdWZmZXIuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVy
OS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjkuaCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuY3BwJywKKyAg
ICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXIxMS5oJywKKyAgICAgICAg
ICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5jcHAnLAorICAgICAgICAg
ICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmgnLAorICAgICAgICAgICAg
J2xpYkdMRVN2Mi9yZW5kZXJlci9JbnB1dExheW91dENhY2hlLmNwcCcsCisgICAgICAgICAgICAn
bGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuaCcsCisgICAgICAgICAgICAnbGli
R0xFU3YyL3JlbmRlcmVyL1F1ZXJ5SW1wbC5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVu
ZGVyZXIvUXVlcnk5LmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5
OS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvUXVlcnkxMS5jcHAnLAorICAg
ICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmgnLAorICAgICAgICAgICAgJ2xp
YkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9y
ZW5kZXJlci9SZW5kZXJlci5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvUmVu
ZGVyZXIxMS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjEx
LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmNw
cCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuaCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5jcHAnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuaCcsCisgICAgICAgICAgICAnbGli
R0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyOV91dGlscy5jcHAnLAorICAgICAgICAgICAgJ2xpYkdM
RVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaCcsCisgICAgICAgICAgICAnbGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlclN0YXRlQ2FjaGUuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIv
cmVuZGVyZXIvUmVuZGVyU3RhdGVDYWNoZS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyVGFyZ2V0LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9S
ZW5kZXJUYXJnZXQxMS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVy
VGFyZ2V0MTEuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFy
Z2V0OS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0OS5j
cHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJDYWNoZS5oJywKKyAg
ICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZS5oJywKKyAgICAg
ICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTkuY3BwJywKKyAgICAg
ICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTkuaCcsCisgICAgICAg
ICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUxMS5jcHAnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEuaCcsCisgICAgICAg
ICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oJywKKyAgICAgICAgICAgICdsaWJH
TEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9y
ZW5kZXJlci9Td2FwQ2hhaW45LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9T
d2FwQ2hhaW4xMS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hh
aW4xMS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2Uu
Y3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UuaCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlMTEuY3BwJywK
KyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UxMS5oJywKKyAg
ICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmNwcCcsCisgICAg
ICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlOS5oJywKKyAgICAgICAg
ICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmNwcCcsCisgICAgICAgICAgICAn
bGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5oJywKKyAgICAgICAgICAgICdsaWJHTEVT
djIvcmVuZGVyZXIvVmVydGV4QnVmZmVyOS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9y
ZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJl
ci9WZXJ0ZXhCdWZmZXIxMS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9W
ZXJ0ZXhCdWZmZXIxMS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvdmVydGV4
Y29udmVyc2lvbi5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGF0
YU1hbmFnZXIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGF0
YU1hbmFnZXIuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERlY2xh
cmF0aW9uQ2FjaGUuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4
RGVjbGFyYXRpb25DYWNoZS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvUmVzb3VyY2VNYW5h
Z2VyLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1Jlc291cmNlTWFuYWdlci5oJywKKyAg
ICAgICAgICAgICdsaWJHTEVTdjIvU2hhZGVyLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3Yy
L1NoYWRlci5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvVGV4dHVyZS5jcHAnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2Mi9UZXh0dXJlLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9Vbmlm
b3JtLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1VuaWZvcm0uaCcsCisgICAgICAgICAg
ICAnbGliR0xFU3YyL3V0aWxpdGllcy5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi91dGls
aXRpZXMuaCcsCisgICAgICAgICAgXSwKKyAgICAgICAgICAjIFRPRE8oanNjaHVoKTogaHR0cDov
L2NyYnVnLmNvbS8xNjcxODcgc2l6ZV90IC0+IGludAorICAgICAgICAgICdtc3ZzX2Rpc2FibGVk
X3dhcm5pbmdzJzogWyA0MjY3IF0sCisgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOiB7CisgICAg
ICAgICAgICAnVkNMaW5rZXJUb29sJzogeworICAgICAgICAgICAgICAnQWRkaXRpb25hbERlcGVu
ZGVuY2llcyc6IFsKKyAgICAgICAgICAgICAgICAnZDNkOS5saWInLAorICAgICAgICAgICAgICAg
ICdkeGd1aWQubGliJywKKyAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9LAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2xp
YkVHTCcsCisgICAgICAgICAgJ3R5cGUnOiAnc2hhcmVkX2xpYnJhcnknLAorICAgICAgICAgICdk
ZXBlbmRlbmNpZXMnOiBbJ2xpYkdMRVN2MiddLAorICAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBb
CisgICAgICAgICAgICAnLicsCisgICAgICAgICAgICAnLi4vaW5jbHVkZScsCisgICAgICAgICAg
ICAnbGliR0xFU3YyJywKKyAgICAgICAgICBdLAorICAgICAgICAgICdzb3VyY2VzJzogWworICAg
ICAgICAgICAgJ2NvbW1vbi9hbmdsZXV0aWxzLmgnLAorICAgICAgICAgICAgJ2NvbW1vbi9kZWJ1
Zy5jcHAnLAorICAgICAgICAgICAgJ2NvbW1vbi9kZWJ1Zy5oJywKKyAgICAgICAgICAgICdjb21t
b24vUmVmQ291bnRPYmplY3QuY3BwJywKKyAgICAgICAgICAgICdjb21tb24vUmVmQ291bnRPYmpl
Y3QuaCcsCisgICAgICAgICAgICAnY29tbW9uL3ZlcnNpb24uaCcsCisgICAgICAgICAgICAnbGli
RUdML0NvbmZpZy5jcHAnLAorICAgICAgICAgICAgJ2xpYkVHTC9Db25maWcuaCcsCisgICAgICAg
ICAgICAnbGliRUdML0Rpc3BsYXkuY3BwJywKKyAgICAgICAgICAgICdsaWJFR0wvRGlzcGxheS5o
JywKKyAgICAgICAgICAgICdsaWJFR0wvbGliRUdMLmNwcCcsCisgICAgICAgICAgICAnbGliRUdM
L2xpYkVHTC5kZWYnLAorICAgICAgICAgICAgJ2xpYkVHTC9saWJFR0wucmMnLAorICAgICAgICAg
ICAgJ2xpYkVHTC9tYWluLmNwcCcsCisgICAgICAgICAgICAnbGliRUdML21haW4uaCcsCisgICAg
ICAgICAgICAnbGliRUdML1N1cmZhY2UuY3BwJywKKyAgICAgICAgICAgICdsaWJFR0wvU3VyZmFj
ZS5oJywKKyAgICAgICAgICBdLAorICAgICAgICAgICMgVE9ETyhqc2NodWgpOiBodHRwOi8vY3Ji
dWcuY29tLzE2NzE4NyBzaXplX3QgLT4gaW50CisgICAgICAgICAgJ21zdnNfZGlzYWJsZWRfd2Fy
bmluZ3MnOiBbIDQyNjcgXSwKKyAgICAgICAgICAnbXN2c19zZXR0aW5ncyc6IHsKKyAgICAgICAg
ICAgICdWQ0xpbmtlclRvb2wnOiB7CisgICAgICAgICAgICAgICdBZGRpdGlvbmFsRGVwZW5kZW5j
aWVzJzogWworICAgICAgICAgICAgICAgICdkM2Q5LmxpYicsCisgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICB9CisgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICAgIF0sCisgICAgfV0s
CisgIF0sCit9CisKKyMgTG9jYWwgVmFyaWFibGVzOgorIyB0YWItd2lkdGg6MgorIyBpbmRlbnQt
dGFicy1tb2RlOm5pbAorIyBFbmQ6CisjIHZpbTogc2V0IGV4cGFuZHRhYiB0YWJzdG9wPTIgc2hp
ZnR3aWR0aD0yOgorIyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9S
ZWZDb3VudE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbW1vbi9SZWZDb3VudE9iamVjdC5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vUmVmQ291bnRPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNCBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCiAvLwogLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vYW5nbGV1dGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5nbGV1dGlscy5oCShyZXZpc2lvbiAxNTI5NzkpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOSwxMiArOSwzOSBAQAogI2lmbmRlZiBDT01NT05fQU5HTEVVVElMU19IXwog
I2RlZmluZSBDT01NT05fQU5HTEVVVElMU19IXwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKIC8v
IEEgbWFjcm8gdG8gZGlzYWxsb3cgdGhlIGNvcHkgY29uc3RydWN0b3IgYW5kIG9wZXJhdG9yPSBm
dW5jdGlvbnMKIC8vIFRoaXMgbXVzdCBiZSB1c2VkIGluIHRoZSBwcml2YXRlOiBkZWNsYXJhdGlv
bnMgZm9yIGEgY2xhc3MKICNkZWZpbmUgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFR5cGVOYW1l
KSBcCiAgIFR5cGVOYW1lKGNvbnN0IFR5cGVOYW1lJik7ICAgICAgICAgICAgICAgXAogICB2b2lk
IG9wZXJhdG9yPShjb25zdCBUeXBlTmFtZSYpCiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB1bnNp
Z25lZCBpbnQgTj4KK2lubGluZSB1bnNpZ25lZCBpbnQgQXJyYXlTaXplKFQoJilbTl0pCit7Cisg
ICAgcmV0dXJuIE47Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB1bnNpZ25lZCBpbnQgTj4K
K3ZvaWQgU2FmZVJlbGVhc2UoVCAoJnJlc291cmNlQmxvY2spW05dKQoreworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgTjsgaSsrKQorICAgIHsKKyAgICAgICAgU2FmZVJlbGVhc2Uo
cmVzb3VyY2VCbG9ja1tpXSk7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3Zv
aWQgU2FmZVJlbGVhc2UoVCYgcmVzb3VyY2UpCit7CisgICAgaWYgKHJlc291cmNlKQorICAgIHsK
KyAgICAgICAgcmVzb3VyY2UtPlJlbGVhc2UoKTsKKyAgICAgICAgcmVzb3VyY2UgPSBOVUxMOwor
ICAgIH0KK30KKwogI2lmIGRlZmluZWQoX01TQ19WRVIpCiAjZGVmaW5lIHNucHJpbnRmIF9zbnBy
aW50ZgogI2VuZGlmCkBAIC0yMyw0ICs1MCw3IEBACiAjZGVmaW5lIFZFTkRPUl9JRF9JTlRFTCAw
eDgwODYKICNkZWZpbmUgVkVORE9SX0lEX05WSURJQSAweDEwREUKIAorI2RlZmluZSBHTF9CR1JB
NF9BTkdMRVggMHg2QUJDCisjZGVmaW5lIEdMX0JHUjVfQTFfQU5HTEVYIDB4NkFCRAorCiAjZW5k
aWYgLy8gQ09NTU9OX0FOR0xFVVRJTFNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21tb24vZGVidWcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21tb24vZGVidWcuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNywx
MCArNyw2IEBACiAvLyBkZWJ1Zy5jcHA6IERlYnVnZ2luZyB1dGlsaXRpZXMuCiAKICNpbmNsdWRl
ICJjb21tb24vZGVidWcuaCIKLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkYXJn
Lmg+Ci0KICNpbmNsdWRlICJjb21tb24vc3lzdGVtLmgiCiAjaW5jbHVkZSA8ZDNkOS5oPgogCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5oCShyZXZpc2lv
biAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDEzIEBAIG5hbWVzcGFjZSBnbAogICAgICNkZWZp
bmUgVU5SRUFDSEFCTEUoKSBFUlIoIlx0ISBVbnJlYWNoYWJsZSByZWFjaGVkOiAlcyglZClcbiIs
IF9fRlVOQ1RJT05fXywgX19MSU5FX18pCiAjZW5kaWYKIAorLy8gQSBtYWNybyB0aGF0IGRldGVy
bWluZXMgd2hldGhlciBhbiBvYmplY3QgaGFzIGEgZ2l2ZW4gcnVudGltZSB0eXBlLgorI2lmICFk
ZWZpbmVkKE5ERUJVRykgJiYgKCFkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9DUFBSVFRJ
KSkKKyNkZWZpbmUgSEFTX0RZTkFNSUNfVFlQRSh0eXBlLCBvYmopIChkeW5hbWljX2Nhc3Q8dHlw
ZSA+KG9iaikgIT0gTlVMTCkKKyNlbHNlCisjZGVmaW5lIEhBU19EWU5BTUlDX1RZUEUodHlwZSwg
b2JqKSB0cnVlCisjZW5kaWYKKwogLy8gQSBtYWNybyBmdW5jdGlvbmluZyBhcyBhIGNvbXBpbGUt
dGltZSBhc3NlcnQgdG8gdmFsaWRhdGUgY29uc3RhbnQgY29uZGl0aW9ucwogI2RlZmluZSBNRVRB
X0FTU0VSVChjb25kaXRpb24pIHR5cGVkZWYgaW50IENPTVBJTEVfVElNRV9BU1NFUlRfIyNfX0xJ
TkVfX1tzdGF0aWNfY2FzdDxib29sPihjb25kaXRpb24pPzE6LTFdCiAKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW0uaAkocmV2aXNpb24gMTUyOTc5KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW0uaAkod29ya2luZyBj
b3B5KQpAQCAtMTQsMTAgKzE0LDYgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8d2luZG93cy5oPgot
I2luY2x1ZGUgPGQzZDkuaD4KLSNpbmNsdWRlIDxEM0Rjb21waWxlci5oPgotI2luY2x1ZGUgPGQz
ZDl0eXBlcy5oPgotI2luY2x1ZGUgPG1tc3lzdGVtLmg+CiAKICNpZiBkZWZpbmVkKG1pbikKICN1
bmRlZiBtaW4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdmVyc2lv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdmVy
c2lvbi5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tbW9uL3ZlcnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKICNkZWZpbmUg
TUFKT1JfVkVSU0lPTiAxCi0jZGVmaW5lIE1JTk9SX1ZFUlNJT04gMAorI2RlZmluZSBNSU5PUl9W
RVJTSU9OIDIKICNkZWZpbmUgQlVJTERfVkVSU0lPTiAwCi0jZGVmaW5lIEJVSUxEX1JFVklTSU9O
IDE5ODcKKyNkZWZpbmUgQlVJTERfUkVWSVNJT04gMjQyNgogCiAjZGVmaW5lIFNUUklOR0lGWSh4
KSAjeAogI2RlZmluZSBNQUNST19TVFJJTkdJRlkoeCkgU1RSSU5HSUZZKHgpCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvNjRiaXQtbGV4ZXItc2FmZXR5LnBhdGNo
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci82NGJp
dC1sZXhlci1zYWZldHkucGF0Y2gJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvNjRiaXQtbGV4ZXItc2FmZXR5LnBhdGNoCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE3NyBAQAorLS0tIGEvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAorKysr
IGIvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAorQEAgLTY4LDYgKzY4LDcgQEAgdHlwZWRl
ZiBpbnQxNl90IGZsZXhfaW50MTZfdDsKKyB0eXBlZGVmIHVpbnQxNl90IGZsZXhfdWludDE2X3Q7
CisgdHlwZWRlZiBpbnQzMl90IGZsZXhfaW50MzJfdDsKKyB0eXBlZGVmIHVpbnQzMl90IGZsZXhf
dWludDMyX3Q7CisrdHlwZWRlZiB1aW50NjRfdCBmbGV4X3VpbnQ2NF90OworICNlbHNlCisgdHlw
ZWRlZiBzaWduZWQgY2hhciBmbGV4X2ludDhfdDsKKyB0eXBlZGVmIHNob3J0IGludCBmbGV4X2lu
dDE2X3Q7CitAQCAtMTkxLDYgKzE5MiwxMSBAQCB0eXBlZGVmIHZvaWQqIHl5c2Nhbl90OworIHR5
cGVkZWYgc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSAqWVlfQlVGRkVSX1NUQVRFOworICNlbmRpZgor
IAorKyNpZm5kZWYgWVlfVFlQRURFRl9ZWV9TSVpFX1QKKysjZGVmaW5lIFlZX1RZUEVERUZfWVlf
U0laRV9UCisrdHlwZWRlZiBzaXplX3QgeXlfc2l6ZV90OworKyNlbmRpZgorKworICNkZWZpbmUg
RU9CX0FDVF9DT05USU5VRV9TQ0FOIDAKKyAjZGVmaW5lIEVPQl9BQ1RfRU5EX09GX0ZJTEUgMQor
ICNkZWZpbmUgRU9CX0FDVF9MQVNUX01BVENIIDIKK0BAIC0yMDQsNyArMjEwLDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlICpZWV9CVUZGRVJfU1RBVEU7CisgICAgICAqLworICAg
ICAjZGVmaW5lICBZWV9MRVNTX0xJTkVOTyhuKSBcCisgICAgICAgICAgICAgZG8geyBcCistICAg
ICAgICAgICAgICAgIGludCB5eWw7XAorKyAgICAgICAgICAgICAgICB5eV9zaXplX3QgeXlsO1wK
KyAgICAgICAgICAgICAgICAgZm9yICggeXlsID0gbjsgeXlsIDwgeXlsZW5nOyArK3l5bCApXAor
ICAgICAgICAgICAgICAgICAgICAgaWYgKCB5eXRleHRbeXlsXSA9PSAnXG4nIClcCisgICAgICAg
ICAgICAgICAgICAgICAgICAgLS15eWxpbmVubztcCitAQCAtMjI2LDExICsyMzIsNiBAQCB0eXBl
ZGVmIHN0cnVjdCB5eV9idWZmZXJfc3RhdGUgKllZX0JVRkZFUl9TVEFURTsKKyAKKyAjZGVmaW5l
IHVucHV0KGMpIHl5dW5wdXQoIGMsIHl5Zy0+eXl0ZXh0X3B0ciAsIHl5c2Nhbm5lciApCisgCist
I2lmbmRlZiBZWV9UWVBFREVGX1lZX1NJWkVfVAorLSNkZWZpbmUgWVlfVFlQRURFRl9ZWV9TSVpF
X1QKKy10eXBlZGVmIHNpemVfdCB5eV9zaXplX3Q7CistI2VuZGlmCistCisgI2lmbmRlZiBZWV9T
VFJVQ1RfWVlfQlVGRkVSX1NUQVRFCisgI2RlZmluZSBZWV9TVFJVQ1RfWVlfQlVGRkVSX1NUQVRF
Cisgc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZQorQEAgLTI0OCw3ICsyNDksNyBAQCBzdHJ1Y3QgeXlf
YnVmZmVyX3N0YXRlCisgCS8qIE51bWJlciBvZiBjaGFyYWN0ZXJzIHJlYWQgaW50byB5eV9jaF9i
dWYsIG5vdCBpbmNsdWRpbmcgRU9CCisgCSAqIGNoYXJhY3RlcnMuCisgCSAqLworLQlpbnQgeXlf
bl9jaGFyczsKKysJeXlfc2l6ZV90IHl5X25fY2hhcnM7CisgCisgCS8qIFdoZXRoZXIgd2UgIm93
biIgdGhlIGJ1ZmZlciAtIGkuZS4sIHdlIGtub3cgd2UgY3JlYXRlZCBpdCwKKyAJICogYW5kIGNh
biByZWFsbG9jKCkgaXQgdG8gZ3JvdyBpdCwgYW5kIHNob3VsZCBmcmVlKCkgaXQgdG8KK0BAIC0z
MjcsNyArMzI4LDcgQEAgc3RhdGljIHZvaWQgeXlfaW5pdF9idWZmZXIgKFlZX0JVRkZFUl9TVEFU
RSBiLEZJTEUgKmZpbGUgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorIFlZX0JVRkZFUl9TVEFU
RSB5eV9zY2FuX2J1ZmZlciAoY2hhciAqYmFzZSx5eV9zaXplX3Qgc2l6ZSAseXlzY2FuX3QgeXlz
Y2FubmVyICk7CisgWVlfQlVGRkVSX1NUQVRFIHl5X3NjYW5fc3RyaW5nICh5eWNvbnN0IGNoYXIg
Knl5X3N0ciAseXlzY2FuX3QgeXlzY2FubmVyICk7CistWVlfQlVGRkVSX1NUQVRFIHl5X3NjYW5f
Ynl0ZXMgKHl5Y29uc3QgY2hhciAqYnl0ZXMsaW50IGxlbiAseXlzY2FuX3QgeXlzY2FubmVyICk7
CisrWVlfQlVGRkVSX1NUQVRFIHl5X3NjYW5fYnl0ZXMgKHl5Y29uc3QgY2hhciAqYnl0ZXMseXlf
c2l6ZV90IGxlbiAseXlzY2FuX3QgeXlzY2FubmVyICk7CisgCisgdm9pZCAqeXlhbGxvYyAoeXlf
c2l6ZV90ICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyB2b2lkICp5eXJlYWxsb2MgKHZvaWQgKix5
eV9zaXplX3QgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworQEAgLTM3OCw3ICszNzksNyBAQCBzdGF0
aWMgdm9pZCB5eV9mYXRhbF9lcnJvciAoeXljb25zdCBjaGFyIG1zZ1tdICx5eXNjYW5fdCB5eXNj
YW5uZXIgKTsKKyAgKi8KKyAjZGVmaW5lIFlZX0RPX0JFRk9SRV9BQ1RJT04gXAorIAl5eWctPnl5
dGV4dF9wdHIgPSB5eV9icDsgXAorLQl5eWxlbmcgPSAoc2l6ZV90KSAoeXlfY3AgLSB5eV9icCk7
IFwKKysJeXlsZW5nID0gKHl5X3NpemVfdCkgKHl5X2NwIC0geXlfYnApOyBcCisgCXl5Zy0+eXlf
aG9sZF9jaGFyID0gKnl5X2NwOyBcCisgCSp5eV9jcCA9ICdcMCc7IFwKKyAJeXlnLT55eV9jX2J1
Zl9wID0geXlfY3A7CitAQCAtMTAzNSw4ICsxMDM2LDggQEAgc3RydWN0IHl5Z3V0c190CisgICAg
IHNpemVfdCB5eV9idWZmZXJfc3RhY2tfbWF4OyAvKio8IGNhcGFjaXR5IG9mIHN0YWNrLiAqLwor
ICAgICBZWV9CVUZGRVJfU1RBVEUgKiB5eV9idWZmZXJfc3RhY2s7IC8qKjwgU3RhY2sgYXMgYW4g
YXJyYXkuICovCisgICAgIGNoYXIgeXlfaG9sZF9jaGFyOworLSAgICBpbnQgeXlfbl9jaGFyczsK
Ky0gICAgaW50IHl5bGVuZ19yOworKyAgICB5eV9zaXplX3QgeXlfbl9jaGFyczsKKysgICAgeXlf
c2l6ZV90IHl5bGVuZ19yOworICAgICBjaGFyICp5eV9jX2J1Zl9wOworICAgICBpbnQgeXlfaW5p
dDsKKyAgICAgaW50IHl5X3N0YXJ0OworQEAgLTEwODksNyArMTA5MCw3IEBAIEZJTEUgKnl5Z2V0
X291dCAoeXlzY2FuX3QgeXlzY2FubmVyICk7CisgCisgdm9pZCB5eXNldF9vdXQgIChGSUxFICog
b3V0X3N0ciAseXlzY2FuX3QgeXlzY2FubmVyICk7CisgCistaW50IHl5Z2V0X2xlbmcgKHl5c2Nh
bl90IHl5c2Nhbm5lciApOworK3l5X3NpemVfdCB5eWdldF9sZW5nICh5eXNjYW5fdCB5eXNjYW5u
ZXIgKTsKKyAKKyBjaGFyICp5eWdldF90ZXh0ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAKK0BA
IC0xMTU4LDcgKzExNTksNyBAQCBzdGF0aWMgaW50IGlucHV0ICh5eXNjYW5fdCB5eXNjYW5uZXIg
KTsKKyAJaWYgKCBZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2lzX2ludGVyYWN0aXZlICkg
XAorIAkJeyBcCisgCQlpbnQgYyA9ICcqJzsgXAorLQkJaW50IG47IFwKKysJCXl5X3NpemVfdCBu
OyBcCisgCQlmb3IgKCBuID0gMDsgbiA8IG1heF9zaXplICYmIFwKKyAJCQkgICAgIChjID0gZ2V0
YyggeXlpbiApKSAhPSBFT0YgJiYgYyAhPSAnXG4nOyArK24gKSBcCisgCQkJYnVmW25dID0gKGNo
YXIpIGM7IFwKK0BAIC0xMzE3LDcgKzEzMTgsNyBAQCB5eV9maW5kX2FjdGlvbjoKKyAKKyAJCWlm
ICggeXlfYWN0ICE9IFlZX0VORF9PRl9CVUZGRVIgJiYgeXlfcnVsZV9jYW5fbWF0Y2hfZW9sW3l5
X2FjdF0gKQorIAkJCXsKKy0JCQlpbnQgeXlsOworKwkJCXl5X3NpemVfdCB5eWw7CisgCQkJZm9y
ICggeXlsID0gMDsgeXlsIDwgeXlsZW5nOyArK3l5bCApCisgCQkJCWlmICggeXl0ZXh0W3l5bF0g
PT0gJ1xuJyApCisgCQkJCQkgICAKK0BAIC0yMjAzLDcgKzIyMDQsNyBAQCBzdGF0aWMgaW50IHl5
X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQorIAorIAllbHNlCisgCQl7Cist
CQkJaW50IG51bV90b19yZWFkID0KKysJCQl5eV9zaXplX3QgbnVtX3RvX3JlYWQgPQorIAkJCVlZ
X0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUgLSBudW1iZXJfdG9fbW92ZSAtIDE7
CisgCisgCQl3aGlsZSAoIG51bV90b19yZWFkIDw9IDAgKQorQEAgLTIyMTcsNyArMjIxOCw3IEBA
IHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgCisg
CQkJaWYgKCBiLT55eV9pc19vdXJfYnVmZmVyICkKKyAJCQkJeworLQkJCQlpbnQgbmV3X3NpemUg
PSBiLT55eV9idWZfc2l6ZSAqIDI7CisrCQkJCXl5X3NpemVfdCBuZXdfc2l6ZSA9IGItPnl5X2J1
Zl9zaXplICogMjsKKyAKKyAJCQkJaWYgKCBuZXdfc2l6ZSA8PSAwICkKKyAJCQkJCWItPnl5X2J1
Zl9zaXplICs9IGItPnl5X2J1Zl9zaXplIC8gODsKK0BAIC0yMjQ4LDcgKzIyNDksNyBAQCBzdGF0
aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQorIAorIAkJLyog
UmVhZCBpbiBtb3JlIGRhdGEuICovCisgCQlZWV9JTlBVVCggKCZZWV9DVVJSRU5UX0JVRkZFUl9M
VkFMVUUtPnl5X2NoX2J1ZltudW1iZXJfdG9fbW92ZV0pLAorLQkJCXl5Zy0+eXlfbl9jaGFycywg
KHNpemVfdCkgbnVtX3RvX3JlYWQgKTsKKysJCQl5eWctPnl5X25fY2hhcnMsIG51bV90b19yZWFk
ICk7CisgCisgCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X25fY2hhcnMgPSB5eWctPnl5
X25fY2hhcnM7CisgCQl9CitAQCAtMjM3Myw3ICsyMzc0LDcgQEAgc3RhdGljIGludCB5eV9nZXRf
bmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAKKyAJCWVsc2UKKyAJCQl7IC8qIG5l
ZWQgbW9yZSBpbnB1dCAqLworLQkJCWludCBvZmZzZXQgPSB5eWctPnl5X2NfYnVmX3AgLSB5eWct
Pnl5dGV4dF9wdHI7CisrCQkJeXlfc2l6ZV90IG9mZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5
Zy0+eXl0ZXh0X3B0cjsKKyAJCQkrK3l5Zy0+eXlfY19idWZfcDsKKyAKKyAJCQlzd2l0Y2ggKCB5
eV9nZXRfbmV4dF9idWZmZXIoIHl5c2Nhbm5lciApICkKK0BAIC0yNjYwLDcgKzI2NjEsNyBAQCB2
b2lkIHl5cG9wX2J1ZmZlcl9zdGF0ZSAoeXlzY2FuX3QgeXlzY2FubmVyKQorICAqLworIHN0YXRp
YyB2b2lkIHl5ZW5zdXJlX2J1ZmZlcl9zdGFjayAoeXlzY2FuX3QgeXlzY2FubmVyKQorIHsKKy0J
aW50IG51bV90b19hbGxvYzsKKysJeXlfc2l6ZV90IG51bV90b19hbGxvYzsKKyAgICAgc3RydWN0
IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworIAorIAlpZiAo
IXl5Zy0+eXlfYnVmZmVyX3N0YWNrKSB7CitAQCAtMjc1OCwxMiArMjc1OSwxMSBAQCBZWV9CVUZG
RVJfU1RBVEUgeXlfc2Nhbl9zdHJpbmcgKHl5Y29uc3QgY2hhciAqIHl5c3RyICwgeXlzY2FuX3Qg
eXlzY2FubmVyKQorICAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIgb2JqZWN0LgorICAq
IEByZXR1cm4gdGhlIG5ld2x5IGFsbG9jYXRlZCBidWZmZXIgc3RhdGUgb2JqZWN0LgorICAqLwor
LVlZX0JVRkZFUl9TVEFURSB5eV9zY2FuX2J5dGVzICAoeXljb25zdCBjaGFyICogeXlieXRlcywg
aW50ICBfeXlieXRlc19sZW4gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCisrWVlfQlVGRkVSX1NUQVRF
IHl5X3NjYW5fYnl0ZXMgICh5eWNvbnN0IGNoYXIgKiB5eWJ5dGVzLCB5eV9zaXplX3QgIF95eWJ5
dGVzX2xlbiAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKKyB7CisgCVlZX0JVRkZFUl9TVEFURSBiOwor
IAljaGFyICpidWY7CistCXl5X3NpemVfdCBuOworLQlpbnQgaTsKKysJeXlfc2l6ZV90IG4sIGk7
CisgICAgIAorIAkvKiBHZXQgbWVtb3J5IGZvciBmdWxsIGJ1ZmZlciwgaW5jbHVkaW5nIHNwYWNl
IGZvciB0cmFpbGluZyBFT0Incy4gKi8KKyAJbiA9IF95eWJ5dGVzX2xlbiArIDI7CitAQCAtMjkx
Myw3ICsyOTEzLDcgQEAgRklMRSAqeXlnZXRfb3V0ICAoeXlzY2FuX3QgeXlzY2FubmVyKQorIC8q
KiBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0b2tlbi4KKyAgKiBAcGFyYW0geXlzY2Fu
bmVyIFRoZSBzY2FubmVyIG9iamVjdC4KKyAgKi8KKy1pbnQgeXlnZXRfbGVuZyAgKHl5c2Nhbl90
IHl5c2Nhbm5lcikKKyt5eV9zaXplX3QgeXlnZXRfbGVuZyAgKHl5c2Nhbl90IHl5c2Nhbm5lcikK
KyB7CisgICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nh
bm5lcjsKKyAgICAgcmV0dXJuIHl5bGVuZzsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9CYXNlVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvQmFzZVR5cGVzLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CYXNlVHlwZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtOTAsMTAgKzkwLDYgQEAgZW51bSBUUXVhbGlmaWVyCiAgICAgRXZxSW52YXJpYW50
VmFyeWluZ091dCwgICAgLy8gdmVydGV4IHNoYWRlcnMgb25seSAgcmVhZC93cml0ZQogICAgIEV2
cVVuaWZvcm0sICAgICAgIC8vIFJlYWRvbmx5LCB2ZXJ0ZXggYW5kIGZyYWdtZW50CiAKLSAgICAv
LyBwYWNrL3VucGFjayBpbnB1dCBhbmQgb3V0cHV0Ci0gICAgRXZxSW5wdXQsCi0gICAgRXZxT3V0
cHV0LAotCiAgICAgLy8gcGFyYW1ldGVycwogICAgIEV2cUluLAogICAgIEV2cU91dCwKQEAgLTEx
Miw2ICsxMDgsNyBAQCBlbnVtIFRRdWFsaWZpZXIKICAgICAvLyBidWlsdC1pbnMgd3JpdHRlbiBi
eSBmcmFnbWVudCBzaGFkZXIKICAgICBFdnFGcmFnQ29sb3IsCiAgICAgRXZxRnJhZ0RhdGEsCisg
ICAgRXZxRnJhZ0RlcHRoLAogCiAgICAgLy8gZW5kIG9mIGxpc3QKICAgICBFdnFMYXN0CkBAIC0x
MzcsMTQgKzEzNCwxMyBAQCBpbmxpbmUgY29uc3QgY2hhciogZ2V0UXVhbGlmaWVyU3RyaW5nKFRR
CiAgICAgY2FzZSBFdnFJbjogICAgICAgICAgICAgcmV0dXJuICJpbiI7ICAgICAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRXZxT3V0OiAgICAgICAgICAgIHJldHVybiAib3V0IjsgICAgICAgICAg
ICBicmVhazsKICAgICBjYXNlIEV2cUluT3V0OiAgICAgICAgICByZXR1cm4gImlub3V0IjsgICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFJbnB1dDogICAgICAgICAgcmV0dXJuICJpbnB1dCI7
ICAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxT3V0cHV0OiAgICAgICAgIHJldHVybiAib3V0
cHV0IjsgICAgICAgICBicmVhazsKICAgICBjYXNlIEV2cVBvc2l0aW9uOiAgICAgICByZXR1cm4g
IlBvc2l0aW9uIjsgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFQb2ludFNpemU6ICAgICAgcmV0
dXJuICJQb2ludFNpemUiOyAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxRnJhZ0Nvb3JkOiAgICAg
IHJldHVybiAiRnJhZ0Nvb3JkIjsgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyb250RmFjaW5n
OiAgICByZXR1cm4gIkZyb250RmFjaW5nIjsgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcmFnQ29s
b3I6ICAgICAgcmV0dXJuICJGcmFnQ29sb3IiOyAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxRnJh
Z0RhdGE6ICAgICAgIHJldHVybiAiRnJhZ0RhdGEiOyAgICAgIGJyZWFrOworICAgIGNhc2UgRXZx
RnJhZ0RlcHRoOiAgICAgIHJldHVybiAiRnJhZ0RlcHRoIjsgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6ICAgICAgICAgICAgICAgIHJldHVybiAidW5rbm93biBxdWFsaWZpZXIiOwogICAgIH0KIH0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuSExTTC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Nv
ZGVHZW5ITFNMLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0NvZGVHZW5ITFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTQsOSArMTQs
MTEgQEAKIFRDb21waWxlciogQ29uc3RydWN0Q29tcGlsZXIoCiAgICAgU2hTaGFkZXJUeXBlIHR5
cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBTaFNoYWRlck91dHB1dCBvdXRwdXQpCiB7Ci0gIHN3aXRj
aCAob3V0cHV0KSB7Ci0gICAgY2FzZSBTSF9ITFNMX09VVFBVVDoKLSAgICAgIHJldHVybiBuZXcg
VHJhbnNsYXRvckhMU0wodHlwZSwgc3BlYyk7CisgIHN3aXRjaCAob3V0cHV0KQorICB7CisgICAg
Y2FzZSBTSF9ITFNMOV9PVVRQVVQ6CisgICAgY2FzZSBTSF9ITFNMMTFfT1VUUFVUOgorICAgICAg
cmV0dXJuIG5ldyBUcmFuc2xhdG9ySExTTCh0eXBlLCBzcGVjLCBvdXRwdXQpOwogICAgIGRlZmF1
bHQ6CiAgICAgICByZXR1cm4gTlVMTDsKICAgfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9Db21tb24uaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNCwyNCArMTQsMTIgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL1Bvb2xBbGxvYy5oIgogCi0v
LyBXZSBuZWVkIHR3byBwaWVjZXMgb2YgaW5mb3JtYXRpb24gdG8gcmVwb3J0IGVycm9ycy93YXJu
aW5ncyAtIHN0cmluZyBhbmQKLS8vIGxpbmUgbnVtYmVyLiBXZSBlbmNvZGUgdGhlc2UgaW50byBh
IHNpbmdsZSBpbnQgc28gdGhhdCBpdCBjYW4gYmUgZWFzaWx5Ci0vLyBpbmNyZW1lbnRlZC9kZWNy
ZW1lbnRlZCBieSBsZXhlci4gVGhlIHJpZ2h0IFNPVVJDRV9MT0NfTElORV9TSVpFIGJpdHMgc3Rv
cmUKLS8vIGxpbmUgbnVtYmVyIHdoaWxlIHRoZSByZXN0IHN0b3JlIHRoZSBzdHJpbmcgbnVtYmVy
LiBTaW5jZSB0aGUgc2hhZGVycyBhcmUKLS8vIHVzdWFsbHkgc21hbGwsIHdlIHNob3VsZCBub3Qg
cnVuIG91dCBvZiBtZW1vcnkuIFNPVVJDRV9MT0NfTElORV9TSVpFCi0vLyBjYW4gYmUgaW5jcmVh
c2VkIHRvIGFsbGV2aWF0ZSB0aGlzIGlzc3VlLgotdHlwZWRlZiBpbnQgVFNvdXJjZUxvYzsKLWNv
bnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfU0laRSA9IDE2OyAgLy8gaW4gYml0cy4K
LWNvbnN0IHVuc2lnbmVkIGludCBTT1VSQ0VfTE9DX0xJTkVfTUFTSyA9ICgxIDw8IFNPVVJDRV9M
T0NfTElORV9TSVpFKSAtIDE7Ci0KLWlubGluZSBUU291cmNlTG9jIEVuY29kZVNvdXJjZUxvYyhp
bnQgc3RyaW5nLCBpbnQgbGluZSkgewotICAgIHJldHVybiAoc3RyaW5nIDw8IFNPVVJDRV9MT0Nf
TElORV9TSVpFKSB8IChsaW5lICYgU09VUkNFX0xPQ19MSU5FX01BU0spOwotfQotCi1pbmxpbmUg
dm9pZCBEZWNvZGVTb3VyY2VMb2MoVFNvdXJjZUxvYyBsb2MsIGludCogc3RyaW5nLCBpbnQqIGxp
bmUpIHsKLSAgICBpZiAoc3RyaW5nKSAqc3RyaW5nID0gbG9jID4+IFNPVVJDRV9MT0NfTElORV9T
SVpFOwotICAgIGlmIChsaW5lKSAqbGluZSA9IGxvYyAmIFNPVVJDRV9MT0NfTElORV9NQVNLOwot
fQorc3RydWN0IFRTb3VyY2VMb2MgeworICAgIGludCBmaXJzdF9maWxlOworICAgIGludCBmaXJz
dF9saW5lOworICAgIGludCBsYXN0X2ZpbGU7CisgICAgaW50IGxhc3RfbGluZTsKK307CiAKIC8v
CiAvLyBQdXQgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSBpbiBiYXNlIGNsYXNzZXMgdG8gbWFr
ZSB0aGVtIHVzZSB0aGlzIHNjaGVtZS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Db21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMSArMSwxMSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmln
aHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
IC8vCiAKICNpbmNsdWRlICJjb21waWxlci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIgotI2lu
Y2x1ZGUgImNvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL0Rl
dGVjdENhbGxEZXB0aC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0Zvckxvb3BVbnJvbGwuaCIKICNp
bmNsdWRlICJjb21waWxlci9Jbml0aWFsaXplLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlh
bGl6ZVBhcnNlQ29udGV4dC5oIgpAQCAtMjcsNTEgKzI3LDYgQEAgYm9vbCBpc1dlYkdMQmFzZWRT
cGVjKFNoU2hhZGVyU3BlYyBzcGVjKQogfQogCiBuYW1lc3BhY2UgewotYm9vbCBJbml0aWFsaXpl
U3ltYm9sVGFibGUoCi0gICAgY29uc3QgVEJ1aWx0SW5TdHJpbmdzJiBidWlsdEluU3RyaW5ncywK
LSAgICBTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0IFNoQnVpbHRJ
blJlc291cmNlcyYgcmVzb3VyY2VzLAotICAgIFRJbmZvU2luayYgaW5mb1NpbmssIFRTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUpCi17Ci0gICAgVEludGVybWVkaWF0ZSBpbnRlcm1lZGlhdGUoaW5m
b1NpbmspOwotICAgIFRFeHRlbnNpb25CZWhhdmlvciBleHRCZWhhdmlvcjsKLSAgICBJbml0RXh0
ZW5zaW9uQmVoYXZpb3IocmVzb3VyY2VzLCBleHRCZWhhdmlvcik7Ci0gICAgLy8gVGhlIGJ1aWx0
aW5zIGRlbGliZXJhdGVseSBkb24ndCBzcGVjaWZ5IHByZWNpc2lvbnMgZm9yIHRoZSBmdW5jdGlv
bgotICAgIC8vIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHR5cGVzLiBGb3IgdGhhdCByZWFzb24gd2Ug
ZG9uJ3QgdHJ5IHRvIGNoZWNrIHRoZW0uCi0gICAgVFBhcnNlQ29udGV4dCBwYXJzZUNvbnRleHQo
c3ltYm9sVGFibGUsIGV4dEJlaGF2aW9yLCBpbnRlcm1lZGlhdGUsIHR5cGUsIHNwZWMsIDAsIGZh
bHNlLCBOVUxMLCBpbmZvU2luayk7Ci0gICAgcGFyc2VDb250ZXh0LmZyYWdtZW50UHJlY2lzaW9u
SGlnaCA9IHJlc291cmNlcy5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPT0gMTsKLQotICAgIEdsb2Jh
bFBhcnNlQ29udGV4dCA9ICZwYXJzZUNvbnRleHQ7Ci0KLSAgICBhc3NlcnQoc3ltYm9sVGFibGUu
aXNFbXB0eSgpKTsgICAgICAgCi0gICAgLy8KLSAgICAvLyBQYXJzZSB0aGUgYnVpbHQtaW5zLiAg
VGhpcyBzaG91bGQgb25seSBoYXBwZW4gb25jZSBwZXIKLSAgICAvLyBsYW5ndWFnZSBzeW1ib2wg
dGFibGUuCi0gICAgLy8KLSAgICAvLyBQdXNoIHRoZSBzeW1ib2wgdGFibGUgdG8gZ2l2ZSBpdCBh
biBpbml0aWFsIHNjb3BlLiAgVGhpcwotICAgIC8vIHB1c2ggc2hvdWxkIG5vdCBoYXZlIGEgY29y
cmVzcG9uZGluZyBwb3AsIHNvIHRoYXQgYnVpbHQtaW5zCi0gICAgLy8gYXJlIHByZXNlcnZlZCwg
YW5kIHRoZSB0ZXN0IGZvciBhbiBlbXB0eSB0YWJsZSBmYWlscy4KLSAgICAvLwotICAgIHN5bWJv
bFRhYmxlLnB1c2goKTsKLQotICAgIGZvciAoVEJ1aWx0SW5TdHJpbmdzOjpjb25zdF9pdGVyYXRv
ciBpID0gYnVpbHRJblN0cmluZ3MuYmVnaW4oKTsgaSAhPSBidWlsdEluU3RyaW5ncy5lbmQoKTsg
KytpKQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciogYnVpbHRJblNoYWRlcnMgPSBpLT5jX3N0
cigpOwotICAgICAgICBpbnQgYnVpbHRJbkxlbmd0aHMgPSBzdGF0aWNfY2FzdDxpbnQ+KGktPnNp
emUoKSk7Ci0gICAgICAgIGlmIChidWlsdEluTGVuZ3RocyA8PSAwKQotICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIGlmIChQYVBhcnNlU3RyaW5ncygxLCAmYnVpbHRJblNoYWRlcnMsICZi
dWlsdEluTGVuZ3RocywgJnBhcnNlQ29udGV4dCkgIT0gMCkKLSAgICAgICAgewotICAgICAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5hYmxlIHRv
IHBhcnNlIGJ1aWx0LWlucyIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgSWRlbnRpZnlCdWlsdElucyh0eXBlLCBzcGVjLCByZXNvdXJjZXMsIHN5
bWJvbFRhYmxlKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCiBjbGFzcyBUU2NvcGVkUG9vbEFs
bG9jYXRvciB7CiBwdWJsaWM6CiAgICAgVFNjb3BlZFBvb2xBbGxvY2F0b3IoVFBvb2xBbGxvY2F0
b3IqIGFsbG9jYXRvciwgYm9vbCBwdXNoUG9wKQpAQCAtMTAzLDYgKzU4LDkgQEAgVFNoSGFuZGxl
QmFzZTo6flRTaEhhbmRsZUJhc2UoKSB7CiBUQ29tcGlsZXI6OlRDb21waWxlcihTaFNoYWRlclR5
cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMpCiAgICAgOiBzaGFkZXJUeXBlKHR5cGUpLAogICAg
ICAgc2hhZGVyU3BlYyhzcGVjKSwKKyAgICAgIG1heFVuaWZvcm1WZWN0b3JzKDApLAorICAgICAg
bWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkoMCksCisgICAgICBtYXhDYWxsU3RhY2tEZXB0aCgwKSwK
ICAgICAgIGZyYWdtZW50UHJlY2lzaW9uSGlnaChmYWxzZSksCiAgICAgICBjbGFtcGluZ1N0cmF0
ZWd5KFNIX0NMQU1QX1dJVEhfQ0xBTVBfSU5UUklOU0lDKSwKICAgICAgIGJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yKHR5cGUpCkBAIC0xMjEsNiArNzksOCBAQCBib29sIFRDb21waWxlcjo6SW5pdChj
b25zdCBTaEJ1aWx0SW5SZXNvCiAgICAgbWF4VW5pZm9ybVZlY3RvcnMgPSAoc2hhZGVyVHlwZSA9
PSBTSF9WRVJURVhfU0hBREVSKSA/CiAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3Jt
VmVjdG9ycyA6CiAgICAgICAgIHJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzOwor
ICAgIG1heEV4cHJlc3Npb25Db21wbGV4aXR5ID0gcmVzb3VyY2VzLk1heEV4cHJlc3Npb25Db21w
bGV4aXR5OworICAgIG1heENhbGxTdGFja0RlcHRoID0gcmVzb3VyY2VzLk1heENhbGxTdGFja0Rl
cHRoOwogICAgIFRTY29wZWRQb29sQWxsb2NhdG9yIHNjb3BlZEFsbG9jKCZhbGxvY2F0b3IsIGZh
bHNlKTsKIAogICAgIC8vIEdlbmVyYXRlIGJ1aWx0LWluIHN5bWJvbCB0YWJsZS4KQEAgLTE3MCw4
ICsxMzAsMTAgQEAgYm9vbCBUQ29tcGlsZXI6OmNvbXBpbGUoY29uc3QgY2hhciogY29ucwogICAg
IC8vIFdlIHByZXNlcnZlIHN5bWJvbHMgYXQgdGhlIGJ1aWx0LWluIGxldmVsIGZyb20gY29tcGls
ZS10by1jb21waWxlLgogICAgIC8vIFN0YXJ0IHB1c2hpbmcgdGhlIHVzZXItZGVmaW5lZCBzeW1i
b2xzIGF0IGdsb2JhbCBsZXZlbC4KICAgICBzeW1ib2xUYWJsZS5wdXNoKCk7Ci0gICAgaWYgKCFz
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkpCi0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIldyb25nIHN5bWJvbCB0YWJsZSBsZXZlbCIpOworICAg
IGlmICghc3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpKSB7CisgICAgICAgIGluZm9TaW5rLmlu
Zm8ucHJlZml4KEVQcmVmaXhJbnRlcm5hbEVycm9yKTsKKyAgICAgICAgaW5mb1NpbmsuaW5mbyA8
PCAiV3Jvbmcgc3ltYm9sIHRhYmxlIGxldmVsIjsKKyAgICB9CiAKICAgICAvLyBQYXJzZSBzaGFk
ZXIuCiAgICAgYm9vbCBzdWNjZXNzID0KQEAgLTE4Miw3ICsxNDQsNyBAQCBib29sIFRDb21waWxl
cjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgIHN1Y2Nlc3MgPSBpbnRlcm1lZGlh
dGUucG9zdFByb2Nlc3Mocm9vdCk7CiAKICAgICAgICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgICAg
ICBzdWNjZXNzID0gZGV0ZWN0UmVjdXJzaW9uKHJvb3QpOworICAgICAgICAgICAgc3VjY2VzcyA9
IGRldGVjdENhbGxEZXB0aChyb290LCBpbmZvU2luaywgKGNvbXBpbGVPcHRpb25zICYgU0hfTElN
SVRfQ0FMTF9TVEFDS19ERVBUSCkgIT0gMCk7CiAKICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgKGNv
bXBpbGVPcHRpb25zICYgU0hfVkFMSURBVEVfTE9PUF9JTkRFWElORykpCiAgICAgICAgICAgICBz
dWNjZXNzID0gdmFsaWRhdGVMaW1pdGF0aW9ucyhyb290KTsKQEAgLTIwNSw2ICsxNjcsMTAgQEAg
Ym9vbCBUQ29tcGlsZXI6OmNvbXBpbGUoY29uc3QgY2hhciogY29ucwogICAgICAgICBpZiAoc3Vj
Y2VzcyAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9DTEFNUF9JTkRJUkVDVF9BUlJBWV9CT1VORFMp
KQogICAgICAgICAgICAgYXJyYXlCb3VuZHNDbGFtcGVyLk1hcmtJbmRpcmVjdEFycmF5Qm91bmRz
Rm9yQ2xhbXBpbmcocm9vdCk7CiAKKyAgICAgICAgLy8gRGlzYWxsb3cgZXhwcmVzc2lvbnMgZGVl
bWVkIHRvbyBjb21wbGV4LgorICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9wdGlvbnMg
JiBTSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkpKQorICAgICAgICAgICAgc3VjY2VzcyA9
IGxpbWl0RXhwcmVzc2lvbkNvbXBsZXhpdHkocm9vdCk7CisKICAgICAgICAgLy8gQ2FsbCBtYXBM
b25nVmFyaWFibGVOYW1lcygpIGJlZm9yZSBjb2xsZWN0QXR0cmlic1VuaWZvcm1zKCkgc28gaW4K
ICAgICAgICAgLy8gY29sbGVjdEF0dHJpYnNVbmlmb3JtcygpIHdlIGFscmVhZHkgaGF2ZSB0aGUg
bWFwcGVkIHN5bWJvbCBuYW1lcyBhbmQKICAgICAgICAgLy8gd2UgY291bGQgY29tcG9zaXRlIG1h
cHBlZCBhbmQgb3JpZ2luYWwgdmFyaWFibGUgbmFtZXMuCkBAIC0yMTcsNyArMTgzLDggQEAgYm9v
bCBUQ29tcGlsZXI6OmNvbXBpbGUoY29uc3QgY2hhciogY29ucwogICAgICAgICAgICAgaWYgKGNv
bXBpbGVPcHRpb25zICYgU0hfRU5GT1JDRV9QQUNLSU5HX1JFU1RSSUNUSU9OUykgewogICAgICAg
ICAgICAgICAgIHN1Y2Nlc3MgPSBlbmZvcmNlUGFja2luZ1Jlc3RyaWN0aW9ucygpOwogICAgICAg
ICAgICAgICAgIGlmICghc3VjY2VzcykgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCAidG9vIG1hbnkgdW5pZm9ybXMiKTsKKyAgICAgICAg
ICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9yKTsKKyAgICAgICAg
ICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAidG9vIG1hbnkgdW5pZm9ybXMiOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjM5LDEzICsyMDYsNDIg
QEAgYm9vbCBUQ29tcGlsZXI6OmNvbXBpbGUoY29uc3QgY2hhciogY29ucwogICAgIHJldHVybiBz
dWNjZXNzOwogfQogCi1ib29sIFRDb21waWxlcjo6SW5pdEJ1aWx0SW5TeW1ib2xUYWJsZShjb25z
dCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcykKK2Jvb2wgVENvbXBpbGVyOjpJbml0QnVp
bHRJblN5bWJvbFRhYmxlKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzKQogewot
ICAgIFRCdWlsdElucyBidWlsdEluczsKKyAgICBjb21waWxlUmVzb3VyY2VzID0gcmVzb3VyY2Vz
OworCisgICAgYXNzZXJ0KHN5bWJvbFRhYmxlLmlzRW1wdHkoKSk7CisgICAgc3ltYm9sVGFibGUu
cHVzaCgpOwogCi0gICAgYnVpbHRJbnMuaW5pdGlhbGl6ZShzaGFkZXJUeXBlLCBzaGFkZXJTcGVj
LCByZXNvdXJjZXMpOwotICAgIHJldHVybiBJbml0aWFsaXplU3ltYm9sVGFibGUoYnVpbHRJbnMu
Z2V0QnVpbHRJblN0cmluZ3MoKSwKLSAgICAgICAgc2hhZGVyVHlwZSwgc2hhZGVyU3BlYywgcmVz
b3VyY2VzLCBpbmZvU2luaywgc3ltYm9sVGFibGUpOworICAgIFRQdWJsaWNUeXBlIGludGVnZXI7
CisgICAgaW50ZWdlci50eXBlID0gRWJ0SW50OworICAgIGludGVnZXIuc2l6ZSA9IDE7CisgICAg
aW50ZWdlci5tYXRyaXggPSBmYWxzZTsKKyAgICBpbnRlZ2VyLmFycmF5ID0gZmFsc2U7CisKKyAg
ICBUUHVibGljVHlwZSBmbG9hdGluZ1BvaW50OworICAgIGZsb2F0aW5nUG9pbnQudHlwZSA9IEVi
dEZsb2F0OworICAgIGZsb2F0aW5nUG9pbnQuc2l6ZSA9IDE7CisgICAgZmxvYXRpbmdQb2ludC5t
YXRyaXggPSBmYWxzZTsKKyAgICBmbG9hdGluZ1BvaW50LmFycmF5ID0gZmFsc2U7CisKKyAgICBz
d2l0Y2goc2hhZGVyVHlwZSkKKyAgICB7CisgICAgICBjYXNlIFNIX0ZSQUdNRU5UX1NIQURFUjoK
KyAgICAgICAgc3ltYm9sVGFibGUuc2V0RGVmYXVsdFByZWNpc2lvbihpbnRlZ2VyLCBFYnBNZWRp
dW0pOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgU0hfVkVSVEVYX1NIQURFUjoKKyAgICAg
ICAgc3ltYm9sVGFibGUuc2V0RGVmYXVsdFByZWNpc2lvbihpbnRlZ2VyLCBFYnBIaWdoKTsKKyAg
ICAgICAgc3ltYm9sVGFibGUuc2V0RGVmYXVsdFByZWNpc2lvbihmbG9hdGluZ1BvaW50LCBFYnBI
aWdoKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UgJiYgIkxh
bmd1YWdlIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICB9CisKKyAgICBJbnNlcnRCdWlsdEluRnVuY3Rp
b25zKHNoYWRlclR5cGUsIHNoYWRlclNwZWMsIHJlc291cmNlcywgc3ltYm9sVGFibGUpOworCisg
ICAgSWRlbnRpZnlCdWlsdElucyhzaGFkZXJUeXBlLCBzaGFkZXJTcGVjLCByZXNvdXJjZXMsIHN5
bWJvbFRhYmxlKTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFRDb21waWxlcjo6Y2xl
YXJSZXN1bHRzKCkKQEAgLTI2MywxOCArMjU5LDI0IEBAIHZvaWQgVENvbXBpbGVyOjpjbGVhclJl
c3VsdHMoKQogICAgIG5hbWVNYXAuY2xlYXIoKTsKIH0KIAotYm9vbCBUQ29tcGlsZXI6OmRldGVj
dFJlY3Vyc2lvbihUSW50ZXJtTm9kZSogcm9vdCkKK2Jvb2wgVENvbXBpbGVyOjpkZXRlY3RDYWxs
RGVwdGgoVEludGVybU5vZGUqIHJvb3QsIFRJbmZvU2luayYgaW5mb1NpbmssIGJvb2wgbGltaXRD
YWxsU3RhY2tEZXB0aCkKIHsKLSAgICBEZXRlY3RSZWN1cnNpb24gZGV0ZWN0OworICAgIERldGVj
dENhbGxEZXB0aCBkZXRlY3QoaW5mb1NpbmssIGxpbWl0Q2FsbFN0YWNrRGVwdGgsIG1heENhbGxT
dGFja0RlcHRoKTsKICAgICByb290LT50cmF2ZXJzZSgmZGV0ZWN0KTsKLSAgICBzd2l0Y2ggKGRl
dGVjdC5kZXRlY3RSZWN1cnNpb24oKSkgewotICAgICAgICBjYXNlIERldGVjdFJlY3Vyc2lvbjo6
a0Vycm9yTm9uZToKKyAgICBzd2l0Y2ggKGRldGVjdC5kZXRlY3RDYWxsRGVwdGgoKSkgeworICAg
ICAgICBjYXNlIERldGVjdENhbGxEZXB0aDo6a0Vycm9yTm9uZToKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICBjYXNlIERldGVjdFJlY3Vyc2lvbjo6a0Vycm9yTWlzc2luZ01haW46
Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiTWlzc2lu
ZyBtYWluKCkiKTsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvck1pc3NpbmdN
YWluOgorICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9yKTsKKyAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIk1pc3NpbmcgbWFpbigpIjsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvclJlY3Vy
c2lvbjoKKyAgICAgICAgICAgIGluZm9TaW5rLmluZm8ucHJlZml4KEVQcmVmaXhFcnJvcik7Cisg
ICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJGdW5jdGlvbiByZWN1cnNpb24gZGV0ZWN0ZWQi
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIERldGVjdFJlY3Vyc2lv
bjo6a0Vycm9yUmVjdXJzaW9uOgotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhFcnJvciwgIkZ1bmN0aW9uIHJlY3Vyc2lvbiBkZXRlY3RlZCIpOworICAgICAgICBjYXNl
IERldGVjdENhbGxEZXB0aDo6a0Vycm9yTWF4RGVwdGhFeGNlZWRlZDoKKyAgICAgICAgICAgIGlu
Zm9TaW5rLmluZm8ucHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICBpbmZvU2luay5p
bmZvIDw8ICJGdW5jdGlvbiBjYWxsIHN0YWNrIHRvbyBkZWVwIjsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CkBA
IC0zMjAsNiArMzIyLDI4IEBAIGJvb2wgVENvbXBpbGVyOjplbmZvcmNlVGltaW5nUmVzdHJpY3Rp
b24KICAgICB9CiB9CiAKK2Jvb2wgVENvbXBpbGVyOjpsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5
KFRJbnRlcm1Ob2RlKiByb290KQoreworICAgIFRJbnRlcm1UcmF2ZXJzZXIgdHJhdmVyc2VyOwor
ICAgIHJvb3QtPnRyYXZlcnNlKCZ0cmF2ZXJzZXIpOworICAgIFREZXBlbmRlbmN5R3JhcGggZ3Jh
cGgocm9vdCk7CisKKyAgICBmb3IgKFRGdW5jdGlvbkNhbGxWZWN0b3I6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSBncmFwaC5iZWdpblVzZXJEZWZpbmVkRnVuY3Rpb25DYWxscygpOworICAgICAgICAg
aXRlciAhPSBncmFwaC5lbmRVc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbHMoKTsKKyAgICAgICAgICsr
aXRlcikKKyAgICB7CisgICAgICAgIFRHcmFwaEZ1bmN0aW9uQ2FsbCogc2FtcGxlclN5bWJvbCA9
ICppdGVyOworICAgICAgICBURGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyIGdyYXBoVHJhdmVyc2Vy
OworICAgICAgICBzYW1wbGVyU3ltYm9sLT50cmF2ZXJzZSgmZ3JhcGhUcmF2ZXJzZXIpOworICAg
IH0KKworICAgIGlmICh0cmF2ZXJzZXIuZ2V0TWF4RGVwdGgoKSA+IG1heEV4cHJlc3Npb25Db21w
bGV4aXR5KSB7CisgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIkV4cHJlc3Npb24gdG9vIGNvbXBs
ZXguIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogYm9vbCBUQ29tcGlsZXI6OmVuZm9yY2VGcmFnbWVudFNoYWRlclRpbWluZ1Jlc3RyaWN0aW9u
cyhjb25zdCBURGVwZW5kZW5jeUdyYXBoJiBncmFwaCkKIHsKICAgICBSZXN0cmljdEZyYWdtZW50
U2hhZGVyVGltaW5nIHJlc3RyaWN0b3IoaW5mb1NpbmsuaW5mbyk7CkBAIC0zNjMsNiArMzg3LDEx
IEBAIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgVENvbXBpbGVyOjpnZXQKICAgICByZXR1cm4g
ZXh0ZW5zaW9uQmVoYXZpb3I7CiB9CiAKK2NvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgVENvbXBp
bGVyOjpnZXRSZXNvdXJjZXMoKSBjb25zdAoreworICAgIHJldHVybiBjb21waWxlUmVzb3VyY2Vz
OworfQorCiBjb25zdCBBcnJheUJvdW5kc0NsYW1wZXImIFRDb21waWxlcjo6Z2V0QXJyYXlCb3Vu
ZHNDbGFtcGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gYXJyYXlCb3VuZHNDbGFtcGVyOwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbnN0YW50VW5pb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3Rh
bnRVbmlvbi5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xNCw2ICsxNCw3IEBA
IHB1YmxpYzoKICAgICBDb25zdGFudFVuaW9uKCkKICAgICB7CiAgICAgICAgIGlDb25zdCA9IDA7
CisgICAgICAgIHR5cGUgPSBFYnRWb2lkOwogICAgIH0KIAogICAgIFBPT0xfQUxMT0NBVE9SX05F
V19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikgICAgICAgIApJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
RGV0ZWN0Q2FsbERlcHRoLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODUgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJjb21waWxlci9EZXRlY3RDYWxsRGVwdGguaCIKKyNp
bmNsdWRlICJjb21waWxlci9JbmZvU2luay5oIgorCitEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9u
Tm9kZTo6RnVuY3Rpb25Ob2RlKGNvbnN0IFRTdHJpbmcmIGZuYW1lKQorICAgIDogbmFtZShmbmFt
ZSksCisgICAgICB2aXNpdChQcmVWaXNpdCkKK3sKK30KKworY29uc3QgVFN0cmluZyYgRGV0ZWN0
Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OmdldE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBu
YW1lOworfQorCit2b2lkIERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjphZGRDYWxsZWUo
CisgICAgRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGUqIGNhbGxlZSkKK3sKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNhbGxlZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGNh
bGxlZXNbaV0gPT0gY2FsbGVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYWxs
ZWVzLnB1c2hfYmFjayhjYWxsZWUpOworfQorCitpbnQgRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlv
bk5vZGU6OmRldGVjdENhbGxEZXB0aChEZXRlY3RDYWxsRGVwdGgqIGRldGVjdENhbGxEZXB0aCwg
aW50IGRlcHRoKQoreworICAgIEFTU0VSVCh2aXNpdCA9PSBQcmVWaXNpdCk7CisgICAgQVNTRVJU
KGRldGVjdENhbGxEZXB0aCk7CisKKyAgICBpbnQgbWF4RGVwdGggPSBkZXB0aDsKKyAgICB2aXNp
dCA9IEluVmlzaXQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIHN3aXRjaCAoY2FsbGVlc1tpXS0+dmlzaXQpIHsKKyAgICAgICAgICAg
IGNhc2UgSW5WaXNpdDoKKyAgICAgICAgICAgICAgICAvLyBjeWNsZSBkZXRlY3RlZCwgaS5lLiwg
cmVjdXJzaW9uIGRldGVjdGVkLgorICAgICAgICAgICAgICAgIHJldHVybiBrSW5maW5pdGVDYWxs
RGVwdGg7CisgICAgICAgICAgICBjYXNlIFBvc3RWaXNpdDoKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgUHJlVmlzaXQ6IHsKKyAgICAgICAgICAgICAgICAvLyBDaGVj
ayBiZWZvcmUgd2UgcmVjdXJzZSBzbyB3ZSBkb24ndCBnbyB0b28gZGVwdGgKKyAgICAgICAgICAg
ICAgICBpZiAoZGV0ZWN0Q2FsbERlcHRoLT5jaGVja0V4Y2VlZHNNYXhEZXB0aChkZXB0aCkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXB0aDsKKyAgICAgICAgICAgICAgICBpbnQgY2Fs
bERlcHRoID0gY2FsbGVlc1tpXS0+ZGV0ZWN0Q2FsbERlcHRoKGRldGVjdENhbGxEZXB0aCwgZGVw
dGggKyAxKTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBhZnRlciB3ZSByZWN1cnNlIHNvIHdl
IGNhbiBleGl0IGltbWVkaWF0ZWx5IGFuZCBwcm92aWRlIGluZm8uCisgICAgICAgICAgICAgICAg
aWYgKGRldGVjdENhbGxEZXB0aC0+Y2hlY2tFeGNlZWRzTWF4RGVwdGgoY2FsbERlcHRoKSkgewor
ICAgICAgICAgICAgICAgICAgICBkZXRlY3RDYWxsRGVwdGgtPmdldEluZm9TaW5rKCkuaW5mbyA8
PCAiPC0iIDw8IGNhbGxlZXNbaV0tPmdldE5hbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNhbGxEZXB0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWF4RGVw
dGggPSBzdGQ6Om1heChjYWxsRGVwdGgsIG1heERlcHRoKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KyAgICB2aXNpdCA9IFBvc3RWaXNpdDsKKyAgICByZXR1cm4gbWF4RGVwdGg7Cit9CisKK3ZvaWQg
RGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OnJlc2V0KCkKK3sKKyAgICB2aXNpdCA9IFBy
ZVZpc2l0OworfQorCitEZXRlY3RDYWxsRGVwdGg6OkRldGVjdENhbGxEZXB0aChUSW5mb1Npbmsm
IGluZm9TaW5rLCBib29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgsIGludCBtYXhDYWxsU3RhY2tEZXB0
aCkKKyAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlKSwKKyAg
ICAgIGN1cnJlbnRGdW5jdGlvbihOVUxMKSwKKyAgICAgIGluZm9TaW5rKGluZm9TaW5rKSwKKyAg
ICAgIG1heERlcHRoKGxpbWl0Q2FsbFN0YWNrRGVwdGggPyBtYXhDYWxsU3RhY2tEZXB0aCA6IEZ1
bmN0aW9uTm9kZTo6a0luZmluaXRlQ2FsbERlcHRoKQoreworfQorCitEZXRlY3RDYWxsRGVwdGg6
On5EZXRlY3RDYWxsRGVwdGgoKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rp
b25zLnNpemUoKTsgKytpKQorICAgICAgICBkZWxldGUgZnVuY3Rpb25zW2ldOworfQorCitib29s
IERldGVjdENhbGxEZXB0aDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dy
ZWdhdGUqIG5vZGUpCit7CisgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQorICAgIHsKKyAgICAg
ICAgY2FzZSBFT3BQcm90b3R5cGU6CisgICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWNsYXJhdGlv
bi4KKyAgICAgICAgICAgIC8vIERvbid0IGFkZCBGdW5jdGlvbk5vZGUgaGVyZSBiZWNhdXNlIG5v
ZGUtPmdldE5hbWUoKSBpcyB0aGUKKyAgICAgICAgICAgIC8vIHVubWFuZ2xlZCBmdW5jdGlvbiBu
YW1lLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wRnVuY3Rpb246IHsKKyAg
ICAgICAgICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCisgICAgICAgICAgICBpZiAodmlzaXQg
PT0gUHJlVmlzaXQpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24gPSBmaW5kRnVu
Y3Rpb25CeU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVu
dEZ1bmN0aW9uID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9u
ID0gbmV3IEZ1bmN0aW9uTm9kZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbnMucHVzaF9iYWNrKGN1cnJlbnRGdW5jdGlvbik7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlIGlmICh2aXNpdCA9PSBQb3N0VmlzaXQpIHsKKyAgICAgICAg
ICAgICAgICBjdXJyZW50RnVuY3Rpb24gPSBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBFT3BGdW5jdGlvbkNhbGw6IHsKKyAg
ICAgICAgICAgIC8vIEZ1bmN0aW9uIGNhbGwuCisgICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJl
VmlzaXQpIHsKKyAgICAgICAgICAgICAgICBGdW5jdGlvbk5vZGUqIGZ1bmMgPSBmaW5kRnVuY3Rp
b25CeU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoZnVuYyA9PSBO
VUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBuZXcgRnVuY3Rpb25Ob2RlKG5vZGUt
PmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoX2JhY2soZnVu
Yyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RnVuY3Rp
b24pCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbi0+YWRkQ2FsbGVlKGZ1bmMp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBEZXRlY3RDYWxsRGVwdGg6OmNoZWNrRXhjZWVkc01heERlcHRoKGludCBkZXB0aCkK
K3sKKyAgICByZXR1cm4gZGVwdGggPj0gbWF4RGVwdGg7Cit9CisKK3ZvaWQgRGV0ZWN0Q2FsbERl
cHRoOjpyZXNldEZ1bmN0aW9uTm9kZXMoKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZnVuY3Rpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGZ1bmN0aW9uc1tpXS0+cmVzZXQoKTsK
KyAgICB9Cit9CisKK0RldGVjdENhbGxEZXB0aDo6RXJyb3JDb2RlIERldGVjdENhbGxEZXB0aDo6
ZGV0ZWN0Q2FsbERlcHRoRm9yRnVuY3Rpb24oRnVuY3Rpb25Ob2RlKiBmdW5jKQoreworICAgIGN1
cnJlbnRGdW5jdGlvbiA9IE5VTEw7CisgICAgcmVzZXRGdW5jdGlvbk5vZGVzKCk7CisKKyAgICBp
bnQgbWF4Q2FsbERlcHRoID0gZnVuYy0+ZGV0ZWN0Q2FsbERlcHRoKHRoaXMsIDEpOworCisgICAg
aWYgKG1heENhbGxEZXB0aCA9PSBGdW5jdGlvbk5vZGU6OmtJbmZpbml0ZUNhbGxEZXB0aCkKKyAg
ICAgICAgcmV0dXJuIGtFcnJvclJlY3Vyc2lvbjsKKworICAgIGlmIChtYXhDYWxsRGVwdGggPj0g
bWF4RGVwdGgpCisgICAgICAgIHJldHVybiBrRXJyb3JNYXhEZXB0aEV4Y2VlZGVkOworCisgICAg
cmV0dXJuIGtFcnJvck5vbmU7Cit9CisKK0RldGVjdENhbGxEZXB0aDo6RXJyb3JDb2RlIERldGVj
dENhbGxEZXB0aDo6ZGV0ZWN0Q2FsbERlcHRoKCkKK3sKKyAgICBpZiAobWF4RGVwdGggIT0gRnVu
Y3Rpb25Ob2RlOjprSW5maW5pdGVDYWxsRGVwdGgpIHsKKyAgICAgICAgLy8gQ2hlY2sgYWxsIGZ1
bmN0aW9ucyBiZWNhdXNlIHRoZSBkcml2ZXIgbWF5IGZhaWwgb24gdGhlbQorICAgICAgICAvLyBU
T0RPOiBCZWZvcmUgZGV0ZWN0aW5nUmVjdXJzaW9uLCBzdHJpcCB1bnVzZWQgZnVuY3Rpb25zLgor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9ucy5zaXplKCk7ICsraSkgewor
ICAgICAgICAgICAgRXJyb3JDb2RlIGVycm9yID0gZGV0ZWN0Q2FsbERlcHRoRm9yRnVuY3Rpb24o
ZnVuY3Rpb25zW2ldKTsKKyAgICAgICAgICAgIGlmIChlcnJvciAhPSBrRXJyb3JOb25lKQorICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAg
ICAgIEZ1bmN0aW9uTm9kZSogbWFpbiA9IGZpbmRGdW5jdGlvbkJ5TmFtZSgibWFpbigiKTsKKyAg
ICAgICAgaWYgKG1haW4gPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBrRXJyb3JNaXNzaW5n
TWFpbjsKKworICAgICAgICByZXR1cm4gZGV0ZWN0Q2FsbERlcHRoRm9yRnVuY3Rpb24obWFpbik7
CisgICAgfQorCisgICAgcmV0dXJuIGtFcnJvck5vbmU7Cit9CisKK0RldGVjdENhbGxEZXB0aDo6
RnVuY3Rpb25Ob2RlKiBEZXRlY3RDYWxsRGVwdGg6OmZpbmRGdW5jdGlvbkJ5TmFtZSgKKyAgICBj
b25zdCBUU3RyaW5nJiBuYW1lKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rp
b25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChmdW5jdGlvbnNbaV0tPmdldE5hbWUoKSA9
PSBuYW1lKQorICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uc1tpXTsKKyAgICB9CisgICAgcmV0
dXJuIE5VTEw7Cit9CisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9EZXRlY3RDYWxsRGVwdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5kZWYgQ09NUElM
RVJfREVURUNUX1JFQ1VSU0lPTl9IXworI2RlZmluZSBDT01QSUxFUl9ERVRFQ1RfUkVDVVJTSU9O
X0hfCisKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKworI2luY2x1ZGUgPGxpbWl0
cy5oPgorI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5oIgorI2luY2x1ZGUgImNvbXBp
bGVyL1ZhcmlhYmxlSW5mby5oIgorCitjbGFzcyBUSW5mb1Npbms7CisKKy8vIFRyYXZlcnNlcyBp
bnRlcm1lZGlhdGUgdHJlZSB0byBkZXRlY3QgZnVuY3Rpb24gcmVjdXJzaW9uLgorY2xhc3MgRGV0
ZWN0Q2FsbERlcHRoIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIgeworcHVibGljOgorICAgIGVu
dW0gRXJyb3JDb2RlIHsKKyAgICAgICAga0Vycm9yTWlzc2luZ01haW4sCisgICAgICAgIGtFcnJv
clJlY3Vyc2lvbiwKKyAgICAgICAga0Vycm9yTWF4RGVwdGhFeGNlZWRlZCwKKyAgICAgICAga0Vy
cm9yTm9uZQorICAgIH07CisKKyAgICBEZXRlY3RDYWxsRGVwdGgoVEluZm9TaW5rJiBpbmZvU3lu
YywgYm9vbCBsaW1pdENhbGxTdGFja0RlcHRoLCBpbnQgbWF4Q2FsbFN0YWNrRGVwdGgpOworICAg
IH5EZXRlY3RDYWxsRGVwdGgoKTsKKworICAgIHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShW
aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopOworCisgICAgYm9vbCBjaGVja0V4Y2VlZHNNYXhEZXB0
aChpbnQgZGVwdGgpOworCisgICAgRXJyb3JDb2RlIGRldGVjdENhbGxEZXB0aCgpOworCitwcml2
YXRlOgorICAgIGNsYXNzIEZ1bmN0aW9uTm9kZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0
aWMgY29uc3QgaW50IGtJbmZpbml0ZUNhbGxEZXB0aCA9IElOVF9NQVg7CisKKyAgICAgICAgRnVu
Y3Rpb25Ob2RlKGNvbnN0IFRTdHJpbmcmIGZuYW1lKTsKKworICAgICAgICBjb25zdCBUU3RyaW5n
JiBnZXROYW1lKCkgY29uc3Q7CisKKyAgICAgICAgLy8gSWYgYSBmdW5jdGlvbiBpcyBhbHJlYWR5
IGluIHRoZSBjYWxsZWUgbGlzdCwgdGhpcyBiZWNvbWVzIGEgbm8tb3AuCisgICAgICAgIHZvaWQg
YWRkQ2FsbGVlKEZ1bmN0aW9uTm9kZSogY2FsbGVlKTsKKworICAgICAgICAvLyBSZXR1cm5zIGtJ
bmlmaW5pdHlDYWxsRGVwdGggaWYgcmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGxzIGFyZSBkZXRlY3Rl
ZC4KKyAgICAgICAgaW50IGRldGVjdENhbGxEZXB0aChEZXRlY3RDYWxsRGVwdGgqIGRldGVjdENh
bGxEZXB0aCwgaW50IGRlcHRoKTsKKworICAgICAgICAvLyBSZXNldCBzdGF0ZS4KKyAgICAgICAg
dm9pZCByZXNldCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgLy8gbWFuZ2xlZCBmdW5jdGlv
biBuYW1lIGlzIHVuaXF1ZS4KKyAgICAgICAgVFN0cmluZyBuYW1lOworCisgICAgICAgIC8vIGZ1
bmN0aW9ucyB0aGF0IGFyZSBkaXJlY3RseSBjYWxsZWQgYnkgdGhpcyBmdW5jdGlvbi4KKyAgICAg
ICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBjYWxsZWVzOworCisgICAgICAgIFZpc2l0IHZpc2l0
OworICAgIH07CisKKyAgICBFcnJvckNvZGUgZGV0ZWN0Q2FsbERlcHRoRm9yRnVuY3Rpb24oRnVu
Y3Rpb25Ob2RlKiBmdW5jKTsKKyAgICBGdW5jdGlvbk5vZGUqIGZpbmRGdW5jdGlvbkJ5TmFtZShj
b25zdCBUU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIHJlc2V0RnVuY3Rpb25Ob2RlcygpOworCisg
ICAgVEluZm9TaW5rJiBnZXRJbmZvU2luaygpIHsgcmV0dXJuIGluZm9TaW5rOyB9CisKKyAgICBU
VmVjdG9yPEZ1bmN0aW9uTm9kZSo+IGZ1bmN0aW9uczsKKyAgICBGdW5jdGlvbk5vZGUqIGN1cnJl
bnRGdW5jdGlvbjsKKyAgICBUSW5mb1NpbmsmIGluZm9TaW5rOworICAgIGludCBtYXhEZXB0aDsK
KworICAgIERldGVjdENhbGxEZXB0aChjb25zdCBEZXRlY3RDYWxsRGVwdGgmKTsKKyAgICB2b2lk
IG9wZXJhdG9yPShjb25zdCBEZXRlY3RDYWxsRGVwdGgmKTsKK307CisKKyNlbmRpZiAgLy8gQ09N
UElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAJKHJldmlzaW9u
IDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RS
ZWN1cnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyNSArMCwwIEBACi0vLwotLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotCi0jaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgiCi0KLURldGVj
dFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5h
bWUpCi0gICAgOiBuYW1lKGZuYW1lKSwKLSAgICAgIHZpc2l0KFByZVZpc2l0KQotewotfQotCi1j
b25zdCBUU3RyaW5nJiBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KLXZvaWQgRGV0ZWN0UmVjdXJzaW9uOjpGdW5j
dGlvbk5vZGU6OmFkZENhbGxlZSgKLSAgICBEZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZSog
Y2FsbGVlKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsr
aSkgewotICAgICAgICBpZiAoY2FsbGVlc1tpXSA9PSBjYWxsZWUpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhbGxlZXMucHVzaF9iYWNrKGNhbGxlZSk7Ci19Ci0KLWJvb2wgRGV0
ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGU6OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgQVNT
RVJUKHZpc2l0ID09IFByZVZpc2l0KTsKLSAgICB2aXNpdCA9IEluVmlzaXQ7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN3aXRjaCAo
Y2FsbGVlc1tpXS0+dmlzaXQpIHsKLSAgICAgICAgICAgIGNhc2UgSW5WaXNpdDoKLSAgICAgICAg
ICAgICAgICAvLyBjeWNsZSBkZXRlY3RlZCwgaS5lLiwgcmVjdXJzaW9uIGRldGVjdGVkLgotICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgY2FzZSBQb3N0VmlzaXQ6Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFByZVZpc2l0OiB7Ci0gICAg
ICAgICAgICAgICAgYm9vbCByZWN1cnNpb24gPSBjYWxsZWVzW2ldLT5kZXRlY3RSZWN1cnNpb24o
KTsKLSAgICAgICAgICAgICAgICBpZiAocmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICB2aXNpdCA9IFBvc3RWaXNpdDsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RGV0ZWN0UmVjdXJzaW9u
KCkKLSAgICA6IGN1cnJlbnRGdW5jdGlvbihOVUxMKQotewotfQotCi1EZXRlY3RSZWN1cnNpb246
On5EZXRlY3RSZWN1cnNpb24oKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rp
b25zLnNpemUoKTsgKytpKQotICAgICAgICBkZWxldGUgZnVuY3Rpb25zW2ldOwotfQotCi1ib29s
IERldGVjdFJlY3Vyc2lvbjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dy
ZWdhdGUqIG5vZGUpCi17Ci0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQotICAgIHsKLSAgICAg
ICAgY2FzZSBFT3BQcm90b3R5cGU6Ci0gICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWNsYXJhdGlv
bi4KLSAgICAgICAgICAgIC8vIERvbid0IGFkZCBGdW5jdGlvbk5vZGUgaGVyZSBiZWNhdXNlIG5v
ZGUtPmdldE5hbWUoKSBpcyB0aGUKLSAgICAgICAgICAgIC8vIHVubWFuZ2xlZCBmdW5jdGlvbiBu
YW1lLgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wRnVuY3Rpb246IHsKLSAg
ICAgICAgICAgIC8vIEZ1bmN0aW9uIGRlZmluaXRpb24uCi0gICAgICAgICAgICBpZiAodmlzaXQg
PT0gUHJlVmlzaXQpIHsKLSAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24gPSBmaW5kRnVu
Y3Rpb25CeU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVu
dEZ1bmN0aW9uID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9u
ID0gbmV3IEZ1bmN0aW9uTm9kZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbnMucHVzaF9iYWNrKGN1cnJlbnRGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBFT3BGdW5jdGlvbkNhbGw6IHsKLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGNhbGwuCi0g
ICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpIHsKLSAgICAgICAgICAgICAgICBBU1NF
UlQoY3VycmVudEZ1bmN0aW9uICE9IE5VTEwpOwotICAgICAgICAgICAgICAgIEZ1bmN0aW9uTm9k
ZSogZnVuYyA9IGZpbmRGdW5jdGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAg
ICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG5l
dyBGdW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb25zLnB1c2hfYmFjayhmdW5jKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgY3VycmVudEZ1bmN0aW9uLT5hZGRDYWxsZWUoZnVuYyk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1EZXRlY3RSZWN1cnNpb246OkVy
cm9yQ29kZSBEZXRlY3RSZWN1cnNpb246OmRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgRnVuY3Rp
b25Ob2RlKiBtYWluID0gZmluZEZ1bmN0aW9uQnlOYW1lKCJtYWluKCIpOwotICAgIGlmIChtYWlu
ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBrRXJyb3JNaXNzaW5nTWFpbjsKLSAgICBpZiAobWFp
bi0+ZGV0ZWN0UmVjdXJzaW9uKCkpCi0gICAgICAgIHJldHVybiBrRXJyb3JSZWN1cnNpb247Ci0g
ICAgcmV0dXJuIGtFcnJvck5vbmU7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2Rl
KiBEZXRlY3RSZWN1cnNpb246OmZpbmRGdW5jdGlvbkJ5TmFtZSgKLSAgICBjb25zdCBUU3RyaW5n
JiBuYW1lKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbnNbaV0tPmdldE5hbWUoKSA9PSBuYW1lKQotICAg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uc1tpXTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19
Ci0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1
cnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvRGV0ZWN0UmVjdXJzaW9uLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2MCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIENPTVBJTEVSX0RF
VEVDVF9SRUNVUlNJT05fSF8KLSNkZWZpbmUgQ09NUElMRVJfREVURUNUX1JFQ1VSU0lPTl9IXwot
Ci0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLSNpbmNsdWRlICJjb21waWxlci9p
bnRlcm1lZGlhdGUuaCIKLSNpbmNsdWRlICJjb21waWxlci9WYXJpYWJsZUluZm8uaCIKLQotLy8g
VHJhdmVyc2VzIGludGVybWVkaWF0ZSB0cmVlIHRvIGRldGVjdCBmdW5jdGlvbiByZWN1cnNpb24u
Ci1jbGFzcyBEZXRlY3RSZWN1cnNpb24gOiBwdWJsaWMgVEludGVybVRyYXZlcnNlciB7Ci1wdWJs
aWM6Ci0gICAgZW51bSBFcnJvckNvZGUgewotICAgICAgICBrRXJyb3JNaXNzaW5nTWFpbiwKLSAg
ICAgICAga0Vycm9yUmVjdXJzaW9uLAotICAgICAgICBrRXJyb3JOb25lCi0gICAgfTsKLQotICAg
IERldGVjdFJlY3Vyc2lvbigpOwotICAgIH5EZXRlY3RSZWN1cnNpb24oKTsKLQotICAgIHZpcnR1
YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopOwotCi0gICAg
RXJyb3JDb2RlIGRldGVjdFJlY3Vyc2lvbigpOwotCi1wcml2YXRlOgotICAgIGNsYXNzIEZ1bmN0
aW9uTm9kZSB7Ci0gICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmlu
ZyYgZm5hbWUpOwotCi0gICAgICAgIGNvbnN0IFRTdHJpbmcmIGdldE5hbWUoKSBjb25zdDsKLQot
ICAgICAgICAvLyBJZiBhIGZ1bmN0aW9uIGlzIGFscmVhZHkgaW4gdGhlIGNhbGxlZSBsaXN0LCB0
aGlzIGJlY29tZXMgYSBuby1vcC4KLSAgICAgICAgdm9pZCBhZGRDYWxsZWUoRnVuY3Rpb25Ob2Rl
KiBjYWxsZWUpOwotCi0gICAgICAgIC8vIFJldHVybiB0cnVlIGlmIHJlY3Vyc2l2ZSBmdW5jdGlv
biBjYWxscyBhcmUgZGV0ZWN0ZWQuCi0gICAgICAgIGJvb2wgZGV0ZWN0UmVjdXJzaW9uKCk7Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICAvLyBtYW5nbGVkIGZ1bmN0aW9uIG5hbWUgaXMgdW5pcXVl
LgotICAgICAgICBUU3RyaW5nIG5hbWU7Ci0KLSAgICAgICAgLy8gZnVuY3Rpb25zIHRoYXQgYXJl
IGRpcmVjdGx5IGNhbGxlZCBieSB0aGlzIGZ1bmN0aW9uLgotICAgICAgICBUVmVjdG9yPEZ1bmN0
aW9uTm9kZSo+IGNhbGxlZXM7Ci0KLSAgICAgICAgVmlzaXQgdmlzaXQ7Ci0gICAgfTsKLQotICAg
IEZ1bmN0aW9uTm9kZSogZmluZEZ1bmN0aW9uQnlOYW1lKGNvbnN0IFRTdHJpbmcmIG5hbWUpOwot
Ci0gICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBmdW5jdGlvbnM7Ci0gICAgRnVuY3Rpb25Ob2Rl
KiBjdXJyZW50RnVuY3Rpb247Ci19OwotCi0jZW5kaWYgIC8vIENPTVBJTEVSX0RFVEVDVF9SRUNV
UlNJT05fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFn
bm9zdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0RpYWdub3N0aWNzLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNyArNDYsNyBAQCB2b2lkIFREaWFnbm9zdGljczo6d3JpdGVJbmZvKFNldmVyaXR5IHNl
CiAgICAgVEluZm9TaW5rQmFzZSYgc2luayA9IG1JbmZvU2luay5pbmZvOwogICAgIC8qIFZDKysg
Zm9ybWF0OiBmaWxlKGxpbmVudW0pIDogZXJyb3IgIzogJ3Rva2VuJyA6IGV4dHJhaW5mbyAqLwog
ICAgIHNpbmsucHJlZml4KHByZWZpeCk7Ci0gICAgc2luay5sb2NhdGlvbihFbmNvZGVTb3VyY2VM
b2MobG9jLmZpbGUsIGxvYy5saW5lKSk7CisgICAgc2luay5sb2NhdGlvbihsb2MuZmlsZSwgbG9j
LmxpbmUpOwogICAgIHNpbmsgPDwgIiciIDw8IHRva2VuIDw8ICAiJyA6ICIgPDwgcmVhc29uIDw8
ICIgIiA8PCBleHRyYSA8PCAiXG4iOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCShyZXZpc2lvbiAx
NTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRm9yTG9vcFVu
cm9sbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTIxMCw2ICsyMTAsNiBAQCBpbnQgRm9yTG9vcFVucm9s
bDo6Z2V0TG9vcEluY3JlbWVudChUSW50CiBpbnQgRm9yTG9vcFVucm9sbDo6ZXZhbHVhdGVJbnRD
b25zdGFudChUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsKICAgICBBU1NFUlQoKG5vZGUg
IT0gTlVMTCkgJiYgKG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCkgIT0gTlVMTCkpOwotICAg
IHJldHVybiBub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAgICBy
ZXR1cm4gbm9kZS0+Z2V0SUNvbnN0KDApOwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHJldmlzaW9uIDE1Mjk3OSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBACiAKICNpbmNsdWRlICJjb21waWxlci9JbmZvU2lu
ay5oIgogCi12b2lkIFRJbmZvU2lua0Jhc2U6OnByZWZpeChUUHJlZml4VHlwZSBtZXNzYWdlKSB7
Ci0gICAgc3dpdGNoKG1lc3NhZ2UpIHsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6cHJlZml4KFRQcmVm
aXhUeXBlIHApIHsKKyAgICBzd2l0Y2gocCkgewogICAgICAgICBjYXNlIEVQcmVmaXhOb25lOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRVByZWZpeFdhcm5pbmc6CkBAIC0zMSwy
OSArMzEsMjQgQEAgdm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoVFByZWZpeFR5cGUgbQogICAg
IH0KIH0KIAotdm9pZCBUSW5mb1NpbmtCYXNlOjpsb2NhdGlvbihUU291cmNlTG9jIGxvYykgewot
ICAgIGludCBzdHJpbmcgPSAwLCBsaW5lID0gMDsKLSAgICBEZWNvZGVTb3VyY2VMb2MobG9jLCAm
c3RyaW5nLCAmbGluZSk7Ci0KK3ZvaWQgVEluZm9TaW5rQmFzZTo6bG9jYXRpb24oaW50IGZpbGUs
IGludCBsaW5lKSB7CiAgICAgVFBlcnNpc3RTdHJpbmdTdHJlYW0gc3RyZWFtOwogICAgIGlmIChs
aW5lKQotICAgICAgICBzdHJlYW0gPDwgc3RyaW5nIDw8ICI6IiA8PCBsaW5lOworICAgICAgICBz
dHJlYW0gPDwgZmlsZSA8PCAiOiIgPDwgbGluZTsKICAgICBlbHNlCi0gICAgICAgIHN0cmVhbSA8
PCBzdHJpbmcgPDwgIjo/ICI7CisgICAgICAgIHN0cmVhbSA8PCBmaWxlIDw8ICI6PyAiOwogICAg
IHN0cmVhbSA8PCAiOiAiOwogCiAgICAgc2luay5hcHBlbmQoc3RyZWFtLnN0cigpKTsKIH0KIAot
dm9pZCBUSW5mb1NpbmtCYXNlOjptZXNzYWdlKFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNo
YXIqIHMpIHsKLSAgICBwcmVmaXgobWVzc2FnZSk7Ci0gICAgc2luay5hcHBlbmQocyk7Ci0gICAg
c2luay5hcHBlbmQoIlxuIik7Cit2b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9uKGNvbnN0IFRT
b3VyY2VMb2MmIGxvYykgeworICAgIGxvY2F0aW9uKGxvYy5maXJzdF9maWxlLCBsb2MuZmlyc3Rf
bGluZSk7CiB9CiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBtZXNz
YWdlLCBjb25zdCBjaGFyKiBzLCBUU291cmNlTG9jIGxvYykgewotICAgIHByZWZpeChtZXNzYWdl
KTsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291
cmNlTG9jJiBsb2MsIGNvbnN0IGNoYXIqIG0pIHsKKyAgICBwcmVmaXgocCk7CiAgICAgbG9jYXRp
b24obG9jKTsKLSAgICBzaW5rLmFwcGVuZChzKTsKKyAgICBzaW5rLmFwcGVuZChtKTsKICAgICBz
aW5rLmFwcGVuZCgiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9JbmZvU2luay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9JbmZvU2luay5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuaAkod29ya2luZyBjb3B5KQpAQCAt
OTYsMTAgKzk2LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBUUGVyc2lzdFN0cmluZyYgc3RyKCkg
Y29uc3QgeyByZXR1cm4gc2luazsgfQogICAgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29uc3QgeyBy
ZXR1cm4gc2luay5jX3N0cigpOyB9CiAKLSAgICB2b2lkIHByZWZpeChUUHJlZml4VHlwZSBtZXNz
YWdlKTsKLSAgICB2b2lkIGxvY2F0aW9uKFRTb3VyY2VMb2MgbG9jKTsKLSAgICB2b2lkIG1lc3Nh
Z2UoVFByZWZpeFR5cGUgbWVzc2FnZSwgY29uc3QgY2hhciogcyk7Ci0gICAgdm9pZCBtZXNzYWdl
KFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMsIFRTb3VyY2VMb2MgbG9jKTsKKyAg
ICB2b2lkIHByZWZpeChUUHJlZml4VHlwZSBwKTsKKyAgICB2b2lkIGxvY2F0aW9uKGludCBmaWxl
LCBpbnQgbGluZSk7CisgICAgdm9pZCBsb2NhdGlvbihjb25zdCBUU291cmNlTG9jJiBsb2MpOwor
ICAgIHZvaWQgbWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291cmNlTG9jJiBsb2MsIGNv
bnN0IGNoYXIqIG0pOwogCiBwcml2YXRlOgogICAgIFRQZXJzaXN0U3RyaW5nIHNpbms7CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxp
emUuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvSW5pdGlhbGl6ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
LwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE0LDUxMyArMTQsNDEzIEBA
CiAKICNpbmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKIAotLy89PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0vLwotLy8gUHJvdG90eXBlcyBmb3IgYnVpbHQtaW4gZnVuY3Rpb25zIHNlZW4gYnkg
Ym90aCB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMuCi0vLwotLy89PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci1zdGF0aWMgVFN0cmluZyBCdWlsdEluRnVuY3Rpb25zQ29tbW9uKGNvbnN0IFNoQnVpbHRJ
blJlc291cmNlcyYgcmVzb3VyY2VzKQordm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zKFNoU2hh
ZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgY29uc3QgU2hCdWlsdEluUmVzb3VyY2Vz
ICZyZXNvdXJjZXMsIFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUpCiB7Ci0gICAgVFN0cmluZyBz
OworICAgIFRUeXBlICpmbG9hdDEgPSBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxKTsKKyAgICBUVHlwZSAqZmxvYXQyID0gbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMik7CisgICAgVFR5cGUgKmZsb2F0MyA9IG5ldyBUVHlw
ZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMpOworICAgIFRUeXBlICpmbG9h
dDQgPSBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0KTsKKwor
ICAgIFRUeXBlICppbnQyID0gbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9i
YWwsIDIpOworICAgIFRUeXBlICppbnQzID0gbmV3IFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMpOworICAgIFRUeXBlICppbnQ0ID0gbmV3IFRUeXBlKEVidEludCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQpOwogCiAgICAgLy8KICAgICAvLyBBbmdsZSBhbmQgVHJp
Z29ub21ldHJpYyBGdW5jdGlvbnMuCiAgICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCByYWRpYW5zKGZsb2F0IGRlZ3JlZXMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMy
ICByYWRpYW5zKHZlYzIgIGRlZ3JlZXMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
ICByYWRpYW5zKHZlYzMgIGRlZ3JlZXMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0
ICByYWRpYW5zKHZlYzQgIGRlZ3JlZXMpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZs
b2F0IGRlZ3JlZXMoZmxvYXQgcmFkaWFucyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzIgIGRlZ3JlZXModmVjMiAgcmFkaWFucyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzMgIGRlZ3JlZXModmVjMyAgcmFkaWFucyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgIGRlZ3JlZXModmVjNCAgcmFkaWFucyk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygi
ZmxvYXQgc2luKGZsb2F0IGFuZ2xlKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAg
c2luKHZlYzIgIGFuZ2xlKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc2luKHZl
YzMgIGFuZ2xlKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc2luKHZlYzQgIGFu
Z2xlKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBjb3MoZmxvYXQgYW5nbGUp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBjb3ModmVjMiAgYW5nbGUpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBjb3ModmVjMyAgYW5nbGUpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBjb3ModmVjNCAgYW5nbGUpOyIpKTsKLQotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IHRhbihmbG9hdCBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzIgIHRhbih2ZWMyICBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzMgIHRhbih2ZWMzICBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
IHRhbih2ZWM0ICBhbmdsZSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYXNp
bihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgYXNpbih2ZWMyICB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgYXNpbih2ZWMzICB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgYXNpbih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJmbG9hdCBhY29zKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMyICBhY29zKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
ICBhY29zKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhY29zKHZl
YzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGF0YW4oZmxvYXQgeSwg
ZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeSwg
dmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGF0YW4odmVjMyAgeSwg
dmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGF0YW4odmVjNCAgeSwg
dmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYXRhbihmbG9hdCB5
X292ZXJfeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGF0YW4odmVjMiAgeV9v
dmVyX3gpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhdGFuKHZlYzMgIHlfb3Zl
cl94KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgYXRhbih2ZWM0ICB5X292ZXJf
eCk7IikpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAicmFkaWFucyIs
IGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJyYWRpYW5z
IiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgInJhZGlh
bnMiLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAicmFk
aWFucyIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwg
ImRlZ3JlZXMiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQy
LCAiZGVncmVlcyIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDMsICJkZWdyZWVzIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0NCwgImRlZ3JlZXMiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDEsICJzaW4iLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQyLCAic2luIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MywgInNpbiIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDQsICJzaW4iLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDEsICJjb3MiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQy
LCAiY29zIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0Mywg
ImNvcyIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJj
b3MiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJ0
YW4iLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAidGFu
IiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgInRhbiIs
IGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0YW4iLCBm
bG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJhc2luIiwg
ZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImFzaW4iLCBm
bG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiYXNpbiIsIGZs
b2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJhc2luIiwgZmxv
YXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiYWNvcyIsIGZs
b2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJhY29zIiwgZmxv
YXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImFjb3MiLCBmbG9h
dDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiYWNvcyIsIGZsb2F0
NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImF0YW4iLCBmbG9h
dDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJhdGFu
IiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQz
LCAiYXRhbiIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0NCwgImF0YW4iLCBmbG9hdDQsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0MSwgImF0YW4iLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQyLCAiYXRhbiIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihmbG9hdDMsICJhdGFuIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0NCwgImF0YW4iLCBmbG9hdDQpOwogCiAgICAgLy8KICAgICAvLyBFeHBvbmVu
dGlhbCBGdW5jdGlvbnMuCiAgICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBwb3co
ZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHBvdyh2
ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcG93KHZl
YzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBwb3codmVj
NCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZXhwKGZs
b2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAodmVjMiAgeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGV4cCh2ZWMzICB4KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjNCAgZXhwKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImZsb2F0IGxvZyhmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MiAgbG9nKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBsb2codmVj
MyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZyh2ZWM0ICB4KTsiKSk7
Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBleHAyKGZsb2F0IHgpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBleHAyKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMzICBleHAyKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0ICBleHAyKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxv
ZzIoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGxvZzIodmVjMiAg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGxvZzIodmVjMyAgeCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGxvZzIodmVjNCAgeCk7IikpOwotCi0gICAgcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgc3FydChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMiAgc3FydCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgc3FydCh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc3FydCh2
ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBpbnZlcnNlc3FydChm
bG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgaW52ZXJzZXNxcnQodmVj
MiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGludmVyc2VzcXJ0KHZlYzMg
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBpbnZlcnNlc3FydCh2ZWM0ICB4
KTsiKSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJwb3ciLCBmbG9h
dDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJwb3ci
LCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMs
ICJwb3ciLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDQsICJwb3ciLCBmbG9hdDQsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0MSwgImV4cCIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDIsICJleHAiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQzLCAiZXhwIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0NCwgImV4cCIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0MSwgImxvZyIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDIsICJsb2ciLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQzLCAibG9nIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0
NCwgImxvZyIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0
MSwgImV4cDIiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQy
LCAiZXhwMiIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMs
ICJleHAyIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwg
ImV4cDIiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEs
ICJsb2cyIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0Miwg
ImxvZzIiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAi
bG9nMiIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJs
b2cyIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAi
c3FydCIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJz
cXJ0IiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgInNx
cnQiLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAic3Fy
dCIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImlu
dmVyc2VzcXJ0IiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0
MiwgImludmVyc2VzcXJ0IiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0MywgImludmVyc2VzcXJ0IiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0NCwgImludmVyc2VzcXJ0IiwgZmxvYXQ0KTsKIAogICAgIC8vCiAgICAgLy8g
Q29tbW9uIEZ1bmN0aW9ucy4KICAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGFi
cyhmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgYWJzKHZlYzIgIHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhYnModmVjMyAgeCk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGFicyh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJmbG9hdCBzaWduKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMyICBzaWduKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBz
aWduKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzaWduKHZlYzQg
IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGZsb29yKGZsb2F0IHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBmbG9vcih2ZWMyICB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgZmxvb3IodmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzQgIGZsb29yKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImZsb2F0IGNlaWwoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IGNlaWwodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGNlaWwodmVj
MyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGNlaWwodmVjNCAgeCk7Iikp
OwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZnJhY3QoZmxvYXQgeCk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGZyYWN0KHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMzICBmcmFjdCh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCAgZnJhY3QodmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxv
YXQgbW9kKGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMy
ICBtb2QodmVjMiAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMg
IG1vZCh2ZWMzICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAg
bW9kKHZlYzQgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBt
b2QodmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1v
ZCh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbW9k
KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG1p
bihmbG9hdCB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbWlu
KHZlYzIgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtaW4o
dmVjMyAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1pbih2
ZWM0ICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbWluKHZl
YzIgIHgsIHZlYzIgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtaW4odmVj
MyAgeCwgdmVjMyAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1pbih2ZWM0
ICB4LCB2ZWM0ICB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtYXgoZmxv
YXQgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1heCh2ZWMy
ICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWF4KHZlYzMg
IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtYXgodmVjNCAg
eCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1heCh2ZWMyICB4
LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWF4KHZlYzMgIHgs
IHZlYzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtYXgodmVjNCAgeCwg
dmVjNCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgY2xhbXAoZmxvYXQg
eCwgZmxvYXQgbWluVmFsLCBmbG9hdCBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMyICBjbGFtcCh2ZWMyICB4LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGNsYW1wKHZlYzMgIHgsIGZsb2F0IG1pblZhbCwg
ZmxvYXQgbWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgY2xhbXAodmVj
NCAgeCwgZmxvYXQgbWluVmFsLCBmbG9hdCBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMyICBjbGFtcCh2ZWMyICB4LCB2ZWMyICBtaW5WYWwsIHZlYzIgIG1heFZhbCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGNsYW1wKHZlYzMgIHgsIHZlYzMgIG1pblZh
bCwgdmVjMyAgbWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgY2xhbXAo
dmVjNCAgeCwgdmVjNCAgbWluVmFsLCB2ZWM0ICBtYXhWYWwpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IG1peChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBhKTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMiAgbWl4KHZlYzIgIHgsIHZlYzIgIHksIGZsb2F0IGEpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtaXgodmVjMyAgeCwgdmVjMyAgeSwgZmxv
YXQgYSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1peCh2ZWM0ICB4LCB2ZWM0
ICB5LCBmbG9hdCBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbWl4KHZlYzIg
IHgsIHZlYzIgIHksIHZlYzIgIGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBt
aXgodmVjMyAgeCwgdmVjMyAgeSwgdmVjMyAgYSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzQgIG1peCh2ZWM0ICB4LCB2ZWM0ICB5LCB2ZWM0ICBhKTsiKSk7Ci0KLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJmbG9hdCBzdGVwKGZsb2F0IGVkZ2UsIGZsb2F0IHgpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWMyICBzdGVwKHZlYzIgIGVkZ2UsIHZlYzIgIHgpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBzdGVwKHZlYzMgIGVkZ2UsIHZlYzMgIHgpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzdGVwKHZlYzQgIGVkZ2UsIHZlYzQgIHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBzdGVwKGZsb2F0IGVkZ2UsIHZlYzIgIHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBzdGVwKGZsb2F0IGVkZ2UsIHZlYzMgIHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzdGVwKGZsb2F0IGVkZ2UsIHZlYzQg
IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHNtb290aHN0ZXAoZmxvYXQg
ZWRnZTAsIGZsb2F0IGVkZ2UxLCBmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMiAgc21vb3Roc3RlcCh2ZWMyICBlZGdlMCwgdmVjMiAgZWRnZTEsIHZlYzIgIHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBzbW9vdGhzdGVwKHZlYzMgIGVkZ2UwLCB2ZWMz
ICBlZGdlMSwgdmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHNtb290
aHN0ZXAodmVjNCAgZWRnZTAsIHZlYzQgIGVkZ2UxLCB2ZWM0ICB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMiAgc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIHZl
YzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBzbW9vdGhzdGVwKGZsb2F0
IGVkZ2UwLCBmbG9hdCBlZGdlMSwgdmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzQgIHNtb290aHN0ZXAoZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2UxLCB2ZWM0ICB4KTsiKSk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJhYnMiLCBmbG9hdDEpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAiYWJzIiwgZmxvYXQyKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImFicyIsIGZsb2F0Myk7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJhYnMiLCBmbG9hdDQpOworCisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJzaWduIiwgZmxvYXQxKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgInNpZ24iLCBmbG9hdDIpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAic2lnbiIsIGZsb2F0Myk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJzaWduIiwgZmxvYXQ0KTsKKworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZmxvb3IiLCBmbG9hdDEpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAiZmxvb3IiLCBmbG9hdDIpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiZmxvb3IiLCBmbG9hdDMpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiZmxvb3IiLCBmbG9hdDQpOworCisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJjZWlsIiwgZmxvYXQxKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImNlaWwiLCBmbG9hdDIpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiY2VpbCIsIGZsb2F0Myk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJjZWlsIiwgZmxvYXQ0KTsKKworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZnJhY3QiLCBmbG9hdDEpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAiZnJhY3QiLCBmbG9hdDIpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiZnJhY3QiLCBmbG9hdDMpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiZnJhY3QiLCBmbG9hdDQpOworCisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJtb2QiLCBmbG9hdDEsIGZsb2F0MSk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJtb2QiLCBmbG9hdDIsIGZs
b2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJtb2QiLCBmbG9h
dDMsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJtb2Qi
LCBmbG9hdDQsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIs
ICJtb2QiLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDMsICJtb2QiLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDQsICJtb2QiLCBmbG9hdDQsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0MSwgIm1pbiIsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgIm1pbiIsIGZsb2F0MiwgZmxvYXQxKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgIm1pbiIsIGZsb2F0MywgZmxvYXQxKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgIm1pbiIsIGZsb2F0NCwgZmxv
YXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgIm1pbiIsIGZsb2F0
MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgIm1pbiIs
IGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwg
Im1pbiIsIGZsb2F0NCwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQxLCAibWF4IiwgZmxvYXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQyLCAibWF4IiwgZmxvYXQyLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQzLCAibWF4IiwgZmxvYXQzLCBmbG9hdDEpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAibWF4IiwgZmxvYXQ0LCBmbG9hdDEpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAibWF4IiwgZmxvYXQyLCBmbG9hdDIpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAibWF4IiwgZmxvYXQzLCBmbG9h
dDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAibWF4IiwgZmxvYXQ0
LCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJjbGFt
cCIsIGZsb2F0MSwgZmxvYXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQyLCAiY2xhbXAiLCBmbG9hdDIsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImNsYW1wIiwgZmxvYXQzLCBmbG9hdDEsIGZsb2F0
MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJjbGFtcCIsIGZsb2F0
NCwgZmxvYXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQy
LCAiY2xhbXAiLCBmbG9hdDIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0MywgImNsYW1wIiwgZmxvYXQzLCBmbG9hdDMsIGZsb2F0Myk7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJjbGFtcCIsIGZsb2F0NCwgZmxvYXQ0
LCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJtaXgi
LCBmbG9hdDEsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0MiwgIm1peCIsIGZsb2F0MiwgZmxvYXQyLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQzLCAibWl4IiwgZmxvYXQzLCBmbG9hdDMsIGZsb2F0MSk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJtaXgiLCBmbG9hdDQsIGZsb2F0
NCwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgIm1peCIs
IGZsb2F0MiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQzLCAibWl4IiwgZmxvYXQzLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihmbG9hdDQsICJtaXgiLCBmbG9hdDQsIGZsb2F0NCwgZmxvYXQ0KTsKKwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAic3RlcCIsIGZsb2F0MSwgZmxv
YXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgInN0ZXAiLCBmbG9h
dDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJzdGVw
IiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0
LCAic3RlcCIsIGZsb2F0NCwgZmxvYXQ0KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0MiwgInN0ZXAiLCBmbG9hdDEsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihmbG9hdDMsICJzdGVwIiwgZmxvYXQxLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAic3RlcCIsIGZsb2F0MSwgZmxvYXQ0KTsKKworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAic21vb3Roc3RlcCIsIGZsb2F0MSwgZmxv
YXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAic21v
b3Roc3RlcCIsIGZsb2F0MiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQzLCAic21vb3Roc3RlcCIsIGZsb2F0MywgZmxvYXQzLCBmbG9hdDMpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAic21vb3Roc3RlcCIsIGZsb2F0
NCwgZmxvYXQ0LCBmbG9hdDQpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQy
LCAic21vb3Roc3RlcCIsIGZsb2F0MSwgZmxvYXQxLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQzLCAic21vb3Roc3RlcCIsIGZsb2F0MSwgZmxvYXQxLCBmbG9h
dDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAic21vb3Roc3RlcCIs
IGZsb2F0MSwgZmxvYXQxLCBmbG9hdDQpOwogCiAgICAgLy8KICAgICAvLyBHZW9tZXRyaWMgRnVu
Y3Rpb25zLgogICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKGZsb2F0
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsZW5ndGgodmVjMiAgeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2ZWMzICB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKGZsb2F0IHAwLCBmbG9hdCBwMSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzIgIHAwLCB2ZWMyICBwMSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzMgIHAwLCB2ZWMzICBw
MSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRpc3RhbmNlKHZlYzQgIHAwLCB2
ZWM0ICBwMSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KGZsb2F0IHgs
IGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkb3QodmVjMiAgeCwg
dmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRvdCh2ZWMzICB4LCB2
ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KHZlYzQgIHgsIHZl
YzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgY3Jvc3ModmVjMyB4LCB2
ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub3JtYWxpemUoZmxvYXQg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG5vcm1hbGl6ZSh2ZWMyICB4KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbm9ybWFsaXplKHZlYzMgIHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBub3JtYWxpemUodmVjNCAgeCk7IikpOwotCi0g
ICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZmFjZWZvcndhcmQoZmxvYXQgTiwgZmxvYXQgSSwg
ZmxvYXQgTnJlZik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGZhY2Vmb3J3YXJk
KHZlYzIgIE4sIHZlYzIgIEksIHZlYzIgIE5yZWYpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMzICBmYWNlZm9yd2FyZCh2ZWMzICBOLCB2ZWMzICBJLCB2ZWMzICBOcmVmKTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZmFjZWZvcndhcmQodmVjNCAgTiwgdmVjNCAgSSwg
dmVjNCAgTnJlZik7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgcmVmbGVjdChm
bG9hdCBJLCBmbG9hdCBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgcmVmbGVj
dCh2ZWMyICBJLCB2ZWMyICBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcmVm
bGVjdCh2ZWMzICBJLCB2ZWMzICBOKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAg
cmVmbGVjdCh2ZWM0ICBJLCB2ZWM0ICBOKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJm
bG9hdCByZWZyYWN0KGZsb2F0IEksIGZsb2F0IE4sIGZsb2F0IGV0YSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzIgIHJlZnJhY3QodmVjMiAgSSwgdmVjMiAgTiwgZmxvYXQgZXRhKTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgcmVmcmFjdCh2ZWMzICBJLCB2ZWMzICBO
LCBmbG9hdCBldGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICByZWZyYWN0KHZl
YzQgIEksIHZlYzQgIE4sIGZsb2F0IGV0YSk7IikpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQxLCAibGVuZ3RoIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0MSwgImxlbmd0aCIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihmbG9hdDEsICJsZW5ndGgiLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQxLCAibGVuZ3RoIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQxLCAiZGlzdGFuY2UiLCBmbG9hdDEsIGZsb2F0MSk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJkaXN0YW5jZSIsIGZsb2F0MiwgZmxvYXQy
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImRpc3RhbmNlIiwgZmxv
YXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZGlz
dGFuY2UiLCBmbG9hdDQsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0MSwgImRvdCIsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0MSwgImRvdCIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0MSwgImRvdCIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImRvdCIsIGZsb2F0NCwgZmxvYXQ0KTsKKworICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiY3Jvc3MiLCBmbG9hdDMsIGZsb2F0
Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJub3JtYWxpemUiLCBm
bG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAibm9ybWFsaXpl
IiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgIm5vcm1h
bGl6ZSIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJu
b3JtYWxpemUiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDEsICJmYWNlZm9yd2FyZCIsIGZsb2F0MSwgZmxvYXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAiZmFjZWZvcndhcmQiLCBmbG9hdDIsIGZsb2F0Miwg
ZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImZhY2Vmb3J3
YXJkIiwgZmxvYXQzLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDQsICJmYWNlZm9yd2FyZCIsIGZsb2F0NCwgZmxvYXQ0LCBmbG9hdDQpOworCisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJyZWZsZWN0IiwgZmxvYXQxLCBm
bG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAicmVmbGVjdCIs
IGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0Mywg
InJlZmxlY3QiLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDQsICJyZWZsZWN0IiwgZmxvYXQ0LCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihmbG9hdDEsICJyZWZyYWN0IiwgZmxvYXQxLCBmbG9hdDEsIGZsb2F0MSk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJyZWZyYWN0IiwgZmxvYXQy
LCBmbG9hdDIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMs
ICJyZWZyYWN0IiwgZmxvYXQzLCBmbG9hdDMsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDQsICJyZWZyYWN0IiwgZmxvYXQ0LCBmbG9hdDQsIGZsb2F0MSk7CisK
KyAgICBUVHlwZSAqbWF0MiA9IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFH
bG9iYWwsIDIsIHRydWUpOworICAgIFRUeXBlICptYXQzID0gbmV3IFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMywgdHJ1ZSk7CisgICAgVFR5cGUgKm1hdDQgPSBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0LCB0cnVlKTsKIAogICAg
IC8vCiAgICAgLy8gTWF0cml4IEZ1bmN0aW9ucy4KICAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoIm1hdDIgbWF0cml4Q29tcE11bHQobWF0MiB4LCBtYXQyIHkpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJtYXQzIG1hdHJpeENvbXBNdWx0KG1hdDMgeCwgbWF0MyB5KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygibWF0NCBtYXRyaXhDb21wTXVsdChtYXQ0IHgsIG1hdDQgeSk7Iikp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4obWF0MiwgIm1hdHJpeENvbXBNdWx0Iiwg
bWF0MiwgbWF0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihtYXQzLCAibWF0cml4
Q29tcE11bHQiLCBtYXQzLCBtYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKG1h
dDQsICJtYXRyaXhDb21wTXVsdCIsIG1hdDQsIG1hdDQpOworCisgICAgVFR5cGUgKmJvb2wxID0g
bmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxKTsKKyAgICBUVHlw
ZSAqYm9vbDIgPSBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIp
OworICAgIFRUeXBlICpib29sMyA9IG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUdsb2JhbCwgMyk7CisgICAgVFR5cGUgKmJvb2w0ID0gbmV3IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxR2xvYmFsLCA0KTsKIAogICAgIC8vCiAgICAgLy8gVmVjdG9yIHJlbGF0aW9u
YWwgZnVuY3Rpb25zLgogICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbGVzc1Ro
YW4odmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBsZXNz
VGhhbih2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxl
c3NUaGFuKHZlYzQgeCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVj
MiBsZXNzVGhhbihpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
YnZlYzMgbGVzc1RoYW4oaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJ2ZWM0IGxlc3NUaGFuKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWMyIGxlc3NUaGFuRXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJidmVjMyBsZXNzVGhhbkVxdWFsKHZlYzMgeCwgdmVjMyB5KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbGVzc1RoYW5FcXVhbCh2ZWM0IHgsIHZlYzQg
eSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbGVzc1RoYW5FcXVhbChpdmVj
MiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbGVzc1RoYW5F
cXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQg
bGVzc1RoYW5FcXVhbChpdmVjNCB4LCBpdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJidmVjMiBncmVhdGVyVGhhbih2ZWMyIHgsIHZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWMzIGdyZWF0ZXJUaGFuKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW4odmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGdyZWF0ZXJUaGFuKGl2ZWMyIHgsIGl2ZWMyIHkp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbihpdmVjMyB4LCBp
dmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW4oaXZl
YzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRl
clRoYW5FcXVhbCh2ZWMyIHgsIHZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWMzIGdyZWF0ZXJUaGFuRXF1YWwodmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJidmVjNCBncmVhdGVyVGhhbkVxdWFsKHZlYzQgeCwgdmVjNCB5KTsiKSk7Ci0KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBncmVhdGVyVGhhbkVxdWFsKGl2ZWMyIHgsIGl2ZWMy
IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbkVxdWFsKGl2
ZWMzIHgsIGl2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBncmVhdGVy
VGhhbkVxdWFsKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImJ2ZWMyIGVxdWFsKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
YnZlYzMgZXF1YWwodmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJi
dmVjNCBlcXVhbCh2ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygi
YnZlYzIgZXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImJ2ZWMzIGVxdWFsKGl2ZWMzIHgsIGl2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJidmVjNCBlcXVhbChpdmVjNCB4LCBpdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJidmVjMiBlcXVhbChidmVjMiB4LCBidmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzMgZXF1YWwoYnZlYzMgeCwgYnZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImJ2ZWM0IGVxdWFsKGJ2ZWM0IHgsIGJ2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWMyIG5vdEVxdWFsKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygiYnZlYzMgbm90RXF1YWwodmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJidmVjNCBub3RFcXVhbCh2ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0gICAg
cy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbm90RXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5vdEVxdWFsKGl2ZWMzIHgsIGl2ZWMzIHkpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBub3RFcXVhbChpdmVjNCB4LCBpdmVjNCB5
KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBub3RFcXVhbChidmVjMiB4LCBi
dmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbm90RXF1YWwoYnZlYzMg
eCwgYnZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IG5vdEVxdWFsKGJ2
ZWM0IHgsIGJ2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYW55KGJ2
ZWMyIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFueShidmVjMyB4KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYm9vbCBhbnkoYnZlYzQgeCk7IikpOwotCi0gICAgcy5h
cHBlbmQoVFN0cmluZygiYm9vbCBhbGwoYnZlYzIgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJvb2wgYWxsKGJ2ZWMzIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFs
bChidmVjNCB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBub3QoYnZlYzIg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5vdChidmVjMyB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90KGJ2ZWM0IHgpOyIpKTsKLQotICAgIC8vCi0g
ICAgLy8gVGV4dHVyZSBGdW5jdGlvbnMuCi0gICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0IHRleHR1cmUyRChzYW1wbGVyMkQgc2FtcGxlciwgdmVjMiBjb29yZCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgc2FtcGxlciwgdmVj
MyBjb29yZCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvaihz
YW1wbGVyMkQgc2FtcGxlciwgdmVjNCBjb29yZCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzQgdGV4dHVyZUN1YmUoc2FtcGxlckN1YmUgc2FtcGxlciwgdmVjMyBjb29yZCk7IikpOwot
Ci0gICAgaWYgKHJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsKSB7Ci0gICAgICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEKHNhbXBsZXJFeHRlcm5hbE9FUyBzYW1wbGVy
LCB2ZWMyIGNvb3JkKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVy
ZTJEUHJvaihzYW1wbGVyRXh0ZXJuYWxPRVMgc2FtcGxlciwgdmVjMyBjb29yZCk7IikpOwotICAg
ICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlckV4dGVybmFs
T0VTIHNhbXBsZXIsIHZlYzQgY29vcmQpOyIpKTsKLSAgICB9CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihib29sMiwgImxlc3NUaGFuIiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDMsICJsZXNzVGhhbiIsIGZsb2F0MywgZmxvYXQzKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAibGVzc1RoYW4iLCBmbG9hdDQs
IGZsb2F0NCk7CiAKLSAgICBpZiAocmVzb3VyY2VzLkFSQl90ZXh0dXJlX3JlY3RhbmdsZSkgewot
ICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFJlY3Qoc2FtcGxlcjJEUmVj
dCBzYW1wbGVyLCB2ZWMyIGNvb3JkKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgdGV4dHVyZTJEUmVjdFByb2ooc2FtcGxlcjJEUmVjdCBzYW1wbGVyLCB2ZWMzIGNvb3JkKTsi
KSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUmVjdFByb2ooc2Ft
cGxlcjJEUmVjdCBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7Ci0gICAgfQorICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJsZXNzVGhhbiIsIGludDIsIGludDIpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDMsICJsZXNzVGhhbiIsIGludDMsIGludDMpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDQsICJsZXNzVGhhbiIsIGludDQsIGlu
dDQpOwogCi0gICAgLy8KLSAgICAvLyBOb2lzZSBmdW5jdGlvbnMuCi0gICAgLy8KLSAgICAvL3Mu
YXBwZW5kKFRTdHJpbmcoImZsb2F0IG5vaXNlMShmbG9hdCB4KTsiKSk7Ci0gICAgLy9zLmFwcGVu
ZChUU3RyaW5nKCJmbG9hdCBub2lzZTEodmVjMiAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0
cmluZygiZmxvYXQgbm9pc2UxKHZlYzMgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmco
ImZsb2F0IG5vaXNlMSh2ZWM0ICB4KTsiKSk7Ci0KLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZl
YzIgbm9pc2UyKGZsb2F0IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzIgbm9p
c2UyKHZlYzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzIgbm9pc2UyKHZl
YzMgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzIgbm9pc2UyKHZlYzQgIHgp
OyIpKTsKLQotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjMyBub2lzZTMoZmxvYXQgeCk7Iikp
OwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjMyBub2lzZTModmVjMiAgeCk7IikpOwotICAg
IC8vcy5hcHBlbmQoVFN0cmluZygidmVjMyBub2lzZTModmVjMyAgeCk7IikpOwotICAgIC8vcy5h
cHBlbmQoVFN0cmluZygidmVjMyBub2lzZTModmVjNCAgeCk7IikpOwotCi0gICAgLy9zLmFwcGVu
ZChUU3RyaW5nKCJ2ZWM0IG5vaXNlNChmbG9hdCB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0IG5vaXNlNCh2ZWMyICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0IG5vaXNlNCh2ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IG5v
aXNlNCh2ZWM0ICB4KTsiKSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMiwg
Imxlc3NUaGFuRXF1YWwiLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihib29sMywgImxlc3NUaGFuRXF1YWwiLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwgImxlc3NUaGFuRXF1YWwiLCBmbG9hdDQsIGZs
b2F0NCk7CiAKLSAgICByZXR1cm4gczsKLX0KKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGJvb2wyLCAibGVzc1RoYW5FcXVhbCIsIGludDIsIGludDIpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oYm9vbDMsICJsZXNzVGhhbkVxdWFsIiwgaW50MywgaW50Myk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwgImxlc3NUaGFuRXF1YWwiLCBpbnQ0LCBpbnQ0
KTsKIAotLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLwotLy8gUHJvdG90eXBlcyBmb3IgYnVpbHQt
aW4gZnVuY3Rpb25zIHNlZW4gYnkgdmVydGV4IHNoYWRlcnMgb25seS4KLS8vCi0vLz09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLXN0YXRpYyBUU3RyaW5nIEJ1aWx0SW5GdW5jdGlvbnNWZXJ0ZXgoY29uc3Qg
U2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCi17Ci0gICAgVFN0cmluZyBzOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJncmVhdGVyVGhhbiIsIGZsb2F0MiwgZmxv
YXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wzLCAiZ3JlYXRlclRoYW4i
LCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwg
ImdyZWF0ZXJUaGFuIiwgZmxvYXQ0LCBmbG9hdDQpOwogCi0gICAgLy8KLSAgICAvLyBHZW9tZXRy
aWMgRnVuY3Rpb25zLgotICAgIC8vCi0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IGZ0cmFu
c2Zvcm0oKTsiKSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMiwgImdyZWF0
ZXJUaGFuIiwgaW50MiwgaW50Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29s
MywgImdyZWF0ZXJUaGFuIiwgaW50MywgaW50Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihib29sNCwgImdyZWF0ZXJUaGFuIiwgaW50NCwgaW50NCk7CiAKLSAgICAvLwotICAgIC8v
IFRleHR1cmUgRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0
ZXh0dXJlMkRMb2Qoc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzIgY29vcmQsIGZsb2F0IGxvZCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQg
c2FtcGxlciwgdmVjMyBjb29yZCwgZmxvYXQgbG9kKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCB0ZXh0dXJlMkRQcm9qTG9kKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWM0IGNvb3JkLCBm
bG9hdCBsb2QpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmVDdWJlTG9k
KHNhbXBsZXJDdWJlIHNhbXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0IGxvZCk7IikpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJncmVhdGVyVGhhbkVxdWFsIiwgZmxvYXQy
LCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDMsICJncmVhdGVy
VGhhbkVxdWFsIiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oYm9vbDQsICJncmVhdGVyVGhhbkVxdWFsIiwgZmxvYXQ0LCBmbG9hdDQpOwogCi0gICAgcmV0
dXJuIHM7Ci19CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMiwgImdyZWF0ZXJU
aGFuRXF1YWwiLCBpbnQyLCBpbnQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJv
b2wzLCAiZ3JlYXRlclRoYW5FcXVhbCIsIGludDMsIGludDMpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oYm9vbDQsICJncmVhdGVyVGhhbkVxdWFsIiwgaW50NCwgaW50NCk7CiAKLS8v
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFByb3RvdHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0
aW9ucyBzZWVuIGJ5IGZyYWdtZW50IHNoYWRlcnMgb25seS4KLS8vCi0vLz09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLXN0YXRpYyBUU3RyaW5nIEJ1aWx0SW5GdW5jdGlvbnNGcmFnbWVudChjb25zdCBTaEJ1
aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcykKLXsKLSAgICBUU3RyaW5nIHM7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihib29sMiwgImVxdWFsIiwgZmxvYXQyLCBmbG9hdDIpOworICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDMsICJlcXVhbCIsIGZsb2F0MywgZmxvYXQz
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAiZXF1YWwiLCBmbG9hdDQs
IGZsb2F0NCk7CiAKLSAgICAvLwotICAgIC8vIFRleHR1cmUgRnVuY3Rpb25zLgotICAgIC8vCi0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkQoc2FtcGxlcjJEIHNhbXBsZXIsIHZl
YzIgY29vcmQsIGZsb2F0IGJpYXMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRl
eHR1cmUyRFByb2ooc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0IGJpYXMpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlcjJEIHNh
bXBsZXIsIHZlYzQgY29vcmQsIGZsb2F0IGJpYXMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWM0IHRleHR1cmVDdWJlKHNhbXBsZXJDdWJlIHNhbXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0
IGJpYXMpOyIpKTsKLQotICAgIGlmIChyZXNvdXJjZXMuT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVz
KSB7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRGZHgoZmxvYXQgcCk7IikpOwot
ICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBkRmR4KHZlYzIgIHApOyIpKTsKLSAgICAg
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZEZkeCh2ZWMzICBwKTsiKSk7Ci0gICAgICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgIGRGZHgodmVjNCAgcCk7IikpOwotCi0gICAgICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IGRGZHkoZmxvYXQgcCk7IikpOwotICAgICAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMyICBkRmR5KHZlYzIgIHApOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgZEZkeSh2ZWMzICBwKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgIGRGZHkodmVjNCAgcCk7IikpOwotCi0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0
IGZ3aWR0aChmbG9hdCBwKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGZ3
aWR0aCh2ZWMyICBwKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGZ3aWR0
aCh2ZWMzICBwKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGZ3aWR0aCh2
ZWM0ICBwKTsiKSk7Ci0gICAgfQorICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIs
ICJlcXVhbCIsIGludDIsIGludDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9v
bDMsICJlcXVhbCIsIGludDMsIGludDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
Ym9vbDQsICJlcXVhbCIsIGludDQsIGludDQpOwogCi0gICAgcmV0dXJuIHM7Ci19CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMiwgImVxdWFsIiwgYm9vbDIsIGJvb2wyKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wzLCAiZXF1YWwiLCBib29sMywgYm9vbDMp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDQsICJlcXVhbCIsIGJvb2w0LCBi
b29sNCk7CiAKLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFN0YW5kYXJkIHVuaWZvcm1z
LgotLy8KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotc3RhdGljIFRTdHJpbmcgU3RhbmRhcmRVbmlm
b3JtcygpCi17Ci0gICAgVFN0cmluZyBzOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
Ym9vbDIsICJub3RFcXVhbCIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGJvb2wzLCAibm90RXF1YWwiLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwgIm5vdEVxdWFsIiwgZmxvYXQ0LCBmbG9hdDQpOwog
Ci0gICAgLy8KLSAgICAvLyBEZXB0aCByYW5nZSBpbiB3aW5kb3cgY29vcmRpbmF0ZXMKLSAgICAv
LwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInN0cnVjdCBnbF9EZXB0aFJhbmdlUGFyYW1ldGVycyB7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoIiAgICBoaWdocCBmbG9hdCBuZWFyOyIpKTsgICAg
ICAgIC8vIG4KLSAgICBzLmFwcGVuZChUU3RyaW5nKCIgICAgaGlnaHAgZmxvYXQgZmFyOyIpKTsg
ICAgICAgICAvLyBmCi0gICAgcy5hcHBlbmQoVFN0cmluZygiICAgIGhpZ2hwIGZsb2F0IGRpZmY7
IikpOyAgICAgICAgLy8gZiAtIG4KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ9OyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ1bmlmb3JtIGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIGdsX0RlcHRo
UmFuZ2U7IikpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJub3RFcXVh
bCIsIGludDIsIGludDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDMsICJu
b3RFcXVhbCIsIGludDMsIGludDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9v
bDQsICJub3RFcXVhbCIsIGludDQsIGludDQpOwogCi0gICAgcmV0dXJuIHM7Ci19CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMiwgIm5vdEVxdWFsIiwgYm9vbDIsIGJvb2wyKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wzLCAibm90RXF1YWwiLCBib29sMywg
Ym9vbDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDQsICJub3RFcXVhbCIs
IGJvb2w0LCBib29sNCk7CiAKLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIERlZmF1bHQg
cHJlY2lzaW9uIGZvciB2ZXJ0ZXggc2hhZGVycy4KLS8vCi0vLz09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LXN0YXRpYyBUU3RyaW5nIERlZmF1bHRQcmVjaXNpb25WZXJ0ZXgoKQotewotICAgIFRTdHJpbmcg
czsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wxLCAiYW55IiwgYm9vbDIpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDEsICJhbnkiLCBib29sMyk7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMSwgImFueSIsIGJvb2w0KTsKIAotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInByZWNpc2lvbiBoaWdocCBpbnQ7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInByZWNpc2lvbiBoaWdocCBmbG9hdDsiKSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihib29sMSwgImFsbCIsIGJvb2wyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGJvb2wxLCAiYWxsIiwgYm9vbDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
Ym9vbDEsICJhbGwiLCBib29sNCk7CiAKLSAgICByZXR1cm4gczsKLX0KLQotLy89PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0vLwotLy8gRGVmYXVsdCBwcmVjaXNpb24gZm9yIGZyYWdtZW50IHNoYWRlcnMu
Ci0vLwotLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBEZWZhdWx0UHJlY2lz
aW9uRnJhZ21lbnQoKQotewotICAgIFRTdHJpbmcgczsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGJvb2wyLCAibm90IiwgYm9vbDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oYm9vbDMsICJub3QiLCBib29sMyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihi
b29sNCwgIm5vdCIsIGJvb2w0KTsKIAotICAgIHMuYXBwZW5kKFRTdHJpbmcoInByZWNpc2lvbiBt
ZWRpdW1wIGludDsiKSk7Ci0gICAgLy8gTm8gZGVmYXVsdCBwcmVjaXNpb24gZm9yIGZsb2F0IGlu
IGZyYWdtZW50IHNoYWRlcnMKKyAgICBUVHlwZSAqc2FtcGxlcjJEID0gbmV3IFRUeXBlKEVidFNh
bXBsZXIyRCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEpOworICAgIFRUeXBlICpzYW1wbGVy
Q3ViZSA9IG5ldyBUVHlwZShFYnRTYW1wbGVyQ3ViZSwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEpOwogCi0gICAgcmV0dXJuIHM7Ci19CisgICAgLy8KKyAgICAvLyBUZXh0dXJlIEZ1bmN0aW9u
cyBmb3IgR0xTTCBFUyAxLjAKKyAgICAvLworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQ0LCAidGV4dHVyZTJEIiwgc2FtcGxlcjJELCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZTJEUHJvaiIsIHNhbXBsZXIyRCwgZmxvYXQz
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRFByb2oi
LCBzYW1wbGVyMkQsIGZsb2F0NCk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDQsICJ0ZXh0dXJlQ3ViZSIsIHNhbXBsZXJDdWJlLCBmbG9hdDMpOwogCi0vLz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS8vCi0vLyBJbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQgYnVpbHQtaW4gY29uc3Rh
bnRzLgotLy8KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotc3RhdGljIFRTdHJpbmcgQnVpbHRJbkNv
bnN0YW50cyhTaFNoYWRlclNwZWMgc3BlYywgY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzICZyZXNv
dXJjZXMpCi17Ci0gICAgVFN0cmluZ1N0cmVhbSBzOworICAgIGlmIChyZXNvdXJjZXMuT0VTX0VH
TF9pbWFnZV9leHRlcm5hbCkKKyAgICB7CisgICAgICAgIFRUeXBlICpzYW1wbGVyRXh0ZXJuYWxP
RVMgPSBuZXcgVFR5cGUoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSk7CiAKLSAgICBzIDw8ICJjb25zdCBpbnQgZ2xfTWF4VmVydGV4QXR0cmlicyA9ICIg
PDwgcmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMgPDwgIjsiOwotICAgIHMgPDwgImNvbnN0IGlu
dCBnbF9NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA9ICIgPDwgcmVzb3VyY2VzLk1heFZlcnRleFVu
aWZvcm1WZWN0b3JzIDw8ICI7IjsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDQsICJ0ZXh0dXJlMkQiLCBzYW1wbGVyRXh0ZXJuYWxPRVMsIGZsb2F0Mik7CisgICAgICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZTJEUHJvaiIsIHNhbXBs
ZXJFeHRlcm5hbE9FUywgZmxvYXQzKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qIiwgc2FtcGxlckV4dGVybmFsT0VTLCBmbG9hdDQpOwor
ICAgIH0KIAotICAgIHMgPDwgImNvbnN0IGludCBnbF9NYXhWYXJ5aW5nVmVjdG9ycyA9ICIgPDwg
cmVzb3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzIDw8ICI7IjsKLSAgICBzIDw8ICJjb25zdCBpbnQg
Z2xfTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMgPSAiIDw8IHJlc291cmNlcy5NYXhWZXJ0ZXhU
ZXh0dXJlSW1hZ2VVbml0cyA8PCAiOyI7Ci0gICAgcyA8PCAiY29uc3QgaW50IGdsX01heENvbWJp
bmVkVGV4dHVyZUltYWdlVW5pdHMgPSAiIDw8IHJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJ
bWFnZVVuaXRzIDw8ICI7IjsKLSAgICBzIDw8ICJjb25zdCBpbnQgZ2xfTWF4VGV4dHVyZUltYWdl
VW5pdHMgPSAiIDw8IHJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyA8PCAiOyI7Ci0gICAg
cyA8PCAiY29uc3QgaW50IGdsX01heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgPSAiIDw8IHJlc291
cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzIDw8ICI7IjsKKyAgICBpZiAocmVzb3VyY2Vz
LkFSQl90ZXh0dXJlX3JlY3RhbmdsZSkKKyAgICB7CisgICAgICAgIFRUeXBlICpzYW1wbGVyMkRS
ZWN0ID0gbmV3IFRUeXBlKEVidFNhbXBsZXIyRFJlY3QsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAxKTsKIAotICAgIGlmIChzcGVjICE9IFNIX0NTU19TSEFERVJTX1NQRUMpCi0gICAgICAgIHMg
PDwgImNvbnN0IGludCBnbF9NYXhEcmF3QnVmZmVycyA9ICIgPDwgcmVzb3VyY2VzLk1heERyYXdC
dWZmZXJzIDw8ICI7IjsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQs
ICJ0ZXh0dXJlMkRSZWN0Iiwgc2FtcGxlcjJEUmVjdCwgZmxvYXQyKTsKKyAgICAgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0dXJlMkRSZWN0UHJvaiIsIHNhbXBsZXIy
RFJlY3QsIGZsb2F0Myk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0
LCAidGV4dHVyZTJEUmVjdFByb2oiLCBzYW1wbGVyMkRSZWN0LCBmbG9hdDQpOworICAgIH0KIAot
ICAgIHJldHVybiBzLnN0cigpOwotfQorICAgIGlmICh0eXBlID09IFNIX0ZSQUdNRU5UX1NIQURF
UikKKyAgICB7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4
dHVyZTJEIiwgc2FtcGxlcjJELCBmbG9hdDIsIGZsb2F0MSk7CisgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZTJEUHJvaiIsIHNhbXBsZXIyRCwgZmxvYXQz
LCBmbG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRl
eHR1cmUyRFByb2oiLCBzYW1wbGVyMkQsIGZsb2F0NCwgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0dXJlQ3ViZSIsIHNhbXBsZXJDdWJlLCBm
bG9hdDMsIGZsb2F0MSk7CisKKyAgICAgICAgaWYgKHJlc291cmNlcy5PRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQxLCAiZEZkeCIsIGZsb2F0MSk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0MiwgImRGZHgiLCBmbG9hdDIpOworICAgICAgICAgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJkRmR4IiwgZmxvYXQzKTsKKyAgICAgICAgICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiZEZkeCIsIGZsb2F0NCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZEZk
eSIsIGZsb2F0MSk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0
MiwgImRGZHkiLCBmbG9hdDIpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDMsICJkRmR5IiwgZmxvYXQzKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQ0LCAiZEZkeSIsIGZsb2F0NCk7CisKKyAgICAgICAgICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZndpZHRoIiwgZmxvYXQxKTsKKyAgICAgICAgICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAiZndpZHRoIiwgZmxvYXQyKTsKKyAg
ICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiZndpZHRoIiwgZmxv
YXQzKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiZndp
ZHRoIiwgZmxvYXQ0KTsKKyAgICAgICAgfQorICAgIH0KIAotdm9pZCBUQnVpbHRJbnM6OmluaXRp
YWxpemUoU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCi17Ci0g
ICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBTSF9GUkFHTUVOVF9TSEFERVI6Ci0gICAgICAg
IGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhEZWZhdWx0UHJlY2lzaW9uRnJhZ21lbnQoKSk7Ci0g
ICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJl
c291cmNlcykpOwotICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0
aW9uc0ZyYWdtZW50KHJlc291cmNlcykpOwotICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2Jh
Y2soU3RhbmRhcmRVbmlmb3JtcygpKTsKLSAgICAgICAgYnJlYWs7CisgICAgaWYodHlwZSA9PSBT
SF9WRVJURVhfU0hBREVSKQorICAgIHsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDQsICJ0ZXh0dXJlMkRMb2QiLCBzYW1wbGVyMkQsIGZsb2F0MiwgZmxvYXQxKTsKKyAg
ICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qTG9k
Iiwgc2FtcGxlcjJELCBmbG9hdDMsIGZsb2F0MSk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZTJEUHJvakxvZCIsIHNhbXBsZXIyRCwgZmxvYXQ0LCBm
bG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1
cmVDdWJlTG9kIiwgc2FtcGxlckN1YmUsIGZsb2F0MywgZmxvYXQxKTsKKyAgICB9CiAKLSAgICBj
YXNlIFNIX1ZFUlRFWF9TSEFERVI6Ci0gICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhE
ZWZhdWx0UHJlY2lzaW9uVmVydGV4KCkpOwotICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2Jh
Y2soQnVpbHRJbkZ1bmN0aW9uc0NvbW1vbihyZXNvdXJjZXMpKTsKLSAgICAgICAgYnVpbHRJblN0
cmluZ3MucHVzaF9iYWNrKEJ1aWx0SW5GdW5jdGlvbnNWZXJ0ZXgocmVzb3VyY2VzKSk7Ci0gICAg
ICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhTdGFuZGFyZFVuaWZvcm1zKCkpOwotICAgICAg
ICBicmVhazsKKyAgICAvLworICAgIC8vIERlcHRoIHJhbmdlIGluIHdpbmRvdyBjb29yZGluYXRl
cworICAgIC8vCisgICAgVEZpZWxkTGlzdCAqZmllbGRzID0gTmV3UG9vbFRGaWVsZExpc3QoKTsK
KyAgICBURmllbGQgKm5lYXIgPSBuZXcgVEZpZWxkKG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwSGln
aCwgRXZxR2xvYmFsLCAxKSwgTmV3UG9vbFRTdHJpbmcoIm5lYXIiKSk7CisgICAgVEZpZWxkICpm
YXIgPSBuZXcgVEZpZWxkKG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxR2xvYmFsLCAx
KSwgTmV3UG9vbFRTdHJpbmcoImZhciIpKTsKKyAgICBURmllbGQgKmRpZmYgPSBuZXcgVEZpZWxk
KG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxR2xvYmFsLCAxKSwgTmV3UG9vbFRTdHJp
bmcoImRpZmYiKSk7CisgICAgZmllbGRzLT5wdXNoX2JhY2sobmVhcik7CisgICAgZmllbGRzLT5w
dXNoX2JhY2soZmFyKTsKKyAgICBmaWVsZHMtPnB1c2hfYmFjayhkaWZmKTsKKyAgICBUU3RydWN0
dXJlICpkZXB0aFJhbmdlU3RydWN0ID0gbmV3IFRTdHJ1Y3R1cmUoTmV3UG9vbFRTdHJpbmcoImds
X0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIiksIGZpZWxkcyk7CisgICAgVFZhcmlhYmxlICpkZXB0aFJh
bmdlUGFyYW1ldGVycyA9IG5ldyBUVmFyaWFibGUoJmRlcHRoUmFuZ2VTdHJ1Y3QtPm5hbWUoKSwg
ZGVwdGhSYW5nZVN0cnVjdCwgdHJ1ZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpkZXB0aFJh
bmdlUGFyYW1ldGVycyk7CisgICAgVFZhcmlhYmxlICpkZXB0aFJhbmdlID0gbmV3IFRWYXJpYWJs
ZShOZXdQb29sVFN0cmluZygiZ2xfRGVwdGhSYW5nZSIpLCBUVHlwZShkZXB0aFJhbmdlU3RydWN0
KSk7CisgICAgZGVwdGhSYW5nZS0+c2V0UXVhbGlmaWVyKEV2cVVuaWZvcm0pOworICAgIHN5bWJv
bFRhYmxlLmluc2VydCgqZGVwdGhSYW5nZSk7CisKKyAgICAvLworICAgIC8vIEltcGxlbWVudGF0
aW9uIGRlcGVuZGVudCBidWlsdC1pbiBjb25zdGFudHMuCisgICAgLy8KKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRDb25zdEludCgiZ2xfTWF4VmVydGV4QXR0cmlicyIsIHJlc291cmNlcy5NYXhWZXJ0
ZXhBdHRyaWJzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludCgiZ2xfTWF4VmVydGV4
VW5pZm9ybVZlY3RvcnMiLCByZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpOworICAg
IHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KCJnbF9NYXhWYXJ5aW5nVmVjdG9ycyIsIHJlc291
cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQo
ImdsX01heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzIiwgcmVzb3VyY2VzLk1heFZlcnRleFRleHR1
cmVJbWFnZVVuaXRzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludCgiZ2xfTWF4Q29t
YmluZWRUZXh0dXJlSW1hZ2VVbml0cyIsIHJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFn
ZVVuaXRzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludCgiZ2xfTWF4VGV4dHVyZUlt
YWdlVW5pdHMiLCByZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydENvbnN0SW50KCJnbF9NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzIiwgcmVzb3Vy
Y2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMpOwogCi0gICAgZGVmYXVsdDogYXNzZXJ0KGZh
bHNlICYmICJMYW5ndWFnZSBub3Qgc3VwcG9ydGVkIik7CisgICAgaWYgKHNwZWMgIT0gU0hfQ1NT
X1NIQURFUlNfU1BFQykKKyAgICB7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50
KCJnbF9NYXhEcmF3QnVmZmVycyIsIHJlc291cmNlcy5NYXhEcmF3QnVmZmVycyk7CiAgICAgfQot
Ci0gICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1aWx0SW5Db25zdGFudHMoc3BlYywgcmVz
b3VyY2VzKSk7CiB9CiAKIHZvaWQgSWRlbnRpZnlCdWlsdElucyhTaFNoYWRlclR5cGUgdHlwZSwg
U2hTaGFkZXJTcGVjIHNwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hCdWlsdElu
UmVzb3VyY2VzJiByZXNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAgVFN5bWJvbFRhYmxl
JiBzeW1ib2xUYWJsZSkKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaEJ1aWx0SW5SZXNv
dXJjZXMgJnJlc291cmNlcywKKyAgICAgICAgICAgICAgICAgICAgICBUU3ltYm9sVGFibGUgJnN5
bWJvbFRhYmxlKQogewogICAgIC8vCiAgICAgLy8gRmlyc3QsIGluc2VydCBzb21lIHNwZWNpYWwg
YnVpbHQtaW4gdmFyaWFibGVzIHRoYXQgYXJlIG5vdCBpbiAKQEAgLTUzOSw2ICs0MzksMTAgQEAg
dm9pZCBJZGVudGlmeUJ1aWx0SW5zKFNoU2hhZGVyVHlwZSB0eXBlLAogICAgICAgICBpZiAoc3Bl
YyAhPSBTSF9DU1NfU0hBREVSU19TUEVDKSB7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNl
cnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdDb2xvciIpLCAgICAgICAg
ICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFGcmFnQ29sb3IsICAgNCkp
KTsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29s
VFN0cmluZygiZ2xfRnJhZ0RhdGFbZ2xfTWF4RHJhd0J1ZmZlcnNdIiksIFRUeXBlKEVidEZsb2F0
LCBFYnBNZWRpdW0sIEV2cUZyYWdEYXRhLCAgICA0KSkpOworICAgICAgICAgICAgaWYgKHJlc291
cmNlcy5FWFRfZnJhZ19kZXB0aCkgeworICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJhZ0RlcHRoRVhUIiksICAgICAg
ICAgICAgVFR5cGUoRWJ0RmxvYXQsIHJlc291cmNlcy5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPyBF
YnBIaWdoIDogRWJwTWVkaXVtLCBFdnFGcmFnRGVwdGgsIDEpKSk7CisgICAgICAgICAgICAgICAg
c3ltYm9sVGFibGUucmVsYXRlVG9FeHRlbnNpb24oImdsX0ZyYWdEZXB0aEVYVCIsICJHTF9FWFRf
ZnJhZ19kZXB0aCIpOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJjc3Nf
TWl4Q29sb3IiKSwgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwg
RXZxR2xvYmFsLCAgICAgIDQpKSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoKm5l
dyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImNzc19Db2xvck1hdHJpeCIpLCAgICAgICAgICAg
ICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFHbG9iYWwsICAgICAgNCwgdHJ1ZSkp
KTsKQEAgLTU2MCw4ICs0NjQsNiBAQCB2b2lkIElkZW50aWZ5QnVpbHRJbnMoU2hTaGFkZXJUeXBl
IHR5cGUsCiAgICAgLy8gZXhwZWN0ZWQgdG8gYmUgcmVzb2x2ZWQgdGhyb3VnaCBhIGxpYnJhcnkg
b2YgZnVuY3Rpb25zLCB2ZXJzdXMgYXMKICAgICAvLyBvcGVyYXRpb25zLgogICAgIC8vCi0gICAg
c3ltYm9sVGFibGUucmVsYXRlVG9PcGVyYXRvcigibm90IiwgICAgICAgICAgICAgIEVPcFZlY3Rv
ckxvZ2ljYWxOb3QpOwotCiAgICAgc3ltYm9sVGFibGUucmVsYXRlVG9PcGVyYXRvcigibWF0cml4
Q29tcE11bHQiLCAgIEVPcE11bCk7CiAKICAgICBzeW1ib2xUYWJsZS5yZWxhdGVUb09wZXJhdG9y
KCJlcXVhbCIsICAgICAgICAgICAgRU9wVmVjdG9yRXF1YWwpOwpAQCAtNjEyLDYgKzUxNCw3IEBA
IHZvaWQgSWRlbnRpZnlCdWlsdElucyhTaFNoYWRlclR5cGUgdHlwZSwKICAgICAKICAgICBzeW1i
b2xUYWJsZS5yZWxhdGVUb09wZXJhdG9yKCJhbnkiLCAgICAgICAgICBFT3BBbnkpOwogICAgIHN5
bWJvbFRhYmxlLnJlbGF0ZVRvT3BlcmF0b3IoImFsbCIsICAgICAgICAgIEVPcEFsbCk7CisgICAg
c3ltYm9sVGFibGUucmVsYXRlVG9PcGVyYXRvcigibm90IiwgICAgICAgICAgRU9wVmVjdG9yTG9n
aWNhbE5vdCk7CiAKICAgICAvLyBNYXAgbGFuZ3VhZ2Utc3BlY2lmaWMgb3BlcmF0b3JzLgogICAg
IHN3aXRjaCh0eXBlKSB7CkBAIC02NTYsNCArNTU5LDYgQEAgdm9pZCBJbml0RXh0ZW5zaW9uQmVo
YXZpb3IoY29uc3QgU2hCdWlsdAogICAgICAgICBleHRCZWhhdmlvclsiR0xfQVJCX3RleHR1cmVf
cmVjdGFuZ2xlIl0gPSBFQmhVbmRlZmluZWQ7CiAgICAgaWYgKHJlc291cmNlcy5FWFRfZHJhd19i
dWZmZXJzKQogICAgICAgICBleHRCZWhhdmlvclsiR0xfRVhUX2RyYXdfYnVmZmVycyJdID0gRUJo
VW5kZWZpbmVkOworICAgIGlmIChyZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGgpCisgICAgICAgIGV4
dEJlaGF2aW9yWyJHTF9FWFRfZnJhZ19kZXB0aCJdID0gRUJoVW5kZWZpbmVkOwogfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5o
CShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvSW5pdGlhbGl6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENv
cHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xMSwxOSArMTEsNyBAQAogI2luY2x1ZGUg
ImNvbXBpbGVyL1NoSGFuZGxlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvU3ltYm9sVGFibGUuaCIK
IAotdHlwZWRlZiBUVmVjdG9yPFRTdHJpbmc+IFRCdWlsdEluU3RyaW5nczsKLQotY2xhc3MgVEJ1
aWx0SW5zIHsKLXB1YmxpYzoKLSAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBv
b2xBbGxvY2F0b3IpCi0KLSAgICB2b2lkIGluaXRpYWxpemUoU2hTaGFkZXJUeXBlIHR5cGUsIFNo
U2hhZGVyU3BlYyBzcGVjLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBTaEJ1aWx0SW5SZXNv
dXJjZXMmIHJlc291cmNlcyk7Ci0gICAgY29uc3QgVEJ1aWx0SW5TdHJpbmdzJiBnZXRCdWlsdElu
U3RyaW5ncygpIHsgcmV0dXJuIGJ1aWx0SW5TdHJpbmdzOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBU
QnVpbHRJblN0cmluZ3MgYnVpbHRJblN0cmluZ3M7Ci19Owordm9pZCBJbnNlcnRCdWlsdEluRnVu
Y3Rpb25zKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgY29uc3QgU2hCdWls
dEluUmVzb3VyY2VzICZyZXNvdXJjZXMsIFRTeW1ib2xUYWJsZSAmdGFibGUpOwogCiB2b2lkIElk
ZW50aWZ5QnVpbHRJbnMoU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLAogICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0lu
dGVybWVkaWF0ZS5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xMzEsNyAr
MTMxLDcgQEAgY29uc3QgY2hhciogZ2V0T3BlcmF0b3JTdHJpbmcoVE9wZXJhdG9yIAogLy8KIC8v
IFJldHVybnMgdGhlIGFkZGVkIG5vZGUuCiAvLwotVEludGVybVN5bWJvbCogVEludGVybWVkaWF0
ZTo6YWRkU3ltYm9sKGludCBpZCwgY29uc3QgVFN0cmluZyYgbmFtZSwgY29uc3QgVFR5cGUmIHR5
cGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1TeW1ib2wqIFRJbnRlcm1lZGlhdGU6OmFkZFN5
bWJvbChpbnQgaWQsIGNvbnN0IFRTdHJpbmcmIG5hbWUsIGNvbnN0IFRUeXBlJiB0eXBlLCBjb25z
dCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRlcm1TeW1ib2wqIG5vZGUgPSBuZXcgVElu
dGVybVN5bWJvbChpZCwgbmFtZSwgdHlwZSk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKQEAg
LTE0NCw3ICsxNDQsNyBAQCBUSW50ZXJtU3ltYm9sKiBUSW50ZXJtZWRpYXRlOjphZGRTeW1ib2wo
CiAvLwogLy8gUmV0dXJucyB0aGUgYWRkZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRJbnRl
cm1lZGlhdGU6OmFkZEJpbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQs
IFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MgbGluZSwgVFN5bWJvbFRhYmxlJiBzeW1i
b2xUYWJsZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQmluYXJ5TWF0aChUT3Bl
cmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSkKIHsKICAgICBzd2l0
Y2ggKG9wKSB7CiAgICAgICAgIGNhc2UgRU9wRXF1YWw6CkBAIC0yMDAsOCArMjAwLDYgQEAgVElu
dGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYQogICAgIC8vIG9uZSBhbmQgcHJv
bW90ZSBpdCB0byB0aGUgcmlnaHQgdHlwZS4KICAgICAvLwogICAgIFRJbnRlcm1CaW5hcnkqIG5v
ZGUgPSBuZXcgVEludGVybUJpbmFyeShvcCk7Ci0gICAgaWYgKGxpbmUgPT0gMCkKLSAgICAgICAg
bGluZSA9IHJpZ2h0LT5nZXRMaW5lKCk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAg
IG5vZGUtPnNldExlZnQobGVmdCk7CkBAIC0yMzAsMTUgKzIyOCwxMyBAQCBUSW50ZXJtVHlwZWQq
IFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hCiAvLwogLy8gUmV0dXJucyB0aGUgYWRkZWQgbm9k
ZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEFzc2lnbihUT3BlcmF0b3Ig
b3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYyBs
aW5lKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRBc3NpZ24oVE9wZXJhdG9yIG9w
LCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUpCiB7CiAgICAgLy8KICAgICAvLyBMaWtlIGFkZGluZyBiaW5hcnkgbWF0aCwgZXhj
ZXB0IHRoZSBjb252ZXJzaW9uIGNhbiBvbmx5IGdvCiAgICAgLy8gZnJvbSByaWdodCB0byBsZWZ0
LgogICAgIC8vCiAgICAgVEludGVybUJpbmFyeSogbm9kZSA9IG5ldyBUSW50ZXJtQmluYXJ5KG9w
KTsKLSAgICBpZiAobGluZSA9PSAwKQotICAgICAgICBsaW5lID0gbGVmdC0+Z2V0TGluZSgpOwog
ICAgIG5vZGUtPnNldExpbmUobGluZSk7CiAKICAgICBUSW50ZXJtVHlwZWQqIGNoaWxkID0gYWRk
Q29udmVyc2lvbihvcCwgbGVmdC0+Z2V0VHlwZSgpLCByaWdodCk7CkBAIC0yNjAsMTEgKzI1Niw5
IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKFQKIC8vIFJldHVybnMg
dGhlIGFkZGVkIG5vZGUuCiAvLyBUaGUgY2FsbGVyIHNob3VsZCBzZXQgdGhlIHR5cGUgb2YgdGhl
IHJldHVybmVkIG5vZGUuCiAvLwotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRJbmRl
eChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogYmFzZSwgVEludGVybVR5cGVkKiBpbmRleCwg
VFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRJbmRleChU
T3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogYmFzZSwgVEludGVybVR5cGVkKiBpbmRleCwgY29u
c3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJtQmluYXJ5KiBub2RlID0gbmV3IFRJ
bnRlcm1CaW5hcnkob3ApOwotICAgIGlmIChsaW5lID09IDApCi0gICAgICAgIGxpbmUgPSBpbmRl
eC0+Z2V0TGluZSgpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CiAgICAgbm9kZS0+c2V0TGVm
dChiYXNlKTsKICAgICBub2RlLT5zZXRSaWdodChpbmRleCk7CkBAIC0yNzksMTMgKzI3MywxMyBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KFRPCiAvLwogLy8gUmV0dXJu
cyB0aGUgYWRkZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFVu
YXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBjaGlsZE5vZGUsIFRTb3VyY2VMb2Mg
bGluZSwgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVk
aWF0ZTo6YWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIGNoaWxkTm9kZSwg
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSkKIHsKICAg
ICBUSW50ZXJtVW5hcnkqIG5vZGU7CiAgICAgVEludGVybVR5cGVkKiBjaGlsZCA9IGNoaWxkTm9k
ZS0+Z2V0QXNUeXBlZCgpOwogCiAgICAgaWYgKGNoaWxkID09IDApIHsKLSAgICAgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHR5cGUgaW4gQWRkVW5h
cnlNYXRoIiwgbGluZSk7CisgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50
ZXJuYWxFcnJvciwgbGluZSwgIkJhZCB0eXBlIGluIEFkZFVuYXJ5TWF0aCIpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKQEAgLTM0OCw4ICszNDIsNiBAQCBUSW50ZXJtVHlwZWQqIFRJbnRl
cm1lZGlhdGU6OmFkZFVuYXJ5TWF0CiAgICAgLy8gTWFrZSBhIG5ldyBub2RlIGZvciB0aGUgb3Bl
cmF0b3IuCiAgICAgLy8KICAgICBub2RlID0gbmV3IFRJbnRlcm1VbmFyeShvcCk7Ci0gICAgaWYg
KGxpbmUgPT0gMCkKLSAgICAgICAgbGluZSA9IGNoaWxkLT5nZXRMaW5lKCk7CiAgICAgbm9kZS0+
c2V0TGluZShsaW5lKTsKICAgICBub2RlLT5zZXRPcGVyYW5kKGNoaWxkKTsKIApAQCAtMzc2LDcg
KzM2OCw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkVW5hcnlNYXQKIC8vIFJl
dHVybnMgYW4gYWdncmVnYXRlIG5vZGUsIHdoaWNoIGNvdWxkIGJlIHRoZSBvbmUgcGFzc2VkIGlu
IGlmCiAvLyBpdCB3YXMgYWxyZWFkeSBhbiBhZ2dyZWdhdGUgYnV0IG5vIG9wZXJhdG9yIHdhcyBz
ZXQuCiAvLwotVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6c2V0QWdncmVnYXRlT3Bl
cmF0b3IoVEludGVybU5vZGUqIG5vZGUsIFRPcGVyYXRvciBvcCwgVFNvdXJjZUxvYyBsaW5lKQor
VEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6c2V0QWdncmVnYXRlT3BlcmF0b3IoVElu
dGVybU5vZGUqIG5vZGUsIFRPcGVyYXRvciBvcCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsK
ICAgICBUSW50ZXJtQWdncmVnYXRlKiBhZ2dOb2RlOwogCkBAIC0zOTEsOCArMzgzLDYgQEAgVElu
dGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6c2V0QWdncgogICAgICAgICAgICAgLy8KICAg
ICAgICAgICAgIGFnZ05vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZSgpOwogICAgICAgICAgICAg
YWdnTm9kZS0+Z2V0U2VxdWVuY2UoKS5wdXNoX2JhY2sobm9kZSk7Ci0gICAgICAgICAgICBpZiAo
bGluZSA9PSAwKQotICAgICAgICAgICAgICAgIGxpbmUgPSBub2RlLT5nZXRMaW5lKCk7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgYWdnTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRl
KCk7CkBAIC00MDEsOCArMzkxLDcgQEAgVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6
c2V0QWdncgogICAgIC8vIFNldCB0aGUgb3BlcmF0b3IuCiAgICAgLy8KICAgICBhZ2dOb2RlLT5z
ZXRPcChvcCk7Ci0gICAgaWYgKGxpbmUgIT0gMCkKLSAgICAgICAgYWdnTm9kZS0+c2V0TGluZShs
aW5lKTsKKyAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAgcmV0dXJuIGFnZ05vZGU7
CiB9CkBAIC00OTEsNyArNDgwLDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRD
b252ZXJzaQogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDogICBuZXdPcCA9IEVPcENv
bnZJbnRUb0Zsb2F0OyAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDog
IG5ld09wID0gRU9wQ29udkJvb2xUb0Zsb2F0OyBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShF
UHJlZml4SW50ZXJuYWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gbm9kZSIsIG5vZGUtPmdldExpbmUo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJhZCBwcm9tb3Rpb24gbm9kZSIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTAwLDcgKzQ4OSw3IEBAIFRJbnRlcm1UeXBlZCogVElu
dGVybWVkaWF0ZTo6YWRkQ29udmVyc2kKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6
ICAgbmV3T3AgPSBFT3BDb252SW50VG9Cb29sOyAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICBjYXNlIEVidEZsb2F0OiBuZXdPcCA9IEVPcENvbnZGbG9hdFRvQm9vbDsgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJCYWQgcHJvbW90aW9uIG5vZGUi
LCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJCYWQgcHJv
bW90aW9uIG5vZGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTUwOSwxMiArNDk4LDEyIEBA
IFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQ29udmVyc2kKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRCb29sOiAgIG5ld09wID0gRU9wQ29udkJvb2xUb0ludDsgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OiAgbmV3T3AgPSBFT3BDb252RmxvYXRU
b0ludDsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJC
YWQgcHJvbW90aW9uIG5vZGUiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5n
ZXRMaW5lKCksICJCYWQgcHJvbW90aW9uIG5vZGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlvbiB0eXBlIiwgbm9kZS0+Z2V0TGlu
ZSgpKTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJhZCBwcm9tb3Rpb24gdHlwZSIpOwogICAgICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKQEAgLTUzNCw3ICs1MjMsNyBAQCBUSW50
ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNpCiAvLyBSZXR1cm5zIHRoZSByZXN1
bHRpbmcgYWdncmVnYXRlLCB1bmxlc3MgMCB3YXMgcGFzc2VkIGluIGZvcgogLy8gYm90aCBleGlz
dGluZyBub2Rlcy4KIC8vCi1USW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpncm93QWdn
cmVnYXRlKFRJbnRlcm1Ob2RlKiBsZWZ0LCBUSW50ZXJtTm9kZSogcmlnaHQsIFRTb3VyY2VMb2Mg
bGluZSkKK1RJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2dyZWdhdGUoVElu
dGVybU5vZGUqIGxlZnQsIFRJbnRlcm1Ob2RlKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSkKIHsKICAgICBpZiAobGVmdCA9PSAwICYmIHJpZ2h0ID09IDApCiAgICAgICAgIHJldHVybiAw
OwpAQCAtNTUxLDggKzU0MCw3IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Omdy
b3dBZ2cKICAgICBpZiAocmlnaHQpCiAgICAgICAgIGFnZ05vZGUtPmdldFNlcXVlbmNlKCkucHVz
aF9iYWNrKHJpZ2h0KTsKIAotICAgIGlmIChsaW5lICE9IDApCi0gICAgICAgIGFnZ05vZGUtPnNl
dExpbmUobGluZSk7CisgICAgYWdnTm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAgIHJldHVybiBh
Z2dOb2RlOwogfQpAQCAtNTYyLDE4ICs1NTAsMTQgQEAgVEludGVybUFnZ3JlZ2F0ZSogVEludGVy
bWVkaWF0ZTo6Z3Jvd0FnZwogLy8KIC8vIFJldHVybnMgYW4gYWdncmVnYXRlLCB1bmxlc3MgMCB3
YXMgcGFzc2VkIGluIGZvciB0aGUgZXhpc3Rpbmcgbm9kZS4KIC8vCi1USW50ZXJtQWdncmVnYXRl
KiBUSW50ZXJtZWRpYXRlOjptYWtlQWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBub2RlLCBUU291cmNl
TG9jIGxpbmUpCitUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjptYWtlQWdncmVnYXRl
KFRJbnRlcm1Ob2RlKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGlmIChu
b2RlID09IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgVEludGVybUFnZ3JlZ2F0ZSogYWdn
Tm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlOwogICAgIGFnZ05vZGUtPmdldFNlcXVlbmNlKCku
cHVzaF9iYWNrKG5vZGUpOwotCi0gICAgaWYgKGxpbmUgIT0gMCkKLSAgICAgICAgYWdnTm9kZS0+
c2V0TGluZShsaW5lKTsKLSAgICBlbHNlCi0gICAgICAgIGFnZ05vZGUtPnNldExpbmUobm9kZS0+
Z2V0TGluZSgpKTsKKyAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAgcmV0dXJuIGFn
Z05vZGU7CiB9CkBAIC01ODUsNyArNTY5LDcgQEAgVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVk
aWF0ZTo6bWFrZUFnZwogLy8KIC8vIFJldHVybnMgdGhlIHNlbGVjdGlvbiBub2RlIGNyZWF0ZWQu
CiAvLwotVEludGVybU5vZGUqIFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvbihUSW50ZXJtVHlw
ZWQqIGNvbmQsIFRJbnRlcm1Ob2RlUGFpciBub2RlUGFpciwgVFNvdXJjZUxvYyBsaW5lKQorVElu
dGVybU5vZGUqIFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQs
IFRJbnRlcm1Ob2RlUGFpciBub2RlUGFpciwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAg
ICAvLwogICAgIC8vIEZvciBjb21waWxlIHRpbWUgY29uc3RhbnQgc2VsZWN0aW9ucywgcHJ1bmUg
dGhlIGNvZGUgYW5kCkBAIC01OTMsNyArNTc3LDcgQEAgVEludGVybU5vZGUqIFRJbnRlcm1lZGlh
dGU6OmFkZFNlbGVjdGlvbgogICAgIC8vCiAKICAgICBpZiAoY29uZC0+Z2V0QXNUeXBlZCgpICYm
IGNvbmQtPmdldEFzVHlwZWQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCkpIHsKLSAgICAgICAgaWYg
KGNvbmQtPmdldEFzVHlwZWQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCktPmdldEJDb25zdCgpID09IHRydWUpCisgICAgICAgIGlmIChjb25kLT5nZXRBc0Nv
bnN0YW50VW5pb24oKS0+Z2V0QkNvbnN0KDApID09IHRydWUpCiAgICAgICAgICAgICByZXR1cm4g
bm9kZVBhaXIubm9kZTEgPyBzZXRBZ2dyZWdhdGVPcGVyYXRvcihub2RlUGFpci5ub2RlMSwgRU9w
U2VxdWVuY2UsIG5vZGVQYWlyLm5vZGUxLT5nZXRMaW5lKCkpIDogTlVMTDsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcmV0dXJuIG5vZGVQYWlyLm5vZGUyID8gc2V0QWdncmVnYXRlT3BlcmF0
b3Iobm9kZVBhaXIubm9kZTIsIEVPcFNlcXVlbmNlLCBub2RlUGFpci5ub2RlMi0+Z2V0TGluZSgp
KSA6IE5VTEw7CkBAIC02MDYsNyArNTkwLDcgQEAgVEludGVybU5vZGUqIFRJbnRlcm1lZGlhdGU6
OmFkZFNlbGVjdGlvbgogfQogCiAKLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQ29t
bWEoVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jIGxp
bmUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbW1hKFRJbnRlcm1UeXBlZCog
bGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAg
ICBpZiAobGVmdC0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ICYmIHJpZ2h0
LT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKICAgICAgICAgcmV0dXJu
IHJpZ2h0OwpAQCAtNjI2LDcgKzYxMCw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6
YWRkQ29tbWEoVEkKIC8vCiAvLyBSZXR1cm5zIHRoZSBzZWxlY3Rpb24gbm9kZSBjcmVhdGVkLCBv
ciAwIGlmIG9uZSBjb3VsZCBub3QgYmUuCiAvLwotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRl
OjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIHRydWVCbG9j
aywgVEludGVybVR5cGVkKiBmYWxzZUJsb2NrLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRl
cm1UeXBlZCogdHJ1ZUJsb2NrLCBUSW50ZXJtVHlwZWQqIGZhbHNlQmxvY2ssIGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUpCiB7CiAgICAgLy8KICAgICAvLyBHZXQgY29tcGF0aWJsZSB0eXBlcy4KQEAg
LTY0Nyw3ICs2MzEsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlv
CiAgICAgLy8KIAogICAgIGlmIChjb25kLT5nZXRBc0NvbnN0YW50VW5pb24oKSAmJiB0cnVlQmxv
Y2stPmdldEFzQ29uc3RhbnRVbmlvbigpICYmIGZhbHNlQmxvY2stPmdldEFzQ29uc3RhbnRVbmlv
bigpKSB7Ci0gICAgICAgIGlmIChjb25kLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25B
cnJheVBvaW50ZXIoKS0+Z2V0QkNvbnN0KCkpCisgICAgICAgIGlmIChjb25kLT5nZXRBc0NvbnN0
YW50VW5pb24oKS0+Z2V0QkNvbnN0KDApKQogICAgICAgICAgICAgcmV0dXJuIHRydWVCbG9jazsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlQmxvY2s7CkBAIC02NjksNyAr
NjUzLDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3RpbwogLy8gUmV0
dXJucyB0aGUgY29uc3RhbnQgdW5pb24gbm9kZSBjcmVhdGVkLgogLy8KIAotVEludGVybUNvbnN0
YW50VW5pb24qIFRJbnRlcm1lZGlhdGU6OmFkZENvbnN0YW50VW5pb24oQ29uc3RhbnRVbmlvbiog
dW5pb25BcnJheVBvaW50ZXIsIGNvbnN0IFRUeXBlJiB0LCBUU291cmNlTG9jIGxpbmUpCitUSW50
ZXJtQ29uc3RhbnRVbmlvbiogVEludGVybWVkaWF0ZTo6YWRkQ29uc3RhbnRVbmlvbihDb25zdGFu
dFVuaW9uKiB1bmlvbkFycmF5UG9pbnRlciwgY29uc3QgVFR5cGUmIHQsIGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUpCiB7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIG5vZGUgPSBuZXcgVEludGVy
bUNvbnN0YW50VW5pb24odW5pb25BcnJheVBvaW50ZXIsIHQpOwogICAgIG5vZGUtPnNldExpbmUo
bGluZSk7CkBAIC02NzcsNyArNjYxLDcgQEAgVEludGVybUNvbnN0YW50VW5pb24qIFRJbnRlcm1l
ZGlhdGU6OmFkZAogICAgIHJldHVybiBub2RlOwogfQogCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1l
ZGlhdGU6OmFkZFN3aXp6bGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBUU291cmNlTG9jIGxpbmUp
CitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFN3aXp6bGUoVFZlY3RvckZpZWxkcyYg
ZmllbGRzLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogCiAgICAgVEludGVybUFnZ3JlZ2F0
ZSogbm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFNlcXVlbmNlKTsKQEAgLTcwMCw3ICs2
ODQsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFN3aXp6bGUoCiAvLwogLy8g
Q3JlYXRlIGxvb3Agbm9kZXMuCiAvLwotVEludGVybU5vZGUqIFRJbnRlcm1lZGlhdGU6OmFkZExv
b3AoVExvb3BUeXBlIHR5cGUsIFRJbnRlcm1Ob2RlKiBpbml0LCBUSW50ZXJtVHlwZWQqIGNvbmQs
IFRJbnRlcm1UeXBlZCogZXhwciwgVEludGVybU5vZGUqIGJvZHksIFRTb3VyY2VMb2MgbGluZSkK
K1RJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRMb29wKFRMb29wVHlwZSB0eXBlLCBUSW50
ZXJtTm9kZSogaW5pdCwgVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIGV4cHIsIFRJ
bnRlcm1Ob2RlKiBib2R5LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRlcm1O
b2RlKiBub2RlID0gbmV3IFRJbnRlcm1Mb29wKHR5cGUsIGluaXQsIGNvbmQsIGV4cHIsIGJvZHkp
OwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CkBAIC03MTEsMTIgKzY5NSwxMiBAQCBUSW50ZXJt
Tm9kZSogVEludGVybWVkaWF0ZTo6YWRkTG9vcChUTG9vCiAvLwogLy8gQWRkIGJyYW5jaGVzLgog
Ly8KLVRJbnRlcm1CcmFuY2gqIFRJbnRlcm1lZGlhdGU6OmFkZEJyYW5jaChUT3BlcmF0b3IgYnJh
bmNoT3AsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1CcmFuY2gqIFRJbnRlcm1lZGlhdGU6OmFk
ZEJyYW5jaChUT3BlcmF0b3IgYnJhbmNoT3AsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAg
ICAgcmV0dXJuIGFkZEJyYW5jaChicmFuY2hPcCwgMCwgbGluZSk7CiB9CiAKLVRJbnRlcm1CcmFu
Y2gqIFRJbnRlcm1lZGlhdGU6OmFkZEJyYW5jaChUT3BlcmF0b3IgYnJhbmNoT3AsIFRJbnRlcm1U
eXBlZCogZXhwcmVzc2lvbiwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybUJyYW5jaCogVEludGVy
bWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVyYXRvciBicmFuY2hPcCwgVEludGVybVR5cGVkKiBleHBy
ZXNzaW9uLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRlcm1CcmFuY2gqIG5v
ZGUgPSBuZXcgVEludGVybUJyYW5jaChicmFuY2hPcCwgZXhwcmVzc2lvbik7CiAgICAgbm9kZS0+
c2V0TGluZShsaW5lKTsKQEAgLTg0Niw2ICs4MzAsNyBAQCBib29sIFRJbnRlcm1VbmFyeTo6cHJv
bW90ZShUSW5mb1NpbmsmKQogICAgIH0KIAogICAgIHNldFR5cGUob3BlcmFuZC0+Z2V0VHlwZSgp
KTsKKyAgICB0eXBlLnNldFF1YWxpZmllcihFdnFUZW1wb3JhcnkpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC04NjAsNyArODQ1LDcgQEAgYm9vbCBUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKFRJ
bmZvU2luayYgaQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gb25seSBoYW5kbGVzIHNjYWxhcnMs
IHZlY3RvcnMsIGFuZCBtYXRyaWNlcy4KICAgICBpZiAobGVmdC0+aXNBcnJheSgpIHx8IHJpZ2h0
LT5pc0FycmF5KCkpIHsKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRl
cm5hbEVycm9yLCAiSW52YWxpZCBvcGVyYXRpb24gZm9yIGFycmF5cyIsIGdldExpbmUoKSk7Cisg
ICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGlu
ZSgpLCAiSW52YWxpZCBvcGVyYXRpb24gZm9yIGFycmF5cyIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC05NjUsNyArOTUwLDcgQEAgYm9vbCBUSW50ZXJtQmluYXJ5Ojpwcm9t
b3RlKFRJbmZvU2luayYgaQogICAgICAgICAgICAgICAgICAgICBzZXRUeXBlKFRUeXBlKGJhc2lj
VHlwZSwgaGlnaGVyUHJlY2lzaW9uLCBFdnFUZW1wb3JhcnksIHNpemUsIGZhbHNlKSk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpbmZv
U2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJNaXNzaW5nIGVsc2VzIiwg
Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIk1pc3NpbmcgZWxzZXMiKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAg
LTk5NCw3ICs5NzksNyBAQCBib29sIFRJbnRlcm1CaW5hcnk6OnByb21vdGUoVEluZm9TaW5rJiBp
CiAgICAgICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVj
aXNpb24sIEV2cVRlbXBvcmFyeSwgc2l6ZSwgZmFsc2UpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIk1pc3NpbmcgZWxzZXMiLCBnZXRMaW5lKCkpOworICAg
ICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwg
Z2V0TGluZSgpLCAiTWlzc2luZyBlbHNlcyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTAzNCwyMyArMTAxOSwy
MiBAQCBib29sIFRJbnRlcm1CaW5hcnk6OnByb21vdGUoVEluZm9TaW5rJiBpCiAKIGJvb2wgQ29t
cGFyZVN0cnVjdChjb25zdCBUVHlwZSYgbGVmdE5vZGVUeXBlLCBDb25zdGFudFVuaW9uKiByaWdo
dFVuaW9uQXJyYXksIENvbnN0YW50VW5pb24qIGxlZnRVbmlvbkFycmF5KQogewotICAgIGNvbnN0
IFRUeXBlTGlzdCogZmllbGRzID0gbGVmdE5vZGVUeXBlLmdldFN0cnVjdCgpOworICAgIGNvbnN0
IFRGaWVsZExpc3QmIGZpZWxkcyA9IGxlZnROb2RlVHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7
CiAKLSAgICBzaXplX3Qgc3RydWN0U2l6ZSA9IGZpZWxkcy0+c2l6ZSgpOwotICAgIGludCBpbmRl
eCA9IDA7CisgICAgc2l6ZV90IHN0cnVjdFNpemUgPSBmaWVsZHMuc2l6ZSgpOworICAgIHNpemVf
dCBpbmRleCA9IDA7CiAKICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHN0cnVjdFNpemU7IGor
KykgewotICAgICAgICBpbnQgc2l6ZSA9ICgqZmllbGRzKVtqXS50eXBlLT5nZXRPYmplY3RTaXpl
KCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAg
ICBpZiAoKCpmaWVsZHMpW2pdLnR5cGUtPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgewot
ICAgICAgICAgICAgICAgIGlmICghQ29tcGFyZVN0cnVjdHVyZSgqKCpmaWVsZHMpW2pdLnR5cGUs
ICZyaWdodFVuaW9uQXJyYXlbaW5kZXhdLCAmbGVmdFVuaW9uQXJyYXlbaW5kZXhdKSkKKyAgICAg
ICAgc2l6ZV90IHNpemUgPSBmaWVsZHNbal0tPnR5cGUoKS0+Z2V0T2JqZWN0U2l6ZSgpOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgaWYg
KGZpZWxkc1tqXS0+dHlwZSgpLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIUNvbXBhcmVTdHJ1Y3R1cmUoKihmaWVsZHNbal0tPnR5cGUoKSksICZy
aWdodFVuaW9uQXJyYXlbaW5kZXhdLCAmbGVmdFVuaW9uQXJyYXlbaW5kZXhdKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBpZiAobGVmdFVuaW9uQXJyYXlbaW5kZXhdICE9IHJpZ2h0VW5pb25BcnJheVtpbmRl
eF0pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBp
bmRleCsrOwogICAgICAgICAgICAgfQotCiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xMDYyLDEwICsxMDQ2LDEwIEBAIGJvb2wgQ29tcGFyZVN0cnVjdHVyZShjb25zdCBU
VHlwZSYgbGVmdE4KICAgICAgICAgVFR5cGUgdHlwZVdpdGhvdXRBcnJheW5lc3MgPSBsZWZ0Tm9k
ZVR5cGU7CiAgICAgICAgIHR5cGVXaXRob3V0QXJyYXluZXNzLmNsZWFyQXJyYXluZXNzKCk7CiAK
LSAgICAgICAgaW50IGFycmF5U2l6ZSA9IGxlZnROb2RlVHlwZS5nZXRBcnJheVNpemUoKTsKKyAg
ICAgICAgc2l6ZV90IGFycmF5U2l6ZSA9IGxlZnROb2RlVHlwZS5nZXRBcnJheVNpemUoKTsKIAot
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKSB7Ci0gICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gdHlwZVdpdGhvdXRBcnJheW5lc3MuZ2V0T2JqZWN0U2l6ZSgpICogaTsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkgeworICAgICAg
ICAgICAgc2l6ZV90IG9mZnNldCA9IHR5cGVXaXRob3V0QXJyYXluZXNzLmdldE9iamVjdFNpemUo
KSAqIGk7CiAgICAgICAgICAgICBpZiAoIUNvbXBhcmVTdHJ1Y3QodHlwZVdpdGhvdXRBcnJheW5l
c3MsICZyaWdodFVuaW9uQXJyYXlbb2Zmc2V0XSwgJmxlZnRVbmlvbkFycmF5W29mZnNldF0pKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTA4NSw3ICsxMDY5
LDcgQEAgYm9vbCBDb21wYXJlU3RydWN0dXJlKGNvbnN0IFRUeXBlJiBsZWZ0TgogVEludGVybVR5
cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBl
ZCogY29uc3RhbnROb2RlLCBUSW5mb1NpbmsmIGluZm9TaW5rKQogewogICAgIENvbnN0YW50VW5p
b24gKnVuaW9uQXJyYXkgPSBnZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAgIGludCBvYmplY3RT
aXplID0gZ2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKKyAgICBzaXplX3Qgb2JqZWN0U2l6ZSA9
IGdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CiAKICAgICBpZiAoY29uc3RhbnROb2RlKSB7ICAv
LyBiaW5hcnkgb3BlcmF0aW9ucwogICAgICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSA9
IGNvbnN0YW50Tm9kZS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CkBAIC0xMDk1LDEzICsxMDc5LDEz
IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgLy8g
Zm9yIGEgY2FzZSBsaWtlIGZsb2F0IGYgPSAxLjIgKyB2ZWM0KDIsMyw0LDUpOwogICAgICAgICBp
ZiAoY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpID09IDEgJiYgb2JqZWN0
U2l6ZSA+IDEpIHsKICAgICAgICAgICAgIHJpZ2h0VW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uW29iamVjdFNpemVdOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RT
aXplOyArK2kpCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7
ICsraSkKICAgICAgICAgICAgICAgICByaWdodFVuaW9uQXJyYXlbaV0gPSAqbm9kZS0+Z2V0VW5p
b25BcnJheVBvaW50ZXIoKTsKICAgICAgICAgICAgIHJldHVyblR5cGUgPSBnZXRUeXBlKCk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgp
ID4gMSAmJiBvYmplY3RTaXplID09IDEpIHsKICAgICAgICAgICAgIC8vIGZvciBhIGNhc2UgbGlr
ZSBmbG9hdCBmID0gdmVjNCgyLDMsNCw1KSArIDEuMjsKICAgICAgICAgICAgIHVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvbltjb25zdGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXpl
KCldOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb25zdGFudE5vZGUtPmdldFR5
cGUoKS5nZXRPYmplY3RTaXplKCk7ICsraSkKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOyArK2kpCiAgICAg
ICAgICAgICAgICAgdW5pb25BcnJheVtpXSA9ICpnZXRVbmlvbkFycmF5UG9pbnRlcigpOwogICAg
ICAgICAgICAgcmV0dXJuVHlwZSA9IG5vZGUtPmdldFR5cGUoKTsKICAgICAgICAgICAgIG9iamVj
dFNpemUgPSBjb25zdGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CkBAIC0xMTE1
LDE0ICsxMDk5LDE0IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQK
ICAgICAgICAgICAgIGNhc2UgRU9wQWRkOgogICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5
ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgey8vIHN1
cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
b2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFy
cmF5W2ldID0gdW5pb25BcnJheVtpXSArIHJpZ2h0VW5pb25BcnJheVtpXTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEVPcFN1YjoK
ICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVj
dFNpemVdOwogICAgICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAg
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gLSBy
aWdodFVuaW9uQXJyYXlbaV07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTEzMiwxMyArMTExNiwxMyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFu
dFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFyOgogICAg
ICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6
ZV07CiAgICAgICAgICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldID0gdW5pb25BcnJheVtpXSAqIHJpZ2h0
VW5pb25BcnJheVtpXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4OgogICAgICAgICAgICAgICAg
IGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0RmxvYXQgfHwgbm9kZS0+Z2V0QmFz
aWNUeXBlKCkgIT0gRWJ0RmxvYXQpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQ29uc3RhbnQgRm9sZGluZyBjYW5ub3Qg
YmUgZG9uZSBmb3IgbWF0cml4IG11bHRpcGx5IiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5l
KCksICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciBtYXRyaXggbXVsdGlwbHki
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMApAQCAtMTE1NywxMSArMTE0MSwxMSBA
QCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICBj
YXNlIEVPcERpdjoKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFu
dFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYu
MAotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkr
KykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNp
emU7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0
QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAg
ICAgaWYgKHJpZ2h0VW5pb25BcnJheVtpXSA9PSAwLjBmKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4V2FybmluZywgIkRpdmlkZSBieSB6ZXJvIGVy
cm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhXYXJuaW5nLCBnZXRMaW5lKCksICJE
aXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9sZGluZyIpOwogICAgICAgICAg
ICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRGQ29uc3QodW5pb25BcnJheVtpXS5nZXRG
Q29uc3QoKSA8IDAgPyAtRkxUX01BWCA6IEZMVF9NQVgpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRGQ29uc3QodW5pb25B
cnJheVtpXS5nZXRGQ29uc3QoKSAvIHJpZ2h0VW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSk7CkBA
IC0xMTY5LDEzICsxMTUzLDEzIEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246
OmZvbGQKIAogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAgICAgICAgICAgICAgaWYgKHJp
Z2h0VW5pb25BcnJheVtpXSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4V2FybmluZywgIkRpdmlkZSBieSB6ZXJvIGVycm9yIGR1cmluZyBj
b25zdGFudCBmb2xkaW5nIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhXYXJuaW5nLCBnZXRMaW5lKCksICJEaXZpZGUgYnkgemVy
byBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9sZGluZyIpOwogICAgICAgICAgICAgICAgICAgICB0
ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3QoSU5UX01BWCk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldElDb25zdCh1bmlv
bkFycmF5W2ldLmdldElDb25zdCgpIC8gcmlnaHRVbmlvbkFycmF5W2ldLmdldElDb25zdCgpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQ29uc3Rh
bnQgZm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgXCIvXCIiLCBnZXRMaW5lKCkpOworICAgICAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0
TGluZSgpLCAiQ29uc3RhbnQgZm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgXCIvXCIiKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMTE4NCw3ICsxMTY4LDcgQEAgVEludGVybVR5cGVkKiBUSW50
ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogCiAgICAgICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVz
VmVjdG9yOgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRG
bG9hdCkgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciBtYXRy
aXggdGltZXMgdmVjdG9yIiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJDb25zdGFu
dCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciBtYXRyaXggdGltZXMgdmVjdG9yIik7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW2dldE5vbWluYWxTaXplKCld
OwpAQCAtMTIwNSw3ICsxMTg5LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlv
bjo6Zm9sZAogCiAgICAgICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4OgogICAgICAg
ICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0RmxvYXQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVy
cm9yLCAiQ29uc3RhbnQgRm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgdmVjdG9yIHRpbWVzIG1h
dHJpeCIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiQ29uc3RhbnQgRm9sZGluZyBj
YW5ub3QgYmUgZG9uZSBmb3IgdmVjdG9yIHRpbWVzIG1hdHJpeCIpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTEyMjMsNyArMTIwNyw3IEBA
IFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgIGNh
c2UgRU9wTG9naWNhbEFuZDogLy8gdGhpcyBjb2RlIGlzIHdyaXR0ZW4gZm9yIHBvc3NpYmxlIGZ1
dHVyZSB1c2UsIHdpbGwgbm90IGdldCBleGVjdXRlZCBjdXJyZW50bHkKICAgICAgICAgICAgICAg
ICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAg
ICAgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gJiYgcmlnaHRVbmlvbkFycmF5
W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyMzEs
NyArMTIxNSw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAg
ICAgICAgICAgIGNhc2UgRU9wTG9naWNhbE9yOiAvLyB0aGlzIGNvZGUgaXMgd3JpdHRlbiBmb3Ig
cG9zc2libGUgZnV0dXJlIHVzZSwgd2lsbCBub3QgZ2V0IGV4ZWN1dGVkIGN1cnJlbnRseQogICAg
ICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6
ZV07CiAgICAgICAgICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldID0gdW5pb25BcnJheVtpXSB8fCByaWdo
dFVuaW9uQXJyYXlbaV07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTIzOSw3ICsxMjIzLDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlv
bjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsWG9yOgogICAgICAgICAgICAgICAg
IHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAg
ICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICAgICAg
ICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNl
IEVidEJvb2w6IHRlbXBDb25zdEFycmF5W2ldLnNldEJDb25zdCgodW5pb25BcnJheVtpXSA9PSBy
aWdodFVuaW9uQXJyYXlbaV0pID8gZmFsc2UgOiB0cnVlKTsgYnJlYWs7CiAgICAgICAgICAgICBk
ZWZhdWx0OiBhc3NlcnQoZmFsc2UgJiYgIkRlZmF1bHQgbWlzc2luZyIpOwpAQCAtMTI4NSw3ICsx
MjY5LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAg
ICAgICAgICAgICAgICBpZiAoIUNvbXBhcmVTdHJ1Y3R1cmUobm9kZS0+Z2V0VHlwZSgpLCBub2Rl
LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLCB1bmlvbkFycmF5KSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2xOb2RlRmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspIHsK
KyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBp
KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmlvbkFycmF5W2ldICE9IHJpZ2h0
VW5pb25BcnJheVtpXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xOb2RlRmxh
ZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAvLyBicmVhayBv
dXQgb2YgZm9yIGxvb3AKQEAgLTEzMTEsNyArMTI5NSw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVy
bUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgICAgICAgICAgaWYgKENvbXBhcmVTdHJ1
Y3R1cmUobm9kZS0+Z2V0VHlwZSgpLCBub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLCB1bmlv
bkFycmF5KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xOb2RlRmxhZyA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBvYmplY3RTaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh1bmlvbkFycmF5W2ldID09IHJpZ2h0VW5pb25BcnJheVtpXSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2xOb2RlRmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7ICAvLyBicmVhayBvdXQgb2YgZm9yIGxvb3AKQEAgLTEzMzMsNyArMTMx
Nyw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAg
ICAgICAgICByZXR1cm4gdGVtcE5vZGU7CiAKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiSW52
YWxpZCBvcGVyYXRvciBmb3IgY29uc3RhbnQgZm9sZGluZyIsIGdldExpbmUoKSk7CisgICAgICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRM
aW5lKCksICJJbnZhbGlkIG9wZXJhdG9yIGZvciBjb25zdGFudCBmb2xkaW5nIik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgdGVtcE5vZGUgPSBuZXcgVElu
dGVybUNvbnN0YW50VW5pb24odGVtcENvbnN0QXJyYXksIHJldHVyblR5cGUpOwpAQCAtMTM0Niwx
NCArMTMzMCwxNCBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAg
ICAgICAgIC8vCiAgICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpuZXdOb2RlID0gMDsKICAg
ICAgICAgQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltv
YmplY3RTaXplXTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKysp
IHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspIHsKICAg
ICAgICAgICAgIHN3aXRjaChvcCkgewogICAgICAgICAgICAgICAgIGNhc2UgRU9wTmVnYXRpdmU6
CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OiB0ZW1wQ29uc3RBcnJheVtp
XS5zZXRGQ29uc3QoLXVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkpOyBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OiAgIHRlbXBDb25zdEFycmF5W2ldLnNldElDb25z
dCgtdW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSk7IGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRl
ZCBpbnRvIGNvbnN0YW50IiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwg
IlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTEzNjEsNyArMTM0NSw3IEBAIFRJbnRlcm1UeXBlZCog
VEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChn
ZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0Qm9vbDogIHRlbXBDb25zdEFycmF5W2ldLnNldEJDb25zdCghdW5pb25BcnJheVtpXS5nZXRC
Q29uc3QoKSk7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50IiwgZ2V0
TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3Nh
Z2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIlVuYXJ5IG9wZXJhdGlvbiBub3Qg
Zm9sZGVkIGludG8gY29uc3RhbnQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTEzNzcsNjUgKzEzNjEsNjQgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlv
bjo6Zm9sZAogCiBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OnByb21vdGVDb25zdGFudFVu
aW9uKFRCYXNpY1R5cGUgcHJvbW90ZVRvLCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsK
LSAgICBDb25zdGFudFVuaW9uICpyaWdodFVuaW9uQXJyYXkgPSBub2RlLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpOwotICAgIGludCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUo
KTsKKyAgICBzaXplX3Qgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CiAK
ICAgICBDb25zdGFudFVuaW9uICpsZWZ0VW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW3Np
emVdOwogCi0gICAgZm9yIChpbnQgaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKIAogICAgICAgICBzd2l0Y2ggKHByb21vdGVUbykg
ewogICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5v
ZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNl
IEVidEludDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZD
b25zdChzdGF0aWNfY2FzdDxmbG9hdD4ocmlnaHRVbmlvbkFycmF5W2ldLmdldElDb25zdCgpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG5vZGUtPmdldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KGkpKSkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZD
b25zdChzdGF0aWNfY2FzdDxmbG9hdD4ocmlnaHRVbmlvbkFycmF5W2ldLmdldEJDb25zdCgpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRGQ29uc3Qoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG5vZGUtPmdldEJDb25zdChzdGF0aWNfY2FzdDxib29sPihpKSkpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNl
IEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0gPSBy
aWdodFVuaW9uQXJyYXlbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJh
eVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vZGUtPmdldEZDb25zdChzdGF0aWNf
Y2FzdDxmbG9hdD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNhbm5vdCBwcm9tb3RlIiwgbm9k
ZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQ2Fubm90IHByb21v
dGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgogICAg
ICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAgICAgICAg
bGVmdFVuaW9uQXJyYXlbaV0gPSByaWdodFVuaW9uQXJyYXlbaV07CisgICAgICAgICAgICAgICAg
ICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2Rl
LT5nZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50PihpKSkpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50
PihyaWdodFVuaW9uQXJyYXlbaV0uZ2V0QkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmdl
dEJDb25zdChzdGF0aWNfY2FzdDxib29sPihpKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4o
cmlnaHRVbmlvbkFycmF5W2ldLmdldEZDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2RlLT5nZXRG
Q29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDYW5ub3Qg
cHJvbW90ZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZv
U2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwg
IkNhbm5vdCBwcm9tb3RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IEVidEJvb2w6CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRUeXBlKCkuZ2V0QmFz
aWNUeXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3QocmlnaHRVbmlvbkFycmF5
W2ldLmdldElDb25zdCgpICE9IDApOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9u
QXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUtPmdldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KGkpKSAh
PSAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtp
XSA9IHJpZ2h0VW5pb25BcnJheVtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlv
bkFycmF5W2ldLnNldEJDb25zdChub2RlLT5nZXRCQ29uc3Qoc3RhdGljX2Nhc3Q8Ym9vbD4oaSkp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBj
YXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0u
c2V0QkNvbnN0KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSAhPSAwLjBmKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChub2RlLT5nZXRG
Q29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkpKSAhPSAwLjBmKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAi
Q2Fubm90IHByb21vdGUiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRM
aW5lKCksICJDYW5ub3QgcHJvbW90ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJl
Zml4SW50ZXJuYWxFcnJvciwgIkluY29ycmVjdCBkYXRhIHR5cGUgZm91bmQiLCBub2RlLT5nZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50
ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiSW5jb3JyZWN0IGRhdGEgdHlwZSBmb3VuZCIp
OwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAJKHJl
dmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9P
dXRwdXRHTFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksMyArMTksMTcgQEAgYm9vbCBUT3V0
cHV0R0xTTDo6d3JpdGVWYXJpYWJsZVByZWNpc2lvbgogewogICAgIHJldHVybiBmYWxzZTsKIH0K
Kwordm9pZCBUT3V0cHV0R0xTTDo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCogbm9kZSkKK3sK
KyAgICBUSW5mb1NpbmtCYXNlJiBvdXQgPSBvYmpTaW5rKCk7CisKKyAgICBpZiAobm9kZS0+Z2V0
U3ltYm9sKCkgPT0gImdsX0ZyYWdEZXB0aEVYVCIpCisgICAgeworICAgICAgICBvdXQgPDwgImds
X0ZyYWdEZXB0aCI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIFRPdXRwdXRHTFNM
QmFzZTo6dmlzaXRTeW1ib2wobm9kZSk7CisgICAgfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oCShyZXZpc2lvbiAxNTI5
NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgYm9vbCB3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKFRQcmVjaXNpb24pOworICAg
IHZpcnR1YWwgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKiBub2RlKTsKIH07CiAKICNl
bmRpZiAgLy8gQ1JPU1NDT01QSUxFUkdMU0xfT1VUUFVUR0xTTF9IXwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2Uu
Y3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSwyNSArNzksOSBA
QCB2b2lkIFRPdXRwdXRHTFNMQmFzZTo6d3JpdGVWYXJpYWJsZVR5cGUoCiAgICAgaWYgKChxdWFs
aWZpZXIgIT0gRXZxVGVtcG9yYXJ5KSAmJiAocXVhbGlmaWVyICE9IEV2cUdsb2JhbCkpCiAgICAg
ICAgIG91dCA8PCB0eXBlLmdldFF1YWxpZmllclN0cmluZygpIDw8ICIgIjsKICAgICAvLyBEZWNs
YXJlIHRoZSBzdHJ1Y3QgaWYgd2UgaGF2ZSBub3QgZG9uZSBzbyBhbHJlYWR5LgotICAgIGlmICgo
dHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpICYmCi0gICAgICAgIChtRGVjbGFyZWRT
dHJ1Y3RzLmZpbmQodHlwZS5nZXRUeXBlTmFtZSgpKSA9PSBtRGVjbGFyZWRTdHJ1Y3RzLmVuZCgp
KSkKKyAgICBpZiAoKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSAmJiAhc3RydWN0
RGVjbGFyZWQodHlwZS5nZXRTdHJ1Y3QoKSkpCiAgICAgewotICAgICAgICBvdXQgPDwgInN0cnVj
dCAiIDw8IGhhc2hOYW1lKHR5cGUuZ2V0VHlwZU5hbWUoKSkgPDwgIntcbiI7Ci0gICAgICAgIGNv
bnN0IFRUeXBlTGlzdCogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKLSAgICAgICAgQVNT
RVJUKHN0cnVjdHVyZSAhPSBOVUxMKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
dHJ1Y3R1cmUtPnNpemUoKTsgKytpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBUVHlw
ZSogZmllbGRUeXBlID0gKCpzdHJ1Y3R1cmUpW2ldLnR5cGU7Ci0gICAgICAgICAgICBBU1NFUlQo
ZmllbGRUeXBlICE9IE5VTEwpOwotICAgICAgICAgICAgaWYgKHdyaXRlVmFyaWFibGVQcmVjaXNp
b24oZmllbGRUeXBlLT5nZXRQcmVjaXNpb24oKSkpCi0gICAgICAgICAgICAgICAgb3V0IDw8ICIg
IjsKLSAgICAgICAgICAgIG91dCA8PCBnZXRUeXBlTmFtZSgqZmllbGRUeXBlKSA8PCAiICIgPDwg
aGFzaE5hbWUoZmllbGRUeXBlLT5nZXRGaWVsZE5hbWUoKSk7Ci0gICAgICAgICAgICBpZiAoZmll
bGRUeXBlLT5pc0FycmF5KCkpCi0gICAgICAgICAgICAgICAgb3V0IDw8IGFycmF5QnJhY2tldHMo
KmZpZWxkVHlwZSk7Ci0gICAgICAgICAgICBvdXQgPDwgIjtcbiI7Ci0gICAgICAgIH0KLSAgICAg
ICAgb3V0IDw8ICJ9IjsKLSAgICAgICAgbURlY2xhcmVkU3RydWN0cy5pbnNlcnQodHlwZS5nZXRU
eXBlTmFtZSgpKTsKKyAgICAgICAgZGVjbGFyZVN0cnVjdCh0eXBlLmdldFN0cnVjdCgpKTsKICAg
ICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTEzOCwyNCArMTIyLDI1IEBAIGNvbnN0IENvbnN0YW50
VW5pb24qIFRPdXRwdXRHTFNMQmFzZTo6d3IKIAogICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgp
ID09IEVidFN0cnVjdCkKICAgICB7Ci0gICAgICAgIG91dCA8PCBoYXNoTmFtZSh0eXBlLmdldFR5
cGVOYW1lKCkpIDw8ICIoIjsKLSAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBzdHJ1Y3R1cmUgPSB0
eXBlLmdldFN0cnVjdCgpOwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlICE9IE5VTEwpOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpCisgICAg
ICAgIGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7CisgICAg
ICAgIG91dCA8PCBoYXNoTmFtZShzdHJ1Y3R1cmUtPm5hbWUoKSkgPDwgIigiOworCisgICAgICAg
IGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHN0cnVjdHVyZS0+ZmllbGRzKCk7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb25zdCBUVHlwZSogZmllbGRUeXBlID0gKCpzdHJ1Y3R1cmUpW2ldLnR5cGU7
CisgICAgICAgICAgICBjb25zdCBUVHlwZSogZmllbGRUeXBlID0gZmllbGRzW2ldLT50eXBlKCk7
CiAgICAgICAgICAgICBBU1NFUlQoZmllbGRUeXBlICE9IE5VTEwpOwogICAgICAgICAgICAgcENv
bnN0VW5pb24gPSB3cml0ZUNvbnN0YW50VW5pb24oKmZpZWxkVHlwZSwgcENvbnN0VW5pb24pOwot
ICAgICAgICAgICAgaWYgKGkgIT0gc3RydWN0dXJlLT5zaXplKCkgLSAxKSBvdXQgPDwgIiwgIjsK
KyAgICAgICAgICAgIGlmIChpICE9IGZpZWxkcy5zaXplKCkgLSAxKSBvdXQgPDwgIiwgIjsKICAg
ICAgICAgfQogICAgICAgICBvdXQgPDwgIikiOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAg
ICAgICBpbnQgc2l6ZSA9IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICBzaXplX3Qgc2l6
ZSA9IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwogICAgICAgICBib29sIHdyaXRlVHlwZSA9IHNpemUg
PiAxOwogICAgICAgICBpZiAod3JpdGVUeXBlKSBvdXQgPDwgZ2V0VHlwZU5hbWUodHlwZSkgPDwg
IigiOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSwgKytwQ29uc3RVbmlv
bikKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2ksICsrcENvbnN0VW5p
b24pCiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaCAocENvbnN0VW5pb24tPmdldFR5cGUo
KSkKICAgICAgICAgICAgIHsKQEAgLTI2MCwxMiArMjQ1LDE4IEBAIGJvb2wgVE91dHB1dEdMU0xC
YXNlOjp2aXNpdEJpbmFyeShWaXNpdCAKICAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVj
dDoKICAgICAgICAgICAgIGlmICh2aXNpdCA9PSBJblZpc2l0KQogICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIC8vIEhlcmUgd2UgYXJlIHdyaXRpbmcgb3V0ICJmb28uYmFyIiwgd2hlcmUg
ImZvbyIgaXMgc3RydWN0CisgICAgICAgICAgICAgICAgLy8gYW5kICJiYXIiIGlzIGZpZWxkLiBJ
biBBU1QsIGl0IGlzIHJlcHJlc2VudGVkIGFzIGEgYmluYXJ5CisgICAgICAgICAgICAgICAgLy8g
bm9kZSwgd2hlcmUgbGVmdCBjaGlsZCByZXByZXNlbnRzICJmb28iIGFuZCByaWdodCBjaGlsZCAi
YmFyIi4KKyAgICAgICAgICAgICAgICAvLyBUaGUgbm9kZSBpdHNlbGYgcmVwcmVzZW50cyAiLiIu
IFRoZSBzdHJ1Y3QgZmllbGQgImJhciIgaXMKKyAgICAgICAgICAgICAgICAvLyBhY3R1YWxseSBz
dG9yZWQgYXMgYW4gaW5kZXggaW50byBUU3RydWN0dXJlOjpmaWVsZHMuCiAgICAgICAgICAgICAg
ICAgb3V0IDw8ICIuIjsKLSAgICAgICAgICAgICAgICAvLyBUT0RPKGFsb2twKTogQVNTRVJUCi0g
ICAgICAgICAgICAgICAgVFN0cmluZyBmaWVsZE5hbWUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0Rmll
bGROYW1lKCk7CisgICAgICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlID0g
bm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7CisgICAgICAgICAgICAgICAg
Y29uc3QgVEludGVybUNvbnN0YW50VW5pb24qIGluZGV4ID0gbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0
QXNDb25zdGFudFVuaW9uKCk7CisgICAgICAgICAgICAgICAgY29uc3QgVEZpZWxkKiBmaWVsZCA9
IHN0cnVjdHVyZS0+ZmllbGRzKClbaW5kZXgtPmdldElDb25zdCgwKV07CiAKLSAgICAgICAgICAg
ICAgICBjb25zdCBUVHlwZSYgc3RydWN0VHlwZSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgp
OwotICAgICAgICAgICAgICAgIGlmICghbVN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKHN0cnVjdFR5
cGUuZ2V0VHlwZU5hbWUoKSkpCisgICAgICAgICAgICAgICAgVFN0cmluZyBmaWVsZE5hbWUgPSBm
aWVsZC0+bmFtZSgpOworICAgICAgICAgICAgICAgIGlmICghbVN5bWJvbFRhYmxlLmZpbmRCdWls
dEluKHN0cnVjdHVyZS0+bmFtZSgpKSkKICAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lID0g
aGFzaE5hbWUoZmllbGROYW1lKTsKIAogICAgICAgICAgICAgICAgIG91dCA8PCBmaWVsZE5hbWU7
CkBAIC01OTYsNyArNTg3LDcgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QWdncmVnYXRl
KFZpcwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlJiB0eXBlID0g
bm9kZS0+Z2V0VHlwZSgpOwogICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmdldEJhc2ljVHlw
ZSgpID09IEVidFN0cnVjdCk7Ci0gICAgICAgICAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5cGUu
Z2V0VHlwZU5hbWUoKSkgPDwgIigiOworICAgICAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0
eXBlLmdldFN0cnVjdCgpLT5uYW1lKCkpIDw8ICIoIjsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGVsc2UgaWYgKHZpc2l0ID09IEluVmlzaXQpCiAgICAgICAgICAgICB7CkBAIC03NjUsNyAr
NzU2LDcgQEAgVFN0cmluZyBUT3V0cHV0R0xTTEJhc2U6OmdldFR5cGVOYW1lKGNvbgogICAgIGVs
c2UKICAgICB7CiAgICAgICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkK
LSAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0eXBlLmdldFR5cGVOYW1lKCkpOworICAgICAg
ICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5cGUuZ2V0U3RydWN0KCktPm5hbWUoKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG91dCA8PCB0eXBlLmdldEJhc2ljU3RyaW5nKCk7CiAgICAgfQpA
QCAtNzk4LDMgKzc4OSwyOSBAQCBUU3RyaW5nIFRPdXRwdXRHTFNMQmFzZTo6aGFzaEZ1bmN0aW9u
TmFtCiAgICAgICAgIHJldHVybiBuYW1lOwogICAgIHJldHVybiBoYXNoTmFtZShuYW1lKTsKIH0K
KworYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnN0cnVjdERlY2xhcmVkKGNvbnN0IFRTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbURlY2xhcmVkU3RydWN0cy5maW5kKHN0
cnVjdHVyZS0+bmFtZSgpKSAhPSBtRGVjbGFyZWRTdHJ1Y3RzLmVuZCgpOworfQorCit2b2lkIFRP
dXRwdXRHTFNMQmFzZTo6ZGVjbGFyZVN0cnVjdChjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
Cit7CisgICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gb2JqU2luaygpOworCisgICAgb3V0IDw8ICJz
dHJ1Y3QgIiA8PCBoYXNoTmFtZShzdHJ1Y3R1cmUtPm5hbWUoKSkgPDwgIntcbiI7CisgICAgY29u
c3QgVEZpZWxkTGlzdCYgZmllbGRzID0gc3RydWN0dXJlLT5maWVsZHMoKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIGNvbnN0
IFRGaWVsZCogZmllbGQgPSBmaWVsZHNbaV07CisgICAgICAgIGlmICh3cml0ZVZhcmlhYmxlUHJl
Y2lzaW9uKGZpZWxkLT50eXBlKCktPmdldFByZWNpc2lvbigpKSkKKyAgICAgICAgICAgIG91dCA8
PCAiICI7CisgICAgICAgIG91dCA8PCBnZXRUeXBlTmFtZSgqZmllbGQtPnR5cGUoKSkgPDwgIiAi
IDw8IGhhc2hOYW1lKGZpZWxkLT5uYW1lKCkpOworICAgICAgICBpZiAoZmllbGQtPnR5cGUoKS0+
aXNBcnJheSgpKQorICAgICAgICAgICAgb3V0IDw8IGFycmF5QnJhY2tldHMoKmZpZWxkLT50eXBl
KCkpOworICAgICAgICBvdXQgPDwgIjtcbiI7CisgICAgfQorICAgIG91dCA8PCAifSI7CisKKyAg
ICBtRGVjbGFyZWRTdHJ1Y3RzLmluc2VydChzdHJ1Y3R1cmUtPm5hbWUoKSk7Cit9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xT
TEJhc2UuaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDkg
QEAgcHJvdGVjdGVkOgogICAgIFRTdHJpbmcgaGFzaEZ1bmN0aW9uTmFtZShjb25zdCBUU3RyaW5n
JiBtYW5nbGVkX25hbWUpOwogCiBwcml2YXRlOgorICAgIGJvb2wgc3RydWN0RGVjbGFyZWQoY29u
c3QgVFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdDsKKyAgICB2b2lkIGRlY2xhcmVTdHJ1Y3Qo
Y29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlKTsKKwogICAgIFRJbmZvU2lua0Jhc2UmIG1PYmpT
aW5rOwogICAgIGJvb2wgbURlY2xhcmluZ1ZhcmlhYmxlczsKIApJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcAkocmV2aXNp
b24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1
dEhMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0yNyw3ICsyNyw4IEBAIFRTdHJpbmcgc3RyKGludCBp
KQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLU91dHB1dEhMU0w6Ok91dHB1dEhMU0woVFBhcnNl
Q29udGV4dCAmY29udGV4dCkgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIHRydWUsIHRydWUpLCBt
Q29udGV4dChjb250ZXh0KQorT3V0cHV0SExTTDo6T3V0cHV0SExTTChUUGFyc2VDb250ZXh0ICZj
b250ZXh0LCBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcywgU2hTaGFkZXJPdXRw
dXQgb3V0cHV0VHlwZSkKKyAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgdHJ1ZSwgdHJ1ZSks
IG1Db250ZXh0KGNvbnRleHQpLCBtT3V0cHV0VHlwZShvdXRwdXRUeXBlKQogewogICAgIG1VbmZv
bGRTaG9ydENpcmN1aXQgPSBuZXcgVW5mb2xkU2hvcnRDaXJjdWl0KGNvbnRleHQsIHRoaXMpOwog
ICAgIG1JbnNpZGVGdW5jdGlvbiA9IGZhbHNlOwpAQCAtNDcsMTEgKzQ4LDE0IEBAIE91dHB1dEhM
U0w6Ok91dHB1dEhMU0woVFBhcnNlQ29udGV4dCAmY28KICAgICBtVXNlc1RleHR1cmUyRFByb2pM
b2QwX2JpYXMgPSBmYWxzZTsKICAgICBtVXNlc1RleHR1cmVDdWJlTG9kMCA9IGZhbHNlOwogICAg
IG1Vc2VzVGV4dHVyZUN1YmVMb2QwX2JpYXMgPSBmYWxzZTsKKyAgICBtVXNlc0ZyYWdDb2xvciA9
IGZhbHNlOworICAgIG1Vc2VzRnJhZ0RhdGEgPSBmYWxzZTsKICAgICBtVXNlc0RlcHRoUmFuZ2Ug
PSBmYWxzZTsKICAgICBtVXNlc0ZyYWdDb29yZCA9IGZhbHNlOwogICAgIG1Vc2VzUG9pbnRDb29y
ZCA9IGZhbHNlOwogICAgIG1Vc2VzRnJvbnRGYWNpbmcgPSBmYWxzZTsKICAgICBtVXNlc1BvaW50
U2l6ZSA9IGZhbHNlOworICAgIG1Vc2VzRnJhZ0RlcHRoID0gZmFsc2U7CiAgICAgbVVzZXNYb3Ig
PSBmYWxzZTsKICAgICBtVXNlc01vZDEgPSBmYWxzZTsKICAgICBtVXNlc01vZDJ2ID0gZmFsc2U7
CkBAIC04MSw2ICs4NSw4IEBAIE91dHB1dEhMU0w6Ok91dHB1dEhMU0woVFBhcnNlQ29udGV4dCAm
Y28KICAgICBtVXNlc0F0YW4yXzMgPSBmYWxzZTsKICAgICBtVXNlc0F0YW4yXzQgPSBmYWxzZTsK
IAorICAgIG1OdW1SZW5kZXJUYXJnZXRzID0gcmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMgPyBy
ZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgOiAxOworCiAgICAgbVNjb3BlRGVwdGggPSAwOwogCiAg
ICAgbVVuaXF1ZUluZGV4ID0gMDsKQEAgLTkwLDYgKzk2LDI0IEBAIE91dHB1dEhMU0w6Ok91dHB1
dEhMU0woVFBhcnNlQ29udGV4dCAmY28KICAgICBtSW5zaWRlRGlzY29udGludW91c0xvb3AgPSBm
YWxzZTsKIAogICAgIG1FeGNlc3NpdmVMb29wSW5kZXggPSBOVUxMOworCisgICAgaWYgKG1PdXRw
dXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICB7CisgICAgICAgIGlmIChtQ29udGV4dC5z
aGFkZXJUeXBlID09IFNIX0ZSQUdNRU5UX1NIQURFUikKKyAgICAgICAgeworICAgICAgICAgICAg
bVVuaWZvcm1SZWdpc3RlciA9IDM7ICAgLy8gUmVzZXJ2ZSByZWdpc3RlcnMgZm9yIGR4X0RlcHRo
UmFuZ2UsIGR4X1ZpZXdDb29yZHMgYW5kIGR4X0RlcHRoRnJvbnQKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1Vbmlmb3JtUmVnaXN0ZXIgPSAyOyAgIC8v
IFJlc2VydmUgcmVnaXN0ZXJzIGZvciBkeF9EZXB0aFJhbmdlIGFuZCBkeF9WaWV3QWRqdXN0Cisg
ICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbVVuaWZvcm1SZWdpc3Rl
ciA9IDA7CisgICAgfQorCisgICAgbVNhbXBsZXJSZWdpc3RlciA9IDA7CiB9CiAKIE91dHB1dEhM
U0w6On5PdXRwdXRITFNMKCkKQEAgLTExMyw2ICsxMzcsMTEgQEAgVEluZm9TaW5rQmFzZSAmT3V0
cHV0SExTTDo6Z2V0Qm9keVN0cmVhbQogICAgIHJldHVybiBtQm9keTsKIH0KIAorY29uc3QgQWN0
aXZlVW5pZm9ybXMgJk91dHB1dEhMU0w6OmdldFVuaWZvcm1zKCkKK3sKKyAgICByZXR1cm4gbUFj
dGl2ZVVuaWZvcm1zOworfQorCiBpbnQgT3V0cHV0SExTTDo6dmVjdG9yU2l6ZShjb25zdCBUVHlw
ZSAmdHlwZSkgY29uc3QKIHsKICAgICBpbnQgZWxlbWVudFNpemUgPSB0eXBlLmlzTWF0cml4KCkg
PyB0eXBlLmdldE5vbWluYWxTaXplKCkgOiAxOwpAQCAtMTM2LDU4ICsxNjUsNzYgQEAgdm9pZCBP
dXRwdXRITFNMOjpoZWFkZXIoKQogICAgICAgICBvdXQgPDwgKmNvbnN0cnVjdG9yOwogICAgIH0K
IAotICAgIGlmIChzaGFkZXJUeXBlID09IFNIX0ZSQUdNRU5UX1NIQURFUikKKyAgICBUU3RyaW5n
IHVuaWZvcm1zOworICAgIFRTdHJpbmcgdmFyeWluZ3M7CisgICAgVFN0cmluZyBhdHRyaWJ1dGVz
OworCisgICAgZm9yIChSZWZlcmVuY2VkU3ltYm9sczo6Y29uc3RfaXRlcmF0b3IgdW5pZm9ybSA9
IG1SZWZlcmVuY2VkVW5pZm9ybXMuYmVnaW4oKTsgdW5pZm9ybSAhPSBtUmVmZXJlbmNlZFVuaWZv
cm1zLmVuZCgpOyB1bmlmb3JtKyspCiAgICAgewotICAgICAgICBUU3RyaW5nIHVuaWZvcm1zOwot
ICAgICAgICBUU3RyaW5nIHZhcnlpbmdzOworICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSA9IHVu
aWZvcm0tPnNlY29uZC0+Z2V0VHlwZSgpOworICAgICAgICBjb25zdCBUU3RyaW5nICZuYW1lID0g
dW5pZm9ybS0+c2Vjb25kLT5nZXRTeW1ib2woKTsKIAotICAgICAgICBUU3ltYm9sVGFibGVMZXZl
bCAqc3ltYm9scyA9IG1Db250ZXh0LnN5bWJvbFRhYmxlLmdldEdsb2JhbExldmVsKCk7Ci0gICAg
ICAgIGludCBzZW1hbnRpY0luZGV4ID0gMDsKKyAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNI
X0hMU0wxMV9PVVRQVVQgJiYgSXNTYW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKSAgIC8vIEFs
c28gZGVjbGFyZSB0aGUgdGV4dHVyZQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgaW5kZXgg
PSBzYW1wbGVyUmVnaXN0ZXIobVJlZmVyZW5jZWRVbmlmb3Jtc1tuYW1lXSk7CiAKLSAgICAgICAg
Zm9yIChUU3ltYm9sVGFibGVMZXZlbDo6Y29uc3RfaXRlcmF0b3IgbmFtZWRTeW1ib2wgPSBzeW1i
b2xzLT5iZWdpbigpOyBuYW1lZFN5bWJvbCAhPSBzeW1ib2xzLT5lbmQoKTsgbmFtZWRTeW1ib2wr
KykKKyAgICAgICAgICAgIHVuaWZvcm1zICs9ICJ1bmlmb3JtIFNhbXBsZXJTdGF0ZSBzYW1wbGVy
XyIgKyBkZWNvcmF0ZVVuaWZvcm0obmFtZSwgdHlwZSkgKyBhcnJheVN0cmluZyh0eXBlKSArIAor
ICAgICAgICAgICAgICAgICAgICAgICAgIiA6IHJlZ2lzdGVyKHMiICsgc3RyKGluZGV4KSArICIp
O1xuIjsKKworICAgICAgICAgICAgdW5pZm9ybXMgKz0gInVuaWZvcm0gIiArIHRleHR1cmVTdHJp
bmcodHlwZSkgKyAiIHRleHR1cmVfIiArIGRlY29yYXRlVW5pZm9ybShuYW1lLCB0eXBlKSArIGFy
cmF5U3RyaW5nKHR5cGUpICsgCisgICAgICAgICAgICAgICAgICAgICAgICAiIDogcmVnaXN0ZXIo
dCIgKyBzdHIoaW5kZXgpICsgIik7XG4iOworICAgICAgICB9CisgICAgICAgIGVsc2UKICAgICAg
ICAgewotICAgICAgICAgICAgY29uc3QgVFN5bWJvbCAqc3ltYm9sID0gKCpuYW1lZFN5bWJvbCku
c2Vjb25kOwotICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmbmFtZSA9IHN5bWJvbC0+Z2V0TmFt
ZSgpOworICAgICAgICAgICAgdW5pZm9ybXMgKz0gInVuaWZvcm0gIiArIHR5cGVTdHJpbmcodHlw
ZSkgKyAiICIgKyBkZWNvcmF0ZVVuaWZvcm0obmFtZSwgdHlwZSkgKyBhcnJheVN0cmluZyh0eXBl
KSArIAorICAgICAgICAgICAgICAgICAgICAgICAgIiA6IHJlZ2lzdGVyKCIgKyByZWdpc3RlclN0
cmluZyhtUmVmZXJlbmNlZFVuaWZvcm1zW25hbWVdKSArICIpO1xuIjsKKyAgICAgICAgfQorICAg
IH0KIAotICAgICAgICAgICAgaWYgKHN5bWJvbC0+aXNWYXJpYWJsZSgpKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNvbnN0IFRWYXJpYWJsZSAqdmFyaWFibGUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOwotICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBl
ICZ0eXBlID0gdmFyaWFibGUtPmdldFR5cGUoKTsKLSAgICAgICAgICAgICAgICBUUXVhbGlmaWVy
IHF1YWxpZmllciA9IHR5cGUuZ2V0UXVhbGlmaWVyKCk7CisgICAgZm9yIChSZWZlcmVuY2VkU3lt
Ym9sczo6Y29uc3RfaXRlcmF0b3IgdmFyeWluZyA9IG1SZWZlcmVuY2VkVmFyeWluZ3MuYmVnaW4o
KTsgdmFyeWluZyAhPSBtUmVmZXJlbmNlZFZhcnlpbmdzLmVuZCgpOyB2YXJ5aW5nKyspCisgICAg
eworICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSA9IHZhcnlpbmctPnNlY29uZC0+Z2V0VHlwZSgp
OworICAgICAgICBjb25zdCBUU3RyaW5nICZuYW1lID0gdmFyeWluZy0+c2Vjb25kLT5nZXRTeW1i
b2woKTsKIAotICAgICAgICAgICAgICAgIGlmIChxdWFsaWZpZXIgPT0gRXZxVW5pZm9ybSkKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtUmVmZXJlbmNlZFVuaWZv
cm1zLmZpbmQobmFtZS5jX3N0cigpKSAhPSBtUmVmZXJlbmNlZFVuaWZvcm1zLmVuZCgpKQotICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtcyArPSAi
dW5pZm9ybSAiICsgdHlwZVN0cmluZyh0eXBlKSArICIgIiArIGRlY29yYXRlVW5pZm9ybShuYW1l
LCB0eXBlKSArIGFycmF5U3RyaW5nKHR5cGUpICsgIjtcbiI7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVy
ID09IEV2cVZhcnlpbmdJbiB8fCBxdWFsaWZpZXIgPT0gRXZxSW52YXJpYW50VmFyeWluZ0luKQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1SZWZlcmVuY2VkVmFy
eWluZ3MuZmluZChuYW1lLmNfc3RyKCkpICE9IG1SZWZlcmVuY2VkVmFyeWluZ3MuZW5kKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByb2dyYW0g
bGlua2luZyBkZXBlbmRzIG9uIHRoaXMgZXhhY3QgZm9ybWF0Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB2YXJ5aW5ncyArPSAic3RhdGljICIgKyB0eXBlU3RyaW5nKHR5cGUpICsgIiAiICsgZGVj
b3JhdGUobmFtZSkgKyBhcnJheVN0cmluZyh0eXBlKSArICIgPSAiICsgaW5pdGlhbGl6ZXIodHlw
ZSkgKyAiO1xuIjsKKyAgICAgICAgLy8gUHJvZ3JhbSBsaW5raW5nIGRlcGVuZHMgb24gdGhpcyBl
eGFjdCBmb3JtYXQKKyAgICAgICAgdmFyeWluZ3MgKz0gInN0YXRpYyAiICsgdHlwZVN0cmluZyh0
eXBlKSArICIgIiArIGRlY29yYXRlKG5hbWUpICsgYXJyYXlTdHJpbmcodHlwZSkgKyAiID0gIiAr
IGluaXRpYWxpemVyKHR5cGUpICsgIjtcbiI7CisgICAgfQogCi0gICAgICAgICAgICAgICAgICAg
ICAgICBzZW1hbnRpY0luZGV4ICs9IHR5cGUuaXNBcnJheSgpID8gdHlwZS5nZXRBcnJheVNpemUo
KSA6IDE7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVyID09IEV2cUdsb2JhbCB8fCBxdWFsaWZpZXIgPT0g
RXZxVGVtcG9yYXJ5KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8g
R2xvYmFscyBhcmUgZGVjbGFyZWQgYW5kIGludGlhbGl6ZWQgYXMgYW4gYWdncmVnYXRlIG5vZGUK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVyID09
IEV2cUNvbnN0KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29u
c3RhbnRzIGFyZSByZXBlYXRlZCBhcyBsaXRlcmFscyB3aGVyZSB1c2VkCi0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQorICAgIGZvciAoUmVmZXJlbmNlZFN5bWJvbHM6OmNvbnN0X2l0ZXJhdG9yIGF0
dHJpYnV0ZSA9IG1SZWZlcmVuY2VkQXR0cmlidXRlcy5iZWdpbigpOyBhdHRyaWJ1dGUgIT0gbVJl
ZmVyZW5jZWRBdHRyaWJ1dGVzLmVuZCgpOyBhdHRyaWJ1dGUrKykKKyAgICB7CisgICAgICAgIGNv
bnN0IFRUeXBlICZ0eXBlID0gYXR0cmlidXRlLT5zZWNvbmQtPmdldFR5cGUoKTsKKyAgICAgICAg
Y29uc3QgVFN0cmluZyAmbmFtZSA9IGF0dHJpYnV0ZS0+c2Vjb25kLT5nZXRTeW1ib2woKTsKKwor
ICAgICAgICBhdHRyaWJ1dGVzICs9ICJzdGF0aWMgIiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIg
KyBkZWNvcmF0ZShuYW1lKSArIGFycmF5U3RyaW5nKHR5cGUpICsgIiA9ICIgKyBpbml0aWFsaXpl
cih0eXBlKSArICI7XG4iOworICAgIH0KKworICAgIGlmIChzaGFkZXJUeXBlID09IFNIX0ZSQUdN
RU5UX1NIQURFUikKKyAgICB7CisgICAgICAgIFRFeHRlbnNpb25CZWhhdmlvcjo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IG1Db250ZXh0LmV4dGVuc2lvbkJlaGF2aW9yKCkuZmluZCgiR0xfRVhUX2Ry
YXdfYnVmZmVycyIpOworICAgICAgICBjb25zdCBib29sIHVzaW5nTVJURXh0ZW5zaW9uID0gKGl0
ZXIgIT0gbUNvbnRleHQuZXh0ZW5zaW9uQmVoYXZpb3IoKS5lbmQoKSAmJiAoaXRlci0+c2Vjb25k
ID09IEVCaEVuYWJsZSB8fCBpdGVyLT5zZWNvbmQgPT0gRUJoUmVxdWlyZSkpOworCisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGludCBudW1Db2xvclZhbHVlcyA9IHVzaW5nTVJURXh0ZW5zaW9uID8g
bU51bVJlbmRlclRhcmdldHMgOiAxOwogCiAgICAgICAgIG91dCA8PCAiLy8gVmFyeWluZ3NcbiI7
CiAgICAgICAgIG91dCA8PCAgdmFyeWluZ3M7CiAgICAgICAgIG91dCA8PCAiXG4iCi0gICAgICAg
ICAgICAgICAic3RhdGljIGZsb2F0NCBnbF9Db2xvclsxXSA9IHtmbG9hdDQoMCwgMCwgMCwgMCl9
O1xuIjsKKyAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWyIgPDwgbnVtQ29s
b3JWYWx1ZXMgPDwgIl0gPVxuIgorICAgICAgICAgICAgICAgIntcbiI7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtQ29sb3JWYWx1ZXM7IGkrKykKKyAgICAgICAgewor
ICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQ0KDAsIDAsIDAsIDApIjsKKyAgICAgICAgICAg
IGlmIChpICsgMSAhPSBudW1Db2xvclZhbHVlcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBvdXQgPDwgIiwiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0IDw8ICJcbiI7
CisgICAgICAgIH0KKyAgICAgICAgb3V0IDw8ICJ9O1xuIjsKKworICAgICAgICBpZiAobVVzZXNG
cmFnRGVwdGgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAic3RhdGljIGZsb2F0IGds
X0RlcHRoID0gMC4wO1xuIjsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChtVXNlc0ZyYWdDb29y
ZCkKICAgICAgICAgewpAQCAtMjA2LDIwNSArMjUzLDM3OSBAQCB2b2lkIE91dHB1dEhMU0w6Omhl
YWRlcigpCiAKICAgICAgICAgb3V0IDw8ICJcbiI7CiAKLSAgICAgICAgaWYgKG1Vc2VzRnJhZ0Nv
b3JkKQorICAgICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBvdXQgPDwgInVuaWZvcm0gZmxvYXQ0IGR4X0Nvb3JkO1xuIgotICAgICAgICAgICAgICAgICAg
ICJ1bmlmb3JtIGZsb2F0MiBkeF9EZXB0aDtcbiI7CisgICAgICAgICAgICBvdXQgPDwgInN0cnVj
dCBnbF9EZXB0aFJhbmdlUGFyYW1ldGVyc1xuIgorICAgICAgICAgICAgICAgICAgICJ7XG4iCisg
ICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBuZWFyO1xuIgorICAgICAgICAgICAgICAgICAg
ICIgICAgZmxvYXQgZmFyO1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZGlmZjtc
biIKKyAgICAgICAgICAgICAgICAgICAifTtcbiIKKyAgICAgICAgICAgICAgICAgICAiXG4iOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1Vc2VzRnJvbnRGYWNpbmcpCisgICAgICAgIGlmICht
T3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQogICAgICAgICB7Ci0gICAgICAgICAgICBv
dXQgPDwgInVuaWZvcm0gYm9vbCBkeF9Qb2ludHNPckxpbmVzO1xuIgotICAgICAgICAgICAgICAg
ICAgICJ1bmlmb3JtIGJvb2wgZHhfRnJvbnRDQ1c7XG4iOworICAgICAgICAgICAgb3V0IDw8ICJj
YnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKVxuIgorICAgICAgICAgICAgICAg
ICAgICJ7XG4iOworCisgICAgICAgICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0MyBkeF9EZXB0aFJhbmdlIDog
cGFja29mZnNldChjMCk7XG4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobVVz
ZXNGcmFnQ29vcmQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAg
ZmxvYXQ0IGR4X1ZpZXdDb29yZHMgOiBwYWNrb2Zmc2V0KGMxKTtcbiI7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChtVXNlc0ZyYWdDb29yZCB8fCBtVXNlc0Zyb250RmFjaW5nKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0MyBkeF9EZXB0
aEZyb250IDogcGFja29mZnNldChjMik7XG4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBvdXQgPDwgIn07XG4iOwogICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICBlbHNlCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChtVXNlc0RlcHRoUmFuZ2UpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgb3V0IDw8ICJ1bmlmb3JtIGZsb2F0MyBkeF9EZXB0aFJhbmdlIDogcmVn
aXN0ZXIoYzApOyI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtVXNlc0ZyYWdD
b29yZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgInVuaWZvcm0gZmxv
YXQ0IGR4X1ZpZXdDb29yZHMgOiByZWdpc3RlcihjMSk7XG4iOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAobVVzZXNGcmFnQ29vcmQgfHwgbVVzZXNGcm9udEZhY2luZykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgInVuaWZvcm0gZmxvYXQzIGR4X0RlcHRo
RnJvbnQgOiByZWdpc3RlcihjMik7XG4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAg
ICAgICAgb3V0IDw8ICJcbiI7CisKKyAgICAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgb3V0IDw8ICJzdGF0aWMgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnMg
Z2xfRGVwdGhSYW5nZSA9IHtkeF9EZXB0aFJhbmdlLngsIGR4X0RlcHRoUmFuZ2UueSwgZHhfRGVw
dGhSYW5nZS56fTtcbiIKKyAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICB9CisgICAg
ICAgIAogICAgICAgICBvdXQgPDwgIHVuaWZvcm1zOwogICAgICAgICBvdXQgPDwgIlxuIjsKIAog
ICAgICAgICBpZiAobVVzZXNUZXh0dXJlMkQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8
PCAiZmxvYXQ0IGdsX3RleHR1cmUyRChzYW1wbGVyMkQgcywgZmxvYXQyIHQpXG4iCi0gICAgICAg
ICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRChz
LCB0KTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJc
biI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRChz
YW1wbGVyMkQgcywgZmxvYXQyIHQpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEKHMsIHQpO1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDEx
X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBn
bF90ZXh0dXJlMkQoVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDIgdXYpXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAg
cmV0dXJuIHQuU2FtcGxlKHMsIHV2KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtVXNlc1RleHR1
cmUyRF9iaWFzKQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0
dXJlMkQoc2FtcGxlcjJEIHMsIGZsb2F0MiB0LCBmbG9hdCBiaWFzKVxuIgotICAgICAgICAgICAg
ICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRiaWFzKHMs
IGZsb2F0NCh0LngsIHQueSwgMCwgYmlhcykpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4i
Ci0gICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9
PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8
ICJmbG9hdDQgZ2xfdGV4dHVyZTJEKHNhbXBsZXIyRCBzLCBmbG9hdDIgdCwgZmxvYXQgYmlhcylc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IiAgICByZXR1cm4gdGV4MkRiaWFzKHMsIGZsb2F0NCh0LngsIHQueSwgMCwgYmlhcykpO1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4i
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hf
SExTTDExX09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZs
b2F0NCBnbF90ZXh0dXJlMkQoVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDIgdXYs
IGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlQmlhcyhzLCB1diwgYmlhcyk7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAobVVzZXNUZXh0dXJlMkRQcm9qKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzLCBmbG9hdDMg
dClcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAg
cmV0dXJuIHRleDJEcHJvaihzLCBmbG9hdDQodC54LCB0LnksIDAsIHQueikpO1xuIgotICAgICAg
ICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAg
ICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxvYXQ0IHQpXG4i
Ci0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVy
biB0ZXgyRHByb2oocywgdCk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAg
ICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5
X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBn
bF90ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzLCBmbG9hdDMgdClcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRw
cm9qKHMsIGZsb2F0NCh0LngsIHQueSwgMCwgdC56KSk7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzLCBmbG9hdDQgdClcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICByZXR1cm4gdGV4MkRwcm9qKHMsIHQpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxu
IgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKFRleHR1
cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dylcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGUo
cywgZmxvYXQyKHV2dy54IC8gdXZ3LnosIHV2dy55IC8gdXZ3LnopKTtcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooVGV4dHVyZTJEIHQsIFNhbXBs
ZXJTdGF0ZSBzLCBmbG9hdDQgdXZ3KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZShzLCBmbG9hdDIodXZ3
LnggLyB1dncudywgdXZ3LnkgLyB1dncudykpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAi
fVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1Vc2Vz
VGV4dHVyZTJEUHJval9iaWFzKQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0
NCBnbF90ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzLCBmbG9hdDMgdCwgZmxvYXQgYmlhcylcbiIK
LSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJu
IHRleDJEYmlhcyhzLCBmbG9hdDQodC54IC8gdC56LCB0LnkgLyB0LnosIDAsIGJpYXMpKTtcbiIK
LSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAg
ICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZsb2F0
NCB0LCBmbG9hdCBiaWFzKVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAg
ICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRiaWFzKHMsIGZsb2F0NCh0LnggLyB0LncsIHQueSAv
IHQudywgMCwgYmlhcykpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAg
ICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9P
VVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xf
dGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxvYXQzIHQsIGZsb2F0IGJpYXMpXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuIHRleDJEYmlhcyhzLCBmbG9hdDQodC54IC8gdC56LCB0LnkgLyB0LnosIDAsIGJpYXMpKTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2Ft
cGxlcjJEIHMsIGZsb2F0NCB0LCBmbG9hdCBiaWFzKVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGJpYXMocywg
ZmxvYXQ0KHQueCAvIHQudywgdC55IC8gdC53LCAwLCBiaWFzKSk7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVU
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1
cmUyRFByb2ooVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDMgdXZ3LCBmbG9hdCBi
aWFzKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIHJldHVybiB0LlNhbXBsZUJpYXMocywgZmxvYXQyKHV2dy54IC8gdXZ3LnosIHV2
dy55IC8gdXZ3LnopLCBiaWFzKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0
IGdsX3RleHR1cmUyRFByb2ooVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDQgdXZ3
LCBmbG9hdCBiaWFzKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUJpYXMocywgZmxvYXQyKHV2dy54IC8g
dXZ3LncsIHV2dy55IC8gdXZ3LncpLCBiaWFzKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
In1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtVXNl
c1RleHR1cmVDdWJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90
ZXh0dXJlQ3ViZShzYW1wbGVyQ1VCRSBzLCBmbG9hdDMgdClcbiIKLSAgICAgICAgICAgICAgICAg
ICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleENVQkUocywgdCk7XG4i
Ci0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iOworICAg
ICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZShzYW1wbGVy
Q1VCRSBzLCBmbG9hdDMgdClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4Q1VCRShzLCB0KTtcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9P
VVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xf
dGV4dHVyZUN1YmUoVGV4dHVyZUN1YmUgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MyB1dncpXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgcmV0dXJuIHQuU2FtcGxlKHMsIHV2dyk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobVVzZXNU
ZXh0dXJlQ3ViZV9iaWFzKQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBn
bF90ZXh0dXJlQ3ViZShzYW1wbGVyQ1VCRSBzLCBmbG9hdDMgdCwgZmxvYXQgYmlhcylcbiIKLSAg
ICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRl
eENVQkViaWFzKHMsIGZsb2F0NCh0LngsIHQueSwgdC56LCBiaWFzKSk7XG4iCi0gICAgICAgICAg
ICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYg
KG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZShzYW1wbGVyQ1VCRSBzLCBmbG9h
dDMgdCwgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4Q1VCRWJpYXMocywgZmxvYXQ0KHQueCwg
dC55LCB0LnosIGJpYXMpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
aWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmUoVGV4dHVyZUN1YmUgdCwg
U2FtcGxlclN0YXRlIHMsIGZsb2F0MyB1dncsIGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2Ft
cGxlQmlhcyhzLCB1dncsIGJpYXMpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlc2UgKkxvZDAg
aW50cmluc2ljcyBhcmUgbm90IGF2YWlsYWJsZSBpbiBHTCBmcmFnbWVudCBzaGFkZXJzLgogICAg
ICAgICAvLyBUaGV5IGFyZSB1c2VkIHRvIHNhbXBsZSB1c2luZyBkaXNjb250aW51b3VzIHRleHR1
cmUgY29vcmRpbmF0ZXMuCiAgICAgICAgIGlmIChtVXNlc1RleHR1cmUyRExvZDApCiAgICAgICAg
IHsKLSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRExvZDAoc2FtcGxlcjJE
IHMsIGZsb2F0MiB0KVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAg
ICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCwgdC55LCAwLCAwKSk7XG4i
Ci0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iOworICAg
ICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRMb2QwKHNhbXBs
ZXIyRCBzLCBmbG9hdDIgdClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCwgdC55
LCAwLCAwKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtT3V0
cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRExvZDAoVGV4dHVyZTJEIHQsIFNhbXBsZXJT
dGF0ZSBzLCBmbG9hdDIgdXYpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgdXYsIDApO1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAi
XG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJETG9kMF9iaWFzKQogICAgICAgICB7
Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRMb2QwKHNhbXBsZXIyRCBz
LCBmbG9hdDIgdCwgZmxvYXQgYmlhcylcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAg
ICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LngsIHQueSwg
MCwgMCkpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAg
IlxuIjsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJE
TG9kMChzYW1wbGVyMkQgcywgZmxvYXQyIHQsIGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJE
bG9kKHMsIGZsb2F0NCh0LngsIHQueSwgMCwgMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRMb2Qw
KFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQyIHV2LCBmbG9hdCBiaWFzKVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiB0LlNhbXBsZUxldmVsKHMsIHV2LCAwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICht
VXNlc1RleHR1cmUyRFByb2pMb2QwKQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImZs
b2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kMChzYW1wbGVyMkQgcywgZmxvYXQzIHQpXG4iCi0gICAg
ICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgy
RGxvZChzLCBmbG9hdDQodC54IC8gdC56LCB0LnkgLyB0LnosIDAsIDApKTtcbiIKLSAgICAgICAg
ICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAg
ICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHMsIGZsb2F0NCB0KVxu
IgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1
cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQudywgdC55IC8gdC53LCAwLCAwKSk7XG4iCi0g
ICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAg
ICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kMChzYW1w
bGVyMkQgcywgZmxvYXQzIHQpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0
LnosIHQueSAvIHQueiwgMCwgMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJmbG9h
dDQgZ2xfdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgcywgZmxvYXQ0IHQpXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJu
IHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LncsIHQueSAvIHQudywgMCwgMCkpO1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExT
TDExX09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0
NCBnbF90ZXh0dXJlMkRQcm9qTG9kMChUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0
MyB1dncpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgZmxvYXQyKHV2dy54IC8gdXZ3Lnos
IHV2dy55IC8gdXZ3LnopLCAwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0
IGdsX3RleHR1cmUyRFByb2pMb2QwKFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQ0
IHV2dylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCBmbG9hdDIodXZ3LnggLyB1dncudywg
dXZ3LnkgLyB1dncudyksIDApO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJE
UHJvakxvZDBfYmlhcykKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xf
dGV4dHVyZTJEUHJvakxvZDBfYmlhcyhzYW1wbGVyMkQgcywgZmxvYXQzIHQsIGZsb2F0IGJpYXMp
XG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJl
dHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC56LCB0LnkgLyB0LnosIDAsIDApKTtcbiIK
LSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAg
ICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2RfYmlhcyhzYW1wbGVyMkQg
cywgZmxvYXQ0IHQsIGZsb2F0IGJpYXMpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAg
ICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC53
LCB0LnkgLyB0LncsIDAsIDApKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAg
ICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExT
TDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0
IGdsX3RleHR1cmUyRFByb2pMb2QwX2JpYXMoc2FtcGxlcjJEIHMsIGZsb2F0MyB0LCBmbG9hdCBi
aWFzKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC56LCB0LnkgLyB0Lnos
IDAsIDApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUy
RFByb2pMb2RfYmlhcyhzYW1wbGVyMkQgcywgZmxvYXQ0IHQsIGZsb2F0IGJpYXMpXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LncsIHQueSAvIHQudywgMCwgMCkpO1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4i
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hf
SExTTDExX09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZs
b2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kX2JpYXMoVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBz
LCBmbG9hdDMgdXZ3LCBmbG9hdCBiaWFzKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUxldmVsKHMsIGZs
b2F0Mih1dncueCAvIHV2dy56LCB1dncueSAvIHV2dy56KSwgMCk7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kX2JpYXMoVGV4dHVyZTJEIHQs
IFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDQgdXZ3LCBmbG9hdCBiaWFzKVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNh
bXBsZUxldmVsKHMsIGZsb2F0Mih1dncueCAvIHV2dy53LCB1dncueSAvIHV2dy53KSwgMCk7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJc
biI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAobVVzZXNUZXh0dXJlQ3ViZUxvZDApCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlTG9kMChzYW1wbGVyQ1VCRSBz
LCBmbG9hdDMgdClcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAg
ICAgICIgICAgcmV0dXJuIHRleENVQkVsb2QocywgZmxvYXQ0KHQueCwgdC55LCB0LnosIDApKTtc
biIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiI7Cisg
ICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlTG9kMChz
YW1wbGVyQ1VCRSBzLCBmbG9hdDMgdClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4Q1VCRWxvZChzLCBmbG9hdDQo
dC54LCB0LnksIHQueiwgMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZUxvZDAoVGV4dHVyZUN1
YmUgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MyB1dncpXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2
ZWwocywgdXZ3LCAwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5S
RUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtVXNlc1RleHR1cmVDdWJlTG9k
MF9iaWFzKQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJl
Q3ViZUxvZDAoc2FtcGxlckNVQkUgcywgZmxvYXQzIHQsIGZsb2F0IGJpYXMpXG4iCi0gICAgICAg
ICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhDVUJF
bG9kKHMsIGZsb2F0NCh0LngsIHQueSwgdC56LCAwKSk7XG4iCi0gICAgICAgICAgICAgICAgICAg
In1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRU
eXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBv
dXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZUxvZDAoc2FtcGxlckNVQkUgcywgZmxvYXQzIHQs
IGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleENVQkVsb2QocywgZmxvYXQ0KHQueCwgdC55LCB0
LnosIDApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRw
dXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmVMb2QwKFRleHR1cmVDdWJlIHQsIFNhbXBs
ZXJTdGF0ZSBzLCBmbG9hdDMgdXZ3LCBmbG9hdCBiaWFzKVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUxl
dmVsKHMsIHV2dywgMCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIFVO
UkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSAgIC8vIFZlcnRleCBzaGFk
ZXIKLSAgICB7Ci0gICAgICAgIFRTdHJpbmcgdW5pZm9ybXM7Ci0gICAgICAgIFRTdHJpbmcgYXR0
cmlidXRlczsKLSAgICAgICAgVFN0cmluZyB2YXJ5aW5nczsKLQotICAgICAgICBUU3ltYm9sVGFi
bGVMZXZlbCAqc3ltYm9scyA9IG1Db250ZXh0LnN5bWJvbFRhYmxlLmdldEdsb2JhbExldmVsKCk7
CiAKLSAgICAgICAgZm9yIChUU3ltYm9sVGFibGVMZXZlbDo6Y29uc3RfaXRlcmF0b3IgbmFtZWRT
eW1ib2wgPSBzeW1ib2xzLT5iZWdpbigpOyBuYW1lZFN5bWJvbCAhPSBzeW1ib2xzLT5lbmQoKTsg
bmFtZWRTeW1ib2wrKykKKyAgICAgICAgaWYgKHVzaW5nTVJURXh0ZW5zaW9uICYmIG1OdW1SZW5k
ZXJUYXJnZXRzID4gMSkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFN5bWJvbCAqc3lt
Ym9sID0gKCpuYW1lZFN5bWJvbCkuc2Vjb25kOwotICAgICAgICAgICAgY29uc3QgVFN0cmluZyAm
bmFtZSA9IHN5bWJvbC0+Z2V0TmFtZSgpOwotCi0gICAgICAgICAgICBpZiAoc3ltYm9sLT5pc1Zh
cmlhYmxlKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgVFZhcmlhYmxl
ICp2YXJpYWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7Ci0gICAg
ICAgICAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgPSB2YXJpYWJsZS0+Z2V0VHlwZSgpOwotICAg
ICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gdHlwZS5nZXRRdWFsaWZpZXIoKTsK
KyAgICAgICAgICAgIG91dCA8PCAiI2RlZmluZSBHTF9VU0VTX01SVFxuIjsKKyAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgaWYgKHF1YWxpZmllciA9PSBFdnFVbmlmb3JtKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1SZWZlcmVuY2VkVW5pZm9ybXMuZmlu
ZChuYW1lLmNfc3RyKCkpICE9IG1SZWZlcmVuY2VkVW5pZm9ybXMuZW5kKCkpCi0gICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1zICs9ICJ1bmlmb3Jt
ICIgKyB0eXBlU3RyaW5nKHR5cGUpICsgIiAiICsgZGVjb3JhdGVVbmlmb3JtKG5hbWUsIHR5cGUp
ICsgYXJyYXlTdHJpbmcodHlwZSkgKyAiO1xuIjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZx
QXR0cmlidXRlKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1S
ZWZlcmVuY2VkQXR0cmlidXRlcy5maW5kKG5hbWUuY19zdHIoKSkgIT0gbVJlZmVyZW5jZWRBdHRy
aWJ1dGVzLmVuZCgpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGVzICs9ICJzdGF0aWMgIiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBk
ZWNvcmF0ZShuYW1lKSArIGFycmF5U3RyaW5nKHR5cGUpICsgIiA9ICIgKyBpbml0aWFsaXplcih0
eXBlKSArICI7XG4iOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHF1YWxpZmllciA9PSBFdnFWYXJ5aW5nT3V0IHx8IHF1
YWxpZmllciA9PSBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0KQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKG1SZWZlcmVuY2VkVmFyeWluZ3MuZmluZChuYW1lLmNfc3Ry
KCkpICE9IG1SZWZlcmVuY2VkVmFyeWluZ3MuZW5kKCkpCi0gICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByb2dyYW0gbGlua2luZyBkZXBlbmRzIG9uIHRo
aXMgZXhhY3QgZm9ybWF0Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJ5aW5ncyArPSAic3Rh
dGljICIgKyB0eXBlU3RyaW5nKHR5cGUpICsgIiAiICsgZGVjb3JhdGUobmFtZSkgKyBhcnJheVN0
cmluZyh0eXBlKSArICIgPSAiICsgaW5pdGlhbGl6ZXIodHlwZSkgKyAiO1xuIjsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlm
IChxdWFsaWZpZXIgPT0gRXZxR2xvYmFsIHx8IHF1YWxpZmllciA9PSBFdnFUZW1wb3JhcnkpCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBHbG9iYWxzIGFyZSBkZWNs
YXJlZCBhbmQgaW50aWFsaXplZCBhcyBhbiBhZ2dyZWdhdGUgbm9kZQotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxQ29uc3QpCi0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBDb25zdGFudHMgYXJlIHJlcGVh
dGVkIGFzIGxpdGVyYWxzIHdoZXJlIHVzZWQKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAobVVz
ZXNGcmFnQ29sb3IpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiI2RlZmluZSBHTF9V
U0VTX0ZSQUdfQ09MT1JcbiI7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAobVVzZXNGcmFnRGF0
YSkKKyAgICAgICAgeworICAgICAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNfRlJBR19E
QVRBXG4iOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgICAvLyBWZXJ0ZXggc2hhZGVyCisg
ICAgewogICAgICAgICBvdXQgPDwgIi8vIEF0dHJpYnV0ZXNcbiI7CiAgICAgICAgIG91dCA8PCAg
YXR0cmlidXRlczsKICAgICAgICAgb3V0IDw8ICJcbiIKQEAgLTQxOCw3NCArNjM5LDE5NCBAQCB2
b2lkIE91dHB1dEhMU0w6OmhlYWRlcigpCiAgICAgICAgIG91dCA8PCAiXG4iCiAgICAgICAgICAg
ICAgICAiLy8gVmFyeWluZ3NcbiI7CiAgICAgICAgIG91dCA8PCAgdmFyeWluZ3M7Ci0gICAgICAg
IG91dCA8PCAiXG4iCi0gICAgICAgICAgICAgICAidW5pZm9ybSBmbG9hdDIgZHhfSGFsZlBpeGVs
U2l6ZTtcbiIKLSAgICAgICAgICAgICAgICJcbiI7Ci0gICAgICAgIG91dCA8PCAgdW5pZm9ybXM7
CiAgICAgICAgIG91dCA8PCAiXG4iOwotICAgICAgICAKLSAgICAgICAgaWYgKG1Vc2VzVGV4dHVy
ZTJEKQorCisgICAgICAgIGlmIChtVXNlc0RlcHRoUmFuZ2UpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRChzYW1wbGVyMkQgcywgZmxvYXQyIHQpXG4i
CisgICAgICAgICAgICBvdXQgPDwgInN0cnVjdCBnbF9EZXB0aFJhbmdlUGFyYW1ldGVyc1xuIgog
ICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
dGV4MkRsb2QocywgZmxvYXQ0KHQueCwgdC55LCAwLCAwKSk7XG4iCi0gICAgICAgICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IG5lYXI7XG4iCisgICAgICAg
ICAgICAgICAgICAgIiAgICBmbG9hdCBmYXI7XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICBm
bG9hdCBkaWZmO1xuIgorICAgICAgICAgICAgICAgICAgICJ9O1xuIgogICAgICAgICAgICAgICAg
ICAgICJcbiI7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobVVzZXNUZXh0dXJlMkRMb2QpCisg
ICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRMb2Qoc2FtcGxlcjJEIHMsIGZs
b2F0MiB0LCBmbG9hdCBsb2QpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAg
ICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54LCB0LnksIDAsIGxv
ZCkpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICBpZiAobVVzZXNE
ZXB0aFJhbmdlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiY2J1ZmZl
ciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSlcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDMgZHhfRGVwdGhSYW5n
ZSA6IHBhY2tvZmZzZXQoYzApO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifTtcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtVXNlc0RlcHRoUmFuZ2UpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJ1bmlmb3JtIGZsb2F0MyBkeF9E
ZXB0aFJhbmdlIDogcmVnaXN0ZXIoYzApO1xuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgb3V0IDw8ICJ1bmlmb3JtIGZsb2F0NCBkeF9WaWV3QWRqdXN0IDogcmVnaXN0ZXIoYzEpO1xu
IgogICAgICAgICAgICAgICAgICAgICJcbiI7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobVVz
ZXNUZXh0dXJlMkRQcm9qKQorICAgICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQogICAgICAgICB7
Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBz
LCBmbG9hdDMgdClcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAg
ICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LnosIHQueSAvIHQueiwg
MCwgMCkpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAg
IlxuIgotICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVy
MkQgcywgZmxvYXQ0IHQpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAg
ICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC53LCB0LnkgLyB0
LncsIDAsIDApKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgb3V0
IDw8ICJzdGF0aWMgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnMgZ2xfRGVwdGhSYW5nZSA9IHtkeF9E
ZXB0aFJhbmdlLngsIGR4X0RlcHRoUmFuZ2UueSwgZHhfRGVwdGhSYW5nZS56fTtcbiIKICAgICAg
ICAgICAgICAgICAgICAiXG4iOwogICAgICAgICB9CiAKKyAgICAgICAgb3V0IDw8IHVuaWZvcm1z
OworICAgICAgICBvdXQgPDwgIlxuIjsKKyAgICAgICAgCisgICAgICAgIGlmIChtVXNlc1RleHR1
cmUyRCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5
X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBn
bF90ZXh0dXJlMkQoc2FtcGxlcjJEIHMsIGZsb2F0MiB0KVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChz
LCBmbG9hdDQodC54LCB0LnksIDAsIDApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1c
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEKFRleHR1cmUy
RCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQyIHV2KVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUxldmVs
KHMsIHV2LCAwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtVXNlc1RleHR1cmUyRExvZCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJl
MkRMb2Qoc2FtcGxlcjJEIHMsIGZsb2F0MiB0LCBmbG9hdCBsb2QpXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJE
bG9kKHMsIGZsb2F0NCh0LngsIHQueSwgMCwgbG9kKSk7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRExv
ZChUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MiB1diwgZmxvYXQgbG9kKVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiB0LlNhbXBsZUxldmVsKHMsIHV2LCBsb2QpO1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KG1Vc2VzVGV4dHVyZTJEUHJvaikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1PdXRwdXRU
eXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBv
dXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzLCBmbG9hdDMgdClcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8gdC56LCAwLCAwKSk7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKHNh
bXBsZXIyRCBzLCBmbG9hdDQgdClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAv
IHQudywgdC55IC8gdC53LCAwLCAwKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooVGV4dHVy
ZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDMgdXZ3KVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUxl
dmVsKHMsIGZsb2F0Mih1dncueCAvIHV2dy56LCB1dncueSAvIHV2dy56KSwgMCk7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKFRleHR1cmUyRCB0
LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQ0IHV2dylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChz
LCBmbG9hdDIodXZ3LnggLyB1dncudywgdXZ3LnkgLyB1dncudyksIDApO1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisKICAg
ICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJEUHJvakxvZCkKICAgICAgICAgewotICAgICAgICAgICAg
b3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgcywgZmxvYXQzIHQs
IGZsb2F0IGxvZClcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAg
ICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LnosIHQueSAvIHQueiwg
MCwgbG9kKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAg
ICAiXG4iCi0gICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kKHNh
bXBsZXIyRCBzLCBmbG9hdDQgdCwgZmxvYXQgbG9kKVxuIgotICAgICAgICAgICAgICAgICAgICJ7
XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQu
eCAvIHQudywgdC55IC8gdC53LCAwLCBsb2QpKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxu
IgotICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUg
PT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8
PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHMsIGZsb2F0MyB0LCBmbG9h
dCBsb2QpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LnosIHQueSAvIHQu
eiwgMCwgbG9kKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0
dXJlMkRQcm9qTG9kKHNhbXBsZXIyRCBzLCBmbG9hdDQgdCwgZmxvYXQgbG9kKVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVy
biB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC53LCB0LnkgLyB0LncsIDAsIGxvZCkpO1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4i
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hf
SExTTDExX09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZs
b2F0NCBnbF90ZXh0dXJlMkRQcm9qKFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQz
IHV2dywgZmxvYXQgbG9kKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUxldmVsKHMsIGZsb2F0Mih1dncu
eCAvIHV2dy56LCB1dncueSAvIHV2dy56KSwgbG9kKTtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBz
LCBmbG9hdDQgdXZ3KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUxldmVsKHMsIGZsb2F0Mih1dncueCAv
IHV2dy53LCB1dncueSAvIHV2dy53KSwgbG9kKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
In1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtVXNl
c1RleHR1cmVDdWJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90
ZXh0dXJlQ3ViZShzYW1wbGVyQ1VCRSBzLCBmbG9hdDMgdClcbiIKLSAgICAgICAgICAgICAgICAg
ICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleENVQkVsb2QocywgZmxv
YXQ0KHQueCwgdC55LCB0LnosIDApKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAg
ICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hf
SExTTDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxv
YXQ0IGdsX3RleHR1cmVDdWJlKHNhbXBsZXJDVUJFIHMsIGZsb2F0MyB0KVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0
ZXhDVUJFbG9kKHMsIGZsb2F0NCh0LngsIHQueSwgdC56LCAwKSk7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVU
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1
cmVDdWJlKFRleHR1cmVDdWJlIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDMgdXZ3KVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJl
dHVybiB0LlNhbXBsZUxldmVsKHMsIHV2dywgMCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobVVz
ZXNUZXh0dXJlQ3ViZUxvZCkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQg
Z2xfdGV4dHVyZUN1YmVMb2Qoc2FtcGxlckNVQkUgcywgZmxvYXQzIHQsIGZsb2F0IGxvZClcbiIK
LSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJu
IHRleENVQkVsb2QocywgZmxvYXQ0KHQueCwgdC55LCB0LnosIGxvZCkpO1xuIgotICAgICAgICAg
ICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIGlm
IChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmVMb2Qoc2FtcGxlckNVQkUgcywg
ZmxvYXQzIHQsIGZsb2F0IGxvZClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4Q1VCRWxvZChzLCBmbG9hdDQodC54
LCB0LnksIHQueiwgbG9kKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlTG9kKFRleHR1cmVDdWJl
IHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDMgdXZ3LCBmbG9hdCBsb2QpXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQu
U2FtcGxlTGV2ZWwocywgdXZ3LCBsb2QpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxu
IgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01MDksMTggKzg1
MCwxNCBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcigpCiAgICAgICAgIG91dCA8PCAiI2RlZmlu
ZSBHTF9VU0VTX1BPSU5UX1NJWkVcbiI7CiAgICAgfQogCisgICAgaWYgKG1Vc2VzRnJhZ0RlcHRo
KQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNfRlJBR19ERVBUSFxuIjsK
KyAgICB9CisKICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQogICAgIHsKLSAgICAgICAgb3V0IDw8
ICJzdHJ1Y3QgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnNcbiIKLSAgICAgICAgICAgICAgICJ7XG4i
Ci0gICAgICAgICAgICAgICAiICAgIGZsb2F0IG5lYXI7XG4iCi0gICAgICAgICAgICAgICAiICAg
IGZsb2F0IGZhcjtcbiIKLSAgICAgICAgICAgICAgICIgICAgZmxvYXQgZGlmZjtcbiIKLSAgICAg
ICAgICAgICAgICJ9O1xuIgotICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgInVu
aWZvcm0gZmxvYXQzIGR4X0RlcHRoUmFuZ2U7IgotICAgICAgICAgICAgICAgInN0YXRpYyBnbF9E
ZXB0aFJhbmdlUGFyYW1ldGVycyBnbF9EZXB0aFJhbmdlID0ge2R4X0RlcHRoUmFuZ2UueCwgZHhf
RGVwdGhSYW5nZS55LCBkeF9EZXB0aFJhbmdlLnp9O1xuIgotICAgICAgICAgICAgICAgIlxuIjsK
KyAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNfREVQVEhfUkFOR0VcbiI7CiAgICAgfQog
CiAgICAgaWYgKG1Vc2VzWG9yKQpAQCAtODEzLDEwICsxMTUwLDEyIEBAIHZvaWQgT3V0cHV0SExT
TDo6dmlzaXRTeW1ib2woVEludGVybVN5bWIKICAgICBpZiAobmFtZSA9PSAiZ2xfRnJhZ0NvbG9y
IikKICAgICB7CiAgICAgICAgIG91dCA8PCAiZ2xfQ29sb3JbMF0iOworICAgICAgICBtVXNlc0Zy
YWdDb2xvciA9IHRydWU7CiAgICAgfQogICAgIGVsc2UgaWYgKG5hbWUgPT0gImdsX0ZyYWdEYXRh
IikKICAgICB7CiAgICAgICAgIG91dCA8PCAiZ2xfQ29sb3IiOworICAgICAgICBtVXNlc0ZyYWdE
YXRhID0gdHJ1ZTsKICAgICB9CiAgICAgZWxzZSBpZiAobmFtZSA9PSAiZ2xfRGVwdGhSYW5nZSIp
CiAgICAgewpAQCAtODQzLDIzICsxMTgyLDI4IEBAIHZvaWQgT3V0cHV0SExTTDo6dmlzaXRTeW1i
b2woVEludGVybVN5bWIKICAgICAgICAgbVVzZXNQb2ludFNpemUgPSB0cnVlOwogICAgICAgICBv
dXQgPDwgbmFtZTsKICAgICB9CisgICAgZWxzZSBpZiAobmFtZSA9PSAiZ2xfRnJhZ0RlcHRoRVhU
IikKKyAgICB7CisgICAgICAgIG1Vc2VzRnJhZ0RlcHRoID0gdHJ1ZTsKKyAgICAgICAgb3V0IDw8
ICJnbF9EZXB0aCI7CisgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbGlmaWVyID0gbm9kZS0+Z2V0UXVhbGlmaWVyKCk7CiAKICAgICAgICAgaWYgKHF1YWxpZmll
ciA9PSBFdnFVbmlmb3JtKQogICAgICAgICB7Ci0gICAgICAgICAgICBtUmVmZXJlbmNlZFVuaWZv
cm1zLmluc2VydChuYW1lLmNfc3RyKCkpOworICAgICAgICAgICAgbVJlZmVyZW5jZWRVbmlmb3Jt
c1tuYW1lXSA9IG5vZGU7CiAgICAgICAgICAgICBvdXQgPDwgZGVjb3JhdGVVbmlmb3JtKG5hbWUs
IG5vZGUtPmdldFR5cGUoKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVy
ID09IEV2cUF0dHJpYnV0ZSkKICAgICAgICAgewotICAgICAgICAgICAgbVJlZmVyZW5jZWRBdHRy
aWJ1dGVzLmluc2VydChuYW1lLmNfc3RyKCkpOworICAgICAgICAgICAgbVJlZmVyZW5jZWRBdHRy
aWJ1dGVzW25hbWVdID0gbm9kZTsKICAgICAgICAgICAgIG91dCA8PCBkZWNvcmF0ZShuYW1lKTsK
ICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxVmFyeWluZ091dCB8
fCBxdWFsaWZpZXIgPT0gRXZxSW52YXJpYW50VmFyeWluZ091dCB8fCBxdWFsaWZpZXIgPT0gRXZx
VmFyeWluZ0luIHx8IHF1YWxpZmllciA9PSBFdnFJbnZhcmlhbnRWYXJ5aW5nSW4pCiAgICAgICAg
IHsKLSAgICAgICAgICAgIG1SZWZlcmVuY2VkVmFyeWluZ3MuaW5zZXJ0KG5hbWUuY19zdHIoKSk7
CisgICAgICAgICAgICBtUmVmZXJlbmNlZFZhcnlpbmdzW25hbWVdID0gbm9kZTsKICAgICAgICAg
ICAgIG91dCA8PCBkZWNvcmF0ZShuYW1lKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC05
NTIsNyArMTI5NiwxMCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0
CiAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgogICAgICAgICBpZiAodmlzaXQgPT0g
SW5WaXNpdCkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmll
bGQobm9kZS0+Z2V0VHlwZSgpLmdldEZpZWxkTmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5
cGUoKSk7CisgICAgICAgICAgICBjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLT5n
ZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgICAgIGNvbnN0IFRJbnRl
cm1Db25zdGFudFVuaW9uKiBpbmRleCA9IG5vZGUtPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRV
bmlvbigpOworICAgICAgICAgICAgY29uc3QgVEZpZWxkKiBmaWVsZCA9IHN0cnVjdHVyZS0+Zmll
bGRzKClbaW5kZXgtPmdldElDb25zdCgwKV07CisgICAgICAgICAgICBvdXQgPDwgIi4iICsgZGVj
b3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSk7CiAK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtOTc0LDcgKzEzMjEsNyBA
QCBib29sIE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0CiAKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBpID0gZWxlbWVudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVswXS5n
ZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpID0gZWxlbWVudC0+Z2V0
SUNvbnN0KDApOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICB7CkBAIC0xMDIxLDE4ICsxMzY4LDE4IEBAIGJvb2wgT3V0cHV0SExT
TDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQKICAgICAgICAgICAgICAgICBvdXQgPDwgIiEoIjsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0ICpmaWVsZHMgPSBu
b2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgICAgIGNvbnN0
IFRGaWVsZExpc3QgJmZpZWxkcyA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdldFN0cnVj
dCgpLT5maWVsZHMoKTsKIAotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVs
ZHMtPnNpemUoKTsgaSsrKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVs
ZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgVFR5
cGUgKmZpZWxkVHlwZSA9ICgqZmllbGRzKVtpXS50eXBlOworICAgICAgICAgICAgICAgIGNvbnN0
IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CiAKICAgICAgICAgICAgICAgICBub2RlLT5nZXRM
ZWZ0KCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNv
cmF0ZUZpZWxkKGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCksIG5vZGUtPmdldExlZnQoKS0+Z2V0
VHlwZSgpKSArICIgPT0gIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIi4iICsgZGVjb3JhdGVG
aWVsZChmaWVsZC0+bmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSkgKyAiID09ICI7
CiAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0UmlnaHQoKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAg
ICAgICAgICAgICAgb3V0IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGRUeXBlLT5nZXRGaWVs
ZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgICAgIG91
dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksIG5vZGUtPmdldExlZnQoKS0+
Z2V0VHlwZSgpKTsKIAotICAgICAgICAgICAgICAgIGlmIChpIDwgZmllbGRzLT5zaXplKCkgLSAx
KQorICAgICAgICAgICAgICAgIGlmIChpIDwgZmllbGRzLnNpemUoKSAtIDEpCiAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAmJiAiOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTEyMzgsNyArMTU4NSw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdh
dGUoVmlzaXQgdmkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1JbnNpZGVGdW5jdGlvbikK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUt
PmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5n
ZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwogCiAg
ICAgICAgICAgICAgICAgbVNjb3BlRGVwdGgrKzsKQEAgLTEyNTUsNyArMTYwMiw3IEBAIGJvb2wg
T3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKIAogICAgICAgICAgICAgZm9yIChU
SW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHNpdCA9IG5vZGUtPmdldFNlcXVlbmNlKCkuYmVnaW4o
KTsgc2l0ICE9IG5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHNpdCsrKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpzaXQpLT5nZXRMaW5lKCkp
OworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUoKCpzaXQpLT5nZXRMaW5lKCku
Zmlyc3RfbGluZSk7CiAKICAgICAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMoKnNpdCk7
CiAKQEAgLTEyNjQsNyArMTYxMSw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUo
VmlzaXQgdmkKIAogICAgICAgICAgICAgaWYgKG1JbnNpZGVGdW5jdGlvbikKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEVuZExpbmUo
KSk7CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCku
bGFzdF9saW5lKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgIn1cbiI7CiAKICAgICAgICAgICAg
ICAgICBtU2NvcGVEZXB0aC0tOwpAQCAtMTI3NywxMyArMTYyNCwxMiBAQCBib29sIE91dHB1dEhM
U0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpCiAgICAgICAgIHsKICAgICAgICAgICAgIFRJbnRl
cm1TZXF1ZW5jZSAmc2VxdWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOwogICAgICAgICAgICAg
VEludGVybVR5cGVkICp2YXJpYWJsZSA9IHNlcXVlbmNlWzBdLT5nZXRBc1R5cGVkKCk7Ci0gICAg
ICAgICAgICBib29sIHZpc2l0ID0gdHJ1ZTsKIAogICAgICAgICAgICAgaWYgKHZhcmlhYmxlICYm
ICh2YXJpYWJsZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxVGVtcG9yYXJ5IHx8IHZhcmlhYmxlLT5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFHbG9iYWwpKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQogICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RydWN0b3IodmFyaWFibGUtPmdldFR5cGUo
KSwgc2NvcGVkU3RydWN0KHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSksIE5VTEwp
OworICAgICAgICAgICAgICAgICAgICBhZGRDb25zdHJ1Y3Rvcih2YXJpYWJsZS0+Z2V0VHlwZSgp
LCBzY29wZWRTdHJ1Y3QodmFyaWFibGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+bmFtZSgpKSwg
TlVMTCk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCF2YXJpYWJs
ZS0+Z2V0QXNTeW1ib2xOb2RlKCkgfHwgdmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRT
eW1ib2woKSAhPSAiIikgICAvLyBWYXJpYWJsZSBkZWNsYXJhdGlvbgpAQCAtMTMxMCwxOSArMTY1
NiwxMSBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKCpzaXQpLT50cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0ICYmIHRo
aXMtPmluVmlzaXQpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnNpdCAhPSBzZXF1ZW5j
ZS5iYWNrKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCpzaXQgIT0gc2VxdWVuY2UuYmFjaygpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXQgPSB0aGlz
LT52aXNpdEFnZ3JlZ2F0ZShJblZpc2l0LCBub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIsICI7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgICAgICBpZiAodmlzaXQgJiYgdGhpcy0+cG9zdFZpc2l0KQotICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT52aXNpdEFnZ3JlZ2F0ZShQb3N0Vmlz
aXQsIG5vZGUpOwotICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKHZhcmlhYmxlLT5nZXRBc1N5bWJvbE5vZGUoKSAmJiB2YXJp
YWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpID09ICIiKSAgIC8vIFR5cGUgKHN0
cnVjdCkgZGVjbGFyYXRpb24KICAgICAgICAgICAgICAgICB7CkBAIC0xMzMwLDcgKzE2NjgsMjQg
QEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhcmlhYmxlICYmICh2YXJpYWJs
ZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxVmFyeWluZ091dCB8fCB2YXJpYWJsZS0+Z2V0UXVhbGlm
aWVyKCkgPT0gRXZxSW52YXJpYW50VmFyeWluZ091dCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHNpdCA9IHNlcXVlbmNlLmJl
Z2luKCk7IHNpdCAhPSBzZXF1ZW5jZS5lbmQoKTsgc2l0KyspCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSAoKnNpdCktPmdldEFz
U3ltYm9sTm9kZSgpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFZlcnRleCAob3V0cHV0
KSB2YXJ5aW5ncyB3aGljaCBhcmUgZGVjbGFyZWQgYnV0IG5vdCB3cml0dGVuIHRvIHNob3VsZCBz
dGlsbCBiZSBkZWNsYXJlZCB0byBhbGxvdyBzdWNjZXNzZnVsIGxpbmtpbmcKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1SZWZlcmVuY2VkVmFyeWluZ3Nbc3ltYm9sLT5nZXRTeW1ib2woKV0gPSBz
eW1ib2w7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAoKnNpdCktPnRy
YXZlcnNlKHRoaXMpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICAgICAgZWxzZSBpZiAodmlzaXQgPT0gSW5WaXNpdCkKQEAgLTE0MDEsNyArMTc1Niw3IEBAIGJv
b2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKICAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChzeW1ib2wtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSkK
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3Ry
dWN0b3Ioc3ltYm9sLT5nZXRUeXBlKCksIHNjb3BlZFN0cnVjdChzeW1ib2wtPmdldFR5cGUoKS5n
ZXRUeXBlTmFtZSgpKSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRDb25zdHJ1
Y3RvcihzeW1ib2wtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KHN5bWJvbC0+Z2V0VHlwZSgpLmdl
dFN0cnVjdCgpLT5uYW1lKCkpLCBOVUxMKTsKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgICAgIG91dCA8PCBhcmd1bWVudFN0cmluZyhzeW1ib2wpOwpAQCAtMTQ0MSwx
NTEgKzE3OTYsMTYzIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkK
ICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEZ1bmN0aW9uQ2FsbDoKICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIFRTdHJpbmcgbmFtZSA9IFRGdW5jdGlvbjo6dW5tYW5nbGVOYW1lKG5vZGUtPmdl
dE5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBsb2QwID0gbUluc2lkZURpc2NvbnRpbnVv
dXNMb29wIHx8IG1PdXRwdXRMb2QwRnVuY3Rpb247CisgICAgICAgICAgICBUU3RyaW5nIG5hbWUg
PSBURnVuY3Rpb246OnVubWFuZ2xlTmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAg
Ym9vbCBsb2QwID0gbUluc2lkZURpc2NvbnRpbnVvdXNMb29wIHx8IG1PdXRwdXRMb2QwRnVuY3Rp
b247CiAKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+aXNVc2VyRGVmaW5lZCgpKQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgb3V0IDw8IGRlY29yYXRlKG5hbWUpIDw8
IChsb2QwID8gIkxvZDAoIiA6ICIoIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChub2RlLT5pc1VzZXJEZWZpbmVkKCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8IGRlY29yYXRlKG5hbWUpIDw8IChsb2QwID8g
IkxvZDAoIiA6ICIoIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gInRleHR1cmUyRCIpCiAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSA9PSAidGV4dHVyZTJEIikK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2QwKQogICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvZDApCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMikKICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVu
Y2UoKS5zaXplKCkgPT0gMikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJEID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJE
X2JpYXMgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmUyRCgiOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1Vc2VzVGV4dHVyZTJEID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCiAgICAgICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVl
bmNlKCkuc2l6ZSgpID09IDIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRExvZDAgPSB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0
dXJlMkRMb2QwX2JpYXMgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmUyRExvZDAoIjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRF9iaWFzID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFC
TEUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlMkQoIjsK
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1l
ID09ICJ0ZXh0dXJlMkRQcm9qIikKKyAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxvZDApCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMikKICAg
ICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMikKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJEUHJv
aiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtVXNlc1RleHR1cmUyRFByb2pfYmlhcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUo
KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJEUHJv
aigiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJETG9kMCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgp
LnNpemUoKSA9PSAzKQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bVVzZXNUZXh0dXJlMkRQcm9qTG9kMCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldFNlcXVl
bmNlKCkuc2l6ZSgpID09IDMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRFByb2pMb2QwX2JpYXMgPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdXQgPDwgImdsX3RleHR1cmUyRFByb2pMb2QwKCI7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbVVzZXNUZXh0dXJlMkRMb2QwX2JpYXMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmUyRExvZDAoIjsKICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09ICJ0
ZXh0dXJlQ3ViZSIpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYg
KG5hbWUgPT0gInRleHR1cmUyRFByb2oiKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFsb2QwKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIWxvZDApCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMikKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkg
PT0gMikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZUN1YmUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5n
ZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlQ3ViZV9iaWFzID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0IDw8ICJnbF90ZXh0dXJlQ3ViZSgiOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1Vc2VzVGV4dHVyZTJEUHJvaiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQogICAgICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5j
ZSgpLnNpemUoKSA9PSAyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlQ3ViZUxvZDAgPSB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0
dXJlQ3ViZUxvZDBfYmlhcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZUN1YmVMb2QwKCI7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRQcm9qX2JpYXMgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBV
TlJFQUNIQUJMRSgpOworCisgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1
cmUyRFByb2ooIjsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlMkRMb2QiKQorICAgICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDIpCisgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRQcm9qTG9kMCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQogICAgICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJE
TG9kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRFBy
b2pMb2QwX2JpYXMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogCi0gICAgICAgICAgICAgICAgICAg
ICAgICBvdXQgPDwgImdsX3RleHR1cmUyRExvZCgiOworICAgICAgICAgICAgICAgICAgICAgICAg
b3V0IDw8ICJnbF90ZXh0dXJlMkRQcm9qTG9kMCgiOwogICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmUyRFByb2pMb2QiKQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0
dXJlQ3ViZSIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWxv
ZDApCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDIpCisgICAgICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlQ3ViZSA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQogICAgICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJEUHJv
akxvZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlQ3Vi
ZV9iaWFzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAg
b3V0IDw8ICJnbF90ZXh0dXJlMkRQcm9qTG9kKCI7CisgICAgICAgICAgICAgICAgICAgICAgICBv
dXQgPDwgImdsX3RleHR1cmVDdWJlKCI7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVyZUN1YmVMb2QiKQorICAgICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDIpCisgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0
dXJlQ3ViZUxvZDAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykK
ICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
VXNlc1RleHR1cmVDdWJlTG9kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
VXNlc1RleHR1cmVDdWJlTG9kMF9iaWFzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKIAotICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlQ3ViZUxvZCgiOworICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlQ3ViZUxvZDAoIjsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChu
YW1lID09ICJ0ZXh0dXJlMkRMb2QiKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJETG9kID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVB
Q0hBQkxFKCk7CisKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlMkRMb2Qo
IjsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAi
dGV4dHVyZTJEUHJvakxvZCIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRQcm9qTG9kID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVB
Q0hBQkxFKCk7CisKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlMkRQcm9q
TG9kKCI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUg
PT0gInRleHR1cmVDdWJlTG9kIikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQorICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmVDdWJlTG9kID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVB
Q0hBQkxFKCk7CisKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlQ3ViZUxv
ZCgiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxF
KCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZpc2l0
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dCA8PCAiLCAiOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZWxzZQorCisgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgJmFy
Z3VtZW50cyA9IG5vZGUtPmdldFNlcXVlbmNlKCk7CisKKyAgICAgICAgICAgIGZvciAoVEludGVy
bVNlcXVlbmNlOjppdGVyYXRvciBhcmcgPSBhcmd1bWVudHMuYmVnaW4oKTsgYXJnICE9IGFyZ3Vt
ZW50cy5lbmQoKTsgYXJnKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0IDw8
ICIpIjsKKyAgICAgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBV
VCAmJiBJc1NhbXBsZXIoKCphcmcpLT5nZXRBc1R5cGVkKCktPmdldEJhc2ljVHlwZSgpKSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAidGV4dHVyZV8iOwor
ICAgICAgICAgICAgICAgICAgICAoKmFyZyktPnRyYXZlcnNlKHRoaXMpOworICAgICAgICAgICAg
ICAgICAgICBvdXQgPDwgIiwgc2FtcGxlcl8iOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICgqYXJnKS0+dHJhdmVyc2UodGhpcyk7CisKKyAgICAgICAgICAgICAgICBpZiAo
YXJnIDwgYXJndW1lbnRzLmVuZCgpIC0gMSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIG91dCA8PCAiLCAiOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgb3V0IDw8ICIpIjsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BQYXJhbWV0ZXJzOiAgICAg
ICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIsICIsICIpXG57XG4iKTsgICAgICAgICAgICAg
YnJlYWs7CkBAIC0xNjUwLDggKzIwMTcsOCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVn
YXRlKFZpc2l0IHZpCiAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJtYXQ0KCIsICIsICIs
ICIpIik7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RTdHJ1Y3Q6Ci0g
ICAgICAgIGFkZENvbnN0cnVjdG9yKG5vZGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5vZGUt
PmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOwotICAgICAg
ICBvdXRwdXRUcmlwbGV0KHZpc2l0LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdldFR5
cGVOYW1lKCkpICsgIl9jdG9yKCIsICIsICIsICIpIik7CisgICAgICAgIGFkZENvbnN0cnVjdG9y
KG5vZGUtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3Qo
KS0+bmFtZSgpKSwgJm5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgICAgICBvdXRwdXRUcmlwbGV0
KHZpc2l0LCBzdHJ1Y3RMb29rdXAobm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5uYW1lKCkp
ICsgIl9jdG9yKCIsICIsICIsICIpIik7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BM
ZXNzVGhhbjogICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgPCAiLCAiKSIpOyAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOiAgICAgIG91
dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiA+ICIsICIpIik7ICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTE3NDEsNyArMjEwOCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24o
VmlzaXQgdmkKIAogICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAgICAgIAotICAgICAgICBvdXRw
dXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIG91dHB1dExpbmVEaXJl
Y3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQgPDwgIntcbiI7
CiAKICAgICAgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQpAQCAtMTc0OSwyMCArMjExNiwy
MCBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpCiAgICAgICAgICAg
ICB0cmF2ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpOwogICAgICAgICB9CiAK
LSAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBv
dXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAg
b3V0IDw8ICI7XG59XG4iOwogCiAgICAgICAgIGlmIChub2RlLT5nZXRGYWxzZUJsb2NrKCkpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIG91dCA8PCAiZWxzZVxuIjsKIAotICAgICAgICAgICAgb3V0
cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7CisgICAg
ICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGlu
ZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwogCi0gICAgICAgICAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpKTsK
KyAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5n
ZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9k
ZS0+Z2V0RmFsc2VCbG9jaygpKTsKIAotICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShu
b2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKSk7CisgICAgICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwog
ICAgICAgICAgICAgb3V0IDw8ICI7XG59XG4iOwogICAgICAgICB9CiAgICAgfQpAQCAtMTc4NCw5
ICsyMTUxLDEyIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCAKICAg
ICAgICAgbUluc2lkZURpc2NvbnRpbnVvdXNMb29wID0gY29udGFpbnNMb29wRGlzY29udGludWl0
eShub2RlKTsKICAgICB9CiAKLSAgICBpZiAoaGFuZGxlRXhjZXNzaXZlTG9vcChub2RlKSkKKyAg
ICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAoaGFuZGxlRXhjZXNzaXZlTG9vcChub2RlKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgfQogCiAgICAg
VEluZm9TaW5rQmFzZSAmb3V0ID0gbUJvZHk7CkBAIC0xNzk1LDcgKzIxNjUsNyBAQCBib29sIE91
dHB1dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwgCiAgICAgewogICAgICAgICBvdXQgPDwg
Intkb1xuIjsKIAotICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7
CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUp
OwogICAgICAgICBvdXQgPDwgIntcbiI7CiAgICAgfQogICAgIGVsc2UKQEAgLTE4MjMsNyArMjE5
Myw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCAKIAogICAgICAg
ICBvdXQgPDwgIilcbiI7CiAgICAgICAgIAotICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5v
ZGUtPmdldExpbmUoKSk7CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGlu
ZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQgPDwgIntcbiI7CiAgICAgfQogCkBAIC0xODMy
LDEyICsyMjAyLDEyIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCAK
ICAgICAgICAgdHJhdmVyc2VTdGF0ZW1lbnRzKG5vZGUtPmdldEJvZHkoKSk7CiAgICAgfQogCi0g
ICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgIG91dHB1dExpbmVE
aXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgIG91dCA8PCAiO31cbiI7
CiAKICAgICBpZiAobm9kZS0+Z2V0VHlwZSgpID09IEVMb29wRG9XaGlsZSkKICAgICB7Ci0gICAg
ICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0Q29uZGl0aW9uKCktPmdldExpbmUoKSk7
CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0Q29uZGl0aW9uKCktPmdldExp
bmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8ICJ3aGlsZShcbiI7CiAKICAgICAgICAg
bm9kZS0+Z2V0Q29uZGl0aW9uKCktPnRyYXZlcnNlKHRoaXMpOwpAQCAtMTk3Nyw3ICsyMzQ3LDcg
QEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvbnN0YW50LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQgJiYgY29u
c3RhbnQtPmdldE5vbWluYWxTaXplKCkgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHN5bWJvbDsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbml0aWFsID0gY29uc3RhbnQtPmdldFVuaW9uQXJyYXlQb2ludGVy
KClbMF0uZ2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCA9
IGNvbnN0YW50LT5nZXRJQ29uc3QoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0xOTk5LDcgKzIzNjksNyBA
QCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAg
ICAgaWYgKGNvbnN0YW50LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQgJiYgY29uc3RhbnQtPmdl
dE5vbWluYWxTaXplKCkgPT0gMSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbXBhcmF0b3IgPSB0ZXN0LT5nZXRPcCgpOwotICAgICAgICAgICAgICAgICAgICBsaW1p
dCA9IGNvbnN0YW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpWzBdLmdldElDb25zdCgpOworICAg
ICAgICAgICAgICAgICAgICBsaW1pdCA9IGNvbnN0YW50LT5nZXRJQ29uc3QoMCk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMDIwLDcgKzIzOTAsNyBA
QCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0YW50LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQg
JiYgY29uc3RhbnQtPmdldE5vbWluYWxTaXplKCkgPT0gMSkKICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9IGNvbnN0YW50LT5nZXRVbmlvbkFycmF5UG9p
bnRlcigpWzBdLmdldElDb25zdCgpOworICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSBj
b25zdGFudC0+Z2V0SUNvbnN0KDApOwogCiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAob3Ap
CiAgICAgICAgICAgICAgICAgICAgIHsKQEAgLTIxMDksNyArMjQ3OSw3IEBAIGJvb2wgT3V0cHV0
SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcChUSW4KICAgICAgICAgICAgICAgICBvdXQgPDwgaW5j
cmVtZW50OwogICAgICAgICAgICAgICAgIG91dCA8PCAiKVxuIjsKICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7Cisg
ICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3Rf
bGluZSk7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwogCiAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmdldEJvZHkoKSkKQEAgLTIxMTcsNyArMjQ4Nyw3IEBAIGJvb2wgT3V0cHV0SExT
TDo6aGFuZGxlRXhjZXNzaXZlTG9vcChUSW4KICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0
Qm9keSgpLT50cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
ICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAg
ICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAg
ICAgICAgICAgICAgb3V0IDw8ICI7fVxuIjsKIAogICAgICAgICAgICAgICAgIGlmICghZmlyc3RM
b29wRnJhZ21lbnQpCkBAIC0yMTkyLDYgKzI1NjIsMTIgQEAgVFN0cmluZyBPdXRwdXRITFNMOjph
cmd1bWVudFN0cmluZyhjb25zdAogICAgICAgICBuYW1lID0gZGVjb3JhdGUobmFtZSk7CiAgICAg
fQogCisgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQgJiYgSXNTYW1wbGVy
KHR5cGUuZ2V0QmFzaWNUeXBlKCkpKQorICAgIHsKKyAgICAgICByZXR1cm4gcXVhbGlmaWVyU3Ry
aW5nKHF1YWxpZmllcikgKyAiICIgKyB0ZXh0dXJlU3RyaW5nKHR5cGUpICsgIiB0ZXh0dXJlXyIg
KyBuYW1lICsgYXJyYXlTdHJpbmcodHlwZSkgKyAiLCAiICsKKyAgICAgICAgICAgICAgcXVhbGlm
aWVyU3RyaW5nKHF1YWxpZmllcikgKyAiIFNhbXBsZXJTdGF0ZSBzYW1wbGVyXyIgKyBuYW1lICsg
YXJyYXlTdHJpbmcodHlwZSk7CisgICAgfQorCiAgICAgcmV0dXJuIHF1YWxpZmllclN0cmluZyhx
dWFsaWZpZXIpICsgIiAiICsgdHlwZVN0cmluZyh0eXBlKSArICIgIiArIG5hbWUgKyBhcnJheVN0
cmluZyh0eXBlKTsKIH0KIApAQCAtMjIxMywyMiArMjU4OSwyMyBAQCBUU3RyaW5nIE91dHB1dEhM
U0w6OnR5cGVTdHJpbmcoY29uc3QgVFR5CiB7CiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkg
PT0gRWJ0U3RydWN0KQogICAgIHsKLSAgICAgICAgaWYgKHR5cGUuZ2V0VHlwZU5hbWUoKSAhPSAi
IikKKyAgICAgICAgY29uc3QgVFN0cmluZyYgdHlwZU5hbWUgPSB0eXBlLmdldFN0cnVjdCgpLT5u
YW1lKCk7CisgICAgICAgIGlmICh0eXBlTmFtZSAhPSAiIikKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlLmdldFR5cGVOYW1lKCkpOworICAgICAgICAgICAg
cmV0dXJuIHN0cnVjdExvb2t1cCh0eXBlTmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSAg
IC8vIE5hbWVsZXNzIHN0cnVjdHVyZSwgZGVmaW5lIGluIHBsYWNlCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnN0IFRUeXBlTGlzdCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0KCk7CisgICAg
ICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVs
ZHMoKTsKIAogICAgICAgICAgICAgVFN0cmluZyBzdHJpbmcgPSAic3RydWN0XG4iCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRzW2ldLnR5cGU7CisgICAgICAg
ICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCA9IGZpZWxkc1tpXTsKIAotICAgICAgICAgICAg
ICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3RyaW5nKGZpZWxkKSArICIgIiArIGRlY29yYXRl
KGZpZWxkLmdldEZpZWxkTmFtZSgpKSArIGFycmF5U3RyaW5nKGZpZWxkKSArICI7XG4iOworICAg
ICAgICAgICAgICAgIHN0cmluZyArPSAiICAgICIgKyB0eXBlU3RyaW5nKCpmaWVsZC0+dHlwZSgp
KSArICIgIiArIGRlY29yYXRlKGZpZWxkLT5uYW1lKCkpICsgYXJyYXlTdHJpbmcoKmZpZWxkLT50
eXBlKCkpICsgIjtcbiI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHN0cmluZyArPSAi
fSAiOwpAQCAtMjI4NiwxMCArMjY2MywyOCBAQCBUU3RyaW5nIE91dHB1dEhMU0w6OnR5cGVTdHJp
bmcoY29uc3QgVFR5CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBVTklNUExFTUVOVEVEKCk7ICAg
Ly8gRklYTUUKKyAgICBVTlJFQUNIQUJMRSgpOwogICAgIHJldHVybiAiPHVua25vd24gdHlwZT4i
OwogfQogCitUU3RyaW5nIE91dHB1dEhMU0w6OnRleHR1cmVTdHJpbmcoY29uc3QgVFR5cGUgJnR5
cGUpCit7CisgICAgc3dpdGNoICh0eXBlLmdldEJhc2ljVHlwZSgpKQorICAgIHsKKyAgICAgIGNh
c2UgRWJ0U2FtcGxlcjJEOgorICAgICAgICByZXR1cm4gIlRleHR1cmUyRCI7CisgICAgICBjYXNl
IEVidFNhbXBsZXJDdWJlOgorICAgICAgICByZXR1cm4gIlRleHR1cmVDdWJlIjsKKyAgICAgIGNh
c2UgRWJ0U2FtcGxlckV4dGVybmFsT0VTOgorICAgICAgICByZXR1cm4gIlRleHR1cmUyRCI7Cisg
ICAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBVTlJFQUNIQUJMRSgp
OworICAgIHJldHVybiAiPHVua25vd24gdGV4dHVyZSB0eXBlPiI7Cit9CisKIFRTdHJpbmcgT3V0
cHV0SExTTDo6YXJyYXlTdHJpbmcoY29uc3QgVFR5cGUgJnR5cGUpCiB7CiAgICAgaWYgKCF0eXBl
LmlzQXJyYXkoKSkKQEAgLTIzMDQsMTEgKzI2OTksMTIgQEAgVFN0cmluZyBPdXRwdXRITFNMOjpp
bml0aWFsaXplcihjb25zdCBUVAogewogICAgIFRTdHJpbmcgc3RyaW5nOwogCi0gICAgZm9yIChp
bnQgY29tcG9uZW50ID0gMDsgY29tcG9uZW50IDwgdHlwZS5nZXRPYmplY3RTaXplKCk7IGNvbXBv
bmVudCsrKQorICAgIHNpemVfdCBzaXplID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAgZm9y
IChzaXplX3QgY29tcG9uZW50ID0gMDsgY29tcG9uZW50IDwgc2l6ZTsgY29tcG9uZW50KyspCiAg
ICAgewogICAgICAgICBzdHJpbmcgKz0gIjAiOwogCi0gICAgICAgIGlmIChjb21wb25lbnQgPCB0
eXBlLmdldE9iamVjdFNpemUoKSAtIDEpCisgICAgICAgIGlmIChjb21wb25lbnQgKyAxIDwgc2l6
ZSkKICAgICAgICAgewogICAgICAgICAgICAgc3RyaW5nICs9ICIsICI7CiAgICAgICAgIH0KQEAg
LTIzNDcsMTMgKzI3NDMsMTMgQEAgdm9pZCBPdXRwdXRITFNMOjphZGRDb25zdHJ1Y3Rvcihjb25z
dCBUVAogICAgICAgICBzdHJ1Y3R1cmUgKz0gInN0cnVjdCAiICsgZGVjb3JhdGUobmFtZSkgKyAi
XG4iCiAgICAgICAgICAgICAgICAgICAgICAie1xuIjsKIAotICAgICAgICBjb25zdCBUVHlwZUxp
c3QgJmZpZWxkcyA9ICp0eXBlLmdldFN0cnVjdCgpOworICAgICAgICBjb25zdCBURmllbGRMaXN0
ICZmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKIAogICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAg
ICAgICAgICAgY29uc3QgVFR5cGUgJmZpZWxkID0gKmZpZWxkc1tpXS50eXBlOworICAgICAgICAg
ICAgY29uc3QgVEZpZWxkICpmaWVsZCA9IGZpZWxkc1tpXTsKIAotICAgICAgICAgICAgc3RydWN0
dXJlICs9ICIgICAgIiArIHR5cGVTdHJpbmcoZmllbGQpICsgIiAiICsgZGVjb3JhdGVGaWVsZChm
aWVsZC5nZXRGaWVsZE5hbWUoKSwgdHlwZSkgKyBhcnJheVN0cmluZyhmaWVsZCkgKyAiO1xuIjsK
KyAgICAgICAgICAgIHN0cnVjdHVyZSArPSAiICAgICIgKyB0eXBlU3RyaW5nKCpmaWVsZC0+dHlw
ZSgpKSArICIgIiArIGRlY29yYXRlRmllbGQoZmllbGQtPm5hbWUoKSwgdHlwZSkgKyBhcnJheVN0
cmluZygqZmllbGQtPnR5cGUoKSkgKyAiO1xuIjsKICAgICAgICAgfQogCiAgICAgICAgIHN0cnVj
dHVyZSArPSAifTtcbiI7CkBAIC0yMzY1LDcgKzI3NjEsNyBAQCB2b2lkIE91dHB1dEhMU0w6OmFk
ZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgIHsKLSAgICAgICAgICAgIGN0b3JQYXJh
bWV0ZXJzLnB1c2hfYmFjaygqZmllbGRzW2ldLnR5cGUpOworICAgICAgICAgICAgY3RvclBhcmFt
ZXRlcnMucHVzaF9iYWNrKCpmaWVsZHNbaV0tPnR5cGUoKSk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgZWxzZSBpZiAocGFyYW1ldGVycykKQEAgLTI0NTgsMjcgKzI4NTQsMzAgQEAgdm9pZCBPdXRw
dXRITFNMOjphZGRDb25zdHJ1Y3Rvcihjb25zdCBUVAogICAgIH0KICAgICBlbHNlCiAgICAgewot
ICAgICAgICBpbnQgcmVtYWluaW5nQ29tcG9uZW50cyA9IGN0b3JUeXBlLmdldE9iamVjdFNpemUo
KTsKLSAgICAgICAgaW50IHBhcmFtZXRlckluZGV4ID0gMDsKKyAgICAgICAgc2l6ZV90IHJlbWFp
bmluZ0NvbXBvbmVudHMgPSBjdG9yVHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIHNpemVf
dCBwYXJhbWV0ZXJJbmRleCA9IDA7CiAKICAgICAgICAgd2hpbGUgKHJlbWFpbmluZ0NvbXBvbmVu
dHMgPiAwKQogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBUVHlwZSAmcGFyYW1ldGVyID0g
Y3RvclBhcmFtZXRlcnNbcGFyYW1ldGVySW5kZXhdOwotICAgICAgICAgICAgYm9vbCBtb3JlUGFy
YW1ldGVycyA9IHBhcmFtZXRlckluZGV4IDwgKGludCljdG9yUGFyYW1ldGVycy5zaXplKCkgLSAx
OworICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHBhcmFtZXRlclNpemUgPSBwYXJhbWV0ZXIuZ2V0
T2JqZWN0U2l6ZSgpOworICAgICAgICAgICAgYm9vbCBtb3JlUGFyYW1ldGVycyA9IHBhcmFtZXRl
ckluZGV4ICsgMSA8IGN0b3JQYXJhbWV0ZXJzLnNpemUoKTsKIAogICAgICAgICAgICAgY29uc3Ry
dWN0b3IgKz0gIngiICsgc3RyKHBhcmFtZXRlckluZGV4KTsKIAogICAgICAgICAgICAgaWYgKHBh
cmFtZXRlci5pc1NjYWxhcigpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlbWFp
bmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQocGFyYW1ldGVyU2l6ZSA8PSByZW1haW5pbmdDb21wb25lbnRzKTsKKyAgICAg
ICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRzIC09IHBhcmFtZXRlclNpemU7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChwYXJhbWV0ZXIuaXNWZWN0b3IoKSkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAocmVtYWluaW5nQ29tcG9uZW50cyA9PSBwYXJh
bWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpIHx8IG1vcmVQYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAg
IGlmIChyZW1haW5pbmdDb21wb25lbnRzID09IHBhcmFtZXRlclNpemUgfHwgbW9yZVBhcmFtZXRl
cnMpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdDb21w
b25lbnRzIC09IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJlbWFpbmluZ0NvbXBvbmVudHMpOworICAgICAgICAg
ICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRzIC09IHBhcmFtZXRlclNpemU7CiAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlbWFpbmluZ0NvbXBvbmVudHMg
PCBwYXJhbWV0ZXIuZ2V0Tm9taW5hbFNpemUoKSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChy
ZW1haW5pbmdDb21wb25lbnRzIDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXJhbWV0ZXIuZ2V0Tm9t
aW5hbFNpemUoKSkpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKHJlbWFpbmluZ0NvbXBvbmVudHMpCiAgICAgICAgICAgICAgICAgICAgIHsKQEAgLTI0OTUs
OSArMjg5NCwxMCBAQCB2b2lkIE91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChwYXJhbWV0ZXIuaXNNYXRyaXgoKSB8
fCBwYXJhbWV0ZXIuZ2V0U3RydWN0KCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKHJlbWFpbmluZ0NvbXBvbmVudHMgPT0gcGFyYW1ldGVyLmdldE9iamVjdFNpemUoKSB8
fCBtb3JlUGFyYW1ldGVycyk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHJlbWFpbmluZ0NvbXBv
bmVudHMgPT0gcGFyYW1ldGVyU2l6ZSB8fCBtb3JlUGFyYW1ldGVycyk7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKHBhcmFtZXRlclNpemUgPD0gcmVtYWluaW5nQ29tcG9uZW50cyk7CiAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgcmVtYWluaW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0
ZXIuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMg
LT0gcGFyYW1ldGVyU2l6ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgVU5SRUFD
SEFCTEUoKTsKIApAQCAtMjUzNCwxNyArMjkzNCwxNyBAQCBjb25zdCBDb25zdGFudFVuaW9uICpP
dXRwdXRITFNMOjp3cml0ZUNvCiAKICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRT
dHJ1Y3QpCiAgICAgewotICAgICAgICBvdXQgPDwgc3RydWN0TG9va3VwKHR5cGUuZ2V0VHlwZU5h
bWUoKSkgKyAiX2N0b3IoIjsKKyAgICAgICAgb3V0IDw8IHN0cnVjdExvb2t1cCh0eXBlLmdldFN0
cnVjdCgpLT5uYW1lKCkpICsgIl9jdG9yKCI7CiAgICAgICAgIAotICAgICAgICBjb25zdCBUVHlw
ZUxpc3QgKnN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7CisgICAgICAgIGNvbnN0IFRGaWVs
ZExpc3QgJmZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCi0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RydWN0dXJlLT5zaXplKCk7IGkrKykKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICpmaWVsZFR5cGUgPSAoKnN0cnVjdHVyZSlbaV0udHlwZTsKKyAg
ICAgICAgICAgIGNvbnN0IFRUeXBlICpmaWVsZFR5cGUgPSBmaWVsZHNbaV0tPnR5cGUoKTsKIAog
ICAgICAgICAgICAgY29uc3RVbmlvbiA9IHdyaXRlQ29uc3RhbnRVbmlvbigqZmllbGRUeXBlLCBj
b25zdFVuaW9uKTsKIAotICAgICAgICAgICAgaWYgKGkgIT0gc3RydWN0dXJlLT5zaXplKCkgLSAx
KQorICAgICAgICAgICAgaWYgKGkgIT0gZmllbGRzLnNpemUoKSAtIDEpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgb3V0IDw8ICIsICI7CiAgICAgICAgICAgICB9CkBAIC0yNTU0LDcg
KzI5NTQsNyBAQCBjb25zdCBDb25zdGFudFVuaW9uICpPdXRwdXRITFNMOjp3cml0ZUNvCiAgICAg
fQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGludCBzaXplID0gdHlwZS5nZXRPYmplY3RTaXpl
KCk7CisgICAgICAgIHNpemVfdCBzaXplID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CiAgICAgICAg
IGJvb2wgd3JpdGVUeXBlID0gc2l6ZSA+IDE7CiAgICAgICAgIAogICAgICAgICBpZiAod3JpdGVU
eXBlKQpAQCAtMjU2Miw3ICsyOTYyLDcgQEAgY29uc3QgQ29uc3RhbnRVbmlvbiAqT3V0cHV0SExT
TDo6d3JpdGVDbwogICAgICAgICAgICAgb3V0IDw8IHR5cGVTdHJpbmcodHlwZSkgPDwgIigiOwog
ICAgICAgICB9CiAKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyssIGNvbnN0
VW5pb24rKykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyssIGNvbnN0
VW5pb24rKykKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChjb25zdFVuaW9uLT5nZXRU
eXBlKCkpCiAgICAgICAgICAgICB7CkBAIC0yNjQxLDExICszMDQxLDcgQEAgVFN0cmluZyBPdXRw
dXRITFNMOjpkZWNvcmF0ZShjb25zdCBUU3RyaQogCiBUU3RyaW5nIE91dHB1dEhMU0w6OmRlY29y
YXRlVW5pZm9ybShjb25zdCBUU3RyaW5nICZzdHJpbmcsIGNvbnN0IFRUeXBlICZ0eXBlKQogewot
ICAgIGlmICh0eXBlLmlzQXJyYXkoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAiYXJfIiArIHN0
cmluZzsgICAvLyBBbGxvd3MgaWRlbnRpZnlpbmcgYXJyYXlzIG9mIHNpemUgMQotICAgIH0KLSAg
ICBlbHNlIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFNhbXBsZXJFeHRlcm5hbE9FUykK
KyAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVMpCiAg
ICAgewogICAgICAgICByZXR1cm4gImV4XyIgKyBzdHJpbmc7CiAgICAgfQpAQCAtMjY1NSwxMSAr
MzA1MSwyMDIgQEAgVFN0cmluZyBPdXRwdXRITFNMOjpkZWNvcmF0ZVVuaWZvcm0oY29ucwogCiBU
U3RyaW5nIE91dHB1dEhMU0w6OmRlY29yYXRlRmllbGQoY29uc3QgVFN0cmluZyAmc3RyaW5nLCBj
b25zdCBUVHlwZSAmc3RydWN0dXJlKQogewotICAgIGlmIChzdHJ1Y3R1cmUuZ2V0VHlwZU5hbWUo
KS5jb21wYXJlKDAsIDMsICJnbF8iKSAhPSAwKQorICAgIGlmIChzdHJ1Y3R1cmUuZ2V0U3RydWN0
KCktPm5hbWUoKS5jb21wYXJlKDAsIDMsICJnbF8iKSAhPSAwKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGRlY29yYXRlKHN0cmluZyk7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0cmluZzsKIH0KKwor
VFN0cmluZyBPdXRwdXRITFNMOjpyZWdpc3RlclN0cmluZyhUSW50ZXJtU3ltYm9sICpvcGVyYW5k
KQoreworICAgIEFTU0VSVChvcGVyYW5kLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFVbmlmb3JtKTsK
KworICAgIGlmIChJc1NhbXBsZXIob3BlcmFuZC0+Z2V0QmFzaWNUeXBlKCkpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICJzIiArIHN0cihzYW1wbGVyUmVnaXN0ZXIob3BlcmFuZCkpOworICAgIH0K
KworICAgIHJldHVybiAiYyIgKyBzdHIodW5pZm9ybVJlZ2lzdGVyKG9wZXJhbmQpKTsKK30KKwor
aW50IE91dHB1dEhMU0w6OnNhbXBsZXJSZWdpc3RlcihUSW50ZXJtU3ltYm9sICpzYW1wbGVyKQor
eworICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gc2FtcGxlci0+Z2V0VHlwZSgpOworICAgIEFTU0VS
VChJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpOworCisgICAgaW50IGluZGV4ID0gbVNh
bXBsZXJSZWdpc3RlcjsKKyAgICBtU2FtcGxlclJlZ2lzdGVyICs9IHNhbXBsZXItPnRvdGFsUmVn
aXN0ZXJDb3VudCgpOworCisgICAgZGVjbGFyZVVuaWZvcm0odHlwZSwgc2FtcGxlci0+Z2V0U3lt
Ym9sKCksIGluZGV4KTsKKworICAgIHJldHVybiBpbmRleDsKK30KKworaW50IE91dHB1dEhMU0w6
OnVuaWZvcm1SZWdpc3RlcihUSW50ZXJtU3ltYm9sICp1bmlmb3JtKQoreworICAgIGNvbnN0IFRU
eXBlICZ0eXBlID0gdW5pZm9ybS0+Z2V0VHlwZSgpOworICAgIEFTU0VSVCghSXNTYW1wbGVyKHR5
cGUuZ2V0QmFzaWNUeXBlKCkpKTsKKworICAgIGludCBpbmRleCA9IG1Vbmlmb3JtUmVnaXN0ZXI7
CisgICAgbVVuaWZvcm1SZWdpc3RlciArPSB1bmlmb3JtLT50b3RhbFJlZ2lzdGVyQ291bnQoKTsK
KworICAgIGRlY2xhcmVVbmlmb3JtKHR5cGUsIHVuaWZvcm0tPmdldFN5bWJvbCgpLCBpbmRleCk7
CisKKyAgICByZXR1cm4gaW5kZXg7Cit9CisKK3ZvaWQgT3V0cHV0SExTTDo6ZGVjbGFyZVVuaWZv
cm0oY29uc3QgVFR5cGUgJnR5cGUsIGNvbnN0IFRTdHJpbmcgJm5hbWUsIGludCBpbmRleCkKK3sK
KyAgICBUU3RydWN0dXJlICpzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOworCisgICAgaWYg
KCFzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBtQWN0aXZlVW5pZm9ybXMucHVzaF9iYWNrKFVu
aWZvcm0oZ2xWYXJpYWJsZVR5cGUodHlwZSksIGdsVmFyaWFibGVQcmVjaXNpb24odHlwZSksIG5h
bWUuY19zdHIoKSwgdHlwZS5nZXRBcnJheVNpemUoKSwgaW5kZXgpKTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0gc3RydWN0dXJlLT5m
aWVsZHMoKTsKKworICAgICAgICBpZiAodHlwZS5pc0FycmF5KCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGludCBlbGVtZW50SW5kZXggPSBpbmRleDsKKworICAgICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCB0eXBlLmdldEFycmF5U2l6ZSgpOyBpKyspCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBmaWVsZHMuc2l6ZSgpOyBqKyspCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmZmllbGRU
eXBlID0gKmZpZWxkc1tqXS0+dHlwZSgpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3Ry
aW5nIHVuaWZvcm1OYW1lID0gbmFtZSArICJbIiArIHN0cihpKSArICJdLiIgKyBmaWVsZHNbal0t
Pm5hbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgZGVjbGFyZVVuaWZvcm0oZmllbGRUeXBlLCB1
bmlmb3JtTmFtZSwgZWxlbWVudEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudElu
ZGV4ICs9IGZpZWxkVHlwZS50b3RhbFJlZ2lzdGVyQ291bnQoKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgICBpbnQgZmllbGRJbmRleCA9IGluZGV4OworCisgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zdCBUVHlwZSAmZmllbGRUeXBlID0gKmZpZWxkc1tpXS0+dHlwZSgpOworICAg
ICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgdW5pZm9ybU5hbWUgPSBuYW1lICsgIi4iICsgZmll
bGRzW2ldLT5uYW1lKCk7CisgICAgICAgICAgICAgICAgZGVjbGFyZVVuaWZvcm0oZmllbGRUeXBl
LCB1bmlmb3JtTmFtZSwgZmllbGRJbmRleCk7CisgICAgICAgICAgICAgICAgZmllbGRJbmRleCAr
PSBmaWVsZFR5cGUudG90YWxSZWdpc3RlckNvdW50KCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9Cit9CisKK0dMZW51bSBPdXRwdXRITFNMOjpnbFZhcmlhYmxlVHlwZShjb25zdCBU
VHlwZSAmdHlwZSkKK3sKKyAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkK
KyAgICB7CisgICAgICAgIGlmICh0eXBlLmlzU2NhbGFyKCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBHTF9GTE9BVDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh0eXBlLmlz
VmVjdG9yKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCh0eXBlLmdldE5vbWluYWxT
aXplKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIEdMX0ZM
T0FUX1ZFQzI7CisgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIEdMX0ZMT0FUX1ZFQzM7Cisg
ICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIEdMX0ZMT0FUX1ZFQzQ7CisgICAgICAgICAgICAg
IGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSBpZiAodHlwZS5pc01hdHJpeCgpKQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0
Y2godHlwZS5nZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBj
YXNlIDI6IHJldHVybiBHTF9GTE9BVF9NQVQyOworICAgICAgICAgICAgICBjYXNlIDM6IHJldHVy
biBHTF9GTE9BVF9NQVQzOworICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBHTF9GTE9BVF9N
QVQ0OworICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisgICAgZWxz
ZSBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQpCisgICAgeworICAgICAgICBpZiAo
dHlwZS5pc1NjYWxhcigpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xfSU5UOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHR5cGUuaXNWZWN0b3IoKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgc3dpdGNoKHR5cGUuZ2V0Tm9taW5hbFNpemUoKSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gR0xfSU5UX1ZFQzI7CisgICAgICAgICAgICAg
IGNhc2UgMzogcmV0dXJuIEdMX0lOVF9WRUMzOworICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVy
biBHTF9JTlRfVkVDNDsKKyAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisgICAg
fQorICAgIGVsc2UgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0Qm9vbCkKKyAgICB7Cisg
ICAgICAgIGlmICh0eXBlLmlzU2NhbGFyKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBHTF9CT09MOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHR5cGUuaXNWZWN0b3IoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoKHR5cGUuZ2V0Tm9taW5hbFNpemUoKSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gR0xfQk9PTF9WRUMyOwor
ICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBHTF9CT09MX1ZFQzM7CisgICAgICAgICAgICAg
IGNhc2UgNDogcmV0dXJuIEdMX0JPT0xfVkVDNDsKKyAgICAgICAgICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIFVOUkVB
Q0hBQkxFKCk7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0
U2FtcGxlcjJEKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX1NBTVBMRVJfMkQ7CisgICAgfQor
ICAgIGVsc2UgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U2FtcGxlckN1YmUpCisgICAg
eworICAgICAgICByZXR1cm4gR0xfU0FNUExFUl9DVUJFOworICAgIH0KKyAgICBlbHNlIFVOUkVB
Q0hBQkxFKCk7CisKKyAgICByZXR1cm4gR0xfTk9ORTsKK30KKworR0xlbnVtIE91dHB1dEhMU0w6
OmdsVmFyaWFibGVQcmVjaXNpb24oY29uc3QgVFR5cGUgJnR5cGUpCit7CisgICAgaWYgKHR5cGUu
Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUu
Z2V0UHJlY2lzaW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEVicEhpZ2g6ICAgcmV0
dXJuIEdMX0hJR0hfRkxPQVQ7CisgICAgICAgICAgY2FzZSBFYnBNZWRpdW06IHJldHVybiBHTF9N
RURJVU1fRkxPQVQ7CisgICAgICAgICAgY2FzZSBFYnBMb3c6ICAgIHJldHVybiBHTF9MT1dfRkxP
QVQ7CisgICAgICAgICAgY2FzZSBFYnBVbmRlZmluZWQ6CisgICAgICAgICAgICAvLyBTaG91bGQg
YmUgZGVmaW5lZCBhcyB0aGUgZGVmYXVsdCBwcmVjaXNpb24gYnkgdGhlIHBhcnNlcgorICAgICAg
ICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBp
ZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQpCisgICAgeworICAgICAgICBzd2l0Y2gg
KHR5cGUuZ2V0UHJlY2lzaW9uKCkpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEVicEhpZ2g6
ICAgcmV0dXJuIEdMX0hJR0hfSU5UOworICAgICAgICAgIGNhc2UgRWJwTWVkaXVtOiByZXR1cm4g
R0xfTUVESVVNX0lOVDsKKyAgICAgICAgICBjYXNlIEVicExvdzogICAgcmV0dXJuIEdMX0xPV19J
TlQ7CisgICAgICAgICAgY2FzZSBFYnBVbmRlZmluZWQ6CisgICAgICAgICAgICAvLyBTaG91bGQg
YmUgZGVmaW5lZCBhcyB0aGUgZGVmYXVsdCBwcmVjaXNpb24gYnkgdGhlIHBhcnNlcgorICAgICAg
ICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBP
dGhlciB0eXBlcyAoYm9vbGVhbiwgc2FtcGxlcikgZG9uJ3QgaGF2ZSBhIHByZWNpc2lvbgorICAg
IHJldHVybiBHTF9OT05FOworfQorCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvT3V0cHV0SExTTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgog
Ly8KQEAgLTksOSArOSwxNCBAQAogCiAjaW5jbHVkZSA8bGlzdD4KICNpbmNsdWRlIDxzZXQ+Cisj
aW5jbHVkZSA8bWFwPgorCisjZGVmaW5lIEdMX0FQSUNBTEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIu
aD4KIAogI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5oIgogI2luY2x1ZGUgImNvbXBp
bGVyL1BhcnNlSGVscGVyLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvVW5pZm9ybS5oIgogCiBuYW1l
c3BhY2Ugc2gKIHsKQEAgLTIwLDE0ICsyNSwxNiBAQCBjbGFzcyBVbmZvbGRTaG9ydENpcmN1aXQ7
CiBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIHsKICAgcHVibGlj
OgotICAgIGV4cGxpY2l0IE91dHB1dEhMU0woVFBhcnNlQ29udGV4dCAmY29udGV4dCk7CisgICAg
T3V0cHV0SExTTChUUGFyc2VDb250ZXh0ICZjb250ZXh0LCBjb25zdCBTaEJ1aWx0SW5SZXNvdXJj
ZXMmIHJlc291cmNlcywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSk7CiAgICAgfk91dHB1dEhM
U0woKTsKIAogICAgIHZvaWQgb3V0cHV0KCk7CiAKICAgICBUSW5mb1NpbmtCYXNlICZnZXRCb2R5
U3RyZWFtKCk7CisgICAgY29uc3QgQWN0aXZlVW5pZm9ybXMgJmdldFVuaWZvcm1zKCk7CiAKICAg
ICBUU3RyaW5nIHR5cGVTdHJpbmcoY29uc3QgVFR5cGUgJnR5cGUpOworICAgIFRTdHJpbmcgdGV4
dHVyZVN0cmluZyhjb25zdCBUVHlwZSAmdHlwZSk7CiAgICAgc3RhdGljIFRTdHJpbmcgcXVhbGlm
aWVyU3RyaW5nKFRRdWFsaWZpZXIgcXVhbGlmaWVyKTsKICAgICBzdGF0aWMgVFN0cmluZyBhcnJh
eVN0cmluZyhjb25zdCBUVHlwZSAmdHlwZSk7CiAgICAgc3RhdGljIFRTdHJpbmcgaW5pdGlhbGl6
ZXIoY29uc3QgVFR5cGUgJnR5cGUpOwpAQCAtNjQsNiArNzEsNyBAQCBjbGFzcyBPdXRwdXRITFNM
IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAgICAgVFN0cmluZyBzdHJ1Y3RMb29rdXAoY29uc3Qg
VFN0cmluZyAmdHlwZU5hbWUpOwogCiAgICAgVFBhcnNlQ29udGV4dCAmbUNvbnRleHQ7CisgICAg
Y29uc3QgU2hTaGFkZXJPdXRwdXQgbU91dHB1dFR5cGU7CiAgICAgVW5mb2xkU2hvcnRDaXJjdWl0
ICptVW5mb2xkU2hvcnRDaXJjdWl0OwogICAgIGJvb2wgbUluc2lkZUZ1bmN0aW9uOwogCkBAIC03
Miw5ICs4MCwxMCBAQCBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAg
ICAgVEluZm9TaW5rQmFzZSBtQm9keTsKICAgICBUSW5mb1NpbmtCYXNlIG1Gb290ZXI7CiAKLSAg
ICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gbVJlZmVyZW5jZWRVbmlmb3JtczsKLSAgICBzdGQ6OnNl
dDxzdGQ6OnN0cmluZz4gbVJlZmVyZW5jZWRBdHRyaWJ1dGVzOwotICAgIHN0ZDo6c2V0PHN0ZDo6
c3RyaW5nPiBtUmVmZXJlbmNlZFZhcnlpbmdzOworICAgIHR5cGVkZWYgc3RkOjptYXA8VFN0cmlu
ZywgVEludGVybVN5bWJvbCo+IFJlZmVyZW5jZWRTeW1ib2xzOworICAgIFJlZmVyZW5jZWRTeW1i
b2xzIG1SZWZlcmVuY2VkVW5pZm9ybXM7CisgICAgUmVmZXJlbmNlZFN5bWJvbHMgbVJlZmVyZW5j
ZWRBdHRyaWJ1dGVzOworICAgIFJlZmVyZW5jZWRTeW1ib2xzIG1SZWZlcmVuY2VkVmFyeWluZ3M7
CiAKICAgICAvLyBQYXJhbWV0ZXJzIGRldGVybWluaW5nIHdoYXQgZ29lcyBpbiB0aGUgaGVhZGVy
IG91dHB1dAogICAgIGJvb2wgbVVzZXNUZXh0dXJlMkQ7CkBAIC05MiwxMSArMTAxLDE0IEBAIGNs
YXNzIE91dHB1dEhMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnMKICAgICBib29sIG1Vc2VzVGV4
dHVyZTJEUHJvakxvZDBfYmlhczsKICAgICBib29sIG1Vc2VzVGV4dHVyZUN1YmVMb2QwOwogICAg
IGJvb2wgbVVzZXNUZXh0dXJlQ3ViZUxvZDBfYmlhczsKKyAgICBib29sIG1Vc2VzRnJhZ0NvbG9y
OworICAgIGJvb2wgbVVzZXNGcmFnRGF0YTsKICAgICBib29sIG1Vc2VzRGVwdGhSYW5nZTsKICAg
ICBib29sIG1Vc2VzRnJhZ0Nvb3JkOwogICAgIGJvb2wgbVVzZXNQb2ludENvb3JkOwogICAgIGJv
b2wgbVVzZXNGcm9udEZhY2luZzsKICAgICBib29sIG1Vc2VzUG9pbnRTaXplOworICAgIGJvb2wg
bVVzZXNGcmFnRGVwdGg7CiAgICAgYm9vbCBtVXNlc1hvcjsKICAgICBib29sIG1Vc2VzTW9kMTsK
ICAgICBib29sIG1Vc2VzTW9kMnY7CkBAIC0xMjYsNiArMTM4LDggQEAgY2xhc3MgT3V0cHV0SExT
TCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVycwogICAgIGJvb2wgbVVzZXNBdGFuMl8zOwogICAgIGJv
b2wgbVVzZXNBdGFuMl80OwogCisgICAgaW50IG1OdW1SZW5kZXJUYXJnZXRzOworCiAgICAgdHlw
ZWRlZiBzdGQ6OnNldDxUU3RyaW5nPiBDb25zdHJ1Y3RvcnM7CiAgICAgQ29uc3RydWN0b3JzIG1D
b25zdHJ1Y3RvcnM7CiAKQEAgLTE0Niw2ICsxNjAsMTggQEAgY2xhc3MgT3V0cHV0SExTTCA6IHB1
YmxpYyBUSW50ZXJtVHJhdmVycwogICAgIGJvb2wgbUluc2lkZURpc2NvbnRpbnVvdXNMb29wOwog
CiAgICAgVEludGVybVN5bWJvbCAqbUV4Y2Vzc2l2ZUxvb3BJbmRleDsKKworICAgIGludCBtVW5p
Zm9ybVJlZ2lzdGVyOworICAgIGludCBtU2FtcGxlclJlZ2lzdGVyOworCisgICAgVFN0cmluZyBy
ZWdpc3RlclN0cmluZyhUSW50ZXJtU3ltYm9sICpvcGVyYW5kKTsKKyAgICBpbnQgc2FtcGxlclJl
Z2lzdGVyKFRJbnRlcm1TeW1ib2wgKnNhbXBsZXIpOworICAgIGludCB1bmlmb3JtUmVnaXN0ZXIo
VEludGVybVN5bWJvbCAqdW5pZm9ybSk7CisgICAgdm9pZCBkZWNsYXJlVW5pZm9ybShjb25zdCBU
VHlwZSAmdHlwZSwgY29uc3QgVFN0cmluZyAmbmFtZSwgaW50IGluZGV4KTsKKyAgICBzdGF0aWMg
R0xlbnVtIGdsVmFyaWFibGVUeXBlKGNvbnN0IFRUeXBlICZ0eXBlKTsKKyAgICBzdGF0aWMgR0xl
bnVtIGdsVmFyaWFibGVQcmVjaXNpb24oY29uc3QgVFR5cGUgJnR5cGUpOworCisgICAgQWN0aXZl
VW5pZm9ybXMgbUFjdGl2ZVVuaWZvcm1zOwogfTsKIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwCShyZXZpc2lv
biAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VI
ZWxwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0yMiw3ICsyMiw3IEBACiAvLyBMb29rIGF0IGEgJy4n
IGZpZWxkIHNlbGVjdG9yIHN0cmluZyBhbmQgY2hhbmdlIGl0IGludG8gb2Zmc2V0cwogLy8gZm9y
IGEgdmVjdG9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VWZWN0b3JGaWVsZHMoY29u
c3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmIGZpZWxk
cywgaW50IGxpbmUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKGNvbnN0
IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCB2ZWNTaXplLCBUVmVjdG9yRmllbGRzJiBmaWVsZHMs
IGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgZmllbGRzLm51bSA9IChpbnQpIGNvbXBT
dHJpbmcuc2l6ZSgpOwogICAgIGlmIChmaWVsZHMubnVtID4gNCkgewpAQCAtMTE1LDcgKzExNSw3
IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VWZWN0b3JGaWVsZHMoY28KIC8vIExvb2sgYXQg
YSAnLicgZmllbGQgc2VsZWN0b3Igc3RyaW5nIGFuZCBjaGFuZ2UgaXQgaW50byBvZmZzZXRzCiAv
LyBmb3IgYSBtYXRyaXguCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJzZU1hdHJpeEZpZWxk
cyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgbWF0U2l6ZSwgVE1hdHJpeEZpZWxkcyYg
ZmllbGRzLCBpbnQgbGluZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VNYXRyaXhGaWVsZHMo
Y29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IG1hdFNpemUsIFRNYXRyaXhGaWVsZHMmIGZp
ZWxkcywgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBmaWVsZHMud2hvbGVSb3cgPSBm
YWxzZTsKICAgICBmaWVsZHMud2hvbGVDb2wgPSBmYWxzZTsKQEAgLTE3NSwyMiArMTc1LDI0IEBA
IHZvaWQgVFBhcnNlQ29udGV4dDo6cmVjb3ZlcigpCiAvLwogLy8gVXNlZCBieSBmbGV4L2Jpc29u
IHRvIG91dHB1dCBhbGwgc3ludGF4IGFuZCBwYXJzaW5nIGVycm9ycy4KIC8vCi12b2lkIFRQYXJz
ZUNvbnRleHQ6OmVycm9yKFRTb3VyY2VMb2MgbG9jLAordm9pZCBUUGFyc2VDb250ZXh0OjplcnJv
cihjb25zdCBUU291cmNlTG9jJiBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIHJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBleHRyYUluZm8pCiB7CiAgICAgcHA6OlNvdXJjZUxvY2F0aW9uIHNy
Y0xvYzsKLSAgICBEZWNvZGVTb3VyY2VMb2MobG9jLCAmc3JjTG9jLmZpbGUsICZzcmNMb2MubGlu
ZSk7CisgICAgc3JjTG9jLmZpbGUgPSBsb2MuZmlyc3RfZmlsZTsKKyAgICBzcmNMb2MubGluZSA9
IGxvYy5maXJzdF9saW5lOwogICAgIGRpYWdub3N0aWNzLndyaXRlSW5mbyhwcDo6RGlhZ25vc3Rp
Y3M6OkVSUk9SLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNMb2MsIHJlYXNvbiwgdG9r
ZW4sIGV4dHJhSW5mbyk7CiAKIH0KIAotdm9pZCBUUGFyc2VDb250ZXh0Ojp3YXJuaW5nKFRTb3Vy
Y2VMb2MgbG9jLAordm9pZCBUUGFyc2VDb250ZXh0Ojp3YXJuaW5nKGNvbnN0IFRTb3VyY2VMb2Mm
IGxvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWFzb24sIGNv
bnN0IGNoYXIqIHRva2VuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGV4dHJhSW5mbykgewogICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBzcmNMb2M7Ci0gICAgRGVjb2Rl
U291cmNlTG9jKGxvYywgJnNyY0xvYy5maWxlLCAmc3JjTG9jLmxpbmUpOworICAgIHNyY0xvYy5m
aWxlID0gbG9jLmZpcnN0X2ZpbGU7CisgICAgc3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsK
ICAgICBkaWFnbm9zdGljcy53cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpXQVJOSU5HLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBzcmNMb2MsIHJlYXNvbiwgdG9rZW4sIGV4dHJhSW5mbyk7
CiB9CkBAIC0yMDMsNyArMjA1LDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0Ojp0cmFjZShjb25zdCBj
aGFyKiBzdAogLy8KIC8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxsIHBsYWNlcyBhc3NpZ25t
ZW50cyBkb24ndCB3b3JrLgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6YXNzaWduRXJyb3IoaW50
IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpCit2b2lk
IFRQYXJzZUNvbnRleHQ6OmFzc2lnbkVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0
IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpCiB7CiAgICAgc3RkOjpzdHJp
bmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwogICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiY2Fubm90
IGNvbnZlcnQgZnJvbSAnIiA8PCByaWdodCA8PCAiJyB0byAnIiA8PCBsZWZ0IDw8ICInIjsKQEAg
LTIxNCw3ICsyMTYsNyBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OmFzc2lnbkVycm9yKGludCBsaW5l
CiAvLwogLy8gU2FtZSBlcnJvciBtZXNzYWdlIGZvciBhbGwgcGxhY2VzIHVuYXJ5IG9wZXJhdGlv
bnMgZG9uJ3Qgd29yay4KIC8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OnVuYXJ5T3BFcnJvcihpbnQg
bGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgb3BlcmFuZCkKK3ZvaWQgVFBhcnNlQ29udGV4
dDo6dW5hcnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBU
U3RyaW5nIG9wZXJhbmQpCiB7CiAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFt
OwogICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAibm8gb3BlcmF0aW9uICciIDw8IG9wIDw8ICInIGV4
aXN0cyB0aGF0IHRha2VzIGFuIG9wZXJhbmQgb2YgdHlwZSAiIDw8IG9wZXJhbmQgCkBAIC0yMjYs
NyArMjI4LDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJyb3IoaW50IGxpbgogLy8K
IC8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxsIGJpbmFyeSBvcGVyYXRpb25zIGRvbid0IHdv
cmsuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0OjpiaW5hcnlPcEVycm9yKGludCBsaW5lLCBjb25z
dCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQordm9pZCBUUGFyc2VDb250
ZXh0OjpiaW5hcnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9w
LCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpCiB7CiAgICAgc3RkOjpzdHJpbmdzdHJlYW0g
ZXh0cmFJbmZvU3RyZWFtOwogICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAibm8gb3BlcmF0aW9uICci
IDw8IG9wIDw8ICInIGV4aXN0cyB0aGF0IHRha2VzIGEgbGVmdC1oYW5kIG9wZXJhbmQgb2YgdHlw
ZSAnIiA8PCBsZWZ0IApAQCAtMjM1LDcgKzIzNyw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6Ymlu
YXJ5T3BFcnJvcihpbnQgbGkKICAgICBlcnJvcihsaW5lLCAiIHdyb25nIG9wZXJhbmQgdHlwZXMg
Iiwgb3AsIGV4dHJhSW5mby5jX3N0cigpKTsgCiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6cHJl
Y2lzaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgVFByZWNpc2lvbiBwcmVjaXNpb24sIFRCYXNpY1R5
cGUgdHlwZSl7Citib29sIFRQYXJzZUNvbnRleHQ6OnByZWNpc2lvbkVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgVFByZWNpc2lvbiBwcmVjaXNpb24sIFRCYXNpY1R5cGUgdHlwZSl7
CiAgICAgaWYgKCFjaGVja3NQcmVjaXNpb25FcnJvcnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBzd2l0Y2goIHR5cGUgKXsKQEAgLTI2Myw3ICsyNjUsNyBAQCBib29sIFRQYXJzZUNvbnRl
eHQ6OnByZWNpc2lvbkVycm9yQ2hlY2soCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3YXMg
YW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGludCBs
aW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKiBub2RlKQorYm9vbCBUUGFyc2VDb250
ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIq
IG9wLCBUSW50ZXJtVHlwZWQqIG5vZGUpCiB7CiAgICAgVEludGVybVN5bWJvbCogc3ltTm9kZSA9
IG5vZGUtPmdldEFzU3ltYm9sTm9kZSgpOwogICAgIFRJbnRlcm1CaW5hcnkqIGJpbmFyeU5vZGUg
PSBub2RlLT5nZXRBc0JpbmFyeU5vZGUoKTsKQEAgLTI4Niw3ICsyODgsNyBAQCBib29sIFRQYXJz
ZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soaW50CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHAgPSBhZ2dyTm9kZS0+Z2V0
U2VxdWVuY2UoKS5iZWdpbigpOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcCAhPSBhZ2dyTm9kZS0+Z2V0U2VxdWVuY2UoKS5lbmQoKTsgcCsrKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9ICgqcCktPmdldEFzVHlwZWQoKS0+Z2V0QXND
b25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpOworICAg
ICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSAoKnApLT5nZXRBc1R5cGVkKCktPmdldEFzQ29u
c3RhbnRVbmlvbigpLT5nZXRJQ29uc3QoMCk7CiAgICAgICAgICAgICAgICAgICAgIG9mZnNldFt2
YWx1ZV0rKzsgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0W3ZhbHVlXSA+IDEp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICIgbC12YWx1ZSBvZiBzd2l6
emxlIGNhbm5vdCBoYXZlIGR1cGxpY2F0ZSBjb21wb25lbnRzIiwgb3ApOwpAQCAtMzE3LDcgKzMx
OSw2IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhpbnQKICAgICBjYXNl
IEV2cUF0dHJpYnV0ZTogICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhbiBhdHRyaWJ1dGUi
OyAgIGJyZWFrOwogICAgIGNhc2UgRXZxVW5pZm9ybTogICAgICAgIG1lc3NhZ2UgPSAiY2FuJ3Qg
bW9kaWZ5IGEgdW5pZm9ybSI7ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFWYXJ5aW5nSW46ICAg
ICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYSB2YXJ5aW5nIjsgICAgICBicmVhazsKLSAgICBj
YXNlIEV2cUlucHV0OiAgICAgICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhbiBpbnB1dCI7
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxRnJhZ0Nvb3JkOiAgICAgIG1lc3NhZ2UgPSAiY2Fu
J3QgbW9kaWZ5IGdsX0ZyYWdDb29yZCI7ICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcm9udEZhY2lu
ZzogICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfRnJvbnRGYWNpbmciOyBicmVhazsKICAg
ICBjYXNlIEV2cVBvaW50Q29vcmQ6ICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBnbF9Qb2lu
dENvb3JkIjsgIGJyZWFrOwpAQCAtNDA5LDcgKzQxMCw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
aW50ZWdlckVycm9yQ2hlY2soVEkKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdhcyBhbiBl
cnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2soaW50IGxpbmUs
IGJvb2wgZ2xvYmFsLCBjb25zdCBjaGFyKiB0b2tlbikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Z2xv
YmFsRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBib29sIGdsb2JhbCwgY29uc3Qg
Y2hhciogdG9rZW4pCiB7CiAgICAgaWYgKGdsb2JhbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNDI4LDcgKzQyOSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Z2xvYmFsRXJyb3JDaGVjayhp
bnQKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wg
VFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUU3RyaW5n
JiBpZGVudGlmaWVyKQorYm9vbCBUUGFyc2VDb250ZXh0OjpyZXNlcnZlZEVycm9yQ2hlY2soY29u
c3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKIHsKICAgICBz
dGF0aWMgY29uc3QgY2hhciogcmVzZXJ2ZWRFcnJNc2cgPSAicmVzZXJ2ZWQgYnVpbHQtaW4gbmFt
ZSI7CiAgICAgaWYgKCFzeW1ib2xUYWJsZS5hdEJ1aWx0SW5MZXZlbCgpKSB7CkBAIC00NjYsNyAr
NDY3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpyZXNlcnZlZEVycm9yQ2hlY2soaQogLy8KIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gY29uc3RydWN0aW9uLgogLy8K
LWJvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWNrKGludCBsaW5lLCBUSW50
ZXJtTm9kZSogbm9kZSwgVEZ1bmN0aW9uJiBmdW5jdGlvbiwgVE9wZXJhdG9yIG9wLCBUVHlwZSog
dHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1Ob2RlKiBub2RlLCBURnVuY3Rpb24mIGZ1bmN0aW9uLCBU
T3BlcmF0b3Igb3AsIFRUeXBlKiB0eXBlKQogewogICAgICp0eXBlID0gZnVuY3Rpb24uZ2V0UmV0
dXJuVHlwZSgpOwogCkBAIC00ODcsNyArNDg4LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25z
dHJ1Y3RvckVycm9yQ2hlYwogICAgIC8vIGFnYWluLCB0aGVyZSBpcyBhbiBleHRyYSBhcmd1bWVu
dCwgc28gJ292ZXJmdWxsJyB3aWxsIGJlY29tZSB0cnVlLgogICAgIC8vCiAKLSAgICBpbnQgc2l6
ZSA9IDA7CisgICAgc2l6ZV90IHNpemUgPSAwOwogICAgIGJvb2wgY29uc3RUeXBlID0gdHJ1ZTsK
ICAgICBib29sIGZ1bGwgPSBmYWxzZTsKICAgICBib29sIG92ZXJGdWxsID0gZmFsc2U7CkBAIC01
MzQsNyArNTM1LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlYwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgaWYgKG9wID09IEVPcENvbnN0
cnVjdFN0cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgpICYmIGludCh0eXBlLT5nZXRTdHJ1Y3QoKS0+
c2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkpIHsKKyAgICBpZiAob3AgPT0gRU9w
Q29uc3RydWN0U3RydWN0ICYmICF0eXBlLT5pc0FycmF5KCkgJiYgaW50KHR5cGUtPmdldFN0cnVj
dCgpLT5maWVsZHMoKS5zaXplKCkpICE9IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSkgewogICAg
ICAgICBlcnJvcihsaW5lLCAiTnVtYmVyIG9mIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZG9lcyBu
b3QgbWF0Y2ggdGhlIG51bWJlciBvZiBzdHJ1Y3R1cmUgZmllbGRzIiwgImNvbnN0cnVjdG9yIik7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTU2OCw3ICs1NjksNyBAQCBib29sIFRQ
YXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjCiAvLwogLy8gcmV0dXJucyB0cnVlIGlu
IGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJvckNoZWNr
KGludCBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBUUHVibGljVHlwZSYg
cHViVHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6dm9pZEVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgVFB1YmxpY1R5cGUm
IHB1YlR5cGUpCiB7CiAgICAgaWYgKHB1YlR5cGUudHlwZSA9PSBFYnRWb2lkKSB7CiAgICAgICAg
IGVycm9yKGxpbmUsICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsIGlkZW50aWZpZXIuY19z
dHIoKSk7CkBAIC01ODIsNyArNTgzLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JD
aGVjayhpbnQgbAogLy8KIC8vIHJldHVybnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCiAvLwot
Ym9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVEludGVy
bVR5cGVkKiB0eXBlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBjb25zdCBUSW50ZXJtVHlwZWQqIHR5cGUpCiB7CiAgICAgaWYgKHR5
cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidEJvb2wgfHwgdHlwZS0+aXNBcnJheSgpIHx8IHR5cGUt
PmlzTWF0cml4KCkgfHwgdHlwZS0+aXNWZWN0b3IoKSkgewogICAgICAgICBlcnJvcihsaW5lLCAi
Ym9vbGVhbiBleHByZXNzaW9uIGV4cGVjdGVkIiwgIiIpOwpAQCAtNTk2LDcgKzU5Nyw3IEBAIGJv
b2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soaW50IGwKIC8vCiAvLyByZXR1cm5zIHRy
dWUgaW4gY2FzZSBvZiBhbiBlcnJvcgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9y
Q2hlY2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSkKK2Jvb2wgVFBhcnNlQ29u
dGV4dDo6Ym9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFB1Ymxp
Y1R5cGUmIHBUeXBlKQogewogICAgIGlmIChwVHlwZS50eXBlICE9IEVidEJvb2wgfHwgcFR5cGUu
YXJyYXkgfHwgcFR5cGUubWF0cml4IHx8IChwVHlwZS5zaXplID4gMSkpIHsKICAgICAgICAgZXJy
b3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3RlZCIsICIiKTsKQEAgLTYwNiw3ICs2
MDcsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGludCBsCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGlu
dCBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUsIGNvbnN0IGNoYXIqIHJlYXNvbikKK2Jv
b2wgVFBhcnNlQ29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiByZWFzb24pCiB7CiAgICAg
aWYgKHBUeXBlLnR5cGUgPT0gRWJ0U3RydWN0KSB7CiAgICAgICAgIGlmIChjb250YWluc1NhbXBs
ZXIoKnBUeXBlLnVzZXJEZWYpKSB7CkBAIC02MjUsNyArNjI2LDcgQEAgYm9vbCBUUGFyc2VDb250
ZXh0OjpzYW1wbGVyRXJyb3JDaGVjayhpbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBU
UGFyc2VDb250ZXh0OjpzdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBU
UHVibGljVHlwZSYgcFR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBl
KQogewogICAgIGlmICgocFR5cGUucXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8fCBwVHlwZS5x
dWFsaWZpZXIgPT0gRXZxVmFyeWluZ091dCB8fCBwVHlwZS5xdWFsaWZpZXIgPT0gRXZxQXR0cmli
dXRlKSAmJgogICAgICAgICBwVHlwZS50eXBlID09IEVidFN0cnVjdCkgewpAQCAtNjQwLDcgKzY0
MSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0UXVhbGlmaWVyRXJyb3IKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1ldGVyU2FtcGxlckVycm9y
Q2hlY2soaW50IGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBjb25zdCBUVHlwZSYgdHlwZSkK
K2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNv
dXJjZUxvYyYgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlJiB0eXBlKQog
ewogICAgIGlmICgocXVhbGlmaWVyID09IEV2cU91dCB8fCBxdWFsaWZpZXIgPT0gRXZxSW5PdXQp
ICYmIAogICAgICAgICAgICAgIHR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0ICYmIElz
U2FtcGxlcih0eXBlLmdldEJhc2ljVHlwZSgpKSkgewpAQCAtNjU3LDkgKzY1OCw5IEBAIGJvb2wg
VFBhcnNlQ29udGV4dDo6Y29udGFpbnNTYW1wbGVyKFRUeXAKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKLSAgICAgICAg
VFR5cGVMaXN0JiBzdHJ1Y3R1cmUgPSAqdHlwZS5nZXRTdHJ1Y3QoKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
ICAgIGlmIChjb250YWluc1NhbXBsZXIoKnN0cnVjdHVyZVtpXS50eXBlKSkKKyAgICAgICAgY29u
c3QgVEZpZWxkTGlzdCYgZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpmaWVsZHNbaV0tPnR5cGUoKSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC02NzIsNyArNjcz
LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb250YWluc1NhbXBsZXIoVFR5cAogLy8KIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0
OjphcnJheVNpemVFcnJvckNoZWNrKGludCBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYg
c2l6ZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjayhjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSkKIHsKICAgICBUSW50
ZXJtQ29uc3RhbnRVbmlvbiogY29uc3RhbnQgPSBleHByLT5nZXRBc0NvbnN0YW50VW5pb24oKTsK
ICAgICBpZiAoY29uc3RhbnQgPT0gMCB8fCBjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0
SW50KSB7CkBAIC02ODAsNyArNjgxLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNpemVF
cnJvckNoZWNrKAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzaXplID0gY29u
c3RhbnQtPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpOworICAgIHNpemUgPSBj
b25zdGFudC0+Z2V0SUNvbnN0KDApOwogCiAgICAgaWYgKHNpemUgPD0gMCkgewogICAgICAgICBl
cnJvcihsaW5lLCAiYXJyYXkgc2l6ZSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIsICIiKTsK
QEAgLTY5Niw3ICs2OTcsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVycm9yQ2hl
Y2soCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIGlzIGFuIGVycm9yLgogLy8KLWJvb2wg
VFBhcnNlQ29udGV4dDo6YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKGludCBsaW5lLCBUUHVibGlj
VHlwZSB0eXBlKQorYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVF1YWxpZmllckVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKIHsKICAgICBpZiAoKHR5
cGUucXVhbGlmaWVyID09IEV2cUF0dHJpYnV0ZSkgfHwgKHR5cGUucXVhbGlmaWVyID09IEV2cUNv
bnN0KSkgewogICAgICAgICBlcnJvcihsaW5lLCAiY2Fubm90IGRlY2xhcmUgYXJyYXlzIG9mIHRo
aXMgcXVhbGlmaWVyIiwgVFR5cGUodHlwZSkuZ2V0Q29tcGxldGVTdHJpbmcoKS5jX3N0cigpKTsK
QEAgLTcxMSw3ICs3MTIsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJy
b3JDCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIGlzIGFuIGVycm9yLgogLy8KLWJvb2wg
VFBhcnNlQ29udGV4dDo6YXJyYXlUeXBlRXJyb3JDaGVjayhpbnQgbGluZSwgVFB1YmxpY1R5cGUg
dHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlUeXBlRXJyb3JDaGVjayhjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBUUHVibGljVHlwZSB0eXBlKQogewogICAgIC8vCiAgICAgLy8gQ2FuIHRo
ZSB0eXBlIGJlIGFuIGFycmF5PwpAQCAtNzMyLDcgKzczMyw3IEBAIGJvb2wgVFBhcnNlQ29udGV4
dDo6YXJyYXlUeXBlRXJyb3JDaGVjaygKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2Fz
IGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlFcnJvckNoZWNrKGludCBs
aW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSB0eXBlLCBUVmFyaWFibGUqJiB2
YXJpYWJsZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlIHR5cGUsIFRWYXJp
YWJsZSomIHZhcmlhYmxlKQogewogICAgIC8vCiAgICAgLy8gRG9uJ3QgY2hlY2sgZm9yIHJlc2Vy
dmVkIHdvcmQgdXNlIHVudGlsIGFmdGVyIHdlIGtub3cgaXQncyBub3QgaW4gdGhlIHN5bWJvbCB0
YWJsZSwKQEAgLTc3NywxNiArNzc4LDYgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheUVycm9y
Q2hlY2soaW50IAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAg
ICBUVHlwZSogdCA9IHZhcmlhYmxlLT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpOwotICAgICAg
ICB3aGlsZSAodCAhPSAwKSB7Ci0gICAgICAgICAgICBpZiAodC0+Z2V0TWF4QXJyYXlTaXplKCkg
PiB0eXBlLmFycmF5U2l6ZSkgewotICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICJoaWdoZXIg
aW5kZXggdmFsdWUgYWxyZWFkeSB1c2VkIGZvciB0aGUgYXJyYXkiLCBpZGVudGlmaWVyLmNfc3Ry
KCkpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgdC0+c2V0QXJyYXlTaXplKHR5cGUuYXJyYXlTaXplKTsKLSAgICAgICAgICAgIHQgPSB0
LT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpOwotICAgICAgICB9Ci0KICAgICAgICAgaWYgKHR5
cGUuYXJyYXlTaXplKQogICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRBcnJheVNp
emUodHlwZS5hcnJheVNpemUpOwogICAgIH0gCkBAIC03OTcsNTYgKzc4OCwxMiBAQCBib29sIFRQ
YXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayhpbnQgCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2V0TWF4U2l6ZShUSW50ZXJtU3ltYm9sICpub2Rl
LCBUVHlwZSogdHlwZSwgaW50IHNpemUsIGJvb2wgdXBkYXRlRmxhZywgVFNvdXJjZUxvYyBsaW5l
KQotewotICAgIGJvb2wgYnVpbHRJbiA9IGZhbHNlOwotICAgIFRTeW1ib2wqIHN5bWJvbCA9IHN5
bWJvbFRhYmxlLmZpbmQobm9kZS0+Z2V0U3ltYm9sKCksICZidWlsdEluKTsKLSAgICBpZiAoc3lt
Ym9sID09IDApIHsKLSAgICAgICAgZXJyb3IobGluZSwgIiB1bmRlY2xhcmVkIGlkZW50aWZpZXIi
LCBub2RlLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSBzdGF0aWNfY2FzdDxUVmFyaWFibGUqPihzeW1i
b2wpOwotCi0gICAgdHlwZS0+c2V0QXJyYXlJbmZvcm1hdGlvblR5cGUodmFyaWFibGUtPmdldEFy
cmF5SW5mb3JtYXRpb25UeXBlKCkpOwotICAgIHZhcmlhYmxlLT51cGRhdGVBcnJheUluZm9ybWF0
aW9uVHlwZSh0eXBlKTsKLQotICAgIC8vIHNwZWNpYWwgY2FzaW5nIHRvIHRlc3QgaW5kZXggdmFs
dWUgb2YgZ2xfRnJhZ0RhdGEuIElmIHRoZSBhY2Nlc3NlZCBpbmRleCBpcyA+PSBnbF9NYXhEcmF3
QnVmZmVycwotICAgIC8vIGl0cyBhbiBlcnJvcgotICAgIGlmIChub2RlLT5nZXRTeW1ib2woKSA9
PSAiZ2xfRnJhZ0RhdGEiKSB7Ci0gICAgICAgIFRTeW1ib2wqIGZyYWdEYXRhID0gc3ltYm9sVGFi
bGUuZmluZCgiZ2xfTWF4RHJhd0J1ZmZlcnMiLCAmYnVpbHRJbik7Ci0gICAgICAgIEFTU0VSVChm
cmFnRGF0YSk7Ci0KLSAgICAgICAgaW50IGZyYWdEYXRhVmFsdWUgPSBzdGF0aWNfY2FzdDxUVmFy
aWFibGUqPihmcmFnRGF0YSktPmdldENvbnN0UG9pbnRlcigpWzBdLmdldElDb25zdCgpOwotICAg
ICAgICBpZiAoZnJhZ0RhdGFWYWx1ZSA8PSBzaXplKSB7Ci0gICAgICAgICAgICBlcnJvcihsaW5l
LCAiIiwgIlsiLCAiZ2xfRnJhZ0RhdGEgY2FuIG9ubHkgaGF2ZSBhIG1heCBhcnJheSBzaXplIG9m
IHVwIHRvIGdsX01heERyYXdCdWZmZXJzIik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIC8vIHdlIGRvbnQgd2FudCB0byB1cGRhdGUgdGhlIG1heEFy
cmF5U2l6ZSB3aGVuIHRoaXMgZmxhZyBpcyBub3Qgc2V0LCB3ZSBqdXN0IHdhbnQgdG8gaW5jbHVk
ZSB0aGlzIAotICAgIC8vIG5vZGUgdHlwZSBpbiB0aGUgY2hhaW4gb2Ygbm9kZSB0eXBlcyBzbyB0
aGF0IGl0cyB1cGRhdGVkIHdoZW4gYSBoaWdoZXIgbWF4QXJyYXlTaXplIGNvbWVzIGluLgotICAg
IGlmICghdXBkYXRlRmxhZykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc2l6ZSsrOwot
ICAgIHZhcmlhYmxlLT5nZXRUeXBlKCkuc2V0TWF4QXJyYXlTaXplKHNpemUpOwotICAgIHR5cGUt
PnNldE1heEFycmF5U2l6ZShzaXplKTsKLSAgICBUVHlwZSogdHQgPSB0eXBlOwotCi0gICAgd2hp
bGUodHQtPmdldEFycmF5SW5mb3JtYXRpb25UeXBlKCkgIT0gMCkgewotICAgICAgICB0dCA9IHR0
LT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpOwotICAgICAgICB0dC0+c2V0TWF4QXJyYXlTaXpl
KHNpemUpOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogLy8KIC8vIEVuZm9yY2Ug
bm9uLWluaXRpYWxpemVyIHR5cGUvcXVhbGlmaWVyIHJ1bGVzLgogLy8KIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0
Q29uc3RFcnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlw
ZSYgdHlwZSwgYm9vbCBhcnJheSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6bm9uSW5pdENvbnN0RXJy
b3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVi
bGljVHlwZSYgdHlwZSwgYm9vbCBhcnJheSkKIHsKICAgICBpZiAodHlwZS5xdWFsaWZpZXIgPT0g
RXZxQ29uc3QpCiAgICAgewpAQCAtODc4LDcgKzgyNSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
bm9uSW5pdENvbnN0RXJyb3JDaGUKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFu
IGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6bm9uSW5pdEVycm9yQ2hlY2soaW50IGxp
bmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBUVmFyaWFibGUqJiB2
YXJpYWJsZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6bm9uSW5pdEVycm9yQ2hlY2soY29uc3QgVFNv
dXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIFRW
YXJpYWJsZSomIHZhcmlhYmxlKQogewogICAgIGlmIChyZXNlcnZlZEVycm9yQ2hlY2sobGluZSwg
aWRlbnRpZmllcikpCiAgICAgICAgIHJlY292ZXIoKTsKQEAgLTg5OCw3ICs4NDUsNyBAQCBib29s
IFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNrKGluCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayhpbnQgbGluZSwgVFF1YWxp
ZmllciBxdWFsaWZpZXIsIFRRdWFsaWZpZXIgcGFyYW1RdWFsaWZpZXIsIFRUeXBlKiB0eXBlKQor
Ym9vbCBUUGFyc2VDb250ZXh0OjpwYXJhbUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIFRRdWFsaWZpZXIgcGFyYW1RdWFsaWZpZXIsIFRUeXBl
KiB0eXBlKQogeyAgICAKICAgICBpZiAocXVhbGlmaWVyICE9IEV2cUNvbnN0ICYmIHF1YWxpZmll
ciAhPSBFdnFUZW1wb3JhcnkpIHsKICAgICAgICAgZXJyb3IobGluZSwgInF1YWxpZmllciBub3Qg
YWxsb3dlZCBvbiBmdW5jdGlvbiBwYXJhbWV0ZXIiLCBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlm
aWVyKSk7CkBAIC05MTcsNyArODY0LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJhbUVycm9y
Q2hlY2soaW50IAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0Ojpl
eHRlbnNpb25FcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUU3RyaW5nJiBleHRlbnNpb24pCiti
b29sIFRQYXJzZUNvbnRleHQ6OmV4dGVuc2lvbkVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYg
bGluZSwgY29uc3QgVFN0cmluZyYgZXh0ZW5zaW9uKQogewogICAgIGNvbnN0IFRFeHRlbnNpb25C
ZWhhdmlvciYgZXh0QmVoYXZpb3IgPSBleHRlbnNpb25CZWhhdmlvcigpOwogICAgIFRFeHRlbnNp
b25CZWhhdmlvcjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGV4dEJlaGF2aW9yLmZpbmQoZXh0ZW5z
aW9uLmNfc3RyKCkpOwpAQCAtOTQ1LDE4ICs4OTIsMTcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpz
dXBwb3J0c0V4dGVuc2lvbihjbwogICAgIHJldHVybiAoaXRlciAhPSBleHRiZWhhdmlvci5lbmQo
KSk7CiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6aGFuZGxlRXh0ZW5zaW9uRGlyZWN0aXZlKGlu
dCBsaW5lLCBjb25zdCBjaGFyKiBleHROYW1lLCBjb25zdCBjaGFyKiBiZWhhdmlvcikKK2Jvb2wg
VFBhcnNlQ29udGV4dDo6aXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IGNoYXIqIGV4dGVuc2lvbikg
Y29uc3QKIHsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jOwotICAgIERlY29kZVNvdXJjZUxv
YyhsaW5lLCAmbG9jLmZpbGUsICZsb2MubGluZSk7Ci0gICAgZGlyZWN0aXZlSGFuZGxlci5oYW5k
bGVFeHRlbnNpb24obG9jLCBleHROYW1lLCBiZWhhdmlvcik7Ci19CisgICAgY29uc3QgVEV4dGVu
c2lvbkJlaGF2aW9yJiBleHRiZWhhdmlvciA9IGV4dGVuc2lvbkJlaGF2aW9yKCk7CisgICAgYXV0
byBpdGVyID0gZXh0YmVoYXZpb3IuZmluZChleHRlbnNpb24pOwogCi12b2lkIFRQYXJzZUNvbnRl
eHQ6OmhhbmRsZVByYWdtYURpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogbmFtZSwgY29u
c3QgY2hhciogdmFsdWUpCi17Ci0gICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYzsKLSAgICBEZWNv
ZGVTb3VyY2VMb2MobGluZSwgJmxvYy5maWxlLCAmbG9jLmxpbmUpOwotICAgIGRpcmVjdGl2ZUhh
bmRsZXIuaGFuZGxlUHJhZ21hKGxvYywgbmFtZSwgdmFsdWUpOworICAgIGlmIChpdGVyID09IGV4
dGJlaGF2aW9yLmVuZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHJldHVybiAoaXRlci0+c2Vjb25kID09IEVCaEVuYWJsZSB8fCBpdGVyLT5zZWNvbmQgPT0g
RUJoUmVxdWlyZSk7CiB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtOTcwLDEyICs5
MTYsMTMgQEAgdm9pZCBUUGFyc2VDb250ZXh0OjpoYW5kbGVQcmFnbWFEaXJlY3RpdgogLy8KIC8v
IFJldHVybiB0aGUgZnVuY3Rpb24gc3ltYm9sIGlmIGZvdW5kLCBvdGhlcndpc2UgMC4KIC8vCi1j
b25zdCBURnVuY3Rpb24qIFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1
bmN0aW9uKiBjYWxsLCBib29sICpidWlsdEluKQorY29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250
ZXh0OjpmaW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBjYWxs
LCBib29sICpidWlsdEluKQogewogICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUg
dG8gY2hlY2sgd2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgogICAgIC8vIGhpZGRl
biBieSBhIHZhcmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgorICAgIC8vIElmIGEgZnVu
Y3Rpb24gaXMgZm91bmQsIGNoZWNrIGZvciBvbmUgd2l0aCBhIG1hdGNoaW5nIGFyZ3VtZW50IGxp
c3QuCiAgICAgY29uc3QgVFN5bWJvbCogc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZChjYWxsLT5n
ZXROYW1lKCksIGJ1aWx0SW4pOwotICAgIGlmIChzeW1ib2wgPT0gMCkgeworICAgIGlmIChzeW1i
b2wgPT0gMCB8fCBzeW1ib2wtPmlzRnVuY3Rpb24oKSkgewogICAgICAgICBzeW1ib2wgPSBzeW1i
b2xUYWJsZS5maW5kKGNhbGwtPmdldE1hbmdsZWROYW1lKCksIGJ1aWx0SW4pOwogICAgIH0KIApA
QCAtOTk2LDcgKzk0Myw3IEBAIGNvbnN0IFRGdW5jdGlvbiogVFBhcnNlQ29udGV4dDo6ZmluZEZ1
bmMKIC8vIEluaXRpYWxpemVycyBzaG93IHVwIGluIHNldmVyYWwgcGxhY2VzIGluIHRoZSBncmFt
bWFyLiAgSGF2ZSBvbmUgc2V0IG9mCiAvLyBjb2RlIHRvIGhhbmRsZSB0aGVtIGhlcmUuCiAvLwot
Ym9vbCBUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIoVFNvdXJjZUxvYyBsaW5lLCBU
U3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsIAorYm9vbCBUUGFyc2VDb250
ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYg
aWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHBUeXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5pdGlhbGl6ZXIsIFRJbnRlcm1Ob2RlKiYg
aW50ZXJtTm9kZSwgVFZhcmlhYmxlKiB2YXJpYWJsZSkKIHsKICAgICBUVHlwZSB0eXBlID0gVFR5
cGUocFR5cGUpOwpAQCAtMTA0OCwxMyArOTk1LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpleGVj
dXRlSW5pdGlhbGl6ZXIoVAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgeyAKLSAgICAgICAg
ICAgIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29uc3RQb2ludGVy
KCk7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlLmdldE9iamVjdFNpemUoKSA9PSAxICYmIHR5cGUu
Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgICAgICAgICAgKnVuaW9uQXJy
YXkgPSAoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9p
bnRlcigpKVswXTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFyaWFi
bGUtPnNoYXJlQ29uc3RQb2ludGVyKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+
Z2V0VW5pb25BcnJheVBvaW50ZXIoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB2YXJp
YWJsZS0+c2hhcmVDb25zdFBvaW50ZXIoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigp
LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKTsKICAgICAgICAgfSBlbHNlIGlmIChpbml0aWFsaXpl
ci0+Z2V0QXNTeW1ib2xOb2RlKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJv
bCA9IHN5bWJvbFRhYmxlLmZpbmQoaW5pdGlhbGl6ZXItPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRT
eW1ib2woKSk7CiAgICAgICAgICAgICBjb25zdCBUVmFyaWFibGUqIHRWYXIgPSBzdGF0aWNfY2Fz
dDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOwpAQCAtMTEwOCwxNiArMTA0OSwxNiBAQCBib29s
IFRQYXJzZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QoVEluCiAvLwogLy8gUmV0dXJucyAwIGZv
ciBhbiBlcnJvciBvciB0aGUgY29uc3RydWN0ZWQgbm9kZSAoYWdncmVnYXRlIG9yIHR5cGVkKSBm
b3Igbm8gZXJyb3IuCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdHJ1
Y3RvcihUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwg
VEZ1bmN0aW9uKiBmbkNhbGwsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVFBhcnNl
Q29udGV4dDo6YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRUeXBlKiB0
eXBlLCBUT3BlcmF0b3Igb3AsIFRGdW5jdGlvbiogZm5DYWxsLCBjb25zdCBUU291cmNlTG9jJiBs
aW5lKQogewogICAgIGlmIChub2RlID09IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgVElu
dGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOwogICAgIAot
ICAgIFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyVHlwZXM7CisgICAgVEZpZWxkTGlz
dDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyRmllbGRzOwogICAgIGlmIChvcCA9PSBFT3BDb25zdHJ1
Y3RTdHJ1Y3QpCi0gICAgICAgIG1lbWJlclR5cGVzID0gdHlwZS0+Z2V0U3RydWN0KCktPmJlZ2lu
KCk7CisgICAgICAgIG1lbWJlckZpZWxkcyA9IHR5cGUtPmdldFN0cnVjdCgpLT5maWVsZHMoKS5i
ZWdpbigpOwogICAgIAogICAgIFRUeXBlIGVsZW1lbnRUeXBlID0gKnR5cGU7CiAgICAgaWYgKHR5
cGUtPmlzQXJyYXkoKSkKQEAgLTExMzksNyArMTA4MCw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNl
Q29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKICAgICAg
ICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgJmVsZW1lbnRUeXBlLCAxLCBu
b2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKICAgICAgICAgZWxzZSBpZiAob3AgPT0gRU9wQ29uc3Ry
dWN0U3RydWN0KQotICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdChub2RlLCAo
Km1lbWJlclR5cGVzKS50eXBlLCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKKyAgICAgICAg
ICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgKCptZW1iZXJGaWVsZHMpLT50eXBl
KCksIDEsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBuZXdOb2RlID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBvcCwgbm9kZSwgbm9kZS0+Z2V0TGlu
ZSgpLCBmYWxzZSk7CiAKQEAgLTExNzAsNyArMTExMSw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNl
Q29udGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKICAgICAg
ICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsICZlbGVtZW50VHlwZSwgcGFyYW1D
b3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRydWUpOwogICAgICAgICBlbHNlIGlmIChvcCA9PSBF
T3BDb25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0U3RydWN0
KCpwLCAobWVtYmVyVHlwZXNbcGFyYW1Db3VudF0pLnR5cGUsIHBhcmFtQ291bnQrMSwgbm9kZS0+
Z2V0TGluZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qo
KnAsIG1lbWJlckZpZWxkc1twYXJhbUNvdW50XS0+dHlwZSgpLCBwYXJhbUNvdW50KzEsIG5vZGUt
PmdldExpbmUoKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5ld05vZGUgPSBj
b25zdHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCAqcCwgbm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKICAg
ICAgICAgCkBAIC0xMjE2LDcgKzExNTcsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6
OmZvbGRDb25zdENvCiAvLwogLy8gUmV0dXJucyAwIGZvciBhbiBlcnJvciBvciB0aGUgY29uc3Ry
dWN0ZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdEJ1
aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIG5vZGUs
IFRTb3VyY2VMb2MgbGluZSwgYm9vbCBzdWJzZXQpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRl
eHQ6OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVElu
dGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQogewog
ICAgIFRJbnRlcm1UeXBlZCogbmV3Tm9kZTsKICAgICBUT3BlcmF0b3IgYmFzaWNPcDsKQEAgLTEy
NzgsNyArMTIxOSw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0QnUK
IC8vCiAvLyBSZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9yIHRoZSBpbnB1dCBub2RlIGl0c2VsZiBp
ZiB0aGUgZXhwZWN0ZWQgYW5kIHRoZSBnaXZlbiBwYXJhbWV0ZXIgdHlwZXMgbWF0Y2guCiAvLwot
VEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QoVEludGVybU5vZGUq
IG5vZGUsIFRUeXBlKiB0eXBlLCBpbnQgcGFyYW1Db3VudCwgVFNvdXJjZUxvYyBsaW5lLCBib29s
IHN1YnNldCkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0U3RydWN0KFRJ
bnRlcm1Ob2RlKiBub2RlLCBUVHlwZSogdHlwZSwgaW50IHBhcmFtQ291bnQsIGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQogewogICAgIGlmICgqdHlwZSA9PSBub2RlLT5nZXRB
c1R5cGVkKCktPmdldFR5cGUoKSkgewogICAgICAgICBpZiAoc3Vic2V0KQpAQCAtMTMwNSw3ICsx
MjQ2LDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdAogLy8gbm9k
ZSBvciBpdCBjb3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRyZWUgcmVwcmVzZW50YXRpb24gb2Yg
YWNjZXNzaW5nIGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVjdHVyZSBvciBjb2x1bW4gb2YgCiAv
LyBhIGNvbnN0YW50IG1hdHJpeC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFk
ZENvbnN0VmVjdG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIFRJbnRlcm1UeXBlZCogbm9k
ZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25z
dFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0eXBlZE5vZGU7CiAg
ICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5nZXRBc0Nv
bnN0YW50VW5pb24oKTsKQEAgLTEzMTMsNyArMTI1NCw2IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNl
Q29udGV4dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5OwogICAg
IGlmICh0ZW1wQ29uc3RhbnROb2RlKSB7CiAgICAgICAgIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3Rh
bnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAgICAgICBBU1NFUlQodW5pb25BcnJh
eSk7CiAKICAgICAgICAgaWYgKCF1bmlvbkFycmF5KSB7CiAgICAgICAgICAgICByZXR1cm4gbm9k
ZTsKQEAgLTEzMjgsNyArMTI2OCw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRk
Q29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5p
b25bZmllbGRzLm51bV07CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpZWxkcy5udW07IGkr
KykgewotICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0gPj0gbm9kZS0+Z2V0VHlwZSgpLmdl
dE9iamVjdFNpemUoKSkgeworICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0gPj0gbm9kZS0+
Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkpIHsKICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAidmVj
dG9yIGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgZmllbGRzLm9mZnNldHNbaV0g
PDwgIiciOwogICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3Ry
ZWFtLnN0cigpOwpAQCAtMTM1MCw3ICsxMjkwLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250
ZXh0OjphZGRDb25zdFZlYwogLy8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5
bWJvbCBub2RlIChtWzBdIHdoZXJlIG0gaXMgYSBjb25zdGFudCBtYXRyaXgpdGhhdCByZXByZXNl
bnRzIGEgCiAvLyBjb25zdGFudCBtYXRyaXggb3IgaXQgY291bGQgYmUgdGhlIHRyZWUgcmVwcmVz
ZW50YXRpb24gb2YgdGhlIGNvbnN0YW50IG1hdHJpeCAocy5tMVswXSB3aGVyZSBzIGlzIGEgY29u
c3RhbnQgc3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29u
c3RNYXRyaXhOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBUU291cmNlTG9jIGxp
bmUpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZShpbnQg
aW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAg
ICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZTsKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogdGVt
cENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwpAQCAtMTM4NSw3ICsx
MzI1LDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdE1hdAogLy8gdG8g
dGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChhWzBdIHdoZXJlIGEg
aXMgYSBjb25zdGFudCBhcnJheSl0aGF0IHJlcHJlc2VudHMgYSAKIC8vIGNvbnN0YW50IGFycmF5
IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25zdGFudCBh
cnJheSAocy5hMVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQogLy8KLVRJbnRl
cm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50
ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29u
dGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0eXBlZE5vZGU7CiAg
ICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5nZXRBc0Nv
bnN0YW50VW5pb24oKTsKQEAgLTE0MDEsOSArMTM0MSw4IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNl
Q29udGV4dDo6YWRkQ29uc3RBcnIKICAgICAgICAgaW5kZXggPSAwOwogICAgIH0KIAotICAgIGlu
dCBhcnJheUVsZW1lbnRTaXplID0gYXJyYXlFbGVtZW50VHlwZS5nZXRPYmplY3RTaXplKCk7Ci0K
ICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgeworICAgICAgICAgc2l6ZV90IGFycmF5RWxlbWVu
dFNpemUgPSBhcnJheUVsZW1lbnRUeXBlLmdldE9iamVjdFNpemUoKTsKICAgICAgICAgIENvbnN0
YW50VW5pb24qIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9p
bnRlcigpOwogICAgICAgICAgdHlwZWROb2RlID0gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24oJnVuaW9uQXJyYXlbYXJyYXlFbGVtZW50U2l6ZSAqIGluZGV4XSwgdGVtcENvbnN0YW50Tm9k
ZS0+Z2V0VHlwZSgpLCBsaW5lKTsKICAgICB9IGVsc2UgewpAQCAtMTQyMiwyMiArMTM2MSwyMSBA
QCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0QXJyCiAvLyBJZiB0aGVyZSBp
cyBhbiBlbWJlZGRlZC9uZXN0ZWQgc3RydWN0LCBpdCBhcHByb3ByaWF0ZWx5IGNhbGxzIGFkZENv
bnN0U3RydWN0TmVzdGVkIG9yIGFkZENvbnN0U3RydWN0RnJvbUFnZ3IKIC8vIGZ1bmN0aW9uIGFu
ZCByZXR1cm5zIHRoZSBwYXJzZS10cmVlIHdpdGggdGhlIHZhbHVlcyBvZiB0aGUgZW1iZWRkZWQv
bmVzdGVkIHN0cnVjdC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0
U3RydWN0KFRTdHJpbmcmIGlkZW50aWZpZXIsIFRJbnRlcm1UeXBlZCogbm9kZSwgVFNvdXJjZUxv
YyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdChUU3Ry
aW5nJiBpZGVudGlmaWVyLCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUpCiB7Ci0gICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSBub2RlLT5nZXRUeXBlKCkuZ2V0
U3RydWN0KCk7Ci0gICAgVEludGVybVR5cGVkICp0eXBlZE5vZGU7Ci0gICAgaW50IGluc3RhbmNl
U2l6ZSA9IDA7Ci0gICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKLSAgICBUSW50ZXJtQ29uc3Rh
bnRVbmlvbiAqdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwor
ICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3Qo
KS0+ZmllbGRzKCk7CiAKLSAgICBmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgZmllbGRzLT5zaXpl
KCk7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKCgqZmllbGRzKVtpbmRleF0udHlwZS0+Z2V0Rmll
bGROYW1lKCkgPT0gaWRlbnRpZmllcikgeworICAgIHNpemVfdCBpbnN0YW5jZVNpemUgPSAwOwor
ICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZHMuc2l6ZSgpOyArK2luZGV4
KSB7CisgICAgICAgIGlmIChmaWVsZHNbaW5kZXhdLT5uYW1lKCkgPT0gaWRlbnRpZmllcikgewog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbnN0YW5j
ZVNpemUgKz0gKCpmaWVsZHMpW2luZGV4XS50eXBlLT5nZXRPYmplY3RTaXplKCk7CisgICAgICAg
ICAgICBpbnN0YW5jZVNpemUgKz0gZmllbGRzW2luZGV4XS0+dHlwZSgpLT5nZXRPYmplY3RTaXpl
KCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZSA9IDA7
CisgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5nZXRB
c0NvbnN0YW50VW5pb24oKTsKICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgewogICAgICAgICAg
Q29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHRlbXBDb25zdGFudE5vZGUtPmdldFVuaW9uQXJy
YXlQb2ludGVyKCk7CiAKQEAgLTE0NTIsNyArMTM5MCw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNl
Q29udGV4dDo6YWRkQ29uc3RTdHIKICAgICByZXR1cm4gdHlwZWROb2RlOwogfQogCi1ib29sIFRQ
YXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24oaW50IGxpbmUsIGNvbnN0IFRTdHJp
bmcmIGlkZW50aWZpZXIpCitib29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRp
b24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKIHsK
ICAgICArK3N0cnVjdE5lc3RpbmdMZXZlbDsKIApAQCAtMTQ3OCwyMSArMTQxNiwyMSBAQCBjb25z
dCBpbnQga1dlYkdMTWF4U3RydWN0TmVzdGluZyA9IDQ7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1i
b29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKFRTb3VyY2VMb2MgbGlu
ZSwgY29uc3QgVFR5cGUmIGZpZWxkVHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0TmVz
dGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEZpZWxkJiBmaWVs
ZCkKIHsKICAgICBpZiAoIWlzV2ViR0xCYXNlZFNwZWMoc2hhZGVyU3BlYykpIHsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChmaWVsZFR5cGUuZ2V0QmFzaWNUeXBlKCkg
IT0gRWJ0U3RydWN0KSB7CisgICAgaWYgKGZpZWxkLnR5cGUoKS0+Z2V0QmFzaWNUeXBlKCkgIT0g
RWJ0U3RydWN0KSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAvLyBXZSdy
ZSBhbHJlYWR5IGluc2lkZSBhIHN0cnVjdHVyZSBkZWZpbml0aW9uIGF0IHRoaXMgcG9pbnQsIHNv
IGFkZAogICAgIC8vIG9uZSB0byB0aGUgZmllbGQncyBzdHJ1Y3QgbmVzdGluZy4KLSAgICBpZiAo
MSArIGZpZWxkVHlwZS5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpID4ga1dlYkdMTWF4U3RydWN0
TmVzdGluZykgeworICAgIGlmICgxICsgZmllbGQudHlwZSgpLT5nZXREZWVwZXN0U3RydWN0TmVz
dGluZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgewogICAgICAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiUmVmZXJl
bmNlIG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGRUeXBlLmdldFR5cGVOYW1lKCkgCisgICAgICAg
IGV4dHJhSW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGQu
bmFtZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGV4Y2VlZHMgbWF4aW11bSBzdHJ1
Y3QgbmVzdGluZyBvZiAiIDw8IGtXZWJHTE1heFN0cnVjdE5lc3Rpbmc7CiAgICAgICAgIHN0ZDo6
c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKICAgICAgICAgZXJyb3Io
bGluZSwgIiIsICIiLCBleHRyYUluZm8uY19zdHIoKSk7CkBAIC0xNTAzLDYgKzE0NDEsMTQwIEBA
IGJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2gKIH0KIAogLy8KKy8vIFBh
cnNlIGFuIGFycmF5IGluZGV4IGV4cHJlc3Npb24KKy8vCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNv
bnRleHQ6OmFkZEluZGV4RXhwcmVzc2lvbihUSW50ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9uLCBj
b25zdCBUU291cmNlTG9jJiBsb2NhdGlvbiwgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24p
Cit7CisgICAgVEludGVybVR5cGVkICppbmRleGVkRXhwcmVzc2lvbiA9IE5VTEw7CisKKyAgICBp
ZiAoIWJhc2VFeHByZXNzaW9uLT5pc0FycmF5KCkgJiYgIWJhc2VFeHByZXNzaW9uLT5pc01hdHJp
eCgpICYmICFiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKKyAgICB7CisgICAgICAgIGlmIChi
YXNlRXhwcmVzc2lvbi0+Z2V0QXNTeW1ib2xOb2RlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGVycm9yKGxvY2F0aW9uLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRy
aXgsIG9yIHZlY3RvciAiLCBiYXNlRXhwcmVzc2lvbi0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5
bWJvbCgpLmNfc3RyKCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgZXJyb3IobG9jYXRpb24sICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJy
YXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7CisgICAgICAgIH0KKyAgICAg
ICAgcmVjb3ZlcigpOworICAgIH0KKworICAgIGlmIChpbmRleEV4cHJlc3Npb24tPmdldFF1YWxp
ZmllcigpID09IEV2cUNvbnN0KQorICAgIHsKKyAgICAgICAgaW50IGluZGV4ID0gaW5kZXhFeHBy
ZXNzaW9uLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOworICAgICAgICBpZiAo
aW5kZXggPCAwKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBpbmZv
U3RyZWFtOworICAgICAgICAgICAgaW5mb1N0cmVhbSA8PCBpbmRleDsKKyAgICAgICAgICAgIHN0
ZDo6c3RyaW5nIGluZm8gPSBpbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgZXJyb3IobG9j
YXRpb24sICJuZWdhdGl2ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7CisgICAgICAgICAgICByZWNv
dmVyKCk7CisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJh
c2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNBcnJheSgpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIGFycmF5cwor
ICAgICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYWRkQ29uc3RBcnJheU5vZGUoaW5k
ZXgsIGJhc2VFeHByZXNzaW9uLCBsb2NhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAg
ICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7CisgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9
IDE7CisgICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVlZCB0
byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkK
KyAgICAgICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGFkZENvbnN0VmVjdG9yTm9kZShm
aWVsZHMsIGJhc2VFeHByZXNzaW9uLCBsb2NhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgoKSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBtYXRyaWNlcworICAgICAg
ICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYWRkQ29uc3RNYXRyaXhOb2RlKGluZGV4LCBi
YXNlRXhwcmVzc2lvbiwgbG9jYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5pc0Fy
cmF5KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IGJhc2VF
eHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Cisg
ICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9m
IHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAgICAg
ICBlcnJvcihsb2NhdGlvbiwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICAg
ICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gYmFzZUV4
cHJlc3Npb24tPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIo
KSA9PSBFdnFGcmFnRGF0YSAmJiBpbmRleCA+IDAgJiYgIWlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
RVhUX2RyYXdfYnVmZmVycyIpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgZXJyb3IobG9jYXRpb24sICIiLCAiWyIsICJhcnJheSBpbmRleGVzIGZvciBnbF9GcmFnRGF0
YSBtdXN0IGJlIHplcm8gd2hlbiBHTF9FWFRfZHJhd19idWZmZXJzIGlzIGRpc2FibGVkIik7Cisg
ICAgICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXgg
PSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
aWYgKChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSB8fCBiYXNlRXhwcmVzc2lvbi0+aXNNYXRy
aXgoKSkgJiYgYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIDw9IGlu
ZGV4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4
dHJhSW5mb1N0cmVhbTsKKyAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxk
IHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAg
ICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOwor
ICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICBpbmRleCA9IGJhc2VF
eHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSAtIDE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGluZGV4RXhwcmVzc2lvbi0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdl
dFVuaW9uQXJyYXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7CisgICAgICAgICAgICBpbmRl
eGVkRXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgYmFz
ZUV4cHJlc3Npb24sIGluZGV4RXhwcmVzc2lvbiwgbG9jYXRpb24pOworICAgICAgICB9CisgICAg
fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gaW50ZXJtZWRp
YXRlLmFkZEluZGV4KEVPcEluZGV4SW5kaXJlY3QsIGJhc2VFeHByZXNzaW9uLCBpbmRleEV4cHJl
c3Npb24sIGxvY2F0aW9uKTsKKyAgICB9CisKKyAgICBpZiAoaW5kZXhlZEV4cHJlc3Npb24gPT0g
MCkKKyAgICB7CisgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3Rh
bnRVbmlvblsxXTsKKyAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOworICAgICAg
ICBpbmRleGVkRXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCksIGxvY2F0aW9uKTsKKyAg
ICB9CisgICAgZWxzZSBpZiAoYmFzZUV4cHJlc3Npb24tPmlzQXJyYXkoKSkKKyAgICB7CisgICAg
ICAgIGNvbnN0IFRUeXBlICZiYXNlVHlwZSA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCk7Cisg
ICAgICAgIGlmIChiYXNlVHlwZS5nZXRTdHJ1Y3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
VFR5cGUgY29weU9mVHlwZShiYXNlVHlwZS5nZXRTdHJ1Y3QoKSk7CisgICAgICAgICAgICBpbmRl
eGVkRXhwcmVzc2lvbi0+c2V0VHlwZShjb3B5T2ZUeXBlKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKFRU
eXBlKGJhc2VFeHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFzZUV4cHJlc3Npb24tPmdldFBy
ZWNpc2lvbigpLCBFdnFUZW1wb3JhcnksIGJhc2VFeHByZXNzaW9uLT5nZXROb21pbmFsU2l6ZSgp
LCBiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgoKSkpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5nZXRUeXBlUG9pbnRlcigp
LT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYg
KGJhc2VFeHByZXNzaW9uLT5pc01hdHJpeCgpKQorICAgIHsKKyAgICAgICAgVFF1YWxpZmllciBx
dWFsaWZpZXIgPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2
cUNvbnN0ID8gRXZxQ29uc3QgOiBFdnFUZW1wb3Jhcnk7CisgICAgICAgIGluZGV4ZWRFeHByZXNz
aW9uLT5zZXRUeXBlKFRUeXBlKGJhc2VFeHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFzZUV4
cHJlc3Npb24tPmdldFByZWNpc2lvbigpLCBxdWFsaWZpZXIsIGJhc2VFeHByZXNzaW9uLT5nZXRO
b21pbmFsU2l6ZSgpKSk7CisgICAgfQorICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5pc1Zl
Y3RvcigpKQorICAgIHsKKyAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBiYXNlRXhwcmVz
c2lvbi0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ID8gRXZxQ29uc3QgOiBF
dnFUZW1wb3Jhcnk7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKFRUeXBlKGJh
c2VFeHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFzZUV4cHJlc3Npb24tPmdldFByZWNpc2lv
bigpLCBxdWFsaWZpZXIpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaW5kZXhl
ZEV4cHJlc3Npb24tPnNldFR5cGUoYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKSk7CisgICAgfQor
CisgICAgcmV0dXJuIGluZGV4ZWRFeHByZXNzaW9uOworfQorCisvLwogLy8gUGFyc2UgYW4gYXJy
YXkgb2Ygc3RyaW5ncyB1c2luZyB5eXBhcnNlLgogLy8KIC8vIFJldHVybnMgMCBmb3Igc3VjY2Vz
cy4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Q
YXJzZUhlbHBlci5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMzMsMTAgKzMzLDgg
QEAgc3RydWN0IFRQYXJzZUNvbnRleHQgewogICAgICAgICAgICAgY29tcGlsZU9wdGlvbnMob3B0
aW9ucyksCiAgICAgICAgICAgICBzb3VyY2VQYXRoKHNvdXJjZVBhdGgpLAogICAgICAgICAgICAg
dHJlZVJvb3QoMCksCi0gICAgICAgICAgICBsZXhBZnRlclR5cGUoZmFsc2UpLAogICAgICAgICAg
ICAgbG9vcE5lc3RpbmdMZXZlbCgwKSwKICAgICAgICAgICAgIHN0cnVjdE5lc3RpbmdMZXZlbCgw
KSwKLSAgICAgICAgICAgIGluVHlwZVBhcmVuKGZhbHNlKSwKICAgICAgICAgICAgIGN1cnJlbnRG
dW5jdGlvblR5cGUoTlVMTCksCiAgICAgICAgICAgICBmdW5jdGlvblJldHVybnNWYWx1ZShmYWxz
ZSksCiAgICAgICAgICAgICBjaGVja3NQcmVjaXNpb25FcnJvcnMoY2hlY2tzUHJlY0Vycm9ycyks
CkBAIC01MSwxNiArNDksMTMgQEAgc3RydWN0IFRQYXJzZUNvbnRleHQgewogICAgIGludCBjb21w
aWxlT3B0aW9uczsKICAgICBjb25zdCBjaGFyKiBzb3VyY2VQYXRoOyAgICAgIC8vIFBhdGggb2Yg
c291cmNlIGZpbGUgb3IgTlVMTC4KICAgICBUSW50ZXJtTm9kZSogdHJlZVJvb3Q7ICAgICAgIC8v
IHJvb3Qgb2YgcGFyc2UgdHJlZSBiZWluZyBjcmVhdGVkCi0gICAgYm9vbCBsZXhBZnRlclR5cGU7
ICAgICAgICAgICAvLyB0cnVlIGlmIHdlJ3ZlIHJlY29nbml6ZWQgYSB0eXBlLCBzbyBjYW4gb25s
eSBiZSBsb29raW5nIGZvciBhbiBpZGVudGlmaWVyCiAgICAgaW50IGxvb3BOZXN0aW5nTGV2ZWw7
ICAgICAgICAvLyAwIGlmIG91dHNpZGUgYWxsIGxvb3BzCiAgICAgaW50IHN0cnVjdE5lc3RpbmdM
ZXZlbDsgICAgICAvLyBpbmNyZW1lbnRlZCB3aGlsZSBwYXJzaW5nIGEgc3RydWN0IGRlY2xhcmF0
aW9uCi0gICAgYm9vbCBpblR5cGVQYXJlbjsgICAgICAgICAgICAvLyB0cnVlIGlmIGluIHBhcmVu
dGhlc2VzLCBsb29raW5nIG9ubHkgZm9yIGFuIGlkZW50aWZpZXIKICAgICBjb25zdCBUVHlwZSog
Y3VycmVudEZ1bmN0aW9uVHlwZTsgIC8vIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24g
dGhhdCdzIGN1cnJlbnRseSBiZWluZyBwYXJzZWQKICAgICBib29sIGZ1bmN0aW9uUmV0dXJuc1Zh
bHVlOyAgIC8vIHRydWUgaWYgYSBub24tdm9pZCBmdW5jdGlvbiBoYXMgYSByZXR1cm4KICAgICBi
b29sIGNoZWNrc1ByZWNpc2lvbkVycm9yczsgIC8vIHRydWUgaWYgYW4gZXJyb3Igd2lsbCBiZSBn
ZW5lcmF0ZWQgd2hlbiBhIHZhcmlhYmxlIGlzIGRlY2xhcmVkIHdpdGhvdXQgcHJlY2lzaW9uLCBl
eHBsaWNpdCBvciBpbXBsaWNpdC4KICAgICBib29sIGZyYWdtZW50UHJlY2lzaW9uSGlnaDsgIC8v
IHRydWUgaWYgaGlnaHAgcHJlY2lzaW9uIGlzIHN1cHBvcnRlZCBpbiB0aGUgZnJhZ21lbnQgbGFu
Z3VhZ2UuCiAgICAgVFN0cmluZyBIYXNoRXJyTXNnOwotICAgIGJvb2wgQWZ0ZXJFT0Y7CiAgICAg
VERpYWdub3N0aWNzIGRpYWdub3N0aWNzOwogICAgIFREaXJlY3RpdmVIYW5kbGVyIGRpcmVjdGl2
ZUhhbmRsZXI7CiAgICAgcHA6OlByZXByb2Nlc3NvciBwcmVwcm9jZXNzb3I7CkBAIC02OCw3MSAr
NjMsNjkgQEAgc3RydWN0IFRQYXJzZUNvbnRleHQgewogCiAgICAgaW50IG51bUVycm9ycygpIGNv
bnN0IHsgcmV0dXJuIGRpYWdub3N0aWNzLm51bUVycm9ycygpOyB9CiAgICAgVEluZm9TaW5rJiBp
bmZvU2luaygpIHsgcmV0dXJuIGRpYWdub3N0aWNzLmluZm9TaW5rKCk7IH0KLSAgICB2b2lkIGVy
cm9yKFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIqIHRva2Vu
LAorICAgIHZvaWQgZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLCBjb25zdCBjaGFyICpyZWFz
b24sIGNvbnN0IGNoYXIqIHRva2VuLAogICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJ
bmZvPSIiKTsKLSAgICB2b2lkIHdhcm5pbmcoVFNvdXJjZUxvYyBsb2MsIGNvbnN0IGNoYXIqIHJl
YXNvbiwgY29uc3QgY2hhciogdG9rZW4sCisgICAgdm9pZCB3YXJuaW5nKGNvbnN0IFRTb3VyY2VM
b2MmIGxvYywgY29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvPSIiKTsKICAgICB2b2lkIHRyYWNlKGNvbnN0
IGNoYXIqIHN0cik7CiAgICAgdm9pZCByZWNvdmVyKCk7CiAKLSAgICBib29sIHBhcnNlVmVjdG9y
RmllbGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYsIGludCBs
aW5lKTsKLSAgICBib29sIHBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgbWF0
U2l6ZSwgVE1hdHJpeEZpZWxkcyYsIGludCBsaW5lKTsKKyAgICBib29sIHBhcnNlVmVjdG9yRmll
bGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYsIGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUpOworICAgIGJvb2wgcGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmlu
ZyYsIGludCBtYXRTaXplLCBUTWF0cml4RmllbGRzJiwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSk7
CiAKLSAgICBib29sIHJlc2VydmVkRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYg
aWRlbnRpZmllcik7Ci0gICAgdm9pZCBhc3NpZ25FcnJvcihpbnQgbGluZSwgY29uc3QgY2hhciog
b3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7Ci0gICAgdm9pZCB1bmFyeU9wRXJyb3Io
aW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpOwotICAgIHZvaWQgYmlu
YXJ5T3BFcnJvcihpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmlu
ZyByaWdodCk7Ci0gICAgYm9vbCBwcmVjaXNpb25FcnJvckNoZWNrKGludCBsaW5lLCBUUHJlY2lz
aW9uIHByZWNpc2lvbiwgVEJhc2ljVHlwZSB0eXBlKTsKLSAgICBib29sIGxWYWx1ZUVycm9yQ2hl
Y2soaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50ZXJtVHlwZWQqKTsKKyAgICBib29sIHJl
c2VydmVkRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBp
ZGVudGlmaWVyKTsKKyAgICB2b2lkIGFzc2lnbkVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUs
IGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOworICAgIHZvaWQg
dW5hcnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3Ry
aW5nIG9wZXJhbmQpOworICAgIHZvaWQgYmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKKyAgICBi
b29sIHByZWNpc2lvbkVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFByZWNpc2lv
biBwcmVjaXNpb24sIFRCYXNpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBsVmFsdWVFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50ZXJtVHlwZWQqKTsK
ICAgICBib29sIGNvbnN0RXJyb3JDaGVjayhUSW50ZXJtVHlwZWQqIG5vZGUpOwogICAgIGJvb2wg
aW50ZWdlckVycm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBjaGFyKiB0b2tlbik7
Ci0gICAgYm9vbCBnbG9iYWxFcnJvckNoZWNrKGludCBsaW5lLCBib29sIGdsb2JhbCwgY29uc3Qg
Y2hhciogdG9rZW4pOwotICAgIGJvb2wgY29uc3RydWN0b3JFcnJvckNoZWNrKGludCBsaW5lLCBU
SW50ZXJtTm9kZSosIFRGdW5jdGlvbiYsIFRPcGVyYXRvciwgVFR5cGUqKTsKLSAgICBib29sIGFy
cmF5U2l6ZUVycm9yQ2hlY2soaW50IGxpbmUsIFRJbnRlcm1UeXBlZCogZXhwciwgaW50JiBzaXpl
KTsKLSAgICBib29sIGFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGluZSwgVFB1YmxpY1R5
cGUgdHlwZSk7Ci0gICAgYm9vbCBhcnJheVR5cGVFcnJvckNoZWNrKGludCBsaW5lLCBUUHVibGlj
VHlwZSB0eXBlKTsKLSAgICBib29sIGFycmF5RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYg
aWRlbnRpZmllciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOwotICAg
IGJvb2wgdm9pZEVycm9yQ2hlY2soaW50LCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFB1YmxpY1R5
cGUmKTsKLSAgICBib29sIGJvb2xFcnJvckNoZWNrKGludCwgY29uc3QgVEludGVybVR5cGVkKik7
Ci0gICAgYm9vbCBib29sRXJyb3JDaGVjayhpbnQsIGNvbnN0IFRQdWJsaWNUeXBlJik7Ci0gICAg
Ym9vbCBzYW1wbGVyRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBl
LCBjb25zdCBjaGFyKiByZWFzb24pOwotICAgIGJvb2wgc3RydWN0UXVhbGlmaWVyRXJyb3JDaGVj
ayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKTsKLSAgICBib29sIHBhcmFtZXRl
clNhbXBsZXJFcnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgY29uc3Qg
VFR5cGUmIHR5cGUpOwotICAgIGJvb2wgbm9uSW5pdENvbnN0RXJyb3JDaGVjayhpbnQgbGluZSwg
VFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpOwotICAg
IGJvb2wgbm9uSW5pdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQ
dWJsaWNUeXBlJiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSk7Ci0gICAgYm9vbCBwYXJhbUVy
cm9yQ2hlY2soaW50IGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFt
UXVhbGlmaWVyLCBUVHlwZSogdHlwZSk7Ci0gICAgYm9vbCBleHRlbnNpb25FcnJvckNoZWNrKGlu
dCBsaW5lLCBjb25zdCBUU3RyaW5nJik7CisgICAgYm9vbCBnbG9iYWxFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgZ2xvYmFsLCBjb25zdCBjaGFyKiB0b2tlbik7CisgICAg
Ym9vbCBjb25zdHJ1Y3RvckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVy
bU5vZGUqLCBURnVuY3Rpb24mLCBUT3BlcmF0b3IsIFRUeXBlKik7CisgICAgYm9vbCBhcnJheVNp
emVFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1UeXBlZCogZXhwciwg
aW50JiBzaXplKTsKKyAgICBib29sIGFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBUUHVibGljVHlwZSB0eXBlKTsKKyAgICBib29sIGFycmF5VHlwZUVycm9y
Q2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7CisgICAgYm9v
bCBhcnJheUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRp
ZmllciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOworICAgIGJvb2wg
dm9pZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYsIGNvbnN0IFRTdHJpbmcmLCBjb25zdCBU
UHVibGljVHlwZSYpOworICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYs
IGNvbnN0IFRJbnRlcm1UeXBlZCopOworICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soY29uc3QgVFNv
dXJjZUxvYyYsIGNvbnN0IFRQdWJsaWNUeXBlJik7CisgICAgYm9vbCBzYW1wbGVyRXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUsIGNvbnN0
IGNoYXIqIHJlYXNvbik7CisgICAgYm9vbCBzdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSk7CisgICAgYm9vbCBw
YXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlm
aWVyIHF1YWxpZmllciwgY29uc3QgVFR5cGUmIHR5cGUpOworICAgIGJvb2wgbm9uSW5pdENvbnN0
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBU
UHVibGljVHlwZSYgdHlwZSwgYm9vbCBhcnJheSk7CisgICAgYm9vbCBub25Jbml0RXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlw
ZSYgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOworICAgIGJvb2wgcGFyYW1FcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVy
IHBhcmFtUXVhbGlmaWVyLCBUVHlwZSogdHlwZSk7CisgICAgYm9vbCBleHRlbnNpb25FcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmKTsKIAorICAgIGNvbnN0
IFRQcmFnbWEmIHByYWdtYSgpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGl2ZUhhbmRsZXIucHJhZ21h
KCk7IH0KICAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dGVuc2lvbkJlaGF2aW9yKCkg
Y29uc3QgeyByZXR1cm4gZGlyZWN0aXZlSGFuZGxlci5leHRlbnNpb25CZWhhdmlvcigpOyB9CiAg
ICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBjaGFyKiBleHRlbnNpb24pOwotICAgIHZv
aWQgaGFuZGxlRXh0ZW5zaW9uRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBleHROYW1l
LCBjb25zdCBjaGFyKiBiZWhhdmlvcik7Ci0KLSAgICBjb25zdCBUUHJhZ21hJiBwcmFnbWEoKSBj
b25zdCB7IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLnByYWdtYSgpOyB9Ci0gICAgdm9pZCBoYW5k
bGVQcmFnbWFEaXJlY3RpdmUoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIq
IHZhbHVlKTsKKyAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBjaGFyKiBleHRlbnNp
b24pIGNvbnN0OwogCiAgICAgYm9vbCBjb250YWluc1NhbXBsZXIoVFR5cGUmIHR5cGUpOwogICAg
IGJvb2wgYXJlQWxsQ2hpbGRDb25zdChUSW50ZXJtQWdncmVnYXRlKiBhZ2dyTm9kZSk7Ci0gICAg
Y29uc3QgVEZ1bmN0aW9uKiBmaW5kRnVuY3Rpb24oaW50IGxpbmUsIFRGdW5jdGlvbiogcGZuQ2Fs
bCwgYm9vbCAqYnVpbHRJbiA9IDApOwotICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxpemVyKFRTb3Vy
Y2VMb2MgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHBUeXBlLAorICAg
IGNvbnN0IFRGdW5jdGlvbiogZmluZEZ1bmN0aW9uKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRG
dW5jdGlvbiogcGZuQ2FsbCwgYm9vbCAqYnVpbHRJbiA9IDApOworICAgIGJvb2wgZXhlY3V0ZUlu
aXRpYWxpemVyKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQ
dWJsaWNUeXBlJiBwVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQqIGluaXRpYWxpemVyLCBUSW50ZXJtTm9kZSomIGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFy
aWFibGUgPSAwKTsKLSAgICBib29sIGFycmF5U2V0TWF4U2l6ZShUSW50ZXJtU3ltYm9sKiwgVFR5
cGUqLCBpbnQsIGJvb2wsIFRTb3VyY2VMb2MpOwogCi0gICAgVEludGVybVR5cGVkKiBhZGRDb25z
dHJ1Y3RvcihUSW50ZXJtTm9kZSosIGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBURnVuY3Rpb24q
LCBUU291cmNlTG9jKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0cnVjdG9yKFRJbnRlcm1O
b2RlKiwgY29uc3QgVFR5cGUqLCBUT3BlcmF0b3IsIFRGdW5jdGlvbiosIGNvbnN0IFRTb3VyY2VM
b2MmKTsKICAgICBUSW50ZXJtVHlwZWQqIGZvbGRDb25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dy
ZWdhdGUqIGFnZ3JOb2RlLCBjb25zdCBUVHlwZSYgdHlwZSk7Ci0gICAgVEludGVybVR5cGVkKiBj
b25zdHJ1Y3RTdHJ1Y3QoVEludGVybU5vZGUqLCBUVHlwZSosIGludCwgVFNvdXJjZUxvYywgYm9v
bCBzdWJzZXQpOwotICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlw
ZSosIFRPcGVyYXRvciwgVEludGVybU5vZGUqLCBUU291cmNlTG9jLCBib29sIHN1YnNldCk7Ci0g
ICAgVEludGVybVR5cGVkKiBhZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRl
cm1UeXBlZCosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhO
b2RlKGludCAsIFRJbnRlcm1UeXBlZCosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCog
YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VM
b2MgbGluZSk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJ
bnRlcm1UeXBlZCosIFRTb3VyY2VMb2MpOworICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0U3Ry
dWN0KFRJbnRlcm1Ob2RlKiwgVFR5cGUqLCBpbnQsIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1
YnNldCk7CisgICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwg
VE9wZXJhdG9yLCBUSW50ZXJtTm9kZSosIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7
CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJ
bnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENv
bnN0TWF0cml4Tm9kZShpbnQgLCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7Cisg
ICAgVEludGVybVR5cGVkKiBhZGRDb25zdEFycmF5Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBl
ZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSk7CisgICAgVEludGVybVR5cGVkKiBhZGRD
b25zdFN0cnVjdChUU3RyaW5nJiAsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsK
KyAgICBUSW50ZXJtVHlwZWQqIGFkZEluZGV4RXhwcmVzc2lvbihUSW50ZXJtVHlwZWQgKmJhc2VF
eHByZXNzaW9uLCBjb25zdCBUU291cmNlTG9jJiBsb2NhdGlvbiwgVEludGVybVR5cGVkICppbmRl
eEV4cHJlc3Npb24pOwogCiAgICAgLy8gUGVyZm9ybXMgYW4gZXJyb3IgY2hlY2sgZm9yIGVtYmVk
ZGVkIHN0cnVjdCBkZWNsYXJhdGlvbnMuCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFuIGVycm9y
IHdhcyByYWlzZWQgZHVlIHRvIHRoZSBkZWNsYXJhdGlvbiBvZgogICAgIC8vIHRoaXMgc3RydWN0
LgotICAgIGJvb2wgZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihUU291cmNlTG9jIGxpbmUsIGNvbnN0
IFRTdHJpbmcmIGlkZW50aWZpZXIpOworICAgIGJvb2wgZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsKICAgICB2
b2lkIGV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwogCi0gICAgYm9vbCBzdHJ1Y3ROZXN0aW5nRXJy
b3JDaGVjayhUU291cmNlTG9jIGxpbmUsIGNvbnN0IFRUeXBlJiBmaWVsZFR5cGUpOworICAgIGJv
b2wgc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3Qg
VEZpZWxkJiBmaWVsZCk7CiB9OwogCiBpbnQgUGFQYXJzZVN0cmluZ3Moc2l6ZV90IGNvdW50LCBj
b25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHAJ
KHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9Qb29sQWxsb2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsMjQgKzIyOCwyNyBAQCB2b2lk
IFRQb29sQWxsb2NhdG9yOjpwb3BBbGwoKQogCiB2b2lkKiBUUG9vbEFsbG9jYXRvcjo6YWxsb2Nh
dGUoc2l6ZV90IG51bUJ5dGVzKQogeworICAgIC8vCisgICAgLy8gSnVzdCBrZWVwIHNvbWUgaW50
ZXJlc3Rpbmcgc3RhdGlzdGljcy4KKyAgICAvLworICAgICsrbnVtQ2FsbHM7CisgICAgdG90YWxC
eXRlcyArPSBudW1CeXRlczsKKwogICAgIC8vIElmIHdlIGFyZSB1c2luZyBndWFyZCBibG9ja3Ms
IGFsbCBhbGxvY2F0aW9ucyBhcmUgYnJhY2tldGVkIGJ5CiAgICAgLy8gdGhlbTogW2d1YXJkYmxv
Y2tdW2FsbG9jYXRpb25dW2d1YXJkYmxvY2tdLiAgbnVtQnl0ZXMgaXMgaG93CiAgICAgLy8gbXVj
aCBtZW1vcnkgdGhlIGNhbGxlciBhc2tlZCBmb3IuICBhbGxvY2F0aW9uU2l6ZSBpcyB0aGUgdG90
YWwKICAgICAvLyBzaXplIGluY2x1ZGluZyBndWFyZCBibG9ja3MuICBJbiByZWxlYXNlIGJ1aWxk
LAogICAgIC8vIGd1YXJkQmxvY2tTaXplPTAgYW5kIHRoaXMgYWxsIGdldHMgb3B0aW1pemVkIGF3
YXkuCiAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gVEFsbG9jYXRpb246OmFsbG9jYXRpb25T
aXplKG51bUJ5dGVzKTsKLSAgICAKLSAgICAvLwotICAgIC8vIEp1c3Qga2VlcCBzb21lIGludGVy
ZXN0aW5nIHN0YXRpc3RpY3MuCi0gICAgLy8KLSAgICArK251bUNhbGxzOwotICAgIHRvdGFsQnl0
ZXMgKz0gbnVtQnl0ZXM7CisgICAgLy8gRGV0ZWN0IGludGVnZXIgb3ZlcmZsb3cuCisgICAgaWYg
KGFsbG9jYXRpb25TaXplIDwgbnVtQnl0ZXMpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8K
ICAgICAvLyBEbyB0aGUgYWxsb2NhdGlvbiwgbW9zdCBsaWtlbHkgY2FzZSBmaXJzdCwgZm9yIGVm
ZmljaWVuY3kuCiAgICAgLy8gVGhpcyBzdGVwIGNvdWxkIGJlIG1vdmVkIHRvIGJlIGlubGluZSBz
b21ldGltZS4KICAgICAvLwotICAgIGlmIChjdXJyZW50UGFnZU9mZnNldCArIGFsbG9jYXRpb25T
aXplIDw9IHBhZ2VTaXplKSB7CisgICAgaWYgKGFsbG9jYXRpb25TaXplIDw9IHBhZ2VTaXplIC0g
Y3VycmVudFBhZ2VPZmZzZXQpIHsKICAgICAgICAgLy8KICAgICAgICAgLy8gU2FmZSB0byBhbGxv
Y2F0ZSBmcm9tIGN1cnJlbnRQYWdlT2Zmc2V0LgogICAgICAgICAvLwpAQCAtMjU2LDEyICsyNTks
MTYgQEAgdm9pZCogVFBvb2xBbGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBudQogICAgICAgICBy
ZXR1cm4gaW5pdGlhbGl6ZUFsbG9jYXRpb24oaW5Vc2VMaXN0LCBtZW1vcnksIG51bUJ5dGVzKTsK
ICAgICB9CiAKLSAgICBpZiAoYWxsb2NhdGlvblNpemUgKyBoZWFkZXJTa2lwID4gcGFnZVNpemUp
IHsKKyAgICBpZiAoYWxsb2NhdGlvblNpemUgPiBwYWdlU2l6ZSAtIGhlYWRlclNraXApIHsKICAg
ICAgICAgLy8KICAgICAgICAgLy8gRG8gYSBtdWx0aS1wYWdlIGFsbG9jYXRpb24uICBEb24ndCBt
aXggdGhlc2Ugd2l0aCB0aGUgb3RoZXJzLgogICAgICAgICAvLyBUaGUgT1MgaXMgZWZmaWNpZW50
IGFuZCBhbGxvY2F0aW5nIGFuZCBmcmVlLWluZyBtdWx0aXBsZSBwYWdlcy4KICAgICAgICAgLy8K
ICAgICAgICAgc2l6ZV90IG51bUJ5dGVzVG9BbGxvYyA9IGFsbG9jYXRpb25TaXplICsgaGVhZGVy
U2tpcDsKKyAgICAgICAgLy8gRGV0ZWN0IGludGVnZXIgb3ZlcmZsb3cuCisgICAgICAgIGlmIChu
dW1CeXRlc1RvQWxsb2MgPCBhbGxvY2F0aW9uU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiAwOwor
CiAgICAgICAgIHRIZWFkZXIqIG1lbW9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dEhlYWRlcio+KDo6
bmV3IGNoYXJbbnVtQnl0ZXNUb0FsbG9jXSk7CiAgICAgICAgIGlmIChtZW1vcnkgPT0gMCkKICAg
ICAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1NoSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1NoSGFuZGxlLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiBjbGFzcyBMb25nTmFtZU1hcDsKIGNsYXNzIFRDb21waWxlcjsKIGNsYXNz
IFREZXBlbmRlbmN5R3JhcGg7CitjbGFzcyBUcmFuc2xhdG9ySExTTDsKIAogLy8KIC8vIEhlbHBl
ciBmdW5jdGlvbiB0byBpZGVudGlmeSBzcGVjcyB0aGF0IGFyZSBiYXNlZCBvbiB0aGUgV2ViR0wg
c3BlYywKQEAgLTQyLDYgKzQzLDcgQEAgcHVibGljOgogICAgIFRTaEhhbmRsZUJhc2UoKTsKICAg
ICB2aXJ0dWFsIH5UU2hIYW5kbGVCYXNlKCk7CiAgICAgdmlydHVhbCBUQ29tcGlsZXIqIGdldEFz
Q29tcGlsZXIoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBUcmFuc2xhdG9ySExTTCogZ2V0
QXNUcmFuc2xhdG9ySExTTCgpIHsgcmV0dXJuIDA7IH0KIAogcHJvdGVjdGVkOgogICAgIC8vIE1l
bW9yeSBhbGxvY2F0b3IuIEFsbG9jYXRlcyBhbmQgdHJhY2tzIG1lbW9yeSByZXF1aXJlZCBieSB0
aGUgY29tcGlsZXIuCkBAIC04MSw4ICs4Myw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIEluaXRC
dWlsdEluU3ltYm9sVGFibGUoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpOwog
ICAgIC8vIENsZWFycyB0aGUgcmVzdWx0cyBmcm9tIHRoZSBwcmV2aW91cyBjb21waWxhdGlvbi4K
ICAgICB2b2lkIGNsZWFyUmVzdWx0cygpOwotICAgIC8vIFJldHVybiB0cnVlIGlmIGZ1bmN0aW9u
IHJlY3Vyc2lvbiBpcyBkZXRlY3RlZC4KLSAgICBib29sIGRldGVjdFJlY3Vyc2lvbihUSW50ZXJt
Tm9kZSogcm9vdCk7CisgICAgLy8gUmV0dXJuIHRydWUgaWYgZnVuY3Rpb24gcmVjdXJzaW9uIGlz
IGRldGVjdGVkIG9yIGNhbGwgZGVwdGggZXhjZWVkZWQuCisgICAgYm9vbCBkZXRlY3RDYWxsRGVw
dGgoVEludGVybU5vZGUqIHJvb3QsIFRJbmZvU2luayYgaW5mb1NpbmssIGJvb2wgbGltaXRDYWxs
U3RhY2tEZXB0aCk7CiAgICAgLy8gUmV3cml0ZXMgYSBzaGFkZXIncyBpbnRlcm1lZGlhdGUgdHJl
ZSBhY2NvcmRpbmcgdG8gdGhlIENTUyBTaGFkZXJzIHNwZWMuCiAgICAgdm9pZCByZXdyaXRlQ1NT
U2hhZGVyKFRJbnRlcm1Ob2RlKiByb290KTsKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdp
dmVuIHNoYWRlciBkb2VzIG5vdCBleGNlZWQgdGhlIG1pbmltdW0KQEAgLTEwNCw4ICsxMDYsMTIg
QEAgcHJvdGVjdGVkOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2hhZGVyIGRvZXMgbm90
IHVzZSBzYW1wbGVyIGRlcGVuZGVudCB2YWx1ZXMgdG8gYWZmZWN0IGNvbnRyb2wgCiAgICAgLy8g
ZmxvdyBvciBpbiBvcGVyYXRpb25zIHdob3NlIHRpbWUgY2FuIGRlcGVuZCBvbiB0aGUgaW5wdXQg
dmFsdWVzLgogICAgIGJvb2wgZW5mb3JjZUZyYWdtZW50U2hhZGVyVGltaW5nUmVzdHJpY3Rpb25z
KGNvbnN0IFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKTsKKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0
aGUgbWF4aW11bSBleHByZXNzaW9uIGNvbXBsZXhpdHkgYmVsb3cgdGhlIGxpbWl0LgorICAgIGJv
b2wgbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8g
R2V0IGJ1aWx0LWluIGV4dGVuc2lvbnMgd2l0aCBkZWZhdWx0IGJlaGF2aW9yLgogICAgIGNvbnN0
IFRFeHRlbnNpb25CZWhhdmlvciYgZ2V0RXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdDsKKyAgICAv
LyBHZXQgdGhlIHJlc291cmNlcyBzZXQgYnkgSW5pdEJ1aWx0SW5TeW1ib2xUYWJsZQorICAgIGNv
bnN0IFNoQnVpbHRJblJlc291cmNlcyYgZ2V0UmVzb3VyY2VzKCkgY29uc3Q7CiAKICAgICBjb25z
dCBBcnJheUJvdW5kc0NsYW1wZXImIGdldEFycmF5Qm91bmRzQ2xhbXBlcigpIGNvbnN0OwogICAg
IFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgZ2V0QXJyYXlJbmRleENsYW1waW5nU3RyYXRl
Z3koKSBjb25zdDsKQEAgLTExNiw2ICsxMjIsMTAgQEAgcHJpdmF0ZToKICAgICBTaFNoYWRlclNw
ZWMgc2hhZGVyU3BlYzsKIAogICAgIGludCBtYXhVbmlmb3JtVmVjdG9yczsKKyAgICBpbnQgbWF4
RXhwcmVzc2lvbkNvbXBsZXhpdHk7CisgICAgaW50IG1heENhbGxTdGFja0RlcHRoOworCisgICAg
U2hCdWlsdEluUmVzb3VyY2VzIGNvbXBpbGVSZXNvdXJjZXM7CiAKICAgICAvLyBCdWlsdC1pbiBz
eW1ib2wgdGFibGUgZm9yIHRoZSBnaXZlbiBsYW5ndWFnZSwgc3BlYywgYW5kIHJlc291cmNlcy4K
ICAgICAvLyBJdCBpcyBwcmVzZXJ2ZWQgZnJvbSBjb21waWxlLXRvLWNvbXBpbGUuCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcu
Y3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvU2hhZGVyTGFuZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwot
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNs
dWRlICJjb21waWxlci9Jbml0aWFsaXplRGxsLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL2xlbmd0aF9saW1pdHMuaCIKICNpbmNsdWRlICJjb21waWxlci9TaEhhbmRsZS5oIgor
I2luY2x1ZGUgImNvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmgiCiAKIC8vCiAvLyBUaGlzIGlzIHRo
ZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBpbnRlcmZhY2UgYmV0d2VlbiBhbiBPR0wgZHJpdmVyCkBA
IC0xMjYsNiArMTI3LDcgQEAgdm9pZCBTaEluaXRCdWlsdEluUmVzb3VyY2VzKFNoQnVpbHRJblJl
cwogICAgIHJlc291cmNlcy0+T0VTX0VHTF9pbWFnZV9leHRlcm5hbCA9IDA7CiAgICAgcmVzb3Vy
Y2VzLT5BUkJfdGV4dHVyZV9yZWN0YW5nbGUgPSAwOwogICAgIHJlc291cmNlcy0+RVhUX2RyYXdf
YnVmZmVycyA9IDA7CisgICAgcmVzb3VyY2VzLT5FWFRfZnJhZ19kZXB0aCA9IDA7CiAKICAgICAv
LyBEaXNhYmxlIGhpZ2hwIHByZWNpc2lvbiBpbiBmcmFnbWVudCBzaGFkZXIgYnkgZGVmYXVsdC4K
ICAgICByZXNvdXJjZXMtPkZyYWdtZW50UHJlY2lzaW9uSGlnaCA9IDA7CkBAIC0zNTEsMyArMzUz
LDIxIEBAIHZvaWQgU2hHZXROYW1lSGFzaGluZ0VudHJ5KGNvbnN0IFNoSGFuZGwKICAgICAvLyBU
byBiZSBvbiB0aGUgc2FmZSBzaWRlIGluIGNhc2UgdGhlIHNvdXJjZSBpcyBsb25nZXIgdGhhbiBl
eHBlY3RlZC4KICAgICBoYXNoZWROYW1lW2xlbiAtIDFdID0gJ1wwJzsKIH0KKwordm9pZCBTaEdl
dEluZm9Qb2ludGVyKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwgU2hTaGFkZXJJbmZvIHBuYW1lLCB2
b2lkKiogcGFyYW1zKQoreworICAgIGlmICghaGFuZGxlIHx8ICFwYXJhbXMpCisgICAgICAgIHJl
dHVybjsKKworICAgIFRTaEhhbmRsZUJhc2UqIGJhc2UgPSBzdGF0aWNfY2FzdDxUU2hIYW5kbGVC
YXNlKj4oaGFuZGxlKTsKKyAgICBUcmFuc2xhdG9ySExTTCogdHJhbnNsYXRvciA9IGJhc2UtPmdl
dEFzVHJhbnNsYXRvckhMU0woKTsKKyAgICBpZiAoIXRyYW5zbGF0b3IpIHJldHVybjsKKworICAg
IHN3aXRjaChwbmFtZSkKKyAgICB7CisgICAgY2FzZSBTSF9BQ1RJVkVfVU5JRk9STVNfQVJSQVk6
CisgICAgICAgICpwYXJhbXMgPSAodm9pZCopJnRyYW5zbGF0b3ItPmdldFVuaWZvcm1zKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9s
VGFibGUuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw0OCArMTcs
MzQgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5j
bHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlIDxjbGltaXRzPgogCiBUVHlwZTo6
VFR5cGUoY29uc3QgVFB1YmxpY1R5cGUgJnApIDoKLSAgICAgICAgICAgIHR5cGUocC50eXBlKSwg
cHJlY2lzaW9uKHAucHJlY2lzaW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNp
emUpLCBtYXRyaXgocC5tYXRyaXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlT
aXplKSwKLSAgICAgICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUo
MCksIHN0cnVjdHVyZSgwKSwgc3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3Rpbmco
MCksIGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKSwgdHlwZU5hbWUoMCkKKyAgICAgICAgICAgIHR5
cGUocC50eXBlKSwgcHJlY2lzaW9uKHAucHJlY2lzaW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVy
KSwgc2l6ZShwLnNpemUpLCBtYXRyaXgocC5tYXRyaXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlT
aXplKHAuYXJyYXlTaXplKSwgc3RydWN0dXJlKDApCiB7Ci0gICAgaWYgKHAudXNlckRlZikgewor
ICAgIGlmIChwLnVzZXJEZWYpCiAgICAgICAgIHN0cnVjdHVyZSA9IHAudXNlckRlZi0+Z2V0U3Ry
dWN0KCk7Ci0gICAgICAgIHR5cGVOYW1lID0gTmV3UG9vbFRTdHJpbmcocC51c2VyRGVmLT5nZXRU
eXBlTmFtZSgpLmNfc3RyKCkpOwotICAgICAgICBjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3Rpbmco
KTsKLSAgICB9CiB9CiAKIC8vCiAvLyBSZWN1cnNpdmVseSBnZW5lcmF0ZSBtYW5nbGVkIG5hbWVz
LgogLy8KLXZvaWQgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYgbWFuZ2xlZE5hbWUp
CitUU3RyaW5nIFRUeXBlOjpidWlsZE1hbmdsZWROYW1lKCkgY29uc3QKIHsKKyAgICBUU3RyaW5n
IG1hbmdsZWROYW1lOwogICAgIGlmIChpc01hdHJpeCgpKQogICAgICAgICBtYW5nbGVkTmFtZSAr
PSAnbSc7CiAgICAgZWxzZSBpZiAoaXNWZWN0b3IoKSkKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0g
J3YnOwogCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBFYnRGbG9hdDogICAgICAgICAg
ICAgIG1hbmdsZWROYW1lICs9ICdmJzsgICAgICBicmVhazsKLSAgICBjYXNlIEVidEludDogICAg
ICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ2knOyAgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0
Qm9vbDogICAgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAnYic7ICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBFYnRTYW1wbGVyMkQ6ICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJzMiI7ICAgICBicmVh
azsKLSAgICBjYXNlIEVidFNhbXBsZXJDdWJlOiAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInNDIjsg
ICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0U3RydWN0OgotICAgICAgICBtYW5nbGVkTmFtZSArPSAi
c3RydWN0LSI7Ci0gICAgICAgIGlmICh0eXBlTmFtZSkKLSAgICAgICAgICAgIG1hbmdsZWROYW1l
ICs9ICp0eXBlTmFtZTsKLSAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAnLSc7Ci0gICAgICAgICAgICAgICAgKCpz
dHJ1Y3R1cmUpW2ldLnR5cGUtPmJ1aWxkTWFuZ2xlZE5hbWUobWFuZ2xlZE5hbWUpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBFYnRGbG9hdDogICAgICAgbWFuZ2xlZE5hbWUgKz0gJ2YnOyAgICAgIGJyZWFrOworICAgIGNh
c2UgRWJ0SW50OiAgICAgICAgIG1hbmdsZWROYW1lICs9ICdpJzsgICAgICBicmVhazsKKyAgICBj
YXNlIEVidEJvb2w6ICAgICAgICBtYW5nbGVkTmFtZSArPSAnYic7ICAgICAgYnJlYWs7CisgICAg
Y2FzZSBFYnRTYW1wbGVyMkQ6ICAgbWFuZ2xlZE5hbWUgKz0gInMyIjsgICAgIGJyZWFrOworICAg
IGNhc2UgRWJ0U2FtcGxlckN1YmU6IG1hbmdsZWROYW1lICs9ICJzQyI7ICAgICBicmVhazsKKyAg
ICBjYXNlIEVidFN0cnVjdDogICAgICBtYW5nbGVkTmFtZSArPSBzdHJ1Y3R1cmUtPm1hbmdsZWRO
YW1lKCk7IGJyZWFrOworICAgIGRlZmF1bHQ6ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAog
ICAgIG1hbmdsZWROYW1lICs9IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIGdldE5vbWluYWxTaXpl
KCkpOwpAQCAtNjksNTMgKzU1LDcyIEBAIHZvaWQgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0
cmluZyYgbWEKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gYnVmOwogICAgICAgICBtYW5nbGVkTmFt
ZSArPSAnXSc7CiAgICAgfQorICAgIHJldHVybiBtYW5nbGVkTmFtZTsKIH0KIAotaW50IFRUeXBl
OjpnZXRTdHJ1Y3RTaXplKCkgY29uc3QKK3NpemVfdCBUVHlwZTo6Z2V0T2JqZWN0U2l6ZSgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFnZXRTdHJ1Y3QoKSkgewotICAgICAgICBhc3NlcnQoZmFsc2UgJiYg
Ik5vdCBhIHN0cnVjdCIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgc2l6ZV90IHRv
dGFsU2l6ZSA9IDA7CiAKLSAgICBpZiAoc3RydWN0dXJlU2l6ZSA9PSAwKQotICAgICAgICBmb3Ig
KFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgdGwgPSBnZXRTdHJ1Y3QoKS0+YmVnaW4oKTsgdGwg
IT0gZ2V0U3RydWN0KCktPmVuZCgpOyB0bCsrKQotICAgICAgICAgICAgc3RydWN0dXJlU2l6ZSAr
PSAoKCp0bCkudHlwZSktPmdldE9iamVjdFNpemUoKTsKKyAgICBpZiAoZ2V0QmFzaWNUeXBlKCkg
PT0gRWJ0U3RydWN0KQorICAgICAgICB0b3RhbFNpemUgPSBzdHJ1Y3R1cmUtPm9iamVjdFNpemUo
KTsKKyAgICBlbHNlIGlmIChtYXRyaXgpCisgICAgICAgIHRvdGFsU2l6ZSA9IHNpemUgKiBzaXpl
OworICAgIGVsc2UKKyAgICAgICAgdG90YWxTaXplID0gc2l6ZTsKKworICAgIGlmIChpc0FycmF5
KCkpIHsKKyAgICAgICAgc2l6ZV90IGFycmF5U2l6ZSA9IGdldEFycmF5U2l6ZSgpOworICAgICAg
ICBpZiAoYXJyYXlTaXplID4gSU5UX01BWCAvIHRvdGFsU2l6ZSkKKyAgICAgICAgICAgIHRvdGFs
U2l6ZSA9IElOVF9NQVg7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRvdGFsU2l6ZSAqPSBh
cnJheVNpemU7CisgICAgfQogCi0gICAgcmV0dXJuIHN0cnVjdHVyZVNpemU7CisgICAgcmV0dXJu
IHRvdGFsU2l6ZTsKIH0KIAotdm9pZCBUVHlwZTo6Y29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5n
KCkKK2Jvb2wgVFN0cnVjdHVyZTo6Y29udGFpbnNBcnJheXMoKSBjb25zdAogewotICAgIGlmICgh
Z2V0U3RydWN0KCkpIHsKLSAgICAgICAgcmV0dXJuOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbUZpZWxkcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlw
ZSA9ICgqbUZpZWxkcylbaV0tPnR5cGUoKTsKKyAgICAgICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJh
eSgpIHx8IGZpZWxkVHlwZS0+aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQogCi0gICAgaW50
IG1heE5lc3RpbmcgPSAwOwotICAgIGZvciAoVFR5cGVMaXN0Ojpjb25zdF9pdGVyYXRvciB0bCA9
IGdldFN0cnVjdCgpLT5iZWdpbigpOyB0bCAhPSBnZXRTdHJ1Y3QoKS0+ZW5kKCk7ICsrdGwpIHsK
LSAgICAgICAgbWF4TmVzdGluZyA9IHN0ZDo6bWF4KG1heE5lc3RpbmcsICgoKnRsKS50eXBlKS0+
Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSk7CitUU3RyaW5nIFRTdHJ1Y3R1cmU6OmJ1aWxkTWFu
Z2xlZE5hbWUoKSBjb25zdAoreworICAgIFRTdHJpbmcgbWFuZ2xlZE5hbWUoInN0cnVjdC0iKTsK
KyAgICBtYW5nbGVkTmFtZSArPSAqbU5hbWU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
RmllbGRzLT5zaXplKCk7ICsraSkgeworICAgICAgICBtYW5nbGVkTmFtZSArPSAnLSc7CisgICAg
ICAgIG1hbmdsZWROYW1lICs9ICgqbUZpZWxkcylbaV0tPnR5cGUoKS0+Z2V0TWFuZ2xlZE5hbWUo
KTsKICAgICB9Ci0KLSAgICBkZWVwZXN0U3RydWN0TmVzdGluZyA9IDEgKyBtYXhOZXN0aW5nOwor
ICAgIHJldHVybiBtYW5nbGVkTmFtZTsKIH0KIAotYm9vbCBUVHlwZTo6aXNTdHJ1Y3R1cmVDb250
YWluaW5nQXJyYXlzKCkgY29uc3QKK3NpemVfdCBUU3RydWN0dXJlOjpjYWxjdWxhdGVPYmplY3RT
aXplKCkgY29uc3QKIHsKLSAgICBpZiAoIXN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtRmllbGRzLT5zaXplKCk7ICsraSkgeworICAgICAgICBzaXplX3QgZmllbGRTaXplID0gKCpt
RmllbGRzKVtpXS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIGlmIChmaWVsZFNp
emUgPiBJTlRfTUFYIC0gc2l6ZSkKKyAgICAgICAgICAgIHNpemUgPSBJTlRfTUFYOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBzaXplICs9IGZpZWxkU2l6ZTsKICAgICB9CisgICAgcmV0dXJu
IHNpemU7Cit9CiAKLSAgICBmb3IgKFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyID0g
c3RydWN0dXJlLT5iZWdpbigpOyBtZW1iZXIgIT0gc3RydWN0dXJlLT5lbmQoKTsgbWVtYmVyKysp
Ci0gICAgewotICAgICAgICBpZiAobWVtYmVyLT50eXBlLT5pc0FycmF5KCkgfHwKLSAgICAgICAg
ICAgIG1lbWJlci0+dHlwZS0+aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CitpbnQgVFN0cnVjdHVyZTo6
Y2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBjb25zdAoreworICAgIGludCBtYXhOZXN0aW5nID0g
MDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1GaWVsZHMtPnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIG1heE5lc3RpbmcgPSBzdGQ6Om1heChtYXhOZXN0aW5nLCAoKm1GaWVsZHMpW2ldLT50
eXBlKCktPmdldERlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkpOwogICAgIH0KLQotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gMSArIG1heE5lc3Rpbmc7CiB9CiAKIC8vCkBAIC0xOTYsODQgKzIw
MSw4IEBAIHZvaWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvT3BlcmF0b3IKIHZvaWQgVFN5
bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0
IFRTdHJpbmcmIGV4dCkKIHsKICAgICBmb3IgKHRMZXZlbDo6aXRlcmF0b3IgaXQgPSBsZXZlbC5i
ZWdpbigpOyBpdCAhPSBsZXZlbC5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoaXQtPnNlY29u
ZC0+aXNGdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uID0gc3Rh
dGljX2Nhc3Q8VEZ1bmN0aW9uKj4oaXQtPnNlY29uZCk7Ci0gICAgICAgICAgICBpZiAoZnVuY3Rp
b24tPmdldE5hbWUoKSA9PSBuYW1lKQotICAgICAgICAgICAgICAgIGZ1bmN0aW9uLT5yZWxhdGVU
b0V4dGVuc2lvbihleHQpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1UU3ltYm9sOjpUU3ltYm9s
KGNvbnN0IFRTeW1ib2wmIGNvcHlPZikKLXsKLSAgICBuYW1lID0gTmV3UG9vbFRTdHJpbmcoY29w
eU9mLm5hbWUtPmNfc3RyKCkpOwotICAgIHVuaXF1ZUlkID0gY29weU9mLnVuaXF1ZUlkOwotfQot
Ci1UVmFyaWFibGU6OlRWYXJpYWJsZShjb25zdCBUVmFyaWFibGUmIGNvcHlPZiwgVFN0cnVjdHVy
ZU1hcCYgcmVtYXBwZXIpIDogVFN5bWJvbChjb3B5T2YpCi17Ci0gICAgdHlwZS5jb3B5VHlwZShj
b3B5T2YudHlwZSwgcmVtYXBwZXIpOwotICAgIHVzZXJUeXBlID0gY29weU9mLnVzZXJUeXBlOwot
ICAgIC8vIGZvciBidWlsdEluIHN5bWJvbCB0YWJsZSBsZXZlbCwgdW5pb25BcnJheSBhbmQgYXJy
YXlJbmZvcm1hdGlvbiBwb2ludGVycyBzaG91bGQgYmUgTlVMTAotICAgIGFzc2VydChjb3B5T2Yu
YXJyYXlJbmZvcm1hdGlvblR5cGUgPT0gMCk7Ci0gICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAw
OwotCi0gICAgaWYgKGNvcHlPZi51bmlvbkFycmF5KSB7Ci0gICAgICAgIGFzc2VydCghY29weU9m
LnR5cGUuZ2V0U3RydWN0KCkpOwotICAgICAgICBhc3NlcnQoY29weU9mLnR5cGUuZ2V0T2JqZWN0
U2l6ZSgpID09IDEpOwotICAgICAgICB1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07
Ci0gICAgICAgIHVuaW9uQXJyYXlbMF0gPSBjb3B5T2YudW5pb25BcnJheVswXTsKLSAgICB9IGVs
c2UKLSAgICAgICAgdW5pb25BcnJheSA9IDA7Ci19Ci0KLVRWYXJpYWJsZSogVFZhcmlhYmxlOjpj
bG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLXsKLSAgICBUVmFyaWFibGUgKnZhcmlhYmxl
ID0gbmV3IFRWYXJpYWJsZSgqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgcmV0dXJuIHZhcmlhYmxl
OwotfQotCi1URnVuY3Rpb246OlRGdW5jdGlvbihjb25zdCBURnVuY3Rpb24mIGNvcHlPZiwgVFN0
cnVjdHVyZU1hcCYgcmVtYXBwZXIpIDogVFN5bWJvbChjb3B5T2YpCi17Ci0gICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBjb3B5T2YucGFyYW1ldGVycy5zaXplKCk7ICsraSkgewotICAg
ICAgICBUUGFyYW1ldGVyIHBhcmFtOwotICAgICAgICBwYXJhbWV0ZXJzLnB1c2hfYmFjayhwYXJh
bSk7Ci0gICAgICAgIHBhcmFtZXRlcnMuYmFjaygpLmNvcHlQYXJhbShjb3B5T2YucGFyYW1ldGVy
c1tpXSwgcmVtYXBwZXIpOwotICAgIH0KLQotICAgIHJldHVyblR5cGUuY29weVR5cGUoY29weU9m
LnJldHVyblR5cGUsIHJlbWFwcGVyKTsKLSAgICBtYW5nbGVkTmFtZSA9IGNvcHlPZi5tYW5nbGVk
TmFtZTsKLSAgICBvcCA9IGNvcHlPZi5vcDsKLSAgICBkZWZpbmVkID0gY29weU9mLmRlZmluZWQ7
Ci19Ci0KLVRGdW5jdGlvbiogVEZ1bmN0aW9uOjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBl
cikKLXsKLSAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigqdGhpcywgcmVt
YXBwZXIpOwotCi0gICAgcmV0dXJuIGZ1bmN0aW9uOwotfQotCi1UU3ltYm9sVGFibGVMZXZlbCog
VFN5bWJvbFRhYmxlTGV2ZWw6OmNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQotewotICAg
IFRTeW1ib2xUYWJsZUxldmVsICpzeW1UYWJsZUxldmVsID0gbmV3IFRTeW1ib2xUYWJsZUxldmVs
KCk7Ci0gICAgdExldmVsOjppdGVyYXRvciBpdGVyOwotICAgIGZvciAoaXRlciA9IGxldmVsLmJl
Z2luKCk7IGl0ZXIgIT0gbGV2ZWwuZW5kKCk7ICsraXRlcikgewotICAgICAgICBzeW1UYWJsZUxl
dmVsLT5pbnNlcnQoKml0ZXItPnNlY29uZC0+Y2xvbmUocmVtYXBwZXIpKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gc3ltVGFibGVMZXZlbDsKLX0KLQotdm9pZCBUU3ltYm9sVGFibGU6OmNvcHlUYWJs
ZShjb25zdCBUU3ltYm9sVGFibGUmIGNvcHlPZikKLXsKLSAgICBUU3RydWN0dXJlTWFwIHJlbWFw
cGVyOwotICAgIHVuaXF1ZUlkID0gY29weU9mLnVuaXF1ZUlkOwotICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgY29weU9mLnRhYmxlLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHRhYmxl
LnB1c2hfYmFjayhjb3B5T2YudGFibGVbaV0tPmNsb25lKHJlbWFwcGVyKSk7Ci0gICAgfQotICAg
IGZvciggdW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29weU9mLnByZWNpc2lvblN0YWNrLnNpemUo
KTsgaSsrKSB7Ci0gICAgICAgIHByZWNpc2lvblN0YWNrLnB1c2hfYmFjayggY29weU9mLnByZWNp
c2lvblN0YWNrW2ldICk7CisgICAgICAgIFRTeW1ib2wqIHN5bWJvbCA9IGl0LT5zZWNvbmQ7Cisg
ICAgICAgIGlmIChzeW1ib2wtPmdldE5hbWUoKSA9PSBuYW1lKQorICAgICAgICAgICAgc3ltYm9s
LT5yZWxhdGVUb0V4dGVuc2lvbihleHQpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAx
NTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMp
IDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCiAvLwpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+
CiAKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0lu
Zm9TaW5rLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCiAKQEAgLTQ5LDEz
ICs1MCwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgc2V0VW5pcXVlSWQoaW50IGlkKSB7IHVuaXF1ZUlk
ID0gaWQ7IH0KICAgICBpbnQgZ2V0VW5pcXVlSWQoKSBjb25zdCB7IHJldHVybiB1bmlxdWVJZDsg
fQotICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0ID0gMDsJ
Ci0gICAgVFN5bWJvbChjb25zdCBUU3ltYm9sJik7Ci0gICAgdmlydHVhbCBUU3ltYm9sKiBjbG9u
ZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJ
bmZvU2luayAmaW5mb1NpbmspIGNvbnN0ID0gMDsKKyAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9u
KGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBleHRlbnNpb24gPSBleHQ7IH0KKyAgICBjb25zdCBUU3Ry
aW5nJiBnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBleHRlbnNpb247IH0KKworcHJpdmF0
ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFN5bWJvbCk7CiAKLXByb3RlY3RlZDoK
ICAgICBjb25zdCBUU3RyaW5nICpuYW1lOwogICAgIHVuc2lnbmVkIGludCB1bmlxdWVJZDsgICAg
ICAvLyBGb3IgcmVhbCBjb21wYXJpbmcgZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbgorICAgIFRTdHJp
bmcgZXh0ZW5zaW9uOwogfTsKIAogLy8KQEAgLTcwLDE1ICs3NCwxMyBAQCBwcm90ZWN0ZWQ6CiAv
LwogY2xhc3MgVFZhcmlhYmxlIDogcHVibGljIFRTeW1ib2wgewogcHVibGljOgotICAgIFRWYXJp
YWJsZShjb25zdCBUU3RyaW5nICpuYW1lLCBjb25zdCBUVHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNl
ICkgOiBUU3ltYm9sKG5hbWUpLCB0eXBlKHQpLCB1c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCks
IGFycmF5SW5mb3JtYXRpb25UeXBlKDApIHsgfQorICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5n
ICpuYW1lLCBjb25zdCBUVHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUp
LCB0eXBlKHQpLCB1c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCkgeyB9CiAgICAgdmlydHVhbCB+
VFZhcmlhYmxlKCkgeyB9CiAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9ICAgIAogICAgIFRUeXBlJiBnZXRUeXBlKCkgeyByZXR1cm4gdHlwZTsgfSAg
ICAKICAgICBjb25zdCBUVHlwZSYgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KICAg
ICBib29sIGlzVXNlclR5cGUoKSBjb25zdCB7IHJldHVybiB1c2VyVHlwZTsgfQogICAgIHZvaWQg
c2V0UXVhbGlmaWVyKFRRdWFsaWZpZXIgcXVhbGlmaWVyKSB7IHR5cGUuc2V0UXVhbGlmaWVyKHF1
YWxpZmllcik7IH0KLSAgICB2b2lkIHVwZGF0ZUFycmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlICp0
KSB7IGFycmF5SW5mb3JtYXRpb25UeXBlID0gdDsgfQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9y
bWF0aW9uVHlwZSgpIHsgcmV0dXJuIGFycmF5SW5mb3JtYXRpb25UeXBlOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgZHVtcChUSW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKIApAQCAtMTAwLDE2ICsx
MDIsMTUgQEAgcHVibGljOgogICAgICAgICBkZWxldGVbXSB1bmlvbkFycmF5OwogICAgICAgICB1
bmlvbkFycmF5ID0gY29uc3RBcnJheTsgIAogICAgIH0KLSAgICBUVmFyaWFibGUoY29uc3QgVFZh
cmlhYmxlJiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpOyAvLyBjb3B5IGNvbnN0cnVjdG9yCi0g
ICAgdmlydHVhbCBUVmFyaWFibGUqIGNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKIAot
cHJvdGVjdGVkOgorcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFZhcmlh
YmxlKTsKKwogICAgIFRUeXBlIHR5cGU7CiAgICAgYm9vbCB1c2VyVHlwZTsKICAgICAvLyB3ZSBh
cmUgYXNzdW1pbmcgdGhhdCBQb29sIEFsbG9jYXRvciB3aWxsIGZyZWUgdGhlIG1lbW9yeSBhbGxv
Y2F0ZWQgdG8gdW5pb25BcnJheQogICAgIC8vIHdoZW4gdGhpcyBvYmplY3QgaXMgZGVzdHJveWVk
CiAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheTsKLSAgICBUVHlwZSAqYXJyYXlJbmZvcm1h
dGlvblR5cGU7ICAvLyB0aGlzIGlzIHVzZWQgZm9yIHVwZGF0aW5nIG1heEFycmF5U2l6ZSBpbiBh
bGwgdGhlIHJlZmVyZW5jZXMgdG8gYSBnaXZlbiBzeW1ib2wKIH07CiAKIC8vCkBAIC0xMTksMTEg
KzEyMCw2IEBAIHByb3RlY3RlZDoKIHN0cnVjdCBUUGFyYW1ldGVyIHsKICAgICBUU3RyaW5nICpu
YW1lOwogICAgIFRUeXBlKiB0eXBlOwotICAgIHZvaWQgY29weVBhcmFtKGNvbnN0IFRQYXJhbWV0
ZXImIHBhcmFtLCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIG5hbWUg
PSBOZXdQb29sVFN0cmluZyhwYXJhbS5uYW1lLT5jX3N0cigpKTsKLSAgICAgICAgdHlwZSA9IHBh
cmFtLnR5cGUtPmNsb25lKHJlbWFwcGVyKTsKLSAgICB9CiB9OwogCiAvLwpAQCAtMTYzLDkgKzE1
OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbGF0ZVRvT3BlcmF0b3IoVE9wZXJhdG9yIG8pIHsg
b3AgPSBvOyB9CiAgICAgVE9wZXJhdG9yIGdldEJ1aWx0SW5PcCgpIGNvbnN0IHsgcmV0dXJuIG9w
OyB9CiAKLSAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBl
eHRlbnNpb24gPSBleHQ7IH0KLSAgICBjb25zdCBUU3RyaW5nJiBnZXRFeHRlbnNpb24oKSBjb25z
dCB7IHJldHVybiBleHRlbnNpb247IH0KLQogICAgIHZvaWQgc2V0RGVmaW5lZCgpIHsgZGVmaW5l
ZCA9IHRydWU7IH0KICAgICBib29sIGlzRGVmaW5lZCgpIHsgcmV0dXJuIGRlZmluZWQ7IH0KIApA
QCAtMTczLDE2ICsxNjYsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IFRQYXJhbWV0ZXImIGdldFBh
cmFtKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBwYXJhbWV0ZXJzW2ldOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgZHVtcChUSW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKLSAgICBURnVuY3Rpb24o
Y29uc3QgVEZ1bmN0aW9uJiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpOwotICAgIHZpcnR1YWwg
VEZ1bmN0aW9uKiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcik7CiAKLXByb3RlY3RlZDoK
K3ByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRGdW5jdGlvbik7CisKICAg
ICB0eXBlZGVmIFRWZWN0b3I8VFBhcmFtZXRlcj4gVFBhcmFtTGlzdDsKICAgICBUUGFyYW1MaXN0
IHBhcmFtZXRlcnM7CiAgICAgVFR5cGUgcmV0dXJuVHlwZTsKICAgICBUU3RyaW5nIG1hbmdsZWRO
YW1lOwogICAgIFRPcGVyYXRvciBvcDsKLSAgICBUU3RyaW5nIGV4dGVuc2lvbjsKICAgICBib29s
IGRlZmluZWQ7CiB9OwogCkBAIC0xOTgsMTcgKzE5MCwyMiBAQCBwdWJsaWM6CiAgICAgVFN5bWJv
bFRhYmxlTGV2ZWwoKSB7IH0KICAgICB+VFN5bWJvbFRhYmxlTGV2ZWwoKTsKIAotICAgIGJvb2wg
aW5zZXJ0KFRTeW1ib2wmIHN5bWJvbCkgCisgICAgYm9vbCBpbnNlcnQoY29uc3QgVFN0cmluZyAm
bmFtZSwgVFN5bWJvbCAmc3ltYm9sKQogICAgIHsKICAgICAgICAgLy8KICAgICAgICAgLy8gcmV0
dXJuaW5nIHRydWUgbWVhbnMgc3ltYm9sIHdhcyBhZGRlZCB0byB0aGUgdGFibGUKICAgICAgICAg
Ly8KICAgICAgICAgdEluc2VydFJlc3VsdCByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdCA9IGxldmVs
Lmluc2VydCh0TGV2ZWxQYWlyKHN5bWJvbC5nZXRNYW5nbGVkTmFtZSgpLCAmc3ltYm9sKSk7Cisg
ICAgICAgIHJlc3VsdCA9IGxldmVsLmluc2VydCh0TGV2ZWxQYWlyKG5hbWUsICZzeW1ib2wpKTsK
IAogICAgICAgICByZXR1cm4gcmVzdWx0LnNlY29uZDsKICAgICB9CiAKKyAgICBib29sIGluc2Vy
dChUU3ltYm9sICZzeW1ib2wpCisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KHN5bWJvbC5n
ZXRNYW5nbGVkTmFtZSgpLCBzeW1ib2wpOworICAgIH0KKwogICAgIFRTeW1ib2wqIGZpbmQoY29u
c3QgVFN0cmluZyYgbmFtZSkgY29uc3QKICAgICB7CiAgICAgICAgIHRMZXZlbDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBsZXZlbC5maW5kKG5hbWUpOwpAQCAtMjMxLDcgKzIyOCw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbGF0ZVRvT3BlcmF0b3IoY29uc3QgY2hhciogbmFtZSwgVE9wZXJhdG9yIG9w
KTsKICAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFRT
dHJpbmcmIGV4dCk7CiAgICAgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0Owot
ICAgIFRTeW1ib2xUYWJsZUxldmVsKiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcik7CiAK
IHByb3RlY3RlZDoKICAgICB0TGV2ZWwgbGV2ZWw7CkBAIC0yODIsNiArMjc4LDM1IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHRhYmxlW2N1cnJlbnRMZXZlbCgpXS0+aW5zZXJ0KHN5bWJvbCk7
CiAgICAgfQogCisgICAgYm9vbCBpbnNlcnRDb25zdEludChjb25zdCBjaGFyICpuYW1lLCBpbnQg
dmFsdWUpCisgICAgeworICAgICAgICBUVmFyaWFibGUgKmNvbnN0YW50ID0gbmV3IFRWYXJpYWJs
ZShOZXdQb29sVFN0cmluZyhuYW1lKSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNv
bnN0LCAxKSk7CisgICAgICAgIGNvbnN0YW50LT5nZXRDb25zdFBvaW50ZXIoKS0+c2V0SUNvbnN0
KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGluc2VydCgqY29uc3RhbnQpOworICAgIH0KKworICAg
IGJvb2wgaW5zZXJ0QnVpbHRJbihUVHlwZSAqcnZhbHVlLCBjb25zdCBjaGFyICpuYW1lLCBUVHlw
ZSAqcHR5cGUxLCBUVHlwZSAqcHR5cGUyID0gMCwgVFR5cGUgKnB0eXBlMyA9IDApCisgICAgewor
ICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbihOZXdQb29sVFN0cmlu
ZyhuYW1lKSwgKnJ2YWx1ZSk7CisKKyAgICAgICAgVFBhcmFtZXRlciBwYXJhbTEgPSB7TlVMTCwg
cHR5cGUxfTsKKyAgICAgICAgZnVuY3Rpb24tPmFkZFBhcmFtZXRlcihwYXJhbTEpOworCisgICAg
ICAgIGlmKHB0eXBlMikKKyAgICAgICAgeworICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTIg
PSB7TlVMTCwgcHR5cGUyfTsKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5hZGRQYXJhbWV0ZXIocGFy
YW0yKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmKHB0eXBlMykKKyAgICAgICAgeworICAgICAg
ICAgICAgVFBhcmFtZXRlciBwYXJhbTMgPSB7TlVMTCwgcHR5cGUzfTsKKyAgICAgICAgICAgIGZ1
bmN0aW9uLT5hZGRQYXJhbWV0ZXIocGFyYW0zKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBpbnNlcnQoKmZ1bmN0aW9uKTsKKyAgICB9CisKICAgICBUU3ltYm9sKiBmaW5kKGNvbnN0IFRT
dHJpbmcmIG5hbWUsIGJvb2wqIGJ1aWx0SW4gPSAwLCBib29sICpzYW1lU2NvcGUgPSAwKSAKICAg
ICB7CiAgICAgICAgIGludCBsZXZlbCA9IGN1cnJlbnRMZXZlbCgpOwpAQCAtMzIxLDcgKzM0Niw2
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgaW50IGdldE1heFN5bWJvbElkKCkgeyByZXR1cm4gdW5p
cXVlSWQ7IH0KICAgICB2b2lkIGR1bXAoVEluZm9TaW5rICZpbmZvU2luaykgY29uc3Q7Ci0gICAg
dm9pZCBjb3B5VGFibGUoY29uc3QgVFN5bWJvbFRhYmxlJiBjb3B5T2YpOwogCiAgICAgYm9vbCBz
ZXREZWZhdWx0UHJlY2lzaW9uKCBjb25zdCBUUHVibGljVHlwZSYgdHlwZSwgVFByZWNpc2lvbiBw
cmVjICl7CiAgICAgICAgIGlmIChJc1NhbXBsZXIodHlwZS50eXBlKSkKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xhdG9ySExTTC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JITFNM
LmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1RyYW5zbGF0b3JITFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtOSwxNSArOSwxNiBAQAog
I2luY2x1ZGUgImNvbXBpbGVyL0luaXRpYWxpemVQYXJzZUNvbnRleHQuaCIKICNpbmNsdWRlICJj
b21waWxlci9PdXRwdXRITFNMLmgiCiAKLVRyYW5zbGF0b3JITFNMOjpUcmFuc2xhdG9ySExTTChT
aFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMpCi0gICAgOiBUQ29tcGlsZXIodHlw
ZSwgc3BlYykKK1RyYW5zbGF0b3JITFNMOjpUcmFuc2xhdG9ySExTTChTaFNoYWRlclR5cGUgdHlw
ZSwgU2hTaGFkZXJTcGVjIHNwZWMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKKyAgICA6IFRDb21w
aWxlcih0eXBlLCBzcGVjKSwgbU91dHB1dFR5cGUob3V0cHV0KQogewogfQogCiB2b2lkIFRyYW5z
bGF0b3JITFNMOjp0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QpCiB7CiAgICAgVFBhcnNlQ29u
dGV4dCYgcGFyc2VDb250ZXh0ID0gKkdldEdsb2JhbFBhcnNlQ29udGV4dCgpOwotICAgIHNoOjpP
dXRwdXRITFNMIG91dHB1dEhMU0wocGFyc2VDb250ZXh0KTsKKyAgICBzaDo6T3V0cHV0SExTTCBv
dXRwdXRITFNMKHBhcnNlQ29udGV4dCwgZ2V0UmVzb3VyY2VzKCksIG1PdXRwdXRUeXBlKTsKIAog
ICAgIG91dHB1dEhMU0wub3V0cHV0KCk7CisgICAgbUFjdGl2ZVVuaWZvcm1zID0gb3V0cHV0SExT
TC5nZXRVbmlmb3JtcygpOwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1RyYW5zbGF0b3JITFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xhdG9ySExTTC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KIC8vCkBAIC04LDEzICs4LDIwIEBACiAjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JI
TFNMX0hfCiAKICNpbmNsdWRlICJjb21waWxlci9TaEhhbmRsZS5oIgorI2luY2x1ZGUgImNvbXBp
bGVyL1VuaWZvcm0uaCIKIAogY2xhc3MgVHJhbnNsYXRvckhMU0wgOiBwdWJsaWMgVENvbXBpbGVy
IHsKIHB1YmxpYzoKLSAgICBUcmFuc2xhdG9ySExTTChTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFk
ZXJTcGVjIHNwZWMpOworICAgIFRyYW5zbGF0b3JITFNMKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNo
YWRlclNwZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KTsKKworICAgIHZpcnR1YWwgVHJh
bnNsYXRvckhMU0wgKmdldEFzVHJhbnNsYXRvckhMU0woKSB7IHJldHVybiB0aGlzOyB9CisgICAg
Y29uc3Qgc2g6OkFjdGl2ZVVuaWZvcm1zICZnZXRVbmlmb3JtcygpIHsgcmV0dXJuIG1BY3RpdmVV
bmlmb3JtczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zbGF0ZShUSW50
ZXJtTm9kZSogcm9vdCk7CisKKyAgICBzaDo6QWN0aXZlVW5pZm9ybXMgbUFjdGl2ZVVuaWZvcm1z
OworICAgIFNoU2hhZGVyT3V0cHV0IG1PdXRwdXRUeXBlOwogfTsKIAogI2VuZGlmICAvLyBDT01Q
SUxFUl9UUkFOU0xBVE9SSExTTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL1R5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1R5cGVzLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9UeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDMwICs3
LDg1IEBACiAjaWZuZGVmIF9UWVBFU19JTkNMVURFRAogI2RlZmluZSBfVFlQRVNfSU5DTFVERUQK
IAorI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKICNpbmNsdWRlICJjb21waWxlci9C
YXNlVHlwZXMuaCIKICNpbmNsdWRlICJjb21waWxlci9Db21tb24uaCIKICNpbmNsdWRlICJjb21w
aWxlci9kZWJ1Zy5oIgogCi1jbGFzcyBUVHlwZTsKIHN0cnVjdCBUUHVibGljVHlwZTsKK2NsYXNz
IFRUeXBlOwogCi0vLwotLy8gTmVlZCB0byBoYXZlIGFzc29jaWF0aW9uIG9mIGxpbmUgbnVtYmVy
cyB0byB0eXBlcyBpbiBhIGxpc3QgZm9yIGJ1aWxkaW5nIHN0cnVjdHMuCi0vLwotc3RydWN0IFRU
eXBlTGluZSB7Ci0gICAgVFR5cGUqIHR5cGU7Ci0gICAgaW50IGxpbmU7CitjbGFzcyBURmllbGQK
K3sKK3B1YmxpYzoKKyAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxv
Y2F0b3IpOworICAgIFRGaWVsZChUVHlwZSogdHlwZSwgVFN0cmluZyogbmFtZSkgOiBtVHlwZSh0
eXBlKSwgbU5hbWUobmFtZSkge30KKworICAgIC8vIFRPRE8oYWxva3ApOiBXZSBzaG91bGQgb25s
eSByZXR1cm4gY29uc3QgdHlwZS4KKyAgICAvLyBGaXggaXQgYnkgdHdlYWtpbmcgZ3JhbW1hci4K
KyAgICBUVHlwZSogdHlwZSgpIHsgcmV0dXJuIG1UeXBlOyB9CisgICAgY29uc3QgVFR5cGUqIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtVHlwZTsgfQorCisgICAgY29uc3QgVFN0cmluZyYgbmFtZSgp
IGNvbnN0IHsgcmV0dXJuICptTmFtZTsgfQorCitwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihURmllbGQpOworICAgIFRUeXBlKiBtVHlwZTsKKyAgICBUU3RyaW5nKiBtTmFt
ZTsKIH07Ci10eXBlZGVmIFRWZWN0b3I8VFR5cGVMaW5lPiBUVHlwZUxpc3Q7CiAKLWlubGluZSBU
VHlwZUxpc3QqIE5ld1Bvb2xUVHlwZUxpc3QoKQordHlwZWRlZiBUVmVjdG9yPFRGaWVsZCo+IFRG
aWVsZExpc3Q7CitpbmxpbmUgVEZpZWxkTGlzdCogTmV3UG9vbFRGaWVsZExpc3QoKQogewotICAg
IHZvaWQqIG1lbW9yeSA9IEdsb2JhbFBvb2xBbGxvY2F0b3IuYWxsb2NhdGUoc2l6ZW9mKFRUeXBl
TGlzdCkpOwotICAgIHJldHVybiBuZXcobWVtb3J5KSBUVHlwZUxpc3Q7CisgICAgdm9pZCogbWVt
b3J5ID0gR2xvYmFsUG9vbEFsbG9jYXRvci5hbGxvY2F0ZShzaXplb2YoVEZpZWxkTGlzdCkpOwor
ICAgIHJldHVybiBuZXcobWVtb3J5KSBURmllbGRMaXN0OwogfQogCi10eXBlZGVmIFRNYXA8VFR5
cGVMaXN0KiwgVFR5cGVMaXN0Kj4gVFN0cnVjdHVyZU1hcDsKLXR5cGVkZWYgVE1hcDxUVHlwZUxp
c3QqLCBUVHlwZUxpc3QqPjo6aXRlcmF0b3IgVFN0cnVjdHVyZU1hcEl0ZXJhdG9yOworY2xhc3Mg
VFN0cnVjdHVyZQoreworcHVibGljOgorICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xv
YmFsUG9vbEFsbG9jYXRvcik7CisgICAgVFN0cnVjdHVyZShUU3RyaW5nKiBuYW1lLCBURmllbGRM
aXN0KiBmaWVsZHMpCisgICAgICAgIDogbU5hbWUobmFtZSksCisgICAgICAgICAgbUZpZWxkcyhm
aWVsZHMpLAorICAgICAgICAgIG1PYmplY3RTaXplKDApLAorICAgICAgICAgIG1EZWVwZXN0TmVz
dGluZygwKSB7CisgICAgfQorCisgICAgY29uc3QgVFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuICptTmFtZTsgfQorICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcygpIGNvbnN0IHsgcmV0
dXJuICptRmllbGRzOyB9CisKKyAgICBjb25zdCBUU3RyaW5nJiBtYW5nbGVkTmFtZSgpIGNvbnN0
IHsKKyAgICAgICAgaWYgKG1NYW5nbGVkTmFtZS5lbXB0eSgpKQorICAgICAgICAgICAgbU1hbmds
ZWROYW1lID0gYnVpbGRNYW5nbGVkTmFtZSgpOworICAgICAgICByZXR1cm4gbU1hbmdsZWROYW1l
OworICAgIH0KKyAgICBzaXplX3Qgb2JqZWN0U2l6ZSgpIGNvbnN0IHsKKyAgICAgICAgaWYgKG1P
YmplY3RTaXplID09IDApCisgICAgICAgICAgICBtT2JqZWN0U2l6ZSA9IGNhbGN1bGF0ZU9iamVj
dFNpemUoKTsKKyAgICAgICAgcmV0dXJuIG1PYmplY3RTaXplOworICAgIH07CisgICAgaW50IGRl
ZXBlc3ROZXN0aW5nKCkgY29uc3QgeworICAgICAgICBpZiAobURlZXBlc3ROZXN0aW5nID09IDAp
CisgICAgICAgICAgICBtRGVlcGVzdE5lc3RpbmcgPSBjYWxjdWxhdGVEZWVwZXN0TmVzdGluZygp
OworICAgICAgICByZXR1cm4gbURlZXBlc3ROZXN0aW5nOworICAgIH0KKyAgICBib29sIGNvbnRh
aW5zQXJyYXlzKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOKFRTdHJ1Y3R1cmUpOworICAgIFRTdHJpbmcgYnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0Owor
ICAgIHNpemVfdCBjYWxjdWxhdGVPYmplY3RTaXplKCkgY29uc3Q7CisgICAgaW50IGNhbGN1bGF0
ZURlZXBlc3ROZXN0aW5nKCkgY29uc3Q7CisKKyAgICBUU3RyaW5nKiBtTmFtZTsKKyAgICBURmll
bGRMaXN0KiBtRmllbGRzOworCisgICAgbXV0YWJsZSBUU3RyaW5nIG1NYW5nbGVkTmFtZTsKKyAg
ICBtdXRhYmxlIHNpemVfdCBtT2JqZWN0U2l6ZTsKKyAgICBtdXRhYmxlIGludCBtRGVlcGVzdE5l
c3Rpbmc7Cit9OwogCiAvLwogLy8gQmFzZSBjbGFzcyBmb3IgdGhpbmdzIHRoYXQgaGF2ZSBhIHR5
cGUuCkBAIC00MSw2OSArOTYsMTMgQEAgcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05FV19E
RUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRvcikKICAgICBUVHlwZSgpIHt9CiAgICAgVFR5cGUoVEJh
c2ljVHlwZSB0LCBUUHJlY2lzaW9uIHAsIFRRdWFsaWZpZXIgcSA9IEV2cVRlbXBvcmFyeSwgaW50
IHMgPSAxLCBib29sIG0gPSBmYWxzZSwgYm9vbCBhID0gZmFsc2UpIDoKLSAgICAgICAgICAgIHR5
cGUodCksIHByZWNpc2lvbihwKSwgcXVhbGlmaWVyKHEpLCBzaXplKHMpLCBtYXRyaXgobSksIGFy
cmF5KGEpLCBhcnJheVNpemUoMCksCi0gICAgICAgICAgICBtYXhBcnJheVNpemUoMCksIGFycmF5
SW5mb3JtYXRpb25UeXBlKDApLCBzdHJ1Y3R1cmUoMCksIHN0cnVjdHVyZVNpemUoMCksIGRlZXBl
c3RTdHJ1Y3ROZXN0aW5nKDApLCBmaWVsZE5hbWUoMCksIG1hbmdsZWQoMCksIHR5cGVOYW1lKDAp
CisgICAgICAgICAgICB0eXBlKHQpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihxKSwgc2l6ZShz
KSwgbWF0cml4KG0pLCBhcnJheShhKSwgYXJyYXlTaXplKDApLCBzdHJ1Y3R1cmUoMCkKICAgICB7
CiAgICAgfQogICAgIGV4cGxpY2l0IFRUeXBlKGNvbnN0IFRQdWJsaWNUeXBlICZwKTsKLSAgICBU
VHlwZShUVHlwZUxpc3QqIHVzZXJEZWYsIGNvbnN0IFRTdHJpbmcmIG4sIFRQcmVjaXNpb24gcCA9
IEVicFVuZGVmaW5lZCkgOgotICAgICAgICAgICAgdHlwZShFYnRTdHJ1Y3QpLCBwcmVjaXNpb24o
cCksIHF1YWxpZmllcihFdnFUZW1wb3JhcnkpLCBzaXplKDEpLCBtYXRyaXgoZmFsc2UpLCBhcnJh
eShmYWxzZSksIGFycmF5U2l6ZSgwKSwKLSAgICAgICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJy
YXlJbmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVyZSh1c2VyRGVmKSwgc3RydWN0dXJlU2l6ZSgw
KSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKQorICAg
IFRUeXBlKFRTdHJ1Y3R1cmUqIHVzZXJEZWYsIFRQcmVjaXNpb24gcCA9IEVicFVuZGVmaW5lZCkg
OgorICAgICAgICAgICAgdHlwZShFYnRTdHJ1Y3QpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihF
dnFUZW1wb3JhcnkpLCBzaXplKDEpLCBtYXRyaXgoZmFsc2UpLCBhcnJheShmYWxzZSksIGFycmF5
U2l6ZSgwKSwgc3RydWN0dXJlKHVzZXJEZWYpCiAgICAgewotICAgICAgICB0eXBlTmFtZSA9IE5l
d1Bvb2xUU3RyaW5nKG4uY19zdHIoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb3B5VHlwZShjb25z
dCBUVHlwZSYgY29weU9mLCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAg
IHR5cGUgPSBjb3B5T2YudHlwZTsKLSAgICAgICAgcHJlY2lzaW9uID0gY29weU9mLnByZWNpc2lv
bjsKLSAgICAgICAgcXVhbGlmaWVyID0gY29weU9mLnF1YWxpZmllcjsKLSAgICAgICAgc2l6ZSA9
IGNvcHlPZi5zaXplOwotICAgICAgICBtYXRyaXggPSBjb3B5T2YubWF0cml4OwotICAgICAgICBh
cnJheSA9IGNvcHlPZi5hcnJheTsKLSAgICAgICAgYXJyYXlTaXplID0gY29weU9mLmFycmF5U2l6
ZTsKLQotICAgICAgICBUU3RydWN0dXJlTWFwSXRlcmF0b3IgaXRlcjsKLSAgICAgICAgaWYgKGNv
cHlPZi5zdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIGlmICgoaXRlciA9IHJlbWFwcGVyLmZpbmQo
c3RydWN0dXJlKSkgPT0gcmVtYXBwZXIuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBjcmVh
dGUgdGhlIG5ldyBzdHJ1Y3R1cmUgaGVyZQotICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IE5l
d1Bvb2xUVHlwZUxpc3QoKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IGNvcHlPZi5zdHJ1Y3R1cmUtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxpbmUubGlu
ZSA9ICgqY29weU9mLnN0cnVjdHVyZSlbaV0ubGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlw
ZUxpbmUudHlwZSA9ICgqY29weU9mLnN0cnVjdHVyZSlbaV0udHlwZS0+Y2xvbmUocmVtYXBwZXIp
OwotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnB1c2hfYmFjayh0eXBlTGluZSk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBz
dHJ1Y3R1cmUgPSBpdGVyLT5zZWNvbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgc3RydWN0dXJlID0gMDsKLQotICAgICAgICBmaWVsZE5hbWUgPSAwOwotICAg
ICAgICBpZiAoY29weU9mLmZpZWxkTmFtZSkKLSAgICAgICAgICAgIGZpZWxkTmFtZSA9IE5ld1Bv
b2xUU3RyaW5nKGNvcHlPZi5maWVsZE5hbWUtPmNfc3RyKCkpOwotICAgICAgICB0eXBlTmFtZSA9
IDA7Ci0gICAgICAgIGlmIChjb3B5T2YudHlwZU5hbWUpCi0gICAgICAgICAgICB0eXBlTmFtZSA9
IE5ld1Bvb2xUU3RyaW5nKGNvcHlPZi50eXBlTmFtZS0+Y19zdHIoKSk7Ci0KLSAgICAgICAgbWFu
Z2xlZCA9IDA7Ci0gICAgICAgIGlmIChjb3B5T2YubWFuZ2xlZCkKLSAgICAgICAgICAgIG1hbmds
ZWQgPSBOZXdQb29sVFN0cmluZyhjb3B5T2YubWFuZ2xlZC0+Y19zdHIoKSk7Ci0KLSAgICAgICAg
c3RydWN0dXJlU2l6ZSA9IGNvcHlPZi5zdHJ1Y3R1cmVTaXplOwotICAgICAgICBtYXhBcnJheVNp
emUgPSBjb3B5T2YubWF4QXJyYXlTaXplOwotICAgICAgICBkZWVwZXN0U3RydWN0TmVzdGluZyA9
IGNvcHlPZi5kZWVwZXN0U3RydWN0TmVzdGluZzsKLSAgICAgICAgYXNzZXJ0KGNvcHlPZi5hcnJh
eUluZm9ybWF0aW9uVHlwZSA9PSAwKTsKLSAgICAgICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAw
OyAvLyBhcnJheUluZm9ybWF0aW9uVHlwZSBzaG91bGQgbm90IGJlIHNldCBmb3IgYnVpbHRJbiBz
eW1ib2wgdGFibGUgbGV2ZWwKLSAgICB9Ci0KLSAgICBUVHlwZSogY2xvbmUoVFN0cnVjdHVyZU1h
cCYgcmVtYXBwZXIpCi0gICAgewotICAgICAgICBUVHlwZSAqbmV3VHlwZSA9IG5ldyBUVHlwZSgp
OwotICAgICAgICBuZXdUeXBlLT5jb3B5VHlwZSgqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgICAg
IHJldHVybiBuZXdUeXBlOwogICAgIH0KIAogICAgIFRCYXNpY1R5cGUgZ2V0QmFzaWNUeXBlKCkg
Y29uc3QgeyByZXR1cm4gdHlwZTsgfQpAQCAtMTE5LDIxICsxMTgsNDIgQEAgcHVibGljOgogICAg
IGludCBnZXROb21pbmFsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemU7IH0KICAgICB2b2lkIHNl
dE5vbWluYWxTaXplKGludCBzKSB7IHNpemUgPSBzOyB9CiAgICAgLy8gRnVsbCBzaXplIG9mIHNp
bmdsZSBpbnN0YW5jZSBvZiB0eXBlCi0gICAgaW50IGdldE9iamVjdFNpemUoKSBjb25zdAorICAg
IHNpemVfdCBnZXRPYmplY3RTaXplKCkgY29uc3Q7CisKKyAgICBpbnQgZWxlbWVudFJlZ2lzdGVy
Q291bnQoKSBjb25zdAogICAgIHsKLSAgICAgICAgaW50IHRvdGFsU2l6ZTsKKyAgICAgICAgaWYg
KHN0cnVjdHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgVEZpZWxkTGlzdCAmZmll
bGRzID0gZ2V0U3RydWN0KCktPmZpZWxkcygpOworICAgICAgICAgICAgaW50IHJlZ2lzdGVyQ291
bnQgPSAwOwogCi0gICAgICAgIGlmIChnZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCi0gICAg
ICAgICAgICB0b3RhbFNpemUgPSBnZXRTdHJ1Y3RTaXplKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1h
dHJpeCkKLSAgICAgICAgICAgIHRvdGFsU2l6ZSA9IHNpemUgKiBzaXplOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0b3RhbFNpemUgPSBzaXplOworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmVnaXN0ZXJDb3VudCArPSBmaWVsZHNbaV0tPnR5cGUoKS0+dG90YWxSZWdpc3RlckNv
dW50KCk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKGlzQXJyYXkoKSkKLSAgICAgICAg
ICAgIHRvdGFsU2l6ZSAqPSBzdGQ6Om1heChnZXRBcnJheVNpemUoKSwgZ2V0TWF4QXJyYXlTaXpl
KCkpOworICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdGVyQ291bnQ7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSBpZiAoaXNNYXRyaXgoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdl
dE5vbWluYWxTaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KIAotICAgICAgICByZXR1cm4gdG90
YWxTaXplOworICAgIGludCB0b3RhbFJlZ2lzdGVyQ291bnQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKGFycmF5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYXJyYXlTaXplICog
ZWxlbWVudFJlZ2lzdGVyQ291bnQoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50UmVnaXN0ZXJDb3VudCgpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgYm9vbCBpc01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1hdHJpeCA/IHRy
dWUgOiBmYWxzZTsgfQpAQCAtMTQyLDQ3ICsxNjIsMjAgQEAgcHVibGljOgogICAgIGJvb2wgaXNB
cnJheSgpIGNvbnN0ICB7IHJldHVybiBhcnJheSA/IHRydWUgOiBmYWxzZTsgfQogICAgIGludCBn
ZXRBcnJheVNpemUoKSBjb25zdCB7IHJldHVybiBhcnJheVNpemU7IH0KICAgICB2b2lkIHNldEFy
cmF5U2l6ZShpbnQgcykgeyBhcnJheSA9IHRydWU7IGFycmF5U2l6ZSA9IHM7IH0KLSAgICBpbnQg
Z2V0TWF4QXJyYXlTaXplICgpIGNvbnN0IHsgcmV0dXJuIG1heEFycmF5U2l6ZTsgfQotICAgIHZv
aWQgc2V0TWF4QXJyYXlTaXplIChpbnQgcykgeyBtYXhBcnJheVNpemUgPSBzOyB9Ci0gICAgdm9p
ZCBjbGVhckFycmF5bmVzcygpIHsgYXJyYXkgPSBmYWxzZTsgYXJyYXlTaXplID0gMDsgbWF4QXJy
YXlTaXplID0gMDsgfQotICAgIHZvaWQgc2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoVFR5cGUqIHQp
IHsgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSB0OyB9Ci0gICAgVFR5cGUqIGdldEFycmF5SW5mb3Jt
YXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gYXJyYXlJbmZvcm1hdGlvblR5cGU7IH0KKyAgICB2
b2lkIGNsZWFyQXJyYXluZXNzKCkgeyBhcnJheSA9IGZhbHNlOyBhcnJheVNpemUgPSAwOyB9CiAK
ICAgICBib29sIGlzVmVjdG9yKCkgY29uc3QgeyByZXR1cm4gc2l6ZSA+IDEgJiYgIW1hdHJpeDsg
fQogICAgIGJvb2wgaXNTY2FsYXIoKSBjb25zdCB7IHJldHVybiBzaXplID09IDEgJiYgIW1hdHJp
eCAmJiAhc3RydWN0dXJlOyB9CiAKLSAgICBUVHlwZUxpc3QqIGdldFN0cnVjdCgpIGNvbnN0IHsg
cmV0dXJuIHN0cnVjdHVyZTsgfQotICAgIHZvaWQgc2V0U3RydWN0KFRUeXBlTGlzdCogcykgeyBz
dHJ1Y3R1cmUgPSBzOyBjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsgfQorICAgIFRTdHJ1
Y3R1cmUqIGdldFN0cnVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0cnVjdHVyZTsgfQorICAgIHZvaWQg
c2V0U3RydWN0KFRTdHJ1Y3R1cmUqIHMpIHsgc3RydWN0dXJlID0gczsgfQogCi0gICAgY29uc3Qg
VFN0cmluZyYgZ2V0VHlwZU5hbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgYXNzZXJ0KHR5cGVO
YW1lKTsKLSAgICAgICAgcmV0dXJuICp0eXBlTmFtZTsKLSAgICB9Ci0gICAgdm9pZCBzZXRUeXBl
TmFtZShjb25zdCBUU3RyaW5nJiBuKQotICAgIHsKLSAgICAgICAgdHlwZU5hbWUgPSBOZXdQb29s
VFN0cmluZyhuLmNfc3RyKCkpOwotICAgIH0KLQotICAgIGJvb2wgaXNGaWVsZCgpIGNvbnN0IHsg
cmV0dXJuIGZpZWxkTmFtZSAhPSAwOyB9Ci0gICAgY29uc3QgVFN0cmluZyYgZ2V0RmllbGROYW1l
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGFzc2VydChmaWVsZE5hbWUpOwotICAgICAgICByZXR1
cm4gKmZpZWxkTmFtZTsKLSAgICB9Ci0gICAgdm9pZCBzZXRGaWVsZE5hbWUoY29uc3QgVFN0cmlu
ZyYgbikKLSAgICB7Ci0gICAgICAgIGZpZWxkTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKG4uY19zdHIo
KSk7Ci0gICAgfQotCi0gICAgVFN0cmluZyYgZ2V0TWFuZ2xlZE5hbWUoKSB7Ci0gICAgICAgIGlm
ICghbWFuZ2xlZCkgewotICAgICAgICAgICAgbWFuZ2xlZCA9IE5ld1Bvb2xUU3RyaW5nKCIiKTsK
LSAgICAgICAgICAgIGJ1aWxkTWFuZ2xlZE5hbWUoKm1hbmdsZWQpOwotICAgICAgICAgICAgKm1h
bmdsZWQgKz0gJzsnIDsKKyAgICBjb25zdCBUU3RyaW5nJiBnZXRNYW5nbGVkTmFtZSgpIGNvbnN0
IHsKKyAgICAgICAgaWYgKG1hbmdsZWQuZW1wdHkoKSkgeworICAgICAgICAgICAgbWFuZ2xlZCA9
IGJ1aWxkTWFuZ2xlZE5hbWUoKTsKKyAgICAgICAgICAgIG1hbmdsZWQgKz0gJzsnOwogICAgICAg
ICB9Ci0KLSAgICAgICAgcmV0dXJuICptYW5nbGVkOworICAgICAgICByZXR1cm4gbWFuZ2xlZDsK
ICAgICB9CiAKICAgICBib29sIHNhbWVFbGVtZW50VHlwZShjb25zdCBUVHlwZSYgcmlnaHQpIGNv
bnN0IHsKQEAgLTIzMCwzMiArMjIzLDM0IEBAIHB1YmxpYzoKICAgICAvLyBGb3IgdHlwZSAibmVz
dGluZzIiLCB0aGlzIG1ldGhvZCB3b3VsZCByZXR1cm4gMiAtLSB0aGUgbnVtYmVyCiAgICAgLy8g
b2Ygc3RydWN0dXJlcyB0aHJvdWdoIHdoaWNoIGluZGlyZWN0aW9uIG11c3Qgb2NjdXIgdG8gcmVh
Y2ggdGhlCiAgICAgLy8gZGVlcGVzdCBmaWVsZCAobmVzdGluZzIuZmllbGQxLnBvc2l0aW9uKS4K
LSAgICBpbnQgZ2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSBjb25zdCB7IHJldHVybiBkZWVwZXN0
U3RydWN0TmVzdGluZzsgfQorICAgIGludCBnZXREZWVwZXN0U3RydWN0TmVzdGluZygpIGNvbnN0
IHsKKyAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSA/IHN0cnVjdHVyZS0+ZGVlcGVzdE5lc3Rpbmco
KSA6IDA7CisgICAgfQogCi0gICAgYm9vbCBpc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSBj
b25zdDsKKyAgICBib29sIGlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygpIGNvbnN0IHsKKyAg
ICAgICAgcmV0dXJuIHN0cnVjdHVyZSA/IHN0cnVjdHVyZS0+Y29udGFpbnNBcnJheXMoKSA6IGZh
bHNlOworICAgIH0KIAotcHJvdGVjdGVkOgotICAgIHZvaWQgYnVpbGRNYW5nbGVkTmFtZShUU3Ry
aW5nJik7Ci0gICAgaW50IGdldFN0cnVjdFNpemUoKSBjb25zdDsKLSAgICB2b2lkIGNvbXB1dGVE
ZWVwZXN0U3RydWN0TmVzdGluZygpOworcHJpdmF0ZToKKyAgICBUU3RyaW5nIGJ1aWxkTWFuZ2xl
ZE5hbWUoKSBjb25zdDsKIAorI2lmZGVmIF9fR05VQ19fCisgICAgVEJhc2ljVHlwZSB0eXBlOwor
ICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOworICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyOworI2Vs
c2UKICAgICBUQmFzaWNUeXBlIHR5cGUgICAgICA6IDY7CiAgICAgVFByZWNpc2lvbiBwcmVjaXNp
b247CiAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgOiA3OworI2VuZGlmCiAgICAgaW50IHNpemUg
ICAgICAgICAgICAgOiA4OyAvLyBzaXplIG9mIHZlY3RvciBvciBtYXRyaXgsIG5vdCBzaXplIG9m
IGFycmF5CiAgICAgdW5zaWduZWQgaW50IG1hdHJpeCAgOiAxOwogICAgIHVuc2lnbmVkIGludCBh
cnJheSAgIDogMTsKICAgICBpbnQgYXJyYXlTaXplOwotICAgIGludCBtYXhBcnJheVNpemU7Ci0g
ICAgVFR5cGUqIGFycmF5SW5mb3JtYXRpb25UeXBlOwogCi0gICAgVFR5cGVMaXN0KiBzdHJ1Y3R1
cmU7ICAgICAgLy8gMCB1bmxlc3MgdGhpcyBpcyBhIHN0cnVjdAotICAgIG11dGFibGUgaW50IHN0
cnVjdHVyZVNpemU7Ci0gICAgaW50IGRlZXBlc3RTdHJ1Y3ROZXN0aW5nOwotCi0gICAgVFN0cmlu
ZyAqZmllbGROYW1lOyAgICAgICAgIC8vIGZvciBzdHJ1Y3R1cmUgZmllbGQgbmFtZXMKLSAgICBU
U3RyaW5nICptYW5nbGVkOwotICAgIFRTdHJpbmcgKnR5cGVOYW1lOyAgICAgICAgICAvLyBmb3Ig
c3RydWN0dXJlIGZpZWxkIHR5cGUgbmFtZQorICAgIFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsgICAg
ICAvLyAwIHVubGVzcyB0aGlzIGlzIGEgc3RydWN0CisKKyAgICBtdXRhYmxlIFRTdHJpbmcgbWFu
Z2xlZDsKIH07CiAKIC8vCkBAIC0yNzcsOSArMjcyLDkgQEAgc3RydWN0IFRQdWJsaWNUeXBlCiAg
ICAgYm9vbCBhcnJheTsKICAgICBpbnQgYXJyYXlTaXplOwogICAgIFRUeXBlKiB1c2VyRGVmOwot
ICAgIGludCBsaW5lOworICAgIFRTb3VyY2VMb2MgbGluZTsKIAotICAgIHZvaWQgc2V0QmFzaWMo
VEJhc2ljVHlwZSBidCwgVFF1YWxpZmllciBxLCBpbnQgbG4gPSAwKQorICAgIHZvaWQgc2V0QmFz
aWMoVEJhc2ljVHlwZSBidCwgVFF1YWxpZmllciBxLCBjb25zdCBUU291cmNlTG9jJiBsbikKICAg
ICB7CiAgICAgICAgIHR5cGUgPSBidDsKICAgICAgICAgcXVhbGlmaWVyID0gcTsKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Vbmlmb3JtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5pZm9ybS5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5pZm9y
bS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKKy8vDQorLy8gQ29weXJpZ2h0IChj
KSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorLy8NCisN
CisjaW5jbHVkZSAiY29tcGlsZXIvVW5pZm9ybS5oIg0KKw0KK25hbWVzcGFjZSBzaA0KK3sNCisN
CitVbmlmb3JtOjpVbmlmb3JtKEdMZW51bSB0eXBlLCBHTGVudW0gcHJlY2lzaW9uLCBjb25zdCBj
aGFyICpuYW1lLCBpbnQgYXJyYXlTaXplLCBpbnQgcmVnaXN0ZXJJbmRleCkNCit7DQorICAgIHRo
aXMtPnR5cGUgPSB0eXBlOw0KKyAgICB0aGlzLT5wcmVjaXNpb24gPSBwcmVjaXNpb247DQorICAg
IHRoaXMtPm5hbWUgPSBuYW1lOw0KKyAgICB0aGlzLT5hcnJheVNpemUgPSBhcnJheVNpemU7DQor
ICAgIHRoaXMtPnJlZ2lzdGVySW5kZXggPSByZWdpc3RlckluZGV4Ow0KK30NCisNCit9DQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuaWZvcm0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5pZm9ybS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuaWZv
cm0uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLy8NCisvLyBDb3B5cmlnaHQgKGMp
IDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisvLw0KKw0K
KyNpZm5kZWYgQ09NUElMRVJfVU5JRk9STV9IXw0KKyNkZWZpbmUgQ09NUElMRVJfVU5JRk9STV9I
Xw0KKw0KKyNpbmNsdWRlIDxzdHJpbmc+DQorI2luY2x1ZGUgPHZlY3Rvcj4NCisNCisjZGVmaW5l
IEdMX0FQSUNBTEwNCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+DQorDQorbmFtZXNwYWNlIHNoDQor
ew0KKw0KK3N0cnVjdCBVbmlmb3JtDQorew0KKyAgICBVbmlmb3JtKEdMZW51bSB0eXBlLCBHTGVu
dW0gcHJlY2lzaW9uLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgYXJyYXlTaXplLCBpbnQgcmVnaXN0
ZXJJbmRleCk7DQorDQorICAgIEdMZW51bSB0eXBlOw0KKyAgICBHTGVudW0gcHJlY2lzaW9uOw0K
KyAgICBzdGQ6OnN0cmluZyBuYW1lOw0KKyAgICB1bnNpZ25lZCBpbnQgYXJyYXlTaXplOw0KKyAg
ICANCisgICAgaW50IHJlZ2lzdGVySW5kZXg7DQorfTsNCisNCit0eXBlZGVmIHN0ZDo6dmVjdG9y
PFVuaWZvcm0+IEFjdGl2ZVVuaWZvcm1zOw0KKw0KK30NCisNCisjZW5kaWYgICAvLyBDT01QSUxF
Ul9VTklGT1JNX0hfDQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1ZhcmlhYmxlSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzEsMTIgKzEzMSwxMyBAQCB2b2lkIGdldFVzZXJEZWZpbmVkVmFyaWFibGVJ
bmZvKGNvbnN0IFRUCiB7CiAgICAgQVNTRVJUKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3Ry
dWN0KTsKIAotICAgIGNvbnN0IFRUeXBlTGlzdCogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3Qo
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOwot
ICAgICAgICBnZXRWYXJpYWJsZUluZm8oKmZpZWxkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG5hbWUgKyAiLiIgKyBmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbWFwcGVkTmFtZSArICIuIiArIFRJbnRlcm1UcmF2ZXJzZXI6Omhhc2goZmll
bGRUeXBlLT5nZXRGaWVsZE5hbWUoKSwgaGFzaEZ1bmN0aW9uKSwKKyAgICBjb25zdCBURmllbGRM
aXN0JiBmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBUVHlwZSYg
ZmllbGRUeXBlID0gKihmaWVsZHNbaV0tPnR5cGUoKSk7CisgICAgICAgIGNvbnN0IFRTdHJpbmcm
IGZpZWxkTmFtZSA9IGZpZWxkc1tpXS0+bmFtZSgpOworICAgICAgICBnZXRWYXJpYWJsZUluZm8o
ZmllbGRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArICIuIiArIGZpZWxkTmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgKyAiLiIgKyBUSW50ZXJtVHJh
dmVyc2VyOjpoYXNoKGZpZWxkTmFtZSwgaGFzaEZ1bmN0aW9uKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZm9MaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgaGFzaEZ1bmN0aW9uKTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFu
Zy5sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9n
bHNsYW5nLmwJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9nbHNsYW5nLmwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDEwIEBAIFdI
SUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEgd2FybmluZyhk
aXNhYmxlIDogNDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZhbC0+
bGV4LmxpbmUgPSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9maWxlID0geXlsbG9jLT5s
YXN0X2ZpbGUgPSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGxvYy0+
bGFzdF9saW5lID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1h
eF9zaXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5c2Nh
bm5lcik7CiAKQEAgLTU3LDEwICs2MCw4IEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNj
YW5fdCB5eXNjYW4KICV9CiAKICVvcHRpb24gbm95eXdyYXAgbm91bnB1dCBuZXZlci1pbnRlcmFj
dGl2ZQotJW9wdGlvbiB5eWxpbmVubyByZWVudHJhbnQgYmlzb24tYnJpZGdlCi0lb3B0aW9uIHN0
YWNrCislb3B0aW9uIHl5bGluZW5vIHJlZW50cmFudCBiaXNvbi1icmlkZ2UgYmlzb24tbG9jYXRp
b25zCiAlb3B0aW9uIGV4dHJhLXR5cGU9IlRQYXJzZUNvbnRleHQqIgotJXggQ09NTUVOVCBGSUVM
RFMKIAogRCAgICAgICAgICAgWzAtOV0KIEwgICAgICAgICAgIFthLXpBLVpfXQpAQCAtNzAsNzMg
KzcxLDYwIEBAIE8gICAgICAgICAgIFswLTddCiAKICUlCiAKLSV7Ci0gICAgVFBhcnNlQ29udGV4
dCogY29udGV4dCA9IHl5ZXh0cmE7Ci0lfQotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMg
Ki8KLSIvLyJbXlxuXSogOworImludmFyaWFudCIgICAgeyByZXR1cm4gSU5WQVJJQU5UOyB9Cisi
aGlnaHAiICAgICAgICB7IHJldHVybiBISUdIX1BSRUNJU0lPTjsgfQorIm1lZGl1bXAiICAgICAg
eyByZXR1cm4gTUVESVVNX1BSRUNJU0lPTjsgfQorImxvd3AiICAgICAgICAgeyByZXR1cm4gTE9X
X1BSRUNJU0lPTjsgfQorInByZWNpc2lvbiIgICAgeyByZXR1cm4gUFJFQ0lTSU9OOyB9CisKKyJh
dHRyaWJ1dGUiICAgIHsgcmV0dXJuIEFUVFJJQlVURTsgfQorImNvbnN0IiAgICAgICAgeyByZXR1
cm4gQ09OU1RfUVVBTDsgfQorInVuaWZvcm0iICAgICAgeyByZXR1cm4gVU5JRk9STTsgfQorInZh
cnlpbmciICAgICAgeyByZXR1cm4gVkFSWUlORzsgfQorCisiYnJlYWsiICAgICAgICB7IHJldHVy
biBCUkVBSzsgfQorImNvbnRpbnVlIiAgICAgeyByZXR1cm4gQ09OVElOVUU7IH0KKyJkbyIgICAg
ICAgICAgIHsgcmV0dXJuIERPOyB9CisiZm9yIiAgICAgICAgICB7IHJldHVybiBGT1I7IH0KKyJ3
aGlsZSIgICAgICAgIHsgcmV0dXJuIFdISUxFOyB9CisKKyJpZiIgICAgICAgICAgIHsgcmV0dXJu
IElGOyB9CisiZWxzZSIgICAgICAgICB7IHJldHVybiBFTFNFOyB9CisKKyJpbiIgICAgICAgICAg
IHsgcmV0dXJuIElOX1FVQUw7IH0KKyJvdXQiICAgICAgICAgIHsgcmV0dXJuIE9VVF9RVUFMOyB9
CisiaW5vdXQiICAgICAgICB7IHJldHVybiBJTk9VVF9RVUFMOyB9CisKKyJmbG9hdCIgICAgICAg
IHsgcmV0dXJuIEZMT0FUX1RZUEU7IH0KKyJpbnQiICAgICAgICAgIHsgcmV0dXJuIElOVF9UWVBF
OyB9Cisidm9pZCIgICAgICAgICB7IHJldHVybiBWT0lEX1RZUEU7IH0KKyJib29sIiAgICAgICAg
IHsgcmV0dXJuIEJPT0xfVFlQRTsgfQorInRydWUiICAgICAgICAgeyB5eWx2YWwtPmxleC5iID0g
dHJ1ZTsgIHJldHVybiBCT09MQ09OU1RBTlQ7IH0KKyJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5s
ZXguYiA9IGZhbHNlOyByZXR1cm4gQk9PTENPTlNUQU5UOyB9CisKKyJkaXNjYXJkIiAgICAgIHsg
cmV0dXJuIERJU0NBUkQ7IH0KKyJyZXR1cm4iICAgICAgIHsgcmV0dXJuIFJFVFVSTjsgfQorCisi
bWF0MiIgICAgICAgICB7IHJldHVybiBNQVRSSVgyOyB9CisibWF0MyIgICAgICAgICB7IHJldHVy
biBNQVRSSVgzOyB9CisibWF0NCIgICAgICAgICB7IHJldHVybiBNQVRSSVg0OyB9CisKKyJ2ZWMy
IiAgICAgICAgIHsgcmV0dXJuIFZFQzI7IH0KKyJ2ZWMzIiAgICAgICAgIHsgcmV0dXJuIFZFQzM7
IH0KKyJ2ZWM0IiAgICAgICAgIHsgcmV0dXJuIFZFQzQ7IH0KKyJpdmVjMiIgICAgICAgIHsgcmV0
dXJuIElWRUMyOyB9CisiaXZlYzMiICAgICAgICB7IHJldHVybiBJVkVDMzsgfQorIml2ZWM0IiAg
ICAgICAgeyByZXR1cm4gSVZFQzQ7IH0KKyJidmVjMiIgICAgICAgIHsgcmV0dXJuIEJWRUMyOyB9
CisiYnZlYzMiICAgICAgICB7IHJldHVybiBCVkVDMzsgfQorImJ2ZWM0IiAgICAgICAgeyByZXR1
cm4gQlZFQzQ7IH0KKworInNhbXBsZXIyRCIgICAgICAgICAgeyByZXR1cm4gU0FNUExFUjJEOyB9
Cisic2FtcGxlckN1YmUiICAgICAgICB7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQorInNhbXBsZXJF
eHRlcm5hbE9FUyIgeyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KKyJzYW1wbGVyMkRS
ZWN0IiAgICAgIHsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAotICAgIC8qIE11bHRpLWxpbmUg
Y29tbWVudHMgKi8KLSIvKiIgICAgICAgICAgIHsgeXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNj
YW5uZXIpOyB9Ci08Q09NTUVOVD4uIHwKLTxDT01NRU5UPlxuIDsKLTxDT01NRU5UPiIqLyIgIHsg
eXlfcG9wX3N0YXRlKHl5c2Nhbm5lcik7IH0KLQotImludmFyaWFudCIgICAgeyByZXR1cm4oSU5W
QVJJQU5UKTsgfQotImhpZ2hwIiAgICAgICAgeyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Ci0i
bWVkaXVtcCIgICAgICB7IHJldHVybihNRURJVU1fUFJFQ0lTSU9OKTsgfQotImxvd3AiICAgICAg
ICAgeyByZXR1cm4oTE9XX1BSRUNJU0lPTik7IH0KLSJwcmVjaXNpb24iICAgIHsgcmV0dXJuKFBS
RUNJU0lPTik7IH0KLQotImF0dHJpYnV0ZSIgICAgeyByZXR1cm4oQVRUUklCVVRFKTsgfQotImNv
bnN0IiAgICAgICAgeyByZXR1cm4oQ09OU1RfUVVBTCk7IH0KLSJ1bmlmb3JtIiAgICAgIHsgcmV0
dXJuKFVOSUZPUk0pOyB9Ci0idmFyeWluZyIgICAgICB7IHJldHVybihWQVJZSU5HKTsgfQotCi0i
YnJlYWsiICAgICAgICB7IHJldHVybihCUkVBSyk7IH0KLSJjb250aW51ZSIgICAgIHsgcmV0dXJu
KENPTlRJTlVFKTsgfQotImRvIiAgICAgICAgICAgeyByZXR1cm4oRE8pOyB9Ci0iZm9yIiAgICAg
ICAgICB7IHJldHVybihGT1IpOyB9Ci0id2hpbGUiICAgICAgICB7IHJldHVybihXSElMRSk7IH0K
LQotImlmIiAgICAgICAgICAgeyByZXR1cm4oSUYpOyB9Ci0iZWxzZSIgICAgICAgICB7IHJldHVy
bihFTFNFKTsgfQotCi0iaW4iICAgICAgICAgICB7IHJldHVybihJTl9RVUFMKTsgfQotIm91dCIg
ICAgICAgICAgeyByZXR1cm4oT1VUX1FVQUwpOyB9Ci0iaW5vdXQiICAgICAgICB7IHJldHVybihJ
Tk9VVF9RVUFMKTsgfQotCi0iZmxvYXQiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9
IHRydWU7IHJldHVybihGTE9BVF9UWVBFKTsgfQotImludCIgICAgICAgICAgeyBjb250ZXh0LT5s
ZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oSU5UX1RZUEUpOyB9Ci0idm9pZCIgICAgICAgICB7
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihWT0lEX1RZUEUpOyB9Ci0iYm9v
bCIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihCT09MX1RZ
UEUpOyB9Ci0idHJ1ZSIgICAgICAgICB7IHl5bHZhbC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuKEJP
T0xDT05TVEFOVCk7IH0KLSJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyBy
ZXR1cm4oQk9PTENPTlNUQU5UKTsgfQotCi0iZGlzY2FyZCIgICAgICB7IHJldHVybihESVNDQVJE
KTsgfQotInJldHVybiIgICAgICAgeyByZXR1cm4oUkVUVVJOKTsgfQotCi0ibWF0MiIgICAgICAg
ICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVgyKTsgfQotIm1h
dDMiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklY
Myk7IH0KLSJtYXQ0IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuKE1BVFJJWDQpOyB9Ci0KLSJ2ZWMyIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gdHJ1ZTsgcmV0dXJuIChWRUMyKTsgfQotInZlYzMiICAgICAgICAgeyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzMpOyB9Ci0idmVjNCIgICAgICAgICB7IGNvbnRl
eHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KLSJpdmVjMiIgICAgICAg
IHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMik7IH0KLSJpdmVj
MyIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMyk7
IH0KLSJpdmVjNCIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJu
IChJVkVDNCk7IH0KLSJidmVjMiIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuIChCVkVDMik7IH0KLSJidmVjMyIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDMyk7IH0KLSJidmVjNCIgICAgICAgIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KLQotInNhbXBsZXIyRCIgICAg
ICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Ci0i
c2FtcGxlckN1YmUiICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBT
QU1QTEVSQ1VCRTsgfQotInNhbXBsZXJFeHRlcm5hbE9FUyIgeyBjb250ZXh0LT5sZXhBZnRlclR5
cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KLSJzYW1wbGVyMkRSZWN0
IiB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9
Ci0KLSJzdHJ1Y3QiICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJu
KFNUUlVDVCk7IH0KKyJzdHJ1Y3QiICAgICAgIHsgcmV0dXJuIFNUUlVDVDsgfQogCiAiYXNtIiAg
ICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIApAQCAtMTgzLDEz
ICsxNzEsMTEgQEAgTyAgICAgICAgICAgWzAtN10KICJmdmVjMyIgICAgICAgIHsgcmV0dXJuIHJl
c2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQogImZ2ZWM0IiAgICAgICAgeyByZXR1cm4gcmVzZXJ2
ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAKLSJzYW1wbGVyMUQiICAgIHsgcmV0dXJuIHJlc2VydmVk
X3dvcmQoeXlzY2FubmVyKTsgfQotInNhbXBsZXIzRCIgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29y
ZCh5eXNjYW5uZXIpOyB9Ci0KLSJzYW1wbGVyMURTaGFkb3ciIHsgcmV0dXJuIHJlc2VydmVkX3dv
cmQoeXlzY2FubmVyKTsgfQotInNhbXBsZXIyRFNoYWRvdyIgeyByZXR1cm4gcmVzZXJ2ZWRfd29y
ZCh5eXNjYW5uZXIpOyB9Ci0KLSJzYW1wbGVyM0RSZWN0IiB7IHJldHVybiByZXNlcnZlZF93b3Jk
KHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMUQiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93
b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0QiICAgICAgICAgICB7IHJldHVybiByZXNlcnZl
ZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMURTaGFkb3ciICAgICB7IHJldHVybiByZXNl
cnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMkRTaGFkb3ciICAgICB7IHJldHVybiBy
ZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0RSZWN0IiAgICAgICB7IHJldHVy
biByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KICJzYW1wbGVyMkRSZWN0U2hhZG93IiB7IHJl
dHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAogInNpemVvZiIgICAgICAgeyByZXR1
cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CkBAIC0yMDMsNzIgKzE4OSw2NCBAQCBPICAg
ICAgICAgICBbMC03XQogICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKIH0KIAotMFt4
WF17SH0rICAgICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2wo
eXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KLTB7T30rICAgICAgICAgICAg
IHsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkp
OyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Ci0we0R9KyAgICAgICAgICAgICB7IGNvbnRleHQtPmVy
cm9yKHl5bGluZW5vLCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+
cmVjb3ZlcigpOyByZXR1cm4gMDt9Ci17RH0rICAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4Lmkg
PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNU
QU5UKTsgfQotCi17RH0re0V9ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQote0R9
KyIuIntEfSooe0V9KT8geyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2Zf
ZG90KHl5dGV4dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KLSIuIntEfSsoe0V9KT8gICAg
IHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsg
cmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Ci0KLSIrPSIgICAgICAgICAgICB7ICByZXR1cm4oQURE
X0FTU0lHTik7IH0KLSItPSIgICAgICAgICAgICB7ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KLSIq
PSIgICAgICAgICAgICB7ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KLSIvPSIgICAgICAgICAgICB7
ICByZXR1cm4oRElWX0FTU0lHTik7IH0KLSIlPSIgICAgICAgICAgICB7ICByZXR1cm4oTU9EX0FT
U0lHTik7IH0KLSI8PD0iICAgICAgICAgICB7ICByZXR1cm4oTEVGVF9BU1NJR04pOyB9Ci0iPj49
IiAgICAgICAgICAgeyAgcmV0dXJuKFJJR0hUX0FTU0lHTik7IH0KLSImPSIgICAgICAgICAgICB7
ICByZXR1cm4oQU5EX0FTU0lHTik7IH0KLSJePSIgICAgICAgICAgICB7ICByZXR1cm4oWE9SX0FT
U0lHTik7IH0KLSJ8PSIgICAgICAgICAgICB7ICByZXR1cm4oT1JfQVNTSUdOKTsgfQotCi0iKysi
ICAgICAgICAgICAgeyAgcmV0dXJuKElOQ19PUCk7IH0KLSItLSIgICAgICAgICAgICB7ICByZXR1
cm4oREVDX09QKTsgfQotIiYmIiAgICAgICAgICAgIHsgIHJldHVybihBTkRfT1ApOyB9Ci0ifHwi
ICAgICAgICAgICAgeyAgcmV0dXJuKE9SX09QKTsgfQotIl5eIiAgICAgICAgICAgIHsgIHJldHVy
bihYT1JfT1ApOyB9Ci0iPD0iICAgICAgICAgICAgeyAgcmV0dXJuKExFX09QKTsgfQotIj49IiAg
ICAgICAgICAgIHsgIHJldHVybihHRV9PUCk7IH0KLSI9PSIgICAgICAgICAgICB7ICByZXR1cm4o
RVFfT1ApOyB9Ci0iIT0iICAgICAgICAgICAgeyAgcmV0dXJuKE5FX09QKTsgfQotIjw8IiAgICAg
ICAgICAgIHsgIHJldHVybihMRUZUX09QKTsgfQotIj4+IiAgICAgICAgICAgIHsgIHJldHVybihS
SUdIVF9PUCk7IH0KLSI7IiAgICAgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZh
bHNlOyByZXR1cm4oU0VNSUNPTE9OKTsgfQotKCJ7InwiPCUiKSAgICAgIHsgY29udGV4dC0+bGV4
QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihMRUZUX0JSQUNFKTsgfQotKCJ9InwiJT4iKSAgICAg
IHsgcmV0dXJuKFJJR0hUX0JSQUNFKTsgfQotIiwiICAgICAgICAgeyBpZiAoY29udGV4dC0+aW5U
eXBlUGFyZW4pIGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9
Ci0iOiIgICAgICAgICB7IHJldHVybihDT0xPTik7IH0KLSI9IiAgICAgICAgIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihFUVVBTCk7IH0KLSIoIiAgICAgICAgIHsgY29u
dGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gdHJ1ZTsg
cmV0dXJuKExFRlRfUEFSRU4pOyB9Ci0iKSIgICAgICAgICB7IGNvbnRleHQtPmluVHlwZVBhcmVu
ID0gZmFsc2U7IHJldHVybihSSUdIVF9QQVJFTik7IH0KLSgiWyJ8Ijw6IikgICAgICB7IHJldHVy
bihMRUZUX0JSQUNLRVQpOyB9Ci0oIl0ifCI6PiIpICAgICAgeyByZXR1cm4oUklHSFRfQlJBQ0tF
VCk7IH0KLSIuIiAgICAgICAgIHsgQkVHSU4oRklFTERTKTsgIHJldHVybihET1QpOyB9Ci0iISIg
ICAgICAgICB7IHJldHVybihCQU5HKTsgfQotIi0iICAgICAgICAgeyByZXR1cm4oREFTSCk7IH0K
LSJ+IiAgICAgICAgIHsgcmV0dXJuKFRJTERFKTsgfQotIisiICAgICAgICAgeyByZXR1cm4oUExV
Uyk7IH0KLSIqIiAgICAgICAgIHsgcmV0dXJuKFNUQVIpOyB9Ci0iLyIgICAgICAgICB7IHJldHVy
bihTTEFTSCk7IH0KLSIlIiAgICAgICAgIHsgcmV0dXJuKFBFUkNFTlQpOyB9Ci0iPCIgICAgICAg
ICB7IHJldHVybihMRUZUX0FOR0xFKTsgfQotIj4iICAgICAgICAgeyByZXR1cm4oUklHSFRfQU5H
TEUpOyB9Ci0ifCIgICAgICAgICB7IHJldHVybihWRVJUSUNBTF9CQVIpOyB9Ci0iXiIgICAgICAg
ICB7IHJldHVybihDQVJFVCk7IH0KLSImIiAgICAgICAgIHsgcmV0dXJuKEFNUEVSU0FORCk7IH0K
LSI/IiAgICAgICAgIHsgcmV0dXJuKFFVRVNUSU9OKTsgfQotCi08RklFTERTPntMfSh7TH18e0R9
KSogeyAKLSAgICBCRUdJTihJTklUSUFMKTsKLSAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQ
b29sVFN0cmluZyh5eXRleHQpOyAKLSAgICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwotfQotPEZJ
RUxEUz5bIFx0XHZcZlxyXSB7fQotCi1bIFx0XHZcblxmXHJdICAgeyAgfQotPCo+PDxFT0Y+PiAg
ICAgIHsgY29udGV4dC0+QWZ0ZXJFT0YgPSB0cnVlOyB5eXRlcm1pbmF0ZSgpOyB9Ci08Kj4uICAg
ICAgICAgICAgeyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBjaGFyIiwgeXl0
ZXh0LCAiIik7IHJldHVybiAwOyB9CiswW3hYXXtIfSsgICAgICAgICB7IHl5bHZhbC0+bGV4Lmkg
PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNU
QU5UOyB9Ciswe099KyAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxp
bnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Cit7RH0rICAg
ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRl
eHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CisKK3tEfSt7RX0gICAgICAgICAgIHsg
eXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0
dXJuIEZMT0FUQ09OU1RBTlQ7IH0KK3tEfSsiLiJ7RH0qKHtFfSk/IHsgeXlsdmFsLT5sZXguZiA9
IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RB
TlQ7IH0KKyIuIntEfSsoe0V9KT8gICAgIHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZs
b2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKworIis9IiAg
ICAgICAgICAgIHsgcmV0dXJuIEFERF9BU1NJR047IH0KKyItPSIgICAgICAgICAgICB7IHJldHVy
biBTVUJfQVNTSUdOOyB9CisiKj0iICAgICAgICAgICAgeyByZXR1cm4gTVVMX0FTU0lHTjsgfQor
Ii89IiAgICAgICAgICAgIHsgcmV0dXJuIERJVl9BU1NJR047IH0KKyIlPSIgICAgICAgICAgICB7
IHJldHVybiBNT0RfQVNTSUdOOyB9CisiPDw9IiAgICAgICAgICAgeyByZXR1cm4gTEVGVF9BU1NJ
R047IH0KKyI+Pj0iICAgICAgICAgICB7IHJldHVybiBSSUdIVF9BU1NJR047IH0KKyImPSIgICAg
ICAgICAgICB7IHJldHVybiBBTkRfQVNTSUdOOyB9CisiXj0iICAgICAgICAgICAgeyByZXR1cm4g
WE9SX0FTU0lHTjsgfQorInw9IiAgICAgICAgICAgIHsgcmV0dXJuIE9SX0FTU0lHTjsgfQorCisi
KysiICAgICAgICAgICAgeyByZXR1cm4gSU5DX09QOyB9CisiLS0iICAgICAgICAgICAgeyByZXR1
cm4gREVDX09QOyB9CisiJiYiICAgICAgICAgICAgeyByZXR1cm4gQU5EX09QOyB9CisifHwiICAg
ICAgICAgICAgeyByZXR1cm4gT1JfT1A7IH0KKyJeXiIgICAgICAgICAgICB7IHJldHVybiBYT1Jf
T1A7IH0KKyI8PSIgICAgICAgICAgICB7IHJldHVybiBMRV9PUDsgfQorIj49IiAgICAgICAgICAg
IHsgcmV0dXJuIEdFX09QOyB9CisiPT0iICAgICAgICAgICAgeyByZXR1cm4gRVFfT1A7IH0KKyIh
PSIgICAgICAgICAgICB7IHJldHVybiBORV9PUDsgfQorIjw8IiAgICAgICAgICAgIHsgcmV0dXJu
IExFRlRfT1A7IH0KKyI+PiIgICAgICAgICAgICB7IHJldHVybiBSSUdIVF9PUDsgfQorIjsiICAg
ICAgICAgICAgIHsgcmV0dXJuIFNFTUlDT0xPTjsgfQorKCJ7InwiPCUiKSAgICAgIHsgcmV0dXJu
IExFRlRfQlJBQ0U7IH0KKygifSJ8IiU+IikgICAgICB7IHJldHVybiBSSUdIVF9CUkFDRTsgfQor
IiwiICAgICAgICAgeyByZXR1cm4gQ09NTUE7IH0KKyI6IiAgICAgICAgIHsgcmV0dXJuIENPTE9O
OyB9CisiPSIgICAgICAgICB7IHJldHVybiBFUVVBTDsgfQorIigiICAgICAgICAgeyByZXR1cm4g
TEVGVF9QQVJFTjsgfQorIikiICAgICAgICAgeyByZXR1cm4gUklHSFRfUEFSRU47IH0KKygiWyJ8
Ijw6IikgIHsgcmV0dXJuIExFRlRfQlJBQ0tFVDsgfQorKCJdInwiOj4iKSAgeyByZXR1cm4gUklH
SFRfQlJBQ0tFVDsgfQorIi4iICAgICAgICAgeyByZXR1cm4gRE9UOyB9CisiISIgICAgICAgICB7
IHJldHVybiBCQU5HOyB9CisiLSIgICAgICAgICB7IHJldHVybiBEQVNIOyB9CisifiIgICAgICAg
ICB7IHJldHVybiBUSUxERTsgfQorIisiICAgICAgICAgeyByZXR1cm4gUExVUzsgfQorIioiICAg
ICAgICAgeyByZXR1cm4gU1RBUjsgfQorIi8iICAgICAgICAgeyByZXR1cm4gU0xBU0g7IH0KKyIl
IiAgICAgICAgIHsgcmV0dXJuIFBFUkNFTlQ7IH0KKyI8IiAgICAgICAgIHsgcmV0dXJuIExFRlRf
QU5HTEU7IH0KKyI+IiAgICAgICAgIHsgcmV0dXJuIFJJR0hUX0FOR0xFOyB9CisifCIgICAgICAg
ICB7IHJldHVybiBWRVJUSUNBTF9CQVI7IH0KKyJeIiAgICAgICAgIHsgcmV0dXJuIENBUkVUOyB9
CisiJiIgICAgICAgICB7IHJldHVybiBBTVBFUlNBTkQ7IH0KKyI/IiAgICAgICAgIHsgcmV0dXJu
IFFVRVNUSU9OOyB9CisKK1sgXHRcdlxuXGZccl0geyB9Cis8PEVPRj4+ICAgIHsgeXl0ZXJtaW5h
dGUoKTsgfQorLiAgICAgICAgICB7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAKICUlCiAK
QEAgLTI3OCw3ICsyNTYsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlf
c2l6CiAgICAgeXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8g
MCA6IHRva2VuLnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAg
bWVtY3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAgIHl5c2V0X2xpbmVubyhF
bmNvZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24ubGluZSks
IHl5c2Nhbm5lcik7CisgICAgeXlzZXRfY29sdW1uKHRva2VuLmxvY2F0aW9uLmZpbGUsIHl5c2Nh
bm5lcik7CisgICAgeXlzZXRfbGluZW5vKHRva2VuLmxvY2F0aW9uLmxpbmUsIHl5c2Nhbm5lcik7
CiAKICAgICBpZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5w
dXQgYnVmZmVyIG92ZXJmbG93Iik7CkBAIC0yOTIsMTIgKzI3MSwxMCBAQCBpbnQgY2hlY2tfdHlw
ZSh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKICAgICAKICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVS
OwogICAgIFRTeW1ib2wqIHN5bWJvbCA9IHl5ZXh0cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0
KTsKLSAgICBpZiAoeXlleHRyYS0+bGV4QWZ0ZXJUeXBlID09IGZhbHNlICYmIHN5bWJvbCAmJiBz
eW1ib2wtPmlzVmFyaWFibGUoKSkgeworICAgIGlmIChzeW1ib2wgJiYgc3ltYm9sLT5pc1Zhcmlh
YmxlKCkpIHsKICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJp
YWJsZSo+KHN5bWJvbCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKSB7Ci0g
ICAgICAgICAgICB5eWV4dHJhLT5sZXhBZnRlclR5cGUgPSB0cnVlOworICAgICAgICBpZiAodmFy
aWFibGUtPmlzVXNlclR5cGUoKSkKICAgICAgICAgICAgIHRva2VuID0gVFlQRV9OQU1FOwotICAg
ICAgICB9CiAgICAgfQogICAgIHl5bHZhbC0+bGV4LnN5bWJvbCA9IHN5bWJvbDsKICAgICByZXR1
cm4gdG9rZW47CkBAIC0zMDYsMjIgKzI4MywxMSBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5
eXNjYW5uZXIpIHsKIGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAg
IHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKIAot
ICAgIHl5ZXh0cmEtPmVycm9yKHl5bGluZW5vLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29y
ZCIsIHl5dGV4dCwgIiIpOworICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbGxlZ2FsIHVz
ZSBvZiByZXNlcnZlZCB3b3JkIiwgeXl0ZXh0LCAiIik7CiAgICAgeXlleHRyYS0+cmVjb3Zlcigp
OwogICAgIHJldHVybiAwOwogfQogCi12b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4
dCwgY29uc3QgY2hhciogcmVhc29uKSB7Ci0gICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3Ry
dWN0IHl5Z3V0c190KikgY29udGV4dC0+c2Nhbm5lcjsKLQotICAgIGlmIChjb250ZXh0LT5BZnRl
ckVPRikgewotICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29uLCAidW5leHBl
Y3RlZCBFT0YiKTsKLSAgICB9IGVsc2UgewotICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVu
bywgcmVhc29uLCB5eXRleHQpOwotICAgIH0KLSAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci19Ci0K
IGludCBnbHNsYW5nX2luaXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5
c2Nhbl90IHNjYW5uZXIgPSBOVUxMOwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQs
ICZzY2FubmVyKSkKQEAgLTM0NCw4ICszMTAsOCBAQCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFy
c2VDb250ZXh0KiBjb250CiBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hh
ciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAg
VFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5cmVzdGFydChOVUxMLCBjb250ZXh0LT5z
Y2FubmVyKTsKLSAgICB5eXNldF9saW5lbm8oRW5jb2RlU291cmNlTG9jKDAsIDEpLCBjb250ZXh0
LT5zY2FubmVyKTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNlOworICAgIHl5c2V0X2Nv
bHVtbigwLCBjb250ZXh0LT5zY2FubmVyKTsKKyAgICB5eXNldF9saW5lbm8oMSwgY29udGV4dC0+
c2Nhbm5lcik7CiAKICAgICAvLyBJbml0aWFsaXplIHByZXByb2Nlc3Nvci4KICAgICBpZiAoIWNv
bnRleHQtPnByZXByb2Nlc3Nvci5pbml0KGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHJldmlz
aW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNs
YW5nLnkJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogLy8KLS8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0zOSw3ICszOSw2IEBAIFdISUNIIEdFTkVSQVRFUyBU
SEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIK
IAogI2RlZmluZSBZWUVOQUJMRV9OTFMgMAotI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQog
CiAjZGVmaW5lIFlZTEVYX1BBUkFNIGNvbnRleHQtPnNjYW5uZXIKICV9CkBAIC00NywxMCArNDYs
MTIgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbAogJWV4cGVjdCAx
IC8qIE9uZSBzaGlmdCByZWR1Y2UgY29uZmxpY3QgYmVjYXVzZSBvZiBpZiB8IGVsc2UgKi8KICVw
dXJlLXBhcnNlcgogJXBhcnNlLXBhcmFtIHtUUGFyc2VDb250ZXh0KiBjb250ZXh0fQorJWxvY2F0
aW9ucwogCiAldW5pb24geworI2RlZmluZSBZWUxUWVBFIFRTb3VyY2VMb2MKKyNkZWZpbmUgWVlM
VFlQRV9JU19ERUNMQVJFRCAxCiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5l
OwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUU3RyaW5nICpzdHJpbmc7CiAgICAgICAg
ICAgICBmbG9hdCBmOwpAQCAtNjAsNyArNjEsNiBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wg
RVMgUEFSU0VSIChnbHNsCiAgICAgICAgIFRTeW1ib2wqIHN5bWJvbDsKICAgICB9IGxleDsKICAg
ICBzdHJ1Y3QgewotICAgICAgICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAgIFRPcGVyYXRvciBv
cDsKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7
CkBAIC03NCwyMyArNzQsMzEgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAo
Z2xzbAogICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgICAgICAgICBURnVu
Y3Rpb24qIGZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKLSAgICAgICAg
ICAgIFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgIFRUeXBlTGlzdCogdHlwZUxpc3Q7
CisgICAgICAgICAgICBURmllbGQqIGZpZWxkOworICAgICAgICAgICAgVEZpZWxkTGlzdCogZmll
bGRMaXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwogfQogCiAlewotZXh0ZXJuIGludCB5
eWxleChZWVNUWVBFKiB5eWx2YWxfcGFyYW0sIHZvaWQqIHl5c2Nhbm5lcik7Ci1leHRlcm4gdm9p
ZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7Citl
eHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbCwgWVlMVFlQRSogeXlsbG9jLCB2b2lkKiB5
eXNjYW5uZXIpOworc3RhdGljIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAKLSNkZWZpbmUgRlJBR19WRVJU
X09OTFkoUywgTCkgeyAgXAotICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX0ZSQUdN
RU5UX1NIQURFUiAmJiAgXAotICAgICAgICBjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX1ZFUlRF
WF9TSEFERVIpIHsgIFwKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBwb3J0ZWQgaW4g
dmVydGV4L2ZyYWdtZW50IHNoYWRlcnMgb25seSAiLCBTKTsgIFwKLSAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOyAgXAotICAgIH0gIFwKLX0KKyNkZWZpbmUgWVlMTE9DX0RFRkFVTFQoQ3VycmVu
dCwgUmhzLCBOKSAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgaWYgKFlZSUQo
TikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
KEN1cnJlbnQpLmZpcnN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDEpLmZpcnN0X2ZpbGU7ICBcCisg
ICAgICAgIChDdXJyZW50KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAxKS5maXJzdF9saW5l
OyAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCBOKS5sYXN0
X2ZpbGU7ICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywg
TikubGFzdF9saW5lOyAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0
X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfZmlsZTsgICBcCisgICAgICAgIChDdXJyZW50
KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2xpbmU7ICAgXAorICAgICAgICAo
Q3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2ZpbGU7ICAgIFwKKyAg
ICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9saW5lOyAg
ICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICB9IHdoaWxlICgwKQogCiAjZGVmaW5lIFZFUlRFWF9PTkxZKFMsIEwpIHsg
IFwKICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7ICBc
CkBAIC0xMTYsNyArMTI0LDYgQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBj
b250ZQogJXRva2VuIDxsZXg+IFNBTVBMRVIyRCBTQU1QTEVSQ1VCRSBTQU1QTEVSX0VYVEVSTkFM
X09FUyBTQU1QTEVSMkRSRUNUCiAKICV0b2tlbiA8bGV4PiBJREVOVElGSUVSIFRZUEVfTkFNRSBG
TE9BVENPTlNUQU5UIElOVENPTlNUQU5UIEJPT0xDT05TVEFOVAotJXRva2VuIDxsZXg+IEZJRUxE
X1NFTEVDVElPTgogJXRva2VuIDxsZXg+IExFRlRfT1AgUklHSFRfT1AKICV0b2tlbiA8bGV4PiBJ
TkNfT1AgREVDX09QIExFX09QIEdFX09QIEVRX09QIE5FX09QCiAldG9rZW4gPGxleD4gQU5EX09Q
IE9SX09QIFhPUl9PUCBNVUxfQVNTSUdOIERJVl9BU1NJR04gQUREX0FTU0lHTgpAQCAtMTI3LDYg
KzEzNCw3IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGUKICV0b2tl
biA8bGV4PiBDT01NQSBDT0xPTiBFUVVBTCBTRU1JQ09MT04gQkFORyBEQVNIIFRJTERFIFBMVVMg
U1RBUiBTTEFTSCBQRVJDRU5UCiAldG9rZW4gPGxleD4gTEVGVF9BTkdMRSBSSUdIVF9BTkdMRSBW
RVJUSUNBTF9CQVIgQ0FSRVQgQU1QRVJTQU5EIFFVRVNUSU9OCiAKKyV0eXBlIDxsZXg+IGlkZW50
aWZpZXIKICV0eXBlIDxpbnRlcm0+IGFzc2lnbm1lbnRfb3BlcmF0b3IgdW5hcnlfb3BlcmF0b3IK
ICV0eXBlIDxpbnRlcm0uaW50ZXJtVHlwZWROb2RlPiB2YXJpYWJsZV9pZGVudGlmaWVyIHByaW1h
cnlfZXhwcmVzc2lvbiBwb3N0Zml4X2V4cHJlc3Npb24KICV0eXBlIDxpbnRlcm0uaW50ZXJtVHlw
ZWROb2RlPiBleHByZXNzaW9uIGludGVnZXJfZXhwcmVzc2lvbiBhc3NpZ25tZW50X2V4cHJlc3Np
b24KQEAgLTE1NCw4ICsxNjIsOCBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQq
IGNvbnRlCiAldHlwZSA8aW50ZXJtLnR5cGU+IHR5cGVfcXVhbGlmaWVyIGZ1bGx5X3NwZWNpZmll
ZF90eXBlIHR5cGVfc3BlY2lmaWVyCiAldHlwZSA8aW50ZXJtLnR5cGU+IHR5cGVfc3BlY2lmaWVy
X25vX3ByZWMgdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICV0eXBlIDxpbnRlcm0udHlwZT4gc3Ry
dWN0X3NwZWNpZmllcgotJXR5cGUgPGludGVybS50eXBlTGluZT4gc3RydWN0X2RlY2xhcmF0b3IK
LSV0eXBlIDxpbnRlcm0udHlwZUxpc3Q+IHN0cnVjdF9kZWNsYXJhdG9yX2xpc3Qgc3RydWN0X2Rl
Y2xhcmF0aW9uIHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0CisldHlwZSA8aW50ZXJtLmZpZWxkPiBz
dHJ1Y3RfZGVjbGFyYXRvcgorJXR5cGUgPGludGVybS5maWVsZExpc3Q+IHN0cnVjdF9kZWNsYXJh
dG9yX2xpc3Qgc3RydWN0X2RlY2xhcmF0aW9uIHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0CiAldHlw
ZSA8aW50ZXJtLmZ1bmN0aW9uPiBmdW5jdGlvbl9oZWFkZXIgZnVuY3Rpb25fZGVjbGFyYXRvciBm
dW5jdGlvbl9pZGVudGlmaWVyCiAldHlwZSA8aW50ZXJtLmZ1bmN0aW9uPiBmdW5jdGlvbl9oZWFk
ZXJfd2l0aF9wYXJhbWV0ZXJzIGZ1bmN0aW9uX2NhbGxfaGVhZGVyCiAldHlwZSA8aW50ZXJtPiBm
dW5jdGlvbl9jYWxsX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMgZnVuY3Rpb25fY2FsbF9oZWFkZXJf
bm9fcGFyYW1ldGVycyBmdW5jdGlvbl9jYWxsX2dlbmVyaWMgZnVuY3Rpb25fcHJvdG90eXBlCkBA
IC0xNjQsMTMgKzE3MiwxNyBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNv
bnRlCiAlc3RhcnQgdHJhbnNsYXRpb25fdW5pdAogJSUKIAoraWRlbnRpZmllcgorICAgIDogSURF
TlRJRklFUgorICAgIHwgVFlQRV9OQU1FCisKIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICA6IElE
RU5USUZJRVIgewogICAgICAgICAvLyBUaGUgc3ltYm9sIHRhYmxlIHNlYXJjaCB3YXMgZG9uZSBp
biB0aGUgbGV4aWNhbCBwaGFzZQogICAgICAgICBjb25zdCBUU3ltYm9sKiBzeW1ib2wgPSAkMS5z
eW1ib2w7CiAgICAgICAgIGNvbnN0IFRWYXJpYWJsZSogdmFyaWFibGU7CiAgICAgICAgIGlmIChz
eW1ib2wgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgInVuZGVj
bGFyZWQgaWRlbnRpZmllciIsICQxLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciIsICQxLnN0cmluZy0+Y19zdHIo
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0
eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiBmYWtl
VmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCQxLnN0cmluZywgdHlwZSk7CkBAIC0xNzksMTAgKzE5
MSwxNyBAQCB2YXJpYWJsZV9pZGVudGlmaWVyCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAvLyBUaGlzIGlkZW50aWZpZXIgY2FuIG9ubHkgYmUgYSB2YXJpYWJsZSB0eXBlIHN5bWJvbAog
ICAgICAgICAgICAgaWYgKCEgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAidmFyaWFibGUgZXhwZWN0ZWQiLCAkMS5zdHJpbmct
PmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidmFyaWFibGUg
ZXhwZWN0ZWQiLCAkMS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgdmFy
aWFibGUgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOworCisgICAgICAg
ICAgICBpZiAoY29udGV4dC0+c3ltYm9sVGFibGUuZmluZEJ1aWx0SW4odmFyaWFibGUtPmdldE5h
bWUoKSkgJiYKKyAgICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5
KCkgJiYKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKEAxLCB2
YXJpYWJsZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gZG9uJ3QgZGVs
ZXRlICQxLnN0cmluZywgaXQncyB1c2VkIGJ5IGVycm9yIHJlY292ZXJ5LCBhbmQgdGhlIHBvb2wK
QEAgLTE5MSwxMSArMjEwLDEyIEBAIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICAgICAgaWYgKHZh
cmlhYmxlLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgKSB7CiAgICAgICAg
ICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gdmFyaWFibGUtPmdldENvbnN0UG9pbnRl
cigpOwogICAgICAgICAgICAgVFR5cGUgdCh2YXJpYWJsZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJh
eSwgdCwgJDEubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsIEAxKTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdl
dFVuaXF1ZUlkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksICQxLmxpbmUp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlLT5nZXROYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBAMSk7CiAgICAgfQogICAgIDsKIApAQCAtMjA5LDIyICsy
MjksMjIgQEAgcHJpbWFyeV9leHByZXNzaW9uCiAgICAgICAgIC8vIGNoZWNrIGZvciBvdmVyZmxv
dyBmb3IgY29uc3RhbnRzCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChhYnMoJDEuaSkgPj0gKDEg
PDwgMTYpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiIGludGVnZXIg
Y29uc3RhbnQgb3ZlcmZsb3ciLCAiIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwg
IiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KCQx
LmkpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQxLmxp
bmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAxKTsK
ICAgICB9CiAgICAgfCBGTE9BVENPTlNUQU5UIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5p
b25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRG
Q29uc3QoJDEuZik7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29u
c3QpLCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksIEAxKTsKICAgICB9CiAgICAgfCBCT09MQ09OU1RBTlQgewogICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9u
QXJyYXktPnNldEJDb25zdCgkMS5iKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFDb25zdCksIEAxKTsKICAgICB9CiAgICAgfCBMRUZUX1BBUkVOIGV4cHJlc3Npb24g
UklHSFRfUEFSRU4gewogICAgICAgICAkJCA9ICQyOwpAQCAtMjM2LDEwMyArMjU2LDI3IEBAIHBv
c3RmaXhfZXhwcmVzc2lvbgogICAgICAgICAkJCA9ICQxOwogICAgIH0KICAgICB8IHBvc3RmaXhf
ZXhwcmVzc2lvbiBMRUZUX0JSQUNLRVQgaW50ZWdlcl9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQg
ewotICAgICAgICBpZiAoISQxLT5pc0FycmF5KCkgJiYgISQxLT5pc01hdHJpeCgpICYmICEkMS0+
aXNWZWN0b3IoKSkgewotICAgICAgICAgICAgaWYgKCQxLT5nZXRBc1N5bWJvbE5vZGUoKSkKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5v
dCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAkMS0+Z2V0QXNTeW1ib2xOb2Rl
KCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUg
YXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCku
Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYgJDMtPmdldFF1YWxpZmllcigpID09IEV2cUNv
bnN0KSB7Ci0gICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xk
aW5nIGZvciBhcnJheXMKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0QXJy
YXlOb2RlKCQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+
Z2V0SUNvbnN0KCksICQxLCAkMi5saW5lKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlz
VmVjdG9yKCkpIHsgIC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIHZlY3RvcnMKLSAgICAgICAgICAg
ICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKLSAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0g
MTsKLSAgICAgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1swXSA9ICQzLT5nZXRBc0NvbnN0YW50
VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7IC8vIG5lZWQgdG8g
ZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5Ci0g
ICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAk
MSwgJDIubGluZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7IC8v
IGNvbnN0YW50IGZvbGRpbmcgZm9yIG1hdHJpY2VzCi0gICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgJDEsICQyLmxpbmUpOwotICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKCQzLT5nZXRRdWFsaWZpZXIoKSA9
PSBFdnFDb25zdCkgewotICAgICAgICAgICAgICAgIGlmICgoJDEtPmlzVmVjdG9yKCkgfHwgJDEt
PmlzTWF0cml4KCkpICYmICQxLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSA8PSAkMy0+Z2V0
QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpICYm
ICEkMS0+aXNBcnJheSgpICkgewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVh
bSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8
PCAiZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8PCAkMy0+Z2V0QXNDb25zdGFudFVu
aW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpIDw8ICInIjsKLSAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0
cigpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIiwgIlsi
LCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAo
JDEtPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBl
KCkuZ2V0QXJyYXlTaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgkMS0+Z2V0VHlwZSgpLmdldE1heEFycmF5U2l6ZSgpIDw9ICQzLT5nZXRBc0NvbnN0YW50VW5p
b24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgkMS0+Z2V0
QXNTeW1ib2xOb2RlKCksICQxLT5nZXRUeXBlUG9pbnRlcigpLCAkMy0+Z2V0QXNDb25zdGFudFVu
aW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpLCB0cnVlLCAkMi5saW5l
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTZXRNYXhTaXplKCQxLT5nZXRBc1N5
bWJvbE5vZGUoKSwgJDEtPmdldFR5cGVQb2ludGVyKCksIDAsIGZhbHNlLCAkMi5saW5lKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKCAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCkt
PmdldElDb25zdCgpID49ICQxLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRl
eCBvdXQgb2YgcmFuZ2UgJyIgPDwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICIiLCAiWyIs
IGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
SW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCAkMywgJDIubGluZSk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXko
KSAmJiAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgImFycmF5IG11c3QgYmUgcmVk
ZWNsYXJlZCB3aXRoIGEgc2l6ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRoIGEgdmFyaWFibGUi
KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZElu
ZGV4KEVPcEluZGV4SW5kaXJlY3QsICQxLCAkMywgJDIubGluZSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIENvbnN0YW50VW5p
b24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgICAgIHVuaW9u
QXJyYXktPnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhp
Z2gsIEV2cUNvbnN0KSwgJDIubGluZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzQXJyYXko
KSkgewotICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpCi0gICAgICAg
ICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSwgJDEt
PmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lz
aW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCksICQxLT5pc01hdHJpeCgp
KSk7Ci0KLSAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2
cUNvbnN0KQotICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZp
ZXIoRXZxQ29uc3QpOwotICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpICYmICQxLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAkJC0+c2V0
VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29u
c3QsICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKCQxLT5pc01hdHJp
eCgpKQotICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAk
MS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCkpKTsK
LSAgICAgICAgZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkgJiYgJDEtPmdldFR5cGUoKS5nZXRRdWFs
aWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5n
ZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCkpOwotICAgICAgICBl
bHNlIGlmICgkMS0+aXNWZWN0b3IoKSkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQx
LT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnkpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgJCQtPnNldFR5cGUoJDEtPmdldFR5cGUoKSk7CisgICAg
ICAgICQkID0gY29udGV4dC0+YWRkSW5kZXhFeHByZXNzaW9uKCQxLCBAMiwgJDMpOwogICAgIH0K
ICAgICB8IGZ1bmN0aW9uX2NhbGwgewogICAgICAgICAkJCA9ICQxOwogICAgIH0KLSAgICB8IHBv
c3RmaXhfZXhwcmVzc2lvbiBET1QgRklFTERfU0VMRUNUSU9OIHsKKyAgICB8IHBvc3RmaXhfZXhw
cmVzc2lvbiBET1QgaWRlbnRpZmllciB7CiAgICAgICAgIGlmICgkMS0+aXNBcnJheSgpKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMy5saW5lLCAiY2Fubm90IGFwcGx5IGRvdCBvcGVy
YXRvciB0byBhbiBhcnJheSIsICIuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMywg
ImNhbm5vdCBhcHBseSBkb3Qgb3BlcmF0b3IgdG8gYW4gYXJyYXkiLCAiLiIpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCQxLT5pc1Zl
Y3RvcigpKSB7CiAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKLSAgICAgICAgICAg
IGlmICghIGNvbnRleHQtPnBhcnNlVmVjdG9yRmllbGRzKCokMy5zdHJpbmcsICQxLT5nZXROb21p
bmFsU2l6ZSgpLCBmaWVsZHMsICQzLmxpbmUpKSB7CisgICAgICAgICAgICBpZiAoISBjb250ZXh0
LT5wYXJzZVZlY3RvckZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5hbFNpemUoKSwgZmll
bGRzLCBAMykpIHsKICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKICAgICAgICAgICAg
ICAgICBmaWVsZHMub2Zmc2V0c1swXSA9IDA7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0
b3IgZmllbGRzCi0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5v
ZGUoZmllbGRzLCAkMSwgJDMubGluZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5h
ZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwgQDMpOwogICAgICAgICAgICAgICAgIGlmICgk
JCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICAgICAgICAgJCQgPSAkMTsKQEAgLTM0MSwxMyArMjg1LDEzIEBAIHBvc3RmaXhfZXhw
cmVzc2lvbgogICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFz
aWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QsIChpbnQpICgqJDMuc3RyaW5n
KS5zaXplKCkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgVFN0cmlu
ZyB2ZWN0b3JTdHJpbmcgPSAqJDMuc3RyaW5nOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBl
ZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVsZHMsICQzLmxp
bmUpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4
KEVPcFZlY3RvclN3aXp6bGUsICQxLCBpbmRleCwgJDIubGluZSk7CisgICAgICAgICAgICAgICAg
VEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxlKGZp
ZWxkcywgQDMpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEluZGV4KEVPcFZlY3RvclN3aXp6bGUsICQxLCBpbmRleCwgQDIpOwogICAgICAgICAgICAgICAg
ICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigp
LCBFdnFUZW1wb3JhcnksIChpbnQpIHZlY3RvclN0cmluZy5zaXplKCkpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIGlmICgkMS0+aXNNYXRyaXgoKSkgewogICAgICAgICAgICAgVE1h
dHJpeEZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJzZU1hdHJp
eEZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAkMy5saW5l
KSkgeworICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKiQzLnN0
cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgQDMpKSB7CiAgICAgICAgICAgICAg
ICAgZmllbGRzLndob2xlUm93ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLndob2xl
Q29sID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLnJvdyA9IDA7CkBAIC0zNTYsODQg
KzMwMCw3OCBAQCBwb3N0Zml4X2V4cHJlc3Npb24KICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKGZpZWxkcy53aG9sZVJvdyB8fCBmaWVsZHMud2hvbGVDb2wpIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIG5vbi1zY2FsYXIgZmllbGRzIG5vdCBpbXBs
ZW1lbnRlZCB5ZXQiLCAiLiIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAi
IG5vbi1zY2FsYXIgZmllbGRzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiLCAiLiIpOwogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9u
ICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5p
b25BcnJheS0+c2V0SUNvbnN0KDApOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5k
ZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMy5saW5lKTsKLSAgICAgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVj
dCwgJDEsIGluZGV4LCAkMi5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGlu
ZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDMpOworICAgICAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAk
MSwgaW5kZXgsIEAyKTsKICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0
QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSxFdnFUZW1wb3JhcnksICQxLT5nZXROb21p
bmFsU2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIENvbnN0
YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAg
ICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoZmllbGRzLmNvbCAqICQxLT5nZXROb21pbmFsU2l6
ZSgpICsgZmllbGRzLnJvdyk7Ci0gICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBl
KEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQzLmxpbmUpOwotICAgICAgICAgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAk
MSwgaW5kZXgsICQyLmxpbmUpOworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXgg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMyk7CisgICAgICAgICAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCBp
bmRleCwgQDIpOwogICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNp
Y1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSBpZiAoJDEtPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgewogICAgICAgICAgICAg
Ym9vbCBmaWVsZEZvdW5kID0gZmFsc2U7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZUxpc3QqIGZp
ZWxkcyA9ICQxLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgICAgICAgICBpZiAoZmllbGRz
ID09IDApIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAic3RydWN0
dXJlIGhhcyBubyBmaWVsZHMiLCAiSW50ZXJuYWwgRXJyb3IiKTsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7Ci0gICAgICAgICAgICAg
ICAgZm9yIChpID0gMDsgaSA8IGZpZWxkcy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCgqZmllbGRzKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSAqJDMuc3RyaW5n
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSAkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5m
aWVsZHMoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICAgICAgZm9yIChp
ID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChmaWVs
ZHNbaV0tPm5hbWUoKSA9PSAqJDMuc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGZpZWxk
Rm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKGZpZWxkRm91bmQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RTdHJ1Y3QoKiQzLnN0cmlu
ZywgJDEsICQyLmxpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQkID09IDApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICQkLT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0eXBlLCBub3Qg
b2YgdGhlIHN0cnVjdHVyZSBmaWVsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFz
IHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyBzaGFyZWQgYmV0d2VlbiB2YXJpb3VzIHN0cnVj
dHVyZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQtPmdldFR5cGVQb2ludGVyKCkt
PnNldFF1YWxpZmllcihFdnFDb25zdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgKigqZmllbGRzKVtpXS50eXBlLCAkMy5saW5lKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVP
cEluZGV4RGlyZWN0U3RydWN0LCAkMSwgaW5kZXgsICQyLmxpbmUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgJCQtPnNldFR5cGUoKigqZmllbGRzKVtpXS50eXBlKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKCQxLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFN0cnVjdCgqJDMuc3RyaW5nLCAkMSwgQDIpOworICAg
ICAgICAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSAkMTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBjaGFuZ2UgdGhlIHF1YWxpZmllciBvZiB0aGUgcmV0dXJuIHR5
cGUsIG5vdCBvZiB0aGUgc3RydWN0dXJlIGZpZWxkCisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBhcyB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBz
dHJ1Y3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgJCQtPmdldFR5cGVQb2ludGVyKCkt
PnNldFF1YWxpZmllcihFdnFDb25zdCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5s
aW5lLCAiIG5vIHN1Y2ggZmllbGQgaW4gc3RydWN0dXJlIiwgJDMuc3RyaW5nLT5jX3N0cigpKTsK
LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAg
ICAgICAkJCA9ICQxOworICAgICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CisgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJy
YXktPnNldElDb25zdChpKTsKKyAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRl
eCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksICpm
aWVsZHNbaV0tPnR5cGUoKSwgQDMpOworICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdFN0cnVjdCwgJDEsIGluZGV4LCBA
Mik7CisgICAgICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7
CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcihAMiwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICQzLnN0
cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAg
ICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIGZpZWxkIHNlbGVjdGlvbiByZXF1
aXJlcyBzdHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRlIiwgJDMu
c3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiIGZpZWxk
IHNlbGVjdGlvbiByZXF1aXJlcyBzdHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQg
aGFuZCBzaWRlIiwgJDMuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICAgICAgLy8gZG9u
J3QgZGVsZXRlICQzLnN0cmluZywgaXQncyBmcm9tIHRoZSBwb29sCiAgICAgfQogICAgIHwgcG9z
dGZpeF9leHByZXNzaW9uIElOQ19PUCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJv
ckNoZWNrKCQyLmxpbmUsICIrKyIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVy
cm9yQ2hlY2soQDIsICIrKyIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RJ
bmNyZW1lbnQsICQxLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVtZW50LCAk
MSwgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMi5saW5lLCAiKysiLCAkMS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDIsICIr
KyIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBwb3N0
Zml4X2V4cHJlc3Npb24gREVDX09QIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9y
Q2hlY2soJDIubGluZSwgIi0tIiwgJDEpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJy
b3JDaGVjayhAMiwgIi0tIiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdERl
Y3JlbWVudCwgJDEsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNyZW1lbnQsICQx
LCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAg
ICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQyLmxpbmUsICItLSIsICQxLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihAMiwgIi0t
IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpAQCAtNDYxLDE4ICszOTksMTgg
QEAgZnVuY3Rpb25fY2FsbAogICAgICAgICAgICAgLy8gVGhlaXIgcGFyYW1ldGVycyB3aWxsIGJl
IHZlcmlmaWVkIGFsZ29yaXRobWljYWxseS4KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBU
VHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7ICAvLyB1c2UgdGhpcyB0byBnZXQgdGhl
IHR5cGUgYmFjawotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVj
aygkMS5saW5lLCAkMS5pbnRlcm1Ob2RlLCAqZm5DYWxsLCBvcCwgJnR5cGUpKSB7CisgICAgICAg
ICAgICBpZiAoY29udGV4dC0+Y29uc3RydWN0b3JFcnJvckNoZWNrKEAxLCAkMS5pbnRlcm1Ob2Rl
LCAqZm5DYWxsLCBvcCwgJnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgJCQgPSAwOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEl0
J3MgYSBjb25zdHJ1Y3Rvciwgb2YgdHlwZSAndHlwZScuCiAgICAgICAgICAgICAgICAgLy8KLSAg
ICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0cnVjdG9yKCQxLmludGVybU5vZGUs
ICZ0eXBlLCBvcCwgZm5DYWxsLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmFkZENvbnN0cnVjdG9yKCQxLmludGVybU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxsLCBAMSk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKDAsIG9wLCAkMS5saW5lKTsKKyAgICAg
ICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRv
cigwLCBvcCwgQDEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgJCQtPnNldFR5cGUodHlw
ZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC00ODEsMTMgKzQxOSwxMyBAQCBmdW5jdGlvbl9jYWxs
CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgY29uc3QgVEZ1bmN0aW9uKiBmbkNhbmRpZGF0
ZTsKICAgICAgICAgICAgIGJvb2wgYnVpbHRJbjsKLSAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0g
Y29udGV4dC0+ZmluZEZ1bmN0aW9uKCQxLmxpbmUsIGZuQ2FsbCwgJmJ1aWx0SW4pOworICAgICAg
ICAgICAgZm5DYW5kaWRhdGUgPSBjb250ZXh0LT5maW5kRnVuY3Rpb24oQDEsIGZuQ2FsbCwgJmJ1
aWx0SW4pOwogICAgICAgICAgICAgaWYgKGZuQ2FuZGlkYXRlKSB7CiAgICAgICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgICAgICAvLyBBIGRlY2xhcmVkIGZ1bmN0aW9uLgogICAgICAgICAgICAg
ICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKGJ1aWx0SW4gJiYgIWZuQ2FuZGlkYXRlLT5nZXRF
eHRlbnNpb24oKS5lbXB0eSgpICYmCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmV4dGVu
c2lvbkVycm9yQ2hlY2soJDEubGluZSwgZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgewor
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKEAxLCBmbkNh
bmRpZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3AgPSBmbkNh
bmRpZGF0ZS0+Z2V0QnVpbHRJbk9wKCk7CkBAIC00OTksNyArNDM3LDcgQEAgZnVuY3Rpb25fY2Fs
bAogICAgICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFRyZWF0IGl0IGxpa2UgYSBidWlsdC1pbiB1bmFyeSBvcGVyYXRvci4KICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRVbmFyeU1hdGgob3AsICQxLmludGVybU5vZGUsIDAsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZFVuYXJ5TWF0aChvcCwgJDEuaW50ZXJtTm9kZSwgQDEsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkJCA9PSAwKSAgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImJ1aWx0IGluIHVu
YXJ5IG9wZXJhdG9yIGZ1bmN0aW9uLiAgVHlwZTogIiA8PCBzdGF0aWNfY2FzdDxUSW50ZXJtVHlw
ZWQqPigkMS5pbnRlcm1Ob2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKTsKQEAgLTUwOCwxMiArNDQ2
LDEyIEBAIGZ1bmN0aW9uX2NhbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZWUVSUk9S
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0
QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBvcCwgJDEubGluZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdh
dGVPcGVyYXRvcigkMS5pbnRlcm1BZ2dyZWdhdGUsIG9wLCBAMSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIGlzIGEgcmVhbCBmdW5jdGlvbiBjYWxsCiAKLSAgICAgICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVn
YXRlLCBFT3BGdW5jdGlvbkNhbGwsICQxLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigkMS5pbnRlcm1BZ2dy
ZWdhdGUsIEVPcEZ1bmN0aW9uQ2FsbCwgQDEpOwogICAgICAgICAgICAgICAgICAgICAkJC0+c2V0
VHlwZShmbkNhbmRpZGF0ZS0+Z2V0UmV0dXJuVHlwZSgpKTsKIAogICAgICAgICAgICAgICAgICAg
ICAvLyB0aGlzIGlzIGhvdyB3ZSBrbm93IHdoZXRoZXIgdGhlIGdpdmVuIGZ1bmN0aW9uIGlzIGEg
YnVpbHRJbiBmdW5jdGlvbiBvciBhIHVzZXIgZGVmaW5lZCBmdW5jdGlvbgpAQCAtNTQwLDcgKzQ3
OCw3IEBAIGZ1bmN0aW9uX2NhbGwKICAgICAgICAgICAgICAgICAvLyBQdXQgb24gYSBkdW1teSBu
b2RlIGZvciBlcnJvciByZWNvdmVyeQogICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVu
aW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRGQ29uc3QoMC4wZik7Ci0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksICQxLmxpbmUpOworICAgICAgICAgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01NTMsNyArNDkx
LDcgQEAgZnVuY3Rpb25fY2FsbF9vcl9tZXRob2QKICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAg
ICAgfCBwb3N0Zml4X2V4cHJlc3Npb24gRE9UIGZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyB7Ci0gICAg
ICAgIGNvbnRleHQtPmVycm9yKCQzLmxpbmUsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkIiwg
IiIpOworICAgICAgICBjb250ZXh0LT5lcnJvcihAMywgIm1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0
ZWQiLCAiIik7CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgJCQgPSAkMzsK
ICAgICB9CkBAIC01NjIsMTEgKzUwMCw5IEBAIGZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9kCiBmdW5j
dGlvbl9jYWxsX2dlbmVyaWMKICAgICA6IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1l
dGVycyBSSUdIVF9QQVJFTiB7CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICQkLmxpbmUgPSAk
Mi5saW5lOwogICAgIH0KICAgICB8IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX25vX3BhcmFtZXRlcnMg
UklHSFRfUEFSRU4gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICAkJC5saW5lID0gJDIubGlu
ZTsKICAgICB9CiAgICAgOwogCkBAIC01OTIsNyArNTI4LDcgQEAgZnVuY3Rpb25fY2FsbF9oZWFk
ZXJfd2l0aF9wYXJhbWV0ZXJzCiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBU
VHlwZSgkMy0+Z2V0VHlwZSgpKSB9OwogICAgICAgICAkMS5mdW5jdGlvbi0+YWRkUGFyYW1ldGVy
KHBhcmFtKTsKICAgICAgICAgJCQuZnVuY3Rpb24gPSAkMS5mdW5jdGlvbjsKLSAgICAgICAgJCQu
aW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVy
bU5vZGUsICQzLCAkMi5saW5lKTsKKyAgICAgICAgJCQuaW50ZXJtTm9kZSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsICQzLCBAMik7CiAgICAgfQog
ICAgIDsKIApAQCAtNjE3LDM5ICs1NTMsMzkgQEAgZnVuY3Rpb25faWRlbnRpZmllcgogICAgICAg
ICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICBpZiAoJDEubWF0cml4KSB7CiAg
ICAgICAgICAgICAgICAgICAgIHN3aXRjaCgkMS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25z
dHJ1Y3RNYXQyOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RNYXQyOyAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2goJDEuc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjMjsgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0g
RU9wQ29uc3RydWN0VmVjMzsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjNDsg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0Rmxv
YXQ7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0
VmVjMjsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3Ry
dWN0VmVjMzsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29u
c3RydWN0VmVjNDsgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAg
ICAgICAgICAgICAgICAgc3dpdGNoKCQxLnNpemUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVj
dEludDsgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJpdmVjMiIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWMyOyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjMyIsICQxLmxp
bmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWMzOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjNCIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0
cnVjdElWZWM0OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3Ry
dWN0SW50OyAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1
Y3RJVmVjMjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVj
dElWZWMzOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0
SVZlYzQ7IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKICAgICAgICAgICAgICAgICBzd2l0Y2goJDEuc2l6
ZSkgewotICAgICAgICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgMjogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWMyIiwgJDEubGluZSk7IG9wID0g
RU9wQ29uc3RydWN0QlZlYzI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAg
RlJBR19WRVJUX09OTFkoImJ2ZWMzIiwgJDEubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgRlJBR19WRVJUX09OTFkoImJ2
ZWM0IiwgJDEubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgMTogb3AgPSBFT3BDb25zdHJ1Y3RCb29sOyAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdEJWZWMyOyBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7IGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjNDsgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAob3AgPT0gRU9wTnVsbCkgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJjYW5ub3QgY29uc3RydWN0IHRoaXMg
dHlwZSIsIGdldEJhc2ljU3RyaW5nKCQxLnR5cGUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcihAMSwgImNhbm5vdCBjb25zdHJ1Y3QgdGhpcyB0eXBlIiwgZ2V0QmFzaWNTdHJpbmco
JDEudHlwZSkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICAgICAkMS50eXBlID0gRWJ0RmxvYXQ7CiAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25z
dHJ1Y3RGbG9hdDsKQEAgLTY2MSwxNCArNTk3LDcgQEAgZnVuY3Rpb25faWRlbnRpZmllcgogICAg
ICAgICAkJCA9IGZ1bmN0aW9uOwogICAgIH0KICAgICB8IElERU5USUZJRVIgewotICAgICAgICBp
ZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5zdHJpbmcpKQotICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQs
IEVicFVuZGVmaW5lZCk7Ci0gICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0
aW9uKCQxLnN0cmluZywgdHlwZSk7Ci0gICAgICAgICQkID0gZnVuY3Rpb247Ci0gICAgfQotICAg
IHwgRklFTERfU0VMRUNUSU9OIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JD
aGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVk
RXJyb3JDaGVjayhAMSwgKiQxLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAg
VEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oJDEuc3RyaW5nLCB0eXBlKTsKQEAg
LTY4MSwyOCArNjEwLDI4IEBAIHVuYXJ5X2V4cHJlc3Npb24KICAgICAgICAgJCQgPSAkMTsKICAg
ICB9CiAgICAgfCBJTkNfT1AgdW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5sVmFsdWVFcnJvckNoZWNrKCQxLmxpbmUsICIrKyIsICQyKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPmxWYWx1ZUVycm9yQ2hlY2soQDEsICIrKyIsICQyKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlN
YXRoKEVPcFByZUluY3JlbWVudCwgJDIsICQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsK
KyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFByZUlu
Y3JlbWVudCwgJDIsIEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDEubGluZSwgIisrIiwg
JDItPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVy
cm9yKEAxLCAiKysiLCAkMi0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQyOwogICAgICAgICB9CiAgICAgfQog
ICAgIHwgREVDX09QIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4dC0+bFZh
bHVlRXJyb3JDaGVjaygkMS5saW5lLCAiLS0iLCAkMikpCisgICAgICAgIGlmIChjb250ZXh0LT5s
VmFsdWVFcnJvckNoZWNrKEAxLCAiLS0iLCAkMikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChF
T3BQcmVEZWNyZW1lbnQsICQyLCAkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVEZWNyZW1l
bnQsICQyLCBAMSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkg
ewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsICItLSIsICQyLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihA
MSwgIi0tIiwgJDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgfQogICAgIH0KICAgICB8
IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X2V4cHJlc3Npb24gewogICAgICAgICBpZiAoJDEub3AgIT0g
RU9wTnVsbCkgewotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5h
cnlNYXRoKCQxLm9wLCAkMiwgJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCQxLm9wLCAkMiwg
QDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7CiAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXJyb3JPcCA9ICIiOwogICAgICAgICAgICAgICAg
IHN3aXRjaCgkMS5vcCkgewpAQCAtNzEwLDcgKzYzOSw3IEBAIHVuYXJ5X2V4cHJlc3Npb24KICAg
ICAgICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxOb3Q6IGVycm9yT3AgPSAiISI7IGJyZWFrOwog
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDEubGluZSwgZXJyb3JPcCwgJDItPmdl
dENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJv
cihAMSwgZXJyb3JPcCwgJDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAkJCA9ICQyOwogICAgICAgICAg
ICAgfQpAQCAtNzIxLDI4ICs2NTAsMjYgQEAgdW5hcnlfZXhwcmVzc2lvbgogLy8gR3JhbW1hciBO
b3RlOiAgTm8gdHJhZGl0aW9uYWwgc3R5bGUgdHlwZSBjYXN0cy4KIAogdW5hcnlfb3BlcmF0b3IK
LSAgICA6IFBMVVMgIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTnVsbDsgfQotICAg
IHwgREFTSCAgeyAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BOZWdhdGl2ZTsgfQotICAg
IHwgQkFORyAgeyAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BMb2dpY2FsTm90OyB9Cisg
ICAgOiBQTFVTICB7ICQkLm9wID0gRU9wTnVsbDsgfQorICAgIHwgREFTSCAgeyAkJC5vcCA9IEVP
cE5lZ2F0aXZlOyB9CisgICAgfCBCQU5HICB7ICQkLm9wID0gRU9wTG9naWNhbE5vdDsgfQogICAg
IDsKIC8vIEdyYW1tYXIgTm90ZTogIE5vICcqJyBvciAnJicgdW5hcnkgb3BzLiAgUG9pbnRlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQuCiAKIG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24KICAgICA6IHVu
YXJ5X2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBtdWx0aXBsaWNhdGl2ZV9leHByZXNz
aW9uIFNUQVIgdW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIqIiwg
JDIubGluZSk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1h
dGgoRU9wTXVsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BNdWwsICQxLCAk
MywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIioiLCAkMS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIioiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQogICAgIH0KICAgICB8IG11bHRpcGxpY2F0
aXZlX2V4cHJlc3Npb24gU0xBU0ggdW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIEZSQUdfVkVS
VF9PTkxZKCIvIiwgJDIubGluZSk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wRGl2LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChF
T3BEaXYsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQk
ID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIi8i
LCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIi8iLCAkMS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpAQCAtNzUyLDE3ICs2
NzksMTcgQEAgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbgogYWRkaXRpdmVfZXhwcmVzc2lvbgog
ICAgIDogbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGFkZGl0
aXZlX2V4cHJlc3Npb24gUExVUyBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIHsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICQxLCAkMywg
JDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEFkZCwgJDEsICQzLCBAMiwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiKyIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9y
KEAyLCAiKyIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQx
OwogICAgICAgICB9CiAgICAgfQogICAgIHwgYWRkaXRpdmVfZXhwcmVzc2lvbiBEQVNIIG11bHRp
cGxpY2F0aXZlX2V4cHJlc3Npb24gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcFN1YiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wU3ViLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgk
JCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIt
IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICItIiwgJDEtPmdldENvbXBsZXRl
U3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTc3Niw0MyAr
NzAzLDQzIEBAIHNoaWZ0X2V4cHJlc3Npb24KIHJlbGF0aW9uYWxfZXhwcmVzc2lvbgogICAgIDog
c2hpZnRfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IHJlbGF0aW9uYWxfZXhwcmVzc2lv
biBMRUZUX0FOR0xFIHNoaWZ0X2V4cHJlc3Npb24gewotICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuLCAkMSwgJDMsICQyLmxpbmUsIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbiwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFi
bGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5
T3BFcnJvcigkMi5saW5lLCAiPCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAi
PCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9u
ICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCByZWxh
dGlvbmFsX2V4cHJlc3Npb24gUklHSFRfQU5HTEUgc2hpZnRfZXhwcmVzc2lvbiAgewotICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFu
LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgJDEsICQz
LCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAg
ICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiPiIsICQxLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiPiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25b
MV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Npb24gTEVfT1Agc2hpZnRfZXhw
cmVzc2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcExlc3NUaGFuRXF1YWwsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFi
bGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVP
cExlc3NUaGFuRXF1YWwsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAg
ICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIu
bGluZSwgIjw9IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICI8PSIsICQxLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRC
Q29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCByZWxhdGlvbmFsX2V4
cHJlc3Npb24gR0VfT1Agc2hpZnRfZXhwcmVzc2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuRXF1YWwsICQxLCAkMywg
JDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuRXF1YWwsICQxLCAkMywgQDIs
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj49IiwgJDEtPmdldENvbXBsZXRl
U3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmJpbmFyeU9wRXJyb3IoQDIsICI+PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07
CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAg
IH0KICAgICB9CiAgICAgOwpAQCAtODIwLDIzICs3NDcsMjMgQEAgcmVsYXRpb25hbF9leHByZXNz
aW9uCiBlcXVhbGl0eV9leHByZXNzaW9uCiAgICAgOiByZWxhdGlvbmFsX2V4cHJlc3Npb24geyAk
JCA9ICQxOyB9CiAgICAgfCBlcXVhbGl0eV9leHByZXNzaW9uIEVRX09QIHJlbGF0aW9uYWxfZXhw
cmVzc2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcEVxdWFsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BFcXVhbCwg
JDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkg
ewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiPT0iLCAkMS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIj09IiwgJDEtPmdldENvbXBsZXRlU3RyaW5n
KCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3Rh
bnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0g
ICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMi5saW5l
KTsKKyAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAy
KTsKICAgICAgICAgfQogICAgIH0KICAgICB8IGVxdWFsaXR5X2V4cHJlc3Npb24gTkVfT1AgcmVs
YXRpb25hbF9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BOb3RFcXVhbCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1h
dGgoRU9wTm90RXF1YWwsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAg
ICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIu
bGluZSwgIiE9IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIhPSIsICQxLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRC
Q29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgOwpAQCAtODU2LDEzICs3
ODMsMTMgQEAgaW5jbHVzaXZlX29yX2V4cHJlc3Npb24KIGxvZ2ljYWxfYW5kX2V4cHJlc3Npb24K
ICAgICA6IGluY2x1c2l2ZV9vcl9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbG9naWNh
bF9hbmRfZXhwcmVzc2lvbiBBTkRfT1AgaW5jbHVzaXZlX29yX2V4cHJlc3Npb24gewotICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQs
ICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICQxLCAkMywg
QDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIiYmIiwgJDEtPmdldENvbXBs
ZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoQDIsICImJiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25b
MV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgOwpAQCAtODcwLDEzICs3OTcsMTMgQEAgbG9naWNhbF9hbmRfZXhw
cmVzc2lvbgogbG9naWNhbF94b3JfZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF9hbmRfZXhwcmVz
c2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24gWE9SX09QIGxv
Z2ljYWxfYW5kX2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsWG9yLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmlu
YXJ5TWF0aChFT3BMb2dpY2FsWG9yLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVy
cm9yKCQyLmxpbmUsICJeXiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiXl4i
LCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg4
NCwxMyArODExLDEzIEBAIGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24KIGxvZ2ljYWxfb3JfZXhwcmVz
c2lvbgogICAgIDogbG9naWNhbF94b3JfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxv
Z2ljYWxfb3JfZXhwcmVzc2lvbiBPUl9PUCBsb2dpY2FsX3hvcl9leHByZXNzaW9uICB7Ci0gICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9y
LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsT3IsICQxLCAkMywg
QDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgInx8IiwgJDEtPmdldENvbXBs
ZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoQDIsICJ8fCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25b
MV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgOwpAQCAtODk4LDE1ICs4MjUsMTUgQEAgbG9naWNhbF9vcl9leHBy
ZXNzaW9uCiBjb25kaXRpb25hbF9leHByZXNzaW9uCiAgICAgOiBsb2dpY2FsX29yX2V4cHJlc3Np
b24geyAkJCA9ICQxOyB9CiAgICAgfCBsb2dpY2FsX29yX2V4cHJlc3Npb24gUVVFU1RJT04gZXhw
cmVzc2lvbiBDT0xPTiBhc3NpZ25tZW50X2V4cHJlc3Npb24gewotICAgICAgIGlmIChjb250ZXh0
LT5ib29sRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgaWYgKGNvbnRleHQtPmJvb2xF
cnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCQxLCAkMywgJDUs
ICQyLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rp
b24oJDEsICQzLCAkNSwgQDIpOwogICAgICAgICBpZiAoJDMtPmdldFR5cGUoKSAhPSAkNS0+Z2V0
VHlwZSgpKQogICAgICAgICAgICAgJCQgPSAwOwogCiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI6IiwgJDMtPmdldENv
bXBsZXRlU3RyaW5nKCksICQ1LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICI6IiwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCksICQ1
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICQkID0gJDU7CiAgICAgICAgIH0KQEAgLTkxNiwxMSArODQzLDExIEBAIGNv
bmRpdGlvbmFsX2V4cHJlc3Npb24KIGFzc2lnbm1lbnRfZXhwcmVzc2lvbgogICAgIDogY29uZGl0
aW9uYWxfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IHVuYXJ5X2V4cHJlc3Npb24gYXNz
aWdubWVudF9vcGVyYXRvciBhc3NpZ25tZW50X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29u
dGV4dC0+bFZhbHVlRXJyb3JDaGVjaygkMi5saW5lLCAiYXNzaWduIiwgJDEpKQorICAgICAgICBp
ZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjayhAMiwgImFzc2lnbiIsICQxKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQXNzaWduKCQyLm9wLCAkMSwgJDMsICQyLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRBc3NpZ24oJDIub3AsICQxLCAkMywgQDIpOwogICAgICAgICBp
ZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YXNzaWduRXJyb3IoJDIubGluZSwg
ImFzc2lnbiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5hc3NpZ25FcnJvcihAMiwgImFzc2lnbiIsICQxLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CkBA
IC05MjgsMTEgKzg1NSwxMSBAQCBhc3NpZ25tZW50X2V4cHJlc3Npb24KICAgICA7CiAKIGFzc2ln
bm1lbnRfb3BlcmF0b3IKLSAgICA6IEVRVUFMICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wQXNzaWduOyB9Ci0g
ICAgfCBNVUxfQVNTSUdOICAgeyBGUkFHX1ZFUlRfT05MWSgiKj0iLCAkMS5saW5lKTsgICAgICQk
LmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcE11bEFzc2lnbjsgfQotICAgIHwgRElWX0FTU0lH
TiAgIHsgRlJBR19WRVJUX09OTFkoIi89IiwgJDEubGluZSk7ICAgICAkJC5saW5lID0gJDEubGlu
ZTsgJCQub3AgPSBFT3BEaXZBc3NpZ247IH0KLSAgICB8IEFERF9BU1NJR04gICB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9w
QWRkQXNzaWduOyB9Ci0gICAgfCBTVUJfQVNTSUdOICAgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcFN1YkFzc2lnbjsgfQor
ICAgIDogRVFVQUwgICAgICAgIHsgJCQub3AgPSBFT3BBc3NpZ247IH0KKyAgICB8IE1VTF9BU1NJ
R04gICB7ICQkLm9wID0gRU9wTXVsQXNzaWduOyB9CisgICAgfCBESVZfQVNTSUdOICAgeyAkJC5v
cCA9IEVPcERpdkFzc2lnbjsgfQorICAgIHwgQUREX0FTU0lHTiAgIHsgJCQub3AgPSBFT3BBZGRB
c3NpZ247IH0KKyAgICB8IFNVQl9BU1NJR04gICB7ICQkLm9wID0gRU9wU3ViQXNzaWduOyB9CiAg
ICAgOwogCiBleHByZXNzaW9uCkBAIC05NDAsOSArODY3LDkgQEAgZXhwcmVzc2lvbgogICAgICAg
ICAkJCA9ICQxOwogICAgIH0KICAgICB8IGV4cHJlc3Npb24gQ09NTUEgYXNzaWdubWVudF9leHBy
ZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29tbWEoJDEs
ICQzLCAkMi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29t
bWEoJDEsICQzLCBAMik7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIsIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCks
ICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoQDIsICIsIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQk
ID0gJDM7CiAgICAgICAgIH0KQEAgLTk3MCwxMyArODk3LDEzIEBAIGRlY2xhcmF0aW9uCiAgICAg
ICAgICAgICBjb25zdCBUUGFyYW1ldGVyICZwYXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOwog
ICAgICAgICAgICAgaWYgKHBhcmFtLm5hbWUgIT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZShwYXJhbS5uYW1lLCAq
cGFyYW0udHlwZSk7CisgICAgICAgICAgICAgICAgVFZhcmlhYmxlIHZhcmlhYmxlKHBhcmFtLm5h
bWUsICpwYXJhbS50eXBlKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBwcm90
b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksIHZh
cmlhYmxlLT5nZXROYW1lKCksIHZhcmlhYmxlLT5nZXRUeXBlKCksICQxLmxpbmUpLCAkMS5saW5l
KTsKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jv
d0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFy
aWFibGUuZ2V0VW5pcXVlSWQoKSwgdmFyaWFibGUuZ2V0TmFtZSgpLCB2YXJpYWJsZS5nZXRUeXBl
KCksIEAxKSwgQDEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5n
cm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAiIiwgKnBhcmFtLnR5cGUsICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICBw
cm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUs
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCBAMSks
IEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTk5MiwxMSArOTE5
LDExIEBAIGRlY2xhcmF0aW9uCiAgICAgfQogICAgIHwgUFJFQ0lTSU9OIHByZWNpc2lvbl9xdWFs
aWZpZXIgdHlwZV9zcGVjaWZpZXJfbm9fcHJlYyBTRU1JQ09MT04gewogICAgICAgICBpZiAoKCQy
ID09IEVicEhpZ2gpICYmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX0ZSQUdNRU5UX1NIQURF
UikgJiYgIWNvbnRleHQtPmZyYWdtZW50UHJlY2lzaW9uSGlnaCkgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoJDEubGluZSwgInByZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGZyYWdt
ZW50IHNoYWRlciIsICJoaWdocCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJw
cmVjaXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
IWNvbnRleHQtPnN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oICQzLCAkMiApKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50
IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmluZygkMy50eXBl
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImlsbGVnYWwgdHlwZSBhcmd1bWVu
dCBmb3IgZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlw
ZSkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAg
ICQkID0gMDsKQEAgLTEwMTYsMjQgKzk0Myw0MSBAQCBmdW5jdGlvbl9wcm90b3R5cGUKICAgICAg
ICAgVEZ1bmN0aW9uKiBwcmV2RGVjID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uKj4oY29udGV4dC0+
c3ltYm9sVGFibGUuZmluZCgkMS0+Z2V0TWFuZ2xlZE5hbWUoKSkpOwogICAgICAgICBpZiAocHJl
dkRlYykgewogICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdldFJldHVyblR5cGUoKSAhPSAkMS0+
Z2V0UmV0dXJuVHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGlu
ZSwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSByZXR1cm4gdHlwZSIs
ICQxLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoQDIsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNh
bWUgcmV0dXJuIHR5cGUiLCAkMS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCkpOwog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFyYW1Db3VudCgpOyAr
K2kpIHsKICAgICAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0
UXVhbGlmaWVyKCkgIT0gJDEtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllcigpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJvdmVybG9hZGVkIGZ1
bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAkMS0+Z2V0
UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcihAMiwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUg
c2FtZSBwYXJhbWV0ZXIgcXVhbGlmaWVycyIsICQxLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFs
aWZpZXJTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAv
LworICAgICAgICAvLyBDaGVjayBmb3IgcHJldmlvdXNseSBkZWNsYXJlZCB2YXJpYWJsZXMgdXNp
bmcgdGhlIHNhbWUgbmFtZS4KKyAgICAgICAgLy8KKyAgICAgICAgVFN5bWJvbCAqcHJldlN5bSA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmQoJDEtPmdldE5hbWUoKSk7CisgICAgICAgIGlmIChw
cmV2U3ltKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXByZXZTeW0tPmlzRnVuY3Rpb24o
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInJl
ZGVmaW5pdGlvbiIsICQxLT5nZXROYW1lKCkuY19zdHIoKSwgImZ1bmN0aW9uIik7CisgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgLy8gSW5zZXJ0IHRoZSB1bm1hbmds
ZWQgbmFtZSB0byBkZXRlY3QgcG90ZW50aWFsIGZ1dHVyZSByZWRlZmluaXRpb24gYXMgYSB2YXJp
YWJsZS4KKyAgICAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLmdldE91dGVyTGV2ZWwoKS0+
aW5zZXJ0KCQxLT5nZXROYW1lKCksICokMSk7CisgICAgICAgIH0KKworICAgICAgICAvLwogICAg
ICAgICAvLyBJZiB0aGlzIGlzIGEgcmVkZWNsYXJhdGlvbiwgaXQgY291bGQgYWxzbyBiZSBhIGRl
ZmluaXRpb24sCiAgICAgICAgIC8vIGluIHdoaWNoIGNhc2UsIHdlIHdhbnQgdG8gdXNlIHRoZSB2
YXJpYWJsZSBuYW1lcyBmcm9tIHRoaXMgb25lLCBhbmQgbm90IHRoZSBvbmUgdGhhdCdzCiAgICAg
ICAgIC8vIGJlaW5nIHJlZGVjbGFyZWQuICBTbywgcGFzcyBiYWNrIHVwIHRoaXMgZGVjbGFyYXRp
b24sIG5vdCB0aGUgb25lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgIC8vCiAgICAgICAg
ICQkLmZ1bmN0aW9uID0gJDE7Ci0gICAgICAgICQkLmxpbmUgPSAkMi5saW5lOwogCiAgICAgICAg
IC8vIFdlJ3JlIGF0IHRoZSBpbm5lciBzY29wZSBsZXZlbCBvZiB0aGUgZnVuY3Rpb24ncyBhcmd1
bWVudHMgYW5kIGJvZHkgc3RhdGVtZW50LgogICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9uIHBy
b3RvdHlwZSB0byB0aGUgc3Vycm91bmRpbmcgc2NvcGUgaW5zdGVhZC4KQEAgLTEwNjksNyArMTAx
Myw3IEBAIGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMKICAgICAgICAgICAgIC8vCiAg
ICAgICAgICAgICAvLyBUaGlzIHBhcmFtZXRlciA+IGZpcnN0IGlzIHZvaWQKICAgICAgICAgICAg
IC8vCi0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGFuIGFy
Z3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7CisgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcihAMiwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3Ig
Jyh2b2lkKSciLCAidm9pZCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgZGVsZXRlICQzLnBhcmFtLnR5cGU7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMDgz
LDExICsxMDI3LDExIEBAIGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMKIGZ1bmN0aW9u
X2hlYWRlcgogICAgIDogZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBMRUZUX1BBUkVO
IHsKICAgICAgICAgaWYgKCQxLnF1YWxpZmllciAhPSBFdnFHbG9iYWwgJiYgJDEucXVhbGlmaWVy
ICE9IEV2cVRlbXBvcmFyeSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwg
Im5vIHF1YWxpZmllcnMgYWxsb3dlZCBmb3IgZnVuY3Rpb24gcmV0dXJuIiwgZ2V0UXVhbGlmaWVy
U3RyaW5nKCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJu
byBxdWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0
cmluZygkMS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQogICAgICAgICAvLyBtYWtlIHN1cmUgYSBzYW1wbGVyIGlzIG5vdCBpbnZvbHZlZCBh
cyB3ZWxsLi4uCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNr
KCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAg
ICAvLyBBZGQgdGhlIGZ1bmN0aW9uIGFzIGEgcHJvdG90eXBlIGFmdGVyIHBhcnNpbmcgaXQgKHdl
IGRvIG5vdCBzdXBwb3J0IHJlY3Vyc2lvbikKQEAgLTExMDIsMzMgKzEwNDYsMzEgQEAgZnVuY3Rp
b25faGVhZGVyCiAKIHBhcmFtZXRlcl9kZWNsYXJhdG9yCiAgICAgLy8gVHlwZSArIG5hbWUKLSAg
ICA6IHR5cGVfc3BlY2lmaWVyIElERU5USUZJRVIgeworICAgIDogdHlwZV9zcGVjaWZpZXIgaWRl
bnRpZmllciB7CiAgICAgICAgIGlmICgkMS50eXBlID09IEVidFZvaWQpIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsICQy
LnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgImlsbGVn
YWwgdXNlIG9mIHR5cGUgJ3ZvaWQnIiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICBpZiAoY29udGV4dC0+cmVz
ZXJ2ZWRFcnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4
dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHskMi5zdHJpbmcsIG5l
dyBUVHlwZSgkMSl9OwotICAgICAgICAkJC5saW5lID0gJDIubGluZTsKICAgICAgICAgJCQucGFy
YW0gPSBwYXJhbTsKICAgICB9Ci0gICAgfCB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIExFRlRf
QlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgeworICAgIHwgdHlwZV9z
cGVjaWZpZXIgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdI
VF9CUkFDS0VUIHsKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gbWFrZSBhbiBhcnJheSBv
dXQgb2YgdGhpcyB0eXBlCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNr
KCQzLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2so
QDMsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAo
Y29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcpKQorICAgICAg
ICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDMubGluZSwgJDQsIHNpemUpKQorICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhAMywgJDQsIHNpemUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAkMS5zZXRBcnJheSh0cnVlLCBz
aXplKTsKIAogICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZSgkMSk7CiAgICAgICAgIFRQ
YXJhbWV0ZXIgcGFyYW0gPSB7ICQyLnN0cmluZywgdHlwZSB9OwotICAgICAgICAkJC5saW5lID0g
JDIubGluZTsKICAgICAgICAgJCQucGFyYW0gPSBwYXJhbTsKICAgICB9CiAgICAgOwpAQCAtMTE0
NCwxNCArMTA4NiwxNCBAQCBwYXJhbWV0ZXJfZGVjbGFyYXRpb24KICAgICAvLwogICAgIDogdHlw
ZV9xdWFsaWZpZXIgcGFyYW1ldGVyX3F1YWxpZmllciBwYXJhbWV0ZXJfZGVjbGFyYXRvciB7CiAg
ICAgICAgICQkID0gJDM7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soJDMu
bGluZSwgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250
ZXh0LT5wYXJhbUVycm9yQ2hlY2soQDMsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFtLnR5cGUp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgIH0KICAgICB8IHBhcmFtZXRl
cl9xdWFsaWZpZXIgcGFyYW1ldGVyX2RlY2xhcmF0b3IgewogICAgICAgICAkJCA9ICQyOwotICAg
ICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soJDIubGluZSwgJDEs
ICokMi5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJF
cnJvckNoZWNrKEAyLCAkMSwgKiQyLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCQyLmxpbmUs
IEV2cVRlbXBvcmFyeSwgJDEsICQkLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+
cGFyYW1FcnJvckNoZWNrKEAyLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9CiAgICAgLy8KQEAgLTExNTksMTQg
KzExMDEsMTQgQEAgcGFyYW1ldGVyX2RlY2xhcmF0aW9uCiAgICAgLy8KICAgICB8IHR5cGVfcXVh
bGlmaWVyIHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX3R5cGVfc3BlY2lmaWVyIHsKICAg
ICAgICAgJCQgPSAkMzsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygkMy5s
aW5lLCAkMS5xdWFsaWZpZXIsICQyLCAkJC5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtRXJyb3JDaGVjayhAMywgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0udHlwZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQogICAgIHwgcGFyYW1ldGVy
X3F1YWxpZmllciBwYXJhbWV0ZXJfdHlwZV9zcGVjaWZpZXIgewogICAgICAgICAkJCA9ICQyOwot
ICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soJDIubGluZSwg
JDEsICokMi5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBs
ZXJFcnJvckNoZWNrKEAyLCAkMSwgKiQyLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCQyLmxp
bmUsIEV2cVRlbXBvcmFyeSwgJDEsICQkLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4
dC0+cGFyYW1FcnJvckNoZWNrKEAyLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9CiAgICAgOwpAQCAtMTE5Nyw4
MyArMTEzOSw4MyBAQCBpbml0X2RlY2xhcmF0b3JfbGlzdAogICAgIDogc2luZ2xlX2RlY2xhcmF0
aW9uIHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBpbml0X2RlY2xhcmF0b3JfbGlz
dCBDT01NQSBJREVOVElGSUVSIHsKKyAgICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENPTU1BIGlk
ZW50aWZpZXIgewogICAgICAgICBpZiAoJDEudHlwZS50eXBlID09IEVidEludmFyaWFudCAmJiAh
JDMuc3ltYm9sKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMy5saW5l
LCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICQzLnN0cmlu
Zy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMywgInVuZGVjbGFyZWQg
aWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMy5zdHJpbmctPmNfc3RyKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAKLSAgICAgICAgVElu
dGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAq
JDMuc3RyaW5nLCBUVHlwZSgkMS50eXBlKSwgJDMubGluZSk7Ci0gICAgICAgICQkLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5v
ZGUsIHN5bWJvbCwgJDMubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQzLnN0cmluZywgVFR5cGUoJDEudHlw
ZSksIEAzKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgc3ltYm9sLCBAMyk7CiAgICAgICAgIAot
ICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMy5saW5lLCAk
JC50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
QDMsICQkLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAg
IGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcs
ICQkLnR5cGUsIGZhbHNlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9y
Q2hlY2soQDMsICokMy5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQk
LnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNr
KEAzLCAqJDMuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChzeW1ib2wgJiYgdmFyaWFibGUpCiAgICAgICAgICAg
ICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKICAgICB9Ci0gICAgfCBp
bml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBSSUdIVF9C
UkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
JDMubGluZSwgJDEudHlwZSkpCisgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBpZGVu
dGlmaWVyIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKKyAgICAgICAgaWYgKGNvbnRleHQt
PnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJv
ckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQorICAgICAgICBpZiAo
Y29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywgJDEudHlwZSwg
dHJ1ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgJCQgPSAk
MTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkNC5saW5lLCAk
MS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDQubGluZSwgJDEu
dHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEA0LCAkMS50
eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDQsICQxLnR5cGUpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICQxLnR5cGUuc2V0QXJyYXkodHJ1ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUqIHZhcmlh
YmxlOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygkNC5saW5lLCAq
JDMuc3RyaW5nLCAkMS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlFcnJvckNoZWNrKEA0LCAqJDMuc3RyaW5nLCAkMS50eXBlLCB2YXJpYWJsZSkpCiAgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgfQotICAgIHwg
aW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3Rh
bnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVj
dFF1YWxpZmllckVycm9yQ2hlY2soJDMubGluZSwgJDEudHlwZSkpCisgICAgfCBpbml0X2RlY2xh
cmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNz
aW9uIFJJR0hUX0JSQUNLRVQgeworICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVy
RXJyb3JDaGVjayhAMywgJDEudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soJDMubGluZSwg
KiQzLnN0cmluZywgJDEudHlwZSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0
Q29uc3RFcnJvckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAkMS50eXBlLCB0cnVlKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAkJCA9ICQxOwogCi0gICAgICAgIGlm
IChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQ0LmxpbmUsICQxLnR5cGUpIHx8IGNvbnRl
eHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygkNC5saW5lLCAkMS50eXBlKSkKKyAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDQsICQxLnR5cGUpIHx8IGNvbnRleHQt
PmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhANCwgJDEudHlwZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0g
ICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygkNC5saW5lLCAkNSwg
c2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhANCwg
JDUsIHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICQxLnR5cGUuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUq
IHZhcmlhYmxlID0gMDsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2so
JDQubGluZSwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhANCwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFi
bGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIFRU
eXBlIHR5cGUgPSBUVHlwZSgkMS50eXBlKTsKICAgICAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXpl
KHNpemUpOwotICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpIDogMCwgKiQzLnN0
cmluZywgdHlwZSwgJDMubGluZSksICQzLmxpbmUpOworICAgICAgICAgICAgJCQuaW50ZXJtQWdn
cmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9k
ZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5n
ZXRVbmlxdWVJZCgpIDogMCwgKiQzLnN0cmluZywgdHlwZSwgQDMpLCBAMyk7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBJREVOVElGSUVSIEVRVUFM
IGluaXRpYWxpemVyIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soJDMubGluZSwgJDEudHlwZSkpCisgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01N
QSBpZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVyIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0
cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQkID0gJDE7CiAKICAgICAgICAgVEludGVybU5vZGUq
IGludGVybU5vZGU7Ci0gICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCQz
LmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsICQ1LCBpbnRlcm1Ob2RlKSkgeworICAgICAgICBp
ZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcihAMywgKiQzLnN0cmluZywgJDEudHlwZSwg
JDUsIGludGVybU5vZGUpKSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gYnVpbGQg
dGhlIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICAgICAgICAgLy8KICAgICAgICAg
ICAgIGlmIChpbnRlcm1Ob2RlKQotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCBpbnRlcm1Ob2RlLCAk
NC5saW5lKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgaW50ZXJtTm9kZSwgQDQpOwogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9ICQxLmludGVy
bUFnZ3JlZ2F0ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTEyODYsNzkgKzEyMjgsNzkgQEAgaW5p
dF9kZWNsYXJhdG9yX2xpc3QKIHNpbmdsZV9kZWNsYXJhdGlvbgogICAgIDogZnVsbHlfc3BlY2lm
aWVkX3R5cGUgewogICAgICAgICAkJC50eXBlID0gJDE7Ci0gICAgICAgICQkLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsIFRUeXBlKCQxKSwgJDEubGluZSksICQxLmxpbmUpOwor
ICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFn
Z3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgkMSks
IEAxKSwgQDEpOwogICAgIH0KLSAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIElERU5USUZJRVIg
ewotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIFRUeXBlKCQxKSwgJDIubGluZSk7Ci0gICAgICAgICQk
LmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5
bWJvbCwgJDIubGluZSk7CisgICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIHsK
KyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkMSksIEAyKTsKKyAgICAgICAgJCQuaW50ZXJt
QWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBA
Mik7CiAgICAgICAgIAotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JD
aGVjaygkMi5saW5lLCAkJC50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soQDIsICQkLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCQyLmxp
bmUsICokMi5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5v
bkluaXRDb25zdEVycm9yQ2hlY2soQDIsICokMi5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
JCQudHlwZSA9ICQxOwogCiAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAg
ICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZywgJCQu
dHlwZSwgdmFyaWFibGUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2so
QDIsICokMi5zdHJpbmcsICQkLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgICAg
IHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgIH0KLSAgICB8IGZ1
bGx5X3NwZWNpZmllZF90eXBlIElERU5USUZJRVIgTEVGVF9CUkFDS0VUIFJJR0hUX0JSQUNLRVQg
ewotICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAidW5zaXplZCBhcnJheSBkZWNsYXJh
dGlvbnMgbm90IHN1cHBvcnRlZCIsICQyLnN0cmluZy0+Y19zdHIoKSk7CisgICAgfCBmdWxseV9z
cGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKKyAg
ICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJ1bnNpemVkIGFycmF5IGRlY2xhcmF0aW9ucyBub3Qg
c3VwcG9ydGVkIiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEpLCAkMi5saW5lKTsKLSAgICAg
ICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdh
dGUoc3ltYm9sLCAkMi5saW5lKTsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkMSksIEAy
KTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1h
a2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgICQkLnR5cGUgPSAkMTsKICAgICB9Ci0g
ICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBjb25zdGFu
dF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgeworICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUg
aWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VU
IHsKICAgICAgICAgVFR5cGUgdHlwZSA9IFRUeXBlKCQxKTsKICAgICAgICAgaW50IHNpemU7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQyLmxpbmUsICQ0LCBzaXpl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDIsICQ0LCBzaXpl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgdHlwZS5zZXRBcnJh
eVNpemUoc2l6ZSk7Ci0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgdHlwZSwgJDIubGluZSk7Ci0gICAg
ICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVn
YXRlKHN5bWJvbCwgJDIubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgdHlwZSwgQDIpOwor
ICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFn
Z3JlZ2F0ZShzeW1ib2wsIEAyKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVj
aygkMi5saW5lLCAqJDIuc3RyaW5nLCAkMSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5u
b25Jbml0Q29uc3RFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nLCAkMSwgdHJ1ZSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgJCQudHlwZSA9ICQxOwogCi0gICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQzLmxpbmUsICQxKSB8fCBjb250
ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDMubGluZSwgJDEpKQorICAgICAgICBpZiAo
Y29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjayhAMywgJDEpIHx8IGNvbnRleHQtPmFycmF5UXVh
bGlmaWVyRXJyb3JDaGVjayhAMywgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDMubGluZSwgJDQsIHNpemUpKQorICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQ0LCBzaXplKSkKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgICAgICQxLnNldEFy
cmF5KHRydWUsIHNpemUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0g
ICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCQzLmxpbmUsICokMi5zdHJp
bmcsICQxLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNo
ZWNrKEAzLCAqJDIuc3RyaW5nLCAkMSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAgICAg
ICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIEVRVUFM
IGluaXRpYWxpemVyIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soJDIubGluZSwgJDEpKQorICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmll
ciBFUVVBTCBpbml0aWFsaXplciB7CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZp
ZXJFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAK
ICAgICAgICAgJCQudHlwZSA9ICQxOwogCiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2Rl
OwotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMi5saW5lLCAqJDIu
c3RyaW5nLCAkMSwgJDQsIGludGVybU5vZGUpKSB7CisgICAgICAgIGlmICghY29udGV4dC0+ZXhl
Y3V0ZUluaXRpYWxpemVyKEAyLCAqJDIuc3RyaW5nLCAkMSwgJDQsIGludGVybU5vZGUpKSB7CiAg
ICAgICAgIC8vCiAgICAgICAgIC8vIEJ1aWxkIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbgog
ICAgICAgICAvLwogICAgICAgICAgICAgaWYoaW50ZXJtTm9kZSkKLSAgICAgICAgICAgICAgICAk
JC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShp
bnRlcm1Ob2RlLCAkMy5saW5lKTsKKyAgICAgICAgICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCBAMyk7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsK
ICAgICAgICAgfSBlbHNlIHsKQEAgLTEzNjcsMTE4ICsxMzA5LDUwIEBAIHNpbmdsZV9kZWNsYXJh
dGlvbgogICAgICAgICB9CiAgICAgfQogICAgIHwgSU5WQVJJQU5UIElERU5USUZJRVIgewotICAg
ICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgJDEubGluZSk7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgIFZF
UlRFWF9PTkxZKCJpbnZhcmlhbnQgZGVjbGFyYXRpb24iLCBAMSk7CisgICAgICAgIGlmIChjb250
ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAkJC50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50
VmFyeWluZ091dCwgJDIubGluZSk7CisgICAgICAgICQkLnR5cGUuc2V0QmFzaWMoRWJ0SW52YXJp
YW50LCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCBAMik7CiAgICAgICAgIGlmICghJDIuc3ltYm9s
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAidW5kZWNs
YXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICQyLnN0cmluZy0+Y19zdHIo
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInVuZGVjbGFyZWQgaWRlbnRpZmll
ciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAkJC5pbnRl
cm1BZ2dyZWdhdGUgPSAwOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAg
ICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkJC50eXBlKSwgJDIubGluZSk7Ci0gICAgICAg
ICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3Jl
Z2F0ZShzeW1ib2wsICQyLmxpbmUpOworICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9s
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgk
JC50eXBlKSwgQDIpOworICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgIH0KICAgICB9
Ci0KLS8vCi0vLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBsYW5ndWFnZXMuCi0v
LwotLy8gICAgfCBidWZmZXJfc3BlY2lmaWVyIHsKLS8vICAgICAgICAkJC5pbnRlcm1BZ2dyZWdh
dGUgPSAwOwotLy8gICAgfQogICAgIDsKIAotLy8gR3JhbW1hciBOb3RlOiAgTm8gJ2VudW0nLCBv
ciAndHlwZWRlZicuCi0KLS8vCi0vLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBs
YW5ndWFnZXMuCi0vLwotLy8ldHlwZSA8aW50ZXJtPiBidWZmZXJfZGVjbGFyYXRpb24KLS8vJXR5
cGUgPGludGVybS50eXBlPiBidWZmZXJfc3BlY2lmaWVyIGlucHV0X29yX291dHB1dCBidWZmZXJf
ZGVjbGFyYXRpb25fbGlzdAotLy9idWZmZXJfc3BlY2lmaWVyCi0vLyAgICA6IGlucHV0X29yX291
dHB1dCBMRUZUX0JSQUNFIGJ1ZmZlcl9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKLS8v
ICAgIH0KLS8vICAgIDsKLS8vCi0vL2lucHV0X29yX291dHB1dAotLy8gICAgOiBJTlBVVCB7Ci0v
LyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soJDEubGluZSwgY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW5wdXQiKSkKLS8vICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotLy8gICAgICAgIFVOUEFDS19PTkxZKCJpbnB1dCIsICQxLmxpbmUp
OwotLy8gICAgICAgICQkLnF1YWxpZmllciA9IEV2cUlucHV0OwotLy8gICAgfQotLy8gICAgfCBP
VVRQVVQgewotLy8gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUs
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgIm91dHB1dCIpKQotLy8gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgUEFDS19PTkxZKCJvdXRwdXQi
LCAkMS5saW5lKTsKLS8vICAgICAgICAkJC5xdWFsaWZpZXIgPSBFdnFPdXRwdXQ7Ci0vLyAgICB9
Ci0vLyAgICA7Ci0KLS8vCi0vLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBsYW5n
dWFnZXMuCi0vLwotLy9idWZmZXJfZGVjbGFyYXRpb25fbGlzdAotLy8gICAgOiBidWZmZXJfZGVj
bGFyYXRpb24gewotLy8gICAgfQotLy8gICAgfCBidWZmZXJfZGVjbGFyYXRpb25fbGlzdCBidWZm
ZXJfZGVjbGFyYXRpb24gewotLy8gICAgfQotLy8gICAgOwotCi0vLwotLy8gSW5wdXQvb3V0cHV0
IHNlbWFudGljczoKLS8vICAgZmxvYXQgbXVzdCBiZSAxNiBvciAzMiBiaXRzCi0vLyAgIGZsb2F0
IGFsaWdubWVudCByZXN0cmljdGlvbnM/Ci0vLyAgIGNoZWNrIGZvciBvbmx5IG9uZSBpbnB1dCBh
bmQgb25seSBvbmUgb3V0cHV0Ci0vLyAgIHN1bSBvZiBiaXRmaWVsZHMgaGFzIHRvIGJlIG11bHRp
cGxlIG9mIDMyCi0vLwotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUgcGFjay91bnBhY2sg
bGFuZ3VhZ2VzLgotLy8KLS8vYnVmZmVyX2RlY2xhcmF0aW9uCi0vLyAgICA6IHR5cGVfc3BlY2lm
aWVyIElERU5USUZJRVIgQ09MT04gY29uc3RhbnRfZXhwcmVzc2lvbiBTRU1JQ09MT04gewotLy8g
ICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmlu
ZywgY29udGV4dCkpCi0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLS8vICAgICAg
ICAkJC52YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJDIuc3RyaW5nLCAkMSk7Ci0vLyAgICAgICAg
aWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCokJC52YXJpYWJsZSkpIHsKLS8vICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInJlZGVmaW5pdGlvbiIsICQkLnZhcmlh
YmxlLT5nZXROYW1lKCkuY19zdHIoKSk7Ci0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLS8vICAgICAgICAgICAgLy8gZG9uJ3QgaGF2ZSB0byBkZWxldGUgJCQudmFyaWFibGUsIHRo
ZSBwb29sIHBvcCB3aWxsIHRha2UgY2FyZSBvZiBpdAotLy8gICAgICAgIH0KLS8vICAgIH0KLS8v
ICAgIDsKLQogZnVsbHlfc3BlY2lmaWVkX3R5cGUKICAgICA6IHR5cGVfc3BlY2lmaWVyIHsKICAg
ICAgICAgJCQgPSAkMTsKIAogICAgICAgICBpZiAoJDEuYXJyYXkpIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCQxLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5
Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmly
c3QtY2xhc3MgYXJyYXkiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgICQxLnNldEFycmF5KGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KICAgICB8IHR5cGVf
cXVhbGlmaWVyIHR5cGVfc3BlY2lmaWVyICB7CiAgICAgICAgIGlmICgkMi5hcnJheSkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3Qt
Y2xhc3MgYXJyYXkiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAibm90IHN1cHBv
cnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgJDIuc2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKCQxLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgJiYKICAgICAgICAgICAgICgkMi50
eXBlID09IEVidEJvb2wgfHwgJDIudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVy
U3RyaW5nKCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJj
YW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KCgkMS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ0luIHx8ICQxLnF1YWxpZmllciA9PSBFdnFWYXJ5
aW5nT3V0KSAmJgogICAgICAgICAgICAgKCQyLnR5cGUgPT0gRWJ0Qm9vbCB8fCAkMi50eXBlID09
IEVidEludCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJjYW5ub3Qg
YmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1
YWxpZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQyOwpAQCAtMTQ4OCwzNCArMTM2MiwzNCBA
QCBmdWxseV9zcGVjaWZpZWRfdHlwZQogCiB0eXBlX3F1YWxpZmllcgogICAgIDogQ09OU1RfUVVB
TCB7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCAkMS5saW5lKTsKKyAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQ29uc3QsIEAxKTsKICAgICB9CiAgICAgfCBB
VFRSSUJVVEUgewotICAgICAgICBWRVJURVhfT05MWSgiYXR0cmlidXRlIiwgJDEubGluZSk7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQorICAgICAgICBWRVJURVhf
T05MWSgiYXR0cmlidXRlIiwgQDEpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JD
aGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0cmlidXRl
IikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkLnNldEJhc2lj
KEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVi
dFZvaWQsIEV2cUF0dHJpYnV0ZSwgQDEpOwogICAgIH0KICAgICB8IFZBUllJTkcgewotICAgICAg
ICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCksICJ2YXJ5aW5nIikpCisgICAgICAgIGlmIChjb250ZXh0LT5n
bG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCks
ICJ2YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlm
IChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAk
JC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0LCAkMS5saW5lKTsKKyAgICAgICAgICAg
ICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsIEAxKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCAkMS5saW5lKTsK
KyAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgQDEpOwogICAg
IH0KICAgICB8IElOVkFSSUFOVCBWQVJZSU5HIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2Jh
bEVycm9yQ2hlY2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
LCAiaW52YXJpYW50IHZhcnlpbmciKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9y
Q2hlY2soQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFu
dCB2YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlm
IChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAk
JC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAkMS5saW5lKTsKKyAg
ICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsIEAx
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52
YXJpYW50VmFyeWluZ0luLCAkMS5saW5lKTsKKyAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZv
aWQsIEV2cUludmFyaWFudFZhcnlpbmdJbiwgQDEpOwogICAgIH0KICAgICB8IFVOSUZPUk0gewot
ICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ1bmlmb3JtIikpCisgICAgICAgIGlmIChjb250
ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCksICJ1bmlmb3JtIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVVuaWZvcm0sICQxLmxpbmUpOworICAgICAgICAk
JC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlmb3JtLCBAMSk7CiAgICAgfQogICAgIDsKIApAQCAt
MTUyNSw3ICsxMzk5LDcgQEAgdHlwZV9zcGVjaWZpZXIKIAogICAgICAgICBpZiAoJCQucHJlY2lz
aW9uID09IEVicFVuZGVmaW5lZCkgewogICAgICAgICAgICAgJCQucHJlY2lzaW9uID0gY29udGV4
dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigkMS50eXBlKTsKLSAgICAgICAgICAg
IGlmIChjb250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKCQxLmxpbmUsICQkLnByZWNpc2lvbiwg
JDEudHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNr
KEAxLCAkJC5wcmVjaXNpb24sICQxLnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNTU1LDExICsxNDI5LDEx
IEBAIHR5cGVfc3BlY2lmaWVyX25vX3ByZWMKICAgICB8IHR5cGVfc3BlY2lmaWVyX25vbmFycmF5
IExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewogICAgICAg
ICAkJCA9ICQxOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQy
LmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDIs
ICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVF
cnJvckNoZWNrKCQyLmxpbmUsICQzLCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVNpemVFcnJvckNoZWNrKEAyLCAkMywgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAg
ICAgIH0KQEAgLTE1NjksMTE4ICsxNDQzLDEwNSBAQCB0eXBlX3NwZWNpZmllcl9ub19wcmVjCiB0
eXBlX3NwZWNpZmllcl9ub25hcnJheQogICAgIDogVk9JRF9UWVBFIHsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBxdWFsLCAk
MS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgQDEpOwogICAgIH0K
ICAgICB8IEZMT0FUX1RZUEUgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0g
ICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBJTlRfVFlQRSB7CiAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCBA
MSk7CiAgICAgfQogICAgIHwgQk9PTF9UWVBFIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVt
cG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAkMS5saW5lKTsKKyAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgIH0KLS8vICAgIHwgVU5T
SUdORUQgSU5UX1RZUEUgewotLy8gICAgICAgIFBBQ0tfVU5QQUNLX09OTFkoInVuc2lnbmVkIiwg
JDEubGluZSk7Ci0vLyAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotLy8gICAgICAg
ICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7Ci0vLyAgICB9CiAgICAgfCBWRUMy
IHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNp
YyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0
LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAgfCBW
RUMzIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRC
YXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZs
b2F0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICB9CiAgICAg
fCBWRUM0IHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVi
dEZsb2F0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICB9CiAg
ICAgfCBCVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAg
JCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2lj
KEVidEJvb2wsIHF1YWwsIEAxKTsKICAgICAgICAgJCQuc2V0QWdncmVnYXRlKDIpOwogICAgIH0K
ICAgICB8IEJWRUMzIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9s
VGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAg
ICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAg
fQogICAgIHwgQlZFQzQgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAg
ICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRC
YXNpYyhFYnRCb29sLCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAg
ICB9CiAgICAgfCBJVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAg
ICB9CiAgICAgfCBJVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzKTsKICAg
ICB9CiAgICAgfCBJVkVDNCB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAg
ICB9CiAgICAgfCBNQVRSSVgyIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDIiLCAkMS5s
aW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRC
YXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZs
b2F0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyLCB0cnVlKTsKICAgICB9
CiAgICAgfCBNQVRSSVgzIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDMiLCAkMS5saW5l
KTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNp
YyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0
LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzLCB0cnVlKTsKICAgICB9CiAg
ICAgfCBNQVRSSVg0IHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDQiLCAkMS5saW5lKTsK
ICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBx
dWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0LCB0cnVlKTsKICAgICB9CiAgICAg
fCBTQU1QTEVSMkQgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEIiwgJDEubGlu
ZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0U2FtcGxlcjJELCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
U2FtcGxlcjJELCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUkNVQkUgewotICAgICAg
ICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckN1YmUiLCAkMS5saW5lKTsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwg
cXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXJDdWJlLCBxdWFs
LCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUl9FWFRFUk5BTF9PRVMgewogICAgICAgICBpZiAo
IWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1bnN1cHBvcnRlZCB0eXBl
IiwgInNhbXBsZXJFeHRlcm5hbE9FUyIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEs
ICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXJFeHRlcm5hbE9FUyIpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJz
YW1wbGVyRXh0ZXJuYWxPRVMiLCAkMS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVt
cG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWws
ICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1
YWwsIEAxKTsKICAgICB9CiAgICAgfCBTQU1QTEVSMkRSRUNUIHsKICAgICAgICAgaWYgKCFjb250
ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIikpIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNh
bXBsZXIyRFJlY3QiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5zdXBwb3J0
ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIH0KLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXIyRFJlY3QiLCAk
MS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRTYW1wbGVyMkRSZWN0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IHN0cnVjdF9z
cGVjaWZpZXIgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic3RydWN0IiwgJDEubGluZSk7CiAg
ICAgICAgICQkID0gJDE7CiAgICAgICAgICQkLnF1YWxpZmllciA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICB9CkBA
IC0xNjkxLDI5ICsxNTUyLDI5IEBAIHR5cGVfc3BlY2lmaWVyX25vbmFycmF5CiAgICAgICAgIC8v
CiAgICAgICAgIFRUeXBlJiBzdHJ1Y3R1cmUgPSBzdGF0aWNfY2FzdDxUVmFyaWFibGUqPigkMS5z
eW1ib2wpLT5nZXRUeXBlKCk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnVzZXJEZWYgPSAmc3Ry
dWN0dXJlOwogICAgIH0KICAgICA7CiAKIHN0cnVjdF9zcGVjaWZpZXIKLSAgICA6IFNUUlVDVCBJ
REVOVElGSUVSIExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlv
bigkMi5saW5lLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNs
YXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVk
RXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nKSkKKyAgICA6IFNUUlVDVCBpZGVudGlmaWVy
IExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihAMiwgKiQy
LnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBS
SUdIVF9CUkFDRSB7CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDIs
ICokMi5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAg
IFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUoJDUsICokMi5zdHJpbmcpOworICAgICAgICBU
VHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKG5ldyBUU3RydWN0dXJlKCQyLnN0cmluZywgJDUp
KTsKICAgICAgICAgVFZhcmlhYmxlKiB1c2VyVHlwZURlZiA9IG5ldyBUVmFyaWFibGUoJDIuc3Ry
aW5nLCAqc3RydWN0dXJlLCB0cnVlKTsKICAgICAgICAgaWYgKCEgY29udGV4dC0+c3ltYm9sVGFi
bGUuaW5zZXJ0KCp1c2VyVHlwZURlZikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQy
LmxpbmUsICJyZWRlZmluaXRpb24iLCAkMi5zdHJpbmctPmNfc3RyKCksICJzdHJ1Y3QiKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAicmVkZWZpbml0aW9uIiwgJDIuc3RyaW5nLT5j
X3N0cigpLCAic3RydWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICQxLmxp
bmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgQDEpOwog
ICAgICAgICAkJC51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5leGl0U3Ry
dWN0RGVjbGFyYXRpb24oKTsKICAgICB9Ci0gICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSB7IGlmIChj
b250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCQyLmxpbmUsICokMi5zdHJpbmcpKSBjb250
ZXh0LT5yZWNvdmVyKCk7IH0gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0Ugewot
ICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCQ0LCBUU3RyaW5nKCIiKSk7Ci0g
ICAgICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAkMS5saW5lKTsKKyAg
ICB8IFNUUlVDVCBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRp
b24oQDIsICokMi5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IH0gc3RydWN0X2RlY2xhcmF0
aW9uX2xpc3QgUklHSFRfQlJBQ0UgeworICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRU
eXBlKG5ldyBUU3RydWN0dXJlKE5ld1Bvb2xUU3RyaW5nKCIiKSwgJDQpKTsKKyAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksIEAxKTsKICAgICAgICAgJCQudXNlckRl
ZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7
CiAgICAgfQpAQCAtMTcyNSwxNCArMTU4NiwxNSBAQCBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdAog
ICAgIH0KICAgICB8IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IHN0cnVjdF9kZWNsYXJhdGlvbiB7
CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
JDItPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsg
aiA8ICQkLT5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIGlmICgoKiQkKVtqXS50eXBl
LT5nZXRGaWVsZE5hbWUoKSA9PSAoKiQyKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSkgewotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoKiQyKVtpXS5saW5lLCAiZHVwbGljYXRl
IGZpZWxkIG5hbWUgaW4gc3RydWN0dXJlOiIsICJzdHJ1Y3QiLCAoKiQyKVtpXS50eXBlLT5nZXRG
aWVsZE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAkMi0+
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQgPSAoKiQyKVtpXTsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgJCQtPnNpemUoKTsgKytqKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCgqJCQpW2pdLT5uYW1lKCkgPT0gZmllbGQtPm5hbWUoKSkgeworICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgImR1cGxpY2F0ZSBmaWVsZCBuYW1l
IGluIHN0cnVjdHVyZToiLCAic3RydWN0IiwgZmllbGQtPm5hbWUoKS5jX3N0cigpKTsKICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICQkLT5wdXNoX2JhY2soKCokMilbaV0pOworICAgICAg
ICAgICAgJCQtPnB1c2hfYmFjayhmaWVsZCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgOwpAQCAt
MTc0MSwxNCArMTYwMywxNCBAQCBzdHJ1Y3RfZGVjbGFyYXRpb24KICAgICA6IHR5cGVfc3BlY2lm
aWVyIHN0cnVjdF9kZWNsYXJhdG9yX2xpc3QgU0VNSUNPTE9OIHsKICAgICAgICAgJCQgPSAkMjsK
IAotICAgICAgICBpZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2soJDEubGluZSwgKCokMilbMF0u
dHlwZS0+Z2V0RmllbGROYW1lKCksICQxKSkgeworICAgICAgICBpZiAoY29udGV4dC0+dm9pZEVy
cm9yQ2hlY2soQDEsICgqJDIpWzBdLT5uYW1lKCksICQxKSkgewogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgJCQtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8g
Q2FyZWZ1bCBub3QgdG8gcmVwbGFjZSBhbHJlYWR5IGtub3duIGFzcGVjdHMgb2YgdHlwZSwgbGlr
ZSBhcnJheS1uZXNzCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAo
KiQkKVtpXS50eXBlOworICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKiQkKVtpXS0+dHlwZSgp
OwogICAgICAgICAgICAgdHlwZS0+c2V0QmFzaWNUeXBlKCQxLnR5cGUpOwogICAgICAgICAgICAg
dHlwZS0+c2V0Tm9taW5hbFNpemUoJDEuc2l6ZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXRNYXRy
aXgoJDEubWF0cml4KTsKQEAgLTE3NTYsMjYgKzE2MTgsMjMgQEAgc3RydWN0X2RlY2xhcmF0aW9u
CiAKICAgICAgICAgICAgIC8vIGRvbid0IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAgICAgICAg
ICAgIGlmICh0eXBlLT5pc0FycmF5KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlUeXBlRXJyb3JDaGVjaygkMS5saW5lLCAkMSkpCisgICAgICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDEsICQxKSkKICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCQxLmFy
cmF5KQogICAgICAgICAgICAgICAgIHR5cGUtPnNldEFycmF5U2l6ZSgkMS5hcnJheVNpemUpOwot
ICAgICAgICAgICAgaWYgKCQxLnVzZXJEZWYpIHsKKyAgICAgICAgICAgIGlmICgkMS51c2VyRGVm
KQogICAgICAgICAgICAgICAgIHR5cGUtPnNldFN0cnVjdCgkMS51c2VyRGVmLT5nZXRTdHJ1Y3Qo
KSk7Ci0gICAgICAgICAgICAgICAgdHlwZS0+c2V0VHlwZU5hbWUoJDEudXNlckRlZi0+Z2V0VHlw
ZU5hbWUoKSk7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3ROZXN0aW5nRXJyb3JDaGVjaygkMS5saW5lLCAqdHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChj
b250ZXh0LT5zdHJ1Y3ROZXN0aW5nRXJyb3JDaGVjayhAMSwgKigqJCQpW2ldKSkKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CiAgICAgOwogCiBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0CiAgICAgOiBzdHJ1Y3RfZGVjbGFy
YXRvciB7Ci0gICAgICAgICQkID0gTmV3UG9vbFRUeXBlTGlzdCgpOworICAgICAgICAkJCA9IE5l
d1Bvb2xURmllbGRMaXN0KCk7CiAgICAgICAgICQkLT5wdXNoX2JhY2soJDEpOwogICAgIH0KICAg
ICB8IHN0cnVjdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgc3RydWN0X2RlY2xhcmF0b3IgewpAQCAt
MTc4NCwyNiArMTY0MywyNCBAQCBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0CiAgICAgOwogCiBzdHJ1
Y3RfZGVjbGFyYXRvcgotICAgIDogSURFTlRJRklFUiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5y
ZXNlcnZlZEVycm9yQ2hlY2soJDEubGluZSwgKiQxLnN0cmluZykpCisgICAgOiBpZGVudGlmaWVy
IHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMSwgKiQxLnN0cmlu
ZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgJCQudHlwZSA9
IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICAkJC5saW5lID0gJDEu
bGluZTsKLSAgICAgICAgJCQudHlwZS0+c2V0RmllbGROYW1lKCokMS5zdHJpbmcpOworICAgICAg
ICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAgICAg
ICAkJCA9IG5ldyBURmllbGQodHlwZSwgJDEuc3RyaW5nKTsKICAgICB9Ci0gICAgfCBJREVOVElG
SUVSIExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewotICAg
ICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5zdHJpbmcp
KQorICAgIHwgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdI
VF9CUkFDS0VUIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMSwg
KiQxLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAg
JCQudHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICAkJC5s
aW5lID0gJDEubGluZTsKLSAgICAgICAgJCQudHlwZS0+c2V0RmllbGROYW1lKCokMS5zdHJpbmcp
OwotCi0gICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJy
b3JDaGVjaygkMi5saW5lLCAkMywgc2l6ZSkpCisgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRU
eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CisgICAgICAgIGludCBzaXplID0gMDsKKyAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQzLCBzaXplKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQudHlwZS0+c2V0QXJyYXlTaXpl
KHNpemUpOworICAgICAgICB0eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7CisKKyAgICAgICAgJCQg
PSBuZXcgVEZpZWxkKHR5cGUsICQxLnN0cmluZyk7CiAgICAgfQogICAgIDsKIApAQCAtMTgzNSw3
ICsxNjkyLDcgQEAgY29tcG91bmRfc3RhdGVtZW50CiAgICAgfCBMRUZUX0JSQUNFIHsgY29udGV4
dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9IHN0YXRlbWVudF9saXN0IHsgY29udGV4dC0+c3ltYm9s
VGFibGUucG9wKCk7IH0gUklHSFRfQlJBQ0UgewogICAgICAgICBpZiAoJDMgIT0gMCkgewogICAg
ICAgICAgICAgJDMtPnNldE9wKEVPcFNlcXVlbmNlKTsKLSAgICAgICAgICAgICQzLT5zZXRFbmRM
aW5lKCQ1LmxpbmUpOworICAgICAgICAgICAgJDMtPnNldExpbmUoQCQpOwogICAgICAgICB9CiAg
ICAgICAgICQkID0gJDM7CiAgICAgfQpAQCAtMTg1OSw3ICsxNzE2LDcgQEAgY29tcG91bmRfc3Rh
dGVtZW50X25vX25ld19zY29wZQogICAgIHwgTEVGVF9CUkFDRSBzdGF0ZW1lbnRfbGlzdCBSSUdI
VF9CUkFDRSB7CiAgICAgICAgIGlmICgkMikgewogICAgICAgICAgICAgJDItPnNldE9wKEVPcFNl
cXVlbmNlKTsKLSAgICAgICAgICAgICQyLT5zZXRFbmRMaW5lKCQzLmxpbmUpOworICAgICAgICAg
ICAgJDItPnNldExpbmUoQCQpOwogICAgICAgICB9CiAgICAgICAgICQkID0gJDI7CiAgICAgfQpA
QCAtMTg2NywxMCArMTcyNCwxMCBAQCBjb21wb3VuZF9zdGF0ZW1lbnRfbm9fbmV3X3Njb3BlCiAK
IHN0YXRlbWVudF9saXN0CiAgICAgOiBzdGF0ZW1lbnQgewotICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKCQxLCAwKTsKKyAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMSwgQCQpOwogICAgIH0KICAgICB8IHN0YXRl
bWVudF9saXN0IHN0YXRlbWVudCB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUoJDEsICQyLCAwKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMSwgJDIsIEAkKTsKICAgICB9CiAgICAgOwogCkBAIC0xODgx
LDkgKzE3MzgsOSBAQCBleHByZXNzaW9uX3N0YXRlbWVudAogCiBzZWxlY3Rpb25fc3RhdGVtZW50
CiAgICAgOiBJRiBMRUZUX1BBUkVOIGV4cHJlc3Npb24gUklHSFRfUEFSRU4gc2VsZWN0aW9uX3Jl
c3Rfc3RhdGVtZW50IHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCQxLmxp
bmUsICQzKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKEAxLCAkMykpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigkMywgJDUsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oJDMsICQ1LCBAMSk7CiAgICAgfQogICAg
IDsKIApAQCAtMTkwNywxNCArMTc2NCwxNCBAQCBjb25kaXRpb24KICAgICAgICAgaWYgKGNvbnRl
eHQtPmJvb2xFcnJvckNoZWNrKCQxLT5nZXRMaW5lKCksICQxKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElG
SUVSIEVRVUFMIGluaXRpYWxpemVyIHsKKyAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50
aWZpZXIgRVFVQUwgaW5pdGlhbGl6ZXIgewogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9k
ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDIubGlu
ZSwgJDEpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhA
MiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29u
dGV4dC0+Ym9vbEVycm9yQ2hlY2soJDIubGluZSwgJDEpKQorICAgICAgICBpZiAoY29udGV4dC0+
Ym9vbEVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
IAotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMi5saW5lLCAqJDIu
c3RyaW5nLCAkMSwgJDQsIGludGVybU5vZGUpKQorICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1
dGVJbml0aWFsaXplcihAMiwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkKICAgICAg
ICAgICAgICQkID0gJDQ7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwpAQCAtMTkyNiwxOSArMTc4MywxOSBAQCBjb25kaXRpb24KIGl0ZXJhdGlvbl9zdGF0
ZW1lbnQKICAgICA6IFdISUxFIExFRlRfUEFSRU4geyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNo
KCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgfSBjb25kaXRpb24gUklHSFRfUEFSRU4g
c3RhdGVtZW50X25vX25ld19zY29wZSB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBv
cCgpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hp
bGUsIDAsICQ0LCAwLCAkNiwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZExvb3AoRUxvb3BXaGlsZSwgMCwgJDQsIDAsICQ2LCBAMSk7CiAgICAgICAgIC0t
Y29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAgfCBETyB7ICsrY29udGV4dC0+
bG9vcE5lc3RpbmdMZXZlbDsgfSBzdGF0ZW1lbnRfd2l0aF9zY29wZSBXSElMRSBMRUZUX1BBUkVO
IGV4cHJlc3Npb24gUklHSFRfUEFSRU4gU0VNSUNPTE9OIHsKLSAgICAgICAgaWYgKGNvbnRleHQt
PmJvb2xFcnJvckNoZWNrKCQ4LmxpbmUsICQ2KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xF
cnJvckNoZWNrKEA4LCAkNikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAs
ICQ2LCAwLCAkMywgJDQubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZExvb3AoRUxvb3BEb1doaWxlLCAwLCAkNiwgMCwgJDMsIEA0KTsKICAgICAgICAgLS1jb250
ZXh0LT5sb29wTmVzdGluZ0xldmVsOwogICAgIH0KICAgICB8IEZPUiBMRUZUX1BBUkVOIHsgY29u
dGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0g
Zm9yX2luaXRfc3RhdGVtZW50IGZvcl9yZXN0X3N0YXRlbWVudCBSSUdIVF9QQVJFTiBzdGF0ZW1l
bnRfbm9fbmV3X3Njb3BlIHsKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7Ci0g
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BGb3IsICQ0LCBy
ZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCQ1Lm5vZGUxKSwgcmVpbnRlcnByZXRfY2Fz
dDxUSW50ZXJtVHlwZWQqPigkNS5ub2RlMiksICQ3LCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcEZvciwgJDQsIHJlaW50ZXJwcmV0X2Nh
c3Q8VEludGVybVR5cGVkKj4oJDUubm9kZTEpLCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBl
ZCo+KCQ1Lm5vZGUyKSwgJDcsIEAxKTsKICAgICAgICAgLS1jb250ZXh0LT5sb29wTmVzdGluZ0xl
dmVsOwogICAgIH0KICAgICA7CkBAIC0xOTc1LDM5ICsxODMyLDM5IEBAIGZvcl9yZXN0X3N0YXRl
bWVudAoganVtcF9zdGF0ZW1lbnQKICAgICA6IENPTlRJTlVFIFNFTUlDT0xPTiB7CiAgICAgICAg
IGlmIChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9IDApIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCQxLmxpbmUsICJjb250aW51ZSBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxv
b3BzIiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJjb250aW51ZSBzdGF0
ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJyYW5jaChFT3BDb250aW51ZSwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgQDEpOwogICAgIH0KICAgICB8IEJS
RUFLIFNFTUlDT0xPTiB7CiAgICAgICAgIGlmIChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJicmVhayBzdGF0ZW1l
bnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoQDEsICJicmVhayBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgJDEubGluZSk7CisgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgQDEpOwogICAg
IH0KICAgICB8IFJFVFVSTiBTRU1JQ09MT04gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgQDEpOwogICAgICAgICBpZiAo
Y29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCkg
ewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIm5vbi12b2lkIGZ1bmN0aW9u
IG11c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcihAMSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJu
Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgfCBSRVRVUk4gZXhwcmVzc2lvbiBTRU1JQ09MT04gewotICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAkMiwgJDEubGluZSk7CisgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICQyLCBAMSk7
CiAgICAgICAgIGNvbnRleHQtPmZ1bmN0aW9uUmV0dXJuc1ZhbHVlID0gdHJ1ZTsKICAgICAgICAg
aWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpID09IEVidFZv
aWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ2b2lkIGZ1bmN0aW9u
IGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKEAxLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJu
Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0gZWxzZSBpZiAo
Kihjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlKSAhPSAkMi0+Z2V0VHlwZSgpKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBt
YXRjaGluZyB0eXBlOiIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAx
LCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4iKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgIH0KICAgICB8IERJ
U0NBUkQgU0VNSUNPTE9OIHsKLSAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgJDEubGluZSk7
Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BLaWxsLCAk
MS5saW5lKTsKKyAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgQDEpOworICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgQDEpOwogICAgIH0KICAg
ICA7CiAKQEAgLTIwMTksNyArMTg3Niw3IEBAIHRyYW5zbGF0aW9uX3VuaXQKICAgICAgICAgY29u
dGV4dC0+dHJlZVJvb3QgPSAkJDsKICAgICB9CiAgICAgfCB0cmFuc2xhdGlvbl91bml0IGV4dGVy
bmFsX2RlY2xhcmF0aW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jv
d0FnZ3JlZ2F0ZSgkMSwgJDIsIDApOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKCQxLCAkMiwgQCQpOwogICAgICAgICBjb250ZXh0LT50cmVlUm9vdCA9
ICQkOwogICAgIH0KICAgICA7CkBAIC0yMDQxLDcgKzE4OTgsNyBAQCBmdW5jdGlvbl9kZWZpbml0
aW9uCiAgICAgICAgIAogICAgICAgICBpZiAoYnVpbHRJbikKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImJ1aWx0LWluIGZ1bmN0aW9ucyBjYW5ub3QgYmUg
cmVkZWZpbmVkIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKEAxLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQi
LCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjA1NSw3ICsxOTEyLDcgQEAgZnVuY3Rp
b25fZGVmaW5pdGlvbgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIFRoZW4gdGhpcyBm
dW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHkuCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1
bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihA
MSwgImZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19z
dHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAg
ICAgcHJldkRlYy0+c2V0RGVmaW5lZCgpOwpAQCAtMjA2NSwxMSArMTkyMiwxMSBAQCBmdW5jdGlv
bl9kZWZpbml0aW9uCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0TmFtZSgp
ID09ICJtYWluIikgewogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCkg
PiAwKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9u
IGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3Ry
KCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiZnVuY3Rpb24gY2Fubm90
IHRha2UgYW55IHBhcmFtZXRlcihzKSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CiAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0
Vm9pZCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICIiLCBmdW5j
dGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCksICJtYWluIGZ1bmN0aW9uIGNh
bm5vdCByZXR1cm4gYSB2YWx1ZSIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAx
LCAiIiwgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpLCAibWFpbiBm
dW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIwOTcsNyArMTk1NCw3
IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHBh
cmFtZXRlcnMgd2l0aCBuYW1lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgICAgICBpZiAoISBjb250ZXh0LT5zeW1ib2xUYWJsZS5pbnNlcnQoKnZh
cmlhYmxlKSkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAi
cmVkZWZpbml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0
TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsKICAgICAgICAgICAgICAgICB9
CkBAIC0yMTA4LDE0ICsxOTY1LDE1IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgICAg
ICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRU
eXBlKCksICQxLmxpbmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFt
ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBAMSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBh
cmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVz
LCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgJDEu
bGluZSksICQxLmxpbmUpOworICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgQDEpLCBAMSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsICQxLmxpbmUpOworICAgICAgICBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2RlcywgRU9wUGFy
YW1ldGVycywgQDEpOwogICAgICAgICAkMS5pbnRlcm1BZ2dyZWdhdGUgPSBwYXJhbU5vZGVzOwog
ICAgICAgICBjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsID0gMDsKICAgICB9CkBAIC0yMTIzLDEy
ICsxOTgxLDEyIEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgLy8/PyBDaGVjayB0aGF0
IGFsbCBwYXRocyByZXR1cm4gYSB2YWx1ZSBpZiByZXR1cm4gdHlwZSAhPSB2b2lkID8KICAgICAg
ICAgLy8gICBNYXkgYmUgYmVzdCBkb25lIGFzIHBvc3QgcHJvY2VzcyBwaGFzZSBvbiBpbnRlcm1l
ZGlhdGUgY29kZQogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZS0+Z2V0
QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCAmJiAhIGNvbnRleHQtPmZ1bmN0aW9uUmV0dXJuc1ZhbHVl
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiZnVuY3Rpb24gZG9lcyBu
b3QgcmV0dXJuIGEgdmFsdWU6IiwgIiIsICQxLmZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVy
biBhIHZhbHVlOiIsICIiLCAkMS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybUFnZ3JlZ2F0
ZSwgJDMsIDApOwotICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3Bl
cmF0b3IoJCQsIEVPcEZ1bmN0aW9uLCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1BZ2dyZWdhdGUsICQzLCBAJCk7Cisg
ICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigkJCwgRU9w
RnVuY3Rpb24sIEAxKTsKICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldE5hbWUoJDEu
ZnVuY3Rpb24tPmdldE1hbmdsZWROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICQkLT5nZXRBc0Fn
Z3JlZ2F0ZSgpLT5zZXRUeXBlKCQxLmZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkpOwogCkBAIC0y
MTM3LDE1ICsxOTk1LDE3IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgJCQtPmdldEFz
QWdncmVnYXRlKCktPnNldE9wdGltaXplKGNvbnRleHQtPnByYWdtYSgpLm9wdGltaXplKTsKICAg
ICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnByYWdtYSgpLmRl
YnVnKTsKIAotICAgICAgICBpZiAoJDMgJiYgJDMtPmdldEFzQWdncmVnYXRlKCkpCi0gICAgICAg
ICAgICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RW5kTGluZSgkMy0+Z2V0QXNBZ2dyZWdhdGUo
KS0+Z2V0RW5kTGluZSgpKTsKLQogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsK
ICAgICB9CiAgICAgOwogCiAlJQogCit2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGFy
c2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pIHsKKyAgICBjb250ZXh0LT5l
cnJvcigqeXlsbG9jLCByZWFzb24sICIiKTsKKyAgICBjb250ZXh0LT5yZWNvdmVyKCk7Cit9CisK
IGludCBnbHNsYW5nX3BhcnNlKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICByZXR1cm4g
eXlwYXJzZShjb250ZXh0KTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9nbHNsYW5nX2xleC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzg0LDggKzM4NCw4IEBAIHN0YXRpYyB2b2lkIHl5X2ZhdGFsX2Vycm9y
ICh5eWNvbnN0IGNoYXIKIAkqeXlfY3AgPSAnXDAnOyBcCiAJeXlnLT55eV9jX2J1Zl9wID0geXlf
Y3A7CiAKLSNkZWZpbmUgWVlfTlVNX1JVTEVTIDE1NQotI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVS
IDE1NgorI2RlZmluZSBZWV9OVU1fUlVMRVMgMTQ3CisjZGVmaW5lIFlZX0VORF9PRl9CVUZGRVIg
MTQ4CiAvKiBUaGlzIHN0cnVjdCBpcyBub3QgdXNlZCBpbiB0aGlzIHNjYW5uZXIsCiAgICBidXQg
aXRzIHByZXNlbmNlIGlzIG5lY2Vzc2FyeS4gKi8KIHN0cnVjdCB5eV90cmFuc19pbmZvCkBAIC0z
OTMsNTggKzM5Myw1NyBAQCBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwogCWZsZXhfaW50MzJfdCB5eV92
ZXJpZnk7CiAJZmxleF9pbnQzMl90IHl5X254dDsKIAl9Owotc3RhdGljIHl5Y29uc3QgZmxleF9p
bnQxNl90IHl5X2FjY2VwdFs0NTldID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9h
Y2NlcHRbNDQzXSA9CiAgICAgeyAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAg
IDAsICAgIDAsICAxNTYsICAxNTQsICAxNTMsICAxNTMsCi0gICAgICAxMzgsICAxNDQsICAxNDks
ICAxMzMsICAxMzQsICAxNDIsICAxNDEsICAxMzAsICAxMzksICAxMzcsCi0gICAgICAxNDMsICAx
MDIsICAxMDIsICAxMzEsICAxMjcsICAxNDUsICAxMzIsICAxNDYsICAxNTAsICAgOTgsCi0gICAg
ICAxMzUsICAxMzYsICAxNDgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAxMjgsICAxNDcsICAxMjksICAx
NDAsICAgIDMsICAgIDQsICAgIDMsCi0gICAgICAxNTIsICAxNTUsICAxNTEsICAxMjQsICAxMTAs
ICAxMjksICAxMTgsICAxMTMsICAxMDgsICAxMTYsCi0gICAgICAxMDYsICAxMTcsICAxMDcsICAx
MDUsICAgIDIsICAgIDEsICAxMDksICAxMDQsICAxMDAsICAxMDEsCi0gICAgICAgIDAsICAgIDAs
ICAxMDIsICAxMzYsICAxMjgsICAxMzUsICAxMjUsICAxMjEsICAxMjMsICAxMjIsCi0gICAgICAx
MjYsICAgOTgsICAxMTQsICAxMjAsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
Ci0KLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAxNywgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICAyMCwgICAyMiwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgIDExNSwgIDExOSwgICAgNSwKLSAgICAgIDE1
MSwgICAgMCwgICAgMSwgIDEwNCwgICAgMCwgICAgMCwgIDEwMywgICA5OSwgIDExMSwgIDExMiwK
LSAgICAgICA1MCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICAxOCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICAyNiwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICAyMywgICA5OCwgICA5OCwKLQotICAgICAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAot
ICAgICAgIDk4LCAgICAwLCAgMTA1LCAgICAwLCAgMTA0LCAgIDk4LCAgIDI4LCAgIDk4LCAgIDk4
LCAgIDk1LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDIxLCAgIDUzLCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDY5LCAgIDk4LCAgIDk4LCAgIDU4
LCAgIDczLCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDcwLCAgICA5LCAgIDMzLCAgIDM0LCAgIDM1LAotICAgICAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDU2LCAgIDI5LCAgIDk4LCAgIDk4LAotICAg
ICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDM2LCAgIDM3LCAgIDM4LCAgIDI3LCAgIDk4LCAg
IDk4LAotICAgICAgIDk4LCAgIDE1LCAgIDQyLCAgIDQzLCAgIDQ0LCAgIDUxLCAgIDEyLCAgIDk4
LCAgIDk4LCAgIDk4LAotCi0gICAgICAgOTgsICAgODIsICAgODMsICAgODQsICAgOTgsICAgMzAs
ICAgNzQsICAgMjUsICAgODUsICAgODYsCi0gICAgICAgODcsICAgIDcsICAgNzksICAgODAsICAg
ODEsICAgOTgsICAgMjQsICAgNzcsICAgOTgsICAgOTgsCi0gICAgICAgMzksICAgNDAsICAgNDEs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAg
OTgsICAgNzEsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAg
ICAgOTgsICAgNTIsICAgOTgsICAgOTcsICAgOTgsICAgOTgsICAgMTksICAgOTgsICAgOTgsICAg
OTgsCi0gICAgICAgOTgsICAgNzIsICAgNjYsICAgNjEsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgNzgsCi0gICAgICAgNTcsICAgOTgsICAgNjQsICAgMzIsICAgOTgsICAgOTQsICAg
NjUsICAgNDksICAgNzYsICAgNTksCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgNjAsICAgMzEsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAg
IDgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNTQsCi0gICAgICAgMTMsICAgOTgs
ICAgMTQsICAgOTgsICAgOTgsICAgMTYsICAgNjcsICAgOTgsICAgOTgsICAgOTgsCi0KLSAgICAg
ICA2MiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA1NSwgICA3NSwgICA2
MywKLSAgICAgICAxMSwgICA2OCwgICAgNiwgICA5NiwgICAxMCwgICA4OCwgICA0NSwgICA4OSwg
ICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA0NiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA0OCwgICA5OCwKLSAgICAgICA5MiwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5MCwgICA5OCwgICA5MSwgICA5OCwKLSAgICAgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA0NywgICA5MywgICAgMAorICAgICAgICAwLCAgICAwLCAgMTQ4
LCAgMTQ2LCAgMTQ1LCAgMTQ1LCAgMTMyLCAgMTM4LCAgMTQzLCAgMTI3LAorICAgICAgMTI4LCAg
MTM2LCAgMTM1LCAgMTI0LCAgMTMzLCAgMTMxLCAgMTM3LCAgIDk2LCAgIDk2LCAgMTI1LAorICAg
ICAgMTIxLCAgMTM5LCAgMTI2LCAgMTQwLCAgMTQ0LCAgIDkzLCAgMTI5LCAgMTMwLCAgMTQyLCAg
IDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgMTIyLAorICAgICAgMTQxLCAgMTIzLCAgMTM0LCAgMTE4LCAgMTA0
LCAgMTIzLCAgMTEyLCAgMTA3LCAgMTAyLCAgMTEwLAorICAgICAgMTAwLCAgMTExLCAgMTAxLCAg
IDk5LCAgMTAzLCAgIDk4LCAgIDk1LCAgIDk2LCAgICAwLCAgICAwLAorICAgICAgMTMwLCAgMTIy
LCAgMTI5LCAgMTE5LCAgMTE1LCAgMTE3LCAgMTE2LCAgMTIwLCAgIDkzLCAgMTA4LAorICAgICAg
MTE0LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LAorICAgICAgIDkzLCAgIDEyLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLAorCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgMTUsICAg
MTcsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAxMDksICAxMTMsICAgIDAsICAgOTgsICAgIDAsICAgIDAsCisgICAgICAg
OTcsICAgOTQsICAxMDUsICAxMDYsICAgNDUsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
CisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgMTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgMjEsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgMTgsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisKKyAgICAgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICAgMCwgICA5OSwgICAgMCwgICA5OCwgICA5MywK
KyAgICAgICAyMywgICA5MywgICA5MywgICA5MCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywKKyAgICAgICA5MywgICAxNiwgICA0OCwgICA5MywgICA5MywgICA5MywgICA2NCwg
ICA5MywgICA5MywgICA1MywKKyAgICAgICA2OCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA2NSwKKyAgICAgICAgNCwgICAyOCwgICAyOSwgICAzMCwg
ICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA1MSwg
ICAyNCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICAzMSwgICAzMiwKKyAg
ICAgICAzMywgICAyMiwgICA5MywgICA5MywgICA5MywgICAxMCwgICAzNywgICAzOCwgICAzOSwg
ICA0NiwKKyAgICAgICAgNywgICA5MywgICA5MywgICA5MywgICA5MywgICA3NywgICA3OCwgICA3
OSwgICA5MywgICAyNSwKKyAgICAgICA2OSwgICAyMCwgICA4MCwgICA4MSwgICA4MiwgICAgMiwg
ICA3NCwgICA3NSwgICA3NiwgICA5MywKKworICAgICAgIDE5LCAgIDcyLCAgIDkzLCAgIDkzLCAg
IDM0LCAgIDM1LCAgIDM2LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDY2LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDQ3LCAgIDkzLCAgIDkyLCAgIDkzLCAgIDkzLAorICAg
ICAgIDE0LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDY3LCAgIDYxLCAgIDU2LCAgIDkzLCAg
IDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDczLCAgIDUyLCAgIDkzLCAgIDU5LCAgIDI3
LCAgIDkzLCAgIDg5LAorICAgICAgIDYwLCAgIDQ0LCAgIDcxLCAgIDU0LCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDU1LCAgIDI2LCAgIDkz
LCAgIDkzLCAgIDkzLCAgICAzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAg
IDQ5LCAgICA4LCAgIDkzLCAgICA5LCAgIDkzLCAgIDkzLCAgIDExLAorICAgICAgIDYyLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDU3LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAg
IDkzLCAgIDUwLCAgIDcwLCAgIDU4LCAgICA2LCAgIDYzLCAgICAxLCAgIDkxLCAgICA1LCAgIDgz
LAorCisgICAgICAgNDAsICAgODQsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNDEsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgNDMsICAgOTMsICAgODcs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgODUsICAgOTMsICAgODYsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNDIsCisgICAgICAgODgsICAgIDAK
ICAgICB9IDsKIAogc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQpAQCAt
NDgxLDIxMiArNDgwLDE5OCBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfZWNbMjU2
XSA9CiAKIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9tZXRhWzY4XSA9CiAgICAgeyAg
IDAsCi0gICAgICAgIDEsICAgIDEsICAgIDIsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsCi0gICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMsICAgIDMsICAg
IDMsICAgIDMsICAgIDMsICAgIDMsCi0gICAgICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDMsICAgIDMsICAgIDMsCi0gICAgICAgIDMsICAgIDQsICAgIDQsICAg
IDQsICAgIDQsICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAgIDMsCi0gICAgICAgIDMsICAgIDMs
ICAgIDMsICAgIDMsICAgIDMsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsCi0gICAgICAg
IDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQs
Ci0gICAgICAgIDQsICAgIDQsICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAgIDEKKyAgICAgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwK
KyAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAg
MiwgICAgMiwKKyAgICAgICAgMiwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMiwgICAgMiwgICAgMiwKKyAgICAgICAgMiwgICAgMywgICAgMywgICAgMywgICAgMywgICAg
MywgICAgMSwgICAgMSwgICAgMSwgICAgMiwKKyAgICAgICAgMiwgICAgMiwgICAgMiwgICAgMiwg
ICAgMiwgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAgMywgICAg
MywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywg
ICAgMywgICAgMywgICAgMSwgICAgMSwgICAgMSwgICAgMQogICAgIH0gOwogCi1zdGF0aWMgeXlj
b25zdCBmbGV4X2ludDE2X3QgeXlfYmFzZVs0NjRdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50
MTZfdCB5eV9iYXNlWzQ0NV0gPQogICAgIHsgICAwLAotICAgICAgICAwLCAgICAwLCAgIDY1LCAg
IDY2LCAgIDc1LCAgICAwLCAgNjgwLCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjU0LCAgIDQ1
LCAgMTM3LCAgNjgxLCAgNjgxLCAgNjUzLCAgMTM0LCAgNjgxLCAgMTMzLCAgMTMxLAotICAgICAg
MTQ2LCAgMTU5LCAgMTY4LCAgNjUxLCAgNjgxLCAgMTg2LCAgNjUxLCAgIDQ3LCAgNjgxLCAgICAw
LAotICAgICAgNjgxLCAgNjgxLCAgMTI4LCAgMTAwLCAgMTEwLCAgMTUyLCAgMTU2LCAgMTQ2LCAg
MTY2LCAgNjIyLAotICAgICAgMTczLCAgMTA5LCAgNjIxLCAgMTI2LCAgMTc3LCAgNjE1LCAgMTc4
LCAgNjI4LCAgMTg3LCAgMTg0LAotICAgICAgMTQxLCAgMTk3LCAgNjI0LCAgNjgxLCAgMTU3LCAg
NjgxLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjU2LAotICAgICAgNjgxLCAgNjgxLCAgICAwLCAgNjgx
LCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjgxLCAgNjgxLCAg
NjgxLCAgMjM2LCAgNjgxLCAgICAwLCAgNjgxLCAgMjQzLCAgMjczLCAgMjgyLAotICAgICAgMzA0
LCAgICAwLCAgMzE0LCAgNjgxLCAgNjgxLCAgNjgxLCAgNjQ0LCAgNjgxLCAgNjgxLCAgNjgxLAot
ICAgICAgNjQzLCAgICAwLCAgNjgxLCAgNjgxLCAgNjE2LCAgNjA5LCAgNjEyLCAgNjIwLCAgNjE5
LCAgNjA2LAotCi0gICAgICA2MjEsICA2MDgsICA2MTQsICA2MDIsICA1OTksICA2MTIsICA1OTks
ICA1OTYsICA1OTYsICA2MDIsCi0gICAgICA1OTAsICAxODksICA1OTUsICA2MDUsICA1OTEsICA1
OTcsICA2MDAsICA2MDEsICAgIDAsICAyMTYsCi0gICAgICA2MDAsICAxODgsICA1ODYsICA1OTks
ICA1OTAsICA1OTIsICA1ODIsICA1OTYsICA1OTMsICA1OTUsCi0gICAgICA1NzgsICA1ODMsICA1
ODAsICA1NjksICAxODMsICA1NzcsICA1ODIsICA1NzgsICA1ODAsICA1NjksCi0gICAgICA1NzIs
ICAyMjAsICA1NzcsICA1NjksICA1ODEsICAxNzYsICA1NzQsICA2ODEsICA2ODEsICA2ODEsCi0g
ICAgICAgIDAsICAzMzEsICAgIDAsICAzNDQsICAzNjEsICAyOTAsICAzNzQsICAgIDAsICA2ODEs
ICA2ODEsCi0gICAgICAgIDAsICA1NjYsICA1NzAsICA1NzksICA1NzYsICA1NjAsICA1NjAsICAy
MTUsICA1NzUsICA1NzIsCi0gICAgICA1NzIsICA1NzAsICA1NjcsICA1NTksICA1NjUsICA1NTIs
ICA1NjMsICA1NDksICA1NjUsICAgIDAsCi0gICAgICA1NjIsICA1NTAsICA1NTcsICA1NTQsICA1
NTgsICA1NTEsICA1NDAsICA1MzksICA1NTIsICA1NTUsCi0gICAgICA1NTIsICA1NDcsICA1Mzgs
ICAyNjAsICA1NDMsICA1NDYsICA1MzcsICA1MzQsICA1MzgsICA1NDQsCi0KLSAgICAgIDUzNSwg
IDUyNiwgIDUyOSwgIDUyNywgIDUzNywgIDUyMywgIDUyMSwgIDUzNCwgIDUyMCwgIDUyMiwKLSAg
ICAgIDUxOSwgIDUzMCwgIDUyOSwgIDI4MywgIDUyNCwgIDUxOSwgIDUwOCwgIDI2NCwgIDUyNiwg
IDUyOCwKLSAgICAgIDUxNywgIDM4MSwgIDM4OCwgIDM5NSwgIDQwMiwgIDUxOCwgICAgMCwgIDUx
NiwgIDMyMCwgICAgMCwKLSAgICAgIDUwOCwgIDUwNiwgIDUxNCwgIDUwMywgIDUyMCwgIDUwOSwg
IDMzNiwgICAgMCwgICAgMCwgIDUwMywKLSAgICAgIDUxMywgIDUxMywgICAgMCwgIDQ5OCwgIDM0
OSwgICAgMCwgICAgMCwgIDUwMCwgIDM2NiwgIDUwMSwKLSAgICAgIDQ5NSwgIDQ5NCwgIDQ5NSwg
IDQ5NCwgIDQwNywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAgICAgIDQ5MCwgIDQ5
MSwgIDQ5NiwgIDQ4NywgIDUwMCwgIDQ5NSwgIDQ5NCwgIDQ4NiwgIDQ5MCwgIDQ4MiwKLSAgICAg
IDQ4NSwgIDQ4OSwgIDQ5NCwgIDQ4MCwgIDQ5MiwgIDQ4MywgICAgMCwgICAgMCwgIDQ4OSwgIDQ3
OCwKLSAgICAgIDQ3OCwgIDQ4MywgIDQ4MiwgIDQ3OSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwg
IDQ2OSwgIDQ4MSwKLSAgICAgIDQ4MywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAg
MCwgIDQ3MSwgIDQ3MiwgIDQ2NiwKLQotICAgICAgNDc2LCAgICAwLCAgICAwLCAgICAwLCAgNDY3
LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAg
ICAwLCAgICAwLCAgNDc0LCAgICAwLCAgICAwLCAgNDcyLCAgNDY4LAotICAgICAgICAwLCAgICAw
LCAgICAwLCAgNDY0LCAgNDYwLCAgNDY1LCAgNDU1LCAgNDY4LCAgNDU0LCAgNDY3LAotICAgICAg
NDU2LCAgNDYzLCAgICAwLCAgNDYxLCAgNDYzLCAgNDQ3LCAgNDQ5LCAgNDU1LCAgNDYxLCAgNDU2
LAotICAgICAgNDQ0LCAgICAwLCAgNDQ2LCAgICAwLCAgNDQ1LCAgNDQ4LCAgICAwLCAgNDM3LCAg
NDM2LCAgNDM2LAotICAgICAgNDQ5LCAgICAwLCAgNDUxLCAgICAwLCAgNDUwLCAgNDQ5LCAgNDM0
LCAgNDQ3LCAgNDM0LCAgICAwLAotICAgICAgICAwLCAgNDM3LCAgICAwLCAgICAwLCAgNDI5LCAg
ICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLAotICAgICAgNDI2LCAgNDM3LCAgNDMwLCAgNDM2
LCAgNDMzLCAgNDI4LCAgNDIwLCAgNDMyLCAgICAwLCAgICAwLAotICAgICAgNDI1LCAgNDMyLCAg
NDIxLCAgICAwLCAgNDMwLCAgNDI3LCAgNDE3LCAgNDExLCAgNDI1LCAgICAwLAotICAgICAgICAw
LCAgNDI1LCAgICAwLCAgNDIzLCAgNDIyLCAgICAwLCAgICAwLCAgNDIxLCAgNDA3LCAgNDE5LAot
Ci0gICAgICAgIDAsICA0MTAsICA0MzEsICA0MzAsICA0MjksICA0MDAsICAzOTYsICAgIDAsICAg
IDAsICAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0MjEsICAyNTAs
ICA0MjEsICA0MTEsICAzODQsCi0gICAgICAzOTIsICAzOTQsICAzOTAsICAzOTIsICAzOTEsICAz
OTAsICAzOTMsICAzOTAsICAzOTEsICAzODgsCi0gICAgICAgIDAsICAzMzIsICAzNDMsICAzMTcs
ICAzMjksICAzMTMsICAzMTcsICAzMDQsICAzMjEsICAyOTEsCi0gICAgICAgIDAsICAzMDIsICAy
ODAsICAyNzEsICAyNTUsICAyNjIsICAgIDAsICAyNTYsICAgIDAsICAyMzIsCi0gICAgICAyMDYs
ICAyMTIsICAxNDgsICAxNTksICAxMTMsICAgIDAsICAgIDAsICA2ODEsICA0NDIsICA0NDQsCi0g
ICAgICA0NDYsICA0NTAsICAxNjEKKyAgICAgICAgMCwgICAgMCwgIDU4NywgIDU4OCwgIDU4OCwg
IDU4OCwgIDU2MSwgICA0MywgICA2NCwgIDU4OCwKKyAgICAgIDU4OCwgIDU2MCwgICA2MSwgIDU4
OCwgICA2MCwgICA1OCwgIDU1OSwgICA3NywgICA4NiwgIDU1NywKKyAgICAgIDU4OCwgIDEwNCwg
IDU1NywgICA1NSwgIDU4OCwgICAgMCwgIDU4OCwgIDU4OCwgICA3NSwgICAyNiwKKyAgICAgICA1
NywgICA4MiwgICA4MywgICA3MywgICA5MywgIDUyOCwgICA5NywgICA5NSwgIDUyNywgICA0NCwK
KyAgICAgICA3MSwgIDUyMSwgIDEwNCwgIDUzNCwgIDExMCwgIDExNiwgICAzNSwgIDExMSwgIDUz
MCwgIDU4OCwKKyAgICAgIDExNCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwg
IDU4OCwgIDU4OCwgIDU4OCwKKyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDE2NSwgIDU4OCwgIDE3
MiwgIDIwMiwgIDIxMSwgIDIzMywgICAgMCwKKyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDU1MSwg
IDU4OCwgIDU4OCwgIDU4OCwgIDU1MCwgICAgMCwgIDU4OCwKKyAgICAgIDU4OCwgIDUyMywgIDUx
NiwgIDUxOSwgIDUyNywgIDUyNiwgIDUxMywgIDUyOCwgIDUxNSwgIDUyMSwKKyAgICAgIDUwOSwg
IDUwNiwgIDUxOSwgIDUwNiwgIDUwMywgIDUwMywgIDUwOSwgIDQ5NywgIDEwOCwgIDUwMiwKKwor
ICAgICAgNTEyLCAgNDk4LCAgNTA0LCAgNTA3LCAgNTA4LCAgICAwLCAgMTQ1LCAgNTA3LCAgMTEz
LCAgNDkzLAorICAgICAgNTA2LCAgNDk3LCAgNDk5LCAgNDg5LCAgNTAzLCAgNTAwLCAgNTAyLCAg
NDg1LCAgNDkwLCAgNDg3LAorICAgICAgNDc2LCAgMTU3LCAgNDg0LCAgNDg5LCAgNDg1LCAgNDg3
LCAgNDc2LCAgNDc5LCAgMTE4LCAgNDg0LAorICAgICAgNDc2LCAgNDg4LCAgIDcwLCAgNDgxLCAg
NTg4LCAgNTg4LCAgMjQ2LCAgMjUzLCAgMjcwLCAgMjE5LAorICAgICAgMjgzLCAgICAwLCAgNTg4
LCAgNTg4LCAgICAwLCAgNDczLCAgNDc3LCAgNDg2LCAgNDgzLCAgNDY3LAorICAgICAgNDY3LCAg
MTE5LCAgNDgyLCAgNDc5LCAgNDc5LCAgNDc3LCAgNDc0LCAgNDY2LCAgNDcyLCAgNDU5LAorICAg
ICAgNDcwLCAgNDU2LCAgNDcyLCAgICAwLCAgNDY5LCAgNDU3LCAgNDY0LCAgNDYxLCAgNDY1LCAg
NDU4LAorICAgICAgNDQ3LCAgNDQ2LCAgNDU5LCAgNDYyLCAgNDU5LCAgNDU0LCAgNDQ1LCAgMTg4
LCAgNDUwLCAgNDUzLAorICAgICAgNDQ0LCAgNDQxLCAgNDQ1LCAgNDUxLCAgNDQyLCAgNDMzLCAg
NDM2LCAgNDM0LCAgNDQ0LCAgNDMwLAorICAgICAgNDI4LCAgNDQxLCAgNDI3LCAgNDI5LCAgNDI2
LCAgNDM3LCAgNDM2LCAgMTI0LCAgNDMxLCAgNDI2LAorCisgICAgICA0MTUsICAyNTgsICA0MzMs
ICA0MzUsICA0MjQsICAyOTAsICAyOTcsICAzMDQsICAzMTEsICA0MjUsCisgICAgICAgIDAsICA0
MjMsICAyNzUsICAgIDAsICA0MTUsICA0MTMsICA0MjEsICA0MTAsICA0MjcsICA0MTYsCisgICAg
ICAzMTYsICAgIDAsICAgIDAsICA0MTAsICA0MjAsICA0MjAsICAgIDAsICA0MDUsICAzMTksICAg
IDAsCisgICAgICAgIDAsICA0MDcsICAzMjIsICA0MDgsICA0MDIsICA0MDEsICA0MDIsICA0MDEs
ICAzMjUsICAgIDAsCisgICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzOTcsICAzOTgsICA0
MDMsICAzOTQsICA0MDcsICA0MDIsCisgICAgICA0MDEsICAzOTMsICAzOTcsICAzODksICAzOTIs
ICAzOTYsICA0MDEsICAzODcsICAzOTksICAzOTAsCisgICAgICAgIDAsICAgIDAsICAzOTYsICAz
ODUsICAzODUsICAzOTAsICAzODksICAzODYsICAgIDAsICAgIDAsCisgICAgICAgIDAsICAgIDAs
ICAzNzYsICAzODgsICAzOTAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsCisgICAgICAg
IDAsICAzNzgsICAzNzksICAzNzMsICAzODMsICAgIDAsICAgIDAsICAgIDAsICAzNzQsICAgIDAs
CisgICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAg
IDAsICAzODEsCisKKyAgICAgICAgMCwgICAgMCwgIDM3OSwgIDM3NSwgICAgMCwgICAgMCwgICAg
MCwgIDM3MSwgIDM2NywgIDM3MiwKKyAgICAgIDM2MiwgIDM3NSwgIDM2MSwgIDM3NCwgIDM2Mywg
IDM3MCwgICAgMCwgIDM2OCwgIDM3MCwgIDM1NCwKKyAgICAgIDM1NiwgIDM2MiwgIDM2OCwgIDM2
MywgIDM1MSwgICAgMCwgIDM1MywgICAgMCwgIDM1MiwgIDM1NSwKKyAgICAgICAgMCwgIDM0NCwg
IDM0MywgIDM0MywgIDM1NiwgICAgMCwgIDM1OCwgICAgMCwgIDM1NywgIDM1NiwKKyAgICAgIDM0
MSwgIDM1NCwgIDM0MSwgICAgMCwgICAgMCwgIDM0NCwgICAgMCwgICAgMCwgIDMzNiwgICAgMCwK
KyAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDMzMywgIDM0NCwgIDMzNywgIDM0MywgIDM0
MCwgIDMzNSwKKyAgICAgIDMyNywgIDMzOSwgICAgMCwgICAgMCwgIDMzMiwgIDMzOSwgIDMyOCwg
ICAgMCwgIDMzNywgIDMzNCwKKyAgICAgIDMyNCwgIDMyOSwgIDMzMiwgICAgMCwgICAgMCwgIDMz
MiwgICAgMCwgIDMzMCwgIDMyOSwgICAgMCwKKyAgICAgICAgMCwgIDMyOCwgIDMxNCwgIDMyNiwg
ICAgMCwgIDMxNywgIDMzOCwgIDMzNywgIDMzNiwgIDMwNywKKyAgICAgIDMwMywgICAgMCwgICAg
MCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDMyOCwKKworICAgICAgMTY2
LCAgMzI1LCAgMzE2LCAgMjk5LCAgMzA4LCAgMzEwLCAgMzA2LCAgMzA4LCAgMzA3LCAgMzA2LAor
ICAgICAgMzA5LCAgMzA2LCAgMjU2LCAgMjUzLCAgICAwLCAgMjI4LCAgMjM4LCAgMjIyLCAgMjM1
LCAgMjAzLAorICAgICAgMjA3LCAgMjA0LCAgMjEyLCAgMTkxLCAgICAwLCAgMjAxLCAgMTY1LCAg
MTY3LCAgMTUzLCAgMTYxLAorICAgICAgICAwLCAgMTcwLCAgICAwLCAgMTc1LCAgMTUxLCAgMTQx
LCAgMTAwLCAgMTE0LCAgIDU5LCAgICAwLAorICAgICAgICAwLCAgNTg4LCAgMzU5LCAgMTEzCiAg
ICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9kZWZbNDY0XSA9CitzdGF0
aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfZGVmWzQ0NV0gPQogICAgIHsgICAwLAotICAgICAg
NDU4LCAgICAxLCAgNDU5LCAgNDU5LCAgNDU4LCAgICA1LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDYwLAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAg
NDYwLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4
LCAgNDU4LCAgNDYxLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAot
ICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDYyLCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LAotICAgICAgNDU4LCAgNDYzLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDYwLCAgNDU4LCAgNDU4LCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0g
ICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NTgsICA0NTgsICA0NTgsCi0gICAgICA0NjEsICA0NTgsICA0NjIsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NjMsICA0NTgsICA0NTgsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAg
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsCi0KLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAgICAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAot
ICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0g
ICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICAg
IDAsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgKKyAgICAgIDQ0MiwgICAgMSwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwK
KyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0NCwKKyAgICAgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwKKyAg
ICAgIDQ0MiwgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywKKworICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAg
ICAgNDQyLCAgNDQ0LCAgNDQyLCAgNDQyLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorCisgICAg
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
CisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywK
KyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAg
ICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywKKworICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAg
ICAwLCAgNDQyLCAgNDQyCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5
eV9ueHRbNzQ5XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0WzY1Nl0gPQog
ICAgIHsgICAwLAotICAgICAgICA4LCAgICA5LCAgIDEwLCAgIDExLCAgIDEyLCAgIDEzLCAgIDE0
LCAgIDE1LCAgIDE2LCAgIDE3LAotICAgICAgIDE4LCAgIDE5LCAgIDIwLCAgIDIxLCAgIDIyLCAg
IDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLAotICAgICAgIDIzLCAgIDI0LCAgIDI1LCAgIDI2
LCAgIDI3LCAgIDI4LCAgIDI5LCAgIDMwLCAgIDMwLCAgIDMwLAotICAgICAgIDMwLCAgIDMwLCAg
IDMwLCAgIDMwLCAgIDMwLCAgIDMwLCAgIDMxLCAgIDMyLCAgIDMzLCAgIDM0LAotICAgICAgIDM1
LCAgIDM2LCAgIDM3LCAgIDM4LCAgIDM5LCAgIDQwLCAgIDQxLCAgIDQyLCAgIDMwLCAgIDQzLAot
ICAgICAgIDQ0LCAgIDQ1LCAgIDQ2LCAgIDQ3LCAgIDQ4LCAgIDQ5LCAgIDUwLCAgIDUxLCAgIDUy
LCAgIDUzLAotICAgICAgIDMwLCAgIDMwLCAgIDMwLCAgIDU0LCAgIDU1LCAgIDU2LCAgIDU3LCAg
IDU5LCAgIDU5LCAgIDY1LAotICAgICAgIDY2LCAgIDkwLCAgIDkxLCAgIDYwLCAgIDYwLCAgICA4
LCAgIDYxLCAgIDYyLCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4LCAgICA4LCAg
ICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4
LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAotCi0gICAgICAgIDgs
ICAgIDgsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0g
ICAgICAgNjMsICAgIDgsICAgIDgsICAgIDgsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMs
ICAgNjMsCi0gICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAg
NjMsICAgNjMsICAgNjMsCi0gICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMs
ICAgNjMsICAgNjMsICAgIDgsICAgIDgsCi0gICAgICAgIDgsICAgIDgsICAgNjcsICAgNzAsICAg
NzIsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsCi0gICAgICAgNzQsICAgNzQsICAgOTMs
ICAxMTksICAgNzUsICAgOTUsICAgOTYsICAgNzMsICAgNzEsICAgNzYsCi0gICAgICAxMjAsICAg
NjgsICAgOTcsICAxNTgsICAgOTgsICAxMjMsICAgOTQsICAxMjEsICAgOTksICAxMjQsCi0gICAg
ICAgNzcsICAgNzgsICA0NTcsICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAg
ODAsCi0gICAgICAgNzgsICAxNDgsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMs
ICAgODMsICAgODEsCi0gICAgICAgODUsICAxMDAsICAxNDIsICA0NTYsICAgODIsICAxMDcsICAx
NDMsICAxMDgsICAgODEsICAxMDMsCi0KLSAgICAgIDQ1NSwgIDEwMSwgICA4MSwgIDEwNCwgIDEw
MiwgIDExMCwgIDEwOSwgICA4NiwgIDEwNSwgICA4NywKLSAgICAgICA4OCwgICA4MSwgIDExNiwg
IDExMSwgIDEwNiwgIDExMiwgIDEyNSwgIDEyOCwgIDExMywgICA4MiwKLSAgICAgIDExNywgIDE0
OSwgIDIwNiwgIDIxOSwgIDExNCwgIDIyMCwgIDEzMiwgIDEzOCwgIDE3OCwgIDEyNiwKLSAgICAg
IDEzOSwgIDExOCwgIDEyOSwgIDEzMywgIDEzNCwgIDEzMCwgIDE0NCwgIDIwNywgIDE0MCwgIDE5
MiwKLSAgICAgIDE0NSwgIDE3OSwgIDQ1NCwgIDEzNSwgIDEzNiwgIDE0MSwgIDEzNywgIDE5Mywg
IDQ1MywgIDE0NiwKLSAgICAgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3
NCwgIDE1NCwgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDQ1Miwg
IDE4NiwgIDE1MiwgIDIxNCwgIDE4NywgIDE4OCwKLSAgICAgIDIzMiwgIDIzMywgIDE4OSwgIDE1
NSwgIDE5MCwgIDIxNSwgIDI1OCwgIDI1OSwgIDI2MCwgIDE1MiwKLSAgICAgIDI4NSwgIDI4Niwg
IDI4NywgIDQyMiwgIDQyMywgICA3OCwgIDE1NSwgICA3OSwgICA3OSwgICA3OSwKLSAgICAgICA3
OSwgICA3OSwgICA3OSwgICA4MCwgICA3OCwgIDQ1MSwgICA4MCwgICA4MCwgICA4MCwgICA4MCwK
LQotICAgICAgIDgwLCAgIDgwLCAgIDgwLCAgIDgxLCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAg
MTU3LCAgMTU3LAotICAgICAgMTU3LCAgNDUwLCAgIDgxLCAgMTU2LCAgNDQ5LCAgMTU2LCAgIDgx
LCAgNDQ4LCAgMTU3LCAgMTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAg
IDgxLCAgIDc4LCAgMjgwLCAgIDgzLCAgIDgzLAotICAgICAgIDgzLCAgIDgzLCAgIDgzLCAgIDgz
LCAgIDgzLCAgMjgxLCAgMjkzLCAgMjk0LCAgMjk1LCAgNDQ3LAotICAgICAgMjIyLCAgNDQ2LCAg
MjIyLCAgNDQ1LCAgIDgxLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLAotICAgICAgMjIz
LCAgMjIzLCAgMzAyLCAgMzAzLCAgMzA0LCAgNDQ0LCAgNDQzLCAgIDgxLCAgMTU0LCAgMTU0LAot
ICAgICAgMTU0LCAgMTU0LCAgMTU0LCAgMTU0LCAgMTU0LCAgMzA5LCAgMzEwLCAgMzExLCAgNDQy
LCAgNDQxLAotICAgICAgMjI0LCAgNDQwLCAgMjI0LCAgNDM5LCAgMTU1LCAgMjI1LCAgMjI1LCAg
MjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMzEzLCAgMzE0LCAgMzE1LCAgNDM4
LCAgNDM3LCAgMTU1LCAgMTU3LCAgMTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAg
MTU3LCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLAotCi0gICAgICAyMjMsICAyMjMsICAy
MjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjUsCi0gICAgICAyMjUs
ICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsCi0g
ICAgICAyMjUsICAyMjUsICAyMjUsICAzMjEsICAzMjIsICAzMjMsICA0MDMsICA0MDQsICA0MDUs
ICA0MzYsCi0gICAgICA0MzUsICA0MzQsICA0MzMsICA0MzIsICA0MzEsICA0MzAsICA0MjksICA0
MjgsICA0MjcsICA0MDYsCi0gICAgICA0MjYsICA0MDcsICAgNTgsICAgNTgsICAgNTgsICAgNTgs
ICAgOTIsICAgOTIsICAxNTEsICAxNTEsCi0gICAgICAxNTMsICA0MjUsICAxNTMsICAxNTMsICA0
MjQsICA0MjEsICA0MjAsICA0MTksICA0MTgsICA0MTcsCi0gICAgICA0MTYsICA0MTUsICA0MTQs
ICA0MTMsICA0MTIsICA0MTEsICA0MTAsICA0MDksICA0MDgsICA0MDIsCi0gICAgICA0MDEsICA0
MDAsICAzOTksICAzOTgsICAzOTcsICAzOTYsICAzOTUsICAzOTQsICAzOTMsICAzOTIsCi0gICAg
ICAzOTEsICAzOTAsICAzODksICAzODgsICAzODcsICAzODYsICAzODUsICAzODQsICAzODMsICAz
ODIsCi0gICAgICAzODEsICAzODAsICAzNzksICAzNzgsICAzNzcsICAzNzYsICAzNzUsICAzNzQs
ICAzNzMsICAzNzIsCi0KLSAgICAgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2NywgIDM2Niwg
IDM2NSwgIDM2NCwgIDM2MywgIDM2MiwKLSAgICAgIDM2MSwgIDM2MCwgIDM1OSwgIDM1OCwgIDM1
NywgIDM1NiwgIDM1NSwgIDM1NCwgIDM1MywgIDM1MiwKLSAgICAgIDM1MSwgIDM1MCwgIDM0OSwg
IDM0OCwgIDM0NywgIDM0NiwgIDM0NSwgIDM0NCwgIDM0MywgIDM0MiwKLSAgICAgIDM0MSwgIDM0
MCwgIDMzOSwgIDMzOCwgIDMzNywgIDMzNiwgIDMzNSwgIDMzNCwgIDMzMywgIDMzMiwKLSAgICAg
IDMzMSwgIDMzMCwgIDMyOSwgIDMyOCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMCwgIDMx
OSwKLSAgICAgIDMxOCwgIDMxNywgIDMxNiwgIDMxMiwgIDMwOCwgIDMwNywgIDMwNiwgIDMwNSwg
IDMwMSwgIDMwMCwKLSAgICAgIDI5OSwgIDI5OCwgIDI5NywgIDI5NiwgIDI5MiwgIDI5MSwgIDI5
MCwgIDI4OSwgIDI4OCwgIDI4NCwKLSAgICAgIDI4MywgIDI4MiwgIDI3OSwgIDI3OCwgIDI3Nywg
IDI3NiwgIDI3NSwgIDI3NCwgIDI3MywgIDI3MiwKLSAgICAgIDI3MSwgIDI3MCwgIDI2OSwgIDI2
OCwgIDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2MiwKLSAgICAgIDI2MSwgIDI1Nywg
IDI1NiwgIDI1NSwgIDI1NCwgIDI1MywgIDI1MiwgIDI1MSwgIDI1MCwgIDI0OSwKLQotICAgICAg
MjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAgMjQ0LCAgMjQzLCAgMjQyLCAgMjQxLCAgMjQwLCAgMjM5
LAotICAgICAgMjM4LCAgMjM3LCAgMjM2LCAgMjM1LCAgMjM0LCAgMjMxLCAgMjMwLCAgMjI5LCAg
MjI4LCAgMjI3LAotICAgICAgMjI2LCAgMjIxLCAgMjE4LCAgMjE3LCAgMjE2LCAgMjEzLCAgMjEy
LCAgMjExLCAgMjEwLCAgMjA5LAotICAgICAgMjA4LCAgMjA1LCAgMjA0LCAgMjAzLCAgMjAyLCAg
MjAxLCAgMjAwLCAgMTk5LCAgMTk4LCAgMTk3LAotICAgICAgMTk2LCAgMTk1LCAgMTk0LCAgMTkx
LCAgMTg1LCAgMTg0LCAgMTgzLCAgMTgyLCAgMTgxLCAgMTgwLAotICAgICAgMTc3LCAgMTc2LCAg
MTc1LCAgMTc0LCAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LAotICAgICAgMTY3
LCAgMTY2LCAgMTY1LCAgMTY0LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTUwLAot
ICAgICAgMTQ3LCAgMTMxLCAgMTI3LCAgMTIyLCAgMTE1LCAgIDg5LCAgIDg0LCAgIDY5LCAgIDY0
LCAgNDU4LAotICAgICAgICA3LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0g
ICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0
NTgKKyAgICAgICAgNCwgICAgNSwgICAgNiwgICAgNywgICAgOCwgICAgOSwgICAxMCwgICAxMSwg
ICAxMiwgICAxMywKKyAgICAgICAxNCwgICAxNSwgICAxNiwgICAxNywgICAxOCwgICAxOSwgICAx
OSwgICAxOSwgICAxOSwgICAxOSwKKyAgICAgICAxOSwgICAyMCwgICAyMSwgICAyMiwgICAyMywg
ICAyNCwgICAyNSwgICAyNiwgICAyNiwgICAyNiwKKyAgICAgICAyNiwgICAyNiwgICAyNiwgICAy
NiwgICAyNiwgICAyNiwgICAyNywgICAyOCwgICAyOSwgICAzMCwKKyAgICAgICAzMSwgICAzMiwg
ICAzMywgICAzNCwgICAzNSwgICAzNiwgICAzNywgICAzOCwgICAyNiwgICAzOSwKKyAgICAgICA0
MCwgICA0MSwgICA0MiwgICA0MywgICA0NCwgICA0NSwgICA0NiwgICA0NywgICA0OCwgICA0OSwK
KyAgICAgICAyNiwgICAyNiwgICAyNiwgICA1MCwgICA1MSwgICA1MiwgICA1MywgICA1NSwgICA1
NiwgICA1NywKKyAgICAgICA2MCwgICA2MiwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwg
ICA2NCwgICA2NCwgICA3NywKKyAgICAgICA3OCwgICA4MiwgICA4MywgIDExMCwgICA2MywgICA2
MSwgIDEyOSwgIDExMSwgICA1OCwgICA2NiwKKyAgICAgIDEzMCwgICA2NywgICA2NywgICA2Nywg
ICA2NywgICA2NywgICA2NywgICA2OCwgICA2NiwgICA4MCwKKworICAgICAgIDY4LCAgIDY4LCAg
IDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY5LCAgIDcyLCAgIDg0LAorICAgICAgMTEy
LCAgIDg1LCAgIDcwLCAgIDgxLCAgMTQyLCAgIDg2LCAgIDY5LCAgMjAzLCAgNDQxLCAgMjA0LAor
ICAgICAgIDY5LCAgIDg3LCAgIDk0LCAgMTEzLCAgIDk1LCAgIDczLCAgIDkwLCAgIDc0LCAgIDc1
LCAgIDY5LAorICAgICAgIDkxLCAgIDg4LCAgIDk3LCAgIDk2LCAgIDg5LCAgIDkyLCAgMTAzLCAg
IDcwLCAgMTM1LCAgMTA2LAorICAgICAgIDk4LCAgIDkzLCAgIDk5LCAgMTE1LCAgMTA0LCAgMTAw
LCAgMTA3LCAgMTYyLCAgNDQwLCAgMTE5LAorICAgICAgMTMxLCAgMTAxLCAgNDM5LCAgMTA4LCAg
MTMyLCAgMTA1LCAgMTIwLCAgMTIxLCAgMTE2LCAgMTI1LAorICAgICAgMTYzLCAgMTE3LCAgMTI2
LCAgMTMzLCAgMTc2LCAgMTk4LCAgMTIyLCAgMTIzLCAgMjY0LCAgMTI0LAorICAgICAgMTI3LCAg
NDM4LCAgMTc3LCAgMTk5LCAgMjE2LCAgMjE3LCAgMjY1LCAgMTI4LCAgMTM2LCAgIDY0LAorICAg
ICAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgMTM4LCAgMTM4LCAgMTM4LCAg
MTM4LAorICAgICAgMTM4LCAgMTM4LCAgMTM4LCAgNDM3LCAgMTcwLCAgMTM3LCAgMTkwLCAgMTcx
LCAgMTcyLCAgNDA2LAorCisgICAgICA0MDcsICAxNzMsICAxMzksICAxNzQsICAyNDIsICAyNDMs
ICAyNDQsICA0MzYsICAxMzcsICA0MzUsCisgICAgICA0MzQsICAxOTEsICA0MzMsICA0MzIsICAg
NjYsICAxMzksICAgNjcsICAgNjcsICAgNjcsICAgNjcsCisgICAgICAgNjcsICAgNjcsICAgNjgs
ICAgNjYsICA0MzEsICAgNjgsICAgNjgsICAgNjgsICAgNjgsICAgNjgsCisgICAgICAgNjgsICAg
NjgsICAgNjksICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsCisgICAg
ICA0MzAsICAgNjksICAxNDAsICA0MjksICAxNDAsICAgNjksICA0MjgsICAxNDEsICAxNDEsICAx
NDEsCisgICAgICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAgNjksICAyMDYsICA0MjcsICAyMDYs
ICA0MjYsICA0MjUsCisgICAgICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAy
MDcsICAxMzgsICAxMzgsICAxMzgsCisgICAgICAxMzgsICAxMzgsICAxMzgsICAxMzgsICAyNjks
ICAyNzAsICAyNzEsICA0MjQsICA0MjMsICAyMDgsCisgICAgICA0MjIsICAyMDgsICA0MjEsICAx
MzksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksCisgICAgICAyMDksICAyNzcs
ICAyNzgsICAyNzksICA0MjAsICA0MTksICAxMzksICAxNDEsICAxNDEsICAxNDEsCisKKyAgICAg
IDE0MSwgIDE0MSwgIDE0MSwgIDE0MSwgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIw
NywKKyAgICAgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywg
IDIwOSwgIDIwOSwKKyAgICAgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIw
OSwgIDIwOSwgIDIwOSwgIDIwOSwKKyAgICAgIDIwOSwgIDIwOSwgIDI4NiwgIDI4NywgIDI4OCwg
IDI5MywgIDI5NCwgIDI5NSwgIDI5NywgIDI5OCwKKyAgICAgIDI5OSwgIDMwNSwgIDMwNiwgIDMw
NywgIDM4NywgIDM4OCwgIDM4OSwgIDQxOCwgIDQxNywgIDQxNiwKKyAgICAgIDQxNSwgIDQxNCwg
IDQxMywgIDQxMiwgIDQxMSwgIDQxMCwgIDQwOSwgIDM5MCwgIDQwOCwgIDM5MSwKKyAgICAgICA3
OSwgICA3OSwgIDQwNSwgIDQwNCwgIDQwMywgIDQwMiwgIDQwMSwgIDQwMCwgIDM5OSwgIDM5OCwK
KyAgICAgIDM5NywgIDM5NiwgIDM5NSwgIDM5NCwgIDM5MywgIDM5MiwgIDM4NiwgIDM4NSwgIDM4
NCwgIDM4MywKKyAgICAgIDM4MiwgIDM4MSwgIDM4MCwgIDM3OSwgIDM3OCwgIDM3NywgIDM3Niwg
IDM3NSwgIDM3NCwgIDM3MywKKyAgICAgIDM3MiwgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2
NywgIDM2NiwgIDM2NSwgIDM2NCwgIDM2MywKKworICAgICAgMzYyLCAgMzYxLCAgMzYwLCAgMzU5
LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LCAgMzU0LCAgMzUzLAorICAgICAgMzUyLCAgMzUxLCAg
MzUwLCAgMzQ5LCAgMzQ4LCAgMzQ3LCAgMzQ2LCAgMzQ1LCAgMzQ0LCAgMzQzLAorICAgICAgMzQy
LCAgMzQxLCAgMzQwLCAgMzM5LCAgMzM4LCAgMzM3LCAgMzM2LCAgMzM1LCAgMzM0LCAgMzMzLAor
ICAgICAgMzMyLCAgMzMxLCAgMzMwLCAgMzI5LCAgMzI4LCAgMzI3LCAgMzI2LCAgMzI1LCAgMzI0
LCAgMzIzLAorICAgICAgMzIyLCAgMzIxLCAgMzIwLCAgMzE5LCAgMzE4LCAgMzE3LCAgMzE2LCAg
MzE1LCAgMzE0LCAgMzEzLAorICAgICAgMzEyLCAgMzExLCAgMzEwLCAgMzA5LCAgMzA4LCAgMzA0
LCAgMzAzLCAgMzAyLCAgMzAxLCAgMzAwLAorICAgICAgMjk2LCAgMjkyLCAgMjkxLCAgMjkwLCAg
Mjg5LCAgMjg1LCAgMjg0LCAgMjgzLCAgMjgyLCAgMjgxLAorICAgICAgMjgwLCAgMjc2LCAgMjc1
LCAgMjc0LCAgMjczLCAgMjcyLCAgMjY4LCAgMjY3LCAgMjY2LCAgMjYzLAorICAgICAgMjYyLCAg
MjYxLCAgMjYwLCAgMjU5LCAgMjU4LCAgMjU3LCAgMjU2LCAgMjU1LCAgMjU0LCAgMjUzLAorICAg
ICAgMjUyLCAgMjUxLCAgMjUwLCAgMjQ5LCAgMjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAgMjQxLCAg
MjQwLAorCisgICAgICAyMzksICAyMzgsICAyMzcsICAyMzYsICAyMzUsICAyMzQsICAyMzMsICAy
MzIsICAyMzEsICAyMzAsCisgICAgICAyMjksICAyMjgsICAyMjcsICAyMjYsICAyMjUsICAyMjQs
ICAyMjMsICAyMjIsICAyMjEsICAyMjAsCisgICAgICAyMTksICAyMTgsICAyMTUsICAyMTQsICAy
MTMsICAyMTIsICAyMTEsICAyMTAsICAyMDUsICAyMDIsCisgICAgICAyMDEsICAyMDAsICAxOTcs
ICAxOTYsICAxOTUsICAxOTQsICAxOTMsICAxOTIsICAxODksICAxODgsCisgICAgICAxODcsICAx
ODYsICAxODUsICAxODQsICAxODMsICAxODIsICAxODEsICAxODAsICAxNzksICAxNzgsCisgICAg
ICAxNzUsICAxNjksICAxNjgsICAxNjcsICAxNjYsICAxNjUsICAxNjQsICAxNjEsICAxNjAsICAx
NTksCisgICAgICAxNTgsICAxNTcsICAxNTYsICAxNTUsICAxNTQsICAxNTMsICAxNTIsICAxNTEs
ICAxNTAsICAxNDksCisgICAgICAxNDgsICAxNDcsICAxNDYsICAxNDUsICAxNDQsICAxNDMsICAx
MzQsICAxMTgsICAxMTQsICAxMDksCisgICAgICAxMDIsICAgNzYsICAgNzEsICAgNjUsICAgNTks
ICAgNTQsICA0NDIsICAgIDMsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisKKyAgICAgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MgogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzc0
OV0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1s2NTZdID0KICAgICB7ICAg
MCwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwKQEAgLTY5NCw5NSArNjc5LDg1IEBAIHN0YXRpYyB5eWNvbnN0
IGZsZXhfaW50MTZfdCB5eV9jaGtbNzQ5XSAKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKLSAg
ICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAgNCwg
ICAxMiwKLSAgICAgICAxMiwgICAyOCwgICAyOCwgICAgMywgICAgNCwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLQotICAgICAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAg
ICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICA1LAotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgIDEzLCAgIDE3LCAgIDE5LCAgIDIwLCAg
IDIwLCAgIDIwLCAgIDIwLCAgIDIwLAotICAgICAgIDIwLCAgIDIwLCAgIDMzLCAgIDQyLCAgIDIx
LCAgIDM0LCAgIDM0LCAgIDE5LCAgIDE3LCAgIDIxLAotICAgICAgIDQyLCAgIDEzLCAgIDM1LCAg
NDYzLCAgIDM1LCAgIDQ0LCAgIDMzLCAgIDQyLCAgIDM1LCAgIDQ0LAotICAgICAgIDIxLCAgIDIy
LCAgNDU1LCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLAotICAgICAg
IDIzLCAgIDU1LCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIy
LAotICAgICAgIDI2LCAgIDM2LCAgIDUxLCAgNDU0LCAgIDIyLCAgIDM4LCAgIDUxLCAgIDM4LCAg
IDIzLCAgIDM3LAotCi0gICAgICA0NTMsICAgMzYsICAgMjIsICAgMzcsICAgMzYsICAgMzksICAg
MzgsICAgMjYsICAgMzcsICAgMjYsCi0gICAgICAgMjYsICAgMjMsICAgNDEsICAgMzksICAgMzcs
ICAgMzksICAgNDUsICAgNDcsICAgMzksICAgMjIsCi0gICAgICAgNDEsICAgNTUsICAxMzUsICAx
NDYsICAgMzksICAxNDYsICAgNDksICAgNTAsICAxMTIsICAgNDUsCi0gICAgICAgNTAsICAgNDEs
ICAgNDcsICAgNDksICAgNDksICAgNDcsICAgNTIsICAxMzUsICAgNTAsICAxMjIsCi0gICAgICAg
NTIsICAxMTIsICA0NTIsICAgNDksICAgNDksICAgNTAsICAgNDksICAxMjIsICA0NTEsICAgNTIs
Ci0gICAgICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzgsICAg
NzgsICAgNzgsCi0gICAgICAgNzgsICAgNzgsICAgNzgsICAgNzgsICA0NTAsICAxMjAsICAgNzQs
ICAxNDIsICAxMjAsICAxMjAsCi0gICAgICAxNjgsICAxNjgsICAxMjAsICAgNzgsICAxMjAsICAx
NDIsICAxOTQsICAxOTQsICAxOTQsICAgNzQsCi0gICAgICAyMTgsICAyMTgsICAyMTgsICA0MTcs
ICA0MTcsICAgNzksICAgNzgsICAgNzksICAgNzksICAgNzksCi0gICAgICAgNzksICAgNzksICAg
NzksICAgNzksICAgODAsICA0NDgsICAgODAsICAgODAsICAgODAsICAgODAsCi0KLSAgICAgICA4
MCwgICA4MCwgICA4MCwgICA3OSwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwK
LSAgICAgIDE1NiwgIDQ0NiwgICA4MCwgICA4MSwgIDQ0NSwgICA4MSwgICA3OSwgIDQ0NCwgICA4
MSwgICA4MSwKLSAgICAgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MCwgICA4Mywg
IDIxNCwgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgIDIx
NCwgIDIyOSwgIDIyOSwgIDIyOSwgIDQ0MywKLSAgICAgIDE1MiwgIDQ0MiwgIDE1MiwgIDQ0MCwg
ICA4MywgIDE1MiwgIDE1MiwgIDE1MiwgIDE1MiwgIDE1MiwKLSAgICAgIDE1MiwgIDE1MiwgIDIz
NywgIDIzNywgIDIzNywgIDQzOSwgIDQzOCwgICA4MywgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwg
IDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDI0NSwgIDI0NSwgIDI0NSwgIDQzNywgIDQzNiwKLSAg
ICAgIDE1NSwgIDQzNSwgIDE1NSwgIDQzNCwgIDE1NCwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwg
IDE1NSwKLSAgICAgIDE1NSwgIDE1NSwgIDI0OSwgIDI0OSwgIDI0OSwgIDQzMywgIDQzMiwgIDE1
NCwgIDE1NywgIDE1NywKLSAgICAgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDIyMiwg
IDIyMiwgIDIyMiwgIDIyMiwgIDIyMiwKLQotICAgICAgMjIyLCAgMjIyLCAgMjIzLCAgMjIzLCAg
MjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjI0LAotICAgICAgMjI0LCAgMjI0LCAgMjI0
LCAgMjI0LCAgMjI0LCAgMjI0LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAg
MjI1LCAgMjI1LCAgMjU1LCAgMjU1LCAgMjU1LCAgMzg4LCAgMzg4LCAgMzg4LCAgNDMwLAotICAg
ICAgNDI5LCAgNDI4LCAgNDI3LCAgNDI2LCAgNDI1LCAgNDI0LCAgNDIzLCAgNDIyLCAgNDIxLCAg
Mzg4LAotICAgICAgNDIwLCAgMzg4LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDYwLCAgNDYw
LCAgNDYxLCAgNDYxLAotICAgICAgNDYyLCAgNDE5LCAgNDYyLCAgNDYyLCAgNDE4LCAgNDE2LCAg
NDA3LCAgNDA2LCAgNDA1LCAgNDA0LAotICAgICAgNDAzLCAgNDAyLCAgNDAwLCAgMzk5LCAgMzk4
LCAgMzk1LCAgMzk0LCAgMzkyLCAgMzg5LCAgMzg3LAotICAgICAgMzg2LCAgMzg1LCAgMzgzLCAg
MzgyLCAgMzgxLCAgMzc4LCAgMzc3LCAgMzc2LCAgMzc1LCAgMzc0LAotICAgICAgMzczLCAgMzcy
LCAgMzcxLCAgMzY1LCAgMzYyLCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LAotICAgICAg
MzUzLCAgMzUxLCAgMzUwLCAgMzQ5LCAgMzQ4LCAgMzQ2LCAgMzQ1LCAgMzQzLCAgMzQxLCAgMzQw
LAotCi0gICAgICAzMzksICAzMzgsICAzMzcsICAzMzYsICAzMzUsICAzMzQsICAzMzIsICAzMzEs
ICAzMzAsICAzMjksCi0gICAgICAzMjgsICAzMjcsICAzMjYsICAzMjUsICAzMjQsICAzMjAsICAz
MTksICAzMTYsICAzMDUsICAzMDEsCi0gICAgICAzMDAsICAyOTksICAyOTgsICAyOTEsICAyOTAs
ICAyODksICAyODQsICAyODMsICAyODIsICAyODEsCi0gICAgICAyODAsICAyNzksICAyNzYsICAy
NzUsICAyNzQsICAyNzMsICAyNzIsICAyNzEsICAyNzAsICAyNjksCi0gICAgICAyNjgsICAyNjcs
ICAyNjYsICAyNjUsICAyNjQsICAyNjMsICAyNjIsICAyNjEsICAyNTQsICAyNTMsCi0gICAgICAy
NTIsICAyNTEsICAyNTAsICAyNDgsICAyNDQsICAyNDIsICAyNDEsICAyNDAsICAyMzYsICAyMzUs
Ci0gICAgICAyMzQsICAyMzMsICAyMzIsICAyMzEsICAyMjgsICAyMjYsICAyMjEsICAyMjAsICAy
MTksICAyMTcsCi0gICAgICAyMTYsICAyMTUsICAyMTMsICAyMTIsICAyMTEsICAyMTAsICAyMDks
ICAyMDgsICAyMDcsICAyMDYsCi0gICAgICAyMDUsICAyMDQsICAyMDMsICAyMDIsICAyMDEsICAy
MDAsICAxOTksICAxOTgsICAxOTcsICAxOTYsCi0gICAgICAxOTUsICAxOTMsICAxOTIsICAxOTEs
ICAxOTAsICAxODksICAxODgsICAxODcsICAxODYsICAxODUsCi0KLSAgICAgIDE4NCwgIDE4Mywg
IDE4MiwgIDE4MSwgIDE3OSwgIDE3OCwgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwKLSAgICAgIDE3
MywgIDE3MiwgIDE3MSwgIDE3MCwgIDE2OSwgIDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2MywK
LSAgICAgIDE2MiwgIDE0NywgIDE0NSwgIDE0NCwgIDE0MywgIDE0MSwgIDE0MCwgIDEzOSwgIDEz
OCwgIDEzNywKLSAgICAgIDEzNiwgIDEzNCwgIDEzMywgIDEzMiwgIDEzMSwgIDEzMCwgIDEyOSwg
IDEyOCwgIDEyNywgIDEyNiwKLSAgICAgIDEyNSwgIDEyNCwgIDEyMywgIDEyMSwgIDExOCwgIDEx
NywgIDExNiwgIDExNSwgIDExNCwgIDExMywKLSAgICAgIDExMSwgIDExMCwgIDEwOSwgIDEwOCwg
IDEwNywgIDEwNiwgIDEwNSwgIDEwNCwgIDEwMywgIDEwMiwKLSAgICAgIDEwMSwgIDEwMCwgICA5
OSwgICA5OCwgICA5NywgICA5NiwgICA5NSwgICA5MSwgICA4NywgICA2MCwKLSAgICAgICA1Mywg
ICA0OCwgICA0NiwgICA0MywgICA0MCwgICAyNywgICAyNCwgICAxNiwgICAxMSwgICAgNywKLSAg
ICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwKLQotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAg
ICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4CisgICAgICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDgsICAgIDgsICAgIDks
CisgICAgICAgMTMsICAgMTUsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAg
MTYsICAgMjQsCisgICAgICAgMjQsICAgMzAsICAgMzAsICAgNDAsICAgMTUsICAgMTMsICAgNDcs
ICAgNDAsICAgIDksICAgMTgsCisgICAgICAgNDcsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAg
MTgsICAgMTgsICAgMTgsICAgMTksICAgMjksCisKKyAgICAgICAxOSwgICAxOSwgICAxOSwgICAx
OSwgICAxOSwgICAxOSwgICAxOSwgICAxOCwgICAyMiwgICAzMSwKKyAgICAgICA0MSwgICAzMSwg
ICAxOCwgICAyOSwgIDQ0NCwgICAzMSwgICAxOSwgIDEzMywgIDQzOSwgIDEzMywKKyAgICAgICAx
OCwgICAzMiwgICAzNCwgICA0MSwgICAzNCwgICAyMiwgICAzMywgICAyMiwgICAyMiwgICAxOSwK
KyAgICAgICAzMywgICAzMiwgICAzNSwgICAzNCwgICAzMiwgICAzMywgICAzNywgICAxOCwgICA1
MSwgICAzOCwKKyAgICAgICAzNSwgICAzMywgICAzNSwgICA0MywgICAzNywgICAzNSwgICAzOCwg
ICA5OSwgIDQzOCwgICA0NSwKKyAgICAgICA0OCwgICAzNSwgIDQzNywgICAzOCwgICA0OCwgICAz
NywgICA0NSwgICA0NSwgICA0MywgICA0NiwKKyAgICAgICA5OSwgICA0MywgICA0NiwgICA0OCwg
IDEwOSwgIDEyOSwgICA0NSwgICA0NSwgIDE5OCwgICA0NSwKKyAgICAgICA0NiwgIDQzNiwgIDEw
OSwgIDEyOSwgIDE1MiwgIDE1MiwgIDE5OCwgICA0NiwgICA1MSwgICA2NCwKKyAgICAgICA2NCwg
ICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NiwgICA2NiwgICA2NiwgICA2NiwKKyAg
ICAgICA2NiwgICA2NiwgICA2NiwgIDQzNSwgIDEwNywgICA2NCwgIDEyMiwgIDEwNywgIDEwNywg
IDQwMSwKKworICAgICAgNDAxLCAgMTA3LCAgIDY2LCAgMTA3LCAgMTc4LCAgMTc4LCAgMTc4LCAg
NDM0LCAgIDY0LCAgNDMyLAorICAgICAgNDMwLCAgMTIyLCAgNDI5LCAgNDI4LCAgIDY3LCAgIDY2
LCAgIDY3LCAgIDY3LCAgIDY3LCAgIDY3LAorICAgICAgIDY3LCAgIDY3LCAgIDY3LCAgIDY4LCAg
NDI3LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LAorICAgICAgIDY4LCAgIDY4LCAgIDY3
LCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLAorICAgICAgNDI2LCAg
IDY4LCAgIDY5LCAgNDI0LCAgIDY5LCAgIDY3LCAgNDIzLCAgIDY5LCAgIDY5LCAgIDY5LAorICAg
ICAgIDY5LCAgIDY5LCAgIDY5LCAgIDY5LCAgIDY4LCAgMTM3LCAgNDIyLCAgMTM3LCAgNDIxLCAg
NDIwLAorICAgICAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM4
LCAgMTM4LCAgMTM4LAorICAgICAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LCAgMjAyLCAgMjAyLCAg
MjAyLCAgNDE5LCAgNDE4LCAgMTM5LAorICAgICAgNDE3LCAgMTM5LCAgNDE2LCAgMTM4LCAgMTM5
LCAgMTM5LCAgMTM5LCAgMTM5LCAgMTM5LCAgMTM5LAorICAgICAgMTM5LCAgMjEzLCAgMjEzLCAg
MjEzLCAgNDE0LCAgNDEzLCAgMTM4LCAgMTQxLCAgMTQxLCAgMTQxLAorCisgICAgICAxNDEsICAx
NDEsICAxNDEsICAxNDEsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsCisgICAg
ICAyMDYsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDgsICAy
MDgsCisgICAgICAyMDgsICAyMDgsICAyMDgsICAyMDgsICAyMDgsICAyMDksICAyMDksICAyMDks
ICAyMDksICAyMDksCisgICAgICAyMDksICAyMDksICAyMjEsICAyMjEsICAyMjEsICAyMjksICAy
MjksICAyMjksICAyMzMsICAyMzMsCisgICAgICAyMzMsICAyMzksICAyMzksICAyMzksICAzNzIs
ICAzNzIsICAzNzIsICA0MTIsICA0MTEsICA0MTAsCisgICAgICA0MDksICA0MDgsICA0MDcsICA0
MDYsICA0MDUsICA0MDQsICA0MDMsICAzNzIsICA0MDIsICAzNzIsCisgICAgICA0NDMsICA0NDMs
ICA0MDAsICAzOTEsICAzOTAsICAzODksICAzODgsICAzODcsICAzODYsICAzODQsCisgICAgICAz
ODMsICAzODIsICAzNzksICAzNzgsICAzNzYsICAzNzMsICAzNzEsICAzNzAsICAzNjksICAzNjcs
CisgICAgICAzNjYsICAzNjUsICAzNjIsICAzNjEsICAzNjAsICAzNTksICAzNTgsICAzNTcsICAz
NTYsICAzNTUsCisgICAgICAzNDksICAzNDYsICAzNDMsICAzNDIsICAzNDEsICAzNDAsICAzMzks
ICAzMzcsICAzMzUsICAzMzQsCisKKyAgICAgIDMzMywgIDMzMiwgIDMzMCwgIDMyOSwgIDMyNywg
IDMyNSwgIDMyNCwgIDMyMywgIDMyMiwgIDMyMSwKKyAgICAgIDMyMCwgIDMxOSwgIDMxOCwgIDMx
NiwgIDMxNSwgIDMxNCwgIDMxMywgIDMxMiwgIDMxMSwgIDMxMCwKKyAgICAgIDMwOSwgIDMwOCwg
IDMwNCwgIDMwMywgIDMwMCwgIDI4OSwgIDI4NSwgIDI4NCwgIDI4MywgIDI4MiwKKyAgICAgIDI3
NSwgIDI3NCwgIDI3MywgIDI2OCwgIDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2MCwK
KyAgICAgIDI1OSwgIDI1OCwgIDI1NywgIDI1NiwgIDI1NSwgIDI1NCwgIDI1MywgIDI1MiwgIDI1
MSwgIDI1MCwKKyAgICAgIDI0OSwgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDIzOCwgIDIzNywg
IDIzNiwgIDIzNSwgIDIzNCwKKyAgICAgIDIzMiwgIDIyOCwgIDIyNiwgIDIyNSwgIDIyNCwgIDIy
MCwgIDIxOSwgIDIxOCwgIDIxNywgIDIxNiwKKyAgICAgIDIxNSwgIDIxMiwgIDIxMCwgIDIwNSwg
IDIwNCwgIDIwMywgIDIwMSwgIDIwMCwgIDE5OSwgIDE5NywKKyAgICAgIDE5NiwgIDE5NSwgIDE5
NCwgIDE5MywgIDE5MiwgIDE5MSwgIDE5MCwgIDE4OSwgIDE4OCwgIDE4NywKKyAgICAgIDE4Niwg
IDE4NSwgIDE4NCwgIDE4MywgIDE4MiwgIDE4MSwgIDE4MCwgIDE3OSwgIDE3NywgIDE3NiwKKwor
ICAgICAgMTc1LCAgMTc0LCAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LCAgMTY3
LCAgMTY2LAorICAgICAgMTY1LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTU4LCAg
MTU3LCAgMTU2LCAgMTU1LAorICAgICAgMTU0LCAgMTUzLCAgMTUxLCAgMTUwLCAgMTQ5LCAgMTQ4
LCAgMTQ3LCAgMTQ2LCAgMTM0LCAgMTMyLAorICAgICAgMTMxLCAgMTMwLCAgMTI4LCAgMTI3LCAg
MTI2LCAgMTI1LCAgMTI0LCAgMTIzLCAgMTIxLCAgMTIwLAorICAgICAgMTE5LCAgMTE4LCAgMTE3
LCAgMTE2LCAgMTE1LCAgMTE0LCAgMTEzLCAgMTEyLCAgMTExLCAgMTEwLAorICAgICAgMTA4LCAg
MTA1LCAgMTA0LCAgMTAzLCAgMTAyLCAgMTAxLCAgMTAwLCAgIDk4LCAgIDk3LCAgIDk2LAorICAg
ICAgIDk1LCAgIDk0LCAgIDkzLCAgIDkyLCAgIDkxLCAgIDkwLCAgIDg5LCAgIDg4LCAgIDg3LCAg
IDg2LAorICAgICAgIDg1LCAgIDg0LCAgIDgzLCAgIDgyLCAgIDc4LCAgIDc0LCAgIDQ5LCAgIDQ0
LCAgIDQyLCAgIDM5LAorICAgICAgIDM2LCAgIDIzLCAgIDIwLCAgIDE3LCAgIDEyLCAgICA3LCAg
ICAzLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorCisgICAgICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAg
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIK
ICAgICB9IDsKIAogLyogVGFibGUgb2YgYm9vbGVhbnMsIHRydWUgaWYgcnVsZSBjb3VsZCBtYXRj
aCBlb2wuICovCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfcnVsZV9jYW5fbWF0Y2hf
ZW9sWzE1Nl0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X3J1bGVfY2FuX21hdGNo
X2VvbFsxNDhdID0KICAgICB7ICAgMCwKLTAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMSwgMCwgMCwgICAgIH07CisgICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwg
ICAgIH07CiAKIC8qIFRoZSBpbnRlbnQgYmVoaW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB0aGF0IGl0
J2xsIGNhdGNoCiAgKiBhbnkgdXNlcyBvZiBSRUpFQ1Qgd2hpY2ggZmxleCBtaXNzZWQuCkBAIC04
MTcsNyArNzkyLDEwIEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEK
ICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VT
RVJfQUNUSU9OIHl5bHZhbC0+bGV4LmxpbmUgPSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9B
Q1RJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJz
dF9maWxlID0geXlsbG9jLT5sYXN0X2ZpbGUgPSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmly
c3RfbGluZSA9IHl5bGxvYy0+bGFzdF9saW5lID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5Q
VVQoYnVmLCByZXN1bHQsIG1heF9zaXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1
ZiwgbWF4X3NpemUsIHl5c2Nhbm5lcik7CiAKQEAgLTgyNiw4ICs4MDQsNiBAQCBzdGF0aWMgaW50
IGNoZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyCiBzdGF0aWMgaW50IHJlc2VydmVkX3dvcmQo
eXlzY2FuX3QgeXlzY2FubmVyKTsKIAogI2RlZmluZSBJTklUSUFMIDAKLSNkZWZpbmUgQ09NTUVO
VCAxCi0jZGVmaW5lIEZJRUxEUyAyCiAKICNkZWZpbmUgWVlfRVhUUkFfVFlQRSBUUGFyc2VDb250
ZXh0KgogCkBAIC04NjUsNiArODQxLDggQEAgc3RydWN0IHl5Z3V0c190CiAKICAgICBZWVNUWVBF
ICogeXlsdmFsX3I7CiAKKyAgICBZWUxUWVBFICogeXlsbG9jX3I7CisKICAgICB9OyAvKiBlbmQg
c3RydWN0IHl5Z3V0c190ICovCiAKIHN0YXRpYyBpbnQgeXlfaW5pdF9nbG9iYWxzICh5eXNjYW5f
dCB5eXNjYW5uZXIgKTsKQEAgLTg3Myw2ICs4NTEsOCBAQCBzdGF0aWMgaW50IHl5X2luaXRfZ2xv
YmFscyAoeXlzY2FuX3QgeXlzCiAgICAgICogZnJvbSBiaXNvbiBvdXRwdXQgaW4gc2VjdGlvbiAx
LiovCiAgICAgIyAgICBkZWZpbmUgeXlsdmFsIHl5Zy0+eXlsdmFsX3IKICAgICAKKyAgICAjICAg
IGRlZmluZSB5eWxsb2MgeXlnLT55eWxsb2NfcgorICAgIAogaW50IHl5bGV4X2luaXQgKHl5c2Nh
bl90KiBzY2FubmVyKTsKIAogaW50IHl5bGV4X2luaXRfZXh0cmEgKFlZX0VYVFJBX1RZUEUgdXNl
cl9kZWZpbmVkLHl5c2Nhbl90KiBzY2FubmVyKTsKQEAgLTkxMCw2ICs4OTAsMTAgQEAgWVlTVFlQ
RSAqIHl5Z2V0X2x2YWwgKHl5c2Nhbl90IHl5c2Nhbm5lcgogCiB2b2lkIHl5c2V0X2x2YWwgKFlZ
U1RZUEUgKiB5eWx2YWxfcGFyYW0gLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisgICAgICAgWVlM
VFlQRSAqeXlnZXRfbGxvYyAoeXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAgCisgICAgICAgIHZv
aWQgeXlzZXRfbGxvYyAoWVlMVFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVy
ICk7CisgICAgCiAvKiBNYWNyb3MgYWZ0ZXIgdGhpcyBwb2ludCBjYW4gYWxsIGJlIG92ZXJyaWRk
ZW4gYnkgdXNlciBkZWZpbml0aW9ucyBpbgogICogc2VjdGlvbiAxLgogICovCkBAIC05NDAsMTIg
KzkyNCw2IEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCiAjZW5k
aWYKIAotICAgIHN0YXRpYyB2b2lkIHl5X3B1c2hfc3RhdGUgKGludCBuZXdfc3RhdGUgLHl5c2Nh
bl90IHl5c2Nhbm5lcik7Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgeXlfcG9wX3N0YXRlICh5eXNj
YW5fdCB5eXNjYW5uZXIgKTsKLSAgICAKLSAgICBzdGF0aWMgaW50IHl5X3RvcF9zdGF0ZSAoeXlz
Y2FuX3QgeXlzY2FubmVyICk7Ci0gICAgCiAvKiBBbW91bnQgb2Ygc3R1ZmYgdG8gc2x1cnAgdXAg
d2l0aCBlYWNoIHJlYWQuICovCiAjaWZuZGVmIFlZX1JFQURfQlVGX1NJWkUKICNkZWZpbmUgWVlf
UkVBRF9CVUZfU0laRSA4MTkyCkBAIC0xMDIyLDEwICsxMDAwLDEwIEBAIHN0YXRpYyBpbnQgaW5w
dXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogI2RlZmluZSBZWV9ERUNMX0lTX09VUlMgMQogCiBl
eHRlcm4gaW50IHl5bGV4IFwKLSAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFt
ICx5eXNjYW5fdCB5eXNjYW5uZXIpOworICAgICAgICAgICAgICAgKFlZU1RZUEUgKiB5eWx2YWxf
cGFyYW0sWVlMVFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyKTsKIAogI2Rl
ZmluZSBZWV9ERUNMIGludCB5eWxleCBcCi0gICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZh
bF9wYXJhbSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAgICAgICAgICAgICAgIChZWVNUWVBFICog
eXlsdmFsX3BhcmFtLCBZWUxUWVBFICogeXlsbG9jX3BhcmFtICwgeXlzY2FuX3QgeXlzY2FubmVy
KQogI2VuZGlmIC8qICFZWV9ERUNMICovCiAKIC8qIENvZGUgZXhlY3V0ZWQgYXQgdGhlIGJlZ2lu
bmluZyBvZiBlYWNoIHJ1bGUsIGFmdGVyIHl5dGV4dCBhbmQgeXlsZW5nCkBAIC0xMDUyLDEyICsx
MDMwLDEwIEBAIFlZX0RFQ0wKIAlyZWdpc3RlciBpbnQgeXlfYWN0OwogICAgIHN0cnVjdCB5eWd1
dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKIAotICAgIFRQYXJzZUNv
bnRleHQqIGNvbnRleHQgPSB5eWV4dHJhOwotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMg
Ki8KLQogICAgIHl5bHZhbCA9IHl5bHZhbF9wYXJhbTsKIAorICAgIHl5bGxvYyA9IHl5bGxvY19w
YXJhbTsKKwogCWlmICggIXl5Zy0+eXlfaW5pdCApCiAJCXsKIAkJeXlnLT55eV9pbml0ID0gMTsK
QEAgLTExMDksMTMgKzEwODUsMTMgQEAgeXlfbWF0Y2g6CiAJCQl3aGlsZSAoIHl5X2Noa1t5eV9i
YXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQkJ
ewogCQkJCXl5X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07
Ci0JCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ1OSApCisJCQkJaWYgKCB5eV9jdXJyZW50
X3N0YXRlID49IDQ0MyApCiAJCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2Nd
OwogCQkJCX0KIAkJCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50
X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJKyt5eV9jcDsKIAkJCX0KLQkJd2hp
bGUgKCB5eV9jdXJyZW50X3N0YXRlICE9IDQ1OCApOworCQl3aGlsZSAoIHl5X2N1cnJlbnRfc3Rh
dGUgIT0gNDQyICk7CiAJCXl5X2NwID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19jcG9zOwogCQl5
eV9jdXJyZW50X3N0YXRlID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19zdGF0ZTsKIApAQCAtMTE0
OSwxOTggKzExMjUsMTk5IEBAIGRvX2FjdGlvbjoJLyogVGhpcyBsYWJlbCBpcyB1c2VkIG9ubHkg
dG8KIAogY2FzZSAxOgogWVlfUlVMRV9TRVRVUAotOworeyByZXR1cm4gSU5WQVJJQU5UOyB9CiAJ
WVlfQlJFQUsKLS8qIE11bHRpLWxpbmUgY29tbWVudHMgKi8KIGNhc2UgMjoKIFlZX1JVTEVfU0VU
VVAKLXsgeXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9Cit7IHJldHVybiBISUdI
X1BSRUNJU0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDM6CitZWV9SVUxFX1NFVFVQCit7IHJldHVy
biBNRURJVU1fUFJFQ0lTSU9OOyB9CisJWVlfQlJFQUsKIGNhc2UgNDoKLS8qIHJ1bGUgNCBjYW4g
bWF0Y2ggZW9sICovCiBZWV9SVUxFX1NFVFVQCi07Cit7IHJldHVybiBMT1dfUFJFQ0lTSU9OOyB9
CiAJWVlfQlJFQUsKIGNhc2UgNToKIFlZX1JVTEVfU0VUVVAKLXsgeXlfcG9wX3N0YXRlKHl5c2Nh
bm5lcik7IH0KK3sgcmV0dXJuIFBSRUNJU0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDY6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybihJTlZBUklBTlQpOyB9Cit7IHJldHVybiBBVFRSSUJVVEU7IH0K
IAlZWV9CUkVBSwogY2FzZSA3OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSElHSF9QUkVDSVNJ
T04pOyB9Cit7IHJldHVybiBDT05TVF9RVUFMOyB9CiAJWVlfQlJFQUsKIGNhc2UgODoKIFlZX1JV
TEVfU0VUVVAKLXsgcmV0dXJuKE1FRElVTV9QUkVDSVNJT04pOyB9Cit7IHJldHVybiBVTklGT1JN
OyB9CiAJWVlfQlJFQUsKIGNhc2UgOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKExPV19QUkVD
SVNJT04pOyB9Cit7IHJldHVybiBWQVJZSU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybihQUkVDSVNJT04pOyB9Cit7IHJldHVybiBCUkVBSzsgfQogCVlZ
X0JSRUFLCiBjYXNlIDExOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQVRUUklCVVRFKTsgfQor
eyByZXR1cm4gQ09OVElOVUU7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjoKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuKENPTlNUX1FVQUwpOyB9Cit7IHJldHVybiBETzsgfQogCVlZX0JSRUFLCiBjYXNl
IDEzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oVU5JRk9STSk7IH0KK3sgcmV0dXJuIEZPUjsg
fQogCVlZX0JSRUFLCiBjYXNlIDE0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oVkFSWUlORyk7
IH0KK3sgcmV0dXJuIFdISUxFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTU6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybihCUkVBSyk7IH0KK3sgcmV0dXJuIElGOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTY6
CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihDT05USU5VRSk7IH0KK3sgcmV0dXJuIEVMU0U7IH0K
IAlZWV9CUkVBSwogY2FzZSAxNzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKERPKTsgfQoreyBy
ZXR1cm4gSU5fUVVBTDsgfQogCVlZX0JSRUFLCiBjYXNlIDE4OgogWVlfUlVMRV9TRVRVUAoteyBy
ZXR1cm4oRk9SKTsgfQoreyByZXR1cm4gT1VUX1FVQUw7IH0KIAlZWV9CUkVBSwogY2FzZSAxOToK
IFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFdISUxFKTsgfQoreyByZXR1cm4gSU5PVVRfUVVBTDsg
fQogCVlZX0JSRUFLCiBjYXNlIDIwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSUYpOyB9Cit7
IHJldHVybiBGTE9BVF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjE6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybihFTFNFKTsgfQoreyByZXR1cm4gSU5UX1RZUEU7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAyMjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKElOX1FVQUwpOyB9Cit7IHJldHVybiBWT0lE
X1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAyMzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKE9V
VF9RVUFMKTsgfQoreyByZXR1cm4gQk9PTF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjQ6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybihJTk9VVF9RVUFMKTsgfQoreyB5eWx2YWwtPmxleC5iID0g
dHJ1ZTsgIHJldHVybiBCT09MQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAyNToKIFlZX1JV
TEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEZMT0FUX1RZ
UEUpOyB9Cit7IHl5bHZhbC0+bGV4LmIgPSBmYWxzZTsgcmV0dXJuIEJPT0xDT05TVEFOVDsgfQog
CVlZX0JSRUFLCiBjYXNlIDI2OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5
cGUgPSB0cnVlOyByZXR1cm4oSU5UX1RZUEUpOyB9Cit7IHJldHVybiBESVNDQVJEOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMjc6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9
IHRydWU7IHJldHVybihWT0lEX1RZUEUpOyB9Cit7IHJldHVybiBSRVRVUk47IH0KIAlZWV9CUkVB
SwogY2FzZSAyODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuKEJPT0xfVFlQRSk7IH0KK3sgcmV0dXJuIE1BVFJJWDI7IH0KIAlZWV9CUkVBSwog
Y2FzZSAyOToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4o
Qk9PTENPTlNUQU5UKTsgfQoreyByZXR1cm4gTUFUUklYMzsgfQogCVlZX0JSRUFLCiBjYXNlIDMw
OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5iID0gZmFsc2U7IHJldHVybihCT09MQ09O
U1RBTlQpOyB9Cit7IHJldHVybiBNQVRSSVg0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzE6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybihESVNDQVJEKTsgfQoreyByZXR1cm4gVkVDMjsgfQogCVlZX0JS
RUFLCiBjYXNlIDMyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUkVUVVJOKTsgfQoreyByZXR1
cm4gVkVDMzsgfQogCVlZX0JSRUFLCiBjYXNlIDMzOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0
LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMik7IH0KK3sgcmV0dXJuIFZFQzQ7
IH0KIAlZWV9CUkVBSwogY2FzZSAzNDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0
ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJWDMpOyB9Cit7IHJldHVybiBJVkVDMjsgfQogCVlZ
X0JSRUFLCiBjYXNlIDM1OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4oTUFUUklYNCk7IH0KK3sgcmV0dXJuIElWRUMzOyB9CiAJWVlfQlJFQUsK
IGNhc2UgMzY6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7
IHJldHVybiAoVkVDMik7IH0KK3sgcmV0dXJuIElWRUM0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzc6
CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAo
VkVDMyk7IH0KK3sgcmV0dXJuIEJWRUMyOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzg6CiBZWV9SVUxF
X1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0K
K3sgcmV0dXJuIEJWRUMzOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzk6CiBZWV9SVUxFX1NFVFVQCi17
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzIpOyB9Cit7IHJldHVy
biBCVkVDNDsgfQogCVlZX0JSRUFLCiBjYXNlIDQwOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0
LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKElWRUMzKTsgfQoreyByZXR1cm4gU0FNUExF
UjJEOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxl
eEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzQpOyB9Cit7IHJldHVybiBTQU1QTEVSQ1VC
RTsgfQogCVlZX0JSRUFLCiBjYXNlIDQyOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKEJWRUMyKTsgfQoreyByZXR1cm4gU0FNUExFUl9FWFRF
Uk5BTF9PRVM7IH0KIAlZWV9CUkVBSwogY2FzZSA0MzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDMyk7IH0KK3sgcmV0dXJuIFNBTVBM
RVIyRFJFQ1Q7IH0KIAlZWV9CUkVBSwogY2FzZSA0NDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KK3sgcmV0dXJuIFNUUlVD
VDsgfQogCVlZX0JSRUFLCiBjYXNlIDQ1OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Cit7IHJldHVybiByZXNlcnZlZF93
b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NjoKIFlZX1JVTEVfU0VUVVAKLXsg
Y29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJDVUJFOyB9Cit7IHJl
dHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NzoKIFlZ
X1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBM
RVJfRVhURVJOQUxfT0VTOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0K
IAlZWV9CUkVBSwogY2FzZSA0ODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KK3sgcmV0dXJuIHJlc2VydmVkX3dv
cmQoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDQ5OgogWVlfUlVMRV9TRVRVUAoteyBj
b250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oU1RSVUNUKTsgfQoreyByZXR1cm4g
cmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNTA6CiBZWV9SVUxF
X1NFVFVQCkBAIC0xNTE2LDI2NiArMTQ5MywyMjggQEAgWVlfUlVMRV9TRVRVUAogCVlZX0JSRUFL
CiBjYXNlIDkzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5u
ZXIpOyB9Cit7CisgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQp
OyAKKyAgIHJldHVybiBjaGVja190eXBlKHl5c2Nhbm5lcik7Cit9CiAJWVlfQlJFQUsKIGNhc2Ug
OTQ6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0K
K3sgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkp
OyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5NToKIFlZX1JVTEVfU0VU
VVAKLXsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreyB5eWx2YWwtPmxleC5p
ID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05T
VEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDk2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVz
ZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxp
bnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CiAJWVlfQlJF
QUsKIGNhc2UgOTc6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nh
bm5lcik7IH0KK3sgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5
eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5ODoKIFlZ
X1JVTEVfU0VUVVAKLXsKLSAgIHl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5nKHl5
dGV4dCk7IAotICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKLX0KK3sgeXlsdmFsLT5s
ZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FU
Q09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5OToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFs
LT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4o
SU5UQ09OU1RBTlQpOyB9Cit7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRv
Zl9kb3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
MTAwOgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50Pihz
dHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIEFE
RF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRl
eHQtPmVycm9yKHl5bGluZW5vLCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29u
dGV4dC0+cmVjb3ZlcigpOyByZXR1cm4gMDt9Cit7IHJldHVybiBTVUJfQVNTSUdOOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMTAyOgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGlj
X2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0K
K3sgcmV0dXJuIE1VTF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDM6CiBZWV9SVUxFX1NF
VFVQCi17IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0
KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQoreyByZXR1cm4gRElWX0FTU0lHTjsgfQogCVlZ
X0JSRUFLCiBjYXNlIDEwNDoKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguZiA9IHN0YXRp
Y19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9
Cit7IHJldHVybiBNT0RfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA1OgogWVlfUlVMRV9T
RVRVUAoteyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4
dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIExFRlRfQVNTSUdOOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMTA2OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEFERF9BU1NJR04p
OyB9Cit7IHJldHVybiBSSUdIVF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDc6CiBZWV9S
VUxFX1NFVFVQCi17ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KK3sgcmV0dXJuIEFORF9BU1NJR047
IH0KIAlZWV9CUkVBSwogY2FzZSAxMDg6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTVVMX0FT
U0lHTik7IH0KK3sgcmV0dXJuIFhPUl9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDk6CiBZ
WV9SVUxFX1NFVFVQCi17ICByZXR1cm4oRElWX0FTU0lHTik7IH0KK3sgcmV0dXJuIE9SX0FTU0lH
TjsgfQogCVlZX0JSRUFLCiBjYXNlIDExMDoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihNT0Rf
QVNTSUdOKTsgfQoreyByZXR1cm4gSU5DX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTExOgogWVlf
UlVMRV9TRVRVUAoteyAgcmV0dXJuKExFRlRfQVNTSUdOKTsgfQoreyByZXR1cm4gREVDX09QOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTEyOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFJJR0hUX0FT
U0lHTik7IH0KK3sgcmV0dXJuIEFORF9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExMzoKIFlZX1JV
TEVfU0VUVVAKLXsgIHJldHVybihBTkRfQVNTSUdOKTsgfQoreyByZXR1cm4gT1JfT1A7IH0KIAlZ
WV9CUkVBSwogY2FzZSAxMTQ6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oWE9SX0FTU0lHTik7
IH0KK3sgcmV0dXJuIFhPUl9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNToKIFlZX1JVTEVfU0VU
VVAKLXsgIHJldHVybihPUl9BU1NJR04pOyB9Cit7IHJldHVybiBMRV9PUDsgfQogCVlZX0JSRUFL
CiBjYXNlIDExNjoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihJTkNfT1ApOyB9Cit7IHJldHVy
biBHRV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVy
bihERUNfT1ApOyB9Cit7IHJldHVybiBFUV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExODoKIFlZ
X1JVTEVfU0VUVVAKLXsgIHJldHVybihBTkRfT1ApOyB9Cit7IHJldHVybiBORV9PUDsgfQogCVlZ
X0JSRUFLCiBjYXNlIDExOToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihPUl9PUCk7IH0KK3sg
cmV0dXJuIExFRlRfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjA6CiBZWV9SVUxFX1NFVFVQCi17
ICByZXR1cm4oWE9SX09QKTsgfQoreyByZXR1cm4gUklHSFRfT1A7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxMjE6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTEVfT1ApOyB9Cit7IHJldHVybiBTRU1J
Q09MT047IH0KIAlZWV9CUkVBSwogY2FzZSAxMjI6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4o
R0VfT1ApOyB9Cit7IHJldHVybiBMRUZUX0JSQUNFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIzOgog
WVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEVRX09QKTsgfQoreyByZXR1cm4gUklHSFRfQlJBQ0U7
IH0KIAlZWV9CUkVBSwogY2FzZSAxMjQ6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTkVfT1Ap
OyB9Cit7IHJldHVybiBDT01NQTsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNToKIFlZX1JVTEVfU0VU
VVAKLXsgIHJldHVybihMRUZUX09QKTsgfQoreyByZXR1cm4gQ09MT047IH0KIAlZWV9CUkVBSwog
Y2FzZSAxMjY6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oUklHSFRfT1ApOyB9Cit7IHJldHVy
biBFUVVBTDsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihTRU1JQ09MT04pOyB9Cit7IHJldHVybiBM
RUZUX1BBUkVOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI4OgogWVlfUlVMRV9TRVRVUAoteyBjb250
ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJuKExFRlRfQlJBQ0UpOyB9Cit7IHJldHVy
biBSSUdIVF9QQVJFTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEyOToKIFlZX1JVTEVfU0VUVVAKLXsg
cmV0dXJuKFJJR0hUX0JSQUNFKTsgfQoreyByZXR1cm4gTEVGVF9CUkFDS0VUOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMTMwOgogWVlfUlVMRV9TRVRVUAoteyBpZiAoY29udGV4dC0+aW5UeXBlUGFyZW4p
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Cit7IHJldHVy
biBSSUdIVF9CUkFDS0VUOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMxOgogWVlfUlVMRV9TRVRVUAot
eyByZXR1cm4oQ09MT04pOyB9Cit7IHJldHVybiBET1Q7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzI6
CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4o
RVFVQUwpOyB9Cit7IHJldHVybiBCQU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMzOgogWVlfUlVM
RV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgY29udGV4dC0+aW5UeXBl
UGFyZW4gPSB0cnVlOyByZXR1cm4oTEVGVF9QQVJFTik7IH0KK3sgcmV0dXJuIERBU0g7IH0KIAlZ
WV9CUkVBSwogY2FzZSAxMzQ6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmluVHlwZVBhcmVu
ID0gZmFsc2U7IHJldHVybihSSUdIVF9QQVJFTik7IH0KK3sgcmV0dXJuIFRJTERFOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMTM1OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oTEVGVF9CUkFDS0VUKTsg
fQoreyByZXR1cm4gUExVUzsgfQogCVlZX0JSRUFLCiBjYXNlIDEzNjoKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuKFJJR0hUX0JSQUNLRVQpOyB9Cit7IHJldHVybiBTVEFSOyB9CiAJWVlfQlJFQUsK
IGNhc2UgMTM3OgogWVlfUlVMRV9TRVRVUAoteyBCRUdJTihGSUVMRFMpOyAgcmV0dXJuKERPVCk7
IH0KK3sgcmV0dXJuIFNMQVNIOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM4OgogWVlfUlVMRV9TRVRV
UAoteyByZXR1cm4oQkFORyk7IH0KK3sgcmV0dXJuIFBFUkNFTlQ7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxMzk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihEQVNIKTsgfQoreyByZXR1cm4gTEVGVF9B
TkdMRTsgfQogCVlZX0JSRUFLCiBjYXNlIDE0MDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFRJ
TERFKTsgfQoreyByZXR1cm4gUklHSFRfQU5HTEU7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDE6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybihQTFVTKTsgfQoreyByZXR1cm4gVkVSVElDQUxfQkFSOyB9
CiAJWVlfQlJFQUsKIGNhc2UgMTQyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oU1RBUik7IH0K
K3sgcmV0dXJuIENBUkVUOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQzOgogWVlfUlVMRV9TRVRVUAot
eyByZXR1cm4oU0xBU0gpOyB9Cit7IHJldHVybiBBTVBFUlNBTkQ7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxNDQ6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihQRVJDRU5UKTsgfQoreyByZXR1cm4gUVVF
U1RJT047IH0KIAlZWV9CUkVBSwogY2FzZSAxNDU6CisvKiBydWxlIDE0NSBjYW4gbWF0Y2ggZW9s
ICovCiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihMRUZUX0FOR0xFKTsgfQotCVlZX0JSRUFLCi1j
YXNlIDE0NjoKLVlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJJR0hUX0FOR0xFKTsgfQotCVlZX0JS
RUFLCi1jYXNlIDE0NzoKLVlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFZFUlRJQ0FMX0JBUik7IH0K
LQlZWV9CUkVBSwotY2FzZSAxNDg6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihDQVJFVCk7IH0K
LQlZWV9CUkVBSwotY2FzZSAxNDk6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihBTVBFUlNBTkQp
OyB9Ci0JWVlfQlJFQUsKLWNhc2UgMTUwOgotWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUVVFU1RJ
T04pOyB9Ci0JWVlfQlJFQUsKLWNhc2UgMTUxOgotWVlfUlVMRV9TRVRVUAoteyAKLSAgICBCRUdJ
TihJTklUSUFMKTsKLSAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRl
eHQpOyAKLSAgICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwotfQotCVlZX0JSRUFLCi1jYXNlIDE1
MjoKLVlZX1JVTEVfU0VUVVAKLXt9Ci0JWVlfQlJFQUsKLWNhc2UgMTUzOgotLyogcnVsZSAxNTMg
Y2FuIG1hdGNoIGVvbCAqLwotWVlfUlVMRV9TRVRVUAoteyAgfQoreyB9CiAJWVlfQlJFQUsKIGNh
c2UgWVlfU1RBVEVfRU9GKElOSVRJQUwpOgotY2FzZSBZWV9TVEFURV9FT0YoQ09NTUVOVCk6Ci1j
YXNlIFlZX1NUQVRFX0VPRihGSUVMRFMpOgoteyBjb250ZXh0LT5BZnRlckVPRiA9IHRydWU7IHl5
dGVybWluYXRlKCk7IH0KK3sgeXl0ZXJtaW5hdGUoKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE1NDoK
K2Nhc2UgMTQ2OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAi
VW5rbm93biBjaGFyIiwgeXl0ZXh0LCAiIik7IHJldHVybiAwOyB9Cit7IGFzc2VydChmYWxzZSk7
IHJldHVybiAwOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTU1OgorY2FzZSAxNDc6CiBZWV9SVUxFX1NF
VFVQCiBFQ0hPOwogCVlZX0JSRUFLCkBAIC0yMDcxLDcgKzIwMTAsNyBAQCBzdGF0aWMgaW50IHl5
X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgCiAJCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlf
Y3VycmVudF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJCXsKIAkJCXl5
X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCQlpZiAo
IHl5X2N1cnJlbnRfc3RhdGUgPj0gNDU5ICkKKwkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0
NDMgKQogCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJfQogCQl5
eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5z
aWduZWQgaW50KSB5eV9jXTsKQEAgLTIxMDAsMTEgKzIwMzksMTEgQEAgc3RhdGljIGludCB5eV9n
ZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IAogCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3Vy
cmVudF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJewogCQl5eV9jdXJy
ZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQlpZiAoIHl5X2N1
cnJlbnRfc3RhdGUgPj0gNDU5ICkKKwkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ0MyApCiAJ
CQl5eV9jID0geXlfbWV0YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJfQogCXl5X2N1cnJlbnRf
c3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQp
IHl5X2NdOwotCXl5X2lzX2phbSA9ICh5eV9jdXJyZW50X3N0YXRlID09IDQ1OCk7CisJeXlfaXNf
amFtID0gKHl5X2N1cnJlbnRfc3RhdGUgPT0gNDQyKTsKIAogCXJldHVybiB5eV9pc19qYW0gPyAw
IDogeXlfY3VycmVudF9zdGF0ZTsKIH0KQEAgLTI1NDgsNDYgKzI0ODcsNiBAQCBZWV9CVUZGRVJf
U1RBVEUgeXlfc2Nhbl9ieXRlcyAgKHl5Y29uc3QgCiAJcmV0dXJuIGI7CiB9CiAKLSAgICBzdGF0
aWMgdm9pZCB5eV9wdXNoX3N0YXRlIChpbnQgIG5ld19zdGF0ZSAsIHl5c2Nhbl90IHl5c2Nhbm5l
cikKLXsKLSAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNj
YW5uZXI7Ci0JaWYgKCB5eWctPnl5X3N0YXJ0X3N0YWNrX3B0ciA+PSB5eWctPnl5X3N0YXJ0X3N0
YWNrX2RlcHRoICkKLQkJewotCQl5eV9zaXplX3QgbmV3X3NpemU7Ci0KLQkJeXlnLT55eV9zdGFy
dF9zdGFja19kZXB0aCArPSBZWV9TVEFSVF9TVEFDS19JTkNSOwotCQluZXdfc2l6ZSA9IHl5Zy0+
eXlfc3RhcnRfc3RhY2tfZGVwdGggKiBzaXplb2YoIGludCApOwotCi0JCWlmICggISB5eWctPnl5
X3N0YXJ0X3N0YWNrICkKLQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sgPSAoaW50ICopIHl5YWxsb2Mo
bmV3X3NpemUgLHl5c2Nhbm5lciApOwotCi0JCWVsc2UKLQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sg
PSAoaW50ICopIHl5cmVhbGxvYygodm9pZCAqKSB5eWctPnl5X3N0YXJ0X3N0YWNrLG5ld19zaXpl
ICx5eXNjYW5uZXIgKTsKLQotCQlpZiAoICEgeXlnLT55eV9zdGFydF9zdGFjayApCi0JCQlZWV9G
QVRBTF9FUlJPUiggIm91dCBvZiBtZW1vcnkgZXhwYW5kaW5nIHN0YXJ0LWNvbmRpdGlvbiBzdGFj
ayIgKTsKLQkJfQotCi0JeXlnLT55eV9zdGFydF9zdGFja1t5eWctPnl5X3N0YXJ0X3N0YWNrX3B0
cisrXSA9IFlZX1NUQVJUOwotCi0JQkVHSU4obmV3X3N0YXRlKTsKLX0KLQotICAgIHN0YXRpYyB2
b2lkIHl5X3BvcF9zdGF0ZSAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBzdHJ1Y3QgeXln
dXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0JaWYgKCAtLXl5Zy0+
eXlfc3RhcnRfc3RhY2tfcHRyIDwgMCApCi0JCVlZX0ZBVEFMX0VSUk9SKCAic3RhcnQtY29uZGl0
aW9uIHN0YWNrIHVuZGVyZmxvdyIgKTsKLQotCUJFR0lOKHl5Zy0+eXlfc3RhcnRfc3RhY2tbeXln
LT55eV9zdGFydF9zdGFja19wdHJdKTsKLX0KLQotICAgIHN0YXRpYyBpbnQgeXlfdG9wX3N0YXRl
ICAoeXlzY2FuX3QgeXlzY2FubmVyKQotewotICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChz
dHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKLQlyZXR1cm4geXlnLT55eV9zdGFydF9zdGFja1t5
eWctPnl5X3N0YXJ0X3N0YWNrX3B0ciAtIDFdOwotfQotCiAjaWZuZGVmIFlZX0VYSVRfRkFJTFVS
RQogI2RlZmluZSBZWV9FWElUX0ZBSUxVUkUgMgogI2VuZGlmCkBAIC0yNzczLDYgKzI2NzIsMTgg
QEAgdm9pZCB5eXNldF9sdmFsIChZWVNUWVBFICogIHl5bHZhbF9wYXJhbQogICAgIHl5bHZhbCA9
IHl5bHZhbF9wYXJhbTsKIH0KIAorWVlMVFlQRSAqeXlnZXRfbGxvYyAgKHl5c2Nhbl90IHl5c2Nh
bm5lcikKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5
eXNjYW5uZXI7CisgICAgcmV0dXJuIHl5bGxvYzsKK30KKyAgICAKK3ZvaWQgeXlzZXRfbGxvYyAo
WVlMVFlQRSAqICB5eWxsb2NfcGFyYW0gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3Ry
dWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAgIHl5
bGxvYyA9IHl5bGxvY19wYXJhbTsKK30KKyAgICAKIC8qIFVzZXItdmlzaWJsZSBBUEkgKi8KIAog
LyogeXlsZXhfaW5pdCBpcyBzcGVjaWFsIGJlY2F1c2UgaXQgY3JlYXRlcyB0aGUgc2Nhbm5lciBp
dHNlbGYsIHNvIGl0IGlzCkBAIC0yOTU0LDcgKzI4NjUsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lu
cHV0KGNoYXIqIGJ1ZiwgeXlfc2l6CiAgICAgeXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0g
cHA6OlRva2VuOjpMQVNUID8gMCA6IHRva2VuLnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBt
YXhfc2l6ZSkKICAgICAgICAgbWVtY3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwot
ICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9r
ZW4ubG9jYXRpb24ubGluZSkseXlzY2FubmVyKTsKKyAgICB5eXNldF9jb2x1bW4odG9rZW4ubG9j
YXRpb24uZmlsZSx5eXNjYW5uZXIpOworICAgIHl5c2V0X2xpbmVubyh0b2tlbi5sb2NhdGlvbi5s
aW5lLHl5c2Nhbm5lcik7CiAKICAgICBpZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9G
QVRBTF9FUlJPUigiSW5wdXQgYnVmZmVyIG92ZXJmbG93Iik7CkBAIC0yOTY4LDEyICsyODgwLDEw
IEBAIGludCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIAogICAgIGludCB0
b2tlbiA9IElERU5USUZJRVI7CiAgICAgVFN5bWJvbCogc3ltYm9sID0geXlleHRyYS0+c3ltYm9s
VGFibGUuZmluZCh5eXRleHQpOwotICAgIGlmICh5eWV4dHJhLT5sZXhBZnRlclR5cGUgPT0gZmFs
c2UgJiYgc3ltYm9sICYmIHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7CisgICAgaWYgKHN5bWJvbCAm
JiBzeW1ib2wtPmlzVmFyaWFibGUoKSkgewogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0g
c3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oc3ltYm9sKTsKLSAgICAgICAgaWYgKHZhcmlhYmxlLT5p
c1VzZXJUeXBlKCkpIHsKLSAgICAgICAgICAgIHl5ZXh0cmEtPmxleEFmdGVyVHlwZSA9IHRydWU7
CisgICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKQogICAgICAgICAgICAgdG9rZW4g
PSBUWVBFX05BTUU7Ci0gICAgICAgIH0KICAgICB9CiAgICAgeXlsdmFsLT5sZXguc3ltYm9sID0g
c3ltYm9sOwogICAgIHJldHVybiB0b2tlbjsKQEAgLTI5ODIsMjIgKzI4OTIsMTEgQEAgaW50IGNo
ZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5f
dCB5eXNjYW5uZXIpIHsKICAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRz
X3QqKSB5eXNjYW5uZXI7CiAKLSAgICB5eWV4dHJhLT5lcnJvcih5eWxpbmVubywgIklsbGVnYWwg
dXNlIG9mIHJlc2VydmVkIHdvcmQiLCB5eXRleHQsICIiKTsKKyAgICB5eWV4dHJhLT5lcnJvcigq
eXlsbG9jLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwgIiIpOwogICAg
IHl5ZXh0cmEtPnJlY292ZXIoKTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCB5eWVycm9yKFRQ
YXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbikgewotICAgIHN0cnVjdCB5
eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPnNjYW5uZXI7Ci0KLSAg
ICBpZiAoY29udGV4dC0+QWZ0ZXJFT0YpIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXlsaW5l
bm8sIHJlYXNvbiwgInVuZXhwZWN0ZWQgRU9GIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29u
dGV4dC0+ZXJyb3IoeXlsaW5lbm8sIHJlYXNvbiwgeXl0ZXh0KTsKLSAgICB9Ci0gICAgY29udGV4
dC0+cmVjb3ZlcigpOwotfQotCiBpbnQgZ2xzbGFuZ19pbml0aWFsaXplKFRQYXJzZUNvbnRleHQq
IGNvbnRleHQpIHsKICAgICB5eXNjYW5fdCBzY2FubmVyID0gTlVMTDsKICAgICBpZiAoeXlsZXhf
aW5pdF9leHRyYShjb250ZXh0LCZzY2FubmVyKSkKQEAgLTMwMjAsOCArMjkxOSw4IEBAIGludCBn
bHNsYW5nX2ZpbmFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnQKIGludCBnbHNsYW5nX3NjYW4oc2l6
ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtd
LAogICAgICAgICAgICAgICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlyZXN0
YXJ0KE5VTEwsY29udGV4dC0+c2Nhbm5lcik7Ci0gICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJj
ZUxvYygwLCAxKSxjb250ZXh0LT5zY2FubmVyKTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZh
bHNlOworICAgIHl5c2V0X2NvbHVtbigwLGNvbnRleHQtPnNjYW5uZXIpOworICAgIHl5c2V0X2xp
bmVubygxLGNvbnRleHQtPnNjYW5uZXIpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBwcmVwcm9jZXNz
b3IuCiAgICAgaWYgKCFjb250ZXh0LT5wcmVwcm9jZXNzb3IuaW5pdChjb3VudCwgc3RyaW5nLCBs
ZW5ndGgpKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xh
bmdfdGFiLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvZ2xzbGFuZ190YWIuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw3ICs1Niw3IEBACiAjZGVmaW5lIFlZUFVSRSAxCiAKIC8qIFVzaW5nIGxvY2F0aW9ucy4g
ICovCi0jZGVmaW5lIFlZTFNQX05FRURFRCAwCisjZGVmaW5lIFlZTFNQX05FRURFRCAxCiAKIAog
CkBAIC0xMTMsNTIgKzExMyw1MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0gMzAyLAogICAgICBJ
TlRDT05TVEFOVCA9IDMwMywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAotICAgICBGSUVMRF9T
RUxFQ1RJT04gPSAzMDUsCi0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJR0hUX09QID0gMzA3
LAotICAgICBJTkNfT1AgPSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAgICAgTEVfT1AgPSAz
MTAsCi0gICAgIEdFX09QID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAgICAgTkVfT1AgPSAz
MTMsCi0gICAgIEFORF9PUCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0gICAgIFhPUl9PUCA9
IDMxNiwKLSAgICAgTVVMX0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lHTiA9IDMxOCwKLSAg
ICAgQUREX0FTU0lHTiA9IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwKLSAgICAgTEVGVF9B
U1NJR04gPSAzMjEsCi0gICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAgQU5EX0FTU0lHTiA9
IDMyMywKLSAgICAgWE9SX0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdOID0gMzI1LAotICAg
ICBTVUJfQVNTSUdOID0gMzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAotICAgICBSSUdIVF9Q
QVJFTiA9IDMyOCwKLSAgICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBSSUdIVF9CUkFDS0VU
ID0gMzMwLAotICAgICBMRUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9CUkFDRSA9IDMzMiwK
LSAgICAgRE9UID0gMzMzLAotICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09MT04gPSAzMzUsCi0g
ICAgIEVRVUFMID0gMzM2LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAgIEJBTkcgPSAzMzgs
Ci0gICAgIERBU0ggPSAzMzksCi0gICAgIFRJTERFID0gMzQwLAotICAgICBQTFVTID0gMzQxLAot
ICAgICBTVEFSID0gMzQyLAotICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVSQ0VOVCA9IDM0NCwK
LSAgICAgTEVGVF9BTkdMRSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAzNDYsCi0gICAgIFZF
UlRJQ0FMX0JBUiA9IDM0NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFNUEVSU0FORCA9IDM0
OSwKLSAgICAgUVVFU1RJT04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwKKyAgICAgUklHSFRf
T1AgPSAzMDYsCisgICAgIElOQ19PUCA9IDMwNywKKyAgICAgREVDX09QID0gMzA4LAorICAgICBM
RV9PUCA9IDMwOSwKKyAgICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0gMzExLAorICAgICBO
RV9PUCA9IDMxMiwKKyAgICAgQU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9IDMxNCwKKyAgICAg
WE9SX09QID0gMzE1LAorICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBESVZfQVNTSUdOID0g
MzE3LAorICAgICBBRERfQVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdOID0gMzE5LAorICAg
ICBMRUZUX0FTU0lHTiA9IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIxLAorICAgICBBTkRf
QVNTSUdOID0gMzIyLAorICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBPUl9BU1NJR04gPSAz
MjQsCisgICAgIFNVQl9BU1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4gPSAzMjYsCisgICAg
IFJJR0hUX1BBUkVOID0gMzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgsCisgICAgIFJJR0hU
X0JSQUNLRVQgPSAzMjksCisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAgIFJJR0hUX0JSQUNF
ID0gMzMxLAorICAgICBET1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMzLAorICAgICBDT0xPTiA9
IDMzNCwKKyAgICAgRVFVQUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMzNiwKKyAgICAgQkFO
RyA9IDMzNywKKyAgICAgREFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzksCisgICAgIFBMVVMg
PSAzNDAsCisgICAgIFNUQVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAorICAgICBQRVJDRU5U
ID0gMzQzLAorICAgICBMRUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9BTkdMRSA9IDM0NSwK
KyAgICAgVkVSVElDQUxfQkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywKKyAgICAgQU1QRVJT
QU5EID0gMzQ4LAorICAgICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRpZgogLyogVG9rZW5z
LiAgKi8KQEAgLTIwOSw1MiArMjA4LDUxIEBACiAjZGVmaW5lIEZMT0FUQ09OU1RBTlQgMzAyCiAj
ZGVmaW5lIElOVENPTlNUQU5UIDMwMwogI2RlZmluZSBCT09MQ09OU1RBTlQgMzA0Ci0jZGVmaW5l
IEZJRUxEX1NFTEVDVElPTiAzMDUKLSNkZWZpbmUgTEVGVF9PUCAzMDYKLSNkZWZpbmUgUklHSFRf
T1AgMzA3Ci0jZGVmaW5lIElOQ19PUCAzMDgKLSNkZWZpbmUgREVDX09QIDMwOQotI2RlZmluZSBM
RV9PUCAzMTAKLSNkZWZpbmUgR0VfT1AgMzExCi0jZGVmaW5lIEVRX09QIDMxMgotI2RlZmluZSBO
RV9PUCAzMTMKLSNkZWZpbmUgQU5EX09QIDMxNAotI2RlZmluZSBPUl9PUCAzMTUKLSNkZWZpbmUg
WE9SX09QIDMxNgotI2RlZmluZSBNVUxfQVNTSUdOIDMxNwotI2RlZmluZSBESVZfQVNTSUdOIDMx
OAotI2RlZmluZSBBRERfQVNTSUdOIDMxOQotI2RlZmluZSBNT0RfQVNTSUdOIDMyMAotI2RlZmlu
ZSBMRUZUX0FTU0lHTiAzMjEKLSNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMgotI2RlZmluZSBBTkRf
QVNTSUdOIDMyMwotI2RlZmluZSBYT1JfQVNTSUdOIDMyNAotI2RlZmluZSBPUl9BU1NJR04gMzI1
Ci0jZGVmaW5lIFNVQl9BU1NJR04gMzI2Ci0jZGVmaW5lIExFRlRfUEFSRU4gMzI3Ci0jZGVmaW5l
IFJJR0hUX1BBUkVOIDMyOAotI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI5Ci0jZGVmaW5lIFJJR0hU
X0JSQUNLRVQgMzMwCi0jZGVmaW5lIExFRlRfQlJBQ0UgMzMxCi0jZGVmaW5lIFJJR0hUX0JSQUNF
IDMzMgotI2RlZmluZSBET1QgMzMzCi0jZGVmaW5lIENPTU1BIDMzNAotI2RlZmluZSBDT0xPTiAz
MzUKLSNkZWZpbmUgRVFVQUwgMzM2Ci0jZGVmaW5lIFNFTUlDT0xPTiAzMzcKLSNkZWZpbmUgQkFO
RyAzMzgKLSNkZWZpbmUgREFTSCAzMzkKLSNkZWZpbmUgVElMREUgMzQwCi0jZGVmaW5lIFBMVVMg
MzQxCi0jZGVmaW5lIFNUQVIgMzQyCi0jZGVmaW5lIFNMQVNIIDM0MwotI2RlZmluZSBQRVJDRU5U
IDM0NAotI2RlZmluZSBMRUZUX0FOR0xFIDM0NQotI2RlZmluZSBSSUdIVF9BTkdMRSAzNDYKLSNk
ZWZpbmUgVkVSVElDQUxfQkFSIDM0NwotI2RlZmluZSBDQVJFVCAzNDgKLSNkZWZpbmUgQU1QRVJT
QU5EIDM0OQotI2RlZmluZSBRVUVTVElPTiAzNTAKKyNkZWZpbmUgTEVGVF9PUCAzMDUKKyNkZWZp
bmUgUklHSFRfT1AgMzA2CisjZGVmaW5lIElOQ19PUCAzMDcKKyNkZWZpbmUgREVDX09QIDMwOAor
I2RlZmluZSBMRV9PUCAzMDkKKyNkZWZpbmUgR0VfT1AgMzEwCisjZGVmaW5lIEVRX09QIDMxMQor
I2RlZmluZSBORV9PUCAzMTIKKyNkZWZpbmUgQU5EX09QIDMxMworI2RlZmluZSBPUl9PUCAzMTQK
KyNkZWZpbmUgWE9SX09QIDMxNQorI2RlZmluZSBNVUxfQVNTSUdOIDMxNgorI2RlZmluZSBESVZf
QVNTSUdOIDMxNworI2RlZmluZSBBRERfQVNTSUdOIDMxOAorI2RlZmluZSBNT0RfQVNTSUdOIDMx
OQorI2RlZmluZSBMRUZUX0FTU0lHTiAzMjAKKyNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMQorI2Rl
ZmluZSBBTkRfQVNTSUdOIDMyMgorI2RlZmluZSBYT1JfQVNTSUdOIDMyMworI2RlZmluZSBPUl9B
U1NJR04gMzI0CisjZGVmaW5lIFNVQl9BU1NJR04gMzI1CisjZGVmaW5lIExFRlRfUEFSRU4gMzI2
CisjZGVmaW5lIFJJR0hUX1BBUkVOIDMyNworI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI4CisjZGVm
aW5lIFJJR0hUX0JSQUNLRVQgMzI5CisjZGVmaW5lIExFRlRfQlJBQ0UgMzMwCisjZGVmaW5lIFJJ
R0hUX0JSQUNFIDMzMQorI2RlZmluZSBET1QgMzMyCisjZGVmaW5lIENPTU1BIDMzMworI2RlZmlu
ZSBDT0xPTiAzMzQKKyNkZWZpbmUgRVFVQUwgMzM1CisjZGVmaW5lIFNFTUlDT0xPTiAzMzYKKyNk
ZWZpbmUgQkFORyAzMzcKKyNkZWZpbmUgREFTSCAzMzgKKyNkZWZpbmUgVElMREUgMzM5CisjZGVm
aW5lIFBMVVMgMzQwCisjZGVmaW5lIFNUQVIgMzQxCisjZGVmaW5lIFNMQVNIIDM0MgorI2RlZmlu
ZSBQRVJDRU5UIDM0MworI2RlZmluZSBMRUZUX0FOR0xFIDM0NAorI2RlZmluZSBSSUdIVF9BTkdM
RSAzNDUKKyNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NgorI2RlZmluZSBDQVJFVCAzNDcKKyNkZWZp
bmUgQU1QRVJTQU5EIDM0OAorI2RlZmluZSBRVUVTVElPTiAzNDkKIAogCiAKQEAgLTI4Nyw3ICsy
ODUsNiBAQAogI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgogCiAjZGVmaW5lIFlZRU5B
QkxFX05MUyAwCi0jZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCiAKICNkZWZpbmUgWVlMRVhf
UEFSQU0gY29udGV4dC0+c2Nhbm5lcgogCkBAIC0zMTQsOCArMzExLDkgQEAKIHR5cGVkZWYgdW5p
b24gWVlTVFlQRQogCiB7CisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxU
WVBFX0lTX0RFQ0xBUkVEIDEKICAgICBzdHJ1Y3QgewotICAgICAgICBUU291cmNlTG9jIGxpbmU7
CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0cmluZzsKICAgICAgICAg
ICAgIGZsb2F0IGY7CkBAIC0zMjUsNyArMzIzLDYgQEAgdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAg
ICAgICAgIFRTeW1ib2wqIHN5bWJvbDsKICAgICB9IGxleDsKICAgICBzdHJ1Y3QgewotICAgICAg
ICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAgIFRPcGVyYXRvciBvcDsKICAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7CkBAIC0zMzksOCArMzM2LDgg
QEAgdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmll
cjsKICAgICAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAgICAgICBUUGFyYW1l
dGVyIHBhcmFtOwotICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVMaW5lOwotICAgICAgICAgICAg
VFR5cGVMaXN0KiB0eXBlTGlzdDsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7CisgICAgICAg
ICAgICBURmllbGRMaXN0KiBmaWVsZExpc3Q7CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07CiB9
CkBAIC0zNTIsMjEgKzM0OSw0MSBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICMgZGVmaW5lIFlZ
U1RZUEVfSVNfVFJJVklBTCAxCiAjZW5kaWYKIAorI2lmICEgZGVmaW5lZCBZWUxUWVBFICYmICEg
ZGVmaW5lZCBZWUxUWVBFX0lTX0RFQ0xBUkVECit0eXBlZGVmIHN0cnVjdCBZWUxUWVBFCit7Cisg
IGludCBmaXJzdF9saW5lOworICBpbnQgZmlyc3RfY29sdW1uOworICBpbnQgbGFzdF9saW5lOwor
ICBpbnQgbGFzdF9jb2x1bW47Cit9IFlZTFRZUEU7CisjIGRlZmluZSB5eWx0eXBlIFlZTFRZUEUg
Lyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCisjIGRlZmluZSBZWUxUWVBFX0lT
X0RFQ0xBUkVEIDEKKyMgZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCisjZW5kaWYKIAogCiAv
KiBDb3B5IHRoZSBzZWNvbmQgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCiAKIAotZXh0
ZXJuIGludCB5eWxleChZWVNUWVBFKiB5eWx2YWxfcGFyYW0sIHZvaWQqIHl5c2Nhbm5lcik7Ci1l
eHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJl
YXNvbik7CitleHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbCwgWVlMVFlQRSogeXlsbG9j
LCB2b2lkKiB5eXNjYW5uZXIpOworc3RhdGljIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2Ms
IFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAKLSNkZWZpbmUg
RlJBR19WRVJUX09OTFkoUywgTCkgeyAgXAotICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9
IFNIX0ZSQUdNRU5UX1NIQURFUiAmJiAgXAotICAgICAgICBjb250ZXh0LT5zaGFkZXJUeXBlICE9
IFNIX1ZFUlRFWF9TSEFERVIpIHsgIFwKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBw
b3J0ZWQgaW4gdmVydGV4L2ZyYWdtZW50IHNoYWRlcnMgb25seSAiLCBTKTsgIFwKLSAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOyAgXAotICAgIH0gIFwKLX0KKyNkZWZpbmUgWVlMTE9DX0RFRkFV
TFQoQ3VycmVudCwgUmhzLCBOKSAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
aWYgKFlZSUQoTikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDEpLmZpcnN0X2Zp
bGU7ICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAxKS5m
aXJzdF9saW5lOyAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhz
LCBOKS5sYXN0X2ZpbGU7ICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhT
TE9DKFJocywgTikubGFzdF9saW5lOyAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZWxzZSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKEN1cnJl
bnQpLmZpcnN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfZmlsZTsgICBcCisgICAgICAg
IChDdXJyZW50KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2xpbmU7ICAgXAor
ICAgICAgICAoQ3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2ZpbGU7
ICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMCkubGFz
dF9saW5lOyAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICB9IHdoaWxlICgwKQogCiAjZGVmaW5lIFZFUlRFWF9PTkxZ
KFMsIEwpIHsgIFwKICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hB
REVSKSB7ICBcCkBAIC01NDIsMTQgKzU1OSwxNiBAQCB2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElO
RlJJTkdFUyBPTiBVU0VSCiAKICNpZiAoISBkZWZpbmVkIHl5b3ZlcmZsb3cgXAogICAgICAmJiAo
ISBkZWZpbmVkIF9fY3BsdXNwbHVzIFwKLQkgfHwgKGRlZmluZWQgWVlTVFlQRV9JU19UUklWSUFM
ICYmIFlZU1RZUEVfSVNfVFJJVklBTCkpKQorCSB8fCAoZGVmaW5lZCBZWUxUWVBFX0lTX1RSSVZJ
QUwgJiYgWVlMVFlQRV9JU19UUklWSUFMIFwKKwkgICAgICYmIGRlZmluZWQgWVlTVFlQRV9JU19U
UklWSUFMICYmIFlZU1RZUEVfSVNfVFJJVklBTCkpKQogCiAvKiBBIHR5cGUgdGhhdCBpcyBwcm9w
ZXJseSBhbGlnbmVkIGZvciBhbnkgc3RhY2sgbWVtYmVyLiAgKi8KIHVuaW9uIHl5YWxsb2MKIHsK
ICAgeXl0eXBlX2ludDE2IHl5c3M7CiAgIFlZU1RZUEUgeXl2czsKLSAgfTsKKyAgICBZWUxUWVBF
IHl5bHM7Cit9OwogCiAvKiBUaGUgc2l6ZSBvZiB0aGUgbWF4aW11bSBnYXAgYmV0d2VlbiBvbmUg
YWxpZ25lZCBzdGFjayBhbmQgdGhlIG5leHQuICAqLwogIyBkZWZpbmUgWVlTVEFDS19HQVBfTUFY
SU1VTSAoc2l6ZW9mICh1bmlvbiB5eWFsbG9jKSAtIDEpCkBAIC01NTcsOCArNTc2LDggQEAgdW5p
b24geXlhbGxvYwogLyogVGhlIHNpemUgb2YgYW4gYXJyYXkgbGFyZ2UgdG8gZW5vdWdoIHRvIGhv
bGQgYWxsIHN0YWNrcywgZWFjaCB3aXRoCiAgICBOIGVsZW1lbnRzLiAgKi8KICMgZGVmaW5lIFlZ
U1RBQ0tfQllURVMoTikgXAotICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNp
emVvZiAoWVlTVFlQRSkpIFwKLSAgICAgICsgWVlTVEFDS19HQVBfTUFYSU1VTSkKKyAgICAgKChO
KSAqIChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUpICsgc2l6ZW9mIChZ
WUxUWVBFKSkgXAorICAgICAgKyAyICogWVlTVEFDS19HQVBfTUFYSU1VTSkKIAogLyogQ29weSBD
T1VOVCBvYmplY3RzIGZyb20gRlJPTSB0byBUTy4gIFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9u
IGRvCiAgICBub3Qgb3ZlcmxhcC4gICovCkBAIC01OTcsMjIgKzYxNiwyMiBAQCB1bmlvbiB5eWFs
bG9jCiAjZW5kaWYKIAogLyogWVlGSU5BTCAtLSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0
aW9uIHN0YXRlLiAgKi8KLSNkZWZpbmUgWVlGSU5BTCAgNzEKKyNkZWZpbmUgWVlGSU5BTCAgNzQK
IC8qIFlZTEFTVCAtLSBMYXN0IGluZGV4IGluIFlZVEFCTEUuICAqLwotI2RlZmluZSBZWUxBU1Qg
ICAxNDE2CisjZGVmaW5lIFlZTEFTVCAgIDE0OTAKIAogLyogWVlOVE9LRU5TIC0tIE51bWJlciBv
ZiB0ZXJtaW5hbHMuICAqLwotI2RlZmluZSBZWU5UT0tFTlMgIDk2CisjZGVmaW5lIFlZTlRPS0VO
UyAgOTUKIC8qIFlZTk5UUyAtLSBOdW1iZXIgb2Ygbm9udGVybWluYWxzLiAgKi8KLSNkZWZpbmUg
WVlOTlRTICA4MworI2RlZmluZSBZWU5OVFMgIDg0CiAvKiBZWU5SVUxFUyAtLSBOdW1iZXIgb2Yg
cnVsZXMuICAqLwotI2RlZmluZSBZWU5SVUxFUyAgMjAxCisjZGVmaW5lIFlZTlJVTEVTICAyMDIK
IC8qIFlZTlJVTEVTIC0tIE51bWJlciBvZiBzdGF0ZXMuICAqLwotI2RlZmluZSBZWU5TVEFURVMg
IDMwNAorI2RlZmluZSBZWU5TVEFURVMgIDMwNwogCiAvKiBZWVRSQU5TTEFURShZWUxFWCkgLS0g
Qmlzb24gc3ltYm9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZTEVYLiAgKi8KICNkZWZpbmUg
WVlVTkRFRlRPSyAgMgotI2RlZmluZSBZWU1BWFVUT0sgICAzNTAKKyNkZWZpbmUgWVlNQVhVVE9L
ICAgMzQ5CiAKICNkZWZpbmUgWVlUUkFOU0xBVEUoWVlYKQkJCQkJCVwKICAgKCh1bnNpZ25lZCBp
bnQpIChZWVgpIDw9IFlZTUFYVVRPSyA/IHl5dHJhbnNsYXRlW1lZWF0gOiBZWVVOREVGVE9LKQpA
QCAtNjU0LDggKzY3Myw3IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXl0cmFuc2xhdGVb
XSAKICAgICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAg
ICA2MiwgICAgNjMsICAgIDY0LAogICAgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5
LCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsCiAgICAgICA3NSwgICAgNzYsICAg
IDc3LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIDgzLCAgICA4NCwKLSAg
ICAgIDg1LCAgICA4NiwgICAgODcsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICA5Miwg
ICAgOTMsICAgIDk0LAotICAgICAgOTUKKyAgICAgIDg1LCAgICA4NiwgICAgODcsICAgIDg4LCAg
ICA4OSwgICAgOTAsICAgIDkxLCAgICA5MiwgICAgOTMsICAgIDk0CiB9OwogCiAjaWYgWVlERUJV
RwpAQCAtNjYzLDExNSArNjgxLDExNiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJh
bnNsYXRlW10gCiAgICBZWVJIUy4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXBy
aHNbXSA9CiB7Ci0gICAgICAgMCwgICAgIDAsICAgICAzLCAgICAgNSwgICAgIDcsICAgICA5LCAg
ICAxMSwgICAgMTMsICAgIDE3LCAgICAxOSwKLSAgICAgIDI0LCAgICAyNiwgICAgMzAsICAgIDMz
LCAgICAzNiwgICAgMzgsICAgIDQwLCAgICA0MiwgICAgNDYsICAgIDQ5LAotICAgICAgNTIsICAg
IDU1LCAgICA1NywgICAgNjAsICAgIDY0LCAgICA2NywgICAgNjksICAgIDcxLCAgICA3MywgICAg
NzUsCi0gICAgICA3OCwgICAgODEsICAgIDg0LCAgICA4NiwgICAgODgsICAgIDkwLCAgICA5Miwg
ICAgOTYsICAgMTAwLCAgIDEwMiwKLSAgICAgMTA2LCAgIDExMCwgICAxMTIsICAgMTE0LCAgIDEx
OCwgICAxMjIsICAgMTI2LCAgIDEzMCwgICAxMzIsICAgMTM2LAotICAgICAxNDAsICAgMTQyLCAg
IDE0NCwgICAxNDYsICAgMTQ4LCAgIDE1MiwgICAxNTQsICAgMTU4LCAgIDE2MCwgICAxNjQsCi0g
ICAgIDE2NiwgICAxNzIsICAgMTc0LCAgIDE3OCwgICAxODAsICAgMTgyLCAgIDE4NCwgICAxODYs
ICAgMTg4LCAgIDE5MCwKLSAgICAgMTk0LCAgIDE5NiwgICAxOTksICAgMjAyLCAgIDIwNywgICAy
MTAsICAgMjEyLCAgIDIxNCwgICAyMTcsICAgMjIxLAotICAgICAyMjUsICAgMjI4LCAgIDIzNCwg
ICAyMzgsICAgMjQxLCAgIDI0NSwgICAyNDgsICAgMjQ5LCAgIDI1MSwgICAyNTMsCi0gICAgIDI1
NSwgICAyNTcsICAgMjU5LCAgIDI2MywgICAyNjksICAgMjc2LCAgIDI4MiwgICAyODQsICAgMjg3
LCAgIDI5MiwKLSAgICAgMjk4LCAgIDMwMywgICAzMDYsICAgMzA4LCAgIDMxMSwgICAzMTMsICAg
MzE1LCAgIDMxNywgICAzMjAsICAgMzIyLAotICAgICAzMjQsICAgMzI3LCAgIDMyOSwgICAzMzEs
ICAgMzMzLCAgIDMzNSwgICAzNDAsICAgMzQyLCAgIDM0NCwgICAzNDYsCisgICAgICAgMCwgICAg
IDAsICAgICAzLCAgICAgNSwgICAgIDcsICAgICA5LCAgICAxMSwgICAgMTMsICAgIDE1LCAgICAx
NywKKyAgICAgIDIxLCAgICAyMywgICAgMjgsICAgIDMwLCAgICAzNCwgICAgMzcsICAgIDQwLCAg
ICA0MiwgICAgNDQsICAgIDQ2LAorICAgICAgNTAsICAgIDUzLCAgICA1NiwgICAgNTksICAgIDYx
LCAgICA2NCwgICAgNjgsICAgIDcxLCAgICA3MywgICAgNzUsCisgICAgICA3NywgICAgODAsICAg
IDgzLCAgICA4NiwgICAgODgsICAgIDkwLCAgICA5MiwgICAgOTQsICAgIDk4LCAgIDEwMiwKKyAg
ICAgMTA0LCAgIDEwOCwgICAxMTIsICAgMTE0LCAgIDExNiwgICAxMjAsICAgMTI0LCAgIDEyOCwg
ICAxMzIsICAgMTM0LAorICAgICAxMzgsICAgMTQyLCAgIDE0NCwgICAxNDYsICAgMTQ4LCAgIDE1
MCwgICAxNTQsICAgMTU2LCAgIDE2MCwgICAxNjIsCisgICAgIDE2NiwgICAxNjgsICAgMTc0LCAg
IDE3NiwgICAxODAsICAgMTgyLCAgIDE4NCwgICAxODYsICAgMTg4LCAgIDE5MCwKKyAgICAgMTky
LCAgIDE5NiwgICAxOTgsICAgMjAxLCAgIDIwNCwgICAyMDksICAgMjEyLCAgIDIxNCwgICAyMTYs
ICAgMjE5LAorICAgICAyMjMsICAgMjI3LCAgIDIzMCwgICAyMzYsICAgMjQwLCAgIDI0MywgICAy
NDcsICAgMjUwLCAgIDI1MSwgICAyNTMsCisgICAgIDI1NSwgICAyNTcsICAgMjU5LCAgIDI2MSwg
ICAyNjUsICAgMjcxLCAgIDI3OCwgICAyODQsICAgMjg2LCAgIDI4OSwKKyAgICAgMjk0LCAgIDMw
MCwgICAzMDUsICAgMzA4LCAgIDMxMCwgICAzMTMsICAgMzE1LCAgIDMxNywgICAzMTksICAgMzIy
LAorICAgICAzMjQsICAgMzI2LCAgIDMyOSwgICAzMzEsICAgMzMzLCAgIDMzNSwgICAzMzcsICAg
MzQyLCAgIDM0NCwgICAzNDYsCiAgICAgIDM0OCwgICAzNTAsICAgMzUyLCAgIDM1NCwgICAzNTYs
ICAgMzU4LCAgIDM2MCwgICAzNjIsICAgMzY0LCAgIDM2NiwKLSAgICAgMzY4LCAgIDM3MCwgICAz
NzIsICAgMzc0LCAgIDM3NiwgICAzNzgsICAgMzgwLCAgIDM4MiwgICAzODQsICAgMzg1LAotICAg
ICAzOTIsICAgMzkzLCAgIDM5OSwgICA0MDEsICAgNDA0LCAgIDQwOCwgICA0MTAsICAgNDE0LCAg
IDQxNiwgICA0MjEsCi0gICAgIDQyMywgICA0MjUsICAgNDI3LCAgIDQyOSwgICA0MzEsICAgNDMz
LCAgIDQzNSwgICA0MzcsICAgNDM5LCAgIDQ0MiwKLSAgICAgNDQzLCAgIDQ0NCwgICA0NTAsICAg
NDUyLCAgIDQ1NCwgICA0NTUsICAgNDU4LCAgIDQ1OSwgICA0NjIsICAgNDY1LAotICAgICA0Njks
ICAgNDcxLCAgIDQ3NCwgICA0NzYsICAgNDc5LCAgIDQ4NSwgICA0ODksICAgNDkxLCAgIDQ5Mywg
ICA0OTgsCi0gICAgIDQ5OSwgICA1MDYsICAgNTA3LCAgIDUxNiwgICA1MTcsICAgNTI1LCAgIDUy
NywgICA1MjksICAgNTMxLCAgIDUzMiwKLSAgICAgNTM1LCAgIDUzOSwgICA1NDIsICAgNTQ1LCAg
IDU0OCwgICA1NTIsICAgNTU1LCAgIDU1NywgICA1NjAsICAgNTYyLAotICAgICA1NjQsICAgNTY1
CisgICAgIDM2OCwgICAzNzAsICAgMzcyLCAgIDM3NCwgICAzNzYsICAgMzc4LCAgIDM4MCwgICAz
ODIsICAgMzg0LCAgIDM4NiwKKyAgICAgMzg3LCAgIDM5NCwgICAzOTUsICAgNDAxLCAgIDQwMywg
ICA0MDYsICAgNDEwLCAgIDQxMiwgICA0MTYsICAgNDE4LAorICAgICA0MjMsICAgNDI1LCAgIDQy
NywgICA0MjksICAgNDMxLCAgIDQzMywgICA0MzUsICAgNDM3LCAgIDQzOSwgICA0NDEsCisgICAg
IDQ0NCwgICA0NDUsICAgNDQ2LCAgIDQ1MiwgICA0NTQsICAgNDU2LCAgIDQ1NywgICA0NjAsICAg
NDYxLCAgIDQ2NCwKKyAgICAgNDY3LCAgIDQ3MSwgICA0NzMsICAgNDc2LCAgIDQ3OCwgICA0ODEs
ICAgNDg3LCAgIDQ5MSwgICA0OTMsICAgNDk1LAorICAgICA1MDAsICAgNTAxLCAgIDUwOCwgICA1
MDksICAgNTE4LCAgIDUxOSwgICA1MjcsICAgNTI5LCAgIDUzMSwgICA1MzMsCisgICAgIDUzNCwg
ICA1MzcsICAgNTQxLCAgIDU0NCwgICA1NDcsICAgNTUwLCAgIDU1NCwgICA1NTcsICAgNTU5LCAg
IDU2MiwKKyAgICAgNTY0LCAgIDU2NiwgICA1NjcKIH07CiAKIC8qIFlZUkhTIC0tIEEgYC0xJy1z
ZXBhcmF0ZWQgbGlzdCBvZiB0aGUgcnVsZXMnIFJIUy4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBl
X2ludDE2IHl5cmhzW10gPQogewotICAgICAxNzUsICAgICAwLCAgICAtMSwgICAgNDUsICAgIC0x
LCAgICA5NywgICAgLTEsICAgIDQ4LCAgICAtMSwgICAgNDcsCi0gICAgICAtMSwgICAgNDksICAg
IC0xLCAgICA3MiwgICAxMjQsICAgIDczLCAgICAtMSwgICAgOTgsICAgIC0xLCAgICA5OSwKLSAg
ICAgIDc0LCAgIDEwMCwgICAgNzUsICAgIC0xLCAgIDEwMSwgICAgLTEsICAgIDk5LCAgICA3OCwg
ICAgNTAsICAgIC0xLAotICAgICAgOTksICAgIDUzLCAgICAtMSwgICAgOTksICAgIDU0LCAgICAt
MSwgICAxMjQsICAgIC0xLCAgIDEwMiwgICAgLTEsCi0gICAgIDEwMywgICAgLTEsICAgIDk5LCAg
ICA3OCwgICAxMDMsICAgIC0xLCAgIDEwNSwgICAgNzMsICAgIC0xLCAgIDEwNCwKLSAgICAgIDcz
LCAgICAtMSwgICAxMDYsICAgIDM5LCAgICAtMSwgICAxMDYsICAgIC0xLCAgIDEwNiwgICAxMjIs
ICAgIC0xLAotICAgICAxMDUsICAgIDc5LCAgIDEyMiwgICAgLTEsICAgMTA3LCAgICA3MiwgICAg
LTEsICAgMTQyLCAgICAtMSwgICAgNDUsCi0gICAgICAtMSwgICAgNTAsICAgIC0xLCAgICA5OSwg
ICAgLTEsICAgIDUzLCAgIDEwOCwgICAgLTEsICAgIDU0LCAgIDEwOCwKLSAgICAgIC0xLCAgIDEw
OSwgICAxMDgsICAgIC0xLCAgICA4NiwgICAgLTEsICAgIDg0LCAgICAtMSwgICAgODMsICAgIC0x
LAotICAgICAxMDgsICAgIC0xLCAgIDExMCwgICAgODcsICAgMTA4LCAgICAtMSwgICAxMTAsICAg
IDg4LCAgIDEwOCwgICAgLTEsCi0gICAgIDExMCwgICAgLTEsICAgMTExLCAgICA4NiwgICAxMTAs
ICAgIC0xLCAgIDExMSwgICAgODQsICAgMTEwLCAgICAtMSwKLSAgICAgMTExLCAgICAtMSwgICAx
MTIsICAgIC0xLCAgIDExMywgICAgOTAsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDkxLAotICAg
ICAxMTIsICAgIC0xLCAgIDExMywgICAgNTUsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDU2LCAg
IDExMiwgICAgLTEsCi0gICAgIDExMywgICAgLTEsICAgMTE0LCAgICA1NywgICAxMTMsICAgIC0x
LCAgIDExNCwgICAgNTgsICAgMTEzLCAgICAtMSwKLSAgICAgMTE0LCAgICAtMSwgICAxMTUsICAg
IC0xLCAgIDExNiwgICAgLTEsICAgMTE3LCAgICAtMSwgICAxMTgsICAgIDU5LAotICAgICAxMTcs
ICAgIC0xLCAgIDExOCwgICAgLTEsICAgMTE5LCAgICA2MSwgICAxMTgsICAgIC0xLCAgIDExOSwg
ICAgLTEsCi0gICAgIDEyMCwgICAgNjAsICAgMTE5LCAgICAtMSwgICAxMjAsICAgIC0xLCAgIDEy
MCwgICAgOTUsICAgMTI0LCAgICA4MCwKLSAgICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAg
IDEwOCwgICAxMjMsICAgMTIyLCAgICAtMSwgICAgODEsICAgIC0xLAotICAgICAgNjIsICAgIC0x
LCAgICA2MywgICAgLTEsICAgIDY0LCAgICAtMSwgICAgNzEsICAgIC0xLCAgIDEyMiwgICAgLTEs
Ci0gICAgIDEyNCwgICAgNzksICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEyNywgICAg
ODIsICAgIC0xLCAgIDEzNSwKLSAgICAgIDgyLCAgICAtMSwgICAgIDcsICAgMTQwLCAgIDE0MSwg
ICAgODIsICAgIC0xLCAgIDEyOCwgICAgNzMsICAgIC0xLAotICAgICAxMzAsICAgIC0xLCAgIDEy
OSwgICAgLTEsICAgMTMwLCAgIDEzMiwgICAgLTEsICAgMTI5LCAgICA3OSwgICAxMzIsCi0gICAg
ICAtMSwgICAxMzcsICAgIDQ1LCAgICA3MiwgICAgLTEsICAgMTM5LCAgICA0NSwgICAgLTEsICAg
MTM5LCAgICA0NSwKLSAgICAgIDc0LCAgIDEyNSwgICAgNzUsICAgIC0xLCAgIDEzOCwgICAxMzMs
ICAgMTMxLCAgICAtMSwgICAxMzMsICAgMTMxLAotICAgICAgLTEsICAgMTM4LCAgIDEzMywgICAx
MzQsICAgIC0xLCAgIDEzMywgICAxMzQsICAgIC0xLCAgICAtMSwgICAgMzMsCi0gICAgICAtMSwg
ICAgMzQsICAgIC0xLCAgICAzNSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAxMzYsICAgIC0xLCAg
IDEzNSwKLSAgICAgIDc5LCAgICA0NSwgICAgLTEsICAgMTM1LCAgICA3OSwgICAgNDUsICAgIDc0
LCAgICA3NSwgICAgLTEsICAgMTM1LAotICAgICAgNzksICAgIDQ1LCAgICA3NCwgICAxMjUsICAg
IDc1LCAgICAtMSwgICAxMzUsICAgIDc5LCAgICA0NSwgICAgODEsCi0gICAgIDE1MCwgICAgLTEs
ICAgMTM3LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3NCwK
LSAgICAgIDc1LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3NCwgICAxMjUsICAgIDc1LCAgICAt
MSwgICAxMzcsICAgIDQ1LAotICAgICAgODEsICAgMTUwLCAgICAtMSwgICAgIDMsICAgIDQ1LCAg
ICAtMSwgICAxMzksICAgIC0xLCAgIDEzOCwgICAxMzksCi0gICAgICAtMSwgICAgIDksICAgIC0x
LCAgICAgOCwgICAgLTEsICAgIDM3LCAgICAtMSwgICAgIDMsICAgIDM3LCAgICAtMSwKLSAgICAg
IDM2LCAgICAtMSwgICAxNDEsICAgIC0xLCAgIDE0MCwgICAxNDEsICAgIC0xLCAgICAgNCwgICAg
LTEsICAgICA1LAotICAgICAgLTEsICAgICA2LCAgICAtMSwgICAxNDIsICAgIC0xLCAgIDE0Miwg
ICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsCi0gICAgICAzOSwgICAgLTEsICAgIDExLCAgICAt
MSwgICAgMTIsICAgIC0xLCAgICAxMCwgICAgLTEsICAgIDI3LCAgICAtMSwKLSAgICAgIDI4LCAg
ICAtMSwgICAgMjksICAgIC0xLCAgICAyMSwgICAgLTEsICAgIDIyLCAgICAtMSwgICAgMjMsICAg
IC0xLAotICAgICAgMjQsICAgIC0xLCAgICAyNSwgICAgLTEsICAgIDI2LCAgICAtMSwgICAgMzAs
ICAgIC0xLCAgICAzMSwgICAgLTEsCi0gICAgICAzMiwgICAgLTEsICAgIDQxLCAgICAtMSwgICAg
NDIsICAgIC0xLCAgICA0MywgICAgLTEsICAgIDQ0LCAgICAtMSwKLSAgICAgMTQzLCAgICAtMSwg
ICAgNDYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDQ1LCAgICA3NiwgICAxNDQsICAgMTQ2LAot
ICAgICAgNzcsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDc2LCAgIDE0NSwgICAxNDYsICAgIDc3
LCAgICAtMSwgICAxNDcsCi0gICAgICAtMSwgICAxNDYsICAgMTQ3LCAgICAtMSwgICAxMzksICAg
MTQ4LCAgICA4MiwgICAgLTEsICAgMTQ5LCAgICAtMSwKLSAgICAgMTQ4LCAgICA3OSwgICAxNDks
ICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDQ1LCAgICA3NCwgICAxMjUsICAgIDc1LAotICAgICAg
LTEsICAgMTIyLCAgICAtMSwgICAxMjYsICAgIC0xLCAgIDE1NCwgICAgLTEsICAgMTUzLCAgICAt
MSwgICAxNTEsCi0gICAgICAtMSwgICAxNjMsICAgIC0xLCAgIDE2NCwgICAgLTEsICAgMTY3LCAg
ICAtMSwgICAxNzQsICAgIC0xLCAgICA3NiwKLSAgICAgIDc3LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA3NiwgICAxNTUsICAgMTYyLCAgIDE1NiwgICAgNzcsICAgIC0xLAotICAgICAxNjEsICAg
IC0xLCAgIDE1MywgICAgLTEsICAgIC0xLCAgIDE1OSwgICAxNjEsICAgIC0xLCAgICAtMSwgICAx
NjAsCi0gICAgIDE1MywgICAgLTEsICAgIDc2LCAgICA3NywgICAgLTEsICAgIDc2LCAgIDE2Miwg
ICAgNzcsICAgIC0xLCAgIDE1MiwKLSAgICAgIC0xLCAgIDE2MiwgICAxNTIsICAgIC0xLCAgICA4
MiwgICAgLTEsICAgMTI0LCAgICA4MiwgICAgLTEsICAgIDE4LAotICAgICAgNzIsICAgMTI0LCAg
ICA3MywgICAxNjUsICAgIC0xLCAgIDE1OCwgICAgMTYsICAgMTU4LCAgICAtMSwgICAxNTgsCi0g
ICAgICAtMSwgICAxMjQsICAgIC0xLCAgIDEzNywgICAgNDUsICAgIDgxLCAgIDE1MCwgICAgLTEs
ICAgIC0xLCAgICA0MCwKLSAgICAgIDcyLCAgIDE2OCwgICAxNjYsICAgIDczLCAgIDE1NywgICAg
LTEsICAgIC0xLCAgICAxNSwgICAxNjksICAgMTU4LAotICAgICAgNDAsICAgIDcyLCAgIDEyNCwg
ICAgNzMsICAgIDgyLCAgICAtMSwgICAgLTEsICAgIDE3LCAgICA3MiwgICAxNzAsCi0gICAgIDE3
MSwgICAxNzMsICAgIDczLCAgIDE1NywgICAgLTEsICAgMTYzLCAgICAtMSwgICAxNTEsICAgIC0x
LCAgIDE2NiwKLSAgICAgIC0xLCAgICAtMSwgICAxNzIsICAgIDgyLCAgICAtMSwgICAxNzIsICAg
IDgyLCAgIDEyNCwgICAgLTEsICAgIDE0LAotICAgICAgODIsICAgIC0xLCAgICAxMywgICAgODIs
ICAgIC0xLCAgICAyMCwgICAgODIsICAgIC0xLCAgICAyMCwgICAxMjQsCi0gICAgICA4MiwgICAg
LTEsICAgIDE5LCAgICA4MiwgICAgLTEsICAgMTc2LCAgICAtMSwgICAxNzUsICAgMTc2LCAgICAt
MSwKLSAgICAgMTc3LCAgICAtMSwgICAxMjYsICAgIC0xLCAgICAtMSwgICAxMjcsICAgMTc4LCAg
IDE2MSwgICAgLTEKKyAgICAgMTc1LCAgICAgMCwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgNDYs
ICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDk3LAorICAgICAgLTEsICAgIDQ4LCAgICAtMSwgICAg
NDcsICAgIC0xLCAgICA0OSwgICAgLTEsICAgIDcxLCAgIDEyNCwgICAgNzIsCisgICAgICAtMSwg
ICAgOTgsICAgIC0xLCAgICA5OSwgICAgNzMsICAgMTAwLCAgICA3NCwgICAgLTEsICAgMTAxLCAg
ICAtMSwKKyAgICAgIDk5LCAgICA3NywgICAgOTYsICAgIC0xLCAgICA5OSwgICAgNTIsICAgIC0x
LCAgICA5OSwgICAgNTMsICAgIC0xLAorICAgICAxMjQsICAgIC0xLCAgIDEwMiwgICAgLTEsICAg
MTAzLCAgICAtMSwgICAgOTksICAgIDc3LCAgIDEwMywgICAgLTEsCisgICAgIDEwNSwgICAgNzIs
ICAgIC0xLCAgIDEwNCwgICAgNzIsICAgIC0xLCAgIDEwNiwgICAgMzksICAgIC0xLCAgIDEwNiwK
KyAgICAgIC0xLCAgIDEwNiwgICAxMjIsICAgIC0xLCAgIDEwNSwgICAgNzgsICAgMTIyLCAgICAt
MSwgICAxMDcsICAgIDcxLAorICAgICAgLTEsICAgMTQyLCAgICAtMSwgICAgNDUsICAgIC0xLCAg
ICA5OSwgICAgLTEsICAgIDUyLCAgIDEwOCwgICAgLTEsCisgICAgICA1MywgICAxMDgsICAgIC0x
LCAgIDEwOSwgICAxMDgsICAgIC0xLCAgICA4NSwgICAgLTEsICAgIDgzLCAgICAtMSwKKyAgICAg
IDgyLCAgICAtMSwgICAxMDgsICAgIC0xLCAgIDExMCwgICAgODYsICAgMTA4LCAgICAtMSwgICAx
MTAsICAgIDg3LAorICAgICAxMDgsICAgIC0xLCAgIDExMCwgICAgLTEsICAgMTExLCAgICA4NSwg
ICAxMTAsICAgIC0xLCAgIDExMSwgICAgODMsCisgICAgIDExMCwgICAgLTEsICAgMTExLCAgICAt
MSwgICAxMTIsICAgIC0xLCAgIDExMywgICAgODksICAgMTEyLCAgICAtMSwKKyAgICAgMTEzLCAg
ICA5MCwgICAxMTIsICAgIC0xLCAgIDExMywgICAgNTQsICAgMTEyLCAgICAtMSwgICAxMTMsICAg
IDU1LAorICAgICAxMTIsICAgIC0xLCAgIDExMywgICAgLTEsICAgMTE0LCAgICA1NiwgICAxMTMs
ICAgIC0xLCAgIDExNCwgICAgNTcsCisgICAgIDExMywgICAgLTEsICAgMTE0LCAgICAtMSwgICAx
MTUsICAgIC0xLCAgIDExNiwgICAgLTEsICAgMTE3LCAgICAtMSwKKyAgICAgMTE4LCAgICA1OCwg
ICAxMTcsICAgIC0xLCAgIDExOCwgICAgLTEsICAgMTE5LCAgICA2MCwgICAxMTgsICAgIC0xLAor
ICAgICAxMTksICAgIC0xLCAgIDEyMCwgICAgNTksICAgMTE5LCAgICAtMSwgICAxMjAsICAgIC0x
LCAgIDEyMCwgICAgOTQsCisgICAgIDEyNCwgICAgNzksICAgMTIyLCAgICAtMSwgICAxMjEsICAg
IC0xLCAgIDEwOCwgICAxMjMsICAgMTIyLCAgICAtMSwKKyAgICAgIDgwLCAgICAtMSwgICAgNjEs
ICAgIC0xLCAgICA2MiwgICAgLTEsICAgIDYzLCAgICAtMSwgICAgNzAsICAgIC0xLAorICAgICAx
MjIsICAgIC0xLCAgIDEyNCwgICAgNzgsICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEy
NywgICAgODEsCisgICAgICAtMSwgICAxMzUsICAgIDgxLCAgICAtMSwgICAgIDcsICAgMTQwLCAg
IDE0MSwgICAgODEsICAgIC0xLCAgIDEyOCwKKyAgICAgIDcyLCAgICAtMSwgICAxMzAsICAgIC0x
LCAgIDEyOSwgICAgLTEsICAgMTMwLCAgIDEzMiwgICAgLTEsICAgMTI5LAorICAgICAgNzgsICAg
MTMyLCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3MSwgICAgLTEsICAgMTM5LCAgICA5NiwgICAg
LTEsCisgICAgIDEzOSwgICAgOTYsICAgIDczLCAgIDEyNSwgICAgNzQsICAgIC0xLCAgIDEzOCwg
ICAxMzMsICAgMTMxLCAgICAtMSwKKyAgICAgMTMzLCAgIDEzMSwgICAgLTEsICAgMTM4LCAgIDEz
MywgICAxMzQsICAgIC0xLCAgIDEzMywgICAxMzQsICAgIC0xLAorICAgICAgLTEsICAgIDMzLCAg
ICAtMSwgICAgMzQsICAgIC0xLCAgICAzNSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAxMzYsCisg
ICAgICAtMSwgICAxMzUsICAgIDc4LCAgICA5NiwgICAgLTEsICAgMTM1LCAgICA3OCwgICAgOTYs
ICAgIDczLCAgICA3NCwKKyAgICAgIC0xLCAgIDEzNSwgICAgNzgsICAgIDk2LCAgICA3MywgICAx
MjUsICAgIDc0LCAgICAtMSwgICAxMzUsICAgIDc4LAorICAgICAgOTYsICAgIDgwLCAgIDE1MCwg
ICAgLTEsICAgMTM3LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICAtMSwgICAxMzcsCisgICAgICA5
NiwgICAgNzMsICAgIDc0LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICA3MywgICAxMjUsICAgIDc0
LCAgICAtMSwKKyAgICAgMTM3LCAgICA5NiwgICAgODAsICAgMTUwLCAgICAtMSwgICAgIDMsICAg
IDQ1LCAgICAtMSwgICAxMzksICAgIC0xLAorICAgICAxMzgsICAgMTM5LCAgICAtMSwgICAgIDks
ICAgIC0xLCAgICAgOCwgICAgLTEsICAgIDM3LCAgICAtMSwgICAgIDMsCisgICAgICAzNywgICAg
LTEsICAgIDM2LCAgICAtMSwgICAxNDEsICAgIC0xLCAgIDE0MCwgICAxNDEsICAgIC0xLCAgICAg
NCwKKyAgICAgIC0xLCAgICAgNSwgICAgLTEsICAgICA2LCAgICAtMSwgICAxNDIsICAgIC0xLCAg
IDE0MiwgICAgNzMsICAgMTI1LAorICAgICAgNzQsICAgIC0xLCAgICAzOSwgICAgLTEsICAgIDEx
LCAgICAtMSwgICAgMTIsICAgIC0xLCAgICAxMCwgICAgLTEsCisgICAgICAyNywgICAgLTEsICAg
IDI4LCAgICAtMSwgICAgMjksICAgIC0xLCAgICAyMSwgICAgLTEsICAgIDIyLCAgICAtMSwKKyAg
ICAgIDIzLCAgICAtMSwgICAgMjQsICAgIC0xLCAgICAyNSwgICAgLTEsICAgIDI2LCAgICAtMSwg
ICAgMzAsICAgIC0xLAorICAgICAgMzEsICAgIC0xLCAgICAzMiwgICAgLTEsICAgIDQxLCAgICAt
MSwgICAgNDIsICAgIC0xLCAgICA0MywgICAgLTEsCisgICAgICA0NCwgICAgLTEsICAgMTQzLCAg
ICAtMSwgICAgNDYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDk2LCAgICA3NSwKKyAgICAgMTQ0
LCAgIDE0NiwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDc1LCAgIDE0NSwgICAxNDYs
ICAgIDc2LAorICAgICAgLTEsICAgMTQ3LCAgICAtMSwgICAxNDYsICAgMTQ3LCAgICAtMSwgICAx
MzksICAgMTQ4LCAgICA4MSwgICAgLTEsCisgICAgIDE0OSwgICAgLTEsICAgMTQ4LCAgICA3OCwg
ICAxNDksICAgIC0xLCAgICA5NiwgICAgLTEsICAgIDk2LCAgICA3MywKKyAgICAgMTI1LCAgICA3
NCwgICAgLTEsICAgMTIyLCAgICAtMSwgICAxMjYsICAgIC0xLCAgIDE1NCwgICAgLTEsICAgMTUz
LAorICAgICAgLTEsICAgMTUxLCAgICAtMSwgICAxNjMsICAgIC0xLCAgIDE2NCwgICAgLTEsICAg
MTY3LCAgICAtMSwgICAxNzQsCisgICAgICAtMSwgICAgNzUsICAgIDc2LCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA3NSwgICAxNTUsICAgMTYyLCAgIDE1NiwKKyAgICAgIDc2LCAgICAtMSwgICAx
NjEsICAgIC0xLCAgIDE1MywgICAgLTEsICAgIC0xLCAgIDE1OSwgICAxNjEsICAgIC0xLAorICAg
ICAgLTEsICAgMTYwLCAgIDE1MywgICAgLTEsICAgIDc1LCAgICA3NiwgICAgLTEsICAgIDc1LCAg
IDE2MiwgICAgNzYsCisgICAgICAtMSwgICAxNTIsICAgIC0xLCAgIDE2MiwgICAxNTIsICAgIC0x
LCAgICA4MSwgICAgLTEsICAgMTI0LCAgICA4MSwKKyAgICAgIC0xLCAgICAxOCwgICAgNzEsICAg
MTI0LCAgICA3MiwgICAxNjUsICAgIC0xLCAgIDE1OCwgICAgMTYsICAgMTU4LAorICAgICAgLTEs
ICAgMTU4LCAgICAtMSwgICAxMjQsICAgIC0xLCAgIDEzNywgICAgOTYsICAgIDgwLCAgIDE1MCwg
ICAgLTEsCisgICAgICAtMSwgICAgNDAsICAgIDcxLCAgIDE2OCwgICAxNjYsICAgIDcyLCAgIDE1
NywgICAgLTEsICAgIC0xLCAgICAxNSwKKyAgICAgMTY5LCAgIDE1OCwgICAgNDAsICAgIDcxLCAg
IDEyNCwgICAgNzIsICAgIDgxLCAgICAtMSwgICAgLTEsICAgIDE3LAorICAgICAgNzEsICAgMTcw
LCAgIDE3MSwgICAxNzMsICAgIDcyLCAgIDE1NywgICAgLTEsICAgMTYzLCAgICAtMSwgICAxNTEs
CisgICAgICAtMSwgICAxNjYsICAgIC0xLCAgICAtMSwgICAxNzIsICAgIDgxLCAgICAtMSwgICAx
NzIsICAgIDgxLCAgIDEyNCwKKyAgICAgIC0xLCAgICAxNCwgICAgODEsICAgIC0xLCAgICAxMywg
ICAgODEsICAgIC0xLCAgICAyMCwgICAgODEsICAgIC0xLAorICAgICAgMjAsICAgMTI0LCAgICA4
MSwgICAgLTEsICAgIDE5LCAgICA4MSwgICAgLTEsICAgMTc2LCAgICAtMSwgICAxNzUsCisgICAg
IDE3NiwgICAgLTEsICAgMTc3LCAgICAtMSwgICAxMjYsICAgIC0xLCAgICAtMSwgICAxMjcsICAg
MTc4LCAgIDE2MSwKKyAgICAgIC0xCiB9OwogCiAvKiBZWVJMSU5FW1lZTl0gLS0gc291cmNlIGxp
bmUgd2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8KIHN0YXRpYyBjb25zdCB5
eXR5cGVfdWludDE2IHl5cmxpbmVbXSA9CiB7Ci0gICAgICAgMCwgICAxNjgsICAgMTY4LCAgIDIw
MywgICAyMDYsICAgMjE5LCAgIDIyNCwgICAyMjksICAgMjM1LCAgIDIzOCwKLSAgICAgMzE3LCAg
IDMyMCwgICA0MjEsICAgNDMxLCAgIDQ0NCwgICA0NTIsICAgNTUyLCAgIDU1NSwgICA1NjMsICAg
NTY3LAotICAgICA1NzQsICAgNTc4LCAgIDU4NSwgICA1OTEsICAgNjAwLCAgIDYwOCwgICA2NjMs
ICAgNjcwLCAgIDY4MCwgICA2ODMsCi0gICAgIDY5MywgICA3MDMsICAgNzI0LCAgIDcyNSwgICA3
MjYsICAgNzMxLCAgIDczMiwgICA3NDEsICAgNzUzLCAgIDc1NCwKLSAgICAgNzYyLCAgIDc3Mywg
ICA3NzcsICAgNzc4LCAgIDc4OCwgICA3OTgsICAgODA4LCAgIDgyMSwgICA4MjIsICAgODMyLAot
ICAgICA4NDUsICAgODQ5LCAgIDg1MywgICA4NTcsICAgODU4LCAgIDg3MSwgICA4NzIsICAgODg1
LCAgIDg4NiwgICA4OTksCi0gICAgIDkwMCwgICA5MTcsICAgOTE4LCAgIDkzMSwgICA5MzIsICAg
OTMzLCAgIDkzNCwgICA5MzUsICAgOTM5LCAgIDk0MiwKLSAgICAgOTUzLCAgIDk2MSwgICA5ODgs
ICAgOTkzLCAgMTAwNywgIDEwNDUsICAxMDQ4LCAgMTA1NSwgIDEwNjMsICAxMDg0LAotICAgIDEx
MDUsICAxMTE2LCAgMTE0NSwgIDExNTAsICAxMTYwLCAgMTE2NSwgIDExNzUsICAxMTc4LCAgMTE4
MSwgIDExODQsCi0gICAgMTE5MCwgIDExOTcsICAxMjAwLCAgMTIyMiwgIDEyNDAsICAxMjY0LCAg
MTI4NywgIDEyOTEsICAxMzA5LCAgMTMxNywKLSAgICAxMzQ5LCAgMTM2OSwgIDE0NTgsICAxNDY3
LCAgMTQ5MCwgIDE0OTMsICAxNDk5LCAgMTUwNywgIDE1MTUsICAxNTIzLAotICAgIDE1MzMsICAx
NTQwLCAgMTU0MywgIDE1NDYsICAxNTUyLCAgMTU1NSwgIDE1NzAsICAxNTc0LCAgMTU3OCwgIDE1
ODIsCi0gICAgMTU5MSwgIDE1OTYsICAxNjAxLCAgMTYwNiwgIDE2MTEsICAxNjE2LCAgMTYyMSwg
IDE2MjYsICAxNjMxLCAgMTYzNiwKLSAgICAxNjQyLCAgMTY0OCwgIDE2NTQsICAxNjU5LCAgMTY2
NCwgIDE2NzMsICAxNjgyLCAgMTY4NywgIDE3MDAsICAxNzAwLAotICAgIDE3MTQsICAxNzE0LCAg
MTcyMywgIDE3MjYsICAxNzQxLCAgMTc3NywgIDE3ODEsICAxNzg3LCAgMTc5NSwgIDE4MTEsCi0g
ICAgMTgxNSwgIDE4MTksICAxODIwLCAgMTgyNiwgIDE4MjcsICAxODI4LCAgMTgyOSwgIDE4MzAs
ICAxODM0LCAgMTgzNSwKLSAgICAxODM1LCAgMTgzNSwgIDE4NDUsICAxODQ2LCAgMTg1MCwgIDE4
NTAsICAxODUxLCAgMTg1MSwgIDE4NTYsICAxODU5LAotICAgIDE4NjksICAxODcyLCAgMTg3OCwg
IDE4NzksICAxODgzLCAgMTg5MSwgIDE4OTUsICAxOTA1LCAgMTkxMCwgIDE5MjcsCi0gICAgMTky
NywgIDE5MzIsICAxOTMyLCAgMTkzOSwgIDE5MzksICAxOTQ3LCAgMTk1MCwgIDE5NTYsICAxOTU5
LCAgMTk2NSwKLSAgICAxOTY5LCAgMTk3NiwgIDE5ODMsICAxOTkwLCAgMTk5NywgIDIwMDgsICAy
MDE3LCAgMjAyMSwgIDIwMjgsICAyMDMxLAotICAgIDIwMzcsICAyMDM3CisgICAgICAgMCwgICAx
NzYsICAgMTc2LCAgIDE3NywgICAxODAsICAgMjIzLCAgIDIyNiwgICAyMzksICAgMjQ0LCAgIDI0
OSwKKyAgICAgMjU1LCAgIDI1OCwgICAyNjEsICAgMjY0LCAgIDM1OSwgICAzNjksICAgMzgyLCAg
IDM5MCwgICA0OTAsICAgNDkzLAorICAgICA1MDEsICAgNTA0LCAgIDUxMCwgICA1MTQsICAgNTIx
LCAgIDUyNywgICA1MzYsICAgNTQ0LCAgIDU5OSwgICA2MDksCisgICAgIDYxMiwgICA2MjIsICAg
NjMyLCAgIDY1MywgICA2NTQsICAgNjU1LCAgIDY2MCwgICA2NjEsICAgNjY5LCAgIDY4MCwKKyAg
ICAgNjgxLCAgIDY4OSwgICA3MDAsICAgNzA0LCAgIDcwNSwgICA3MTUsICAgNzI1LCAgIDczNSwg
ICA3NDgsICAgNzQ5LAorICAgICA3NTksICAgNzcyLCAgIDc3NiwgICA3ODAsICAgNzg0LCAgIDc4
NSwgICA3OTgsICAgNzk5LCAgIDgxMiwgICA4MTMsCisgICAgIDgyNiwgICA4MjcsICAgODQ0LCAg
IDg0NSwgICA4NTgsICAgODU5LCAgIDg2MCwgICA4NjEsICAgODYyLCAgIDg2NiwKKyAgICAgODY5
LCAgIDg4MCwgICA4ODgsICAgOTE1LCAgIDkyMCwgICA5MzQsICAgOTg5LCAgIDk5MiwgICA5OTks
ICAxMDA3LAorICAgIDEwMjgsICAxMDQ5LCAgMTA1OSwgIDEwODcsICAxMDkyLCAgMTEwMiwgIDEx
MDcsICAxMTE3LCAgMTEyMCwgIDExMjMsCisgICAgMTEyNiwgIDExMzIsICAxMTM5LCAgMTE0Miwg
IDExNjQsICAxMTgyLCAgMTIwNiwgIDEyMjksICAxMjMzLCAgMTI1MSwKKyAgICAxMjU5LCAgMTI5
MSwgIDEzMTEsICAxMzMyLCAgMTM0MSwgIDEzNjQsICAxMzY3LCAgMTM3MywgIDEzODEsICAxMzg5
LAorICAgIDEzOTcsICAxNDA3LCAgMTQxNCwgIDE0MTcsICAxNDIwLCAgMTQyNiwgIDE0MjksICAx
NDQ0LCAgMTQ0OCwgIDE0NTIsCisgICAgMTQ1NiwgIDE0NjAsICAxNDY1LCAgMTQ3MCwgIDE0NzUs
ICAxNDgwLCAgMTQ4NSwgIDE0OTAsICAxNDk1LCAgMTUwMCwKKyAgICAxNTA1LCAgMTUxMCwgIDE1
MTUsICAxNTIwLCAgMTUyNCwgIDE1MjgsICAxNTM2LCAgMTU0NCwgIDE1NDgsICAxNTYxLAorICAg
IDE1NjEsICAxNTc1LCAgMTU3NSwgIDE1ODQsICAxNTg3LCAgMTYwMywgIDE2MzYsICAxNjQwLCAg
MTY0NiwgIDE2NTMsCisgICAgMTY2OCwgIDE2NzIsICAxNjc2LCAgMTY3NywgIDE2ODMsICAxNjg0
LCAgMTY4NSwgIDE2ODYsICAxNjg3LCAgMTY5MSwKKyAgICAxNjkyLCAgMTY5MiwgIDE2OTIsICAx
NzAyLCAgMTcwMywgIDE3MDcsICAxNzA3LCAgMTcwOCwgIDE3MDgsICAxNzEzLAorICAgIDE3MTYs
ICAxNzI2LCAgMTcyOSwgIDE3MzUsICAxNzM2LCAgMTc0MCwgIDE3NDgsICAxNzUyLCAgMTc2Miwg
IDE3NjcsCisgICAgMTc4NCwgIDE3ODQsICAxNzg5LCAgMTc4OSwgIDE3OTYsICAxNzk2LCAgMTgw
NCwgIDE4MDcsICAxODEzLCAgMTgxNiwKKyAgICAxODIyLCAgMTgyNiwgIDE4MzMsICAxODQwLCAg
MTg0NywgIDE4NTQsICAxODY1LCAgMTg3NCwgIDE4NzgsICAxODg1LAorICAgIDE4ODgsICAxODk0
LCAgMTg5NAogfTsKICNlbmRpZgogCkBAIC03ODgsMTUgKzgwNywxNSBAQCBzdGF0aWMgY29uc3Qg
Y2hhciAqY29uc3QgeXl0bmFtZVtdID0KICAgIk1BVFJJWDMiLCAiTUFUUklYNCIsICJJTl9RVUFM
IiwgIk9VVF9RVUFMIiwgIklOT1VUX1FVQUwiLCAiVU5JRk9STSIsCiAgICJWQVJZSU5HIiwgIlNU
UlVDVCIsICJWT0lEX1RZUEUiLCAiV0hJTEUiLCAiU0FNUExFUjJEIiwgIlNBTVBMRVJDVUJFIiwK
ICAgIlNBTVBMRVJfRVhURVJOQUxfT0VTIiwgIlNBTVBMRVIyRFJFQ1QiLCAiSURFTlRJRklFUiIs
ICJUWVBFX05BTUUiLAotICAiRkxPQVRDT05TVEFOVCIsICJJTlRDT05TVEFOVCIsICJCT09MQ09O
U1RBTlQiLCAiRklFTERfU0VMRUNUSU9OIiwKLSAgIkxFRlRfT1AiLCAiUklHSFRfT1AiLCAiSU5D
X09QIiwgIkRFQ19PUCIsICJMRV9PUCIsICJHRV9PUCIsICJFUV9PUCIsCi0gICJORV9PUCIsICJB
TkRfT1AiLCAiT1JfT1AiLCAiWE9SX09QIiwgIk1VTF9BU1NJR04iLCAiRElWX0FTU0lHTiIsCi0g
ICJBRERfQVNTSUdOIiwgIk1PRF9BU1NJR04iLCAiTEVGVF9BU1NJR04iLCAiUklHSFRfQVNTSUdO
IiwgIkFORF9BU1NJR04iLAotICAiWE9SX0FTU0lHTiIsICJPUl9BU1NJR04iLCAiU1VCX0FTU0lH
TiIsICJMRUZUX1BBUkVOIiwgIlJJR0hUX1BBUkVOIiwKLSAgIkxFRlRfQlJBQ0tFVCIsICJSSUdI
VF9CUkFDS0VUIiwgIkxFRlRfQlJBQ0UiLCAiUklHSFRfQlJBQ0UiLCAiRE9UIiwKLSAgIkNPTU1B
IiwgIkNPTE9OIiwgIkVRVUFMIiwgIlNFTUlDT0xPTiIsICJCQU5HIiwgIkRBU0giLCAiVElMREUi
LCAiUExVUyIsCi0gICJTVEFSIiwgIlNMQVNIIiwgIlBFUkNFTlQiLCAiTEVGVF9BTkdMRSIsICJS
SUdIVF9BTkdMRSIsICJWRVJUSUNBTF9CQVIiLAotICAiQ0FSRVQiLCAiQU1QRVJTQU5EIiwgIlFV
RVNUSU9OIiwgIiRhY2NlcHQiLCAidmFyaWFibGVfaWRlbnRpZmllciIsCisgICJGTE9BVENPTlNU
QU5UIiwgIklOVENPTlNUQU5UIiwgIkJPT0xDT05TVEFOVCIsICJMRUZUX09QIiwgIlJJR0hUX09Q
IiwKKyAgIklOQ19PUCIsICJERUNfT1AiLCAiTEVfT1AiLCAiR0VfT1AiLCAiRVFfT1AiLCAiTkVf
T1AiLCAiQU5EX09QIiwKKyAgIk9SX09QIiwgIlhPUl9PUCIsICJNVUxfQVNTSUdOIiwgIkRJVl9B
U1NJR04iLCAiQUREX0FTU0lHTiIsCisgICJNT0RfQVNTSUdOIiwgIkxFRlRfQVNTSUdOIiwgIlJJ
R0hUX0FTU0lHTiIsICJBTkRfQVNTSUdOIiwgIlhPUl9BU1NJR04iLAorICAiT1JfQVNTSUdOIiwg
IlNVQl9BU1NJR04iLCAiTEVGVF9QQVJFTiIsICJSSUdIVF9QQVJFTiIsICJMRUZUX0JSQUNLRVQi
LAorICAiUklHSFRfQlJBQ0tFVCIsICJMRUZUX0JSQUNFIiwgIlJJR0hUX0JSQUNFIiwgIkRPVCIs
ICJDT01NQSIsICJDT0xPTiIsCisgICJFUVVBTCIsICJTRU1JQ09MT04iLCAiQkFORyIsICJEQVNI
IiwgIlRJTERFIiwgIlBMVVMiLCAiU1RBUiIsICJTTEFTSCIsCisgICJQRVJDRU5UIiwgIkxFRlRf
QU5HTEUiLCAiUklHSFRfQU5HTEUiLCAiVkVSVElDQUxfQkFSIiwgIkNBUkVUIiwKKyAgIkFNUEVS
U0FORCIsICJRVUVTVElPTiIsICIkYWNjZXB0IiwgImlkZW50aWZpZXIiLCAidmFyaWFibGVfaWRl
bnRpZmllciIsCiAgICJwcmltYXJ5X2V4cHJlc3Npb24iLCAicG9zdGZpeF9leHByZXNzaW9uIiwg
ImludGVnZXJfZXhwcmVzc2lvbiIsCiAgICJmdW5jdGlvbl9jYWxsIiwgImZ1bmN0aW9uX2NhbGxf
b3JfbWV0aG9kIiwgImZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyIsCiAgICJmdW5jdGlvbl9jYWxsX2hl
YWRlcl9ub19wYXJhbWV0ZXJzIiwKQEAgLTg0Miw2MCArODYxLDYwIEBAIHN0YXRpYyBjb25zdCB5
eXR5cGVfdWludDE2IHl5dG9rbnVtW10gPQogICAgICAzMTUsICAgMzE2LCAgIDMxNywgICAzMTgs
ICAgMzE5LCAgIDMyMCwgICAzMjEsICAgMzIyLCAgIDMyMywgICAzMjQsCiAgICAgIDMyNSwgICAz
MjYsICAgMzI3LCAgIDMyOCwgICAzMjksICAgMzMwLCAgIDMzMSwgICAzMzIsICAgMzMzLCAgIDMz
NCwKICAgICAgMzM1LCAgIDMzNiwgICAzMzcsICAgMzM4LCAgIDMzOSwgICAzNDAsICAgMzQxLCAg
IDM0MiwgICAzNDMsICAgMzQ0LAotICAgICAzNDUsICAgMzQ2LCAgIDM0NywgICAzNDgsICAgMzQ5
LCAgIDM1MAorICAgICAzNDUsICAgMzQ2LCAgIDM0NywgICAzNDgsICAgMzQ5CiB9OwogIyBlbmRp
ZgogCiAvKiBZWVIxW1lZTl0gLS0gU3ltYm9sIG51bWJlciBvZiBzeW1ib2wgdGhhdCBydWxlIFlZ
TiBkZXJpdmVzLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMVtdID0KIHsKLSAg
ICAgICAwLCAgICA5NiwgICAgOTcsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk4LCAgICA5OCwg
ICAgOTksICAgIDk5LAotICAgICAgOTksICAgIDk5LCAgICA5OSwgICAgOTksICAgMTAwLCAgIDEw
MSwgICAxMDIsICAgMTAyLCAgIDEwMywgICAxMDMsCi0gICAgIDEwNCwgICAxMDQsICAgMTA1LCAg
IDEwNSwgICAxMDYsICAgMTA3LCAgIDEwNywgICAxMDcsICAgMTA4LCAgIDEwOCwKLSAgICAgMTA4
LCAgIDEwOCwgICAxMDksICAgMTA5LCAgIDEwOSwgICAxMTAsICAgMTEwLCAgIDExMCwgICAxMTEs
ICAgMTExLAotICAgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExMywgICAx
MTMsICAgMTE0LCAgIDExNCwgICAxMTQsCi0gICAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwg
ICAxMTgsICAgMTE5LCAgIDExOSwgICAxMjAsICAgMTIwLCAgIDEyMSwKLSAgICAgMTIxLCAgIDEy
MiwgICAxMjIsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjQsICAgMTI0
LAotICAgICAxMjUsICAgMTI2LCAgIDEyNiwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjgsICAg
MTI5LCAgIDEyOSwgICAxMzAsCi0gICAgIDEzMSwgICAxMzEsICAgMTMyLCAgIDEzMiwgICAxMzIs
ICAgMTMyLCAgIDEzMywgICAxMzMsICAgMTMzLCAgIDEzMywKLSAgICAgMTM0LCAgIDEzNSwgICAx
MzUsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM2LCAgIDEzNiwgICAxMzYsICAgMTM2LAotICAg
ICAxMzYsICAgMTM2LCAgIDEzNywgICAxMzcsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM4LCAg
IDEzOCwgICAxMzksCi0gICAgIDEzOSwgICAxNDAsICAgMTQwLCAgIDE0MCwgICAxNDEsICAgMTQx
LCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwKKyAgICAgICAwLCAgICA5NSwgICAgOTYsICAg
IDk2LCAgICA5NywgICAgOTgsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk4LAorICAgICAgOTks
ICAgIDk5LCAgICA5OSwgICAgOTksICAgIDk5LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwg
ICAxMDIsCisgICAgIDEwMywgICAxMDMsICAgMTA0LCAgIDEwNCwgICAxMDUsICAgMTA1LCAgIDEw
NiwgICAxMDcsICAgMTA3LCAgIDEwOCwKKyAgICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA5LCAg
IDEwOSwgICAxMDksICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTExLAorICAgICAxMTEsICAgMTEx
LCAgIDExMiwgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExNCwgICAxMTQs
CisgICAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE4LCAgIDExOSwgICAx
MTksICAgMTIwLCAgIDEyMCwKKyAgICAgMTIxLCAgIDEyMSwgICAxMjIsICAgMTIyLCAgIDEyMywg
ICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTI0LAorICAgICAxMjQsICAgMTI1LCAgIDEy
NiwgICAxMjYsICAgMTI2LCAgIDEyNywgICAxMjgsICAgMTI4LCAgIDEyOSwgICAxMjksCisgICAg
IDEzMCwgICAxMzEsICAgMTMxLCAgIDEzMiwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzMsICAg
MTMzLCAgIDEzMywKKyAgICAgMTMzLCAgIDEzNCwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzUs
ICAgMTM1LCAgIDEzNiwgICAxMzYsICAgMTM2LAorICAgICAxMzYsICAgMTM2LCAgIDEzNiwgICAx
MzcsICAgMTM3LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEzOCwgICAxMzgsCisgICAgIDEzOSwg
ICAxMzksICAgMTQwLCAgIDE0MCwgICAxNDAsICAgMTQxLCAgIDE0MSwgICAxNDIsICAgMTQyLCAg
IDE0MiwKICAgICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQy
LCAgIDE0MiwgICAxNDIsICAgMTQyLAotICAgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAg
MTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0NCwgICAxNDMsCi0gICAgIDE0NSwgICAxNDMs
ICAgMTQ2LCAgIDE0NiwgICAxNDcsICAgMTQ4LCAgIDE0OCwgICAxNDksICAgMTQ5LCAgIDE1MCwK
LSAgICAgMTUxLCAgIDE1MiwgICAxNTIsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1
MywgICAxNTQsICAgMTU1LAotICAgICAxNTYsICAgMTU0LCAgIDE1NywgICAxNTcsICAgMTU5LCAg
IDE1OCwgICAxNjAsICAgMTU4LCAgIDE2MSwgICAxNjEsCi0gICAgIDE2MiwgICAxNjIsICAgMTYz
LCAgIDE2MywgICAxNjQsICAgMTY1LCAgIDE2NSwgICAxNjYsICAgMTY2LCAgIDE2OCwKLSAgICAg
MTY3LCAgIDE2OSwgICAxNjcsICAgMTcwLCAgIDE2NywgICAxNzEsICAgMTcxLCAgIDE3MiwgICAx
NzIsICAgMTczLAotICAgICAxNzMsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwg
ICAxNzUsICAgMTc1LCAgIDE3NiwgICAxNzYsCi0gICAgIDE3OCwgICAxNzcKKyAgICAgMTQyLCAg
IDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAg
MTQ0LAorICAgICAxNDMsICAgMTQ1LCAgIDE0MywgICAxNDYsICAgMTQ2LCAgIDE0NywgICAxNDgs
ICAgMTQ4LCAgIDE0OSwgICAxNDksCisgICAgIDE1MCwgICAxNTEsICAgMTUyLCAgIDE1MiwgICAx
NTMsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1NCwKKyAgICAgMTU1LCAgIDE1Niwg
ICAxNTQsICAgMTU3LCAgIDE1NywgICAxNTksICAgMTU4LCAgIDE2MCwgICAxNTgsICAgMTYxLAor
ICAgICAxNjEsICAgMTYyLCAgIDE2MiwgICAxNjMsICAgMTYzLCAgIDE2NCwgICAxNjUsICAgMTY1
LCAgIDE2NiwgICAxNjYsCisgICAgIDE2OCwgICAxNjcsICAgMTY5LCAgIDE2NywgICAxNzAsICAg
MTY3LCAgIDE3MSwgICAxNzEsICAgMTcyLCAgIDE3MiwKKyAgICAgMTczLCAgIDE3MywgICAxNzQs
ICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NSwgICAxNzUsICAgMTc2LAorICAgICAx
NzYsICAgMTc4LCAgIDE3NwogfTsKIAogLyogWVlSMltZWU5dIC0tIE51bWJlciBvZiBzeW1ib2xz
IGNvbXBvc2luZyByaWdodCBoYW5kIHNpZGUgb2YgcnVsZSBZWU4uICAqLwogc3RhdGljIGNvbnN0
IHl5dHlwZV91aW50OCB5eXIyW10gPQogewotICAgICAgIDAsICAgICAyLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDQsCi0gICAgICAgMSwgICAg
IDMsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAyLCAgICAg
MiwKLSAgICAgICAyLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAyLAotICAgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDMsCi0gICAgICAgMywgICAgIDEsICAg
ICAxLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMywKLSAg
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwg
ICAgIDMsICAgICAxLAotICAgICAgIDUsICAgICAxLCAgICAgMywgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsCi0gICAgICAgMSwgICAgIDIsICAgICAyLCAg
ICAgNCwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMywKLSAgICAgICAy
LCAgICAgNSwgICAgIDMsICAgICAyLCAgICAgMywgICAgIDIsICAgICAwLCAgICAgMSwgICAgIDEs
ICAgICAxLAotICAgICAgIDEsICAgICAxLCAgICAgMywgICAgIDUsICAgICA2LCAgICAgNSwgICAg
IDEsICAgICAyLCAgICAgNCwgICAgIDUsCi0gICAgICAgNCwgICAgIDIsICAgICAxLCAgICAgMiwg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwKLSAgICAgICAyLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDQsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LAorICAgICAgIDAsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDMsCisgICAgICAgMSwgICAgIDQsICAgICAxLCAgICAgMywgICAgIDIs
ICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywKKyAgICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAxLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLAorICAg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAg
ICAgMywgICAgIDEsCisgICAgICAgMywgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAz
LCAgICAgMywgICAgIDMsICAgICAxLCAgICAgMywKKyAgICAgICAzLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLAorICAgICAgIDEs
ICAgICA1LCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsCisgICAgICAgMywgICAgIDEsICAgICAyLCAgICAgMiwgICAgIDQsICAgICAyLCAgICAg
MSwgICAgIDEsICAgICAyLCAgICAgMywKKyAgICAgICAzLCAgICAgMiwgICAgIDUsICAgICAzLCAg
ICAgMiwgICAgIDMsICAgICAyLCAgICAgMCwgICAgIDEsICAgICAxLAorICAgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDMsICAgICA1LCAgICAgNiwgICAgIDUsICAgICAxLCAgICAgMiwgICAgIDQs
CisgICAgICAgNSwgICAgIDQsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAyLCAgICAgMSwKKyAgICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICA0LCAgICAgMSwgICAgIDEsICAgICAxLAogICAgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAwLCAgICAgNiwKLSAgICAgICAwLCAgICAgNSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDEs
ICAgICAzLCAgICAgMSwgICAgIDQsICAgICAxLAotICAgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDAsCi0gICAgICAgMCwg
ICAgIDUsICAgICAxLCAgICAgMSwgICAgIDAsICAgICAyLCAgICAgMCwgICAgIDIsICAgICAyLCAg
ICAgMywKLSAgICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgNSwgICAgIDMsICAgICAx
LCAgICAgMSwgICAgIDQsICAgICAwLAotICAgICAgIDYsICAgICAwLCAgICAgOCwgICAgIDAsICAg
ICA3LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDIsCi0gICAgICAgMywgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwK
LSAgICAgICAwLCAgICAgMworICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDAsCisgICAgICAgNiwgICAgIDAsICAgICA1
LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgNCwKKyAgICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAyLAorICAgICAgIDAsICAgICAwLCAgICAgNSwgICAgIDEsICAgICAxLCAgICAgMCwg
ICAgIDIsICAgICAwLCAgICAgMiwgICAgIDIsCisgICAgICAgMywgICAgIDEsICAgICAyLCAgICAg
MSwgICAgIDIsICAgICA1LCAgICAgMywgICAgIDEsICAgICAxLCAgICAgNCwKKyAgICAgICAwLCAg
ICAgNiwgICAgIDAsICAgICA4LCAgICAgMCwgICAgIDcsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAwLAorICAgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMywgICAgIDIs
ICAgICAxLCAgICAgMiwgICAgIDEsCisgICAgICAgMSwgICAgIDAsICAgICAzCiB9OwogCiAvKiBZ
WURFRkFDVFtTVEFURS1OQU1FXSAtLSBEZWZhdWx0IHJ1bGUgdG8gcmVkdWNlIHdpdGggaW4gc3Rh
dGUKQEAgLTkwMyw0MDAgKzkyMiw0MTYgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIy
W10gPQogICAgbWVhbnMgdGhlIGRlZmF1bHQgaXMgYW4gZXJyb3IuICAqLwogc3RhdGljIGNvbnN0
IHl5dHlwZV91aW50OCB5eWRlZmFjdFtdID0KIHsKLSAgICAgICAwLCAgICAgMCwgICAxMTEsICAg
MTEyLCAgIDExMywgICAgIDAsICAgMTA1LCAgIDEwNCwgICAxMTksICAgMTE3LAotICAgICAxMTgs
ICAgMTIzLCAgIDEyNCwgICAxMjUsICAgMTI2LCAgIDEyNywgICAxMjgsICAgMTIwLCAgIDEyMSwg
ICAxMjIsCi0gICAgIDEyOSwgICAxMzAsICAgMTMxLCAgIDEwOCwgICAxMDYsICAgICAwLCAgIDEx
NiwgICAxMzIsICAgMTMzLCAgIDEzNCwKLSAgICAgMTM1LCAgIDEzNywgICAxOTksICAgMjAwLCAg
ICAgMCwgICAgNzYsICAgIDg2LCAgICAgMCwgICAgOTEsICAgIDk2LAotICAgICAgIDAsICAgMTAy
LCAgICAgMCwgICAxMDksICAgMTE0LCAgIDEzNiwgICAgIDAsICAgMTk2LCAgIDE5OCwgICAxMDcs
Ci0gICAgIDEwMSwgICAgIDAsICAgICAwLCAgIDE0MCwgICAgNzEsICAgICAwLCAgICA3NCwgICAg
ODYsICAgICAwLCAgICA4NywKLSAgICAgIDg4LCAgICA4OSwgICAgNzcsICAgICAwLCAgICA4Niwg
ICAgIDAsICAgIDcyLCAgICA5NywgICAxMDMsICAgMTEwLAotICAgICAgIDAsICAgICAxLCAgIDE5
NywgICAgIDAsICAgMTM4LCAgICAgMCwgICAgIDAsICAgMjAxLCAgICA3OCwgICAgODMsCi0gICAg
ICA4NSwgICAgOTAsICAgICAwLCAgICA5MiwgICAgNzksICAgICAwLCAgICAgMCwgICAgIDIsICAg
ICA1LCAgICAgNCwKLSAgICAgICA2LCAgICAyNywgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzQs
ICAgIDMzLCAgICAzMiwgICAgIDMsICAgICA4LAotICAgICAgMjgsICAgIDEwLCAgICAxNSwgICAg
MTYsICAgICAwLCAgICAgMCwgICAgMjEsICAgICAwLCAgICAzNSwgICAgIDAsCi0gICAgICAzOCwg
ICAgNDEsICAgIDQyLCAgICA0NywgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU1LCAg
ICA1NywKLSAgICAgIDU5LCAgICA3MCwgICAgIDAsICAgIDI1LCAgICA3MywgICAgIDAsICAgICAw
LCAgICAgMCwgICAxNDIsICAgICAwLAotICAgICAgIDAsICAgMTgxLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTU5LCAgIDE2OCwgICAxNzIsCi0gICAgICAzNSwgICAgNjEs
ICAgIDY4LCAgICAgMCwgICAxNTAsICAgICAwLCAgIDExNCwgICAxNTMsICAgMTcwLCAgIDE1MiwK
LSAgICAgMTUxLCAgICAgMCwgICAxNTQsICAgMTU1LCAgIDE1NiwgICAxNTcsICAgIDgwLCAgICA4
MiwgICAgODQsICAgICAwLAotICAgICAgIDAsICAgIDk4LCAgICAgMCwgICAxNDksICAgMTAwLCAg
ICAyOSwgICAgMzAsICAgICAwLCAgICAxMiwgICAgMTMsCi0gICAgICAgMCwgICAgIDAsICAgIDE5
LCAgICAxOCwgICAgIDAsICAgIDIwLCAgICAyMiwgICAgMjQsICAgIDMxLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxMTUsICAgICAwLCAgIDE0Nywg
ICAgIDAsICAgMTQ1LCAgIDE0MSwgICAxNDMsCi0gICAgIDE5MiwgICAxOTEsICAgMTY2LCAgIDE4
MywgICAgIDAsICAgMTk1LCAgIDE5MywgICAgIDAsICAgMTc5LCAgIDE1OCwKLSAgICAgICAwLCAg
ICA2NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjMsICAgICAwLCAgICAgMCwgICAxNzMsICAg
MTY5LAotICAgICAxNzEsICAgICAwLCAgICA5MywgICAgIDAsICAgIDk1LCAgICA5OSwgICAgIDcs
ICAgICAwLCAgICAxNCwgICAgMjYsCi0gICAgICAxMSwgICAgMTcsICAgIDIzLCAgICAzNiwgICAg
MzcsICAgIDQwLCAgICAzOSwgICAgNDUsICAgIDQ2LCAgICA0MywKLSAgICAgIDQ0LCAgICA0OCwg
ICAgNDksICAgIDU0LCAgICA1NiwgICAgNTgsICAgICAwLCAgIDEzOSwgICAgIDAsICAgICAwLAot
ICAgICAxNDQsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTQsICAgICAw
LCAgIDE2MCwgICAgNjIsCi0gICAgICA2OSwgICAgIDAsICAgIDk0LCAgICAgOSwgICAgIDAsICAg
ICAwLCAgIDE0NiwgICAgIDAsICAgMTY1LCAgIDE2NywKLSAgICAgMTg2LCAgIDE4NSwgICAxODgs
ICAgMTY2LCAgIDE3NywgICAgIDAsICAgICAwLCAgICAgMCwgICAgODEsICAgIDYwLAotICAgICAx
NDgsICAgICAwLCAgIDE4NywgICAgIDAsICAgICAwLCAgIDE3NiwgICAxNzQsICAgICAwLCAgICAg
MCwgICAxNjEsCi0gICAgICAgMCwgICAxODksICAgICAwLCAgIDE2NiwgICAgIDAsICAgMTYzLCAg
IDE4MCwgICAxNjIsICAgICAwLCAgIDE5MCwKLSAgICAgMTg0LCAgIDE3NSwgICAxNzgsICAgMTgy
CisgICAgICAgMCwgICAgIDAsICAgMTEyLCAgIDExMywgICAxMTQsICAgICAwLCAgIDEwNiwgICAx
MDUsICAgMTIwLCAgIDExOCwKKyAgICAgMTE5LCAgIDEyNCwgICAxMjUsICAgMTI2LCAgIDEyNywg
ICAxMjgsICAgMTI5LCAgIDEyMSwgICAxMjIsICAgMTIzLAorICAgICAxMzAsICAgMTMxLCAgIDEz
MiwgICAxMDksICAgMTA3LCAgICAgMCwgICAxMTcsICAgMTMzLCAgIDEzNCwgICAxMzUsCisgICAg
IDEzNiwgICAxMzgsICAgMjAwLCAgIDIwMSwgICAgIDAsICAgIDc3LCAgICA4NywgICAgIDAsICAg
IDkyLCAgICA5NywKKyAgICAgICAwLCAgIDEwMywgICAgIDAsICAgMTEwLCAgIDExNSwgICAxMzcs
ICAgICAwLCAgIDE5NywgICAxOTksICAgMTA4LAorICAgICAxMDIsICAgICAwLCAgICAgMiwgICAg
IDMsICAgMTQxLCAgICAgMCwgICAgNzIsICAgICAwLCAgICA3NSwgICAgODcsCisgICAgICAgMCwg
ICAgODgsICAgIDg5LCAgICA5MCwgICAgNzgsICAgICAwLCAgICA4NywgICAgIDAsICAgIDczLCAg
ICAgMiwKKyAgICAgIDk4LCAgIDEwNCwgICAxMTEsICAgICAwLCAgICAgMSwgICAxOTgsICAgICAw
LCAgICAgMCwgICAxMzksICAgICAwLAorICAgICAyMDIsICAgIDc5LCAgICA4NCwgICAgODYsICAg
IDkxLCAgICAgMCwgICAgOTMsICAgIDgwLCAgICAgMCwgICAgIDAsCisgICAgICAgNCwgICAgIDcs
ICAgICA2LCAgICAgOCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzUsICAgIDM0LCAgICAzMywK
KyAgICAgICA1LCAgICAxMCwgICAgMjksICAgIDEyLCAgICAxNywgICAgMTgsICAgICAwLCAgICAg
MCwgICAgMjMsICAgICAwLAorICAgICAgMzYsICAgICAwLCAgICAzOSwgICAgNDIsICAgIDQzLCAg
ICA0OCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsCisgICAgICA1NiwgICAgNTgsICAgIDYw
LCAgICA3MSwgICAgIDAsICAgIDI3LCAgICA3NCwgICAgIDAsICAgICAwLCAgIDE0MywKKyAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTgyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgMTYwLAorICAgICAxNjksICAgMTczLCAgICAzNiwgICAgNjIsICAgIDY5LCAgICAgMCwg
ICAxNTEsICAgICAwLCAgIDExNSwgICAxNTQsCisgICAgIDE3MSwgICAxNTMsICAgMTUyLCAgICAg
MCwgICAxNTUsICAgMTU2LCAgIDE1NywgICAxNTgsICAgIDgxLCAgICA4MywKKyAgICAgIDg1LCAg
ICAgMCwgICAgIDAsICAgIDk5LCAgICAgMCwgICAxNTAsICAgMTAxLCAgICAzMCwgICAgMzEsICAg
ICAwLAorICAgICAgMTQsICAgIDE1LCAgICAgMCwgICAgIDAsICAgIDIxLCAgICAyMCwgICAgIDAs
ICAgIDIyLCAgICAyNCwgICAgMjYsCisgICAgICAzMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAxMTYsICAgMTQ4LCAgICAgMCwgICAxNDYsICAgMTQyLAor
ICAgICAxNDQsICAgICAwLCAgIDE5MywgICAxOTIsICAgMTY3LCAgIDE4NCwgICAgIDAsICAgMTk2
LCAgIDE5NCwgICAgIDAsCisgICAgIDE4MCwgICAxNTksICAgICAwLCAgICA2NSwgICAgNjYsICAg
IDY3LCAgICA2OCwgICAgNjQsICAgICAwLCAgICAgMCwKKyAgICAgMTc0LCAgIDE3MCwgICAxNzIs
ICAgICAwLCAgICA5NCwgICAgIDAsICAgIDk2LCAgIDEwMCwgICAgIDksICAgICAwLAorICAgICAg
MTYsICAgICAyLCAgICAgMywgICAgMTMsICAgIDE5LCAgICAyNSwgICAgMzcsICAgIDM4LCAgICA0
MSwgICAgNDAsCisgICAgICA0NiwgICAgNDcsICAgIDQ0LCAgICA0NSwgICAgNDksICAgIDUwLCAg
ICA1NSwgICAgNTcsICAgIDU5LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAxNDUsICAgMTQw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTk1LAorICAgICAgIDAsICAg
MTYxLCAgICA2MywgICAgNzAsICAgICAwLCAgICA5NSwgICAgMTEsICAgICAwLCAgICAgMCwgICAx
NDcsCisgICAgICAgMCwgICAxNjYsICAgMTY4LCAgIDE4NywgICAxODYsICAgMTg5LCAgIDE2Nywg
ICAxNzgsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICA4MiwgICAgNjEsICAgMTQ5LCAgICAg
MCwgICAxODgsICAgICAwLCAgICAgMCwgICAxNzcsICAgMTc1LAorICAgICAgIDAsICAgICAwLCAg
IDE2MiwgICAgIDAsICAgMTkwLCAgICAgMCwgICAxNjcsICAgICAwLCAgIDE2NCwgICAxODEsCisg
ICAgIDE2MywgICAgIDAsICAgMTkxLCAgIDE4NSwgICAxNzYsICAgMTc5LCAgIDE4MwogfTsKIAog
LyogWVlERUZHT1RPW05URVJNLU5VTV0uICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5
eWRlZmdvdG9bXSA9CiB7Ci0gICAgICAtMSwgICAgOTgsICAgIDk5LCAgIDEwMCwgICAyMjcsICAg
MTAxLCAgIDEwMiwgICAxMDMsICAgMTA0LCAgIDEwNSwKLSAgICAgMTA2LCAgIDEwNywgICAxNDAs
ICAgMTA5LCAgIDExMCwgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTQsICAgMTE1LAotICAgICAx
MTYsICAgMTE3LCAgIDExOCwgICAxMTksICAgMTIwLCAgIDE0MSwgICAxNDIsICAgMjE2LCAgIDE0
MywgICAxMjIsCi0gICAgIDE0NCwgICAxNDUsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDc5LCAg
ICA2MiwgICAgNjMsICAgIDgwLCAgICAzNywKLSAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQx
LCAgICA0MiwgICAgNDMsICAgMTIzLCAgICA0NSwgICAxMjUsICAgIDc1LAotICAgICAxMjcsICAg
MTI4LCAgIDE5NiwgICAxOTcsICAgMTY0LCAgIDE0NywgICAxNDgsICAgMTQ5LCAgIDE1MCwgICAy
MTAsCi0gICAgIDI3NywgICAyOTYsICAgMjUxLCAgIDI1MiwgICAyNTMsICAgMjk3LCAgIDE1MSwg
ICAxNTIsICAgMTUzLCAgIDI4NiwKLSAgICAgMjc2LCAgIDE1NCwgICAyNTcsICAgMjAyLCAgIDI1
NCwgICAyNzIsICAgMjgzLCAgIDI4NCwgICAxNTUsICAgIDQ2LAotICAgICAgNDcsICAgIDQ4LCAg
ICA1NQorICAgICAgLTEsICAgMTk2LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDIyOSwgICAxMDMs
ICAgMTA0LCAgIDEwNSwgICAxMDYsCisgICAgIDEwNywgICAxMDgsICAgMTA5LCAgIDE0MiwgICAx
MTEsICAgMTEyLCAgIDExMywgICAxMTQsICAgMTE1LCAgIDExNiwKKyAgICAgMTE3LCAgIDExOCwg
ICAxMTksICAgMTIwLCAgIDEyMSwgICAxMjIsICAgMTQzLCAgIDE0NCwgICAyMTgsICAgMTQ1LAor
ICAgICAxMjQsICAgMTQ2LCAgIDE0NywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgODIsICAgIDY0
LCAgICA2NSwgICAgODMsCisgICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAg
IDQyLCAgICA0MywgICAxMjUsICAgIDQ1LCAgIDEzMCwKKyAgICAgIDc3LCAgIDEyOCwgICAxMjks
ICAgMTk3LCAgIDE5OCwgICAxNjYsICAgMTQ5LCAgIDE1MCwgICAxNTEsICAgMTUyLAorICAgICAy
MTIsICAgMjgwLCAgIDI5OSwgICAyNTQsICAgMjU1LCAgIDI1NiwgICAzMDAsICAgMTUzLCAgIDE1
NCwgICAxNTUsCisgICAgIDI4OSwgICAyNzksICAgMTU2LCAgIDI2MCwgICAyMDQsICAgMjU3LCAg
IDI3NSwgICAyODYsICAgMjg3LCAgIDE1NywKKyAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDU3
CiB9OwogCiAvKiBZWVBBQ1RbU1RBVEUtTlVNXSAtLSBJbmRleCBpbiBZWVRBQkxFIG9mIHRoZSBw
b3J0aW9uIGRlc2NyaWJpbmcKICAgIFNUQVRFLU5VTS4gICovCi0jZGVmaW5lIFlZUEFDVF9OSU5G
IC0yNjYKKyNkZWZpbmUgWVlQQUNUX05JTkYgLTI2MQogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQx
NiB5eXBhY3RbXSA9CiB7Ci0gICAgMTI1MywgICAtMjAsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAg
MTQ4LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYs
ICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0y
NjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIC0zOSwgIC0yNjYsICAtMjY2LCAgLTI2
NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIC0xOCwgICAgLTIsICAgICA2LCAg
ICAyMSwgICAtNjEsICAtMjY2LCAgICA1MSwKLSAgICAxMjk2LCAgLTI2NiwgIDEzNzAsICAtMjY2
LCAgICAyNSwgIC0yNjYsICAxMjA5LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAx
MzcwLCAgICA0MiwgIC0yNjYsICAtMjY2LCAgICA1MCwgIC0yNjYsICAgIDcxLCAgICA5NSwgIC0y
NjYsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgMTI5NiwgICAxMjMsICAgMTA1LCAgLTI2Niwg
ICAgIDksICAtMjY2LCAgLTI2NiwKLSAgICAgOTc0LCAgLTI2NiwgIC0yNjYsICAgIDgxLCAgLTI2
NiwgIDEyOTYsICAgMjkwLCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgMTI1LCAg
MTI5NiwgICAtMTMsICAtMjY2LCAgIDc3NiwgICA5NzQsICAgIDk5LCAgLTI2NiwgIC0yNjYsCi0g
ICAgLTI2NiwgIC0yNjYsICAgOTc0LCAgIDk3NCwgICA5NzQsICAtMjY2LCAgLTI2NiwgIC0yNjYs
ICAtMjY2LCAgLTI2NiwKLSAgICAgIDM1LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDEwMCwgICAg
LTYsICAxMDQwLCAgIDEwNCwgIC0yNjYsICAgOTc0LAotICAgICAgMzYsICAgLTY0LCAgLTI2Niwg
ICAtMjEsICAgMTAyLCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDExMywgICAxMTcsCi0gICAgIC01
MSwgIC0yNjYsICAgMTA4LCAgLTI2NiwgIC0yNjYsICAxMjk2LCAgIDEyOSwgIDExMDksICAtMjY2
LCAgICA5NywKLSAgICAgMTAzLCAgLTI2NiwgICAxMTIsICAgMTE0LCAgIDEwNiwgICA4NDIsICAg
MTE1LCAgIDExNiwgIC0yNjYsICAtMjY2LAotICAgICAgMzksICAtMjY2LCAgLTI2NiwgICAtNDMs
ICAtMjY2LCAgIC0xOCwgICAgNDcsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICAz
NzQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDExOCwgIC0yNjYsICAtMjY2LCAgIDkw
OCwKLSAgICAgOTc0LCAgLTI2NiwgICAxMjAsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
ICAxOSwgIC0yNjYsICAtMjY2LAotICAgICA5NzQsICAxMzMzLCAgLTI2NiwgIC0yNjYsICAgOTc0
LCAgIDExOSwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICA5NzQsCi0gICAgIDk3NCwgICA5NzQsICAg
OTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwKLSAg
ICAgOTc0LCAgIDk3NCwgICA5NzQsICAtMjY2LCAgMTE1MiwgICAxMjIsICAgLTI5LCAgLTI2Niwg
IC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2LCAgIDEyMSwgIC0yNjYsICAgOTc0LCAgLTI2
NiwgIC0yNjYsICAgICA1LCAgLTI2NiwgIC0yNjYsCi0gICAgIDQ1OCwgIC0yNjYsICAtMjY2LCAg
LTI2NiwgIC0yNjYsICAtMjY2LCAgIDk3NCwgICA5NzQsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2
LCAgIDk3NCwgIC0yNjYsICAgMTM3LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDEzOCwgICAxMTEs
ICAtMjY2LAotICAgICAxNDIsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgICAzNiwgICAg
MzYsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICAtMjEsICAgLTIxLCAgLTI2Niwg
ICAxMTMsICAgMTE3LCAgICA4MiwgIC0yNjYsICAgOTc0LCAgIDEyOSwKLSAgICAtMjY2LCAgIDE3
NSwgICAgNTAsICAgNjI2LCAgIDcxMCwgICAgMzgsICAtMjY2LCAgIDE5NywgICA0NTgsICAtMjY2
LAotICAgIC0yNjYsICAgMTQxLCAgLTI2NiwgIC0yNjYsICAgOTc0LCAgIDE1NSwgIC0yNjYsICAg
MTQ1LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAgMTk3LCAgIDEyMSwgICAxMTEs
ICAgMTg2LCAgIDE1OSwgICAxNjAsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIDk3NCwgIC0y
NjYsICAgMTY2LCAgIDE3NiwgICAyMzYsICAtMjY2LCAgIDE3NCwgICA1NDIsICAtMjY2LAotICAg
ICAgNDMsICAgOTc0LCAgIDU0MiwgICAxMjEsICAgOTc0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
IDE3NywgICAxMTEsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NgorICAgIDEzMjcsICAg
LTIwLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDExMywgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0y
NjEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwg
IC0yNjEsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2
MSwgICAtMTksICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAg
LTI2MSwgICAtNjEsICAgLTQwLCAgIC0yOCwgICAgNzUsICAgIC03LCAgLTI2MSwgICAgMjQsCisg
ICAgMTM3MCwgIC0yNjEsICAxNDQ0LCAgLTI2MSwgICAtMTEsICAtMjYxLCAgMTI4MywgIC0yNjEs
ICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgMTQ0NCwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAg
IDYsICAtMjYxLCAgICA1NCwgIC0yNjEsICAgIDg4LAorICAgICAgNjIsICAtMjYxLCAgLTI2MSwg
IC0yNjEsICAtMjYxLCAgMTM3MCwgICAgNTksICAgIDkxLCAgLTI2MSwgICAgMzYsCisgICAgIC01
MCwgIC0yNjEsICAtMjYxLCAgMTA1MSwgIC0yNjEsICAtMjYxLCAgICA2MywgIDEzNzAsICAtMjYx
LCAgIDI5MywKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICA5MSwgIDEzNzAsICAg
LTEyLCAgLTI2MSwgICA4NTYsICAxMDUxLAorICAgICAgNzcsICAtMjYxLCAgLTI2MSwgIC0yNjEs
ICAxMDUxLCAgMTA1MSwgIDEwNTEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgIC0y
NjEsICAgLTE0LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICA4NCwgICAtNDQsICAxMTE2LCAgICA5
NSwKKyAgICAtMjYxLCAgMTA1MSwgICAgNTMsICAgICAzLCAgLTI2MSwgICAtMzYsICAgIDg5LCAg
LTI2MSwgIC0yNjEsICAtMjYxLAorICAgICAxMDQsICAgMTA3LCAgIC00NSwgIC0yNjEsICAgIDk2
LCAgLTI2MSwgIC0yNjEsICAgIDkxLCAgMTE4NCwgIC0yNjEsCisgICAgMTM3MCwgICAgOTIsICAg
IDkzLCAgLTI2MSwgICAgOTgsICAgMTAxLCAgICA5NCwgICA5MjEsICAgMTA1LCAgIDEwMiwKKyAg
ICAtMjYxLCAgLTI2MSwgICAgNzIsICAtMjYxLCAgLTI2MSwgICAgIDksICAtMjYxLCAgIC02MSwg
ICAgNDIsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAzNzYsICAtMjYxLCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgIDEwNiwgIC0yNjEsCisgICAgLTI2MSwgICA5ODYsICAxMDUxLCAg
LTI2MSwgICAxMDMsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIC00MSwKKyAgICAtMjYx
LCAgLTI2MSwgIDEwNTEsICAxNDA3LCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgIDExMCwgIC0yNjEs
ICAtMjYxLAorICAgIC0yNjEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEw
NTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsCisgICAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwg
IDEwNTEsICAtMjYxLCAgIDEwOSwgICAgMjMsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgMTIy
NywgIC0yNjEsICAtMjYxLCAgIDExMSwgIC0yNjEsICAxMDUxLCAgLTI2MSwgIC0yNjEsICAgIDI1
LAorICAgIC0yNjEsICAtMjYxLCAgIDQ1OSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAt
MjYxLCAgMTA1MSwgIDEwNTEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgMTA1MSwgIC0yNjEs
ICAgMTE0LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDExNSwKKyAgICAgMTEyLCAgICA3NywgICAx
MTYsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAgNTMsICAgIDUzLAorICAg
IC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgLTM2LCAgIC0zNiwgIC0yNjEsICAgMTA0LCAg
IDEwNywgICAgNzYsCisgICAgMTA1MSwgICAgOTEsICAtMjYxLCAgLTI2MSwgICAxNDUsICAgIDU0
LCAgIDYyNSwgICA3MDgsICAgIC02LCAgLTI2MSwKKyAgICAgNzkxLCAgIDQ1OSwgIC0yNjEsICAt
MjYxLCAgIDExNywgIC0yNjEsICAtMjYxLCAgMTA1MSwgICAxMjAsICAtMjYxLAorICAgICAxMjQs
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDc5MSwgICAxMTEsICAgMTEyLCAgICA5MSwg
ICAxMjUsCisgICAgIDEyMiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAtMjYxLCAgIDEx
OCwgICAxMjgsICAgMTgwLCAgLTI2MSwKKyAgICAgMTI2LCAgIDU0MiwgIC0yNjEsICAgIC01LCAg
MTA1MSwgICA1NDIsICAgMTExLCAgMTA1MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAgMTIz
LCAgIDExMiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEKIH07CiAKIC8qIFlZUEdPVE9bTlRF
Uk0tTlVNXS4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5cGdvdG9bXSA9CiB7Ci0g
ICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAgODUs
ICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgICAtNDQsICAtMjY2LCAgIC0xNSwgIC0y
NjYsICAgLTU1LCAgIC0xOSwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgIDcyLCAgICA3MCwg
ICAgNzMsICAtMjY2LCAgIC02NiwgICAtODMsICAtMjY2LCAgIC05MiwgICAtNzMsCi0gICAgICAx
MywgICAgMTQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTgwLCAgIDIwNiwgICAyMDEsICAgMTg0
LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI0MSwgICAtMjUsICAgLTMwLCAgIDI2MiwgICAgLTQsICAg
ICAwLCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgICAxNDMsICAtMTIyLCAgLTI2NiwgICAgMjIs
ICAtMTQ1LCAgICAxNiwgIC0xNDQsICAtMjI2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICAt
MTcsICAtMjY1LCAgLTI2NiwgIC0yNjYsICAgLTU0LCAgICA2MywgICAgMjAsICAtMjY2LCAgLTI2
NiwKLSAgICAgICA0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
LTI2NiwgIC0yNjYsICAtMjY2LAotICAgICAyMzEsICAtMjY2LCAgLTI2NgorICAgIC0yNjEsICAg
LTI0LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICAzNCwgIC0y
NjEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICAzMiwgIC0yNjEsICAgLTMzLCAgLTI2MSwg
ICAtMjcsICAgLTI2LCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgICAgMTQsICAgIDE2LCAgICAx
OCwgIC0yNjEsICAgLTY2LCAgIC04NywgIC0yNjEsICAgLTkyLAorICAgICAtODUsICAgIDExLCAg
ICAxMiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAxNDEsICAgMTUwLCAgIDE2MSwgICAxNDMsCisg
ICAgLTI2MSwgIC0yNjEsICAtMjMxLCAgICAgNSwgICAtMzAsICAgMjI0LCAgIC0xOCwgICAgIDAs
ICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgIDEwMCwgIC0xMTksICAtMjYxLCAgIC0xNywgIC0x
NTYsICAgLTI1LCAgLTE0NSwgIC0yNDMsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgIC02NCwg
IC0yNjAsICAtMjYxLCAgLTI2MSwgICAtNTIsICAgIDIxLCAgIC0yMiwgIC0yNjEsCisgICAgLTI2
MSwgICAtMzksICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYx
LCAgLTI2MSwKKyAgICAtMjYxLCAgIDE5MSwgIC0yNjEsICAtMjYxCiB9OwogCiAvKiBZWVRBQkxF
W1lZUEFDVFtTVEFURS1OVU1dXS4gIFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUtTlVNLiAgSWYK
ICAgIHBvc2l0aXZlLCBzaGlmdCB0aGF0IHRva2VuLiAgSWYgbmVnYXRpdmUsIHJlZHVjZSB0aGUg
cnVsZSB3aGljaAogICAgbnVtYmVyIGlzIHRoZSBvcHBvc2l0ZS4gIElmIHplcm8sIGRvIHdoYXQg
WVlERUZBQ1Qgc2F5cy4KICAgIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8KLSNk
ZWZpbmUgWVlUQUJMRV9OSU5GIC0xNjUKKyNkZWZpbmUgWVlUQUJMRV9OSU5GIC0xNjYKIHN0YXRp
YyBjb25zdCB5eXR5cGVfaW50MTYgeXl0YWJsZVtdID0KIHsKLSAgICAgIDQ0LCAgICA3NywgICAx
NjcsICAgMTYzLCAgIDEyMSwgICAxOTksICAgIDUyLCAgIDIyMCwgICAyODUsICAgMTkxLAotICAg
ICAgNjgsICAgIDY0LCAgIDE2MiwgICAgMzIsICAgIDMzLCAgIDIyNCwgICAyNzUsICAgIDQ5LCAg
ICA2NSwgICAxMjEsCi0gICAgIDE4MSwgICAgNjYsICAgMTgyLCAgIDE3NiwgICAgNTgsICAgIDUw
LCAgIDEwOCwgICAyNjksICAgMzAxLCAgICAgNiwKLSAgICAgICA3LCAgIDI3NSwgICAgNjQsICAg
IDgxLCAgIDE4MywgICAxODQsICAgMjE3LCAgICA1MywgICAgNjksICAgMjE4LAotICAgICAgNDQs
ICAgMTA4LCAgICA0NCwgICAyMDcsICAgMTkyLCAgIDEyNiwgICAgNDQsICAgIDczLCAgIDE2NSwg
ICAxNjYsCi0gICAgIDI0OSwgICAgNDQsICAgIDgxLCAgIDI1MCwgICAgNTksICAgIDYwLCAgICA2
MSwgICAgMjMsICAgIDI0LCAgICAzMiwKLSAgICAgIDMzLCAgIDE1OSwgICAyOTUsICAgIDQ0LCAg
ICA1NCwgICAxNzgsICAgMjk1LCAgIDE3MywgICAxNjAsICAgMTg1LAotICAgICAxODYsICAgIDU2
LCAgIDE5OSwgICAxNzQsICAgIDU4LCAgICA0NCwgICAxNDYsICAgMTYzLCAgIDIyOCwgICAgIDYs
Ci0gICAgICAgNywgICAgODQsICAgIDQ0LCAgICA4NSwgICAyMTcsICAgIDU3LCAgIDIyMywgICAy
NTYsICAgMTY4LCAgIDE2OSwKLSAgICAgIDg2LCAgIDIzMiwgICAyMjYsICAgMTIxLCAgIC03NSwg
ICAxMjYsICAgIDY3LCAgIDEyNiwgICAyMTcsICAgIDcwLAotICAgICAyNDYsICAgMjExLCAgIDIx
MiwgICAyMTMsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDIzLCAgICAyNCwgICAxNzAsCi0gICAg
IDIxNCwgICAyNzMsICAgMjU1LCAgIDE3MSwgICAyMjAsICAgMTA4LCAgIDI5OCwgICAyMTcsICAg
IDc0LCAgIC0yNSwKLSAgICAgMjE1LCAgICA3MCwgICAyMTcsICAgMTc5LCAgIDE4MCwgICAgNDQs
ICAgIDc2LCAgICA0NCwgICAyMzcsICAgMjM4LAotICAgICAyMzksICAgMjQwLCAgICA0OSwgICAy
NTksICAgMjYwLCAgIDIzMywgICAyMzQsICAgMTA4LCAgIDEwOCwgICAxMDgsCi0gICAgIDEwOCwg
ICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMjYxLCAg
IDMwMiwKLSAgICAgIDgzLCAgIDE0NiwgICAgIDIsICAgICAzLCAgICAgNCwgICAxMjEsICAgIDU5
LCAgICA2MCwgICAgNjEsICAgMTg3LAotICAgICAxODgsICAgMjE3LCAgIDI2NCwgICAxMjQsICAg
MTI2LCAgIDI3NCwgICAyMzUsICAgMjM2LCAgIDI0MSwgICAyNDIsCi0gICAgIDE1NiwgICAtMjYs
ICAgMTg5LCAgIDE3MiwgICAxOTUsICAgMjY1LCAgIDE3NywgICAxMDgsICAgMTkwLCAgIDIwMCwK
LSAgICAgMjc0LCAgIDI3OSwgICAxMjEsICAgMTkzLCAgIDIwMywgICAyMDEsICAgMjA0LCAgIDIw
OCwgICAyMDUsICAgMjkwLAotICAgICAyMTcsICAtMTE2LCAgIDIyMSwgICAyMDksICAgIDQ0LCAg
IDIyNSwgICAyNDgsICAtMTY0LCAgIDI2OCwgICAyOTksCi0gICAgICA1OCwgICAgIDIsICAgICAz
LCAgICAgNCwgICAxMDgsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAg
MTQ2LCAgIDE2MywgICAyNjIsICAgMjYzLCAgIC0yNywgICAyNjcsICAgMjc4LCAgIDI4MSwgICAg
MTEsICAgIDEyLAotICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCi0gICAgIDI4MCwgICAyODcsICAgMjg4LCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAyODksICAgIDI3LCAgICAyOCwKLSAgICAgIDI5LCAg
ICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAyOTEsICAg
MjkyLAotICAgICAgOTIsICAgIDkzLCAgIDI5MywgICAxNDYsICAgMTQ2LCAgIDI5NCwgICAyMzEs
ICAgMTQ2LCAgIDE0NiwgICAzMDMsCi0gICAgIDI0NCwgICAyNDMsICAgMTU3LCAgICA3OCwgICAy
NDUsICAgIDgyLCAgIDE1OCwgICAgNTEsICAgMTk0LCAgICA5NCwKLSAgICAgMjcwLCAgIDI2Niwg
ICAxNDYsICAgMjU4LCAgIDI3MSwgICAzMDAsICAgMjgyLCAgICA3MiwgICAgIDAsICAgICAwLAot
ICAgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgIDE0NiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgMTQ2LCAgICAgMSwgICAgIDIsICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKLSAgICAgICA4LCAgICAgOSwgICAgMTAs
ICAgMTI5LCAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LAotICAgICAx
MzUsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgMTM2LCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLAotICAgICAgOTEsICAg
ICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCisgICAgICA0NCwgICAgNTUsICAgMTY1LCAgIDE2NCwgICAxNjksICAgIDgwLCAgIDIyNiwg
ICAxMjMsICAgMjIyLCAgIDIwMCwKKyAgICAgIDcxLCAgICAzMiwgICAgMzMsICAgMjcyLCAgIDE5
MywgICAgNzAsICAgMjg4LCAgICA0OSwgICAxODUsICAgMTg2LAorICAgICAgNTYsICAgMTc4LCAg
IDEyMywgICAgODgsICAgIDcyLCAgICA1MCwgICAgNTIsICAgIDUzLCAgIDE3NSwgICAyNzgsCisg
ICAgICA4OSwgICAyMjgsICAgIDU4LCAgICA3NiwgICAxNzYsICAgIDg0LCAgIDMwNCwgICAyMTks
ICAgMTcwLCAgIDE3MSwKKyAgICAgIDQ0LCAgICA2NiwgICAgNDQsICAgIDg2LCAgIDI3OCwgICAy
MDksICAgIDQ0LCAgIDEyNywgICAyOTgsICAgMTk0LAorICAgICAgNTksICAgIDQ0LCAgIDI5OCwg
ICAxODcsICAgMTg4LCAgICA4NCwgICAgNTQsICAgIDMyLCAgICAzMywgICAxNzIsCisgICAgIDE1
OCwgICAxNjEsICAgIDczLCAgIDE3MywgICAgNjYsICAgIDQ0LCAgIDI3NiwgICAzMDEsICAgMTYy
LCAgICA2OSwKKyAgICAgIDUzLCAgICA2NywgICAyMTksICAgMjE5LCAgICA2OCwgICAxNjUsICAg
MjI1LCAgICA0NCwgICAgNjAsICAgMTQ4LAorICAgICAyMzAsICAgIDc4LCAgIDIwMCwgICAgIDYs
ICAgICA3LCAgICA0NCwgICAxODMsICAgMjE5LCAgIDE4NCwgICAyMzUsCisgICAgIDIyMCwgICAg
NjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgMTIzLCAgICAgNiwgICAgIDcsICAgMTI3LCAgICA0
OSwKKyAgICAgMTI3LCAgIDI1MSwgICAyNDksICAgMjE5LCAgIDI1MiwgICAxMTAsICAgMjU5LCAg
ICA4NywgICAgNjEsICAgIDYyLAorICAgICAgNjMsICAgIDIzLCAgICAyNCwgICAtMjcsICAgMjU4
LCAgICA3MywgICAyMjIsICAgICAyLCAgICAgMywgICAgIDQsCisgICAgIDExMCwgICAgNjEsICAg
IDYyLCAgICA2MywgICAgMjMsICAgIDI0LCAgIDE2NywgICAxNjgsICAgIDQ0LCAgICA3OSwKKyAg
ICAgIDQ0LCAgIDI2MiwgICAyNjMsICAgMjEzLCAgIDIxNCwgICAyMTUsICAgIDUyLCAgICA1Mywg
ICAyNjQsICAgMTgxLAorICAgICAxODIsICAgMzA1LCAgIDIxNiwgICAxODAsICAgMTI2LCAgIDE4
OSwgICAxOTAsICAgLTc2LCAgIC0yOCwgICAyMzMsCisgICAgIDIzOCwgICAyMzksICAgMjE3LCAg
IDE0OCwgICAyMTksICAgMjY3LCAgIDE3NCwgICAxMjMsICAgMjQwLCAgIDI0MSwKKyAgICAgMjQy
LCAgIDI0MywgICAxOTEsICAgMjQ0LCAgIDI0NSwgICAyNjgsICAgMTc5LCAgIDE5MiwgICAyNzcs
ICAgMjA1LAorICAgICAxOTUsICAgMTI3LCAgIDIwNiwgICAyMDIsICAgMjAzLCAgIDIwNywgICAy
MTAsICAgMjI3LCAgIDIxMSwgICAyMjMsCisgICAgIDI4MiwgIC0xMTcsICAgMjUwLCAgIDI3Nywg
ICAxMjMsICAgMjcwLCAgLTE2NSwgIC0xMzgsICAgMjY1LCAgIDI2NiwKKyAgICAgMjE5LCAgIDI4
MSwgICAyOTMsICAgMTEwLCAgIDI4MywgICAyODQsICAgMjk2LCAgIDI5MSwgICAyOTIsICAgMjk0
LAorICAgICAyOTUsICAgIDQ0LCAgIDMwMiwgICAyNzEsICAgMzA2LCAgIDI0NiwgICAyOTcsICAg
MjM0LCAgIDI0NywgICAgODEsCisgICAgIDE2NSwgICAyNDgsICAgMTQ4LCAgIDIzNiwgICAyMzcs
ICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMCwKKyAgICAgMTEwLCAgIDExMCwgICAx
MTAsICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTU5LCAgICA4NSwgICAxNjAsICAgIDUxLAorICAg
ICAyMDEsICAgMzAzLCAgIDI3MywgICAyNjEsICAgMjY5LCAgIDI3NCwgICAyODUsICAgIDc1LCAg
ICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgOTQsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTM3LCAgIDEzOCwgICAgIDAsICAgICAwLAotICAgICAgIDAs
ICAgICAwLCAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwg
ICAgIDMsCi0gICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwgICAxMjksICAgMTMwLCAgIDEzMSwKLSAgICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LCAg
IDEzNSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAs
Ci0gICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzYsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLCAgICA4NywKLSAgICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwg
ICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgMjkwLCAgIDExMCwgICAxNDgsICAgMTQ4LCAgICAgMCwgICAgIDAsCisgICAg
IDE0OCwgICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDgs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDExMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwg
ICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ4LCAgICAgMSwgICAgIDIsICAgICAzLCAg
ICAgNCwKKyAgICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMx
LCAgIDEzMiwgICAxMzMsICAgICAwLAorICAgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAg
IDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCisgICAgICAxNywgICAgMTgs
ICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywK
KyAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgOTAsICAgIDMxLAorICAgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAg
ICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAxMzcsICAgMjE5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsCi0gICAgICA5NywgICAgIDEsICAgICAyLCAgICAg
MywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAg
IDEyOSwgICAxMzAsICAgMTMxLCAgICAgMCwgICAxMzIsICAgMTMzLCAgIDEzNCwgICAxMzUsICAg
IDExLAotICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgs
ICAgIDE5LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
MjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM2LCAgICAyNywKLSAgICAgIDI4LCAgICAyOSwg
ICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLAot
ICAgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgICAxLAorICAgICAg
IDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwgICAxMzEsCisgICAgIDEzMiwgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAg
IDEzNywgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAorICAgICAgIDAsICAg
ICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAg
MjksCisgICAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwg
ICAgIDAsICAgIDk0LCAgICA5NSwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgOTQsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTM3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0g
ICAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMs
ICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAx
MjksICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLAotICAgICAxMzMsICAgMTM0LCAgIDEzNSwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCisgICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAw
LCAgICAgMCwKKyAgICAgICAwLCAgIDEzOSwgICAyMjEsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE0MSwgICAgOTcsICAgIDk4LAorICAgICAgIDAsICAgIDk5LCAgICAgMSwgICAgIDIs
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsCisgICAgICAgOSwgICAg
MTAsICAgMTMxLCAgIDEzMiwgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEz
NywKKyAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLAorICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgsCisgICAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwKKyAg
ICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICA5NiwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAxMzksICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgMTQx
LCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQs
ICAgICA1LAorICAgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEzMSwgICAx
MzIsICAgMTMzLCAgICAgMCwgICAxMzQsCisgICAgIDEzNSwgICAxMzYsICAgMTM3LCAgICAxMSwg
ICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKICAgICAgIDE4LCAgICAx
OSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0
LAotICAgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAg
IDg3LCAgICAzMSwgICAgODgsCi0gICAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAs
ICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgIDI1LCAgICAyNiwgICAx
MzgsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLAorICAg
ICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzYsICAgICAwLAotICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5Nywg
ICAgIDEsCi0gICAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAg
OCwgICAgIDksICAgIDEwLCAgIDEyOSwKLSAgICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLCAg
IDEzMywgICAxMzQsICAgMTM1LCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1
LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAs
Ci0gICAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEzNiwgICAg
MjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwg
ICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLAotICAgICAgOTMsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDk0LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LAotICAgICAgOTYsICAgICAwLCAgICA5NywgICAg
IDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsCi0gICAgICAgOCwg
ICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKLSAgICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2
LCAgICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCi0gICAgICAgMCwgICAgMjcs
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwK
LSAgICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDc5LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAw
LCAgIDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgICAxLCAgICAgMiwKKyAgICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAx
MzEsICAgMTMyLAorICAgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAg
ICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjksICAg
IDMwLAorICAgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAs
ICAgIDk0LCAgICA5NSwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3
LCAgICA5OCwgICAgIDAsCisgICAgICA5OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAg
ICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKKyAgICAgIDEwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLAorICAgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwgICAgMjEsCisgICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAg
ICAyNSwgICAgMjYsICAgICAwLCAgICAyNywKKyAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkw
LCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLAorICAgICAgOTQsICAg
IDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NiwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLAorICAgICAgOTcsICAgIDk4LCAg
ICAgMCwgICAgOTksICAgIDYwLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDYsCisg
ICAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAg
MTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAorICAgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsCisgICAgICAy
NiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkx
LCAgICA5MiwKKyAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAg
IDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAg
MCwKLSAgICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAg
ICAxMSwgICAgMTIsICAgIDEzLAorICAgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywKICAg
ICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAy
NiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgODcsICAgIDMxLCAg
ICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwKLSAgICAgIDkz
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICA5NCwgICAgIDAsCi0gICAgICAgMCwgICAxNjEsICAgICA4LCAgICAgOSwg
ICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwKLSAgICAgIDk2LCAgICAg
MCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LAotICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwKLSAgICAgIDg5LCAgICA5MCwgICAg
OTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLAorICAg
ICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAg
ICA5NCwgICAgOTUsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LAotICAgICAgMTAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgMjA2LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5Nywg
ICAgMTEsCi0gICAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwKLSAgICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LAotICAgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAs
Ci0gICAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLAorICAgICAxNjMsICAgICA4LCAgICAg
OSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsCisgICAg
ICAgMCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAg
IDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAgICA5Mywg
ICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgOTQsICAgICAwLCAgICAgMCwgICAyMjIsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgOTUs
ICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwK
LSAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAg
MCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsCi0gICAgICAzMSwgICAgODgsICAgIDg5
LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwKKyAgICAg
ICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAg
MTAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDIwOCwgICAgOTcsICAgIDk4LCAgICAgMCwg
ICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAx
NywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAg
IDI5LAorICAgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAs
ICAgICAwLCAgICA5NCwgICAgOTUsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLAot
ICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk1
LCAgICA5NiwgICAgIDAsCi0gICAgICA5NywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKLSAgICAgIDIwLCAgICAyMSwgICAgMjIs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgMTc1LAotICAgICAg
IDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4
OSwgICAgOTAsCi0gICAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLAorICAgICAyMjQsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAg
OTgsCisgICAgICAgMCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwg
ICAgMTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisg
ICAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICA5NCwg
ICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsCi0gICAgICAg
OSwgICAgMTAsICAgICAwLCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDAsICAgICAw
LCAgICAgMCwKLSAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAg
IDE3LCAgICAxOCwgICAgMTksICAgIDIwLAotICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsCi0gICAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAg
MCwKLSAgICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEy
LCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCi0gICAgICAxOCwgICAgMTksICAg
IDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgIDE5OCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwg
ICAgMzEsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzEsCi0gICAgICAgMCwgICAgIDAsICAgICAxLCAg
ICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKLSAgICAgICA5
LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMjQ3LAotICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAg
MTcsICAgIDE4LCAgICAxOSwgICAgMjAsCi0gICAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwKLSAgICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0
LAorICAgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAg
ICA5LCAgICAxMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgs
ICAgICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAg
MTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAorICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgIDE3NywgICAgIDAsICAgIDI3LCAg
ICAyOCwgICAgMjksCisgICAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkz
LCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMiwg
ICAgIDMsCisgICAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAx
MCwgICAgIDAsICAgIDk3LCAgICA5OCwKKyAgICAgICAwLCAgICA5OSwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAorICAgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLCAgICAgMCwKKyAgICAgIDMxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsCisgICAg
ICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAg
IDIxLCAgICAyMiwKKyAgICAgMTk5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUs
ICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAgMCwgICAg
MzEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA3NCwgICAgIDAsICAgICAwLCAgICAgMSwgICAgIDIsICAgICAzLCAg
ICAgNCwKICAgICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCisgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDI1MywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwK
ICAgICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDIzLAogICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsCi0gICAgICAgMiwgICAgIDMsICAgICA0
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAg
MTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAg
ICAgMCwgICAgMzEsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIDE0LCAgICAxNSwgICAgMTYsCi0gICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAyNSwg
ICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAyMjksICAgIDMxLAot
ICAgICAgIDgsICAgICA5LCAgICAxMCwgICAyMzAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCisgICAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAg
ICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLAorICAgICAg
MTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAy
MSwgICAgMjIsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMx
LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDgsICAg
ICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCiAgICAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwg
ICAgMTcsICAgIDE4LCAgICAxOSwKICAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LAotICAgICAgIDAsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEKKyAgICAgICAwLCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAx
MSwgICAgMTIsCisgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAg
IDMwLCAgIDIzMSwgICAyMzIsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAg
IDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwg
ICAgMTMsICAgIDE0LCAgICAxNSwKKyAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAg
ICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsCisg
ICAgICAzMQogfTsKIAogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWNoZWNrW10gPQogewot
ICAgICAgIDAsICAgIDU1LCAgICA5NCwgICAgODYsICAgIDcwLCAgIDEyNywgICAgNDUsICAgMTUx
LCAgIDI3MywgICAgNjAsCi0gICAgICA0MCwgICAgMzYsICAgIDg1LCAgICAgMCwgICAgIDAsICAg
MTYwLCAgIDI1NywgICAgMzcsICAgIDc5LCAgICA4NSwKLSAgICAgIDg0LCAgICA4MiwgICAgODYs
ICAgMTA2LCAgICAgMywgICAgNDUsICAgIDcwLCAgIDI1MywgICAyOTMsICAgICA4LAotICAgICAg
IDksICAgMjcyLCAgICA1NywgICAgNjMsICAgIDU1LCAgICA1NiwgICAgNzksICAgIDc2LCAgICA0
MiwgICAgODIsCi0gICAgICA0MCwgICAgODUsICAgIDQyLCAgIDEzNSwgICAgOTUsICAgIDc1LCAg
ICA0NiwgICAgNTEsICAgIDkyLCAgICA5MywKLSAgICAgIDc5LCAgICA1MSwgICAgODIsICAgIDgy
LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDQ2LAotICAgICAgNDYsICAg
IDc0LCAgIDI4OCwgICAgNjMsICAgIDgyLCAgIDEwOSwgICAyOTIsICAgIDczLCAgICA4MSwgICAg
OTAsCi0gICAgICA5MSwgICAgNzMsICAgMTk0LCAgICA3OSwgICAgIDMsICAgIDc1LCAgICA3Niwg
ICAxNjAsICAgMTcwLCAgICAgOCwKLSAgICAgICA5LCAgICA3MiwgICAgODIsICAgIDc0LCAgICA3
OSwgICAgNzksICAgMTU5LCAgICA4MiwgICAgNTMsICAgIDU0LAotICAgICAgODEsICAgMTc0LCAg
ICA3MywgICAxNTksICAgIDczLCAgIDEyNSwgICAgNDUsICAgMTI3LCAgICA3OSwgICAgNzQsCi0g
ICAgIDE5MiwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYs
ICAgIDM3LCAgICA3NCwKLSAgICAgIDcxLCAgICA3MywgICAyMDQsICAgIDc4LCAgIDI1OCwgICAx
NTksICAgIDczLCAgICA3OSwgICAgNzYsICAgIDcyLAotICAgICAgODEsICAgIDc0LCAgICA3OSwg
ICAgODcsICAgIDg4LCAgIDEyNSwgICAgNzYsICAgMTI3LCAgIDE4MywgICAxODQsCi0gICAgIDE4
NSwgICAxODYsICAgIDM3LCAgIDIxNiwgICAyMTcsICAgMTc5LCAgIDE4MCwgICAxODEsICAgMTgy
LCAgIDE4MywKLSAgICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LCAgIDE4OCwgICAxODksICAg
MTkwLCAgIDE5MSwgICAyMjEsICAgMjk0LAotICAgICAgNDUsICAgMTUxLCAgICAgNCwgICAgIDUs
ICAgICA2LCAgIDIyMSwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgNTcsCi0gICAgICA1OCwgICAg
NzksICAgIDgwLCAgICA4MiwgICAxOTQsICAgMjU3LCAgIDE4MSwgICAxODIsICAgMTg3LCAgIDE4
OCwKLSAgICAgIDQ1LCAgICA3MiwgICAgNTksICAgIDczLCAgICA0NSwgICAyNDgsICAgIDcyLCAg
IDIyMSwgICAgNjEsICAgIDgyLAotICAgICAyNzIsICAgMjY0LCAgIDI0OCwgICAgNzUsICAgIDcy
LCAgICA4MiwgICAgNzIsICAgIDcyLCAgICA4MiwgICAyODEsCi0gICAgICA3OSwgICAgNzIsICAg
IDc0LCAgICA3NywgICAxOTQsICAgIDc1LCAgICA3NCwgICAgNzYsICAgMjUyLCAgIDI5MSwKLSAg
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgIDI0OCwgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLAotICAgICAyMTAsICAgMjk0LCAgICA3NSwgICAgNzUsICAgIDcyLCAgICA0
MCwgICAgNzUsICAgIDcyLCAgICAyMSwgICAgMjIsCi0gICAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKLSAgICAgIDc1
LCAgICA0NSwgICAgNzMsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA3NywgICAgNDEs
ICAgIDQyLAotICAgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLCAgICA4MiwgICAgNzMsCi0gICAgICA1MywgICAgNTQsICAgIDE2LCAgIDI1Mywg
ICAyNTQsICAgIDgxLCAgIDE3MSwgICAyNTcsICAgMjU4LCAgICA4MiwKLSAgICAgMTkwLCAgIDE4
OSwgICAgODIsICAgIDU3LCAgIDE5MSwgICAgNjQsICAgIDgyLCAgICAgNSwgICAxMjUsICAgIDcy
LAotICAgICAyNTQsICAgMjQ5LCAgIDI3MiwgICAyMTAsICAgMjU0LCAgIDI5MiwgICAyNzIsICAg
IDQ2LCAgICAtMSwgICAgLTEsCi0gICAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgMjg4LCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAy
OTIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LAotICAg
ICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAg
ICAxOCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1
LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAzMSwgICAgMzIsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LAotICAgICAgNDAs
ICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwg
ICAgNDksCi0gICAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgICAwLCAgICAyNSwgICAgODksICAgIDg4LCAg
ICA5NiwgICAgNTcsICAgMTYyLCAgICA3MywgICAxNTMsICAgMTI4LAorICAgICAgNDAsICAgICAw
LCAgICAgMCwgICAyNTYsICAgIDU5LCAgICAzOSwgICAyNzYsICAgIDM3LCAgICA1NCwgICAgNTUs
CisgICAgICA4MSwgICAxMDgsICAgIDg4LCAgICA3MywgICAgNDIsICAgIDQ1LCAgICA0NSwgICAg
NDYsICAgIDcyLCAgIDI2MCwKKyAgICAgIDgwLCAgICA3MiwgICAgNzIsICAgIDUxLCAgICA3OCwg
ICAgNjUsICAgMjk2LCAgICA3OCwgICAgNTIsICAgIDUzLAorICAgICAgNDAsICAgIDM2LCAgICA0
MiwgICAgNjcsICAgMjc1LCAgIDEzNywgICAgNDYsICAgIDc3LCAgIDI5MSwgICAgOTQsCisgICAg
ICA3OCwgICAgNTEsICAgMjk1LCAgICA4OSwgICAgOTAsICAgIDg1LCAgICA3NSwgICAgNDYsICAg
IDQ2LCAgICA3MywKKyAgICAgIDg0LCAgICA3MywgICAgNzMsICAgIDc3LCAgICA1OSwgICAgNjUs
ICAgIDcyLCAgICA3MiwgICAgODAsICAgIDQ1LAorICAgICAgNDYsICAgIDc4LCAgICA3OCwgICAg
NzgsICAgIDgxLCAgIDE2MiwgICAxNjEsICAgIDc3LCAgICAgMywgICAgNzksCisgICAgIDE3Miwg
ICAgNzUsICAgMjAxLCAgICAgOCwgICAgIDksICAgIDg1LCAgICA4MywgICAgNzgsICAgIDg1LCAg
IDE3NiwKKyAgICAgIDgxLCAgICAgMywgICAgMzMsICAgIDM0LCAgICAzNSwgICAxNjEsICAgICA4
LCAgICAgOSwgICAxMjgsICAgIDM3LAorICAgICAxMzAsICAgIDc4LCAgIDE5NCwgICAgNzgsICAg
IDgxLCAgICA3MywgICAgODEsICAgIDcxLCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYs
ICAgIDM3LCAgICA3MSwgICAyMDYsICAgIDczLCAgIDI2MSwgICAgIDQsICAgICA1LCAgICAgNiwK
KyAgICAgIDg4LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDk0LCAgICA5
NSwgICAxMjgsICAgIDc1LAorICAgICAxMzAsICAgMjE4LCAgIDIxOSwgICAgNjEsICAgIDYyLCAg
ICA2MywgICAgNDUsICAgIDQ2LCAgIDIyMywgICAgODYsCisgICAgICA4NywgICAyOTcsICAgIDcw
LCAgIDExMSwgICAgODEsICAgIDU2LCAgICA1NywgICAgNzIsICAgIDcxLCAgIDE3MywKKyAgICAg
MTgzLCAgIDE4NCwgICAgODAsICAgMTUzLCAgICA3OCwgICAgNzksICAgIDcyLCAgIDIyMywgICAx
ODUsICAgMTg2LAorICAgICAxODcsICAgMTg4LCAgICA1OCwgICAxODksICAgMTkwLCAgIDI1MCwg
ICAgNzEsICAgIDYwLCAgIDI2MCwgICAgNzEsCisgICAgICA3NCwgICAyMDEsICAgIDcxLCAgICA4
MSwgICAgODEsICAgIDgxLCAgICA3MSwgICAgNzQsICAgIDc2LCAgICA3MywKKyAgICAgMjY3LCAg
ICA3MSwgICAgNzMsICAgMjc1LCAgIDI1MCwgICAgNDAsICAgIDc1LCAgICA3MSwgICAgNzQsICAg
IDc0LAorICAgICAgNzgsICAgIDc0LCAgIDI4NCwgICAxNjEsICAgIDc0LCAgICA3MSwgICAgMTYs
ICAgIDcyLCAgICA3NiwgICAgODEsCisgICAgICA3MiwgICAyMDEsICAgMjk0LCAgIDI1NSwgICAg
ODEsICAgMTkxLCAgICA4MCwgICAxNzMsICAgMTkyLCAgICA1OSwKKyAgICAgMjk3LCAgIDE5Mywg
ICAyMTIsICAgMTgxLCAgIDE4MiwgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LAor
ICAgICAxODgsICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTkyLCAgIDE5MywgICAgODUsICAgIDY2
LCAgICA4NSwgICAgIDUsCisgICAgIDEzMCwgICAyOTUsICAgMjU3LCAgIDIxMiwgICAyNTEsICAg
MjU3LCAgIDI3NSwgICAgNDYsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAg
LTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIDc3LCAgICAt
MSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAg
ICA4NiwgICAgIDMsICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgLTEsICAg
IDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAg
MjUsCi0gICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0
MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAotICAgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsCisg
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyNzgsICAgMjIzLCAgIDI1NiwgICAyNTcs
ICAgIC0xLCAgICAtMSwKKyAgICAgMjYwLCAgIDI2MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgIDI3NSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAt
MSwgICAgLTEsICAgMjUwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwKKyAgICAgIC0xLCAgIDI5MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyOTUsICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LAorICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAs
ICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsCisgICAgICAxNywgICAg
MTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwKKyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDM2LAorICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQx
LCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCisgICAgICA0NywgICAgNDgsICAg
IDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0xLCAgICAtMSwKICAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3NiwgICAgNzcsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwKLSAgICAgIDg2
LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAs
ICAgIDExLAotICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAg
MTgsICAgIDE5LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQx
LAotICAgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAg
IDQ5LCAgICA1MCwgICAgLTEsCi0gICAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgIDc2LAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAg
ICA4NSwgICAgIDMsCisgICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgLTEsICAg
IDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAorICAgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0
MCwgICAgNDEsICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAorICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
CisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
NzEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICA3NSwgICAgNzYsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLAorICAgICAgLTEsICAgIDg1LCAgICAg
MywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCisgICAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAorICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCisgICAgICA0MSwg
ICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICAtMSwKKyAgICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3MiwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
LSAgICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgIDMsICAgICA0LCAgICAg
NSwgICAgIDYsICAgICA3LAorICAgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc1LCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA4MSwgICAgODIsICAgIDgz
LCAgICAtMSwgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKICAgICAg
ICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAg
LTEsICAgIDE3LAogICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsCiAgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywKICAgICAgIDM4LCAg
ICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LAotICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQs
ICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAg
NTIsICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA3NiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAg
IDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAgMywKLSAgICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAg
MTQsICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAy
MiwgICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3
LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLAotICAgICAgNDQsICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAg
NTMsCi0gICAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsCi0g
ICAgICA4NCwgICAgLTEsICAgIDg2LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcs
ICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIDIxLCAgICAyMiwg
ICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAz
MCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4
LCAgICAzOSwKLSAgICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAg
IDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LAotICAgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMs
ICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgIC0xLCAgICAt
MSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAg
ICA4NSwgICAgIDMsICAgICA0LAorICAgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgLTEsICAg
IDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwKKyAg
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0
MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsCisgICAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLCAgICAtMSwKICAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MTAsICAgIDExLCAgICAxMiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4Mywg
ICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0x
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEsICAg
IDgyLCAgICA4MywgICAgLTEsCisgICAgICA4NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKKyAgICAgIDEyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLAorICAg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgMzEsCisgICAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3
LCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwKKyAgICAgIDQyLCAgICA0MywgICAgNDQsICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLAorICAgICAgNTIs
ICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICA3MSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLAorICAgICAgODIsICAgIDgz
LCAgICAtMSwgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgIDgs
CisgICAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsCisgICAg
ICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwg
ICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAg
ICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1
LCAgICAyMSwgICAgMjIsICAgIDIzLAogICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAg
IDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCiAgICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywK
LSAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAt
MSwgICAgLTEsICAgIDUzLAotICAgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwKLSAgICAg
IC0xLCAgICA3NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDgzLAotICAgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDM4LCAg
ICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LAotICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQs
ICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAg
NDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKICAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAxMCwgICAgMTEsCi0gICAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAg
IDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAyMSwKLSAgICAgIDIyLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLAotICAgICAg
MzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAt
MSwgICAgNDEsCi0gICAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwKLSAgICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAg
LTEsCisgICAgICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAg
ICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsCisg
ICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYs
ICAgIDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3
MiwgICAgLTEsICAgIC0xLCAgICA3NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0x
LCAgICAtMSwKLSAgICAgIC0xLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAg
IDIyLCAgICAyMywgICAgMjQsICAgIDI1LAotICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAg
LTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0
NSwKLSAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAg
ICA1MywgICAgNTQsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAg
IDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKKyAg
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAz
OSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAg
ICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKICAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
NzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgODMsICAgIDg0LCAgICAtMSwKLSAgICAgIDg2LCAgICAy
MSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5
LAotICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAzOCwgICAgMzksCi0gICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQs
ICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwKLSAgICAgIDUwLCAgICAtMSwgICAg
LTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAg
ICAtMSwgICAgLTEsCisgICAgICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgMjEsICAg
IDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjks
ICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgMzgsCisgICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0
NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAg
ICA1MywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
Ci0gICAgICAtMSwgICAgLTEsICAgIDcyLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAxMCwKLSAgICAgIDExLCAgICAxMiwgICAgLTEsICAgIDgzLCAgICA4NCwg
ICAgLTEsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgMjEsICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAg
ICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAg
IDM5LCAgICAtMSwKLSAgICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYs
ICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAxMCwgICAg
MTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAg
ICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIDc3
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAg
IDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMCwK
LSAgICAgIC0xLCAgICAtMSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAg
OCwgICAgIDksICAgIDEwLAotICAgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzcsCi0gICAgICAyMSwgICAgMjIsICAgIDIz
LCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKLSAgICAg
IDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAg
MzksICAgIC0xLAotICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0Niwg
ICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsCisgICAgICAtMSwgICAgLTEsICAgIDcxLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKKyAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAyMSwgICAgMjIsICAg
IDIzLAorICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDMxLCAgICAzMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwg
ICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAor
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgNzEsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgODIsICAgIDgzLAorICAgICAg
LTEsICAgIDg1LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAy
NCwgICAgMjUsCisgICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5
LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLAorICAgICAgNDYsICAg
ICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAg
MTIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgNzYsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsCisg
ICAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAwLCAgICAtMSwgICAg
LTEsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LAogICAgICAgIDcsICAgICA4LCAgICAgOSwg
ICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1
LCAgICAyNiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAgICAyMSwgICAgMjIsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAogICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsCiAgICAgICAzNywgICAg
MzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0
NiwKLSAgICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAg
ICAxMSwgICAgMTIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAg
IDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKLSAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwg
ICAgNDIsICAgIDQzLAotICAgICAgNDQsICAgIC0xLCAgICA0NiwgICAgMTAsICAgIDExLCAgICAx
MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgIDI3
LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAg
NDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICA1MCwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEy
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAyMSwgICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcs
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAg
ICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAyMSwgICAgMjIsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAogICAgICAgMzAs
ICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwg
ICAgMzksCi0gICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0
NgorICAgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAg
IDEwLCAgICAxMSwgICAgMTIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAg
ICA0MSwgICAgNDIsCisgICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICAtMSwKKyAgICAgIDQ2CiB9OwogCiAvKiBZWVNUT1NbU1RBVEUt
TlVNXSAtLSBUaGUgKGludGVybmFsIG51bWJlciBvZiB0aGUpIGFjY2Vzc2luZwpAQCAtMTMwOCwz
MiArMTM0MywzMiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KICAgICAg
IDMwLCAgICAzMSwgICAgMzIsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MSwgICAg
NDIsICAgIDQzLAogICAgICAgNDQsICAgIDQ2LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOSwg
ICAxMzAsICAgMTM1LCAgIDEzNiwgICAxMzcsCiAgICAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0
MSwgICAxNDIsICAgMTQzLCAgIDE3NSwgICAxNzYsICAgMTc3LCAgICAzNywKLSAgICAgIDQ1LCAg
IDE0MCwgICAgNDUsICAgIDc2LCAgICA4MiwgICAxNzgsICAgIDczLCAgICA3OSwgICAgIDMsICAg
IDMzLAotICAgICAgMzQsICAgIDM1LCAgIDEzMiwgICAxMzMsICAgMTM4LCAgICA3OSwgICAgODIs
ICAgIDQ1LCAgIDEzOSwgICAxNDEsCi0gICAgICA3NCwgICAgIDAsICAgMTc2LCAgIDE0MSwgICAg
NzYsICAgMTQ1LCAgICA3NiwgICAxNjEsICAgMTMyLCAgIDEzMSwKLSAgICAgMTM0LCAgIDEzOSwg
ICAxMzMsICAgIDQ1LCAgICA3MiwgICAgNzQsICAgIDgxLCAgICA0NSwgICAgNDcsICAgIDQ4LAot
ICAgICAgNDksICAgIDUwLCAgICA1MywgICAgNTQsICAgIDcyLCAgICA4MywgICAgODQsICAgIDg2
LCAgICA5NywgICAgOTgsCi0gICAgICA5OSwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAg
MTA1LCAgIDEwNiwgICAxMDcsICAgMTA4LCAgIDEwOSwKLSAgICAgMTEwLCAgIDExMSwgICAxMTIs
ICAgMTEzLCAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE5LAotICAgICAx
MjAsICAgMTIxLCAgIDEyNSwgICAxNDIsICAgIDgyLCAgIDE0NCwgICAxMzksICAgMTQ2LCAgIDE0
NywgICAgMTMsCi0gICAgICAxNCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAg
ICA0MCwgICAgNzYsICAgIDc3LCAgICA4MiwKLSAgICAgMTA4LCAgIDEyMSwgICAxMjIsICAgMTI0
LCAgIDEyNiwgICAxMjcsICAgMTQyLCAgIDE1MSwgICAxNTIsICAgMTUzLAotICAgICAxNTQsICAg
MTYyLCAgIDE2MywgICAxNjQsICAgMTY3LCAgIDE3NCwgICAgNDUsICAgMTMxLCAgIDEzNCwgICAg
NzQsCi0gICAgICA4MSwgICAgNzUsICAgMTI1LCAgIDEyMiwgICAxNTAsICAgMTA4LCAgIDEwOCwg
ICAxMjQsICAgIDUzLCAgICA1NCwKLSAgICAgIDc0LCAgICA3OCwgICAgNzMsICAgIDczLCAgICA3
OSwgICAgMzksICAgMTIyLCAgICA3MiwgICAxMDgsICAgIDg3LAotICAgICAgODgsICAgIDg0LCAg
ICA4NiwgICAgNTUsICAgIDU2LCAgICA5MCwgICAgOTEsICAgIDU3LCAgICA1OCwgICAgNTksCi0g
ICAgICA2MSwgICAgNjAsICAgIDk1LCAgICA3NSwgICAxNDYsICAgIDQ1LCAgIDE0OCwgICAxNDks
ICAgIDc3LCAgIDE0NywKLSAgICAgIDgyLCAgICA4MiwgICAxNjksICAgIDcyLCAgICA3MiwgICAg
ODIsICAgIDgyLCAgIDEyNCwgICAgNzIsICAgIDc3LAotICAgICAxNTUsICAgIDYyLCAgICA2Mywg
ICAgNjQsICAgIDcxLCAgICA4MSwgICAxMjMsICAgIDc5LCAgICA4MiwgICAgNzcsCi0gICAgIDE1
MiwgICAgNzQsICAgIDc1LCAgIDEyNSwgICAxNTAsICAgIDc1LCAgICA3MywgICAxMDAsICAgMTI0
LCAgICA0NSwKLSAgICAgIDUwLCAgIDEwMywgICAxMjIsICAgMTA4LCAgIDEwOCwgICAxMTAsICAg
MTEwLCAgIDExMiwgICAxMTIsICAgMTEyLAotICAgICAxMTIsICAgMTEzLCAgIDExMywgICAxMTcs
ICAgMTE4LCAgIDExOSwgICAxMjQsICAgIDc3LCAgICA3NCwgICAgNzksCi0gICAgICA4MiwgICAx
NTgsICAgMTU5LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4MiwgICAxNjgsICAgMTYyLCAgIDEy
MiwKLSAgICAgMTIyLCAgIDEyNSwgICAgNzUsICAgIDc1LCAgICA4MCwgICAxMjUsICAgMTQ5LCAg
ICA0MCwgICAxNjEsICAgMTUzLAotICAgICAxNTEsICAgMTYzLCAgIDE3MSwgICAgNzMsICAgMTI0
LCAgIDEzNywgICAxNjYsICAgMTU2LCAgICA3NSwgICAxMjIsCi0gICAgICA3NSwgICAgNzIsICAg
MTY2LCAgIDE3MiwgICAxNzMsICAgMTU4LCAgIDE2NSwgICAgNDUsICAgIDczLCAgICA3NywKLSAg
ICAgMTI0LCAgICA4MiwgICAgNzMsICAgIDE2LCAgICA4MSwgICAxNTMsICAgMTU3LCAgIDE2MSwg
ICAgNzMsICAgMTI0LAotICAgICAxNTcsICAgMTU4LCAgIDE1MCwgICAgODIKKyAgICAgIDQ1LCAg
IDE0MCwgICAgNDUsICAgIDQ2LCAgICA3NSwgICAgOTYsICAgIDgxLCAgIDE3OCwgICAgNzIsICAg
IDc4LAorICAgICAgIDMsICAgIDMzLCAgICAzNCwgICAgMzUsICAgMTMyLCAgIDEzMywgICAxMzgs
ICAgIDc4LCAgICA4MSwgICAgNDUsCisgICAgICA5NiwgICAxMzksICAgMTQxLCAgICA3MywgICAg
IDAsICAgMTc2LCAgIDE0MSwgICAxNDUsICAgIDc1LCAgICA3NSwKKyAgICAgMTYxLCAgIDEzMiwg
ICAxMzEsICAgMTM0LCAgIDEzOSwgICAxMzMsICAgIDk2LCAgICA3MSwgICAgNzMsICAgIDgwLAor
ICAgICAgNDUsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUyLCAgICA1MywgICAgNzEsICAgIDgy
LCAgICA4MywgICAgODUsCisgICAgICA5NywgICAgOTgsICAgIDk5LCAgIDEwMSwgICAxMDIsICAg
MTAzLCAgIDEwNCwgICAxMDUsICAgMTA2LCAgIDEwNywKKyAgICAgMTA4LCAgIDEwOSwgICAxMTAs
ICAgMTExLCAgIDExMiwgICAxMTMsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LAorICAgICAx
MTgsICAgMTE5LCAgIDEyMCwgICAxMjEsICAgMTI1LCAgIDE0MiwgICAgODEsICAgMTM5LCAgIDE0
NiwgICAxNDcsCisgICAgIDE0NCwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTcsICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDQwLCAgICA3NSwKKyAgICAgIDc2LCAgICA4MSwgICAxMDgsICAgMTIx
LCAgIDEyMiwgICAxMjQsICAgMTI2LCAgIDEyNywgICAxNDIsICAgMTUxLAorICAgICAxNTIsICAg
MTUzLCAgIDE1NCwgICAxNjIsICAgMTYzLCAgIDE2NCwgICAxNjcsICAgMTc0LCAgICA5NiwgICAx
MzEsCisgICAgIDEzNCwgICAgNzMsICAgIDgwLCAgICA3NCwgICAxMjUsICAgMTIyLCAgIDE1MCwg
ICAxMDgsICAgMTA4LCAgIDEyNCwKKyAgICAgIDUyLCAgICA1MywgICAgNzMsICAgIDc3LCAgICA3
MiwgICAgNzIsICAgIDc4LCAgICAzOSwgICAxMjIsICAgIDcxLAorICAgICAxMDgsICAgIDg2LCAg
ICA4NywgICAgODMsICAgIDg1LCAgICA1NCwgICAgNTUsICAgIDg5LCAgICA5MCwgICAgNTYsCisg
ICAgICA1NywgICAgNTgsICAgIDYwLCAgICA1OSwgICAgOTQsICAgIDc0LCAgICA5NiwgICAxNDgs
ICAgMTQ5LCAgICA3NiwKKyAgICAgMTQ3LCAgIDE0NiwgICAgODEsICAgIDgxLCAgIDE2OSwgICAg
NzEsICAgIDcxLCAgICA4MSwgICAgODEsICAgMTI0LAorICAgICAgNzEsICAgIDc2LCAgIDE1NSwg
ICAgNjEsICAgIDYyLCAgICA2MywgICAgNzAsICAgIDgwLCAgIDEyMywgICAgNzgsCisgICAgICA4
MSwgICAgNzYsICAgMTUyLCAgICA3MywgICAgNzQsICAgMTI1LCAgIDE1MCwgICAgNzQsICAgIDcy
LCAgIDEwMCwKKyAgICAgMTI0LCAgICA0NSwgICAgNDYsICAgIDk2LCAgIDEwMywgICAxMjIsICAg
MTA4LCAgIDEwOCwgICAxMTAsICAgMTEwLAorICAgICAxMTIsICAgMTEyLCAgIDExMiwgICAxMTIs
ICAgMTEzLCAgIDExMywgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjQsCisgICAgICA3MywgICAg
NzgsICAgIDgxLCAgICA3NiwgICAxNTgsICAgMTU5LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4
MSwKKyAgICAgMTY4LCAgIDE2MiwgICAxMjIsICAgMTIyLCAgIDEyNSwgICAgNzQsICAgIDc0LCAg
ICA3OSwgICAxMjUsICAgMTQ5LAorICAgICAgNDAsICAgMTYxLCAgIDE1MywgICAxNTEsICAgMTYz
LCAgIDE3MSwgICAgNzIsICAgMTI0LCAgIDEzNywgICAxNjYsCisgICAgIDE1NiwgICAgNzQsICAg
MTIyLCAgICA3NCwgICAgNzEsICAgMTY2LCAgIDE3MiwgICAxNzMsICAgMTU4LCAgIDE2NSwKKyAg
ICAgIDk2LCAgICA3MiwgICAgNzYsICAgMTI0LCAgICA4MSwgICAgNzIsICAgIDE2LCAgICA4MCwg
ICAxNTMsICAgMTU3LAorICAgICAxNjEsICAgIDcyLCAgIDEyNCwgICAxNTcsICAgMTU4LCAgIDE1
MCwgICAgODEKIH07CiAKICNkZWZpbmUgeXllcnJvawkJKHl5ZXJyc3RhdHVzID0gMCkKQEAgLTEz
NjYsNyArMTQwMSw3IEBAIGRvCQkJCQkJCQlcCiAgICAgfQkJCQkJCQkJXAogICBlbHNlCQkJCQkJ
CQlcCiAgICAgewkJCQkJCQkJXAotICAgICAgeXllcnJvciAoY29udGV4dCwgWVlfKCJzeW50YXgg
ZXJyb3I6IGNhbm5vdCBiYWNrIHVwIikpOyBcCisgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250
ZXh0LCBZWV8oInN5bnRheCBlcnJvcjogY2Fubm90IGJhY2sgdXAiKSk7IFwKICAgICAgIFlZRVJS
T1I7CQkJCQkJCVwKICAgICB9CQkJCQkJCQlcCiB3aGlsZSAoWVlJRCAoMCkpCkBAIC0xNDIxLDkg
KzE0NTYsOSBAQCB3aGlsZSAoWVlJRCAoMCkpCiAvKiBZWUxFWCAtLSBjYWxsaW5nIGB5eWxleCcg
d2l0aCB0aGUgcmlnaHQgYXJndW1lbnRzLiAgKi8KIAogI2lmZGVmIFlZTEVYX1BBUkFNCi0jIGRl
ZmluZSBZWUxFWCB5eWxleCAoJnl5bHZhbCwgWVlMRVhfUEFSQU0pCisjIGRlZmluZSBZWUxFWCB5
eWxleCAoJnl5bHZhbCwgJnl5bGxvYywgWVlMRVhfUEFSQU0pCiAjZWxzZQotIyBkZWZpbmUgWVlM
RVggeXlsZXggKCZ5eWx2YWwpCisjIGRlZmluZSBZWUxFWCB5eWxleCAoJnl5bHZhbCwgJnl5bGxv
YykKICNlbmRpZgogCiAvKiBFbmFibGUgZGVidWdnaW5nIGlmIHJlcXVlc3RlZC4gICovCkBAIC0x
NDQ2LDcgKzE0ODEsNyBAQCBkbyB7CQkJCQkJCQkJICBcCiAgICAgewkJCQkJCQkJCSAgXAogICAg
ICAgWVlGUFJJTlRGIChzdGRlcnIsICIlcyAiLCBUaXRsZSk7CQkJCQkgIFwKICAgICAgIHl5X3N5
bWJvbF9wcmludCAoc3RkZXJyLAkJCQkJCSAgXAotCQkgIFR5cGUsIFZhbHVlLCBjb250ZXh0KTsg
XAorCQkgIFR5cGUsIFZhbHVlLCBMb2NhdGlvbiwgY29udGV4dCk7IFwKICAgICAgIFlZRlBSSU5U
RiAoc3RkZXJyLCAiXG4iKTsJCQkJCQkgIFwKICAgICB9CQkJCQkJCQkJICBcCiB9IHdoaWxlIChZ
WUlEICgwKSkKQEAgLTE0NjAsMTggKzE0OTUsMjAgQEAgZG8gewkJCQkJCQkJCSAgXAogI2lmIChk
ZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmlu
ZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9zeW1i
b2xfdmFsdWVfcHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0
ICogY29uc3QgeXl2YWx1ZXAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eV9zeW1ib2xfdmFs
dWVfcHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29u
c3QgeXl2YWx1ZXAsIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucCwgVFBhcnNlQ29u
dGV4dCogY29udGV4dCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ZhbHVlX3ByaW50
ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCkKK3l5X3N5bWJvbF92YWx1ZV9w
cmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIHl5bG9jYXRpb25wLCBjb250ZXh0KQog
ICAgIEZJTEUgKnl5b3V0cHV0OwogICAgIGludCB5eXR5cGU7CiAgICAgWVlTVFlQRSBjb25zdCAq
IGNvbnN0IHl5dmFsdWVwOworICAgIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucDsK
ICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0OwogI2VuZGlmCiB7CiAgIGlmICgheXl2YWx1ZXAp
CiAgICAgcmV0dXJuOworICBZWVVTRSAoeXlsb2NhdGlvbnApOwogICBZWVVTRSAoY29udGV4dCk7
CiAjIGlmZGVmIFlZUFJJTlQKICAgaWYgKHl5dHlwZSA8IFlZTlRPS0VOUykKQEAgLTE0OTQsMTMg
KzE1MzEsMTQgQEAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLAogI2lm
IChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRl
ZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9z
eW1ib2xfcHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICog
Y29uc3QgeXl2YWx1ZXAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eV9zeW1ib2xfcHJpbnQg
KEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1
ZXAsIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucCwgVFBhcnNlQ29udGV4dCogY29u
dGV4dCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0
eXBlLCB5eXZhbHVlcCwgY29udGV4dCkKK3l5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlw
ZSwgeXl2YWx1ZXAsIHl5bG9jYXRpb25wLCBjb250ZXh0KQogICAgIEZJTEUgKnl5b3V0cHV0Owog
ICAgIGludCB5eXR5cGU7CiAgICAgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwOworICAg
IFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucDsKICAgICBUUGFyc2VDb250ZXh0KiBj
b250ZXh0OwogI2VuZGlmCiB7CkBAIC0xNTA5LDcgKzE1NDcsOSBAQCB5eV9zeW1ib2xfcHJpbnQg
KHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsCiAgIGVsc2UKICAgICBZWUZQUklOVEYgKHl5b3V0cHV0
LCAibnRlcm0gJXMgKCIsIHl5dG5hbWVbeXl0eXBlXSk7CiAKLSAgeXlfc3ltYm9sX3ZhbHVlX3By
aW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCk7CisgIFlZX0xPQ0FUSU9O
X1BSSU5UICh5eW91dHB1dCwgKnl5bG9jYXRpb25wKTsKKyAgWVlGUFJJTlRGICh5eW91dHB1dCwg
IjogIik7CisgIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1
ZXAsIHl5bG9jYXRpb25wLCBjb250ZXh0KTsKICAgWVlGUFJJTlRGICh5eW91dHB1dCwgIikiKTsK
IH0KIApAQCAtMTU0OSwxMSArMTU4OSwxMiBAQCBkbyB7CQkJCQkJCQlcCiAjaWYgKGRlZmluZWQg
X19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2Nw
bHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKLXl5X3JlZHVjZV9wcmlu
dCAoWVlTVFlQRSAqeXl2c3AsIGludCB5eXJ1bGUsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5
eV9yZWR1Y2VfcHJpbnQgKFlZU1RZUEUgKnl5dnNwLCBZWUxUWVBFICp5eWxzcCwgaW50IHl5cnVs
ZSwgVFBhcnNlQ29udGV4dCogY29udGV4dCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfcmVkdWNl
X3ByaW50ICh5eXZzcCwgeXlydWxlLCBjb250ZXh0KQoreXlfcmVkdWNlX3ByaW50ICh5eXZzcCwg
eXlsc3AsIHl5cnVsZSwgY29udGV4dCkKICAgICBZWVNUWVBFICp5eXZzcDsKKyAgICBZWUxUWVBF
ICp5eWxzcDsKICAgICBpbnQgeXlydWxlOwogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAj
ZW5kaWYKQEAgLTE1NjksNyArMTYxMCw3IEBAIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5cnVs
ZSwgY29udGV4dCkKICAgICAgIGZwcmludGYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEp
OwogICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVdICsg
eXlpXSwKIAkJICAgICAgICYoeXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQotCQkgICAgICAg
CQkgICAgICAgLCBjb250ZXh0KTsKKwkJICAgICAgICwgJih5eWxzcFsoeXlpICsgMSkgLSAoeXlu
cmhzKV0pCQkgICAgICAgLCBjb250ZXh0KTsKICAgICAgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7
CiAgICAgfQogfQpAQCAtMTU3Nyw3ICsxNjE4LDcgQEAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwg
eXlydWxlLCBjb250ZXh0KQogIyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpCQlcCiBkbyB7
CQkJCQlcCiAgIGlmICh5eWRlYnVnKQkJCQlcCi0gICAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwg
UnVsZSwgY29udGV4dCk7IFwKKyAgICB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eWxzcCwgUnVs
ZSwgY29udGV4dCk7IFwKIH0gd2hpbGUgKFlZSUQgKDApKQogCiAvKiBOb256ZXJvIG1lYW5zIHBy
aW50IHBhcnNlIHRyYWNlLiAgSXQgaXMgbGVmdCB1bmluaXRpYWxpemVkIHNvIHRoYXQKQEAgLTE4
MjgsMTcgKzE4NjksMTkgQEAgeXlzeW50YXhfZXJyb3IgKGNoYXIgKnl5cmVzdWx0LCBpbnQgeXlz
dAogI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAg
IHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lk
Ci15eWRlc3RydWN0IChjb25zdCBjaGFyICp5eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2
YWx1ZXAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eWRlc3RydWN0IChjb25zdCBjaGFyICp5
eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFlZTFRZUEUgKnl5bG9jYXRpb25w
LCBUUGFyc2VDb250ZXh0KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eWRlc3RydWN0
ICh5eW1zZywgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCkKK3l5ZGVzdHJ1Y3QgKHl5bXNnLCB5
eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICAgICBjb25zdCBjaGFyICp5
eW1zZzsKICAgICBpbnQgeXl0eXBlOwogICAgIFlZU1RZUEUgKnl5dmFsdWVwOworICAgIFlZTFRZ
UEUgKnl5bG9jYXRpb25wOwogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsK
ICAgWVlVU0UgKHl5dmFsdWVwKTsKKyAgWVlVU0UgKHl5bG9jYXRpb25wKTsKICAgWVlVU0UgKGNv
bnRleHQpOwogCiAgIGlmICgheXltc2cpCkBAIC0xOTA5LDYgKzE5NTIsOCBAQCBZWVNUWVBFIHl5
bHZhbDsKIAogLyogTnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KIGludCB5eW5l
cnJzOworLyogTG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KK1lZ
TFRZUEUgeXlsbG9jOwogCiAgIGludCB5eXN0YXRlOwogICBpbnQgeXluOwpAQCAtMTk0MiwxNiAr
MTk4NywyMSBAQCBpbnQgeXluZXJyczsKICAgWVlTVFlQRSAqeXl2cyA9IHl5dnNhOwogICBZWVNU
WVBFICp5eXZzcDsKIAorICAvKiBUaGUgbG9jYXRpb24gc3RhY2suICAqLworICBZWUxUWVBFIHl5
bHNhW1lZSU5JVERFUFRIXTsKKyAgWVlMVFlQRSAqeXlscyA9IHl5bHNhOworICBZWUxUWVBFICp5
eWxzcDsKKyAgLyogVGhlIGxvY2F0aW9ucyB3aGVyZSB0aGUgZXJyb3Igc3RhcnRlZCBhbmQgZW5k
ZWQuICAqLworICBZWUxUWVBFIHl5ZXJyb3JfcmFuZ2VbMl07CiAKLQotI2RlZmluZSBZWVBPUFNU
QUNLKE4pICAgKHl5dnNwIC09IChOKSwgeXlzc3AgLT0gKE4pKQorI2RlZmluZSBZWVBPUFNUQUNL
KE4pICAgKHl5dnNwIC09IChOKSwgeXlzc3AgLT0gKE4pLCB5eWxzcCAtPSAoTikpCiAKICAgWVlT
SVpFX1QgeXlzdGFja3NpemUgPSBZWUlOSVRERVBUSDsKIAogICAvKiBUaGUgdmFyaWFibGVzIHVz
ZWQgdG8gcmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQogICAgICBh
Y3Rpb24gcm91dGluZXMuICAqLwogICBZWVNUWVBFIHl5dmFsOwotCisgIFlZTFRZUEUgeXlsb2M7
CiAKICAgLyogVGhlIG51bWJlciBvZiBzeW1ib2xzIG9uIHRoZSBSSFMgb2YgdGhlIHJlZHVjZWQg
cnVsZS4KICAgICAgS2VlcCB0byB6ZXJvIHdoZW4gbm8gc3ltYm9sIHNob3VsZCBiZSBwb3BwZWQu
ICAqLwpAQCAtMTk3MSw2ICsyMDIxLDEyIEBAIGludCB5eW5lcnJzOwogCiAgIHl5c3NwID0geXlz
czsKICAgeXl2c3AgPSB5eXZzOworICB5eWxzcCA9IHl5bHM7CisjaWYgZGVmaW5lZCBZWUxUWVBF
X0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFMCisgIC8qIEluaXRpYWxpemUgdGhlIGRl
ZmF1bHQgbG9jYXRpb24gYmVmb3JlIHBhcnNpbmcgc3RhcnRzLiAgKi8KKyAgeXlsbG9jLmZpcnN0
X2xpbmUgICA9IHl5bGxvYy5sYXN0X2xpbmUgICA9IDE7CisgIHl5bGxvYy5maXJzdF9jb2x1bW4g
PSB5eWxsb2MubGFzdF9jb2x1bW4gPSAwOworI2VuZGlmCiAKICAgZ290byB5eXNldHN0YXRlOwog
CkBAIC0xOTk3LDcgKzIwNTMsNyBAQCBpbnQgeXluZXJyczsKIAkgICBtZW1vcnkuICAqLwogCVlZ
U1RZUEUgKnl5dnMxID0geXl2czsKIAl5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKLQorCVlZ
TFRZUEUgKnl5bHMxID0geXlsczsKIAogCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlz
IGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQogCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQgc3Rh
Y2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKQEAgLTIwMDYsOSArMjA2Miw5IEBAIGlu
dCB5eW5lcnJzOwogCXl5b3ZlcmZsb3cgKFlZXygibWVtb3J5IGV4aGF1c3RlZCIpLAogCQkgICAg
Jnl5c3MxLCB5eXNpemUgKiBzaXplb2YgKCp5eXNzcCksCiAJCSAgICAmeXl2czEsIHl5c2l6ZSAq
IHNpemVvZiAoKnl5dnNwKSwKLQorCQkgICAgJnl5bHMxLCB5eXNpemUgKiBzaXplb2YgKCp5eWxz
cCksCiAJCSAgICAmeXlzdGFja3NpemUpOwotCisJeXlscyA9IHl5bHMxOwogCXl5c3MgPSB5eXNz
MTsKIAl5eXZzID0geXl2czE7CiAgICAgICB9CkBAIC0yMDMxLDcgKzIwODcsNyBAQCBpbnQgeXlu
ZXJyczsKIAkgIGdvdG8geXlleGhhdXN0ZWRsYWI7CiAJWVlTVEFDS19SRUxPQ0FURSAoeXlzcyk7
CiAJWVlTVEFDS19SRUxPQ0FURSAoeXl2cyk7Ci0KKwlZWVNUQUNLX1JFTE9DQVRFICh5eWxzKTsK
ICMgIHVuZGVmIFlZU1RBQ0tfUkVMT0NBVEUKIAlpZiAoeXlzczEgIT0geXlzc2EpCiAJICBZWVNU
QUNLX0ZSRUUgKHl5c3MxKTsKQEAgLTIwNDEsNyArMjA5Nyw3IEBAIGludCB5eW5lcnJzOwogCiAg
ICAgICB5eXNzcCA9IHl5c3MgKyB5eXNpemUgLSAxOwogICAgICAgeXl2c3AgPSB5eXZzICsgeXlz
aXplIC0gMTsKLQorICAgICAgeXlsc3AgPSB5eWxzICsgeXlzaXplIC0gMTsKIAogICAgICAgWVlE
UFJJTlRGICgoc3RkZXJyLCAiU3RhY2sgc2l6ZSBpbmNyZWFzZWQgdG8gJWx1XG4iLAogCQkgICh1
bnNpZ25lZCBsb25nIGludCkgeXlzdGFja3NpemUpKTsKQEAgLTIxMTgsNyArMjE3NCw3IEBAIHl5
YmFja3VwOgogCiAgIHl5c3RhdGUgPSB5eW47CiAgICorK3l5dnNwID0geXlsdmFsOwotCisgICor
K3l5bHNwID0geXlsbG9jOwogICBnb3RvIHl5bmV3c3RhdGU7CiAKIApAQCAtMjE0OSwxOCArMjIw
NSwxOSBAQCB5eXJlZHVjZToKICAgICAgR0NDIHdhcm5pbmcgdGhhdCBZWVZBTCBtYXkgYmUgdXNl
ZCB1bmluaXRpYWxpemVkLiAgKi8KICAgeXl2YWwgPSB5eXZzcFsxLXl5bGVuXTsKIAotCisgIC8q
IERlZmF1bHQgbG9jYXRpb24uICAqLworICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWxzcCAt
IHl5bGVuKSwgeXlsZW4pOwogICBZWV9SRURVQ0VfUFJJTlQgKHl5bik7CiAgIHN3aXRjaCAoeXlu
KQogICAgIHsKLSAgICAgICAgY2FzZSAyOgorICAgICAgICBjYXNlIDQ6CiAKICAgICB7CiAgICAg
ICAgIC8vIFRoZSBzeW1ib2wgdGFibGUgc2VhcmNoIHdhcyBkb25lIGluIHRoZSBsZXhpY2FsIHBo
YXNlCiAgICAgICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9ICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkuc3ltYm9sOwogICAgICAgICBjb25zdCBUVmFyaWFibGUqIHZhcmlhYmxlOwogICAgICAgICBp
ZiAoc3ltYm9sID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciIsICh5eXZzcFsoMSkgLSAo
MSldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMSkgLSAoMSldKSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciIsICh5eXZzcFsoMSkgLSAo
MSldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCk7CiAgICAg
ICAgICAgICBUVmFyaWFibGUqIGZha2VWYXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5zdHJpbmcsIHR5cGUpOwpAQCAtMjE2OSwxMCArMjIyNiwxNyBAQCB5eXJl
ZHVjZToKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoaXMgaWRlbnRpZmllciBj
YW4gb25seSBiZSBhIHZhcmlhYmxlIHR5cGUgc3ltYm9sCiAgICAgICAgICAgICBpZiAoISBzeW1i
b2wtPmlzVmFyaWFibGUoKSkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSwgInZhcmlhYmxlIGV4cGVjdGVkIiwgKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgInZhcmlhYmxlIGV4cGVjdGVkIiwgKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgdmFyaWFi
bGUgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOworCisgICAgICAgICAg
ICBpZiAoY29udGV4dC0+c3ltYm9sVGFibGUuZmluZEJ1aWx0SW4odmFyaWFibGUtPmdldE5hbWUo
KSkgJiYKKyAgICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkg
JiYKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eWxzcFso
MSkgLSAoMSldKSwgdmFyaWFibGUtPmdldEV4dGVuc2lvbigpKSkgeworICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAg
IC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcsIGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVyeSwg
YW5kIHRoZSBwb29sCkBAIC0yMTgxLDIyICsyMjQ1LDIzIEBAIHl5cmVkdWNlOgogICAgICAgICBp
ZiAodmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCApIHsKICAg
ICAgICAgICAgIENvbnN0YW50VW5pb24qIGNvbnN0QXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29uc3RQ
b2ludGVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0KHZhcmlhYmxlLT5nZXRUeXBlKCkpOwotICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICh5
eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2
YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUo
KSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5
bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzoKKyAgY2Fz
ZSA1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgNDoKKyAgY2FzZSA2OgogCiAgICAgewogICAgICAgICAvLwpAQCAtMjIw
NCwxNTUgKzIyNjksNzkgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8vIGNoZWNrIGZvciBvdmVyZmxv
dyBmb3IgY29uc3RhbnRzCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChhYnMoKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5pKSA+PSAoMSA8PCAxNikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93
IiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAi
IGludGVnZXIgY29uc3RhbnQgb3ZlcmZsb3ciLCAiIik7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9
IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5pKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUo
RWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNToKKyAgY2FzZSA3OgogCiAgICAgewogICAgICAg
ICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAg
ICAgIHVuaW9uQXJyYXktPnNldEZDb25zdCgoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmYpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFDb25zdCksICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgNjoKKyAgY2FzZSA4OgogCiAgICAgewogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25z
dCgoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmIpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSld
KSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDc6CisgIGNhc2UgOToKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDg6CisgIGNhc2UgMTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5OgorICBjYXNlIDExOgogCiAgICAgewotICAgICAg
ICBpZiAoISh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5
KCkgJiYgISh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJp
eCgpICYmICEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0
b3IoKSkgewotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRBc1N5bWJvbE5vZGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9m
IHR5cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkuY19zdHIo
KSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFy
cmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAiZXhwcmVzc2lvbiIpOwotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2
cUNvbnN0ICYmICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRR
dWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkpIHsgLy8gY29uc3RhbnQgZm9s
ZGluZyBmb3IgYXJyYXlzCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RBcnJheU5vZGUoKHl5dnNwWygzKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3Rv
cigpKSB7ICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCi0gICAgICAgICAgICAgICAg
VFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7Ci0g
ICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCktPmdldElDb25zdCgpOyAvLyBuZWVkIHRvIGRvIGl0IHRoaXMgd2F5IGJlY2F1c2Ug
di54eSBzZW5kcyBmaWVsZHMgaW50ZWdlciBhcnJheQotICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVs
ZHMsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIp
IC0gKDQpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSkgeyAvLyBjb25zdGFudCBm
b2xkaW5nIGZvciBtYXRyaWNlcwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0TWF0cml4Tm9kZSgoeXl2c3BbKDMpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9u
QXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5pc1ZlY3RvcigpIHx8ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5pc01hdHJpeCgpKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gKHl5dnNwWygzKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpLT5nZXRJQ29uc3QoKSAmJiAhKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmlzQXJyYXkoKSApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9T
dHJlYW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgKHl5dnNwWygzKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5l
LCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJy
YXkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgPT0gMCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldE1heEFycmF5U2l6ZSgpIDw9ICh5eXZzcFso
MykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+
Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCksICh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigpLCAoeXl2
c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9u
KCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpLCB0cnVlLCAoeXl2c3BbKDIp
IC0gKDQpXS5sZXgpLmxpbmUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNldE1h
eFNpemUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzU3lt
Ym9sTm9kZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
VHlwZVBvaW50ZXIoKSwgMCwgZmFsc2UsICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICggKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFz
Q29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA+PSAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldEFy
cmF5U2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJl
YW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhSW5m
b1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlICciIDw8ICh5eXZzcFsoMykgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5p
b25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIiciOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0g
KDQpXS5sZXgpLmxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4
KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikg
LSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzQXJyYXkoKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIiwgIlsi
LCAiYXJyYXkgbXVzdCBiZSByZWRlY2xhcmVkIHdpdGggYSBzaXplIGJlZm9yZSBiZWluZyBpbmRl
eGVkIHdpdGggYSB2YXJpYWJsZSIpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcElu
ZGV4SW5kaXJlY3QsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0
KV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIENvbnN0YW50
VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgICAgIHVu
aW9uQXJyYXktPnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCksICh5eXZzcFsoMikg
LSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgaWYgKCh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3Ry
dWN0KCkpCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5z
ZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRUeXBlKCkuZ2V0U3RydWN0KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSkpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlw
ZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBl
KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNp
b24oKSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Tm9taW5hbFNpemUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzTWF0cml4KCkpKTsKLQotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0g
RXZxQ29uc3QpCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICB9IGVs
c2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJp
eCgpICYmICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBl
KCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0LCAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOwotICAg
ICAgICBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
aXNNYXRyaXgoKSkKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
c2V0VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOwotICAgICAgICBlbHNlIGlmICgo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSAmJiAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1
YWxpZmllcigpID09IEV2cUNvbnN0KQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCkpOwotICAgICAgICBlbHNlIGlm
ICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkK
LSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlw
ZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBl
KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNp
b24oKSwgRXZxVGVtcG9yYXJ5KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkSW5kZXhFeHByZXNzaW9uKCh5eXZzcFsoMSkgLSAo
NCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFso
MykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTA6CisgIGNhc2UgMTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMToKKyAgY2FzZSAxMzoKIAogICAg
IHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5pc0FycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMykgLSAo
MyldLmxleCkubGluZSwgImNhbm5vdCBhcHBseSBkb3Qgb3BlcmF0b3IgdG8gYW4gYXJyYXkiLCAi
LiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAiY2Fu
bm90IGFwcGx5IGRvdCBvcGVyYXRvciB0byBhbiBhcnJheSIsICIuIik7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkpIHsKICAgICAgICAgICAg
IFRWZWN0b3JGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VW
ZWN0b3JGaWVsZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpKSB7CisgICAgICAgICAgICBpZiAoISBjb250ZXh0
LT5wYXJzZVZlY3RvckZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBm
aWVsZHMsICh5eWxzcFsoMykgLSAoMyldKSkpIHsKICAgICAgICAgICAgICAgICBmaWVsZHMubnVt
ID0gMTsKICAgICAgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1swXSA9IDA7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0
b3IgZmllbGRzCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7Cisg
ICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eWxzcFsoMykgLSAoMyldKSk7CiAgICAgICAgICAgICAgICAgaWYgKCh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CkBAIC0yMzYxLDEzICsyMzUwLDEzIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNv
bnN0LCAoaW50KSAoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nKS5zaXplKCkpKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgVFN0cmluZyB2ZWN0b3JTdHJpbmcg
PSAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmc7Ci0gICAgICAgICAgICAgICAgVEludGVy
bVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxlKGZpZWxkcywg
KHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9w
VmVjdG9yU3dpenpsZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IGluZGV4LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgICAgIFRJ
bnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVs
ZHMsICh5eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcFZlY3Rv
clN3aXp6bGUsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRl
eCwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgKGludCkgdmVj
dG9yU3RyaW5nLnNpemUoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKCh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSB7CiAg
ICAgICAgICAgICBUTWF0cml4RmllbGRzIGZpZWxkczsKLSAgICAgICAgICAgIGlmICghIGNvbnRl
eHQtPnBhcnNlTWF0cml4RmllbGRzKCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCks
IGZpZWxkcywgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKSkgeworICAgICAgICAgICAgaWYg
KCEgY29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3Ry
aW5nLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5h
bFNpemUoKSwgZmllbGRzLCAoeXlsc3BbKDMpIC0gKDMpXSkpKSB7CiAgICAgICAgICAgICAgICAg
ZmllbGRzLndob2xlUm93ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLndob2xlQ29s
ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLnJvdyA9IDA7CkBAIC0yMzc2LDYzICsy
MzY1LDU3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZmll
bGRzLndob2xlUm93IHx8IGZpZWxkcy53aG9sZUNvbCkgewotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiBub24tc2NhbGFyIGZpZWxk
cyBub3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIgbm9uLXNjYWxhciBmaWVsZHMgbm90IGltcGxlbWVu
dGVkIHlldCIsICIuIik7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlv
blsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoMCk7Ci0gICAgICAg
ICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZElu
ZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAg
ICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
ICh5eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGly
ZWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5
eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCkpKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9
IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElD
b25zdChmaWVsZHMuY29sICogKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldE5vbWluYWxTaXplKCkgKyBmaWVsZHMucm93KTsKLSAgICAgICAgICAgICAgICBUSW50
ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNw
WygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhE
aXJlY3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwg
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygzKSAt
ICgzKV0pKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5bHNwWygyKSAtICgz
KV0pKTsKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNl
dFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0UHJlY2lzaW9uKCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICgoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCkgPT0g
RWJ0U3RydWN0KSB7CiAgICAgICAgICAgICBib29sIGZpZWxkRm91bmQgPSBmYWxzZTsKLSAgICAg
ICAgICAgIGNvbnN0IFRUeXBlTGlzdCogZmllbGRzID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKLSAgICAgICAgICAgIGlm
IChmaWVsZHMgPT0gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MikgLSAoMyldLmxleCkubGluZSwgInN0cnVjdHVyZSBoYXMgbm8gZmllbGRzIiwgIkludGVybmFs
IEVycm9yIik7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg
ZmllbGRzLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKCpmaWVsZHMp
W2ldLnR5cGUtPmdldEZpZWxkTmFtZSgpID09ICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmlu
ZykgewotICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmllbGRzW2ldLT5uYW1lKCkgPT0g
Kih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGZp
ZWxkRm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGZpZWxkRm91bmQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRU
eXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0U3Ry
dWN0KCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09
IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5
cGUoKigqZmllbGRzKVtpXS50eXBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBj
aGFuZ2UgdGhlIHF1YWxpZmllciBvZiB0aGUgcmV0dXJuIHR5cGUsIG5vdCBvZiB0aGUgc3RydWN0
dXJlIGZpZWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgdGhlIHN0cnVjdHVy
ZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHZhcmlvdXMgc3RydWN0dXJlcy4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFDb25zdCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07
Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgKigqZmllbGRzKVtpXS50eXBlLCAo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZElu
ZGV4KEVPcEluZGV4RGlyZWN0U3RydWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUo
KigqZmllbGRzKVtpXS50eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmaWVs
ZEZvdW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsK
KyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+YWRkQ29uc3RTdHJ1Y3QoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0p
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgqZmllbGRzW2ldLT50
eXBlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIg
b2YgdGhlIHJldHVybiB0eXBlLCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBmaWVsZAorICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gYXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBi
ZXR3ZWVuIHZhcmlvdXMgc3RydWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVy
KEV2cUNvbnN0KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICh5eXZzcFsoMykgLSAo
MyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKKyAgICAg
ICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uWzFdOworICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7Cisg
ICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAqZmllbGRzW2ldLT50eXBlKCksICh5
eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERp
cmVjdFN0cnVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGlu
ZGV4LCAoeXlsc3BbKDIpIC0gKDMpXSkpOworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoKmZpZWxkc1tpXS0+dHlwZSgpKTsKICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVy
ZSIsICh5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIgZmllbGQgc2VsZWN0aW9uIHJl
cXVpcmVzIHN0cnVjdHVyZSwgdmVjdG9yLCBvciBtYXRyaXggb24gbGVmdCBoYW5kIHNpZGUiLCAo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIgZmllbGQgc2VsZWN0aW9uIHJlcXVpcmVz
IHN0cnVjdHVyZSwgdmVjdG9yLCBvciBtYXRyaXggb24gbGVmdCBoYW5kIHNpZGUiLCAoeXl2c3Bb
KDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQpAQCAt
MjQ0MCwzNSArMjQyMywzNSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTI6CisgIGNhc2UgMTQ6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVF
cnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIisrIiwgKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZh
bHVlRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICIrKyIsICh5eXZzcFsoMSkgLSAoMild
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVtZW50LCAoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdEluY3JlbWVu
dCwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikg
LSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BF
cnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICIrKyIsICh5eXZzcFsoMSkgLSAoMild
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICIrKyIsICh5eXZz
cFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzOgor
ICBjYXNlIDE1OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVj
aygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9y
Q2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdERlY3JlbWVudCwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNyZW1lbnQsICh5eXZz
cFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDIpXSks
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5
dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT51bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEpIC0g
KDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDoKKyAgY2FzZSAx
NjoKIAogICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQtPmludGVnZXJFcnJvckNoZWNrKCh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAiW10iKSkKQEAgLTI0NzcsNyAr
MjQ2MCw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNToKKyAg
Y2FzZSAxNzoKIAogICAgIHsKICAgICAgICAgVEZ1bmN0aW9uKiBmbkNhbGwgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmZ1bmN0aW9uOwpAQCAtMjQ5MSwxOCArMjQ3NCwxOCBAQCB5eXJlZHVj
ZToKICAgICAgICAgICAgIC8vIFRoZWlyIHBhcmFtZXRlcnMgd2lsbCBiZSB2ZXJpZmllZCBhbGdv
cml0aG1pY2FsbHkuCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgVFR5cGUgdHlwZShFYnRW
b2lkLCBFYnBVbmRlZmluZWQpOyAgLy8gdXNlIHRoaXMgdG8gZ2V0IHRoZSB0eXBlIGJhY2sKLSAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1Y3RvckVycm9yQ2hlY2soKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUs
ICpmbkNhbGwsIG9wLCAmdHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1
Y3RvckVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0pLmludGVybU5vZGUsICpmbkNhbGwsIG9wLCAmdHlwZSkpIHsKICAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEl0J3MgYSBjb25zdHJ1Y3Rv
ciwgb2YgdHlwZSAndHlwZScuCiAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3Rvcigo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxsLCAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0cnVjdG9yKCh5eXZzcFso
MSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgJnR5cGUsIG9wLCBmbkNhbGwsICh5eWxzcFso
MSkgLSAoMSldKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoMCwgb3AsICh5eXZz
cFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKDAsIG9wLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKHR5cGUpOwogICAg
ICAgICB9IGVsc2UgewpAQCAtMjUxMSwxMyArMjQ5NCwxMyBAQCB5eXJlZHVjZToKICAgICAgICAg
ICAgIC8vCiAgICAgICAgICAgICBjb25zdCBURnVuY3Rpb24qIGZuQ2FuZGlkYXRlOwogICAgICAg
ICAgICAgYm9vbCBidWlsdEluOwotICAgICAgICAgICAgZm5DYW5kaWRhdGUgPSBjb250ZXh0LT5m
aW5kRnVuY3Rpb24oKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCBmbkNhbGwsICZidWls
dEluKTsKKyAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKCh5
eWxzcFsoMSkgLSAoMSldKSwgZm5DYWxsLCAmYnVpbHRJbik7CiAgICAgICAgICAgICBpZiAoZm5D
YW5kaWRhdGUpIHsKICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEEgZGVj
bGFyZWQgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICBpZiAo
YnVpbHRJbiAmJiAhZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkgJiYKLSAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0pLmxpbmUsIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0g
KDEpXSksIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBvcCA9IGZuQ2FuZGlkYXRlLT5nZXRCdWlsdEluT3AoKTsKQEAgLTI1MjksNyArMjUxMiw3IEBA
IHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFRyZWF0IGl0IGxpa2UgYSBidWlsdC1pbiB1bmFyeSBvcGVyYXRvci4KICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRo
KG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsIDAsIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgob3AsICh5eXZz
cFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5bHNwWygxKSAtICgxKV0pLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYnVpbHQgaW4gdW5hcnkgb3BlcmF0b3IgZnVu
Y3Rpb24uICBUeXBlOiAiIDw8IHN0YXRpY19jYXN0PFRJbnRlcm1UeXBlZCo+KCh5eXZzcFsoMSkg
LSAoMSldLmludGVybSkuaW50ZXJtTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCk7CkBAIC0yNTM4
LDEyICsyNTIxLDEyIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlZ
RVJST1I7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIG9wLCAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJh
dG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCBvcCwgKHl5bHNw
WygxKSAtICgxKV0pKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSByZWFsIGZ1bmN0aW9uIGNh
bGwKIAotICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIEVPcEZ1bmN0aW9uQ2FsbCwgKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCBFT3BGdW5j
dGlvbkNhbGwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShmbkNhbmRpZGF0ZS0+Z2V0UmV0dXJu
VHlwZSgpKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGhvdyB3ZSBrbm93IHdo
ZXRoZXIgdGhlIGdpdmVuIGZ1bmN0aW9uIGlzIGEgYnVpbHRJbiBmdW5jdGlvbiBvciBhIHVzZXIg
ZGVmaW5lZCBmdW5jdGlvbgpAQCAtMjU3MCw3ICsyNTUzLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAg
ICAgICAgICAgLy8gUHV0IG9uIGEgZHVtbXkgbm9kZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAgICAg
ICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25b
MV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0y
NTc4LDM5ICsyNTYxLDM3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNjoKKyAgY2FzZSAxODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzoK
KyAgY2FzZSAxOToKIAogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtKS5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIsICIiKTsKKyAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAibWV0aG9kcyBhcmUgbm90
IHN1cHBvcnRlZCIsICIiKTsKICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAo
eXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDE4OgorICBjYXNlIDIwOgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE5OgorICBjYXNlIDIxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0p
LmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDIwOgorICBjYXNlIDIyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
KS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbik7CkBAIC0yNjE4
LDcgKzI1OTksNyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjE6
CisgIGNhc2UgMjM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsKQEAgLTI2MjYsNyArMjYwNyw3IEBA
IHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjoKKyAgY2FzZSAyNDoK
IAogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgMCwgbmV3IFRUeXBlKCh5eXZz
cFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpIH07CkBAIC0y
NjM2LDI0ICsyNjE3LDI0IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAyMzoKKyAgY2FzZSAyNToKIAogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsg
MCwgbmV3IFRUeXBlKCh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRUeXBlKCkpIH07CiAgICAgICAgICh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24t
PmFkZFBhcmFtZXRlcihwYXJhbSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0g
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbjsKLSAgICAgICAgKHl5dmFsLmludGVy
bSkuaW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZz
cFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0Fn
Z3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVybU5vZGUsICh5eXZzcFsoMykg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDoKKyAgY2FzZSAyNjoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVu
Y3Rpb24pOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNToKKyAgY2FzZSAyNzoKIAog
ICAgIHsKICAgICAgICAgLy8KQEAgLTI2NjcsMzkgKzI2NDgsMzkgQEAgeXlyZWR1Y2U6CiAgICAg
ICAgICAgICBjYXNlIEVidEZsb2F0OgogICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSkubWF0cml4KSB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCgo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2l6ZSkgewotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0TWF0MjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5zaXplKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3AgPSBFT3BDb25zdHJ1Y3RGbG9hdDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1
Y3RWZWMyOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RWZWMzOyAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RWZWM0OyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgMTogb3AgPSBFT3BDb25zdHJ1Y3RGbG9hdDsgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RWZWMyOyAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RWZWMzOyAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RWZWM0OyAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIEVidEludDoKICAgICAgICAgICAgICAgICBzd2l0Y2goKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVj
dEludDsgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJpdmVjMiIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3AgPSBF
T3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICBG
UkFHX1ZFUlRfT05MWSgiaXZlYzMiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGlu
ZSk7IG9wID0gRU9wQ29uc3RydWN0SVZlYzM7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
NDogICAgICAgRlJBR19WRVJUX09OTFkoIml2ZWM0IiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWM0OyBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0SW50OyAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdElWZWMzOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0SVZlYzQ7IGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKICAg
ICAgICAgICAgICAgICBzd2l0Y2goKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUp
IHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEJvb2w7ICBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMiIsICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSAzOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiYnZlYzMiLCAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7IGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWM0
IiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVj
dEJWZWM0OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0
Qm9vbDsgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RC
VmVjMjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdEJW
ZWMzOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0QlZl
YzQ7IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KG9wID09IEVPcE51bGwpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSwgImNhbm5vdCBjb25zdHJ1Y3QgdGhpcyB0eXBl
IiwgZ2V0QmFzaWNTdHJpbmcoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJjYW5u
b3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlKS50eXBlKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBlID0g
RWJ0RmxvYXQ7CiAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RGbG9hdDsKQEAgLTI3
MTIsMjEgKzI2OTMsMTAgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDI2OgotCi0gICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5n
KSkKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShF
YnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3
IFRGdW5jdGlvbigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZywgdHlwZSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0gICAgO30KLSAgICBicmVhazsK
LQotICBjYXNlIDI3OgorICBjYXNlIDI4OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+
cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgKih5eXZzcFso
MSkgLSAoMSldLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJy
b3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksICooeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmlu
ZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRUeXBlIHR5cGUo
RWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5l
dyBURnVuY3Rpb24oKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcsIHR5cGUpOwpAQCAtMjcz
NCw0NiArMjcwNCw0NiBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
Mjg6CisgIGNhc2UgMjk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyOToKKyAgY2FzZSAzMDoKIAogICAgIHsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5s
aW5lLCAiKysiLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMildKSwg
IisrIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFByZUluY3Jl
bWVudCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MSkgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5h
cnlNYXRoKEVPcFByZUluY3JlbWVudCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFsoMSkgLSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAg
ICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICIr
KyIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDEp
IC0gKDIpXSksICIrKyIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikg
LSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDMwOgorICBjYXNlIDMxOgogCiAgICAgewotICAgICAgICBpZiAoY29u
dGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIs
ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYg
KGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCAiLS0iLCAoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0u
bGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9w
UHJlRGVjcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIi0tIiwgKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwg
Ii0tIiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMzE6CisgIGNhc2UgMzI6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0g
KDIpXS5pbnRlcm0pLm9wICE9IEVPcE51bGwpIHsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtKS5vcCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0pLm9wLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNw
WygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICBpZiAoKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBlcnJvck9wID0gIiI7CiAgICAgICAgICAgICAgICAgc3dpdGNoKCh5eXZzcFsoMSkg
LSAoMildLmludGVybSkub3ApIHsKQEAgLTI3ODEsNyArMjc1MSw3IEBAIHl5cmVkdWNlOgogICAg
ICAgICAgICAgICAgIGNhc2UgRU9wTG9naWNhbE5vdDogZXJyb3JPcCA9ICIhIjsgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0p
LmxpbmUsIGVycm9yT3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9w
RXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCBlcnJvck9wLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OwogICAgICAgICAgICAgfQpAQCAtMjc5MCwxODUgKzI3NjAsMTc4IEBAIHl5cmVkdWNlOgogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzMjoKLQotICAgIHsgKHl5dmFsLmludGVybSkubGlu
ZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BO
dWxsOyA7fQotICAgIGJyZWFrOwotCiAgIGNhc2UgMzM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0p
LmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0g
RU9wTmVnYXRpdmU7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE51bGw7IDt9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAzNDoKIAotICAgIHsgKHl5dmFsLmludGVybSkubGluZSA9ICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BMb2dpY2Fs
Tm90OyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BOZWdhdGl2ZTsgO30KICAgICBi
cmVhazsKIAogICBjYXNlIDM1OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7
ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTG9naWNhbE5vdDsgO30KICAgICBicmVhazsKIAogICBj
YXNlIDM2OgogCisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICBicmVhazsKKworICBj
YXNlIDM3OgorCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgiKiIsICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE11bCwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUp
OwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lLCAiKiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVy
cm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIioiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAg
ICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzc6CisgIGNhc2UgMzg6CiAKICAg
ICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIvIiwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRGl2LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BEaXYsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlm
ICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIvIiwgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5n
KCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygy
KSAtICgzKV0pLCAiLyIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzODoKKyAgY2FzZSAzOToKIAogICAgIHsgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzOToKKyAgY2FzZSA0MDoKIAogICAg
IHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wQWRkLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIrIiwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAt
ICgzKV0pLCAiKyIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA0MDoKKyAgY2FzZSA0MToKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJp
bmFyeU1hdGgoRU9wU3ViLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BTdWIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgz
KV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICItIiwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiLSIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA0MToKKyAgY2FzZSA0MjoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSA0MjoKKyAgY2FzZSA0MzoKIAogICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0MzoKKyAgY2FzZSA0NDoKIAogICAgIHsKLSAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBp
ZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiPCIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFso
MikgLSAoMyldKSwgIjwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25z
dGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsK
LSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KICAgICA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDQ6CisgIGNhc2UgNDU6CiAKICAgICB7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAg
aWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIj4iLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3Bb
KDIpIC0gKDMpXSksICI+IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7
Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDQ1OgorICBjYXNlIDQ2OgogCiAgICAgewotICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAg
ICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAi
PD0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigo
eXlsc3BbKDIpIC0gKDMpXSksICI8PSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0g
bmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3Qo
ZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAg
fQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0NjoKKyAgY2FzZSA0NzoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW5FcXVhbCwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSwgIj49IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiPj0iLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyld
KSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDc6CisgIGNhc2Ug
NDg6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
NDg6CisgIGNhc2UgNDk6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVxdWFsLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwg
Y29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BFcXVhbCwgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAo
MyldLmxleCkubGluZSwgIj09IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiPT0iLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25B
cnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIp
IC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAo
MyldKSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDk6CisgIGNh
c2UgNTA6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5vdEVxdWFsLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4
dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BOb3RFcXVhbCwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSwgIiE9IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyld
KSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNTA6Ci0KLSAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOyA7fQotICAgIGJyZWFrOwotCiAgIGNhc2UgNTE6CiAKICAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOyA7fQpAQCAtMjk4NiwxNDMgKzI5NDksMTQ4IEBAIHl5cmVkdWNl
OgogCiAgIGNhc2UgNTQ6CiAKKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIGJyZWFr
OworCisgIGNhc2UgNTU6CisKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxB
bmQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2lj
YWxBbmQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBj
b250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2
c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICImJiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiYmIiwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENv
bnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAg
ICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXls
c3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDU1OgorICBjYXNlIDU2OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KICAgICBicmVh
azsKIAotICBjYXNlIDU2OgorICBjYXNlIDU3OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0
aChFT3BMb2dpY2FsWG9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BMb2dpY2FsWG9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFso
MikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiXl4iLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSks
ICJeXiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25b
MV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSA1NzoKKyAgY2FzZSA1ODoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1ODoKKyAgY2FzZSA1OToKIAogICAgIHsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsT3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlm
ICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJ8fCIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFso
MikgLSAoMyldKSwgInx8IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7
Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDU5OgorICBjYXNlIDYwOgogCiAgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDYwOgorICBjYXNlIDYxOgogCiAg
ICAgewotICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUp
XS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkK
KyAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAo
eXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDEpIC0gKDUp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5eXZzcFso
MSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eWxzcFsoMikgLSAoNSldKSk7CiAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDUp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpICE9ICh5eXZzcFsoNSkgLSAoNSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpCiAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogCiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BF
cnJvcigoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICI6IiwgKHl5dnNwWygzKSAtICg1KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoNSkg
LSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICg1KV0pLCAiOiIs
ICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDUpIC0gKDUpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA2MToKKyAgY2FzZSA2MjoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA2MjoKKyAgY2FzZSA2MzoKIAogICAgIHsKLSAgICAgICAgaWYg
KGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtKS5saW5l
LCAiYXNzaWduIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQor
ICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDMpXSks
ICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRBc3NpZ24oKHl5dnNwWygy
KSAtICgzKV0uaW50ZXJtKS5vcCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDIpIC0gKDMpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWduKCh5eXZzcFsoMikgLSAo
MyldLmludGVybSkub3AsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAt
ICgzKV0pKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5hc3NpZ25FcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5p
bnRlcm0pLmxpbmUsICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4
dC0+YXNzaWduRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiYXNzaWduIiwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDYzOgot
Ci0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0p
LmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0g
RU9wQXNzaWduOyA7fQotICAgIGJyZWFrOwotCiAgIGNhc2UgNjQ6CiAKLSAgICB7IEZSQUdfVkVS
VF9PTkxZKCIqPSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50
ZXJtKS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5v
cCA9IEVPcE11bEFzc2lnbjsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQXNzaWdu
OyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjU6CiAKLSAgICB7IEZSQUdfVkVSVF9PTkxZKCIv
PSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50ZXJtKS5saW5l
ID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcERp
dkFzc2lnbjsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTXVsQXNzaWduOyA7fQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgNjY6CiAKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCku
bGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBZGRBc3NpZ247IDt9CisgICAgeyAoeXl2YWwu
aW50ZXJtKS5vcCA9IEVPcERpdkFzc2lnbjsgO30KICAgICBicmVhazsKIAogICBjYXNlIDY3Ogog
Ci0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0p
LmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0g
RU9wU3ViQXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBZGRBc3NpZ247
IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2ODoKIAotICAgIHsKKyAgICB7ICh5eXZhbC5pbnRl
cm0pLm9wID0gRU9wU3ViQXNzaWduOyA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNjk6CisKKyAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA2OToKKyAgY2FzZSA3MDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbW1hKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pKTsK
ICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSwgIiwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cigoeXlsc3BbKDIpIC0gKDMpXSksICIsIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAg
ICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDcwOgorICBjYXNlIDcxOgogCiAgICAg
ewogICAgICAgICBpZiAoY29udGV4dC0+Y29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKQEAgLTMxMzEsNyArMzA5OSw3IEBAIHl5cmVkdWNl
OgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3MToKKyAgY2FzZSA3MjoKIAogICAgIHsK
ICAgICAgICAgVEZ1bmN0aW9uICZmdW5jdGlvbiA9ICooKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
KS5mdW5jdGlvbik7CkBAIC0zMTQ1LDEzICszMTEzLDEzIEBAIHl5cmVkdWNlOgogICAgICAgICAg
ICAgY29uc3QgVFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJhbShpKTsKICAgICAg
ICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUocGFyYW0ubmFtZSwgKnBhcmFt
LnR5cGUpOworICAgICAgICAgICAgICAgIFRWYXJpYWJsZSB2YXJpYWJsZShwYXJhbS5uYW1lLCAq
cGFyYW0udHlwZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcHJvdG90eXBl
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2YXJpYWJs
ZS0+Z2V0TmFtZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0pLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAg
ICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3Rv
dHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS5nZXRVbmlxdWVJ
ZCgpLCB2YXJpYWJsZS5nZXROYW1lKCksIHZhcmlhYmxlLmdldFR5cGUoKSwgKHl5bHNwWygxKSAt
ICgyKV0pKSwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0pLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAg
ICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3Rv
dHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUs
ICh5eWxzcFsoMSkgLSAoMildKSksICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zMTYyLDcgKzMxMzAsNyBAQCB5eXJlZHVjZToKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzI6CisgIGNhc2UgNzM6CiAKICAgICB7CiAgICAg
ICAgIGlmICgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSkKQEAgLTMx
NzEsMjIgKzMxMzksMjIgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDczOgorICBjYXNlIDc0OgogCiAgICAgewogICAgICAgICBpZiAoKCh5eXZzcFsoMikgLSAoNCld
LmludGVybS5wcmVjaXNpb24pID09IEVicEhpZ2gpICYmIChjb250ZXh0LT5zaGFkZXJUeXBlID09
IFNIX0ZSQUdNRU5UX1NIQURFUikgJiYgIWNvbnRleHQtPmZyYWdtZW50UHJlY2lzaW9uSGlnaCkg
ewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICg0KV0ubGV4KS5saW5l
LCAicHJlY2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVyIiwgImhpZ2hw
Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDQpXSksICJwcmVj
aXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWNv
bnRleHQtPnN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oICh5eXZzcFsoMykgLSAoNCld
LmludGVybS50eXBlKSwgKHl5dnNwWygyKSAtICg0KV0uaW50ZXJtLnByZWNpc2lvbikgKSkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICg0KV0ubGV4KS5saW5lLCAi
aWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBn
ZXRCYXNpY1N0cmluZygoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0udHlwZSkudHlwZSkpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICg0KV0pLCAiaWxsZWdhbCB0eXBl
IGFyZ3VtZW50IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmlu
ZygoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0udHlwZSkudHlwZSkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3NDoKKyAgY2FzZSA3NToK
IAogICAgIHsKICAgICAgICAgLy8KQEAgLTMyMDAsMjQgKzMxNjgsNDEgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgIFRGdW5jdGlvbiogcHJldkRlYyA9IHN0YXRpY19jYXN0PFRGdW5jdGlvbio+KGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmZpbmQoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+
Z2V0TWFuZ2xlZE5hbWUoKSkpOwogICAgICAgICBpZiAocHJldkRlYykgewogICAgICAgICAgICAg
aWYgKHByZXZEZWMtPmdldFJldHVyblR5cGUoKSAhPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
ZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBt
dXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
ZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAib3ZlcmxvYWRlZCBmdW5j
dGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBlIiwgKHl5dnNwWygxKSAtICgyKV0u
aW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCkpOwogICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFyYW1Db3VudCgpOyArK2kp
IHsKICAgICAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVh
bGlmaWVyKCkgIT0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0o
aSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMg
bXVzdCBoYXZlIHRoZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5n
KCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIp
XSksICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1
YWxpZmllcnMiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRQYXJhbShp
KS50eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAogICAgICAgICAvLworICAgICAgICAvLyBDaGVjayBmb3IgcHJldmlvdXNseSBkZWNsYXJl
ZCB2YXJpYWJsZXMgdXNpbmcgdGhlIHNhbWUgbmFtZS4KKyAgICAgICAgLy8KKyAgICAgICAgVFN5
bWJvbCAqcHJldlN5bSA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmQoKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgaWYgKHByZXZTeW0pCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICghcHJldlN5bS0+aXNGdW5jdGlvbigpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMild
KSwgInJlZGVmaW5pdGlvbiIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbiktPmdl
dE5hbWUoKS5jX3N0cigpLCAiZnVuY3Rpb24iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHVubWFuZ2xlZCBuYW1lIHRvIGRldGVjdCBw
b3RlbnRpYWwgZnV0dXJlIHJlZGVmaW5pdGlvbiBhcyBhIHZhcmlhYmxlLgorICAgICAgICAgICAg
Y29udGV4dC0+c3ltYm9sVGFibGUuZ2V0T3V0ZXJMZXZlbCgpLT5pbnNlcnQoKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0TmFtZSgpLCAqKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLmZ1bmN0aW9uKSk7CisgICAgICAgIH0KKworICAgICAgICAvLwogICAgICAgICAvLyBJZiB0
aGlzIGlzIGEgcmVkZWNsYXJhdGlvbiwgaXQgY291bGQgYWxzbyBiZSBhIGRlZmluaXRpb24sCiAg
ICAgICAgIC8vIGluIHdoaWNoIGNhc2UsIHdlIHdhbnQgdG8gdXNlIHRoZSB2YXJpYWJsZSBuYW1l
cyBmcm9tIHRoaXMgb25lLCBhbmQgbm90IHRoZSBvbmUgdGhhdCdzCiAgICAgICAgIC8vIGJlaW5n
IHJlZGVjbGFyZWQuICBTbywgcGFzcyBiYWNrIHVwIHRoaXMgZGVjbGFyYXRpb24sIG5vdCB0aGUg
b25lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgIC8vCiAgICAgICAgICh5eXZhbC5pbnRl
cm0pLmZ1bmN0aW9uID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKIAog
ICAgICAgICAvLyBXZSdyZSBhdCB0aGUgaW5uZXIgc2NvcGUgbGV2ZWwgb2YgdGhlIGZ1bmN0aW9u
J3MgYXJndW1lbnRzIGFuZCBib2R5IHN0YXRlbWVudC4KICAgICAgICAgLy8gQWRkIHRoZSBmdW5j
dGlvbiBwcm90b3R5cGUgdG8gdGhlIHN1cnJvdW5kaW5nIHNjb3BlIGluc3RlYWQuCkBAIC0zMjI1
LDIxICszMjEwLDIxIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3
NToKKyAgY2FzZSA3NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA3NjoKKyAgY2FzZSA3NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5mdW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3NzoKKyAgY2FzZSA3ODoKIAogICAgIHsKICAgICAgICAg
Ly8gQWRkIHRoZSBwYXJhbWV0ZXIKQEAgLTMyNTEsNyArMzIzNiw3IEBAIHl5cmVkdWNlOgogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3ODoKKyAgY2FzZSA3OToKIAogICAgIHsKICAgICAg
ICAgLy8KQEAgLTMyNjIsNyArMzI0Nyw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgLy8KICAg
ICAgICAgICAgIC8vIFRoaXMgcGFyYW1ldGVyID4gZmlyc3QgaXMgdm9pZAogICAgICAgICAgICAg
Ly8KLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSciLCAidm9p
ZCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiY2Fu
bm90IGJlIGFuIGFyZ3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBkZWxldGUgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtKS5wYXJhbS50eXBlOwogICAgICAgICB9IGVsc2UgewpAQCAtMzI3
MywxNSArMzI1OCwxNSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
Nzk6CisgIGNhc2UgODA6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0udHlwZSkucXVhbGlmaWVyICE9IEV2cUdsb2JhbCAmJiAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0udHlwZSkucXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAibm8gcXVhbGlmaWVycyBh
bGxvd2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZvciBmdW5j
dGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LnR5cGUpLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICB9CiAgICAgICAgIC8vIG1ha2Ugc3VyZSBhIHNhbXBsZXIgaXMgbm90IGludm9sdmVkIGFz
IHdlbGwuLi4KLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlw
ZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXls
c3BbKDIpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBh
cyBhIHByb3RvdHlwZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCByZWN1cnNp
b24pCkBAIC0zMjk0LDExMiArMzI3OSwxMTAgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDgwOgorICBjYXNlIDgxOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAiaWxsZWdhbCB1c2Ug
b2YgdHlwZSAndm9pZCciLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJpbGxlZ2Fs
IHVzZSBvZiB0eXBlICd2b2lkJyIsICh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLT5jX3N0
cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAg
ICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCku
bGluZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7KHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIG5l
dyBUVHlwZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkpfTsKLSAgICAgICAgKHl5dmFs
LmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKICAgICAgICAgKHl5
dmFsLmludGVybSkucGFyYW0gPSBwYXJhbTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
ODE6CisgIGNhc2UgODI6CiAKICAgICB7CiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIG1h
a2UgYW4gYXJyYXkgb3V0IG9mIHRoaXMgdHlwZQotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlU
eXBlRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAo
NSldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNo
ZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+
cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSwgKih5eXZzcFso
MikgLSAoNSldLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJy
b3JDaGVjaygoeXlsc3BbKDIpIC0gKDUpXSksICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmlu
ZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgaW50IHNpemU7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAo
NSldLmxleCkubGluZSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IHNpemUpKQorICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3Bb
KDMpIC0gKDUpXSksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBz
aXplKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5dnNwWygx
KSAtICg1KV0uaW50ZXJtLnR5cGUpLnNldEFycmF5KHRydWUsIHNpemUpOwogCiAgICAgICAgIFRU
eXBlKiB0eXBlID0gbmV3IFRUeXBlKCh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSk7CiAg
ICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7ICh5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5n
LCB0eXBlIH07Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDUp
XS5sZXgpLmxpbmU7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnBhcmFtID0gcGFyYW07CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDgyOgorICBjYXNlIDgzOgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKS5saW5l
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0g
KDMpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCisgICAg
ICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5p
bnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDgzOgor
ICBjYXNlIDg0OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMikg
LSAoMildLmludGVybSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJy
b3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLmxpbmUsICh5eXZzcFsoMSkgLSAoMild
LmludGVybS5xdWFsaWZpZXIpLCAqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCh5eWxz
cFsoMikgLSAoMildKSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICooeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eXZzcFso
MikgLSAoMildLmludGVybSkubGluZSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCBFdnFUZW1wb3Jh
cnksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5w
YXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgODQ6CisgIGNhc2UgODU6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0pID0gKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pLmxpbmUsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFsoMikgLSAoMyldLmlu
dGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYg
KGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSksICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFsoMikgLSAoMyldLmludGVybS5x
dWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODU6CisgIGNhc2Ug
ODY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNr
KCh5eXZzcFsoMikgLSAoMildLmludGVybSkubGluZSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LnF1YWxpZmllciksICooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAg
ICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soKHl5bHNwWygyKSAt
ICgyKV0pLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikg
LSAoMildLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgy
KV0uaW50ZXJtKS5saW5lLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5x
dWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksIEV2cVRlbXBvcmFyeSwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5
cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA4NjoKKyAgY2FzZSA4NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5xdWFsaWZpZXIpID0gRXZxSW47CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDg3Ogor
ICBjYXNlIDg4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBF
dnFJbjsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODg6CisgIGNhc2UgODk6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cU91dDsKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgODk6CisgIGNhc2UgOTA6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUluT3V0OwogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA5MDoKKyAgY2FzZSA5MToKIAogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJh
bSA9IHsgMCwgbmV3IFRUeXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKSkgfTsKQEAg
LTM0MDcsMTA0ICszMzkwLDEwNCBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgOTE6CisgIGNhc2UgOTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
OTI6CisgIGNhc2UgOTM6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0pLnR5cGUudHlwZSA9PSBFYnRJbnZhcmlhbnQgJiYgISh5eXZzcFsoMykgLSAoMyldLmxl
eCkuc3ltYm9sKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDMpIC0gKDMpXS5sZXgpLmxpbmUsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMg
aW52YXJpYW50IiwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAidW5kZWNsYXJlZCBp
ZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICh5eXZzcFsoMykgLSAoMyldLmxleCku
c3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCBUVHlwZSgo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLnR5cGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxp
bmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVy
bU5vZGUsIHN5bWJvbCwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgVElu
dGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAq
KHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybSkudHlwZSksICh5eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0p
LmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5
eXZzcFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgc3ltYm9sLCAoeXlsc3BbKDMpIC0g
KDMpXSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVy
cm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAoeXl2YWwuaW50ZXJtKS50eXBl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNw
WygzKSAtICgzKV0pLCAoeXl2YWwuaW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVj
aygoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0
cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQorICAgICAgICBpZiAoY29udGV4dC0+
bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSksICooeXl2c3BbKDMpIC0g
KDMpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAw
OwotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgz
KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRl
cm0pLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNo
ZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAo
eXl2YWwuaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIGlmIChzeW1ib2wgJiYgdmFyaWFibGUpCiAgICAgICAgICAgICBzeW1i
b2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgOTM6CisgIGNhc2UgOTQ6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5
dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVj
dFF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUp
XS5pbnRlcm0pLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAg
ICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSld
LmxleCkubGluZSwgKih5eXZzcFsoMykgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0g
KDUpXS5pbnRlcm0pLnR5cGUsIHRydWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENv
bnN0RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICooeXl2c3BbKDMpIC0gKDUpXS5sZXgp
LnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB0cnVlKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZz
cFsoMSkgLSAoNSldLmludGVybSk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVy
cm9yQ2hlY2soKHl5dnNwWyg0KSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0pLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3Bb
KDQpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNSld
KSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxp
ZmllckVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRl
cm0pLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZS5zZXRBcnJheSh0
cnVlKTsKICAgICAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGU7Ci0gICAgICAgICAgICBpZiAo
Y29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSwgKih5
eXZzcFsoMykgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5
cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2so
KHl5bHNwWyg0KSAtICg1KV0pLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA5NDoKKyAgY2FzZSA5NToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1
YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEp
IC0gKDYpXS5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlm
aWVyRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVy
bSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYg
KGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg2KV0ubGV4KS5s
aW5lLCAqKHl5dnNwWygzKSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmlu
dGVybSkudHlwZSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJv
ckNoZWNrKCh5eWxzcFsoMykgLSAoNildKSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5n
LCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAt
ICg2KV0uaW50ZXJtKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVj
aygoeXl2c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNildLmludGVybSku
dHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAo
NildLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAoeXl2
c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJy
b3JDaGVjaygoeXlsc3BbKDQpIC0gKDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlw
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJy
b3JDaGVjaygoeXl2c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoNSkgLSAoNildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKHl5dnNwWyg1KSAtICg2KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZS5z
ZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAw
OwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXl2c3BbKDQpIC0g
KDYpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgKHl5dnNwWygx
KSAtICg2KV0uaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKih5eXZzcFsoMykgLSAoNild
LmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0
eXBlID0gVFR5cGUoKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlKTsKICAgICAgICAgICAg
IHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNw
WygxKSAtICg2KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
U3ltYm9sKHZhcmlhYmxlID8gdmFyaWFibGUtPmdldFVuaXF1ZUlkKCkgOiAwLCAqKHl5dnNwWygz
KSAtICg2KV0ubGV4KS5zdHJpbmcsIHR5cGUsICh5eXZzcFsoMykgLSAoNildLmxleCkubGluZSks
ICh5eXZzcFsoMykgLSAoNildLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
KS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgo
eXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICooeXl2
c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5bHNwWygzKSAtICg2KV0pKSwgKHl5
bHNwWygzKSAtICg2KV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA5NToKKyAgY2FzZSA5NjoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1
YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEp
IC0gKDUpXS5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlm
aWVyRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVy
bSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5
dmFsLmludGVybSkgPSAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pOwogCiAgICAgICAgIFRJbnRl
cm1Ob2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFs
aXplcigoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDUpXS5sZXgp
LnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCAoeXl2c3BbKDUpIC0gKDUp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpIHsKKyAgICAgICAgaWYgKCFj
b250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWygzKSAtICg1KV0pLCAqKHl5dnNwWygz
KSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgKHl5
dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CiAg
ICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gYnVpbGQgdGhlIGludGVybWVkaWF0ZSByZXBy
ZXNlbnRhdGlvbgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIGlmIChpbnRlcm1Ob2RlKQot
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLmludGVybU5vZGUs
IGludGVybU5vZGUsICh5eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdn
cmVnYXRlKCh5eXZzcFsoMSkgLSAoNSldLmludGVybSkuaW50ZXJtTm9kZSwgaW50ZXJtTm9kZSwg
KHl5bHNwWyg0KSAtICg1KV0pKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0p
LmludGVybUFnZ3JlZ2F0ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTM1MTQsNzcgKzM0OTcsNzcg
QEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDk2OgorICBjYXNlIDk3
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkp
LCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSksICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlKS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5
cGUpKSwgKHl5bHNwWygxKSAtICgxKV0pKSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgOTc6CisgIGNhc2UgOTg6CiAKICAgICB7Ci0gICAgICAgIFRJ
bnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
Kih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0udHlwZSkpLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2
YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFn
Z3JlZ2F0ZShzeW1ib2wsICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7CisgICAgICAgIFRJ
bnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
Kih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0udHlwZSkpLCAoeXlsc3BbKDIpIC0gKDIpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJt
KS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShz
eW1ib2wsICh5eWxzcFsoMikgLSAoMildKSk7CiAgICAgICAgIAotICAgICAgICBpZiAoY29udGV4
dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUs
ICh5eXZhbC5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlm
aWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICh5eXZhbC5pbnRlcm0pLnR5cGUpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5u
b25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgKih5eXZz
cFsoMikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCBmYWxzZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAo
MildKSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBl
LCBmYWxzZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0udHlwZSk7CiAKICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUs
ICooeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgdmFy
aWFibGUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soKHl5bHNwWygy
KSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0p
LnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFy
aWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5ODoK
KyAgY2FzZSA5OToKIAogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAt
ICg0KV0ubGV4KS5saW5lLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRl
ZCIsICh5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0KV0pLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlv
bnMgbm90IHN1cHBvcnRlZCIsICh5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLT5jX3N0cigp
KTsKICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wq
IHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikg
LSAoNCldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkp
LCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1i
b2wsICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wq
IHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikg
LSAoNCldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkp
LCAoeXlsc3BbKDIpIC0gKDQpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dy
ZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eWxz
cFsoMikgLSAoNCldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0udHlwZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDk5Ogor
ICBjYXNlIDEwMDoKIAogICAgIHsKICAgICAgICAgVFR5cGUgdHlwZSA9IFRUeXBlKCh5eXZzcFso
MSkgLSAoNSldLmludGVybS50eXBlKSk7CiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAo
Y29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUs
ICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAo
eXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUp
OwotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5dnNw
WygyKSAtICg1KV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdn
cmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXl2
c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDUpXS5s
ZXgpLnN0cmluZywgdHlwZSwgKHl5bHNwWygyKSAtICg1KV0pKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdh
dGUoc3ltYm9sLCAoeXlsc3BbKDIpIC0gKDUpXSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNv
bnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5s
aW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4
dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUpXSksICh5eXZzcFso
MSkgLSAoNSldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygy
KSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoMSkgLSAoNSldLmludGVybS50eXBlKSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5u
b25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKih5eXZzcFsoMikgLSAo
NSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSksIHRydWUpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0p
LnR5cGUgPSAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSk7CiAKLSAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAo
eXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVy
RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSld
LmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNr
KCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSB8fCBj
b250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2
c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5s
aW5lLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCisg
ICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0g
KDUpXSksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgICAgICh5eXZz
cFsoMSkgLSAoNSldLmludGVybS50eXBlKS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAg
ICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFy
cmF5RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0g
KDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLCB2YXJpYWJs
ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eWxzcFsoMykg
LSAoNSldKSwgKih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUp
XS5pbnRlcm0udHlwZSksIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAg
ICAgIHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwpAQCAtMzU5MiwyMSAr
MzU3NSwyMSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAwOgor
ICBjYXNlIDEwMToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmll
ckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJy
b3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBl
KSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmlu
dGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKTsKIAogICAgICAgICBU
SW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5p
dGlhbGl6ZXIoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg0KV0u
bGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CisgICAgICAgIGlm
ICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eWxzcFsoMikgLSAoNCldKSwgKih5eXZz
cFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSks
ICh5eXZzcFsoNCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkg
ewogICAgICAgICAvLwogICAgICAgICAvLyBCdWlsZCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRp
b24KICAgICAgICAgLy8KICAgICAgICAgICAgIGlmKGludGVybU5vZGUpCi0gICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgKHl5dnNwWygzKSAtICg0KV0ubGV4KS5saW5lKTsK
KyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCAoeXlsc3BbKDMpIC0gKDQp
XSkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmlu
dGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNjE2LDU4ICszNTk5LDU4
IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDE6CisgIGNhc2Ug
MTAyOgogCiAgICAgewotICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9u
IiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmds
b2JhbEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQorICAgICAgICBW
RVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgKHl5bHNwWygxKSAtICgyKV0pKTsK
KyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0p
LCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWlu
ZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50
ZXJtKS50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwg
KHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkudHlw
ZS5zZXRCYXNpYyhFYnRJbnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICh5eWxzcFso
MikgLSAoMildKSk7CiAgICAgICAgIGlmICghKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zeW1ib2wp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMild
LmxleCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQi
LCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIg
ZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmctPmNf
c3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAwOwogICAgICAgICB9
CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3lt
Ym9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICgy
KV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXl2c3Bb
KDIpIC0gKDIpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9s
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXlsc3BbKDIpIC0gKDIp
XSkpOworICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3BbKDIpIC0gKDIpXSkp
OwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwMjoKKyAgY2FzZSAx
MDM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSk7CiAKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS50eXBlKS5hcnJheSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFy
cmF5Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJu
b3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSku
c2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDEwMzoKKyAgY2FzZSAxMDQ6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDIpIC0gKDIp
XS5pbnRlcm0udHlwZSkuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZz
cFsoMikgLSAoMildLmludGVybS50eXBlKS5saW5lLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1j
bGFzcyBhcnJheSIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgy
KV0pLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJt
LnR5cGUpLnNldEFycmF5KGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyID09IEV2cUF0dHJpYnV0ZSAmJgogICAg
ICAgICAgICAgKCh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS50eXBlID09IEVidEJvb2wg
fHwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0SW50KSkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLmxp
bmUsICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygx
KSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVh
bGlmaWVyU3RyaW5nKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIpKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
KCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ0lu
IHx8ICh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIgPT0gRXZxVmFyeWlu
Z091dCkgJiYKICAgICAgICAgICAgICgoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlw
ZSA9PSBFYnRCb29sIHx8ICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS50eXBlID09IEVi
dEludCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMildLmlu
dGVybS50eXBlKS5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3Ry
aW5nKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgImNhbm5vdCBiZSBib29sIG9y
IGludCIsIGdldFF1YWxpZmllclN0cmluZygoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSku
cXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0K
ICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS50
eXBlKTsKQEAgLTM2NzUsNzEgKzM2NTgsNzEgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDEwNDoKKyAgY2FzZSAxMDU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQ29uc3QsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9p
ZCwgRXZxQ29uc3QsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDEwNToKKyAgY2FzZSAxMDY6CiAKICAgICB7Ci0gICAgICAgIFZFUlRFWF9PTkxZKCJh
dHRyaWJ1dGUiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICBpZiAoY29u
dGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQorICAgICAgICBW
RVJURVhfT05MWSgiYXR0cmlidXRlIiwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgaWYg
KGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJhdHRyaWJ1dGUiKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRWb2lkLCBFdnFBdHRyaWJ1dGUsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQXR0cmlidXRlLCAo
eXlsc3BbKDEpIC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDY6Cisg
IGNhc2UgMTA3OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVj
aygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSwgInZhcnlpbmciKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9y
Q2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCksICJ2YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQs
ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsICh5eWxzcFsoMSkgLSAoMSld
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFz
aWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwor
ICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5
aW5nSW4sICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDEwNzoKKyAgY2FzZSAxMDg6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxF
cnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9
PSBTSF9WRVJURVhfU0hBREVSKQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXl2c3BbKDEpIC0gKDIpXS5s
ZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRW
b2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQs
IEV2cUludmFyaWFudFZhcnlpbmdJbiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJp
YW50VmFyeWluZ0luLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxMDg6CisgIGNhc2UgMTA5OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+
Z2xvYmFsRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgInVuaWZvcm0iKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCksICJ1bmlmb3JtIikpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwg
RXZxVW5pZm9ybSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlmb3JtLCAoeXlsc3BbKDEpIC0g
KDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDk6CisgIGNhc2UgMTEwOgog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLnR5cGUpOwogCiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lv
biA9PSBFYnBVbmRlZmluZWQpIHsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucHJl
Y2lzaW9uID0gY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+
cHJlY2lzaW9uRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSwg
KHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24sICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKS50eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPnByZWNpc2lvbkVycm9yQ2hl
Y2soKHl5bHNwWygxKSAtICgxKV0pLCAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiwgKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDExMDoKKyAgY2FzZSAxMTE6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSk7CkBAIC0zNzQ3
LDYzICszNzMwLDU1IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
MTE6CisgIGNhc2UgMTEyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lv
bikgPSBFYnBIaWdoOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTI6CisgIGNhc2Ug
MTEzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBNZWRp
dW07CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDExMzoKKyAgY2FzZSAxMTQ6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVicExvdzsKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTE0OgorICBjYXNlIDExNToKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTE1OgorICBjYXNlIDExNjoKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBl
KTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDIp
IC0gKDQpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCisgICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNCldKSwg
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxl
eCkubGluZSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUp
KQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygy
KSAtICg0KV0pLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6
ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgfQogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTY6Ci0KLSAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRW
b2lkLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9Ci0gICAgYnJl
YWs7Ci0KICAgY2FzZSAxMTc6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVh
bCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKQEAgLTM4MTEsNyArMzc4Niw3IEBAIHl5cmVkdWNlOgogCiAgICAgewog
ICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAo
eXlsc3BbKDEpIC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4MTksNyArMzc5
NCw3IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAg
ICBicmVhazsKIApAQCAtMzgyNyw4ICszODAyLDcgQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgx
KV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0zODM2LDggKzM4MTAsOCBAQCB5eXJlZHVj
ZToKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0g
KDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0
ZSgzKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVh
bCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRB
Z2dyZWdhdGUoMik7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzg0NSw4ICszODE5LDggQEAg
eXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRB
Z2dyZWdhdGUoNCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Rmxv
YXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QWdncmVnYXRlKDMpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4NTQsOCArMzgy
OCw4IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRBZ2dyZWdhdGUoMik7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4NjMs
OCArMzgzNyw4IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwg
cXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CiAgICAgO30KICAgICBicmVhazsKIApAQCAt
Mzg3Miw4ICszODQ2LDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRC
b29sLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICA7fQogICAgIGJyZWFrOwog
CkBAIC0zODgxLDggKzM4NTUsOCBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidEludCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgO30KICAgICBicmVh
azsKIApAQCAtMzg5MCw4ICszODY0LDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRR
dWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2
cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRJbnQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CiAgICAgO30KICAgICBi
cmVhazsKIApAQCAtMzg5OSw5NSArMzg3Myw5NiBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAg
ICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
ID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTI5OgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05M
WSgibWF0MiIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZp
ZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2Jh
bCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMiwgdHJ1ZSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICA7fQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTMwOgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgi
bWF0MyIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRG
bG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIsIHRydWUpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzE6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9P
TkxZKCJtYXQ0IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0LCB0cnVlKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7CiAg
ICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDEzMjoKIAogICAgIHsKLSAgICAgICAgRlJBR19W
RVJUX09OTFkoInNhbXBsZXIyRCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRTYW1wbGVyMkQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGlu
ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWws
ICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdn
cmVnYXRlKDQsIHRydWUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzM6CiAKICAg
ICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyQ3ViZSIsICh5eXZzcFsoMSkgLSAo
MSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRTYW1wbGVyMkQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30K
ICAgICBicmVhazsKIAogICBjYXNlIDEzNDoKIAogICAgIHsKKyAgICAgICAgVFF1YWxpZmllciBx
dWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDog
RXZxVGVtcG9yYXJ5OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNh
bXBsZXJDdWJlLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIDt9CisgICAgYnJlYWs7
CisKKyAgY2FzZSAxMzU6CisKKyAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNF
eHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAidW5zdXBwb3J0ZWQgdHlw
ZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMSkgLSAoMSldKSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlckV4dGVybmFsT0VT
Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAg
RlJBR19WRVJUX09OTFkoInNhbXBsZXJFeHRlcm5hbE9FUyIsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QmFzaWMoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkp
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzU6CisgIGNhc2UgMTM2OgogCiAgICAg
ewogICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfdGV4dHVy
ZV9yZWN0YW5nbGUiKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7Cisg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ1bnN1cHBvcnRl
ZCB0eXBlIiwgInNhbXBsZXIyRFJlY3QiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgfQotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEUmVjdCIsICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyMkRS
ZWN0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzNjoKKyAgY2FzZSAxMzc6
CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzdHJ1Y3QiLCAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0udHlwZSkubGluZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkucXVhbGlmaWVyID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZx
R2xvYmFsIDogRXZxVGVtcG9yYXJ5OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzc6
CisgIGNhc2UgMTM4OgogCiAgICAgewogICAgICAgICAvLwpAQCAtMzk5Niw4NSArMzk3MSw4NiBA
QCB5eXJlZHVjZToKICAgICAgICAgLy8KICAgICAgICAgVFR5cGUmIHN0cnVjdHVyZSA9IHN0YXRp
Y19jYXN0PFRWYXJpYWJsZSo+KCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3ltYm9sKS0+Z2V0VHlw
ZSgpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5s
ZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVj
dCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS51c2VyRGVmID0gJnN0cnVjdHVyZTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM4
OgorICBjYXNlIDEzOToKIAotICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRp
b24oKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgzKV0ubGV4KS5z
dHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IDt9CisgICAgeyBpZiAoY29udGV4dC0+ZW50ZXJT
dHJ1Y3REZWNsYXJhdGlvbigoeXlsc3BbKDIpIC0gKDMpXSksICooeXl2c3BbKDIpIC0gKDMpXS5s
ZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KICAgICBicmVhazsKIAotICBjYXNl
IDEzOToKKyAgY2FzZSAxNDA6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZl
ZEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg2KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg2
KV0ubGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNr
KCh5eWxzcFsoMikgLSAoNildKSwgKih5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUVHlwZSogc3RydWN0dXJl
ID0gbmV3IFRUeXBlKCh5eXZzcFsoNSkgLSAoNildLmludGVybS50eXBlTGlzdCksICooeXl2c3Bb
KDIpIC0gKDYpXS5sZXgpLnN0cmluZyk7CisgICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcg
VFR5cGUobmV3IFRTdHJ1Y3R1cmUoKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoNSkgLSAoNildLmludGVybS5maWVsZExpc3QpKSk7CiAgICAgICAgIFRWYXJpYWJsZSogdXNl
clR5cGVEZWYgPSBuZXcgVFZhcmlhYmxlKCh5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nLCAq
c3RydWN0dXJlLCB0cnVlKTsKICAgICAgICAgaWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5z
ZXJ0KCp1c2VyVHlwZURlZikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MikgLSAoNildLmxleCkubGluZSwgInJlZGVmaW5pdGlvbiIsICh5eXZzcFsoMikgLSAoNildLmxl
eCkuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXlsc3BbKDIpIC0gKDYpXSksICJyZWRlZmluaXRpb24iLCAoeXl2c3BbKDIpIC0gKDYpXS5s
ZXgpLnN0cmluZy0+Y19zdHIoKSwgInN0cnVjdCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoNildLmxleCkubGluZSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3Jh
cnksICh5eWxzcFsoMSkgLSAoNildKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkudXNl
ckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9u
KCk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0MDoKKyAgY2FzZSAxNDE6CiAKLSAg
ICB7IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eXZzcFsoMikgLSAoMild
LmxleCkubGluZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVj
b3ZlcigpOyA7fQorICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5
bHNwWygyKSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0
LT5yZWNvdmVyKCk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDE6CisgIGNhc2UgMTQyOgog
CiAgICAgewotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCh5eXZzcFsoNCkg
LSAoNSldLmludGVybS50eXBlTGlzdCksIFRTdHJpbmcoIiIpKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAt
ICg1KV0ubGV4KS5saW5lKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShu
ZXcgVFN0cnVjdHVyZShOZXdQb29sVFN0cmluZygiIiksICh5eXZzcFsoNCkgLSAoNSldLmludGVy
bS5maWVsZExpc3QpKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eWxzcFsoMSkgLSAoNSldKSk7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkudXNlckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhp
dFN0cnVjdERlY2xhcmF0aW9uKCk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0MjoK
KyAgY2FzZSAxNDM6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGVMaXN0KTsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5maWVsZExpc3QpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZpZWxkTGlzdCk7CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDE0MzoKKyAgY2FzZSAxNDQ6CiAKICAgICB7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5
cGVMaXN0KTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoeXl2c3BbKDIp
IC0gKDIpXS5pbnRlcm0udHlwZUxpc3QpLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+c2l6ZSgp
OyArK2opIHsKLSAgICAgICAgICAgICAgICBpZiAoKCooeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSlb
al0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlw
ZUxpc3QpKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSkgewotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigoKih5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCkpW2ldLmxp
bmUsICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsICgqKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlbaV0udHlwZS0+Z2V0RmllbGROYW1lKCku
Y19zdHIoKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSA9ICh5eXZzcFsoMSkg
LSAoMildLmludGVybS5maWVsZExpc3QpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
ICh5eXZzcFsoMikgLSAoMildLmludGVybS5maWVsZExpc3QpLT5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgVEZpZWxkKiBmaWVsZCA9ICgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmZpZWxk
TGlzdCkpW2ldOworICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCAoeXl2YWwuaW50
ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgaWYgKCgqKHl5
dmFsLmludGVybS5maWVsZExpc3QpKVtqXS0+bmFtZSgpID09IGZpZWxkLT5uYW1lKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiZHVw
bGljYXRlIGZpZWxkIG5hbWUgaW4gc3RydWN0dXJlOiIsICJzdHJ1Y3QiLCBmaWVsZC0+bmFtZSgp
LmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlTGlzdCktPnB1c2hfYmFjaygoKih5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCkp
W2ldKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+cHVzaF9iYWNrKGZp
ZWxkKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDQ6CisgIGNh
c2UgMTQ1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9ICh5eXZz
cFsoMikgLSAoMyldLmludGVybS50eXBlTGlzdCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmll
bGRMaXN0KSA9ICh5eXZzcFsoMikgLSAoMyldLmludGVybS5maWVsZExpc3QpOwogCi0gICAgICAg
IGlmIChjb250ZXh0LT52b2lkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlw
ZSkubGluZSwgKCooeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0udHlwZUxpc3QpKVswXS50eXBlLT5n
ZXRGaWVsZE5hbWUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkgeworICAgICAg
ICBpZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgzKV0pLCAoKih5eXZz
cFsoMikgLSAoMyldLmludGVybS5maWVsZExpc3QpKVswXS0+bmFtZSgpLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkpKSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoeXl2YWwuaW50
ZXJtLnR5cGVMaXN0KS0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytpKSB7CiAgICAg
ICAgICAgICAvLwogICAgICAgICAgICAgLy8gQ2FyZWZ1bCBub3QgdG8gcmVwbGFjZSBhbHJlYWR5
IGtub3duIGFzcGVjdHMgb2YgdHlwZSwgbGlrZSBhcnJheS1uZXNzCiAgICAgICAgICAgICAvLwot
ICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0udHlwZUxpc3QpKVtpXS50
eXBlOworICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0uZmllbGRMaXN0
KSlbaV0tPnR5cGUoKTsKICAgICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlwZSgoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0udHlwZSkudHlwZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXROb21pbmFs
U2l6ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuc2l6ZSk7CiAgICAgICAgICAgICB0
eXBlLT5zZXRNYXRyaXgoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLm1hdHJpeCk7CkBA
IC00MDgyLDg1ICs0MDU4LDc1IEBAIHl5cmVkdWNlOgogCiAgICAgICAgICAgICAvLyBkb24ndCBh
bGxvdyBhcnJheXMgb2YgYXJyYXlzCiAgICAgICAgICAgICBpZiAodHlwZS0+aXNBcnJheSgpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLmxpbmUsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50
eXBlKSkpCisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2so
KHl5bHNwWygxKSAtICgzKV0pLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkpKQogICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLmFycmF5KQogICAgICAg
ICAgICAgICAgIHR5cGUtPnNldEFycmF5U2l6ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlw
ZSkuYXJyYXlTaXplKTsKLSAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
dHlwZSkudXNlckRlZikgeworICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKS51c2VyRGVmKQogICAgICAgICAgICAgICAgIHR5cGUtPnNldFN0cnVjdCgoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0udHlwZSkudXNlckRlZi0+Z2V0U3RydWN0KCkpOwotICAgICAgICAg
ICAgICAgIHR5cGUtPnNldFR5cGVOYW1lKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS51
c2VyRGVmLT5nZXRUeXBlTmFtZSgpKTsKLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYg
KGNvbnRleHQtPnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKS5saW5lLCAqdHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RO
ZXN0aW5nRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDMpXSksICooKih5eXZhbC5pbnRlcm0uZmll
bGRMaXN0KSlbaV0pKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDU6Cisg
IGNhc2UgMTQ2OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9IE5l
d1Bvb2xUVHlwZUxpc3QoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCktPnB1c2hf
YmFjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZUxpbmUpKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS5maWVsZExpc3QpID0gTmV3UG9vbFRGaWVsZExpc3QoKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS5maWVsZExpc3QpLT5wdXNoX2JhY2soKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZp
ZWxkKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0NjoKKyAgY2FzZSAxNDc6CiAK
ICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5wdXNoX2JhY2soKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLnR5cGVMaW5lKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmll
bGRMaXN0KS0+cHVzaF9iYWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybS5maWVsZCkpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDc6CisgIGNhc2UgMTQ4OgogCiAgICAgewotICAg
ICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksICooeXl2c3BbKDEp
IC0gKDEpXS5sZXgpLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSkudHlwZSA9IG5ldyBUVHlwZShFYnRWb2lk
LCBFYnBVbmRlZmluZWQpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS5saW5lID0g
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVM
aW5lKS50eXBlLT5zZXRGaWVsZE5hbWUoKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKTsK
KyAgICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5eXZzcFso
MSkgLSAoMSldLmxleCkuc3RyaW5nKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ4
OgorICBjYXNlIDE0OToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJy
b3JDaGVjaygoeXl2c3BbKDEpIC0gKDQpXS5sZXgpLmxpbmUsICooeXl2c3BbKDEpIC0gKDQpXS5s
ZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5
bHNwWygxKSAtICg0KV0pLCAqKHl5dnNwWygxKSAtICg0KV0ubGV4KS5zdHJpbmcpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxp
bmUpLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlTGluZSkubGluZSA9ICh5eXZzcFsoMSkgLSAoNCldLmxleCkubGluZTsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSkudHlwZS0+c2V0RmllbGROYW1lKCooeXl2
c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZyk7Ci0KLSAgICAgICAgaW50IHNpemU7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCku
bGluZSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQor
ICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwor
ICAgICAgICBpbnQgc2l6ZSA9IDA7CisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJv
ckNoZWNrKCh5eWxzcFsoMykgLSAoNCldKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7Ci0g
ICAgO30KLSAgICBicmVhazsKKyAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKHNpemUpOwogCi0g
IGNhc2UgMTQ5OgotCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICAgICAgKHl5dmFs
LmludGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5eXZzcFsoMSkgLSAoNCldLmxleCku
c3RyaW5nKTsKKyAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTUwOgogCi0gICAgeyAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5v
ZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxNTE6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxNTI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybUFnZ3Jl
Z2F0ZSk7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTM6CkBAIC00MTkwLDExMiArNDE1Niwx
MTcgQEAgeXlyZWR1Y2U6CiAKICAgY2FzZSAxNTg6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtQWdncmVnYXRlKSA9IDA7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTU5OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IDt9CisgICAg
eyAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAwOyA7fQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMTYwOgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgO30KKyAgICB7
IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgO30KICAgICBicmVhazsKIAogICBjYXNlIDE2
MToKIAorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7IDt9CisgICAgYnJlYWs7CisK
KyAgY2FzZSAxNjI6CisKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDUpXS5pbnRl
cm0uaW50ZXJtQWdncmVnYXRlKSAhPSAwKSB7CiAgICAgICAgICAgICAoeXl2c3BbKDMpIC0gKDUp
XS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAg
ICAgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldEVuZExpbmUo
KHl5dnNwWyg1KSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZzcFsoMykgLSAo
NSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykpOwogICAgICAgICB9
CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9ICh5eXZzcFsoMykgLSAo
NSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNjI6CisgIGNhc2UgMTYzOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTYzOgorICBjYXNlIDE2NDoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KICAgICBicmVhazsK
IAotICBjYXNlIDE2NDoKKyAgY2FzZSAxNjU6CiAKICAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxl
LnB1c2goKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE2NToKKyAgY2FzZSAxNjY6CiAKICAg
ICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTY2OgorICBjYXNlIDE2NzoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUu
cHVzaCgpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY3OgorICBjYXNlIDE2ODoKIAogICAg
IHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxNjg6CisgIGNhc2UgMTY5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gMDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY5OgorICBj
YXNlIDE3MDoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMikgLSAoMyldLmludGVybS5p
bnRlcm1BZ2dyZWdhdGUpKSB7CiAgICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAgICAgKHl5dnNw
WygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldEVuZExpbmUoKHl5dnNwWygz
KSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMyldLmludGVy
bS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykpOwogICAgICAgICB9CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtQWdncmVnYXRlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTcwOgorICBjYXNl
IDE3MToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybU5vZGUpLCAwKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdh
dGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsb2MpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTcxOgorICBjYXNlIDE3MjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1BZ2dyZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSksICh5eXZzcFsoMikgLSAoMild
LmludGVybS5pbnRlcm1Ob2RlKSwgMCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdn
cmVnYXRlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkg
LSAoMildLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtTm9kZSksICh5eWxvYykpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzI6
CisgIGNhc2UgMTczOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDE3MzoKKyAgY2FzZSAxNzQ6CiAKICAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSBzdGF0aWNfY2FzdDxUSW50ZXJtTm9kZSo+KCh5eXZzcFsoMSkg
LSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsgO30KICAgICBicmVhazsKIAotICBjYXNl
IDE3NDoKKyAgY2FzZSAxNzU6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJy
b3JDaGVjaygoeXl2c3BbKDEpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMykgLSAoNSldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNo
ZWNrKCh5eWxzcFsoMSkgLSAoNSldKSwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlv
bigoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAt
ICg1KV0uaW50ZXJtLm5vZGVQYWlyKSwgKHl5dnNwWygxKSAtICg1KV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRTZWxlY3Rpb24oKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eXZzcFsoNSkgLSAoNSldLmludGVybS5ub2RlUGFpciksICh5eWxzcFsoMSkgLSAoNSldKSk7CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE3NToKKyAgY2FzZSAxNzY6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybU5vZGUpOwpAQCAtNDMwMyw3ICs0Mjc0LDcgQEAgeXlyZWR1Y2U6CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDE3NjoKKyAgY2FzZSAxNzc6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybU5vZGUpOwpAQCAtNDMxMSw3ICs0MjgyLDcgQEAgeXlyZWR1Y2U6CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDE3NzoKKyAgY2FzZSAxNzg6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtNDMyMCwxNiArNDI5MSwxNiBAQCB5eXJlZHVjZToKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc4OgorICBjYXNlIDE3OToKIAogICAgIHsKICAg
ICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1
YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg0KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBp
ZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+Ym9v
bEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg0KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
dHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmICgh
Y29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwg
Kih5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
dHlwZSksICh5eXZzcFsoNCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1O
b2RlKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWygy
KSAtICg0KV0pLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksIGludGVybU5vZGUpKQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwpAQCAtNDMzOCw3OSArNDMw
OSw3OSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc5OgorICBj
YXNlIDE4MDoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQt
Pmxvb3BOZXN0aW5nTGV2ZWw7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODA6CisgIGNhc2Ug
MTgxOgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRM
b29wKEVMb29wV2hpbGUsIDAsICh5eXZzcFsoNCkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAwLCAoeXl2c3BbKDYpIC0gKDYpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMSkg
LSAoNildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAoeXl2c3BbKDQpIC0g
KDYpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgMCwgKHl5dnNwWyg2KSAtICg2KV0uaW50ZXJt
LmludGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDYpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxv
b3BOZXN0aW5nTGV2ZWw7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4MToKKyAgY2Fz
ZSAxODI6CiAKICAgICB7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE4MjoKKyAgY2FzZSAxODM6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDgpIC0gKDgpXS5sZXgpLmxpbmUsICh5eXZzcFso
NikgLSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PmJvb2xFcnJvckNoZWNrKCh5eWxzcFsoOCkgLSAoOCldKSwgKHl5dnNwWyg2KSAtICg4KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5
eXZzcFsoNCkgLSAoOCldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICh5
eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDMpIC0g
KDgpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoNCkgLSAoOCldKSk7CiAgICAgICAgIC0t
Y29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTgzOgorICBjYXNlIDE4NDoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyAr
K2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODQ6
CisgIGNhc2UgMTg1OgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3Ao
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRMb29wKEVMb29wRm9yLCAoeXl2c3BbKDQpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9k
ZSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAtICg3KV0uaW50
ZXJtLm5vZGVQYWlyKS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5
dnNwWyg1KSAtICg3KV0uaW50ZXJtLm5vZGVQYWlyKS5ub2RlMiksICh5eXZzcFsoNykgLSAoNyld
LmludGVybS5pbnRlcm1Ob2RlKSwgKHl5dnNwWygxKSAtICg3KV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRM
b29wKEVMb29wRm9yLCAoeXl2c3BbKDQpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9kZSksIHJlaW50
ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAtICg3KV0uaW50ZXJtLm5vZGVQ
YWlyKS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAt
ICg3KV0uaW50ZXJtLm5vZGVQYWlyKS5ub2RlMiksICh5eXZzcFsoNykgLSAoNyldLmludGVybS5p
bnRlcm1Ob2RlKSwgKHl5bHNwWygxKSAtICg3KV0pKTsKICAgICAgICAgLS1jb250ZXh0LT5sb29w
TmVzdGluZ0xldmVsOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODU6CisgIGNhc2Ug
MTg2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxODY6CisgIGNhc2UgMTg3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODc6CisgIGNhc2UgMTg4OgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg4Ogor
ICBjYXNlIDE4OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gMDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg5OgorICBjYXNlIDE5MDoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTQ0MTgsNyArNDM4OSw3IEBA
IHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTA6CisgIGNhc2UgMTkx
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtNDQyNiw2MyArNDM5Nyw2
MyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkxOgorICBjYXNl
IDE5MjoKIAogICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWwgPD0g
MCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5s
aW5lLCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgImNvbnRpbnVlIHN0
YXRlbWVudCBvbmx5IGFsbG93ZWQgaW4gbG9vcHMiLCAiIik7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsICh5eXZzcFso
MSkgLSAoMildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcENvbnRpbnVlLCAoeXlsc3BbKDEp
IC0gKDIpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTI6CisgIGNhc2UgMTkz
OgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUs
ICJicmVhayBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiYnJlYWsgc3RhdGVtZW50IG9u
bHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgKHl5dnNwWygxKSAtICgyKV0ubGV4
KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQnJlYWssICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDE5MzoKKyAgY2FzZSAxOTQ6CiAKICAgICB7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QnJhbmNoKEVPcFJldHVybiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFu
Y2goRU9wUmV0dXJuLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgICAgICBpZiAoY29udGV4dC0+
Y3VycmVudEZ1bmN0aW9uVHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCkgewotICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAibm9uLXZv
aWQgZnVuY3Rpb24gbXVzdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11
c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk0OgorICBj
YXNlIDE5NToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAoeXl2c3BbKDIpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgzKV0ubGV4KS5saW5lKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5bHNwWygxKSAtICgzKV0pKTsKICAgICAgICAgY29udGV4dC0+ZnVuY3Rpb25S
ZXR1cm5zVmFsdWUgPSB0cnVlOwogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0aW9u
VHlwZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0ubGV4KS5saW5lLCAidm9pZCBmdW5jdGlvbiBjYW5ub3Qg
cmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXlsc3BbKDEpIC0gKDMpXSksICJ2b2lkIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIs
ICJyZXR1cm4iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfSBl
bHNlIGlmICgqKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUpICE9ICh5eXZzcFsoMikgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMyldLmxleCkubGluZSwgImZ1bmN0aW9uIHJldHVy
biBpcyBub3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXlsc3BbKDEpIC0gKDMpXSksICJmdW5jdGlvbiByZXR1cm4gaXMgbm90IG1hdGNo
aW5nIHR5cGU6IiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5NToKKyAgY2FzZSAxOTY6
CiAKICAgICB7Ci0gICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICh5eXZzcFsoMSkgLSAoMild
LmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcEtpbGwsICh5eXZzcFsoMSkgLSAoMildLmxleCku
bGluZSk7CisgICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICh5eWxzcFsoMSkgLSAoMildKSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQnJhbmNoKEVPcEtpbGwsICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDE5NjoKKyAgY2FzZSAxOTc6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9k
ZSk7CkBAIC00NDkwLDI5ICs0NDYxLDI5IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxOTc6CisgIGNhc2UgMTk4OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtTm9kZSksIDApOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5
eWxvYykpOwogICAgICAgICBjb250ZXh0LT50cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5ODoKKyAgY2FzZSAxOTk6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5
OToKKyAgY2FzZSAyMDA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDIwMDoKKyAgY2FzZSAyMDE6CiAKICAgICB7CiAgICAgICAgIFRGdW5j
dGlvbiogZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmZ1bmN0aW9uOwpAQCAt
NDUyMSw3ICs0NDkyLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIAogICAgICAgICBpZiAoYnVpbHRJ
bikKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtKS5saW5lLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQi
LCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5bHNwWygxKSAtICgxKV0pLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRl
ZmluZWQiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDUzNSw3ICs0NTA2LDcgQEAg
eXlyZWR1Y2U6CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhlbiB0aGlzIGZ1bmN0
aW9uIGFscmVhZHkgaGFzIGEgYm9keS4KICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICJmdW5jdGlvbiBhbHJl
YWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiZnVuY3Rpb24gYWxyZWFkeSBo
YXMgYSBib2R5IiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBwcmV2RGVjLT5zZXREZWZpbmVk
KCk7CkBAIC00NTQ1LDExICs0NTE2LDExIEBAIHl5cmVkdWNlOgogICAgICAgICAvLwogICAgICAg
ICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAibWFpbiIpIHsKICAgICAgICAgICAgIGlmIChm
dW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpID4gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgImZ1bmN0aW9uIGNhbm5vdCB0
YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgImZ1bmN0aW9u
IGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3Ry
KCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgp
ICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmxpbmUsICIiLCBmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJh
c2ljU3RyaW5nKCksICJtYWluIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgIiIsIGZ1bmN0
aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fu
bm90IHJldHVybiBhIHZhbHVlIik7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NTc3LDcgKzQ1NDgsNyBAQCB5eXJlZHVj
ZToKICAgICAgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHBhcmFtZXRlcnMgd2l0aCBuYW1lIGlu
IHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICBp
ZiAoISBjb250ZXh0LT5zeW1ib2xUYWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkgewotICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUs
ICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJyZWRlZmluaXRp
b24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsK
ICAgICAgICAgICAgICAgICB9CkBAIC00NTg4LDMxICs0NTU5LDMyIEBAIHl5cmVkdWNlOgogICAg
ICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3Jl
Z2F0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW1Ob2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFi
bGUtPmdldFR5cGUoKSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHl5bHNwWygxKSAtICgxKV0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5ncm93QWdncmVnYXRlKHBhcmFtTm9kZXMsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRT
eW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUp
LCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgIHBhcmFt
Tm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgKHl5bHNw
WygxKSAtICgxKV0pKSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3Io
cGFyYW1Ob2RlcywgRU9wUGFyYW1ldGVycywgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5l
KTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBh
cmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICh5
eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAg
ICAgICAgY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA9IDA7CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDIwMToKKyAgY2FzZSAyMDI6CiAKICAgICB7CiAgICAgICAgIC8vPz8gQ2hlY2sg
dGhhdCBhbGwgcGF0aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0dXJuIHR5cGUgIT0gdm9pZCA/CiAg
ICAgICAgIC8vICAgTWF5IGJlIGJlc3QgZG9uZSBhcyBwb3N0IHByb2Nlc3MgcGhhc2Ugb24gaW50
ZXJtZWRpYXRlIGNvZGUKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUt
PmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQgJiYgISBjb250ZXh0LT5mdW5jdGlvblJldHVybnNW
YWx1ZSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtKS5saW5lLCAiZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWU6IiwgIiIsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgImZ1bmN0aW9uIGRvZXMg
bm90IHJldHVybiBhIHZhbHVlOiIsICIiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0
aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5v
ZGUpLCAwKTsKLSAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJh
dG9yKCh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSksIEVPcEZ1bmN0aW9uLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2Rl
KSwgKHl5bG9jKSk7CisgICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVP
cGVyYXRvcigoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLCBFT3BGdW5jdGlvbiwgKHl5bHNwWygx
KSAtICgzKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dy
ZWdhdGUoKS0+c2V0TmFtZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uLT5nZXRN
YW5nbGVkTmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
LT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVu
Y3Rpb24tPmdldFJldHVyblR5cGUoKSk7CiAKQEAgLTQ2MjEsOSArNDU5Myw2IEBAIHl5cmVkdWNl
OgogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5z
ZXRPcHRpbWl6ZShjb250ZXh0LT5wcmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnBy
YWdtYSgpLmRlYnVnKTsKIAotICAgICAgICBpZiAoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybU5vZGUpICYmICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNB
Z2dyZWdhdGUoKSkKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFz
QWdncmVnYXRlKCktPnNldEVuZExpbmUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5v
ZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5nZXRFbmRMaW5lKCkpOwotCiAgICAgICAgIGNvbnRleHQt
PnN5bWJvbFRhYmxlLnBvcCgpOwogICAgIDt9CiAgICAgYnJlYWs7CkBAIC00NjQwLDcgKzQ2MDks
NyBAQCB5eXJlZHVjZToKICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKIAogICAqKyt5
eXZzcCA9IHl5dmFsOwotCisgICorK3l5bHNwID0geXlsb2M7CiAKICAgLyogTm93IGBzaGlmdCcg
dGhlIHJlc3VsdCBvZiB0aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAg
dGhhdCBnb2VzIHRvLCBiYXNlZCBvbiB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRo
ZSBydWxlCkBAIC00NjY2LDcgKzQ2MzUsNyBAQCB5eWVycmxhYjoKICAgICB7CiAgICAgICArK3l5
bmVycnM7CiAjaWYgISBZWUVSUk9SX1ZFUkJPU0UKLSAgICAgIHl5ZXJyb3IgKGNvbnRleHQsIFlZ
Xygic3ludGF4IGVycm9yIikpOworICAgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgWVlf
KCJzeW50YXggZXJyb3IiKSk7CiAjZWxzZQogICAgICAgewogCVlZU0laRV9UIHl5c2l6ZSA9IHl5
c3ludGF4X2Vycm9yICgwLCB5eXN0YXRlLCB5eWNoYXIpOwpAQCAtNDY5MCwxMSArNDY1OSwxMSBA
QCB5eWVycmxhYjoKIAlpZiAoMCA8IHl5c2l6ZSAmJiB5eXNpemUgPD0geXltc2dfYWxsb2MpCiAJ
ICB7CiAJICAgICh2b2lkKSB5eXN5bnRheF9lcnJvciAoeXltc2csIHl5c3RhdGUsIHl5Y2hhcik7
Ci0JICAgIHl5ZXJyb3IgKGNvbnRleHQsIHl5bXNnKTsKKwkgICAgeXllcnJvciAoJnl5bGxvYywg
Y29udGV4dCwgeXltc2cpOwogCSAgfQogCWVsc2UKIAkgIHsKLQkgICAgeXllcnJvciAoY29udGV4
dCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CisJICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQs
IFlZXygic3ludGF4IGVycm9yIikpOwogCSAgICBpZiAoeXlzaXplICE9IDApCiAJICAgICAgZ290
byB5eWV4aGF1c3RlZGxhYjsKIAkgIH0KQEAgLTQ3MDIsNyArNDY3MSw3IEBAIHl5ZXJybGFiOgog
I2VuZGlmCiAgICAgfQogCi0KKyAgeXllcnJvcl9yYW5nZVswXSA9IHl5bGxvYzsKIAogICBpZiAo
eXllcnJzdGF0dXMgPT0gMykKICAgICB7CkBAIC00NzE4LDcgKzQ2ODcsNyBAQCB5eWVycmxhYjoK
ICAgICAgIGVsc2UKIAl7CiAJICB5eWRlc3RydWN0ICgiRXJyb3I6IGRpc2NhcmRpbmciLAotCQkg
ICAgICB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKKwkJICAgICAgeXl0b2tlbiwgJnl5bHZh
bCwgJnl5bGxvYywgY29udGV4dCk7CiAJICB5eWNoYXIgPSBZWUVNUFRZOwogCX0KICAgICB9CkBA
IC00NzM5LDYgKzQ3MDgsNyBAQCB5eWVycm9ybGFiOgogICBpZiAoLypDT05TVENPTkQqLyAwKQog
ICAgICBnb3RvIHl5ZXJyb3JsYWI7CiAKKyAgeXllcnJvcl9yYW5nZVswXSA9IHl5bHNwWzEteXls
ZW5dOwogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3aGljaCBh
Y3Rpb24gdHJpZ2dlcmVkCiAgICAgIHRoaXMgWVlFUlJPUi4gICovCiAgIFlZUE9QU1RBQ0sgKHl5
bGVuKTsKQEAgLTQ3NzIsOSArNDc0Miw5IEBAIHl5ZXJybGFiMToKICAgICAgIGlmICh5eXNzcCA9
PSB5eXNzKQogCVlZQUJPUlQ7CiAKLQorICAgICAgeXllcnJvcl9yYW5nZVswXSA9ICp5eWxzcDsK
ICAgICAgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogcG9wcGluZyIsCi0JCSAgeXlzdG9zW3l5c3RhdGVd
LCB5eXZzcCwgY29udGV4dCk7CisJCSAgeXlzdG9zW3l5c3RhdGVdLCB5eXZzcCwgeXlsc3AsIGNv
bnRleHQpOwogICAgICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgICB5eXN0YXRlID0gKnl5c3NwOwog
ICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKQEAgLTQ3ODUsNiArNDc1NSwxMSBA
QCB5eWVycmxhYjE6CiAKICAgKisreXl2c3AgPSB5eWx2YWw7CiAKKyAgeXllcnJvcl9yYW5nZVsx
XSA9IHl5bGxvYzsKKyAgLyogVXNpbmcgWVlMTE9DIGlzIHRlbXB0aW5nLCBidXQgd291bGQgY2hh
bmdlIHRoZSBsb2NhdGlvbiBvZgorICAgICB0aGUgbG9vay1haGVhZC4gIFlZTE9DIGlzIGF2YWls
YWJsZSB0aG91Z2guICAqLworICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWVycm9yX3Jhbmdl
IC0gMSksIDIpOworICAqKyt5eWxzcCA9IHl5bG9jOwogCiAgIC8qIFNoaWZ0IHRoZSBlcnJvciB0
b2tlbi4gICovCiAgIFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0aW5nIiwgeXlzdG9zW3l5bl0sIHl5
dnNwLCB5eWxzcCk7CkBAIC00ODEyLDcgKzQ3ODcsNyBAQCB5eWFib3J0bGFiOgogfCB5eWV4aGF1
c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJlLiAgfAogYC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogeXlleGhhdXN0ZWRsYWI6
Ci0gIHl5ZXJyb3IgKGNvbnRleHQsIFlZXygibWVtb3J5IGV4aGF1c3RlZCIpKTsKKyAgeXllcnJv
ciAoJnl5bGxvYywgY29udGV4dCwgWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOwogICB5eXJlc3Vs
dCA9IDI7CiAgIC8qIEZhbGwgdGhyb3VnaC4gICovCiAjZW5kaWYKQEAgLTQ4MjAsNyArNDc5NSw3
IEBAIHl5ZXhoYXVzdGVkbGFiOgogeXlyZXR1cm46CiAgIGlmICh5eWNoYXIgIT0gWVlFT0YgJiYg
eXljaGFyICE9IFlZRU1QVFkpCiAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5n
IGxvb2thaGVhZCIsCi0JCSB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKKwkJIHl5dG9rZW4s
ICZ5eWx2YWwsICZ5eWxsb2MsIGNvbnRleHQpOwogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3lt
Ym9scyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCiAgICAgIHRoaXMgWVlBQk9S
VCBvciBZWUFDQ0VQVC4gICovCiAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKQEAgLTQ4MjgsNyArNDgw
Myw3IEBAIHl5cmV0dXJuOgogICB3aGlsZSAoeXlzc3AgIT0geXlzcykKICAgICB7CiAgICAgICB5
eWRlc3RydWN0ICgiQ2xlYW51cDogcG9wcGluZyIsCi0JCSAgeXlzdG9zWyp5eXNzcF0sIHl5dnNw
LCBjb250ZXh0KTsKKwkJICB5eXN0b3NbKnl5c3NwXSwgeXl2c3AsIHl5bHNwLCBjb250ZXh0KTsK
ICAgICAgIFlZUE9QU1RBQ0sgKDEpOwogICAgIH0KICNpZm5kZWYgeXlvdmVyZmxvdwpAQCAtNDg0
Nyw2ICs0ODIyLDExIEBAIHl5cmV0dXJuOgogCiAKIAordm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5
bGxvYywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKSB7CisgICAg
Y29udGV4dC0+ZXJyb3IoKnl5bGxvYywgcmVhc29uLCAiIik7CisgICAgY29udGV4dC0+cmVjb3Zl
cigpOworfQorCiBpbnQgZ2xzbGFuZ19wYXJzZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAg
ICAgcmV0dXJuIHl5cGFyc2UoY29udGV4dCk7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaAkocmV2aXNpb24gMTUyOTc5
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg2LDUyICs4Niw1MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0g
MzAyLAogICAgICBJTlRDT05TVEFOVCA9IDMwMywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAot
ICAgICBGSUVMRF9TRUxFQ1RJT04gPSAzMDUsCi0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJ
R0hUX09QID0gMzA3LAotICAgICBJTkNfT1AgPSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAg
ICAgTEVfT1AgPSAzMTAsCi0gICAgIEdFX09QID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAg
ICAgTkVfT1AgPSAzMTMsCi0gICAgIEFORF9PUCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0g
ICAgIFhPUl9PUCA9IDMxNiwKLSAgICAgTVVMX0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lH
TiA9IDMxOCwKLSAgICAgQUREX0FTU0lHTiA9IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwK
LSAgICAgTEVGVF9BU1NJR04gPSAzMjEsCi0gICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAg
QU5EX0FTU0lHTiA9IDMyMywKLSAgICAgWE9SX0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdO
ID0gMzI1LAotICAgICBTVUJfQVNTSUdOID0gMzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAot
ICAgICBSSUdIVF9QQVJFTiA9IDMyOCwKLSAgICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBS
SUdIVF9CUkFDS0VUID0gMzMwLAotICAgICBMRUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9C
UkFDRSA9IDMzMiwKLSAgICAgRE9UID0gMzMzLAotICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09M
T04gPSAzMzUsCi0gICAgIEVRVUFMID0gMzM2LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAg
IEJBTkcgPSAzMzgsCi0gICAgIERBU0ggPSAzMzksCi0gICAgIFRJTERFID0gMzQwLAotICAgICBQ
TFVTID0gMzQxLAotICAgICBTVEFSID0gMzQyLAotICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVS
Q0VOVCA9IDM0NCwKLSAgICAgTEVGVF9BTkdMRSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAz
NDYsCi0gICAgIFZFUlRJQ0FMX0JBUiA9IDM0NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFN
UEVSU0FORCA9IDM0OSwKLSAgICAgUVVFU1RJT04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwK
KyAgICAgUklHSFRfT1AgPSAzMDYsCisgICAgIElOQ19PUCA9IDMwNywKKyAgICAgREVDX09QID0g
MzA4LAorICAgICBMRV9PUCA9IDMwOSwKKyAgICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0g
MzExLAorICAgICBORV9PUCA9IDMxMiwKKyAgICAgQU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9
IDMxNCwKKyAgICAgWE9SX09QID0gMzE1LAorICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBE
SVZfQVNTSUdOID0gMzE3LAorICAgICBBRERfQVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdO
ID0gMzE5LAorICAgICBMRUZUX0FTU0lHTiA9IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIx
LAorICAgICBBTkRfQVNTSUdOID0gMzIyLAorICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBP
Ul9BU1NJR04gPSAzMjQsCisgICAgIFNVQl9BU1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4g
PSAzMjYsCisgICAgIFJJR0hUX1BBUkVOID0gMzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgs
CisgICAgIFJJR0hUX0JSQUNLRVQgPSAzMjksCisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAg
IFJJR0hUX0JSQUNFID0gMzMxLAorICAgICBET1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMzLAor
ICAgICBDT0xPTiA9IDMzNCwKKyAgICAgRVFVQUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMz
NiwKKyAgICAgQkFORyA9IDMzNywKKyAgICAgREFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzks
CisgICAgIFBMVVMgPSAzNDAsCisgICAgIFNUQVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAor
ICAgICBQRVJDRU5UID0gMzQzLAorICAgICBMRUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9B
TkdMRSA9IDM0NSwKKyAgICAgVkVSVElDQUxfQkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywK
KyAgICAgQU1QRVJTQU5EID0gMzQ4LAorICAgICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRp
ZgogLyogVG9rZW5zLiAgKi8KQEAgLTE4Miw1MiArMTgxLDUxIEBACiAjZGVmaW5lIEZMT0FUQ09O
U1RBTlQgMzAyCiAjZGVmaW5lIElOVENPTlNUQU5UIDMwMwogI2RlZmluZSBCT09MQ09OU1RBTlQg
MzA0Ci0jZGVmaW5lIEZJRUxEX1NFTEVDVElPTiAzMDUKLSNkZWZpbmUgTEVGVF9PUCAzMDYKLSNk
ZWZpbmUgUklHSFRfT1AgMzA3Ci0jZGVmaW5lIElOQ19PUCAzMDgKLSNkZWZpbmUgREVDX09QIDMw
OQotI2RlZmluZSBMRV9PUCAzMTAKLSNkZWZpbmUgR0VfT1AgMzExCi0jZGVmaW5lIEVRX09QIDMx
MgotI2RlZmluZSBORV9PUCAzMTMKLSNkZWZpbmUgQU5EX09QIDMxNAotI2RlZmluZSBPUl9PUCAz
MTUKLSNkZWZpbmUgWE9SX09QIDMxNgotI2RlZmluZSBNVUxfQVNTSUdOIDMxNwotI2RlZmluZSBE
SVZfQVNTSUdOIDMxOAotI2RlZmluZSBBRERfQVNTSUdOIDMxOQotI2RlZmluZSBNT0RfQVNTSUdO
IDMyMAotI2RlZmluZSBMRUZUX0FTU0lHTiAzMjEKLSNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMgot
I2RlZmluZSBBTkRfQVNTSUdOIDMyMwotI2RlZmluZSBYT1JfQVNTSUdOIDMyNAotI2RlZmluZSBP
Ul9BU1NJR04gMzI1Ci0jZGVmaW5lIFNVQl9BU1NJR04gMzI2Ci0jZGVmaW5lIExFRlRfUEFSRU4g
MzI3Ci0jZGVmaW5lIFJJR0hUX1BBUkVOIDMyOAotI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI5Ci0j
ZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzMwCi0jZGVmaW5lIExFRlRfQlJBQ0UgMzMxCi0jZGVmaW5l
IFJJR0hUX0JSQUNFIDMzMgotI2RlZmluZSBET1QgMzMzCi0jZGVmaW5lIENPTU1BIDMzNAotI2Rl
ZmluZSBDT0xPTiAzMzUKLSNkZWZpbmUgRVFVQUwgMzM2Ci0jZGVmaW5lIFNFTUlDT0xPTiAzMzcK
LSNkZWZpbmUgQkFORyAzMzgKLSNkZWZpbmUgREFTSCAzMzkKLSNkZWZpbmUgVElMREUgMzQwCi0j
ZGVmaW5lIFBMVVMgMzQxCi0jZGVmaW5lIFNUQVIgMzQyCi0jZGVmaW5lIFNMQVNIIDM0MwotI2Rl
ZmluZSBQRVJDRU5UIDM0NAotI2RlZmluZSBMRUZUX0FOR0xFIDM0NQotI2RlZmluZSBSSUdIVF9B
TkdMRSAzNDYKLSNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NwotI2RlZmluZSBDQVJFVCAzNDgKLSNk
ZWZpbmUgQU1QRVJTQU5EIDM0OQotI2RlZmluZSBRVUVTVElPTiAzNTAKKyNkZWZpbmUgTEVGVF9P
UCAzMDUKKyNkZWZpbmUgUklHSFRfT1AgMzA2CisjZGVmaW5lIElOQ19PUCAzMDcKKyNkZWZpbmUg
REVDX09QIDMwOAorI2RlZmluZSBMRV9PUCAzMDkKKyNkZWZpbmUgR0VfT1AgMzEwCisjZGVmaW5l
IEVRX09QIDMxMQorI2RlZmluZSBORV9PUCAzMTIKKyNkZWZpbmUgQU5EX09QIDMxMworI2RlZmlu
ZSBPUl9PUCAzMTQKKyNkZWZpbmUgWE9SX09QIDMxNQorI2RlZmluZSBNVUxfQVNTSUdOIDMxNgor
I2RlZmluZSBESVZfQVNTSUdOIDMxNworI2RlZmluZSBBRERfQVNTSUdOIDMxOAorI2RlZmluZSBN
T0RfQVNTSUdOIDMxOQorI2RlZmluZSBMRUZUX0FTU0lHTiAzMjAKKyNkZWZpbmUgUklHSFRfQVNT
SUdOIDMyMQorI2RlZmluZSBBTkRfQVNTSUdOIDMyMgorI2RlZmluZSBYT1JfQVNTSUdOIDMyMwor
I2RlZmluZSBPUl9BU1NJR04gMzI0CisjZGVmaW5lIFNVQl9BU1NJR04gMzI1CisjZGVmaW5lIExF
RlRfUEFSRU4gMzI2CisjZGVmaW5lIFJJR0hUX1BBUkVOIDMyNworI2RlZmluZSBMRUZUX0JSQUNL
RVQgMzI4CisjZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzI5CisjZGVmaW5lIExFRlRfQlJBQ0UgMzMw
CisjZGVmaW5lIFJJR0hUX0JSQUNFIDMzMQorI2RlZmluZSBET1QgMzMyCisjZGVmaW5lIENPTU1B
IDMzMworI2RlZmluZSBDT0xPTiAzMzQKKyNkZWZpbmUgRVFVQUwgMzM1CisjZGVmaW5lIFNFTUlD
T0xPTiAzMzYKKyNkZWZpbmUgQkFORyAzMzcKKyNkZWZpbmUgREFTSCAzMzgKKyNkZWZpbmUgVElM
REUgMzM5CisjZGVmaW5lIFBMVVMgMzQwCisjZGVmaW5lIFNUQVIgMzQxCisjZGVmaW5lIFNMQVNI
IDM0MgorI2RlZmluZSBQRVJDRU5UIDM0MworI2RlZmluZSBMRUZUX0FOR0xFIDM0NAorI2RlZmlu
ZSBSSUdIVF9BTkdMRSAzNDUKKyNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NgorI2RlZmluZSBDQVJF
VCAzNDcKKyNkZWZpbmUgQU1QRVJTQU5EIDM0OAorI2RlZmluZSBRVUVTVElPTiAzNDkKIAogCiAK
QEAgLTIzNiw4ICsyMzQsOSBAQAogdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAKIHsKKyNkZWZpbmUg
WVlMVFlQRSBUU291cmNlTG9jCisjZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQgMQogICAgIHN0
cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgdW5pb24gewogICAgICAg
ICAgICAgVFN0cmluZyAqc3RyaW5nOwogICAgICAgICAgICAgZmxvYXQgZjsKQEAgLTI0Nyw3ICsy
NDYsNiBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwog
ICAgIH0gbGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAg
ICAgVE9wZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9k
ZSogaW50ZXJtTm9kZTsKQEAgLTI2MSw4ICsyNTksOCBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUK
ICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyOwogICAgICAgICAgICAgVEZ1bmN0aW9u
KiBmdW5jdGlvbjsKICAgICAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW07Ci0gICAgICAgICAgICBU
VHlwZUxpbmUgdHlwZUxpbmU7Ci0gICAgICAgICAgICBUVHlwZUxpc3QqIHR5cGVMaXN0OworICAg
ICAgICAgICAgVEZpZWxkKiBmaWVsZDsKKyAgICAgICAgICAgIFRGaWVsZExpc3QqIGZpZWxkTGlz
dDsKICAgICAgICAgfTsKICAgICB9IGludGVybTsKIH0KQEAgLTI3NiwzICsyNzQsMTcgQEAgdHlw
ZWRlZiB1bmlvbiBZWVNUWVBFCiAKIAogCisjaWYgISBkZWZpbmVkIFlZTFRZUEUgJiYgISBkZWZp
bmVkIFlZTFRZUEVfSVNfREVDTEFSRUQKK3R5cGVkZWYgc3RydWN0IFlZTFRZUEUKK3sKKyAgaW50
IGZpcnN0X2xpbmU7CisgIGludCBmaXJzdF9jb2x1bW47CisgIGludCBsYXN0X2xpbmU7CisgIGlu
dCBsYXN0X2NvbHVtbjsKK30gWVlMVFlQRTsKKyMgZGVmaW5lIHl5bHR5cGUgWVlMVFlQRSAvKiBv
YnNvbGVzY2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KKyMgZGVmaW5lIFlZTFRZUEVfSVNfREVD
TEFSRUQgMQorIyBkZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKKyNlbmRpZgorCisKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQu
Y3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvaW50ZXJtT3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDcgKzE4OSw5IEBAIGJv
b2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRVbmFyeShWaXNpdCAKICAgICAgICAgY2FzZSBFT3BB
bnk6ICAgICAgICAgICAgb3V0IDw8ICJhbnkiOyAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEVPcEFsbDogICAgICAgICAgICBvdXQgPDwgImFsbCI7ICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgZGVmYXVsdDogb3V0Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCAi
QmFkIHVuYXJ5IG9wIik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBvdXQucHJlZml4
KEVQcmVmaXhFcnJvcik7CisgICAgICAgICAgICBvdXQgPDwgIkJhZCB1bmFyeSBvcCI7CiAgICAg
fQogCiAgICAgb3V0IDw8ICIgKCIgPDwgbm9kZS0+Z2V0Q29tcGxldGVTdHJpbmcoKSA8PCAiKSI7
CkBAIC0yMDQsNyArMjA2LDggQEAgYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0
ZShWaQogICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IHNpbms7CiAKICAgICBpZiAobm9kZS0+Z2V0
T3AoKSA9PSBFT3BOdWxsKSB7Ci0gICAgICAgIG91dC5tZXNzYWdlKEVQcmVmaXhFcnJvciwgIm5v
ZGUgaXMgc3RpbGwgRU9wTnVsbCEiKTsKKyAgICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3Ip
OworICAgICAgICBvdXQgPDwgIm5vZGUgaXMgc3RpbGwgRU9wTnVsbCEiOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI2Myw3ICsyNjYsOSBAQCBib29sIFRPdXRwdXRUcmF2ZXJz
ZXI6OnZpc2l0QWdncmVnYXRlKFZpCiAKICAgICAgICAgY2FzZSBFT3BEZWNsYXJhdGlvbjogICBv
dXQgPDwgIkRlY2xhcmF0aW9uOiAiOyAgIGJyZWFrOwogCi0gICAgICAgIGRlZmF1bHQ6IG91dC5t
ZXNzYWdlKEVQcmVmaXhFcnJvciwgIkJhZCBhZ2dyZWdhdGlvbiBvcCIpOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAg
b3V0IDw8ICJCYWQgYWdncmVnYXRpb24gb3AiOwogICAgIH0KIAogICAgIGlmIChub2RlLT5nZXRP
cCgpICE9IEVPcFNlcXVlbmNlICYmIG5vZGUtPmdldE9wKCkgIT0gRU9wUGFyYW1ldGVycykKQEAg
LTMxMSw5ICszMTYsOSBAQCB2b2lkIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlv
CiB7CiAgICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gc2luazsKIAotICAgIGludCBzaXplID0gbm9k
ZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKKyAgICBzaXplX3Qgc2l6ZSA9IG5vZGUtPmdl
dFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
IGkrKykgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAg
IE91dHB1dFRyZWVUZXh0KG91dCwgbm9kZSwgZGVwdGgpOwogICAgICAgICBzd2l0Y2ggKG5vZGUt
PmdldFVuaW9uQXJyYXlQb2ludGVyKClbaV0uZ2V0VHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNl
IEVidEJvb2w6CkBAIC0zMzQsNyArMzM5LDcgQEAgdm9pZCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNp
dENvbnN0YW50VW5pbwogICAgICAgICAgICAgICAgIG91dCA8PCAiIChjb25zdCBpbnQpXG4iOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICBvdXQubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVua25vd24gY29uc3RhbnQi
LCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dC5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJVbmtub3duIGNvbnN0YW50Iik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCShyZXZpc2lv
biAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJt
ZWRpYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE4LDYgKzE4LDcgQEAKIAogI2luY2x1ZGUgIkdMU0xB
TkcvU2hhZGVyTGFuZy5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgImNvbXBp
bGVyL0NvbW1vbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL1R5cGVzLmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvQ29uc3RhbnRVbmlvbi5oIgpAQCAtMjA2LDEwICsyMDcsMTYgQEAgY2xhc3MgVEludGVy
bU5vZGUgewogcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9v
bEFsbG9jYXRvcikKIAotICAgIFRJbnRlcm1Ob2RlKCkgOiBsaW5lKDApIHt9CisgICAgVEludGVy
bU5vZGUoKSB7CisgICAgICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBUU291cmNlTG9jIGNvbnN0
cnVjdG9yCisgICAgICAgIC8vIGFmdGVyIGdldHRpbmcgcmlkIG9mIFRQdWJsaWNUeXBlLgorICAg
ICAgICBsaW5lLmZpcnN0X2ZpbGUgPSBsaW5lLmxhc3RfZmlsZSA9IDA7CisgICAgICAgIGxpbmUu
Zmlyc3RfbGluZSA9IGxpbmUubGFzdF9saW5lID0gMDsKKyAgICB9CisgICAgdmlydHVhbCB+VElu
dGVybU5vZGUoKSB7IH0KIAotICAgIFRTb3VyY2VMb2MgZ2V0TGluZSgpIGNvbnN0IHsgcmV0dXJu
IGxpbmU7IH0KLSAgICB2b2lkIHNldExpbmUoVFNvdXJjZUxvYyBsKSB7IGxpbmUgPSBsOyB9Cisg
ICAgY29uc3QgVFNvdXJjZUxvYyYgZ2V0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmU7IH0KKyAg
ICB2b2lkIHNldExpbmUoY29uc3QgVFNvdXJjZUxvYyYgbCkgeyBsaW5lID0gbDsgfQogCiAgICAg
dmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqKSA9IDA7CiAgICAgdmlydHVh
bCBUSW50ZXJtVHlwZWQqIGdldEFzVHlwZWQoKSB7IHJldHVybiAwOyB9CkBAIC0yMjAsNyArMjI3
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVEludGVybVNlbGVjdGlvbiogZ2V0QXNTZWxlY3Rp
b25Ob2RlKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgVEludGVybVN5bWJvbCogZ2V0QXNT
eW1ib2xOb2RlKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgVEludGVybUxvb3AqIGdldEFz
TG9vcE5vZGUoKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB+VEludGVybU5vZGUoKSB7IH0K
IAogcHJvdGVjdGVkOgogICAgIFRTb3VyY2VMb2MgbGluZTsKQEAgLTI1OSw2ICsyNjUsMTAgQEAg
cHVibGljOgogICAgIGNvbnN0IGNoYXIqIGdldFF1YWxpZmllclN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIHR5cGUuZ2V0UXVhbGlmaWVyU3RyaW5nKCk7IH0KICAgICBUU3RyaW5nIGdldENvbXBsZXRl
U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gdHlwZS5nZXRDb21wbGV0ZVN0cmluZygpOyB9CiAKKyAg
ICBpbnQgdG90YWxSZWdpc3RlckNvdW50KCkgY29uc3QgeyByZXR1cm4gdHlwZS50b3RhbFJlZ2lz
dGVyQ291bnQoKTsgfQorICAgIGludCBlbGVtZW50UmVnaXN0ZXJDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIHR5cGUuZWxlbWVudFJlZ2lzdGVyQ291bnQoKTsgfQorICAgIGludCBnZXRBcnJheVNpemUo
KSBjb25zdCB7IHJldHVybiB0eXBlLmdldEFycmF5U2l6ZSgpOyB9CisKIHByb3RlY3RlZDoKICAg
ICBUVHlwZSB0eXBlOwogfTsKQEAgLTM1OCw3ICszNjgsMTAgQEAgcHVibGljOgogICAgIFRJbnRl
cm1Db25zdGFudFVuaW9uKENvbnN0YW50VW5pb24gKnVuaW9uUG9pbnRlciwgY29uc3QgVFR5cGUm
IHQpIDogVEludGVybVR5cGVkKHQpLCB1bmlvbkFycmF5UG9pbnRlcih1bmlvblBvaW50ZXIpIHsg
fQogCiAgICAgQ29uc3RhbnRVbmlvbiogZ2V0VW5pb25BcnJheVBvaW50ZXIoKSBjb25zdCB7IHJl
dHVybiB1bmlvbkFycmF5UG9pbnRlcjsgfQotICAgIHZvaWQgc2V0VW5pb25BcnJheVBvaW50ZXIo
Q29uc3RhbnRVbmlvbiAqYykgeyB1bmlvbkFycmF5UG9pbnRlciA9IGM7IH0KKyAgICAKKyAgICBp
bnQgZ2V0SUNvbnN0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXIg
PyB1bmlvbkFycmF5UG9pbnRlcltpbmRleF0uZ2V0SUNvbnN0KCkgOiAwOyB9CisgICAgZmxvYXQg
Z2V0RkNvbnN0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXIgPyB1
bmlvbkFycmF5UG9pbnRlcltpbmRleF0uZ2V0RkNvbnN0KCkgOiAwLjBmOyB9CisgICAgYm9vbCBn
ZXRCQ29uc3QoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRlciA/IHVu
aW9uQXJyYXlQb2ludGVyW2luZGV4XS5nZXRCQ29uc3QoKSA6IGZhbHNlOyB9CiAKICAgICB2aXJ0
dWFsIFRJbnRlcm1Db25zdGFudFVuaW9uKiBnZXRBc0NvbnN0YW50VW5pb24oKSAgeyByZXR1cm4g
dGhpczsgfQogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKik7CkBA
IC00NDcsNyArNDYwLDcgQEAgdHlwZWRlZiBUVmVjdG9yPGludD4gVFF1YWxpZmllckxpc3Q7CiAv
LwogY2xhc3MgVEludGVybUFnZ3JlZ2F0ZSA6IHB1YmxpYyBUSW50ZXJtT3BlcmF0b3IgewogcHVi
bGljOgotICAgIFRJbnRlcm1BZ2dyZWdhdGUoKSA6IFRJbnRlcm1PcGVyYXRvcihFT3BOdWxsKSwg
dXNlckRlZmluZWQoZmFsc2UpLCBlbmRMaW5lKDApLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKGZhbHNl
KSB7IH0KKyAgICBUSW50ZXJtQWdncmVnYXRlKCkgOiBUSW50ZXJtT3BlcmF0b3IoRU9wTnVsbCks
IHVzZXJEZWZpbmVkKGZhbHNlKSwgdXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSkgeyB9CiAgICAg
VEludGVybUFnZ3JlZ2F0ZShUT3BlcmF0b3IgbykgOiBUSW50ZXJtT3BlcmF0b3IobyksIHVzZUVt
dWxhdGVkRnVuY3Rpb24oZmFsc2UpIHsgfQogICAgIH5USW50ZXJtQWdncmVnYXRlKCkgeyB9CiAK
QEAgLTQ2Nyw5ICs0ODAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWJ1Zyhib29sIGQpIHsg
ZGVidWcgPSBkOyB9CiAgICAgYm9vbCBnZXREZWJ1ZygpIHsgcmV0dXJuIGRlYnVnOyB9CiAKLSAg
ICB2b2lkIHNldEVuZExpbmUoVFNvdXJjZUxvYyBsaW5lKSB7IGVuZExpbmUgPSBsaW5lOyB9Ci0g
ICAgVFNvdXJjZUxvYyBnZXRFbmRMaW5lKCkgY29uc3QgeyByZXR1cm4gZW5kTGluZTsgfQotCiAg
ICAgdm9pZCBzZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkgeyB1c2VFbXVsYXRlZEZ1bmN0aW9uID0g
dHJ1ZTsgfQogICAgIGJvb2wgZ2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpIHsgcmV0dXJuIHVzZUVt
dWxhdGVkRnVuY3Rpb247IH0KIApAQCAtNDgyLDcgKzQ5Miw2IEBAIHByb3RlY3RlZDoKIAogICAg
IGJvb2wgb3B0aW1pemU7CiAgICAgYm9vbCBkZWJ1ZzsKLSAgICBUU291cmNlTG9jIGVuZExpbmU7
CiAKICAgICAvLyBJZiBzZXQgdG8gdHJ1ZSwgcmVwbGFjZSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24g
Y2FsbCB3aXRoIGFuIGVtdWxhdGVkIG9uZQogICAgIC8vIHRvIHdvcmsgYXJvdW5kIGRyaXZlciBi
dWdzLgpAQCAtNTM4LDcgKzU0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGluVmlzaXQoaW5W
aXNpdCksCiAgICAgICAgICAgICBwb3N0VmlzaXQocG9zdFZpc2l0KSwKICAgICAgICAgICAgIHJp
Z2h0VG9MZWZ0KHJpZ2h0VG9MZWZ0KSwKLSAgICAgICAgICAgIGRlcHRoKDApIHt9CisgICAgICAg
ICAgICBkZXB0aCgwKSwKKyAgICAgICAgICAgIG1heERlcHRoKDApIHt9CiAgICAgdmlydHVhbCB+
VEludGVybVRyYXZlcnNlcigpIHt9OwogCiAgICAgdmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJ
bnRlcm1TeW1ib2wqKSB7fQpAQCAtNTUwLDcgKzU2MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCopIHtyZXR1cm4gdHJ1ZTt9
CiAgICAgdmlydHVhbCBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNo
Kikge3JldHVybiB0cnVlO30KIAotICAgIHZvaWQgaW5jcmVtZW50RGVwdGgoKSB7ZGVwdGgrKzt9
CisgICAgaW50IGdldE1heERlcHRoKCkgY29uc3Qge3JldHVybiBtYXhEZXB0aDt9CisgICAgdm9p
ZCBpbmNyZW1lbnREZXB0aCgpIHtkZXB0aCsrOyBtYXhEZXB0aCA9IHN0ZDo6bWF4KG1heERlcHRo
LCBkZXB0aCk7IH0KICAgICB2b2lkIGRlY3JlbWVudERlcHRoKCkge2RlcHRoLS07fQogCiAgICAg
Ly8gUmV0dXJuIHRoZSBvcmlnaW5hbCBuYW1lIGlmIGhhc2ggZnVuY3Rpb24gcG9pbnRlciBpcyBO
VUxMOwpAQCAtNTY0LDYgKzU3NSw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIGludCBk
ZXB0aDsKKyAgICBpbnQgbWF4RGVwdGg7CiB9OwogCiAjZW5kaWYgLy8gX19JTlRFUk1FRElBVEVf
SApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJt
ZWRpYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2xvY2FsaW50ZXJtZWRpYXRlLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSwzNCArMjUsMzMgQEAgcHVibGljOiAgICAKICAgICBQT09MX0FMTE9DQVRPUl9O
RVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpCiAKICAgICBUSW50ZXJtZWRpYXRlKFRJbmZv
U2luayYgaSkgOiBpbmZvU2luayhpKSB7IH0KLSAgICBUSW50ZXJtU3ltYm9sKiBhZGRTeW1ib2wo
aW50IElkLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFR5cGUmLCBUU291cmNlTG9jKTsKKyAgICBU
SW50ZXJtU3ltYm9sKiBhZGRTeW1ib2woaW50IElkLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFR5
cGUmLCBjb25zdCBUU291cmNlTG9jJik7CiAgICAgVEludGVybVR5cGVkKiBhZGRDb252ZXJzaW9u
KFRPcGVyYXRvciwgY29uc3QgVFR5cGUmLCBUSW50ZXJtVHlwZWQqKTsKLSAgICBUSW50ZXJtVHlw
ZWQqIGFkZEJpbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRl
cm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MsIFRTeW1ib2xUYWJsZSYpOwotICAgIFRJbnRlcm1U
eXBlZCogYWRkQXNzaWduKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJt
VHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZEluZGV4KFRP
cGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBUU291
cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZFVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJ
bnRlcm1Ob2RlKiBjaGlsZCwgVFNvdXJjZUxvYywgVFN5bWJvbFRhYmxlJik7Ci0gICAgVEludGVy
bUFnZ3JlZ2F0ZSogZ3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVmdCwgVEludGVybU5vZGUq
IHJpZ2h0LCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlKiBtYWtlQWdncmVnYXRl
KFRJbnRlcm1Ob2RlKiBub2RlLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlKiBz
ZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSosIFRPcGVyYXRvciwgVFNvdXJjZUxvYyk7
Ci0gICAgVEludGVybU5vZGUqICBhZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50
ZXJtTm9kZVBhaXIgY29kZSwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRTZWxl
Y3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIHRydWVCbG9jaywgVEludGVy
bVR5cGVkKiBmYWxzZUJsb2NrLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENv
bW1hKFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYyk7
Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24qIGFkZENvbnN0YW50VW5pb24oQ29uc3RhbnRVbmlv
biosIGNvbnN0IFRUeXBlJiwgVFNvdXJjZUxvYyk7CisgICAgVEludGVybVR5cGVkKiBhZGRCaW5h
cnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJp
Z2h0LCBjb25zdCBUU291cmNlTG9jJiwgVFN5bWJvbFRhYmxlJik7CisgICAgVEludGVybVR5cGVk
KiBhZGRBc3NpZ24oVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBl
ZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZEluZGV4
KFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBj
b25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRVbmFyeU1hdGgoVE9wZXJh
dG9yIG9wLCBUSW50ZXJtTm9kZSogY2hpbGQsIGNvbnN0IFRTb3VyY2VMb2MmLCBUU3ltYm9sVGFi
bGUmKTsKKyAgICBUSW50ZXJtQWdncmVnYXRlKiBncm93QWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBs
ZWZ0LCBUSW50ZXJtTm9kZSogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJt
QWdncmVnYXRlKiBtYWtlQWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBub2RlLCBjb25zdCBUU291cmNl
TG9jJik7CisgICAgVEludGVybUFnZ3JlZ2F0ZSogc2V0QWdncmVnYXRlT3BlcmF0b3IoVEludGVy
bU5vZGUqLCBUT3BlcmF0b3IsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtTm9kZSog
IGFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1Ob2RlUGFpciBjb2RlLCBj
b25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRTZWxlY3Rpb24oVEludGVy
bVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIHRydWVCbG9jaywgVEludGVybVR5cGVkKiBmYWxz
ZUJsb2NrLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRDb21tYShU
SW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2Mm
KTsKKyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogYWRkQ29uc3RhbnRVbmlvbihDb25zdGFudFVu
aW9uKiwgY29uc3QgVFR5cGUmLCBjb25zdCBUU291cmNlTG9jJik7CiAgICAgVEludGVybVR5cGVk
KiBwcm9tb3RlQ29uc3RhbnRVbmlvbihUQmFzaWNUeXBlLCBUSW50ZXJtQ29uc3RhbnRVbmlvbiop
IDsKLSAgICBib29sIHBhcnNlQ29uc3RUcmVlKFRTb3VyY2VMb2MsIFRJbnRlcm1Ob2RlKiwgQ29u
c3RhbnRVbmlvbiosIFRPcGVyYXRvciwgVFN5bWJvbFRhYmxlJiwgVFR5cGUsIGJvb2wgc2luZ2xl
Q29uc3RhbnRQYXJhbSA9IGZhbHNlKTsgICAgICAgIAotICAgIFRJbnRlcm1Ob2RlKiBhZGRMb29w
KFRMb29wVHlwZSwgVEludGVybU5vZGUqLCBUSW50ZXJtVHlwZWQqLCBUSW50ZXJtVHlwZWQqLCBU
SW50ZXJtTm9kZSosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChU
T3BlcmF0b3IsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3Bl
cmF0b3IsIFRJbnRlcm1UeXBlZCosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRk
U3dpenpsZShUVmVjdG9yRmllbGRzJiwgVFNvdXJjZUxvYyk7CisgICAgYm9vbCBwYXJzZUNvbnN0
VHJlZShjb25zdCBUU291cmNlTG9jJiwgVEludGVybU5vZGUqLCBDb25zdGFudFVuaW9uKiwgVE9w
ZXJhdG9yLCBUU3ltYm9sVGFibGUmLCBUVHlwZSwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFtID0g
ZmFsc2UpOyAgICAgICAgCisgICAgVEludGVybU5vZGUqIGFkZExvb3AoVExvb3BUeXBlLCBUSW50
ZXJtTm9kZSosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1Ob2RlKiwgY29u
c3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3BlcmF0b3Is
IGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtQnJhbmNoKiBhZGRCcmFuY2goVE9wZXJh
dG9yLCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVk
KiBhZGRTd2l6emxlKFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291cmNlTG9jJik7CiAgICAgYm9v
bCBwb3N0UHJvY2VzcyhUSW50ZXJtTm9kZSopOwotCXZvaWQgcmVtb3ZlKFRJbnRlcm1Ob2RlKik7
CisgICAgdm9pZCByZW1vdmUoVEludGVybU5vZGUqKTsKICAgICB2b2lkIG91dHB1dFRyZWUoVElu
dGVybU5vZGUqKTsKLSAgICAKLXByb3RlY3RlZDoKLSAgICBUSW5mb1NpbmsmIGluZm9TaW5rOwog
CiBwcml2YXRlOgogICAgIHZvaWQgb3BlcmF0b3I9KFRJbnRlcm1lZGlhdGUmKTsgLy8gcHJldmVu
dCBhc3NpZ25tZW50cworCisgICAgVEluZm9TaW5rJiBpbmZvU2luazsKIH07CiAKICNlbmRpZiAv
LyBfTE9DQUxfSU5URVJNRURJQVRFX0lOQ0xVREVEXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wYXJzZUNvbnN0LmNwcAkocmV2aXNpb24gMTUy
OTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNiArMzgsMTYgQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCopOwogICAgIGJvb2wgdmlzaXRC
cmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqKTsKIAotICAgIGludCBpbmRleDsKKyAg
ICBzaXplX3QgaW5kZXg7CiAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheTsKICAgICBUVHlw
ZSB0eXBlOwogICAgIFRPcGVyYXRvciBjb25zdHJ1Y3RvclR5cGU7CiAgICAgYm9vbCBzaW5nbGVD
b25zdGFudFBhcmFtOwogICAgIFRJbmZvU2luayYgaW5mb1Npbms7CiAgICAgVFN5bWJvbFRhYmxl
JiBzeW1ib2xUYWJsZTsKLSAgICBpbnQgc2l6ZTsgLy8gc2l6ZSBvZiB0aGUgY29uc3RydWN0b3Ig
KCA0IGZvciB2ZWM0KQorICAgIHNpemVfdCBzaXplOyAvLyBzaXplIG9mIHRoZSBjb25zdHJ1Y3Rv
ciAoIDQgZm9yIHZlYzQpCiAgICAgYm9vbCBpc01hdHJpeDsKLSAgICBpbnQgbWF0cml4U2l6ZTsg
Ly8gZGltZW5zaW9uIG9mIHRoZSBtYXRyaXggKG5vbWluYWwgc2l6ZSBhbmQgbm90IHRoZSBpbnN0
YW5jZSBzaXplKQorICAgIHNpemVfdCBtYXRyaXhTaXplOyAvLyBkaW1lbnNpb24gb2YgdGhlIG1h
dHJpeCAobm9taW5hbCBzaXplIGFuZCBub3QgdGhlIGluc3RhbmNlIHNpemUpCiB9OwogCiAvLwpA
QCAtNjEsNyArNjEsNyBAQCBwcm90ZWN0ZWQ6CiAKIHZvaWQgVENvbnN0VHJhdmVyc2VyOjp2aXNp
dFN5bWJvbChUSW50ZXJtU3ltYm9sKiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlN5bWJvbCBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNv
bnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIlN5bWJvbCBOb2RlIGZvdW5k
IGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgcmV0dXJuOwogCiB9CkBAIC03NCwxMiAr
NzQsMTIgQEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KFZpc2l0IAogICAgICAg
ICBUU3RyaW5nIGJ1ZjsKICAgICAgICAgYnVmLmFwcGVuZCgiJ2NvbnN0cnVjdG9yJyA6IGFzc2ln
bmluZyBub24tY29uc3RhbnQgdG8gIik7CiAgICAgICAgIGJ1Zi5hcHBlbmQodHlwZS5nZXRDb21w
bGV0ZVN0cmluZygpKTsKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJv
ciwgYnVmLmNfc3RyKCksIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4RXJyb3IsIG5vZGUtPmdldExpbmUoKSwgYnVmLmNfc3RyKCkpOwogICAg
ICAgICBlcnJvciA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsgIAogICAgIH0KIAotICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmluYXJ5IE5vZGUg
Zm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5lKCkpOworICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCks
ICJCaW5hcnkgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOwogICAgIAogICAg
IHJldHVybiBmYWxzZTsKIH0KQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6
OnZpc2l0VW5hcnkoVmlzaXQgdgogICAgIFRTdHJpbmcgYnVmOwogICAgIGJ1Zi5hcHBlbmQoIidj
b25zdHJ1Y3RvcicgOiBhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvICIpOwogICAgIGJ1Zi5hcHBl
bmQodHlwZS5nZXRDb21wbGV0ZVN0cmluZygpKTsKLSAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEVycm9yLCBidWYuY19zdHIoKSwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBub2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigp
KTsKICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOyAgCiB9CkBAIC0xMDAsNyAr
MTAwLDcgQEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpcwogICAgICAg
ICBUU3RyaW5nIGJ1ZjsKICAgICAgICAgYnVmLmFwcGVuZCgiJ2NvbnN0cnVjdG9yJyA6IGFzc2ln
bmluZyBub24tY29uc3RhbnQgdG8gIik7CiAgICAgICAgIGJ1Zi5hcHBlbmQodHlwZS5nZXRDb21w
bGV0ZVN0cmluZygpKTsKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJv
ciwgYnVmLmNfc3RyKCksIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4RXJyb3IsIG5vZGUtPmdldExpbmUoKSwgYnVmLmNfc3RyKCkpOwogICAg
ICAgICBlcnJvciA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsgIAogICAgIH0KQEAgLTE0
NCwyNCArMTQ0LDMxIEBAIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXMK
IAogYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpc2l0LCBUSW50
ZXJtU2VsZWN0aW9uKiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgIlNlbGVjdGlvbiBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVj
dG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIlNlbGVjdGlvbiBOb2RlIGZvdW5kIGlu
IGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgZXJyb3IgPSB0cnVlOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAogdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbihUSW50
ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkKIHsKKyAgICBpZiAoIW5vZGUtPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCkpCisgICAgeworICAgICAgICAvLyBUaGUgY29uc3RhbnQgd2FzIG5vdCBpbml0aWFs
aXplZCwgdGhpcyBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gbG9nZ2VkCisgICAgICAgIGFzc2Vy
dChpbmZvU2luay5pbmZvLnNpemUoKSAhPSAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIENvbnN0YW50VW5pb24qIGxlZnRVbmlvbkFycmF5ID0gdW5pb25BcnJheTsKLSAgICBpbnQg
aW5zdGFuY2VTaXplID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90IGluc3RhbmNl
U2l6ZSA9IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwogCiAgICAgaWYgKGluZGV4ID49IGluc3RhbmNl
U2l6ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFzaW5nbGVDb25zdGFudFBhcmFtKSB7
Ci0gICAgICAgIGludCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKKyAg
ICAgICAgc2l6ZV90IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogICAg
IAogICAgICAgICBDb25zdGFudFVuaW9uICpyaWdodFVuaW9uQXJyYXkgPSBub2RlLT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpOwotICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzaXplOyBpKyspIHsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgICAg
IGlmIChpbmRleCA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaW5kZXhdID0gcmlnaHRVbmlvbkFycmF5W2ldOwpAQCAt
MTY5LDExICsxNzYsMTEgQEAgdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlv
bgogICAgICAgICAgICAgKGluZGV4KSsrOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgaW50IHRvdGFsU2l6ZSA9IGluZGV4ICsgc2l6ZTsKKyAgICAgICAgc2l6ZV90IHRvdGFsU2l6
ZSA9IGluZGV4ICsgc2l6ZTsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqcmlnaHRVbmlvbkFycmF5
ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKICAgICAgICAgaWYgKCFpc01hdHJpeCkg
ewotICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSBp
bmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBzaXplX3QgY291bnQgPSAw
OworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGluZGV4OyBpIDwgdG90YWxTaXplOyBpKysp
IHsKICAgICAgICAgICAgICAgICBpZiAoaSA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtMTg1LDkgKzE5Miw5IEBAIHZvaWQgVENvbnN0VHJhdmVyc2Vy
Ojp2aXNpdENvbnN0YW50VW5pb24KICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsgIC8vIGZvciBtYXRyaXggY29uc3RydWN0b3JzCi0g
ICAgICAgICAgICBpbnQgY291bnQgPSAwOwotICAgICAgICAgICAgaW50IGVsZW1lbnQgPSBpbmRl
eDsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSBpbmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsrKSB7
CisgICAgICAgICAgICBzaXplX3QgY291bnQgPSAwOworICAgICAgICAgICAgc2l6ZV90IGVsZW1l
bnQgPSBpbmRleDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBpbmRleDsgaSA8IHRvdGFs
U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYgKGkgPj0gaW5zdGFuY2VTaXplKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgLSBp
ID09IDAgfHwgKGkgLSBlbGVtZW50KSAlIChtYXRyaXhTaXplICsgMSkgPT0gMCApCkBAIC0yMDYs
MTQgKzIxMywxNCBAQCB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uCiAK
IGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29w
KiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgIkxvb3AgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExp
bmUoKSk7CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBu
b2RlLT5nZXRMaW5lKCksICJMb29wIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3Ii
KTsKICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFRDb25z
dFRyYXZlcnNlcjo6dmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqIG5vZGUp
CiB7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQnJh
bmNoIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5lKCkp
OworICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+
Z2V0TGluZSgpLCAiQnJhbmNoIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiKTsK
ICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjIzLDcgKzIzMCw3
IEBAIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdEJyYW5jaChWaXNpdCAKIC8vIEluZGl2aWR1
YWwgZnVuY3Rpb25zIGNhbiBiZSBpbml0aWFsaXplZCB0byAwIHRvIHNraXAgcHJvY2Vzc2luZyBv
ZiB0aGF0CiAvLyB0eXBlIG9mIG5vZGUuICBJdCdzIGNoaWxkcmVuIHdpbGwgc3RpbGwgYmUgcHJv
Y2Vzc2VkLgogLy8KLWJvb2wgVEludGVybWVkaWF0ZTo6cGFyc2VDb25zdFRyZWUoVFNvdXJjZUxv
YyBsaW5lLCBUSW50ZXJtTm9kZSogcm9vdCwgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSwgVE9w
ZXJhdG9yIGNvbnN0cnVjdG9yVHlwZSwgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSwgVFR5cGUg
dCwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFtKQorYm9vbCBUSW50ZXJtZWRpYXRlOjpwYXJzZUNv
bnN0VHJlZShjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogcm9vdCwgQ29uc3Rh
bnRVbmlvbiogdW5pb25BcnJheSwgVE9wZXJhdG9yIGNvbnN0cnVjdG9yVHlwZSwgVFN5bWJvbFRh
YmxlJiBzeW1ib2xUYWJsZSwgVFR5cGUgdCwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFtKQogewog
ICAgIGlmIChyb290ID09IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yX2NvbW1vbi52Y3hwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yX2NvbW1vbi52Y3hwcm9qCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3JfY29tbW9uLnZjeHByb2oJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjczIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/
Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHht
bG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMi
Pg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFBy
b2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmln
dXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1Bs
YXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZp
Z3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1
ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZp
Z3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9q
ZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJl
bGVhc2V8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9u
Pg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFs
cyI+DQorICAgIDxQcm9qZWN0R3VpZD57NUIzQTZEQjgtMUU3RS00MEQ3LTkyQjktREE4QUFFNjE5
RkFEfTwvUHJvamVjdEd1aWQ+DQorICAgIDxSb290TmFtZXNwYWNlPmNvbXBpbGVyPC9Sb290TmFt
ZXNwYWNlPg0KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQorICA8L1Byb3BlcnR5
R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNw
cC5EZWZhdWx0LnByb3BzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJh
dGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+DQorICAg
IDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9u
Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1
cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3Vy
YXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0Pg0KKyAg
PC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25U
eXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hv
bGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisg
IDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
Pg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3Bl
cnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0
LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3Mi
Pg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlT
aGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxB
cHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAg
PEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIg
Q29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0lt
cG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFj
cm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEw
LjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlv
bkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKENvbmZpZ3Vy
YXRpb24pXGNvbW1vblw8L0ludERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0
Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0p
XCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRp
cikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJh
dGlvbilcY29tbW9uXDwvSW50RGlyPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxh
dGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoUGxhdGZv
cm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8
SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXph
dGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9qZWN0RGlyKS4uLzskKFByb2plY3REaXIpLi4v
Li4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtf
REVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFs
UmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tz
PkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxp
YnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29t
cGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2Fybmlu
Z0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9y
PnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNh
YmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3
MDI7NDcxODslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2Fybmlu
Z3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0
ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50
Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4N
CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKTskKFByb2plY3REaXIpLi4v
OyQoUHJvamVjdERpcikuLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRl
ZmluaXRpb25zPldJTjMyO19ERUJVRztfTElCO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01J
Tk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxC
YXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0K
KyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5
Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVy
Pg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRy
ZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7
NDI0NDs0MjQ1OzQyNjc7NDUxMjs0NzAyOzQ3MTg7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8
L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21w
aWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAg
ICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhw
YW5zaW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERp
cik7JChQcm9qZWN0RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjtfQ1JUX1NFQ1VS
RV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmlu
aXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5
Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
cj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2
ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJl
YXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFt
RGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZp
Y1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0NzE4OyUo
RGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAg
PC9DbENvbXBpbGU+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRp
b25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1Rh
cmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAg
PE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5j
dGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAg
ICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKTskKFByb2plY3RE
aXIpLi4vOyQoUHJvamVjdERpcikuLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nl
c3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfTElCO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FU
RTtOT01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRl
ZDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwv
UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdM
ZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vy
cm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEw
MDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDI2Nzs0NTEyOzQ3MDI7NDcxODslKERpc2FibGVT
cGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iQ29tcGlsZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9ImRlYnVnLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEZXRlY3RDYWxsRGVw
dGguY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpYWdub3N0aWNzLmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXJlY3RpdmVIYW5kbGVyLmNwcCIgLz4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJGb3JMb29wVW5yb2xsLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJJbmZvU2luay5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5p
dGlhbGl6ZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZURsbC5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW50ZXJtZWRpYXRlLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJpbnRlcm1PdXQuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IkludGVybVRyYXZlcnNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJNYXBMb25nVmFyaWFibGVOYW1lcy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
b3Nzb3VyY2Vfd2luLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJwYXJzZUNvbnN0
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQYXJzZUhlbHBlci5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUG9vbEFsbG9jLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJRdWFsaWZpZXJBbGl2ZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iUmVtb3ZlVHJlZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2hhZGVyTGFu
Zy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU3ltYm9sVGFibGUuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InV0aWwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IlZhbGlkYXRlTGltaXRhdGlvbnMuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IlZhcmlhYmxlSW5mby5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVmFyaWFi
bGVQYWNrZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Imdsc2xhbmdfbGV4LmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJnbHNsYW5nX3RhYi5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhP
dXRwdXQuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVu
Y3lHcmFwaFRyYXZlcnNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJ0aW1pbmdc
UmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0idGltaW5nXFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcCIgLz4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxjb21waWxlclxBcnJheUJvdW5kc0NsYW1w
ZXIuY3BwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q3VzdG9t
QnVpbGQgSW5jbHVkZT0iZ2xzbGFuZy5sIj4NCisgICAgICA8TWVzc2FnZSBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgICAgPC9N
ZXNzYWdlPg0KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPEFk
ZGl0aW9uYWxJbnB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPiUoQWRkaXRpb25hbElucHV0cyk8L0FkZGl0aW9uYWxJbnB1dHM+DQor
ICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPiUoT3V0cHV0cyk8L091dHB1dHM+DQorICAgICAgPE1lc3NhZ2UgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisg
ICAgICA8L01lc3NhZ2U+DQorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgICA8L0NvbW1hbmQ+DQorICAg
ICAgPEFkZGl0aW9uYWxJbnB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3x4NjQnIj4lKEFkZGl0aW9uYWxJbnB1dHMpPC9BZGRpdGlvbmFsSW5wdXRz
Pg0KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+JShPdXRwdXRzKTwvT3V0cHV0cz4NCisgICAgICA8TWVzc2FnZSBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4NCisgICAgICA8L01lc3NhZ2U+DQorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgICAgPC9Db21t
YW5kPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5wdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiUoQWRkaXRpb25hbElucHV0cyk8L0Fk
ZGl0aW9uYWxJbnB1dHM+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JShPdXRwdXRzKTwvT3V0cHV0cz4N
CisgICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAgIDxDb21tYW5kIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4N
CisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPEFkZGl0aW9uYWxJbnB1dHMgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiUoQWRkaXRpb25h
bElucHV0cyk8L0FkZGl0aW9uYWxJbnB1dHM+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiUoT3V0cHV0cyk8
L091dHB1dHM+DQorICAgIDwvQ3VzdG9tQnVpbGQ+DQorICAgIDxDdXN0b21CdWlsZCBJbmNsdWRl
PSJnbHNsYW5nLnkiPg0KKyAgICAgIDxNZXNzYWdlIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgICA8L01lc3NhZ2U+DQorICAg
ICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciPg0KKyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JShPdXRw
dXRzKTwvT3V0cHV0cz4NCisgICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICAgIDwvTWVzc2FnZT4NCisgICAg
ICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPg0KKyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiUoT3V0cHV0cyk8
L091dHB1dHM+DQorICAgICAgPE1lc3NhZ2UgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAg
IDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPg0KKyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4lKE91
dHB1dHMpPC9PdXRwdXRzPg0KKyAgICAgIDxNZXNzYWdlIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCisgICAgICA8L01lc3NhZ2U+DQor
ICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfHg2NCciPg0KKyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JShP
dXRwdXRzKTwvT3V0cHV0cz4NCisgICAgPC9DdXN0b21CdWlsZD4NCisgIDwvSXRlbUdyb3VwPg0K
KyAgPEl0ZW1Hcm91cD4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCYXNlVHlwZXMuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkNvbW1vbi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IkNvbnN0YW50VW5pb24uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJkZWJ1
Zy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRldGVjdENhbGxEZXB0aC5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpYWdub3N0aWNzLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iRGlyZWN0aXZlSGFuZGxlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IkZvckxvb3BVbnJvbGwuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJIYXNoTmFt
ZXMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbmZvU2luay5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IkluaXRpYWxpemUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJJbml0aWFsaXplRGxsLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlh
bGl6ZUdsb2JhbHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbml0aWFsaXplUGFy
c2VDb250ZXh0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iaW50ZXJtZWRpYXRlLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibG9jYWxpbnRlcm1lZGlhdGUuaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJNYXBMb25nVmFyaWFibGVOYW1lcy5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ik1NYXAuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJv
c2luY2x1ZGUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJQYXJzZUhlbHBlci5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlBvb2xBbGxvYy5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IlF1YWxpZmllckFsaXZlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iUmVtb3ZlVHJlZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlbmFtZUZ1bmN0
aW9uLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxHTFNMQU5H
XFNoYWRlckxhbmcuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTaEhhbmRsZS5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlN5bWJvbFRhYmxlLmgiIC8+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iVHlwZXMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJ1dGls
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVmFsaWRhdGVMaW1pdGF0aW9ucy5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlZhcmlhYmxlSW5mby5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IlZhcmlhYmxlUGFja2VyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iZ2xzbGFuZ190YWIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJ0aW1pbmdc
UmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InRpbWluZ1xSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaC5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhPdXRwdXQuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxjb21waWxlclxBcnJheUJv
dW5kc0NsYW1wZXIuaCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIk
KFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRHcm91
cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJvamVj
dD4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
X2NvbW1vbi52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3JfY29tbW9uLnZjeHByb2ouZmlsdGVycwkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yX2NvbW1vbi52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcxIEBA
Civvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IFRv
b2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZl
bG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxGaWx0ZXIgSW5jbHVk
ZT0iU291cmNlIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdB
NS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0
ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5z
aW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVz
XGdlbmVyYXRlZCI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2ViOGRhMTU3LWIyOWMtNDNj
My04ODBkLTU0Njc5ZTE3NmRjNX08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0K
KyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlc1xkZXBncmFwaCI+DQorICAgICAgPFVu
aXF1ZUlkZW50aWZpZXI+e2I1NDEwZDNhLWMzYzgtNGFlNi04NDNhLWIwMDBkNjUyNjMyZX08L1Vu
aXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNv
dXJjZSBGaWxlc1x0aW1pbmciPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnthOTg0NzYxMS1k
Y2Q1LTRjODktODI2Mi1hMjJiOTZjN2M5OGR9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0Zp
bHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPg0KKyAgICAgIDxVbmlx
dWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9Vbmlx
dWVJZGVudGlmaWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hz
ZDwvRXh0ZW5zaW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVh
ZGVyIEZpbGVzXGdlbmVyYXRlZCI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezA5NGY3MTE1
LTM1ZDMtNGM2My04NzBjLWFiNWYzOTNkYzJjMn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwv
RmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlc1x0aW1pbmciPg0KKyAg
ICAgIDxVbmlxdWVJZGVudGlmaWVyPns1ZjU3NDJlOS0xNWUxLTQzYjQtYjFlNy0wYzExOGJlMTRl
MDR9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNs
dWRlPSJIZWFkZXIgRmlsZXNcZGVwZ3JhcGgiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntj
NDAwN2UzNS0zYzExLTQ0ZDYtOTVmNy1iYjgxZGI1MjgwNjh9PC9VbmlxdWVJZGVudGlmaWVyPg0K
KyAgICA8L0ZpbHRlcj4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IkNvbXBpbGVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
ZGVidWcuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEZXRlY3RDYWxsRGVwdGguY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGls
ZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaWFnbm9zdGljcy5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IkRpcmVjdGl2ZUhhbmRsZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJGb3JMb29wVW5yb2xsLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5m
b1NpbmsuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbml0aWFsaXplLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZURsbC5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IkluaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJJbnRlcm1lZGlhdGUuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJp
bnRlcm1PdXQuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbnRlcm1UcmF2ZXJzZS5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ik1hcExvbmdWYXJpYWJsZU5hbWVzLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ib3Nzb3VyY2Vfd2luLmNwcCI+DQorICAgICAgPEZp
bHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0icGFyc2VDb25zdC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IlBhcnNlSGVscGVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUG9vbEFsbG9jLmNw
cCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBp
bGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUXVhbGlmaWVyQWxpdmUuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJSZW1vdmVUcmVlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iU2hhZGVyTGFuZy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlN5bWJvbFRh
YmxlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0idXRpbC5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IlZhbGlkYXRlTGltaXRhdGlvbnMuY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJWYXJpYWJsZUluZm8uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJW
YXJpYWJsZVBhY2tlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Imdsc2xhbmdfbGV4
LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcZ2VuZXJhdGVkPC9GaWx0ZXI+DQor
ICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Imdsc2xhbmdfdGFiLmNw
cCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcZ2VuZXJhdGVkPC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVu
Y3lHcmFwaC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXGRlcGdyYXBoPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBo
XERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
c1xkZXBncmFwaDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwIj4NCisgICAgICA8Rmls
dGVyPlNvdXJjZSBGaWxlc1xkZXBncmFwaDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InRpbWluZ1xSZXN0cmljdEZy
YWdtZW50U2hhZGVyVGltaW5nLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcdGlt
aW5nPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
InRpbWluZ1xSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzXHRpbWluZzwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJBcnJheUJvdW5kc0NsYW1wZXIuY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbUdyb3Vw
Pg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCYXNlVHlwZXMuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQ29tbW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IkNvbnN0YW50VW5pb24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVidWcuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGV0ZWN0Q2FsbERlcHRoLmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IkRpYWdub3N0aWNzLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IkRpcmVjdGl2ZUhhbmRsZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRm9yTG9vcFVu
cm9sbC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbmZvU2luay5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJJbml0aWFsaXplLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IkluaXRpYWxpemVEbGwuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZUds
b2JhbHMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZVBhcnNlQ29udGV4
dC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJpbnRlcm1lZGlhdGUuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0ibG9jYWxpbnRlcm1lZGlhdGUuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iTU1hcC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJvc2luY2x1ZGUuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iUGFyc2VIZWxwZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iUG9vbEFsbG9jLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlF1YWxpZmllckFs
aXZlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlbW92ZVRyZWUuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iUmVuYW1lRnVuY3Rpb24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cLi5caW5jbHVkZVxHTFNMQU5HXFNoYWRlckxhbmcuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iU2hIYW5kbGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU3ltYm9s
VGFibGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVHlwZXMuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0idXRpbC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmls
dGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJWYWxpZGF0
ZUxpbWl0YXRpb25zLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQor
ICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlZhcmlhYmxlSW5mby5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJWYXJpYWJsZVBhY2tlci5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJnbHNsYW5nX3RhYi5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlc1xnZW5lcmF0ZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0idGltaW5nXFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcdGltaW5nPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InRpbWluZ1xSZXN0cmljdFZlcnRleFNoYWRlclRp
bWluZy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1x0aW1pbmc8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5k
ZW5jeUdyYXBoLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXGRlcGdyYXBoPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImRlcGdyYXBo
XERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNc
ZGVwZ3JhcGg8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ikhhc2hOYW1lcy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJBcnJheUJvdW5kc0NsYW1wZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+
DQorICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSJnbHNsYW5nLmwiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ3VzdG9tQnVpbGQ+DQorICAgIDxDdXN0b21C
dWlsZCBJbmNsdWRlPSJnbHNsYW5nLnkiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ3VzdG9tQnVpbGQ+DQorICA8L0l0ZW1Hcm91cD4NCis8L1Byb2plY3Q+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3JfaGxzbC52Y3hwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yX2hsc2wudmN4cHJv
agkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yX2hsc2wudmN4cHJvagkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjQgQEAKK++7
vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFByb2plY3QgRGVmYXVs
dFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFz
Lm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8SXRlbUdyb3VwIExh
YmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24g
SW5jbHVkZT0iRGVidWd8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25m
aWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJv
amVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJE
ZWJ1Z3x4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0K
KyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0
aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+
DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8
UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0K
KyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPg0KKyAgICAg
IDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3Jt
Png2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICA8L0l0ZW1H
cm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4NCisgICAgPFByb2plY3RH
dWlkPns1NjIwRjBFNC02QzQzLTQ5QkMtQTE3OC1CODA0RTFBMEMzQTd9PC9Qcm9qZWN0R3VpZD4N
CisgICAgPFJvb3ROYW1lc3BhY2U+Q3Jvc3NDb21waWxlckhMU0w8L1Jvb3ROYW1lc3BhY2U+DQor
ICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisg
IDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQu
cHJvcHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQor
ICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4N
CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVBy
b2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Q
cm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4N
CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBl
Pg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVy
dHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAg
IDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisg
ICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dy
YW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAg
IDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisg
ICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3Jv
dXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5w
cm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0KKyAg
PC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMi
Pg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRh
UGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0i
UHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9y
dEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdy
b3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9y
dCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIu
cHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0K
KyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAv
Pg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAy
MTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikk
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKENvbmZpZ3VyYXRpb24p
XGhsc2xcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3Vy
YXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlvbilcaGxzbFw8
L0ludERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1
cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlv
bilcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChD
b25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25m
aWd1cmF0aW9uKVw8L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2Fi
bGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
JChQcm9qZWN0RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9O
T19XQVJOSU5HUztOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1
aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNS
dW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8
L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2
ZWw+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJv
cj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7
NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjslKERpc2FibGVTcGVjaWZpY1dhcm5p
bmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxD
bENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0K
KyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rp
b25FeHBhbnNpb24+DQorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNG
dW5jdGlvbnM+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0
RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9OT19XQVJOSU5H
UztOT01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRl
ZDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1
bmN0aW9uTGV2ZWxMaW5raW5nPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5n
TGV2ZWw+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNF
cnJvcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0Rl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQx
MDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjslKERpc2FibGVTcGVjaWZpY1dh
cm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgPE1p
ZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQor
ICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2Fi
bGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
JChQcm9qZWN0RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9O
T19XQVJOSU5HUztOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1
aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNS
dW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8
L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2
ZWw+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7
NDI0NDs0MjQ1OzQ1MTI7NDcwMjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNw
ZWNpZmljV2FybmluZ3M+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURh
dGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vy
cm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8TWlk
bD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisg
ICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3Bl
ZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+QW55U3Vp
dGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlv
bnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPiQoUHJvamVjdERpcikuLi87JChQcm9qZWN0RGlyKS4uLy4uL2luY2x1ZGU7JShB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19MSUI7X0NS
VF9TRUNVUkVfTk9fV0FSTklOR1M7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFJ1bnRpbWVM
aWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxGdW5jdGlvbkxl
dmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8UHJlY29tcGls
ZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xl
dmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5n
cz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7JShEaXNhYmxlU3BlY2lm
aWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxEZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisg
ICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtR3JvdXA+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29kZUdlbkhMU0wuY3BwIiAvPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IkRldGVjdERpc2NvbnRpbnVpdHkuY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ik91dHB1dEhMU0wuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IlNlYXJjaFN5bWJvbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVHJhbnNsYXRv
ckhMU0wuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3Vp
dC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVW5pZm9ybS5jcHAiIC8+DQorICA8
L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGV0
ZWN0RGlzY29udGludWl0eS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik91dHB1dEhM
U0wuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTZWFyY2hTeW1ib2wuaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJUcmFuc2xhdG9ySExTTC5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IlVuaWZvcm0uaCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRH
cm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJv
amVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9obHNsLnZjeHByb2ouZmlsdGVycwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
cl9obHNsLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yX2hsc2wudmN4cHJvai5maWx0ZXJzCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3Nj
aGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3Jv
dXA+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4NCisgICAgICA8VW5pcXVl
SWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVl
SWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7
aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0
ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5
OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4NCisg
ICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+DQor
ICAgIDwvRmlsdGVyPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IkNvZGVHZW5ITFNMLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2Ug
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iRGV0ZWN0RGlzY29udGludWl0eS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ik91
dHB1dEhMU0wuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTZWFyY2hTeW1ib2wuY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGls
ZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJUcmFuc2xhdG9ySExTTC5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdC5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IlVuaWZvcm0uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91
cD4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJEZXRlY3REaXNjb250aW51aXR5LmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik91dHB1dEhMU0wuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iU2VhcmNoU3ltYm9sLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRyYW5zbGF0
b3JITFNMLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdC5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJVbmlmb3JtLmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgPC9JdGVtR3JvdXA+
DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvNjRiaXQtdG9rZW5pemVy
LXNhZmV0eS5wYXRjaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yLzY0Yml0LXRva2VuaXplci1zYWZldHkucGF0Y2gJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yLzY0Yml0LXRva2VuaXplci1zYWZldHkucGF0Y2gJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTU5IEBACistLS0gYS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAKKysr
KyBiL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAorQEAgLTU2LDYgKzU2
LDcgQEAgdHlwZWRlZiBpbnQxNl90IGZsZXhfaW50MTZfdDsKKyB0eXBlZGVmIHVpbnQxNl90IGZs
ZXhfdWludDE2X3Q7CisgdHlwZWRlZiBpbnQzMl90IGZsZXhfaW50MzJfdDsKKyB0eXBlZGVmIHVp
bnQzMl90IGZsZXhfdWludDMyX3Q7CisrdHlwZWRlZiB1aW50NjRfdCBmbGV4X3VpbnQ2NF90Owor
ICNlbHNlCisgdHlwZWRlZiBzaWduZWQgY2hhciBmbGV4X2ludDhfdDsKKyB0eXBlZGVmIHNob3J0
IGludCBmbGV4X2ludDE2X3Q7CitAQCAtMTc5LDYgKzE4MCwxMSBAQCB0eXBlZGVmIHZvaWQqIHl5
c2Nhbl90OworIHR5cGVkZWYgc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSAqWVlfQlVGRkVSX1NUQVRF
OworICNlbmRpZgorIAorKyNpZm5kZWYgWVlfVFlQRURFRl9ZWV9TSVpFX1QKKysjZGVmaW5lIFlZ
X1RZUEVERUZfWVlfU0laRV9UCisrdHlwZWRlZiBzaXplX3QgeXlfc2l6ZV90OworKyNlbmRpZgor
KworICNkZWZpbmUgRU9CX0FDVF9DT05USU5VRV9TQ0FOIDAKKyAjZGVmaW5lIEVPQl9BQ1RfRU5E
X09GX0ZJTEUgMQorICNkZWZpbmUgRU9CX0FDVF9MQVNUX01BVENIIDIKK0BAIC0yMDEsMTEgKzIw
Nyw2IEBAIHR5cGVkZWYgc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSAqWVlfQlVGRkVSX1NUQVRFOwor
IAorICNkZWZpbmUgdW5wdXQoYykgeXl1bnB1dCggYywgeXlnLT55eXRleHRfcHRyICwgeXlzY2Fu
bmVyICkKKyAKKy0jaWZuZGVmIFlZX1RZUEVERUZfWVlfU0laRV9UCistI2RlZmluZSBZWV9UWVBF
REVGX1lZX1NJWkVfVAorLXR5cGVkZWYgc2l6ZV90IHl5X3NpemVfdDsKKy0jZW5kaWYKKy0KKyAj
aWZuZGVmIFlZX1NUUlVDVF9ZWV9CVUZGRVJfU1RBVEUKKyAjZGVmaW5lIFlZX1NUUlVDVF9ZWV9C
VUZGRVJfU1RBVEUKKyBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlCitAQCAtMjIzLDcgKzIyNCw3IEBA
IHN0cnVjdCB5eV9idWZmZXJfc3RhdGUKKyAJLyogTnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZCBp
bnRvIHl5X2NoX2J1Ziwgbm90IGluY2x1ZGluZyBFT0IKKyAJICogY2hhcmFjdGVycy4KKyAJICov
CistCWludCB5eV9uX2NoYXJzOworKwl5eV9zaXplX3QgeXlfbl9jaGFyczsKKyAKKyAJLyogV2hl
dGhlciB3ZSAib3duIiB0aGUgYnVmZmVyIC0gaS5lLiwgd2Uga25vdyB3ZSBjcmVhdGVkIGl0LAor
IAkgKiBhbmQgY2FuIHJlYWxsb2MoKSBpdCB0byBncm93IGl0LCBhbmQgc2hvdWxkIGZyZWUoKSBp
dCB0bworQEAgLTMwMiw3ICszMDMsNyBAQCBzdGF0aWMgdm9pZCBwcF9pbml0X2J1ZmZlciAoWVlf
QlVGRkVSX1NUQVRFIGIsRklMRSAqZmlsZSAseXlzY2FuX3QgeXlzY2FubmVyICk7CisgCisgWVlf
QlVGRkVSX1NUQVRFIHBwX3NjYW5fYnVmZmVyIChjaGFyICpiYXNlLHl5X3NpemVfdCBzaXplICx5
eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyBZWV9CVUZGRVJfU1RBVEUgcHBfc2Nhbl9zdHJpbmcgKHl5
Y29uc3QgY2hhciAqeXlfc3RyICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKy1ZWV9CVUZGRVJfU1RB
VEUgcHBfc2Nhbl9ieXRlcyAoeXljb25zdCBjaGFyICpieXRlcyxpbnQgbGVuICx5eXNjYW5fdCB5
eXNjYW5uZXIgKTsKKytZWV9CVUZGRVJfU1RBVEUgcHBfc2Nhbl9ieXRlcyAoeXljb25zdCBjaGFy
ICpieXRlcyx5eV9zaXplX3QgbGVuICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAKKyB2b2lkICpw
cGFsbG9jICh5eV9zaXplX3QgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworIHZvaWQgKnBwcmVhbGxv
YyAodm9pZCAqLHl5X3NpemVfdCAseXlzY2FuX3QgeXlzY2FubmVyICk7CitAQCAtMzUzLDcgKzM1
NCw3IEBAIHN0YXRpYyB2b2lkIHl5X2ZhdGFsX2Vycm9yICh5eWNvbnN0IGNoYXIgbXNnW10gLHl5
c2Nhbl90IHl5c2Nhbm5lciApOworICAqLworICNkZWZpbmUgWVlfRE9fQkVGT1JFX0FDVElPTiBc
CisgCXl5Zy0+eXl0ZXh0X3B0ciA9IHl5X2JwOyBcCistCXl5bGVuZyA9IChzaXplX3QpICh5eV9j
cCAtIHl5X2JwKTsgXAorKwl5eWxlbmcgPSAoeXlfc2l6ZV90KSAoeXlfY3AgLSB5eV9icCk7IFwK
KyAJeXlnLT55eV9ob2xkX2NoYXIgPSAqeXlfY3A7IFwKKyAJKnl5X2NwID0gJ1wwJzsgXAorIAl5
eWctPnl5X2NfYnVmX3AgPSB5eV9jcDsKK0BAIC01NzksOCArNTgwLDggQEAgc3RydWN0IHl5Z3V0
c190CisgICAgIHNpemVfdCB5eV9idWZmZXJfc3RhY2tfbWF4OyAvKio8IGNhcGFjaXR5IG9mIHN0
YWNrLiAqLworICAgICBZWV9CVUZGRVJfU1RBVEUgKiB5eV9idWZmZXJfc3RhY2s7IC8qKjwgU3Rh
Y2sgYXMgYW4gYXJyYXkuICovCisgICAgIGNoYXIgeXlfaG9sZF9jaGFyOworLSAgICBpbnQgeXlf
bl9jaGFyczsKKy0gICAgaW50IHl5bGVuZ19yOworKyAgICB5eV9zaXplX3QgeXlfbl9jaGFyczsK
KysgICAgeXlfc2l6ZV90IHl5bGVuZ19yOworICAgICBjaGFyICp5eV9jX2J1Zl9wOworICAgICBp
bnQgeXlfaW5pdDsKKyAgICAgaW50IHl5X3N0YXJ0OworQEAgLTYzNyw3ICs2MzgsNyBAQCBGSUxF
ICpwcGdldF9vdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorIHZvaWQgcHBzZXRfb3V0ICAo
RklMRSAqIG91dF9zdHIgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorLWludCBwcGdldF9sZW5n
ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyt5eV9zaXplX3QgcHBnZXRfbGVuZyAoeXlzY2FuX3Qg
eXlzY2FubmVyICk7CisgCisgY2hhciAqcHBnZXRfdGV4dCAoeXlzY2FuX3QgeXlzY2FubmVyICk7
CisgCitAQCAtNzA0LDcgKzcwNSw3IEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nh
bm5lciApOworIAlpZiAoIFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfaXNfaW50ZXJhY3Rp
dmUgKSBcCisgCQl7IFwKKyAJCWludCBjID0gJyonOyBcCistCQlpbnQgbjsgXAorKwkJeXlfc2l6
ZV90IG47IFwKKyAJCWZvciAoIG4gPSAwOyBuIDwgbWF4X3NpemUgJiYgXAorIAkJCSAgICAgKGMg
PSBnZXRjKCB5eWluICkpICE9IEVPRiAmJiBjICE9ICdcbic7ICsrbiApIFwKKyAJCQlidWZbbl0g
PSAoY2hhcikgYzsgXAorQEAgLTEzMzgsNyArMTMzOSw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25l
eHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgCisgCWVsc2UKKyAJCXsKKy0JCQlpbnQg
bnVtX3RvX3JlYWQgPQorKwkJCXl5X3NpemVfdCBudW1fdG9fcmVhZCA9CisgCQkJWVlfQ1VSUkVO
VF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJlcl90b19tb3ZlIC0gMTsKKyAKKyAJ
CXdoaWxlICggbnVtX3RvX3JlYWQgPD0gMCApCitAQCAtMTM1Miw3ICsxMzUzLDcgQEAgc3RhdGlj
IGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAKKyAJCQlpZiAo
IGItPnl5X2lzX291cl9idWZmZXIgKQorIAkJCQl7CistCQkJCWludCBuZXdfc2l6ZSA9IGItPnl5
X2J1Zl9zaXplICogMjsKKysJCQkJeXlfc2l6ZV90IG5ld19zaXplID0gYi0+eXlfYnVmX3NpemUg
KiAyOworIAorIAkJCQlpZiAoIG5ld19zaXplIDw9IDAgKQorIAkJCQkJYi0+eXlfYnVmX3NpemUg
Kz0gYi0+eXlfYnVmX3NpemUgLyA4OworQEAgLTEzODMsNyArMTM4NCw3IEBAIHN0YXRpYyBpbnQg
eXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgCisgCQkvKiBSZWFkIGlu
IG1vcmUgZGF0YS4gKi8KKyAJCVlZX0lOUFVUKCAoJllZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+
eXlfY2hfYnVmW251bWJlcl90b19tb3ZlXSksCistCQkJeXlnLT55eV9uX2NoYXJzLCAoc2l6ZV90
KSBudW1fdG9fcmVhZCApOworKwkJCXl5Zy0+eXlfbl9jaGFycywgbnVtX3RvX3JlYWQgKTsKKyAK
KyAJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfbl9jaGFycyA9IHl5Zy0+eXlfbl9jaGFy
czsKKyAJCX0KK0BAIC0xNTA4LDcgKzE1MDksNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1
ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQorIAorIAkJZWxzZQorIAkJCXsgLyogbmVlZCBtb3Jl
IGlucHV0ICovCistCQkJaW50IG9mZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0
X3B0cjsKKysJCQl5eV9zaXplX3Qgb2Zmc2V0ID0geXlnLT55eV9jX2J1Zl9wIC0geXlnLT55eXRl
eHRfcHRyOworIAkJCSsreXlnLT55eV9jX2J1Zl9wOworIAorIAkJCXN3aXRjaCAoIHl5X2dldF9u
ZXh0X2J1ZmZlciggeXlzY2FubmVyICkgKQorQEAgLTE3ODgsNyArMTc4OSw3IEBAIHZvaWQgcHBw
b3BfYnVmZmVyX3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgICovCisgc3RhdGljIHZvaWQg
cHBlbnN1cmVfYnVmZmVyX3N0YWNrICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgeworLQlpbnQgbnVt
X3RvX2FsbG9jOworKwl5eV9zaXplX3QgbnVtX3RvX2FsbG9jOworICAgICBzdHJ1Y3QgeXlndXRz
X3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisgCisgCWlmICgheXlnLT55
eV9idWZmZXJfc3RhY2spIHsKK0BAIC0xODg2LDEyICsxODg3LDExIEBAIFlZX0JVRkZFUl9TVEFU
RSBwcF9zY2FuX3N0cmluZyAoeXljb25zdCBjaGFyICogeXlzdHIgLCB5eXNjYW5fdCB5eXNjYW5u
ZXIpCisgICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCisgICogQHJldHVy
biB0aGUgbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlciBzdGF0ZSBvYmplY3QuCisgICovCistWVlfQlVG
RkVSX1NUQVRFIHBwX3NjYW5fYnl0ZXMgICh5eWNvbnN0IGNoYXIgKiB5eWJ5dGVzLCBpbnQgIF95
eWJ5dGVzX2xlbiAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKKytZWV9CVUZGRVJfU1RBVEUgcHBfc2Nh
bl9ieXRlcyAgKHl5Y29uc3QgY2hhciAqIHl5Ynl0ZXMsIHl5X3NpemVfdCAgX3l5Ynl0ZXNfbGVu
ICwgeXlzY2FuX3QgeXlzY2FubmVyKQorIHsKKyAJWVlfQlVGRkVSX1NUQVRFIGI7CisgCWNoYXIg
KmJ1ZjsKKy0JeXlfc2l6ZV90IG47CistCWludCBpOworKwl5eV9zaXplX3QgbiwgaTsKKyAgICAg
CisgCS8qIEdldCBtZW1vcnkgZm9yIGZ1bGwgYnVmZmVyLCBpbmNsdWRpbmcgc3BhY2UgZm9yIHRy
YWlsaW5nIEVPQidzLiAqLworIAluID0gX3l5Ynl0ZXNfbGVuICsgMjsKK0BAIC0yMDAxLDcgKzIw
MDEsNyBAQCBGSUxFICpwcGdldF9vdXQgICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgLyoqIEdldCB0
aGUgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuLgorICAqIEBwYXJhbSB5eXNjYW5uZXIgVGhl
IHNjYW5uZXIgb2JqZWN0LgorICAqLworLWludCBwcGdldF9sZW5nICAoeXlzY2FuX3QgeXlzY2Fu
bmVyKQorK3l5X3NpemVfdCBwcGdldF9sZW5nICAoeXlzY2FuX3QgeXlzY2FubmVyKQorIHsKKyAg
ICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOwor
ICAgICByZXR1cm4geXlsZW5nOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAko
cmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogI2xpbmUgMTYgIi4vVG9rZW5pemVyLmwiCiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDExIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmln
aHQgKGMpIDIwMTEtMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
IC8vCkBAIC0zNTksOCArMzU5LDggQEAgc3RhdGljIHZvaWQgeXlfZmF0YWxfZXJyb3IgKHl5Y29u
c3QgY2hhcgogCSp5eV9jcCA9ICdcMCc7IFwKIAl5eWctPnl5X2NfYnVmX3AgPSB5eV9jcDsKIAot
I2RlZmluZSBZWV9OVU1fUlVMRVMgMzcKLSNkZWZpbmUgWVlfRU5EX09GX0JVRkZFUiAzOAorI2Rl
ZmluZSBZWV9OVU1fUlVMRVMgMzgKKyNkZWZpbmUgWVlfRU5EX09GX0JVRkZFUiAzOQogLyogVGhp
cyBzdHJ1Y3QgaXMgbm90IHVzZWQgaW4gdGhpcyBzY2FubmVyLAogICAgYnV0IGl0cyBwcmVzZW5j
ZSBpcyBuZWNlc3NhcnkuICovCiBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwpAQCAtMzY4LDE3ICszNjgs
MTcgQEAgc3RydWN0IHl5X3RyYW5zX2luZm8KIAlmbGV4X2ludDMyX3QgeXlfdmVyaWZ5OwogCWZs
ZXhfaW50MzJfdCB5eV9ueHQ7CiAJfTsKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9h
Y2NlcHRbODRdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2NlcHRbODddID0K
ICAgICB7ICAgMCwKLSAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAzOCwgICAzNiwgICAz
NCwgICAzNSwgICAzNSwgICAzMywKKyAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAzOSwg
ICAzNywgICAzNCwgICAzNSwgICAzNSwgICAzMywKICAgICAgICAgNywgICAzMywgICAzMywgICAz
MywgICAzMywgICAzMywgICAzMywgICAzMywgICAzMywgICAgOSwKLSAgICAgICAgOSwgICAzMywg
ICAzMywgICAzMywgICAgOCwgICAzMywgICAzMywgICAgMywgICAgNSwgICAgNSwKLSAgICAgICAg
NCwgICAzNCwgICAzNSwgICAxOSwgICAyNywgICAyMCwgICAzMCwgICAyNSwgICAxMiwgICAyMywK
LSAgICAgICAxMywgICAyNCwgICAxMCwgICAgMiwgICAgMSwgICAyNiwgICAxMCwgICAgOSwgICAx
MSwgICAxMSwKLSAgICAgICAxMSwgICAxMSwgICAgOSwgICAxNCwgICAxNiwgICAxOCwgICAxNywg
ICAxNSwgICAgOCwgICAzMSwKLSAgICAgICAyMSwgICAzMiwgICAyMiwgICAgMywgICAgNSwgICAg
NiwgICAxMSwgICAxMCwgICAxMSwgICAgMSwKLSAgICAgICAxMCwgICAxMSwgICAgMCwgICAxMCwg
ICAgOSwgICAyOCwgICAyOSwgICAgMCwgICAxMCwgICAxMCwKLSAgICAgICAxMCwgICAxMCwgICAg
MAorICAgICAgICA5LCAgIDMzLCAgIDMzLCAgIDMzLCAgICA4LCAgIDM3LCAgIDMzLCAgIDMzLCAg
ICAzLCAgICA1LAorICAgICAgICA1LCAgICA0LCAgIDM0LCAgIDM1LCAgIDE5LCAgIDI3LCAgIDIw
LCAgIDMwLCAgIDI1LCAgIDEyLAorICAgICAgIDIzLCAgIDEzLCAgIDI0LCAgIDEwLCAgICAyLCAg
ICAxLCAgIDI2LCAgIDEwLCAgICA5LCAgIDExLAorICAgICAgIDExLCAgIDExLCAgIDExLCAgICA5
LCAgIDE0LCAgIDE2LCAgIDE4LCAgIDE3LCAgIDE1LCAgICA4LAorICAgICAgIDM2LCAgIDM2LCAg
IDMxLCAgIDIxLCAgIDMyLCAgIDIyLCAgICAzLCAgICA1LCAgICA2LCAgIDExLAorICAgICAgIDEw
LCAgIDExLCAgICAxLCAgIDEwLCAgIDExLCAgICAwLCAgIDEwLCAgICA5LCAgIDI4LCAgIDI5LAor
ICAgICAgICAwLCAgIDEwLCAgIDEwLCAgIDEwLCAgIDEwLCAgICAwCiAgICAgfSA7CiAKIHN0YXRp
YyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9lY1syNTZdID0KQEAgLTM5MiwxMSArMzkyLDExIEBA
IHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9lY1syNTZdID0KICAgICAgICAxOSwgICAy
MCwgICAgOSwgICAgMSwgICAyMSwgICAyMSwgICAyMSwgICAyMSwgICAyMiwgICAyMSwKICAgICAg
ICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAy
MywKICAgICAgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyNCwg
ICAyMywgICAyMywKLSAgICAgICAgOSwgICAgMSwgICAgOSwgICAyNSwgICAyMywgICAgMSwgICAy
MSwgICAyMSwgICAyMSwgICAyMSwKKyAgICAgICAgOSwgICAyNSwgICAgOSwgICAyNiwgICAyMywg
ICAgMSwgICAyMSwgICAyMSwgICAyMSwgICAyMSwKIAogICAgICAgIDIyLCAgIDIxLCAgIDIzLCAg
IDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLAogICAgICAgIDIzLCAgIDIz
LCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDI0LAotICAgICAg
IDIzLCAgIDIzLCAgICA5LCAgIDI2LCAgICA5LCAgICA5LCAgICAxLCAgICAxLCAgICAxLCAgICAx
LAorICAgICAgIDIzLCAgIDIzLCAgICA5LCAgIDI3LCAgICA5LCAgICA5LCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLAogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLAogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLApAQCAtNDEzLDg1ICs0MTMsODkg
QEAgc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQogICAgICAgICAxLCAg
ICAxLCAgICAxLCAgICAxLCAgICAxCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50
MzJfdCB5eV9tZXRhWzI3XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfbWV0YVsy
OF0gPQogICAgIHsgICAwLAogICAgICAgICAxLCAgICAxLCAgICAyLCAgICAyLCAgICAxLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLCAgICAzLAogICAgICAgICAxLCAgICAxLCAgICA0LCAgICAxLCAg
ICA1LCAgICA1LCAgICA1LCAgICAxLCAgICAxLCAgICAxLAotICAgICAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICAxLCAgICAxCisgICAgICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDEsICAg
IDEsICAgIDEKICAgICB9IDsKIAotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Jhc2Vb
ODldID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9iYXNlWzkyXSA9CiAgICAgeyAg
IDAsCi0gICAgICAgIDAsICAgIDAsICAgMjQsICAgMjYsICAxNTgsICAxNTksICAxNTAsICAxNTks
ICAxNDUsICAxMjgsCi0gICAgICAxNTksICAxMTIsICAgMjMsICAxNTksICAxMTEsICAgMjEsICAg
MjUsICAgMzAsICAgMjksICAgMzYsCi0gICAgICAgNDYsICAgMzYsICAxMDAsICAgNDUsICAgIDAs
ICAgMTYsICAgNDcsICAgIDAsICAxNTksICAgODQsCi0gICAgICAgNjUsICAgNzMsICAxNTksICAx
NTksICAxNTksICAxNTksICAxNTksICAxNTksICAxNTksICAxNTksCi0gICAgICAxNTksICAxNTks
ICAgNjEsICAxNTksICAgIDAsICAxNTksICAgNzMsICAgMzIsICAgNTYsICAgODMsCi0gICAgICAg
OTUsICAgNjgsICAgIDAsICAgMzEsICAxNTksICAxNTksICAxNTksICAgMTksICAgIDAsICAxNTks
Ci0gICAgICAxNTksICAxNTksICAxNTksICAgIDAsICAxNTksICAxNTksICAgOTgsICAgIDAsICAx
MTAsICAgIDAsCi0gICAgICAgIDAsICAxMTcsICAgNTIsICAgOTAsICAgODAsICAxNTksICAxNTks
ICAxMDEsICAgOTcsICAxMTIsCi0gICAgICAxMjAsICAxMjMsICAxNTksICAxNDAsICAgMjgsICAx
NDUsICAxNTAsICAxNTIKKyAgICAgICAgMCwgICAgMCwgICAyNSwgICAyNywgIDE2MiwgIDE2Mywg
IDE1OSwgIDE2MywgIDE1MiwgIDEzMiwKKyAgICAgIDE2MywgIDEzMSwgICAyNCwgIDE2MywgIDEx
NiwgICAyMiwgICAyNiwgICAzMSwgICAzMCwgICAzNywKKyAgICAgICA0MCwgICA0NCwgIDExNSwg
ICA0NiwgICAgMCwgICA2NCwgICA1MCwgICAxNSwgICAgMCwgIDE2MywKKyAgICAgIDEyNCwgICA5
MSwgICA4OCwgIDE2MywgIDE2MywgIDE2MywgIDE2MywgIDE2MywgIDE2MywgIDE2MywKKyAgICAg
IDE2MywgIDE2MywgIDE2MywgICA2NCwgIDE2MywgICAgMCwgIDE2MywgICA3NiwgICA1NCwgICA1
OCwKKyAgICAgICA3OSwgICA5MSwgICA5MSwgICAgMCwgICA1NiwgIDE2MywgIDE2MywgIDE2Mywg
ICAzMiwgICAgMCwKKyAgICAgIDE2MywgICAzNiwgIDE2MywgIDE2MywgIDE2MywgIDE2MywgICAg
MCwgIDE2MywgIDE2MywgICA5NCwKKyAgICAgICAgMCwgIDEwNiwgICAgMCwgICAgMCwgIDExMywg
ICA1NSwgICA3MiwgIDExMywgIDE2MywgIDE2MywKKyAgICAgIDExNiwgIDEwMSwgIDEwOCwgIDEy
MywgIDEyNiwgIDE2MywgIDE0MywgICAzMSwgIDE0OCwgIDE1MywKKyAgICAgIDE1NQorCiAgICAg
fSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9kZWZbODldID0KK3N0YXRpYyB5
eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9kZWZbOTJdID0KICAgICB7ICAgMCwKLSAgICAgICA4Mywg
ICAgMSwgICA4NCwgICA4NCwgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywKLSAg
ICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4Mywg
ICA4MywKLSAgICAgICAyMCwgICA4MywgICA4MywgICA4MywgICA4NSwgICA4MywgICA4MywgICA4
NiwgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4Mywg
ICA4MywgICA4MywgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4
NywgICA4MywgICA4MywgICAyMCwgICAyMCwgICA0NywKLSAgICAgICA1MCwgICA4OCwgICAyMSwg
ICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4NSwgICA4MywKLSAgICAgICA4MywgICA4
MywgICA4MywgICA4NiwgICA4MywgICA4MywgICA0MywgICA0MywgICA2NywgICA4NywKLSAgICAg
ICA0NywgICA1MCwgICA4MywgICA1MSwgICA4OCwgICA4MywgICA4MywgICA4MywgICA2OSwgICA3
MiwKLSAgICAgICA4MywgICA4MywgICAgMCwgICA4MywgICA4MywgICA4MywgICA4MywgICA4Mwor
ICAgICAgIDg2LCAgICAxLCAgIDg3LCAgIDg3LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2
LCAgIDg2LAorICAgICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAg
IDg2LCAgIDg2LCAgIDg2LAorICAgICAgIDIwLCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg4LCAgIDg2
LCAgIDg2LCAgIDg2LCAgIDg5LCAgIDg2LAorICAgICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAg
IDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LAorICAgICAgIDg2LCAgIDg2LCAgIDg2
LCAgIDg2LCAgIDg2LCAgIDkwLCAgIDg2LCAgIDg2LCAgIDIwLCAgIDIwLAorICAgICAgIDQ4LCAg
IDUxLCAgIDkxLCAgIDIxLCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg4LAorICAg
ICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg5LCAgIDg2LCAgIDg2LCAg
IDQ0LAorICAgICAgIDQ0LCAgIDcwLCAgIDkwLCAgIDQ4LCAgIDUxLCAgIDg2LCAgIDUyLCAgIDkx
LCAgIDg2LCAgIDg2LAorICAgICAgIDg2LCAgIDcyLCAgIDc1LCAgIDg2LCAgIDg2LCAgICAwLCAg
IDg2LCAgIDg2LCAgIDg2LCAgIDg2LAorICAgICAgIDg2CisKICAgICB9IDsKIAotc3RhdGljIHl5
Y29uc3QgZmxleF9pbnQxNl90IHl5X254dFsxODZdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50
MTZfdCB5eV9ueHRbMTkxXSA9CiAgICAgeyAgIDAsCiAgICAgICAgIDYsICAgIDcsICAgIDgsICAg
IDksICAgMTAsICAgMTEsICAgMTIsICAgMTMsICAgMTQsICAgMTUsCiAgICAgICAgMTYsICAgMTcs
ICAgMTgsICAgMTksICAgMjAsICAgMjEsICAgMjEsICAgMjIsICAgMjMsICAgMjQsCi0gICAgICAg
MjUsICAgMjUsICAgMjUsICAgMjUsICAgMjYsICAgMjcsICAgMjksICAgMzAsICAgMjksICAgMzAs
Ci0gICAgICAgMzYsICAgMzksICAgNTksICAgMzEsICAgNjAsICAgMzEsICAgNDEsICAgNzcsICAg
NDQsICAgNDAsCi0gICAgICAgNjEsICAgMzcsICAgNDUsICAgNDIsICAgNDMsICAgNDMsICAgNDMs
ICAgNDYsICAgNDcsICAgNzYsCi0gICAgICAgNDgsICAgNDgsICAgNDksICAgNTQsICAgNTUsICAg
NTAsICAgNTAsICAgNTEsICAgNTAsICAgNTIsCi0gICAgICAgNTMsICAgNTMsICAgNTMsICAgNTcs
ICAgNTgsICAgNjIsICAgODEsICAgODEsICAgODEsICAgNTAsCi0gICAgICAgNDksICAgNDksICAg
NjMsICAgNjcsICAgMzIsICAgNjgsICAgNjgsICAgNjgsICAgNjYsICAgNTAsCi0gICAgICAgNTAs
ICAgNjcsICAgNjksICAgNjcsICAgNjcsICAgNTAsICAgNjUsICAgNzEsICAgNzEsICAgNzEsCi0g
ICAgICAgNTAsICAgNTAsICAgNTAsICAgNTAsICAgNzIsICAgNTAsICAgNTAsICAgNTAsICAgNTAs
ICAgNTAsCi0KLSAgICAgICA4MywgICA4MywgICA1MCwgICA1MCwgICA1MCwgICA3MywgICA3Mywg
ICA4MywgICA4MywgICA3NCwKLSAgICAgICA3NCwgICA3NCwgICA2NywgICA2NywgICA2NywgICA4
MiwgICA4MiwgICA4MiwgICA1NiwgICA2NywKLSAgICAgICA3OCwgICA3OCwgICA4MywgICA4Mywg
ICA3OSwgICA3OSwgICA3OSwgICA3OCwgICA3OCwgICAzOCwKLSAgICAgICAzNSwgICA4MCwgICA4
MCwgICA4MCwgICA4MSwgICA4MSwgICA4MSwgICA4MiwgICA4MiwgICA4MiwKLSAgICAgICAyOCwg
ICAyOCwgICAyOCwgICAyOCwgICAyOCwgICA2NCwgICAzNCwgICAzMywgICA2NCwgICA2NCwKLSAg
ICAgICA3MCwgICAzMiwgICA3MCwgICA3MCwgICA3MCwgICA3NSwgICA3NSwgICA4MywgICAgNSwg
ICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4
MywgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4Mywg
ICA4MywgICA4MywgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4
MworICAgICAgIDI1LCAgIDI1LCAgIDI1LCAgIDI1LCAgIDI2LCAgIDI3LCAgIDI4LCAgIDMwLCAg
IDMxLCAgIDMwLAorICAgICAgIDMxLCAgIDM3LCAgIDQwLCAgIDY1LCAgIDMyLCAgIDYwLCAgIDMy
LCAgIDQyLCAgIDYxLCAgIDQ1LAorICAgICAgIDQxLCAgIDY2LCAgIDM4LCAgIDQ2LCAgIDQzLCAg
IDQ0LCAgIDQ0LCAgIDQ0LCAgIDQ3LCAgIDQ4LAorICAgICAgIDgwLCAgIDQ5LCAgIDQ5LCAgIDUw
LCAgIDU0LCAgIDU0LCAgIDU0LCAgIDUxLCAgIDUyLCAgIDUxLAorICAgICAgIDUzLCAgIDU1LCAg
IDU2LCAgIDUxLCAgIDU4LCAgIDU5LCAgIDYxLCAgIDYyLCAgIDYzLCAgIDg0LAorICAgICAgIDg0
LCAgIDg0LCAgIDUwLCAgIDUwLCAgIDc5LCAgIDY0LCAgIDcwLCAgIDUxLCAgIDcxLCAgIDcxLAor
ICAgICAgIDcxLCAgIDUxLCAgIDg2LCAgIDg2LCAgIDcwLCAgIDcyLCAgIDcwLCAgIDcwLCAgIDUx
LCAgIDMzLAorICAgICAgIDc0LCAgIDc0LCAgIDc0LCAgIDUxLCAgIDUxLCAgIDUxLCAgIDUxLCAg
IDc1LCAgIDUxLCAgIDUxLAorCisgICAgICAgNTEsICAgNzYsICAgNzYsICAgNTEsICAgNjksICAg
NzcsICAgNzcsICAgNzcsICAgNzAsICAgNzAsCisgICAgICAgNzAsICAgODYsICAgODYsICAgNTEs
ICAgNTEsICAgNzAsICAgODEsICAgODEsICAgODYsICAgODYsCisgICAgICAgODIsICAgODIsICAg
ODIsICAgODEsICAgODEsICAgNTEsICAgNjgsICAgODMsICAgODMsICAgODMsCisgICAgICAgODUs
ICAgODUsICAgODUsICAgNTcsICAgMzksICAgNTEsICAgNTEsICAgODQsICAgODQsICAgODQsCisg
ICAgICAgODUsICAgODUsICAgODUsICAgMjksICAgMjksICAgMjksICAgMjksICAgMjksICAgNjcs
ICAgMzYsCisgICAgICAgMzUsICAgNjcsICAgNjcsICAgNzMsICAgMzQsICAgNzMsICAgNzMsICAg
NzMsICAgNzgsICAgNzgsCisgICAgICAgMzMsICAgODYsICAgIDUsICAgODYsICAgODYsICAgODYs
ICAgODYsICAgODYsICAgODYsICAgODYsCisgICAgICAgODYsICAgODYsICAgODYsICAgODYsICAg
ODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsCisgICAgICAgODYsICAgODYsICAgODYs
ICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYKICAgICB9IDsKIAotc3Rh
dGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1sxODZdID0KK3N0YXRpYyB5eWNvbnN0IGZs
ZXhfaW50MTZfdCB5eV9jaGtbMTkxXSA9CiAgICAgeyAgIDAsCiAgICAgICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCiAgICAgICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCi0g
ICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMsICAgIDMsICAgIDQs
ICAgIDQsCi0gICAgICAgMTMsICAgMTYsICAgODUsICAgIDMsICAgMjYsICAgIDQsICAgMTcsICAg
NTgsICAgMTksICAgMTYsCi0gICAgICAgMjYsICAgMTMsICAgMTksICAgMTcsICAgMTgsICAgMTgs
ICAgMTgsICAgMTksICAgMjAsICAgNTQsCi0gICAgICAgMjAsICAgMjAsICAgMjAsICAgMjIsICAg
MjIsICAgNDgsICAgMjAsICAgMjAsICAgMjAsICAgMjAsCi0gICAgICAgMjEsICAgMjEsICAgMjEs
ICAgMjQsICAgMjQsICAgMjcsICAgNzMsICAgNzMsICAgNzMsICAgMjEsCi0gICAgICAgNDksICAg
NDksICAgMjcsICAgNDMsICAgMzIsICAgNDMsICAgNDMsICAgNDMsICAgMzEsICAgNDksCi0gICAg
ICAgNTIsICAgNDMsICAgNDMsICAgNDMsICAgNDMsICAgNDcsICAgMzAsICAgNDcsICAgNDcsICAg
NDcsCi0gICAgICAgNTIsICAgNTIsICAgNzUsICAgNDcsICAgNDcsICAgNDcsICAgNDcsICAgNTAs
ICAgNTAsICAgNTAsCi0KLSAgICAgICA3NCwgICA3NCwgICA3NSwgICA3NSwgICA1MCwgICA1MSwg
ICA1MSwgICA3OSwgICA3OSwgICA1MSwKLSAgICAgICA1MSwgICA1MSwgICA2NywgICA2NywgICA2
NywgICA3OCwgICA3OCwgICA3OCwgICAyMywgICA2NywKLSAgICAgICA2OSwgICA2OSwgICA4MCwg
ICA4MCwgICA2OSwgICA2OSwgICA2OSwgICA3MiwgICA3MiwgICAxNSwKLSAgICAgICAxMiwgICA3
MiwgICA3MiwgICA3MiwgICA4MSwgICA4MSwgICA4MSwgICA4MiwgICA4MiwgICA4MiwKLSAgICAg
ICA4NCwgICA4NCwgICA4NCwgICA4NCwgICA4NCwgICA4NiwgICAxMCwgICAgOSwgICA4NiwgICA4
NiwKLSAgICAgICA4NywgICAgNywgICA4NywgICA4NywgICA4NywgICA4OCwgICA4OCwgICAgNSwg
ICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4
MywgICA4MywgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4Mywg
ICA4MywgICA4MywgICA4MywgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4
MywgICA4MworICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAzLCAgICAzLCAgICA0LAorICAgICAgICA0LCAgIDEzLCAgIDE2LCAgIDI4LCAgICAzLCAgIDg4
LCAgICA0LCAgIDE3LCAgIDYyLCAgIDE5LAorICAgICAgIDE2LCAgIDI4LCAgIDEzLCAgIDE5LCAg
IDE3LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE5LCAgIDIwLAorICAgICAgIDU5LCAgIDIwLCAgIDIw
LCAgIDIwLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIwLCAgIDIwLCAgIDIwLAorICAgICAgIDIwLCAg
IDIyLCAgIDIyLCAgIDIxLCAgIDI0LCAgIDI0LCAgIDI2LCAgIDI2LCAgIDI3LCAgIDc2LAorICAg
ICAgIDc2LCAgIDc2LCAgIDUwLCAgIDUwLCAgIDU1LCAgIDI3LCAgIDQ0LCAgIDQ5LCAgIDQ0LCAg
IDQ0LAorICAgICAgIDQ0LCAgIDUwLCAgIDc3LCAgIDc3LCAgIDQ0LCAgIDQ0LCAgIDQ0LCAgIDQ0
LCAgIDQ4LCAgIDMzLAorICAgICAgIDQ4LCAgIDQ4LCAgIDQ4LCAgIDUxLCAgIDUxLCAgIDUxLCAg
IDQ4LCAgIDQ4LCAgIDQ4LCAgIDQ4LAorCisgICAgICAgNTEsICAgNTIsICAgNTIsICAgNTMsICAg
MzIsICAgNTIsICAgNTIsICAgNTIsICAgNzAsICAgNzAsCisgICAgICAgNzAsICAgODIsICAgODIs
ICAgNTMsICAgNTMsICAgNzAsICAgNzIsICAgNzIsICAgODMsICAgODMsCisgICAgICAgNzIsICAg
NzIsICAgNzIsICAgNzUsICAgNzUsICAgNzgsICAgMzEsICAgNzUsICAgNzUsICAgNzUsCisgICAg
ICAgODEsICAgODEsICAgODEsICAgMjMsICAgMTUsICAgNzgsICAgNzgsICAgODQsICAgODQsICAg
ODQsCisgICAgICAgODUsICAgODUsICAgODUsICAgODcsICAgODcsICAgODcsICAgODcsICAgODcs
ICAgODksICAgMTIsCisgICAgICAgMTAsICAgODksICAgODksICAgOTAsICAgIDksICAgOTAsICAg
OTAsICAgOTAsICAgOTEsICAgOTEsCisgICAgICAgIDcsICAgIDUsICAgODYsICAgODYsICAgODYs
ICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsCisgICAgICAgODYsICAgODYsICAgODYsICAg
ODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsCisgICAgICAgODYsICAgODYs
ICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYKICAgICB9IDsK
IAogLyogVGhlIGludGVudCBiZWhpbmQgdGhpcyBkZWZpbml0aW9uIGlzIHRoYXQgaXQnbGwgY2F0
Y2gKQEAgLTUwMyw3ICs1MDcsNyBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hr
WzE4Nl0gCiAjZGVmaW5lIFlZX1JFU1RPUkVfWVlfTU9SRV9PRkZTRVQKIC8qCiAvLwotLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTg0MywxMyArODQ3LDEzIEBAIHl5X21hdGNo
OgogCQkJd2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9
IHl5X2N1cnJlbnRfc3RhdGUgKQogCQkJCXsKIAkJCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkg
eXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4
NCApCisJCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDg3ICkKIAkJCQkJeXlfYyA9IHl5X21l
dGFbKHVuc2lnbmVkIGludCkgeXlfY107CiAJCQkJfQogCQkJeXlfY3VycmVudF9zdGF0ZSA9IHl5
X254dFt5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlfY107CiAJ
CQkrK3l5X2NwOwogCQkJfQotCQl3aGlsZSAoIHl5X2N1cnJlbnRfc3RhdGUgIT0gODMgKTsKKwkJ
d2hpbGUgKCB5eV9jdXJyZW50X3N0YXRlICE9IDg2ICk7CiAJCXl5X2NwID0geXlnLT55eV9sYXN0
X2FjY2VwdGluZ19jcG9zOwogCQl5eV9jdXJyZW50X3N0YXRlID0geXlnLT55eV9sYXN0X2FjY2Vw
dGluZ19zdGF0ZTsKIApAQCAtMTEwNiw2ICsxMTEwLDExIEBAIFlZX1JVTEVfU0VUVVAKIH0KIAlZ
WV9CUkVBSwogY2FzZSAzNjoKKy8qIHJ1bGUgMzYgY2FuIG1hdGNoIGVvbCAqLworWVlfUlVMRV9T
RVRVUAoreyArK3l5bGluZW5vOyB9CisJWVlfQlJFQUsKK2Nhc2UgMzc6CiBZWV9SVUxFX1NFVFVQ
CiB7CiAgICAgeXlsdmFsLT5hc3NpZ24oMSwgeXl0ZXh0WzBdKTsKQEAgLTExNDEsNyArMTE1MCw3
IEBAIGNhc2UgWVlfU1RBVEVfRU9GKENPTU1FTlQpOgogICAgIHl5dGVybWluYXRlKCk7CiB9CiAJ
WVlfQlJFQUsKLWNhc2UgMzc6CitjYXNlIDM4OgogWVlfUlVMRV9TRVRVUAogRUNITzsKIAlZWV9C
UkVBSwpAQCAtMTQzNyw3ICsxNDQ2LDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIg
KHl5c2Nhbl90IAogCQl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsg
eXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQl7CiAJCQl5eV9jdXJyZW50X3N0YXRlID0g
KGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRl
ID49IDg0ICkKKwkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4NyApCiAJCQkJeXlfYyA9IHl5
X21ldGFbKHVuc2lnbmVkIGludCkgeXlfY107CiAJCQl9CiAJCXl5X2N1cnJlbnRfc3RhdGUgPSB5
eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwpA
QCAtMTQ2NiwxMSArMTQ3NSwxMSBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlz
Y2FuX3QgCiAJd2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2Nd
ICE9IHl5X2N1cnJlbnRfc3RhdGUgKQogCQl7CiAJCXl5X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5
eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4NCAp
CisJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4NyApCiAJCQl5eV9jID0geXlfbWV0YVsodW5z
aWduZWQgaW50KSB5eV9jXTsKIAkJfQogCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFz
ZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwotCXl5X2lzX2phbSA9
ICh5eV9jdXJyZW50X3N0YXRlID09IDgzKTsKKwl5eV9pc19qYW0gPSAoeXlfY3VycmVudF9zdGF0
ZSA9PSA4Nik7CiAKIAlyZXR1cm4geXlfaXNfamFtID8gMCA6IHl5X2N1cnJlbnRfc3RhdGU7CiB9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L1Rva2VuaXplci5sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmwJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVy
LmwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogLy8KLS8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xNCw3ICsxNCw3IEBAIElGIFlPVSBNT0RJRlkgVEhJUyBG
SUxFIFlPVSBBTFNPIE5FRUQgVE8KIAogJXRvcHsKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTEg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHly
aWdodCAoYykgMjAxMS0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgogLy8KQEAgLTIyOSw2ICsyMjksOCBAQCBGUkFDVElPTkFMX0NPTlNUQU5UICAoe0RJR0lUfSoi
LiJ7RElHSVR9CiAgICAgcmV0dXJuICdcbic7CiB9CiAKK1xce05FV0xJTkV9IHsgKyt5eWxpbmVu
bzsgfQorCiAuIHsKICAgICB5eWx2YWwtPmFzc2lnbigxLCB5eXRleHRbMF0pOwogICAgIHJldHVy
biBwcDo6VG9rZW46OlBQX09USEVSOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcmVwcm9jZXNzb3IudmN4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3ByZXBy
b2Nlc3Nvci52Y3hwcm9qCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcmVwcm9jZXNzb3IudmN4cHJvagkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0
Zi04Ij8+DQorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQu
MCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQv
MjAwMyI+DQorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPg0KKyAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPg0KKyAgICAgIDxD
b25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4z
MjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0
Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9u
PkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0K
KyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24g
SW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwv
Q29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVk
ZT0iUmVsZWFzZXx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3Vy
YXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENv
bmZpZ3VyYXRpb24+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJH
bG9iYWxzIj4NCisgICAgPFByb2plY3RHdWlkPntGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIx
QkQ3QkMzMjV9PC9Qcm9qZWN0R3VpZD4NCisgICAgPFJvb3ROYW1lc3BhY2U+cHJlcHJvY2Vzc29y
PC9Sb290TmFtZXNwYWNlPg0KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQorICA8
L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWlj
cm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9
IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwv
Q29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVy
U2V0Pg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9w
dGltaXphdGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJl
bD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5
PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0
ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNv
bmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29u
ZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0
Pg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGlt
aXphdGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNv
bmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29u
ZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0
Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1Bh
dGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVu
c2lvblNldHRpbmdzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFi
ZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3Rz
KCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIg
TGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJ
bXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBv
cnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNo
ZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFw
cERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBM
YWJlbD0iVXNlck1hY3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RG
aWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+JChDb25maWd1cmF0aW9uKVw8L0ludERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIp
JChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxh
dGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1
dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29u
ZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0
Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChQbGF0Zm9y
bSlcJChDb25maWd1cmF0aW9uKVw8L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0
aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRp
b25zPldJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FU
RTtOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAg
ICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hl
Y2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVM
aWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVk
SGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAg
ICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAg
ICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5
OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0MjY3OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3Mp
PC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1E
ZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICA8TWlkbD4NCisg
ICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9N
aWRsPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09w
dGltaXphdGlvbj4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVH
O19XSU5ET1dTO19VU1JETEw7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUoUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8
TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGlt
ZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1
bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAgICAg
PFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAg
PFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5n
QXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAg
ICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7
NDUxMjs0NzAyOzQ3MTg7NDI2NzslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNw
ZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdy
b3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAg
ICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVG
dW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQor
ICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfV0lORE9XUztfVVNS
RExMO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8
UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdh
cm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNF
cnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8
RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUx
Mjs0NzAyOzQ3MTg7NDI2NzslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNp
ZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
Pg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0
RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8
Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4N
CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0
aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVC
VUc7X1dJTkRPV1M7X1VTUkRMTDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7X1NF
Q1VSRV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJy
YXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVh
ZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAg
PFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25G
b3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQy
Mzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0NzE4OzQyNjc7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5n
cyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRl
bURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iRGlhZ25vc3RpY3NCYXNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXJl
Y3RpdmVIYW5kbGVyQmFzZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlyZWN0
aXZlUGFyc2VyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJFeHByZXNzaW9uUGFy
c2VyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbnB1dC5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iTGV4ZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ik1hY3JvLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJNYWNyb0V4cGFuZGVy
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQcmVwcm9jZXNzb3IuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlRva2VuLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJUb2tlbml6ZXIuY3BwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3Vw
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Imxlbmd0aF9saW1pdHMuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJEaWFnbm9zdGljc0Jhc2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJEaXJlY3RpdmVIYW5kbGVyQmFzZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IkRpcmVjdGl2ZVBhcnNlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkV4cHJl
c3Npb25QYXJzZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbnB1dC5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkxleGVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iTWFjcm8uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJNYWNyb0V4cGFuZGVy
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibnVtZXJpY19sZXguaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJwcF91dGlscy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IlByZXByb2Nlc3Nvci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNvdXJjZUxv
Y2F0aW9uLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVG9rZW4uaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJUb2tlbml6ZXIuaCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAg
PEl0ZW1Hcm91cD4NCisgICAgPE5vbmUgSW5jbHVkZT0iVG9rZW5pemVyLmwiIC8+DQorICA8L0l0
ZW1Hcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQu
Q3BwLnRhcmdldHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMi
Pg0KKyAgPC9JbXBvcnRHcm91cD4NCis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9wcmVwcm9jZXNzb3IudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZj
eHByb2ouZmlsdGVycwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHByb2ouZmlsdGVycwkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMDAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9InV0Zi04Ij8+DQorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8v
c2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1H
cm91cD4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPg0KKyAgICAgIDxVbmlx
dWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9Vbmlx
dWVJZGVudGlmaWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lk
bDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZp
bHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5
Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPg0K
KyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4N
CisgICAgPC9GaWx0ZXI+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iRGlyZWN0aXZlUGFyc2VyLmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iRXhwcmVzc2lvblBhcnNlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IklucHV0LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iTGV4ZXIuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJNYWNyby5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ik1hY3JvRXhwYW5kZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQcmVwcm9jZXNz
b3IuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJUb2tlbi5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IlRva2VuaXplci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IkRpYWdub3N0aWNzQmFzZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpcmVjdGl2
ZUhhbmRsZXJCYXNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iRGlyZWN0aXZlUGFyc2VyLmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IkV4cHJlc3Npb25QYXJzZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
SW5wdXQuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTGV4ZXIuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iTWFjcm8uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTWFjcm9F
eHBhbmRlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJudW1lcmljX2xleC5oIj4NCisg
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJwcF91dGlscy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJQcmVwcm9jZXNzb3IuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU291cmNlTG9j
YXRpb24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVG9rZW4uaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iVG9rZW5pemVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Imxl
bmd0aF9saW1pdHMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGlhZ25vc3RpY3NCYXNl
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpcmVjdGl2ZUhhbmRsZXJCYXNlLmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJUb2tl
bml6ZXIubCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9O
b25lPg0KKyAgPC9JdGVtR3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90aW1pbmcv
UmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1p
bmcuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAsOCArMTAsOCBAQCB2b2lkIFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nOjp2
aXNpdFN5CiB7CiAgICAgaWYgKElzU2FtcGxlcihub2RlLT5nZXRCYXNpY1R5cGUoKSkpIHsKICAg
ICAgICAgKyttTnVtRXJyb3JzOwotICAgICAgICBtU2luay5wcmVmaXgoRVByZWZpeEVycm9yKTsK
LSAgICAgICAgbVNpbmsubG9jYXRpb24obm9kZS0+Z2V0TGluZSgpKTsKLSAgICAgICAgbVNpbmsg
PDwgIlNhbXBsZXJzIGFyZSBub3QgcGVybWl0dGVkIGluIHZlcnRleCBzaGFkZXJzLlxuIjsKKyAg
ICAgICAgbVNpbmsubWVzc2FnZShFUHJlZml4RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+Z2V0TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICJTYW1wbGVycyBhcmUgbm90
IHBlcm1pdHRlZCBpbiB2ZXJ0ZXggc2hhZGVycyIpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvQ29uZmlnLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0NvbmZpZy5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0NvbmZpZy5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzQwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBDb25maWcuY3Bw
OiBJbXBsZW1lbnRzIHRoZSBlZ2w6OkNvbmZpZyBjbGFzcywgZGVzY3JpYmluZyB0aGUgZm9ybWF0
LCB0eXBlCisvLyBhbmQgc2l6ZSBmb3IgYW4gZWdsOjpTdXJmYWNlLiBJbXBsZW1lbnRzIEVHTENv
bmZpZyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LgorLy8gW0VHTCAxLjRdIHNlY3Rpb24gMy40
IHBhZ2UgMTUuCisKKyNpbmNsdWRlICJsaWJFR0wvQ29uZmlnLmgiCisKKyNpbmNsdWRlIDxhbGdv
cml0aG0+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5j
bHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKwordXNp
bmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIGVnbAoreworQ29uZmlnOjpDb25maWcocng6
OkNvbmZpZ0Rlc2MgZGVzYywgRUdMaW50IG1pbkludGVydmFsLCBFR0xpbnQgbWF4SW50ZXJ2YWws
IEVHTGludCB0ZXhXaWR0aCwgRUdMaW50IHRleEhlaWdodCkKKyAgICA6IG1SZW5kZXJUYXJnZXRG
b3JtYXQoZGVzYy5yZW5kZXJUYXJnZXRGb3JtYXQpLCBtRGVwdGhTdGVuY2lsRm9ybWF0KGRlc2Mu
ZGVwdGhTdGVuY2lsRm9ybWF0KSwgbU11bHRpU2FtcGxlKGRlc2MubXVsdGlTYW1wbGUpCit7Cisg
ICAgbUJpbmRUb1RleHR1cmVSR0IgPSBFR0xfRkFMU0U7CisgICAgbUJpbmRUb1RleHR1cmVSR0JB
ID0gRUdMX0ZBTFNFOworICAgIHN3aXRjaCAoZGVzYy5yZW5kZXJUYXJnZXRGb3JtYXQpCisgICAg
eworICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgICBtQnVmZmVyU2l6ZSA9IDE2OworICAg
ICAgICBtUmVkU2l6ZSA9IDU7CisgICAgICAgIG1HcmVlblNpemUgPSA1OworICAgICAgICBtQmx1
ZVNpemUgPSA1OworICAgICAgICBtQWxwaGFTaXplID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX1JHQkE4X09FUzoKKyAgICAgICAgbUJ1ZmZlclNpemUgPSAzMjsKKyAgICAgICAg
bVJlZFNpemUgPSA4OworICAgICAgICBtR3JlZW5TaXplID0gODsKKyAgICAgICAgbUJsdWVTaXpl
ID0gODsKKyAgICAgICAgbUFscGhhU2l6ZSA9IDg7CisgICAgICAgIG1CaW5kVG9UZXh0dXJlUkdC
QSA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0I1NjU6CisgICAgICAg
IG1CdWZmZXJTaXplID0gMTY7CisgICAgICAgIG1SZWRTaXplID0gNTsKKyAgICAgICAgbUdyZWVu
U2l6ZSA9IDY7CisgICAgICAgIG1CbHVlU2l6ZSA9IDU7CisgICAgICAgIG1BbHBoYVNpemUgPSAw
OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICAgIG1CdWZm
ZXJTaXplID0gMzI7CisgICAgICAgIG1SZWRTaXplID0gODsKKyAgICAgICAgbUdyZWVuU2l6ZSA9
IDg7CisgICAgICAgIG1CbHVlU2l6ZSA9IDg7CisgICAgICAgIG1BbHBoYVNpemUgPSAwOworICAg
ICAgICBtQmluZFRvVGV4dHVyZVJHQiA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9CR1JBOF9FWFQ6CisgICAgICAgIG1CdWZmZXJTaXplID0gMzI7CisgICAgICAgIG1SZWRT
aXplID0gODsKKyAgICAgICAgbUdyZWVuU2l6ZSA9IDg7CisgICAgICAgIG1CbHVlU2l6ZSA9IDg7
CisgICAgICAgIG1BbHBoYVNpemUgPSA4OworICAgICAgICBtQmluZFRvVGV4dHVyZVJHQkEgPSB0
cnVlOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxF
KCk7ICAgLy8gT3RoZXIgZm9ybWF0cyBzaG91bGQgbm90IGJlIHZhbGlkCisgICAgfQorCisgICAg
bUx1bWluYW5jZVNpemUgPSAwOworICAgIG1BbHBoYU1hc2tTaXplID0gMDsKKyAgICBtQ29sb3JC
dWZmZXJUeXBlID0gRUdMX1JHQl9CVUZGRVI7CisgICAgbUNvbmZpZ0NhdmVhdCA9IChkZXNjLmZh
c3RDb25maWcpID8gRUdMX05PTkUgOiBFR0xfU0xPV19DT05GSUc7CisgICAgbUNvbmZpZ0lEID0g
MDsKKyAgICBtQ29uZm9ybWFudCA9IEVHTF9PUEVOR0xfRVMyX0JJVDsKKworICAgIHN3aXRjaCAo
ZGVzYy5kZXB0aFN0ZW5jaWxGb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9OT05FOgorICAg
ICAgICBtRGVwdGhTaXplID0gMDsKKyAgICAgICAgbVN0ZW5jaWxTaXplID0gMDsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzoKKyAgICAgICAgbURl
cHRoU2l6ZSA9IDMyOworICAgICAgICBtU3RlbmNpbFNpemUgPSAwOworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM6CisgICAgICAgIG1EZXB0aFNpemUg
PSAyNDsKKyAgICAgICAgbVN0ZW5jaWxTaXplID0gODsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX0RFUFRIX0NPTVBPTkVOVDI0X09FUzoKKyAgICAgICAgbURlcHRoU2l6ZSA9IDI0Owor
ICAgICAgICBtU3RlbmNpbFNpemUgPSAwOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
REVQVEhfQ09NUE9ORU5UMTY6CisgICAgICAgIG1EZXB0aFNpemUgPSAxNjsKKyAgICAgICAgbVN0
ZW5jaWxTaXplID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIG1MZXZlbCA9IDA7CisgICAgbU1hdGNoTmF0aXZl
UGl4bWFwID0gRUdMX05PTkU7CisgICAgbU1heFBCdWZmZXJXaWR0aCA9IHRleFdpZHRoOworICAg
IG1NYXhQQnVmZmVySGVpZ2h0ID0gdGV4SGVpZ2h0OworICAgIG1NYXhQQnVmZmVyUGl4ZWxzID0g
dGV4V2lkdGgqdGV4SGVpZ2h0OworICAgIG1NYXhTd2FwSW50ZXJ2YWwgPSBtYXhJbnRlcnZhbDsK
KyAgICBtTWluU3dhcEludGVydmFsID0gbWluSW50ZXJ2YWw7CisgICAgbU5hdGl2ZVJlbmRlcmFi
bGUgPSBFR0xfRkFMU0U7CisgICAgbU5hdGl2ZVZpc3VhbElEID0gMDsKKyAgICBtTmF0aXZlVmlz
dWFsVHlwZSA9IDA7CisgICAgbVJlbmRlcmFibGVUeXBlID0gRUdMX09QRU5HTF9FUzJfQklUOwor
ICAgIG1TYW1wbGVCdWZmZXJzID0gZGVzYy5tdWx0aVNhbXBsZSA/IDEgOiAwOworICAgIG1TYW1w
bGVzID0gZGVzYy5tdWx0aVNhbXBsZTsKKyAgICBtU3VyZmFjZVR5cGUgPSBFR0xfUEJVRkZFUl9C
SVQgfCBFR0xfV0lORE9XX0JJVCB8IEVHTF9TV0FQX0JFSEFWSU9SX1BSRVNFUlZFRF9CSVQ7Cisg
ICAgbVRyYW5zcGFyZW50VHlwZSA9IEVHTF9OT05FOworICAgIG1UcmFuc3BhcmVudFJlZFZhbHVl
ID0gMDsKKyAgICBtVHJhbnNwYXJlbnRHcmVlblZhbHVlID0gMDsKKyAgICBtVHJhbnNwYXJlbnRC
bHVlVmFsdWUgPSAwOworfQorCitFR0xDb25maWcgQ29uZmlnOjpnZXRIYW5kbGUoKSBjb25zdAor
eworICAgIHJldHVybiAoRUdMQ29uZmlnKShzaXplX3QpbUNvbmZpZ0lEOworfQorCitTb3J0Q29u
ZmlnOjpTb3J0Q29uZmlnKGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCkKKyAgICA6IG1XYW50UmVk
KGZhbHNlKSwgbVdhbnRHcmVlbihmYWxzZSksIG1XYW50Qmx1ZShmYWxzZSksIG1XYW50QWxwaGEo
ZmFsc2UpLCBtV2FudEx1bWluYW5jZShmYWxzZSkKK3sKKyAgICBzY2FuRm9yV2FudGVkQ29tcG9u
ZW50cyhhdHRyaWJMaXN0KTsKK30KKwordm9pZCBTb3J0Q29uZmlnOjpzY2FuRm9yV2FudGVkQ29t
cG9uZW50cyhjb25zdCBFR0xpbnQgKmF0dHJpYkxpc3QpCit7CisgICAgLy8gW0VHTF0gc2VjdGlv
biAzLjQuMSBwYWdlIDI0CisgICAgLy8gU29ydGluZyBydWxlICMzOiBieSBsYXJnZXIgdG90YWwg
bnVtYmVyIG9mIGNvbG9yIGJpdHMsIG5vdCBjb25zaWRlcmluZworICAgIC8vIGNvbXBvbmVudHMg
dGhhdCBhcmUgMCBvciBkb24ndC1jYXJlLgorICAgIGZvciAoY29uc3QgRUdMaW50ICphdHRyID0g
YXR0cmliTGlzdDsgYXR0clswXSAhPSBFR0xfTk9ORTsgYXR0ciArPSAyKQorICAgIHsKKyAgICAg
ICAgaWYgKGF0dHJbMV0gIT0gMCAmJiBhdHRyWzFdICE9IEVHTF9ET05UX0NBUkUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoYXR0clswXSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgY2FzZSBFR0xfUkVEX1NJWkU6ICAgICAgIG1XYW50UmVkID0gdHJ1ZTsgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgRUdMX0dSRUVOX1NJWkU6ICAgICBtV2FudEdyZWVuID0gdHJ1ZTsg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0JMVUVfU0laRTogICAgICBtV2FudEJsdWUg
PSB0cnVlOyBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfQUxQSEFfU0laRTogICAgIG1X
YW50QWxwaGEgPSB0cnVlOyBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfTFVNSU5BTkNF
X1NJWkU6IG1XYW50THVtaW5hbmNlID0gdHJ1ZTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK0VHTGludCBTb3J0Q29uZmlnOjp3YW50ZWRDb21wb25lbnRzU2l6
ZShjb25zdCBDb25maWcgJmNvbmZpZykgY29uc3QKK3sKKyAgICBFR0xpbnQgdG90YWwgPSAwOwor
CisgICAgaWYgKG1XYW50UmVkKSAgICAgICB0b3RhbCArPSBjb25maWcubVJlZFNpemU7CisgICAg
aWYgKG1XYW50R3JlZW4pICAgICB0b3RhbCArPSBjb25maWcubUdyZWVuU2l6ZTsKKyAgICBpZiAo
bVdhbnRCbHVlKSAgICAgIHRvdGFsICs9IGNvbmZpZy5tQmx1ZVNpemU7CisgICAgaWYgKG1XYW50
QWxwaGEpICAgICB0b3RhbCArPSBjb25maWcubUFscGhhU2l6ZTsKKyAgICBpZiAobVdhbnRMdW1p
bmFuY2UpIHRvdGFsICs9IGNvbmZpZy5tTHVtaW5hbmNlU2l6ZTsKKworICAgIHJldHVybiB0b3Rh
bDsKK30KKworYm9vbCBTb3J0Q29uZmlnOjpvcGVyYXRvcigpKGNvbnN0IENvbmZpZyAqeCwgY29u
c3QgQ29uZmlnICp5KSBjb25zdAoreworICAgIHJldHVybiAoKnRoaXMpKCp4LCAqeSk7Cit9CisK
K2Jvb2wgU29ydENvbmZpZzo6b3BlcmF0b3IoKShjb25zdCBDb25maWcgJngsIGNvbnN0IENvbmZp
ZyAmeSkgY29uc3QKK3sKKyAgICAjZGVmaW5lIFNPUlQoYXR0cmlidXRlKSAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgaWYgKHguYXR0cmlidXRlICE9IHkuYXR0cmlidXRlKSAgICAg
ICAgICAgIFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIHJldHVybiB4LmF0dHJpYnV0ZSA8IHkuYXR0cmlidXRlOyAgICAg
IFwKKyAgICAgICAgfQorCisgICAgTUVUQV9BU1NFUlQoRUdMX05PTkUgPCBFR0xfU0xPV19DT05G
SUcgJiYgRUdMX1NMT1dfQ09ORklHIDwgRUdMX05PTl9DT05GT1JNQU5UX0NPTkZJRyk7CisgICAg
U09SVChtQ29uZmlnQ2F2ZWF0KTsKKworICAgIE1FVEFfQVNTRVJUKEVHTF9SR0JfQlVGRkVSIDwg
RUdMX0xVTUlOQU5DRV9CVUZGRVIpOworICAgIFNPUlQobUNvbG9yQnVmZmVyVHlwZSk7CisKKyAg
ICAvLyBCeSBsYXJnZXIgdG90YWwgbnVtYmVyIG9mIGNvbG9yIGJpdHMsIG9ubHkgY29uc2lkZXJp
bmcgdGhvc2UgdGhhdCBhcmUgcmVxdWVzdGVkIHRvIGJlID4gMC4KKyAgICBFR0xpbnQgeENvbXBv
bmVudHNTaXplID0gd2FudGVkQ29tcG9uZW50c1NpemUoeCk7CisgICAgRUdMaW50IHlDb21wb25l
bnRzU2l6ZSA9IHdhbnRlZENvbXBvbmVudHNTaXplKHkpOworICAgIGlmICh4Q29tcG9uZW50c1Np
emUgIT0geUNvbXBvbmVudHNTaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHhDb21wb25lbnRz
U2l6ZSA+IHlDb21wb25lbnRzU2l6ZTsKKyAgICB9CisKKyAgICBTT1JUKG1CdWZmZXJTaXplKTsK
KyAgICBTT1JUKG1TYW1wbGVCdWZmZXJzKTsKKyAgICBTT1JUKG1TYW1wbGVzKTsKKyAgICBTT1JU
KG1EZXB0aFNpemUpOworICAgIFNPUlQobVN0ZW5jaWxTaXplKTsKKyAgICBTT1JUKG1BbHBoYU1h
c2tTaXplKTsKKyAgICBTT1JUKG1OYXRpdmVWaXN1YWxUeXBlKTsKKyAgICBTT1JUKG1Db25maWdJ
RCk7CisKKyAgICAjdW5kZWYgU09SVAorCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBXZSdk
IGxpa2UgdG8gdXNlIFNvcnRDb25maWcgdG8gYWxzbyBlbGltaW5hdGUgZHVwbGljYXRlIGNvbmZp
Z3MuCisvLyBUaGlzIHdvcmtzIGFzIGxvbmcgYXMgd2UgbmV2ZXIgaGF2ZSB0d28gY29uZmlncyB3
aXRoIGRpZmZlcmVudCBwZXItUkdCLWNvbXBvbmVudCBsYXlvdXRzLAorLy8gYnV0IHRoZSBzYW1l
IHRvdGFsLgorLy8gNTU1MSBhbmQgNTY1IGFyZSBkaWZmZXJlbnQgYmVjYXVzZSBSK0crQiBpcyBk
aWZmZXJlbnQuCisvLyA1NTUxIGFuZCA1NTUgYXJlIGRpZmZlcmVudCBiZWNhdXNlIGJ1ZmZlclNp
emUgaXMgZGlmZmVyZW50LgorY29uc3QgRUdMaW50IENvbmZpZ1NldDo6bVNvcnRBdHRyaWJzW10g
PQoreworICAgIEVHTF9SRURfU0laRSwgMSwKKyAgICBFR0xfR1JFRU5fU0laRSwgMSwKKyAgICBF
R0xfQkxVRV9TSVpFLCAxLAorICAgIEVHTF9MVU1JTkFOQ0VfU0laRSwgMSwKKyAgICAvLyBCVVQg
Tk9UIEFMUEhBCisgICAgRUdMX05PTkUKK307CisKK0NvbmZpZ1NldDo6Q29uZmlnU2V0KCkKKyAg
ICA6IG1TZXQoU29ydENvbmZpZyhtU29ydEF0dHJpYnMpKQoreworfQorCit2b2lkIENvbmZpZ1Nl
dDo6YWRkKHJ4OjpDb25maWdEZXNjIGRlc2MsIEVHTGludCBtaW5Td2FwSW50ZXJ2YWwsIEVHTGlu
dCBtYXhTd2FwSW50ZXJ2YWwsIEVHTGludCB0ZXhXaWR0aCwgRUdMaW50IHRleEhlaWdodCkKK3sK
KyAgICBDb25maWcgY29uZmlnKGRlc2MsIG1pblN3YXBJbnRlcnZhbCwgbWF4U3dhcEludGVydmFs
LCB0ZXhXaWR0aCwgdGV4SGVpZ2h0KTsKKyAgICBtU2V0Lmluc2VydChjb25maWcpOworfQorCitz
aXplX3QgQ29uZmlnU2V0OjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNldC5zaXplKCk7
Cit9CisKK2Jvb2wgQ29uZmlnU2V0OjpnZXRDb25maWdzKEVHTENvbmZpZyAqY29uZmlncywgY29u
c3QgRUdMaW50ICphdHRyaWJMaXN0LCBFR0xpbnQgY29uZmlnU2l6ZSwgRUdMaW50ICpudW1Db25m
aWcpCit7CisgICAgdmVjdG9yPGNvbnN0IENvbmZpZyo+IHBhc3NlZDsKKyAgICBwYXNzZWQucmVz
ZXJ2ZShtU2V0LnNpemUoKSk7CisKKyAgICBmb3IgKEl0ZXJhdG9yIGNvbmZpZyA9IG1TZXQuYmVn
aW4oKTsgY29uZmlnICE9IG1TZXQuZW5kKCk7IGNvbmZpZysrKQorICAgIHsKKyAgICAgICAgYm9v
bCBtYXRjaCA9IHRydWU7CisgICAgICAgIGNvbnN0IEVHTGludCAqYXR0cmlidXRlID0gYXR0cmli
TGlzdDsKKworICAgICAgICB3aGlsZSAoYXR0cmlidXRlWzBdICE9IEVHTF9OT05FKQorICAgICAg
ICB7CisgICAgICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0ZVswXSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgY2FzZSBFR0xfQlVGRkVSX1NJWkU6ICAgICAgICAgICAgICAgbWF0Y2ggPSBj
b25maWctPm1CdWZmZXJTaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0FMUEhBX1NJWkU6ICAgICAgICAgICAgICAg
IG1hdGNoID0gY29uZmlnLT5tQWxwaGFTaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9CTFVFX1NJWkU6ICAgICAg
ICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bUJsdWVTaXplID49IGF0dHJpYnV0ZVsxXTsgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfR1JFRU5f
U0laRTogICAgICAgICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1HcmVlblNpemUgPj0gYXR0cmli
dXRlWzFdOyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
RUdMX1JFRF9TSVpFOiAgICAgICAgICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tUmVkU2l6ZSA+
PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIEVHTF9ERVBUSF9TSVpFOiAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy0+
bURlcHRoU2l6ZSA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBFR0xfU1RFTkNJTF9TSVpFOiAgICAgICAgICAgICAgbWF0Y2gg
PSBjb25maWctPm1TdGVuY2lsU2l6ZSA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0NPTkZJR19DQVZFQVQ6ICAgICAgICAg
ICAgIG1hdGNoID0gY29uZmlnLT5tQ29uZmlnQ2F2ZWF0ID09IChFR0xlbnVtKSBhdHRyaWJ1dGVb
MV07ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9DT05GSUdfSUQ6ICAg
ICAgICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bUNvbmZpZ0lEID09IGF0dHJpYnV0ZVsxXTsg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfTEVW
RUw6ICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1MZXZlbCA+PSBhdHRyaWJ1
dGVbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgRUdMX05BVElWRV9SRU5ERVJBQkxFOiAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tTmF0aXZl
UmVuZGVyYWJsZSA9PSAoRUdMQm9vbGVhbikgYXR0cmlidXRlWzFdOyAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIEVHTF9OQVRJVkVfVklTVUFMX1RZUEU6ICAgICAgICBtYXRjaCA9IGNvbmZp
Zy0+bU5hdGl2ZVZpc3VhbFR5cGUgPT0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfU0FNUExFUzogICAgICAgICAgICAgICAgICAgbWF0
Y2ggPSBjb25maWctPm1TYW1wbGVzID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX1NBTVBMRV9CVUZGRVJTOiAgICAg
ICAgICAgIG1hdGNoID0gY29uZmlnLT5tU2FtcGxlQnVmZmVycyA+PSBhdHRyaWJ1dGVbMV07ICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9TVVJGQUNFX1RZ
UEU6ICAgICAgICAgICAgICBtYXRjaCA9IChjb25maWctPm1TdXJmYWNlVHlwZSAmIGF0dHJpYnV0
ZVsxXSkgPT0gYXR0cmlidXRlWzFdOyAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xf
VFJBTlNQQVJFTlRfVFlQRTogICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1UcmFuc3BhcmVudFR5
cGUgPT0gKEVHTGVudW0pIGF0dHJpYnV0ZVsxXTsgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgRUdMX1RSQU5TUEFSRU5UX0JMVUVfVkFMVUU6ICAgIG1hdGNoID0gY29uZmlnLT5tVHJh
bnNwYXJlbnRCbHVlVmFsdWUgPT0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIEVHTF9UUkFOU1BBUkVOVF9HUkVFTl9WQUxVRTogICBtYXRjaCA9IGNv
bmZpZy0+bVRyYW5zcGFyZW50R3JlZW5WYWx1ZSA9PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfVFJBTlNQQVJFTlRfUkVEX1ZBTFVFOiAgICAg
bWF0Y2ggPSBjb25maWctPm1UcmFuc3BhcmVudFJlZFZhbHVlID09IGF0dHJpYnV0ZVsxXTsgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVSRV9S
R0I6ICAgICAgIG1hdGNoID0gY29uZmlnLT5tQmluZFRvVGV4dHVyZVJHQiA9PSAoRUdMQm9vbGVh
bikgYXR0cmlidXRlWzFdOyAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9CSU5EX1RP
X1RFWFRVUkVfUkdCQTogICAgICBtYXRjaCA9IGNvbmZpZy0+bUJpbmRUb1RleHR1cmVSR0JBID09
IChFR0xCb29sZWFuKSBhdHRyaWJ1dGVbMV07ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBF
R0xfTUlOX1NXQVBfSU5URVJWQUw6ICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1NaW5Td2FwSW50
ZXJ2YWwgPT0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgRUdMX01BWF9TV0FQX0lOVEVSVkFMOiAgICAgICAgIG1hdGNoID0gY29uZmlnLT5t
TWF4U3dhcEludGVydmFsID09IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIEVHTF9MVU1JTkFOQ0VfU0laRTogICAgICAgICAgICBtYXRjaCA9
IGNvbmZpZy0+bUx1bWluYW5jZVNpemUgPj0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfQUxQSEFfTUFTS19TSVpFOiAgICAgICAg
ICAgbWF0Y2ggPSBjb25maWctPm1BbHBoYU1hc2tTaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0NPTE9SX0JVRkZFUl9U
WVBFOiAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tQ29sb3JCdWZmZXJUeXBlID09IChFR0xlbnVt
KSBhdHRyaWJ1dGVbMV07ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9SRU5E
RVJBQkxFX1RZUEU6ICAgICAgICAgICBtYXRjaCA9IChjb25maWctPm1SZW5kZXJhYmxlVHlwZSAm
IGF0dHJpYnV0ZVsxXSkgPT0gYXR0cmlidXRlWzFdOyBicmVhazsKKyAgICAgICAgICAgICAgY2Fz
ZSBFR0xfTUFUQ0hfTkFUSVZFX1BJWE1BUDogICAgICAgbWF0Y2ggPSBmYWxzZTsgVU5JTVBMRU1F
TlRFRCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgRUdMX0NPTkZPUk1BTlQ6ICAgICAgICAgICAgICAgIG1hdGNoID0gKGNvbmZp
Zy0+bUNvbmZvcm1hbnQgJiBhdHRyaWJ1dGVbMV0pID09IGF0dHJpYnV0ZVsxXTsgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9XSURUSDogICAgICAgICBtYXRj
aCA9IGNvbmZpZy0+bU1heFBCdWZmZXJXaWR0aCA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfTUFYX1BCVUZGRVJfSEVJR0hUOiAg
ICAgICAgbWF0Y2ggPSBjb25maWctPm1NYXhQQnVmZmVySGVpZ2h0ID49IGF0dHJpYnV0ZVsxXTsg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVS
X1BJWEVMUzogICAgICAgIG1hdGNoID0gY29uZmlnLT5tTWF4UEJ1ZmZlclBpeGVscyA+PSBhdHRy
aWJ1dGVbMV07ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKCFtYXRjaCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgYXR0cmlidXRlICs9IDI7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAobWF0Y2gpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBhc3NlZC5wdXNoX2Jh
Y2soJipjb25maWcpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGNvbmZpZ3MpCisgICAg
eworICAgICAgICBzb3J0KHBhc3NlZC5iZWdpbigpLCBwYXNzZWQuZW5kKCksIFNvcnRDb25maWco
YXR0cmliTGlzdCkpOworCisgICAgICAgIEVHTGludCBpbmRleDsKKyAgICAgICAgZm9yIChpbmRl
eCA9IDA7IGluZGV4IDwgY29uZmlnU2l6ZSAmJiBpbmRleCA8IHN0YXRpY19jYXN0PEVHTGludD4o
cGFzc2VkLnNpemUoKSk7IGluZGV4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbmZpZ3Nb
aW5kZXhdID0gcGFzc2VkW2luZGV4XS0+Z2V0SGFuZGxlKCk7CisgICAgICAgIH0KKworICAgICAg
ICAqbnVtQ29uZmlnID0gaW5kZXg7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgICpu
dW1Db25maWcgPSBwYXNzZWQuc2l6ZSgpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
Citjb25zdCBlZ2w6OkNvbmZpZyAqQ29uZmlnU2V0OjpnZXQoRUdMQ29uZmlnIGNvbmZpZ0hhbmRs
ZSkKK3sKKyAgICBmb3IgKEl0ZXJhdG9yIGNvbmZpZyA9IG1TZXQuYmVnaW4oKTsgY29uZmlnICE9
IG1TZXQuZW5kKCk7IGNvbmZpZysrKQorICAgIHsKKyAgICAgICAgaWYgKGNvbmZpZy0+Z2V0SGFu
ZGxlKCkgPT0gY29uZmlnSGFuZGxlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gJigq
Y29uZmlnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9Db25maWcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0NvbmZpZy5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9Db25maWcuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMTUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIENvbmZp
Zy5oOiBEZWZpbmVzIHRoZSBlZ2w6OkNvbmZpZyBjbGFzcywgZGVzY3JpYmluZyB0aGUgZm9ybWF0
LCB0eXBlCisvLyBhbmQgc2l6ZSBmb3IgYW4gZWdsOjpTdXJmYWNlLiBJbXBsZW1lbnRzIEVHTENv
bmZpZyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LgorLy8gW0VHTCAxLjRdIHNlY3Rpb24gMy40
IHBhZ2UgMTUuCisKKyNpZm5kZWYgSU5DTFVERV9DT05GSUdfSF8KKyNkZWZpbmUgSU5DTFVERV9D
T05GSUdfSF8KKworI2RlZmluZSBFR0xBUEkKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisKKyNpbmNs
dWRlIDxzZXQ+CisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaCIKKyNp
bmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBE
aXNwbGF5OworCitjbGFzcyBDb25maWcKK3sKKyAgcHVibGljOgorICAgIENvbmZpZyhyeDo6Q29u
ZmlnRGVzYyBkZXNjLCBFR0xpbnQgbWluU3dhcEludGVydmFsLCBFR0xpbnQgbWF4U3dhcEludGVy
dmFsLCBFR0xpbnQgdGV4V2lkdGgsIEVHTGludCB0ZXhIZWlnaHQpOworCisgICAgRUdMQ29uZmln
IGdldEhhbmRsZSgpIGNvbnN0OworCisgICAgY29uc3QgR0xlbnVtIG1SZW5kZXJUYXJnZXRGb3Jt
YXQ7CisgICAgY29uc3QgR0xlbnVtIG1EZXB0aFN0ZW5jaWxGb3JtYXQ7CisgICAgY29uc3QgR0xp
bnQgbU11bHRpU2FtcGxlOworCisgICAgRUdMaW50IG1CdWZmZXJTaXplOyAgICAgICAgICAgICAg
Ly8gRGVwdGggb2YgdGhlIGNvbG9yIGJ1ZmZlcgorICAgIEVHTGludCBtUmVkU2l6ZTsgICAgICAg
ICAgICAgICAgIC8vIEJpdHMgb2YgUmVkIGluIHRoZSBjb2xvciBidWZmZXIKKyAgICBFR0xpbnQg
bUdyZWVuU2l6ZTsgICAgICAgICAgICAgICAvLyBCaXRzIG9mIEdyZWVuIGluIHRoZSBjb2xvciBi
dWZmZXIKKyAgICBFR0xpbnQgbUJsdWVTaXplOyAgICAgICAgICAgICAgICAvLyBCaXRzIG9mIEJs
dWUgaW4gdGhlIGNvbG9yIGJ1ZmZlcgorICAgIEVHTGludCBtTHVtaW5hbmNlU2l6ZTsgICAgICAg
ICAgIC8vIEJpdHMgb2YgTHVtaW5hbmNlIGluIHRoZSBjb2xvciBidWZmZXIKKyAgICBFR0xpbnQg
bUFscGhhU2l6ZTsgICAgICAgICAgICAgICAvLyBCaXRzIG9mIEFscGhhIGluIHRoZSBjb2xvciBi
dWZmZXIKKyAgICBFR0xpbnQgbUFscGhhTWFza1NpemU7ICAgICAgICAgICAvLyBCaXRzIG9mIEFs
cGhhIE1hc2sgaW4gdGhlIG1hc2sgYnVmZmVyCisgICAgRUdMQm9vbGVhbiBtQmluZFRvVGV4dHVy
ZVJHQjsgICAgLy8gVHJ1ZSBpZiBiaW5kYWJsZSB0byBSR0IgdGV4dHVyZXMuCisgICAgRUdMQm9v
bGVhbiBtQmluZFRvVGV4dHVyZVJHQkE7ICAgLy8gVHJ1ZSBpZiBiaW5kYWJsZSB0byBSR0JBIHRl
eHR1cmVzLgorICAgIEVHTGVudW0gbUNvbG9yQnVmZmVyVHlwZTsgICAgICAgIC8vIENvbG9yIGJ1
ZmZlciB0eXBlCisgICAgRUdMZW51bSBtQ29uZmlnQ2F2ZWF0OyAgICAgICAgICAgLy8gQW55IGNh
dmVhdHMgZm9yIHRoZSBjb25maWd1cmF0aW9uCisgICAgRUdMaW50IG1Db25maWdJRDsgICAgICAg
ICAgICAgICAgLy8gVW5pcXVlIEVHTENvbmZpZyBpZGVudGlmaWVyCisgICAgRUdMaW50IG1Db25m
b3JtYW50OyAgICAgICAgICAgICAgLy8gV2hldGhlciBjb250ZXh0cyBjcmVhdGVkIHdpdGggdGhp
cyBjb25maWcgYXJlIGNvbmZvcm1hbnQKKyAgICBFR0xpbnQgbURlcHRoU2l6ZTsgICAgICAgICAg
ICAgICAvLyBCaXRzIG9mIFogaW4gdGhlIGRlcHRoIGJ1ZmZlcgorICAgIEVHTGludCBtTGV2ZWw7
ICAgICAgICAgICAgICAgICAgIC8vIEZyYW1lIGJ1ZmZlciBsZXZlbAorICAgIEVHTEJvb2xlYW4g
bU1hdGNoTmF0aXZlUGl4bWFwOyAgIC8vIE1hdGNoIHRoZSBuYXRpdmUgcGl4bWFwIGZvcm1hdAor
ICAgIEVHTGludCBtTWF4UEJ1ZmZlcldpZHRoOyAgICAgICAgIC8vIE1heGltdW0gd2lkdGggb2Yg
cGJ1ZmZlcgorICAgIEVHTGludCBtTWF4UEJ1ZmZlckhlaWdodDsgICAgICAgIC8vIE1heGltdW0g
aGVpZ2h0IG9mIHBidWZmZXIKKyAgICBFR0xpbnQgbU1heFBCdWZmZXJQaXhlbHM7ICAgICAgICAv
LyBNYXhpbXVtIHNpemUgb2YgcGJ1ZmZlcgorICAgIEVHTGludCBtTWF4U3dhcEludGVydmFsOyAg
ICAgICAgIC8vIE1heGltdW0gc3dhcCBpbnRlcnZhbAorICAgIEVHTGludCBtTWluU3dhcEludGVy
dmFsOyAgICAgICAgIC8vIE1pbmltdW0gc3dhcCBpbnRlcnZhbAorICAgIEVHTEJvb2xlYW4gbU5h
dGl2ZVJlbmRlcmFibGU7ICAgIC8vIEVHTF9UUlVFIGlmIG5hdGl2ZSByZW5kZXJpbmcgQVBJcyBj
YW4gcmVuZGVyIHRvIHN1cmZhY2UKKyAgICBFR0xpbnQgbU5hdGl2ZVZpc3VhbElEOyAgICAgICAg
ICAvLyBIYW5kbGUgb2YgY29ycmVzcG9uZGluZyBuYXRpdmUgdmlzdWFsCisgICAgRUdMaW50IG1O
YXRpdmVWaXN1YWxUeXBlOyAgICAgICAgLy8gTmF0aXZlIHZpc3VhbCB0eXBlIG9mIHRoZSBhc3Nv
Y2lhdGVkIHZpc3VhbAorICAgIEVHTGludCBtUmVuZGVyYWJsZVR5cGU7ICAgICAgICAgIC8vIFdo
aWNoIGNsaWVudCByZW5kZXJpbmcgQVBJcyBhcmUgc3VwcG9ydGVkLgorICAgIEVHTGludCBtU2Ft
cGxlQnVmZmVyczsgICAgICAgICAgIC8vIE51bWJlciBvZiBtdWx0aXNhbXBsZSBidWZmZXJzCisg
ICAgRUdMaW50IG1TYW1wbGVzOyAgICAgICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHNhbXBsZXMg
cGVyIHBpeGVsCisgICAgRUdMaW50IG1TdGVuY2lsU2l6ZTsgICAgICAgICAgICAgLy8gQml0cyBv
ZiBTdGVuY2lsIGluIHRoZSBzdGVuY2lsIGJ1ZmZlcgorICAgIEVHTGludCBtU3VyZmFjZVR5cGU7
ICAgICAgICAgICAgIC8vIFdoaWNoIHR5cGVzIG9mIEVHTCBzdXJmYWNlcyBhcmUgc3VwcG9ydGVk
LgorICAgIEVHTGVudW0gbVRyYW5zcGFyZW50VHlwZTsgICAgICAgIC8vIFR5cGUgb2YgdHJhbnNw
YXJlbmN5IHN1cHBvcnRlZAorICAgIEVHTGludCBtVHJhbnNwYXJlbnRSZWRWYWx1ZTsgICAgIC8v
IFRyYW5zcGFyZW50IHJlZCB2YWx1ZQorICAgIEVHTGludCBtVHJhbnNwYXJlbnRHcmVlblZhbHVl
OyAgIC8vIFRyYW5zcGFyZW50IGdyZWVuIHZhbHVlCisgICAgRUdMaW50IG1UcmFuc3BhcmVudEJs
dWVWYWx1ZTsgICAgLy8gVHJhbnNwYXJlbnQgYmx1ZSB2YWx1ZQorfTsKKworLy8gRnVuY3Rpb24g
b2JqZWN0IHVzZWQgYnkgU1RMIHNvcnRpbmcgcm91dGluZXMgZm9yIG9yZGVyaW5nIENvbmZpZ3Mg
YWNjb3JkaW5nIHRvIFtFR0xdIHNlY3Rpb24gMy40LjEgcGFnZSAyNC4KK2NsYXNzIFNvcnRDb25m
aWcKK3sKKyAgcHVibGljOgorICAgIGV4cGxpY2l0IFNvcnRDb25maWcoY29uc3QgRUdMaW50ICph
dHRyaWJMaXN0KTsKKworICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBDb25maWcgKngsIGNvbnN0
IENvbmZpZyAqeSkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IENvbmZpZyAmeCwg
Y29uc3QgQ29uZmlnICZ5KSBjb25zdDsKKworICBwcml2YXRlOgorICAgIHZvaWQgc2NhbkZvcldh
bnRlZENvbXBvbmVudHMoY29uc3QgRUdMaW50ICphdHRyaWJMaXN0KTsKKyAgICBFR0xpbnQgd2Fu
dGVkQ29tcG9uZW50c1NpemUoY29uc3QgQ29uZmlnICZjb25maWcpIGNvbnN0OworCisgICAgYm9v
bCBtV2FudFJlZDsKKyAgICBib29sIG1XYW50R3JlZW47CisgICAgYm9vbCBtV2FudEJsdWU7Cisg
ICAgYm9vbCBtV2FudEFscGhhOworICAgIGJvb2wgbVdhbnRMdW1pbmFuY2U7Cit9OworCitjbGFz
cyBDb25maWdTZXQKK3sKKyAgICBmcmllbmQgRGlzcGxheTsKKworICBwdWJsaWM6CisgICAgQ29u
ZmlnU2V0KCk7CisKKyAgICB2b2lkIGFkZChyeDo6Q29uZmlnRGVzYyBkZXNjLCBFR0xpbnQgbWlu
U3dhcEludGVydmFsLCBFR0xpbnQgbWF4U3dhcEludGVydmFsLCBFR0xpbnQgdGV4V2lkdGgsIEVH
TGludCB0ZXhIZWlnaHQpOworICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgICAgYm9vbCBnZXRD
b25maWdzKEVHTENvbmZpZyAqY29uZmlncywgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0LCBFR0xp
bnQgY29uZmlnU2l6ZSwgRUdMaW50ICpudW1Db25maWcpOworICAgIGNvbnN0IGVnbDo6Q29uZmln
ICpnZXQoRUdMQ29uZmlnIGNvbmZpZ0hhbmRsZSk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oQ29uZmlnU2V0KTsKKworICAgIHR5cGVkZWYgc3RkOjpzZXQ8Q29u
ZmlnLCBTb3J0Q29uZmlnPiBTZXQ7CisgICAgdHlwZWRlZiBTZXQ6Oml0ZXJhdG9yIEl0ZXJhdG9y
OworICAgIFNldCBtU2V0OworCisgICAgc3RhdGljIGNvbnN0IEVHTGludCBtU29ydEF0dHJpYnNb
XTsKK307Cit9CisKKyNlbmRpZiAgIC8vIElOQ0xVREVfQ09ORklHX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0Rpc3BsYXkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvRGlzcGxheS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0Rpc3BsYXkuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUzNyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEz
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRGlzcGxh
eS5jcHA6IEltcGxlbWVudHMgdGhlIGVnbDo6RGlzcGxheSBjbGFzcywgcmVwcmVzZW50aW5nIHRo
ZSBhYnN0cmFjdAorLy8gZGlzcGxheSBvbiB3aGljaCBncmFwaGljcyBhcmUgZHJhd24uIEltcGxl
bWVudHMgRUdMRGlzcGxheS4KKy8vIFtFR0wgMS40XSBzZWN0aW9uIDIuMS4yIHBhZ2UgMy4KKwor
I2luY2x1ZGUgImxpYkVHTC9EaXNwbGF5LmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5j
bHVkZSA8bWFwPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9t
YWluLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvU3dhcENoYWluLmgiCisKKyNpbmNsdWRlICJsaWJFR0wvbWFpbi5oIgorI2lu
Y2x1ZGUgImxpYkVHTC9TdXJmYWNlLmgiCisKK25hbWVzcGFjZSBlZ2wKK3sKK25hbWVzcGFjZQor
eworICAgIHR5cGVkZWYgc3RkOjptYXA8RUdMTmF0aXZlRGlzcGxheVR5cGUsIERpc3BsYXkqPiBE
aXNwbGF5TWFwOyAKKyAgICBEaXNwbGF5TWFwIGRpc3BsYXlzOworfQorCitlZ2w6OkRpc3BsYXkg
KkRpc3BsYXk6OmdldERpc3BsYXkoRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheUlkKQorewor
ICAgIGlmIChkaXNwbGF5cy5maW5kKGRpc3BsYXlJZCkgIT0gZGlzcGxheXMuZW5kKCkpCisgICAg
eworICAgICAgICByZXR1cm4gZGlzcGxheXNbZGlzcGxheUlkXTsKKyAgICB9CisgICAgCisgICAg
Ly8gRklYTUU6IENoZWNrIGlmIGRpc3BsYXlJZCBpcyBhIHZhbGlkIGRpc3BsYXkgZGV2aWNlIGNv
bnRleHQKKworICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IG5ldyBlZ2w6OkRpc3BsYXkoZGlz
cGxheUlkLCAoSERDKWRpc3BsYXlJZCk7CisKKyAgICBkaXNwbGF5c1tkaXNwbGF5SWRdID0gZGlz
cGxheTsKKyAgICByZXR1cm4gZGlzcGxheTsKK30KKworRGlzcGxheTo6RGlzcGxheShFR0xOYXRp
dmVEaXNwbGF5VHlwZSBkaXNwbGF5SWQsIEhEQyBkZXZpY2VDb250ZXh0KSA6IG1EYyhkZXZpY2VD
b250ZXh0KQoreworICAgIG1EaXNwbGF5SWQgPSBkaXNwbGF5SWQ7CisgICAgbVJlbmRlcmVyID0g
TlVMTDsKK30KKworRGlzcGxheTo6fkRpc3BsYXkoKQoreworICAgIHRlcm1pbmF0ZSgpOworCisg
ICAgRGlzcGxheU1hcDo6aXRlcmF0b3IgdGhpc0Rpc3BsYXkgPSBkaXNwbGF5cy5maW5kKG1EaXNw
bGF5SWQpOworCisgICAgaWYgKHRoaXNEaXNwbGF5ICE9IGRpc3BsYXlzLmVuZCgpKQorICAgIHsK
KyAgICAgICAgZGlzcGxheXMuZXJhc2UodGhpc0Rpc3BsYXkpOworICAgIH0KK30KKworYm9vbCBE
aXNwbGF5Ojppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgbVJlbmRlcmVyID0gZ2xDcmVhdGVS
ZW5kZXJlcih0aGlzLCBtRGMsIG1EaXNwbGF5SWQpOworICAgIAorICAgIGlmICghbVJlbmRlcmVy
KQorICAgIHsKKyAgICAgICAgdGVybWluYXRlKCk7CisgICAgICAgIHJldHVybiBlcnJvcihFR0xf
Tk9UX0lOSVRJQUxJWkVELCBmYWxzZSk7CisgICAgfQorCisgICAgRUdMaW50IG1pblN3YXBJbnRl
cnZhbCA9IG1SZW5kZXJlci0+Z2V0TWluU3dhcEludGVydmFsKCk7CisgICAgRUdMaW50IG1heFN3
YXBJbnRlcnZhbCA9IG1SZW5kZXJlci0+Z2V0TWF4U3dhcEludGVydmFsKCk7CisgICAgRUdMaW50
IG1heFRleHR1cmVXaWR0aCA9IG1SZW5kZXJlci0+Z2V0TWF4VGV4dHVyZVdpZHRoKCk7CisgICAg
RUdMaW50IG1heFRleHR1cmVIZWlnaHQgPSBtUmVuZGVyZXItPmdldE1heFRleHR1cmVIZWlnaHQo
KTsKKworICAgIHJ4OjpDb25maWdEZXNjICpkZXNjTGlzdDsKKyAgICBpbnQgbnVtQ29uZmlncyA9
IG1SZW5kZXJlci0+Z2VuZXJhdGVDb25maWdzKCZkZXNjTGlzdCk7CisgICAgQ29uZmlnU2V0IGNv
bmZpZ1NldDsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29uZmlnczsgKytpKQorICAg
ICAgICBjb25maWdTZXQuYWRkKGRlc2NMaXN0W2ldLCBtaW5Td2FwSW50ZXJ2YWwsIG1heFN3YXBJ
bnRlcnZhbCwKKyAgICAgICAgICAgICAgICAgICAgICBtYXhUZXh0dXJlV2lkdGgsIG1heFRleHR1
cmVIZWlnaHQpOworCisgICAgLy8gR2l2ZSB0aGUgc29ydGVkIGNvbmZpZ3MgYSB1bmlxdWUgSUQg
YW5kIHN0b3JlIHRoZW0gaW50ZXJuYWxseQorICAgIEVHTGludCBpbmRleCA9IDE7CisgICAgZm9y
IChDb25maWdTZXQ6Okl0ZXJhdG9yIGNvbmZpZyA9IGNvbmZpZ1NldC5tU2V0LmJlZ2luKCk7IGNv
bmZpZyAhPSBjb25maWdTZXQubVNldC5lbmQoKTsgY29uZmlnKyspCisgICAgeworICAgICAgICBD
b25maWcgY29uZmlndXJhdGlvbiA9ICpjb25maWc7CisgICAgICAgIGNvbmZpZ3VyYXRpb24ubUNv
bmZpZ0lEID0gaW5kZXg7CisgICAgICAgIGluZGV4Kys7CisKKyAgICAgICAgbUNvbmZpZ1NldC5t
U2V0Lmluc2VydChjb25maWd1cmF0aW9uKTsKKyAgICB9CisKKyAgICBtUmVuZGVyZXItPmRlbGV0
ZUNvbmZpZ3MoZGVzY0xpc3QpOworICAgIGRlc2NMaXN0ID0gTlVMTDsKKworICAgIGlmICghaXNJ
bml0aWFsaXplZCgpKQorICAgIHsKKyAgICAgICAgdGVybWluYXRlKCk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBpbml0RXh0ZW5zaW9uU3RyaW5nKCk7CisgICAgaW5pdFZl
bmRvclN0cmluZygpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRGlzcGxheTo6dGVy
bWluYXRlKCkKK3sKKyAgICB3aGlsZSAoIW1TdXJmYWNlU2V0LmVtcHR5KCkpCisgICAgeworICAg
ICAgICBkZXN0cm95U3VyZmFjZSgqbVN1cmZhY2VTZXQuYmVnaW4oKSk7CisgICAgfQorCisgICAg
d2hpbGUgKCFtQ29udGV4dFNldC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVzdHJveUNvbnRl
eHQoKm1Db250ZXh0U2V0LmJlZ2luKCkpOworICAgIH0KKworICAgIGdsRGVzdHJveVJlbmRlcmVy
KG1SZW5kZXJlcik7CisgICAgbVJlbmRlcmVyID0gTlVMTDsKK30KKworYm9vbCBEaXNwbGF5Ojpn
ZXRDb25maWdzKEVHTENvbmZpZyAqY29uZmlncywgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0LCBF
R0xpbnQgY29uZmlnU2l6ZSwgRUdMaW50ICpudW1Db25maWcpCit7CisgICAgcmV0dXJuIG1Db25m
aWdTZXQuZ2V0Q29uZmlncyhjb25maWdzLCBhdHRyaWJMaXN0LCBjb25maWdTaXplLCBudW1Db25m
aWcpOworfQorCitib29sIERpc3BsYXk6OmdldENvbmZpZ0F0dHJpYihFR0xDb25maWcgY29uZmln
LCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKQoreworICAgIGNvbnN0IGVnbDo6Q29u
ZmlnICpjb25maWd1cmF0aW9uID0gbUNvbmZpZ1NldC5nZXQoY29uZmlnKTsKKworICAgIHN3aXRj
aCAoYXR0cmlidXRlKQorICAgIHsKKyAgICAgIGNhc2UgRUdMX0JVRkZFUl9TSVpFOiAgICAgICAg
ICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1CdWZmZXJTaXplOyAgICAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgRUdMX0FMUEhBX1NJWkU6ICAgICAgICAgICAgICAgICp2YWx1ZSA9
IGNvbmZpZ3VyYXRpb24tPm1BbHBoYVNpemU7ICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgRUdMX0JMVUVfU0laRTogICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24t
Pm1CbHVlU2l6ZTsgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0dSRUVOX1NJ
WkU6ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1HcmVlblNpemU7ICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1JFRF9TSVpFOiAgICAgICAgICAgICAg
ICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1SZWRTaXplOyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgRUdMX0RFUFRIX1NJWkU6ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNv
bmZpZ3VyYXRpb24tPm1EZXB0aFNpemU7ICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
RUdMX1NURU5DSUxfU0laRTogICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1T
dGVuY2lsU2l6ZTsgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0NPTkZJR19DQVZF
QVQ6ICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1Db25maWdDYXZlYXQ7ICAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0NPTkZJR19JRDogICAgICAgICAgICAgICAg
ICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1Db25maWdJRDsgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgRUdMX0xFVkVMOiAgICAgICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZp
Z3VyYXRpb24tPm1MZXZlbDsgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdM
X05BVElWRV9SRU5ERVJBQkxFOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1OYXRp
dmVSZW5kZXJhYmxlOyAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX05BVElWRV9WSVNVQUxf
VFlQRTogICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1OYXRpdmVWaXN1YWxUeXBlOyAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1NBTVBMRVM6ICAgICAgICAgICAgICAgICAgICp2
YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1TYW1wbGVzOyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgRUdMX1NBTVBMRV9CVUZGRVJTOiAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3Vy
YXRpb24tPm1TYW1wbGVCdWZmZXJzOyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1NV
UkZBQ0VfVFlQRTogICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1TdXJmYWNl
VHlwZTsgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX1RZUEU6
ICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1UcmFuc3BhcmVudFR5cGU7ICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX0JMVUVfVkFMVUU6ICAgICp2YWx1
ZSA9IGNvbmZpZ3VyYXRpb24tPm1UcmFuc3BhcmVudEJsdWVWYWx1ZTsgICBicmVhazsKKyAgICAg
IGNhc2UgRUdMX1RSQU5TUEFSRU5UX0dSRUVOX1ZBTFVFOiAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRp
b24tPm1UcmFuc3BhcmVudEdyZWVuVmFsdWU7ICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1RSQU5T
UEFSRU5UX1JFRF9WQUxVRTogICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1UcmFuc3BhcmVu
dFJlZFZhbHVlOyAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0I6
ICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1CaW5kVG9UZXh0dXJlUkdCOyAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0JBOiAgICAgICp2YWx1ZSA9
IGNvbmZpZ3VyYXRpb24tPm1CaW5kVG9UZXh0dXJlUkdCQTsgICAgICBicmVhazsKKyAgICAgIGNh
c2UgRUdMX01JTl9TV0FQX0lOVEVSVkFMOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24t
Pm1NaW5Td2FwSW50ZXJ2YWw7ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01BWF9TV0FQ
X0lOVEVSVkFMOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1NYXhTd2FwSW50ZXJ2
YWw7ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0xVTUlOQU5DRV9TSVpFOiAgICAgICAg
ICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1MdW1pbmFuY2VTaXplOyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgRUdMX0FMUEhBX01BU0tfU0laRTogICAgICAgICAgICp2YWx1ZSA9IGNv
bmZpZ3VyYXRpb24tPm1BbHBoYU1hc2tTaXplOyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
RUdMX0NPTE9SX0JVRkZFUl9UWVBFOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1D
b2xvckJ1ZmZlclR5cGU7ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1JFTkRFUkFCTEVf
VFlQRTogICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1SZW5kZXJhYmxlVHlwZTsg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01BVENIX05BVElWRV9QSVhNQVA6ICAgICAg
ICp2YWx1ZSA9IGZhbHNlOyBVTklNUExFTUVOVEVEKCk7ICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgRUdMX0NPTkZPUk1BTlQ6ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZp
Z3VyYXRpb24tPm1Db25mb3JtYW50OyAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdM
X01BWF9QQlVGRkVSX1dJRFRIOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1NYXhQ
QnVmZmVyV2lkdGg7ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX0hF
SUdIVDogICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1NYXhQQnVmZmVySGVpZ2h0OyAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX1BJWEVMUzogICAgICAgICp2
YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1NYXhQQnVmZmVyUGl4ZWxzOyAgICAgICBicmVhazsKKyAg
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworCisKK0VHTFN1cmZhY2UgRGlzcGxheTo6Y3JlYXRlV2luZG93U3VyZmFjZShI
V05EIHdpbmRvdywgRUdMQ29uZmlnIGNvbmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0KQor
eworICAgIGNvbnN0IENvbmZpZyAqY29uZmlndXJhdGlvbiA9IG1Db25maWdTZXQuZ2V0KGNvbmZp
Zyk7CisgICAgRUdMaW50IHBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQgPSBFR0xfRkFMU0U7CisKKyAg
ICBpZiAoYXR0cmliTGlzdCkKKyAgICB7CisgICAgICAgIHdoaWxlICgqYXR0cmliTGlzdCAhPSBF
R0xfTk9ORSkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhdHRyaWJMaXN0WzBdKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEVHTF9SRU5ERVJfQlVGRkVSOgorICAg
ICAgICAgICAgICAgIHN3aXRjaCAoYXR0cmliTGlzdFsxXSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICBjYXNlIEVHTF9CQUNLX0JVRkZFUjoKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9TSU5HTEVfQlVGRkVSOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX05PX1NVUkZB
Q0UpOyAgIC8vIFJlbmRlcmluZyBkaXJlY3RseSB0byBmcm9udCBidWZmZXIgbm90IHN1cHBvcnRl
ZAorICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yKEVHTF9CQURfQVRUUklCVVRFLCBFR0xfTk9fU1VSRkFDRSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9QT1NU
X1NVQl9CVUZGRVJfU1VQUE9SVEVEX05WOgorICAgICAgICAgICAgICAgIHBvc3RTdWJCdWZmZXJT
dXBwb3J0ZWQgPSBhdHRyaWJMaXN0WzFdOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIEVHTF9WR19DT0xPUlNQQUNFOgorICAgICAgICAgICAgICAgIHJldHVybiBl
cnJvcihFR0xfQkFEX01BVENILCBFR0xfTk9fU1VSRkFDRSk7CisgICAgICAgICAgICAgIGNhc2Ug
RUdMX1ZHX0FMUEhBX0ZPUk1BVDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JB
RF9NQVRDSCwgRUdMX05PX1NVUkZBQ0UpOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0Up
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdHRyaWJMaXN0ICs9IDI7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoaGFzRXhpc3RpbmdXaW5kb3dTdXJmYWNlKHdpbmRvdykpCisg
ICAgeworICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX05PX1NVUkZBQ0Up
OworICAgIH0KKworICAgIGlmIChtUmVuZGVyZXItPnRlc3REZXZpY2VMb3N0KGZhbHNlKSkKKyAg
ICB7CisgICAgICAgIGlmICghcmVzdG9yZUxvc3REZXZpY2UoKSkKKyAgICAgICAgICAgIHJldHVy
biBFR0xfTk9fU1VSRkFDRTsKKyAgICB9CisKKyAgICBTdXJmYWNlICpzdXJmYWNlID0gbmV3IFN1
cmZhY2UodGhpcywgY29uZmlndXJhdGlvbiwgd2luZG93LCBwb3N0U3ViQnVmZmVyU3VwcG9ydGVk
KTsKKworICAgIGlmICghc3VyZmFjZS0+aW5pdGlhbGl6ZSgpKQorICAgIHsKKyAgICAgICAgZGVs
ZXRlIHN1cmZhY2U7CisgICAgICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKKyAgICB9CisKKyAg
ICBtU3VyZmFjZVNldC5pbnNlcnQoc3VyZmFjZSk7CisKKyAgICByZXR1cm4gc3VjY2VzcyhzdXJm
YWNlKTsKK30KKworRUdMU3VyZmFjZSBEaXNwbGF5OjpjcmVhdGVPZmZzY3JlZW5TdXJmYWNlKEVH
TENvbmZpZyBjb25maWcsIEhBTkRMRSBzaGFyZUhhbmRsZSwgY29uc3QgRUdMaW50ICphdHRyaWJM
aXN0KQoreworICAgIEVHTGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7CisgICAgRUdMZW51bSB0
ZXh0dXJlRm9ybWF0ID0gRUdMX05PX1RFWFRVUkU7CisgICAgRUdMZW51bSB0ZXh0dXJlVGFyZ2V0
ID0gRUdMX05PX1RFWFRVUkU7CisgICAgY29uc3QgQ29uZmlnICpjb25maWd1cmF0aW9uID0gbUNv
bmZpZ1NldC5nZXQoY29uZmlnKTsKKworICAgIGlmIChhdHRyaWJMaXN0KQorICAgIHsKKyAgICAg
ICAgd2hpbGUgKCphdHRyaWJMaXN0ICE9IEVHTF9OT05FKQorICAgICAgICB7CisgICAgICAgICAg
ICBzd2l0Y2ggKGF0dHJpYkxpc3RbMF0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNh
c2UgRUdMX1dJRFRIOgorICAgICAgICAgICAgICAgIHdpZHRoID0gYXR0cmliTGlzdFsxXTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfSEVJR0hUOgorICAg
ICAgICAgICAgICAgIGhlaWdodCA9IGF0dHJpYkxpc3RbMV07CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0xBUkdFU1RfUEJVRkZFUjoKKyAgICAgICAgICAg
ICAgICBpZiAoYXR0cmliTGlzdFsxXSAhPSBFR0xfRkFMU0UpCisgICAgICAgICAgICAgICAgICBV
TklNUExFTUVOVEVEKCk7IC8vIEZJWE1FCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgRUdMX1RFWFRVUkVfRk9STUFUOgorICAgICAgICAgICAgICAgIHN3aXRjaCAo
YXR0cmliTGlzdFsxXSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNl
IEVHTF9OT19URVhUVVJFOgorICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfVEVYVFVSRV9SR0I6
CisgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9URVhUVVJFX1JHQkE6CisgICAgICAgICAgICAg
ICAgICAgIHRleHR1cmVGb3JtYXQgPSBhdHRyaWJMaXN0WzFdOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBF
R0xfVEVYVFVSRV9UQVJHRVQ6CisgICAgICAgICAgICAgICAgc3dpdGNoIChhdHRyaWJMaXN0WzFd
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX05PX1RFWFRV
UkU6CisgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9URVhUVVJFXzJEOgorICAgICAgICAgICAg
ICAgICAgICB0ZXh0dXJlVGFyZ2V0ID0gYXR0cmliTGlzdFsxXTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19TVVJGQUNFKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
RUdMX01JUE1BUF9URVhUVVJFOgorICAgICAgICAgICAgICAgIGlmIChhdHRyaWJMaXN0WzFdICE9
IEVHTF9GQUxTRSkKKyAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJ
QlVURSwgRUdMX05PX1NVUkZBQ0UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIEVHTF9WR19DT0xPUlNQQUNFOgorICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cihFR0xfQkFEX01BVENILCBFR0xfTk9fU1VSRkFDRSk7CisgICAgICAgICAgICAgIGNhc2UgRUdM
X1ZHX0FMUEhBX0ZPUk1BVDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9N
QVRDSCwgRUdMX05PX1NVUkZBQ0UpOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdHRyaWJMaXN0ICs9IDI7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisgICAgeworICAgICAg
ICByZXR1cm4gZXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsIEVHTF9OT19TVVJGQUNFKTsKKyAgICB9
CisKKyAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOworICAgIH0KKwor
ICAgIGlmICh0ZXh0dXJlRm9ybWF0ICE9IEVHTF9OT19URVhUVVJFICYmICFtUmVuZGVyZXItPmdl
dE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KCkgJiYgKCFnbDo6aXNQb3cyKHdpZHRoKSB8fCAhZ2w6
OmlzUG93MihoZWlnaHQpKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX01B
VENILCBFR0xfTk9fU1VSRkFDRSk7CisgICAgfQorCisgICAgaWYgKCh0ZXh0dXJlRm9ybWF0ICE9
IEVHTF9OT19URVhUVVJFICYmIHRleHR1cmVUYXJnZXQgPT0gRUdMX05PX1RFWFRVUkUpIHx8Cisg
ICAgICAgICh0ZXh0dXJlRm9ybWF0ID09IEVHTF9OT19URVhUVVJFICYmIHRleHR1cmVUYXJnZXQg
IT0gRUdMX05PX1RFWFRVUkUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURf
TUFUQ0gsIEVHTF9OT19TVVJGQUNFKTsKKyAgICB9CisKKyAgICBpZiAoIShjb25maWd1cmF0aW9u
LT5tU3VyZmFjZVR5cGUgJiBFR0xfUEJVRkZFUl9CSVQpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGVycm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9OT19TVVJGQUNFKTsKKyAgICB9CisKKyAgICBpZiAo
KHRleHR1cmVGb3JtYXQgPT0gRUdMX1RFWFRVUkVfUkdCICYmIGNvbmZpZ3VyYXRpb24tPm1CaW5k
VG9UZXh0dXJlUkdCICE9IEVHTF9UUlVFKSB8fAorICAgICAgICAodGV4dHVyZUZvcm1hdCA9PSBF
R0xfVEVYVFVSRV9SR0JBICYmIGNvbmZpZ3VyYXRpb24tPm1CaW5kVG9UZXh0dXJlUkdCQSAhPSBF
R0xfVFJVRSkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUs
IEVHTF9OT19TVVJGQUNFKTsKKyAgICB9CisKKyAgICBpZiAobVJlbmRlcmVyLT50ZXN0RGV2aWNl
TG9zdChmYWxzZSkpCisgICAgeworICAgICAgICBpZiAoIXJlc3RvcmVMb3N0RGV2aWNlKCkpCisg
ICAgICAgICAgICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7CisgICAgfQorCisgICAgU3VyZmFjZSAq
c3VyZmFjZSA9IG5ldyBTdXJmYWNlKHRoaXMsIGNvbmZpZ3VyYXRpb24sIHNoYXJlSGFuZGxlLCB3
aWR0aCwgaGVpZ2h0LCB0ZXh0dXJlRm9ybWF0LCB0ZXh0dXJlVGFyZ2V0KTsKKworICAgIGlmICgh
c3VyZmFjZS0+aW5pdGlhbGl6ZSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHN1cmZhY2U7Cisg
ICAgICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKKyAgICB9CisKKyAgICBtU3VyZmFjZVNldC5p
bnNlcnQoc3VyZmFjZSk7CisKKyAgICByZXR1cm4gc3VjY2VzcyhzdXJmYWNlKTsKK30KKworRUdM
Q29udGV4dCBEaXNwbGF5OjpjcmVhdGVDb250ZXh0KEVHTENvbmZpZyBjb25maWdIYW5kbGUsIGNv
bnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsIGJvb2wgbm90aWZ5UmVzZXRzLCBib29sIHJv
YnVzdEFjY2VzcykKK3sKKyAgICBpZiAoIW1SZW5kZXJlcikKKyAgICB7CisgICAgICAgIHJldHVy
biBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChtUmVuZGVyZXItPnRlc3REZXZpY2VMb3N0KGZh
bHNlKSkgICAvLyBMb3N0IGRldmljZQorICAgIHsKKyAgICAgICAgaWYgKCFyZXN0b3JlTG9zdERl
dmljZSgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbENyZWF0ZUNvbnRleHQoc2hhcmVDb250ZXh0LCBtUmVuZGVyZXIsIG5v
dGlmeVJlc2V0cywgcm9idXN0QWNjZXNzKTsKKyAgICBtQ29udGV4dFNldC5pbnNlcnQoY29udGV4
dCk7CisKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworYm9vbCBEaXNwbGF5OjpyZXN0b3JlTG9z
dERldmljZSgpCit7CisgICAgZm9yIChDb250ZXh0U2V0OjppdGVyYXRvciBjdHggPSBtQ29udGV4
dFNldC5iZWdpbigpOyBjdHggIT0gbUNvbnRleHRTZXQuZW5kKCk7IGN0eCsrKQorICAgIHsKKyAg
ICAgICAgaWYgKCgqY3R4KS0+aXNSZXNldE5vdGlmaWNhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsgICAvLyBJZiByZXNldCBub3RpZmljYXRpb25zIGhhdmUgYmVlbiBy
ZXF1ZXN0ZWQsIGFwcGxpY2F0aW9uIG11c3QgZGVsZXRlIGFsbCBjb250ZXh0cyBmaXJzdAorICAg
IH0KKyAKKyAgICAvLyBSZWxlYXNlIHN1cmZhY2UgcmVzb3VyY2VzIHRvIG1ha2UgdGhlIFJlc2V0
KCkgc3VjY2VlZAorICAgIGZvciAoU3VyZmFjZVNldDo6aXRlcmF0b3Igc3VyZmFjZSA9IG1TdXJm
YWNlU2V0LmJlZ2luKCk7IHN1cmZhY2UgIT0gbVN1cmZhY2VTZXQuZW5kKCk7IHN1cmZhY2UrKykK
KyAgICB7CisgICAgICAgICgqc3VyZmFjZSktPnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBpZiAo
IW1SZW5kZXJlci0+cmVzZXREZXZpY2UoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihF
R0xfQkFEX0FMTE9DLCBmYWxzZSk7CisgICAgfQorCisgICAgLy8gUmVzdG9yZSBhbnkgc3VyZmFj
ZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIGxvc3QKKyAgICBmb3IgKFN1cmZhY2VTZXQ6Oml0ZXJhdG9y
IHN1cmZhY2UgPSBtU3VyZmFjZVNldC5iZWdpbigpOyBzdXJmYWNlICE9IG1TdXJmYWNlU2V0LmVu
ZCgpOyBzdXJmYWNlKyspCisgICAgeworICAgICAgICAoKnN1cmZhY2UpLT5yZXNldFN3YXBDaGFp
bigpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisKK3ZvaWQgRGlzcGxheTo6ZGVz
dHJveVN1cmZhY2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKQoreworICAgIGRlbGV0ZSBzdXJmYWNl
OworICAgIG1TdXJmYWNlU2V0LmVyYXNlKHN1cmZhY2UpOworfQorCit2b2lkIERpc3BsYXk6OmRl
c3Ryb3lDb250ZXh0KGdsOjpDb250ZXh0ICpjb250ZXh0KQoreworICAgIGdsRGVzdHJveUNvbnRl
eHQoY29udGV4dCk7CisgICAgbUNvbnRleHRTZXQuZXJhc2UoY29udGV4dCk7Cit9CisKK3ZvaWQg
RGlzcGxheTo6bm90aWZ5RGV2aWNlTG9zdCgpCit7CisgICAgZm9yIChDb250ZXh0U2V0OjppdGVy
YXRvciBjb250ZXh0ID0gbUNvbnRleHRTZXQuYmVnaW4oKTsgY29udGV4dCAhPSBtQ29udGV4dFNl
dC5lbmQoKTsgY29udGV4dCsrKQorICAgIHsKKyAgICAgICAgKCpjb250ZXh0KS0+bWFya0NvbnRl
eHRMb3N0KCk7CisgICAgfQorICAgIGVnbDo6ZXJyb3IoRUdMX0NPTlRFWFRfTE9TVCk7Cit9CisK
K3ZvaWQgRGlzcGxheTo6cmVjcmVhdGVTd2FwQ2hhaW5zKCkKK3sKKyAgICBmb3IgKFN1cmZhY2VT
ZXQ6Oml0ZXJhdG9yIHN1cmZhY2UgPSBtU3VyZmFjZVNldC5iZWdpbigpOyBzdXJmYWNlICE9IG1T
dXJmYWNlU2V0LmVuZCgpOyBzdXJmYWNlKyspCisgICAgeworICAgICAgICAoKnN1cmZhY2UpLT5n
ZXRTd2FwQ2hhaW4oKS0+cmVjcmVhdGUoKTsKKyAgICB9Cit9CisKK2Jvb2wgRGlzcGxheTo6aXNJ
bml0aWFsaXplZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlciAhPSBOVUxMICYmIG1D
b25maWdTZXQuc2l6ZSgpID4gMDsKK30KKworYm9vbCBEaXNwbGF5Ojppc1ZhbGlkQ29uZmlnKEVH
TENvbmZpZyBjb25maWcpCit7CisgICAgcmV0dXJuIG1Db25maWdTZXQuZ2V0KGNvbmZpZykgIT0g
TlVMTDsKK30KKworYm9vbCBEaXNwbGF5Ojppc1ZhbGlkQ29udGV4dChnbDo6Q29udGV4dCAqY29u
dGV4dCkKK3sKKyAgICByZXR1cm4gbUNvbnRleHRTZXQuZmluZChjb250ZXh0KSAhPSBtQ29udGV4
dFNldC5lbmQoKTsKK30KKworYm9vbCBEaXNwbGF5Ojppc1ZhbGlkU3VyZmFjZShlZ2w6OlN1cmZh
Y2UgKnN1cmZhY2UpCit7CisgICAgcmV0dXJuIG1TdXJmYWNlU2V0LmZpbmQoc3VyZmFjZSkgIT0g
bVN1cmZhY2VTZXQuZW5kKCk7Cit9CisKK2Jvb2wgRGlzcGxheTo6aGFzRXhpc3RpbmdXaW5kb3dT
dXJmYWNlKEhXTkQgd2luZG93KQoreworICAgIGZvciAoU3VyZmFjZVNldDo6aXRlcmF0b3Igc3Vy
ZmFjZSA9IG1TdXJmYWNlU2V0LmJlZ2luKCk7IHN1cmZhY2UgIT0gbVN1cmZhY2VTZXQuZW5kKCk7
IHN1cmZhY2UrKykKKyAgICB7CisgICAgICAgIGlmICgoKnN1cmZhY2UpLT5nZXRXaW5kb3dIYW5k
bGUoKSA9PSB3aW5kb3cpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIERpc3BsYXk6Omlu
aXRFeHRlbnNpb25TdHJpbmcoKQoreworICAgIEhNT0RVTEUgc3dpZnRTaGFkZXIgPSBHZXRNb2R1
bGVIYW5kbGUoVEVYVCgic3dpZnRzaGFkZXJfZDNkOS5kbGwiKSk7CisgICAgYm9vbCBzaGFyZUhh
bmRsZVN1cHBvcnRlZCA9IG1SZW5kZXJlci0+Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KCk7CisKKyAg
ICBtRXh0ZW5zaW9uU3RyaW5nID0gIiI7CisKKyAgICAvLyBNdWx0aS12ZW5kb3IgKEVYVCkgZXh0
ZW5zaW9ucworICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkVHTF9FWFRfY3JlYXRlX2NvbnRleHRf
cm9idXN0bmVzcyAiOworCisgICAgLy8gQU5HTEUtc3BlY2lmaWMgZXh0ZW5zaW9ucworICAgIGlm
IChzaGFyZUhhbmRsZVN1cHBvcnRlZCkKKyAgICB7CisgICAgICAgIG1FeHRlbnNpb25TdHJpbmcg
Kz0gIkVHTF9BTkdMRV9kM2Rfc2hhcmVfaGFuZGxlX2NsaWVudF9idWZmZXIgIjsKKyAgICB9CisK
KyAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJFR0xfQU5HTEVfcXVlcnlfc3VyZmFjZV9wb2ludGVy
ICI7CisKKyAgICBpZiAoc3dpZnRTaGFkZXIpCisgICAgeworICAgICAgICBtRXh0ZW5zaW9uU3Ry
aW5nICs9ICJFR0xfQU5HTEVfc29mdHdhcmVfZGlzcGxheSAiOworICAgIH0KKworICAgIGlmIChz
aGFyZUhhbmRsZVN1cHBvcnRlZCkKKyAgICB7CisgICAgICAgIG1FeHRlbnNpb25TdHJpbmcgKz0g
IkVHTF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZSAiOworICAgIH0K
KworICAgIGlmIChtUmVuZGVyZXItPmdldFBvc3RTdWJCdWZmZXJTdXBwb3J0KCkpCisgICAgewor
ICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJFR0xfTlZfcG9zdF9zdWJfYnVmZmVyIjsKKyAg
ICB9CisKKyAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGVuZCA9IG1FeHRlbnNpb25TdHJpbmcu
ZmluZF9sYXN0X25vdF9vZignICcpOworICAgIGlmIChlbmQgIT0gc3RkOjpzdHJpbmc6Om5wb3Mp
CisgICAgeworICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nLnJlc2l6ZShlbmQrMSk7CisgICAgfQor
fQorCitjb25zdCBjaGFyICpEaXNwbGF5OjpnZXRFeHRlbnNpb25TdHJpbmcoKSBjb25zdAorewor
ICAgIHJldHVybiBtRXh0ZW5zaW9uU3RyaW5nLmNfc3RyKCk7Cit9CisKK3ZvaWQgRGlzcGxheTo6
aW5pdFZlbmRvclN0cmluZygpCit7CisgICAgbVZlbmRvclN0cmluZyA9ICJHb29nbGUgSW5jLiI7
CisKKyAgICBMVUlEIGFkYXB0ZXJMdWlkID0gezB9OworCisgICAgaWYgKG1SZW5kZXJlciAmJiBt
UmVuZGVyZXItPmdldExVSUQoJmFkYXB0ZXJMdWlkKSkKKyAgICB7CisgICAgICAgIGNoYXIgYWRh
cHRlckx1aWRTdHJpbmdbNjRdOworICAgICAgICBzcHJpbnRmX3MoYWRhcHRlckx1aWRTdHJpbmcs
IHNpemVvZihhZGFwdGVyTHVpZFN0cmluZyksICIgKGFkYXB0ZXIgTFVJRDogJTA4eCUwOHgpIiwg
YWRhcHRlckx1aWQuSGlnaFBhcnQsIGFkYXB0ZXJMdWlkLkxvd1BhcnQpOworCisgICAgICAgIG1W
ZW5kb3JTdHJpbmcgKz0gYWRhcHRlckx1aWRTdHJpbmc7CisgICAgfQorfQorCitjb25zdCBjaGFy
ICpEaXNwbGF5OjpnZXRWZW5kb3JTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtVmVuZG9y
U3RyaW5nLmNfc3RyKCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJFR0wvRGlzcGxheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJFR0wvRGlzcGxheS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkVHTC9EaXNwbGF5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTQgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIERpc3BsYXkuaDogRGVmaW5lcyB0aGUgZWdsOjpEaXNw
bGF5IGNsYXNzLCByZXByZXNlbnRpbmcgdGhlIGFic3RyYWN0CisvLyBkaXNwbGF5IG9uIHdoaWNo
IGdyYXBoaWNzIGFyZSBkcmF3bi4gSW1wbGVtZW50cyBFR0xEaXNwbGF5LgorLy8gW0VHTCAxLjRd
IHNlY3Rpb24gMi4xLjIgcGFnZSAzLgorCisjaWZuZGVmIExJQkVHTF9ESVNQTEFZX0hfCisjZGVm
aW5lIExJQkVHTF9ESVNQTEFZX0hfCisKKyNpbmNsdWRlICJjb21tb24vc3lzdGVtLmgiCisKKyNp
bmNsdWRlIDxzZXQ+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAibGliRUdML0NvbmZp
Zy5oIgorCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIENvbnRleHQ7Cit9CisKK25hbWVzcGFjZSBl
Z2wKK3sKK2NsYXNzIFN1cmZhY2U7CisKK2NsYXNzIERpc3BsYXkKK3sKKyAgcHVibGljOgorICAg
IH5EaXNwbGF5KCk7CisKKyAgICBib29sIGluaXRpYWxpemUoKTsKKyAgICB2b2lkIHRlcm1pbmF0
ZSgpOworCisgICAgc3RhdGljIGVnbDo6RGlzcGxheSAqZ2V0RGlzcGxheShFR0xOYXRpdmVEaXNw
bGF5VHlwZSBkaXNwbGF5SWQpOworCisgICAgYm9vbCBnZXRDb25maWdzKEVHTENvbmZpZyAqY29u
ZmlncywgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0LCBFR0xpbnQgY29uZmlnU2l6ZSwgRUdMaW50
ICpudW1Db25maWcpOworICAgIGJvb2wgZ2V0Q29uZmlnQXR0cmliKEVHTENvbmZpZyBjb25maWcs
IEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpOworCisgICAgRUdMU3VyZmFjZSBjcmVh
dGVXaW5kb3dTdXJmYWNlKEhXTkQgd2luZG93LCBFR0xDb25maWcgY29uZmlnLCBjb25zdCBFR0xp
bnQgKmF0dHJpYkxpc3QpOworICAgIEVHTFN1cmZhY2UgY3JlYXRlT2Zmc2NyZWVuU3VyZmFjZShF
R0xDb25maWcgY29uZmlnLCBIQU5ETEUgc2hhcmVIYW5kbGUsIGNvbnN0IEVHTGludCAqYXR0cmli
TGlzdCk7CisgICAgRUdMQ29udGV4dCBjcmVhdGVDb250ZXh0KEVHTENvbmZpZyBjb25maWdIYW5k
bGUsIGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsIGJvb2wgbm90aWZ5UmVzZXRzLCBi
b29sIHJvYnVzdEFjY2Vzcyk7CisKKyAgICB2b2lkIGRlc3Ryb3lTdXJmYWNlKGVnbDo6U3VyZmFj
ZSAqc3VyZmFjZSk7CisgICAgdm9pZCBkZXN0cm95Q29udGV4dChnbDo6Q29udGV4dCAqY29udGV4
dCk7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsKKyAgICBib29sIGlzVmFsaWRD
b25maWcoRUdMQ29uZmlnIGNvbmZpZyk7CisgICAgYm9vbCBpc1ZhbGlkQ29udGV4dChnbDo6Q29u
dGV4dCAqY29udGV4dCk7CisgICAgYm9vbCBpc1ZhbGlkU3VyZmFjZShlZ2w6OlN1cmZhY2UgKnN1
cmZhY2UpOworICAgIGJvb2wgaGFzRXhpc3RpbmdXaW5kb3dTdXJmYWNlKEhXTkQgd2luZG93KTsK
KworICAgIHJ4OjpSZW5kZXJlciAqZ2V0UmVuZGVyZXIoKSB7IHJldHVybiBtUmVuZGVyZXI7IH07
CisKKyAgICAvLyBleHBvcnRlZCBtZXRob2RzIG11c3QgYmUgdmlydHVhbAorICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlEZXZpY2VMb3N0KCk7CisgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlU3dhcENo
YWlucygpOworCisgICAgY29uc3QgY2hhciAqZ2V0RXh0ZW5zaW9uU3RyaW5nKCkgY29uc3Q7Cisg
ICAgY29uc3QgY2hhciAqZ2V0VmVuZG9yU3RyaW5nKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oRGlzcGxheSk7CisKKyAgICBEaXNwbGF5KEVHTE5h
dGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlJZCwgSERDIGRldmljZUNvbnRleHQpOworCisgICAgYm9v
bCByZXN0b3JlTG9zdERldmljZSgpOworCisgICAgRUdMTmF0aXZlRGlzcGxheVR5cGUgbURpc3Bs
YXlJZDsKKyAgICBjb25zdCBIREMgbURjOworCisgICAgYm9vbCBtU29mdHdhcmVEZXZpY2U7Cisg
ICAgCisgICAgdHlwZWRlZiBzdGQ6OnNldDxTdXJmYWNlKj4gU3VyZmFjZVNldDsKKyAgICBTdXJm
YWNlU2V0IG1TdXJmYWNlU2V0OworCisgICAgQ29uZmlnU2V0IG1Db25maWdTZXQ7CisKKyAgICB0
eXBlZGVmIHN0ZDo6c2V0PGdsOjpDb250ZXh0Kj4gQ29udGV4dFNldDsKKyAgICBDb250ZXh0U2V0
IG1Db250ZXh0U2V0OworCisgICAgcng6OlJlbmRlcmVyICptUmVuZGVyZXI7CisKKyAgICB2b2lk
IGluaXRFeHRlbnNpb25TdHJpbmcoKTsKKyAgICB2b2lkIGluaXRWZW5kb3JTdHJpbmcoKTsKKyAg
ICBzdGQ6OnN0cmluZyBtRXh0ZW5zaW9uU3RyaW5nOworICAgIHN0ZDo6c3RyaW5nIG1WZW5kb3JT
dHJpbmc7Cit9OworfQorCisjZW5kaWYgICAvLyBMSUJFR0xfRElTUExBWV9IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9TdXJmYWNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1N1cmZhY2UuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9TdXJmYWNlLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MDggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDIt
MjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN1
cmZhY2UuY3BwOiBJbXBsZW1lbnRzIHRoZSBlZ2w6OlN1cmZhY2UgY2xhc3MsIHJlcHJlc2VudGlu
ZyBhIGRyYXdpbmcgc3VyZmFjZQorLy8gc3VjaCBhcyB0aGUgY2xpZW50IGFyZWEgb2YgYSB3aW5k
b3csIGluY2x1ZGluZyBhbnkgYmFjayBidWZmZXJzLgorLy8gSW1wbGVtZW50cyBFR0xTdXJmYWNl
IGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIFtFR0wgMS40XSBzZWN0aW9uIDIuMiBwYWdlIDMu
CisKKyNpbmNsdWRlIDx0Y2hhci5oPgorCisjaW5jbHVkZSAibGliRUdML1N1cmZhY2UuaCIKKwor
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9tYWluLmgiCisKKyNpbmNsdWRlICJsaWJFR0wvbWFpbi5oIgorI2luY2x1ZGUgImxp
YkVHTC9EaXNwbGF5LmgiCisKK25hbWVzcGFjZSBlZ2wKK3sKKworU3VyZmFjZTo6U3VyZmFjZShE
aXNwbGF5ICpkaXNwbGF5LCBjb25zdCBDb25maWcgKmNvbmZpZywgSFdORCB3aW5kb3csIEVHTGlu
dCBwb3N0U3ViQnVmZmVyU3VwcG9ydGVkKSAKKyAgICA6IG1EaXNwbGF5KGRpc3BsYXkpLCBtQ29u
ZmlnKGNvbmZpZyksIG1XaW5kb3cod2luZG93KSwgbVBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQocG9z
dFN1YkJ1ZmZlclN1cHBvcnRlZCkKK3sKKyAgICBtUmVuZGVyZXIgPSBtRGlzcGxheS0+Z2V0UmVu
ZGVyZXIoKTsKKyAgICBtU3dhcENoYWluID0gTlVMTDsKKyAgICBtU2hhcmVIYW5kbGUgPSBOVUxM
OworICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICBtVGV4dHVyZUZvcm1hdCA9IEVHTF9OT19URVhU
VVJFOworICAgIG1UZXh0dXJlVGFyZ2V0ID0gRUdMX05PX1RFWFRVUkU7CisKKyAgICBtUGl4ZWxB
c3BlY3RSYXRpbyA9IChFR0xpbnQpKDEuMCAqIEVHTF9ESVNQTEFZX1NDQUxJTkcpOyAgIC8vIEZJ
WE1FOiBEZXRlcm1pbmUgYWN0dWFsIHBpeGVsIGFzcGVjdCByYXRpbworICAgIG1SZW5kZXJCdWZm
ZXIgPSBFR0xfQkFDS19CVUZGRVI7CisgICAgbVN3YXBCZWhhdmlvciA9IEVHTF9CVUZGRVJfUFJF
U0VSVkVEOworICAgIG1Td2FwSW50ZXJ2YWwgPSAtMTsKKyAgICBtV2lkdGggPSAtMTsKKyAgICBt
SGVpZ2h0ID0gLTE7CisgICAgc2V0U3dhcEludGVydmFsKDEpOworCisgICAgc3ViY2xhc3NXaW5k
b3coKTsKK30KKworU3VyZmFjZTo6U3VyZmFjZShEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBDb25m
aWcgKmNvbmZpZywgSEFORExFIHNoYXJlSGFuZGxlLCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWln
aHQsIEVHTGVudW0gdGV4dHVyZUZvcm1hdCwgRUdMZW51bSB0ZXh0dXJlVHlwZSkKKyAgICA6IG1E
aXNwbGF5KGRpc3BsYXkpLCBtV2luZG93KE5VTEwpLCBtQ29uZmlnKGNvbmZpZyksIG1TaGFyZUhh
bmRsZShzaGFyZUhhbmRsZSksIG1XaWR0aCh3aWR0aCksIG1IZWlnaHQoaGVpZ2h0KSwgbVBvc3RT
dWJCdWZmZXJTdXBwb3J0ZWQoRUdMX0ZBTFNFKQoreworICAgIG1SZW5kZXJlciA9IG1EaXNwbGF5
LT5nZXRSZW5kZXJlcigpOworICAgIG1Td2FwQ2hhaW4gPSBOVUxMOworICAgIG1XaW5kb3dTdWJj
bGFzc2VkID0gZmFsc2U7CisgICAgbVRleHR1cmUgPSBOVUxMOworICAgIG1UZXh0dXJlRm9ybWF0
ID0gdGV4dHVyZUZvcm1hdDsKKyAgICBtVGV4dHVyZVRhcmdldCA9IHRleHR1cmVUeXBlOworCisg
ICAgbVBpeGVsQXNwZWN0UmF0aW8gPSAoRUdMaW50KSgxLjAgKiBFR0xfRElTUExBWV9TQ0FMSU5H
KTsgICAvLyBGSVhNRTogRGV0ZXJtaW5lIGFjdHVhbCBwaXhlbCBhc3BlY3QgcmF0aW8KKyAgICBt
UmVuZGVyQnVmZmVyID0gRUdMX0JBQ0tfQlVGRkVSOworICAgIG1Td2FwQmVoYXZpb3IgPSBFR0xf
QlVGRkVSX1BSRVNFUlZFRDsKKyAgICBtU3dhcEludGVydmFsID0gLTE7CisgICAgc2V0U3dhcElu
dGVydmFsKDEpOworfQorCitTdXJmYWNlOjp+U3VyZmFjZSgpCit7CisgICAgdW5zdWJjbGFzc1dp
bmRvdygpOworICAgIHJlbGVhc2UoKTsKK30KKworYm9vbCBTdXJmYWNlOjppbml0aWFsaXplKCkK
K3sKKyAgICBpZiAoIXJlc2V0U3dhcENoYWluKCkpCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTdXJmYWNlOjpyZWxlYXNlKCkKK3sKKyAgICBkZWxl
dGUgbVN3YXBDaGFpbjsKKyAgICBtU3dhcENoYWluID0gTlVMTDsKKworICAgIGlmIChtVGV4dHVy
ZSkKKyAgICB7CisgICAgICAgIG1UZXh0dXJlLT5yZWxlYXNlVGV4SW1hZ2UoKTsKKyAgICAgICAg
bVRleHR1cmUgPSBOVUxMOworICAgIH0KK30KKworYm9vbCBTdXJmYWNlOjpyZXNldFN3YXBDaGFp
bigpCit7CisgICAgQVNTRVJUKCFtU3dhcENoYWluKTsKKworICAgIGludCB3aWR0aDsKKyAgICBp
bnQgaGVpZ2h0OworCisgICAgaWYgKG1XaW5kb3cpCisgICAgeworICAgICAgICBSRUNUIHdpbmRv
d1JlY3Q7CisgICAgICAgIGlmICghR2V0Q2xpZW50UmVjdChnZXRXaW5kb3dIYW5kbGUoKSwgJndp
bmRvd1JlY3QpKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoZmFsc2UpOworCisgICAg
ICAgICAgICBFUlIoIkNvdWxkIG5vdCByZXRyaWV2ZSB0aGUgd2luZG93IGRpbWVuc2lvbnMiKTsK
KyAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX1NVUkZBQ0UsIGZhbHNlKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHdpZHRoID0gd2luZG93UmVjdC5yaWdodCAtIHdpbmRvd1JlY3QubGVm
dDsKKyAgICAgICAgaGVpZ2h0ID0gd2luZG93UmVjdC5ib3R0b20gLSB3aW5kb3dSZWN0LnRvcDsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gbm9uLXdpbmRvdyBzdXJmYWNlIC0g
c2l6ZSBpcyBkZXRlcm1pbmVkIGF0IGNyZWF0aW9uCisgICAgICAgIHdpZHRoID0gbVdpZHRoOwor
ICAgICAgICBoZWlnaHQgPSBtSGVpZ2h0OworICAgIH0KKworICAgIG1Td2FwQ2hhaW4gPSBtUmVu
ZGVyZXItPmNyZWF0ZVN3YXBDaGFpbihtV2luZG93LCBtU2hhcmVIYW5kbGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db25maWctPm1SZW5kZXJUYXJnZXRG
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db25m
aWctPm1EZXB0aFN0ZW5jaWxGb3JtYXQpOworICAgIGlmICghbVN3YXBDaGFpbikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCBmYWxzZSk7CisgICAgfQorCisgICAg
aWYgKCFyZXNldFN3YXBDaGFpbih3aWR0aCwgaGVpZ2h0KSkKKyAgICB7CisgICAgICAgIGRlbGV0
ZSBtU3dhcENoYWluOworICAgICAgICBtU3dhcENoYWluID0gTlVMTDsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFN1cmZhY2U6OnJl
c2l6ZVN3YXBDaGFpbihpbnQgYmFja2J1ZmZlcldpZHRoLCBpbnQgYmFja2J1ZmZlckhlaWdodCkK
K3sKKyAgICBBU1NFUlQoYmFja2J1ZmZlcldpZHRoID49IDAgJiYgYmFja2J1ZmZlckhlaWdodCA+
PSAwKTsKKyAgICBBU1NFUlQobVN3YXBDaGFpbik7CisKKyAgICBFR0xpbnQgc3RhdHVzID0gbVN3
YXBDaGFpbi0+cmVzaXplKGJhY2tidWZmZXJXaWR0aCwgYmFja2J1ZmZlckhlaWdodCk7CisKKyAg
ICBpZiAoc3RhdHVzID09IEVHTF9DT05URVhUX0xPU1QpCisgICAgeworICAgICAgICBtRGlzcGxh
eS0+bm90aWZ5RGV2aWNlTG9zdCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IGVsc2UgaWYgKHN0YXR1cyAhPSBFR0xfU1VDQ0VTUykKKyAgICB7CisgICAgICAgIHJldHVybiBl
cnJvcihzdGF0dXMsIGZhbHNlKTsKKyAgICB9CisKKyAgICBtV2lkdGggPSBiYWNrYnVmZmVyV2lk
dGg7CisgICAgbUhlaWdodCA9IGJhY2tidWZmZXJIZWlnaHQ7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBTdXJmYWNlOjpyZXNldFN3YXBDaGFpbihpbnQgYmFja2J1ZmZlcldpZHRoLCBp
bnQgYmFja2J1ZmZlckhlaWdodCkKK3sKKyAgICBBU1NFUlQoYmFja2J1ZmZlcldpZHRoID49IDAg
JiYgYmFja2J1ZmZlckhlaWdodCA+PSAwKTsKKyAgICBBU1NFUlQobVN3YXBDaGFpbik7CisKKyAg
ICBFR0xpbnQgc3RhdHVzID0gbVN3YXBDaGFpbi0+cmVzZXQoYmFja2J1ZmZlcldpZHRoLCBiYWNr
YnVmZmVySGVpZ2h0LCBtU3dhcEludGVydmFsKTsKKworICAgIGlmIChzdGF0dXMgPT0gRUdMX0NP
TlRFWFRfTE9TVCkKKyAgICB7CisgICAgICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNlTG9zdCgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGVsc2UgaWYgKHN0YXR1cyAhPSBF
R0xfU1VDQ0VTUykKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihzdGF0dXMsIGZhbHNlKTsK
KyAgICB9CisKKyAgICBtV2lkdGggPSBiYWNrYnVmZmVyV2lkdGg7CisgICAgbUhlaWdodCA9IGJh
Y2tidWZmZXJIZWlnaHQ7CisgICAgbVN3YXBJbnRlcnZhbERpcnR5ID0gZmFsc2U7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTdXJmYWNlOjpzd2FwUmVjdChFR0xpbnQgeCwgRUdMaW50
IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkKK3sKKyAgICBpZiAoIW1Td2FwQ2hhaW4p
CisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoeCArIHdpZHRo
ID4gbVdpZHRoKQorICAgIHsKKyAgICAgICAgd2lkdGggPSBtV2lkdGggLSB4OworICAgIH0KKwor
ICAgIGlmICh5ICsgaGVpZ2h0ID4gbUhlaWdodCkKKyAgICB7CisgICAgICAgIGhlaWdodCA9IG1I
ZWlnaHQgLSB5OworICAgIH0KKworICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgRUdMaW50IHN0YXR1cyA9
IG1Td2FwQ2hhaW4tPnN3YXBSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworCisgICAgaWYgKHN0
YXR1cyA9PSBFR0xfQ09OVEVYVF9MT1NUKQorICAgIHsKKyAgICAgICAgbVJlbmRlcmVyLT5ub3Rp
ZnlEZXZpY2VMb3N0KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZWxzZSBp
ZiAoc3RhdHVzICE9IEVHTF9TVUNDRVNTKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yKHN0
YXR1cywgZmFsc2UpOworICAgIH0KKworICAgIGNoZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCk7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSFdORCBTdXJmYWNlOjpnZXRXaW5kb3dIYW5kbGUo
KQoreworICAgIHJldHVybiBtV2luZG93OworfQorCisKKyNkZWZpbmUga1N1cmZhY2VQcm9wZXJ0
eSBfVEVYVCgiRWdsOjpTdXJmYWNlT3duZXIiKQorI2RlZmluZSBrUGFyZW50V25kUHJvYyBfVEVY
VCgiRWdsOjpTdXJmYWNlUGFyZW50V25kUHJvYyIpCisKK3N0YXRpYyBMUkVTVUxUIENBTExCQUNL
IFN1cmZhY2VXaW5kb3dQcm9jKEhXTkQgaHduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd3BhcmFt
LCBMUEFSQU0gbHBhcmFtKQoreworICBpZiAobWVzc2FnZSA9PSBXTV9TSVpFKQorICB7CisgICAg
ICBTdXJmYWNlKiBzdXJmID0gcmVpbnRlcnByZXRfY2FzdDxTdXJmYWNlKj4oR2V0UHJvcChod25k
LCBrU3VyZmFjZVByb3BlcnR5KSk7CisgICAgICBpZihzdXJmKQorICAgICAgeworICAgICAgICAg
IHN1cmYtPmNoZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCk7CisgICAgICB9CisgIH0KKyAgV05E
UFJPQyBwcmV2V25kRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V05EUFJPQyA+KEdldFByb3AoaHdu
ZCwga1BhcmVudFduZFByb2MpKTsKKyAgcmV0dXJuIENhbGxXaW5kb3dQcm9jKHByZXZXbmRGdW5j
LCBod25kLCBtZXNzYWdlLCB3cGFyYW0sIGxwYXJhbSk7Cit9CisKK3ZvaWQgU3VyZmFjZTo6c3Vi
Y2xhc3NXaW5kb3coKQoreworICAgIGlmICghbVdpbmRvdykKKyAgICB7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBEV09SRCBwcm9jZXNzSWQ7CisgICAgRFdPUkQgdGhyZWFkSWQgPSBH
ZXRXaW5kb3dUaHJlYWRQcm9jZXNzSWQobVdpbmRvdywgJnByb2Nlc3NJZCk7CisgICAgaWYgKHBy
b2Nlc3NJZCAhPSBHZXRDdXJyZW50UHJvY2Vzc0lkKCkgfHwgdGhyZWFkSWQgIT0gR2V0Q3VycmVu
dFRocmVhZElkKCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU2V0TGFz
dEVycm9yKDApOworICAgIExPTkdfUFRSIG9sZFduZFByb2MgPSBTZXRXaW5kb3dMb25nUHRyKG1X
aW5kb3csIEdXTFBfV05EUFJPQywgcmVpbnRlcnByZXRfY2FzdDxMT05HX1BUUj4oU3VyZmFjZVdp
bmRvd1Byb2MpKTsKKyAgICBpZihvbGRXbmRQcm9jID09IDAgJiYgR2V0TGFzdEVycm9yKCkgIT0g
RVJST1JfU1VDQ0VTUykKKyAgICB7CisgICAgICAgIG1XaW5kb3dTdWJjbGFzc2VkID0gZmFsc2U7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTZXRQcm9wKG1XaW5kb3csIGtTdXJmYWNl
UHJvcGVydHksIHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPih0aGlzKSk7CisgICAgU2V0UHJvcCht
V2luZG93LCBrUGFyZW50V25kUHJvYywgcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KG9sZFduZFBy
b2MpKTsKKyAgICBtV2luZG93U3ViY2xhc3NlZCA9IHRydWU7Cit9CisKK3ZvaWQgU3VyZmFjZTo6
dW5zdWJjbGFzc1dpbmRvdygpCit7CisgICAgaWYoIW1XaW5kb3dTdWJjbGFzc2VkKQorICAgIHsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIHVuLXN1YmNsYXNzCisgICAgTE9OR19Q
VFIgcGFyZW50V25kRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TE9OR19QVFI+KEdldFByb3AobVdp
bmRvdywga1BhcmVudFduZFByb2MpKTsKKworICAgIC8vIENoZWNrIHRoZSB3aW5kb3dwcm9jIGlz
IHN0aWxsIFN1cmZhY2VXaW5kb3dQcm9jLgorICAgIC8vIElmIHRoaXMgYXNzZXJ0IGZhaWxzLCB0
aGVuIGl0IGlzIGxpa2VseSB0aGUgYXBwbGljYXRpb24gaGFzIHN1YmNsYXNzZWQgdGhlCisgICAg
Ly8gaHduZCBhcyB3ZWxsIGFuZCBkaWQgbm90IHVuc3ViY2xhc3MgYmVmb3JlIGRlc3Ryb3lpbmcg
aXRzIEVHTCBjb250ZXh0LiBUaGUKKyAgICAvLyBhcHBsaWNhdGlvbiBzaG91bGQgYmUgbW9kaWZp
ZWQgdG8gZWl0aGVyIHN1YmNsYXNzIGJlZm9yZSBpbml0aWFsaXppbmcgdGhlCisgICAgLy8gRUdM
IGNvbnRleHQsIG9yIHRvIHVuc3ViY2xhc3MgYmVmb3JlIGRlc3Ryb3lpbmcgdGhlIEVHTCBjb250
ZXh0LgorICAgIGlmKHBhcmVudFduZEZ1bmMpCisgICAgeworICAgICAgICBMT05HX1BUUiBwcmV2
V25kRnVuYyA9IFNldFdpbmRvd0xvbmdQdHIobVdpbmRvdywgR1dMUF9XTkRQUk9DLCBwYXJlbnRX
bmRGdW5jKTsKKyAgICAgICAgQVNTRVJUKHByZXZXbmRGdW5jID09IHJlaW50ZXJwcmV0X2Nhc3Q8
TE9OR19QVFI+KFN1cmZhY2VXaW5kb3dQcm9jKSk7CisgICAgfQorCisgICAgUmVtb3ZlUHJvcCht
V2luZG93LCBrU3VyZmFjZVByb3BlcnR5KTsKKyAgICBSZW1vdmVQcm9wKG1XaW5kb3csIGtQYXJl
bnRXbmRQcm9jKTsKKyAgICBtV2luZG93U3ViY2xhc3NlZCA9IGZhbHNlOworfQorCitib29sIFN1
cmZhY2U6OmNoZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCkKK3sKKyAgICBSRUNUIGNsaWVudDsK
KyAgICBpZiAoIUdldENsaWVudFJlY3QoZ2V0V2luZG93SGFuZGxlKCksICZjbGllbnQpKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIC8vIEdyb3cgdGhlIGJ1ZmZlciBub3csIGlmIHRoZSB3aW5kb3cgaGFzIGdyb3duLiBX
ZSBuZWVkIHRvIGdyb3cgbm93IHRvIGF2b2lkIGxvc2luZyBpbmZvcm1hdGlvbi4KKyAgICBpbnQg
Y2xpZW50V2lkdGggPSBjbGllbnQucmlnaHQgLSBjbGllbnQubGVmdDsKKyAgICBpbnQgY2xpZW50
SGVpZ2h0ID0gY2xpZW50LmJvdHRvbSAtIGNsaWVudC50b3A7CisgICAgYm9vbCBzaXplRGlydHkg
PSBjbGllbnRXaWR0aCAhPSBnZXRXaWR0aCgpIHx8IGNsaWVudEhlaWdodCAhPSBnZXRIZWlnaHQo
KTsKKworICAgIGlmIChtU3dhcEludGVydmFsRGlydHkpCisgICAgeworICAgICAgICByZXNldFN3
YXBDaGFpbihjbGllbnRXaWR0aCwgY2xpZW50SGVpZ2h0KTsKKyAgICB9CisgICAgZWxzZSBpZiAo
c2l6ZURpcnR5KQorICAgIHsKKyAgICAgICAgcmVzaXplU3dhcENoYWluKGNsaWVudFdpZHRoLCBj
bGllbnRIZWlnaHQpOworICAgIH0KKworICAgIGlmIChtU3dhcEludGVydmFsRGlydHkgfHwgc2l6
ZURpcnR5KQorICAgIHsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KGdl
dEN1cnJlbnREcmF3U3VyZmFjZSgpKSA9PSB0aGlzKQorICAgICAgICB7CisgICAgICAgICAgICBn
bE1ha2VDdXJyZW50KGdsR2V0Q3VycmVudENvbnRleHQoKSwgc3RhdGljX2Nhc3Q8ZWdsOjpEaXNw
bGF5Kj4oZ2V0Q3VycmVudERpc3BsYXkoKSksIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFN1cmZh
Y2U6OnN3YXAoKQoreworICAgIHJldHVybiBzd2FwUmVjdCgwLCAwLCBtV2lkdGgsIG1IZWlnaHQp
OworfQorCitib29sIFN1cmZhY2U6OnBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5LCBF
R0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCit7CisgICAgaWYgKCFtUG9zdFN1YkJ1ZmZlclN1
cHBvcnRlZCkKKyAgICB7CisgICAgICAgIC8vIFNwZWMgaXMgbm90IGNsZWFyIGFib3V0IGhvdyB0
aGlzIHNob3VsZCBiZSBoYW5kbGVkLgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
CisgICAgcmV0dXJuIHN3YXBSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworfQorCitFR0xpbnQg
U3VyZmFjZTo6Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtV2lkdGg7Cit9CisKK0VH
TGludCBTdXJmYWNlOjpnZXRIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBtSGVpZ2h0Owor
fQorCitFR0xpbnQgU3VyZmFjZTo6aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbVBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQ7Cit9CisKK3J4OjpTd2FwQ2hhaW4g
KlN1cmZhY2U6OmdldFN3YXBDaGFpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Td2FwQ2hhaW47
Cit9CisKK3ZvaWQgU3VyZmFjZTo6c2V0U3dhcEludGVydmFsKEVHTGludCBpbnRlcnZhbCkKK3sK
KyAgICBpZiAobVN3YXBJbnRlcnZhbCA9PSBpbnRlcnZhbCkKKyAgICB7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgbVN3YXBJbnRlcnZhbCA9IGludGVydmFsOworICAgIG1Td2Fw
SW50ZXJ2YWwgPSBzdGQ6Om1heChtU3dhcEludGVydmFsLCBtUmVuZGVyZXItPmdldE1pblN3YXBJ
bnRlcnZhbCgpKTsKKyAgICBtU3dhcEludGVydmFsID0gc3RkOjptaW4obVN3YXBJbnRlcnZhbCwg
bVJlbmRlcmVyLT5nZXRNYXhTd2FwSW50ZXJ2YWwoKSk7CisKKyAgICBtU3dhcEludGVydmFsRGly
dHkgPSB0cnVlOworfQorCitFR0xlbnVtIFN1cmZhY2U6OmdldFRleHR1cmVGb3JtYXQoKSBjb25z
dAoreworICAgIHJldHVybiBtVGV4dHVyZUZvcm1hdDsKK30KKworRUdMZW51bSBTdXJmYWNlOjpn
ZXRUZXh0dXJlVGFyZ2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmVUYXJnZXQ7Cit9
CisKK3ZvaWQgU3VyZmFjZTo6c2V0Qm91bmRUZXh0dXJlKGdsOjpUZXh0dXJlMkQgKnRleHR1cmUp
Cit7CisgICAgbVRleHR1cmUgPSB0ZXh0dXJlOworfQorCitnbDo6VGV4dHVyZTJEICpTdXJmYWNl
OjpnZXRCb3VuZFRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZTsKK30KKwor
RUdMZW51bSBTdXJmYWNlOjpnZXRGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBtQ29uZmln
LT5tUmVuZGVyVGFyZ2V0Rm9ybWF0OworfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkVHTC9TdXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkVHTC9TdXJmYWNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliRUdML1N1cmZhY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MDggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN1cmZhY2UuaDogRGVmaW5lcyB0aGUgZWds
OjpTdXJmYWNlIGNsYXNzLCByZXByZXNlbnRpbmcgYSBkcmF3aW5nIHN1cmZhY2UKKy8vIHN1Y2gg
YXMgdGhlIGNsaWVudCBhcmVhIG9mIGEgd2luZG93LCBpbmNsdWRpbmcgYW55IGJhY2sgYnVmZmVy
cy4KKy8vIEltcGxlbWVudHMgRUdMU3VyZmFjZSBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBb
RUdMIDEuNF0gc2VjdGlvbiAyLjIgcGFnZSAzLgorCisjaWZuZGVmIExJQkVHTF9TVVJGQUNFX0hf
CisjZGVmaW5lIExJQkVHTF9TVVJGQUNFX0hfCisKKyNkZWZpbmUgRUdMQVBJCisjaW5jbHVkZSA8
RUdML2VnbC5oPgorCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNl
IGdsCit7CitjbGFzcyBUZXh0dXJlMkQ7Cit9CituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRl
cmVyOworY2xhc3MgU3dhcENoYWluOworfQorCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBEaXNw
bGF5OworY2xhc3MgQ29uZmlnOworCitjbGFzcyBTdXJmYWNlCit7CisgIHB1YmxpYzoKKyAgICBT
dXJmYWNlKERpc3BsYXkgKmRpc3BsYXksIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsIEhXTkQg
d2luZG93LCBFR0xpbnQgcG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCk7CisgICAgU3VyZmFjZShEaXNw
bGF5ICpkaXNwbGF5LCBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLCBIQU5ETEUgc2hhcmVIYW5k
bGUsIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCwgRUdMZW51bSB0ZXh0dXJlRm9ybWF0LCBF
R0xlbnVtIHRleHR1cmVUYXJnZXQpOworCisgICAgflN1cmZhY2UoKTsKKworICAgIGJvb2wgaW5p
dGlhbGl6ZSgpOworICAgIHZvaWQgcmVsZWFzZSgpOworICAgIGJvb2wgcmVzZXRTd2FwQ2hhaW4o
KTsKKworICAgIEhXTkQgZ2V0V2luZG93SGFuZGxlKCk7CisgICAgYm9vbCBzd2FwKCk7CisgICAg
Ym9vbCBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xp
bnQgaGVpZ2h0KTsKKworICAgIHZpcnR1YWwgRUdMaW50IGdldFdpZHRoKCkgY29uc3Q7CisgICAg
dmlydHVhbCBFR0xpbnQgZ2V0SGVpZ2h0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEVHTGludCBp
c1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdDsKKworICAgIHZpcnR1YWwgcng6OlN3YXBD
aGFpbiAqZ2V0U3dhcENoYWluKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldFN3YXBJbnRlcnZhbChF
R0xpbnQgaW50ZXJ2YWwpOworICAgIGJvb2wgY2hlY2tGb3JPdXRPZkRhdGVTd2FwQ2hhaW4oKTsg
ICAvLyBSZXR1cm5zIHRydWUgaWYgc3dhcGNoYWluIGNoYW5nZWQgZHVlIHRvIHJlc2l6ZSBvciBp
bnRlcnZhbCB1cGRhdGUKKworICAgIHZpcnR1YWwgRUdMZW51bSBnZXRUZXh0dXJlRm9ybWF0KCkg
Y29uc3Q7CisgICAgdmlydHVhbCBFR0xlbnVtIGdldFRleHR1cmVUYXJnZXQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEVHTGVudW0gZ2V0Rm9ybWF0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Qm91bmRUZXh0dXJlKGdsOjpUZXh0dXJlMkQgKnRleHR1cmUpOworICAgIHZpcnR1YWwgZ2w6
OlRleHR1cmUyRCAqZ2V0Qm91bmRUZXh0dXJlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKFN1cmZhY2UpOworCisgICAgRGlzcGxheSAqY29uc3QgbURp
c3BsYXk7CisgICAgcng6OlJlbmRlcmVyICptUmVuZGVyZXI7CisKKyAgICBIQU5ETEUgbVNoYXJl
SGFuZGxlOworICAgIHJ4OjpTd2FwQ2hhaW4gKm1Td2FwQ2hhaW47CisKKyAgICB2b2lkIHN1YmNs
YXNzV2luZG93KCk7CisgICAgdm9pZCB1bnN1YmNsYXNzV2luZG93KCk7CisgICAgYm9vbCByZXNp
emVTd2FwQ2hhaW4oaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpOwor
ICAgIGJvb2wgcmVzZXRTd2FwQ2hhaW4oaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZm
ZXJIZWlnaHQpOworICAgIGJvb2wgc3dhcFJlY3QoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQg
d2lkdGgsIEVHTGludCBoZWlnaHQpOworCisgICAgY29uc3QgSFdORCBtV2luZG93OyAgICAgICAg
ICAgIC8vIFdpbmRvdyB0aGF0IHRoZSBzdXJmYWNlIGlzIGNyZWF0ZWQgZm9yLgorICAgIGJvb2wg
bVdpbmRvd1N1YmNsYXNzZWQ7ICAgICAgICAvLyBJbmRpY2F0ZXMgd2hldGhlciB3ZSBzdWNjZXNz
ZnVsbHkgc3ViY2xhc3NlZCBtV2luZG93IGZvciBXTV9SRVNJWkUgaG9va2luZworICAgIGNvbnN0
IGVnbDo6Q29uZmlnICptQ29uZmlnOyAgICAvLyBFR0wgY29uZmlnIHN1cmZhY2Ugd2FzIGNyZWF0
ZWQgd2l0aAorICAgIEVHTGludCBtSGVpZ2h0OyAgICAgICAgICAgICAgICAvLyBIZWlnaHQgb2Yg
c3VyZmFjZQorICAgIEVHTGludCBtV2lkdGg7ICAgICAgICAgICAgICAgICAvLyBXaWR0aCBvZiBz
dXJmYWNlCisvLyAgRUdMaW50IGhvcml6b250YWxSZXNvbHV0aW9uOyAgIC8vIEhvcml6b250YWwg
ZG90IHBpdGNoCisvLyAgRUdMaW50IHZlcnRpY2FsUmVzb2x1dGlvbjsgICAgIC8vIFZlcnRpY2Fs
IGRvdCBwaXRjaAorLy8gIEVHTEJvb2xlYW4gbGFyZ2VzdFBCdWZmZXI7ICAgICAvLyBJZiB0cnVl
LCBjcmVhdGUgbGFyZ2VzdCBwYnVmZmVyIHBvc3NpYmxlCisvLyAgRUdMQm9vbGVhbiBtaXBtYXBU
ZXh0dXJlOyAgICAgIC8vIFRydWUgaWYgdGV4dHVyZSBoYXMgbWlwbWFwcworLy8gIEVHTGludCBt
aXBtYXBMZXZlbDsgICAgICAgICAgICAvLyBNaXBtYXAgbGV2ZWwgdG8gcmVuZGVyIHRvCisvLyAg
RUdMZW51bSBtdWx0aXNhbXBsZVJlc29sdmU7ICAgIC8vIE11bHRpc2FtcGxlIHJlc29sdmUgYmVo
YXZpb3IKKyAgICBFR0xpbnQgbVBpeGVsQXNwZWN0UmF0aW87ICAgICAgLy8gRGlzcGxheSBhc3Bl
Y3QgcmF0aW8KKyAgICBFR0xlbnVtIG1SZW5kZXJCdWZmZXI7ICAgICAgICAgLy8gUmVuZGVyIGJ1
ZmZlcgorICAgIEVHTGVudW0gbVN3YXBCZWhhdmlvcjsgICAgICAgICAvLyBCdWZmZXIgc3dhcCBi
ZWhhdmlvcgorICAgIEVHTGVudW0gbVRleHR1cmVGb3JtYXQ7ICAgICAgICAvLyBGb3JtYXQgb2Yg
dGV4dHVyZTogUkdCLCBSR0JBLCBvciBubyB0ZXh0dXJlCisgICAgRUdMZW51bSBtVGV4dHVyZVRh
cmdldDsgICAgICAgIC8vIFR5cGUgb2YgdGV4dHVyZTogMkQgb3Igbm8gdGV4dHVyZQorLy8gIEVH
TGVudW0gdmdBbHBoYUZvcm1hdDsgICAgICAgICAvLyBBbHBoYSBmb3JtYXQgZm9yIE9wZW5WRwor
Ly8gIEVHTGVudW0gdmdDb2xvclNwYWNlOyAgICAgICAgICAvLyBDb2xvciBzcGFjZSBmb3IgT3Bl
blZHCisgICAgRUdMaW50IG1Td2FwSW50ZXJ2YWw7CisgICAgRUdMaW50IG1Qb3N0U3ViQnVmZmVy
U3VwcG9ydGVkOworICAgIAorICAgIGJvb2wgbVN3YXBJbnRlcnZhbERpcnR5OworICAgIGdsOjpU
ZXh0dXJlMkQgKm1UZXh0dXJlOworfTsKK30KKworI2VuZGlmICAgLy8gTElCRUdMX1NVUkZBQ0Vf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xp
YkVHTC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE4NSBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gbGliRUdMLmNwcDogSW1wbGVtZW50cyB0aGUgZXhwb3J0ZWQgRUdMIGZ1bmN0aW9u
cy4KKworI2luY2x1ZGUgPGV4Y2VwdGlvbj4KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgor
I2luY2x1ZGUgImNvbW1vbi92ZXJzaW9uLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQu
aCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvVGV4dHVyZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9t
YWluLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oIgorCisjaW5j
bHVkZSAibGliRUdML21haW4uaCIKKyNpbmNsdWRlICJsaWJFR0wvRGlzcGxheS5oIgorI2luY2x1
ZGUgImxpYkVHTC9TdXJmYWNlLmgiCisKK2Jvb2wgdmFsaWRhdGVEaXNwbGF5KGVnbDo6RGlzcGxh
eSAqZGlzcGxheSkKK3sKKyAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICB7
CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfRElTUExBWSwgZmFsc2UpOworICAg
IH0KKworICAgIGlmICghZGlzcGxheS0+aXNJbml0aWFsaXplZCgpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGVnbDo6ZXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgZmFsc2UpOworICAgIH0KKwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIHZhbGlkYXRlQ29uZmlnKGVnbDo6RGlzcGxheSAq
ZGlzcGxheSwgRUdMQ29uZmlnIGNvbmZpZykKK3sKKyAgICBpZiAoIXZhbGlkYXRlRGlzcGxheShk
aXNwbGF5KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAo
IWRpc3BsYXktPmlzVmFsaWRDb25maWcoY29uZmlnKSkKKyAgICB7CisgICAgICAgIHJldHVybiBl
Z2w6OmVycm9yKEVHTF9CQURfQ09ORklHLCBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgdmFsaWRhdGVDb250ZXh0KGVnbDo6RGlzcGxheSAqZGlzcGxheSwgZ2w6
OkNvbnRleHQgKmNvbnRleHQpCit7CisgICAgaWYgKCF2YWxpZGF0ZURpc3BsYXkoZGlzcGxheSkp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFkaXNwbGF5
LT5pc1ZhbGlkQ29udGV4dChjb250ZXh0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVy
cm9yKEVHTF9CQURfQ09OVEVYVCwgZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIHZhbGlkYXRlU3VyZmFjZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGVnbDo6U3Vy
ZmFjZSAqc3VyZmFjZSkKK3sKKyAgICBpZiAoIXZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIWRpc3BsYXktPmlz
VmFsaWRTdXJmYWNlKHN1cmZhY2UpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3Io
RUdMX0JBRF9TVVJGQUNFLCBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2V4dGVybiAiQyIKK3sKK0VHTGludCBfX3N0ZGNhbGwgZWdsR2V0RXJyb3Iodm9pZCkKK3sKKyAg
ICBFVkVOVCgiKCkiKTsKKworICAgIEVHTGludCBlcnJvciA9IGVnbDo6Z2V0Q3VycmVudEVycm9y
KCk7CisKKyAgICBpZiAoZXJyb3IgIT0gRUdMX1NVQ0NFU1MpCisgICAgeworICAgICAgICBlZ2w6
OnNldEN1cnJlbnRFcnJvcihFR0xfU1VDQ0VTUyk7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9y
OworfQorCitFR0xEaXNwbGF5IF9fc3RkY2FsbCBlZ2xHZXREaXNwbGF5KEVHTE5hdGl2ZURpc3Bs
YXlUeXBlIGRpc3BsYXlfaWQpCit7CisgICAgRVZFTlQoIihFR0xOYXRpdmVEaXNwbGF5VHlwZSBk
aXNwbGF5X2lkID0gMHglMC44cCkiLCBkaXNwbGF5X2lkKTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGVnbDo6RGlzcGxheTo6Z2V0RGlzcGxheShkaXNwbGF5X2lkKTsKKyAgICB9
CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6
ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX05PX0RJU1BMQVkpOworICAgIH0KK30KKworRUdMQm9v
bGVhbiBfX3N0ZGNhbGwgZWdsSW5pdGlhbGl6ZShFR0xEaXNwbGF5IGRweSwgRUdMaW50ICptYWpv
ciwgRUdMaW50ICptaW5vcikKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44
cCwgRUdMaW50ICptYWpvciA9IDB4JTAuOHAsIEVHTGludCAqbWlub3IgPSAweCUwLjhwKSIsCisg
ICAgICAgICAgZHB5LCBtYWpvciwgbWlub3IpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBp
ZiAoZHB5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
ZWdsOjplcnJvcihFR0xfQkFEX0RJU1BMQVksIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAg
ICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihk
cHkpOworCisgICAgICAgIGlmICghZGlzcGxheS0+aW5pdGlhbGl6ZSgpKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCBFR0xfRkFM
U0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1ham9yKSAqbWFqb3IgPSAxOworICAgICAg
ICBpZiAobWlub3IpICptaW5vciA9IDQ7CisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhF
R0xfVFJVRSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAg
ICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQor
fQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xUZXJtaW5hdGUoRUdMRGlzcGxheSBkcHkpCit7
CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHApIiwgZHB5KTsKKworICAgIHRy
eQorICAgIHsKKyAgICAgICAgaWYgKGRweSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9ESVNQTEFZLCBFR0xfRkFMU0Up
OworICAgICAgICB9CisKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nh
c3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKworICAgICAgICBkaXNwbGF5LT50ZXJtaW5hdGUoKTsK
KworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdM
X0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIgKl9fc3RkY2Fs
bCBlZ2xRdWVyeVN0cmluZyhFR0xEaXNwbGF5IGRweSwgRUdMaW50IG5hbWUpCit7CisgICAgRVZF
TlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTGludCBuYW1lID0gJWQpIiwgZHB5LCBu
YW1lKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0g
c3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKworICAgICAgICBpZiAoIXZhbGlkYXRl
RGlzcGxheShkaXNwbGF5KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cisg
ICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICBj
YXNlIEVHTF9DTElFTlRfQVBJUzoKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoIk9w
ZW5HTF9FUyIpOworICAgICAgICAgIGNhc2UgRUdMX0VYVEVOU0lPTlM6CisgICAgICAgICAgICBy
ZXR1cm4gZWdsOjpzdWNjZXNzKGRpc3BsYXktPmdldEV4dGVuc2lvblN0cmluZygpKTsKKyAgICAg
ICAgICBjYXNlIEVHTF9WRU5ET1I6CisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGRp
c3BsYXktPmdldFZlbmRvclN0cmluZygpKTsKKyAgICAgICAgICBjYXNlIEVHTF9WRVJTSU9OOgor
ICAgICAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcygiMS40IChBTkdMRSAiIFZFUlNJT05fU1RS
SU5HICIpIik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFE
X1BBUkFNRVRFUiwgKGNvbnN0IGNoYXIqKU5VTEwpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJh
ZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9D
LCAoY29uc3QgY2hhciopTlVMTCk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBl
Z2xHZXRDb25maWdzKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgKmNvbmZpZ3MsIEVHTGludCBj
b25maWdfc2l6ZSwgRUdMaW50ICpudW1fY29uZmlnKQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxh
eSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgKmNvbmZpZ3MgPSAweCUwLjhwLCAiCisgICAgICAg
ICAgIkVHTGludCBjb25maWdfc2l6ZSA9ICVkLCBFR0xpbnQgKm51bV9jb25maWcgPSAweCUwLjhw
KSIsCisgICAgICAgICAgZHB5LCBjb25maWdzLCBjb25maWdfc2l6ZSwgbnVtX2NvbmZpZyk7CisK
KyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19j
YXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZURpc3BsYXko
ZGlzcGxheSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIW51bV9jb25maWcpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCBFR0xfRkFMU0UpOworICAgICAg
ICB9CisKKyAgICAgICAgY29uc3QgRUdMaW50IGF0dHJpYkxpc3RbXSA9ICAgIHtFR0xfTk9ORX07
CisKKyAgICAgICAgaWYgKCFkaXNwbGF5LT5nZXRDb25maWdzKGNvbmZpZ3MsIGF0dHJpYkxpc3Qs
IGNvbmZpZ19zaXplLCBudW1fY29uZmlnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGVnbDo6ZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JB
RF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVn
bENob29zZUNvbmZpZyhFR0xEaXNwbGF5IGRweSwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCwg
RUdMQ29uZmlnICpjb25maWdzLCBFR0xpbnQgY29uZmlnX3NpemUsIEVHTGludCAqbnVtX2NvbmZp
ZykKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgY29uc3QgRUdMaW50
ICphdHRyaWJfbGlzdCA9IDB4JTAuOHAsICIKKyAgICAgICAgICAiRUdMQ29uZmlnICpjb25maWdz
ID0gMHglMC44cCwgRUdMaW50IGNvbmZpZ19zaXplID0gJWQsIEVHTGludCAqbnVtX2NvbmZpZyA9
IDB4JTAuOHApIiwKKyAgICAgICAgICBkcHksIGF0dHJpYl9saXN0LCBjb25maWdzLCBjb25maWdf
c2l6ZSwgbnVtX2NvbmZpZyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxh
eSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisKKyAgICAgICAg
aWYgKCF2YWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW51bV9jb25maWcpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfUEFSQU1FVEVS
LCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgRUdMaW50IGF0dHJpYkxp
c3RbXSA9ICAgIHtFR0xfTk9ORX07CisKKyAgICAgICAgaWYgKCFhdHRyaWJfbGlzdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgYXR0cmliX2xpc3QgPSBhdHRyaWJMaXN0OworICAgICAgICB9CisK
KyAgICAgICAgZGlzcGxheS0+Z2V0Q29uZmlncyhjb25maWdzLCBhdHRyaWJfbGlzdCwgY29uZmln
X3NpemUsIG51bV9jb25maWcpOworCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdMX1RS
VUUpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICBy
ZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30KKwor
RUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsR2V0Q29uZmlnQXR0cmliKEVHTERpc3BsYXkgZHB5LCBF
R0xDb25maWcgY29uZmlnLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKQoreworICAg
IEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0gMHgl
MC44cCwgRUdMaW50IGF0dHJpYnV0ZSA9ICVkLCBFR0xpbnQgKnZhbHVlID0gMHglMC44cCkiLAor
ICAgICAgICAgIGRweSwgY29uZmlnLCBhdHRyaWJ1dGUsIHZhbHVlKTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNw
bGF5Kj4oZHB5KTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZp
ZykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIWRpc3BsYXktPmdldENvbmZpZ0F0dHJpYihjb25maWcsIGF0dHJpYnV0
ZSwgdmFsdWUpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xf
QkFEX0FUVFJJQlVURSwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBl
Z2w6OnN1Y2Nlc3MoRUdMX1RSVUUpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFM
U0UpOworICAgIH0KK30KKworRUdMU3VyZmFjZSBfX3N0ZGNhbGwgZWdsQ3JlYXRlV2luZG93U3Vy
ZmFjZShFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMTmF0aXZlV2luZG93VHlw
ZSB3aW4sIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpCit7CisgICAgRVZFTlQoIihFR0xEaXNw
bGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbmZpZyBjb25maWcgPSAweCUwLjhwLCBFR0xOYXRpdmVX
aW5kb3dUeXBlIHdpbiA9IDB4JTAuOHAsICIKKyAgICAgICAgICAiY29uc3QgRUdMaW50ICphdHRy
aWJfbGlzdCA9IDB4JTAuOHApIiwgZHB5LCBjb25maWcsIHdpbiwgYXR0cmliX2xpc3QpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2Fz
dDxlZ2w6OkRpc3BsYXkqPihkcHkpOworCisgICAgICAgIGlmICghdmFsaWRhdGVDb25maWcoZGlz
cGxheSwgY29uZmlnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJG
QUNFOworICAgICAgICB9CisKKyAgICAgICAgSFdORCB3aW5kb3cgPSAoSFdORCl3aW47CisKKyAg
ICAgICAgaWYgKCFJc1dpbmRvdyh3aW5kb3cpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZWdsOjplcnJvcihFR0xfQkFEX05BVElWRV9XSU5ET1csIEVHTF9OT19TVVJGQUNFKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBkaXNwbGF5LT5jcmVhdGVXaW5kb3dTdXJmYWNlKHdp
bmRvdywgY29uZmlnLCBhdHRyaWJfbGlzdCk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVH
TF9OT19TVVJGQUNFKTsKKyAgICB9Cit9CisKK0VHTFN1cmZhY2UgX19zdGRjYWxsIGVnbENyZWF0
ZVBidWZmZXJTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBjb25zdCBF
R0xpbnQgKmF0dHJpYl9saXN0KQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUw
LjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44cCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlz
dCA9IDB4JTAuOHApIiwKKyAgICAgICAgICBkcHksIGNvbmZpZywgYXR0cmliX2xpc3QpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2Fz
dDxlZ2w6OkRpc3BsYXkqPihkcHkpOworCisgICAgICAgIGlmICghdmFsaWRhdGVDb25maWcoZGlz
cGxheSwgY29uZmlnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJG
QUNFOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGRpc3BsYXktPmNyZWF0ZU9mZnNjcmVl
blN1cmZhY2UoY29uZmlnLCBOVUxMLCBhdHRyaWJfbGlzdCk7CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURf
QUxMT0MsIEVHTF9OT19TVVJGQUNFKTsKKyAgICB9Cit9CisKK0VHTFN1cmZhY2UgX19zdGRjYWxs
IGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcs
IEVHTE5hdGl2ZVBpeG1hcFR5cGUgcGl4bWFwLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KQor
eworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgY29uZmln
ID0gMHglMC44cCwgRUdMTmF0aXZlUGl4bWFwVHlwZSBwaXhtYXAgPSAweCUwLjhwLCAiCisgICAg
ICAgICAgImNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUwLjhwKSIsIGRweSwgY29uZmln
LCBwaXhtYXAsIGF0dHJpYl9saXN0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWdsOjpE
aXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKworICAg
ICAgICBpZiAoIXZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZykpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKKyAgICAgICAgfQorCisgICAgICAgIFVO
SU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3Mo
RUdMX05PX1NVUkZBQ0UpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAg
eworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfTk9fU1VSRkFD
RSk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xEZXN0cm95U3VyZmFjZShF
R0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlKQoreworICAgIEVWRU5UKCIoRUdMRGlz
cGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwKSIsIGRweSwg
c3VyZmFjZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxh
eSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisgICAgICAgIGVnbDo6U3VyZmFj
ZSAqZWdsU3VyZmFjZSA9IHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KHN1cmZhY2UpOworCisg
ICAgICAgIGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBlZ2w6OmVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQor
CisgICAgICAgIGRpc3BsYXktPmRlc3Ryb3lTdXJmYWNlKChlZ2w6OlN1cmZhY2UqKXN1cmZhY2Up
OworCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdMX1RSVUUpOworICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihF
R0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30KKworRUdMQm9vbGVhbiBfX3N0ZGNh
bGwgZWdsUXVlcnlTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVH
TGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5
IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCBhdHRy
aWJ1dGUgPSAlZCwgRUdMaW50ICp2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBkcHksIHN1
cmZhY2UsIGF0dHJpYnV0ZSwgdmFsdWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBlZ2w6
OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOworICAg
ICAgICBlZ2w6OlN1cmZhY2UgKmVnbFN1cmZhY2UgPSAoZWdsOjpTdXJmYWNlKilzdXJmYWNlOwor
CisgICAgICAgIGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKKyAgICAgICAg
fQorCisgICAgICAgIHN3aXRjaCAoYXR0cmlidXRlKQorICAgICAgICB7CisgICAgICAgICAgY2Fz
ZSBFR0xfVkdfQUxQSEFfRk9STUFUOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8v
IEZJWE1FCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9WR19DT0xPUlNQ
QUNFOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9DT05GSUdfSUQ6CisgICAgICAgICAgICBVTklN
UExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNh
c2UgRUdMX0hFSUdIVDoKKyAgICAgICAgICAgICp2YWx1ZSA9IGVnbFN1cmZhY2UtPmdldEhlaWdo
dCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFR0xfSE9SSVpPTlRBTF9S
RVNPTFVUSU9OOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9MQVJHRVNUX1BCVUZGRVI6CisgICAg
ICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgIGNhc2UgRUdMX01JUE1BUF9URVhUVVJFOgorICAgICAgICAgICAgVU5JTVBMRU1F
TlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVH
TF9NSVBNQVBfTEVWRUw6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRUdMX01VTFRJU0FNUExFX1JFU09M
VkU6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgIGNhc2UgRUdMX1BJWEVMX0FTUEVDVF9SQVRJTzoKKyAgICAgICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgY2FzZSBFR0xfUkVOREVSX0JVRkZFUjoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQo
KTsgICAvLyBGSVhNRQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFR0xfU1dB
UF9CRUhBVklPUjoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFR0xfVEVYVFVSRV9GT1JNQVQ6CisgICAg
ICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgIGNhc2UgRUdMX1RFWFRVUkVfVEFSR0VUOgorICAgICAgICAgICAgVU5JTVBMRU1F
TlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVH
TF9WRVJUSUNBTF9SRVNPTFVUSU9OOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8v
IEZJWE1FCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9XSURUSDoKKyAg
ICAgICAgICAgICp2YWx1ZSA9IGVnbFN1cmZhY2UtPmdldFdpZHRoKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9QT1NUX1NVQl9CVUZGRVJfU1VQUE9SVEVEX05WOgor
ICAgICAgICAgICAgKnZhbHVlID0gZWdsU3VyZmFjZS0+aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVk
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9GQUxTRSk7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3Io
RUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRj
YWxsIGVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFj
ZSBzdXJmYWNlLCBFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpCit7CisgICAgVFJBQ0Uo
IihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAs
IEVHTGludCBhdHRyaWJ1dGUgPSAlZCwgdm9pZCAqKnZhbHVlID0gMHglMC44cCkiLAorICAgICAg
ICAgIGRweSwgc3VyZmFjZSwgYXR0cmlidXRlLCB2YWx1ZSk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+
KGRweSk7CisgICAgICAgIGVnbDo6U3VyZmFjZSAqZWdsU3VyZmFjZSA9IChlZ2w6OlN1cmZhY2Uq
KXN1cmZhY2U7CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgZWdsU3Vy
ZmFjZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9TVVJGQUNFLCBFR0xfRkFMU0Up
OworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpCisgICAgICAgIHsKKyAg
ICAgICAgICBjYXNlIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEU6CisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcng6OlN3YXBDaGFpbiAqc3dhcGNoYWluID0gZWds
U3VyZmFjZS0+Z2V0U3dhcENoYWluKCk7CisgICAgICAgICAgICAgICAgKnZhbHVlID0gKHZvaWQq
KSAoc3dhcGNoYWluID8gc3dhcGNoYWluLT5nZXRTaGFyZUhhbmRsZSgpIDogTlVMTCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9GQUxTRSk7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9
CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6
ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4g
X19zdGRjYWxsIGVnbEJpbmRBUEkoRUdMZW51bSBhcGkpCit7CisgICAgRVZFTlQoIihFR0xlbnVt
IGFwaSA9IDB4JVgpIiwgYXBpKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgc3dpdGNoIChh
cGkpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEVHTF9PUEVOR0xfQVBJOgorICAgICAgICAg
IGNhc2UgRUdMX09QRU5WR19BUEk6CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xf
QkFEX1BBUkFNRVRFUiwgRUdMX0ZBTFNFKTsgICAvLyBOb3Qgc3VwcG9ydGVkIGJ5IHRoaXMgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgICBjYXNlIEVHTF9PUEVOR0xfRVNfQVBJOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVy
cm9yKEVHTF9CQURfUEFSQU1FVEVSLCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAg
ZWdsOjpzZXRDdXJyZW50QVBJKGFwaSk7CisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhF
R0xfVFJVRSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAg
ICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQor
fQorCitFR0xlbnVtIF9fc3RkY2FsbCBlZ2xRdWVyeUFQSSh2b2lkKQoreworICAgIEVWRU5UKCIo
KSIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBFR0xlbnVtIEFQSSA9IGVnbDo6Z2V0Q3Vy
cmVudEFQSSgpOworCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoQVBJKTsKKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJy
b3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19z
dGRjYWxsIGVnbFdhaXRDbGllbnQodm9pZCkKK3sKKyAgICBFVkVOVCgiKCkiKTsKKworICAgIHRy
eQorICAgIHsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisKKyAgICAgICAg
cmV0dXJuIGVnbDo6c3VjY2VzcygwKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2Mm
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZB
TFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFJlbGVhc2VUaHJlYWQo
dm9pZCkKK3sKKyAgICBFVkVOVCgiKCkiKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWds
TWFrZUN1cnJlbnQoRUdMX05PX0RJU1BMQVksIEVHTF9OT19DT05URVhULCBFR0xfTk9fU1VSRkFD
RSwgRUdMX05PX1NVUkZBQ0UpOworCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdMX1RS
VUUpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICBy
ZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30KKwor
RUdMU3VyZmFjZSBfX3N0ZGNhbGwgZWdsQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoRUdM
RGlzcGxheSBkcHksIEVHTGVudW0gYnVmdHlwZSwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwgRUdM
Q29uZmlnIGNvbmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkKK3sKKyAgICBFVkVOVCgi
KEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMZW51bSBidWZ0eXBlID0gMHglWCwgRUdMQ2xp
ZW50QnVmZmVyIGJ1ZmZlciA9IDB4JTAuOHAsICIKKyAgICAgICAgICAiRUdMQ29uZmlnIGNvbmZp
ZyA9IDB4JTAuOHAsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUwLjhwKSIsCisgICAg
ICAgICAgZHB5LCBidWZ0eXBlLCBidWZmZXIsIGNvbmZpZywgYXR0cmliX2xpc3QpOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxl
Z2w6OkRpc3BsYXkqPihkcHkpOworCisgICAgICAgIGlmICghdmFsaWRhdGVDb25maWcoZGlzcGxh
eSwgY29uZmlnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNF
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJ1ZnR5cGUgIT0gRUdMX0QzRF9URVhUVVJFXzJE
X1NIQVJFX0hBTkRMRV9BTkdMRSB8fCAhYnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgRUdMX05PX1NVUkZBQ0UpOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIGRpc3BsYXktPmNyZWF0ZU9mZnNjcmVlblN1cmZhY2Uo
Y29uZmlnLCAoSEFORExFKWJ1ZmZlciwgYXR0cmliX2xpc3QpOworICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFE
X0FMTE9DLCBFR0xfTk9fU1VSRkFDRSk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2Fs
bCBlZ2xTdXJmYWNlQXR0cmliKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVH
TGludCBhdHRyaWJ1dGUsIEVHTGludCB2YWx1ZSkKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkg
ZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCwgRUdMaW50IGF0dHJp
YnV0ZSA9ICVkLCBFR0xpbnQgdmFsdWUgPSAlZCkiLAorICAgICAgICAgIGRweSwgc3VyZmFjZSwg
YXR0cmlidXRlLCB2YWx1ZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxh
eSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisgICAgICAgIGVn
bDo6U3VyZmFjZSAqZWdsU3VyZmFjZSA9IHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KHN1cmZh
Y2UpOworCisgICAgICAgIGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2Up
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisK
KyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisKKyAgICAgICAgcmV0dXJuIGVn
bDo6c3VjY2VzcyhFR0xfVFJVRSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
KyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxT
RSk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xCaW5kVGV4SW1hZ2UoRUdM
RGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcikKK3sKKyAgICBF
VkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHgl
MC44cCwgRUdMaW50IGJ1ZmZlciA9ICVkKSIsIGRweSwgc3VyZmFjZSwgYnVmZmVyKTsKKworICAg
IHRyeQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8
ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKyAgICAgICAgZWdsOjpTdXJmYWNlICplZ2xTdXJmYWNlID0g
c3RhdGljX2Nhc3Q8ZWdsOjpTdXJmYWNlKj4oc3VyZmFjZSk7CisKKyAgICAgICAgaWYgKCF2YWxp
ZGF0ZVN1cmZhY2UoZGlzcGxheSwgZWdsU3VyZmFjZSkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYnVmZmVyICE9IEVH
TF9CQUNLX0JVRkZFUikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3Io
RUdMX0JBRF9QQVJBTUVURVIsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
c3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSB8fCBlZ2xTdXJmYWNlLT5nZXRXaW5kb3dIYW5kbGUo
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9TVVJG
QUNFLCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVnbFN1cmZhY2UtPmdl
dEJvdW5kVGV4dHVyZSgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJv
cihFR0xfQkFEX0FDQ0VTUywgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChl
Z2xTdXJmYWNlLT5nZXRUZXh0dXJlRm9ybWF0KCkgPT0gRUdMX05PX1RFWFRVUkUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9GQUxT
RSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWdsQmluZFRleEltYWdlKGVnbFN1cmZhY2Up
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX01BVENI
LCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhF
R0xfVFJVRSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAg
ICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQor
fQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xSZWxlYXNlVGV4SW1hZ2UoRUdMRGlzcGxheSBk
cHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcikKK3sKKyAgICBFVkVOVCgiKEVH
TERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCwgRUdM
aW50IGJ1ZmZlciA9ICVkKSIsIGRweSwgc3VyZmFjZSwgYnVmZmVyKTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNw
bGF5Kj4oZHB5KTsKKyAgICAgICAgZWdsOjpTdXJmYWNlICplZ2xTdXJmYWNlID0gc3RhdGljX2Nh
c3Q8ZWdsOjpTdXJmYWNlKj4oc3VyZmFjZSk7CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVN1cmZh
Y2UoZGlzcGxheSwgZWdsU3VyZmFjZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBF
R0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYnVmZmVyICE9IEVHTF9CQUNLX0JV
RkZFUikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9Q
QVJBTUVURVIsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3VyZmFjZSA9
PSBFR0xfTk9fU1VSRkFDRSB8fCBlZ2xTdXJmYWNlLT5nZXRXaW5kb3dIYW5kbGUoKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9TVVJGQUNFLCBFR0xf
RkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVnbFN1cmZhY2UtPmdldFRleHR1cmVG
b3JtYXQoKSA9PSBFR0xfTk9fVEVYVFVSRSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGVnbDo6ZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGdsOjpUZXh0dXJlMkQgKnRleHR1cmUgPSBlZ2xTdXJmYWNlLT5nZXRCb3VuZFRleHR1cmUo
KTsKKworICAgICAgICBpZiAodGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgdGV4dHVy
ZS0+cmVsZWFzZVRleEltYWdlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZWdsOjpz
dWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsK
KyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFN3YXBJbnRlcnZhbChFR0xEaXNw
bGF5IGRweSwgRUdMaW50IGludGVydmFsKQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkg
PSAweCUwLjhwLCBFR0xpbnQgaW50ZXJ2YWwgPSAlZCkiLCBkcHksIGludGVydmFsKTsKKworICAg
IHRyeQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8
ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlRGlzcGxheShkaXNw
bGF5KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAg
fQorCisgICAgICAgIGVnbDo6U3VyZmFjZSAqZHJhd19zdXJmYWNlID0gc3RhdGljX2Nhc3Q8ZWds
OjpTdXJmYWNlKj4oZWdsOjpnZXRDdXJyZW50RHJhd1N1cmZhY2UoKSk7CisKKyAgICAgICAgaWYg
KGRyYXdfc3VyZmFjZSA9PSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWds
OjplcnJvcihFR0xfQkFEX1NVUkZBQ0UsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGRyYXdfc3VyZmFjZS0+c2V0U3dhcEludGVydmFsKGludGVydmFsKTsKKworICAg
ICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9B
TExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTENvbnRleHQgX19zdGRjYWxsIGVnbENy
ZWF0ZUNvbnRleHQoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTENvbnRleHQg
c2hhcmVfY29udGV4dCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkKK3sKKyAgICBFVkVOVCgi
KEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29uZmlnIGNvbmZpZyA9IDB4JTAuOHAsIEVH
TENvbnRleHQgc2hhcmVfY29udGV4dCA9IDB4JTAuOHAsICIKKyAgICAgICAgICAiY29uc3QgRUdM
aW50ICphdHRyaWJfbGlzdCA9IDB4JTAuOHApIiwgZHB5LCBjb25maWcsIHNoYXJlX2NvbnRleHQs
IGF0dHJpYl9saXN0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgLy8gR2V0IHRoZSByZXF1
ZXN0ZWQgY2xpZW50IHZlcnNpb24gKGRlZmF1bHQgaXMgMSkgYW5kIGNoZWNrIGl0IGlzIHR3by4K
KyAgICAgICAgRUdMaW50IGNsaWVudF92ZXJzaW9uID0gMTsKKyAgICAgICAgYm9vbCByZXNldF9u
b3RpZmljYXRpb24gPSBmYWxzZTsKKyAgICAgICAgYm9vbCByb2J1c3RfYWNjZXNzID0gZmFsc2U7
CisKKyAgICAgICAgaWYgKGF0dHJpYl9saXN0KQorICAgICAgICB7CisgICAgICAgICAgICBmb3Ig
KGNvbnN0IEVHTGludCogYXR0cmlidXRlID0gYXR0cmliX2xpc3Q7IGF0dHJpYnV0ZVswXSAhPSBF
R0xfTk9ORTsgYXR0cmlidXRlICs9IDIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
c3dpdGNoIChhdHRyaWJ1dGVbMF0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgY2FzZSBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTjoKKyAgICAgICAgICAgICAgICAgICAg
Y2xpZW50X3ZlcnNpb24gPSBhdHRyaWJ1dGVbMV07CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNUX0FDQ0VT
U19FWFQ6CisgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVbMV0gPT0gRUdMX1RSVUUp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBl
Z2w6OmVycm9yKEVHTF9CQURfQ09ORklHLCBFR0xfTk9fQ09OVEVYVCk7ICAgLy8gVW5pbXBsZW1l
bnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm9idXN0X2FjY2VzcyA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXR0cmli
dXRlWzFdICE9IEVHTF9GQUxTRSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlZ2w6
OmVycm9yKEVHTF9CQURfQVRUUklCVVRFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfQ09OVEVYVF9PUEVOR0xf
UkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0VYVDoKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGF0dHJpYnV0ZVsxXSA9PSBFR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc2V0X25vdGlmaWNhdGlvbiA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZVsxXSAhPSBFR0xfTk9fUkVTRVRfTk9USUZJQ0FUSU9O
X0VYVCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURf
QVRUUklCVVRFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVn
bDo6ZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19DT05URVhUKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2xpZW50X3Zl
cnNpb24gIT0gMikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdM
X0JBRF9DT05GSUcsIEVHTF9OT19DT05URVhUKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChz
aGFyZV9jb250ZXh0ICYmIHN0YXRpY19jYXN0PGdsOjpDb250ZXh0Kj4oc2hhcmVfY29udGV4dCkt
PmlzUmVzZXROb3RpZmljYXRpb25FbmFibGVkKCkgIT0gcmVzZXRfbm90aWZpY2F0aW9uKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX01BVENILCBFR0xf
Tk9fQ09OVEVYVCk7CisgICAgICAgIH0KKworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkg
PSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOworCisgICAgICAgIGlmICghdmFsaWRh
dGVDb25maWcoZGlzcGxheSwgY29uZmlnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IEVHTF9OT19DT05URVhUOworICAgICAgICB9CisKKyAgICAgICAgRUdMQ29udGV4dCBjb250ZXh0
ID0gZGlzcGxheS0+Y3JlYXRlQ29udGV4dChjb25maWcsIHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
Kj4oc2hhcmVfY29udGV4dCksIHJlc2V0X25vdGlmaWNhdGlvbiwgcm9idXN0X2FjY2Vzcyk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGNv
bnRleHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xf
Q09OVEVYVF9MT1NULCBFR0xfTk9fQ09OVEVYVCk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0Ms
IEVHTF9OT19DT05URVhUKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbERl
c3Ryb3lDb250ZXh0KEVHTERpc3BsYXkgZHB5LCBFR0xDb250ZXh0IGN0eCkKK3sKKyAgICBFVkVO
VCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29udGV4dCBjdHggPSAweCUwLjhwKSIs
IGRweSwgY3R4KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNw
bGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKyAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCo+KGN0eCk7CisKKyAgICAgICAg
aWYgKCF2YWxpZGF0ZUNvbnRleHQoZGlzcGxheSwgY29udGV4dCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3R4ID09
IEVHTF9OT19DT05URVhUKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJv
cihFR0xfQkFEX0NPTlRFWFQsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBkaXNw
bGF5LT5kZXN0cm95Q29udGV4dChjb250ZXh0KTsKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNj
ZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAg
ICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbE1ha2VDdXJyZW50KEVHTERpc3BsYXkg
ZHB5LCBFR0xTdXJmYWNlIGRyYXcsIEVHTFN1cmZhY2UgcmVhZCwgRUdMQ29udGV4dCBjdHgpCit7
CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2UgZHJhdyA9
IDB4JTAuOHAsIEVHTFN1cmZhY2UgcmVhZCA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHgl
MC44cCkiLAorICAgICAgICAgIGRweSwgZHJhdywgcmVhZCwgY3R4KTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNw
bGF5Kj4oZHB5KTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCo+KGN0eCk7CisKKyAgICAgICAgaWYgKGN0eCAhPSBFR0xfTk9fQ09OVEVYVCAm
JiAhdmFsaWRhdGVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgcng6OlJlbmRlcmVy
ICpyZW5kZXJlciA9IGRpc3BsYXktPmdldFJlbmRlcmVyKCk7CisgICAgICAgIGlmIChyZW5kZXJl
ci0+dGVzdERldmljZUxvc3QodHJ1ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBF
R0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVuZGVyZXItPmlzRGV2aWNlTG9z
dCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQ09OVEVY
VF9MT1NULCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKChkcmF3ICE9IEVH
TF9OT19TVVJGQUNFICYmICF2YWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgc3RhdGljX2Nhc3Q8ZWds
OjpTdXJmYWNlKj4oZHJhdykpKSB8fAorICAgICAgICAgICAgKHJlYWQgIT0gRUdMX05PX1NVUkZB
Q0UgJiYgIXZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2Uq
PihyZWFkKSkpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGRyYXcgIT0gcmVhZCkKKyAgICAgICAgeworICAgICAgICAg
ICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgIH0KKworICAgICAgICBlZ2w6
OnNldEN1cnJlbnREaXNwbGF5KGRweSk7CisgICAgICAgIGVnbDo6c2V0Q3VycmVudERyYXdTdXJm
YWNlKGRyYXcpOworICAgICAgICBlZ2w6OnNldEN1cnJlbnRSZWFkU3VyZmFjZShyZWFkKTsKKwor
ICAgICAgICBnbE1ha2VDdXJyZW50KGNvbnRleHQsIGRpc3BsYXksIHN0YXRpY19jYXN0PGVnbDo6
U3VyZmFjZSo+KGRyYXcpKTsKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVF
KTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VH
TENvbnRleHQgX19zdGRjYWxsIGVnbEdldEN1cnJlbnRDb250ZXh0KHZvaWQpCit7CisgICAgRVZF
TlQoIigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIEVHTENvbnRleHQgY29udGV4dCA9
IGdsR2V0Q3VycmVudENvbnRleHQoKTsKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGNv
bnRleHQpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAg
ICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfTk9fQ09OVEVYVCk7CisgICAg
fQorfQorCitFR0xTdXJmYWNlIF9fc3RkY2FsbCBlZ2xHZXRDdXJyZW50U3VyZmFjZShFR0xpbnQg
cmVhZGRyYXcpCit7CisgICAgRVZFTlQoIihFR0xpbnQgcmVhZGRyYXcgPSAlZCkiLCByZWFkZHJh
dyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChyZWFkZHJhdyA9PSBFR0xfUkVBRCkK
KyAgICAgICAgeworICAgICAgICAgICAgRUdMU3VyZmFjZSByZWFkID0gZWdsOjpnZXRDdXJyZW50
UmVhZFN1cmZhY2UoKTsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MocmVhZCk7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmVhZGRyYXcgPT0gRUdMX0RSQVcpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEVHTFN1cmZhY2UgZHJhdyA9IGVnbDo6Z2V0Q3VycmVudERyYXdTdXJm
YWNlKCk7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGRyYXcpOworICAgICAgICB9
CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3Io
RUdMX0JBRF9QQVJBTUVURVIsIEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJv
cihFR0xfQkFEX0FMTE9DLCBFR0xfTk9fU1VSRkFDRSk7CisgICAgfQorfQorCitFR0xEaXNwbGF5
IF9fc3RkY2FsbCBlZ2xHZXRDdXJyZW50RGlzcGxheSh2b2lkKQoreworICAgIEVWRU5UKCIoKSIp
OworCisgICAgdHJ5CisgICAgeworICAgICAgICBFR0xEaXNwbGF5IGRweSA9IGVnbDo6Z2V0Q3Vy
cmVudERpc3BsYXkoKTsKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGRweSk7CisgICAg
fQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6
OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9OT19ESVNQTEFZKTsKKyAgICB9Cit9CisKK0VHTEJv
b2xlYW4gX19zdGRjYWxsIGVnbFF1ZXJ5Q29udGV4dChFR0xEaXNwbGF5IGRweSwgRUdMQ29udGV4
dCBjdHgsIEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpCit7CisgICAgRVZFTlQoIihF
R0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHglMC44cCwgRUdMaW50
IGF0dHJpYnV0ZSA9ICVkLCBFR0xpbnQgKnZhbHVlID0gMHglMC44cCkiLAorICAgICAgICAgIGRw
eSwgY3R4LCBhdHRyaWJ1dGUsIHZhbHVlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWds
OjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCo+KGN0
eCk7CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZUNvbnRleHQoZGlzcGxheSwgY29udGV4dCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKworICAg
ICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKworICAgICAgICByZXR1cm4gZWdsOjpz
dWNjZXNzKDApOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAg
ICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0K
K30KKworRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsV2FpdEdMKHZvaWQpCit7CisgICAgRVZFTlQo
IigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBG
SVhNRQorCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoMCk7CisgICAgfQorICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9C
QURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBl
Z2xXYWl0TmF0aXZlKEVHTGludCBlbmdpbmUpCit7CisgICAgRVZFTlQoIihFR0xpbnQgZW5naW5l
ID0gJWQpIiwgZW5naW5lKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOyAgIC8vIEZJWE1FCisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcygwKTsKKyAgICB9
CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6
ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4g
X19zdGRjYWxsIGVnbFN3YXBCdWZmZXJzKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZh
Y2UpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ug
c3VyZmFjZSA9IDB4JTAuOHApIiwgZHB5LCBzdXJmYWNlKTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4o
ZHB5KTsKKyAgICAgICAgZWdsOjpTdXJmYWNlICplZ2xTdXJmYWNlID0gKGVnbDo6U3VyZmFjZSop
c3VyZmFjZTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJm
YWNlKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChkaXNwbGF5LT5nZXRSZW5kZXJlcigpLT5pc0RldmljZUxvc3QoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0NPTlRFWFRfTE9T
VCwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdXJmYWNlID09IEVHTF9O
T19TVVJGQUNFKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xf
QkFEX1NVUkZBQ0UsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZWdsU3Vy
ZmFjZS0+c3dhcCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNz
KEVHTF9UUlVFKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFM
U0UpOworICAgIH0KKworICAgIHJldHVybiBFR0xfRkFMU0U7Cit9CisKK0VHTEJvb2xlYW4gX19z
dGRjYWxsIGVnbENvcHlCdWZmZXJzKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2Us
IEVHTE5hdGl2ZVBpeG1hcFR5cGUgdGFyZ2V0KQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBk
cHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwLCBFR0xOYXRpdmVQaXht
YXBUeXBlIHRhcmdldCA9IDB4JTAuOHApIiwgZHB5LCBzdXJmYWNlLCB0YXJnZXQpOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxl
Z2w6OkRpc3BsYXkqPihkcHkpOworICAgICAgICBlZ2w6OlN1cmZhY2UgKmVnbFN1cmZhY2UgPSBz
dGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihzdXJmYWNlKTsKKworICAgICAgICBpZiAoIXZhbGlk
YXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNlKSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkaXNwbGF5LT5nZXRS
ZW5kZXJlcigpLT5pc0RldmljZUxvc3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGVnbDo6ZXJyb3IoRUdMX0NPTlRFWFRfTE9TVCwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisg
ICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorCisgICAgICAgIHJldHVybiBlZ2w6
OnN1Y2Nlc3MoMCk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAg
fQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xQb3N0U3ViQnVmZmVyTlYoRUdMRGlzcGxh
eSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lk
dGgsIEVHTGludCBoZWlnaHQpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAu
OHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCB4ID0gJWQsIEVHTGludCB5
ID0gJWQsIEVHTGludCB3aWR0aCA9ICVkLCBFR0xpbnQgaGVpZ2h0ID0gJWQpIiwgZHB5LCBzdXJm
YWNlLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYg
KHggPCAwIHx8IHkgPCAwIHx8IHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgRUdMX0ZBTFNF
KTsKKyAgICAgICAgfQorCisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19j
YXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisgICAgICAgIGVnbDo6U3VyZmFjZSAqZWdsU3VyZmFj
ZSA9IHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KHN1cmZhY2UpOworCisgICAgICAgIGlmICgh
dmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRpc3BsYXkt
PmdldFJlbmRlcmVyKCktPmlzRGV2aWNlTG9zdCgpKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZWdsOjplcnJvcihFR0xfQ09OVEVYVF9MT1NULCBFR0xfRkFMU0UpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChlZ2xTdXJmYWNlLT5wb3N0U3ViQnVmZmVyKHgsIHks
IHdpZHRoLCBoZWlnaHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNj
ZXNzKEVHTF9UUlVFKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxv
YyYpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xf
RkFMU0UpOworICAgIH0KKworICAgIHJldHVybiBFR0xfRkFMU0U7Cit9CisKK19fZWdsTXVzdENh
c3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUgX19zdGRjYWxsIGVnbEdldFByb2NBZGRyZXNz
KGNvbnN0IGNoYXIgKnByb2NuYW1lKQoreworICAgIEVWRU5UKCIoY29uc3QgY2hhciAqcHJvY25h
bWUgPSBcIiVzXCIpIiwgcHJvY25hbWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBzdHJ1
Y3QgRXh0ZW5zaW9uCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Cisg
ICAgICAgICAgICBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlIGFkZHJl
c3M7CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGljIGNvbnN0IEV4dGVuc2lvbiBlZ2xFeHRl
bnNpb25zW10gPQorICAgICAgICB7CisgICAgICAgICAgICB7ImVnbFF1ZXJ5U3VyZmFjZVBvaW50
ZXJBTkdMRSIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWVnbFF1
ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRX0sCisgICAgICAgICAgICB7ImVnbFBvc3RTdWJCdWZmZXJO
ViIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWVnbFBvc3RTdWJC
dWZmZXJOVn0sCisgICAgICAgICAgICB7IiIsIE5VTEx9LAorICAgICAgICB9OworCisgICAgICAg
IGZvciAodW5zaWduZWQgaW50IGV4dCA9IDA7IGV4dCA8IEFycmF5U2l6ZShlZ2xFeHRlbnNpb25z
KTsgZXh0KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAocHJvY25hbWUsIGVn
bEV4dGVuc2lvbnNbZXh0XS5uYW1lKSA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSllZ2xF
eHRlbnNpb25zW2V4dF0uYWRkcmVzczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBnbEdldFByb2NBZGRyZXNzKHByb2NuYW1lKTsKKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JB
RF9BTExPQywgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpTlVMTCk7
CisgICAgfQorfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9s
aWJFR0wuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJF
R0wvbGliRUdMLmRlZgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJFR0wvbGliRUdMLmRlZgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorTElCUkFS
WQlsaWJFR0wKK0VYUE9SVFMKKwllZ2xCaW5kQVBJICAgICAgICAgICAgICAgICAgICAgIEAxNAor
CWVnbEJpbmRUZXhJbWFnZSAgICAgICAgICAgICAgICAgQDIwCisJZWdsQ2hvb3NlQ29uZmlnICAg
ICAgICAgICAgICAgICBANworCWVnbENvcHlCdWZmZXJzICAgICAgICAgICAgICAgICAgQDMzCisJ
ZWdsQ3JlYXRlQ29udGV4dCAgICAgICAgICAgICAgICBAMjMKKwllZ2xDcmVhdGVQYnVmZmVyRnJv
bUNsaWVudEJ1ZmZlciAgICAgICAgQDE4CisJZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UgICAgICAg
ICBAMTAKKwllZ2xDcmVhdGVQaXhtYXBTdXJmYWNlICAgICAgICAgIEAxMQorCWVnbENyZWF0ZVdp
bmRvd1N1cmZhY2UgICAgICAgICAgQDkKKwllZ2xEZXN0cm95Q29udGV4dCAgICAgICAgICAgICAg
IEAyNAorCWVnbERlc3Ryb3lTdXJmYWNlICAgICAgICAgICAgICAgQDEyCisJZWdsR2V0Q29uZmln
QXR0cmliICAgICAgICAgICAgICBAOAorCWVnbEdldENvbmZpZ3MgICAgICAgICAgICAgICAgICAg
QDYKKwllZ2xHZXRDdXJyZW50Q29udGV4dCAgICAgICAgICAgIEAyNgorCWVnbEdldEN1cnJlbnRE
aXNwbGF5ICAgICAgICAgICAgQDI4CisJZWdsR2V0Q3VycmVudFN1cmZhY2UgICAgICAgICAgICBA
MjcKKwllZ2xHZXREaXNwbGF5ICAgICAgICAgICAgICAgICAgIEAyCisJZWdsR2V0RXJyb3IgICAg
ICAgICAgICAgICAgICAgICBAMQorCWVnbEdldFByb2NBZGRyZXNzICAgICAgICAgICAgICAgQDM0
CisJZWdsSW5pdGlhbGl6ZSAgICAgICAgICAgICAgICAgICBAMworCWVnbE1ha2VDdXJyZW50ICAg
ICAgICAgICAgICAgICAgQDI1CisJZWdsUXVlcnlBUEkgICAgICAgICAgICAgICAgICAgICBAMTUK
KwllZ2xRdWVyeUNvbnRleHQgICAgICAgICAgICAgICAgIEAyOQorCWVnbFF1ZXJ5U3RyaW5nICAg
ICAgICAgICAgICAgICAgQDUKKwllZ2xRdWVyeVN1cmZhY2UgICAgICAgICAgICAgICAgIEAxMwor
CWVnbFJlbGVhc2VUZXhJbWFnZSAgICAgICAgICAgICAgQDIxCisJZWdsUmVsZWFzZVRocmVhZCAg
ICAgICAgICAgICAgICBAMTcKKwllZ2xTdXJmYWNlQXR0cmliICAgICAgICAgICAgICAgIEAxOQor
CWVnbFN3YXBCdWZmZXJzICAgICAgICAgICAgICAgICAgQDMyCisJZWdsU3dhcEludGVydmFsICAg
ICAgICAgICAgICAgICBAMjIKKwllZ2xUZXJtaW5hdGUgICAgICAgICAgICAgICAgICAgIEA0CisJ
ZWdsV2FpdENsaWVudCAgICAgICAgICAgICAgICAgICBAMTYKKwllZ2xXYWl0R0wgICAgICAgICAg
ICAgICAgICAgICAgIEAzMAorCWVnbFdhaXROYXRpdmUgICAgICAgICAgICAgICAgICAgQDMxClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkVHTC9saWJFR0wucmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkVHTC9saWJFR0wucmMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5yYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDIg
QEAKKy8vIE1pY3Jvc29mdCBWaXN1YWwgQysrIGdlbmVyYXRlZCByZXNvdXJjZSBzY3JpcHQuCisv
LworI2luY2x1ZGUgInJlc291cmNlLmgiCisKKyNkZWZpbmUgQVBTVFVESU9fUkVBRE9OTFlfU1lN
Qk9MUworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVY
VElOQ0xVREUgMiByZXNvdXJjZS4KKy8vCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUg
Ii4uL2NvbW1vbi92ZXJzaW9uLmgiCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisjdW5kZWYgQVBT
VFVESU9fUkVBRE9OTFlfU1lNQk9MUworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gRW5nbGlz
aCAoVS5TLikgcmVzb3VyY2VzCisKKyNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBk
ZWZpbmVkKEFGWF9UQVJHX0VOVSkKKyNpZmRlZiBfV0lOMzIKK0xBTkdVQUdFIExBTkdfRU5HTElT
SCwgU1VCTEFOR19FTkdMSVNIX1VTCisjcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQorI2VuZGlmIC8v
X1dJTjMyCisKKyNpZmRlZiBBUFNUVURJT19JTlZPS0VECisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor
Ly8KKy8vIFRFWFRJTkNMVURFCisvLworCisxIFRFWFRJTkNMVURFIAorQkVHSU4KKyAgICAicmVz
b3VyY2UuaFwwIgorRU5ECisKKzIgVEVYVElOQ0xVREUgCitCRUdJTgorICAgICIjaW5jbHVkZSAi
ImFmeHJlcy5oIiJcclxuIgorICAgICIjaW5jbHVkZSAiIi4uL2NvbW1vbi92ZXJzaW9uLmgiIlww
IgorRU5ECisKKzMgVEVYVElOQ0xVREUgCitCRUdJTgorICAgICJcclxuIgorICAgICJcMCIKK0VO
RAorCisjZW5kaWYgICAgLy8gQVBTVFVESU9fSU5WT0tFRAorCisKKy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCisvLworLy8gVmVyc2lvbgorLy8KKworVlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPCisg
RklMRVZFUlNJT04gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLEJVSUxEX1ZFUlNJT04sQlVJ
TERfUkVWSVNJT04KKyBQUk9EVUNUVkVSU0lPTiBNQUpPUl9WRVJTSU9OLE1JTk9SX1ZFUlNJT04s
QlVJTERfVkVSU0lPTixCVUlMRF9SRVZJU0lPTgorIEZJTEVGTEFHU01BU0sgMHgxN0wKKyNpZmRl
ZiBfREVCVUcKKyBGSUxFRkxBR1MgMHgxTAorI2Vsc2UKKyBGSUxFRkxBR1MgMHgwTAorI2VuZGlm
CisgRklMRU9TIDB4NEwKKyBGSUxFVFlQRSAweDJMCisgRklMRVNVQlRZUEUgMHgwTAorQkVHSU4K
KyAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgQkxPQ0sgIjA0
MDkwNGIwIgorICAgICAgICBCRUdJTgorICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlv
biIsICJBTkdMRSBsaWJFR0wgRHluYW1pYyBMaW5rIExpYnJhcnkiCisgICAgICAgICAgICBWQUxV
RSAiRmlsZVZlcnNpb24iLCBWRVJTSU9OX1NUUklORworICAgICAgICAgICAgVkFMVUUgIkludGVy
bmFsTmFtZSIsICJsaWJFR0wiCisgICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAi
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIgorICAgICAgICAgICAgVkFMVUUgIk9yaWdp
bmFsRmlsZW5hbWUiLCAibGliRUdMLmRsbCIKKyAgICAgICAgICAgIFZBTFVFICJQcml2YXRlQnVp
bGQiLCBWRVJTSU9OX1NUUklORworICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIkFO
R0xFIGxpYkVHTCBEeW5hbWljIExpbmsgTGlicmFyeSIKKyAgICAgICAgICAgIFZBTFVFICJQcm9k
dWN0VmVyc2lvbiIsIFZFUlNJT05fU1RSSU5HCisgICAgICAgIEVORAorICAgIEVORAorICAgIEJM
T0NLICJWYXJGaWxlSW5mbyIKKyAgICBCRUdJTgorICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24i
LCAweDQwOSwgMTIwMAorICAgIEVORAorRU5ECisKKyNlbmRpZiAgICAvLyBFbmdsaXNoIChVLlMu
KSByZXNvdXJjZXMKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKworCisjaWZuZGVmIEFQU1RVRElP
X0lOVk9LRUQKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gR2VuZXJhdGVkIGZyb20gdGhl
IFRFWFRJTkNMVURFIDMgcmVzb3VyY2UuCisvLworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisj
ZW5kaWYgICAgLy8gbm90IEFQU1RVRElPX0lOVk9LRUQKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wudmN4cHJvagkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLnZjeHByb2oJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjU4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9u
PSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1
aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4N
CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAg
ICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+
V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJv
amVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJh
dGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9y
bT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0
aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVh
c2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisg
ICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IlJlbGVhc2V8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25m
aWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2pl
Y3RDb25maWd1cmF0aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJl
bD0iR2xvYmFscyI+DQorICAgIDxQcm9qZWN0R3VpZD57RTc0NkZDQTktNjRDMy00MzNFLTg1RTgt
OUE1QTY3QUI3RUQ2fTwvUHJvamVjdEd1aWQ+DQorICAgIDxSb290TmFtZXNwYWNlPmxpYkVHTDwv
Um9vdE5hbWVzcGFjZT4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAgPC9Q
cm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jv
c29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJD
b25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9D
b25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJT
ZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0
aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVs
PSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5
PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0
ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNv
bmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0Nv
bmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNl
dD4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRp
bWl6YXRpb24+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJD
b25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9D
b25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJT
ZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRz
UGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0
ZW5zaW9uU2V0dGluZ3MiPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAg
PEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIg
Q29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0lt
cG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAg
ICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZv
cm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5
U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3Vw
IExhYmVsPSJVc2VyTWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVj
dEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91
dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50
RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2lu
MzInIj4kKENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50
cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENv
bmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlvbilc
PC9JbnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRh
bD4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9u
KVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9J
bnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAg
IDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091
dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L0ludERp
cj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAg
PExpYnJhcnlQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgICAgPExpYnJh
cnlQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj4kKERYU0RLX0RJUilcbGliXHg4NjskKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+
DQorICAgIDxMaWJyYXJ5UGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgICAgPExp
YnJhcnlQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIj4kKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQorICAgIDxJbmNsdWRlUGF0
aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+JChEWFNES19ESVIpXGluY2x1ZGU7JChWQ0luc3RhbGxEaXIpaW5jbHVkZTskKFZDSW5zdGFs
bERpcilhdGxtZmNcaW5jbHVkZTskKFdpbmRvd3NTZGtEaXIpaW5jbHVkZTskKEZyYW1ld29ya1NE
S0RpcilcaW5jbHVkZTs8L0luY2x1ZGVQYXRoPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0
ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRp
b24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4kKFByb2plY3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19XSU5ET1dT
O19VU1JETEw7TElCRUdMX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFY
OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisg
ICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2lj
UnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAg
ICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQor
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQor
ICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRX
YXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4N
CisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0
OzQyNDU7NDUxMjs0NzAyOyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lm
aWNXYXJuaW5ncz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRp
dGlvbmFsRGVwZW5kZW5jaWVzPmQzZDkubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0Fk
ZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkVH
TC5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KKyAgICAgIDxEZWxheUxvYWRETExzPiUoRGVs
YXlMb2FkRExMcyk8L0RlbGF5TG9hZERMTHM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1h
dGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5X
aW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAg
ICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFj
aGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgICA8UG9zdEJ1aWxkRXZl
bnQ+DQorICAgICAgPENvbW1hbmQ+JTQwZWNobyBvbg0KK21rZGlyICIkKFByb2plY3REaXIpLi5c
Li5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxpYkVHTC5kbGwiICIk
KFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGly
KWxpYkVHTC5saWIiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0K
KyU0MGVjaG8gb2ZmDQorPC9Db21tYW5kPg0KKyAgICA8L1Bvc3RCdWlsZEV2ZW50Pg0KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxD
bENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0K
KyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rp
b25FeHBhbnNpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9q
ZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPkFOR0xFX0RJU0FCTEVfVFJBQ0U7V0lOMzI7TkRFQlVHO19X
SU5ET1dTO19VU1JETEw7TElCRUdMX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05P
TUlOTUFYO19TRUNVUkVfU0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9S
dW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVs
Pg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+
DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQx
Mjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5n
cyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExp
bms+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7JShBZGRpdGlvbmFs
RGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8TW9kdWxlRGVm
aW5pdGlvbkZpbGU+bGliRUdMLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAgICAgPERl
bGF5TG9hZERMTHM+JShEZWxheUxvYWRETExzKTwvRGVsYXlMb2FkRExMcz4NCisgICAgICA8R2Vu
ZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisg
ICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8T3B0aW1pemVSZWZl
cmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8RW5hYmxlQ09NREFURm9s
ZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJl
dmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJn
ZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgICAg
PFBvc3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxDb21tYW5kPiU0MGVjaG8gb24NCitta2RpciAiJChQ
cm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIkKE91dERpcils
aWJFR0wuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitj
b3B5ICIkKE91dERpcilsaWJFR0wubGliIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZp
Z3VyYXRpb24pXCINCislNDBlY2hvIG9mZg0KKzwvQ29tbWFuZD4NCisgICAgPC9Qb3N0QnVpbGRF
dmVudD4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmly
b25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXph
dGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPiQoUHJvamVjdERpcikvLi47ICQoUHJvamVjdERpcikvLi4vLi4vaW5jbHVkZTsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X1dJTkRP
V1M7X1VTUkRMTDtMSUJFR0xfRVhQT1JUUztfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5N
QVg7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0K
KyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFz
aWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisg
ICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4N
CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4N
CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEaXNh
YmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3
MDI7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0K
KyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdh
cm5pbmdBc0Vycm9yPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFk
ZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwv
QWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZpbGU+bGli
RUdMLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAgICAgPERlbGF5TG9hZERMTHM+JShE
ZWxheUxvYWRETExzKTwvRGVsYXlMb2FkRExMcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9y
bWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVt
PldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQor
ICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5N
YWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQb3N0QnVpbGRF
dmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJvamVjdERpciku
LlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliRUdMLmRsbCIg
IiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXRE
aXIpbGliRUdMLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwi
DQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAgIDxN
aWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0K
KyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhT
cGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlT
dWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNs
dWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztf
V0lORE9XUztfVVNSRExMO0xJQkVHTF9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtO
T01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwv
UnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJl
Y29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZl
bD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0
MjQ0OzQyNDU7NDUxMjs0NzAyOyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3Bl
Y2lmaWNXYXJuaW5ncz4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0
YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJy
b3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxM
aW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQzZDkubGliOyUoQWRkaXRpb25h
bERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE1vZHVsZURl
ZmluaXRpb25GaWxlPmxpYkVHTC5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KKyAgICAgIDxE
ZWxheUxvYWRETExzPiUoRGVsYXlMb2FkRExMcyk8L0RlbGF5TG9hZERMTHM+DQorICAgICAgPEdl
bmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQor
ICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVm
ZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZv
bGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblBy
ZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFy
Z2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAg
IDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQo
UHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIp
bGliRUdMLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQor
Y29weSAiJChPdXREaXIpbGliRUdMLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25m
aWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxk
RXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IkNvbmZpZy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cQ29tbW9uXGRlYnVnLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXNw
bGF5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJsaWJFR0wuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Im1haW4uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IlN1cmZhY2UuY3BwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkNvbmZpZy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IkRpc3BsYXkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRl
XEVHTFxlZ2wuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVH
TFxlZ2xleHQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVH
TFxlZ2xwbGF0Zm9ybS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Im1haW4uaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZXNvdXJjZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IlN1cmZhY2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21t
b25cdmVyc2lvbi5oIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8
Tm9uZSBJbmNsdWRlPSJsaWJFR0wuZGVmIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdy
b3VwPg0KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9ImxpYkVHTC5yYyIgLz4NCisgIDwv
SXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVk
ZT0iLi5cbGliR0xFU3YyXGxpYkdMRVN2Mi52Y3hwcm9qIj4NCisgICAgICA8UHJvamVjdD57YjU4
NzFhN2EtOTY4Yy00MmUzLWEzM2ItOTgxZTZmNDQ4ZTc4fTwvUHJvamVjdD4NCisgICAgPC9Qcm9q
ZWN0UmVmZXJlbmNlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNU
YXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExh
YmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJFR0wvbGliRUdMLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3hw
cm9qLmZpbHRlcnMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKK++7vzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAi
IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIw
MDMiPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMi
Pg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMy
RDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2Nj
O2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPg0KKyAgICA8L0Zp
bHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPg0KKyAgICAgIDxVbmlx
dWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9Vbmlx
dWVJZGVudGlmaWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hz
ZDwvRXh0ZW5zaW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVt
R3JvdXA+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29uZmlnLmNwcCI+DQorICAgICAgPEZp
bHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXGRlYnVnLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iRGlzcGxheS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImxpYkVHTC5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im1haW4uY3BwIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJTdXJmYWNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQ29uZmlnLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IkRpc3BsYXkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxF
R0xcZWdsLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcRUdMXGVn
bGV4dC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2xw
bGF0Zm9ybS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJtYWluLmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlc291cmNlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlN1
cmZhY2UuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXHZlcnNpb24uaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxSZXNvdXJjZUNvbXBpbGUg
SW5jbHVkZT0ibGliRUdMLnJjIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0K
KyAgICA8Tm9uZSBJbmNsdWRlPSJsaWJFR0wuZGVmIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorPC9Q
cm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJFR0wvbWFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkVHTC9tYWluLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbWFpbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTY2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBtYWluLmNwcDogRExMIGVudHJ5IHBv
aW50IGFuZCBtYW5hZ2VtZW50IG9mIHRocmVhZC1sb2NhbCBkYXRhLgorCisjaW5jbHVkZSAibGli
RUdML21haW4uaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCitzdGF0aWMgRFdPUkQg
Y3VycmVudFRMUyA9IFRMU19PVVRfT0ZfSU5ERVhFUzsKKworZXh0ZXJuICJDIiBCT09MIFdJTkFQ
SSBEbGxNYWluKEhJTlNUQU5DRSBpbnN0YW5jZSwgRFdPUkQgcmVhc29uLCBMUFZPSUQgcmVzZXJ2
ZWQpCit7CisgICAgc3dpdGNoIChyZWFzb24pCisgICAgeworICAgICAgY2FzZSBETExfUFJPQ0VT
U19BVFRBQ0g6CisgICAgICAgIHsKKyNpZiAhZGVmaW5lZChBTkdMRV9ESVNBQkxFX1RSQUNFKQor
ICAgICAgICAgICAgRklMRSAqZGVidWcgPSBmb3BlbihUUkFDRV9PVVRQVVRfRklMRSwgInJ0Iik7
CisKKyAgICAgICAgICAgIGlmIChkZWJ1ZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBmY2xvc2UoZGVidWcpOworICAgICAgICAgICAgICAgIGRlYnVnID0gZm9wZW4oVFJBQ0VfT1VU
UFVUX0ZJTEUsICJ3dCIpOyAgIC8vIEVyYXNlCisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgaWYgKGRlYnVnKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ZmNsb3NlKGRlYnVnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisjZW5kaWYK
KworICAgICAgICAgICAgY3VycmVudFRMUyA9IFRsc0FsbG9jKCk7CisKKyAgICAgICAgICAgIGlm
IChjdXJyZW50VExTID09IFRMU19PVVRfT0ZfSU5ERVhFUykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgLy8gRmFsbCB0aHJvdWdodCB0byBpbml0aWFsaXplIGluZGV4CisgICAgICBjYXNlIERMTF9U
SFJFQURfQVRUQUNIOgorICAgICAgICB7CisgICAgICAgICAgICBlZ2w6OkN1cnJlbnQgKmN1cnJl
bnQgPSAoZWdsOjpDdXJyZW50KilMb2NhbEFsbG9jKExQVFIsIHNpemVvZihlZ2w6OkN1cnJlbnQp
KTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgVGxzU2V0VmFsdWUoY3VycmVudFRMUywgY3VycmVudCk7CisKKyAgICAgICAgICAgICAg
ICBjdXJyZW50LT5lcnJvciA9IEVHTF9TVUNDRVNTOworICAgICAgICAgICAgICAgIGN1cnJlbnQt
PkFQSSA9IEVHTF9PUEVOR0xfRVNfQVBJOworICAgICAgICAgICAgICAgIGN1cnJlbnQtPmRpc3Bs
YXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICAgICAgICAgICAgICBjdXJyZW50LT5kcmF3U3VyZmFj
ZSA9IEVHTF9OT19TVVJGQUNFOworICAgICAgICAgICAgICAgIGN1cnJlbnQtPnJlYWRTdXJmYWNl
ID0gRUdMX05PX1NVUkZBQ0U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIERMTF9USFJFQURfREVUQUNIOgorICAgICAgICB7CisgICAgICAgICAg
ICB2b2lkICpjdXJyZW50ID0gVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7CisKKyAgICAgICAgICAg
IGlmIChjdXJyZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIExvY2FsRnJlZSgo
SExPQ0FMKWN1cnJlbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBETExfUFJPQ0VTU19ERVRBQ0g6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHZvaWQgKmN1cnJlbnQgPSBUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKKworICAgICAgICAgICAg
aWYgKGN1cnJlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTG9jYWxGcmVlKChI
TE9DQUwpY3VycmVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFRsc0ZyZWUoY3Vy
cmVudFRMUyk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworbmFtZXNwYWNlIGVn
bAorewordm9pZCBzZXRDdXJyZW50RXJyb3IoRUdMaW50IGVycm9yKQoreworICAgIEN1cnJlbnQg
KmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7CisKKyAgICBjdXJy
ZW50LT5lcnJvciA9IGVycm9yOworfQorCitFR0xpbnQgZ2V0Q3VycmVudEVycm9yKCkKK3sKKyAg
ICBDdXJyZW50ICpjdXJyZW50ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOwor
CisgICAgcmV0dXJuIGN1cnJlbnQtPmVycm9yOworfQorCit2b2lkIHNldEN1cnJlbnRBUEkoRUdM
ZW51bSBBUEkpCit7CisgICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1
ZShjdXJyZW50VExTKTsKKworICAgIGN1cnJlbnQtPkFQSSA9IEFQSTsKK30KKworRUdMZW51bSBn
ZXRDdXJyZW50QVBJKCkKK3sKKyAgICBDdXJyZW50ICpjdXJyZW50ID0gKEN1cnJlbnQqKVRsc0dl
dFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgcmV0dXJuIGN1cnJlbnQtPkFQSTsKK30KKwordm9p
ZCBzZXRDdXJyZW50RGlzcGxheShFR0xEaXNwbGF5IGRweSkKK3sKKyAgICBDdXJyZW50ICpjdXJy
ZW50ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgY3VycmVudC0+
ZGlzcGxheSA9IGRweTsKK30KKworRUdMRGlzcGxheSBnZXRDdXJyZW50RGlzcGxheSgpCit7Cisg
ICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsK
KworICAgIHJldHVybiBjdXJyZW50LT5kaXNwbGF5OworfQorCit2b2lkIHNldEN1cnJlbnREcmF3
U3VyZmFjZShFR0xTdXJmYWNlIHN1cmZhY2UpCit7CisgICAgQ3VycmVudCAqY3VycmVudCA9IChD
dXJyZW50KilUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKKworICAgIGN1cnJlbnQtPmRyYXdTdXJm
YWNlID0gc3VyZmFjZTsKK30KKworRUdMU3VyZmFjZSBnZXRDdXJyZW50RHJhd1N1cmZhY2UoKQor
eworICAgIEN1cnJlbnQgKmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRM
Uyk7CisKKyAgICByZXR1cm4gY3VycmVudC0+ZHJhd1N1cmZhY2U7Cit9CisKK3ZvaWQgc2V0Q3Vy
cmVudFJlYWRTdXJmYWNlKEVHTFN1cmZhY2Ugc3VyZmFjZSkKK3sKKyAgICBDdXJyZW50ICpjdXJy
ZW50ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgY3VycmVudC0+
cmVhZFN1cmZhY2UgPSBzdXJmYWNlOworfQorCitFR0xTdXJmYWNlIGdldEN1cnJlbnRSZWFkU3Vy
ZmFjZSgpCit7CisgICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1ZShj
dXJyZW50VExTKTsKKworICAgIHJldHVybiBjdXJyZW50LT5yZWFkU3VyZmFjZTsKK30KKwordm9p
ZCBlcnJvcihFR0xpbnQgZXJyb3JDb2RlKQoreworICAgIGVnbDo6c2V0Q3VycmVudEVycm9yKGVy
cm9yQ29kZSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJF
R0wvbWFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJF
R0wvbWFpbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkVHTC9tYWluLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIG1haW4uaDogTWFuYWdlbWVudCBvZiB0aHJlYWQtbG9jYWwgZGF0YS4KKworI2lm
bmRlZiBMSUJFR0xfTUFJTl9IXworI2RlZmluZSBMSUJFR0xfTUFJTl9IXworCisjZGVmaW5lIEVH
TEFQSQorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisKK25h
bWVzcGFjZSBlZ2wKK3sKK3N0cnVjdCBDdXJyZW50Cit7CisgICAgRUdMaW50IGVycm9yOworICAg
IEVHTGVudW0gQVBJOworICAgIEVHTERpc3BsYXkgZGlzcGxheTsKKyAgICBFR0xTdXJmYWNlIGRy
YXdTdXJmYWNlOworICAgIEVHTFN1cmZhY2UgcmVhZFN1cmZhY2U7Cit9OworCit2b2lkIHNldEN1
cnJlbnRFcnJvcihFR0xpbnQgZXJyb3IpOworRUdMaW50IGdldEN1cnJlbnRFcnJvcigpOworCit2
b2lkIHNldEN1cnJlbnRBUEkoRUdMZW51bSBBUEkpOworRUdMZW51bSBnZXRDdXJyZW50QVBJKCk7
CisKK3ZvaWQgc2V0Q3VycmVudERpc3BsYXkoRUdMRGlzcGxheSBkcHkpOworRUdMRGlzcGxheSBn
ZXRDdXJyZW50RGlzcGxheSgpOworCit2b2lkIHNldEN1cnJlbnREcmF3U3VyZmFjZShFR0xTdXJm
YWNlIHN1cmZhY2UpOworRUdMU3VyZmFjZSBnZXRDdXJyZW50RHJhd1N1cmZhY2UoKTsKKwordm9p
ZCBzZXRDdXJyZW50UmVhZFN1cmZhY2UoRUdMU3VyZmFjZSBzdXJmYWNlKTsKK0VHTFN1cmZhY2Ug
Z2V0Q3VycmVudFJlYWRTdXJmYWNlKCk7CisKK3ZvaWQgZXJyb3IoRUdMaW50IGVycm9yQ29kZSk7
CisKK3RlbXBsYXRlPGNsYXNzIFQ+Citjb25zdCBUICZlcnJvcihFR0xpbnQgZXJyb3JDb2RlLCBj
b25zdCBUICZyZXR1cm5WYWx1ZSkKK3sKKyAgICBlcnJvcihlcnJvckNvZGUpOworCisgICAgcmV0
dXJuIHJldHVyblZhbHVlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBUPgorY29uc3QgVCAmc3VjY2Vz
cyhjb25zdCBUICZyZXR1cm5WYWx1ZSkKK3sKKyAgICBlZ2w6OnNldEN1cnJlbnRFcnJvcihFR0xf
U1VDQ0VTUyk7CisKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK30KKworI2VuZGlmICAv
LyBMSUJFR0xfTUFJTl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVH
TC9yZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJFR0wvcmVzb3VyY2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJFR0wvcmVzb3VyY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorLy97
e05PX0RFUEVOREVOQ0lFU319CisvLyBNaWNyb3NvZnQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgaW5j
bHVkZSBmaWxlLgorLy8gVXNlZCBieSBsaWJFR0wucmMKKworLy8gTmV4dCBkZWZhdWx0IHZhbHVl
cyBmb3IgbmV3IG9iamVjdHMKKy8vIAorI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQKKyNpZm5kZWYg
QVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUworI2RlZmluZSBfQVBTX05FWFRfUkVTT1VSQ0VfVkFM
VUUgICAgICAgIDEwMQorI2RlZmluZSBfQVBTX05FWFRfQ09NTUFORF9WQUxVRSAgICAgICAgIDQw
MDAxCisjZGVmaW5lIF9BUFNfTkVYVF9DT05UUk9MX1ZBTFVFICAgICAgICAgMTAwMQorI2RlZmlu
ZSBfQVBTX05FWFRfU1lNRURfVkFMVUUgICAgICAgICAgIDEwMQorI2VuZGlmCisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQmluYXJ5U3RyZWFtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9CaW5h
cnlTdHJlYW0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvQmluYXJ5U3RyZWFtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTY0IEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gQmluYXJ5U3RyZWFtLmg6IFByb3ZpZGVzIGJpbmFyeSBzZXJpYWxp
emF0aW9uIG9mIHNpbXBsZSB0eXBlcy4KKworI2lmbmRlZiBMSUJHTEVTVjJfQklOQVJZU1RSRUFN
X0hfCisjZGVmaW5lIExJQkdMRVNWMl9CSU5BUllTVFJFQU1fSF8KKworI2luY2x1ZGUgImNvbW1v
bi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSBnbAoreworCitjbGFzcyBCaW5hcnlJbnB1dFN0
cmVhbQoreworICBwdWJsaWM6CisgICAgQmluYXJ5SW5wdXRTdHJlYW0oY29uc3Qgdm9pZCAqZGF0
YSwgc2l6ZV90IGxlbmd0aCkKKyAgICB7CisgICAgICAgIG1FcnJvciA9IGZhbHNlOworICAgICAg
ICBtT2Zmc2V0ID0gMDsKKyAgICAgICAgbURhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSk7CisgICAgICAgIG1MZW5ndGggPSBsZW5ndGg7CisgICAgfQorCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZWFkKFQgKnYsIHNpemVfdCBudW0pCisgICAgeworICAg
ICAgICB1bmlvbgorICAgICAgICB7CisgICAgICAgICAgICBUIGR1bW15OyAgLy8gQ29tcGlsYXRp
b24gZXJyb3IgZm9yIG5vbi10cml2aWFsIHR5cGVzCisgICAgICAgIH0gZHVtbXk7CisgICAgICAg
ICh2b2lkKSBkdW1teTsKKworICAgICAgICBpZiAobUVycm9yKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgbGVuZ3RoID0gbnVtICog
c2l6ZW9mKFQpOworCisgICAgICAgIGlmIChtT2Zmc2V0ICsgbGVuZ3RoID4gbUxlbmd0aCkKKyAg
ICAgICAgeworICAgICAgICAgICAgbUVycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIG1lbWNweSh2LCBtRGF0YSArIG1PZmZzZXQsIGxlbmd0aCk7
CisgICAgICAgIG1PZmZzZXQgKz0gbGVuZ3RoOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgorICAgIHZvaWQgcmVhZChUICogdikKKyAgICB7CisgICAgICAgIHJlYWQodiwgMSk7
CisgICAgfQorCisgICAgdm9pZCByZWFkKHN0ZDo6c3RyaW5nICp2KQorICAgIHsKKyAgICAgICAg
c2l6ZV90IGxlbmd0aDsKKyAgICAgICAgcmVhZCgmbGVuZ3RoKTsKKworICAgICAgICBpZiAobUVy
cm9yKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpZiAobU9mZnNldCArIGxlbmd0aCA+IG1MZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1FcnJvciA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICB2LT5hc3NpZ24obURhdGEgKyBtT2Zmc2V0LCBsZW5ndGgpOworICAgICAgICBtT2Zmc2V0ICs9
IGxlbmd0aDsKKyAgICB9CisKKyAgICB2b2lkIHNraXAoc2l6ZV90IGxlbmd0aCkKKyAgICB7Cisg
ICAgICAgIGlmIChtT2Zmc2V0ICsgbGVuZ3RoID4gbUxlbmd0aCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbUVycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIG1PZmZzZXQgKz0gbGVuZ3RoOworICAgIH0KKworICAgIHNpemVfdCBvZmZzZXQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1PZmZzZXQ7CisgICAgfQorCisgICAgYm9vbCBl
cnJvcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbUVycm9yOworICAgIH0KKworICAg
IGJvb2wgZW5kT2ZTdHJlYW0oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1PZmZzZXQg
PT0gbUxlbmd0aDsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9B
U1NJR04oQmluYXJ5SW5wdXRTdHJlYW0pOworICAgIGJvb2wgbUVycm9yOworICAgIHNpemVfdCBt
T2Zmc2V0OworICAgIGNvbnN0IGNoYXIgKm1EYXRhOworICAgIHNpemVfdCBtTGVuZ3RoOworfTsK
KworY2xhc3MgQmluYXJ5T3V0cHV0U3RyZWFtCit7CisgIHB1YmxpYzoKKyAgICBCaW5hcnlPdXRw
dXRTdHJlYW0oKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
ICB2b2lkIHdyaXRlKGNvbnN0IFQgKnYsIHNpemVfdCBudW0pCisgICAgeworICAgICAgICB1bmlv
bgorICAgICAgICB7CisgICAgICAgICAgICBUIGR1bW15OyAgLy8gQ29tcGlsYXRpb24gZXJyb3Ig
Zm9yIG5vbi10cml2aWFsIHR5cGVzCisgICAgICAgIH0gZHVtbXk7CisgICAgICAgICh2b2lkKSBk
dW1teTsKKworICAgICAgICBjb25zdCBjaGFyICphc0J5dGVzID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4odik7CisgICAgICAgIG1EYXRhLmluc2VydChtRGF0YS5lbmQoKSwgYXNCeXRl
cywgYXNCeXRlcyArIG51bSAqIHNpemVvZihUKSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CisgICAgdm9pZCB3cml0ZShjb25zdCBUICZ2KQorICAgIHsKKyAgICAgICAgd3Jp
dGUoJnYsIDEpOworICAgIH0KKworICAgIHZvaWQgd3JpdGUoY29uc3Qgc3RkOjpzdHJpbmcgJnYp
CisgICAgeworICAgICAgICBzaXplX3QgbGVuZ3RoID0gdi5sZW5ndGgoKTsKKyAgICAgICAgd3Jp
dGUobGVuZ3RoKTsKKworICAgICAgICB3cml0ZSh2LmNfc3RyKCksIGxlbmd0aCk7CisgICAgfQor
CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbURhdGEu
c2l6ZSgpOworICAgIH0KKworICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1EYXRhLnNpemUoKSA/ICZtRGF0YVswXSA6IE5VTEw7CisgICAgfQorCisg
IHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEJpbmFyeU91dHB1dFN0cmVh
bSk7CisgICAgc3RkOjp2ZWN0b3I8Y2hhcj4gbURhdGE7Cit9OworfQorCisjZW5kaWYgIC8vIExJ
QkdMRVNWMl9CSU5BUllTVFJFQU1fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL0J1ZmZlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0J1ZmZlci5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTE5IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKy8vIEJ1ZmZlci5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpCdWZmZXIgY2xhc3MsIHJlcHJl
c2VudGluZyBzdG9yYWdlIG9mIHZlcnRleCBhbmQvb3IKKy8vIGluZGV4IGRhdGEuIEltcGxlbWVu
dHMgR0wgYnVmZmVyIG9iamVjdHMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4KKy8vIFtPcGVu
R0wgRVMgMi4wLjI0XSBzZWN0aW9uIDIuOSBwYWdlIDIxLgorCisjaW5jbHVkZSAibGliR0xFU3Yy
L0J1ZmZlci5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlcmVyLmgiCisKK25hbWVzcGFjZSBnbAoreworCitCdWZmZXI6OkJ1ZmZl
cihyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHVpbnQgaWQpIDogUmVmQ291bnRPYmplY3QoaWQp
Cit7CisgICAgbVJlbmRlcmVyID0gcmVuZGVyZXI7CisgICAgbVVzYWdlID0gR0xfRFlOQU1JQ19E
UkFXOworCisgICAgbUJ1ZmZlclN0b3JhZ2UgPSByZW5kZXJlci0+Y3JlYXRlQnVmZmVyU3RvcmFn
ZSgpOworICAgIG1TdGF0aWNWZXJ0ZXhCdWZmZXIgPSBOVUxMOworICAgIG1TdGF0aWNJbmRleEJ1
ZmZlciA9IE5VTEw7CisgICAgbVVubW9kaWZpZWREYXRhVXNlID0gMDsKK30KKworQnVmZmVyOjp+
QnVmZmVyKCkKK3sKKyAgICBkZWxldGUgbUJ1ZmZlclN0b3JhZ2U7CisgICAgZGVsZXRlIG1TdGF0
aWNWZXJ0ZXhCdWZmZXI7CisgICAgZGVsZXRlIG1TdGF0aWNJbmRleEJ1ZmZlcjsKK30KKwordm9p
ZCBCdWZmZXI6OmJ1ZmZlckRhdGEoY29uc3Qgdm9pZCAqZGF0YSwgR0xzaXplaXB0ciBzaXplLCBH
TGVudW0gdXNhZ2UpCit7CisgICAgbUJ1ZmZlclN0b3JhZ2UtPmNsZWFyKCk7CisgICAgbUJ1ZmZl
clN0b3JhZ2UtPnNldERhdGEoZGF0YSwgc2l6ZSwgMCk7CisKKyAgICBtVXNhZ2UgPSB1c2FnZTsK
KworICAgIGludmFsaWRhdGVTdGF0aWNEYXRhKCk7CisKKyAgICBpZiAodXNhZ2UgPT0gR0xfU1RB
VElDX0RSQVcpCisgICAgeworICAgICAgICBtU3RhdGljVmVydGV4QnVmZmVyID0gbmV3IHJ4OjpT
dGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UobVJlbmRlcmVyKTsKKyAgICAgICAgbVN0YXRpY0lu
ZGV4QnVmZmVyID0gbmV3IHJ4OjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZShtUmVuZGVyZXIp
OworICAgIH0KK30KKwordm9pZCBCdWZmZXI6OmJ1ZmZlclN1YkRhdGEoY29uc3Qgdm9pZCAqZGF0
YSwgR0xzaXplaXB0ciBzaXplLCBHTGludHB0ciBvZmZzZXQpCit7CisgICAgbUJ1ZmZlclN0b3Jh
Z2UtPnNldERhdGEoZGF0YSwgc2l6ZSwgb2Zmc2V0KTsKKworICAgIGlmICgobVN0YXRpY1ZlcnRl
eEJ1ZmZlciAmJiBtU3RhdGljVmVydGV4QnVmZmVyLT5nZXRCdWZmZXJTaXplKCkgIT0gMCkgfHwg
KG1TdGF0aWNJbmRleEJ1ZmZlciAmJiBtU3RhdGljSW5kZXhCdWZmZXItPmdldEJ1ZmZlclNpemUo
KSAhPSAwKSkKKyAgICB7CisgICAgICAgIGludmFsaWRhdGVTdGF0aWNEYXRhKCk7CisgICAgfQor
CisgICAgbVVubW9kaWZpZWREYXRhVXNlID0gMDsKK30KKworcng6OkJ1ZmZlclN0b3JhZ2UgKkJ1
ZmZlcjo6Z2V0U3RvcmFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1CdWZmZXJTdG9yYWdlOwor
fQorCit1bnNpZ25lZCBpbnQgQnVmZmVyOjpzaXplKCkKK3sKKyAgICByZXR1cm4gbUJ1ZmZlclN0
b3JhZ2UtPmdldFNpemUoKTsKK30KKworR0xlbnVtIEJ1ZmZlcjo6dXNhZ2UoKSBjb25zdAorewor
ICAgIHJldHVybiBtVXNhZ2U7Cit9CisKK3J4OjpTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2Ug
KkJ1ZmZlcjo6Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbVN0YXRpY1Zl
cnRleEJ1ZmZlcjsKK30KKworcng6OlN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlICpCdWZmZXI6
OmdldFN0YXRpY0luZGV4QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbVN0YXRpY0luZGV4QnVmZmVy
OworfQorCit2b2lkIEJ1ZmZlcjo6aW52YWxpZGF0ZVN0YXRpY0RhdGEoKQoreworICAgIGRlbGV0
ZSBtU3RhdGljVmVydGV4QnVmZmVyOworICAgIG1TdGF0aWNWZXJ0ZXhCdWZmZXIgPSBOVUxMOwor
CisgICAgZGVsZXRlIG1TdGF0aWNJbmRleEJ1ZmZlcjsKKyAgICBtU3RhdGljSW5kZXhCdWZmZXIg
PSBOVUxMOworCisgICAgbVVubW9kaWZpZWREYXRhVXNlID0gMDsKK30KKworLy8gQ3JlYXRlcyBz
dGF0aWMgYnVmZmVycyBpZiBzdWZmaWNpZW50IHVzZWQgZGF0YSBoYXMgYmVlbiBsZWZ0IHVubW9k
aWZpZWQKK3ZvaWQgQnVmZmVyOjpwcm9tb3RlU3RhdGljVXNhZ2UoaW50IGRhdGFTaXplKQorewor
ICAgIGlmICghbVN0YXRpY1ZlcnRleEJ1ZmZlciAmJiAhbVN0YXRpY0luZGV4QnVmZmVyKQorICAg
IHsKKyAgICAgICAgbVVubW9kaWZpZWREYXRhVXNlICs9IGRhdGFTaXplOworCisgICAgICAgIGlm
IChtVW5tb2RpZmllZERhdGFVc2UgPiAzICogbUJ1ZmZlclN0b3JhZ2UtPmdldFNpemUoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgbVN0YXRpY1ZlcnRleEJ1ZmZlciA9IG5ldyByeDo6U3RhdGlj
VmVydGV4QnVmZmVySW50ZXJmYWNlKG1SZW5kZXJlcik7CisgICAgICAgICAgICBtU3RhdGljSW5k
ZXhCdWZmZXIgPSBuZXcgcng6OlN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlKG1SZW5kZXJlcik7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9CdWZmZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQnVmZmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJ1ZmZlci5oOiBEZWZpbmVzIHRoZSBn
bDo6QnVmZmVyIGNsYXNzLCByZXByZXNlbnRpbmcgc3RvcmFnZSBvZiB2ZXJ0ZXggYW5kL29yCisv
LyBpbmRleCBkYXRhLiBJbXBsZW1lbnRzIEdMIGJ1ZmZlciBvYmplY3RzIGFuZCByZWxhdGVkIGZ1
bmN0aW9uYWxpdHkuCisvLyBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAyLjkgcGFnZSAyMS4K
KworI2lmbmRlZiBMSUJHTEVTVjJfQlVGRkVSX0hfCisjZGVmaW5lIExJQkdMRVNWMl9CVUZGRVJf
SF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL1Jl
ZkNvdW50T2JqZWN0LmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFz
cyBCdWZmZXJTdG9yYWdlOworY2xhc3MgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U7CitjbGFz
cyBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U7Cit9OworCituYW1lc3BhY2UgZ2wKK3sKKwor
Y2xhc3MgQnVmZmVyIDogcHVibGljIFJlZkNvdW50T2JqZWN0Cit7CisgIHB1YmxpYzoKKyAgICBC
dWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGlkKTsKKworICAgIHZpcnR1YWwg
fkJ1ZmZlcigpOworCisgICAgdm9pZCBidWZmZXJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6
ZWlwdHIgc2l6ZSwgR0xlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoY29uc3Qg
dm9pZCAqZGF0YSwgR0xzaXplaXB0ciBzaXplLCBHTGludHB0ciBvZmZzZXQpOworCisgICAgR0xl
bnVtIHVzYWdlKCkgY29uc3Q7CisKKyAgICByeDo6QnVmZmVyU3RvcmFnZSAqZ2V0U3RvcmFnZSgp
IGNvbnN0OworICAgIHVuc2lnbmVkIGludCBzaXplKCk7CisKKyAgICByeDo6U3RhdGljVmVydGV4
QnVmZmVySW50ZXJmYWNlICpnZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoKTsKKyAgICByeDo6U3RhdGlj
SW5kZXhCdWZmZXJJbnRlcmZhY2UgKmdldFN0YXRpY0luZGV4QnVmZmVyKCk7CisgICAgdm9pZCBp
bnZhbGlkYXRlU3RhdGljRGF0YSgpOworICAgIHZvaWQgcHJvbW90ZVN0YXRpY1VzYWdlKGludCBk
YXRhU2l6ZSk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oQnVm
ZmVyKTsKKworICAgIHJ4OjpSZW5kZXJlciAqbVJlbmRlcmVyOworICAgIEdMZW51bSBtVXNhZ2U7
CisKKyAgICByeDo6QnVmZmVyU3RvcmFnZSAqbUJ1ZmZlclN0b3JhZ2U7CisKKyAgICByeDo6U3Rh
dGljVmVydGV4QnVmZmVySW50ZXJmYWNlICptU3RhdGljVmVydGV4QnVmZmVyOworICAgIHJ4OjpT
dGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSAqbVN0YXRpY0luZGV4QnVmZmVyOworICAgIHVuc2ln
bmVkIGludCBtVW5tb2RpZmllZERhdGFVc2U7Cit9OworCit9CisKKyNlbmRpZiAgIC8vIExJQkdM
RVNWMl9CVUZGRVJfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9Db250ZXh0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
Mjk3MiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisv
LyBDb250ZXh0LmNwcDogSW1wbGVtZW50cyB0aGUgZ2w6OkNvbnRleHQgY2xhc3MsIG1hbmFnaW5n
IGFsbCBHTCBzdGF0ZSBhbmQgcGVyZm9ybWluZworLy8gcmVuZGVyaW5nIG9wZXJhdGlvbnMuIEl0
IGlzIHRoZSBHTEVTMiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiBFR0xDb250ZXh0LgorCisj
aW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWlu
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9CdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvRmVuY2UuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW0uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJv
Z3JhbUJpbmFyeS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9RdWVyeS5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9UZXh0dXJlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1Jlc291cmNlTWFuYWdlci5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldC5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oIgorCisjaW5jbHVkZSAibGliRUdML1N1cmZhY2UuaCIK
KworI3VuZGVmIG5lYXIKKyN1bmRlZiBmYXIKKworbmFtZXNwYWNlIGdsCit7CitzdGF0aWMgY29u
c3QgY2hhciogbWFrZVN0YXRpY1N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKQoreworICAg
IHN0YXRpYyBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gc3RyaW5nczsKKyAgICBzdGQ6OnNldDxzdGQ6
OnN0cmluZz46Oml0ZXJhdG9yIGl0ID0gc3RyaW5ncy5maW5kKHN0cik7CisgICAgaWYgKGl0ICE9
IHN0cmluZ3MuZW5kKCkpCisgICAgICByZXR1cm4gaXQtPmNfc3RyKCk7CisKKyAgICByZXR1cm4g
c3RyaW5ncy5pbnNlcnQoc3RyKS5maXJzdC0+Y19zdHIoKTsKK30KKworQ29udGV4dDo6Q29udGV4
dChjb25zdCBnbDo6Q29udGV4dCAqc2hhcmVDb250ZXh0LCByeDo6UmVuZGVyZXIgKnJlbmRlcmVy
LCBib29sIG5vdGlmeVJlc2V0cywgYm9vbCByb2J1c3RBY2Nlc3MpIDogbVJlbmRlcmVyKHJlbmRl
cmVyKQoreworICAgIEFTU0VSVChyb2J1c3RBY2Nlc3MgPT0gZmFsc2UpOyAgIC8vIFVuaW1wbGVt
ZW50ZWQKKworICAgIG1GZW5jZUhhbmRsZUFsbG9jYXRvci5zZXRCYXNlSGFuZGxlKDApOworCisg
ICAgc2V0Q2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKKworICAgIG1TdGF0ZS5k
ZXB0aENsZWFyVmFsdWUgPSAxLjBmOworICAgIG1TdGF0ZS5zdGVuY2lsQ2xlYXJWYWx1ZSA9IDA7
CisKKyAgICBtU3RhdGUucmFzdGVyaXplci5jdWxsRmFjZSA9IGZhbHNlOworICAgIG1TdGF0ZS5y
YXN0ZXJpemVyLmN1bGxNb2RlID0gR0xfQkFDSzsKKyAgICBtU3RhdGUucmFzdGVyaXplci5mcm9u
dEZhY2UgPSBHTF9DQ1c7CisgICAgbVN0YXRlLnJhc3Rlcml6ZXIucG9seWdvbk9mZnNldEZpbGwg
PSBmYWxzZTsKKyAgICBtU3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0RmFjdG9yID0gMC4w
ZjsKKyAgICBtU3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0VW5pdHMgPSAwLjBmOworICAg
IG1TdGF0ZS5yYXN0ZXJpemVyLnBvaW50RHJhd01vZGUgPSBmYWxzZTsKKyAgICBtU3RhdGUucmFz
dGVyaXplci5tdWx0aVNhbXBsZSA9IGZhbHNlOworICAgIG1TdGF0ZS5zY2lzc29yVGVzdCA9IGZh
bHNlOworICAgIG1TdGF0ZS5zY2lzc29yLnggPSAwOworICAgIG1TdGF0ZS5zY2lzc29yLnkgPSAw
OworICAgIG1TdGF0ZS5zY2lzc29yLndpZHRoID0gMDsKKyAgICBtU3RhdGUuc2Npc3Nvci5oZWln
aHQgPSAwOworCisgICAgbVN0YXRlLmJsZW5kLmJsZW5kID0gZmFsc2U7CisgICAgbVN0YXRlLmJs
ZW5kLnNvdXJjZUJsZW5kUkdCID0gR0xfT05FOworICAgIG1TdGF0ZS5ibGVuZC5zb3VyY2VCbGVu
ZEFscGhhID0gR0xfT05FOworICAgIG1TdGF0ZS5ibGVuZC5kZXN0QmxlbmRSR0IgPSBHTF9aRVJP
OworICAgIG1TdGF0ZS5ibGVuZC5kZXN0QmxlbmRBbHBoYSA9IEdMX1pFUk87CisgICAgbVN0YXRl
LmJsZW5kLmJsZW5kRXF1YXRpb25SR0IgPSBHTF9GVU5DX0FERDsKKyAgICBtU3RhdGUuYmxlbmQu
YmxlbmRFcXVhdGlvbkFscGhhID0gR0xfRlVOQ19BREQ7CisgICAgbVN0YXRlLmJsZW5kLnNhbXBs
ZUFscGhhVG9Db3ZlcmFnZSA9IGZhbHNlOworICAgIG1TdGF0ZS5ibGVuZC5kaXRoZXIgPSB0cnVl
OworCisgICAgbVN0YXRlLmJsZW5kQ29sb3IucmVkID0gMDsKKyAgICBtU3RhdGUuYmxlbmRDb2xv
ci5ncmVlbiA9IDA7CisgICAgbVN0YXRlLmJsZW5kQ29sb3IuYmx1ZSA9IDA7CisgICAgbVN0YXRl
LmJsZW5kQ29sb3IuYWxwaGEgPSAwOworCisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5kZXB0aFRl
c3QgPSBmYWxzZTsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLmRlcHRoRnVuYyA9IEdMX0xFU1M7
CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5kZXB0aE1hc2sgPSB0cnVlOworICAgIG1TdGF0ZS5k
ZXB0aFN0ZW5jaWwuc3RlbmNpbFRlc3QgPSBmYWxzZTsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2ls
LnN0ZW5jaWxGdW5jID0gR0xfQUxXQVlTOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNp
bE1hc2sgPSAtMTsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxXcml0ZW1hc2sgPSAt
MTsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxCYWNrRnVuYyA9IEdMX0FMV0FZUzsK
KyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxCYWNrTWFzayA9IC0gMTsKKyAgICBtU3Rh
dGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxCYWNrV3JpdGVtYXNrID0gLTE7CisgICAgbVN0YXRlLmRl
cHRoU3RlbmNpbC5zdGVuY2lsRmFpbCA9IEdMX0tFRVA7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNp
bC5zdGVuY2lsUGFzc0RlcHRoRmFpbCA9IEdMX0tFRVA7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNp
bC5zdGVuY2lsUGFzc0RlcHRoUGFzcyA9IEdMX0tFRVA7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNp
bC5zdGVuY2lsQmFja0ZhaWwgPSBHTF9LRUVQOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3Rl
bmNpbEJhY2tQYXNzRGVwdGhGYWlsID0gR0xfS0VFUDsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2ls
LnN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzcyA9IEdMX0tFRVA7CisKKyAgICBtU3RhdGUuc3RlbmNp
bFJlZiA9IDA7CisgICAgbVN0YXRlLnN0ZW5jaWxCYWNrUmVmID0gMDsKKworICAgIG1TdGF0ZS5z
YW1wbGVDb3ZlcmFnZSA9IGZhbHNlOworICAgIG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZVZhbHVlID0g
MS4wZjsKKyAgICBtU3RhdGUuc2FtcGxlQ292ZXJhZ2VJbnZlcnQgPSBmYWxzZTsKKyAgICBtU3Rh
dGUuZ2VuZXJhdGVNaXBtYXBIaW50ID0gR0xfRE9OVF9DQVJFOworICAgIG1TdGF0ZS5mcmFnbWVu
dFNoYWRlckRlcml2YXRpdmVIaW50ID0gR0xfRE9OVF9DQVJFOworCisgICAgbVN0YXRlLmxpbmVX
aWR0aCA9IDEuMGY7CisKKyAgICBtU3RhdGUudmlld3BvcnQueCA9IDA7CisgICAgbVN0YXRlLnZp
ZXdwb3J0LnkgPSAwOworICAgIG1TdGF0ZS52aWV3cG9ydC53aWR0aCA9IDA7CisgICAgbVN0YXRl
LnZpZXdwb3J0LmhlaWdodCA9IDA7CisgICAgbVN0YXRlLnpOZWFyID0gMC4wZjsKKyAgICBtU3Rh
dGUuekZhciA9IDEuMGY7CisKKyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrUmVkID0gdHJ1ZTsK
KyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrR3JlZW4gPSB0cnVlOworICAgIG1TdGF0ZS5ibGVu
ZC5jb2xvck1hc2tCbHVlID0gdHJ1ZTsKKyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQWxwaGEg
PSB0cnVlOworCisgICAgaWYgKHNoYXJlQ29udGV4dCAhPSBOVUxMKQorICAgIHsKKyAgICAgICAg
bVJlc291cmNlTWFuYWdlciA9IHNoYXJlQ29udGV4dC0+bVJlc291cmNlTWFuYWdlcjsKKyAgICAg
ICAgbVJlc291cmNlTWFuYWdlci0+YWRkUmVmKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIG1SZXNvdXJjZU1hbmFnZXIgPSBuZXcgUmVzb3VyY2VNYW5hZ2VyKG1SZW5kZXJlcik7
CisgICAgfQorCisgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMy43IHBhZ2UgODM6
CisgICAgLy8gSW4gdGhlIGluaXRpYWwgc3RhdGUsIFRFWFRVUkVfMkQgYW5kIFRFWFRVUkVfQ1VC
RV9NQVAgaGF2ZSB0d29kaW1lbnNpb25hbAorICAgIC8vIGFuZCBjdWJlIG1hcCB0ZXh0dXJlIHN0
YXRlIHZlY3RvcnMgcmVzcGVjdGl2ZWx5IGFzc29jaWF0ZWQgd2l0aCB0aGVtLgorICAgIC8vIElu
IG9yZGVyIHRoYXQgYWNjZXNzIHRvIHRoZXNlIGluaXRpYWwgdGV4dHVyZXMgbm90IGJlIGxvc3Qs
IHRoZXkgYXJlIHRyZWF0ZWQgYXMgdGV4dHVyZQorICAgIC8vIG9iamVjdHMgYWxsIG9mIHdob3Nl
IG5hbWVzIGFyZSAwLgorCisgICAgbVRleHR1cmUyRFplcm8uc2V0KG5ldyBUZXh0dXJlMkQobVJl
bmRlcmVyLCAwKSk7CisgICAgbVRleHR1cmVDdWJlTWFwWmVyby5zZXQobmV3IFRleHR1cmVDdWJl
TWFwKG1SZW5kZXJlciwgMCkpOworCisgICAgbVN0YXRlLmFjdGl2ZVNhbXBsZXIgPSAwOworICAg
IGJpbmRBcnJheUJ1ZmZlcigwKTsKKyAgICBiaW5kRWxlbWVudEFycmF5QnVmZmVyKDApOworICAg
IGJpbmRUZXh0dXJlQ3ViZU1hcCgwKTsKKyAgICBiaW5kVGV4dHVyZTJEKDApOworICAgIGJpbmRS
ZWFkRnJhbWVidWZmZXIoMCk7CisgICAgYmluZERyYXdGcmFtZWJ1ZmZlcigwKTsKKyAgICBiaW5k
UmVuZGVyYnVmZmVyKDApOworCisgICAgbVN0YXRlLmN1cnJlbnRQcm9ncmFtID0gMDsKKyAgICBt
Q3VycmVudFByb2dyYW1CaW5hcnkuc2V0KE5VTEwpOworCisgICAgbVN0YXRlLnBhY2tBbGlnbm1l
bnQgPSA0OworICAgIG1TdGF0ZS51bnBhY2tBbGlnbm1lbnQgPSA0OworICAgIG1TdGF0ZS5wYWNr
UmV2ZXJzZVJvd09yZGVyID0gZmFsc2U7CisKKyAgICBtRXh0ZW5zaW9uU3RyaW5nID0gTlVMTDsK
KyAgICBtUmVuZGVyZXJTdHJpbmcgPSBOVUxMOworCisgICAgbUludmFsaWRFbnVtID0gZmFsc2U7
CisgICAgbUludmFsaWRWYWx1ZSA9IGZhbHNlOworICAgIG1JbnZhbGlkT3BlcmF0aW9uID0gZmFs
c2U7CisgICAgbU91dE9mTWVtb3J5ID0gZmFsc2U7CisgICAgbUludmFsaWRGcmFtZWJ1ZmZlck9w
ZXJhdGlvbiA9IGZhbHNlOworCisgICAgbUhhc0JlZW5DdXJyZW50ID0gZmFsc2U7CisgICAgbUNv
bnRleHRMb3N0ID0gZmFsc2U7CisgICAgbVJlc2V0U3RhdHVzID0gR0xfTk9fRVJST1I7CisgICAg
bVJlc2V0U3RyYXRlZ3kgPSAobm90aWZ5UmVzZXRzID8gR0xfTE9TRV9DT05URVhUX09OX1JFU0VU
X0VYVCA6IEdMX05PX1JFU0VUX05PVElGSUNBVElPTl9FWFQpOworICAgIG1Sb2J1c3RBY2Nlc3Mg
PSByb2J1c3RBY2Nlc3M7CisKKyAgICBtU3VwcG9ydHNCR1JBVGV4dHVyZXMgPSBmYWxzZTsKKyAg
ICBtU3VwcG9ydHNEWFQxVGV4dHVyZXMgPSBmYWxzZTsKKyAgICBtU3VwcG9ydHNEWFQzVGV4dHVy
ZXMgPSBmYWxzZTsKKyAgICBtU3VwcG9ydHNEWFQ1VGV4dHVyZXMgPSBmYWxzZTsKKyAgICBtU3Vw
cG9ydHNFdmVudFF1ZXJpZXMgPSBmYWxzZTsKKyAgICBtU3VwcG9ydHNPY2NsdXNpb25RdWVyaWVz
ID0gZmFsc2U7CisgICAgbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cyA9IDA7Cit9CisKK0Nv
bnRleHQ6On5Db250ZXh0KCkKK3sKKyAgICBpZiAobVN0YXRlLmN1cnJlbnRQcm9ncmFtICE9IDAp
CisgICAgeworICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gbVJlc291cmNlTWFuYWdl
ci0+Z2V0UHJvZ3JhbShtU3RhdGUuY3VycmVudFByb2dyYW0pOworICAgICAgICBpZiAocHJvZ3Jh
bU9iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgcHJvZ3JhbU9iamVjdC0+cmVsZWFzZSgp
OworICAgICAgICB9CisgICAgICAgIG1TdGF0ZS5jdXJyZW50UHJvZ3JhbSA9IDA7CisgICAgfQor
ICAgIG1DdXJyZW50UHJvZ3JhbUJpbmFyeS5zZXQoTlVMTCk7CisKKyAgICB3aGlsZSAoIW1GcmFt
ZWJ1ZmZlck1hcC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlRnJhbWVidWZmZXIobUZy
YW1lYnVmZmVyTWFwLmJlZ2luKCktPmZpcnN0KTsKKyAgICB9CisKKyAgICB3aGlsZSAoIW1GZW5j
ZU1hcC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlRmVuY2UobUZlbmNlTWFwLmJlZ2lu
KCktPmZpcnN0KTsKKyAgICB9CisKKyAgICB3aGlsZSAoIW1RdWVyeU1hcC5lbXB0eSgpKQorICAg
IHsKKyAgICAgICAgZGVsZXRlUXVlcnkobVF1ZXJ5TWFwLmJlZ2luKCktPmZpcnN0KTsKKyAgICB9
CisKKyAgICBmb3IgKGludCB0eXBlID0gMDsgdHlwZSA8IFRFWFRVUkVfVFlQRV9DT1VOVDsgdHlw
ZSsrKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgc2FtcGxlciA9IDA7IHNhbXBsZXIgPCBJTVBM
RU1FTlRBVElPTl9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUzsgc2FtcGxlcisrKQor
ICAgICAgICB7CisgICAgICAgICAgICBtU3RhdGUuc2FtcGxlclRleHR1cmVbdHlwZV1bc2FtcGxl
cl0uc2V0KE5VTEwpOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChpbnQgdHlwZSA9IDA7
IHR5cGUgPCBURVhUVVJFX1RZUEVfQ09VTlQ7IHR5cGUrKykKKyAgICB7CisgICAgICAgIG1JbmNv
bXBsZXRlVGV4dHVyZXNbdHlwZV0uc2V0KE5VTEwpOworICAgIH0KKworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBtU3RhdGUu
dmVydGV4QXR0cmlidXRlW2ldLm1Cb3VuZEJ1ZmZlci5zZXQoTlVMTCk7CisgICAgfQorCisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBRVUVSWV9UWVBFX0NPVU5UOyBpKyspCisgICAgeworICAgICAg
ICBtU3RhdGUuYWN0aXZlUXVlcnlbaV0uc2V0KE5VTEwpOworICAgIH0KKworICAgIG1TdGF0ZS5h
cnJheUJ1ZmZlci5zZXQoTlVMTCk7CisgICAgbVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZlci5zZXQo
TlVMTCk7CisgICAgbVN0YXRlLnJlbmRlcmJ1ZmZlci5zZXQoTlVMTCk7CisKKyAgICBtVGV4dHVy
ZTJEWmVyby5zZXQoTlVMTCk7CisgICAgbVRleHR1cmVDdWJlTWFwWmVyby5zZXQoTlVMTCk7CisK
KyAgICBtUmVzb3VyY2VNYW5hZ2VyLT5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6bWFr
ZUN1cnJlbnQoZWdsOjpTdXJmYWNlICpzdXJmYWNlKQoreworICAgIGlmICghbUhhc0JlZW5DdXJy
ZW50KQorICAgIHsKKyAgICAgICAgbU1ham9yU2hhZGVyTW9kZWwgPSBtUmVuZGVyZXItPmdldE1h
am9yU2hhZGVyTW9kZWwoKTsKKyAgICAgICAgbU1heGltdW1Qb2ludFNpemUgPSBtUmVuZGVyZXIt
PmdldE1heFBvaW50U2l6ZSgpOworICAgICAgICBtU3VwcG9ydHNWZXJ0ZXhUZXh0dXJlID0gbVJl
bmRlcmVyLT5nZXRWZXJ0ZXhUZXh0dXJlU3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNOb25Q
b3dlcjJUZXh0dXJlID0gbVJlbmRlcmVyLT5nZXROb25Qb3dlcjJUZXh0dXJlU3VwcG9ydCgpOwor
ICAgICAgICBtU3VwcG9ydHNJbnN0YW5jaW5nID0gbVJlbmRlcmVyLT5nZXRJbnN0YW5jaW5nU3Vw
cG9ydCgpOworCisgICAgICAgIG1NYXhWaWV3cG9ydERpbWVuc2lvbiA9IG1SZW5kZXJlci0+Z2V0
TWF4Vmlld3BvcnREaW1lbnNpb24oKTsKKyAgICAgICAgbU1heFRleHR1cmVEaW1lbnNpb24gPSBz
dGQ6Om1pbihzdGQ6Om1pbihtUmVuZGVyZXItPmdldE1heFRleHR1cmVXaWR0aCgpLCBtUmVuZGVy
ZXItPmdldE1heFRleHR1cmVIZWlnaHQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGludClnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfU0laRSk7Cisg
ICAgICAgIG1NYXhDdWJlVGV4dHVyZURpbWVuc2lvbiA9IHN0ZDo6bWluKG1NYXhUZXh0dXJlRGlt
ZW5zaW9uLCAoaW50KWdsOjpJTVBMRU1FTlRBVElPTl9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpF
KTsKKyAgICAgICAgbU1heFJlbmRlcmJ1ZmZlckRpbWVuc2lvbiA9IG1NYXhUZXh0dXJlRGltZW5z
aW9uOworICAgICAgICBtTWF4VGV4dHVyZUxldmVsID0gbG9nMihtTWF4VGV4dHVyZURpbWVuc2lv
bikgKyAxOworICAgICAgICBtTWF4VGV4dHVyZUFuaXNvdHJvcHkgPSBtUmVuZGVyZXItPmdldFRl
eHR1cmVNYXhBbmlzb3Ryb3B5KCk7CisgICAgICAgIFRSQUNFKCJNYXhUZXh0dXJlRGltZW5zaW9u
PSVkLCBNYXhDdWJlVGV4dHVyZURpbWVuc2lvbj0lZCwgTWF4UmVuZGVyYnVmZmVyRGltZW5zaW9u
PSVkLCBNYXhUZXh0dXJlTGV2ZWw9JWQsIE1heFRleHR1cmVBbmlzb3Ryb3B5PSVmIiwKKyAgICAg
ICAgICAgICAgbU1heFRleHR1cmVEaW1lbnNpb24sIG1NYXhDdWJlVGV4dHVyZURpbWVuc2lvbiwg
bU1heFJlbmRlcmJ1ZmZlckRpbWVuc2lvbiwgbU1heFRleHR1cmVMZXZlbCwgbU1heFRleHR1cmVB
bmlzb3Ryb3B5KTsKKworICAgICAgICBtU3VwcG9ydHNFdmVudFF1ZXJpZXMgPSBtUmVuZGVyZXIt
PmdldEV2ZW50UXVlcnlTdXBwb3J0KCk7CisgICAgICAgIG1TdXBwb3J0c09jY2x1c2lvblF1ZXJp
ZXMgPSBtUmVuZGVyZXItPmdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydCgpOworICAgICAgICBtU3Vw
cG9ydHNCR1JBVGV4dHVyZXMgPSBtUmVuZGVyZXItPmdldEJHUkFUZXh0dXJlU3VwcG9ydCgpOwor
ICAgICAgICBtU3VwcG9ydHNEWFQxVGV4dHVyZXMgPSBtUmVuZGVyZXItPmdldERYVDFUZXh0dXJl
U3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNEWFQzVGV4dHVyZXMgPSBtUmVuZGVyZXItPmdl
dERYVDNUZXh0dXJlU3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNEWFQ1VGV4dHVyZXMgPSBt
UmVuZGVyZXItPmdldERYVDVUZXh0dXJlU3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNGbG9h
dDMyVGV4dHVyZXMgPSBtUmVuZGVyZXItPmdldEZsb2F0MzJUZXh0dXJlU3VwcG9ydCgmbVN1cHBv
cnRzRmxvYXQzMkxpbmVhckZpbHRlciwgJm1TdXBwb3J0c0Zsb2F0MzJSZW5kZXJhYmxlVGV4dHVy
ZXMpOworICAgICAgICBtU3VwcG9ydHNGbG9hdDE2VGV4dHVyZXMgPSBtUmVuZGVyZXItPmdldEZs
b2F0MTZUZXh0dXJlU3VwcG9ydCgmbVN1cHBvcnRzRmxvYXQxNkxpbmVhckZpbHRlciwgJm1TdXBw
b3J0c0Zsb2F0MTZSZW5kZXJhYmxlVGV4dHVyZXMpOworICAgICAgICBtU3VwcG9ydHNMdW1pbmFu
Y2VUZXh0dXJlcyA9IG1SZW5kZXJlci0+Z2V0THVtaW5hbmNlVGV4dHVyZVN1cHBvcnQoKTsKKyAg
ICAgICAgbVN1cHBvcnRzTHVtaW5hbmNlQWxwaGFUZXh0dXJlcyA9IG1SZW5kZXJlci0+Z2V0THVt
aW5hbmNlQWxwaGFUZXh0dXJlU3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNEZXB0aFRleHR1
cmVzID0gbVJlbmRlcmVyLT5nZXREZXB0aFRleHR1cmVTdXBwb3J0KCk7CisgICAgICAgIG1TdXBw
b3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5ID0gbVJlbmRlcmVyLT5nZXRUZXh0dXJlRmlsdGVy
QW5pc290cm9weVN1cHBvcnQoKTsKKyAgICAgICAgbVN1cHBvcnRzMzJiaXRJbmRpY2VzID0gbVJl
bmRlcmVyLT5nZXQzMkJpdEluZGV4U3VwcG9ydCgpOworCisgICAgICAgIG1OdW1Db21wcmVzc2Vk
VGV4dHVyZUZvcm1hdHMgPSAwOworICAgICAgICBpZiAoc3VwcG9ydHNEWFQxVGV4dHVyZXMoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cyArPSAy
OworICAgICAgICB9CisgICAgICAgIGlmIChzdXBwb3J0c0RYVDNUZXh0dXJlcygpKQorICAgICAg
ICB7CisgICAgICAgICAgICBtTnVtQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRzICs9IDE7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1OdW1Db21wcmVzc2VkVGV4dHVyZUZvcm1hdHMgKz0gMTsKKyAgICAgICAgfQor
CisgICAgICAgIGluaXRFeHRlbnNpb25TdHJpbmcoKTsKKyAgICAgICAgaW5pdFJlbmRlcmVyU3Ry
aW5nKCk7CisKKyAgICAgICAgbVN0YXRlLnZpZXdwb3J0LnggPSAwOworICAgICAgICBtU3RhdGUu
dmlld3BvcnQueSA9IDA7CisgICAgICAgIG1TdGF0ZS52aWV3cG9ydC53aWR0aCA9IHN1cmZhY2Ut
PmdldFdpZHRoKCk7CisgICAgICAgIG1TdGF0ZS52aWV3cG9ydC5oZWlnaHQgPSBzdXJmYWNlLT5n
ZXRIZWlnaHQoKTsKKworICAgICAgICBtU3RhdGUuc2Npc3Nvci54ID0gMDsKKyAgICAgICAgbVN0
YXRlLnNjaXNzb3IueSA9IDA7CisgICAgICAgIG1TdGF0ZS5zY2lzc29yLndpZHRoID0gc3VyZmFj
ZS0+Z2V0V2lkdGgoKTsKKyAgICAgICAgbVN0YXRlLnNjaXNzb3IuaGVpZ2h0ID0gc3VyZmFjZS0+
Z2V0SGVpZ2h0KCk7CisKKyAgICAgICAgbUhhc0JlZW5DdXJyZW50ID0gdHJ1ZTsKKyAgICB9CisK
KyAgICAvLyBXcmFwIHRoZSBleGlzdGluZyBzd2FwY2hhaW4gcmVzb3VyY2VzIGludG8gR0wgb2Jq
ZWN0cyBhbmQgYXNzaWduIHRoZW0gdG8gdGhlICcwJyBuYW1lcworICAgIHJ4OjpTd2FwQ2hhaW4g
KnN3YXBjaGFpbiA9IHN1cmZhY2UtPmdldFN3YXBDaGFpbigpOworCisgICAgQ29sb3JidWZmZXIg
KmNvbG9yYnVmZmVyWmVybyA9IG5ldyBDb2xvcmJ1ZmZlcihtUmVuZGVyZXIsIHN3YXBjaGFpbik7
CisgICAgRGVwdGhTdGVuY2lsYnVmZmVyICpkZXB0aFN0ZW5jaWxidWZmZXJaZXJvID0gbmV3IERl
cHRoU3RlbmNpbGJ1ZmZlcihtUmVuZGVyZXIsIHN3YXBjaGFpbik7CisgICAgRnJhbWVidWZmZXIg
KmZyYW1lYnVmZmVyWmVybyA9IG5ldyBEZWZhdWx0RnJhbWVidWZmZXIobVJlbmRlcmVyLCBjb2xv
cmJ1ZmZlclplcm8sIGRlcHRoU3RlbmNpbGJ1ZmZlclplcm8pOworCisgICAgc2V0RnJhbWVidWZm
ZXJaZXJvKGZyYW1lYnVmZmVyWmVybyk7Cit9CisKKy8vIE5PVEU6IHRoaXMgZnVuY3Rpb24gc2hv
dWxkIG5vdCBhc3N1bWUgdGhhdCB0aGlzIGNvbnRleHQgaXMgY3VycmVudCEKK3ZvaWQgQ29udGV4
dDo6bWFya0NvbnRleHRMb3N0KCkKK3sKKyAgICBpZiAobVJlc2V0U3RyYXRlZ3kgPT0gR0xfTE9T
RV9DT05URVhUX09OX1JFU0VUX0VYVCkKKyAgICAgICAgbVJlc2V0U3RhdHVzID0gR0xfVU5LTk9X
Tl9DT05URVhUX1JFU0VUX0VYVDsKKyAgICBtQ29udGV4dExvc3QgPSB0cnVlOworfQorCitib29s
IENvbnRleHQ6OmlzQ29udGV4dExvc3QoKQoreworICAgIHJldHVybiBtQ29udGV4dExvc3Q7Cit9
CisKK3ZvaWQgQ29udGV4dDo6c2V0Q2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBm
bG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKK3sKKyAgICBtU3RhdGUuY29sb3JDbGVhclZhbHVlLnJl
ZCA9IHJlZDsKKyAgICBtU3RhdGUuY29sb3JDbGVhclZhbHVlLmdyZWVuID0gZ3JlZW47CisgICAg
bVN0YXRlLmNvbG9yQ2xlYXJWYWx1ZS5ibHVlID0gYmx1ZTsKKyAgICBtU3RhdGUuY29sb3JDbGVh
clZhbHVlLmFscGhhID0gYWxwaGE7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0Q2xlYXJEZXB0aChm
bG9hdCBkZXB0aCkKK3sKKyAgICBtU3RhdGUuZGVwdGhDbGVhclZhbHVlID0gZGVwdGg7Cit9CisK
K3ZvaWQgQ29udGV4dDo6c2V0Q2xlYXJTdGVuY2lsKGludCBzdGVuY2lsKQoreworICAgIG1TdGF0
ZS5zdGVuY2lsQ2xlYXJWYWx1ZSA9IHN0ZW5jaWw7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0Q3Vs
bEZhY2UoYm9vbCBlbmFibGVkKQoreworICAgIG1TdGF0ZS5yYXN0ZXJpemVyLmN1bGxGYWNlID0g
ZW5hYmxlZDsKK30KKworYm9vbCBDb250ZXh0Ojppc0N1bGxGYWNlRW5hYmxlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1TdGF0ZS5yYXN0ZXJpemVyLmN1bGxGYWNlOworfQorCit2b2lkIENvbnRl
eHQ6OnNldEN1bGxNb2RlKEdMZW51bSBtb2RlKQoreworICAgIG1TdGF0ZS5yYXN0ZXJpemVyLmN1
bGxNb2RlID0gbW9kZTsKK30KKwordm9pZCBDb250ZXh0OjpzZXRGcm9udEZhY2UoR0xlbnVtIGZy
b250KQoreworICAgIG1TdGF0ZS5yYXN0ZXJpemVyLmZyb250RmFjZSA9IGZyb250OworfQorCit2
b2lkIENvbnRleHQ6OnNldERlcHRoVGVzdChib29sIGVuYWJsZWQpCit7CisgICAgbVN0YXRlLmRl
cHRoU3RlbmNpbC5kZXB0aFRlc3QgPSBlbmFibGVkOworfQorCitib29sIENvbnRleHQ6OmlzRGVw
dGhUZXN0RW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5kZXB0aFN0ZW5jaWwu
ZGVwdGhUZXN0OworfQorCit2b2lkIENvbnRleHQ6OnNldERlcHRoRnVuYyhHTGVudW0gZGVwdGhG
dW5jKQoreworICAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLmRlcHRoRnVuYyA9IGRlcHRoRnVuYzsK
K30KKwordm9pZCBDb250ZXh0OjpzZXREZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFy
KQoreworICAgIG1TdGF0ZS56TmVhciA9IHpOZWFyOworICAgIG1TdGF0ZS56RmFyID0gekZhcjsK
K30KKwordm9pZCBDb250ZXh0OjpzZXRCbGVuZChib29sIGVuYWJsZWQpCit7CisgICAgbVN0YXRl
LmJsZW5kLmJsZW5kID0gZW5hYmxlZDsKK30KKworYm9vbCBDb250ZXh0Ojppc0JsZW5kRW5hYmxl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5ibGVuZC5ibGVuZDsKK30KKwordm9pZCBD
b250ZXh0OjpzZXRCbGVuZEZhY3RvcnMoR0xlbnVtIHNvdXJjZVJHQiwgR0xlbnVtIGRlc3RSR0Is
IEdMZW51bSBzb3VyY2VBbHBoYSwgR0xlbnVtIGRlc3RBbHBoYSkKK3sKKyAgICBtU3RhdGUuYmxl
bmQuc291cmNlQmxlbmRSR0IgPSBzb3VyY2VSR0I7CisgICAgbVN0YXRlLmJsZW5kLmRlc3RCbGVu
ZFJHQiA9IGRlc3RSR0I7CisgICAgbVN0YXRlLmJsZW5kLnNvdXJjZUJsZW5kQWxwaGEgPSBzb3Vy
Y2VBbHBoYTsKKyAgICBtU3RhdGUuYmxlbmQuZGVzdEJsZW5kQWxwaGEgPSBkZXN0QWxwaGE7Cit9
CisKK3ZvaWQgQ29udGV4dDo6c2V0QmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBm
bG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKK3sKKyAgICBtU3RhdGUuYmxlbmRDb2xvci5yZWQgPSBy
ZWQ7CisgICAgbVN0YXRlLmJsZW5kQ29sb3IuZ3JlZW4gPSBncmVlbjsKKyAgICBtU3RhdGUuYmxl
bmRDb2xvci5ibHVlID0gYmx1ZTsKKyAgICBtU3RhdGUuYmxlbmRDb2xvci5hbHBoYSA9IGFscGhh
OworfQorCit2b2lkIENvbnRleHQ6OnNldEJsZW5kRXF1YXRpb24oR0xlbnVtIHJnYkVxdWF0aW9u
LCBHTGVudW0gYWxwaGFFcXVhdGlvbikKK3sKKyAgICBtU3RhdGUuYmxlbmQuYmxlbmRFcXVhdGlv
blJHQiA9IHJnYkVxdWF0aW9uOworICAgIG1TdGF0ZS5ibGVuZC5ibGVuZEVxdWF0aW9uQWxwaGEg
PSBhbHBoYUVxdWF0aW9uOworfQorCit2b2lkIENvbnRleHQ6OnNldFN0ZW5jaWxUZXN0KGJvb2wg
ZW5hYmxlZCkKK3sKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxUZXN0ID0gZW5hYmxl
ZDsKK30KKworYm9vbCBDb250ZXh0Ojppc1N0ZW5jaWxUZXN0RW5hYmxlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbFRlc3Q7Cit9CisKK3ZvaWQgQ29u
dGV4dDo6c2V0U3RlbmNpbFBhcmFtcyhHTGVudW0gc3RlbmNpbEZ1bmMsIEdMaW50IHN0ZW5jaWxS
ZWYsIEdMdWludCBzdGVuY2lsTWFzaykKK3sKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5j
aWxGdW5jID0gc3RlbmNpbEZ1bmM7CisgICAgbVN0YXRlLnN0ZW5jaWxSZWYgPSAoc3RlbmNpbFJl
ZiA+IDApID8gc3RlbmNpbFJlZiA6IDA7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2ls
TWFzayA9IHN0ZW5jaWxNYXNrOworfQorCit2b2lkIENvbnRleHQ6OnNldFN0ZW5jaWxCYWNrUGFy
YW1zKEdMZW51bSBzdGVuY2lsQmFja0Z1bmMsIEdMaW50IHN0ZW5jaWxCYWNrUmVmLCBHTHVpbnQg
c3RlbmNpbEJhY2tNYXNrKQoreworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tG
dW5jID0gc3RlbmNpbEJhY2tGdW5jOworICAgIG1TdGF0ZS5zdGVuY2lsQmFja1JlZiA9IChzdGVu
Y2lsQmFja1JlZiA+IDApID8gc3RlbmNpbEJhY2tSZWYgOiAwOworICAgIG1TdGF0ZS5kZXB0aFN0
ZW5jaWwuc3RlbmNpbEJhY2tNYXNrID0gc3RlbmNpbEJhY2tNYXNrOworfQorCit2b2lkIENvbnRl
eHQ6OnNldFN0ZW5jaWxXcml0ZW1hc2soR0x1aW50IHN0ZW5jaWxXcml0ZW1hc2spCit7CisgICAg
bVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsV3JpdGVtYXNrID0gc3RlbmNpbFdyaXRlbWFzazsK
K30KKwordm9pZCBDb250ZXh0OjpzZXRTdGVuY2lsQmFja1dyaXRlbWFzayhHTHVpbnQgc3RlbmNp
bEJhY2tXcml0ZW1hc2spCit7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsQmFja1dy
aXRlbWFzayA9IHN0ZW5jaWxCYWNrV3JpdGVtYXNrOworfQorCit2b2lkIENvbnRleHQ6OnNldFN0
ZW5jaWxPcGVyYXRpb25zKEdMZW51bSBzdGVuY2lsRmFpbCwgR0xlbnVtIHN0ZW5jaWxQYXNzRGVw
dGhGYWlsLCBHTGVudW0gc3RlbmNpbFBhc3NEZXB0aFBhc3MpCit7CisgICAgbVN0YXRlLmRlcHRo
U3RlbmNpbC5zdGVuY2lsRmFpbCA9IHN0ZW5jaWxGYWlsOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5j
aWwuc3RlbmNpbFBhc3NEZXB0aEZhaWwgPSBzdGVuY2lsUGFzc0RlcHRoRmFpbDsKKyAgICBtU3Rh
dGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxQYXNzRGVwdGhQYXNzID0gc3RlbmNpbFBhc3NEZXB0aFBh
c3M7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0U3RlbmNpbEJhY2tPcGVyYXRpb25zKEdMZW51bSBz
dGVuY2lsQmFja0ZhaWwsIEdMZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwsIEdMZW51bSBz
dGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MpCit7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVu
Y2lsQmFja0ZhaWwgPSBzdGVuY2lsQmFja0ZhaWw7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5z
dGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwgPSBzdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWw7CisgICAg
bVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MgPSBzdGVuY2lsQmFj
a1Bhc3NEZXB0aFBhc3M7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0UG9seWdvbk9mZnNldEZpbGwo
Ym9vbCBlbmFibGVkKQoreworICAgICBtU3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0Rmls
bCA9IGVuYWJsZWQ7Cit9CisKK2Jvb2wgQ29udGV4dDo6aXNQb2x5Z29uT2Zmc2V0RmlsbEVuYWJs
ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtU3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0
RmlsbDsKK30KKwordm9pZCBDb250ZXh0OjpzZXRQb2x5Z29uT2Zmc2V0UGFyYW1zKEdMZmxvYXQg
ZmFjdG9yLCBHTGZsb2F0IHVuaXRzKQoreworICAgIC8vIEFuIGFwcGxpY2F0aW9uIGNhbiBwYXNz
IE5hTiB2YWx1ZXMgaGVyZSwgc28gaGFuZGxlIHRoaXMgZ3JhY2VmdWxseQorICAgIG1TdGF0ZS5y
YXN0ZXJpemVyLnBvbHlnb25PZmZzZXRGYWN0b3IgPSBmYWN0b3IgIT0gZmFjdG9yID8gMC4wZiA6
IGZhY3RvcjsKKyAgICBtU3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0VW5pdHMgPSB1bml0
cyAhPSB1bml0cyA/IDAuMGYgOiB1bml0czsKK30KKwordm9pZCBDb250ZXh0OjpzZXRTYW1wbGVB
bHBoYVRvQ292ZXJhZ2UoYm9vbCBlbmFibGVkKQoreworICAgIG1TdGF0ZS5ibGVuZC5zYW1wbGVB
bHBoYVRvQ292ZXJhZ2UgPSBlbmFibGVkOworfQorCitib29sIENvbnRleHQ6OmlzU2FtcGxlQWxw
aGFUb0NvdmVyYWdlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5ibGVuZC5z
YW1wbGVBbHBoYVRvQ292ZXJhZ2U7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0U2FtcGxlQ292ZXJh
Z2UoYm9vbCBlbmFibGVkKQoreworICAgIG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZSA9IGVuYWJsZWQ7
Cit9CisKK2Jvb2wgQ29udGV4dDo6aXNTYW1wbGVDb3ZlcmFnZUVuYWJsZWQoKSBjb25zdAorewor
ICAgIHJldHVybiBtU3RhdGUuc2FtcGxlQ292ZXJhZ2U7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0
U2FtcGxlQ292ZXJhZ2VQYXJhbXMoR0xjbGFtcGYgdmFsdWUsIGJvb2wgaW52ZXJ0KQoreworICAg
IG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZVZhbHVlID0gdmFsdWU7CisgICAgbVN0YXRlLnNhbXBsZUNv
dmVyYWdlSW52ZXJ0ID0gaW52ZXJ0OworfQorCit2b2lkIENvbnRleHQ6OnNldFNjaXNzb3JUZXN0
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtU3RhdGUuc2Npc3NvclRlc3QgPSBlbmFibGVkOworfQor
Citib29sIENvbnRleHQ6OmlzU2Npc3NvclRlc3RFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVN0YXRlLnNjaXNzb3JUZXN0OworfQorCit2b2lkIENvbnRleHQ6OnNldERpdGhlcihib29s
IGVuYWJsZWQpCit7CisgICAgbVN0YXRlLmJsZW5kLmRpdGhlciA9IGVuYWJsZWQ7Cit9CisKK2Jv
b2wgQ29udGV4dDo6aXNEaXRoZXJFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRl
LmJsZW5kLmRpdGhlcjsKK30KKwordm9pZCBDb250ZXh0OjpzZXRMaW5lV2lkdGgoR0xmbG9hdCB3
aWR0aCkKK3sKKyAgICBtU3RhdGUubGluZVdpZHRoID0gd2lkdGg7Cit9CisKK3ZvaWQgQ29udGV4
dDo6c2V0R2VuZXJhdGVNaXBtYXBIaW50KEdMZW51bSBoaW50KQoreworICAgIG1TdGF0ZS5nZW5l
cmF0ZU1pcG1hcEhpbnQgPSBoaW50OworfQorCit2b2lkIENvbnRleHQ6OnNldEZyYWdtZW50U2hh
ZGVyRGVyaXZhdGl2ZUhpbnQoR0xlbnVtIGhpbnQpCit7CisgICAgbVN0YXRlLmZyYWdtZW50U2hh
ZGVyRGVyaXZhdGl2ZUhpbnQgPSBoaW50OworICAgIC8vIFRPRE86IFByb3BhZ2F0ZSB0aGUgaGlu
dCB0byBzaGFkZXIgdHJhbnNsYXRvciBzbyB3ZSBjYW4gd3JpdGUKKyAgICAvLyBkZHgsIGRkeF9j
b2Fyc2UsIG9yIGRkeF9maW5lIGRlcGVuZGluZyBvbiB0aGUgaGludC4KKyAgICAvLyBJZ25vcmUg
Zm9yIG5vdy4gSXQgaXMgdmFsaWQgZm9yIGltcGxlbWVudGF0aW9ucyB0byBpZ25vcmUgaGludC4K
K30KKwordm9pZCBDb250ZXh0OjpzZXRWaWV3cG9ydFBhcmFtcyhHTGludCB4LCBHTGludCB5LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBtU3RhdGUudmlld3BvcnQueCA9
IHg7CisgICAgbVN0YXRlLnZpZXdwb3J0LnkgPSB5OworICAgIG1TdGF0ZS52aWV3cG9ydC53aWR0
aCA9IHdpZHRoOworICAgIG1TdGF0ZS52aWV3cG9ydC5oZWlnaHQgPSBoZWlnaHQ7Cit9CisKK3Zv
aWQgQ29udGV4dDo6c2V0U2Npc3NvclBhcmFtcyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBtU3RhdGUuc2Npc3Nvci54ID0geDsKKyAgICBt
U3RhdGUuc2Npc3Nvci55ID0geTsKKyAgICBtU3RhdGUuc2Npc3Nvci53aWR0aCA9IHdpZHRoOwor
ICAgIG1TdGF0ZS5zY2lzc29yLmhlaWdodCA9IGhlaWdodDsKK30KKwordm9pZCBDb250ZXh0Ojpz
ZXRDb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSkK
K3sKKyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrUmVkID0gcmVkOworICAgIG1TdGF0ZS5ibGVu
ZC5jb2xvck1hc2tHcmVlbiA9IGdyZWVuOworICAgIG1TdGF0ZS5ibGVuZC5jb2xvck1hc2tCbHVl
ID0gYmx1ZTsKKyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQWxwaGEgPSBhbHBoYTsKK30KKwor
dm9pZCBDb250ZXh0OjpzZXREZXB0aE1hc2soYm9vbCBtYXNrKQoreworICAgIG1TdGF0ZS5kZXB0
aFN0ZW5jaWwuZGVwdGhNYXNrID0gbWFzazsKK30KKwordm9pZCBDb250ZXh0OjpzZXRBY3RpdmVT
YW1wbGVyKHVuc2lnbmVkIGludCBhY3RpdmUpCit7CisgICAgbVN0YXRlLmFjdGl2ZVNhbXBsZXIg
PSBhY3RpdmU7Cit9CisKK0dMdWludCBDb250ZXh0OjpnZXRSZWFkRnJhbWVidWZmZXJIYW5kbGUo
KSBjb25zdAoreworICAgIHJldHVybiBtU3RhdGUucmVhZEZyYW1lYnVmZmVyOworfQorCitHTHVp
bnQgQ29udGV4dDo6Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVN0YXRlLmRyYXdGcmFtZWJ1ZmZlcjsKK30KKworR0x1aW50IENvbnRleHQ6OmdldFJlbmRl
cmJ1ZmZlckhhbmRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5yZW5kZXJidWZmZXIu
aWQoKTsKK30KKworR0x1aW50IENvbnRleHQ6OmdldEFycmF5QnVmZmVySGFuZGxlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVN0YXRlLmFycmF5QnVmZmVyLmlkKCk7Cit9CisKK0dMdWludCBDb250
ZXh0OjpnZXRBY3RpdmVRdWVyeShHTGVudW0gdGFyZ2V0KSBjb25zdAoreworICAgIFF1ZXJ5ICpx
dWVyeU9iamVjdCA9IE5VTEw7CisgICAgCisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgeworICAg
ICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhUOgorICAgICAgICBxdWVyeU9iamVjdCA9
IG1TdGF0ZS5hY3RpdmVRdWVyeVtRVUVSWV9BTllfU0FNUExFU19QQVNTRURdLmdldCgpOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElW
RV9FWFQ6CisgICAgICAgIHF1ZXJ5T2JqZWN0ID0gbVN0YXRlLmFjdGl2ZVF1ZXJ5W1FVRVJZX0FO
WV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVdLmdldCgpOworICAgICAgICBicmVhazsKKyAg
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVChmYWxzZSk7CisgICAgfQorCisgICAgaWYgKHF1
ZXJ5T2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHF1ZXJ5T2JqZWN0LT5pZCgpOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3ZvaWQg
Q29udGV4dDo6c2V0RW5hYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgaW50IGF0dHJpYk51
bSwgYm9vbCBlbmFibGVkKQoreworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmliTnVt
XS5tQXJyYXlFbmFibGVkID0gZW5hYmxlZDsKK30KKworY29uc3QgVmVydGV4QXR0cmlidXRlICZD
b250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJTdGF0ZSh1bnNpZ25lZCBpbnQgYXR0cmliTnVtKQorewor
ICAgIHJldHVybiBtU3RhdGUudmVydGV4QXR0cmlidXRlW2F0dHJpYk51bV07Cit9CisKK3ZvaWQg
Q29udGV4dDo6c2V0VmVydGV4QXR0cmliU3RhdGUodW5zaWduZWQgaW50IGF0dHJpYk51bSwgQnVm
ZmVyICpib3VuZEJ1ZmZlciwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIGJvb2wgbm9ybWFsaXpl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsIGNv
bnN0IHZvaWQgKnBvaW50ZXIpCit7CisgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVthdHRyaWJO
dW1dLm1Cb3VuZEJ1ZmZlci5zZXQoYm91bmRCdWZmZXIpOworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRy
aWJ1dGVbYXR0cmliTnVtXS5tU2l6ZSA9IHNpemU7CisgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0
ZVthdHRyaWJOdW1dLm1UeXBlID0gdHlwZTsKKyAgICBtU3RhdGUudmVydGV4QXR0cmlidXRlW2F0
dHJpYk51bV0ubU5vcm1hbGl6ZWQgPSBub3JtYWxpemVkOworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRy
aWJ1dGVbYXR0cmliTnVtXS5tU3RyaWRlID0gc3RyaWRlOworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRy
aWJ1dGVbYXR0cmliTnVtXS5tUG9pbnRlciA9IHBvaW50ZXI7Cit9CisKK2NvbnN0IHZvaWQgKkNv
bnRleHQ6OmdldFZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQgaW50IGF0dHJpYk51bSkgY29u
c3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVthdHRyaWJOdW1dLm1Qb2lu
dGVyOworfQorCit2b2lkIENvbnRleHQ6OnNldFBhY2tBbGlnbm1lbnQoR0xpbnQgYWxpZ25tZW50
KQoreworICAgIG1TdGF0ZS5wYWNrQWxpZ25tZW50ID0gYWxpZ25tZW50OworfQorCitHTGludCBD
b250ZXh0OjpnZXRQYWNrQWxpZ25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLnBh
Y2tBbGlnbm1lbnQ7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0VW5wYWNrQWxpZ25tZW50KEdMaW50
IGFsaWdubWVudCkKK3sKKyAgICBtU3RhdGUudW5wYWNrQWxpZ25tZW50ID0gYWxpZ25tZW50Owor
fQorCitHTGludCBDb250ZXh0OjpnZXRVbnBhY2tBbGlnbm1lbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBtU3RhdGUudW5wYWNrQWxpZ25tZW50OworfQorCit2b2lkIENvbnRleHQ6OnNldFBhY2tS
ZXZlcnNlUm93T3JkZXIoYm9vbCByZXZlcnNlUm93T3JkZXIpCit7CisgICAgbVN0YXRlLnBhY2tS
ZXZlcnNlUm93T3JkZXIgPSByZXZlcnNlUm93T3JkZXI7Cit9CisKK2Jvb2wgQ29udGV4dDo6Z2V0
UGFja1JldmVyc2VSb3dPcmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5wYWNrUmV2
ZXJzZVJvd09yZGVyOworfQorCitHTHVpbnQgQ29udGV4dDo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAg
ICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Y3JlYXRlQnVmZmVyKCk7Cit9CisKK0dMdWludCBD
b250ZXh0OjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+
Y3JlYXRlUHJvZ3JhbSgpOworfQorCitHTHVpbnQgQ29udGV4dDo6Y3JlYXRlU2hhZGVyKEdMZW51
bSB0eXBlKQoreworICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVTaGFkZXIodHlw
ZSk7Cit9CisKK0dMdWludCBDb250ZXh0OjpjcmVhdGVUZXh0dXJlKCkKK3sKKyAgICByZXR1cm4g
bVJlc291cmNlTWFuYWdlci0+Y3JlYXRlVGV4dHVyZSgpOworfQorCitHTHVpbnQgQ29udGV4dDo6
Y3JlYXRlUmVuZGVyYnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Y3Jl
YXRlUmVuZGVyYnVmZmVyKCk7Cit9CisKKy8vIFJldHVybnMgYW4gdW51c2VkIGZyYW1lYnVmZmVy
IG5hbWUKK0dMdWludCBDb250ZXh0OjpjcmVhdGVGcmFtZWJ1ZmZlcigpCit7CisgICAgR0x1aW50
IGhhbmRsZSA9IG1GcmFtZWJ1ZmZlckhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworCisgICAg
bUZyYW1lYnVmZmVyTWFwW2hhbmRsZV0gPSBOVUxMOworCisgICAgcmV0dXJuIGhhbmRsZTsKK30K
KworR0x1aW50IENvbnRleHQ6OmNyZWF0ZUZlbmNlKCkKK3sKKyAgICBHTHVpbnQgaGFuZGxlID0g
bUZlbmNlSGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7CisKKyAgICBtRmVuY2VNYXBbaGFuZGxl
XSA9IG5ldyBGZW5jZShtUmVuZGVyZXIpOworCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKworLy8g
UmV0dXJucyBhbiB1bnVzZWQgcXVlcnkgbmFtZQorR0x1aW50IENvbnRleHQ6OmNyZWF0ZVF1ZXJ5
KCkKK3sKKyAgICBHTHVpbnQgaGFuZGxlID0gbVF1ZXJ5SGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRl
KCk7CisKKyAgICBtUXVlcnlNYXBbaGFuZGxlXSA9IE5VTEw7CisKKyAgICByZXR1cm4gaGFuZGxl
OworfQorCit2b2lkIENvbnRleHQ6OmRlbGV0ZUJ1ZmZlcihHTHVpbnQgYnVmZmVyKQoreworICAg
IGlmIChtUmVzb3VyY2VNYW5hZ2VyLT5nZXRCdWZmZXIoYnVmZmVyKSkKKyAgICB7CisgICAgICAg
IGRldGFjaEJ1ZmZlcihidWZmZXIpOworICAgIH0KKyAgICAKKyAgICBtUmVzb3VyY2VNYW5hZ2Vy
LT5kZWxldGVCdWZmZXIoYnVmZmVyKTsKK30KKwordm9pZCBDb250ZXh0OjpkZWxldGVTaGFkZXIo
R0x1aW50IHNoYWRlcikKK3sKKyAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVTaGFkZXIoc2hh
ZGVyKTsKK30KKwordm9pZCBDb250ZXh0OjpkZWxldGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQor
eworICAgIG1SZXNvdXJjZU1hbmFnZXItPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3Zv
aWQgQ29udGV4dDo6ZGVsZXRlVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKK3sKKyAgICBpZiAobVJl
c291cmNlTWFuYWdlci0+Z2V0VGV4dHVyZSh0ZXh0dXJlKSkKKyAgICB7CisgICAgICAgIGRldGFj
aFRleHR1cmUodGV4dHVyZSk7CisgICAgfQorCisgICAgbVJlc291cmNlTWFuYWdlci0+ZGVsZXRl
VGV4dHVyZSh0ZXh0dXJlKTsKK30KKwordm9pZCBDb250ZXh0OjpkZWxldGVSZW5kZXJidWZmZXIo
R0x1aW50IHJlbmRlcmJ1ZmZlcikKK3sKKyAgICBpZiAobVJlc291cmNlTWFuYWdlci0+Z2V0UmVu
ZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcikpCisgICAgeworICAgICAgICBkZXRhY2hSZW5kZXJidWZm
ZXIocmVuZGVyYnVmZmVyKTsKKyAgICB9CisgICAgCisgICAgbVJlc291cmNlTWFuYWdlci0+ZGVs
ZXRlUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZGVsZXRl
RnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKQoreworICAgIEZyYW1lYnVmZmVyTWFwOjpp
dGVyYXRvciBmcmFtZWJ1ZmZlck9iamVjdCA9IG1GcmFtZWJ1ZmZlck1hcC5maW5kKGZyYW1lYnVm
ZmVyKTsKKworICAgIGlmIChmcmFtZWJ1ZmZlck9iamVjdCAhPSBtRnJhbWVidWZmZXJNYXAuZW5k
KCkpCisgICAgeworICAgICAgICBkZXRhY2hGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisKKyAg
ICAgICAgbUZyYW1lYnVmZmVySGFuZGxlQWxsb2NhdG9yLnJlbGVhc2UoZnJhbWVidWZmZXJPYmpl
Y3QtPmZpcnN0KTsKKyAgICAgICAgZGVsZXRlIGZyYW1lYnVmZmVyT2JqZWN0LT5zZWNvbmQ7Cisg
ICAgICAgIG1GcmFtZWJ1ZmZlck1hcC5lcmFzZShmcmFtZWJ1ZmZlck9iamVjdCk7CisgICAgfQor
fQorCit2b2lkIENvbnRleHQ6OmRlbGV0ZUZlbmNlKEdMdWludCBmZW5jZSkKK3sKKyAgICBGZW5j
ZU1hcDo6aXRlcmF0b3IgZmVuY2VPYmplY3QgPSBtRmVuY2VNYXAuZmluZChmZW5jZSk7CisKKyAg
ICBpZiAoZmVuY2VPYmplY3QgIT0gbUZlbmNlTWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgbUZl
bmNlSGFuZGxlQWxsb2NhdG9yLnJlbGVhc2UoZmVuY2VPYmplY3QtPmZpcnN0KTsKKyAgICAgICAg
ZGVsZXRlIGZlbmNlT2JqZWN0LT5zZWNvbmQ7CisgICAgICAgIG1GZW5jZU1hcC5lcmFzZShmZW5j
ZU9iamVjdCk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmRlbGV0ZVF1ZXJ5KEdMdWludCBx
dWVyeSkKK3sKKyAgICBRdWVyeU1hcDo6aXRlcmF0b3IgcXVlcnlPYmplY3QgPSBtUXVlcnlNYXAu
ZmluZChxdWVyeSk7CisgICAgaWYgKHF1ZXJ5T2JqZWN0ICE9IG1RdWVyeU1hcC5lbmQoKSkKKyAg
ICB7CisgICAgICAgIG1RdWVyeUhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKHF1ZXJ5T2JqZWN0LT5m
aXJzdCk7CisgICAgICAgIGlmIChxdWVyeU9iamVjdC0+c2Vjb25kKQorICAgICAgICB7CisgICAg
ICAgICAgICBxdWVyeU9iamVjdC0+c2Vjb25kLT5yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICAg
ICAgbVF1ZXJ5TWFwLmVyYXNlKHF1ZXJ5T2JqZWN0KTsKKyAgICB9Cit9CisKK0J1ZmZlciAqQ29u
dGV4dDo6Z2V0QnVmZmVyKEdMdWludCBoYW5kbGUpCit7CisgICAgcmV0dXJuIG1SZXNvdXJjZU1h
bmFnZXItPmdldEJ1ZmZlcihoYW5kbGUpOworfQorCitTaGFkZXIgKkNvbnRleHQ6OmdldFNoYWRl
cihHTHVpbnQgaGFuZGxlKQoreworICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRTaGFk
ZXIoaGFuZGxlKTsKK30KKworUHJvZ3JhbSAqQ29udGV4dDo6Z2V0UHJvZ3JhbShHTHVpbnQgaGFu
ZGxlKQoreworICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQcm9ncmFtKGhhbmRsZSk7
Cit9CisKK1RleHR1cmUgKkNvbnRleHQ6OmdldFRleHR1cmUoR0x1aW50IGhhbmRsZSkKK3sKKyAg
ICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Z2V0VGV4dHVyZShoYW5kbGUpOworfQorCitSZW5k
ZXJidWZmZXIgKkNvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlcihHTHVpbnQgaGFuZGxlKQoreworICAg
IHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRSZW5kZXJidWZmZXIoaGFuZGxlKTsKK30KKwor
RnJhbWVidWZmZXIgKkNvbnRleHQ6OmdldFJlYWRGcmFtZWJ1ZmZlcigpCit7CisgICAgcmV0dXJu
IGdldEZyYW1lYnVmZmVyKG1TdGF0ZS5yZWFkRnJhbWVidWZmZXIpOworfQorCitGcmFtZWJ1ZmZl
ciAqQ29udGV4dDo6Z2V0RHJhd0ZyYW1lYnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbUJvdW5kRHJh
d0ZyYW1lYnVmZmVyOworfQorCit2b2lkIENvbnRleHQ6OmJpbmRBcnJheUJ1ZmZlcih1bnNpZ25l
ZCBpbnQgYnVmZmVyKQoreworICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2Nh
dGlvbihidWZmZXIpOworCisgICAgbVN0YXRlLmFycmF5QnVmZmVyLnNldChnZXRCdWZmZXIoYnVm
ZmVyKSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6YmluZEVsZW1lbnRBcnJheUJ1ZmZlcih1bnNpZ25l
ZCBpbnQgYnVmZmVyKQoreworICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2Nh
dGlvbihidWZmZXIpOworCisgICAgbVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZlci5zZXQoZ2V0QnVm
ZmVyKGJ1ZmZlcikpOworfQorCit2b2lkIENvbnRleHQ6OmJpbmRUZXh0dXJlMkQoR0x1aW50IHRl
eHR1cmUpCit7CisgICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tUZXh0dXJlQWxsb2NhdGlvbih0
ZXh0dXJlLCBURVhUVVJFXzJEKTsKKworICAgIG1TdGF0ZS5zYW1wbGVyVGV4dHVyZVtURVhUVVJF
XzJEXVttU3RhdGUuYWN0aXZlU2FtcGxlcl0uc2V0KGdldFRleHR1cmUodGV4dHVyZSkpOworfQor
Cit2b2lkIENvbnRleHQ6OmJpbmRUZXh0dXJlQ3ViZU1hcChHTHVpbnQgdGV4dHVyZSkKK3sKKyAg
ICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1RleHR1cmVBbGxvY2F0aW9uKHRleHR1cmUsIFRFWFRV
UkVfQ1VCRSk7CisKKyAgICBtU3RhdGUuc2FtcGxlclRleHR1cmVbVEVYVFVSRV9DVUJFXVttU3Rh
dGUuYWN0aXZlU2FtcGxlcl0uc2V0KGdldFRleHR1cmUodGV4dHVyZSkpOworfQorCit2b2lkIENv
bnRleHQ6OmJpbmRSZWFkRnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKQoreworICAgIGlm
ICghZ2V0RnJhbWVidWZmZXIoZnJhbWVidWZmZXIpKQorICAgIHsKKyAgICAgICAgbUZyYW1lYnVm
ZmVyTWFwW2ZyYW1lYnVmZmVyXSA9IG5ldyBGcmFtZWJ1ZmZlcihtUmVuZGVyZXIpOworICAgIH0K
KworICAgIG1TdGF0ZS5yZWFkRnJhbWVidWZmZXIgPSBmcmFtZWJ1ZmZlcjsKK30KKwordm9pZCBD
b250ZXh0OjpiaW5kRHJhd0ZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlcikKK3sKKyAgICBp
ZiAoIWdldEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKSkKKyAgICB7CisgICAgICAgIG1GcmFtZWJ1
ZmZlck1hcFtmcmFtZWJ1ZmZlcl0gPSBuZXcgRnJhbWVidWZmZXIobVJlbmRlcmVyKTsKKyAgICB9
CisKKyAgICBtU3RhdGUuZHJhd0ZyYW1lYnVmZmVyID0gZnJhbWVidWZmZXI7CisKKyAgICBtQm91
bmREcmF3RnJhbWVidWZmZXIgPSBnZXRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7Cit9CisKK3Zv
aWQgQ29udGV4dDo6YmluZFJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVyKQoreworICAg
IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrUmVuZGVyYnVmZmVyQWxsb2NhdGlvbihyZW5kZXJidWZm
ZXIpOworCisgICAgbVN0YXRlLnJlbmRlcmJ1ZmZlci5zZXQoZ2V0UmVuZGVyYnVmZmVyKHJlbmRl
cmJ1ZmZlcikpOworfQorCit2b2lkIENvbnRleHQ6OnVzZVByb2dyYW0oR0x1aW50IHByb2dyYW0p
Cit7CisgICAgR0x1aW50IHByaW9yUHJvZ3JhbSA9IG1TdGF0ZS5jdXJyZW50UHJvZ3JhbTsKKyAg
ICBtU3RhdGUuY3VycmVudFByb2dyYW0gPSBwcm9ncmFtOyAgICAgICAgICAgICAgIC8vIE11c3Qg
c3dpdGNoIGJlZm9yZSB0cnlpbmcgdG8gZGVsZXRlLCBvdGhlcndpc2UgaXQgb25seSBnZXRzIGZs
YWdnZWQuCisKKyAgICBpZiAocHJpb3JQcm9ncmFtICE9IHByb2dyYW0pCisgICAgeworICAgICAg
ICBQcm9ncmFtICpuZXdQcm9ncmFtID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UHJvZ3JhbShwcm9n
cmFtKTsKKyAgICAgICAgUHJvZ3JhbSAqb2xkUHJvZ3JhbSA9IG1SZXNvdXJjZU1hbmFnZXItPmdl
dFByb2dyYW0ocHJpb3JQcm9ncmFtKTsKKyAgICAgICAgbUN1cnJlbnRQcm9ncmFtQmluYXJ5LnNl
dChOVUxMKTsKKworICAgICAgICBpZiAobmV3UHJvZ3JhbSkKKyAgICAgICAgeworICAgICAgICAg
ICAgbmV3UHJvZ3JhbS0+YWRkUmVmKCk7CisgICAgICAgICAgICBtQ3VycmVudFByb2dyYW1CaW5h
cnkuc2V0KG5ld1Byb2dyYW0tPmdldFByb2dyYW1CaW5hcnkoKSk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGlmIChvbGRQcm9ncmFtKQorICAgICAgICB7CisgICAgICAgICAgICBvbGRQ
cm9ncmFtLT5yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6
bGlua1Byb2dyYW0oR0x1aW50IHByb2dyYW0pCit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVj
dCA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBib29sIGxp
bmtlZCA9IHByb2dyYW1PYmplY3QtPmxpbmsoKTsKKworICAgIC8vIGlmIHRoZSBjdXJyZW50IHBy
b2dyYW0gd2FzIHJlbGlua2VkIHN1Y2Nlc3NmdWxseSB3ZQorICAgIC8vIG5lZWQgdG8gaW5zdGFs
bCB0aGUgbmV3IGV4ZWN1dGFibGVzCisgICAgaWYgKGxpbmtlZCAmJiBwcm9ncmFtID09IG1TdGF0
ZS5jdXJyZW50UHJvZ3JhbSkKKyAgICB7CisgICAgICAgIG1DdXJyZW50UHJvZ3JhbUJpbmFyeS5z
ZXQocHJvZ3JhbU9iamVjdC0+Z2V0UHJvZ3JhbUJpbmFyeSgpKTsKKyAgICB9Cit9CisKK3ZvaWQg
Q29udGV4dDo6c2V0UHJvZ3JhbUJpbmFyeShHTHVpbnQgcHJvZ3JhbSwgY29uc3Qgdm9pZCAqYmlu
YXJ5LCBHTGludCBsZW5ndGgpCit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IG1SZXNv
dXJjZU1hbmFnZXItPmdldFByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBib29sIGxvYWRlZCA9IHBy
b2dyYW1PYmplY3QtPnNldFByb2dyYW1CaW5hcnkoYmluYXJ5LCBsZW5ndGgpOworCisgICAgLy8g
aWYgdGhlIGN1cnJlbnQgcHJvZ3JhbSB3YXMgcmVsb2FkZWQgc3VjY2Vzc2Z1bGx5IHdlCisgICAg
Ly8gbmVlZCB0byBpbnN0YWxsIHRoZSBuZXcgZXhlY3V0YWJsZXMKKyAgICBpZiAobG9hZGVkICYm
IHByb2dyYW0gPT0gbVN0YXRlLmN1cnJlbnRQcm9ncmFtKQorICAgIHsKKyAgICAgICAgbUN1cnJl
bnRQcm9ncmFtQmluYXJ5LnNldChwcm9ncmFtT2JqZWN0LT5nZXRQcm9ncmFtQmluYXJ5KCkpOwor
ICAgIH0KKworfQorCit2b2lkIENvbnRleHQ6OmJlZ2luUXVlcnkoR0xlbnVtIHRhcmdldCwgR0x1
aW50IHF1ZXJ5KQoreworICAgIC8vIEZyb20gRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuOiBJ
ZiBCZWdpblF1ZXJ5RVhUIGlzIGNhbGxlZCB3aXRoIGFuIDxpZD4gIAorICAgIC8vIG9mIHplcm8s
IGlmIHRoZSBhY3RpdmUgcXVlcnkgb2JqZWN0IG5hbWUgZm9yIDx0YXJnZXQ+IGlzIG5vbi16ZXJv
IChmb3IgdGhlICAKKyAgICAvLyB0YXJnZXRzIEFOWV9TQU1QTEVTX1BBU1NFRF9FWFQgYW5kIEFO
WV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhULCBpZiAgCisgICAgLy8gdGhlIGFjdGl2
ZSBxdWVyeSBmb3IgZWl0aGVyIHRhcmdldCBpcyBub24temVybyksIGlmIDxpZD4gaXMgdGhlIG5h
bWUgb2YgYW4gCisgICAgLy8gZXhpc3RpbmcgcXVlcnkgb2JqZWN0IHdob3NlIHR5cGUgZG9lcyBu
b3QgbWF0Y2ggPHRhcmdldD4sIG9yIGlmIDxpZD4gaXMgdGhlCisgICAgLy8gYWN0aXZlIHF1ZXJ5
IG9iamVjdCBuYW1lIGZvciBhbnkgcXVlcnkgdHlwZSwgdGhlIGVycm9yIElOVkFMSURfT1BFUkFU
SU9OIGlzCisgICAgLy8gZ2VuZXJhdGVkLgorCisgICAgLy8gRW5zdXJlIG5vIG90aGVyIHF1ZXJp
ZXMgYXJlIGFjdGl2ZQorICAgIC8vIE5PVEU6IElmIG90aGVyIHF1ZXJpZXMgdGhhbiBvY2NsdXNp
b24gYXJlIHN1cHBvcnRlZCwgd2Ugd2lsbCBuZWVkIHRvIGNoZWNrCisgICAgLy8gc2VwYXJhdGVs
eSB0aGF0OgorICAgIC8vICAgIGEpIFRoZSBxdWVyeSBJRCBwYXNzZWQgaXMgbm90IHRoZSBjdXJy
ZW50IGFjdGl2ZSBxdWVyeSBmb3IgYW55IHRhcmdldC90eXBlCisgICAgLy8gICAgYikgVGhlcmUg
YXJlIG5vIGFjdGl2ZSBxdWVyaWVzIGZvciB0aGUgcmVxdWVzdGVkIHRhcmdldCAoYW5kIGluIHRo
ZSBjYXNlCisgICAgLy8gICAgICAgb2YgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCBhbmQgR0xf
QU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQsCisgICAgLy8gICAgICAgbm8gcXVl
cnkgbWF5IGJlIGFjdGl2ZSBmb3IgZWl0aGVyIGlmIGdsQmVnaW5RdWVyeSB0YXJnZXRzIGVpdGhl
ci4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IFFVRVJZX1RZUEVfQ09VTlQ7IGkrKykKKyAgICB7
CisgICAgICAgIGlmIChtU3RhdGUuYWN0aXZlUXVlcnlbaV0uZ2V0KCkgIT0gTlVMTCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBRdWVyeVR5cGUgcVR5cGU7CisgICAgc3dpdGNoICh0
YXJnZXQpCisgICAgeworICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhUOiAKKyAg
ICAgICAgcVR5cGUgPSBRVUVSWV9BTllfU0FNUExFU19QQVNTRUQ7IAorICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQ6IAorICAg
ICAgICBxVHlwZSA9IFFVRVJZX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkU7IAorICAg
ICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IAorICAgICAgICBBU1NFUlQoZmFsc2UpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgUXVlcnkgKnF1ZXJ5T2JqZWN0ID0gZ2V0UXVlcnko
cXVlcnksIHRydWUsIHRhcmdldCk7CisKKyAgICAvLyBjaGVjayB0aGF0IG5hbWUgd2FzIG9idGFp
bmVkIHdpdGggZ2xHZW5RdWVyaWVzCisgICAgaWYgKCFxdWVyeU9iamVjdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAg
IC8vIGNoZWNrIGZvciB0eXBlIG1pc21hdGNoCisgICAgaWYgKHF1ZXJ5T2JqZWN0LT5nZXRUeXBl
KCkgIT0gdGFyZ2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgfQorCisgICAgLy8gc2V0IHF1ZXJ5IGFzIGFjdGl2ZSBmb3Igc3Bl
Y2lmaWVkIHRhcmdldAorICAgIG1TdGF0ZS5hY3RpdmVRdWVyeVtxVHlwZV0uc2V0KHF1ZXJ5T2Jq
ZWN0KTsKKworICAgIC8vIGJlZ2luIHF1ZXJ5CisgICAgcXVlcnlPYmplY3QtPmJlZ2luKCk7Cit9
CisKK3ZvaWQgQ29udGV4dDo6ZW5kUXVlcnkoR0xlbnVtIHRhcmdldCkKK3sKKyAgICBRdWVyeVR5
cGUgcVR5cGU7CisKKyAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICB7CisgICAgICBjYXNlIEdMX0FO
WV9TQU1QTEVTX1BBU1NFRF9FWFQ6IAorICAgICAgICBxVHlwZSA9IFFVRVJZX0FOWV9TQU1QTEVT
X1BBU1NFRDsgCisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNT
RURfQ09OU0VSVkFUSVZFX0VYVDogCisgICAgICAgIHFUeXBlID0gUVVFUllfQU5ZX1NBTVBMRVNf
UEFTU0VEX0NPTlNFUlZBVElWRTsgCisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogCisg
ICAgICAgIEFTU0VSVChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBRdWVy
eSAqcXVlcnlPYmplY3QgPSBtU3RhdGUuYWN0aXZlUXVlcnlbcVR5cGVdLmdldCgpOworCisgICAg
aWYgKHF1ZXJ5T2JqZWN0ID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICBxdWVyeU9iamVjdC0+ZW5kKCk7
CisKKyAgICBtU3RhdGUuYWN0aXZlUXVlcnlbcVR5cGVdLnNldChOVUxMKTsKK30KKwordm9pZCBD
b250ZXh0OjpzZXRGcmFtZWJ1ZmZlclplcm8oRnJhbWVidWZmZXIgKmJ1ZmZlcikKK3sKKyAgICBk
ZWxldGUgbUZyYW1lYnVmZmVyTWFwWzBdOworICAgIG1GcmFtZWJ1ZmZlck1hcFswXSA9IGJ1ZmZl
cjsKKyAgICBpZiAobVN0YXRlLmRyYXdGcmFtZWJ1ZmZlciA9PSAwKQorICAgIHsKKyAgICAgICAg
bUJvdW5kRHJhd0ZyYW1lYnVmZmVyID0gYnVmZmVyOworICAgIH0KK30KKwordm9pZCBDb250ZXh0
OjpzZXRSZW5kZXJidWZmZXJTdG9yYWdlKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcykKK3sKKyAgICBSZW5kZXJidWZm
ZXJTdG9yYWdlICpyZW5kZXJidWZmZXIgPSBOVUxMOworICAgIHN3aXRjaCAoaW50ZXJuYWxmb3Jt
YXQpCisgICAgeworICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQxNjoKKyAgICAgICAgcmVu
ZGVyYnVmZmVyID0gbmV3IGdsOjpEZXB0aGJ1ZmZlcihtUmVuZGVyZXIsIHdpZHRoLCBoZWlnaHQs
IHNhbXBsZXMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICBj
YXNlIEdMX1JHQjVfQTE6CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2UgR0xfUkdC
OF9PRVM6CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzoKKyAgICAgICAgcmVuZGVyYnVmZmVyID0g
bmV3IGdsOjpDb2xvcmJ1ZmZlcihtUmVuZGVyZXIsd2lkdGgsIGhlaWdodCwgaW50ZXJuYWxmb3Jt
YXQsIHNhbXBsZXMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9JTkRF
WDg6CisgICAgICAgIHJlbmRlcmJ1ZmZlciA9IG5ldyBnbDo6U3RlbmNpbGJ1ZmZlcihtUmVuZGVy
ZXIsIHdpZHRoLCBoZWlnaHQsIHNhbXBsZXMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM6CisgICAgICAgIHJlbmRlcmJ1ZmZlciA9IG5ldyBnbDo6
RGVwdGhTdGVuY2lsYnVmZmVyKG1SZW5kZXJlciwgd2lkdGgsIGhlaWdodCwgc2FtcGxlcyk7Cisg
ICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsgcmV0
dXJuOworICAgIH0KKworICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyT2JqZWN0ID0gbVN0
YXRlLnJlbmRlcmJ1ZmZlci5nZXQoKTsKKyAgICByZW5kZXJidWZmZXJPYmplY3QtPnNldFN0b3Jh
Z2UocmVuZGVyYnVmZmVyKTsKK30KKworRnJhbWVidWZmZXIgKkNvbnRleHQ6OmdldEZyYW1lYnVm
ZmVyKHVuc2lnbmVkIGludCBoYW5kbGUpCit7CisgICAgRnJhbWVidWZmZXJNYXA6Oml0ZXJhdG9y
IGZyYW1lYnVmZmVyID0gbUZyYW1lYnVmZmVyTWFwLmZpbmQoaGFuZGxlKTsKKworICAgIGlmIChm
cmFtZWJ1ZmZlciA9PSBtRnJhbWVidWZmZXJNYXAuZW5kKCkpCisgICAgeworICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZyYW1lYnVm
ZmVyLT5zZWNvbmQ7CisgICAgfQorfQorCitGZW5jZSAqQ29udGV4dDo6Z2V0RmVuY2UodW5zaWdu
ZWQgaW50IGhhbmRsZSkKK3sKKyAgICBGZW5jZU1hcDo6aXRlcmF0b3IgZmVuY2UgPSBtRmVuY2VN
YXAuZmluZChoYW5kbGUpOworCisgICAgaWYgKGZlbmNlID09IG1GZW5jZU1hcC5lbmQoKSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICByZXR1cm4gZmVuY2UtPnNlY29uZDsKKyAgICB9Cit9CisKK1F1ZXJ5ICpDb250ZXh0OjpnZXRR
dWVyeSh1bnNpZ25lZCBpbnQgaGFuZGxlLCBib29sIGNyZWF0ZSwgR0xlbnVtIHR5cGUpCit7Cisg
ICAgUXVlcnlNYXA6Oml0ZXJhdG9yIHF1ZXJ5ID0gbVF1ZXJ5TWFwLmZpbmQoaGFuZGxlKTsKKwor
ICAgIGlmIChxdWVyeSA9PSBtUXVlcnlNYXAuZW5kKCkpCisgICAgeworICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKCFxdWVyeS0+c2Vjb25k
ICYmIGNyZWF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcXVlcnktPnNlY29uZCA9IG5ldyBR
dWVyeShtUmVuZGVyZXIsIHR5cGUsIGhhbmRsZSk7CisgICAgICAgICAgICBxdWVyeS0+c2Vjb25k
LT5hZGRSZWYoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcXVlcnktPnNlY29uZDsKKyAg
ICB9Cit9CisKK0J1ZmZlciAqQ29udGV4dDo6Z2V0QXJyYXlCdWZmZXIoKQoreworICAgIHJldHVy
biBtU3RhdGUuYXJyYXlCdWZmZXIuZ2V0KCk7Cit9CisKK0J1ZmZlciAqQ29udGV4dDo6Z2V0RWxl
bWVudEFycmF5QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZl
ci5nZXQoKTsKK30KKworUHJvZ3JhbUJpbmFyeSAqQ29udGV4dDo6Z2V0Q3VycmVudFByb2dyYW1C
aW5hcnkoKQoreworICAgIHJldHVybiBtQ3VycmVudFByb2dyYW1CaW5hcnkuZ2V0KCk7Cit9CisK
K1RleHR1cmUyRCAqQ29udGV4dDo6Z2V0VGV4dHVyZTJEKCkKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VGV4dHVyZTJEKj4oZ2V0U2FtcGxlclRleHR1cmUobVN0YXRlLmFjdGl2ZVNhbXBsZXIs
IFRFWFRVUkVfMkQpKTsKK30KKworVGV4dHVyZUN1YmVNYXAgKkNvbnRleHQ6OmdldFRleHR1cmVD
dWJlTWFwKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dHVyZUN1YmVNYXAqPihnZXRT
YW1wbGVyVGV4dHVyZShtU3RhdGUuYWN0aXZlU2FtcGxlciwgVEVYVFVSRV9DVUJFKSk7Cit9CisK
K1RleHR1cmUgKkNvbnRleHQ6OmdldFNhbXBsZXJUZXh0dXJlKHVuc2lnbmVkIGludCBzYW1wbGVy
LCBUZXh0dXJlVHlwZSB0eXBlKQoreworICAgIEdMdWludCB0ZXhpZCA9IG1TdGF0ZS5zYW1wbGVy
VGV4dHVyZVt0eXBlXVtzYW1wbGVyXS5pZCgpOworCisgICAgaWYgKHRleGlkID09IDApICAgLy8g
U3BlY2lhbCBjYXNlOiAwIHJlZmVycyB0byBkaWZmZXJlbnQgaW5pdGlhbCB0ZXh0dXJlcyBiYXNl
ZCBvbiB0aGUgdGFyZ2V0CisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsK
KyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgIGNhc2UgVEVYVFVS
RV8yRDogcmV0dXJuIG1UZXh0dXJlMkRaZXJvLmdldCgpOworICAgICAgICAgIGNhc2UgVEVYVFVS
RV9DVUJFOiByZXR1cm4gbVRleHR1cmVDdWJlTWFwWmVyby5nZXQoKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiBtU3RhdGUuc2FtcGxlclRleHR1cmVbdHlwZV1bc2FtcGxlcl0uZ2V0
KCk7Cit9CisKK2Jvb2wgQ29udGV4dDo6Z2V0Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xl
YW4gKnBhcmFtcykKK3sKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgIGNhc2UgR0xf
U0hBREVSX0NPTVBJTEVSOiAgICAgICAgICAgKnBhcmFtcyA9IEdMX1RSVUU7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFX0lO
VkVSVDogICAgKnBhcmFtcyA9IG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZUludmVydDsgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfREVQVEhfV1JJVEVNQVNLOiAgICAgICAgICAgKnBhcmFtcyA9
IG1TdGF0ZS5kZXB0aFN0ZW5jaWwuZGVwdGhNYXNrOyAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfQ09MT1JfV1JJVEVNQVNLOgorICAgICAgICBwYXJhbXNbMF0gPSBtU3RhdGUuYmxlbmQuY29s
b3JNYXNrUmVkOworICAgICAgICBwYXJhbXNbMV0gPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrR3Jl
ZW47CisgICAgICAgIHBhcmFtc1syXSA9IG1TdGF0ZS5ibGVuZC5jb2xvck1hc2tCbHVlOworICAg
ICAgICBwYXJhbXNbM10gPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQWxwaGE7CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAgICAgICAgICAgICAqcGFyYW1zID0g
bVN0YXRlLnJhc3Rlcml6ZXIuY3VsbEZhY2U7ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9QT0xZR09OX09GRlNFVF9GSUxMOiAgICAgICAqcGFyYW1zID0gbVN0YXRlLnJhc3Rlcml6ZXIu
cG9seWdvbk9mZnNldEZpbGw7IGJyZWFrOworICAgICAgY2FzZSBHTF9TQU1QTEVfQUxQSEFfVE9f
Q09WRVJBR0U6ICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLnNhbXBsZUFscGhhVG9Db3ZlcmFnZTsg
IGJyZWFrOworICAgICAgY2FzZSBHTF9TQU1QTEVfQ09WRVJBR0U6ICAgICAgICAgICAqcGFyYW1z
ID0gbVN0YXRlLnNhbXBsZUNvdmVyYWdlOyAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9TQ0lTU09SX1RFU1Q6ICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnNjaXNzb3JU
ZXN0OyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lMX1RFU1Q6
ICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsVGVzdDsg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9ERVBUSF9URVNUOiAgICAgICAgICAgICAgICAqcGFy
YW1zID0gbVN0YXRlLmRlcHRoU3RlbmNpbC5kZXB0aFRlc3Q7ICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9CTEVORDogICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5k
LmJsZW5kOyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9ESVRIRVI6ICAg
ICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLmRpdGhlcjsgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1NfRVhUOiAq
cGFyYW1zID0gbVJvYnVzdEFjY2VzcyA/IEdMX1RSVUUgOiBHTF9GQUxTRTsgIGJyZWFrOworICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIENvbnRleHQ6OmdldEZsb2F0dihHTGVudW0gcG5hbWUsIEdMZmxvYXQg
KnBhcmFtcykKK3sKKyAgICAvLyBQbGVhc2Ugbm90ZTogREVQVEhfQ0xFQVJfVkFMVUUgaXMgaW5j
bHVkZWQgaW4gb3VyIGludGVybmFsIGdldEZsb2F0diBpbXBsZW1lbnRhdGlvbgorICAgIC8vIGJl
Y2F1c2UgaXQgaXMgc3RvcmVkIGFzIGEgZmxvYXQsIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCB0aGUg
R0wgRVMgMi4wIHNwZWMgbmFtZXMKKyAgICAvLyBHZXRJbnRlZ2VydiBhcyBpdHMgbmF0aXZlIHF1
ZXJ5IGZ1bmN0aW9uLiBBcyBpdCB3b3VsZCByZXF1aXJlIGNvbnZlcnNpb24gaW4gYW55CisgICAg
Ly8gY2FzZSwgdGhpcyBzaG91bGQgbWFrZSBubyBkaWZmZXJlbmNlIHRvIHRoZSBjYWxsaW5nIGFw
cGxpY2F0aW9uLgorICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgY2FzZSBHTF9MSU5F
X1dJRFRIOiAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUubGluZVdpZHRoOyAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFX1ZB
TFVFOiAgICAqcGFyYW1zID0gbVN0YXRlLnNhbXBsZUNvdmVyYWdlVmFsdWU7ICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0RFUFRIX0NMRUFSX1ZBTFVFOiAgICAgICAgKnBhcmFt
cyA9IG1TdGF0ZS5kZXB0aENsZWFyVmFsdWU7ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9GQUNUT1I6ICAgICpwYXJhbXMgPSBtU3RhdGUucmFz
dGVyaXplci5wb2x5Z29uT2Zmc2V0RmFjdG9yOyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUE9M
WUdPTl9PRkZTRVRfVU5JVFM6ICAgICAqcGFyYW1zID0gbVN0YXRlLnJhc3Rlcml6ZXIucG9seWdv
bk9mZnNldFVuaXRzOyAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FMSUFTRURfTElORV9XSURU
SF9SQU5HRToKKyAgICAgICAgcGFyYW1zWzBdID0gZ2w6OkFMSUFTRURfTElORV9XSURUSF9SQU5H
RV9NSU47CisgICAgICAgIHBhcmFtc1sxXSA9IGdsOjpBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0Vf
TUFYOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JB
TkdFOgorICAgICAgICBwYXJhbXNbMF0gPSBnbDo6QUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFX01J
TjsKKyAgICAgICAgcGFyYW1zWzFdID0gZ2V0TWF4aW11bVBvaW50U2l6ZSgpOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfREVQVEhfUkFOR0U6CisgICAgICAgIHBhcmFtc1swXSA9IG1T
dGF0ZS56TmVhcjsKKyAgICAgICAgcGFyYW1zWzFdID0gbVN0YXRlLnpGYXI7CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9DT0xPUl9DTEVBUl9WQUxVRToKKyAgICAgICAgcGFyYW1zWzBd
ID0gbVN0YXRlLmNvbG9yQ2xlYXJWYWx1ZS5yZWQ7CisgICAgICAgIHBhcmFtc1sxXSA9IG1TdGF0
ZS5jb2xvckNsZWFyVmFsdWUuZ3JlZW47CisgICAgICAgIHBhcmFtc1syXSA9IG1TdGF0ZS5jb2xv
ckNsZWFyVmFsdWUuYmx1ZTsKKyAgICAgICAgcGFyYW1zWzNdID0gbVN0YXRlLmNvbG9yQ2xlYXJW
YWx1ZS5hbHBoYTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX0NPTE9SOgor
ICAgICAgICBwYXJhbXNbMF0gPSBtU3RhdGUuYmxlbmRDb2xvci5yZWQ7CisgICAgICAgIHBhcmFt
c1sxXSA9IG1TdGF0ZS5ibGVuZENvbG9yLmdyZWVuOworICAgICAgICBwYXJhbXNbMl0gPSBtU3Rh
dGUuYmxlbmRDb2xvci5ibHVlOworICAgICAgICBwYXJhbXNbM10gPSBtU3RhdGUuYmxlbmRDb2xv
ci5hbHBoYTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9URVhUVVJFX01BWF9B
TklTT1RST1BZX0VYVDoKKyAgICAgICAgaWYgKCFzdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ry
b3B5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgICAgICAqcGFyYW1zID0gbU1heFRleHR1cmVBbmlzb3Ryb3B5OworICAgICAgICBicmVhazsK
KyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBDb250ZXh0OjpnZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIEdM
aW50ICpwYXJhbXMpCit7CisgICAgaWYgKHBuYW1lID49IEdMX0RSQVdfQlVGRkVSMF9FWFQgJiYg
cG5hbWUgPD0gR0xfRFJBV19CVUZGRVIxNV9FWFQpCisgICAgeworICAgICAgICB1bnNpZ25lZCBp
bnQgY29sb3JBdHRhY2htZW50ID0gKHBuYW1lIC0gR0xfRFJBV19CVUZGRVIwX0VYVCk7CisKKyAg
ICAgICAgaWYgKGNvbG9yQXR0YWNobWVudCA+PSBtUmVuZGVyZXItPmdldE1heFJlbmRlclRhcmdl
dHMoKSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gcmV0dXJuIHRydWUgdG8gc3RvcCBmdXJ0
aGVyIG9wZXJhdGlvbiBpbiB0aGUgcGFyZW50IGNhbGwKKyAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAg
RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisKKyAgICAg
ICAgKnBhcmFtcyA9IGZyYW1lYnVmZmVyLT5nZXREcmF3QnVmZmVyU3RhdGUoY29sb3JBdHRhY2ht
ZW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gUGxlYXNlIG5vdGU6
IERFUFRIX0NMRUFSX1ZBTFVFIGlzIG5vdCBpbmNsdWRlZCBpbiBvdXIgaW50ZXJuYWwgZ2V0SW50
ZWdlcnYgaW1wbGVtZW50YXRpb24KKyAgICAvLyBiZWNhdXNlIGl0IGlzIHN0b3JlZCBhcyBhIGZs
b2F0LCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgdGhlIEdMIEVTIDIuMCBzcGVjIG5hbWVzCisgICAg
Ly8gR2V0SW50ZWdlcnYgYXMgaXRzIG5hdGl2ZSBxdWVyeSBmdW5jdGlvbi4gQXMgaXQgd291bGQg
cmVxdWlyZSBjb252ZXJzaW9uIGluIGFueQorICAgIC8vIGNhc2UsIHRoaXMgc2hvdWxkIG1ha2Ug
bm8gZGlmZmVyZW5jZSB0byB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gWW91IG1heSBmaW5kIGl0
IGluIAorICAgIC8vIENvbnRleHQ6OmdldEZsb2F0di4KKyAgICBzd2l0Y2ggKHBuYW1lKQorICAg
IHsKKyAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9BVFRSSUJTOiAgICAgICAgICAgICAgICpwYXJh
bXMgPSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzogICAgICAgKnBhcmFtcyA9IG1SZW5k
ZXJlci0+Z2V0TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMoKTsgYnJlYWs7CisgICAgICBjYXNlIEdM
X01BWF9WQVJZSU5HX1ZFQ1RPUlM6ICAgICAgICAgICAgICAqcGFyYW1zID0gbVJlbmRlcmVyLT5n
ZXRNYXhWYXJ5aW5nVmVjdG9ycygpOyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX0NPTUJJ
TkVEX1RFWFRVUkVfSU1BR0VfVU5JVFM6ICpwYXJhbXMgPSBtUmVuZGVyZXItPmdldE1heENvbWJp
bmVkVGV4dHVyZUltYWdlVW5pdHMoKTsgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9WRVJURVhf
VEVYVFVSRV9JTUFHRV9VTklUUzogICAqcGFyYW1zID0gbVJlbmRlcmVyLT5nZXRNYXhWZXJ0ZXhU
ZXh0dXJlSW1hZ2VVbml0cygpOyBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX1RFWFRVUkVfSU1B
R0VfVU5JVFM6ICAgICAgICAgICpwYXJhbXMgPSBnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNU
T1JTOiAgICAgKnBhcmFtcyA9IG1SZW5kZXJlci0+Z2V0TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9y
cygpOyBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFOiAgICAgICAg
ICAgICpwYXJhbXMgPSBnZXRNYXhpbXVtUmVuZGVyYnVmZmVyRGltZW5zaW9uKCk7ICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUOiAgICAgICAgKnBhcmFt
cyA9IG1SZW5kZXJlci0+Z2V0TWF4UmVuZGVyVGFyZ2V0cygpOyAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX01BWF9EUkFXX0JVRkZFUlNfRVhUOiAgICAgICAgICAgICAqcGFyYW1zID0gbVJlbmRl
cmVyLT5nZXRNYXhSZW5kZXJUYXJnZXRzKCk7ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTlVN
X1NIQURFUl9CSU5BUllfRk9STUFUUzogICAgICAgICpwYXJhbXMgPSAwOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TSEFERVJfQklOQVJZ
X0ZPUk1BVFM6ICAgICAgLyogbm8gc2hhZGVyIGJpbmFyeSBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQg
Ki8gICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HOiAg
ICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmFycmF5QnVmZmVyLmlkKCk7ICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORzogICAg
ICpwYXJhbXMgPSBtU3RhdGUuZWxlbWVudEFycmF5QnVmZmVyLmlkKCk7ICAgICAgIGJyZWFrOwor
ICAgICAgLy9jYXNlIEdMX0ZSQU1FQlVGRkVSX0JJTkRJTkc6ICAgICAgICAgICAgLy8gbm93IGVx
dWl2YWxlbnQgdG8gR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFCisgICAgICBjYXNl
IEdMX0RSQVdfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRTogICAqcGFyYW1zID0gbVN0YXRlLmRy
YXdGcmFtZWJ1ZmZlcjsgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkVBRF9G
UkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFOiAgICpwYXJhbXMgPSBtU3RhdGUucmVhZEZyYW1lYnVm
ZmVyOyAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfQklO
RElORzogICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5yZW5kZXJidWZmZXIuaWQoKTsgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0NVUlJFTlRfUFJPR1JBTTogICAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmN1cnJlbnRQcm9ncmFtOyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfUEFDS19BTElHTk1FTlQ6ICAgICAgICAgICAgICAgICAgICpw
YXJhbXMgPSBtU3RhdGUucGFja0FsaWdubWVudDsgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9QQUNLX1JFVkVSU0VfUk9XX09SREVSX0FOR0xFOiAgICAgKnBhcmFtcyA9IG1T
dGF0ZS5wYWNrUmV2ZXJzZVJvd09yZGVyOyAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X1VOUEFDS19BTElHTk1FTlQ6ICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnVucGFj
a0FsaWdubWVudDsgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfR0VORVJBVEVf
TUlQTUFQX0hJTlQ6ICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZ2VuZXJhdGVNaXBtYXBI
aW50OyAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVJfREVS
SVZBVElWRV9ISU5UX09FUzogKnBhcmFtcyA9IG1TdGF0ZS5mcmFnbWVudFNoYWRlckRlcml2YXRp
dmVIaW50OyBicmVhazsKKyAgICAgIGNhc2UgR0xfQUNUSVZFX1RFWFRVUkU6ICAgICAgICAgICAg
ICAgICAgICpwYXJhbXMgPSAobVN0YXRlLmFjdGl2ZVNhbXBsZXIgKyBHTF9URVhUVVJFMCk7IGJy
ZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lMX0ZVTkM6ICAgICAgICAgICAgICAgICAgICAgKnBh
cmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEZ1bmM7ICAgICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9TVEVOQ0lMX1JFRjogICAgICAgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IG1TdGF0ZS5zdGVuY2lsUmVmOyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9TVEVOQ0lMX1ZBTFVFX01BU0s6ICAgICAgICAgICAgICAgKnBhcmFtcyA9
IG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbE1hc2s7ICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfRlVOQzogICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1T
dGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tGdW5jOyAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9TVEVOQ0lMX0JBQ0tfUkVGOiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0
ZS5zdGVuY2lsQmFja1JlZjsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSzogICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5k
ZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tNYXNrOyAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9TVEVOQ0lMX0ZBSUw6ICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0
aFN0ZW5jaWwuc3RlbmNpbEZhaWw7ICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9T
VEVOQ0lMX1BBU1NfREVQVEhfRkFJTDogICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0
ZW5jaWwuc3RlbmNpbFBhc3NEZXB0aEZhaWw7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVO
Q0lMX1BBU1NfREVQVEhfUEFTUzogICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5j
aWwuc3RlbmNpbFBhc3NEZXB0aFBhc3M7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lM
X0JBQ0tfRkFJTDogICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5jaWwu
c3RlbmNpbEJhY2tGYWlsOyAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JB
Q0tfUEFTU19ERVBUSF9GQUlMOiAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3Rl
bmNpbEJhY2tQYXNzRGVwdGhGYWlsOyBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNL
X1BBU1NfREVQVEhfUEFTUzogICAgICpwYXJhbXMgPSBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5j
aWxCYWNrUGFzc0RlcHRoUGFzczsgYnJlYWs7CisgICAgICBjYXNlIEdMX0RFUFRIX0ZVTkM6ICAg
ICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmRlcHRoU3RlbmNpbC5kZXB0aEZ1
bmM7ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX1NSQ19SR0I6ICAg
ICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLnNvdXJjZUJsZW5kUkdCOyAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX1NSQ19BTFBIQTogICAg
ICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLnNvdXJjZUJsZW5kQWxwaGE7ICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX0RTVF9SR0I6ICAgICAgICAg
ICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLmRlc3RCbGVuZFJHQjsgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX0RTVF9BTFBIQTogICAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLmRlc3RCbGVuZEFscGhhOyAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX1JHQjogICAgICAgICAg
ICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLmJsZW5kRXF1YXRpb25SR0I7ICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBOiAgICAgICAgICAg
ICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLmJsZW5kRXF1YXRpb25BbHBoYTsgICAgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX1NURU5DSUxfV1JJVEVNQVNLOiAgICAgICAgICAgICAgICAq
cGFyYW1zID0gbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsV3JpdGVtYXNrOyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19XUklURU1BU0s6ICAgICAgICAgICAqcGFy
YW1zID0gbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsQmFja1dyaXRlbWFzazsgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX1NURU5DSUxfQ0xFQVJfVkFMVUU6ICAgICAgICAgICAgICAqcGFyYW1z
ID0gbVN0YXRlLnN0ZW5jaWxDbGVhclZhbHVlOyAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfU1VCUElYRUxfQklUUzogICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSA0OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhf
VEVYVFVSRV9TSVpFOiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGdldE1heGltdW1UZXh0dXJl
RGltZW5zaW9uKCk7ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9DVUJFX01BUF9U
RVhUVVJFX1NJWkU6ICAgICAgICAqcGFyYW1zID0gZ2V0TWF4aW11bUN1YmVUZXh0dXJlRGltZW5z
aW9uKCk7ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9G
T1JNQVRTOiAgIAorICAgICAgICBwYXJhbXNbMF0gPSBtTnVtQ29tcHJlc3NlZFRleHR1cmVGb3Jt
YXRzOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX1NBTVBMRVNfQU5HTEU6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIEdMc2l6ZWkgbWF4U2FtcGxlcyA9IGdldE1heFN1cHBvcnRl
ZFNhbXBsZXMoKTsKKyAgICAgICAgICAgIGlmIChtYXhTYW1wbGVzICE9IDApCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1heFNhbXBsZXM7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgY2FzZSBHTF9TQU1QTEVfQlVGRkVSUzogICAgICAgICAgICAgICAgICAgCisgICAgICBj
YXNlIEdMX1NBTVBMRVM6CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAq
ZnJhbWVidWZmZXIgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIGlmIChmcmFt
ZWJ1ZmZlci0+Y29tcGxldGVuZXNzKCkgPT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRV9CVUZGRVJTOgorICAgICAgICAg
ICAgICAgICAgICBpZiAoZnJhbWVidWZmZXItPmdldFNhbXBsZXMoKSAhPSAwKQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gMTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSAwOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgY2FzZSBHTF9TQU1QTEVTOgorICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gZnJhbWVi
dWZmZXItPmdldFNhbXBsZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSAKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVB
RF9UWVBFOgorICAgICAgY2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVDoK
KyAgICAgICAgeworICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgdHlwZTsKKyAgICAgICAgICAg
IGlmIChnZXRDdXJyZW50UmVhZEZvcm1hdFR5cGUoJmZvcm1hdCwgJnR5cGUpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmIChwbmFtZSA9PSBHTF9JTVBMRU1FTlRBVElPTl9DT0xP
Ul9SRUFEX0ZPUk1BVCkKKyAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGZvcm1hdDsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0eXBlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9N
QVhfVklFV1BPUlRfRElNUzoKKyAgICAgICAgeworICAgICAgICAgICAgcGFyYW1zWzBdID0gbU1h
eFZpZXdwb3J0RGltZW5zaW9uOworICAgICAgICAgICAgcGFyYW1zWzFdID0gbU1heFZpZXdwb3J0
RGltZW5zaW9uOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1RFWFRVUkVfRk9STUFUUzoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHN1cHBv
cnRzRFhUMVRleHR1cmVzKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKnBhcmFt
cysrID0gR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDsKKyAgICAgICAgICAgICAgICAq
cGFyYW1zKysgPSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChzdXBwb3J0c0RYVDNUZXh0dXJlcygpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICpwYXJhbXMrKyA9IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDNfQU5HTEU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3VwcG9ydHNEWFQ1VGV4
dHVyZXMoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAqcGFyYW1zKysgPSBHTF9D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9WSUVXUE9SVDoKKyAgICAgICAgcGFyYW1z
WzBdID0gbVN0YXRlLnZpZXdwb3J0Lng7CisgICAgICAgIHBhcmFtc1sxXSA9IG1TdGF0ZS52aWV3
cG9ydC55OworICAgICAgICBwYXJhbXNbMl0gPSBtU3RhdGUudmlld3BvcnQud2lkdGg7CisgICAg
ICAgIHBhcmFtc1szXSA9IG1TdGF0ZS52aWV3cG9ydC5oZWlnaHQ7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9TQ0lTU09SX0JPWDoKKyAgICAgICAgcGFyYW1zWzBdID0gbVN0YXRlLnNj
aXNzb3IueDsKKyAgICAgICAgcGFyYW1zWzFdID0gbVN0YXRlLnNjaXNzb3IueTsKKyAgICAgICAg
cGFyYW1zWzJdID0gbVN0YXRlLnNjaXNzb3Iud2lkdGg7CisgICAgICAgIHBhcmFtc1szXSA9IG1T
dGF0ZS5zY2lzc29yLmhlaWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0NVTExf
RkFDRV9NT0RFOiAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnJhc3Rlcml6ZXIu
Y3VsbE1vZGU7ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZST05UX0ZBQ0U6ICAgICAgICAgICAg
ICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnJhc3Rlcml6ZXIuZnJvbnRGYWNlOyAgYnJlYWs7
CisgICAgICBjYXNlIEdMX1JFRF9CSVRTOgorICAgICAgY2FzZSBHTF9HUkVFTl9CSVRTOgorICAg
ICAgY2FzZSBHTF9CTFVFX0JJVFM6CisgICAgICBjYXNlIEdMX0FMUEhBX0JJVFM6CisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBnZXREcmF3RnJh
bWVidWZmZXIoKTsKKyAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVyID0g
ZnJhbWVidWZmZXItPmdldEZpcnN0Q29sb3JidWZmZXIoKTsKKworICAgICAgICAgICAgaWYgKGNv
bG9yYnVmZmVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAocG5hbWUp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SRURfQklUUzog
ICAqcGFyYW1zID0gY29sb3JidWZmZXItPmdldFJlZFNpemUoKTsgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgIGNhc2UgR0xfR1JFRU5fQklUUzogKnBhcmFtcyA9IGNvbG9yYnVmZmVyLT5n
ZXRHcmVlblNpemUoKTsgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX0JMVUVf
QklUUzogICpwYXJhbXMgPSBjb2xvcmJ1ZmZlci0+Z2V0Qmx1ZVNpemUoKTsgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgY2FzZSBHTF9BTFBIQV9CSVRTOiAqcGFyYW1zID0gY29sb3JidWZm
ZXItPmdldEFscGhhU2l6ZSgpOyAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
KnBhcmFtcyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX0RFUFRIX0JJVFM6CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpGcmFt
ZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAg
IGdsOjpSZW5kZXJidWZmZXIgKmRlcHRoYnVmZmVyID0gZnJhbWVidWZmZXItPmdldERlcHRoYnVm
ZmVyKCk7CisKKyAgICAgICAgICAgIGlmIChkZXB0aGJ1ZmZlcikKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAqcGFyYW1zID0gZGVwdGhidWZmZXItPmdldERlcHRoU2l6ZSgpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICpwYXJhbXMgPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JJVFM6CisgICAgICAgIHsKKyAgICAgICAgICAgIGds
OjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICAg
ICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKnN0ZW5jaWxidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0
U3RlbmNpbGJ1ZmZlcigpOworCisgICAgICAgICAgICBpZiAoc3RlbmNpbGJ1ZmZlcikKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gc3RlbmNpbGJ1ZmZlci0+Z2V0U3Rl
bmNpbFNpemUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HXzJEOgorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAobVN0YXRlLmFjdGl2ZVNhbXBsZXIgPiBtUmVuZGVyZXIt
PmdldE1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKSAtIDEpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICpwYXJh
bXMgPSBtU3RhdGUuc2FtcGxlclRleHR1cmVbVEVYVFVSRV8yRF1bbVN0YXRlLmFjdGl2ZVNhbXBs
ZXJdLmlkKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RFWFRV
UkVfQklORElOR19DVUJFX01BUDoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1TdGF0ZS5h
Y3RpdmVTYW1wbGVyID4gbVJlbmRlcmVyLT5nZXRNYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRz
KCkgLSAxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnNhbXBsZXJUZXh0dXJlW1RFWFRV
UkVfQ1VCRV1bbVN0YXRlLmFjdGl2ZVNhbXBsZXJdLmlkKCk7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQ6Cisg
ICAgICAgICpwYXJhbXMgPSBtUmVzZXRTdHJhdGVneTsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09FUzoKKyAgICAgICAgKnBhcmFtcyA9
IDE7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRT
X09FUzoKKyAgICAgICAgKnBhcmFtcyA9IEdMX1BST0dSQU1fQklOQVJZX0FOR0xFOworICAgICAg
ICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlcklu
Zm8oR0xlbnVtIHBuYW1lLCBHTGVudW0gKnR5cGUsIHVuc2lnbmVkIGludCAqbnVtUGFyYW1zKQor
eworICAgIGlmIChwbmFtZSA+PSBHTF9EUkFXX0JVRkZFUjBfRVhUICYmIHBuYW1lIDw9IEdMX0RS
QVdfQlVGRkVSMTVfRVhUKQorICAgIHsKKyAgICAgICAgKnR5cGUgPSBHTF9JTlQ7CisgICAgICAg
ICpudW1QYXJhbXMgPSAxOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBQ
bGVhc2Ugbm90ZTogdGhlIHF1ZXJ5IHR5cGUgcmV0dXJuZWQgZm9yIERFUFRIX0NMRUFSX1ZBTFVF
IGluIHRoaXMgaW1wbGVtZW50YXRpb24KKyAgICAvLyBpcyBGTE9BVCByYXRoZXIgdGhhbiBJTlQs
IGFzIHdvdWxkIGJlIHN1Z2dlc3RlZCBieSB0aGUgR0wgRVMgMi4wIHNwZWMuIFRoaXMgaXMgZHVl
CisgICAgLy8gdG8gdGhlIGZhY3QgdGhhdCBpdCBpcyBzdG9yZWQgaW50ZXJuYWxseSBhcyBhIGZs
b2F0LCBhbmQgc28gd291bGQgcmVxdWlyZSBjb252ZXJzaW9uCisgICAgLy8gaWYgcmV0dXJuZWQg
ZnJvbSBDb250ZXh0OjpnZXRJbnRlZ2Vydi4gU2luY2UgdGhpcyBjb252ZXJzaW9uIGlzIGFscmVh
ZHkgaW1wbGVtZW50ZWQgCisgICAgLy8gaW4gdGhlIGNhc2UgdGhhdCBvbmUgY2FsbHMgZ2xHZXRJ
bnRlZ2VydiB0byByZXRyaWV2ZSBhIGZsb2F0LXR5cGVkIHN0YXRlIHZhcmlhYmxlLCB3ZQorICAg
IC8vIHBsYWNlIERFUFRIX0NMRUFSX1ZBTFVFIHdpdGggdGhlIGZsb2F0cy4gVGhpcyBzaG91bGQg
bWFrZSBubyBkaWZmZXJlbmNlIHRvIHRoZSBjYWxsaW5nCisgICAgLy8gYXBwbGljYXRpb24uCisg
ICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfVEVYVFVS
RV9GT1JNQVRTOgorICAgICAgICB7CisgICAgICAgICAgICAqdHlwZSA9IEdMX0lOVDsKKyAgICAg
ICAgICAgICpudW1QYXJhbXMgPSBtTnVtQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRzOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFM6
CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlID0gR0xfSU5UOworICAgICAgICAgICAgKm51
bVBhcmFtcyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01B
WF9WRVJURVhfQVRUUklCUzoKKyAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RP
UlM6CisgICAgICBjYXNlIEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlM6CisgICAgICBjYXNlIEdMX01B
WF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTOgorICAgICAgY2FzZSBHTF9NQVhfVkVSVEVY
X1RFWFRVUkVfSU1BR0VfVU5JVFM6CisgICAgICBjYXNlIEdMX01BWF9URVhUVVJFX0lNQUdFX1VO
SVRTOgorICAgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOgorICAgICAg
Y2FzZSBHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkU6CisgICAgICBjYXNlIEdMX01BWF9DT0xPUl9B
VFRBQ0hNRU5UU19FWFQ6CisgICAgICBjYXNlIEdMX01BWF9EUkFXX0JVRkZFUlNfRVhUOgorICAg
ICAgY2FzZSBHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTOgorICAgICAgY2FzZSBHTF9OVU1f
Q09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6CisgICAgICBjYXNlIEdMX0FSUkFZX0JVRkZFUl9C
SU5ESU5HOgorICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9CSU5ESU5HOgorICAgICAgY2FzZSBH
TF9SRU5ERVJCVUZGRVJfQklORElORzoKKyAgICAgIGNhc2UgR0xfQ1VSUkVOVF9QUk9HUkFNOgor
ICAgICAgY2FzZSBHTF9QQUNLX0FMSUdOTUVOVDoKKyAgICAgIGNhc2UgR0xfUEFDS19SRVZFUlNF
X1JPV19PUkRFUl9BTkdMRToKKyAgICAgIGNhc2UgR0xfVU5QQUNLX0FMSUdOTUVOVDoKKyAgICAg
IGNhc2UgR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQ6CisgICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NI
QURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTOgorICAgICAgY2FzZSBHTF9SRURfQklUUzoKKyAgICAg
IGNhc2UgR0xfR1JFRU5fQklUUzoKKyAgICAgIGNhc2UgR0xfQkxVRV9CSVRTOgorICAgICAgY2Fz
ZSBHTF9BTFBIQV9CSVRTOgorICAgICAgY2FzZSBHTF9ERVBUSF9CSVRTOgorICAgICAgY2FzZSBH
TF9TVEVOQ0lMX0JJVFM6CisgICAgICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJ
Tkc6CisgICAgICBjYXNlIEdMX0NVTExfRkFDRV9NT0RFOgorICAgICAgY2FzZSBHTF9GUk9OVF9G
QUNFOgorICAgICAgY2FzZSBHTF9BQ1RJVkVfVEVYVFVSRToKKyAgICAgIGNhc2UgR0xfU1RFTkNJ
TF9GVU5DOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX1ZBTFVFX01BU0s6CisgICAgICBjYXNlIEdM
X1NURU5DSUxfUkVGOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0ZBSUw6CisgICAgICBjYXNlIEdM
X1NURU5DSUxfUEFTU19ERVBUSF9GQUlMOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX1BBU1NfREVQ
VEhfUEFTUzoKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX0ZVTkM6CisgICAgICBjYXNlIEdM
X1NURU5DSUxfQkFDS19WQUxVRV9NQVNLOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfUkVG
OgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfRkFJTDoKKyAgICAgIGNhc2UgR0xfU1RFTkNJ
TF9CQUNLX1BBU1NfREVQVEhfRkFJTDoKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1BBU1Nf
REVQVEhfUEFTUzoKKyAgICAgIGNhc2UgR0xfREVQVEhfRlVOQzoKKyAgICAgIGNhc2UgR0xfQkxF
TkRfU1JDX1JHQjoKKyAgICAgIGNhc2UgR0xfQkxFTkRfU1JDX0FMUEhBOgorICAgICAgY2FzZSBH
TF9CTEVORF9EU1RfUkdCOgorICAgICAgY2FzZSBHTF9CTEVORF9EU1RfQUxQSEE6CisgICAgICBj
YXNlIEdMX0JMRU5EX0VRVUFUSU9OX1JHQjoKKyAgICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJT05f
QUxQSEE6CisgICAgICBjYXNlIEdMX1NURU5DSUxfV1JJVEVNQVNLOgorICAgICAgY2FzZSBHTF9T
VEVOQ0lMX0JBQ0tfV1JJVEVNQVNLOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVF
OgorICAgICAgY2FzZSBHTF9TVUJQSVhFTF9CSVRTOgorICAgICAgY2FzZSBHTF9NQVhfVEVYVFVS
RV9TSVpFOgorICAgICAgY2FzZSBHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgorICAgICAg
Y2FzZSBHTF9TQU1QTEVfQlVGRkVSUzoKKyAgICAgIGNhc2UgR0xfU0FNUExFUzoKKyAgICAgIGNh
c2UgR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFOgorICAgICAgY2FzZSBHTF9JTVBM
RU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVDoKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5E
SU5HXzJEOgorICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVA6CisgICAgICBj
YXNlIEdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQ6CisgICAgICBjYXNlIEdMX05V
TV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09FUzoKKyAgICAgIGNhc2UgR0xfUFJPR1JBTV9CSU5B
UllfRk9STUFUU19PRVM6CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlID0gR0xfSU5UOwor
ICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX01BWF9TQU1QTEVTX0FOR0xFOgorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoZ2V0TWF4U3VwcG9ydGVkU2FtcGxlcygpICE9IDApCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgKnR5cGUgPSBHTF9JTlQ7CisgICAgICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfVklFV1BPUlRfRElNUzoKKyAgICAgICAgeworICAg
ICAgICAgICAgKnR5cGUgPSBHTF9JTlQ7CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gMjsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVklFV1BPUlQ6CisgICAgICBj
YXNlIEdMX1NDSVNTT1JfQk9YOgorICAgICAgICB7CisgICAgICAgICAgICAqdHlwZSA9IEdMX0lO
VDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSA0OworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9TSEFERVJfQ09NUElMRVI6CisgICAgICBjYXNlIEdMX1NBTVBMRV9D
T1ZFUkFHRV9JTlZFUlQ6CisgICAgICBjYXNlIEdMX0RFUFRIX1dSSVRFTUFTSzoKKyAgICAgIGNh
c2UgR0xfQ1VMTF9GQUNFOiAgICAgICAgICAgICAgICAvLyBDVUxMX0ZBQ0UgdGhyb3VnaCBESVRI
RVIgYXJlIG5hdHVyYWwgdG8gSXNFbmFibGVkLAorICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNF
VF9GSUxMOiAgICAgIC8vIGJ1dCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIEdldHtUeXBl
fXYgcXVlcmllcy4KKyAgICAgIGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOiAvLyBG
b3IgdGhpcyBwdXJwb3NlLCB0aGV5IGFyZSB0cmVhdGVkIGhlcmUgYXMgYm9vbC1uYXR1cmFsCisg
ICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRToKKyAgICAgIGNhc2UgR0xfU0NJU1NPUl9URVNU
OgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX1RFU1Q6CisgICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6
CisgICAgICBjYXNlIEdMX0JMRU5EOgorICAgICAgY2FzZSBHTF9ESVRIRVI6CisgICAgICBjYXNl
IEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTU19FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgICp0
eXBlID0gR0xfQk9PTDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9DT0xPUl9XUklURU1BU0s6CisgICAgICAgIHsK
KyAgICAgICAgICAgICp0eXBlID0gR0xfQk9PTDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSA0
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNF
VF9GQUNUT1I6CisgICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VUX1VOSVRTOgorICAgICAgY2Fz
ZSBHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUU6CisgICAgICBjYXNlIEdMX0RFUFRIX0NMRUFSX1ZB
TFVFOgorICAgICAgY2FzZSBHTF9MSU5FX1dJRFRIOgorICAgICAgICB7CisgICAgICAgICAgICAq
dHlwZSA9IEdMX0ZMT0FUOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRToK
KyAgICAgIGNhc2UgR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFOgorICAgICAgY2FzZSBHTF9E
RVBUSF9SQU5HRToKKyAgICAgICAgeworICAgICAgICAgICAgKnR5cGUgPSBHTF9GTE9BVDsKKyAg
ICAgICAgICAgICpudW1QYXJhbXMgPSAyOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9DT0xPUl9DTEVBUl9WQUxVRToKKyAgICAgIGNhc2UgR0xfQkxFTkRfQ09MT1I6
CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlID0gR0xfRkxPQVQ7CisgICAgICAgICAgICAq
bnVtUGFyYW1zID0gNDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
TUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOgorICAgICAgICBpZiAoIXN1cHBvcnRzVGV4
dHVyZUZpbHRlckFuaXNvdHJvcHkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgICAgICp0eXBlID0gR0xfRkxPQVQ7CisgICAgICAgICpudW1Q
YXJhbXMgPSAxOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gQXBwbGllcyB0aGUg
cmVuZGVyIHRhcmdldCBzdXJmYWNlLCBkZXB0aCBzdGVuY2lsIHN1cmZhY2UsIHZpZXdwb3J0IHJl
Y3RhbmdsZSBhbmQKKy8vIHNjaXNzb3IgcmVjdGFuZ2xlIHRvIHRoZSByZW5kZXJlcgorYm9vbCBD
b250ZXh0OjphcHBseVJlbmRlclRhcmdldChHTGVudW0gZHJhd01vZGUsIGJvb2wgaWdub3JlVmll
d3BvcnQpCit7CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0gZ2V0RHJhd0Zy
YW1lYnVmZmVyKCk7CisKKyAgICBpZiAoIWZyYW1lYnVmZmVyT2JqZWN0IHx8IGZyYW1lYnVmZmVy
T2JqZWN0LT5jb21wbGV0ZW5lc3MoKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICB7
CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJ
T04sIGZhbHNlKTsKKyAgICB9CisKKyAgICBtUmVuZGVyZXItPmFwcGx5UmVuZGVyVGFyZ2V0KGZy
YW1lYnVmZmVyT2JqZWN0KTsKKworICAgIGlmICghbVJlbmRlcmVyLT5zZXRWaWV3cG9ydChtU3Rh
dGUudmlld3BvcnQsIG1TdGF0ZS56TmVhciwgbVN0YXRlLnpGYXIsIGRyYXdNb2RlLCBtU3RhdGUu
cmFzdGVyaXplci5mcm9udEZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGln
bm9yZVZpZXdwb3J0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBtUmVuZGVyZXItPnNldFNjaXNzb3JSZWN0YW5nbGUobVN0YXRlLnNjaXNzb3IsIG1TdGF0ZS5z
Y2lzc29yVGVzdCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gQXBwbGllcyB0aGUgZml4
ZWQtZnVuY3Rpb24gc3RhdGUgKGN1bGxpbmcsIGRlcHRoIHRlc3QsIGFscGhhIGJsZW5kaW5nLCBz
dGVuY2lsaW5nLCBldGMpIHRvIHRoZSBEaXJlY3QzRCA5IGRldmljZQordm9pZCBDb250ZXh0Ojph
cHBseVN0YXRlKEdMZW51bSBkcmF3TW9kZSkKK3sKKyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZm
ZXJPYmplY3QgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICBpbnQgc2FtcGxlcyA9IGZyYW1l
YnVmZmVyT2JqZWN0LT5nZXRTYW1wbGVzKCk7CisKKyAgICBtU3RhdGUucmFzdGVyaXplci5wb2lu
dERyYXdNb2RlID0gKGRyYXdNb2RlID09IEdMX1BPSU5UUyk7CisgICAgbVN0YXRlLnJhc3Rlcml6
ZXIubXVsdGlTYW1wbGUgPSAoc2FtcGxlcyAhPSAwKTsKKyAgICBtUmVuZGVyZXItPnNldFJhc3Rl
cml6ZXJTdGF0ZShtU3RhdGUucmFzdGVyaXplcik7CisKKyAgICB1bnNpZ25lZCBpbnQgbWFzayA9
IDA7CisgICAgaWYgKG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZSkKKyAgICB7CisgICAgICAgIGlmICht
U3RhdGUuc2FtcGxlQ292ZXJhZ2VWYWx1ZSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGZsb2F0IHRocmVzaG9sZCA9IDAuNWY7CisKKyAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgc2FtcGxlczsgKytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG1hc2sgPDw9IDE7CisKKyAgICAgICAgICAgICAgICBpZiAoKGkgKyAxKSAqIG1TdGF0ZS5z
YW1wbGVDb3ZlcmFnZVZhbHVlID49IHRocmVzaG9sZCkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHRocmVzaG9sZCArPSAxLjBmOworICAgICAgICAgICAgICAgICAgICBt
YXNrIHw9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgaWYgKG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZUludmVydCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbWFzayA9IH5tYXNrOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIG1hc2sgPSAweEZGRkZGRkZGOworICAgIH0KKyAgICBtUmVuZGVyZXItPnNldEJs
ZW5kU3RhdGUobVN0YXRlLmJsZW5kLCBtU3RhdGUuYmxlbmRDb2xvciwgbWFzayk7CisKKyAgICBt
UmVuZGVyZXItPnNldERlcHRoU3RlbmNpbFN0YXRlKG1TdGF0ZS5kZXB0aFN0ZW5jaWwsIG1TdGF0
ZS5zdGVuY2lsUmVmLCBtU3RhdGUuc3RlbmNpbEJhY2tSZWYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtU3RhdGUucmFzdGVyaXplci5mcm9udEZhY2UgPT0gR0xfQ0NXKTsK
K30KKworLy8gQXBwbGllcyB0aGUgc2hhZGVycyBhbmQgc2hhZGVyIGNvbnN0YW50cyB0byB0aGUg
RGlyZWN0M0QgOSBkZXZpY2UKK3ZvaWQgQ29udGV4dDo6YXBwbHlTaGFkZXJzKCkKK3sKKyAgICBQ
cm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gZ2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsK
KworICAgIG1SZW5kZXJlci0+YXBwbHlTaGFkZXJzKHByb2dyYW1CaW5hcnkpOworICAgIAorICAg
IHByb2dyYW1CaW5hcnktPmFwcGx5VW5pZm9ybXMoKTsKK30KKworLy8gQXBwbGllcyB0aGUgdGV4
dHVyZXMgYW5kIHNhbXBsZXIgc3RhdGVzIHRvIHRoZSBEaXJlY3QzRCA5IGRldmljZQordm9pZCBD
b250ZXh0OjphcHBseVRleHR1cmVzKCkKK3sKKyAgICBhcHBseVRleHR1cmVzKFNBTVBMRVJfUElY
RUwpOworCisgICAgaWYgKG1TdXBwb3J0c1ZlcnRleFRleHR1cmUpCisgICAgeworICAgICAgICBh
cHBseVRleHR1cmVzKFNBTVBMRVJfVkVSVEVYKTsKKyAgICB9Cit9CisKKy8vIEZvciBlYWNoIERp
cmVjdDNEIDkgc2FtcGxlciBvZiBlaXRoZXIgdGhlIHBpeGVsIG9yIHZlcnRleCBzdGFnZSwKKy8v
IGxvb2tzIHVwIHRoZSBjb3JyZXNwb25kaW5nIE9wZW5HTCB0ZXh0dXJlIGltYWdlIHVuaXQgYW5k
IHRleHR1cmUgdHlwZSwKKy8vIGFuZCBzZXRzIHRoZSB0ZXh0dXJlIGFuZCBpdHMgYWRkcmVzc2lu
Zy9maWx0ZXJpbmcgc3RhdGUgKG9yIE5VTEwgd2hlbiBpbmFjdGl2ZSkuCit2b2lkIENvbnRleHQ6
OmFwcGx5VGV4dHVyZXMoU2FtcGxlclR5cGUgdHlwZSkKK3sKKyAgICBQcm9ncmFtQmluYXJ5ICpw
cm9ncmFtQmluYXJ5ID0gZ2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKworICAgIC8vIFJhbmdl
IG9mIERpcmVjdDNEIHNhbXBsZXJzIG9mIGdpdmVuIHNhbXBsZXIgdHlwZQorICAgIGludCBzYW1w
bGVyQ291bnQgPSAodHlwZSA9PSBTQU1QTEVSX1BJWEVMKSA/IE1BWF9URVhUVVJFX0lNQUdFX1VO
SVRTIDogbVJlbmRlcmVyLT5nZXRNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpOworICAgIGlu
dCBzYW1wbGVyUmFuZ2UgPSBwcm9ncmFtQmluYXJ5LT5nZXRVc2VkU2FtcGxlclJhbmdlKHR5cGUp
OworCisgICAgZm9yIChpbnQgc2FtcGxlckluZGV4ID0gMDsgc2FtcGxlckluZGV4IDwgc2FtcGxl
clJhbmdlOyBzYW1wbGVySW5kZXgrKykKKyAgICB7CisgICAgICAgIGludCB0ZXh0dXJlVW5pdCA9
IHByb2dyYW1CaW5hcnktPmdldFNhbXBsZXJNYXBwaW5nKHR5cGUsIHNhbXBsZXJJbmRleCk7ICAg
Ly8gT3BlbkdMIHRleHR1cmUgaW1hZ2UgdW5pdCBpbmRleAorCisgICAgICAgIGlmICh0ZXh0dXJl
VW5pdCAhPSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGV4dHVyZVR5
cGUgPSBwcm9ncmFtQmluYXJ5LT5nZXRTYW1wbGVyVGV4dHVyZVR5cGUodHlwZSwgc2FtcGxlcklu
ZGV4KTsKKyAgICAgICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBnZXRTYW1wbGVyVGV4dHVyZSh0
ZXh0dXJlVW5pdCwgdGV4dHVyZVR5cGUpOworCisgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNT
YW1wbGVyQ29tcGxldGUoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBTYW1wbGVy
U3RhdGUgc2FtcGxlclN0YXRlOworICAgICAgICAgICAgICAgIHRleHR1cmUtPmdldFNhbXBsZXJT
dGF0ZSgmc2FtcGxlclN0YXRlKTsKKyAgICAgICAgICAgICAgICBtUmVuZGVyZXItPnNldFNhbXBs
ZXJTdGF0ZSh0eXBlLCBzYW1wbGVySW5kZXgsIHNhbXBsZXJTdGF0ZSk7CisKKyAgICAgICAgICAg
ICAgICBtUmVuZGVyZXItPnNldFRleHR1cmUodHlwZSwgc2FtcGxlckluZGV4LCB0ZXh0dXJlKTsK
KworICAgICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0RGlydHkoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtUmVuZGVy
ZXItPnNldFRleHR1cmUodHlwZSwgc2FtcGxlckluZGV4LCBnZXRJbmNvbXBsZXRlVGV4dHVyZSh0
ZXh0dXJlVHlwZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgbVJlbmRlcmVyLT5zZXRUZXh0dXJlKHR5cGUsIHNhbXBsZXJJ
bmRleCwgTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGludCBzYW1wbGVySW5k
ZXggPSBzYW1wbGVyUmFuZ2U7IHNhbXBsZXJJbmRleCA8IHNhbXBsZXJDb3VudDsgc2FtcGxlcklu
ZGV4KyspCisgICAgeworICAgICAgICBtUmVuZGVyZXItPnNldFRleHR1cmUodHlwZSwgc2FtcGxl
ckluZGV4LCBOVUxMKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVhZFBpeGVscyhHTGlu
dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSAqYnVmU2l6
ZSwgdm9pZCogcGl4ZWxzKQoreworICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGdldFJl
YWRGcmFtZWJ1ZmZlcigpOworCisgICAgaWYgKGZyYW1lYnVmZmVyLT5jb21wbGV0ZW5lc3MoKSAh
PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOworICAgIH0KKworICAgIGlmIChn
ZXRSZWFkRnJhbWVidWZmZXJIYW5kbGUoKSAhPSAwICYmIGZyYW1lYnVmZmVyLT5nZXRTYW1wbGVz
KCkgIT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgIH0KKworICAgIEdMc2l6ZWkgb3V0cHV0UGl0Y2ggPSBDb21wdXRlUGl0Y2go
d2lkdGgsIENvbnZlcnRTaXplZEludGVybmFsRm9ybWF0KGZvcm1hdCwgdHlwZSksIGdldFBhY2tB
bGlnbm1lbnQoKSk7CisgICAgLy8gc2l6ZWQgcXVlcnkgc2FuaXR5IGNoZWNrCisgICAgaWYgKGJ1
ZlNpemUpCisgICAgeworICAgICAgICBpbnQgcmVxdWlyZWRTaXplID0gb3V0cHV0UGl0Y2ggKiBo
ZWlnaHQ7CisgICAgICAgIGlmIChyZXF1aXJlZFNpemUgPiAqYnVmU2l6ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBtUmVuZGVyZXItPnJlYWRQaXhlbHMoZnJhbWVidWZmZXIsIHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgb3V0cHV0UGl0Y2gsIGdldFBhY2tSZXZl
cnNlUm93T3JkZXIoKSwgZ2V0UGFja0FsaWdubWVudCgpLCBwaXhlbHMpOworfQorCit2b2lkIENv
bnRleHQ6OmNsZWFyKEdMYml0ZmllbGQgbWFzaykKK3sKKyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVi
dWZmZXJPYmplY3QgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKworICAgIGlmICghZnJhbWVidWZm
ZXJPYmplY3QgfHwgZnJhbWVidWZmZXJPYmplY3QtPmNvbXBsZXRlbmVzcygpICE9IEdMX0ZSQU1F
QlVGRkVSX0NPTVBMRVRFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTik7CisgICAgfQorCisgICAgRFdPUkQgZmxhZ3MgPSAw
OworICAgIEdMYml0ZmllbGQgZmluYWxNYXNrID0gMDsKKworICAgIGlmIChtYXNrICYgR0xfQ09M
T1JfQlVGRkVSX0JJVCkKKyAgICB7CisgICAgICAgIG1hc2sgJj0gfkdMX0NPTE9SX0JVRkZFUl9C
SVQ7CisKKyAgICAgICAgaWYgKGZyYW1lYnVmZmVyT2JqZWN0LT5oYXNFbmFibGVkQ29sb3JBdHRh
Y2htZW50KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbmFsTWFzayB8PSBHTF9DT0xPUl9C
VUZGRVJfQklUOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1hc2sgJiBHTF9ERVBUSF9C
VUZGRVJfQklUKQorICAgIHsKKyAgICAgICAgbWFzayAmPSB+R0xfREVQVEhfQlVGRkVSX0JJVDsK
KyAgICAgICAgaWYgKG1TdGF0ZS5kZXB0aFN0ZW5jaWwuZGVwdGhNYXNrICYmIGZyYW1lYnVmZmVy
T2JqZWN0LT5nZXREZXB0aGJ1ZmZlclR5cGUoKSAhPSBHTF9OT05FKQorICAgICAgICB7CisgICAg
ICAgICAgICBmaW5hbE1hc2sgfD0gR0xfREVQVEhfQlVGRkVSX0JJVDsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmIChtYXNrICYgR0xfU1RFTkNJTF9CVUZGRVJfQklUKQorICAgIHsKKyAgICAg
ICAgbWFzayAmPSB+R0xfU1RFTkNJTF9CVUZGRVJfQklUOworICAgICAgICBpZiAoZnJhbWVidWZm
ZXJPYmplY3QtPmdldFN0ZW5jaWxidWZmZXJUeXBlKCkgIT0gR0xfTk9ORSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcng6OlJlbmRlclRhcmdldCAqZGVwdGhTdGVuY2lsID0gZnJhbWVidWZmZXJP
YmplY3QtPmdldFN0ZW5jaWxidWZmZXIoKS0+Z2V0RGVwdGhTdGVuY2lsKCk7CisgICAgICAgICAg
ICBpZiAoIWRlcHRoU3RlbmNpbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFUlIo
IkRlcHRoIHN0ZW5jaWwgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChHZXRTdGVuY2ls
U2l6ZShkZXB0aFN0ZW5jaWwtPmdldEFjdHVhbEZvcm1hdCgpKSA+IDApCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZmluYWxNYXNrIHw9IEdMX1NURU5DSUxfQlVGRkVSX0JJVDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtYXNrICE9IDApCisgICAg
eworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgIH0KKwor
ICAgIGlmICghYXBwbHlSZW5kZXJUYXJnZXQoR0xfVFJJQU5HTEVTLCB0cnVlKSkgICAvLyBDbGlw
cyB0aGUgY2xlYXIgdG8gdGhlIHNjaXNzb3IgcmVjdGFuZ2xlIGJ1dCBub3QgdGhlIHZpZXdwb3J0
CisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2xlYXJQYXJhbWV0ZXJzIGNs
ZWFyUGFyYW1zOworICAgIGNsZWFyUGFyYW1zLm1hc2sgPSBmaW5hbE1hc2s7CisgICAgY2xlYXJQ
YXJhbXMuY29sb3JDbGVhclZhbHVlID0gbVN0YXRlLmNvbG9yQ2xlYXJWYWx1ZTsKKyAgICBjbGVh
clBhcmFtcy5jb2xvck1hc2tSZWQgPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrUmVkOworICAgIGNs
ZWFyUGFyYW1zLmNvbG9yTWFza0dyZWVuID0gbVN0YXRlLmJsZW5kLmNvbG9yTWFza0dyZWVuOwor
ICAgIGNsZWFyUGFyYW1zLmNvbG9yTWFza0JsdWUgPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQmx1
ZTsKKyAgICBjbGVhclBhcmFtcy5jb2xvck1hc2tBbHBoYSA9IG1TdGF0ZS5ibGVuZC5jb2xvck1h
c2tBbHBoYTsKKyAgICBjbGVhclBhcmFtcy5kZXB0aENsZWFyVmFsdWUgPSBtU3RhdGUuZGVwdGhD
bGVhclZhbHVlOworICAgIGNsZWFyUGFyYW1zLnN0ZW5jaWxDbGVhclZhbHVlID0gbVN0YXRlLnN0
ZW5jaWxDbGVhclZhbHVlOworICAgIGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1hc2sgPSBtU3Rh
dGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxXcml0ZW1hc2s7CisKKyAgICBtUmVuZGVyZXItPmNsZWFy
KGNsZWFyUGFyYW1zLCBmcmFtZWJ1ZmZlck9iamVjdCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZHJh
d0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkg
aW5zdGFuY2VzKQoreworICAgIGlmICghbVN0YXRlLmN1cnJlbnRQcm9ncmFtKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisg
ICAgaWYgKCFtUmVuZGVyZXItPmFwcGx5UHJpbWl0aXZlVHlwZShtb2RlLCBjb3VudCkpCisgICAg
eworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFhcHBseVJlbmRlclRhcmdldCht
b2RlLCBmYWxzZSkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXBwbHlT
dGF0ZShtb2RlKTsKKworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBnZXRDdXJy
ZW50UHJvZ3JhbUJpbmFyeSgpOworCisgICAgR0xlbnVtIGVyciA9IG1SZW5kZXJlci0+YXBwbHlW
ZXJ0ZXhCdWZmZXIocHJvZ3JhbUJpbmFyeSwgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZSwgZmlyc3Qs
IGNvdW50LCBpbnN0YW5jZXMpOworICAgIGlmIChlcnIgIT0gR0xfTk9fRVJST1IpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKGVycik7CisgICAgfQorCisgICAgYXBwbHlTaGFkZXJz
KCk7CisgICAgYXBwbHlUZXh0dXJlcygpOworCisgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT52YWxp
ZGF0ZVNhbXBsZXJzKE5VTEwpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisgICAgaWYgKCFza2lwRHJhdyhtb2RlKSkKKyAg
ICB7CisgICAgICAgIG1SZW5kZXJlci0+ZHJhd0FycmF5cyhtb2RlLCBjb3VudCwgaW5zdGFuY2Vz
KTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBH
THNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBHTHNpemVp
IGluc3RhbmNlcykKK3sKKyAgICBpZiAoIW1TdGF0ZS5jdXJyZW50UHJvZ3JhbSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKwor
ICAgIGlmICghaW5kaWNlcyAmJiAhbVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZlcikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKyAg
ICAKKyAgICBpZiAoIW1SZW5kZXJlci0+YXBwbHlQcmltaXRpdmVUeXBlKG1vZGUsIGNvdW50KSkK
KyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWFwcGx5UmVuZGVyVGFy
Z2V0KG1vZGUsIGZhbHNlKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
cHBseVN0YXRlKG1vZGUpOworCisgICAgcng6OlRyYW5zbGF0ZWRJbmRleERhdGEgaW5kZXhJbmZv
OworICAgIEdMZW51bSBlcnIgPSBtUmVuZGVyZXItPmFwcGx5SW5kZXhCdWZmZXIoaW5kaWNlcywg
bVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZlci5nZXQoKSwgY291bnQsIG1vZGUsIHR5cGUsICZpbmRl
eEluZm8pOworICAgIGlmIChlcnIgIT0gR0xfTk9fRVJST1IpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKGVycik7CisgICAgfQorCisgICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJp
bmFyeSA9IGdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7CisKKyAgICBHTHNpemVpIHZlcnRleENv
dW50ID0gaW5kZXhJbmZvLm1heEluZGV4IC0gaW5kZXhJbmZvLm1pbkluZGV4ICsgMTsKKyAgICBl
cnIgPSBtUmVuZGVyZXItPmFwcGx5VmVydGV4QnVmZmVyKHByb2dyYW1CaW5hcnksIG1TdGF0ZS52
ZXJ0ZXhBdHRyaWJ1dGUsIGluZGV4SW5mby5taW5JbmRleCwgdmVydGV4Q291bnQsIGluc3RhbmNl
cyk7CisgICAgaWYgKGVyciAhPSBHTF9OT19FUlJPUikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoZXJyKTsKKyAgICB9CisKKyAgICBhcHBseVNoYWRlcnMoKTsKKyAgICBhcHBseVRl
eHR1cmVzKCk7CisKKyAgICBpZiAoIXByb2dyYW1CaW5hcnktPnZhbGlkYXRlU2FtcGxlcnMoTlVM
TCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKKyAgICB9CisKKyAgICBpZiAoIXNraXBEcmF3KG1vZGUpKQorICAgIHsKKyAgICAgICAgbVJl
bmRlcmVyLT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIG1TdGF0ZS5l
bGVtZW50QXJyYXlCdWZmZXIuZ2V0KCksIGluZGV4SW5mbywgaW5zdGFuY2VzKTsKKyAgICB9Cit9
CisKKy8vIEltcGxlbWVudHMgZ2xGbHVzaCB3aGVuIGJsb2NrIGlzIGZhbHNlLCBnbEZpbmlzaCB3
aGVuIGJsb2NrIGlzIHRydWUKK3ZvaWQgQ29udGV4dDo6c3luYyhib29sIGJsb2NrKQoreworICAg
IG1SZW5kZXJlci0+c3luYyhibG9jayk7Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVjb3JkSW52YWxp
ZEVudW0oKQoreworICAgIG1JbnZhbGlkRW51bSA9IHRydWU7Cit9CisKK3ZvaWQgQ29udGV4dDo6
cmVjb3JkSW52YWxpZFZhbHVlKCkKK3sKKyAgICBtSW52YWxpZFZhbHVlID0gdHJ1ZTsKK30KKwor
dm9pZCBDb250ZXh0OjpyZWNvcmRJbnZhbGlkT3BlcmF0aW9uKCkKK3sKKyAgICBtSW52YWxpZE9w
ZXJhdGlvbiA9IHRydWU7Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVjb3JkT3V0T2ZNZW1vcnkoKQor
eworICAgIG1PdXRPZk1lbW9yeSA9IHRydWU7Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVjb3JkSW52
YWxpZEZyYW1lYnVmZmVyT3BlcmF0aW9uKCkKK3sKKyAgICBtSW52YWxpZEZyYW1lYnVmZmVyT3Bl
cmF0aW9uID0gdHJ1ZTsKK30KKworLy8gR2V0IG9uZSBvZiB0aGUgcmVjb3JkZWQgZXJyb3JzIGFu
ZCBjbGVhciBpdHMgZmxhZywgaWYgYW55LgorLy8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24g
Mi41IHBhZ2UgMTMuCitHTGVudW0gQ29udGV4dDo6Z2V0RXJyb3IoKQoreworICAgIGlmIChtSW52
YWxpZEVudW0pCisgICAgeworICAgICAgICBtSW52YWxpZEVudW0gPSBmYWxzZTsKKworICAgICAg
ICByZXR1cm4gR0xfSU5WQUxJRF9FTlVNOworICAgIH0KKworICAgIGlmIChtSW52YWxpZFZhbHVl
KQorICAgIHsKKyAgICAgICAgbUludmFsaWRWYWx1ZSA9IGZhbHNlOworCisgICAgICAgIHJldHVy
biBHTF9JTlZBTElEX1ZBTFVFOworICAgIH0KKworICAgIGlmIChtSW52YWxpZE9wZXJhdGlvbikK
KyAgICB7CisgICAgICAgIG1JbnZhbGlkT3BlcmF0aW9uID0gZmFsc2U7CisKKyAgICAgICAgcmV0
dXJuIEdMX0lOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIGlmIChtT3V0T2ZNZW1vcnkp
CisgICAgeworICAgICAgICBtT3V0T2ZNZW1vcnkgPSBmYWxzZTsKKworICAgICAgICByZXR1cm4g
R0xfT1VUX09GX01FTU9SWTsKKyAgICB9CisKKyAgICBpZiAobUludmFsaWRGcmFtZWJ1ZmZlck9w
ZXJhdGlvbikKKyAgICB7CisgICAgICAgIG1JbnZhbGlkRnJhbWVidWZmZXJPcGVyYXRpb24gPSBm
YWxzZTsKKworICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT047
CisgICAgfQorCisgICAgcmV0dXJuIEdMX05PX0VSUk9SOworfQorCitHTGVudW0gQ29udGV4dDo6
Z2V0UmVzZXRTdGF0dXMoKQoreworICAgIGlmIChtUmVzZXRTdGF0dXMgPT0gR0xfTk9fRVJST1Ig
JiYgIW1Db250ZXh0TG9zdCkKKyAgICB7CisgICAgICAgIC8vIG1SZXNldFN0YXR1cyB3aWxsIGJl
IHNldCBieSB0aGUgbWFya0NvbnRleHRMb3N0IGNhbGxiYWNrCisgICAgICAgIC8vIGluIHRoZSBj
YXNlIGEgbm90aWZpY2F0aW9uIGlzIHNlbnQKKyAgICAgICAgbVJlbmRlcmVyLT50ZXN0RGV2aWNl
TG9zdCh0cnVlKTsKKyAgICB9CisKKyAgICBHTGVudW0gc3RhdHVzID0gbVJlc2V0U3RhdHVzOwor
CisgICAgaWYgKG1SZXNldFN0YXR1cyAhPSBHTF9OT19FUlJPUikKKyAgICB7CisgICAgICAgIEFT
U0VSVChtQ29udGV4dExvc3QpOworCisgICAgICAgIGlmIChtUmVuZGVyZXItPnRlc3REZXZpY2VS
ZXNldHRhYmxlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1SZXNldFN0YXR1cyA9IEdMX05P
X0VSUk9SOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBzdGF0dXM7Cit9CisK
K2Jvb2wgQ29udGV4dDo6aXNSZXNldE5vdGlmaWNhdGlvbkVuYWJsZWQoKQoreworICAgIHJldHVy
biAobVJlc2V0U3RyYXRlZ3kgPT0gR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCk7Cit9CisK
K2ludCBDb250ZXh0OjpnZXRNYWpvclNoYWRlck1vZGVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bU1ham9yU2hhZGVyTW9kZWw7Cit9CisKK2Zsb2F0IENvbnRleHQ6OmdldE1heGltdW1Qb2ludFNp
emUoKSBjb25zdAoreworICAgIHJldHVybiBtTWF4aW11bVBvaW50U2l6ZTsKK30KKwordW5zaWdu
ZWQgaW50IENvbnRleHQ6OmdldE1heGltdW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRNYXhDb21iaW5lZFRleHR1cmVJbWFnZVVu
aXRzKCk7Cit9CisKK2ludCBDb250ZXh0OjpnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCk7Cit9CisK
K3Vuc2lnbmVkIGludCBDb250ZXh0OjpnZXRNYXhpbXVtUmVuZGVyVGFyZ2V0cygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TWF4UmVuZGVyVGFyZ2V0cygpOworfQorCitib29s
IENvbnRleHQ6OnN1cHBvcnRzRXZlbnRRdWVyaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1
cHBvcnRzRXZlbnRRdWVyaWVzOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzT2NjbHVzaW9u
UXVlcmllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdXBwb3J0c09jY2x1c2lvblF1ZXJpZXM7
Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNCR1JBVGV4dHVyZXMoKSBjb25zdAoreworICAg
IHJldHVybiBtU3VwcG9ydHNCR1JBVGV4dHVyZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9y
dHNEWFQxVGV4dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNEWFQxVGV4dHVy
ZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNEWFQzVGV4dHVyZXMoKSBjb25zdAorewor
ICAgIHJldHVybiBtU3VwcG9ydHNEWFQzVGV4dHVyZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3Vw
cG9ydHNEWFQ1VGV4dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNEWFQ1VGV4
dHVyZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNGbG9hdDMyVGV4dHVyZXMoKSBjb25z
dAoreworICAgIHJldHVybiBtU3VwcG9ydHNGbG9hdDMyVGV4dHVyZXM7Cit9CisKK2Jvb2wgQ29u
dGV4dDo6c3VwcG9ydHNGbG9hdDMyTGluZWFyRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bVN1cHBvcnRzRmxvYXQzMkxpbmVhckZpbHRlcjsKK30KKworYm9vbCBDb250ZXh0OjpzdXBwb3J0
c0Zsb2F0MzJSZW5kZXJhYmxlVGV4dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9y
dHNGbG9hdDMyUmVuZGVyYWJsZVRleHR1cmVzOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRz
RmxvYXQxNlRleHR1cmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzRmxvYXQxNlRl
eHR1cmVzOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzRmxvYXQxNkxpbmVhckZpbHRlcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdXBwb3J0c0Zsb2F0MTZMaW5lYXJGaWx0ZXI7Cit9CisK
K2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNGbG9hdDE2UmVuZGVyYWJsZVRleHR1cmVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVN1cHBvcnRzRmxvYXQxNlJlbmRlcmFibGVUZXh0dXJlczsKK30KKwor
aW50IENvbnRleHQ6OmdldE1heGltdW1SZW5kZXJidWZmZXJEaW1lbnNpb24oKSBjb25zdAorewor
ICAgIHJldHVybiBtTWF4UmVuZGVyYnVmZmVyRGltZW5zaW9uOworfQorCitpbnQgQ29udGV4dDo6
Z2V0TWF4aW11bVRleHR1cmVEaW1lbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBtTWF4VGV4
dHVyZURpbWVuc2lvbjsKK30KKworaW50IENvbnRleHQ6OmdldE1heGltdW1DdWJlVGV4dHVyZURp
bWVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1NYXhDdWJlVGV4dHVyZURpbWVuc2lvbjsK
K30KKworaW50IENvbnRleHQ6OmdldE1heGltdW1UZXh0dXJlTGV2ZWwoKSBjb25zdAoreworICAg
IHJldHVybiBtTWF4VGV4dHVyZUxldmVsOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzTHVt
aW5hbmNlVGV4dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNMdW1pbmFuY2VU
ZXh0dXJlczsKK30KKworYm9vbCBDb250ZXh0OjpzdXBwb3J0c0x1bWluYW5jZUFscGhhVGV4dHVy
ZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNMdW1pbmFuY2VBbHBoYVRleHR1cmVz
OworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzRGVwdGhUZXh0dXJlcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1TdXBwb3J0c0RlcHRoVGV4dHVyZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3Vw
cG9ydHMzMmJpdEluZGljZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHMzMmJpdElu
ZGljZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzTm9uUG93ZXIyVGV4dHVyZTsKK30KKworYm9vbCBD
b250ZXh0OjpzdXBwb3J0c0luc3RhbmNpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9y
dHNJbnN0YW5jaW5nOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzVGV4dHVyZUZpbHRlckFu
aXNvdHJvcHkoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5p
c290cm9weTsKK30KKworZmxvYXQgQ29udGV4dDo6Z2V0VGV4dHVyZU1heEFuaXNvdHJvcHkoKSBj
b25zdAoreworICAgIHJldHVybiBtTWF4VGV4dHVyZUFuaXNvdHJvcHk7Cit9CisKK2Jvb2wgQ29u
dGV4dDo6Z2V0Q3VycmVudFJlYWRGb3JtYXRUeXBlKEdMZW51bSAqZm9ybWF0LCBHTGVudW0gKnR5
cGUpCit7CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gZ2V0UmVhZEZyYW1lYnVmZmVy
KCk7CisgICAgaWYgKCFmcmFtZWJ1ZmZlciB8fCBmcmFtZWJ1ZmZlci0+Y29tcGxldGVuZXNzKCkg
IT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgfQorCisgICAgUmVuZGVyYnVm
ZmVyICpyZW5kZXJidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7Cisg
ICAgaWYgKCFyZW5kZXJidWZmZXIpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgfQorCisgICAgKmZvcm1hdCA9IGdsOjpF
eHRyYWN0Rm9ybWF0KHJlbmRlcmJ1ZmZlci0+Z2V0QWN0dWFsRm9ybWF0KCkpOyAKKyAgICAqdHlw
ZSA9IGdsOjpFeHRyYWN0VHlwZShyZW5kZXJidWZmZXItPmdldEFjdHVhbEZvcm1hdCgpKTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIENvbnRleHQ6OmRldGFjaEJ1ZmZlcihHTHVpbnQg
YnVmZmVyKQoreworICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDIuOSBwYWdlIDIy
OgorICAgIC8vIElmIGEgYnVmZmVyIG9iamVjdCBpcyBkZWxldGVkIHdoaWxlIGl0IGlzIGJvdW5k
LCBhbGwgYmluZGluZ3MgdG8gdGhhdCBvYmplY3QgaW4gdGhlIGN1cnJlbnQgY29udGV4dAorICAg
IC8vIChpLmUuIGluIHRoZSB0aHJlYWQgdGhhdCBjYWxsZWQgRGVsZXRlLUJ1ZmZlcnMpIGFyZSBy
ZXNldCB0byB6ZXJvLgorCisgICAgaWYgKG1TdGF0ZS5hcnJheUJ1ZmZlci5pZCgpID09IGJ1ZmZl
cikKKyAgICB7CisgICAgICAgIG1TdGF0ZS5hcnJheUJ1ZmZlci5zZXQoTlVMTCk7CisgICAgfQor
CisgICAgaWYgKG1TdGF0ZS5lbGVtZW50QXJyYXlCdWZmZXIuaWQoKSA9PSBidWZmZXIpCisgICAg
eworICAgICAgICBtU3RhdGUuZWxlbWVudEFycmF5QnVmZmVyLnNldChOVUxMKTsKKyAgICB9CisK
KyAgICBmb3IgKGludCBhdHRyaWJ1dGUgPSAwOyBhdHRyaWJ1dGUgPCBNQVhfVkVSVEVYX0FUVFJJ
QlM7IGF0dHJpYnV0ZSsrKQorICAgIHsKKyAgICAgICAgaWYgKG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1
dGVbYXR0cmlidXRlXS5tQm91bmRCdWZmZXIuaWQoKSA9PSBidWZmZXIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmlidXRlXS5tQm91bmRCdWZmZXIu
c2V0KE5VTEwpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmRldGFjaFRl
eHR1cmUoR0x1aW50IHRleHR1cmUpCit7CisgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rp
b24gMy44IHBhZ2UgODQ6CisgICAgLy8gSWYgYSB0ZXh0dXJlIG9iamVjdCBpcyBkZWxldGVkLCBp
dCBpcyBhcyBpZiBhbGwgdGV4dHVyZSB1bml0cyB3aGljaCBhcmUgYm91bmQgdG8gdGhhdCB0ZXh0
dXJlIG9iamVjdCBhcmUKKyAgICAvLyByZWJvdW5kIHRvIHRleHR1cmUgb2JqZWN0IHplcm8KKwor
ICAgIGZvciAoaW50IHR5cGUgPSAwOyB0eXBlIDwgVEVYVFVSRV9UWVBFX0NPVU5UOyB0eXBlKysp
CisgICAgeworICAgICAgICBmb3IgKGludCBzYW1wbGVyID0gMDsgc2FtcGxlciA8IElNUExFTUVO
VEFUSU9OX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTOyBzYW1wbGVyKyspCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChtU3RhdGUuc2FtcGxlclRleHR1cmVbdHlwZV1bc2FtcGxl
cl0uaWQoKSA9PSB0ZXh0dXJlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1TdGF0
ZS5zYW1wbGVyVGV4dHVyZVt0eXBlXVtzYW1wbGVyXS5zZXQoTlVMTCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiA0
LjQgcGFnZSAxMTI6CisgICAgLy8gSWYgYSB0ZXh0dXJlIG9iamVjdCBpcyBkZWxldGVkIHdoaWxl
IGl0cyBpbWFnZSBpcyBhdHRhY2hlZCB0byB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVy
LCB0aGVuIGl0IGlzCisgICAgLy8gYXMgaWYgRnJhbWVidWZmZXJUZXh0dXJlMkQgaGFkIGJlZW4g
Y2FsbGVkLCB3aXRoIGEgdGV4dHVyZSBvZiAwLCBmb3IgZWFjaCBhdHRhY2htZW50IHBvaW50IHRv
IHdoaWNoIHRoaXMKKyAgICAvLyBpbWFnZSB3YXMgYXR0YWNoZWQgaW4gdGhlIGN1cnJlbnRseSBi
b3VuZCBmcmFtZWJ1ZmZlci4KKworICAgIEZyYW1lYnVmZmVyICpyZWFkRnJhbWVidWZmZXIgPSBn
ZXRSZWFkRnJhbWVidWZmZXIoKTsKKyAgICBGcmFtZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0g
Z2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisKKyAgICBpZiAocmVhZEZyYW1lYnVmZmVyKQorICAgIHsK
KyAgICAgICAgcmVhZEZyYW1lYnVmZmVyLT5kZXRhY2hUZXh0dXJlKHRleHR1cmUpOworICAgIH0K
KworICAgIGlmIChkcmF3RnJhbWVidWZmZXIgJiYgZHJhd0ZyYW1lYnVmZmVyICE9IHJlYWRGcmFt
ZWJ1ZmZlcikKKyAgICB7CisgICAgICAgIGRyYXdGcmFtZWJ1ZmZlci0+ZGV0YWNoVGV4dHVyZSh0
ZXh0dXJlKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6ZGV0YWNoRnJhbWVidWZmZXIoR0x1
aW50IGZyYW1lYnVmZmVyKQoreworICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDQu
NCBwYWdlIDEwNzoKKyAgICAvLyBJZiBhIGZyYW1lYnVmZmVyIHRoYXQgaXMgY3VycmVudGx5IGJv
dW5kIHRvIHRoZSB0YXJnZXQgRlJBTUVCVUZGRVIgaXMgZGVsZXRlZCwgaXQgaXMgYXMgdGhvdWdo
CisgICAgLy8gQmluZEZyYW1lYnVmZmVyIGhhZCBiZWVuIGV4ZWN1dGVkIHdpdGggdGhlIHRhcmdl
dCBvZiBGUkFNRUJVRkZFUiBhbmQgZnJhbWVidWZmZXIgb2YgemVyby4KKworICAgIGlmIChtU3Rh
dGUucmVhZEZyYW1lYnVmZmVyID09IGZyYW1lYnVmZmVyKQorICAgIHsKKyAgICAgICAgYmluZFJl
YWRGcmFtZWJ1ZmZlcigwKTsKKyAgICB9CisKKyAgICBpZiAobVN0YXRlLmRyYXdGcmFtZWJ1ZmZl
ciA9PSBmcmFtZWJ1ZmZlcikKKyAgICB7CisgICAgICAgIGJpbmREcmF3RnJhbWVidWZmZXIoMCk7
CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmRldGFjaFJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVu
ZGVyYnVmZmVyKQoreworICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDQuNCBwYWdl
IDEwOToKKyAgICAvLyBJZiBhIHJlbmRlcmJ1ZmZlciB0aGF0IGlzIGN1cnJlbnRseSBib3VuZCB0
byBSRU5ERVJCVUZGRVIgaXMgZGVsZXRlZCwgaXQgaXMgYXMgdGhvdWdoIEJpbmRSZW5kZXJidWZm
ZXIKKyAgICAvLyBoYWQgYmVlbiBleGVjdXRlZCB3aXRoIHRoZSB0YXJnZXQgUkVOREVSQlVGRkVS
IGFuZCBuYW1lIG9mIHplcm8uCisKKyAgICBpZiAobVN0YXRlLnJlbmRlcmJ1ZmZlci5pZCgpID09
IHJlbmRlcmJ1ZmZlcikKKyAgICB7CisgICAgICAgIGJpbmRSZW5kZXJidWZmZXIoMCk7CisgICAg
fQorCisgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gNC40IHBhZ2UgMTExOgorICAg
IC8vIElmIGEgcmVuZGVyYnVmZmVyIG9iamVjdCBpcyBkZWxldGVkIHdoaWxlIGl0cyBpbWFnZSBp
cyBhdHRhY2hlZCB0byB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVyLAorICAgIC8vIHRo
ZW4gaXQgaXMgYXMgaWYgRnJhbWVidWZmZXJSZW5kZXJidWZmZXIgaGFkIGJlZW4gY2FsbGVkLCB3
aXRoIGEgcmVuZGVyYnVmZmVyIG9mIDAsIGZvciBlYWNoIGF0dGFjaG1lbnQKKyAgICAvLyBwb2lu
dCB0byB3aGljaCB0aGlzIGltYWdlIHdhcyBhdHRhY2hlZCBpbiB0aGUgY3VycmVudGx5IGJvdW5k
IGZyYW1lYnVmZmVyLgorCisgICAgRnJhbWVidWZmZXIgKnJlYWRGcmFtZWJ1ZmZlciA9IGdldFJl
YWRGcmFtZWJ1ZmZlcigpOworICAgIEZyYW1lYnVmZmVyICpkcmF3RnJhbWVidWZmZXIgPSBnZXRE
cmF3RnJhbWVidWZmZXIoKTsKKworICAgIGlmIChyZWFkRnJhbWVidWZmZXIpCisgICAgeworICAg
ICAgICByZWFkRnJhbWVidWZmZXItPmRldGFjaFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOwor
ICAgIH0KKworICAgIGlmIChkcmF3RnJhbWVidWZmZXIgJiYgZHJhd0ZyYW1lYnVmZmVyICE9IHJl
YWRGcmFtZWJ1ZmZlcikKKyAgICB7CisgICAgICAgIGRyYXdGcmFtZWJ1ZmZlci0+ZGV0YWNoUmVu
ZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CisgICAgfQorfQorCitUZXh0dXJlICpDb250ZXh0Ojpn
ZXRJbmNvbXBsZXRlVGV4dHVyZShUZXh0dXJlVHlwZSB0eXBlKQoreworICAgIFRleHR1cmUgKnQg
PSBtSW5jb21wbGV0ZVRleHR1cmVzW3R5cGVdLmdldCgpOworCisgICAgaWYgKHQgPT0gTlVMTCkK
KyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBHTHVieXRlIGNvbG9yW10gPSB7IDAsIDAsIDAs
IDI1NSB9OworCisgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgLy8gZGVmYXVs
dCBmYWxscyB0aHJvdWdoIHRvIFRFWFRVUkVfMkQKKworICAgICAgICAgIGNhc2UgVEVYVFVSRV8y
RDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBUZXh0dXJlMkQgKmluY29tcGxldGUy
ZCA9IG5ldyBUZXh0dXJlMkQobVJlbmRlcmVyLCBUZXh0dXJlOjpJTkNPTVBMRVRFX1RFWFRVUkVf
SUQpOworICAgICAgICAgICAgICAgIGluY29tcGxldGUyZC0+c2V0SW1hZ2UoMCwgMSwgMSwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwgMSwgY29sb3IpOworICAgICAgICAgICAgICAgIHQgPSBp
bmNvbXBsZXRlMmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgIGNhc2UgVEVYVFVSRV9DVUJFOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICBUZXh0
dXJlQ3ViZU1hcCAqaW5jb21wbGV0ZUN1YmUgPSBuZXcgVGV4dHVyZUN1YmVNYXAobVJlbmRlcmVy
LCBUZXh0dXJlOjpJTkNPTVBMRVRFX1RFWFRVUkVfSUQpOworCisgICAgICAgICAgICAgIGluY29t
cGxldGVDdWJlLT5zZXRJbWFnZVBvc1goMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgMSwgY29sb3IpOworICAgICAgICAgICAgICBpbmNvbXBsZXRlQ3ViZS0+c2V0SW1hZ2VOZWdY
KDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDEsIGNvbG9yKTsKKyAgICAgICAg
ICAgICAgaW5jb21wbGV0ZUN1YmUtPnNldEltYWdlUG9zWSgwLCAxLCAxLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLCAxLCBjb2xvcik7CisgICAgICAgICAgICAgIGluY29tcGxldGVDdWJlLT5z
ZXRJbWFnZU5lZ1koMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMSwgY29sb3Ip
OworICAgICAgICAgICAgICBpbmNvbXBsZXRlQ3ViZS0+c2V0SW1hZ2VQb3NaKDAsIDEsIDEsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDEsIGNvbG9yKTsKKyAgICAgICAgICAgICAgaW5jb21w
bGV0ZUN1YmUtPnNldEltYWdlTmVnWigwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCAxLCBjb2xvcik7CisKKyAgICAgICAgICAgICAgdCA9IGluY29tcGxldGVDdWJlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtSW5jb21w
bGV0ZVRleHR1cmVzW3R5cGVdLnNldCh0KTsKKyAgICB9CisKKyAgICByZXR1cm4gdDsKK30KKwor
Ym9vbCBDb250ZXh0Ojpza2lwRHJhdyhHTGVudW0gZHJhd01vZGUpCit7CisgICAgaWYgKGRyYXdN
b2RlID09IEdMX1BPSU5UUykKKyAgICB7CisgICAgICAgIC8vIFByb2dyYW1CaW5hcnkgYXNzdW1l
cyBub24tcG9pbnQgcmVuZGVyaW5nIGlmIGdsX1BvaW50U2l6ZSBpc24ndCB3cml0dGVuLAorICAg
ICAgICAvLyB3aGljaCBhZmZlY3RzIHZhcnlpbmcgaW50ZXJwb2xhdGlvbi4gU2luY2UgdGhlIHZh
bHVlIG9mIGdsX1BvaW50U2l6ZSBpcworICAgICAgICAvLyB1bmRlZmluZWQgd2hlbiBub3Qgd3Jp
dHRlbiwganVzdCBza2lwIGRyYXdpbmcgdG8gYXZvaWQgdW5leHBlY3RlZCByZXN1bHRzLgorICAg
ICAgICBpZiAoIWdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCktPnVzZXNQb2ludFNpemUoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBzdGljdGx5IHNwZWFraW5nIG5vdCBhbiBl
cnJvciwgYnV0IGRldmVsb3BlcnMgc2hvdWxkIGJlIAorICAgICAgICAgICAgLy8gbm90aWZpZWQg
b2Ygcmlza2luZyB1bmRlZmluZWQgYmVoYXZpb3IuCisgICAgICAgICAgICBFUlIoIlBvaW50IHJl
bmRlcmluZyB3aXRob3V0IHdyaXRpbmcgdG8gZ2xfUG9pbnRTaXplLiIpOworCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChJc1RyaWFuZ2xl
TW9kZShkcmF3TW9kZSkpCisgICAgeworICAgICAgICBpZiAobVN0YXRlLnJhc3Rlcml6ZXIuY3Vs
bEZhY2UgJiYgbVN0YXRlLnJhc3Rlcml6ZXIuY3VsbE1vZGUgPT0gR0xfRlJPTlRfQU5EX0JBQ0sp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENvbnRleHQ6OnNldFZlcnRleEF0dHJpYihH
THVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKK3sKKyAgICBBU1NFUlQoaW5kZXgg
PCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKTsKKworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVb
aW5kZXhdLm1DdXJyZW50VmFsdWVbMF0gPSB2YWx1ZXNbMF07CisgICAgbVN0YXRlLnZlcnRleEF0
dHJpYnV0ZVtpbmRleF0ubUN1cnJlbnRWYWx1ZVsxXSA9IHZhbHVlc1sxXTsKKyAgICBtU3RhdGUu
dmVydGV4QXR0cmlidXRlW2luZGV4XS5tQ3VycmVudFZhbHVlWzJdID0gdmFsdWVzWzJdOworICAg
IG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbaW5kZXhdLm1DdXJyZW50VmFsdWVbM10gPSB2YWx1ZXNb
M107Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0VmVydGV4QXR0cmliRGl2aXNvcihHTHVpbnQgaW5k
ZXgsIEdMdWludCBkaXZpc29yKQoreworICAgIEFTU0VSVChpbmRleCA8IGdsOjpNQVhfVkVSVEVY
X0FUVFJJQlMpOworCisgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVtpbmRleF0ubURpdmlzb3Ig
PSBkaXZpc29yOworfQorCisvLyBrZWVwIGxpc3Qgc29ydGVkIGluIGZvbGxvd2luZyBvcmRlcgor
Ly8gT0VTIGV4dGVuc2lvbnMKKy8vIEVYVCBleHRlbnNpb25zCisvLyBWZW5kb3IgZXh0ZW5zaW9u
cwordm9pZCBDb250ZXh0Ojppbml0RXh0ZW5zaW9uU3RyaW5nKCkKK3sKKyAgICBzdGQ6OnN0cmlu
ZyBleHRlbnNpb25TdHJpbmcgPSAiIjsKKworICAgIC8vIE9FUyBleHRlbnNpb25zCisgICAgaWYg
KHN1cHBvcnRzMzJiaXRJbmRpY2VzKCkpCisgICAgeworICAgICAgICBleHRlbnNpb25TdHJpbmcg
Kz0gIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQgIjsKKyAgICB9CisKKyAgICBleHRlbnNpb25T
dHJpbmcgKz0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCAiOworICAgIGV4dGVuc2lvblN0
cmluZyArPSAiR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFyeSAiOworICAgIGV4dGVuc2lvblN0cmlu
ZyArPSAiR0xfT0VTX3JnYjhfcmdiYTggIjsKKyAgICBpZiAobVJlbmRlcmVyLT5nZXREZXJpdmF0
aXZlSW5zdHJ1Y3Rpb25TdXBwb3J0KCkpCisgICAgeworICAgICAgICBleHRlbnNpb25TdHJpbmcg
Kz0gIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyAiOworICAgIH0KKworICAgIGlmIChzdXBw
b3J0c0Zsb2F0MTZUZXh0dXJlcygpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9
ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0ICI7CisgICAgfQorICAgIGlmIChzdXBwb3J0c0Zs
b2F0MTZMaW5lYXJGaWx0ZXIoKSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAi
R0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgIjsKKyAgICB9CisgICAgaWYgKHN1cHBv
cnRzRmxvYXQzMlRleHR1cmVzKCkpCisgICAgeworICAgICAgICBleHRlbnNpb25TdHJpbmcgKz0g
IkdMX09FU190ZXh0dXJlX2Zsb2F0ICI7CisgICAgfQorICAgIGlmIChzdXBwb3J0c0Zsb2F0MzJM
aW5lYXJGaWx0ZXIoKSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfT0VT
X3RleHR1cmVfZmxvYXRfbGluZWFyICI7CisgICAgfQorCisgICAgaWYgKHN1cHBvcnRzTm9uUG93
ZXIyVGV4dHVyZSgpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9PRVNf
dGV4dHVyZV9ucG90ICI7CisgICAgfQorCisgICAgLy8gTXVsdGktdmVuZG9yIChFWFQpIGV4dGVu
c2lvbnMKKyAgICBpZiAoc3VwcG9ydHNPY2NsdXNpb25RdWVyaWVzKCkpCisgICAgeworICAgICAg
ICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiAiOwor
ICAgIH0KKworICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEg
IjsKKyAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX0VYVF9yb2J1c3RuZXNzICI7CisKKyAgICBp
ZiAoc3VwcG9ydHNEWFQxVGV4dHVyZXMoKSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmlu
ZyArPSAiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSAiOworICAgIH0KKworICAgIGlm
IChzdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5KCkpCisgICAgeworICAgICAgICBleHRl
bnNpb25TdHJpbmcgKz0gIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyAiOworICAg
IH0KKworICAgIGlmIChzdXBwb3J0c0JHUkFUZXh0dXJlcygpKQorICAgIHsKKyAgICAgICAgZXh0
ZW5zaW9uU3RyaW5nICs9ICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggIjsKKyAgICB9
CisKKyAgICBpZiAobVJlbmRlcmVyLT5nZXRNYXhSZW5kZXJUYXJnZXRzKCkgPiAxKQorICAgIHsK
KyAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9FWFRfZHJhd19idWZmZXJzICI7CisgICAg
fQorCisgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlICI7Cisg
ICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9FWFRfZnJhZ19kZXB0aCAiOworCisgICAgLy8gQU5H
TEUtc3BlY2lmaWMgZXh0ZW5zaW9ucworICAgIGlmIChzdXBwb3J0c0RlcHRoVGV4dHVyZXMoKSkK
KyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfZGVwdGhfdGV4dHVy
ZSAiOworICAgIH0KKworICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCAiOworICAgIGlmIChnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgIT0gMCkKKyAgICB7
CisgICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUgIjsKKyAgICB9CisKKyAgICBpZiAoc3VwcG9ydHNJbnN0YW5jaW5nKCkpCisgICAgewor
ICAgICAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMgIjsK
KyAgICB9CisKKyAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX3BhY2tfcmV2ZXJzZV9y
b3dfb3JkZXIgIjsKKworICAgIGlmIChzdXBwb3J0c0RYVDNUZXh0dXJlcygpKQorICAgIHsKKyAg
ICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4
dDMgIjsKKyAgICB9CisgICAgaWYgKHN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCisgICAgeworICAg
ICAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0
NSAiOworICAgIH0KKworICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfdGV4dHVyZV91
c2FnZSAiOworICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFk
ZXJfc291cmNlICI7CisKKyAgICAvLyBPdGhlciB2ZW5kb3Itc3BlY2lmaWMgZXh0ZW5zaW9ucwor
ICAgIGlmIChzdXBwb3J0c0V2ZW50UXVlcmllcygpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9u
U3RyaW5nICs9ICJHTF9OVl9mZW5jZSAiOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nOjpzaXpl
X3R5cGUgZW5kID0gZXh0ZW5zaW9uU3RyaW5nLmZpbmRfbGFzdF9ub3Rfb2YoJyAnKTsKKyAgICBp
ZiAoZW5kICE9IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3Ry
aW5nLnJlc2l6ZShlbmQrMSk7CisgICAgfQorCisgICAgbUV4dGVuc2lvblN0cmluZyA9IG1ha2VT
dGF0aWNTdHJpbmcoZXh0ZW5zaW9uU3RyaW5nKTsKK30KKworY29uc3QgY2hhciAqQ29udGV4dDo6
Z2V0RXh0ZW5zaW9uU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUV4dGVuc2lvblN0cmlu
ZzsKK30KKwordm9pZCBDb250ZXh0Ojppbml0UmVuZGVyZXJTdHJpbmcoKQoreworICAgIHN0ZDo6
b3N0cmluZ3N0cmVhbSByZW5kZXJlclN0cmluZzsKKyAgICByZW5kZXJlclN0cmluZyA8PCAiQU5H
TEUgKCI7CisgICAgcmVuZGVyZXJTdHJpbmcgPDwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlckRlc2Ny
aXB0aW9uKCk7CisgICAgcmVuZGVyZXJTdHJpbmcgPDwgIikiOworCisgICAgbVJlbmRlcmVyU3Ry
aW5nID0gbWFrZVN0YXRpY1N0cmluZyhyZW5kZXJlclN0cmluZy5zdHIoKSk7Cit9CisKK2NvbnN0
IGNoYXIgKkNvbnRleHQ6OmdldFJlbmRlcmVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bVJlbmRlcmVyU3RyaW5nOworfQorCit2b2lkIENvbnRleHQ6OmJsaXRGcmFtZWJ1ZmZlcihHTGlu
dCBzcmNYMCwgR0xpbnQgc3JjWTAsIEdMaW50IHNyY1gxLCBHTGludCBzcmNZMSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRz
dFgxLCBHTGludCBkc3RZMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0Zmll
bGQgbWFzaykKK3sKKyAgICBGcmFtZWJ1ZmZlciAqcmVhZEZyYW1lYnVmZmVyID0gZ2V0UmVhZEZy
YW1lYnVmZmVyKCk7CisgICAgRnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciA9IGdldERyYXdG
cmFtZWJ1ZmZlcigpOworCisgICAgaWYgKCFyZWFkRnJhbWVidWZmZXIgfHwgcmVhZEZyYW1lYnVm
ZmVyLT5jb21wbGV0ZW5lc3MoKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSB8fAorICAgICAg
ICAhZHJhd0ZyYW1lYnVmZmVyIHx8IGRyYXdGcmFtZWJ1ZmZlci0+Y29tcGxldGVuZXNzKCkgIT0g
R0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICBpZiAoZHJh
d0ZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKCkgIT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAgIFJlbmRlcmJ1ZmZl
ciAqcmVhZENvbG9yQnVmZmVyID0gcmVhZEZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIo
KTsKKyAgICBSZW5kZXJidWZmZXIgKmRyYXdDb2xvckJ1ZmZlciA9IGRyYXdGcmFtZWJ1ZmZlci0+
Z2V0Rmlyc3RDb2xvcmJ1ZmZlcigpOworCisgICAgaWYgKGRyYXdDb2xvckJ1ZmZlciA9PSBOVUxM
KQorICAgIHsKKyAgICAgICAgRVJSKCJEcmF3IGJ1ZmZlcnMgZm9ybWF0cyBkb24ndCBtYXRjaCwg
d2hpY2ggaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGltcGxlbWVudGF0aW9uIG9mIEJsaXRGcmFt
ZWJ1ZmZlckFOR0xFIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgIH0KKworICAgIGludCByZWFkQnVmZmVyV2lkdGggPSByZWFkQ29sb3JCdWZm
ZXItPmdldFdpZHRoKCk7CisgICAgaW50IHJlYWRCdWZmZXJIZWlnaHQgPSByZWFkQ29sb3JCdWZm
ZXItPmdldEhlaWdodCgpOworICAgIGludCBkcmF3QnVmZmVyV2lkdGggPSBkcmF3Q29sb3JCdWZm
ZXItPmdldFdpZHRoKCk7CisgICAgaW50IGRyYXdCdWZmZXJIZWlnaHQgPSBkcmF3Q29sb3JCdWZm
ZXItPmdldEhlaWdodCgpOworCisgICAgUmVjdGFuZ2xlIHNvdXJjZVJlY3Q7CisgICAgUmVjdGFu
Z2xlIGRlc3RSZWN0OworCisgICAgaWYgKHNyY1gwIDwgc3JjWDEpCisgICAgeworICAgICAgICBz
b3VyY2VSZWN0LnggPSBzcmNYMDsKKyAgICAgICAgZGVzdFJlY3QueCA9IGRzdFgwOworICAgICAg
ICBzb3VyY2VSZWN0LndpZHRoID0gc3JjWDEgLSBzcmNYMDsKKyAgICAgICAgZGVzdFJlY3Qud2lk
dGggPSBkc3RYMSAtIGRzdFgwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBzb3Vy
Y2VSZWN0LnggPSBzcmNYMTsKKyAgICAgICAgZGVzdFJlY3QueCA9IGRzdFgxOworICAgICAgICBz
b3VyY2VSZWN0LndpZHRoID0gc3JjWDAgLSBzcmNYMTsKKyAgICAgICAgZGVzdFJlY3Qud2lkdGgg
PSBkc3RYMCAtIGRzdFgxOworICAgIH0KKworICAgIGlmIChzcmNZMCA8IHNyY1kxKQorICAgIHsK
KyAgICAgICAgc291cmNlUmVjdC5oZWlnaHQgPSBzcmNZMSAtIHNyY1kwOworICAgICAgICBkZXN0
UmVjdC5oZWlnaHQgPSBkc3RZMSAtIGRzdFkwOworICAgICAgICBzb3VyY2VSZWN0LnkgPSBzcmNZ
MDsKKyAgICAgICAgZGVzdFJlY3QueSA9IGRzdFkwOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBzb3VyY2VSZWN0LmhlaWdodCA9IHNyY1kwIC0gc3JjWTE7CisgICAgICAgIGRlc3RS
ZWN0LmhlaWdodCA9IGRzdFkwIC0gc3JjWTE7CisgICAgICAgIHNvdXJjZVJlY3QueSA9IHNyY1kx
OworICAgICAgICBkZXN0UmVjdC55ID0gZHN0WTE7CisgICAgfQorCisgICAgUmVjdGFuZ2xlIHNv
dXJjZVNjaXNzb3JlZFJlY3QgPSBzb3VyY2VSZWN0OworICAgIFJlY3RhbmdsZSBkZXN0U2Npc3Nv
cmVkUmVjdCA9IGRlc3RSZWN0OworCisgICAgaWYgKG1TdGF0ZS5zY2lzc29yVGVzdCkKKyAgICB7
CisgICAgICAgIC8vIE9ubHkgd3JpdGUgdG8gcGFydHMgb2YgdGhlIGRlc3RpbmF0aW9uIGZyYW1l
YnVmZmVyIHdoaWNoIHBhc3MgdGhlIHNjaXNzb3IgdGVzdC4KKyAgICAgICAgaWYgKGRlc3RSZWN0
LnggPCBtU3RhdGUuc2Npc3Nvci54KQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgeERpZmYg
PSBtU3RhdGUuc2Npc3Nvci54IC0gZGVzdFJlY3QueDsKKyAgICAgICAgICAgIGRlc3RTY2lzc29y
ZWRSZWN0LnggPSBtU3RhdGUuc2Npc3Nvci54OworICAgICAgICAgICAgZGVzdFNjaXNzb3JlZFJl
Y3Qud2lkdGggLT0geERpZmY7CisgICAgICAgICAgICBzb3VyY2VTY2lzc29yZWRSZWN0LnggKz0g
eERpZmY7CisgICAgICAgICAgICBzb3VyY2VTY2lzc29yZWRSZWN0LndpZHRoIC09IHhEaWZmOwor
CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGVzdFJlY3QueCArIGRlc3RSZWN0LndpZHRoID4g
bVN0YXRlLnNjaXNzb3IueCArIG1TdGF0ZS5zY2lzc29yLndpZHRoKQorICAgICAgICB7CisgICAg
ICAgICAgICBpbnQgeERpZmYgPSAoZGVzdFJlY3QueCArIGRlc3RSZWN0LndpZHRoKSAtIChtU3Rh
dGUuc2Npc3Nvci54ICsgbVN0YXRlLnNjaXNzb3Iud2lkdGgpOworICAgICAgICAgICAgZGVzdFNj
aXNzb3JlZFJlY3Qud2lkdGggLT0geERpZmY7CisgICAgICAgICAgICBzb3VyY2VTY2lzc29yZWRS
ZWN0LndpZHRoIC09IHhEaWZmOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlc3RSZWN0Lnkg
PCBtU3RhdGUuc2Npc3Nvci55KQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgeURpZmYgPSBt
U3RhdGUuc2Npc3Nvci55IC0gZGVzdFJlY3QueTsKKyAgICAgICAgICAgIGRlc3RTY2lzc29yZWRS
ZWN0LnkgPSBtU3RhdGUuc2Npc3Nvci55OworICAgICAgICAgICAgZGVzdFNjaXNzb3JlZFJlY3Qu
aGVpZ2h0IC09IHlEaWZmOworICAgICAgICAgICAgc291cmNlU2Npc3NvcmVkUmVjdC55ICs9IHlE
aWZmOworICAgICAgICAgICAgc291cmNlU2Npc3NvcmVkUmVjdC5oZWlnaHQgLT0geURpZmY7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoZGVzdFJlY3QueSArIGRlc3RSZWN0LmhlaWdodCA+IG1T
dGF0ZS5zY2lzc29yLnkgKyBtU3RhdGUuc2Npc3Nvci5oZWlnaHQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGludCB5RGlmZiA9IChkZXN0UmVjdC55ICsgZGVzdFJlY3QuaGVpZ2h0KSAtIChtU3Rh
dGUuc2Npc3Nvci55ICsgbVN0YXRlLnNjaXNzb3IuaGVpZ2h0KTsKKyAgICAgICAgICAgIGRlc3RT
Y2lzc29yZWRSZWN0LmhlaWdodCAgLT0geURpZmY7CisgICAgICAgICAgICBzb3VyY2VTY2lzc29y
ZWRSZWN0LmhlaWdodCAtPSB5RGlmZjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgYmxp
dFJlbmRlclRhcmdldCA9IGZhbHNlOworICAgIGJvb2wgYmxpdERlcHRoU3RlbmNpbCA9IGZhbHNl
OworCisgICAgUmVjdGFuZ2xlIHNvdXJjZVRyaW1tZWRSZWN0ID0gc291cmNlU2Npc3NvcmVkUmVj
dDsKKyAgICBSZWN0YW5nbGUgZGVzdFRyaW1tZWRSZWN0ID0gZGVzdFNjaXNzb3JlZFJlY3Q7CisK
KyAgICAvLyBUaGUgc291cmNlICYgZGVzdGluYXRpb24gcmVjdGFuZ2xlcyBhbHNvIG1heSBuZWVk
IHRvIGJlIHRyaW1tZWQgaWYgdGhleSBmYWxsIG91dCBvZiB0aGUgYm91bmRzIG9mIAorICAgIC8v
IHRoZSBhY3R1YWwgZHJhdyBhbmQgcmVhZCBzdXJmYWNlcy4KKyAgICBpZiAoc291cmNlVHJpbW1l
ZFJlY3QueCA8IDApCisgICAgeworICAgICAgICBpbnQgeERpZmYgPSAwIC0gc291cmNlVHJpbW1l
ZFJlY3QueDsKKyAgICAgICAgc291cmNlVHJpbW1lZFJlY3QueCA9IDA7CisgICAgICAgIHNvdXJj
ZVRyaW1tZWRSZWN0LndpZHRoIC09IHhEaWZmOworICAgICAgICBkZXN0VHJpbW1lZFJlY3QueCAr
PSB4RGlmZjsKKyAgICAgICAgZGVzdFRyaW1tZWRSZWN0LndpZHRoIC09IHhEaWZmOworICAgIH0K
KworICAgIGlmIChzb3VyY2VUcmltbWVkUmVjdC54ICsgc291cmNlVHJpbW1lZFJlY3Qud2lkdGgg
PiByZWFkQnVmZmVyV2lkdGgpCisgICAgeworICAgICAgICBpbnQgeERpZmYgPSAoc291cmNlVHJp
bW1lZFJlY3QueCArIHNvdXJjZVRyaW1tZWRSZWN0LndpZHRoKSAtIHJlYWRCdWZmZXJXaWR0aDsK
KyAgICAgICAgc291cmNlVHJpbW1lZFJlY3Qud2lkdGggLT0geERpZmY7CisgICAgICAgIGRlc3RU
cmltbWVkUmVjdC53aWR0aCAtPSB4RGlmZjsKKyAgICB9CisKKyAgICBpZiAoc291cmNlVHJpbW1l
ZFJlY3QueSA8IDApCisgICAgeworICAgICAgICBpbnQgeURpZmYgPSAwIC0gc291cmNlVHJpbW1l
ZFJlY3QueTsKKyAgICAgICAgc291cmNlVHJpbW1lZFJlY3QueSA9IDA7CisgICAgICAgIHNvdXJj
ZVRyaW1tZWRSZWN0LmhlaWdodCAtPSB5RGlmZjsKKyAgICAgICAgZGVzdFRyaW1tZWRSZWN0Lnkg
Kz0geURpZmY7CisgICAgICAgIGRlc3RUcmltbWVkUmVjdC5oZWlnaHQgLT0geURpZmY7CisgICAg
fQorCisgICAgaWYgKHNvdXJjZVRyaW1tZWRSZWN0LnkgKyBzb3VyY2VUcmltbWVkUmVjdC5oZWln
aHQgPiByZWFkQnVmZmVySGVpZ2h0KQorICAgIHsKKyAgICAgICAgaW50IHlEaWZmID0gKHNvdXJj
ZVRyaW1tZWRSZWN0LnkgKyBzb3VyY2VUcmltbWVkUmVjdC5oZWlnaHQpIC0gcmVhZEJ1ZmZlckhl
aWdodDsKKyAgICAgICAgc291cmNlVHJpbW1lZFJlY3QuaGVpZ2h0IC09IHlEaWZmOworICAgICAg
ICBkZXN0VHJpbW1lZFJlY3QuaGVpZ2h0IC09IHlEaWZmOworICAgIH0KKworICAgIGlmIChkZXN0
VHJpbW1lZFJlY3QueCA8IDApCisgICAgeworICAgICAgICBpbnQgeERpZmYgPSAwIC0gZGVzdFRy
aW1tZWRSZWN0Lng7CisgICAgICAgIGRlc3RUcmltbWVkUmVjdC54ID0gMDsKKyAgICAgICAgZGVz
dFRyaW1tZWRSZWN0LndpZHRoIC09IHhEaWZmOworICAgICAgICBzb3VyY2VUcmltbWVkUmVjdC54
ICs9IHhEaWZmOworICAgICAgICBzb3VyY2VUcmltbWVkUmVjdC53aWR0aCAtPSB4RGlmZjsKKyAg
ICB9CisKKyAgICBpZiAoZGVzdFRyaW1tZWRSZWN0LnggKyBkZXN0VHJpbW1lZFJlY3Qud2lkdGgg
PiBkcmF3QnVmZmVyV2lkdGgpCisgICAgeworICAgICAgICBpbnQgeERpZmYgPSAoZGVzdFRyaW1t
ZWRSZWN0LnggKyBkZXN0VHJpbW1lZFJlY3Qud2lkdGgpIC0gZHJhd0J1ZmZlcldpZHRoOworICAg
ICAgICBkZXN0VHJpbW1lZFJlY3Qud2lkdGggLT0geERpZmY7CisgICAgICAgIHNvdXJjZVRyaW1t
ZWRSZWN0LndpZHRoIC09IHhEaWZmOworICAgIH0KKworICAgIGlmIChkZXN0VHJpbW1lZFJlY3Qu
eSA8IDApCisgICAgeworICAgICAgICBpbnQgeURpZmYgPSAwIC0gZGVzdFRyaW1tZWRSZWN0Lnk7
CisgICAgICAgIGRlc3RUcmltbWVkUmVjdC55ID0gMDsKKyAgICAgICAgZGVzdFRyaW1tZWRSZWN0
LmhlaWdodCAtPSB5RGlmZjsKKyAgICAgICAgc291cmNlVHJpbW1lZFJlY3QueSArPSB5RGlmZjsK
KyAgICAgICAgc291cmNlVHJpbW1lZFJlY3QuaGVpZ2h0IC09IHlEaWZmOworICAgIH0KKworICAg
IGlmIChkZXN0VHJpbW1lZFJlY3QueSArIGRlc3RUcmltbWVkUmVjdC5oZWlnaHQgPiBkcmF3QnVm
ZmVySGVpZ2h0KQorICAgIHsKKyAgICAgICAgaW50IHlEaWZmID0gKGRlc3RUcmltbWVkUmVjdC55
ICsgZGVzdFRyaW1tZWRSZWN0LmhlaWdodCkgLSBkcmF3QnVmZmVySGVpZ2h0OworICAgICAgICBk
ZXN0VHJpbW1lZFJlY3QuaGVpZ2h0IC09IHlEaWZmOworICAgICAgICBzb3VyY2VUcmltbWVkUmVj
dC5oZWlnaHQgLT0geURpZmY7CisgICAgfQorCisgICAgYm9vbCBwYXJ0aWFsQnVmZmVyQ29weSA9
IGZhbHNlOworICAgIGlmIChzb3VyY2VUcmltbWVkUmVjdC5oZWlnaHQgPCByZWFkQnVmZmVySGVp
Z2h0IHx8CisgICAgICAgIHNvdXJjZVRyaW1tZWRSZWN0LndpZHRoIDwgcmVhZEJ1ZmZlcldpZHRo
IHx8IAorICAgICAgICBkZXN0VHJpbW1lZFJlY3QuaGVpZ2h0IDwgZHJhd0J1ZmZlckhlaWdodCB8
fAorICAgICAgICBkZXN0VHJpbW1lZFJlY3Qud2lkdGggPCBkcmF3QnVmZmVyV2lkdGggfHwKKyAg
ICAgICAgc291cmNlVHJpbW1lZFJlY3QueSAhPSAwIHx8IGRlc3RUcmltbWVkUmVjdC55ICE9IDAg
fHwgc291cmNlVHJpbW1lZFJlY3QueCAhPSAwIHx8IGRlc3RUcmltbWVkUmVjdC54ICE9IDApCisg
ICAgeworICAgICAgICBwYXJ0aWFsQnVmZmVyQ29weSA9IHRydWU7CisgICAgfQorCisgICAgaWYg
KG1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKQorICAgIHsKKyAgICAgICAgY29uc3QgR0xlbnVt
IHJlYWRDb2xvcmJ1ZmZlclR5cGUgPSByZWFkRnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZl
clR5cGUoKTsKKyAgICAgICAgY29uc3QgYm9vbCB2YWxpZFJlYWRUeXBlID0gKHJlYWRDb2xvcmJ1
ZmZlclR5cGUgPT0gR0xfVEVYVFVSRV8yRCkgfHwgKHJlYWRDb2xvcmJ1ZmZlclR5cGUgPT0gR0xf
UkVOREVSQlVGRkVSKTsKKyAgICAgICAgYm9vbCB2YWxpZERyYXdUeXBlID0gdHJ1ZTsKKyAgICAg
ICAgYm9vbCB2YWxpZERyYXdGb3JtYXQgPSB0cnVlOworCisgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IGdsOjpJTVBMRU1FTlRB
VElPTl9NQVhfRFJBV19CVUZGRVJTOyBjb2xvckF0dGFjaG1lbnQrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKGRyYXdGcmFtZWJ1ZmZlci0+aXNFbmFibGVkQ29sb3JBdHRhY2htZW50KGNv
bG9yQXR0YWNobWVudCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGRyYXdG
cmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXJUeXBlKGNvbG9yQXR0YWNobWVudCkgIT0gR0xfVEVY
VFVSRV8yRCAmJgorICAgICAgICAgICAgICAgICAgICBkcmF3RnJhbWVidWZmZXItPmdldENvbG9y
YnVmZmVyVHlwZShjb2xvckF0dGFjaG1lbnQpICE9IEdMX1JFTkRFUkJVRkZFUikKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHZhbGlkRHJhd1R5cGUgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZHJhd0ZyYW1lYnVmZmVyLT5n
ZXRDb2xvcmJ1ZmZlcihjb2xvckF0dGFjaG1lbnQpLT5nZXRBY3R1YWxGb3JtYXQoKSAhPSByZWFk
Q29sb3JCdWZmZXItPmdldEFjdHVhbEZvcm1hdCgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgdmFsaWREcmF3Rm9ybWF0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCF2YWxpZFJlYWRUeXBl
IHx8ICF2YWxpZERyYXdUeXBlIHx8ICF2YWxpZERyYXdGb3JtYXQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEVSUigiQ29sb3IgYnVmZmVyIGZvcm1hdCBjb252ZXJzaW9uIGluIEJsaXRGcmFtZWJ1
ZmZlckFOR0xFIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbiIpOworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGlmIChwYXJ0aWFsQnVmZmVyQ29weSAmJiByZWFkRnJhbWVidWZm
ZXItPmdldFNhbXBsZXMoKSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgfQorCisgICAgICAgIGJsaXRS
ZW5kZXJUYXJnZXQgPSB0cnVlOworCisgICAgfQorCisgICAgaWYgKG1hc2sgJiAoR0xfREVQVEhf
QlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCkpCisgICAgeworICAgICAgICBSZW5k
ZXJidWZmZXIgKnJlYWREU0J1ZmZlciA9IE5VTEw7CisgICAgICAgIFJlbmRlcmJ1ZmZlciAqZHJh
d0RTQnVmZmVyID0gTlVMTDsKKworICAgICAgICAvLyBXZSBzdXBwb3J0IE9FU19wYWNrZWRfZGVw
dGhfc3RlbmNpbCwgYW5kIGRvIG5vdCBzdXBwb3J0IGEgc2VwYXJhdGVseSBhdHRhY2hlZCBkZXB0
aCBhbmQgc3RlbmNpbCBidWZmZXIsIHNvIGlmIHdlIGhhdmUKKyAgICAgICAgLy8gYm90aCBhIGRl
cHRoIGFuZCBzdGVuY2lsIGJ1ZmZlciwgaXQgd2lsbCBiZSB0aGUgc2FtZSBidWZmZXIuCisKKyAg
ICAgICAgaWYgKG1hc2sgJiBHTF9ERVBUSF9CVUZGRVJfQklUKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1ZmZlcigpICYmIGRyYXdGcmFtZWJ1
ZmZlci0+Z2V0RGVwdGhidWZmZXIoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
ZiAocmVhZEZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1ZmZlclR5cGUoKSAhPSBkcmF3RnJhbWVidWZm
ZXItPmdldERlcHRoYnVmZmVyVHlwZSgpIHx8CisgICAgICAgICAgICAgICAgICAgIHJlYWRGcmFt
ZWJ1ZmZlci0+Z2V0RGVwdGhidWZmZXIoKS0+Z2V0QWN0dWFsRm9ybWF0KCkgIT0gZHJhd0ZyYW1l
YnVmZmVyLT5nZXREZXB0aGJ1ZmZlcigpLT5nZXRBY3R1YWxGb3JtYXQoKSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJsaXREZXB0
aFN0ZW5jaWwgPSB0cnVlOworICAgICAgICAgICAgICAgIHJlYWREU0J1ZmZlciA9IHJlYWRGcmFt
ZWJ1ZmZlci0+Z2V0RGVwdGhidWZmZXIoKTsKKyAgICAgICAgICAgICAgICBkcmF3RFNCdWZmZXIg
PSBkcmF3RnJhbWVidWZmZXItPmdldERlcHRoYnVmZmVyKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBpZiAobWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHJlYWRGcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlcigp
ICYmIGRyYXdGcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlcigpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGlmIChyZWFkRnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXJUeXBl
KCkgIT0gZHJhd0ZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyVHlwZSgpIHx8CisgICAgICAg
ICAgICAgICAgICAgIHJlYWRGcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlcigpLT5nZXRBY3R1
YWxGb3JtYXQoKSAhPSBkcmF3RnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXIoKS0+Z2V0QWN0
dWFsRm9ybWF0KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBibGl0RGVwdGhTdGVuY2lsID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICByZWFkRFNCdWZmZXIgPSByZWFkRnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXIoKTsKKyAg
ICAgICAgICAgICAgICBkcmF3RFNCdWZmZXIgPSBkcmF3RnJhbWVidWZmZXItPmdldFN0ZW5jaWxi
dWZmZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChwYXJ0aWFs
QnVmZmVyQ29weSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJPbmx5IHdob2xlLWJ1ZmZl
ciBkZXB0aCBhbmQgc3RlbmNpbCBibGl0cyBhcmUgc3VwcG9ydGVkIGJ5IHRoaXMgaW1wbGVtZW50
YXRpb24uIik7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsgLy8gb25seSB3aG9sZS1idWZmZXIgY29waWVzIGFyZSBwZXJtaXR0ZWQKKyAgICAgICAg
fQorCisgICAgICAgIGlmICgoZHJhd0RTQnVmZmVyICYmIGRyYXdEU0J1ZmZlci0+Z2V0U2FtcGxl
cygpICE9IDApIHx8IAorICAgICAgICAgICAgKHJlYWREU0J1ZmZlciAmJiByZWFkRFNCdWZmZXIt
PmdldFNhbXBsZXMoKSAhPSAwKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
YmxpdFJlbmRlclRhcmdldCB8fCBibGl0RGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgbVJl
bmRlcmVyLT5ibGl0UmVjdChyZWFkRnJhbWVidWZmZXIsIHNvdXJjZVRyaW1tZWRSZWN0LCBkcmF3
RnJhbWVidWZmZXIsIGRlc3RUcmltbWVkUmVjdCwgYmxpdFJlbmRlclRhcmdldCwgYmxpdERlcHRo
U3RlbmNpbCk7CisgICAgfQorfQorCit9CisKK2V4dGVybiAiQyIKK3sKK2dsOjpDb250ZXh0ICpn
bENyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwgcng6OlJlbmRl
cmVyICpyZW5kZXJlciwgYm9vbCBub3RpZnlSZXNldHMsIGJvb2wgcm9idXN0QWNjZXNzKQorewor
ICAgIHJldHVybiBuZXcgZ2w6OkNvbnRleHQoc2hhcmVDb250ZXh0LCByZW5kZXJlciwgbm90aWZ5
UmVzZXRzLCByb2J1c3RBY2Nlc3MpOworfQorCit2b2lkIGdsRGVzdHJveUNvbnRleHQoZ2w6OkNv
bnRleHQgKmNvbnRleHQpCit7CisgICAgZGVsZXRlIGNvbnRleHQ7CisKKyAgICBpZiAoY29udGV4
dCA9PSBnbDo6Z2V0Q29udGV4dCgpKQorICAgIHsKKyAgICAgICAgZ2w6Om1ha2VDdXJyZW50KE5V
TEwsIE5VTEwsIE5VTEwpOworICAgIH0KK30KKwordm9pZCBnbE1ha2VDdXJyZW50KGdsOjpDb250
ZXh0ICpjb250ZXh0LCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGVnbDo6U3VyZmFjZSAqc3VyZmFj
ZSkKK3sKKyAgICBnbDo6bWFrZUN1cnJlbnQoY29udGV4dCwgZGlzcGxheSwgc3VyZmFjZSk7Cit9
CisKK2dsOjpDb250ZXh0ICpnbEdldEN1cnJlbnRDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gZ2w6
OmdldENvbnRleHQoKTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9Db250ZXh0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0NvbnRleHQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MDUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIENvbnRleHQuaDogRGVmaW5lcyB0aGUg
Z2w6OkNvbnRleHQgY2xhc3MsIG1hbmFnaW5nIGFsbCBHTCBzdGF0ZSBhbmQgcGVyZm9ybWluZwor
Ly8gcmVuZGVyaW5nIG9wZXJhdGlvbnMuIEl0IGlzIHRoZSBHTEVTMiBzcGVjaWZpYyBpbXBsZW1l
bnRhdGlvbiBvZiBFR0xDb250ZXh0LgorCisjaWZuZGVmIExJQkdMRVNWMl9DT05URVhUX0hfCisj
ZGVmaW5lIExJQkdMRVNWMl9DT05URVhUX0hfCisKKyNkZWZpbmUgR0xfQVBJQ0FMTAorI2luY2x1
ZGUgPEdMRVMyL2dsMi5oPgorI2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgorI2RlZmluZSBFR0xB
UEkKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8
bWFwPgorI2lmZGVmIF9NU0NfVkVSCisjaW5jbHVkZSA8aGFzaF9tYXA+CisjZWxzZQorI2luY2x1
ZGUgPHVub3JkZXJlZF9tYXA+CisjZW5kaWYKKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxz
LmgiCisjaW5jbHVkZSAiY29tbW9uL1JlZkNvdW50T2JqZWN0LmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL0hhbmRsZUFsbG9jYXRvci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9hbmdsZXR5cGVzLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnN0YW50cy5oIgorCituYW1lc3BhY2UgcngKK3sKK2Ns
YXNzIFJlbmRlcmVyOworfQorCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBEaXNwbGF5OworY2xh
c3MgU3VyZmFjZTsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBTaGFkZXI7CitjbGFzcyBQ
cm9ncmFtOworY2xhc3MgUHJvZ3JhbUJpbmFyeTsKK2NsYXNzIFRleHR1cmU7CitjbGFzcyBUZXh0
dXJlMkQ7CitjbGFzcyBUZXh0dXJlQ3ViZU1hcDsKK2NsYXNzIEZyYW1lYnVmZmVyOworY2xhc3Mg
UmVuZGVyYnVmZmVyOworY2xhc3MgUmVuZGVyYnVmZmVyU3RvcmFnZTsKK2NsYXNzIENvbG9yYnVm
ZmVyOworY2xhc3MgRGVwdGhidWZmZXI7CitjbGFzcyBTdGVuY2lsYnVmZmVyOworY2xhc3MgRGVw
dGhTdGVuY2lsYnVmZmVyOworY2xhc3MgRmVuY2U7CitjbGFzcyBRdWVyeTsKK2NsYXNzIFJlc291
cmNlTWFuYWdlcjsKK2NsYXNzIEJ1ZmZlcjsKKworZW51bSBRdWVyeVR5cGUKK3sKKyAgICBRVUVS
WV9BTllfU0FNUExFU19QQVNTRUQsCisgICAgUVVFUllfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNF
UlZBVElWRSwKKworICAgIFFVRVJZX1RZUEVfQ09VTlQKK307CisKKy8vIEhlbHBlciBzdHJ1Y3R1
cmUgZGVzY3JpYmluZyBhIHNpbmdsZSB2ZXJ0ZXggYXR0cmlidXRlCitjbGFzcyBWZXJ0ZXhBdHRy
aWJ1dGUKK3sKKyAgcHVibGljOgorICAgIFZlcnRleEF0dHJpYnV0ZSgpIDogbVR5cGUoR0xfRkxP
QVQpLCBtU2l6ZSgwKSwgbU5vcm1hbGl6ZWQoZmFsc2UpLCBtU3RyaWRlKDApLCBtUG9pbnRlcihO
VUxMKSwgbUFycmF5RW5hYmxlZChmYWxzZSksIG1EaXZpc29yKDApCisgICAgeworICAgICAgICBt
Q3VycmVudFZhbHVlWzBdID0gMC4wZjsKKyAgICAgICAgbUN1cnJlbnRWYWx1ZVsxXSA9IDAuMGY7
CisgICAgICAgIG1DdXJyZW50VmFsdWVbMl0gPSAwLjBmOworICAgICAgICBtQ3VycmVudFZhbHVl
WzNdID0gMS4wZjsKKyAgICB9CisKKyAgICBpbnQgdHlwZVNpemUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChtVHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfQllURTog
ICAgICAgICAgIHJldHVybiBtU2l6ZSAqIHNpemVvZihHTGJ5dGUpOworICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfQllURTogIHJldHVybiBtU2l6ZSAqIHNpemVvZihHTHVieXRlKTsKKyAgICAg
ICAgICBjYXNlIEdMX1NIT1JUOiAgICAgICAgICByZXR1cm4gbVNpemUgKiBzaXplb2YoR0xzaG9y
dCk7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDogcmV0dXJuIG1TaXplICogc2l6
ZW9mKEdMdXNob3J0KTsKKyAgICAgICAgICBjYXNlIEdMX0ZJWEVEOiAgICAgICAgICByZXR1cm4g
bVNpemUgKiBzaXplb2YoR0xmaXhlZCk7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVDogICAgICAg
ICAgcmV0dXJuIG1TaXplICogc2l6ZW9mKEdMZmxvYXQpOworICAgICAgICAgIGRlZmF1bHQ6IFVO
UkVBQ0hBQkxFKCk7IHJldHVybiBtU2l6ZSAqIHNpemVvZihHTGZsb2F0KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIEdMc2l6ZWkgc3RyaWRlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtU3RyaWRlID8gbVN0cmlkZSA6IHR5cGVTaXplKCk7CisgICAgfQorCisgICAgLy8gRnJvbSBn
bFZlcnRleEF0dHJpYlBvaW50ZXIKKyAgICBHTGVudW0gbVR5cGU7CisgICAgR0xpbnQgbVNpemU7
CisgICAgYm9vbCBtTm9ybWFsaXplZDsKKyAgICBHTHNpemVpIG1TdHJpZGU7ICAgLy8gMCBtZWFu
cyBuYXR1cmFsIHN0cmlkZQorCisgICAgdW5pb24KKyAgICB7CisgICAgICAgIGNvbnN0IHZvaWQg
Km1Qb2ludGVyOworICAgICAgICBpbnRwdHJfdCBtT2Zmc2V0OworICAgIH07CisKKyAgICBCaW5k
aW5nUG9pbnRlcjxCdWZmZXI+IG1Cb3VuZEJ1ZmZlcjsgICAvLyBDYXB0dXJlZCB3aGVuIGdsVmVy
dGV4QXR0cmliUG9pbnRlciBpcyBjYWxsZWQuCisKKyAgICBib29sIG1BcnJheUVuYWJsZWQ7ICAg
Ly8gRnJvbSBnbEVuYWJsZS9EaXNhYmxlVmVydGV4QXR0cmliQXJyYXkKKyAgICBmbG9hdCBtQ3Vy
cmVudFZhbHVlWzRdOyAgIC8vIEZyb20gZ2xWZXJ0ZXhBdHRyaWIKKyAgICB1bnNpZ25lZCBpbnQg
bURpdmlzb3I7Cit9OworCisvLyBIZWxwZXIgc3RydWN0dXJlIHRvIHN0b3JlIGFsbCByYXcgc3Rh
dGUKK3N0cnVjdCBTdGF0ZQoreworICAgIENvbG9yIGNvbG9yQ2xlYXJWYWx1ZTsKKyAgICBHTGNs
YW1wZiBkZXB0aENsZWFyVmFsdWU7CisgICAgaW50IHN0ZW5jaWxDbGVhclZhbHVlOworCisgICAg
UmFzdGVyaXplclN0YXRlIHJhc3Rlcml6ZXI7CisgICAgYm9vbCBzY2lzc29yVGVzdDsKKyAgICBS
ZWN0YW5nbGUgc2Npc3NvcjsKKworICAgIEJsZW5kU3RhdGUgYmxlbmQ7CisgICAgQ29sb3IgYmxl
bmRDb2xvcjsKKyAgICBib29sIHNhbXBsZUNvdmVyYWdlOworICAgIEdMY2xhbXBmIHNhbXBsZUNv
dmVyYWdlVmFsdWU7CisgICAgYm9vbCBzYW1wbGVDb3ZlcmFnZUludmVydDsKKworICAgIERlcHRo
U3RlbmNpbFN0YXRlIGRlcHRoU3RlbmNpbDsKKyAgICBHTGludCBzdGVuY2lsUmVmOworICAgIEdM
aW50IHN0ZW5jaWxCYWNrUmVmOworCisgICAgR0xmbG9hdCBsaW5lV2lkdGg7CisKKyAgICBHTGVu
dW0gZ2VuZXJhdGVNaXBtYXBIaW50OworICAgIEdMZW51bSBmcmFnbWVudFNoYWRlckRlcml2YXRp
dmVIaW50OworCisgICAgUmVjdGFuZ2xlIHZpZXdwb3J0OworICAgIGZsb2F0IHpOZWFyOworICAg
IGZsb2F0IHpGYXI7CisKKyAgICB1bnNpZ25lZCBpbnQgYWN0aXZlU2FtcGxlcjsgICAvLyBBY3Rp
dmUgdGV4dHVyZSB1bml0IHNlbGVjdG9yIC0gR0xfVEVYVFVSRTAKKyAgICBCaW5kaW5nUG9pbnRl
cjxCdWZmZXI+IGFycmF5QnVmZmVyOworICAgIEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gZWxlbWVu
dEFycmF5QnVmZmVyOworICAgIEdMdWludCByZWFkRnJhbWVidWZmZXI7CisgICAgR0x1aW50IGRy
YXdGcmFtZWJ1ZmZlcjsKKyAgICBCaW5kaW5nUG9pbnRlcjxSZW5kZXJidWZmZXI+IHJlbmRlcmJ1
ZmZlcjsKKyAgICBHTHVpbnQgY3VycmVudFByb2dyYW07CisKKyAgICBWZXJ0ZXhBdHRyaWJ1dGUg
dmVydGV4QXR0cmlidXRlW01BWF9WRVJURVhfQVRUUklCU107CisgICAgQmluZGluZ1BvaW50ZXI8
VGV4dHVyZT4gc2FtcGxlclRleHR1cmVbVEVYVFVSRV9UWVBFX0NPVU5UXVtJTVBMRU1FTlRBVElP
Tl9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU107CisgICAgQmluZGluZ1BvaW50ZXI8
UXVlcnk+IGFjdGl2ZVF1ZXJ5W1FVRVJZX1RZUEVfQ09VTlRdOworCisgICAgR0xpbnQgdW5wYWNr
QWxpZ25tZW50OworICAgIEdMaW50IHBhY2tBbGlnbm1lbnQ7CisgICAgYm9vbCBwYWNrUmV2ZXJz
ZVJvd09yZGVyOworfTsKKworY2xhc3MgQ29udGV4dAoreworICBwdWJsaWM6CisgICAgQ29udGV4
dChjb25zdCBnbDo6Q29udGV4dCAqc2hhcmVDb250ZXh0LCByeDo6UmVuZGVyZXIgKnJlbmRlcmVy
LCBib29sIG5vdGlmeVJlc2V0cywgYm9vbCByb2J1c3RBY2Nlc3MpOworCisgICAgfkNvbnRleHQo
KTsKKworICAgIHZvaWQgbWFrZUN1cnJlbnQoZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKKworICAg
IHZpcnR1YWwgdm9pZCBtYXJrQ29udGV4dExvc3QoKTsKKyAgICBib29sIGlzQ29udGV4dExvc3Qo
KTsKKworICAgIC8vIFN0YXRlIG1hbmlwdWxhdGlvbgorICAgIHZvaWQgc2V0Q2xlYXJDb2xvcihm
bG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSk7CisKKyAgICB2
b2lkIHNldENsZWFyRGVwdGgoZmxvYXQgZGVwdGgpOworCisgICAgdm9pZCBzZXRDbGVhclN0ZW5j
aWwoaW50IHN0ZW5jaWwpOworCisgICAgdm9pZCBzZXRDdWxsRmFjZShib29sIGVuYWJsZWQpOwor
ICAgIGJvb2wgaXNDdWxsRmFjZUVuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0Q3VsbE1v
ZGUoR0xlbnVtIG1vZGUpOworCisgICAgdm9pZCBzZXRGcm9udEZhY2UoR0xlbnVtIGZyb250KTsK
KworICAgIHZvaWQgc2V0RGVwdGhUZXN0KGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCBpc0RlcHRo
VGVzdEVuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0RGVwdGhGdW5jKEdMZW51bSBkZXB0
aEZ1bmMpOworCisgICAgdm9pZCBzZXREZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFy
KTsKKyAgICAKKyAgICB2b2lkIHNldEJsZW5kKGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCBpc0Js
ZW5kRW5hYmxlZCgpIGNvbnN0OworCisgICAgdm9pZCBzZXRCbGVuZEZhY3RvcnMoR0xlbnVtIHNv
dXJjZVJHQiwgR0xlbnVtIGRlc3RSR0IsIEdMZW51bSBzb3VyY2VBbHBoYSwgR0xlbnVtIGRlc3RB
bHBoYSk7CisgICAgdm9pZCBzZXRCbGVuZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZs
b2F0IGJsdWUsIGZsb2F0IGFscGhhKTsKKyAgICB2b2lkIHNldEJsZW5kRXF1YXRpb24oR0xlbnVt
IHJnYkVxdWF0aW9uLCBHTGVudW0gYWxwaGFFcXVhdGlvbik7CisKKyAgICB2b2lkIHNldFN0ZW5j
aWxUZXN0KGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCBpc1N0ZW5jaWxUZXN0RW5hYmxlZCgpIGNv
bnN0OworCisgICAgdm9pZCBzZXRTdGVuY2lsUGFyYW1zKEdMZW51bSBzdGVuY2lsRnVuYywgR0xp
bnQgc3RlbmNpbFJlZiwgR0x1aW50IHN0ZW5jaWxNYXNrKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxC
YWNrUGFyYW1zKEdMZW51bSBzdGVuY2lsQmFja0Z1bmMsIEdMaW50IHN0ZW5jaWxCYWNrUmVmLCBH
THVpbnQgc3RlbmNpbEJhY2tNYXNrKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxXcml0ZW1hc2soR0x1
aW50IHN0ZW5jaWxXcml0ZW1hc2spOworICAgIHZvaWQgc2V0U3RlbmNpbEJhY2tXcml0ZW1hc2so
R0x1aW50IHN0ZW5jaWxCYWNrV3JpdGVtYXNrKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxPcGVyYXRp
b25zKEdMZW51bSBzdGVuY2lsRmFpbCwgR0xlbnVtIHN0ZW5jaWxQYXNzRGVwdGhGYWlsLCBHTGVu
dW0gc3RlbmNpbFBhc3NEZXB0aFBhc3MpOworICAgIHZvaWQgc2V0U3RlbmNpbEJhY2tPcGVyYXRp
b25zKEdMZW51bSBzdGVuY2lsQmFja0ZhaWwsIEdMZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0aEZh
aWwsIEdMZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MpOworCisgICAgdm9pZCBzZXRQb2x5
Z29uT2Zmc2V0RmlsbChib29sIGVuYWJsZWQpOworICAgIGJvb2wgaXNQb2x5Z29uT2Zmc2V0Rmls
bEVuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0UG9seWdvbk9mZnNldFBhcmFtcyhHTGZs
b2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cyk7CisKKyAgICB2b2lkIHNldFNhbXBsZUFscGhhVG9D
b3ZlcmFnZShib29sIGVuYWJsZWQpOworICAgIGJvb2wgaXNTYW1wbGVBbHBoYVRvQ292ZXJhZ2VF
bmFibGVkKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldFNhbXBsZUNvdmVyYWdlKGJvb2wgZW5hYmxl
ZCk7CisgICAgYm9vbCBpc1NhbXBsZUNvdmVyYWdlRW5hYmxlZCgpIGNvbnN0OworCisgICAgdm9p
ZCBzZXRTYW1wbGVDb3ZlcmFnZVBhcmFtcyhHTGNsYW1wZiB2YWx1ZSwgYm9vbCBpbnZlcnQpOwor
CisgICAgdm9pZCBzZXRTY2lzc29yVGVzdChib29sIGVuYWJsZWQpOworICAgIGJvb2wgaXNTY2lz
c29yVGVzdEVuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0RGl0aGVyKGJvb2wgZW5hYmxl
ZCk7CisgICAgYm9vbCBpc0RpdGhlckVuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0TGlu
ZVdpZHRoKEdMZmxvYXQgd2lkdGgpOworCisgICAgdm9pZCBzZXRHZW5lcmF0ZU1pcG1hcEhpbnQo
R0xlbnVtIGhpbnQpOworICAgIHZvaWQgc2V0RnJhZ21lbnRTaGFkZXJEZXJpdmF0aXZlSGludChH
TGVudW0gaGludCk7CisKKyAgICB2b2lkIHNldFZpZXdwb3J0UGFyYW1zKEdMaW50IHgsIEdMaW50
IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKworICAgIHZvaWQgc2V0U2Npc3Nv
clBhcmFtcyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7
CisKKyAgICB2b2lkIHNldENvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVl
LCBib29sIGFscGhhKTsKKyAgICB2b2lkIHNldERlcHRoTWFzayhib29sIG1hc2spOworCisgICAg
dm9pZCBzZXRBY3RpdmVTYW1wbGVyKHVuc2lnbmVkIGludCBhY3RpdmUpOworCisgICAgR0x1aW50
IGdldFJlYWRGcmFtZWJ1ZmZlckhhbmRsZSgpIGNvbnN0OworICAgIEdMdWludCBnZXREcmF3RnJh
bWVidWZmZXJIYW5kbGUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0UmVuZGVyYnVmZmVySGFuZGxl
KCkgY29uc3Q7CisKKyAgICBHTHVpbnQgZ2V0QXJyYXlCdWZmZXJIYW5kbGUoKSBjb25zdDsKKwor
ICAgIEdMdWludCBnZXRBY3RpdmVRdWVyeShHTGVudW0gdGFyZ2V0KSBjb25zdDsKKworICAgIHZv
aWQgc2V0RW5hYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgaW50IGF0dHJpYk51bSwgYm9v
bCBlbmFibGVkKTsKKyAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmdldFZlcnRleEF0dHJpYlN0
YXRlKHVuc2lnbmVkIGludCBhdHRyaWJOdW0pOworICAgIHZvaWQgc2V0VmVydGV4QXR0cmliU3Rh
dGUodW5zaWduZWQgaW50IGF0dHJpYk51bSwgQnVmZmVyICpib3VuZEJ1ZmZlciwgR0xpbnQgc2l6
ZSwgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG5vcm1h
bGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkICpwb2ludGVyKTsKKyAgICBjb25zdCB2
b2lkICpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVyKHVuc2lnbmVkIGludCBhdHRyaWJOdW0pIGNvbnN0
OworCisgICAgdm9pZCBzZXRVbnBhY2tBbGlnbm1lbnQoR0xpbnQgYWxpZ25tZW50KTsKKyAgICBH
TGludCBnZXRVbnBhY2tBbGlnbm1lbnQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0UGFja0FsaWdu
bWVudChHTGludCBhbGlnbm1lbnQpOworICAgIEdMaW50IGdldFBhY2tBbGlnbm1lbnQoKSBjb25z
dDsKKworICAgIHZvaWQgc2V0UGFja1JldmVyc2VSb3dPcmRlcihib29sIHJldmVyc2VSb3dPcmRl
cik7CisgICAgYm9vbCBnZXRQYWNrUmV2ZXJzZVJvd09yZGVyKCkgY29uc3Q7CisKKyAgICAvLyBU
aGVzZSBjcmVhdGUgIGFuZCBkZXN0cm95IG1ldGhvZHMgYXJlIG1lcmVseSBwYXNzLXRocm91Z2hz
IHRvIAorICAgIC8vIFJlc291cmNlTWFuYWdlciwgd2hpY2ggb3ducyB0aGVzZSBvYmplY3QgdHlw
ZXMKKyAgICBHTHVpbnQgY3JlYXRlQnVmZmVyKCk7CisgICAgR0x1aW50IGNyZWF0ZVNoYWRlcihH
TGVudW0gdHlwZSk7CisgICAgR0x1aW50IGNyZWF0ZVByb2dyYW0oKTsKKyAgICBHTHVpbnQgY3Jl
YXRlVGV4dHVyZSgpOworICAgIEdMdWludCBjcmVhdGVSZW5kZXJidWZmZXIoKTsKKworICAgIHZv
aWQgZGVsZXRlQnVmZmVyKEdMdWludCBidWZmZXIpOworICAgIHZvaWQgZGVsZXRlU2hhZGVyKEdM
dWludCBzaGFkZXIpOworICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSk7Cisg
ICAgdm9pZCBkZWxldGVUZXh0dXJlKEdMdWludCB0ZXh0dXJlKTsKKyAgICB2b2lkIGRlbGV0ZVJl
bmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVyKTsKKworICAgIC8vIEZyYW1lYnVmZmVycyBh
cmUgb3duZWQgYnkgdGhlIENvbnRleHQsIHNvIHRoZXNlIG1ldGhvZHMgZG8gbm90IHBhc3MgdGhy
b3VnaAorICAgIEdMdWludCBjcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIHZvaWQgZGVsZXRlRnJh
bWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKTsKKworICAgIC8vIEZlbmNlcyBhcmUgb3duZWQg
YnkgdGhlIENvbnRleHQuCisgICAgR0x1aW50IGNyZWF0ZUZlbmNlKCk7CisgICAgdm9pZCBkZWxl
dGVGZW5jZShHTHVpbnQgZmVuY2UpOworICAgIAorICAgIC8vIFF1ZXJpZXMgYXJlIG93bmVkIGJ5
IHRoZSBDb250ZXh0OworICAgIEdMdWludCBjcmVhdGVRdWVyeSgpOworICAgIHZvaWQgZGVsZXRl
UXVlcnkoR0x1aW50IHF1ZXJ5KTsKKworICAgIHZvaWQgYmluZEFycmF5QnVmZmVyKEdMdWludCBi
dWZmZXIpOworICAgIHZvaWQgYmluZEVsZW1lbnRBcnJheUJ1ZmZlcihHTHVpbnQgYnVmZmVyKTsK
KyAgICB2b2lkIGJpbmRUZXh0dXJlMkQoR0x1aW50IHRleHR1cmUpOworICAgIHZvaWQgYmluZFRl
eHR1cmVDdWJlTWFwKEdMdWludCB0ZXh0dXJlKTsKKyAgICB2b2lkIGJpbmRSZWFkRnJhbWVidWZm
ZXIoR0x1aW50IGZyYW1lYnVmZmVyKTsKKyAgICB2b2lkIGJpbmREcmF3RnJhbWVidWZmZXIoR0x1
aW50IGZyYW1lYnVmZmVyKTsKKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRl
cmJ1ZmZlcik7CisgICAgdm9pZCB1c2VQcm9ncmFtKEdMdWludCBwcm9ncmFtKTsKKyAgICB2b2lk
IGxpbmtQcm9ncmFtKEdMdWludCBwcm9ncmFtKTsKKyAgICB2b2lkIHNldFByb2dyYW1CaW5hcnko
R0x1aW50IHByb2dyYW0sIGNvbnN0IHZvaWQgKmJpbmFyeSwgR0xpbnQgbGVuZ3RoKTsKKworICAg
IHZvaWQgYmVnaW5RdWVyeShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcXVlcnkpOworICAgIHZvaWQg
ZW5kUXVlcnkoR0xlbnVtIHRhcmdldCk7CisKKyAgICB2b2lkIHNldEZyYW1lYnVmZmVyWmVybyhG
cmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpOworCisgICAgdm9pZCBzZXRSZW5kZXJidWZmZXJTdG9y
YWdlKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMc2l6ZWkgc2FtcGxlcyk7CisKKyAgICB2b2lkIHNldFZlcnRleEF0dHJpYihHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcyk7CisgICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJEaXZp
c29yKEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpOworCisgICAgQnVmZmVyICpnZXRCdWZm
ZXIoR0x1aW50IGhhbmRsZSk7CisgICAgRmVuY2UgKmdldEZlbmNlKEdMdWludCBoYW5kbGUpOwor
ICAgIFNoYWRlciAqZ2V0U2hhZGVyKEdMdWludCBoYW5kbGUpOworICAgIFByb2dyYW0gKmdldFBy
b2dyYW0oR0x1aW50IGhhbmRsZSk7CisgICAgVGV4dHVyZSAqZ2V0VGV4dHVyZShHTHVpbnQgaGFu
ZGxlKTsKKyAgICBGcmFtZWJ1ZmZlciAqZ2V0RnJhbWVidWZmZXIoR0x1aW50IGhhbmRsZSk7Cisg
ICAgUmVuZGVyYnVmZmVyICpnZXRSZW5kZXJidWZmZXIoR0x1aW50IGhhbmRsZSk7CisgICAgUXVl
cnkgKmdldFF1ZXJ5KEdMdWludCBoYW5kbGUsIGJvb2wgY3JlYXRlLCBHTGVudW0gdHlwZSk7CisK
KyAgICBCdWZmZXIgKmdldEFycmF5QnVmZmVyKCk7CisgICAgQnVmZmVyICpnZXRFbGVtZW50QXJy
YXlCdWZmZXIoKTsKKyAgICBQcm9ncmFtQmluYXJ5ICpnZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgp
OworICAgIFRleHR1cmUyRCAqZ2V0VGV4dHVyZTJEKCk7CisgICAgVGV4dHVyZUN1YmVNYXAgKmdl
dFRleHR1cmVDdWJlTWFwKCk7CisgICAgVGV4dHVyZSAqZ2V0U2FtcGxlclRleHR1cmUodW5zaWdu
ZWQgaW50IHNhbXBsZXIsIFRleHR1cmVUeXBlIHR5cGUpOworICAgIEZyYW1lYnVmZmVyICpnZXRS
ZWFkRnJhbWVidWZmZXIoKTsKKyAgICBGcmFtZWJ1ZmZlciAqZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7
CisKKyAgICBib29sIGdldEZsb2F0dihHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7Cisg
ICAgYm9vbCBnZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworICAgIGJv
b2wgZ2V0Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcyk7CisKKyAgICBi
b29sIGdldFF1ZXJ5UGFyYW1ldGVySW5mbyhHTGVudW0gcG5hbWUsIEdMZW51bSAqdHlwZSwgdW5z
aWduZWQgaW50ICpudW1QYXJhbXMpOworCisgICAgdm9pZCByZWFkUGl4ZWxzKEdMaW50IHgsIEdM
aW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwgR0xzaXplaSAqYnVmU2l6ZSwgdm9pZCogcGl4ZWxzKTsKKyAgICB2b2lkIGNsZWFy
KEdMYml0ZmllbGQgbWFzayk7CisgICAgdm9pZCBkcmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTGlu
dCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworICAgIHZvaWQgZHJh
d0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qg
R0x2b2lkICppbmRpY2VzLCBHTHNpemVpIGluc3RhbmNlcyk7CisgICAgdm9pZCBzeW5jKGJvb2wg
YmxvY2spOyAgIC8vIGZsdXNoL2ZpbmlzaAorCisgICAgdm9pZCByZWNvcmRJbnZhbGlkRW51bSgp
OworICAgIHZvaWQgcmVjb3JkSW52YWxpZFZhbHVlKCk7CisgICAgdm9pZCByZWNvcmRJbnZhbGlk
T3BlcmF0aW9uKCk7CisgICAgdm9pZCByZWNvcmRPdXRPZk1lbW9yeSgpOworICAgIHZvaWQgcmVj
b3JkSW52YWxpZEZyYW1lYnVmZmVyT3BlcmF0aW9uKCk7CisKKyAgICBHTGVudW0gZ2V0RXJyb3Io
KTsKKyAgICBHTGVudW0gZ2V0UmVzZXRTdGF0dXMoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZXNl
dE5vdGlmaWNhdGlvbkVuYWJsZWQoKTsKKworICAgIGludCBnZXRNYWpvclNoYWRlck1vZGVsKCkg
Y29uc3Q7CisgICAgZmxvYXQgZ2V0TWF4aW11bVBvaW50U2l6ZSgpIGNvbnN0OworICAgIHVuc2ln
bmVkIGludCBnZXRNYXhpbXVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0OworICAg
IGludCBnZXRNYXhpbXVtUmVuZGVyYnVmZmVyRGltZW5zaW9uKCkgY29uc3Q7CisgICAgaW50IGdl
dE1heGltdW1UZXh0dXJlRGltZW5zaW9uKCkgY29uc3Q7CisgICAgaW50IGdldE1heGltdW1DdWJl
VGV4dHVyZURpbWVuc2lvbigpIGNvbnN0OworICAgIGludCBnZXRNYXhpbXVtVGV4dHVyZUxldmVs
KCkgY29uc3Q7CisgICAgdW5zaWduZWQgaW50IGdldE1heGltdW1SZW5kZXJUYXJnZXRzKCkgY29u
c3Q7CisgICAgR0xzaXplaSBnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgY29uc3Q7CisgICAgY29u
c3QgY2hhciAqZ2V0RXh0ZW5zaW9uU3RyaW5nKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciAqZ2V0
UmVuZGVyZXJTdHJpbmcoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzRXZlbnRRdWVyaWVzKCkg
Y29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c09jY2x1c2lvblF1ZXJpZXMoKSBjb25zdDsKKyAgICBi
b29sIHN1cHBvcnRzQkdSQVRleHR1cmVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0RYVDFU
ZXh0dXJlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNEWFQzVGV4dHVyZXMoKSBjb25zdDsK
KyAgICBib29sIHN1cHBvcnRzRFhUNVRleHR1cmVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0
c0Zsb2F0MzJUZXh0dXJlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNGbG9hdDMyTGluZWFy
RmlsdGVyKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0Zsb2F0MzJSZW5kZXJhYmxlVGV4dHVy
ZXMoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzRmxvYXQxNlRleHR1cmVzKCkgY29uc3Q7Cisg
ICAgYm9vbCBzdXBwb3J0c0Zsb2F0MTZMaW5lYXJGaWx0ZXIoKSBjb25zdDsKKyAgICBib29sIHN1
cHBvcnRzRmxvYXQxNlJlbmRlcmFibGVUZXh0dXJlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9y
dHNMdW1pbmFuY2VUZXh0dXJlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNMdW1pbmFuY2VB
bHBoYVRleHR1cmVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoVGV4dHVyZXMoKSBj
b25zdDsKKyAgICBib29sIHN1cHBvcnRzMzJiaXRJbmRpY2VzKCkgY29uc3Q7CisgICAgYm9vbCBz
dXBwb3J0c05vblBvd2VyMlRleHR1cmUoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzSW5zdGFu
Y2luZygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9weSgp
IGNvbnN0OworCisgICAgYm9vbCBnZXRDdXJyZW50UmVhZEZvcm1hdFR5cGUoR0xlbnVtICpmb3Jt
YXQsIEdMZW51bSAqdHlwZSk7CisKKyAgICBmbG9hdCBnZXRUZXh0dXJlTWF4QW5pc290cm9weSgp
IGNvbnN0OworCisgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoR0xpbnQgc3JjWDAsIEdMaW50IHNy
Y1kwLCBHTGludCBzcmNYMSwgR0xpbnQgc3JjWTEsIAorICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGRzdFgwLCBHTGludCBkc3RZMCwgR0xpbnQgZHN0WDEsIEdMaW50IGRzdFkxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzayk7CisKKyAgcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oQ29udGV4dCk7CisKKyAgICBib29sIGFwcGx5UmVu
ZGVyVGFyZ2V0KEdMZW51bSBkcmF3TW9kZSwgYm9vbCBpZ25vcmVWaWV3cG9ydCk7CisgICAgdm9p
ZCBhcHBseVN0YXRlKEdMZW51bSBkcmF3TW9kZSk7CisgICAgdm9pZCBhcHBseVNoYWRlcnMoKTsK
KyAgICB2b2lkIGFwcGx5VGV4dHVyZXMoKTsKKyAgICB2b2lkIGFwcGx5VGV4dHVyZXMoU2FtcGxl
clR5cGUgdHlwZSk7CisKKyAgICB2b2lkIGRldGFjaEJ1ZmZlcihHTHVpbnQgYnVmZmVyKTsKKyAg
ICB2b2lkIGRldGFjaFRleHR1cmUoR0x1aW50IHRleHR1cmUpOworICAgIHZvaWQgZGV0YWNoRnJh
bWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKTsKKyAgICB2b2lkIGRldGFjaFJlbmRlcmJ1ZmZl
cihHTHVpbnQgcmVuZGVyYnVmZmVyKTsKKworICAgIFRleHR1cmUgKmdldEluY29tcGxldGVUZXh0
dXJlKFRleHR1cmVUeXBlIHR5cGUpOworCisgICAgYm9vbCBza2lwRHJhdyhHTGVudW0gZHJhd01v
ZGUpOworCisgICAgdm9pZCBpbml0RXh0ZW5zaW9uU3RyaW5nKCk7CisgICAgdm9pZCBpbml0UmVu
ZGVyZXJTdHJpbmcoKTsKKworICAgIHJ4OjpSZW5kZXJlciAqY29uc3QgbVJlbmRlcmVyOworCisg
ICAgU3RhdGUgbVN0YXRlOworCisgICAgQmluZGluZ1BvaW50ZXI8VGV4dHVyZTJEPiBtVGV4dHVy
ZTJEWmVybzsKKyAgICBCaW5kaW5nUG9pbnRlcjxUZXh0dXJlQ3ViZU1hcD4gbVRleHR1cmVDdWJl
TWFwWmVybzsKKworI2lmbmRlZiBIQVNIX01BUAorIyBpZmRlZiBfTVNDX1ZFUgorIyAgZGVmaW5l
IEhBU0hfTUFQIHN0ZGV4dDo6aGFzaF9tYXAKKyMgZWxzZQorIyAgZGVmaW5lIEhBU0hfTUFQIHN0
ZDo6dW5vcmRlcmVkX21hcAorIyBlbmRpZgorI2VuZGlmCisKKyAgICB0eXBlZGVmIEhBU0hfTUFQ
PEdMdWludCwgRnJhbWVidWZmZXIqPiBGcmFtZWJ1ZmZlck1hcDsKKyAgICBGcmFtZWJ1ZmZlck1h
cCBtRnJhbWVidWZmZXJNYXA7CisgICAgSGFuZGxlQWxsb2NhdG9yIG1GcmFtZWJ1ZmZlckhhbmRs
ZUFsbG9jYXRvcjsKKworICAgIHR5cGVkZWYgSEFTSF9NQVA8R0x1aW50LCBGZW5jZSo+IEZlbmNl
TWFwOworICAgIEZlbmNlTWFwIG1GZW5jZU1hcDsKKyAgICBIYW5kbGVBbGxvY2F0b3IgbUZlbmNl
SGFuZGxlQWxsb2NhdG9yOworCisgICAgdHlwZWRlZiBIQVNIX01BUDxHTHVpbnQsIFF1ZXJ5Kj4g
UXVlcnlNYXA7CisgICAgUXVlcnlNYXAgbVF1ZXJ5TWFwOworICAgIEhhbmRsZUFsbG9jYXRvciBt
UXVlcnlIYW5kbGVBbGxvY2F0b3I7CisKKyAgICBjb25zdCBjaGFyICptRXh0ZW5zaW9uU3RyaW5n
OworICAgIGNvbnN0IGNoYXIgKm1SZW5kZXJlclN0cmluZzsKKyAgICAKKyAgICBCaW5kaW5nUG9p
bnRlcjxUZXh0dXJlPiBtSW5jb21wbGV0ZVRleHR1cmVzW1RFWFRVUkVfVFlQRV9DT1VOVF07CisK
KyAgICAvLyBSZWNvcmRlZCBlcnJvcnMKKyAgICBib29sIG1JbnZhbGlkRW51bTsKKyAgICBib29s
IG1JbnZhbGlkVmFsdWU7CisgICAgYm9vbCBtSW52YWxpZE9wZXJhdGlvbjsKKyAgICBib29sIG1P
dXRPZk1lbW9yeTsKKyAgICBib29sIG1JbnZhbGlkRnJhbWVidWZmZXJPcGVyYXRpb247CisKKyAg
ICAvLyBDdXJyZW50L2xvc3QgY29udGV4dCBmbGFncworICAgIGJvb2wgbUhhc0JlZW5DdXJyZW50
OworICAgIGJvb2wgbUNvbnRleHRMb3N0OworICAgIEdMZW51bSBtUmVzZXRTdGF0dXM7CisgICAg
R0xlbnVtIG1SZXNldFN0cmF0ZWd5OworICAgIGJvb2wgbVJvYnVzdEFjY2VzczsKKworICAgIEJp
bmRpbmdQb2ludGVyPFByb2dyYW1CaW5hcnk+IG1DdXJyZW50UHJvZ3JhbUJpbmFyeTsKKyAgICBG
cmFtZWJ1ZmZlciAqbUJvdW5kRHJhd0ZyYW1lYnVmZmVyOworCisgICAgaW50IG1NYWpvclNoYWRl
ck1vZGVsOworICAgIGZsb2F0IG1NYXhpbXVtUG9pbnRTaXplOworICAgIGJvb2wgbVN1cHBvcnRz
VmVydGV4VGV4dHVyZTsKKyAgICBib29sIG1TdXBwb3J0c05vblBvd2VyMlRleHR1cmU7CisgICAg
Ym9vbCBtU3VwcG9ydHNJbnN0YW5jaW5nOworICAgIGludCAgbU1heFZpZXdwb3J0RGltZW5zaW9u
OworICAgIGludCAgbU1heFJlbmRlcmJ1ZmZlckRpbWVuc2lvbjsKKyAgICBpbnQgIG1NYXhUZXh0
dXJlRGltZW5zaW9uOworICAgIGludCAgbU1heEN1YmVUZXh0dXJlRGltZW5zaW9uOworICAgIGlu
dCAgbU1heFRleHR1cmVMZXZlbDsKKyAgICBmbG9hdCBtTWF4VGV4dHVyZUFuaXNvdHJvcHk7Cisg
ICAgYm9vbCBtU3VwcG9ydHNFdmVudFF1ZXJpZXM7CisgICAgYm9vbCBtU3VwcG9ydHNPY2NsdXNp
b25RdWVyaWVzOworICAgIGJvb2wgbVN1cHBvcnRzQkdSQVRleHR1cmVzOworICAgIGJvb2wgbVN1
cHBvcnRzRFhUMVRleHR1cmVzOworICAgIGJvb2wgbVN1cHBvcnRzRFhUM1RleHR1cmVzOworICAg
IGJvb2wgbVN1cHBvcnRzRFhUNVRleHR1cmVzOworICAgIGJvb2wgbVN1cHBvcnRzRmxvYXQzMlRl
eHR1cmVzOworICAgIGJvb2wgbVN1cHBvcnRzRmxvYXQzMkxpbmVhckZpbHRlcjsKKyAgICBib29s
IG1TdXBwb3J0c0Zsb2F0MzJSZW5kZXJhYmxlVGV4dHVyZXM7CisgICAgYm9vbCBtU3VwcG9ydHNG
bG9hdDE2VGV4dHVyZXM7CisgICAgYm9vbCBtU3VwcG9ydHNGbG9hdDE2TGluZWFyRmlsdGVyOwor
ICAgIGJvb2wgbVN1cHBvcnRzRmxvYXQxNlJlbmRlcmFibGVUZXh0dXJlczsKKyAgICBib29sIG1T
dXBwb3J0c0x1bWluYW5jZVRleHR1cmVzOworICAgIGJvb2wgbVN1cHBvcnRzTHVtaW5hbmNlQWxw
aGFUZXh0dXJlczsKKyAgICBib29sIG1TdXBwb3J0c0RlcHRoVGV4dHVyZXM7CisgICAgYm9vbCBt
U3VwcG9ydHMzMmJpdEluZGljZXM7CisgICAgYm9vbCBtU3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5p
c290cm9weTsKKyAgICBpbnQgbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0czsKKworICAgIFJl
c291cmNlTWFuYWdlciAqbVJlc291cmNlTWFuYWdlcjsKK307Cit9CisKKyNlbmRpZiAgIC8vIElO
Q0xVREVfQ09OVEVYVF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9GZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9GZW5jZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL0ZlbmNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBA
QAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBGZW5j
ZS5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpGZW5jZSBjbGFzcywgd2hpY2ggc3VwcG9ydHMgdGhl
IEdMX05WX2ZlbmNlIGV4dGVuc2lvbi4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9GZW5jZS5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZUltcGwuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaCIKKworbmFtZXNwYWNlIGdsCit7CisKK0ZlbmNlOjpG
ZW5jZShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKQoreworICAgIG1GZW5jZSA9IHJlbmRlcmVyLT5j
cmVhdGVGZW5jZSgpOworfQorCitGZW5jZTo6fkZlbmNlKCkKK3sKKyAgICBkZWxldGUgbUZlbmNl
OworfQorCitHTGJvb2xlYW4gRmVuY2U6OmlzRmVuY2UoKQoreworICAgIHJldHVybiBtRmVuY2Ut
PmlzRmVuY2UoKTsKK30KKwordm9pZCBGZW5jZTo6c2V0RmVuY2UoR0xlbnVtIGNvbmRpdGlvbikK
K3sKKyAgICBtRmVuY2UtPnNldEZlbmNlKGNvbmRpdGlvbik7Cit9CisKK0dMYm9vbGVhbiBGZW5j
ZTo6dGVzdEZlbmNlKCkKK3sKKyAgICByZXR1cm4gbUZlbmNlLT50ZXN0RmVuY2UoKTsKK30KKwor
dm9pZCBGZW5jZTo6ZmluaXNoRmVuY2UoKQoreworICAgIG1GZW5jZS0+ZmluaXNoRmVuY2UoKTsK
K30KKwordm9pZCBGZW5jZTo6Z2V0RmVuY2VpdihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMp
Cit7CisgICAgbUZlbmNlLT5nZXRGZW5jZWl2KHBuYW1lLCBwYXJhbXMpOworfQorCit9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZlbmNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GZW5jZS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GZW5jZS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBG
ZW5jZS5oOiBEZWZpbmVzIHRoZSBnbDo6RmVuY2UgY2xhc3MsIHdoaWNoIHN1cHBvcnRzIHRoZSBH
TF9OVl9mZW5jZSBleHRlbnNpb24uCisKKyNpZm5kZWYgTElCR0xFU1YyX0ZFTkNFX0hfCisjZGVm
aW5lIExJQkdMRVNWMl9GRU5DRV9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIK
KworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKK2NsYXNzIEZlbmNlSW1wbDsKK30K
KworbmFtZXNwYWNlIGdsCit7CisKK2NsYXNzIEZlbmNlCit7CisgIHB1YmxpYzoKKyAgICBleHBs
aWNpdCBGZW5jZShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKTsKKyAgICB2aXJ0dWFsIH5GZW5jZSgp
OworCisgICAgR0xib29sZWFuIGlzRmVuY2UoKTsKKyAgICB2b2lkIHNldEZlbmNlKEdMZW51bSBj
b25kaXRpb24pOworICAgIEdMYm9vbGVhbiB0ZXN0RmVuY2UoKTsKKyAgICB2b2lkIGZpbmlzaEZl
bmNlKCk7CisgICAgdm9pZCBnZXRGZW5jZWl2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7
CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oRmVuY2UpOworCisg
ICAgcng6OkZlbmNlSW1wbCAqbUZlbmNlOworfTsKKworfQorCisjZW5kaWYgICAvLyBMSUJHTEVT
VjJfRkVOQ0VfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
RmxvYXQxNlRvRmxvYXQzMi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9GbG9hdDE2VG9GbG9hdDMyLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRmxvYXQxNlRvRmxvYXQzMi5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIwNCBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgi
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworLy8gVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVk
LgorCituYW1lc3BhY2UgZ2wKK3sKKworY29uc3Qgc3RhdGljIHVuc2lnbmVkIGdfbWFudGlzc2Fb
MjA0OF0gPSB7CisgICAgMHgwMDAwMDAwMCwKKyAgICAweDMzODAwMDAwLAorICAgIDB4MzQwMDAw
MDAsCisgICAgMHgzNDQwMDAwMCwKKyAgICAweDM0ODAwMDAwLAorICAgIDB4MzRhMDAwMDAsCisg
ICAgMHgzNGMwMDAwMCwKKyAgICAweDM0ZTAwMDAwLAorICAgIDB4MzUwMDAwMDAsCisgICAgMHgz
NTEwMDAwMCwKKyAgICAweDM1MjAwMDAwLAorICAgIDB4MzUzMDAwMDAsCisgICAgMHgzNTQwMDAw
MCwKKyAgICAweDM1NTAwMDAwLAorICAgIDB4MzU2MDAwMDAsCisgICAgMHgzNTcwMDAwMCwKKyAg
ICAweDM1ODAwMDAwLAorICAgIDB4MzU4ODAwMDAsCisgICAgMHgzNTkwMDAwMCwKKyAgICAweDM1
OTgwMDAwLAorICAgIDB4MzVhMDAwMDAsCisgICAgMHgzNWE4MDAwMCwKKyAgICAweDM1YjAwMDAw
LAorICAgIDB4MzViODAwMDAsCisgICAgMHgzNWMwMDAwMCwKKyAgICAweDM1YzgwMDAwLAorICAg
IDB4MzVkMDAwMDAsCisgICAgMHgzNWQ4MDAwMCwKKyAgICAweDM1ZTAwMDAwLAorICAgIDB4MzVl
ODAwMDAsCisgICAgMHgzNWYwMDAwMCwKKyAgICAweDM1ZjgwMDAwLAorICAgIDB4MzYwMDAwMDAs
CisgICAgMHgzNjA0MDAwMCwKKyAgICAweDM2MDgwMDAwLAorICAgIDB4MzYwYzAwMDAsCisgICAg
MHgzNjEwMDAwMCwKKyAgICAweDM2MTQwMDAwLAorICAgIDB4MzYxODAwMDAsCisgICAgMHgzNjFj
MDAwMCwKKyAgICAweDM2MjAwMDAwLAorICAgIDB4MzYyNDAwMDAsCisgICAgMHgzNjI4MDAwMCwK
KyAgICAweDM2MmMwMDAwLAorICAgIDB4MzYzMDAwMDAsCisgICAgMHgzNjM0MDAwMCwKKyAgICAw
eDM2MzgwMDAwLAorICAgIDB4MzYzYzAwMDAsCisgICAgMHgzNjQwMDAwMCwKKyAgICAweDM2NDQw
MDAwLAorICAgIDB4MzY0ODAwMDAsCisgICAgMHgzNjRjMDAwMCwKKyAgICAweDM2NTAwMDAwLAor
ICAgIDB4MzY1NDAwMDAsCisgICAgMHgzNjU4MDAwMCwKKyAgICAweDM2NWMwMDAwLAorICAgIDB4
MzY2MDAwMDAsCisgICAgMHgzNjY0MDAwMCwKKyAgICAweDM2NjgwMDAwLAorICAgIDB4MzY2YzAw
MDAsCisgICAgMHgzNjcwMDAwMCwKKyAgICAweDM2NzQwMDAwLAorICAgIDB4MzY3ODAwMDAsCisg
ICAgMHgzNjdjMDAwMCwKKyAgICAweDM2ODAwMDAwLAorICAgIDB4MzY4MjAwMDAsCisgICAgMHgz
Njg0MDAwMCwKKyAgICAweDM2ODYwMDAwLAorICAgIDB4MzY4ODAwMDAsCisgICAgMHgzNjhhMDAw
MCwKKyAgICAweDM2OGMwMDAwLAorICAgIDB4MzY4ZTAwMDAsCisgICAgMHgzNjkwMDAwMCwKKyAg
ICAweDM2OTIwMDAwLAorICAgIDB4MzY5NDAwMDAsCisgICAgMHgzNjk2MDAwMCwKKyAgICAweDM2
OTgwMDAwLAorICAgIDB4MzY5YTAwMDAsCisgICAgMHgzNjljMDAwMCwKKyAgICAweDM2OWUwMDAw
LAorICAgIDB4MzZhMDAwMDAsCisgICAgMHgzNmEyMDAwMCwKKyAgICAweDM2YTQwMDAwLAorICAg
IDB4MzZhNjAwMDAsCisgICAgMHgzNmE4MDAwMCwKKyAgICAweDM2YWEwMDAwLAorICAgIDB4MzZh
YzAwMDAsCisgICAgMHgzNmFlMDAwMCwKKyAgICAweDM2YjAwMDAwLAorICAgIDB4MzZiMjAwMDAs
CisgICAgMHgzNmI0MDAwMCwKKyAgICAweDM2YjYwMDAwLAorICAgIDB4MzZiODAwMDAsCisgICAg
MHgzNmJhMDAwMCwKKyAgICAweDM2YmMwMDAwLAorICAgIDB4MzZiZTAwMDAsCisgICAgMHgzNmMw
MDAwMCwKKyAgICAweDM2YzIwMDAwLAorICAgIDB4MzZjNDAwMDAsCisgICAgMHgzNmM2MDAwMCwK
KyAgICAweDM2YzgwMDAwLAorICAgIDB4MzZjYTAwMDAsCisgICAgMHgzNmNjMDAwMCwKKyAgICAw
eDM2Y2UwMDAwLAorICAgIDB4MzZkMDAwMDAsCisgICAgMHgzNmQyMDAwMCwKKyAgICAweDM2ZDQw
MDAwLAorICAgIDB4MzZkNjAwMDAsCisgICAgMHgzNmQ4MDAwMCwKKyAgICAweDM2ZGEwMDAwLAor
ICAgIDB4MzZkYzAwMDAsCisgICAgMHgzNmRlMDAwMCwKKyAgICAweDM2ZTAwMDAwLAorICAgIDB4
MzZlMjAwMDAsCisgICAgMHgzNmU0MDAwMCwKKyAgICAweDM2ZTYwMDAwLAorICAgIDB4MzZlODAw
MDAsCisgICAgMHgzNmVhMDAwMCwKKyAgICAweDM2ZWMwMDAwLAorICAgIDB4MzZlZTAwMDAsCisg
ICAgMHgzNmYwMDAwMCwKKyAgICAweDM2ZjIwMDAwLAorICAgIDB4MzZmNDAwMDAsCisgICAgMHgz
NmY2MDAwMCwKKyAgICAweDM2ZjgwMDAwLAorICAgIDB4MzZmYTAwMDAsCisgICAgMHgzNmZjMDAw
MCwKKyAgICAweDM2ZmUwMDAwLAorICAgIDB4MzcwMDAwMDAsCisgICAgMHgzNzAxMDAwMCwKKyAg
ICAweDM3MDIwMDAwLAorICAgIDB4MzcwMzAwMDAsCisgICAgMHgzNzA0MDAwMCwKKyAgICAweDM3
MDUwMDAwLAorICAgIDB4MzcwNjAwMDAsCisgICAgMHgzNzA3MDAwMCwKKyAgICAweDM3MDgwMDAw
LAorICAgIDB4MzcwOTAwMDAsCisgICAgMHgzNzBhMDAwMCwKKyAgICAweDM3MGIwMDAwLAorICAg
IDB4MzcwYzAwMDAsCisgICAgMHgzNzBkMDAwMCwKKyAgICAweDM3MGUwMDAwLAorICAgIDB4Mzcw
ZjAwMDAsCisgICAgMHgzNzEwMDAwMCwKKyAgICAweDM3MTEwMDAwLAorICAgIDB4MzcxMjAwMDAs
CisgICAgMHgzNzEzMDAwMCwKKyAgICAweDM3MTQwMDAwLAorICAgIDB4MzcxNTAwMDAsCisgICAg
MHgzNzE2MDAwMCwKKyAgICAweDM3MTcwMDAwLAorICAgIDB4MzcxODAwMDAsCisgICAgMHgzNzE5
MDAwMCwKKyAgICAweDM3MWEwMDAwLAorICAgIDB4MzcxYjAwMDAsCisgICAgMHgzNzFjMDAwMCwK
KyAgICAweDM3MWQwMDAwLAorICAgIDB4MzcxZTAwMDAsCisgICAgMHgzNzFmMDAwMCwKKyAgICAw
eDM3MjAwMDAwLAorICAgIDB4MzcyMTAwMDAsCisgICAgMHgzNzIyMDAwMCwKKyAgICAweDM3MjMw
MDAwLAorICAgIDB4MzcyNDAwMDAsCisgICAgMHgzNzI1MDAwMCwKKyAgICAweDM3MjYwMDAwLAor
ICAgIDB4MzcyNzAwMDAsCisgICAgMHgzNzI4MDAwMCwKKyAgICAweDM3MjkwMDAwLAorICAgIDB4
MzcyYTAwMDAsCisgICAgMHgzNzJiMDAwMCwKKyAgICAweDM3MmMwMDAwLAorICAgIDB4MzcyZDAw
MDAsCisgICAgMHgzNzJlMDAwMCwKKyAgICAweDM3MmYwMDAwLAorICAgIDB4MzczMDAwMDAsCisg
ICAgMHgzNzMxMDAwMCwKKyAgICAweDM3MzIwMDAwLAorICAgIDB4MzczMzAwMDAsCisgICAgMHgz
NzM0MDAwMCwKKyAgICAweDM3MzUwMDAwLAorICAgIDB4MzczNjAwMDAsCisgICAgMHgzNzM3MDAw
MCwKKyAgICAweDM3MzgwMDAwLAorICAgIDB4MzczOTAwMDAsCisgICAgMHgzNzNhMDAwMCwKKyAg
ICAweDM3M2IwMDAwLAorICAgIDB4MzczYzAwMDAsCisgICAgMHgzNzNkMDAwMCwKKyAgICAweDM3
M2UwMDAwLAorICAgIDB4MzczZjAwMDAsCisgICAgMHgzNzQwMDAwMCwKKyAgICAweDM3NDEwMDAw
LAorICAgIDB4Mzc0MjAwMDAsCisgICAgMHgzNzQzMDAwMCwKKyAgICAweDM3NDQwMDAwLAorICAg
IDB4Mzc0NTAwMDAsCisgICAgMHgzNzQ2MDAwMCwKKyAgICAweDM3NDcwMDAwLAorICAgIDB4Mzc0
ODAwMDAsCisgICAgMHgzNzQ5MDAwMCwKKyAgICAweDM3NGEwMDAwLAorICAgIDB4Mzc0YjAwMDAs
CisgICAgMHgzNzRjMDAwMCwKKyAgICAweDM3NGQwMDAwLAorICAgIDB4Mzc0ZTAwMDAsCisgICAg
MHgzNzRmMDAwMCwKKyAgICAweDM3NTAwMDAwLAorICAgIDB4Mzc1MTAwMDAsCisgICAgMHgzNzUy
MDAwMCwKKyAgICAweDM3NTMwMDAwLAorICAgIDB4Mzc1NDAwMDAsCisgICAgMHgzNzU1MDAwMCwK
KyAgICAweDM3NTYwMDAwLAorICAgIDB4Mzc1NzAwMDAsCisgICAgMHgzNzU4MDAwMCwKKyAgICAw
eDM3NTkwMDAwLAorICAgIDB4Mzc1YTAwMDAsCisgICAgMHgzNzViMDAwMCwKKyAgICAweDM3NWMw
MDAwLAorICAgIDB4Mzc1ZDAwMDAsCisgICAgMHgzNzVlMDAwMCwKKyAgICAweDM3NWYwMDAwLAor
ICAgIDB4Mzc2MDAwMDAsCisgICAgMHgzNzYxMDAwMCwKKyAgICAweDM3NjIwMDAwLAorICAgIDB4
Mzc2MzAwMDAsCisgICAgMHgzNzY0MDAwMCwKKyAgICAweDM3NjUwMDAwLAorICAgIDB4Mzc2NjAw
MDAsCisgICAgMHgzNzY3MDAwMCwKKyAgICAweDM3NjgwMDAwLAorICAgIDB4Mzc2OTAwMDAsCisg
ICAgMHgzNzZhMDAwMCwKKyAgICAweDM3NmIwMDAwLAorICAgIDB4Mzc2YzAwMDAsCisgICAgMHgz
NzZkMDAwMCwKKyAgICAweDM3NmUwMDAwLAorICAgIDB4Mzc2ZjAwMDAsCisgICAgMHgzNzcwMDAw
MCwKKyAgICAweDM3NzEwMDAwLAorICAgIDB4Mzc3MjAwMDAsCisgICAgMHgzNzczMDAwMCwKKyAg
ICAweDM3NzQwMDAwLAorICAgIDB4Mzc3NTAwMDAsCisgICAgMHgzNzc2MDAwMCwKKyAgICAweDM3
NzcwMDAwLAorICAgIDB4Mzc3ODAwMDAsCisgICAgMHgzNzc5MDAwMCwKKyAgICAweDM3N2EwMDAw
LAorICAgIDB4Mzc3YjAwMDAsCisgICAgMHgzNzdjMDAwMCwKKyAgICAweDM3N2QwMDAwLAorICAg
IDB4Mzc3ZTAwMDAsCisgICAgMHgzNzdmMDAwMCwKKyAgICAweDM3ODAwMDAwLAorICAgIDB4Mzc4
MDgwMDAsCisgICAgMHgzNzgxMDAwMCwKKyAgICAweDM3ODE4MDAwLAorICAgIDB4Mzc4MjAwMDAs
CisgICAgMHgzNzgyODAwMCwKKyAgICAweDM3ODMwMDAwLAorICAgIDB4Mzc4MzgwMDAsCisgICAg
MHgzNzg0MDAwMCwKKyAgICAweDM3ODQ4MDAwLAorICAgIDB4Mzc4NTAwMDAsCisgICAgMHgzNzg1
ODAwMCwKKyAgICAweDM3ODYwMDAwLAorICAgIDB4Mzc4NjgwMDAsCisgICAgMHgzNzg3MDAwMCwK
KyAgICAweDM3ODc4MDAwLAorICAgIDB4Mzc4ODAwMDAsCisgICAgMHgzNzg4ODAwMCwKKyAgICAw
eDM3ODkwMDAwLAorICAgIDB4Mzc4OTgwMDAsCisgICAgMHgzNzhhMDAwMCwKKyAgICAweDM3OGE4
MDAwLAorICAgIDB4Mzc4YjAwMDAsCisgICAgMHgzNzhiODAwMCwKKyAgICAweDM3OGMwMDAwLAor
ICAgIDB4Mzc4YzgwMDAsCisgICAgMHgzNzhkMDAwMCwKKyAgICAweDM3OGQ4MDAwLAorICAgIDB4
Mzc4ZTAwMDAsCisgICAgMHgzNzhlODAwMCwKKyAgICAweDM3OGYwMDAwLAorICAgIDB4Mzc4Zjgw
MDAsCisgICAgMHgzNzkwMDAwMCwKKyAgICAweDM3OTA4MDAwLAorICAgIDB4Mzc5MTAwMDAsCisg
ICAgMHgzNzkxODAwMCwKKyAgICAweDM3OTIwMDAwLAorICAgIDB4Mzc5MjgwMDAsCisgICAgMHgz
NzkzMDAwMCwKKyAgICAweDM3OTM4MDAwLAorICAgIDB4Mzc5NDAwMDAsCisgICAgMHgzNzk0ODAw
MCwKKyAgICAweDM3OTUwMDAwLAorICAgIDB4Mzc5NTgwMDAsCisgICAgMHgzNzk2MDAwMCwKKyAg
ICAweDM3OTY4MDAwLAorICAgIDB4Mzc5NzAwMDAsCisgICAgMHgzNzk3ODAwMCwKKyAgICAweDM3
OTgwMDAwLAorICAgIDB4Mzc5ODgwMDAsCisgICAgMHgzNzk5MDAwMCwKKyAgICAweDM3OTk4MDAw
LAorICAgIDB4Mzc5YTAwMDAsCisgICAgMHgzNzlhODAwMCwKKyAgICAweDM3OWIwMDAwLAorICAg
IDB4Mzc5YjgwMDAsCisgICAgMHgzNzljMDAwMCwKKyAgICAweDM3OWM4MDAwLAorICAgIDB4Mzc5
ZDAwMDAsCisgICAgMHgzNzlkODAwMCwKKyAgICAweDM3OWUwMDAwLAorICAgIDB4Mzc5ZTgwMDAs
CisgICAgMHgzNzlmMDAwMCwKKyAgICAweDM3OWY4MDAwLAorICAgIDB4MzdhMDAwMDAsCisgICAg
MHgzN2EwODAwMCwKKyAgICAweDM3YTEwMDAwLAorICAgIDB4MzdhMTgwMDAsCisgICAgMHgzN2Ey
MDAwMCwKKyAgICAweDM3YTI4MDAwLAorICAgIDB4MzdhMzAwMDAsCisgICAgMHgzN2EzODAwMCwK
KyAgICAweDM3YTQwMDAwLAorICAgIDB4MzdhNDgwMDAsCisgICAgMHgzN2E1MDAwMCwKKyAgICAw
eDM3YTU4MDAwLAorICAgIDB4MzdhNjAwMDAsCisgICAgMHgzN2E2ODAwMCwKKyAgICAweDM3YTcw
MDAwLAorICAgIDB4MzdhNzgwMDAsCisgICAgMHgzN2E4MDAwMCwKKyAgICAweDM3YTg4MDAwLAor
ICAgIDB4MzdhOTAwMDAsCisgICAgMHgzN2E5ODAwMCwKKyAgICAweDM3YWEwMDAwLAorICAgIDB4
MzdhYTgwMDAsCisgICAgMHgzN2FiMDAwMCwKKyAgICAweDM3YWI4MDAwLAorICAgIDB4MzdhYzAw
MDAsCisgICAgMHgzN2FjODAwMCwKKyAgICAweDM3YWQwMDAwLAorICAgIDB4MzdhZDgwMDAsCisg
ICAgMHgzN2FlMDAwMCwKKyAgICAweDM3YWU4MDAwLAorICAgIDB4MzdhZjAwMDAsCisgICAgMHgz
N2FmODAwMCwKKyAgICAweDM3YjAwMDAwLAorICAgIDB4MzdiMDgwMDAsCisgICAgMHgzN2IxMDAw
MCwKKyAgICAweDM3YjE4MDAwLAorICAgIDB4MzdiMjAwMDAsCisgICAgMHgzN2IyODAwMCwKKyAg
ICAweDM3YjMwMDAwLAorICAgIDB4MzdiMzgwMDAsCisgICAgMHgzN2I0MDAwMCwKKyAgICAweDM3
YjQ4MDAwLAorICAgIDB4MzdiNTAwMDAsCisgICAgMHgzN2I1ODAwMCwKKyAgICAweDM3YjYwMDAw
LAorICAgIDB4MzdiNjgwMDAsCisgICAgMHgzN2I3MDAwMCwKKyAgICAweDM3Yjc4MDAwLAorICAg
IDB4MzdiODAwMDAsCisgICAgMHgzN2I4ODAwMCwKKyAgICAweDM3YjkwMDAwLAorICAgIDB4Mzdi
OTgwMDAsCisgICAgMHgzN2JhMDAwMCwKKyAgICAweDM3YmE4MDAwLAorICAgIDB4MzdiYjAwMDAs
CisgICAgMHgzN2JiODAwMCwKKyAgICAweDM3YmMwMDAwLAorICAgIDB4MzdiYzgwMDAsCisgICAg
MHgzN2JkMDAwMCwKKyAgICAweDM3YmQ4MDAwLAorICAgIDB4MzdiZTAwMDAsCisgICAgMHgzN2Jl
ODAwMCwKKyAgICAweDM3YmYwMDAwLAorICAgIDB4MzdiZjgwMDAsCisgICAgMHgzN2MwMDAwMCwK
KyAgICAweDM3YzA4MDAwLAorICAgIDB4MzdjMTAwMDAsCisgICAgMHgzN2MxODAwMCwKKyAgICAw
eDM3YzIwMDAwLAorICAgIDB4MzdjMjgwMDAsCisgICAgMHgzN2MzMDAwMCwKKyAgICAweDM3YzM4
MDAwLAorICAgIDB4MzdjNDAwMDAsCisgICAgMHgzN2M0ODAwMCwKKyAgICAweDM3YzUwMDAwLAor
ICAgIDB4MzdjNTgwMDAsCisgICAgMHgzN2M2MDAwMCwKKyAgICAweDM3YzY4MDAwLAorICAgIDB4
MzdjNzAwMDAsCisgICAgMHgzN2M3ODAwMCwKKyAgICAweDM3YzgwMDAwLAorICAgIDB4MzdjODgw
MDAsCisgICAgMHgzN2M5MDAwMCwKKyAgICAweDM3Yzk4MDAwLAorICAgIDB4MzdjYTAwMDAsCisg
ICAgMHgzN2NhODAwMCwKKyAgICAweDM3Y2IwMDAwLAorICAgIDB4MzdjYjgwMDAsCisgICAgMHgz
N2NjMDAwMCwKKyAgICAweDM3Y2M4MDAwLAorICAgIDB4MzdjZDAwMDAsCisgICAgMHgzN2NkODAw
MCwKKyAgICAweDM3Y2UwMDAwLAorICAgIDB4MzdjZTgwMDAsCisgICAgMHgzN2NmMDAwMCwKKyAg
ICAweDM3Y2Y4MDAwLAorICAgIDB4MzdkMDAwMDAsCisgICAgMHgzN2QwODAwMCwKKyAgICAweDM3
ZDEwMDAwLAorICAgIDB4MzdkMTgwMDAsCisgICAgMHgzN2QyMDAwMCwKKyAgICAweDM3ZDI4MDAw
LAorICAgIDB4MzdkMzAwMDAsCisgICAgMHgzN2QzODAwMCwKKyAgICAweDM3ZDQwMDAwLAorICAg
IDB4MzdkNDgwMDAsCisgICAgMHgzN2Q1MDAwMCwKKyAgICAweDM3ZDU4MDAwLAorICAgIDB4Mzdk
NjAwMDAsCisgICAgMHgzN2Q2ODAwMCwKKyAgICAweDM3ZDcwMDAwLAorICAgIDB4MzdkNzgwMDAs
CisgICAgMHgzN2Q4MDAwMCwKKyAgICAweDM3ZDg4MDAwLAorICAgIDB4MzdkOTAwMDAsCisgICAg
MHgzN2Q5ODAwMCwKKyAgICAweDM3ZGEwMDAwLAorICAgIDB4MzdkYTgwMDAsCisgICAgMHgzN2Ri
MDAwMCwKKyAgICAweDM3ZGI4MDAwLAorICAgIDB4MzdkYzAwMDAsCisgICAgMHgzN2RjODAwMCwK
KyAgICAweDM3ZGQwMDAwLAorICAgIDB4MzdkZDgwMDAsCisgICAgMHgzN2RlMDAwMCwKKyAgICAw
eDM3ZGU4MDAwLAorICAgIDB4MzdkZjAwMDAsCisgICAgMHgzN2RmODAwMCwKKyAgICAweDM3ZTAw
MDAwLAorICAgIDB4MzdlMDgwMDAsCisgICAgMHgzN2UxMDAwMCwKKyAgICAweDM3ZTE4MDAwLAor
ICAgIDB4MzdlMjAwMDAsCisgICAgMHgzN2UyODAwMCwKKyAgICAweDM3ZTMwMDAwLAorICAgIDB4
MzdlMzgwMDAsCisgICAgMHgzN2U0MDAwMCwKKyAgICAweDM3ZTQ4MDAwLAorICAgIDB4MzdlNTAw
MDAsCisgICAgMHgzN2U1ODAwMCwKKyAgICAweDM3ZTYwMDAwLAorICAgIDB4MzdlNjgwMDAsCisg
ICAgMHgzN2U3MDAwMCwKKyAgICAweDM3ZTc4MDAwLAorICAgIDB4MzdlODAwMDAsCisgICAgMHgz
N2U4ODAwMCwKKyAgICAweDM3ZTkwMDAwLAorICAgIDB4MzdlOTgwMDAsCisgICAgMHgzN2VhMDAw
MCwKKyAgICAweDM3ZWE4MDAwLAorICAgIDB4MzdlYjAwMDAsCisgICAgMHgzN2ViODAwMCwKKyAg
ICAweDM3ZWMwMDAwLAorICAgIDB4MzdlYzgwMDAsCisgICAgMHgzN2VkMDAwMCwKKyAgICAweDM3
ZWQ4MDAwLAorICAgIDB4MzdlZTAwMDAsCisgICAgMHgzN2VlODAwMCwKKyAgICAweDM3ZWYwMDAw
LAorICAgIDB4MzdlZjgwMDAsCisgICAgMHgzN2YwMDAwMCwKKyAgICAweDM3ZjA4MDAwLAorICAg
IDB4MzdmMTAwMDAsCisgICAgMHgzN2YxODAwMCwKKyAgICAweDM3ZjIwMDAwLAorICAgIDB4Mzdm
MjgwMDAsCisgICAgMHgzN2YzMDAwMCwKKyAgICAweDM3ZjM4MDAwLAorICAgIDB4MzdmNDAwMDAs
CisgICAgMHgzN2Y0ODAwMCwKKyAgICAweDM3ZjUwMDAwLAorICAgIDB4MzdmNTgwMDAsCisgICAg
MHgzN2Y2MDAwMCwKKyAgICAweDM3ZjY4MDAwLAorICAgIDB4MzdmNzAwMDAsCisgICAgMHgzN2Y3
ODAwMCwKKyAgICAweDM3ZjgwMDAwLAorICAgIDB4MzdmODgwMDAsCisgICAgMHgzN2Y5MDAwMCwK
KyAgICAweDM3Zjk4MDAwLAorICAgIDB4MzdmYTAwMDAsCisgICAgMHgzN2ZhODAwMCwKKyAgICAw
eDM3ZmIwMDAwLAorICAgIDB4MzdmYjgwMDAsCisgICAgMHgzN2ZjMDAwMCwKKyAgICAweDM3ZmM4
MDAwLAorICAgIDB4MzdmZDAwMDAsCisgICAgMHgzN2ZkODAwMCwKKyAgICAweDM3ZmUwMDAwLAor
ICAgIDB4MzdmZTgwMDAsCisgICAgMHgzN2ZmMDAwMCwKKyAgICAweDM3ZmY4MDAwLAorICAgIDB4
MzgwMDAwMDAsCisgICAgMHgzODAwNDAwMCwKKyAgICAweDM4MDA4MDAwLAorICAgIDB4MzgwMGMw
MDAsCisgICAgMHgzODAxMDAwMCwKKyAgICAweDM4MDE0MDAwLAorICAgIDB4MzgwMTgwMDAsCisg
ICAgMHgzODAxYzAwMCwKKyAgICAweDM4MDIwMDAwLAorICAgIDB4MzgwMjQwMDAsCisgICAgMHgz
ODAyODAwMCwKKyAgICAweDM4MDJjMDAwLAorICAgIDB4MzgwMzAwMDAsCisgICAgMHgzODAzNDAw
MCwKKyAgICAweDM4MDM4MDAwLAorICAgIDB4MzgwM2MwMDAsCisgICAgMHgzODA0MDAwMCwKKyAg
ICAweDM4MDQ0MDAwLAorICAgIDB4MzgwNDgwMDAsCisgICAgMHgzODA0YzAwMCwKKyAgICAweDM4
MDUwMDAwLAorICAgIDB4MzgwNTQwMDAsCisgICAgMHgzODA1ODAwMCwKKyAgICAweDM4MDVjMDAw
LAorICAgIDB4MzgwNjAwMDAsCisgICAgMHgzODA2NDAwMCwKKyAgICAweDM4MDY4MDAwLAorICAg
IDB4MzgwNmMwMDAsCisgICAgMHgzODA3MDAwMCwKKyAgICAweDM4MDc0MDAwLAorICAgIDB4Mzgw
NzgwMDAsCisgICAgMHgzODA3YzAwMCwKKyAgICAweDM4MDgwMDAwLAorICAgIDB4MzgwODQwMDAs
CisgICAgMHgzODA4ODAwMCwKKyAgICAweDM4MDhjMDAwLAorICAgIDB4MzgwOTAwMDAsCisgICAg
MHgzODA5NDAwMCwKKyAgICAweDM4MDk4MDAwLAorICAgIDB4MzgwOWMwMDAsCisgICAgMHgzODBh
MDAwMCwKKyAgICAweDM4MGE0MDAwLAorICAgIDB4MzgwYTgwMDAsCisgICAgMHgzODBhYzAwMCwK
KyAgICAweDM4MGIwMDAwLAorICAgIDB4MzgwYjQwMDAsCisgICAgMHgzODBiODAwMCwKKyAgICAw
eDM4MGJjMDAwLAorICAgIDB4MzgwYzAwMDAsCisgICAgMHgzODBjNDAwMCwKKyAgICAweDM4MGM4
MDAwLAorICAgIDB4MzgwY2MwMDAsCisgICAgMHgzODBkMDAwMCwKKyAgICAweDM4MGQ0MDAwLAor
ICAgIDB4MzgwZDgwMDAsCisgICAgMHgzODBkYzAwMCwKKyAgICAweDM4MGUwMDAwLAorICAgIDB4
MzgwZTQwMDAsCisgICAgMHgzODBlODAwMCwKKyAgICAweDM4MGVjMDAwLAorICAgIDB4MzgwZjAw
MDAsCisgICAgMHgzODBmNDAwMCwKKyAgICAweDM4MGY4MDAwLAorICAgIDB4MzgwZmMwMDAsCisg
ICAgMHgzODEwMDAwMCwKKyAgICAweDM4MTA0MDAwLAorICAgIDB4MzgxMDgwMDAsCisgICAgMHgz
ODEwYzAwMCwKKyAgICAweDM4MTEwMDAwLAorICAgIDB4MzgxMTQwMDAsCisgICAgMHgzODExODAw
MCwKKyAgICAweDM4MTFjMDAwLAorICAgIDB4MzgxMjAwMDAsCisgICAgMHgzODEyNDAwMCwKKyAg
ICAweDM4MTI4MDAwLAorICAgIDB4MzgxMmMwMDAsCisgICAgMHgzODEzMDAwMCwKKyAgICAweDM4
MTM0MDAwLAorICAgIDB4MzgxMzgwMDAsCisgICAgMHgzODEzYzAwMCwKKyAgICAweDM4MTQwMDAw
LAorICAgIDB4MzgxNDQwMDAsCisgICAgMHgzODE0ODAwMCwKKyAgICAweDM4MTRjMDAwLAorICAg
IDB4MzgxNTAwMDAsCisgICAgMHgzODE1NDAwMCwKKyAgICAweDM4MTU4MDAwLAorICAgIDB4Mzgx
NWMwMDAsCisgICAgMHgzODE2MDAwMCwKKyAgICAweDM4MTY0MDAwLAorICAgIDB4MzgxNjgwMDAs
CisgICAgMHgzODE2YzAwMCwKKyAgICAweDM4MTcwMDAwLAorICAgIDB4MzgxNzQwMDAsCisgICAg
MHgzODE3ODAwMCwKKyAgICAweDM4MTdjMDAwLAorICAgIDB4MzgxODAwMDAsCisgICAgMHgzODE4
NDAwMCwKKyAgICAweDM4MTg4MDAwLAorICAgIDB4MzgxOGMwMDAsCisgICAgMHgzODE5MDAwMCwK
KyAgICAweDM4MTk0MDAwLAorICAgIDB4MzgxOTgwMDAsCisgICAgMHgzODE5YzAwMCwKKyAgICAw
eDM4MWEwMDAwLAorICAgIDB4MzgxYTQwMDAsCisgICAgMHgzODFhODAwMCwKKyAgICAweDM4MWFj
MDAwLAorICAgIDB4MzgxYjAwMDAsCisgICAgMHgzODFiNDAwMCwKKyAgICAweDM4MWI4MDAwLAor
ICAgIDB4MzgxYmMwMDAsCisgICAgMHgzODFjMDAwMCwKKyAgICAweDM4MWM0MDAwLAorICAgIDB4
MzgxYzgwMDAsCisgICAgMHgzODFjYzAwMCwKKyAgICAweDM4MWQwMDAwLAorICAgIDB4MzgxZDQw
MDAsCisgICAgMHgzODFkODAwMCwKKyAgICAweDM4MWRjMDAwLAorICAgIDB4MzgxZTAwMDAsCisg
ICAgMHgzODFlNDAwMCwKKyAgICAweDM4MWU4MDAwLAorICAgIDB4MzgxZWMwMDAsCisgICAgMHgz
ODFmMDAwMCwKKyAgICAweDM4MWY0MDAwLAorICAgIDB4MzgxZjgwMDAsCisgICAgMHgzODFmYzAw
MCwKKyAgICAweDM4MjAwMDAwLAorICAgIDB4MzgyMDQwMDAsCisgICAgMHgzODIwODAwMCwKKyAg
ICAweDM4MjBjMDAwLAorICAgIDB4MzgyMTAwMDAsCisgICAgMHgzODIxNDAwMCwKKyAgICAweDM4
MjE4MDAwLAorICAgIDB4MzgyMWMwMDAsCisgICAgMHgzODIyMDAwMCwKKyAgICAweDM4MjI0MDAw
LAorICAgIDB4MzgyMjgwMDAsCisgICAgMHgzODIyYzAwMCwKKyAgICAweDM4MjMwMDAwLAorICAg
IDB4MzgyMzQwMDAsCisgICAgMHgzODIzODAwMCwKKyAgICAweDM4MjNjMDAwLAorICAgIDB4Mzgy
NDAwMDAsCisgICAgMHgzODI0NDAwMCwKKyAgICAweDM4MjQ4MDAwLAorICAgIDB4MzgyNGMwMDAs
CisgICAgMHgzODI1MDAwMCwKKyAgICAweDM4MjU0MDAwLAorICAgIDB4MzgyNTgwMDAsCisgICAg
MHgzODI1YzAwMCwKKyAgICAweDM4MjYwMDAwLAorICAgIDB4MzgyNjQwMDAsCisgICAgMHgzODI2
ODAwMCwKKyAgICAweDM4MjZjMDAwLAorICAgIDB4MzgyNzAwMDAsCisgICAgMHgzODI3NDAwMCwK
KyAgICAweDM4Mjc4MDAwLAorICAgIDB4MzgyN2MwMDAsCisgICAgMHgzODI4MDAwMCwKKyAgICAw
eDM4Mjg0MDAwLAorICAgIDB4MzgyODgwMDAsCisgICAgMHgzODI4YzAwMCwKKyAgICAweDM4Mjkw
MDAwLAorICAgIDB4MzgyOTQwMDAsCisgICAgMHgzODI5ODAwMCwKKyAgICAweDM4MjljMDAwLAor
ICAgIDB4MzgyYTAwMDAsCisgICAgMHgzODJhNDAwMCwKKyAgICAweDM4MmE4MDAwLAorICAgIDB4
MzgyYWMwMDAsCisgICAgMHgzODJiMDAwMCwKKyAgICAweDM4MmI0MDAwLAorICAgIDB4MzgyYjgw
MDAsCisgICAgMHgzODJiYzAwMCwKKyAgICAweDM4MmMwMDAwLAorICAgIDB4MzgyYzQwMDAsCisg
ICAgMHgzODJjODAwMCwKKyAgICAweDM4MmNjMDAwLAorICAgIDB4MzgyZDAwMDAsCisgICAgMHgz
ODJkNDAwMCwKKyAgICAweDM4MmQ4MDAwLAorICAgIDB4MzgyZGMwMDAsCisgICAgMHgzODJlMDAw
MCwKKyAgICAweDM4MmU0MDAwLAorICAgIDB4MzgyZTgwMDAsCisgICAgMHgzODJlYzAwMCwKKyAg
ICAweDM4MmYwMDAwLAorICAgIDB4MzgyZjQwMDAsCisgICAgMHgzODJmODAwMCwKKyAgICAweDM4
MmZjMDAwLAorICAgIDB4MzgzMDAwMDAsCisgICAgMHgzODMwNDAwMCwKKyAgICAweDM4MzA4MDAw
LAorICAgIDB4MzgzMGMwMDAsCisgICAgMHgzODMxMDAwMCwKKyAgICAweDM4MzE0MDAwLAorICAg
IDB4MzgzMTgwMDAsCisgICAgMHgzODMxYzAwMCwKKyAgICAweDM4MzIwMDAwLAorICAgIDB4Mzgz
MjQwMDAsCisgICAgMHgzODMyODAwMCwKKyAgICAweDM4MzJjMDAwLAorICAgIDB4MzgzMzAwMDAs
CisgICAgMHgzODMzNDAwMCwKKyAgICAweDM4MzM4MDAwLAorICAgIDB4MzgzM2MwMDAsCisgICAg
MHgzODM0MDAwMCwKKyAgICAweDM4MzQ0MDAwLAorICAgIDB4MzgzNDgwMDAsCisgICAgMHgzODM0
YzAwMCwKKyAgICAweDM4MzUwMDAwLAorICAgIDB4MzgzNTQwMDAsCisgICAgMHgzODM1ODAwMCwK
KyAgICAweDM4MzVjMDAwLAorICAgIDB4MzgzNjAwMDAsCisgICAgMHgzODM2NDAwMCwKKyAgICAw
eDM4MzY4MDAwLAorICAgIDB4MzgzNmMwMDAsCisgICAgMHgzODM3MDAwMCwKKyAgICAweDM4Mzc0
MDAwLAorICAgIDB4MzgzNzgwMDAsCisgICAgMHgzODM3YzAwMCwKKyAgICAweDM4MzgwMDAwLAor
ICAgIDB4MzgzODQwMDAsCisgICAgMHgzODM4ODAwMCwKKyAgICAweDM4MzhjMDAwLAorICAgIDB4
MzgzOTAwMDAsCisgICAgMHgzODM5NDAwMCwKKyAgICAweDM4Mzk4MDAwLAorICAgIDB4MzgzOWMw
MDAsCisgICAgMHgzODNhMDAwMCwKKyAgICAweDM4M2E0MDAwLAorICAgIDB4MzgzYTgwMDAsCisg
ICAgMHgzODNhYzAwMCwKKyAgICAweDM4M2IwMDAwLAorICAgIDB4MzgzYjQwMDAsCisgICAgMHgz
ODNiODAwMCwKKyAgICAweDM4M2JjMDAwLAorICAgIDB4MzgzYzAwMDAsCisgICAgMHgzODNjNDAw
MCwKKyAgICAweDM4M2M4MDAwLAorICAgIDB4MzgzY2MwMDAsCisgICAgMHgzODNkMDAwMCwKKyAg
ICAweDM4M2Q0MDAwLAorICAgIDB4MzgzZDgwMDAsCisgICAgMHgzODNkYzAwMCwKKyAgICAweDM4
M2UwMDAwLAorICAgIDB4MzgzZTQwMDAsCisgICAgMHgzODNlODAwMCwKKyAgICAweDM4M2VjMDAw
LAorICAgIDB4MzgzZjAwMDAsCisgICAgMHgzODNmNDAwMCwKKyAgICAweDM4M2Y4MDAwLAorICAg
IDB4MzgzZmMwMDAsCisgICAgMHgzODQwMDAwMCwKKyAgICAweDM4NDA0MDAwLAorICAgIDB4Mzg0
MDgwMDAsCisgICAgMHgzODQwYzAwMCwKKyAgICAweDM4NDEwMDAwLAorICAgIDB4Mzg0MTQwMDAs
CisgICAgMHgzODQxODAwMCwKKyAgICAweDM4NDFjMDAwLAorICAgIDB4Mzg0MjAwMDAsCisgICAg
MHgzODQyNDAwMCwKKyAgICAweDM4NDI4MDAwLAorICAgIDB4Mzg0MmMwMDAsCisgICAgMHgzODQz
MDAwMCwKKyAgICAweDM4NDM0MDAwLAorICAgIDB4Mzg0MzgwMDAsCisgICAgMHgzODQzYzAwMCwK
KyAgICAweDM4NDQwMDAwLAorICAgIDB4Mzg0NDQwMDAsCisgICAgMHgzODQ0ODAwMCwKKyAgICAw
eDM4NDRjMDAwLAorICAgIDB4Mzg0NTAwMDAsCisgICAgMHgzODQ1NDAwMCwKKyAgICAweDM4NDU4
MDAwLAorICAgIDB4Mzg0NWMwMDAsCisgICAgMHgzODQ2MDAwMCwKKyAgICAweDM4NDY0MDAwLAor
ICAgIDB4Mzg0NjgwMDAsCisgICAgMHgzODQ2YzAwMCwKKyAgICAweDM4NDcwMDAwLAorICAgIDB4
Mzg0NzQwMDAsCisgICAgMHgzODQ3ODAwMCwKKyAgICAweDM4NDdjMDAwLAorICAgIDB4Mzg0ODAw
MDAsCisgICAgMHgzODQ4NDAwMCwKKyAgICAweDM4NDg4MDAwLAorICAgIDB4Mzg0OGMwMDAsCisg
ICAgMHgzODQ5MDAwMCwKKyAgICAweDM4NDk0MDAwLAorICAgIDB4Mzg0OTgwMDAsCisgICAgMHgz
ODQ5YzAwMCwKKyAgICAweDM4NGEwMDAwLAorICAgIDB4Mzg0YTQwMDAsCisgICAgMHgzODRhODAw
MCwKKyAgICAweDM4NGFjMDAwLAorICAgIDB4Mzg0YjAwMDAsCisgICAgMHgzODRiNDAwMCwKKyAg
ICAweDM4NGI4MDAwLAorICAgIDB4Mzg0YmMwMDAsCisgICAgMHgzODRjMDAwMCwKKyAgICAweDM4
NGM0MDAwLAorICAgIDB4Mzg0YzgwMDAsCisgICAgMHgzODRjYzAwMCwKKyAgICAweDM4NGQwMDAw
LAorICAgIDB4Mzg0ZDQwMDAsCisgICAgMHgzODRkODAwMCwKKyAgICAweDM4NGRjMDAwLAorICAg
IDB4Mzg0ZTAwMDAsCisgICAgMHgzODRlNDAwMCwKKyAgICAweDM4NGU4MDAwLAorICAgIDB4Mzg0
ZWMwMDAsCisgICAgMHgzODRmMDAwMCwKKyAgICAweDM4NGY0MDAwLAorICAgIDB4Mzg0ZjgwMDAs
CisgICAgMHgzODRmYzAwMCwKKyAgICAweDM4NTAwMDAwLAorICAgIDB4Mzg1MDQwMDAsCisgICAg
MHgzODUwODAwMCwKKyAgICAweDM4NTBjMDAwLAorICAgIDB4Mzg1MTAwMDAsCisgICAgMHgzODUx
NDAwMCwKKyAgICAweDM4NTE4MDAwLAorICAgIDB4Mzg1MWMwMDAsCisgICAgMHgzODUyMDAwMCwK
KyAgICAweDM4NTI0MDAwLAorICAgIDB4Mzg1MjgwMDAsCisgICAgMHgzODUyYzAwMCwKKyAgICAw
eDM4NTMwMDAwLAorICAgIDB4Mzg1MzQwMDAsCisgICAgMHgzODUzODAwMCwKKyAgICAweDM4NTNj
MDAwLAorICAgIDB4Mzg1NDAwMDAsCisgICAgMHgzODU0NDAwMCwKKyAgICAweDM4NTQ4MDAwLAor
ICAgIDB4Mzg1NGMwMDAsCisgICAgMHgzODU1MDAwMCwKKyAgICAweDM4NTU0MDAwLAorICAgIDB4
Mzg1NTgwMDAsCisgICAgMHgzODU1YzAwMCwKKyAgICAweDM4NTYwMDAwLAorICAgIDB4Mzg1NjQw
MDAsCisgICAgMHgzODU2ODAwMCwKKyAgICAweDM4NTZjMDAwLAorICAgIDB4Mzg1NzAwMDAsCisg
ICAgMHgzODU3NDAwMCwKKyAgICAweDM4NTc4MDAwLAorICAgIDB4Mzg1N2MwMDAsCisgICAgMHgz
ODU4MDAwMCwKKyAgICAweDM4NTg0MDAwLAorICAgIDB4Mzg1ODgwMDAsCisgICAgMHgzODU4YzAw
MCwKKyAgICAweDM4NTkwMDAwLAorICAgIDB4Mzg1OTQwMDAsCisgICAgMHgzODU5ODAwMCwKKyAg
ICAweDM4NTljMDAwLAorICAgIDB4Mzg1YTAwMDAsCisgICAgMHgzODVhNDAwMCwKKyAgICAweDM4
NWE4MDAwLAorICAgIDB4Mzg1YWMwMDAsCisgICAgMHgzODViMDAwMCwKKyAgICAweDM4NWI0MDAw
LAorICAgIDB4Mzg1YjgwMDAsCisgICAgMHgzODViYzAwMCwKKyAgICAweDM4NWMwMDAwLAorICAg
IDB4Mzg1YzQwMDAsCisgICAgMHgzODVjODAwMCwKKyAgICAweDM4NWNjMDAwLAorICAgIDB4Mzg1
ZDAwMDAsCisgICAgMHgzODVkNDAwMCwKKyAgICAweDM4NWQ4MDAwLAorICAgIDB4Mzg1ZGMwMDAs
CisgICAgMHgzODVlMDAwMCwKKyAgICAweDM4NWU0MDAwLAorICAgIDB4Mzg1ZTgwMDAsCisgICAg
MHgzODVlYzAwMCwKKyAgICAweDM4NWYwMDAwLAorICAgIDB4Mzg1ZjQwMDAsCisgICAgMHgzODVm
ODAwMCwKKyAgICAweDM4NWZjMDAwLAorICAgIDB4Mzg2MDAwMDAsCisgICAgMHgzODYwNDAwMCwK
KyAgICAweDM4NjA4MDAwLAorICAgIDB4Mzg2MGMwMDAsCisgICAgMHgzODYxMDAwMCwKKyAgICAw
eDM4NjE0MDAwLAorICAgIDB4Mzg2MTgwMDAsCisgICAgMHgzODYxYzAwMCwKKyAgICAweDM4NjIw
MDAwLAorICAgIDB4Mzg2MjQwMDAsCisgICAgMHgzODYyODAwMCwKKyAgICAweDM4NjJjMDAwLAor
ICAgIDB4Mzg2MzAwMDAsCisgICAgMHgzODYzNDAwMCwKKyAgICAweDM4NjM4MDAwLAorICAgIDB4
Mzg2M2MwMDAsCisgICAgMHgzODY0MDAwMCwKKyAgICAweDM4NjQ0MDAwLAorICAgIDB4Mzg2NDgw
MDAsCisgICAgMHgzODY0YzAwMCwKKyAgICAweDM4NjUwMDAwLAorICAgIDB4Mzg2NTQwMDAsCisg
ICAgMHgzODY1ODAwMCwKKyAgICAweDM4NjVjMDAwLAorICAgIDB4Mzg2NjAwMDAsCisgICAgMHgz
ODY2NDAwMCwKKyAgICAweDM4NjY4MDAwLAorICAgIDB4Mzg2NmMwMDAsCisgICAgMHgzODY3MDAw
MCwKKyAgICAweDM4Njc0MDAwLAorICAgIDB4Mzg2NzgwMDAsCisgICAgMHgzODY3YzAwMCwKKyAg
ICAweDM4NjgwMDAwLAorICAgIDB4Mzg2ODQwMDAsCisgICAgMHgzODY4ODAwMCwKKyAgICAweDM4
NjhjMDAwLAorICAgIDB4Mzg2OTAwMDAsCisgICAgMHgzODY5NDAwMCwKKyAgICAweDM4Njk4MDAw
LAorICAgIDB4Mzg2OWMwMDAsCisgICAgMHgzODZhMDAwMCwKKyAgICAweDM4NmE0MDAwLAorICAg
IDB4Mzg2YTgwMDAsCisgICAgMHgzODZhYzAwMCwKKyAgICAweDM4NmIwMDAwLAorICAgIDB4Mzg2
YjQwMDAsCisgICAgMHgzODZiODAwMCwKKyAgICAweDM4NmJjMDAwLAorICAgIDB4Mzg2YzAwMDAs
CisgICAgMHgzODZjNDAwMCwKKyAgICAweDM4NmM4MDAwLAorICAgIDB4Mzg2Y2MwMDAsCisgICAg
MHgzODZkMDAwMCwKKyAgICAweDM4NmQ0MDAwLAorICAgIDB4Mzg2ZDgwMDAsCisgICAgMHgzODZk
YzAwMCwKKyAgICAweDM4NmUwMDAwLAorICAgIDB4Mzg2ZTQwMDAsCisgICAgMHgzODZlODAwMCwK
KyAgICAweDM4NmVjMDAwLAorICAgIDB4Mzg2ZjAwMDAsCisgICAgMHgzODZmNDAwMCwKKyAgICAw
eDM4NmY4MDAwLAorICAgIDB4Mzg2ZmMwMDAsCisgICAgMHgzODcwMDAwMCwKKyAgICAweDM4NzA0
MDAwLAorICAgIDB4Mzg3MDgwMDAsCisgICAgMHgzODcwYzAwMCwKKyAgICAweDM4NzEwMDAwLAor
ICAgIDB4Mzg3MTQwMDAsCisgICAgMHgzODcxODAwMCwKKyAgICAweDM4NzFjMDAwLAorICAgIDB4
Mzg3MjAwMDAsCisgICAgMHgzODcyNDAwMCwKKyAgICAweDM4NzI4MDAwLAorICAgIDB4Mzg3MmMw
MDAsCisgICAgMHgzODczMDAwMCwKKyAgICAweDM4NzM0MDAwLAorICAgIDB4Mzg3MzgwMDAsCisg
ICAgMHgzODczYzAwMCwKKyAgICAweDM4NzQwMDAwLAorICAgIDB4Mzg3NDQwMDAsCisgICAgMHgz
ODc0ODAwMCwKKyAgICAweDM4NzRjMDAwLAorICAgIDB4Mzg3NTAwMDAsCisgICAgMHgzODc1NDAw
MCwKKyAgICAweDM4NzU4MDAwLAorICAgIDB4Mzg3NWMwMDAsCisgICAgMHgzODc2MDAwMCwKKyAg
ICAweDM4NzY0MDAwLAorICAgIDB4Mzg3NjgwMDAsCisgICAgMHgzODc2YzAwMCwKKyAgICAweDM4
NzcwMDAwLAorICAgIDB4Mzg3NzQwMDAsCisgICAgMHgzODc3ODAwMCwKKyAgICAweDM4NzdjMDAw
LAorICAgIDB4Mzg3ODAwMDAsCisgICAgMHgzODc4NDAwMCwKKyAgICAweDM4Nzg4MDAwLAorICAg
IDB4Mzg3OGMwMDAsCisgICAgMHgzODc5MDAwMCwKKyAgICAweDM4Nzk0MDAwLAorICAgIDB4Mzg3
OTgwMDAsCisgICAgMHgzODc5YzAwMCwKKyAgICAweDM4N2EwMDAwLAorICAgIDB4Mzg3YTQwMDAs
CisgICAgMHgzODdhODAwMCwKKyAgICAweDM4N2FjMDAwLAorICAgIDB4Mzg3YjAwMDAsCisgICAg
MHgzODdiNDAwMCwKKyAgICAweDM4N2I4MDAwLAorICAgIDB4Mzg3YmMwMDAsCisgICAgMHgzODdj
MDAwMCwKKyAgICAweDM4N2M0MDAwLAorICAgIDB4Mzg3YzgwMDAsCisgICAgMHgzODdjYzAwMCwK
KyAgICAweDM4N2QwMDAwLAorICAgIDB4Mzg3ZDQwMDAsCisgICAgMHgzODdkODAwMCwKKyAgICAw
eDM4N2RjMDAwLAorICAgIDB4Mzg3ZTAwMDAsCisgICAgMHgzODdlNDAwMCwKKyAgICAweDM4N2U4
MDAwLAorICAgIDB4Mzg3ZWMwMDAsCisgICAgMHgzODdmMDAwMCwKKyAgICAweDM4N2Y0MDAwLAor
ICAgIDB4Mzg3ZjgwMDAsCisgICAgMHgzODdmYzAwMCwKKyAgICAweDM4MDAwMDAwLAorICAgIDB4
MzgwMDIwMDAsCisgICAgMHgzODAwNDAwMCwKKyAgICAweDM4MDA2MDAwLAorICAgIDB4MzgwMDgw
MDAsCisgICAgMHgzODAwYTAwMCwKKyAgICAweDM4MDBjMDAwLAorICAgIDB4MzgwMGUwMDAsCisg
ICAgMHgzODAxMDAwMCwKKyAgICAweDM4MDEyMDAwLAorICAgIDB4MzgwMTQwMDAsCisgICAgMHgz
ODAxNjAwMCwKKyAgICAweDM4MDE4MDAwLAorICAgIDB4MzgwMWEwMDAsCisgICAgMHgzODAxYzAw
MCwKKyAgICAweDM4MDFlMDAwLAorICAgIDB4MzgwMjAwMDAsCisgICAgMHgzODAyMjAwMCwKKyAg
ICAweDM4MDI0MDAwLAorICAgIDB4MzgwMjYwMDAsCisgICAgMHgzODAyODAwMCwKKyAgICAweDM4
MDJhMDAwLAorICAgIDB4MzgwMmMwMDAsCisgICAgMHgzODAyZTAwMCwKKyAgICAweDM4MDMwMDAw
LAorICAgIDB4MzgwMzIwMDAsCisgICAgMHgzODAzNDAwMCwKKyAgICAweDM4MDM2MDAwLAorICAg
IDB4MzgwMzgwMDAsCisgICAgMHgzODAzYTAwMCwKKyAgICAweDM4MDNjMDAwLAorICAgIDB4Mzgw
M2UwMDAsCisgICAgMHgzODA0MDAwMCwKKyAgICAweDM4MDQyMDAwLAorICAgIDB4MzgwNDQwMDAs
CisgICAgMHgzODA0NjAwMCwKKyAgICAweDM4MDQ4MDAwLAorICAgIDB4MzgwNGEwMDAsCisgICAg
MHgzODA0YzAwMCwKKyAgICAweDM4MDRlMDAwLAorICAgIDB4MzgwNTAwMDAsCisgICAgMHgzODA1
MjAwMCwKKyAgICAweDM4MDU0MDAwLAorICAgIDB4MzgwNTYwMDAsCisgICAgMHgzODA1ODAwMCwK
KyAgICAweDM4MDVhMDAwLAorICAgIDB4MzgwNWMwMDAsCisgICAgMHgzODA1ZTAwMCwKKyAgICAw
eDM4MDYwMDAwLAorICAgIDB4MzgwNjIwMDAsCisgICAgMHgzODA2NDAwMCwKKyAgICAweDM4MDY2
MDAwLAorICAgIDB4MzgwNjgwMDAsCisgICAgMHgzODA2YTAwMCwKKyAgICAweDM4MDZjMDAwLAor
ICAgIDB4MzgwNmUwMDAsCisgICAgMHgzODA3MDAwMCwKKyAgICAweDM4MDcyMDAwLAorICAgIDB4
MzgwNzQwMDAsCisgICAgMHgzODA3NjAwMCwKKyAgICAweDM4MDc4MDAwLAorICAgIDB4MzgwN2Ew
MDAsCisgICAgMHgzODA3YzAwMCwKKyAgICAweDM4MDdlMDAwLAorICAgIDB4MzgwODAwMDAsCisg
ICAgMHgzODA4MjAwMCwKKyAgICAweDM4MDg0MDAwLAorICAgIDB4MzgwODYwMDAsCisgICAgMHgz
ODA4ODAwMCwKKyAgICAweDM4MDhhMDAwLAorICAgIDB4MzgwOGMwMDAsCisgICAgMHgzODA4ZTAw
MCwKKyAgICAweDM4MDkwMDAwLAorICAgIDB4MzgwOTIwMDAsCisgICAgMHgzODA5NDAwMCwKKyAg
ICAweDM4MDk2MDAwLAorICAgIDB4MzgwOTgwMDAsCisgICAgMHgzODA5YTAwMCwKKyAgICAweDM4
MDljMDAwLAorICAgIDB4MzgwOWUwMDAsCisgICAgMHgzODBhMDAwMCwKKyAgICAweDM4MGEyMDAw
LAorICAgIDB4MzgwYTQwMDAsCisgICAgMHgzODBhNjAwMCwKKyAgICAweDM4MGE4MDAwLAorICAg
IDB4MzgwYWEwMDAsCisgICAgMHgzODBhYzAwMCwKKyAgICAweDM4MGFlMDAwLAorICAgIDB4Mzgw
YjAwMDAsCisgICAgMHgzODBiMjAwMCwKKyAgICAweDM4MGI0MDAwLAorICAgIDB4MzgwYjYwMDAs
CisgICAgMHgzODBiODAwMCwKKyAgICAweDM4MGJhMDAwLAorICAgIDB4MzgwYmMwMDAsCisgICAg
MHgzODBiZTAwMCwKKyAgICAweDM4MGMwMDAwLAorICAgIDB4MzgwYzIwMDAsCisgICAgMHgzODBj
NDAwMCwKKyAgICAweDM4MGM2MDAwLAorICAgIDB4MzgwYzgwMDAsCisgICAgMHgzODBjYTAwMCwK
KyAgICAweDM4MGNjMDAwLAorICAgIDB4MzgwY2UwMDAsCisgICAgMHgzODBkMDAwMCwKKyAgICAw
eDM4MGQyMDAwLAorICAgIDB4MzgwZDQwMDAsCisgICAgMHgzODBkNjAwMCwKKyAgICAweDM4MGQ4
MDAwLAorICAgIDB4MzgwZGEwMDAsCisgICAgMHgzODBkYzAwMCwKKyAgICAweDM4MGRlMDAwLAor
ICAgIDB4MzgwZTAwMDAsCisgICAgMHgzODBlMjAwMCwKKyAgICAweDM4MGU0MDAwLAorICAgIDB4
MzgwZTYwMDAsCisgICAgMHgzODBlODAwMCwKKyAgICAweDM4MGVhMDAwLAorICAgIDB4MzgwZWMw
MDAsCisgICAgMHgzODBlZTAwMCwKKyAgICAweDM4MGYwMDAwLAorICAgIDB4MzgwZjIwMDAsCisg
ICAgMHgzODBmNDAwMCwKKyAgICAweDM4MGY2MDAwLAorICAgIDB4MzgwZjgwMDAsCisgICAgMHgz
ODBmYTAwMCwKKyAgICAweDM4MGZjMDAwLAorICAgIDB4MzgwZmUwMDAsCisgICAgMHgzODEwMDAw
MCwKKyAgICAweDM4MTAyMDAwLAorICAgIDB4MzgxMDQwMDAsCisgICAgMHgzODEwNjAwMCwKKyAg
ICAweDM4MTA4MDAwLAorICAgIDB4MzgxMGEwMDAsCisgICAgMHgzODEwYzAwMCwKKyAgICAweDM4
MTBlMDAwLAorICAgIDB4MzgxMTAwMDAsCisgICAgMHgzODExMjAwMCwKKyAgICAweDM4MTE0MDAw
LAorICAgIDB4MzgxMTYwMDAsCisgICAgMHgzODExODAwMCwKKyAgICAweDM4MTFhMDAwLAorICAg
IDB4MzgxMWMwMDAsCisgICAgMHgzODExZTAwMCwKKyAgICAweDM4MTIwMDAwLAorICAgIDB4Mzgx
MjIwMDAsCisgICAgMHgzODEyNDAwMCwKKyAgICAweDM4MTI2MDAwLAorICAgIDB4MzgxMjgwMDAs
CisgICAgMHgzODEyYTAwMCwKKyAgICAweDM4MTJjMDAwLAorICAgIDB4MzgxMmUwMDAsCisgICAg
MHgzODEzMDAwMCwKKyAgICAweDM4MTMyMDAwLAorICAgIDB4MzgxMzQwMDAsCisgICAgMHgzODEz
NjAwMCwKKyAgICAweDM4MTM4MDAwLAorICAgIDB4MzgxM2EwMDAsCisgICAgMHgzODEzYzAwMCwK
KyAgICAweDM4MTNlMDAwLAorICAgIDB4MzgxNDAwMDAsCisgICAgMHgzODE0MjAwMCwKKyAgICAw
eDM4MTQ0MDAwLAorICAgIDB4MzgxNDYwMDAsCisgICAgMHgzODE0ODAwMCwKKyAgICAweDM4MTRh
MDAwLAorICAgIDB4MzgxNGMwMDAsCisgICAgMHgzODE0ZTAwMCwKKyAgICAweDM4MTUwMDAwLAor
ICAgIDB4MzgxNTIwMDAsCisgICAgMHgzODE1NDAwMCwKKyAgICAweDM4MTU2MDAwLAorICAgIDB4
MzgxNTgwMDAsCisgICAgMHgzODE1YTAwMCwKKyAgICAweDM4MTVjMDAwLAorICAgIDB4MzgxNWUw
MDAsCisgICAgMHgzODE2MDAwMCwKKyAgICAweDM4MTYyMDAwLAorICAgIDB4MzgxNjQwMDAsCisg
ICAgMHgzODE2NjAwMCwKKyAgICAweDM4MTY4MDAwLAorICAgIDB4MzgxNmEwMDAsCisgICAgMHgz
ODE2YzAwMCwKKyAgICAweDM4MTZlMDAwLAorICAgIDB4MzgxNzAwMDAsCisgICAgMHgzODE3MjAw
MCwKKyAgICAweDM4MTc0MDAwLAorICAgIDB4MzgxNzYwMDAsCisgICAgMHgzODE3ODAwMCwKKyAg
ICAweDM4MTdhMDAwLAorICAgIDB4MzgxN2MwMDAsCisgICAgMHgzODE3ZTAwMCwKKyAgICAweDM4
MTgwMDAwLAorICAgIDB4MzgxODIwMDAsCisgICAgMHgzODE4NDAwMCwKKyAgICAweDM4MTg2MDAw
LAorICAgIDB4MzgxODgwMDAsCisgICAgMHgzODE4YTAwMCwKKyAgICAweDM4MThjMDAwLAorICAg
IDB4MzgxOGUwMDAsCisgICAgMHgzODE5MDAwMCwKKyAgICAweDM4MTkyMDAwLAorICAgIDB4Mzgx
OTQwMDAsCisgICAgMHgzODE5NjAwMCwKKyAgICAweDM4MTk4MDAwLAorICAgIDB4MzgxOWEwMDAs
CisgICAgMHgzODE5YzAwMCwKKyAgICAweDM4MTllMDAwLAorICAgIDB4MzgxYTAwMDAsCisgICAg
MHgzODFhMjAwMCwKKyAgICAweDM4MWE0MDAwLAorICAgIDB4MzgxYTYwMDAsCisgICAgMHgzODFh
ODAwMCwKKyAgICAweDM4MWFhMDAwLAorICAgIDB4MzgxYWMwMDAsCisgICAgMHgzODFhZTAwMCwK
KyAgICAweDM4MWIwMDAwLAorICAgIDB4MzgxYjIwMDAsCisgICAgMHgzODFiNDAwMCwKKyAgICAw
eDM4MWI2MDAwLAorICAgIDB4MzgxYjgwMDAsCisgICAgMHgzODFiYTAwMCwKKyAgICAweDM4MWJj
MDAwLAorICAgIDB4MzgxYmUwMDAsCisgICAgMHgzODFjMDAwMCwKKyAgICAweDM4MWMyMDAwLAor
ICAgIDB4MzgxYzQwMDAsCisgICAgMHgzODFjNjAwMCwKKyAgICAweDM4MWM4MDAwLAorICAgIDB4
MzgxY2EwMDAsCisgICAgMHgzODFjYzAwMCwKKyAgICAweDM4MWNlMDAwLAorICAgIDB4MzgxZDAw
MDAsCisgICAgMHgzODFkMjAwMCwKKyAgICAweDM4MWQ0MDAwLAorICAgIDB4MzgxZDYwMDAsCisg
ICAgMHgzODFkODAwMCwKKyAgICAweDM4MWRhMDAwLAorICAgIDB4MzgxZGMwMDAsCisgICAgMHgz
ODFkZTAwMCwKKyAgICAweDM4MWUwMDAwLAorICAgIDB4MzgxZTIwMDAsCisgICAgMHgzODFlNDAw
MCwKKyAgICAweDM4MWU2MDAwLAorICAgIDB4MzgxZTgwMDAsCisgICAgMHgzODFlYTAwMCwKKyAg
ICAweDM4MWVjMDAwLAorICAgIDB4MzgxZWUwMDAsCisgICAgMHgzODFmMDAwMCwKKyAgICAweDM4
MWYyMDAwLAorICAgIDB4MzgxZjQwMDAsCisgICAgMHgzODFmNjAwMCwKKyAgICAweDM4MWY4MDAw
LAorICAgIDB4MzgxZmEwMDAsCisgICAgMHgzODFmYzAwMCwKKyAgICAweDM4MWZlMDAwLAorICAg
IDB4MzgyMDAwMDAsCisgICAgMHgzODIwMjAwMCwKKyAgICAweDM4MjA0MDAwLAorICAgIDB4Mzgy
MDYwMDAsCisgICAgMHgzODIwODAwMCwKKyAgICAweDM4MjBhMDAwLAorICAgIDB4MzgyMGMwMDAs
CisgICAgMHgzODIwZTAwMCwKKyAgICAweDM4MjEwMDAwLAorICAgIDB4MzgyMTIwMDAsCisgICAg
MHgzODIxNDAwMCwKKyAgICAweDM4MjE2MDAwLAorICAgIDB4MzgyMTgwMDAsCisgICAgMHgzODIx
YTAwMCwKKyAgICAweDM4MjFjMDAwLAorICAgIDB4MzgyMWUwMDAsCisgICAgMHgzODIyMDAwMCwK
KyAgICAweDM4MjIyMDAwLAorICAgIDB4MzgyMjQwMDAsCisgICAgMHgzODIyNjAwMCwKKyAgICAw
eDM4MjI4MDAwLAorICAgIDB4MzgyMmEwMDAsCisgICAgMHgzODIyYzAwMCwKKyAgICAweDM4MjJl
MDAwLAorICAgIDB4MzgyMzAwMDAsCisgICAgMHgzODIzMjAwMCwKKyAgICAweDM4MjM0MDAwLAor
ICAgIDB4MzgyMzYwMDAsCisgICAgMHgzODIzODAwMCwKKyAgICAweDM4MjNhMDAwLAorICAgIDB4
MzgyM2MwMDAsCisgICAgMHgzODIzZTAwMCwKKyAgICAweDM4MjQwMDAwLAorICAgIDB4MzgyNDIw
MDAsCisgICAgMHgzODI0NDAwMCwKKyAgICAweDM4MjQ2MDAwLAorICAgIDB4MzgyNDgwMDAsCisg
ICAgMHgzODI0YTAwMCwKKyAgICAweDM4MjRjMDAwLAorICAgIDB4MzgyNGUwMDAsCisgICAgMHgz
ODI1MDAwMCwKKyAgICAweDM4MjUyMDAwLAorICAgIDB4MzgyNTQwMDAsCisgICAgMHgzODI1NjAw
MCwKKyAgICAweDM4MjU4MDAwLAorICAgIDB4MzgyNWEwMDAsCisgICAgMHgzODI1YzAwMCwKKyAg
ICAweDM4MjVlMDAwLAorICAgIDB4MzgyNjAwMDAsCisgICAgMHgzODI2MjAwMCwKKyAgICAweDM4
MjY0MDAwLAorICAgIDB4MzgyNjYwMDAsCisgICAgMHgzODI2ODAwMCwKKyAgICAweDM4MjZhMDAw
LAorICAgIDB4MzgyNmMwMDAsCisgICAgMHgzODI2ZTAwMCwKKyAgICAweDM4MjcwMDAwLAorICAg
IDB4MzgyNzIwMDAsCisgICAgMHgzODI3NDAwMCwKKyAgICAweDM4Mjc2MDAwLAorICAgIDB4Mzgy
NzgwMDAsCisgICAgMHgzODI3YTAwMCwKKyAgICAweDM4MjdjMDAwLAorICAgIDB4MzgyN2UwMDAs
CisgICAgMHgzODI4MDAwMCwKKyAgICAweDM4MjgyMDAwLAorICAgIDB4MzgyODQwMDAsCisgICAg
MHgzODI4NjAwMCwKKyAgICAweDM4Mjg4MDAwLAorICAgIDB4MzgyOGEwMDAsCisgICAgMHgzODI4
YzAwMCwKKyAgICAweDM4MjhlMDAwLAorICAgIDB4MzgyOTAwMDAsCisgICAgMHgzODI5MjAwMCwK
KyAgICAweDM4Mjk0MDAwLAorICAgIDB4MzgyOTYwMDAsCisgICAgMHgzODI5ODAwMCwKKyAgICAw
eDM4MjlhMDAwLAorICAgIDB4MzgyOWMwMDAsCisgICAgMHgzODI5ZTAwMCwKKyAgICAweDM4MmEw
MDAwLAorICAgIDB4MzgyYTIwMDAsCisgICAgMHgzODJhNDAwMCwKKyAgICAweDM4MmE2MDAwLAor
ICAgIDB4MzgyYTgwMDAsCisgICAgMHgzODJhYTAwMCwKKyAgICAweDM4MmFjMDAwLAorICAgIDB4
MzgyYWUwMDAsCisgICAgMHgzODJiMDAwMCwKKyAgICAweDM4MmIyMDAwLAorICAgIDB4MzgyYjQw
MDAsCisgICAgMHgzODJiNjAwMCwKKyAgICAweDM4MmI4MDAwLAorICAgIDB4MzgyYmEwMDAsCisg
ICAgMHgzODJiYzAwMCwKKyAgICAweDM4MmJlMDAwLAorICAgIDB4MzgyYzAwMDAsCisgICAgMHgz
ODJjMjAwMCwKKyAgICAweDM4MmM0MDAwLAorICAgIDB4MzgyYzYwMDAsCisgICAgMHgzODJjODAw
MCwKKyAgICAweDM4MmNhMDAwLAorICAgIDB4MzgyY2MwMDAsCisgICAgMHgzODJjZTAwMCwKKyAg
ICAweDM4MmQwMDAwLAorICAgIDB4MzgyZDIwMDAsCisgICAgMHgzODJkNDAwMCwKKyAgICAweDM4
MmQ2MDAwLAorICAgIDB4MzgyZDgwMDAsCisgICAgMHgzODJkYTAwMCwKKyAgICAweDM4MmRjMDAw
LAorICAgIDB4MzgyZGUwMDAsCisgICAgMHgzODJlMDAwMCwKKyAgICAweDM4MmUyMDAwLAorICAg
IDB4MzgyZTQwMDAsCisgICAgMHgzODJlNjAwMCwKKyAgICAweDM4MmU4MDAwLAorICAgIDB4Mzgy
ZWEwMDAsCisgICAgMHgzODJlYzAwMCwKKyAgICAweDM4MmVlMDAwLAorICAgIDB4MzgyZjAwMDAs
CisgICAgMHgzODJmMjAwMCwKKyAgICAweDM4MmY0MDAwLAorICAgIDB4MzgyZjYwMDAsCisgICAg
MHgzODJmODAwMCwKKyAgICAweDM4MmZhMDAwLAorICAgIDB4MzgyZmMwMDAsCisgICAgMHgzODJm
ZTAwMCwKKyAgICAweDM4MzAwMDAwLAorICAgIDB4MzgzMDIwMDAsCisgICAgMHgzODMwNDAwMCwK
KyAgICAweDM4MzA2MDAwLAorICAgIDB4MzgzMDgwMDAsCisgICAgMHgzODMwYTAwMCwKKyAgICAw
eDM4MzBjMDAwLAorICAgIDB4MzgzMGUwMDAsCisgICAgMHgzODMxMDAwMCwKKyAgICAweDM4MzEy
MDAwLAorICAgIDB4MzgzMTQwMDAsCisgICAgMHgzODMxNjAwMCwKKyAgICAweDM4MzE4MDAwLAor
ICAgIDB4MzgzMWEwMDAsCisgICAgMHgzODMxYzAwMCwKKyAgICAweDM4MzFlMDAwLAorICAgIDB4
MzgzMjAwMDAsCisgICAgMHgzODMyMjAwMCwKKyAgICAweDM4MzI0MDAwLAorICAgIDB4MzgzMjYw
MDAsCisgICAgMHgzODMyODAwMCwKKyAgICAweDM4MzJhMDAwLAorICAgIDB4MzgzMmMwMDAsCisg
ICAgMHgzODMyZTAwMCwKKyAgICAweDM4MzMwMDAwLAorICAgIDB4MzgzMzIwMDAsCisgICAgMHgz
ODMzNDAwMCwKKyAgICAweDM4MzM2MDAwLAorICAgIDB4MzgzMzgwMDAsCisgICAgMHgzODMzYTAw
MCwKKyAgICAweDM4MzNjMDAwLAorICAgIDB4MzgzM2UwMDAsCisgICAgMHgzODM0MDAwMCwKKyAg
ICAweDM4MzQyMDAwLAorICAgIDB4MzgzNDQwMDAsCisgICAgMHgzODM0NjAwMCwKKyAgICAweDM4
MzQ4MDAwLAorICAgIDB4MzgzNGEwMDAsCisgICAgMHgzODM0YzAwMCwKKyAgICAweDM4MzRlMDAw
LAorICAgIDB4MzgzNTAwMDAsCisgICAgMHgzODM1MjAwMCwKKyAgICAweDM4MzU0MDAwLAorICAg
IDB4MzgzNTYwMDAsCisgICAgMHgzODM1ODAwMCwKKyAgICAweDM4MzVhMDAwLAorICAgIDB4Mzgz
NWMwMDAsCisgICAgMHgzODM1ZTAwMCwKKyAgICAweDM4MzYwMDAwLAorICAgIDB4MzgzNjIwMDAs
CisgICAgMHgzODM2NDAwMCwKKyAgICAweDM4MzY2MDAwLAorICAgIDB4MzgzNjgwMDAsCisgICAg
MHgzODM2YTAwMCwKKyAgICAweDM4MzZjMDAwLAorICAgIDB4MzgzNmUwMDAsCisgICAgMHgzODM3
MDAwMCwKKyAgICAweDM4MzcyMDAwLAorICAgIDB4MzgzNzQwMDAsCisgICAgMHgzODM3NjAwMCwK
KyAgICAweDM4Mzc4MDAwLAorICAgIDB4MzgzN2EwMDAsCisgICAgMHgzODM3YzAwMCwKKyAgICAw
eDM4MzdlMDAwLAorICAgIDB4MzgzODAwMDAsCisgICAgMHgzODM4MjAwMCwKKyAgICAweDM4Mzg0
MDAwLAorICAgIDB4MzgzODYwMDAsCisgICAgMHgzODM4ODAwMCwKKyAgICAweDM4MzhhMDAwLAor
ICAgIDB4MzgzOGMwMDAsCisgICAgMHgzODM4ZTAwMCwKKyAgICAweDM4MzkwMDAwLAorICAgIDB4
MzgzOTIwMDAsCisgICAgMHgzODM5NDAwMCwKKyAgICAweDM4Mzk2MDAwLAorICAgIDB4MzgzOTgw
MDAsCisgICAgMHgzODM5YTAwMCwKKyAgICAweDM4MzljMDAwLAorICAgIDB4MzgzOWUwMDAsCisg
ICAgMHgzODNhMDAwMCwKKyAgICAweDM4M2EyMDAwLAorICAgIDB4MzgzYTQwMDAsCisgICAgMHgz
ODNhNjAwMCwKKyAgICAweDM4M2E4MDAwLAorICAgIDB4MzgzYWEwMDAsCisgICAgMHgzODNhYzAw
MCwKKyAgICAweDM4M2FlMDAwLAorICAgIDB4MzgzYjAwMDAsCisgICAgMHgzODNiMjAwMCwKKyAg
ICAweDM4M2I0MDAwLAorICAgIDB4MzgzYjYwMDAsCisgICAgMHgzODNiODAwMCwKKyAgICAweDM4
M2JhMDAwLAorICAgIDB4MzgzYmMwMDAsCisgICAgMHgzODNiZTAwMCwKKyAgICAweDM4M2MwMDAw
LAorICAgIDB4MzgzYzIwMDAsCisgICAgMHgzODNjNDAwMCwKKyAgICAweDM4M2M2MDAwLAorICAg
IDB4MzgzYzgwMDAsCisgICAgMHgzODNjYTAwMCwKKyAgICAweDM4M2NjMDAwLAorICAgIDB4Mzgz
Y2UwMDAsCisgICAgMHgzODNkMDAwMCwKKyAgICAweDM4M2QyMDAwLAorICAgIDB4MzgzZDQwMDAs
CisgICAgMHgzODNkNjAwMCwKKyAgICAweDM4M2Q4MDAwLAorICAgIDB4MzgzZGEwMDAsCisgICAg
MHgzODNkYzAwMCwKKyAgICAweDM4M2RlMDAwLAorICAgIDB4MzgzZTAwMDAsCisgICAgMHgzODNl
MjAwMCwKKyAgICAweDM4M2U0MDAwLAorICAgIDB4MzgzZTYwMDAsCisgICAgMHgzODNlODAwMCwK
KyAgICAweDM4M2VhMDAwLAorICAgIDB4MzgzZWMwMDAsCisgICAgMHgzODNlZTAwMCwKKyAgICAw
eDM4M2YwMDAwLAorICAgIDB4MzgzZjIwMDAsCisgICAgMHgzODNmNDAwMCwKKyAgICAweDM4M2Y2
MDAwLAorICAgIDB4MzgzZjgwMDAsCisgICAgMHgzODNmYTAwMCwKKyAgICAweDM4M2ZjMDAwLAor
ICAgIDB4MzgzZmUwMDAsCisgICAgMHgzODQwMDAwMCwKKyAgICAweDM4NDAyMDAwLAorICAgIDB4
Mzg0MDQwMDAsCisgICAgMHgzODQwNjAwMCwKKyAgICAweDM4NDA4MDAwLAorICAgIDB4Mzg0MGEw
MDAsCisgICAgMHgzODQwYzAwMCwKKyAgICAweDM4NDBlMDAwLAorICAgIDB4Mzg0MTAwMDAsCisg
ICAgMHgzODQxMjAwMCwKKyAgICAweDM4NDE0MDAwLAorICAgIDB4Mzg0MTYwMDAsCisgICAgMHgz
ODQxODAwMCwKKyAgICAweDM4NDFhMDAwLAorICAgIDB4Mzg0MWMwMDAsCisgICAgMHgzODQxZTAw
MCwKKyAgICAweDM4NDIwMDAwLAorICAgIDB4Mzg0MjIwMDAsCisgICAgMHgzODQyNDAwMCwKKyAg
ICAweDM4NDI2MDAwLAorICAgIDB4Mzg0MjgwMDAsCisgICAgMHgzODQyYTAwMCwKKyAgICAweDM4
NDJjMDAwLAorICAgIDB4Mzg0MmUwMDAsCisgICAgMHgzODQzMDAwMCwKKyAgICAweDM4NDMyMDAw
LAorICAgIDB4Mzg0MzQwMDAsCisgICAgMHgzODQzNjAwMCwKKyAgICAweDM4NDM4MDAwLAorICAg
IDB4Mzg0M2EwMDAsCisgICAgMHgzODQzYzAwMCwKKyAgICAweDM4NDNlMDAwLAorICAgIDB4Mzg0
NDAwMDAsCisgICAgMHgzODQ0MjAwMCwKKyAgICAweDM4NDQ0MDAwLAorICAgIDB4Mzg0NDYwMDAs
CisgICAgMHgzODQ0ODAwMCwKKyAgICAweDM4NDRhMDAwLAorICAgIDB4Mzg0NGMwMDAsCisgICAg
MHgzODQ0ZTAwMCwKKyAgICAweDM4NDUwMDAwLAorICAgIDB4Mzg0NTIwMDAsCisgICAgMHgzODQ1
NDAwMCwKKyAgICAweDM4NDU2MDAwLAorICAgIDB4Mzg0NTgwMDAsCisgICAgMHgzODQ1YTAwMCwK
KyAgICAweDM4NDVjMDAwLAorICAgIDB4Mzg0NWUwMDAsCisgICAgMHgzODQ2MDAwMCwKKyAgICAw
eDM4NDYyMDAwLAorICAgIDB4Mzg0NjQwMDAsCisgICAgMHgzODQ2NjAwMCwKKyAgICAweDM4NDY4
MDAwLAorICAgIDB4Mzg0NmEwMDAsCisgICAgMHgzODQ2YzAwMCwKKyAgICAweDM4NDZlMDAwLAor
ICAgIDB4Mzg0NzAwMDAsCisgICAgMHgzODQ3MjAwMCwKKyAgICAweDM4NDc0MDAwLAorICAgIDB4
Mzg0NzYwMDAsCisgICAgMHgzODQ3ODAwMCwKKyAgICAweDM4NDdhMDAwLAorICAgIDB4Mzg0N2Mw
MDAsCisgICAgMHgzODQ3ZTAwMCwKKyAgICAweDM4NDgwMDAwLAorICAgIDB4Mzg0ODIwMDAsCisg
ICAgMHgzODQ4NDAwMCwKKyAgICAweDM4NDg2MDAwLAorICAgIDB4Mzg0ODgwMDAsCisgICAgMHgz
ODQ4YTAwMCwKKyAgICAweDM4NDhjMDAwLAorICAgIDB4Mzg0OGUwMDAsCisgICAgMHgzODQ5MDAw
MCwKKyAgICAweDM4NDkyMDAwLAorICAgIDB4Mzg0OTQwMDAsCisgICAgMHgzODQ5NjAwMCwKKyAg
ICAweDM4NDk4MDAwLAorICAgIDB4Mzg0OWEwMDAsCisgICAgMHgzODQ5YzAwMCwKKyAgICAweDM4
NDllMDAwLAorICAgIDB4Mzg0YTAwMDAsCisgICAgMHgzODRhMjAwMCwKKyAgICAweDM4NGE0MDAw
LAorICAgIDB4Mzg0YTYwMDAsCisgICAgMHgzODRhODAwMCwKKyAgICAweDM4NGFhMDAwLAorICAg
IDB4Mzg0YWMwMDAsCisgICAgMHgzODRhZTAwMCwKKyAgICAweDM4NGIwMDAwLAorICAgIDB4Mzg0
YjIwMDAsCisgICAgMHgzODRiNDAwMCwKKyAgICAweDM4NGI2MDAwLAorICAgIDB4Mzg0YjgwMDAs
CisgICAgMHgzODRiYTAwMCwKKyAgICAweDM4NGJjMDAwLAorICAgIDB4Mzg0YmUwMDAsCisgICAg
MHgzODRjMDAwMCwKKyAgICAweDM4NGMyMDAwLAorICAgIDB4Mzg0YzQwMDAsCisgICAgMHgzODRj
NjAwMCwKKyAgICAweDM4NGM4MDAwLAorICAgIDB4Mzg0Y2EwMDAsCisgICAgMHgzODRjYzAwMCwK
KyAgICAweDM4NGNlMDAwLAorICAgIDB4Mzg0ZDAwMDAsCisgICAgMHgzODRkMjAwMCwKKyAgICAw
eDM4NGQ0MDAwLAorICAgIDB4Mzg0ZDYwMDAsCisgICAgMHgzODRkODAwMCwKKyAgICAweDM4NGRh
MDAwLAorICAgIDB4Mzg0ZGMwMDAsCisgICAgMHgzODRkZTAwMCwKKyAgICAweDM4NGUwMDAwLAor
ICAgIDB4Mzg0ZTIwMDAsCisgICAgMHgzODRlNDAwMCwKKyAgICAweDM4NGU2MDAwLAorICAgIDB4
Mzg0ZTgwMDAsCisgICAgMHgzODRlYTAwMCwKKyAgICAweDM4NGVjMDAwLAorICAgIDB4Mzg0ZWUw
MDAsCisgICAgMHgzODRmMDAwMCwKKyAgICAweDM4NGYyMDAwLAorICAgIDB4Mzg0ZjQwMDAsCisg
ICAgMHgzODRmNjAwMCwKKyAgICAweDM4NGY4MDAwLAorICAgIDB4Mzg0ZmEwMDAsCisgICAgMHgz
ODRmYzAwMCwKKyAgICAweDM4NGZlMDAwLAorICAgIDB4Mzg1MDAwMDAsCisgICAgMHgzODUwMjAw
MCwKKyAgICAweDM4NTA0MDAwLAorICAgIDB4Mzg1MDYwMDAsCisgICAgMHgzODUwODAwMCwKKyAg
ICAweDM4NTBhMDAwLAorICAgIDB4Mzg1MGMwMDAsCisgICAgMHgzODUwZTAwMCwKKyAgICAweDM4
NTEwMDAwLAorICAgIDB4Mzg1MTIwMDAsCisgICAgMHgzODUxNDAwMCwKKyAgICAweDM4NTE2MDAw
LAorICAgIDB4Mzg1MTgwMDAsCisgICAgMHgzODUxYTAwMCwKKyAgICAweDM4NTFjMDAwLAorICAg
IDB4Mzg1MWUwMDAsCisgICAgMHgzODUyMDAwMCwKKyAgICAweDM4NTIyMDAwLAorICAgIDB4Mzg1
MjQwMDAsCisgICAgMHgzODUyNjAwMCwKKyAgICAweDM4NTI4MDAwLAorICAgIDB4Mzg1MmEwMDAs
CisgICAgMHgzODUyYzAwMCwKKyAgICAweDM4NTJlMDAwLAorICAgIDB4Mzg1MzAwMDAsCisgICAg
MHgzODUzMjAwMCwKKyAgICAweDM4NTM0MDAwLAorICAgIDB4Mzg1MzYwMDAsCisgICAgMHgzODUz
ODAwMCwKKyAgICAweDM4NTNhMDAwLAorICAgIDB4Mzg1M2MwMDAsCisgICAgMHgzODUzZTAwMCwK
KyAgICAweDM4NTQwMDAwLAorICAgIDB4Mzg1NDIwMDAsCisgICAgMHgzODU0NDAwMCwKKyAgICAw
eDM4NTQ2MDAwLAorICAgIDB4Mzg1NDgwMDAsCisgICAgMHgzODU0YTAwMCwKKyAgICAweDM4NTRj
MDAwLAorICAgIDB4Mzg1NGUwMDAsCisgICAgMHgzODU1MDAwMCwKKyAgICAweDM4NTUyMDAwLAor
ICAgIDB4Mzg1NTQwMDAsCisgICAgMHgzODU1NjAwMCwKKyAgICAweDM4NTU4MDAwLAorICAgIDB4
Mzg1NWEwMDAsCisgICAgMHgzODU1YzAwMCwKKyAgICAweDM4NTVlMDAwLAorICAgIDB4Mzg1NjAw
MDAsCisgICAgMHgzODU2MjAwMCwKKyAgICAweDM4NTY0MDAwLAorICAgIDB4Mzg1NjYwMDAsCisg
ICAgMHgzODU2ODAwMCwKKyAgICAweDM4NTZhMDAwLAorICAgIDB4Mzg1NmMwMDAsCisgICAgMHgz
ODU2ZTAwMCwKKyAgICAweDM4NTcwMDAwLAorICAgIDB4Mzg1NzIwMDAsCisgICAgMHgzODU3NDAw
MCwKKyAgICAweDM4NTc2MDAwLAorICAgIDB4Mzg1NzgwMDAsCisgICAgMHgzODU3YTAwMCwKKyAg
ICAweDM4NTdjMDAwLAorICAgIDB4Mzg1N2UwMDAsCisgICAgMHgzODU4MDAwMCwKKyAgICAweDM4
NTgyMDAwLAorICAgIDB4Mzg1ODQwMDAsCisgICAgMHgzODU4NjAwMCwKKyAgICAweDM4NTg4MDAw
LAorICAgIDB4Mzg1OGEwMDAsCisgICAgMHgzODU4YzAwMCwKKyAgICAweDM4NThlMDAwLAorICAg
IDB4Mzg1OTAwMDAsCisgICAgMHgzODU5MjAwMCwKKyAgICAweDM4NTk0MDAwLAorICAgIDB4Mzg1
OTYwMDAsCisgICAgMHgzODU5ODAwMCwKKyAgICAweDM4NTlhMDAwLAorICAgIDB4Mzg1OWMwMDAs
CisgICAgMHgzODU5ZTAwMCwKKyAgICAweDM4NWEwMDAwLAorICAgIDB4Mzg1YTIwMDAsCisgICAg
MHgzODVhNDAwMCwKKyAgICAweDM4NWE2MDAwLAorICAgIDB4Mzg1YTgwMDAsCisgICAgMHgzODVh
YTAwMCwKKyAgICAweDM4NWFjMDAwLAorICAgIDB4Mzg1YWUwMDAsCisgICAgMHgzODViMDAwMCwK
KyAgICAweDM4NWIyMDAwLAorICAgIDB4Mzg1YjQwMDAsCisgICAgMHgzODViNjAwMCwKKyAgICAw
eDM4NWI4MDAwLAorICAgIDB4Mzg1YmEwMDAsCisgICAgMHgzODViYzAwMCwKKyAgICAweDM4NWJl
MDAwLAorICAgIDB4Mzg1YzAwMDAsCisgICAgMHgzODVjMjAwMCwKKyAgICAweDM4NWM0MDAwLAor
ICAgIDB4Mzg1YzYwMDAsCisgICAgMHgzODVjODAwMCwKKyAgICAweDM4NWNhMDAwLAorICAgIDB4
Mzg1Y2MwMDAsCisgICAgMHgzODVjZTAwMCwKKyAgICAweDM4NWQwMDAwLAorICAgIDB4Mzg1ZDIw
MDAsCisgICAgMHgzODVkNDAwMCwKKyAgICAweDM4NWQ2MDAwLAorICAgIDB4Mzg1ZDgwMDAsCisg
ICAgMHgzODVkYTAwMCwKKyAgICAweDM4NWRjMDAwLAorICAgIDB4Mzg1ZGUwMDAsCisgICAgMHgz
ODVlMDAwMCwKKyAgICAweDM4NWUyMDAwLAorICAgIDB4Mzg1ZTQwMDAsCisgICAgMHgzODVlNjAw
MCwKKyAgICAweDM4NWU4MDAwLAorICAgIDB4Mzg1ZWEwMDAsCisgICAgMHgzODVlYzAwMCwKKyAg
ICAweDM4NWVlMDAwLAorICAgIDB4Mzg1ZjAwMDAsCisgICAgMHgzODVmMjAwMCwKKyAgICAweDM4
NWY0MDAwLAorICAgIDB4Mzg1ZjYwMDAsCisgICAgMHgzODVmODAwMCwKKyAgICAweDM4NWZhMDAw
LAorICAgIDB4Mzg1ZmMwMDAsCisgICAgMHgzODVmZTAwMCwKKyAgICAweDM4NjAwMDAwLAorICAg
IDB4Mzg2MDIwMDAsCisgICAgMHgzODYwNDAwMCwKKyAgICAweDM4NjA2MDAwLAorICAgIDB4Mzg2
MDgwMDAsCisgICAgMHgzODYwYTAwMCwKKyAgICAweDM4NjBjMDAwLAorICAgIDB4Mzg2MGUwMDAs
CisgICAgMHgzODYxMDAwMCwKKyAgICAweDM4NjEyMDAwLAorICAgIDB4Mzg2MTQwMDAsCisgICAg
MHgzODYxNjAwMCwKKyAgICAweDM4NjE4MDAwLAorICAgIDB4Mzg2MWEwMDAsCisgICAgMHgzODYx
YzAwMCwKKyAgICAweDM4NjFlMDAwLAorICAgIDB4Mzg2MjAwMDAsCisgICAgMHgzODYyMjAwMCwK
KyAgICAweDM4NjI0MDAwLAorICAgIDB4Mzg2MjYwMDAsCisgICAgMHgzODYyODAwMCwKKyAgICAw
eDM4NjJhMDAwLAorICAgIDB4Mzg2MmMwMDAsCisgICAgMHgzODYyZTAwMCwKKyAgICAweDM4NjMw
MDAwLAorICAgIDB4Mzg2MzIwMDAsCisgICAgMHgzODYzNDAwMCwKKyAgICAweDM4NjM2MDAwLAor
ICAgIDB4Mzg2MzgwMDAsCisgICAgMHgzODYzYTAwMCwKKyAgICAweDM4NjNjMDAwLAorICAgIDB4
Mzg2M2UwMDAsCisgICAgMHgzODY0MDAwMCwKKyAgICAweDM4NjQyMDAwLAorICAgIDB4Mzg2NDQw
MDAsCisgICAgMHgzODY0NjAwMCwKKyAgICAweDM4NjQ4MDAwLAorICAgIDB4Mzg2NGEwMDAsCisg
ICAgMHgzODY0YzAwMCwKKyAgICAweDM4NjRlMDAwLAorICAgIDB4Mzg2NTAwMDAsCisgICAgMHgz
ODY1MjAwMCwKKyAgICAweDM4NjU0MDAwLAorICAgIDB4Mzg2NTYwMDAsCisgICAgMHgzODY1ODAw
MCwKKyAgICAweDM4NjVhMDAwLAorICAgIDB4Mzg2NWMwMDAsCisgICAgMHgzODY1ZTAwMCwKKyAg
ICAweDM4NjYwMDAwLAorICAgIDB4Mzg2NjIwMDAsCisgICAgMHgzODY2NDAwMCwKKyAgICAweDM4
NjY2MDAwLAorICAgIDB4Mzg2NjgwMDAsCisgICAgMHgzODY2YTAwMCwKKyAgICAweDM4NjZjMDAw
LAorICAgIDB4Mzg2NmUwMDAsCisgICAgMHgzODY3MDAwMCwKKyAgICAweDM4NjcyMDAwLAorICAg
IDB4Mzg2NzQwMDAsCisgICAgMHgzODY3NjAwMCwKKyAgICAweDM4Njc4MDAwLAorICAgIDB4Mzg2
N2EwMDAsCisgICAgMHgzODY3YzAwMCwKKyAgICAweDM4NjdlMDAwLAorICAgIDB4Mzg2ODAwMDAs
CisgICAgMHgzODY4MjAwMCwKKyAgICAweDM4Njg0MDAwLAorICAgIDB4Mzg2ODYwMDAsCisgICAg
MHgzODY4ODAwMCwKKyAgICAweDM4NjhhMDAwLAorICAgIDB4Mzg2OGMwMDAsCisgICAgMHgzODY4
ZTAwMCwKKyAgICAweDM4NjkwMDAwLAorICAgIDB4Mzg2OTIwMDAsCisgICAgMHgzODY5NDAwMCwK
KyAgICAweDM4Njk2MDAwLAorICAgIDB4Mzg2OTgwMDAsCisgICAgMHgzODY5YTAwMCwKKyAgICAw
eDM4NjljMDAwLAorICAgIDB4Mzg2OWUwMDAsCisgICAgMHgzODZhMDAwMCwKKyAgICAweDM4NmEy
MDAwLAorICAgIDB4Mzg2YTQwMDAsCisgICAgMHgzODZhNjAwMCwKKyAgICAweDM4NmE4MDAwLAor
ICAgIDB4Mzg2YWEwMDAsCisgICAgMHgzODZhYzAwMCwKKyAgICAweDM4NmFlMDAwLAorICAgIDB4
Mzg2YjAwMDAsCisgICAgMHgzODZiMjAwMCwKKyAgICAweDM4NmI0MDAwLAorICAgIDB4Mzg2YjYw
MDAsCisgICAgMHgzODZiODAwMCwKKyAgICAweDM4NmJhMDAwLAorICAgIDB4Mzg2YmMwMDAsCisg
ICAgMHgzODZiZTAwMCwKKyAgICAweDM4NmMwMDAwLAorICAgIDB4Mzg2YzIwMDAsCisgICAgMHgz
ODZjNDAwMCwKKyAgICAweDM4NmM2MDAwLAorICAgIDB4Mzg2YzgwMDAsCisgICAgMHgzODZjYTAw
MCwKKyAgICAweDM4NmNjMDAwLAorICAgIDB4Mzg2Y2UwMDAsCisgICAgMHgzODZkMDAwMCwKKyAg
ICAweDM4NmQyMDAwLAorICAgIDB4Mzg2ZDQwMDAsCisgICAgMHgzODZkNjAwMCwKKyAgICAweDM4
NmQ4MDAwLAorICAgIDB4Mzg2ZGEwMDAsCisgICAgMHgzODZkYzAwMCwKKyAgICAweDM4NmRlMDAw
LAorICAgIDB4Mzg2ZTAwMDAsCisgICAgMHgzODZlMjAwMCwKKyAgICAweDM4NmU0MDAwLAorICAg
IDB4Mzg2ZTYwMDAsCisgICAgMHgzODZlODAwMCwKKyAgICAweDM4NmVhMDAwLAorICAgIDB4Mzg2
ZWMwMDAsCisgICAgMHgzODZlZTAwMCwKKyAgICAweDM4NmYwMDAwLAorICAgIDB4Mzg2ZjIwMDAs
CisgICAgMHgzODZmNDAwMCwKKyAgICAweDM4NmY2MDAwLAorICAgIDB4Mzg2ZjgwMDAsCisgICAg
MHgzODZmYTAwMCwKKyAgICAweDM4NmZjMDAwLAorICAgIDB4Mzg2ZmUwMDAsCisgICAgMHgzODcw
MDAwMCwKKyAgICAweDM4NzAyMDAwLAorICAgIDB4Mzg3MDQwMDAsCisgICAgMHgzODcwNjAwMCwK
KyAgICAweDM4NzA4MDAwLAorICAgIDB4Mzg3MGEwMDAsCisgICAgMHgzODcwYzAwMCwKKyAgICAw
eDM4NzBlMDAwLAorICAgIDB4Mzg3MTAwMDAsCisgICAgMHgzODcxMjAwMCwKKyAgICAweDM4NzE0
MDAwLAorICAgIDB4Mzg3MTYwMDAsCisgICAgMHgzODcxODAwMCwKKyAgICAweDM4NzFhMDAwLAor
ICAgIDB4Mzg3MWMwMDAsCisgICAgMHgzODcxZTAwMCwKKyAgICAweDM4NzIwMDAwLAorICAgIDB4
Mzg3MjIwMDAsCisgICAgMHgzODcyNDAwMCwKKyAgICAweDM4NzI2MDAwLAorICAgIDB4Mzg3Mjgw
MDAsCisgICAgMHgzODcyYTAwMCwKKyAgICAweDM4NzJjMDAwLAorICAgIDB4Mzg3MmUwMDAsCisg
ICAgMHgzODczMDAwMCwKKyAgICAweDM4NzMyMDAwLAorICAgIDB4Mzg3MzQwMDAsCisgICAgMHgz
ODczNjAwMCwKKyAgICAweDM4NzM4MDAwLAorICAgIDB4Mzg3M2EwMDAsCisgICAgMHgzODczYzAw
MCwKKyAgICAweDM4NzNlMDAwLAorICAgIDB4Mzg3NDAwMDAsCisgICAgMHgzODc0MjAwMCwKKyAg
ICAweDM4NzQ0MDAwLAorICAgIDB4Mzg3NDYwMDAsCisgICAgMHgzODc0ODAwMCwKKyAgICAweDM4
NzRhMDAwLAorICAgIDB4Mzg3NGMwMDAsCisgICAgMHgzODc0ZTAwMCwKKyAgICAweDM4NzUwMDAw
LAorICAgIDB4Mzg3NTIwMDAsCisgICAgMHgzODc1NDAwMCwKKyAgICAweDM4NzU2MDAwLAorICAg
IDB4Mzg3NTgwMDAsCisgICAgMHgzODc1YTAwMCwKKyAgICAweDM4NzVjMDAwLAorICAgIDB4Mzg3
NWUwMDAsCisgICAgMHgzODc2MDAwMCwKKyAgICAweDM4NzYyMDAwLAorICAgIDB4Mzg3NjQwMDAs
CisgICAgMHgzODc2NjAwMCwKKyAgICAweDM4NzY4MDAwLAorICAgIDB4Mzg3NmEwMDAsCisgICAg
MHgzODc2YzAwMCwKKyAgICAweDM4NzZlMDAwLAorICAgIDB4Mzg3NzAwMDAsCisgICAgMHgzODc3
MjAwMCwKKyAgICAweDM4Nzc0MDAwLAorICAgIDB4Mzg3NzYwMDAsCisgICAgMHgzODc3ODAwMCwK
KyAgICAweDM4NzdhMDAwLAorICAgIDB4Mzg3N2MwMDAsCisgICAgMHgzODc3ZTAwMCwKKyAgICAw
eDM4NzgwMDAwLAorICAgIDB4Mzg3ODIwMDAsCisgICAgMHgzODc4NDAwMCwKKyAgICAweDM4Nzg2
MDAwLAorICAgIDB4Mzg3ODgwMDAsCisgICAgMHgzODc4YTAwMCwKKyAgICAweDM4NzhjMDAwLAor
ICAgIDB4Mzg3OGUwMDAsCisgICAgMHgzODc5MDAwMCwKKyAgICAweDM4NzkyMDAwLAorICAgIDB4
Mzg3OTQwMDAsCisgICAgMHgzODc5NjAwMCwKKyAgICAweDM4Nzk4MDAwLAorICAgIDB4Mzg3OWEw
MDAsCisgICAgMHgzODc5YzAwMCwKKyAgICAweDM4NzllMDAwLAorICAgIDB4Mzg3YTAwMDAsCisg
ICAgMHgzODdhMjAwMCwKKyAgICAweDM4N2E0MDAwLAorICAgIDB4Mzg3YTYwMDAsCisgICAgMHgz
ODdhODAwMCwKKyAgICAweDM4N2FhMDAwLAorICAgIDB4Mzg3YWMwMDAsCisgICAgMHgzODdhZTAw
MCwKKyAgICAweDM4N2IwMDAwLAorICAgIDB4Mzg3YjIwMDAsCisgICAgMHgzODdiNDAwMCwKKyAg
ICAweDM4N2I2MDAwLAorICAgIDB4Mzg3YjgwMDAsCisgICAgMHgzODdiYTAwMCwKKyAgICAweDM4
N2JjMDAwLAorICAgIDB4Mzg3YmUwMDAsCisgICAgMHgzODdjMDAwMCwKKyAgICAweDM4N2MyMDAw
LAorICAgIDB4Mzg3YzQwMDAsCisgICAgMHgzODdjNjAwMCwKKyAgICAweDM4N2M4MDAwLAorICAg
IDB4Mzg3Y2EwMDAsCisgICAgMHgzODdjYzAwMCwKKyAgICAweDM4N2NlMDAwLAorICAgIDB4Mzg3
ZDAwMDAsCisgICAgMHgzODdkMjAwMCwKKyAgICAweDM4N2Q0MDAwLAorICAgIDB4Mzg3ZDYwMDAs
CisgICAgMHgzODdkODAwMCwKKyAgICAweDM4N2RhMDAwLAorICAgIDB4Mzg3ZGMwMDAsCisgICAg
MHgzODdkZTAwMCwKKyAgICAweDM4N2UwMDAwLAorICAgIDB4Mzg3ZTIwMDAsCisgICAgMHgzODdl
NDAwMCwKKyAgICAweDM4N2U2MDAwLAorICAgIDB4Mzg3ZTgwMDAsCisgICAgMHgzODdlYTAwMCwK
KyAgICAweDM4N2VjMDAwLAorICAgIDB4Mzg3ZWUwMDAsCisgICAgMHgzODdmMDAwMCwKKyAgICAw
eDM4N2YyMDAwLAorICAgIDB4Mzg3ZjQwMDAsCisgICAgMHgzODdmNjAwMCwKKyAgICAweDM4N2Y4
MDAwLAorICAgIDB4Mzg3ZmEwMDAsCisgICAgMHgzODdmYzAwMCwKKyAgICAweDM4N2ZlMDAwLAor
fTsKKworY29uc3Qgc3RhdGljIHVuc2lnbmVkIGdfZXhwb25lbnRbNjRdID0geworICAgIDB4MDAw
MDAwMDAsCisgICAgMHgwMDgwMDAwMCwKKyAgICAweDAxMDAwMDAwLAorICAgIDB4MDE4MDAwMDAs
CisgICAgMHgwMjAwMDAwMCwKKyAgICAweDAyODAwMDAwLAorICAgIDB4MDMwMDAwMDAsCisgICAg
MHgwMzgwMDAwMCwKKyAgICAweDA0MDAwMDAwLAorICAgIDB4MDQ4MDAwMDAsCisgICAgMHgwNTAw
MDAwMCwKKyAgICAweDA1ODAwMDAwLAorICAgIDB4MDYwMDAwMDAsCisgICAgMHgwNjgwMDAwMCwK
KyAgICAweDA3MDAwMDAwLAorICAgIDB4MDc4MDAwMDAsCisgICAgMHgwODAwMDAwMCwKKyAgICAw
eDA4ODAwMDAwLAorICAgIDB4MDkwMDAwMDAsCisgICAgMHgwOTgwMDAwMCwKKyAgICAweDBhMDAw
MDAwLAorICAgIDB4MGE4MDAwMDAsCisgICAgMHgwYjAwMDAwMCwKKyAgICAweDBiODAwMDAwLAor
ICAgIDB4MGMwMDAwMDAsCisgICAgMHgwYzgwMDAwMCwKKyAgICAweDBkMDAwMDAwLAorICAgIDB4
MGQ4MDAwMDAsCisgICAgMHgwZTAwMDAwMCwKKyAgICAweDBlODAwMDAwLAorICAgIDB4MGYwMDAw
MDAsCisgICAgMHg0NzgwMDAwMCwKKyAgICAweDgwMDAwMDAwLAorICAgIDB4ODA4MDAwMDAsCisg
ICAgMHg4MTAwMDAwMCwKKyAgICAweDgxODAwMDAwLAorICAgIDB4ODIwMDAwMDAsCisgICAgMHg4
MjgwMDAwMCwKKyAgICAweDgzMDAwMDAwLAorICAgIDB4ODM4MDAwMDAsCisgICAgMHg4NDAwMDAw
MCwKKyAgICAweDg0ODAwMDAwLAorICAgIDB4ODUwMDAwMDAsCisgICAgMHg4NTgwMDAwMCwKKyAg
ICAweDg2MDAwMDAwLAorICAgIDB4ODY4MDAwMDAsCisgICAgMHg4NzAwMDAwMCwKKyAgICAweDg3
ODAwMDAwLAorICAgIDB4ODgwMDAwMDAsCisgICAgMHg4ODgwMDAwMCwKKyAgICAweDg5MDAwMDAw
LAorICAgIDB4ODk4MDAwMDAsCisgICAgMHg4YTAwMDAwMCwKKyAgICAweDhhODAwMDAwLAorICAg
IDB4OGIwMDAwMDAsCisgICAgMHg4YjgwMDAwMCwKKyAgICAweDhjMDAwMDAwLAorICAgIDB4OGM4
MDAwMDAsCisgICAgMHg4ZDAwMDAwMCwKKyAgICAweDhkODAwMDAwLAorICAgIDB4OGUwMDAwMDAs
CisgICAgMHg4ZTgwMDAwMCwKKyAgICAweDhmMDAwMDAwLAorICAgIDB4Yzc4MDAwMDAsCit9Owor
Citjb25zdCBzdGF0aWMgdW5zaWduZWQgZ19vZmZzZXRbNjRdID0geworICAgIDB4MDAwMDAwMDAs
CisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAg
MHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAw
MDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwK
KyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAw
eDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAw
NDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAor
ICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4
MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0
MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisg
ICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwMDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgw
MDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQw
MCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAg
ICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAw
MDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAw
LAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAg
IDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAw
MDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAs
CisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAg
MHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCit9OworCitmbG9h
dCBmbG9hdDE2VG9GbG9hdDMyKHVuc2lnbmVkIHNob3J0IGgpCit7CisgICAgdW5zaWduZWQgaTMy
ID0gZ19tYW50aXNzYVtnX29mZnNldFtoID4+IDEwXSArIChoICYgMHgzZmYpXSArIGdfZXhwb25l
bnRbaCA+PiAxMF07CisgICAgcmV0dXJuICooZmxvYXQqKSAmaTMyOworfQorfQorCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0Zsb2F0MTZUb0Zsb2F0MzIucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GbG9h
dDE2VG9GbG9hdDMyLnB5CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9GbG9hdDE2VG9GbG9hdDMyLnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDc4IEBACisjIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisjCisKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIGEgZnVuY3Rpb24gdGhhdCBj
b252ZXJ0cyAxNi1iaXQgcHJlY2lzaW9uIGZsb2F0aW5nCisjIHBvaW50IG51bWJlcnMgdG8gMzIt
Yml0LgorIyBJdCBpcyBiYXNlZCBvbiBmdHA6Ly9mdHAuZm94LXRvb2xraXQub3JnL3B1Yi9mYXN0
aGFsZmZsb2F0Y29udmVyc2lvbi5wZGYuCisKK2RlZiBjb252ZXJ0TWFudGlzc2EoaSk6CisgICAg
aWYgaSA9PSAwOgorICAgICAgICByZXR1cm4gMAorICAgIGVsaWYgaSA8IDEwMjQ6CisgICAgICAg
IG0gPSBpIDw8IDEzCisgICAgICAgIGUgPSAwCisgICAgICAgIHdoaWxlIG5vdCAobSAmIDB4MDA4
MDAwMDApOgorICAgICAgICAgICAgZSAtPSAweDAwODAwMDAwCisgICAgICAgICAgICBtID0gbSA8
PCAxCisgICAgICAgIG0gJj0gfjB4MDA4MDAwMDAKKyAgICAgICAgZSArPSAweDM4ODAwMDAwCisg
ICAgICAgIHJldHVybiBtIHwgZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAweDM4MDAwMDAw
ICsgKChpIC0gMTAyNCkgPDwgMTMpCisKK2RlZiBjb252ZXJ0RXhwb25lbnQoaSk6CisgICAgaWYg
aSA9PSAwOgorICAgICAgICByZXR1cm4gMAorICAgIGVsaWYgaSBpbiByYW5nZSgxLCAzMSk6Cisg
ICAgICAgIHJldHVybiBpIDw8IDIzCisgICAgZWxpZiBpID09IDMxOgorICAgICAgICByZXR1cm4g
MHg0NzgwMDAwMAorICAgIGVsaWYgaSA9PSAzMjoKKyAgICAgICAgcmV0dXJuIDB4ODAwMDAwMDAK
KyAgICBlbGlmIGkgaW4gcmFuZ2UoMzMsIDYzKToKKyAgICAgICAgcmV0dXJuIDB4ODAwMDAwMDAg
KyAoKGkgLSAzMikgPDwgMjMpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIDB4Qzc4MDAwMDAK
KworZGVmIGNvbnZlcnRPZmZzZXQoaSk6CisgICAgaWYgaSA9PSAwIG9yIGkgPT0gMzI6CisgICAg
ICAgIHJldHVybiAwCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIDEwMjQKKworcHJpbnQgIiIi
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC4K
KworbmFtZXNwYWNlIGdsCit7CisiIiIKKworcHJpbnQgImNvbnN0IHN0YXRpYyB1bnNpZ25lZCBn
X21hbnRpc3NhWzIwNDhdID0geyIKK2ZvciBpIGluIHJhbmdlKDAsIDIwNDgpOgorICAgIHByaW50
ICIgICAgJSMwMTB4LCIgJSBjb252ZXJ0TWFudGlzc2EoaSkKK3ByaW50ICJ9O1xuIgorCitwcmlu
dCAiY29uc3Qgc3RhdGljIHVuc2lnbmVkIGdfZXhwb25lbnRbNjRdID0geyIKK2ZvciBpIGluIHJh
bmdlKDAsIDY0KToKKyAgICBwcmludCAiICAgICUjMDEweCwiICUgY29udmVydEV4cG9uZW50KGkp
CitwcmludCAifTtcbiIKKworcHJpbnQgImNvbnN0IHN0YXRpYyB1bnNpZ25lZCBnX29mZnNldFs2
NF0gPSB7IgorZm9yIGkgaW4gcmFuZ2UoMCwgNjQpOgorICAgIHByaW50ICIgICAgJSMwMTB4LCIg
JSBjb252ZXJ0T2Zmc2V0KGkpCitwcmludCAifTtcbiIKKworcHJpbnQgIiIiZmxvYXQgZmxvYXQx
NlRvRmxvYXQzMih1bnNpZ25lZCBzaG9ydCBoKQoreworICAgIHVuc2lnbmVkIGkzMiA9IGdfbWFu
dGlzc2FbZ19vZmZzZXRbaCA+PiAxMF0gKyAoaCAmIDB4M2ZmKV0gKyBnX2V4cG9uZW50W2ggPj4g
MTBdOworICAgIHJldHVybiAqKGZsb2F0KikgJmkzMjsKK30KK30KKyIiIgpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L0ZyYW1lYnVmZmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MDMgQEAKKyNpbmNsdWRl
ICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRnJhbWVidWZmZXIuY3Bw
OiBJbXBsZW1lbnRzIHRoZSBnbDo6RnJhbWVidWZmZXIgY2xhc3MuIEltcGxlbWVudHMgR0wgZnJh
bWVidWZmZXIKKy8vIG9iamVjdHMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBF
UyAyLjAuMjRdIHNlY3Rpb24gNC40IHBhZ2UgMTA1LgorCisjaW5jbHVkZSAibGliR0xFU3YyL0Zy
YW1lYnVmZmVyLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvVGV4dHVyZS5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9Db250ZXh0LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L1JlbmRlcmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgorCituYW1l
c3BhY2UgZ2wKK3sKKworRnJhbWVidWZmZXI6OkZyYW1lYnVmZmVyKHJ4OjpSZW5kZXJlciAqcmVu
ZGVyZXIpCisgICAgOiBtUmVuZGVyZXIocmVuZGVyZXIpCit7CisgICAgZm9yICh1bnNpZ25lZCBp
bnQgY29sb3JBdHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgSU1QTEVNRU5UQVRJT05f
TUFYX0RSQVdfQlVGRkVSUzsgY29sb3JBdHRhY2htZW50KyspCisgICAgeworICAgICAgICBtQ29s
b3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdID0gR0xfTk9ORTsKKyAgICAgICAgbURyYXdC
dWZmZXJTdGF0ZXNbY29sb3JBdHRhY2htZW50XSA9IEdMX05PTkU7CisgICAgfQorICAgIG1EcmF3
QnVmZmVyU3RhdGVzWzBdID0gR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUOworICAgIG1SZWFkQnVm
ZmVyU3RhdGUgPSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQ7CisKKyAgICBtRGVwdGhidWZmZXJU
eXBlID0gR0xfTk9ORTsKKyAgICBtU3RlbmNpbGJ1ZmZlclR5cGUgPSBHTF9OT05FOworfQorCitG
cmFtZWJ1ZmZlcjo6fkZyYW1lYnVmZmVyKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBjb2xv
ckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9NQVhfRFJB
V19CVUZGRVJTOyBjb2xvckF0dGFjaG1lbnQrKykKKyAgICB7CisgICAgICAgIG1Db2xvcmJ1ZmZl
clBvaW50ZXJzW2NvbG9yQXR0YWNobWVudF0uc2V0KE5VTEwpOworICAgIH0KKyAgICBtRGVwdGhi
dWZmZXJQb2ludGVyLnNldChOVUxMKTsKKyAgICBtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuc2V0KE5V
TEwpOworfQorCitSZW5kZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpsb29rdXBSZW5kZXJidWZmZXIo
R0xlbnVtIHR5cGUsIEdMdWludCBoYW5kbGUpIGNvbnN0Cit7CisgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgIFJlbmRlcmJ1ZmZlciAqYnVmZmVyID0gTlVM
TDsKKworICAgIGlmICh0eXBlID09IEdMX05PTkUpCisgICAgeworICAgICAgICBidWZmZXIgPSBO
VUxMOworICAgIH0KKyAgICBlbHNlIGlmICh0eXBlID09IEdMX1JFTkRFUkJVRkZFUikKKyAgICB7
CisgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlcihoYW5kbGUpOworICAg
IH0KKyAgICBlbHNlIGlmIChJc0ludGVybmFsVGV4dHVyZVRhcmdldCh0eXBlKSkKKyAgICB7Cisg
ICAgICAgIGJ1ZmZlciA9IGNvbnRleHQtPmdldFRleHR1cmUoaGFuZGxlKS0+Z2V0UmVuZGVyYnVm
ZmVyKHR5cGUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgIH0KKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3ZvaWQgRnJhbWVidWZmZXI6OnNl
dENvbG9yYnVmZmVyKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQsIEdMZW51bSB0eXBlLCBH
THVpbnQgY29sb3JidWZmZXIpCit7CisgICAgQVNTRVJUKGNvbG9yQXR0YWNobWVudCA8IElNUExF
TUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlMpOworICAgIG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9y
QXR0YWNobWVudF0gPSAoY29sb3JidWZmZXIgIT0gMCkgPyB0eXBlIDogR0xfTk9ORTsKKyAgICBt
Q29sb3JidWZmZXJQb2ludGVyc1tjb2xvckF0dGFjaG1lbnRdLnNldChsb29rdXBSZW5kZXJidWZm
ZXIodHlwZSwgY29sb3JidWZmZXIpKTsKK30KKwordm9pZCBGcmFtZWJ1ZmZlcjo6c2V0RGVwdGhi
dWZmZXIoR0xlbnVtIHR5cGUsIEdMdWludCBkZXB0aGJ1ZmZlcikKK3sKKyAgICBtRGVwdGhidWZm
ZXJUeXBlID0gKGRlcHRoYnVmZmVyICE9IDApID8gdHlwZSA6IEdMX05PTkU7CisgICAgbURlcHRo
YnVmZmVyUG9pbnRlci5zZXQobG9va3VwUmVuZGVyYnVmZmVyKHR5cGUsIGRlcHRoYnVmZmVyKSk7
Cit9CisKK3ZvaWQgRnJhbWVidWZmZXI6OnNldFN0ZW5jaWxidWZmZXIoR0xlbnVtIHR5cGUsIEdM
dWludCBzdGVuY2lsYnVmZmVyKQoreworICAgIG1TdGVuY2lsYnVmZmVyVHlwZSA9IChzdGVuY2ls
YnVmZmVyICE9IDApID8gdHlwZSA6IEdMX05PTkU7CisgICAgbVN0ZW5jaWxidWZmZXJQb2ludGVy
LnNldChsb29rdXBSZW5kZXJidWZmZXIodHlwZSwgc3RlbmNpbGJ1ZmZlcikpOworfQorCit2b2lk
IEZyYW1lYnVmZmVyOjpkZXRhY2hUZXh0dXJlKEdMdWludCB0ZXh0dXJlKQoreworICAgIGZvciAo
dW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IElNUExF
TUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM7IGNvbG9yQXR0YWNobWVudCsrKQorICAgIHsKKyAg
ICAgICAgaWYgKG1Db2xvcmJ1ZmZlclBvaW50ZXJzW2NvbG9yQXR0YWNobWVudF0uaWQoKSA9PSB0
ZXh0dXJlICYmIElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9y
QXR0YWNobWVudF0pKQorICAgICAgICB7CisgICAgICAgICAgICBtQ29sb3JidWZmZXJUeXBlc1tj
b2xvckF0dGFjaG1lbnRdID0gR0xfTk9ORTsKKyAgICAgICAgICAgIG1Db2xvcmJ1ZmZlclBvaW50
ZXJzW2NvbG9yQXR0YWNobWVudF0uc2V0KE5VTEwpOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKG1EZXB0aGJ1ZmZlclBvaW50ZXIuaWQoKSA9PSB0ZXh0dXJlICYmIElzSW50ZXJuYWxUZXh0
dXJlVGFyZ2V0KG1EZXB0aGJ1ZmZlclR5cGUpKQorICAgIHsKKyAgICAgICAgbURlcHRoYnVmZmVy
VHlwZSA9IEdMX05PTkU7CisgICAgICAgIG1EZXB0aGJ1ZmZlclBvaW50ZXIuc2V0KE5VTEwpOwor
ICAgIH0KKworICAgIGlmIChtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuaWQoKSA9PSB0ZXh0dXJlICYm
IElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1TdGVuY2lsYnVmZmVyVHlwZSkpCisgICAgeworICAg
ICAgICBtU3RlbmNpbGJ1ZmZlclR5cGUgPSBHTF9OT05FOworICAgICAgICBtU3RlbmNpbGJ1ZmZl
clBvaW50ZXIuc2V0KE5VTEwpOworICAgIH0KK30KKwordm9pZCBGcmFtZWJ1ZmZlcjo6ZGV0YWNo
UmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpCit7CisgICAgZm9yICh1bnNpZ25lZCBp
bnQgY29sb3JBdHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgSU1QTEVNRU5UQVRJT05f
TUFYX0RSQVdfQlVGRkVSUzsgY29sb3JBdHRhY2htZW50KyspCisgICAgeworICAgICAgICBpZiAo
bUNvbG9yYnVmZmVyUG9pbnRlcnNbY29sb3JBdHRhY2htZW50XS5pZCgpID09IHJlbmRlcmJ1ZmZl
ciAmJiBtQ29sb3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdID09IEdMX1JFTkRFUkJVRkZF
UikKKyAgICAgICAgeworICAgICAgICAgICAgbUNvbG9yYnVmZmVyVHlwZXNbY29sb3JBdHRhY2ht
ZW50XSA9IEdMX05PTkU7CisgICAgICAgICAgICBtQ29sb3JidWZmZXJQb2ludGVyc1tjb2xvckF0
dGFjaG1lbnRdLnNldChOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtRGVwdGhi
dWZmZXJQb2ludGVyLmlkKCkgPT0gcmVuZGVyYnVmZmVyICYmIG1EZXB0aGJ1ZmZlclR5cGUgPT0g
R0xfUkVOREVSQlVGRkVSKQorICAgIHsKKyAgICAgICAgbURlcHRoYnVmZmVyVHlwZSA9IEdMX05P
TkU7CisgICAgICAgIG1EZXB0aGJ1ZmZlclBvaW50ZXIuc2V0KE5VTEwpOworICAgIH0KKworICAg
IGlmIChtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuaWQoKSA9PSByZW5kZXJidWZmZXIgJiYgbVN0ZW5j
aWxidWZmZXJUeXBlID09IEdMX1JFTkRFUkJVRkZFUikKKyAgICB7CisgICAgICAgIG1TdGVuY2ls
YnVmZmVyVHlwZSA9IEdMX05PTkU7CisgICAgICAgIG1TdGVuY2lsYnVmZmVyUG9pbnRlci5zZXQo
TlVMTCk7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgRnJhbWVidWZmZXI6OmdldFJlbmRlclRh
cmdldFNlcmlhbCh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25zdAoreworICAgIEFT
U0VSVChjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTKTsK
KworICAgIFJlbmRlcmJ1ZmZlciAqY29sb3JidWZmZXIgPSBtQ29sb3JidWZmZXJQb2ludGVyc1tj
b2xvckF0dGFjaG1lbnRdLmdldCgpOworCisgICAgaWYgKGNvbG9yYnVmZmVyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGNvbG9yYnVmZmVyLT5nZXRTZXJpYWwoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gMDsKK30KKwordW5zaWduZWQgaW50IEZyYW1lYnVmZmVyOjpnZXREZXB0aGJ1ZmZlclNlcmlh
bCgpIGNvbnN0Cit7CisgICAgUmVuZGVyYnVmZmVyICpkZXB0aGJ1ZmZlciA9IG1EZXB0aGJ1ZmZl
clBvaW50ZXIuZ2V0KCk7CisKKyAgICBpZiAoZGVwdGhidWZmZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gZGVwdGhidWZmZXItPmdldFNlcmlhbCgpOworICAgIH0KKworICAgIHJldHVybiAwOwor
fQorCit1bnNpZ25lZCBpbnQgRnJhbWVidWZmZXI6OmdldFN0ZW5jaWxidWZmZXJTZXJpYWwoKSBj
b25zdAoreworICAgIFJlbmRlcmJ1ZmZlciAqc3RlbmNpbGJ1ZmZlciA9IG1TdGVuY2lsYnVmZmVy
UG9pbnRlci5nZXQoKTsKKworICAgIGlmIChzdGVuY2lsYnVmZmVyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHN0ZW5jaWxidWZmZXItPmdldFNlcmlhbCgpOworICAgIH0KKworICAgIHJldHVybiAw
OworfQorCitSZW5kZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpnZXRDb2xvcmJ1ZmZlcih1bnNpZ25l
ZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25zdAoreworICAgIEFTU0VSVChjb2xvckF0dGFjaG1l
bnQgPCBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTKTsKKyAgICByZXR1cm4gbUNvbG9y
YnVmZmVyUG9pbnRlcnNbY29sb3JBdHRhY2htZW50XS5nZXQoKTsKK30KKworUmVuZGVyYnVmZmVy
ICpGcmFtZWJ1ZmZlcjo6Z2V0RGVwdGhidWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBtRGVw
dGhidWZmZXJQb2ludGVyLmdldCgpOworfQorCitSZW5kZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpn
ZXRTdGVuY2lsYnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0ZW5jaWxidWZmZXJQb2lu
dGVyLmdldCgpOworfQorCitSZW5kZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpnZXREZXB0aE9yU3Rl
bmNpbGJ1ZmZlcigpIGNvbnN0Cit7CisgICAgUmVuZGVyYnVmZmVyICpkZXB0aHN0ZW5jaWxidWZm
ZXIgPSBtRGVwdGhidWZmZXJQb2ludGVyLmdldCgpOworICAgIAorICAgIGlmICghZGVwdGhzdGVu
Y2lsYnVmZmVyKQorICAgIHsKKyAgICAgICAgZGVwdGhzdGVuY2lsYnVmZmVyID0gbVN0ZW5jaWxi
dWZmZXJQb2ludGVyLmdldCgpOworICAgIH0KKworICAgIHJldHVybiBkZXB0aHN0ZW5jaWxidWZm
ZXI7Cit9CisKK1JlbmRlcmJ1ZmZlciAqRnJhbWVidWZmZXI6OmdldFJlYWRDb2xvcmJ1ZmZlcigp
IGNvbnN0Cit7CisgICAgLy8gV2lsbCByZXF1aXJlIG1vcmUgbG9naWMgaWYgZ2xSZWFkQnVmZmVy
cyBpcyBzdXBwb3J0ZWQKKyAgICByZXR1cm4gbUNvbG9yYnVmZmVyUG9pbnRlcnNbMF0uZ2V0KCk7
Cit9CisKK0dMZW51bSBGcmFtZWJ1ZmZlcjo6Z2V0UmVhZENvbG9yYnVmZmVyVHlwZSgpIGNvbnN0
Cit7CisgICAgLy8gV2lsbCByZXF1aXJlIG1vcmUgbG9naWMgaWYgZ2xSZWFkQnVmZmVycyBpcyBz
dXBwb3J0ZWQKKyAgICByZXR1cm4gbUNvbG9yYnVmZmVyVHlwZXNbMF07Cit9CisKK1JlbmRlcmJ1
ZmZlciAqRnJhbWVidWZmZXI6OmdldEZpcnN0Q29sb3JidWZmZXIoKSBjb25zdAoreworICAgIGZv
ciAodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IElN
UExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM7IGNvbG9yQXR0YWNobWVudCsrKQorICAgIHsK
KyAgICAgICAgaWYgKG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9yQXR0YWNobWVudF0gIT0gR0xfTk9O
RSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1Db2xvcmJ1ZmZlclBvaW50ZXJzW2Nv
bG9yQXR0YWNobWVudF0uZ2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gTlVM
TDsKK30KKworR0xlbnVtIEZyYW1lYnVmZmVyOjpnZXRDb2xvcmJ1ZmZlclR5cGUodW5zaWduZWQg
aW50IGNvbG9yQXR0YWNobWVudCkgY29uc3QKK3sKKyAgICBBU1NFUlQoY29sb3JBdHRhY2htZW50
IDwgSU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUyk7CisgICAgcmV0dXJuIG1Db2xvcmJ1
ZmZlclR5cGVzW2NvbG9yQXR0YWNobWVudF07Cit9CisKK0dMZW51bSBGcmFtZWJ1ZmZlcjo6Z2V0
RGVwdGhidWZmZXJUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbURlcHRoYnVmZmVyVHlwZTsK
K30KKworR0xlbnVtIEZyYW1lYnVmZmVyOjpnZXRTdGVuY2lsYnVmZmVyVHlwZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1TdGVuY2lsYnVmZmVyVHlwZTsKK30KKworR0x1aW50IEZyYW1lYnVmZmVy
OjpnZXRDb2xvcmJ1ZmZlckhhbmRsZSh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25z
dAoreworICAgIEFTU0VSVChjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9NQVhfRFJB
V19CVUZGRVJTKTsKKyAgICByZXR1cm4gbUNvbG9yYnVmZmVyUG9pbnRlcnNbY29sb3JBdHRhY2ht
ZW50XS5pZCgpOworfQorCitHTHVpbnQgRnJhbWVidWZmZXI6OmdldERlcHRoYnVmZmVySGFuZGxl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbURlcHRoYnVmZmVyUG9pbnRlci5pZCgpOworfQorCitH
THVpbnQgRnJhbWVidWZmZXI6OmdldFN0ZW5jaWxidWZmZXJIYW5kbGUoKSBjb25zdAoreworICAg
IHJldHVybiBtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuaWQoKTsKK30KKworR0xlbnVtIEZyYW1lYnVm
ZmVyOjpnZXREcmF3QnVmZmVyU3RhdGUodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbURyYXdCdWZmZXJTdGF0ZXNbY29sb3JBdHRhY2htZW50XTsKK30K
Kwordm9pZCBGcmFtZWJ1ZmZlcjo6c2V0RHJhd0J1ZmZlclN0YXRlKHVuc2lnbmVkIGludCBjb2xv
ckF0dGFjaG1lbnQsIEdMZW51bSBkcmF3QnVmZmVyKQoreworICAgIG1EcmF3QnVmZmVyU3RhdGVz
W2NvbG9yQXR0YWNobWVudF0gPSBkcmF3QnVmZmVyOworfQorCitib29sIEZyYW1lYnVmZmVyOjpp
c0VuYWJsZWRDb2xvckF0dGFjaG1lbnQodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29u
c3QKK3sKKyAgICByZXR1cm4gKG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9yQXR0YWNobWVudF0gIT0g
R0xfTk9ORSAmJiBtRHJhd0J1ZmZlclN0YXRlc1tjb2xvckF0dGFjaG1lbnRdICE9IEdMX05PTkUp
OworfQorCitib29sIEZyYW1lYnVmZmVyOjpoYXNFbmFibGVkQ29sb3JBdHRhY2htZW50KCkgY29u
c3QKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0
dGFjaG1lbnQgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUzsgY29sb3JBdHRh
Y2htZW50KyspCisgICAgeworICAgICAgICBpZiAoaXNFbmFibGVkQ29sb3JBdHRhY2htZW50KGNv
bG9yQXR0YWNobWVudCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZyYW1lYnVmZmVy
OjpoYXNTdGVuY2lsKCkgY29uc3QKK3sKKyAgICBpZiAobVN0ZW5jaWxidWZmZXJUeXBlICE9IEdM
X05PTkUpCisgICAgeworICAgICAgICBjb25zdCBSZW5kZXJidWZmZXIgKnN0ZW5jaWxidWZmZXJP
YmplY3QgPSBnZXRTdGVuY2lsYnVmZmVyKCk7CisKKyAgICAgICAgaWYgKHN0ZW5jaWxidWZmZXJP
YmplY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzdGVuY2lsYnVmZmVyT2JqZWN0
LT5nZXRTdGVuY2lsU2l6ZSgpID4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBGcmFtZWJ1ZmZlcjo6dXNpbmdFeHRlbmRlZERyYXdCdWZmZXJzKCkg
Y29uc3QKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAxOyBjb2xv
ckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTOyBjb2xvckF0dGFj
aG1lbnQrKykKKyAgICB7CisgICAgICAgIGlmIChpc0VuYWJsZWRDb2xvckF0dGFjaG1lbnQoY29s
b3JBdHRhY2htZW50KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0dMZW51bSBGcmFtZWJ1ZmZl
cjo6Y29tcGxldGVuZXNzKCkgY29uc3QKK3sKKyAgICBpbnQgd2lkdGggPSAwOworICAgIGludCBo
ZWlnaHQgPSAwOworICAgIGludCBjb2xvcmJ1ZmZlclNpemUgPSAwOworICAgIGludCBzYW1wbGVz
ID0gLTE7CisgICAgYm9vbCBtaXNzaW5nQXR0YWNobWVudCA9IHRydWU7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1F
TlRBVElPTl9NQVhfRFJBV19CVUZGRVJTOyBjb2xvckF0dGFjaG1lbnQrKykKKyAgICB7CisgICAg
ICAgIGlmIChtQ29sb3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdICE9IEdMX05PTkUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFJlbmRlcmJ1ZmZlciAqY29sb3JidWZmZXIgPSBn
ZXRDb2xvcmJ1ZmZlcihjb2xvckF0dGFjaG1lbnQpOworCisgICAgICAgICAgICBpZiAoIWNvbG9y
YnVmZmVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJV
RkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChjb2xvcmJ1ZmZlci0+Z2V0V2lkdGgoKSA9PSAwIHx8IGNvbG9yYnVmZmVyLT5nZXRIZWln
aHQoKSA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFN
RUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmIChtQ29sb3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdID09IEdMX1JFTkRFUkJV
RkZFUikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIWdsOjpJc0NvbG9yUmVu
ZGVyYWJsZShjb2xvcmJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKSkpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVU
RV9BVFRBQ0hNRU5UOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgaWYgKElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1Db2xvcmJ1ZmZlclR5cGVzW2Nv
bG9yQXR0YWNobWVudF0pKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEdMaW50IGlu
dGVybmFsZm9ybWF0ID0gY29sb3JidWZmZXItPmdldEludGVybmFsRm9ybWF0KCk7CisgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCA9IGdsOjpFeHRyYWN0Rm9ybWF0KGludGVybmFsZm9ybWF0
KTsKKworICAgICAgICAgICAgICAgIGlmIChJc0NvbXByZXNzZWQoZm9ybWF0KSB8fAorICAgICAg
ICAgICAgICAgICAgICBmb3JtYXQgPT0gR0xfQUxQSEEgfHwKKyAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0ID09IEdMX0xVTUlOQU5DRSB8fAorICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPT0g
R0xfTFVNSU5BTkNFX0FMUEhBKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIGJvb2wgZmlsdGVyaW5nLCByZW5kZXJhYmxlOworCisgICAgICAg
ICAgICAgICAgaWYgKChnbDo6SXNGbG9hdDMyRm9ybWF0KGludGVybmFsZm9ybWF0KSAmJiAhbVJl
bmRlcmVyLT5nZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQoJmZpbHRlcmluZywgJnJlbmRlcmFibGUp
KSB8fAorICAgICAgICAgICAgICAgICAgICAoZ2w6OklzRmxvYXQxNkZvcm1hdChpbnRlcm5hbGZv
cm1hdCkgJiYgIW1SZW5kZXJlci0+Z2V0RmxvYXQxNlRleHR1cmVTdXBwb3J0KCZmaWx0ZXJpbmcs
ICZyZW5kZXJhYmxlKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgaWYgKGdsOjpJc0RlcHRoVGV4dHVyZShpbnRlcm5hbGZvcm1hdCkgfHwg
Z2w6OklzU3RlbmNpbFRleHR1cmUoaW50ZXJuYWxmb3JtYXQpKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRU
QUNITUVOVDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIW1pc3NpbmdBdHRhY2htZW50KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIGFsbCBjb2xvciBhdHRhY2htZW50cyBtdXN0
IGhhdmUgdGhlIHNhbWUgd2lkdGggYW5kIGhlaWdodAorICAgICAgICAgICAgICAgIGlmIChjb2xv
cmJ1ZmZlci0+Z2V0V2lkdGgoKSAhPSB3aWR0aCB8fCBjb2xvcmJ1ZmZlci0+Z2V0SGVpZ2h0KCkg
IT0gaGVpZ2h0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUzsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAvLyBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSwgd2hp
Y2ggRVhUX2RyYXdfYnVmZmVycyByZWZlcnMgdG8sIHJlcXVpcmVzIHRoYXQKKyAgICAgICAgICAg
ICAgICAvLyBhbGwgY29sb3IgYXR0YWNobWVudHMgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Ygc2Ft
cGxlcyBmb3IgdGhlIEZCTyB0byBiZSBjb21wbGV0ZS4KKyAgICAgICAgICAgICAgICBpZiAoY29s
b3JidWZmZXItPmdldFNhbXBsZXMoKSAhPSBzYW1wbGVzKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElT
QU1QTEVfRVhUOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGFsbCBj
b2xvciBhdHRhY2htZW50cyBhdHRhY2htZW50cyBtdXN0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9m
IGJpdHBsYW5lcworICAgICAgICAgICAgICAgIGlmIChnbDo6Q29tcHV0ZVBpeGVsU2l6ZShjb2xv
cmJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKSkgIT0gY29sb3JidWZmZXJTaXplKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX1VO
U1VQUE9SVEVEOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEQzRDEx
IGRvZXMgbm90IGFsbG93IGZvciBvdmVybGFwcGluZyBSZW5kZXJUYXJnZXRWaWV3cywgc28gZW5z
dXJlIHVuaXF1ZW5lc3MKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBwcmV2aW91
c0NvbG9yQXR0YWNobWVudCA9IDA7IHByZXZpb3VzQ29sb3JBdHRhY2htZW50IDwgY29sb3JBdHRh
Y2htZW50OyBwcmV2aW91c0NvbG9yQXR0YWNobWVudCsrKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG1Db2xvcmJ1ZmZlclBvaW50ZXJzW2NvbG9yQXR0YWNobWVu
dF0uZ2V0KCkgPT0gbUNvbG9yYnVmZmVyUG9pbnRlcnNbcHJldmlvdXNDb2xvckF0dGFjaG1lbnRd
LmdldCgpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgd2lkdGggPSBjb2xvcmJ1ZmZlci0+Z2V0V2lkdGgo
KTsKKyAgICAgICAgICAgICAgICBoZWlnaHQgPSBjb2xvcmJ1ZmZlci0+Z2V0SGVpZ2h0KCk7Cisg
ICAgICAgICAgICAgICAgc2FtcGxlcyA9IGNvbG9yYnVmZmVyLT5nZXRTYW1wbGVzKCk7CisgICAg
ICAgICAgICAgICAgY29sb3JidWZmZXJTaXplID0gZ2w6OkNvbXB1dGVQaXhlbFNpemUoY29sb3Ji
dWZmZXItPmdldEludGVybmFsRm9ybWF0KCkpOworICAgICAgICAgICAgICAgIG1pc3NpbmdBdHRh
Y2htZW50ID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBj
b25zdCBSZW5kZXJidWZmZXIgKmRlcHRoYnVmZmVyID0gTlVMTDsKKyAgICBjb25zdCBSZW5kZXJi
dWZmZXIgKnN0ZW5jaWxidWZmZXIgPSBOVUxMOworCisgICAgaWYgKG1EZXB0aGJ1ZmZlclR5cGUg
IT0gR0xfTk9ORSkKKyAgICB7CisgICAgICAgIGRlcHRoYnVmZmVyID0gZ2V0RGVwdGhidWZmZXIo
KTsKKworICAgICAgICBpZiAoIWRlcHRoYnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGRlcHRoYnVmZmVyLT5nZXRXaWR0aCgpID09IDAgfHwgZGVwdGhidWZmZXIt
PmdldEhlaWdodCgpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFN
RUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
bURlcHRoYnVmZmVyVHlwZSA9PSBHTF9SRU5ERVJCVUZGRVIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghZ2w6OklzRGVwdGhSZW5kZXJhYmxlKGRlcHRoYnVmZmVyLT5nZXRJbnRlcm5hbEZv
cm1hdCgpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVC
VUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UgaWYgKElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1EZXB0aGJ1ZmZlclR5cGUp
KQorICAgICAgICB7CisgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCA9IGRlcHRoYnVm
ZmVyLT5nZXRJbnRlcm5hbEZvcm1hdCgpOworCisgICAgICAgICAgICAvLyBkZXB0aCB0ZXh0dXJl
IGF0dGFjaG1lbnRzIHJlcXVpcmUgT0VTL0FOR0xFX2RlcHRoX3RleHR1cmUKKyAgICAgICAgICAg
IGlmICghbVJlbmRlcmVyLT5nZXREZXB0aFRleHR1cmVTdXBwb3J0KCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNI
TUVOVDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFnbDo6SXNEZXB0aFRleHR1
cmUoaW50ZXJuYWxmb3JtYXQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOworICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNI
TUVOVDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtaXNzaW5nQXR0YWNobWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgd2lkdGggPSBkZXB0aGJ1ZmZlci0+Z2V0V2lkdGgoKTsKKyAgICAg
ICAgICAgIGhlaWdodCA9IGRlcHRoYnVmZmVyLT5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIHNh
bXBsZXMgPSBkZXB0aGJ1ZmZlci0+Z2V0U2FtcGxlcygpOworICAgICAgICAgICAgbWlzc2luZ0F0
dGFjaG1lbnQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh3aWR0aCAhPSBk
ZXB0aGJ1ZmZlci0+Z2V0V2lkdGgoKSB8fCBoZWlnaHQgIT0gZGVwdGhidWZmZXItPmdldEhlaWdo
dCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01Q
TEVURV9ESU1FTlNJT05TOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNhbXBsZXMgIT0g
ZGVwdGhidWZmZXItPmdldFNhbXBsZXMoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfQU5HTEU7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAobVN0ZW5jaWxidWZmZXJUeXBlICE9IEdMX05PTkUpCisgICAgewor
ICAgICAgICBzdGVuY2lsYnVmZmVyID0gZ2V0U3RlbmNpbGJ1ZmZlcigpOworCisgICAgICAgIGlm
ICghc3RlbmNpbGJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1F
QlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChz
dGVuY2lsYnVmZmVyLT5nZXRXaWR0aCgpID09IDAgfHwgc3RlbmNpbGJ1ZmZlci0+Z2V0SGVpZ2h0
KCkgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lO
Q09NUExFVEVfQVRUQUNITUVOVDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtU3RlbmNpbGJ1
ZmZlclR5cGUgPT0gR0xfUkVOREVSQlVGRkVSKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
IWdsOjpJc1N0ZW5jaWxSZW5kZXJhYmxlKHN0ZW5jaWxidWZmZXItPmdldEludGVybmFsRm9ybWF0
KCkpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSBpZiAoSXNJbnRlcm5hbFRleHR1cmVUYXJnZXQobVN0ZW5jaWxidWZmZXJUeXBlKSkK
KyAgICAgICAgeworICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQgPSBzdGVuY2lsYnVm
ZmVyLT5nZXRJbnRlcm5hbEZvcm1hdCgpOworCisgICAgICAgICAgICAvLyB0ZXh0dXJlIHN0ZW5j
aWwgYXR0YWNobWVudHMgY29tZSBhbG9uZyBhcyBwYXJ0CisgICAgICAgICAgICAvLyBvZiBPRVNf
cGFja2VkX2RlcHRoX3N0ZW5jaWwgKyBPRVMvQU5HTEVfZGVwdGhfdGV4dHVyZQorICAgICAgICAg
ICAgaWYgKCFtUmVuZGVyZXItPmdldERlcHRoVGV4dHVyZVN1cHBvcnQoKSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRB
Q0hNRU5UOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWdsOjpJc1N0ZW5jaWxU
ZXh0dXJlKGludGVybmFsZm9ybWF0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FU
VEFDSE1FTlQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWlzc2luZ0F0dGFjaG1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHdpZHRoID0gc3RlbmNpbGJ1ZmZlci0+Z2V0V2lkdGgoKTsK
KyAgICAgICAgICAgIGhlaWdodCA9IHN0ZW5jaWxidWZmZXItPmdldEhlaWdodCgpOworICAgICAg
ICAgICAgc2FtcGxlcyA9IHN0ZW5jaWxidWZmZXItPmdldFNhbXBsZXMoKTsKKyAgICAgICAgICAg
IG1pc3NpbmdBdHRhY2htZW50ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAo
d2lkdGggIT0gc3RlbmNpbGJ1ZmZlci0+Z2V0V2lkdGgoKSB8fCBoZWlnaHQgIT0gc3RlbmNpbGJ1
ZmZlci0+Z2V0SGVpZ2h0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFN
RUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBp
ZiAoc2FtcGxlcyAhPSBzdGVuY2lsYnVmZmVyLT5nZXRTYW1wbGVzKCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0FO
R0xFOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gaWYgd2UgaGF2ZSBib3RoIGEgZGVwdGgg
YW5kIHN0ZW5jaWwgYnVmZmVyLCB0aGV5IG11c3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0Cisg
ICAgLy8gc2luY2Ugd2Ugb25seSBzdXBwb3J0IHBhY2tlZF9kZXB0aF9zdGVuY2lsIGFuZCBub3Qg
c2VwYXJhdGUgZGVwdGggYW5kIHN0ZW5jaWwKKyAgICBpZiAoZGVwdGhidWZmZXIgJiYgc3RlbmNp
bGJ1ZmZlciAmJiAoZGVwdGhidWZmZXIgIT0gc3RlbmNpbGJ1ZmZlcikpCisgICAgeworICAgICAg
ICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CisgICAgfQorCisgICAgLy8gd2Ug
bmVlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBhdHRhY2htZW50IHRvIGJlIGNvbXBsZXRlCisgICAg
aWYgKG1pc3NpbmdBdHRhY2htZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVG
RkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UOworICAgIH0KKworICAgIHJldHVybiBH
TF9GUkFNRUJVRkZFUl9DT01QTEVURTsKK30KKworRGVmYXVsdEZyYW1lYnVmZmVyOjpEZWZhdWx0
RnJhbWVidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgQ29sb3JidWZmZXIgKmNvbG9yYnVm
ZmVyLCBEZXB0aFN0ZW5jaWxidWZmZXIgKmRlcHRoU3RlbmNpbCkKKyAgICA6IEZyYW1lYnVmZmVy
KHJlbmRlcmVyKQoreworICAgIG1Db2xvcmJ1ZmZlclBvaW50ZXJzWzBdLnNldChuZXcgUmVuZGVy
YnVmZmVyKG1SZW5kZXJlciwgMCwgY29sb3JidWZmZXIpKTsKKworICAgIFJlbmRlcmJ1ZmZlciAq
ZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyID0gbmV3IFJlbmRlcmJ1ZmZlcihtUmVuZGVyZXIsIDAs
IGRlcHRoU3RlbmNpbCk7CisgICAgbURlcHRoYnVmZmVyUG9pbnRlci5zZXQoZGVwdGhTdGVuY2ls
UmVuZGVyYnVmZmVyKTsKKyAgICBtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuc2V0KGRlcHRoU3RlbmNp
bFJlbmRlcmJ1ZmZlcik7CisKKyAgICBtQ29sb3JidWZmZXJUeXBlc1swXSA9IEdMX1JFTkRFUkJV
RkZFUjsKKyAgICBtRGVwdGhidWZmZXJUeXBlID0gKGRlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlci0+
Z2V0RGVwdGhTaXplKCkgIT0gMCkgPyBHTF9SRU5ERVJCVUZGRVIgOiBHTF9OT05FOworICAgIG1T
dGVuY2lsYnVmZmVyVHlwZSA9IChkZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXItPmdldFN0ZW5jaWxT
aXplKCkgIT0gMCkgPyBHTF9SRU5ERVJCVUZGRVIgOiBHTF9OT05FOworCisgICAgbURyYXdCdWZm
ZXJTdGF0ZXNbMF0gPSBHTF9CQUNLOworICAgIG1SZWFkQnVmZmVyU3RhdGUgPSBHTF9CQUNLOwor
fQorCitpbnQgRnJhbWVidWZmZXI6OmdldFNhbXBsZXMoKSBjb25zdAoreworICAgIGlmIChjb21w
bGV0ZW5lc3MoKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICB7CisgICAgICAgIC8v
IGZvciBhIGNvbXBsZXRlIGZyYW1lYnVmZmVyLCBhbGwgYXR0YWNobWVudHMgbXVzdCBoYXZlIHRo
ZSBzYW1lIHNhbXBsZSBjb3VudAorICAgICAgICAvLyBpbiB0aGlzIGNhc2UgcmV0dXJuIHRoZSBm
aXJzdCBub256ZXJvIHNhbXBsZSBzaXplCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGNvbG9y
QXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IElNUExFTUVOVEFUSU9OX01BWF9EUkFX
X0JVRkZFUlM7IGNvbG9yQXR0YWNobWVudCsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
bUNvbG9yYnVmZmVyVHlwZXNbY29sb3JBdHRhY2htZW50XSAhPSBHTF9OT05FKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnZXRDb2xvcmJ1ZmZlcihjb2xvckF0dGFjaG1l
bnQpLT5nZXRTYW1wbGVzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gMDsKK30KKworR0xlbnVtIERlZmF1bHRGcmFtZWJ1ZmZlcjo6Y29tcGxldGVuZXNz
KCkgY29uc3QKK3sKKyAgICAvLyBUaGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciAqbXVzdCogYWx3YXlz
IGJlIGNvbXBsZXRlLCB0aG91Z2ggaXQgbWF5IG5vdCBiZQorICAgIC8vIHN1YmplY3QgdG8gdGhl
IHNhbWUgcnVsZXMgYXMgYXBwbGljYXRpb24gRkJPcy4gaWUsIGl0IGNvdWxkIGhhdmUgMHgwIHNp
emUuCisgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFOworfQorCit9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZyYW1lYnVmZmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZl
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9GcmFtZWJ1ZmZlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOCBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gRnJhbWVidWZmZXIuaDogRGVmaW5lcyB0aGUgZ2w6OkZyYW1lYnVmZmVy
IGNsYXNzLiBJbXBsZW1lbnRzIEdMIGZyYW1lYnVmZmVyCisvLyBvYmplY3RzIGFuZCByZWxhdGVk
IGZ1bmN0aW9uYWxpdHkuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDQuNCBwYWdlIDEwNS4K
KworI2lmbmRlZiBMSUJHTEVTVjJfRlJBTUVCVUZGRVJfSF8KKyNkZWZpbmUgTElCR0xFU1YyX0ZS
QU1FQlVGRkVSX0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUg
ImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgorI2luY2x1ZGUgImNvbnN0YW50cy5oIgorCituYW1l
c3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOworfQorCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNz
IFJlbmRlcmJ1ZmZlcjsKK2NsYXNzIENvbG9yYnVmZmVyOworY2xhc3MgRGVwdGhidWZmZXI7Citj
bGFzcyBTdGVuY2lsYnVmZmVyOworY2xhc3MgRGVwdGhTdGVuY2lsYnVmZmVyOworCitjbGFzcyBG
cmFtZWJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgRnJhbWVidWZmZXIocng6OlJl
bmRlcmVyICpyZW5kZXJlcik7CisKKyAgICB2aXJ0dWFsIH5GcmFtZWJ1ZmZlcigpOworCisgICAg
dm9pZCBzZXRDb2xvcmJ1ZmZlcih1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50LCBHTGVudW0g
dHlwZSwgR0x1aW50IGNvbG9yYnVmZmVyKTsKKyAgICB2b2lkIHNldERlcHRoYnVmZmVyKEdMZW51
bSB0eXBlLCBHTHVpbnQgZGVwdGhidWZmZXIpOworICAgIHZvaWQgc2V0U3RlbmNpbGJ1ZmZlcihH
TGVudW0gdHlwZSwgR0x1aW50IHN0ZW5jaWxidWZmZXIpOworCisgICAgdm9pZCBkZXRhY2hUZXh0
dXJlKEdMdWludCB0ZXh0dXJlKTsKKyAgICB2b2lkIGRldGFjaFJlbmRlcmJ1ZmZlcihHTHVpbnQg
cmVuZGVyYnVmZmVyKTsKKworICAgIHVuc2lnbmVkIGludCBnZXRSZW5kZXJUYXJnZXRTZXJpYWwo
dW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29uc3Q7CisgICAgdW5zaWduZWQgaW50IGdl
dERlcHRoYnVmZmVyU2VyaWFsKCkgY29uc3Q7CisgICAgdW5zaWduZWQgaW50IGdldFN0ZW5jaWxi
dWZmZXJTZXJpYWwoKSBjb25zdDsKKworICAgIFJlbmRlcmJ1ZmZlciAqZ2V0Q29sb3JidWZmZXIo
dW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29uc3Q7CisgICAgUmVuZGVyYnVmZmVyICpn
ZXREZXB0aGJ1ZmZlcigpIGNvbnN0OworICAgIFJlbmRlcmJ1ZmZlciAqZ2V0U3RlbmNpbGJ1ZmZl
cigpIGNvbnN0OworICAgIFJlbmRlcmJ1ZmZlciAqZ2V0RGVwdGhPclN0ZW5jaWxidWZmZXIoKSBj
b25zdDsKKyAgICBSZW5kZXJidWZmZXIgKmdldFJlYWRDb2xvcmJ1ZmZlcigpIGNvbnN0OworICAg
IEdMZW51bSBnZXRSZWFkQ29sb3JidWZmZXJUeXBlKCkgY29uc3Q7CisgICAgUmVuZGVyYnVmZmVy
ICpnZXRGaXJzdENvbG9yYnVmZmVyKCkgY29uc3Q7CisKKyAgICBHTGVudW0gZ2V0Q29sb3JidWZm
ZXJUeXBlKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQpIGNvbnN0OworICAgIEdMZW51bSBn
ZXREZXB0aGJ1ZmZlclR5cGUoKSBjb25zdDsKKyAgICBHTGVudW0gZ2V0U3RlbmNpbGJ1ZmZlclR5
cGUoKSBjb25zdDsKKworICAgIEdMdWludCBnZXRDb2xvcmJ1ZmZlckhhbmRsZSh1bnNpZ25lZCBp
bnQgY29sb3JBdHRhY2htZW50KSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0RGVwdGhidWZmZXJIYW5k
bGUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0U3RlbmNpbGJ1ZmZlckhhbmRsZSgpIGNvbnN0Owor
CisgICAgR0xlbnVtIGdldERyYXdCdWZmZXJTdGF0ZSh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2ht
ZW50KSBjb25zdDsKKyAgICB2b2lkIHNldERyYXdCdWZmZXJTdGF0ZSh1bnNpZ25lZCBpbnQgY29s
b3JBdHRhY2htZW50LCBHTGVudW0gZHJhd0J1ZmZlcik7CisKKyAgICBib29sIGlzRW5hYmxlZENv
bG9yQXR0YWNobWVudCh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25zdDsKKyAgICBi
b29sIGhhc0VuYWJsZWRDb2xvckF0dGFjaG1lbnQoKSBjb25zdDsKKyAgICBib29sIGhhc1N0ZW5j
aWwoKSBjb25zdDsKKyAgICBpbnQgZ2V0U2FtcGxlcygpIGNvbnN0OworICAgIGJvb2wgdXNpbmdF
eHRlbmRlZERyYXdCdWZmZXJzKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEdMZW51bSBjb21wbGV0
ZW5lc3MoKSBjb25zdDsKKworICBwcm90ZWN0ZWQ6CisgICAgR0xlbnVtIG1Db2xvcmJ1ZmZlclR5
cGVzW0lNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlNdOworICAgIEJpbmRpbmdQb2ludGVy
PFJlbmRlcmJ1ZmZlcj4gbUNvbG9yYnVmZmVyUG9pbnRlcnNbSU1QTEVNRU5UQVRJT05fTUFYX0RS
QVdfQlVGRkVSU107CisgICAgR0xlbnVtIG1EcmF3QnVmZmVyU3RhdGVzW0lNUExFTUVOVEFUSU9O
X01BWF9EUkFXX0JVRkZFUlNdOworICAgIEdMZW51bSBtUmVhZEJ1ZmZlclN0YXRlOworCisgICAg
R0xlbnVtIG1EZXB0aGJ1ZmZlclR5cGU7CisgICAgQmluZGluZ1BvaW50ZXI8UmVuZGVyYnVmZmVy
PiBtRGVwdGhidWZmZXJQb2ludGVyOworCisgICAgR0xlbnVtIG1TdGVuY2lsYnVmZmVyVHlwZTsK
KyAgICBCaW5kaW5nUG9pbnRlcjxSZW5kZXJidWZmZXI+IG1TdGVuY2lsYnVmZmVyUG9pbnRlcjsK
KworICAgIHJ4OjpSZW5kZXJlciAqbVJlbmRlcmVyOworCisgIHByaXZhdGU6CisgICAgRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKEZyYW1lYnVmZmVyKTsKKworICAgIFJlbmRlcmJ1ZmZlciAqbG9v
a3VwUmVuZGVyYnVmZmVyKEdMZW51bSB0eXBlLCBHTHVpbnQgaGFuZGxlKSBjb25zdDsKK307CisK
K2NsYXNzIERlZmF1bHRGcmFtZWJ1ZmZlciA6IHB1YmxpYyBGcmFtZWJ1ZmZlcgoreworICBwdWJs
aWM6CisgICAgRGVmYXVsdEZyYW1lYnVmZmVyKHJ4OjpSZW5kZXJlciAqUmVuZGVyZXIsIENvbG9y
YnVmZmVyICpjb2xvcmJ1ZmZlciwgRGVwdGhTdGVuY2lsYnVmZmVyICpkZXB0aFN0ZW5jaWwpOwor
CisgICAgdmlydHVhbCBHTGVudW0gY29tcGxldGVuZXNzKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToK
KyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oRGVmYXVsdEZyYW1lYnVmZmVyKTsKK307CisK
K30KKworI2VuZGlmICAgLy8gTElCR0xFU1YyX0ZSQU1FQlVGRkVSX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0hhbmRsZUFsbG9jYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxv
Y2F0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBA
CisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEhhbmRs
ZUFsbG9jYXRvci5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpIYW5kbGVBbGxvY2F0b3IgY2xhc3Ms
IHdoaWNoIGlzIHVzZWQKKy8vIHRvIGFsbG9jYXRlIEdMIGhhbmRsZXMuCisKKyNpbmNsdWRlICJs
aWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5o
IgorCituYW1lc3BhY2UgZ2wKK3sKKworSGFuZGxlQWxsb2NhdG9yOjpIYW5kbGVBbGxvY2F0b3Io
KSA6IG1CYXNlVmFsdWUoMSksIG1OZXh0VmFsdWUoMSkKK3sKK30KKworSGFuZGxlQWxsb2NhdG9y
Ojp+SGFuZGxlQWxsb2NhdG9yKCkKK3sKK30KKwordm9pZCBIYW5kbGVBbGxvY2F0b3I6OnNldEJh
c2VIYW5kbGUoR0x1aW50IHZhbHVlKQoreworICAgIEFTU0VSVChtQmFzZVZhbHVlID09IG1OZXh0
VmFsdWUpOworICAgIG1CYXNlVmFsdWUgPSB2YWx1ZTsKKyAgICBtTmV4dFZhbHVlID0gdmFsdWU7
Cit9CisKK0dMdWludCBIYW5kbGVBbGxvY2F0b3I6OmFsbG9jYXRlKCkKK3sKKyAgICBpZiAobUZy
ZWVWYWx1ZXMuc2l6ZSgpKQorICAgIHsKKyAgICAgICAgR0x1aW50IGhhbmRsZSA9IG1GcmVlVmFs
dWVzLmJhY2soKTsKKyAgICAgICAgbUZyZWVWYWx1ZXMucG9wX2JhY2soKTsKKyAgICAgICAgcmV0
dXJuIGhhbmRsZTsKKyAgICB9CisgICAgcmV0dXJuIG1OZXh0VmFsdWUrKzsKK30KKwordm9pZCBI
YW5kbGVBbGxvY2F0b3I6OnJlbGVhc2UoR0x1aW50IGhhbmRsZSkKK3sKKyAgICBpZiAoaGFuZGxl
ID09IG1OZXh0VmFsdWUgLSAxKQorICAgIHsKKyAgICAgICAgLy8gRG9uJ3QgZHJvcCBiZWxvdyBi
YXNlIHZhbHVlCisgICAgICAgIGlmKG1OZXh0VmFsdWUgPiBtQmFzZVZhbHVlKQorICAgICAgICB7
CisgICAgICAgICAgICBtTmV4dFZhbHVlLS07CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgLy8gT25seSBmcmVlIGhhbmRsZXMgdGhhdCB3ZSBvd24gLSBkb24ndCBk
cm9wIGJlbG93IHRoZSBiYXNlIHZhbHVlCisgICAgICAgIGlmIChoYW5kbGUgPj0gbUJhc2VWYWx1
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgbUZyZWVWYWx1ZXMucHVzaF9iYWNrKGhhbmRsZSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvSGFuZGxlQWxsb2Nh
dG9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIEhhbmRsZUFsbG9jYXRvci5oOiBEZWZpbmVzIHRoZSBnbDo6SGFuZGxlQWxsb2NhdG9yIGNs
YXNzLCB3aGljaCBpcyB1c2VkIHRvCisvLyBhbGxvY2F0ZSBHTCBoYW5kbGVzLgorCisjaWZuZGVm
IExJQkdMRVNWMl9IQU5ETEVBTExPQ0FUT1JfSF8KKyNkZWZpbmUgTElCR0xFU1YyX0hBTkRMRUFM
TE9DQVRPUl9IXworCisjZGVmaW5lIEdMX0FQSUNBTEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4K
KworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisK
K25hbWVzcGFjZSBnbAoreworCitjbGFzcyBIYW5kbGVBbGxvY2F0b3IKK3sKKyAgcHVibGljOgor
ICAgIEhhbmRsZUFsbG9jYXRvcigpOworICAgIHZpcnR1YWwgfkhhbmRsZUFsbG9jYXRvcigpOwor
CisgICAgdm9pZCBzZXRCYXNlSGFuZGxlKEdMdWludCB2YWx1ZSk7CisKKyAgICBHTHVpbnQgYWxs
b2NhdGUoKTsKKyAgICB2b2lkIHJlbGVhc2UoR0x1aW50IGhhbmRsZSk7CisKKyAgcHJpdmF0ZToK
KyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oSGFuZGxlQWxsb2NhdG9yKTsKKworICAgIEdM
dWludCBtQmFzZVZhbHVlOworICAgIEdMdWludCBtTmV4dFZhbHVlOworICAgIHR5cGVkZWYgc3Rk
Ojp2ZWN0b3I8R0x1aW50PiBIYW5kbGVMaXN0OworICAgIEhhbmRsZUxpc3QgbUZyZWVWYWx1ZXM7
Cit9OworCit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9IQU5ETEVBTExPQ0FUT1JfSF8KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Qcm9ncmFt
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvUHJvZ3JhbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTI1IEBACisjaW5jbHVkZSAi
cHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFByb2dyYW0uY3BwOiBJbXBs
ZW1lbnRzIHRoZSBnbDo6UHJvZ3JhbSBjbGFzcy4gSW1wbGVtZW50cyBHTCBwcm9ncmFtIG9iamVj
dHMKKy8vIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0
aW9uIDIuMTAuMyBwYWdlIDI4LgorCisjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW0uaCIKKyNp
bmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9S
ZXNvdXJjZU1hbmFnZXIuaCIKKworbmFtZXNwYWNlIGdsCit7Citjb25zdCBjaGFyICogY29uc3Qg
Z19mYWtlcGF0aCA9ICJDOlxcZmFrZXBhdGgiOworCitBdHRyaWJ1dGVCaW5kaW5nczo6QXR0cmli
dXRlQmluZGluZ3MoKQoreworfQorCitBdHRyaWJ1dGVCaW5kaW5nczo6fkF0dHJpYnV0ZUJpbmRp
bmdzKCkKK3sKK30KKworSW5mb0xvZzo6SW5mb0xvZygpIDogbUluZm9Mb2coTlVMTCkKK3sKK30K
KworSW5mb0xvZzo6fkluZm9Mb2coKQoreworICAgIGRlbGV0ZVtdIG1JbmZvTG9nOworfQorCisK
K2ludCBJbmZvTG9nOjpnZXRMZW5ndGgoKSBjb25zdAoreworICAgIGlmICghbUluZm9Mb2cpCisg
ICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICBy
ZXR1cm4gc3RybGVuKG1JbmZvTG9nKSArIDE7CisgICAgfQorfQorCit2b2lkIEluZm9Mb2c6Omdl
dExvZyhHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZykKK3sK
KyAgICBpbnQgaW5kZXggPSAwOworCisgICAgaWYgKGJ1ZlNpemUgPiAwKQorICAgIHsKKyAgICAg
ICAgaWYgKG1JbmZvTG9nKQorICAgICAgICB7CisgICAgICAgICAgICBpbmRleCA9IHN0ZDo6bWlu
KGJ1ZlNpemUgLSAxLCAoaW50KXN0cmxlbihtSW5mb0xvZykpOworICAgICAgICAgICAgbWVtY3B5
KGluZm9Mb2csIG1JbmZvTG9nLCBpbmRleCk7CisgICAgICAgIH0KKworICAgICAgICBpbmZvTG9n
W2luZGV4XSA9ICdcMCc7CisgICAgfQorCisgICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICAg
ICpsZW5ndGggPSBpbmRleDsKKyAgICB9Cit9CisKKy8vIGFwcGVuZCBhIHNhbnRpemVkIG1lc3Nh
Z2UgdG8gdGhlIHByb2dyYW0gaW5mbyBsb2cuCisvLyBUaGUgRDNEIGNvbXBpbGVyIGluY2x1ZGVz
IGEgZmFrZSBmaWxlIHBhdGggaW4gc29tZSBvZiB0aGUgd2FybmluZyBvciBlcnJvciAKKy8vIG1l
c3NhZ2VzLCBzbyBsZXRzIHJlbW92ZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhpcyBmYWtlIGZpbGUg
cGF0aCBmcm9tIHRoZSBsb2cuCit2b2lkIEluZm9Mb2c6OmFwcGVuZFNhbml0aXplZChjb25zdCBj
aGFyICptZXNzYWdlKQoreworICAgIHN0ZDo6c3RyaW5nIG1zZyhtZXNzYWdlKTsKKworICAgIHNp
emVfdCBmb3VuZDsKKyAgICBkbworICAgIHsKKyAgICAgICAgZm91bmQgPSBtc2cuZmluZChnX2Zh
a2VwYXRoKTsKKyAgICAgICAgaWYgKGZvdW5kICE9IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAg
ICB7CisgICAgICAgICAgICBtc2cuZXJhc2UoZm91bmQsIHN0cmxlbihnX2Zha2VwYXRoKSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgd2hpbGUgKGZvdW5kICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsK
KworICAgIGFwcGVuZCgiJXMiLCBtc2cuY19zdHIoKSk7Cit9CisKK3ZvaWQgSW5mb0xvZzo6YXBw
ZW5kKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIGlmICghZm9ybWF0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNoYXIgaW5mb1sxMDI0XTsKKworICAgIHZh
X2xpc3QgdmFyYXJnOworICAgIHZhX3N0YXJ0KHZhcmFyZywgZm9ybWF0KTsKKyAgICB2c25wcmlu
dGYoaW5mbywgc2l6ZW9mKGluZm8pLCBmb3JtYXQsIHZhcmFyZyk7CisgICAgdmFfZW5kKHZhcmFy
Zyk7CisKKyAgICBzaXplX3QgaW5mb0xlbmd0aCA9IHN0cmxlbihpbmZvKTsKKworICAgIGlmICgh
bUluZm9Mb2cpCisgICAgeworICAgICAgICBtSW5mb0xvZyA9IG5ldyBjaGFyW2luZm9MZW5ndGgg
KyAyXTsKKyAgICAgICAgc3RyY3B5KG1JbmZvTG9nLCBpbmZvKTsKKyAgICAgICAgc3RyY3B5KG1J
bmZvTG9nICsgaW5mb0xlbmd0aCwgIlxuIik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIHNpemVfdCBsb2dMZW5ndGggPSBzdHJsZW4obUluZm9Mb2cpOworICAgICAgICBjaGFyICpu
ZXdMb2cgPSBuZXcgY2hhcltsb2dMZW5ndGggKyBpbmZvTGVuZ3RoICsgMl07CisgICAgICAgIHN0
cmNweShuZXdMb2csIG1JbmZvTG9nKTsKKyAgICAgICAgc3RyY3B5KG5ld0xvZyArIGxvZ0xlbmd0
aCwgaW5mbyk7CisgICAgICAgIHN0cmNweShuZXdMb2cgKyBsb2dMZW5ndGggKyBpbmZvTGVuZ3Ro
LCAiXG4iKTsKKworICAgICAgICBkZWxldGVbXSBtSW5mb0xvZzsKKyAgICAgICAgbUluZm9Mb2cg
PSBuZXdMb2c7CisgICAgfQorfQorCit2b2lkIEluZm9Mb2c6OnJlc2V0KCkKK3sKKyAgICBpZiAo
bUluZm9Mb2cpCisgICAgeworICAgICAgICBkZWxldGUgW10gbUluZm9Mb2c7CisgICAgICAgIG1J
bmZvTG9nID0gTlVMTDsKKyAgICB9Cit9CisKK1Byb2dyYW06OlByb2dyYW0ocng6OlJlbmRlcmVy
ICpyZW5kZXJlciwgUmVzb3VyY2VNYW5hZ2VyICptYW5hZ2VyLCBHTHVpbnQgaGFuZGxlKSA6IG1S
ZXNvdXJjZU1hbmFnZXIobWFuYWdlciksIG1IYW5kbGUoaGFuZGxlKQoreworICAgIG1GcmFnbWVu
dFNoYWRlciA9IE5VTEw7CisgICAgbVZlcnRleFNoYWRlciA9IE5VTEw7CisgICAgbVByb2dyYW1C
aW5hcnkuc2V0KE5VTEwpOworICAgIG1EZWxldGVTdGF0dXMgPSBmYWxzZTsKKyAgICBtTGlua2Vk
ID0gZmFsc2U7CisgICAgbVJlZkNvdW50ID0gMDsKKyAgICBtUmVuZGVyZXIgPSByZW5kZXJlcjsK
K30KKworUHJvZ3JhbTo6flByb2dyYW0oKQoreworICAgIHVubGluayh0cnVlKTsKKworICAgIGlm
IChtVmVydGV4U2hhZGVyICE9IE5VTEwpCisgICAgeworICAgICAgICBtVmVydGV4U2hhZGVyLT5y
ZWxlYXNlKCk7CisgICAgfQorCisgICAgaWYgKG1GcmFnbWVudFNoYWRlciAhPSBOVUxMKQorICAg
IHsKKyAgICAgICAgbUZyYWdtZW50U2hhZGVyLT5yZWxlYXNlKCk7CisgICAgfQorfQorCitib29s
IFByb2dyYW06OmF0dGFjaFNoYWRlcihTaGFkZXIgKnNoYWRlcikKK3sKKyAgICBpZiAoc2hhZGVy
LT5nZXRUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICB7CisgICAgICAgIGlmIChtVmVy
dGV4U2hhZGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKworICAgICAgICBtVmVydGV4U2hhZGVyID0gKFZlcnRleFNoYWRlciopc2hhZGVyOworICAg
ICAgICBtVmVydGV4U2hhZGVyLT5hZGRSZWYoKTsKKyAgICB9CisgICAgZWxzZSBpZiAoc2hhZGVy
LT5nZXRUeXBlKCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAgaWYgKG1G
cmFnbWVudFNoYWRlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisKKyAgICAgICAgbUZyYWdtZW50U2hhZGVyID0gKEZyYWdtZW50U2hhZGVyKilzaGFk
ZXI7CisgICAgICAgIG1GcmFnbWVudFNoYWRlci0+YWRkUmVmKCk7CisgICAgfQorICAgIGVsc2Ug
VU5SRUFDSEFCTEUoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dyYW06OmRl
dGFjaFNoYWRlcihTaGFkZXIgKnNoYWRlcikKK3sKKyAgICBpZiAoc2hhZGVyLT5nZXRUeXBlKCkg
PT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICB7CisgICAgICAgIGlmIChtVmVydGV4U2hhZGVyICE9
IHNoYWRlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgbVZlcnRleFNoYWRlci0+cmVsZWFzZSgpOworICAgICAgICBtVmVydGV4U2hh
ZGVyID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoc2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xf
RlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAgaWYgKG1GcmFnbWVudFNoYWRlciAhPSBz
aGFkZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
CisgICAgICAgIG1GcmFnbWVudFNoYWRlci0+cmVsZWFzZSgpOworICAgICAgICBtRnJhZ21lbnRT
aGFkZXIgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworaW50IFByb2dyYW06OmdldEF0dGFjaGVkU2hhZGVyc0NvdW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gKG1WZXJ0ZXhTaGFkZXIgPyAxIDogMCkgKyAobUZyYWdtZW50U2hh
ZGVyID8gMSA6IDApOworfQorCit2b2lkIEF0dHJpYnV0ZUJpbmRpbmdzOjpiaW5kQXR0cmlidXRl
TG9jYXRpb24oR0x1aW50IGluZGV4LCBjb25zdCBjaGFyICpuYW1lKQoreworICAgIGlmIChpbmRl
eCA8IE1BWF9WRVJURVhfQVRUUklCUykKKyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG1BdHRy
aWJ1dGVCaW5kaW5nW2ldLmVyYXNlKG5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgbUF0dHJp
YnV0ZUJpbmRpbmdbaW5kZXhdLmluc2VydChuYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgUHJvZ3Jh
bTo6YmluZEF0dHJpYnV0ZUxvY2F0aW9uKEdMdWludCBpbmRleCwgY29uc3QgY2hhciAqbmFtZSkK
K3sKKyAgICBtQXR0cmlidXRlQmluZGluZ3MuYmluZEF0dHJpYnV0ZUxvY2F0aW9uKGluZGV4LCBu
YW1lKTsKK30KKworLy8gTGlua3MgdGhlIEhMU0wgY29kZSBvZiB0aGUgdmVydGV4IGFuZCBwaXhl
bCBzaGFkZXIgYnkgbWF0Y2hpbmcgdXAgdGhlaXIgdmFyeWluZ3MsCisvLyBjb21waWxpbmcgdGhl
bSBpbnRvIGJpbmFyaWVzLCBkZXRlcm1pbmluZyB0aGUgYXR0cmlidXRlIG1hcHBpbmdzLCBhbmQg
Y29sbGVjdGluZworLy8gYSBsaXN0IG9mIHVuaWZvcm1zCitib29sIFByb2dyYW06OmxpbmsoKQor
eworICAgIHVubGluayhmYWxzZSk7CisKKyAgICBtSW5mb0xvZy5yZXNldCgpOworCisgICAgbVBy
b2dyYW1CaW5hcnkuc2V0KG5ldyBQcm9ncmFtQmluYXJ5KG1SZW5kZXJlcikpOworICAgIG1MaW5r
ZWQgPSBtUHJvZ3JhbUJpbmFyeS0+bGluayhtSW5mb0xvZywgbUF0dHJpYnV0ZUJpbmRpbmdzLCBt
RnJhZ21lbnRTaGFkZXIsIG1WZXJ0ZXhTaGFkZXIpOworCisgICAgcmV0dXJuIG1MaW5rZWQ7Cit9
CisKK2ludCBBdHRyaWJ1dGVCaW5kaW5nczo6Z2V0QXR0cmlidXRlQmluZGluZyhjb25zdCBzdGQ6
OnN0cmluZyAmbmFtZSkgY29uc3QKK3sKKyAgICBmb3IgKGludCBsb2NhdGlvbiA9IDA7IGxvY2F0
aW9uIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBsb2NhdGlvbisrKQorICAgIHsKKyAgICAgICAgaWYg
KG1BdHRyaWJ1dGVCaW5kaW5nW2xvY2F0aW9uXS5maW5kKG5hbWUpICE9IG1BdHRyaWJ1dGVCaW5k
aW5nW2xvY2F0aW9uXS5lbmQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGxvY2F0
aW9uOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCisvLyBSZXR1cm5z
IHRoZSBwcm9ncmFtIG9iamVjdCB0byBhbiB1bmxpbmtlZCBzdGF0ZSwgYmVmb3JlIHJlLWxpbmtp
bmcsIG9yIGF0IGRlc3RydWN0aW9uCit2b2lkIFByb2dyYW06OnVubGluayhib29sIGRlc3Ryb3kp
Cit7CisgICAgaWYgKGRlc3Ryb3kpICAgLy8gT2JqZWN0IGJlaW5nIGRlc3RydWN0ZWQKKyAgICB7
CisgICAgICAgIGlmIChtRnJhZ21lbnRTaGFkZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1G
cmFnbWVudFNoYWRlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgbUZyYWdtZW50U2hhZGVyID0g
TlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtVmVydGV4U2hhZGVyKQorICAgICAgICB7
CisgICAgICAgICAgICBtVmVydGV4U2hhZGVyLT5yZWxlYXNlKCk7CisgICAgICAgICAgICBtVmVy
dGV4U2hhZGVyID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1Qcm9ncmFtQmluYXJ5
LnNldChOVUxMKTsKKyAgICBtTGlua2VkID0gZmFsc2U7Cit9CisKK2Jvb2wgUHJvZ3JhbTo6aXNM
aW5rZWQoKQoreworICAgIHJldHVybiBtTGlua2VkOworfQorCitQcm9ncmFtQmluYXJ5KiBQcm9n
cmFtOjpnZXRQcm9ncmFtQmluYXJ5KCkKK3sKKyAgICByZXR1cm4gbVByb2dyYW1CaW5hcnkuZ2V0
KCk7Cit9CisKK2Jvb2wgUHJvZ3JhbTo6c2V0UHJvZ3JhbUJpbmFyeShjb25zdCB2b2lkICpiaW5h
cnksIEdMc2l6ZWkgbGVuZ3RoKQoreworICAgIHVubGluayhmYWxzZSk7CisKKyAgICBtSW5mb0xv
Zy5yZXNldCgpOworCisgICAgbVByb2dyYW1CaW5hcnkuc2V0KG5ldyBQcm9ncmFtQmluYXJ5KG1S
ZW5kZXJlcikpOworICAgIG1MaW5rZWQgPSBtUHJvZ3JhbUJpbmFyeS0+bG9hZChtSW5mb0xvZywg
YmluYXJ5LCBsZW5ndGgpOworICAgIGlmICghbUxpbmtlZCkKKyAgICB7CisgICAgICAgIG1Qcm9n
cmFtQmluYXJ5LnNldChOVUxMKTsKKyAgICB9CisKKyAgICByZXR1cm4gbUxpbmtlZDsKK30KKwor
dm9pZCBQcm9ncmFtOjpyZWxlYXNlKCkKK3sKKyAgICBtUmVmQ291bnQtLTsKKworICAgIGlmICht
UmVmQ291bnQgPT0gMCAmJiBtRGVsZXRlU3RhdHVzKQorICAgIHsKKyAgICAgICAgbVJlc291cmNl
TWFuYWdlci0+ZGVsZXRlUHJvZ3JhbShtSGFuZGxlKTsKKyAgICB9Cit9CisKK3ZvaWQgUHJvZ3Jh
bTo6YWRkUmVmKCkKK3sKKyAgICBtUmVmQ291bnQrKzsKK30KKwordW5zaWduZWQgaW50IFByb2dy
YW06OmdldFJlZkNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlZkNvdW50OworfQorCitH
TGludCBQcm9ncmFtOjpnZXRQcm9ncmFtQmluYXJ5TGVuZ3RoKCkgY29uc3QKK3sKKyAgICBQcm9n
cmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gbVByb2dyYW1CaW5hcnkuZ2V0KCk7CisgICAgaWYg
KHByb2dyYW1CaW5hcnkpCisgICAgeworICAgICAgICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0
TGVuZ3RoKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KK30KKworaW50IFByb2dyYW06OmdldEluZm9Mb2dMZW5ndGgoKSBjb25zdAoreworICAgIHJl
dHVybiBtSW5mb0xvZy5nZXRMZW5ndGgoKTsKK30KKwordm9pZCBQcm9ncmFtOjpnZXRJbmZvTG9n
KEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICppbmZvTG9nKQoreworICAg
IHJldHVybiBtSW5mb0xvZy5nZXRMb2coYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKTsKK30KKwor
dm9pZCBQcm9ncmFtOjpnZXRBdHRhY2hlZFNoYWRlcnMoR0xzaXplaSBtYXhDb3VudCwgR0xzaXpl
aSAqY291bnQsIEdMdWludCAqc2hhZGVycykKK3sKKyAgICBpbnQgdG90YWwgPSAwOworCisgICAg
aWYgKG1WZXJ0ZXhTaGFkZXIpCisgICAgeworICAgICAgICBpZiAodG90YWwgPCBtYXhDb3VudCkK
KyAgICAgICAgeworICAgICAgICAgICAgc2hhZGVyc1t0b3RhbF0gPSBtVmVydGV4U2hhZGVyLT5n
ZXRIYW5kbGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRvdGFsKys7CisgICAgfQorCisgICAg
aWYgKG1GcmFnbWVudFNoYWRlcikKKyAgICB7CisgICAgICAgIGlmICh0b3RhbCA8IG1heENvdW50
KQorICAgICAgICB7CisgICAgICAgICAgICBzaGFkZXJzW3RvdGFsXSA9IG1GcmFnbWVudFNoYWRl
ci0+Z2V0SGFuZGxlKCk7CisgICAgICAgIH0KKworICAgICAgICB0b3RhbCsrOworICAgIH0KKwor
ICAgIGlmIChjb3VudCkKKyAgICB7CisgICAgICAgICpjb3VudCA9IHRvdGFsOworICAgIH0KK30K
Kwordm9pZCBQcm9ncmFtOjpnZXRBY3RpdmVBdHRyaWJ1dGUoR0x1aW50IGluZGV4LCBHTHNpemVp
IGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xj
aGFyICpuYW1lKQoreworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBnZXRQcm9n
cmFtQmluYXJ5KCk7CisgICAgaWYgKHByb2dyYW1CaW5hcnkpCisgICAgeworICAgICAgICBwcm9n
cmFtQmluYXJ5LT5nZXRBY3RpdmVBdHRyaWJ1dGUoaW5kZXgsIGJ1ZnNpemUsIGxlbmd0aCwgc2l6
ZSwgdHlwZSwgbmFtZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmIChidWZz
aXplID4gMCkKKyAgICAgICAgeworICAgICAgICAgICAgbmFtZVswXSA9ICdcMCc7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGlmIChsZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAg
ICpsZW5ndGggPSAwOworICAgICAgICB9CisKKyAgICAgICAgKnR5cGUgPSBHTF9OT05FOworICAg
ICAgICAqc2l6ZSA9IDE7CisgICAgfQorfQorCitHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVBdHRy
aWJ1dGVDb3VudCgpCit7CisgICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGdldFBy
b2dyYW1CaW5hcnkoKTsKKyAgICBpZiAocHJvZ3JhbUJpbmFyeSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBwcm9ncmFtQmluYXJ5LT5nZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgpOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK0dMaW50IFByb2dy
YW06OmdldEFjdGl2ZUF0dHJpYnV0ZU1heExlbmd0aCgpCit7CisgICAgUHJvZ3JhbUJpbmFyeSAq
cHJvZ3JhbUJpbmFyeSA9IGdldFByb2dyYW1CaW5hcnkoKTsKKyAgICBpZiAocHJvZ3JhbUJpbmFy
eSkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9ncmFtQmluYXJ5LT5nZXRBY3RpdmVBdHRyaWJ1
dGVNYXhMZW5ndGgoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorfQorCit2b2lkIFByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm0oR0x1aW50IGluZGV4
LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAq
dHlwZSwgR0xjaGFyICpuYW1lKQoreworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkg
PSBnZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgaWYgKHByb2dyYW1CaW5hcnkpCisgICAgeworICAg
ICAgICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0QWN0aXZlVW5pZm9ybShpbmRleCwgYnVmc2l6
ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgaWYgKGJ1ZnNpemUgPiAwKQorICAgICAgICB7CisgICAgICAgICAgICBuYW1lWzBdID0g
J1wwJzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsZW5ndGgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgICpsZW5ndGggPSAwOworICAgICAgICB9CisKKyAgICAgICAgKnNpemUgPSAwOworICAg
ICAgICAqdHlwZSA9IEdMX05PTkU7CisgICAgfQorfQorCitHTGludCBQcm9ncmFtOjpnZXRBY3Rp
dmVVbmlmb3JtQ291bnQoKQoreworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBn
ZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgaWYgKHByb2dyYW1CaW5hcnkpCisgICAgeworICAgICAg
ICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0QWN0aXZlVW5pZm9ybUNvdW50KCk7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworR0xpbnQgUHJv
Z3JhbTo6Z2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aCgpCit7CisgICAgUHJvZ3JhbUJpbmFyeSAq
cHJvZ3JhbUJpbmFyeSA9IGdldFByb2dyYW1CaW5hcnkoKTsKKyAgICBpZiAocHJvZ3JhbUJpbmFy
eSkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9ncmFtQmluYXJ5LT5nZXRBY3RpdmVVbmlmb3Jt
TWF4TGVuZ3RoKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KK30KKwordm9pZCBQcm9ncmFtOjpmbGFnRm9yRGVsZXRpb24oKQoreworICAgIG1EZWxl
dGVTdGF0dXMgPSB0cnVlOworfQorCitib29sIFByb2dyYW06OmlzRmxhZ2dlZEZvckRlbGV0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbURlbGV0ZVN0YXR1czsKK30KKwordm9pZCBQcm9ncmFt
Ojp2YWxpZGF0ZSgpCit7CisgICAgbUluZm9Mb2cucmVzZXQoKTsKKworICAgIFByb2dyYW1CaW5h
cnkgKnByb2dyYW1CaW5hcnkgPSBnZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgaWYgKGlzTGlua2Vk
KCkgJiYgcHJvZ3JhbUJpbmFyeSkKKyAgICB7CisgICAgICAgIHByb2dyYW1CaW5hcnktPnZhbGlk
YXRlKG1JbmZvTG9nKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbUluZm9Mb2cu
YXBwZW5kKCJQcm9ncmFtIGhhcyBub3QgYmVlbiBzdWNjZXNzZnVsbHkgbGlua2VkLiIpOworICAg
IH0KK30KKworYm9vbCBQcm9ncmFtOjppc1ZhbGlkYXRlZCgpIGNvbnN0Cit7CisgICAgUHJvZ3Jh
bUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IG1Qcm9ncmFtQmluYXJ5LmdldCgpOworICAgIGlmIChw
cm9ncmFtQmluYXJ5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb2dyYW1CaW5hcnktPmlzVmFs
aWRhdGVkKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvUHJvZ3JhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvUHJvZ3JhbS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMwIEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBQcm9ncmFtLmg6IERlZmluZXMgdGhlIGdsOjpQcm9n
cmFtIGNsYXNzLiBJbXBsZW1lbnRzIEdMIHByb2dyYW0gb2JqZWN0cworLy8gYW5kIHJlbGF0ZWQg
ZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMi4xMC4zIHBhZ2UgMjgu
CisKKyNpZm5kZWYgTElCR0xFU1YyX1BST0dSQU1fSF8KKyNkZWZpbmUgTElCR0xFU1YyX1BST0dS
QU1fSF8KKworI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDxzZXQ+CisKKyNpbmNsdWRlICJj
b21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9Db25zdGFudHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFz
cyBSZW5kZXJlcjsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBSZXNvdXJjZU1hbmFnZXI7
CitjbGFzcyBGcmFnbWVudFNoYWRlcjsKK2NsYXNzIFZlcnRleFNoYWRlcjsKK2NsYXNzIFByb2dy
YW1CaW5hcnk7CitjbGFzcyBTaGFkZXI7CisKK2V4dGVybiBjb25zdCBjaGFyICogY29uc3QgZ19m
YWtlcGF0aDsKKworY2xhc3MgQXR0cmlidXRlQmluZGluZ3MKK3sKKyAgcHVibGljOgorICAgIEF0
dHJpYnV0ZUJpbmRpbmdzKCk7CisgICAgfkF0dHJpYnV0ZUJpbmRpbmdzKCk7CisKKyAgICB2b2lk
IGJpbmRBdHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpOwor
ICAgIGludCBnZXRBdHRyaWJ1dGVCaW5kaW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25z
dDsKKworICBwcml2YXRlOgorICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtQXR0cmlidXRlQmlu
ZGluZ1tNQVhfVkVSVEVYX0FUVFJJQlNdOworfTsKKworY2xhc3MgSW5mb0xvZworeworICBwdWJs
aWM6CisgICAgSW5mb0xvZygpOworICAgIH5JbmZvTG9nKCk7CisKKyAgICBpbnQgZ2V0TGVuZ3Ro
KCkgY29uc3Q7CisgICAgdm9pZCBnZXRMb2coR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5n
dGgsIGNoYXIgKmluZm9Mb2cpOworCisgICAgdm9pZCBhcHBlbmRTYW5pdGl6ZWQoY29uc3QgY2hh
ciAqbWVzc2FnZSk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciAqaW5mbywgLi4uKTsKKyAg
ICB2b2lkIHJlc2V0KCk7CisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
KEluZm9Mb2cpOworICAgIGNoYXIgKm1JbmZvTG9nOworfTsKKworY2xhc3MgUHJvZ3JhbQorewor
ICBwdWJsaWM6CisgICAgUHJvZ3JhbShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBSZXNvdXJjZU1h
bmFnZXIgKm1hbmFnZXIsIEdMdWludCBoYW5kbGUpOworCisgICAgflByb2dyYW0oKTsKKworICAg
IGJvb2wgYXR0YWNoU2hhZGVyKFNoYWRlciAqc2hhZGVyKTsKKyAgICBib29sIGRldGFjaFNoYWRl
cihTaGFkZXIgKnNoYWRlcik7CisgICAgaW50IGdldEF0dGFjaGVkU2hhZGVyc0NvdW50KCkgY29u
c3Q7CisKKyAgICB2b2lkIGJpbmRBdHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0
IGNoYXIgKm5hbWUpOworCisgICAgYm9vbCBsaW5rKCk7CisgICAgYm9vbCBpc0xpbmtlZCgpOwor
ICAgIGJvb2wgc2V0UHJvZ3JhbUJpbmFyeShjb25zdCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVu
Z3RoKTsKKyAgICBQcm9ncmFtQmluYXJ5ICpnZXRQcm9ncmFtQmluYXJ5KCk7CisKKyAgICBpbnQg
Z2V0SW5mb0xvZ0xlbmd0aCgpIGNvbnN0OworICAgIHZvaWQgZ2V0SW5mb0xvZyhHTHNpemVpIGJ1
ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZyk7CisgICAgdm9pZCBnZXRBdHRh
Y2hlZFNoYWRlcnMoR0xzaXplaSBtYXhDb3VudCwgR0xzaXplaSAqY291bnQsIEdMdWludCAqc2hh
ZGVycyk7CisKKyAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYnV0ZShHTHVpbnQgaW5kZXgsIEdMc2l6
ZWkgYnVmc2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBH
TGNoYXIgKm5hbWUpOworICAgIEdMaW50IGdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCk7CisgICAg
R0xpbnQgZ2V0QWN0aXZlQXR0cmlidXRlTWF4TGVuZ3RoKCk7CisKKyAgICB2b2lkIGdldEFjdGl2
ZVVuaWZvcm0oR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwg
R0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKTsKKyAgICBHTGludCBnZXRB
Y3RpdmVVbmlmb3JtQ291bnQoKTsKKyAgICBHTGludCBnZXRBY3RpdmVVbmlmb3JtTWF4TGVuZ3Ro
KCk7CisKKyAgICB2b2lkIGFkZFJlZigpOworICAgIHZvaWQgcmVsZWFzZSgpOworICAgIHVuc2ln
bmVkIGludCBnZXRSZWZDb3VudCgpIGNvbnN0OworICAgIHZvaWQgZmxhZ0ZvckRlbGV0aW9uKCk7
CisgICAgYm9vbCBpc0ZsYWdnZWRGb3JEZWxldGlvbigpIGNvbnN0OworCisgICAgdm9pZCB2YWxp
ZGF0ZSgpOworICAgIGJvb2wgaXNWYWxpZGF0ZWQoKSBjb25zdDsKKworICAgIEdMaW50IGdldFBy
b2dyYW1CaW5hcnlMZW5ndGgoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTihQcm9ncmFtKTsKKworICAgIHZvaWQgdW5saW5rKGJvb2wgZGVzdHJveSA9
IGZhbHNlKTsKKworICAgIEZyYWdtZW50U2hhZGVyICptRnJhZ21lbnRTaGFkZXI7CisgICAgVmVy
dGV4U2hhZGVyICptVmVydGV4U2hhZGVyOworCisgICAgQXR0cmlidXRlQmluZGluZ3MgbUF0dHJp
YnV0ZUJpbmRpbmdzOworCisgICAgQmluZGluZ1BvaW50ZXI8UHJvZ3JhbUJpbmFyeT4gbVByb2dy
YW1CaW5hcnk7CisgICAgYm9vbCBtTGlua2VkOworICAgIGJvb2wgbURlbGV0ZVN0YXR1czsgICAv
LyBGbGFnIHRvIGluZGljYXRlIHRoYXQgdGhlIHByb2dyYW0gY2FuIGJlIGRlbGV0ZWQgd2hlbiBu
byBsb25nZXIgaW4gdXNlCisKKyAgICB1bnNpZ25lZCBpbnQgbVJlZkNvdW50OworCisgICAgUmVz
b3VyY2VNYW5hZ2VyICptUmVzb3VyY2VNYW5hZ2VyOworICAgIHJ4OjpSZW5kZXJlciAqbVJlbmRl
cmVyOworICAgIGNvbnN0IEdMdWludCBtSGFuZGxlOworCisgICAgSW5mb0xvZyBtSW5mb0xvZzsK
K307Cit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9QUk9HUkFNX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbUJpbmFy
eS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL1Byb2dyYW1CaW5hcnkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2MjAgQEAKKyNp
bmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUHJvZ3JhbS5j
cHA6IEltcGxlbWVudHMgdGhlIGdsOjpQcm9ncmFtIGNsYXNzLiBJbXBsZW1lbnRzIEdMIHByb2dy
YW0gb2JqZWN0cworLy8gYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAu
MjRdIHNlY3Rpb24gMi4xMC4zIHBhZ2UgMjguCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvQmluYXJ5
U3RyZWFtLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZS5oIgorCisjaW5jbHVkZSAiY29t
bW9uL2RlYnVnLmgiCisjaW5jbHVkZSAiY29tbW9uL3ZlcnNpb24uaCIKKyNpbmNsdWRlICJ1dGls
aXRpZXMuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL1NoYWRlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9Qcm9ncmFtLmgiCisjaW5jbHVkZSAi
bGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRl
cmVyL1ZlcnRleERhdGFNYW5hZ2VyLmgiCisKKyN1bmRlZiBuZWFyCisjdW5kZWYgZmFyCisKK25h
bWVzcGFjZSBnbAoreworc3RkOjpzdHJpbmcgc3RyKGludCBpKQoreworICAgIGNoYXIgYnVmZmVy
WzIwXTsKKyAgICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJWQiLCBpKTsKKyAg
ICByZXR1cm4gYnVmZmVyOworfQorCitVbmlmb3JtTG9jYXRpb246OlVuaWZvcm1Mb2NhdGlvbihj
b25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgdW5zaWduZWQgaW50IGVsZW1lbnQsIHVuc2lnbmVkIGlu
dCBpbmRleCkgCisgICAgOiBuYW1lKG5hbWUpLCBlbGVtZW50KGVsZW1lbnQpLCBpbmRleChpbmRl
eCkKK3sKK30KKwordW5zaWduZWQgaW50IFByb2dyYW1CaW5hcnk6Om1DdXJyZW50U2VyaWFsID0g
MTsKKworUHJvZ3JhbUJpbmFyeTo6UHJvZ3JhbUJpbmFyeShyeDo6UmVuZGVyZXIgKnJlbmRlcmVy
KSA6IG1SZW5kZXJlcihyZW5kZXJlciksIFJlZkNvdW50T2JqZWN0KDApLCBtU2VyaWFsKGlzc3Vl
U2VyaWFsKCkpCit7CisgICAgbVBpeGVsRXhlY3V0YWJsZSA9IE5VTEw7CisgICAgbVZlcnRleEV4
ZWN1dGFibGUgPSBOVUxMOworICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgPSBOVUxMOworCisgICAg
bVZhbGlkYXRlZCA9IGZhbHNlOworCisgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IE1B
WF9WRVJURVhfQVRUUklCUzsgaW5kZXgrKykKKyAgICB7CisgICAgICAgIG1TZW1hbnRpY0luZGV4
W2luZGV4XSA9IC0xOworICAgIH0KKworICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBN
QVhfVEVYVFVSRV9JTUFHRV9VTklUUzsgaW5kZXgrKykKKyAgICB7CisgICAgICAgIG1TYW1wbGVy
c1BTW2luZGV4XS5hY3RpdmUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKGludCBpbmRleCA9
IDA7IGluZGV4IDwgSU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRT
OyBpbmRleCsrKQorICAgIHsKKyAgICAgICAgbVNhbXBsZXJzVlNbaW5kZXhdLmFjdGl2ZSA9IGZh
bHNlOworICAgIH0KKworICAgIG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlID0gMDsKKyAgICBtVXNl
ZFBpeGVsU2FtcGxlclJhbmdlID0gMDsKKyAgICBtVXNlc1BvaW50U2l6ZSA9IGZhbHNlOworfQor
CitQcm9ncmFtQmluYXJ5Ojp+UHJvZ3JhbUJpbmFyeSgpCit7CisgICAgZGVsZXRlIG1QaXhlbEV4
ZWN1dGFibGU7CisgICAgbVBpeGVsRXhlY3V0YWJsZSA9IE5VTEw7CisKKyAgICBkZWxldGUgbVZl
cnRleEV4ZWN1dGFibGU7CisgICAgbVZlcnRleEV4ZWN1dGFibGUgPSBOVUxMOworCisgICAgZGVs
ZXRlIG1HZW9tZXRyeUV4ZWN1dGFibGU7CisgICAgbUdlb21ldHJ5RXhlY3V0YWJsZSA9IE5VTEw7
CisKKyAgICB3aGlsZSAoIW1Vbmlmb3Jtcy5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRl
IG1Vbmlmb3Jtcy5iYWNrKCk7CisgICAgICAgIG1Vbmlmb3Jtcy5wb3BfYmFjaygpOworICAgIH0K
K30KKwordW5zaWduZWQgaW50IFByb2dyYW1CaW5hcnk6OmdldFNlcmlhbCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1TZXJpYWw7Cit9CisKK3Vuc2lnbmVkIGludCBQcm9ncmFtQmluYXJ5Ojppc3N1
ZVNlcmlhbCgpCit7CisgICAgcmV0dXJuIG1DdXJyZW50U2VyaWFsKys7Cit9CisKK3J4OjpTaGFk
ZXJFeGVjdXRhYmxlICpQcm9ncmFtQmluYXJ5OjpnZXRQaXhlbEV4ZWN1dGFibGUoKQoreworICAg
IHJldHVybiBtUGl4ZWxFeGVjdXRhYmxlOworfQorCityeDo6U2hhZGVyRXhlY3V0YWJsZSAqUHJv
Z3JhbUJpbmFyeTo6Z2V0VmVydGV4RXhlY3V0YWJsZSgpCit7CisgICAgcmV0dXJuIG1WZXJ0ZXhF
eGVjdXRhYmxlOworfQorCityeDo6U2hhZGVyRXhlY3V0YWJsZSAqUHJvZ3JhbUJpbmFyeTo6Z2V0
R2VvbWV0cnlFeGVjdXRhYmxlKCkKK3sKKyAgICByZXR1cm4gbUdlb21ldHJ5RXhlY3V0YWJsZTsK
K30KKworR0x1aW50IFByb2dyYW1CaW5hcnk6OmdldEF0dHJpYnV0ZUxvY2F0aW9uKGNvbnN0IGNo
YXIgKm5hbWUpCit7CisgICAgaWYgKG5hbWUpCisgICAgeworICAgICAgICBmb3IgKGludCBpbmRl
eCA9IDA7IGluZGV4IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpbmRleCsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAobUxpbmtlZEF0dHJpYnV0ZVtpbmRleF0ubmFtZSA9PSBzdGQ6OnN0cmlu
ZyhuYW1lKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gLTE7Cit9CisKK2lu
dCBQcm9ncmFtQmluYXJ5OjpnZXRTZW1hbnRpY0luZGV4KGludCBhdHRyaWJ1dGVJbmRleCkKK3sK
KyAgICBBU1NFUlQoYXR0cmlidXRlSW5kZXggPj0gMCAmJiBhdHRyaWJ1dGVJbmRleCA8IE1BWF9W
RVJURVhfQVRUUklCUyk7CisgICAgCisgICAgcmV0dXJuIG1TZW1hbnRpY0luZGV4W2F0dHJpYnV0
ZUluZGV4XTsKK30KKworLy8gUmV0dXJucyBvbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IHNhbXBs
ZXIgaW5kZXggdXNlZC4KK0dMaW50IFByb2dyYW1CaW5hcnk6OmdldFVzZWRTYW1wbGVyUmFuZ2Uo
U2FtcGxlclR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgY2Fz
ZSBTQU1QTEVSX1BJWEVMOgorICAgICAgICByZXR1cm4gbVVzZWRQaXhlbFNhbXBsZXJSYW5nZTsK
KyAgICAgIGNhc2UgU0FNUExFUl9WRVJURVg6CisgICAgICAgIHJldHVybiBtVXNlZFZlcnRleFNh
bXBsZXJSYW5nZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KK30KKworYm9vbCBQcm9ncmFtQmluYXJ5Ojp1c2VzUG9pbnRT
aXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVVzZXNQb2ludFNpemU7Cit9CisKK2Jvb2wgUHJv
Z3JhbUJpbmFyeTo6dXNlc1BvaW50U3ByaXRlRW11bGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVVzZXNQb2ludFNpemUgJiYgbVJlbmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVsKCkgPj0g
NDsKK30KKworYm9vbCBQcm9ncmFtQmluYXJ5Ojp1c2VzR2VvbWV0cnlTaGFkZXIoKSBjb25zdAor
eworICAgIHJldHVybiB1c2VzUG9pbnRTcHJpdGVFbXVsYXRpb24oKTsKK30KKworLy8gUmV0dXJu
cyB0aGUgaW5kZXggb2YgdGhlIHRleHR1cmUgaW1hZ2UgdW5pdCAoMC0xOSkgY29ycmVzcG9uZGlu
ZyB0byBhIERpcmVjdDNEIDkgc2FtcGxlcgorLy8gaW5kZXggKDAtMTUgZm9yIHRoZSBwaXhlbCBz
aGFkZXIgYW5kIDAtMyBmb3IgdGhlIHZlcnRleCBzaGFkZXIpLgorR0xpbnQgUHJvZ3JhbUJpbmFy
eTo6Z2V0U2FtcGxlck1hcHBpbmcoU2FtcGxlclR5cGUgdHlwZSwgdW5zaWduZWQgaW50IHNhbXBs
ZXJJbmRleCkKK3sKKyAgICBHTGludCBsb2dpY2FsVGV4dHVyZVVuaXQgPSAtMTsKKworICAgIHN3
aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIFNBTVBMRVJfUElYRUw6CisgICAgICAgIEFT
U0VSVChzYW1wbGVySW5kZXggPCBzaXplb2YobVNhbXBsZXJzUFMpL3NpemVvZihtU2FtcGxlcnNQ
U1swXSkpOworCisgICAgICAgIGlmIChtU2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSkK
KyAgICAgICAgeworICAgICAgICAgICAgbG9naWNhbFRleHR1cmVVbml0ID0gbVNhbXBsZXJzUFNb
c2FtcGxlckluZGV4XS5sb2dpY2FsVGV4dHVyZVVuaXQ7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIFNBTVBMRVJfVkVSVEVYOgorICAgICAgICBBU1NFUlQoc2FtcGxlcklu
ZGV4IDwgc2l6ZW9mKG1TYW1wbGVyc1ZTKS9zaXplb2YobVNhbXBsZXJzVlNbMF0pKTsKKworICAg
ICAgICBpZiAobVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5hY3RpdmUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGxvZ2ljYWxUZXh0dXJlVW5pdCA9IG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0u
bG9naWNhbFRleHR1cmVVbml0OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgZGVm
YXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICBpZiAobG9naWNhbFRleHR1cmVVbml0
ID49IDAgJiYgbG9naWNhbFRleHR1cmVVbml0IDwgKEdMaW50KW1SZW5kZXJlci0+Z2V0TWF4Q29t
YmluZWRUZXh0dXJlSW1hZ2VVbml0cygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxvZ2ljYWxU
ZXh0dXJlVW5pdDsKKyAgICB9CisKKyAgICByZXR1cm4gLTE7Cit9CisKKy8vIFJldHVybnMgdGhl
IHRleHR1cmUgdHlwZSBmb3IgYSBnaXZlbiBEaXJlY3QzRCA5IHNhbXBsZXIgdHlwZSBhbmQKKy8v
IGluZGV4ICgwLTE1IGZvciB0aGUgcGl4ZWwgc2hhZGVyIGFuZCAwLTMgZm9yIHRoZSB2ZXJ0ZXgg
c2hhZGVyKS4KK1RleHR1cmVUeXBlIFByb2dyYW1CaW5hcnk6OmdldFNhbXBsZXJUZXh0dXJlVHlw
ZShTYW1wbGVyVHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4KQoreworICAgIHN3
aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIFNBTVBMRVJfUElYRUw6CisgICAgICAgIEFT
U0VSVChzYW1wbGVySW5kZXggPCBzaXplb2YobVNhbXBsZXJzUFMpL3NpemVvZihtU2FtcGxlcnNQ
U1swXSkpOworICAgICAgICBBU1NFUlQobVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS5hY3RpdmUp
OworICAgICAgICByZXR1cm4gbVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS50ZXh0dXJlVHlwZTsK
KyAgICAgIGNhc2UgU0FNUExFUl9WRVJURVg6CisgICAgICAgIEFTU0VSVChzYW1wbGVySW5kZXgg
PCBzaXplb2YobVNhbXBsZXJzVlMpL3NpemVvZihtU2FtcGxlcnNWU1swXSkpOworICAgICAgICBB
U1NFUlQobVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5hY3RpdmUpOworICAgICAgICByZXR1cm4g
bVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS50ZXh0dXJlVHlwZTsKKyAgICAgIGRlZmF1bHQ6IFVO
UkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIFRFWFRVUkVfMkQ7Cit9CisKK0dMaW50
IFByb2dyYW1CaW5hcnk6OmdldFVuaWZvcm1Mb2NhdGlvbihzdGQ6OnN0cmluZyBuYW1lKQorewor
ICAgIHVuc2lnbmVkIGludCBzdWJzY3JpcHQgPSAwOworCisgICAgLy8gU3RyaXAgYW55IHRyYWls
aW5nIGFycmF5IG9wZXJhdG9yIGFuZCByZXRyaWV2ZSB0aGUgc3Vic2NyaXB0CisgICAgc2l6ZV90
IG9wZW4gPSBuYW1lLmZpbmRfbGFzdF9vZignWycpOworICAgIHNpemVfdCBjbG9zZSA9IG5hbWUu
ZmluZF9sYXN0X29mKCddJyk7CisgICAgaWYgKG9wZW4gIT0gc3RkOjpzdHJpbmc6Om5wb3MgJiYg
Y2xvc2UgPT0gbmFtZS5sZW5ndGgoKSAtIDEpCisgICAgeworICAgICAgICBzdWJzY3JpcHQgPSBh
dG9pKG5hbWUuc3Vic3RyKG9wZW4gKyAxKS5jX3N0cigpKTsKKyAgICAgICAgbmFtZS5lcmFzZShv
cGVuKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbnQgbnVtVW5pZm9ybXMgPSBtVW5pZm9ybUlu
ZGV4LnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBsb2NhdGlvbiA9IDA7IGxvY2F0aW9u
IDwgbnVtVW5pZm9ybXM7IGxvY2F0aW9uKyspCisgICAgeworICAgICAgICBpZiAobVVuaWZvcm1J
bmRleFtsb2NhdGlvbl0ubmFtZSA9PSBuYW1lICYmCisgICAgICAgICAgICBtVW5pZm9ybUluZGV4
W2xvY2F0aW9uXS5lbGVtZW50ID09IHN1YnNjcmlwdCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGxvY2F0aW9uOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQor
Citib29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQqIHYpCit7CisgICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBs
b2NhdGlvbiA+PSAoaW50KW1Vbmlmb3JtSW5kZXguc2l6ZSgpKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9y
bXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uaW5kZXhdOworICAgIHRhcmdldFVuaWZvcm0tPmRp
cnR5ID0gdHJ1ZTsKKworICAgIGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVt
ZW50Q291bnQoKTsKKworICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSAmJiBjb3VudCA+IDEpCisg
ICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBh
IG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisKKyAgICBjb3VudCA9
IHN0ZDo6bWluKGVsZW1lbnRDb3VudCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxl
bWVudCwgY291bnQpOworCisgICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfRkxPQVQp
CisgICAgeworICAgICAgICBHTGZsb2F0ICp0YXJnZXQgPSAoR0xmbG9hdCopdGFyZ2V0VW5pZm9y
bS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAg
dGFyZ2V0WzBdID0gdlswXTsKKyAgICAgICAgICAgIHRhcmdldFsxXSA9IDA7CisgICAgICAgICAg
ICB0YXJnZXRbMl0gPSAwOworICAgICAgICAgICAgdGFyZ2V0WzNdID0gMDsKKyAgICAgICAgICAg
IHRhcmdldCArPSA0OworICAgICAgICAgICAgdiArPSAxOworICAgICAgICB9CisgICAgfQorICAg
IGVsc2UgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfQk9PTCkKKyAgICB7CisgICAgICAg
IEdMaW50ICpib29sUGFyYW1zID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZv
cm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBib29sUGFyYW1zWzBdID0g
KHZbMF0gPT0gMC4wZikgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFy
YW1zWzFdID0gR0xfRkFMU0U7CisgICAgICAgICAgICBib29sUGFyYW1zWzJdID0gR0xfRkFMU0U7
CisgICAgICAgICAgICBib29sUGFyYW1zWzNdID0gR0xfRkFMU0U7CisgICAgICAgICAgICBib29s
UGFyYW1zICs9IDQ7CisgICAgICAgICAgICB2ICs9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm0yZnYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCit7CisgICAgaWYgKGxvY2F0aW9u
IDwgMCB8fCBsb2NhdGlvbiA+PSAoaW50KW1Vbmlmb3JtSW5kZXguc2l6ZSgpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0g
PSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uaW5kZXhdOworICAgIHRhcmdldFVu
aWZvcm0tPmRpcnR5ID0gdHJ1ZTsKKworICAgIGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlm
b3JtLT5lbGVtZW50Q291bnQoKTsKKworICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSAmJiBjb3Vu
dCA+IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBh
cnJheSB0byBhIG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisKKyAg
ICBjb3VudCA9IHN0ZDo6bWluKGVsZW1lbnRDb3VudCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2Nh
dGlvbl0uZWxlbWVudCwgY291bnQpOworCisgICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0g
R0xfRkxPQVRfVkVDMikKKyAgICB7CisgICAgICAgIEdMZmxvYXQgKnRhcmdldCA9IChHTGZsb2F0
Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAq
IDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7
CisgICAgICAgICAgICB0YXJnZXRbMF0gPSB2WzBdOworICAgICAgICAgICAgdGFyZ2V0WzFdID0g
dlsxXTsKKyAgICAgICAgICAgIHRhcmdldFsyXSA9IDA7CisgICAgICAgICAgICB0YXJnZXRbM10g
PSAwOworICAgICAgICAgICAgdGFyZ2V0ICs9IDQ7CisgICAgICAgICAgICB2ICs9IDI7CisgICAg
ICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9CT09M
X1ZFQzIpCisgICAgeworICAgICAgICBHTGludCAqYm9vbFBhcmFtcyA9IChHTGludCopdGFyZ2V0
VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAg
ICAgICAgYm9vbFBhcmFtc1swXSA9ICh2WzBdID09IDAuMGYpID8gR0xfRkFMU0UgOiBHTF9UUlVF
OworICAgICAgICAgICAgYm9vbFBhcmFtc1sxXSA9ICh2WzFdID09IDAuMGYpID8gR0xfRkFMU0Ug
OiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFtc1syXSA9IEdMX0ZBTFNFOworICAgICAg
ICAgICAgYm9vbFBhcmFtc1szXSA9IEdMX0ZBTFNFOworICAgICAgICAgICAgYm9vbFBhcmFtcyAr
PSA0OworICAgICAgICAgICAgdiArPSAyOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTNmdihHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKK3sKKyAgICBpZiAobG9jYXRpb24gPCAwIHx8
IGxvY2F0aW9uID49IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlm
b3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07CisgICAgdGFyZ2V0VW5pZm9ybS0+
ZGlydHkgPSB0cnVlOworCisgICAgaW50IGVsZW1lbnRDb3VudCA9IHRhcmdldFVuaWZvcm0tPmVs
ZW1lbnRDb3VudCgpOworCisgICAgaWYgKGVsZW1lbnRDb3VudCA9PSAxICYmIGNvdW50ID4gMSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFycmF5IHRv
IGEgbm9uLWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KKworICAgIGNvdW50
ID0gc3RkOjptaW4oZWxlbWVudENvdW50IC0gKGludCltVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5l
bGVtZW50LCBjb3VudCk7CisKKyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9GTE9B
VF9WRUMzKQorICAgIHsKKyAgICAgICAgR0xmbG9hdCAqdGFyZ2V0ID0gKEdMZmxvYXQqKXRhcmdl
dFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKwor
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHRhcmdldFswXSA9IHZbMF07CisgICAgICAgICAgICB0YXJnZXRbMV0gPSB2WzFdOwor
ICAgICAgICAgICAgdGFyZ2V0WzJdID0gdlsyXTsKKyAgICAgICAgICAgIHRhcmdldFszXSA9IDA7
CisgICAgICAgICAgICB0YXJnZXQgKz0gNDsKKyAgICAgICAgICAgIHYgKz0gMzsKKyAgICAgICAg
fQorICAgIH0KKyAgICBlbHNlIGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0JPT0xfVkVD
MykKKyAgICB7CisgICAgICAgIEdMaW50ICpib29sUGFyYW1zID0gKEdMaW50Kil0YXJnZXRVbmlm
b3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBib29sUGFyYW1zWzBdID0gKHZbMF0gPT0gMC4wZikgPyBHTF9GQUxTRSA6IEdMX1RSVUU7Cisg
ICAgICAgICAgICBib29sUGFyYW1zWzFdID0gKHZbMV0gPT0gMC4wZikgPyBHTF9GQUxTRSA6IEdM
X1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzJdID0gKHZbMl0gPT0gMC4wZikgPyBHTF9G
QUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzNdID0gR0xfRkFMU0U7Cisg
ICAgICAgICAgICBib29sUGFyYW1zICs9IDQ7CisgICAgICAgICAgICB2ICs9IDM7CisgICAgICAg
IH0KKyAgICB9CisgICAgZWxzZSAKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3Jt
NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQorewor
ICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNp
emUoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBVbmlmb3Jt
ICp0YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4
XTsKKyAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IHRydWU7CisKKyAgICBpbnQgZWxlbWVudENv
dW50ID0gdGFyZ2V0VW5pZm9ybS0+ZWxlbWVudENvdW50KCk7CisKKyAgICBpZiAoZWxlbWVudENv
dW50ID09IDEgJiYgY291bnQgPiAxKQorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRp
bmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElE
X09QRVJBVElPTgorCisgICAgY291bnQgPSBzdGQ6Om1pbihlbGVtZW50Q291bnQgLSAoaW50KW1V
bmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsKKworICAgIGlmICh0YXJnZXRV
bmlmb3JtLT50eXBlID09IEdMX0ZMT0FUX1ZFQzQpCisgICAgeworICAgICAgICBHTGZsb2F0ICp0
YXJnZXQgPSAoR0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9j
YXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7
IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgdGFyZ2V0WzBdID0gdlswXTsKKyAgICAgICAg
ICAgIHRhcmdldFsxXSA9IHZbMV07CisgICAgICAgICAgICB0YXJnZXRbMl0gPSB2WzJdOworICAg
ICAgICAgICAgdGFyZ2V0WzNdID0gdlszXTsKKyAgICAgICAgICAgIHRhcmdldCArPSA0OworICAg
ICAgICAgICAgdiArPSA0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHRhcmdldFVu
aWZvcm0tPnR5cGUgPT0gR0xfQk9PTF9WRUM0KQorICAgIHsKKyAgICAgICAgR0xpbnQgKmJvb2xQ
YXJhbXMgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0
aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBp
KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbMF0gPSAodlswXSA9PSAwLjBm
KSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbMV0gPSAodlsx
XSA9PSAwLjBmKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNb
Ml0gPSAodlsyXSA9PSAwLjBmKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJv
b2xQYXJhbXNbM10gPSAodlszXSA9PSAwLjBmKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAg
ICAgICAgIGJvb2xQYXJhbXMgKz0gNDsKKyAgICAgICAgICAgIHYgKz0gNDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBlbHNlIAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBpbnQgdGFyZ2V0V2lk
dGgsIGludCB0YXJnZXRIZWlnaHQsIGludCBzcmNXaWR0aCwgaW50IHNyY0hlaWdodD4KK3ZvaWQg
dHJhbnNwb3NlTWF0cml4KFQgKnRhcmdldCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAg
aW50IGNvcHlXaWR0aCA9IHN0ZDo6bWluKHRhcmdldFdpZHRoLCBzcmNXaWR0aCk7CisgICAgaW50
IGNvcHlIZWlnaHQgPSBzdGQ6Om1pbih0YXJnZXRIZWlnaHQsIHNyY0hlaWdodCk7CisKKyAgICBm
b3IgKGludCB4ID0gMDsgeCA8IGNvcHlXaWR0aDsgeCsrKQorICAgIHsKKyAgICAgICAgZm9yIChp
bnQgeSA9IDA7IHkgPCBjb3B5SGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHRh
cmdldFt4ICogdGFyZ2V0V2lkdGggKyB5XSA9IChUKXZhbHVlW3kgKiBzcmNXaWR0aCArIHhdOwor
ICAgICAgICB9CisgICAgfQorICAgIC8vIGNsZWFyIHVuZmlsbGVkIHJpZ2h0IHNpZGUKKyAgICBm
b3IgKGludCB5ID0gMDsgeSA8IGNvcHlIZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIGZvciAo
aW50IHggPSBzcmNXaWR0aDsgeCA8IHRhcmdldFdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHRhcmdldFt5ICogdGFyZ2V0V2lkdGggKyB4XSA9IChUKTA7CisgICAgICAgIH0KKyAg
ICB9CisgICAgLy8gY2xlYXIgdW5maWxsZWQgYm90dG9tLgorICAgIGZvciAoaW50IHkgPSBzcmNI
ZWlnaHQ7IHkgPCB0YXJnZXRIZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIGZvciAoaW50IHgg
PSAwOyB4IDwgdGFyZ2V0V2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgdGFyZ2V0
W3kgKiB0YXJnZXRXaWR0aCArIHhdID0gKFQpMDsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9v
bCBQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBpZiAobG9jYXRpb24gPCAw
IHx8IGxvY2F0aW9uID49IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAgeworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1V
bmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07CisgICAgdGFyZ2V0VW5pZm9y
bS0+ZGlydHkgPSB0cnVlOworCisgICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgIT0gR0xfRkxP
QVRfTUFUMikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbnQg
ZWxlbWVudENvdW50ID0gdGFyZ2V0VW5pZm9ybS0+ZWxlbWVudENvdW50KCk7CisKKyAgICBpZiAo
ZWxlbWVudENvdW50ID09IDEgJiYgY291bnQgPiAxKQorICAgICAgICByZXR1cm4gZmFsc2U7IC8v
IGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBh
biBJTlZBTElEX09QRVJBVElPTgorCisgICAgY291bnQgPSBzdGQ6Om1pbihlbGVtZW50Q291bnQg
LSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsKKyAgICBHTGZs
b2F0ICp0YXJnZXQgPSAoR0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5k
ZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA4OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKQorICAgIHsKKyAgICAgICAgdHJhbnNwb3NlTWF0cml4PEdMZmxvYXQsNCwyLDIsMj4o
dGFyZ2V0LCB2YWx1ZSk7CisgICAgICAgIHRhcmdldCArPSA4OworICAgICAgICB2YWx1ZSArPSA0
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dyYW1CaW5hcnk6OnNl
dFVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKQoreworICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGlu
dCltVW5pZm9ybUluZGV4LnNpemUoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5k
ZXhbbG9jYXRpb25dLmluZGV4XTsKKyAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IHRydWU7CisK
KyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSAhPSBHTF9GTE9BVF9NQVQzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGludCBlbGVtZW50Q291bnQgPSB0YXJn
ZXRVbmlmb3JtLT5lbGVtZW50Q291bnQoKTsKKworICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSAm
JiBjb3VudCA+IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0
ZSBhbiBhcnJheSB0byBhIG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9O
CisKKyAgICBjb3VudCA9IHN0ZDo6bWluKGVsZW1lbnRDb3VudCAtIChpbnQpbVVuaWZvcm1JbmRl
eFtsb2NhdGlvbl0uZWxlbWVudCwgY291bnQpOworICAgIEdMZmxvYXQgKnRhcmdldCA9IChHTGZs
b2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVu
dCAqIDEyOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgIHsKKyAg
ICAgICAgdHJhbnNwb3NlTWF0cml4PEdMZmxvYXQsNCwzLDMsMz4odGFyZ2V0LCB2YWx1ZSk7Cisg
ICAgICAgIHRhcmdldCArPSAxMjsKKyAgICAgICAgdmFsdWUgKz0gOTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworCitib29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm1NYXRyaXg0
ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQor
eworICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4
LnNpemUoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBVbmlm
b3JtICp0YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmlu
ZGV4XTsKKyAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IHRydWU7CisKKyAgICBpZiAodGFyZ2V0
VW5pZm9ybS0+dHlwZSAhPSBHTF9GTE9BVF9NQVQ0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVt
ZW50Q291bnQoKTsKKworICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSAmJiBjb3VudCA+IDEpCisg
ICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBh
IG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisKKyAgICBjb3VudCA9
IHN0ZDo6bWluKGVsZW1lbnRDb3VudCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxl
bWVudCwgY291bnQpOworICAgIEdMZmxvYXQgKnRhcmdldCA9IChHTGZsb2F0KikodGFyZ2V0VW5p
Zm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiBzaXplb2YoR0xm
bG9hdCkgKiAxNik7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAg
eworICAgICAgICB0cmFuc3Bvc2VNYXRyaXg8R0xmbG9hdCw0LDQsNCw0Pih0YXJnZXQsIHZhbHVl
KTsKKyAgICAgICAgdGFyZ2V0ICs9IDE2OworICAgICAgICB2YWx1ZSArPSAxNjsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtMWl2
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKK3sKKyAgICBp
ZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0aW9uID49IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVW5pZm9ybSAqdGFy
Z2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07Cisg
ICAgdGFyZ2V0VW5pZm9ybS0+ZGlydHkgPSB0cnVlOworCisgICAgaW50IGVsZW1lbnRDb3VudCA9
IHRhcmdldFVuaWZvcm0tPmVsZW1lbnRDb3VudCgpOworCisgICAgaWYgKGVsZW1lbnRDb3VudCA9
PSAxICYmIGNvdW50ID4gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRv
IHdyaXRlIGFuIGFycmF5IHRvIGEgbm9uLWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVS
QVRJT04KKworICAgIGNvdW50ID0gc3RkOjptaW4oZWxlbWVudENvdW50IC0gKGludCltVW5pZm9y
bUluZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBjb3VudCk7CisKKyAgICBpZiAodGFyZ2V0VW5pZm9y
bS0+dHlwZSA9PSBHTF9JTlQgfHwKKyAgICAgICAgdGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9T
QU1QTEVSXzJEIHx8CisgICAgICAgIHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfU0FNUExFUl9D
VUJFKQorICAgIHsKKyAgICAgICAgR0xpbnQgKnRhcmdldCA9IChHTGludCopdGFyZ2V0VW5pZm9y
bS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAg
dGFyZ2V0WzBdID0gdlswXTsKKyAgICAgICAgICAgIHRhcmdldFsxXSA9IDA7CisgICAgICAgICAg
ICB0YXJnZXRbMl0gPSAwOworICAgICAgICAgICAgdGFyZ2V0WzNdID0gMDsKKyAgICAgICAgICAg
IHRhcmdldCArPSA0OworICAgICAgICAgICAgdiArPSAxOworICAgICAgICB9CisgICAgfQorICAg
IGVsc2UgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfQk9PTCkKKyAgICB7CisgICAgICAg
IEdMaW50ICpib29sUGFyYW1zID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZv
cm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBib29sUGFyYW1zWzBdID0g
KHZbMF0gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1z
WzFdID0gR0xfRkFMU0U7CisgICAgICAgICAgICBib29sUGFyYW1zWzJdID0gR0xfRkFMU0U7Cisg
ICAgICAgICAgICBib29sUGFyYW1zWzNdID0gR0xfRkFMU0U7CisgICAgICAgICAgICBib29sUGFy
YW1zICs9IDQ7CisgICAgICAgICAgICB2ICs9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm0yaXYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQoreworICAgIGlmIChsb2NhdGlvbiA8IDAg
fHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUoKSkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gbVVu
aWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKKyAgICB0YXJnZXRVbmlmb3Jt
LT5kaXJ0eSA9IHRydWU7CisKKyAgICBpbnQgZWxlbWVudENvdW50ID0gdGFyZ2V0VW5pZm9ybS0+
ZWxlbWVudENvdW50KCk7CisKKyAgICBpZiAoZWxlbWVudENvdW50ID09IDEgJiYgY291bnQgPiAx
KQorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkg
dG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgorCisgICAgY291
bnQgPSBzdGQ6Om1pbihlbGVtZW50Q291bnQgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25d
LmVsZW1lbnQsIGNvdW50KTsKKworICAgIGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0lO
VF9WRUMyKQorICAgIHsKKyAgICAgICAgR0xpbnQgKnRhcmdldCA9IChHTGludCopdGFyZ2V0VW5p
Zm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAg
ICAgdGFyZ2V0WzBdID0gdlswXTsKKyAgICAgICAgICAgIHRhcmdldFsxXSA9IHZbMV07CisgICAg
ICAgICAgICB0YXJnZXRbMl0gPSAwOworICAgICAgICAgICAgdGFyZ2V0WzNdID0gMDsKKyAgICAg
ICAgICAgIHRhcmdldCArPSA0OworICAgICAgICAgICAgdiArPSAyOworICAgICAgICB9CisgICAg
fQorICAgIGVsc2UgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfQk9PTF9WRUMyKQorICAg
IHsKKyAgICAgICAgR0xpbnQgKmJvb2xQYXJhbXMgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRh
dGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2xQ
YXJhbXNbMF0gPSAodlswXSA9PSAwKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAg
IGJvb2xQYXJhbXNbMV0gPSAodlsxXSA9PSAwKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAg
ICAgICAgIGJvb2xQYXJhbXNbMl0gPSBHTF9GQUxTRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNb
M10gPSBHTF9GQUxTRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXMgKz0gNDsKKyAgICAgICAgICAg
IHYgKz0gMjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUHJvZ3JhbUJp
bmFyeTo6c2V0VW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xpbnQgKnYpCit7CisgICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBsb2NhdGlvbiA+PSAoaW50KW1V
bmlmb3JtSW5kZXguc2l6ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFts
b2NhdGlvbl0uaW5kZXhdOworICAgIHRhcmdldFVuaWZvcm0tPmRpcnR5ID0gdHJ1ZTsKKworICAg
IGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVtZW50Q291bnQoKTsKKworICAg
IGlmIChlbGVtZW50Q291bnQgPT0gMSAmJiBjb3VudCA+IDEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBhIG5vbi1hcnJheSB1bmlmb3Jt
IGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisKKyAgICBjb3VudCA9IHN0ZDo6bWluKGVsZW1lbnRD
b3VudCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCwgY291bnQpOworCisg
ICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfSU5UX1ZFQzMpCisgICAgeworICAgICAg
ICBHTGludCAqdGFyZ2V0ID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1J
bmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXRbMF0gPSB2WzBdOwor
ICAgICAgICAgICAgdGFyZ2V0WzFdID0gdlsxXTsKKyAgICAgICAgICAgIHRhcmdldFsyXSA9IHZb
Ml07CisgICAgICAgICAgICB0YXJnZXRbM10gPSAwOworICAgICAgICAgICAgdGFyZ2V0ICs9IDQ7
CisgICAgICAgICAgICB2ICs9IDM7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAodGFy
Z2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9CT09MX1ZFQzMpCisgICAgeworICAgICAgICBHTGludCAq
Ym9vbFBhcmFtcyA9IChHTGludCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhb
bG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291
bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgYm9vbFBhcmFtc1swXSA9ICh2WzBdID09
IDApID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFtc1sxXSA9ICh2
WzFdID09IDApID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFtc1sy
XSA9ICh2WzJdID09IDApID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBh
cmFtc1szXSA9IEdMX0ZBTFNFOworICAgICAgICAgICAgYm9vbFBhcmFtcyArPSA0OworICAgICAg
ICAgICAgdiArPSAzOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9n
cmFtQmluYXJ5OjpzZXRVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGludCAqdikKK3sKKyAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0aW9uID49IChp
bnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUlu
ZGV4W2xvY2F0aW9uXS5pbmRleF07CisgICAgdGFyZ2V0VW5pZm9ybS0+ZGlydHkgPSB0cnVlOwor
CisgICAgaW50IGVsZW1lbnRDb3VudCA9IHRhcmdldFVuaWZvcm0tPmVsZW1lbnRDb3VudCgpOwor
CisgICAgaWYgKGVsZW1lbnRDb3VudCA9PSAxICYmIGNvdW50ID4gMSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFycmF5IHRvIGEgbm9uLWFycmF5IHVu
aWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KKworICAgIGNvdW50ID0gc3RkOjptaW4oZWxl
bWVudENvdW50IC0gKGludCltVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBjb3VudCk7
CisKKyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9JTlRfVkVDNCkKKyAgICB7Cisg
ICAgICAgIEdMaW50ICp0YXJnZXQgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5p
Zm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHRhcmdldFswXSA9IHZb
MF07CisgICAgICAgICAgICB0YXJnZXRbMV0gPSB2WzFdOworICAgICAgICAgICAgdGFyZ2V0WzJd
ID0gdlsyXTsKKyAgICAgICAgICAgIHRhcmdldFszXSA9IHZbM107CisgICAgICAgICAgICB0YXJn
ZXQgKz0gNDsKKyAgICAgICAgICAgIHYgKz0gNDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNl
IGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0JPT0xfVkVDNCkKKyAgICB7CisgICAgICAg
IEdMaW50ICpib29sUGFyYW1zID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZv
cm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBib29sUGFyYW1zWzBdID0g
KHZbMF0gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1z
WzFdID0gKHZbMV0gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29s
UGFyYW1zWzJdID0gKHZbMl0gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAg
ICBib29sUGFyYW1zWzNdID0gKHZbM10gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAg
ICAgICAgICBib29sUGFyYW1zICs9IDQ7CisgICAgICAgICAgICB2ICs9IDQ7CisgICAgICAgIH0K
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dyYW1CaW5hcnk6OmdldFVuaWZvcm1mdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSAqYnVmU2l6ZSwgR0xmbG9hdCAqcGFyYW1zKQoreworICAg
IGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUo
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBVbmlmb3JtICp0
YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsK
KworICAgIC8vIHNpemVkIHF1ZXJpZXMgLS0gZW5zdXJlIHRoZSBwcm92aWRlZCBidWZmZXIgaXMg
bGFyZ2UgZW5vdWdoCisgICAgaWYgKGJ1ZlNpemUpCisgICAgeworICAgICAgICBpbnQgcmVxdWly
ZWRCeXRlcyA9IFVuaWZvcm1FeHRlcm5hbFNpemUodGFyZ2V0VW5pZm9ybS0+dHlwZSk7CisgICAg
ICAgIGlmICgqYnVmU2l6ZSA8IHJlcXVpcmVkQnl0ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3aXRjaCAodGFyZ2V0VW5p
Zm9ybS0+dHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6CisgICAgICAgIHRy
YW5zcG9zZU1hdHJpeDxHTGZsb2F0LDIsMiw0LDI+KHBhcmFtcywgKEdMZmxvYXQqKXRhcmdldFVu
aWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogOCk7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOgorICAgICAgICB0cmFuc3Bvc2VN
YXRyaXg8R0xmbG9hdCwzLDMsNCwzPihwYXJhbXMsIChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5k
YXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDEyKTsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgIHRyYW5zcG9zZU1hdHJpeDxH
TGZsb2F0LDQsNCw0LDQ+KHBhcmFtcywgKEdMZmxvYXQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBt
VW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogMTYpOworICAgICAgICBicmVhazsKKyAg
ICAgIGRlZmF1bHQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBzaXplID0g
VW5pZm9ybUNvbXBvbmVudENvdW50KHRhcmdldFVuaWZvcm0tPnR5cGUpOworCisgICAgICAgICAg
ICBzd2l0Y2ggKFVuaWZvcm1Db21wb25lbnRUeXBlKHRhcmdldFVuaWZvcm0tPnR5cGUpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0JPT0w6CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBHTGludCAqYm9vbFBhcmFtcyA9IChHTGludCopdGFyZ2V0
VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsr
KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNb
aV0gPSAoYm9vbFBhcmFtc1tpXSA9PSBHTF9GQUxTRSkgPyAwLjBmIDogMS4wZjsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgICAgICBtZW1jcHkocGFy
YW1zLCB0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVu
dCAqIDQgKiBzaXplb2YoR0xmbG9hdCksCisgICAgICAgICAgICAgICAgICAgICAgIHNpemUgKiBz
aXplb2YoR0xmbG9hdCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIEdMX0lOVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEdMaW50
ICppbnRQYXJhbXMgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4
W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gKGZsb2F0KWludFBhcmFtc1tpXTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dy
YW1CaW5hcnk6OmdldFVuaWZvcm1pdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSAqYnVmU2l6ZSwg
R0xpbnQgKnBhcmFtcykKK3sKKyAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0aW9uID49IChp
bnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUlu
ZGV4W2xvY2F0aW9uXS5pbmRleF07CisKKyAgICAvLyBzaXplZCBxdWVyaWVzIC0tIGVuc3VyZSB0
aGUgcHJvdmlkZWQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaAorICAgIGlmIChidWZTaXplKQorICAg
IHsKKyAgICAgICAgaW50IHJlcXVpcmVkQnl0ZXMgPSBVbmlmb3JtRXh0ZXJuYWxTaXplKHRhcmdl
dFVuaWZvcm0tPnR5cGUpOworICAgICAgICBpZiAoKmJ1ZlNpemUgPCByZXF1aXJlZEJ5dGVzKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBzd2l0Y2ggKHRhcmdldFVuaWZvcm0tPnR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9G
TE9BVF9NQVQyOgorICAgICAgICB0cmFuc3Bvc2VNYXRyaXg8R0xpbnQsMiwyLDQsMj4ocGFyYW1z
LCAoR0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25d
LmVsZW1lbnQgKiA4KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6
CisgICAgICAgIHRyYW5zcG9zZU1hdHJpeDxHTGludCwzLDMsNCwzPihwYXJhbXMsIChHTGZsb2F0
Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAq
IDEyKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAg
IHRyYW5zcG9zZU1hdHJpeDxHTGludCw0LDQsNCw0PihwYXJhbXMsIChHTGZsb2F0Kil0YXJnZXRV
bmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDE2KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICB7CisgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgc2l6ZSA9IFZhcmlhYmxlQ29sdW1uQ291bnQodGFyZ2V0VW5pZm9ybS0+dHlwZSk7
CisKKyAgICAgICAgICAgIHN3aXRjaCAoVW5pZm9ybUNvbXBvbmVudFR5cGUodGFyZ2V0VW5pZm9y
bS0+dHlwZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfQk9PTDoKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEdMaW50ICpib29sUGFyYW1zID0g
KEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxl
bWVudCAqIDQ7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBzaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtc1tpXSA9IGJvb2xQYXJhbXNbaV07CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0ICpmbG9hdFBhcmFtcyA9IChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVu
aWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IChHTGludClmbG9hdFBh
cmFtc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAg
ICAgICAgbWVtY3B5KHBhcmFtcywgdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhb
bG9jYXRpb25dLmVsZW1lbnQgKiA0ICogc2l6ZW9mKEdMaW50KSwKKyAgICAgICAgICAgICAgICAg
ICAgc2l6ZSAqIHNpemVvZihHTGludCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUHJvZ3JhbUJpbmFyeTo6ZGly
dHlBbGxVbmlmb3JtcygpCit7CisgICAgdW5zaWduZWQgaW50IG51bVVuaWZvcm1zID0gbVVuaWZv
cm1zLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpbmRleCA9IDA7IGluZGV4IDwgbnVt
VW5pZm9ybXM7IGluZGV4KyspCisgICAgeworICAgICAgICBtVW5pZm9ybXNbaW5kZXhdLT5kaXJ0
eSA9IHRydWU7CisgICAgfQorfQorCisvLyBBcHBsaWVzIGFsbCB0aGUgdW5pZm9ybXMgc2V0IGZv
ciB0aGlzIHByb2dyYW0gb2JqZWN0IHRvIHRoZSByZW5kZXJlcgordm9pZCBQcm9ncmFtQmluYXJ5
OjphcHBseVVuaWZvcm1zKCkKK3sKKyAgICAvLyBSZXRyaWV2ZSBzYW1wbGVyIHVuaWZvcm0gdmFs
dWVzCisgICAgZm9yIChzdGQ6OnZlY3RvcjxVbmlmb3JtKj46Oml0ZXJhdG9yIHViID0gbVVuaWZv
cm1zLmJlZ2luKCksIHVlID0gbVVuaWZvcm1zLmVuZCgpOyB1YiAhPSB1ZTsgKyt1YikKKyAgICB7
CisgICAgICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSAqdWI7CisKKyAgICAgICAgaWYgKHRh
cmdldFVuaWZvcm0tPmRpcnR5KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGFyZ2V0VW5p
Zm9ybS0+dHlwZSA9PSBHTF9TQU1QTEVSXzJEIHx8IAorICAgICAgICAgICAgICAgIHRhcmdldFVu
aWZvcm0tPnR5cGUgPT0gR0xfU0FNUExFUl9DVUJFKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGludCBjb3VudCA9IHRhcmdldFVuaWZvcm0tPmVsZW1lbnRDb3VudCgpOworICAgICAg
ICAgICAgICAgIEdMaW50ICgqdilbNF0gPSAoR0xpbnQoKilbNF0pdGFyZ2V0VW5pZm9ybS0+ZGF0
YTsKKworICAgICAgICAgICAgICAgIGlmICh0YXJnZXRVbmlmb3JtLT5wc1JlZ2lzdGVySW5kZXgg
Pj0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBmaXJzdEluZGV4ID0gdGFyZ2V0VW5pZm9ybS0+cHNSZWdpc3RlckluZGV4OworCisgICAgICAg
ICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZXJJ
bmRleCA9IGZpcnN0SW5kZXggKyBpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Ft
cGxlckluZGV4IDwgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMpCisgICAgICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1TYW1wbGVyc1BTW3Nh
bXBsZXJJbmRleF0uYWN0aXZlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2FtcGxl
cnNQU1tzYW1wbGVySW5kZXhdLmxvZ2ljYWxUZXh0dXJlVW5pdCA9IHZbaV1bMF07CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dnNSZWdpc3RlckluZGV4
ID49IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgZmlyc3RJbmRleCA9IHRhcmdldFVuaWZvcm0tPnZzUmVnaXN0ZXJJbmRleDsKKworICAgICAg
ICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVy
SW5kZXggPSBmaXJzdEluZGV4ICsgaTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNh
bXBsZXJJbmRleCA8IElNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklU
UykKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQobVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5hY3RpdmUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0ubG9naWNhbFRleHR1cmVV
bml0ID0gdltpXVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIG1SZW5kZXJlci0+YXBwbHlVbmlmb3Jtcyh0aGlzLCAmbVVuaWZvcm1zKTsKK30K
KworLy8gUGFja3MgdmFyeWluZ3MgaW50byBnZW5lcmljIHZhcnlpbmcgcmVnaXN0ZXJzLCB1c2lu
ZyB0aGUgYWxnb3JpdGhtIGZyb20gW09wZW5HTCBFUyBTaGFkaW5nIExhbmd1YWdlIDEuMDAgcmV2
LiAxN10gYXBwZW5kaXggQSBzZWN0aW9uIDcgcGFnZSAxMTEKKy8vIFJldHVybnMgdGhlIG51bWJl
ciBvZiB1c2VkIHZhcnlpbmcgcmVnaXN0ZXJzLCBvciAtMSBpZiB1bnN1Y2Nlc2Z1bAoraW50IFBy
b2dyYW1CaW5hcnk6OnBhY2tWYXJ5aW5ncyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBWYXJ5aW5n
ICpwYWNraW5nW11bNF0sIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlcikKK3sKKyAgICBj
b25zdCBpbnQgbWF4VmFyeWluZ1ZlY3RvcnMgPSBtUmVuZGVyZXItPmdldE1heFZhcnlpbmdWZWN0
b3JzKCk7CisKKyAgICBmcmFnbWVudFNoYWRlci0+cmVzZXRWYXJ5aW5nc1JlZ2lzdGVyQXNzaWdu
bWVudCgpOworCisgICAgZm9yIChWYXJ5aW5nTGlzdDo6aXRlcmF0b3IgdmFyeWluZyA9IGZyYWdt
ZW50U2hhZGVyLT5tVmFyeWluZ3MuYmVnaW4oKTsgdmFyeWluZyAhPSBmcmFnbWVudFNoYWRlci0+
bVZhcnlpbmdzLmVuZCgpOyB2YXJ5aW5nKyspCisgICAgeworICAgICAgICBpbnQgbiA9IFZhcmlh
YmxlUm93Q291bnQodmFyeWluZy0+dHlwZSkgKiB2YXJ5aW5nLT5zaXplOworICAgICAgICBpbnQg
bSA9IFZhcmlhYmxlQ29sdW1uQ291bnQodmFyeWluZy0+dHlwZSk7CisgICAgICAgIGJvb2wgc3Vj
Y2VzcyA9IGZhbHNlOworCisgICAgICAgIGlmIChtID09IDIgfHwgbSA9PSAzIHx8IG0gPT0gNCkK
KyAgICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgciA9IDA7IHIgPD0gbWF4VmFyeWluZ1Zl
Y3RvcnMgLSBuICYmICFzdWNjZXNzOyByKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgYm9vbCBhdmFpbGFibGUgPSB0cnVlOworCisgICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9
IDA7IHkgPCBuICYmIGF2YWlsYWJsZTsgeSsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBtICYmIGF2YWlsYWJsZTsgeCsrKQorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFja2luZ1ty
ICsgeV1beF0pCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXZhaWxhYmxlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAoYXZhaWxhYmxlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
dmFyeWluZy0+cmVnID0gcjsKKyAgICAgICAgICAgICAgICAgICAgdmFyeWluZy0+Y29sID0gMDsK
KworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IG47IHkrKykKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7
IHggPCBtOyB4KyspCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFja2luZ1tyICsgeV1beF0gPSAmKnZhcnlpbmc7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICghc3VjY2VzcyAmJiBtID09IDIpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZm9yIChpbnQgciA9IG1heFZhcnlpbmdWZWN0b3JzIC0gbjsgciA+PSAwICYmICFz
dWNjZXNzOyByLS0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBib29s
IGF2YWlsYWJsZSA9IHRydWU7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7
IHkgPCBuICYmIGF2YWlsYWJsZTsgeSsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMjsgeCA8IDQgJiYgYXZhaWxhYmxlOyB4Kysp
CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHBhY2tpbmdbciArIHldW3hdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJsZSkKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyeWluZy0+cmVn
ID0gcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcnlpbmctPmNvbCA9IDI7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbjsgeSsrKQorICAgICAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHgg
PSAyOyB4IDwgNDsgeCsrKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFja2luZ1tyICsgeV1beF0gPSAmKnZhcnlpbmc7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlIGlmIChtID09IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBzcGFjZVs0
XSA9IHswfTsKKworICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBtYXhWYXJ5aW5nVmVj
dG9yczsgeSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAw
OyB4IDwgNDsgeCsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3Bh
Y2VbeF0gKz0gcGFja2luZ1t5XVt4XSA/IDAgOiAxOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaW50IGNvbHVtbiA9IDA7CisKKyAgICAgICAgICAgIGZv
ciAoaW50IHggPSAwOyB4IDwgNDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGlmIChzcGFjZVt4XSA+PSBuICYmIHNwYWNlW3hdIDwgc3BhY2VbY29sdW1uXSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IHg7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc3BhY2VbY29sdW1uXSA+PSBu
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoaW50IHIgPSAwOyByIDwgbWF4
VmFyeWluZ1ZlY3RvcnM7IHIrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghcGFja2luZ1tyXVtjb2x1bW5dKQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB2YXJ5aW5nLT5yZWcgPSByOworCisgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKGludCB5ID0gcjsgeSA8IHIgKyBuOyB5KyspCisgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2luZ1t5XVtjb2x1bW5d
ID0gJip2YXJ5aW5nOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIHZhcnlpbmctPmNvbCA9IGNvbHVtbjsKKworICAgICAgICAg
ICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGVsc2UgVU5SRUFDSEFCTEUoKTsKKworICAgICAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJDb3VsZCBub3QgcGFjayB2YXJ5aW5nICVzIiwg
dmFyeWluZy0+bmFtZS5jX3N0cigpKTsKKworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgdXNlZCByZWdpc3RlcnMK
KyAgICBpbnQgcmVnaXN0ZXJzID0gMDsKKworICAgIGZvciAoaW50IHIgPSAwOyByIDwgbWF4VmFy
eWluZ1ZlY3RvcnM7IHIrKykKKyAgICB7CisgICAgICAgIGlmIChwYWNraW5nW3JdWzBdIHx8IHBh
Y2tpbmdbcl1bMV0gfHwgcGFja2luZ1tyXVsyXSB8fCBwYWNraW5nW3JdWzNdKQorICAgICAgICB7
CisgICAgICAgICAgICByZWdpc3RlcnMrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biByZWdpc3RlcnM7Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6bGlua1ZhcnlpbmdzKEluZm9M
b2cgJmluZm9Mb2csIGludCByZWdpc3RlcnMsIGNvbnN0IFZhcnlpbmcgKnBhY2tpbmdbXVs0XSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nJiBwaXhlbEhMU0ws
IHN0ZDo6c3RyaW5nJiB2ZXJ0ZXhITFNMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBWZXJ0ZXhTaGFkZXIgKnZlcnRleFNo
YWRlcikKK3sKKyAgICBpZiAocGl4ZWxITFNMLmVtcHR5KCkgfHwgdmVydGV4SExTTC5lbXB0eSgp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGJvb2wgdXNlc01S
VCA9IGZyYWdtZW50U2hhZGVyLT5tVXNlc011bHRpcGxlUmVuZGVyVGFyZ2V0czsKKyAgICBib29s
IHVzZXNGcmFnQ29sb3IgPSBmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnQ29sb3I7CisgICAgYm9v
bCB1c2VzRnJhZ0RhdGEgPSBmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnRGF0YTsKKyAgICBpZiAo
dXNlc0ZyYWdDb2xvciAmJiB1c2VzRnJhZ0RhdGEpCisgICAgeworICAgICAgICBpbmZvTG9nLmFw
cGVuZCgiQ2Fubm90IHVzZSBib3RoIGdsX0ZyYWdDb2xvciBhbmQgZ2xfRnJhZ0RhdGEgaW4gdGhl
IHNhbWUgZnJhZ21lbnQgc2hhZGVyLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgLy8gV3JpdGUgdGhlIEhMU0wgaW5wdXQvb3V0cHV0IGRlY2xhcmF0aW9ucworICAgIGNv
bnN0IGludCBzaGFkZXJNb2RlbCA9IG1SZW5kZXJlci0+Z2V0TWFqb3JTaGFkZXJNb2RlbCgpOwor
ICAgIGNvbnN0IGludCBtYXhWYXJ5aW5nVmVjdG9ycyA9IG1SZW5kZXJlci0+Z2V0TWF4VmFyeWlu
Z1ZlY3RvcnMoKTsKKworICAgIGNvbnN0IGludCByZWdpc3RlcnNOZWVkZWQgPSByZWdpc3RlcnMg
KyAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nvb3JkID8gMSA6IDApICsgKGZyYWdtZW50U2hh
ZGVyLT5tVXNlc1BvaW50Q29vcmQgPyAxIDogMCk7CisKKyAgICAvLyBUaGUgb3V0cHV0IGNvbG9y
IGlzIGJyb2FkY2FzdCB0byBhbGwgZW5hYmxlZCBkcmF3IGJ1ZmZlcnMgd2hlbiB3cml0aW5nIHRv
IGdsX0ZyYWdDb2xvciAKKyAgICBjb25zdCBib29sIGJyb2FkY2FzdCA9IGZyYWdtZW50U2hhZGVy
LT5tVXNlc0ZyYWdDb2xvcjsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgbnVtUmVuZGVyVGFyZ2V0
cyA9IChicm9hZGNhc3QgfHwgdXNlc01SVCA/IG1SZW5kZXJlci0+Z2V0TWF4UmVuZGVyVGFyZ2V0
cygpIDogMSk7CisKKyAgICBpZiAocmVnaXN0ZXJzTmVlZGVkID4gbWF4VmFyeWluZ1ZlY3RvcnMp
CisgICAgeworICAgICAgICBpbmZvTG9nLmFwcGVuZCgiTm8gdmFyeWluZyByZWdpc3RlcnMgbGVm
dCB0byBzdXBwb3J0IGdsX0ZyYWdDb29yZC9nbF9Qb2ludENvb3JkIik7CisKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHZlcnRleFNoYWRlci0+cmVzZXRWYXJ5aW5nc1JlZ2lz
dGVyQXNzaWdubWVudCgpOworCisgICAgZm9yIChWYXJ5aW5nTGlzdDo6aXRlcmF0b3IgaW5wdXQg
PSBmcmFnbWVudFNoYWRlci0+bVZhcnlpbmdzLmJlZ2luKCk7IGlucHV0ICE9IGZyYWdtZW50U2hh
ZGVyLT5tVmFyeWluZ3MuZW5kKCk7IGlucHV0KyspCisgICAgeworICAgICAgICBib29sIG1hdGNo
ZWQgPSBmYWxzZTsKKworICAgICAgICBmb3IgKFZhcnlpbmdMaXN0OjppdGVyYXRvciBvdXRwdXQg
PSB2ZXJ0ZXhTaGFkZXItPm1WYXJ5aW5ncy5iZWdpbigpOyBvdXRwdXQgIT0gdmVydGV4U2hhZGVy
LT5tVmFyeWluZ3MuZW5kKCk7IG91dHB1dCsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
b3V0cHV0LT5uYW1lID09IGlucHV0LT5uYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGlmIChvdXRwdXQtPnR5cGUgIT0gaW5wdXQtPnR5cGUgfHwgb3V0cHV0LT5zaXplICE9IGlu
cHV0LT5zaXplKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW5mb0xv
Zy5hcHBlbmQoIlR5cGUgb2YgdmVydGV4IHZhcnlpbmcgJXMgZG9lcyBub3QgbWF0Y2ggdGhhdCBv
ZiB0aGUgZnJhZ21lbnQgdmFyeWluZyIsIG91dHB1dC0+bmFtZS5jX3N0cigpKTsKKworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgb3V0cHV0LT5yZWcgPSBpbnB1dC0+cmVnOworICAgICAgICAgICAgICAgIG91dHB1
dC0+Y29sID0gaW5wdXQtPmNvbDsKKworICAgICAgICAgICAgICAgIG1hdGNoZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCFtYXRjaGVkKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgi
RnJhZ21lbnQgdmFyeWluZyAlcyBkb2VzIG5vdCBtYXRjaCBhbnkgdmVydGV4IHZhcnlpbmciLCBp
bnB1dC0+bmFtZS5jX3N0cigpKTsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorCisgICAgbVVzZXNQb2ludFNpemUgPSB2ZXJ0ZXhTaGFkZXItPm1Vc2VzUG9p
bnRTaXplOworICAgIHN0ZDo6c3RyaW5nIHZhcnlpbmdTZW1hbnRpYyA9IChtVXNlc1BvaW50U2l6
ZSAmJiBzaGFkZXJNb2RlbCA9PSAzKSA/ICJDT0xPUiIgOiAiVEVYQ09PUkQiOworICAgIHN0ZDo6
c3RyaW5nIHRhcmdldFNlbWFudGljID0gKHNoYWRlck1vZGVsID49IDQpID8gIlNWX1RhcmdldCIg
OiAiQ09MT1IiOworICAgIHN0ZDo6c3RyaW5nIHBvc2l0aW9uU2VtYW50aWMgPSAoc2hhZGVyTW9k
ZWwgPj0gNCkgPyAiU1ZfUG9zaXRpb24iIDogIlBPU0lUSU9OIjsKKyAgICBzdGQ6OnN0cmluZyBk
ZXB0aFNlbWFudGljID0gKHNoYWRlck1vZGVsID49IDQpID8gIlNWX0RlcHRoIiA6ICJERVBUSCI7
CisKKyAgICAvLyBzcGVjaWFsIHZhcnlpbmdzIHRoYXQgdXNlIHJlc2VydmVkIHJlZ2lzdGVycwor
ICAgIGludCByZXNlcnZlZFJlZ2lzdGVySW5kZXggPSByZWdpc3RlcnM7CisgICAgc3RkOjpzdHJp
bmcgZnJhZ0Nvb3JkU2VtYW50aWM7CisgICAgc3RkOjpzdHJpbmcgcG9pbnRDb29yZFNlbWFudGlj
OworCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0ZyYWdDb29yZCkKKyAgICB7CisgICAg
ICAgIGZyYWdDb29yZFNlbWFudGljID0gdmFyeWluZ1NlbWFudGljICsgc3RyKHJlc2VydmVkUmVn
aXN0ZXJJbmRleCsrKTsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzUG9p
bnRDb29yZCkKKyAgICB7CisgICAgICAgIC8vIFNoYWRlciBtb2RlbCAzIHVzZXMgYSBzcGVjaWFs
IFRFWENPT1JEIHNlbWFudGljIGZvciBwb2ludCBzcHJpdGUgdGV4Y29vcmRzLgorICAgICAgICAv
LyBJbiBEWDExIHdlIGNvbXB1dGUgdGhpcyBpbiB0aGUgR1MuCisgICAgICAgIGlmIChzaGFkZXJN
b2RlbCA9PSAzKQorICAgICAgICB7CisgICAgICAgICAgICBwb2ludENvb3JkU2VtYW50aWMgPSAi
VEVYQ09PUkQwIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzaGFkZXJNb2RlbCA+PSA0
KQorICAgICAgICB7CisgICAgICAgICAgICBwb2ludENvb3JkU2VtYW50aWMgPSB2YXJ5aW5nU2Vt
YW50aWMgKyBzdHIocmVzZXJ2ZWRSZWdpc3RlckluZGV4KyspOyAKKyAgICAgICAgfQorICAgIH0K
KworICAgIHZlcnRleEhMU0wgKz0gInN0cnVjdCBWU19JTlBVVFxuIgorICAgICAgICAgICAgICAg
ICAgIntcbiI7CisKKyAgICBpbnQgc2VtYW50aWNJbmRleCA9IDA7CisgICAgZm9yIChBdHRyaWJ1
dGVBcnJheTo6aXRlcmF0b3IgYXR0cmlidXRlID0gdmVydGV4U2hhZGVyLT5tQXR0cmlidXRlcy5i
ZWdpbigpOyBhdHRyaWJ1dGUgIT0gdmVydGV4U2hhZGVyLT5tQXR0cmlidXRlcy5lbmQoKTsgYXR0
cmlidXRlKyspCisgICAgeworICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0ZS0+dHlwZSkKKyAgICAg
ICAgeworICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgdmVydGV4SExTTCArPSAiICAgIGZs
b2F0ICI7ICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjogdmVydGV4SExT
TCArPSAiICAgIGZsb2F0MiAiOyAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVD
MzogdmVydGV4SExTTCArPSAiICAgIGZsb2F0MyAiOyAgIGJyZWFrOworICAgICAgICAgIGNhc2Ug
R0xfRkxPQVRfVkVDNDogdmVydGV4SExTTCArPSAiICAgIGZsb2F0NCAiOyAgIGJyZWFrOworICAg
ICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjogdmVydGV4SExTTCArPSAiICAgIGZsb2F0MngyICI7
IGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzogdmVydGV4SExTTCArPSAiICAg
IGZsb2F0M3gzICI7IGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNDogdmVydGV4
SExTTCArPSAiICAgIGZsb2F0NHg0ICI7IGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6ICBVTlJF
QUNIQUJMRSgpOworICAgICAgICB9CisKKyAgICAgICAgdmVydGV4SExTTCArPSBkZWNvcmF0ZUF0
dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUpICsgIiA6IFRFWENPT1JEIiArIHN0cihzZW1hbnRpY0lu
ZGV4KSArICI7XG4iOworCisgICAgICAgIHNlbWFudGljSW5kZXggKz0gVmFyaWFibGVSb3dDb3Vu
dChhdHRyaWJ1dGUtPnR5cGUpOworICAgIH0KKworICAgIHZlcnRleEhMU0wgKz0gIn07XG4iCisg
ICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAic3RydWN0IFZTX09VVFBV
VFxuIgorICAgICAgICAgICAgICAgICAgIntcbiI7CisKKyAgICBpZiAoc2hhZGVyTW9kZWwgPCA0
KQorICAgIHsKKyAgICAgICAgdmVydGV4SExTTCArPSAiICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6
ICIgKyBwb3NpdGlvblNlbWFudGljICsgIjtcbiI7CisgICAgfQorCisgICAgZm9yIChpbnQgciA9
IDA7IHIgPCByZWdpc3RlcnM7IHIrKykKKyAgICB7CisgICAgICAgIGludCByZWdpc3RlclNpemUg
PSBwYWNraW5nW3JdWzNdID8gNCA6IChwYWNraW5nW3JdWzJdID8gMyA6IChwYWNraW5nW3JdWzFd
ID8gMiA6IDEpKTsKKworICAgICAgICB2ZXJ0ZXhITFNMICs9ICIgICAgZmxvYXQiICsgc3RyKHJl
Z2lzdGVyU2l6ZSkgKyAiIHYiICsgc3RyKHIpICsgIiA6ICIgKyB2YXJ5aW5nU2VtYW50aWMgKyBz
dHIocikgKyAiO1xuIjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJh
Z0Nvb3JkKQorICAgIHsKKyAgICAgICAgdmVydGV4SExTTCArPSAiICAgIGZsb2F0NCBnbF9GcmFn
Q29vcmQgOiAiICsgZnJhZ0Nvb3JkU2VtYW50aWMgKyAiO1xuIjsKKyAgICB9CisKKyAgICBpZiAo
dmVydGV4U2hhZGVyLT5tVXNlc1BvaW50U2l6ZSAmJiBzaGFkZXJNb2RlbCA+PSAzKQorICAgIHsK
KyAgICAgICAgdmVydGV4SExTTCArPSAiICAgIGZsb2F0IGdsX1BvaW50U2l6ZSA6IFBTSVpFO1xu
IjsKKyAgICB9CisKKyAgICBpZiAoc2hhZGVyTW9kZWwgPj0gNCkKKyAgICB7CisgICAgICAgIHZl
cnRleEhMU0wgKz0gIiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiAiICsgcG9zaXRpb25TZW1hbnRp
YyArICI7XG4iOworICAgIH0KKworICAgIHZlcnRleEhMU0wgKz0gIn07XG4iCisgICAgICAgICAg
ICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAiVlNfT1VUUFVUIG1haW4oVlNfSU5QVVQg
aW5wdXQpXG4iCisgICAgICAgICAgICAgICAgICAie1xuIjsKKworICAgIGZvciAoQXR0cmlidXRl
QXJyYXk6Oml0ZXJhdG9yIGF0dHJpYnV0ZSA9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuYmVn
aW4oKTsgYXR0cmlidXRlICE9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJp
YnV0ZSsrKQorICAgIHsKKyAgICAgICAgdmVydGV4SExTTCArPSAiICAgICIgKyBkZWNvcmF0ZUF0
dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUpICsgIiA9ICI7CisKKyAgICAgICAgaWYgKFZhcmlhYmxl
Um93Q291bnQoYXR0cmlidXRlLT50eXBlKSA+IDEpICAgLy8gTWF0cml4CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZlcnRleEhMU0wgKz0gInRyYW5zcG9zZSI7CisgICAgICAgIH0KKworICAgICAg
ICB2ZXJ0ZXhITFNMICs9ICIoaW5wdXQuIiArIGRlY29yYXRlQXR0cmlidXRlKGF0dHJpYnV0ZS0+
bmFtZSkgKyAiKTtcbiI7CisgICAgfQorCisgICAgaWYgKHNoYWRlck1vZGVsID49IDQpCisgICAg
eworICAgICAgICB2ZXJ0ZXhITFNMICs9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAg
IGdsX21haW4oKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgIiAgICBWU19PVVRQVVQgb3V0cHV0O1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICIgICAgb3V0cHV0LmdsX1Bvc2l0aW9uLnggPSBnbF9Qb3NpdGlvbi54O1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICIgICAgb3V0cHV0LmdsX1Bvc2l0aW9uLnkgPSAtZ2xfUG9zaXRpb24ueTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIG91dHB1dC5nbF9Qb3NpdGlvbi56ID0gKGds
X1Bvc2l0aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTtcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAiICAgIG91dHB1dC5nbF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udztcbiI7CisgICAg
fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHZlcnRleEhMU0wgKz0gIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICIgICAgZ2xfbWFpbigpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIFZTX09VVFBVVCBvdXRwdXQ7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgIiAgICBvdXRwdXQuZ2xfUG9zaXRpb24ueCA9IGdsX1Bvc2l0aW9u
LnggKiBkeF9WaWV3QWRqdXN0LnogKyBkeF9WaWV3QWRqdXN0LnggKiBnbF9Qb3NpdGlvbi53O1xu
IgorICAgICAgICAgICAgICAgICAgICAgICIgICAgb3V0cHV0LmdsX1Bvc2l0aW9uLnkgPSAtKGds
X1Bvc2l0aW9uLnkgKiBkeF9WaWV3QWRqdXN0LncgKyBkeF9WaWV3QWRqdXN0LnkgKiBnbF9Qb3Np
dGlvbi53KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIG91dHB1dC5nbF9Qb3NpdGlv
bi56ID0gKGdsX1Bvc2l0aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTtcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAiICAgIG91dHB1dC5nbF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udztc
biI7CisgICAgfQorCisgICAgaWYgKHZlcnRleFNoYWRlci0+bVVzZXNQb2ludFNpemUgJiYgc2hh
ZGVyTW9kZWwgPj0gMykKKyAgICB7CisgICAgICAgIHZlcnRleEhMU0wgKz0gIiAgICBvdXRwdXQu
Z2xfUG9pbnRTaXplID0gZ2xfUG9pbnRTaXplO1xuIjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21l
bnRTaGFkZXItPm1Vc2VzRnJhZ0Nvb3JkKQorICAgIHsKKyAgICAgICAgdmVydGV4SExTTCArPSAi
ICAgIG91dHB1dC5nbF9GcmFnQ29vcmQgPSBnbF9Qb3NpdGlvbjtcbiI7CisgICAgfQorCisgICAg
Zm9yIChWYXJ5aW5nTGlzdDo6aXRlcmF0b3IgdmFyeWluZyA9IHZlcnRleFNoYWRlci0+bVZhcnlp
bmdzLmJlZ2luKCk7IHZhcnlpbmcgIT0gdmVydGV4U2hhZGVyLT5tVmFyeWluZ3MuZW5kKCk7IHZh
cnlpbmcrKykKKyAgICB7CisgICAgICAgIGlmICh2YXJ5aW5nLT5yZWcgPj0gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YXJ5aW5nLT5zaXplOyBpKyspCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50IHJvd3MgPSBWYXJpYWJsZVJvd0NvdW50
KHZhcnlpbmctPnR5cGUpOworCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBy
b3dzOyBqKyspCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpbnQgciA9
IHZhcnlpbmctPnJlZyArIGkgKiByb3dzICsgajsKKyAgICAgICAgICAgICAgICAgICAgdmVydGV4
SExTTCArPSAiICAgIG91dHB1dC52IiArIHN0cihyKTsKKworICAgICAgICAgICAgICAgICAgICBi
b29sIHNoYXJlZFJlZ2lzdGVyID0gZmFsc2U7ICAgLy8gUmVnaXN0ZXIgdXNlZCBieSBtdWx0aXBs
ZSB2YXJ5aW5ncworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCA0OyB4KyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChwYWNraW5nW3JdW3hdICYmIHBhY2tpbmdbcl1beF0gIT0gcGFj
a2luZ1tyXVswXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaGFyZWRSZWdpc3RlciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZihzaGFyZWRSZWdpc3RlcikKKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4SExTTCArPSAiLiI7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgNDsgeCsrKQor
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChwYWNraW5nW3JdW3hdID09ICYqdmFyeWluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCh4KQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSAwOiB2ZXJ0ZXhITFNMICs9ICJ4IjsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxOiB2ZXJ0ZXhITFNMICs9ICJ5IjsgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiB2ZXJ0ZXhITFNMICs9ICJ6IjsgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiB2ZXJ0ZXhITFNM
ICs9ICJ3IjsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhITFNMICs9ICIg
PSAiICsgdmFyeWluZy0+bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgIGlmICh2YXJ5aW5nLT5hcnJheSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdmVydGV4SExTTCArPSAiWyIgKyBzdHIoaSkgKyAiXSI7CisgICAg
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAocm93cyA+IDEpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEhMU0wg
Kz0gIlsiICsgc3RyKGopICsgIl0iOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhITFNMICs9ICI7XG4iOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZl
cnRleEhMU0wgKz0gIlxuIgorICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gb3V0cHV0O1xu
IgorICAgICAgICAgICAgICAgICAgIn1cbiI7CisKKyAgICBwaXhlbEhMU0wgKz0gInN0cnVjdCBQ
U19JTlBVVFxuIgorICAgICAgICAgICAgICAgICAie1xuIjsKKyAgICAKKyAgICBmb3IgKFZhcnlp
bmdMaXN0OjppdGVyYXRvciB2YXJ5aW5nID0gZnJhZ21lbnRTaGFkZXItPm1WYXJ5aW5ncy5iZWdp
bigpOyB2YXJ5aW5nICE9IGZyYWdtZW50U2hhZGVyLT5tVmFyeWluZ3MuZW5kKCk7IHZhcnlpbmcr
KykKKyAgICB7CisgICAgICAgIGlmICh2YXJ5aW5nLT5yZWcgPj0gMCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YXJ5aW5nLT5zaXplOyBpKyspCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgaW50IHJvd3MgPSBWYXJpYWJsZVJvd0NvdW50KHZhcnlp
bmctPnR5cGUpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcm93czsgaisr
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgbiA9
IHN0cih2YXJ5aW5nLT5yZWcgKyBpICogcm93cyArIGopOworICAgICAgICAgICAgICAgICAgICBw
aXhlbEhMU0wgKz0gIiAgICBmbG9hdCIgKyBzdHIoVmFyaWFibGVDb2x1bW5Db3VudCh2YXJ5aW5n
LT50eXBlKSkgKyAiIHYiICsgbiArICIgOiAiICsgdmFyeWluZ1NlbWFudGljICsgbiArICI7XG4i
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBl
bHNlIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNl
c0ZyYWdDb29yZCkKKyAgICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0NCBnbF9G
cmFnQ29vcmQgOiAiICsgZnJhZ0Nvb3JkU2VtYW50aWMgKyAiO1xuIjsKKyAgICB9CisgICAgICAg
IAorICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNQb2ludENvb3JkICYmIHNoYWRlck1vZGVs
ID49IDMpCisgICAgeworICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBmbG9hdDIgZ2xfUG9pbnRD
b29yZCA6ICIgKyBwb2ludENvb3JkU2VtYW50aWMgKyAiO1xuIjsKKyAgICB9CisKKyAgICAvLyBN
dXN0IGNvbnN1bWUgdGhlIFBTSVpFIGVsZW1lbnQgaWYgdGhlIGdlb21ldHJ5IHNoYWRlciBpcyBu
b3QgYWN0aXZlCisgICAgLy8gV2Ugd29uJ3Qga25vdyBpZiB3ZSB1c2UgYSBHUyB1bnRpbCB3ZSBk
cmF3CisgICAgaWYgKHZlcnRleFNoYWRlci0+bVVzZXNQb2ludFNpemUgJiYgc2hhZGVyTW9kZWwg
Pj0gNCkKKyAgICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0IGdsX1BvaW50U2l6
ZSA6IFBTSVpFO1xuIjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJh
Z0Nvb3JkKQorICAgIHsKKyAgICAgICAgaWYgKHNoYWRlck1vZGVsID49IDQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0NCBkeF9WUG9zIDogU1ZfUG9zaXRp
b247XG4iOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNoYWRlck1vZGVsID49IDMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0MiBkeF9WUG9zIDog
VlBPUztcbiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwaXhlbEhMU0wgKz0gIn07XG4iCisg
ICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgInN0cnVjdCBQU19PVVRQVVRc
biIKKyAgICAgICAgICAgICAgICAgIntcbiI7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCByZW5k
ZXJUYXJnZXRJbmRleCA9IDA7IHJlbmRlclRhcmdldEluZGV4IDwgbnVtUmVuZGVyVGFyZ2V0czsg
cmVuZGVyVGFyZ2V0SW5kZXgrKykKKyAgICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZs
b2F0NCBnbF9Db2xvciIgKyBzdHIocmVuZGVyVGFyZ2V0SW5kZXgpICsgIiA6ICIgKyB0YXJnZXRT
ZW1hbnRpYyArIHN0cihyZW5kZXJUYXJnZXRJbmRleCkgKyAiO1xuIjsKKyAgICB9CisKKyAgICBp
ZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0RlcHRoKQorICAgIHsKKyAgICAgICAgcGl4ZWxI
TFNMICs9ICIgICAgZmxvYXQgZ2xfRGVwdGggOiAiICsgZGVwdGhTZW1hbnRpYyArICI7XG4iOwor
ICAgIH0KKworICAgIHBpeGVsSExTTCArPSAifTtcbiIKKyAgICAgICAgICAgICAgICAgIlxuIjsK
KworICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNGcm9udEZhY2luZykKKyAgICB7CisgICAg
ICAgIGlmIChzaGFkZXJNb2RlbCA+PSA0KQorICAgICAgICB7CisgICAgICAgICAgICBwaXhlbEhM
U0wgKz0gIlBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0LCBib29sIGlzRnJvbnRGYWNlIDog
U1ZfSXNGcm9udEZhY2UpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiI7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBwaXhlbEhMU0wgKz0g
IlBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0LCBmbG9hdCB2RmFjZSA6IFZGQUNFKVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOworICAgICAgICB9CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiUFNfT1VUUFVUIG1haW4oUFNfSU5QVVQg
aW5wdXQpXG4iCisgICAgICAgICAgICAgICAgICAgICAie1xuIjsKKyAgICB9CisKKyAgICBpZiAo
ZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nvb3JkKQorICAgIHsKKyAgICAgICAgcGl4ZWxITFNM
ICs9ICIgICAgZmxvYXQgcmh3ID0gMS4wIC8gaW5wdXQuZ2xfRnJhZ0Nvb3JkLnc7XG4iOworICAg
ICAgICAKKyAgICAgICAgaWYgKHNoYWRlck1vZGVsID49IDQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHBpeGVsSExTTCArPSAiICAgIGdsX0ZyYWdDb29yZC54ID0gaW5wdXQuZHhfVlBvcy54O1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xfRnJhZ0Nvb3JkLnkgPSBpbnB1dC5k
eF9WUG9zLnk7XG4iOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNoYWRlck1vZGVsID49
IDMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGdsX0ZyYWdDb29y
ZC54ID0gaW5wdXQuZHhfVlBvcy54ICsgMC41O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgZ2xfRnJhZ0Nvb3JkLnkgPSBpbnB1dC5keF9WUG9zLnkgKyAwLjU7XG4iOworICAgICAg
ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgLy8gZHhfVmlld0Nvb3Jk
cyBjb250YWlucyB0aGUgdmlld3BvcnQgd2lkdGgvMiwgaGVpZ2h0LzIsIGNlbnRlci54IGFuZCBj
ZW50ZXIueS4gU2VlIFJlbmRlcmVyOjpzZXRWaWV3cG9ydCgpCisgICAgICAgICAgICBwaXhlbEhM
U0wgKz0gIiAgICBnbF9GcmFnQ29vcmQueCA9IChpbnB1dC5nbF9GcmFnQ29vcmQueCAqIHJodykg
KiBkeF9WaWV3Q29vcmRzLnggKyBkeF9WaWV3Q29vcmRzLno7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICBnbF9GcmFnQ29vcmQueSA9IChpbnB1dC5nbF9GcmFnQ29vcmQueSAqIHJo
dykgKiBkeF9WaWV3Q29vcmRzLnkgKyBkeF9WaWV3Q29vcmRzLnc7XG4iOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBnbF9GcmFnQ29vcmQueiA9IChpbnB1
dC5nbF9GcmFnQ29vcmQueiAqIHJodykgKiBkeF9EZXB0aEZyb250LnggKyBkeF9EZXB0aEZyb250
Lnk7XG4iCisgICAgICAgICAgICAgICAgICAgICAiICAgIGdsX0ZyYWdDb29yZC53ID0gcmh3O1xu
IjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzUG9pbnRDb29yZCAmJiBz
aGFkZXJNb2RlbCA+PSAzKQorICAgIHsKKyAgICAgICAgcGl4ZWxITFNMICs9ICIgICAgZ2xfUG9p
bnRDb29yZC54ID0gaW5wdXQuZ2xfUG9pbnRDb29yZC54O1xuIjsKKyAgICAgICAgcGl4ZWxITFNM
ICs9ICIgICAgZ2xfUG9pbnRDb29yZC55ID0gMS4wIC0gaW5wdXQuZ2xfUG9pbnRDb29yZC55O1xu
IjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJvbnRGYWNpbmcpCisg
ICAgeworICAgICAgICBpZiAoc2hhZGVyTW9kZWwgPD0gMykKKyAgICAgICAgeworICAgICAgICAg
ICAgcGl4ZWxITFNMICs9ICIgICAgZ2xfRnJvbnRGYWNpbmcgPSAodkZhY2UgKiBkeF9EZXB0aEZy
b250LnogPj0gMC4wKTtcbiI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBnbF9Gcm9udEZhY2luZyA9IGlzRnJvbnRGYWNl
O1xuIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoVmFyeWluZ0xpc3Q6Oml0ZXJhdG9y
IHZhcnlpbmcgPSBmcmFnbWVudFNoYWRlci0+bVZhcnlpbmdzLmJlZ2luKCk7IHZhcnlpbmcgIT0g
ZnJhZ21lbnRTaGFkZXItPm1WYXJ5aW5ncy5lbmQoKTsgdmFyeWluZysrKQorICAgIHsKKyAgICAg
ICAgaWYgKHZhcnlpbmctPnJlZyA+PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHZhcnlpbmctPnNpemU7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpbnQgcm93cyA9IFZhcmlhYmxlUm93Q291bnQodmFyeWluZy0+dHlwZSk7CisgICAg
ICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCByb3dzOyBqKyspCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBuID0gc3RyKHZhcnlpbmctPnJl
ZyArIGkgKiByb3dzICsgaik7CisgICAgICAgICAgICAgICAgICAgIHBpeGVsSExTTCArPSAiICAg
ICIgKyB2YXJ5aW5nLT5uYW1lOworCisgICAgICAgICAgICAgICAgICAgIGlmICh2YXJ5aW5nLT5h
cnJheSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcGl4
ZWxITFNMICs9ICJbIiArIHN0cihpKSArICJdIjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgIGlmIChyb3dzID4gMSkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxITFNMICs9ICJbIiArIHN0cihqKSArICJdIjsK
KyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoVmFy
aWFibGVDb2x1bW5Db3VudCh2YXJ5aW5nLT50eXBlKSkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogcGl4ZWxITFNMICs9ICIgPSBpbnB1dC52IiAr
IG4gKyAiLng7XG4iOyAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjogcGl4
ZWxITFNMICs9ICIgPSBpbnB1dC52IiArIG4gKyAiLnh5O1xuIjsgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMzogcGl4ZWxITFNMICs9ICIgPSBpbnB1dC52IiArIG4gKyAiLnh5
ejtcbiI7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogcGl4ZWxITFNMICs9
ICIgPSBpbnB1dC52IiArIG4gKyAiO1xuIjsgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBVTlJF
QUNIQUJMRSgpOworICAgIH0KKworICAgIHBpeGVsSExTTCArPSAiXG4iCisgICAgICAgICAgICAg
ICAgICIgICAgZ2xfbWFpbigpO1xuIgorICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAg
ICAgICAgICIgICAgUFNfT1VUUFVUIG91dHB1dDtcbiI7CisKKyAgICBmb3IgKHVuc2lnbmVkIGlu
dCByZW5kZXJUYXJnZXRJbmRleCA9IDA7IHJlbmRlclRhcmdldEluZGV4IDwgbnVtUmVuZGVyVGFy
Z2V0czsgcmVuZGVyVGFyZ2V0SW5kZXgrKykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBz
b3VyY2VDb2xvckluZGV4ID0gYnJvYWRjYXN0ID8gMCA6IHJlbmRlclRhcmdldEluZGV4OworCisg
ICAgICAgIHBpeGVsSExTTCArPSAiICAgIG91dHB1dC5nbF9Db2xvciIgKyBzdHIocmVuZGVyVGFy
Z2V0SW5kZXgpICsgIiA9IGdsX0NvbG9yWyIgKyBzdHIoc291cmNlQ29sb3JJbmRleCkgKyAiXTtc
biI7CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0ZyYWdEZXB0aCkKKyAg
ICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIG91dHB1dC5nbF9EZXB0aCA9IGdsX0RlcHRo
O1xuIjsKKyAgICB9CisKKyAgICBwaXhlbEhMU0wgKz0gIlxuIgorICAgICAgICAgICAgICAgICAi
ICAgIHJldHVybiBvdXRwdXQ7XG4iCisgICAgICAgICAgICAgICAgICJ9XG4iOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6bG9hZChJbmZvTG9nICZpbmZvTG9n
LCBjb25zdCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKQoreworICAgIEJpbmFyeUlucHV0
U3RyZWFtIHN0cmVhbShiaW5hcnksIGxlbmd0aCk7CisKKyAgICBpbnQgZm9ybWF0ID0gMDsKKyAg
ICBzdHJlYW0ucmVhZCgmZm9ybWF0KTsKKyAgICBpZiAoZm9ybWF0ICE9IEdMX1BST0dSQU1fQklO
QVJZX0FOR0xFKQorICAgIHsKKyAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkludmFsaWQgcHJvZ3Jh
bSBiaW5hcnkgZm9ybWF0LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aW50IHZlcnNpb24gPSAwOworICAgIHN0cmVhbS5yZWFkKCZ2ZXJzaW9uKTsKKyAgICBpZiAodmVy
c2lvbiAhPSBWRVJTSU9OX0RXT1JEKQorICAgIHsKKyAgICAgICAgaW5mb0xvZy5hcHBlbmQoIklu
dmFsaWQgcHJvZ3JhbSBiaW5hcnkgdmVyc2lvbi4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGludCBjb21waWxlRmxhZ3MgPSAwOworICAgIHN0cmVhbS5yZWFkKCZjb21w
aWxlRmxhZ3MpOworICAgIGlmIChjb21waWxlRmxhZ3MgIT0gQU5HTEVfQ09NUElMRV9PUFRJTUla
QVRJT05fTEVWRUwpCisgICAgeworICAgICAgICBpbmZvTG9nLmFwcGVuZCgiTWlzbWF0Y2hlZCBj
b21waWxhdGlvbiBmbGFncy4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyArK2kpCisgICAgeworICAg
ICAgICBzdHJlYW0ucmVhZCgmbUxpbmtlZEF0dHJpYnV0ZVtpXS50eXBlKTsKKyAgICAgICAgc3Rk
OjpzdHJpbmcgbmFtZTsKKyAgICAgICAgc3RyZWFtLnJlYWQoJm5hbWUpOworICAgICAgICBtTGlu
a2VkQXR0cmlidXRlW2ldLm5hbWUgPSBuYW1lOworICAgICAgICBzdHJlYW0ucmVhZCgmbVNlbWFu
dGljSW5kZXhbaV0pOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7ICsraSkKKyAgICB7CisgICAgICAgIHN0cmVhbS5yZWFk
KCZtU2FtcGxlcnNQU1tpXS5hY3RpdmUpOworICAgICAgICBzdHJlYW0ucmVhZCgmbVNhbXBsZXJz
UFNbaV0ubG9naWNhbFRleHR1cmVVbml0KTsKKyAgICAgICAgCisgICAgICAgIGludCB0ZXh0dXJl
VHlwZTsKKyAgICAgICAgc3RyZWFtLnJlYWQoJnRleHR1cmVUeXBlKTsKKyAgICAgICAgbVNhbXBs
ZXJzUFNbaV0udGV4dHVyZVR5cGUgPSAoVGV4dHVyZVR5cGUpIHRleHR1cmVUeXBlOworICAgIH0K
KworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgSU1QTEVNRU5UQVRJT05fTUFYX1ZF
UlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOyArK2kpCisgICAgeworICAgICAgICBzdHJlYW0ucmVh
ZCgmbVNhbXBsZXJzVlNbaV0uYWN0aXZlKTsKKyAgICAgICAgc3RyZWFtLnJlYWQoJm1TYW1wbGVy
c1ZTW2ldLmxvZ2ljYWxUZXh0dXJlVW5pdCk7CisgICAgICAgIAorICAgICAgICBpbnQgdGV4dHVy
ZVR5cGU7CisgICAgICAgIHN0cmVhbS5yZWFkKCZ0ZXh0dXJlVHlwZSk7CisgICAgICAgIG1TYW1w
bGVyc1ZTW2ldLnRleHR1cmVUeXBlID0gKFRleHR1cmVUeXBlKSB0ZXh0dXJlVHlwZTsKKyAgICB9
CisKKyAgICBzdHJlYW0ucmVhZCgmbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2UpOworICAgIHN0cmVh
bS5yZWFkKCZtVXNlZFBpeGVsU2FtcGxlclJhbmdlKTsKKyAgICBzdHJlYW0ucmVhZCgmbVVzZXNQ
b2ludFNpemUpOworCisgICAgc2l6ZV90IHNpemU7CisgICAgc3RyZWFtLnJlYWQoJnNpemUpOwor
ICAgIGlmIChzdHJlYW0uZXJyb3IoKSkKKyAgICB7CisgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJJ
bnZhbGlkIHByb2dyYW0gYmluYXJ5LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgbVVuaWZvcm1zLnJlc2l6ZShzaXplKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IHNpemU7ICsraSkKKyAgICB7CisgICAgICAgIEdMZW51bSB0eXBlOworICAgICAgICBH
TGVudW0gcHJlY2lzaW9uOworICAgICAgICBzdGQ6OnN0cmluZyBuYW1lOworICAgICAgICB1bnNp
Z25lZCBpbnQgYXJyYXlTaXplOworCisgICAgICAgIHN0cmVhbS5yZWFkKCZ0eXBlKTsKKyAgICAg
ICAgc3RyZWFtLnJlYWQoJnByZWNpc2lvbik7CisgICAgICAgIHN0cmVhbS5yZWFkKCZuYW1lKTsK
KyAgICAgICAgc3RyZWFtLnJlYWQoJmFycmF5U2l6ZSk7CisKKyAgICAgICAgbVVuaWZvcm1zW2ld
ID0gbmV3IFVuaWZvcm0odHlwZSwgcHJlY2lzaW9uLCBuYW1lLCBhcnJheVNpemUpOworICAgICAg
ICAKKyAgICAgICAgc3RyZWFtLnJlYWQoJm1Vbmlmb3Jtc1tpXS0+cHNSZWdpc3RlckluZGV4KTsK
KyAgICAgICAgc3RyZWFtLnJlYWQoJm1Vbmlmb3Jtc1tpXS0+dnNSZWdpc3RlckluZGV4KTsKKyAg
ICAgICAgc3RyZWFtLnJlYWQoJm1Vbmlmb3Jtc1tpXS0+cmVnaXN0ZXJDb3VudCk7CisgICAgfQor
CisgICAgc3RyZWFtLnJlYWQoJnNpemUpOworICAgIGlmIChzdHJlYW0uZXJyb3IoKSkKKyAgICB7
CisgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJJbnZhbGlkIHByb2dyYW0gYmluYXJ5LiIpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbVVuaWZvcm1JbmRleC5yZXNpemUoc2l6
ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgewor
ICAgICAgICBzdHJlYW0ucmVhZCgmbVVuaWZvcm1JbmRleFtpXS5uYW1lKTsKKyAgICAgICAgc3Ry
ZWFtLnJlYWQoJm1Vbmlmb3JtSW5kZXhbaV0uZWxlbWVudCk7CisgICAgICAgIHN0cmVhbS5yZWFk
KCZtVW5pZm9ybUluZGV4W2ldLmluZGV4KTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbnQgcGl4
ZWxTaGFkZXJTaXplOworICAgIHN0cmVhbS5yZWFkKCZwaXhlbFNoYWRlclNpemUpOworCisgICAg
dW5zaWduZWQgaW50IHZlcnRleFNoYWRlclNpemU7CisgICAgc3RyZWFtLnJlYWQoJnZlcnRleFNo
YWRlclNpemUpOworCisgICAgdW5zaWduZWQgaW50IGdlb21ldHJ5U2hhZGVyU2l6ZTsKKyAgICBz
dHJlYW0ucmVhZCgmZ2VvbWV0cnlTaGFkZXJTaXplKTsKKworICAgIGNvbnN0IGNoYXIgKnB0ciA9
IChjb25zdCBjaGFyKikgYmluYXJ5ICsgc3RyZWFtLm9mZnNldCgpOworCisgICAgY29uc3QgR1VJ
RCAqYmluYXJ5SWRlbnRpZmllciA9IChjb25zdCBHVUlEICopIHB0cjsKKyAgICBwdHIgKz0gc2l6
ZW9mKEdVSUQpOworCisgICAgR1VJRCBpZGVudGlmaWVyID0gbVJlbmRlcmVyLT5nZXRBZGFwdGVy
SWRlbnRpZmllcigpOworICAgIGlmIChtZW1jbXAoJmlkZW50aWZpZXIsIGJpbmFyeUlkZW50aWZp
ZXIsIHNpemVvZihHVUlEKSkgIT0gMCkKKyAgICB7CisgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJJ
bnZhbGlkIHByb2dyYW0gYmluYXJ5LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgY29uc3QgY2hhciAqcGl4ZWxTaGFkZXJGdW5jdGlvbiA9IHB0cjsKKyAgICBwdHIgKz0g
cGl4ZWxTaGFkZXJTaXplOworCisgICAgY29uc3QgY2hhciAqdmVydGV4U2hhZGVyRnVuY3Rpb24g
PSBwdHI7CisgICAgcHRyICs9IHZlcnRleFNoYWRlclNpemU7CisKKyAgICBjb25zdCBjaGFyICpn
ZW9tZXRyeVNoYWRlckZ1bmN0aW9uID0gZ2VvbWV0cnlTaGFkZXJTaXplID4gMCA/IHB0ciA6IE5V
TEw7CisgICAgcHRyICs9IGdlb21ldHJ5U2hhZGVyU2l6ZTsKKworICAgIG1QaXhlbEV4ZWN1dGFi
bGUgPSBtUmVuZGVyZXItPmxvYWRFeGVjdXRhYmxlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRFdP
UkQqPihwaXhlbFNoYWRlckZ1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwaXhlbFNoYWRlclNpemUsIHJ4OjpTSEFERVJfUElYRUwpOwor
ICAgIGlmICghbVBpeGVsRXhlY3V0YWJsZSkKKyAgICB7CisgICAgICAgIGluZm9Mb2cuYXBwZW5k
KCJDb3VsZCBub3QgY3JlYXRlIHBpeGVsIHNoYWRlci4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gbVJlbmRlcmVyLT5sb2FkRXhlY3V0
YWJsZShyZWludGVycHJldF9jYXN0PGNvbnN0IERXT1JEKj4odmVydGV4U2hhZGVyRnVuY3Rpb24p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0
ZXhTaGFkZXJTaXplLCByeDo6U0hBREVSX1ZFUlRFWCk7CisgICAgaWYgKCFtVmVydGV4RXhlY3V0
YWJsZSkKKyAgICB7CisgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJDb3VsZCBub3QgY3JlYXRlIHZl
cnRleCBzaGFkZXIuIik7CisgICAgICAgIGRlbGV0ZSBtUGl4ZWxFeGVjdXRhYmxlOworICAgICAg
ICBtUGl4ZWxFeGVjdXRhYmxlID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmIChnZW9tZXRyeVNoYWRlckZ1bmN0aW9uICE9IE5VTEwgJiYgZ2VvbWV0cnlTaGFk
ZXJTaXplID4gMCkKKyAgICB7CisgICAgICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgPSBtUmVuZGVy
ZXItPmxvYWRFeGVjdXRhYmxlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRFdPUkQqPihnZW9tZXRy
eVNoYWRlckZ1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VvbWV0cnlTaGFkZXJTaXplLCByeDo6U0hBREVSX0dFT01FVFJZ
KTsKKyAgICAgICAgaWYgKCFtR2VvbWV0cnlFeGVjdXRhYmxlKQorICAgICAgICB7CisgICAgICAg
ICAgICBpbmZvTG9nLmFwcGVuZCgiQ291bGQgbm90IGNyZWF0ZSBnZW9tZXRyeSBzaGFkZXIuIik7
CisgICAgICAgICAgICBkZWxldGUgbVBpeGVsRXhlY3V0YWJsZTsKKyAgICAgICAgICAgIG1QaXhl
bEV4ZWN1dGFibGUgPSBOVUxMOworICAgICAgICAgICAgZGVsZXRlIG1WZXJ0ZXhFeGVjdXRhYmxl
OworICAgICAgICAgICAgbVZlcnRleEV4ZWN1dGFibGUgPSBOVUxMOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1H
ZW9tZXRyeUV4ZWN1dGFibGUgPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFByb2dyYW1CaW5hcnk6OnNhdmUodm9pZCogYmluYXJ5LCBHTHNpemVpIGJ1ZlNpemUs
IEdMc2l6ZWkgKmxlbmd0aCkKK3sKKyAgICBCaW5hcnlPdXRwdXRTdHJlYW0gc3RyZWFtOworCisg
ICAgc3RyZWFtLndyaXRlKEdMX1BST0dSQU1fQklOQVJZX0FOR0xFKTsKKyAgICBzdHJlYW0ud3Jp
dGUoVkVSU0lPTl9EV09SRCk7CisgICAgc3RyZWFtLndyaXRlKEFOR0xFX0NPTVBJTEVfT1BUSU1J
WkFUSU9OX0xFVkVMKTsKKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgTUFYX1ZF
UlRFWF9BVFRSSUJTOyArK2kpCisgICAgeworICAgICAgICBzdHJlYW0ud3JpdGUobUxpbmtlZEF0
dHJpYnV0ZVtpXS50eXBlKTsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1MaW5rZWRBdHRyaWJ1dGVb
aV0ubmFtZSk7CisgICAgICAgIHN0cmVhbS53cml0ZShtU2VtYW50aWNJbmRleFtpXSk7CisgICAg
fQorCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBNQVhfVEVYVFVSRV9JTUFHRV9V
TklUUzsgKytpKQorICAgIHsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1TYW1wbGVyc1BTW2ldLmFj
dGl2ZSk7CisgICAgICAgIHN0cmVhbS53cml0ZShtU2FtcGxlcnNQU1tpXS5sb2dpY2FsVGV4dHVy
ZVVuaXQpOworICAgICAgICBzdHJlYW0ud3JpdGUoKGludCkgbVNhbXBsZXJzUFNbaV0udGV4dHVy
ZVR5cGUpOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgSU1QTEVN
RU5UQVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOyArK2kpCisgICAgeworICAg
ICAgICBzdHJlYW0ud3JpdGUobVNhbXBsZXJzVlNbaV0uYWN0aXZlKTsKKyAgICAgICAgc3RyZWFt
LndyaXRlKG1TYW1wbGVyc1ZTW2ldLmxvZ2ljYWxUZXh0dXJlVW5pdCk7CisgICAgICAgIHN0cmVh
bS53cml0ZSgoaW50KSBtU2FtcGxlcnNWU1tpXS50ZXh0dXJlVHlwZSk7CisgICAgfQorCisgICAg
c3RyZWFtLndyaXRlKG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlKTsKKyAgICBzdHJlYW0ud3JpdGUo
bVVzZWRQaXhlbFNhbXBsZXJSYW5nZSk7CisgICAgc3RyZWFtLndyaXRlKG1Vc2VzUG9pbnRTaXpl
KTsKKworICAgIHN0cmVhbS53cml0ZShtVW5pZm9ybXMuc2l6ZSgpKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IG1Vbmlmb3Jtcy5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAg
IHN0cmVhbS53cml0ZShtVW5pZm9ybXNbaV0tPnR5cGUpOworICAgICAgICBzdHJlYW0ud3JpdGUo
bVVuaWZvcm1zW2ldLT5wcmVjaXNpb24pOworICAgICAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1z
W2ldLT5uYW1lKTsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1Vbmlmb3Jtc1tpXS0+YXJyYXlTaXpl
KTsKKworICAgICAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1zW2ldLT5wc1JlZ2lzdGVySW5kZXgp
OworICAgICAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1zW2ldLT52c1JlZ2lzdGVySW5kZXgpOwor
ICAgICAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1zW2ldLT5yZWdpc3RlckNvdW50KTsKKyAgICB9
CisKKyAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1JbmRleC5zaXplKCkpOworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgbVVuaWZvcm1JbmRleC5zaXplKCk7ICsraSkKKyAgICB7Cisg
ICAgICAgIHN0cmVhbS53cml0ZShtVW5pZm9ybUluZGV4W2ldLm5hbWUpOworICAgICAgICBzdHJl
YW0ud3JpdGUobVVuaWZvcm1JbmRleFtpXS5lbGVtZW50KTsKKyAgICAgICAgc3RyZWFtLndyaXRl
KG1Vbmlmb3JtSW5kZXhbaV0uaW5kZXgpOworICAgIH0KKworICAgIFVJTlQgcGl4ZWxTaGFkZXJT
aXplID0gbVBpeGVsRXhlY3V0YWJsZS0+Z2V0TGVuZ3RoKCk7CisgICAgc3RyZWFtLndyaXRlKHBp
eGVsU2hhZGVyU2l6ZSk7CisKKyAgICBVSU5UIHZlcnRleFNoYWRlclNpemUgPSBtVmVydGV4RXhl
Y3V0YWJsZS0+Z2V0TGVuZ3RoKCk7CisgICAgc3RyZWFtLndyaXRlKHZlcnRleFNoYWRlclNpemUp
OworCisgICAgVUlOVCBnZW9tZXRyeVNoYWRlclNpemUgPSAobUdlb21ldHJ5RXhlY3V0YWJsZSAh
PSBOVUxMKSA/IG1HZW9tZXRyeUV4ZWN1dGFibGUtPmdldExlbmd0aCgpIDogMDsKKyAgICBzdHJl
YW0ud3JpdGUoZ2VvbWV0cnlTaGFkZXJTaXplKTsKKworICAgIEdVSUQgaWRlbnRpZmllciA9IG1S
ZW5kZXJlci0+Z2V0QWRhcHRlcklkZW50aWZpZXIoKTsKKworICAgIEdMc2l6ZWkgc3RyZWFtTGVu
Z3RoID0gc3RyZWFtLmxlbmd0aCgpOworICAgIGNvbnN0IHZvaWQgKnN0cmVhbURhdGEgPSBzdHJl
YW0uZGF0YSgpOworCisgICAgR0xzaXplaSB0b3RhbExlbmd0aCA9IHN0cmVhbUxlbmd0aCArIHNp
emVvZihHVUlEKSArIHBpeGVsU2hhZGVyU2l6ZSArIHZlcnRleFNoYWRlclNpemUgKyBnZW9tZXRy
eVNoYWRlclNpemU7CisgICAgaWYgKHRvdGFsTGVuZ3RoID4gYnVmU2l6ZSkKKyAgICB7CisgICAg
ICAgIGlmIChsZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAgICpsZW5ndGggPSAwOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChiaW5hcnkp
CisgICAgeworICAgICAgICBjaGFyICpwdHIgPSAoY2hhciopIGJpbmFyeTsKKworICAgICAgICBt
ZW1jcHkocHRyLCBzdHJlYW1EYXRhLCBzdHJlYW1MZW5ndGgpOworICAgICAgICBwdHIgKz0gc3Ry
ZWFtTGVuZ3RoOworCisgICAgICAgIG1lbWNweShwdHIsICZpZGVudGlmaWVyLCBzaXplb2YoR1VJ
RCkpOworICAgICAgICBwdHIgKz0gc2l6ZW9mKEdVSUQpOworCisgICAgICAgIG1lbWNweShwdHIs
IG1QaXhlbEV4ZWN1dGFibGUtPmdldEZ1bmN0aW9uKCksIHBpeGVsU2hhZGVyU2l6ZSk7CisgICAg
ICAgIHB0ciArPSBwaXhlbFNoYWRlclNpemU7CisKKyAgICAgICAgbWVtY3B5KHB0ciwgbVZlcnRl
eEV4ZWN1dGFibGUtPmdldEZ1bmN0aW9uKCksIHZlcnRleFNoYWRlclNpemUpOworICAgICAgICBw
dHIgKz0gdmVydGV4U2hhZGVyU2l6ZTsKKworICAgICAgICBpZiAobUdlb21ldHJ5RXhlY3V0YWJs
ZSAhPSBOVUxMICYmIGdlb21ldHJ5U2hhZGVyU2l6ZSA+IDApCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1lbWNweShwdHIsIG1HZW9tZXRyeUV4ZWN1dGFibGUtPmdldEZ1bmN0aW9uKCksIGdlb21l
dHJ5U2hhZGVyU2l6ZSk7CisgICAgICAgICAgICBwdHIgKz0gZ2VvbWV0cnlTaGFkZXJTaXplOwor
ICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKHB0ciAtIHRvdGFsTGVuZ3RoID09IGJpbmFyeSk7
CisgICAgfQorCisgICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICAgICpsZW5ndGggPSB0b3Rh
bExlbmd0aDsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworR0xpbnQgUHJvZ3JhbUJp
bmFyeTo6Z2V0TGVuZ3RoKCkKK3sKKyAgICBHTGludCBsZW5ndGg7CisgICAgaWYgKHNhdmUoTlVM
TCwgSU5UX01BWCwgJmxlbmd0aCkpCisgICAgeworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2Jvb2wg
UHJvZ3JhbUJpbmFyeTo6bGluayhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBBdHRyaWJ1dGVCaW5k
aW5ncyAmYXR0cmlidXRlQmluZGluZ3MsIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlciwg
VmVydGV4U2hhZGVyICp2ZXJ0ZXhTaGFkZXIpCit7CisgICAgaWYgKCFmcmFnbWVudFNoYWRlciB8
fCAhZnJhZ21lbnRTaGFkZXItPmlzQ29tcGlsZWQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBpZiAoIXZlcnRleFNoYWRlciB8fCAhdmVydGV4U2hhZGVyLT5p
c0NvbXBpbGVkKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
c3RkOjpzdHJpbmcgcGl4ZWxITFNMID0gZnJhZ21lbnRTaGFkZXItPmdldEhMU0woKTsKKyAgICBz
dGQ6OnN0cmluZyB2ZXJ0ZXhITFNMID0gdmVydGV4U2hhZGVyLT5nZXRITFNMKCk7CisKKyAgICAv
LyBNYXAgdGhlIHZhcnlpbmdzIHRvIHRoZSByZWdpc3RlciBmaWxlCisgICAgY29uc3QgVmFyeWlu
ZyAqcGFja2luZ1tJTVBMRU1FTlRBVElPTl9NQVhfVkFSWUlOR19WRUNUT1JTXVs0XSA9IHtOVUxM
fTsKKyAgICBpbnQgcmVnaXN0ZXJzID0gcGFja1ZhcnlpbmdzKGluZm9Mb2csIHBhY2tpbmcsIGZy
YWdtZW50U2hhZGVyKTsKKworICAgIGlmIChyZWdpc3RlcnMgPCAwKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbGlua1ZhcnlpbmdzKGluZm9Mb2csIHJl
Z2lzdGVycywgcGFja2luZywgcGl4ZWxITFNMLCB2ZXJ0ZXhITFNMLCBmcmFnbWVudFNoYWRlciwg
dmVydGV4U2hhZGVyKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBib29sIHN1Y2Nlc3MgPSB0cnVlOworCisgICAgaWYgKCFsaW5rQXR0cmlidXRlcyhpbmZvTG9n
LCBhdHRyaWJ1dGVCaW5kaW5ncywgZnJhZ21lbnRTaGFkZXIsIHZlcnRleFNoYWRlcikpCisgICAg
eworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFsaW5rVW5pZm9y
bXMoaW5mb0xvZywgdmVydGV4U2hhZGVyLT5nZXRVbmlmb3JtcygpLCBmcmFnbWVudFNoYWRlci0+
Z2V0VW5pZm9ybXMoKSkpCisgICAgeworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgfQor
CisgICAgLy8gc3BlY2lhbCBjYXNlIGZvciBnbF9EZXB0aFJhbmdlLCB0aGUgb25seSBidWlsdC1p
biB1bmlmb3JtIChhbHNvIGEgc3RydWN0KQorICAgIGlmICh2ZXJ0ZXhTaGFkZXItPm1Vc2VzRGVw
dGhSYW5nZSB8fCBmcmFnbWVudFNoYWRlci0+bVVzZXNEZXB0aFJhbmdlKQorICAgIHsKKyAgICAg
ICAgbVVuaWZvcm1zLnB1c2hfYmFjayhuZXcgVW5pZm9ybShHTF9GTE9BVCwgR0xfSElHSF9GTE9B
VCwgImdsX0RlcHRoUmFuZ2UubmVhciIsIDApKTsKKyAgICAgICAgbVVuaWZvcm1zLnB1c2hfYmFj
ayhuZXcgVW5pZm9ybShHTF9GTE9BVCwgR0xfSElHSF9GTE9BVCwgImdsX0RlcHRoUmFuZ2UuZmFy
IiwgMCkpOworICAgICAgICBtVW5pZm9ybXMucHVzaF9iYWNrKG5ldyBVbmlmb3JtKEdMX0ZMT0FU
LCBHTF9ISUdIX0ZMT0FULCAiZ2xfRGVwdGhSYW5nZS5kaWZmIiwgMCkpOworICAgIH0KKworICAg
IGlmIChzdWNjZXNzKQorICAgIHsKKyAgICAgICAgbVZlcnRleEV4ZWN1dGFibGUgPSBtUmVuZGVy
ZXItPmNvbXBpbGVUb0V4ZWN1dGFibGUoaW5mb0xvZywgdmVydGV4SExTTC5jX3N0cigpLCByeDo6
U0hBREVSX1ZFUlRFWCk7CisgICAgICAgIG1QaXhlbEV4ZWN1dGFibGUgPSBtUmVuZGVyZXItPmNv
bXBpbGVUb0V4ZWN1dGFibGUoaW5mb0xvZywgcGl4ZWxITFNMLmNfc3RyKCksIHJ4OjpTSEFERVJf
UElYRUwpOworCisgICAgICAgIGlmICh1c2VzR2VvbWV0cnlTaGFkZXIoKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RkOjpzdHJpbmcgZ2VvbWV0cnlITFNMID0gZ2VuZXJhdGVHZW9tZXRyeVNo
YWRlckhMU0wocmVnaXN0ZXJzLCBwYWNraW5nLCBmcmFnbWVudFNoYWRlciwgdmVydGV4U2hhZGVy
KTsKKyAgICAgICAgICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgPSBtUmVuZGVyZXItPmNvbXBpbGVU
b0V4ZWN1dGFibGUoaW5mb0xvZywgZ2VvbWV0cnlITFNMLmNfc3RyKCksIHJ4OjpTSEFERVJfR0VP
TUVUUlkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtVmVydGV4RXhlY3V0YWJsZSB8fCAh
bVBpeGVsRXhlY3V0YWJsZSB8fCAodXNlc0dlb21ldHJ5U2hhZGVyKCkgJiYgIW1HZW9tZXRyeUV4
ZWN1dGFibGUpKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiRmFpbGVk
IHRvIGNyZWF0ZSBEM0Qgc2hhZGVycy4iKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsK
KworICAgICAgICAgICAgZGVsZXRlIG1WZXJ0ZXhFeGVjdXRhYmxlOworICAgICAgICAgICAgbVZl
cnRleEV4ZWN1dGFibGUgPSBOVUxMOworICAgICAgICAgICAgZGVsZXRlIG1QaXhlbEV4ZWN1dGFi
bGU7CisgICAgICAgICAgICBtUGl4ZWxFeGVjdXRhYmxlID0gTlVMTDsKKyAgICAgICAgICAgIGRl
bGV0ZSBtR2VvbWV0cnlFeGVjdXRhYmxlOworICAgICAgICAgICAgbUdlb21ldHJ5RXhlY3V0YWJs
ZSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKwor
Ly8gRGV0ZXJtaW5lcyB0aGUgbWFwcGluZyBiZXR3ZWVuIEdMIGF0dHJpYnV0ZXMgYW5kIERpcmVj
dDNEIDkgdmVydGV4IHN0cmVhbSB1c2FnZSBpbmRpY2VzCitib29sIFByb2dyYW1CaW5hcnk6Omxp
bmtBdHRyaWJ1dGVzKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IEF0dHJpYnV0ZUJpbmRpbmdzICZh
dHRyaWJ1dGVCaW5kaW5ncywgRnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBWZXJ0ZXhT
aGFkZXIgKnZlcnRleFNoYWRlcikKK3sKKyAgICB1bnNpZ25lZCBpbnQgdXNlZExvY2F0aW9ucyA9
IDA7CisKKyAgICAvLyBMaW5rIGF0dHJpYnV0ZXMgdGhhdCBoYXZlIGEgYmluZGluZyBsb2NhdGlv
bgorICAgIGZvciAoQXR0cmlidXRlQXJyYXk6Oml0ZXJhdG9yIGF0dHJpYnV0ZSA9IHZlcnRleFNo
YWRlci0+bUF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0cmlidXRlICE9IHZlcnRleFNoYWRlci0+bUF0
dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQorICAgIHsKKyAgICAgICAgaW50IGxvY2F0aW9u
ID0gYXR0cmlidXRlQmluZGluZ3MuZ2V0QXR0cmlidXRlQmluZGluZyhhdHRyaWJ1dGUtPm5hbWUp
OworCisgICAgICAgIGlmIChsb2NhdGlvbiAhPSAtMSkgICAvLyBTZXQgYnkgZ2xCaW5kQXR0cmli
TG9jYXRpb24KKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtTGlua2VkQXR0cmlidXRlW2xv
Y2F0aW9uXS5uYW1lLmVtcHR5KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8g
TXVsdGlwbGUgYWN0aXZlIGF0dHJpYnV0ZXMgYm91bmQgdG8gdGhlIHNhbWUgbG9jYXRpb247IG5v
dCBhbiBlcnJvcgorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtTGlua2VkQXR0cmlidXRl
W2xvY2F0aW9uXSA9ICphdHRyaWJ1dGU7CisKKyAgICAgICAgICAgIGludCByb3dzID0gVmFyaWFi
bGVSb3dDb3VudChhdHRyaWJ1dGUtPnR5cGUpOworCisgICAgICAgICAgICBpZiAocm93cyArIGxv
Y2F0aW9uID4gTUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGluZm9Mb2cuYXBwZW5kKCJBY3RpdmUgYXR0cmlidXRlICglcykgYXQgbG9jYXRpb24gJWQg
aXMgdG9vIGJpZyB0byBmaXQiLCBhdHRyaWJ1dGUtPm5hbWUuY19zdHIoKSwgbG9jYXRpb24pOwor
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB1c2VkTG9jYXRpb25zIHw9IDEgPDwgKGxvY2F0aW9uICsgaSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBMaW5rIGF0dHJpYnV0ZXMgdGhhdCBk
b24ndCBoYXZlIGEgYmluZGluZyBsb2NhdGlvbgorICAgIGZvciAoQXR0cmlidXRlQXJyYXk6Oml0
ZXJhdG9yIGF0dHJpYnV0ZSA9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0
cmlidXRlICE9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQor
ICAgIHsKKyAgICAgICAgaW50IGxvY2F0aW9uID0gYXR0cmlidXRlQmluZGluZ3MuZ2V0QXR0cmli
dXRlQmluZGluZyhhdHRyaWJ1dGUtPm5hbWUpOworCisgICAgICAgIGlmIChsb2NhdGlvbiA9PSAt
MSkgICAvLyBOb3Qgc2V0IGJ5IGdsQmluZEF0dHJpYkxvY2F0aW9uCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGludCByb3dzID0gVmFyaWFibGVSb3dDb3VudChhdHRyaWJ1dGUtPnR5cGUpOworICAg
ICAgICAgICAgaW50IGF2YWlsYWJsZUluZGV4ID0gQWxsb2NhdGVGaXJzdEZyZWVCaXRzKCZ1c2Vk
TG9jYXRpb25zLCByb3dzLCBNQVhfVkVSVEVYX0FUVFJJQlMpOworCisgICAgICAgICAgICBpZiAo
YXZhaWxhYmxlSW5kZXggPT0gLTEgfHwgYXZhaWxhYmxlSW5kZXggKyByb3dzID4gTUFYX1ZFUlRF
WF9BVFRSSUJTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5k
KCJUb28gbWFueSBhY3RpdmUgYXR0cmlidXRlcyAoJXMpIiwgYXR0cmlidXRlLT5uYW1lLmNfc3Ry
KCkpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8vIEZhaWwgdG8gbGluawor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtTGlua2VkQXR0cmlidXRlW2F2YWlsYWJsZUlu
ZGV4XSA9ICphdHRyaWJ1dGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGludCBhdHRy
aWJ1dGVJbmRleCA9IDA7IGF0dHJpYnV0ZUluZGV4IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyApCisg
ICAgeworICAgICAgICBpbnQgaW5kZXggPSB2ZXJ0ZXhTaGFkZXItPmdldFNlbWFudGljSW5kZXgo
bUxpbmtlZEF0dHJpYnV0ZVthdHRyaWJ1dGVJbmRleF0ubmFtZSk7CisgICAgICAgIGludCByb3dz
ID0gc3RkOjptYXgoVmFyaWFibGVSb3dDb3VudChtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZUlu
ZGV4XS50eXBlKSwgMSk7CisKKyAgICAgICAgZm9yIChpbnQgciA9IDA7IHIgPCByb3dzOyByKysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1TZW1hbnRpY0luZGV4W2F0dHJpYnV0ZUluZGV4Kytd
ID0gaW5kZXgrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFByb2dyYW1CaW5hcnk6OmxpbmtVbmlmb3JtcyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBz
aDo6QWN0aXZlVW5pZm9ybXMgJnZlcnRleFVuaWZvcm1zLCBjb25zdCBzaDo6QWN0aXZlVW5pZm9y
bXMgJmZyYWdtZW50VW5pZm9ybXMpCit7CisgICAgZm9yIChzaDo6QWN0aXZlVW5pZm9ybXM6OmNv
bnN0X2l0ZXJhdG9yIHVuaWZvcm0gPSB2ZXJ0ZXhVbmlmb3Jtcy5iZWdpbigpOyB1bmlmb3JtICE9
IHZlcnRleFVuaWZvcm1zLmVuZCgpOyB1bmlmb3JtKyspCisgICAgeworICAgICAgICBpZiAoIWRl
ZmluZVVuaWZvcm0oR0xfVkVSVEVYX1NIQURFUiwgKnVuaWZvcm0sIGluZm9Mb2cpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBm
b3IgKHNoOjpBY3RpdmVVbmlmb3Jtczo6Y29uc3RfaXRlcmF0b3IgdW5pZm9ybSA9IGZyYWdtZW50
VW5pZm9ybXMuYmVnaW4oKTsgdW5pZm9ybSAhPSBmcmFnbWVudFVuaWZvcm1zLmVuZCgpOyB1bmlm
b3JtKyspCisgICAgeworICAgICAgICBpZiAoIWRlZmluZVVuaWZvcm0oR0xfRlJBR01FTlRfU0hB
REVSLCAqdW5pZm9ybSwgaW5mb0xvZykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBy
b2dyYW1CaW5hcnk6OmRlZmluZVVuaWZvcm0oR0xlbnVtIHNoYWRlciwgY29uc3Qgc2g6OlVuaWZv
cm0gJmNvbnN0YW50LCBJbmZvTG9nICZpbmZvTG9nKQoreworICAgIGlmIChjb25zdGFudC50eXBl
ID09IEdMX1NBTVBMRVJfMkQgfHwKKyAgICAgICAgY29uc3RhbnQudHlwZSA9PSBHTF9TQU1QTEVS
X0NVQkUpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4ID0gY29uc3Rh
bnQucmVnaXN0ZXJJbmRleDsKKyAgICAgICAgICAgIAorICAgICAgICBkbworICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoc2hhZGVyID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKHNhbXBsZXJJbmRleCA8IG1SZW5kZXJlci0+Z2V0TWF4VmVy
dGV4VGV4dHVyZUltYWdlVW5pdHMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0uYWN0aXZlID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgbVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS50ZXh0dXJlVHlwZSA9IChjb25z
dGFudC50eXBlID09IEdMX1NBTVBMRVJfQ1VCRSkgPyBURVhUVVJFX0NVQkUgOiBURVhUVVJFXzJE
OworICAgICAgICAgICAgICAgICAgICBtU2FtcGxlcnNWU1tzYW1wbGVySW5kZXhdLmxvZ2ljYWxU
ZXh0dXJlVW5pdCA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1Vc2VkVmVydGV4U2FtcGxlclJh
bmdlID0gc3RkOjptYXgoc2FtcGxlckluZGV4ICsgMSwgbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2Up
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiVmVydGV4IHNoYWRlciBz
YW1wbGVyIGNvdW50IGV4Y2VlZHMgdGhlIG1heGltdW0gdmVydGV4IHRleHR1cmUgdW5pdHMgKCVk
KS4iLCBtUmVuZGVyZXItPmdldE1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKCkpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoc2hhZGVyID09IEdMX0ZSQUdNRU5UX1NIQURFUikK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc2FtcGxlckluZGV4IDwgTUFYX1RF
WFRVUkVfSU1BR0VfVU5JVFMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBtU2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIG1TYW1wbGVyc1BTW3NhbXBsZXJJbmRleF0udGV4dHVyZVR5cGUgPSAoY29uc3RhbnQu
dHlwZSA9PSBHTF9TQU1QTEVSX0NVQkUpID8gVEVYVFVSRV9DVUJFIDogVEVYVFVSRV8yRDsKKyAg
ICAgICAgICAgICAgICAgICAgbVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS5sb2dpY2FsVGV4dHVy
ZVVuaXQgPSAwOworICAgICAgICAgICAgICAgICAgICBtVXNlZFBpeGVsU2FtcGxlclJhbmdlID0g
c3RkOjptYXgoc2FtcGxlckluZGV4ICsgMSwgbVVzZWRQaXhlbFNhbXBsZXJSYW5nZSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJQaXhlbCBzaGFkZXIgc2FtcGxlciBj
b3VudCBleGNlZWRzIE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTICglZCkuIiwgTUFYX1RFWFRVUkVf
SU1BR0VfVU5JVFMpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgp
OworCisgICAgICAgICAgICBzYW1wbGVySW5kZXgrKzsKKyAgICAgICAgfQorICAgICAgICB3aGls
ZSAoc2FtcGxlckluZGV4IDwgY29uc3RhbnQucmVnaXN0ZXJJbmRleCArIGNvbnN0YW50LmFycmF5
U2l6ZSk7CisgICAgfQorCisgICAgVW5pZm9ybSAqdW5pZm9ybSA9IE5VTEw7CisgICAgR0xpbnQg
bG9jYXRpb24gPSBnZXRVbmlmb3JtTG9jYXRpb24oY29uc3RhbnQubmFtZSk7CisKKyAgICBpZiAo
bG9jYXRpb24gPj0gMCkgICAvLyBQcmV2aW91c2x5IGRlZmluZWQsIHR5cGUgYW5kIHByZWNpc2lv
biBtdXN0IG1hdGNoCisgICAgeworICAgICAgICB1bmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3Jt
SW5kZXhbbG9jYXRpb25dLmluZGV4XTsKKworICAgICAgICBpZiAodW5pZm9ybS0+dHlwZSAhPSBj
b25zdGFudC50eXBlKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiVHlw
ZXMgZm9yIHVuaWZvcm0gJXMgZG8gbm90IG1hdGNoIGJldHdlZW4gdGhlIHZlcnRleCBhbmQgZnJh
Z21lbnQgc2hhZGVyIiwgdW5pZm9ybS0+bmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh1bmlmb3JtLT5wcmVjaXNpb24gIT0g
Y29uc3RhbnQucHJlY2lzaW9uKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nLmFwcGVu
ZCgiUHJlY2lzaW9ucyBmb3IgdW5pZm9ybSAlcyBkbyBub3QgbWF0Y2ggYmV0d2VlbiB0aGUgdmVy
dGV4IGFuZCBmcmFnbWVudCBzaGFkZXIiLCB1bmlmb3JtLT5uYW1lLmNfc3RyKCkpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIHVuaWZvcm0gPSBuZXcgVW5pZm9ybShjb25zdGFudC50eXBlLCBjb25zdGFudC5wcmVj
aXNpb24sIGNvbnN0YW50Lm5hbWUsIGNvbnN0YW50LmFycmF5U2l6ZSk7CisgICAgfQorCisgICAg
aWYgKCF1bmlmb3JtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmIChzaGFkZXIgPT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAgdW5pZm9y
bS0+cHNSZWdpc3RlckluZGV4ID0gY29uc3RhbnQucmVnaXN0ZXJJbmRleDsKKyAgICB9CisgICAg
ZWxzZSBpZiAoc2hhZGVyID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgeworICAgICAgICB1bmlm
b3JtLT52c1JlZ2lzdGVySW5kZXggPSBjb25zdGFudC5yZWdpc3RlckluZGV4OworICAgIH0KKyAg
ICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICBpZiAobG9jYXRpb24gPj0gMCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB1bmlmb3JtLT50eXBlID09IGNvbnN0YW50LnR5cGU7CisgICAgfQorCisg
ICAgbVVuaWZvcm1zLnB1c2hfYmFjayh1bmlmb3JtKTsKKyAgICB1bnNpZ25lZCBpbnQgdW5pZm9y
bUluZGV4ID0gbVVuaWZvcm1zLnNpemUoKSAtIDE7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHVuaWZvcm0tPmVsZW1lbnRDb3VudCgpOyBpKyspCisgICAgeworICAgICAgICBt
VW5pZm9ybUluZGV4LnB1c2hfYmFjayhVbmlmb3JtTG9jYXRpb24oY29uc3RhbnQubmFtZSwgaSwg
dW5pZm9ybUluZGV4KSk7CisgICAgfQorCisgICAgaWYgKHNoYWRlciA9PSBHTF9WRVJURVhfU0hB
REVSKQorICAgIHsKKyAgICAgICAgaWYgKGNvbnN0YW50LnJlZ2lzdGVySW5kZXggKyB1bmlmb3Jt
LT5yZWdpc3RlckNvdW50ID4gbVJlbmRlcmVyLT5nZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0
b3JzKCkgKyBtUmVuZGVyZXItPmdldE1heFZlcnRleFVuaWZvcm1WZWN0b3JzKCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJWZXJ0ZXggc2hhZGVyIGFjdGl2ZSB1bmlm
b3JtcyBleGNlZWQgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMgKCV1KSIsIG1SZW5kZXJl
ci0+Z2V0TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoc2hhZGVyID09IEdMX0ZSQUdNRU5U
X1NIQURFUikKKyAgICB7CisgICAgICAgIGlmIChjb25zdGFudC5yZWdpc3RlckluZGV4ICsgdW5p
Zm9ybS0+cmVnaXN0ZXJDb3VudCA+IG1SZW5kZXJlci0+Z2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZv
cm1WZWN0b3JzKCkgKyBtUmVuZGVyZXItPmdldE1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkZyYWdtZW50IHNoYWRlciBh
Y3RpdmUgdW5pZm9ybXMgZXhjZWVkIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMgKCV1
KSIsIG1SZW5kZXJlci0+Z2V0TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxF
KCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RkOjpzdHJpbmcgUHJvZ3JhbUJpbmFyeTo6
Z2VuZXJhdGVHZW9tZXRyeVNoYWRlckhMU0woaW50IHJlZ2lzdGVycywgY29uc3QgVmFyeWluZyAq
cGFja2luZ1tdWzRdLCBGcmFnbWVudFNoYWRlciAqZnJhZ21lbnRTaGFkZXIsIFZlcnRleFNoYWRl
ciAqdmVydGV4U2hhZGVyKSBjb25zdAoreworICAgIC8vIGZvciBub3cgd2Ugb25seSBoYW5kbGUg
cG9pbnQgc3ByaXRlIGVtdWxhdGlvbgorICAgIEFTU0VSVCh1c2VzUG9pbnRTcHJpdGVFbXVsYXRp
b24oKSk7CisgICAgcmV0dXJuIGdlbmVyYXRlUG9pbnRTcHJpdGVITFNMKHJlZ2lzdGVycywgcGFj
a2luZywgZnJhZ21lbnRTaGFkZXIsIHZlcnRleFNoYWRlcik7Cit9CisKK3N0ZDo6c3RyaW5nIFBy
b2dyYW1CaW5hcnk6OmdlbmVyYXRlUG9pbnRTcHJpdGVITFNMKGludCByZWdpc3RlcnMsIGNvbnN0
IFZhcnlpbmcgKnBhY2tpbmdbXVs0XSwgRnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBW
ZXJ0ZXhTaGFkZXIgKnZlcnRleFNoYWRlcikgY29uc3QKK3sKKyAgICBBU1NFUlQocmVnaXN0ZXJz
ID49IDApOworICAgIEFTU0VSVCh2ZXJ0ZXhTaGFkZXItPm1Vc2VzUG9pbnRTaXplKTsKKyAgICBB
U1NFUlQobVJlbmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVsKCkgPj0gNCk7CisKKyAgICBzdGQ6
OnN0cmluZyBnZW9tSExTTDsKKworICAgIHN0ZDo6c3RyaW5nIHZhcnlpbmdTZW1hbnRpYyA9ICJU
RVhDT09SRCI7CisKKyAgICBzdGQ6OnN0cmluZyBmcmFnQ29vcmRTZW1hbnRpYzsKKyAgICBzdGQ6
OnN0cmluZyBwb2ludENvb3JkU2VtYW50aWM7CisKKyAgICBpbnQgcmVzZXJ2ZWRSZWdpc3Rlcklu
ZGV4ID0gcmVnaXN0ZXJzOworCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0ZyYWdDb29y
ZCkKKyAgICB7CisgICAgICAgIGZyYWdDb29yZFNlbWFudGljID0gdmFyeWluZ1NlbWFudGljICsg
c3RyKHJlc2VydmVkUmVnaXN0ZXJJbmRleCsrKTsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRT
aGFkZXItPm1Vc2VzUG9pbnRDb29yZCkKKyAgICB7CisgICAgICAgIHBvaW50Q29vcmRTZW1hbnRp
YyA9IHZhcnlpbmdTZW1hbnRpYyArIHN0cihyZXNlcnZlZFJlZ2lzdGVySW5kZXgrKyk7CisgICAg
fQorCisgICAgZ2VvbUhMU0wgKz0gInVuaWZvcm0gZmxvYXQ0IGR4X1ZpZXdDb29yZHMgOiByZWdp
c3RlcihjMSk7XG4iCisgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICJzdHJ1
Y3QgR1NfSU5QVVRcbiIKKyAgICAgICAgICAgICAgICAie1xuIjsKKworICAgIGZvciAoaW50IHIg
PSAwOyByIDwgcmVnaXN0ZXJzOyByKyspCisgICAgeworICAgICAgICBpbnQgcmVnaXN0ZXJTaXpl
ID0gcGFja2luZ1tyXVszXSA/IDQgOiAocGFja2luZ1tyXVsyXSA/IDMgOiAocGFja2luZ1tyXVsx
XSA/IDIgOiAxKSk7CisKKyAgICAgICAgZ2VvbUhMU0wgKz0gIiAgICBmbG9hdCIgKyBzdHIocmVn
aXN0ZXJTaXplKSArICIgdiIgKyBzdHIocikgKyAiIDogIiArIHZhcnlpbmdTZW1hbnRpYyArIHN0
cihyKSArICI7XG4iOworICAgIH0KKworICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFn
Q29vcmQpCisgICAgeworICAgICAgICBnZW9tSExTTCArPSAiICAgIGZsb2F0NCBnbF9GcmFnQ29v
cmQgOiAiICsgZnJhZ0Nvb3JkU2VtYW50aWMgKyAiO1xuIjsKKyAgICB9CisKKyAgICBnZW9tSExT
TCArPSAiICAgIGZsb2F0IGdsX1BvaW50U2l6ZSA6IFBTSVpFO1xuIgorICAgICAgICAgICAgICAg
ICIgICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247XG4iCisgICAgICAgICAgICAg
ICAgIn07XG4iCisgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICJzdHJ1Y3Qg
R1NfT1VUUFVUXG4iCisgICAgICAgICAgICAgICAgIntcbiI7CisKKyAgICBmb3IgKGludCByID0g
MDsgciA8IHJlZ2lzdGVyczsgcisrKQorICAgIHsKKyAgICAgICAgaW50IHJlZ2lzdGVyU2l6ZSA9
IHBhY2tpbmdbcl1bM10gPyA0IDogKHBhY2tpbmdbcl1bMl0gPyAzIDogKHBhY2tpbmdbcl1bMV0g
PyAyIDogMSkpOworCisgICAgICAgIGdlb21ITFNMICs9ICIgICAgZmxvYXQiICsgc3RyKHJlZ2lz
dGVyU2l6ZSkgKyAiIHYiICsgc3RyKHIpICsgIiA6ICIgKyB2YXJ5aW5nU2VtYW50aWMgKyBzdHIo
cikgKyAiO1xuIjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nv
b3JkKQorICAgIHsKKyAgICAgICAgZ2VvbUhMU0wgKz0gIiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3Jk
IDogIiArIGZyYWdDb29yZFNlbWFudGljICsgIjtcbiI7CisgICAgfQorCisgICAgaWYgKGZyYWdt
ZW50U2hhZGVyLT5tVXNlc1BvaW50Q29vcmQpCisgICAgeworICAgICAgICBnZW9tSExTTCArPSAi
ICAgIGZsb2F0MiBnbF9Qb2ludENvb3JkIDogIiArIHBvaW50Q29vcmRTZW1hbnRpYyArICI7XG4i
OworICAgIH0KKworICAgIGdlb21ITFNMICs9ICAgIiAgICBmbG9hdCBnbF9Qb2ludFNpemUgOiBQ
U0laRTtcbiIKKyAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogU1Zf
UG9zaXRpb247XG4iCisgICAgICAgICAgICAgICAgICAifTtcbiIKKyAgICAgICAgICAgICAgICAg
ICJcbiIKKyAgICAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQyIHBvaW50U3ByaXRlQ29ybmVy
c1tdID0gXG4iCisgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgIiAg
ICBmbG9hdDIoIDAuNWYsIC0wLjVmKSxcbiIKKyAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQy
KCAwLjVmLCAgMC41ZiksXG4iCisgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MigtMC41Ziwg
LTAuNWYpLFxuIgorICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIoLTAuNWYsICAwLjVmKVxu
IgorICAgICAgICAgICAgICAgICAgIn07XG4iCisgICAgICAgICAgICAgICAgICAiXG4iCisgICAg
ICAgICAgICAgICAgICAic3RhdGljIGZsb2F0MiBwb2ludFNwcml0ZVRleGNvb3Jkc1tdID0gXG4i
CisgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIo
MS4wZiwgMS4wZiksXG4iCisgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MigxLjBmLCAwLjBm
KSxcbiIKKyAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyKDAuMGYsIDEuMGYpLFxuIgorICAg
ICAgICAgICAgICAgICAgIiAgICBmbG9hdDIoMC4wZiwgMC4wZilcbiIKKyAgICAgICAgICAgICAg
ICAgICJ9O1xuIgorICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgInN0
YXRpYyBmbG9hdCBtaW5Qb2ludFNpemUgPSAiICsgc3RyKEFMSUFTRURfUE9JTlRfU0laRV9SQU5H
RV9NSU4pICsgIi4wZjtcbiIKKyAgICAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQgbWF4UG9p
bnRTaXplID0gIiArIHN0cihtUmVuZGVyZXItPmdldE1heFBvaW50U2l6ZSgpKSArICIuMGY7XG4i
CisgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAiW21heHZlcnRleGNv
dW50KDQpXVxuIgorICAgICAgICAgICAgICAgICAgInZvaWQgbWFpbihwb2ludCBHU19JTlBVVCBp
bnB1dFsxXSwgaW5vdXQgVHJpYW5nbGVTdHJlYW08R1NfT1VUUFVUPiBvdXRTdHJlYW0pXG4iCisg
ICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgIiAgICBHU19PVVRQVVQg
b3V0cHV0ID0gKEdTX09VVFBVVCkwO1xuIgorICAgICAgICAgICAgICAgICAgIiAgICBvdXRwdXQu
Z2xfUG9pbnRTaXplID0gaW5wdXRbMF0uZ2xfUG9pbnRTaXplO1xuIjsKKworICAgIGZvciAoaW50
IHIgPSAwOyByIDwgcmVnaXN0ZXJzOyByKyspCisgICAgeworICAgICAgICBnZW9tSExTTCArPSAi
ICAgIG91dHB1dC52IiArIHN0cihyKSArICIgPSBpbnB1dFswXS52IiArIHN0cihyKSArICI7XG4i
OworICAgIH0KKworICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnQ29vcmQpCisgICAg
eworICAgICAgICBnZW9tSExTTCArPSAiICAgIG91dHB1dC5nbF9GcmFnQ29vcmQgPSBpbnB1dFsw
XS5nbF9GcmFnQ29vcmQ7XG4iOworICAgIH0KKworICAgIGdlb21ITFNMICs9ICIgICAgXG4iCisg
ICAgICAgICAgICAgICAgIiAgICBmbG9hdCBnbF9Qb2ludFNpemUgPSBjbGFtcChpbnB1dFswXS5n
bF9Qb2ludFNpemUsIG1pblBvaW50U2l6ZSwgbWF4UG9pbnRTaXplKTtcbiIKKyAgICAgICAgICAg
ICAgICAiICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA9IGlucHV0WzBdLmdsX1Bvc2l0aW9uO1xuIgor
ICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIHZpZXdwb3J0U2NhbGUgPSBmbG9hdDIoMS4wZiAv
IGR4X1ZpZXdDb29yZHMueCwgMS4wZiAvIGR4X1ZpZXdDb29yZHMueSkgKiBnbF9Qb3NpdGlvbi53
O1xuIjsKKworICAgIGZvciAoaW50IGNvcm5lciA9IDA7IGNvcm5lciA8IDQ7IGNvcm5lcisrKQor
ICAgIHsKKyAgICAgICAgZ2VvbUhMU0wgKz0gIiAgICBcbiIKKyAgICAgICAgICAgICAgICAgICAg
IiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbiArIGZsb2F0NChwb2ludFNwcml0
ZUNvcm5lcnNbIiArIHN0cihjb3JuZXIpICsgIl0gKiB2aWV3cG9ydFNjYWxlICogZ2xfUG9pbnRT
aXplLCAwLjBmLCAwLjBmKTtcbiI7CisKKyAgICAgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNl
c1BvaW50Q29vcmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdlb21ITFNMICs9ICIgICAgb3V0
cHV0LmdsX1BvaW50Q29vcmQgPSBwb2ludFNwcml0ZVRleGNvb3Jkc1siICsgc3RyKGNvcm5lcikg
KyAiXTtcbiI7CisgICAgICAgIH0KKworICAgICAgICBnZW9tSExTTCArPSAiICAgIG91dFN0cmVh
bS5BcHBlbmQob3V0cHV0KTtcbiI7CisgICAgfQorCisgICAgZ2VvbUhMU0wgKz0gIiAgICBcbiIK
KyAgICAgICAgICAgICAgICAiICAgIG91dFN0cmVhbS5SZXN0YXJ0U3RyaXAoKTtcbiIKKyAgICAg
ICAgICAgICAgICAifVxuIjsKKworICAgIHJldHVybiBnZW9tSExTTDsKK30KKworLy8gVGhpcyBt
ZXRob2QgbmVlZHMgdG8gbWF0Y2ggT3V0cHV0SExTTDo6ZGVjb3JhdGUKK3N0ZDo6c3RyaW5nIFBy
b2dyYW1CaW5hcnk6OmRlY29yYXRlQXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKQor
eworICAgIGlmIChuYW1lLmNvbXBhcmUoMCwgMywgImdsXyIpICE9IDAgJiYgbmFtZS5jb21wYXJl
KDAsIDMsICJkeF8iKSAhPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJfIiArIG5hbWU7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBuYW1lOworfQorCitib29sIFByb2dyYW1CaW5hcnk6Omlz
VmFsaWRhdGVkKCkgY29uc3QgCit7CisgICAgcmV0dXJuIG1WYWxpZGF0ZWQ7Cit9CisKK3ZvaWQg
UHJvZ3JhbUJpbmFyeTo6Z2V0QWN0aXZlQXR0cmlidXRlKEdMdWludCBpbmRleCwgR0xzaXplaSBi
dWZzaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hh
ciAqbmFtZSkgY29uc3QKK3sKKyAgICAvLyBTa2lwIG92ZXIgaW5hY3RpdmUgYXR0cmlidXRlcwor
ICAgIHVuc2lnbmVkIGludCBhY3RpdmVBdHRyaWJ1dGUgPSAwOworICAgIHVuc2lnbmVkIGludCBh
dHRyaWJ1dGU7CisgICAgZm9yIChhdHRyaWJ1dGUgPSAwOyBhdHRyaWJ1dGUgPCBNQVhfVkVSVEVY
X0FUVFJJQlM7IGF0dHJpYnV0ZSsrKQorICAgIHsKKyAgICAgICAgaWYgKG1MaW5rZWRBdHRyaWJ1
dGVbYXR0cmlidXRlXS5uYW1lLmVtcHR5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFjdGl2ZUF0dHJpYnV0ZSA9PSBpbmRleCkK
KyAgICAgICAgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBhY3Rp
dmVBdHRyaWJ1dGUrKzsKKyAgICB9CisKKyAgICBpZiAoYnVmc2l6ZSA+IDApCisgICAgeworICAg
ICAgICBjb25zdCBjaGFyICpzdHJpbmcgPSBtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZV0ubmFt
ZS5jX3N0cigpOworCisgICAgICAgIHN0cm5jcHkobmFtZSwgc3RyaW5nLCBidWZzaXplKTsKKyAg
ICAgICAgbmFtZVtidWZzaXplIC0gMV0gPSAnXDAnOworCisgICAgICAgIGlmIChsZW5ndGgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgICpsZW5ndGggPSBzdHJsZW4obmFtZSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAqc2l6ZSA9IDE7ICAgLy8gQWx3YXlzIGEgc2luZ2xlICd0eXBlJyBpbnN0
YW5jZQorCisgICAgKnR5cGUgPSBtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZV0udHlwZTsKK30K
KworR0xpbnQgUHJvZ3JhbUJpbmFyeTo6Z2V0QWN0aXZlQXR0cmlidXRlQ291bnQoKSBjb25zdAor
eworICAgIGludCBjb3VudCA9IDA7CisKKyAgICBmb3IgKGludCBhdHRyaWJ1dGVJbmRleCA9IDA7
IGF0dHJpYnV0ZUluZGV4IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBhdHRyaWJ1dGVJbmRleCsrKQor
ICAgIHsKKyAgICAgICAgaWYgKCFtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZUluZGV4XS5uYW1l
LmVtcHR5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK0dMaW50IFByb2dyYW1CaW5hcnk6OmdldEFj
dGl2ZUF0dHJpYnV0ZU1heExlbmd0aCgpIGNvbnN0Cit7CisgICAgaW50IG1heExlbmd0aCA9IDA7
CisKKyAgICBmb3IgKGludCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0dHJpYnV0ZUluZGV4IDwgTUFY
X1ZFUlRFWF9BVFRSSUJTOyBhdHRyaWJ1dGVJbmRleCsrKQorICAgIHsKKyAgICAgICAgaWYgKCFt
TGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZUluZGV4XS5uYW1lLmVtcHR5KCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1heExlbmd0aCA9IHN0ZDo6bWF4KChpbnQpKG1MaW5rZWRBdHRyaWJ1dGVb
YXR0cmlidXRlSW5kZXhdLm5hbWUubGVuZ3RoKCkgKyAxKSwgbWF4TGVuZ3RoKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBtYXhMZW5ndGg7Cit9CisKK3ZvaWQgUHJvZ3JhbUJpbmFy
eTo6Z2V0QWN0aXZlVW5pZm9ybShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXpl
aSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUpIGNvbnN0
Cit7CisgICAgQVNTRVJUKGluZGV4IDwgbVVuaWZvcm1zLnNpemUoKSk7ICAgLy8gaW5kZXggbXVz
dCBiZSBzbWFsbGVyIHRoYW4gZ2V0QWN0aXZlVW5pZm9ybUNvdW50KCkKKworICAgIGlmIChidWZz
aXplID4gMCkKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nIHN0cmluZyA9IG1Vbmlmb3Jtc1tp
bmRleF0tPm5hbWU7CisKKyAgICAgICAgaWYgKG1Vbmlmb3Jtc1tpbmRleF0tPmlzQXJyYXkoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgc3RyaW5nICs9ICJbMF0iOworICAgICAgICB9CisKKyAg
ICAgICAgc3RybmNweShuYW1lLCBzdHJpbmcuY19zdHIoKSwgYnVmc2l6ZSk7CisgICAgICAgIG5h
bWVbYnVmc2l6ZSAtIDFdID0gJ1wwJzsKKworICAgICAgICBpZiAobGVuZ3RoKQorICAgICAgICB7
CisgICAgICAgICAgICAqbGVuZ3RoID0gc3RybGVuKG5hbWUpOworICAgICAgICB9CisgICAgfQor
CisgICAgKnNpemUgPSBtVW5pZm9ybXNbaW5kZXhdLT5lbGVtZW50Q291bnQoKTsKKworICAgICp0
eXBlID0gbVVuaWZvcm1zW2luZGV4XS0+dHlwZTsKK30KKworR0xpbnQgUHJvZ3JhbUJpbmFyeTo6
Z2V0QWN0aXZlVW5pZm9ybUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVVuaWZvcm1zLnNp
emUoKTsKK30KKworR0xpbnQgUHJvZ3JhbUJpbmFyeTo6Z2V0QWN0aXZlVW5pZm9ybU1heExlbmd0
aCgpIGNvbnN0Cit7CisgICAgaW50IG1heExlbmd0aCA9IDA7CisKKyAgICB1bnNpZ25lZCBpbnQg
bnVtVW5pZm9ybXMgPSBtVW5pZm9ybXMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaW50IHVu
aWZvcm1JbmRleCA9IDA7IHVuaWZvcm1JbmRleCA8IG51bVVuaWZvcm1zOyB1bmlmb3JtSW5kZXgr
KykKKyAgICB7CisgICAgICAgIGlmICghbVVuaWZvcm1zW3VuaWZvcm1JbmRleF0tPm5hbWUuZW1w
dHkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IGxlbmd0aCA9IChpbnQpKG1Vbmlmb3Jt
c1t1bmlmb3JtSW5kZXhdLT5uYW1lLmxlbmd0aCgpICsgMSk7CisgICAgICAgICAgICBpZiAobVVu
aWZvcm1zW3VuaWZvcm1JbmRleF0tPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBsZW5ndGggKz0gMzsgIC8vIENvdW50aW5nIGluICJbMF0iLgorICAgICAgICAgICAg
fQorICAgICAgICAgICAgbWF4TGVuZ3RoID0gc3RkOjptYXgobGVuZ3RoLCBtYXhMZW5ndGgpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG1heExlbmd0aDsKK30KKwordm9pZCBQcm9n
cmFtQmluYXJ5Ojp2YWxpZGF0ZShJbmZvTG9nICZpbmZvTG9nKQoreworICAgIGFwcGx5VW5pZm9y
bXMoKTsKKyAgICBpZiAoIXZhbGlkYXRlU2FtcGxlcnMoJmluZm9Mb2cpKQorICAgIHsKKyAgICAg
ICAgbVZhbGlkYXRlZCA9IGZhbHNlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBt
VmFsaWRhdGVkID0gdHJ1ZTsKKyAgICB9Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6dmFsaWRh
dGVTYW1wbGVycyhJbmZvTG9nICppbmZvTG9nKQoreworICAgIC8vIGlmIGFueSB0d28gYWN0aXZl
IHNhbXBsZXJzIGluIGEgcHJvZ3JhbSBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBidXQgcmVmZXIg
dG8gdGhlIHNhbWUKKyAgICAvLyB0ZXh0dXJlIGltYWdlIHVuaXQsIGFuZCB0aGlzIGlzIHRoZSBj
dXJyZW50IHByb2dyYW0sIHRoZW4gVmFsaWRhdGVQcm9ncmFtIHdpbGwgZmFpbCwgYW5kCisgICAg
Ly8gRHJhd0FycmF5cyBhbmQgRHJhd0VsZW1lbnRzIHdpbGwgaXNzdWUgdGhlIElOVkFMSURfT1BF
UkFUSU9OIGVycm9yLgorCisgICAgY29uc3QgdW5zaWduZWQgaW50IG1heENvbWJpbmVkVGV4dHVy
ZUltYWdlVW5pdHMgPSBtUmVuZGVyZXItPmdldE1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMo
KTsKKyAgICBUZXh0dXJlVHlwZSB0ZXh0dXJlVW5pdFR5cGVbSU1QTEVNRU5UQVRJT05fTUFYX0NP
TUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBJTVBMRU1FTlRBVElPTl9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUzsg
KytpKQorICAgIHsKKyAgICAgICAgdGV4dHVyZVVuaXRUeXBlW2ldID0gVEVYVFVSRV9VTktOT1dO
OworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbVVzZWRQaXhlbFNh
bXBsZXJSYW5nZTsgKytpKQorICAgIHsKKyAgICAgICAgaWYgKG1TYW1wbGVyc1BTW2ldLmFjdGl2
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW50IHVuaXQgPSBtU2FtcGxlcnNQ
U1tpXS5sb2dpY2FsVGV4dHVyZVVuaXQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh1
bml0ID49IG1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaWYgKGluZm9Mb2cpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBpbmZvTG9nLT5hcHBlbmQoIlNhbXBsZXIgdW5pZm9ybSAoJWQpIGV4Y2VlZHMgSU1Q
TEVNRU5UQVRJT05fTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMgKCVkKSIsIHVuaXQs
IG1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKHRleHR1cmVVbml0VHlwZVt1bml0XSAhPSBURVhUVVJFX1VOS05PV04pCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaWYgKG1TYW1wbGVyc1BTW2ldLnRleHR1cmVUeXBlICE9IHRl
eHR1cmVVbml0VHlwZVt1bml0XSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChpbmZvTG9nKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpbmZvTG9nLT5hcHBlbmQoIlNhbXBsZXJzIG9mIGNvbmZsaWN0aW5nIHR5cGVzIHJl
ZmVyIHRvIHRoZSBzYW1lIHRleHR1cmUgaW1hZ2UgdW5pdCAoJWQpLiIsIHVuaXQpOworICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlVW5pdFR5cGVbdW5pdF0gPSBtU2FtcGxlcnNQ
U1tpXS50ZXh0dXJlVHlwZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2U7ICsr
aSkKKyAgICB7CisgICAgICAgIGlmIChtU2FtcGxlcnNWU1tpXS5hY3RpdmUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGludCB1bml0ID0gbVNhbXBsZXJzVlNbaV0ubG9naWNhbFRl
eHR1cmVVbml0OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodW5pdCA+PSBtYXhDb21i
aW5lZFRleHR1cmVJbWFnZVVuaXRzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
IChpbmZvTG9nKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW5mb0xv
Zy0+YXBwZW5kKCJTYW1wbGVyIHVuaWZvcm0gKCVkKSBleGNlZWRzIElNUExFTUVOVEFUSU9OX01B
WF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTICglZCkiLCB1bml0LCBtYXhDb21iaW5lZFRl
eHR1cmVJbWFnZVVuaXRzKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlVW5p
dFR5cGVbdW5pdF0gIT0gVEVYVFVSRV9VTktOT1dOKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGlmIChtU2FtcGxlcnNWU1tpXS50ZXh0dXJlVHlwZSAhPSB0ZXh0dXJlVW5pdFR5cGVb
dW5pdF0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoaW5mb0xv
ZykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb0xv
Zy0+YXBwZW5kKCJTYW1wbGVycyBvZiBjb25mbGljdGluZyB0eXBlcyByZWZlciB0byB0aGUgc2Ft
ZSB0ZXh0dXJlIGltYWdlIHVuaXQgKCVkKS4iLCB1bml0KTsKKyAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgdGV4dHVyZVVuaXRUeXBlW3VuaXRdID0gbVNhbXBsZXJzVlNbaV0udGV4dHVyZVR5
cGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworUHJvZ3JhbUJpbmFyeTo6U2FtcGxlcjo6U2FtcGxlcigpIDogYWN0aXZlKGZhbHNlKSwg
bG9naWNhbFRleHR1cmVVbml0KDApLCB0ZXh0dXJlVHlwZShURVhUVVJFXzJEKQoreworfQorCitz
dHJ1Y3QgQXR0cmlidXRlU29ydGVyCit7CisgICAgQXR0cmlidXRlU29ydGVyKGNvbnN0IGludCAo
JnNlbWFudGljSW5kaWNlcylbTUFYX1ZFUlRFWF9BVFRSSUJTXSkKKyAgICAgICAgOiBvcmlnaW5h
bEluZGljZXMoc2VtYW50aWNJbmRpY2VzKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgaW5k
aWNlc1tpXSA9IGk7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6OnNvcnQoJmluZGljZXNbMF0s
ICZpbmRpY2VzW01BWF9WRVJURVhfQVRUUklCU10sICp0aGlzKTsKKyAgICB9CisKKyAgICBib29s
IG9wZXJhdG9yKCkoaW50IGEsIGludCBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFs
SW5kaWNlc1thXSA9PSAtMSA/IGZhbHNlIDogb3JpZ2luYWxJbmRpY2VzW2FdIDwgb3JpZ2luYWxJ
bmRpY2VzW2JdOworICAgIH0KKworICAgIGludCBpbmRpY2VzW01BWF9WRVJURVhfQVRUUklCU107
CisgICAgY29uc3QgaW50ICgmb3JpZ2luYWxJbmRpY2VzKVtNQVhfVkVSVEVYX0FUVFJJQlNdOwor
fTsKKwordm9pZCBQcm9ncmFtQmluYXJ5Ojpzb3J0QXR0cmlidXRlc0J5TGF5b3V0KHJ4OjpUcmFu
c2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNbTUFYX1ZFUlRFWF9BVFRSSUJTXSwgaW50IHNvcnRl
ZFNlbWFudGljSW5kaWNlc1tNQVhfVkVSVEVYX0FUVFJJQlNdKSBjb25zdAoreworICAgIEF0dHJp
YnV0ZVNvcnRlciBzb3J0ZXIobVNlbWFudGljSW5kZXgpOworCisgICAgaW50IG9sZEluZGljZXNb
TUFYX1ZFUlRFWF9BVFRSSUJTXTsKKyAgICByeDo6VHJhbnNsYXRlZEF0dHJpYnV0ZSBvbGRUcmFu
c2xhdGVkQXR0cmlidXRlc1tNQVhfVkVSVEVYX0FUVFJJQlNdOworCisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7CisgICAgICAgIG9sZEluZGlj
ZXNbaV0gPSBtU2VtYW50aWNJbmRleFtpXTsKKyAgICAgICAgb2xkVHJhbnNsYXRlZEF0dHJpYnV0
ZXNbaV0gPSBhdHRyaWJ1dGVzW2ldOworICAgIH0KKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBpbnQgb2xkSW5kZXggPSBz
b3J0ZXIuaW5kaWNlc1tpXTsKKyAgICAgICAgc29ydGVkU2VtYW50aWNJbmRpY2VzW2ldID0gb2xk
SW5kaWNlc1tvbGRJbmRleF07CisgICAgICAgIGF0dHJpYnV0ZXNbaV0gPSBvbGRUcmFuc2xhdGVk
QXR0cmlidXRlc1tvbGRJbmRleF07CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3Jh
bUJpbmFyeS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3NCBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gUHJvZ3JhbS5oOiBEZWZpbmVzIHRoZSBnbDo6UHJvZ3JhbSBjbGFzcy4gSW1wbGVt
ZW50cyBHTCBwcm9ncmFtIG9iamVjdHMKKy8vIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIFtP
cGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDIuMTAuMyBwYWdlIDI4LgorCisjaWZuZGVmIExJQkdM
RVNWMl9QUk9HUkFNX0JJTkFSWV9IXworI2RlZmluZSBMSUJHTEVTVjJfUFJPR1JBTV9CSU5BUllf
SF8KKworI2RlZmluZSBHTF9BUElDQUxMCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVk
ZSA8R0xFUzIvZ2wyZXh0Lmg+CisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9y
PgorCisjaW5jbHVkZSAiY29tbW9uL1JlZkNvdW50T2JqZWN0LmgiCisjaW5jbHVkZSAiYW5nbGV0
eXBlcy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi9Vbmlmb3JtLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1NoYWRlci5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9Db25zdGFudHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBTaGFkZXJF
eGVjdXRhYmxlOworY2xhc3MgUmVuZGVyZXI7CitzdHJ1Y3QgVHJhbnNsYXRlZEF0dHJpYnV0ZTsK
K30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBGcmFnbWVudFNoYWRlcjsKK2NsYXNzIFZlcnRl
eFNoYWRlcjsKK2NsYXNzIEluZm9Mb2c7CitjbGFzcyBBdHRyaWJ1dGVCaW5kaW5nczsKK3N0cnVj
dCBWYXJ5aW5nOworCisvLyBTdHJ1Y3QgdXNlZCBmb3IgY29ycmVsYXRpbmcgdW5pZm9ybXMvZWxl
bWVudHMgb2YgdW5pZm9ybSBhcnJheXMgdG8gaGFuZGxlcworc3RydWN0IFVuaWZvcm1Mb2NhdGlv
bgoreworICAgIFVuaWZvcm1Mb2NhdGlvbigpCisgICAgeworICAgIH0KKworICAgIFVuaWZvcm1M
b2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgdW5zaWduZWQgaW50IGVsZW1lbnQsIHVu
c2lnbmVkIGludCBpbmRleCk7CisKKyAgICBzdGQ6OnN0cmluZyBuYW1lOworICAgIHVuc2lnbmVk
IGludCBlbGVtZW50OworICAgIHVuc2lnbmVkIGludCBpbmRleDsKK307CisKKy8vIFRoaXMgaXMg
dGhlIHJlc3VsdCBvZiBsaW5raW5nIGEgcHJvZ3JhbS4gSXQgaXMgdGhlIHN0YXRlIHRoYXQgd291
bGQgYmUgcGFzc2VkIHRvIFByb2dyYW1CaW5hcnkuCitjbGFzcyBQcm9ncmFtQmluYXJ5IDogcHVi
bGljIFJlZkNvdW50T2JqZWN0Cit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBQcm9ncmFtQmlu
YXJ5KHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIpOworICAgIH5Qcm9ncmFtQmluYXJ5KCk7CisKKyAg
ICByeDo6U2hhZGVyRXhlY3V0YWJsZSAqZ2V0UGl4ZWxFeGVjdXRhYmxlKCk7CisgICAgcng6OlNo
YWRlckV4ZWN1dGFibGUgKmdldFZlcnRleEV4ZWN1dGFibGUoKTsKKyAgICByeDo6U2hhZGVyRXhl
Y3V0YWJsZSAqZ2V0R2VvbWV0cnlFeGVjdXRhYmxlKCk7CisKKyAgICBHTHVpbnQgZ2V0QXR0cmli
dXRlTG9jYXRpb24oY29uc3QgY2hhciAqbmFtZSk7CisgICAgaW50IGdldFNlbWFudGljSW5kZXgo
aW50IGF0dHJpYnV0ZUluZGV4KTsKKworICAgIEdMaW50IGdldFNhbXBsZXJNYXBwaW5nKFNhbXBs
ZXJUeXBlIHR5cGUsIHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXgpOworICAgIFRleHR1cmVUeXBl
IGdldFNhbXBsZXJUZXh0dXJlVHlwZShTYW1wbGVyVHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgc2Ft
cGxlckluZGV4KTsKKyAgICBHTGludCBnZXRVc2VkU2FtcGxlclJhbmdlKFNhbXBsZXJUeXBlIHR5
cGUpOworICAgIGJvb2wgdXNlc1BvaW50U2l6ZSgpIGNvbnN0OworICAgIGJvb2wgdXNlc1BvaW50
U3ByaXRlRW11bGF0aW9uKCkgY29uc3Q7CisgICAgYm9vbCB1c2VzR2VvbWV0cnlTaGFkZXIoKSBj
b25zdDsKKworICAgIEdMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihzdGQ6OnN0cmluZyBuYW1lKTsK
KyAgICBib29sIHNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMZmxvYXQgKnYpOworICAgIGJvb2wgc2V0VW5pZm9ybTJmdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7CisgICAgYm9vbCBzZXRVbmlmb3JtM2Z2
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsKKyAgICBi
b29sIHNldFVuaWZvcm00ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQgKnYpOworICAgIGJvb2wgc2V0VW5pZm9ybU1hdHJpeDJmdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworICAgIGJvb2wgc2V0VW5pZm9y
bU1hdHJpeDNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAq
dmFsdWUpOworICAgIGJvb2wgc2V0VW5pZm9ybU1hdHJpeDRmdihHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworICAgIGJvb2wgc2V0VW5pZm9ybTFp
dihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOworICAgIGJv
b2wgc2V0VW5pZm9ybTJpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xp
bnQgKnYpOworICAgIGJvb2wgc2V0VW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xpbnQgKnYpOworICAgIGJvb2wgc2V0VW5pZm9ybTRpdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOworCisgICAgYm9vbCBnZXRVbmlm
b3JtZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgKmJ1ZlNpemUsIEdMZmxvYXQgKnBhcmFtcyk7
CisgICAgYm9vbCBnZXRVbmlmb3JtaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgKmJ1ZlNpemUs
IEdMaW50ICpwYXJhbXMpOworCisgICAgdm9pZCBkaXJ0eUFsbFVuaWZvcm1zKCk7CisgICAgdm9p
ZCBhcHBseVVuaWZvcm1zKCk7CisKKyAgICBib29sIGxvYWQoSW5mb0xvZyAmaW5mb0xvZywgY29u
c3Qgdm9pZCAqYmluYXJ5LCBHTHNpemVpIGxlbmd0aCk7CisgICAgYm9vbCBzYXZlKHZvaWQqIGJp
bmFyeSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgpOworICAgIEdMaW50IGdldExl
bmd0aCgpOworCisgICAgYm9vbCBsaW5rKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IEF0dHJpYnV0
ZUJpbmRpbmdzICZhdHRyaWJ1dGVCaW5kaW5ncywgRnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hh
ZGVyLCBWZXJ0ZXhTaGFkZXIgKnZlcnRleFNoYWRlcik7CisgICAgdm9pZCBnZXRBdHRhY2hlZFNo
YWRlcnMoR0xzaXplaSBtYXhDb3VudCwgR0xzaXplaSAqY291bnQsIEdMdWludCAqc2hhZGVycyk7
CisKKyAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYnV0ZShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVm
c2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIg
Km5hbWUpIGNvbnN0OworICAgIEdMaW50IGdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCkgY29uc3Q7
CisgICAgR0xpbnQgZ2V0QWN0aXZlQXR0cmlidXRlTWF4TGVuZ3RoKCkgY29uc3Q7CisKKyAgICB2
b2lkIGdldEFjdGl2ZVVuaWZvcm0oR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6
ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKSBjb25z
dDsKKyAgICBHTGludCBnZXRBY3RpdmVVbmlmb3JtQ291bnQoKSBjb25zdDsKKyAgICBHTGludCBn
ZXRBY3RpdmVVbmlmb3JtTWF4TGVuZ3RoKCkgY29uc3Q7CisKKyAgICB2b2lkIHZhbGlkYXRlKElu
Zm9Mb2cgJmluZm9Mb2cpOworICAgIGJvb2wgdmFsaWRhdGVTYW1wbGVycyhJbmZvTG9nICppbmZv
TG9nKTsKKyAgICBib29sIGlzVmFsaWRhdGVkKCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCBpbnQg
Z2V0U2VyaWFsKCkgY29uc3Q7CisKKyAgICB2b2lkIHNvcnRBdHRyaWJ1dGVzQnlMYXlvdXQocng6
OlRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSwg
aW50IHNvcnRlZFNlbWFudGljSW5kaWNlc1tNQVhfVkVSVEVYX0FUVFJJQlNdKSBjb25zdDsKKwor
ICAgIHN0YXRpYyBzdGQ6OnN0cmluZyBkZWNvcmF0ZUF0dHJpYnV0ZShjb25zdCBzdGQ6OnN0cmlu
ZyAmbmFtZSk7ICAgIC8vIFByZXBlbmQgYW4gdW5kZXJzY29yZQorCisgIHByaXZhdGU6CisgICAg
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFByb2dyYW1CaW5hcnkpOworCisgICAgaW50IHBhY2tW
YXJ5aW5ncyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBWYXJ5aW5nICpwYWNraW5nW11bNF0sIEZy
YWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlcik7CisgICAgYm9vbCBsaW5rVmFyeWluZ3MoSW5m
b0xvZyAmaW5mb0xvZywgaW50IHJlZ2lzdGVycywgY29uc3QgVmFyeWluZyAqcGFja2luZ1tdWzRd
LAorICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nJiBwaXhlbEhMU0wsIHN0ZDo6c3Ry
aW5nJiB2ZXJ0ZXhITFNMLAorICAgICAgICAgICAgICAgICAgICAgIEZyYWdtZW50U2hhZGVyICpm
cmFnbWVudFNoYWRlciwgVmVydGV4U2hhZGVyICp2ZXJ0ZXhTaGFkZXIpOworCisgICAgYm9vbCBs
aW5rQXR0cmlidXRlcyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBBdHRyaWJ1dGVCaW5kaW5ncyAm
YXR0cmlidXRlQmluZGluZ3MsIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlciwgVmVydGV4
U2hhZGVyICp2ZXJ0ZXhTaGFkZXIpOworCisgICAgYm9vbCBsaW5rVW5pZm9ybXMoSW5mb0xvZyAm
aW5mb0xvZywgY29uc3Qgc2g6OkFjdGl2ZVVuaWZvcm1zICZ2ZXJ0ZXhVbmlmb3JtcywgY29uc3Qg
c2g6OkFjdGl2ZVVuaWZvcm1zICZmcmFnbWVudFVuaWZvcm1zKTsKKyAgICBib29sIGRlZmluZVVu
aWZvcm0oR0xlbnVtIHNoYWRlciwgY29uc3Qgc2g6OlVuaWZvcm0gJmNvbnN0YW50LCBJbmZvTG9n
ICZpbmZvTG9nKTsKKyAgICAKKyAgICBzdGQ6OnN0cmluZyBnZW5lcmF0ZUdlb21ldHJ5U2hhZGVy
SExTTChpbnQgcmVnaXN0ZXJzLCBjb25zdCBWYXJ5aW5nICpwYWNraW5nW11bNF0sIEZyYWdtZW50
U2hhZGVyICpmcmFnbWVudFNoYWRlciwgVmVydGV4U2hhZGVyICp2ZXJ0ZXhTaGFkZXIpIGNvbnN0
OworICAgIHN0ZDo6c3RyaW5nIGdlbmVyYXRlUG9pbnRTcHJpdGVITFNMKGludCByZWdpc3RlcnMs
IGNvbnN0IFZhcnlpbmcgKnBhY2tpbmdbXVs0XSwgRnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hh
ZGVyLCBWZXJ0ZXhTaGFkZXIgKnZlcnRleFNoYWRlcikgY29uc3Q7CisKKyAgICByeDo6UmVuZGVy
ZXIgKmNvbnN0IG1SZW5kZXJlcjsKKworICAgIHJ4OjpTaGFkZXJFeGVjdXRhYmxlICptUGl4ZWxF
eGVjdXRhYmxlOworICAgIHJ4OjpTaGFkZXJFeGVjdXRhYmxlICptVmVydGV4RXhlY3V0YWJsZTsK
KyAgICByeDo6U2hhZGVyRXhlY3V0YWJsZSAqbUdlb21ldHJ5RXhlY3V0YWJsZTsKKworICAgIEF0
dHJpYnV0ZSBtTGlua2VkQXR0cmlidXRlW01BWF9WRVJURVhfQVRUUklCU107CisgICAgaW50IG1T
ZW1hbnRpY0luZGV4W01BWF9WRVJURVhfQVRUUklCU107CisKKyAgICBzdHJ1Y3QgU2FtcGxlcgor
ICAgIHsKKyAgICAgICAgU2FtcGxlcigpOworCisgICAgICAgIGJvb2wgYWN0aXZlOworICAgICAg
ICBHTGludCBsb2dpY2FsVGV4dHVyZVVuaXQ7CisgICAgICAgIFRleHR1cmVUeXBlIHRleHR1cmVU
eXBlOworICAgIH07CisKKyAgICBTYW1wbGVyIG1TYW1wbGVyc1BTW01BWF9URVhUVVJFX0lNQUdF
X1VOSVRTXTsKKyAgICBTYW1wbGVyIG1TYW1wbGVyc1ZTW0lNUExFTUVOVEFUSU9OX01BWF9WRVJU
RVhfVEVYVFVSRV9JTUFHRV9VTklUU107CisgICAgR0x1aW50IG1Vc2VkVmVydGV4U2FtcGxlclJh
bmdlOworICAgIEdMdWludCBtVXNlZFBpeGVsU2FtcGxlclJhbmdlOworICAgIGJvb2wgbVVzZXNQ
b2ludFNpemU7CisKKyAgICBVbmlmb3JtQXJyYXkgbVVuaWZvcm1zOworICAgIHR5cGVkZWYgc3Rk
Ojp2ZWN0b3I8VW5pZm9ybUxvY2F0aW9uPiBVbmlmb3JtSW5kZXg7CisgICAgVW5pZm9ybUluZGV4
IG1Vbmlmb3JtSW5kZXg7CisKKyAgICBib29sIG1WYWxpZGF0ZWQ7CisKKyAgICBjb25zdCB1bnNp
Z25lZCBpbnQgbVNlcmlhbDsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXNzdWVTZXJpYWwo
KTsKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IG1DdXJyZW50U2VyaWFsOworfTsKK30KKworI2Vu
ZGlmICAgLy8gTElCR0xFU1YyX1BST0dSQU1fQklOQVJZX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1F1ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1F1ZXJ5LmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUXVlcnkuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUyIEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBRdWVyeS5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpRdWVyeSBjbGFzcworCisj
aW5jbHVkZSAibGliR0xFU3YyL1F1ZXJ5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L1F1ZXJ5SW1wbC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oIgor
CituYW1lc3BhY2UgZ2wKK3sKKworUXVlcnk6OlF1ZXJ5KHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIs
IEdMZW51bSB0eXBlLCBHTHVpbnQgaWQpIDogUmVmQ291bnRPYmplY3QoaWQpCit7IAorICAgIG1R
dWVyeSA9IHJlbmRlcmVyLT5jcmVhdGVRdWVyeSh0eXBlKTsKK30KKworUXVlcnk6On5RdWVyeSgp
Cit7CisgICAgZGVsZXRlIG1RdWVyeTsKK30KKwordm9pZCBRdWVyeTo6YmVnaW4oKQoreworICAg
IG1RdWVyeS0+YmVnaW4oKTsKK30KKwordm9pZCBRdWVyeTo6ZW5kKCkKK3sKKyAgICBtUXVlcnkt
PmVuZCgpOworfQorCitHTHVpbnQgUXVlcnk6OmdldFJlc3VsdCgpCit7CisgICAgcmV0dXJuIG1R
dWVyeS0+Z2V0UmVzdWx0KCk7Cit9CisKK0dMYm9vbGVhbiBRdWVyeTo6aXNSZXN1bHRBdmFpbGFi
bGUoKQoreworICAgIHJldHVybiBtUXVlcnktPmlzUmVzdWx0QXZhaWxhYmxlKCk7Cit9CisKK0dM
ZW51bSBRdWVyeTo6Z2V0VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1RdWVyeS0+Z2V0VHlw
ZSgpOworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L1F1ZXJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9RdWVyeS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9RdWVyeS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gUXVlcnkuaDogRGVmaW5lcyB0aGUgZ2w6OlF1ZXJ5IGNsYXNzCisKKyNpZm5k
ZWYgTElCR0xFU1YyX1FVRVJZX0hfCisjZGVmaW5lIExJQkdMRVNWMl9RVUVSWV9IXworCisjZGVm
aW5lIEdMX0FQSUNBTEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKworI2luY2x1ZGUgImNvbW1v
bi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL1JlZkNvdW50T2JqZWN0LmgiCisKK25h
bWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBRdWVyeUltcGw7Cit9CisKK25h
bWVzcGFjZSBnbAoreworCitjbGFzcyBRdWVyeSA6IHB1YmxpYyBSZWZDb3VudE9iamVjdAorewor
ICBwdWJsaWM6CisgICAgUXVlcnkocng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0xlbnVtIHR5cGUs
IEdMdWludCBpZCk7CisgICAgdmlydHVhbCB+UXVlcnkoKTsKKworICAgIHZvaWQgYmVnaW4oKTsK
KyAgICB2b2lkIGVuZCgpOworCisgICAgR0x1aW50IGdldFJlc3VsdCgpOworICAgIEdMYm9vbGVh
biBpc1Jlc3VsdEF2YWlsYWJsZSgpOworCisgICAgR0xlbnVtIGdldFR5cGUoKSBjb25zdDsKKwor
ICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihRdWVyeSk7CisKKyAgICBy
eDo6UXVlcnlJbXBsICptUXVlcnk7Cit9OworCit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9R
VUVSWV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZW5k
ZXJidWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvUmVuZGVyYnVmZmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0ODUgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gUmVuZGVyYnVmZmVyLmNwcDogdGhlIGdsOjpSZW5kZXJidWZmZXIgY2xhc3MgYW5k
IGl0cyBkZXJpdmVkIGNsYXNzZXMKKy8vIENvbG9yYnVmZmVyLCBEZXB0aGJ1ZmZlciBhbmQgU3Rl
bmNpbGJ1ZmZlci4gSW1wbGVtZW50cyBHTCByZW5kZXJidWZmZXIKKy8vIG9iamVjdHMgYW5kIHJl
bGF0ZWQgZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gNC40LjMgcGFn
ZSAxMDguCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAi
bGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldC5oIgorCisjaW5jbHVkZSAibGliR0xFU3Yy
L1RleHR1cmUuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaCIKKyNp
bmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBnbAorewordW5zaWdu
ZWQgaW50IFJlbmRlcmJ1ZmZlclN0b3JhZ2U6Om1DdXJyZW50U2VyaWFsID0gMTsKKworUmVuZGVy
YnVmZmVySW50ZXJmYWNlOjpSZW5kZXJidWZmZXJJbnRlcmZhY2UoKQoreworfQorCisvLyBUaGUg
ZGVmYXVsdCBjYXNlIGZvciBjbGFzc2VzIGluaGVyaXRlZCBmcm9tIFJlbmRlcmJ1ZmZlckludGVy
ZmFjZSBpcyBub3QgdG8KKy8vIG5lZWQgdG8gZG8gYW55dGhpbmcgdXBvbiB0aGUgcmVmZXJlbmNl
IGNvdW50IHRvIHRoZSBwYXJlbnQgUmVuZGVyYnVmZmVyIGluY3JlbWVudGluZworLy8gb3IgZGVj
cmVtZW50aW5nLiAKK3ZvaWQgUmVuZGVyYnVmZmVySW50ZXJmYWNlOjphZGRQcm94eVJlZihjb25z
dCBSZW5kZXJidWZmZXIgKnByb3h5KQoreworfQorCit2b2lkIFJlbmRlcmJ1ZmZlckludGVyZmFj
ZTo6cmVsZWFzZVByb3h5KGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCit7Cit9CisKK0dMdWlu
dCBSZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldFJlZFNpemUoKSBjb25zdAoreworICAgIHJldHVy
biBnbDo6R2V0UmVkU2l6ZShnZXRBY3R1YWxGb3JtYXQoKSk7Cit9CisKK0dMdWludCBSZW5kZXJi
dWZmZXJJbnRlcmZhY2U6OmdldEdyZWVuU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdsOjpH
ZXRHcmVlblNpemUoZ2V0QWN0dWFsRm9ybWF0KCkpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVy
SW50ZXJmYWNlOjpnZXRCbHVlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdsOjpHZXRCbHVl
U2l6ZShnZXRBY3R1YWxGb3JtYXQoKSk7Cit9CisKK0dMdWludCBSZW5kZXJidWZmZXJJbnRlcmZh
Y2U6OmdldEFscGhhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdsOjpHZXRBbHBoYVNpemUo
Z2V0QWN0dWFsRm9ybWF0KCkpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVySW50ZXJmYWNlOjpn
ZXREZXB0aFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBnbDo6R2V0RGVwdGhTaXplKGdldEFj
dHVhbEZvcm1hdCgpKTsKK30KKworR0x1aW50IFJlbmRlcmJ1ZmZlckludGVyZmFjZTo6Z2V0U3Rl
bmNpbFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBnbDo6R2V0U3RlbmNpbFNpemUoZ2V0QWN0
dWFsRm9ybWF0KCkpOworfQorCisvLy8vLyBSZW5kZXJidWZmZXJUZXh0dXJlMkQgSW1wbGVtZW50
YXRpb24gLy8vLy8vLy8KKworUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpSZW5kZXJidWZmZXJUZXh0
dXJlMkQoVGV4dHVyZTJEICp0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0KSA6IG1UYXJnZXQodGFyZ2V0
KQoreworICAgIG1UZXh0dXJlMkQuc2V0KHRleHR1cmUpOworfQorCitSZW5kZXJidWZmZXJUZXh0
dXJlMkQ6On5SZW5kZXJidWZmZXJUZXh0dXJlMkQoKQoreworICAgIG1UZXh0dXJlMkQuc2V0KE5V
TEwpOworfQorCisvLyBUZXh0dXJlcyBuZWVkIHRvIG1haW50YWluIHRoZWlyIG93biByZWZlcmVu
Y2UgY291bnQgZm9yIHJlZmVyZW5jZXMgdmlhCisvLyBSZW5kZXJidWZmZXJzIGFjdGluZyBhcyBw
cm94aWVzLiBIZXJlLCB3ZSBub3RpZnkgdGhlIHRleHR1cmUgb2YgYSByZWZlcmVuY2UuCit2b2lk
IFJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6YWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpw
cm94eSkKK3sKKyAgICBtVGV4dHVyZTJELT5hZGRQcm94eVJlZihwcm94eSk7Cit9CisKK3ZvaWQg
UmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpyZWxlYXNlUHJveHkoY29uc3QgUmVuZGVyYnVmZmVyICpw
cm94eSkKK3sKKyAgICBtVGV4dHVyZTJELT5yZWxlYXNlUHJveHkocHJveHkpOworfQorCityeDo6
UmVuZGVyVGFyZ2V0ICpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldFJlbmRlclRhcmdldCgpCit7
CisgICAgcmV0dXJuIG1UZXh0dXJlMkQtPmdldFJlbmRlclRhcmdldChtVGFyZ2V0KTsKK30KKwor
cng6OlJlbmRlclRhcmdldCAqUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXREZXB0aFN0ZW5jaWwo
KQoreworICAgIHJldHVybiBtVGV4dHVyZTJELT5nZXREZXB0aFN0ZW5jaWwobVRhcmdldCk7Cit9
CisKK0dMc2l6ZWkgUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRXaWR0aCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1UZXh0dXJlMkQtPmdldFdpZHRoKDApOworfQorCitHTHNpemVpIFJlbmRlcmJ1
ZmZlclRleHR1cmUyRDo6Z2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmUy
RC0+Z2V0SGVpZ2h0KDApOworfQorCitHTGVudW0gUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRJ
bnRlcm5hbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlMkQtPmdldEludGVy
bmFsRm9ybWF0KDApOworfQorCitHTGVudW0gUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRBY3R1
YWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZTJELT5nZXRBY3R1YWxGb3Jt
YXQoMCk7Cit9CisKK0dMc2l6ZWkgUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRTYW1wbGVzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmJ1ZmZlclRl
eHR1cmUyRDo6Z2V0U2VyaWFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmUyRC0+Z2V0
UmVuZGVyVGFyZ2V0U2VyaWFsKG1UYXJnZXQpOworfQorCisvLy8vLyBSZW5kZXJidWZmZXJUZXh0
dXJlQ3ViZU1hcCBJbXBsZW1lbnRhdGlvbiAvLy8vLy8vLworCitSZW5kZXJidWZmZXJUZXh0dXJl
Q3ViZU1hcDo6UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXAoVGV4dHVyZUN1YmVNYXAgKnRleHR1
cmUsIEdMZW51bSB0YXJnZXQpIDogbVRhcmdldCh0YXJnZXQpCit7CisgICAgbVRleHR1cmVDdWJl
TWFwLnNldCh0ZXh0dXJlKTsKK30KKworUmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6On5SZW5k
ZXJidWZmZXJUZXh0dXJlQ3ViZU1hcCgpCit7CisgICAgbVRleHR1cmVDdWJlTWFwLnNldChOVUxM
KTsKK30KKworLy8gVGV4dHVyZXMgbmVlZCB0byBtYWludGFpbiB0aGVpciBvd24gcmVmZXJlbmNl
IGNvdW50IGZvciByZWZlcmVuY2VzIHZpYQorLy8gUmVuZGVyYnVmZmVycyBhY3RpbmcgYXMgcHJv
eGllcy4gSGVyZSwgd2Ugbm90aWZ5IHRoZSB0ZXh0dXJlIG9mIGEgcmVmZXJlbmNlLgordm9pZCBS
ZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6YWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVy
ICpwcm94eSkKK3sKKyAgICBtVGV4dHVyZUN1YmVNYXAtPmFkZFByb3h5UmVmKHByb3h5KTsKK30K
Kwordm9pZCBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6cmVsZWFzZVByb3h5KGNvbnN0IFJl
bmRlcmJ1ZmZlciAqcHJveHkpCit7CisgICAgbVRleHR1cmVDdWJlTWFwLT5yZWxlYXNlUHJveHko
cHJveHkpOworfQorCityeDo6UmVuZGVyVGFyZ2V0ICpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1h
cDo6Z2V0UmVuZGVyVGFyZ2V0KCkKK3sKKyAgICByZXR1cm4gbVRleHR1cmVDdWJlTWFwLT5nZXRS
ZW5kZXJUYXJnZXQobVRhcmdldCk7Cit9CisKK3J4OjpSZW5kZXJUYXJnZXQgKlJlbmRlcmJ1ZmZl
clRleHR1cmVDdWJlTWFwOjpnZXREZXB0aFN0ZW5jaWwoKQoreworICAgIHJldHVybiBOVUxMOwor
fQorCitHTHNpemVpIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRXaWR0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlQ3ViZU1hcC0+Z2V0V2lkdGgoR0xfVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9YLCAwKTsKK30KKworR0xzaXplaSBSZW5kZXJidWZmZXJUZXh0dXJlQ3Vi
ZU1hcDo6Z2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmVDdWJlTWFwLT5n
ZXRIZWlnaHQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwKTsKK30KKworR0xlbnVt
IFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1UZXh0dXJlQ3ViZU1hcC0+Z2V0SW50ZXJuYWxGb3JtYXQoR0xfVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9YLCAwKTsKK30KKworR0xlbnVtIFJlbmRlcmJ1ZmZlclRleHR1
cmVDdWJlTWFwOjpnZXRBY3R1YWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVy
ZUN1YmVNYXAtPmdldEFjdHVhbEZvcm1hdChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gs
IDApOworfQorCitHTHNpemVpIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRTYW1wbGVz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmJ1ZmZl
clRleHR1cmVDdWJlTWFwOjpnZXRTZXJpYWwoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVy
ZUN1YmVNYXAtPmdldFJlbmRlclRhcmdldFNlcmlhbChtVGFyZ2V0KTsKK30KKworLy8vLy8vIFJl
bmRlcmJ1ZmZlciBJbXBsZW1lbnRhdGlvbiAvLy8vLy8KKworUmVuZGVyYnVmZmVyOjpSZW5kZXJi
dWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGlkLCBSZW5kZXJidWZmZXJJbnRl
cmZhY2UgKmluc3RhbmNlKSA6IFJlZkNvdW50T2JqZWN0KGlkKQoreworICAgIEFTU0VSVChpbnN0
YW5jZSAhPSBOVUxMKTsKKyAgICBtSW5zdGFuY2UgPSBpbnN0YW5jZTsKK30KKworUmVuZGVyYnVm
ZmVyOjp+UmVuZGVyYnVmZmVyKCkKK3sKKyAgICBkZWxldGUgbUluc3RhbmNlOworfQorCisvLyBU
aGUgUmVuZGVyYnVmZmVySW50ZXJmYWNlIGNvbnRhaW5lZCBpbiB0aGlzIFJlbmRlcmJ1ZmZlciBt
YXkgbmVlZCB0byBtYWludGFpbgorLy8gaXRzIG93biByZWZlcmVuY2UgY291bnQsIHNvIHdlIHBh
c3MgaXQgb24gaGVyZS4KK3ZvaWQgUmVuZGVyYnVmZmVyOjphZGRSZWYoKSBjb25zdAoreworICAg
IG1JbnN0YW5jZS0+YWRkUHJveHlSZWYodGhpcyk7CisKKyAgICBSZWZDb3VudE9iamVjdDo6YWRk
UmVmKCk7Cit9CisKK3ZvaWQgUmVuZGVyYnVmZmVyOjpyZWxlYXNlKCkgY29uc3QKK3sKKyAgICBt
SW5zdGFuY2UtPnJlbGVhc2VQcm94eSh0aGlzKTsKKworICAgIFJlZkNvdW50T2JqZWN0OjpyZWxl
YXNlKCk7Cit9CisKK3J4OjpSZW5kZXJUYXJnZXQgKlJlbmRlcmJ1ZmZlcjo6Z2V0UmVuZGVyVGFy
Z2V0KCkKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRSZW5kZXJUYXJnZXQoKTsKK30KKwor
cng6OlJlbmRlclRhcmdldCAqUmVuZGVyYnVmZmVyOjpnZXREZXB0aFN0ZW5jaWwoKQoreworICAg
IHJldHVybiBtSW5zdGFuY2UtPmdldERlcHRoU3RlbmNpbCgpOworfQorCitHTHNpemVpIFJlbmRl
cmJ1ZmZlcjo6Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtSW5zdGFuY2UtPmdldFdp
ZHRoKCk7Cit9CisKK0dMc2l6ZWkgUmVuZGVyYnVmZmVyOjpnZXRIZWlnaHQoKSBjb25zdAorewor
ICAgIHJldHVybiBtSW5zdGFuY2UtPmdldEhlaWdodCgpOworfQorCitHTGVudW0gUmVuZGVyYnVm
ZmVyOjpnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+
Z2V0SW50ZXJuYWxGb3JtYXQoKTsKK30KKworR0xlbnVtIFJlbmRlcmJ1ZmZlcjo6Z2V0QWN0dWFs
Rm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRBY3R1YWxGb3JtYXQo
KTsKK30KKworR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0UmVkU2l6ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1JbnN0YW5jZS0+Z2V0UmVkU2l6ZSgpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVy
OjpnZXRHcmVlblNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtSW5zdGFuY2UtPmdldEdyZWVu
U2l6ZSgpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVyOjpnZXRCbHVlU2l6ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0Qmx1ZVNpemUoKTsKK30KKworR0x1aW50IFJlbmRl
cmJ1ZmZlcjo6Z2V0QWxwaGFTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5n
ZXRBbHBoYVNpemUoKTsKK30KKworR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0RGVwdGhTaXplKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXREZXB0aFNpemUoKTsKK30KKworR0x1
aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0U3RlbmNpbFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBt
SW5zdGFuY2UtPmdldFN0ZW5jaWxTaXplKCk7Cit9CisKK0dMc2l6ZWkgUmVuZGVyYnVmZmVyOjpn
ZXRTYW1wbGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRTYW1wbGVzKCk7
Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJidWZmZXI6OmdldFNlcmlhbCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0U2VyaWFsKCk7Cit9CisKK3ZvaWQgUmVuZGVyYnVmZmVy
OjpzZXRTdG9yYWdlKFJlbmRlcmJ1ZmZlclN0b3JhZ2UgKm5ld1N0b3JhZ2UpCit7CisgICAgQVNT
RVJUKG5ld1N0b3JhZ2UgIT0gTlVMTCk7CisKKyAgICBkZWxldGUgbUluc3RhbmNlOworICAgIG1J
bnN0YW5jZSA9IG5ld1N0b3JhZ2U7Cit9CisKK1JlbmRlcmJ1ZmZlclN0b3JhZ2U6OlJlbmRlcmJ1
ZmZlclN0b3JhZ2UoKSA6IG1TZXJpYWwoaXNzdWVTZXJpYWwoKSkKK3sKKyAgICBtV2lkdGggPSAw
OworICAgIG1IZWlnaHQgPSAwOworICAgIG1JbnRlcm5hbEZvcm1hdCA9IEdMX1JHQkE0OworICAg
IG1BY3R1YWxGb3JtYXQgPSBHTF9SR0JBOF9PRVM7CisgICAgbVNhbXBsZXMgPSAwOworfQorCitS
ZW5kZXJidWZmZXJTdG9yYWdlOjp+UmVuZGVyYnVmZmVyU3RvcmFnZSgpCit7Cit9CisKK3J4OjpS
ZW5kZXJUYXJnZXQgKlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldFJlbmRlclRhcmdldCgpCit7Cisg
ICAgcmV0dXJuIE5VTEw7Cit9CisKK3J4OjpSZW5kZXJUYXJnZXQgKlJlbmRlcmJ1ZmZlclN0b3Jh
Z2U6OmdldERlcHRoU3RlbmNpbCgpCit7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK0dMc2l6ZWkg
UmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtV2lk
dGg7Cit9CisKK0dMc2l6ZWkgUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0SGVpZ2h0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbUhlaWdodDsKK30KKworR0xlbnVtIFJlbmRlcmJ1ZmZlclN0b3JhZ2U6
OmdldEludGVybmFsRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUludGVybmFsRm9ybWF0
OworfQorCitHTGVudW0gUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0QWN0dWFsRm9ybWF0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbUFjdHVhbEZvcm1hdDsKK30KKworR0xzaXplaSBSZW5kZXJidWZm
ZXJTdG9yYWdlOjpnZXRTYW1wbGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBsZXM7Cit9
CisKK3Vuc2lnbmVkIGludCBSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRTZXJpYWwoKSBjb25zdAor
eworICAgIHJldHVybiBtU2VyaWFsOworfQorCit1bnNpZ25lZCBpbnQgUmVuZGVyYnVmZmVyU3Rv
cmFnZTo6aXNzdWVTZXJpYWwoKQoreworICAgIHJldHVybiBtQ3VycmVudFNlcmlhbCsrOworfQor
Cit1bnNpZ25lZCBpbnQgUmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNzdWVDdWJlU2VyaWFscygpCit7
CisgICAgdW5zaWduZWQgaW50IGZpcnN0U2VyaWFsID0gbUN1cnJlbnRTZXJpYWw7CisgICAgbUN1
cnJlbnRTZXJpYWwgKz0gNjsKKyAgICByZXR1cm4gZmlyc3RTZXJpYWw7Cit9CisKK0NvbG9yYnVm
ZmVyOjpDb2xvcmJ1ZmZlcihyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCByeDo6U3dhcENoYWluICpz
d2FwQ2hhaW4pCit7CisgICAgbVJlbmRlclRhcmdldCA9IHJlbmRlcmVyLT5jcmVhdGVSZW5kZXJU
YXJnZXQoc3dhcENoYWluLCBmYWxzZSk7IAorCisgICAgaWYgKG1SZW5kZXJUYXJnZXQpCisgICAg
eworICAgICAgICBtV2lkdGggPSBtUmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpOworICAgICAgICBt
SGVpZ2h0ID0gbVJlbmRlclRhcmdldC0+Z2V0SGVpZ2h0KCk7CisgICAgICAgIG1JbnRlcm5hbEZv
cm1hdCA9IG1SZW5kZXJUYXJnZXQtPmdldEludGVybmFsRm9ybWF0KCk7CisgICAgICAgIG1BY3R1
YWxGb3JtYXQgPSBtUmVuZGVyVGFyZ2V0LT5nZXRBY3R1YWxGb3JtYXQoKTsKKyAgICAgICAgbVNh
bXBsZXMgPSBtUmVuZGVyVGFyZ2V0LT5nZXRTYW1wbGVzKCk7CisgICAgfQorfQorCitDb2xvcmJ1
ZmZlcjo6Q29sb3JidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMpIDogbVJlbmRlclRhcmdldChO
VUxMKQoreworICAgIG1SZW5kZXJUYXJnZXQgPSByZW5kZXJlci0+Y3JlYXRlUmVuZGVyVGFyZ2V0
KHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgc2FtcGxlcywgZmFsc2UpOworCisgICAgaWYgKG1SZW5k
ZXJUYXJnZXQpCisgICAgeworICAgICAgICBtV2lkdGggPSB3aWR0aDsKKyAgICAgICAgbUhlaWdo
dCA9IGhlaWdodDsKKyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gZm9ybWF0OworICAgICAgICBt
QWN0dWFsRm9ybWF0ID0gbVJlbmRlclRhcmdldC0+Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAgICAg
IG1TYW1wbGVzID0gbVJlbmRlclRhcmdldC0+Z2V0U2FtcGxlcygpOworICAgIH0KK30KKworQ29s
b3JidWZmZXI6On5Db2xvcmJ1ZmZlcigpCit7CisgICAgaWYgKG1SZW5kZXJUYXJnZXQpCisgICAg
eworICAgICAgICBkZWxldGUgbVJlbmRlclRhcmdldDsKKyAgICB9Cit9CisKK3J4OjpSZW5kZXJU
YXJnZXQgKkNvbG9yYnVmZmVyOjpnZXRSZW5kZXJUYXJnZXQoKQoreworICAgIGlmIChtUmVuZGVy
VGFyZ2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1SZW5kZXJUYXJnZXQ7CisgICAgfQorCisg
ICAgcmV0dXJuIE5VTEw7Cit9CisKK0RlcHRoU3RlbmNpbGJ1ZmZlcjo6RGVwdGhTdGVuY2lsYnVm
ZmVyKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIHJ4OjpTd2FwQ2hhaW4gKnN3YXBDaGFpbikKK3sK
KyAgICBtRGVwdGhTdGVuY2lsID0gcmVuZGVyZXItPmNyZWF0ZVJlbmRlclRhcmdldChzd2FwQ2hh
aW4sIHRydWUpOworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgbVdpZHRo
ID0gbURlcHRoU3RlbmNpbC0+Z2V0V2lkdGgoKTsKKyAgICAgICAgbUhlaWdodCA9IG1EZXB0aFN0
ZW5jaWwtPmdldEhlaWdodCgpOworICAgICAgICBtSW50ZXJuYWxGb3JtYXQgPSBtRGVwdGhTdGVu
Y2lsLT5nZXRJbnRlcm5hbEZvcm1hdCgpOworICAgICAgICBtU2FtcGxlcyA9IG1EZXB0aFN0ZW5j
aWwtPmdldFNhbXBsZXMoKTsKKyAgICAgICAgbUFjdHVhbEZvcm1hdCA9IG1EZXB0aFN0ZW5jaWwt
PmdldEFjdHVhbEZvcm1hdCgpOworICAgIH0KK30KKworRGVwdGhTdGVuY2lsYnVmZmVyOjpEZXB0
aFN0ZW5jaWxidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCBHTHNpemVpIHNhbXBsZXMpCit7CisKKyAgICBtRGVwdGhTdGVuY2lsID0gcmVuZGVyZXIt
PmNyZWF0ZVJlbmRlclRhcmdldCh3aWR0aCwgaGVpZ2h0LCBHTF9ERVBUSDI0X1NURU5DSUw4X09F
Uywgc2FtcGxlcywgdHJ1ZSk7CisKKyAgICBtV2lkdGggPSBtRGVwdGhTdGVuY2lsLT5nZXRXaWR0
aCgpOworICAgIG1IZWlnaHQgPSBtRGVwdGhTdGVuY2lsLT5nZXRIZWlnaHQoKTsKKyAgICBtSW50
ZXJuYWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAgICBtQWN0dWFsRm9ybWF0
ID0gbURlcHRoU3RlbmNpbC0+Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAgbVNhbXBsZXMgPSBtRGVw
dGhTdGVuY2lsLT5nZXRTYW1wbGVzKCk7Cit9CisKK0RlcHRoU3RlbmNpbGJ1ZmZlcjo6fkRlcHRo
U3RlbmNpbGJ1ZmZlcigpCit7CisgICAgaWYgKG1EZXB0aFN0ZW5jaWwpCisgICAgeworICAgICAg
ICBkZWxldGUgbURlcHRoU3RlbmNpbDsKKyAgICB9Cit9CisKK3J4OjpSZW5kZXJUYXJnZXQgKkRl
cHRoU3RlbmNpbGJ1ZmZlcjo6Z2V0RGVwdGhTdGVuY2lsKCkKK3sKKyAgICBpZiAobURlcHRoU3Rl
bmNpbCkKKyAgICB7CisgICAgICAgIHJldHVybiBtRGVwdGhTdGVuY2lsOworICAgIH0KKworICAg
IHJldHVybiBOVUxMOworfQorCitEZXB0aGJ1ZmZlcjo6RGVwdGhidWZmZXIocng6OlJlbmRlcmVy
ICpyZW5kZXJlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTHNpemVpIHNhbXBsZXMpIDogRGVw
dGhTdGVuY2lsYnVmZmVyKHJlbmRlcmVyLCB3aWR0aCwgaGVpZ2h0LCBzYW1wbGVzKQoreworICAg
IGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gR0xf
REVQVEhfQ09NUE9ORU5UMTY7ICAgLy8gSWYgdGhlIHJlbmRlcmJ1ZmZlciBwYXJhbWV0ZXJzIGFy
ZSBxdWVyaWVkLCB0aGUgY2FsbGluZyBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGV4cGVjdCBvbmUgb2YgdGhlIHZhbGlk
IHJlbmRlcmJ1ZmZlciBmb3JtYXRzIGZvciB1c2UgaW4gCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdsUmVuZGVyYnVmZmVyU3RvcmFnZQorICAg
IH0KK30KKworRGVwdGhidWZmZXI6On5EZXB0aGJ1ZmZlcigpCit7Cit9CisKK1N0ZW5jaWxidWZm
ZXI6OlN0ZW5jaWxidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0LCBHTHNpemVpIHNhbXBsZXMpIDogRGVwdGhTdGVuY2lsYnVmZmVyKHJlbmRlcmVyLCB3
aWR0aCwgaGVpZ2h0LCBzYW1wbGVzKQoreworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsK
KyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gR0xfU1RFTkNJTF9JTkRFWDg7ICAgLy8gSWYgdGhl
IHJlbmRlcmJ1ZmZlciBwYXJhbWV0ZXJzIGFyZSBxdWVyaWVkLCB0aGUgY2FsbGluZyBmdW5jdGlv
bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxs
IGV4cGVjdCBvbmUgb2YgdGhlIHZhbGlkIHJlbmRlcmJ1ZmZlciBmb3JtYXRzIGZvciB1c2UgaW4g
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdsUmVu
ZGVyYnVmZmVyU3RvcmFnZQorICAgIH0KK30KKworU3RlbmNpbGJ1ZmZlcjo6flN0ZW5jaWxidWZm
ZXIoKQoreworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL1JlbmRlcmJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI2MSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVyYnVmZmVyLmg6
IERlZmluZXMgdGhlIHdyYXBwZXIgY2xhc3MgZ2w6OlJlbmRlcmJ1ZmZlciwgYXMgd2VsbCBhcyB0
aGUKKy8vIGNsYXNzIGhpZXJhcmNoeSB1c2VkIHRvIHN0b3JlIGl0cyBjb250ZW50czogUmVuZGVy
YnVmZmVyU3RvcmFnZSwgQ29sb3JidWZmZXIsCisvLyBEZXB0aFN0ZW5jaWxidWZmZXIsIERlcHRo
YnVmZmVyIGFuZCBTdGVuY2lsYnVmZmVyLiBJbXBsZW1lbnRzIEdMIHJlbmRlcmJ1ZmZlcgorLy8g
b2JqZWN0cyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2Vj
dGlvbiA0LjQuMyBwYWdlIDEwOC4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSQlVGRkVSX0hf
CisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJCVUZGRVJfSF8KKworI2RlZmluZSBHTF9BUElDQUxM
CisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5o
IgorI2luY2x1ZGUgImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgorCituYW1lc3BhY2UgcngKK3sK
K2NsYXNzIFJlbmRlcmVyOworY2xhc3MgU3dhcENoYWluOworY2xhc3MgUmVuZGVyVGFyZ2V0Owor
fQorCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIFRleHR1cmUyRDsKK2NsYXNzIFRleHR1cmVDdWJl
TWFwOworY2xhc3MgUmVuZGVyYnVmZmVyOworY2xhc3MgQ29sb3JidWZmZXI7CitjbGFzcyBEZXB0
aFN0ZW5jaWxidWZmZXI7CisKK2NsYXNzIFJlbmRlcmJ1ZmZlckludGVyZmFjZQoreworICBwdWJs
aWM6CisgICAgUmVuZGVyYnVmZmVySW50ZXJmYWNlKCk7CisKKyAgICB2aXJ0dWFsIH5SZW5kZXJi
dWZmZXJJbnRlcmZhY2UoKSB7fTsKKworICAgIHZpcnR1YWwgdm9pZCBhZGRQcm94eVJlZihjb25z
dCBSZW5kZXJidWZmZXIgKnByb3h5KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVByb3h5KGNv
bnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpOworCisgICAgdmlydHVhbCByeDo6UmVuZGVyVGFyZ2V0
ICpnZXRSZW5kZXJUYXJnZXQoKSA9IDA7CisgICAgdmlydHVhbCByeDo6UmVuZGVyVGFyZ2V0ICpn
ZXREZXB0aFN0ZW5jaWwoKSA9IDA7CisKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0V2lkdGgoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBHTHNpemVpIGdldEhlaWdodCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEdMZW51bSBnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIEdMZW51bSBnZXRBY3R1YWxGb3JtYXQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBHTHNp
emVpIGdldFNhbXBsZXMoKSBjb25zdCA9IDA7CisKKyAgICBHTHVpbnQgZ2V0UmVkU2l6ZSgpIGNv
bnN0OworICAgIEdMdWludCBnZXRHcmVlblNpemUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0Qmx1
ZVNpemUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0QWxwaGFTaXplKCkgY29uc3Q7CisgICAgR0x1
aW50IGdldERlcHRoU2l6ZSgpIGNvbnN0OworICAgIEdMdWludCBnZXRTdGVuY2lsU2l6ZSgpIGNv
bnN0OworCisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3QgPSAwOwor
CisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlcmJ1ZmZlcklu
dGVyZmFjZSk7Cit9OworCitjbGFzcyBSZW5kZXJidWZmZXJUZXh0dXJlMkQgOiBwdWJsaWMgUmVu
ZGVyYnVmZmVySW50ZXJmYWNlCit7CisgIHB1YmxpYzoKKyAgICBSZW5kZXJidWZmZXJUZXh0dXJl
MkQoVGV4dHVyZTJEICp0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0KTsKKworICAgIHZpcnR1YWwgflJl
bmRlcmJ1ZmZlclRleHR1cmUyRCgpOworCisgICAgdm9pZCBhZGRQcm94eVJlZihjb25zdCBSZW5k
ZXJidWZmZXIgKnByb3h5KTsKKyAgICB2b2lkIHJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZm
ZXIgKnByb3h5KTsKKworICAgIHJ4OjpSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldCgpOwor
ICAgIHJ4OjpSZW5kZXJUYXJnZXQgKmdldERlcHRoU3RlbmNpbCgpOworCisgICAgdmlydHVhbCBH
THNpemVpIGdldFdpZHRoKCkgY29uc3Q7CisgICAgdmlydHVhbCBHTHNpemVpIGdldEhlaWdodCgp
IGNvbnN0OworICAgIHZpcnR1YWwgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBHTGVudW0gZ2V0QWN0dWFsRm9ybWF0KCkgY29uc3Q7CisgICAgdmlydHVhbCBH
THNpemVpIGdldFNhbXBsZXMoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdl
dFNlcmlhbCgpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOKFJlbmRlcmJ1ZmZlclRleHR1cmUyRCk7CisKKyAgICBCaW5kaW5nUG9pbnRlciA8VGV4dHVy
ZTJEPiBtVGV4dHVyZTJEOworICAgIEdMZW51bSBtVGFyZ2V0OworfTsKKworY2xhc3MgUmVuZGVy
YnVmZmVyVGV4dHVyZUN1YmVNYXAgOiBwdWJsaWMgUmVuZGVyYnVmZmVySW50ZXJmYWNlCit7Cisg
IHB1YmxpYzoKKyAgICBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcChUZXh0dXJlQ3ViZU1hcCAq
dGV4dHVyZSwgR0xlbnVtIHRhcmdldCk7CisKKyAgICB2aXJ0dWFsIH5SZW5kZXJidWZmZXJUZXh0
dXJlQ3ViZU1hcCgpOworCisgICAgdm9pZCBhZGRQcm94eVJlZihjb25zdCBSZW5kZXJidWZmZXIg
KnByb3h5KTsKKyAgICB2b2lkIHJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5
KTsKKworICAgIHJ4OjpSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldCgpOworICAgIHJ4OjpS
ZW5kZXJUYXJnZXQgKmdldERlcHRoU3RlbmNpbCgpOworCisgICAgdmlydHVhbCBHTHNpemVpIGdl
dFdpZHRoKCkgY29uc3Q7CisgICAgdmlydHVhbCBHTHNpemVpIGdldEhlaWdodCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3Q7CisgICAgdmlydHVh
bCBHTGVudW0gZ2V0QWN0dWFsRm9ybWF0KCkgY29uc3Q7CisgICAgdmlydHVhbCBHTHNpemVpIGdl
dFNhbXBsZXMoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNlcmlhbCgp
IGNvbnN0OworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRl
cmJ1ZmZlclRleHR1cmVDdWJlTWFwKTsKKworICAgIEJpbmRpbmdQb2ludGVyIDxUZXh0dXJlQ3Vi
ZU1hcD4gbVRleHR1cmVDdWJlTWFwOworICAgIEdMZW51bSBtVGFyZ2V0OworfTsKKworLy8gQSBj
bGFzcyBkZXJpdmVkIGZyb20gUmVuZGVyYnVmZmVyU3RvcmFnZSBpcyBjcmVhdGVkIHdoZW5ldmVy
IGdsUmVuZGVyYnVmZmVyU3RvcmFnZQorLy8gaXMgY2FsbGVkLiBUaGUgc3BlY2lmaWMgY29uY3Jl
dGUgdHlwZSBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGludGVybmFsIGZvcm1hdCBpcworLy8gY29s
b3VyIGRlcHRoLCBzdGVuY2lsIG9yIHBhY2tlZCBkZXB0aC9zdGVuY2lsLgorY2xhc3MgUmVuZGVy
YnVmZmVyU3RvcmFnZSA6IHB1YmxpYyBSZW5kZXJidWZmZXJJbnRlcmZhY2UKK3sKKyAgcHVibGlj
OgorICAgIFJlbmRlcmJ1ZmZlclN0b3JhZ2UoKTsKKworICAgIHZpcnR1YWwgflJlbmRlcmJ1ZmZl
clN0b3JhZ2UoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHJ4OjpSZW5kZXJUYXJnZXQgKmdldFJlbmRl
clRhcmdldCgpOworICAgIHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0RGVwdGhTdGVuY2ls
KCk7CisKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0V2lkdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IEdMc2l6ZWkgZ2V0SGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBHTGVudW0gZ2V0SW50ZXJu
YWxGb3JtYXQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEdMZW51bSBnZXRBY3R1YWxGb3JtYXQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0U2FtcGxlcygpIGNvbnN0OworCisgICAgdmly
dHVhbCB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgaW50IGlzc3VlU2VyaWFsKCk7CisgICAgc3RhdGljIHVuc2lnbmVkIGludCBpc3N1ZUN1YmVT
ZXJpYWxzKCk7CisKKyAgcHJvdGVjdGVkOgorICAgIEdMc2l6ZWkgbVdpZHRoOworICAgIEdMc2l6
ZWkgbUhlaWdodDsKKyAgICBHTGVudW0gbUludGVybmFsRm9ybWF0OworICAgIEdMZW51bSBtQWN0
dWFsRm9ybWF0OworICAgIEdMc2l6ZWkgbVNhbXBsZXM7CisKKyAgcHJpdmF0ZToKKyAgICBESVNB
TExPV19DT1BZX0FORF9BU1NJR04oUmVuZGVyYnVmZmVyU3RvcmFnZSk7CisKKyAgICBjb25zdCB1
bnNpZ25lZCBpbnQgbVNlcmlhbDsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgbUN1cnJlbnRT
ZXJpYWw7Cit9OworCisvLyBSZW5kZXJidWZmZXIgaW1wbGVtZW50cyB0aGUgR0wgcmVuZGVyYnVm
ZmVyIG9iamVjdC4KKy8vIEl0J3Mgb25seSBhIHByb3h5IGZvciBhIFJlbmRlcmJ1ZmZlckludGVy
ZmFjZSBpbnN0YW5jZTsgdGhlIGludGVybmFsIG9iamVjdAorLy8gY2FuIGNoYW5nZSB3aGVuZXZl
ciBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UgaXMgY2FsbGVkLgorY2xhc3MgUmVuZGVyYnVmZmVyIDog
cHVibGljIFJlZkNvdW50T2JqZWN0Cit7CisgIHB1YmxpYzoKKyAgICBSZW5kZXJidWZmZXIocng6
OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGlkLCBSZW5kZXJidWZmZXJJbnRlcmZhY2UgKnN0
b3JhZ2UpOworCisgICAgdmlydHVhbCB+UmVuZGVyYnVmZmVyKCk7CisKKyAgICAvLyBUaGVzZSBm
dW5jdGlvbnMgZnJvbSBSZWZDb3VudE9iamVjdCBhcmUgb3ZlcmxvYWRlZCBoZXJlIGJlY2F1c2UK
KyAgICAvLyBUZXh0dXJlcyBuZWVkIHRvIG1haW50YWluIHRoZWlyIG93biBjb3VudCBvZiByZWZl
cmVuY2VzIHRvIHRoZW0gdmlhCisgICAgLy8gUmVuZGVyYnVmZmVycy9SZW5kZXJidWZmZXJUZXh0
dXJlcy4gVGhlc2UgZnVuY3Rpb25zIGludm9rZSB0aG9zZQorICAgIC8vIHJlZmVyZW5jZSBjb3Vu
dGluZyBmdW5jdGlvbnMgb24gdGhlIFJlbmRlcmJ1ZmZlckludGVyZmFjZS4KKyAgICB2b2lkIGFk
ZFJlZigpIGNvbnN0OworICAgIHZvaWQgcmVsZWFzZSgpIGNvbnN0OworCisgICAgcng6OlJlbmRl
clRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KCk7CisgICAgcng6OlJlbmRlclRhcmdldCAqZ2V0RGVw
dGhTdGVuY2lsKCk7CisKKyAgICBHTHNpemVpIGdldFdpZHRoKCkgY29uc3Q7CisgICAgR0xzaXpl
aSBnZXRIZWlnaHQoKSBjb25zdDsKKyAgICBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25z
dDsKKyAgICBHTGVudW0gZ2V0QWN0dWFsRm9ybWF0KCkgY29uc3Q7CisgICAgR0x1aW50IGdldFJl
ZFNpemUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0R3JlZW5TaXplKCkgY29uc3Q7CisgICAgR0x1
aW50IGdldEJsdWVTaXplKCkgY29uc3Q7CisgICAgR0x1aW50IGdldEFscGhhU2l6ZSgpIGNvbnN0
OworICAgIEdMdWludCBnZXREZXB0aFNpemUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0U3RlbmNp
bFNpemUoKSBjb25zdDsKKyAgICBHTHNpemVpIGdldFNhbXBsZXMoKSBjb25zdDsKKworICAgIHVu
c2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKKworICAgIHZvaWQgc2V0U3RvcmFnZShSZW5k
ZXJidWZmZXJTdG9yYWdlICpuZXdTdG9yYWdlKTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTihSZW5kZXJidWZmZXIpOworCisgICAgUmVuZGVyYnVmZmVySW50ZXJm
YWNlICptSW5zdGFuY2U7Cit9OworCitjbGFzcyBDb2xvcmJ1ZmZlciA6IHB1YmxpYyBSZW5kZXJi
dWZmZXJTdG9yYWdlCit7CisgIHB1YmxpYzoKKyAgICBDb2xvcmJ1ZmZlcihyeDo6UmVuZGVyZXIg
KnJlbmRlcmVyLCByeDo6U3dhcENoYWluICpzd2FwQ2hhaW4pOworICAgIENvbG9yYnVmZmVyKHJ4
OjpSZW5kZXJlciAqcmVuZGVyZXIsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVu
dW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMpOworCisgICAgdmlydHVhbCB+Q29sb3JidWZmZXIo
KTsKKworICAgIHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KCk7CisK
KyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oQ29sb3JidWZmZXIpOwor
CisgICAgcng6OlJlbmRlclRhcmdldCAqbVJlbmRlclRhcmdldDsKK307CisKK2NsYXNzIERlcHRo
U3RlbmNpbGJ1ZmZlciA6IHB1YmxpYyBSZW5kZXJidWZmZXJTdG9yYWdlCit7CisgIHB1YmxpYzoK
KyAgICBEZXB0aFN0ZW5jaWxidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgcng6OlN3YXBD
aGFpbiAqc3dhcENoYWluKTsKKyAgICBEZXB0aFN0ZW5jaWxidWZmZXIocng6OlJlbmRlcmVyICpy
ZW5kZXJlciwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgc2FtcGxlcyk7
CisKKyAgICB+RGVwdGhTdGVuY2lsYnVmZmVyKCk7CisKKyAgICB2aXJ0dWFsIHJ4OjpSZW5kZXJU
YXJnZXQgKmdldERlcHRoU3RlbmNpbCgpOworCisgIHByb3RlY3RlZDoKKyAgICByeDo6UmVuZGVy
VGFyZ2V0ICAqbURlcHRoU3RlbmNpbDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihEZXB0aFN0ZW5jaWxidWZmZXIpOworfTsKKworY2xhc3MgRGVwdGhidWZmZXIg
OiBwdWJsaWMgRGVwdGhTdGVuY2lsYnVmZmVyCit7CisgIHB1YmxpYzoKKyAgICBEZXB0aGJ1ZmZl
cihyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwg
R0xzaXplaSBzYW1wbGVzKTsKKworICAgIHZpcnR1YWwgfkRlcHRoYnVmZmVyKCk7CisKKyAgcHJp
dmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oRGVwdGhidWZmZXIpOworfTsKKwor
Y2xhc3MgU3RlbmNpbGJ1ZmZlciA6IHB1YmxpYyBEZXB0aFN0ZW5jaWxidWZmZXIKK3sKKyAgcHVi
bGljOgorICAgIFN0ZW5jaWxidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgc2FtcGxlcyk7CisKKyAgICB2aXJ0dWFsIH5T
dGVuY2lsYnVmZmVyKCk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oU3RlbmNpbGJ1ZmZlcik7Cit9OworfQorCisjZW5kaWYgICAvLyBMSUJHTEVTVjJfUkVOREVS
QlVGRkVSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Jl
c291cmNlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMyMiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisvLyBSZXNvdXJjZU1hbmFnZXIuY3BwOiBJbXBsZW1lbnRzIHRoZSBn
bDo6UmVzb3VyY2VNYW5hZ2VyIGNsYXNzLCB3aGljaCB0cmFja3MgYW5kIAorLy8gcmV0cmlldmVz
IG9iamVjdHMgd2hpY2ggbWF5IGJlIHNoYXJlZCBieSBtdWx0aXBsZSBDb250ZXh0cy4KKworI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2
Mi9CdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbS5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvU2hhZGVyLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL1RleHR1cmUuaCIKKworbmFtZXNwYWNlIGdsCit7CitSZXNvdXJj
ZU1hbmFnZXI6OlJlc291cmNlTWFuYWdlcihyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKQoreworICAg
IG1SZWZDb3VudCA9IDE7CisgICAgbVJlbmRlcmVyID0gcmVuZGVyZXI7Cit9CisKK1Jlc291cmNl
TWFuYWdlcjo6flJlc291cmNlTWFuYWdlcigpCit7CisgICAgd2hpbGUgKCFtQnVmZmVyTWFwLmVt
cHR5KCkpCisgICAgeworICAgICAgICBkZWxldGVCdWZmZXIobUJ1ZmZlck1hcC5iZWdpbigpLT5m
aXJzdCk7CisgICAgfQorCisgICAgd2hpbGUgKCFtUHJvZ3JhbU1hcC5lbXB0eSgpKQorICAgIHsK
KyAgICAgICAgZGVsZXRlUHJvZ3JhbShtUHJvZ3JhbU1hcC5iZWdpbigpLT5maXJzdCk7CisgICAg
fQorCisgICAgd2hpbGUgKCFtU2hhZGVyTWFwLmVtcHR5KCkpCisgICAgeworICAgICAgICBkZWxl
dGVTaGFkZXIobVNoYWRlck1hcC5iZWdpbigpLT5maXJzdCk7CisgICAgfQorCisgICAgd2hpbGUg
KCFtUmVuZGVyYnVmZmVyTWFwLmVtcHR5KCkpCisgICAgeworICAgICAgICBkZWxldGVSZW5kZXJi
dWZmZXIobVJlbmRlcmJ1ZmZlck1hcC5iZWdpbigpLT5maXJzdCk7CisgICAgfQorCisgICAgd2hp
bGUgKCFtVGV4dHVyZU1hcC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlVGV4dHVyZSht
VGV4dHVyZU1hcC5iZWdpbigpLT5maXJzdCk7CisgICAgfQorfQorCit2b2lkIFJlc291cmNlTWFu
YWdlcjo6YWRkUmVmKCkKK3sKKyAgICBtUmVmQ291bnQrKzsKK30KKwordm9pZCBSZXNvdXJjZU1h
bmFnZXI6OnJlbGVhc2UoKQoreworICAgIGlmICgtLW1SZWZDb3VudCA9PSAwKQorICAgIHsKKyAg
ICAgICAgZGVsZXRlIHRoaXM7CisgICAgfQorfQorCisvLyBSZXR1cm5zIGFuIHVudXNlZCBidWZm
ZXIgbmFtZQorR0x1aW50IFJlc291cmNlTWFuYWdlcjo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICBH
THVpbnQgaGFuZGxlID0gbUJ1ZmZlckhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworCisgICAg
bUJ1ZmZlck1hcFtoYW5kbGVdID0gTlVMTDsKKworICAgIHJldHVybiBoYW5kbGU7Cit9CisKKy8v
IFJldHVybnMgYW4gdW51c2VkIHNoYWRlci9wcm9ncmFtIG5hbWUKK0dMdWludCBSZXNvdXJjZU1h
bmFnZXI6OmNyZWF0ZVNoYWRlcihHTGVudW0gdHlwZSkKK3sKKyAgICBHTHVpbnQgaGFuZGxlID0g
bVByb2dyYW1TaGFkZXJIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKKworICAgIGlmICh0eXBl
ID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgeworICAgICAgICBtU2hhZGVyTWFwW2hhbmRsZV0g
PSBuZXcgVmVydGV4U2hhZGVyKHRoaXMsIG1SZW5kZXJlciwgaGFuZGxlKTsKKyAgICB9CisgICAg
ZWxzZSBpZiAodHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCisgICAgeworICAgICAgICBtU2hh
ZGVyTWFwW2hhbmRsZV0gPSBuZXcgRnJhZ21lbnRTaGFkZXIodGhpcywgbVJlbmRlcmVyLCBoYW5k
bGUpOworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICByZXR1cm4gaGFuZGxl
OworfQorCisvLyBSZXR1cm5zIGFuIHVudXNlZCBwcm9ncmFtL3NoYWRlciBuYW1lCitHTHVpbnQg
UmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICBHTHVpbnQgaGFuZGxlID0g
bVByb2dyYW1TaGFkZXJIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKKworICAgIG1Qcm9ncmFt
TWFwW2hhbmRsZV0gPSBuZXcgUHJvZ3JhbShtUmVuZGVyZXIsIHRoaXMsIGhhbmRsZSk7CisKKyAg
ICByZXR1cm4gaGFuZGxlOworfQorCisvLyBSZXR1cm5zIGFuIHVudXNlZCB0ZXh0dXJlIG5hbWUK
K0dMdWludCBSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIEdMdWludCBo
YW5kbGUgPSBtVGV4dHVyZUhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworCisgICAgbVRleHR1
cmVNYXBbaGFuZGxlXSA9IE5VTEw7CisKKyAgICByZXR1cm4gaGFuZGxlOworfQorCisvLyBSZXR1
cm5zIGFuIHVudXNlZCByZW5kZXJidWZmZXIgbmFtZQorR0x1aW50IFJlc291cmNlTWFuYWdlcjo6
Y3JlYXRlUmVuZGVyYnVmZmVyKCkKK3sKKyAgICBHTHVpbnQgaGFuZGxlID0gbVJlbmRlcmJ1ZmZl
ckhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworCisgICAgbVJlbmRlcmJ1ZmZlck1hcFtoYW5k
bGVdID0gTlVMTDsKKworICAgIHJldHVybiBoYW5kbGU7Cit9CisKK3ZvaWQgUmVzb3VyY2VNYW5h
Z2VyOjpkZWxldGVCdWZmZXIoR0x1aW50IGJ1ZmZlcikKK3sKKyAgICBCdWZmZXJNYXA6Oml0ZXJh
dG9yIGJ1ZmZlck9iamVjdCA9IG1CdWZmZXJNYXAuZmluZChidWZmZXIpOworCisgICAgaWYgKGJ1
ZmZlck9iamVjdCAhPSBtQnVmZmVyTWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgbUJ1ZmZlckhh
bmRsZUFsbG9jYXRvci5yZWxlYXNlKGJ1ZmZlck9iamVjdC0+Zmlyc3QpOworICAgICAgICBpZiAo
YnVmZmVyT2JqZWN0LT5zZWNvbmQpIGJ1ZmZlck9iamVjdC0+c2Vjb25kLT5yZWxlYXNlKCk7Cisg
ICAgICAgIG1CdWZmZXJNYXAuZXJhc2UoYnVmZmVyT2JqZWN0KTsKKyAgICB9Cit9CisKK3ZvaWQg
UmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVTaGFkZXIoR0x1aW50IHNoYWRlcikKK3sKKyAgICBTaGFk
ZXJNYXA6Oml0ZXJhdG9yIHNoYWRlck9iamVjdCA9IG1TaGFkZXJNYXAuZmluZChzaGFkZXIpOwor
CisgICAgaWYgKHNoYWRlck9iamVjdCAhPSBtU2hhZGVyTWFwLmVuZCgpKQorICAgIHsKKyAgICAg
ICAgaWYgKHNoYWRlck9iamVjdC0+c2Vjb25kLT5nZXRSZWZDb3VudCgpID09IDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1Qcm9ncmFtU2hhZGVySGFuZGxlQWxsb2NhdG9yLnJlbGVhc2Uoc2hh
ZGVyT2JqZWN0LT5maXJzdCk7CisgICAgICAgICAgICBkZWxldGUgc2hhZGVyT2JqZWN0LT5zZWNv
bmQ7CisgICAgICAgICAgICBtU2hhZGVyTWFwLmVyYXNlKHNoYWRlck9iamVjdCk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBzaGFkZXJPYmplY3QtPnNl
Y29uZC0+ZmxhZ0ZvckRlbGV0aW9uKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUmVz
b3VyY2VNYW5hZ2VyOjpkZWxldGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQoreworICAgIFByb2dy
YW1NYXA6Oml0ZXJhdG9yIHByb2dyYW1PYmplY3QgPSBtUHJvZ3JhbU1hcC5maW5kKHByb2dyYW0p
OworCisgICAgaWYgKHByb2dyYW1PYmplY3QgIT0gbVByb2dyYW1NYXAuZW5kKCkpCisgICAgewor
ICAgICAgICBpZiAocHJvZ3JhbU9iamVjdC0+c2Vjb25kLT5nZXRSZWZDb3VudCgpID09IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1Qcm9ncmFtU2hhZGVySGFuZGxlQWxsb2NhdG9yLnJlbGVh
c2UocHJvZ3JhbU9iamVjdC0+Zmlyc3QpOworICAgICAgICAgICAgZGVsZXRlIHByb2dyYW1PYmpl
Y3QtPnNlY29uZDsKKyAgICAgICAgICAgIG1Qcm9ncmFtTWFwLmVyYXNlKHByb2dyYW1PYmplY3Qp
OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHByb2dy
YW1PYmplY3QtPnNlY29uZC0+ZmxhZ0ZvckRlbGV0aW9uKCk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgUmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVUZXh0dXJlKEdMdWludCB0ZXh0dXJlKQor
eworICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIHRleHR1cmVPYmplY3QgPSBtVGV4dHVyZU1hcC5m
aW5kKHRleHR1cmUpOworCisgICAgaWYgKHRleHR1cmVPYmplY3QgIT0gbVRleHR1cmVNYXAuZW5k
KCkpCisgICAgeworICAgICAgICBtVGV4dHVyZUhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKHRleHR1
cmVPYmplY3QtPmZpcnN0KTsKKyAgICAgICAgaWYgKHRleHR1cmVPYmplY3QtPnNlY29uZCkgdGV4
dHVyZU9iamVjdC0+c2Vjb25kLT5yZWxlYXNlKCk7CisgICAgICAgIG1UZXh0dXJlTWFwLmVyYXNl
KHRleHR1cmVPYmplY3QpOworICAgIH0KK30KKwordm9pZCBSZXNvdXJjZU1hbmFnZXI6OmRlbGV0
ZVJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVyKQoreworICAgIFJlbmRlcmJ1ZmZlck1h
cDo6aXRlcmF0b3IgcmVuZGVyYnVmZmVyT2JqZWN0ID0gbVJlbmRlcmJ1ZmZlck1hcC5maW5kKHJl
bmRlcmJ1ZmZlcik7CisKKyAgICBpZiAocmVuZGVyYnVmZmVyT2JqZWN0ICE9IG1SZW5kZXJidWZm
ZXJNYXAuZW5kKCkpCisgICAgeworICAgICAgICBtUmVuZGVyYnVmZmVySGFuZGxlQWxsb2NhdG9y
LnJlbGVhc2UocmVuZGVyYnVmZmVyT2JqZWN0LT5maXJzdCk7CisgICAgICAgIGlmIChyZW5kZXJi
dWZmZXJPYmplY3QtPnNlY29uZCkgcmVuZGVyYnVmZmVyT2JqZWN0LT5zZWNvbmQtPnJlbGVhc2Uo
KTsKKyAgICAgICAgbVJlbmRlcmJ1ZmZlck1hcC5lcmFzZShyZW5kZXJidWZmZXJPYmplY3QpOwor
ICAgIH0KK30KKworQnVmZmVyICpSZXNvdXJjZU1hbmFnZXI6OmdldEJ1ZmZlcih1bnNpZ25lZCBp
bnQgaGFuZGxlKQoreworICAgIEJ1ZmZlck1hcDo6aXRlcmF0b3IgYnVmZmVyID0gbUJ1ZmZlck1h
cC5maW5kKGhhbmRsZSk7CisKKyAgICBpZiAoYnVmZmVyID09IG1CdWZmZXJNYXAuZW5kKCkpCisg
ICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJ1ZmZlci0+c2Vjb25kOworICAgIH0KK30KKworU2hhZGVyICpSZXNvdXJjZU1h
bmFnZXI6OmdldFNoYWRlcih1bnNpZ25lZCBpbnQgaGFuZGxlKQoreworICAgIFNoYWRlck1hcDo6
aXRlcmF0b3Igc2hhZGVyID0gbVNoYWRlck1hcC5maW5kKGhhbmRsZSk7CisKKyAgICBpZiAoc2hh
ZGVyID09IG1TaGFkZXJNYXAuZW5kKCkpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNoYWRlci0+c2Vjb25kOworICAg
IH0KK30KKworVGV4dHVyZSAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRUZXh0dXJlKHVuc2lnbmVkIGlu
dCBoYW5kbGUpCit7CisgICAgaWYgKGhhbmRsZSA9PSAwKSByZXR1cm4gTlVMTDsKKworICAgIFRl
eHR1cmVNYXA6Oml0ZXJhdG9yIHRleHR1cmUgPSBtVGV4dHVyZU1hcC5maW5kKGhhbmRsZSk7CisK
KyAgICBpZiAodGV4dHVyZSA9PSBtVGV4dHVyZU1hcC5lbmQoKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gdGV4dHVy
ZS0+c2Vjb25kOworICAgIH0KK30KKworUHJvZ3JhbSAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRQcm9n
cmFtKHVuc2lnbmVkIGludCBoYW5kbGUpCit7CisgICAgUHJvZ3JhbU1hcDo6aXRlcmF0b3IgcHJv
Z3JhbSA9IG1Qcm9ncmFtTWFwLmZpbmQoaGFuZGxlKTsKKworICAgIGlmIChwcm9ncmFtID09IG1Q
cm9ncmFtTWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9ncmFtLT5zZWNvbmQ7CisgICAgfQorfQor
CitSZW5kZXJidWZmZXIgKlJlc291cmNlTWFuYWdlcjo6Z2V0UmVuZGVyYnVmZmVyKHVuc2lnbmVk
IGludCBoYW5kbGUpCit7CisgICAgUmVuZGVyYnVmZmVyTWFwOjppdGVyYXRvciByZW5kZXJidWZm
ZXIgPSBtUmVuZGVyYnVmZmVyTWFwLmZpbmQoaGFuZGxlKTsKKworICAgIGlmIChyZW5kZXJidWZm
ZXIgPT0gbVJlbmRlcmJ1ZmZlck1hcC5lbmQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBOVUxM
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gcmVuZGVyYnVmZmVyLT5z
ZWNvbmQ7CisgICAgfQorfQorCit2b2lkIFJlc291cmNlTWFuYWdlcjo6c2V0UmVuZGVyYnVmZmVy
KEdMdWludCBoYW5kbGUsIFJlbmRlcmJ1ZmZlciAqYnVmZmVyKQoreworICAgIG1SZW5kZXJidWZm
ZXJNYXBbaGFuZGxlXSA9IGJ1ZmZlcjsKK30KKwordm9pZCBSZXNvdXJjZU1hbmFnZXI6OmNoZWNr
QnVmZmVyQWxsb2NhdGlvbih1bnNpZ25lZCBpbnQgYnVmZmVyKQoreworICAgIGlmIChidWZmZXIg
IT0gMCAmJiAhZ2V0QnVmZmVyKGJ1ZmZlcikpCisgICAgeworICAgICAgICBCdWZmZXIgKmJ1ZmZl
ck9iamVjdCA9IG5ldyBCdWZmZXIobVJlbmRlcmVyLCBidWZmZXIpOworICAgICAgICBtQnVmZmVy
TWFwW2J1ZmZlcl0gPSBidWZmZXJPYmplY3Q7CisgICAgICAgIGJ1ZmZlck9iamVjdC0+YWRkUmVm
KCk7CisgICAgfQorfQorCit2b2lkIFJlc291cmNlTWFuYWdlcjo6Y2hlY2tUZXh0dXJlQWxsb2Nh
dGlvbihHTHVpbnQgdGV4dHVyZSwgVGV4dHVyZVR5cGUgdHlwZSkKK3sKKyAgICBpZiAoIWdldFRl
eHR1cmUodGV4dHVyZSkgJiYgdGV4dHVyZSAhPSAwKQorICAgIHsKKyAgICAgICAgVGV4dHVyZSAq
dGV4dHVyZU9iamVjdDsKKworICAgICAgICBpZiAodHlwZSA9PSBURVhUVVJFXzJEKQorICAgICAg
ICB7CisgICAgICAgICAgICB0ZXh0dXJlT2JqZWN0ID0gbmV3IFRleHR1cmUyRChtUmVuZGVyZXIs
IHRleHR1cmUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gVEVYVFVSRV9D
VUJFKQorICAgICAgICB7CisgICAgICAgICAgICB0ZXh0dXJlT2JqZWN0ID0gbmV3IFRleHR1cmVD
dWJlTWFwKG1SZW5kZXJlciwgdGV4dHVyZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgbVRleHR1cmVNYXBbdGV4dHVyZV0gPSB0ZXh0dXJlT2JqZWN0
OworICAgICAgICB0ZXh0dXJlT2JqZWN0LT5hZGRSZWYoKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVz
b3VyY2VNYW5hZ2VyOjpjaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24oR0x1aW50IHJlbmRlcmJ1
ZmZlcikKK3sKKyAgICBpZiAocmVuZGVyYnVmZmVyICE9IDAgJiYgIWdldFJlbmRlcmJ1ZmZlcihy
ZW5kZXJidWZmZXIpKQorICAgIHsKKyAgICAgICAgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXJP
YmplY3QgPSBuZXcgUmVuZGVyYnVmZmVyKG1SZW5kZXJlciwgcmVuZGVyYnVmZmVyLCBuZXcgQ29s
b3JidWZmZXIobVJlbmRlcmVyLCAwLCAwLCBHTF9SR0JBNCwgMCkpOworICAgICAgICBtUmVuZGVy
YnVmZmVyTWFwW3JlbmRlcmJ1ZmZlcl0gPSByZW5kZXJidWZmZXJPYmplY3Q7CisgICAgICAgIHJl
bmRlcmJ1ZmZlck9iamVjdC0+YWRkUmVmKCk7CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Jlc291cmNlTWFuYWdlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVzb3VyY2VNYW5h
Z2VyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL1Jlc291cmNlTWFuYWdlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOCBAQAorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworLy8gUmVzb3VyY2VNYW5hZ2VyLmggOiBEZWZpbmVzIHRoZSBSZXNv
dXJjZU1hbmFnZXIgY2xhc3MsIHdoaWNoIHRyYWNrcyBvYmplY3RzCisvLyBzaGFyZWQgYnkgbXVs
dGlwbGUgR0wgY29udGV4dHMuCisKKyNpZm5kZWYgTElCR0xFU1YyX1JFU09VUkNFTUFOQUdFUl9I
XworI2RlZmluZSBMSUJHTEVTVjJfUkVTT1VSQ0VNQU5BR0VSX0hfCisKKyNkZWZpbmUgR0xfQVBJ
Q0FMTAorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorCisjaWZkZWYgX01TQ19WRVIKKyNpbmNsdWRl
IDxoYXNoX21hcD4KKyNlbHNlCisjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyNlbmRpZgorCisj
aW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvYW5nbGV0
eXBlcy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuaCIKKworbmFtZXNw
YWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBC
dWZmZXI7CitjbGFzcyBTaGFkZXI7CitjbGFzcyBQcm9ncmFtOworY2xhc3MgVGV4dHVyZTsKK2Ns
YXNzIFJlbmRlcmJ1ZmZlcjsKKworY2xhc3MgUmVzb3VyY2VNYW5hZ2VyCit7CisgIHB1YmxpYzoK
KyAgICBleHBsaWNpdCBSZXNvdXJjZU1hbmFnZXIocng6OlJlbmRlcmVyICpyZW5kZXJlcik7Cisg
ICAgflJlc291cmNlTWFuYWdlcigpOworCisgICAgdm9pZCBhZGRSZWYoKTsKKyAgICB2b2lkIHJl
bGVhc2UoKTsKKworICAgIEdMdWludCBjcmVhdGVCdWZmZXIoKTsKKyAgICBHTHVpbnQgY3JlYXRl
U2hhZGVyKEdMZW51bSB0eXBlKTsKKyAgICBHTHVpbnQgY3JlYXRlUHJvZ3JhbSgpOworICAgIEdM
dWludCBjcmVhdGVUZXh0dXJlKCk7CisgICAgR0x1aW50IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwor
CisgICAgdm9pZCBkZWxldGVCdWZmZXIoR0x1aW50IGJ1ZmZlcik7CisgICAgdm9pZCBkZWxldGVT
aGFkZXIoR0x1aW50IHNoYWRlcik7CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKEdMdWludCBwcm9n
cmFtKTsKKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUoR0x1aW50IHRleHR1cmUpOworICAgIHZvaWQg
ZGVsZXRlUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpOworCisgICAgQnVmZmVyICpn
ZXRCdWZmZXIoR0x1aW50IGhhbmRsZSk7CisgICAgU2hhZGVyICpnZXRTaGFkZXIoR0x1aW50IGhh
bmRsZSk7CisgICAgUHJvZ3JhbSAqZ2V0UHJvZ3JhbShHTHVpbnQgaGFuZGxlKTsKKyAgICBUZXh0
dXJlICpnZXRUZXh0dXJlKEdMdWludCBoYW5kbGUpOworICAgIFJlbmRlcmJ1ZmZlciAqZ2V0UmVu
ZGVyYnVmZmVyKEdMdWludCBoYW5kbGUpOworICAgIAorICAgIHZvaWQgc2V0UmVuZGVyYnVmZmVy
KEdMdWludCBoYW5kbGUsIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyKTsKKworICAgIHZvaWQg
Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKHVuc2lnbmVkIGludCBidWZmZXIpOworICAgIHZvaWQgY2hl
Y2tUZXh0dXJlQWxsb2NhdGlvbihHTHVpbnQgdGV4dHVyZSwgVGV4dHVyZVR5cGUgdHlwZSk7Cisg
ICAgdm9pZCBjaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24oR0x1aW50IHJlbmRlcmJ1ZmZlcik7
CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVzb3VyY2VNYW5h
Z2VyKTsKKworICAgIHN0ZDo6c2l6ZV90IG1SZWZDb3VudDsKKyAgICByeDo6UmVuZGVyZXIgKm1S
ZW5kZXJlcjsKKworI2lmbmRlZiBIQVNIX01BUAorIyBpZmRlZiBfTVNDX1ZFUgorIyAgZGVmaW5l
IEhBU0hfTUFQIHN0ZGV4dDo6aGFzaF9tYXAKKyMgZWxzZQorIyAgZGVmaW5lIEhBU0hfTUFQIHN0
ZDo6dW5vcmRlcmVkX21hcAorIyBlbmRpZgorI2VuZGlmCisKKyAgICB0eXBlZGVmIEhBU0hfTUFQ
PEdMdWludCwgQnVmZmVyKj4gQnVmZmVyTWFwOworICAgIEJ1ZmZlck1hcCBtQnVmZmVyTWFwOwor
ICAgIEhhbmRsZUFsbG9jYXRvciBtQnVmZmVySGFuZGxlQWxsb2NhdG9yOworCisgICAgdHlwZWRl
ZiBIQVNIX01BUDxHTHVpbnQsIFNoYWRlcio+IFNoYWRlck1hcDsKKyAgICBTaGFkZXJNYXAgbVNo
YWRlck1hcDsKKworICAgIHR5cGVkZWYgSEFTSF9NQVA8R0x1aW50LCBQcm9ncmFtKj4gUHJvZ3Jh
bU1hcDsKKyAgICBQcm9ncmFtTWFwIG1Qcm9ncmFtTWFwOworICAgIEhhbmRsZUFsbG9jYXRvciBt
UHJvZ3JhbVNoYWRlckhhbmRsZUFsbG9jYXRvcjsKKworICAgIHR5cGVkZWYgSEFTSF9NQVA8R0x1
aW50LCBUZXh0dXJlKj4gVGV4dHVyZU1hcDsKKyAgICBUZXh0dXJlTWFwIG1UZXh0dXJlTWFwOwor
ICAgIEhhbmRsZUFsbG9jYXRvciBtVGV4dHVyZUhhbmRsZUFsbG9jYXRvcjsKKworICAgIHR5cGVk
ZWYgSEFTSF9NQVA8R0x1aW50LCBSZW5kZXJidWZmZXIqPiBSZW5kZXJidWZmZXJNYXA7CisgICAg
UmVuZGVyYnVmZmVyTWFwIG1SZW5kZXJidWZmZXJNYXA7CisgICAgSGFuZGxlQWxsb2NhdG9yIG1S
ZW5kZXJidWZmZXJIYW5kbGVBbGxvY2F0b3I7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVT
VjJfUkVTT1VSQ0VNQU5BR0VSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL1NoYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9TaGFkZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9TaGFkZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDYyMiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBTaGFkZXIuY3BwOiBJbXBsZW1lbnRzIHRoZSBnbDo6U2hhZGVyIGNsYXNzIGFuZCBpdHMg
IGRlcml2ZWQgY2xhc3NlcworLy8gVmVydGV4U2hhZGVyIGFuZCBGcmFnbWVudFNoYWRlci4gSW1w
bGVtZW50cyBHTCBzaGFkZXIgb2JqZWN0cyBhbmQgcmVsYXRlZAorLy8gZnVuY3Rpb25hbGl0eS4g
W09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMi4xMCBwYWdlIDI0IGFuZCBzZWN0aW9uIDMuOCBw
YWdlIDg0LgorCisjaW5jbHVkZSAibGliR0xFU3YyL1NoYWRlci5oIgorCisjaW5jbHVkZSAiR0xT
TEFORy9TaGFkZXJMYW5nLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9Db25zdGFudHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVzb3VyY2VNYW5hZ2VyLmgiCisK
K25hbWVzcGFjZSBnbAorewordm9pZCAqU2hhZGVyOjptRnJhZ21lbnRDb21waWxlciA9IE5VTEw7
Cit2b2lkICpTaGFkZXI6Om1WZXJ0ZXhDb21waWxlciA9IE5VTEw7CisKK1NoYWRlcjo6U2hhZGVy
KFJlc291cmNlTWFuYWdlciAqbWFuYWdlciwgY29uc3Qgcng6OlJlbmRlcmVyICpyZW5kZXJlciwg
R0x1aW50IGhhbmRsZSkKKyAgICA6IG1IYW5kbGUoaGFuZGxlKSwgbVJlbmRlcmVyKHJlbmRlcmVy
KSwgbVJlc291cmNlTWFuYWdlcihtYW5hZ2VyKQoreworICAgIG1Tb3VyY2UgPSBOVUxMOworICAg
IG1IbHNsID0gTlVMTDsKKyAgICBtSW5mb0xvZyA9IE5VTEw7CisKKyAgICB1bmNvbXBpbGUoKTsK
KyAgICBpbml0aWFsaXplQ29tcGlsZXIoKTsKKworICAgIG1SZWZDb3VudCA9IDA7CisgICAgbURl
bGV0ZVN0YXR1cyA9IGZhbHNlOworfQorCitTaGFkZXI6On5TaGFkZXIoKQoreworICAgIGRlbGV0
ZVtdIG1Tb3VyY2U7CisgICAgZGVsZXRlW10gbUhsc2w7CisgICAgZGVsZXRlW10gbUluZm9Mb2c7
Cit9CisKK0dMdWludCBTaGFkZXI6OmdldEhhbmRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1I
YW5kbGU7Cit9CisKK3ZvaWQgU2hhZGVyOjpzZXRTb3VyY2UoR0xzaXplaSBjb3VudCwgY29uc3Qg
Y2hhciAqKnN0cmluZywgY29uc3QgR0xpbnQgKmxlbmd0aCkKK3sKKyAgICBkZWxldGVbXSBtU291
cmNlOworICAgIGludCB0b3RhbExlbmd0aCA9IDA7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IGNvdW50OyBpKyspCisgICAgeworICAgICAgICBpZiAobGVuZ3RoICYmIGxlbmd0aFtpXSA+PSAw
KQorICAgICAgICB7CisgICAgICAgICAgICB0b3RhbExlbmd0aCArPSBsZW5ndGhbaV07CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICB0b3RhbExlbmd0aCAr
PSAoaW50KXN0cmxlbihzdHJpbmdbaV0pOworICAgICAgICB9CisgICAgfQorCisgICAgbVNvdXJj
ZSA9IG5ldyBjaGFyW3RvdGFsTGVuZ3RoICsgMV07CisgICAgY2hhciAqY29kZSA9IG1Tb3VyY2U7
CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgeworICAgICAgICBp
bnQgc3RyaW5nTGVuZ3RoOworCisgICAgICAgIGlmIChsZW5ndGggJiYgbGVuZ3RoW2ldID49IDAp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9IGxlbmd0aFtpXTsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9
IChpbnQpc3RybGVuKHN0cmluZ1tpXSk7CisgICAgICAgIH0KKworICAgICAgICBzdHJuY3B5KGNv
ZGUsIHN0cmluZ1tpXSwgc3RyaW5nTGVuZ3RoKTsKKyAgICAgICAgY29kZSArPSBzdHJpbmdMZW5n
dGg7CisgICAgfQorCisgICAgbVNvdXJjZVt0b3RhbExlbmd0aF0gPSAnXDAnOworfQorCitpbnQg
U2hhZGVyOjpnZXRJbmZvTG9nTGVuZ3RoKCkgY29uc3QKK3sKKyAgICBpZiAoIW1JbmZvTG9nKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
cmV0dXJuIHN0cmxlbihtSW5mb0xvZykgKyAxOworICAgIH0KK30KKwordm9pZCBTaGFkZXI6Omdl
dEluZm9Mb2coR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmluZm9Mb2cp
Cit7CisgICAgaW50IGluZGV4ID0gMDsKKworICAgIGlmIChidWZTaXplID4gMCkKKyAgICB7Cisg
ICAgICAgIGlmIChtSW5mb0xvZykKKyAgICAgICAgeworICAgICAgICAgICAgaW5kZXggPSBzdGQ6
Om1pbihidWZTaXplIC0gMSwgKGludClzdHJsZW4obUluZm9Mb2cpKTsKKyAgICAgICAgICAgIG1l
bWNweShpbmZvTG9nLCBtSW5mb0xvZywgaW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgaW5m
b0xvZ1tpbmRleF0gPSAnXDAnOworICAgIH0KKworICAgIGlmIChsZW5ndGgpCisgICAgeworICAg
ICAgICAqbGVuZ3RoID0gaW5kZXg7CisgICAgfQorfQorCitpbnQgU2hhZGVyOjpnZXRTb3VyY2VM
ZW5ndGgoKSBjb25zdAoreworICAgIGlmICghbVNvdXJjZSkKKyAgICB7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgIHJldHVybiBzdHJsZW4obVNvdXJj
ZSkgKyAxOworICAgIH0KK30KKworaW50IFNoYWRlcjo6Z2V0VHJhbnNsYXRlZFNvdXJjZUxlbmd0
aCgpIGNvbnN0Cit7CisgICAgaWYgKCFtSGxzbCkKKyAgICB7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgIHJldHVybiBzdHJsZW4obUhsc2wpICsgMTsK
KyAgICB9Cit9CisKK3ZvaWQgU2hhZGVyOjpnZXRTb3VyY2VJbXBsKGNoYXIgKnNvdXJjZSwgR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1ZmZlcikKK3sKKyAgICBpbnQg
aW5kZXggPSAwOworCisgICAgaWYgKGJ1ZlNpemUgPiAwKQorICAgIHsKKyAgICAgICAgaWYgKHNv
dXJjZSkKKyAgICAgICAgeworICAgICAgICAgICAgaW5kZXggPSBzdGQ6Om1pbihidWZTaXplIC0g
MSwgKGludClzdHJsZW4oc291cmNlKSk7CisgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCBzb3Vy
Y2UsIGluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlcltpbmRleF0gPSAnXDAnOwor
ICAgIH0KKworICAgIGlmIChsZW5ndGgpCisgICAgeworICAgICAgICAqbGVuZ3RoID0gaW5kZXg7
CisgICAgfQorfQorCit2b2lkIFNoYWRlcjo6Z2V0U291cmNlKEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpCit7CisgICAgZ2V0U291cmNlSW1wbChtU291cmNl
LCBidWZTaXplLCBsZW5ndGgsIGJ1ZmZlcik7Cit9CisKK3ZvaWQgU2hhZGVyOjpnZXRUcmFuc2xh
dGVkU291cmNlKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIp
Cit7CisgICAgZ2V0U291cmNlSW1wbChtSGxzbCwgYnVmU2l6ZSwgbGVuZ3RoLCBidWZmZXIpOwor
fQorCitjb25zdCBzaDo6QWN0aXZlVW5pZm9ybXMgJlNoYWRlcjo6Z2V0VW5pZm9ybXMoKQorewor
ICAgIHJldHVybiBtQWN0aXZlVW5pZm9ybXM7Cit9CisKK2Jvb2wgU2hhZGVyOjppc0NvbXBpbGVk
KCkKK3sKKyAgICByZXR1cm4gbUhsc2wgIT0gTlVMTDsKK30KKworY29uc3QgY2hhciAqU2hhZGVy
OjpnZXRITFNMKCkKK3sKKyAgICByZXR1cm4gbUhsc2w7Cit9CisKK3ZvaWQgU2hhZGVyOjphZGRS
ZWYoKQoreworICAgIG1SZWZDb3VudCsrOworfQorCit2b2lkIFNoYWRlcjo6cmVsZWFzZSgpCit7
CisgICAgbVJlZkNvdW50LS07CisKKyAgICBpZiAobVJlZkNvdW50ID09IDAgJiYgbURlbGV0ZVN0
YXR1cykKKyAgICB7CisgICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPmRlbGV0ZVNoYWRlcihtSGFu
ZGxlKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBTaGFkZXI6OmdldFJlZkNvdW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbVJlZkNvdW50OworfQorCitib29sIFNoYWRlcjo6aXNGbGFnZ2Vk
Rm9yRGVsZXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtRGVsZXRlU3RhdHVzOworfQorCit2
b2lkIFNoYWRlcjo6ZmxhZ0ZvckRlbGV0aW9uKCkKK3sKKyAgICBtRGVsZXRlU3RhdHVzID0gdHJ1
ZTsKK30KKworLy8gUGVyZm9ybSBhIG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG9mIHRoZSBzaGFk
ZXIgY29tcGlsZXIgKG9yIGFmdGVyIGJlaW5nIGRlc3RydWN0ZWQgYnkgcmVsZWFzZUNvbXBpbGVy
KQordm9pZCBTaGFkZXI6OmluaXRpYWxpemVDb21waWxlcigpCit7CisgICAgaWYgKCFtRnJhZ21l
bnRDb21waWxlcikKKyAgICB7CisgICAgICAgIGludCByZXN1bHQgPSBTaEluaXRpYWxpemUoKTsK
KworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICBTaFNoYWRlck91
dHB1dCBobHNsVmVyc2lvbiA9IChtUmVuZGVyZXItPmdldE1ham9yU2hhZGVyTW9kZWwoKSA+PSA0
KSA/IFNIX0hMU0wxMV9PVVRQVVQgOiBTSF9ITFNMOV9PVVRQVVQ7CisKKyAgICAgICAgICAgIFNo
QnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7CisgICAgICAgICAgICBTaEluaXRCdWlsdEluUmVz
b3VyY2VzKCZyZXNvdXJjZXMpOworCisgICAgICAgICAgICByZXNvdXJjZXMuTWF4VmVydGV4QXR0
cmlicyA9IE1BWF9WRVJURVhfQVRUUklCUzsKKyAgICAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0
ZXhVbmlmb3JtVmVjdG9ycyA9IG1SZW5kZXJlci0+Z2V0TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMo
KTsKKyAgICAgICAgICAgIHJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyA9IG1SZW5kZXJlci0+
Z2V0TWF4VmFyeWluZ1ZlY3RvcnMoKTsKKyAgICAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhU
ZXh0dXJlSW1hZ2VVbml0cyA9IG1SZW5kZXJlci0+Z2V0TWF4VmVydGV4VGV4dHVyZUltYWdlVW5p
dHMoKTsKKyAgICAgICAgICAgIHJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRz
ID0gbVJlbmRlcmVyLT5nZXRNYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCk7CisgICAgICAg
ICAgICByZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMgPSBNQVhfVEVYVFVSRV9JTUFHRV9V
TklUUzsKKyAgICAgICAgICAgIHJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0g
bVJlbmRlcmVyLT5nZXRNYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKCk7CisgICAgICAgICAgICBy
ZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSBtUmVuZGVyZXItPmdldE1heFJlbmRlclRhcmdldHMo
KTsKKyAgICAgICAgICAgIHJlc291cmNlcy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgPSBtUmVu
ZGVyZXItPmdldERlcml2YXRpdmVJbnN0cnVjdGlvblN1cHBvcnQoKTsKKyAgICAgICAgICAgIHJl
c291cmNlcy5FWFRfZHJhd19idWZmZXJzID0gbVJlbmRlcmVyLT5nZXRNYXhSZW5kZXJUYXJnZXRz
KCkgPiAxOworICAgICAgICAgICAgLy8gcmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwg
PSBtUmVuZGVyZXItPmdldFNoYXJlSGFuZGxlU3VwcG9ydCgpID8gMSA6IDA7IC8vIFRPRE86IGNv
bW1lbnRlZCBvdXQgdW50aWwgdGhlIGV4dGVuc2lvbiBpcyBhY3R1YWxseSBzdXBwb3J0ZWQuCisg
ICAgICAgICAgICByZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID0gMTsgICAvLyBTaGFk
ZXIgTW9kZWwgMisgYWx3YXlzIHN1cHBvcnRzIEZQMjQgKHMxNmU3KSB3aGljaCBjb3JyZXNwb25k
cyB0byBoaWdocAorICAgICAgICAgICAgcmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoID0gMTsgLy8g
U2hhZGVyIE1vZGVsIDIrIGFsd2F5cyBzdXBwb3J0cyBleHBsaWNpdCBkZXB0aCBvdXRwdXQKKwor
ICAgICAgICAgICAgbUZyYWdtZW50Q29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKFNIX0ZS
QUdNRU5UX1NIQURFUiwgU0hfR0xFUzJfU1BFQywgaGxzbFZlcnNpb24sICZyZXNvdXJjZXMpOwor
ICAgICAgICAgICAgbVZlcnRleENvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihTSF9WRVJU
RVhfU0hBREVSLCBTSF9HTEVTMl9TUEVDLCBobHNsVmVyc2lvbiwgJnJlc291cmNlcyk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgU2hhZGVyOjpyZWxlYXNlQ29tcGlsZXIoKQoreworICAg
IFNoRGVzdHJ1Y3QobUZyYWdtZW50Q29tcGlsZXIpOworICAgIFNoRGVzdHJ1Y3QobVZlcnRleENv
bXBpbGVyKTsKKworICAgIG1GcmFnbWVudENvbXBpbGVyID0gTlVMTDsKKyAgICBtVmVydGV4Q29t
cGlsZXIgPSBOVUxMOworCisgICAgU2hGaW5hbGl6ZSgpOworfQorCit2b2lkIFNoYWRlcjo6cGFy
c2VWYXJ5aW5ncygpCit7CisgICAgaWYgKG1IbHNsKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hh
ciAqaW5wdXQgPSBzdHJzdHIobUhsc2wsICIvLyBWYXJ5aW5ncyIpICsgMTI7CisKKyAgICAgICAg
d2hpbGUodHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2hhciB2YXJ5aW5nVHlwZVsyNTZd
OworICAgICAgICAgICAgY2hhciB2YXJ5aW5nTmFtZVsyNTZdOworCisgICAgICAgICAgICBpbnQg
bWF0Y2hlcyA9IHNzY2FuZihpbnB1dCwgInN0YXRpYyAlMjU1cyAlMjU1cyIsIHZhcnlpbmdUeXBl
LCB2YXJ5aW5nTmFtZSk7CisKKyAgICAgICAgICAgIGlmIChtYXRjaGVzICE9IDIpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGNoYXIgKmFycmF5ID0gc3Ryc3RyKHZhcnlpbmdOYW1lLCAiWyIpOworICAgICAgICAgICAg
aW50IHNpemUgPSAxOworCisgICAgICAgICAgICBpZiAoYXJyYXkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgc2l6ZSA9IGF0b2koYXJyYXkgKyAxKTsKKyAgICAgICAgICAgICAgICAq
YXJyYXkgPSAnXDAnOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtVmFyeWluZ3MucHVz
aF9iYWNrKFZhcnlpbmcocGFyc2VUeXBlKHZhcnlpbmdUeXBlKSwgdmFyeWluZ05hbWUsIHNpemUs
IGFycmF5ICE9IE5VTEwpKTsKKworICAgICAgICAgICAgaW5wdXQgPSBzdHJzdHIoaW5wdXQsICI7
IikgKyAyOworICAgICAgICB9CisKKyAgICAgICAgbVVzZXNNdWx0aXBsZVJlbmRlclRhcmdldHMg
PSBzdHJzdHIobUhsc2wsICJHTF9VU0VTX01SVCIpICE9IE5VTEw7CisgICAgICAgIG1Vc2VzRnJh
Z0NvbG9yID0gc3Ryc3RyKG1IbHNsLCAiR0xfVVNFU19GUkFHX0NPTE9SIikgIT0gTlVMTDsKKyAg
ICAgICAgbVVzZXNGcmFnRGF0YSA9IHN0cnN0cihtSGxzbCwgIkdMX1VTRVNfRlJBR19EQVRBIikg
IT0gTlVMTDsKKyAgICAgICAgbVVzZXNGcmFnQ29vcmQgPSBzdHJzdHIobUhsc2wsICJHTF9VU0VT
X0ZSQUdfQ09PUkQiKSAhPSBOVUxMOworICAgICAgICBtVXNlc0Zyb250RmFjaW5nID0gc3Ryc3Ry
KG1IbHNsLCAiR0xfVVNFU19GUk9OVF9GQUNJTkciKSAhPSBOVUxMOworICAgICAgICBtVXNlc1Bv
aW50U2l6ZSA9IHN0cnN0cihtSGxzbCwgIkdMX1VTRVNfUE9JTlRfU0laRSIpICE9IE5VTEw7Cisg
ICAgICAgIG1Vc2VzUG9pbnRDb29yZCA9IHN0cnN0cihtSGxzbCwgIkdMX1VTRVNfUE9JTlRfQ09P
UkQiKSAhPSBOVUxMOworICAgICAgICBtVXNlc0RlcHRoUmFuZ2UgPSBzdHJzdHIobUhsc2wsICJH
TF9VU0VTX0RFUFRIX1JBTkdFIikgIT0gTlVMTDsKKyAgICAgICAgbVVzZXNGcmFnRGVwdGggPSBz
dHJzdHIobUhsc2wsICJHTF9VU0VTX0ZSQUdfREVQVEgiKSAhPSBOVUxMOworICAgIH0KK30KKwor
dm9pZCBTaGFkZXI6OnJlc2V0VmFyeWluZ3NSZWdpc3RlckFzc2lnbm1lbnQoKQoreworICAgIGZv
ciAoVmFyeWluZ0xpc3Q6Oml0ZXJhdG9yIHZhciA9IG1WYXJ5aW5ncy5iZWdpbigpOyB2YXIgIT0g
bVZhcnlpbmdzLmVuZCgpOyB2YXIrKykKKyAgICB7CisgICAgICAgIHZhci0+cmVnID0gLTE7Cisg
ICAgICAgIHZhci0+Y29sID0gLTE7CisgICAgfQorfQorCisvLyBpbml0aWFsaXplL2NsZWFuIHVw
IHByZXZpb3VzIHN0YXRlCit2b2lkIFNoYWRlcjo6dW5jb21waWxlKCkKK3sKKyAgICAvLyBzZXQg
YnkgY29tcGlsZVRvSExTTAorICAgIGRlbGV0ZVtdIG1IbHNsOworICAgIG1IbHNsID0gTlVMTDsK
KyAgICBkZWxldGVbXSBtSW5mb0xvZzsKKyAgICBtSW5mb0xvZyA9IE5VTEw7CisKKyAgICAvLyBz
ZXQgYnkgcGFyc2VWYXJ5aW5ncworICAgIG1WYXJ5aW5ncy5jbGVhcigpOworCisgICAgbVVzZXNN
dWx0aXBsZVJlbmRlclRhcmdldHMgPSBmYWxzZTsKKyAgICBtVXNlc0ZyYWdDb2xvciA9IGZhbHNl
OworICAgIG1Vc2VzRnJhZ0RhdGEgPSBmYWxzZTsKKyAgICBtVXNlc0ZyYWdDb29yZCA9IGZhbHNl
OworICAgIG1Vc2VzRnJvbnRGYWNpbmcgPSBmYWxzZTsKKyAgICBtVXNlc1BvaW50U2l6ZSA9IGZh
bHNlOworICAgIG1Vc2VzUG9pbnRDb29yZCA9IGZhbHNlOworICAgIG1Vc2VzRGVwdGhSYW5nZSA9
IGZhbHNlOworICAgIG1Vc2VzRnJhZ0RlcHRoID0gZmFsc2U7CisKKyAgICBtQWN0aXZlVW5pZm9y
bXMuY2xlYXIoKTsKK30KKwordm9pZCBTaGFkZXI6OmNvbXBpbGVUb0hMU0wodm9pZCAqY29tcGls
ZXIpCit7CisgICAgLy8gZW5zdXJlIHdlIGRvbid0IHBhc3MgYSBOVUxMIHNvdXJjZSB0byB0aGUg
Y29tcGlsZXIKKyAgICBjb25zdCBjaGFyICpzb3VyY2UgPSAiXDAiOworICAgIGlmIChtU291cmNl
KQorICAgIHsKKyAgICAgICAgc291cmNlID0gbVNvdXJjZTsKKyAgICB9CisKKyAgICAvLyBlbnN1
cmUgdGhlIGNvbXBpbGVyIGlzIGxvYWRlZAorICAgIGluaXRpYWxpemVDb21waWxlcigpOworCisg
ICAgaW50IGNvbXBpbGVPcHRpb25zID0gU0hfT0JKRUNUX0NPREU7CisgICAgc3RkOjpzdHJpbmcg
c291cmNlUGF0aDsKKyAgICBpZiAocGVyZkFjdGl2ZSgpKQorICAgIHsKKyAgICAgICAgc291cmNl
UGF0aCA9IGdldFRlbXBQYXRoKCk7CisgICAgICAgIHdyaXRlRmlsZShzb3VyY2VQYXRoLmNfc3Ry
KCksIHNvdXJjZSwgc3RybGVuKHNvdXJjZSkpOworICAgICAgICBjb21waWxlT3B0aW9ucyB8PSBT
SF9MSU5FX0RJUkVDVElWRVM7CisgICAgfQorCisgICAgaW50IHJlc3VsdDsKKyAgICBpZiAoc291
cmNlUGF0aC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gU2hDb21waWxlKGNvbXBp
bGVyLCAmc291cmNlLCAxLCBjb21waWxlT3B0aW9ucyk7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIGNvbnN0IGNoYXIqIHNvdXJjZVN0cmluZ3NbMl0gPQorICAgICAgICB7CisgICAg
ICAgICAgICBzb3VyY2VQYXRoLmNfc3RyKCksCisgICAgICAgICAgICBzb3VyY2UKKyAgICAgICAg
fTsKKworICAgICAgICByZXN1bHQgPSBTaENvbXBpbGUoY29tcGlsZXIsIHNvdXJjZVN0cmluZ3Ms
IDIsIGNvbXBpbGVPcHRpb25zIHwgU0hfU09VUkNFX1BBVEgpOworICAgIH0KKworICAgIGlmIChy
ZXN1bHQpCisgICAgeworICAgICAgICBzaXplX3Qgb2JqQ29kZUxlbiA9IDA7CisgICAgICAgIFNo
R2V0SW5mbyhjb21waWxlciwgU0hfT0JKRUNUX0NPREVfTEVOR1RILCAmb2JqQ29kZUxlbik7Cisg
ICAgICAgIG1IbHNsID0gbmV3IGNoYXJbb2JqQ29kZUxlbl07CisgICAgICAgIFNoR2V0T2JqZWN0
Q29kZShjb21waWxlciwgbUhsc2wpOworCisgICAgICAgIHZvaWQgKmFjdGl2ZVVuaWZvcm1zOwor
ICAgICAgICBTaEdldEluZm9Qb2ludGVyKGNvbXBpbGVyLCBTSF9BQ1RJVkVfVU5JRk9STVNfQVJS
QVksICZhY3RpdmVVbmlmb3Jtcyk7CisgICAgICAgIG1BY3RpdmVVbmlmb3JtcyA9ICooc2g6OkFj
dGl2ZVVuaWZvcm1zKilhY3RpdmVVbmlmb3JtczsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgc2l6ZV90IGluZm9Mb2dMZW4gPSAwOworICAgICAgICBTaEdldEluZm8oY29tcGlsZXIs
IFNIX0lORk9fTE9HX0xFTkdUSCwgJmluZm9Mb2dMZW4pOworICAgICAgICBtSW5mb0xvZyA9IG5l
dyBjaGFyW2luZm9Mb2dMZW5dOworICAgICAgICBTaEdldEluZm9Mb2coY29tcGlsZXIsIG1JbmZv
TG9nKTsKKworICAgICAgICBUUkFDRSgiXG4lcyIsIG1JbmZvTG9nKTsKKyAgICB9Cit9CisKK0dM
ZW51bSBTaGFkZXI6OnBhcnNlVHlwZShjb25zdCBzdGQ6OnN0cmluZyAmdHlwZSkKK3sKKyAgICBp
ZiAodHlwZSA9PSAiZmxvYXQiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOworICAg
IH0KKyAgICBlbHNlIGlmICh0eXBlID09ICJmbG9hdDIiKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEdMX0ZMT0FUX1ZFQzI7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUgPT0gImZsb2F0MyIpCisg
ICAgeworICAgICAgICByZXR1cm4gR0xfRkxPQVRfVkVDMzsKKyAgICB9CisgICAgZWxzZSBpZiAo
dHlwZSA9PSAiZmxvYXQ0IikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GTE9BVF9WRUM0Owor
ICAgIH0KKyAgICBlbHNlIGlmICh0eXBlID09ICJmbG9hdDJ4MiIpCisgICAgeworICAgICAgICBy
ZXR1cm4gR0xfRkxPQVRfTUFUMjsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSAiZmxvYXQz
eDMiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX0ZMT0FUX01BVDM7CisgICAgfQorICAgIGVs
c2UgaWYgKHR5cGUgPT0gImZsb2F0NHg0IikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GTE9B
VF9NQVQ0OworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICByZXR1cm4gR0xf
Tk9ORTsKK30KKworLy8gdHJ1ZSBpZiB2YXJ5aW5nIHggaGFzIGEgaGlnaGVyIHByaW9yaXR5IGlu
IHBhY2tpbmcgdGhhbiB5Citib29sIFNoYWRlcjo6Y29tcGFyZVZhcnlpbmcoY29uc3QgVmFyeWlu
ZyAmeCwgY29uc3QgVmFyeWluZyAmeSkKK3sKKyAgICBpZih4LnR5cGUgPT0geS50eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHguc2l6ZSA+IHkuc2l6ZTsKKyAgICB9CisKKyAgICBzd2l0Y2gg
KHgudHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6IHJldHVybiB0cnVlOwor
ICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOgorICAgICAgICBzd2l0Y2goeS50eXBlKQorICAgICAg
ICB7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OiByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgY2FzZSBHTF9GTE9BVF9NQVQyOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBjYXNlIEdMX0ZM
T0FUX1ZFQzQ6IHJldHVybiB0cnVlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzogcmV0
dXJuIHRydWU7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMzOiByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6IHJldHVybiB0cnVlOworICAgICAgICAgIGNhc2Ug
R0xfRkxPQVQ6ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVD
NDoKKyAgICAgICAgc3dpdGNoKHkudHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xf
RkxPQVRfTUFUNDogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjog
cmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDogcmV0dXJuIHRydWU7
CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBj
YXNlIEdMX0ZMT0FUX1ZFQzM6IHJldHVybiB0cnVlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRf
VkVDMjogcmV0dXJuIHRydWU7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVDogICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOgorICAgICAgICBzd2l0Y2goeS50
eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OiByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOiByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgY2FzZSBHTF9GTE9BVF9WRUM0OiByZXR1cm4gZmFsc2U7CisgICAgICAgICAgY2FzZSBHTF9G
TE9BVF9NQVQzOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6IHJl
dHVybiB0cnVlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjogcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgY2FzZSBHTF9GTE9BVDogICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBkZWZh
dWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9GTE9BVF9WRUMzOgorICAgICAgICBzd2l0Y2goeS50eXBlKQorICAgICAgICB7CisgICAg
ICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OiByZXR1cm4gZmFsc2U7CisgICAgICAgICAgY2FzZSBH
TF9GTE9BVF9NQVQyOiByZXR1cm4gZmFsc2U7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0
OiByZXR1cm4gZmFsc2U7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOiByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMzOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICBjYXNlIEdMX0ZMT0FUX1ZFQzI6IHJldHVybiB0cnVlOworICAgICAgICAgIGNhc2UgR0xfRkxP
QVQ6ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKKyAg
ICAgICAgc3dpdGNoKHkudHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfRkxPQVRf
TUFUNDogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjogcmV0dXJu
IGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDogcmV0dXJuIGZhbHNlOworICAg
ICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2Ug
R0xfRkxPQVRfVkVDMzogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVD
MjogcmV0dXJuIHRydWU7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVDogICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9GTE9BVDogcmV0dXJuIGZhbHNlOworICAgICAgZGVmYXVs
dDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1ZlcnRl
eFNoYWRlcjo6VmVydGV4U2hhZGVyKFJlc291cmNlTWFuYWdlciAqbWFuYWdlciwgY29uc3Qgcng6
OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGhhbmRsZSkKKyAgICA6IFNoYWRlcihtYW5hZ2Vy
LCByZW5kZXJlciwgaGFuZGxlKQoreworfQorCitWZXJ0ZXhTaGFkZXI6On5WZXJ0ZXhTaGFkZXIo
KQoreworfQorCitHTGVudW0gVmVydGV4U2hhZGVyOjpnZXRUeXBlKCkKK3sKKyAgICByZXR1cm4g
R0xfVkVSVEVYX1NIQURFUjsKK30KKwordm9pZCBWZXJ0ZXhTaGFkZXI6OnVuY29tcGlsZSgpCit7
CisgICAgU2hhZGVyOjp1bmNvbXBpbGUoKTsKKworICAgIC8vIHNldCBieSBQYXJzZUF0dHJpYnV0
ZXMKKyAgICBtQXR0cmlidXRlcy5jbGVhcigpOworfQorCit2b2lkIFZlcnRleFNoYWRlcjo6Y29t
cGlsZSgpCit7CisgICAgdW5jb21waWxlKCk7CisKKyAgICBjb21waWxlVG9ITFNMKG1WZXJ0ZXhD
b21waWxlcik7CisgICAgcGFyc2VBdHRyaWJ1dGVzKCk7CisgICAgcGFyc2VWYXJ5aW5ncygpOwor
fQorCitpbnQgVmVydGV4U2hhZGVyOjpnZXRTZW1hbnRpY0luZGV4KGNvbnN0IHN0ZDo6c3RyaW5n
ICZhdHRyaWJ1dGVOYW1lKQoreworICAgIGlmICghYXR0cmlidXRlTmFtZS5lbXB0eSgpKQorICAg
IHsKKyAgICAgICAgaW50IHNlbWFudGljSW5kZXggPSAwOworICAgICAgICBmb3IgKEF0dHJpYnV0
ZUFycmF5OjppdGVyYXRvciBhdHRyaWJ1dGUgPSBtQXR0cmlidXRlcy5iZWdpbigpOyBhdHRyaWJ1
dGUgIT0gbUF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoYXR0cmlidXRlLT5uYW1lID09IGF0dHJpYnV0ZU5hbWUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbWFudGljSW5kZXg7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHNlbWFudGljSW5kZXggKz0gVmFyaWFibGVSb3dDb3VudChhdHRyaWJ1dGUt
PnR5cGUpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCit2b2lkIFZl
cnRleFNoYWRlcjo6cGFyc2VBdHRyaWJ1dGVzKCkKK3sKKyAgICBjb25zdCBjaGFyICpobHNsID0g
Z2V0SExTTCgpOworICAgIGlmIChobHNsKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqaW5w
dXQgPSBzdHJzdHIoaGxzbCwgIi8vIEF0dHJpYnV0ZXMiKSArIDE0OworCisgICAgICAgIHdoaWxl
KHRydWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoYXIgYXR0cmlidXRlVHlwZVsyNTZdOwor
ICAgICAgICAgICAgY2hhciBhdHRyaWJ1dGVOYW1lWzI1Nl07CisKKyAgICAgICAgICAgIGludCBt
YXRjaGVzID0gc3NjYW5mKGlucHV0LCAic3RhdGljICUyNTVzIF8lMjU1cyIsIGF0dHJpYnV0ZVR5
cGUsIGF0dHJpYnV0ZU5hbWUpOworCisgICAgICAgICAgICBpZiAobWF0Y2hlcyAhPSAyKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBtQXR0cmlidXRlcy5wdXNoX2JhY2soQXR0cmlidXRlKHBhcnNlVHlwZShhdHRyaWJ1
dGVUeXBlKSwgYXR0cmlidXRlTmFtZSkpOworCisgICAgICAgICAgICBpbnB1dCA9IHN0cnN0cihp
bnB1dCwgIjsiKSArIDI7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0ZyYWdtZW50U2hhZGVyOjpG
cmFnbWVudFNoYWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsIGNvbnN0IHJ4OjpSZW5kZXJl
ciAqcmVuZGVyZXIsIEdMdWludCBoYW5kbGUpCisgICAgOiBTaGFkZXIobWFuYWdlciwgcmVuZGVy
ZXIsIGhhbmRsZSkKK3sKK30KKworRnJhZ21lbnRTaGFkZXI6On5GcmFnbWVudFNoYWRlcigpCit7
Cit9CisKK0dMZW51bSBGcmFnbWVudFNoYWRlcjo6Z2V0VHlwZSgpCit7CisgICAgcmV0dXJuIEdM
X0ZSQUdNRU5UX1NIQURFUjsKK30KKwordm9pZCBGcmFnbWVudFNoYWRlcjo6Y29tcGlsZSgpCit7
CisgICAgdW5jb21waWxlKCk7CisKKyAgICBjb21waWxlVG9ITFNMKG1GcmFnbWVudENvbXBpbGVy
KTsKKyAgICBwYXJzZVZhcnlpbmdzKCk7CisgICAgbVZhcnlpbmdzLnNvcnQoY29tcGFyZVZhcnlp
bmcpOworfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9T
aGFkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL1NoYWRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9TaGFkZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODQgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIFNoYWRlci5oOiBEZWZpbmVzIHRoZSBhYnN0cmFjdCBnbDo6U2hh
ZGVyIGNsYXNzIGFuZCBpdHMgY29uY3JldGUgZGVyaXZlZAorLy8gY2xhc3NlcyBWZXJ0ZXhTaGFk
ZXIgYW5kIEZyYWdtZW50U2hhZGVyLiBJbXBsZW1lbnRzIEdMIHNoYWRlciBvYmplY3RzIGFuZAor
Ly8gcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAyLjEw
IHBhZ2UgMjQgYW5kIHNlY3Rpb24KKy8vIDMuOCBwYWdlIDg0LgorCisjaWZuZGVmIExJQkdMRVNW
Ml9TSEFERVJfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1NIQURFUl9IXworCisjZGVmaW5lIEdMX0FQ
SUNBTEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVk
ZSA8bGlzdD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJjb21waWxlci9Vbmlmb3Jt
LmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7Citj
bGFzcyBSZW5kZXJlcjsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBSZXNvdXJjZU1hbmFn
ZXI7CisKK3N0cnVjdCBWYXJ5aW5nCit7CisgICAgVmFyeWluZyhHTGVudW0gdHlwZSwgY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUsIGludCBzaXplLCBib29sIGFycmF5KQorICAgICAgICA6IHR5cGUo
dHlwZSksIG5hbWUobmFtZSksIHNpemUoc2l6ZSksIGFycmF5KGFycmF5KSwgcmVnKC0xKSwgY29s
KC0xKQorICAgIHsKKyAgICB9CisKKyAgICBHTGVudW0gdHlwZTsKKyAgICBzdGQ6OnN0cmluZyBu
YW1lOworICAgIGludCBzaXplOyAgIC8vIE51bWJlciBvZiAndHlwZScgZWxlbWVudHMKKyAgICBi
b29sIGFycmF5OworCisgICAgaW50IHJlZzsgICAgLy8gRmlyc3QgdmFyeWluZyByZWdpc3Rlciwg
YXNzaWduZWQgZHVyaW5nIGxpbmsKKyAgICBpbnQgY29sOyAgICAvLyBGaXJzdCByZWdpc3RlciBl
bGVtZW50LCBhc3NpZ25lZCBkdXJpbmcgbGluaworfTsKKwordHlwZWRlZiBzdGQ6Omxpc3Q8VmFy
eWluZz4gVmFyeWluZ0xpc3Q7CisKK2NsYXNzIFNoYWRlcgoreworICAgIGZyaWVuZCBjbGFzcyBQ
cm9ncmFtQmluYXJ5OworCisgIHB1YmxpYzoKKyAgICBTaGFkZXIoUmVzb3VyY2VNYW5hZ2VyICpt
YW5hZ2VyLCBjb25zdCByeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHVpbnQgaGFuZGxlKTsKKwor
ICAgIHZpcnR1YWwgflNoYWRlcigpOworCisgICAgdmlydHVhbCBHTGVudW0gZ2V0VHlwZSgpID0g
MDsKKyAgICBHTHVpbnQgZ2V0SGFuZGxlKCkgY29uc3Q7CisKKyAgICB2b2lkIGRlbGV0ZVNvdXJj
ZSgpOworICAgIHZvaWQgc2V0U291cmNlKEdMc2l6ZWkgY291bnQsIGNvbnN0IGNoYXIgKipzdHJp
bmcsIGNvbnN0IEdMaW50ICpsZW5ndGgpOworICAgIGludCBnZXRJbmZvTG9nTGVuZ3RoKCkgY29u
c3Q7CisgICAgdm9pZCBnZXRJbmZvTG9nKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBjaGFyICppbmZvTG9nKTsKKyAgICBpbnQgZ2V0U291cmNlTGVuZ3RoKCkgY29uc3Q7CisgICAg
dm9pZCBnZXRTb3VyY2UoR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1
ZmZlcik7CisgICAgaW50IGdldFRyYW5zbGF0ZWRTb3VyY2VMZW5ndGgoKSBjb25zdDsKKyAgICB2
b2lkIGdldFRyYW5zbGF0ZWRTb3VyY2UoR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgs
IGNoYXIgKmJ1ZmZlcik7CisgICAgY29uc3Qgc2g6OkFjdGl2ZVVuaWZvcm1zICZnZXRVbmlmb3Jt
cygpOworCisgICAgdmlydHVhbCB2b2lkIGNvbXBpbGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHVuY29tcGlsZSgpOworICAgIGJvb2wgaXNDb21waWxlZCgpOworICAgIGNvbnN0IGNoYXIgKmdl
dEhMU0woKTsKKworICAgIHZvaWQgYWRkUmVmKCk7CisgICAgdm9pZCByZWxlYXNlKCk7CisgICAg
dW5zaWduZWQgaW50IGdldFJlZkNvdW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0ZsYWdnZWRGb3JE
ZWxldGlvbigpIGNvbnN0OworICAgIHZvaWQgZmxhZ0ZvckRlbGV0aW9uKCk7CisKKyAgICBzdGF0
aWMgdm9pZCByZWxlYXNlQ29tcGlsZXIoKTsKKworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBwYXJz
ZVZhcnlpbmdzKCk7CisgICAgdm9pZCByZXNldFZhcnlpbmdzUmVnaXN0ZXJBc3NpZ25tZW50KCk7
CisKKyAgICB2b2lkIGNvbXBpbGVUb0hMU0wodm9pZCAqY29tcGlsZXIpOworCisgICAgdm9pZCBn
ZXRTb3VyY2VJbXBsKGNoYXIgKnNvdXJjZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5n
dGgsIGNoYXIgKmJ1ZmZlcik7CisKKyAgICBzdGF0aWMgR0xlbnVtIHBhcnNlVHlwZShjb25zdCBz
dGQ6OnN0cmluZyAmdHlwZSk7CisgICAgc3RhdGljIGJvb2wgY29tcGFyZVZhcnlpbmcoY29uc3Qg
VmFyeWluZyAmeCwgY29uc3QgVmFyeWluZyAmeSk7CisKKyAgICBjb25zdCByeDo6UmVuZGVyZXIg
KmNvbnN0IG1SZW5kZXJlcjsKKworICAgIFZhcnlpbmdMaXN0IG1WYXJ5aW5nczsKKworICAgIGJv
b2wgbVVzZXNNdWx0aXBsZVJlbmRlclRhcmdldHM7CisgICAgYm9vbCBtVXNlc0ZyYWdDb2xvcjsK
KyAgICBib29sIG1Vc2VzRnJhZ0RhdGE7CisgICAgYm9vbCBtVXNlc0ZyYWdDb29yZDsKKyAgICBi
b29sIG1Vc2VzRnJvbnRGYWNpbmc7CisgICAgYm9vbCBtVXNlc1BvaW50U2l6ZTsKKyAgICBib29s
IG1Vc2VzUG9pbnRDb29yZDsKKyAgICBib29sIG1Vc2VzRGVwdGhSYW5nZTsKKyAgICBib29sIG1V
c2VzRnJhZ0RlcHRoOworCisgICAgc3RhdGljIHZvaWQgKm1GcmFnbWVudENvbXBpbGVyOworICAg
IHN0YXRpYyB2b2lkICptVmVydGV4Q29tcGlsZXI7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oU2hhZGVyKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbXBpbGVy
KCk7CisKKyAgICBjb25zdCBHTHVpbnQgbUhhbmRsZTsKKyAgICB1bnNpZ25lZCBpbnQgbVJlZkNv
dW50OyAgICAgLy8gTnVtYmVyIG9mIHByb2dyYW0gb2JqZWN0cyB0aGlzIHNoYWRlciBpcyBhdHRh
Y2hlZCB0bworICAgIGJvb2wgbURlbGV0ZVN0YXR1czsgICAgICAgICAvLyBGbGFnIHRvIGluZGlj
YXRlIHRoYXQgdGhlIHNoYWRlciBjYW4gYmUgZGVsZXRlZCB3aGVuIG5vIGxvbmdlciBpbiB1c2UK
KworICAgIGNoYXIgKm1Tb3VyY2U7CisgICAgY2hhciAqbUhsc2w7CisgICAgY2hhciAqbUluZm9M
b2c7CisgICAgc2g6OkFjdGl2ZVVuaWZvcm1zIG1BY3RpdmVVbmlmb3JtczsKKworICAgIFJlc291
cmNlTWFuYWdlciAqbVJlc291cmNlTWFuYWdlcjsKK307CisKK3N0cnVjdCBBdHRyaWJ1dGUKK3sK
KyAgICBBdHRyaWJ1dGUoKSA6IHR5cGUoR0xfTk9ORSksIG5hbWUoIiIpCisgICAgeworICAgIH0K
KworICAgIEF0dHJpYnV0ZShHTGVudW0gdHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIDog
dHlwZSh0eXBlKSwgbmFtZShuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBHTGVudW0gdHlwZTsK
KyAgICBzdGQ6OnN0cmluZyBuYW1lOworfTsKKwordHlwZWRlZiBzdGQ6OnZlY3RvcjxBdHRyaWJ1
dGU+IEF0dHJpYnV0ZUFycmF5OworCitjbGFzcyBWZXJ0ZXhTaGFkZXIgOiBwdWJsaWMgU2hhZGVy
Cit7CisgICAgZnJpZW5kIGNsYXNzIFByb2dyYW1CaW5hcnk7CisKKyAgcHVibGljOgorICAgIFZl
cnRleFNoYWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsIGNvbnN0IHJ4OjpSZW5kZXJlciAq
cmVuZGVyZXIsIEdMdWludCBoYW5kbGUpOworCisgICAgflZlcnRleFNoYWRlcigpOworCisgICAg
dmlydHVhbCBHTGVudW0gZ2V0VHlwZSgpOworICAgIHZpcnR1YWwgdm9pZCBjb21waWxlKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHVuY29tcGlsZSgpOworICAgIGludCBnZXRTZW1hbnRpY0luZGV4KGNv
bnN0IHN0ZDo6c3RyaW5nICZhdHRyaWJ1dGVOYW1lKTsKKworICBwcml2YXRlOgorICAgIERJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihWZXJ0ZXhTaGFkZXIpOworCisgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZXMoKTsKKworICAgIEF0dHJpYnV0ZUFycmF5IG1BdHRyaWJ1dGVzOworfTsKKworY2xhc3Mg
RnJhZ21lbnRTaGFkZXIgOiBwdWJsaWMgU2hhZGVyCit7CisgIHB1YmxpYzoKKyAgICBGcmFnbWVu
dFNoYWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsY29uc3Qgcng6OlJlbmRlcmVyICpyZW5k
ZXJlciwgR0x1aW50IGhhbmRsZSk7CisKKyAgICB+RnJhZ21lbnRTaGFkZXIoKTsKKworICAgIHZp
cnR1YWwgR0xlbnVtIGdldFR5cGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZSgpOworCisg
IHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEZyYWdtZW50U2hhZGVyKTsK
K307Cit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9TSEFERVJfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ5NSBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVk
LmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBUZXh0dXJlLmNwcDogSW1wbGVtZW50cyB0aGUg
Z2w6OlRleHR1cmUgY2xhc3MgYW5kIGl0cyBkZXJpdmVkIGNsYXNzZXMKKy8vIFRleHR1cmUyRCBh
bmQgVGV4dHVyZUN1YmVNYXAuIEltcGxlbWVudHMgR0wgdGV4dHVyZSBvYmplY3RzIGFuZCByZWxh
dGVkCisvLyBmdW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAzLjcgcGFn
ZSA2My4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCisKKyNpbmNsdWRlICJsaWJH
TEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvQmxp
dC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvSW1hZ2UuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVu
ZGVyZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UuaCIK
KyNpbmNsdWRlICJsaWJFR0wvU3VyZmFjZS5oIgorCituYW1lc3BhY2UgZ2wKK3sKKworVGV4dHVy
ZTo6VGV4dHVyZShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHVpbnQgaWQpIDogUmVmQ291bnRP
YmplY3QoaWQpCit7CisgICAgbVJlbmRlcmVyID0gcmVuZGVyZXI7CisKKyAgICBtU2FtcGxlclN0
YXRlLm1pbkZpbHRlciA9IEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUjsKKyAgICBtU2FtcGxlclN0
YXRlLm1hZ0ZpbHRlciA9IEdMX0xJTkVBUjsKKyAgICBtU2FtcGxlclN0YXRlLndyYXBTID0gR0xf
UkVQRUFUOworICAgIG1TYW1wbGVyU3RhdGUud3JhcFQgPSBHTF9SRVBFQVQ7CisgICAgbVNhbXBs
ZXJTdGF0ZS5tYXhBbmlzb3Ryb3B5ID0gMS4wZjsKKyAgICBtU2FtcGxlclN0YXRlLmxvZE9mZnNl
dCA9IDA7CisgICAgbVVzYWdlID0gR0xfTk9ORTsKKyAgICAKKyAgICBtRGlydHlJbWFnZXMgPSB0
cnVlOworCisgICAgbUltbXV0YWJsZSA9IGZhbHNlOworfQorCitUZXh0dXJlOjp+VGV4dHVyZSgp
Cit7Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzZnVsIGZpbHRlciBzdGF0ZSB1cGRh
dGUgKHZhbGlkIGVudW0gcGFyYW1ldGVyKQorYm9vbCBUZXh0dXJlOjpzZXRNaW5GaWx0ZXIoR0xl
bnVtIGZpbHRlcikKK3sKKyAgICBzd2l0Y2ggKGZpbHRlcikKKyAgICB7CisgICAgICBjYXNlIEdM
X05FQVJFU1Q6CisgICAgICBjYXNlIEdMX0xJTkVBUjoKKyAgICAgIGNhc2UgR0xfTkVBUkVTVF9N
SVBNQVBfTkVBUkVTVDoKKyAgICAgIGNhc2UgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUOgorICAg
ICAgY2FzZSBHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVI6CisgICAgICBjYXNlIEdMX0xJTkVBUl9N
SVBNQVBfTElORUFSOgorICAgICAgICBtU2FtcGxlclN0YXRlLm1pbkZpbHRlciA9IGZpbHRlcjsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCisvLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzc2Z1bCBmaWx0ZXIgc3Rh
dGUgdXBkYXRlICh2YWxpZCBlbnVtIHBhcmFtZXRlcikKK2Jvb2wgVGV4dHVyZTo6c2V0TWFnRmls
dGVyKEdMZW51bSBmaWx0ZXIpCit7CisgICAgc3dpdGNoIChmaWx0ZXIpCisgICAgeworICAgICAg
Y2FzZSBHTF9ORUFSRVNUOgorICAgICAgY2FzZSBHTF9MSU5FQVI6CisgICAgICAgIG1TYW1wbGVy
U3RhdGUubWFnRmlsdGVyID0gZmlsdGVyOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFJldHVybnMgdHJ1
ZSBvbiBzdWNjZXNzZnVsIHdyYXAgc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVtIHBhcmFtZXRlcikK
K2Jvb2wgVGV4dHVyZTo6c2V0V3JhcFMoR0xlbnVtIHdyYXApCit7CisgICAgc3dpdGNoICh3cmFw
KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkVQRUFUOgorICAgICAgY2FzZSBHTF9DTEFNUF9UT19F
REdFOgorICAgICAgY2FzZSBHTF9NSVJST1JFRF9SRVBFQVQ6CisgICAgICAgIG1TYW1wbGVyU3Rh
dGUud3JhcFMgPSB3cmFwOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBvbiBzdWNj
ZXNzZnVsIHdyYXAgc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVtIHBhcmFtZXRlcikKK2Jvb2wgVGV4
dHVyZTo6c2V0V3JhcFQoR0xlbnVtIHdyYXApCit7CisgICAgc3dpdGNoICh3cmFwKQorICAgIHsK
KyAgICAgIGNhc2UgR0xfUkVQRUFUOgorICAgICAgY2FzZSBHTF9DTEFNUF9UT19FREdFOgorICAg
ICAgY2FzZSBHTF9NSVJST1JFRF9SRVBFQVQ6CisgICAgICAgIG1TYW1wbGVyU3RhdGUud3JhcFQg
PSB3cmFwOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzZnVsIG1h
eCBhbmlzb3Ryb3B5IHVwZGF0ZSAodmFsaWQgYW5pc290cm9weSB2YWx1ZSkKK2Jvb2wgVGV4dHVy
ZTo6c2V0TWF4QW5pc290cm9weShmbG9hdCB0ZXh0dXJlTWF4QW5pc290cm9weSwgZmxvYXQgY29u
dGV4dE1heEFuaXNvdHJvcHkpCit7CisgICAgdGV4dHVyZU1heEFuaXNvdHJvcHkgPSBzdGQ6Om1p
bih0ZXh0dXJlTWF4QW5pc290cm9weSwgY29udGV4dE1heEFuaXNvdHJvcHkpOworICAgIGlmICh0
ZXh0dXJlTWF4QW5pc290cm9weSA8IDEuMGYpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgbVNhbXBsZXJTdGF0ZS5tYXhBbmlzb3Ryb3B5ID0gdGV4dHVyZU1heEFu
aXNvdHJvcHk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gUmV0dXJucyB0cnVlIG9uIHN1
Y2Nlc3NmdWwgdXNhZ2Ugc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVtIHBhcmFtZXRlcikKK2Jvb2wg
VGV4dHVyZTo6c2V0VXNhZ2UoR0xlbnVtIHVzYWdlKQoreworICAgIHN3aXRjaCAodXNhZ2UpCisg
ICAgeworICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX0FOR0xFOgorICAgICAgICBtVXNhZ2UgPSB1c2FnZTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitH
TGVudW0gVGV4dHVyZTo6Z2V0TWluRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBs
ZXJTdGF0ZS5taW5GaWx0ZXI7Cit9CisKK0dMZW51bSBUZXh0dXJlOjpnZXRNYWdGaWx0ZXIoKSBj
b25zdAoreworICAgIHJldHVybiBtU2FtcGxlclN0YXRlLm1hZ0ZpbHRlcjsKK30KKworR0xlbnVt
IFRleHR1cmU6OmdldFdyYXBTKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBsZXJTdGF0ZS53
cmFwUzsKK30KKworR0xlbnVtIFRleHR1cmU6OmdldFdyYXBUKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVNhbXBsZXJTdGF0ZS53cmFwVDsKK30KKworZmxvYXQgVGV4dHVyZTo6Z2V0TWF4QW5pc290
cm9weSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TYW1wbGVyU3RhdGUubWF4QW5pc290cm9weTsK
K30KKworaW50IFRleHR1cmU6OmdldExvZE9mZnNldCgpCit7CisgICAgcng6OlRleHR1cmVTdG9y
YWdlSW50ZXJmYWNlICp0ZXh0dXJlID0gZ2V0U3RvcmFnZShmYWxzZSk7CisgICAgcmV0dXJuIHRl
eHR1cmUgPyB0ZXh0dXJlLT5nZXRMb2RPZmZzZXQoKSA6IDA7Cit9CisKK3ZvaWQgVGV4dHVyZTo6
Z2V0U2FtcGxlclN0YXRlKFNhbXBsZXJTdGF0ZSAqc2FtcGxlcikKK3sKKyAgICAqc2FtcGxlciA9
IG1TYW1wbGVyU3RhdGU7CisgICAgc2FtcGxlci0+bG9kT2Zmc2V0ID0gZ2V0TG9kT2Zmc2V0KCk7
Cit9CisKK0dMZW51bSBUZXh0dXJlOjpnZXRVc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1V
c2FnZTsKK30KKworYm9vbCBUZXh0dXJlOjppc01pcG1hcEZpbHRlcmVkKCkgY29uc3QKK3sKKyAg
ICBzd2l0Y2ggKG1TYW1wbGVyU3RhdGUubWluRmlsdGVyKQorICAgIHsKKyAgICAgIGNhc2UgR0xf
TkVBUkVTVDoKKyAgICAgIGNhc2UgR0xfTElORUFSOgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1Q6CisgICAgICBjYXNlIEdMX0xJTkVB
Ul9NSVBNQVBfTkVBUkVTVDoKKyAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSOgor
ICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUjoKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCit2b2lkIFRleHR1cmU6OnNldEltYWdlKEdMaW50IHVucGFja0FsaWdubWVudCwg
Y29uc3Qgdm9pZCAqcGl4ZWxzLCByeDo6SW1hZ2UgKmltYWdlKQoreworICAgIGlmIChwaXhlbHMg
IT0gTlVMTCkKKyAgICB7CisgICAgICAgIGltYWdlLT5sb2FkRGF0YSgwLCAwLCBpbWFnZS0+Z2V0
V2lkdGgoKSwgaW1hZ2UtPmdldEhlaWdodCgpLCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscyk7Cisg
ICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CisgICAgfQorfQorCit2b2lkIFRleHR1cmU6OnNl
dENvbXByZXNzZWRJbWFnZShHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzLCBy
eDo6SW1hZ2UgKmltYWdlKQoreworICAgIGlmIChwaXhlbHMgIT0gTlVMTCkKKyAgICB7CisgICAg
ICAgIGltYWdlLT5sb2FkQ29tcHJlc3NlZERhdGEoMCwgMCwgaW1hZ2UtPmdldFdpZHRoKCksIGlt
YWdlLT5nZXRIZWlnaHQoKSwgcGl4ZWxzKTsKKyAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsK
KyAgICB9Cit9CisKK2Jvb2wgVGV4dHVyZTo6c3ViSW1hZ2UoR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscywgcng6
OkltYWdlICppbWFnZSkKK3sKKyAgICBpZiAocGl4ZWxzICE9IE5VTEwpCisgICAgeworICAgICAg
ICBpbWFnZS0+bG9hZERhdGEoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgdW5wYWNr
QWxpZ25tZW50LCBwaXhlbHMpOworICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFRleHR1cmU6OnN1YkltYWdlQ29tcHJlc3Nl
ZChHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVs
cywgcng6OkltYWdlICppbWFnZSkKK3sKKyAgICBpZiAocGl4ZWxzICE9IE5VTEwpCisgICAgewor
ICAgICAgICBpbWFnZS0+bG9hZENvbXByZXNzZWREYXRhKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIHBpeGVscyk7CisgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3J4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZSAqVGV4
dHVyZTo6Z2V0TmF0aXZlVGV4dHVyZSgpCit7CisgICAgLy8gZW5zdXJlIHRoZSB1bmRlcmx5aW5n
IHRleHR1cmUgaXMgY3JlYXRlZAorCisgICAgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlICpz
dG9yYWdlID0gZ2V0U3RvcmFnZShmYWxzZSk7CisgICAgaWYgKHN0b3JhZ2UpCisgICAgeworICAg
ICAgICB1cGRhdGVUZXh0dXJlKCk7CisgICAgfQorCisgICAgcmV0dXJuIHN0b3JhZ2U7Cit9CisK
K2Jvb2wgVGV4dHVyZTo6aGFzRGlydHlJbWFnZXMoKSBjb25zdAoreworICAgIHJldHVybiBtRGly
dHlJbWFnZXM7Cit9CisKK3ZvaWQgVGV4dHVyZTo6cmVzZXREaXJ0eSgpCit7CisgICAgbURpcnR5
SW1hZ2VzID0gZmFsc2U7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0dXJlOjpnZXRUZXh0dXJlU2Vy
aWFsKCkKK3sKKyAgICByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UgKnRleHR1cmUgPSBnZXRT
dG9yYWdlKGZhbHNlKTsKKyAgICByZXR1cm4gdGV4dHVyZSA/IHRleHR1cmUtPmdldFRleHR1cmVT
ZXJpYWwoKSA6IDA7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0dXJlOjpnZXRSZW5kZXJUYXJnZXRT
ZXJpYWwoR0xlbnVtIHRhcmdldCkKK3sKKyAgICByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2Ug
KnRleHR1cmUgPSBnZXRTdG9yYWdlKHRydWUpOworICAgIHJldHVybiB0ZXh0dXJlID8gdGV4dHVy
ZS0+Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKHRhcmdldCkgOiAwOworfQorCitib29sIFRleHR1cmU6
OmlzSW1tdXRhYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUltbXV0YWJsZTsKK30KKworR0xp
bnQgVGV4dHVyZTo6Y3JlYXRpb25MZXZlbHMoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
IGNvbnN0Cit7CisgICAgaWYgKChpc1BvdzIod2lkdGgpICYmIGlzUG93MihoZWlnaHQpKSB8fCBt
UmVuZGVyZXItPmdldE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gMDsgICAvLyBNYXhpbXVtIG51bWJlciBvZiBsZXZlbHMKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgLy8gT3BlbkdMIEVTIDIuMCB3aXRob3V0IEdMX09FU190ZXh0dXJlX25w
b3QgZG9lcyBub3QgcGVybWl0IE5QT1QgbWlwbWFwcy4KKyAgICAgICAgcmV0dXJuIDE7CisgICAg
fQorfQorCitHTGludCBUZXh0dXJlOjpjcmVhdGlvbkxldmVscyhHTHNpemVpIHNpemUpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGNyZWF0aW9uTGV2ZWxzKHNpemUsIHNpemUpOworfQorCitUZXh0dXJl
MkQ6OlRleHR1cmUyRChyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHVpbnQgaWQpIDogVGV4dHVy
ZShyZW5kZXJlciwgaWQpCit7CisgICAgbVRleFN0b3JhZ2UgPSBOVUxMOworICAgIG1TdXJmYWNl
ID0gTlVMTDsKKyAgICBtQ29sb3JidWZmZXJQcm94eSA9IE5VTEw7CisgICAgbVByb3h5UmVmcyA9
IDA7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJF
X0xFVkVMUzsgKytpKQorICAgIHsKKyAgICAgICAgbUltYWdlQXJyYXlbaV0gPSByZW5kZXJlci0+
Y3JlYXRlSW1hZ2UoKTsKKyAgICB9Cit9CisKK1RleHR1cmUyRDo6flRleHR1cmUyRCgpCit7Cisg
ICAgbUNvbG9yYnVmZmVyUHJveHkgPSBOVUxMOworCisgICAgZGVsZXRlIG1UZXhTdG9yYWdlOwor
ICAgIG1UZXhTdG9yYWdlID0gTlVMTDsKKyAgICAKKyAgICBpZiAobVN1cmZhY2UpCisgICAgewor
ICAgICAgICBtU3VyZmFjZS0+c2V0Qm91bmRUZXh0dXJlKE5VTEwpOworICAgICAgICBtU3VyZmFj
ZSA9IE5VTEw7CisgICAgfQorCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBJTVBMRU1FTlRBVElP
Tl9NQVhfVEVYVFVSRV9MRVZFTFM7ICsraSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtSW1hZ2VB
cnJheVtpXTsKKyAgICB9Cit9CisKKy8vIFdlIG5lZWQgdG8gbWFpbnRhaW4gYSBjb3VudCBvZiBy
ZWZlcmVuY2VzIHRvIHJlbmRlcmJ1ZmZlcnMgYWN0aW5nIGFzIAorLy8gcHJveGllcyBmb3IgdGhp
cyB0ZXh0dXJlLCBzbyB0aGF0IHdlIGRvIG5vdCBhdHRlbXB0IHRvIHVzZSBhIHBvaW50ZXIgCisv
LyB0byBhIHJlbmRlcmJ1ZmZlciBwcm94eSB3aGljaCBoYXMgYmVlbiBkZWxldGVkLgordm9pZCBU
ZXh0dXJlMkQ6OmFkZFByb3h5UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCit7CisgICAg
bVByb3h5UmVmcysrOworfQorCit2b2lkIFRleHR1cmUyRDo6cmVsZWFzZVByb3h5KGNvbnN0IFJl
bmRlcmJ1ZmZlciAqcHJveHkpCit7CisgICAgaWYgKG1Qcm94eVJlZnMgPiAwKQorICAgICAgICBt
UHJveHlSZWZzLS07CisKKyAgICBpZiAobVByb3h5UmVmcyA9PSAwKQorICAgICAgICBtQ29sb3Ji
dWZmZXJQcm94eSA9IE5VTEw7Cit9CisKK0dMZW51bSBUZXh0dXJlMkQ6OmdldFRhcmdldCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIEdMX1RFWFRVUkVfMkQ7Cit9CisKK0dMc2l6ZWkgVGV4dHVyZTJE
OjpnZXRXaWR0aChHTGludCBsZXZlbCkgY29uc3QKK3sKKyAgICBpZiAobGV2ZWwgPCBJTVBMRU1F
TlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCisgICAgICAgIHJldHVybiBtSW1hZ2VBcnJheVts
ZXZlbF0tPmdldFdpZHRoKCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKworR0xz
aXplaSBUZXh0dXJlMkQ6OmdldEhlaWdodChHTGludCBsZXZlbCkgY29uc3QKK3sKKyAgICBpZiAo
bGV2ZWwgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCisgICAgICAgIHJldHVy
biBtSW1hZ2VBcnJheVtsZXZlbF0tPmdldEhlaWdodCgpOworICAgIGVsc2UKKyAgICAgICAgcmV0
dXJuIDA7Cit9CisKK0dMZW51bSBUZXh0dXJlMkQ6OmdldEludGVybmFsRm9ybWF0KEdMaW50IGxl
dmVsKSBjb25zdAoreworICAgIGlmIChsZXZlbCA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJF
X0xFVkVMUykKKyAgICAgICAgcmV0dXJuIG1JbWFnZUFycmF5W2xldmVsXS0+Z2V0SW50ZXJuYWxG
b3JtYXQoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBHTF9OT05FOworfQorCitHTGVudW0g
VGV4dHVyZTJEOjpnZXRBY3R1YWxGb3JtYXQoR0xpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAgaWYg
KGxldmVsIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQorICAgICAgICByZXR1
cm4gbUltYWdlQXJyYXlbbGV2ZWxdLT5nZXRBY3R1YWxGb3JtYXQoKTsKKyAgICBlbHNlCisgICAg
ICAgIHJldHVybiBEM0RGTVRfVU5LTk9XTjsKK30KKwordm9pZCBUZXh0dXJlMkQ6OnJlZGVmaW5l
SW1hZ2UoR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCkKK3sKKyAgICByZWxlYXNlVGV4SW1hZ2UoKTsKKworICAgIC8vIElmIHRo
ZXJlIGN1cnJlbnRseSBpcyBhIGNvcnJlc3BvbmRpbmcgc3RvcmFnZSB0ZXh0dXJlIGltYWdlLCBp
dCBoYXMgdGhlc2UgcGFyYW1ldGVycworICAgIGNvbnN0IGludCBzdG9yYWdlV2lkdGggPSBzdGQ6
Om1heCgxLCBtSW1hZ2VBcnJheVswXS0+Z2V0V2lkdGgoKSA+PiBsZXZlbCk7CisgICAgY29uc3Qg
aW50IHN0b3JhZ2VIZWlnaHQgPSBzdGQ6Om1heCgxLCBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0
KCkgPj4gbGV2ZWwpOworICAgIGNvbnN0IGludCBzdG9yYWdlRm9ybWF0ID0gbUltYWdlQXJyYXlb
MF0tPmdldEludGVybmFsRm9ybWF0KCk7CisKKyAgICBtSW1hZ2VBcnJheVtsZXZlbF0tPnJlZGVm
aW5lKG1SZW5kZXJlciwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGZhbHNlKTsKKwor
ICAgIGlmIChtVGV4U3RvcmFnZSkKKyAgICB7CisgICAgICAgIGNvbnN0IGludCBzdG9yYWdlTGV2
ZWxzID0gbVRleFN0b3JhZ2UtPmxldmVsQ291bnQoKTsKKyAgICAgICAgCisgICAgICAgIGlmICgo
bGV2ZWwgPj0gc3RvcmFnZUxldmVscyAmJiBzdG9yYWdlTGV2ZWxzICE9IDApIHx8CisgICAgICAg
ICAgICB3aWR0aCAhPSBzdG9yYWdlV2lkdGggfHwKKyAgICAgICAgICAgIGhlaWdodCAhPSBzdG9y
YWdlSGVpZ2h0IHx8CisgICAgICAgICAgICBpbnRlcm5hbGZvcm1hdCAhPSBzdG9yYWdlRm9ybWF0
KSAgIC8vIERpc2NhcmQgbWlzbWF0Y2hlZCBzdG9yYWdlCisgICAgICAgIHsKKyAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBp
KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbaV0tPm1hcmtE
aXJ0eSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkZWxldGUgbVRleFN0b3JhZ2U7
CisgICAgICAgICAgICBtVGV4U3RvcmFnZSA9IE5VTEw7CisgICAgICAgICAgICBtRGlydHlJbWFn
ZXMgPSB0cnVlOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRleHR1cmUyRDo6c2V0SW1h
Z2UoR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9y
bWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhl
bHMpCit7CisgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQgPSBDb252ZXJ0U2l6ZWRJbnRlcm5hbEZv
cm1hdChmb3JtYXQsIHR5cGUpOworICAgIHJlZGVmaW5lSW1hZ2UobGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIFRleHR1cmU6OnNldEltYWdlKHVucGFja0FsaWdu
bWVudCwgcGl4ZWxzLCBtSW1hZ2VBcnJheVtsZXZlbF0pOworfQorCit2b2lkIFRleHR1cmUyRDo6
YmluZFRleEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKK3sKKyAgICByZWxlYXNlVGV4SW1h
Z2UoKTsKKworICAgIEdMaW50IGludGVybmFsZm9ybWF0ID0gc3VyZmFjZS0+Z2V0Rm9ybWF0KCk7
CisKKyAgICBtSW1hZ2VBcnJheVswXS0+cmVkZWZpbmUobVJlbmRlcmVyLCBpbnRlcm5hbGZvcm1h
dCwgc3VyZmFjZS0+Z2V0V2lkdGgoKSwgc3VyZmFjZS0+Z2V0SGVpZ2h0KCksIHRydWUpOworCisg
ICAgZGVsZXRlIG1UZXhTdG9yYWdlOworICAgIG1UZXhTdG9yYWdlID0gbmV3IHJ4OjpUZXh0dXJl
U3RvcmFnZUludGVyZmFjZTJEKG1SZW5kZXJlciwgc3VyZmFjZS0+Z2V0U3dhcENoYWluKCkpOwor
CisgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKKyAgICBtU3VyZmFjZSA9IHN1cmZhY2U7CisgICAg
bVN1cmZhY2UtPnNldEJvdW5kVGV4dHVyZSh0aGlzKTsKK30KKwordm9pZCBUZXh0dXJlMkQ6OnJl
bGVhc2VUZXhJbWFnZSgpCit7CisgICAgaWYgKG1TdXJmYWNlKQorICAgIHsKKyAgICAgICAgbVN1
cmZhY2UtPnNldEJvdW5kVGV4dHVyZShOVUxMKTsKKyAgICAgICAgbVN1cmZhY2UgPSBOVUxMOwor
CisgICAgICAgIGlmIChtVGV4U3RvcmFnZSkKKyAgICAgICAgeworICAgICAgICAgICAgZGVsZXRl
IG1UZXhTdG9yYWdlOworICAgICAgICAgICAgbVRleFN0b3JhZ2UgPSBOVUxMOworICAgICAgICB9
CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVS
RV9MRVZFTFM7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgbUltYWdlQXJyYXlbaV0tPnJl
ZGVmaW5lKG1SZW5kZXJlciwgR0xfTk9ORSwgMCwgMCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgVGV4dHVyZTJEOjpzZXRDb21wcmVzc2VkSW1hZ2UoR0xpbnQgbGV2ZWwsIEdM
ZW51bSBmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGltYWdl
U2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIC8vIGNvbXByZXNzZWQgZm9ybWF0cyBk
b24ndCBoYXZlIHNlcGFyYXRlIHNpemVkIGludGVybmFsIGZvcm1hdHMtLSB3ZSBjYW4ganVzdCB1
c2UgdGhlIGNvbXByZXNzZWQgZm9ybWF0IGRpcmVjdGx5CisgICAgcmVkZWZpbmVJbWFnZShsZXZl
bCwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIFRleHR1cmU6OnNldENvbXByZXNzZWRJ
bWFnZShpbWFnZVNpemUsIHBpeGVscywgbUltYWdlQXJyYXlbbGV2ZWxdKTsKK30KKwordm9pZCBU
ZXh0dXJlMkQ6OmNvbW1pdFJlY3QoR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIGlmIChsZXZlbCA8
IGxldmVsQ291bnQoKSkKKyAgICB7CisgICAgICAgIHJ4OjpJbWFnZSAqaW1hZ2UgPSBtSW1hZ2VB
cnJheVtsZXZlbF07CisgICAgICAgIGlmIChpbWFnZS0+dXBkYXRlU3VyZmFjZShtVGV4U3RvcmFn
ZSwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpbWFnZS0+bWFya0NsZWFuKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgVGV4dHVyZTJEOjpzdWJJbWFnZShHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscykKK3sK
KyAgICBpZiAoVGV4dHVyZTo6c3ViSW1hZ2UoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscywgbUltYWdlQXJyYXlbbGV2
ZWxdKSkKKyAgICB7CisgICAgICAgIGNvbW1pdFJlY3QobGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQpOworICAgIH0KK30KKwordm9pZCBUZXh0dXJlMkQ6OnN1YkltYWdlQ29t
cHJlc3NlZChHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXpl
LCBjb25zdCB2b2lkICpwaXhlbHMpCit7CisgICAgaWYgKFRleHR1cmU6OnN1YkltYWdlQ29tcHJl
c3NlZCh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwg
cGl4ZWxzLCBtSW1hZ2VBcnJheVtsZXZlbF0pKQorICAgIHsKKyAgICAgICAgY29tbWl0UmVjdChs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorfQorCit2b2lk
IFRleHR1cmUyRDo6Y29weUltYWdlKEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgRnJhbWVidWZmZXIgKnNv
dXJjZSkKK3sKKyAgICBHTGludCBpbnRlcm5hbGZvcm1hdCA9IENvbnZlcnRTaXplZEludGVybmFs
Rm9ybWF0KGZvcm1hdCwgR0xfVU5TSUdORURfQllURSk7CisgICAgcmVkZWZpbmVJbWFnZShsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworCisgICAgaWYgKCFtSW1hZ2VBcnJh
eVtsZXZlbF0tPmlzUmVuZGVyYWJsZUZvcm1hdCgpKQorICAgIHsKKyAgICAgICAgbUltYWdlQXJy
YXlbbGV2ZWxdLT5jb3B5KDAsIDAsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZSk7CisgICAg
ICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IGlmICghbVRleFN0b3JhZ2UgfHwgIW1UZXhTdG9yYWdlLT5pc1JlbmRlclRhcmdldCgpKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb252ZXJ0VG9SZW5kZXJUYXJnZXQoKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgbUltYWdlQXJyYXlbbGV2ZWxdLT5tYXJrQ2xlYW4oKTsKKworICAg
ICAgICBpZiAod2lkdGggIT0gMCAmJiBoZWlnaHQgIT0gMCAmJiBsZXZlbCA8IGxldmVsQ291bnQo
KSkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlJlY3RhbmdsZSBzb3VyY2VSZWN0OworICAg
ICAgICAgICAgc291cmNlUmVjdC54ID0geDsKKyAgICAgICAgICAgIHNvdXJjZVJlY3Qud2lkdGgg
PSB3aWR0aDsKKyAgICAgICAgICAgIHNvdXJjZVJlY3QueSA9IHk7CisgICAgICAgICAgICBzb3Vy
Y2VSZWN0LmhlaWdodCA9IGhlaWdodDsKKworICAgICAgICAgICAgbVJlbmRlcmVyLT5jb3B5SW1h
Z2Uoc291cmNlLCBzb3VyY2VSZWN0LCBmb3JtYXQsIDAsIDAsIG1UZXhTdG9yYWdlLCBsZXZlbCk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZTJEOjpjb3B5U3ViSW1hZ2UoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZl
ciAqc291cmNlKQoreworICAgIGlmICh4b2Zmc2V0ICsgd2lkdGggPiBtSW1hZ2VBcnJheVtsZXZl
bF0tPmdldFdpZHRoKCkgfHwgeW9mZnNldCArIGhlaWdodCA+IG1JbWFnZUFycmF5W2xldmVsXS0+
Z2V0SGVpZ2h0KCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOworICAgIH0KKworICAgIGlmICghbUltYWdlQXJyYXlbbGV2ZWxdLT5pc1JlbmRlcmFi
bGVGb3JtYXQoKSB8fCAoIW1UZXhTdG9yYWdlICYmICFpc1NhbXBsZXJDb21wbGV0ZSgpKSkKKyAg
ICB7CisgICAgICAgIG1JbWFnZUFycmF5W2xldmVsXS0+Y29weSh4b2Zmc2V0LCB5b2Zmc2V0LCB4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2UpOworICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVl
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoIW1UZXhTdG9yYWdlIHx8ICFt
VGV4U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29u
dmVydFRvUmVuZGVyVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVwZGF0
ZVRleHR1cmUoKTsKKworICAgICAgICBpZiAobGV2ZWwgPCBsZXZlbENvdW50KCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsOjpSZWN0YW5nbGUgc291cmNlUmVjdDsKKyAgICAgICAgICAgIHNv
dXJjZVJlY3QueCA9IHg7CisgICAgICAgICAgICBzb3VyY2VSZWN0LndpZHRoID0gd2lkdGg7Cisg
ICAgICAgICAgICBzb3VyY2VSZWN0LnkgPSB5OworICAgICAgICAgICAgc291cmNlUmVjdC5oZWln
aHQgPSBoZWlnaHQ7CisKKyAgICAgICAgICAgIG1SZW5kZXJlci0+Y29weUltYWdlKHNvdXJjZSwg
c291cmNlUmVjdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6RXh0cmFj
dEZvcm1hdChtSW1hZ2VBcnJheVswXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4b2Zmc2V0LCB5b2Zmc2V0LCBtVGV4U3RvcmFnZSwgbGV2
ZWwpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRleHR1cmUyRDo6c3RvcmFnZShHTHNp
emVpIGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCkKK3sKKyAgICBkZWxldGUgbVRleFN0b3JhZ2U7CisgICAgbVRleFN0b3JhZ2UgPSBu
ZXcgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQobVJlbmRlcmVyLCBsZXZlbHMsIGludGVy
bmFsZm9ybWF0LCBtVXNhZ2UsIGZhbHNlLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBtSW1tdXRhYmxl
ID0gdHJ1ZTsKKworICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVs
KyspCisgICAgeworICAgICAgICBtSW1hZ2VBcnJheVtsZXZlbF0tPnJlZGVmaW5lKG1SZW5kZXJl
ciwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHRydWUpOworICAgICAgICB3aWR0aCA9
IHN0ZDo6bWF4KDEsIHdpZHRoID4+IDEpOworICAgICAgICBoZWlnaHQgPSBzdGQ6Om1heCgxLCBo
ZWlnaHQgPj4gMSk7CisgICAgfQorCisgICAgZm9yIChpbnQgbGV2ZWwgPSBsZXZlbHM7IGxldmVs
IDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBsZXZlbCsrKQorICAgIHsKKyAg
ICAgICAgbUltYWdlQXJyYXlbbGV2ZWxdLT5yZWRlZmluZShtUmVuZGVyZXIsIEdMX05PTkUsIDAs
IDAsIHRydWUpOworICAgIH0KKworICAgIGlmIChtVGV4U3RvcmFnZS0+aXNNYW5hZ2VkKCkpCisg
ICAgeworICAgICAgICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgpOworCisgICAgICAgIGZvciAo
aW50IGxldmVsID0gMDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1JbWFnZUFycmF5W2xldmVsXS0+c2V0TWFuYWdlZFN1cmZhY2UobVRleFN0b3JhZ2Us
IGxldmVsKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVGVzdHMgZm9yIDJEIHRleHR1cmUg
c2FtcGxpbmcgY29tcGxldGVuZXNzLiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAzLjguMiBw
YWdlIDg1LgorYm9vbCBUZXh0dXJlMkQ6OmlzU2FtcGxlckNvbXBsZXRlKCkgY29uc3QKK3sKKyAg
ICBHTHNpemVpIHdpZHRoID0gbUltYWdlQXJyYXlbMF0tPmdldFdpZHRoKCk7CisgICAgR0xzaXpl
aSBoZWlnaHQgPSBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCk7CisKKyAgICBpZiAod2lkdGgg
PD0gMCB8fCBoZWlnaHQgPD0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBib29sIG1pcG1hcHBpbmcgPSBpc01pcG1hcEZpbHRlcmVkKCk7CisgICAgYm9vbCBm
aWx0ZXJpbmcsIHJlbmRlcmFibGU7CisKKyAgICBpZiAoKElzRmxvYXQzMkZvcm1hdChnZXRJbnRl
cm5hbEZvcm1hdCgwKSkgJiYgIW1SZW5kZXJlci0+Z2V0RmxvYXQzMlRleHR1cmVTdXBwb3J0KCZm
aWx0ZXJpbmcsICZyZW5kZXJhYmxlKSkgfHwKKyAgICAgICAgKElzRmxvYXQxNkZvcm1hdChnZXRJ
bnRlcm5hbEZvcm1hdCgwKSkgJiYgIW1SZW5kZXJlci0+Z2V0RmxvYXQxNlRleHR1cmVTdXBwb3J0
KCZmaWx0ZXJpbmcsICZyZW5kZXJhYmxlKSkpCisgICAgeworICAgICAgICBpZiAobVNhbXBsZXJT
dGF0ZS5tYWdGaWx0ZXIgIT0gR0xfTkVBUkVTVCB8fAorICAgICAgICAgICAgKG1TYW1wbGVyU3Rh
dGUubWluRmlsdGVyICE9IEdMX05FQVJFU1QgJiYgbVNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIgIT0g
R0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgbnBvdFN1cHBvcnQgPSBtUmVu
ZGVyZXItPmdldE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KCk7CisKKyAgICBpZiAoIW5wb3RTdXBw
b3J0KQorICAgIHsKKyAgICAgICAgaWYgKChtU2FtcGxlclN0YXRlLndyYXBTICE9IEdMX0NMQU1Q
X1RPX0VER0UgJiYgIWlzUG93Mih3aWR0aCkpIHx8CisgICAgICAgICAgICAobVNhbXBsZXJTdGF0
ZS53cmFwVCAhPSBHTF9DTEFNUF9UT19FREdFICYmICFpc1BvdzIoaGVpZ2h0KSkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChtaXBtYXBwaW5nKQorICAgIHsKKyAgICAgICAgaWYgKCFucG90U3VwcG9ydCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKCFpc1BvdzIod2lkdGgpIHx8ICFpc1BvdzIoaGVpZ2h0KSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWlzTWlwbWFwQ29tcGxldGUoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKKy8vIFRlc3RzIGZvciAyRCB0ZXh0dXJlIChtaXBtYXApIGNvbXBsZXRl
bmVzcy4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMy43LjEwIHBhZ2UgODEuCitib29sIFRl
eHR1cmUyRDo6aXNNaXBtYXBDb21wbGV0ZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW1tdXRhYmxl
KCkpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBHTHNpemVpIHdp
ZHRoID0gbUltYWdlQXJyYXlbMF0tPmdldFdpZHRoKCk7CisgICAgR0xzaXplaSBoZWlnaHQgPSBt
SW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCk7CisKKyAgICBpZiAod2lkdGggPD0gMCB8fCBoZWln
aHQgPD0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbnQg
cSA9IGxvZzIoc3RkOjptYXgod2lkdGgsIGhlaWdodCkpOworCisgICAgZm9yIChpbnQgbGV2ZWwg
PSAxOyBsZXZlbCA8PSBxOyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAgaWYgKG1JbWFnZUFycmF5
W2xldmVsXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSAhPSBtSW1hZ2VBcnJheVswXS0+Z2V0SW50ZXJu
YWxGb3JtYXQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKG1JbWFnZUFycmF5W2xldmVsXS0+Z2V0V2lkdGgoKSAhPSBzdGQ6
Om1heCgxLCB3aWR0aCA+PiBsZXZlbCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtSW1hZ2VBcnJheVtsZXZlbF0tPmdldEhl
aWdodCgpICE9IHN0ZDo6bWF4KDEsIGhlaWdodCA+PiBsZXZlbCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFRleHR1cmUyRDo6aXNDb21wcmVzc2VkKEdMaW50IGxldmVsKSBjb25zdAor
eworICAgIHJldHVybiBJc0NvbXByZXNzZWQoZ2V0SW50ZXJuYWxGb3JtYXQobGV2ZWwpKTsKK30K
KworYm9vbCBUZXh0dXJlMkQ6OmlzRGVwdGgoR0xpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAgcmV0
dXJuIElzRGVwdGhUZXh0dXJlKGdldEludGVybmFsRm9ybWF0KGxldmVsKSk7Cit9CisKKy8vIENv
bnN0cnVjdHMgYSBuYXRpdmUgdGV4dHVyZSByZXNvdXJjZSBmcm9tIHRoZSB0ZXh0dXJlIGltYWdl
cwordm9pZCBUZXh0dXJlMkQ6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIEdMc2l6ZWkgd2lkdGgg
PSBtSW1hZ2VBcnJheVswXS0+Z2V0V2lkdGgoKTsKKyAgICBHTHNpemVpIGhlaWdodCA9IG1JbWFn
ZUFycmF5WzBdLT5nZXRIZWlnaHQoKTsKKworICAgIGlmICghKHdpZHRoID4gMCAmJiBoZWlnaHQg
PiAwKSkKKyAgICAgICAgcmV0dXJuOyAvLyBkbyBub3QgYXR0ZW1wdCB0byBjcmVhdGUgbmF0aXZl
IHRleHR1cmVzIGZvciBub25leGlzdGFudCBkYXRhCisKKyAgICBHTGludCBsZXZlbHMgPSBjcmVh
dGlvbkxldmVscyh3aWR0aCwgaGVpZ2h0KTsKKyAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSBt
SW1hZ2VBcnJheVswXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKKworICAgIGRlbGV0ZSBtVGV4U3Rv
cmFnZTsKKyAgICBtVGV4U3RvcmFnZSA9IG5ldyByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2Uy
RChtUmVuZGVyZXIsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIG1Vc2FnZSwgZmFsc2UsIHdpZHRo
LCBoZWlnaHQpOworICAgIAorICAgIGlmIChtVGV4U3RvcmFnZS0+aXNNYW5hZ2VkKCkpCisgICAg
eworICAgICAgICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgpOworCisgICAgICAgIGZvciAoaW50
IGxldmVsID0gMDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1JbWFnZUFycmF5W2xldmVsXS0+c2V0TWFuYWdlZFN1cmZhY2UobVRleFN0b3JhZ2UsIGxl
dmVsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7Cit9CisK
K3ZvaWQgVGV4dHVyZTJEOjp1cGRhdGVUZXh0dXJlKCkKK3sKKyAgICBib29sIG1pcG1hcHBpbmcg
PSAoaXNNaXBtYXBGaWx0ZXJlZCgpICYmIGlzTWlwbWFwQ29tcGxldGUoKSk7CisKKyAgICBpbnQg
bGV2ZWxzID0gKG1pcG1hcHBpbmcgPyBsZXZlbENvdW50KCkgOiAxKTsKKworICAgIGZvciAoaW50
IGxldmVsID0gMDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspCisgICAgeworICAgICAgICByeDo6
SW1hZ2UgKmltYWdlID0gbUltYWdlQXJyYXlbbGV2ZWxdOworCisgICAgICAgIGlmIChpbWFnZS0+
aXNEaXJ0eSgpKQorICAgICAgICB7CisgICAgICAgICAgICBjb21taXRSZWN0KGxldmVsLCAwLCAw
LCBtSW1hZ2VBcnJheVtsZXZlbF0tPmdldFdpZHRoKCksIG1JbWFnZUFycmF5W2xldmVsXS0+Z2V0
SGVpZ2h0KCkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRleHR1cmUyRDo6Y29udmVy
dFRvUmVuZGVyVGFyZ2V0KCkKK3sKKyAgICByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAq
bmV3VGV4U3RvcmFnZSA9IE5VTEw7CisKKyAgICBpZiAobUltYWdlQXJyYXlbMF0tPmdldFdpZHRo
KCkgIT0gMCAmJiBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCkgIT0gMCkKKyAgICB7CisgICAg
ICAgIEdMc2l6ZWkgd2lkdGggPSBtSW1hZ2VBcnJheVswXS0+Z2V0V2lkdGgoKTsKKyAgICAgICAg
R0xzaXplaSBoZWlnaHQgPSBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCk7CisgICAgICAgIEdM
aW50IGxldmVscyA9IG1UZXhTdG9yYWdlICE9IE5VTEwgPyBtVGV4U3RvcmFnZS0+bGV2ZWxDb3Vu
dCgpIDogY3JlYXRpb25MZXZlbHMod2lkdGgsIGhlaWdodCk7CisgICAgICAgIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCA9IG1JbWFnZUFycmF5WzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpOworCisgICAg
ICAgIG5ld1RleFN0b3JhZ2UgPSBuZXcgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQobVJl
bmRlcmVyLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X0FOR0xFLCB0cnVlLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICBpZiAobVRleFN0b3JhZ2Ug
IT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtUmVuZGVyZXItPmNvcHlUb1Jl
bmRlclRhcmdldChuZXdUZXhTdG9yYWdlLCBtVGV4U3RvcmFnZSkpCisgICAgICAgICAgICB7ICAg
CisgICAgICAgICAgICAgICAgZGVsZXRlIG5ld1RleFN0b3JhZ2U7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIGRlbGV0ZSBtVGV4U3RvcmFnZTsKKyAgICBtVGV4U3RvcmFnZSA9
IG5ld1RleFN0b3JhZ2U7CisKKyAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworfQorCit2b2lkIFRl
eHR1cmUyRDo6Z2VuZXJhdGVNaXBtYXBzKCkKK3sKKyAgICBpZiAoIW1SZW5kZXJlci0+Z2V0Tm9u
UG93ZXIyVGV4dHVyZVN1cHBvcnQoKSkKKyAgICB7CisgICAgICAgIGlmICghaXNQb3cyKG1JbWFn
ZUFycmF5WzBdLT5nZXRXaWR0aCgpKSB8fCAhaXNQb3cyKG1JbWFnZUFycmF5WzBdLT5nZXRIZWln
aHQoKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUHVyZ2UgYXJyYXkgbGV2
ZWxzIDEgdGhyb3VnaCBxIGFuZCByZXNldCB0aGVtIHRvIHJlcHJlc2VudCB0aGUgZ2VuZXJhdGVk
IG1pcG1hcCBsZXZlbHMuCisgICAgdW5zaWduZWQgaW50IHEgPSBsb2cyKHN0ZDo6bWF4KG1JbWFn
ZUFycmF5WzBdLT5nZXRXaWR0aCgpLCBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCkpKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8PSBxOyBpKyspCisgICAgeworICAgICAgICBy
ZWRlZmluZUltYWdlKGksIG1JbWFnZUFycmF5WzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpLAorICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KG1JbWFnZUFycmF5WzBdLT5nZXRXaWR0aCgpID4+
IGksIDEpLAorICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KG1JbWFnZUFycmF5WzBdLT5n
ZXRIZWlnaHQoKSA+PiBpLCAxKSk7CisgICAgfQorCisgICAgaWYgKG1UZXhTdG9yYWdlICYmIG1U
ZXhTdG9yYWdlLT5pc1JlbmRlclRhcmdldCgpKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBtVGV4U3Rv
cmFnZS0+Z2VuZXJhdGVNaXBtYXAoaSk7CisKKyAgICAgICAgICAgIG1JbWFnZUFycmF5W2ldLT5t
YXJrQ2xlYW4oKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8PSBxOyBpKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1SZW5kZXJlci0+Z2VuZXJhdGVNaXBtYXAobUltYWdlQXJyYXlbaV0sIG1JbWFnZUFycmF5
W2kgLSAxXSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1JlbmRlcmJ1ZmZlciAqVGV4dHVyZTJE
OjpnZXRSZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdldCkKK3sKKyAgICBpZiAodGFyZ2V0ICE9IEdM
X1RFWFRVUkVfMkQpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCAoUmVuZGVyYnVmZmVyICopTlVMTCk7CisgICAgfQorCisgICAgaWYgKG1Db2xv
cmJ1ZmZlclByb3h5ID09IE5VTEwpCisgICAgeworICAgICAgICBtQ29sb3JidWZmZXJQcm94eSA9
IG5ldyBSZW5kZXJidWZmZXIobVJlbmRlcmVyLCBpZCgpLCBuZXcgUmVuZGVyYnVmZmVyVGV4dHVy
ZTJEKHRoaXMsIHRhcmdldCkpOworICAgIH0KKworICAgIHJldHVybiBtQ29sb3JidWZmZXJQcm94
eTsKK30KKworcng6OlJlbmRlclRhcmdldCAqVGV4dHVyZTJEOjpnZXRSZW5kZXJUYXJnZXQoR0xl
bnVtIHRhcmdldCkKK3sKKyAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpOworCisg
ICAgLy8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHRleHR1cmUgaXMgY3JlYXRlZAorICAgIGlmIChn
ZXRTdG9yYWdlKHRydWUpID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9CisKKyAgICB1cGRhdGVUZXh0dXJlKCk7CisgICAgCisgICAgLy8gZW5zdXJlIHRoaXMgaXMg
Tk9UIGEgZGVwdGggdGV4dHVyZQorICAgIGlmIChpc0RlcHRoKDApKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIG1UZXhTdG9yYWdlLT5nZXRSZW5kZXJU
YXJnZXQoKTsKK30KKworcng6OlJlbmRlclRhcmdldCAqVGV4dHVyZTJEOjpnZXREZXB0aFN0ZW5j
aWwoR0xlbnVtIHRhcmdldCkKK3sKKyAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQp
OworCisgICAgLy8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHRleHR1cmUgaXMgY3JlYXRlZAorICAg
IGlmIChnZXRTdG9yYWdlKHRydWUpID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICB9CisKKyAgICB1cGRhdGVUZXh0dXJlKCk7CisKKyAgICAvLyBlbnN1cmUgdGhpcyBp
cyBhY3R1YWxseSBhIGRlcHRoIHRleHR1cmUKKyAgICBpZiAoIWlzRGVwdGgoMCkpCisgICAgewor
ICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIG1UZXhTdG9yYWdlLT5nZXRS
ZW5kZXJUYXJnZXQoKTsKK30KKworaW50IFRleHR1cmUyRDo6bGV2ZWxDb3VudCgpCit7CisgICAg
cmV0dXJuIG1UZXhTdG9yYWdlID8gbVRleFN0b3JhZ2UtPmxldmVsQ291bnQoKSA6IDA7Cit9CisK
K3J4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZSAqVGV4dHVyZTJEOjpnZXRTdG9yYWdlKGJvb2wg
cmVuZGVyVGFyZ2V0KQoreworICAgIGlmICghbVRleFN0b3JhZ2UgfHwgKHJlbmRlclRhcmdldCAm
JiAhbVRleFN0b3JhZ2UtPmlzUmVuZGVyVGFyZ2V0KCkpKQorICAgIHsKKyAgICAgICAgaWYgKHJl
bmRlclRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0
KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBjcmVh
dGVUZXh0dXJlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbVRleFN0b3JhZ2U7
Cit9CisKK1RleHR1cmVDdWJlTWFwOjpUZXh0dXJlQ3ViZU1hcChyeDo6UmVuZGVyZXIgKnJlbmRl
cmVyLCBHTHVpbnQgaWQpIDogVGV4dHVyZShyZW5kZXJlciwgaWQpCit7CisgICAgbVRleFN0b3Jh
Z2UgPSBOVUxMOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgaSsrKQorICAgIHsKKyAgICAg
ICAgbUZhY2VQcm94aWVzW2ldID0gTlVMTDsKKyAgICAgICAgbUZhY2VQcm94eVJlZnNbaV0gPSAw
OworCisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRV
UkVfTEVWRUxTOyArK2opCisgICAgICAgIHsKKyAgICAgICAgICAgIG1JbWFnZUFycmF5W2ldW2pd
ID0gcmVuZGVyZXItPmNyZWF0ZUltYWdlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1RleHR1
cmVDdWJlTWFwOjp+VGV4dHVyZUN1YmVNYXAoKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
NjsgaSsrKQorICAgIHsKKyAgICAgICAgbUZhY2VQcm94aWVzW2ldID0gTlVMTDsKKworICAgICAg
ICBmb3IgKGludCBqID0gMDsgaiA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsg
KytqKQorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGUgbUltYWdlQXJyYXlbaV1bal07Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBkZWxldGUgbVRleFN0b3JhZ2U7CisgICAgbVRleFN0b3Jh
Z2UgPSBOVUxMOworfQorCisvLyBXZSBuZWVkIHRvIG1haW50YWluIGEgY291bnQgb2YgcmVmZXJl
bmNlcyB0byByZW5kZXJidWZmZXJzIGFjdGluZyBhcyAKKy8vIHByb3hpZXMgZm9yIHRoaXMgdGV4
dHVyZSwgc28gdGhhdCB0aGUgdGV4dHVyZSBpcyBub3QgZGVsZXRlZCB3aGlsZSAKKy8vIHByb3h5
IHJlZmVyZW5jZXMgc3RpbGwgZXhpc3QuIElmIHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8g
emVybywKKy8vIHdlIHNldCBvdXIgcHJveHkgcG9pbnRlciBOVUxMLCBzbyB0aGF0IGEgbmV3IGF0
dGVtcHQgYXQgcmVmZXJlbmNpbmcKKy8vIHdpbGwgY2F1c2UgcmVjcmVhdGlvbi4KK3ZvaWQgVGV4
dHVyZUN1YmVNYXA6OmFkZFByb3h5UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCit7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2OyBpKyspCisgICAgeworICAgICAgICBpZiAobUZhY2VQ
cm94aWVzW2ldID09IHByb3h5KQorICAgICAgICAgICAgbUZhY2VQcm94eVJlZnNbaV0rKzsKKyAg
ICB9Cit9CisKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OnJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJi
dWZmZXIgKnByb3h5KQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgaSsrKQorICAgIHsK
KyAgICAgICAgaWYgKG1GYWNlUHJveGllc1tpXSA9PSBwcm94eSkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKG1GYWNlUHJveHlSZWZzW2ldID4gMCkKKyAgICAgICAgICAgICAgICBtRmFjZVBy
b3h5UmVmc1tpXS0tOworCisgICAgICAgICAgICBpZiAobUZhY2VQcm94eVJlZnNbaV0gPT0gMCkK
KyAgICAgICAgICAgICAgICBtRmFjZVByb3hpZXNbaV0gPSBOVUxMOworICAgICAgICB9CisgICAg
fQorfQorCitHTGVudW0gVGV4dHVyZUN1YmVNYXA6OmdldFRhcmdldCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIEdMX1RFWFRVUkVfQ1VCRV9NQVA7Cit9CisKK0dMc2l6ZWkgVGV4dHVyZUN1YmVNYXA6
OmdldFdpZHRoKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdAoreworICAgIGlmIChs
ZXZlbCA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykKKyAgICAgICAgcmV0dXJu
IG1JbWFnZUFycmF5W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZlbF0tPmdldFdpZHRoKCk7CisgICAg
ZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKworR0xzaXplaSBUZXh0dXJlQ3ViZU1hcDo6Z2V0
SGVpZ2h0KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdAoreworICAgIGlmIChsZXZl
bCA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykKKyAgICAgICAgcmV0dXJuIG1J
bWFnZUFycmF5W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZlbF0tPmdldEhlaWdodCgpOworICAgIGVs
c2UKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK0dMZW51bSBUZXh0dXJlQ3ViZU1hcDo6Z2V0SW50
ZXJuYWxGb3JtYXQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAgaWYg
KGxldmVsIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQorICAgICAgICByZXR1
cm4gbUltYWdlQXJyYXlbZmFjZUluZGV4KHRhcmdldCldW2xldmVsXS0+Z2V0SW50ZXJuYWxGb3Jt
YXQoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBHTF9OT05FOworfQorCitHTGVudW0gVGV4
dHVyZUN1YmVNYXA6OmdldEFjdHVhbEZvcm1hdChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkg
Y29uc3QKK3sKKyAgICBpZiAobGV2ZWwgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZF
TFMpCisgICAgICAgIHJldHVybiBtSW1hZ2VBcnJheVtmYWNlSW5kZXgodGFyZ2V0KV1bbGV2ZWxd
LT5nZXRBY3R1YWxGb3JtYXQoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBEM0RGTVRfVU5L
Tk9XTjsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VQb3NYKEdMaW50IGxldmVs
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIHNl
dEltYWdlKDAsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdu
bWVudCwgcGl4ZWxzKTsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWdYKEdM
aW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQor
eworICAgIHNldEltYWdlKDEsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVu
cGFja0FsaWdubWVudCwgcGl4ZWxzKTsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1h
Z2VQb3NZKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAq
cGl4ZWxzKQoreworICAgIHNldEltYWdlKDIsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzKTsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1h
cDo6c2V0SW1hZ2VOZWdZKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29u
c3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIHNldEltYWdlKDMsIGxldmVsLCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzKTsKK30KKwordm9pZCBUZXh0
dXJlQ3ViZU1hcDo6c2V0SW1hZ2VQb3NaKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdu
bWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIHNldEltYWdlKDQsIGxldmVsLCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzKTsKK30KKwor
dm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWdaKEdMaW50IGxldmVsLCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVu
cGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIHNldEltYWdlKDUsIGxl
dmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxz
KTsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSBm
YWNlLCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit7CisgICAgLy8g
Y29tcHJlc3NlZCBmb3JtYXRzIGRvbid0IGhhdmUgc2VwYXJhdGUgc2l6ZWQgaW50ZXJuYWwgZm9y
bWF0cy0tIHdlIGNhbiBqdXN0IHVzZSB0aGUgY29tcHJlc3NlZCBmb3JtYXQgZGlyZWN0bHkKKyAg
ICByZWRlZmluZUltYWdlKGZhY2VJbmRleChmYWNlKSwgbGV2ZWwsIGZvcm1hdCwgd2lkdGgsIGhl
aWdodCk7CisKKyAgICBUZXh0dXJlOjpzZXRDb21wcmVzc2VkSW1hZ2UoaW1hZ2VTaXplLCBwaXhl
bHMsIG1JbWFnZUFycmF5W2ZhY2VJbmRleChmYWNlKV1bbGV2ZWxdKTsKK30KKwordm9pZCBUZXh0
dXJlQ3ViZU1hcDo6Y29tbWl0UmVjdChpbnQgZmFjZSwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQoreworICAg
IGlmIChsZXZlbCA8IGxldmVsQ291bnQoKSkKKyAgICB7CisgICAgICAgIHJ4OjpJbWFnZSAqaW1h
Z2UgPSBtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF07CisgICAgICAgIGlmIChpbWFnZS0+dXBkYXRl
U3VyZmFjZShtVGV4U3RvcmFnZSwgZmFjZSwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQpKQorICAgICAgICAgICAgaW1hZ2UtPm1hcmtDbGVhbigpOworICAgIH0KK30KKwor
dm9pZCBUZXh0dXJlQ3ViZU1hcDo6c3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBj
b25zdCB2b2lkICpwaXhlbHMpCit7CisgICAgaWYgKFRleHR1cmU6OnN1YkltYWdlKHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgdW5wYWNrQWxpZ25tZW50LCBw
aXhlbHMsIG1JbWFnZUFycmF5W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZlbF0pKQorICAgIHsKKyAg
ICAgICAgY29tbWl0UmVjdChmYWNlSW5kZXgodGFyZ2V0KSwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c3Vi
SW1hZ2VDb21wcmVzc2VkKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZv
cm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykKK3sKKyAgICBpZiAo
VGV4dHVyZTo6c3ViSW1hZ2VDb21wcmVzc2VkKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBwaXhlbHMsIG1JbWFnZUFycmF5W2ZhY2VJbmRleCh0YXJn
ZXQpXVtsZXZlbF0pKQorICAgIHsKKyAgICAgICAgY29tbWl0UmVjdChmYWNlSW5kZXgodGFyZ2V0
KSwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KK30KKwor
Ly8gVGVzdHMgZm9yIGN1YmUgbWFwIHNhbXBsaW5nIGNvbXBsZXRlbmVzcy4gW09wZW5HTCBFUyAy
LjAuMjRdIHNlY3Rpb24gMy44LjIgcGFnZSA4Ni4KK2Jvb2wgVGV4dHVyZUN1YmVNYXA6OmlzU2Ft
cGxlckNvbXBsZXRlKCkgY29uc3QKK3sKKyAgICBpbnQgc2l6ZSA9IG1JbWFnZUFycmF5WzBdWzBd
LT5nZXRXaWR0aCgpOworCisgICAgYm9vbCBtaXBtYXBwaW5nID0gaXNNaXBtYXBGaWx0ZXJlZCgp
OworICAgIGJvb2wgZmlsdGVyaW5nLCByZW5kZXJhYmxlOworCisgICAgaWYgKChnbDo6RXh0cmFj
dFR5cGUoZ2V0SW50ZXJuYWxGb3JtYXQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAw
KSkgPT0gR0xfRkxPQVQgJiYgIW1SZW5kZXJlci0+Z2V0RmxvYXQzMlRleHR1cmVTdXBwb3J0KCZm
aWx0ZXJpbmcsICZyZW5kZXJhYmxlKSkgfHwKKyAgICAgICAgKGdsOjpFeHRyYWN0VHlwZShnZXRJ
bnRlcm5hbEZvcm1hdChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDApID09IEdMX0hB
TEZfRkxPQVRfT0VTKSAmJiAhbVJlbmRlcmVyLT5nZXRGbG9hdDE2VGV4dHVyZVN1cHBvcnQoJmZp
bHRlcmluZywgJnJlbmRlcmFibGUpKSkKKyAgICB7CisgICAgICAgIGlmIChtU2FtcGxlclN0YXRl
Lm1hZ0ZpbHRlciAhPSBHTF9ORUFSRVNUIHx8CisgICAgICAgICAgICAobVNhbXBsZXJTdGF0ZS5t
aW5GaWx0ZXIgIT0gR0xfTkVBUkVTVCAmJiBtU2FtcGxlclN0YXRlLm1pbkZpbHRlciAhPSBHTF9O
RUFSRVNUX01JUE1BUF9ORUFSRVNUKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFpc1BvdzIoc2l6ZSkgJiYgIW1SZW5k
ZXJlci0+Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQoKSkKKyAgICB7CisgICAgICAgIGlmICht
U2FtcGxlclN0YXRlLndyYXBTICE9IEdMX0NMQU1QX1RPX0VER0UgfHwgbVNhbXBsZXJTdGF0ZS53
cmFwVCAhPSBHTF9DTEFNUF9UT19FREdFIHx8IG1pcG1hcHBpbmcpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbWlwbWFw
cGluZykKKyAgICB7CisgICAgICAgIGlmICghaXNDdWJlQ29tcGxldGUoKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIGlmICghaXNNaXBtYXBDdWJlQ29tcGxldGUoKSkgICAvLyBBbHNvIHRlc3Rz
IGZvciBpc0N1YmVDb21wbGV0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisvLyBUZXN0cyBm
b3IgY3ViZSB0ZXh0dXJlIGNvbXBsZXRlbmVzcy4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24g
My43LjEwIHBhZ2UgODEuCitib29sIFRleHR1cmVDdWJlTWFwOjppc0N1YmVDb21wbGV0ZSgpIGNv
bnN0Cit7CisgICAgaWYgKG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgpIDw9IDAgfHwgbUlt
YWdlQXJyYXlbMF1bMF0tPmdldEhlaWdodCgpICE9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0
aCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZvciAodW5z
aWduZWQgaW50IGZhY2UgPSAxOyBmYWNlIDwgNjsgZmFjZSsrKQorICAgIHsKKyAgICAgICAgaWYg
KG1JbWFnZUFycmF5W2ZhY2VdWzBdLT5nZXRXaWR0aCgpICE9IG1JbWFnZUFycmF5WzBdWzBdLT5n
ZXRXaWR0aCgpIHx8CisgICAgICAgICAgICBtSW1hZ2VBcnJheVtmYWNlXVswXS0+Z2V0V2lkdGgo
KSAhPSBtSW1hZ2VBcnJheVswXVswXS0+Z2V0SGVpZ2h0KCkgfHwKKyAgICAgICAgICAgIG1JbWFn
ZUFycmF5W2ZhY2VdWzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpICE9IG1JbWFnZUFycmF5WzBdWzBd
LT5nZXRJbnRlcm5hbEZvcm1hdCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBUZXh0
dXJlQ3ViZU1hcDo6aXNNaXBtYXBDdWJlQ29tcGxldGUoKSBjb25zdAoreworICAgIGlmIChpc0lt
bXV0YWJsZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYg
KCFpc0N1YmVDb21wbGV0ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIEdMc2l6ZWkgc2l6ZSA9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgpOworCisg
ICAgaW50IHEgPSBsb2cyKHNpemUpOworCisgICAgZm9yIChpbnQgZmFjZSA9IDA7IGZhY2UgPCA2
OyBmYWNlKyspCisgICAgeworICAgICAgICBmb3IgKGludCBsZXZlbCA9IDE7IGxldmVsIDw9IHE7
IGxldmVsKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtSW1hZ2VBcnJheVtmYWNlXVts
ZXZlbF0tPmdldEludGVybmFsRm9ybWF0KCkgIT0gbUltYWdlQXJyYXlbMF1bMF0tPmdldEludGVy
bmFsRm9ybWF0KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobUltYWdlQXJyYXlbZmFjZV1bbGV2
ZWxdLT5nZXRXaWR0aCgpICE9IHN0ZDo6bWF4KDEsIHNpemUgPj4gbGV2ZWwpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFRleHR1cmVDdWJlTWFw
Ojppc0NvbXByZXNzZWQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAg
cmV0dXJuIElzQ29tcHJlc3NlZChnZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSk7Cit9
CisKKy8vIENvbnN0cnVjdHMgYSBuYXRpdmUgdGV4dHVyZSByZXNvdXJjZSBmcm9tIHRoZSB0ZXh0
dXJlIGltYWdlcywgb3IgcmV0dXJucyBhbiBleGlzdGluZyBvbmUKK3ZvaWQgVGV4dHVyZUN1YmVN
YXA6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIEdMc2l6ZWkgc2l6ZSA9IG1JbWFnZUFycmF5WzBd
WzBdLT5nZXRXaWR0aCgpOworCisgICAgaWYgKCEoc2l6ZSA+IDApKQorICAgICAgICByZXR1cm47
IC8vIGRvIG5vdCBhdHRlbXB0IHRvIGNyZWF0ZSBuYXRpdmUgdGV4dHVyZXMgZm9yIG5vbmV4aXN0
YW50IGRhdGEKKworICAgIEdMaW50IGxldmVscyA9IGNyZWF0aW9uTGV2ZWxzKHNpemUpOworICAg
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRJbnRlcm5hbEZv
cm1hdCgpOworCisgICAgZGVsZXRlIG1UZXhTdG9yYWdlOworICAgIG1UZXhTdG9yYWdlID0gbmV3
IHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUobVJlbmRlcmVyLCBsZXZlbHMsIGludGVy
bmFsZm9ybWF0LCBtVXNhZ2UsIGZhbHNlLCBzaXplKTsKKworICAgIGlmIChtVGV4U3RvcmFnZS0+
aXNNYW5hZ2VkKCkpCisgICAgeworICAgICAgICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgpOwor
CisgICAgICAgIGZvciAoaW50IGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQorICAgICAgICB7
CisgICAgICAgICAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZhY2VdW2xldmVs
XS0+c2V0TWFuYWdlZFN1cmZhY2UobVRleFN0b3JhZ2UsIGZhY2UsIGxldmVsKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7Cit9CisK
K3ZvaWQgVGV4dHVyZUN1YmVNYXA6OnVwZGF0ZVRleHR1cmUoKQoreworICAgIGJvb2wgbWlwbWFw
cGluZyA9IGlzTWlwbWFwRmlsdGVyZWQoKSAmJiBpc01pcG1hcEN1YmVDb21wbGV0ZSgpOworCisg
ICAgZm9yIChpbnQgZmFjZSA9IDA7IGZhY2UgPCA2OyBmYWNlKyspCisgICAgeworICAgICAgICBp
bnQgbGV2ZWxzID0gKG1pcG1hcHBpbmcgPyBsZXZlbENvdW50KCkgOiAxKTsKKworICAgICAgICBm
b3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICByeDo6SW1hZ2UgKmltYWdlID0gbUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdOwor
CisgICAgICAgICAgICBpZiAoaW1hZ2UtPmlzRGlydHkoKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb21taXRSZWN0KGZhY2UsIGxldmVsLCAwLCAwLCBpbWFnZS0+Z2V0V2lkdGgo
KSwgaW1hZ2UtPmdldEhlaWdodCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6Y29udmVydFRvUmVuZGVyVGFyZ2V0KCkKK3sKKyAg
ICByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpuZXdUZXhTdG9yYWdlID0gTlVMTDsK
KworICAgIGlmIChtSW1hZ2VBcnJheVswXVswXS0+Z2V0V2lkdGgoKSAhPSAwKQorICAgIHsKKyAg
ICAgICAgR0xzaXplaSBzaXplID0gbUltYWdlQXJyYXlbMF1bMF0tPmdldFdpZHRoKCk7CisgICAg
ICAgIEdMaW50IGxldmVscyA9IG1UZXhTdG9yYWdlICE9IE5VTEwgPyBtVGV4U3RvcmFnZS0+bGV2
ZWxDb3VudCgpIDogY3JlYXRpb25MZXZlbHMoc2l6ZSk7CisgICAgICAgIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCA9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpOworCisgICAg
ICAgIG5ld1RleFN0b3JhZ2UgPSBuZXcgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSht
UmVuZGVyZXIsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfQU5HTEUsIHRydWUsIHNpemUpOworCisgICAgICAgIGlmIChtVGV4U3RvcmFnZSAhPSBOVUxM
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1SZW5kZXJlci0+Y29weVRvUmVuZGVyVGFy
Z2V0KG5ld1RleFN0b3JhZ2UsIG1UZXhTdG9yYWdlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBkZWxldGUgbmV3VGV4U3RvcmFnZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgZGVsZXRlIG1UZXhTdG9yYWdlOworICAgIG1UZXhTdG9yYWdlID0gbmV3VGV4U3Rv
cmFnZTsKKworICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7Cit9CisKK3ZvaWQgVGV4dHVyZUN1YmVN
YXA6OnNldEltYWdlKGludCBmYWNlSW5kZXgsIEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0Fs
aWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIEdMaW50IGludGVybmFsZm9ybWF0
ID0gQ29udmVydFNpemVkSW50ZXJuYWxGb3JtYXQoZm9ybWF0LCB0eXBlKTsKKyAgICByZWRlZmlu
ZUltYWdlKGZhY2VJbmRleCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
KworICAgIFRleHR1cmU6OnNldEltYWdlKHVucGFja0FsaWdubWVudCwgcGl4ZWxzLCBtSW1hZ2VB
cnJheVtmYWNlSW5kZXhdW2xldmVsXSk7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0dXJlQ3ViZU1h
cDo6ZmFjZUluZGV4KEdMZW51bSBmYWNlKQoreworICAgIE1FVEFfQVNTRVJUKEdMX1RFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWCAtIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCA9PSAx
KTsKKyAgICBNRVRBX0FTU0VSVChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1kgLSBHTF9U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggPT0gMik7CisgICAgTUVUQV9BU1NFUlQoR0xfVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZIC0gR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Y
ID09IDMpOworICAgIE1FVEFfQVNTRVJUKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiAt
IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCA9PSA0KTsKKyAgICBNRVRBX0FTU0VSVChH
TF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ogLSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1ggPT0gNSk7CisKKyAgICByZXR1cm4gZmFjZSAtIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWDsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6cmVkZWZpbmVJbWFnZShpbnQgZmFj
ZSwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCkKK3sKKyAgICAvLyBJZiB0aGVyZSBjdXJyZW50bHkgaXMgYSBjb3JyZXNwb25k
aW5nIHN0b3JhZ2UgdGV4dHVyZSBpbWFnZSwgaXQgaGFzIHRoZXNlIHBhcmFtZXRlcnMKKyAgICBj
b25zdCBpbnQgc3RvcmFnZVdpZHRoID0gc3RkOjptYXgoMSwgbUltYWdlQXJyYXlbMF1bMF0tPmdl
dFdpZHRoKCkgPj4gbGV2ZWwpOworICAgIGNvbnN0IGludCBzdG9yYWdlSGVpZ2h0ID0gc3RkOjpt
YXgoMSwgbUltYWdlQXJyYXlbMF1bMF0tPmdldEhlaWdodCgpID4+IGxldmVsKTsKKyAgICBjb25z
dCBpbnQgc3RvcmFnZUZvcm1hdCA9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRJbnRlcm5hbEZvcm1h
dCgpOworCisgICAgbUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdLT5yZWRlZmluZShtUmVuZGVyZXIs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBmYWxzZSk7CisKKyAgICBpZiAobVRleFN0
b3JhZ2UpCisgICAgeworICAgICAgICBjb25zdCBpbnQgc3RvcmFnZUxldmVscyA9IG1UZXhTdG9y
YWdlLT5sZXZlbENvdW50KCk7CisgICAgICAgIAorICAgICAgICBpZiAoKGxldmVsID49IHN0b3Jh
Z2VMZXZlbHMgJiYgc3RvcmFnZUxldmVscyAhPSAwKSB8fAorICAgICAgICAgICAgd2lkdGggIT0g
c3RvcmFnZVdpZHRoIHx8CisgICAgICAgICAgICBoZWlnaHQgIT0gc3RvcmFnZUhlaWdodCB8fAor
ICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQgIT0gc3RvcmFnZUZvcm1hdCkgICAvLyBEaXNjYXJk
IG1pc21hdGNoZWQgc3RvcmFnZQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGYgPSAwOyBmIDwgNjsgZisrKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbZl1baV0tPm1hcmtE
aXJ0eSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZGVsZXRlIG1UZXhTdG9yYWdlOworICAgICAgICAgICAgbVRleFN0b3JhZ2UgPSBOVUxMOworCisg
ICAgICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIFRleHR1cmVDdWJlTWFwOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMZW51bSBmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKQoreworICAgIHVuc2lnbmVkIGludCBmYWNlaW5k
ZXggPSBmYWNlSW5kZXgodGFyZ2V0KTsKKyAgICBHTGludCBpbnRlcm5hbGZvcm1hdCA9IGdsOjpD
b252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUpOworICAg
IHJlZGVmaW5lSW1hZ2UoZmFjZWluZGV4LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpOworCisgICAgaWYgKCFtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS0+aXNSZW5k
ZXJhYmxlRm9ybWF0KCkpCisgICAgeworICAgICAgICBtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xl
dmVsXS0+Y29weSgwLCAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2UpOworICAgICAgICBt
RGlydHlJbWFnZXMgPSB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAo
IW1UZXhTdG9yYWdlIHx8ICFtVGV4U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIG1JbWFnZUFycmF5W2ZhY2VpbmRleF1bbGV2ZWxdLT5tYXJrQ2xlYW4oKTsK
KworICAgICAgICBBU1NFUlQod2lkdGggPT0gaGVpZ2h0KTsKKworICAgICAgICBpZiAod2lkdGgg
PiAwICYmIGxldmVsIDwgbGV2ZWxDb3VudCgpKQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6
UmVjdGFuZ2xlIHNvdXJjZVJlY3Q7CisgICAgICAgICAgICBzb3VyY2VSZWN0LnggPSB4OworICAg
ICAgICAgICAgc291cmNlUmVjdC53aWR0aCA9IHdpZHRoOworICAgICAgICAgICAgc291cmNlUmVj
dC55ID0geTsKKyAgICAgICAgICAgIHNvdXJjZVJlY3QuaGVpZ2h0ID0gaGVpZ2h0OworCisgICAg
ICAgICAgICBtUmVuZGVyZXItPmNvcHlJbWFnZShzb3VyY2UsIHNvdXJjZVJlY3QsIGZvcm1hdCwg
MCwgMCwgbVRleFN0b3JhZ2UsIHRhcmdldCwgbGV2ZWwpOworICAgICAgICB9CisgICAgfQorfQor
Cit2b2lkIFRleHR1cmVDdWJlTWFwOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKQoreworICAg
IEdMc2l6ZWkgc2l6ZSA9IG1JbWFnZUFycmF5W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZlbF0tPmdl
dFdpZHRoKCk7CisKKyAgICBpZiAoeG9mZnNldCArIHdpZHRoID4gc2l6ZSB8fCB5b2Zmc2V0ICsg
aGVpZ2h0ID4gc2l6ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisgICAgfQorCisgICAgdW5zaWduZWQgaW50IGZhY2VpbmRleCA9IGZhY2VJbmRl
eCh0YXJnZXQpOworCisgICAgaWYgKCFtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS0+aXNS
ZW5kZXJhYmxlRm9ybWF0KCkgfHwgKCFtVGV4U3RvcmFnZSAmJiAhaXNTYW1wbGVyQ29tcGxldGUo
KSkpCisgICAgeworICAgICAgICBtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS0+Y29weSgw
LCAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2UpOworICAgICAgICBtRGlydHlJbWFnZXMg
PSB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoIW1UZXhTdG9yYWdl
IHx8ICFtVGV4U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHVwZGF0ZVRleHR1cmUoKTsKKworICAgICAgICBpZiAobGV2ZWwgPCBsZXZlbENvdW50KCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpSZWN0YW5nbGUgc291cmNlUmVjdDsKKyAgICAgICAg
ICAgIHNvdXJjZVJlY3QueCA9IHg7CisgICAgICAgICAgICBzb3VyY2VSZWN0LndpZHRoID0gd2lk
dGg7CisgICAgICAgICAgICBzb3VyY2VSZWN0LnkgPSB5OworICAgICAgICAgICAgc291cmNlUmVj
dC5oZWlnaHQgPSBoZWlnaHQ7CisKKyAgICAgICAgICAgIG1SZW5kZXJlci0+Y29weUltYWdlKHNv
dXJjZSwgc291cmNlUmVjdCwgZ2w6OkV4dHJhY3RGb3JtYXQobUltYWdlQXJyYXlbMF1bMF0tPmdl
dEludGVybmFsRm9ybWF0KCkpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhv
ZmZzZXQsIHlvZmZzZXQsIG1UZXhTdG9yYWdlLCB0YXJnZXQsIGxldmVsKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c3RvcmFnZShHTHNpemVpIGxldmVscywg
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHNpemUpCit7CisgICAgZGVsZXRlIG1UZXhT
dG9yYWdlOworICAgIG1UZXhTdG9yYWdlID0gbmV3IHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFj
ZUN1YmUobVJlbmRlcmVyLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCBtVXNhZ2UsIGZhbHNlLCBz
aXplKTsKKyAgICBtSW1tdXRhYmxlID0gdHJ1ZTsKKworICAgIGZvciAoaW50IGxldmVsID0gMDsg
bGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspCisgICAgeworICAgICAgICBmb3IgKGludCBmYWNlID0g
MDsgZmFjZSA8IDY7IGZhY2UrKykKKyAgICAgICAgeworICAgICAgICAgICAgbUltYWdlQXJyYXlb
ZmFjZV1bbGV2ZWxdLT5yZWRlZmluZShtUmVuZGVyZXIsIGludGVybmFsZm9ybWF0LCBzaXplLCBz
aXplLCB0cnVlKTsKKyAgICAgICAgICAgIHNpemUgPSBzdGQ6Om1heCgxLCBzaXplID4+IDEpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChpbnQgbGV2ZWwgPSBsZXZlbHM7IGxldmVsIDwg
SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBsZXZlbCsrKQorICAgIHsKKyAgICAg
ICAgZm9yIChpbnQgZmFjZSA9IDA7IGZhY2UgPCA2OyBmYWNlKyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1JbWFnZUFycmF5W2ZhY2VdW2xldmVsXS0+cmVkZWZpbmUobVJlbmRlcmVyLCBHTF9O
T05FLCAwLCAwLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtVGV4U3RvcmFn
ZS0+aXNNYW5hZ2VkKCkpCisgICAgeworICAgICAgICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgp
OworCisgICAgICAgIGZvciAoaW50IGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQorICAgICAg
ICB7CisgICAgICAgICAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZl
bCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZhY2VdW2xl
dmVsXS0+c2V0TWFuYWdlZFN1cmZhY2UobVRleFN0b3JhZ2UsIGZhY2UsIGxldmVsKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6Z2Vu
ZXJhdGVNaXBtYXBzKCkKK3sKKyAgICBpZiAoIWlzQ3ViZUNvbXBsZXRlKCkpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAg
ICBpZiAoIW1SZW5kZXJlci0+Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQoKSkKKyAgICB7Cisg
ICAgICAgIGlmICghaXNQb3cyKG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgpKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBQdXJnZSBhcnJheSBsZXZlbHMgMSB0aHJvdWdo
IHEgYW5kIHJlc2V0IHRoZW0gdG8gcmVwcmVzZW50IHRoZSBnZW5lcmF0ZWQgbWlwbWFwIGxldmVs
cy4KKyAgICB1bnNpZ25lZCBpbnQgcSA9IGxvZzIobUltYWdlQXJyYXlbMF1bMF0tPmdldFdpZHRo
KCkpOworICAgIGZvciAodW5zaWduZWQgaW50IGYgPSAwOyBmIDwgNjsgZisrKQorICAgIHsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZWRlZmluZUltYWdlKGYsIGksIG1JbWFnZUFycmF5W2ZdWzBdLT5nZXRJbnRl
cm5hbEZvcm1hdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1heChtSW1hZ2VB
cnJheVtmXVswXS0+Z2V0V2lkdGgoKSA+PiBpLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptYXgobUltYWdlQXJyYXlbZl1bMF0tPmdldFdpZHRoKCkgPj4gaSwgMSkpOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKG1UZXhTdG9yYWdlICYmIG1UZXhTdG9yYWdlLT5pc1Jl
bmRlclRhcmdldCgpKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZiA9IDA7IGYg
PCA2OyBmKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAx
OyBpIDw9IHE7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtVGV4U3RvcmFn
ZS0+Z2VuZXJhdGVNaXBtYXAoZiwgaSk7CisKKyAgICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtm
XVtpXS0+bWFya0NsZWFuKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZiA9IDA7IGYgPCA2OyBmKysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDw9IHE7
IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtUmVuZGVyZXItPmdlbmVyYXRl
TWlwbWFwKG1JbWFnZUFycmF5W2ZdW2ldLCBtSW1hZ2VBcnJheVtmXVtpIC0gMV0pOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitSZW5kZXJidWZmZXIgKlRleHR1cmVDdWJl
TWFwOjpnZXRSZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdldCkKK3sKKyAgICBpZiAoIUlzQ3ViZW1h
cFRleHR1cmVUYXJnZXQodGFyZ2V0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sIChSZW5kZXJidWZmZXIgKilOVUxMKTsKKyAgICB9CisKKyAg
ICB1bnNpZ25lZCBpbnQgZmFjZSA9IGZhY2VJbmRleCh0YXJnZXQpOworCisgICAgaWYgKG1GYWNl
UHJveGllc1tmYWNlXSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgbUZhY2VQcm94aWVzW2ZhY2Vd
ID0gbmV3IFJlbmRlcmJ1ZmZlcihtUmVuZGVyZXIsIGlkKCksIG5ldyBSZW5kZXJidWZmZXJUZXh0
dXJlQ3ViZU1hcCh0aGlzLCB0YXJnZXQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbUZhY2VQcm94
aWVzW2ZhY2VdOworfQorCityeDo6UmVuZGVyVGFyZ2V0ICpUZXh0dXJlQ3ViZU1hcDo6Z2V0UmVu
ZGVyVGFyZ2V0KEdMZW51bSB0YXJnZXQpCit7CisgICAgQVNTRVJUKElzQ3ViZW1hcFRleHR1cmVU
YXJnZXQodGFyZ2V0KSk7CisKKyAgICAvLyBlbnN1cmUgdGhlIHVuZGVybHlpbmcgdGV4dHVyZSBp
cyBjcmVhdGVkCisgICAgaWYgKGdldFN0b3JhZ2UodHJ1ZSkgPT0gTlVMTCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHVwZGF0ZVRleHR1cmUoKTsKKyAgICAKKyAg
ICByZXR1cm4gbVRleFN0b3JhZ2UtPmdldFJlbmRlclRhcmdldCh0YXJnZXQpOworfQorCitpbnQg
VGV4dHVyZUN1YmVNYXA6OmxldmVsQ291bnQoKQoreworICAgIHJldHVybiBtVGV4U3RvcmFnZSA/
IG1UZXhTdG9yYWdlLT5sZXZlbENvdW50KCkgLSBnZXRMb2RPZmZzZXQoKSA6IDA7Cit9CisKK3J4
OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZSAqVGV4dHVyZUN1YmVNYXA6OmdldFN0b3JhZ2UoYm9v
bCByZW5kZXJUYXJnZXQpCit7CisgICAgaWYgKCFtVGV4U3RvcmFnZSB8fCAocmVuZGVyVGFyZ2V0
ICYmICFtVGV4U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQoKSkpCisgICAgeworICAgICAgICBpZiAo
cmVuZGVyVGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgICBjb252ZXJ0VG9SZW5kZXJUYXJn
ZXQoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGNy
ZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtVGV4U3RvcmFn
ZTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9U
ZXh0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9UZXh0dXJlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL1RleHR1cmUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNzUgQEAKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIFRleHR1cmUuaDogRGVmaW5lcyB0aGUgYWJzdHJhY3QgZ2w6
OlRleHR1cmUgY2xhc3MgYW5kIGl0cyBjb25jcmV0ZSBkZXJpdmVkCisvLyBjbGFzc2VzIFRleHR1
cmUyRCBhbmQgVGV4dHVyZUN1YmVNYXAuIEltcGxlbWVudHMgR0wgdGV4dHVyZSBvYmplY3RzIGFu
ZAorLy8gcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAz
LjcgcGFnZSA2My4KKworI2lmbmRlZiBMSUJHTEVTVjJfVEVYVFVSRV9IXworI2RlZmluZSBMSUJH
TEVTVjJfVEVYVFVSRV9IXworCisjaW5jbHVkZSA8dmVjdG9yPgorCisjZGVmaW5lIEdMX0FQSUNB
TEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgor
I2luY2x1ZGUgImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9h
bmdsZXR5cGVzLmgiCisKK25hbWVzcGFjZSBlZ2wKK3sKK2NsYXNzIFN1cmZhY2U7Cit9CisKK25h
bWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVy
ZmFjZTsKK2NsYXNzIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ7CitjbGFzcyBUZXh0dXJlU3Rv
cmFnZUludGVyZmFjZUN1YmU7CitjbGFzcyBSZW5kZXJUYXJnZXQ7CitjbGFzcyBJbWFnZTsKK30K
KworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBGcmFtZWJ1ZmZlcjsKK2NsYXNzIFJlbmRlcmJ1ZmZl
cjsKKworZW51bQoreworICAgIC8vIFRoZXNlIGFyZSB0aGUgbWF4aW11bXMgdGhlIGltcGxlbWVu
dGF0aW9uIGNhbiBzdXBwb3J0CisgICAgLy8gVGhlIGFjdHVhbCBHTCBjYXBzIGFyZSBsaW1pdGVk
IGJ5IHRoZSBkZXZpY2UgY2FwcworICAgIC8vIGFuZCBzaG91bGQgYmUgcXVlcmllZCBmcm9tIHRo
ZSBDb250ZXh0CisgICAgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfU0laRSA9IDE2Mzg0LAor
ICAgIElNUExFTUVOVEFUSU9OX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUgPSAxNjM4NCwKKwor
ICAgIElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUyA9IDE1ICAgLy8gMStsb2cyIG9m
IE1BWF9URVhUVVJFX1NJWkUKK307CisKK2NsYXNzIFRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRP
YmplY3QKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmUocng6OlJlbmRlcmVyICpyZW5kZXJlciwg
R0x1aW50IGlkKTsKKworICAgIHZpcnR1YWwgflRleHR1cmUoKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBhZGRQcm94eVJlZihjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KSA9IDA7CisKKyAg
ICB2aXJ0dWFsIEdMZW51bSBnZXRUYXJnZXQoKSBjb25zdCA9IDA7CisKKyAgICBib29sIHNldE1p
bkZpbHRlcihHTGVudW0gZmlsdGVyKTsKKyAgICBib29sIHNldE1hZ0ZpbHRlcihHTGVudW0gZmls
dGVyKTsKKyAgICBib29sIHNldFdyYXBTKEdMZW51bSB3cmFwKTsKKyAgICBib29sIHNldFdyYXBU
KEdMZW51bSB3cmFwKTsKKyAgICBib29sIHNldE1heEFuaXNvdHJvcHkoZmxvYXQgdGV4dHVyZU1h
eEFuaXNvdHJvcHksIGZsb2F0IGNvbnRleHRNYXhBbmlzb3Ryb3B5KTsKKyAgICBib29sIHNldFVz
YWdlKEdMZW51bSB1c2FnZSk7CisKKyAgICBHTGVudW0gZ2V0TWluRmlsdGVyKCkgY29uc3Q7Cisg
ICAgR0xlbnVtIGdldE1hZ0ZpbHRlcigpIGNvbnN0OworICAgIEdMZW51bSBnZXRXcmFwUygpIGNv
bnN0OworICAgIEdMZW51bSBnZXRXcmFwVCgpIGNvbnN0OworICAgIGZsb2F0IGdldE1heEFuaXNv
dHJvcHkoKSBjb25zdDsKKyAgICBpbnQgZ2V0TG9kT2Zmc2V0KCk7CisgICAgdm9pZCBnZXRTYW1w
bGVyU3RhdGUoU2FtcGxlclN0YXRlICpzYW1wbGVyKTsKKyAgICBHTGVudW0gZ2V0VXNhZ2UoKSBj
b25zdDsKKyAgICBib29sIGlzTWlwbWFwRmlsdGVyZWQoKSBjb25zdDsKKworICAgIHZpcnR1YWwg
Ym9vbCBpc1NhbXBsZXJDb21wbGV0ZSgpIGNvbnN0ID0gMDsKKworICAgIHJ4OjpUZXh0dXJlU3Rv
cmFnZUludGVyZmFjZSAqZ2V0TmF0aXZlVGV4dHVyZSgpOworICAgIHZpcnR1YWwgUmVuZGVyYnVm
ZmVyICpnZXRSZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdldCkgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIGdlbmVyYXRlTWlwbWFwcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVN1YkltYWdl
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0
LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgRnJhbWVi
dWZmZXIgKnNvdXJjZSkgPSAwOworCisgICAgYm9vbCBoYXNEaXJ0eVBhcmFtZXRlcnMoKSBjb25z
dDsKKyAgICBib29sIGhhc0RpcnR5SW1hZ2VzKCkgY29uc3Q7CisgICAgdm9pZCByZXNldERpcnR5
KCk7CisgICAgdW5zaWduZWQgaW50IGdldFRleHR1cmVTZXJpYWwoKTsKKyAgICB1bnNpZ25lZCBp
bnQgZ2V0UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpOworCisgICAgYm9vbCBpc0lt
bXV0YWJsZSgpIGNvbnN0OworCisgICAgc3RhdGljIGNvbnN0IEdMdWludCBJTkNPTVBMRVRFX1RF
WFRVUkVfSUQgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KC0xKTsgICAvLyBFdmVyeSB0ZXh0dXJlIHRh
a2VzIGFuIGlkIGF0IGNyZWF0aW9uIHRpbWUuIFRoZSB2YWx1ZSBpcyBhcmJpdHJhcnkgYmVjYXVz
ZSBpdCBpcyBuZXZlciByZWdpc3RlcmVkIHdpdGggdGhlIHJlc291cmNlIG1hbmFnZXIuCisKKyAg
cHJvdGVjdGVkOgorICAgIHZvaWQgc2V0SW1hZ2UoR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25z
dCB2b2lkICpwaXhlbHMsIHJ4OjpJbWFnZSAqaW1hZ2UpOworICAgIGJvb2wgc3ViSW1hZ2UoR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0
IHZvaWQgKnBpeGVscywgcng6OkltYWdlICppbWFnZSk7CisgICAgdm9pZCBzZXRDb21wcmVzc2Vk
SW1hZ2UoR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscywgcng6OkltYWdlICpp
bWFnZSk7CisgICAgYm9vbCBzdWJJbWFnZUNvbXByZXNzZWQoR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdM
c2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMsIHJ4OjpJbWFnZSAqaW1hZ2UpOwor
CisgICAgR0xpbnQgY3JlYXRpb25MZXZlbHMoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
IGNvbnN0OworICAgIEdMaW50IGNyZWF0aW9uTGV2ZWxzKEdMc2l6ZWkgc2l6ZSkgY29uc3Q7CisK
KyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlVGV4dHVyZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29udmVydFRvUmVuZGVyVGFy
Z2V0KCkgPSAwOworICAgIHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0
KEdMZW51bSB0YXJnZXQpID0gMDsKKworICAgIHZpcnR1YWwgaW50IGxldmVsQ291bnQoKSA9IDA7
CisKKyAgICByeDo6UmVuZGVyZXIgKm1SZW5kZXJlcjsKKworICAgIFNhbXBsZXJTdGF0ZSBtU2Ft
cGxlclN0YXRlOworICAgIEdMZW51bSBtVXNhZ2U7CisKKyAgICBib29sIG1EaXJ0eUltYWdlczsK
KworICAgIGJvb2wgbUltbXV0YWJsZTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihUZXh0dXJlKTsKKworICAgIHZpcnR1YWwgcng6OlRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlICpnZXRTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KSA9IDA7Cit9OworCitjbGFzcyBU
ZXh0dXJlMkQgOiBwdWJsaWMgVGV4dHVyZQoreworICBwdWJsaWM6CisgICAgVGV4dHVyZTJEKHJ4
OjpSZW5kZXJlciAqcmVuZGVyZXIsIEdMdWludCBpZCk7CisKKyAgICB+VGV4dHVyZTJEKCk7CisK
KyAgICB2b2lkIGFkZFByb3h5UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpOworICAgIHZv
aWQgcmVsZWFzZVByb3h5KGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpOworCisgICAgdmlydHVh
bCBHTGVudW0gZ2V0VGFyZ2V0KCkgY29uc3Q7CisKKyAgICBHTHNpemVpIGdldFdpZHRoKEdMaW50
IGxldmVsKSBjb25zdDsKKyAgICBHTHNpemVpIGdldEhlaWdodChHTGludCBsZXZlbCkgY29uc3Q7
CisgICAgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBH
TGVudW0gZ2V0QWN0dWFsRm9ybWF0KEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBib29sIGlzQ29t
cHJlc3NlZChHTGludCBsZXZlbCkgY29uc3Q7CisgICAgYm9vbCBpc0RlcHRoKEdMaW50IGxldmVs
KSBjb25zdDsKKworICAgIHZvaWQgc2V0SW1hZ2UoR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNr
QWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOworICAgIHZvaWQgc2V0Q29tcHJlc3NlZElt
YWdlKEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscyk7CisgICAgdm9pZCBz
dWJJbWFnZShHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGlu
dCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7CisgICAgdm9pZCBzdWJJbWFn
ZUNvbXByZXNzZWQoR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdl
U2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKKyAgICB2b2lkIGNvcHlJbWFnZShHTGludCBsZXZl
bCwgR0xlbnVtIGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEZyYW1lYnVmZmVyICpzb3VyY2UpOworICAgIHZpcnR1YWwgdm9pZCBjb3B5U3Vi
SW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBG
cmFtZWJ1ZmZlciAqc291cmNlKTsKKyAgICB2b2lkIHN0b3JhZ2UoR0xzaXplaSBsZXZlbHMsIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworCisg
ICAgdmlydHVhbCBib29sIGlzU2FtcGxlckNvbXBsZXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOworICAgIHZpcnR1YWwgdm9p
ZCByZWxlYXNlVGV4SW1hZ2UoKTsKKworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcHMo
KTsKKworICAgIHZpcnR1YWwgUmVuZGVyYnVmZmVyICpnZXRSZW5kZXJidWZmZXIoR0xlbnVtIHRh
cmdldCk7CisKKyAgcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJidWZmZXJUZXh0
dXJlMkQ7CisgICAgdmlydHVhbCByeDo6UmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoR0xl
bnVtIHRhcmdldCk7CisgICAgdmlydHVhbCByeDo6UmVuZGVyVGFyZ2V0ICpnZXREZXB0aFN0ZW5j
aWwoR0xlbnVtIHRhcmdldCk7CisgICAgdmlydHVhbCBpbnQgbGV2ZWxDb3VudCgpOworCisgIHBy
aXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmUyRCk7CisKKyAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0
dXJlKCk7CisgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb1JlbmRlclRhcmdldCgpOworICAgIHZp
cnR1YWwgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlICpnZXRTdG9yYWdlKGJvb2wgcmVuZGVy
VGFyZ2V0KTsKKworICAgIGJvb2wgaXNNaXBtYXBDb21wbGV0ZSgpIGNvbnN0OworCisgICAgdm9p
ZCByZWRlZmluZUltYWdlKEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworICAgIHZvaWQgY29tbWl0UmVjdChHTGludCBsZXZl
bCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQpOworCisgICAgcng6OkltYWdlICptSW1hZ2VBcnJheVtJTVBMRU1FTlRBVElPTl9NQVhf
VEVYVFVSRV9MRVZFTFNdOworCisgICAgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKm1U
ZXhTdG9yYWdlOworICAgIGVnbDo6U3VyZmFjZSAqbVN1cmZhY2U7CisKKyAgICAvLyBBIHNwZWNp
ZmljIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBpcyBrZXB0IGZvciBjb2xvcmJ1ZmZlciBwcm94
eSByZWZlcmVuY2VzLAorICAgIC8vIGJlY2F1c2UsIGFzIHRoZSByZW5kZXJidWZmZXIgYWN0aW5n
IGFzIHByb3h5IHdpbGwgbWFpbnRhaW4gYSBiaW5kaW5nIHBvaW50ZXIKKyAgICAvLyBiYWNrIHRv
IHRoaXMgdGV4dHVyZSwgdGhlcmUgd291bGQgYmUgYSBjaXJjdWxhciByZWZlcmVuY2UgaWYgd2Ug
dXNlZCBhIGJpbmRpbmcKKyAgICAvLyBwb2ludGVyIGhlcmUuIFRoaXMgcmVmZXJlbmNlIGNvdW50
IHdpbGwgY2F1c2UgdGhlIHBvaW50ZXIgdG8gYmUgc2V0IHRvIE5VTEwgaWYKKyAgICAvLyB0aGUg
Y291bnQgZHJvcHMgdG8gemVybywgYnV0IHdpbGwgbm90IGNhdXNlIGRlbGV0aW9uIG9mIHRoZSBS
ZW5kZXJidWZmZXIuCisgICAgUmVuZGVyYnVmZmVyICptQ29sb3JidWZmZXJQcm94eTsKKyAgICB1
bnNpZ25lZCBpbnQgbVByb3h5UmVmczsKK307CisKK2NsYXNzIFRleHR1cmVDdWJlTWFwIDogcHVi
bGljIFRleHR1cmUKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVDdWJlTWFwKHJ4OjpSZW5kZXJl
ciAqcmVuZGVyZXIsIEdMdWludCBpZCk7CisKKyAgICB+VGV4dHVyZUN1YmVNYXAoKTsKKworICAg
IHZvaWQgYWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7CisgICAgdm9pZCBy
ZWxlYXNlUHJveHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7CisKKyAgICB2aXJ0dWFsIEdM
ZW51bSBnZXRUYXJnZXQoKSBjb25zdDsKKyAgICAKKyAgICBHTHNpemVpIGdldFdpZHRoKEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBHTHNpemVpIGdldEhlaWdodChHTGVu
dW0gdGFyZ2V0LCBHTGludCBsZXZlbCkgY29uc3Q7CisgICAgR0xlbnVtIGdldEludGVybmFsRm9y
bWF0KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBHTGVudW0gZ2V0QWN0
dWFsRm9ybWF0KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBib29sIGlz
Q29tcHJlc3NlZChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkgY29uc3Q7CisKKyAgICB2b2lk
IHNldEltYWdlUG9zWChHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0
IHZvaWQgKnBpeGVscyk7CisgICAgdm9pZCBzZXRJbWFnZU5lZ1goR0xpbnQgbGV2ZWwsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xp
bnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOworICAgIHZvaWQgc2V0SW1h
Z2VQb3NZKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAq
cGl4ZWxzKTsKKyAgICB2b2lkIHNldEltYWdlTmVnWShHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBh
Y2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7CisgICAgdm9pZCBzZXRJbWFnZVBvc1oo
R0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMp
OworICAgIHZvaWQgc2V0SW1hZ2VOZWdaKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdu
bWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKKworICAgIHZvaWQgc2V0Q29tcHJlc3NlZEltYWdl
KEdMZW51bSBmYWNlLCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpOwor
CisgICAgdm9pZCBzdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51
bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQg
KnBpeGVscyk7CisgICAgdm9pZCBzdWJJbWFnZUNvbXByZXNzZWQoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9p
ZCAqcGl4ZWxzKTsKKyAgICB2b2lkIGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZl
bCwgR0xlbnVtIGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEZyYW1lYnVmZmVyICpzb3VyY2UpOworICAgIHZpcnR1YWwgdm9pZCBjb3B5U3Vi
SW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBG
cmFtZWJ1ZmZlciAqc291cmNlKTsKKyAgICB2b2lkIHN0b3JhZ2UoR0xzaXplaSBsZXZlbHMsIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSBzaXplKTsKKworICAgIHZpcnR1YWwgYm9vbCBp
c1NhbXBsZXJDb21wbGV0ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlw
bWFwcygpOworCisgICAgdmlydHVhbCBSZW5kZXJidWZmZXIgKmdldFJlbmRlcmJ1ZmZlcihHTGVu
dW0gdGFyZ2V0KTsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgZmFjZUluZGV4KEdMZW51bSBm
YWNlKTsKKworICBwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFJlbmRlcmJ1ZmZlclRleHR1
cmVDdWJlTWFwOworICAgIHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0
KEdMZW51bSB0YXJnZXQpOworICAgIHZpcnR1YWwgaW50IGxldmVsQ291bnQoKTsKKworICBwcml2
YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUZXh0dXJlQ3ViZU1hcCk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVU
ZXh0dXJlKCk7CisgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb1JlbmRlclRhcmdldCgpOworICAg
IHZpcnR1YWwgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlICpnZXRTdG9yYWdlKGJvb2wgcmVu
ZGVyVGFyZ2V0KTsKKworICAgIGJvb2wgaXNDdWJlQ29tcGxldGUoKSBjb25zdDsKKyAgICBib29s
IGlzTWlwbWFwQ3ViZUNvbXBsZXRlKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEltYWdlKGludCBm
YWNlSW5kZXgsIEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9p
ZCAqcGl4ZWxzKTsKKyAgICB2b2lkIGNvbW1pdFJlY3QoaW50IGZhY2VJbmRleCwgR0xpbnQgbGV2
ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0KTsKKyAgICB2b2lkIHJlZGVmaW5lSW1hZ2UoaW50IGZhY2VJbmRleCwgR0xpbnQgbGV2
ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7
CisKKyAgICByeDo6SW1hZ2UgKm1JbWFnZUFycmF5WzZdW0lNUExFTUVOVEFUSU9OX01BWF9URVhU
VVJFX0xFVkVMU107CisKKyAgICByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICptVGV4
U3RvcmFnZTsKKworICAgIC8vIEEgc3BlY2lmaWMgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IGlz
IGtlcHQgZm9yIGNvbG9yYnVmZmVyIHByb3h5IHJlZmVyZW5jZXMsCisgICAgLy8gYmVjYXVzZSwg
YXMgdGhlIHJlbmRlcmJ1ZmZlciBhY3RpbmcgYXMgcHJveHkgd2lsbCBtYWludGFpbiBhIGJpbmRp
bmcgcG9pbnRlcgorICAgIC8vIGJhY2sgdG8gdGhpcyB0ZXh0dXJlLCB0aGVyZSB3b3VsZCBiZSBh
IGNpcmN1bGFyIHJlZmVyZW5jZSBpZiB3ZSB1c2VkIGEgYmluZGluZworICAgIC8vIHBvaW50ZXIg
aGVyZS4gVGhpcyByZWZlcmVuY2UgY291bnQgd2lsbCBjYXVzZSB0aGUgcG9pbnRlciB0byBiZSBz
ZXQgdG8gTlVMTCBpZgorICAgIC8vIHRoZSBjb3VudCBkcm9wcyB0byB6ZXJvLCBidXQgd2lsbCBu
b3QgY2F1c2UgZGVsZXRpb24gb2YgdGhlIFJlbmRlcmJ1ZmZlci4KKyAgICBSZW5kZXJidWZmZXIg
Km1GYWNlUHJveGllc1s2XTsKKyAgICB1bnNpZ25lZCBpbnQgKm1GYWNlUHJveHlSZWZzWzZdOwor
fTsKK30KKworI2VuZGlmICAgLy8gTElCR0xFU1YyX1RFWFRVUkVfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVW5pZm9ybS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Vbmlmb3JtLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVW5pZm9ybS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5o
IgorLy8NCisvLyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLg0KKy8vDQorDQorI2luY2x1ZGUgImxpYkdMRVN2Mi9Vbmlmb3Jt
LmgiDQorDQorI2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCINCisNCituYW1lc3BhY2Ug
Z2wNCit7DQorDQorVW5pZm9ybTo6VW5pZm9ybShHTGVudW0gdHlwZSwgR0xlbnVtIHByZWNpc2lv
biwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHVuc2lnbmVkIGludCBhcnJheVNpemUpDQorICAg
IDogdHlwZSh0eXBlKSwgcHJlY2lzaW9uKHByZWNpc2lvbiksIG5hbWUobmFtZSksIGFycmF5U2l6
ZShhcnJheVNpemUpDQorew0KKyAgICBpbnQgYnl0ZXMgPSBnbDo6VW5pZm9ybUludGVybmFsU2l6
ZSh0eXBlKSAqIGVsZW1lbnRDb3VudCgpOw0KKyAgICBkYXRhID0gbmV3IHVuc2lnbmVkIGNoYXJb
Ynl0ZXNdOw0KKyAgICBtZW1zZXQoZGF0YSwgMCwgYnl0ZXMpOw0KKyAgICBkaXJ0eSA9IHRydWU7
DQorDQorICAgIHBzUmVnaXN0ZXJJbmRleCA9IC0xOw0KKyAgICB2c1JlZ2lzdGVySW5kZXggPSAt
MTsNCisgICAgcmVnaXN0ZXJDb3VudCA9IFZhcmlhYmxlUm93Q291bnQodHlwZSkgKiBlbGVtZW50
Q291bnQoKTsNCit9DQorDQorVW5pZm9ybTo6flVuaWZvcm0oKQ0KK3sNCisgICAgZGVsZXRlW10g
ZGF0YTsNCit9DQorDQorYm9vbCBVbmlmb3JtOjppc0FycmF5KCkgY29uc3QNCit7DQorICAgIHJl
dHVybiBhcnJheVNpemUgPiAwOw0KK30NCisNCit1bnNpZ25lZCBpbnQgVW5pZm9ybTo6ZWxlbWVu
dENvdW50KCkgY29uc3QNCit7DQorICAgIHJldHVybiBhcnJheVNpemUgPiAwID8gYXJyYXlTaXpl
IDogMTsNCit9DQorDQorfQ0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvVW5pZm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvVW5pZm9ybS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9Vbmlmb3JtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDgg
QEAKKy8vDQorLy8gQ29weXJpZ2h0IChjKSAyMDEwLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4NCisvLw0KKw0KKyNpZm5kZWYgTElCR0xFU1YyX1VOSUZPUk1f
SF8NCisjZGVmaW5lIExJQkdMRVNWMl9VTklGT1JNX0hfDQorDQorI2luY2x1ZGUgPHN0cmluZz4N
CisjaW5jbHVkZSA8dmVjdG9yPg0KKw0KKyNkZWZpbmUgR0xfQVBJQ0FMTA0KKyNpbmNsdWRlIDxH
TEVTMi9nbDIuaD4NCisNCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiDQorDQorbmFtZXNwYWNl
IGdsDQorew0KKw0KKy8vIEhlbHBlciBzdHJ1Y3QgcmVwcmVzZW50aW5nIGEgc2luZ2xlIHNoYWRl
ciB1bmlmb3JtDQorc3RydWN0IFVuaWZvcm0NCit7DQorICAgIFVuaWZvcm0oR0xlbnVtIHR5cGUs
IEdMZW51bSBwcmVjaXNpb24sIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCB1bnNpZ25lZCBpbnQg
YXJyYXlTaXplKTsNCisNCisgICAgflVuaWZvcm0oKTsNCisNCisgICAgYm9vbCBpc0FycmF5KCkg
Y29uc3Q7DQorICAgIHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQoKSBjb25zdDsNCisNCisgICAg
Y29uc3QgR0xlbnVtIHR5cGU7DQorICAgIGNvbnN0IEdMZW51bSBwcmVjaXNpb247DQorICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIG5hbWU7DQorICAgIGNvbnN0IHVuc2lnbmVkIGludCBhcnJheVNpemU7
DQorDQorICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7DQorICAgIGJvb2wgZGlydHk7DQorDQorICAg
IGludCBwc1JlZ2lzdGVySW5kZXg7DQorICAgIGludCB2c1JlZ2lzdGVySW5kZXg7DQorICAgIHVu
c2lnbmVkIGludCByZWdpc3RlckNvdW50Ow0KK307DQorDQordHlwZWRlZiBzdGQ6OnZlY3RvcjxV
bmlmb3JtKj4gVW5pZm9ybUFycmF5Ow0KKw0KK30NCisNCisjZW5kaWYgICAvLyBMSUJHTEVTVjJf
VU5JRk9STV9IXw0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
YW5nbGV0eXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvYW5nbGV0eXBlcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9hbmdsZXR5cGVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTI5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBhbmdsZXR5cGVzLmggOiBEZWZpbmVzIGEg
dmFyaWV0eSBvZiBzdHJ1Y3R1cmVzIGFuZCBlbnVtIHR5cGVzIHRoYXQgYXJlIHVzZWQgdGhyb3Vn
aG91dCBsaWJHTEVTdjIKKworI2lmbmRlZiBMSUJHTEVTVjJfQU5HTEVUWVBFU19IXworI2RlZmlu
ZSBMSUJHTEVTVjJfQU5HTEVUWVBFU19IXworCituYW1lc3BhY2UgZ2wKK3sKKworZW51bSBUZXh0
dXJlVHlwZQoreworICAgIFRFWFRVUkVfMkQsCisgICAgVEVYVFVSRV9DVUJFLAorCisgICAgVEVY
VFVSRV9UWVBFX0NPVU5ULAorICAgIFRFWFRVUkVfVU5LTk9XTgorfTsKKworZW51bSBTYW1wbGVy
VHlwZQoreworICAgIFNBTVBMRVJfUElYRUwsCisgICAgU0FNUExFUl9WRVJURVgKK307CisKK3N0
cnVjdCBDb2xvcgoreworICAgIGZsb2F0IHJlZDsKKyAgICBmbG9hdCBncmVlbjsKKyAgICBmbG9h
dCBibHVlOworICAgIGZsb2F0IGFscGhhOworfTsKKworc3RydWN0IFJlY3RhbmdsZQoreworICAg
IGludCB4OworICAgIGludCB5OworICAgIGludCB3aWR0aDsKKyAgICBpbnQgaGVpZ2h0OworfTsK
Kworc3RydWN0IFJhc3Rlcml6ZXJTdGF0ZQoreworICAgIGJvb2wgY3VsbEZhY2U7CisgICAgR0xl
bnVtIGN1bGxNb2RlOworICAgIEdMZW51bSBmcm9udEZhY2U7CisKKyAgICBib29sIHBvbHlnb25P
ZmZzZXRGaWxsOworICAgIEdMZmxvYXQgcG9seWdvbk9mZnNldEZhY3RvcjsKKyAgICBHTGZsb2F0
IHBvbHlnb25PZmZzZXRVbml0czsKKworICAgIGJvb2wgcG9pbnREcmF3TW9kZTsKKyAgICBib29s
IG11bHRpU2FtcGxlOworfTsKKworc3RydWN0IEJsZW5kU3RhdGUKK3sKKyAgICBib29sIGJsZW5k
OworICAgIEdMZW51bSBzb3VyY2VCbGVuZFJHQjsKKyAgICBHTGVudW0gZGVzdEJsZW5kUkdCOwor
ICAgIEdMZW51bSBzb3VyY2VCbGVuZEFscGhhOworICAgIEdMZW51bSBkZXN0QmxlbmRBbHBoYTsK
KyAgICBHTGVudW0gYmxlbmRFcXVhdGlvblJHQjsKKyAgICBHTGVudW0gYmxlbmRFcXVhdGlvbkFs
cGhhOworCisgICAgYm9vbCBjb2xvck1hc2tSZWQ7CisgICAgYm9vbCBjb2xvck1hc2tHcmVlbjsK
KyAgICBib29sIGNvbG9yTWFza0JsdWU7CisgICAgYm9vbCBjb2xvck1hc2tBbHBoYTsKKworICAg
IGJvb2wgc2FtcGxlQWxwaGFUb0NvdmVyYWdlOworCisgICAgYm9vbCBkaXRoZXI7Cit9OworCitz
dHJ1Y3QgRGVwdGhTdGVuY2lsU3RhdGUKK3sKKyAgICBib29sIGRlcHRoVGVzdDsKKyAgICBHTGVu
dW0gZGVwdGhGdW5jOworICAgIGJvb2wgZGVwdGhNYXNrOworCisgICAgYm9vbCBzdGVuY2lsVGVz
dDsKKyAgICBHTGVudW0gc3RlbmNpbEZ1bmM7CisgICAgR0x1aW50IHN0ZW5jaWxNYXNrOworICAg
IEdMZW51bSBzdGVuY2lsRmFpbDsKKyAgICBHTGVudW0gc3RlbmNpbFBhc3NEZXB0aEZhaWw7Cisg
ICAgR0xlbnVtIHN0ZW5jaWxQYXNzRGVwdGhQYXNzOworICAgIEdMdWludCBzdGVuY2lsV3JpdGVt
YXNrOworICAgIEdMZW51bSBzdGVuY2lsQmFja0Z1bmM7CisgICAgR0x1aW50IHN0ZW5jaWxCYWNr
TWFzazsKKyAgICBHTGVudW0gc3RlbmNpbEJhY2tGYWlsOworICAgIEdMZW51bSBzdGVuY2lsQmFj
a1Bhc3NEZXB0aEZhaWw7CisgICAgR0xlbnVtIHN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzczsKKyAg
ICBHTHVpbnQgc3RlbmNpbEJhY2tXcml0ZW1hc2s7Cit9OworCitzdHJ1Y3QgU2FtcGxlclN0YXRl
Cit7CisgICAgR0xlbnVtIG1pbkZpbHRlcjsKKyAgICBHTGVudW0gbWFnRmlsdGVyOworICAgIEdM
ZW51bSB3cmFwUzsKKyAgICBHTGVudW0gd3JhcFQ7CisgICAgZmxvYXQgbWF4QW5pc290cm9weTsK
KyAgICBpbnQgbG9kT2Zmc2V0OworfTsKKworc3RydWN0IENsZWFyUGFyYW1ldGVycworeworICAg
IEdMYml0ZmllbGQgbWFzazsKKworICAgIENvbG9yIGNvbG9yQ2xlYXJWYWx1ZTsKKyAgICBib29s
IGNvbG9yTWFza1JlZDsKKyAgICBib29sIGNvbG9yTWFza0dyZWVuOworICAgIGJvb2wgY29sb3JN
YXNrQmx1ZTsKKyAgICBib29sIGNvbG9yTWFza0FscGhhOworCisgICAgZmxvYXQgZGVwdGhDbGVh
clZhbHVlOworCisgICAgR0xpbnQgc3RlbmNpbENsZWFyVmFsdWU7CisgICAgR0x1aW50IHN0ZW5j
aWxXcml0ZU1hc2s7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfQU5HTEVUWVBFU19I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9jb25zdGFudHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2Nv
bnN0YW50cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9jb25zdGFudHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIENvbnRhbnRzLmg6IERlZmluZXMgc29tZSBpbXBsZW1lbnRhdGlvbiBzcGVj
aWZpYyBhbmQgZ2wgY29uc3RhbnRzCisKKyNpZm5kZWYgTElCR0xFU1YyX0NPTlNUQU5UU19IXwor
I2RlZmluZSBMSUJHTEVTVjJfQ09OU1RBTlRTX0hfCisKK25hbWVzcGFjZSBnbAoreworCitlbnVt
Cit7CisgICAgTUFYX1ZFUlRFWF9BVFRSSUJTID0gMTYsCisgICAgTUFYX1RFWFRVUkVfSU1BR0Vf
VU5JVFMgPSAxNiwKKworICAgIC8vIEltcGxlbWVudGF0aW9uIHVwcGVyIGxpbWl0cywgcmVhbCBt
YXhpbXVtcyBkZXBlbmQgb24gdGhlIGhhcmR3YXJlCisgICAgSU1QTEVNRU5UQVRJT05fTUFYX1ZF
UlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTID0gMTYsCisgICAgSU1QTEVNRU5UQVRJT05fTUFYX0NP
TUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyArIElN
UExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUywgICAgCisKKyAgICBJ
TVBMRU1FTlRBVElPTl9NQVhfVkFSWUlOR19WRUNUT1JTID0gMzIsCisgICAgSU1QTEVNRU5UQVRJ
T05fTUFYX0RSQVdfQlVGRkVSUyA9IDgKK307CisKK2NvbnN0IGZsb2F0IEFMSUFTRURfTElORV9X
SURUSF9SQU5HRV9NSU4gPSAxLjBmOworY29uc3QgZmxvYXQgQUxJQVNFRF9MSU5FX1dJRFRIX1JB
TkdFX01BWCA9IDEuMGY7Citjb25zdCBmbG9hdCBBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0VfTUlO
ID0gMS4wZjsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX0NPTlNUQU5UU19IXwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3Yy
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvbGliR0xFU3YyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MTA2IEBACisjaW5jbHVk
ZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIGxpYkdMRVN2Mi5jcHA6
IEltcGxlbWVudHMgdGhlIGV4cG9ydGVkIE9wZW5HTCBFUyAyLjAgZnVuY3Rpb25zLgorCisjaW5j
bHVkZSAiY29tbW9uL3ZlcnNpb24uaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9CdWZm
ZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvRmVuY2UuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
RnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL1Byb2dyYW0uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbUJp
bmFyeS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL1F1ZXJ5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKworYm9vbCB2YWxp
ZEltYWdlU2l6ZShHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7
CisgICAgaWYgKGxldmVsIDwgMCB8fCB3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoZ2w6OmdldENvbnRleHQoKSAm
JiBnbDo6Z2V0Q29udGV4dCgpLT5zdXBwb3J0c05vblBvd2VyMlRleHR1cmUoKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChsZXZlbCA9PSAwKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGdsOjppc1BvdzIod2lkdGgp
ICYmIGdsOjppc1BvdzIoaGVpZ2h0KSkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gVmVyaWZ5IHRoYXQgZm9ybWF0L3R5cGUg
YXJlIG9uZSBvZiB0aGUgY29tYmluYXRpb25zIGZyb20gdGFibGUgMy40LgorYm9vbCBjaGVja1Rl
eHR1cmVGb3JtYXRUeXBlKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKQoreworICAgIC8vIHZh
bGlkYXRlIDxmb3JtYXQ+IGJ5IGl0c2VsZiAodXNlZCBhcyBzZWNvbmRhcnkga2V5IGJlbG93KQor
ICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgIGNh
c2UgR0xfQkdSQV9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgIGNhc2UgR0xfQUxQSEE6
CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhB
OgorICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6CisgICAgICBjYXNlIEdMX0RFUFRIX1NU
RU5DSUxfT0VTOgorICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBmYWxzZSk7CisgICAgfQorCisgICAgLy8gaW52
YWxpZCA8dHlwZT4gLT4gc2V0cyBJTlZBTElEX0VOVU0KKyAgICAvLyBpbnZhbGlkIDxmb3JtYXQ+
Kzx0eXBlPiBjb21iaW5hdGlvbiAtPiBzZXRzIElOVkFMSURfT1BFUkFUSU9OCisgICAgc3dpdGNo
ICh0eXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgc3dp
dGNoIChmb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAg
ICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICBj
YXNlIEdMX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOgorICAgICAgICAgIGNh
c2UgR0xfTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sIGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAg
Y2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgc3dpdGNoIChmb3JtYXQpCisgICAgICAg
IHsKKyAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgY2FzZSBHTF9SR0I6CisgICAg
ICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAg
ICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgY2FzZSBHTF9VTlNJR05F
RF9TSE9SVF80XzRfNF80OgorICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xOgor
ICAgICAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfUkdC
QToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAg
ICAgIH0KKworICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNToKKyAgICAgICAgc3dp
dGNoIChmb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgICAgIH0KKworICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgor
ICAgICAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfREVQ
VEhfQ09NUE9ORU5UOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGZh
bHNlKTsKKyAgICAgICAgfQorCisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yNF84X09FUzoK
KyAgICAgICAgc3dpdGNoIChmb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0RF
UFRIX1NURU5DSUxfT0VTOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
IGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfRU5VTSwgZmFsc2UpOworICAgIH0KK30KKworYm9vbCB2YWxpZGF0
ZVN1YkltYWdlUGFyYW1zMkQoYm9vbCBjb21wcmVzc2VkLCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlMkQgKnRleHR1cmUpCit7Cisg
ICAgaWYgKCF0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwgZmFsc2UpOworICAgIH0KKworICAgIGlmIChjb21wcmVzc2VkICE9IHRl
eHR1cmUtPmlzQ29tcHJlc3NlZChsZXZlbCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgfQorCisgICAgaWYgKGZvcm1h
dCAhPSBHTF9OT05FKQorICAgIHsKKyAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gZ2w6
OkNvbnZlcnRTaXplZEludGVybmFsRm9ybWF0KGZvcm1hdCwgdHlwZSk7CisgICAgICAgIGlmIChp
bnRlcm5hbGZvcm1hdCAhPSB0ZXh0dXJlLT5nZXRJbnRlcm5hbEZvcm1hdChsZXZlbCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
IGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjb21wcmVzc2VkKQorICAgIHsK
KyAgICAgICAgaWYgKCh3aWR0aCAlIDQgIT0gMCAmJiB3aWR0aCAhPSB0ZXh0dXJlLT5nZXRXaWR0
aCgwKSkgfHwKKyAgICAgICAgICAgIChoZWlnaHQgJSA0ICE9IDAgJiYgaGVpZ2h0ICE9IHRleHR1
cmUtPmdldEhlaWdodCgwKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmICh4b2Zmc2V0ICsgd2lkdGggPiB0ZXh0dXJlLT5nZXRXaWR0aChsZXZlbCkgfHwKKyAgICAg
ICAgeW9mZnNldCArIGhlaWdodCA+IHRleHR1cmUtPmdldEhlaWdodChsZXZlbCkpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGZhbHNlKTsKKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCB2YWxpZGF0ZVN1YkltYWdlUGFyYW1zQ3Vi
ZShib29sIGNvbXByZXNzZWQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1hcCAqdGV4dHVy
ZSkKK3sKKyAgICBpZiAoIXRleHR1cmUpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgfQorCisgICAgaWYgKGNvbXByZXNz
ZWQgIT0gdGV4dHVyZS0+aXNDb21wcmVzc2VkKHRhcmdldCwgbGV2ZWwpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgZmFsc2UpOworICAgIH0K
KworICAgIGlmIChmb3JtYXQgIT0gR0xfTk9ORSkKKyAgICB7CisgICAgICAgIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCA9IGdsOjpDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQsIHR5cGUp
OworICAgICAgICBpZiAoaW50ZXJuYWxmb3JtYXQgIT0gdGV4dHVyZS0+Z2V0SW50ZXJuYWxGb3Jt
YXQodGFyZ2V0LCBsZXZlbCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmIChjb21wcmVzc2VkKQorICAgIHsKKyAgICAgICAgaWYgKCh3aWR0aCAlIDQgIT0gMCAmJiB3
aWR0aCAhPSB0ZXh0dXJlLT5nZXRXaWR0aCh0YXJnZXQsIDApKSB8fAorICAgICAgICAgICAgKGhl
aWdodCAlIDQgIT0gMCAmJiBoZWlnaHQgIT0gdGV4dHVyZS0+Z2V0SGVpZ2h0KHRhcmdldCwgMCkp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoeG9mZnNldCArIHdp
ZHRoID4gdGV4dHVyZS0+Z2V0V2lkdGgodGFyZ2V0LCBsZXZlbCkgfHwKKyAgICAgICAgeW9mZnNl
dCArIGhlaWdodCA+IHRleHR1cmUtPmdldEhlaWdodCh0YXJnZXQsIGxldmVsKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgZmFsc2UpOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCisvLyBjaGVjayBmb3IgY29tYmluYXRpb25zIG9mIGZv
cm1hdCBhbmQgdHlwZSB0aGF0IGFyZSB2YWxpZCBmb3IgUmVhZFBpeGVscworYm9vbCB2YWxpZFJl
YWRGb3JtYXRUeXBlKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAo
Zm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgc3dpdGNoICh0eXBl
KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6CisgICAg
ICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
QllURToKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVDoK
KyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVDoKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitleHRlcm4gIkMiCit7
CisKK3ZvaWQgX19zdGRjYWxsIGdsQWN0aXZlVGV4dHVyZShHTGVudW0gdGV4dHVyZSkKK3sKKyAg
ICBFVkVOVCgiKEdMZW51bSB0ZXh0dXJlID0gMHglWCkiLCB0ZXh0dXJlKTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRl
eHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHRleHR1cmUgPCBHTF9URVhUVVJFMCB8fCB0ZXh0dXJlID4gR0xfVEVYVFVSRTAgKyBjb250ZXh0
LT5nZXRNYXhpbXVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIC0gMSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnRleHQtPnNldEFjdGl2ZVNhbXBsZXIodGV4
dHVyZSAtIEdMX1RFWFRVUkUwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJh
ZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xBdHRhY2hTaGFkZXIoR0x1aW50IHBy
b2dyYW0sIEdMdWludCBzaGFkZXIpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVk
LCBHTHVpbnQgc2hhZGVyID0gJWQpIiwgcHJvZ3JhbSwgc2hhZGVyKTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlBy
b2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAg
ICAgICAgICAgZ2w6OlNoYWRlciAqc2hhZGVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U2hhZGVyKHNo
YWRlcik7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoIXNoYWRlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0UHJvZ3JhbShzaGFkZXIpKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoIXByb2dyYW1PYmplY3QtPmF0dGFjaFNoYWRlcihzaGFkZXJPYmplY3QpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEJlZ2luUXVlcnlFWFQoR0xlbnVtIHRh
cmdldCwgR0x1aW50IGlkKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdM
dWludCAlZCkiLCB0YXJnZXQsIGlkKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgc3dpdGNo
ICh0YXJnZXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NF
RF9FWFQ6IAorICAgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElW
RV9FWFQ6CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6IAorICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoaWQgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5iZWdpblF1ZXJ5KHRhcmdl
dCwgaWQpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAg
ICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQor
fQorCit2b2lkIF9fc3RkY2FsbCBnbEJpbmRBdHRyaWJMb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwg
R0x1aW50IGluZGV4LCBjb25zdCBHTGNoYXIqIG5hbWUpCit7CisgICAgRVZFTlQoIihHTHVpbnQg
cHJvZ3JhbSA9ICVkLCBHTHVpbnQgaW5kZXggPSAlZCwgY29uc3QgR0xjaGFyKiBuYW1lID0gMHgl
MC44cCkiLCBwcm9ncmFtLCBpbmRleCwgbmFtZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAg
IGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKwor
ICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlByb2dyYW0g
KnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAg
ICAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmdldFNoYWRlcihwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHN0
cm5jbXAobmFtZSwgImdsXyIsIDMpID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHByb2dyYW1PYmplY3QtPmJpbmRBdHRyaWJ1dGVMb2NhdGlvbihpbmRl
eCwgbmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9
Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQmluZEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
YnVmZmVyKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMdWludCBidWZm
ZXIgPSAlZCkiLCB0YXJnZXQsIGJ1ZmZlcik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0FSUkFZX0JVRkZFUjoKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5iaW5kQXJyYXlCdWZmZXIoYnVmZmVyKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVI6Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+YmluZEVsZW1lbnRBcnJheUJ1ZmZlcihidWZmZXIpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3Zv
aWQgX19zdGRjYWxsIGdsQmluZEZyYW1lYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdMdWludCBmcmFt
ZWJ1ZmZlcikKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHVpbnQgZnJh
bWVidWZmZXIgPSAlZCkiLCB0YXJnZXQsIGZyYW1lYnVmZmVyKTsKKworICAgIHRyeQorICAgIHsK
KyAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9GUkFNRUJVRkZFUiAmJiB0YXJnZXQgIT0gR0xfRFJB
V19GUkFNRUJVRkZFUl9BTkdMRSAmJiB0YXJnZXQgIT0gR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdM
RSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VO
VU0pOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0
Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFIHx8IHRhcmdl
dCA9PSBHTF9GUkFNRUJVRkZFUikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LT5iaW5kUmVhZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9EUkFXX0ZSQU1FQlVGRkVS
X0FOR0xFIHx8IHRhcmdldCA9PSBHTF9GUkFNRUJVRkZFUikKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5iaW5kRHJhd0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
IH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQs
IEdMdWludCByZW5kZXJidWZmZXIpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHgl
WCwgR0x1aW50IHJlbmRlcmJ1ZmZlciA9ICVkKSIsIHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9SRU5ERVJCVUZGRVIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsK
KyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmRSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwg
Z2xCaW5kVGV4dHVyZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSkKK3sKKyAgICBFVkVO
VCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHVpbnQgdGV4dHVyZSA9ICVkKSIsIHRhcmdldCwg
dGV4dHVyZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlT2JqZWN0ID0gY29udGV4dC0+
Z2V0VGV4dHVyZSh0ZXh0dXJlKTsKKworICAgICAgICAgICAgaWYgKHRleHR1cmVPYmplY3QgJiYg
dGV4dHVyZU9iamVjdC0+Z2V0VGFyZ2V0KCkgIT0gdGFyZ2V0ICYmIHRleHR1cmUgIT0gMCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZTJEKHRleHR1cmUpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgorICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlQ3ViZU1hcCh0ZXh0dXJlKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9f
c3RkY2FsbCBnbEJsZW5kQ29sb3IoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFt
cGYgYmx1ZSwgR0xjbGFtcGYgYWxwaGEpCit7CisgICAgRVZFTlQoIihHTGNsYW1wZiByZWQgPSAl
ZiwgR0xjbGFtcGYgZ3JlZW4gPSAlZiwgR0xjbGFtcGYgYmx1ZSA9ICVmLCBHTGNsYW1wZiBhbHBo
YSA9ICVmKSIsCisgICAgICAgICAgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCogY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBj
b250ZXh0LT5zZXRCbGVuZENvbG9yKGdsOjpjbGFtcDAxKHJlZCksIGdsOjpjbGFtcDAxKGdyZWVu
KSwgZ2w6OmNsYW1wMDEoYmx1ZSksIGdsOjpjbGFtcDAxKGFscGhhKSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
QmxlbmRFcXVhdGlvbihHTGVudW0gbW9kZSkKK3sKKyAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0
ZShtb2RlLCBtb2RlKTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xCbGVuZEVxdWF0aW9uU2VwYXJh
dGUoR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpCit7CisgICAgRVZFTlQoIihHTGVu
dW0gbW9kZVJHQiA9IDB4JVgsIEdMZW51bSBtb2RlQWxwaGEgPSAweCVYKSIsIG1vZGVSR0IsIG1v
ZGVBbHBoYSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobW9kZVJHQikKKyAg
ICAgICAgeworICAgICAgICAgIGNhc2UgR0xfRlVOQ19BREQ6CisgICAgICAgICAgY2FzZSBHTF9G
VU5DX1NVQlRSQUNUOgorICAgICAgICAgIGNhc2UgR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUOgor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRj
aCAobW9kZUFscGhhKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9GVU5DX0FERDoKKyAg
ICAgICAgICBjYXNlIEdMX0ZVTkNfU1VCVFJBQ1Q6CisgICAgICAgICAgY2FzZSBHTF9GVU5DX1JF
VkVSU0VfU1VCVFJBQ1Q6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9
CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4
dC0+c2V0QmxlbmRFcXVhdGlvbihtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgICAgICB9CisgICAg
fQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEJs
ZW5kRnVuYyhHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpCit7CisgICAgZ2xCbGVuZEZ1
bmNTZXBhcmF0ZShzZmFjdG9yLCBkZmFjdG9yLCBzZmFjdG9yLCBkZmFjdG9yKTsKK30KKwordm9p
ZCBfX3N0ZGNhbGwgZ2xCbGVuZEZ1bmNTZXBhcmF0ZShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0
UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkKK3sKKyAgICBFVkVOVCgiKEdM
ZW51bSBzcmNSR0IgPSAweCVYLCBHTGVudW0gZHN0UkdCID0gMHglWCwgR0xlbnVtIHNyY0FscGhh
ID0gMHglWCwgR0xlbnVtIGRzdEFscGhhID0gMHglWCkiLAorICAgICAgICAgIHNyY1JHQiwgZHN0
UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBzd2l0
Y2ggKHNyY1JHQikKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfWkVSTzoKKyAgICAgICAg
ICBjYXNlIEdMX09ORToKKyAgICAgICAgICBjYXNlIEdMX1NSQ19DT0xPUjoKKyAgICAgICAgICBj
YXNlIEdMX09ORV9NSU5VU19TUkNfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6
CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNUX0NPTE9SOgorICAgICAgICAgIGNhc2Ug
R0xfU1JDX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQToKKyAg
ICAgICAgICBjYXNlIEdMX0RTVF9BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19E
U1RfQUxQSEE6CisgICAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgICBj
YXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX0NPTlNU
QU5UX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOgor
ICAgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBX1NBVFVSQVRFOgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoZHN0UkdCKQorICAgICAg
ICB7CisgICAgICAgICAgY2FzZSBHTF9aRVJPOgorICAgICAgICAgIGNhc2UgR0xfT05FOgorICAg
ICAgICAgIGNhc2UgR0xfU1JDX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NS
Q19DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX0RTVF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdM
X09ORV9NSU5VU19EU1RfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9TUkNfQUxQSEE6CisgICAg
ICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfRFNU
X0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9BTFBIQToKKyAgICAgICAg
ICBjYXNlIEdMX0NPTlNUQU5UX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NP
TlNUQU5UX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQUxQSEE6CisgICAgICAg
ICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChzcmNBbHBoYSkKKyAgICAg
ICAgeworICAgICAgICAgIGNhc2UgR0xfWkVSTzoKKyAgICAgICAgICBjYXNlIEdMX09ORToKKyAg
ICAgICAgICBjYXNlIEdMX1NSQ19DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19T
UkNfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6CisgICAgICAgICAgY2FzZSBH
TF9PTkVfTUlOVVNfRFNUX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBOgorICAg
ICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX0RT
VF9BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQUxQSEE6CisgICAgICAg
ICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19D
T05TVEFOVF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX0NPTlNUQU5UX0FMUEhBOgorICAgICAg
ICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xf
U1JDX0FMUEhBX1NBVFVSQVRFOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHN3aXRjaCAoZHN0QWxwaGEpCisgICAgICAgIHsKKyAgICAgICAgICBj
YXNlIEdMX1pFUk86CisgICAgICAgICAgY2FzZSBHTF9PTkU6CisgICAgICAgICAgY2FzZSBHTF9T
UkNfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0NPTE9SOgorICAgICAg
ICAgIGNhc2UgR0xfRFNUX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9D
T0xPUjoKKyAgICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX09O
RV9NSU5VU19TUkNfQUxQSEE6CisgICAgICAgICAgY2FzZSBHTF9EU1RfQUxQSEE6CisgICAgICAg
ICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNUX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfQ09OU1RB
TlRfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6Cisg
ICAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX09ORV9N
SU5VU19DT05TVEFOVF9BTFBIQToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAg
ICAgIH0KKworICAgICAgICBib29sIGNvbnN0YW50Q29sb3JVc2VkID0gKHNyY1JHQiA9PSBHTF9D
T05TVEFOVF9DT0xPUiB8fCBzcmNSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0UkdCID09IEdMX0NPTlNUQU5U
X0NPTE9SIHx8IGRzdFJHQiA9PSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IpOworCisgICAg
ICAgIGJvb2wgY29uc3RhbnRBbHBoYVVzZWQgPSAoc3JjUkdCID09IEdMX0NPTlNUQU5UX0FMUEhB
IHx8IHNyY1JHQiA9PSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkc3RSR0IgPT0gR0xfQ09OU1RBTlRfQUxQSEEgfHwgZHN0
UkdCID09IEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSk7CisKKyAgICAgICAgaWYgKGNvbnN0
YW50Q29sb3JVc2VkICYmIGNvbnN0YW50QWxwaGFVc2VkKQorICAgICAgICB7CisgICAgICAgICAg
ICBFUlIoIlNpbXVsdGFuZW91cyB1c2Ugb2YgR0xfQ09OU1RBTlRfQUxQSEEvR0xfT05FX01JTlVT
X0NPTlNUQU5UX0FMUEhBIGFuZCBHTF9DT05TVEFOVF9DT0xPUi9HTF9PTkVfTUlOVVNfQ09OU1RB
TlRfQ09MT1IgaW52YWxpZCB1bmRlciBXZWJHTCIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRCbGVuZEZhY3RvcnMo
c3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQnVmZmVy
RGF0YShHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSwg
R0xlbnVtIHVzYWdlKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMc2l6
ZWlwdHIgc2l6ZSA9ICVkLCBjb25zdCBHTHZvaWQqIGRhdGEgPSAweCUwLjhwLCBHTGVudW0gdXNh
Z2UgPSAlZCkiLAorICAgICAgICAgIHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAg
ICBzd2l0Y2ggKHVzYWdlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9TVFJFQU1fRFJB
VzoKKyAgICAgICAgICBjYXNlIEdMX1NUQVRJQ19EUkFXOgorICAgICAgICAgIGNhc2UgR0xfRFlO
QU1JQ19EUkFXOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpCdWZmZXIg
KmJ1ZmZlcjsKKworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfQVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgICAgIGJ1ZmZl
ciA9IGNvbnRleHQtPmdldEFycmF5QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVI6CisgICAgICAgICAgICAg
ICAgYnVmZmVyID0gY29udGV4dC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgYnVmZmVyLT5idWZmZXJEYXRhKGRhdGEsIHNpemUsIHVzYWdlKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwg
Z2xCdWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0
ciBzaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0
ID0gMHglWCwgR0xpbnRwdHIgb2Zmc2V0ID0gJWQsIEdMc2l6ZWlwdHIgc2l6ZSA9ICVkLCBjb25z
dCBHTHZvaWQqIGRhdGEgPSAweCUwLjhwKSIsCisgICAgICAgICAgdGFyZ2V0LCBvZmZzZXQsIHNp
emUsIGRhdGEpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoc2l6ZSA8IDAgfHwgb2Zm
c2V0IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkYXRhID09IE5VTEwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNv
bnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlcjsKKworICAg
ICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNh
c2UgR0xfQVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQtPmdl
dEFycmF5QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVI6CisgICAgICAgICAgICAgICAgYnVmZmVyID0gY29u
dGV4dC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWJ1ZmZl
cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKChzaXpl
X3Qpc2l6ZSArIG9mZnNldCA+IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGJ1ZmZlci0+YnVmZmVyU3ViRGF0YShkYXRhLCBzaXplLCBvZmZz
ZXQpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7
CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQor
CitHTGVudW0gX19zdGRjYWxsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTGVudW0gdGFyZ2V0
KQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgpIiwgdGFyZ2V0KTsKKworICAg
IHRyeQorICAgIHsKKyAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9GUkFNRUJVRkZFUiAmJiB0YXJn
ZXQgIT0gR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSAmJiB0YXJnZXQgIT0gR0xfUkVBRF9GUkFN
RUJVRkZFUl9BTkdMRSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX0VOVU0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkK
KyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IE5V
TEw7CisgICAgICAgICAgICBpZiAodGFyZ2V0ID09IEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBjb250ZXh0LT5n
ZXRSZWFkRnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldERy
YXdGcmFtZWJ1ZmZlcigpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZnJh
bWVidWZmZXItPmNvbXBsZXRlbmVzcygpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSwgMCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgX19zdGRjYWxs
IGdsQ2xlYXIoR0xiaXRmaWVsZCBtYXNrKQoreworICAgIEVWRU5UKCIoR0xiaXRmaWVsZCBtYXNr
ID0gJVgpIiwgbWFzayk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmNsZWFyKG1hc2spOworICAgICAgICB9
CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2Fs
bCBnbENsZWFyQ29sb3IoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1
ZSwgR0xjbGFtcGYgYWxwaGEpCit7CisgICAgRVZFTlQoIihHTGNsYW1wZiByZWQgPSAlZiwgR0xj
bGFtcGYgZ3JlZW4gPSAlZiwgR0xjbGFtcGYgYmx1ZSA9ICVmLCBHTGNsYW1wZiBhbHBoYSA9ICVm
KSIsCisgICAgICAgICAgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworCisgICAgdHJ5CisgICAg
eworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgp
OworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0
LT5zZXRDbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xD
bGVhckRlcHRoZihHTGNsYW1wZiBkZXB0aCkKK3sKKyAgICBFVkVOVCgiKEdMY2xhbXBmIGRlcHRo
ID0gJWYpIiwgZGVwdGgpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRDbGVhckRlcHRoKGRlcHRoKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9p
ZCBfX3N0ZGNhbGwgZ2xDbGVhclN0ZW5jaWwoR0xpbnQgcykKK3sKKyAgICBFVkVOVCgiKEdMaW50
IHMgPSAlZCkiLCBzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkK
KyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+c2V0Q2xlYXJTdGVuY2lsKHMpOworICAg
ICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9f
c3RkY2FsbCBnbENvbG9yTWFzayhHTGJvb2xlYW4gcmVkLCBHTGJvb2xlYW4gZ3JlZW4sIEdMYm9v
bGVhbiBibHVlLCBHTGJvb2xlYW4gYWxwaGEpCit7CisgICAgRVZFTlQoIihHTGJvb2xlYW4gcmVk
ID0gJWQsIEdMYm9vbGVhbiBncmVlbiA9ICVkLCBHTGJvb2xlYW4gYmx1ZSA9ICVkLCBHTGJvb2xl
YW4gYWxwaGEgPSAlZCkiLAorICAgICAgICAgIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9u
TG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgY29udGV4dC0+c2V0Q29sb3JNYXNrKHJlZCA9PSBHTF9UUlVFLCBncmVlbiA9PSBHTF9U
UlVFLCBibHVlID09IEdMX1RSVUUsIGFscGhhID09IEdMX1RSVUUpOworICAgICAgICB9CisgICAg
fQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbENv
bXBpbGVTaGFkZXIoR0x1aW50IHNoYWRlcikKK3sKKyAgICBFVkVOVCgiKEdMdWludCBzaGFkZXIg
PSAlZCkiLCBzaGFkZXIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6U2hhZGVyICpzaGFkZXJPYmplY3QgPSBjb250
ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKworICAgICAgICAgICAgaWYgKCFzaGFkZXJPYmplY3Qp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFByb2dyYW0o
c2hhZGVyKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hhZGVyT2JqZWN0LT5jb21waWxlKCk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19z
dGRjYWxsIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsIEdMc2l6
ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpCit7CisgICAgRVZFTlQoIihHTGVudW0g
dGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0g
MHglWCwgR0xzaXplaSB3aWR0aCA9ICVkLCAiIAorICAgICAgICAgICJHTHNpemVpIGhlaWdodCA9
ICVkLCBHTGludCBib3JkZXIgPSAlZCwgR0xzaXplaSBpbWFnZVNpemUgPSAlZCwgY29uc3QgR0x2
b2lkKiBkYXRhID0gMHglMC44cCkiLAorICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIGlmICghdmFsaWRJbWFnZVNpemUobGV2ZWwsIHdpZHRoLCBoZWln
aHQpIHx8IGJvcmRlciAhPSAwIHx8IGltYWdlU2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAg
ICAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgIGNhc2UgR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUNV9BTkdMRToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoYm9yZGVyICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHdpZHRoICE9IDEgJiYgd2lkdGggIT0gMiAmJiB3aWR0aCAlIDQgIT0gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoaGVpZ2h0ICE9IDEgJiYgaGVpZ2h0ICE9IDIgJiYgaGVp
Z2h0ICUgNCAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChsZXZlbCA+IGNvbnRleHQtPmdldE1heGltdW1U
ZXh0dXJlTGV2ZWwoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBz
d2l0Y2ggKHRhcmdldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhU
VVJFXzJEOgorICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IChjb250ZXh0LT5nZXRNYXhpbXVt
VGV4dHVyZURpbWVuc2lvbigpID4+IGxldmVsKSB8fAorICAgICAgICAgICAgICAgICAgICBoZWln
aHQgPiAoY29udGV4dC0+Z2V0TWF4aW11bVRleHR1cmVEaW1lbnNpb24oKSA+PiBsZXZlbCkpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgorICAgICAg
ICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKKyAgICAgICAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6CisgICAgICAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgorICAgICAgICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKKyAgICAgICAgICAgICAgICBpZiAod2lkdGgg
IT0gaGVpZ2h0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBpZiAod2lkdGggPiAoY29udGV4dC0+Z2V0TWF4aW11bUN1YmVUZXh0dXJlRGlt
ZW5zaW9uKCkgPj4gbGV2ZWwpIHx8CisgICAgICAgICAgICAgICAgICAgIGhlaWdodCA+IChjb250
ZXh0LT5nZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNpb24oKSA+PiBsZXZlbCkpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAoaW50
ZXJuYWxmb3JtYXQpIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RD
X0RYVDFfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDFfRVhUOgorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQxVGV4dHVy
ZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsgLy8gaW4gdGhpcyBjYXNlLCBpdCdzIGFzIHRob3VnaCB0
aGUgaW50ZXJuYWwgZm9ybWF0IHN3aXRjaCBmYWlsZWQKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUM19BTkdMRToKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRz
RFhUM1RleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7IC8vIGluIHRoaXMgY2FzZSwgaXQncyBh
cyB0aG91Z2ggdGhlIGludGVybmFsIGZvcm1hdCBzd2l0Y2ggZmFpbGVkCisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0
LT5zdXBwb3J0c0RYVDVUZXh0dXJlcygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOyAvLyBpbiB0aGlzIGNh
c2UsIGl0J3MgYXMgdGhvdWdoIHRoZSBpbnRlcm5hbCBmb3JtYXQgc3dpdGNoIGZhaWxlZAorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVm
YXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlt
YWdlU2l6ZSAhPSBnbDo6Q29tcHV0ZUNvbXByZXNzZWRTaXplKHdpZHRoLCBoZWlnaHQsIGludGVy
bmFsZm9ybWF0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
dGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Z2w6OlRleHR1cmUyRCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgpOworCisgICAg
ICAgICAgICAgICAgaWYgKCF0ZXh0dXJlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICB0ZXh0dXJlLT5zZXRDb21wcmVzc2VkSW1hZ2UobGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBpbWFnZVNpemUsIGRhdGEpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1h
cCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmVDdWJlTWFwKCk7CisKKyAgICAgICAgICAg
ICAgICBpZiAoIXRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHN3
aXRjaCAodGFyZ2V0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgorICAgICAgICAgICAgICAgICAgY2FzZSBH
TF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6CisgICAgICAgICAgICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgorICAgICAgICAgICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+
c2V0Q29tcHJlc3NlZEltYWdlKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBpbWFnZVNpemUsIGRhdGEpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQo
R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qg
R0x2b2lkKiBkYXRhKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50
IGxldmVsID0gJWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQgeW9mZnNldCA9ICVkLCAiCisg
ICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xlbnVt
IGZvcm1hdCA9IDB4JVgsICIKKyAgICAgICAgICAiR0xzaXplaSBpbWFnZVNpemUgPSAlZCwgY29u
c3QgR0x2b2lkKiBkYXRhID0gMHglMC44cCkiLAorICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsK
KworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKCFnbDo6SXNJbnRlcm5hbFRleHR1cmVUYXJn
ZXQodGFyZ2V0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHhvZmZzZXQgPCAwIHx8IHlv
ZmZzZXQgPCAwIHx8ICF2YWxpZEltYWdlU2l6ZShsZXZlbCwgd2lkdGgsIGhlaWdodCkgfHwgaW1h
Z2VTaXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoZm9ybWF0KQorICAg
ICAgICB7CisgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgor
ICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod2lkdGggPT0gMCB8fCBoZWln
aHQgPT0gMCB8fCBkYXRhID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChsZXZlbCA+IGNvbnRleHQtPmdldE1heGltdW1UZXh0dXJlTGV2ZWwoKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFM
VUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAg
ICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICAg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAg
ICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0RYVDFUZXh0dXJlcygpKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VO
VU0pOyAvLyBpbiB0aGlzIGNhc2UsIGl0J3MgYXMgdGhvdWdoIHRoZSBpbnRlcm5hbCBmb3JtYXQg
c3dpdGNoIGZhaWxlZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgor
ICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQzVGV4dHVyZXMoKSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsgLy8gaW4gdGhpcyBjYXNlLCBpdCdzIGFzIHRob3VnaCB0aGUgaW50ZXJu
YWwgZm9ybWF0IHN3aXRjaCBmYWlsZWQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
NV9BTkdMRToKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUNVRleHR1
cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7IC8vIGluIHRoaXMgY2FzZSwgaXQncyBhcyB0aG91Z2gg
dGhlIGludGVybmFsIGZvcm1hdCBzd2l0Y2ggZmFpbGVkCisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaW1hZ2VTaXplICE9IGdsOjpDb21w
dXRlQ29tcHJlc3NlZFNpemUod2lkdGgsIGhlaWdodCwgZm9ybWF0KSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoeG9mZnNldCAlIDQgIT0gMCB8fCB5b2Zmc2V0
ICUgNCAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOyAvLyB3ZSB3YWl0IHRvIGNoZWNrIHRoZSBvZmZzZXRz
IHVudGlsIHRoaXMgcG9pbnQsIGJlY2F1c2UgdGhlIG11bHRpcGxlLW9mLWZvdXIgcmVzdHJpY3Rp
b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBkb2VzIG5vdCBleGlzdCB1bmxlc3MgRFhUIHRleHR1cmVzIGFyZSBzdXBwb3J0ZWQuCisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJlID0gY29u
dGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlU3ViSW1h
Z2VQYXJhbXMyRCh0cnVlLCB3aWR0aCwgaGVpZ2h0LCB4b2Zmc2V0LCB5b2Zmc2V0LCBsZXZlbCwg
Zm9ybWF0LCBHTF9OT05FLCB0ZXh0dXJlKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHRleHR1cmUtPnN1YkltYWdlQ29tcHJlc3NlZChsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGdsOjpJc0N1YmVt
YXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Z2w6OlRleHR1cmVDdWJlTWFwICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAo
KTsKKyAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGVTdWJJbWFnZVBhcmFtc0N1YmUodHJ1ZSwg
d2lkdGgsIGhlaWdodCwgeG9mZnNldCwgeW9mZnNldCwgdGFyZ2V0LCBsZXZlbCwgZm9ybWF0LCBH
TF9OT05FLCB0ZXh0dXJlKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHRleHR1cmUtPnN1YkltYWdlQ29tcHJlc3NlZCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxs
IGdsQ29weVRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMaW50IGJvcmRlcikKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBH
TGludCBsZXZlbCA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAweCVYLCAiCisgICAgICAg
ICAgIkdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6
ZWkgaGVpZ2h0ID0gJWQsIEdMaW50IGJvcmRlciA9ICVkKSIsCisgICAgICAgICAgdGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CisKKyAg
ICB0cnkKKyAgICB7CisgICAgICAgIGlmICghdmFsaWRJbWFnZVNpemUobGV2ZWwsIHdpZHRoLCBo
ZWlnaHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJvcmRlciAhPSAwKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKGxldmVsID4gY29udGV4dC0+Z2V0TWF4aW11bVRleHR1cmVMZXZlbCgpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAgICAgICAgICAgICAg
aWYgKHdpZHRoID4gKGNvbnRleHQtPmdldE1heGltdW1UZXh0dXJlRGltZW5zaW9uKCkgPj4gbGV2
ZWwpIHx8CisgICAgICAgICAgICAgICAgICAgIGhlaWdodCA+IChjb250ZXh0LT5nZXRNYXhpbXVt
VGV4dHVyZURpbWVuc2lvbigpID4+IGxldmVsKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhU
VVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9ZOgorICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWToKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BP
U0lUSVZFX1o6CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9aOgorICAgICAgICAgICAgICAgIGlmICh3aWR0aCAhPSBoZWlnaHQpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFM
VUUpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IChj
b250ZXh0LT5nZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNpb24oKSA+PiBsZXZlbCkgfHwKKyAg
ICAgICAgICAgICAgICAgICAgaGVpZ2h0ID4gKGNvbnRleHQtPmdldE1heGltdW1DdWJlVGV4dHVy
ZURpbWVuc2lvbigpID4+IGxldmVsKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRl
eHQtPmdldFJlYWRGcmFtZWJ1ZmZlcigpOworCisgICAgICAgICAgICBpZiAoZnJhbWVidWZmZXIt
PmNvbXBsZXRlbmVzcygpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZF
Ul9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY29udGV4dC0+
Z2V0UmVhZEZyYW1lYnVmZmVySGFuZGxlKCkgIT0gMCAmJiBmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxl
cygpICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGds
OjpSZW5kZXJidWZmZXIgKnNvdXJjZSA9IGZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIo
KTsKKyAgICAgICAgICAgIEdMZW51bSBjb2xvcmJ1ZmZlckZvcm1hdCA9IHNvdXJjZS0+Z2V0SW50
ZXJuYWxGb3JtYXQoKTsKKworICAgICAgICAgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHRhYmxl
IDMuOQorICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgICAgICAgICBpZiAoY29sb3Ji
dWZmZXJGb3JtYXQgIT0gR0xfQUxQSEE4X0VYVCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xv
cmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBNCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1
ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX0JHUkE4X0VYVCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1
ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfTFVNSU5BTkNFOgorICAgICAgICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICAgICAg
ICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNTY1ICYmCisgICAgICAgICAgICAgICAg
ICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjhfT0VTICYmCisgICAgICAgICAgICAgICAg
ICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCisgICAgICAgICAgICAgICAgICAg
IGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKKyAgICAgICAgICAgICAgICAgICAg
Y29sb3JidWZmZXJGb3JtYXQgIT0gR0xfQkdSQThfRVhUICYmCisgICAgICAgICAgICAgICAgICAg
IGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUykKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQToK
KyAgICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYKKyAg
ICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgorICAg
ICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9CR1JBOF9FWFQgJiYKKyAg
ICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTKQorICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
OgorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdXBwb3J0c0RYVDFUZXh0dXJlcygpKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
M19BTkdMRToKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+c3VwcG9ydHNEWFQzVGV4dHVy
ZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9T
M1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRFhU
NVRleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01Q
T05FTlQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6CisgICAgICAg
ICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTOgorICAgICAgICAgICAgICBjYXNl
IEdMX0RFUFRIX1NURU5DSUxfT0VTOgorICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RF
TkNJTDhfT0VTOgorICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRGVwdGhU
ZXh0dXJlcygpKQorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7
CisKKyAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11
dGFibGUoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHRleHR1cmUtPmNvcHlJbWFnZShsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZyYW1lYnVmZmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgaWYgKGdsOjpJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDdWJlTWFwICp0ZXh0dXJlID0gY29u
dGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKKworICAgICAgICAgICAgICAgIGlmICghdGV4dHVy
ZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGlmICh0ZXh0dXJlLT5pc0ltbXV0YWJsZSgpKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGV4dHVyZS0+Y29weUltYWdl
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmcmFt
ZWJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3Zv
aWQgX19zdGRjYWxsIGdsQ29weVRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9
IDB4JVgsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQgeW9mZnNl
dCA9ICVkLCAiCisgICAgICAgICAgIkdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVp
IHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQpIiwKKyAgICAgICAgICB0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgaWYgKCFnbDo6SXNJbnRlcm5hbFRleHR1cmVUYXJnZXQodGFyZ2V0KSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0p
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxldmVsIDwgMCB8fCB4b2Zmc2V0IDwgMCB8fCB5
b2Zmc2V0IDwgMCB8fCB3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHhvZmZzZXQg
PCB3aWR0aCB8fCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHlvZmZzZXQg
PCBoZWlnaHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod2lkdGggPT0gMCB8fCBoZWln
aHQgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKwor
ICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGxldmVsID4g
Y29udGV4dC0+Z2V0TWF4aW11bVRleHR1cmVMZXZlbCgpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0
LT5nZXRSZWFkRnJhbWVidWZmZXIoKTsKKworICAgICAgICAgICAgaWYgKGZyYW1lYnVmZmVyLT5j
b21wbGV0ZW5lc3MoKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJf
T1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdl
dFJlYWRGcmFtZWJ1ZmZlckhhbmRsZSgpICE9IDAgJiYgZnJhbWVidWZmZXItPmdldFNhbXBsZXMo
KSAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnbDo6
UmVuZGVyYnVmZmVyICpzb3VyY2UgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7
CisgICAgICAgICAgICBHTGVudW0gY29sb3JidWZmZXJGb3JtYXQgPSBzb3VyY2UtPmdldEludGVy
bmFsRm9ybWF0KCk7CisgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IE5VTEw7Cisg
ICAgICAgICAgICBHTGVudW0gdGV4dHVyZUZvcm1hdCA9IEdMX1JHQkE7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBnbDo6VGV4dHVyZTJEICp0ZXgyZCA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgpOworCisg
ICAgICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZVN1YkltYWdlUGFyYW1zMkQoZmFsc2UsIHdpZHRo
LCBoZWlnaHQsIHhvZmZzZXQsIHlvZmZzZXQsIGxldmVsLCBHTF9OT05FLCBHTF9OT05FLCB0ZXgy
ZCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGVy
cm9yIGFscmVhZHkgcmVnaXN0ZXJlZCBieSB2YWxpZGF0ZVN1YkltYWdlUGFyYW1zCisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRleHR1cmVGb3JtYXQgPSBnbDo6RXh0cmFjdEZv
cm1hdCh0ZXgyZC0+Z2V0SW50ZXJuYWxGb3JtYXQobGV2ZWwpKTsKKyAgICAgICAgICAgICAgICB0
ZXh0dXJlID0gdGV4MmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChnbDo6
SXNDdWJlbWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1hcCAqdGV4Y3ViZSA9IGNvbnRleHQtPmdldFRleHR1cmVD
dWJlTWFwKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXZhbGlkYXRlU3ViSW1hZ2VQYXJhbXND
dWJlKGZhbHNlLCB3aWR0aCwgaGVpZ2h0LCB4b2Zmc2V0LCB5b2Zmc2V0LCB0YXJnZXQsIGxldmVs
LCBHTF9OT05FLCBHTF9OT05FLCB0ZXhjdWJlKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsgLy8gZXJyb3IgYWxyZWFkeSByZWdpc3RlcmVkIGJ5IHZhbGlk
YXRlU3ViSW1hZ2VQYXJhbXMKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGV4
dHVyZUZvcm1hdCA9IGdsOjpFeHRyYWN0Rm9ybWF0KHRleGN1YmUtPmdldEludGVybmFsRm9ybWF0
KHRhcmdldCwgbGV2ZWwpKTsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlID0gdGV4Y3ViZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKworICAgICAgICAg
ICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHRhYmxlIDMuOQorICAgICAgICAgICAgc3dpdGNoICh0
ZXh0dXJlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0FMUEhB
OgorICAgICAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9BTFBIQThfRVhU
ICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYm
CisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYK
KyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgICAgICAg
Y2FzZSBHTF9SR0I6CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdM
X1JHQjU2NSAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9S
R0I4X09FUyAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9S
R0JBNCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1
X0ExICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4
X09FUykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgICAgICAgICBpZiAoY29sb3JidWZm
ZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJG
b3JtYXQgIT0gR0xfUkdCNV9BMSAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SR0JBOF9PRVMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9O
RU5UOgorICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX1NURU5DSUxfT0VTOgorICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXh0dXJlLT5jb3B5
U3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhl
aWdodCwgZnJhbWVidWZmZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK0dMdWludCBfX3N0ZGNhbGwgZ2xDcmVhdGVQcm9ncmFtKHZvaWQp
Cit7CisgICAgRVZFTlQoIigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNv
bnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5jcmVhdGVQcm9n
cmFtKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAwKTsKKyAgICB9
CisKKyAgICByZXR1cm4gMDsKK30KKworR0x1aW50IF9fc3RkY2FsbCBnbENyZWF0ZVNoYWRlcihH
TGVudW0gdHlwZSkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0eXBlID0gMHglWCkiLCB0eXBlKTsK
KworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0
Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAg
ICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNl
IEdMX0ZSQUdNRU5UX1NIQURFUjoKKyAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfU0hBREVS
OgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5jcmVhdGVTaGFkZXIodHlwZSk7Cisg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX0VOVU0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAg
IGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgMCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsQ3VsbEZhY2UoR0xlbnVtIG1vZGUpCit7CisgICAgRVZFTlQoIihHTGVudW0g
bW9kZSA9IDB4JVgpIiwgbW9kZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
bW9kZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfRlJPTlQ6CisgICAgICAgICAgY2Fz
ZSBHTF9CQUNLOgorICAgICAgICAgIGNhc2UgR0xfRlJPTlRfQU5EX0JBQ0s6CisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKKworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0Q3VsbE1vZGUobW9kZSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9F
TlVNKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAg
eworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30K
Kwordm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVCdWZmZXJzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50
KiBidWZmZXJzKQoreworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCog
YnVmZmVycyA9IDB4JTAuOHApIiwgbiwgYnVmZmVycyk7CisKKyAgICB0cnkKKyAgICB7CisgICAg
ICAgIGlmIChuIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZUJ1ZmZlcihidWZmZXJzW2ld
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVGZW5jZXNOVihHTHNpemVpIG4s
IGNvbnN0IEdMdWludCogZmVuY2VzKQoreworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIGNv
bnN0IEdMdWludCogZmVuY2VzID0gMHglMC44cCkiLCBuLCBmZW5jZXMpOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBpZiAobiA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkr
KykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kZWxldGVGZW5jZShm
ZW5jZXNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbERlbGV0ZUZyYW1lYnVmZmVy
cyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCogZnJhbWVidWZmZXJzKQoreworICAgIEVWRU5UKCIo
R0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCogZnJhbWVidWZmZXJzID0gMHglMC44cCkiLCBu
LCBmcmFtZWJ1ZmZlcnMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAobiA8IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZnJhbWVidWZmZXJzW2ldICE9IDApCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcnNb
aV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEZWxl
dGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0g
PSAlZCkiLCBwcm9ncmFtKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHByb2dyYW0g
PT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5n
ZXRQcm9ncmFtKHByb2dyYW0pKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmKGNv
bnRleHQtPmdldFNoYWRlcihwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29udGV4dC0+ZGVs
ZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJh
ZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVRdWVyaWVzRVhUKEdMc2l6
ZWkgbiwgY29uc3QgR0x1aW50ICppZHMpCit7CisgICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwg
Y29uc3QgR0x1aW50ICppZHMgPSAweCUwLjhwKSIsIG4sIGlkcyk7CisKKyAgICB0cnkKKyAgICB7
CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVF1ZXJ5KGlkc1tp
XSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRGVsZXRlUmVuZGVyYnVmZmVycyhHTHNp
emVpIG4sIGNvbnN0IEdMdWludCogcmVuZGVyYnVmZmVycykKK3sKKyAgICBFVkVOVCgiKEdMc2l6
ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMgPSAweCUwLjhwKSIsIG4sIHJl
bmRlcmJ1ZmZlcnMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAobiA8IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0
Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5kZWxldGVSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyc1tpXSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9
Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRGVsZXRlU2hhZGVyKEdMdWludCBzaGFkZXIpCit7Cisg
ICAgRVZFTlQoIihHTHVpbnQgc2hhZGVyID0gJWQpIiwgc2hhZGVyKTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgaWYgKHNoYWRlciA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRO
b25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIWNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGlmKGNvbnRleHQtPmdldFByb2dyYW0oc2hhZGVyKSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgY29udGV4dC0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgICAgIH0KKyAgICB9
CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRGVs
ZXRlVGV4dHVyZXMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHRleHR1cmVzKQoreworICAgIEVW
RU5UKCIoR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCogdGV4dHVyZXMgPSAweCUwLjhwKSIs
IG4sIHRleHR1cmVzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKG4gPCAwKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwor
ICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgaWYgKHRleHR1cmVzW2ldICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5kZWxldGVUZXh0dXJlKHRleHR1cmVzW2ldKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRGVwdGhGdW5jKEdMZW51bSBm
dW5jKQoreworICAgIEVWRU5UKCIoR0xlbnVtIGZ1bmMgPSAweCVYKSIsIGZ1bmMpOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKGZ1bmMpCisgICAgICAgIHsKKyAgICAgICAgICBj
YXNlIEdMX05FVkVSOgorICAgICAgICAgIGNhc2UgR0xfQUxXQVlTOgorICAgICAgICAgIGNhc2Ug
R0xfTEVTUzoKKyAgICAgICAgICBjYXNlIEdMX0xFUVVBTDoKKyAgICAgICAgICBjYXNlIEdMX0VR
VUFMOgorICAgICAgICAgIGNhc2UgR0xfR1JFQVRFUjoKKyAgICAgICAgICBjYXNlIEdMX0dFUVVB
TDoKKyAgICAgICAgICBjYXNlIEdMX05PVEVRVUFMOgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9F
TlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnNldERlcHRoRnVuYyhmdW5jKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEZXB0
aE1hc2soR0xib29sZWFuIGZsYWcpCit7CisgICAgRVZFTlQoIihHTGJvb2xlYW4gZmxhZyA9ICVk
KSIsIGZsYWcpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXREZXB0aE1hc2soZmxhZyAhPSBHTF9GQUxT
RSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisK
K3ZvaWQgX19zdGRjYWxsIGdsRGVwdGhSYW5nZWYoR0xjbGFtcGYgek5lYXIsIEdMY2xhbXBmIHpG
YXIpCit7CisgICAgRVZFTlQoIihHTGNsYW1wZiB6TmVhciA9ICVmLCBHTGNsYW1wZiB6RmFyID0g
JWYpIiwgek5lYXIsIHpGYXIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXREZXB0aFJhbmdlKHpOZWFy
LCB6RmFyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0K
K30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEZXRhY2hTaGFkZXIoR0x1aW50IHByb2dyYW0sIEdMdWlu
dCBzaGFkZXIpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTHVpbnQgc2hh
ZGVyID0gJWQpIiwgcHJvZ3JhbSwgc2hhZGVyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAg
ICBpZiAoY29udGV4dCkKKyAgICAgICAgeworCisgICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJv
Z3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgICAgICBn
bDo6U2hhZGVyICpzaGFkZXJPYmplY3QgPSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGdsOjpTaGFkZXIgKnNoYWRlckJ5UHJvZ3JhbUhhbmRsZTsKKyAg
ICAgICAgICAgICAgICBzaGFkZXJCeVByb2dyYW1IYW5kbGUgPSBjb250ZXh0LT5nZXRTaGFkZXIo
cHJvZ3JhbSk7CisgICAgICAgICAgICAgICAgaWYgKCFzaGFkZXJCeVByb2dyYW1IYW5kbGUpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmICghc2hhZGVyT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtQnlTaGFkZXJIYW5kbGUgPSBjb250ZXh0LT5n
ZXRQcm9ncmFtKHNoYWRlcik7CisgICAgICAgICAgICAgICAgaWYgKCFwcm9ncmFtQnlTaGFkZXJI
YW5kbGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+ZGV0YWNoU2hhZGVy
KHNoYWRlck9iamVjdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxs
IGdsRGlzYWJsZShHTGVudW0gY2FwKQoreworICAgIEVWRU5UKCIoR0xlbnVtIGNhcCA9IDB4JVgp
IiwgY2FwKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgc3dpdGNoIChjYXApCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgIGNhc2UgR0xfQ1VMTF9GQUNFOiAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRDdWxsRmFj
ZShmYWxzZSk7ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9QT0xZ
R09OX09GRlNFVF9GSUxMOiAgICAgIGNvbnRleHQtPnNldFBvbHlnb25PZmZzZXRGaWxsKGZhbHNl
KTsgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9UT19DT1ZF
UkFHRTogY29udGV4dC0+c2V0U2FtcGxlQWxwaGFUb0NvdmVyYWdlKGZhbHNlKTsgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFOiAgICAgICAgICBjb250ZXh0LT5z
ZXRTYW1wbGVDb3ZlcmFnZShmYWxzZSk7ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9TQ0lTU09SX1RFU1Q6ICAgICAgICAgICAgIGNvbnRleHQtPnNldFNjaXNzb3JUZXN0KGZh
bHNlKTsgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfVEVT
VDogICAgICAgICAgICAgY29udGV4dC0+c2V0U3RlbmNpbFRlc3QoZmFsc2UpOyAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfVEVTVDogICAgICAgICAgICAgICBj
b250ZXh0LT5zZXREZXB0aFRlc3QoZmFsc2UpOyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9CTEVORDogICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEJsZW5k
KGZhbHNlKTsgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0RJ
VEhFUjogICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RGl0aGVyKGZhbHNlKTsgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpCit7CisgICAgRVZF
TlQoIihHTHVpbnQgaW5kZXggPSAlZCkiLCBpbmRleCk7CisKKyAgICB0cnkKKyAgICB7CisgICAg
ICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisK
KyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsK
KworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+
c2V0RW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgsIGZhbHNlKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xE
cmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkKK3sKKyAg
ICBFVkVOVCgiKEdMZW51bSBtb2RlID0gMHglWCwgR0xpbnQgZmlyc3QgPSAlZCwgR0xzaXplaSBj
b3VudCA9ICVkKSIsIG1vZGUsIGZpcnN0LCBjb3VudCk7CisKKyAgICB0cnkKKyAgICB7CisgICAg
ICAgIGlmIChjb3VudCA8IDAgfHwgZmlyc3QgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAg
ICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+ZHJhd0FycmF5
cyhtb2RlLCBmaXJzdCwgY291bnQsIDApOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbERyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkg
cHJpbWNvdW50KQoreworICAgIEVWRU5UKCIoR0xlbnVtIG1vZGUgPSAweCVYLCBHTGludCBmaXJz
dCA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMc2l6ZWkgcHJpbWNvdW50ID0gJWQpIiwgbW9k
ZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBp
ZiAoY291bnQgPCAwIHx8IGZpcnN0IDwgMCB8fCBwcmltY291bnQgPCAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHByaW1jb3VudCA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAg
ICAgIGlmIChjb250ZXh0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2
b2lkIF9fc3RkY2FsbCBnbERyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwg
R0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogaW5kaWNlcykKK3sKKyAgICBFVkVOVCgiKEdMZW51
bSBtb2RlID0gMHglWCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9IDB4JVgsIGNv
bnN0IEdMdm9pZCogaW5kaWNlcyA9IDB4JTAuOHApIiwKKyAgICAgICAgICBtb2RlLCBjb3VudCwg
dHlwZSwgaW5kaWNlcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA8IDAp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRO
b25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9J
TlQ6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0czMyYml0SW5kaWNlcygp
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX0VOVU0pOyAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNl
cywgMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9
CisKK3ZvaWQgX19zdGRjYWxsIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0xlbnVtIG1v
ZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIEdM
c2l6ZWkgcHJpbWNvdW50KQoreworICAgIEVWRU5UKCIoR0xlbnVtIG1vZGUgPSAweCVYLCBHTHNp
emVpIGNvdW50ID0gJWQsIEdMZW51bSB0eXBlID0gMHglWCwgY29uc3QgR0x2b2lkKiBpbmRpY2Vz
ID0gMHglMC44cCwgR0xzaXplaSBwcmltY291bnQgPSAlZCkiLAorICAgICAgICAgIG1vZGUsIGNv
dW50LCB0eXBlLCBpbmRpY2VzLCBwcmltY291bnQpOworCisgICAgdHJ5CisgICAgeworICAgICAg
ICBpZiAoY291bnQgPCAwIHx8IHByaW1jb3VudCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAocHJpbWNvdW50ID4gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICAgICAgaWYgKGNv
bnRleHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToK
KyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHMzMmJpdEluZGljZXMoKSkK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX0VOVU0pOyAgICAKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3
RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIHByaW1jb3VudCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9
CisKK3ZvaWQgX19zdGRjYWxsIGdsRW5hYmxlKEdMZW51bSBjYXApCit7CisgICAgRVZFTlQoIihH
TGVudW0gY2FwID0gMHglWCkiLCBjYXApOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlm
IChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGNhcCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAgICAgICAgICAgIGNv
bnRleHQtPnNldEN1bGxGYWNlKHRydWUpOyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZTRVRfRklMTDogICAgICBjb250ZXh0LT5zZXRQb2x5Z29u
T2Zmc2V0RmlsbCh0cnVlKTsgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBM
RV9BTFBIQV9UT19DT1ZFUkFHRTogY29udGV4dC0+c2V0U2FtcGxlQWxwaGFUb0NvdmVyYWdlKHRy
dWUpOyBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TQU1QTEVfQ09WRVJBR0U6ICAgICAg
ICAgIGNvbnRleHQtPnNldFNhbXBsZUNvdmVyYWdlKHRydWUpOyAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfU0NJU1NPUl9URVNUOiAgICAgICAgICAgICBjb250ZXh0LT5zZXRT
Y2lzc29yVGVzdCh0cnVlKTsgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdM
X1NURU5DSUxfVEVTVDogICAgICAgICAgICAgY29udGV4dC0+c2V0U3RlbmNpbFRlc3QodHJ1ZSk7
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9URVNUOiAgICAg
ICAgICAgICAgIGNvbnRleHQtPnNldERlcHRoVGVzdCh0cnVlKTsgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgR0xfQkxFTkQ6ICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5zZXRCbGVuZCh0cnVlKTsgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIEdMX0RJVEhFUjogICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RGl0aGVyKHRydWUp
OyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3Zv
aWQgX19zdGRjYWxsIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0x1aW50IGluZGV4KQorewor
ICAgIEVWRU5UKCIoR0x1aW50IGluZGV4ID0gJWQpIiwgaW5kZXgpOworCisgICAgdHJ5CisgICAg
eworICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnRleHQtPnNldEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4LCB0cnVlKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNh
bGwgZ2xFbmRRdWVyeUVYVChHTGVudW0gdGFyZ2V0KQoreworICAgIEVWRU5UKCJHTGVudW0gdGFy
Z2V0ID0gMHglWCkiLCB0YXJnZXQpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBzd2l0Y2gg
KHRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VE
X0VYVDogCisgICAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZF
X0VYVDoKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDogCisgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmVu
ZFF1ZXJ5KHRhcmdldCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
KyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRmluaXNoRmVuY2VOVihHTHVpbnQgZmVuY2Up
Cit7CisgICAgRVZFTlQoIihHTHVpbnQgZmVuY2UgPSAlZCkiLCBmZW5jZSk7CisKKyAgICB0cnkK
KyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
OjpGZW5jZSogZmVuY2VPYmplY3QgPSBjb250ZXh0LT5nZXRGZW5jZShmZW5jZSk7CisKKyAgICAg
ICAgICAgIGlmIChmZW5jZU9iamVjdCA9PSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmZW5jZU9iamVjdC0+ZmluaXNoRmVuY2UoKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNh
bGwgZ2xGaW5pc2godm9pZCkKK3sKKyAgICBFVkVOVCgiKCkiKTsKKworICAgIHRyeQorICAgIHsK
KyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsK
KworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+
c3luYyh0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
IH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xGbHVzaCh2b2lkKQoreworICAgIEVWRU5UKCIoKSIp
OworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb250ZXh0LT5zeW5jKGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHJl
bmRlcmJ1ZmZlcnRhcmdldCwgR0x1aW50IHJlbmRlcmJ1ZmZlcikKK3sKKyAgICBFVkVOVCgiKEdM
ZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gYXR0YWNobWVudCA9IDB4JVgsIEdMZW51bSByZW5k
ZXJidWZmZXJ0YXJnZXQgPSAweCVYLCAiCisgICAgICAgICAgIkdMdWludCByZW5kZXJidWZmZXIg
PSAlZCkiLCB0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVm
ZmVyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKCh0YXJnZXQgIT0gR0xfRlJBTUVC
VUZGRVIgJiYgdGFyZ2V0ICE9IEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUgJiYgdGFyZ2V0ICE9
IEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUpCisgICAgICAgICAgICB8fCAocmVuZGVyYnVmZmVy
dGFyZ2V0ICE9IEdMX1JFTkRFUkJVRkZFUiAmJiByZW5kZXJidWZmZXIgIT0gMCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
OjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBOVUxMOworICAgICAgICAgICAgR0x1aW50IGZy
YW1lYnVmZmVySGFuZGxlID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfUkVBRF9G
UkFNRUJVRkZFUl9BTkdMRSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmcmFtZWJ1
ZmZlciA9IGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGZy
YW1lYnVmZmVySGFuZGxlID0gY29udGV4dC0+Z2V0UmVhZEZyYW1lYnVmZmVySGFuZGxlKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICAg
ICAgICAgICAgICBmcmFtZWJ1ZmZlckhhbmRsZSA9IGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZl
ckhhbmRsZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWZyYW1lYnVmZmVy
IHx8IChmcmFtZWJ1ZmZlckhhbmRsZSA9PSAwICYmIHJlbmRlcmJ1ZmZlciAhPSAwKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQgPj0g
R0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUICYmIGF0dGFjaG1lbnQgPD0gR0xfQ09MT1JfQVRUQUNI
TUVOVDE1X0VYVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgY29sb3JBdHRhY2htZW50ID0gKGF0dGFjaG1lbnQgLSBHTF9DT0xPUl9BVFRBQ0hNRU5U
MF9FWFQpOworCisgICAgICAgICAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudCA+PSBjb250ZXh0
LT5nZXRNYXhpbXVtUmVuZGVyVGFyZ2V0cygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlci0+c2V0Q29sb3JidWZmZXIo
Y29sb3JBdHRhY2htZW50LCBHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
c3dpdGNoIChhdHRhY2htZW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
IGNhc2UgR0xfREVQVEhfQVRUQUNITUVOVDoKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVidWZm
ZXItPnNldERlcHRoYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxf
QVRUQUNITUVOVDoKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXItPnNldFN0ZW5jaWxi
dWZmZXIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2Mm
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAg
ICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJl
LCBHTGludCBsZXZlbCkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVu
dW0gYXR0YWNobWVudCA9IDB4JVgsIEdMZW51bSB0ZXh0YXJnZXQgPSAweCVYLCAiCisgICAgICAg
ICAgIkdMdWludCB0ZXh0dXJlID0gJWQsIEdMaW50IGxldmVsID0gJWQpIiwgdGFyZ2V0LCBhdHRh
Y2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgaWYgKHRhcmdldCAhPSBHTF9GUkFNRUJVRkZFUiAmJiB0YXJnZXQgIT0gR0xfRFJBV19G
UkFNRUJVRkZFUl9BTkdMRSAmJiB0YXJnZXQgIT0gR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0p
OworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9u
TG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGF0dGFjaG1lbnQgPj0gR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUICYmIGF0dGFj
aG1lbnQgPD0gR0xfQ09MT1JfQVRUQUNITUVOVDE1X0VYVCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50ID0gKGF0dGFjaG1l
bnQgLSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQpOworCisgICAgICAgICAgICAgICAgaWYgKGNv
bG9yQXR0YWNobWVudCA+PSBjb250ZXh0LT5nZXRNYXhpbXVtUmVuZGVyVGFyZ2V0cygpKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChhdHRhY2ht
ZW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhf
QVRUQUNITUVOVDoKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5U
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0ZXh0
dXJlID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGV4dGFyZ2V0ID0gR0xf
Tk9ORTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4ID0gY29udGV4dC0+Z2V0VGV4dHVyZSh0ZXh0
dXJlKTsKKworICAgICAgICAgICAgICAgIGlmICh0ZXggPT0gTlVMTCkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHN3aXRjaCAodGV4
dGFyZ2V0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV8yRDoKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHRleC0+Z2V0VGFyZ2V0KCkgIT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlMkQgKnRleDJkID0gc3RhdGljX2Nhc3Q8Z2w6OlRl
eHR1cmUyRCAqPih0ZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleDJkLT5pc0Nv
bXByZXNzZWQoMCkpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWDoKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9D
VUJFX01BUF9ORUdBVElWRV9YOgorICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NV
QkVfTUFQX1BPU0lUSVZFX1k6CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWToKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9aOgorICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1o6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0ZXgtPmdldFRhcmdldCgpICE9IEdMX1RFWFRVUkVfQ1VCRV9NQVApCisgICAg
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZUN1YmVNYXAgKnRleGN1YmUg
PSBzdGF0aWNfY2FzdDxnbDo6VGV4dHVyZUN1YmVNYXAgKj4odGV4KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh0ZXhjdWJlLT5pc0NvbXByZXNzZWQodGV4dGFyZ2V0LCBsZXZlbCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgaWYgKGxldmVsICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2w6OkZyYW1lYnVmZmVy
ICpmcmFtZWJ1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICBHTHVpbnQgZnJhbWVidWZmZXJIYW5k
bGUgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FO
R0xFKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyID0gY29udGV4
dC0+Z2V0UmVhZEZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICAgICAgZnJhbWVidWZmZXJIYW5k
bGUgPSBjb250ZXh0LT5nZXRSZWFkRnJhbWVidWZmZXJIYW5kbGUoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmcmFtZWJ1
ZmZlciA9IGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGZy
YW1lYnVmZmVySGFuZGxlID0gY29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlckhhbmRsZSA9PSAwIHx8
ICFmcmFtZWJ1ZmZlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKGF0dGFjaG1lbnQgPj0gR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUICYmIGF0dGFjaG1l
bnQgPD0gR0xfQ09MT1JfQVRUQUNITUVOVDE1X0VYVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50ID0gKGF0dGFjaG1lbnQg
LSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQpOworCisgICAgICAgICAgICAgICAgaWYgKGNvbG9y
QXR0YWNobWVudCA+PSBjb250ZXh0LT5nZXRNYXhpbXVtUmVuZGVyVGFyZ2V0cygpKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmcmFtZWJ1
ZmZlci0+c2V0Q29sb3JidWZmZXIoY29sb3JBdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHN3aXRjaCAoYXR0YWNobWVudCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1FTlQ6ICAgZnJhbWVidWZmZXItPnNldERl
cHRoYnVmZmVyKHRleHRhcmdldCwgdGV4dHVyZSk7ICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICBjYXNlIEdMX1NURU5DSUxfQVRUQUNITUVOVDogZnJhbWVidWZmZXItPnNldFN0ZW5jaWxidWZm
ZXIodGV4dGFyZ2V0LCB0ZXh0dXJlKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAg
ICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQor
fQorCit2b2lkIF9fc3RkY2FsbCBnbEZyb250RmFjZShHTGVudW0gbW9kZSkKK3sKKyAgICBFVkVO
VCgiKEdMZW51bSBtb2RlID0gMHglWCkiLCBtb2RlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgc3dpdGNoIChtb2RlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9DVzoKKyAgICAg
ICAgICBjYXNlIEdMX0NDVzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgICAgICAg
ICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5zZXRGcm9udEZhY2UobW9kZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZW5CdWZm
ZXJzKEdMc2l6ZWkgbiwgR0x1aW50KiBidWZmZXJzKQoreworICAgIEVWRU5UKCIoR0xzaXplaSBu
ID0gJWQsIEdMdWludCogYnVmZmVycyA9IDB4JTAuOHApIiwgbiwgYnVmZmVycyk7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bjsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJ1ZmZlcnNbaV0gPSBjb250
ZXh0LT5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZW5lcmF0
ZU1pcG1hcChHTGVudW0gdGFyZ2V0KQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4
JVgpIiwgdGFyZ2V0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkK
KyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlMkQgKnRleDJkID0gY29udGV4dC0+Z2V0VGV4dHVy
ZTJEKCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRleDJkLT5pc0NvbXByZXNzZWQoMCkp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZXgyZC0+aXNEZXB0aCgwKSkKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICB0ZXgyZC0+Z2VuZXJhdGVNaXBtYXBzKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VC
RV9NQVA6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVy
ZUN1YmVNYXAgKnRleGN1YmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ3ViZU1hcCgpOworCisgICAg
ICAgICAgICAgICAgICAgIGlmICh0ZXhjdWJlLT5pc0NvbXByZXNzZWQoR0xfVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9YLCAwKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0ZXhjdWJlLT5nZW5lcmF0
ZU1pcG1hcHMoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdlbkZl
bmNlc05WKEdMc2l6ZWkgbiwgR0x1aW50KiBmZW5jZXMpCit7CisgICAgRVZFTlQoIihHTHNpemVp
IG4gPSAlZCwgR0x1aW50KiBmZW5jZXMgPSAweCUwLjhwKSIsIG4sIGZlbmNlcyk7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bjsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZlbmNlc1tpXSA9IGNvbnRl
eHQtPmNyZWF0ZUZlbmNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2VuRnJhbWVi
dWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50KiBmcmFtZWJ1ZmZlcnMpCit7CisgICAgRVZFTlQoIihH
THNpemVpIG4gPSAlZCwgR0x1aW50KiBmcmFtZWJ1ZmZlcnMgPSAweCUwLjhwKSIsIG4sIGZyYW1l
YnVmZmVycyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGZyYW1lYnVmZmVyc1tpXSA9IGNvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9
CisKK3ZvaWQgX19zdGRjYWxsIGdsR2VuUXVlcmllc0VYVChHTHNpemVpIG4sIEdMdWludCogaWRz
KQoreworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIEdMdWludCogaWRzID0gMHglMC44cCki
LCBuLCBpZHMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAobiA8IDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAg
ICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZHNbaV0gPSBjb250ZXh0LT5jcmVhdGVRdWVyeSgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbEdlblJlbmRlcmJ1ZmZlcnMoR0xzaXplaSBuLCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMp
Cit7CisgICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgR0x1aW50KiByZW5kZXJidWZmZXJzID0g
MHglMC44cCkiLCBuLCByZW5kZXJidWZmZXJzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAg
aWYgKG4gPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVyc1tpXSA9IGNvbnRleHQtPmNyZWF0ZVJl
bmRlcmJ1ZmZlcigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdlblRleHR1cmVzKEdM
c2l6ZWkgbiwgR0x1aW50KiB0ZXh0dXJlcykKK3sKKyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVk
LCBHTHVpbnQqIHRleHR1cmVzID0gIDB4JTAuOHApIiwgbiwgdGV4dHVyZXMpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBpZiAobiA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlm
IChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47
IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlc1tpXSA9IGNvbnRl
eHQtPmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRBY3Rp
dmVBdHRyaWIoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBH
THNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSkK
K3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMdWludCBpbmRleCA9ICVkLCBH
THNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMC44cCwgIgorICAgICAg
ICAgICJHTGludCAqc2l6ZSA9IDB4JTAuOHAsIEdMZW51bSAqdHlwZSA9ICUwLjhwLCBHTGNoYXIg
Km5hbWUgPSAlMC44cCkiLAorICAgICAgICAgIHByb2dyYW0sIGluZGV4LCBidWZzaXplLCBsZW5n
dGgsIHNpemUsIHR5cGUsIG5hbWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoYnVm
c2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdl
dFByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dy
YW0pKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoaW5kZXggPj0gKEdMdWludClwcm9ncmFtT2JqZWN0
LT5nZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZUF0dHJpYnV0ZShpbmRleCwgYnVm
c2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRBY3RpdmVV
bmlmb3JtKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xz
aXplaSogbGVuZ3RoLCBHTGludCogc2l6ZSwgR0xlbnVtKiB0eXBlLCBHTGNoYXIqIG5hbWUpCit7
CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTHVpbnQgaW5kZXggPSAlZCwgR0xz
aXplaSBidWZzaXplID0gJWQsICIKKyAgICAgICAgICAiR0xzaXplaSogbGVuZ3RoID0gMHglMC44
cCwgR0xpbnQqIHNpemUgPSAweCUwLjhwLCBHTGVudW0qIHR5cGUgPSAweCUwLjhwLCBHTGNoYXIq
IG5hbWUgPSAweCUwLjhwKSIsCisgICAgICAgICAgcHJvZ3JhbSwgaW5kZXgsIGJ1ZnNpemUsIGxl
bmd0aCwgc2l6ZSwgdHlwZSwgbmFtZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChi
dWZzaXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+
Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJv
Z3JhbSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSAoR0x1aW50KXByb2dyYW1PYmpl
Y3QtPmdldEFjdGl2ZVVuaWZvcm1Db3VudCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm0oaW5kZXgsIGJ1ZnNp
emUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwgbmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0QXR0YWNoZWRT
aGFkZXJzKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIG1heGNvdW50LCBHTHNpemVpKiBjb3VudCwg
R0x1aW50KiBzaGFkZXJzKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xz
aXplaSBtYXhjb3VudCA9ICVkLCBHTHNpemVpKiBjb3VudCA9IDB4JTAuOHAsIEdMdWludCogc2hh
ZGVycyA9IDB4JTAuOHApIiwKKyAgICAgICAgICBwcm9ncmFtLCBtYXhjb3VudCwgY291bnQsIHNo
YWRlcnMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAobWF4Y291bnQgPCAwKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwor
ICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dy
YW0pOworCisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlcihwcm9ncmFtKSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcmV0dXJuIHByb2dyYW1PYmplY3QtPmdldEF0dGFjaGVkU2hhZGVycyhtYXhjb3Vu
dCwgY291bnQsIHNoYWRlcnMpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgfQorfQorCitpbnQgX19zdGRjYWxsIGdsR2V0QXR0cmliTG9jYXRpb24oR0x1aW50
IHByb2dyYW0sIGNvbnN0IEdMY2hhciogbmFtZSkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9n
cmFtID0gJWQsIGNvbnN0IEdMY2hhciogbmFtZSA9ICVzKSIsIHByb2dyYW0sIG5hbWUpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisKKyAgICAg
ICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShw
cm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAtMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgLTEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBw
cm9ncmFtT2JqZWN0LT5nZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dy
YW1PYmplY3QtPmlzTGlua2VkKCkgfHwgIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgLTEp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0
QXR0cmlidXRlTG9jYXRpb24obmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCAtMSk7CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCit2b2lkIF9fc3RkY2Fs
bCBnbEdldEJvb2xlYW52KEdMZW51bSBwbmFtZSwgR0xib29sZWFuKiBwYXJhbXMpCit7CisgICAg
RVZFTlQoIihHTGVudW0gcG5hbWUgPSAweCVYLCBHTGJvb2xlYW4qIHBhcmFtcyA9IDB4JTAuOHAp
IiwgIHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIShjb250ZXh0LT5nZXRCb29sZWFudihw
bmFtZSwgcGFyYW1zKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgR0xlbnVtIG5h
dGl2ZVR5cGU7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG51bVBhcmFtcyA9IDA7Cisg
ICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRRdWVyeVBhcmFtZXRlckluZm8ocG5hbWUs
ICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICAgICAgaWYgKG51bVBhcmFt
cyA9PSAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGl0IGlzIGtub3duIHRoYXQg
dGhlIHBuYW1lIGlzIHZhbGlkLCBidXQgdGhlcmUgYXJlIG5vIHBhcmFtZXRlcnMgdG8gcmV0dXJu
CisKKyAgICAgICAgICAgICAgICBpZiAobmF0aXZlVHlwZSA9PSBHTF9GTE9BVCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKmZsb2F0UGFyYW1zID0gTlVM
TDsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXRQYXJhbXMgPSBuZXcgR0xmbG9hdFtudW1QYXJh
bXNdOworCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgZmxv
YXRQYXJhbXMpOworCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgbnVtUGFyYW1zOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChmbG9hdFBhcmFtc1tpXSA9PSAwLjBmKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtc1tpXSA9IEdMX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IEdMX1RSVUU7
CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBkZWxldGUgW10g
ZmxvYXRQYXJhbXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYg
KG5hdGl2ZVR5cGUgPT0gR0xfSU5UKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKmludFBhcmFtcyA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGludFBh
cmFtcyA9IG5ldyBHTGludFtudW1QYXJhbXNdOworCisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmdldEludGVnZXJ2KHBuYW1lLCBpbnRQYXJhbXMpOworCisgICAgICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1zOyArK2kpCisgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnRQYXJhbXNbaV0gPT0g
MCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbaV0gPSBHTF9GQUxTRTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXNbaV0gPSBHTF9UUlVFOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgZGVsZXRlIFtdIGludFBhcmFtczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9
CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdl
dCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIs
IHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYg
KGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlcjsKKwor
ICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
IGNhc2UgR0xfQVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQt
PmdldEFycmF5QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVI6CisgICAgICAgICAgICAgICAgYnVmZmVyID0g
Y29udGV4dC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVN
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgLy8gQSBudWxsIGJ1ZmZlciBtZWFucyB0aGF0ICIwIiBpcyBi
b3VuZCB0byB0aGUgcmVxdWVzdGVkIGJ1ZmZlciB0YXJnZXQKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9CVUZGRVJfVVNBR0U6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGJ1ZmZlci0+dXNh
Z2UoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9CVUZG
RVJfU0laRToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gYnVmZmVyLT5zaXplKCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKworR0xlbnVtIF9fc3RkY2FsbCBnbEdldEVy
cm9yKHZvaWQpCit7CisgICAgRVZFTlQoIigpIik7CisKKyAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXRDb250ZXh0KCk7CisKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAg
IHJldHVybiBjb250ZXh0LT5nZXRFcnJvcigpOworICAgIH0KKworICAgIHJldHVybiBHTF9OT19F
UlJPUjsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRGZW5jZWl2TlYoR0x1aW50IGZlbmNlLCBH
TGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTHVpbnQgZmVuY2Ug
PSAlZCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQgKnBhcmFtcyA9IDB4JTAuOHApIiwgZmVu
Y2UsIHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgIAorICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlm
IChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6RmVuY2UgKmZlbmNlT2JqZWN0
ID0gY29udGV4dC0+Z2V0RmVuY2UoZmVuY2UpOworCisgICAgICAgICAgICBpZiAoZmVuY2VPYmpl
Y3QgPT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZmVuY2VPYmplY3QtPmdldEZlbmNlaXYocG5hbWUsIHBhcmFtcyk7CisgICAgICAgIH0KKyAgICB9
CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0
RmxvYXR2KEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0xl
bnVtIHBuYW1lID0gMHglWCwgR0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLCBwbmFtZSwgcGFy
YW1zKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKCEoY29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCBwYXJhbXMpKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBHTGVudW0gbmF0aXZlVHlwZTsKKyAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgICAgICAgICBp
ZiAoIWNvbnRleHQtPmdldFF1ZXJ5UGFyYW1ldGVySW5mbyhwbmFtZSwgJm5hdGl2ZVR5cGUsICZu
dW1QYXJhbXMpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfRU5VTSk7CisKKyAgICAgICAgICAgICAgICBpZiAobnVtUGFyYW1zID09IDApCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsgLy8gaXQgaXMga25vd24gdGhhdCB0aGUgcG5hbWUgaXMgdmFs
aWQsIGJ1dCB0aGF0IHRoZXJlIGFyZSBubyBwYXJhbWV0ZXJzIHRvIHJldHVybi4KKworICAgICAg
ICAgICAgICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0JPT0wpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gKmJvb2xQYXJhbXMgPSBOVUxMOworICAgICAg
ICAgICAgICAgICAgICBib29sUGFyYW1zID0gbmV3IEdMYm9vbGVhbltudW1QYXJhbXNdOworCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCBib29sUGFyYW1z
KTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51
bVBhcmFtczsgKytpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYm9vbFBhcmFtc1tpXSA9PSBHTF9GQUxTRSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXNbaV0gPSAwLjBmOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IDEuMGY7CisgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBkZWxldGUgW10gYm9vbFBhcmFtczsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobmF0aXZlVHlwZSA9
PSBHTF9JTlQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBHTGludCAq
aW50UGFyYW1zID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgaW50UGFyYW1zID0gbmV3IEdM
aW50W251bVBhcmFtc107CisKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdl
cnYocG5hbWUsIGludFBhcmFtcyk7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gKEdMZmxvYXQpaW50UGFyYW1zW2ld
OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFtd
IGludFBhcmFtczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxs
IGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIGF0dGFjaG1lbnQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKK3sKKyAgICBFVkVO
VCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gYXR0YWNobWVudCA9IDB4JVgsIEdMZW51
bSBwbmFtZSA9IDB4JVgsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgICAgdGFy
Z2V0LCBhdHRhY2htZW50LCBwbmFtZSwgcGFyYW1zKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBH
TF9GUkFNRUJVRkZFUiAmJiB0YXJnZXQgIT0gR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSAmJiB0
YXJnZXQgIT0gR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBOVUxMOwor
ICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmKGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1ZmZl
ckhhbmRsZSgpID09IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1
ZmZlcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKCkg
PT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVyKCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50VHlwZTsKKyAgICAg
ICAgICAgIEdMdWludCBhdHRhY2htZW50SGFuZGxlOworCisgICAgICAgICAgICBpZiAoYXR0YWNo
bWVudCA+PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQgJiYgYXR0YWNobWVudCA8PSBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMTVfRVhUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAoYXR0YWNobWVudCAtIEdMX0NPTE9SX0FU
VEFDSE1FTlQwX0VYVCk7CisKKyAgICAgICAgICAgICAgICBpZiAoY29sb3JBdHRhY2htZW50ID49
IGNvbnRleHQtPmdldE1heGltdW1SZW5kZXJUYXJnZXRzKCkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYXR0YWNobWVudFR5cGUgPSBmcmFt
ZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXJUeXBlKGNvbG9yQXR0YWNobWVudCk7CisgICAgICAgICAg
ICAgICAgYXR0YWNobWVudEhhbmRsZSA9IGZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlckhhbmRs
ZShjb2xvckF0dGFjaG1lbnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoYXR0YWNobWVudCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1FTlQ6Cisg
ICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRUeXBlID0gZnJhbWVidWZmZXItPmdldERlcHRo
YnVmZmVyVHlwZSgpOworICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50SGFuZGxlID0gZnJh
bWVidWZmZXItPmdldERlcHRoYnVmZmVySGFuZGxlKCk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAg
ICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRUeXBlID0gZnJhbWVidWZmZXItPmdldFN0ZW5jaWxi
dWZmZXJUeXBlKCk7CisgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRIYW5kbGUgPSBmcmFt
ZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlckhhbmRsZSgpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIEdMZW51bSBhdHRhY2htZW50T2JqZWN0VHlwZTsgICAvLyBUeXBlIGNhdGVnb3J5CisgICAg
ICAgICAgICBpZiAoYXR0YWNobWVudFR5cGUgPT0gR0xfTk9ORSB8fCBhdHRhY2htZW50VHlwZSA9
PSBHTF9SRU5ERVJCVUZGRVIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXR0YWNo
bWVudE9iamVjdFR5cGUgPSBhdHRhY2htZW50VHlwZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgaWYgKGdsOjpJc0ludGVybmFsVGV4dHVyZVRhcmdldChhdHRhY2htZW50VHlwZSkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXR0YWNobWVudE9iamVjdFR5cGUgPSBH
TF9URVhUVVJFOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X1RZUEU6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3RUeXBlOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfT0JKRUNUX05BTUU6CisgICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRP
YmplY3RUeXBlID09IEdMX1JFTkRFUkJVRkZFUiB8fCBhdHRhY2htZW50T2JqZWN0VHlwZSA9PSBH
TF9URVhUVVJFKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IGF0dGFjaG1lbnRIYW5kbGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9U
RVhUVVJFX0xFVkVMOgorICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50T2JqZWN0VHlwZSA9
PSBHTF9URVhUVVJFKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKnBh
cmFtcyA9IDA7IC8vIEZyYW1lYnVmZmVyVGV4dHVyZTJEIHdpbGwgbm90IGFsbG93IGxldmVsIHRv
IGJlIHNldCB0byBhbnl0aGluZyBlbHNlIGluIEdMIEVTIDIuMAorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgorICAgICAgICAgICAgICAgIGlm
IChhdHRhY2htZW50T2JqZWN0VHlwZSA9PSBHTF9URVhUVVJFKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGdsOjpJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0KGF0dGFj
aG1lbnRUeXBlKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRUeXBlOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2Mm
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAg
ICB9Cit9CisKK0dMZW51bSBfX3N0ZGNhbGwgZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKHZv
aWQpCit7CisgICAgRVZFTlQoIigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdldFJlc2V0U3RhdHVz
KCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gR0xfTk9fRVJST1I7CisgICAgfQorICAg
IGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9PVVRfT0Zf
TUVNT1JZOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRJbnRlZ2VydihHTGVudW0g
cG5hbWUsIEdMaW50KiBwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTGVudW0gcG5hbWUgPSAweCVY
LCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLCBwbmFtZSwgcGFyYW1zKTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRl
eHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCEoY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIHBhcmFtcykpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEdMZW51bSBuYXRpdmVUeXBlOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBudW1QYXJhbXMgPSAwOworICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0
UXVlcnlQYXJhbWV0ZXJJbmZvKHBuYW1lLCAmbmF0aXZlVHlwZSwgJm51bVBhcmFtcykpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAg
ICAgICAgICAgICAgIGlmIChudW1QYXJhbXMgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOyAvLyBpdCBpcyBrbm93biB0aGF0IHBuYW1lIGlzIHZhbGlkLCBidXQgdGhlcmUgYXJlIG5v
IHBhcmFtZXRlcnMgdG8gcmV0dXJuCisKKyAgICAgICAgICAgICAgICBpZiAobmF0aXZlVHlwZSA9
PSBHTF9CT09MKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuICpib29sUGFyYW1zID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgYm9vbFBhcmFtcyA9
IG5ldyBHTGJvb2xlYW5bbnVtUGFyYW1zXTsKKworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5nZXRCb29sZWFudihwbmFtZSwgYm9vbFBhcmFtcyk7CisKKyAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvb2xQYXJhbXNbaV0gPT0g
R0xfRkFMU0UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXNbaV0gPSAxOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg
ICAgZGVsZXRlIFtdIGJvb2xQYXJhbXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfRkxPQVQpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpmbG9hdFBhcmFtcyA9IE5VTEw7CisgICAgICAg
ICAgICAgICAgICAgIGZsb2F0UGFyYW1zID0gbmV3IEdMZmxvYXRbbnVtUGFyYW1zXTsKKworICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIGZsb2F0UGFyYW1zKTsK
KworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVBh
cmFtczsgKytpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocG5hbWUgPT0gR0xfREVQVEhfUkFOR0UgfHwgcG5hbWUgPT0gR0xfQ09MT1JfQ0xFQVJf
VkFMVUUgfHwgcG5hbWUgPT0gR0xfREVQVEhfQ0xFQVJfVkFMVUUgfHwgcG5hbWUgPT0gR0xfQkxF
TkRfQ09MT1IpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zW2ldID0gKEdMaW50KSgoKEdMZmxvYXQpKDB4RkZGRkZGRkYpICogZmxv
YXRQYXJhbXNbaV0gLSAxLjBmKSAvIDIuMGYpOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtc1tpXSA9IChHTGludCkoZmxvYXRQYXJhbXNbaV0gPiAwLjBmID8gZmxvb3IoZmxvYXRQ
YXJhbXNbaV0gKyAwLjUpIDogY2VpbChmbG9hdFBhcmFtc1tpXSAtIDAuNSkpOworICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFtdIGZsb2F0UGFyYW1z
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRQcm9n
cmFtaXYoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKK3sKKyAg
ICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMZW51bSBwbmFtZSA9ICVkLCBHTGludCog
cGFyYW1zID0gMHglMC44cCkiLCBwcm9ncmFtLCBwbmFtZSwgcGFyYW1zKTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRl
eHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6
OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOwor
CisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9ERUxFVEVfU1RBVFVTOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSBw
cm9ncmFtT2JqZWN0LT5pc0ZsYWdnZWRGb3JEZWxldGlvbigpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9MSU5LX1NUQVRVUzoKKyAgICAgICAgICAgICAg
ICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgR0xfVkFMSURBVEVfU1RBVFVTOgorICAgICAgICAg
ICAgICAgICpwYXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5pc1ZhbGlkYXRlZCgpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9JTkZPX0xPR19MRU5HVEg6Cisg
ICAgICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdldEluZm9Mb2dMZW5ndGgo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgR0xfQVRUQUNI
RURfU0hBREVSUzoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+Z2V0
QXR0YWNoZWRTaGFkZXJzQ291bnQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgIGNhc2UgR0xfQUNUSVZFX0FUVFJJQlVURVM6CisgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFY
X0xFTkdUSDoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+Z2V0QWN0
aXZlQXR0cmlidXRlTWF4TGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICBjYXNlIEdMX0FDVElWRV9VTklGT1JNUzoKKyAgICAgICAgICAgICAgICAqcGFyYW1z
ID0gcHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlVW5pZm9ybUNvdW50KCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5H
VEg6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVu
aWZvcm1NYXhMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
IGNhc2UgR0xfUFJPR1JBTV9CSU5BUllfTEVOR1RIX09FUzoKKyAgICAgICAgICAgICAgICAqcGFy
YW1zID0gcHJvZ3JhbU9iamVjdC0+Z2V0UHJvZ3JhbUJpbmFyeUxlbmd0aCgpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRj
YWxsIGdsR2V0UHJvZ3JhbUluZm9Mb2coR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmc2l6ZSwg
R0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpCit7CisgICAgRVZFTlQoIihHTHVpbnQg
cHJvZ3JhbSA9ICVkLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gMHgl
MC44cCwgR0xjaGFyKiBpbmZvbG9nID0gMHglMC44cCkiLAorICAgICAgICAgIHByb2dyYW0sIGJ1
ZnNpemUsIGxlbmd0aCwgaW5mb2xvZyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChi
dWZzaXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+
Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHByb2dyYW1PYmplY3QtPmdl
dEluZm9Mb2coYnVmc2l6ZSwgbGVuZ3RoLCBpbmZvbG9nKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRRdWVy
eWl2RVhUKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAg
ICBFVkVOVCgiR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50
ICpwYXJhbXMgPSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0cnkK
KyAgICB7CisgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNl
IEdMX0NVUlJFTlRfUVVFUllfRVhUOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHBhcmFtc1swXSA9IGNvbnRleHQtPmdldEFjdGl2ZVF1ZXJ5KHRhcmdldCk7CisgICAgICAgIH0K
KyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxs
IGdsR2V0UXVlcnlPYmplY3R1aXZFWFQoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludCAq
cGFyYW1zKQoreworICAgIEVWRU5UKCIoR0x1aW50IGlkID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4
JVgsIEdMdWludCAqcGFyYW1zID0gMHglMC44cCkiLCBpZCwgcG5hbWUsIHBhcmFtcyk7CisKKyAg
ICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgIHsKKyAgICAgICAg
ICBjYXNlIEdMX1FVRVJZX1JFU1VMVF9FWFQ6CisgICAgICAgICAgY2FzZSBHTF9RVUVSWV9SRVNV
TFRfQVZBSUxBQkxFX0VYVDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAg
IH0KKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlF1
ZXJ5ICpxdWVyeU9iamVjdCA9IGNvbnRleHQtPmdldFF1ZXJ5KGlkLCBmYWxzZSwgR0xfTk9ORSk7
CisKKyAgICAgICAgICAgIGlmICghcXVlcnlPYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRBY3RpdmVRdWVyeShxdWVyeU9i
amVjdC0+Z2V0VHlwZSgpKSA9PSBpZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgc3dpdGNoKHBuYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBj
YXNlIEdMX1FVRVJZX1JFU1VMVF9FWFQ6CisgICAgICAgICAgICAgICAgcGFyYW1zWzBdID0gcXVl
cnlPYmplY3QtPmdldFJlc3VsdCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhUOgorICAgICAgICAgICAgICAg
IHBhcmFtc1swXSA9IHF1ZXJ5T2JqZWN0LT5pc1Jlc3VsdEF2YWlsYWJsZSgpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFT
U0VSVChmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQor
eworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgs
IEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CisKKyAg
ICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXQgIT0gR0xfUkVOREVSQlVGRkVSKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlckhhbmRsZSgpID09
IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpSZW5k
ZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlcihjb250ZXh0
LT5nZXRSZW5kZXJidWZmZXJIYW5kbGUoKSk7CisKKyAgICAgICAgICAgIHN3aXRjaCAocG5hbWUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1dJRFRI
OiAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0V2lkdGgoKTsgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0hFSUdIVDogICAgICAg
ICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0SGVpZ2h0KCk7ICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDogKnBhcmFt
cyA9IHJlbmRlcmJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1JFRF9TSVpFOiAgICAgICAgKnBhcmFtcyA9IHJlbmRl
cmJ1ZmZlci0+Z2V0UmVkU2l6ZSgpOyAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfUkVOREVSQlVGRkVSX0dSRUVOX1NJWkU6ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+
Z2V0R3JlZW5TaXplKCk7ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVS
QlVGRkVSX0JMVUVfU0laRTogICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0Qmx1ZVNp
emUoKTsgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0FM
UEhBX1NJWkU6ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0QWxwaGFTaXplKCk7ICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6
ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0RGVwdGhTaXplKCk7ICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRTogICAgKnBh
cmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0U3RlbmNpbFNpemUoKTsgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1NBTVBMRVNfQU5HTEU6CisgICAgICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSAhPSAwKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0
U2FtcGxlcygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRTaGFkZXJp
dihHTHVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCit7CisgICAgRVZF
TlQoIihHTHVpbnQgc2hhZGVyID0gJWQsIEdMZW51bSBwbmFtZSA9ICVkLCBHTGludCogcGFyYW1z
ID0gMHglMC44cCkiLCBzaGFkZXIsIHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwor
CisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6U2hhZGVy
ICpzaGFkZXJPYmplY3QgPSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKworICAgICAgICAg
ICAgaWYgKCFzaGFkZXJPYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBH
TF9TSEFERVJfVFlQRToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyT2JqZWN0LT5n
ZXRUeXBlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlIEdM
X0RFTEVURV9TVEFUVVM6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHNoYWRlck9iamVjdC0+
aXNGbGFnZ2VkRm9yRGVsZXRpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgIGNhc2UgR0xfQ09NUElMRV9TVEFUVVM6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9
IHNoYWRlck9iamVjdC0+aXNDb21waWxlZCgpID8gR0xfVFJVRSA6IEdMX0ZBTFNFOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9JTkZPX0xPR19MRU5HVEg6
CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHNoYWRlck9iamVjdC0+Z2V0SW5mb0xvZ0xlbmd0
aCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TSEFE
RVJfU09VUkNFX0xFTkdUSDoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyT2JqZWN0
LT5nZXRTb3VyY2VMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgIGNhc2UgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRToKKyAgICAg
ICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyT2JqZWN0LT5nZXRUcmFuc2xhdGVkU291cmNlTGVu
Z3RoKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0K
K30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRTaGFkZXJJbmZvTG9nKEdMdWludCBzaGFkZXIsIEdM
c2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpCit7CisgICAg
RVZFTlQoIihHTHVpbnQgc2hhZGVyID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVp
KiBsZW5ndGggPSAweCUwLjhwLCBHTGNoYXIqIGluZm9sb2cgPSAweCUwLjhwKSIsCisgICAgICAg
ICAgc2hhZGVyLCBidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBpZiAoYnVmc2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6U2hhZGVyICpzaGFkZXJPYmplY3Qg
PSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKworICAgICAgICAgICAgaWYgKCFzaGFkZXJP
YmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hhZGVyT2Jq
ZWN0LT5nZXRJbmZvTG9nKGJ1ZnNpemUsIGxlbmd0aCwgaW5mb2xvZyk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdMZW51bSBzaGFkZXJ0eXBlLCBHTGVudW0gcHJlY2lz
aW9udHlwZSwgR0xpbnQqIHJhbmdlLCBHTGludCogcHJlY2lzaW9uKQoreworICAgIEVWRU5UKCIo
R0xlbnVtIHNoYWRlcnR5cGUgPSAweCVYLCBHTGVudW0gcHJlY2lzaW9udHlwZSA9IDB4JVgsIEdM
aW50KiByYW5nZSA9IDB4JTAuOHAsIEdMaW50KiBwcmVjaXNpb24gPSAweCUwLjhwKSIsCisgICAg
ICAgICAgc2hhZGVydHlwZSwgcHJlY2lzaW9udHlwZSwgcmFuZ2UsIHByZWNpc2lvbik7CisKKyAg
ICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoc2hhZGVydHlwZSkKKyAgICAgICAgeworICAg
ICAgICAgIGNhc2UgR0xfVkVSVEVYX1NIQURFUjoKKyAgICAgICAgICBjYXNlIEdMX0ZSQUdNRU5U
X1NIQURFUjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAg
ICAgICBzd2l0Y2ggKHByZWNpc2lvbnR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdM
X0xPV19GTE9BVDoKKyAgICAgICAgICBjYXNlIEdMX01FRElVTV9GTE9BVDoKKyAgICAgICAgICBj
YXNlIEdMX0hJR0hfRkxPQVQ6CisgICAgICAgICAgICAvLyBBc3N1bWUgSUVFRSA3NTQgcHJlY2lz
aW9uCisgICAgICAgICAgICByYW5nZVswXSA9IDEyNzsKKyAgICAgICAgICAgIHJhbmdlWzFdID0g
MTI3OworICAgICAgICAgICAgKnByZWNpc2lvbiA9IDIzOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgY2FzZSBHTF9MT1dfSU5UOgorICAgICAgICAgIGNhc2UgR0xfTUVESVVNX0lOVDoK
KyAgICAgICAgICBjYXNlIEdMX0hJR0hfSU5UOgorICAgICAgICAgICAgLy8gU29tZSAobW9zdCkg
aGFyZHdhcmUgb25seSBzdXBwb3J0cyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IG51
bWJlcnMsCisgICAgICAgICAgICAvLyB3aGljaCBjYW4gYWNjdXJhdGVseSByZXByZXNlbnQgaW50
ZWdlcnMgdXAgdG8gKy8tMTY3NzcyMTYKKyAgICAgICAgICAgIHJhbmdlWzBdID0gMjQ7CisgICAg
ICAgICAgICByYW5nZVsxXSA9IDI0OworICAgICAgICAgICAgKnByZWNpc2lvbiA9IDA7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldFNoYWRlclNvdXJjZShH
THVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBz
b3VyY2UpCit7CisgICAgRVZFTlQoIihHTHVpbnQgc2hhZGVyID0gJWQsIEdMc2l6ZWkgYnVmc2l6
ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUwLjhwLCBHTGNoYXIqIHNvdXJjZSA9IDB4JTAu
OHApIiwKKyAgICAgICAgICBzaGFkZXIsIGJ1ZnNpemUsIGxlbmd0aCwgc291cmNlKTsKKworICAg
IHRyeQorICAgIHsKKyAgICAgICAgaWYgKGJ1ZnNpemUgPCAwKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKwor
ICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlNoYWRlciAq
c2hhZGVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U2hhZGVyKHNoYWRlcik7CisKKyAgICAgICAgICAg
IGlmICghc2hhZGVyT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBzaGFkZXJPYmplY3QtPmdldFNvdXJjZShidWZzaXplLCBsZW5ndGgsIHNvdXJjZSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3Zv
aWQgX19zdGRjYWxsIGdsR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKEdMdWludCBzaGFk
ZXIsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIHNvdXJjZSkKK3sK
KyAgICBFVkVOVCgiKEdMdWludCBzaGFkZXIgPSAlZCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdM
c2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsIEdMY2hhciogc291cmNlID0gMHglMC44cCkiLAorICAg
ICAgICAgIHNoYWRlciwgYnVmc2l6ZSwgbGVuZ3RoLCBzb3VyY2UpOworCisgICAgdHJ5CisgICAg
eworICAgICAgICBpZiAoYnVmc2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlm
IChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6U2hhZGVyICpzaGFkZXJPYmpl
Y3QgPSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKworICAgICAgICAgICAgaWYgKCFzaGFk
ZXJPYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNo
YWRlck9iamVjdC0+Z2V0VHJhbnNsYXRlZFNvdXJjZShidWZzaXplLCBsZW5ndGgsIHNvdXJjZSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK2Nv
bnN0IEdMdWJ5dGUqIF9fc3RkY2FsbCBnbEdldFN0cmluZyhHTGVudW0gbmFtZSkKK3sKKyAgICBF
VkVOVCgiKEdMZW51bSBuYW1lID0gMHglWCkiLCBuYW1lKTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKwor
ICAgICAgICBzd2l0Y2ggKG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1ZFTkRP
UjoKKyAgICAgICAgICAgIHJldHVybiAoR0x1Ynl0ZSopIkdvb2dsZSBJbmMuIjsKKyAgICAgICAg
ICBjYXNlIEdMX1JFTkRFUkVSOgorICAgICAgICAgICAgcmV0dXJuIChHTHVieXRlKikoKGNvbnRl
eHQgIT0gTlVMTCkgPyBjb250ZXh0LT5nZXRSZW5kZXJlclN0cmluZygpIDogIkFOR0xFIik7Cisg
ICAgICAgICAgY2FzZSBHTF9WRVJTSU9OOgorICAgICAgICAgICAgcmV0dXJuIChHTHVieXRlKiki
T3BlbkdMIEVTIDIuMCAoQU5HTEUgIiBWRVJTSU9OX1NUUklORyAiKSI7CisgICAgICAgICAgY2Fz
ZSBHTF9TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT046CisgICAgICAgICAgICByZXR1cm4gKEdMdWJ5
dGUqKSJPcGVuR0wgRVMgR0xTTCBFUyAxLjAwIChBTkdMRSAiIFZFUlNJT05fU1RSSU5HICIpIjsK
KyAgICAgICAgICBjYXNlIEdMX0VYVEVOU0lPTlM6CisgICAgICAgICAgICByZXR1cm4gKEdMdWJ5
dGUqKSgoY29udGV4dCAhPSBOVUxMKSA/IGNvbnRleHQtPmdldEV4dGVuc2lvblN0cmluZygpIDog
IiIpOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfRU5VTSwgKEdMdWJ5dGUqKU5VTEwpOworICAgICAgICB9CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSwgKEdMdWJ5dGUqKU5VTEwpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNh
bGwgZ2xHZXRUZXhQYXJhbWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxv
YXQqIHBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0g
cG5hbWUgPSAweCVYLCBHTGZsb2F0KiBwYXJhbXMgPSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUs
IHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlOworCisgICAgICAgICAgICBz
d2l0Y2ggKHRhcmdldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhU
VVJFXzJEOgorICAgICAgICAgICAgICAgIHRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlMkQo
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJF
X0NVQkVfTUFQOgorICAgICAgICAgICAgICAgIHRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJl
Q3ViZU1hcCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6CisgICAgICAgICAgICAg
ICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldE1hZ0ZpbHRlcigpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjoK
KyAgICAgICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0TWluRmlsdGVy
KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9XUkFQX1M6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdl
dFdyYXBTKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9XUkFQX1Q6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1
cmUtPmdldFdyYXBUKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUX0VYVDoKKyAgICAgICAgICAgICAgICAqcGFy
YW1zID0gKEdMZmxvYXQpKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkgPyBHTF9UUlVFIDogR0xfRkFM
U0UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfVVNBR0VfQU5HTEU6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1
cmUtPmdldFVzYWdlKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6CisgICAgICAgICAgICAgICAgaWYgKCFj
b250ZXh0LT5zdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5KCkpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5V
TSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9h
dCl0ZXh0dXJlLT5nZXRNYXhBbmlzb3Ryb3B5KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldFRleFBhcmFt
ZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKK3sKKyAg
ICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGlu
dCogcGFyYW1zID0gMHglMC44cCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBn
bDo6VGV4dHVyZSAqdGV4dHVyZTsKKworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAg
ICAgICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUDoKKyAgICAgICAg
ICAgICAgICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9NQUdfRklMVEVSOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJl
LT5nZXRNYWdGaWx0ZXIoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHRl
eHR1cmUtPmdldE1pbkZpbHRlcigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0
ZXh0dXJlLT5nZXRXcmFwUygpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0
dXJlLT5nZXRXcmFwVCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVF9FWFQ6CisgICAgICAgICAgICAgICAgKnBh
cmFtcyA9IHRleHR1cmUtPmlzSW1tdXRhYmxlKCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FHRV9B
TkdMRToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+Z2V0VXNhZ2UoKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9B
TklTT1RST1BZX0VYVDoKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzVGV4
dHVyZUZpbHRlckFuaXNvdHJvcHkoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGludCl0ZXh0dXJlLT5nZXRNYXhBbmlz
b3Ryb3B5KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
KyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAg
fQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldG5Vbmlmb3JtZnZFWFQoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMZmxvYXQqIHBhcmFtcykKK3sKKyAg
ICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6
ZWkgYnVmU2l6ZSA9ICVkLCBHTGZsb2F0KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgICAg
cHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGlmIChidWZTaXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNv
bnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwcm9ncmFtID09IDApCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmpl
Y3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgICAgICBpZiAoIXBy
b2dyYW1PYmplY3QgfHwgIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFt
QmluYXJ5ID0gcHJvZ3JhbU9iamVjdC0+Z2V0UHJvZ3JhbUJpbmFyeSgpOworICAgICAgICAgICAg
aWYgKCFwcm9ncmFtQmluYXJ5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnktPmdldFVuaWZvcm1mdihsb2NhdGlvbiwgJmJ1ZlNp
emUsIHBhcmFtcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
R2V0VW5pZm9ybWZ2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCogcGFy
YW1zKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLCBwcm9ncmFtLCBsb2NhdGlvbiwgcGFy
YW1zKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHByb2dyYW0gPT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdl
dFByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCB8fCAh
cHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBwcm9ncmFt
T2JqZWN0LT5nZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5h
cnkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJv
Z3JhbUJpbmFyeS0+Z2V0VW5pZm9ybWZ2KGxvY2F0aW9uLCBOVUxMLCBwYXJhbXMpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldG5Vbmlmb3JtaXZFWFQoR0x1
aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMaW50KiBwYXJh
bXMpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTGludCBsb2NhdGlvbiA9
ICVkLCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwgCisg
ICAgICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisKKyAgICB0cnkK
KyAgICB7CisgICAgICAgIGlmIChidWZTaXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAg
ICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwcm9ncmFtID09IDAp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnBy
b2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgICAg
ICBpZiAoIXByb2dyYW1PYmplY3QgfHwgIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5
ICpwcm9ncmFtQmluYXJ5ID0gcHJvZ3JhbU9iamVjdC0+Z2V0UHJvZ3JhbUJpbmFyeSgpOworICAg
ICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5KQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnktPmdldFVuaWZvcm1pdihsb2NhdGlv
biwgJmJ1ZlNpemUsIHBhcmFtcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19z
dGRjYWxsIGdsR2V0VW5pZm9ybWl2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xp
bnQqIHBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMaW50IGxv
Y2F0aW9uID0gJWQsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHByb2dyYW0sIGxvY2F0aW9u
LCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAocHJvZ3JhbSA9PSAwKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4
dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0
IHx8ICFwcm9ncmFtT2JqZWN0LT5pc0xpbmtlZCgpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IHBy
b2dyYW1PYmplY3QtPmdldFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3Jh
bUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KCFwcm9ncmFtQmluYXJ5LT5nZXRVbmlmb3JtaXYobG9jYXRpb24sIE5VTEwsIHBhcmFtcykpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK2ludCBfX3N0ZGNhbGwgZ2xHZXRVbmlmb3JtTG9jYXRp
b24oR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciogbmFtZSkKK3sKKyAgICBFVkVOVCgiKEdM
dWludCBwcm9ncmFtID0gJWQsIGNvbnN0IEdMY2hhciogbmFtZSA9IDB4JTAuOHApIiwgcHJvZ3Jh
bSwgbmFtZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKHN0cnN0cihuYW1lLCAi
Z2xfIikgPT0gbmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQ
cm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKwor
ICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAtMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSwgLTEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBwcm9ncmFtT2JqZWN0
LT5nZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QtPmlz
TGlua2VkKCkgfHwgIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgLTEpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0VW5pZm9ybUxvY2F0
aW9uKG5hbWUpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
KyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgLTEpOwor
ICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRWZXJ0ZXhB
dHRyaWJmdihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKQorewor
ICAgIEVWRU5UKCIoR0x1aW50IGluZGV4ID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMZmxv
YXQqIHBhcmFtcyA9IDB4JTAuOHApIiwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWJTdGF0
ZSA9IGNvbnRleHQtPmdldFZlcnRleEF0dHJpYlN0YXRlKGluZGV4KTsKKworICAgICAgICAgICAg
c3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9WRVJU
RVhfQVRUUklCX0FSUkFZX0VOQUJMRUQ6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZs
b2F0KShhdHRyaWJTdGF0ZS5tQXJyYXlFbmFibGVkID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklC
X0FSUkFZX1NJWkU6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KWF0dHJpYlN0
YXRlLm1TaXplOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdM
X1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAo
R0xmbG9hdClhdHRyaWJTdGF0ZS5tU3RyaWRlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRToKKyAgICAgICAgICAg
ICAgICAqcGFyYW1zID0gKEdMZmxvYXQpYXR0cmliU3RhdGUubVR5cGU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JN
QUxJWkVEOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCkoYXR0cmliU3RhdGUu
bU5vcm1hbGl6ZWQgPyBHTF9UUlVFIDogR0xfRkFMU0UpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJ
Tkc6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KWF0dHJpYlN0YXRlLm1Cb3Vu
ZEJ1ZmZlci5pZCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IEdMX0NVUlJFTlRfVkVSVEVYX0FUVFJJQjoKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IDQ7ICsraSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHBh
cmFtc1tpXSA9IGF0dHJpYlN0YXRlLm1DdXJyZW50VmFsdWVbaV07CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9B
VFRSSUJfQVJSQVlfRElWSVNPUl9BTkdMRToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gKEdM
ZmxvYXQpYXR0cmliU3RhdGUubURpdmlzb3I7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
IH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihHTHVpbnQgaW5kZXgs
IEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMdWludCBpbmRl
eCA9ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLCBp
bmRleCwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNv
bnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRF
WF9BVFRSSUJTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0
IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYlN0YXRlID0gY29udGV4dC0+Z2V0VmVydGV4QXR0
cmliU3RhdGUoaW5kZXgpOworCisgICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRDoK
KyAgICAgICAgICAgICAgICAqcGFyYW1zID0gKGF0dHJpYlN0YXRlLm1BcnJheUVuYWJsZWQgPyBH
TF9UUlVFIDogR0xfRkFMU0UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRToKKyAgICAgICAgICAgICAgICAqcGFy
YW1zID0gYXR0cmliU3RhdGUubVNpemU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREU6CisgICAgICAgICAgICAg
ICAgKnBhcmFtcyA9IGF0dHJpYlN0YXRlLm1TdHJpZGU7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFOgorICAgICAg
ICAgICAgICAgICpwYXJhbXMgPSBhdHRyaWJTdGF0ZS5tVHlwZTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTEla
RUQ6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChhdHRyaWJTdGF0ZS5tTm9ybWFsaXplZCA/
IEdMX1RSVUUgOiBHTF9GQUxTRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORzoKKyAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gYXR0cmliU3RhdGUubUJvdW5kQnVmZmVyLmlkKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ1VSUkVOVF9WRVJURVhfQVRU
UklCOgorICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgY3VycmVudFZhbHVlID0gYXR0
cmliU3RhdGUubUN1cnJlbnRWYWx1ZVtpXTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ld
ID0gKEdMaW50KShjdXJyZW50VmFsdWUgPiAwLjBmID8gZmxvb3IoY3VycmVudFZhbHVlICsgMC41
ZikgOiBjZWlsKGN1cnJlbnRWYWx1ZSAtIDAuNWYpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9B
UlJBWV9ESVZJU09SX0FOR0xFOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xpbnQpYXR0
cmliU3RhdGUubURpdmlzb3I7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGRlZmF1bHQ6IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwor
dm9pZCBfX3N0ZGNhbGwgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihHTHVpbnQgaW5kZXgsIEdM
ZW51bSBwbmFtZSwgR0x2b2lkKiogcG9pbnRlcikKK3sKKyAgICBFVkVOVCgiKEdMdWludCBpbmRl
eCA9ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHZvaWQqKiBwb2ludGVyID0gMHglMC44cCki
LCBpbmRleCwgcG5hbWUsIHBvaW50ZXIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlm
IChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9W
RVJURVhfQVRUUklCUykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAocG5hbWUgIT0gR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgKnBvaW50ZXIgPSBjb25zdF9jYXN0PEdMdm9pZCo+
KGNvbnRleHQtPmdldFZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgpKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xI
aW50KEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRh
cmdldCA9IDB4JVgsIEdMZW51bSBtb2RlID0gMHglWCkiLCB0YXJnZXQsIG1vZGUpOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKG1vZGUpCisgICAgICAgIHsKKyAgICAgICAgICBj
YXNlIEdMX0ZBU1RFU1Q6CisgICAgICAgICAgY2FzZSBHTF9OSUNFU1Q6CisgICAgICAgICAgY2Fz
ZSBHTF9ET05UX0NBUkU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOyAKKyAgICAgICAg
fQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CisgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBH
TF9HRU5FUkFURV9NSVBNQVBfSElOVDoKKyAgICAgICAgICAgIGlmIChjb250ZXh0KSBjb250ZXh0
LT5zZXRHZW5lcmF0ZU1pcG1hcEhpbnQobW9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTOgorICAgICAg
ICAgICAgaWYgKGNvbnRleHQpIGNvbnRleHQtPnNldEZyYWdtZW50U2hhZGVyRGVyaXZhdGl2ZUhp
bnQobW9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisgICAg
fQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCitHTGJvb2xlYW4gX19zdGRjYWxs
IGdsSXNCdWZmZXIoR0x1aW50IGJ1ZmZlcikKK3sKKyAgICBFVkVOVCgiKEdMdWludCBidWZmZXIg
PSAlZCkiLCBidWZmZXIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
ICYmIGJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyT2Jq
ZWN0ID0gY29udGV4dC0+Z2V0QnVmZmVyKGJ1ZmZlcik7CisKKyAgICAgICAgICAgIGlmIChidWZm
ZXJPYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1RSVUU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBH
TF9GQUxTRSk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX0ZBTFNFOworfQorCitHTGJvb2xlYW4g
X19zdGRjYWxsIGdsSXNFbmFibGVkKEdMZW51bSBjYXApCit7CisgICAgRVZFTlQoIihHTGVudW0g
Y2FwID0gMHglWCkiLCBjYXApOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGNhcCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAgICAgICAgICAgIHJldHVybiBj
b250ZXh0LT5pc0N1bGxGYWNlRW5hYmxlZCgpOworICAgICAgICAgICAgICBjYXNlIEdMX1BPTFlH
T05fT0ZGU0VUX0ZJTEw6ICAgICAgcmV0dXJuIGNvbnRleHQtPmlzUG9seWdvbk9mZnNldEZpbGxF
bmFibGVkKCk7CisgICAgICAgICAgICAgIGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdF
OiByZXR1cm4gY29udGV4dC0+aXNTYW1wbGVBbHBoYVRvQ292ZXJhZ2VFbmFibGVkKCk7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFOiAgICAgICAgICByZXR1cm4gY29udGV4
dC0+aXNTYW1wbGVDb3ZlcmFnZUVuYWJsZWQoKTsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TQ0lT
U09SX1RFU1Q6ICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5pc1NjaXNzb3JUZXN0RW5hYmxl
ZCgpOworICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfVEVTVDogICAgICAgICAgICAgcmV0
dXJuIGNvbnRleHQtPmlzU3RlbmNpbFRlc3RFbmFibGVkKCk7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfREVQVEhfVEVTVDogICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC0+aXNEZXB0aFRlc3RF
bmFibGVkKCk7CisgICAgICAgICAgICAgIGNhc2UgR0xfQkxFTkQ6ICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gY29udGV4dC0+aXNCbGVuZEVuYWJsZWQoKTsKKyAgICAgICAgICAgICAgY2FzZSBH
TF9ESVRIRVI6ICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5pc0RpdGhlckVuYWJs
ZWQoKTsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfRU5VTSwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIHJldHVy
biBmYWxzZTsKK30KKworR0xib29sZWFuIF9fc3RkY2FsbCBnbElzRmVuY2VOVihHTHVpbnQgZmVu
Y2UpCit7CisgICAgRVZFTlQoIihHTHVpbnQgZmVuY2UgPSAlZCkiLCBmZW5jZSk7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGdsOjpGZW5jZSAqZmVuY2VPYmplY3QgPSBjb250ZXh0LT5nZXRGZW5jZShmZW5jZSk7CisKKyAg
ICAgICAgICAgIGlmIChmZW5jZU9iamVjdCA9PSBOVUxMKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIGZlbmNlT2JqZWN0LT5pc0ZlbmNlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZLCBHTF9GQUxTRSk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX0ZBTFNFOwor
fQorCitHTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZm
ZXIpCit7CisgICAgRVZFTlQoIihHTHVpbnQgZnJhbWVidWZmZXIgPSAlZCkiLCBmcmFtZWJ1ZmZl
cik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQgJiYgZnJhbWVidWZm
ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJP
YmplY3QgPSBjb250ZXh0LT5nZXRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisKKyAgICAgICAg
ICAgIGlmIChmcmFtZWJ1ZmZlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gR0xfVFJVRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlksIEdMX0ZBTFNFKTsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfRkFMU0U7
Cit9CisKK0dMYm9vbGVhbiBfX3N0ZGNhbGwgZ2xJc1Byb2dyYW0oR0x1aW50IHByb2dyYW0pCit7
CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkKSIsIHByb2dyYW0pOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0ICYmIHByb2dyYW0pCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3Jh
bShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKHByb2dyYW1PYmplY3QpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1RSVUU7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBHTF9GQUxTRSk7CisgICAgfQorCisg
ICAgcmV0dXJuIEdMX0ZBTFNFOworfQorCitHTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNRdWVyeUVY
VChHTHVpbnQgaWQpCit7CisgICAgRVZFTlQoIihHTHVpbnQgaWQgPSAlZCkiLCBpZCk7CisKKyAg
ICB0cnkKKyAgICB7CisgICAgICAgIGlmIChpZCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gR0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBnbDo6UXVlcnkgKnF1ZXJ5T2JqZWN0ID0gY29udGV4dC0+
Z2V0UXVlcnkoaWQsIGZhbHNlLCBHTF9OT05FKTsKKworICAgICAgICAgICAgaWYgKHF1ZXJ5T2Jq
ZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9UUlVFOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
KyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgR0xfRkFM
U0UpOworICAgIH0KKworICAgIHJldHVybiBHTF9GQUxTRTsKK30KKworR0xib29sZWFuIF9fc3Rk
Y2FsbCBnbElzUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpCit7CisgICAgRVZFTlQo
IihHTHVpbnQgcmVuZGVyYnVmZmVyID0gJWQpIiwgcmVuZGVyYnVmZmVyKTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRl
eHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCAmJiByZW5kZXJidWZmZXIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlck9iamVjdCA9IGNvbnRl
eHQtPmdldFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworCisgICAgICAgICAgICBpZiAocmVu
ZGVyYnVmZmVyT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBH
TF9UUlVFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSwgR0xfRkFMU0UpOworICAgIH0KKworICAgIHJldHVybiBHTF9GQUxTRTsKK30KKworR0xi
b29sZWFuIF9fc3RkY2FsbCBnbElzU2hhZGVyKEdMdWludCBzaGFkZXIpCit7CisgICAgRVZFTlQo
IihHTHVpbnQgc2hhZGVyID0gJWQpIiwgc2hhZGVyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCAmJiBzaGFkZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpT
aGFkZXIgKnNoYWRlck9iamVjdCA9IGNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpOworCisgICAg
ICAgICAgICBpZiAoc2hhZGVyT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBHTF9UUlVFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSwgR0xfRkFMU0UpOworICAgIH0KKworICAgIHJldHVybiBHTF9GQUxTRTsK
K30KKworR0xib29sZWFuIF9fc3RkY2FsbCBnbElzVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKK3sK
KyAgICBFVkVOVCgiKEdMdWludCB0ZXh0dXJlID0gJWQpIiwgdGV4dHVyZSk7CisKKyAgICB0cnkK
KyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQgJiYgdGV4dHVyZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmVPYmplY3QgPSBjb250ZXh0LT5nZXRUZXh0dXJl
KHRleHR1cmUpOworCisgICAgICAgICAgICBpZiAodGV4dHVyZU9iamVjdCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfVFJVRTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIEdMX0ZBTFNFKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gR0xfRkFMU0U7Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsTGluZVdpZHRoKEdMZmxv
YXQgd2lkdGgpCit7CisgICAgRVZFTlQoIihHTGZsb2F0IHdpZHRoID0gJWYpIiwgd2lkdGgpOwor
CisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAod2lkdGggPD0gMC4wZikKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
fQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnNldExpbmVXaWR0aCh3aWR0aCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsTGlua1Byb2dyYW0oR0x1aW50
IHByb2dyYW0pCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkKSIsIHByb2dyYW0p
OworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dy
YW0ocHJvZ3JhbSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBjb250ZXh0LT5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNh
bGwgZ2xQaXhlbFN0b3JlaShHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQoreworICAgIEVWRU5U
KCIoR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQgcGFyYW0gPSAlZCkiLCBwbmFtZSwgcGFyYW0p
OworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBj
YXNlIEdMX1VOUEFDS19BTElHTk1FTlQ6CisgICAgICAgICAgICAgICAgaWYgKHBhcmFtICE9IDEg
JiYgcGFyYW0gIT0gMiAmJiBwYXJhbSAhPSA0ICYmIHBhcmFtICE9IDgpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFM
VUUpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFVu
cGFja0FsaWdubWVudChwYXJhbSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9QQUNLX0FMSUdOTUVOVDoKKyAgICAgICAgICAgICAgICBpZiAocGFyYW0g
IT0gMSAmJiBwYXJhbSAhPSAyICYmIHBhcmFtICE9IDQgJiYgcGFyYW0gIT0gOCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY29udGV4dC0+
c2V0UGFja0FsaWdubWVudChwYXJhbSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgY2FzZSBHTF9QQUNLX1JFVkVSU0VfUk9XX09SREVSX0FOR0xFOgorICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnNldFBhY2tSZXZlcnNlUm93T3JkZXIocGFyYW0gIT0gMCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsUG9seWdvbk9mZnNldChHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cykK
K3sKKyAgICBFVkVOVCgiKEdMZmxvYXQgZmFjdG9yID0gJWYsIEdMZmxvYXQgdW5pdHMgPSAlZiki
LCBmYWN0b3IsIHVuaXRzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+c2V0UG9seWdvbk9mZnNldFBhcmFt
cyhmYWN0b3IsIHVuaXRzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xSZWFkblBpeGVsc0VYVChHTGludCB4LCBH
TGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpkYXRhKQoreworICAg
IEVWRU5UKCIoR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwg
R0xzaXplaSBoZWlnaHQgPSAlZCwgIgorICAgICAgICAgICJHTGVudW0gZm9ybWF0ID0gMHglWCwg
R0xlbnVtIHR5cGUgPSAweCVYLCBHTHNpemVpIGJ1ZlNpemUgPSAweCVkLCBHTHZvaWQgKmRhdGEg
PSAweCUwLjhwKSIsCisgICAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCBidWZTaXplLCBkYXRhKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHdpZHRoIDwg
MCB8fCBoZWlnaHQgPCAwIHx8IGJ1ZlNpemUgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAg
ICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgR0xlbnVtIGN1cnJlbnRGb3Jt
YXQsIGN1cnJlbnRUeXBlOworICAgIAorICAgICAgICAgICAgLy8gRmFpbHVyZSBpbiBnZXRDdXJy
ZW50UmVhZEZvcm1hdFR5cGUgaW5kaWNhdGVzIHRoYXQgbm8gY29sb3IgYXR0YWNobWVudCBpcyBj
dXJyZW50bHkgYm91bmQsCisgICAgICAgICAgICAvLyBhbmQgYXR0ZW1wdGluZyB0byByZWFkIGJh
Y2sgaWYgdGhhdCdzIHRoZSBjYXNlIGlzIGFuIGVycm9yLiBUaGUgZXJyb3Igd2lsbCBiZSByZWdp
c3RlcmVkCisgICAgICAgICAgICAvLyBieSBnZXRDdXJyZW50UmVhZEZvcm1hdC4KKyAgICAgICAg
ICAgIGlmICghY29udGV4dC0+Z2V0Q3VycmVudFJlYWRGb3JtYXRUeXBlKCZjdXJyZW50Rm9ybWF0
LCAmY3VycmVudFR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
aWYgKCEoY3VycmVudEZvcm1hdCA9PSBmb3JtYXQgJiYgY3VycmVudFR5cGUgPT0gdHlwZSkgJiYg
IXZhbGlkUmVhZEZvcm1hdFR5cGUoZm9ybWF0LCB0eXBlKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgY29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsICZidWZTaXplLCBkYXRhKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xSZWFk
UGl4ZWxzKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBH
THZvaWQqIHBpeGVscykKK3sKKyAgICBFVkVOVCgiKEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVk
LCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsICIKKyAgICAgICAgICAi
R0xlbnVtIGZvcm1hdCA9IDB4JVgsIEdMZW51bSB0eXBlID0gMHglWCwgR0x2b2lkKiBwaXhlbHMg
PSAweCUwLjhwKSIsCisgICAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCAgcGl4ZWxzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBo
ZWlnaHQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgR0xlbnVtIGN1cnJlbnRGb3JtYXQsIGN1cnJlbnRUeXBlOworICAg
IAorICAgICAgICAgICAgLy8gRmFpbHVyZSBpbiBnZXRDdXJyZW50UmVhZEZvcm1hdFR5cGUgaW5k
aWNhdGVzIHRoYXQgbm8gY29sb3IgYXR0YWNobWVudCBpcyBjdXJyZW50bHkgYm91bmQsCisgICAg
ICAgICAgICAvLyBhbmQgYXR0ZW1wdGluZyB0byByZWFkIGJhY2sgaWYgdGhhdCdzIHRoZSBjYXNl
IGlzIGFuIGVycm9yLiBUaGUgZXJyb3Igd2lsbCBiZSByZWdpc3RlcmVkCisgICAgICAgICAgICAv
LyBieSBnZXRDdXJyZW50UmVhZEZvcm1hdC4KKyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0
Q3VycmVudFJlYWRGb3JtYXRUeXBlKCZjdXJyZW50Rm9ybWF0LCAmY3VycmVudFR5cGUpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKCEoY3VycmVudEZvcm1hdCA9
PSBmb3JtYXQgJiYgY3VycmVudFR5cGUgPT0gdHlwZSkgJiYgIXZhbGlkUmVhZEZvcm1hdFR5cGUo
Zm9ybWF0LCB0eXBlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgY29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IE5VTEwsIHBpeGVscyk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
KyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsUmVsZWFzZVNoYWRlckNvbXBpbGVyKHZvaWQp
Cit7CisgICAgRVZFTlQoIigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpTaGFk
ZXI6OnJlbGVhc2VDb21waWxlcigpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
IH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgRVZFTlQoIihHTGVudW0g
dGFyZ2V0ID0gMHglWCwgR0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCA9IDB4JVgsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCkiLAorICAg
ICAgICAgIHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwor
CisgICAgdHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICAgICAgeworICAg
ICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVN
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZ2w6OklzQ29sb3JSZW5kZXJhYmxlKGludGVy
bmFsZm9ybWF0KSAmJiAhZ2w6OklzRGVwdGhSZW5kZXJhYmxlKGludGVybmFsZm9ybWF0KSAmJiAh
Z2w6OklzU3RlbmNpbFJlbmRlcmFibGUoaW50ZXJuYWxmb3JtYXQpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDAgfHwgc2FtcGxlcyA8IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0
Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2lkdGggPiBjb250ZXh0LT5nZXRNYXhpbXVtUmVuZGVyYnVmZmVyRGltZW5zaW9uKCkg
fHwgCisgICAgICAgICAgICAgICAgaGVpZ2h0ID4gY29udGV4dC0+Z2V0TWF4aW11bVJlbmRlcmJ1
ZmZlckRpbWVuc2lvbigpIHx8CisgICAgICAgICAgICAgICAgc2FtcGxlcyA+IGNvbnRleHQtPmdl
dE1heFN1cHBvcnRlZFNhbXBsZXMoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBHTHVpbnQgaGFuZGxlID0gY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVySGFuZGxlKCk7
CisgICAgICAgICAgICBpZiAoaGFuZGxlID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6CisgICAgICAgICAgICAg
IGNhc2UgR0xfUkdCQTQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfUkdCNV9BMToKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9SR0I1NjU6CisgICAgICAgICAgICAgIGNhc2UgR0xfUkdCOF9PRVM6Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfUkdCQThfT0VTOgorICAgICAgICAgICAgICBjYXNlIEdMX1NU
RU5DSUxfSU5ERVg4OgorICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VT
OgorICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFJlbmRlcmJ1ZmZlclN0b3JhZ2Uod2lkdGgs
IGhlaWdodCwgaW50ZXJuYWxmb3JtYXQsIHNhbXBsZXMpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xSZW5kZXJi
dWZmZXJTdG9yYWdlKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBTkdMRSh0YXJnZXQsIDAsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
K30KKwordm9pZCBfX3N0ZGNhbGwgZ2xTYW1wbGVDb3ZlcmFnZShHTGNsYW1wZiB2YWx1ZSwgR0xi
b29sZWFuIGludmVydCkKK3sKKyAgICBFVkVOVCgiKEdMY2xhbXBmIHZhbHVlID0gJWYsIEdMYm9v
bGVhbiBpbnZlcnQgPSAlZCkiLCB2YWx1ZSwgaW52ZXJ0KTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgZ2w6OkNvbnRleHQqIGNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKwor
ICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+c2V0
U2FtcGxlQ292ZXJhZ2VQYXJhbXMoZ2w6OmNsYW1wMDEodmFsdWUpLCBpbnZlcnQgPT0gR0xfVFJV
RSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisK
K3ZvaWQgX19zdGRjYWxsIGdsU2V0RmVuY2VOVihHTHVpbnQgZmVuY2UsIEdMZW51bSBjb25kaXRp
b24pCit7CisgICAgRVZFTlQoIihHTHVpbnQgZmVuY2UgPSAlZCwgR0xlbnVtIGNvbmRpdGlvbiA9
IDB4JVgpIiwgZmVuY2UsIGNvbmRpdGlvbik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlm
IChjb25kaXRpb24gIT0gR0xfQUxMX0NPTVBMRVRFRF9OVikKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkZlbmNlICpmZW5j
ZU9iamVjdCA9IGNvbnRleHQtPmdldEZlbmNlKGZlbmNlKTsKKworICAgICAgICAgICAgaWYgKGZl
bmNlT2JqZWN0ID09IE5VTEwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZlbmNlT2JqZWN0LT5zZXRGZW5jZShjb25kaXRpb24pOyAgICAKKyAgICAgICAgfQor
ICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwg
Z2xTY2lzc29yKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
KQoreworICAgIEVWRU5UKCIoR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lk
dGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCkiLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwor
ICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQqIGNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAg
ICAgY29udGV4dC0+c2V0U2Npc3NvclBhcmFtcyh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0
ZGNhbGwgZ2xTaGFkZXJCaW5hcnkoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHNoYWRlcnMsIEdM
ZW51bSBiaW5hcnlmb3JtYXQsIGNvbnN0IEdMdm9pZCogYmluYXJ5LCBHTHNpemVpIGxlbmd0aCkK
K3sKKyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQqIHNoYWRlcnMgPSAw
eCUwLjhwLCBHTGVudW0gYmluYXJ5Zm9ybWF0ID0gMHglWCwgIgorICAgICAgICAgICJjb25zdCBH
THZvaWQqIGJpbmFyeSA9IDB4JTAuOHAsIEdMc2l6ZWkgbGVuZ3RoID0gJWQpIiwKKyAgICAgICAg
ICBuLCBzaGFkZXJzLCBiaW5hcnlmb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgLy8gTm8gYmluYXJ5IHNoYWRlciBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQu
CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICB9CisgICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsU2hhZGVyU291
cmNlKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMY2hhcioqIHN0cmluZywg
Y29uc3QgR0xpbnQqIGxlbmd0aCkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBzaGFkZXIgPSAlZCwg
R0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGNoYXIqKiBzdHJpbmcgPSAweCUwLjhwLCBjb25z
dCBHTGludCogbGVuZ3RoID0gMHglMC44cCkiLAorICAgICAgICAgIHNoYWRlciwgY291bnQsIHN0
cmluZywgbGVuZ3RoKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50IDwgMCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5v
bkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGdsOjpTaGFkZXIgKnNoYWRlck9iamVjdCA9IGNvbnRleHQtPmdldFNoYWRlcihzaGFk
ZXIpOworCisgICAgICAgICAgICBpZiAoIXNoYWRlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0UHJvZ3JhbShzaGFkZXIpKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBzaGFkZXJPYmplY3QtPnNldFNvdXJjZShjb3VudCwgc3RyaW5nLCBsZW5ndGgpOwor
ICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lk
IF9fc3RkY2FsbCBnbFN0ZW5jaWxGdW5jKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBt
YXNrKQoreworICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZShHTF9GUk9OVF9BTkRfQkFDSywgZnVu
YywgcmVmLCBtYXNrKTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xTdGVuY2lsRnVuY1NlcGFyYXRl
KEdMZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKK3sKKyAg
ICBFVkVOVCgiKEdMZW51bSBmYWNlID0gMHglWCwgR0xlbnVtIGZ1bmMgPSAweCVYLCBHTGludCBy
ZWYgPSAlZCwgR0x1aW50IG1hc2sgPSAlZCkiLCBmYWNlLCBmdW5jLCByZWYsIG1hc2spOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKGZhY2UpCisgICAgICAgIHsKKyAgICAgICAg
ICBjYXNlIEdMX0ZST05UOgorICAgICAgICAgIGNhc2UgR0xfQkFDSzoKKyAgICAgICAgICBjYXNl
IEdMX0ZST05UX0FORF9CQUNLOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHN3aXRjaCAoZnVuYykKKyAgICAgICAgeworICAgICAgICAgIGNhc2Ug
R0xfTkVWRVI6CisgICAgICAgICAgY2FzZSBHTF9BTFdBWVM6CisgICAgICAgICAgY2FzZSBHTF9M
RVNTOgorICAgICAgICAgIGNhc2UgR0xfTEVRVUFMOgorICAgICAgICAgIGNhc2UgR0xfRVFVQUw6
CisgICAgICAgICAgY2FzZSBHTF9HRVFVQUw6CisgICAgICAgICAgY2FzZSBHTF9HUkVBVEVSOgor
ICAgICAgICAgIGNhc2UgR0xfTk9URVFVQUw6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0p
OworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9u
TG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGZhY2UgPT0gR0xfRlJPTlQgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdGVuY2lsUGFyYW1z
KGZ1bmMsIHJlZiwgbWFzayk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmYWNl
ID09IEdMX0JBQ0sgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdGVuY2lsQmFja1BhcmFtcyhmdW5jLCByZWYs
IG1hc2spOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFN0ZW5jaWxNYXNrKEdMdWludCBt
YXNrKQoreworICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShHTF9GUk9OVF9BTkRfQkFDSywgbWFz
ayk7Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShHTGVudW0gZmFj
ZSwgR0x1aW50IG1hc2spCit7CisgICAgRVZFTlQoIihHTGVudW0gZmFjZSA9IDB4JVgsIEdMdWlu
dCBtYXNrID0gJWQpIiwgZmFjZSwgbWFzayk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIHN3
aXRjaCAoZmFjZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfRlJPTlQ6CisgICAgICAg
ICAgY2FzZSBHTF9CQUNLOgorICAgICAgICAgIGNhc2UgR0xfRlJPTlRfQU5EX0JBQ0s6CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29u
dGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGZhY2UgPT0gR0xfRlJPTlQgfHwgZmFj
ZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5zZXRTdGVuY2lsV3JpdGVtYXNrKG1hc2spOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoZmFjZSA9PSBHTF9CQUNLIHx8IGZhY2UgPT0gR0xfRlJPTlRfQU5EX0JBQ0sp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3RlbmNpbEJhY2tX
cml0ZW1hc2sobWFzayk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsU3RlbmNpbE9wKEdM
ZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcykKK3sKKyAgICBnbFN0ZW5jaWxP
cFNlcGFyYXRlKEdMX0ZST05UX0FORF9CQUNLLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworfQorCit2
b2lkIF9fc3RkY2FsbCBnbFN0ZW5jaWxPcFNlcGFyYXRlKEdMZW51bSBmYWNlLCBHTGVudW0gZmFp
bCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpCit7CisgICAgRVZFTlQoIihHTGVudW0gZmFj
ZSA9IDB4JVgsIEdMZW51bSBmYWlsID0gMHglWCwgR0xlbnVtIHpmYWlsID0gMHglWCwgR0xlbnVt
IHpwYXMgPSAweCVYcykiLAorICAgICAgICAgIGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisK
KyAgICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoZmFjZSkKKyAgICAgICAgeworICAgICAg
ICAgIGNhc2UgR0xfRlJPTlQ6CisgICAgICAgICAgY2FzZSBHTF9CQUNLOgorICAgICAgICAgIGNh
c2UgR0xfRlJPTlRfQU5EX0JBQ0s6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAg
ICAgICB9CisKKyAgICAgICAgc3dpdGNoIChmYWlsKQorICAgICAgICB7CisgICAgICAgICAgY2Fz
ZSBHTF9aRVJPOgorICAgICAgICAgIGNhc2UgR0xfS0VFUDoKKyAgICAgICAgICBjYXNlIEdMX1JF
UExBQ0U6CisgICAgICAgICAgY2FzZSBHTF9JTkNSOgorICAgICAgICAgIGNhc2UgR0xfREVDUjoK
KyAgICAgICAgICBjYXNlIEdMX0lOVkVSVDoKKyAgICAgICAgICBjYXNlIEdMX0lOQ1JfV1JBUDoK
KyAgICAgICAgICBjYXNlIEdMX0RFQ1JfV1JBUDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5V
TSk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHpmYWlsKQorICAgICAgICB7CisgICAg
ICAgICAgY2FzZSBHTF9aRVJPOgorICAgICAgICAgIGNhc2UgR0xfS0VFUDoKKyAgICAgICAgICBj
YXNlIEdMX1JFUExBQ0U6CisgICAgICAgICAgY2FzZSBHTF9JTkNSOgorICAgICAgICAgIGNhc2Ug
R0xfREVDUjoKKyAgICAgICAgICBjYXNlIEdMX0lOVkVSVDoKKyAgICAgICAgICBjYXNlIEdMX0lO
Q1JfV1JBUDoKKyAgICAgICAgICBjYXNlIEdMX0RFQ1JfV1JBUDoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHpwYXNzKQorICAgICAg
ICB7CisgICAgICAgICAgY2FzZSBHTF9aRVJPOgorICAgICAgICAgIGNhc2UgR0xfS0VFUDoKKyAg
ICAgICAgICBjYXNlIEdMX1JFUExBQ0U6CisgICAgICAgICAgY2FzZSBHTF9JTkNSOgorICAgICAg
ICAgIGNhc2UgR0xfREVDUjoKKyAgICAgICAgICBjYXNlIEdMX0lOVkVSVDoKKyAgICAgICAgICBj
YXNlIEdMX0lOQ1JfV1JBUDoKKyAgICAgICAgICBjYXNlIEdMX0RFQ1JfV1JBUDoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZmFjZSA9PSBHTF9GUk9OVCB8fCBmYWNlID09
IEdMX0ZST05UX0FORF9CQUNLKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnNldFN0ZW5jaWxPcGVyYXRpb25zKGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChmYWNlID09IEdMX0JBQ0sgfHwgZmFjZSA9PSBHTF9GUk9O
VF9BTkRfQkFDSykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRT
dGVuY2lsQmFja09wZXJhdGlvbnMoZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKworR0xi
b29sZWFuIF9fc3RkY2FsbCBnbFRlc3RGZW5jZU5WKEdMdWludCBmZW5jZSkKK3sKKyAgICBFVkVO
VCgiKEdMdWludCBmZW5jZSA9ICVkKSIsIGZlbmNlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkZlbmNlICpmZW5j
ZU9iamVjdCA9IGNvbnRleHQtPmdldEZlbmNlKGZlbmNlKTsKKworICAgICAgICAgICAgaWYgKGZl
bmNlT2JqZWN0ID09IE5VTEwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgR0xfVFJVRSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBmZW5jZU9iamVjdC0+dGVzdEZlbmNlKCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gR0xfVFJV
RTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9y
bWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpCit7CisgICAgRVZFTlQoIihH
TGVudW0gdGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xpbnQgaW50ZXJuYWxmb3Jt
YXQgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCAiCisgICAg
ICAgICAgIkdMaW50IGJvcmRlciA9ICVkLCBHTGVudW0gZm9ybWF0ID0gMHglWCwgR0xlbnVtIHR5
cGUgPSAweCVYLCBjb25zdCBHTHZvaWQqIHBpeGVscyA9ICAweCUwLjhwKSIsCisgICAgICAgICAg
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9y
bWF0LCB0eXBlLCBwaXhlbHMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoIXZhbGlk
SW1hZ2VTaXplKGxldmVsLCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChpbnRlcm5hbGZvcm1hdCAhPSBHTGludChmb3JtYXQpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIHZhbGlkYXRlIDx0eXBlPiBieSBpdHNlbGYgKHVzZWQgYXMgc2Vjb25kYXJ5
IGtleSBiZWxvdykKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRf
NV82XzU6CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80OgorICAgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMToKKyAgICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX1NIT1JUOgorICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfSU5UXzI0XzhfT0VTOgorICAgICAgICAgIGNhc2UgR0xfSEFMRl9G
TE9BVF9PRVM6CisgICAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICAvLyB2YWxpZGF0ZSA8Zm9ybWF0PiArIDx0
eXBlPiBjb21iaW5hdGlvbnMKKyAgICAgICAgLy8gLSBpbnZhbGlkIDxmb3JtYXQ+IC0+IHNldHMg
SU5WQUxJRF9FTlVNCisgICAgICAgIC8vIC0gaW52YWxpZCA8Zm9ybWF0Pis8dHlwZT4gY29tYmlu
YXRpb24gLT4gc2V0cyBJTlZBTElEX09QRVJBVElPTgorICAgICAgICBzd2l0Y2ggKGZvcm1hdCkK
KyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfQUxQSEE6CisgICAgICAgICAgY2FzZSBHTF9M
VU1JTkFOQ0U6CisgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfQllURToKKyAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgICAg
Y2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgIGNhc2UgR0xfUkdCOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfU0hPUlRfNV82XzU6CisgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6
CisgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICBzd2l0Y2ggKHR5
cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToK
KyAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80OgorICAgICAgICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzE6CisgICAgICAgICAgICAgIGNhc2Ug
R0xfRkxPQVQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAgICAgICAg
ICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6ICAvLyBlcnJvciBjYXNlcyBmb3IgY29tcHJl
c3NlZCB0ZXh0dXJlcyBhcmUgaGFuZGxlZCBiZWxvdworICAgICAgICAgIGNhc2UgR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUNV9BTkdMRToKKyAgICAgICAgICAgIGJyZWFrOyAKKyAgICAgICAgICBjYXNlIEdMX0RF
UFRIX0NPTVBPTkVOVDoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBj
YXNlIEdMX0RFUFRIX1NURU5DSUxfT0VTOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yNF84X09FUzoK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoYm9yZGVyICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobGV2ZWwgPiBjb250ZXh0LT5nZXRNYXhpbXVt
VGV4dHVyZUxldmVsKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
c3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV8yRDoKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPiAoY29udGV4dC0+Z2V0TWF4aW11
bVRleHR1cmVEaW1lbnNpb24oKSA+PiBsZXZlbCkgfHwKKyAgICAgICAgICAgICAgICAgICAgaGVp
Z2h0ID4gKGNvbnRleHQtPmdldE1heGltdW1UZXh0dXJlRGltZW5zaW9uKCkgPj4gbGV2ZWwpKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgor
ICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDoKKyAgICAg
ICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6CisgICAgICAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgorICAgICAgICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWjoKKyAgICAgICAgICAgICAgY2FzZSBH
TF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o6CisgICAgICAgICAgICAgICAgaWYgKHdpZHRo
ICE9IGhlaWdodCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKHdpZHRoID4gKGNvbnRleHQtPmdldE1heGltdW1DdWJlVGV4dHVyZURp
bWVuc2lvbigpID4+IGxldmVsKSB8fAorICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPiAoY29u
dGV4dC0+Z2V0TWF4aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKCkgPj4gbGV2ZWwpKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKGZv
cm1hdCkgeworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6
CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRFhUMVRleHR1cmVzKCkpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQz
X0FOR0xFOgorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdXBwb3J0c0RYVDNUZXh0dXJl
cygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUNV9BTkdMRToKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+c3VwcG9ydHNEWFQ1
VGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBP
TkVOVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKKyAgICAgICAg
ICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRGVwdGhUZXh0dXJlcygpKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHRhcmdldCAh
PSBHTF9URVhUVVJFXzJEKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIC8vIE9FU19kZXB0aF90ZXh0dXJlIHN1cHBvcnRzIGxvYWRpbmcg
ZGVwdGggZGF0YSBhbmQgbXVsdGlwbGUgbGV2ZWxzLAorICAgICAgICAgICAgICAgIC8vIGJ1dCBB
TkdMRV9kZXB0aF90ZXh0dXJlIGRvZXMgbm90CisgICAgICAgICAgICAgICAgaWYgKHBpeGVscyAh
PSBOVUxMIHx8IGxldmVsICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0
eXBlID09IEdMX0ZMT0FUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghY29u
dGV4dC0+c3VwcG9ydHNGbG9hdDMyVGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09
IEdMX0hBTEZfRkxPQVRfT0VTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICgh
Y29udGV4dC0+c3VwcG9ydHNGbG9hdDE2VGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0YXJnZXQg
PT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6VGV4
dHVyZTJEICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisKKyAgICAgICAgICAg
ICAgICBpZiAoIXRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRl
eHR1cmUtPnNldEltYWdlKGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGNvbnRl
eHQtPmdldFVucGFja0FsaWdubWVudCgpLCBwaXhlbHMpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ3Vi
ZU1hcCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmVDdWJlTWFwKCk7CisKKyAgICAgICAg
ICAgICAgICBpZiAoIXRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IHN3aXRjaCAodGFyZ2V0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgorICAgICAgICAgICAgICAgICAgICB0
ZXh0dXJlLT5zZXRJbWFnZVBvc1gobGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
Y29udGV4dC0+Z2V0VW5wYWNrQWxpZ25tZW50KCksIHBpeGVscyk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05F
R0FUSVZFX1g6CisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnNldEltYWdlTmVnWChsZXZl
bCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1l
bnQoKSwgcGl4ZWxzKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKKyAgICAgICAgICAgICAg
ICAgICAgdGV4dHVyZS0+c2V0SW1hZ2VQb3NZKGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIGNvbnRleHQtPmdldFVucGFja0FsaWdubWVudCgpLCBwaXhlbHMpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9ZOgorICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRJbWFnZU5l
Z1kobGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgY29udGV4dC0+Z2V0VW5wYWNr
QWxpZ25tZW50KCksIHBpeGVscyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6CisgICAgICAg
ICAgICAgICAgICAgIHRleHR1cmUtPnNldEltYWdlUG9zWihsZXZlbCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0
SW1hZ2VOZWdaKGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGNvbnRleHQtPmdl
dFVucGFja0FsaWdubWVudCgpLCBwaXhlbHMpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFRleFBhcmFtZXRlcmYoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQoreworICAgIEVWRU5UKCIoR0xlbnVt
IHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50IHBhcmFtID0gJWYpIiwg
dGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZTsKKwor
ICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAgICB0ZXh0dXJlID0gY29udGV4dC0+
Z2V0VGV4dHVyZTJEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9DVUJFX01BUDoKKyAgICAgICAgICAgICAgICB0ZXh0dXJlID0gY29udGV4
dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6CisgICAg
ICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5zZXRXcmFwUygoR0xlbnVtKXBhcmFtKSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1Q6CisgICAgICAgICAgICAgICAgaWYg
KCF0ZXh0dXJlLT5zZXRXcmFwVCgoR0xlbnVtKXBhcmFtKSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOgorICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZS0+
c2V0TWluRmlsdGVyKChHTGVudW0pcGFyYW0pKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX01BR19GSUxURVI6CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5zZXRNYWdG
aWx0ZXIoKEdMZW51bSlwYXJhbSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
VVNBR0VfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5zZXRVc2FnZSgoR0xl
bnVtKXBhcmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09U
Uk9QWV9FWFQ6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c1RleHR1cmVG
aWx0ZXJBbmlzb3Ryb3B5KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZS0+c2V0TWF4QW5pc290cm9weSgoZmxvYXQpcGFy
YW0sIGNvbnRleHQtPmdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KCkpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFRleFBhcmFtZXRlcmZ2KEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCogcGFyYW1zKQoreworICAgIGds
VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCAoR0xmbG9hdCkqcGFyYW1zKTsKK30KKwordm9p
ZCBfX3N0ZGNhbGwgZ2xUZXhQYXJhbWV0ZXJpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
R0xpbnQgcGFyYW0pCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVt
IHBuYW1lID0gMHglWCwgR0xpbnQgcGFyYW0gPSAlZCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbSk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlOworCisgICAgICAgICAgICBzd2l0Y2ggKHRh
cmdldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgor
ICAgICAgICAgICAgICAgIHRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlMkQoKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQ
OgorICAgICAgICAgICAgICAgIHRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ3ViZU1hcCgp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfUzoKKyAgICAgICAgICAgICAgICBpZiAoIXRleHR1
cmUtPnNldFdyYXBTKChHTGVudW0pcGFyYW0pKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX1dSQVBfVDoKKyAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUtPnNldFdyYXBUKChH
TGVudW0pcGFyYW0pKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxU
RVI6CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5zZXRNaW5GaWx0ZXIoKEdMZW51bSlw
YXJhbSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUjoKKyAg
ICAgICAgICAgICAgICBpZiAoIXRleHR1cmUtPnNldE1hZ0ZpbHRlcigoR0xlbnVtKXBhcmFtKSkK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FHRV9BTkdMRToKKyAgICAgICAg
ICAgICAgICBpZiAoIXRleHR1cmUtPnNldFVzYWdlKChHTGVudW0pcGFyYW0pKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDoKKyAgICAgICAgICAg
ICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHkoKSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCF0
ZXh0dXJlLT5zZXRNYXhBbmlzb3Ryb3B5KChmbG9hdClwYXJhbSwgY29udGV4dC0+Z2V0VGV4dHVy
ZU1heEFuaXNvdHJvcHkoKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3Zv
aWQgX19zdGRjYWxsIGdsVGV4UGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LCBjb25zdCBHTGludCogcGFyYW1zKQoreworICAgIGdsVGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBu
YW1lLCAqcGFyYW1zKTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xUZXhTdG9yYWdlMkRFWFQoR0xl
bnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0g
MHglWCwgR0xzaXplaSBsZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gMHglWCwg
R0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkKSIsCisgICAgICAgICAgIHRh
cmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisKKyAgICB0cnkK
KyAgICB7CisgICAgICAgIGlmICh0YXJnZXQgIT0gR0xfVEVYVFVSRV8yRCAmJiB0YXJnZXQgIT0g
R0xfVEVYVFVSRV9DVUJFX01BUCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdpZHRoIDwg
MSB8fCBoZWlnaHQgPCAxIHx8IGxldmVscyA8IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgd2lkdGggIT0gaGVpZ2h0KQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGxldmVscyAhPSAxICYmIGxldmVscyAhPSBnbDo6bG9n
MihzdGQ6Om1heCh3aWR0aCwgaGVpZ2h0KSkgKyAxKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgfQorCisgICAg
ICAgIEdMZW51bSBmb3JtYXQgPSBnbDo6RXh0cmFjdEZvcm1hdChpbnRlcm5hbGZvcm1hdCk7Cisg
ICAgICAgIEdMZW51bSB0eXBlID0gZ2w6OkV4dHJhY3RUeXBlKGludGVybmFsZm9ybWF0KTsKKwor
ICAgICAgICBpZiAoZm9ybWF0ID09IEdMX05PTkUgfHwgdHlwZSA9PSBHTF9OT05FKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAg
ICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBz
d2l0Y2ggKHRhcmdldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhU
VVJFXzJEOgorICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGNvbnRleHQtPmdldE1heGltdW1U
ZXh0dXJlRGltZW5zaW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID4gY29udGV4
dC0+Z2V0TWF4aW11bVRleHR1cmVEaW1lbnNpb24oKSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfQ1VCRV9NQVA6CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gY29udGV4
dC0+Z2V0TWF4aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKCkgfHwKKyAgICAgICAgICAgICAgICAg
ICAgaGVpZ2h0ID4gY29udGV4dC0+Z2V0TWF4aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKCkpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChs
ZXZlbHMgIT0gMSAmJiAhY29udGV4dC0+c3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlKCkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFnbDo6aXNQb3cyKHdpZHRoKSB8fCAhZ2w6
OmlzUG93MihoZWlnaHQpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENf
RFhUMV9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQ6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0RYVDFUZXh0dXJl
cygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQz
X0FOR0xFOgorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQzVGV4dHVy
ZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
NV9BTkdMRToKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUNVRleHR1
cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1JHQkEzMkZfRVhUOgorICAgICAgICAg
ICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfQUxQSEEzMkZf
RVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRTMyRl9FWFQ6CisgICAgICAgICAg
ICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVDoKKyAgICAgICAgICAgICAgICBpZiAo
IWNvbnRleHQtPnN1cHBvcnRzRmxvYXQzMlRleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIEdMX1JHQkExNkZfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdM
X0xVTUlOQU5DRTE2Rl9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhB
MTZGX0VYVDoKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRmxvYXQxNlRl
eHR1cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2Ogor
ICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzoKKyAgICAgICAgICAg
ICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzoKKyAgICAgICAgICAgICAgICBpZiAoIWNv
bnRleHQtPnN1cHBvcnRzRGVwdGhUZXh0dXJlcygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IEdMX1RFWFRVUkVfMkQp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgLy8gQU5HTEVfZGVwdGhfdGV4dHVyZSBvbmx5IHN1cHBvcnRzIDEtbGV2ZWwgdGV4dHVyZXMK
KyAgICAgICAgICAgICAgICBpZiAobGV2ZWxzICE9IDEpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJE
KCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUgfHwgdGV4dHVyZS0+aWQoKSA9PSAw
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgaWYgKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zdG9yYWdlKGxl
dmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVApCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDdWJlTWFwICp0ZXh0dXJlID0gY29u
dGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKKworICAgICAgICAgICAgICAgIGlmICghdGV4dHVy
ZSB8fCB0ZXh0dXJlLT5pZCgpID09IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIHRleHR1cmUtPnN0b3JhZ2UobGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworICAgICAgICB9Cisg
ICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBn
bFRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBH
THZvaWQqIHBpeGVscykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGlu
dCBsZXZlbCA9ICVkLCBHTGludCB4b2Zmc2V0ID0gJWQsIEdMaW50IHlvZmZzZXQgPSAlZCwgIgor
ICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMZW51
bSBmb3JtYXQgPSAweCVYLCBHTGVudW0gdHlwZSA9IDB4JVgsICIKKyAgICAgICAgICAiY29uc3Qg
R0x2b2lkKiBwaXhlbHMgPSAweCUwLjhwKSIsCisgICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKCFnbDo6SXNJbnRlcm5hbFRleHR1cmVUYXJnZXQo
dGFyZ2V0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxldmVsIDwgMCB8fCB4b2Zmc2V0
IDwgMCB8fCB5b2Zmc2V0IDwgMCB8fCB3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAt
IHhvZmZzZXQgPCB3aWR0aCB8fCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAt
IHlvZmZzZXQgPCBoZWlnaHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWNoZWNrVGV4
dHVyZUZvcm1hdFR5cGUoZm9ybWF0LCB0eXBlKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuOyAvLyBlcnJvciBpcyBzZXQgYnkgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgIH0KKworICAg
ICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisg
ICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobGV2ZWwgPiBj
b250ZXh0LT5nZXRNYXhpbXVtVGV4dHVyZUxldmVsKCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKGZvcm1hdCA9PSBHTF9GTE9BVCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRmxvYXQzMlRleHR1cmVzKCkp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09IEdMX0hBTEZfRkxPQVRfT0VTKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNGbG9hdDE2VGV4dHVy
ZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlIGlmIChnbDo6SXNEZXB0aFRleHR1cmUoZm9ybWF0KSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRGVwdGhUZXh0
dXJlcygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBpZiAodGFyZ2V0ICE9IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gT0VTX2RlcHRoX3RleHR1cmUg
c3VwcG9ydHMgbG9hZGluZyBkZXB0aCBkYXRhLCBidXQgQU5HTEVfZGVwdGhfdGV4dHVyZSBkb2Vz
IG5vdAorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2lkdGggPT0gMCB8fCBoZWln
aHQgPT0gMCB8fCBwaXhlbHMgPT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xf
VEVYVFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZTJE
ICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisgICAgICAgICAgICAgICAgaWYg
KHZhbGlkYXRlU3ViSW1hZ2VQYXJhbXMyRChmYWxzZSwgd2lkdGgsIGhlaWdodCwgeG9mZnNldCwg
eW9mZnNldCwgbGV2ZWwsIGZvcm1hdCwgdHlwZSwgdGV4dHVyZSkpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zdWJJbWFnZShsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tB
bGlnbm1lbnQoKSwgcGl4ZWxzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIGlmIChnbDo6SXNDdWJlbWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1hcCAqdGV4dHVy
ZSA9IGNvbnRleHQtPmdldFRleHR1cmVDdWJlTWFwKCk7CisgICAgICAgICAgICAgICAgaWYgKHZh
bGlkYXRlU3ViSW1hZ2VQYXJhbXNDdWJlKGZhbHNlLCB3aWR0aCwgaGVpZ2h0LCB4b2Zmc2V0LCB5
b2Zmc2V0LCB0YXJnZXQsIGxldmVsLCBmb3JtYXQsIHR5cGUsIHRleHR1cmUpKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c3ViSW1hZ2UodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250
ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3Jt
MWYoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCkKK3sKKyAgICBnbFVuaWZvcm0xZnYobG9jYXRp
b24sIDEsICZ4KTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMWZ2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KQoreworICAgIEVWRU5UKCIoR0xp
bnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2ID0g
MHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOworCisgICAgdHJ5CisgICAgeworICAgICAg
ICBpZiAoY291bnQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxvY2F0aW9uID09
IC0xKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAg
ICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFy
eSAqcHJvZ3JhbUJpbmFyeSA9IGNvbnRleHQtPmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7Cisg
ICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeS0+c2V0VW5pZm9ybTFmdihsb2Nh
dGlvbiwgY291bnQsIHYpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2Fs
bCBnbFVuaWZvcm0xaShHTGludCBsb2NhdGlvbiwgR0xpbnQgeCkKK3sKKyAgICBnbFVuaWZvcm0x
aXYobG9jYXRpb24sIDEsICZ4KTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMWl2KEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCogdikKK3sKKyAgICBFVkVO
VCgiKEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQq
IHYgPSAweCUwLjhwKSIsIGxvY2F0aW9uLCBjb3VudCwgdik7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGlmIChjb3VudCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9jYXRp
b24gPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFt
QmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnko
KTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtMWl2
KGxvY2F0aW9uLCBjb3VudCwgdikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19z
dGRjYWxsIGdsVW5pZm9ybTJmKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSkK
K3sKKyAgICBHTGZsb2F0IHh5WzJdID0ge3gsIHl9OworCisgICAgZ2xVbmlmb3JtMmZ2KGxvY2F0
aW9uLCAxLCAoR0xmbG9hdCopJnh5KTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMmZ2
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KQoreworICAg
IEVWRU5UKCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBH
TGZsb2F0KiB2ID0gMHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBpZiAoY291bnQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVu
dFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5
LT5zZXRVbmlmb3JtMmZ2KGxvY2F0aW9uLCBjb3VudCwgdikpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9
Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTJpKEdMaW50IGxvY2F0aW9uLCBHTGludCB4
LCBHTGludCB5KQoreworICAgIEdMaW50IHh5WzRdID0ge3gsIHl9OworCisgICAgZ2xVbmlmb3Jt
Mml2KGxvY2F0aW9uLCAxLCAoR0xpbnQqKSZ4eSk7Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5p
Zm9ybTJpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpCit7
CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNv
bnN0IEdMaW50KiB2ID0gMHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBpZiAoY291bnQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGxvY2F0aW9uID09IC0xKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBn
bDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGNvbnRleHQtPmdldEN1cnJlbnRQcm9n
cmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeS0+c2V0
VW5pZm9ybTJpdihsb2NhdGlvbiwgY291bnQsIHYpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7
CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQor
Cit2b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm0zZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBH
TGZsb2F0IHksIEdMZmxvYXQgeikKK3sKKyAgICBHTGZsb2F0IHh5elszXSA9IHt4LCB5LCB6fTsK
KworICAgIGdsVW5pZm9ybTNmdihsb2NhdGlvbiwgMSwgKEdMZmxvYXQqKSZ4eXopOworfQorCit2
b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMZmxvYXQqIHYpCit7CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBH
THNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMZmxvYXQqIHYgPSAweCUwLjhwKSIsIGxvY2F0aW9u
LCBjb3VudCwgdik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA8IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0g
Y29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJv
Z3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtM2Z2KGxvY2F0aW9uLCBjb3VudCwgdikpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTNpKEdMaW50
IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KQoreworICAgIEdMaW50IHh5elsz
XSA9IHt4LCB5LCB6fTsKKworICAgIGdsVW5pZm9ybTNpdihsb2NhdGlvbiwgMSwgKEdMaW50Kikm
eHl6KTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGludCogdikKK3sKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQqIHYgPSAweCUwLjhwKSIs
IGxvY2F0aW9uLCBjb3VudCwgdik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3Vu
dCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNv
bnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFt
QmluYXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAg
IGlmICghcHJvZ3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtM2l2KGxvY2F0aW9uLCBjb3Vu
dCwgdikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9y
bTRmKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZs
b2F0IHcpCit7CisgICAgR0xmbG9hdCB4eXp3WzRdID0ge3gsIHksIHosIHd9OworCisgICAgZ2xV
bmlmb3JtNGZ2KGxvY2F0aW9uLCAxLCAoR0xmbG9hdCopJnh5encpOworfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbFVuaWZvcm00ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQqIHYpCit7CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNv
dW50ID0gJWQsIGNvbnN0IEdMZmxvYXQqIHYgPSAweCUwLjhwKSIsIGxvY2F0aW9uLCBjb3VudCwg
dik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA8IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gY29udGV4dC0+
Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFy
eSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFwcm9n
cmFtQmluYXJ5LT5zZXRVbmlmb3JtNGZ2KGxvY2F0aW9uLCBjb3VudCwgdikpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTRpKEdMaW50IGxvY2F0aW9u
LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KQoreworICAgIEdMaW50IHh5endb
NF0gPSB7eCwgeSwgeiwgd307CisKKyAgICBnbFVuaWZvcm00aXYobG9jYXRpb24sIDEsIChHTGlu
dCopJnh5encpOworfQorCit2b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm00aXYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KQoreworICAgIEVWRU5UKCIoR0xpbnQg
bG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGludCogdiA9IDB4JTAu
OHApIiwgbG9jYXRpb24sIGNvdW50LCB2KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYg
KGNvdW50IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsb2NhdGlvbiA9PSAtMSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBp
ZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnBy
b2dyYW1CaW5hcnkgPSBjb250ZXh0LT5nZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpOworICAgICAg
ICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnktPnNldFVuaWZvcm00aXYobG9jYXRpb24s
IGNvdW50LCB2KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xV
bmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBFVkVOVCgiKEdMaW50IGxv
Y2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICVk
LCBjb25zdCBHTGZsb2F0KiB2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBsb2NhdGlvbiwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAo
Y291bnQgPCAwIHx8IHRyYW5zcG9zZSAhPSBHTF9GQUxTRSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChsb2NhdGlvbiA9PSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBjb250ZXh0LT5nZXRDdXJyZW50
UHJvZ3JhbUJpbmFyeSgpOworICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkt
PnNldFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybU1hdHJpeDNmdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9h
dCogdmFsdWUpCit7CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNv
dW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UgPSAlZCwgY29uc3QgR0xmbG9hdCogdmFsdWUg
PSAweCUwLjhwKSIsCisgICAgICAgICAgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50IDwgMCB8fCB0cmFuc3Bvc2Ug
IT0gR0xfRkFMU0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpw
cm9ncmFtQmluYXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKyAgICAg
ICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtTWF0cml4M2Z2KGxv
Y2F0aW9uLCBjb3VudCwgdmFsdWUpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9f
c3RkY2FsbCBnbFVuaWZvcm1NYXRyaXg0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKQoreworICAgIEVWRU5U
KCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJh
bnNwb3NlID0gJWQsIGNvbnN0IEdMZmxvYXQqIHZhbHVlID0gMHglMC44cCkiLAorICAgICAgICAg
IGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGlmIChjb3VudCA8IDAgfHwgdHJhbnNwb3NlICE9IEdMX0ZBTFNFKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGxvY2F0aW9uID09IC0xKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGds
OjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7
CisgICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGNvbnRleHQt
PmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5h
cnkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJv
Z3JhbUJpbmFyeS0+c2V0VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVc2VQcm9ncmFtKEdM
dWludCBwcm9ncmFtKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCkiLCBwcm9n
cmFtKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQ
cm9ncmFtKHByb2dyYW0pOworCisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QgJiYgcHJv
Z3JhbSAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5n
ZXRTaGFkZXIocHJvZ3JhbSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwcm9ncmFtICE9IDAgJiYg
IXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGNvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxs
IGdsVmFsaWRhdGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQoreworICAgIEVWRU5UKCIoR0x1aW50
IHByb2dyYW0gPSAlZCkiLCBwcm9ncmFtKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBp
ZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1P
YmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgICAgICBpZiAo
IXByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmdldFNoYWRlcihwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHJvZ3JhbU9iamVjdC0+
dmFsaWRhdGUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
IH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWIxZihHTHVpbnQgaW5kZXgsIEdM
ZmxvYXQgeCkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBHTGZsb2F0IHggPSAl
ZikiLCBpbmRleCwgeCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBn
bDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29u
dGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgR0xmbG9hdCB2YWxzWzRdID0geyB4LCAwLCAw
LCAxIH07CisgICAgICAgICAgICBjb250ZXh0LT5zZXRWZXJ0ZXhBdHRyaWIoaW5kZXgsIHZhbHMp
OworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2
b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0dHJpYjFmdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxv
YXQqIHZhbHVlcykKK3sKKyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBjb25zdCBHTGZs
b2F0KiB2YWx1ZXMgPSAweCUwLjhwKSIsIGluZGV4LCB2YWx1ZXMpOworCisgICAgdHJ5CisgICAg
eworICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdM
ZmxvYXQgdmFsc1s0XSA9IHsgdmFsdWVzWzBdLCAwLCAwLCAxIH07CisgICAgICAgICAgICBjb250
ZXh0LT5zZXRWZXJ0ZXhBdHRyaWIoaW5kZXgsIHZhbHMpOworICAgICAgICB9CisgICAgfQorICAg
IGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0
dHJpYjJmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCit7CisgICAgRVZFTlQo
IihHTHVpbnQgaW5kZXggPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQgeSA9ICVmKSIsIGlu
ZGV4LCB4LCB5KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4ID49IGdsOjpN
QVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBHTGZsb2F0IHZhbHNbNF0gPSB7IHgsIHksIDAsIDEg
fTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFZlcnRleEF0dHJpYihpbmRleCwgdmFscyk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsVmVydGV4QXR0cmliMmZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCog
dmFsdWVzKQoreworICAgIEVWRU5UKCIoR0x1aW50IGluZGV4ID0gJWQsIGNvbnN0IEdMZmxvYXQq
IHZhbHVlcyA9IDB4JTAuOHApIiwgaW5kZXgsIHZhbHVlcyk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9
CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgR0xmbG9h
dCB2YWxzWzRdID0geyB2YWx1ZXNbMF0sIHZhbHVlc1sxXSwgMCwgMSB9OworICAgICAgICAgICAg
Y29udGV4dC0+c2V0VmVydGV4QXR0cmliKGluZGV4LCB2YWxzKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0
ZXhBdHRyaWIzZihHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHop
Cit7CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdMZmxv
YXQgeSA9ICVmLCBHTGZsb2F0IHogPSAlZikiLCBpbmRleCwgeCwgeSwgeik7CisKKyAgICB0cnkK
KyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwor
ICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAg
ICAgR0xmbG9hdCB2YWxzWzRdID0geyB4LCB5LCB6LCAxIH07CisgICAgICAgICAgICBjb250ZXh0
LT5zZXRWZXJ0ZXhBdHRyaWIoaW5kZXgsIHZhbHMpOworICAgICAgICB9CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0dHJp
YjNmdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcykKK3sKKyAgICBFVkVOVCgi
KEdMdWludCBpbmRleCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMgPSAweCUwLjhwKSIsIGlu
ZGV4LCB2YWx1ZXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoaW5kZXggPj0gZ2w6
Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMZmxvYXQgdmFsc1s0XSA9IHsgdmFsdWVzWzBd
LCB2YWx1ZXNbMV0sIHZhbHVlc1syXSwgMSB9OworICAgICAgICAgICAgY29udGV4dC0+c2V0VmVy
dGV4QXR0cmliKGluZGV4LCB2YWxzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWI0ZihHTHVp
bnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdykKK3sK
KyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBHTGZsb2F0IHggPSAlZiwgR0xmbG9hdCB5
ID0gJWYsIEdMZmxvYXQgeiA9ICVmLCBHTGZsb2F0IHcgPSAlZikiLCBpbmRleCwgeCwgeSwgeiwg
dyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRF
WF9BVFRSSUJTKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgR0xmbG9hdCB2YWxzWzRdID0geyB4LCB5LCB6LCB3IH07CisgICAg
ICAgICAgICBjb250ZXh0LT5zZXRWZXJ0ZXhBdHRyaWIoaW5kZXgsIHZhbHMpOworICAgICAgICB9
CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2Fs
bCBnbFZlcnRleEF0dHJpYjRmdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcykK
K3sKKyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMg
PSAweCUwLjhwKSIsIGluZGV4LCB2YWx1ZXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBp
ZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAg
ICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFZl
cnRleEF0dHJpYihpbmRleCwgdmFsdWVzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWJEaXZp
c29yQU5HTEUoR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBFVkVOVCgiKEdM
dWludCBpbmRleCA9ICVkLCBHTHVpbnQgZGl2aXNvciA9ICVkKSIsIGluZGV4LCBkaXZpc29yKTsK
KworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4ID49IGdsOjpNQVhfVkVSVEVYX0FU
VFJJQlMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGds
OjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7
CisgICAgICAgICAgICBjb250ZXh0LT5zZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZp
c29yKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAg
eworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30K
Kwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKEdMdWludCBpbmRleCwgR0xp
bnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlk
ZSwgY29uc3QgR0x2b2lkKiBwdHIpCit7CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwg
R0xpbnQgc2l6ZSA9ICVkLCBHTGVudW0gdHlwZSA9IDB4JVgsICIKKyAgICAgICAgICAiR0xib29s
ZWFuIG5vcm1hbGl6ZWQgPSAlZCwgR0xzaXplaSBzdHJpZGUgPSAlZCwgY29uc3QgR0x2b2lkKiBw
dHIgPSAweCUwLjhwKSIsCisgICAgICAgICAgaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQs
IHN0cmlkZSwgcHRyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4ID49IGds
OjpNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2l6ZSA8
IDEgfHwgc2l6ZSA+IDQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHR5cGUpCisg
ICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9CWVRFOgorICAgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9TSE9SVDoKKyAgICAgICAgICBjYXNlIEdMX0ZJWEVEOgorICAgICAgICAgIGNhc2Ug
R0xfRkxPQVQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKHN0cmlkZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRWZXJ0ZXhBdHRyaWJTdGF0
ZShpbmRleCwgY29udGV4dC0+Z2V0QXJyYXlCdWZmZXIoKSwgc2l6ZSwgdHlwZSwgKG5vcm1hbGl6
ZWQgPT0gR0xfVFJVRSksIHN0cmlkZSwgcHRyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWaWV3cG9ydChHTGlu
dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBFVkVO
VCgiKEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6
ZWkgaGVpZ2h0ID0gJWQpIiwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisKKyAgICB0cnkKKyAgICB7
CisgICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnNl
dFZpZXdwb3J0UGFyYW1zKHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgICAgICB9CisgICAgfQor
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEJsaXRG
cmFtZWJ1ZmZlckFOR0xFKEdMaW50IHNyY1gwLCBHTGludCBzcmNZMCwgR0xpbnQgc3JjWDEsIEdM
aW50IHNyY1kxLCBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRzdFgxLCBHTGludCBk
c3RZMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBt
YXNrLCBHTGVudW0gZmlsdGVyKQoreworICAgIEVWRU5UKCIoR0xpbnQgc3JjWDAgPSAlZCwgR0xp
bnQgc3JjWTAgPSAlZCwgR0xpbnQgc3JjWDEgPSAlZCwgR0xpbnQgc3JjWTEgPSAlZCwgIgorICAg
ICAgICAgICJHTGludCBkc3RYMCA9ICVkLCBHTGludCBkc3RZMCA9ICVkLCBHTGludCBkc3RYMSA9
ICVkLCBHTGludCBkc3RZMSA9ICVkLCAiCisgICAgICAgICAgIkdMYml0ZmllbGQgbWFzayA9IDB4
JVgsIEdMZW51bSBmaWx0ZXIgPSAweCVYKSIsCisgICAgICAgICAgc3JjWDAsIHNyY1kwLCBzcmNY
MSwgc3JjWDEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKGZpbHRlcikKKyAgICAgICAgeworICAgICAg
ICAgIGNhc2UgR0xfTkVBUkVTVDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoKG1hc2sgJiB+KEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9T
VEVOQ0lMX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKSkgIT0gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChzcmNYMSAtIHNyY1gwICE9IGRzdFgxIC0gZHN0WDAgfHwgc3Jj
WTEgLSBzcmNZMCAhPSBkc3RZMSAtIGRzdFkwKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIo
IlNjYWxpbmcgYW5kIGZsaXBwaW5nIGluIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIG5vdCBzdXBwb3J0
ZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0UmVhZEZyYW1lYnVm
ZmVySGFuZGxlKCkgPT0gY29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKCkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgRVJSKCJCbGl0cyB3aXRoIHRoZSBzYW1lIHNvdXJj
ZSBhbmQgZGVzdGluYXRpb24gZnJhbWVidWZmZXIgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBp
bXBsZW1lbnRhdGlvbi4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29udGV4dC0+
YmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAs
IGRzdFgxLCBkc3RZMSwgbWFzayk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVGV4SW1hZ2UzRE9FUyhHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBH
THZvaWQqIHBpeGVscykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGlu
dCBsZXZlbCA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAweCVYLCAiCisgICAgICAgICAg
IkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xzaXplaSBkZXB0aCA9
ICVkLCBHTGludCBib3JkZXIgPSAlZCwgIgorICAgICAgICAgICJHTGVudW0gZm9ybWF0ID0gMHgl
WCwgR0xlbnVtIHR5cGUgPSAweCV4LCBjb25zdCBHTHZvaWQqIHBpeGVscyA9IDB4JTAuOHApIiwK
KyAgICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0UHJvZ3JhbUJpbmFyeU9F
UyhHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqYmluYXJ5Rm9ybWF0LCB2
b2lkICpiaW5hcnkpCit7CisgICAgRVZFTlQoIihHTGVudW0gcHJvZ3JhbSA9IDB4JVgsIGJ1ZlNp
emUgPSAlZCwgbGVuZ3RoID0gMHglMC44cCwgYmluYXJ5Rm9ybWF0ID0gMHglMC44cCwgYmluYXJ5
ID0gMHglMC44cCkiLAorICAgICAgICAgIHByb2dyYW0sIGJ1ZlNpemUsIGxlbmd0aCwgYmluYXJ5
Rm9ybWF0LCBiaW5hcnkpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNv
bnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9i
amVjdCB8fCAhcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkg
PSBwcm9ncmFtT2JqZWN0LT5nZXRQcm9ncmFtQmluYXJ5KCk7CisKKyAgICAgICAgICAgIGlmICgh
cHJvZ3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5zYXZlKGJpbmFyeSwgYnVmU2l6ZSwgbGVuZ3RoKSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgKmJpbmFyeUZvcm1hdCA9
IEdMX1BST0dSQU1fQklOQVJZX0FOR0xFOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFByb2dyYW1CaW5hcnlPRVMo
R0x1aW50IHByb2dyYW0sIEdMZW51bSBiaW5hcnlGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTGludCBsZW5ndGgpCit7CisgICAg
RVZFTlQoIihHTGVudW0gcHJvZ3JhbSA9IDB4JVgsIGJpbmFyeUZvcm1hdCA9IDB4JXgsIGJpbmFy
eSA9IDB4JTAuOHAsIGxlbmd0aCA9ICVkKSIsCisgICAgICAgICAgcHJvZ3JhbSwgYmluYXJ5Rm9y
bWF0LCBiaW5hcnksIGxlbmd0aCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNv
bnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChiaW5hcnlGb3JtYXQgIT0gR0xfUFJP
R1JBTV9CSU5BUllfQU5HTEUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3Jh
bSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgY29udGV4dC0+c2V0UHJvZ3JhbUJpbmFyeShwcm9n
cmFtLCBiaW5hcnksIGxlbmd0aCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRHJhd0J1ZmZlcnNFWFQoR0xzaXpl
aSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpCit7CisgICAgRVZFTlQoIihHTGVudW0gbiA9ICVkLCBi
dWZzID0gMHglMC44cCkiLCBuLCBidWZzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBp
ZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG4gPCAwIHx8ICh1bnNpZ25l
ZCBpbnQpbiA+IGNvbnRleHQtPmdldE1heGltdW1SZW5kZXJUYXJnZXRzKCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldERyYXdGcmFtZWJ1
ZmZlckhhbmRsZSgpID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKG4g
IT0gMSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGlmIChidWZzWzBdICE9IEdMX05PTkUgJiYgYnVmc1swXSAhPSBHTF9CQUNLKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoaW50
IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IG47IGNvbG9yQXR0YWNobWVu
dCsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVt
IGF0dGFjaG1lbnQgPSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQgKyBjb2xvckF0dGFjaG1lbnQ7
CisgICAgICAgICAgICAgICAgICAgIGlmIChidWZzW2NvbG9yQXR0YWNobWVudF0gIT0gR0xfTk9O
RSAmJiBidWZzW2NvbG9yQXR0YWNobWVudF0gIT0gYXR0YWNobWVudCkKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZm
ZXIgPSBjb250ZXh0LT5nZXREcmF3RnJhbWVidWZmZXIoKTsKKworICAgICAgICAgICAgZm9yIChp
bnQgY29sb3JBdHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgbjsgY29sb3JBdHRhY2ht
ZW50KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZnJhbWVidWZmZXItPnNldERy
YXdCdWZmZXJTdGF0ZShjb2xvckF0dGFjaG1lbnQsIGJ1ZnNbY29sb3JBdHRhY2htZW50XSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoaW50IGNvbG9yQXR0YWNobWVudCA9IG47
IGNvbG9yQXR0YWNobWVudCA8IChpbnQpY29udGV4dC0+Z2V0TWF4aW11bVJlbmRlclRhcmdldHMo
KTsgY29sb3JBdHRhY2htZW50KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZnJh
bWVidWZmZXItPnNldERyYXdCdWZmZXJTdGF0ZShjb2xvckF0dGFjaG1lbnQsIEdMX05PTkUpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoIChzdGQ6OmJhZF9hbGxv
YyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwor
ICAgIH0KK30KKworX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSBfX3N0
ZGNhbGwgZ2xHZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyICpwcm9jbmFtZSkKK3sKKyAgICBzdHJ1
Y3QgRXh0ZW5zaW9uCisgICAgeworICAgICAgICBjb25zdCBjaGFyICpuYW1lOworICAgICAgICBf
X2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlIGFkZHJlc3M7CisgICAgfTsK
KworICAgIHN0YXRpYyBjb25zdCBFeHRlbnNpb24gZ2xFeHRlbnNpb25zW10gPQorICAgIHsKKyAg
ICAgICAgeyJnbFRleEltYWdlM0RPRVMiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Q
b2ludGVyVHlwZSlnbFRleEltYWdlM0RPRVN9LAorICAgICAgICB7ImdsQmxpdEZyYW1lYnVmZmVy
QU5HTEUiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEJsaXRG
cmFtZWJ1ZmZlckFOR0xFfSwKKyAgICAgICAgeyJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRX0sCisgICAgICAgIHsiZ2xEZWxldGVG
ZW5jZXNOViIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsRGVs
ZXRlRmVuY2VzTlZ9LAorICAgICAgICB7ImdsR2VuRmVuY2VzTlYiLCAoX19lZ2xNdXN0Q2FzdFRv
UHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEdlbkZlbmNlc05WfSwKKyAgICAgICAgeyJnbElz
RmVuY2VOViIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsSXNG
ZW5jZU5WfSwKKyAgICAgICAgeyJnbFRlc3RGZW5jZU5WIiwgKF9fZWdsTXVzdENhc3RUb1Byb3Bl
ckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xUZXN0RmVuY2VOVn0sCisgICAgICAgIHsiZ2xHZXRGZW5j
ZWl2TlYiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEdldEZl
bmNlaXZOVn0sCisgICAgICAgIHsiZ2xGaW5pc2hGZW5jZU5WIiwgKF9fZWdsTXVzdENhc3RUb1By
b3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xGaW5pc2hGZW5jZU5WfSwKKyAgICAgICAgeyJnbFNl
dEZlbmNlTlYiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbFNl
dEZlbmNlTlZ9LAorICAgICAgICB7ImdsR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFIiwg
KF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xHZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEV9LAorICAgICAgICB7ImdsVGV4U3RvcmFnZTJERVhUIiwgKF9fZWds
TXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xUZXhTdG9yYWdlMkRFWFR9LAor
ICAgICAgICB7ImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCIsIChfX2VnbE11c3RDYXN0VG9Q
cm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVH0sCisg
ICAgICAgIHsiZ2xSZWFkblBpeGVsc0VYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlv
blBvaW50ZXJUeXBlKWdsUmVhZG5QaXhlbHNFWFR9LAorICAgICAgICB7ImdsR2V0blVuaWZvcm1m
dkVYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsR2V0blVu
aWZvcm1mdkVYVH0sCisgICAgICAgIHsiZ2xHZXRuVW5pZm9ybWl2RVhUIiwgKF9fZWdsTXVzdENh
c3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xHZXRuVW5pZm9ybWl2RVhUfSwKKyAgICAg
ICAgeyJnbEdlblF1ZXJpZXNFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2lu
dGVyVHlwZSlnbEdlblF1ZXJpZXNFWFR9LAorICAgICAgICB7ImdsRGVsZXRlUXVlcmllc0VYVCIs
IChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsRGVsZXRlUXVlcmll
c0VYVH0sCisgICAgICAgIHsiZ2xJc1F1ZXJ5RVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1
bmN0aW9uUG9pbnRlclR5cGUpZ2xJc1F1ZXJ5RVhUfSwKKyAgICAgICAgeyJnbEJlZ2luUXVlcnlF
WFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEJlZ2luUXVl
cnlFWFR9LAorICAgICAgICB7ImdsRW5kUXVlcnlFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVy
RnVuY3Rpb25Qb2ludGVyVHlwZSlnbEVuZFF1ZXJ5RVhUfSwKKyAgICAgICAgeyJnbEdldFF1ZXJ5
aXZFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEdldFF1
ZXJ5aXZFWFR9LAorICAgICAgICB7ImdsR2V0UXVlcnlPYmplY3R1aXZFWFQiLCAoX19lZ2xNdXN0
Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUfSwK
KyAgICAgICAgeyJnbERyYXdCdWZmZXJzRVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0
aW9uUG9pbnRlclR5cGUpZ2xEcmF3QnVmZmVyc0VYVH0sCisgICAgICAgIHsiZ2xWZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlw
ZSlnbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRX0sCisgICAgICAgIHsiZ2xEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSln
bERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRX0sCisgICAgICAgIHsiZ2xEcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRSIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWds
RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEV9LAorICAgICAgICB7ImdsR2V0UHJvZ3JhbUJpbmFy
eU9FUyIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsR2V0UHJv
Z3JhbUJpbmFyeU9FU30sCisgICAgICAgIHsiZ2xQcm9ncmFtQmluYXJ5T0VTIiwgKF9fZWdsTXVz
dENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xQcm9ncmFtQmluYXJ5T0VTfSwgICAg
fTsKKworICAgIGZvciAodW5zaWduZWQgaW50IGV4dCA9IDA7IGV4dCA8IEFycmF5U2l6ZShnbEV4
dGVuc2lvbnMpOyBleHQrKykKKyAgICB7CisgICAgICAgIGlmIChzdHJjbXAocHJvY25hbWUsIGds
RXh0ZW5zaW9uc1tleHRdLm5hbWUpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEV4dGVuc2lvbnNb
ZXh0XS5hZGRyZXNzOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisK
Ky8vIE5vbi1wdWJsaWMgZnVuY3Rpb25zIHVzZWQgYnkgRUdMCisKK2Jvb2wgX19zdGRjYWxsIGds
QmluZFRleEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKK3sKKyAgICBFVkVOVCgiKGVnbDo6
U3VyZmFjZSogc3VyZmFjZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBzdXJmYWNlKTsKKworICAg
IHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZ2w6OlRleHR1cmUyRCAqdGV4dHVyZU9iamVjdCA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgp
OworCisgICAgICAgICAgICBpZiAodGV4dHVyZU9iamVjdC0+aXNJbW11dGFibGUoKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmICh0ZXh0dXJlT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHRleHR1cmVPYmplY3QtPmJpbmRUZXhJbWFnZShzdXJmYWNlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxODUgQEAKK0xJQlJBUlkgbGliR0xFU3YyCitFWFBPUlRTCisg
ICAgZ2xBY3RpdmVUZXh0dXJlICAgICAgICAgICAgICAgICBAMQorICAgIGdsQXR0YWNoU2hhZGVy
ICAgICAgICAgICAgICAgICAgQDIKKyAgICBnbEJpbmRBdHRyaWJMb2NhdGlvbiAgICAgICAgICAg
IEAzCisgICAgZ2xCaW5kQnVmZmVyICAgICAgICAgICAgICAgICAgICBANAorICAgIGdsQmluZEZy
YW1lYnVmZmVyICAgICAgICAgICAgICAgQDUKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIgICAgICAg
ICAgICAgIEA2CisgICAgZ2xCaW5kVGV4dHVyZSAgICAgICAgICAgICAgICAgICBANworICAgIGds
QmxlbmRDb2xvciAgICAgICAgICAgICAgICAgICAgQDgKKyAgICBnbEJsZW5kRXF1YXRpb24gICAg
ICAgICAgICAgICAgIEA5CisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUgICAgICAgICBAMTAK
KyAgICBnbEJsZW5kRnVuYyAgICAgICAgICAgICAgICAgICAgIEAxMQorICAgIGdsQmxlbmRGdW5j
U2VwYXJhdGUgICAgICAgICAgICAgQDEyCisgICAgZ2xCdWZmZXJEYXRhICAgICAgICAgICAgICAg
ICAgICBAMTMKKyAgICBnbEJ1ZmZlclN1YkRhdGEgICAgICAgICAgICAgICAgIEAxNAorICAgIGds
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyAgICAgICAgQDE1CisgICAgZ2xDbGVhciAgICAgICAgICAg
ICAgICAgICAgICAgICBAMTYKKyAgICBnbENsZWFyQ29sb3IgICAgICAgICAgICAgICAgICAgIEAx
NworICAgIGdsQ2xlYXJEZXB0aGYgICAgICAgICAgICAgICAgICAgQDE4CisgICAgZ2xDbGVhclN0
ZW5jaWwgICAgICAgICAgICAgICAgICBAMTkKKyAgICBnbENvbG9yTWFzayAgICAgICAgICAgICAg
ICAgICAgIEAyMAorICAgIGdsQ29tcGlsZVNoYWRlciAgICAgICAgICAgICAgICAgQDIxCisgICAg
Z2xDb21wcmVzc2VkVGV4SW1hZ2UyRCAgICAgICAgICBAMjIKKyAgICBnbENvbXByZXNzZWRUZXhT
dWJJbWFnZTJEICAgICAgIEAyMworICAgIGdsQ29weVRleEltYWdlMkQgICAgICAgICAgICAgICAg
QDI0CisgICAgZ2xDb3B5VGV4U3ViSW1hZ2UyRCAgICAgICAgICAgICBAMjUKKyAgICBnbENyZWF0
ZVByb2dyYW0gICAgICAgICAgICAgICAgIEAyNgorICAgIGdsQ3JlYXRlU2hhZGVyICAgICAgICAg
ICAgICAgICAgQDI3CisgICAgZ2xDdWxsRmFjZSAgICAgICAgICAgICAgICAgICAgICBAMjgKKyAg
ICBnbERlbGV0ZUJ1ZmZlcnMgICAgICAgICAgICAgICAgIEAyOQorICAgIGdsRGVsZXRlRnJhbWVi
dWZmZXJzICAgICAgICAgICAgQDMwCisgICAgZ2xEZWxldGVQcm9ncmFtICAgICAgICAgICAgICAg
ICBAMzIKKyAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMgICAgICAgICAgIEAzMworICAgIGdsRGVs
ZXRlU2hhZGVyICAgICAgICAgICAgICAgICAgQDM0CisgICAgZ2xEZWxldGVUZXh0dXJlcyAgICAg
ICAgICAgICAgICBAMzEKKyAgICBnbERlcHRoRnVuYyAgICAgICAgICAgICAgICAgICAgIEAzNgor
ICAgIGdsRGVwdGhNYXNrICAgICAgICAgICAgICAgICAgICAgQDM3CisgICAgZ2xEZXB0aFJhbmdl
ZiAgICAgICAgICAgICAgICAgICBAMzgKKyAgICBnbERldGFjaFNoYWRlciAgICAgICAgICAgICAg
ICAgIEAzNQorICAgIGdsRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgQDM5CisgICAgZ2xE
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkgICAgICBANDAKKyAgICBnbERyYXdBcnJheXMgICAgICAg
ICAgICAgICAgICAgIEA0MQorICAgIGdsRHJhd0VsZW1lbnRzICAgICAgICAgICAgICAgICAgQDQy
CisgICAgZ2xFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICBANDMKKyAgICBnbEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5ICAgICAgIEA0NAorICAgIGdsRmluaXNoICAgICAgICAgICAgICAgICAg
ICAgICAgQDQ1CisgICAgZ2xGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICBANDYKKyAgICBn
bEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyICAgICAgIEA0NworICAgIGdsRnJhbWVidWZmZXJUZXh0
dXJlMkQgICAgICAgICAgQDQ4CisgICAgZ2xGcm9udEZhY2UgICAgICAgICAgICAgICAgICAgICBA
NDkKKyAgICBnbEdlbkJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgIEA1MAorICAgIGdsR2VuRnJh
bWVidWZmZXJzICAgICAgICAgICAgICAgQDUyCisgICAgZ2xHZW5SZW5kZXJidWZmZXJzICAgICAg
ICAgICAgICBANTMKKyAgICBnbEdlblRleHR1cmVzICAgICAgICAgICAgICAgICAgIEA1NAorICAg
IGdsR2VuZXJhdGVNaXBtYXAgICAgICAgICAgICAgICAgQDUxCisgICAgZ2xHZXRBY3RpdmVBdHRy
aWIgICAgICAgICAgICAgICBANTUKKyAgICBnbEdldEFjdGl2ZVVuaWZvcm0gICAgICAgICAgICAg
IEA1NgorICAgIGdsR2V0QXR0YWNoZWRTaGFkZXJzICAgICAgICAgICAgQDU3CisgICAgZ2xHZXRB
dHRyaWJMb2NhdGlvbiAgICAgICAgICAgICBANTgKKyAgICBnbEdldEJvb2xlYW52ICAgICAgICAg
ICAgICAgICAgIEA1OQorICAgIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYgICAgICAgICAgQDYwCisg
ICAgZ2xHZXRFcnJvciAgICAgICAgICAgICAgICAgICAgICBANjEKKyAgICBnbEdldEZsb2F0diAg
ICAgICAgICAgICAgICAgICAgIEA2MgorICAgIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYgICBANjMKKyAgICBnbEdldEludGVnZXJ2ICAgICAgICAgICAgICAgICAgIEA2NAor
ICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cgICAgICAgICAgICAgQDY2CisgICAgZ2xHZXRQcm9ncmFt
aXYgICAgICAgICAgICAgICAgICBANjUKKyAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
ICAgIEA2NworICAgIGdsR2V0U2hhZGVySW5mb0xvZyAgICAgICAgICAgICAgQDY5CisgICAgZ2xH
ZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQgICAgICBANzAKKyAgICBnbEdldFNoYWRlclNvdXJjZSAg
ICAgICAgICAgICAgIEA3MQorICAgIGdsR2V0U2hhZGVyaXYgICAgICAgICAgICAgICAgICAgQDY4
CisgICAgZ2xHZXRTdHJpbmcgICAgICAgICAgICAgICAgICAgICBANzIKKyAgICBnbEdldFRleFBh
cmFtZXRlcmZ2ICAgICAgICAgICAgIEA3MworICAgIGdsR2V0VGV4UGFyYW1ldGVyaXYgICAgICAg
ICAgICAgQDc0CisgICAgZ2xHZXRVbmlmb3JtTG9jYXRpb24gICAgICAgICAgICBANzcKKyAgICBn
bEdldFVuaWZvcm1mdiAgICAgICAgICAgICAgICAgIEA3NQorICAgIGdsR2V0VW5pZm9ybWl2ICAg
ICAgICAgICAgICAgICAgQDc2CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiAgICAgICBA
ODAKKyAgICBnbEdldFZlcnRleEF0dHJpYmZ2ICAgICAgICAgICAgIEA3OAorICAgIGdsR2V0VmVy
dGV4QXR0cmliaXYgICAgICAgICAgICAgQDc5CisgICAgZ2xIaW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICBAODEKKyAgICBnbElzQnVmZmVyICAgICAgICAgICAgICAgICAgICAgIEA4MgorICAg
IGdsSXNFbmFibGVkICAgICAgICAgICAgICAgICAgICAgQDgzCisgICAgZ2xJc0ZyYW1lYnVmZmVy
ICAgICAgICAgICAgICAgICBAODQKKyAgICBnbElzUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAg
IEA4NQorICAgIGdsSXNSZW5kZXJidWZmZXIgICAgICAgICAgICAgICAgQDg2CisgICAgZ2xJc1No
YWRlciAgICAgICAgICAgICAgICAgICAgICBAODcKKyAgICBnbElzVGV4dHVyZSAgICAgICAgICAg
ICAgICAgICAgIEA4OAorICAgIGdsTGluZVdpZHRoICAgICAgICAgICAgICAgICAgICAgQDg5Cisg
ICAgZ2xMaW5rUHJvZ3JhbSAgICAgICAgICAgICAgICAgICBAOTAKKyAgICBnbFBpeGVsU3RvcmVp
ICAgICAgICAgICAgICAgICAgIEA5MQorICAgIGdsUG9seWdvbk9mZnNldCAgICAgICAgICAgICAg
ICAgQDkyCisgICAgZ2xSZWFkUGl4ZWxzICAgICAgICAgICAgICAgICAgICBAOTMKKyAgICBnbFJl
bGVhc2VTaGFkZXJDb21waWxlciAgICAgICAgIEA5NAorICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFn
ZSAgICAgICAgICAgQDk1CisgICAgZ2xTYW1wbGVDb3ZlcmFnZSAgICAgICAgICAgICAgICBAOTYK
KyAgICBnbFNjaXNzb3IgICAgICAgICAgICAgICAgICAgICAgIEA5NworICAgIGdsU2hhZGVyQmlu
YXJ5ICAgICAgICAgICAgICAgICAgQDk4CisgICAgZ2xTaGFkZXJTb3VyY2UgICAgICAgICAgICAg
ICAgICBAOTkKKyAgICBnbFN0ZW5jaWxGdW5jICAgICAgICAgICAgICAgICAgIEAxMDAKKyAgICBn
bFN0ZW5jaWxGdW5jU2VwYXJhdGUgICAgICAgICAgIEAxMDEKKyAgICBnbFN0ZW5jaWxNYXNrICAg
ICAgICAgICAgICAgICAgIEAxMDIKKyAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUgICAgICAgICAg
IEAxMDMKKyAgICBnbFN0ZW5jaWxPcCAgICAgICAgICAgICAgICAgICAgIEAxMDQKKyAgICBnbFN0
ZW5jaWxPcFNlcGFyYXRlICAgICAgICAgICAgIEAxMDUKKyAgICBnbFRleEltYWdlMkQgICAgICAg
ICAgICAgICAgICAgIEAxMDYKKyAgICBnbFRleFBhcmFtZXRlcmYgICAgICAgICAgICAgICAgIEAx
MDcKKyAgICBnbFRleFBhcmFtZXRlcmZ2ICAgICAgICAgICAgICAgIEAxMDgKKyAgICBnbFRleFBh
cmFtZXRlcmkgICAgICAgICAgICAgICAgIEAxMDkKKyAgICBnbFRleFBhcmFtZXRlcml2ICAgICAg
ICAgICAgICAgIEAxMTAKKyAgICBnbFRleFN1YkltYWdlMkQgICAgICAgICAgICAgICAgIEAxMTEK
KyAgICBnbFVuaWZvcm0xZiAgICAgICAgICAgICAgICAgICAgIEAxMTIKKyAgICBnbFVuaWZvcm0x
ZnYgICAgICAgICAgICAgICAgICAgIEAxMTMKKyAgICBnbFVuaWZvcm0xaSAgICAgICAgICAgICAg
ICAgICAgIEAxMTQKKyAgICBnbFVuaWZvcm0xaXYgICAgICAgICAgICAgICAgICAgIEAxMTUKKyAg
ICBnbFVuaWZvcm0yZiAgICAgICAgICAgICAgICAgICAgIEAxMTYKKyAgICBnbFVuaWZvcm0yZnYg
ICAgICAgICAgICAgICAgICAgIEAxMTcKKyAgICBnbFVuaWZvcm0yaSAgICAgICAgICAgICAgICAg
ICAgIEAxMTgKKyAgICBnbFVuaWZvcm0yaXYgICAgICAgICAgICAgICAgICAgIEAxMTkKKyAgICBn
bFVuaWZvcm0zZiAgICAgICAgICAgICAgICAgICAgIEAxMjAKKyAgICBnbFVuaWZvcm0zZnYgICAg
ICAgICAgICAgICAgICAgIEAxMjEKKyAgICBnbFVuaWZvcm0zaSAgICAgICAgICAgICAgICAgICAg
IEAxMjIKKyAgICBnbFVuaWZvcm0zaXYgICAgICAgICAgICAgICAgICAgIEAxMjMKKyAgICBnbFVu
aWZvcm00ZiAgICAgICAgICAgICAgICAgICAgIEAxMjQKKyAgICBnbFVuaWZvcm00ZnYgICAgICAg
ICAgICAgICAgICAgIEAxMjUKKyAgICBnbFVuaWZvcm00aSAgICAgICAgICAgICAgICAgICAgIEAx
MjYKKyAgICBnbFVuaWZvcm00aXYgICAgICAgICAgICAgICAgICAgIEAxMjcKKyAgICBnbFVuaWZv
cm1NYXRyaXgyZnYgICAgICAgICAgICAgIEAxMjgKKyAgICBnbFVuaWZvcm1NYXRyaXgzZnYgICAg
ICAgICAgICAgIEAxMjkKKyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYgICAgICAgICAgICAgIEAxMzAK
KyAgICBnbFVzZVByb2dyYW0gICAgICAgICAgICAgICAgICAgIEAxMzEKKyAgICBnbFZhbGlkYXRl
UHJvZ3JhbSAgICAgICAgICAgICAgIEAxMzIKKyAgICBnbFZlcnRleEF0dHJpYjFmICAgICAgICAg
ICAgICAgIEAxMzMKKyAgICBnbFZlcnRleEF0dHJpYjFmdiAgICAgICAgICAgICAgIEAxMzQKKyAg
ICBnbFZlcnRleEF0dHJpYjJmICAgICAgICAgICAgICAgIEAxMzUKKyAgICBnbFZlcnRleEF0dHJp
YjJmdiAgICAgICAgICAgICAgIEAxMzYKKyAgICBnbFZlcnRleEF0dHJpYjNmICAgICAgICAgICAg
ICAgIEAxMzcKKyAgICBnbFZlcnRleEF0dHJpYjNmdiAgICAgICAgICAgICAgIEAxMzgKKyAgICBn
bFZlcnRleEF0dHJpYjRmICAgICAgICAgICAgICAgIEAxMzkKKyAgICBnbFZlcnRleEF0dHJpYjRm
diAgICAgICAgICAgICAgIEAxNDAKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIgICAgICAgICAg
IEAxNDEKKyAgICBnbFZpZXdwb3J0ICAgICAgICAgICAgICAgICAgICAgIEAxNDIKKworICAgIDsg
RXh0ZW5zaW9ucworICAgIGdsVGV4SW1hZ2UzRE9FUyAgICAgICAgICAgICAgICAgQDE0MworICAg
IGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUgICAgICAgICAgQDE0OQorICAgIGdsUmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUgQDE1MAorICAgIGdsRGVsZXRlRmVuY2VzTlYgICAgICAg
ICAgICAgICAgQDE1MQorICAgIGdsRmluaXNoRmVuY2VOViAgICAgICAgICAgICAgICAgQDE1Mgor
ICAgIGdsR2VuRmVuY2VzTlYgICAgICAgICAgICAgICAgICAgQDE1MworICAgIGdsR2V0RmVuY2Vp
dk5WICAgICAgICAgICAgICAgICAgQDE1NAorICAgIGdsSXNGZW5jZU5WICAgICAgICAgICAgICAg
ICAgICAgQDE1NQorICAgIGdsU2V0RmVuY2VOViAgICAgICAgICAgICAgICAgICAgQDE1NgorICAg
IGdsVGVzdEZlbmNlTlYgICAgICAgICAgICAgICAgICAgQDE1NworICAgIGdsR2V0VHJhbnNsYXRl
ZFNoYWRlclNvdXJjZUFOR0xFIEAxNTkKKyAgICBnbFRleFN0b3JhZ2UyREVYVCAgICAgICAgICAg
ICAgIEAxNjAKKyAgICBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQgICAgIEAxNjEKKyAgICBn
bFJlYWRuUGl4ZWxzRVhUICAgICAgICAgICAgICAgIEAxNjIKKyAgICBnbEdldG5Vbmlmb3JtZnZF
WFQgICAgICAgICAgICAgIEAxNjMKKyAgICBnbEdldG5Vbmlmb3JtaXZFWFQgICAgICAgICAgICAg
IEAxNjQKKyAgICBnbEdlblF1ZXJpZXNFWFQgICAgICAgICAgICAgICAgIEAxNjUKKyAgICBnbERl
bGV0ZVF1ZXJpZXNFWFQgICAgICAgICAgICAgIEAxNjYKKyAgICBnbElzUXVlcnlFWFQgICAgICAg
ICAgICAgICAgICAgIEAxNjcKKyAgICBnbEJlZ2luUXVlcnlFWFQgICAgICAgICAgICAgICAgIEAx
NjgKKyAgICBnbEVuZFF1ZXJ5RVhUICAgICAgICAgICAgICAgICAgIEAxNjkKKyAgICBnbEdldFF1
ZXJ5aXZFWFQgICAgICAgICAgICAgICAgIEAxNzAKKyAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2RVhU
ICAgICAgICAgIEAxNzEKKyAgICBnbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSAgICAgIEAxNzIK
KyAgICBnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSAgICAgIEAxNzMKKyAgICBnbERyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFICAgIEAxNzQKKyAgICBnbFByb2dyYW1CaW5hcnlPRVMgICAgICAg
ICAgICAgIEAxNzUKKyAgICBnbEdldFByb2dyYW1CaW5hcnlPRVMgICAgICAgICAgIEAxNzYKKyAg
ICBnbERyYXdCdWZmZXJzRVhUICAgICAgICAgICAgICAgIEAxNzkKKworICAgIDsgRUdMIGRlcGVu
ZGVuY2llcworICAgIGdsQ3JlYXRlQ29udGV4dCAgICAgICAgICAgICAgICAgQDE0NCBOT05BTUUK
KyAgICBnbERlc3Ryb3lDb250ZXh0ICAgICAgICAgICAgICAgIEAxNDUgTk9OQU1FCisgICAgZ2xN
YWtlQ3VycmVudCAgICAgICAgICAgICAgICAgICBAMTQ2IE5PTkFNRQorICAgIGdsR2V0Q3VycmVu
dENvbnRleHQgICAgICAgICAgICAgQDE0NyBOT05BTUUKKyAgICBnbEdldFByb2NBZGRyZXNzICAg
ICAgICAgICAgICAgIEAxNDggTk9OQU1FCisgICAgZ2xCaW5kVGV4SW1hZ2UgICAgICAgICAgICAg
ICAgICBAMTU4IE5PTkFNRQorICAgIGdsQ3JlYXRlUmVuZGVyZXIgICAgICAgICAgICAgICAgQDE3
NyBOT05BTUUKKyAgICBnbERlc3Ryb3lSZW5kZXJlciAgICAgICAgICAgICAgIEAxNzggTk9OQU1F
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIucmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIucmMJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYwkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMDIgQEAKKy8vIE1pY3Jvc29mdCBWaXN1YWwgQysrIGdlbmVyYXRl
ZCByZXNvdXJjZSBzY3JpcHQuCisvLworI2luY2x1ZGUgInJlc291cmNlLmgiCisKKyNkZWZpbmUg
QVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBH
ZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMiByZXNvdXJjZS4KKy8vCisjaW5jbHVkZSA8
d2luZG93cy5oPgorI2luY2x1ZGUgIi4uL2NvbW1vbi92ZXJzaW9uLmgiCisKKy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCisjdW5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUworCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLworLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzCisKKyNpZiAhZGVmaW5lZChB
RlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX0VOVSkKKyNpZmRlZiBfV0lOMzIK
K0xBTkdVQUdFIExBTkdfRU5HTElTSCwgU1VCTEFOR19FTkdMSVNIX1VTCisjcHJhZ21hIGNvZGVf
cGFnZSgxMjUyKQorI2VuZGlmIC8vX1dJTjMyCisKKyNpZmRlZiBBUFNUVURJT19JTlZPS0VECisv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIFRFWFRJTkNMVURFCisvLworCisxIFRFWFRJTkNM
VURFIAorQkVHSU4KKyAgICAicmVzb3VyY2UuaFwwIgorRU5ECisKKzIgVEVYVElOQ0xVREUgCitC
RUdJTgorICAgICIjaW5jbHVkZSAiImFmeHJlcy5oIiJcclxuIgorICAgICIjaW5jbHVkZSAiIi4u
L2NvbW1vbi92ZXJzaW9uLmgiIlwwIgorRU5ECisKKzMgVEVYVElOQ0xVREUgCitCRUdJTgorICAg
ICJcclxuIgorICAgICJcMCIKK0VORAorCisjZW5kaWYgICAgLy8gQVBTVFVESU9fSU5WT0tFRAor
CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gVmVyc2lvbgorLy8KKworVlNfVkVSU0lP
Tl9JTkZPIFZFUlNJT05JTkZPCisgRklMRVZFUlNJT04gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJT
SU9OLEJVSUxEX1ZFUlNJT04sQlVJTERfUkVWSVNJT04KKyBQUk9EVUNUVkVSU0lPTiBNQUpPUl9W
RVJTSU9OLE1JTk9SX1ZFUlNJT04sQlVJTERfVkVSU0lPTixCVUlMRF9SRVZJU0lPTgorIEZJTEVG
TEFHU01BU0sgMHgxN0wKKyNpZmRlZiBfREVCVUcKKyBGSUxFRkxBR1MgMHgxTAorI2Vsc2UKKyBG
SUxFRkxBR1MgMHgwTAorI2VuZGlmCisgRklMRU9TIDB4NEwKKyBGSUxFVFlQRSAweDJMCisgRklM
RVNVQlRZUEUgMHgwTAorQkVHSU4KKyAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCisgICAgQkVH
SU4KKyAgICAgICAgQkxPQ0sgIjA0MDkwNGIwIgorICAgICAgICBCRUdJTgorICAgICAgICAgICAg
VkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJBTkdMRSBsaWJHTEVTdjIgRHluYW1pYyBMaW5rIExp
YnJhcnkiCisgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBWRVJTSU9OX1NUUklORwor
ICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJsaWJHTEVTdjIiCisgICAgICAgICAg
ICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IgorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAibGliR0xFU3YyLmRsbCIK
KyAgICAgICAgICAgIFZBTFVFICJQcml2YXRlQnVpbGQiLCBWRVJTSU9OX1NUUklORworICAgICAg
ICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIkFOR0xFIGxpYkdMRVN2MiBEeW5hbWljIExpbmsg
TGlicmFyeSIKKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsIFZFUlNJT05fU1RS
SU5HCisgICAgICAgIEVORAorICAgIEVORAorICAgIEJMT0NLICJWYXJGaWxlSW5mbyIKKyAgICBC
RUdJTgorICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDQwOSwgMTIwMAorICAgIEVORAor
RU5ECisKKyNlbmRpZiAgICAvLyBFbmdsaXNoIChVLlMuKSByZXNvdXJjZXMKKy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCisKKworCisjaWZuZGVmIEFQU1RVRElPX0lOVk9LRUQKKy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCisvLworLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDMgcmVzb3VyY2Uu
CisvLworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisjZW5kaWYgICAgLy8gbm90IEFQU1RVRElP
X0lOVk9LRUQKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGli
R0xFU3YyLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9saWJHTEVTdjIudmN4cHJvagkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLnZjeHByb2oJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDIzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYt
OCI/Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAi
IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIw
MDMiPg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAg
PFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29u
ZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8
L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENv
bmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5E
ZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisg
ICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0Nv
bmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Q
cm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IlJlbGVhc2V8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0
aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25m
aWd1cmF0aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xv
YmFscyI+DQorICAgIDxQcm9qZWN0R3VpZD57QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0ItOTgxRTZG
NDQ4RTc4fTwvUHJvamVjdEd1aWQ+DQorICAgIDxSb290TmFtZXNwYWNlPmxpYkdMRVN2MjwvUm9v
dE5hbWVzcGFjZT4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29m
dC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25m
aWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25m
aWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+
DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1p
emF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJD
b25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9D
b25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJT
ZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZp
Z3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4N
CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6
YXRpb24+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25m
aWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25m
aWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+
DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0
aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5z
aW9uU2V0dGluZ3MiPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJl
bD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMo
JyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBM
YWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPElt
cG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9
IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29u
ZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9y
dEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8
SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0i
IC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBw
RGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExh
YmVsPSJVc2VyTWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZp
bGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGly
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4kKENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVl
PC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZp
Z3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlvbilcPC9J
bnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4N
CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8
L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnRE
aXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxP
dXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091dERp
cj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L0ludERpcj4N
CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPElu
Y2x1ZGVQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIj4kKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBhdGg+DQorICAgIDxMaWJyYXJ5UGF0
aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyI+JChMaWJyYXJ5UGF0aCk8L0xpYnJhcnlQYXRoPg0KKyAgICA8SW5jbHVkZVBhdGggQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKEluY2x1
ZGVQYXRoKTwvSW5jbHVkZVBhdGg+DQorICAgIDxMaWJyYXJ5UGF0aCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTGlicmFyeVBhdGgpPC9M
aWJyYXJ5UGF0aD4NCisgICAgPEluY2x1ZGVQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBh
dGg+DQorICAgIDxJbmNsdWRlUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBhdGg+DQor
ICAgIDxMaWJyYXJ5UGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+JChMaWJyYXJ5UGF0aCk8L0xpYnJhcnlQYXRoPg0KKyAgICA8TGli
cmFyeVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+JChMaWJyYXJ5UGF0aCk8L0xpYnJhcnlQYXRoPg0KKyAgPC9Qcm9wZXJ0eUdy
b3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAg
IDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpOyQoUHJvamVjdERpcikvLi47ICQoUHJv
amVjdERpcikvLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz5XSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtMSUJHTEVTVjJfRVhQT1JUUztfQ1JU
X1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9N
aW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVj
a3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJl
YWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNl
PC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2Fybmlu
Z0xldmVsPg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0Fz
RXJyb3I+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9E
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40
MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7JShEaXNhYmxlU3BlY2lmaWNX
YXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxQcmVjb21waWxlZEhl
YWRlckZpbGU+cHJlY29tcGlsZWQuaDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAgIDxB
ZGRpdGlvbmFsT3B0aW9ucz4kKEV4dGVybmFsQ29tcGlsZXJPcHRpb25zKSAlKEFkZGl0aW9uYWxP
cHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGlu
az4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5kM2Q5LmxpYjtkeGd1aWQubGliOyUo
QWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAg
PE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkdMRVN2Mi5kZWY8L01vZHVsZURlZmluaXRpb25GaWxl
Pg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0lu
Zm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KKyAgICAg
IDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50
aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQor
ICAgIDwvTGluaz4NCisgICAgPFBvc3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxDb21tYW5kPiU0MGVj
aG8gb24NCitta2RpciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCIN
Citjb3B5ICIkKE91dERpcilsaWJHTEVTdjIuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwk
KENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJHTEVTdjIubGliIiAiJChQcm9q
ZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCislNDBlY2hvIG9mZg0KKzwvQ29t
bWFuZD4NCisgICAgPC9Qb3N0QnVpbGRFdmVudD4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4N
CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxP
cHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rp
b25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9qZWN0RGly
KS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nl
c3NvckRlZmluaXRpb25zPkFOR0xFX0RJU0FCTEVfVFJBQ0U7V0lOMzI7TkRFQlVHO19XSU5ET1dT
O19VU1JETEw7TElCR0xFU1YyX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlO
TUFYO19TRUNVUkVfU0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50
aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhl
YWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAg
IDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAg
PERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0
MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDcxODslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwv
RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyRmlsZT5w
cmVjb21waWxlZC5oPC9QcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPEFkZGl0aW9uYWxP
cHRpb25zPiQoRXh0ZXJuYWxDb21waWxlck9wdGlvbnMpICUoQWRkaXRpb25hbE9wdGlvbnMpPC9B
ZGRpdGlvbmFsT3B0aW9ucz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAg
IDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQzZDkubGliO2R4Z3VpZC5saWI7JShBZGRpdGlvbmFs
RGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8SWdub3JlQWxs
RGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4NCisgICAg
ICA8TW9kdWxlRGVmaW5pdGlvbkZpbGU+bGliR0xFU3YyLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZp
bGU+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAg
ICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAg
PEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8
RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlv
bj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAg
ICA8L0xpbms+DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hv
IG9uDQorbWtkaXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQor
Y29weSAiJChPdXREaXIpbGliR0xFU3YyLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChD
b25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmxpYiIgIiQoUHJvamVj
dERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1h
bmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQor
ICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52aXJv
bm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xDb21w
aWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLy4uOyAkKFByb2pl
Y3REaXIpLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEw7TElCR0xFU1YyX0VYUE9SVFM7X0NSVF9T
RUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9Q
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWlu
aW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tz
PC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFk
ZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwv
UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdM
ZXZlbD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIz
OTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ3MTg7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rp
c2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlBy
b2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8VHJlYXRXYXJu
aW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxQcmVjb21waWxl
ZEhlYWRlckZpbGU+cHJlY29tcGlsZWQuaDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAg
IDxBZGRpdGlvbmFsT3B0aW9ucz4kKEV4dGVybmFsQ29tcGlsZXJPcHRpb25zKSAlKEFkZGl0aW9u
YWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5kM2Q5LmxpYjtkeGd1aWQubGli
OyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAg
ICAgPE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkdMRVN2Mi5kZWY8L01vZHVsZURlZmluaXRpb25G
aWxlPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1
Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KKyAg
ICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2
ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+
DQorICAgIDwvTGluaz4NCisgICAgPFBvc3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxDb21tYW5kPiU0
MGVjaG8gb24NCitta2RpciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24p
XCINCitjb3B5ICIkKE91dERpcilsaWJHTEVTdjIuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxp
YlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJHTEVTdjIubGliIiAiJChQ
cm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCislNDBlY2hvIG9mZg0KKzwv
Q29tbWFuZD4NCisgICAgPC9Qb3N0QnVpbGRFdmVudD4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91
cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdl
dEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAg
PENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+
DQorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkFueVN1aXRhYmxlPC9JbmxpbmVGdW5j
dGlvbkV4cGFuc2lvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFBy
b2plY3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7TElC
R0xFU1YyX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYO19TRUNVUkVf
U0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25z
Pg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4N
CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAg
ICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEaXNhYmxlU3Bl
Y2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDcx
ODslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQor
ICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2Fy
bmluZ0FzRXJyb3I+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyRmlsZT5wcmVjb21waWxlZC5o
PC9QcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPiQoRXh0
ZXJuYWxDb21waWxlck9wdGlvbnMpICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0
aW9ucz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFs
RGVwZW5kZW5jaWVzPmQzZDkubGliO2R4Z3VpZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVz
KTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJh
cmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4NCisgICAgICA8TW9kdWxlRGVm
aW5pdGlvbkZpbGU+bGliR0xFU3YyLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAgICAg
PEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+
DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXpl
UmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURB
VEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlv
blByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8
VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQor
ICAgIDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIg
IiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXRE
aXIpbGliR0xFU3YyLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9u
KVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxs
aWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwv
UG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbUdyb3Vw
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRoaXJkX3BhcnR5XG11cm11cmhhc2hcTXVy
bXVySGFzaDMuY3BwIj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPk5vdFVzaW5nPC9QcmVj
b21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8L1By
ZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPk5vdFVzaW5nPC9QcmVj
b21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPk5vdFVzaW5nPC9QcmVj
b21waWxlZEhlYWRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iQnVmZmVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJDb250ZXh0LmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25cZGVidWcuY3BwIj4NCisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAg
ICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRmVuY2UuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IkZsb2F0MTZUb0Zsb2F0MzIuY3BwIiAvPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IkZyYW1lYnVmZmVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJIYW5kbGVBbGxvY2F0b3IuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Imxp
YkdMRVN2Mi5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFpbi5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icHJlY29tcGlsZWQuY3BwIj4NCisgICAgICA8UHJlY29t
cGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciPkNyZWF0ZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPkNyZWF0ZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+Q3JlYXRlPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPkNyZWF0ZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IlByb2dyYW0uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IlByb2dyYW1CaW5hcnkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlF1
ZXJ5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25cUmVmQ291bnRP
YmplY3QuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlJlbmRlcmJ1ZmZlci5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcQmxpdC5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2UxMS5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2U5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdlMTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2U5LmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0icmVuZGVyZXJcSW1hZ2U5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5k
ZXJlclxJbmRleEJ1ZmZlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVy
ZXJcSW5kZXhCdWZmZXIxMS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVy
ZXJcSW5kZXhCdWZmZXI5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJl
clxJbmRleERhdGFNYW5hZ2VyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5k
ZXJlclxJbWFnZVNTRTIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVy
XEltYWdlMTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXElucHV0
TGF5b3V0Q2FjaGUuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFF1
ZXJ5MTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5OS5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXIuY3BwIiAv
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyMTEuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyMTFfdXRpbHMuY3BwIiAv
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyOS5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXI5X3V0aWxzLmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQxMS5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0OS5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyU3RhdGVDYWNoZS5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTEx
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVjdXRh
YmxlOS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcU3dhcENoYWlu
MTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjku
Y3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFRleHR1cmVTdG9yYWdl
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJlU3RvcmFn
ZTExLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJlU3Rv
cmFnZTkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1
ZmZlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVm
ZmVyMTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1
ZmZlcjkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleERh
dGFNYW5hZ2VyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0
ZXhEZWNsYXJhdGlvbkNhY2hlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJSZXNv
dXJjZU1hbmFnZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlNoYWRlci5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVGV4dHVyZS5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iVW5pZm9ybS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
dXRpbGl0aWVzLmNwcCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cZGVidWcuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxjb21tb25cc3lzdGVtLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cdGhpcmRfcGFydHlcbXVybXVyaGFzaFxNdXJtdXJIYXNoMy5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9ImFuZ2xldHlwZXMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJCaW5hcnlTdHJlYW0uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCdWZmZXIuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJjb25zdGFudHMuaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJDb250ZXh0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRmVu
Y2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJGcmFtZWJ1ZmZlci5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wyLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxHTEVTMlxnbDJleHQuaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMnBsYXRmb3JtLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSGFuZGxlQWxsb2NhdG9yLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0ibWFpbi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Im1hdGh1dGlsLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icHJlY29tcGlsZWQuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJQcm9ncmFtLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iUHJvZ3JhbUJpbmFyeS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IlF1ZXJ5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXFJlZkNvdW50
T2JqZWN0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVuZGVyYnVmZmVyLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcQmxpdC5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEZlbmNlMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxGZW5jZTkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJy
ZW5kZXJlclxGZW5jZUltcGwuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxCdWZmZXJTdG9yYWdlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
QnVmZmVyU3RvcmFnZTExLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
QnVmZmVyU3RvcmFnZTkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxn
ZW5lcmF0ZW1pcC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdl
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2UxMS5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlOS5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXIxMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyOS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXEluZGV4RGF0YU1hbmFnZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxJbnB1dExheW91dENhY2hlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcUXVlcnkxMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InJlbmRlcmVyXFF1ZXJ5SW1wbC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRl
cmVyXFF1ZXJ5OS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRl
cmVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXIxMS5o
IiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyMTFfdXRpbHMu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlcjkuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxyZW5kZXJlcjlfdXRpbHMuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQuaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQxMS5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclRhcmdldDkuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJTdGF0ZUNhY2hlLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyQ2FjaGUuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVjdXRhYmxlLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTExLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTkuaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNsZWFyMTF2
cy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGls
ZWRcY2xlYXJtdWx0aXBsZTExcHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNsZWFyc2luZ2xlMTFwcy5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcY29tcG9uZW50bWFza3BzLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxm
bGlweXZzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xj
b21waWxlZFxsdW1pbmFuY2Vwcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRl
cmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2gxMXZzLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaGx1bTExcHMu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVk
XHBhc3N0aHJvdWdobHVtYWxwaGExMXBzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaHBzLmgiIC8+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaHJnYjEx
cHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBp
bGVkXHBhc3N0aHJvdWdocmdiYTExcHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJy
ZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXHN0YW5kYXJkdnMuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclxTd2FwQ2hhaW4uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZW5kZXJlclxTd2FwQ2hhaW4xMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InJlbmRlcmVyXFN3YXBDaGFpbjkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxUZXh0dXJlU3RvcmFnZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRl
cmVyXFRleHR1cmVTdG9yYWdlMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxUZXh0dXJlU3RvcmFnZTkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxWZXJ0ZXhCdWZmZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxWZXJ0ZXhCdWZmZXIxMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XFZlcnRleEJ1ZmZlcjkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclx2
ZXJ0ZXhjb252ZXJzaW9uLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
VmVydGV4RGF0YU1hbmFnZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVzb3VyY2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJSZXNvdXJjZU1hbmFnZXIu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTaGFkZXIuaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJUZXh0dXJlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVW5p
Zm9ybS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InV0aWxpdGllcy5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblx2ZXJzaW9uLmgiIC8+DQorICA8L0l0ZW1H
cm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxOb25lIEluY2x1ZGU9ImxpYkdMRVN2Mi5kZWYi
IC8+DQorICAgIDxOb25lIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcQmxpdC5wcyIgLz4NCisg
ICAgPE5vbmUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xCbGl0LnZzIiAvPg0KKyAgICA8Tm9u
ZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXENsZWFyMTEuaGxzbCIgLz4NCisgICAgPE5vbmUg
SW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xnZW5lcmF0ZV9zaGFkZXJzLmJhdCIgLz4NCisgICAg
PE5vbmUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xQYXNzdGhyb3VnaDExLmhsc2wiIC8+DQor
ICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5j
bHVkZT0ibGliR0xFU3YyLnJjIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0K
KyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlxjb21waWxlclxwcmVwcm9jZXNzb3Jc
cHJlcHJvY2Vzc29yLnZjeHByb2oiPg0KKyAgICAgIDxQcm9qZWN0PntmYmUzMmRmMy0wZmIwLTRm
MmYtYTQyNC0yYzIxYmQ3YmMzMjV9PC9Qcm9qZWN0Pg0KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+
DQorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXGNvbXBpbGVyXHRyYW5zbGF0b3Jf
Y29tbW9uLnZjeHByb2oiPg0KKyAgICAgIDxQcm9qZWN0Pns1YjNhNmRiOC0xZTdlLTQwZDctOTJi
OS1kYThhYWU2MTlmYWR9PC9Qcm9qZWN0Pg0KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+DQorICAg
IDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXGNvbXBpbGVyXHRyYW5zbGF0b3JfaGxzbC52
Y3hwcm9qIj4NCisgICAgICA8UHJvamVjdD57NTYyMGYwZTQtNmM0My00OWJjLWExNzgtYjgwNGUx
YTBjM2E3fTwvUHJvamVjdD4NCisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8
L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5Pg0KKyAgICAgIDxQcml2YXRlPnRydWU8L1ByaXZhdGU+
DQorICAgICAgPENvcHlMb2NhbFNhdGVsbGl0ZUFzc2VtYmxpZXM+ZmFsc2U8L0NvcHlMb2NhbFNh
dGVsbGl0ZUFzc2VtYmxpZXM+DQorICAgICAgPExpbmtMaWJyYXJ5RGVwZW5kZW5jaWVzPnRydWU8
L0xpbmtMaWJyYXJ5RGVwZW5kZW5jaWVzPg0KKyAgICAgIDxVc2VMaWJyYXJ5RGVwZW5kZW5jeUlu
cHV0cz50cnVlPC9Vc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0cz4NCisgICAgPC9Qcm9qZWN0UmVm
ZXJlbmNlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRz
UGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJF
eHRlbnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvbGliR0xFU3YyLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qLmZpbHRlcnMJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xp
YkdMRVN2Mi52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTA5IEBACivv
u788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IFRvb2xz
VmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9w
ZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0i
U291cmNlIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00
Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5z
aW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9u
cz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4N
CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJF
NTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7
aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVy
IEluY2x1ZGU9IlRoaXJkIFBhcnR5Ij4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZGMxZGFj
NDAtMzU2My00MWJlLTllMmQtYzI1ODhkODY3MGZifTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAg
PC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iVGhpcmQgUGFydHlcTXVybXVySGFzaCI+
DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2IwMDA1ZDJmLTliNGEtNDY1OS1hMjcwLTEzODgx
MTE3NGY3M308L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVy
IEluY2x1ZGU9IkhlYWRlciBGaWxlc1xSZW5kZXJlciI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZp
ZXI+ezU2MmU0NjlkLTFhYmItNDRiYy1iN2ZhLTU1ZWVmYmY3NWFjY308L1VuaXF1ZUlkZW50aWZp
ZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNoYWRlcnMiPg0KKyAg
ICAgIDxVbmlxdWVJZGVudGlmaWVyPns2ZGMwMzA2Zi02Mzk2LTRlODAtOWVmOS0wOWI1OGFhNTNj
NGR9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNs
dWRlPSJTaGFkZXJzXENvbXBpbGVkIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjMzMjcw
NWItMTk5OS00MjkyLWEzOGItZGQ0NzMyOTczNGFhfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAg
PC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzXFJlbmRlcmVyIj4N
CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTNhNzY5NjQtNzdhMy00YjIwLWE2ZjUtZTE0ZTc2
MmQ0ZTE0fTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIg
SW5jbHVkZT0iSGVhZGVyIEZpbGVzXFJlbmRlcmVyOSI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZp
ZXI+ezM4NzdmMzVlLTg0NWMtNGU5NS1iOWE1LWM3ZDhiOWYzMDdjNX08L1VuaXF1ZUlkZW50aWZp
ZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlc1xS
ZW5kZXJlcjExIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MmQ3MGZkNjAtNmRlYS00ODlm
LWFjMDktMTY4OTBkMzI1NjY5fTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQor
ICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzXFJlbmRlcmVyOSI+DQorICAgICAgPFVu
aXF1ZUlkZW50aWZpZXI+ezYwZTE0ZjA0LTJjZjItNGEwNy1iM2VmLTdjNjhhODJiYTJkOX08L1Vu
aXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNv
dXJjZSBGaWxlc1xSZW5kZXJlcjExIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NzJkYjYx
ZDMtZTA4MS00YjU4LWJjNjMtYTA0YThhNzA1ODVmfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAg
PC9GaWx0ZXI+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iQnVmZmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29udGV4
dC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xD
b21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNvbW1vblxkZWJ1Zy5jcHAiPg0K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkZlbmNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iRmxvYXQxNlRvRmxvYXQzMi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkZy
YW1lYnVmZmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSGFuZGxlQWxsb2NhdG9y
LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibGliR0xFU3YyLmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0ibWFpbi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlBy
b2dyYW0uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQcm9ncmFtQmluYXJ5LmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUXVlcnkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxjb21tb25cUmVmQ291bnRPYmplY3QuY3BwIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJSZW5kZXJidWZmZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJSZXNv
dXJjZU1hbmFnZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTaGFkZXIuY3BwIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJUZXh0dXJlLmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0idXRpbGl0aWVzLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVy
ZXJcSW1hZ2UuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmls
dGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJl
clxUZXh0dXJlU3RvcmFnZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRl
cmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
InJlbmRlcmVyXFJlbmRlcmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVu
ZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cdGhpcmRfcGFydHlcbXVybXVyaGFzaFxNdXJtdXJIYXNoMy5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+VGhpcmQgUGFydHlcTXVybXVySGFzaDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleERhdGFNYW5hZ2VyLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4RGF0YU1h
bmFnZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJ
bWFnZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+UmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2VTU0UyLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVy
LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhC
dWZmZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJVbmlmb3JtLmNw
cCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBp
bGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3RvcmFnZS5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3Jh
Z2UxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJc
RmVuY2UxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVy
ZXJcSW1hZ2UxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVu
ZGVyZXJcSW5kZXhCdWZmZXIxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJl
bmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0icmVuZGVyZXJcUXVlcnkxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
XFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXIxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNl
IEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXIxMV91dGlscy5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0MTEuY3BwIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1
dGFibGUxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVy
ZXJcU3dhcENoYWluMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJl
cjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
InJlbmRlcmVyXFRleHR1cmVTdG9yYWdlMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBG
aWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjExLmNwcCI+DQorICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdlOS5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZTkuY3BwIj4NCisg
ICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2U5LmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xD
b21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyOS5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTku
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVy
ZXI5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXHJl
bmRlcmVyOV91dGlscy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVy
OTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJy
ZW5kZXJlclxSZW5kZXJUYXJnZXQ5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNc
UmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGU5LmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjkuY3BwIj4NCisgICAgICA8Rmls
dGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2U5LmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xD
b21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjku
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcQmxpdC5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbnB1dExh
eW91dENhY2hlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXIxMTwv
RmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5k
ZXJlclxSZW5kZXJTdGF0ZUNhY2hlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNc
UmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmNwcCI+DQorICAgICAgPEZp
bHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InByZWNvbXBpbGVkLmNwcCI+DQorICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1Hcm91
cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQmluYXJ5U3RyZWFt
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkJ1ZmZlci5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJDb250ZXh0LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkZlbmNlLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkZyYW1lYnVmZmVyLmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wyLmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wyZXh0LmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wycGxhdGZvcm0uaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iSGFuZGxlQWxsb2NhdG9yLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Im1haW4uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibWF0aHV0aWwuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iUHJvZ3JhbS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJQcm9ncmFtQmluYXJ5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlF1ZXJ5LmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblxSZWZDb3VudE9iamVjdC5oIj4NCisg
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJSZW5kZXJidWZmZXIuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVzb3VyY2UuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVzb3VyY2VN
YW5hZ2VyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNoYWRlci5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJUZXh0dXJlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InV0
aWxpdGllcy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cdmVyc2lvbi5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJhbmdsZXR5cGVzLmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHRoaXJkX3BhcnR5XG11cm11cmhhc2hcTXVybXVySGFzaDMuaCI+DQor
ICAgICAgPEZpbHRlcj5UaGlyZCBQYXJ0eVxNdXJtdXJIYXNoPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuaWZvcm0uaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaDExdnMu
aCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGls
ZWRccGFzc3Rocm91Z2hwcy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVy
ZXJcc2hhZGVyc1xjb21waWxlZFxzdGFuZGFyZHZzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVy
c1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNvbXBvbmVudG1hc2twcy5oIj4NCisg
ICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxmbGlw
eXZzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNv
bXBpbGVkXGx1bWluYW5jZXBzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxzaGFkZXJzXGNvbXBpbGVkXHBhc3N0aHJvdWdocmdiYTExcHMuaCI+DQorICAgICAgPEZp
bHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2hy
Z2IxMXBzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJz
XGNvbXBpbGVkXHBhc3N0aHJvdWdobHVtMTFwcy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNc
Q29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaGx1bWFscGhhMTFwcy5o
Ij4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxl
ZFxjbGVhcjExdnMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNo
YWRlcnNcY29tcGlsZWRcY2xlYXJtdWx0aXBsZTExcHMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFk
ZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcY2xlYXJzaW5nbGUxMXBzLmgiPg0K
KyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cc3lzdGVtLmgiPg0KKyAgICAg
IDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblxkZWJ1Zy5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXEZlbmNlSW1wbC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxnZW5lcmF0ZW1pcC5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleEJ1ZmZlci5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleERhdGFNYW5hZ2VyLmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5SW1wbC5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlci5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZS5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTd2FwQ2hhaW4u
aCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0
b3JhZ2UuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVy
dGV4QnVmZmVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XHZlcnRleGNvbnZlcnNpb24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVy
ZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVuZGVyZXJcVmVydGV4RGF0YU1hbmFnZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmls
ZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3RvcmFnZTExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXIxMS5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5MTEuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlcjExLmgiPg0KKyAgICAg
IDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0MTEuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVj
dXRhYmxlMTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmls
dGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxTd2FwQ2hhaW4xMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjEx
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJl
bmRlcmVyXFRleHR1cmVTdG9yYWdlMTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNc
UmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXIxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2U5LmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZTkuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlOS5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXI5LmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTkuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyOS5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXI5X3V0aWxzLmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQ5
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJF
eGVjdXRhYmxlOS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVy
ZXJcU3dhcENoYWluOS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVu
ZGVyZXJcVGV4dHVyZVN0b3JhZ2U5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJl
bmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXI5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZTExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2UxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyMTFfdXRpbHMuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZTkuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXNcUmVuZGVyZXJcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5MTEuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXJcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxCbGl0Lmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJDYWNo
ZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5wdXRM
YXlvdXRDYWNoZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRl
cmVyXFJlbmRlclN0YXRlQ2FjaGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVu
ZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZW5kZXJlclxWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJjb25zdGFudHMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icHJlY29tcGlsZWQuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAg
IDxOb25lIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcQmxpdC5wcyI+DQorICAgICAgPEZpbHRl
cj5TaGFkZXJzPC9GaWx0ZXI+DQorICAgIDwvTm9uZT4NCisgICAgPE5vbmUgSW5jbHVkZT0icmVu
ZGVyZXJcc2hhZGVyc1xCbGl0LnZzIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnM8L0ZpbHRlcj4N
CisgICAgPC9Ob25lPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGdlbmVy
YXRlX3NoYWRlcnMuYmF0Ij4NCisgICAgICA8RmlsdGVyPlNoYWRlcnM8L0ZpbHRlcj4NCisgICAg
PC9Ob25lPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXFBhc3N0aHJvdWdo
MTEuaGxzbCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzPC9GaWx0ZXI+DQorICAgIDwvTm9uZT4N
CisgICAgPE5vbmUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xDbGVhcjExLmhsc2wiPg0KKyAg
ICAgIDxGaWx0ZXI+U2hhZGVyczwvRmlsdGVyPg0KKyAgICA8L05vbmU+DQorICAgIDxOb25lIElu
Y2x1ZGU9ImxpYkdMRVN2Mi5kZWYiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+
DQorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0ibGliR0xFU3YyLnJjIiAvPg0KKyAgPC9J
dGVtR3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9tYWluLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU1IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQu
aCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIG1haW4uY3BwOiBETEwgZW50cnkgcG9pbnQgYW5k
IG1hbmFnZW1lbnQgb2YgdGhyZWFkLWxvY2FsIGRhdGEuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIv
bWFpbi5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKworc3RhdGljIERXT1JE
IGN1cnJlbnRUTFMgPSBUTFNfT1VUX09GX0lOREVYRVM7CisKK2V4dGVybiAiQyIgQk9PTCBXSU5B
UEkgRGxsTWFpbihISU5TVEFOQ0UgaW5zdGFuY2UsIERXT1JEIHJlYXNvbiwgTFBWT0lEIHJlc2Vy
dmVkKQoreworICAgIHN3aXRjaCAocmVhc29uKQorICAgIHsKKyAgICAgIGNhc2UgRExMX1BST0NF
U1NfQVRUQUNIOgorICAgICAgICB7CisgICAgICAgICAgICBjdXJyZW50VExTID0gVGxzQWxsb2Mo
KTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRUTFMgPT0gVExTX09VVF9PRl9JTkRFWEVTKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICAvLyBGYWxsIHRocm91Z2h0IHRvIGluaXRpYWxpemUgaW5k
ZXgKKyAgICAgIGNhc2UgRExMX1RIUkVBRF9BVFRBQ0g6CisgICAgICAgIHsKKyAgICAgICAgICAg
IGdsOjpDdXJyZW50ICpjdXJyZW50ID0gKGdsOjpDdXJyZW50KilMb2NhbEFsbG9jKExQVFIsIHNp
emVvZihnbDo6Q3VycmVudCkpOworCisgICAgICAgICAgICBpZiAoY3VycmVudCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBUbHNTZXRWYWx1ZShjdXJyZW50VExTLCBjdXJyZW50KTsK
KworICAgICAgICAgICAgICAgIGN1cnJlbnQtPmNvbnRleHQgPSBOVUxMOworICAgICAgICAgICAg
ICAgIGN1cnJlbnQtPmRpc3BsYXkgPSBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBETExfVEhSRUFEX0RFVEFDSDoKKyAgICAgICAgewor
ICAgICAgICAgICAgdm9pZCAqY3VycmVudCA9IFRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisg
ICAgICAgICAgICBpZiAoY3VycmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBM
b2NhbEZyZWUoKEhMT0NBTCljdXJyZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgRExMX1BST0NFU1NfREVUQUNIOgorICAgICAgICB7Cisg
ICAgICAgICAgICB2b2lkICpjdXJyZW50ID0gVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7CisKKyAg
ICAgICAgICAgIGlmIChjdXJyZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIExv
Y2FsRnJlZSgoSExPQ0FMKWN1cnJlbnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBU
bHNGcmVlKGN1cnJlbnRUTFMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgZGVm
YXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK25h
bWVzcGFjZSBnbAorewordm9pZCBtYWtlQ3VycmVudChDb250ZXh0ICpjb250ZXh0LCBlZ2w6OkRp
c3BsYXkgKmRpc3BsYXksIGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKK3sKKyAgICBDdXJyZW50ICpj
dXJyZW50ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgY3VycmVu
dC0+Y29udGV4dCA9IGNvbnRleHQ7CisgICAgY3VycmVudC0+ZGlzcGxheSA9IGRpc3BsYXk7CisK
KyAgICBpZiAoY29udGV4dCAmJiBkaXNwbGF5ICYmIHN1cmZhY2UpCisgICAgeworICAgICAgICBj
b250ZXh0LT5tYWtlQ3VycmVudChzdXJmYWNlKTsKKyAgICB9Cit9CisKK0NvbnRleHQgKmdldENv
bnRleHQoKQoreworICAgIEN1cnJlbnQgKmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUo
Y3VycmVudFRMUyk7CisKKyAgICByZXR1cm4gY3VycmVudC0+Y29udGV4dDsKK30KKworQ29udGV4
dCAqZ2V0Tm9uTG9zdENvbnRleHQoKQoreworICAgIENvbnRleHQgKmNvbnRleHQgPSBnZXRDb250
ZXh0KCk7CisgICAgCisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoY29udGV4
dC0+aXNDb250ZXh0TG9zdCgpKQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0OworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCitlZ2w6OkRpc3BsYXkgKmdldERpc3Bs
YXkoKQoreworICAgIEN1cnJlbnQgKmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3Vy
cmVudFRMUyk7CisKKyAgICByZXR1cm4gY3VycmVudC0+ZGlzcGxheTsKK30KKworLy8gUmVjb3Jk
cyBhbiBlcnJvciBjb2RlCit2b2lkIGVycm9yKEdMZW51bSBlcnJvckNvZGUpCit7CisgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbEdldEN1cnJlbnRDb250ZXh0KCk7CisKKyAgICBpZiAoY29u
dGV4dCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoZXJyb3JDb2RlKQorICAgICAgICB7CisgICAg
ICAgICAgY2FzZSBHTF9JTlZBTElEX0VOVU06CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRJ
bnZhbGlkRW51bSgpOworICAgICAgICAgICAgVFJBQ0UoIlx0ISBFcnJvciBnZW5lcmF0ZWQ6IGlu
dmFsaWQgZW51bVxuIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0lO
VkFMSURfVkFMVUU6CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRJbnZhbGlkVmFsdWUoKTsK
KyAgICAgICAgICAgIFRSQUNFKCJcdCEgRXJyb3IgZ2VuZXJhdGVkOiBpbnZhbGlkIHZhbHVlXG4i
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfSU5WQUxJRF9PUEVSQVRJ
T046CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRJbnZhbGlkT3BlcmF0aW9uKCk7CisgICAg
ICAgICAgICBUUkFDRSgiXHQhIEVycm9yIGdlbmVyYXRlZDogaW52YWxpZCBvcGVyYXRpb25cbiIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9PVVRfT0ZfTUVNT1JZOgor
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkT3V0T2ZNZW1vcnkoKTsKKyAgICAgICAgICAgIFRS
QUNFKCJcdCEgRXJyb3IgZ2VuZXJhdGVkOiBvdXQgb2YgbWVtb3J5XG4iKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT046
CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRJbnZhbGlkRnJhbWVidWZmZXJPcGVyYXRpb24o
KTsKKyAgICAgICAgICAgIFRSQUNFKCJcdCEgRXJyb3IgZ2VuZXJhdGVkOiBpbnZhbGlkIGZyYW1l
YnVmZmVyIG9wZXJhdGlvblxuIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZh
dWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQorfQorCit9CisKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9tYWluLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIG1haW4uaDog
TWFuYWdlbWVudCBvZiB0aHJlYWQtbG9jYWwgZGF0YS4KKworI2lmbmRlZiBMSUJHTEVTVjJfTUFJ
Tl9IXworI2RlZmluZSBMSUJHTEVTVjJfTUFJTl9IXworCisjaW5jbHVkZSAiY29tbW9uL2RlYnVn
LmgiCisjaW5jbHVkZSAiY29tbW9uL3N5c3RlbS5oIgorCituYW1lc3BhY2UgZWdsCit7CitjbGFz
cyBEaXNwbGF5OworY2xhc3MgU3VyZmFjZTsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBD
b250ZXh0OworICAgIAorc3RydWN0IEN1cnJlbnQKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0Owor
ICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheTsKK307CisKK3ZvaWQgbWFrZUN1cnJlbnQoQ29udGV4
dCAqY29udGV4dCwgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBlZ2w6OlN1cmZhY2UgKnN1cmZhY2Up
OworCitDb250ZXh0ICpnZXRDb250ZXh0KCk7CitDb250ZXh0ICpnZXROb25Mb3N0Q29udGV4dCgp
OworZWdsOjpEaXNwbGF5ICpnZXREaXNwbGF5KCk7CisKK3ZvaWQgZXJyb3IoR0xlbnVtIGVycm9y
Q29kZSk7CisKK3RlbXBsYXRlPGNsYXNzIFQ+Citjb25zdCBUICZlcnJvcihHTGVudW0gZXJyb3JD
b2RlLCBjb25zdCBUICZyZXR1cm5WYWx1ZSkKK3sKKyAgICBlcnJvcihlcnJvckNvZGUpOworCisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit9CisKK25hbWVzcGFjZSByeAoreworY2xhc3Mg
UmVuZGVyZXI7Cit9CisKK2V4dGVybiAiQyIKK3sKKy8vIEV4cG9ydGVkIGZ1bmN0aW9ucyBmb3Ig
dXNlIGJ5IEVHTAorZ2w6OkNvbnRleHQgKmdsQ3JlYXRlQ29udGV4dChjb25zdCBnbDo6Q29udGV4
dCAqc2hhcmVDb250ZXh0LCByeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBib29sIG5vdGlmeVJlc2V0
cywgYm9vbCByb2J1c3RBY2Nlc3MpOwordm9pZCBnbERlc3Ryb3lDb250ZXh0KGdsOjpDb250ZXh0
ICpjb250ZXh0KTsKK3ZvaWQgZ2xNYWtlQ3VycmVudChnbDo6Q29udGV4dCAqY29udGV4dCwgZWds
OjpEaXNwbGF5ICpkaXNwbGF5LCBlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOworZ2w6OkNvbnRleHQg
KmdsR2V0Q3VycmVudENvbnRleHQoKTsKK3J4OjpSZW5kZXJlciAqZ2xDcmVhdGVSZW5kZXJlcihl
Z2w6OkRpc3BsYXkgKmRpc3BsYXksIEhEQyBoRGMsIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3Bs
YXlJZCk7Cit2b2lkIGdsRGVzdHJveVJlbmRlcmVyKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIpOwor
CitfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlIF9fc3RkY2FsbCBnbEdl
dFByb2NBZGRyZXNzKGNvbnN0IGNoYXIgKnByb2NuYW1lKTsKK2Jvb2wgX19zdGRjYWxsIGdsQmlu
ZFRleEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSk7Cit9CisKKyNlbmRpZiAgIC8vIExJQkdM
RVNWMl9NQUlOX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L21hdGh1dGlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9tYXRodXRpbC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9tYXRodXRpbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2MSBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gbWF0aHV0aWwuaDogTWF0aCBhbmQgYml0IG1hbmlw
dWxhdGlvbiBmdW5jdGlvbnMuCisKKyNpZm5kZWYgTElCR0xFU1YyX01BVEhVVElMX0hfCisjZGVm
aW5lIExJQkdMRVNWMl9NQVRIVVRJTF9IXworCisjaW5jbHVkZSA8aW50cmluLmg+CisKKyNpbmNs
dWRlICJjb21tb24vc3lzdGVtLmgiCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVz
cGFjZSBnbAoreworc3RydWN0IFZlY3RvcjQKK3sKKyAgICBWZWN0b3I0KCkge30KKyAgICBWZWN0
b3I0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpIDogeCh4KSwgeSh5KSwgeih6
KSwgdyh3KSB7fQorCisgICAgZmxvYXQgeDsKKyAgICBmbG9hdCB5OworICAgIGZsb2F0IHo7Cisg
ICAgZmxvYXQgdzsKK307CisKK2lubGluZSBib29sIGlzUG93MihpbnQgeCkKK3sKKyAgICByZXR1
cm4gKHggJiAoeCAtIDEpKSA9PSAwICYmICh4ICE9IDApOworfQorCitpbmxpbmUgaW50IGxvZzIo
aW50IHgpCit7CisgICAgaW50IHIgPSAwOworICAgIHdoaWxlICgoeCA+PiByKSA+IDEpIHIrKzsK
KyAgICByZXR1cm4gcjsKK30KKworaW5saW5lIHVuc2lnbmVkIGludCBjZWlsUG93Mih1bnNpZ25l
ZCBpbnQgeCkKK3sKKyAgICBpZiAoeCAhPSAwKSB4LS07CisgICAgeCB8PSB4ID4+IDE7CisgICAg
eCB8PSB4ID4+IDI7CisgICAgeCB8PSB4ID4+IDQ7CisgICAgeCB8PSB4ID4+IDg7CisgICAgeCB8
PSB4ID4+IDE2OworICAgIHgrKzsKKworICAgIHJldHVybiB4OworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBNSU4sIHR5cGVuYW1lIE1BWD4KK2lubGluZSBUIGNsYW1wKFQgeCwg
TUlOIG1pbiwgTUFYIG1heCkKK3sKKyAgICAvLyBTaW5jZSBOYU5zIGZhaWwgYWxsIGNvbXBhcmlz
b24gdGVzdHMsIGEgTmFOIHZhbHVlIHdpbGwgZGVmYXVsdCB0byBtaW4KKyAgICByZXR1cm4geCA+
IG1pbiA/ICh4ID4gbWF4ID8gbWF4IDogeCkgOiBtaW47Cit9CisKK2lubGluZSBmbG9hdCBjbGFt
cDAxKGZsb2F0IHgpCit7CisgICAgcmV0dXJuIGNsYW1wKHgsIDAuMGYsIDEuMGYpOworfQorCit0
ZW1wbGF0ZTxjb25zdCBpbnQgbj4KK2lubGluZSB1bnNpZ25lZCBpbnQgdW5vcm0oZmxvYXQgeCkK
K3sKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgbWF4ID0gMHhGRkZGRkZGRiA+PiAoMzIgLSBuKTsK
KworICAgIGlmICh4ID4gMSkKKyAgICB7CisgICAgICAgIHJldHVybiBtYXg7CisgICAgfQorICAg
IGVsc2UgaWYgKHggPCAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgaW50KShtYXggKiB4ICsgMC41Zik7
CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBzdXBwb3J0c1NTRTIoKQoreworICAgIHN0YXRpYyBi
b29sIGNoZWNrZWQgPSBmYWxzZTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0cyA9IGZhbHNlOwor
CisgICAgaWYgKGNoZWNrZWQpCisgICAgeworICAgICAgICByZXR1cm4gc3VwcG9ydHM7CisgICAg
fQorCisgICAgaW50IGluZm9bNF07CisgICAgX19jcHVpZChpbmZvLCAwKTsKKyAgICAKKyAgICBp
ZiAoaW5mb1swXSA+PSAxKQorICAgIHsKKyAgICAgICAgX19jcHVpZChpbmZvLCAxKTsKKworICAg
ICAgICBzdXBwb3J0cyA9IChpbmZvWzNdID4+IDI2KSAmIDE7CisgICAgfQorCisgICAgY2hlY2tl
ZCA9IHRydWU7CisKKyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK2lubGluZSB1bnNpZ25lZCBz
aG9ydCBmbG9hdDMyVG9GbG9hdDE2KGZsb2F0IGZwMzIpCit7CisgICAgdW5zaWduZWQgaW50IGZw
MzJpID0gKHVuc2lnbmVkIGludCYpZnAzMjsKKyAgICB1bnNpZ25lZCBpbnQgc2lnbiA9IChmcDMy
aSAmIDB4ODAwMDAwMDApID4+IDE2OworICAgIHVuc2lnbmVkIGludCBhYnMgPSBmcDMyaSAmIDB4
N0ZGRkZGRkY7CisKKyAgICBpZihhYnMgPiAweDQ3RkZFRkZGKSAgIC8vIEluZmluaXR5CisgICAg
eworICAgICAgICByZXR1cm4gc2lnbiB8IDB4N0ZGRjsKKyAgICB9CisgICAgZWxzZSBpZihhYnMg
PCAweDM4ODAwMDAwKSAgIC8vIERlbm9ybWFsCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQg
bWFudGlzc2EgPSAoYWJzICYgMHgwMDdGRkZGRikgfCAweDAwODAwMDAwOyAgIAorICAgICAgICBp
bnQgZSA9IDExMyAtIChhYnMgPj4gMjMpOworCisgICAgICAgIGlmKGUgPCAyNCkKKyAgICAgICAg
eworICAgICAgICAgICAgYWJzID0gbWFudGlzc2EgPj4gZTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGFicyA9IDA7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gc2lnbiB8IChhYnMgKyAweDAwMDAwRkZGICsgKChhYnMgPj4gMTMpICYgMSkpID4+
IDEzOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gc2lnbiB8IChhYnMg
KyAweEM4MDAwMDAwICsgMHgwMDAwMEZGRiArICgoYWJzID4+IDEzKSAmIDEpKSA+PiAxMzsKKyAg
ICB9Cit9CisKK2Zsb2F0IGZsb2F0MTZUb0Zsb2F0MzIodW5zaWduZWQgc2hvcnQgaCk7CisKK30K
KworbmFtZXNwYWNlIHJ4Cit7CisKK3N0cnVjdCBSYW5nZQoreworICAgIFJhbmdlKCkge30KKyAg
ICBSYW5nZShpbnQgbG8sIGludCBoaSkgOiBzdGFydChsbyksIGVuZChoaSkgeyBBU1NFUlQobG8g
PD0gaGkpOyB9CisKKyAgICBpbnQgc3RhcnQ7CisgICAgaW50IGVuZDsKK307CisKK30KKworI2Vu
ZGlmICAgLy8gTElCR0xFU1YyX01BVEhVVElMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcHJlY29tcGlsZWQu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBwcmVj
b21waWxlZC5jcHA6IFByZWNvbXBpbGVkIGhlYWRlciBzb3VyY2UgZmlsZSBmb3IgbGliR0xFU3Yy
LgorCisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcHJlY29tcGlsZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBwcmVjb21waWxl
ZC5oOiBQcmVjb21waWxlZCBoZWFkZXIgZmlsZSBmb3IgbGliR0xFU3YyLgorCisjZGVmaW5lIEdM
X0FQSUNBTEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxHTEVTMi9nbDJleHQu
aD4KKworI2RlZmluZSBFR0xBUEkKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisKKyNpbmNsdWRlIDxh
c3NlcnQuaD4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGZsb2F0Lmg+CisjaW5jbHVk
ZSA8aW50cmluLmg+CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+
CisKKyNpbmNsdWRlIDxhbGdvcml0aG0+IC8vIGZvciBzdGQ6Om1pbiBhbmQgc3RkOjptYXgKKyNp
bmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRl
IDxzc3RyZWFtPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgor
I2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgPGQzZDkuaD4KKyNpbmNsdWRlIDxEM0QxMS5o
PgorI2luY2x1ZGUgPGR4Z2kuaD4KKyNpbmNsdWRlIDxEM0Rjb21waWxlci5oPgorCisjaWZkZWYg
X01TQ19WRVIKKyNpbmNsdWRlIDxoYXNoX21hcD4KKyNlbmRpZgpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVzb3VyY2UuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVzb3VyY2UuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorLy97e05PX0RFUEVOREVOQ0lFU319CisvLyBNaWNy
b3NvZnQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgaW5jbHVkZSBmaWxlLgorLy8gVXNlZCBieSBsaWJH
TEVTdjIucmMKKworLy8gTmV4dCBkZWZhdWx0IHZhbHVlcyBmb3IgbmV3IG9iamVjdHMKKy8vIAor
I2lmZGVmIEFQU1RVRElPX0lOVk9LRUQKKyNpZm5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9M
UworI2RlZmluZSBfQVBTX05FWFRfUkVTT1VSQ0VfVkFMVUUgICAgICAgIDEwMQorI2RlZmluZSBf
QVBTX05FWFRfQ09NTUFORF9WQUxVRSAgICAgICAgIDQwMDAxCisjZGVmaW5lIF9BUFNfTkVYVF9D
T05UUk9MX1ZBTFVFICAgICAgICAgMTAwMQorI2RlZmluZSBfQVBTX05FWFRfU1lNRURfVkFMVUUg
ICAgICAgICAgIDEwMQorI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvdXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNzQ2IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIHV0aWxpdGllcy5jcHA6IENvbnZlcnNpb24gZnVuY3Rpb25z
IGFuZCBvdGhlciB1dGlsaXR5IHJvdXRpbmVzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxp
dGllcy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorCituYW1lc3BhY2UgZ2wK
K3sKKworaW50IFVuaWZvcm1Db21wb25lbnRDb3VudChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9CT09MOgorICAgICAgY2FzZSBHTF9GTE9B
VDoKKyAgICAgIGNhc2UgR0xfSU5UOgorICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEOgorICAgICAg
Y2FzZSBHTF9TQU1QTEVSX0NVQkU6CisgICAgICAgICAgcmV0dXJuIDE7CisgICAgICBjYXNlIEdM
X0JPT0xfVkVDMjoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKKyAgICAgIGNhc2UgR0xfSU5U
X1ZFQzI6CisgICAgICAgICAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX0lOVF9WRUMzOgorICAg
ICAgY2FzZSBHTF9GTE9BVF9WRUMzOgorICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6CisgICAgICAg
ICAgcmV0dXJuIDM7CisgICAgICBjYXNlIEdMX0JPT0xfVkVDNDoKKyAgICAgIGNhc2UgR0xfRkxP
QVRfVkVDNDoKKyAgICAgIGNhc2UgR0xfSU5UX1ZFQzQ6CisgICAgICBjYXNlIEdMX0ZMT0FUX01B
VDI6CisgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6CisgICAg
ICAgICAgcmV0dXJuIDk7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgICAgcmV0
dXJuIDE2OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0K
KworICAgIHJldHVybiAwOworfQorCitHTGVudW0gVW5pZm9ybUNvbXBvbmVudFR5cGUoR0xlbnVt
IHR5cGUpCit7CisgICAgc3dpdGNoKHR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9CT09MOgor
ICAgICAgY2FzZSBHTF9CT09MX1ZFQzI6CisgICAgICBjYXNlIEdMX0JPT0xfVkVDMzoKKyAgICAg
IGNhc2UgR0xfQk9PTF9WRUM0OgorICAgICAgICAgIHJldHVybiBHTF9CT09MOworICAgICAgY2Fz
ZSBHTF9GTE9BVDoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKKyAgICAgIGNhc2UgR0xfRkxP
QVRfVkVDMzoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKKyAgICAgIGNhc2UgR0xfRkxPQVRf
TUFUMjoKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzoKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFU
NDoKKyAgICAgICAgICByZXR1cm4gR0xfRkxPQVQ7CisgICAgICBjYXNlIEdMX0lOVDoKKyAgICAg
IGNhc2UgR0xfU0FNUExFUl8yRDoKKyAgICAgIGNhc2UgR0xfU0FNUExFUl9DVUJFOgorICAgICAg
Y2FzZSBHTF9JTlRfVkVDMjoKKyAgICAgIGNhc2UgR0xfSU5UX1ZFQzM6CisgICAgICBjYXNlIEdM
X0lOVF9WRUM0OgorICAgICAgICAgIHJldHVybiBHTF9JTlQ7CisgICAgICBkZWZhdWx0OgorICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX05PTkU7Cit9CisK
K3NpemVfdCBVbmlmb3JtQ29tcG9uZW50U2l6ZShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2go
dHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0JPT0w6ICByZXR1cm4gc2l6ZW9mKEdMaW50KTsK
KyAgICAgIGNhc2UgR0xfRkxPQVQ6IHJldHVybiBzaXplb2YoR0xmbG9hdCk7CisgICAgICBjYXNl
IEdMX0lOVDogICByZXR1cm4gc2l6ZW9mKEdMaW50KTsKKyAgICAgIGRlZmF1bHQ6ICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3NpemVfdCBVbmlmb3Jt
SW50ZXJuYWxTaXplKEdMZW51bSB0eXBlKQoreworICAgIC8vIEV4cGFuZGVkIHRvIDQtZWxlbWVu
dCB2ZWN0b3JzCisgICAgcmV0dXJuIFVuaWZvcm1Db21wb25lbnRTaXplKFVuaWZvcm1Db21wb25l
bnRUeXBlKHR5cGUpKSAqIFZhcmlhYmxlUm93Q291bnQodHlwZSkgKiA0OworfQorCitzaXplX3Qg
VW5pZm9ybUV4dGVybmFsU2l6ZShHTGVudW0gdHlwZSkKK3sKKyAgICByZXR1cm4gVW5pZm9ybUNv
bXBvbmVudFNpemUoVW5pZm9ybUNvbXBvbmVudFR5cGUodHlwZSkpICogVW5pZm9ybUNvbXBvbmVu
dENvdW50KHR5cGUpOworfQorCitpbnQgVmFyaWFibGVSb3dDb3VudChHTGVudW0gdHlwZSkKK3sK
KyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgIGNhc2UgR0xfQk9PTDoKKyAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAg
ICBjYXNlIEdMX0lOVDoKKyAgICAgIGNhc2UgR0xfQk9PTF9WRUMyOgorICAgICAgY2FzZSBHTF9G
TE9BVF9WRUMyOgorICAgICAgY2FzZSBHTF9JTlRfVkVDMjoKKyAgICAgIGNhc2UgR0xfSU5UX1ZF
QzM6CisgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6CisgICAgICBjYXNlIEdMX0JPT0xfVkVDMzoK
KyAgICAgIGNhc2UgR0xfQk9PTF9WRUM0OgorICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0OgorICAg
ICAgY2FzZSBHTF9JTlRfVkVDNDoKKyAgICAgIGNhc2UgR0xfU0FNUExFUl8yRDoKKyAgICAgIGNh
c2UgR0xfU0FNUExFUl9DVUJFOgorICAgICAgICByZXR1cm4gMTsKKyAgICAgIGNhc2UgR0xfRkxP
QVRfTUFUMjoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6Cisg
ICAgICAgIHJldHVybiAzOworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OgorICAgICAgICByZXR1
cm4gNDsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisg
ICAgcmV0dXJuIDA7Cit9CisKK2ludCBWYXJpYWJsZUNvbHVtbkNvdW50KEdMZW51bSB0eXBlKQor
eworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX05PTkU6CisgICAgICAg
IHJldHVybiAwOworICAgICAgY2FzZSBHTF9CT09MOgorICAgICAgY2FzZSBHTF9GTE9BVDoKKyAg
ICAgIGNhc2UgR0xfSU5UOgorICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEOgorICAgICAgY2FzZSBH
TF9TQU1QTEVSX0NVQkU6CisgICAgICAgIHJldHVybiAxOworICAgICAgY2FzZSBHTF9CT09MX1ZF
QzI6CisgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6CisgICAgICBjYXNlIEdMX0lOVF9WRUMyOgor
ICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOgorICAgICAgICByZXR1cm4gMjsKKyAgICAgIGNhc2Ug
R0xfSU5UX1ZFQzM6CisgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6CisgICAgICBjYXNlIEdMX0JP
T0xfVkVDMzoKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzoKKyAgICAgICAgcmV0dXJuIDM7Cisg
ICAgICBjYXNlIEdMX0JPT0xfVkVDNDoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKKyAgICAg
IGNhc2UgR0xfSU5UX1ZFQzQ6CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgIHJl
dHVybiA0OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisK
KyAgICByZXR1cm4gMDsKK30KKworaW50IEFsbG9jYXRlRmlyc3RGcmVlQml0cyh1bnNpZ25lZCBp
bnQgKmJpdHMsIHVuc2lnbmVkIGludCBhbGxvY2F0aW9uU2l6ZSwgdW5zaWduZWQgaW50IGJpdHNT
aXplKQoreworICAgIEFTU0VSVChhbGxvY2F0aW9uU2l6ZSA8PSBiaXRzU2l6ZSk7CisKKyAgICB1
bnNpZ25lZCBpbnQgbWFzayA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4
KCkgPj4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6ZGlnaXRzIC0gYWxsb2Nh
dGlvblNpemUpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBiaXRzU2l6ZSAt
IGFsbG9jYXRpb25TaXplICsgMTsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKCgqYml0cyAmIG1h
c2spID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgICpiaXRzIHw9IG1hc2s7CisgICAgICAg
ICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorCisgICAgICAgIG1hc2sgPDw9IDE7CisgICAgfQor
CisgICAgcmV0dXJuIC0xOworfQorCitHTHNpemVpIENvbXB1dGVQaXRjaChHTHNpemVpIHdpZHRo
LCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgYWxpZ25tZW50KQoreworICAgIEFTU0VSVChh
bGlnbm1lbnQgPiAwICYmIGlzUG93MihhbGlnbm1lbnQpKTsKKworICAgIEdMc2l6ZWkgcmF3UGl0
Y2ggPSBDb21wdXRlUGl4ZWxTaXplKGludGVybmFsZm9ybWF0KSAqIHdpZHRoOworICAgIHJldHVy
biAocmF3UGl0Y2ggKyBhbGlnbm1lbnQgLSAxKSAmIH4oYWxpZ25tZW50IC0gMSk7Cit9CisKK0dM
c2l6ZWkgQ29tcHV0ZUNvbXByZXNzZWRQaXRjaChHTHNpemVpIHdpZHRoLCBHTGVudW0gaW50ZXJu
YWxmb3JtYXQpCit7CisgICAgcmV0dXJuIENvbXB1dGVDb21wcmVzc2VkU2l6ZSh3aWR0aCwgMSwg
aW50ZXJuYWxmb3JtYXQpOworfQorCitHTHNpemVpIENvbXB1dGVDb21wcmVzc2VkU2l6ZShHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGludGVybmFsZm9ybWF0KQoreworICAg
IHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQxX0VYVDoKKyAgICAgICAgcmV0dXJuIDggKiAoKHdpZHRoICsgMykgLyA0KSAqICgoaGVpZ2h0
ICsgMykgLyA0KTsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdM
RToKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAgICAg
ICAgcmV0dXJuIDE2ICogKCh3aWR0aCArIDMpIC8gNCkgKiAoKGhlaWdodCArIDMpIC8gNCk7Cisg
ICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2Jvb2wgSXNDb21w
cmVzc2VkKEdMZW51bSBmb3JtYXQpCit7CisgICAgaWYoZm9ybWF0ID09IEdMX0NPTVBSRVNTRURf
UkdCX1MzVENfRFhUMV9FWFQgfHwKKyAgICAgICBmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQgfHwKKyAgICAgICBmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUM19BTkdMRSB8fAorICAgICAgIGZvcm1hdCA9PSBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQ1X0FOR0xFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgSXNEZXB0
aFRleHR1cmUoR0xlbnVtIGZvcm1hdCkKK3sKKyAgICBpZiAoZm9ybWF0ID09IEdMX0RFUFRIX0NP
TVBPTkVOVCB8fAorICAgICAgICBmb3JtYXQgPT0gR0xfREVQVEhfU1RFTkNJTF9PRVMgfHwKKyAg
ICAgICAgZm9ybWF0ID09IEdMX0RFUFRIX0NPTVBPTkVOVDE2IHx8CisgICAgICAgIGZvcm1hdCA9
PSBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMgfHwKKyAgICAgICAgZm9ybWF0ID09IEdMX0RFUFRI
MjRfU1RFTkNJTDhfT0VTKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIElzU3RlbmNpbFRleHR1cmUoR0xlbnVtIGZvcm1h
dCkKK3sKKyAgICBpZiAoZm9ybWF0ID09IEdMX0RFUFRIX1NURU5DSUxfT0VTIHx8CisgICAgICAg
IGZvcm1hdCA9PSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUykKKyAgICB7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNYWtlVmFsaWRT
aXplKGJvb2wgaXNJbWFnZSwgYm9vbCBpc0NvbXByZXNzZWQsIEdMc2l6ZWkgKnJlcXVlc3RXaWR0
aCwgR0xzaXplaSAqcmVxdWVzdEhlaWdodCwgaW50ICpsZXZlbE9mZnNldCkKK3sKKyAgICBpbnQg
dXBzYW1wbGVDb3VudCA9IDA7CisKKyAgICBpZiAoaXNDb21wcmVzc2VkKQorICAgIHsKKyAgICAg
ICAgLy8gRG9uJ3QgZXhwYW5kIHRoZSBzaXplIG9mIGZ1bGwgdGV4dHVyZXMgdGhhdCBhcmUgYXQg
bGVhc3QgNHg0CisgICAgICAgIC8vIGFscmVhZHkuCisgICAgICAgIGlmIChpc0ltYWdlIHx8ICpy
ZXF1ZXN0V2lkdGggPCA0IHx8ICpyZXF1ZXN0SGVpZ2h0IDwgNCkKKyAgICAgICAgeworICAgICAg
ICAgICAgd2hpbGUgKCpyZXF1ZXN0V2lkdGggJSA0ICE9IDAgfHwgKnJlcXVlc3RIZWlnaHQgJSA0
ICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKnJlcXVlc3RXaWR0aCA8PD0g
MTsKKyAgICAgICAgICAgICAgICAqcmVxdWVzdEhlaWdodCA8PD0gMTsKKyAgICAgICAgICAgICAg
ICB1cHNhbXBsZUNvdW50Kys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
KmxldmVsT2Zmc2V0ID0gdXBzYW1wbGVDb3VudDsKK30KKworLy8gUmV0dXJucyB0aGUgc2l6ZSwg
aW4gYnl0ZXMsIG9mIGEgc2luZ2xlIHRleGVsIGluIGFuIEltYWdlCitpbnQgQ29tcHV0ZVBpeGVs
U2l6ZShHTGludCBpbnRlcm5hbGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0
KQorICAgIHsKKyAgICAgIGNhc2UgR0xfQUxQSEE4X0VYVDogICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzaXplb2YodW5zaWduZWQgY2hhcik7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThf
RVhUOiAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpOworICAg
ICAgY2FzZSBHTF9BTFBIQTMyRl9FWFQ6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVv
ZihmbG9hdCk7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTMyRl9FWFQ6ICAgICAgICAgICAgICAg
ICByZXR1cm4gc2l6ZW9mKGZsb2F0KTsKKyAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgc2hvcnQpOworICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0UxNkZfRVhUOiAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1bnNp
Z25lZCBzaG9ydCk7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDogICAgICAg
ICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogMjsKKyAgICAgIGNhc2UgR0xfTFVN
SU5BTkNFX0FMUEhBMzJGX0VYVDogICAgICAgICAgIHJldHVybiBzaXplb2YoZmxvYXQpICogMjsK
KyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDogICAgICAgICAgIHJldHVybiBz
aXplb2YodW5zaWduZWQgc2hvcnQpICogMjsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6ICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgY2hhcikgKiAzOworICAg
ICAgY2FzZSBHTF9SR0I1NjU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVv
Zih1bnNpZ25lZCBzaG9ydCk7CisgICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6ICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gc2l6ZW9mKGZsb2F0KSAqIDM7CisgICAgICBjYXNlIEdMX1JHQjE2
Rl9FWFQ6ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIHNob3J0
KSAqIDM7CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogNDsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgc2hvcnQpOwor
ICAgICAgY2FzZSBHTF9SR0I1X0ExOiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNp
emVvZih1bnNpZ25lZCBzaG9ydCk7CisgICAgICBjYXNlIEdMX1JHQkEzMkZfRVhUOiAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKGZsb2F0KSAqIDQ7CisgICAgICBjYXNlIEdMX1JH
QkExNkZfRVhUOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIHNo
b3J0KSAqIDQ7CisgICAgICBjYXNlIEdMX0JHUkE4X0VYVDogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogNDsKKyAgICAgIGNhc2UgR0xfQkdSQTRf
QU5HTEVYOiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgc2hvcnQp
OworICAgICAgY2FzZSBHTF9CR1I1X0ExX0FOR0xFWDogICAgICAgICAgICAgICAgICAgcmV0dXJu
IHNpemVvZih1bnNpZ25lZCBzaG9ydCk7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwor
ICAgIH0KKworICAgIHJldHVybiAwOworfQorCitib29sIElzQ3ViZW1hcFRleHR1cmVUYXJnZXQo
R0xlbnVtIHRhcmdldCkKK3sKKyAgICByZXR1cm4gKHRhcmdldCA+PSBHTF9URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1ggJiYgdGFyZ2V0IDw9IEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
Wik7Cit9CisKK2Jvb2wgSXNJbnRlcm5hbFRleHR1cmVUYXJnZXQoR0xlbnVtIHRhcmdldCkKK3sK
KyAgICByZXR1cm4gdGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgfHwgSXNDdWJlbWFwVGV4dHVyZVRh
cmdldCh0YXJnZXQpOworfQorCitHTGludCBDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7Cisg
ICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAg
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6ICAgIHJldHVybiBHTF9BTFBIQThfRVhUOwor
ICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgICAgICAgcmV0dXJuIEdMX0FMUEhBMzJGX0VY
VDsKKyAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOiAgIHJldHVybiBHTF9BTFBIQTE2
Rl9FWFQ7CisgICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRToK
KyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9CWVRFOiAgICByZXR1cm4gR0xfTFVNSU5BTkNFOF9FWFQ7CisgICAgICAgICAgY2FzZSBH
TF9GTE9BVDogICAgICAgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFMzJGX0VYVDsKKyAgICAgICAg
ICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOiAgIHJldHVybiBHTF9MVU1JTkFOQ0UxNkZfRVhUOwor
ICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6Cisg
ICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfQllURTogICAgcmV0dXJuIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDsKKyAgICAgICAgICBj
YXNlIEdMX0ZMT0FUOiAgICAgICAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhU
OworICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6ICAgcmV0dXJuIEdMX0xVTUlOQU5D
RV9BTFBIQTE2Rl9FWFQ7CisgICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JH
QjoKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9CWVRFOiAgICAgICAgICAgIHJldHVybiBHTF9SR0I4X09FUzsKKyAgICAgICAgICBj
YXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OiAgICAgcmV0dXJuIEdMX1JHQjU2NTsKKyAgICAg
ICAgICBjYXNlIEdMX0ZMT0FUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjMyRl9F
WFQ7CisgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzogICAgICAgICAgIHJldHVybiBH
TF9SR0IxNkZfRVhUOworICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX1JHQkE6CisgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfQllURTogICAgICAgICAgICByZXR1cm4gR0xfUkdCQThfT0VTOworICAg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDogICByZXR1cm4gR0xfUkdCQTQ7
CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xOiAgIHJldHVybiBHTF9S
R0I1X0ExOworICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR0xfUkdCQTMyRl9FWFQ7CisgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzogICAg
ICAgICAgIHJldHVybiBHTF9SR0JBMTZGX0VYVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAgICAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQkdSQThfRVhUOworICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUOiAgIHJldHVybiBHTF9CR1JBNF9B
TkdMRVg7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFQ6
ICAgcmV0dXJuIEdMX0JHUjVfQTFfQU5HTEVYOworICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoK
KyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6CisgICAgICBjYXNlIEdMX0NPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAg
ICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDoKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAg
ICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDogICAgICAgICAgIHJldHVybiBH
TF9ERVBUSF9DT01QT05FTlQxNjsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDogICAg
ICAgICAgICAgcmV0dXJuIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzsKKyAgICAgICAgICBkZWZh
dWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKKyAgICAg
ICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9J
TlRfMjRfOF9PRVM6ICAgIHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAgICAgICAg
ICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIH0KKworICAgIHJldHVybiBHTF9OT05FOworfQorCitHTGVudW0gRXh0cmFj
dEZvcm1hdChHTGVudW0gaW50ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5hbGZv
cm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQjU2NTogICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHTF9SR0I7CisgICAgICBjYXNlIEdMX1JHQkE0OiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHTF9SR0JBOworICAgICAgY2FzZSBHTF9SR0I1X0ExOiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjsKKyAgICAgIGNhc2UgR0xfUkdC
QThfT0VTOiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkE7CisgICAgICBjYXNl
IEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDogICAgICAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0Vf
QUxQSEE7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhUOiAgICAgICAgICAgICAgICAgIHJl
dHVybiBHTF9MVU1JTkFOQ0U7CisgICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6ICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHTF9BTFBIQTsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0Jf
UzNUQ19EWFQxX0VYVDogICAgcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ7
CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOiAgIHJldHVybiBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUM19BTkdMRTogcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDNfQU5HTEU7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6
IHJldHVybiBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOworICAgICAgY2FzZSBH
TF9SR0JBMzJGX0VYVDogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTsKKyAgICAg
IGNhc2UgR0xfUkdCMzJGX0VYVDogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjsK
KyAgICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdM
X0FMUEhBOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOiAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfTFVNSU5BTkNFOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhU
OiAgICAgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFX0FMUEhBOworICAgICAgY2FzZSBHTF9SR0JB
MTZGX0VYVDogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTsKKyAgICAgIGNhc2Ug
R0xfUkdCMTZGX0VYVDogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjsKKyAgICAg
IGNhc2UgR0xfQUxQSEExNkZfRVhUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0FMUEhB
OworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UxNkZfRVhUOiAgICAgICAgICAgICAgICByZXR1cm4g
R0xfTFVNSU5BTkNFOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOiAgICAg
ICAgICByZXR1cm4gR0xfTFVNSU5BTkNFX0FMUEhBOworICAgICAgY2FzZSBHTF9CR1JBOF9FWFQ6
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQkdSQV9FWFQ7CisgICAgICBjYXNlIEdM
X0RFUFRIX0NPTVBPTkVOVDE2OiAgICAgICAgICAgICAgIHJldHVybiBHTF9ERVBUSF9DT01QT05F
TlQ7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzogICAgICAgICAgIHJldHVy
biBHTF9ERVBUSF9DT01QT05FTlQ7CisgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VT
OiAgICAgICAgICAgIHJldHVybiBHTF9ERVBUSF9TVEVOQ0lMX09FUzsKKyAgICAgIGRlZmF1bHQ6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX05PTkU7ICAgLy8gVW5z
dXBwb3J0ZWQKKyAgICB9Cit9CisKK0dMZW51bSBFeHRyYWN0VHlwZShHTGVudW0gaW50ZXJuYWxm
b3JtYXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNl
IEdMX1JHQjU2NTogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9T
SE9SVF81XzZfNTsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQ7CisgICAgICBjYXNlIEdMX1JHQjVf
QTE6ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9TSE9SVF81XzVf
NV8xOworICAgICAgY2FzZSBHTF9SR0I4X09FUzogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR0xfVU5TSUdORURfQllURTsKKyAgICAgIGNhc2UgR0xfUkdCQThfT0VTOiAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0JZVEU7CisgICAgICBjYXNlIEdMX0xVTUlO
QU5DRThfQUxQSEE4X0VYVDogICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9CWVRFOworICAg
ICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0VYVDogICAgICAgICAgICAgICAgICByZXR1cm4gR0xfVU5T
SUdORURfQllURTsKKyAgICAgIGNhc2UgR0xfQUxQSEE4X0VYVDogICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdMX1VOU0lHTkVEX0JZVEU7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
X1MzVENfRFhUMV9FWFQ6ICAgIHJldHVybiBHTF9VTlNJR05FRF9CWVRFOworICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDogICByZXR1cm4gR0xfVU5TSUdORURfQllU
RTsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRTogcmV0dXJu
IEdMX1VOU0lHTkVEX0JZVEU7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDVfQU5HTEU6IHJldHVybiBHTF9VTlNJR05FRF9CWVRFOworICAgICAgY2FzZSBHTF9SR0JBMzJG
X0VYVDogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRkxPQVQ7CisgICAgICBjYXNlIEdM
X1JHQjMyRl9FWFQ6ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9GTE9BVDsKKyAgICAg
IGNhc2UgR0xfQUxQSEEzMkZfRVhUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FU
OworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOiAgICAgICAgICAgICAgICByZXR1cm4g
R0xfRkxPQVQ7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6ICAgICAgICAg
IHJldHVybiBHTF9GTE9BVDsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6ICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX0hBTEZfRkxPQVRfT0VTOworICAgICAgY2FzZSBHTF9SR0IxNkZf
RVhUOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfSEFMRl9GTE9BVF9PRVM7CisgICAg
ICBjYXNlIEdMX0FMUEhBMTZGX0VYVDogICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9IQUxG
X0ZMT0FUX09FUzsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMTZGX0VYVDogICAgICAgICAgICAg
ICAgcmV0dXJuIEdMX0hBTEZfRkxPQVRfT0VTOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQ
SEExNkZfRVhUOiAgICAgICAgICByZXR1cm4gR0xfSEFMRl9GTE9BVF9PRVM7CisgICAgICBjYXNl
IEdMX0JHUkE4X0VYVDogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9C
WVRFOworICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQxNjogICAgICAgICAgICAgICByZXR1
cm4gR0xfVU5TSUdORURfU0hPUlQ7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09F
UzogICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlQ7CisgICAgICBjYXNlIEdMX0RFUFRI
MjRfU1RFTkNJTDhfT0VTOiAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlRfMjRfOF9P
RVM7CisgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBHTF9OT05FOyAgIC8vIFVuc3VwcG9ydGVkCisgICAgfQorfQorCitib29sIElzQ29sb3JSZW5k
ZXJhYmxlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGludGVybmFsZm9y
bWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICBjYXNlIEdMX1JHQjVfQTE6
CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICBj
YXNlIEdMX1JHQkE4X09FUzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICBjYXNlIEdMX0RF
UFRIX0NPTVBPTkVOVDE2OgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKKyAgICAgIGNh
c2UgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
IGNhc2UgR0xfQkdSQThfRVhUOgorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgZGVmYXVs
dDoKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBJc0RlcHRoUmVuZGVyYWJsZShHTGVudW0gaW50ZXJuYWxmb3JtYXQpCit7Cisg
ICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX0RFUFRIX0NP
TVBPTkVOVDE2OgorICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzoKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICBjYXNlIEdMX1NURU5DSUxfSU5ERVg4OgorICAgICAgY2FzZSBH
TF9SR0JBNDoKKyAgICAgIGNhc2UgR0xfUkdCNV9BMToKKyAgICAgIGNhc2UgR0xfUkdCNTY1Ogor
ICAgICAgY2FzZSBHTF9SR0I4X09FUzoKKyAgICAgIGNhc2UgR0xfUkdCQThfT0VTOgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIElzU3RlbmNpbFJlbmRlcmFi
bGUoR0xlbnVtIGludGVybmFsZm9ybWF0KQoreworICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQp
CisgICAgeworICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKKyAgICAgIGNhc2UgR0xfREVQ
VEgyNF9TVEVOQ0lMOF9PRVM6CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgY2FzZSBHTF9S
R0JBNDoKKyAgICAgIGNhc2UgR0xfUkdCNV9BMToKKyAgICAgIGNhc2UgR0xfUkdCNTY1OgorICAg
ICAgY2FzZSBHTF9SR0I4X09FUzoKKyAgICAgIGNhc2UgR0xfUkdCQThfT0VTOgorICAgICAgY2Fz
ZSBHTF9ERVBUSF9DT01QT05FTlQxNjoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZGVm
YXVsdDoKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBJc0Zsb2F0MzJGb3JtYXQoR0xpbnQgaW50ZXJuYWxmb3JtYXQpCit7Cisg
ICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQkEzMkZf
RVhUOgorICAgICAgY2FzZSBHTF9SR0IzMkZfRVhUOgorICAgICAgY2FzZSBHTF9BTFBIQTMyRl9F
WFQ6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTMyRl9FWFQ6CisgICAgICBjYXNlIEdMX0xVTUlO
QU5DRV9BTFBIQTMyRl9FWFQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBJc0Zsb2F0MTZGb3JtYXQo
R0xpbnQgaW50ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAg
ICB7CisgICAgICBjYXNlIEdMX1JHQkExNkZfRVhUOgorICAgICAgY2FzZSBHTF9SR0IxNkZfRVhU
OgorICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2
Rl9FWFQ6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQ6CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKwordW5zaWduZWQgaW50IEdldEFscGhhU2l6ZShHTGVudW0gY29sb3JGb3JtYXQpCit7Cisg
ICAgc3dpdGNoIChjb2xvckZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQkExNkZfRVhU
OgorICAgICAgICByZXR1cm4gMTY7CisgICAgICBjYXNlIEdMX1JHQkEzMkZfRVhUOgorICAgICAg
ICByZXR1cm4gMzI7CisgICAgICBjYXNlIEdMX1JHQkE0OgorICAgICAgICByZXR1cm4gNDsKKyAg
ICAgIGNhc2UgR0xfUkdCQThfT0VTOgorICAgICAgY2FzZSBHTF9CR1JBOF9FWFQ6CisgICAgICAg
IHJldHVybiA4OworICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgICByZXR1cm4gMTsKKyAg
ICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2Ug
R0xfUkdCMzJGX0VYVDoKKyAgICAgIGNhc2UgR0xfUkdCMTZGX0VYVDoKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3Vuc2ln
bmVkIGludCBHZXRSZWRTaXplKEdMZW51bSBjb2xvckZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGNv
bG9yRm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6CisgICAgICBjYXNl
IEdMX1JHQjE2Rl9FWFQ6CisgICAgICAgIHJldHVybiAxNjsKKyAgICAgIGNhc2UgR0xfUkdCQTMy
Rl9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6CisgICAgICAgIHJldHVybiAzMjsKKyAg
ICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICAgIHJldHVybiA0OworICAgICAgY2FzZSBHTF9SR0JB
OF9PRVM6CisgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6
CisgICAgICAgIHJldHVybiA4OworICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgY2FzZSBH
TF9SR0I1NjU6CisgICAgICAgIHJldHVybiA1OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgR2V0R3JlZW5TaXplKEdMZW51bSBjb2xv
ckZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yRm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2Ug
R0xfUkdCQTE2Rl9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6CisgICAgICAgIHJldHVy
biAxNjsKKyAgICAgIGNhc2UgR0xfUkdCQTMyRl9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjMyRl9F
WFQ6CisgICAgICAgIHJldHVybiAzMjsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICAgIHJl
dHVybiA0OworICAgICAgY2FzZSBHTF9SR0JBOF9PRVM6CisgICAgICBjYXNlIEdMX0JHUkE4X0VY
VDoKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICAgIHJldHVybiA4OworICAgICAgY2Fz
ZSBHTF9SR0I1X0ExOgorICAgICAgICByZXR1cm4gNTsKKyAgICAgIGNhc2UgR0xfUkdCNTY1Ogor
ICAgICAgICByZXR1cm4gNjsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAg
IH0KK30KKwordW5zaWduZWQgaW50IEdldEJsdWVTaXplKEdMZW51bSBjb2xvckZvcm1hdCkKK3sK
KyAgICBzd2l0Y2ggKGNvbG9yRm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9F
WFQ6CisgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6CisgICAgICAgIHJldHVybiAxNjsKKyAgICAg
IGNhc2UgR0xfUkdCQTMyRl9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6CisgICAgICAg
IHJldHVybiAzMjsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICAgIHJldHVybiA0OworICAg
ICAgY2FzZSBHTF9SR0JBOF9PRVM6CisgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgIGNh
c2UgR0xfUkdCOF9PRVM6CisgICAgICAgIHJldHVybiA4OworICAgICAgY2FzZSBHTF9SR0I1X0Ex
OgorICAgICAgY2FzZSBHTF9SR0I1NjU6CisgICAgICAgIHJldHVybiA1OworICAgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgR2V0RGVwdGhT
aXplKEdMZW51bSBkZXB0aEZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGRlcHRoRm9ybWF0KQorICAg
IHsKKyAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6ICAgICAgICByZXR1cm4gMTY7Cisg
ICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzogICAgcmV0dXJuIDMyOworICAgICAg
Y2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzogICAgIHJldHVybiAyNDsKKyAgICAgIGRlZmF1
bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3Vuc2ln
bmVkIGludCBHZXRTdGVuY2lsU2l6ZShHTGVudW0gc3RlbmNpbEZvcm1hdCkKK3sKKyAgICBzd2l0
Y2ggKHN0ZW5jaWxGb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4
X09FUzogICAgIHJldHVybiA4OworICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOworICAgIH0KK30KKworYm9vbCBJc1RyaWFuZ2xlTW9kZShHTGVudW0gZHJh
d01vZGUpCit7CisgICAgc3dpdGNoIChkcmF3TW9kZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1RS
SUFOR0xFUzoKKyAgICAgIGNhc2UgR0xfVFJJQU5HTEVfRkFOOgorICAgICAgY2FzZSBHTF9UUklB
TkdMRV9TVFJJUDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICBjYXNlIEdMX1BPSU5UUzoK
KyAgICAgIGNhc2UgR0xfTElORVM6CisgICAgICBjYXNlIEdMX0xJTkVfTE9PUDoKKyAgICAgIGNh
c2UgR0xfTElORV9TVFJJUDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZGVmYXVsdDog
VU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30KKworc3Rk
OjpzdHJpbmcgZ2V0VGVtcFBhdGgoKQoreworICAgIGNoYXIgcGF0aFtNQVhfUEFUSF07CisgICAg
RFdPUkQgcGF0aExlbiA9IEdldFRlbXBQYXRoQShzaXplb2YocGF0aCkgLyBzaXplb2YocGF0aFsw
XSksIHBhdGgpOworICAgIGlmIChwYXRoTGVuID09IDApCisgICAgeworICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKKyAgICB9CisKKyAgICBVSU5U
IHVuaXF1ZSA9IEdldFRlbXBGaWxlTmFtZUEocGF0aCwgInNoIiwgMCwgcGF0aCk7CisgICAgaWYg
KHVuaXF1ZSA9PSAwKQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6c3RyaW5nKCk7CisgICAgfQorICAgIAorICAgIHJldHVybiBwYXRoOworfQorCit2
b2lkIHdyaXRlRmlsZShjb25zdCBjaGFyKiBwYXRoLCBjb25zdCB2b2lkKiBjb250ZW50LCBzaXpl
X3Qgc2l6ZSkKK3sKKyAgICBGSUxFKiBmaWxlID0gZm9wZW4ocGF0aCwgInciKTsKKyAgICBpZiAo
IWZpbGUpCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgZndyaXRlKGNvbnRlbnQsIHNpemVvZihjaGFyKSwgc2l6ZSwgZmlsZSk7Cisg
ICAgZmNsb3NlKGZpbGUpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi91dGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2NiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gdXRpbGl0aWVzLmg6IENvbnZlcnNp
b24gZnVuY3Rpb25zIGFuZCBvdGhlciB1dGlsaXR5IHJvdXRpbmVzLgorCisjaWZuZGVmIExJQkdM
RVNWMl9VVElMSVRJRVNfSAorI2RlZmluZSBMSUJHTEVTVjJfVVRJTElUSUVTX0gKKworI2RlZmlu
ZSBHTF9BUElDQUxMCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wy
ZXh0Lmg+CisKKyNpbmNsdWRlIDxzdHJpbmc+CisKK25hbWVzcGFjZSBnbAoreworCitzdHJ1Y3Qg
Q29sb3I7CisKK2ludCBVbmlmb3JtQ29tcG9uZW50Q291bnQoR0xlbnVtIHR5cGUpOworR0xlbnVt
IFVuaWZvcm1Db21wb25lbnRUeXBlKEdMZW51bSB0eXBlKTsKK3NpemVfdCBVbmlmb3JtSW50ZXJu
YWxTaXplKEdMZW51bSB0eXBlKTsKK3NpemVfdCBVbmlmb3JtRXh0ZXJuYWxTaXplKEdMZW51bSB0
eXBlKTsKK2ludCBWYXJpYWJsZVJvd0NvdW50KEdMZW51bSB0eXBlKTsKK2ludCBWYXJpYWJsZUNv
bHVtbkNvdW50KEdMZW51bSB0eXBlKTsKKworaW50IEFsbG9jYXRlRmlyc3RGcmVlQml0cyh1bnNp
Z25lZCBpbnQgKmJpdHMsIHVuc2lnbmVkIGludCBhbGxvY2F0aW9uU2l6ZSwgdW5zaWduZWQgaW50
IGJpdHNTaXplKTsKKwordm9pZCBNYWtlVmFsaWRTaXplKGJvb2wgaXNJbWFnZSwgYm9vbCBpc0Nv
bXByZXNzZWQsIEdMc2l6ZWkgKnJlcXVlc3RXaWR0aCwgR0xzaXplaSAqcmVxdWVzdEhlaWdodCwg
aW50ICpsZXZlbE9mZnNldCk7CitpbnQgQ29tcHV0ZVBpeGVsU2l6ZShHTGludCBpbnRlcm5hbGZv
cm1hdCk7CitHTHNpemVpIENvbXB1dGVQaXRjaChHTHNpemVpIHdpZHRoLCBHTGludCBpbnRlcm5h
bGZvcm1hdCwgR0xpbnQgYWxpZ25tZW50KTsKK0dMc2l6ZWkgQ29tcHV0ZUNvbXByZXNzZWRQaXRj
aChHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0KTsKK0dMc2l6ZWkgQ29tcHV0ZUNvbXByZXNz
ZWRTaXplKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0KTsKK2Jv
b2wgSXNDb21wcmVzc2VkKEdMZW51bSBmb3JtYXQpOworYm9vbCBJc0RlcHRoVGV4dHVyZShHTGVu
dW0gZm9ybWF0KTsKK2Jvb2wgSXNTdGVuY2lsVGV4dHVyZShHTGVudW0gZm9ybWF0KTsKK2Jvb2wg
SXNDdWJlbWFwVGV4dHVyZVRhcmdldChHTGVudW0gdGFyZ2V0KTsKK2Jvb2wgSXNJbnRlcm5hbFRl
eHR1cmVUYXJnZXQoR0xlbnVtIHRhcmdldCk7CitHTGludCBDb252ZXJ0U2l6ZWRJbnRlcm5hbEZv
cm1hdChHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSk7CitHTGVudW0gRXh0cmFjdEZvcm1hdChH
TGVudW0gaW50ZXJuYWxmb3JtYXQpOworR0xlbnVtIEV4dHJhY3RUeXBlKEdMZW51bSBpbnRlcm5h
bGZvcm1hdCk7CisKK2Jvb2wgSXNDb2xvclJlbmRlcmFibGUoR0xlbnVtIGludGVybmFsZm9ybWF0
KTsKK2Jvb2wgSXNEZXB0aFJlbmRlcmFibGUoR0xlbnVtIGludGVybmFsZm9ybWF0KTsKK2Jvb2wg
SXNTdGVuY2lsUmVuZGVyYWJsZShHTGVudW0gaW50ZXJuYWxmb3JtYXQpOworCitib29sIElzRmxv
YXQzMkZvcm1hdChHTGludCBpbnRlcm5hbGZvcm1hdCk7Citib29sIElzRmxvYXQxNkZvcm1hdChH
TGludCBpbnRlcm5hbGZvcm1hdCk7CisKK0dMdWludCBHZXRBbHBoYVNpemUoR0xlbnVtIGNvbG9y
Rm9ybWF0KTsKK0dMdWludCBHZXRSZWRTaXplKEdMZW51bSBjb2xvckZvcm1hdCk7CitHTHVpbnQg
R2V0R3JlZW5TaXplKEdMZW51bSBjb2xvckZvcm1hdCk7CitHTHVpbnQgR2V0Qmx1ZVNpemUoR0xl
bnVtIGNvbG9yRm9ybWF0KTsKK0dMdWludCBHZXREZXB0aFNpemUoR0xlbnVtIGRlcHRoRm9ybWF0
KTsKK0dMdWludCBHZXRTdGVuY2lsU2l6ZShHTGVudW0gc3RlbmNpbEZvcm1hdCk7Citib29sIElz
VHJpYW5nbGVNb2RlKEdMZW51bSBkcmF3TW9kZSk7CisKK30KKworc3RkOjpzdHJpbmcgZ2V0VGVt
cFBhdGgoKTsKK3ZvaWQgd3JpdGVGaWxlKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBzaXplKTsKKworI2VuZGlmICAvLyBMSUJHTEVTVjJfVVRJTElUSUVTX0gKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQmxpdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9CbGl0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQmxpdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTk1IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IEJsaXQuY3BwOiBTdXJmYWNlIGNvcHkgdXRpbGl0eSBjbGFzcy4KKworI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9CbGl0LmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaCIKKyNpbmNsdWRlICJs
aWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlclRhcmdldDkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyZXI5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0ZyYW1lYnVmZmVyLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgorCituYW1lc3BhY2UKK3sKKyNpbmNsdWRlICJs
aWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvZmxpcHl2cy5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocHMuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vw
cy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NvbXBv
bmVudG1hc2twcy5oIgorCitjb25zdCBCWVRFKiBjb25zdCBnX3NoYWRlckNvZGVbXSA9Cit7Cisg
ICAgZ192czIwX3N0YW5kYXJkdnMsCisgICAgZ192czIwX2ZsaXB5dnMsCisgICAgZ19wczIwX3Bh
c3N0aHJvdWdocHMsCisgICAgZ19wczIwX2x1bWluYW5jZXBzLAorICAgIGdfcHMyMF9jb21wb25l
bnRtYXNrcHMKK307CisKK2NvbnN0IHNpemVfdCBnX3NoYWRlclNpemVbXSA9Cit7CisgICAgc2l6
ZW9mKGdfdnMyMF9zdGFuZGFyZHZzKSwKKyAgICBzaXplb2YoZ192czIwX2ZsaXB5dnMpLAorICAg
IHNpemVvZihnX3BzMjBfcGFzc3Rocm91Z2hwcyksCisgICAgc2l6ZW9mKGdfcHMyMF9sdW1pbmFu
Y2VwcyksCisgICAgc2l6ZW9mKGdfcHMyMF9jb21wb25lbnRtYXNrcHMpCit9OworfQorCituYW1l
c3BhY2UgcngKK3sKK0JsaXQ6OkJsaXQocng6OlJlbmRlcmVyOSAqcmVuZGVyZXIpCisgIDogbVJl
bmRlcmVyKHJlbmRlcmVyKSwgbVF1YWRWZXJ0ZXhCdWZmZXIoTlVMTCksIG1RdWFkVmVydGV4RGVj
bGFyYXRpb24oTlVMTCksIG1TYXZlZFN0YXRlQmxvY2soTlVMTCksIG1TYXZlZFJlbmRlclRhcmdl
dChOVUxMKSwgbVNhdmVkRGVwdGhTdGVuY2lsKE5VTEwpCit7CisgICAgaW5pdEdlb21ldHJ5KCk7
CisgICAgbWVtc2V0KG1Db21waWxlZFNoYWRlcnMsIDAsIHNpemVvZihtQ29tcGlsZWRTaGFkZXJz
KSk7Cit9CisKK0JsaXQ6On5CbGl0KCkKK3sKKyAgICBpZiAobVNhdmVkU3RhdGVCbG9jaykgbVNh
dmVkU3RhdGVCbG9jay0+UmVsZWFzZSgpOworICAgIGlmIChtUXVhZFZlcnRleEJ1ZmZlcikgbVF1
YWRWZXJ0ZXhCdWZmZXItPlJlbGVhc2UoKTsKKyAgICBpZiAobVF1YWRWZXJ0ZXhEZWNsYXJhdGlv
bikgbVF1YWRWZXJ0ZXhEZWNsYXJhdGlvbi0+UmVsZWFzZSgpOworCisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBTSEFERVJfQ09VTlQ7IGkrKykKKyAgICB7CisgICAgICAgIGlmIChtQ29tcGlsZWRT
aGFkZXJzW2ldKQorICAgICAgICB7CisgICAgICAgICAgICBtQ29tcGlsZWRTaGFkZXJzW2ldLT5S
ZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQmxpdDo6aW5pdEdlb21ldHJ5
KCkKK3sKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgcXVhZFtdID0KKyAgICB7CisgICAgICAgIC0x
LCAtMSwKKyAgICAgICAgLTEsICAxLAorICAgICAgICAgMSwgLTEsCisgICAgICAgICAxLCAgMQor
ICAgIH07CisKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERl
dmljZSgpOworCisgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVZlcnRleEJ1ZmZl
cihzaXplb2YocXVhZCksIEQzRFVTQUdFX1dSSVRFT05MWSwgMCwgRDNEUE9PTF9ERUZBVUxULCAm
bVF1YWRWZXJ0ZXhCdWZmZXIsIE5VTEwpOworCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBy
ZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisgICAgfQorCisgICAgdm9pZCAqbG9ja1B0ciA9IE5VTEw7CisgICAgcmVz
dWx0ID0gbVF1YWRWZXJ0ZXhCdWZmZXItPkxvY2soMCwgMCwgJmxvY2tQdHIsIDApOworCisgICAg
aWYgKEZBSUxFRChyZXN1bHQpIHx8IGxvY2tQdHIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VU
T0ZNRU1PUlkpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwor
ICAgIH0KKworICAgIG1lbWNweShsb2NrUHRyLCBxdWFkLCBzaXplb2YocXVhZCkpOworICAgIG1R
dWFkVmVydGV4QnVmZmVyLT5VbmxvY2soKTsKKworICAgIHN0YXRpYyBjb25zdCBEM0RWRVJURVhF
TEVNRU5UOSBlbGVtZW50c1tdID0KKyAgICB7CisgICAgICAgIHsgMCwgMCwgRDNEREVDTFRZUEVf
RkxPQVQyLCBEM0RERUNMTUVUSE9EX0RFRkFVTFQsIEQzRERFQ0xVU0FHRV9QT1NJVElPTiwgMCB9
LAorICAgICAgICBEM0RERUNMX0VORCgpCisgICAgfTsKKworICAgIHJlc3VsdCA9IGRldmljZS0+
Q3JlYXRlVmVydGV4RGVjbGFyYXRpb24oZWxlbWVudHMsICZtUXVhZFZlcnRleERlY2xhcmF0aW9u
KTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIEFTU0VSVChyZXN1
bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkp
OworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30K
KwordGVtcGxhdGUgPGNsYXNzIEQzRFNoYWRlclR5cGU+Citib29sIEJsaXQ6OnNldFNoYWRlcihT
aGFkZXJJZCBzb3VyY2UsIGNvbnN0IGNoYXIgKnByb2ZpbGUsCisgICAgICAgICAgICAgICAgICAg
ICBEM0RTaGFkZXJUeXBlICoocng6OlJlbmRlcmVyOTo6KmNyZWF0ZVNoYWRlcikoY29uc3QgRFdP
UkQgKiwgc2l6ZV90IGxlbmd0aCksCisgICAgICAgICAgICAgICAgICAgICBIUkVTVUxUIChXSU5B
UEkgSURpcmVjdDNERGV2aWNlOTo6KnNldFNoYWRlcikoRDNEU2hhZGVyVHlwZSopKQoreworICAg
IElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAg
ICBEM0RTaGFkZXJUeXBlICpzaGFkZXI7CisKKyAgICBpZiAobUNvbXBpbGVkU2hhZGVyc1tzb3Vy
Y2VdICE9IE5VTEwpCisgICAgeworICAgICAgICBzaGFkZXIgPSBzdGF0aWNfY2FzdDxEM0RTaGFk
ZXJUeXBlKj4obUNvbXBpbGVkU2hhZGVyc1tzb3VyY2VdKTsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgY29uc3QgQllURSogc2hhZGVyQ29kZSA9IGdfc2hhZGVyQ29kZVtzb3VyY2Vd
OworICAgICAgICBzaXplX3Qgc2hhZGVyU2l6ZSA9IGdfc2hhZGVyU2l6ZVtzb3VyY2VdOworCisg
ICAgICAgIHNoYWRlciA9IChtUmVuZGVyZXItPipjcmVhdGVTaGFkZXIpKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgRFdPUkQqPihzaGFkZXJDb2RlKSwgc2hhZGVyU2l6ZSk7CisgICAgICAgIGlmICgh
c2hhZGVyKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBjcmVhdGUgc2hh
ZGVyIGZvciBibGl0IG9wZXJhdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisKKyAgICAgICAgbUNvbXBpbGVkU2hhZGVyc1tzb3VyY2VdID0gc2hhZGVyOworICAg
IH0KKworICAgIEhSRVNVTFQgaHIgPSAoZGV2aWNlLT4qc2V0U2hhZGVyKShzaGFkZXIpOworCisg
ICAgaWYgKEZBSUxFRChocikpCisgICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byBzZXQgc2hh
ZGVyIGZvciBibGl0IG9wZXJhdGlvbiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQmxpdDo6c2V0VmVydGV4U2hhZGVyKFNoYWRl
cklkIHNoYWRlcikKK3sKKyAgICByZXR1cm4gc2V0U2hhZGVyPElEaXJlY3QzRFZlcnRleFNoYWRl
cjk+KHNoYWRlciwgInZzXzJfMCIsICZyeDo6UmVuZGVyZXI5OjpjcmVhdGVWZXJ0ZXhTaGFkZXIs
ICZJRGlyZWN0M0REZXZpY2U5OjpTZXRWZXJ0ZXhTaGFkZXIpOworfQorCitib29sIEJsaXQ6OnNl
dFBpeGVsU2hhZGVyKFNoYWRlcklkIHNoYWRlcikKK3sKKyAgICByZXR1cm4gc2V0U2hhZGVyPElE
aXJlY3QzRFBpeGVsU2hhZGVyOT4oc2hhZGVyLCAicHNfMl8wIiwgJnJ4OjpSZW5kZXJlcjk6OmNy
ZWF0ZVBpeGVsU2hhZGVyLCAmSURpcmVjdDNERGV2aWNlOTo6U2V0UGl4ZWxTaGFkZXIpOworfQor
CitSRUNUIEJsaXQ6OmdldFN1cmZhY2VSZWN0KElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlKSBj
b25zdAoreworICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOworICAgIHN1cmZhY2UtPkdldERlc2Mo
JmRlc2MpOworCisgICAgUkVDVCByZWN0OworICAgIHJlY3QubGVmdCA9IDA7CisgICAgcmVjdC50
b3AgPSAwOworICAgIHJlY3QucmlnaHQgPSBkZXNjLldpZHRoOworICAgIHJlY3QuYm90dG9tID0g
ZGVzYy5IZWlnaHQ7CisKKyAgICByZXR1cm4gcmVjdDsKK30KKworYm9vbCBCbGl0Ojpib3hGaWx0
ZXIoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpCit7
CisgICAgSURpcmVjdDNEVGV4dHVyZTkgKnRleHR1cmUgPSBjb3B5U3VyZmFjZVRvVGV4dHVyZShz
b3VyY2UsIGdldFN1cmZhY2VSZWN0KHNvdXJjZSkpOworICAgIGlmICghdGV4dHVyZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpk
ZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgc2F2ZVN0YXRlKCk7CisKKyAg
ICBkZXZpY2UtPlNldFRleHR1cmUoMCwgdGV4dHVyZSk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJU
YXJnZXQoMCwgZGVzdCk7CisKKyAgICBzZXRWZXJ0ZXhTaGFkZXIoU0hBREVSX1ZTX1NUQU5EQVJE
KTsKKyAgICBzZXRQaXhlbFNoYWRlcihTSEFERVJfUFNfUEFTU1RIUk9VR0gpOworCisgICAgc2V0
Q29tbW9uQmxpdFN0YXRlKCk7CisgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNEU0FN
UF9NSU5GSUxURVIsIEQzRFRFWEZfTElORUFSKTsKKyAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0
ZSgwLCBEM0RTQU1QX01BR0ZJTFRFUiwgRDNEVEVYRl9MSU5FQVIpOworCisgICAgc2V0Vmlld3Bv
cnQoZ2V0U3VyZmFjZVJlY3QoZGVzdCksIDAsIDApOworCisgICAgcmVuZGVyKCk7CisKKyAgICB0
ZXh0dXJlLT5SZWxlYXNlKCk7CisKKyAgICByZXN0b3JlU3RhdGUoKTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIEJsaXQ6OmNvcHkoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwg
Y29uc3QgUkVDVCAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsIEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIEdMaW50
IGxldmVsKQoreworICAgIFJlbmRlclRhcmdldDkgKnJlbmRlclRhcmdldCA9IE5VTEw7CisgICAg
SURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSA9IE5VTEw7CisgICAgZ2w6OlJlbmRlcmJ1ZmZlciAq
Y29sb3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoMCk7CisKKyAgICBpZiAo
Y29sb3JidWZmZXIpCisgICAgeworICAgICAgICByZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQ5
OjptYWtlUmVuZGVyVGFyZ2V0OShjb2xvcmJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAg
IH0KKyAgICAKKyAgICBpZiAocmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgc291cmNlID0g
cmVuZGVyVGFyZ2V0LT5nZXRTdXJmYWNlKCk7CisgICAgfQorCisgICAgaWYgKCFzb3VyY2UpCisg
ICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRhcmdldC4i
KTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7Cisg
ICAgfQorCisgICAgVGV4dHVyZVN0b3JhZ2U5XzJEICpzdG9yYWdlOSA9IFRleHR1cmVTdG9yYWdl
OV8yRDo6bWFrZVRleHR1cmVTdG9yYWdlOV8yRChzdG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2Uo
KSk7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3RTdXJmYWNlID0gc3RvcmFnZTktPmdldFN1
cmZhY2VMZXZlbChsZXZlbCwgdHJ1ZSk7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICAg
ICAgCisgICAgaWYgKGRlc3RTdXJmYWNlKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gY29weShz
b3VyY2UsIHNvdXJjZVJlY3QsIGRlc3RGb3JtYXQsIHhvZmZzZXQsIHlvZmZzZXQsIGRlc3RTdXJm
YWNlKTsKKyAgICAgICAgZGVzdFN1cmZhY2UtPlJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBzb3Vy
Y2UtPlJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIEJsaXQ6OmNvcHko
Z2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgUkVDVCAmc291cmNlUmVjdCwgR0xl
bnVtIGRlc3RGb3JtYXQsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIFRleHR1cmVTdG9y
YWdlSW50ZXJmYWNlQ3ViZSAqc3RvcmFnZSwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpCit7
CisgICAgUmVuZGVyVGFyZ2V0OSAqcmVuZGVyVGFyZ2V0ID0gTlVMTDsKKyAgICBJRGlyZWN0M0RT
dXJmYWNlOSAqc291cmNlID0gTlVMTDsKKyAgICBnbDo6UmVuZGVyYnVmZmVyICpjb2xvcmJ1ZmZl
ciA9IGZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcigwKTsKKworICAgIGlmIChjb2xvcmJ1ZmZl
cikKKyAgICB7CisgICAgICAgIHJlbmRlclRhcmdldCA9IFJlbmRlclRhcmdldDk6Om1ha2VSZW5k
ZXJUYXJnZXQ5KGNvbG9yYnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKSk7CisgICAgfQorICAgIAor
ICAgIGlmIChyZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICBzb3VyY2UgPSByZW5kZXJUYXJn
ZXQtPmdldFN1cmZhY2UoKTsKKyAgICB9CisKKyAgICBpZiAoIXNvdXJjZSkKKyAgICB7CisgICAg
ICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0LiIpOworICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICB9CisKKyAg
ICBUZXh0dXJlU3RvcmFnZTlfQ3ViZSAqc3RvcmFnZTkgPSBUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6
bWFrZVRleHR1cmVTdG9yYWdlOV9DdWJlKHN0b3JhZ2UtPmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsK
KyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdFN1cmZhY2UgPSBzdG9yYWdlOS0+Z2V0Q3ViZU1h
cFN1cmZhY2UodGFyZ2V0LCBsZXZlbCwgdHJ1ZSk7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
KworICAgIGlmIChkZXN0U3VyZmFjZSkKKyAgICB7CisgICAgICAgIHJlc3VsdCA9IGNvcHkoc291
cmNlLCBzb3VyY2VSZWN0LCBkZXN0Rm9ybWF0LCB4b2Zmc2V0LCB5b2Zmc2V0LCBkZXN0U3VyZmFj
ZSk7CisgICAgICAgIGRlc3RTdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgfQorCisgICAgc291cmNl
LT5SZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBCbGl0Ojpjb3B5KElE
aXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBk
ZXN0Rm9ybWF0LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBJRGlyZWN0M0RTdXJmYWNl
OSAqZGVzdCkKK3sKKyAgICBpZiAoIWRlc3QpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXRE
ZXZpY2UoKTsKKworICAgIEQzRFNVUkZBQ0VfREVTQyBzb3VyY2VEZXNjOworICAgIEQzRFNVUkZB
Q0VfREVTQyBkZXN0RGVzYzsKKyAgICBzb3VyY2UtPkdldERlc2MoJnNvdXJjZURlc2MpOworICAg
IGRlc3QtPkdldERlc2MoJmRlc3REZXNjKTsKKworICAgIGlmIChzb3VyY2VEZXNjLkZvcm1hdCA9
PSBkZXN0RGVzYy5Gb3JtYXQgJiYgZGVzdERlc2MuVXNhZ2UgJiBEM0RVU0FHRV9SRU5ERVJUQVJH
RVQgJiYKKyAgICAgICAgZDNkOV9nbDo6SXNGb3JtYXRDaGFubmVsRXF1aXZhbGVudChkZXN0RGVz
Yy5Gb3JtYXQsIGRlc3RGb3JtYXQpKSAgIC8vIENhbiB1c2UgU3RyZXRjaFJlY3QKKyAgICB7Cisg
ICAgICAgIFJFQ1QgZGVzdFJlY3QgPSB7eG9mZnNldCwgeW9mZnNldCwgeG9mZnNldCArIChzb3Vy
Y2VSZWN0LnJpZ2h0IC0gc291cmNlUmVjdC5sZWZ0KSwgeW9mZnNldCArIChzb3VyY2VSZWN0LmJv
dHRvbSAtIHNvdXJjZVJlY3QudG9wKX07CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNl
LT5TdHJldGNoUmVjdChzb3VyY2UsICZzb3VyY2VSZWN0LCBkZXN0LCAmZGVzdFJlY3QsIEQzRFRF
WEZfUE9JTlQpOworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1
bHQgPT0gRV9PVVRPRk1FTU9SWSk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICByZXR1cm4gZm9ybWF0Q29udmVydChzb3VyY2UsIHNvdXJjZVJlY3QsIGRlc3RGb3Jt
YXQsIHhvZmZzZXQsIHlvZmZzZXQsIGRlc3QpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBCbGl0Ojpmb3JtYXRDb252ZXJ0KElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIGNv
bnN0IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LCBHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCkKK3sKKyAgICBJRGlyZWN0M0RU
ZXh0dXJlOSAqdGV4dHVyZSA9IGNvcHlTdXJmYWNlVG9UZXh0dXJlKHNvdXJjZSwgc291cmNlUmVj
dCk7CisgICAgaWYgKCF0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNl
KCk7CisKKyAgICBzYXZlU3RhdGUoKTsKKworICAgIGRldmljZS0+U2V0VGV4dHVyZSgwLCB0ZXh0
dXJlKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclRhcmdldCgwLCBkZXN0KTsKKworICAgIHNldFZp
ZXdwb3J0KHNvdXJjZVJlY3QsIHhvZmZzZXQsIHlvZmZzZXQpOworCisgICAgc2V0Q29tbW9uQmxp
dFN0YXRlKCk7CisgICAgaWYgKHNldEZvcm1hdENvbnZlcnRTaGFkZXJzKGRlc3RGb3JtYXQpKQor
ICAgIHsKKyAgICAgICAgcmVuZGVyKCk7CisgICAgfQorCisgICAgdGV4dHVyZS0+UmVsZWFzZSgp
OworCisgICAgcmVzdG9yZVN0YXRlKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBC
bGl0OjpzZXRGb3JtYXRDb252ZXJ0U2hhZGVycyhHTGVudW0gZGVzdEZvcm1hdCkKK3sKKyAgICBi
b29sIG9rYXkgPSBzZXRWZXJ0ZXhTaGFkZXIoU0hBREVSX1ZTX1NUQU5EQVJEKTsKKworICAgIHN3
aXRjaCAoZGVzdEZvcm1hdCkKKyAgICB7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwor
ICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgIGNhc2Ug
R0xfUkdCOgorICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgb2theSA9IG9rYXkgJiYgc2V0
UGl4ZWxTaGFkZXIoU0hBREVSX1BTX0NPTVBPTkVOVE1BU0spOworICAgICAgICBicmVhazsKKwor
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToK
KyAgICAgICAgb2theSA9IG9rYXkgJiYgc2V0UGl4ZWxTaGFkZXIoU0hBREVSX1BTX0xVTUlOQU5D
RSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICghb2theSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBlbnVtIHsgWCA9IDAsIFkgPSAxLCBaID0g
MiwgVyA9IDMgfTsKKworICAgIC8vIFRoZSBtZWFuaW5nIG9mIHRoaXMgY29uc3RhbnQgZGVwZW5k
cyBvbiB0aGUgc2hhZGVyIHRoYXQgd2FzIHNlbGVjdGVkLgorICAgIC8vIFNlZSB0aGUgc2hhZGVy
IGFzc2VtYmx5IGNvZGUgYWJvdmUgZm9yIGRldGFpbHMuCisgICAgZmxvYXQgcHNDb25zdDBbNF0g
PSB7IDAsIDAsIDAsIDAgfTsKKworICAgIHN3aXRjaCAoZGVzdEZvcm1hdCkKKyAgICB7CisgICAg
ICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgY2Fz
ZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgcHNDb25zdDBbWF0gPSAxOworICAgICAgICBwc0NvbnN0
MFtaXSA9IDE7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAg
cHNDb25zdDBbWF0gPSAxOworICAgICAgICBwc0NvbnN0MFtXXSA9IDE7CisgICAgICAgIGJyZWFr
OworCisgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgICBwc0NvbnN0MFtaXSA9IDE7CisgICAg
ICAgIGJyZWFrOworCisgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgcHNDb25zdDBb
WV0gPSAxOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6
CisgICAgICAgIHBzQ29uc3QwW1hdID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
bVJlbmRlcmVyLT5nZXREZXZpY2UoKS0+U2V0UGl4ZWxTaGFkZXJDb25zdGFudEYoMCwgcHNDb25z
dDAsIDEpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0lEaXJlY3QzRFRleHR1cmU5ICpCbGl0
Ojpjb3B5U3VyZmFjZVRvVGV4dHVyZShJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSwgY29uc3Qg
UkVDVCAmc291cmNlUmVjdCkKK3sKKyAgICBpZiAoIXN1cmZhY2UpCisgICAgeworICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVu
ZGVyZXItPmdldERldmljZSgpOworCisgICAgRDNEU1VSRkFDRV9ERVNDIHNvdXJjZURlc2M7Cisg
ICAgc3VyZmFjZS0+R2V0RGVzYygmc291cmNlRGVzYyk7CisKKyAgICAvLyBDb3B5IHRoZSByZW5k
ZXIgdGFyZ2V0IGludG8gYSB0ZXh0dXJlCisgICAgSURpcmVjdDNEVGV4dHVyZTkgKnRleHR1cmU7
CisgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUoc291cmNlUmVjdC5y
aWdodCAtIHNvdXJjZVJlY3QubGVmdCwgc291cmNlUmVjdC5ib3R0b20gLSBzb3VyY2VSZWN0LnRv
cCwgMSwgRDNEVVNBR0VfUkVOREVSVEFSR0VULCBzb3VyY2VEZXNjLkZvcm1hdCwgRDNEUE9PTF9E
RUZBVUxULCAmdGV4dHVyZSwgTlVMTCk7CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAg
eworICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJl
c3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLCAoSURpcmVjdDNEVGV4dHVyZTkqKU5VTEwpOworICAgIH0KKworICAgIElEaXJl
Y3QzRFN1cmZhY2U5ICp0ZXh0dXJlU3VyZmFjZTsKKyAgICByZXN1bHQgPSB0ZXh0dXJlLT5HZXRT
dXJmYWNlTGV2ZWwoMCwgJnRleHR1cmVTdXJmYWNlKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKKyAgICB7CisgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1P
UlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOworICAgICAgICB0ZXh0dXJlLT5SZWxlYXNl
KCk7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgKElEaXJlY3Qz
RFRleHR1cmU5KilOVUxMKTsKKyAgICB9CisKKyAgICBtUmVuZGVyZXItPmVuZFNjZW5lKCk7Cisg
ICAgcmVzdWx0ID0gZGV2aWNlLT5TdHJldGNoUmVjdChzdXJmYWNlLCAmc291cmNlUmVjdCwgdGV4
dHVyZVN1cmZhY2UsIE5VTEwsIEQzRFRFWEZfTk9ORSk7CisKKyAgICB0ZXh0dXJlU3VyZmFjZS0+
UmVsZWFzZSgpOworCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRP
Rk1FTU9SWSk7CisgICAgICAgIHRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAoSURpcmVjdDNEVGV4dHVyZTkqKU5VTEwpOworICAg
IH0KKworICAgIHJldHVybiB0ZXh0dXJlOworfQorCit2b2lkIEJsaXQ6OnNldFZpZXdwb3J0KGNv
bnN0IFJFQ1QgJnNvdXJjZVJlY3QsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQpCit7Cisg
ICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKwor
ICAgIEQzRFZJRVdQT1JUOSB2cDsKKyAgICB2cC5YICAgICAgPSB4b2Zmc2V0OworICAgIHZwLlkg
ICAgICA9IHlvZmZzZXQ7CisgICAgdnAuV2lkdGggID0gc291cmNlUmVjdC5yaWdodCAtIHNvdXJj
ZVJlY3QubGVmdDsKKyAgICB2cC5IZWlnaHQgPSBzb3VyY2VSZWN0LmJvdHRvbSAtIHNvdXJjZVJl
Y3QudG9wOworICAgIHZwLk1pblogICA9IDAuMGY7CisgICAgdnAuTWF4WiAgID0gMS4wZjsKKyAg
ICBkZXZpY2UtPlNldFZpZXdwb3J0KCZ2cCk7CisKKyAgICBmbG9hdCBoYWxmUGl4ZWxBZGp1c3Rb
NF0gPSB7IC0xLjBmL3ZwLldpZHRoLCAxLjBmL3ZwLkhlaWdodCwgMCwgMCB9OworICAgIGRldmlj
ZS0+U2V0VmVydGV4U2hhZGVyQ29uc3RhbnRGKDAsIGhhbGZQaXhlbEFkanVzdCwgMSk7Cit9CisK
K3ZvaWQgQmxpdDo6c2V0Q29tbW9uQmxpdFN0YXRlKCkKK3sKKyAgICBJRGlyZWN0M0REZXZpY2U5
ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgZGV2aWNlLT5TZXREZXB0
aFN0ZW5jaWxTdXJmYWNlKE5VTEwpOworCisgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RS
U19GSUxMTU9ERSwgRDNERklMTF9TT0xJRCk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19BTFBIQVRFU1RFTkFCTEUsIEZBTFNFKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRl
KEQzRFJTX0FMUEhBQkxFTkRFTkFCTEUsIEZBTFNFKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0
YXRlKEQzRFJTX0NVTExNT0RFLCBEM0RDVUxMX05PTkUpOworICAgIGRldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfQ0xJUFBMQU5FRU5BQkxFLCAwKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0
YXRlKEQzRFJTX0NPTE9SV1JJVEVFTkFCTEUsIEQzRENPTE9SV1JJVEVFTkFCTEVfQUxQSEEgfCBE
M0RDT0xPUldSSVRFRU5BQkxFX0JMVUUgfCBEM0RDT0xPUldSSVRFRU5BQkxFX0dSRUVOIHwgRDNE
Q09MT1JXUklURUVOQUJMRV9SRUQpOworICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNf
U1JHQldSSVRFRU5BQkxFLCBGQUxTRSk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RS
U19TQ0lTU09SVEVTVEVOQUJMRSwgRkFMU0UpOworCisgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3Rh
dGUoMCwgRDNEU0FNUF9NQUdGSUxURVIsIEQzRFRFWEZfUE9JTlQpOworICAgIGRldmljZS0+U2V0
U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfTUlORklMVEVSLCBEM0RURVhGX1BPSU5UKTsKKyAgICBk
ZXZpY2UtPlNldFNhbXBsZXJTdGF0ZSgwLCBEM0RTQU1QX1NSR0JURVhUVVJFLCBGQUxTRSk7Cisg
ICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNEU0FNUF9BRERSRVNTVSwgRDNEVEFERFJF
U1NfQ0xBTVApOworICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfQUREUkVT
U1YsIEQzRFRBRERSRVNTX0NMQU1QKTsKKworICAgIFJFQ1Qgc2Npc3NvclJlY3QgPSB7MH07ICAg
Ly8gU2Npc3NvcmluZyBpcyBkaXNhYmxlZCBmb3IgZmxpcHBpbmcsIGJ1dCB3ZSBuZWVkIHRoaXMg
dG8gY2FwdHVyZSBhbmQgcmVzdG9yZSB0aGUgb2xkIHJlY3RhbmdsZQorICAgIGRldmljZS0+U2V0
U2Npc3NvclJlY3QoJnNjaXNzb3JSZWN0KTsKKworICAgIGZvcihpbnQgaSA9IDA7IGkgPCBnbDo6
TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBkZXZpY2UtPlNldFN0cmVh
bVNvdXJjZUZyZXEoaSwgMSk7CisgICAgfQorfQorCit2b2lkIEJsaXQ6OnJlbmRlcigpCit7Cisg
ICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKwor
ICAgIEhSRVNVTFQgaHIgPSBkZXZpY2UtPlNldFN0cmVhbVNvdXJjZSgwLCBtUXVhZFZlcnRleEJ1
ZmZlciwgMCwgMiAqIHNpemVvZihmbG9hdCkpOworICAgIGhyID0gZGV2aWNlLT5TZXRWZXJ0ZXhE
ZWNsYXJhdGlvbihtUXVhZFZlcnRleERlY2xhcmF0aW9uKTsKKworICAgIG1SZW5kZXJlci0+c3Rh
cnRTY2VuZSgpOworICAgIGhyID0gZGV2aWNlLT5EcmF3UHJpbWl0aXZlKEQzRFBUX1RSSUFOR0xF
U1RSSVAsIDAsIDIpOworfQorCit2b2lkIEJsaXQ6OnNhdmVTdGF0ZSgpCit7CisgICAgSURpcmVj
dDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIEhSRVNV
TFQgaHI7CisKKyAgICBkZXZpY2UtPkdldERlcHRoU3RlbmNpbFN1cmZhY2UoJm1TYXZlZERlcHRo
U3RlbmNpbCk7CisgICAgZGV2aWNlLT5HZXRSZW5kZXJUYXJnZXQoMCwgJm1TYXZlZFJlbmRlclRh
cmdldCk7CisKKyAgICBpZiAobVNhdmVkU3RhdGVCbG9jayA9PSBOVUxMKQorICAgIHsKKyAgICAg
ICAgaHIgPSBkZXZpY2UtPkJlZ2luU3RhdGVCbG9jaygpOworICAgICAgICBBU1NFUlQoU1VDQ0VF
REVEKGhyKSB8fCBociA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBociA9PSBFX09VVE9G
TUVNT1JZKTsKKworICAgICAgICBzZXRDb21tb25CbGl0U3RhdGUoKTsKKworICAgICAgICBzdGF0
aWMgY29uc3QgZmxvYXQgZHVtbXlDb25zdFs0XSA9IHsgMCwgMCwgMCwgMCB9OworCisgICAgICAg
IGRldmljZS0+U2V0VmVydGV4U2hhZGVyKE5VTEwpOworICAgICAgICBkZXZpY2UtPlNldFZlcnRl
eFNoYWRlckNvbnN0YW50RigwLCBkdW1teUNvbnN0LCAxKTsKKyAgICAgICAgZGV2aWNlLT5TZXRQ
aXhlbFNoYWRlcihOVUxMKTsKKyAgICAgICAgZGV2aWNlLT5TZXRQaXhlbFNoYWRlckNvbnN0YW50
RigwLCBkdW1teUNvbnN0LCAxKTsKKworICAgICAgICBEM0RWSUVXUE9SVDkgZHVtbXlWcDsKKyAg
ICAgICAgZHVtbXlWcC5YID0gMDsKKyAgICAgICAgZHVtbXlWcC5ZID0gMDsKKyAgICAgICAgZHVt
bXlWcC5XaWR0aCA9IDE7CisgICAgICAgIGR1bW15VnAuSGVpZ2h0ID0gMTsKKyAgICAgICAgZHVt
bXlWcC5NaW5aID0gMDsKKyAgICAgICAgZHVtbXlWcC5NYXhaID0gMTsKKworICAgICAgICBkZXZp
Y2UtPlNldFZpZXdwb3J0KCZkdW1teVZwKTsKKworICAgICAgICBkZXZpY2UtPlNldFRleHR1cmUo
MCwgTlVMTCk7CisKKyAgICAgICAgZGV2aWNlLT5TZXRTdHJlYW1Tb3VyY2UoMCwgbVF1YWRWZXJ0
ZXhCdWZmZXIsIDAsIDApOworCisgICAgICAgIGRldmljZS0+U2V0VmVydGV4RGVjbGFyYXRpb24o
bVF1YWRWZXJ0ZXhEZWNsYXJhdGlvbik7CisKKyAgICAgICAgaHIgPSBkZXZpY2UtPkVuZFN0YXRl
QmxvY2soJm1TYXZlZFN0YXRlQmxvY2spOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSB8
fCBociA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBociA9PSBFX09VVE9GTUVNT1JZKTsK
KyAgICB9CisKKyAgICBBU1NFUlQobVNhdmVkU3RhdGVCbG9jayAhPSBOVUxMKTsKKworICAgIGlm
IChtU2F2ZWRTdGF0ZUJsb2NrICE9IE5VTEwpCisgICAgeworICAgICAgICBociA9IG1TYXZlZFN0
YXRlQmxvY2stPkNhcHR1cmUoKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOworICAg
IH0KK30KKwordm9pZCBCbGl0OjpyZXN0b3JlU3RhdGUoKQoreworICAgIElEaXJlY3QzRERldmlj
ZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICBkZXZpY2UtPlNldERl
cHRoU3RlbmNpbFN1cmZhY2UobVNhdmVkRGVwdGhTdGVuY2lsKTsKKyAgICBpZiAobVNhdmVkRGVw
dGhTdGVuY2lsICE9IE5VTEwpCisgICAgeworICAgICAgICBtU2F2ZWREZXB0aFN0ZW5jaWwtPlJl
bGVhc2UoKTsKKyAgICAgICAgbVNhdmVkRGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICB9CisKKyAg
ICBkZXZpY2UtPlNldFJlbmRlclRhcmdldCgwLCBtU2F2ZWRSZW5kZXJUYXJnZXQpOworICAgIGlm
IChtU2F2ZWRSZW5kZXJUYXJnZXQgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIG1TYXZlZFJlbmRl
clRhcmdldC0+UmVsZWFzZSgpOworICAgICAgICBtU2F2ZWRSZW5kZXJUYXJnZXQgPSBOVUxMOwor
ICAgIH0KKworICAgIEFTU0VSVChtU2F2ZWRTdGF0ZUJsb2NrICE9IE5VTEwpOworCisgICAgaWYg
KG1TYXZlZFN0YXRlQmxvY2sgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIG1TYXZlZFN0YXRlQmxv
Y2stPkFwcGx5KCk7CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQmxpdC5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBC
bGl0LmNwcDogU3VyZmFjZSBjb3B5IHV0aWxpdHkgY2xhc3MuCisKKyNpZm5kZWYgTElCR0xFU1Yy
X0JMSVRfSF8KKyNkZWZpbmUgTElCR0xFU1YyX0JMSVRfSF8KKworI2luY2x1ZGUgImNvbW1vbi9h
bmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgRnJhbWVidWZmZXI7Cit9CisK
K25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI5OworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJ
bnRlcmZhY2UyRDsKK2NsYXNzIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTsKKworY2xhc3Mg
QmxpdAoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgQmxpdChSZW5kZXJlcjkgKnJlbmRlcmVy
KTsKKyAgICB+QmxpdCgpOworCisgICAgLy8gQ29weSBmcm9tIHNvdXJjZSBzdXJmYWNlIHRvIGRl
c3Qgc3VyZmFjZS4KKyAgICAvLyBzb3VyY2VSZWN0LCB4b2Zmc2V0LCB5b2Zmc2V0IGFyZSBpbiBE
M0QgY29vcmRpbmF0ZXMgKDAsMCBpbiB1cHBlci1sZWZ0KQorICAgIGJvb2wgY29weShnbDo6RnJh
bWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVz
dEZvcm1hdCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRl
cmZhY2UyRCAqc3RvcmFnZSwgR0xpbnQgbGV2ZWwpOworICAgIGJvb2wgY29weShnbDo6RnJhbWVi
dWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZv
cm1hdCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZh
Y2VDdWJlICpzdG9yYWdlLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCk7CisKKyAgICAvLyBD
b3B5IGZyb20gc291cmNlIHN1cmZhY2UgdG8gZGVzdCBzdXJmYWNlLgorICAgIC8vIHNvdXJjZVJl
Y3QsIHhvZmZzZXQsIHlvZmZzZXQgYXJlIGluIEQzRCBjb29yZGluYXRlcyAoMCwwIGluIHVwcGVy
LWxlZnQpCisgICAgLy8gc291cmNlIGlzIGludGVycHJldGVkIGFzIFJHQkEgYW5kIGRlc3RGb3Jt
YXQgc3BlY2lmaWVzIHRoZSBkZXNpcmVkIHJlc3VsdCBmb3JtYXQuIEZvciBleGFtcGxlLCBpZiBk
ZXN0Rm9ybWF0ID0gR0xfUkdCLCB0aGUgYWxwaGEgY2hhbm5lbCB3aWxsIGJlIGZvcmNlZCB0byAw
LgorICAgIGJvb2wgZm9ybWF0Q29udmVydChJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlLCBjb25z
dCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwgR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpOworCisgICAgLy8gMngyIGJveCBm
aWx0ZXIgc2FtcGxlIGZyb20gc291cmNlIHRvIGRlc3QuCisgICAgLy8gUmVxdWlyZXMgdGhhdCBz
b3VyY2UgaXMgUkdCKEEpIGFuZCBkZXN0IGhhcyB0aGUgc2FtZSBmb3JtYXQgYXMgc291cmNlLgor
ICAgIGJvb2wgYm94RmlsdGVyKElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIElEaXJlY3QzRFN1
cmZhY2U5ICpkZXN0KTsKKworICBwcml2YXRlOgorICAgIHJ4OjpSZW5kZXJlcjkgKm1SZW5kZXJl
cjsKKworICAgIElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKm1RdWFkVmVydGV4QnVmZmVyOworICAg
IElEaXJlY3QzRFZlcnRleERlY2xhcmF0aW9uOSAqbVF1YWRWZXJ0ZXhEZWNsYXJhdGlvbjsKKwor
ICAgIHZvaWQgaW5pdEdlb21ldHJ5KCk7CisKKyAgICBib29sIHNldEZvcm1hdENvbnZlcnRTaGFk
ZXJzKEdMZW51bSBkZXN0Rm9ybWF0KTsKKworICAgIGJvb2wgY29weShJRGlyZWN0M0RTdXJmYWNl
OSAqc291cmNlLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpOworICAg
IElEaXJlY3QzRFRleHR1cmU5ICpjb3B5U3VyZmFjZVRvVGV4dHVyZShJRGlyZWN0M0RTdXJmYWNl
OSAqc3VyZmFjZSwgY29uc3QgUkVDVCAmc291cmNlUmVjdCk7CisgICAgdm9pZCBzZXRWaWV3cG9y
dChjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0KTsK
KyAgICB2b2lkIHNldENvbW1vbkJsaXRTdGF0ZSgpOworICAgIFJFQ1QgZ2V0U3VyZmFjZVJlY3Qo
SURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UpIGNvbnN0OworCisgICAgLy8gVGhpcyBlbnVtIGlz
IHVzZWQgdG8gaW5kZXggbUNvbXBpbGVkU2hhZGVycyBhbmQgbVNoYWRlclNvdXJjZS4KKyAgICBl
bnVtIFNoYWRlcklkCisgICAgeworICAgICAgICBTSEFERVJfVlNfU1RBTkRBUkQsCisgICAgICAg
IFNIQURFUl9WU19GTElQWSwKKyAgICAgICAgU0hBREVSX1BTX1BBU1NUSFJPVUdILAorICAgICAg
ICBTSEFERVJfUFNfTFVNSU5BTkNFLAorICAgICAgICBTSEFERVJfUFNfQ09NUE9ORU5UTUFTSywK
KyAgICAgICAgU0hBREVSX0NPVU5UCisgICAgfTsKKworICAgIC8vIFRoaXMgYWN0dWFsbHkgY29u
dGFpbnMgSURpcmVjdDNEVmVydGV4U2hhZGVyOSBvciBJRGlyZWN0M0RQaXhlbFNoYWRlcjkgY2Fz
dGVkIHRvIElVbmtub3duLgorICAgIElVbmtub3duICptQ29tcGlsZWRTaGFkZXJzW1NIQURFUl9D
T1VOVF07CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRDNEU2hhZGVyVHlwZT4KKyAgICBib29sIHNl
dFNoYWRlcihTaGFkZXJJZCBzb3VyY2UsIGNvbnN0IGNoYXIgKnByb2ZpbGUsCisgICAgICAgICAg
ICAgICAgICAgRDNEU2hhZGVyVHlwZSAqKFJlbmRlcmVyOTo6KmNyZWF0ZVNoYWRlcikoY29uc3Qg
RFdPUkQgKiwgc2l6ZV90IGxlbmd0aCksCisgICAgICAgICAgICAgICAgICAgSFJFU1VMVCAoV0lO
QVBJIElEaXJlY3QzRERldmljZTk6OipzZXRTaGFkZXIpKEQzRFNoYWRlclR5cGUqKSk7CisKKyAg
ICBib29sIHNldFZlcnRleFNoYWRlcihTaGFkZXJJZCBzaGFkZXIpOworICAgIGJvb2wgc2V0UGl4
ZWxTaGFkZXIoU2hhZGVySWQgc2hhZGVyKTsKKyAgICB2b2lkIHJlbmRlcigpOworCisgICAgdm9p
ZCBzYXZlU3RhdGUoKTsKKyAgICB2b2lkIHJlc3RvcmVTdGF0ZSgpOworICAgIElEaXJlY3QzRFN0
YXRlQmxvY2s5ICptU2F2ZWRTdGF0ZUJsb2NrOworICAgIElEaXJlY3QzRFN1cmZhY2U5ICptU2F2
ZWRSZW5kZXJUYXJnZXQ7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKm1TYXZlZERlcHRoU3RlbmNp
bDsKKworICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihCbGl0KTsKK307Cit9CisKKyNlbmRp
ZiAgIC8vIExJQkdMRVNWMl9CTElUX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2U5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3Jh
Z2U5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDc4IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBCdWZm
ZXJTdG9yYWdlOS5jcHAgRGVmaW5lcyB0aGUgQnVmZmVyU3RvcmFnZTkgY2xhc3MuCisKKyNpbmNs
dWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTkuaCIKKyNpbmNsdWRlICJjb21t
b24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0J1ZmZlclN0b3JhZ2U5OjpCdWZmZXJT
dG9yYWdlOSgpCit7CisgICAgbU1lbW9yeSA9IE5VTEw7CisgICAgbUFsbG9jYXRlZFNpemUgPSAw
OworICAgIG1TaXplID0gMDsKK30KKworQnVmZmVyU3RvcmFnZTk6On5CdWZmZXJTdG9yYWdlOSgp
Cit7CisgICAgZGVsZXRlW10gbU1lbW9yeTsKK30KKworQnVmZmVyU3RvcmFnZTkgKkJ1ZmZlclN0
b3JhZ2U5OjptYWtlQnVmZmVyU3RvcmFnZTkoQnVmZmVyU3RvcmFnZSAqYnVmZmVyU3RvcmFnZSkK
K3sKKyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShCdWZmZXJTdG9yYWdlOSosIGJ1ZmZlclN0
b3JhZ2UpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QnVmZmVyU3RvcmFnZTkqPihidWZmZXJT
dG9yYWdlKTsKK30KKwordm9pZCAqQnVmZmVyU3RvcmFnZTk6OmdldERhdGEoKQoreworICAgIHJl
dHVybiBtTWVtb3J5OworfQorCit2b2lkIEJ1ZmZlclN0b3JhZ2U5OjpzZXREYXRhKGNvbnN0IHZv
aWQqIGRhdGEsIHVuc2lnbmVkIGludCBzaXplLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworICAg
IGlmICghbU1lbW9yeSB8fCBvZmZzZXQgKyBzaXplID4gbUFsbG9jYXRlZFNpemUpCisgICAgewor
ICAgICAgICB1bnNpZ25lZCBpbnQgbmV3QWxsb2NhdGVkU2l6ZSA9IG9mZnNldCArIHNpemU7Cisg
ICAgICAgIHZvaWQgKm5ld01lbW9yeSA9IG5ldyBjaGFyW25ld0FsbG9jYXRlZFNpemVdOworCisg
ICAgICAgIGlmIChvZmZzZXQgPiAwICYmIG1NZW1vcnkgJiYgbUFsbG9jYXRlZFNpemUgPiAwKQor
ICAgICAgICB7CisgICAgICAgICAgICBtZW1jcHkobmV3TWVtb3J5LCBtTWVtb3J5LCBzdGQ6Om1p
bihvZmZzZXQsIG1BbGxvY2F0ZWRTaXplKSk7CisgICAgICAgIH0KKworICAgICAgICBkZWxldGVb
XSBtTWVtb3J5OworICAgICAgICBtTWVtb3J5ID0gbmV3TWVtb3J5OworICAgICAgICBtQWxsb2Nh
dGVkU2l6ZSA9IG5ld0FsbG9jYXRlZFNpemU7CisgICAgfQorCisgICAgbVNpemUgPSBzdGQ6Om1h
eChtU2l6ZSwgb2Zmc2V0ICsgc2l6ZSk7CisgICAgaWYgKGRhdGEpCisgICAgeworICAgICAgICBt
ZW1jcHkocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obU1lbW9yeSkgKyBvZmZzZXQsIGRhdGEsIHNp
emUpOworICAgIH0KK30KKwordm9pZCBCdWZmZXJTdG9yYWdlOTo6Y2xlYXIoKQoreworICAgIG1T
aXplID0gMDsKK30KKwordW5zaWduZWQgaW50IEJ1ZmZlclN0b3JhZ2U5OjpnZXRTaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbVNpemU7Cit9CisKK2Jvb2wgQnVmZmVyU3RvcmFnZTk6OnN1cHBv
cnRzRGlyZWN0QmluZGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZl
clN0b3JhZ2U5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEz
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gQnVmZmVy
U3RvcmFnZTkuaCBEZWZpbmVzIHRoZSBCdWZmZXJTdG9yYWdlOSBjbGFzcy4KKworI2lmbmRlZiBM
SUJHTEVTVjJfUkVOREVSRVJfQlVGRkVSU1RPUkFHRTlfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JF
TkRFUkVSX0JVRkZFUlNUT1JBR0U5X0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
QnVmZmVyU3RvcmFnZS5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgQnVmZmVyU3RvcmFn
ZTkgOiBwdWJsaWMgQnVmZmVyU3RvcmFnZQoreworICBwdWJsaWM6CisgICAgQnVmZmVyU3RvcmFn
ZTkoKTsKKyAgICB2aXJ0dWFsIH5CdWZmZXJTdG9yYWdlOSgpOworCisgICAgc3RhdGljIEJ1ZmZl
clN0b3JhZ2U5ICptYWtlQnVmZmVyU3RvcmFnZTkoQnVmZmVyU3RvcmFnZSAqYnVmZmVyU3RvcmFn
ZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgKmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50IG9m
ZnNldCk7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKCk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBp
bnQgZ2V0U2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RpcmVjdEJpbmRp
bmcoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihC
dWZmZXJTdG9yYWdlOSk7CisKKyAgICB2b2lkICptTWVtb3J5OworICAgIHVuc2lnbmVkIGludCBt
QWxsb2NhdGVkU2l6ZTsKKworICAgIHVuc2lnbmVkIGludCBtU2l6ZTsKK307CisKK30KKworI2Vu
ZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9CVUZGRVJTVE9SQUdFOV9IXwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNTggQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIEJ1ZmZlclN0b3JhZ2UxMS5jcHAgRGVmaW5lcyB0aGUgQnVmZmVy
U3RvcmFnZTExIGNsYXNzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0
b3JhZ2UxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0J1ZmZlclN0
b3JhZ2UxMTo6QnVmZmVyU3RvcmFnZTExKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQoreworICAgIG1S
ZW5kZXJlciA9IHJlbmRlcmVyOworCisgICAgbVN0YWdpbmdCdWZmZXIgPSBOVUxMOworICAgIG1T
dGFnaW5nQnVmZmVyU2l6ZSA9IDA7CisKKyAgICBtQnVmZmVyID0gTlVMTDsKKyAgICBtQnVmZmVy
U2l6ZSA9IDA7CisKKyAgICBtU2l6ZSA9IDA7CisKKyAgICBtUmVzb2x2ZWREYXRhID0gTlVMTDsK
KyAgICBtUmVzb2x2ZWREYXRhU2l6ZSA9IDA7CisgICAgbVJlc29sdmVkRGF0YVZhbGlkID0gZmFs
c2U7CisKKyAgICBtUmVhZFVzYWdlQ291bnQgPSAwOworICAgIG1Xcml0ZVVzYWdlQ291bnQgPSAw
OworfQorCitCdWZmZXJTdG9yYWdlMTE6On5CdWZmZXJTdG9yYWdlMTEoKQoreworICAgIGlmICht
U3RhZ2luZ0J1ZmZlcikKKyAgICB7CisgICAgICAgIG1TdGFnaW5nQnVmZmVyLT5SZWxlYXNlKCk7
CisgICAgICAgIG1TdGFnaW5nQnVmZmVyID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobUJ1ZmZl
cikKKyAgICB7CisgICAgICAgIG1CdWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAgbUJ1ZmZlciA9
IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1SZXNvbHZlZERhdGEpCisgICAgeworICAgICAgICBm
cmVlKG1SZXNvbHZlZERhdGEpOworICAgICAgICBtUmVzb2x2ZWREYXRhID0gTlVMTDsKKyAgICB9
Cit9CisKK0J1ZmZlclN0b3JhZ2UxMSAqQnVmZmVyU3RvcmFnZTExOjptYWtlQnVmZmVyU3RvcmFn
ZTExKEJ1ZmZlclN0b3JhZ2UgKmJ1ZmZlclN0b3JhZ2UpCit7CisgICAgQVNTRVJUKEhBU19EWU5B
TUlDX1RZUEUoQnVmZmVyU3RvcmFnZTExKiwgYnVmZmVyU3RvcmFnZSkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxCdWZmZXJTdG9yYWdlMTEqPihidWZmZXJTdG9yYWdlKTsKK30KKwordm9pZCAq
QnVmZmVyU3RvcmFnZTExOjpnZXREYXRhKCkKK3sKKyAgICBpZiAoIW1SZXNvbHZlZERhdGFWYWxp
ZCkKKyAgICB7CisgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXRE
ZXZpY2UoKTsKKyAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4dCA9IG1SZW5kZXJl
ci0+Z2V0RGV2aWNlQ29udGV4dCgpOworICAgICAgICBIUkVTVUxUIHJlc3VsdDsKKworICAgICAg
ICBpZiAoIW1TdGFnaW5nQnVmZmVyIHx8IG1TdGFnaW5nQnVmZmVyU2l6ZSA8IG1CdWZmZXJTaXpl
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobVN0YWdpbmdCdWZmZXIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgbVN0YWdpbmdCdWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAg
ICAgICAgICBtU3RhZ2luZ0J1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICAgICAgbVN0YWdpbmdC
dWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRDNEMTFfQlVGRkVS
X0RFU0MgYnVmZmVyRGVzYzsKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MuQnl0ZVdpZHRoID0gbVNp
emU7CisgICAgICAgICAgICBidWZmZXJEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfU1RBR0lORzsK
KyAgICAgICAgICAgIGJ1ZmZlckRlc2MuQmluZEZsYWdzID0gMDsKKyAgICAgICAgICAgIGJ1ZmZl
ckRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1JFQUQgfCBEM0QxMV9DUFVf
QUNDRVNTX1dSSVRFOworICAgICAgICAgICAgYnVmZmVyRGVzYy5NaXNjRmxhZ3MgPSAwOworICAg
ICAgICAgICAgYnVmZmVyRGVzYy5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0gMDsKKworICAgICAgICAg
ICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVCdWZmZXIoJmJ1ZmZlckRlc2MsIE5VTEwsICZtU3Rh
Z2luZ0J1ZmZlcik7CisgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAo
dm9pZCopTlVMTCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1TdGFnaW5nQnVmZmVy
U2l6ZSA9IGJ1ZmZlckRlc2MuQnl0ZVdpZHRoOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFt
UmVzb2x2ZWREYXRhIHx8IG1SZXNvbHZlZERhdGFTaXplIDwgbUJ1ZmZlclNpemUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGZyZWUobVJlc29sdmVkRGF0YSk7CisgICAgICAgICAgICBtUmVzb2x2
ZWREYXRhID0gbWFsbG9jKG1TaXplKTsKKyAgICAgICAgICAgIG1SZXNvbHZlZERhdGFTaXplID0g
bVNpemU7CisgICAgICAgIH0KKworICAgICAgICBEM0QxMV9CT1ggc3JjQm94OworICAgICAgICBz
cmNCb3gubGVmdCA9IDA7CisgICAgICAgIHNyY0JveC5yaWdodCA9IG1TaXplOworICAgICAgICBz
cmNCb3gudG9wID0gMDsKKyAgICAgICAgc3JjQm94LmJvdHRvbSA9IDE7CisgICAgICAgIHNyY0Jv
eC5mcm9udCA9IDA7CisgICAgICAgIHNyY0JveC5iYWNrID0gMTsKKworICAgICAgICBjb250ZXh0
LT5Db3B5U3VicmVzb3VyY2VSZWdpb24obVN0YWdpbmdCdWZmZXIsIDAsIDAsIDAsIDAsIG1CdWZm
ZXIsIDAsICZzcmNCb3gpOworCisgICAgICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBw
ZWRSZXNvdXJjZTsKKyAgICAgICAgcmVzdWx0ID0gY29udGV4dC0+TWFwKG1TdGFnaW5nQnVmZmVy
LCAwLCBEM0QxMV9NQVBfUkVBRCwgMCwgJm1hcHBlZFJlc291cmNlKTsKKyAgICAgICAgaWYgKEZB
SUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlksICh2b2lkKilOVUxMKTsKKyAgICAgICAgfQorCisgICAgICAgIG1lbWNw
eShtUmVzb2x2ZWREYXRhLCBtYXBwZWRSZXNvdXJjZS5wRGF0YSwgbVNpemUpOworCisgICAgICAg
IGNvbnRleHQtPlVubWFwKG1TdGFnaW5nQnVmZmVyLCAwKTsKKworICAgICAgICBtUmVzb2x2ZWRE
YXRhVmFsaWQgPSB0cnVlOworICAgIH0KKworICAgIG1SZWFkVXNhZ2VDb3VudCA9IDA7CisKKyAg
ICByZXR1cm4gbVJlc29sdmVkRGF0YTsKK30KKwordm9pZCBCdWZmZXJTdG9yYWdlMTE6OnNldERh
dGEoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGludCBvZmZz
ZXQpCit7CisgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgp
OworICAgIElEM0QxMURldmljZUNvbnRleHQgKmNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmlj
ZUNvbnRleHQoKTsKKyAgICBIUkVTVUxUIHJlc3VsdDsKKworICAgIHVuc2lnbmVkIGludCByZXF1
aXJlZEJ1ZmZlclNpemUgPSBzaXplICsgb2Zmc2V0OworICAgIHVuc2lnbmVkIGludCByZXF1aXJl
ZFN0YWdpbmdTaXplID0gc2l6ZTsKKyAgICBib29sIGRpcmVjdEluaXRpYWxpemF0aW9uID0gb2Zm
c2V0ID09IDAgJiYgKCFtQnVmZmVyIHx8IG1CdWZmZXJTaXplIDwgc2l6ZSArIG9mZnNldCk7CisK
KyAgICBpZiAoIWRpcmVjdEluaXRpYWxpemF0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKCFtU3Rh
Z2luZ0J1ZmZlciB8fCBtU3RhZ2luZ0J1ZmZlclNpemUgPCByZXF1aXJlZFN0YWdpbmdTaXplKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobVN0YWdpbmdCdWZmZXIpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgbVN0YWdpbmdCdWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAgICAg
ICAgICBtU3RhZ2luZ0J1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICAgICAgbVN0YWdpbmdCdWZm
ZXJTaXplID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRDNEMTFfQlVGRkVSX0RF
U0MgYnVmZmVyRGVzYzsKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MuQnl0ZVdpZHRoID0gc2l6ZTsK
KyAgICAgICAgICAgIGJ1ZmZlckRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOworICAg
ICAgICAgICAgYnVmZmVyRGVzYy5CaW5kRmxhZ3MgPSAwOworICAgICAgICAgICAgYnVmZmVyRGVz
Yy5DUFVBY2Nlc3NGbGFncyA9IEQzRDExX0NQVV9BQ0NFU1NfUkVBRCB8IEQzRDExX0NQVV9BQ0NF
U1NfV1JJVEU7CisgICAgICAgICAgICBidWZmZXJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAg
ICAgICBidWZmZXJEZXNjLlN0cnVjdHVyZUJ5dGVTdHJpZGUgPSAwOworCisgICAgICAgICAgICBp
ZiAoZGF0YSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBEM0QxMV9TVUJSRVNPVVJD
RV9EQVRBIGluaXRpYWxEYXRhOworICAgICAgICAgICAgICAgIGluaXRpYWxEYXRhLnBTeXNNZW0g
PSBkYXRhOworICAgICAgICAgICAgICAgIGluaXRpYWxEYXRhLlN5c01lbVBpdGNoID0gc2l6ZTsK
KyAgICAgICAgICAgICAgICBpbml0aWFsRGF0YS5TeXNNZW1TbGljZVBpdGNoID0gMDsKKworICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZidWZmZXJEZXNjLCAm
aW5pdGlhbERhdGEsICZtU3RhZ2luZ0J1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5D
cmVhdGVCdWZmZXIoJmJ1ZmZlckRlc2MsIE5VTEwsICZtU3RhZ2luZ0J1ZmZlcik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBtU3RhZ2luZ0J1ZmZlclNpemUgPSBzaXplOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgaWYgKGRhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIEQz
RDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IGNvbnRleHQtPk1hcChtU3RhZ2luZ0J1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRFLCAwLCAm
bWFwcGVkUmVzb3VyY2UpOworICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1lbWNweShtYXBwZWRSZXNvdXJjZS5w
RGF0YSwgZGF0YSwgc2l6ZSk7CisKKyAgICAgICAgICAgIGNvbnRleHQtPlVubWFwKG1TdGFnaW5n
QnVmZmVyLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbUJ1ZmZlciB8fCBtQnVm
ZmVyU2l6ZSA8IHNpemUgKyBvZmZzZXQpCisgICAgeworICAgICAgICBEM0QxMV9CVUZGRVJfREVT
QyBidWZmZXJEZXNjOworICAgICAgICBidWZmZXJEZXNjLkJ5dGVXaWR0aCA9IHJlcXVpcmVkQnVm
ZmVyU2l6ZTsKKyAgICAgICAgYnVmZmVyRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7
CisgICAgICAgIGJ1ZmZlckRlc2MuQmluZEZsYWdzID0gRDNEMTFfQklORF9WRVJURVhfQlVGRkVS
IHwgRDNEMTFfQklORF9JTkRFWF9CVUZGRVI7CisgICAgICAgIGJ1ZmZlckRlc2MuQ1BVQWNjZXNz
RmxhZ3MgPSAwOworICAgICAgICBidWZmZXJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgIGJ1
ZmZlckRlc2MuU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7CisKKyAgICAgICAgaWYgKGRpcmVjdElu
aXRpYWxpemF0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBTaW5jZSB0aGUgZGF0YSB3
aWxsIGZpbGwgdGhlIGVudGlyZSBidWZmZXIgKGJlaW5nIGxhcmdlciB0aGFuIHRoZSBpbml0aWFs
IHNpemUgYW5kIGhhdmluZworICAgICAgICAgICAgLy8gbm8gb2Zmc2V0KSwgdGhlIGJ1ZmZlciBj
YW4gYmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgZGF0YSBzbyBubyBzdGFnaW5nIGJ1ZmZlciBpcyBy
ZXF1aXJlZAorCisgICAgICAgICAgICAvLyBObyBsb25nZXIgbmVlZCB0aGUgb2xkIGJ1ZmZlcgor
ICAgICAgICAgICAgaWYgKG1CdWZmZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
bUJ1ZmZlci0+UmVsZWFzZSgpOworICAgICAgICAgICAgICAgIG1CdWZmZXIgPSBOVUxMOworICAg
ICAgICAgICAgICAgIG1CdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKGRhdGEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRDNEMTFfU1VCUkVT
T1VSQ0VfREFUQSBpbml0aWFsRGF0YTsKKyAgICAgICAgICAgICAgICBpbml0aWFsRGF0YS5wU3lz
TWVtID0gZGF0YTsKKyAgICAgICAgICAgICAgICBpbml0aWFsRGF0YS5TeXNNZW1QaXRjaCA9IHNp
emU7CisgICAgICAgICAgICAgICAgaW5pdGlhbERhdGEuU3lzTWVtU2xpY2VQaXRjaCA9IDA7CisK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmYnVmZmVyRGVz
YywgJmluaXRpYWxEYXRhLCAmbUJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVh
dGVCdWZmZXIoJmJ1ZmZlckRlc2MsIE5VTEwsICZtQnVmZmVyKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobUJ1ZmZlciAmJiBvZmZzZXQgPiAwKQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyBJZiBvZmZzZXQgaXMgZ3JlYXRlciB0aGFuIHplcm8gYW5k
IHRoZSBidWZmZXIgaXMgbm9uLW51bGwsIG5lZWQgdG8gcHJlc2VydmUgdGhlIGRhdGEgZnJvbQor
ICAgICAgICAgICAgLy8gdGhlIG9sZCBidWZmZXIgdXAgdG8gb2Zmc2V0CisgICAgICAgICAgICBJ
RDNEMTFCdWZmZXIgKm5ld0J1ZmZlciA9IE5VTEw7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IGRl
dmljZS0+Q3JlYXRlQnVmZmVyKCZidWZmZXJEZXNjLCBOVUxMLCAmbmV3QnVmZmVyKTsKKyAgICAg
ICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBEM0QxMV9CT1ggc3JjQm94OworICAgICAgICAgICAgc3JjQm94LmxlZnQgPSAw
OworICAgICAgICAgICAgc3JjQm94LnJpZ2h0ID0gc3RkOjptaW4ob2Zmc2V0LCBtQnVmZmVyU2l6
ZSk7CisgICAgICAgICAgICBzcmNCb3gudG9wID0gMDsKKyAgICAgICAgICAgIHNyY0JveC5ib3R0
b20gPSAxOworICAgICAgICAgICAgc3JjQm94LmZyb250ID0gMDsKKyAgICAgICAgICAgIHNyY0Jv
eC5iYWNrID0gMTsKKworICAgICAgICAgICAgY29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9u
KG5ld0J1ZmZlciwgMCwgMCwgMCwgMCwgbUJ1ZmZlciwgMCwgJnNyY0JveCk7CisKKyAgICAgICAg
ICAgIG1CdWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1CdWZmZXIgPSBuZXdCdWZmZXI7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBTaW1w
bGUgY2FzZSwgbm90aGluZyBuZWVkcyB0byBiZSBjb3BpZWQgZnJvbSB0aGUgb2xkIGJ1ZmZlciB0
byB0aGUgbmV3IG9uZSwganVzdCBjcmVhdGUKKyAgICAgICAgICAgIC8vIGEgbmV3IGJ1ZmZlcgor
CisgICAgICAgICAgICAvLyBObyBsb25nZXIgbmVlZCB0aGUgb2xkIGJ1ZmZlcgorICAgICAgICAg
ICAgaWYgKG1CdWZmZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbUJ1ZmZlci0+
UmVsZWFzZSgpOworICAgICAgICAgICAgICAgIG1CdWZmZXIgPSBOVUxMOworICAgICAgICAgICAg
ICAgIG1CdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQ3Jl
YXRlIGEgbmV3IGJ1ZmZlciBmb3IgZGF0YSBzdG9yYWdlCisgICAgICAgICAgICByZXN1bHQgPSBk
ZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmYnVmZmVyRGVzYywgTlVMTCwgJm1CdWZmZXIpOworICAgICAg
ICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICB1cGRhdGVTZXJpYWwoKTsKKyAgICAgICAgbUJ1ZmZlclNpemUgPSBi
dWZmZXJEZXNjLkJ5dGVXaWR0aDsKKyAgICB9CisKKyAgICBpZiAoIWRpcmVjdEluaXRpYWxpemF0
aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1TdGFnaW5nQnVmZmVyICYmIG1TdGFnaW5nQnVm
ZmVyU2l6ZSA+PSByZXF1aXJlZFN0YWdpbmdTaXplKTsKKworICAgICAgICAvLyBEYXRhIGlzIGFs
cmVhZHkgcHV0IGludG8gdGhlIHN0YWdpbmcgYnVmZmVyLCBjb3B5IGl0IG92ZXIgdG8gdGhlIGRh
dGEgYnVmZmVyCisgICAgICAgIEQzRDExX0JPWCBzcmNCb3g7CisgICAgICAgIHNyY0JveC5sZWZ0
ID0gMDsKKyAgICAgICAgc3JjQm94LnJpZ2h0ID0gc2l6ZTsKKyAgICAgICAgc3JjQm94LnRvcCA9
IDA7CisgICAgICAgIHNyY0JveC5ib3R0b20gPSAxOworICAgICAgICBzcmNCb3guZnJvbnQgPSAw
OworICAgICAgICBzcmNCb3guYmFjayA9IDE7CisKKyAgICAgICAgY29udGV4dC0+Q29weVN1YnJl
c291cmNlUmVnaW9uKG1CdWZmZXIsIDAsIG9mZnNldCwgMCwgMCwgbVN0YWdpbmdCdWZmZXIsIDAs
ICZzcmNCb3gpOworICAgIH0KKworICAgIG1TaXplID0gc3RkOjptYXgobVNpemUsIG9mZnNldCAr
IHNpemUpOworCisgICAgbVdyaXRlVXNhZ2VDb3VudCA9IDA7CisKKyAgICBtUmVzb2x2ZWREYXRh
VmFsaWQgPSBmYWxzZTsKK30KKwordm9pZCBCdWZmZXJTdG9yYWdlMTE6OmNsZWFyKCkKK3sKKyAg
ICBtUmVzb2x2ZWREYXRhVmFsaWQgPSBmYWxzZTsKKyAgICBtU2l6ZSA9IDA7Cit9CisKK3Vuc2ln
bmVkIGludCBCdWZmZXJTdG9yYWdlMTE6OmdldFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBt
U2l6ZTsKK30KKworYm9vbCBCdWZmZXJTdG9yYWdlMTE6OnN1cHBvcnRzRGlyZWN0QmluZGluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQnVmZmVyU3RvcmFnZTExOjpt
YXJrQnVmZmVyVXNhZ2UoKQoreworICAgIG1SZWFkVXNhZ2VDb3VudCsrOworICAgIG1Xcml0ZVVz
YWdlQ291bnQrKzsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgdXNhZ2VMaW1pdCA9
IDU7CisKKyAgICBpZiAobVJlYWRVc2FnZUNvdW50ID4gdXNhZ2VMaW1pdCAmJiBtUmVzb2x2ZWRE
YXRhKQorICAgIHsKKyAgICAgICAgZnJlZShtUmVzb2x2ZWREYXRhKTsKKyAgICAgICAgbVJlc29s
dmVkRGF0YSA9IE5VTEw7CisgICAgICAgIG1SZXNvbHZlZERhdGFTaXplID0gMDsKKyAgICAgICAg
bVJlc29sdmVkRGF0YVZhbGlkID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1SZWFkVXNhZ2VD
b3VudCA+IHVzYWdlTGltaXQgJiYgbVdyaXRlVXNhZ2VDb3VudCA+IHVzYWdlTGltaXQgJiYgbVN0
YWdpbmdCdWZmZXIpCisgICAgeworICAgICAgICBtU3RhZ2luZ0J1ZmZlci0+UmVsZWFzZSgpOwor
ICAgICAgICBtU3RhZ2luZ0J1ZmZlciA9IE5VTEw7CisgICAgICAgIG1TdGFnaW5nQnVmZmVyU2l6
ZSA9IDA7CisgICAgfQorfQorCitJRDNEMTFCdWZmZXIgKkJ1ZmZlclN0b3JhZ2UxMTo6Z2V0QnVm
ZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUJ1ZmZlcjsKK30KKworfQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL0J1ZmZlclN0b3JhZ2UxMS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJ1ZmZlclN0b3JhZ2Ux
MS5oIERlZmluZXMgdGhlIEJ1ZmZlclN0b3JhZ2UxMSBjbGFzcy4KKworI2lmbmRlZiBMSUJHTEVT
VjJfUkVOREVSRVJfQlVGRkVSU1RPUkFHRTExX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJF
Ul9CVUZGRVJTVE9SQUdFMTFfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9CdWZm
ZXJTdG9yYWdlLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXIxMTsKKworY2xh
c3MgQnVmZmVyU3RvcmFnZTExIDogcHVibGljIEJ1ZmZlclN0b3JhZ2UKK3sKKyAgcHVibGljOgor
ICAgIGV4cGxpY2l0IEJ1ZmZlclN0b3JhZ2UxMShSZW5kZXJlcjExICpyZW5kZXJlcik7CisgICAg
dmlydHVhbCB+QnVmZmVyU3RvcmFnZTExKCk7CisKKyAgICBzdGF0aWMgQnVmZmVyU3RvcmFnZTEx
ICptYWtlQnVmZmVyU3RvcmFnZTExKEJ1ZmZlclN0b3JhZ2UgKmJ1ZmZlclN0b3JhZ2UpOworCisg
ICAgdmlydHVhbCB2b2lkICpnZXREYXRhKCk7CisgICAgdmlydHVhbCB2b2lkIHNldERhdGEoY29u
c3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGludCBvZmZzZXQpOwor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpOworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNp
emUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEaXJlY3RCaW5kaW5nKCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcmtCdWZmZXJVc2FnZSgpOworCisgICAgSUQzRDExQnVm
ZmVyICpnZXRCdWZmZXIoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIFJlbmRlcmVyMTEgKm1S
ZW5kZXJlcjsKKworICAgIElEM0QxMUJ1ZmZlciAqbVN0YWdpbmdCdWZmZXI7CisgICAgdW5zaWdu
ZWQgaW50IG1TdGFnaW5nQnVmZmVyU2l6ZTsKKworICAgIElEM0QxMUJ1ZmZlciAqbUJ1ZmZlcjsK
KyAgICB1bnNpZ25lZCBpbnQgbUJ1ZmZlclNpemU7CisKKyAgICB1bnNpZ25lZCBpbnQgbVNpemU7
CisKKyAgICB2b2lkICptUmVzb2x2ZWREYXRhOworICAgIHVuc2lnbmVkIGludCBtUmVzb2x2ZWRE
YXRhU2l6ZTsKKyAgICBib29sIG1SZXNvbHZlZERhdGFWYWxpZDsKKworICAgIHVuc2lnbmVkIGlu
dCBtUmVhZFVzYWdlQ291bnQ7CisgICAgdW5zaWduZWQgaW50IG1Xcml0ZVVzYWdlQ291bnQ7Cit9
OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfQlVGRkVSU1RPUkFHRTExX0hf
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1
ZmZlclN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZS5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3Jh
Z2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisjaW5jbHVkZSAicHJlY29tcGls
ZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBCdWZmZXJTdG9yYWdlLmNwcCBEZWZpbmVzIHRoZSBh
YnN0cmFjdCBCdWZmZXJTdG9yYWdlIGNsYXNzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRl
cmVyL0J1ZmZlclN0b3JhZ2UuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK3Vuc2lnbmVkIGludCBC
dWZmZXJTdG9yYWdlOjptTmV4dFNlcmlhbCA9IDE7CisKK0J1ZmZlclN0b3JhZ2U6OkJ1ZmZlclN0
b3JhZ2UoKQoreworICAgIHVwZGF0ZVNlcmlhbCgpOworfQorCitCdWZmZXJTdG9yYWdlOjp+QnVm
ZmVyU3RvcmFnZSgpCit7Cit9CisKK3Vuc2lnbmVkIGludCBCdWZmZXJTdG9yYWdlOjpnZXRTZXJp
YWwoKSBjb25zdAoreworICAgIHJldHVybiBtU2VyaWFsOworfQorCit2b2lkIEJ1ZmZlclN0b3Jh
Z2U6OnVwZGF0ZVNlcmlhbCgpCit7CisgICAgbVNlcmlhbCA9IG1OZXh0U2VyaWFsKys7Cit9CisK
K3ZvaWQgQnVmZmVyU3RvcmFnZTo6bWFya0J1ZmZlclVzYWdlKCkKK3sKK30KKworfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9y
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2UuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJ1ZmZlclN0b3JhZ2Uu
aCBEZWZpbmVzIHRoZSBhYnN0cmFjdCBCdWZmZXJTdG9yYWdlIGNsYXNzLgorCisjaWZuZGVmIExJ
QkdMRVNWMl9SRU5ERVJFUl9CVUZGRVJTVE9SQUdFX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5E
RVJFUl9CVUZGRVJTVE9SQUdFX0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgor
CituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgQnVmZmVyU3RvcmFnZQoreworICBwdWJsaWM6Cisg
ICAgQnVmZmVyU3RvcmFnZSgpOworICAgIHZpcnR1YWwgfkJ1ZmZlclN0b3JhZ2UoKTsKKworICAg
IC8vIFRoZSBkYXRhIHJldHVybmVkIGlzIG9ubHkgZ3VhcmFudGVlZCB2YWxpZCB1bnRpbCBuZXh0
IG5vbi1jb25zdCBtZXRob2QuCisgICAgdmlydHVhbCB2b2lkICpnZXREYXRhKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGludCBzaXpl
LCB1bnNpZ25lZCBpbnQgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKCkgPSAw
OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNpemUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzRGlyZWN0QmluZGluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgbWFya0J1ZmZlclVzYWdlKCk7CisgICAgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNv
bnN0OworCisgIHByb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZVNlcmlhbCgpOworCisgIHByaXZh
dGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEJ1ZmZlclN0b3JhZ2UpOworCisgICAg
dW5zaWduZWQgaW50IG1TZXJpYWw7CisgICAgc3RhdGljIHVuc2lnbmVkIGludCBtTmV4dFNlcmlh
bDsKK307CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9CVUZGRVJTVE9SQUdF
X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L0ZlbmNlOS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEzNSBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gRmVuY2U5LmNwcDogRGVmaW5lcyB0aGUgcng6OkZlbmNlOSBjbGFzcy4KKworI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
bWFpbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmgiCisKK25hbWVzcGFjZSBy
eAoreworCitGZW5jZTk6OkZlbmNlOShyeDo6UmVuZGVyZXI5ICpyZW5kZXJlcikKK3sKKyAgICBt
UmVuZGVyZXIgPSByZW5kZXJlcjsKKyAgICBtUXVlcnkgPSBOVUxMOworfQorCitGZW5jZTk6On5G
ZW5jZTkoKQoreworICAgIGlmIChtUXVlcnkpCisgICAgeworICAgICAgICBtUmVuZGVyZXItPmZy
ZWVFdmVudFF1ZXJ5KG1RdWVyeSk7CisgICAgICAgIG1RdWVyeSA9IE5VTEw7CisgICAgfQorfQor
CitHTGJvb2xlYW4gRmVuY2U5Ojppc0ZlbmNlKCkKK3sKKyAgICAvLyBHTF9OVl9mZW5jZSBzcGVj
OgorICAgIC8vIEEgbmFtZSByZXR1cm5lZCBieSBHZW5GZW5jZXNOViwgYnV0IG5vdCB5ZXQgc2V0
IHZpYSBTZXRGZW5jZU5WLCBpcyBub3QgdGhlIG5hbWUgb2YgYW4gZXhpc3RpbmcgZmVuY2UuCisg
ICAgcmV0dXJuIG1RdWVyeSAhPSBOVUxMOworfQorCit2b2lkIEZlbmNlOTo6c2V0RmVuY2UoR0xl
bnVtIGNvbmRpdGlvbikKK3sKKyAgICBpZiAoIW1RdWVyeSkKKyAgICB7CisgICAgICAgIG1RdWVy
eSA9IG1SZW5kZXJlci0+YWxsb2NhdGVFdmVudFF1ZXJ5KCk7CisgICAgICAgIGlmICghbVF1ZXJ5
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOworICAgICAgICB9CisgICAgfQorCisgICAgSFJFU1VMVCByZXN1bHQgPSBtUXVlcnktPklz
c3VlKEQzRElTU1VFX0VORCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAg
IHNldENvbmRpdGlvbihjb25kaXRpb24pOworICAgIHNldFN0YXR1cyhHTF9GQUxTRSk7Cit9CisK
K0dMYm9vbGVhbiBGZW5jZTk6OnRlc3RGZW5jZSgpCit7CisgICAgaWYgKG1RdWVyeSA9PSBOVUxM
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
R0xfVFJVRSk7CisgICAgfQorCisgICAgSFJFU1VMVCByZXN1bHQgPSBtUXVlcnktPkdldERhdGEo
TlVMTCwgMCwgRDNER0VUREFUQV9GTFVTSCk7CisKKyAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0
RXJyb3IocmVzdWx0KSkKKyAgICB7CisgICAgICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNlTG9z
dCgpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIEdMX1RSVUUp
OworICAgIH0KKworICAgIEFTU0VSVChyZXN1bHQgPT0gU19PSyB8fCByZXN1bHQgPT0gU19GQUxT
RSk7CisgICAgc2V0U3RhdHVzKHJlc3VsdCA9PSBTX09LKTsKKyAgICByZXR1cm4gZ2V0U3RhdHVz
KCk7Cit9CisKK3ZvaWQgRmVuY2U5OjpmaW5pc2hGZW5jZSgpCit7CisgICAgaWYgKG1RdWVyeSA9
PSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CisgICAgfQorCisgICAgd2hpbGUgKCF0ZXN0RmVuY2UoKSkKKyAgICB7CisgICAgICAg
IFNsZWVwKDApOworICAgIH0KK30KKwordm9pZCBGZW5jZTk6OmdldEZlbmNlaXYoR0xlbnVtIHBu
YW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIGlmIChtUXVlcnkgPT0gTlVMTCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKwor
ICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZFTkNFX1NUQVRVU19O
VjoKKyAgICAgICAgeworICAgICAgICAgICAgLy8gR0xfTlZfZmVuY2Ugc3BlYzoKKyAgICAgICAg
ICAgIC8vIE9uY2UgdGhlIHN0YXR1cyBvZiBhIGZlbmNlIGhhcyBiZWVuIGZpbmlzaGVkICh2aWEg
RmluaXNoRmVuY2VOVikgb3IgdGVzdGVkIGFuZCB0aGUgcmV0dXJuZWQgc3RhdHVzIGlzIFRSVUUg
KHZpYSBlaXRoZXIgVGVzdEZlbmNlTlYKKyAgICAgICAgICAgIC8vIG9yIEdldEZlbmNlaXZOViBx
dWVyeWluZyB0aGUgRkVOQ0VfU1RBVFVTX05WKSwgdGhlIHN0YXR1cyByZW1haW5zIFRSVUUgdW50
aWwgdGhlIG5leHQgU2V0RmVuY2VOViBvZiB0aGUgZmVuY2UuCisgICAgICAgICAgICBpZiAoZ2V0
U3RhdHVzKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcGFyYW1zWzBdID0gR0xf
VFJVRTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVF1ZXJ5LT5HZXREYXRhKE5VTEwsIDAs
IDApOworCisgICAgICAgICAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwYXJhbXNbMF0gPSBHTF9UUlVFOworICAg
ICAgICAgICAgICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNlTG9zdCgpOworICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gU19PSyB8fCByZXN1bHQgPT0gU19GQUxTRSk7
CisgICAgICAgICAgICBzZXRTdGF0dXMocmVzdWx0ID09IFNfT0spOworICAgICAgICAgICAgcGFy
YW1zWzBdID0gZ2V0U3RhdHVzKCk7CisKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgR0xfRkVOQ0VfQ09ORElUSU9OX05WOgorICAgICAgICAgICAgcGFyYW1zWzBd
ID0gZ2V0Q29uZGl0aW9uKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlOS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5j
ZTkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEZl
bmNlOS5oOiBEZWZpbmVzIHRoZSByeDo6RmVuY2U5IGNsYXNzIHdoaWNoIGltcGxlbWVudHMgcng6
OkZlbmNlSW1wbC4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfRkVOQ0U5X0hfCisjZGVm
aW5lIExJQkdMRVNWMl9SRU5ERVJFUl9GRU5DRTlfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9y
ZW5kZXJlci9GZW5jZUltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjk7
CisKK2NsYXNzIEZlbmNlOSA6IHB1YmxpYyBGZW5jZUltcGwKK3sKKyAgcHVibGljOgorICAgIGV4
cGxpY2l0IEZlbmNlOShyeDo6UmVuZGVyZXI5ICpyZW5kZXJlcik7CisgICAgdmlydHVhbCB+RmVu
Y2U5KCk7CisKKyAgICBHTGJvb2xlYW4gaXNGZW5jZSgpOworICAgIHZvaWQgc2V0RmVuY2UoR0xl
bnVtIGNvbmRpdGlvbik7CisgICAgR0xib29sZWFuIHRlc3RGZW5jZSgpOworICAgIHZvaWQgZmlu
aXNoRmVuY2UoKTsKKyAgICB2b2lkIGdldEZlbmNlaXYoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFy
YW1zKTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihGZW5jZTkp
OworCisgICAgcng6OlJlbmRlcmVyOSAqbVJlbmRlcmVyOworICAgIElEaXJlY3QzRFF1ZXJ5OSAq
bVF1ZXJ5OworfTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0ZFTkNFOV9I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9G
ZW5jZTExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0ZlbmNlMTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTExLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMzQgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIEZlbmNlMTEuY3BwOiBEZWZpbmVzIHRoZSByeDo6RmVuY2UxMSBjbGFzcyB3aGlj
aCBpbXBsZW1lbnRzIHJ4OjpGZW5jZUltcGwuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvRmVuY2UxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0ZlbmNl
MTE6OkZlbmNlMTEocng6OlJlbmRlcmVyMTEgKnJlbmRlcmVyKQoreworICAgIG1SZW5kZXJlciA9
IHJlbmRlcmVyOworICAgIG1RdWVyeSA9IE5VTEw7Cit9CisKK0ZlbmNlMTE6On5GZW5jZTExKCkK
K3sKKyAgICBpZiAobVF1ZXJ5KQorICAgIHsKKyAgICAgICAgbVF1ZXJ5LT5SZWxlYXNlKCk7Cisg
ICAgICAgIG1RdWVyeSA9IE5VTEw7CisgICAgfQorfQorCitHTGJvb2xlYW4gRmVuY2UxMTo6aXNG
ZW5jZSgpCit7CisgICAgLy8gR0xfTlZfZmVuY2Ugc3BlYzoKKyAgICAvLyBBIG5hbWUgcmV0dXJu
ZWQgYnkgR2VuRmVuY2VzTlYsIGJ1dCBub3QgeWV0IHNldCB2aWEgU2V0RmVuY2VOViwgaXMgbm90
IHRoZSBuYW1lIG9mIGFuIGV4aXN0aW5nIGZlbmNlLgorICAgIHJldHVybiBtUXVlcnkgIT0gTlVM
TDsKK30KKwordm9pZCBGZW5jZTExOjpzZXRGZW5jZShHTGVudW0gY29uZGl0aW9uKQoreworICAg
IGlmICghbVF1ZXJ5KQorICAgIHsKKyAgICAgICAgRDNEMTFfUVVFUllfREVTQyBxdWVyeURlc2M7
CisgICAgICAgIHF1ZXJ5RGVzYy5RdWVyeSA9IEQzRDExX1FVRVJZX0VWRU5UOworICAgICAgICBx
dWVyeURlc2MuTWlzY0ZsYWdzID0gMDsKKworICAgICAgICBpZiAoRkFJTEVEKG1SZW5kZXJlci0+
Z2V0RGV2aWNlKCktPkNyZWF0ZVF1ZXJ5KCZxdWVyeURlc2MsICZtUXVlcnkpKSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5FbmQobVF1
ZXJ5KTsKKworICAgIHNldENvbmRpdGlvbihjb25kaXRpb24pOworICAgIHNldFN0YXR1cyhHTF9G
QUxTRSk7Cit9CisKK0dMYm9vbGVhbiBGZW5jZTExOjp0ZXN0RmVuY2UoKQoreworICAgIGlmICht
UXVlcnkgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sIEdMX1RSVUUpOworICAgIH0KKworICAgIEhSRVNVTFQgcmVzdWx0ID0gbVJl
bmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCktPkdldERhdGEobVF1ZXJ5LCBOVUxMLCAwLCAwKTsK
KworICAgIGlmIChtUmVuZGVyZXItPmlzRGV2aWNlTG9zdCgpKQorICAgIHsKKyAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIEdMX1RSVUUpOworICAgIH0KKworICAgIEFT
U0VSVChyZXN1bHQgPT0gU19PSyB8fCByZXN1bHQgPT0gU19GQUxTRSk7CisgICAgc2V0U3RhdHVz
KHJlc3VsdCA9PSBTX09LKTsKKyAgICByZXR1cm4gZ2V0U3RhdHVzKCk7Cit9CisKK3ZvaWQgRmVu
Y2UxMTo6ZmluaXNoRmVuY2UoKQoreworICAgIGlmIChtUXVlcnkgPT0gTlVMTCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKwor
ICAgIHdoaWxlICghdGVzdEZlbmNlKCkpCisgICAgeworICAgICAgICBTbGVlcCgwKTsKKyAgICB9
Cit9CisKK3ZvaWQgRmVuY2UxMTo6Z2V0RmVuY2VpdihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpCit7CisgICAgaWYgKG1RdWVyeSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisgICAgc3dpdGNoIChwbmFt
ZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0ZFTkNFX1NUQVRVU19OVjoKKyAgICAgICAgeworICAg
ICAgICAgICAgLy8gR0xfTlZfZmVuY2Ugc3BlYzoKKyAgICAgICAgICAgIC8vIE9uY2UgdGhlIHN0
YXR1cyBvZiBhIGZlbmNlIGhhcyBiZWVuIGZpbmlzaGVkICh2aWEgRmluaXNoRmVuY2VOVikgb3Ig
dGVzdGVkIGFuZCB0aGUgcmV0dXJuZWQgc3RhdHVzIGlzIFRSVUUgKHZpYSBlaXRoZXIgVGVzdEZl
bmNlTlYKKyAgICAgICAgICAgIC8vIG9yIEdldEZlbmNlaXZOViBxdWVyeWluZyB0aGUgRkVOQ0Vf
U1RBVFVTX05WKSwgdGhlIHN0YXR1cyByZW1haW5zIFRSVUUgdW50aWwgdGhlIG5leHQgU2V0RmVu
Y2VOViBvZiB0aGUgZmVuY2UuCisgICAgICAgICAgICBpZiAoZ2V0U3RhdHVzKCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcGFyYW1zWzBdID0gR0xfVFJVRTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0
ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCktPkdldERhdGEobVF1ZXJ5LCBOVUxMLCAw
LCBEM0QxMV9BU1lOQ19HRVREQVRBX0RPTk9URkxVU0gpOworCisgICAgICAgICAgICBpZiAobVJl
bmRlcmVyLT5pc0RldmljZUxvc3QoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBw
YXJhbXNbMF0gPSBHTF9UUlVFOworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFTU0VSVChyZXN1
bHQgPT0gU19PSyB8fCByZXN1bHQgPT0gU19GQUxTRSk7CisgICAgICAgICAgICBzZXRTdGF0dXMo
cmVzdWx0ID09IFNfT0spOworICAgICAgICAgICAgcGFyYW1zWzBdID0gZ2V0U3RhdHVzKCk7CisK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICBjYXNlIEdMX0ZFTkNFX0NPTkRJ
VElPTl9OVjoKKyAgICAgICAgcGFyYW1zWzBdID0gZ2V0Q29uZGl0aW9uKCk7CisgICAgICAgIGJy
ZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X0VOVU0pOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2UxMS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2Ux
MS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9GZW5jZTExLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisvLyBGZW5jZTExLmg6IERlZmluZXMgdGhlIHJ4OjpGZW5jZTExIGNsYXNzIHdo
aWNoIGltcGxlbWVudHMgcng6OkZlbmNlSW1wbC4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVS
RVJfRmVuY2UxMV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJfRmVuY2UxMV9IXworCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlSW1wbC5oIgorCituYW1lc3BhY2UgcngK
K3sKK2NsYXNzIFJlbmRlcmVyMTE7CisKK2NsYXNzIEZlbmNlMTEgOiBwdWJsaWMgRmVuY2VJbXBs
Cit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBGZW5jZTExKHJ4OjpSZW5kZXJlcjExICpyZW5k
ZXJlcik7CisgICAgdmlydHVhbCB+RmVuY2UxMSgpOworCisgICAgR0xib29sZWFuIGlzRmVuY2Uo
KTsKKyAgICB2b2lkIHNldEZlbmNlKEdMZW51bSBjb25kaXRpb24pOworICAgIEdMYm9vbGVhbiB0
ZXN0RmVuY2UoKTsKKyAgICB2b2lkIGZpbmlzaEZlbmNlKCk7CisgICAgdm9pZCBnZXRGZW5jZWl2
KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oRmVuY2UxMSk7CisKKyAgICByeDo6UmVuZGVyZXIxMSAqbVJlbmRl
cmVyOworICAgIElEM0QxMVF1ZXJ5ICptUXVlcnk7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJH
TEVTVjJfUkVOREVSRVJfRkVOQ0UxMV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlSW1wbC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9GZW5jZUltcGwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorLy8KKy8vIENvcHly
aWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKy8vIEZlbmNlSW1wbC5oOiBEZWZpbmVzIHRoZSByeDo6RmVuY2VJbXBsIGNsYXNzLgorCisj
aWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9GRU5DRUlNUExfSF8KKyNkZWZpbmUgTElCR0xFU1Yy
X1JFTkRFUkVSX0ZFTkNFSU1QTF9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIK
KworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEZlbmNlSW1wbAoreworICBwdWJsaWM6CisgICAg
RmVuY2VJbXBsKCkgOiBtU3RhdHVzKEdMX0ZBTFNFKSwgbUNvbmRpdGlvbihHTF9OT05FKSB7IH07
CisgICAgdmlydHVhbCB+RmVuY2VJbXBsKCkgeyB9OworCisgICAgdmlydHVhbCBHTGJvb2xlYW4g
aXNGZW5jZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmVuY2UoR0xlbnVtIGNvbmRpdGlv
bikgPSAwOworICAgIHZpcnR1YWwgR0xib29sZWFuIHRlc3RGZW5jZSgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoRmVuY2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEZlbmNlaXYo
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKSA9IDA7CisKKyAgcHJvdGVjdGVkOgorICAgIHZv
aWQgc2V0U3RhdHVzKEdMYm9vbGVhbiBzdGF0dXMpIHsgbVN0YXR1cyA9IHN0YXR1czsgfQorICAg
IEdMYm9vbGVhbiBnZXRTdGF0dXMoKSBjb25zdCB7IHJldHVybiBtU3RhdHVzOyB9CisKKyAgICB2
b2lkIHNldENvbmRpdGlvbihHTHVpbnQgY29uZGl0aW9uKSB7IG1Db25kaXRpb24gPSBjb25kaXRp
b247IH0KKyAgICBHTHVpbnQgZ2V0Q29uZGl0aW9uKCkgY29uc3QgeyByZXR1cm4gbUNvbmRpdGlv
bjsgfQorCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEZlbmNlSW1w
bCk7CisKKyAgICBHTGJvb2xlYW4gbVN0YXR1czsKKyAgICBHTGVudW0gbUNvbmRpdGlvbjsKK307
CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9GRU5DRUlNUExfSF8KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2U5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL0ltYWdlOS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlOS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzMyIEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIEltYWdlOS5jcHA6IEltcGxlbWVudHMgdGhlIHJ4OjpJbWFnZTkgY2xhc3MsIHdoaWNoIGFj
dHMgYXMgdGhlIGludGVyZmFjZSB0bworLy8gdGhlIGFjdHVhbCB1bmRlcmx5aW5nIHN1cmZhY2Vz
IG9mIGEgVGV4dHVyZS4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTkuaCIK
KworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0ZyYW1l
YnVmZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyVGFyZ2V0OS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9UZXh0
dXJlU3RvcmFnZTkuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlf
dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvZ2VuZXJhdGVtaXAuaCIKKwor
bmFtZXNwYWNlIHJ4Cit7CisKK0ltYWdlOTo6SW1hZ2U5KCkKK3sKKyAgICBtU3VyZmFjZSA9IE5V
TEw7CisgICAgbVJlbmRlcmVyID0gTlVMTDsKKworICAgIG1EM0RQb29sID0gRDNEUE9PTF9TWVNU
RU1NRU07CisgICAgbUQzREZvcm1hdCA9IEQzREZNVF9VTktOT1dOOworfQorCitJbWFnZTk6On5J
bWFnZTkoKQoreworICAgIGlmIChtU3VyZmFjZSkKKyAgICB7CisgICAgICAgIG1TdXJmYWNlLT5S
ZWxlYXNlKCk7CisgICAgfQorfQorCit2b2lkIEltYWdlOTo6Z2VuZXJhdGVNaXAoSURpcmVjdDNE
U3VyZmFjZTkgKmRlc3RTdXJmYWNlLCBJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlU3VyZmFjZSkK
K3sKKyAgICBEM0RTVVJGQUNFX0RFU0MgZGVzdERlc2M7CisgICAgSFJFU1VMVCByZXN1bHQgPSBk
ZXN0U3VyZmFjZS0+R2V0RGVzYygmZGVzdERlc2MpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVz
dWx0KSk7CisKKyAgICBEM0RTVVJGQUNFX0RFU0Mgc291cmNlRGVzYzsKKyAgICByZXN1bHQgPSBz
b3VyY2VTdXJmYWNlLT5HZXREZXNjKCZzb3VyY2VEZXNjKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVE
KHJlc3VsdCkpOworCisgICAgQVNTRVJUKHNvdXJjZURlc2MuRm9ybWF0ID09IGRlc3REZXNjLkZv
cm1hdCk7CisgICAgQVNTRVJUKHNvdXJjZURlc2MuV2lkdGggPT0gMSB8fCBzb3VyY2VEZXNjLldp
ZHRoIC8gMiA9PSBkZXN0RGVzYy5XaWR0aCk7CisgICAgQVNTRVJUKHNvdXJjZURlc2MuSGVpZ2h0
ID09IDEgfHwgc291cmNlRGVzYy5IZWlnaHQgLyAyID09IGRlc3REZXNjLkhlaWdodCk7CisKKyAg
ICBEM0RMT0NLRURfUkVDVCBzb3VyY2VMb2NrZWQgPSB7MH07CisgICAgcmVzdWx0ID0gc291cmNl
U3VyZmFjZS0+TG9ja1JlY3QoJnNvdXJjZUxvY2tlZCwgTlVMTCwgRDNETE9DS19SRUFET05MWSk7
CisgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgIEQzRExPQ0tFRF9SRUNUIGRl
c3RMb2NrZWQgPSB7MH07CisgICAgcmVzdWx0ID0gZGVzdFN1cmZhY2UtPkxvY2tSZWN0KCZkZXN0
TG9ja2VkLCBOVUxMLCAwKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAg
Y29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KHNvdXJjZUxvY2tlZC5wQml0cyk7CisgICAgdW5zaWduZWQgY2hhciAq
ZGVzdERhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihkZXN0TG9ja2VkLnBC
aXRzKTsKKworICAgIGlmIChzb3VyY2VEYXRhICYmIGRlc3REYXRhKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChzb3VyY2VEZXNjLkZvcm1hdCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgRDNE
Rk1UX0w4OgorICAgICAgICAgICAgR2VuZXJhdGVNaXA8TDg+KHNvdXJjZURlc2MuV2lkdGgsIHNv
dXJjZURlc2MuSGVpZ2h0LCBzb3VyY2VEYXRhLCBzb3VyY2VMb2NrZWQuUGl0Y2gsIGRlc3REYXRh
LCBkZXN0TG9ja2VkLlBpdGNoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2Ug
RDNERk1UX0E4TDg6CisgICAgICAgICAgICBHZW5lcmF0ZU1pcDxBOEw4Pihzb3VyY2VEZXNjLldp
ZHRoLCBzb3VyY2VEZXNjLkhlaWdodCwgc291cmNlRGF0YSwgc291cmNlTG9ja2VkLlBpdGNoLCBk
ZXN0RGF0YSwgZGVzdExvY2tlZC5QaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICBjYXNlIEQzREZNVF9BOFI4RzhCODoKKyAgICAgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoK
KyAgICAgICAgICAgIEdlbmVyYXRlTWlwPEE4UjhHOEI4Pihzb3VyY2VEZXNjLldpZHRoLCBzb3Vy
Y2VEZXNjLkhlaWdodCwgc291cmNlRGF0YSwgc291cmNlTG9ja2VkLlBpdGNoLCBkZXN0RGF0YSwg
ZGVzdExvY2tlZC5QaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEQz
REZNVF9BMTZCMTZHMTZSMTZGOgorICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTE2QjE2RzE2UjE2
Rj4oc291cmNlRGVzYy5XaWR0aCwgc291cmNlRGVzYy5IZWlnaHQsIHNvdXJjZURhdGEsIHNvdXJj
ZUxvY2tlZC5QaXRjaCwgZGVzdERhdGEsIGRlc3RMb2NrZWQuUGl0Y2gpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgY2FzZSBEM0RGTVRfQTMyQjMyRzMyUjMyRjoKKyAgICAgICAgICAg
IEdlbmVyYXRlTWlwPEEzMkIzMkczMlIzMkY+KHNvdXJjZURlc2MuV2lkdGgsIHNvdXJjZURlc2Mu
SGVpZ2h0LCBzb3VyY2VEYXRhLCBzb3VyY2VMb2NrZWQuUGl0Y2gsIGRlc3REYXRhLCBkZXN0TG9j
a2VkLlBpdGNoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBkZXN0U3VyZmFjZS0+VW5sb2NrUmVjdCgpOworICAgICAgICBzb3VyY2VTdXJmYWNl
LT5VbmxvY2tSZWN0KCk7CisgICAgfQorfQorCitJbWFnZTkgKkltYWdlOTo6bWFrZUltYWdlOShJ
bWFnZSAqaW1nKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpJbWFnZTkqLCBp
bWcpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cng6OkltYWdlOSo+KGltZyk7Cit9CisKK3Zv
aWQgSW1hZ2U5OjpnZW5lcmF0ZU1pcG1hcChJbWFnZTkgKmRlc3QsIEltYWdlOSAqc291cmNlKQor
eworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2VTdXJmYWNlID0gc291cmNlLT5nZXRTdXJm
YWNlKCk7CisgICAgaWYgKHNvdXJjZVN1cmZhY2UgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0
U3VyZmFjZSA9IGRlc3QtPmdldFN1cmZhY2UoKTsKKyAgICBnZW5lcmF0ZU1pcChkZXN0U3VyZmFj
ZSwgc291cmNlU3VyZmFjZSk7CisKKyAgICBkZXN0LT5tYXJrRGlydHkoKTsKK30KKwordm9pZCBJ
bWFnZTk6OmNvcHlMb2NrYWJsZVN1cmZhY2VzKElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0LCBJRGly
ZWN0M0RTdXJmYWNlOSAqc291cmNlKQoreworICAgIEQzRExPQ0tFRF9SRUNUIHNvdXJjZUxvY2sg
PSB7MH07CisgICAgRDNETE9DS0VEX1JFQ1QgZGVzdExvY2sgPSB7MH07CisgICAgCisgICAgc291
cmNlLT5Mb2NrUmVjdCgmc291cmNlTG9jaywgTlVMTCwgMCk7CisgICAgZGVzdC0+TG9ja1JlY3Qo
JmRlc3RMb2NrLCBOVUxMLCAwKTsKKyAgICAKKyAgICBpZiAoc291cmNlTG9jay5wQml0cyAmJiBk
ZXN0TG9jay5wQml0cykKKyAgICB7CisgICAgICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOworICAg
ICAgICBzb3VyY2UtPkdldERlc2MoJmRlc2MpOworCisgICAgICAgIGludCByb3dzID0gZDNkOTo6
SXNDb21wcmVzc2VkRm9ybWF0KGRlc2MuRm9ybWF0KSA/IGRlc2MuSGVpZ2h0IC8gNCA6IGRlc2Mu
SGVpZ2h0OworICAgICAgICBpbnQgYnl0ZXMgPSBkM2Q5OjpDb21wdXRlUm93U2l6ZShkZXNjLkZv
cm1hdCwgZGVzYy5XaWR0aCk7CisgICAgICAgIEFTU0VSVChieXRlcyA8PSBzb3VyY2VMb2NrLlBp
dGNoICYmIGJ5dGVzIDw9IGRlc3RMb2NrLlBpdGNoKTsKKworICAgICAgICBmb3IoaW50IGkgPSAw
OyBpIDwgcm93czsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBtZW1jcHkoKGNoYXIqKWRl
c3RMb2NrLnBCaXRzICsgZGVzdExvY2suUGl0Y2ggKiBpLCAoY2hhciopc291cmNlTG9jay5wQml0
cyArIHNvdXJjZUxvY2suUGl0Y2ggKiBpLCBieXRlcyk7CisgICAgICAgIH0KKworICAgICAgICBz
b3VyY2UtPlVubG9ja1JlY3QoKTsKKyAgICAgICAgZGVzdC0+VW5sb2NrUmVjdCgpOworICAgIH0K
KyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Cit9CisKK2Jvb2wgSW1hZ2U5OjpyZWRlZmluZShyeDo6
UmVuZGVyZXIgKnJlbmRlcmVyLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIGJvb2wgZm9yY2VSZWxlYXNlKQoreworICAgIGlmIChtV2lkdGggIT0g
d2lkdGggfHwKKyAgICAgICAgbUhlaWdodCAhPSBoZWlnaHQgfHwKKyAgICAgICAgbUludGVybmFs
Rm9ybWF0ICE9IGludGVybmFsZm9ybWF0IHx8CisgICAgICAgIGZvcmNlUmVsZWFzZSkKKyAgICB7
CisgICAgICAgIG1SZW5kZXJlciA9IFJlbmRlcmVyOTo6bWFrZVJlbmRlcmVyOShyZW5kZXJlcik7
CisKKyAgICAgICAgbVdpZHRoID0gd2lkdGg7CisgICAgICAgIG1IZWlnaHQgPSBoZWlnaHQ7Cisg
ICAgICAgIG1JbnRlcm5hbEZvcm1hdCA9IGludGVybmFsZm9ybWF0OworICAgICAgICAvLyBjb21w
dXRlIHRoZSBkM2QgZm9ybWF0IHRoYXQgd2lsbCBiZSB1c2VkCisgICAgICAgIG1EM0RGb3JtYXQg
PSBtUmVuZGVyZXItPkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQp
OworICAgICAgICBtQWN0dWFsRm9ybWF0ID0gZDNkOV9nbDo6R2V0RXF1aXZhbGVudEZvcm1hdCht
RDNERm9ybWF0KTsKKworICAgICAgICBpZiAobVN1cmZhY2UpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1TdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgICAgICAgICBtU3VyZmFjZSA9IE5VTEw7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgSW1hZ2U5OjpjcmVhdGVTdXJmYWNlKCkKK3sKKyAgICBpZihtU3VyZmFj
ZSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBJRGlyZWN0M0RUZXh0dXJl
OSAqbmV3VGV4dHVyZSA9IE5VTEw7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKm5ld1N1cmZhY2Ug
PSBOVUxMOworICAgIGNvbnN0IEQzRFBPT0wgcG9vbFRvVXNlID0gRDNEUE9PTF9TWVNURU1NRU07
CisgICAgY29uc3QgRDNERk9STUFUIGQzZEZvcm1hdCA9IGdldEQzREZvcm1hdCgpOworICAgIEFT
U0VSVChkM2RGb3JtYXQgIT0gRDNERk1UX0lOVFopOyAvLyBXZSBzaG91bGQgbmV2ZXIgZ2V0IGhl
cmUgZm9yIGRlcHRoIHRleHR1cmVzCisKKyAgICBpZiAobVdpZHRoICE9IDAgJiYgbUhlaWdodCAh
PSAwKQorICAgIHsKKyAgICAgICAgaW50IGxldmVsVG9GZXRjaCA9IDA7CisgICAgICAgIEdMc2l6
ZWkgcmVxdWVzdFdpZHRoID0gbVdpZHRoOworICAgICAgICBHTHNpemVpIHJlcXVlc3RIZWlnaHQg
PSBtSGVpZ2h0OworICAgICAgICBnbDo6TWFrZVZhbGlkU2l6ZSh0cnVlLCBnbDo6SXNDb21wcmVz
c2VkKG1JbnRlcm5hbEZvcm1hdCksICZyZXF1ZXN0V2lkdGgsICZyZXF1ZXN0SGVpZ2h0LCAmbGV2
ZWxUb0ZldGNoKTsKKworICAgICAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVy
ZXItPmdldERldmljZSgpOworCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVh
dGVUZXh0dXJlKHJlcXVlc3RXaWR0aCwgcmVxdWVzdEhlaWdodCwgbGV2ZWxUb0ZldGNoICsgMSwg
MCwgZDNkRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBvb2xUb1VzZSwgJm5ld1RleHR1cmUsIE5VTEwpOworCisgICAgICAgIGlmIChG
QUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBE
M0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7CisgICAg
ICAgICAgICBFUlIoIkNyZWF0aW5nIGltYWdlIHN1cmZhY2UgZmFpbGVkLiIpOworICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorCisgICAg
ICAgIG5ld1RleHR1cmUtPkdldFN1cmZhY2VMZXZlbChsZXZlbFRvRmV0Y2gsICZuZXdTdXJmYWNl
KTsKKyAgICAgICAgbmV3VGV4dHVyZS0+UmVsZWFzZSgpOworICAgIH0KKworICAgIG1TdXJmYWNl
ID0gbmV3U3VyZmFjZTsKKyAgICBtRGlydHkgPSBmYWxzZTsKKyAgICBtRDNEUG9vbCA9IHBvb2xU
b1VzZTsKK30KKworSFJFU1VMVCBJbWFnZTk6OmxvY2soRDNETE9DS0VEX1JFQ1QgKmxvY2tlZFJl
Y3QsIGNvbnN0IFJFQ1QgKnJlY3QpCit7CisgICAgY3JlYXRlU3VyZmFjZSgpOworCisgICAgSFJF
U1VMVCByZXN1bHQgPSBEM0RFUlJfSU5WQUxJRENBTEw7CisKKyAgICBpZiAobVN1cmZhY2UpCisg
ICAgeworICAgICAgICByZXN1bHQgPSBtU3VyZmFjZS0+TG9ja1JlY3QobG9ja2VkUmVjdCwgcmVj
dCwgMCk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgbURp
cnR5ID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEltYWdl
OTo6dW5sb2NrKCkKK3sKKyAgICBpZiAobVN1cmZhY2UpCisgICAgeworICAgICAgICBIUkVTVUxU
IHJlc3VsdCA9IG1TdXJmYWNlLT5VbmxvY2tSZWN0KCk7CisgICAgICAgIEFTU0VSVChTVUNDRUVE
RUQocmVzdWx0KSk7CisgICAgfQorfQorCitib29sIEltYWdlOTo6aXNSZW5kZXJhYmxlRm9ybWF0
KCkgY29uc3QKK3sgICAgCisgICAgcmV0dXJuIFRleHR1cmVTdG9yYWdlOTo6SXNUZXh0dXJlRm9y
bWF0UmVuZGVyYWJsZShnZXREM0RGb3JtYXQoKSk7Cit9CisKK0QzREZPUk1BVCBJbWFnZTk6Omdl
dEQzREZvcm1hdCgpIGNvbnN0Cit7CisgICAgLy8gdGhpcyBzaG91bGQgb25seSBoYXBwZW4gaWYg
dGhlIGltYWdlIGhhc24ndCBiZWVuIHJlZGVmaW5lZCBmaXJzdAorICAgIC8vIHdoaWNoIHdvdWxk
IGJlIGEgYnVnIGJ5IHRoZSBjYWxsZXIKKyAgICBBU1NFUlQobUQzREZvcm1hdCAhPSBEM0RGTVRf
VU5LTk9XTik7CisKKyAgICByZXR1cm4gbUQzREZvcm1hdDsKK30KKworSURpcmVjdDNEU3VyZmFj
ZTkgKkltYWdlOTo6Z2V0U3VyZmFjZSgpCit7CisgICAgY3JlYXRlU3VyZmFjZSgpOworCisgICAg
cmV0dXJuIG1TdXJmYWNlOworfQorCit2b2lkIEltYWdlOTo6c2V0TWFuYWdlZFN1cmZhY2UoVGV4
dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc3RvcmFnZSwgaW50IGxldmVsKQoreworICAgIFRleHR1
cmVTdG9yYWdlOV8yRCAqc3RvcmFnZTkgPSBUZXh0dXJlU3RvcmFnZTlfMkQ6Om1ha2VUZXh0dXJl
U3RvcmFnZTlfMkQoc3RvcmFnZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgIHNldE1hbmFn
ZWRTdXJmYWNlKHN0b3JhZ2U5LT5nZXRTdXJmYWNlTGV2ZWwobGV2ZWwsIGZhbHNlKSk7Cit9CisK
K3ZvaWQgSW1hZ2U5OjpzZXRNYW5hZ2VkU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1
YmUgKnN0b3JhZ2UsIGludCBmYWNlLCBpbnQgbGV2ZWwpCit7CisgICAgVGV4dHVyZVN0b3JhZ2U5
X0N1YmUgKnN0b3JhZ2U5ID0gVGV4dHVyZVN0b3JhZ2U5X0N1YmU6Om1ha2VUZXh0dXJlU3RvcmFn
ZTlfQ3ViZShzdG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7CisgICAgc2V0TWFuYWdlZFN1
cmZhY2Uoc3RvcmFnZTktPmdldEN1YmVNYXBTdXJmYWNlKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWCArIGZhY2UsIGxldmVsLCBmYWxzZSkpOworfQorCit2b2lkIEltYWdlOTo6c2V0TWFu
YWdlZFN1cmZhY2UoSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UpCit7CisgICAgRDNEU1VSRkFD
RV9ERVNDIGRlc2M7CisgICAgc3VyZmFjZS0+R2V0RGVzYygmZGVzYyk7CisgICAgQVNTRVJUKGRl
c2MuUG9vbCA9PSBEM0RQT09MX01BTkFHRUQpOworCisgICAgaWYgKChHTHNpemVpKWRlc2MuV2lk
dGggPT0gbVdpZHRoICYmIChHTHNpemVpKWRlc2MuSGVpZ2h0ID09IG1IZWlnaHQpCisgICAgewor
ICAgICAgICBpZiAobVN1cmZhY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvcHlMb2NrYWJs
ZVN1cmZhY2VzKHN1cmZhY2UsIG1TdXJmYWNlKTsKKyAgICAgICAgICAgIG1TdXJmYWNlLT5SZWxl
YXNlKCk7CisgICAgICAgIH0KKworICAgICAgICBtU3VyZmFjZSA9IHN1cmZhY2U7CisgICAgICAg
IG1EM0RQb29sID0gZGVzYy5Qb29sOworICAgIH0KK30KKworYm9vbCBJbWFnZTk6OnVwZGF0ZVN1
cmZhY2UoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc3RvcmFnZSwgaW50IGxldmVsLCBHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkK
K3sKKyAgICBBU1NFUlQoZ2V0U3VyZmFjZSgpICE9IE5VTEwpOworICAgIFRleHR1cmVTdG9yYWdl
OV8yRCAqc3RvcmFnZTkgPSBUZXh0dXJlU3RvcmFnZTlfMkQ6Om1ha2VUZXh0dXJlU3RvcmFnZTlf
MkQoc3RvcmFnZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgIHJldHVybiB1cGRhdGVTdXJm
YWNlKHN0b3JhZ2U5LT5nZXRTdXJmYWNlTGV2ZWwobGV2ZWwsIHRydWUpLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0KTsKK30KKworYm9vbCBJbWFnZTk6OnVwZGF0ZVN1cmZhY2UoVGV4
dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBpbnQgZmFjZSwgaW50IGxldmVsLCBH
TGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCkKK3sKKyAgICBBU1NFUlQoZ2V0U3VyZmFjZSgpICE9IE5VTEwpOworICAgIFRleHR1cmVTdG9y
YWdlOV9DdWJlICpzdG9yYWdlOSA9IFRleHR1cmVTdG9yYWdlOV9DdWJlOjptYWtlVGV4dHVyZVN0
b3JhZ2U5X0N1YmUoc3RvcmFnZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgIHJldHVybiB1
cGRhdGVTdXJmYWNlKHN0b3JhZ2U5LT5nZXRDdWJlTWFwU3VyZmFjZShHTF9URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1ggKyBmYWNlLCBsZXZlbCwgdHJ1ZSksIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQpOworfQorCitib29sIEltYWdlOTo6dXBkYXRlU3VyZmFjZShJRGlyZWN0M0RT
dXJmYWNlOSAqZGVzdFN1cmZhY2UsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIGlmICghZGVzdFN1cmZhY2UpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2VTdXJmYWNl
ID0gZ2V0U3VyZmFjZSgpOworCisgICAgaWYgKHNvdXJjZVN1cmZhY2UgJiYgc291cmNlU3VyZmFj
ZSAhPSBkZXN0U3VyZmFjZSkKKyAgICB7CisgICAgICAgIFJFQ1QgcmVjdDsKKyAgICAgICAgcmVj
dC5sZWZ0ID0geG9mZnNldDsKKyAgICAgICAgcmVjdC50b3AgPSB5b2Zmc2V0OworICAgICAgICBy
ZWN0LnJpZ2h0ID0geG9mZnNldCArIHdpZHRoOworICAgICAgICByZWN0LmJvdHRvbSA9IHlvZmZz
ZXQgKyBoZWlnaHQ7CisKKyAgICAgICAgUE9JTlQgcG9pbnQgPSB7cmVjdC5sZWZ0LCByZWN0LnRv
cH07CisKKyAgICAgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXRE
ZXZpY2UoKTsKKworICAgICAgICBpZiAobUQzRFBvb2wgPT0gRDNEUE9PTF9NQU5BR0VEKQorICAg
ICAgICB7CisgICAgICAgICAgICBEM0RTVVJGQUNFX0RFU0MgZGVzYzsKKyAgICAgICAgICAgIHNv
dXJjZVN1cmZhY2UtPkdldERlc2MoJmRlc2MpOworCisgICAgICAgICAgICBJRGlyZWN0M0RTdXJm
YWNlOSAqc3VyZiA9IDA7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3Jl
YXRlT2Zmc2NyZWVuUGxhaW5TdXJmYWNlKGRlc2MuV2lkdGgsIGRlc2MuSGVpZ2h0LCBkZXNjLkZv
cm1hdCwgRDNEUE9PTF9TWVNURU1NRU0sICZzdXJmLCBOVUxMKTsKKworICAgICAgICAgICAgaWYg
KFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvcHlM
b2NrYWJsZVN1cmZhY2VzKHN1cmYsIHNvdXJjZVN1cmZhY2UpOworICAgICAgICAgICAgICAgIHJl
c3VsdCA9IGRldmljZS0+VXBkYXRlU3VyZmFjZShzdXJmLCAmcmVjdCwgZGVzdFN1cmZhY2UsICZw
b2ludCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAg
ICAgICAgICAgICBzdXJmLT5SZWxlYXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBVcGRhdGVTdXJmYWNlOiBzb3Vy
Y2UgbXVzdCBiZSBTWVNURU1NRU0sIGRlc3QgbXVzdCBiZSBERUZBVUxUIHBvb2xzIAorICAgICAg
ICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPlVwZGF0ZVN1cmZhY2Uoc291cmNlU3VyZmFj
ZSwgJnJlY3QsIGRlc3RTdXJmYWNlLCAmcG9pbnQpOworICAgICAgICAgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRlc3RTdXJmYWNlLT5SZWxl
YXNlKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFN0b3JlIHRoZSBwaXhlbCByZWN0YW5n
bGUgZGVzaWduYXRlZCBieSB4b2Zmc2V0LHlvZmZzZXQsd2lkdGgsaGVpZ2h0IHdpdGggcGl4ZWxz
IHN0b3JlZCBhcyBmb3JtYXQvdHlwZSBhdCBpbnB1dAorLy8gaW50byB0aGUgdGFyZ2V0IHBpeGVs
IHJlY3RhbmdsZS4KK3ZvaWQgSW1hZ2U5Ojpsb2FkRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5
b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKmlucHV0KQoreworICAgIFJF
Q1QgbG9ja1JlY3QgPQorICAgIHsKKyAgICAgICAgeG9mZnNldCwgeW9mZnNldCwKKyAgICAgICAg
eG9mZnNldCArIHdpZHRoLCB5b2Zmc2V0ICsgaGVpZ2h0CisgICAgfTsKKworICAgIEQzRExPQ0tF
RF9SRUNUIGxvY2tlZDsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IGxvY2soJmxvY2tlZCwgJmxvY2tS
ZWN0KTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisKKyAgICBHTHNpemVpIGlucHV0UGl0Y2ggPSBnbDo6Q29tcHV0ZVBpdGNoKHdpZHRo
LCBtSW50ZXJuYWxGb3JtYXQsIHVucGFja0FsaWdubWVudCk7CisKKyAgICBzd2l0Y2ggKG1JbnRl
cm5hbEZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6CisgICAgICAgIGlm
IChnbDo6c3VwcG9ydHNTU0UyKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRBbHBoYURh
dGFUb0JHUkFTU0UyKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0
Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICBsb2FkQWxwaGFEYXRhVG9CR1JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gs
IGlucHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhUOgorICAgICAgICBsb2FkTHVtaW5h
bmNlRGF0YVRvTmF0aXZlT3JCR1JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBs
b2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cywgZ2V0RDNERm9ybWF0KCkgPT0gRDNERk1UX0w4KTsK
KyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FMUEhBMzJGX0VYVDoKKyAgICAgICAgbG9h
ZEFscGhhRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBs
b2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0UzMkZfRVhUOgorICAgICAgICBsb2FkTHVtaW5hbmNlRmxvYXREYXRhVG9SR0JB
KHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5w
Qml0cyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CisgICAg
ICAgIGxvYWRBbHBoYUhhbGZGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRj
aCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VIYWxm
RmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQu
UGl0Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MVU1J
TkFOQ0U4X0FMUEhBOF9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VBbHBoYURhdGFUb05hdGl2
ZU9yQkdSQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBs
b2NrZWQucEJpdHMsIGdldEQzREZvcm1hdCgpID09IEQzREZNVF9BOEw4KTsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6CisgICAgICAgIGxvYWRM
dW1pbmFuY2VBbHBoYUZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBp
bnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoKKyAgICAgICAgbG9hZEx1bWluYW5jZUFs
cGhhSGFsZkZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwg
bG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfUkdCOF9PRVM6CisgICAgICAgIGxvYWRSR0JVQnl0ZURhdGFUb0JHUlgod2lkdGgsIGhlaWdo
dCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgICAgbG9hZFJHQjU2NURhdGFU
b0JHUkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9j
a2VkLnBCaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzoKKyAg
ICAgICAgaWYgKGdsOjpzdXBwb3J0c1NTRTIoKSkKKyAgICAgICAgeworICAgICAgICAgICAgbG9h
ZFJHQkFVQnl0ZURhdGFUb0JHUkFTU0UyKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0
LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor
ICAgICAgICB7CisgICAgICAgICAgICBsb2FkUkdCQVVCeXRlRGF0YVRvQkdSQSh3aWR0aCwgaGVp
Z2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0JBNDoKKyAgICAgICAgbG9h
ZFJHQkE0NDQ0RGF0YVRvQkdSQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9j
a2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
UkdCNV9BMToKKyAgICAgICAgbG9hZFJHQkE1NTUxRGF0YVRvQkdSQSh3aWR0aCwgaGVpZ2h0LCBp
bnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfQkdSQThfRVhUOgorICAgICAgICBsb2FkQkdSQURhdGFUb0JH
UkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2Vk
LnBCaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAvLyBmbG9hdCB0ZXh0dXJlcyBhcmUgY29u
dmVydGVkIHRvIFJHQkEsIG5vdCBCR1JBLCBhcyB0aGV5J3JlIHN0b3JlZCB0aGF0IHdheSBpbiBE
M0QKKyAgICAgIGNhc2UgR0xfUkdCMzJGX0VYVDoKKyAgICAgICAgbG9hZFJHQkZsb2F0RGF0YVRv
UkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2Nr
ZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCMTZGX0VYVDoKKyAg
ICAgICAgbG9hZFJHQkhhbGZGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRj
aCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX1JHQkEzMkZfRVhUOgorICAgICAgICBsb2FkUkdCQUZsb2F0RGF0YVRvUkdC
QSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQu
cEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6CisgICAg
ICAgIGxvYWRSR0JBSGFsZkZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNo
LCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAg
ICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IAorICAgIH0KKworICAgIHVubG9jaygpOworfQor
Cit2b2lkIEltYWdlOTo6bG9hZENvbXByZXNzZWREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICppbnB1dCkKK3sKKyAgICBBU1NFUlQoeG9mZnNldCAl
IDQgPT0gMCk7CisgICAgQVNTRVJUKHlvZmZzZXQgJSA0ID09IDApOworCisgICAgUkVDVCBsb2Nr
UmVjdCA9IHsKKyAgICAgICAgeG9mZnNldCwgeW9mZnNldCwKKyAgICAgICAgeG9mZnNldCArIHdp
ZHRoLCB5b2Zmc2V0ICsgaGVpZ2h0CisgICAgfTsKKworICAgIEQzRExPQ0tFRF9SRUNUIGxvY2tl
ZDsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IGxvY2soJmxvY2tlZCwgJmxvY2tSZWN0KTsKKyAgICBp
ZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
R0xzaXplaSBpbnB1dFNpemUgPSBnbDo6Q29tcHV0ZUNvbXByZXNzZWRTaXplKHdpZHRoLCBoZWln
aHQsIG1JbnRlcm5hbEZvcm1hdCk7CisgICAgR0xzaXplaSBpbnB1dFBpdGNoID0gZ2w6OkNvbXB1
dGVDb21wcmVzc2VkUGl0Y2god2lkdGgsIG1JbnRlcm5hbEZvcm1hdCk7CisgICAgaW50IHJvd3Mg
PSBpbnB1dFNpemUgLyBpbnB1dFBpdGNoOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsg
KytpKQorICAgIHsKKyAgICAgICAgbWVtY3B5KCh2b2lkKikoKEJZVEUqKWxvY2tlZC5wQml0cyAr
IGkgKiBsb2NrZWQuUGl0Y2gpLCAodm9pZCopKChCWVRFKilpbnB1dCArIGkgKiBpbnB1dFBpdGNo
KSwgaW5wdXRQaXRjaCk7CisgICAgfQorCisgICAgdW5sb2NrKCk7Cit9CisKKy8vIFRoaXMgaW1w
bGVtZW50cyBnbENvcHlUZXhbU3ViXUltYWdlMkQgZm9yIG5vbi1yZW5kZXJhYmxlIGludGVybmFs
IHRleHR1cmUgZm9ybWF0cyBhbmQgaW5jb21wbGV0ZSB0ZXh0dXJlcwordm9pZCBJbWFnZTk6OmNv
cHkoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKQoreworICAg
IFJlbmRlclRhcmdldDkgKnJlbmRlclRhcmdldCA9IE5VTEw7CisgICAgSURpcmVjdDNEU3VyZmFj
ZTkgKnN1cmZhY2UgPSBOVUxMOworICAgIGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVyID0g
c291cmNlLT5nZXRDb2xvcmJ1ZmZlcigwKTsKKworICAgIGlmIChjb2xvcmJ1ZmZlcikKKyAgICB7
CisgICAgICAgIHJlbmRlclRhcmdldCA9IFJlbmRlclRhcmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5
KGNvbG9yYnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKSk7CisgICAgfQorICAgIAorICAgIGlmIChy
ZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICBzdXJmYWNlID0gcmVuZGVyVGFyZ2V0LT5nZXRT
dXJmYWNlKCk7CisgICAgfQorCisgICAgaWYgKCFzdXJmYWNlKQorICAgIHsKKyAgICAgICAgRVJS
KCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIHJlbmRlciB0YXJnZXQuIik7CisgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgSURpcmVjdDNERGV2
aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIElEaXJlY3QzRFN1
cmZhY2U5ICpyZW5kZXJUYXJnZXREYXRhID0gTlVMTDsKKyAgICBEM0RTVVJGQUNFX0RFU0MgZGVz
Y3JpcHRpb247CisgICAgc3VyZmFjZS0+R2V0RGVzYygmZGVzY3JpcHRpb24pOworICAgIAorICAg
IEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVPZmZzY3JlZW5QbGFpblN1cmZhY2UoZGVz
Y3JpcHRpb24uV2lkdGgsIGRlc2NyaXB0aW9uLkhlaWdodCwgZGVzY3JpcHRpb24uRm9ybWF0LCBE
M0RQT09MX1NZU1RFTU1FTSwgJnJlbmRlclRhcmdldERhdGEsIE5VTEwpOworCisgICAgaWYgKEZB
SUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIG1hdGNo
aW5nIGRlc3RpbmF0aW9uIHN1cmZhY2UuIik7CisgICAgICAgIHN1cmZhY2UtPlJlbGVhc2UoKTsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9CisKKyAg
ICByZXN1bHQgPSBkZXZpY2UtPkdldFJlbmRlclRhcmdldERhdGEoc3VyZmFjZSwgcmVuZGVyVGFy
Z2V0RGF0YSk7CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICBFUlIo
IkdldFJlbmRlclRhcmdldERhdGEgdW5leHBlY3RlZGx5IGZhaWxlZC4iKTsKKyAgICAgICAgcmVu
ZGVyVGFyZ2V0RGF0YS0+UmVsZWFzZSgpOworICAgICAgICBzdXJmYWNlLT5SZWxlYXNlKCk7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAg
UkVDVCBzb3VyY2VSZWN0ID0ge3gsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodH07CisgICAgUkVD
VCBkZXN0UmVjdCA9IHt4b2Zmc2V0LCB5b2Zmc2V0LCB4b2Zmc2V0ICsgd2lkdGgsIHlvZmZzZXQg
KyBoZWlnaHR9OworCisgICAgRDNETE9DS0VEX1JFQ1Qgc291cmNlTG9jayA9IHswfTsKKyAgICBy
ZXN1bHQgPSByZW5kZXJUYXJnZXREYXRhLT5Mb2NrUmVjdCgmc291cmNlTG9jaywgJnNvdXJjZVJl
Y3QsIDApOworCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJG
YWlsZWQgdG8gbG9jayB0aGUgc291cmNlIHN1cmZhY2UgKHJlY3RhbmdsZSBtaWdodCBiZSBpbnZh
bGlkKS4iKTsKKyAgICAgICAgcmVuZGVyVGFyZ2V0RGF0YS0+UmVsZWFzZSgpOworICAgICAgICBz
dXJmYWNlLT5SZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgfQorCisgICAgRDNETE9DS0VEX1JFQ1QgZGVzdExvY2sgPSB7MH07CisgICAg
cmVzdWx0ID0gbG9jaygmZGVzdExvY2ssICZkZXN0UmVjdCk7CisgICAgCisgICAgaWYgKEZBSUxF
RChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gbG9jayB0aGUgZGVzdGlu
YXRpb24gc3VyZmFjZSAocmVjdGFuZ2xlIG1pZ2h0IGJlIGludmFsaWQpLiIpOworICAgICAgICBy
ZW5kZXJUYXJnZXREYXRhLT5VbmxvY2tSZWN0KCk7CisgICAgICAgIHJlbmRlclRhcmdldERhdGEt
PlJlbGVhc2UoKTsKKyAgICAgICAgc3VyZmFjZS0+UmVsZWFzZSgpOworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIGlmIChkZXN0TG9jay5w
Qml0cyAmJiBzb3VyY2VMb2NrLnBCaXRzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciAq
c291cmNlID0gKHVuc2lnbmVkIGNoYXIqKXNvdXJjZUxvY2sucEJpdHM7CisgICAgICAgIHVuc2ln
bmVkIGNoYXIgKmRlc3QgPSAodW5zaWduZWQgY2hhciopZGVzdExvY2sucEJpdHM7CisKKyAgICAg
ICAgc3dpdGNoIChkZXNjcmlwdGlvbi5Gb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNl
IEQzREZNVF9YOFI4RzhCODoKKyAgICAgICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKKyAgICAg
ICAgICAgIHN3aXRjaChnZXREM0RGb3JtYXQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6CisgICAgICAgICAgICAgIGNhc2UgRDNERk1UX0E4UjhH
OEI4OgorICAgICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweShkZXN0LCBzb3VyY2Us
IDQgKiB3aWR0aCk7CisKKyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2su
UGl0Y2g7CisgICAgICAgICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IEQzREZNVF9MODoKKyAgICAgICAgICAgICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5
KyspCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHggPSAw
OyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzdFt4XSA9IHNvdXJjZVt4ICogNCArIDJdOworICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7Cisg
ICAgICAgICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9B
OEw4OgorICAgICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7IHggPCB3
aWR0aDsgeCsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBkZXN0W3ggKiAyICsgMF0gPSBzb3VyY2VbeCAqIDQgKyAyXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RbeCAqIDIgKyAxXSA9IHNvdXJjZVt4ICogNCArIDNdOworICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0
Y2g7CisgICAgICAgICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEQzREZNVF9SNUc2QjU6CisgICAgICAgICAgICBz
d2l0Y2goZ2V0RDNERm9ybWF0KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2Ug
RDNERk1UX1g4UjhHOEI4OgorICAgICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWln
aHQ7IHkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQg
eCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCByZ2IgPSAoKHVuc2lnbmVkIHNob3J0Kilzb3Vy
Y2UpW3hdOworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciByZWQgPSAocmdi
ICYgMHhGODAwKSA+PiA4OworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBn
cmVlbiA9IChyZ2IgJiAweDA3RTApID4+IDM7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIGJsdWUgPSAocmdiICYgMHgwMDFGKSA8PCAzOworICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdFt4ICsgMF0gPSBibHVlIHwgKGJsdWUgPj4gNSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkZXN0W3ggKyAxXSA9IGdyZWVuIHwgKGdyZWVuID4+IDYpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzdFt4ICsgMl0gPSByZWQgfCAocmVkID4+IDUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzdFt4ICsgM10gPSAweEZGOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7CisgICAgICAg
ICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9MODoKKyAg
ICAgICAgICAgICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgr
KykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciByZWQgPSBzb3VyY2VbeCAqIDIgKyAxXSAmIDB4Rjg7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkZXN0W3hdID0gcmVkIHwgKHJlZCA+PiA1KTsKKyAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOworICAg
ICAgICAgICAgICAgICAgICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgY2FzZSBEM0RGTVRfQTFSNUc1QjU6CisgICAgICAgICAgICBzd2l0Y2go
Z2V0RDNERm9ybWF0KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgRDNERk1U
X1g4UjhHOEI4OgorICAgICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkr
KykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7
IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBhcmdiID0gKCh1bnNpZ25lZCBzaG9ydCopc291cmNlKVt4
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcmVkID0gKGFyZ2IgJiAw
eDdDMDApID4+IDc7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGdyZWVu
ID0gKGFyZ2IgJiAweDAzRTApID4+IDI7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIGJsdWUgPSAoYXJnYiAmIDB4MDAxRikgPDwgMzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRlc3RbeCArIDBdID0gYmx1ZSB8IChibHVlID4+IDUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdFt4ICsgMV0gPSBncmVlbiB8IChncmVlbiA+PiA1KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RbeCArIDJdID0gcmVkIHwgKHJlZCA+PiA1KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RbeCArIDNdID0gMHhGRjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOworICAgICAgICAg
ICAgICAgICAgICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6
CisgICAgICAgICAgICAgICAgZm9yKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yKGludCB4ID0gMDsgeCA8IHdpZHRo
OyB4KyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHNob3J0IGFyZ2IgPSAoKHVuc2lnbmVkIHNob3J0Kilzb3VyY2UpW3hdOworICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciByZWQgPSAoYXJnYiAmIDB4N0MwMCkgPj4g
NzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZ3JlZW4gPSAoYXJnYiAm
IDB4MDNFMCkgPj4gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYmx1
ZSA9IChhcmdiICYgMHgwMDFGKSA8PCAzOworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBhbHBoYSA9IChzaWduZWQgc2hvcnQpYXJnYiA+PiAxNTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RbeCArIDBdID0gYmx1ZSB8IChibHVlID4+IDUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzdFt4ICsgMV0gPSBncmVlbiB8IChncmVlbiA+PiA1KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3RbeCArIDJdID0gcmVkIHwgKHJlZCA+PiA1KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3RbeCArIDNdID0gYWxwaGE7CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gc291cmNlTG9jay5QaXRjaDsKKyAg
ICAgICAgICAgICAgICAgICAgZGVzdCArPSBkZXN0TG9jay5QaXRjaDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRDNERk1UX0w4
OgorICAgICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7IHggPCB3aWR0
aDsgeCsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyIHJlZCA9IHNvdXJjZVt4ICogMiArIDFdICYgMHg3QzsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRlc3RbeF0gPSAocmVkIDw8IDEpIHwgKHJlZCA+PiA0KTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2Nr
LlBpdGNoOworICAgICAgICAgICAgICAgICAgICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2Fz
ZSBEM0RGTVRfQThMODoKKyAgICAgICAgICAgICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0
OyB5KyspCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHgg
PSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciByZWQgPSBzb3VyY2VbeCAqIDIgKyAxXSAmIDB4N0M7
CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3ggKiAyICsgMF0gPSAocmVkIDw8IDEpIHwg
KHJlZCA+PiA0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbeCAqIDIgKyAxXSA9IChz
aWduZWQgY2hhcilzb3VyY2VbeCAqIDIgKyAxXSA+PiA3OworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7CisgICAg
ICAgICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHVubG9jaygpOworICAgIHJlbmRlclRhcmdldERhdGEtPlVubG9j
a1JlY3QoKTsKKworICAgIHJlbmRlclRhcmdldERhdGEtPlJlbGVhc2UoKTsKKyAgICBzdXJmYWNl
LT5SZWxlYXNlKCk7CisKKyAgICBtRGlydHkgPSB0cnVlOworfQorCit9ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9JbWFnZTkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlOS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTkuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3OSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW1hZ2U5Lmg6
IERlZmluZXMgdGhlIHJ4OjpJbWFnZTkgY2xhc3MsIHdoaWNoIGFjdHMgYXMgdGhlIGludGVyZmFj
ZSB0bworLy8gdGhlIGFjdHVhbCB1bmRlcmx5aW5nIHN1cmZhY2VzIG9mIGEgVGV4dHVyZS4KKwor
I2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfSU1BR0U5X0hfCisjZGVmaW5lIExJQkdMRVNWMl9S
RU5ERVJFUl9JTUFHRTlfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5o
IgorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIEZy
YW1lYnVmZmVyOworfQorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOworY2xhc3Mg
UmVuZGVyZXI5OworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDsKK2NsYXNzIFRleHR1
cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTsKKworY2xhc3MgSW1hZ2U5IDogcHVibGljIEltYWdlCit7
CisgIHB1YmxpYzoKKyAgICBJbWFnZTkoKTsKKyAgICB+SW1hZ2U5KCk7CisKKyAgICBzdGF0aWMg
SW1hZ2U5ICptYWtlSW1hZ2U5KEltYWdlICppbWcpOworCisgICAgc3RhdGljIHZvaWQgZ2VuZXJh
dGVNaXBtYXAoSW1hZ2U5ICpkZXN0LCBJbWFnZTkgKnNvdXJjZSk7CisgICAgc3RhdGljIHZvaWQg
Z2VuZXJhdGVNaXAoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3RTdXJmYWNlLCBJRGlyZWN0M0RTdXJm
YWNlOSAqc291cmNlU3VyZmFjZSk7CisgICAgc3RhdGljIHZvaWQgY29weUxvY2thYmxlU3VyZmFj
ZXMoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QsIElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UpOwor
CisgICAgdmlydHVhbCBib29sIHJlZGVmaW5lKFJlbmRlcmVyICpyZW5kZXJlciwgR0xpbnQgaW50
ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBib29sIGZvcmNlUmVs
ZWFzZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJhYmxlRm9ybWF0KCkgY29uc3Q7Cisg
ICAgRDNERk9STUFUIGdldEQzREZvcm1hdCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlz
RGlydHkoKSBjb25zdCB7cmV0dXJuIG1TdXJmYWNlICYmIG1EaXJ0eTt9CisgICAgSURpcmVjdDNE
U3VyZmFjZTkgKmdldFN1cmZhY2UoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRNYW5hZ2VkU3Vy
ZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpzdG9yYWdlLCBpbnQgbGV2ZWwpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRNYW5hZ2VkU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1
YmUgKnN0b3JhZ2UsIGludCBmYWNlLCBpbnQgbGV2ZWwpOworICAgIHZpcnR1YWwgYm9vbCB1cGRh
dGVTdXJmYWNlKFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIGludCBsZXZlbCwg
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQpOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVTdXJmYWNlKFRleHR1cmVTdG9yYWdlSW50ZXJm
YWNlQ3ViZSAqc3RvcmFnZSwgaW50IGZhY2UsIGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworCisgICAgdmlydHVh
bCB2b2lkIGxvYWREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgR0xpbnQgdW5wYWNrQWxpZ25t
ZW50LCBjb25zdCB2b2lkICppbnB1dCk7CisgICAgdmlydHVhbCB2b2lkIGxvYWRDb21wcmVzc2Vk
RGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KmlucHV0KTsKKworICAgIHZpcnR1YWwgdm9pZCBjb3B5KEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBn
bDo6RnJhbWVidWZmZXIgKnNvdXJjZSk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZ
X0FORF9BU1NJR04oSW1hZ2U5KTsKKworICAgIHZvaWQgY3JlYXRlU3VyZmFjZSgpOworICAgIHZv
aWQgc2V0TWFuYWdlZFN1cmZhY2UoSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UpOworICAgIGJv
b2wgdXBkYXRlU3VyZmFjZShJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCwgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworCisgICAgSFJF
U1VMVCBsb2NrKEQzRExPQ0tFRF9SRUNUICpsb2NrZWRSZWN0LCBjb25zdCBSRUNUICpyZWN0KTsK
KyAgICB2b2lkIHVubG9jaygpOworICAgIAorICAgIFJlbmRlcmVyOSAqbVJlbmRlcmVyOworCisg
ICAgRDNEUE9PTCBtRDNEUG9vbDsgICAvLyBjYW4gb25seSBiZSBEM0RQT09MX1NZU1RFTU1FTSBv
ciBEM0RQT09MX01BTkFHRUQgc2luY2UgaXQgbmVlZHMgdG8gYmUgbG9ja2FibGUuCisgICAgRDNE
Rk9STUFUIG1EM0RGb3JtYXQ7CisKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqbVN1cmZhY2U7Cit9
OworfQorCisjZW5kaWYgICAvLyBMSUJHTEVTVjJfUkVOREVSRVJfSU1BR0U5X0hfCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvSW1hZ2UxMS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ1NyBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
SW1hZ2UxMS5oOiBJbXBsZW1lbnRzIHRoZSByeDo6SW1hZ2UxMSBjbGFzcywgd2hpY2ggYWN0cyBh
cyB0aGUgaW50ZXJmYWNlIHRvCisvLyB0aGUgYWN0dWFsIHVuZGVybHlpbmcgcmVzb3VyY2VzIG9m
IGEgVGV4dHVyZQorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UxMS5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0Zy
YW1lYnVmZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgorCisjaW5j
bHVkZSAibGliR0xFU3YyL21haW4uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvZ2VuZXJhdGVtaXAuaCIKKworbmFtZXNwYWNlIHJ4Cit7
CisKK0ltYWdlMTE6OkltYWdlMTEoKQoreworICAgIG1TdGFnaW5nVGV4dHVyZSA9IE5VTEw7Cisg
ICAgbVJlbmRlcmVyID0gTlVMTDsKKyAgICBtRFhHSUZvcm1hdCA9IERYR0lfRk9STUFUX1VOS05P
V047Cit9CisKK0ltYWdlMTE6On5JbWFnZTExKCkKK3sKKyAgICBpZiAobVN0YWdpbmdUZXh0dXJl
KQorICAgIHsKKyAgICAgICAgbVN0YWdpbmdUZXh0dXJlLT5SZWxlYXNlKCk7CisgICAgfQorfQor
CitJbWFnZTExICpJbWFnZTExOjptYWtlSW1hZ2UxMShJbWFnZSAqaW1nKQoreworICAgIEFTU0VS
VChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpJbWFnZTExKiwgaW1nKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHJ4OjpJbWFnZTExKj4oaW1nKTsKK30KKwordm9pZCBJbWFnZTExOjpnZW5lcmF0ZU1p
cG1hcChJbWFnZTExICpkZXN0LCBJbWFnZTExICpzcmMpCit7CisgICAgQVNTRVJUKHNyYy0+Z2V0
RFhHSUZvcm1hdCgpID09IGRlc3QtPmdldERYR0lGb3JtYXQoKSk7CisgICAgQVNTRVJUKHNyYy0+
Z2V0V2lkdGgoKSA9PSAxIHx8IHNyYy0+Z2V0V2lkdGgoKSAvIDIgPT0gZGVzdC0+Z2V0V2lkdGgo
KSk7CisgICAgQVNTRVJUKHNyYy0+Z2V0SGVpZ2h0KCkgPT0gMSB8fCBzcmMtPmdldEhlaWdodCgp
IC8gMiA9PSBkZXN0LT5nZXRIZWlnaHQoKSk7CisKKyAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VS
Q0UgZGVzdE1hcHBlZCwgc3JjTWFwcGVkOworICAgIGRlc3QtPm1hcCgmZGVzdE1hcHBlZCk7Cisg
ICAgc3JjLT5tYXAoJnNyY01hcHBlZCk7CisKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzb3Vy
Y2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oc3JjTWFwcGVk
LnBEYXRhKTsKKyAgICB1bnNpZ25lZCBjaGFyICpkZXN0RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQgY2hhcio+KGRlc3RNYXBwZWQucERhdGEpOworCisgICAgaWYgKHNvdXJjZURhdGEg
JiYgZGVzdERhdGEpCisgICAgeworICAgICAgICBzd2l0Y2ggKHNyYy0+Z2V0RFhHSUZvcm1hdCgp
KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToK
KyAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOgorICAgICAgICAgICAg
R2VuZXJhdGVNaXA8UjhHOEI4QTg+KHNyYy0+Z2V0V2lkdGgoKSwgc3JjLT5nZXRIZWlnaHQoKSwg
c291cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1BpdGNoLCBkZXN0RGF0YSwgZGVzdE1hcHBlZC5Sb3dQ
aXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX0E4
X1VOT1JNOgorICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTg+KHNyYy0+Z2V0V2lkdGgoKSwgc3Jj
LT5nZXRIZWlnaHQoKSwgc291cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1BpdGNoLCBkZXN0RGF0YSwg
ZGVzdE1hcHBlZC5Sb3dQaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1I4X1VOT1JNOgorICAgICAgICAgICAgR2VuZXJhdGVNaXA8Ujg+KHNyYy0+
Z2V0V2lkdGgoKSwgc3JjLT5nZXRIZWlnaHQoKSwgc291cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1Bp
dGNoLCBkZXN0RGF0YSwgZGVzdE1hcHBlZC5Sb3dQaXRjaCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAg
ICAgIEdlbmVyYXRlTWlwPEEzMkIzMkczMlIzMkY+KHNyYy0+Z2V0V2lkdGgoKSwgc3JjLT5nZXRI
ZWlnaHQoKSwgc291cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1BpdGNoLCBkZXN0RGF0YSwgZGVzdE1h
cHBlZC5Sb3dQaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IzMkczMkIzMl9GTE9BVDoKKyAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMkIz
MkY+KHNyYy0+Z2V0V2lkdGgoKSwgc3JjLT5nZXRIZWlnaHQoKSwgc291cmNlRGF0YSwgc3JjTWFw
cGVkLlJvd1BpdGNoLCBkZXN0RGF0YSwgZGVzdE1hcHBlZC5Sb3dQaXRjaCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoK
KyAgICAgICAgICAgIEdlbmVyYXRlTWlwPEExNkIxNkcxNlIxNkY+KHNyYy0+Z2V0V2lkdGgoKSwg
c3JjLT5nZXRIZWlnaHQoKSwgc291cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1BpdGNoLCBkZXN0RGF0
YSwgZGVzdE1hcHBlZC5Sb3dQaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1I4RzhfVU5PUk06CisgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4
PihzcmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCksIHNvdXJjZURhdGEsIHNyY01hcHBl
ZC5Sb3dQaXRjaCwgZGVzdERhdGEsIGRlc3RNYXBwZWQuUm93UGl0Y2gpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6CisgICAgICAgICAg
ICBHZW5lcmF0ZU1pcDxSMTZGPihzcmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCksIHNv
dXJjZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRjaCwgZGVzdERhdGEsIGRlc3RNYXBwZWQuUm93UGl0
Y2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZH
MTZfRkxPQVQ6CisgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZGPihzcmMtPmdldFdpZHRo
KCksIHNyYy0+Z2V0SGVpZ2h0KCksIHNvdXJjZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRjaCwgZGVz
dERhdGEsIGRlc3RNYXBwZWQuUm93UGl0Y2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQ6CisgICAgICAgICAgICBHZW5lcmF0ZU1pcDxS
MzJGPihzcmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCksIHNvdXJjZURhdGEsIHNyY01h
cHBlZC5Sb3dQaXRjaCwgZGVzdERhdGEsIGRlc3RNYXBwZWQuUm93UGl0Y2gpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQ6CisgICAg
ICAgICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJGPihzcmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVp
Z2h0KCksIHNvdXJjZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRjaCwgZGVzdERhdGEsIGRlc3RNYXBw
ZWQuUm93UGl0Y2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGRlc3QtPnVubWFwKCk7CisgICAgICAgIHNyYy0+dW5tYXAoKTsKKyAgICB9CisK
KyAgICBkZXN0LT5tYXJrRGlydHkoKTsKK30KKworYm9vbCBJbWFnZTExOjppc0RpcnR5KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gKG1TdGFnaW5nVGV4dHVyZSAmJiBtRGlydHkpOworfQorCitib29s
IEltYWdlMTE6OnVwZGF0ZVN1cmZhY2UoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc3RvcmFn
ZSwgaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBUZXh0dXJlU3RvcmFnZTExXzJEICpzdG9yYWdlMTEg
PSBUZXh0dXJlU3RvcmFnZTExXzJEOjptYWtlVGV4dHVyZVN0b3JhZ2UxMV8yRChzdG9yYWdlLT5n
ZXRTdG9yYWdlSW5zdGFuY2UoKSk7CisgICAgcmV0dXJuIHN0b3JhZ2UxMS0+dXBkYXRlU3VicmVz
b3VyY2VMZXZlbChnZXRTdGFnaW5nVGV4dHVyZSgpLCBnZXRTdGFnaW5nU3VicmVzb3VyY2UoKSwg
bGV2ZWwsIDAsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpOworfQorCitib29sIElt
YWdlMTE6OnVwZGF0ZVN1cmZhY2UoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdl
LCBpbnQgZmFjZSwgaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBUZXh0dXJlU3RvcmFnZTExX0N1YmUg
KnN0b3JhZ2UxMSA9IFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6bWFrZVRleHR1cmVTdG9yYWdlMTFf
Q3ViZShzdG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7CisgICAgcmV0dXJuIHN0b3JhZ2Ux
MS0+dXBkYXRlU3VicmVzb3VyY2VMZXZlbChnZXRTdGFnaW5nVGV4dHVyZSgpLCBnZXRTdGFnaW5n
U3VicmVzb3VyY2UoKSwgbGV2ZWwsIGZhY2UsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQpOworfQorCitib29sIEltYWdlMTE6OnJlZGVmaW5lKFJlbmRlcmVyICpyZW5kZXJlciwgR0xp
bnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBib29sIGZv
cmNlUmVsZWFzZSkKK3sKKyAgICBpZiAobVdpZHRoICE9IHdpZHRoIHx8CisgICAgICAgIG1IZWln
aHQgIT0gaGVpZ2h0IHx8CisgICAgICAgIG1JbnRlcm5hbEZvcm1hdCAhPSBpbnRlcm5hbGZvcm1h
dCB8fAorICAgICAgICBmb3JjZVJlbGVhc2UpCisgICAgeworICAgICAgICBtUmVuZGVyZXIgPSBS
ZW5kZXJlcjExOjptYWtlUmVuZGVyZXIxMShyZW5kZXJlcik7CisKKyAgICAgICAgbVdpZHRoID0g
d2lkdGg7CisgICAgICAgIG1IZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIG1JbnRlcm5hbEZvcm1h
dCA9IGludGVybmFsZm9ybWF0OworICAgICAgICAvLyBjb21wdXRlIHRoZSBkM2QgZm9ybWF0IHRo
YXQgd2lsbCBiZSB1c2VkCisgICAgICAgIG1EWEdJRm9ybWF0ID0gZ2xfZDNkMTE6OkNvbnZlcnRU
ZXh0dXJlRm9ybWF0KGludGVybmFsZm9ybWF0KTsKKyAgICAgICAgbUFjdHVhbEZvcm1hdCA9IGQz
ZDExX2dsOjpDb252ZXJ0VGV4dHVyZUludGVybmFsRm9ybWF0KG1EWEdJRm9ybWF0KTsKKworICAg
ICAgICBpZiAobVN0YWdpbmdUZXh0dXJlKQorICAgICAgICB7CisgICAgICAgICAgICBtU3RhZ2lu
Z1RleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1TdGFnaW5nVGV4dHVyZSA9IE5VTEw7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJbWFnZTExOjppc1JlbmRlcmFibGVGb3JtYXQoKSBj
b25zdAoreworICAgIHJldHVybiBUZXh0dXJlU3RvcmFnZTExOjpJc1RleHR1cmVGb3JtYXRSZW5k
ZXJhYmxlKG1EWEdJRm9ybWF0KTsKK30KKworRFhHSV9GT1JNQVQgSW1hZ2UxMTo6Z2V0RFhHSUZv
cm1hdCgpIGNvbnN0Cit7CisgICAgLy8gdGhpcyBzaG91bGQgb25seSBoYXBwZW4gaWYgdGhlIGlt
YWdlIGhhc24ndCBiZWVuIHJlZGVmaW5lZCBmaXJzdAorICAgIC8vIHdoaWNoIHdvdWxkIGJlIGEg
YnVnIGJ5IHRoZSBjYWxsZXIKKyAgICBBU1NFUlQobURYR0lGb3JtYXQgIT0gRFhHSV9GT1JNQVRf
VU5LTk9XTik7CisKKyAgICByZXR1cm4gbURYR0lGb3JtYXQ7Cit9CisKKy8vIFN0b3JlIHRoZSBw
aXhlbCByZWN0YW5nbGUgZGVzaWduYXRlZCBieSB4b2Zmc2V0LHlvZmZzZXQsd2lkdGgsaGVpZ2h0
IHdpdGggcGl4ZWxzIHN0b3JlZCBhcyBmb3JtYXQvdHlwZSBhdCBpbnB1dAorLy8gaW50byB0aGUg
dGFyZ2V0IHBpeGVsIHJlY3RhbmdsZS4KK3ZvaWQgSW1hZ2UxMTo6bG9hZERhdGEoR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqaW5w
dXQpCit7CisgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZEltYWdlOworICAgIEhS
RVNVTFQgcmVzdWx0ID0gbWFwKCZtYXBwZWRJbWFnZSk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQorICAgIHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgbWFwIGltYWdlIGZvciBsb2FkaW5nLiIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIEdMc2l6ZWkgaW5wdXRQaXRjaCA9
IGdsOjpDb21wdXRlUGl0Y2god2lkdGgsIG1JbnRlcm5hbEZvcm1hdCwgdW5wYWNrQWxpZ25tZW50
KTsKKyAgICBzaXplX3QgcGl4ZWxTaXplID0gZDNkMTE6OkNvbXB1dGVQaXhlbFNpemVCaXRzKG1E
WEdJRm9ybWF0KSAvIDg7CisgICAgdm9pZCogb2Zmc2V0TWFwcGVkRGF0YSA9ICh2b2lkKikoKEJZ
VEUgKiltYXBwZWRJbWFnZS5wRGF0YSArICh5b2Zmc2V0ICogbWFwcGVkSW1hZ2UuUm93UGl0Y2gg
KyB4b2Zmc2V0ICogcGl4ZWxTaXplKSk7CisKKyAgICBzd2l0Y2ggKG1JbnRlcm5hbEZvcm1hdCkK
KyAgICB7CisgICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6CisgICAgICAgIGxvYWRBbHBoYURhdGFU
b05hdGl2ZSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93
UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
TFVNSU5BTkNFOF9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VEYXRhVG9OYXRpdmVPckJHUkEo
d2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBv
ZmZzZXRNYXBwZWREYXRhLCBmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9B
TFBIQTMyRl9FWFQ6CisgICAgICAgIGxvYWRBbHBoYUZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVp
Z2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBl
ZERhdGEpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMzJGX0VYVDoK
KyAgICAgICAgbG9hZEx1bWluYW5jZUZsb2F0RGF0YVRvUkdCKHdpZHRoLCBoZWlnaHQsIGlucHV0
UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CisgICAgICAgIGxvYWRB
bHBoYUhhbGZGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQs
IG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VI
YWxmRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBtYXBw
ZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VB
bHBoYURhdGFUb05hdGl2ZU9yQkdSQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwg
bWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEsIGZhbHNlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6CisgICAgICAgIGxv
YWRMdW1pbmFuY2VBbHBoYUZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNo
LCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOworICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoKKyAgICAgICAg
bG9hZEx1bWluYW5jZUFscGhhSGFsZkZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1
dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOwor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICAgIGxvYWRSR0JV
Qnl0ZURhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZElt
YWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1JHQjU2NToKKyAgICAgICAgbG9hZFJHQjU2NURhdGFUb1JHQkEod2lkdGgsIGhlaWdo
dCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWRE
YXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzoKKyAgICAgICAg
bG9hZFJHQkFVQnl0ZURhdGFUb05hdGl2ZSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1
dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOworICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICAgIGxvYWRSR0JBNDQ0NERhdGFUb1JHQkEo
d2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBv
ZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjVfQTE6
CisgICAgICAgIGxvYWRSR0JBNTU1MURhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRj
aCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgICAgbG9hZEJHUkFEYXRh
VG9CR1JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQ
aXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9S
R0IzMkZfRVhUOgorICAgICAgICBsb2FkUkdCRmxvYXREYXRhVG9OYXRpdmUod2lkdGgsIGhlaWdo
dCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWRE
YXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6CisgICAgICAg
IGxvYWRSR0JIYWxmRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlu
cHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoKKyAgICAgICAgbG9hZFJHQkFGbG9hdERh
dGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJv
d1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X1JHQkExNkZfRVhUOgorICAgICAgICBsb2FkUkdCQUhhbGZGbG9hdERhdGFUb1JHQkEod2lkdGgs
IGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRN
YXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OyAKKyAgICB9CisKKyAgICB1bm1hcCgpOworfQorCit2b2lkIEltYWdlMTE6OmxvYWRDb21wcmVz
c2VkRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
aW5wdXQpCit7CisgICAgQVNTRVJUKHhvZmZzZXQgJSA0ID09IDApOworICAgIEFTU0VSVCh5b2Zm
c2V0ICUgNCA9PSAwKTsKKworICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRJbWFn
ZTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IG1hcCgmbWFwcGVkSW1hZ2UpOworICAgIGlmIChGQUlM
RUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IG1hcCBpbWFnZSBmb3Ig
bG9hZGluZy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFNpemUgY29tcHV0
YXRpb24gYXNzdW1lcyBhIDR4NCBibG9jayBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0CisgICAg
c2l6ZV90IGJsb2NrU2l6ZSA9IGQzZDExOjpDb21wdXRlQmxvY2tTaXplQml0cyhtRFhHSUZvcm1h
dCkgLyA4OworICAgIHZvaWQqIG9mZnNldE1hcHBlZERhdGEgPSAodm9pZCopKChCWVRFICopbWFw
cGVkSW1hZ2UucERhdGEgKyAoKHlvZmZzZXQgLyA0KSAqIG1hcHBlZEltYWdlLlJvd1BpdGNoICsg
KHhvZmZzZXQgLyA0KSAqIGJsb2NrU2l6ZSkpOworCisgICAgR0xzaXplaSBpbnB1dFNpemUgPSBn
bDo6Q29tcHV0ZUNvbXByZXNzZWRTaXplKHdpZHRoLCBoZWlnaHQsIG1JbnRlcm5hbEZvcm1hdCk7
CisgICAgR0xzaXplaSBpbnB1dFBpdGNoID0gZ2w6OkNvbXB1dGVDb21wcmVzc2VkUGl0Y2god2lk
dGgsIG1JbnRlcm5hbEZvcm1hdCk7CisgICAgaW50IHJvd3MgPSBpbnB1dFNpemUgLyBpbnB1dFBp
dGNoOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgKytpKQorICAgIHsKKyAgICAgICAg
bWVtY3B5KCh2b2lkKikoKEJZVEUqKW9mZnNldE1hcHBlZERhdGEgKyBpICogbWFwcGVkSW1hZ2Uu
Um93UGl0Y2gpLCAodm9pZCopKChCWVRFKilpbnB1dCArIGkgKiBpbnB1dFBpdGNoKSwgaW5wdXRQ
aXRjaCk7CisgICAgfQorCisgICAgdW5tYXAoKTsKK30KKwordm9pZCBJbWFnZTExOjpjb3B5KEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkKK3sKKyAgICBnbDo6
UmVuZGVyYnVmZmVyICpjb2xvcmJ1ZmZlciA9IHNvdXJjZS0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7
CisKKyAgICBpZiAoY29sb3JidWZmZXIgJiYgY29sb3JidWZmZXItPmdldEFjdHVhbEZvcm1hdCgp
ID09IChHTHVpbnQpbUFjdHVhbEZvcm1hdCkKKyAgICB7CisgICAgICAgIC8vIE5vIGNvbnZlcnNp
b24gbmVlZGVkLS0gdXNlIGNvcHliYWNrIGZhc3RwYXRoCisgICAgICAgIElEM0QxMVRleHR1cmUy
RCAqY29sb3JCdWZmZXJUZXh0dXJlID0gTlVMTDsKKyAgICAgICAgdW5zaWduZWQgaW50IHN1YnJl
c291cmNlSW5kZXggPSAwOworCisgICAgICAgIGlmIChtUmVuZGVyZXItPmdldFJlbmRlclRhcmdl
dFJlc291cmNlKGNvbG9yYnVmZmVyLCAmc3VicmVzb3VyY2VJbmRleCwgJmNvbG9yQnVmZmVyVGV4
dHVyZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleHR1
cmVEZXNjOworICAgICAgICAgICAgY29sb3JCdWZmZXJUZXh0dXJlLT5HZXREZXNjKCZ0ZXh0dXJl
RGVzYyk7CisKKyAgICAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5n
ZXREZXZpY2UoKTsKKyAgICAgICAgICAgIElEM0QxMURldmljZUNvbnRleHQgKmRldmljZUNvbnRl
eHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKKworICAgICAgICAgICAgSUQzRDEx
VGV4dHVyZTJEKiBzcmNUZXggPSBOVUxMOworICAgICAgICAgICAgaWYgKHRleHR1cmVEZXNjLlNh
bXBsZURlc2MuQ291bnQgPiAxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEQzRDEx
X1RFWFRVUkUyRF9ERVNDIHJlc29sdmVEZXNjOworICAgICAgICAgICAgICAgIHJlc29sdmVEZXNj
LldpZHRoID0gdGV4dHVyZURlc2MuV2lkdGg7CisgICAgICAgICAgICAgICAgcmVzb2x2ZURlc2Mu
SGVpZ2h0ID0gdGV4dHVyZURlc2MuSGVpZ2h0OworICAgICAgICAgICAgICAgIHJlc29sdmVEZXNj
Lk1pcExldmVscyA9IDE7CisgICAgICAgICAgICAgICAgcmVzb2x2ZURlc2MuQXJyYXlTaXplID0g
MTsKKyAgICAgICAgICAgICAgICByZXNvbHZlRGVzYy5Gb3JtYXQgPSB0ZXh0dXJlRGVzYy5Gb3Jt
YXQ7CisgICAgICAgICAgICAgICAgcmVzb2x2ZURlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZURlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKKyAgICAg
ICAgICAgICAgICByZXNvbHZlRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAg
ICAgICAgICAgICAgcmVzb2x2ZURlc2MuQmluZEZsYWdzID0gMDsKKyAgICAgICAgICAgICAgICBy
ZXNvbHZlRGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7CisgICAgICAgICAgICAgICAgcmVzb2x2ZURl
c2MuTWlzY0ZsYWdzID0gMDsKKworICAgICAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2
aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnJlc29sdmVEZXNjLCBOVUxMLCAmc3JjVGV4KTsKKyAgICAg
ICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBjcmVhdGUgcmVzb2x2ZSB0ZXh0dXJlIGZvciBJ
bWFnZTExOjpjb3B5LCBIUkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkZXZpY2VD
b250ZXh0LT5SZXNvbHZlU3VicmVzb3VyY2Uoc3JjVGV4LCAwLCBjb2xvckJ1ZmZlclRleHR1cmUs
IHN1YnJlc291cmNlSW5kZXgsIHRleHR1cmVEZXNjLkZvcm1hdCk7CisgICAgICAgICAgICAgICAg
c3VicmVzb3VyY2VJbmRleCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3JjVGV4ID0gY29sb3JCdWZmZXJUZXh0dXJl
OworICAgICAgICAgICAgICAgIHNyY1RleC0+QWRkUmVmKCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIEQzRDExX0JPWCBzcmNCb3g7CisgICAgICAgICAgICBzcmNCb3gubGVmdCA9IHg7
CisgICAgICAgICAgICBzcmNCb3gucmlnaHQgPSB4ICsgd2lkdGg7CisgICAgICAgICAgICBzcmNC
b3gudG9wID0geTsKKyAgICAgICAgICAgIHNyY0JveC5ib3R0b20gPSB5ICsgaGVpZ2h0OworICAg
ICAgICAgICAgc3JjQm94LmZyb250ID0gMDsKKyAgICAgICAgICAgIHNyY0JveC5iYWNrID0gMTsK
KworICAgICAgICAgICAgZGV2aWNlQ29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKG1TdGFn
aW5nVGV4dHVyZSwgMCwgeG9mZnNldCwgeW9mZnNldCwgMCwgc3JjVGV4LCBzdWJyZXNvdXJjZUlu
ZGV4LCAmc3JjQm94KTsKKworICAgICAgICAgICAgc3JjVGV4LT5SZWxlYXNlKCk7CisgICAgICAg
ICAgICBjb2xvckJ1ZmZlclRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICAvLyBUaGlzIGZvcm1hdCByZXF1aXJlcyBjb252ZXJzaW9u
LCBzbyB3ZSBtdXN0IGNvcHkgdGhlIHRleHR1cmUgdG8gc3RhZ2luZyBhbmQgbWFudWFsbHkgY29u
dmVydCB2aWEgcmVhZFBpeGVscworICAgICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFw
cGVkSW1hZ2U7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbWFwKCZtYXBwZWRJbWFnZSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgLy8gZGV0ZXJtaW5lIHRoZSBvZmZzZXQgY29vcmRpbmF0ZSBp
bnRvIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIKKyAgICAgICAgR0xzaXplaSByb3dPZmZzZXQgPSBn
bDo6Q29tcHV0ZVBpeGVsU2l6ZShtQWN0dWFsRm9ybWF0KSAqIHhvZmZzZXQ7CisgICAgICAgIHZv
aWQgKmRhdGFPZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4obWFwcGVkSW1hZ2Uu
cERhdGEpICsgbWFwcGVkSW1hZ2UuUm93UGl0Y2ggKiB5b2Zmc2V0ICsgcm93T2Zmc2V0OworCisg
ICAgICAgIG1SZW5kZXJlci0+cmVhZFBpeGVscyhzb3VyY2UsIHgsIHksIHdpZHRoLCBoZWlnaHQs
IGdsOjpFeHRyYWN0Rm9ybWF0KG1JbnRlcm5hbEZvcm1hdCksIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OkV4dHJhY3RUeXBlKG1JbnRlcm5hbEZvcm1hdCksIG1hcHBlZEltYWdl
LlJvd1BpdGNoLCBmYWxzZSwgNCwgZGF0YU9mZnNldCk7CisKKyAgICAgICAgdW5tYXAoKTsKKyAg
ICB9Cit9CisKK0lEM0QxMVRleHR1cmUyRCAqSW1hZ2UxMTo6Z2V0U3RhZ2luZ1RleHR1cmUoKQor
eworICAgIGNyZWF0ZVN0YWdpbmdUZXh0dXJlKCk7CisKKyAgICByZXR1cm4gbVN0YWdpbmdUZXh0
dXJlOworfQorCit1bnNpZ25lZCBpbnQgSW1hZ2UxMTo6Z2V0U3RhZ2luZ1N1YnJlc291cmNlKCkK
K3sKKyAgICBjcmVhdGVTdGFnaW5nVGV4dHVyZSgpOworCisgICAgcmV0dXJuIG1TdGFnaW5nU3Vi
cmVzb3VyY2U7Cit9CisKK3ZvaWQgSW1hZ2UxMTo6Y3JlYXRlU3RhZ2luZ1RleHR1cmUoKQorewor
ICAgIGlmIChtU3RhZ2luZ1RleHR1cmUpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgSUQzRDExVGV4dHVyZTJEICpuZXdUZXh0dXJlID0gTlVMTDsKKyAgICBpbnQgbG9kT2Zm
c2V0ID0gMTsKKyAgICBjb25zdCBEWEdJX0ZPUk1BVCBkeGdpRm9ybWF0ID0gZ2V0RFhHSUZvcm1h
dCgpOworICAgIEFTU0VSVCghZDNkMTE6OklzRGVwdGhTdGVuY2lsRm9ybWF0KGR4Z2lGb3JtYXQp
KTsgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlIGZvciBkZXB0aCB0ZXh0dXJlcworCisgICAg
aWYgKG1XaWR0aCAhPSAwICYmIG1IZWlnaHQgIT0gMCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkg
d2lkdGggPSBtV2lkdGg7CisgICAgICAgIEdMc2l6ZWkgaGVpZ2h0ID0gbUhlaWdodDsKKworICAg
ICAgICAvLyBhZGp1c3Qgc2l6ZSBpZiBuZWVkZWQgZm9yIGNvbXByZXNzZWQgdGV4dHVyZXMKKyAg
ICAgICAgZ2w6Ok1ha2VWYWxpZFNpemUoZmFsc2UsIGQzZDExOjpJc0NvbXByZXNzZWQoZHhnaUZv
cm1hdCksICZ3aWR0aCwgJmhlaWdodCwgJmxvZE9mZnNldCk7CisgICAgICAgIElEM0QxMURldmlj
ZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgICAgICBEM0QxMV9URVhU
VVJFMkRfREVTQyBkZXNjOworICAgICAgICBkZXNjLldpZHRoID0gd2lkdGg7CisgICAgICAgIGRl
c2MuSGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBkZXNjLk1pcExldmVscyA9IGxvZE9mZnNldCAr
IDE7CisgICAgICAgIGRlc2MuQXJyYXlTaXplID0gMTsKKyAgICAgICAgZGVzYy5Gb3JtYXQgPSBk
eGdpRm9ybWF0OworICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICBk
ZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIGRlc2MuVXNhZ2UgPSBEM0QxMV9V
U0FHRV9TVEFHSU5HOworICAgICAgICBkZXNjLkJpbmRGbGFncyA9IDA7CisgICAgICAgIGRlc2Mu
Q1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOworICAgICAgICBkZXNjLk1p
c2NGbGFncyA9IDA7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRl
eHR1cmUyRCgmZGVzYywgTlVMTCwgJm5ld1RleHR1cmUpOworCisgICAgICAgIGlmIChGQUlMRUQo
cmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9G
TUVNT1JZKTsKKyAgICAgICAgICAgIEVSUigiQ3JlYXRpbmcgaW1hZ2UgZmFpbGVkLiIpOworICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIG1TdGFnaW5nVGV4dHVyZSA9IG5ld1RleHR1cmU7CisgICAgbVN0YWdpbmdT
dWJyZXNvdXJjZSA9IEQzRDExQ2FsY1N1YnJlc291cmNlKGxvZE9mZnNldCwgMCwgbG9kT2Zmc2V0
ICsgMSk7CisgICAgbURpcnR5ID0gZmFsc2U7Cit9CisKK0hSRVNVTFQgSW1hZ2UxMTo6bWFwKEQz
RDExX01BUFBFRF9TVUJSRVNPVVJDRSAqbWFwKQoreworICAgIGNyZWF0ZVN0YWdpbmdUZXh0dXJl
KCk7CisKKyAgICBIUkVTVUxUIHJlc3VsdCA9IEVfRkFJTDsKKworICAgIGlmIChtU3RhZ2luZ1Rl
eHR1cmUpCisgICAgeworICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0
ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CisgICAgICAgIHJlc3VsdCA9IGRldmlj
ZUNvbnRleHQtPk1hcChtU3RhZ2luZ1RleHR1cmUsIG1TdGFnaW5nU3VicmVzb3VyY2UsIEQzRDEx
X01BUF9XUklURSwgMCwgbWFwKTsKKworICAgICAgICAvLyB0aGlzIGNhbiBmYWlsIGlmIHRoZSBk
ZXZpY2UgaXMgcmVtb3ZlZCAoZnJvbSBURFIpCisgICAgICAgIGlmIChkM2QxMTo6aXNEZXZpY2VM
b3N0RXJyb3IocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgbVJlbmRlcmVyLT5ub3Rp
ZnlEZXZpY2VMb3N0KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoU1VDQ0VFREVEKHJl
c3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EaXJ0eSA9IHRydWU7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEltYWdlMTE6OnVubWFwKCkK
K3sKKyAgICBpZiAobVN0YWdpbmdUZXh0dXJlKQorICAgIHsKKyAgICAgICAgSUQzRDExRGV2aWNl
Q29udGV4dCAqZGV2aWNlQ29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOwor
ICAgICAgICBkZXZpY2VDb250ZXh0LT5Vbm1hcChtU3RhZ2luZ1RleHR1cmUsIG1TdGFnaW5nU3Vi
cmVzb3VyY2UpOworICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTExLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTExLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lt
YWdlMTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IEltYWdlMTEuaDogRGVmaW5lcyB0aGUgcng6OkltYWdlMTEgY2xhc3MsIHdoaWNoIGFjdHMgYXMg
dGhlIGludGVyZmFjZSB0bworLy8gdGhlIGFjdHVhbCB1bmRlcmx5aW5nIHJlc291cmNlcyBvZiBh
IFRleHR1cmUKKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfSU1BR0UxMV9IXworI2RlZmlu
ZSBMSUJHTEVTVjJfUkVOREVSRVJfSU1BR0UxMV9IXworCisjaW5jbHVkZSAibGliR0xFU3YyL3Jl
bmRlcmVyL0ltYWdlLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNl
IGdsCit7CitjbGFzcyBGcmFtZWJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBS
ZW5kZXJlcjsKK2NsYXNzIFJlbmRlcmVyMTE7CitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVyZmFj
ZTJEOworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlOworCitjbGFzcyBJbWFnZTEx
IDogcHVibGljIEltYWdlCit7CisgIHB1YmxpYzoKKyAgICBJbWFnZTExKCk7CisgICAgdmlydHVh
bCB+SW1hZ2UxMSgpOworCisgICAgc3RhdGljIEltYWdlMTEgKm1ha2VJbWFnZTExKEltYWdlICpp
bWcpOworCisgICAgc3RhdGljIHZvaWQgZ2VuZXJhdGVNaXBtYXAoSW1hZ2UxMSAqZGVzdCwgSW1h
Z2UxMSAqc3JjKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0RpcnR5KCkgY29uc3Q7CisKKyAgICB2
aXJ0dWFsIGJvb2wgdXBkYXRlU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpzdG9y
YWdlLCBpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlU3VyZmFjZShUZXh0
dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKnN0b3JhZ2UsIGludCBmYWNlLCBpbnQgbGV2ZWwsIEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
KTsKKworICAgIHZpcnR1YWwgYm9vbCByZWRlZmluZShSZW5kZXJlciAqcmVuZGVyZXIsIEdMaW50
IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgYm9vbCBmb3Jj
ZVJlbGVhc2UpOworCisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyYWJsZUZvcm1hdCgpIGNvbnN0
OworICAgIERYR0lfRk9STUFUIGdldERYR0lGb3JtYXQoKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0
dWFsIHZvaWQgbG9hZERhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICBHTGludCB1bnBhY2tBbGln
bm1lbnQsIGNvbnN0IHZvaWQgKmlucHV0KTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZENvbXByZXNz
ZWREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqaW5wdXQpOworCisgICAgdmlydHVhbCB2b2lkIGNvcHkoR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKTsKKworICBwcm90ZWN0ZWQ6CisgICAgSFJFU1VMVCBt
YXAoRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFICptYXApOworICAgIHZvaWQgdW5tYXAoKTsKKwor
ICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihJbWFnZTExKTsKKworICAg
IElEM0QxMVRleHR1cmUyRCAqZ2V0U3RhZ2luZ1RleHR1cmUoKTsKKyAgICB1bnNpZ25lZCBpbnQg
Z2V0U3RhZ2luZ1N1YnJlc291cmNlKCk7CisgICAgdm9pZCBjcmVhdGVTdGFnaW5nVGV4dHVyZSgp
OworCisgICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVyOworCisgICAgRFhHSV9GT1JNQVQgbURYR0lG
b3JtYXQ7CisgICAgSUQzRDExVGV4dHVyZTJEICptU3RhZ2luZ1RleHR1cmU7CisgICAgdW5zaWdu
ZWQgaW50IG1TdGFnaW5nU3VicmVzb3VyY2U7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVT
VjJfUkVOREVSRVJfSU1BR0UxMV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdl
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NDggQEAKKyNpbmNsdWRlICJwcmVjb21waWxl
ZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW1hZ2UuaDogSW1wbGVtZW50cyB0aGUgcng6
OkltYWdlIGNsYXNzLCBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0aGUgCisvLyByZW5kZXJl
ci1zcGVjaWZpYyBjbGFzc2VzIHdoaWNoIHdpbGwgZGVmaW5lIHRoZSBpbnRlcmZhY2UgdG8gdGhl
IHVuZGVybHlpbmcKKy8vIHN1cmZhY2VzIG9yIHJlc291cmNlcy4KKworI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9JbWFnZS5oIgorCituYW1lc3BhY2UgcngKK3sKKworSW1hZ2U6OkltYWdl
KCkKK3sKKyAgICBtV2lkdGggPSAwOyAKKyAgICBtSGVpZ2h0ID0gMDsKKyAgICBtSW50ZXJuYWxG
b3JtYXQgPSBHTF9OT05FOworICAgIG1BY3R1YWxGb3JtYXQgPSBHTF9OT05FOworfQorCit2b2lk
IEltYWdlOjpsb2FkQWxwaGFEYXRhVG9CR1JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qg
dm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVz
dCA9IE5VTEw7CisgICAgCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAg
ICB7CisgICAgICAgIHNvdXJjZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihp
bnB1dCkgKyB5ICogaW5wdXRQaXRjaDsKKyAgICAgICAgZGVzdCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoOworICAgICAgICBmb3IgKGludCB4
ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAwXSA9IDA7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSAwOworICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDJdID0gMDsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHNvdXJj
ZVt4XTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9hZEFscGhhRGF0YVRv
TmF0aXZlKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90
IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAq
c291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gTlVMTDsKKworICAgIGZv
ciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSBz
dGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2g7
CisgICAgICAgIGRlc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkg
KiBvdXRwdXRQaXRjaDsKKyAgICAgICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lkdGgpOworICAg
IH0KK30KKwordm9pZCBJbWFnZTo6bG9hZEFscGhhRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2
b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9IE5VTEw7CisgICAgZmxv
YXQgKmRlc3QgPSBOVUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykK
KyAgICB7CisgICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihz
dGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gp
OworICAgICAgICBkZXN0ID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgZm9yIChp
bnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0WzQg
KiB4ICsgMF0gPSAwOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gMDsKKyAgICAgICAg
ICAgIGRlc3RbNCAqIHggKyAyXSA9IDA7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBz
b3VyY2VbeF07CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRBbHBoYUhh
bGZGbG9hdERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2
b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgc2hvcnQgKmRl
c3QgPSBOVUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7
CisgICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQq
PihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0
Y2gpOworICAgICAgICBkZXN0ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKyAg
ICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZXN0WzQgKiB4ICsgMF0gPSAwOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0g
MDsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IDA7CisgICAgICAgICAgICBkZXN0WzQg
KiB4ICsgM10gPSBzb3VyY2VbeF07CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6
OmxvYWRMdW1pbmFuY2VEYXRhVG9OYXRpdmVPckJHUkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
bnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpv
dXRwdXQsIGJvb2wgbmF0aXZlKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9
IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3IgKGludCB5
ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoOworICAgICAg
ICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0
UGl0Y2g7CisKKyAgICAgICAgaWYgKCFuYXRpdmUpICAgLy8gQkdSQTggZGVzdGluYXRpb24gZm9y
bWF0CisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgr
KykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3Vy
Y2VbeF07CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNlW3hdOworICAg
ICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgICAg
ICBkZXN0WzQgKiB4ICsgM10gPSAweEZGOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UgICAvLyBMOCBkZXN0aW5hdGlvbiBmb3JtYXQKKyAgICAgICAgeworICAgICAgICAg
ICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lkdGgpOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIEltYWdlOjpsb2FkTHVtaW5hbmNlRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9p
ZCAqb3V0cHV0KQoreworICAgIGNvbnN0IGZsb2F0ICpzb3VyY2UgPSBOVUxMOworICAgIGZsb2F0
ICpkZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisg
ICAgeworICAgICAgICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oc3Rh
dGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsK
KyAgICAgICAgZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7CisgICAgICAgIGZvciAoaW50
IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGVzdFs0ICog
eCArIDBdID0gc291cmNlW3hdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNl
W3hdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc291cmNlW3hdOworICAgICAgICAg
ICAgZGVzdFs0ICogeCArIDNdID0gMS4wZjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJ
bWFnZTo6bG9hZEx1bWluYW5jZUZsb2F0RGF0YVRvUkdCKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1
dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRw
dXQpCit7CisgICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9IE5VTEw7CisgICAgZmxvYXQgKmRlc3Qg
PSBOVUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7Cisg
ICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihzdGF0aWNfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAg
ICBkZXN0ID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7
IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0WzMgKiB4ICsgMF0g
PSBzb3VyY2VbeF07CisgICAgICAgICAgICBkZXN0WzMgKiB4ICsgMV0gPSBzb3VyY2VbeF07Cisg
ICAgICAgICAgICBkZXN0WzMgKiB4ICsgMl0gPSBzb3VyY2VbeF07CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRMdW1pbmFuY2VIYWxmRmxvYXREYXRhVG9SR0JBKEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qg
b3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCAq
c291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBzaG9ydCAqZGVzdCA9IE5VTEw7CisKKyAgICBm
b3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRlc3Qg
PSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworICAgICAgICBmb3IgKGludCB4ID0g
MDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAw
XSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4XTsK
KyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgIGRl
c3RbNCAqIHggKyAzXSA9IDB4M0MwMDsgLy8gU0VFRUVFTU1NTU1NTU1NTSwgUyA9IDAsIEUgPSAx
NSwgTSA9IDA6IDE2Yml0IGZscHQgcmVwcmVzZW50YXRpb24gb2YgMQorICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIEltYWdlOjpsb2FkTHVtaW5hbmNlQWxwaGFEYXRhVG9OYXRpdmVPckJHUkEo
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0
LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCwgYm9vbCBuYXRpdmUpCit7CisgICAg
Y29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBjaGFyICpk
ZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAg
eworICAgICAgICBzb3VyY2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5w
dXQpICsgeSAqIGlucHV0UGl0Y2g7CisgICAgICAgIGRlc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAgICAgICAgCisgICAgICAgIGlm
ICghbmF0aXZlKSAgIC8vIEJHUkE4IGRlc3RpbmF0aW9uIGZvcm1hdAorICAgICAgICB7CisgICAg
ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlWzIqeCswXTsKKyAgICAgICAg
ICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbMip4KzBdOworICAgICAgICAgICAgICAg
IGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVsyKngrMF07CisgICAgICAgICAgICAgICAgZGVzdFs0
ICogeCArIDNdID0gc291cmNlWzIqeCsxXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1lbWNweShkZXN0LCBzb3VyY2UsIHdp
ZHRoICogMik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRMdW1pbmFu
Y2VBbHBoYUZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRj
aCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQor
eworICAgIGNvbnN0IGZsb2F0ICpzb3VyY2UgPSBOVUxMOworICAgIGZsb2F0ICpkZXN0ID0gTlVM
TDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAg
ICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oc3RhdGljX2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKKyAgICAgICAgZGVz
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4o
b3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
d2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291
cmNlWzIqeCswXTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVsyKngrMF07
CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzb3VyY2VbMip4KzBdOworICAgICAgICAg
ICAgZGVzdFs0ICogeCArIDNdID0gc291cmNlWzIqeCsxXTsKKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCBJbWFnZTo6bG9hZEx1bWluYW5jZUFscGhhSGFsZkZsb2F0RGF0YVRvUkdCQShHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBz
aXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBzaG9ydCAqZGVzdCA9IE5VTEw7CisK
KyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291
cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAg
IGRlc3QgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4oc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworICAgICAgICBmb3IgKGlu
dCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbNCAq
IHggKyAwXSA9IHNvdXJjZVsyKngrMF07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBz
b3VyY2VbMip4KzBdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc291cmNlWzIqeCsw
XTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHNvdXJjZVsyKngrMV07CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRSR0JVQnl0ZURhdGFUb0JHUlgoR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNo
LCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlID0gTlVM
TDsKKyAgICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkgPSAw
OyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSBzdGF0aWNfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2g7CisgICAgICAgIGRl
c3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRj
aDsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3VyY2VbeCAqIDMgKyAyXTsKKyAgICAgICAg
ICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4ICogMyArIDFdOworICAgICAgICAgICAgZGVz
dFs0ICogeCArIDJdID0gc291cmNlW3ggKiAzICsgMF07CisgICAgICAgICAgICBkZXN0WzQgKiB4
ICsgM10gPSAweEZGOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdC
VUJ5dGVEYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5w
dXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7
CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAg
c291cmNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBp
bnB1dFBpdGNoOworICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91
dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2g7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lk
dGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNl
W3ggKiAzICsgMF07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbeCAqIDMg
KyAxXTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4ICogMyArIDJdOwor
ICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gMHhGRjsKKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCBJbWFnZTo6bG9hZFJHQjU2NURhdGFUb0JHUkEoR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRj
aCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQor
eworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOworICAgIHVuc2lnbmVk
IGNoYXIgKmRlc3QgPSBOVUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkr
KykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgc2hvcnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAq
IGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+
KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2g7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
d2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcmdiYSA9
IHNvdXJjZVt4XTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9ICgocmdiYSAmIDB4MDAx
RikgPDwgMykgfCAoKHJnYmEgJiAweDAwMUYpID4+IDIpOworICAgICAgICAgICAgZGVzdFs0ICog
eCArIDFdID0gKChyZ2JhICYgMHgwN0UwKSA+PiAzKSB8ICgocmdiYSAmIDB4MDdFMCkgPj4gOSk7
CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSAoKHJnYmEgJiAweEY4MDApID4+IDgpIHwg
KChyZ2JhICYgMHhGODAwKSA+PiAxMyk7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAw
eEZGOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdCNTY1RGF0YVRv
UkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91
dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKnNv
dXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3Ig
KGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRlc3QgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAg
ICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAg
ICAgICB1bnNpZ25lZCBzaG9ydCByZ2JhID0gc291cmNlW3hdOworICAgICAgICAgICAgZGVzdFs0
ICogeCArIDBdID0gKChyZ2JhICYgMHhGODAwKSA+PiA4KSB8ICgocmdiYSAmIDB4RjgwMCkgPj4g
MTMpOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gKChyZ2JhICYgMHgwN0UwKSA+PiAz
KSB8ICgocmdiYSAmIDB4MDdFMCkgPj4gOSk7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0g
PSAoKHJnYmEgJiAweDAwMUYpIDw8IDMpIHwgKChyZ2JhICYgMHgwMDFGKSA+PiAyKTsKKyAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IDB4RkY7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgSW1hZ2U6OmxvYWRSR0JGbG9hdERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNo
LCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7
CisgICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9IE5VTEw7CisgICAgZmxvYXQgKmRlc3QgPSBOVUxM
OworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAg
IHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihzdGF0aWNfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0
ID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihv
dXRwdXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3
aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3Vy
Y2VbeCAqIDMgKyAwXTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4ICog
MyArIDFdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc291cmNlW3ggKiAzICsgMl07
CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAxLjBmOworICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIEltYWdlOjpsb2FkUkdCRmxvYXREYXRhVG9OYXRpdmUoR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQg
Km91dHB1dCkKK3sKKyAgICBjb25zdCBmbG9hdCAqc291cmNlID0gTlVMTDsKKyAgICBmbG9hdCAq
ZGVzdCA9IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAg
IHsKKyAgICAgICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHN0YXRp
Y19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7Cisg
ICAgICAgIGRlc3QgPSByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworICAgICAgICBtZW1jcHkoZGVz
dCwgc291cmNlLCB3aWR0aCAqIDEyKTsKKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRSR0JI
YWxmRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZv
aWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBzaG9ydCAqZGVz
dCA9IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsK
KyAgICAgICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRj
aCk7CisgICAgICAgIGRlc3QgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4oc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworICAg
ICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlc3RbNCAqIHggKyAwXSA9IHNvdXJjZVt4ICogMyArIDBdOworICAgICAgICAgICAgZGVz
dFs0ICogeCArIDFdID0gc291cmNlW3ggKiAzICsgMV07CisgICAgICAgICAgICBkZXN0WzQgKiB4
ICsgMl0gPSBzb3VyY2VbeCAqIDMgKyAyXTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9
IDB4M0MwMDsgLy8gU0VFRUVFTU1NTU1NTU1NTSwgUyA9IDAsIEUgPSAxNSwgTSA9IDA6IDE2Yml0
IGZscHQgcmVwcmVzZW50YXRpb24gb2YgMQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIElt
YWdlOjpsb2FkUkdCQVVCeXRlRGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBj
b25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7Cisg
ICAgY29uc3QgdW5zaWduZWQgaW50ICpzb3VyY2UgPSBOVUxMOworICAgIHVuc2lnbmVkIGludCAq
ZGVzdCA9IE5VTEw7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7
CisgICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgaW50Kj4o
c3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNo
KTsKKyAgICAgICAgZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4oc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworCisgICAg
ICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHJnYmEgPSBzb3VyY2VbeF07CisgICAgICAgICAgICBkZXN0W3hdID0g
KF9yb3RsKHJnYmEsIDE2KSAmIDB4MDBmZjAwZmYpIHwgKHJnYmEgJiAweGZmMDBmZjAwKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9hZFJHQkFVQnl0ZURhdGFUb05hdGl2
ZShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qg
b3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgKnNv
dXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgaW50ICpkZXN0ID0gTlVMTDsKKyAgICBmb3IgKGlu
dCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBpbnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0gcmVpbnRl
cnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0
cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7CisKKyAgICAgICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwg
d2lkdGggKiA0KTsKKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRSR0JBNDQ0NERhdGFUb0JH
UkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91
dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKnNv
dXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3Ig
KGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRlc3QgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAg
ICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAg
ICAgICB1bnNpZ25lZCBzaG9ydCByZ2JhID0gc291cmNlW3hdOworICAgICAgICAgICAgZGVzdFs0
ICogeCArIDBdID0gKChyZ2JhICYgMHgwMEYwKSA8PCAwKSB8ICgocmdiYSAmIDB4MDBGMCkgPj4g
NCk7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSAoKHJnYmEgJiAweDBGMDApID4+IDQp
IHwgKChyZ2JhICYgMHgwRjAwKSA+PiA4KTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9
ICgocmdiYSAmIDB4RjAwMCkgPj4gOCkgfCAoKHJnYmEgJiAweEYwMDApID4+IDEyKTsKKyAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAzXSA9ICgocmdiYSAmIDB4MDAwRikgPDwgNCkgfCAoKHJnYmEg
JiAweDAwMEYpID4+IDApOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2Fk
UkdCQTQ0NDREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAq
aW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOworICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBO
VUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAg
ICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOwor
ICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICog
b3V0cHV0UGl0Y2g7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAg
ICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcmdiYSA9IHNvdXJjZVt4XTsKKyAg
ICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9ICgocmdiYSAmIDB4RjAwMCkgPj4gOCkgfCAoKHJn
YmEgJiAweEYwMDApID4+IDEyKTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9ICgocmdi
YSAmIDB4MEYwMCkgPj4gNCkgfCAoKHJnYmEgJiAweDBGMDApID4+IDgpOworICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDJdID0gKChyZ2JhICYgMHgwMEYwKSA8PCAwKSB8ICgocmdiYSAmIDB4MDBG
MCkgPj4gNCk7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAoKHJnYmEgJiAweDAwMEYp
IDw8IDQpIHwgKChyZ2JhICYgMHgwMDBGKSA+PiAwKTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBJbWFnZTo6bG9hZFJHQkE1NTUxRGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0
Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkK
K3sKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25l
ZCBjaGFyICpkZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5
KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2ln
bmVkIHNob3J0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkg
KiBpbnB1dFBpdGNoKTsKKyAgICAgICAgZGVzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIq
PihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoOworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHJnYmEg
PSBzb3VyY2VbeF07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSAoKHJnYmEgJiAweDAw
M0UpIDw8IDIpIHwgKChyZ2JhICYgMHgwMDNFKSA+PiAzKTsKKyAgICAgICAgICAgIGRlc3RbNCAq
IHggKyAxXSA9ICgocmdiYSAmIDB4MDdDMCkgPj4gMykgfCAoKHJnYmEgJiAweDA3QzApID4+IDgp
OworICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gKChyZ2JhICYgMHhGODAwKSA+PiA4KSB8
ICgocmdiYSAmIDB4RjgwMCkgPj4gMTMpOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0g
KHJnYmEgJiAweDAwMDEpID8gMHhGRiA6IDA7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
SW1hZ2U6OmxvYWRSR0JBNTU1MURhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBj
b25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7Cisg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hh
ciAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQor
ICAgIHsKKyAgICAgICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBz
aG9ydCo+KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5w
dXRQaXRjaCk7CisgICAgICAgIGRlc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0
cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0
aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCByZ2JhID0gc291
cmNlW3hdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gKChyZ2JhICYgMHhGODAwKSA+
PiA4KSB8ICgocmdiYSAmIDB4RjgwMCkgPj4gMTMpOworICAgICAgICAgICAgZGVzdFs0ICogeCAr
IDFdID0gKChyZ2JhICYgMHgwN0MwKSA+PiAzKSB8ICgocmdiYSAmIDB4MDdDMCkgPj4gOCk7Cisg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSAoKHJnYmEgJiAweDAwM0UpIDw8IDIpIHwgKChy
Z2JhICYgMHgwMDNFKSA+PiAzKTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IChyZ2Jh
ICYgMHgwMDAxKSA/IDB4RkYgOiAwOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdl
Ojpsb2FkUkdCQUZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25z
dCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAg
Y29uc3QgZmxvYXQgKnNvdXJjZSA9IE5VTEw7CisgICAgZmxvYXQgKmRlc3QgPSBOVUxMOworCisg
ICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJj
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0gcmVp
bnRlcnByZXRfY2FzdDxmbG9hdCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQp
ICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lkdGgg
KiAxNik7CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdCQUhhbGZGbG9hdERhdGFUb1JH
QkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXpl
X3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFy
ICpzb3VyY2UgPSBOVUxMOworICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOworCisgICAg
Zm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9
IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRj
aDsKKyAgICAgICAgZGVzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsg
eSAqIG91dHB1dFBpdGNoOworICAgICAgICBtZW1jcHkoZGVzdCwgc291cmNlLCB3aWR0aCAqIDgp
OworICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9hZEJHUkFEYXRhVG9CR1JBKEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
bnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpv
dXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlID0gTlVMTDsKKyAgICB1
bnNpZ25lZCBjaGFyICpkZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVp
Z2h0OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2g7CisgICAgICAgIGRlc3QgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAgICAg
ICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lkdGgqNCk7CisgICAgfQorfQorCit9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9JbWFnZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzMSBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworLy8gSW1hZ2UuaDogRGVmaW5lcyB0aGUgcng6OkltYWdlIGNs
YXNzLCBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0aGUgCisvLyByZW5kZXJlci1zcGVjaWZp
YyBjbGFzc2VzIHdoaWNoIHdpbGwgZGVmaW5lIHRoZSBpbnRlcmZhY2UgdG8gdGhlIHVuZGVybHlp
bmcKKy8vIHN1cmZhY2VzIG9yIHJlc291cmNlcy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVS
RVJfSU1BR0VfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX0lNQUdFX0hfCisKKyNpbmNs
dWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBGcmFtZWJ1ZmZl
cjsKK30KKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKK2NsYXNzIFRleHR1cmVT
dG9yYWdlSW50ZXJmYWNlMkQ7CitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmU7CisK
K2NsYXNzIEltYWdlCit7CisgIHB1YmxpYzoKKyAgICBJbWFnZSgpOworICAgIHZpcnR1YWwgfklt
YWdlKCkge307CisKKyAgICBHTHNpemVpIGdldFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbVdpZHRo
OyB9CisgICAgR0xzaXplaSBnZXRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtSGVpZ2h0OyB9Cisg
ICAgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbUludGVybmFsRm9y
bWF0OyB9CisgICAgR0xlbnVtIGdldEFjdHVhbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1BY3R1
YWxGb3JtYXQ7IH0KKworICAgIHZvaWQgbWFya0RpcnR5KCkge21EaXJ0eSA9IHRydWU7fQorICAg
IHZvaWQgbWFya0NsZWFuKCkge21EaXJ0eSA9IGZhbHNlO30KKyAgICB2aXJ0dWFsIGJvb2wgaXNE
aXJ0eSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRNYW5hZ2VkU3VyZmFjZShU
ZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpzdG9yYWdlLCBpbnQgbGV2ZWwpIHt9OworICAgIHZp
cnR1YWwgdm9pZCBzZXRNYW5hZ2VkU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUg
KnN0b3JhZ2UsIGludCBmYWNlLCBpbnQgbGV2ZWwpIHt9OworICAgIHZpcnR1YWwgYm9vbCB1cGRh
dGVTdXJmYWNlKFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIGludCBsZXZlbCwg
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlU3VyZmFjZShUZXh0dXJlU3RvcmFnZUlu
dGVyZmFjZUN1YmUgKnN0b3JhZ2UsIGludCBmYWNlLCBpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSA9IDA7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgcmVkZWZpbmUoUmVuZGVyZXIgKnJlbmRlcmVyLCBHTGludCBpbnRlcm5h
bGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIGJvb2wgZm9yY2VSZWxlYXNl
KSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJhYmxlRm9ybWF0KCkgY29uc3QgPSAw
OworICAgIAorICAgIHZpcnR1YWwgdm9pZCBsb2FkRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5
b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
IEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqaW5wdXQpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgbG9hZENvbXByZXNzZWREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5wdXQpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBj
b3B5KEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkgPSAwOwor
CisgICAgc3RhdGljIHZvaWQgbG9hZEFscGhhRGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1
dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRw
dXQpOworICAgIHN0YXRpYyB2b2lkIGxvYWRBbHBoYURhdGFUb05hdGl2ZShHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZv
aWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEFscGhhRGF0YVRvQkdSQVNTRTIoR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0
cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEFscGhhRmxvYXRE
YXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5w
dXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBs
b2FkQWxwaGFIYWxmRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0
UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1
dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEx1bWluYW5jZURhdGFUb05hdGl2ZU9yQkdSQShHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRw
dXRQaXRjaCwgdm9pZCAqb3V0cHV0LCBib29sIG5hdGl2ZSk7CisgICAgc3RhdGljIHZvaWQgbG9h
ZEx1bWluYW5jZUZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBp
dGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQp
OworICAgIHN0YXRpYyB2b2lkIGxvYWRMdW1pbmFuY2VGbG9hdERhdGFUb1JHQihHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0
UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEx1bWluYW5jZUhhbGZG
bG9hdERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNv
bnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAg
c3RhdGljIHZvaWQgbG9hZEx1bWluYW5jZUFscGhhRGF0YVRvTmF0aXZlT3JCR1JBKEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0
cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCwgYm9vbCBuYXRpdmUpOworICAgIHN0YXRpYyB2b2lkIGxv
YWRMdW1pbmFuY2VBbHBoYUZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZv
aWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEx1bWluYW5jZUFscGhhSGFsZkZsb2F0
RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBj
b25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAg
IHN0YXRpYyB2b2lkIGxvYWRSR0JVQnl0ZURhdGFUb0JHUlgoR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5w
dXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0
cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkUkdCVUJ5dGVEYXRhVG9SR0JBKEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gs
IHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQjU2NURhdGFUb0JHUkEoR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0
UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQjU2NURhdGFUb1JH
QkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qg
b3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQkZsb2F0
RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1
dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0YXRpYyB2b2lkIGxv
YWRSR0JGbG9hdERhdGFUb05hdGl2ZShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNv
bnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAg
c3RhdGljIHZvaWQgbG9hZFJHQkhhbGZGbG9hdERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZv
aWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQkFVQnl0ZURhdGFUb0JHUkFTU0Uy
KEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNp
emVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkUkdC
QVVCeXRlRGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9p
ZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMg
dm9pZCBsb2FkUkdCQVVCeXRlRGF0YVRvTmF0aXZlKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0
UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1
dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQkE0NDQ0RGF0YVRvQkdSQShHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2
b2lkICpvdXRwdXQpOworICAgIHN0YXRpYyB2b2lkIGxvYWRSR0JBNDQ0NERhdGFUb1JHQkEoR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRw
dXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkUkdCQTU1NTFEYXRh
VG9CR1JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBz
aXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJH
QkE1NTUxRGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lk
ICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0YXRpYyB2
b2lkIGxvYWRSR0JBRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNo
LCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOwor
ICAgIHN0YXRpYyB2b2lkIGxvYWRSR0JBSGFsZkZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0
Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEJHUkFEYXRhVG9CR1JBKEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQ
aXRjaCwgdm9pZCAqb3V0cHV0KTsKKworICBwcm90ZWN0ZWQ6CisgICAgR0xzaXplaSBtV2lkdGg7
CisgICAgR0xzaXplaSBtSGVpZ2h0OworICAgIEdMaW50IG1JbnRlcm5hbEZvcm1hdDsKKyAgICBH
TGVudW0gbUFjdHVhbEZvcm1hdDsKKworICAgIGJvb2wgbURpcnR5OworCisgIHByaXZhdGU6Cisg
ICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEltYWdlKTsKK307CisKK30KKworI2VuZGlmIC8v
IExJQkdMRVNWMl9SRU5ERVJFUl9JTUFHRV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZVNTRTIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2VTU0UyLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvSW1hZ2VTU0UyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDAgQEAKKyNp
bmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW1hZ2VTU0Uy
LmNwcDogSW1wbGVtZW50cyBTU0UyLWJhc2VkIGZ1bmN0aW9ucyBvZiByeDo6SW1hZ2UgY2xhc3Mu
IEl0J3MKKy8vIGluIGEgc2VwYXJhdGVkIGZpbGUgZm9yIEdDQywgd2hpY2ggY2FuIGVuYWJsZSBT
U0UgdXNhZ2Ugb25seSBwZXItZmlsZSwKKy8vIG5vdCBmb3IgY29kZSBibG9ja3MgdGhhdCB1c2Ug
U1NFMiBleHBsaWNpdGx5LgorCisjaW5jbHVkZSAibGliR0xFU3YyL1RleHR1cmUuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK3Zv
aWQgSW1hZ2U6OmxvYWRSR0JBVUJ5dGVEYXRhVG9CR1JBU1NFMihHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
aW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAq
b3V0cHV0KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGludCAqc291cmNlID0gTlVMTDsKKyAgICB1
bnNpZ25lZCBpbnQgKmRlc3QgPSBOVUxMOworICAgIF9fbTEyOGkgYnJNYXNrID0gX21tX3NldDFf
ZXBpMzIoMHgwMGZmMDBmZik7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsr
KQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25l
ZCBpbnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlu
cHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQq
PihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7
CisgICAgICAgIGludCB4ID0gMDsKKworICAgICAgICAvLyBNYWtlIG91dHB1dCB3cml0ZXMgYWxp
Z25lZAorICAgICAgICBmb3IgKHggPSAwOyAoKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KCZk
ZXN0W3hdKSAmIDE1KSAhPSAwKSAmJiB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAg
ICAgICAgdW5zaWduZWQgaW50IHJnYmEgPSBzb3VyY2VbeF07CisgICAgICAgICAgICBkZXN0W3hd
ID0gKF9yb3RsKHJnYmEsIDE2KSAmIDB4MDBmZjAwZmYpIHwgKHJnYmEgJiAweGZmMDBmZjAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZvciAoOyB4ICsgMyA8IHdpZHRoOyB4ICs9IDQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIF9fbTEyOGkgc291cmNlRGF0YSA9IF9tbV9sb2FkdV9zaTEyOChy
ZWludGVycHJldF9jYXN0PGNvbnN0IF9fbTEyOGkqPigmc291cmNlW3hdKSk7CisgICAgICAgICAg
ICAvLyBNYXNrIG91dCBnIGFuZCBhLCB3aGljaCBkb24ndCBjaGFuZ2UKKyAgICAgICAgICAgIF9f
bTEyOGkgZ2FDb21wb25lbnRzID0gX21tX2FuZG5vdF9zaTEyOChick1hc2ssIHNvdXJjZURhdGEp
OworICAgICAgICAgICAgLy8gTWFzayBvdXQgYiBhbmQgcgorICAgICAgICAgICAgX19tMTI4aSBi
ckNvbXBvbmVudHMgPSBfbW1fYW5kX3NpMTI4KHNvdXJjZURhdGEsIGJyTWFzayk7CisgICAgICAg
ICAgICAvLyBTd2FwIGIgYW5kIHIKKyAgICAgICAgICAgIF9fbTEyOGkgYnJTd2FwcGVkID0gX21t
X3NodWZmbGVoaV9lcGkxNihfbW1fc2h1ZmZsZWxvX2VwaTE2KGJyQ29tcG9uZW50cywgX01NX1NI
VUZGTEUoMiwgMywgMCwgMSkpLCBfTU1fU0hVRkZMRSgyLCAzLCAwLCAxKSk7CisgICAgICAgICAg
ICBfX20xMjhpIHJlc3VsdCA9IF9tbV9vcl9zaTEyOChnYUNvbXBvbmVudHMsIGJyU3dhcHBlZCk7
CisgICAgICAgICAgICBfbW1fc3RvcmVfc2kxMjgocmVpbnRlcnByZXRfY2FzdDxfX20xMjhpKj4o
JmRlc3RbeF0pLCByZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUGVyZm9ybSBsZWZ0
b3ZlciB3cml0ZXMKKyAgICAgICAgZm9yICg7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmdiYSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgIGRl
c3RbeF0gPSAoX3JvdGwocmdiYSwgMTYpICYgMHgwMGZmMDBmZikgfCAocmdiYSAmIDB4ZmYwMGZm
MDApOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkQWxwaGFEYXRhVG9C
R1JBU1NFMihHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6
ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hh
ciAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBpbnQgKmRlc3QgPSBOVUxMOworICAgIF9f
bTEyOGkgemVyb1dpZGUgPSBfbW1fc2V0emVyb19zaTEyOCgpOworCisgICAgZm9yIChpbnQgeSA9
IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaDsKKyAgICAgICAg
ZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4oc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworCisgICAgICAgIGludCB4Owor
ICAgICAgICAvLyBNYWtlIG91dHB1dCB3cml0ZXMgYWxpZ25lZAorICAgICAgICBmb3IgKHggPSAw
OyAoKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KCZkZXN0W3hdKSAmIDB4RikgIT0gMCAmJiB4
IDwgd2lkdGgpOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbeF0gPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBpbnQ+KHNvdXJjZVt4XSkgPDwgMjQ7CisgICAgICAgIH0KKworICAgICAg
ICBmb3IgKDsgeCArIDcgPCB3aWR0aDsgeCArPSA4KQorICAgICAgICB7CisgICAgICAgICAgICBf
X20xMjhpIHNvdXJjZURhdGEgPSBfbW1fbG9hZGxfZXBpNjQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBfX20xMjhpKj4oJnNvdXJjZVt4XSkpOworICAgICAgICAgICAgLy8gSW50ZXJsZWF2ZSBlYWNo
IGJ5dGUgdG8gMTZiaXQsIG1ha2UgdGhlIGxvd2VyIGJ5dGUgdG8gemVybworICAgICAgICAgICAg
c291cmNlRGF0YSA9IF9tbV91bnBhY2tsb19lcGk4KHplcm9XaWRlLCBzb3VyY2VEYXRhKTsKKyAg
ICAgICAgICAgIC8vIEludGVybGVhdmUgZWFjaCAxNmJpdCB0byAzMmJpdCwgbWFrZSB0aGUgbG93
ZXIgMTZiaXQgdG8gemVybworICAgICAgICAgICAgX19tMTI4aSBsbyA9IF9tbV91bnBhY2tsb19l
cGkxNih6ZXJvV2lkZSwgc291cmNlRGF0YSk7CisgICAgICAgICAgICBfX20xMjhpIGhpID0gX21t
X3VucGFja2hpX2VwaTE2KHplcm9XaWRlLCBzb3VyY2VEYXRhKTsKKworICAgICAgICAgICAgX21t
X3N0b3JlX3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KCZkZXN0W3hdKSwgbG8pOwor
ICAgICAgICAgICAgX21tX3N0b3JlX3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KCZk
ZXN0W3ggKyA0XSksIGhpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEhhbmRsZSB0aGUgcmVt
YWluZGVyCisgICAgICAgIGZvciAoOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVzdFt4XSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc291cmNlW3hdKSA8PCAy
NDsKKyAgICAgICAgfQorICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZm
ZXI5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXI5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MDcgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
SW5kZXhmZmVyOS5jcHA6IERlZmluZXMgdGhlIEQzRDkgSW5kZXhCdWZmZXIgaW1wbGVtZW50YXRp
b24uCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXI5LmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgorCituYW1lc3BhY2UgcngKK3sK
KworSW5kZXhCdWZmZXI5OjpJbmRleEJ1ZmZlcjkoUmVuZGVyZXI5ICpjb25zdCByZW5kZXJlcikg
OiBtUmVuZGVyZXIocmVuZGVyZXIpCit7CisgICAgbUluZGV4QnVmZmVyID0gTlVMTDsKKyAgICBt
QnVmZmVyU2l6ZSA9IDA7CisgICAgbUluZGV4VHlwZSA9IDA7CisgICAgbUR5bmFtaWMgPSBmYWxz
ZTsKK30KKworSW5kZXhCdWZmZXI5Ojp+SW5kZXhCdWZmZXI5KCkKK3sKKyAgICBpZiAobUluZGV4
QnVmZmVyKQorICAgIHsKKyAgICAgICAgbUluZGV4QnVmZmVyLT5SZWxlYXNlKCk7CisgICAgICAg
IG1JbmRleEJ1ZmZlciA9IE5VTEw7CisgICAgfQorfQorCitib29sIEluZGV4QnVmZmVyOTo6aW5p
dGlhbGl6ZSh1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSwgR0xlbnVtIGluZGV4VHlwZSwgYm9vbCBk
eW5hbWljKQoreworICAgIGlmIChtSW5kZXhCdWZmZXIpCisgICAgeworICAgICAgICBtSW5kZXhC
dWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAgbUluZGV4QnVmZmVyID0gTlVMTDsKKyAgICB9CisK
KyAgICB1cGRhdGVTZXJpYWwoKTsKKworICAgIGlmIChidWZmZXJTaXplID4gMCkKKyAgICB7Cisg
ICAgICAgIEQzREZPUk1BVCBmb3JtYXQ7CisgICAgICAgIGlmIChpbmRleFR5cGUgPT0gR0xfVU5T
SUdORURfU0hPUlQgfHwgaW5kZXhUeXBlID09IEdMX1VOU0lHTkVEX0JZVEUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGZvcm1hdCA9IEQzREZNVF9JTkRFWDE2OworICAgICAgICB9CisgICAgICAg
IGVsc2UgaWYgKGluZGV4VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChtUmVuZGVyZXItPmdldDMyQml0SW5kZXhTdXBwb3J0KCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZm9ybWF0ID0gRDNERk1UX0lOREVYMzI7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRVJS
KCJBdHRlbXB0ZWQgdG8gY3JlYXRlIGEgMzItYml0IGluZGV4IGJ1ZmZlciBidXQgcmVuZGVyZXIg
ZG9lcyBub3Qgc3VwcG9ydCAzMi1iaXQgaW5kaWNlcy4iKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICBFUlIoIkludmFsaWQgaW5kZXggdHlwZSAldS4iLCBpbmRleFR5cGUp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgRFdPUkQg
dXNhZ2VGbGFncyA9IEQzRFVTQUdFX1dSSVRFT05MWTsKKyAgICAgICAgaWYgKGR5bmFtaWMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHVzYWdlRmxhZ3MgfD0gRDNEVVNBR0VfRFlOQU1JQzsKKyAg
ICAgICAgfQorCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVJlbmRlcmVyLT5jcmVhdGVJbmRl
eEJ1ZmZlcihidWZmZXJTaXplLCB1c2FnZUZsYWdzLCBmb3JtYXQsICZtSW5kZXhCdWZmZXIpOwor
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigi
RmFpbGVkIHRvIGNyZWF0ZSBhbiBpbmRleCBidWZmZXIgb2Ygc2l6ZSAldSwgcmVzdWx0OiAweCUw
OHguIiwgbUJ1ZmZlclNpemUsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBtQnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAgbUlu
ZGV4VHlwZSA9IGluZGV4VHlwZTsKKyAgICBtRHluYW1pYyA9IGR5bmFtaWM7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworSW5kZXhCdWZmZXI5ICpJbmRleEJ1ZmZlcjk6Om1ha2VJbmRleEJ1ZmZl
cjkoSW5kZXhCdWZmZXIgKmluZGV4QnVmZmVyKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19U
WVBFKEluZGV4QnVmZmVyOSosIGluZGV4QnVmZmVyKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEluZGV4QnVmZmVyOSo+KGluZGV4QnVmZmVyKTsKK30KKworYm9vbCBJbmRleEJ1ZmZlcjk6Om1h
cEJ1ZmZlcih1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSwgdm9pZCoqIG91
dE1hcHBlZE1lbW9yeSkKK3sKKyAgICBpZiAobUluZGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAg
RFdPUkQgbG9ja0ZsYWdzID0gbUR5bmFtaWMgPyBEM0RMT0NLX05PT1ZFUldSSVRFIDogMDsKKwor
ICAgICAgICB2b2lkICptYXBQdHIgPSBOVUxMOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1J
bmRleEJ1ZmZlci0+TG9jayhvZmZzZXQsIHNpemUsICZtYXBQdHIsIGxvY2tGbGFncyk7CisgICAg
ICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJJbmRl
eCBidWZmZXIgbG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgKm91dE1hcHBlZE1lbW9y
eSA9IG1hcFB0cjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIEVSUigiSW5kZXggYnVmZmVyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBJbmRleEJ1ZmZlcjk6OnVubWFwQnVmZmVy
KCkKK3sKKyAgICBpZiAobUluZGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1
bHQgPSBtSW5kZXhCdWZmZXItPlVubG9jaygpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiSW5kZXggYnVmZmVyIHVubG9jayBmYWlsZWQg
d2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIEVSUigiSW5kZXggYnVmZmVyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworR0xlbnVtIEluZGV4QnVmZmVyOTo6Z2V0SW5kZXhU
eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluZGV4VHlwZTsKK30KKwordW5zaWduZWQgaW50
IEluZGV4QnVmZmVyOTo6Z2V0QnVmZmVyU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1CdWZm
ZXJTaXplOworfQorCitib29sIEluZGV4QnVmZmVyOTo6c2V0U2l6ZSh1bnNpZ25lZCBpbnQgYnVm
ZmVyU2l6ZSwgR0xlbnVtIGluZGV4VHlwZSkKK3sKKyAgICBpZiAoYnVmZmVyU2l6ZSA+IG1CdWZm
ZXJTaXplIHx8IGluZGV4VHlwZSAhPSBtSW5kZXhUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGluaXRpYWxpemUoYnVmZmVyU2l6ZSwgaW5kZXhUeXBlLCBtRHluYW1pYyk7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKworYm9vbCBJbmRl
eEJ1ZmZlcjk6OmRpc2NhcmQoKQoreworICAgIGlmIChtSW5kZXhCdWZmZXIpCisgICAgeworICAg
ICAgICB2b2lkICpkdW1teTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQ7CisKKyAgICAgICAgcmVz
dWx0ID0gbUluZGV4QnVmZmVyLT5Mb2NrKDAsIDEsICZkdW1teSwgRDNETE9DS19ESVNDQVJEKTsK
KyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIo
IkRpc2NhcmQgbG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gbUluZGV4
QnVmZmVyLT5VbmxvY2soKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7
CisgICAgICAgICAgICBFUlIoIkRpc2NhcmQgdW5sb2NrIGZhaWxlZCB3aXRoIGVycm9yIDB4JTA4
eCIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgRVJSKCJJ
bmRleCBidWZmZXIgbm90IGluaXRpYWxpemVkLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCitEM0RGT1JNQVQgSW5kZXhCdWZmZXI5OjpnZXRJbmRleEZvcm1hdCgpIGNvbnN0
Cit7CisgICAgc3dpdGNoIChtSW5kZXhUeXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfVU5TSUdO
RURfQllURTogICAgcmV0dXJuIEQzREZNVF9JTkRFWDE2OworICAgICAgY2FzZSBHTF9VTlNJR05F
RF9TSE9SVDogICByZXR1cm4gRDNERk1UX0lOREVYMTY7CisgICAgICBjYXNlIEdMX1VOU0lHTkVE
X0lOVDogICAgIHJldHVybiBEM0RGTVRfSU5ERVgzMjsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hB
QkxFKCk7ICAgcmV0dXJuIEQzREZNVF9VTktOT1dOOworICAgIH0KK30KKworSURpcmVjdDNESW5k
ZXhCdWZmZXI5ICogSW5kZXhCdWZmZXI5OjpnZXRCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVy
biBtSW5kZXhCdWZmZXI7Cit9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVm
ZmVyOS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvSW5kZXhCdWZmZXI5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyOS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbmRleGZmZXI5
Lmg6IERlZmluZXMgdGhlIEQzRDkgSW5kZXhCdWZmZXIgaW1wbGVtZW50YXRpb24uCisKKyNpZm5k
ZWYgTElCR0xFU1YyX1JFTkRFUkVSX0lOREVYQlVGRkVSOV9IXworI2RlZmluZSBMSUJHTEVTVjJf
UkVOREVSRVJfSU5ERVhCVUZGRVI5X0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
SW5kZXhCdWZmZXIuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjk7CisKK2Ns
YXNzIEluZGV4QnVmZmVyOSA6IHB1YmxpYyBJbmRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAg
ZXhwbGljaXQgSW5kZXhCdWZmZXI5KFJlbmRlcmVyOSAqY29uc3QgcmVuZGVyZXIpOworICAgIHZp
cnR1YWwgfkluZGV4QnVmZmVyOSgpOworCisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUodW5z
aWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUsIGJvb2wgZHluYW1pYyk7CisK
KyAgICBzdGF0aWMgSW5kZXhCdWZmZXI5ICptYWtlSW5kZXhCdWZmZXI5KEluZGV4QnVmZmVyICpp
bmRleEJ1ZmZlcik7CisKKyAgICB2aXJ0dWFsIGJvb2wgbWFwQnVmZmVyKHVuc2lnbmVkIGludCBv
ZmZzZXQsIHVuc2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFwcGVkTWVtb3J5KTsKKyAgICB2
aXJ0dWFsIGJvb2wgdW5tYXBCdWZmZXIoKTsKKworICAgIHZpcnR1YWwgR0xlbnVtIGdldEluZGV4
VHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldEJ1ZmZlclNpemUoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSwg
R0xlbnVtIGluZGV4VHlwZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgZGlzY2FyZCgpOworCisgICAg
RDNERk9STUFUIGdldEluZGV4Rm9ybWF0KCkgY29uc3Q7CisgICAgSURpcmVjdDNESW5kZXhCdWZm
ZXI5ICpnZXRCdWZmZXIoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihJbmRleEJ1ZmZlcjkpOworCisgICAgcng6OlJlbmRlcmVyOSAqY29uc3QgbVJl
bmRlcmVyOworCisgICAgSURpcmVjdDNESW5kZXhCdWZmZXI5ICptSW5kZXhCdWZmZXI7CisgICAg
dW5zaWduZWQgaW50IG1CdWZmZXJTaXplOworICAgIEdMZW51bSBtSW5kZXhUeXBlOworICAgIGJv
b2wgbUR5bmFtaWM7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfSU5E
RVhCVUZGRVI5X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXIxMS5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L0luZGV4QnVmZmVyMTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4MiBAQAorI2luY2x1
ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW5kZXhCdWZmZXIxMS5jcHA6
IERlZmluZXMgdGhlIEQzRDExIEluZGV4QnVmZmVyIGltcGxlbWVudGF0aW9uLgorCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvUmVuZGVyZXIxMS5oIgorCituYW1lc3BhY2UgcngKK3sKKworSW5kZXhCdWZm
ZXIxMTo6SW5kZXhCdWZmZXIxMShSZW5kZXJlcjExICpjb25zdCByZW5kZXJlcikgOiBtUmVuZGVy
ZXIocmVuZGVyZXIpCit7CisgICAgbUJ1ZmZlciA9IE5VTEw7CisgICAgbUJ1ZmZlclNpemUgPSAw
OworICAgIG1EeW5hbWljVXNhZ2UgPSBmYWxzZTsKK30KKworSW5kZXhCdWZmZXIxMTo6fkluZGV4
QnVmZmVyMTEoKQoreworICAgIGlmIChtQnVmZmVyKQorICAgIHsKKyAgICAgICAgbUJ1ZmZlci0+
UmVsZWFzZSgpOworICAgICAgICBtQnVmZmVyID0gTlVMTDsKKyAgICB9Cit9CisKK2Jvb2wgSW5k
ZXhCdWZmZXIxMTo6aW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSwgR0xlbnVtIGlu
ZGV4VHlwZSwgYm9vbCBkeW5hbWljKQoreworICAgIGlmIChtQnVmZmVyKQorICAgIHsKKyAgICAg
ICAgbUJ1ZmZlci0+UmVsZWFzZSgpOworICAgICAgICBtQnVmZmVyID0gTlVMTDsKKyAgICB9CisK
KyAgICB1cGRhdGVTZXJpYWwoKTsKKworICAgIGlmIChidWZmZXJTaXplID4gMCkKKyAgICB7Cisg
ICAgICAgIElEM0QxMURldmljZSogZHhEZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwor
CisgICAgICAgIEQzRDExX0JVRkZFUl9ERVNDIGJ1ZmZlckRlc2M7CisgICAgICAgIGJ1ZmZlckRl
c2MuQnl0ZVdpZHRoID0gYnVmZmVyU2l6ZTsKKyAgICAgICAgYnVmZmVyRGVzYy5Vc2FnZSA9IEQz
RDExX1VTQUdFX0RZTkFNSUM7CisgICAgICAgIGJ1ZmZlckRlc2MuQmluZEZsYWdzID0gRDNEMTFf
QklORF9JTkRFWF9CVUZGRVI7CisgICAgICAgIGJ1ZmZlckRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBE
M0QxMV9DUFVfQUNDRVNTX1dSSVRFOworICAgICAgICBidWZmZXJEZXNjLk1pc2NGbGFncyA9IDA7
CisgICAgICAgIGJ1ZmZlckRlc2MuU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7CisKKyAgICAgICAg
SFJFU1VMVCByZXN1bHQgPSBkeERldmljZS0+Q3JlYXRlQnVmZmVyKCZidWZmZXJEZXNjLCBOVUxM
LCAmbUJ1ZmZlcik7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgbUJ1ZmZlclNp
emUgPSBidWZmZXJTaXplOworICAgIG1JbmRleFR5cGUgPSBpbmRleFR5cGU7CisgICAgbUR5bmFt
aWNVc2FnZSA9IGR5bmFtaWM7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSW5kZXhCdWZmZXIx
MSAqSW5kZXhCdWZmZXIxMTo6bWFrZUluZGV4QnVmZmVyMTEoSW5kZXhCdWZmZXIgKmluZGV4QnVm
ZmVyKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKEluZGV4QnVmZmVyMTEqLCBpbmRl
eEJ1ZmZlcikpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbmRleEJ1ZmZlcjExKj4oaW5kZXhC
dWZmZXIpOworfQorCitib29sIEluZGV4QnVmZmVyMTE6Om1hcEJ1ZmZlcih1bnNpZ25lZCBpbnQg
b2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSwgdm9pZCoqIG91dE1hcHBlZE1lbW9yeSkKK3sKKyAg
ICBpZiAobUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmIChvZmZzZXQgKyBzaXplID4gbUJ1ZmZl
clNpemUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiSW5kZXggYnVmZmVyIG1hcCByYW5n
ZSBpcyBub3QgaW5zaWRlIHRoZSBidWZmZXIuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKworICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkeENvbnRleHQgPSBt
UmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKKworICAgICAgICBEM0QxMV9NQVBQRURfU1VC
UkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZHhDb250
ZXh0LT5NYXAobUJ1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRFX05PX09WRVJXUklURSwgMCwgJm1h
cHBlZFJlc291cmNlKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBFUlIoIkluZGV4IGJ1ZmZlciBtYXAgZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4
IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAg
ICAgICpvdXRNYXBwZWRNZW1vcnkgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihtYXBwZWRSZXNv
dXJjZS5wRGF0YSkgKyBvZmZzZXQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICBFUlIoIkluZGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgSW5kZXhCdWZmZXIxMTo6
dW5tYXBCdWZmZXIoKQoreworICAgIGlmIChtQnVmZmVyKQorICAgIHsKKyAgICAgICAgSUQzRDEx
RGV2aWNlQ29udGV4dCAqZHhDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7
CisgICAgICAgIGR4Q29udGV4dC0+VW5tYXAobUJ1ZmZlciwgMCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBFUlIoIkluZGV4IGJ1ZmZlciBu
b3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK0dM
ZW51bSBJbmRleEJ1ZmZlcjExOjpnZXRJbmRleFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBt
SW5kZXhUeXBlOworfQorCit1bnNpZ25lZCBpbnQgSW5kZXhCdWZmZXIxMTo6Z2V0QnVmZmVyU2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1CdWZmZXJTaXplOworfQorCitib29sIEluZGV4QnVm
ZmVyMTE6OnNldFNpemUodW5zaWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUp
Cit7CisgICAgaWYgKGJ1ZmZlclNpemUgPiBtQnVmZmVyU2l6ZSB8fCBpbmRleFR5cGUgIT0gbUlu
ZGV4VHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBpbml0aWFsaXplKGJ1ZmZlclNpemUsIGlu
ZGV4VHlwZSwgbUR5bmFtaWNVc2FnZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KK30KKworYm9vbCBJbmRleEJ1ZmZlcjExOjpkaXNjYXJkKCkK
K3sKKyAgICBpZiAobUJ1ZmZlcikKKyAgICB7CisgICAgICAgIElEM0QxMURldmljZUNvbnRleHQg
KmR4Q29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOworCisgICAgICAgIEQz
RDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKKyAgICAgICAgSFJFU1VMVCBy
ZXN1bHQgPSBkeENvbnRleHQtPk1hcChtQnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FS
RCwgMCwgJm1hcHBlZFJlc291cmNlKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAg
ICAgICB7CisgICAgICAgICAgICBFUlIoIkluZGV4IGJ1ZmZlciBtYXAgZmFpbGVkIHdpdGggZXJy
b3IgMHglMDh4IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorCisgICAgICAgIGR4Q29udGV4dC0+VW5tYXAobUJ1ZmZlciwgMCk7CisKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEVSUigiSW5kZXggYnVm
ZmVyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
KworRFhHSV9GT1JNQVQgSW5kZXhCdWZmZXIxMTo6Z2V0SW5kZXhGb3JtYXQoKSBjb25zdAorewor
ICAgIHN3aXRjaCAobUluZGV4VHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6ICAgIHJldHVybiBEWEdJX0ZPUk1BVF9SMTZfVUlOVDsKKyAgICAgIGNhc2UgR0xfVU5TSUdO
RURfU0hPUlQ6ICAgcmV0dXJuIERYR0lfRk9STUFUX1IxNl9VSU5UOworICAgICAgY2FzZSBHTF9V
TlNJR05FRF9JTlQ6ICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjMyX1VJTlQ7CisgICAgICBkZWZh
dWx0OiBVTlJFQUNIQUJMRSgpOyAgIHJldHVybiBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAgIH0K
K30KKworSUQzRDExQnVmZmVyICpJbmRleEJ1ZmZlcjExOjpnZXRCdWZmZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBtQnVmZmVyOworfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRl
eEJ1ZmZlcjExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjExLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEluZGV4QnVm
ZmVyMTEuaDogRGVmaW5lcyB0aGUgRDNEMTEgSW5kZXhCdWZmZXIgaW1wbGVtZW50YXRpb24uCisK
KyNpZm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX0lOREVYQlVGRkVSMTFfSF8KKyNkZWZpbmUgTElC
R0xFU1YyX1JFTkRFUkVSX0lOREVYQlVGRkVSMTFfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9y
ZW5kZXJlci9JbmRleEJ1ZmZlci5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVy
MTE7CisKK2NsYXNzIEluZGV4QnVmZmVyMTEgOiBwdWJsaWMgSW5kZXhCdWZmZXIKK3sKKyAgcHVi
bGljOgorICAgIGV4cGxpY2l0IEluZGV4QnVmZmVyMTEoUmVuZGVyZXIxMSAqY29uc3QgcmVuZGVy
ZXIpOworICAgIHZpcnR1YWwgfkluZGV4QnVmZmVyMTEoKTsKKworICAgIHZpcnR1YWwgYm9vbCBp
bml0aWFsaXplKHVuc2lnbmVkIGludCBidWZmZXJTaXplLCBHTGVudW0gaW5kZXhUeXBlLCBib29s
IGR5bmFtaWMpOworCisgICAgc3RhdGljIEluZGV4QnVmZmVyMTEgKm1ha2VJbmRleEJ1ZmZlcjEx
KEluZGV4QnVmZmVyICppbmRleEJ1ZmZlcik7CisKKyAgICB2aXJ0dWFsIGJvb2wgbWFwQnVmZmVy
KHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFwcGVk
TWVtb3J5KTsKKyAgICB2aXJ0dWFsIGJvb2wgdW5tYXBCdWZmZXIoKTsKKworICAgIHZpcnR1YWwg
R0xlbnVtIGdldEluZGV4VHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdl
dEJ1ZmZlclNpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCBp
bnQgYnVmZmVyU2l6ZSwgR0xlbnVtIGluZGV4VHlwZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgZGlz
Y2FyZCgpOworCisgICAgRFhHSV9GT1JNQVQgZ2V0SW5kZXhGb3JtYXQoKSBjb25zdDsKKyAgICBJ
RDNEMTFCdWZmZXIgKmdldEJ1ZmZlcigpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKEluZGV4QnVmZmVyMTEpOworCisgICAgcng6OlJlbmRlcmVyMTEg
KmNvbnN0IG1SZW5kZXJlcjsKKworICAgIElEM0QxMUJ1ZmZlciAqbUJ1ZmZlcjsKKyAgICB1bnNp
Z25lZCBpbnQgbUJ1ZmZlclNpemU7CisgICAgR0xlbnVtIG1JbmRleFR5cGU7CisgICAgYm9vbCBt
RHluYW1pY1VzYWdlOworfTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0lO
REVYQlVGRkVSMTFfSF8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL0luZGV4QnVmZmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXIuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIwMyBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBJbmRleEJ1ZmZlci5jcHA6IERlZmluZXMgdGhlIGFic3RyYWN0IEluZGV4QnVm
ZmVyIGNsYXNzIGFuZCBJbmRleEJ1ZmZlckludGVyZmFjZQorLy8gY2xhc3Mgd2l0aCBkZXJpdmF0
aW9ucywgY2xhc3NlcyB0aGF0IHBlcmZvcm0gZ3JhcGhpY3MgQVBJIGFnbm9zdGljIGluZGV4IGJ1
ZmZlciBvcGVyYXRpb25zLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVm
ZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgiCisKK25hbWVz
cGFjZSByeAoreworCit1bnNpZ25lZCBpbnQgSW5kZXhCdWZmZXI6Om1OZXh0U2VyaWFsID0gMTsK
KworSW5kZXhCdWZmZXI6OkluZGV4QnVmZmVyKCkKK3sKKyAgICB1cGRhdGVTZXJpYWwoKTsKK30K
KworSW5kZXhCdWZmZXI6On5JbmRleEJ1ZmZlcigpCit7Cit9CisKK3Vuc2lnbmVkIGludCBJbmRl
eEJ1ZmZlcjo6Z2V0U2VyaWFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNlcmlhbDsKK30KKwor
dm9pZCBJbmRleEJ1ZmZlcjo6dXBkYXRlU2VyaWFsKCkKK3sKKyAgICBtU2VyaWFsID0gbU5leHRT
ZXJpYWwrKzsKK30KKworCitJbmRleEJ1ZmZlckludGVyZmFjZTo6SW5kZXhCdWZmZXJJbnRlcmZh
Y2UoUmVuZGVyZXIgKnJlbmRlcmVyLCBib29sIGR5bmFtaWMpIDogbVJlbmRlcmVyKHJlbmRlcmVy
KQoreworICAgIG1JbmRleEJ1ZmZlciA9IHJlbmRlcmVyLT5jcmVhdGVJbmRleEJ1ZmZlcigpOwor
CisgICAgbUR5bmFtaWMgPSBkeW5hbWljOworICAgIG1Xcml0ZVBvc2l0aW9uID0gMDsKK30KKwor
SW5kZXhCdWZmZXJJbnRlcmZhY2U6On5JbmRleEJ1ZmZlckludGVyZmFjZSgpCit7CisgICAgaWYg
KG1JbmRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtSW5kZXhCdWZmZXI7CisgICAg
fQorfQorCitHTGVudW0gSW5kZXhCdWZmZXJJbnRlcmZhY2U6OmdldEluZGV4VHlwZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1JbmRleEJ1ZmZlci0+Z2V0SW5kZXhUeXBlKCk7Cit9CisKK3Vuc2ln
bmVkIGludCBJbmRleEJ1ZmZlckludGVyZmFjZTo6Z2V0QnVmZmVyU2l6ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1JbmRleEJ1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpOworfQorCit1bnNpZ25lZCBp
bnQgSW5kZXhCdWZmZXJJbnRlcmZhY2U6OmdldFNlcmlhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1JbmRleEJ1ZmZlci0+Z2V0U2VyaWFsKCk7Cit9CisKK2ludCBJbmRleEJ1ZmZlckludGVyZmFj
ZTo6bWFwQnVmZmVyKHVuc2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFwcGVkTWVtb3J5KQor
eworICAgIGlmICghbUluZGV4QnVmZmVyLT5tYXBCdWZmZXIobVdyaXRlUG9zaXRpb24sIHNpemUs
IG91dE1hcHBlZE1lbW9yeSkpCisgICAgeworICAgICAgICAqb3V0TWFwcGVkTWVtb3J5ID0gTlVM
TDsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGludCBvbGRXcml0ZVBvcyA9IHN0
YXRpY19jYXN0PGludD4obVdyaXRlUG9zaXRpb24pOworICAgIG1Xcml0ZVBvc2l0aW9uICs9IHNp
emU7CisKKyAgICByZXR1cm4gb2xkV3JpdGVQb3M7Cit9CisKK2Jvb2wgSW5kZXhCdWZmZXJJbnRl
cmZhY2U6OnVubWFwQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbUluZGV4QnVmZmVyLT51bm1hcEJ1
ZmZlcigpOworfQorCitJbmRleEJ1ZmZlciAqIEluZGV4QnVmZmVySW50ZXJmYWNlOjpnZXRJbmRl
eEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbmRleEJ1ZmZlcjsKK30KKwordW5zaWdu
ZWQgaW50IEluZGV4QnVmZmVySW50ZXJmYWNlOjpnZXRXcml0ZVBvc2l0aW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbVdyaXRlUG9zaXRpb247Cit9CisKK3ZvaWQgSW5kZXhCdWZmZXJJbnRlcmZh
Y2U6OnNldFdyaXRlUG9zaXRpb24odW5zaWduZWQgaW50IHdyaXRlUG9zaXRpb24pCit7CisgICAg
bVdyaXRlUG9zaXRpb24gPSB3cml0ZVBvc2l0aW9uOworfQorCitib29sIEluZGV4QnVmZmVySW50
ZXJmYWNlOjpkaXNjYXJkKCkKK3sKKyAgICByZXR1cm4gbUluZGV4QnVmZmVyLT5kaXNjYXJkKCk7
Cit9CisKK2Jvb2wgSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnNldEJ1ZmZlclNpemUodW5zaWduZWQg
aW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUpCit7CisgICAgaWYgKG1JbmRleEJ1ZmZl
ci0+Z2V0QnVmZmVyU2l6ZSgpID09IDApCisgICAgeworICAgICAgICByZXR1cm4gbUluZGV4QnVm
ZmVyLT5pbml0aWFsaXplKGJ1ZmZlclNpemUsIGluZGV4VHlwZSwgbUR5bmFtaWMpOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gbUluZGV4QnVmZmVyLT5zZXRTaXplKGJ1
ZmZlclNpemUsIGluZGV4VHlwZSk7CisgICAgfQorfQorCitTdHJlYW1pbmdJbmRleEJ1ZmZlcklu
dGVyZmFjZTo6U3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2UoUmVuZGVyZXIgKnJlbmRlcmVy
KSA6IEluZGV4QnVmZmVySW50ZXJmYWNlKHJlbmRlcmVyLCB0cnVlKQoreworfQorCitTdHJlYW1p
bmdJbmRleEJ1ZmZlckludGVyZmFjZTo6flN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlKCkK
K3sKK30KKworYm9vbCBTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2ZUJ1ZmZl
clNwYWNlKHVuc2lnbmVkIGludCBzaXplLCBHTGVudW0gaW5kZXhUeXBlKQoreworICAgIGJvb2wg
cmVzdWx0ID0gdHJ1ZTsKKyAgICB1bnNpZ25lZCBpbnQgY3VyQnVmZmVyU2l6ZSA9IGdldEJ1ZmZl
clNpemUoKTsKKyAgICB1bnNpZ25lZCBpbnQgd3JpdGVQb3MgPSBnZXRXcml0ZVBvc2l0aW9uKCk7
CisgICAgaWYgKHNpemUgPiBjdXJCdWZmZXJTaXplKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0g
c2V0QnVmZmVyU2l6ZShzdGQ6Om1heChzaXplLCAyICogY3VyQnVmZmVyU2l6ZSksIGluZGV4VHlw
ZSk7CisgICAgICAgIHNldFdyaXRlUG9zaXRpb24oMCk7CisgICAgfQorICAgIGVsc2UgaWYgKHdy
aXRlUG9zICsgc2l6ZSA+IGN1ckJ1ZmZlclNpemUgfHwgd3JpdGVQb3MgKyBzaXplIDwgd3JpdGVQ
b3MpCisgICAgeworICAgICAgICBpZiAoIWRpc2NhcmQoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHNldFdyaXRlUG9zaXRpb24oMCk7
CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitTdGF0aWNJbmRleEJ1ZmZlcklu
dGVyZmFjZTo6U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UoUmVuZGVyZXIgKnJlbmRlcmVyKSA6
IEluZGV4QnVmZmVySW50ZXJmYWNlKHJlbmRlcmVyLCBmYWxzZSkKK3sKK30KKworU3RhdGljSW5k
ZXhCdWZmZXJJbnRlcmZhY2U6On5TdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSgpCit7Cit9CisK
K2Jvb2wgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2VydmVCdWZmZXJTcGFjZSh1bnNp
Z25lZCBpbnQgc2l6ZSwgR0xlbnVtIGluZGV4VHlwZSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgY3Vy
U2l6ZSA9IGdldEJ1ZmZlclNpemUoKTsKKyAgICBpZiAoY3VyU2l6ZSA9PSAwKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHNldEJ1ZmZlclNpemUoc2l6ZSwgaW5kZXhUeXBlKTsKKyAgICB9CisgICAg
ZWxzZSBpZiAoY3VyU2l6ZSA+PSBzaXplICYmIGluZGV4VHlwZSA9PSBnZXRJbmRleFR5cGUoKSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBFUlIoIlN0YXRpYyBpbmRleCBidWZmZXJzIGNhbid0IGJlIHJlc2l6ZWQiKTsKKyAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordW5z
aWduZWQgaW50IFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlOjpsb29rdXBSYW5nZShpbnRwdHJf
dCBvZmZzZXQsIEdMc2l6ZWkgY291bnQsIHVuc2lnbmVkIGludCAqbWluSW5kZXgsIHVuc2lnbmVk
IGludCAqbWF4SW5kZXgpCit7CisgICAgSW5kZXhSYW5nZSByYW5nZSA9IHtvZmZzZXQsIGNvdW50
fTsKKworICAgIHN0ZDo6bWFwPEluZGV4UmFuZ2UsIEluZGV4UmVzdWx0Pjo6aXRlcmF0b3IgcmVz
ID0gbUNhY2hlLmZpbmQocmFuZ2UpOworCisgICAgaWYgKHJlcyA9PSBtQ2FjaGUuZW5kKCkpCisg
ICAgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgKm1pbkluZGV4ID0gcmVzLT5z
ZWNvbmQubWluSW5kZXg7CisgICAgKm1heEluZGV4ID0gcmVzLT5zZWNvbmQubWF4SW5kZXg7Cisg
ICAgcmV0dXJuIHJlcy0+c2Vjb25kLnN0cmVhbU9mZnNldDsKK30KKwordm9pZCBTdGF0aWNJbmRl
eEJ1ZmZlckludGVyZmFjZTo6YWRkUmFuZ2UoaW50cHRyX3Qgb2Zmc2V0LCBHTHNpemVpIGNvdW50
LCB1bnNpZ25lZCBpbnQgbWluSW5kZXgsIHVuc2lnbmVkIGludCBtYXhJbmRleCwgdW5zaWduZWQg
aW50IHN0cmVhbU9mZnNldCkKK3sKKyAgICBJbmRleFJhbmdlIGluZGV4UmFuZ2UgPSB7b2Zmc2V0
LCBjb3VudH07CisgICAgSW5kZXhSZXN1bHQgaW5kZXhSZXN1bHQgPSB7bWluSW5kZXgsIG1heElu
ZGV4LCBzdHJlYW1PZmZzZXR9OworICAgIG1DYWNoZVtpbmRleFJhbmdlXSA9IGluZGV4UmVzdWx0
OworfQorCit9CisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvSW5kZXhCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVm
ZmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM3IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBJbmRleEJ1ZmZlci5oOiBEZWZpbmVzIHRoZSBhYnN0cmFjdCBJbmRleEJ1ZmZlciBjbGFz
cyBhbmQgSW5kZXhCdWZmZXJJbnRlcmZhY2UKKy8vIGNsYXNzIHdpdGggZGVyaXZhdGlvbnMsIGNs
YXNzZXMgdGhhdCBwZXJmb3JtIGdyYXBoaWNzIEFQSSBhZ25vc3RpYyBpbmRleCBidWZmZXIgb3Bl
cmF0aW9ucy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfSU5ERVhCVUZGRVJfSF8KKyNk
ZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX0lOREVYQlVGRkVSX0hfCisKKyNpbmNsdWRlICJjb21t
b24vYW5nbGV1dGlscy5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOworCitj
bGFzcyBJbmRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgSW5kZXhCdWZmZXIoKTsKKyAgICB2
aXJ0dWFsIH5JbmRleEJ1ZmZlcigpOworCisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUodW5z
aWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUsIGJvb2wgZHluYW1pYykgPSAw
OworCisgICAgdmlydHVhbCBib29sIG1hcEJ1ZmZlcih1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNp
Z25lZCBpbnQgc2l6ZSwgdm9pZCoqIG91dE1hcHBlZE1lbW9yeSkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCB1bm1hcEJ1ZmZlcigpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBkaXNjYXJkKCkgPSAw
OworCisgICAgdmlydHVhbCBHTGVudW0gZ2V0SW5kZXhUeXBlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdW5zaWduZWQgaW50IGdldEJ1ZmZlclNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIHNldFNpemUodW5zaWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUp
ID0gMDsKKworICAgIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKKworICBwcm90ZWN0
ZWQ6CisgICAgdm9pZCB1cGRhdGVTZXJpYWwoKTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTihJbmRleEJ1ZmZlcik7CisKKyAgICB1bnNpZ25lZCBpbnQgbVNlcmlh
bDsKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IG1OZXh0U2VyaWFsOworfTsKKworY2xhc3MgSW5k
ZXhCdWZmZXJJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIEluZGV4QnVmZmVySW50ZXJmYWNl
KFJlbmRlcmVyICpyZW5kZXJlciwgYm9vbCBkeW5hbWljKTsKKyAgICB2aXJ0dWFsIH5JbmRleEJ1
ZmZlckludGVyZmFjZSgpOworCisgICAgdmlydHVhbCBib29sIHJlc2VydmVCdWZmZXJTcGFjZSh1
bnNpZ25lZCBpbnQgc2l6ZSwgR0xlbnVtIGluZGV4VHlwZSkgPSAwOworCisgICAgR0xlbnVtIGdl
dEluZGV4VHlwZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGludCBnZXRCdWZmZXJTaXplKCkgY29u
c3Q7CisKKyAgICB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CisKKyAgICBpbnQgbWFw
QnVmZmVyKHVuc2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFwcGVkTWVtb3J5KTsKKyAgICBi
b29sIHVubWFwQnVmZmVyKCk7CisKKyAgICBJbmRleEJ1ZmZlciAqZ2V0SW5kZXhCdWZmZXIoKSBj
b25zdDsKKworICBwcm90ZWN0ZWQ6CisgICAgdW5zaWduZWQgaW50IGdldFdyaXRlUG9zaXRpb24o
KSBjb25zdDsKKyAgICB2b2lkIHNldFdyaXRlUG9zaXRpb24odW5zaWduZWQgaW50IHdyaXRlUG9z
aXRpb24pOworCisgICAgYm9vbCBkaXNjYXJkKCk7CisKKyAgICBib29sIHNldEJ1ZmZlclNpemUo
dW5zaWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUpOworCisgIHByaXZhdGU6
CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEluZGV4QnVmZmVySW50ZXJmYWNlKTsKKwor
ICAgIHJ4OjpSZW5kZXJlciAqY29uc3QgbVJlbmRlcmVyOworCisgICAgSW5kZXhCdWZmZXIqIG1J
bmRleEJ1ZmZlcjsKKworICAgIHVuc2lnbmVkIGludCBtV3JpdGVQb3NpdGlvbjsKKyAgICBib29s
IG1EeW5hbWljOworfTsKKworY2xhc3MgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2UgOiBw
dWJsaWMgSW5kZXhCdWZmZXJJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIFN0cmVhbWluZ0lu
ZGV4QnVmZmVySW50ZXJmYWNlKFJlbmRlcmVyICpyZW5kZXJlcik7CisgICAgflN0cmVhbWluZ0lu
ZGV4QnVmZmVySW50ZXJmYWNlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgcmVzZXJ2ZUJ1ZmZlclNw
YWNlKHVuc2lnbmVkIGludCBzaXplLCBHTGVudW0gaW5kZXhUeXBlKTsKK307CisKK2NsYXNzIFN0
YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlIDogcHVibGljIEluZGV4QnVmZmVySW50ZXJmYWNlCit7
CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZShSZW5k
ZXJlciAqcmVuZGVyZXIpOworICAgIH5TdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSgpOworCisg
ICAgdmlydHVhbCBib29sIHJlc2VydmVCdWZmZXJTcGFjZSh1bnNpZ25lZCBpbnQgc2l6ZSwgR0xl
bnVtIGluZGV4VHlwZSk7CisKKyAgICB1bnNpZ25lZCBpbnQgbG9va3VwUmFuZ2UoaW50cHRyX3Qg
b2Zmc2V0LCBHTHNpemVpIGNvdW50LCB1bnNpZ25lZCBpbnQgKm1pbkluZGV4LCB1bnNpZ25lZCBp
bnQgKm1heEluZGV4KTsgICAvLyBSZXR1cm5zIHRoZSBvZmZzZXQgaW50byB0aGUgaW5kZXggYnVm
ZmVyLCBvciAtMSBpZiBub3QgZm91bmQKKyAgICB2b2lkIGFkZFJhbmdlKGludHB0cl90IG9mZnNl
dCwgR0xzaXplaSBjb3VudCwgdW5zaWduZWQgaW50IG1pbkluZGV4LCB1bnNpZ25lZCBpbnQgbWF4
SW5kZXgsIHVuc2lnbmVkIGludCBzdHJlYW1PZmZzZXQpOworCisgIHByaXZhdGU6CisgICAgc3Ry
dWN0IEluZGV4UmFuZ2UKKyAgICB7CisgICAgICAgIGludHB0cl90IG9mZnNldDsKKyAgICAgICAg
R0xzaXplaSBjb3VudDsKKworICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBJbmRleFJhbmdl
JiByaHMpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChvZmZzZXQgIT0gcmhzLm9m
ZnNldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0IDwgcmhz
Lm9mZnNldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb3VudCAhPSByaHMuY291
bnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50IDwgcmhzLmNv
dW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfTsKKworICAgIHN0cnVjdCBJbmRleFJlc3VsdAorICAgIHsKKyAgICAgICAgdW5zaWdu
ZWQgaW50IG1pbkluZGV4OworICAgICAgICB1bnNpZ25lZCBpbnQgbWF4SW5kZXg7CisgICAgICAg
IHVuc2lnbmVkIGludCBzdHJlYW1PZmZzZXQ7CisgICAgfTsKKworICAgIHN0ZDo6bWFwPEluZGV4
UmFuZ2UsIEluZGV4UmVzdWx0PiBtQ2FjaGU7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVT
VjJfUkVOREVSRVJfSU5ERVhCVUZGRVJfSF8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4
RGF0YU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0
YU1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxNiBAQAorI2luY2x1ZGUgInBy
ZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbmRleERhdGFNYW5hZ2VyLmNw
cDogRGVmaW5lcyB0aGUgSW5kZXhEYXRhTWFuYWdlciwgYSBjbGFzcyB0aGF0CisvLyBydW5zIHRo
ZSBCdWZmZXIgdHJhbnNsYXRpb24gcHJvY2VzcyBmb3IgaW5kZXggYnVmZmVycy4KKworI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2UuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9C
dWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5oIgorCituYW1lc3BhY2UgcngKK3sKKworSW5kZXhEYXRh
TWFuYWdlcjo6SW5kZXhEYXRhTWFuYWdlcihSZW5kZXJlciAqcmVuZGVyZXIpIDogbVJlbmRlcmVy
KHJlbmRlcmVyKQoreworICAgIG1TdHJlYW1pbmdCdWZmZXJTaG9ydCA9IG5ldyBTdHJlYW1pbmdJ
bmRleEJ1ZmZlckludGVyZmFjZShtUmVuZGVyZXIpOworICAgIGlmICghbVN0cmVhbWluZ0J1ZmZl
clNob3J0LT5yZXNlcnZlQnVmZmVyU3BhY2UoSU5JVElBTF9JTkRFWF9CVUZGRVJfU0laRSwgR0xf
VU5TSUdORURfU0hPUlQpKQorICAgIHsKKyAgICAgICAgZGVsZXRlIG1TdHJlYW1pbmdCdWZmZXJT
aG9ydDsKKyAgICAgICAgbVN0cmVhbWluZ0J1ZmZlclNob3J0ID0gTlVMTDsKKyAgICB9CisKKyAg
ICBtU3RyZWFtaW5nQnVmZmVySW50ID0gbmV3IFN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNl
KG1SZW5kZXJlcik7CisgICAgaWYgKCFtU3RyZWFtaW5nQnVmZmVySW50LT5yZXNlcnZlQnVmZmVy
U3BhY2UoSU5JVElBTF9JTkRFWF9CVUZGRVJfU0laRSwgR0xfVU5TSUdORURfSU5UKSkKKyAgICB7
CisgICAgICAgIGRlbGV0ZSBtU3RyZWFtaW5nQnVmZmVySW50OworICAgICAgICBtU3RyZWFtaW5n
QnVmZmVySW50ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIW1TdHJlYW1pbmdCdWZmZXJTaG9y
dCkKKyAgICB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSBib3RoIGJ1ZmZlcnMgYXJlIGRlbGV0ZWQu
CisgICAgICAgIGRlbGV0ZSBtU3RyZWFtaW5nQnVmZmVySW50OworICAgICAgICBtU3RyZWFtaW5n
QnVmZmVySW50ID0gTlVMTDsKKworICAgICAgICBFUlIoIkZhaWxlZCB0byBhbGxvY2F0ZSB0aGUg
c3RyZWFtaW5nIGluZGV4IGJ1ZmZlcihzKS4iKTsKKyAgICB9CisKKyAgICBtQ291bnRpbmdCdWZm
ZXIgPSBOVUxMOworfQorCitJbmRleERhdGFNYW5hZ2VyOjp+SW5kZXhEYXRhTWFuYWdlcigpCit7
CisgICAgZGVsZXRlIG1TdHJlYW1pbmdCdWZmZXJTaG9ydDsKKyAgICBkZWxldGUgbVN0cmVhbWlu
Z0J1ZmZlckludDsKKyAgICBkZWxldGUgbUNvdW50aW5nQnVmZmVyOworfQorCitzdGF0aWMgdW5z
aWduZWQgaW50IGluZGV4VHlwZVNpemUoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
KQorICAgIHsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOiAgIHJldHVybiBzaXplb2YoR0x1
aW50KTsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6IHJldHVybiBzaXplb2YoR0x1c2hv
cnQpOworICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAgcmV0dXJuIHNpemVvZihHTHVieXRl
KTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IHJldHVybiBzaXplb2YoR0x1c2hvcnQp
OworICAgIH0KK30KKworc3RhdGljIHZvaWQgY29udmVydEluZGljZXMoR0xlbnVtIHR5cGUsIGNv
bnN0IHZvaWQgKmlucHV0LCBHTHNpemVpIGNvdW50LCB2b2lkICpvdXRwdXQpCit7CisgICAgaWYg
KHR5cGUgPT0gR0xfVU5TSUdORURfQllURSkKKyAgICB7CisgICAgICAgIGNvbnN0IEdMdWJ5dGUg
KmluID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KGlucHV0KTsKKyAgICAgICAgR0x1c2hv
cnQgKm91dCA9IHN0YXRpY19jYXN0PEdMdXNob3J0Kj4ob3V0cHV0KTsKKworICAgICAgICBmb3Ig
KEdMc2l6ZWkgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBv
dXRbaV0gPSBpbltpXTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh0eXBlID09IEdM
X1VOU0lHTkVEX0lOVCkKKyAgICB7CisgICAgICAgIG1lbWNweShvdXRwdXQsIGlucHV0LCBjb3Vu
dCAqIHNpemVvZihHTHVpbnQpKTsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSBHTF9VTlNJ
R05FRF9TSE9SVCkKKyAgICB7CisgICAgICAgIG1lbWNweShvdXRwdXQsIGlucHV0LCBjb3VudCAq
IHNpemVvZihHTHVzaG9ydCkpOworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Cit9CisK
K3RlbXBsYXRlIDxjbGFzcyBJbmRleFR5cGU+CitzdGF0aWMgdm9pZCBjb21wdXRlUmFuZ2UoY29u
c3QgSW5kZXhUeXBlICppbmRpY2VzLCBHTHNpemVpIGNvdW50LCBHTHVpbnQgKm1pbkluZGV4LCBH
THVpbnQgKm1heEluZGV4KQoreworICAgICptaW5JbmRleCA9IGluZGljZXNbMF07CisgICAgKm1h
eEluZGV4ID0gaW5kaWNlc1swXTsKKworICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IGNvdW50
OyBpKyspCisgICAgeworICAgICAgICBpZiAoKm1pbkluZGV4ID4gaW5kaWNlc1tpXSkgKm1pbklu
ZGV4ID0gaW5kaWNlc1tpXTsKKyAgICAgICAgaWYgKCptYXhJbmRleCA8IGluZGljZXNbaV0pICpt
YXhJbmRleCA9IGluZGljZXNbaV07CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBjb21wdXRlUmFu
Z2UoR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgR0xzaXplaSBjb3VudCwgR0x1
aW50ICptaW5JbmRleCwgR0x1aW50ICptYXhJbmRleCkKK3sKKyAgICBpZiAodHlwZSA9PSBHTF9V
TlNJR05FRF9CWVRFKQorICAgIHsKKyAgICAgICAgY29tcHV0ZVJhbmdlKHN0YXRpY19jYXN0PGNv
bnN0IEdMdWJ5dGUqPihpbmRpY2VzKSwgY291bnQsIG1pbkluZGV4LCBtYXhJbmRleCk7CisgICAg
fQorICAgIGVsc2UgaWYgKHR5cGUgPT0gR0xfVU5TSUdORURfSU5UKQorICAgIHsKKyAgICAgICAg
Y29tcHV0ZVJhbmdlKHN0YXRpY19jYXN0PGNvbnN0IEdMdWludCo+KGluZGljZXMpLCBjb3VudCwg
bWluSW5kZXgsIG1heEluZGV4KTsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSBHTF9VTlNJ
R05FRF9TSE9SVCkKKyAgICB7CisgICAgICAgIGNvbXB1dGVSYW5nZShzdGF0aWNfY2FzdDxjb25z
dCBHTHVzaG9ydCo+KGluZGljZXMpLCBjb3VudCwgbWluSW5kZXgsIG1heEluZGV4KTsKKyAgICB9
CisgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworfQorCitHTGVudW0gSW5kZXhEYXRhTWFuYWdlcjo6
cHJlcGFyZUluZGV4RGF0YShHTGVudW0gdHlwZSwgR0xzaXplaSBjb3VudCwgZ2w6OkJ1ZmZlciAq
YnVmZmVyLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIFRyYW5zbGF0ZWRJbmRleERhdGEgKnRyYW5z
bGF0ZWQpCit7CisgICAgaWYgKCFtU3RyZWFtaW5nQnVmZmVyU2hvcnQpCisgICAgeworICAgICAg
ICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICB9CisKKyAgICBHTGVudW0gZGVzdGluYXRp
b25JbmRleFR5cGUgPSAodHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpID8gR0xfVU5TSUdORURfSU5U
IDogR0xfVU5TSUdORURfU0hPUlQ7CisgICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4oaW5kaWNlcyk7CisgICAgYm9vbCBhbGlnbmVkT2Zmc2V0ID0gZmFsc2U7
CisKKyAgICBCdWZmZXJTdG9yYWdlICpzdG9yYWdlID0gTlVMTDsKKworICAgIGlmIChidWZmZXIg
IT0gTlVMTCkKKyAgICB7CisgICAgICAgIHN0b3JhZ2UgPSBidWZmZXItPmdldFN0b3JhZ2UoKTsK
KworICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX0JZVEU6ICBhbGlnbmVkT2Zmc2V0ID0gKG9mZnNldCAlIHNpemVvZihHTHVieXRlKSA9
PSAwKTsgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6IGFsaWduZWRP
ZmZzZXQgPSAob2Zmc2V0ICUgc2l6ZW9mKEdMdXNob3J0KSA9PSAwKTsgYnJlYWs7CisgICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6ICAgYWxpZ25lZE9mZnNldCA9IChvZmZzZXQgJSBzaXpl
b2YoR0x1aW50KSA9PSAwKTsgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJM
RSgpOyBhbGlnbmVkT2Zmc2V0ID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW5k
ZXhUeXBlU2l6ZSh0eXBlKSAqIGNvdW50ICsgb2Zmc2V0ID4gc3RvcmFnZS0+Z2V0U2l6ZSgpKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9PUEVSQVRJT047CisgICAg
ICAgIH0KKworICAgICAgICBpbmRpY2VzID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KHN0
b3JhZ2UtPmdldERhdGEoKSkgKyBvZmZzZXQ7CisgICAgfQorCisgICAgU3RyZWFtaW5nSW5kZXhC
dWZmZXJJbnRlcmZhY2UgKnN0cmVhbWluZ0J1ZmZlciA9ICh0eXBlID09IEdMX1VOU0lHTkVEX0lO
VCkgPyBtU3RyZWFtaW5nQnVmZmVySW50IDogbVN0cmVhbWluZ0J1ZmZlclNob3J0OworCisgICAg
U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZl
ci0+Z2V0U3RhdGljSW5kZXhCdWZmZXIoKSA6IE5VTEw7CisgICAgSW5kZXhCdWZmZXJJbnRlcmZh
Y2UgKmluZGV4QnVmZmVyID0gc3RyZWFtaW5nQnVmZmVyOworICAgIGJvb2wgZGlyZWN0U3RvcmFn
ZSA9IGFsaWduZWRPZmZzZXQgJiYgc3RvcmFnZSAmJiBzdG9yYWdlLT5zdXBwb3J0c0RpcmVjdEJp
bmRpbmcoKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uSW5kZXhUeXBl
ID09IHR5cGU7CisgICAgVUlOVCBzdHJlYW1PZmZzZXQgPSAwOworCisgICAgaWYgKGRpcmVjdFN0
b3JhZ2UpCisgICAgeworICAgICAgICBpbmRleEJ1ZmZlciA9IHN0cmVhbWluZ0J1ZmZlcjsKKyAg
ICAgICAgc3RyZWFtT2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICBzdG9yYWdlLT5tYXJrQnVmZmVy
VXNhZ2UoKTsKKyAgICAgICAgY29tcHV0ZVJhbmdlKHR5cGUsIGluZGljZXMsIGNvdW50LCAmdHJh
bnNsYXRlZC0+bWluSW5kZXgsICZ0cmFuc2xhdGVkLT5tYXhJbmRleCk7CisgICAgfQorICAgIGVs
c2UgaWYgKHN0YXRpY0J1ZmZlciAmJiBzdGF0aWNCdWZmZXItPmdldEJ1ZmZlclNpemUoKSAhPSAw
ICYmIHN0YXRpY0J1ZmZlci0+Z2V0SW5kZXhUeXBlKCkgPT0gdHlwZSAmJiBhbGlnbmVkT2Zmc2V0
KQorICAgIHsKKyAgICAgICAgaW5kZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXI7CisgICAgICAgIHN0
cmVhbU9mZnNldCA9IHN0YXRpY0J1ZmZlci0+bG9va3VwUmFuZ2Uob2Zmc2V0LCBjb3VudCwgJnRy
YW5zbGF0ZWQtPm1pbkluZGV4LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOworCisgICAgICAgIGlm
IChzdHJlYW1PZmZzZXQgPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cmVhbU9mZnNl
dCA9IChvZmZzZXQgLyBpbmRleFR5cGVTaXplKHR5cGUpKSAqIGluZGV4VHlwZVNpemUoZGVzdGlu
YXRpb25JbmRleFR5cGUpOworICAgICAgICAgICAgY29tcHV0ZVJhbmdlKHR5cGUsIGluZGljZXMs
IGNvdW50LCAmdHJhbnNsYXRlZC0+bWluSW5kZXgsICZ0cmFuc2xhdGVkLT5tYXhJbmRleCk7Cisg
ICAgICAgICAgICBzdGF0aWNCdWZmZXItPmFkZFJhbmdlKG9mZnNldCwgY291bnQsIHRyYW5zbGF0
ZWQtPm1pbkluZGV4LCB0cmFuc2xhdGVkLT5tYXhJbmRleCwgc3RyZWFtT2Zmc2V0KTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpbnQgY29udmVydENvdW50ID0g
Y291bnQ7CisKKyAgICAgICAgaWYgKHN0YXRpY0J1ZmZlcikKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHN0YXRpY0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpID09IDAgJiYgYWxpZ25lZE9mZnNl
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbmRleEJ1ZmZlciA9IHN0YXRpY0J1
ZmZlcjsKKyAgICAgICAgICAgICAgICBjb252ZXJ0Q291bnQgPSBzdG9yYWdlLT5nZXRTaXplKCkg
LyBpbmRleFR5cGVTaXplKHR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJ1ZmZlci0+aW52YWxpZGF0ZVN0YXRpY0Rh
dGEoKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNCdWZmZXIgPSBOVUxMOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpbmRleEJ1ZmZlcikKKyAgICAgICAgeworICAg
ICAgICAgICAgRVJSKCJObyB2YWxpZCBpbmRleCBidWZmZXIuIik7CisgICAgICAgICAgICByZXR1
cm4gR0xfSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBp
bnQgYnVmZmVyU2l6ZVJlcXVpcmVkID0gY29udmVydENvdW50ICogaW5kZXhUeXBlU2l6ZShkZXN0
aW5hdGlvbkluZGV4VHlwZSk7CisgICAgICAgIGluZGV4QnVmZmVyLT5yZXNlcnZlQnVmZmVyU3Bh
Y2UoYnVmZmVyU2l6ZVJlcXVpcmVkLCB0eXBlKTsKKworICAgICAgICB2b2lkKiBvdXRwdXQgPSBO
VUxMOworICAgICAgICBzdHJlYW1PZmZzZXQgPSBpbmRleEJ1ZmZlci0+bWFwQnVmZmVyKGJ1ZmZl
clNpemVSZXF1aXJlZCwgJm91dHB1dCk7CisgICAgICAgIGlmIChzdHJlYW1PZmZzZXQgPT0gLTEg
fHwgb3V0cHV0ID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRv
IG1hcCBpbmRleCBidWZmZXIuIik7CisgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9S
WTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnZlcnRJbmRpY2VzKHR5cGUsIHN0YXRpY0J1ZmZl
ciA/IHN0b3JhZ2UtPmdldERhdGEoKSA6IGluZGljZXMsIGNvbnZlcnRDb3VudCwgb3V0cHV0KTsK
KworICAgICAgICBpZiAoIWluZGV4QnVmZmVyLT51bm1hcEJ1ZmZlcigpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBFUlIoIkZhaWxlZCB0byB1bm1hcCBpbmRleCBidWZmZXIuIik7CisgICAgICAg
ICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXB1
dGVSYW5nZSh0eXBlLCBpbmRpY2VzLCBjb3VudCwgJnRyYW5zbGF0ZWQtPm1pbkluZGV4LCAmdHJh
bnNsYXRlZC0+bWF4SW5kZXgpOworCisgICAgICAgIGlmIChzdGF0aWNCdWZmZXIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9IChvZmZzZXQgLyBpbmRleFR5cGVTaXplKHR5
cGUpKSAqIGluZGV4VHlwZVNpemUoZGVzdGluYXRpb25JbmRleFR5cGUpOworICAgICAgICAgICAg
c3RhdGljQnVmZmVyLT5hZGRSYW5nZShvZmZzZXQsIGNvdW50LCB0cmFuc2xhdGVkLT5taW5JbmRl
eCwgdHJhbnNsYXRlZC0+bWF4SW5kZXgsIHN0cmVhbU9mZnNldCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB0cmFuc2xhdGVkLT5zdG9yYWdlID0gZGlyZWN0U3RvcmFnZSA/IHN0b3JhZ2UgOiBO
VUxMOworICAgIHRyYW5zbGF0ZWQtPmluZGV4QnVmZmVyID0gaW5kZXhCdWZmZXItPmdldEluZGV4
QnVmZmVyKCk7CisgICAgdHJhbnNsYXRlZC0+c2VyaWFsID0gZGlyZWN0U3RvcmFnZSA/IHN0b3Jh
Z2UtPmdldFNlcmlhbCgpIDogaW5kZXhCdWZmZXItPmdldFNlcmlhbCgpOworICAgIHRyYW5zbGF0
ZWQtPnN0YXJ0SW5kZXggPSBzdHJlYW1PZmZzZXQgLyBpbmRleFR5cGVTaXplKGRlc3RpbmF0aW9u
SW5kZXhUeXBlKTsKKyAgICB0cmFuc2xhdGVkLT5zdGFydE9mZnNldCA9IHN0cmVhbU9mZnNldDsK
KworICAgIGlmIChidWZmZXIpCisgICAgeworICAgICAgICBidWZmZXItPnByb21vdGVTdGF0aWNV
c2FnZShjb3VudCAqIGluZGV4VHlwZVNpemUodHlwZSkpOworICAgIH0KKworICAgIHJldHVybiBH
TF9OT19FUlJPUjsKK30KKworU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKkluZGV4RGF0YU1h
bmFnZXI6OmdldENvdW50aW5nSW5kaWNlcyhHTHNpemVpIGNvdW50KQoreworICAgIGlmIChjb3Vu
dCA8PSA2NTUzNikgICAvLyAxNi1iaXQgaW5kaWNlcworICAgIHsKKyAgICAgICAgY29uc3QgdW5z
aWduZWQgaW50IHNwYWNlTmVlZGVkID0gY291bnQgKiBzaXplb2YodW5zaWduZWQgc2hvcnQpOwor
CisgICAgICAgIGlmICghbUNvdW50aW5nQnVmZmVyIHx8IG1Db3VudGluZ0J1ZmZlci0+Z2V0QnVm
ZmVyU2l6ZSgpIDwgc3BhY2VOZWVkZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSBt
Q291bnRpbmdCdWZmZXI7CisgICAgICAgICAgICBtQ291bnRpbmdCdWZmZXIgPSBuZXcgU3RhdGlj
SW5kZXhCdWZmZXJJbnRlcmZhY2UobVJlbmRlcmVyKTsKKyAgICAgICAgICAgIG1Db3VudGluZ0J1
ZmZlci0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKHNwYWNlTmVlZGVkLCBHTF9VTlNJR05FRF9TSE9SVCk7
CisKKyAgICAgICAgICAgIHZvaWQqIG1hcHBlZE1lbW9yeSA9IE5VTEw7CisgICAgICAgICAgICBp
ZiAobUNvdW50aW5nQnVmZmVyLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnkp
ID09IC0xIHx8IG1hcHBlZE1lbW9yeSA9PSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIEVSUigiRmFpbGVkIHRvIG1hcCBjb3VudGluZyBidWZmZXIuIik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHVuc2lnbmVk
IHNob3J0ICpkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KG1hcHBlZE1l
bW9yeSk7CisgICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBkYXRhW2ldID0gaTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKCFtQ291bnRpbmdCdWZmZXItPnVubWFwQnVmZmVyKCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gdW5tYXAgY291bnRpbmcgYnVm
ZmVyLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKG1TdHJlYW1pbmdCdWZmZXJJbnQpICAgLy8gMzIt
Yml0IGluZGljZXMgc3VwcG9ydGVkCisgICAgeworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
c3BhY2VOZWVkZWQgPSBjb3VudCAqIHNpemVvZih1bnNpZ25lZCBpbnQpOworCisgICAgICAgIGlm
ICghbUNvdW50aW5nQnVmZmVyIHx8IG1Db3VudGluZ0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpIDwg
c3BhY2VOZWVkZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSBtQ291bnRpbmdCdWZm
ZXI7CisgICAgICAgICAgICBtQ291bnRpbmdCdWZmZXIgPSBuZXcgU3RhdGljSW5kZXhCdWZmZXJJ
bnRlcmZhY2UobVJlbmRlcmVyKTsKKyAgICAgICAgICAgIG1Db3VudGluZ0J1ZmZlci0+cmVzZXJ2
ZUJ1ZmZlclNwYWNlKHNwYWNlTmVlZGVkLCBHTF9VTlNJR05FRF9JTlQpOworCisgICAgICAgICAg
ICB2b2lkKiBtYXBwZWRNZW1vcnkgPSBOVUxMOworICAgICAgICAgICAgaWYgKG1Db3VudGluZ0J1
ZmZlci0+bWFwQnVmZmVyKHNwYWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5KSA9PSAtMSB8fCBtYXBw
ZWRNZW1vcnkgPT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFUlIoIkZh
aWxlZCB0byBtYXAgY291bnRpbmcgYnVmZmVyLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBO
VUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmRhdGEgPSBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGludCo+KG1hcHBlZE1lbW9yeSk7CisgICAgICAgICAg
ICBmb3IoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBkYXRhW2ldID0gaTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFt
Q291bnRpbmdCdWZmZXItPnVubWFwQnVmZmVyKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgRVJSKCJGYWlsZWQgdG8gdW5tYXAgY291bnRpbmcgYnVmZmVyLiIpOworICAgICAgICAg
ICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBt
Q291bnRpbmdCdWZmZXI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFu
YWdlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEluZGV4RGF0YU1hbmFnZXIuaDogRGVmaW5l
cyB0aGUgSW5kZXhEYXRhTWFuYWdlciwgYSBjbGFzcyB0aGF0CisvLyBydW5zIHRoZSBCdWZmZXIg
dHJhbnNsYXRpb24gcHJvY2VzcyBmb3IgaW5kZXggYnVmZmVycy4KKworI2lmbmRlZiBMSUJHTEVT
VjJfSU5ERVhEQVRBTUFOQUdFUl9IXworI2RlZmluZSBMSUJHTEVTVjJfSU5ERVhEQVRBTUFOQUdF
Ul9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlCit7Cisg
ICAgZW51bSB7IElOSVRJQUxfSU5ERVhfQlVGRkVSX1NJWkUgPSA0MDk2ICogc2l6ZW9mKEdMdWlu
dCkgfTsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBCdWZmZXI7Cit9CisKK25hbWVzcGFj
ZSByeAoreworY2xhc3MgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U7CitjbGFzcyBTdHJlYW1p
bmdJbmRleEJ1ZmZlckludGVyZmFjZTsKK2NsYXNzIEluZGV4QnVmZmVyOworY2xhc3MgQnVmZmVy
U3RvcmFnZTsKK2NsYXNzIFJlbmRlcmVyOworCitzdHJ1Y3QgVHJhbnNsYXRlZEluZGV4RGF0YQor
eworICAgIHVuc2lnbmVkIGludCBtaW5JbmRleDsKKyAgICB1bnNpZ25lZCBpbnQgbWF4SW5kZXg7
CisgICAgdW5zaWduZWQgaW50IHN0YXJ0SW5kZXg7CisgICAgdW5zaWduZWQgaW50IHN0YXJ0T2Zm
c2V0OyAgIC8vIEluIGJ5dGVzCisKKyAgICBJbmRleEJ1ZmZlciAqaW5kZXhCdWZmZXI7CisgICAg
QnVmZmVyU3RvcmFnZSAqc3RvcmFnZTsKKyAgICB1bnNpZ25lZCBpbnQgc2VyaWFsOworfTsKKwor
Y2xhc3MgSW5kZXhEYXRhTWFuYWdlcgoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgSW5kZXhE
YXRhTWFuYWdlcihSZW5kZXJlciAqcmVuZGVyZXIpOworICAgIHZpcnR1YWwgfkluZGV4RGF0YU1h
bmFnZXIoKTsKKworICAgIEdMZW51bSBwcmVwYXJlSW5kZXhEYXRhKEdMZW51bSB0eXBlLCBHTHNp
emVpIGNvdW50LCBnbDo6QnVmZmVyICphcnJheUVsZW1lbnRCdWZmZXIsIGNvbnN0IEdMdm9pZCAq
aW5kaWNlcywgVHJhbnNsYXRlZEluZGV4RGF0YSAqdHJhbnNsYXRlZCk7CisgICAgU3RhdGljSW5k
ZXhCdWZmZXJJbnRlcmZhY2UgKmdldENvdW50aW5nSW5kaWNlcyhHTHNpemVpIGNvdW50KTsKKwor
ICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihJbmRleERhdGFNYW5hZ2Vy
KTsKKworICAgIFJlbmRlcmVyICpjb25zdCBtUmVuZGVyZXI7CisKKyAgICBTdHJlYW1pbmdJbmRl
eEJ1ZmZlckludGVyZmFjZSAqbVN0cmVhbWluZ0J1ZmZlclNob3J0OworICAgIFN0cmVhbWluZ0lu
ZGV4QnVmZmVySW50ZXJmYWNlICptU3RyZWFtaW5nQnVmZmVySW50OworICAgIFN0YXRpY0luZGV4
QnVmZmVySW50ZXJmYWNlICptQ291bnRpbmdCdWZmZXI7Cit9OworCit9CisKKyNlbmRpZiAgIC8v
IExJQkdMRVNWMl9JTkRFWERBVEFNQU5BR0VSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5w
dXRMYXlvdXRDYWNoZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE2NiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gSW5wdXRMYXlvdXRDYWNoZS5jcHA6IERlZmluZXMgSW5wdXRMYXlvdXRDYWNoZSwg
YSBjbGFzcyB0aGF0IGJ1aWxkcyBhbmQgY2FjaGVzCisvLyBEM0QxMSBpbnB1dCBsYXlvdXRzLgor
CisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3Jl
bmRlcmVyL1NoYWRlckV4ZWN1dGFibGUxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9Qcm9ncmFt
QmluYXJ5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIuaCIKKworI2luY2x1ZGUgInRoaXJkX3Bh
cnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NvbnN0
IHVuc2lnbmVkIGludCBJbnB1dExheW91dENhY2hlOjprTWF4SW5wdXRMYXlvdXRzID0gMTAyNDsK
KworSW5wdXRMYXlvdXRDYWNoZTo6SW5wdXRMYXlvdXRDYWNoZSgpIDogbUlucHV0TGF5b3V0TWFw
KGtNYXhJbnB1dExheW91dHMsIGhhc2hJbnB1dExheW91dCwgY29tcGFyZUlucHV0TGF5b3V0cykK
K3sKKyAgICBtQ291bnRlciA9IDA7CisgICAgbURldmljZSA9IE5VTEw7CisgICAgbURldmljZUNv
bnRleHQgPSBOVUxMOworfQorCitJbnB1dExheW91dENhY2hlOjp+SW5wdXRMYXlvdXRDYWNoZSgp
Cit7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBJbnB1dExheW91dENhY2hlOjppbml0aWFsaXpl
KElEM0QxMURldmljZSAqZGV2aWNlLCBJRDNEMTFEZXZpY2VDb250ZXh0ICpjb250ZXh0KQorewor
ICAgIGNsZWFyKCk7CisgICAgbURldmljZSA9IGRldmljZTsKKyAgICBtRGV2aWNlQ29udGV4dCA9
IGNvbnRleHQ7Cit9CisKK3ZvaWQgSW5wdXRMYXlvdXRDYWNoZTo6Y2xlYXIoKQoreworICAgIGZv
ciAoSW5wdXRMYXlvdXRNYXA6Oml0ZXJhdG9yIGkgPSBtSW5wdXRMYXlvdXRNYXAuYmVnaW4oKTsg
aSAhPSBtSW5wdXRMYXlvdXRNYXAuZW5kKCk7IGkrKykKKyAgICB7CisgICAgICAgIGktPnNlY29u
ZC5pbnB1dExheW91dC0+UmVsZWFzZSgpOworICAgIH0KKyAgICBtSW5wdXRMYXlvdXRNYXAuY2xl
YXIoKTsKK30KKworR0xlbnVtIElucHV0TGF5b3V0Q2FjaGU6OmFwcGx5VmVydGV4QnVmZmVycyhU
cmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU10sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpQcm9ncmFtQmlu
YXJ5ICpwcm9ncmFtQmluYXJ5KQoreworICAgIGludCBzb3J0ZWRTZW1hbnRpY0luZGljZXNbZ2w6
Ok1BWF9WRVJURVhfQVRUUklCU107CisgICAgcHJvZ3JhbUJpbmFyeS0+c29ydEF0dHJpYnV0ZXNC
eUxheW91dChhdHRyaWJ1dGVzLCBzb3J0ZWRTZW1hbnRpY0luZGljZXMpOworCisgICAgaWYgKCFt
RGV2aWNlIHx8ICFtRGV2aWNlQ29udGV4dCkKKyAgICB7CisgICAgICAgIEVSUigiSW5wdXRMYXlv
dXRDYWNoZSBpcyBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBHTF9JTlZBTElE
X09QRVJBVElPTjsKKyAgICB9CisKKyAgICBJbnB1dExheW91dEtleSBpbEtleSA9IHsgMCB9Owor
CisgICAgSUQzRDExQnVmZmVyICp2ZXJ0ZXhCdWZmZXJzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNd
ID0geyBOVUxMIH07CisgICAgVUlOVCB2ZXJ0ZXhTdHJpZGVzW2dsOjpNQVhfVkVSVEVYX0FUVFJJ
QlNdID0geyAwIH07CisgICAgVUlOVCB2ZXJ0ZXhPZmZzZXRzW2dsOjpNQVhfVkVSVEVYX0FUVFJJ
QlNdID0geyAwIH07CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2VtYW50aWNOYW1lID0gIlRF
WENPT1JEIjsKKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJU
RVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXNbaV0uYWN0aXZl
KQorICAgICAgICB7CisgICAgICAgICAgICBWZXJ0ZXhCdWZmZXIxMSAqdmVydGV4QnVmZmVyID0g
VmVydGV4QnVmZmVyMTE6Om1ha2VWZXJ0ZXhCdWZmZXIxMShhdHRyaWJ1dGVzW2ldLnZlcnRleEJ1
ZmZlcik7CisgICAgICAgICAgICBCdWZmZXJTdG9yYWdlMTEgKmJ1ZmZlclN0b3JhZ2UgPSBhdHRy
aWJ1dGVzW2ldLnN0b3JhZ2UgPyBCdWZmZXJTdG9yYWdlMTE6Om1ha2VCdWZmZXJTdG9yYWdlMTEo
YXR0cmlidXRlc1tpXS5zdG9yYWdlKSA6IE5VTEw7CisKKyAgICAgICAgICAgIEQzRDExX0lOUFVU
X0NMQVNTSUZJQ0FUSU9OIGlucHV0Q2xhc3MgPSBhdHRyaWJ1dGVzW2ldLmRpdmlzb3IgPiAwID8g
RDNEMTFfSU5QVVRfUEVSX0lOU1RBTkNFX0RBVEEgOiBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RB
VEE7CisKKyAgICAgICAgICAgIC8vIFJlY29yZCB0aGUgdHlwZSBvZiB0aGUgYXNzb2NpYXRlZCB2
ZXJ0ZXggc2hhZGVyIHZlY3RvciBpbiBvdXIga2V5CisgICAgICAgICAgICAvLyBUaGlzIHdpbGwg
cHJldmVudCBtaXNtYXRjaGVkIHZlcnRleCBzaGFkZXJzIGZyb20gdXNpbmcgdGhlIHNhbWUgaW5w
dXQgbGF5b3V0CisgICAgICAgICAgICBHTGludCBhdHRyaWJ1dGVTaXplOworICAgICAgICAgICAg
cHJvZ3JhbUJpbmFyeS0+Z2V0QWN0aXZlQXR0cmlidXRlKGlsS2V5LmVsZW1lbnRDb3VudCwgMCwg
TlVMTCwgJmF0dHJpYnV0ZVNpemUsICZpbEtleS5nbHNsRWxlbWVudFR5cGVbaWxLZXkuZWxlbWVu
dENvdW50XSwgTlVMTCk7CisKKyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1l
bnRDb3VudF0uU2VtYW50aWNOYW1lID0gc2VtYW50aWNOYW1lOworICAgICAgICAgICAgaWxLZXku
ZWxlbWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5TZW1hbnRpY0luZGV4ID0gc29ydGVkU2VtYW50
aWNJbmRpY2VzW2ldOworICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxLZXkuZWxlbWVudENv
dW50XS5Gb3JtYXQgPSBhdHRyaWJ1dGVzW2ldLmF0dHJpYnV0ZS0+bUFycmF5RW5hYmxlZCA/IHZl
cnRleEJ1ZmZlci0+Z2V0RFhHSUZvcm1hdCgqYXR0cmlidXRlc1tpXS5hdHRyaWJ1dGUpIDogRFhH
SV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOworICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNb
aWxLZXkuZWxlbWVudENvdW50XS5JbnB1dFNsb3QgPSBpOworICAgICAgICAgICAgaWxLZXkuZWxl
bWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5BbGlnbmVkQnl0ZU9mZnNldCA9IDA7CisgICAgICAg
ICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLklucHV0U2xvdENsYXNzID0g
aW5wdXRDbGFzczsKKyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3Vu
dF0uSW5zdGFuY2VEYXRhU3RlcFJhdGUgPSBhdHRyaWJ1dGVzW2ldLmRpdmlzb3I7CisgICAgICAg
ICAgICBpbEtleS5lbGVtZW50Q291bnQrKzsKKworICAgICAgICAgICAgdmVydGV4QnVmZmVyc1tp
XSA9IGJ1ZmZlclN0b3JhZ2UgPyBidWZmZXJTdG9yYWdlLT5nZXRCdWZmZXIoKSA6IHZlcnRleEJ1
ZmZlci0+Z2V0QnVmZmVyKCk7CisgICAgICAgICAgICB2ZXJ0ZXhTdHJpZGVzW2ldID0gYXR0cmli
dXRlc1tpXS5zdHJpZGU7CisgICAgICAgICAgICB2ZXJ0ZXhPZmZzZXRzW2ldID0gYXR0cmlidXRl
c1tpXS5vZmZzZXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBJRDNEMTFJbnB1dExheW91dCAq
aW5wdXRMYXlvdXQgPSBOVUxMOworCisgICAgSW5wdXRMYXlvdXRNYXA6Oml0ZXJhdG9yIGkgPSBt
SW5wdXRMYXlvdXRNYXAuZmluZChpbEtleSk7CisgICAgaWYgKGkgIT0gbUlucHV0TGF5b3V0TWFw
LmVuZCgpKQorICAgIHsKKyAgICAgICAgaW5wdXRMYXlvdXQgPSBpLT5zZWNvbmQuaW5wdXRMYXlv
dXQ7CisgICAgICAgIGktPnNlY29uZC5sYXN0VXNlZFRpbWUgPSBtQ291bnRlcisrOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICBTaGFkZXJFeGVjdXRhYmxlMTEgKnNoYWRlciA9IFNo
YWRlckV4ZWN1dGFibGUxMTo6bWFrZVNoYWRlckV4ZWN1dGFibGUxMShwcm9ncmFtQmluYXJ5LT5n
ZXRWZXJ0ZXhFeGVjdXRhYmxlKCkpOworCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmlj
ZS0+Q3JlYXRlSW5wdXRMYXlvdXQoaWxLZXkuZWxlbWVudHMsIGlsS2V5LmVsZW1lbnRDb3VudCwg
c2hhZGVyLT5nZXRGdW5jdGlvbigpLCBzaGFkZXItPmdldExlbmd0aCgpLCAmaW5wdXRMYXlvdXQp
OworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVS
UigiRmFpbGVkIHRvIGNyYXRlIGlucHV0IGxheW91dCwgcmVzdWx0OiAweCUwOHgiLCByZXN1bHQp
OworICAgICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfT1BFUkFUSU9OOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKG1JbnB1dExheW91dE1hcC5zaXplKCkgPj0ga01heElucHV0TGF5b3V0cykK
KyAgICAgICAgeworICAgICAgICAgICAgVFJBQ0UoIk92ZXJmbG93ZWQgdGhlIGxpbWl0IG9mICV1
IGlucHV0IGxheW91dHMsIHJlbW92aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkICIKKyAgICAg
ICAgICAgICAgICAgICJ0byBtYWtlIHJvb20uIiwga01heElucHV0TGF5b3V0cyk7CisKKyAgICAg
ICAgICAgIElucHV0TGF5b3V0TWFwOjppdGVyYXRvciBsZWFzdFJlY2VudGx5VXNlZCA9IG1JbnB1
dExheW91dE1hcC5iZWdpbigpOworICAgICAgICAgICAgZm9yIChJbnB1dExheW91dE1hcDo6aXRl
cmF0b3IgaSA9IG1JbnB1dExheW91dE1hcC5iZWdpbigpOyBpICE9IG1JbnB1dExheW91dE1hcC5l
bmQoKTsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpLT5zZWNvbmQu
bGFzdFVzZWRUaW1lIDwgbGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5sYXN0VXNlZFRpbWUpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNlZCA9
IGk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVhc3RS
ZWNlbnRseVVzZWQtPnNlY29uZC5pbnB1dExheW91dC0+UmVsZWFzZSgpOworICAgICAgICAgICAg
bUlucHV0TGF5b3V0TWFwLmVyYXNlKGxlYXN0UmVjZW50bHlVc2VkKTsKKyAgICAgICAgfQorCisg
ICAgICAgIElucHV0TGF5b3V0Q291bnRlclBhaXIgaW5wdXRDb3VudGVyUGFpcjsKKyAgICAgICAg
aW5wdXRDb3VudGVyUGFpci5pbnB1dExheW91dCA9IGlucHV0TGF5b3V0OworICAgICAgICBpbnB1
dENvdW50ZXJQYWlyLmxhc3RVc2VkVGltZSA9IG1Db3VudGVyKys7CisKKyAgICAgICAgbUlucHV0
TGF5b3V0TWFwLmluc2VydChzdGQ6Om1ha2VfcGFpcihpbEtleSwgaW5wdXRDb3VudGVyUGFpcikp
OworICAgIH0KKworICAgIG1EZXZpY2VDb250ZXh0LT5JQVNldElucHV0TGF5b3V0KGlucHV0TGF5
b3V0KTsKKyAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIGdsOjpNQVhf
VkVSVEVYX0FUVFJJQlMsIHZlcnRleEJ1ZmZlcnMsIHZlcnRleFN0cmlkZXMsIHZlcnRleE9mZnNl
dHMpOworCisgICAgcmV0dXJuIEdMX05PX0VSUk9SOworfQorCitzdGQ6OnNpemVfdCBJbnB1dExh
eW91dENhY2hlOjpoYXNoSW5wdXRMYXlvdXQoY29uc3QgSW5wdXRMYXlvdXRLZXkgJmlucHV0TGF5
b3V0KQoreworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgc2VlZCA9IDB4REVBREJFRUY7
CisKKyAgICBzdGQ6OnNpemVfdCBoYXNoID0gMDsKKyAgICBNdXJtdXJIYXNoM194ODZfMzIoJmlu
cHV0TGF5b3V0LCBzaXplb2YoSW5wdXRMYXlvdXRLZXkpLCBzZWVkLCAmaGFzaCk7CisgICAgcmV0
dXJuIGhhc2g7Cit9CisKK2Jvb2wgSW5wdXRMYXlvdXRDYWNoZTo6Y29tcGFyZUlucHV0TGF5b3V0
cyhjb25zdCBJbnB1dExheW91dEtleSAmYSwgY29uc3QgSW5wdXRMYXlvdXRLZXkgJmIpCit7Cisg
ICAgcmV0dXJuIG1lbWNtcCgmYSwgJmIsIHNpemVvZihJbnB1dExheW91dEtleSkpID09IDA7Cit9
CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvSW5wdXRMYXlvdXRDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbnB1
dExheW91dENhY2hlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyBJbnB1dExheW91dENhY2hlLmg6IERlZmluZXMgSW5wdXRMYXlvdXRDYWNoZSwgYSBj
bGFzcyB0aGF0IGJ1aWxkcyBhbmQgY2FjaGVzCisvLyBEM0QxMSBpbnB1dCBsYXlvdXRzLgorCisj
aWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9JTlBVVExBWU9VVENBQ0hFX0hfCisjZGVmaW5lIExJ
QkdMRVNWMl9SRU5ERVJFUl9JTlBVVExBWU9VVENBQ0hFX0hfCisKKyNpbmNsdWRlICJsaWJHTEVT
djIvQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNw
YWNlIGdsCit7CitjbGFzcyBQcm9ncmFtQmluYXJ5OworfQorCituYW1lc3BhY2UgcngKK3sKK3N0
cnVjdCBUcmFuc2xhdGVkQXR0cmlidXRlOworCitjbGFzcyBJbnB1dExheW91dENhY2hlCit7Cisg
IHB1YmxpYzoKKyAgICBJbnB1dExheW91dENhY2hlKCk7CisgICAgdmlydHVhbCB+SW5wdXRMYXlv
dXRDYWNoZSgpOworCisgICAgdm9pZCBpbml0aWFsaXplKElEM0QxMURldmljZSAqZGV2aWNlLCBJ
RDNEMTFEZXZpY2VDb250ZXh0ICpjb250ZXh0KTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICBH
TGVudW0gYXBwbHlWZXJ0ZXhCdWZmZXJzKFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tn
bDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
OjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5KTsKKworICBwcml2YXRlOgorICAgIERJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihJbnB1dExheW91dENhY2hlKTsKKworICAgIHN0cnVjdCBJbnB1
dExheW91dEtleQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGVsZW1lbnRDb3VudDsKKyAg
ICAgICAgRDNEMTFfSU5QVVRfRUxFTUVOVF9ERVNDIGVsZW1lbnRzW2dsOjpNQVhfVkVSVEVYX0FU
VFJJQlNdOworICAgICAgICBHTGVudW0gZ2xzbEVsZW1lbnRUeXBlW2dsOjpNQVhfVkVSVEVYX0FU
VFJJQlNdOworICAgIH07CisKKyAgICBzdHJ1Y3QgSW5wdXRMYXlvdXRDb3VudGVyUGFpcgorICAg
IHsKKyAgICAgICAgSUQzRDExSW5wdXRMYXlvdXQgKmlucHV0TGF5b3V0OworICAgICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgbGFzdFVzZWRUaW1lOworICAgIH07CisKKyAgICBzdGF0aWMgc3RkOjpz
aXplX3QgaGFzaElucHV0TGF5b3V0KGNvbnN0IElucHV0TGF5b3V0S2V5ICZpbnB1dExheW91dCk7
CisgICAgc3RhdGljIGJvb2wgY29tcGFyZUlucHV0TGF5b3V0cyhjb25zdCBJbnB1dExheW91dEtl
eSAmYSwgY29uc3QgSW5wdXRMYXlvdXRLZXkgJmIpOworCisgICAgdHlwZWRlZiBzdGQ6OnNpemVf
dCAoKklucHV0TGF5b3V0SGFzaEZ1bmN0aW9uKShjb25zdCBJbnB1dExheW91dEtleSAmKTsKKyAg
ICB0eXBlZGVmIGJvb2wgKCpJbnB1dExheW91dEVxdWFsaXR5RnVuY3Rpb24pKGNvbnN0IElucHV0
TGF5b3V0S2V5ICYsIGNvbnN0IElucHV0TGF5b3V0S2V5ICYpOworICAgIHR5cGVkZWYgc3RkOjp1
bm9yZGVyZWRfbWFwPElucHV0TGF5b3V0S2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElucHV0TGF5b3V0Q291bnRlclBhaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW5wdXRMYXlvdXRIYXNoRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW5wdXRMYXlvdXRFcXVhbGl0eUZ1bmN0aW9uPiBJbnB1dExheW91dE1hcDsKKyAgICBJbnB1
dExheW91dE1hcCBtSW5wdXRMYXlvdXRNYXA7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
aW50IGtNYXhJbnB1dExheW91dHM7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbUNvdW50ZXI7
CisKKyAgICBJRDNEMTFEZXZpY2UgKm1EZXZpY2U7CisgICAgSUQzRDExRGV2aWNlQ29udGV4dCAq
bURldmljZUNvbnRleHQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJf
SU5QVVRMQVlPVVRDQUNIRV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9RdWVyeTkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnk5LmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnk5
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjUgQEAKKyNpbmNsdWRlICJwcmVjb21waWxl
ZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFF1ZXJ5OS5jcHA6IERlZmluZXMgdGhlIHJ4OjpRdWVy
eTkgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyByeDo6UXVlcnlJbXBsLgorCisKKyNpbmNsdWRlICJs
aWJHTEVTdjIvcmVuZGVyZXIvUXVlcnk5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgorCituYW1lc3BhY2UgcngKK3sKKwor
UXVlcnk5OjpRdWVyeTkocng6OlJlbmRlcmVyOSAqcmVuZGVyZXIsIEdMZW51bSB0eXBlKSA6IFF1
ZXJ5SW1wbCh0eXBlKQoreworICAgIG1SZW5kZXJlciA9IHJlbmRlcmVyOworICAgIG1RdWVyeSA9
IE5VTEw7Cit9CisKK1F1ZXJ5OTo6flF1ZXJ5OSgpCit7CisgICAgaWYgKG1RdWVyeSkKKyAgICB7
CisgICAgICAgIG1RdWVyeS0+UmVsZWFzZSgpOworICAgICAgICBtUXVlcnkgPSBOVUxMOworICAg
IH0KK30KKwordm9pZCBRdWVyeTk6OmJlZ2luKCkKK3sKKyAgICBpZiAobVF1ZXJ5ID09IE5VTEwp
CisgICAgeworICAgICAgICBpZiAoRkFJTEVEKG1SZW5kZXJlci0+Z2V0RGV2aWNlKCktPkNyZWF0
ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9PQ0NMVVNJT04sICZtUXVlcnkpKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIEhSRVNVTFQgcmVzdWx0ID0gbVF1ZXJ5LT5Jc3N1ZShEM0RJU1NVRV9CRUdJ
Tik7CisgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKK30KKwordm9pZCBRdWVyeTk6OmVu
ZCgpCit7CisgICAgaWYgKG1RdWVyeSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisgICAgSFJFU1VMVCByZXN1
bHQgPSBtUXVlcnktPklzc3VlKEQzRElTU1VFX0VORCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChy
ZXN1bHQpKTsKKworICAgIG1TdGF0dXMgPSBHTF9GQUxTRTsKKyAgICBtUmVzdWx0ID0gR0xfRkFM
U0U7Cit9CisKK0dMdWludCBRdWVyeTk6OmdldFJlc3VsdCgpCit7CisgICAgaWYgKG1RdWVyeSAh
PSBOVUxMKQorICAgIHsKKyAgICAgICAgd2hpbGUgKCF0ZXN0UXVlcnkoKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgU2xlZXAoMCk7CisgICAgICAgICAgICAvLyBleHBsaWNpdGx5IGNoZWNrIGZv
ciBkZXZpY2UgbG9zcworICAgICAgICAgICAgLy8gc29tZSBkcml2ZXJzIHNlZW0gdG8gcmV0dXJu
IFNfRkFMU0UgZXZlbiBpZiB0aGUgZGV2aWNlIGlzIGxvc3QKKyAgICAgICAgICAgIC8vIGluc3Rl
YWQgb2YgRDNERVJSX0RFVklDRUxPU1QgbGlrZSB0aGV5IHNob3VsZAorICAgICAgICAgICAgaWYg
KG1SZW5kZXJlci0+dGVzdERldmljZUxvc3QodHJ1ZSkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtUmVzdWx0OworfQorCitHTGJv
b2xlYW4gUXVlcnk5Ojppc1Jlc3VsdEF2YWlsYWJsZSgpCit7CisgICAgaWYgKG1RdWVyeSAhPSBO
VUxMKQorICAgIHsKKyAgICAgICAgdGVzdFF1ZXJ5KCk7CisgICAgfQorCisgICAgcmV0dXJuIG1T
dGF0dXM7Cit9CisKK0dMYm9vbGVhbiBRdWVyeTk6OnRlc3RRdWVyeSgpCit7CisgICAgaWYgKG1R
dWVyeSAhPSBOVUxMICYmIG1TdGF0dXMgIT0gR0xfVFJVRSkKKyAgICB7CisgICAgICAgIERXT1JE
IG51bVBpeGVscyA9IDA7CisKKyAgICAgICAgSFJFU1VMVCBocmVzID0gbVF1ZXJ5LT5HZXREYXRh
KCZudW1QaXhlbHMsIHNpemVvZihEV09SRCksIEQzREdFVERBVEFfRkxVU0gpOworICAgICAgICBp
ZiAoaHJlcyA9PSBTX09LKQorICAgICAgICB7CisgICAgICAgICAgICBtU3RhdHVzID0gIEdMX1RS
VUU7CisKKyAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQ6CisgICAgICAgICAgICAg
IGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQ6CisgICAgICAgICAg
ICAgICAgbVJlc3VsdCA9IChudW1QaXhlbHMgPiAwKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UgaWYgKGQzZDk6OmlzRGV2aWNlTG9zdEVycm9yKGhyZXMpKQorICAgICAgICB7CisgICAgICAg
ICAgICBtUmVuZGVyZXItPm5vdGlmeURldmljZUxvc3QoKTsKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgR0xfVFJVRSk7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gbVN0YXR1czsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfVFJVRTsgLy8gcHJldmVu
dCBibG9ja2luZyB3aGVuIHF1ZXJ5IGlzIG51bGwKK30KKworfQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5OS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9RdWVyeTkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIFF1ZXJ5OS5oOiBEZWZpbmVzIHRoZSByeDo6UXVlcnk5IGNsYXNzIHdoaWNoIGlt
cGxlbWVudHMgcng6OlF1ZXJ5SW1wbC4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfUVVF
Ulk5X0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9RVUVSWTlfSF8KKworI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeUltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFz
cyBSZW5kZXJlcjk7CisKK2NsYXNzIFF1ZXJ5OSA6IHB1YmxpYyBRdWVyeUltcGwKK3sKKyAgcHVi
bGljOgorICAgIFF1ZXJ5OShyeDo6UmVuZGVyZXI5ICpyZW5kZXJlciwgR0xlbnVtIHR5cGUpOwor
ICAgIHZpcnR1YWwgflF1ZXJ5OSgpOworCisgICAgdm9pZCBiZWdpbigpOworICAgIHZvaWQgZW5k
KCk7CisgICAgR0x1aW50IGdldFJlc3VsdCgpOworICAgIEdMYm9vbGVhbiBpc1Jlc3VsdEF2YWls
YWJsZSgpOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFF1ZXJ5
OSk7CisKKyAgICBHTGJvb2xlYW4gdGVzdFF1ZXJ5KCk7CisKKyAgICByeDo6UmVuZGVyZXI5ICpt
UmVuZGVyZXI7CisgICAgSURpcmVjdDNEUXVlcnk5ICptUXVlcnk7Cit9OworCit9CisKKyNlbmRp
ZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfUVVFUlk5X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5MTEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnkxMS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1F1ZXJ5MTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMiBAQAorI2lu
Y2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUXVlcnkxMS5jcHA6IERl
ZmluZXMgdGhlIHJ4OjpRdWVyeTExIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgcng6OlF1ZXJ5SW1w
bC4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmgiCisjaW5jbHVkZSAi
bGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFp
bi5oIgorCituYW1lc3BhY2UgcngKK3sKKworUXVlcnkxMTo6UXVlcnkxMShyeDo6UmVuZGVyZXIx
MSAqcmVuZGVyZXIsIEdMZW51bSB0eXBlKSA6IFF1ZXJ5SW1wbCh0eXBlKQoreworICAgIG1SZW5k
ZXJlciA9IHJlbmRlcmVyOworICAgIG1RdWVyeSA9IE5VTEw7Cit9CisKK1F1ZXJ5MTE6On5RdWVy
eTExKCkKK3sKKyAgICBpZiAobVF1ZXJ5KQorICAgIHsKKyAgICAgICAgbVF1ZXJ5LT5SZWxlYXNl
KCk7CisgICAgICAgIG1RdWVyeSA9IE5VTEw7CisgICAgfQorfQorCit2b2lkIFF1ZXJ5MTE6OmJl
Z2luKCkKK3sKKyAgICBpZiAobVF1ZXJ5ID09IE5VTEwpCisgICAgeworICAgICAgICBEM0QxMV9R
VUVSWV9ERVNDIHF1ZXJ5RGVzYzsKKyAgICAgICAgcXVlcnlEZXNjLlF1ZXJ5ID0gRDNEMTFfUVVF
UllfT0NDTFVTSU9OOworICAgICAgICBxdWVyeURlc2MuTWlzY0ZsYWdzID0gMDsKKworICAgICAg
ICBpZiAoRkFJTEVEKG1SZW5kZXJlci0+Z2V0RGV2aWNlKCktPkNyZWF0ZVF1ZXJ5KCZxdWVyeURl
c2MsICZtUXVlcnkpKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1SZW5kZXJlci0+Z2V0
RGV2aWNlQ29udGV4dCgpLT5CZWdpbihtUXVlcnkpOworfQorCit2b2lkIFF1ZXJ5MTE6OmVuZCgp
Cit7CisgICAgaWYgKG1RdWVyeSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisgICAgbVJlbmRlcmVyLT5nZXRE
ZXZpY2VDb250ZXh0KCktPkVuZChtUXVlcnkpOworCisgICAgbVN0YXR1cyA9IEdMX0ZBTFNFOwor
ICAgIG1SZXN1bHQgPSBHTF9GQUxTRTsKK30KKworR0x1aW50IFF1ZXJ5MTE6OmdldFJlc3VsdCgp
Cit7CisgICAgaWYgKG1RdWVyeSAhPSBOVUxMKQorICAgIHsKKyAgICAgICAgd2hpbGUgKCF0ZXN0
UXVlcnkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgU2xlZXAoMCk7CisgICAgICAgICAgICAv
LyBleHBsaWNpdGx5IGNoZWNrIGZvciBkZXZpY2UgbG9zcywgc29tZSBkcml2ZXJzIHNlZW0gdG8g
cmV0dXJuIFNfRkFMU0UKKyAgICAgICAgICAgIC8vIGlmIHRoZSBkZXZpY2UgaXMgbG9zdAorICAg
ICAgICAgICAgaWYgKG1SZW5kZXJlci0+dGVzdERldmljZUxvc3QodHJ1ZSkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtUmVzdWx0
OworfQorCitHTGJvb2xlYW4gUXVlcnkxMTo6aXNSZXN1bHRBdmFpbGFibGUoKQoreworICAgIGlm
IChtUXVlcnkgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIHRlc3RRdWVyeSgpOworICAgIH0KKwor
ICAgIHJldHVybiBtU3RhdHVzOworfQorCitHTGJvb2xlYW4gUXVlcnkxMTo6dGVzdFF1ZXJ5KCkK
K3sKKyAgICBpZiAobVF1ZXJ5ICE9IE5VTEwgJiYgbVN0YXR1cyAhPSBHTF9UUlVFKQorICAgIHsK
KyAgICAgICAgVUlOVDY0IG51bVBpeGVscyA9IDA7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0g
bVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCktPkdldERhdGEobVF1ZXJ5LCAmbnVtUGl4ZWxz
LCBzaXplb2YoVUlOVDY0KSwgMCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gU19PSykKKyAgICAg
ICAgeworICAgICAgICAgICAgbVN0YXR1cyA9IEdMX1RSVUU7CisKKyAgICAgICAgICAgIHN3aXRj
aCAoZ2V0VHlwZSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0FOWV9T
QU1QTEVTX1BBU1NFRF9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFT
U0VEX0NPTlNFUlZBVElWRV9FWFQ6CisgICAgICAgICAgICAgICAgbVJlc3VsdCA9IChudW1QaXhl
bHMgPiAwKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1SZW5kZXJlci0+dGVzdERl
dmljZUxvc3QodHJ1ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgR0xfVFJVRSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
bVN0YXR1czsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfVFJVRTsgLy8gcHJldmVudCBibG9ja2lu
ZyB3aGVuIHF1ZXJ5IGlzIG51bGwKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1F1ZXJ5MTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIFF1ZXJ5MTEuaDogRGVmaW5lcyB0aGUgcng6OlF1ZXJ5MTEgY2xhc3Mgd2hpY2ggaW1wbGVt
ZW50cyByeDo6UXVlcnlJbXBsLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9RVUVSWTEx
X0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9RVUVSWTExX0hfCisKKyNpbmNsdWRlICJs
aWJHTEVTdjIvcmVuZGVyZXIvUXVlcnlJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3Mg
UmVuZGVyZXIxMTsKKworY2xhc3MgUXVlcnkxMSA6IHB1YmxpYyBRdWVyeUltcGwKK3sKKyAgcHVi
bGljOgorICAgIFF1ZXJ5MTEocng6OlJlbmRlcmVyMTEgKnJlbmRlcmVyLCBHTGVudW0gdHlwZSk7
CisgICAgdmlydHVhbCB+UXVlcnkxMSgpOworCisgICAgdm9pZCBiZWdpbigpOworICAgIHZvaWQg
ZW5kKCk7CisgICAgR0x1aW50IGdldFJlc3VsdCgpOworICAgIEdMYm9vbGVhbiBpc1Jlc3VsdEF2
YWlsYWJsZSgpOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFF1
ZXJ5MTEpOworCisgICAgR0xib29sZWFuIHRlc3RRdWVyeSgpOworCisgICAgcng6OlJlbmRlcmVy
MTEgKm1SZW5kZXJlcjsKKyAgICBJRDNEMTFRdWVyeSAqbVF1ZXJ5OworfTsKKworfQorCisjZW5k
aWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1FVRVJZMTFfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnlJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeUlt
cGwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvUXVlcnlJbXBsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisvLyBRdWVyeUltcGwuaDogRGVmaW5lcyB0aGUgYWJzdHJhY3Qgcng6OlF1
ZXJ5SW1wbCBjbGFzcy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfUVVFUllJTVBMX0hf
CisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9RVUVSWUlNUExfSF8KKworI2luY2x1ZGUgImNv
bW1vbi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBRdWVyeUltcGwK
K3sKKyAgcHVibGljOgorICAgIGV4cGxpY2l0IFF1ZXJ5SW1wbChHTGVudW0gdHlwZSkgOiBtVHlw
ZSh0eXBlKSwgbVN0YXR1cyhHTF9GQUxTRSksIG1SZXN1bHQoMCkgeyB9CisgICAgdmlydHVhbCB+
UXVlcnlJbXBsKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW4oKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGVuZCgpID0gMDsKKyAgICB2aXJ0dWFsIEdMdWludCBnZXRSZXN1bHQoKSA9IDA7
CisgICAgdmlydHVhbCBHTGJvb2xlYW4gaXNSZXN1bHRBdmFpbGFibGUoKSA9IDA7CisKKyAgICBH
TGVudW0gZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlOyB9CisKKyAgcHJvdGVjdGVkOgor
ICAgIEdMdWludCBtUmVzdWx0OworICAgIEdMYm9vbGVhbiBtU3RhdHVzOworCisgIHByaXZhdGU6
CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFF1ZXJ5SW1wbCk7CisKKyAgICBHTGVudW0g
bVR5cGU7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfUVVFUllJTVBM
X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1JlbmRlclN0YXRlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyU3RhdGVDYWNoZS5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlclN0YXRlQ2FjaGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwNiBAQAorI2luY2x1
ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBSZW5kZXJTdGF0ZUNh
Y2hlLmNwcDogRGVmaW5lcyByeDo6UmVuZGVyU3RhdGVDYWNoZSwgYSBjYWNoZSBvZiBEaXJlY3Qz
RCByZW5kZXIKKy8vIHN0YXRlIG9iamVjdHMuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvUmVuZGVyU3RhdGVDYWNoZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5k
ZXJlcjExX3V0aWxzLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJ0
aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmgiCisKK25hbWVzcGFjZSByeAorewor
CisvLyBNU0ROJ3MgZG9jdW1lbnRhdGlvbiBvZiBJRDNEMTFEZXZpY2U6OkNyZWF0ZUJsZW5kU3Rh
dGUsIElEM0QxMURldmljZTo6Q3JlYXRlUmFzdGVyaXplclN0YXRlLAorLy8gSUQzRDExRGV2aWNl
OjpDcmVhdGVEZXB0aFN0ZW5jaWxTdGF0ZSBhbmQgSUQzRDExRGV2aWNlOjpDcmVhdGVTYW1wbGVy
U3RhdGUgY2xhaW1zIHRoZSBtYXhpbXVtCisvLyBudW1iZXIgb2YgdW5pcXVlIHN0YXRlcyBvZiBl
YWNoIHR5cGUgYW4gYXBwbGljYXRpb24gY2FuIGNyZWF0ZSBpcyA0MDk2Citjb25zdCB1bnNpZ25l
ZCBpbnQgUmVuZGVyU3RhdGVDYWNoZTo6a01heEJsZW5kU3RhdGVzID0gNDA5NjsKK2NvbnN0IHVu
c2lnbmVkIGludCBSZW5kZXJTdGF0ZUNhY2hlOjprTWF4UmFzdGVyaXplclN0YXRlcyA9IDQwOTY7
Citjb25zdCB1bnNpZ25lZCBpbnQgUmVuZGVyU3RhdGVDYWNoZTo6a01heERlcHRoU3RlbmNpbFN0
YXRlcyA9IDQwOTY7Citjb25zdCB1bnNpZ25lZCBpbnQgUmVuZGVyU3RhdGVDYWNoZTo6a01heFNh
bXBsZXJTdGF0ZXMgPSA0MDk2OworCitSZW5kZXJTdGF0ZUNhY2hlOjpSZW5kZXJTdGF0ZUNhY2hl
KCkgOiBtRGV2aWNlKE5VTEwpLCBtQ291bnRlcigwKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1CbGVuZFN0YXRlQ2FjaGUoa01heEJsZW5kU3RhdGVzLCBoYXNoQmxl
bmRTdGF0ZSwgY29tcGFyZUJsZW5kU3RhdGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1SYXN0ZXJpemVyU3RhdGVDYWNoZShrTWF4UmFzdGVyaXplclN0YXRlcywg
aGFzaFJhc3Rlcml6ZXJTdGF0ZSwgY29tcGFyZVJhc3Rlcml6ZXJTdGF0ZXMpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUoa01h
eERlcHRoU3RlbmNpbFN0YXRlcywgaGFzaERlcHRoU3RlbmNpbFN0YXRlLCBjb21wYXJlRGVwdGhT
dGVuY2lsU3RhdGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1T
YW1wbGVyU3RhdGVDYWNoZShrTWF4U2FtcGxlclN0YXRlcywgaGFzaFNhbXBsZXJTdGF0ZSwgY29t
cGFyZVNhbXBsZXJTdGF0ZXMpCit7Cit9CisKK1JlbmRlclN0YXRlQ2FjaGU6On5SZW5kZXJTdGF0
ZUNhY2hlKCkKK3sKKyAgICBjbGVhcigpOworfQorCit2b2lkIFJlbmRlclN0YXRlQ2FjaGU6Omlu
aXRpYWxpemUoSUQzRDExRGV2aWNlICpkZXZpY2UpCit7CisgICAgY2xlYXIoKTsKKyAgICBtRGV2
aWNlID0gZGV2aWNlOworfQorCit2b2lkIFJlbmRlclN0YXRlQ2FjaGU6OmNsZWFyKCkKK3sKKyAg
ICBmb3IgKEJsZW5kU3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBtQmxlbmRTdGF0ZUNhY2hlLmJlZ2lu
KCk7IGkgIT0gbUJsZW5kU3RhdGVDYWNoZS5lbmQoKTsgaSsrKQorICAgIHsKKyAgICAgICAgaS0+
c2Vjb25kLmZpcnN0LT5SZWxlYXNlKCk7CisgICAgfQorICAgIG1CbGVuZFN0YXRlQ2FjaGUuY2xl
YXIoKTsKKworICAgIGZvciAoUmFzdGVyaXplclN0YXRlTWFwOjppdGVyYXRvciBpID0gbVJhc3Rl
cml6ZXJTdGF0ZUNhY2hlLmJlZ2luKCk7IGkgIT0gbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlLmVuZCgp
OyBpKyspCisgICAgeworICAgICAgICBpLT5zZWNvbmQuZmlyc3QtPlJlbGVhc2UoKTsKKyAgICB9
CisgICAgbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlLmNsZWFyKCk7CisKKyAgICBmb3IgKERlcHRoU3Rl
bmNpbFN0YXRlTWFwOjppdGVyYXRvciBpID0gbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUuYmVnaW4o
KTsgaSAhPSBtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5lbmQoKTsgaSsrKQorICAgIHsKKyAgICAg
ICAgaS0+c2Vjb25kLmZpcnN0LT5SZWxlYXNlKCk7CisgICAgfQorICAgIG1EZXB0aFN0ZW5jaWxT
dGF0ZUNhY2hlLmNsZWFyKCk7CisKKyAgICBmb3IgKFNhbXBsZXJTdGF0ZU1hcDo6aXRlcmF0b3Ig
aSA9IG1TYW1wbGVyU3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1TYW1wbGVyU3RhdGVDYWNoZS5l
bmQoKTsgaSsrKQorICAgIHsKKyAgICAgICAgaS0+c2Vjb25kLmZpcnN0LT5SZWxlYXNlKCk7Cisg
ICAgfQorICAgIG1TYW1wbGVyU3RhdGVDYWNoZS5jbGVhcigpOworfQorCitzdGQ6OnNpemVfdCBS
ZW5kZXJTdGF0ZUNhY2hlOjpoYXNoQmxlbmRTdGF0ZShjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxl
bmRTdGF0ZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHNlZWQgPSAweEFCQ0RF
Rjk4OworCisgICAgc3RkOjpzaXplX3QgaGFzaCA9IDA7CisgICAgTXVybXVySGFzaDNfeDg2XzMy
KCZibGVuZFN0YXRlLCBzaXplb2YoZ2w6OkJsZW5kU3RhdGUpLCBzZWVkLCAmaGFzaCk7CisgICAg
cmV0dXJuIGhhc2g7Cit9CisKK2Jvb2wgUmVuZGVyU3RhdGVDYWNoZTo6Y29tcGFyZUJsZW5kU3Rh
dGVzKGNvbnN0IGdsOjpCbGVuZFN0YXRlICZhLCBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYikKK3sK
KyAgICByZXR1cm4gbWVtY21wKCZhLCAmYiwgc2l6ZW9mKGdsOjpCbGVuZFN0YXRlKSkgPT0gMDsK
K30KKworSUQzRDExQmxlbmRTdGF0ZSAqUmVuZGVyU3RhdGVDYWNoZTo6Z2V0QmxlbmRTdGF0ZShj
b25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSkKK3sKKyAgICBpZiAoIW1EZXZpY2UpCisg
ICAgeworICAgICAgICBFUlIoIlJlbmRlclN0YXRlQ2FjaGUgaXMgbm90IGluaXRpYWxpemVkLiIp
OworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBCbGVuZFN0YXRlTWFwOjppdGVy
YXRvciBpID0gbUJsZW5kU3RhdGVDYWNoZS5maW5kKGJsZW5kU3RhdGUpOworICAgIGlmIChpICE9
IG1CbGVuZFN0YXRlQ2FjaGUuZW5kKCkpCisgICAgeworICAgICAgICBCbGVuZFN0YXRlQ291bnRl
clBhaXIgJnN0YXRlID0gaS0+c2Vjb25kOworICAgICAgICBzdGF0ZS5zZWNvbmQgPSBtQ291bnRl
cisrOworICAgICAgICByZXR1cm4gc3RhdGUuZmlyc3Q7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIGlmIChtQmxlbmRTdGF0ZUNhY2hlLnNpemUoKSA+PSBrTWF4QmxlbmRTdGF0ZXMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIFRSQUNFKCJPdmVyZmxvd2VkIHRoZSBsaW1pdCBvZiAl
dSBibGVuZCBzdGF0ZXMsIHJlbW92aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkICIKKyAgICAg
ICAgICAgICAgICAgICJ0byBtYWtlIHJvb20uIiwga01heEJsZW5kU3RhdGVzKTsKKworICAgICAg
ICAgICAgQmxlbmRTdGF0ZU1hcDo6aXRlcmF0b3IgbGVhc3RSZWNlbnRseVVzZWQgPSBtQmxlbmRT
dGF0ZUNhY2hlLmJlZ2luKCk7CisgICAgICAgICAgICBmb3IgKEJsZW5kU3RhdGVNYXA6Oml0ZXJh
dG9yIGkgPSBtQmxlbmRTdGF0ZUNhY2hlLmJlZ2luKCk7IGkgIT0gbUJsZW5kU3RhdGVDYWNoZS5l
bmQoKTsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpLT5zZWNvbmQu
c2Vjb25kIDwgbGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5zZWNvbmQpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNlZCA9IGk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVhc3RSZWNlbnRseVVzZWQt
PnNlY29uZC5maXJzdC0+UmVsZWFzZSgpOworICAgICAgICAgICAgbUJsZW5kU3RhdGVDYWNoZS5l
cmFzZShsZWFzdFJlY2VudGx5VXNlZCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDcmVhdGUg
YSBuZXcgYmxlbmQgc3RhdGUgYW5kIGluc2VydCBpdCBpbnRvIHRoZSBjYWNoZQorICAgICAgICBE
M0QxMV9CTEVORF9ERVNDIGJsZW5kRGVzYyA9IHsgMCB9OworICAgICAgICBibGVuZERlc2MuQWxw
aGFUb0NvdmVyYWdlRW5hYmxlID0gYmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJhZ2U7Cisg
ICAgICAgIGJsZW5kRGVzYy5JbmRlcGVuZGVudEJsZW5kRW5hYmxlID0gRkFMU0U7CisKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBEM0QxMV9TSU1VTFRBTkVPVVNfUkVOREVS
X1RBUkdFVF9DT1VOVDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBEM0QxMV9SRU5ERVJf
VEFSR0VUX0JMRU5EX0RFU0MgJnJ0QmxlbmQgPSBibGVuZERlc2MuUmVuZGVyVGFyZ2V0W2ldOwor
CisgICAgICAgICAgICBydEJsZW5kLkJsZW5kRW5hYmxlID0gYmxlbmRTdGF0ZS5ibGVuZDsKKyAg
ICAgICAgICAgIGlmIChibGVuZFN0YXRlLmJsZW5kKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJ0QmxlbmQuU3JjQmxlbmQgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kRnVuYyhibGVu
ZFN0YXRlLnNvdXJjZUJsZW5kUkdCLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgcnRCbGVuZC5E
ZXN0QmxlbmQgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kRnVuYyhibGVuZFN0YXRlLmRlc3RCbGVu
ZFJHQiwgZmFsc2UpOworICAgICAgICAgICAgICAgIHJ0QmxlbmQuQmxlbmRPcCA9IGdsX2QzZDEx
OjpDb252ZXJ0QmxlbmRPcChibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IpOworCisgICAgICAg
ICAgICAgICAgcnRCbGVuZC5TcmNCbGVuZEFscGhhID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZEZ1
bmMoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZEFscGhhLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBy
dEJsZW5kLkRlc3RCbGVuZEFscGhhID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRT
dGF0ZS5kZXN0QmxlbmRBbHBoYSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgcnRCbGVuZC5CbGVu
ZE9wQWxwaGEgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kT3AoYmxlbmRTdGF0ZS5ibGVuZEVxdWF0
aW9uQWxwaGEpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBydEJsZW5kLlJlbmRlclRh
cmdldFdyaXRlTWFzayA9IGdsX2QzZDExOjpDb252ZXJ0Q29sb3JNYXNrKGJsZW5kU3RhdGUuY29s
b3JNYXNrUmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0JsdWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5k
U3RhdGUuY29sb3JNYXNrQWxwaGEpOworICAgICAgICB9CisKKyAgICAgICAgSUQzRDExQmxlbmRT
dGF0ZSAqZHgxMUJsZW5kU3RhdGUgPSBOVUxMOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1E
ZXZpY2UtPkNyZWF0ZUJsZW5kU3RhdGUoJmJsZW5kRGVzYywgJmR4MTFCbGVuZFN0YXRlKTsKKyAg
ICAgICAgaWYgKEZBSUxFRChyZXN1bHQpIHx8ICFkeDExQmxlbmRTdGF0ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgRVJSKCJVbmFibGUgdG8gY3JlYXRlIGEgSUQzRDExQmxlbmRTdGF0ZSwgSFJF
U1VMVDogMHglWC4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAg
IH0KKworICAgICAgICBtQmxlbmRTdGF0ZUNhY2hlLmluc2VydChzdGQ6Om1ha2VfcGFpcihibGVu
ZFN0YXRlLCBzdGQ6Om1ha2VfcGFpcihkeDExQmxlbmRTdGF0ZSwgbUNvdW50ZXIrKykpKTsKKwor
ICAgICAgICByZXR1cm4gZHgxMUJsZW5kU3RhdGU7CisgICAgfQorfQorCitzdGQ6OnNpemVfdCBS
ZW5kZXJTdGF0ZUNhY2hlOjpoYXNoUmFzdGVyaXplclN0YXRlKGNvbnN0IFJhc3Rlcml6ZXJTdGF0
ZUtleSAmcmFzdGVyU3RhdGUpCit7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBzZWVk
ID0gMHhBQkNERUY5ODsKKworICAgIHN0ZDo6c2l6ZV90IGhhc2ggPSAwOworICAgIE11cm11ckhh
c2gzX3g4Nl8zMigmcmFzdGVyU3RhdGUsIHNpemVvZihSYXN0ZXJpemVyU3RhdGVLZXkpLCBzZWVk
LCAmaGFzaCk7CisgICAgcmV0dXJuIGhhc2g7Cit9CisKK2Jvb2wgUmVuZGVyU3RhdGVDYWNoZTo6
Y29tcGFyZVJhc3Rlcml6ZXJTdGF0ZXMoY29uc3QgUmFzdGVyaXplclN0YXRlS2V5ICZhLCBjb25z
dCBSYXN0ZXJpemVyU3RhdGVLZXkgJmIpCit7CisgICAgcmV0dXJuIG1lbWNtcCgmYSwgJmIsIHNp
emVvZihSYXN0ZXJpemVyU3RhdGVLZXkpKSA9PSAwOworfQorCitJRDNEMTFSYXN0ZXJpemVyU3Rh
dGUgKlJlbmRlclN0YXRlQ2FjaGU6OmdldFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVy
aXplclN0YXRlICZyYXN0ZXJTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2Npc3NvckVuYWJsZWQsIHVuc2lnbmVk
IGludCBkZXB0aFNpemUpCit7CisgICAgaWYgKCFtRGV2aWNlKQorICAgIHsKKyAgICAgICAgRVJS
KCJSZW5kZXJTdGF0ZUNhY2hlIGlzIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgfQorCisgICAgUmFzdGVyaXplclN0YXRlS2V5IGtleTsKKyAgICBrZXkucmFz
dGVyaXplclN0YXRlID0gcmFzdGVyU3RhdGU7CisgICAga2V5LnNjaXNzb3JFbmFibGVkID0gc2Np
c3NvckVuYWJsZWQ7CisgICAga2V5LmRlcHRoU2l6ZSA9IGRlcHRoU2l6ZTsKKworICAgIFJhc3Rl
cml6ZXJTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9IG1SYXN0ZXJpemVyU3RhdGVDYWNoZS5maW5kKGtl
eSk7CisgICAgaWYgKGkgIT0gbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlLmVuZCgpKQorICAgIHsKKyAg
ICAgICAgUmFzdGVyaXplclN0YXRlQ291bnRlclBhaXIgJnN0YXRlID0gaS0+c2Vjb25kOworICAg
ICAgICBzdGF0ZS5zZWNvbmQgPSBtQ291bnRlcisrOworICAgICAgICByZXR1cm4gc3RhdGUuZmly
c3Q7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmIChtUmFzdGVyaXplclN0YXRl
Q2FjaGUuc2l6ZSgpID49IGtNYXhSYXN0ZXJpemVyU3RhdGVzKQorICAgICAgICB7CisgICAgICAg
ICAgICBUUkFDRSgiT3ZlcmZsb3dlZCB0aGUgbGltaXQgb2YgJXUgcmFzdGVyaXplciBzdGF0ZXMs
IHJlbW92aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkICIKKyAgICAgICAgICAgICAgICAgICJ0
byBtYWtlIHJvb20uIiwga01heFJhc3Rlcml6ZXJTdGF0ZXMpOworCisgICAgICAgICAgICBSYXN0
ZXJpemVyU3RhdGVNYXA6Oml0ZXJhdG9yIGxlYXN0UmVjZW50bHlVc2VkID0gbVJhc3Rlcml6ZXJT
dGF0ZUNhY2hlLmJlZ2luKCk7CisgICAgICAgICAgICBmb3IgKFJhc3Rlcml6ZXJTdGF0ZU1hcDo6
aXRlcmF0b3IgaSA9IG1SYXN0ZXJpemVyU3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1SYXN0ZXJp
emVyU3RhdGVDYWNoZS5lbmQoKTsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGlmIChpLT5zZWNvbmQuc2Vjb25kIDwgbGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5zZWNvbmQp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNl
ZCA9IGk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVh
c3RSZWNlbnRseVVzZWQtPnNlY29uZC5maXJzdC0+UmVsZWFzZSgpOworICAgICAgICAgICAgbVJh
c3Rlcml6ZXJTdGF0ZUNhY2hlLmVyYXNlKGxlYXN0UmVjZW50bHlVc2VkKTsKKyAgICAgICAgfQor
CisgICAgICAgIEQzRDExX0NVTExfTU9ERSBjdWxsTW9kZSA9IGdsX2QzZDExOjpDb252ZXJ0Q3Vs
bE1vZGUocmFzdGVyU3RhdGUuY3VsbEZhY2UsIHJhc3RlclN0YXRlLmN1bGxNb2RlKTsKKworICAg
ICAgICAvLyBEaXNhYmxlIGN1bGxpbmcgaWYgZHJhd2luZyBwb2ludHMKKyAgICAgICAgaWYgKHJh
c3RlclN0YXRlLnBvaW50RHJhd01vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGN1bGxNb2Rl
ID0gRDNEMTFfQ1VMTF9OT05FOworICAgICAgICB9CisKKyAgICAgICAgRDNEMTFfUkFTVEVSSVpF
Ul9ERVNDIHJhc3RlckRlc2M7CisgICAgICAgIHJhc3RlckRlc2MuRmlsbE1vZGUgPSBEM0QxMV9G
SUxMX1NPTElEOworICAgICAgICByYXN0ZXJEZXNjLkN1bGxNb2RlID0gY3VsbE1vZGU7CisgICAg
ICAgIHJhc3RlckRlc2MuRnJvbnRDb3VudGVyQ2xvY2t3aXNlID0gKHJhc3RlclN0YXRlLmZyb250
RmFjZSA9PSBHTF9DQ1cpID8gRkFMU0U6IFRSVUU7CisgICAgICAgIHJhc3RlckRlc2MuRGVwdGhC
aWFzID0gbGRleHAocmFzdGVyU3RhdGUucG9seWdvbk9mZnNldFVuaXRzLCAtc3RhdGljX2Nhc3Q8
aW50PihkZXB0aFNpemUpKTsKKyAgICAgICAgcmFzdGVyRGVzYy5EZXB0aEJpYXNDbGFtcCA9IDAu
MGY7IC8vIE1TRE4gZG9jdW1lbnRhdGlvbiBvZiBEZXB0aEJpYXNDbGFtcCBpbXBsaWVzIGEgdmFs
dWUgb2YgemVybyB3aWxsIHByZWZvcm0gbm8gY2xhbXBpbmcsIG11c3QgYmUgdGVzdGVkIHRob3Vn
aC4KKyAgICAgICAgcmFzdGVyRGVzYy5TbG9wZVNjYWxlZERlcHRoQmlhcyA9IHJhc3RlclN0YXRl
LnBvbHlnb25PZmZzZXRGYWN0b3I7CisgICAgICAgIHJhc3RlckRlc2MuRGVwdGhDbGlwRW5hYmxl
ID0gVFJVRTsKKyAgICAgICAgcmFzdGVyRGVzYy5TY2lzc29yRW5hYmxlID0gc2Npc3NvckVuYWJs
ZWQgPyBUUlVFIDogRkFMU0U7CisgICAgICAgIHJhc3RlckRlc2MuTXVsdGlzYW1wbGVFbmFibGUg
PSByYXN0ZXJTdGF0ZS5tdWx0aVNhbXBsZTsKKyAgICAgICAgcmFzdGVyRGVzYy5BbnRpYWxpYXNl
ZExpbmVFbmFibGUgPSBGQUxTRTsKKworICAgICAgICBJRDNEMTFSYXN0ZXJpemVyU3RhdGUgKmR4
MTFSYXN0ZXJpemVyU3RhdGUgPSBOVUxMOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZp
Y2UtPkNyZWF0ZVJhc3Rlcml6ZXJTdGF0ZSgmcmFzdGVyRGVzYywgJmR4MTFSYXN0ZXJpemVyU3Rh
dGUpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkgfHwgIWR4MTFSYXN0ZXJpemVyU3RhdGUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiVW5hYmxlIHRvIGNyZWF0ZSBhIElEM0QxMVJh
c3Rlcml6ZXJTdGF0ZSwgSFJFU1VMVDogMHglWC4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0
dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBtUmFzdGVyaXplclN0YXRlQ2FjaGUuaW5z
ZXJ0KHN0ZDo6bWFrZV9wYWlyKGtleSwgc3RkOjptYWtlX3BhaXIoZHgxMVJhc3Rlcml6ZXJTdGF0
ZSwgbUNvdW50ZXIrKykpKTsKKworICAgICAgICByZXR1cm4gZHgxMVJhc3Rlcml6ZXJTdGF0ZTsK
KyAgICB9Cit9CisKK3N0ZDo6c2l6ZV90IFJlbmRlclN0YXRlQ2FjaGU6Omhhc2hEZXB0aFN0ZW5j
aWxTdGF0ZShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmRzU3RhdGUpCit7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGludCBzZWVkID0gMHhBQkNERUY5ODsKKworICAgIHN0ZDo6c2l6
ZV90IGhhc2ggPSAwOworICAgIE11cm11ckhhc2gzX3g4Nl8zMigmZHNTdGF0ZSwgc2l6ZW9mKGds
OjpEZXB0aFN0ZW5jaWxTdGF0ZSksIHNlZWQsICZoYXNoKTsKKyAgICByZXR1cm4gaGFzaDsKK30K
KworYm9vbCBSZW5kZXJTdGF0ZUNhY2hlOjpjb21wYXJlRGVwdGhTdGVuY2lsU3RhdGVzKGNvbnN0
IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmYSwgY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZi
KQoreworICAgIHJldHVybiBtZW1jbXAoJmEsICZiLCBzaXplb2YoZ2w6OkRlcHRoU3RlbmNpbFN0
YXRlKSkgPT0gMDsKK30KKworSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKlJlbmRlclN0YXRlQ2Fj
aGU6OmdldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZHNT
dGF0ZSkKK3sKKyAgICBpZiAoIW1EZXZpY2UpCisgICAgeworICAgICAgICBFUlIoIlJlbmRlclN0
YXRlQ2FjaGUgaXMgbm90IGluaXRpYWxpemVkLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9CisKKyAgICBEZXB0aFN0ZW5jaWxTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9IG1EZXB0aFN0ZW5j
aWxTdGF0ZUNhY2hlLmZpbmQoZHNTdGF0ZSk7CisgICAgaWYgKGkgIT0gbURlcHRoU3RlbmNpbFN0
YXRlQ2FjaGUuZW5kKCkpCisgICAgeworICAgICAgICBEZXB0aFN0ZW5jaWxTdGF0ZUNvdW50ZXJQ
YWlyICZzdGF0ZSA9IGktPnNlY29uZDsKKyAgICAgICAgc3RhdGUuc2Vjb25kID0gbUNvdW50ZXIr
KzsKKyAgICAgICAgcmV0dXJuIHN0YXRlLmZpcnN0OworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBpZiAobURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUuc2l6ZSgpID49IGtNYXhEZXB0aFN0
ZW5jaWxTdGF0ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRSQUNFKCJPdmVyZmxvd2VkIHRo
ZSBsaW1pdCBvZiAldSBkZXB0aCBzdGVuY2lsIHN0YXRlcywgcmVtb3ZpbmcgdGhlIGxlYXN0IHJl
Y2VudGx5IHVzZWQgIgorICAgICAgICAgICAgICAgICAgInRvIG1ha2Ugcm9vbS4iLCBrTWF4RGVw
dGhTdGVuY2lsU3RhdGVzKTsKKworICAgICAgICAgICAgRGVwdGhTdGVuY2lsU3RhdGVNYXA6Oml0
ZXJhdG9yIGxlYXN0UmVjZW50bHlVc2VkID0gbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUuYmVnaW4o
KTsKKyAgICAgICAgICAgIGZvciAoRGVwdGhTdGVuY2lsU3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBt
RGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1EZXB0aFN0ZW5jaWxTdGF0ZUNh
Y2hlLmVuZCgpOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGktPnNl
Y29uZC5zZWNvbmQgPCBsZWFzdFJlY2VudGx5VXNlZC0+c2Vjb25kLnNlY29uZCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGxlYXN0UmVjZW50bHlVc2VkID0gaTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZWFzdFJlY2VudGx5
VXNlZC0+c2Vjb25kLmZpcnN0LT5SZWxlYXNlKCk7CisgICAgICAgICAgICBtRGVwdGhTdGVuY2ls
U3RhdGVDYWNoZS5lcmFzZShsZWFzdFJlY2VudGx5VXNlZCk7CisgICAgICAgIH0KKworICAgICAg
ICBEM0QxMV9ERVBUSF9TVEVOQ0lMX0RFU0MgZHNEZXNjID0geyAwIH07CisgICAgICAgIGRzRGVz
Yy5EZXB0aEVuYWJsZSA9IGRzU3RhdGUuZGVwdGhUZXN0ID8gVFJVRSA6IEZBTFNFOworICAgICAg
ICBkc0Rlc2MuRGVwdGhXcml0ZU1hc2sgPSBnbF9kM2QxMTo6Q29udmVydERlcHRoTWFzayhkc1N0
YXRlLmRlcHRoTWFzayk7CisgICAgICAgIGRzRGVzYy5EZXB0aEZ1bmMgPSBnbF9kM2QxMTo6Q29u
dmVydENvbXBhcmlzb24oZHNTdGF0ZS5kZXB0aEZ1bmMpOworICAgICAgICBkc0Rlc2MuU3RlbmNp
bEVuYWJsZSA9IGRzU3RhdGUuc3RlbmNpbFRlc3QgPyBUUlVFIDogRkFMU0U7CisgICAgICAgIGRz
RGVzYy5TdGVuY2lsUmVhZE1hc2sgPSBnbF9kM2QxMTo6Q29udmVydFN0ZW5jaWxNYXNrKGRzU3Rh
dGUuc3RlbmNpbE1hc2spOworICAgICAgICBkc0Rlc2MuU3RlbmNpbFdyaXRlTWFzayA9IGdsX2Qz
ZDExOjpDb252ZXJ0U3RlbmNpbE1hc2soZHNTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrKTsKKyAgICAg
ICAgZHNEZXNjLkZyb250RmFjZS5TdGVuY2lsRmFpbE9wID0gZ2xfZDNkMTE6OkNvbnZlcnRTdGVu
Y2lsT3AoZHNTdGF0ZS5zdGVuY2lsRmFpbCk7CisgICAgICAgIGRzRGVzYy5Gcm9udEZhY2UuU3Rl
bmNpbERlcHRoRmFpbE9wID0gZ2xfZDNkMTE6OkNvbnZlcnRTdGVuY2lsT3AoZHNTdGF0ZS5zdGVu
Y2lsUGFzc0RlcHRoRmFpbCk7CisgICAgICAgIGRzRGVzYy5Gcm9udEZhY2UuU3RlbmNpbFBhc3NP
cCA9IGdsX2QzZDExOjpDb252ZXJ0U3RlbmNpbE9wKGRzU3RhdGUuc3RlbmNpbFBhc3NEZXB0aFBh
c3MpOworICAgICAgICBkc0Rlc2MuRnJvbnRGYWNlLlN0ZW5jaWxGdW5jID0gZ2xfZDNkMTE6OkNv
bnZlcnRDb21wYXJpc29uKGRzU3RhdGUuc3RlbmNpbEZ1bmMpOworICAgICAgICBkc0Rlc2MuQmFj
a0ZhY2UuU3RlbmNpbEZhaWxPcCA9IGdsX2QzZDExOjpDb252ZXJ0U3RlbmNpbE9wKGRzU3RhdGUu
c3RlbmNpbEJhY2tGYWlsKTsKKyAgICAgICAgZHNEZXNjLkJhY2tGYWNlLlN0ZW5jaWxEZXB0aEZh
aWxPcCA9IGdsX2QzZDExOjpDb252ZXJ0U3RlbmNpbE9wKGRzU3RhdGUuc3RlbmNpbEJhY2tQYXNz
RGVwdGhGYWlsKTsKKyAgICAgICAgZHNEZXNjLkJhY2tGYWNlLlN0ZW5jaWxQYXNzT3AgPSBnbF9k
M2QxMTo6Q29udmVydFN0ZW5jaWxPcChkc1N0YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzcyk7
CisgICAgICAgIGRzRGVzYy5CYWNrRmFjZS5TdGVuY2lsRnVuYyA9IGdsX2QzZDExOjpDb252ZXJ0
Q29tcGFyaXNvbihkc1N0YXRlLnN0ZW5jaWxCYWNrRnVuYyk7CisKKyAgICAgICAgSUQzRDExRGVw
dGhTdGVuY2lsU3RhdGUgKmR4MTFEZXB0aFN0ZW5jaWxTdGF0ZSA9IE5VTEw7CisgICAgICAgIEhS
RVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlRGVwdGhTdGVuY2lsU3RhdGUoJmRzRGVzYywg
JmR4MTFEZXB0aFN0ZW5jaWxTdGF0ZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSB8fCAh
ZHgxMURlcHRoU3RlbmNpbFN0YXRlKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIlVuYWJs
ZSB0byBjcmVhdGUgYSBJRDNEMTFEZXB0aFN0ZW5jaWxTdGF0ZSwgSFJFU1VMVDogMHglWC4iLCBy
ZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBt
RGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5pbnNlcnQoc3RkOjptYWtlX3BhaXIoZHNTdGF0ZSwgc3Rk
OjptYWtlX3BhaXIoZHgxMURlcHRoU3RlbmNpbFN0YXRlLCBtQ291bnRlcisrKSkpOworCisgICAg
ICAgIHJldHVybiBkeDExRGVwdGhTdGVuY2lsU3RhdGU7CisgICAgfQorfQorCitzdGQ6OnNpemVf
dCBSZW5kZXJTdGF0ZUNhY2hlOjpoYXNoU2FtcGxlclN0YXRlKGNvbnN0IGdsOjpTYW1wbGVyU3Rh
dGUgJnNhbXBsZXJTdGF0ZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHNlZWQg
PSAweEFCQ0RFRjk4OworCisgICAgc3RkOjpzaXplX3QgaGFzaCA9IDA7CisgICAgTXVybXVySGFz
aDNfeDg2XzMyKCZzYW1wbGVyU3RhdGUsIHNpemVvZihnbDo6U2FtcGxlclN0YXRlKSwgc2VlZCwg
Jmhhc2gpOworICAgIHJldHVybiBoYXNoOworfQorCitib29sIFJlbmRlclN0YXRlQ2FjaGU6OmNv
bXBhcmVTYW1wbGVyU3RhdGVzKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJmEsIGNvbnN0IGdsOjpT
YW1wbGVyU3RhdGUgJmIpCit7CisgICAgcmV0dXJuIG1lbWNtcCgmYSwgJmIsIHNpemVvZihnbDo6
U2FtcGxlclN0YXRlKSkgPT0gMDsKK30KKworSUQzRDExU2FtcGxlclN0YXRlICpSZW5kZXJTdGF0
ZUNhY2hlOjpnZXRTYW1wbGVyU3RhdGUoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0
YXRlKQoreworICAgIGlmICghbURldmljZSkKKyAgICB7CisgICAgICAgIEVSUigiUmVuZGVyU3Rh
dGVDYWNoZSBpcyBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAg
IH0KKworICAgIFNhbXBsZXJTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9IG1TYW1wbGVyU3RhdGVDYWNo
ZS5maW5kKHNhbXBsZXJTdGF0ZSk7CisgICAgaWYgKGkgIT0gbVNhbXBsZXJTdGF0ZUNhY2hlLmVu
ZCgpKQorICAgIHsKKyAgICAgICAgU2FtcGxlclN0YXRlQ291bnRlclBhaXIgJnN0YXRlID0gaS0+
c2Vjb25kOworICAgICAgICBzdGF0ZS5zZWNvbmQgPSBtQ291bnRlcisrOworICAgICAgICByZXR1
cm4gc3RhdGUuZmlyc3Q7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmIChtU2Ft
cGxlclN0YXRlQ2FjaGUuc2l6ZSgpID49IGtNYXhTYW1wbGVyU3RhdGVzKQorICAgICAgICB7Cisg
ICAgICAgICAgICBUUkFDRSgiT3ZlcmZsb3dlZCB0aGUgbGltaXQgb2YgJXUgc2FtcGxlciBzdGF0
ZXMsIHJlbW92aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkICIKKyAgICAgICAgICAgICAgICAg
ICJ0byBtYWtlIHJvb20uIiwga01heFNhbXBsZXJTdGF0ZXMpOworCisgICAgICAgICAgICBTYW1w
bGVyU3RhdGVNYXA6Oml0ZXJhdG9yIGxlYXN0UmVjZW50bHlVc2VkID0gbVNhbXBsZXJTdGF0ZUNh
Y2hlLmJlZ2luKCk7CisgICAgICAgICAgICBmb3IgKFNhbXBsZXJTdGF0ZU1hcDo6aXRlcmF0b3Ig
aSA9IG1TYW1wbGVyU3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1TYW1wbGVyU3RhdGVDYWNoZS5l
bmQoKTsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpLT5zZWNvbmQu
c2Vjb25kIDwgbGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5zZWNvbmQpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNlZCA9IGk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVhc3RSZWNlbnRseVVzZWQt
PnNlY29uZC5maXJzdC0+UmVsZWFzZSgpOworICAgICAgICAgICAgbVNhbXBsZXJTdGF0ZUNhY2hl
LmVyYXNlKGxlYXN0UmVjZW50bHlVc2VkKTsKKyAgICAgICAgfQorCisgICAgICAgIEQzRDExX1NB
TVBMRVJfREVTQyBzYW1wbGVyRGVzYzsKKyAgICAgICAgc2FtcGxlckRlc2MuRmlsdGVyID0gZ2xf
ZDNkMTE6OkNvbnZlcnRGaWx0ZXIoc2FtcGxlclN0YXRlLm1pbkZpbHRlciwgc2FtcGxlclN0YXRl
Lm1hZ0ZpbHRlciwgc2FtcGxlclN0YXRlLm1heEFuaXNvdHJvcHkpOworICAgICAgICBzYW1wbGVy
RGVzYy5BZGRyZXNzVSA9IGdsX2QzZDExOjpDb252ZXJ0VGV4dHVyZVdyYXAoc2FtcGxlclN0YXRl
LndyYXBTKTsKKyAgICAgICAgc2FtcGxlckRlc2MuQWRkcmVzc1YgPSBnbF9kM2QxMTo6Q29udmVy
dFRleHR1cmVXcmFwKHNhbXBsZXJTdGF0ZS53cmFwVCk7CisgICAgICAgIHNhbXBsZXJEZXNjLkFk
ZHJlc3NXID0gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgICAgICBzYW1wbGVyRGVz
Yy5NaXBMT0RCaWFzID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNhbXBsZXJTdGF0ZS5sb2RPZmZzZXQp
OworICAgICAgICBzYW1wbGVyRGVzYy5NYXhBbmlzb3Ryb3B5ID0gc2FtcGxlclN0YXRlLm1heEFu
aXNvdHJvcHk7CisgICAgICAgIHNhbXBsZXJEZXNjLkNvbXBhcmlzb25GdW5jID0gRDNEMTFfQ09N
UEFSSVNPTl9ORVZFUjsKKyAgICAgICAgc2FtcGxlckRlc2MuQm9yZGVyQ29sb3JbMF0gPSAwLjBm
OworICAgICAgICBzYW1wbGVyRGVzYy5Cb3JkZXJDb2xvclsxXSA9IDAuMGY7CisgICAgICAgIHNh
bXBsZXJEZXNjLkJvcmRlckNvbG9yWzJdID0gMC4wZjsKKyAgICAgICAgc2FtcGxlckRlc2MuQm9y
ZGVyQ29sb3JbM10gPSAwLjBmOworICAgICAgICBzYW1wbGVyRGVzYy5NaW5MT0QgPSBnbF9kM2Qx
MTo6Q29udmVydE1pbkxPRChzYW1wbGVyU3RhdGUubWluRmlsdGVyLCBzYW1wbGVyU3RhdGUubG9k
T2Zmc2V0KTsKKyAgICAgICAgc2FtcGxlckRlc2MuTWF4TE9EID0gZ2xfZDNkMTE6OkNvbnZlcnRN
YXhMT0Qoc2FtcGxlclN0YXRlLm1pbkZpbHRlciwgc2FtcGxlclN0YXRlLmxvZE9mZnNldCk7CisK
KyAgICAgICAgSUQzRDExU2FtcGxlclN0YXRlICpkeDExU2FtcGxlclN0YXRlID0gTlVMTDsKKyAg
ICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVTYW1wbGVyU3RhdGUoJnNhbXBs
ZXJEZXNjLCAmZHgxMVNhbXBsZXJTdGF0ZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSB8
fCAhZHgxMVNhbXBsZXJTdGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJVbmFibGUg
dG8gY3JlYXRlIGEgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUsIEhSRVNVTFQ6IDB4JVguIiwgcmVz
dWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgbVNh
bXBsZXJTdGF0ZUNhY2hlLmluc2VydChzdGQ6Om1ha2VfcGFpcihzYW1wbGVyU3RhdGUsIHN0ZDo6
bWFrZV9wYWlyKGR4MTFTYW1wbGVyU3RhdGUsIG1Db3VudGVyKyspKSk7CisKKyAgICAgICAgcmV0
dXJuIGR4MTFTYW1wbGVyU3RhdGU7CisgICAgfQorfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJTdGF0ZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJTdGF0ZUNhY2hlLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlclN0YXRlQ2FjaGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDEgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKy8vIFJlbmRlclN0YXRlQ2FjaGUuaDogRGVmaW5lcyByeDo6UmVuZGVyU3Rh
dGVDYWNoZSwgYSBjYWNoZSBvZiBEaXJlY3QzRCByZW5kZXIKKy8vIHN0YXRlIG9iamVjdHMuCisK
KyNpZm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUlNUQVRFQ0FDSEVfSF8KKyNkZWZpbmUg
TElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUlNUQVRFQ0FDSEVfSF8KKworI2luY2x1ZGUgImxpYkdM
RVN2Mi9hbmdsZXR5cGVzLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFt
ZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFJlbmRlclN0YXRlQ2FjaGUKK3sKKyAgcHVibGljOgorICAg
IFJlbmRlclN0YXRlQ2FjaGUoKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJTdGF0ZUNhY2hlKCk7CisK
KyAgICB2b2lkIGluaXRpYWxpemUoSUQzRDExRGV2aWNlICpkZXZpY2UpOworICAgIHZvaWQgY2xl
YXIoKTsKKworICAgIC8vIEluY3JlbWVudHMgcmVmY291bnQgb24gdGhlIHJldHVybmVkIGJsZW5k
IHN0YXRlLCBSZWxlYXNlKCkgbXVzdCBiZSBjYWxsZWQuCisgICAgSUQzRDExQmxlbmRTdGF0ZSAq
Z2V0QmxlbmRTdGF0ZShjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSk7CisgICAgSUQz
RDExUmFzdGVyaXplclN0YXRlICpnZXRSYXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6OlJhc3Rlcml6
ZXJTdGF0ZSAmcmFzdGVyU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBzY2lzc29yRW5hYmxlZCwgdW5zaWduZWQgaW50IGRlcHRoU2l6ZSk7
CisgICAgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKmdldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0
IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZHNTdGF0ZSk7CisgICAgSUQzRDExU2FtcGxlclN0YXRl
ICpnZXRTYW1wbGVyU3RhdGUoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKTsK
KworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJTdGF0ZUNh
Y2hlKTsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtQ291bnRlcjsKKworICAgIC8vIEJsZW5k
IHN0YXRlIGNhY2hlCisgICAgc3RhdGljIHN0ZDo6c2l6ZV90IGhhc2hCbGVuZFN0YXRlKGNvbnN0
IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0YXRlKTsKKyAgICBzdGF0aWMgYm9vbCBjb21wYXJlQmxl
bmRTdGF0ZXMoY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmEsIGNvbnN0IGdsOjpCbGVuZFN0YXRlICZi
KTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGtNYXhCbGVuZFN0YXRlczsKKworICAg
IHR5cGVkZWYgc3RkOjpzaXplX3QgKCpCbGVuZFN0YXRlSGFzaEZ1bmN0aW9uKShjb25zdCBnbDo6
QmxlbmRTdGF0ZSAmKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpCbGVuZFN0YXRlRXF1YWxpdHlGdW5j
dGlvbikoY29uc3QgZ2w6OkJsZW5kU3RhdGUgJiwgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJik7Cisg
ICAgdHlwZWRlZiBzdGQ6OnBhaXI8SUQzRDExQmxlbmRTdGF0ZSosIHVuc2lnbmVkIGxvbmcgbG9u
Zz4gQmxlbmRTdGF0ZUNvdW50ZXJQYWlyOworICAgIHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFw
PGdsOjpCbGVuZFN0YXRlLCBCbGVuZFN0YXRlQ291bnRlclBhaXIsIEJsZW5kU3RhdGVIYXNoRnVu
Y3Rpb24sIEJsZW5kU3RhdGVFcXVhbGl0eUZ1bmN0aW9uPiBCbGVuZFN0YXRlTWFwOworICAgIEJs
ZW5kU3RhdGVNYXAgbUJsZW5kU3RhdGVDYWNoZTsKKworICAgIC8vIFJhc3Rlcml6ZXIgc3RhdGUg
Y2FjaGUKKyAgICBzdHJ1Y3QgUmFzdGVyaXplclN0YXRlS2V5CisgICAgeworICAgICAgICBnbDo6
UmFzdGVyaXplclN0YXRlIHJhc3Rlcml6ZXJTdGF0ZTsKKyAgICAgICAgYm9vbCBzY2lzc29yRW5h
YmxlZDsKKyAgICAgICAgdW5zaWduZWQgaW50IGRlcHRoU2l6ZTsKKyAgICB9OworICAgIHN0YXRp
YyBzdGQ6OnNpemVfdCBoYXNoUmFzdGVyaXplclN0YXRlKGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtl
eSAmcmFzdGVyU3RhdGUpOworICAgIHN0YXRpYyBib29sIGNvbXBhcmVSYXN0ZXJpemVyU3RhdGVz
KGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAmYSwgY29uc3QgUmFzdGVyaXplclN0YXRlS2V5ICZi
KTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGtNYXhSYXN0ZXJpemVyU3RhdGVzOwor
CisgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAoKlJhc3Rlcml6ZXJTdGF0ZUhhc2hGdW5jdGlvbiko
Y29uc3QgUmFzdGVyaXplclN0YXRlS2V5ICYpOworICAgIHR5cGVkZWYgYm9vbCAoKlJhc3Rlcml6
ZXJTdGF0ZUVxdWFsaXR5RnVuY3Rpb24pKGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAmLCBjb25z
dCBSYXN0ZXJpemVyU3RhdGVLZXkgJik7CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8SUQzRDExUmFz
dGVyaXplclN0YXRlKiwgdW5zaWduZWQgbG9uZyBsb25nPiBSYXN0ZXJpemVyU3RhdGVDb3VudGVy
UGFpcjsKKyAgICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxSYXN0ZXJpemVyU3RhdGVLZXks
IFJhc3Rlcml6ZXJTdGF0ZUNvdW50ZXJQYWlyLCBSYXN0ZXJpemVyU3RhdGVIYXNoRnVuY3Rpb24s
IFJhc3Rlcml6ZXJTdGF0ZUVxdWFsaXR5RnVuY3Rpb24+IFJhc3Rlcml6ZXJTdGF0ZU1hcDsKKyAg
ICBSYXN0ZXJpemVyU3RhdGVNYXAgbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlOworCisgICAgLy8gRGVw
dGggc3RlbmNpbCBzdGF0ZSBjYWNoZQorICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBoYXNoRGVwdGhT
dGVuY2lsU3RhdGUoY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZkc1N0YXRlKTsKKyAgICBz
dGF0aWMgYm9vbCBjb21wYXJlRGVwdGhTdGVuY2lsU3RhdGVzKGNvbnN0IGdsOjpEZXB0aFN0ZW5j
aWxTdGF0ZSAmYSwgY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZiKTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaW50IGtNYXhEZXB0aFN0ZW5jaWxTdGF0ZXM7CisKKyAgICB0eXBlZGVm
IHN0ZDo6c2l6ZV90ICgqRGVwdGhTdGVuY2lsU3RhdGVIYXNoRnVuY3Rpb24pKGNvbnN0IGdsOjpE
ZXB0aFN0ZW5jaWxTdGF0ZSAmKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpEZXB0aFN0ZW5jaWxTdGF0
ZUVxdWFsaXR5RnVuY3Rpb24pKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmLCBjb25zdCBn
bDo6RGVwdGhTdGVuY2lsU3RhdGUgJik7CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8SUQzRDExRGVw
dGhTdGVuY2lsU3RhdGUqLCB1bnNpZ25lZCBsb25nIGxvbmc+IERlcHRoU3RlbmNpbFN0YXRlQ291
bnRlclBhaXI7CisgICAgdHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8Z2w6OkRlcHRoU3RlbmNp
bFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHRoU3RlbmNpbFN0YXRl
Q291bnRlclBhaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwdGhTdGVuY2ls
U3RhdGVIYXNoRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwdGhT
dGVuY2lsU3RhdGVFcXVhbGl0eUZ1bmN0aW9uPiBEZXB0aFN0ZW5jaWxTdGF0ZU1hcDsKKyAgICBE
ZXB0aFN0ZW5jaWxTdGF0ZU1hcCBtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZTsKKworICAgIC8vIFNh
bXBsZSBzdGF0ZSBjYWNoZQorICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBoYXNoU2FtcGxlclN0YXRl
KGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSk7CisgICAgc3RhdGljIGJvb2wg
Y29tcGFyZVNhbXBsZXJTdGF0ZXMoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmYSwgY29uc3QgZ2w6
OlNhbXBsZXJTdGF0ZSAmYik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBrTWF4U2Ft
cGxlclN0YXRlczsKKworICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgKCpTYW1wbGVyU3RhdGVIYXNo
RnVuY3Rpb24pKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJik7CisgICAgdHlwZWRlZiBib29sICgq
U2FtcGxlclN0YXRlRXF1YWxpdHlGdW5jdGlvbikoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmLCBj
b25zdCBnbDo6U2FtcGxlclN0YXRlICYpOworICAgIHR5cGVkZWYgc3RkOjpwYWlyPElEM0QxMVNh
bXBsZXJTdGF0ZSosIHVuc2lnbmVkIGxvbmcgbG9uZz4gU2FtcGxlclN0YXRlQ291bnRlclBhaXI7
CisgICAgdHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8Z2w6OlNhbXBsZXJTdGF0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVyU3RhdGVDb3VudGVyUGFpciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVyU3RhdGVIYXNoRnVuY3Rpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlclN0YXRlRXF1YWxpdHlGdW5jdGlvbj4g
U2FtcGxlclN0YXRlTWFwOworICAgIFNhbXBsZXJTdGF0ZU1hcCBtU2FtcGxlclN0YXRlQ2FjaGU7
CisKKyAgICBJRDNEMTFEZXZpY2UgKm1EZXZpY2U7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJH
TEVTVjJfUkVOREVSRVJfUkVOREVSU1RBVEVDQUNIRV9IXwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvUmVuZGVyVGFyZ2V0OS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQ5LmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVy
VGFyZ2V0OS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEzIEBACisjaW5jbHVkZSAicHJl
Y29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBSZW5kZXJUYXJnZXQ5LmNwcDogSW1wbGVt
ZW50cyBhIEQzRDktc3BlY2lmaWMgd3JhcHBlciBmb3IgSURpcmVjdDNEU3VyZmFjZTkKKy8vIHBv
aW50ZXJzIHJldGFpbmVkIGJ5IHJlbmRlcmJ1ZmZlcnMuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvUmVuZGVyVGFyZ2V0OS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9S
ZW5kZXJlcjkuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRp
bHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorCituYW1lc3BhY2UgcngKK3sKKwor
UmVuZGVyVGFyZ2V0OTo6UmVuZGVyVGFyZ2V0OShSZW5kZXJlciAqcmVuZGVyZXIsIElEaXJlY3Qz
RFN1cmZhY2U5ICpzdXJmYWNlKQoreworICAgIG1SZW5kZXJlciA9IFJlbmRlcmVyOTo6bWFrZVJl
bmRlcmVyOShyZW5kZXJlcik7CisgICAgbVJlbmRlclRhcmdldCA9IHN1cmZhY2U7CisKKyAgICBp
ZiAobVJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjcmlw
dGlvbjsKKyAgICAgICAgbVJlbmRlclRhcmdldC0+R2V0RGVzYygmZGVzY3JpcHRpb24pOworCisg
ICAgICAgIG1XaWR0aCA9IGRlc2NyaXB0aW9uLldpZHRoOworICAgICAgICBtSGVpZ2h0ID0gZGVz
Y3JpcHRpb24uSGVpZ2h0OworICAgICAgICAKKyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gZDNk
OV9nbDo6R2V0RXF1aXZhbGVudEZvcm1hdChkZXNjcmlwdGlvbi5Gb3JtYXQpOworICAgICAgICBt
QWN0dWFsRm9ybWF0ID0gZDNkOV9nbDo6R2V0RXF1aXZhbGVudEZvcm1hdChkZXNjcmlwdGlvbi5G
b3JtYXQpOworICAgICAgICBtU2FtcGxlcyA9IGQzZDlfZ2w6OkdldFNhbXBsZXNGcm9tTXVsdGlz
YW1wbGVUeXBlKGRlc2NyaXB0aW9uLk11bHRpU2FtcGxlVHlwZSk7CisgICAgfQorfQorCitSZW5k
ZXJUYXJnZXQ5OjpSZW5kZXJUYXJnZXQ5KFJlbmRlcmVyICpyZW5kZXJlciwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcykKK3sKKyAg
ICBtUmVuZGVyZXIgPSBSZW5kZXJlcjk6Om1ha2VSZW5kZXJlcjkocmVuZGVyZXIpOworICAgIG1S
ZW5kZXJUYXJnZXQgPSBOVUxMOworCisgICAgRDNERk9STUFUIHJlcXVlc3RlZEZvcm1hdCA9IGds
X2QzZDk6OkNvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQoZm9ybWF0KTsKKyAgICBpbnQgc3VwcG9y
dGVkU2FtcGxlcyA9IG1SZW5kZXJlci0+Z2V0TmVhcmVzdFN1cHBvcnRlZFNhbXBsZXMocmVxdWVz
dGVkRm9ybWF0LCBzYW1wbGVzKTsKKworICAgIGlmIChzdXBwb3J0ZWRTYW1wbGVzID09IC0xKQor
ICAgIHsKKyAgICAgICAgZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworCisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBIUkVTVUxUIHJlc3VsdCA9IEQzREVSUl9JTlZBTElEQ0FMTDsK
KyAgICAKKyAgICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApCisgICAgeworICAgICAgICBp
ZiAocmVxdWVzdGVkRm9ybWF0ID09IEQzREZNVF9EMjRTOCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmVzdWx0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKS0+Q3JlYXRlRGVwdGhTdGVuY2lsU3Vy
ZmFjZSh3aWR0aCwgaGVpZ2h0LCByZXF1ZXN0ZWRGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2Qz
ZDk6OkdldE11bHRpc2FtcGxlVHlwZUZyb21TYW1wbGVzKHN1cHBvcnRlZFNhbXBsZXMpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCBGQUxTRSwgJm1SZW5kZXJUYXJnZXQsIE5VTEwpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0ID0gbVJlbmRlcmVyLT5n
ZXREZXZpY2UoKS0+Q3JlYXRlUmVuZGVyVGFyZ2V0KHdpZHRoLCBoZWlnaHQsIHJlcXVlc3RlZEZv
cm1hdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2xfZDNkOTo6R2V0TXVsdGlzYW1wbGVUeXBlRnJvbVNhbXBsZXMoc3Vw
cG9ydGVkU2FtcGxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgRkFMU0UsICZtUmVuZGVyVGFyZ2V0LCBOVUxMKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1P
UlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICB9CisKKyAgICBt
V2lkdGggPSB3aWR0aDsKKyAgICBtSGVpZ2h0ID0gaGVpZ2h0OworICAgIG1JbnRlcm5hbEZvcm1h
dCA9IGZvcm1hdDsKKyAgICBtU2FtcGxlcyA9IHN1cHBvcnRlZFNhbXBsZXM7CisgICAgbUFjdHVh
bEZvcm1hdCA9IGQzZDlfZ2w6OkdldEVxdWl2YWxlbnRGb3JtYXQocmVxdWVzdGVkRm9ybWF0KTsK
K30KKworUmVuZGVyVGFyZ2V0OTo6flJlbmRlclRhcmdldDkoKQoreworICAgIGlmIChtUmVuZGVy
VGFyZ2V0KQorICAgIHsKKyAgICAgICAgbVJlbmRlclRhcmdldC0+UmVsZWFzZSgpOworICAgIH0K
K30KKworUmVuZGVyVGFyZ2V0OSAqUmVuZGVyVGFyZ2V0OTo6bWFrZVJlbmRlclRhcmdldDkoUmVu
ZGVyVGFyZ2V0ICp0YXJnZXQpCit7CisgICAgQVNTRVJUKEhBU19EWU5BTUlDX1RZUEUocng6OlJl
bmRlclRhcmdldDkqLCB0YXJnZXQpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cng6OlJlbmRl
clRhcmdldDkqPih0YXJnZXQpOworfQorCitJRGlyZWN0M0RTdXJmYWNlOSAqUmVuZGVyVGFyZ2V0
OTo6Z2V0U3VyZmFjZSgpCit7CisgICAgLy8gQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciByZWxl
YXNpbmcgdGhlIHJldHVybmVkIHN1cmZhY2UgcmVmZXJlbmNlLgorICAgIGlmIChtUmVuZGVyVGFy
Z2V0KQorICAgIHsKKyAgICAgICAgbVJlbmRlclRhcmdldC0+QWRkUmVmKCk7CisgICAgfQorCisg
ICAgcmV0dXJuIG1SZW5kZXJUYXJnZXQ7Cit9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1JlbmRlclRhcmdldDkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDkuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0
OS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVu
ZGVyVGFyZ2V0OS5oOiBEZWZpbmVzIGEgRDNEOS1zcGVjaWZpYyB3cmFwcGVyIGZvciBJRGlyZWN0
M0RTdXJmYWNlOSBwb2ludGVycworLy8gcmV0YWluZWQgYnkgUmVuZGVyYnVmZmVycy4KKworI2lm
bmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfUkVOREVSVEFSR0VUOV9IXworI2RlZmluZSBMSUJHTEVT
VjJfUkVOREVSRVJfUkVOREVSVEFSR0VUOV9IXworCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRl
cmVyL1JlbmRlclRhcmdldC5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOwor
Y2xhc3MgUmVuZGVyZXI5OworCitjbGFzcyBSZW5kZXJUYXJnZXQ5IDogcHVibGljIFJlbmRlclRh
cmdldAoreworICBwdWJsaWM6CisgICAgUmVuZGVyVGFyZ2V0OShSZW5kZXJlciAqcmVuZGVyZXIs
IElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlKTsKKyAgICBSZW5kZXJUYXJnZXQ5KFJlbmRlcmVy
ICpyZW5kZXJlciwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQs
IEdMc2l6ZWkgc2FtcGxlcyk7CisgICAgdmlydHVhbCB+UmVuZGVyVGFyZ2V0OSgpOworCisgICAg
c3RhdGljIFJlbmRlclRhcmdldDkgKm1ha2VSZW5kZXJUYXJnZXQ5KFJlbmRlclRhcmdldCAqcmVu
ZGVyVGFyZ2V0KTsKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0U3VyZmFjZSgpOworCisgIHBy
aXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlclRhcmdldDkpOworCisg
ICAgSURpcmVjdDNEU3VyZmFjZTkgKm1SZW5kZXJUYXJnZXQ7CisKKyAgICBSZW5kZXJlcjkgKm1S
ZW5kZXJlcjsKK307CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJU
QVJHRVQ5X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1JlbmRlclRhcmdldDExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDExLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyVGFyZ2V0MTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3OCBAQAorI2luY2x1
ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVyVGFyZ2V0MTEuY3Bw
OiBJbXBsZW1lbnRzIGEgRFgxMS1zcGVjaWZpYyB3cmFwcGVyIGZvciBJRDNEMTFWaWV3IHBvaW50
ZXJzCisvLyByZXRhaW5lZCBieSBSZW5kZXJidWZmZXJzLgorCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlclRhcmdldDExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L1JlbmRlcmVyMTEuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjEx
X3V0aWxzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKworbmFtZXNwYWNlIHJ4Cit7
CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0UlRWU3VicmVzb3VyY2VJbmRleChJRDNEMTFUZXh0
dXJlMkQgKnRleHR1cmUsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnZpZXcpCit7CisgICAgRDNE
MTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKKyAgICB2aWV3LT5HZXREZXNjKCZy
dHZEZXNjKTsKKworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleERlc2M7CisgICAgdGV4dHVy
ZS0+R2V0RGVzYygmdGV4RGVzYyk7CisKKyAgICB1bnNpZ25lZCBpbnQgbWlwU2xpY2UgPSAwOwor
ICAgIHVuc2lnbmVkIGludCBhcnJheVNsaWNlID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgbWlwTGV2
ZWxzID0gdGV4RGVzYy5NaXBMZXZlbHM7CisKKyAgICBzd2l0Y2ggKHJ0dkRlc2MuVmlld0RpbWVu
c2lvbikKKyAgICB7CisgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTFEOgor
ICAgICAgICBtaXBTbGljZSA9IHJ0dkRlc2MuVGV4dHVyZTFELk1pcFNsaWNlOworICAgICAgICBh
cnJheVNsaWNlID0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRDNEMTFfUlRWX0RJ
TUVOU0lPTl9URVhUVVJFMURBUlJBWToKKyAgICAgICAgbWlwU2xpY2UgPSBydHZEZXNjLlRleHR1
cmUxREFycmF5Lk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNlID0gcnR2RGVzYy5UZXh0dXJl
MURBcnJheS5GaXJzdEFycmF5U2xpY2U7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEQz
RDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEOgorICAgICAgICBtaXBTbGljZSA9IHJ0dkRlc2Mu
VGV4dHVyZTJELk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNlID0gMDsKKyAgICAgICAgYnJl
YWs7CisKKyAgICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWToKKyAg
ICAgICAgbWlwU2xpY2UgPSBydHZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlOworICAgICAg
ICBhcnJheVNsaWNlID0gcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2U7Cisg
ICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJE
TVM6CisgICAgICAgIG1pcFNsaWNlID0gMDsKKyAgICAgICAgYXJyYXlTbGljZSA9IDA7CisgICAg
ICAgIGJyZWFrOworCisgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJETVNB
UlJBWToKKyAgICAgICAgbWlwU2xpY2UgPSAwOworICAgICAgICBhcnJheVNsaWNlID0gcnR2RGVz
Yy5UZXh0dXJlMkRNU0FycmF5LkZpcnN0QXJyYXlTbGljZTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFM0Q6CisgICAgICAgIG1pcFNsaWNl
ID0gcnR2RGVzYy5UZXh0dXJlM0QuTWlwU2xpY2U7CisgICAgICAgIGFycmF5U2xpY2UgPSAwOwor
ICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBEM0QxMV9SVFZfRElNRU5TSU9OX1VOS05PV046
CisgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fQlVGRkVSOgorICAgICAgICBVTklNUExF
TUVOVEVEKCk7CisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gRDNEMTFDYWxj
U3VicmVzb3VyY2UobWlwU2xpY2UsIGFycmF5U2xpY2UsIG1pcExldmVscyk7Cit9CisKK3N0YXRp
YyB1bnNpZ25lZCBpbnQgZ2V0RFNWU3VicmVzb3VyY2VJbmRleChJRDNEMTFUZXh0dXJlMkQgKnRl
eHR1cmUsIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKnZpZXcpCit7CisgICAgRDNEMTFfREVQVEhf
U1RFTkNJTF9WSUVXX0RFU0MgZHN2RGVzYzsKKyAgICB2aWV3LT5HZXREZXNjKCZkc3ZEZXNjKTsK
KworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleERlc2M7CisgICAgdGV4dHVyZS0+R2V0RGVz
YygmdGV4RGVzYyk7CisKKyAgICB1bnNpZ25lZCBpbnQgbWlwU2xpY2UgPSAwOworICAgIHVuc2ln
bmVkIGludCBhcnJheVNsaWNlID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgbWlwTGV2ZWxzID0gdGV4
RGVzYy5NaXBMZXZlbHM7CisKKyAgICBzd2l0Y2ggKGRzdkRlc2MuVmlld0RpbWVuc2lvbikKKyAg
ICB7CisgICAgICBjYXNlIEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTFEOgorICAgICAgICBt
aXBTbGljZSA9IGRzdkRlc2MuVGV4dHVyZTFELk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNl
ID0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRDNEMTFfRFNWX0RJTUVOU0lPTl9U
RVhUVVJFMURBUlJBWToKKyAgICAgICAgbWlwU2xpY2UgPSBkc3ZEZXNjLlRleHR1cmUxREFycmF5
Lk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNlID0gZHN2RGVzYy5UZXh0dXJlMURBcnJheS5G
aXJzdEFycmF5U2xpY2U7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEQzRDExX0RTVl9E
SU1FTlNJT05fVEVYVFVSRTJEOgorICAgICAgICBtaXBTbGljZSA9IGRzdkRlc2MuVGV4dHVyZTJE
Lk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNlID0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICAgIGNhc2UgRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWToKKyAgICAgICAgbWlw
U2xpY2UgPSBkc3ZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlOworICAgICAgICBhcnJheVNs
aWNlID0gZHN2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2U7CisgICAgICAgIGJy
ZWFrOworCisgICAgICBjYXNlIEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJETVM6CisgICAg
ICAgIG1pcFNsaWNlID0gMDsKKyAgICAgICAgYXJyYXlTbGljZSA9IDA7CisgICAgICAgIGJyZWFr
OworCisgICAgICBjYXNlIEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJETVNBUlJBWToKKyAg
ICAgICAgbWlwU2xpY2UgPSAwOworICAgICAgICBhcnJheVNsaWNlID0gZHN2RGVzYy5UZXh0dXJl
MkRNU0FycmF5LkZpcnN0QXJyYXlTbGljZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2Ug
RDNEMTFfUlRWX0RJTUVOU0lPTl9VTktOT1dOOgorICAgICAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gRDNEMTFDYWxjU3VicmVzb3VyY2Uo
bWlwU2xpY2UsIGFycmF5U2xpY2UsIG1pcExldmVscyk7Cit9CisKK1JlbmRlclRhcmdldDExOjpS
ZW5kZXJUYXJnZXQxMShSZW5kZXJlciAqcmVuZGVyZXIsIElEM0QxMVJlbmRlclRhcmdldFZpZXcg
KnJ0diwgSUQzRDExVGV4dHVyZTJEICp0ZXgsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBtUmVuZGVyZXIgPSBSZW5k
ZXJlcjExOjptYWtlUmVuZGVyZXIxMShyZW5kZXJlcik7CisgICAgbVRleHR1cmUgPSB0ZXg7Cisg
ICAgbVJlbmRlclRhcmdldCA9IHJ0djsKKyAgICBtRGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICBt
U2hhZGVyUmVzb3VyY2UgPSBzcnY7CisgICAgbVN1YnJlc291cmNlSW5kZXggPSAwOworCisgICAg
aWYgKG1SZW5kZXJUYXJnZXQgJiYgbVRleHR1cmUpCisgICAgeworICAgICAgICBEM0QxMV9SRU5E
RVJfVEFSR0VUX1ZJRVdfREVTQyBkZXNjOworICAgICAgICBtUmVuZGVyVGFyZ2V0LT5HZXREZXNj
KCZkZXNjKTsKKworICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyB0ZXhEZXNjOworICAgICAg
ICBtVGV4dHVyZS0+R2V0RGVzYygmdGV4RGVzYyk7CisKKyAgICAgICAgbVN1YnJlc291cmNlSW5k
ZXggPSBnZXRSVFZTdWJyZXNvdXJjZUluZGV4KG1UZXh0dXJlLCBtUmVuZGVyVGFyZ2V0KTsKKyAg
ICAgICAgbVdpZHRoID0gd2lkdGg7CisgICAgICAgIG1IZWlnaHQgPSBoZWlnaHQ7CisgICAgICAg
IG1TYW1wbGVzID0gKHRleERlc2MuU2FtcGxlRGVzYy5Db3VudCA+IDEpID8gdGV4RGVzYy5TYW1w
bGVEZXNjLkNvdW50IDogMDsKKworICAgICAgICBtSW50ZXJuYWxGb3JtYXQgPSBkM2QxMV9nbDo6
Q29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdChkZXNjLkZvcm1hdCk7CisgICAgICAgIG1BY3R1
YWxGb3JtYXQgPSBkM2QxMV9nbDo6Q29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdChkZXNjLkZv
cm1hdCk7CisgICAgfQorfQorCitSZW5kZXJUYXJnZXQxMTo6UmVuZGVyVGFyZ2V0MTEoUmVuZGVy
ZXIgKnJlbmRlcmVyLCBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkc3YsIElEM0QxMVRleHR1cmUy
RCAqdGV4LCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQpCit7CisgICAgbVJlbmRlcmVyID0gUmVuZGVyZXIxMTo6bWFrZVJlbmRlcmVy
MTEocmVuZGVyZXIpOworICAgIG1UZXh0dXJlID0gdGV4OworICAgIG1SZW5kZXJUYXJnZXQgPSBO
VUxMOworICAgIG1EZXB0aFN0ZW5jaWwgPSBkc3Y7CisgICAgbVNoYWRlclJlc291cmNlID0gc3J2
OworICAgIG1TdWJyZXNvdXJjZUluZGV4ID0gMDsKKworICAgIGlmIChtRGVwdGhTdGVuY2lsICYm
IG1UZXh0dXJlKQorICAgIHsKKyAgICAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9WSUVXX0RFU0Mg
ZGVzYzsKKyAgICAgICAgbURlcHRoU3RlbmNpbC0+R2V0RGVzYygmZGVzYyk7CisKKyAgICAgICAg
RDNEMTFfVEVYVFVSRTJEX0RFU0MgdGV4RGVzYzsKKyAgICAgICAgbVRleHR1cmUtPkdldERlc2Mo
JnRleERlc2MpOworCisgICAgICAgIG1TdWJyZXNvdXJjZUluZGV4ID0gZ2V0RFNWU3VicmVzb3Vy
Y2VJbmRleChtVGV4dHVyZSwgbURlcHRoU3RlbmNpbCk7CisgICAgICAgIG1XaWR0aCA9IHdpZHRo
OworICAgICAgICBtSGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBtU2FtcGxlcyA9ICh0ZXhEZXNj
LlNhbXBsZURlc2MuQ291bnQgPiAxKSA/IHRleERlc2MuU2FtcGxlRGVzYy5Db3VudCA6IDA7CisK
KyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gZDNkMTFfZ2w6OkNvbnZlcnRUZXh0dXJlSW50ZXJu
YWxGb3JtYXQoZGVzYy5Gb3JtYXQpOworICAgICAgICBtQWN0dWFsRm9ybWF0ID0gZDNkMTFfZ2w6
OkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoZGVzYy5Gb3JtYXQpOworICAgIH0KK30KKwor
UmVuZGVyVGFyZ2V0MTE6OlJlbmRlclRhcmdldDExKFJlbmRlcmVyICpyZW5kZXJlciwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywg
Ym9vbCBkZXB0aCkKK3sKKyAgICBtUmVuZGVyZXIgPSBSZW5kZXJlcjExOjptYWtlUmVuZGVyZXIx
MShyZW5kZXJlcik7CisgICAgbVRleHR1cmUgPSBOVUxMOworICAgIG1SZW5kZXJUYXJnZXQgPSBO
VUxMOworICAgIG1EZXB0aFN0ZW5jaWwgPSBOVUxMOworICAgIG1TaGFkZXJSZXNvdXJjZSA9IE5V
TEw7CisKKyAgICBEWEdJX0ZPUk1BVCByZXF1ZXN0ZWRGb3JtYXQgPSBnbF9kM2QxMTo6Q29udmVy
dFJlbmRlcmJ1ZmZlckZvcm1hdChmb3JtYXQpOworCisgICAgaW50IHN1cHBvcnRlZFNhbXBsZXMg
PSBtUmVuZGVyZXItPmdldE5lYXJlc3RTdXBwb3J0ZWRTYW1wbGVzKHJlcXVlc3RlZEZvcm1hdCwg
c2FtcGxlcyk7CisgICAgaWYgKHN1cHBvcnRlZFNhbXBsZXMgPCAwKQorICAgIHsKKyAgICAgICAg
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRl
IHRleHR1cmUgcmVzb3VyY2UKKyAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVzYzsKKyAg
ICAgICAgZGVzYy5XaWR0aCA9IHdpZHRoOyAKKyAgICAgICAgZGVzYy5IZWlnaHQgPSBoZWlnaHQ7
CisgICAgICAgIGRlc2MuTWlwTGV2ZWxzID0gMTsKKyAgICAgICAgZGVzYy5BcnJheVNpemUgPSAx
OworICAgICAgICBkZXNjLkZvcm1hdCA9IHJlcXVlc3RlZEZvcm1hdDsKKyAgICAgICAgZGVzYy5T
YW1wbGVEZXNjLkNvdW50ID0gKHN1cHBvcnRlZFNhbXBsZXMgPT0gMCkgPyAxIDogc3VwcG9ydGVk
U2FtcGxlczsKKyAgICAgICAgZGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAgICBk
ZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKKyAgICAgICAgZGVzYy5DUFVBY2Nlc3NG
bGFncyA9IDA7CisgICAgICAgIGRlc2MuTWlzY0ZsYWdzID0gMDsKKyAgICAgICAgZGVzYy5CaW5k
RmxhZ3MgPSAoZGVwdGggPyBEM0QxMV9CSU5EX0RFUFRIX1NURU5DSUwgOiAoRDNEMTFfQklORF9S
RU5ERVJfVEFSR0VUIHwgRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0UpKTsKKworICAgICAgICBJ
RDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgICAgIEhS
RVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlc2MsIE5VTEwsICZtVGV4
dHVyZSk7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKQorICAgICAgICB7
CisgICAgICAgICAgICBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKwor
ICAgICAgICBpZiAoZGVwdGgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEQzRDExX0RFUFRIX1NU
RU5DSUxfVklFV19ERVNDIGRzdkRlc2M7CisgICAgICAgICAgICBkc3ZEZXNjLkZvcm1hdCA9IHJl
cXVlc3RlZEZvcm1hdDsKKyAgICAgICAgICAgIGRzdkRlc2MuVmlld0RpbWVuc2lvbiA9IChzdXBw
b3J0ZWRTYW1wbGVzID09IDApID8gRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkQgOiBEM0Qx
MV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyRE1TOworICAgICAgICAgICAgZHN2RGVzYy5UZXh0dXJl
MkQuTWlwU2xpY2UgPSAwOworICAgICAgICAgICAgZHN2RGVzYy5GbGFncyA9IDA7CisgICAgICAg
ICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFZpZXcobVRleHR1cmUsICZk
c3ZEZXNjLCAmbURlcHRoU3RlbmNpbCk7CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9P
VVRPRk1FTU9SWSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtVGV4dHVyZS0+UmVs
ZWFzZSgpOworICAgICAgICAgICAgICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICAgICAgICAgICAg
ICBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVz
YzsKKyAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ID0gcmVxdWVzdGVkRm9ybWF0OworICAgICAg
ICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uID0gKHN1cHBvcnRlZFNhbXBsZXMgPT0gMCkgPyBE
M0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyRCA6IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVS
RTJETVM7CisgICAgICAgICAgICBydHZEZXNjLlRleHR1cmUyRC5NaXBTbGljZSA9IDA7CisgICAg
ICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcobVRleHR1cmUs
ICZydHZEZXNjLCAmbVJlbmRlclRhcmdldCk7CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0g
RV9PVVRPRk1FTU9SWSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtVGV4dHVyZS0+
UmVsZWFzZSgpOworICAgICAgICAgICAgICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICAgICAgICAg
ICAgICBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsK
KworICAgICAgICAgICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZEZXNjOwor
ICAgICAgICAgICAgc3J2RGVzYy5Gb3JtYXQgPSByZXF1ZXN0ZWRGb3JtYXQ7CisgICAgICAgICAg
ICBzcnZEZXNjLlZpZXdEaW1lbnNpb24gPSAoc3VwcG9ydGVkU2FtcGxlcyA9PSAwKSA/IEQzRDEx
X1NSVl9ESU1FTlNJT05fVEVYVFVSRTJEIDogRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkRN
UzsKKyAgICAgICAgICAgIHNydkRlc2MuVGV4dHVyZTJELk1vc3REZXRhaWxlZE1pcCA9IDA7Cisg
ICAgICAgICAgICBzcnZEZXNjLlRleHR1cmUyRC5NaXBMZXZlbHMgPSAxOworICAgICAgICAgICAg
cmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVTaGFkZXJSZXNvdXJjZVZpZXcobVRleHR1cmUsICZzcnZE
ZXNjLCAmbVNoYWRlclJlc291cmNlKTsKKworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFX09V
VE9GTUVNT1JZKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1UZXh0dXJlLT5SZWxl
YXNlKCk7CisgICAgICAgICAgICAgICAgbVRleHR1cmUgPSBOVUxMOworICAgICAgICAgICAgICAg
IG1SZW5kZXJUYXJnZXQtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0
ID0gTlVMTDsKKyAgICAgICAgICAgICAgICBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJU
KFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1XaWR0aCA9IHdp
ZHRoOworICAgIG1IZWlnaHQgPSBoZWlnaHQ7CisgICAgbUludGVybmFsRm9ybWF0ID0gZm9ybWF0
OworICAgIG1TYW1wbGVzID0gc3VwcG9ydGVkU2FtcGxlczsKKyAgICBtQWN0dWFsRm9ybWF0ID0g
ZDNkMTFfZ2w6OkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQocmVxdWVzdGVkRm9ybWF0KTsK
KyAgICBtU3VicmVzb3VyY2VJbmRleCA9IEQzRDExQ2FsY1N1YnJlc291cmNlKDAsIDAsIDEpOwor
fQorCitSZW5kZXJUYXJnZXQxMTo6flJlbmRlclRhcmdldDExKCkKK3sKKyAgICBpZiAobVRleHR1
cmUpCisgICAgeworICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOworICAgICAgICBtVGV4dHVy
ZSA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1SZW5kZXJUYXJnZXQpCisgICAgeworICAgICAg
ICBtUmVuZGVyVGFyZ2V0LT5SZWxlYXNlKCk7CisgICAgICAgIG1SZW5kZXJUYXJnZXQgPSBOVUxM
OworICAgIH0KKworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgbURlcHRo
U3RlbmNpbC0+UmVsZWFzZSgpOworICAgICAgICBtRGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICB9
CisKKyAgICBpZiAobVNoYWRlclJlc291cmNlKQorICAgIHsKKyAgICAgICAgbVNoYWRlclJlc291
cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIG1TaGFkZXJSZXNvdXJjZSA9IE5VTEw7CisgICAgfQor
fQorCitSZW5kZXJUYXJnZXQxMSAqUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShS
ZW5kZXJUYXJnZXQgKnRhcmdldCkKK3sKKyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShyeDo6
UmVuZGVyVGFyZ2V0MTEqLCB0YXJnZXQpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cng6OlJl
bmRlclRhcmdldDExKj4odGFyZ2V0KTsKK30KKworSUQzRDExVGV4dHVyZTJEICpSZW5kZXJUYXJn
ZXQxMTo6Z2V0VGV4dHVyZSgpIGNvbnN0Cit7CisgICAgaWYgKG1UZXh0dXJlKQorICAgIHsKKyAg
ICAgICAgbVRleHR1cmUtPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtVGV4dHVyZTsK
K30KKworLy8gQWRkcyByZWZlcmVuY2UsIGNhbGxlciBtdXN0IGNhbGwgUmVsZWFzZQorSUQzRDEx
UmVuZGVyVGFyZ2V0VmlldyAqUmVuZGVyVGFyZ2V0MTE6OmdldFJlbmRlclRhcmdldFZpZXcoKSBj
b25zdAoreworICAgIGlmIChtUmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgbVJlbmRlclRh
cmdldC0+QWRkUmVmKCk7CisgICAgfQorCisgICAgcmV0dXJuIG1SZW5kZXJUYXJnZXQ7Cit9CisK
Ky8vIEFkZHMgcmVmZXJlbmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVhc2UKK0lEM0QxMURlcHRo
U3RlbmNpbFZpZXcgKlJlbmRlclRhcmdldDExOjpnZXREZXB0aFN0ZW5jaWxWaWV3KCkgY29uc3QK
K3sKKyAgICBpZiAobURlcHRoU3RlbmNpbCkKKyAgICB7CisgICAgICAgIG1EZXB0aFN0ZW5jaWwt
PkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtRGVwdGhTdGVuY2lsOworfQorCisvLyBB
ZGRzIHJlZmVyZW5jZSwgY2FsbGVyIG11c3QgY2FsbCBSZWxlYXNlCitJRDNEMTFTaGFkZXJSZXNv
dXJjZVZpZXcgKlJlbmRlclRhcmdldDExOjpnZXRTaGFkZXJSZXNvdXJjZVZpZXcoKSBjb25zdAor
eworICAgIGlmIChtU2hhZGVyUmVzb3VyY2UpCisgICAgeworICAgICAgICBtU2hhZGVyUmVzb3Vy
Y2UtPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtU2hhZGVyUmVzb3VyY2U7Cit9CisK
K3Vuc2lnbmVkIGludCBSZW5kZXJUYXJnZXQxMTo6Z2V0U3VicmVzb3VyY2VJbmRleCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1TdWJyZXNvdXJjZUluZGV4OworfQorCit9CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDExLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJUYXJnZXQxMS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVyVGFyZ2V0MTEuaDog
RGVmaW5lcyBhIERYMTEtc3BlY2lmaWMgd3JhcHBlciBmb3IgSUQzRDExVmlldyBwb2ludGVycwor
Ly8gcmV0YWluZWQgYnkgUmVuZGVyYnVmZmVycy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVS
RVJfUkVOREVSVEFSR0VUMTFfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUlRB
UkdFVDExX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0Lmgi
CisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBSZW5kZXJlcjExOwor
CitjbGFzcyBSZW5kZXJUYXJnZXQxMSA6IHB1YmxpYyBSZW5kZXJUYXJnZXQKK3sKKyAgcHVibGlj
OgorICAgIFJlbmRlclRhcmdldDExKFJlbmRlcmVyICpyZW5kZXJlciwgSUQzRDExUmVuZGVyVGFy
Z2V0VmlldyAqcnR2LCBJRDNEMTFUZXh0dXJlMkQgKnRleCwgSUQzRDExU2hhZGVyUmVzb3VyY2VW
aWV3ICpzcnYsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKyAgICBSZW5kZXJUYXJn
ZXQxMShSZW5kZXJlciAqcmVuZGVyZXIsIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRzdiwgSUQz
RDExVGV4dHVyZTJEICp0ZXgsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisgICAgUmVuZGVyVGFyZ2V0MTEoUmVuZGVyZXIgKnJl
bmRlcmVyLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xz
aXplaSBzYW1wbGVzLCBib29sIGRlcHRoKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJUYXJnZXQxMSgp
OworCisgICAgc3RhdGljIFJlbmRlclRhcmdldDExICptYWtlUmVuZGVyVGFyZ2V0MTEoUmVuZGVy
VGFyZ2V0ICpyZW5kZXJUYXJnZXQpOworCisgICAgLy8gQWRkcyByZWZlcmVuY2UsIGNhbGxlciBt
dXN0IGNhbGwgUmVsZWFzZQorICAgIElEM0QxMVRleHR1cmUyRCAqZ2V0VGV4dHVyZSgpIGNvbnN0
OworCisgICAgLy8gQWRkcyByZWZlcmVuY2UsIGNhbGxlciBtdXN0IGNhbGwgUmVsZWFzZQorICAg
IElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmdldFJlbmRlclRhcmdldFZpZXcoKSBjb25zdDsKKwor
ICAgIC8vIEFkZHMgcmVmZXJlbmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVhc2UKKyAgICBJRDNE
MTFEZXB0aFN0ZW5jaWxWaWV3ICpnZXREZXB0aFN0ZW5jaWxWaWV3KCkgY29uc3Q7CisKKyAgICAv
LyBBZGRzIHJlZmVyZW5jZSwgY2FsbGVyIG11c3QgY2FsbCBSZWxlYXNlCisgICAgSUQzRDExU2hh
ZGVyUmVzb3VyY2VWaWV3ICpnZXRTaGFkZXJSZXNvdXJjZVZpZXcoKSBjb25zdDsKKworICAgIHVu
c2lnbmVkIGludCBnZXRTdWJyZXNvdXJjZUluZGV4KCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVuZGVyVGFyZ2V0MTEpOworCisgICAgdW5zaWdu
ZWQgaW50IG1TdWJyZXNvdXJjZUluZGV4OworICAgIElEM0QxMVRleHR1cmUyRCAqbVRleHR1cmU7
CisgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqbVJlbmRlclRhcmdldDsKKyAgICBJRDNEMTFE
ZXB0aFN0ZW5jaWxWaWV3ICptRGVwdGhTdGVuY2lsOworICAgIElEM0QxMVNoYWRlclJlc291cmNl
VmlldyAqbVNoYWRlclJlc291cmNlOworCisgICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVyOworfTsK
KworfQorCisjZW5kaWYgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUlRBUkdFVDExX0hfClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldC5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJUYXJnZXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIFJlbmRlclRhcmdldC5oOiBEZWZpbmVzIGFuIGFic3RyYWN0IHdyYXBwZXIg
Y2xhc3MgdG8gbWFuYWdlIElEaXJlY3QzRFN1cmZhY2U5CisvLyBhbmQgSUQzRDExVmlldyBvYmpl
Y3RzIGJlbG9uZ2luZyB0byByZW5kZXJidWZmZXJzLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5E
RVJFUl9SRU5ERVJUQVJHRVRfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUlRB
UkdFVF9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4
Cit7CitjbGFzcyBSZW5kZXJUYXJnZXQKK3sKKyAgcHVibGljOgorICAgIFJlbmRlclRhcmdldCgp
CisgICAgeworICAgICAgICBtV2lkdGggPSAwOworICAgICAgICBtSGVpZ2h0ID0gMDsKKyAgICAg
ICAgbUludGVybmFsRm9ybWF0ID0gR0xfTk9ORTsKKyAgICAgICAgbUFjdHVhbEZvcm1hdCA9IEdM
X05PTkU7CisgICAgICAgIG1TYW1wbGVzID0gMDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZW5k
ZXJUYXJnZXQoKSB7fTsKKworICAgIEdMc2l6ZWkgZ2V0V2lkdGgoKSB7IHJldHVybiBtV2lkdGg7
IH0KKyAgICBHTHNpemVpIGdldEhlaWdodCgpIHsgcmV0dXJuIG1IZWlnaHQ7IH0KKyAgICBHTGVu
dW0gZ2V0SW50ZXJuYWxGb3JtYXQoKSB7IHJldHVybiBtSW50ZXJuYWxGb3JtYXQ7IH0KKyAgICBH
TGVudW0gZ2V0QWN0dWFsRm9ybWF0KCkgeyByZXR1cm4gbUFjdHVhbEZvcm1hdDsgfQorICAgIEdM
c2l6ZWkgZ2V0U2FtcGxlcygpIHsgcmV0dXJuIG1TYW1wbGVzOyB9CisgICAgCisgICAgc3RydWN0
IERlc2MgeworICAgICAgICBHTHNpemVpIHdpZHRoOworICAgICAgICBHTHNpemVpIGhlaWdodDsK
KyAgICAgICAgR0xlbnVtICBmb3JtYXQ7CisgICAgfTsKKworICBwcm90ZWN0ZWQ6CisgICAgR0xz
aXplaSBtV2lkdGg7CisgICAgR0xzaXplaSBtSGVpZ2h0OworICAgIEdMZW51bSBtSW50ZXJuYWxG
b3JtYXQ7CisgICAgR0xlbnVtIG1BY3R1YWxGb3JtYXQ7CisgICAgR0xzaXplaSBtU2FtcGxlczsK
KworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJUYXJnZXQp
OworfTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUlRBUkdFVF9IXwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvUmVuZGVyZXI5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzMjE2IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIFJlbmRlcmVyOS5jcHA6IEltcGxlbWVudHMgYSBiYWNrLWVuZCBzcGVjaWZp
YyBjbGFzcyBmb3IgdGhlIEQzRDkgcmVuZGVyZXIuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFp
bi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9CdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
VGV4dHVyZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbUJp
bmFyeS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvU3dhcENoYWluOS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3Rv
cmFnZTkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2U5LmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvUmVuZGVyVGFyZ2V0OS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhC
dWZmZXI5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyOS5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvRmVuY2U5LmgiCisKKyNpbmNsdWRlICJsaWJFR0wvRGlzcGxheS5oIgorCisvLyBDYW4gYWxz
byBiZSBlbmFibGVkIGJ5IGRlZmluaW5nIEZPUkNFX1JFRl9SQVNUIGluIHRoZSBwcm9qZWN0J3Mg
cHJlZGVmaW5lZCBtYWNyb3MKKyNkZWZpbmUgUkVGX1JBU1QgMAorCisvLyBUaGUgIkRlYnVnIFRo
aXMgUGl4ZWwuLi4iIGZlYXR1cmUgaW4gUElYIG9mdGVuIGZhaWxzIHdoZW4gdXNpbmcgdGhlCisv
LyBEM0Q5RXggaW50ZXJmYWNlcy4gIEluIG9yZGVyIHRvIGdldCBkZWJ1ZyBwaXhlbCB0byB3b3Jr
IG9uIGEgVmlzdGEvV2luIDcKKy8vIG1hY2hpbmUsIGRlZmluZSAiQU5HTEVfRU5BQkxFX0QzRDlF
WD0wIiBpbiB5b3VyIHByb2plY3QgZmlsZS4KKyNpZiAhZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNE
OUVYKQorLy8gRW5hYmxlcyB1c2Ugb2YgdGhlIElEaXJlY3QzRDlFeCBpbnRlcmZhY2UsIHdoZW4g
YXZhaWxhYmxlCisjZGVmaW5lIEFOR0xFX0VOQUJMRV9EM0Q5RVggMQorI2VuZGlmIC8vICFkZWZp
bmVkKEFOR0xFX0VOQUJMRV9EM0Q5RVgpCisKK25hbWVzcGFjZSByeAoreworc3RhdGljIGNvbnN0
IEQzREZPUk1BVCBSZW5kZXJUYXJnZXRGb3JtYXRzW10gPQorICAgIHsKKyAgICAgICAgRDNERk1U
X0ExUjVHNUI1LAorICAgIC8vICBEM0RGTVRfQTJSMTBHMTBCMTAsICAgLy8gVGhlIGNvbG9yX3Jh
bXAgY29uZm9ybWFuY2UgdGVzdCB1c2VzIFJlYWRQaXhlbHMgd2l0aCBVTlNJR05FRF9CWVRFIGNh
dXNpbmcgaXQgdG8gdGhpbmsgdGhhdCByZW5kZXJpbmcgc2tpcHBlZCBhIGNvbG91ciB2YWx1ZS4K
KyAgICAgICAgRDNERk1UX0E4UjhHOEI4LAorICAgICAgICBEM0RGTVRfUjVHNkI1LAorICAgIC8v
ICBEM0RGTVRfWDFSNUc1QjUsICAgICAgLy8gSGFzIG5vIGNvbXBhdGlibGUgT3BlbkdMIEVTIHJl
bmRlcmJ1ZmZlciBmb3JtYXQKKyAgICAgICAgRDNERk1UX1g4UjhHOEI4CisgICAgfTsKKworc3Rh
dGljIGNvbnN0IEQzREZPUk1BVCBEZXB0aFN0ZW5jaWxGb3JtYXRzW10gPQorICAgIHsKKyAgICAg
ICAgRDNERk1UX1VOS05PV04sCisgICAgLy8gIEQzREZNVF9EMTZfTE9DS0FCTEUsCisgICAgICAg
IEQzREZNVF9EMzIsCisgICAgLy8gIEQzREZNVF9EMTVTMSwKKyAgICAgICAgRDNERk1UX0QyNFM4
LAorICAgICAgICBEM0RGTVRfRDI0WDgsCisgICAgLy8gIEQzREZNVF9EMjRYNFM0LAorICAgICAg
ICBEM0RGTVRfRDE2LAorICAgIC8vICBEM0RGTVRfRDMyRl9MT0NLQUJMRSwKKyAgICAvLyAgRDNE
Rk1UX0QyNEZTOAorICAgIH07CisKK2VudW0KK3sKKyAgICBNQVhfVkVSVEVYX0NPTlNUQU5UX1ZF
Q1RPUlNfRDNEOSA9IDI1NiwKKyAgICBNQVhfUElYRUxfQ09OU1RBTlRfVkVDVE9SU19TTTIgPSAz
MiwKKyAgICBNQVhfUElYRUxfQ09OU1RBTlRfVkVDVE9SU19TTTMgPSAyMjQsCisgICAgTUFYX1ZB
UllJTkdfVkVDVE9SU19TTTIgPSA4LAorICAgIE1BWF9WQVJZSU5HX1ZFQ1RPUlNfU00zID0gMTAs
CisKKyAgICBNQVhfVEVYVFVSRV9JTUFHRV9VTklUU19WVEZfU00zID0gNAorfTsKKworUmVuZGVy
ZXI5OjpSZW5kZXJlcjkoZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBIREMgaERjLCBib29sIHNvZnR3
YXJlRGV2aWNlKSA6IFJlbmRlcmVyKGRpc3BsYXkpLCBtRGMoaERjKSwgbVNvZnR3YXJlRGV2aWNl
KHNvZnR3YXJlRGV2aWNlKQoreworICAgIG1EM2Q5TW9kdWxlID0gTlVMTDsKKworICAgIG1EM2Q5
ID0gTlVMTDsKKyAgICBtRDNkOUV4ID0gTlVMTDsKKyAgICBtRGV2aWNlID0gTlVMTDsKKyAgICBt
RGV2aWNlRXggPSBOVUxMOworICAgIG1EZXZpY2VXaW5kb3cgPSBOVUxMOworICAgIG1CbGl0ID0g
TlVMTDsKKworICAgIG1BZGFwdGVyID0gRDNEQURBUFRFUl9ERUZBVUxUOworCisgICAgI2lmIFJF
Rl9SQVNUID09IDEgfHwgZGVmaW5lZChGT1JDRV9SRUZfUkFTVCkKKyAgICAgICAgbURldmljZVR5
cGUgPSBEM0RERVZUWVBFX1JFRjsKKyAgICAjZWxzZQorICAgICAgICBtRGV2aWNlVHlwZSA9IEQz
RERFVlRZUEVfSEFMOworICAgICNlbmRpZgorCisgICAgbURldmljZUxvc3QgPSBmYWxzZTsKKwor
ICAgIG1NYXhTdXBwb3J0ZWRTYW1wbGVzID0gMDsKKworICAgIG1NYXNrZWRDbGVhclNhdmVkU3Rh
dGUgPSBOVUxMOworCisgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gTlVMTDsKKyAgICBtSW5kZXhE
YXRhTWFuYWdlciA9IE5VTEw7CisgICAgbUxpbmVMb29wSUIgPSBOVUxMOworCisgICAgbU1heE51
bGxDb2xvcmJ1ZmZlckxSVSA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fTlVMTF9D
T0xPUkJVRkZFUl9DQUNIRV9FTlRSSUVTOyBpKyspCisgICAgeworICAgICAgICBtTnVsbENvbG9y
YnVmZmVyQ2FjaGVbaV0ubHJ1Q291bnQgPSAwOworICAgICAgICBtTnVsbENvbG9yYnVmZmVyQ2Fj
aGVbaV0ud2lkdGggPSAwOworICAgICAgICBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uaGVpZ2h0
ID0gMDsKKyAgICAgICAgbU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ldLmJ1ZmZlciA9IE5VTEw7Cisg
ICAgfQorfQorCitSZW5kZXJlcjk6On5SZW5kZXJlcjkoKQoreworICAgIHJlbGVhc2VEZXZpY2VS
ZXNvdXJjZXMoKTsKKworICAgIGlmIChtRGV2aWNlKQorICAgIHsKKyAgICAgICAgLy8gSWYgdGhl
IGRldmljZSBpcyBsb3N0LCByZXNldCBpdCBmaXJzdCB0byBwcmV2ZW50IGxlYXZpbmcgdGhlIGRy
aXZlciBpbiBhbiB1bnN0YWJsZSBzdGF0ZQorICAgICAgICBpZiAodGVzdERldmljZUxvc3QoZmFs
c2UpKQorICAgICAgICB7CisgICAgICAgICAgICByZXNldERldmljZSgpOworICAgICAgICB9CisK
KyAgICAgICAgbURldmljZS0+UmVsZWFzZSgpOworICAgICAgICBtRGV2aWNlID0gTlVMTDsKKyAg
ICB9CisKKyAgICBpZiAobURldmljZUV4KQorICAgIHsKKyAgICAgICAgbURldmljZUV4LT5SZWxl
YXNlKCk7CisgICAgICAgIG1EZXZpY2VFeCA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1EM2Q5
KQorICAgIHsKKyAgICAgICAgbUQzZDktPlJlbGVhc2UoKTsKKyAgICAgICAgbUQzZDkgPSBOVUxM
OworICAgIH0KKworICAgIGlmIChtRGV2aWNlV2luZG93KQorICAgIHsKKyAgICAgICAgRGVzdHJv
eVdpbmRvdyhtRGV2aWNlV2luZG93KTsKKyAgICAgICAgbURldmljZVdpbmRvdyA9IE5VTEw7Cisg
ICAgfQorCisgICAgaWYgKG1EM2Q5RXgpCisgICAgeworICAgICAgICBtRDNkOUV4LT5SZWxlYXNl
KCk7CisgICAgICAgIG1EM2Q5RXggPSBOVUxMOworICAgIH0KKworICAgIGlmIChtRDNkOU1vZHVs
ZSkKKyAgICB7CisgICAgICAgIG1EM2Q5TW9kdWxlID0gTlVMTDsKKyAgICB9CisKKyAgICB3aGls
ZSAoIW1NdWx0aVNhbXBsZVN1cHBvcnQuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBb
XSBtTXVsdGlTYW1wbGVTdXBwb3J0LmJlZ2luKCktPnNlY29uZDsKKyAgICAgICAgbU11bHRpU2Ft
cGxlU3VwcG9ydC5lcmFzZShtTXVsdGlTYW1wbGVTdXBwb3J0LmJlZ2luKCkpOworICAgIH0KK30K
KworUmVuZGVyZXI5ICpSZW5kZXJlcjk6Om1ha2VSZW5kZXJlcjkoUmVuZGVyZXIgKnJlbmRlcmVy
KQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpSZW5kZXJlcjkqLCByZW5kZXJl
cikpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxyeDo6UmVuZGVyZXI5Kj4ocmVuZGVyZXIpOwor
fQorCitFR0xpbnQgUmVuZGVyZXI5Ojppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIWluaXRpYWxp
emVDb21waWxlcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7
CisgICAgfQorCisgICAgaWYgKG1Tb2Z0d2FyZURldmljZSkKKyAgICB7CisgICAgICAgIG1EM2Q5
TW9kdWxlID0gR2V0TW9kdWxlSGFuZGxlKFRFWFQoInN3aWZ0c2hhZGVyX2QzZDkuZGxsIikpOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtRDNkOU1vZHVsZSA9IEdldE1vZHVsZUhh
bmRsZShURVhUKCJkM2Q5LmRsbCIpKTsKKyAgICB9CisKKyAgICBpZiAobUQzZDlNb2R1bGUgPT0g
TlVMTCkKKyAgICB7CisgICAgICAgIEVSUigiTm8gRDNEOSBtb2R1bGUgZm91bmQgLSBhYm9ydGlu
ZyFcbiIpOworICAgICAgICByZXR1cm4gRUdMX05PVF9JTklUSUFMSVpFRDsKKyAgICB9CisKKyAg
ICB0eXBlZGVmIEhSRVNVTFQgKFdJTkFQSSAqRGlyZWN0M0RDcmVhdGU5RXhGdW5jKShVSU5ULCBJ
RGlyZWN0M0Q5RXgqKik7CisgICAgRGlyZWN0M0RDcmVhdGU5RXhGdW5jIERpcmVjdDNEQ3JlYXRl
OUV4UHRyID0gcmVpbnRlcnByZXRfY2FzdDxEaXJlY3QzRENyZWF0ZTlFeEZ1bmM+KEdldFByb2NB
ZGRyZXNzKG1EM2Q5TW9kdWxlLCAiRGlyZWN0M0RDcmVhdGU5RXgiKSk7CisKKyAgICAvLyBVc2Ug
RGlyZWN0M0Q5RXggaWYgYXZhaWxhYmxlLiBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgdmVyc2lv
biBpcyBsZXNzCisgICAgLy8gaW5jbGluZWQgdG8gcmVwb3J0IGEgbG9zdCBjb250ZXh0LCBmb3Ig
ZXhhbXBsZSB3aGVuIHRoZSB1c2VyIHN3aXRjaGVzCisgICAgLy8gZGVza3RvcC4gRGlyZWN0M0Q5
RXggaXMgYXZhaWxhYmxlIGluIFdpbmRvd3MgVmlzdGEgYW5kIGxhdGVyIGlmIHN1aXRhYmxlIGRy
aXZlcnMgYXJlIGF2YWlsYWJsZS4KKyAgICBpZiAoQU5HTEVfRU5BQkxFX0QzRDlFWCAmJiBEaXJl
Y3QzRENyZWF0ZTlFeFB0ciAmJiBTVUNDRUVERUQoRGlyZWN0M0RDcmVhdGU5RXhQdHIoRDNEX1NE
S19WRVJTSU9OLCAmbUQzZDlFeCkpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1EM2Q5RXgpOwor
ICAgICAgICBtRDNkOUV4LT5RdWVyeUludGVyZmFjZShJSURfSURpcmVjdDNEOSwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKio+KCZtRDNkOSkpOworICAgICAgICBBU1NFUlQobUQzZDkpOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICBtRDNkOSA9IERpcmVjdDNEQ3JlYXRlOShEM0RfU0RL
X1ZFUlNJT04pOworICAgIH0KKworICAgIGlmICghbUQzZDkpCisgICAgeworICAgICAgICBFUlIo
IkNvdWxkIG5vdCBjcmVhdGUgRDNEOSBkZXZpY2UgLSBhYm9ydGluZyFcbiIpOworICAgICAgICBy
ZXR1cm4gRUdMX05PVF9JTklUSUFMSVpFRDsKKyAgICB9CisKKyAgICBpZiAobURjICE9IE5VTEwp
CisgICAgeworICAgIC8vICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUU6IERldGVybWluZSB3
aGljaCBhZGFwdGVyIGluZGV4IHRoZSBkZXZpY2UgY29udGV4dCBjb3JyZXNwb25kcyB0bworICAg
IH0KKworICAgIEhSRVNVTFQgcmVzdWx0OworCisgICAgLy8gR2l2ZSB1cCBvbiBnZXR0aW5nIGRl
dmljZSBjYXBzIGFmdGVyIGFib3V0IG9uZSBzZWNvbmQuCisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCAxMDsgKytpKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gbUQzZDktPkdldERldmljZUNhcHMo
bUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCAmbURldmljZUNhcHMpOworICAgICAgICBpZiAoU1VDQ0VF
REVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgaWYgKHJlc3VsdCA9PSBEM0RFUlJfTk9UQVZBSUxBQkxFKQorICAgICAgICB7
CisgICAgICAgICAgICBTbGVlcCgxMDApOyAgIC8vIEdpdmUgdGhlIGRyaXZlciBzb21lIHRpbWUg
dG8gaW5pdGlhbGl6ZS9yZWNvdmVyCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoRkFJTEVE
KHJlc3VsdCkpICAgLy8gRDNERVJSX09VVE9GVklERU9NRU1PUlksIEVfT1VUT0ZNRU1PUlksIEQz
REVSUl9JTlZBTElEREVWSUNFLCBvciBhbm90aGVyIGVycm9yIHdlIGNhbid0IHJlY292ZXIgZnJv
bQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoImZhaWxlZCB0byBnZXQgZGV2aWNlIGNhcHMg
KDB4JXgpXG4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTEla
RUQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobURldmljZUNhcHMuUGl4ZWxTaGFkZXJW
ZXJzaW9uIDwgRDNEUFNfVkVSU0lPTigyLCAwKSkKKyAgICB7CisgICAgICAgIEVSUigiUmVuZGVy
ZXIgZG9lcyBub3Qgc3VwcG9ydCBQUyAyLjAuIGFib3J0aW5nIVxuIik7CisgICAgICAgIHJldHVy
biBFR0xfTk9UX0lOSVRJQUxJWkVEOworICAgIH0KKworICAgIC8vIFdoZW4gRGlyZWN0WDkgaXMg
cnVubmluZyB3aXRoIGFuIG9sZGVyIERpcmVjdFg4IGRyaXZlciwgYSBTdHJldGNoUmVjdCBmcm9t
IGEgcmVndWxhciB0ZXh0dXJlIHRvIGEgcmVuZGVyIHRhcmdldCB0ZXh0dXJlIGlzIG5vdCBzdXBw
b3J0ZWQuCisgICAgLy8gVGhpcyBpcyByZXF1aXJlZCBieSBUZXh0dXJlMkQ6OmNvbnZlcnRUb1Jl
bmRlclRhcmdldC4KKyAgICBpZiAoKG1EZXZpY2VDYXBzLkRldkNhcHMyICYgRDNEREVWQ0FQUzJf
Q0FOX1NUUkVUQ0hSRUNUX0ZST01fVEVYVFVSRVMpID09IDApCisgICAgeworICAgICAgICBFUlIo
IlJlbmRlcmVyIGRvZXMgbm90IHN1cHBvcnQgc3RyZXRjdHJlY3QgZnJvbSB0ZXh0dXJlcyFcbiIp
OworICAgICAgICByZXR1cm4gRUdMX05PVF9JTklUSUFMSVpFRDsKKyAgICB9CisKKyAgICBtRDNk
OS0+R2V0QWRhcHRlcklkZW50aWZpZXIobUFkYXB0ZXIsIDAsICZtQWRhcHRlcklkZW50aWZpZXIp
OworCisgICAgLy8gQVRJIGNhcmRzIG9uIFhQIGhhdmUgcHJvYmxlbXMgd2l0aCBub24tcG93ZXIt
b2YtdHdvIHRleHR1cmVzLgorICAgIG1TdXBwb3J0c05vblBvd2VyMlRleHR1cmVzID0gIShtRGV2
aWNlQ2Fwcy5UZXh0dXJlQ2FwcyAmIEQzRFBURVhUVVJFQ0FQU19QT1cyKSAmJgorICAgICAgICAh
KG1EZXZpY2VDYXBzLlRleHR1cmVDYXBzICYgRDNEUFRFWFRVUkVDQVBTX0NVQkVNQVBfUE9XMikg
JiYKKyAgICAgICAgIShtRGV2aWNlQ2Fwcy5UZXh0dXJlQ2FwcyAmIEQzRFBURVhUVVJFQ0FQU19O
T05QT1cyQ09ORElUSU9OQUwpICYmCisgICAgICAgICEoZ2V0Q29tcGFyYWJsZU9TVmVyc2lvbigp
IDwgdmVyc2lvbldpbmRvd3NWaXN0YSAmJiBtQWRhcHRlcklkZW50aWZpZXIuVmVuZG9ySWQgPT0g
VkVORE9SX0lEX0FNRCk7CisKKyAgICAvLyBNdXN0IHN1cHBvcnQgYSBtaW5pbXVtIG9mIDI6MSBh
bmlzb3Ryb3B5IGZvciBtYXggYW5pc290cm9weSB0byBiZSBjb25zaWRlcmVkIHN1cHBvcnRlZCwg
cGVyIHRoZSBzcGVjCisgICAgbVN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHkgPSAoKG1E
ZXZpY2VDYXBzLlJhc3RlckNhcHMgJiBEM0RQUkFTVEVSQ0FQU19BTklTT1RST1BZKSAmJiAobURl
dmljZUNhcHMuTWF4QW5pc290cm9weSA+PSAyKSk7CisKKyAgICBtTWluU3dhcEludGVydmFsID0g
NDsKKyAgICBtTWF4U3dhcEludGVydmFsID0gMDsKKworICAgIGlmIChtRGV2aWNlQ2Fwcy5QcmVz
ZW50YXRpb25JbnRlcnZhbHMgJiBEM0RQUkVTRU5UX0lOVEVSVkFMX0lNTUVESUFURSkKKyAgICB7
CisgICAgICAgIG1NaW5Td2FwSW50ZXJ2YWwgPSBzdGQ6Om1pbihtTWluU3dhcEludGVydmFsLCAw
KTsKKyAgICAgICAgbU1heFN3YXBJbnRlcnZhbCA9IHN0ZDo6bWF4KG1NYXhTd2FwSW50ZXJ2YWws
IDApOworICAgIH0KKyAgICBpZiAobURldmljZUNhcHMuUHJlc2VudGF0aW9uSW50ZXJ2YWxzICYg
RDNEUFJFU0VOVF9JTlRFUlZBTF9PTkUpCisgICAgeworICAgICAgICBtTWluU3dhcEludGVydmFs
ID0gc3RkOjptaW4obU1pblN3YXBJbnRlcnZhbCwgMSk7CisgICAgICAgIG1NYXhTd2FwSW50ZXJ2
YWwgPSBzdGQ6Om1heChtTWF4U3dhcEludGVydmFsLCAxKTsKKyAgICB9CisgICAgaWYgKG1EZXZp
Y2VDYXBzLlByZXNlbnRhdGlvbkludGVydmFscyAmIEQzRFBSRVNFTlRfSU5URVJWQUxfVFdPKQor
ICAgIHsKKyAgICAgICAgbU1pblN3YXBJbnRlcnZhbCA9IHN0ZDo6bWluKG1NaW5Td2FwSW50ZXJ2
YWwsIDIpOworICAgICAgICBtTWF4U3dhcEludGVydmFsID0gc3RkOjptYXgobU1heFN3YXBJbnRl
cnZhbCwgMik7CisgICAgfQorICAgIGlmIChtRGV2aWNlQ2Fwcy5QcmVzZW50YXRpb25JbnRlcnZh
bHMgJiBEM0RQUkVTRU5UX0lOVEVSVkFMX1RIUkVFKQorICAgIHsKKyAgICAgICAgbU1pblN3YXBJ
bnRlcnZhbCA9IHN0ZDo6bWluKG1NaW5Td2FwSW50ZXJ2YWwsIDMpOworICAgICAgICBtTWF4U3dh
cEludGVydmFsID0gc3RkOjptYXgobU1heFN3YXBJbnRlcnZhbCwgMyk7CisgICAgfQorICAgIGlm
IChtRGV2aWNlQ2Fwcy5QcmVzZW50YXRpb25JbnRlcnZhbHMgJiBEM0RQUkVTRU5UX0lOVEVSVkFM
X0ZPVVIpCisgICAgeworICAgICAgICBtTWluU3dhcEludGVydmFsID0gc3RkOjptaW4obU1pblN3
YXBJbnRlcnZhbCwgNCk7CisgICAgICAgIG1NYXhTd2FwSW50ZXJ2YWwgPSBzdGQ6Om1heChtTWF4
U3dhcEludGVydmFsLCA0KTsKKyAgICB9CisKKyAgICBpbnQgbWF4ID0gMDsKKyAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IEFycmF5U2l6ZShSZW5kZXJUYXJnZXRGb3JtYXRzKTsgKytp
KQorICAgIHsKKyAgICAgICAgYm9vbCAqbXVsdGlzYW1wbGVBcnJheSA9IG5ldyBib29sW0QzRE1V
TFRJU0FNUExFXzE2X1NBTVBMRVMgKyAxXTsKKyAgICAgICAgZ2V0TXVsdGlTYW1wbGVTdXBwb3J0
KFJlbmRlclRhcmdldEZvcm1hdHNbaV0sIG11bHRpc2FtcGxlQXJyYXkpOworICAgICAgICBtTXVs
dGlTYW1wbGVTdXBwb3J0W1JlbmRlclRhcmdldEZvcm1hdHNbaV1dID0gbXVsdGlzYW1wbGVBcnJh
eTsKKworICAgICAgICBmb3IgKGludCBqID0gRDNETVVMVElTQU1QTEVfMTZfU0FNUExFUzsgaiA+
PSAwOyAtLWopCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtdWx0aXNhbXBsZUFycmF5W2pd
ICYmIGogIT0gRDNETVVMVElTQU1QTEVfTk9OTUFTS0FCTEUgJiYgaiA+IG1heCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBtYXggPSBqOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBBcnJheVNpemUoRGVw
dGhTdGVuY2lsRm9ybWF0cyk7ICsraSkKKyAgICB7CisgICAgICAgIGlmIChEZXB0aFN0ZW5jaWxG
b3JtYXRzW2ldID09IEQzREZNVF9VTktOT1dOKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgYm9vbCAqbXVsdGlzYW1wbGVBcnJheSA9IG5ldyBib29sW0QzRE1VTFRJU0FNUExFXzE2
X1NBTVBMRVMgKyAxXTsKKyAgICAgICAgZ2V0TXVsdGlTYW1wbGVTdXBwb3J0KERlcHRoU3RlbmNp
bEZvcm1hdHNbaV0sIG11bHRpc2FtcGxlQXJyYXkpOworICAgICAgICBtTXVsdGlTYW1wbGVTdXBw
b3J0W0RlcHRoU3RlbmNpbEZvcm1hdHNbaV1dID0gbXVsdGlzYW1wbGVBcnJheTsKKworICAgICAg
ICBmb3IgKGludCBqID0gRDNETVVMVElTQU1QTEVfMTZfU0FNUExFUzsgaiA+PSAwOyAtLWopCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtdWx0aXNhbXBsZUFycmF5W2pdICYmIGogIT0gRDNE
TVVMVElTQU1QTEVfTk9OTUFTS0FCTEUgJiYgaiA+IG1heCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBtYXggPSBqOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgbU1heFN1cHBvcnRlZFNhbXBsZXMgPSBtYXg7CisKKyAgICBzdGF0aWMgY29uc3QgVENIQVIg
d2luZG93TmFtZVtdID0gVEVYVCgiQW5nbGVIaWRkZW5XaW5kb3ciKTsKKyAgICBzdGF0aWMgY29u
c3QgVENIQVIgY2xhc3NOYW1lW10gPSBURVhUKCJTVEFUSUMiKTsKKworICAgIG1EZXZpY2VXaW5k
b3cgPSBDcmVhdGVXaW5kb3dFeChXU19FWF9OT0FDVElWQVRFLCBjbGFzc05hbWUsIHdpbmRvd05h
bWUsIFdTX0RJU0FCTEVEIHwgV1NfUE9QVVAsIDAsIDAsIDEsIDEsIEhXTkRfTUVTU0FHRSwgTlVM
TCwgR2V0TW9kdWxlSGFuZGxlKE5VTEwpLCBOVUxMKTsKKworICAgIEQzRFBSRVNFTlRfUEFSQU1F
VEVSUyBwcmVzZW50UGFyYW1ldGVycyA9IGdldERlZmF1bHRQcmVzZW50UGFyYW1ldGVycygpOwor
ICAgIERXT1JEIGJlaGF2aW9yRmxhZ3MgPSBEM0RDUkVBVEVfRlBVX1BSRVNFUlZFIHwgRDNEQ1JF
QVRFX05PV0lORE9XQ0hBTkdFUzsKKworICAgIHJlc3VsdCA9IG1EM2Q5LT5DcmVhdGVEZXZpY2Uo
bUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBtRGV2aWNlV2luZG93LCBiZWhhdmlvckZsYWdzIHwgRDNE
Q1JFQVRFX0hBUkRXQVJFX1ZFUlRFWFBST0NFU1NJTkcgfCBEM0RDUkVBVEVfUFVSRURFVklDRSwg
JnByZXNlbnRQYXJhbWV0ZXJzLCAmbURldmljZSk7CisgICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJf
T1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCByZXN1bHQgPT0g
RDNERVJSX0RFVklDRUxPU1QpCisgICAgeworICAgICAgICByZXR1cm4gRUdMX0JBRF9BTExPQzsK
KyAgICB9CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXN1bHQg
PSBtRDNkOS0+Q3JlYXRlRGV2aWNlKG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgbURldmljZVdpbmRv
dywgYmVoYXZpb3JGbGFncyB8IEQzRENSRUFURV9TT0ZUV0FSRV9WRVJURVhQUk9DRVNTSU5HLCAm
cHJlc2VudFBhcmFtZXRlcnMsICZtRGV2aWNlKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3Vs
dCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9G
VklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkgfHwgcmVzdWx0ID09IEQzREVS
Ul9OT1RBVkFJTEFCTEUgfHwgcmVzdWx0ID09IEQzREVSUl9ERVZJQ0VMT1NUKTsKKyAgICAgICAg
ICAgIHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1E
M2Q5RXgpCisgICAgeworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5RdWVyeUludGVyZmFjZShJ
SURfSURpcmVjdDNERGV2aWNlOUV4LCAodm9pZCoqKSAmbURldmljZUV4KTsKKyAgICAgICAgQVNT
RVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICB9CisKKyAgICBtVmVydGV4U2hhZGVyQ2FjaGUu
aW5pdGlhbGl6ZShtRGV2aWNlKTsKKyAgICBtUGl4ZWxTaGFkZXJDYWNoZS5pbml0aWFsaXplKG1E
ZXZpY2UpOworCisgICAgLy8gQ2hlY2sgb2NjbHVzaW9uIHF1ZXJ5IHN1cHBvcnQKKyAgICBJRGly
ZWN0M0RRdWVyeTkgKm9jY2x1c2lvblF1ZXJ5ID0gTlVMTDsKKyAgICBpZiAoU1VDQ0VFREVEKG1E
ZXZpY2UtPkNyZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9PQ0NMVVNJT04sICZvY2NsdXNpb25RdWVy
eSkpICYmIG9jY2x1c2lvblF1ZXJ5KQorICAgIHsKKyAgICAgICAgb2NjbHVzaW9uUXVlcnktPlJl
bGVhc2UoKTsKKyAgICAgICAgbU9jY2x1c2lvblF1ZXJ5U3VwcG9ydCA9IHRydWU7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1PY2NsdXNpb25RdWVyeVN1cHBvcnQgPSBmYWxzZTsK
KyAgICB9CisKKyAgICAvLyBDaGVjayBldmVudCBxdWVyeSBzdXBwb3J0CisgICAgSURpcmVjdDNE
UXVlcnk5ICpldmVudFF1ZXJ5ID0gTlVMTDsKKyAgICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNy
ZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9FVkVOVCwgJmV2ZW50UXVlcnkpKSAmJiBldmVudFF1ZXJ5
KQorICAgIHsKKyAgICAgICAgZXZlbnRRdWVyeS0+UmVsZWFzZSgpOworICAgICAgICBtRXZlbnRR
dWVyeVN1cHBvcnQgPSB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtRXZl
bnRRdWVyeVN1cHBvcnQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBEM0RESVNQTEFZTU9ERSBjdXJy
ZW50RGlzcGxheU1vZGU7CisgICAgbUQzZDktPkdldEFkYXB0ZXJEaXNwbGF5TW9kZShtQWRhcHRl
ciwgJmN1cnJlbnREaXNwbGF5TW9kZSk7CisKKyAgICAvLyBDaGVjayB2ZXJ0ZXggdGV4dHVyZSBz
dXBwb3J0CisgICAgLy8gT25seSBEaXJlY3QzRCAxMCByZWFkeSBkZXZpY2VzIHN1cHBvcnQgYWxs
IHRoZSBuZWNlc3NhcnkgdmVydGV4IHRleHR1cmUgZm9ybWF0cy4KKyAgICAvLyBXZSB0ZXN0IHRo
aXMgdXNpbmcgRDNEOSBieSBjaGVja2luZyBzdXBwb3J0IGZvciB0aGUgUjE2RiBmb3JtYXQuCisg
ICAgbVZlcnRleFRleHR1cmVTdXBwb3J0ID0gbURldmljZUNhcHMuUGl4ZWxTaGFkZXJWZXJzaW9u
ID49IEQzRFBTX1ZFUlNJT04oMywgMCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
VUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwg
Y3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFVTQUdFX1FVRVJZX1ZFUlRFWFRF
WFRVUkUsIEQzRFJUWVBFX1RFWFRVUkUsIEQzREZNVF9SMTZGKSk7CisKKyAgICAvLyBDaGVjayBk
ZXB0aCB0ZXh0dXJlIHN1cHBvcnQKKyAgICAvLyB3ZSB1c2UgSU5UWiBmb3IgZGVwdGggdGV4dHVy
ZXMgaW4gRGlyZWN0M0Q5CisgICAgLy8gd2UgYWxzbyB3YW50IE5VTEwgdGV4dHVyZSBzdXBwb3J0
IHRvIGVuc3VyZSB0aGUgd2UgY2FuIG1ha2UgZGVwdGgtb25seSBGQk9zCisgICAgLy8gc2VlIGh0
dHA6Ly9hcmFzLXAuaW5mby90ZXh0cy9EM0Q5R1BVSGFja3MuaHRtbAorICAgIG1EZXB0aFRleHR1
cmVTdXBwb3J0ID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwg
bURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFVTQUdFX0RF
UFRIU1RFTkNJTCwgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0lOVFopKSAmJgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRh
cHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFVT
QUdFX1JFTkRFUlRBUkdFVCwgRDNEUlRZUEVfU1VSRkFDRSwgRDNERk1UX05VTEwpKTsKKworICAg
IC8vIENoZWNrIDMyIGJpdCBmbG9hdGluZyBwb2ludCB0ZXh0dXJlIHN1cHBvcnQKKyAgICBtRmxv
YXQzMkZpbHRlclN1cHBvcnQgPSBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1B
ZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgRDNEVVNBR0Vf
UVVFUllfRklMVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0EzMkIzMkczMlIz
MkYpKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVQ0NFRURFRChtRDNkOS0+Q2hl
Y2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBjdXJyZW50RGlzcGxheU1vZGUu
Rm9ybWF0LCBEM0RVU0FHRV9RVUVSWV9GSUxURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RSVFlQRV9DVUJFVEVYVFVS
RSwgRDNERk1UX0EzMkIzMkczMlIzMkYpKTsKKworICAgIG1GbG9hdDMyUmVuZGVyU3VwcG9ydCA9
IFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBl
LCBjdXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9SRU5ERVJUQVJHRVQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEM0RSVFlQRV9URVhUVVJFLCBEM0RGTVRfQTMyQjMyRzMyUjMyRikpICYmCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRh
cHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIEQzRFVTQUdFX1JF
TkRFUlRBUkdFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEQzRFJUWVBFX0NVQkVURVhUVVJFLCBEM0RGTVRfQTMyQjMyRzMy
UjMyRikpOworCisgICAgaWYgKCFtRmxvYXQzMkZpbHRlclN1cHBvcnQgJiYgIW1GbG9hdDMyUmVu
ZGVyU3VwcG9ydCkKKyAgICB7CisgICAgICAgIG1GbG9hdDMyVGV4dHVyZVN1cHBvcnQgPSBTVUND
RUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3Vy
cmVudERpc3BsYXlNb2RlLkZvcm1hdCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEUlRZUEVfVEVYVFVSRSwg
RDNERk1UX0EzMkIzMkczMlIzMkYpKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5
cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFJUWVBFX0NV
QkVURVhUVVJFLCBEM0RGTVRfQTMyQjMyRzMyUjMyRikpOworICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICBtRmxvYXQzMlRleHR1cmVTdXBwb3J0ID0gdHJ1ZTsKKyAgICB9CisKKyAgICAv
LyBDaGVjayAxNiBiaXQgZmxvYXRpbmcgcG9pbnQgdGV4dHVyZSBzdXBwb3J0CisgICAgbUZsb2F0
MTZGaWx0ZXJTdXBwb3J0ID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRh
cHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIEQzRFVTQUdFX1FV
RVJZX0ZJTFRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEQzRFJUWVBFX1RFWFRVUkUsIEQzREZNVF9BMTZCMTZHMTZSMTZG
KSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVUNDRUVERUQobUQzZDktPkNoZWNr
RGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZv
cm1hdCwgRDNEVVNBR0VfUVVFUllfRklMVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEUlRZUEVfQ1VCRVRFWFRVUkUs
IEQzREZNVF9BMTZCMTZHMTZSMTZGKSk7CisKKyAgICBtRmxvYXQxNlJlbmRlclN1cHBvcnQgPSBT
VUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwg
Y3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgRDNEVVNBR0VfUkVOREVSVEFSR0VULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0ExNkIxNkcxNlIxNkYpKSAmJgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0
ZXIsIG1EZXZpY2VUeXBlLCBjdXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9SRU5E
RVJUQVJHRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEM0RSVFlQRV9DVUJFVEVYVFVSRSwgRDNERk1UX0ExNkIxNkcxNlIx
NkYpKTsKKworICAgIGlmICghbUZsb2F0MTZGaWx0ZXJTdXBwb3J0ICYmICFtRmxvYXQxNlJlbmRl
clN1cHBvcnQpCisgICAgeworICAgICAgICBtRmxvYXQxNlRleHR1cmVTdXBwb3J0ID0gU1VDQ0VF
REVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJl
bnREaXNwbGF5TW9kZS5Gb3JtYXQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFJUWVBFX1RFWFRVUkUsIEQz
REZNVF9BMTZCMTZHMTZSMTZGKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBl
LCBjdXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RSVFlQRV9DVUJF
VEVYVFVSRSwgRDNERk1UX0ExNkIxNkcxNlIxNkYpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgbUZsb2F0MTZUZXh0dXJlU3VwcG9ydCA9IHRydWU7CisgICAgfQorCisgICAgLy8g
Q2hlY2sgRFhUIHRleHR1cmUgc3VwcG9ydAorICAgIG1EWFQxVGV4dHVyZVN1cHBvcnQgPSBTVUND
RUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3Vy
cmVudERpc3BsYXlNb2RlLkZvcm1hdCwgMCwgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0RYVDEp
KTsKKyAgICBtRFhUM1RleHR1cmVTdXBwb3J0ID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0Rldmlj
ZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQs
IDAsIEQzRFJUWVBFX1RFWFRVUkUsIEQzREZNVF9EWFQzKSk7CisgICAgbURYVDVUZXh0dXJlU3Vw
cG9ydCA9IFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZp
Y2VUeXBlLCBjdXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCAwLCBEM0RSVFlQRV9URVhUVVJFLCBE
M0RGTVRfRFhUNSkpOworCisgICAgLy8gQ2hlY2sgbHVtaW5hbmNlW2FscGhhXSB0ZXh0dXJlIHN1
cHBvcnQKKyAgICBtTHVtaW5hbmNlVGV4dHVyZVN1cHBvcnQgPSBTVUNDRUVERUQobUQzZDktPkNo
ZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2Rl
LkZvcm1hdCwgMCwgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0w4KSk7CisgICAgbUx1bWluYW5j
ZUFscGhhVGV4dHVyZVN1cHBvcnQgPSBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0
KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgMCwgRDNE
UlRZUEVfVEVYVFVSRSwgRDNERk1UX0E4TDgpKTsKKworICAgIGluaXRpYWxpemVEZXZpY2UoKTsK
KworICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKK30KKworLy8gZG8gYW55IG9uZS10aW1lIGRldmlj
ZSBpbml0aWFsaXphdGlvbgorLy8gTk9URTogdGhpcyBpcyBhbHNvIG5lZWRlZCBhZnRlciBhIGRl
dmljZSBsb3N0L3Jlc2V0CisvLyB0byByZXNldCB0aGUgc2NlbmUgc3RhdHVzIGFuZCBlbnN1cmUg
dGhlIGRlZmF1bHQgc3RhdGVzIGFyZSByZXNldC4KK3ZvaWQgUmVuZGVyZXI5Ojppbml0aWFsaXpl
RGV2aWNlKCkKK3sKKyAgICAvLyBQZXJtYW5lbnQgbm9uLWRlZmF1bHQgc3RhdGVzCisgICAgbURl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfUE9JTlRTUFJJVEVFTkFCTEUsIFRSVUUpOworICAg
IG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0xBU1RQSVhFTCwgRkFMU0UpOworCisgICAg
aWYgKG1EZXZpY2VDYXBzLlBpeGVsU2hhZGVyVmVyc2lvbiA+PSBEM0RQU19WRVJTSU9OKDMsIDAp
KQorICAgIHsKKyAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfUE9JTlRTSVpF
X01BWCwgKERXT1JEJiltRGV2aWNlQ2Fwcy5NYXhQb2ludFNpemUpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19QT0lOVFNJWkVf
TUFYLCAweDNGODAwMDAwKTsgICAvLyAxLjBmCisgICAgfQorCisgICAgbWFya0FsbFN0YXRlRGly
dHkoKTsKKworICAgIG1TY2VuZVN0YXJ0ZWQgPSBmYWxzZTsKKworICAgIEFTU0VSVCghbUJsaXQg
JiYgIW1WZXJ0ZXhEYXRhTWFuYWdlciAmJiAhbUluZGV4RGF0YU1hbmFnZXIpOworICAgIG1CbGl0
ID0gbmV3IEJsaXQodGhpcyk7CisgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gbmV3IHJ4OjpWZXJ0
ZXhEYXRhTWFuYWdlcih0aGlzKTsKKyAgICBtSW5kZXhEYXRhTWFuYWdlciA9IG5ldyByeDo6SW5k
ZXhEYXRhTWFuYWdlcih0aGlzKTsKK30KKworRDNEUFJFU0VOVF9QQVJBTUVURVJTIFJlbmRlcmVy
OTo6Z2V0RGVmYXVsdFByZXNlbnRQYXJhbWV0ZXJzKCkKK3sKKyAgICBEM0RQUkVTRU5UX1BBUkFN
RVRFUlMgcHJlc2VudFBhcmFtZXRlcnMgPSB7MH07CisKKyAgICAvLyBUaGUgZGVmYXVsdCBzd2Fw
IGNoYWluIGlzIG5ldmVyIGFjdHVhbGx5IHVzZWQuIFN1cmZhY2Ugd2lsbCBjcmVhdGUgYSBuZXcg
c3dhcCBjaGFpbiB3aXRoIHRoZSBwcm9wZXIgcGFyYW1ldGVycy4KKyAgICBwcmVzZW50UGFyYW1l
dGVycy5BdXRvRGVwdGhTdGVuY2lsRm9ybWF0ID0gRDNERk1UX1VOS05PV047CisgICAgcHJlc2Vu
dFBhcmFtZXRlcnMuQmFja0J1ZmZlckNvdW50ID0gMTsKKyAgICBwcmVzZW50UGFyYW1ldGVycy5C
YWNrQnVmZmVyRm9ybWF0ID0gRDNERk1UX1VOS05PV047CisgICAgcHJlc2VudFBhcmFtZXRlcnMu
QmFja0J1ZmZlcldpZHRoID0gMTsKKyAgICBwcmVzZW50UGFyYW1ldGVycy5CYWNrQnVmZmVySGVp
Z2h0ID0gMTsKKyAgICBwcmVzZW50UGFyYW1ldGVycy5FbmFibGVBdXRvRGVwdGhTdGVuY2lsID0g
RkFMU0U7CisgICAgcHJlc2VudFBhcmFtZXRlcnMuRmxhZ3MgPSAwOworICAgIHByZXNlbnRQYXJh
bWV0ZXJzLmhEZXZpY2VXaW5kb3cgPSBtRGV2aWNlV2luZG93OworICAgIHByZXNlbnRQYXJhbWV0
ZXJzLk11bHRpU2FtcGxlUXVhbGl0eSA9IDA7CisgICAgcHJlc2VudFBhcmFtZXRlcnMuTXVsdGlT
YW1wbGVUeXBlID0gRDNETVVMVElTQU1QTEVfTk9ORTsKKyAgICBwcmVzZW50UGFyYW1ldGVycy5Q
cmVzZW50YXRpb25JbnRlcnZhbCA9IEQzRFBSRVNFTlRfSU5URVJWQUxfREVGQVVMVDsKKyAgICBw
cmVzZW50UGFyYW1ldGVycy5Td2FwRWZmZWN0ID0gRDNEU1dBUEVGRkVDVF9ESVNDQVJEOworICAg
IHByZXNlbnRQYXJhbWV0ZXJzLldpbmRvd2VkID0gVFJVRTsKKworICAgIHJldHVybiBwcmVzZW50
UGFyYW1ldGVyczsKK30KKworaW50IFJlbmRlcmVyOTo6Z2VuZXJhdGVDb25maWdzKENvbmZpZ0Rl
c2MgKipjb25maWdEZXNjTGlzdCkKK3sKKyAgICBEM0RESVNQTEFZTU9ERSBjdXJyZW50RGlzcGxh
eU1vZGU7CisgICAgbUQzZDktPkdldEFkYXB0ZXJEaXNwbGF5TW9kZShtQWRhcHRlciwgJmN1cnJl
bnREaXNwbGF5TW9kZSk7CisKKyAgICB1bnNpZ25lZCBpbnQgbnVtUmVuZGVyRm9ybWF0cyA9IEFy
cmF5U2l6ZShSZW5kZXJUYXJnZXRGb3JtYXRzKTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtRGVwdGhG
b3JtYXRzID0gQXJyYXlTaXplKERlcHRoU3RlbmNpbEZvcm1hdHMpOworICAgICgqY29uZmlnRGVz
Y0xpc3QpID0gbmV3IENvbmZpZ0Rlc2NbbnVtUmVuZGVyRm9ybWF0cyAqIG51bURlcHRoRm9ybWF0
c107CisgICAgaW50IG51bUNvbmZpZ3MgPSAwOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgZm9y
bWF0SW5kZXggPSAwOyBmb3JtYXRJbmRleCA8IG51bVJlbmRlckZvcm1hdHM7IGZvcm1hdEluZGV4
KyspCisgICAgeworICAgICAgICBEM0RGT1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0ID0gUmVuZGVy
VGFyZ2V0Rm9ybWF0c1tmb3JtYXRJbmRleF07CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBt
RDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBjdXJyZW50RGlz
cGxheU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9SRU5ERVJUQVJHRVQsIEQzRFJUWVBFX1NVUkZBQ0Us
IHJlbmRlclRhcmdldEZvcm1hdCk7CisKKyAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQor
ICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBkZXB0aFN0ZW5jaWxJbmRl
eCA9IDA7IGRlcHRoU3RlbmNpbEluZGV4IDwgbnVtRGVwdGhGb3JtYXRzOyBkZXB0aFN0ZW5jaWxJ
bmRleCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEQzREZPUk1BVCBkZXB0aFN0
ZW5jaWxGb3JtYXQgPSBEZXB0aFN0ZW5jaWxGb3JtYXRzW2RlcHRoU3RlbmNpbEluZGV4XTsKKyAg
ICAgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IEQzRF9PSzsKKworICAgICAgICAgICAgICAg
IGlmKGRlcHRoU3RlbmNpbEZvcm1hdCAhPSBEM0RGTVRfVU5LTk9XTikKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1EM2Q5LT5DaGVja0RldmljZUZvcm1h
dChtQWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIEQzRFVT
QUdFX0RFUFRIU1RFTkNJTCwgRDNEUlRZUEVfU1VSRkFDRSwgZGVwdGhTdGVuY2lsRm9ybWF0KTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3Vs
dCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZihkZXB0aFN0ZW5j
aWxGb3JtYXQgIT0gRDNERk1UX1VOS05PV04pCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1EM2Q5LT5DaGVja0RlcHRoU3RlbmNpbE1hdGNo
KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgcmVuZGVy
VGFyZ2V0Rm9ybWF0LCBkZXB0aFN0ZW5jaWxGb3JtYXQpOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdEZXNjIG5ld0NvbmZp
ZzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQg
PSBkM2Q5X2dsOjpDb252ZXJ0QmFja0J1ZmZlckZvcm1hdChyZW5kZXJUYXJnZXRGb3JtYXQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29uZmlnLmRlcHRoU3RlbmNpbEZvcm1hdCA9IGQz
ZDlfZ2w6OkNvbnZlcnREZXB0aFN0ZW5jaWxGb3JtYXQoZGVwdGhTdGVuY2lsRm9ybWF0KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbmZpZy5tdWx0aVNhbXBsZSA9IDA7IC8vIEZJWE1F
OiBlbnVtZXJhdGUgbXVsdGktc2FtcGxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Nv
bmZpZy5mYXN0Q29uZmlnID0gKGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQgPT0gcmVuZGVyVGFy
Z2V0Rm9ybWF0KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgKCpjb25maWdEZXNjTGlzdClb
bnVtQ29uZmlncysrXSA9IG5ld0NvbmZpZzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBudW1Db25maWdzOworfQorCit2b2lkIFJlbmRlcmVyOTo6ZGVsZXRlQ29uZmlncyhDb25maWdE
ZXNjICpjb25maWdEZXNjTGlzdCkKK3sKKyAgICBkZWxldGUgW10gKGNvbmZpZ0Rlc2NMaXN0KTsK
K30KKwordm9pZCBSZW5kZXJlcjk6OnN0YXJ0U2NlbmUoKQoreworICAgIGlmICghbVNjZW5lU3Rh
cnRlZCkKKyAgICB7CisgICAgICAgIGxvbmcgcmVzdWx0ID0gbURldmljZS0+QmVnaW5TY2VuZSgp
OworICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMg
aXMgZGVmZW5zaXZlIGNoZWNraW5nIGFnYWluc3QgdGhlIGRldmljZSBiZWluZworICAgICAgICAg
ICAgLy8gbG9zdCBhdCB1bmV4cGVjdGVkIHRpbWVzLgorICAgICAgICAgICAgbVNjZW5lU3RhcnRl
ZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjplbmRTY2Vu
ZSgpCit7CisgICAgaWYgKG1TY2VuZVN0YXJ0ZWQpCisgICAgeworICAgICAgICAvLyBFbmRTY2Vu
ZSBjYW4gZmFpbCBpZiB0aGUgZGV2aWNlIHdhcyBsb3N0LCBmb3IgZXhhbXBsZSBkdWUKKyAgICAg
ICAgLy8gdG8gYSBURFIgZHVyaW5nIGEgZHJhdyBjYWxsLgorICAgICAgICBtRGV2aWNlLT5FbmRT
Y2VuZSgpOworICAgICAgICBtU2NlbmVTdGFydGVkID0gZmFsc2U7CisgICAgfQorfQorCit2b2lk
IFJlbmRlcmVyOTo6c3luYyhib29sIGJsb2NrKQoreworICAgIEhSRVNVTFQgcmVzdWx0OworCisg
ICAgSURpcmVjdDNEUXVlcnk5KiBxdWVyeSA9IGFsbG9jYXRlRXZlbnRRdWVyeSgpOworICAgIGlm
ICghcXVlcnkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVzdWx0ID0g
cXVlcnktPklzc3VlKEQzRElTU1VFX0VORCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQp
KTsKKworICAgIGRvCisgICAgeworICAgICAgICByZXN1bHQgPSBxdWVyeS0+R2V0RGF0YShOVUxM
LCAwLCBEM0RHRVREQVRBX0ZMVVNIKTsKKworICAgICAgICBpZihibG9jayAmJiByZXN1bHQgPT0g
U19GQUxTRSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gS2VlcCBwb2xsaW5nLCBidXQgYWxs
b3cgb3RoZXIgdGhyZWFkcyB0byBkbyBzb21ldGhpbmcgdXNlZnVsIGZpcnN0CisgICAgICAgICAg
ICBTbGVlcCgwKTsKKyAgICAgICAgICAgIC8vIGV4cGxpY2l0bHkgY2hlY2sgZm9yIGRldmljZSBs
b3NzCisgICAgICAgICAgICAvLyBzb21lIGRyaXZlcnMgc2VlbSB0byByZXR1cm4gU19GQUxTRSBl
dmVuIGlmIHRoZSBkZXZpY2UgaXMgbG9zdAorICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiBEM0RF
UlJfREVWSUNFTE9TVCBsaWtlIHRoZXkgc2hvdWxkCisgICAgICAgICAgICBpZiAodGVzdERldmlj
ZUxvc3QoZmFsc2UpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IEQz
REVSUl9ERVZJQ0VMT1NUOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHdo
aWxlKGJsb2NrICYmIHJlc3VsdCA9PSBTX0ZBTFNFKTsKKworICAgIGZyZWVFdmVudFF1ZXJ5KHF1
ZXJ5KTsKKworICAgIGlmIChkM2Q5Ojppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgIHsK
KyAgICAgICAgbm90aWZ5RGV2aWNlTG9zdCgpOworICAgIH0KK30KKworU3dhcENoYWluICpSZW5k
ZXJlcjk6OmNyZWF0ZVN3YXBDaGFpbihIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBH
TGVudW0gYmFja0J1ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KQoreworICAg
IHJldHVybiBuZXcgcng6OlN3YXBDaGFpbjkodGhpcywgd2luZG93LCBzaGFyZUhhbmRsZSwgYmFj
a0J1ZmZlckZvcm1hdCwgZGVwdGhCdWZmZXJGb3JtYXQpOworfQorCitJRGlyZWN0M0RRdWVyeTkq
IFJlbmRlcmVyOTo6YWxsb2NhdGVFdmVudFF1ZXJ5KCkKK3sKKyAgICBJRGlyZWN0M0RRdWVyeTkg
KnF1ZXJ5ID0gTlVMTDsKKworICAgIGlmIChtRXZlbnRRdWVyeVBvb2wuZW1wdHkoKSkKKyAgICB7
CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUXVlcnkoRDNEUVVFUllU
WVBFX0VWRU5ULCAmcXVlcnkpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBxdWVyeSA9IG1FdmVudFF1ZXJ5UG9vbC5i
YWNrKCk7CisgICAgICAgIG1FdmVudFF1ZXJ5UG9vbC5wb3BfYmFjaygpOworICAgIH0KKworICAg
IHJldHVybiBxdWVyeTsKK30KKwordm9pZCBSZW5kZXJlcjk6OmZyZWVFdmVudFF1ZXJ5KElEaXJl
Y3QzRFF1ZXJ5OSogcXVlcnkpCit7CisgICAgaWYgKG1FdmVudFF1ZXJ5UG9vbC5zaXplKCkgPiAx
MDAwKQorICAgIHsKKyAgICAgICAgcXVlcnktPlJlbGVhc2UoKTsKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgbUV2ZW50UXVlcnlQb29sLnB1c2hfYmFjayhxdWVyeSk7CisgICAgfQor
fQorCitJRGlyZWN0M0RWZXJ0ZXhTaGFkZXI5ICpSZW5kZXJlcjk6OmNyZWF0ZVZlcnRleFNoYWRl
cihjb25zdCBEV09SRCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgpCit7CisgICAgcmV0dXJuIG1W
ZXJ0ZXhTaGFkZXJDYWNoZS5jcmVhdGUoZnVuY3Rpb24sIGxlbmd0aCk7Cit9CisKK0lEaXJlY3Qz
RFBpeGVsU2hhZGVyOSAqUmVuZGVyZXI5OjpjcmVhdGVQaXhlbFNoYWRlcihjb25zdCBEV09SRCAq
ZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgpCit7CisgICAgcmV0dXJuIG1QaXhlbFNoYWRlckNhY2hl
LmNyZWF0ZShmdW5jdGlvbiwgbGVuZ3RoKTsKK30KKworSFJFU1VMVCBSZW5kZXJlcjk6OmNyZWF0
ZVZlcnRleEJ1ZmZlcihVSU5UIExlbmd0aCwgRFdPUkQgVXNhZ2UsIElEaXJlY3QzRFZlcnRleEJ1
ZmZlcjkgKipwcFZlcnRleEJ1ZmZlcikKK3sKKyAgICBEM0RQT09MIFBvb2wgPSBnZXRCdWZmZXJQ
b29sKFVzYWdlKTsKKyAgICByZXR1cm4gbURldmljZS0+Q3JlYXRlVmVydGV4QnVmZmVyKExlbmd0
aCwgVXNhZ2UsIDAsIFBvb2wsIHBwVmVydGV4QnVmZmVyLCBOVUxMKTsKK30KKworVmVydGV4QnVm
ZmVyICpSZW5kZXJlcjk6OmNyZWF0ZVZlcnRleEJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG5ldyBW
ZXJ0ZXhCdWZmZXI5KHRoaXMpOworfQorCitIUkVTVUxUIFJlbmRlcmVyOTo6Y3JlYXRlSW5kZXhC
dWZmZXIoVUlOVCBMZW5ndGgsIERXT1JEIFVzYWdlLCBEM0RGT1JNQVQgRm9ybWF0LCBJRGlyZWN0
M0RJbmRleEJ1ZmZlcjkgKipwcEluZGV4QnVmZmVyKQoreworICAgIEQzRFBPT0wgUG9vbCA9IGdl
dEJ1ZmZlclBvb2woVXNhZ2UpOworICAgIHJldHVybiBtRGV2aWNlLT5DcmVhdGVJbmRleEJ1ZmZl
cihMZW5ndGgsIFVzYWdlLCBGb3JtYXQsIFBvb2wsIHBwSW5kZXhCdWZmZXIsIE5VTEwpOworfQor
CitJbmRleEJ1ZmZlciAqUmVuZGVyZXI5OjpjcmVhdGVJbmRleEJ1ZmZlcigpCit7CisgICAgcmV0
dXJuIG5ldyBJbmRleEJ1ZmZlcjkodGhpcyk7Cit9CisKK0J1ZmZlclN0b3JhZ2UgKlJlbmRlcmVy
OTo6Y3JlYXRlQnVmZmVyU3RvcmFnZSgpCit7CisgICAgcmV0dXJuIG5ldyBCdWZmZXJTdG9yYWdl
OSgpOworfQorCitRdWVyeUltcGwgKlJlbmRlcmVyOTo6Y3JlYXRlUXVlcnkoR0xlbnVtIHR5cGUp
Cit7CisgICAgcmV0dXJuIG5ldyBRdWVyeTkodGhpcywgdHlwZSk7Cit9CisKK0ZlbmNlSW1wbCAq
UmVuZGVyZXI5OjpjcmVhdGVGZW5jZSgpCit7CisgICAgcmV0dXJuIG5ldyBGZW5jZTkodGhpcyk7
Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjpzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5
cGUsIGludCBpbmRleCwgY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKQorewor
ICAgIGJvb2wgKmZvcmNlU2V0U2FtcGxlcnMgPSAodHlwZSA9PSBnbDo6U0FNUExFUl9QSVhFTCkg
PyBtRm9yY2VTZXRQaXhlbFNhbXBsZXJTdGF0ZXMgOiBtRm9yY2VTZXRWZXJ0ZXhTYW1wbGVyU3Rh
dGVzOworICAgIGdsOjpTYW1wbGVyU3RhdGUgKmFwcGxpZWRTYW1wbGVycyA9ICh0eXBlID09IGds
OjpTQU1QTEVSX1BJWEVMKSA/IG1DdXJQaXhlbFNhbXBsZXJTdGF0ZXM6IG1DdXJWZXJ0ZXhTYW1w
bGVyU3RhdGVzOworCisgICAgaWYgKGZvcmNlU2V0U2FtcGxlcnNbaW5kZXhdIHx8IG1lbWNtcCgm
c2FtcGxlclN0YXRlLCAmYXBwbGllZFNhbXBsZXJzW2luZGV4XSwgc2l6ZW9mKGdsOjpTYW1wbGVy
U3RhdGUpKSAhPSAwKQorICAgIHsKKyAgICAgICAgaW50IGQzZFNhbXBsZXJPZmZzZXQgPSAodHlw
ZSA9PSBnbDo6U0FNUExFUl9QSVhFTCkgPyAwIDogRDNEVkVSVEVYVEVYVFVSRVNBTVBMRVIwOwor
ICAgICAgICBpbnQgZDNkU2FtcGxlciA9IGluZGV4ICsgZDNkU2FtcGxlck9mZnNldDsKKworICAg
ICAgICBtRGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9BRERSRVNT
VSwgZ2xfZDNkOTo6Q29udmVydFRleHR1cmVXcmFwKHNhbXBsZXJTdGF0ZS53cmFwUykpOworICAg
ICAgICBtRGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9BRERSRVNT
ViwgZ2xfZDNkOTo6Q29udmVydFRleHR1cmVXcmFwKHNhbXBsZXJTdGF0ZS53cmFwVCkpOworCisg
ICAgICAgIG1EZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01BR0ZJ
TFRFUiwgZ2xfZDNkOTo6Q29udmVydE1hZ0ZpbHRlcihzYW1wbGVyU3RhdGUubWFnRmlsdGVyLCBz
YW1wbGVyU3RhdGUubWF4QW5pc290cm9weSkpOworICAgICAgICBEM0RURVhUVVJFRklMVEVSVFlQ
RSBkM2RNaW5GaWx0ZXIsIGQzZE1pcEZpbHRlcjsKKyAgICAgICAgZ2xfZDNkOTo6Q29udmVydE1p
bkZpbHRlcihzYW1wbGVyU3RhdGUubWluRmlsdGVyLCAmZDNkTWluRmlsdGVyLCAmZDNkTWlwRmls
dGVyLCBzYW1wbGVyU3RhdGUubWF4QW5pc290cm9weSk7CisgICAgICAgIG1EZXZpY2UtPlNldFNh
bXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01JTkZJTFRFUiwgZDNkTWluRmlsdGVyKTsK
KyAgICAgICAgbURldmljZS0+U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQzRFNBTVBfTUlQ
RklMVEVSLCBkM2RNaXBGaWx0ZXIpOworICAgICAgICBtRGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUo
ZDNkU2FtcGxlciwgRDNEU0FNUF9NQVhNSVBMRVZFTCwgc2FtcGxlclN0YXRlLmxvZE9mZnNldCk7
CisgICAgICAgIGlmIChtU3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9weSkKKyAgICAgICAg
eworICAgICAgICAgICAgbURldmljZS0+U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQzRFNB
TVBfTUFYQU5JU09UUk9QWSwgKERXT1JEKXNhbXBsZXJTdGF0ZS5tYXhBbmlzb3Ryb3B5KTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZvcmNlU2V0U2FtcGxlcnNbaW5kZXhdID0gZmFsc2U7Cisg
ICAgYXBwbGllZFNhbXBsZXJzW2luZGV4XSA9IHNhbXBsZXJTdGF0ZTsKK30KKwordm9pZCBSZW5k
ZXJlcjk6OnNldFRleHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRl
eHR1cmUgKnRleHR1cmUpCit7CisgICAgaW50IGQzZFNhbXBsZXJPZmZzZXQgPSAodHlwZSA9PSBn
bDo6U0FNUExFUl9QSVhFTCkgPyAwIDogRDNEVkVSVEVYVEVYVFVSRVNBTVBMRVIwOworICAgIGlu
dCBkM2RTYW1wbGVyID0gaW5kZXggKyBkM2RTYW1wbGVyT2Zmc2V0OworICAgIElEaXJlY3QzREJh
c2VUZXh0dXJlOSAqZDNkVGV4dHVyZSA9IE5VTEw7CisgICAgdW5zaWduZWQgaW50IHNlcmlhbCA9
IDA7CisgICAgYm9vbCBmb3JjZVNldFRleHR1cmUgPSBmYWxzZTsKKworICAgIHVuc2lnbmVkIGlu
dCAqYXBwbGllZFNlcmlhbHMgPSAodHlwZSA9PSBnbDo6U0FNUExFUl9QSVhFTCkgPyBtQ3VyUGl4
ZWxUZXh0dXJlU2VyaWFscyA6IG1DdXJWZXJ0ZXhUZXh0dXJlU2VyaWFsczsKKworICAgIGlmICh0
ZXh0dXJlKQorICAgIHsKKyAgICAgICAgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UgKnRleFN0b3Jh
Z2UgPSB0ZXh0dXJlLT5nZXROYXRpdmVUZXh0dXJlKCk7CisgICAgICAgIGlmICh0ZXhTdG9yYWdl
KQorICAgICAgICB7CisgICAgICAgICAgICBUZXh0dXJlU3RvcmFnZTkgKnN0b3JhZ2U5ID0gVGV4
dHVyZVN0b3JhZ2U5OjptYWtlVGV4dHVyZVN0b3JhZ2U5KHRleFN0b3JhZ2UtPmdldFN0b3JhZ2VJ
bnN0YW5jZSgpKTsKKyAgICAgICAgICAgIGQzZFRleHR1cmUgPSBzdG9yYWdlOS0+Z2V0QmFzZVRl
eHR1cmUoKTsKKyAgICAgICAgfQorICAgICAgICAvLyBJZiB3ZSBnZXQgTlVMTCBiYWNrIGZyb20g
Z2V0QmFzZVRleHR1cmUgaGVyZSwgc29tZXRoaW5nIHdlbnQgd3JvbmcKKyAgICAgICAgLy8gaW4g
dGhlIHRleHR1cmUgY2xhc3MgYW5kIHdlJ3JlIHVuZXhwZWN0ZWRseSBtaXNzaW5nIHRoZSBkM2Qg
dGV4dHVyZQorICAgICAgICBBU1NFUlQoZDNkVGV4dHVyZSAhPSBOVUxMKTsKKworICAgICAgICBz
ZXJpYWwgPSB0ZXh0dXJlLT5nZXRUZXh0dXJlU2VyaWFsKCk7CisgICAgICAgIGZvcmNlU2V0VGV4
dHVyZSA9IHRleHR1cmUtPmhhc0RpcnR5SW1hZ2VzKCk7CisgICAgfQorCisgICAgaWYgKGZvcmNl
U2V0VGV4dHVyZSB8fCBhcHBsaWVkU2VyaWFsc1tpbmRleF0gIT0gc2VyaWFsKQorICAgIHsKKyAg
ICAgICAgbURldmljZS0+U2V0VGV4dHVyZShkM2RTYW1wbGVyLCBkM2RUZXh0dXJlKTsKKyAgICB9
CisKKyAgICBhcHBsaWVkU2VyaWFsc1tpbmRleF0gPSBzZXJpYWw7Cit9CisKK3ZvaWQgUmVuZGVy
ZXI5OjpzZXRSYXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSAmcmFzdGVy
U3RhdGUpCit7CisgICAgYm9vbCByYXN0ZXJTdGF0ZUNoYW5nZWQgPSBtRm9yY2VTZXRSYXN0ZXJT
dGF0ZSB8fCBtZW1jbXAoJnJhc3RlclN0YXRlLCAmbUN1clJhc3RlclN0YXRlLCBzaXplb2YoZ2w6
OlJhc3Rlcml6ZXJTdGF0ZSkpICE9IDA7CisKKyAgICBpZiAocmFzdGVyU3RhdGVDaGFuZ2VkKQor
ICAgIHsKKyAgICAgICAgLy8gU2V0IHRoZSBjdWxsIG1vZGUKKyAgICAgICAgaWYgKHJhc3RlclN0
YXRlLmN1bGxGYWNlKQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShEM0RSU19DVUxMTU9ERSwgZ2xfZDNkOTo6Q29udmVydEN1bGxNb2RlKHJhc3RlclN0YXRl
LmN1bGxNb2RlLCByYXN0ZXJTdGF0ZS5mcm9udEZhY2UpKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJT
X0NVTExNT0RFLCBEM0RDVUxMX05PTkUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJhc3Rl
clN0YXRlLnBvbHlnb25PZmZzZXRGaWxsKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobUN1
ckRlcHRoU2l6ZSA+IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbURldmljZS0+
U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0xPUEVTQ0FMRURFUFRIQklBUywgKihEV09SRCopJnJhc3Rl
clN0YXRlLnBvbHlnb25PZmZzZXRGYWN0b3IpOworCisgICAgICAgICAgICAgICAgZmxvYXQgZGVw
dGhCaWFzID0gbGRleHAocmFzdGVyU3RhdGUucG9seWdvbk9mZnNldFVuaXRzLCAtc3RhdGljX2Nh
c3Q8aW50PihtQ3VyRGVwdGhTaXplKSk7CisgICAgICAgICAgICAgICAgbURldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfREVQVEhCSUFTLCAqKERXT1JEKikmZGVwdGhCaWFzKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NMT1BFU0NBTEVERVBUSEJJQVMsIDApOworICAg
ICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVQVEhCSUFTLCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIG1DdXJSYXN0ZXJTdGF0ZSA9IHJhc3RlclN0YXRlOworICAgIH0K
KworICAgIG1Gb3JjZVNldFJhc3RlclN0YXRlID0gZmFsc2U7Cit9CisKK3ZvaWQgUmVuZGVyZXI5
OjpzZXRCbGVuZFN0YXRlKGNvbnN0IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0YXRlLCBjb25zdCBn
bDo6Q29sb3IgJmJsZW5kQ29sb3IsIHVuc2lnbmVkIGludCBzYW1wbGVNYXNrKQoreworICAgIGJv
b2wgYmxlbmRTdGF0ZUNoYW5nZWQgPSBtRm9yY2VTZXRCbGVuZFN0YXRlIHx8IG1lbWNtcCgmYmxl
bmRTdGF0ZSwgJm1DdXJCbGVuZFN0YXRlLCBzaXplb2YoZ2w6OkJsZW5kU3RhdGUpKSAhPSAwOwor
ICAgIGJvb2wgYmxlbmRDb2xvckNoYW5nZWQgPSBtRm9yY2VTZXRCbGVuZFN0YXRlIHx8IG1lbWNt
cCgmYmxlbmRDb2xvciwgJm1DdXJCbGVuZENvbG9yLCBzaXplb2YoZ2w6OkNvbG9yKSkgIT0gMDsK
KyAgICBib29sIHNhbXBsZU1hc2tDaGFuZ2VkID0gbUZvcmNlU2V0QmxlbmRTdGF0ZSB8fCBzYW1w
bGVNYXNrICE9IG1DdXJTYW1wbGVNYXNrOworCisgICAgaWYgKGJsZW5kU3RhdGVDaGFuZ2VkIHx8
IGJsZW5kQ29sb3JDaGFuZ2VkKQorICAgIHsKKyAgICAgICAgaWYgKGJsZW5kU3RhdGUuYmxlbmQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0FM
UEhBQkxFTkRFTkFCTEUsIFRSVUUpOworCisgICAgICAgICAgICBpZiAoYmxlbmRTdGF0ZS5zb3Vy
Y2VCbGVuZFJHQiAhPSBHTF9DT05TVEFOVF9BTFBIQSAmJiBibGVuZFN0YXRlLnNvdXJjZUJsZW5k
UkdCICE9IEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSAmJgorICAgICAgICAgICAgICAgIGJs
ZW5kU3RhdGUuZGVzdEJsZW5kUkdCICE9IEdMX0NPTlNUQU5UX0FMUEhBICYmIGJsZW5kU3RhdGUu
ZGVzdEJsZW5kUkdCICE9IEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19CTEVOREZB
Q1RPUiwgZ2xfZDNkOTo6Q29udmVydENvbG9yKGJsZW5kQ29sb3IpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShEM0RSU19CTEVOREZBQ1RPUiwgRDNEQ09MT1JfUkdCQShnbDo6dW5v
cm08OD4oYmxlbmRDb2xvci5hbHBoYSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OnVub3JtPDg+KGJs
ZW5kQ29sb3IuYWxwaGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjp1bm9ybTw4PihibGVuZENvbG9y
LmFscGhhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oYmxlbmRDb2xvci5hbHBoYSkp
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUo
RDNEUlNfU1JDQkxFTkQsIGdsX2QzZDk6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5zb3Vy
Y2VCbGVuZFJHQikpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNf
REVTVEJMRU5ELCBnbF9kM2Q5OjpDb252ZXJ0QmxlbmRGdW5jKGJsZW5kU3RhdGUuZGVzdEJsZW5k
UkdCKSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19CTEVORE9Q
LCBnbF9kM2Q5OjpDb252ZXJ0QmxlbmRPcChibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IpKTsK
KworICAgICAgICAgICAgaWYgKGJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0IgIT0gYmxlbmRTdGF0
ZS5zb3VyY2VCbGVuZEFscGhhIHx8CisgICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5kZXN0Qmxl
bmRSR0IgIT0gYmxlbmRTdGF0ZS5kZXN0QmxlbmRBbHBoYSB8fAorICAgICAgICAgICAgICAgIGJs
ZW5kU3RhdGUuYmxlbmRFcXVhdGlvblJHQiAhPSBibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25BbHBo
YSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShEM0RSU19TRVBBUkFURUFMUEhBQkxFTkRFTkFCTEUsIFRSVUUpOworCisgICAgICAgICAgICAg
ICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1JDQkxFTkRBTFBIQSwgZ2xfZDNkOTo6
Q29udmVydEJsZW5kRnVuYyhibGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEpKTsKKyAgICAgICAg
ICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19ERVNUQkxFTkRBTFBIQSwgZ2xf
ZDNkOTo6Q29udmVydEJsZW5kRnVuYyhibGVuZFN0YXRlLmRlc3RCbGVuZEFscGhhKSk7CisgICAg
ICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQkxFTkRPUEFMUEhBLCBn
bF9kM2Q5OjpDb252ZXJ0QmxlbmRPcChibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25BbHBoYSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NFUEFSQVRFQUxQSEFCTEVOREVO
QUJMRSwgRkFMU0UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFC
TEVOREVOQUJMRSwgRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJsZW5kU3RhdGUu
c2FtcGxlQWxwaGFUb0NvdmVyYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBGSVhNRSgiU2Ft
cGxlIGFscGhhIHRvIGNvdmVyYWdlIGlzIHVuaW1wbGVtZW50ZWQuIik7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBTZXQgdGhlIGNvbG9yIG1hc2sKKyAgICAgICAgYm9vbCB6ZXJvQ29sb3JNYXNr
QWxsb3dlZCA9IGdldEFkYXB0ZXJWZW5kb3IoKSAhPSBWRU5ET1JfSURfQU1EOworICAgICAgICAv
LyBBcHBhcmVudGx5IHNvbWUgQVRJIGNhcmRzIGhhdmUgYSBidWcgd2hlcmUgYSBkcmF3IHdpdGgg
YSB6ZXJvIGNvbG9yCisgICAgICAgIC8vIHdyaXRlIG1hc2sgY2FuIGNhdXNlIGxhdGVyIGRyYXdz
IHRvIGhhdmUgaW5jb3JyZWN0IHJlc3VsdHMuIEluc3RlYWQsCisgICAgICAgIC8vIHNldCBhIG5v
bnplcm8gY29sb3Igd3JpdGUgbWFzayBidXQgbW9kaWZ5IHRoZSBibGVuZCBzdGF0ZSBzbyB0aGF0
IG5vCisgICAgICAgIC8vIGRyYXdpbmcgaXMgZG9uZS4KKyAgICAgICAgLy8gaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVjdC9pc3N1ZXMvZGV0YWlsP2lkPTE2OQorCisgICAgICAg
IERXT1JEIGNvbG9yTWFzayA9IGdsX2QzZDk6OkNvbnZlcnRDb2xvck1hc2soYmxlbmRTdGF0ZS5j
b2xvck1hc2tSZWQsIGJsZW5kU3RhdGUuY29sb3JNYXNrR3JlZW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5jb2xvck1hc2tC
bHVlLCBibGVuZFN0YXRlLmNvbG9yTWFza0FscGhhKTsKKyAgICAgICAgaWYgKGNvbG9yTWFzayA9
PSAwICYmICF6ZXJvQ29sb3JNYXNrQWxsb3dlZCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
RW5hYmxlIGdyZWVuIGNoYW5uZWwsIGJ1dCBzZXQgYmxlbmRpbmcgc28gbm90aGluZyB3aWxsIGJl
IGRyYXduLgorICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JX
UklURUVOQUJMRSwgRDNEQ09MT1JXUklURUVOQUJMRV9HUkVFTik7CisgICAgICAgICAgICBtRGV2
aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBUUlVFKTsKKworICAg
ICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1JDQkxFTkQsIEQzREJMRU5E
X1pFUk8pOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVTVEJM
RU5ELCBEM0RCTEVORF9PTkUpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUo
RDNEUlNfQkxFTkRPUCwgRDNEQkxFTkRPUF9BREQpOworICAgICAgICB9CisgICAgICAgIGVsc2UK
KyAgICAgICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09M
T1JXUklURUVOQUJMRSwgY29sb3JNYXNrKTsKKyAgICAgICAgfQorCisgICAgICAgIG1EZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX0RJVEhFUkVOQUJMRSwgYmxlbmRTdGF0ZS5kaXRoZXIgPyBU
UlVFIDogRkFMU0UpOworCisgICAgICAgIG1DdXJCbGVuZFN0YXRlID0gYmxlbmRTdGF0ZTsKKyAg
ICAgICAgbUN1ckJsZW5kQ29sb3IgPSBibGVuZENvbG9yOworICAgIH0KKworICAgIGlmIChzYW1w
bGVNYXNrQ2hhbmdlZCkKKyAgICB7CisgICAgICAgIC8vIFNldCB0aGUgbXVsdGlzYW1wbGUgbWFz
aworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19NVUxUSVNBTVBMRUFOVElB
TElBUywgVFJVRSk7CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX01VTFRJ
U0FNUExFTUFTSywgc3RhdGljX2Nhc3Q8RFdPUkQ+KHNhbXBsZU1hc2spKTsKKworICAgICAgICBt
Q3VyU2FtcGxlTWFzayA9IHNhbXBsZU1hc2s7CisgICAgfQorCisgICAgbUZvcmNlU2V0QmxlbmRT
dGF0ZSA9IGZhbHNlOworfQorCit2b2lkIFJlbmRlcmVyOTo6c2V0RGVwdGhTdGVuY2lsU3RhdGUo
Y29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZkZXB0aFN0ZW5jaWxTdGF0ZSwgaW50IHN0ZW5j
aWxSZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0ZW5jaWxC
YWNrUmVmLCBib29sIGZyb250RmFjZUNDVykKK3sKKyAgICBib29sIGRlcHRoU3RlbmNpbFN0YXRl
Q2hhbmdlZCA9IG1Gb3JjZVNldERlcHRoU3RlbmNpbFN0YXRlIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZW1jbXAoJmRlcHRoU3RlbmNpbFN0YXRlLCAmbUN1ckRlcHRo
U3RlbmNpbFN0YXRlLCBzaXplb2YoZ2w6OkRlcHRoU3RlbmNpbFN0YXRlKSkgIT0gMDsKKyAgICBi
b29sIHN0ZW5jaWxSZWZDaGFuZ2VkID0gbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgfHwgc3Rl
bmNpbFJlZiAhPSBtQ3VyU3RlbmNpbFJlZiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGVuY2lsQmFja1JlZiAhPSBtQ3VyU3RlbmNpbEJhY2tSZWY7CisgICAgYm9vbCBmcm9udEZh
Y2VDQ1dDaGFuZ2VkID0gbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgfHwgZnJvbnRGYWNlQ0NX
ICE9IG1DdXJGcm9udEZhY2VDQ1c7CisKKyAgICBpZiAoZGVwdGhTdGVuY2lsU3RhdGVDaGFuZ2Vk
KQorICAgIHsKKyAgICAgICAgaWYgKGRlcHRoU3RlbmNpbFN0YXRlLmRlcHRoVGVzdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkVOQUJMRSwg
RDNEWkJfVFJVRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19a
RlVOQywgZ2xfZDNkOTo6Q29udmVydENvbXBhcmlzb24oZGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhG
dW5jKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBt
RGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aRU5BQkxFLCBEM0RaQl9GQUxTRSk7CisgICAg
ICAgIH0KKworICAgICAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUgPSBkZXB0aFN0ZW5jaWxTdGF0
ZTsKKyAgICB9CisKKyAgICBpZiAoZGVwdGhTdGVuY2lsU3RhdGVDaGFuZ2VkIHx8IHN0ZW5jaWxS
ZWZDaGFuZ2VkIHx8IGZyb250RmFjZUNDV0NoYW5nZWQpCisgICAgeworICAgICAgICBpZiAoZGVw
dGhTdGVuY2lsU3RhdGUuc3RlbmNpbFRlc3QgJiYgbUN1clN0ZW5jaWxTaXplID4gMCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTEVO
QUJMRSwgVFJVRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19U
V09TSURFRFNURU5DSUxNT0RFLCBUUlVFKTsKKworICAgICAgICAgICAgLy8gRklYTUU6IFVuc3Vw
cG9ydGVkIGJ5IEQzRDkKKyAgICAgICAgICAgIGNvbnN0IEQzRFJFTkRFUlNUQVRFVFlQRSBEM0RS
U19DQ1dfU1RFTkNJTFJFRiA9IEQzRFJTX1NURU5DSUxSRUY7CisgICAgICAgICAgICBjb25zdCBE
M0RSRU5ERVJTVEFURVRZUEUgRDNEUlNfQ0NXX1NURU5DSUxNQVNLID0gRDNEUlNfU1RFTkNJTE1B
U0s7CisgICAgICAgICAgICBjb25zdCBEM0RSRU5ERVJTVEFURVRZUEUgRDNEUlNfQ0NXX1NURU5D
SUxXUklURU1BU0sgPSBEM0RSU19TVEVOQ0lMV1JJVEVNQVNLOworICAgICAgICAgICAgaWYgKGRl
cHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxXcml0ZW1hc2sgIT0gZGVwdGhTdGVuY2lsU3RhdGUuc3Rl
bmNpbEJhY2tXcml0ZW1hc2sgfHwKKyAgICAgICAgICAgICAgICBzdGVuY2lsUmVmICE9IHN0ZW5j
aWxCYWNrUmVmIHx8CisgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbE1h
c2sgIT0gZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tNYXNrKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEVSUigiU2VwYXJhdGUgZnJvbnQvYmFjayBzdGVuY2lsIHdyaXRlbWFz
a3MsIHJlZmVyZW5jZSB2YWx1ZXMsIG9yIHN0ZW5jaWwgbWFzayB2YWx1ZXMgYXJlIGludmFsaWQg
dW5kZXIgV2ViR0wuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGdldCB0aGUg
bWF4aW11bSBzaXplIG9mIHRoZSBzdGVuY2lsIHJlZgorICAgICAgICAgICAgdW5zaWduZWQgaW50
IG1heFN0ZW5jaWwgPSAoMSA8PCBtQ3VyU3RlbmNpbFNpemUpIC0gMTsKKworICAgICAgICAgICAg
bURldmljZS0+U2V0UmVuZGVyU3RhdGUoZnJvbnRGYWNlQ0NXID8gRDNEUlNfU1RFTkNJTFdSSVRF
TUFTSyA6IEQzRFJTX0NDV19TVEVOQ0lMV1JJVEVNQVNLLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFdyaXRlbWFzayk7CisgICAg
ICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVO
Q0lMRlVOQyA6IEQzRFJTX0NDV19TVEVOQ0lMRlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsX2QzZDk6OkNvbnZlcnRDb21wYXJpc29uKGRlcHRoU3RlbmNpbFN0YXRl
LnN0ZW5jaWxGdW5jKSk7CisKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKGZy
b250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxSRUYgOiBEM0RSU19DQ1dfU1RFTkNJTFJFRiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGVuY2lsUmVmIDwgKGludCltYXhT
dGVuY2lsKSA/IHN0ZW5jaWxSZWYgOiBtYXhTdGVuY2lsKTsKKyAgICAgICAgICAgIG1EZXZpY2Ut
PlNldFJlbmRlclN0YXRlKGZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxNQVNLIDogRDNEUlNf
Q0NXX1NURU5DSUxNQVNLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVw
dGhTdGVuY2lsU3RhdGUuc3RlbmNpbE1hc2spOworCisgICAgICAgICAgICBtRGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMRkFJTCA6IEQzRFJTX0NDV19T
VEVOQ0lMRkFJTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6
OkNvbnZlcnRTdGVuY2lsT3AoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEZhaWwpKTsKKyAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKGZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5D
SUxaRkFJTCA6IEQzRFJTX0NDV19TVEVOQ0lMWkZBSUwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbF9kM2Q5OjpDb252ZXJ0U3RlbmNpbE9wKGRlcHRoU3RlbmNpbFN0YXRl
LnN0ZW5jaWxQYXNzRGVwdGhGYWlsKSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMUEFTUyA6IEQzRFJTX0NDV19TVEVOQ0lM
UEFTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkNvbnZl
cnRTdGVuY2lsT3AoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFBhc3NEZXB0aFBhc3MpKTsKKwor
ICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoIWZyb250RmFjZUNDVyA/IEQzRFJT
X1NURU5DSUxXUklURU1BU0sgOiBEM0RSU19DQ1dfU1RFTkNJTFdSSVRFTUFTSywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNr
V3JpdGVtYXNrKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKCFmcm9udEZh
Y2VDQ1cgPyBEM0RSU19TVEVOQ0lMRlVOQyA6IEQzRFJTX0NDV19TVEVOQ0lMRlVOQywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkNvbnZlcnRDb21wYXJpc29u
KGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrRnVuYykpOworCisgICAgICAgICAgICBtRGV2
aWNlLT5TZXRSZW5kZXJTdGF0ZSghZnJvbnRGYWNlQ0NXID8gRDNEUlNfU1RFTkNJTFJFRiA6IEQz
RFJTX0NDV19TVEVOQ0lMUkVGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHN0ZW5jaWxCYWNrUmVmIDwgKGludCltYXhTdGVuY2lsKSA/IHN0ZW5jaWxCYWNrUmVmIDogbWF4
U3RlbmNpbCk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZSghZnJvbnRGYWNl
Q0NXID8gRDNEUlNfU1RFTkNJTE1BU0sgOiBEM0RSU19DQ1dfU1RFTkNJTE1BU0ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFj
a01hc2spOworCisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZSghZnJvbnRGYWNl
Q0NXID8gRDNEUlNfU1RFTkNJTEZBSUwgOiBEM0RSU19DQ1dfU1RFTkNJTEZBSUwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kM2Q5OjpDb252ZXJ0U3RlbmNpbE9wKGRl
cHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrRmFpbCkpOworICAgICAgICAgICAgbURldmljZS0+
U2V0UmVuZGVyU3RhdGUoIWZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxaRkFJTCA6IEQzRFJT
X0NDV19TVEVOQ0lMWkZBSUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bF9kM2Q5OjpDb252ZXJ0U3RlbmNpbE9wKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrUGFz
c0RlcHRoRmFpbCkpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoIWZyb250
RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxQQVNTIDogRDNEUlNfQ0NXX1NURU5DSUxQQVNTLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfZDNkOTo6Q29udmVydFN0ZW5jaWxP
cChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MpKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRl
clN0YXRlKEQzRFJTX1NURU5DSUxFTkFCTEUsIEZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAg
IG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pXUklURUVOQUJMRSwgZGVwdGhTdGVuY2ls
U3RhdGUuZGVwdGhNYXNrID8gVFJVRSA6IEZBTFNFKTsKKworICAgICAgICBtQ3VyU3RlbmNpbFJl
ZiA9IHN0ZW5jaWxSZWY7CisgICAgICAgIG1DdXJTdGVuY2lsQmFja1JlZiA9IHN0ZW5jaWxCYWNr
UmVmOworICAgICAgICBtQ3VyRnJvbnRGYWNlQ0NXID0gZnJvbnRGYWNlQ0NXOworICAgIH0KKwor
ICAgIG1Gb3JjZVNldERlcHRoU3RlbmNpbFN0YXRlID0gZmFsc2U7Cit9CisKK3ZvaWQgUmVuZGVy
ZXI5OjpzZXRTY2lzc29yUmVjdGFuZ2xlKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNjaXNzb3IsIGJv
b2wgZW5hYmxlZCkKK3sKKyAgICBib29sIHNjaXNzb3JDaGFuZ2VkID0gbUZvcmNlU2V0U2Npc3Nv
ciB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1jbXAoJnNjaXNzb3IsICZtQ3VyU2Np
c3Nvciwgc2l6ZW9mKGdsOjpSZWN0YW5nbGUpKSAhPSAwIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVuYWJsZWQgIT0gbVNjaXNzb3JFbmFibGVkOworCisgICAgaWYgKHNjaXNzb3JDaGFu
Z2VkKQorICAgIHsKKyAgICAgICAgaWYgKGVuYWJsZWQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IFJFQ1QgcmVjdDsKKyAgICAgICAgICAgIHJlY3QubGVmdCA9IGdsOjpjbGFtcChzY2lzc29yLngs
IDAsIHN0YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldERlc2Mud2lkdGgpKTsKKyAgICAgICAg
ICAgIHJlY3QudG9wID0gZ2w6OmNsYW1wKHNjaXNzb3IueSwgMCwgc3RhdGljX2Nhc3Q8aW50Piht
UmVuZGVyVGFyZ2V0RGVzYy5oZWlnaHQpKTsKKyAgICAgICAgICAgIHJlY3QucmlnaHQgPSBnbDo6
Y2xhbXAoc2Npc3Nvci54ICsgc2Npc3Nvci53aWR0aCwgMCwgc3RhdGljX2Nhc3Q8aW50PihtUmVu
ZGVyVGFyZ2V0RGVzYy53aWR0aCkpOworICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBnbDo6Y2xh
bXAoc2Npc3Nvci55ICsgc2Npc3Nvci5oZWlnaHQsIDAsIHN0YXRpY19jYXN0PGludD4obVJlbmRl
clRhcmdldERlc2MuaGVpZ2h0KSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRTY2lzc29yUmVj
dCgmcmVjdCk7CisgICAgICAgIH0KKworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19TQ0lTU09SVEVTVEVOQUJMRSwgZW5hYmxlZCA/IFRSVUUgOiBGQUxTRSk7CisKKyAgICAg
ICAgbVNjaXNzb3JFbmFibGVkID0gZW5hYmxlZDsKKyAgICAgICAgbUN1clNjaXNzb3IgPSBzY2lz
c29yOworICAgIH0KKworICAgIG1Gb3JjZVNldFNjaXNzb3IgPSBmYWxzZTsKK30KKworYm9vbCBS
ZW5kZXJlcjk6OnNldFZpZXdwb3J0KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnZpZXdwb3J0LCBmbG9h
dCB6TmVhciwgZmxvYXQgekZhciwgR0xlbnVtIGRyYXdNb2RlLCBHTGVudW0gZnJvbnRGYWNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlVmlld3BvcnQpCit7CisgICAg
Z2w6OlJlY3RhbmdsZSBhY3R1YWxWaWV3cG9ydCA9IHZpZXdwb3J0OworICAgIGZsb2F0IGFjdHVh
bFpOZWFyID0gZ2w6OmNsYW1wMDEoek5lYXIpOworICAgIGZsb2F0IGFjdHVhbFpGYXIgPSBnbDo6
Y2xhbXAwMSh6RmFyKTsKKyAgICBpZiAoaWdub3JlVmlld3BvcnQpCisgICAgeworICAgICAgICBh
Y3R1YWxWaWV3cG9ydC54ID0gMDsKKyAgICAgICAgYWN0dWFsVmlld3BvcnQueSA9IDA7CisgICAg
ICAgIGFjdHVhbFZpZXdwb3J0LndpZHRoID0gbVJlbmRlclRhcmdldERlc2Mud2lkdGg7CisgICAg
ICAgIGFjdHVhbFZpZXdwb3J0LmhlaWdodCA9IG1SZW5kZXJUYXJnZXREZXNjLmhlaWdodDsKKyAg
ICAgICAgYWN0dWFsWk5lYXIgPSAwLjBmOworICAgICAgICBhY3R1YWxaRmFyID0gMS4wZjsKKyAg
ICB9CisKKyAgICBEM0RWSUVXUE9SVDkgZHhWaWV3cG9ydDsKKyAgICBkeFZpZXdwb3J0LlggPSBn
bDo6Y2xhbXAoYWN0dWFsVmlld3BvcnQueCwgMCwgc3RhdGljX2Nhc3Q8aW50PihtUmVuZGVyVGFy
Z2V0RGVzYy53aWR0aCkpOworICAgIGR4Vmlld3BvcnQuWSA9IGdsOjpjbGFtcChhY3R1YWxWaWV3
cG9ydC55LCAwLCBzdGF0aWNfY2FzdDxpbnQ+KG1SZW5kZXJUYXJnZXREZXNjLmhlaWdodCkpOwor
ICAgIGR4Vmlld3BvcnQuV2lkdGggPSBnbDo6Y2xhbXAoYWN0dWFsVmlld3BvcnQud2lkdGgsIDAs
IHN0YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldERlc2Mud2lkdGgpIC0gc3RhdGljX2Nhc3Q8
aW50PihkeFZpZXdwb3J0LlgpKTsKKyAgICBkeFZpZXdwb3J0LkhlaWdodCA9IGdsOjpjbGFtcChh
Y3R1YWxWaWV3cG9ydC5oZWlnaHQsIDAsIHN0YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldERl
c2MuaGVpZ2h0KSAtIHN0YXRpY19jYXN0PGludD4oZHhWaWV3cG9ydC5ZKSk7CisgICAgZHhWaWV3
cG9ydC5NaW5aID0gYWN0dWFsWk5lYXI7CisgICAgZHhWaWV3cG9ydC5NYXhaID0gYWN0dWFsWkZh
cjsKKworICAgIGlmIChkeFZpZXdwb3J0LldpZHRoIDw9IDAgfHwgZHhWaWV3cG9ydC5IZWlnaHQg
PD0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsgICAvLyBOb3RoaW5nIHRvIHJlbmRl
cgorICAgIH0KKworICAgIGJvb2wgdmlld3BvcnRDaGFuZ2VkID0gbUZvcmNlU2V0Vmlld3BvcnQg
fHwgbWVtY21wKCZhY3R1YWxWaWV3cG9ydCwgJm1DdXJWaWV3cG9ydCwgc2l6ZW9mKGdsOjpSZWN0
YW5nbGUpKSAhPSAwIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxaTmVhciAh
PSBtQ3VyTmVhciB8fCBhY3R1YWxaRmFyICE9IG1DdXJGYXI7CisgICAgaWYgKHZpZXdwb3J0Q2hh
bmdlZCkKKyAgICB7CisgICAgICAgIG1EZXZpY2UtPlNldFZpZXdwb3J0KCZkeFZpZXdwb3J0KTsK
KworICAgICAgICBtQ3VyVmlld3BvcnQgPSBhY3R1YWxWaWV3cG9ydDsKKyAgICAgICAgbUN1ck5l
YXIgPSBhY3R1YWxaTmVhcjsKKyAgICAgICAgbUN1ckZhciA9IGFjdHVhbFpGYXI7CisKKyAgICAg
ICAgZHhfVmVydGV4Q29uc3RhbnRzIHZjID0gezB9OworICAgICAgICBkeF9QaXhlbENvbnN0YW50
cyBwYyA9IHswfTsKKworICAgICAgICB2Yy52aWV3QWRqdXN0WzBdID0gKGZsb2F0KSgoYWN0dWFs
Vmlld3BvcnQud2lkdGggLSAoaW50KWR4Vmlld3BvcnQuV2lkdGgpICsgMiAqIChhY3R1YWxWaWV3
cG9ydC54IC0gKGludClkeFZpZXdwb3J0LlgpIC0gMSkgLyBkeFZpZXdwb3J0LldpZHRoOworICAg
ICAgICB2Yy52aWV3QWRqdXN0WzFdID0gKGZsb2F0KSgoYWN0dWFsVmlld3BvcnQuaGVpZ2h0IC0g
KGludClkeFZpZXdwb3J0LkhlaWdodCkgKyAyICogKGFjdHVhbFZpZXdwb3J0LnkgLSAoaW50KWR4
Vmlld3BvcnQuWSkgLSAxKSAvIGR4Vmlld3BvcnQuSGVpZ2h0OworICAgICAgICB2Yy52aWV3QWRq
dXN0WzJdID0gKGZsb2F0KWFjdHVhbFZpZXdwb3J0LndpZHRoIC8gZHhWaWV3cG9ydC5XaWR0aDsK
KyAgICAgICAgdmMudmlld0FkanVzdFszXSA9IChmbG9hdClhY3R1YWxWaWV3cG9ydC5oZWlnaHQg
LyBkeFZpZXdwb3J0LkhlaWdodDsKKworICAgICAgICBwYy52aWV3Q29vcmRzWzBdID0gYWN0dWFs
Vmlld3BvcnQud2lkdGggICogMC41ZjsKKyAgICAgICAgcGMudmlld0Nvb3Jkc1sxXSA9IGFjdHVh
bFZpZXdwb3J0LmhlaWdodCAqIDAuNWY7CisgICAgICAgIHBjLnZpZXdDb29yZHNbMl0gPSBhY3R1
YWxWaWV3cG9ydC54ICsgKGFjdHVhbFZpZXdwb3J0LndpZHRoICAqIDAuNWYpOworICAgICAgICBw
Yy52aWV3Q29vcmRzWzNdID0gYWN0dWFsVmlld3BvcnQueSArIChhY3R1YWxWaWV3cG9ydC5oZWln
aHQgKiAwLjVmKTsKKworICAgICAgICBwYy5kZXB0aEZyb250WzBdID0gKGFjdHVhbFpGYXIgLSBh
Y3R1YWxaTmVhcikgKiAwLjVmOworICAgICAgICBwYy5kZXB0aEZyb250WzFdID0gKGFjdHVhbFpO
ZWFyICsgYWN0dWFsWkZhcikgKiAwLjVmOworICAgICAgICBwYy5kZXB0aEZyb250WzJdID0gIWds
OjpJc1RyaWFuZ2xlTW9kZShkcmF3TW9kZSkgPyAwLjBmIDogKGZyb250RmFjZSA9PSBHTF9DQ1cg
PyAxLjBmIDogLTEuMGYpOzsKKworICAgICAgICB2Yy5kZXB0aFJhbmdlWzBdID0gYWN0dWFsWk5l
YXI7CisgICAgICAgIHZjLmRlcHRoUmFuZ2VbMV0gPSBhY3R1YWxaRmFyOworICAgICAgICB2Yy5k
ZXB0aFJhbmdlWzJdID0gYWN0dWFsWkZhciAtIGFjdHVhbFpOZWFyOworCisgICAgICAgIHBjLmRl
cHRoUmFuZ2VbMF0gPSBhY3R1YWxaTmVhcjsKKyAgICAgICAgcGMuZGVwdGhSYW5nZVsxXSA9IGFj
dHVhbFpGYXI7CisgICAgICAgIHBjLmRlcHRoUmFuZ2VbMl0gPSBhY3R1YWxaRmFyIC0gYWN0dWFs
Wk5lYXI7CisKKyAgICAgICAgaWYgKG1lbWNtcCgmdmMsICZtVmVydGV4Q29uc3RhbnRzLCBzaXpl
b2YoZHhfVmVydGV4Q29uc3RhbnRzKSkgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgbVZl
cnRleENvbnN0YW50cyA9IHZjOworICAgICAgICAgICAgbUR4VW5pZm9ybXNEaXJ0eSA9IHRydWU7
CisgICAgICAgIH0KKworICAgICAgICBpZiAobWVtY21wKCZwYywgJm1QaXhlbENvbnN0YW50cywg
c2l6ZW9mKGR4X1BpeGVsQ29uc3RhbnRzKSkgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAg
bVBpeGVsQ29uc3RhbnRzID0gcGM7CisgICAgICAgICAgICBtRHhVbmlmb3Jtc0RpcnR5ID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1Gb3JjZVNldFZpZXdwb3J0ID0gZmFsc2U7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUmVuZGVyZXI5OjphcHBseVByaW1pdGl2ZVR5cGUo
R0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQpCit7CisgICAgc3dpdGNoIChtb2RlKQorICAgIHsK
KyAgICAgIGNhc2UgR0xfUE9JTlRTOgorICAgICAgICBtUHJpbWl0aXZlVHlwZSA9IEQzRFBUX1BP
SU5UTElTVDsKKyAgICAgICAgbVByaW1pdGl2ZUNvdW50ID0gY291bnQ7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9MSU5FUzoKKyAgICAgICAgbVByaW1pdGl2ZVR5cGUgPSBEM0RQVF9M
SU5FTElTVDsKKyAgICAgICAgbVByaW1pdGl2ZUNvdW50ID0gY291bnQgLyAyOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfTElORV9MT09QOgorICAgICAgICBtUHJpbWl0aXZlVHlwZSA9
IEQzRFBUX0xJTkVTVFJJUDsKKyAgICAgICAgbVByaW1pdGl2ZUNvdW50ID0gY291bnQgLSAxOyAg
IC8vIEQzRCBkb2Vzbid0IHN1cHBvcnQgbGluZSBsb29wcywgc28gd2UgZHJhdyB0aGUgbGFzdCBs
aW5lIHNlcGFyYXRlbHkKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJTkVfU1RSSVA6
CisgICAgICAgIG1QcmltaXRpdmVUeXBlID0gRDNEUFRfTElORVNUUklQOworICAgICAgICBtUHJp
bWl0aXZlQ291bnQgPSBjb3VudCAtIDE7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9U
UklBTkdMRVM6CisgICAgICAgIG1QcmltaXRpdmVUeXBlID0gRDNEUFRfVFJJQU5HTEVMSVNUOwor
ICAgICAgICBtUHJpbWl0aXZlQ291bnQgPSBjb3VudCAvIDM7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9UUklBTkdMRV9TVFJJUDoKKyAgICAgICAgbVByaW1pdGl2ZVR5cGUgPSBEM0RQ
VF9UUklBTkdMRVNUUklQOworICAgICAgICBtUHJpbWl0aXZlQ291bnQgPSBjb3VudCAtIDI7Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9UUklBTkdMRV9GQU46CisgICAgICAgIG1Qcmlt
aXRpdmVUeXBlID0gRDNEUFRfVFJJQU5HTEVGQU47CisgICAgICAgIG1QcmltaXRpdmVDb3VudCA9
IGNvdW50IC0gMjsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSwgZmFsc2UpOworICAgIH0KKworICAgIHJldHVy
biBtUHJpbWl0aXZlQ291bnQgPiAwOworfQorCisKK2dsOjpSZW5kZXJidWZmZXIgKlJlbmRlcmVy
OTo6Z2V0TnVsbENvbG9yYnVmZmVyKGdsOjpSZW5kZXJidWZmZXIgKmRlcHRoYnVmZmVyKQorewor
ICAgIGlmICghZGVwdGhidWZmZXIpCisgICAgeworICAgICAgICBFUlIoIlVuZXhwZWN0ZWQgbnVs
bCBkZXB0aGJ1ZmZlciBmb3IgZGVwdGgtb25seSBGQk8uIik7CisgICAgICAgIHJldHVybiBOVUxM
OworICAgIH0KKworICAgIEdMc2l6ZWkgd2lkdGggID0gZGVwdGhidWZmZXItPmdldFdpZHRoKCk7
CisgICAgR0xzaXplaSBoZWlnaHQgPSBkZXB0aGJ1ZmZlci0+Z2V0SGVpZ2h0KCk7CisKKyAgICAv
LyBzZWFyY2ggY2FjaGVkIG51bGxjb2xvcmJ1ZmZlcnMKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IE5VTV9OVUxMX0NPTE9SQlVGRkVSX0NBQ0hFX0VOVFJJRVM7IGkrKykKKyAgICB7CisgICAgICAg
IGlmIChtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uYnVmZmVyICE9IE5VTEwgJiYKKyAgICAgICAg
ICAgIG1OdWxsQ29sb3JidWZmZXJDYWNoZVtpXS53aWR0aCA9PSB3aWR0aCAmJgorICAgICAgICAg
ICAgbU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ldLmhlaWdodCA9PSBoZWlnaHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1OdWxsQ29sb3JidWZmZXJDYWNoZVtpXS5scnVDb3VudCA9ICsrbU1heE51
bGxDb2xvcmJ1ZmZlckxSVTsKKyAgICAgICAgICAgIHJldHVybiBtTnVsbENvbG9yYnVmZmVyQ2Fj
aGVbaV0uYnVmZmVyOworICAgICAgICB9CisgICAgfQorCisgICAgZ2w6OlJlbmRlcmJ1ZmZlciAq
bnVsbGJ1ZmZlciA9IG5ldyBnbDo6UmVuZGVyYnVmZmVyKHRoaXMsIDAsIG5ldyBnbDo6Q29sb3Ji
dWZmZXIodGhpcywgd2lkdGgsIGhlaWdodCwgR0xfTk9ORSwgMCkpOworCisgICAgLy8gYWRkIG51
bGxidWZmZXIgdG8gdGhlIGNhY2hlCisgICAgTnVsbENvbG9yYnVmZmVyQ2FjaGVFbnRyeSAqb2xk
ZXN0ID0gJm1OdWxsQ29sb3JidWZmZXJDYWNoZVswXTsKKyAgICBmb3IgKGludCBpID0gMTsgaSA8
IE5VTV9OVUxMX0NPTE9SQlVGRkVSX0NBQ0hFX0VOVFJJRVM7IGkrKykKKyAgICB7CisgICAgICAg
IGlmIChtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0ubHJ1Q291bnQgPCBvbGRlc3QtPmxydUNvdW50
KQorICAgICAgICB7CisgICAgICAgICAgICBvbGRlc3QgPSAmbU51bGxDb2xvcmJ1ZmZlckNhY2hl
W2ldOworICAgICAgICB9CisgICAgfQorCisgICAgZGVsZXRlIG9sZGVzdC0+YnVmZmVyOworICAg
IG9sZGVzdC0+YnVmZmVyID0gbnVsbGJ1ZmZlcjsKKyAgICBvbGRlc3QtPmxydUNvdW50ID0gKytt
TWF4TnVsbENvbG9yYnVmZmVyTFJVOworICAgIG9sZGVzdC0+d2lkdGggPSB3aWR0aDsKKyAgICBv
bGRlc3QtPmhlaWdodCA9IGhlaWdodDsKKworICAgIHJldHVybiBudWxsYnVmZmVyOworfQorCiti
b29sIFJlbmRlcmVyOTo6YXBwbHlSZW5kZXJUYXJnZXQoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1
ZmZlcikKK3sKKyAgICAvLyBpZiB0aGVyZSBpcyBubyBjb2xvciBhdHRhY2htZW50IHdlIG11c3Qg
c3ludGhlc2l6ZSBhIE5VTEwgY29sb3JhdHRhY2htZW50CisgICAgLy8gdG8ga2VlcCB0aGUgRDNE
IHJ1bnRpbWUgaGFwcHkuICBUaGlzIHNob3VsZCBvbmx5IGJlIHBvc3NpYmxlIGlmIGRlcHRoIHRl
eHR1cmluZy4KKyAgICBnbDo6UmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXJPYmplY3QgPSBOVUxM
OworICAgIGlmIChmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXJUeXBlKDApICE9IEdMX05PTkUp
CisgICAgeworICAgICAgICByZW5kZXJidWZmZXJPYmplY3QgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29s
b3JidWZmZXIoMCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJlbmRlcmJ1ZmZl
ck9iamVjdCA9IGdldE51bGxDb2xvcmJ1ZmZlcihmcmFtZWJ1ZmZlci0+Z2V0RGVwdGhidWZmZXIo
KSk7CisgICAgfQorICAgIGlmICghcmVuZGVyYnVmZmVyT2JqZWN0KQorICAgIHsKKyAgICAgICAg
RVJSKCJ1bmFibGUgdG8gbG9jYXRlIHJlbmRlcmJ1ZmZlciBmb3IgRkJPLiIpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCByZW5kZXJUYXJnZXRDaGFuZ2VkID0gZmFs
c2U7CisgICAgdW5zaWduZWQgaW50IHJlbmRlclRhcmdldFNlcmlhbCA9IHJlbmRlcmJ1ZmZlck9i
amVjdC0+Z2V0U2VyaWFsKCk7CisgICAgaWYgKHJlbmRlclRhcmdldFNlcmlhbCAhPSBtQXBwbGll
ZFJlbmRlclRhcmdldFNlcmlhbCkKKyAgICB7CisgICAgICAgIC8vIEFwcGx5IHRoZSByZW5kZXIg
dGFyZ2V0IG9uIHRoZSBkZXZpY2UKKyAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRh
cmdldFN1cmZhY2UgPSBOVUxMOworCisgICAgICAgIFJlbmRlclRhcmdldCAqcmVuZGVyVGFyZ2V0
ID0gcmVuZGVyYnVmZmVyT2JqZWN0LT5nZXRSZW5kZXJUYXJnZXQoKTsKKyAgICAgICAgaWYgKHJl
bmRlclRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgICAgcmVuZGVyVGFyZ2V0U3VyZmFjZSA9
IFJlbmRlclRhcmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5KHJlbmRlclRhcmdldCktPmdldFN1cmZh
Y2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghcmVuZGVyVGFyZ2V0U3VyZmFjZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgRVJSKCJyZW5kZXIgdGFyZ2V0IHBvaW50ZXIgdW5leHBlY3Rl
ZGx5IG51bGwuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgLy8gQ29udGV4dCBtdXN0
IGJlIGxvc3QKKyAgICAgICAgfQorCisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclRhcmdldCgw
LCByZW5kZXJUYXJnZXRTdXJmYWNlKTsKKyAgICAgICAgcmVuZGVyVGFyZ2V0U3VyZmFjZS0+UmVs
ZWFzZSgpOworCisgICAgICAgIG1BcHBsaWVkUmVuZGVyVGFyZ2V0U2VyaWFsID0gcmVuZGVyVGFy
Z2V0U2VyaWFsOworICAgICAgICByZW5kZXJUYXJnZXRDaGFuZ2VkID0gdHJ1ZTsKKyAgICB9CisK
KyAgICBnbDo6UmVuZGVyYnVmZmVyICpkZXB0aFN0ZW5jaWwgPSBOVUxMOworICAgIHVuc2lnbmVk
IGludCBkZXB0aGJ1ZmZlclNlcmlhbCA9IDA7CisgICAgdW5zaWduZWQgaW50IHN0ZW5jaWxidWZm
ZXJTZXJpYWwgPSAwOworICAgIGlmIChmcmFtZWJ1ZmZlci0+Z2V0RGVwdGhidWZmZXJUeXBlKCkg
IT0gR0xfTk9ORSkKKyAgICB7CisgICAgICAgIGRlcHRoU3RlbmNpbCA9IGZyYW1lYnVmZmVyLT5n
ZXREZXB0aGJ1ZmZlcigpOworICAgICAgICBpZiAoIWRlcHRoU3RlbmNpbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgRVJSKCJEZXB0aCBzdGVuY2lsIHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwu
Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBkZXB0
aGJ1ZmZlclNlcmlhbCA9IGRlcHRoU3RlbmNpbC0+Z2V0U2VyaWFsKCk7CisgICAgfQorICAgIGVs
c2UgaWYgKGZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyVHlwZSgpICE9IEdMX05PTkUpCisg
ICAgeworICAgICAgICBkZXB0aFN0ZW5jaWwgPSBmcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZl
cigpOworICAgICAgICBpZiAoIWRlcHRoU3RlbmNpbCkKKyAgICAgICAgeworICAgICAgICAgICAg
RVJSKCJEZXB0aCBzdGVuY2lsIHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBzdGVuY2lsYnVmZmVyU2Vy
aWFsID0gZGVwdGhTdGVuY2lsLT5nZXRTZXJpYWwoKTsKKyAgICB9CisKKyAgICBpZiAoZGVwdGhi
dWZmZXJTZXJpYWwgIT0gbUFwcGxpZWREZXB0aGJ1ZmZlclNlcmlhbCB8fAorICAgICAgICBzdGVu
Y2lsYnVmZmVyU2VyaWFsICE9IG1BcHBsaWVkU3RlbmNpbGJ1ZmZlclNlcmlhbCB8fAorICAgICAg
ICAhbURlcHRoU3RlbmNpbEluaXRpYWxpemVkKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50
IGRlcHRoU2l6ZSA9IDA7CisgICAgICAgIHVuc2lnbmVkIGludCBzdGVuY2lsU2l6ZSA9IDA7CisK
KyAgICAgICAgLy8gQXBwbHkgdGhlIGRlcHRoIHN0ZW5jaWwgb24gdGhlIGRldmljZQorICAgICAg
ICBpZiAoZGVwdGhTdGVuY2lsKQorICAgICAgICB7CisgICAgICAgICAgICBJRGlyZWN0M0RTdXJm
YWNlOSAqZGVwdGhTdGVuY2lsU3VyZmFjZSA9IE5VTEw7CisgICAgICAgICAgICBSZW5kZXJUYXJn
ZXQgKmRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCA9IGRlcHRoU3RlbmNpbC0+Z2V0RGVwdGhTdGVu
Y2lsKCk7CisKKyAgICAgICAgICAgIGlmIChkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3VyZmFjZSA9IFJlbmRlclRh
cmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5KGRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCktPmdldFN1
cmZhY2UoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFkZXB0aFN0ZW5jaWxT
dXJmYWNlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVSUigiZGVwdGggc3RlbmNp
bCBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsgICAvLyBDb250ZXh0IG11c3QgYmUgbG9zdAorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBtRGV2aWNlLT5TZXREZXB0aFN0ZW5jaWxTdXJmYWNlKGRlcHRoU3RlbmNpbFN1cmZhY2Up
OworICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3VyZmFjZS0+UmVsZWFzZSgpOworCisgICAgICAg
ICAgICBkZXB0aFNpemUgPSBkZXB0aFN0ZW5jaWwtPmdldERlcHRoU2l6ZSgpOworICAgICAgICAg
ICAgc3RlbmNpbFNpemUgPSBkZXB0aFN0ZW5jaWwtPmdldFN0ZW5jaWxTaXplKCk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXREZXB0
aFN0ZW5jaWxTdXJmYWNlKE5VTEwpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtRGVwdGhT
dGVuY2lsSW5pdGlhbGl6ZWQgfHwgZGVwdGhTaXplICE9IG1DdXJEZXB0aFNpemUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1DdXJEZXB0aFNpemUgPSBkZXB0aFNpemU7CisgICAgICAgICAgICBt
Rm9yY2VTZXRSYXN0ZXJTdGF0ZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1E
ZXB0aFN0ZW5jaWxJbml0aWFsaXplZCB8fCBzdGVuY2lsU2l6ZSAhPSBtQ3VyU3RlbmNpbFNpemUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1DdXJTdGVuY2lsU2l6ZSA9IHN0ZW5jaWxTaXplOwor
ICAgICAgICAgICAgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgPSB0cnVlOworICAgICAgICB9
CisKKyAgICAgICAgbUFwcGxpZWREZXB0aGJ1ZmZlclNlcmlhbCA9IGRlcHRoYnVmZmVyU2VyaWFs
OworICAgICAgICBtQXBwbGllZFN0ZW5jaWxidWZmZXJTZXJpYWwgPSBzdGVuY2lsYnVmZmVyU2Vy
aWFsOworICAgICAgICBtRGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KKwor
ICAgIGlmIChyZW5kZXJUYXJnZXRDaGFuZ2VkIHx8ICFtUmVuZGVyVGFyZ2V0RGVzY0luaXRpYWxp
emVkKQorICAgIHsKKyAgICAgICAgbUZvcmNlU2V0U2Npc3NvciA9IHRydWU7CisgICAgICAgIG1G
b3JjZVNldFZpZXdwb3J0ID0gdHJ1ZTsKKworICAgICAgICBtUmVuZGVyVGFyZ2V0RGVzYy53aWR0
aCA9IHJlbmRlcmJ1ZmZlck9iamVjdC0+Z2V0V2lkdGgoKTsKKyAgICAgICAgbVJlbmRlclRhcmdl
dERlc2MuaGVpZ2h0ID0gcmVuZGVyYnVmZmVyT2JqZWN0LT5nZXRIZWlnaHQoKTsKKyAgICAgICAg
bVJlbmRlclRhcmdldERlc2MuZm9ybWF0ID0gcmVuZGVyYnVmZmVyT2JqZWN0LT5nZXRBY3R1YWxG
b3JtYXQoKTsKKyAgICAgICAgbVJlbmRlclRhcmdldERlc2NJbml0aWFsaXplZCA9IHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0dMZW51bSBSZW5kZXJlcjk6OmFwcGx5VmVy
dGV4QnVmZmVyKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5LCBnbDo6VmVydGV4QXR0
cmlidXRlIHZlcnRleEF0dHJpYnV0ZXNbXSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdM
c2l6ZWkgaW5zdGFuY2VzKQoreworICAgIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tn
bDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsKKyAgICBHTGVudW0gZXJyID0gbVZlcnRleERhdGFNYW5h
Z2VyLT5wcmVwYXJlVmVydGV4RGF0YSh2ZXJ0ZXhBdHRyaWJ1dGVzLCBwcm9ncmFtQmluYXJ5LCBm
aXJzdCwgY291bnQsIGF0dHJpYnV0ZXMsIGluc3RhbmNlcyk7CisgICAgaWYgKGVyciAhPSBHTF9O
T19FUlJPUikKKyAgICB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorICAgIAorICAgIHJl
dHVybiBtVmVydGV4RGVjbGFyYXRpb25DYWNoZS5hcHBseURlY2xhcmF0aW9uKG1EZXZpY2UsIGF0
dHJpYnV0ZXMsIHByb2dyYW1CaW5hcnksIGluc3RhbmNlcywgJm1SZXBlYXREcmF3KTsKK30KKwor
Ly8gQXBwbGllcyB0aGUgaW5kaWNlcyBhbmQgZWxlbWVudCBhcnJheSBiaW5kaW5ncyB0byB0aGUg
RGlyZWN0M0QgOSBkZXZpY2UKK0dMZW51bSBSZW5kZXJlcjk6OmFwcGx5SW5kZXhCdWZmZXIoY29u
c3QgR0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIsIEdMc2l6
ZWkgY291bnQsIEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgVHJhbnNsYXRlZEluZGV4RGF0YSAq
aW5kZXhJbmZvKQoreworICAgIEdMZW51bSBlcnIgPSBtSW5kZXhEYXRhTWFuYWdlci0+cHJlcGFy
ZUluZGV4RGF0YSh0eXBlLCBjb3VudCwgZWxlbWVudEFycmF5QnVmZmVyLCBpbmRpY2VzLCBpbmRl
eEluZm8pOworCisgICAgaWYgKGVyciA9PSBHTF9OT19FUlJPUikKKyAgICB7CisgICAgICAgIC8v
IERpcmVjdGx5IGJpbmRpbmcgdGhlIHN0b3JhZ2UgYnVmZmVyIGlzIG5vdCBzdXBwb3J0ZWQgZm9y
IGQzZDkKKyAgICAgICAgQVNTRVJUKGluZGV4SW5mby0+c3RvcmFnZSA9PSBOVUxMKTsKKworICAg
ICAgICBpZiAoaW5kZXhJbmZvLT5zZXJpYWwgIT0gbUFwcGxpZWRJQlNlcmlhbCkKKyAgICAgICAg
eworICAgICAgICAgICAgSW5kZXhCdWZmZXI5KiBpbmRleEJ1ZmZlciA9IEluZGV4QnVmZmVyOTo6
bWFrZUluZGV4QnVmZmVyOShpbmRleEluZm8tPmluZGV4QnVmZmVyKTsKKworICAgICAgICAgICAg
bURldmljZS0+U2V0SW5kaWNlcyhpbmRleEJ1ZmZlci0+Z2V0QnVmZmVyKCkpOworICAgICAgICAg
ICAgbUFwcGxpZWRJQlNlcmlhbCA9IGluZGV4SW5mby0+c2VyaWFsOworICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIGVycjsKK30KKwordm9pZCBSZW5kZXJlcjk6OmRyYXdBcnJheXMoR0xl
bnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKQoreworICAgIHN0YXJ0
U2NlbmUoKTsKKyAgICAgICAgCisgICAgaWYgKG1vZGUgPT0gR0xfTElORV9MT09QKQorICAgIHsK
KyAgICAgICAgZHJhd0xpbmVMb29wKGNvdW50LCBHTF9OT05FLCBOVUxMLCAwLCBOVUxMKTsKKyAg
ICB9CisgICAgZWxzZSBpZiAoaW5zdGFuY2VzID4gMCkKKyAgICB7CisgICAgICAgIFN0YXRpY0lu
ZGV4QnVmZmVySW50ZXJmYWNlICpjb3VudGluZ0lCID0gbUluZGV4RGF0YU1hbmFnZXItPmdldENv
dW50aW5nSW5kaWNlcyhjb3VudCk7CisgICAgICAgIGlmIChjb3VudGluZ0lCKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAobUFwcGxpZWRJQlNlcmlhbCAhPSBjb3VudGluZ0lCLT5nZXRTZXJp
YWwoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbmRleEJ1ZmZlcjkgKmluZGV4
QnVmZmVyID0gSW5kZXhCdWZmZXI5OjptYWtlSW5kZXhCdWZmZXI5KGNvdW50aW5nSUItPmdldElu
ZGV4QnVmZmVyKCkpOworCisgICAgICAgICAgICAgICAgbURldmljZS0+U2V0SW5kaWNlcyhpbmRl
eEJ1ZmZlci0+Z2V0QnVmZmVyKCkpOworICAgICAgICAgICAgICAgIG1BcHBsaWVkSUJTZXJpYWwg
PSBjb3VudGluZ0lCLT5nZXRTZXJpYWwoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBtUmVwZWF0RHJhdzsgaSsrKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIG1EZXZpY2UtPkRyYXdJbmRleGVkUHJpbWl0aXZlKG1QcmltaXRpdmVUeXBl
LCAwLCAwLCBjb3VudCwgMCwgbVByaW1pdGl2ZUNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiQ291bGQgbm90
IGNyZWF0ZSBhIGNvdW50aW5nIGluZGV4IGJ1ZmZlciBmb3IgZ2xEcmF3QXJyYXlzSW5zdGFuY2Vk
LiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBlbHNlICAgLy8gUmVndWxhciBjYXNlCisgICAgeworICAgICAg
ICBtRGV2aWNlLT5EcmF3UHJpbWl0aXZlKG1QcmltaXRpdmVUeXBlLCAwLCBtUHJpbWl0aXZlQ291
bnQpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJlcjk6OmRyYXdFbGVtZW50cyhHTGVudW0gbW9k
ZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6
OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyLCBjb25zdCBUcmFuc2xhdGVkSW5kZXhEYXRhICZp
bmRleEluZm8sIEdMc2l6ZWkgLyppbnN0YW5jZXMqLykKK3sKKyAgICBzdGFydFNjZW5lKCk7CisK
KyAgICBpZiAobW9kZSA9PSBHTF9QT0lOVFMpCisgICAgeworICAgICAgICBkcmF3SW5kZXhlZFBv
aW50cyhjb3VudCwgdHlwZSwgaW5kaWNlcywgZWxlbWVudEFycmF5QnVmZmVyKTsKKyAgICB9Cisg
ICAgZWxzZSBpZiAobW9kZSA9PSBHTF9MSU5FX0xPT1ApCisgICAgeworICAgICAgICBkcmF3TGlu
ZUxvb3AoY291bnQsIHR5cGUsIGluZGljZXMsIGluZGV4SW5mby5taW5JbmRleCwgZWxlbWVudEFy
cmF5QnVmZmVyKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBtUmVwZWF0RHJhdzsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBHTHNpemVp
IHZlcnRleENvdW50ID0gaW5kZXhJbmZvLm1heEluZGV4IC0gaW5kZXhJbmZvLm1pbkluZGV4ICsg
MTsKKyAgICAgICAgICAgIG1EZXZpY2UtPkRyYXdJbmRleGVkUHJpbWl0aXZlKG1QcmltaXRpdmVU
eXBlLCAtKElOVClpbmRleEluZm8ubWluSW5kZXgsIGluZGV4SW5mby5taW5JbmRleCwgdmVydGV4
Q291bnQsIGluZGV4SW5mby5zdGFydEluZGV4LCBtUHJpbWl0aXZlQ291bnQpOworICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIFJlbmRlcmVyOTo6ZHJhd0xpbmVMb29wKEdMc2l6ZWkgY291bnQs
IEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGludCBtaW5JbmRleCwgZ2w6OkJ1
ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyKQoreworICAgIC8vIEdldCB0aGUgcmF3IGluZGljZXMg
Zm9yIGFuIGluZGV4ZWQgZHJhdworICAgIGlmICh0eXBlICE9IEdMX05PTkUgJiYgZWxlbWVudEFy
cmF5QnVmZmVyKQorICAgIHsKKyAgICAgICAgZ2w6OkJ1ZmZlciAqaW5kZXhCdWZmZXIgPSBlbGVt
ZW50QXJyYXlCdWZmZXI7CisgICAgICAgIEJ1ZmZlclN0b3JhZ2UgKnN0b3JhZ2UgPSBpbmRleEJ1
ZmZlci0+Z2V0U3RvcmFnZSgpOworICAgICAgICBpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJl
dF9jYXN0PGludHB0cl90PihpbmRpY2VzKTsKKyAgICAgICAgaW5kaWNlcyA9IHN0YXRpY19jYXN0
PGNvbnN0IEdMdWJ5dGUqPihzdG9yYWdlLT5nZXREYXRhKCkpICsgb2Zmc2V0OworICAgIH0KKwor
ICAgIFVJTlQgc3RhcnRJbmRleCA9IDA7CisKKyAgICBpZiAoZ2V0MzJCaXRJbmRleFN1cHBvcnQo
KSkKKyAgICB7CisgICAgICAgIGlmICghbUxpbmVMb29wSUIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1MaW5lTG9vcElCID0gbmV3IFN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlKHRoaXMp
OworICAgICAgICAgICAgaWYgKCFtTGluZUxvb3BJQi0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKElOSVRJ
QUxfSU5ERVhfQlVGRkVSX1NJWkUsIEdMX1VOU0lHTkVEX0lOVCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZGVsZXRlIG1MaW5lTG9vcElCOworICAgICAgICAgICAgICAgIG1MaW5l
TG9vcElCID0gTlVMTDsKKworICAgICAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBh
IDMyLWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOworICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihj
b3VudCArIDEpID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgLyBz
aXplb2YodW5zaWduZWQgaW50KSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiQ291bGQg
bm90IGNyZWF0ZSBhIDMyLWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09Q
LCB0b28gbWFueSBpbmRpY2VzIHJlcXVpcmVkLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGludCBzcGFjZU5lZWRlZCA9IChjb3VudCArIDEpICogc2l6ZW9mKHVuc2lnbmVkIGludCk7
CisgICAgICAgIGlmICghbUxpbmVMb29wSUItPnJlc2VydmVCdWZmZXJTcGFjZShzcGFjZU5lZWRl
ZCwgR0xfVU5TSUdORURfSU5UKSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJDb3VsZCBu
b3QgcmVzZXJ2ZSBlbm91Z2ggc3BhY2UgaW4gbG9vcGluZyBpbmRleCBidWZmZXIgZm9yIEdMX0xJ
TkVfTE9PUC4iKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkKiBtYXBwZWRNZW1vcnkgPSBOVUxMOworICAg
ICAgICBpbnQgb2Zmc2V0ID0gbUxpbmVMb29wSUItPm1hcEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1h
cHBlZE1lbW9yeSk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gLTEgfHwgbWFwcGVkTWVtb3J5ID09
IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiQ291bGQgbm90IG1hcCBpbmRleCBi
dWZmZXIgZm9yIEdMX0xJTkVfTE9PUC4iKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIH0KKworICAgICAgICBzdGFydEluZGV4ID0gc3Rh
dGljX2Nhc3Q8VUlOVD4ob2Zmc2V0KSAvIDQ7CisgICAgICAgIHVuc2lnbmVkIGludCAqZGF0YSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4obWFwcGVkTWVtb3J5KTsKKworICAgICAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX05PTkU6ICAgLy8g
Tm9uLWluZGV4ZWQgZHJhdworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsg
aSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZGF0YVtjb3VudF0gPSAwOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRh
dGFbaV0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5kaWNlcylbaV07CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5
dGUqPihpbmRpY2VzKVswXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBp
KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0
PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNlcylbaV07CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBkYXRhW2NvdW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNlcylbMF07
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5k
aWNlcylbaV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRp
Y19jYXN0PGNvbnN0IEdMdWludCo+KGluZGljZXMpWzBdOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghbUxpbmVMb29wSUItPnVubWFwQnVmZmVyKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVS
UigiQ291bGQgbm90IHVubWFwIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOworICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoIW1MaW5lTG9vcElCKQorICAgICAg
ICB7CisgICAgICAgICAgICBtTGluZUxvb3BJQiA9IG5ldyBTdHJlYW1pbmdJbmRleEJ1ZmZlcklu
dGVyZmFjZSh0aGlzKTsKKyAgICAgICAgICAgIGlmICghbUxpbmVMb29wSUItPnJlc2VydmVCdWZm
ZXJTcGFjZShJTklUSUFMX0lOREVYX0JVRkZFUl9TSVpFLCBHTF9VTlNJR05FRF9TSE9SVCkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVsZXRlIG1MaW5lTG9vcElCOworICAgICAg
ICAgICAgICAgIG1MaW5lTG9vcElCID0gTlVMTDsKKworICAgICAgICAgICAgICAgIEVSUigiQ291
bGQgbm90IGNyZWF0ZSBhIDE2LWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9M
T09QLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgaW50Pihjb3VudCArIDEpID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQg
c2hvcnQ+OjptYXgoKSAvIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpKQorICAgICAgICB7CisgICAg
ICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgYSAxNi1iaXQgbG9vcGluZyBpbmRleCBidWZm
ZXIgZm9yIEdMX0xJTkVfTE9PUCwgdG9vIG1hbnkgaW5kaWNlcyByZXF1aXJlZC4iKTsKKyAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIH0KKwor
ICAgICAgICBjb25zdCBpbnQgc3BhY2VOZWVkZWQgPSAoY291bnQgKyAxKSAqIHNpemVvZih1bnNp
Z25lZCBzaG9ydCk7CisgICAgICAgIGlmICghbUxpbmVMb29wSUItPnJlc2VydmVCdWZmZXJTcGFj
ZShzcGFjZU5lZWRlZCwgR0xfVU5TSUdORURfU0hPUlQpKQorICAgICAgICB7CisgICAgICAgICAg
ICBFUlIoIkNvdWxkIG5vdCByZXNlcnZlIGVub3VnaCBzcGFjZSBpbiBsb29waW5nIGluZGV4IGJ1
ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQqIG1hcHBlZE1lbW9y
eSA9IE5VTEw7CisgICAgICAgIGludCBvZmZzZXQgPSBtTGluZUxvb3BJQi0+bWFwQnVmZmVyKHNw
YWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5KTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSAtMSB8fCBt
YXBwZWRNZW1vcnkgPT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJDb3VsZCBu
b3QgbWFwIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOworICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0
YXJ0SW5kZXggPSBzdGF0aWNfY2FzdDxVSU5UPihvZmZzZXQpIC8gMjsKKyAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgKmRhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4obWFwcGVk
TWVtb3J5KTsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBj
YXNlIEdMX05PTkU6ICAgLy8gTm9uLWluZGV4ZWQgZHJhdworICAgICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRh
dGFbaV0gPSBpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGF0YVtjb3VudF0gPSAwOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5k
aWNlcylbaV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRp
Y19jYXN0PGNvbnN0IEdMdWJ5dGUqPihpbmRpY2VzKVswXTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGF0
YVtpXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNlcylbaV07CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNo
b3J0Kj4oaW5kaWNlcylbMF07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkr
KykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8
Y29uc3QgR0x1aW50Kj4oaW5kaWNlcylbaV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBk
YXRhW2NvdW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWludCo+KGluZGljZXMpWzBdOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghbUxpbmVMb29wSUItPnVubWFwQnVmZmVyKCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEVSUigiQ291bGQgbm90IHVubWFwIGluZGV4IGJ1ZmZlciBmb3IgR0xf
TElORV9MT09QLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtQXBwbGllZElCU2VyaWFsICE9IG1M
aW5lTG9vcElCLT5nZXRTZXJpYWwoKSkKKyAgICB7CisgICAgICAgIEluZGV4QnVmZmVyOSAqaW5k
ZXhCdWZmZXIgPSBJbmRleEJ1ZmZlcjk6Om1ha2VJbmRleEJ1ZmZlcjkobUxpbmVMb29wSUItPmdl
dEluZGV4QnVmZmVyKCkpOworCisgICAgICAgIG1EZXZpY2UtPlNldEluZGljZXMoaW5kZXhCdWZm
ZXItPmdldEJ1ZmZlcigpKTsKKyAgICAgICAgbUFwcGxpZWRJQlNlcmlhbCA9IG1MaW5lTG9vcElC
LT5nZXRTZXJpYWwoKTsKKyAgICB9CisKKyAgICBtRGV2aWNlLT5EcmF3SW5kZXhlZFByaW1pdGl2
ZShEM0RQVF9MSU5FU1RSSVAsIC1taW5JbmRleCwgbWluSW5kZXgsIGNvdW50LCBzdGFydEluZGV4
LCBjb3VudCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIHZvaWQgZHJhd1Bv
aW50cyhJRGlyZWN0M0REZXZpY2U5KiBkZXZpY2UsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdm9p
ZCAqaW5kaWNlcykKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAg
eworICAgICAgICB1bnNpZ25lZCBpbnQgaW5kZXhWYWx1ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4oc3RhdGljX2Nhc3Q8Y29uc3QgVCo+KGluZGljZXMpW2ldKTsKKyAgICAgICAgZGV2aWNl
LT5EcmF3UHJpbWl0aXZlKEQzRFBUX1BPSU5UTElTVCwgaW5kZXhWYWx1ZSwgMSk7CisgICAgfQor
fQorCit2b2lkIFJlbmRlcmVyOTo6ZHJhd0luZGV4ZWRQb2ludHMoR0xzaXplaSBjb3VudCwgR0xl
bnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5
QnVmZmVyKQoreworICAgIC8vIERyYXdpbmcgaW5kZXggcG9pbnQgbGlzdHMgaXMgdW5zdXBwb3J0
ZWQgaW4gZDNkOSwgZmFsbCBiYWNrIHRvIGEgcmVndWxhciBEcmF3UHJpbWl0aXZlIGNhbGwKKyAg
ICAvLyBmb3IgZWFjaCBpbmRpdmlkdWFsIHBvaW50LiBUaGlzIGNhbGwgaXMgbm90IGV4cGVjdGVk
IHRvIGhhcHBlbiBvZnRlbi4KKworICAgIGlmIChlbGVtZW50QXJyYXlCdWZmZXIpCisgICAgewor
ICAgICAgICBCdWZmZXJTdG9yYWdlICpzdG9yYWdlID0gZWxlbWVudEFycmF5QnVmZmVyLT5nZXRT
dG9yYWdlKCk7CisgICAgICAgIGludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGluZGljZXMpOworICAgICAgICBpbmRpY2VzID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1
Ynl0ZSo+KHN0b3JhZ2UtPmdldERhdGEoKSkgKyBvZmZzZXQ7CisgICAgfQorCisgICAgc3dpdGNo
ICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAgZHJhd1BvaW50
czxHTHVieXRlPihtRGV2aWNlLCBjb3VudCwgaW5kaWNlcyk7ICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9TSE9SVDogZHJhd1BvaW50czxHTHVzaG9ydD4obURldmljZSwgY291bnQs
IGluZGljZXMpOyBicmVhazsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6ICAgZHJhd1Bv
aW50czxHTHVpbnQ+KG1EZXZpY2UsIGNvdW50LCBpbmRpY2VzKTsgICBicmVhazsKKyAgICAgICAg
ZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjphcHBs
eVNoYWRlcnMoZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkpCit7CisgICAgdW5zaWdu
ZWQgaW50IHByb2dyYW1CaW5hcnlTZXJpYWwgPSBwcm9ncmFtQmluYXJ5LT5nZXRTZXJpYWwoKTsK
KyAgICBpZiAocHJvZ3JhbUJpbmFyeVNlcmlhbCAhPSBtQXBwbGllZFByb2dyYW1CaW5hcnlTZXJp
YWwpCisgICAgeworICAgICAgICBTaGFkZXJFeGVjdXRhYmxlICp2ZXJ0ZXhFeGUgPSBwcm9ncmFt
QmluYXJ5LT5nZXRWZXJ0ZXhFeGVjdXRhYmxlKCk7CisgICAgICAgIFNoYWRlckV4ZWN1dGFibGUg
KnBpeGVsRXhlID0gcHJvZ3JhbUJpbmFyeS0+Z2V0UGl4ZWxFeGVjdXRhYmxlKCk7CisKKyAgICAg
ICAgSURpcmVjdDNEVmVydGV4U2hhZGVyOSAqdmVydGV4U2hhZGVyID0gTlVMTDsKKyAgICAgICAg
aWYgKHZlcnRleEV4ZSkgdmVydGV4U2hhZGVyID0gU2hhZGVyRXhlY3V0YWJsZTk6Om1ha2VTaGFk
ZXJFeGVjdXRhYmxlOSh2ZXJ0ZXhFeGUpLT5nZXRWZXJ0ZXhTaGFkZXIoKTsKKworICAgICAgICBJ
RGlyZWN0M0RQaXhlbFNoYWRlcjkgKnBpeGVsU2hhZGVyID0gTlVMTDsKKyAgICAgICAgaWYgKHBp
eGVsRXhlKSBwaXhlbFNoYWRlciA9IFNoYWRlckV4ZWN1dGFibGU5OjptYWtlU2hhZGVyRXhlY3V0
YWJsZTkocGl4ZWxFeGUpLT5nZXRQaXhlbFNoYWRlcigpOworCisgICAgICAgIG1EZXZpY2UtPlNl
dFBpeGVsU2hhZGVyKHBpeGVsU2hhZGVyKTsKKyAgICAgICAgbURldmljZS0+U2V0VmVydGV4U2hh
ZGVyKHZlcnRleFNoYWRlcik7CisgICAgICAgIHByb2dyYW1CaW5hcnktPmRpcnR5QWxsVW5pZm9y
bXMoKTsKKyAgICAgICAgbUR4VW5pZm9ybXNEaXJ0eSA9IHRydWU7CisKKyAgICAgICAgbUFwcGxp
ZWRQcm9ncmFtQmluYXJ5U2VyaWFsID0gcHJvZ3JhbUJpbmFyeVNlcmlhbDsKKyAgICB9Cit9CisK
K3ZvaWQgUmVuZGVyZXI5OjphcHBseVVuaWZvcm1zKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFt
QmluYXJ5LCBnbDo6VW5pZm9ybUFycmF5ICp1bmlmb3JtQXJyYXkpCit7CisgICAgZm9yIChzdGQ6
OnZlY3RvcjxnbDo6VW5pZm9ybSo+Ojpjb25zdF9pdGVyYXRvciB1YiA9IHVuaWZvcm1BcnJheS0+
YmVnaW4oKSwgdWUgPSB1bmlmb3JtQXJyYXktPmVuZCgpOyB1YiAhPSB1ZTsgKyt1YikKKyAgICB7
CisgICAgICAgIGdsOjpVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gKnViOworCisgICAgICAgIGlm
ICh0YXJnZXRVbmlmb3JtLT5kaXJ0eSkKKyAgICAgICAgeworICAgICAgICAgICAgR0xmbG9hdCAq
ZiA9IChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhOworICAgICAgICAgICAgR0xpbnQgKmkg
PSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGE7CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFy
Z2V0VW5pZm9ybS0+dHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9T
QU1QTEVSXzJEOgorICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRVJfQ1VCRToKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9CT09MOgorICAgICAgICAgICAg
ICBjYXNlIEdMX0JPT0xfVkVDMjoKKyAgICAgICAgICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfQk9PTF9WRUM0OgorICAgICAgICAgICAgICAgIGFwcGx5VW5p
Zm9ybW5idih0YXJnZXRVbmlmb3JtLCBpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMy
OgorICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6CisgICAgICAgICAgICAgIGNhc2Ug
R0xfRkxPQVRfVkVDNDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOgorICAgICAg
ICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6CisgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVRf
TUFUNDoKKyAgICAgICAgICAgICAgICBhcHBseVVuaWZvcm1uZnYodGFyZ2V0VW5pZm9ybSwgZik7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfSU5UOgorICAg
ICAgICAgICAgICBjYXNlIEdMX0lOVF9WRUMyOgorICAgICAgICAgICAgICBjYXNlIEdMX0lOVF9W
RUMzOgorICAgICAgICAgICAgICBjYXNlIEdMX0lOVF9WRUM0OgorICAgICAgICAgICAgICAgIGFw
cGx5VW5pZm9ybW5pdih0YXJnZXRVbmlmb3JtLCBpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IGZhbHNl
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRHJpdmVyIHVuaWZvcm1zCisgICAgaWYgKG1E
eFVuaWZvcm1zRGlydHkpCisgICAgeworICAgICAgICBtRGV2aWNlLT5TZXRWZXJ0ZXhTaGFkZXJD
b25zdGFudEYoMCwgKGZsb2F0KikmbVZlcnRleENvbnN0YW50cywgc2l6ZW9mKGR4X1ZlcnRleENv
bnN0YW50cykgLyBzaXplb2YoZmxvYXRbNF0pKTsKKyAgICAgICAgbURldmljZS0+U2V0UGl4ZWxT
aGFkZXJDb25zdGFudEYoMCwgKGZsb2F0KikmbVBpeGVsQ29uc3RhbnRzLCBzaXplb2YoZHhfUGl4
ZWxDb25zdGFudHMpIC8gc2l6ZW9mKGZsb2F0WzRdKSk7CisgICAgICAgIG1EeFVuaWZvcm1zRGly
dHkgPSBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjphcHBseVVuaWZvcm1uZnYo
Z2w6OlVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNvbnN0IEdMZmxvYXQgKnYpCit7CisgICAgaWYg
KHRhcmdldFVuaWZvcm0tPnBzUmVnaXN0ZXJJbmRleCA+PSAwKQorICAgIHsKKyAgICAgICAgbURl
dmljZS0+U2V0UGl4ZWxTaGFkZXJDb25zdGFudEYodGFyZ2V0VW5pZm9ybS0+cHNSZWdpc3Rlcklu
ZGV4LCB2LCB0YXJnZXRVbmlmb3JtLT5yZWdpc3RlckNvdW50KTsKKyAgICB9CisKKyAgICBpZiAo
dGFyZ2V0VW5pZm9ybS0+dnNSZWdpc3RlckluZGV4ID49IDApCisgICAgeworICAgICAgICBtRGV2
aWNlLT5TZXRWZXJ0ZXhTaGFkZXJDb25zdGFudEYodGFyZ2V0VW5pZm9ybS0+dnNSZWdpc3Rlcklu
ZGV4LCB2LCB0YXJnZXRVbmlmb3JtLT5yZWdpc3RlckNvdW50KTsKKyAgICB9Cit9CisKK3ZvaWQg
UmVuZGVyZXI5OjphcHBseVVuaWZvcm1uaXYoZ2w6OlVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNv
bnN0IEdMaW50ICp2KQoreworICAgIEFTU0VSVCh0YXJnZXRVbmlmb3JtLT5yZWdpc3RlckNvdW50
IDw9IE1BWF9WRVJURVhfQ09OU1RBTlRfVkVDVE9SU19EM0Q5KTsKKyAgICBHTGZsb2F0IHZlY3Rv
cltNQVhfVkVSVEVYX0NPTlNUQU5UX1ZFQ1RPUlNfRDNEOV1bNF07CisKKyAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IHRhcmdldFVuaWZvcm0tPnJlZ2lzdGVyQ291bnQ7IGkrKykKKyAg
ICB7CisgICAgICAgIHZlY3RvcltpXVswXSA9IChHTGZsb2F0KXZbNCAqIGkgKyAwXTsKKyAgICAg
ICAgdmVjdG9yW2ldWzFdID0gKEdMZmxvYXQpdls0ICogaSArIDFdOworICAgICAgICB2ZWN0b3Jb
aV1bMl0gPSAoR0xmbG9hdCl2WzQgKiBpICsgMl07CisgICAgICAgIHZlY3RvcltpXVszXSA9IChH
TGZsb2F0KXZbNCAqIGkgKyAzXTsKKyAgICB9CisKKyAgICBhcHBseVVuaWZvcm1uZnYodGFyZ2V0
VW5pZm9ybSwgKEdMZmxvYXQqKXZlY3Rvcik7Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjphcHBseVVu
aWZvcm1uYnYoZ2w6OlVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNvbnN0IEdMaW50ICp2KQorewor
ICAgIEFTU0VSVCh0YXJnZXRVbmlmb3JtLT5yZWdpc3RlckNvdW50IDw9IE1BWF9WRVJURVhfQ09O
U1RBTlRfVkVDVE9SU19EM0Q5KTsKKyAgICBHTGZsb2F0IHZlY3RvcltNQVhfVkVSVEVYX0NPTlNU
QU5UX1ZFQ1RPUlNfRDNEOV1bNF07CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHRhcmdldFVuaWZvcm0tPnJlZ2lzdGVyQ291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIHZlY3Rv
cltpXVswXSA9ICh2WzQgKiBpICsgMF0gPT0gR0xfRkFMU0UpID8gMC4wZiA6IDEuMGY7CisgICAg
ICAgIHZlY3RvcltpXVsxXSA9ICh2WzQgKiBpICsgMV0gPT0gR0xfRkFMU0UpID8gMC4wZiA6IDEu
MGY7CisgICAgICAgIHZlY3RvcltpXVsyXSA9ICh2WzQgKiBpICsgMl0gPT0gR0xfRkFMU0UpID8g
MC4wZiA6IDEuMGY7CisgICAgICAgIHZlY3RvcltpXVszXSA9ICh2WzQgKiBpICsgM10gPT0gR0xf
RkFMU0UpID8gMC4wZiA6IDEuMGY7CisgICAgfQorCisgICAgYXBwbHlVbmlmb3JtbmZ2KHRhcmdl
dFVuaWZvcm0sIChHTGZsb2F0Kil2ZWN0b3IpOworfQorCit2b2lkIFJlbmRlcmVyOTo6Y2xlYXIo
Y29uc3QgZ2w6OkNsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMsIGdsOjpGcmFtZWJ1ZmZlciAq
ZnJhbWVCdWZmZXIpCit7CisgICAgRDNEQ09MT1IgY29sb3IgPSBEM0RDT0xPUl9BUkdCKGdsOjp1
bm9ybTw4PihjbGVhclBhcmFtcy5jb2xvckNsZWFyVmFsdWUuYWxwaGEpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oY2xlYXJQYXJhbXMuY29sb3JDbGVh
clZhbHVlLnJlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjp1bm9y
bTw4PihjbGVhclBhcmFtcy5jb2xvckNsZWFyVmFsdWUuZ3JlZW4pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oY2xlYXJQYXJhbXMuY29sb3JDbGVhclZh
bHVlLmJsdWUpKTsKKyAgICBmbG9hdCBkZXB0aCA9IGdsOjpjbGFtcDAxKGNsZWFyUGFyYW1zLmRl
cHRoQ2xlYXJWYWx1ZSk7CisgICAgaW50IHN0ZW5jaWwgPSBjbGVhclBhcmFtcy5zdGVuY2lsQ2xl
YXJWYWx1ZSAmIDB4MDAwMDAwRkY7CisKKyAgICB1bnNpZ25lZCBpbnQgc3RlbmNpbFVubWFza2Vk
ID0gMHgwOworICAgIGlmICgoY2xlYXJQYXJhbXMubWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJ
VCkgJiYgZnJhbWVCdWZmZXItPmhhc1N0ZW5jaWwoKSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVk
IGludCBzdGVuY2lsU2l6ZSA9IGdsOjpHZXRTdGVuY2lsU2l6ZShmcmFtZUJ1ZmZlci0+Z2V0U3Rl
bmNpbGJ1ZmZlcigpLT5nZXRBY3R1YWxGb3JtYXQoKSk7CisgICAgICAgIHN0ZW5jaWxVbm1hc2tl
ZCA9ICgweDEgPDwgc3RlbmNpbFNpemUpIC0gMTsKKyAgICB9CisKKyAgICBib29sIGFscGhhVW5t
YXNrZWQgPSAoZ2w6OkdldEFscGhhU2l6ZShtUmVuZGVyVGFyZ2V0RGVzYy5mb3JtYXQpID09IDAp
IHx8IGNsZWFyUGFyYW1zLmNvbG9yTWFza0FscGhhOworCisgICAgY29uc3QgYm9vbCBuZWVkTWFz
a2VkU3RlbmNpbENsZWFyID0gKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9C
SVQpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsZWFyUGFy
YW1zLnN0ZW5jaWxXcml0ZU1hc2sgJiBzdGVuY2lsVW5tYXNrZWQpICE9IHN0ZW5jaWxVbm1hc2tl
ZDsKKyAgICBjb25zdCBib29sIG5lZWRNYXNrZWRDb2xvckNsZWFyID0gKGNsZWFyUGFyYW1zLm1h
c2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAhKGNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCAmJiBjbGVhclBhcmFtcy5jb2xv
ck1hc2tHcmVlbiAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
ZWFyUGFyYW1zLmNvbG9yTWFza0JsdWUgJiYgYWxwaGFVbm1hc2tlZCk7CisKKyAgICBpZiAobmVl
ZE1hc2tlZENvbG9yQ2xlYXIgfHwgbmVlZE1hc2tlZFN0ZW5jaWxDbGVhcikKKyAgICB7CisgICAg
ICAgIC8vIFN0YXRlIHdoaWNoIGlzIGFsdGVyZWQgaW4gYWxsIHBhdGhzIGZyb20gdGhpcyBwb2lu
dCB0byB0aGUgY2xlYXIgY2FsbCBpcyBzYXZlZC4KKyAgICAgICAgLy8gU3RhdGUgd2hpY2ggaXMg
YWx0ZXJlZCBpbiBvbmx5IHNvbWUgcGF0aHMgd2lsbCBiZSBmbGFnZ2VkIGRpcnR5IGluIHRoZSBj
YXNlIHRoYXQKKyAgICAgICAgLy8gIHRoYXQgcGF0aCBpcyB0YWtlbi4KKyAgICAgICAgSFJFU1VM
VCBocjsKKyAgICAgICAgaWYgKG1NYXNrZWRDbGVhclNhdmVkU3RhdGUgPT0gTlVMTCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaHIgPSBtRGV2aWNlLT5CZWdpblN0YXRlQmxvY2soKTsKKyAgICAg
ICAgICAgIEFTU0VSVChTVUNDRUVERUQoaHIpIHx8IGhyID09IEQzREVSUl9PVVRPRlZJREVPTUVN
T1JZIHx8IGhyID09IEVfT1VUT0ZNRU1PUlkpOworCisgICAgICAgICAgICBtRGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShEM0RSU19aV1JJVEVFTkFCTEUsIEZBTFNFKTsKKyAgICAgICAgICAgIG1EZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pGVU5DLCBEM0RDTVBfQUxXQVlTKTsKKyAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pFTkFCTEUsIEZBTFNFKTsKKyAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NVTExNT0RFLCBEM0RDVUxMX05P
TkUpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfRklMTE1PREUs
IEQzREZJTExfU09MSUQpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfQUxQSEFURVNURU5BQkxFLCBGQUxTRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBGQUxTRSk7CisgICAgICAgICAgICBtRGV2
aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DTElQUExBTkVFTkFCTEUsIDApOworICAgICAgICAg
ICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklURUVOQUJMRSwgMCk7Cisg
ICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMRU5BQkxFLCBG
QUxTRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRQaXhlbFNoYWRlcihOVUxMKTsKKyAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFZlcnRleFNoYWRlcihOVUxMKTsKKyAgICAgICAgICAgIG1EZXZp
Y2UtPlNldEZWRihEM0RGVkZfWFlaUkhXIHwgRDNERlZGX0RJRkZVU0UpOworICAgICAgICAgICAg
bURldmljZS0+U2V0U3RyZWFtU291cmNlKDAsIE5VTEwsIDAsIDApOworICAgICAgICAgICAgbURl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0VQQVJBVEVBTFBIQUJMRU5ERU5BQkxFLCBUUlVF
KTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFRleHR1cmVTdGFnZVN0YXRlKDAsIEQzRFRTU19D
T0xPUk9QLCBEM0RUT1BfU0VMRUNUQVJHMSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRUZXh0
dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQ09MT1JBUkcxLCBEM0RUQV9URkFDVE9SKTsKKyAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFRleHR1cmVTdGFnZVN0YXRlKDAsIEQzRFRTU19BTFBIQU9QLCBE
M0RUT1BfU0VMRUNUQVJHMSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VT
dGF0ZSgwLCBEM0RUU1NfQUxQSEFBUkcxLCBEM0RUQV9URkFDVE9SKTsKKyAgICAgICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1RFWFRVUkVGQUNUT1IsIGNvbG9yKTsKKyAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX01VTFRJU0FNUExFTUFTSywgMHhG
RkZGRkZGRik7CisKKyAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRF
WF9BVFRSSUJTOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbURldmljZS0+
U2V0U3RyZWFtU291cmNlRnJlcShpLCAxKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aHIgPSBtRGV2aWNlLT5FbmRTdGF0ZUJsb2NrKCZtTWFza2VkQ2xlYXJTYXZlZFN0YXRlKTsKKyAg
ICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQoaHIpIHx8IGhyID09IEQzREVSUl9PVVRPRlZJREVP
TUVNT1JZIHx8IGhyID09IEVfT1VUT0ZNRU1PUlkpOworICAgICAgICB9CisKKyAgICAgICAgQVNT
RVJUKG1NYXNrZWRDbGVhclNhdmVkU3RhdGUgIT0gTlVMTCk7CisKKyAgICAgICAgaWYgKG1NYXNr
ZWRDbGVhclNhdmVkU3RhdGUgIT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgaHIgPSBt
TWFza2VkQ2xlYXJTYXZlZFN0YXRlLT5DYXB0dXJlKCk7CisgICAgICAgICAgICBBU1NFUlQoU1VD
Q0VFREVEKGhyKSk7CisgICAgICAgIH0KKworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShEM0RSU19aV1JJVEVFTkFCTEUsIEZBTFNFKTsKKyAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfWkZVTkMsIEQzRENNUF9BTFdBWVMpOworICAgICAgICBtRGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShEM0RSU19aRU5BQkxFLCBGQUxTRSk7CisgICAgICAgIG1EZXZpY2UtPlNldFJl
bmRlclN0YXRlKEQzRFJTX0NVTExNT0RFLCBEM0RDVUxMX05PTkUpOworICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShEM0RSU19GSUxMTU9ERSwgRDNERklMTF9TT0xJRCk7CisgICAgICAg
IG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0FMUEhBVEVTVEVOQUJMRSwgRkFMU0UpOwor
ICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBG
QUxTRSk7CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NMSVBQTEFORUVO
QUJMRSwgMCk7CisKKyAgICAgICAgaWYgKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9DT0xPUl9CVUZG
RVJfQklUKQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19DT0xPUldSSVRFRU5BQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xfZDNkOTo6Q29udmVydENvbG9yTWFzayhjbGVhclBhcmFtcy5jb2xvck1hc2tSZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsZWFyUGFyYW1zLmNvbG9yTWFza0dyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvck1h
c2tCbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvck1hc2tBbHBoYSkpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfQ09MT1JXUklURUVOQUJMRSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
c3RlbmNpbFVubWFza2VkICE9IDB4MCAmJiAoY2xlYXJQYXJhbXMubWFzayAmIEdMX1NURU5DSUxf
QlVGRkVSX0JJVCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0
YXRlKEQzRFJTX1NURU5DSUxFTkFCTEUsIFRSVUUpOworICAgICAgICAgICAgbURldmljZS0+U2V0
UmVuZGVyU3RhdGUoRDNEUlNfVFdPU0lERURTVEVOQ0lMTU9ERSwgRkFMU0UpOworICAgICAgICAg
ICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTEZVTkMsIEQzRENNUF9BTFdB
WVMpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTFJF
Riwgc3RlbmNpbCk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19T
VEVOQ0lMV1JJVEVNQVNLLCBjbGVhclBhcmFtcy5zdGVuY2lsV3JpdGVNYXNrKTsKKyAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxGQUlMLCBEM0RTVEVOQ0lM
T1BfUkVQTEFDRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19T
VEVOQ0lMWkZBSUwsIEQzRFNURU5DSUxPUF9SRVBMQUNFKTsKKyAgICAgICAgICAgIG1EZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxQQVNTLCBEM0RTVEVOQ0lMT1BfUkVQTEFDRSk7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMRU5BQkxFLCBGQUxTRSk7CisgICAgICAgIH0K
KworICAgICAgICBtRGV2aWNlLT5TZXRQaXhlbFNoYWRlcihOVUxMKTsKKyAgICAgICAgbURldmlj
ZS0+U2V0VmVydGV4U2hhZGVyKE5VTEwpOworICAgICAgICBtRGV2aWNlLT5TZXRGVkYoRDNERlZG
X1hZWlJIVyk7CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NFUEFSQVRF
QUxQSEFCTEVOREVOQUJMRSwgVFJVRSk7CisgICAgICAgIG1EZXZpY2UtPlNldFRleHR1cmVTdGFn
ZVN0YXRlKDAsIEQzRFRTU19DT0xPUk9QLCBEM0RUT1BfU0VMRUNUQVJHMSk7CisgICAgICAgIG1E
ZXZpY2UtPlNldFRleHR1cmVTdGFnZVN0YXRlKDAsIEQzRFRTU19DT0xPUkFSRzEsIEQzRFRBX1RG
QUNUT1IpOworICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1Nf
QUxQSEFPUCwgRDNEVE9QX1NFTEVDVEFSRzEpOworICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJl
U3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQUxQSEFBUkcxLCBEM0RUQV9URkFDVE9SKTsKKyAgICAgICAg
bURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfVEVYVFVSRUZBQ1RPUiwgY29sb3IpOworICAg
ICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19NVUxUSVNBTVBMRU1BU0ssIDB4RkZG
RkZGRkYpOworCisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRS
SUJTOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFN0cmVhbVNvdXJj
ZUZyZXEoaSwgMSk7CisgICAgICAgIH0KKworICAgICAgICBmbG9hdCBxdWFkWzRdWzRdOyAgIC8v
IEEgcXVhZHJpbGF0ZXJhbCBjb3ZlcmluZyB0aGUgdGFyZ2V0LCBhbGlnbmVkIHRvIG1hdGNoIHRo
ZSBlZGdlcworICAgICAgICBxdWFkWzBdWzBdID0gLTAuNWY7CisgICAgICAgIHF1YWRbMF1bMV0g
PSBtUmVuZGVyVGFyZ2V0RGVzYy5oZWlnaHQgLSAwLjVmOworICAgICAgICBxdWFkWzBdWzJdID0g
MC4wZjsKKyAgICAgICAgcXVhZFswXVszXSA9IDEuMGY7CisKKyAgICAgICAgcXVhZFsxXVswXSA9
IG1SZW5kZXJUYXJnZXREZXNjLndpZHRoIC0gMC41ZjsKKyAgICAgICAgcXVhZFsxXVsxXSA9IG1S
ZW5kZXJUYXJnZXREZXNjLmhlaWdodCAtIDAuNWY7CisgICAgICAgIHF1YWRbMV1bMl0gPSAwLjBm
OworICAgICAgICBxdWFkWzFdWzNdID0gMS4wZjsKKworICAgICAgICBxdWFkWzJdWzBdID0gLTAu
NWY7CisgICAgICAgIHF1YWRbMl1bMV0gPSAtMC41ZjsKKyAgICAgICAgcXVhZFsyXVsyXSA9IDAu
MGY7CisgICAgICAgIHF1YWRbMl1bM10gPSAxLjBmOworCisgICAgICAgIHF1YWRbM11bMF0gPSBt
UmVuZGVyVGFyZ2V0RGVzYy53aWR0aCAtIDAuNWY7CisgICAgICAgIHF1YWRbM11bMV0gPSAtMC41
ZjsKKyAgICAgICAgcXVhZFszXVsyXSA9IDAuMGY7CisgICAgICAgIHF1YWRbM11bM10gPSAxLjBm
OworCisgICAgICAgIHN0YXJ0U2NlbmUoKTsKKyAgICAgICAgbURldmljZS0+RHJhd1ByaW1pdGl2
ZVVQKEQzRFBUX1RSSUFOR0xFU1RSSVAsIDIsIHF1YWQsIHNpemVvZihmbG9hdFs0XSkpOworCisg
ICAgICAgIGlmIChjbGVhclBhcmFtcy5tYXNrICYgR0xfREVQVEhfQlVGRkVSX0JJVCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkVOQUJMRSwg
VFJVRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aV1JJVEVF
TkFCTEUsIFRSVUUpOworICAgICAgICAgICAgbURldmljZS0+Q2xlYXIoMCwgTlVMTCwgRDNEQ0xF
QVJfWkJVRkZFUiwgY29sb3IsIGRlcHRoLCBzdGVuY2lsKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChtTWFza2VkQ2xlYXJTYXZlZFN0YXRlICE9IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1NYXNrZWRDbGVhclNhdmVkU3RhdGUtPkFwcGx5KCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgZWxzZSBpZiAoY2xlYXJQYXJhbXMubWFzaykKKyAgICB7CisgICAgICAgIERXT1JEIGR4Q2xl
YXJGbGFncyA9IDA7CisgICAgICAgIGlmIChjbGVhclBhcmFtcy5tYXNrICYgR0xfQ09MT1JfQlVG
RkVSX0JJVCkKKyAgICAgICAgeworICAgICAgICAgICAgZHhDbGVhckZsYWdzIHw9IEQzRENMRUFS
X1RBUkdFVDsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2xlYXJQYXJhbXMubWFzayAmIEdMX0RF
UFRIX0JVRkZFUl9CSVQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGR4Q2xlYXJGbGFncyB8PSBE
M0RDTEVBUl9aQlVGRkVSOworICAgICAgICB9CisgICAgICAgIGlmIChjbGVhclBhcmFtcy5tYXNr
ICYgR0xfU1RFTkNJTF9CVUZGRVJfQklUKQorICAgICAgICB7CisgICAgICAgICAgICBkeENsZWFy
RmxhZ3MgfD0gRDNEQ0xFQVJfU1RFTkNJTDsKKyAgICAgICAgfQorCisgICAgICAgIG1EZXZpY2Ut
PkNsZWFyKDAsIE5VTEwsIGR4Q2xlYXJGbGFncywgY29sb3IsIGRlcHRoLCBzdGVuY2lsKTsKKyAg
ICB9Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjptYXJrQWxsU3RhdGVEaXJ0eSgpCit7CisgICAgbUFw
cGxpZWRSZW5kZXJUYXJnZXRTZXJpYWwgPSAwOworICAgIG1BcHBsaWVkRGVwdGhidWZmZXJTZXJp
YWwgPSAwOworICAgIG1BcHBsaWVkU3RlbmNpbGJ1ZmZlclNlcmlhbCA9IDA7CisgICAgbURlcHRo
U3RlbmNpbEluaXRpYWxpemVkID0gZmFsc2U7CisgICAgbVJlbmRlclRhcmdldERlc2NJbml0aWFs
aXplZCA9IGZhbHNlOworCisgICAgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgPSB0cnVlOwor
ICAgIG1Gb3JjZVNldFJhc3RlclN0YXRlID0gdHJ1ZTsKKyAgICBtRm9yY2VTZXRTY2lzc29yID0g
dHJ1ZTsKKyAgICBtRm9yY2VTZXRWaWV3cG9ydCA9IHRydWU7CisgICAgbUZvcmNlU2V0QmxlbmRT
dGF0ZSA9IHRydWU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpJTVBM
RU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFM7IGkrKykKKyAgICB7Cisg
ICAgICAgIG1Gb3JjZVNldFZlcnRleFNhbXBsZXJTdGF0ZXNbaV0gPSB0cnVlOworICAgICAgICBt
Q3VyVmVydGV4VGV4dHVyZVNlcmlhbHNbaV0gPSAwOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IGdsOjpNQVhfVEVYVFVSRV9JTUFHRV9VTklUUzsgaSsrKQorICAgIHsK
KyAgICAgICAgbUZvcmNlU2V0UGl4ZWxTYW1wbGVyU3RhdGVzW2ldID0gdHJ1ZTsKKyAgICAgICAg
bUN1clBpeGVsVGV4dHVyZVNlcmlhbHNbaV0gPSAwOworICAgIH0KKworICAgIG1BcHBsaWVkSUJT
ZXJpYWwgPSAwOworICAgIG1BcHBsaWVkUHJvZ3JhbUJpbmFyeVNlcmlhbCA9IDA7CisgICAgbUR4
VW5pZm9ybXNEaXJ0eSA9IHRydWU7CisKKyAgICBtVmVydGV4RGVjbGFyYXRpb25DYWNoZS5tYXJr
U3RhdGVEaXJ0eSgpOworfQorCit2b2lkIFJlbmRlcmVyOTo6cmVsZWFzZURldmljZVJlc291cmNl
cygpCit7CisgICAgd2hpbGUgKCFtRXZlbnRRdWVyeVBvb2wuZW1wdHkoKSkKKyAgICB7CisgICAg
ICAgIG1FdmVudFF1ZXJ5UG9vbC5iYWNrKCktPlJlbGVhc2UoKTsKKyAgICAgICAgbUV2ZW50UXVl
cnlQb29sLnBvcF9iYWNrKCk7CisgICAgfQorCisgICAgaWYgKG1NYXNrZWRDbGVhclNhdmVkU3Rh
dGUpCisgICAgeworICAgICAgICBtTWFza2VkQ2xlYXJTYXZlZFN0YXRlLT5SZWxlYXNlKCk7Cisg
ICAgICAgIG1NYXNrZWRDbGVhclNhdmVkU3RhdGUgPSBOVUxMOworICAgIH0KKworICAgIG1WZXJ0
ZXhTaGFkZXJDYWNoZS5jbGVhcigpOworICAgIG1QaXhlbFNoYWRlckNhY2hlLmNsZWFyKCk7CisK
KyAgICBkZWxldGUgbUJsaXQ7CisgICAgbUJsaXQgPSBOVUxMOworCisgICAgZGVsZXRlIG1WZXJ0
ZXhEYXRhTWFuYWdlcjsKKyAgICBtVmVydGV4RGF0YU1hbmFnZXIgPSBOVUxMOworCisgICAgZGVs
ZXRlIG1JbmRleERhdGFNYW5hZ2VyOworICAgIG1JbmRleERhdGFNYW5hZ2VyID0gTlVMTDsKKwor
ICAgIGRlbGV0ZSBtTGluZUxvb3BJQjsKKyAgICBtTGluZUxvb3BJQiA9IE5VTEw7CisKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IE5VTV9OVUxMX0NPTE9SQlVGRkVSX0NBQ0hFX0VOVFJJRVM7IGkr
KykKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uYnVmZmVy
OworICAgICAgICBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uYnVmZmVyID0gTlVMTDsKKyAgICB9
CisKK30KKworCit2b2lkIFJlbmRlcmVyOTo6bm90aWZ5RGV2aWNlTG9zdCgpCit7CisgICAgbURl
dmljZUxvc3QgPSB0cnVlOworICAgIG1EaXNwbGF5LT5ub3RpZnlEZXZpY2VMb3N0KCk7Cit9CisK
K2Jvb2wgUmVuZGVyZXI5Ojppc0RldmljZUxvc3QoKQoreworICAgIHJldHVybiBtRGV2aWNlTG9z
dDsKK30KKworLy8gc2V0IG5vdGlmeSB0byB0cnVlIHRvIGJyb2FkY2FzdCBhIG1lc3NhZ2UgdG8g
YWxsIGNvbnRleHRzIG9mIHRoZSBkZXZpY2UgbG9zcworYm9vbCBSZW5kZXJlcjk6OnRlc3REZXZp
Y2VMb3N0KGJvb2wgbm90aWZ5KQoreworICAgIEhSRVNVTFQgc3RhdHVzID0gU19PSzsKKworICAg
IGlmIChtRGV2aWNlRXgpCisgICAgeworICAgICAgICBzdGF0dXMgPSBtRGV2aWNlRXgtPkNoZWNr
RGV2aWNlU3RhdGUoTlVMTCk7CisgICAgfQorICAgIGVsc2UgaWYgKG1EZXZpY2UpCisgICAgewor
ICAgICAgICBzdGF0dXMgPSBtRGV2aWNlLT5UZXN0Q29vcGVyYXRpdmVMZXZlbCgpOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBObyBkZXZpY2UgeWV0LCBzbyBubyByZXNldCBy
ZXF1aXJlZAorICAgIH0KKworICAgIGJvb2wgaXNMb3N0ID0gRkFJTEVEKHN0YXR1cykgfHwgZDNk
OTo6aXNEZXZpY2VMb3N0RXJyb3Ioc3RhdHVzKTsKKworICAgIGlmIChpc0xvc3QpCisgICAgewor
ICAgICAgICAvLyBlbnN1cmUgd2Ugbm90ZSB0aGUgZGV2aWNlIGxvc3MgLS0KKyAgICAgICAgLy8g
d2UnbGwgcHJvYmFibHkgZ2V0IHRoaXMgZG9uZSBhZ2FpbiBieSBub3RpZnlEZXZpY2VMb3N0Cisg
ICAgICAgIC8vIGJ1dCBiZXN0IHRvIHJlbWVtYmVyIGl0IQorICAgICAgICAvLyBOb3RlIHRoYXQg
d2UgZG9uJ3Qgd2FudCB0byBjbGVhciB0aGUgZGV2aWNlIGxvc3Mgc3RhdHVzIGhlcmUKKyAgICAg
ICAgLy8gLS0gdGhpcyBuZWVkcyB0byBiZSBkb25lIGJ5IHJlc2V0RGV2aWNlCisgICAgICAgIG1E
ZXZpY2VMb3N0ID0gdHJ1ZTsKKyAgICAgICAgaWYgKG5vdGlmeSkKKyAgICAgICAgeworICAgICAg
ICAgICAgbm90aWZ5RGV2aWNlTG9zdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IGlzTG9zdDsKK30KKworYm9vbCBSZW5kZXJlcjk6OnRlc3REZXZpY2VSZXNldHRhYmxlKCkKK3sK
KyAgICBIUkVTVUxUIHN0YXR1cyA9IEQzRF9PSzsKKworICAgIGlmIChtRGV2aWNlRXgpCisgICAg
eworICAgICAgICBzdGF0dXMgPSBtRGV2aWNlRXgtPkNoZWNrRGV2aWNlU3RhdGUoTlVMTCk7Cisg
ICAgfQorICAgIGVsc2UgaWYgKG1EZXZpY2UpCisgICAgeworICAgICAgICBzdGF0dXMgPSBtRGV2
aWNlLT5UZXN0Q29vcGVyYXRpdmVMZXZlbCgpOworICAgIH0KKworICAgIC8vIE9uIEQzRDlFeCwg
REVWSUNFTE9TVCByZXByZXNlbnRzIGEgaHVuZyBkZXZpY2UgdGhhdCBuZWVkcyB0byBiZSByZXN0
YXJ0ZWQKKyAgICAvLyBERVZJQ0VSRU1PVkVEIGluZGljYXRlcyB0aGUgZGV2aWNlIGhhcyBiZWVu
IHN0b3BwZWQgYW5kIG11c3QgYmUgcmVjcmVhdGVkCisgICAgc3dpdGNoIChzdGF0dXMpCisgICAg
eworICAgICAgY2FzZSBEM0RFUlJfREVWSUNFTk9UUkVTRVQ6CisgICAgICBjYXNlIEQzREVSUl9E
RVZJQ0VIVU5HOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGNhc2UgRDNERVJSX0RFVklD
RUxPU1Q6CisgICAgICAgIHJldHVybiAobURldmljZUV4ICE9IE5VTEwpOworICAgICAgY2FzZSBE
M0RFUlJfREVWSUNFUkVNT1ZFRDoKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitib29sIFJlbmRlcmVyOTo6cmVzZXREZXZpY2UoKQoreworICAgIHJlbGVhc2VEZXZp
Y2VSZXNvdXJjZXMoKTsKKworICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBwcmVzZW50UGFyYW1l
dGVycyA9IGdldERlZmF1bHRQcmVzZW50UGFyYW1ldGVycygpOworCisgICAgSFJFU1VMVCByZXN1
bHQgPSBEM0RfT0s7CisgICAgYm9vbCBsb3N0ID0gdGVzdERldmljZUxvc3QoZmFsc2UpOworICAg
IGludCBhdHRlbXB0cyA9IDM7CisKKyAgICB3aGlsZSAobG9zdCAmJiBhdHRlbXB0cyA+IDApCisg
ICAgeworICAgICAgICBpZiAobURldmljZUV4KQorICAgICAgICB7CisgICAgICAgICAgICBTbGVl
cCg1MDApOyAgIC8vIEdpdmUgdGhlIGdyYXBoaWNzIGRyaXZlciBzb21lIENQVSB0aW1lCisgICAg
ICAgICAgICByZXN1bHQgPSBtRGV2aWNlRXgtPlJlc2V0RXgoJnByZXNlbnRQYXJhbWV0ZXJzLCBO
VUxMKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
c3VsdCA9IG1EZXZpY2UtPlRlc3RDb29wZXJhdGl2ZUxldmVsKCk7CisgICAgICAgICAgICB3aGls
ZSAocmVzdWx0ID09IEQzREVSUl9ERVZJQ0VMT1NUKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIFNsZWVwKDEwMCk7ICAgLy8gR2l2ZSB0aGUgZ3JhcGhpY3MgZHJpdmVyIHNvbWUgQ1BV
IHRpbWUKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5UZXN0Q29vcGVyYXRpdmVM
ZXZlbCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmVzdWx0ID09IEQzREVS
Ul9ERVZJQ0VOT1RSRVNFVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHQg
PSBtRGV2aWNlLT5SZXNldCgmcHJlc2VudFBhcmFtZXRlcnMpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgbG9zdCA9IHRlc3REZXZpY2VMb3N0KGZhbHNlKTsKKyAgICAgICAg
YXR0ZW1wdHMgLS07CisgICAgfQorCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAg
ICAgICAgRVJSKCJSZXNldC9SZXNldEV4IGZhaWxlZCBtdWx0aXBsZSB0aW1lczogMHglMDhYIiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIHJlc2V0IGRl
dmljZSBkZWZhdWx0cworICAgIGluaXRpYWxpemVEZXZpY2UoKTsKKyAgICBtRGV2aWNlTG9zdCA9
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0RXT1JEIFJlbmRlcmVyOTo6Z2V0QWRh
cHRlclZlbmRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1BZGFwdGVySWRlbnRpZmllci5WZW5k
b3JJZDsKK30KKworc3RkOjpzdHJpbmcgUmVuZGVyZXI5OjpnZXRSZW5kZXJlckRlc2NyaXB0aW9u
KCkgY29uc3QKK3sKKyAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gcmVuZGVyZXJTdHJpbmc7CisKKyAg
ICByZW5kZXJlclN0cmluZyA8PCBtQWRhcHRlcklkZW50aWZpZXIuRGVzY3JpcHRpb247CisgICAg
aWYgKGdldFNoYXJlSGFuZGxlU3VwcG9ydCgpKQorICAgIHsKKyAgICAgICAgcmVuZGVyZXJTdHJp
bmcgPDwgIiBEaXJlY3QzRDlFeCI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJl
bmRlcmVyU3RyaW5nIDw8ICIgRGlyZWN0M0Q5IjsKKyAgICB9CisKKyAgICByZW5kZXJlclN0cmlu
ZyA8PCAiIHZzXyIgPDwgRDNEU0hBREVSX1ZFUlNJT05fTUFKT1IobURldmljZUNhcHMuVmVydGV4
U2hhZGVyVmVyc2lvbikgPDwgIl8iIDw8IEQzRFNIQURFUl9WRVJTSU9OX01JTk9SKG1EZXZpY2VD
YXBzLlZlcnRleFNoYWRlclZlcnNpb24pOworICAgIHJlbmRlcmVyU3RyaW5nIDw8ICIgcHNfIiA8
PCBEM0RTSEFERVJfVkVSU0lPTl9NQUpPUihtRGV2aWNlQ2Fwcy5QaXhlbFNoYWRlclZlcnNpb24p
IDw8ICJfIiA8PCBEM0RTSEFERVJfVkVSU0lPTl9NSU5PUihtRGV2aWNlQ2Fwcy5QaXhlbFNoYWRl
clZlcnNpb24pOworCisgICAgcmV0dXJuIHJlbmRlcmVyU3RyaW5nLnN0cigpOworfQorCitHVUlE
IFJlbmRlcmVyOTo6Z2V0QWRhcHRlcklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBt
QWRhcHRlcklkZW50aWZpZXIuRGV2aWNlSWRlbnRpZmllcjsKK30KKwordm9pZCBSZW5kZXJlcjk6
OmdldE11bHRpU2FtcGxlU3VwcG9ydChEM0RGT1JNQVQgZm9ybWF0LCBib29sICptdWx0aVNhbXBs
ZUFycmF5KQoreworICAgIGZvciAoaW50IG11bHRpU2FtcGxlSW5kZXggPSAwOyBtdWx0aVNhbXBs
ZUluZGV4IDw9IEQzRE1VTFRJU0FNUExFXzE2X1NBTVBMRVM7IG11bHRpU2FtcGxlSW5kZXgrKykK
KyAgICB7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbUQzZDktPkNoZWNrRGV2aWNlTXVsdGlT
YW1wbGVUeXBlKG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLCAoRDNETVVM
VElTQU1QTEVfVFlQRSltdWx0aVNhbXBsZUluZGV4LCBOVUxMKTsKKworICAgICAgICBtdWx0aVNh
bXBsZUFycmF5W211bHRpU2FtcGxlSW5kZXhdID0gU1VDQ0VFREVEKHJlc3VsdCk7CisgICAgfQor
fQorCitib29sIFJlbmRlcmVyOTo6Z2V0QkdSQVRleHR1cmVTdXBwb3J0KCkgY29uc3QKK3sKKyAg
ICAvLyBEaXJlY3RYIDkgYWx3YXlzIHN1cHBvcnRzIEJHUkEKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBSZW5kZXJlcjk6OmdldERYVDFUZXh0dXJlU3VwcG9ydCgpCit7CisgICAgcmV0dXJu
IG1EWFQxVGV4dHVyZVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXI5OjpnZXREWFQzVGV4dHVy
ZVN1cHBvcnQoKQoreworICAgIHJldHVybiBtRFhUM1RleHR1cmVTdXBwb3J0OworfQorCitib29s
IFJlbmRlcmVyOTo6Z2V0RFhUNVRleHR1cmVTdXBwb3J0KCkKK3sKKyAgICByZXR1cm4gbURYVDVU
ZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJlcjk6OmdldERlcHRoVGV4dHVyZVN1cHBv
cnQoKSBjb25zdAoreworICAgIHJldHVybiBtRGVwdGhUZXh0dXJlU3VwcG9ydDsKK30KKworYm9v
bCBSZW5kZXJlcjk6OmdldEZsb2F0MzJUZXh0dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJv
b2wgKnJlbmRlcmFibGUpCit7CisgICAgKmZpbHRlcmluZyA9IG1GbG9hdDMyRmlsdGVyU3VwcG9y
dDsKKyAgICAqcmVuZGVyYWJsZSA9IG1GbG9hdDMyUmVuZGVyU3VwcG9ydDsKKyAgICByZXR1cm4g
bUZsb2F0MzJUZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJlcjk6OmdldEZsb2F0MTZU
ZXh0dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wgKnJlbmRlcmFibGUpCit7CisgICAg
KmZpbHRlcmluZyA9IG1GbG9hdDE2RmlsdGVyU3VwcG9ydDsKKyAgICAqcmVuZGVyYWJsZSA9IG1G
bG9hdDE2UmVuZGVyU3VwcG9ydDsKKyAgICByZXR1cm4gbUZsb2F0MTZUZXh0dXJlU3VwcG9ydDsK
K30KKworYm9vbCBSZW5kZXJlcjk6OmdldEx1bWluYW5jZVRleHR1cmVTdXBwb3J0KCkKK3sKKyAg
ICByZXR1cm4gbUx1bWluYW5jZVRleHR1cmVTdXBwb3J0OworfQorCitib29sIFJlbmRlcmVyOTo6
Z2V0THVtaW5hbmNlQWxwaGFUZXh0dXJlU3VwcG9ydCgpCit7CisgICAgcmV0dXJuIG1MdW1pbmFu
Y2VBbHBoYVRleHR1cmVTdXBwb3J0OworfQorCitib29sIFJlbmRlcmVyOTo6Z2V0VGV4dHVyZUZp
bHRlckFuaXNvdHJvcHlTdXBwb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzVGV4
dHVyZUZpbHRlckFuaXNvdHJvcHk7Cit9CisKK2Zsb2F0IFJlbmRlcmVyOTo6Z2V0VGV4dHVyZU1h
eEFuaXNvdHJvcHkoKSBjb25zdAoreworICAgIGlmIChtU3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5p
c290cm9weSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obURldmlj
ZUNhcHMuTWF4QW5pc290cm9weSk7CisgICAgfQorICAgIHJldHVybiAxLjBmOworfQorCitib29s
IFJlbmRlcmVyOTo6Z2V0RXZlbnRRdWVyeVN1cHBvcnQoKQoreworICAgIHJldHVybiBtRXZlbnRR
dWVyeVN1cHBvcnQ7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldE1heFZlcnRleFRl
eHR1cmVJbWFnZVVuaXRzKCkgY29uc3QKK3sKKyAgICBNRVRBX0FTU0VSVChNQVhfVEVYVFVSRV9J
TUFHRV9VTklUU19WVEZfU00zIDw9IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRV
UkVfSU1BR0VfVU5JVFMpOworICAgIHJldHVybiBtVmVydGV4VGV4dHVyZVN1cHBvcnQgPyBNQVhf
VEVYVFVSRV9JTUFHRV9VTklUU19WVEZfU00zIDogMDsKK30KKwordW5zaWduZWQgaW50IFJlbmRl
cmVyOTo6Z2V0TWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGdsOjpNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyArIGdldE1heFZlcnRleFRleHR1cmVJbWFn
ZVVuaXRzKCk7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldFJlc2VydmVkVmVydGV4
VW5pZm9ybVZlY3RvcnMoKSBjb25zdAoreworICAgIHJldHVybiAyOyAgIC8vIGR4X1ZpZXdBZGp1
c3QgYW5kIGR4X0RlcHRoUmFuZ2UuCit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldFJl
c2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIDM7ICAg
Ly8gZHhfVmlld0Nvb3JkcywgZHhfRGVwdGhGcm9udCBhbmQgZHhfRGVwdGhSYW5nZS4KK30KKwor
dW5zaWduZWQgaW50IFJlbmRlcmVyOTo6Z2V0TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMoKSBjb25z
dAoreworICAgIHJldHVybiBNQVhfVkVSVEVYX0NPTlNUQU5UX1ZFQ1RPUlNfRDNEOSAtIGdldFJl
c2VydmVkVmVydGV4VW5pZm9ybVZlY3RvcnMoKTsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVy
OTo6Z2V0TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0Cit7CisgICAgY29uc3QgaW50
IG1heFBpeGVsQ29uc3RhbnRWZWN0b3JzID0gKGdldE1ham9yU2hhZGVyTW9kZWwoKSA+PSAzKSA/
IE1BWF9QSVhFTF9DT05TVEFOVF9WRUNUT1JTX1NNMyA6IE1BWF9QSVhFTF9DT05TVEFOVF9WRUNU
T1JTX1NNMjsKKworICAgIHJldHVybiBtYXhQaXhlbENvbnN0YW50VmVjdG9ycyAtIGdldFJlc2Vy
dmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpOworfQorCit1bnNpZ25lZCBpbnQgUmVuZGVyZXI5
OjpnZXRNYXhWYXJ5aW5nVmVjdG9ycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIChnZXRNYWpvclNo
YWRlck1vZGVsKCkgPj0gMykgPyBNQVhfVkFSWUlOR19WRUNUT1JTX1NNMyA6IE1BWF9WQVJZSU5H
X1ZFQ1RPUlNfU00yOworfQorCitib29sIFJlbmRlcmVyOTo6Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1
cHBvcnQoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlczsK
K30KKworYm9vbCBSZW5kZXJlcjk6OmdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1PY2NsdXNpb25RdWVyeVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXI5
OjpnZXRJbnN0YW5jaW5nU3VwcG9ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EZXZpY2VDYXBz
LlBpeGVsU2hhZGVyVmVyc2lvbiA+PSBEM0RQU19WRVJTSU9OKDMsIDApOworfQorCitib29sIFJl
bmRlcmVyOTo6Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KCkgY29uc3QKK3sKKyAgICAvLyBQSVggZG9l
c24ndCBzZWVtIHRvIHN1cHBvcnQgdXNpbmcgc2hhcmUgaGFuZGxlcywgc28gZGlzYWJsZSB0aGVt
LgorICAgIHJldHVybiAobUQzZDlFeCAhPSBOVUxMKSAmJiAhZ2w6OnBlcmZBY3RpdmUoKTsKK30K
KworYm9vbCBSZW5kZXJlcjk6OmdldERlcml2YXRpdmVJbnN0cnVjdGlvblN1cHBvcnQoKSBjb25z
dAoreworICAgIHJldHVybiAobURldmljZUNhcHMuUFMyMENhcHMuQ2FwcyAmIEQzRFBTMjBDQVBT
X0dSQURJRU5USU5TVFJVQ1RJT05TKSAhPSAwOworfQorCitib29sIFJlbmRlcmVyOTo6Z2V0UG9z
dFN1YkJ1ZmZlclN1cHBvcnQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCitpbnQg
UmVuZGVyZXI5OjpnZXRNYWpvclNoYWRlck1vZGVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRDNE
U0hBREVSX1ZFUlNJT05fTUFKT1IobURldmljZUNhcHMuUGl4ZWxTaGFkZXJWZXJzaW9uKTsKK30K
KworZmxvYXQgUmVuZGVyZXI5OjpnZXRNYXhQb2ludFNpemUoKSBjb25zdAoreworICAgIC8vIFBv
aW50IHNpemUgY2xhbXBlZCBhdCAxLjBmIGZvciBTTTIKKyAgICByZXR1cm4gZ2V0TWFqb3JTaGFk
ZXJNb2RlbCgpID09IDMgPyBtRGV2aWNlQ2Fwcy5NYXhQb2ludFNpemUgOiAxLjBmOworfQorCitp
bnQgUmVuZGVyZXI5OjpnZXRNYXhWaWV3cG9ydERpbWVuc2lvbigpIGNvbnN0Cit7CisgICAgaW50
IG1heFRleHR1cmVEaW1lbnNpb24gPSBzdGQ6Om1pbihzdGQ6Om1pbihnZXRNYXhUZXh0dXJlV2lk
dGgoKSwgZ2V0TWF4VGV4dHVyZUhlaWdodCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChpbnQpZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX1NJWkUpOwor
ICAgIHJldHVybiBtYXhUZXh0dXJlRGltZW5zaW9uOworfQorCitpbnQgUmVuZGVyZXI5OjpnZXRN
YXhUZXh0dXJlV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiAoaW50KW1EZXZpY2VDYXBzLk1h
eFRleHR1cmVXaWR0aDsKK30KKworaW50IFJlbmRlcmVyOTo6Z2V0TWF4VGV4dHVyZUhlaWdodCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIChpbnQpbURldmljZUNhcHMuTWF4VGV4dHVyZUhlaWdodDsK
K30KKworYm9vbCBSZW5kZXJlcjk6OmdldDMyQml0SW5kZXhTdXBwb3J0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbURldmljZUNhcHMuTWF4VmVydGV4SW5kZXggPj0gKDEgPDwgMTYpOworfQorCitE
V09SRCBSZW5kZXJlcjk6OmdldENhcHNEZWNsVHlwZXMoKSBjb25zdAoreworICAgIHJldHVybiBt
RGV2aWNlQ2Fwcy5EZWNsVHlwZXM7Cit9CisKK2ludCBSZW5kZXJlcjk6OmdldE1pblN3YXBJbnRl
cnZhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1NaW5Td2FwSW50ZXJ2YWw7Cit9CisKK2ludCBS
ZW5kZXJlcjk6OmdldE1heFN3YXBJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1NYXhT
d2FwSW50ZXJ2YWw7Cit9CisKK2ludCBSZW5kZXJlcjk6OmdldE1heFN1cHBvcnRlZFNhbXBsZXMo
KSBjb25zdAoreworICAgIHJldHVybiBtTWF4U3VwcG9ydGVkU2FtcGxlczsKK30KKworaW50IFJl
bmRlcmVyOTo6Z2V0TmVhcmVzdFN1cHBvcnRlZFNhbXBsZXMoRDNERk9STUFUIGZvcm1hdCwgaW50
IHJlcXVlc3RlZCkgY29uc3QKK3sKKyAgICBpZiAocmVxdWVzdGVkID09IDApCisgICAgeworICAg
ICAgICByZXR1cm4gcmVxdWVzdGVkOworICAgIH0KKworICAgIHN0ZDo6bWFwPEQzREZPUk1BVCwg
Ym9vbCAqPjo6Y29uc3RfaXRlcmF0b3IgaXRyID0gbU11bHRpU2FtcGxlU3VwcG9ydC5maW5kKGZv
cm1hdCk7CisgICAgaWYgKGl0ciA9PSBtTXVsdGlTYW1wbGVTdXBwb3J0LmVuZCgpKQorICAgIHsK
KyAgICAgICAgaWYgKGZvcm1hdCA9PSBEM0RGTVRfVU5LTk9XTikKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZm9yIChpbnQgaSA9IHJlcXVl
c3RlZDsgaSA8PSBEM0RNVUxUSVNBTVBMRV8xNl9TQU1QTEVTOyArK2kpCisgICAgeworICAgICAg
ICBpZiAoaXRyLT5zZWNvbmRbaV0gJiYgaSAhPSBEM0RNVUxUSVNBTVBMRV9OT05NQVNLQUJMRSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gLTE7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldE1heFJlbmRlclRh
cmdldHMoKSBjb25zdAoreworICAgIC8vIHdlIGRvIG5vdCBzdXBwb3J0IE1SVCBpbiBkM2Q5Cisg
ICAgcmV0dXJuIDE7Cit9CisKK0QzREZPUk1BVCBSZW5kZXJlcjk6OkNvbnZlcnRUZXh0dXJlSW50
ZXJuYWxGb3JtYXQoR0xpbnQgaW50ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5h
bGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2OgorICAgICAg
Y2FzZSBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVM6CisgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RF
TkNJTDhfT0VTOgorICAgICAgICByZXR1cm4gRDNERk1UX0lOVFo7CisgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDFfRVhUOgorICAgICAgICByZXR1cm4gRDNERk1UX0RYVDE7CisgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6CisgICAgICAgIHJldHVybiBEM0RG
TVRfRFhUMzsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToK
KyAgICAgICAgcmV0dXJuIEQzREZNVF9EWFQ1OworICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoK
KyAgICAgIGNhc2UgR0xfUkdCMzJGX0VYVDoKKyAgICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhUOgor
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgorICAgICAgY2FzZSBHTF9MVU1JTkFOQ0Vf
QUxQSEEzMkZfRVhUOgorICAgICAgICByZXR1cm4gRDNERk1UX0EzMkIzMkczMlIzMkY7CisgICAg
ICBjYXNlIEdMX1JHQkExNkZfRVhUOgorICAgICAgY2FzZSBHTF9SR0IxNkZfRVhUOgorICAgICAg
Y2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6Cisg
ICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQ6CisgICAgICAgIHJldHVybiBEM0RG
TVRfQTE2QjE2RzE2UjE2RjsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOF9FWFQ6CisgICAgICAg
IGlmIChnZXRMdW1pbmFuY2VUZXh0dXJlU3VwcG9ydCgpKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gRDNERk1UX0w4OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQ6CisgICAgICAgIGlmIChnZXRMdW1pbmFuY2VBbHBo
YVRleHR1cmVTdXBwb3J0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBEM0RGTVRf
QThMODsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6
CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgICAgcmV0dXJuIEQzREZNVF9YOFI4RzhCODsK
KyAgICB9CisKKyAgICByZXR1cm4gRDNERk1UX0E4UjhHOEI4OworfQorCitib29sIFJlbmRlcmVy
OTo6Y29weVRvUmVuZGVyVGFyZ2V0KFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKmRlc3QsIFRl
eHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnNvdXJjZSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGZh
bHNlOworCisgICAgaWYgKHNvdXJjZSAmJiBkZXN0KQorICAgIHsKKyAgICAgICAgVGV4dHVyZVN0
b3JhZ2U5XzJEICpzb3VyY2U5ID0gVGV4dHVyZVN0b3JhZ2U5XzJEOjptYWtlVGV4dHVyZVN0b3Jh
Z2U5XzJEKHNvdXJjZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgICAgICBUZXh0dXJlU3Rv
cmFnZTlfMkQgKmRlc3Q5ID0gVGV4dHVyZVN0b3JhZ2U5XzJEOjptYWtlVGV4dHVyZVN0b3JhZ2U5
XzJEKGRlc3QtPmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsKKworICAgICAgICBpbnQgbGV2ZWxzID0g
c291cmNlOS0+bGV2ZWxDb3VudCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxldmVs
czsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3JjU3Vy
ZiA9IHNvdXJjZTktPmdldFN1cmZhY2VMZXZlbChpLCBmYWxzZSk7CisgICAgICAgICAgICBJRGly
ZWN0M0RTdXJmYWNlOSAqZHN0U3VyZiA9IGRlc3Q5LT5nZXRTdXJmYWNlTGV2ZWwoaSwgZmFsc2Up
OworICAgICAgICAgICAgCisgICAgICAgICAgICByZXN1bHQgPSBjb3B5VG9SZW5kZXJUYXJnZXQo
ZHN0U3VyZiwgc3JjU3VyZiwgc291cmNlOS0+aXNNYW5hZ2VkKCkpOworCisgICAgICAgICAgICBp
ZiAoc3JjU3VyZikgc3JjU3VyZi0+UmVsZWFzZSgpOworICAgICAgICAgICAgaWYgKGRzdFN1cmYp
IGRzdFN1cmYtPlJlbGVhc2UoKTsKKworICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworYm9vbCBSZW5kZXJlcjk6OmNvcHlUb1JlbmRlclRhcmdldChUZXh0dXJlU3Rv
cmFnZUludGVyZmFjZUN1YmUgKmRlc3QsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSAqc291
cmNlKQoreworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisKKyAgICBpZiAoc291cmNlICYmIGRl
c3QpCisgICAgeworICAgICAgICBUZXh0dXJlU3RvcmFnZTlfQ3ViZSAqc291cmNlOSA9IFRleHR1
cmVTdG9yYWdlOV9DdWJlOjptYWtlVGV4dHVyZVN0b3JhZ2U5X0N1YmUoc291cmNlLT5nZXRTdG9y
YWdlSW5zdGFuY2UoKSk7CisgICAgICAgIFRleHR1cmVTdG9yYWdlOV9DdWJlICpkZXN0OSA9IFRl
eHR1cmVTdG9yYWdlOV9DdWJlOjptYWtlVGV4dHVyZVN0b3JhZ2U5X0N1YmUoZGVzdC0+Z2V0U3Rv
cmFnZUluc3RhbmNlKCkpOworICAgICAgICBpbnQgbGV2ZWxzID0gc291cmNlOS0+bGV2ZWxDb3Vu
dCgpOworICAgICAgICBmb3IgKGludCBmID0gMDsgZiA8IDY7IGYrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZXZlbHM7IGkrKykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3JjU3VyZiA9IHNvdXJjZTktPmdl
dEN1YmVNYXBTdXJmYWNlKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGYsIGksIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZHN0U3VyZiA9IGRlc3Q5
LT5nZXRDdWJlTWFwU3VyZmFjZShHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmLCBp
LCB0cnVlKTsKKworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvcHlUb1JlbmRlclRhcmdldChk
c3RTdXJmLCBzcmNTdXJmLCBzb3VyY2U5LT5pc01hbmFnZWQoKSk7CisKKyAgICAgICAgICAgICAg
ICBpZiAoc3JjU3VyZikgc3JjU3VyZi0+UmVsZWFzZSgpOworICAgICAgICAgICAgICAgIGlmIChk
c3RTdXJmKSBkc3RTdXJmLT5SZWxlYXNlKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRDNEUE9PTCBSZW5kZXJl
cjk6OmdldEJ1ZmZlclBvb2woRFdPUkQgdXNhZ2UpIGNvbnN0Cit7CisgICAgaWYgKG1EM2Q5RXgg
IT0gTlVMTCkKKyAgICB7CisgICAgICAgIHJldHVybiBEM0RQT09MX0RFRkFVTFQ7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmICghKHVzYWdlICYgRDNEVVNBR0VfRFlOQU1JQykp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBEM0RQT09MX01BTkFHRUQ7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gRDNEUE9PTF9ERUZBVUxUOworfQorCitib29sIFJlbmRl
cmVyOTo6Y29weUltYWdlKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBUZXh0dXJlU3RvcmFnZUlu
dGVyZmFjZTJEICpzdG9yYWdlLCBHTGludCBsZXZlbCkKK3sKKyAgICBSRUNUIHJlY3Q7CisgICAg
cmVjdC5sZWZ0ID0gc291cmNlUmVjdC54OworICAgIHJlY3QudG9wID0gc291cmNlUmVjdC55Owor
ICAgIHJlY3QucmlnaHQgPSBzb3VyY2VSZWN0LnggKyBzb3VyY2VSZWN0LndpZHRoOworICAgIHJl
Y3QuYm90dG9tID0gc291cmNlUmVjdC55ICsgc291cmNlUmVjdC5oZWlnaHQ7CisKKyAgICByZXR1
cm4gbUJsaXQtPmNvcHkoZnJhbWVidWZmZXIsIHJlY3QsIGRlc3RGb3JtYXQsIHhvZmZzZXQsIHlv
ZmZzZXQsIHN0b3JhZ2UsIGxldmVsKTsKK30KKworYm9vbCBSZW5kZXJlcjk6OmNvcHlJbWFnZShn
bDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VS
ZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9y
YWdlLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkKK3sKKyAgICBSRUNUIHJlY3Q7CisgICAg
cmVjdC5sZWZ0ID0gc291cmNlUmVjdC54OworICAgIHJlY3QudG9wID0gc291cmNlUmVjdC55Owor
ICAgIHJlY3QucmlnaHQgPSBzb3VyY2VSZWN0LnggKyBzb3VyY2VSZWN0LndpZHRoOworICAgIHJl
Y3QuYm90dG9tID0gc291cmNlUmVjdC55ICsgc291cmNlUmVjdC5oZWlnaHQ7CisKKyAgICByZXR1
cm4gbUJsaXQtPmNvcHkoZnJhbWVidWZmZXIsIHJlY3QsIGRlc3RGb3JtYXQsIHhvZmZzZXQsIHlv
ZmZzZXQsIHN0b3JhZ2UsIHRhcmdldCwgbGV2ZWwpOworfQorCitib29sIFJlbmRlcmVyOTo6Ymxp
dFJlY3QoZ2w6OkZyYW1lYnVmZmVyICpyZWFkRnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5n
bGUgJnJlYWRSZWN0LCBnbDo6RnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciwgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmZHJhd1JlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBibGl0
UmVuZGVyVGFyZ2V0LCBib29sIGJsaXREZXB0aFN0ZW5jaWwpCit7CisgICAgZW5kU2NlbmUoKTsK
KworICAgIGlmIChibGl0UmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgZ2w6OlJlbmRlcmJ1
ZmZlciAqcmVhZEJ1ZmZlciA9IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoMCk7Cisg
ICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKmRyYXdCdWZmZXIgPSBkcmF3RnJhbWVidWZmZXItPmdl
dENvbG9yYnVmZmVyKDApOworICAgICAgICBSZW5kZXJUYXJnZXQ5ICpyZWFkUmVuZGVyVGFyZ2V0
ID0gTlVMTDsKKyAgICAgICAgUmVuZGVyVGFyZ2V0OSAqZHJhd1JlbmRlclRhcmdldCA9IE5VTEw7
CisgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5KiByZWFkU3VyZmFjZSA9IE5VTEw7CisgICAgICAg
IElEaXJlY3QzRFN1cmZhY2U5KiBkcmF3U3VyZmFjZSA9IE5VTEw7CisKKyAgICAgICAgaWYgKHJl
YWRCdWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlYWRSZW5kZXJUYXJnZXQgPSBSZW5k
ZXJUYXJnZXQ5OjptYWtlUmVuZGVyVGFyZ2V0OShyZWFkQnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQo
KSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRyYXdCdWZmZXIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRyYXdSZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQ5OjptYWtlUmVuZGVyVGFyZ2V0
OShkcmF3QnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAocmVhZFJlbmRlclRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgICAgcmVhZFN1cmZhY2Ug
PSByZWFkUmVuZGVyVGFyZ2V0LT5nZXRTdXJmYWNlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGRyYXdSZW5kZXJUYXJnZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRyYXdTdXJmYWNlID0g
ZHJhd1JlbmRlclRhcmdldC0+Z2V0U3VyZmFjZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFyZWFkU3VyZmFjZSB8fCAhZHJhd1N1cmZhY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVS
UigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0LiIpOworICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBSRUNUIHNyY1JlY3Q7CisgICAgICAgIHNyY1JlY3QubGVmdCA9IHJlYWRSZWN0Lng7
CisgICAgICAgIHNyY1JlY3QucmlnaHQgPSByZWFkUmVjdC54ICsgcmVhZFJlY3Qud2lkdGg7Cisg
ICAgICAgIHNyY1JlY3QudG9wID0gcmVhZFJlY3QueTsKKyAgICAgICAgc3JjUmVjdC5ib3R0b20g
PSByZWFkUmVjdC55ICsgcmVhZFJlY3QuaGVpZ2h0OworCisgICAgICAgIFJFQ1QgZHN0UmVjdDsK
KyAgICAgICAgZHN0UmVjdC5sZWZ0ID0gZHJhd1JlY3QueDsKKyAgICAgICAgZHN0UmVjdC5yaWdo
dCA9IGRyYXdSZWN0LnggKyBkcmF3UmVjdC53aWR0aDsKKyAgICAgICAgZHN0UmVjdC50b3AgPSBk
cmF3UmVjdC55OworICAgICAgICBkc3RSZWN0LmJvdHRvbSA9IGRyYXdSZWN0LnkgKyBkcmF3UmVj
dC5oZWlnaHQ7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5TdHJldGNoUmVj
dChyZWFkU3VyZmFjZSwgJnNyY1JlY3QsIGRyYXdTdXJmYWNlLCAmZHN0UmVjdCwgRDNEVEVYRl9O
T05FKTsKKworICAgICAgICByZWFkU3VyZmFjZS0+UmVsZWFzZSgpOworICAgICAgICBkcmF3U3Vy
ZmFjZS0+UmVsZWFzZSgpOworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAg
eworICAgICAgICAgICAgRVJSKCJCbGl0RnJhbWVidWZmZXJBTkdMRSBmYWlsZWQ6IFN0cmV0Y2hS
ZWN0IHJldHVybmVkICV4LiIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYmxpdERlcHRoU3RlbmNpbCkKKyAgICB7CisgICAg
ICAgIGdsOjpSZW5kZXJidWZmZXIgKnJlYWRCdWZmZXIgPSByZWFkRnJhbWVidWZmZXItPmdldERl
cHRoT3JTdGVuY2lsYnVmZmVyKCk7CisgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKmRyYXdCdWZm
ZXIgPSBkcmF3RnJhbWVidWZmZXItPmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKCk7CisgICAgICAg
IFJlbmRlclRhcmdldDkgKnJlYWREZXB0aFN0ZW5jaWwgPSBOVUxMOworICAgICAgICBSZW5kZXJU
YXJnZXQ5ICpkcmF3RGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICAgICAgSURpcmVjdDNEU3VyZmFj
ZTkqIHJlYWRTdXJmYWNlID0gTlVMTDsKKyAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkqIGRyYXdT
dXJmYWNlID0gTlVMTDsKKworICAgICAgICBpZiAocmVhZEJ1ZmZlcikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmVhZERlcHRoU3RlbmNpbCA9IFJlbmRlclRhcmdldDk6Om1ha2VSZW5kZXJUYXJn
ZXQ5KHJlYWRCdWZmZXItPmdldERlcHRoU3RlbmNpbCgpKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoZHJhd0J1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgZHJhd0RlcHRoU3RlbmNpbCA9
IFJlbmRlclRhcmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5KGRyYXdCdWZmZXItPmdldERlcHRoU3Rl
bmNpbCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZWFkRGVwdGhTdGVuY2lsKQorICAg
ICAgICB7CisgICAgICAgICAgICByZWFkU3VyZmFjZSA9IHJlYWREZXB0aFN0ZW5jaWwtPmdldFN1
cmZhY2UoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZHJhd0RlcHRoU3RlbmNpbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZHJhd1N1cmZhY2UgPSBkcmF3RGVwdGhTdGVuY2lsLT5nZXRTdXJm
YWNlKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXJlYWRTdXJmYWNlIHx8ICFkcmF3U3Vy
ZmFjZSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhl
IHJlbmRlciB0YXJnZXQuIik7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlksIGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0g
bURldmljZS0+U3RyZXRjaFJlY3QocmVhZFN1cmZhY2UsIE5VTEwsIGRyYXdTdXJmYWNlLCBOVUxM
LCBEM0RURVhGX05PTkUpOworCisgICAgICAgIHJlYWRTdXJmYWNlLT5SZWxlYXNlKCk7CisgICAg
ICAgIGRyYXdTdXJmYWNlLT5SZWxlYXNlKCk7CisKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkJsaXRGcmFtZWJ1ZmZlckFOR0xFIGZhaWxl
ZDogU3RyZXRjaFJlY3QgcmV0dXJuZWQgJXguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lk
IFJlbmRlcmVyOTo6cmVhZFBpeGVscyhnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBHTGlu
dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBvdXRw
dXRQaXRjaCwgYm9vbCBwYWNrUmV2ZXJzZVJvd09yZGVyLCBHTGludCBwYWNrQWxpZ25tZW50LCB2
b2lkKiBwaXhlbHMpCit7CisgICAgUmVuZGVyVGFyZ2V0OSAqcmVuZGVyVGFyZ2V0ID0gTlVMTDsK
KyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSA9IE5VTEw7CisgICAgZ2w6OlJlbmRlcmJ1
ZmZlciAqY29sb3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoMCk7CisKKyAg
ICBpZiAoY29sb3JidWZmZXIpCisgICAgeworICAgICAgICByZW5kZXJUYXJnZXQgPSBSZW5kZXJU
YXJnZXQ5OjptYWtlUmVuZGVyVGFyZ2V0OShjb2xvcmJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCkp
OworICAgIH0KKyAgICAKKyAgICBpZiAocmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgc3Vy
ZmFjZSA9IHJlbmRlclRhcmdldC0+Z2V0U3VyZmFjZSgpOworICAgIH0KKworICAgIGlmICghc3Vy
ZmFjZSkKKyAgICB7CisgICAgICAgIC8vIGNvbnRleHQgbXVzdCBiZSBsb3N0CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBEM0RTVVJGQUNFX0RFU0MgZGVzYzsKKyAgICBzdXJmYWNlLT5H
ZXREZXNjKCZkZXNjKTsKKworICAgIGlmIChkZXNjLk11bHRpU2FtcGxlVHlwZSAhPSBEM0RNVUxU
SVNBTVBMRV9OT05FKQorICAgIHsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1F
OiBSZXF1aXJlcyByZXNvbHZlIHVzaW5nIFN0cmV0Y2hSZWN0IGludG8gbm9uLW11bHRpc2FtcGxl
ZCByZW5kZXIgdGFyZ2V0CisgICAgICAgIHN1cmZhY2UtPlJlbGVhc2UoKTsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9CisKKyAgICBIUkVTVUxUIHJl
c3VsdDsKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3lzdGVtU3VyZmFjZSA9IE5VTEw7CisgICAg
Ym9vbCBkaXJlY3RUb1BpeGVscyA9ICFwYWNrUmV2ZXJzZVJvd09yZGVyICYmIHBhY2tBbGlnbm1l
bnQgPD0gNCAmJiBnZXRTaGFyZUhhbmRsZVN1cHBvcnQoKSAmJgorICAgICAgICAgICAgICAgICAg
ICAgICAgICB4ID09IDAgJiYgeSA9PSAwICYmIFVJTlQod2lkdGgpID09IGRlc2MuV2lkdGggJiYg
VUlOVChoZWlnaHQpID09IGRlc2MuSGVpZ2h0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlc2MuRm9ybWF0ID09IEQzREZNVF9BOFI4RzhCOCAmJiBmb3JtYXQgPT0gR0xfQkdSQV9FWFQg
JiYgdHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFOworICAgIGlmIChkaXJlY3RUb1BpeGVscykKKyAg
ICB7CisgICAgICAgIC8vIFVzZSB0aGUgcGl4ZWxzIHB0ciBhcyBhIHNoYXJlZCBoYW5kbGUgdG8g
d3JpdGUgZGlyZWN0bHkgaW50byBjbGllbnQncyBtZW1vcnkKKyAgICAgICAgcmVzdWx0ID0gbURl
dmljZS0+Q3JlYXRlT2Zmc2NyZWVuUGxhaW5TdXJmYWNlKGRlc2MuV2lkdGgsIGRlc2MuSGVpZ2h0
LCBkZXNjLkZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEQzRFBPT0xfU1lTVEVNTUVNLCAmc3lzdGVtU3VyZmFjZSwgJnBpeGVscyk7
CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
VHJ5IGFnYWluIHdpdGhvdXQgdGhlIHNoYXJlZCBoYW5kbGUKKyAgICAgICAgICAgIGRpcmVjdFRv
UGl4ZWxzID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWRpcmVjdFRvUGl4
ZWxzKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlT2Zmc2NyZWVuUGxh
aW5TdXJmYWNlKGRlc2MuV2lkdGgsIGRlc2MuSGVpZ2h0LCBkZXNjLkZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFBPT0xfU1lT
VEVNTUVNLCAmc3lzdGVtU3VyZmFjZSwgTlVMTCk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZW
SURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7CisgICAgICAgICAgICBzdXJm
YWNlLT5SZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0ID0gbURldmljZS0+R2V0UmVu
ZGVyVGFyZ2V0RGF0YShzdXJmYWNlLCBzeXN0ZW1TdXJmYWNlKTsKKyAgICBzdXJmYWNlLT5SZWxl
YXNlKCk7CisgICAgc3VyZmFjZSA9IE5VTEw7CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisg
ICAgeworICAgICAgICBzeXN0ZW1TdXJmYWNlLT5SZWxlYXNlKCk7CisKKyAgICAgICAgLy8gSXQg
dHVybnMgb3V0IHRoYXQgRDNEIHdpbGwgc29tZXRpbWVzIHByb2R1Y2UgbW9yZSBlcnJvcgorICAg
ICAgICAvLyBjb2RlcyB0aGFuIHRob3NlIGRvY3VtZW50ZWQuCisgICAgICAgIGlmIChkM2Q5Ojpp
c0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBub3RpZnlE
ZXZpY2VMb3N0KCk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgfQorCisg
ICAgaWYgKGRpcmVjdFRvUGl4ZWxzKQorICAgIHsKKyAgICAgICAgc3lzdGVtU3VyZmFjZS0+UmVs
ZWFzZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUkVDVCByZWN0OworICAgIHJl
Y3QubGVmdCA9IGdsOjpjbGFtcCh4LCAwTCwgc3RhdGljX2Nhc3Q8TE9ORz4oZGVzYy5XaWR0aCkp
OworICAgIHJlY3QudG9wID0gZ2w6OmNsYW1wKHksIDBMLCBzdGF0aWNfY2FzdDxMT05HPihkZXNj
LkhlaWdodCkpOworICAgIHJlY3QucmlnaHQgPSBnbDo6Y2xhbXAoeCArIHdpZHRoLCAwTCwgc3Rh
dGljX2Nhc3Q8TE9ORz4oZGVzYy5XaWR0aCkpOworICAgIHJlY3QuYm90dG9tID0gZ2w6OmNsYW1w
KHkgKyBoZWlnaHQsIDBMLCBzdGF0aWNfY2FzdDxMT05HPihkZXNjLkhlaWdodCkpOworCisgICAg
RDNETE9DS0VEX1JFQ1QgbG9jazsKKyAgICByZXN1bHQgPSBzeXN0ZW1TdXJmYWNlLT5Mb2NrUmVj
dCgmbG9jaywgJnJlY3QsIEQzRExPQ0tfUkVBRE9OTFkpOworCisgICAgaWYgKEZBSUxFRChyZXN1
bHQpKQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgc3lzdGVtU3VyZmFj
ZS0+UmVsZWFzZSgpOworCisgICAgICAgIHJldHVybjsgICAvLyBObyBzZW5zaWJsZSBlcnJvciB0
byBnZW5lcmF0ZQorICAgIH0KKworICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSAodW5zaWduZWQg
Y2hhciopcGl4ZWxzOworICAgIHVuc2lnbmVkIHNob3J0ICpkZXN0MTYgPSAodW5zaWduZWQgc2hv
cnQqKXBpeGVsczsKKworICAgIHVuc2lnbmVkIGNoYXIgKnNvdXJjZTsKKyAgICBpbnQgaW5wdXRQ
aXRjaDsKKyAgICBpZiAocGFja1JldmVyc2VSb3dPcmRlcikKKyAgICB7CisgICAgICAgIHNvdXJj
ZSA9ICgodW5zaWduZWQgY2hhciopbG9jay5wQml0cykgKyBsb2NrLlBpdGNoICogKHJlY3QuYm90
dG9tIC0gcmVjdC50b3AgLSAxKTsKKyAgICAgICAgaW5wdXRQaXRjaCA9IC1sb2NrLlBpdGNoOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBzb3VyY2UgPSAodW5zaWduZWQgY2hhciop
bG9jay5wQml0czsKKyAgICAgICAgaW5wdXRQaXRjaCA9IGxvY2suUGl0Y2g7CisgICAgfQorCisg
ICAgdW5zaWduZWQgaW50IGZhc3RQaXhlbFNpemUgPSAwOworCisgICAgaWYgKGRlc2MuRm9ybWF0
ID09IEQzREZNVF9BOFI4RzhCOCAmJgorICAgICAgICBmb3JtYXQgPT0gR0xfQkdSQV9FWFQgJiYK
KyAgICAgICAgdHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFKQorICAgIHsKKyAgICAgICAgZmFzdFBp
eGVsU2l6ZSA9IDQ7CisgICAgfQorICAgIGVsc2UgaWYgKChkZXNjLkZvcm1hdCA9PSBEM0RGTVRf
QTRSNEc0QjQgJiYKKyAgICAgICAgICAgICBmb3JtYXQgPT0gR0xfQkdSQV9FWFQgJiYKKyAgICAg
ICAgICAgICB0eXBlID09IEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVCkgfHwKKyAg
ICAgICAgICAgICAoZGVzYy5Gb3JtYXQgPT0gRDNERk1UX0ExUjVHNUI1ICYmCisgICAgICAgICAg
ICAgZm9ybWF0ID09IEdMX0JHUkFfRVhUICYmCisgICAgICAgICAgICAgdHlwZSA9PSBHTF9VTlNJ
R05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFQpKQorICAgIHsKKyAgICAgICAgZmFzdFBpeGVsU2l6
ZSA9IDI7CisgICAgfQorICAgIGVsc2UgaWYgKGRlc2MuRm9ybWF0ID09IEQzREZNVF9BMTZCMTZH
MTZSMTZGICYmCisgICAgICAgICAgICAgZm9ybWF0ID09IEdMX1JHQkEgJiYKKyAgICAgICAgICAg
ICB0eXBlID09IEdMX0hBTEZfRkxPQVRfT0VTKQorICAgIHsKKyAgICAgICAgZmFzdFBpeGVsU2l6
ZSA9IDg7CisgICAgfQorICAgIGVsc2UgaWYgKGRlc2MuRm9ybWF0ID09IEQzREZNVF9BMzJCMzJH
MzJSMzJGICYmCisgICAgICAgICAgICAgZm9ybWF0ID09IEdMX1JHQkEgJiYKKyAgICAgICAgICAg
ICB0eXBlID09IEdMX0ZMT0FUKQorICAgIHsKKyAgICAgICAgZmFzdFBpeGVsU2l6ZSA9IDE2Owor
ICAgIH0KKworICAgIGZvciAoaW50IGogPSAwOyBqIDwgcmVjdC5ib3R0b20gLSByZWN0LnRvcDsg
aisrKQorICAgIHsKKyAgICAgICAgaWYgKGZhc3RQaXhlbFNpemUgIT0gMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBmb3JtYXRzIHdoaWNoIHJlcXVpcmUgbm8gdHJh
bnNsYXRpb246CisgICAgICAgICAgICAvLyBEM0RGTVRfQThSOEc4QjggdG8gQkdSQS9VTlNJR05F
RF9CWVRFCisgICAgICAgICAgICAvLyBEM0RGTVRfQTRSNEc0QjQgdG8gQkdSQS9VTlNJR05FRF9T
SE9SVF80XzRfNF80X1JFVl9FWFQKKyAgICAgICAgICAgIC8vIEQzREZNVF9BMVI1RzVCNSB0byBC
R1JBL1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVAorICAgICAgICAgICAgLy8gRDNERk1U
X0ExNkIxNkcxNlIxNkYgdG8gUkdCQS9IQUxGX0ZMT0FUX09FUworICAgICAgICAgICAgLy8gRDNE
Rk1UX0EzMkIzMkczMlIzMkYgdG8gUkdCQS9GTE9BVAorICAgICAgICAgICAgLy8gCisgICAgICAg
ICAgICAvLyBOb3RlIHRoYXQgYnVmZmVycyB3aXRoIG5vIGFscGhhIGdvIHRocm91Z2ggdGhlIHNs
b3cgcGF0aCBiZWxvdy4KKyAgICAgICAgICAgIG1lbWNweShkZXN0ICsgaiAqIG91dHB1dFBpdGNo
LAorICAgICAgICAgICAgICAgICAgIHNvdXJjZSArIGogKiBpbnB1dFBpdGNoLAorICAgICAgICAg
ICAgICAgICAgIChyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0KSAqIGZhc3RQaXhlbFNpemUpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZGVzYy5Gb3Jt
YXQgPT0gRDNERk1UX0E4UjhHOEI4ICYmCisgICAgICAgICAgICAgICAgIGZvcm1hdCA9PSBHTF9S
R0JBICYmCisgICAgICAgICAgICAgICAgIHR5cGUgPT0gR0xfVU5TSUdORURfQllURSkKKyAgICAg
ICAgeworICAgICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBzd2FwcGluZyByZWQgd2l0aCBibHVl
CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3QucmlnaHQgLSByZWN0LmxlZnQ7
IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJnYiA9
ICoodW5zaWduZWQgaW50Kikoc291cmNlICsgNCAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisgICAg
ICAgICAgICAgICAgKih1bnNpZ25lZCBpbnQqKShkZXN0ICsgNCAqIGkgKyBqICogb3V0cHV0UGl0
Y2gpID0KKyAgICAgICAgICAgICAgICAgICAgKGFyZ2IgJiAweEZGMDBGRjAwKSB8ICAgICAgIC8v
IEtlZXAgYWxwaGEgYW5kIGdyZWVuCisgICAgICAgICAgICAgICAgICAgIChhcmdiICYgMHgwMEZG
MDAwMCkgPj4gMTYgfCAvLyBNb3ZlIHJlZCB0byBibHVlCisgICAgICAgICAgICAgICAgICAgIChh
cmdiICYgMHgwMDAwMDBGRikgPDwgMTY7ICAvLyBNb3ZlIGJsdWUgdG8gcmVkCisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgcmVjdC5yaWdodCAtIHJlY3QubGVmdDsgaSsrKQorICAgICAgICB7CisgICAg
ICAgICAgICBmbG9hdCByOworICAgICAgICAgICAgZmxvYXQgZzsKKyAgICAgICAgICAgIGZsb2F0
IGI7CisgICAgICAgICAgICBmbG9hdCBhOworCisgICAgICAgICAgICBzd2l0Y2ggKGRlc2MuRm9y
bWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9SNUc2QjU6Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCByZ2Ig
PSAqKHVuc2lnbmVkIHNob3J0Kikoc291cmNlICsgMiAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisK
KyAgICAgICAgICAgICAgICAgICAgYSA9IDEuMGY7CisgICAgICAgICAgICAgICAgICAgIGIgPSAo
cmdiICYgMHgwMDFGKSAqICgxLjBmIC8gMHgwMDFGKTsKKyAgICAgICAgICAgICAgICAgICAgZyA9
IChyZ2IgJiAweDA3RTApICogKDEuMGYgLyAweDA3RTApOworICAgICAgICAgICAgICAgICAgICBy
ID0gKHJnYiAmIDB4RjgwMCkgKiAoMS4wZiAvIDB4RjgwMCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9BMVI1RzVC
NToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0
IGFyZ2IgPSAqKHVuc2lnbmVkIHNob3J0Kikoc291cmNlICsgMiAqIGkgKyBqICogaW5wdXRQaXRj
aCk7CisKKyAgICAgICAgICAgICAgICAgICAgYSA9IChhcmdiICYgMHg4MDAwKSA/IDEuMGYgOiAw
LjBmOworICAgICAgICAgICAgICAgICAgICBiID0gKGFyZ2IgJiAweDAwMUYpICogKDEuMGYgLyAw
eDAwMUYpOworICAgICAgICAgICAgICAgICAgICBnID0gKGFyZ2IgJiAweDAzRTApICogKDEuMGYg
LyAweDAzRTApOworICAgICAgICAgICAgICAgICAgICByID0gKGFyZ2IgJiAweDdDMDApICogKDEu
MGYgLyAweDdDMDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJnYiA9ICoodW5zaWduZWQgaW50Kiko
c291cmNlICsgNCAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisKKyAgICAgICAgICAgICAgICAgICAg
YSA9IChhcmdiICYgMHhGRjAwMDAwMCkgKiAoMS4wZiAvIDB4RkYwMDAwMDApOworICAgICAgICAg
ICAgICAgICAgICBiID0gKGFyZ2IgJiAweDAwMDAwMEZGKSAqICgxLjBmIC8gMHgwMDAwMDBGRik7
CisgICAgICAgICAgICAgICAgICAgIGcgPSAoYXJnYiAmIDB4MDAwMEZGMDApICogKDEuMGYgLyAw
eDAwMDBGRjAwKTsKKyAgICAgICAgICAgICAgICAgICAgciA9IChhcmdiICYgMHgwMEZGMDAwMCkg
KiAoMS4wZiAvIDB4MDBGRjAwMDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6CisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgeHJnYiA9ICoodW5zaWdu
ZWQgaW50Kikoc291cmNlICsgNCAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgYSA9IDEuMGY7CisgICAgICAgICAgICAgICAgICAgIGIgPSAoeHJnYiAmIDB4MDAw
MDAwRkYpICogKDEuMGYgLyAweDAwMDAwMEZGKTsKKyAgICAgICAgICAgICAgICAgICAgZyA9ICh4
cmdiICYgMHgwMDAwRkYwMCkgKiAoMS4wZiAvIDB4MDAwMEZGMDApOworICAgICAgICAgICAgICAg
ICAgICByID0gKHhyZ2IgJiAweDAwRkYwMDAwKSAqICgxLjBmIC8gMHgwMEZGMDAwMCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IEQzREZNVF9BMlIxMEcxMEIxMDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBhcmdiID0gKih1bnNpZ25lZCBpbnQqKShzb3VyY2UgKyA0ICogaSAr
IGogKiBpbnB1dFBpdGNoKTsKKworICAgICAgICAgICAgICAgICAgICBhID0gKGFyZ2IgJiAweEMw
MDAwMDAwKSAqICgxLjBmIC8gMHhDMDAwMDAwMCk7CisgICAgICAgICAgICAgICAgICAgIGIgPSAo
YXJnYiAmIDB4MDAwMDAzRkYpICogKDEuMGYgLyAweDAwMDAwM0ZGKTsKKyAgICAgICAgICAgICAg
ICAgICAgZyA9IChhcmdiICYgMHgwMDBGRkMwMCkgKiAoMS4wZiAvIDB4MDAwRkZDMDApOworICAg
ICAgICAgICAgICAgICAgICByID0gKGFyZ2IgJiAweDNGRjAwMDAwKSAqICgxLjBmIC8gMHgzRkYw
MDAwMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOgorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gZmxvYXQgZm9ybWF0cyBpbiBEM0QgYXJlIHN0b3JlZCByZ2Jh
LCByYXRoZXIgdGhhbiB0aGUgb3RoZXIgd2F5IHJvdW5kCisgICAgICAgICAgICAgICAgICAgIHIg
PSAqKChmbG9hdCopKHNvdXJjZSArIDE2ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDApOworICAg
ICAgICAgICAgICAgICAgICBnID0gKigoZmxvYXQqKShzb3VyY2UgKyAxNiAqIGkgKyBqICogaW5w
dXRQaXRjaCkgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgYiA9ICooKGZsb2F0Kikoc291cmNl
ICsgMTYgKiBpICsgaiAqIGlucHV0UGl0Y2gpICsgMik7CisgICAgICAgICAgICAgICAgICAgIGEg
PSAqKChmbG9hdCopKHNvdXJjZSArIDE2ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDMpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2Fz
ZSBEM0RGTVRfQTE2QjE2RzE2UjE2RjoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIC8vIGZsb2F0IGZvcm1hdHMgaW4gRDNEIGFyZSBzdG9yZWQgcmdiYSwgcmF0aGVyIHRo
YW4gdGhlIG90aGVyIHdheSByb3VuZAorICAgICAgICAgICAgICAgICAgICByID0gZ2w6OmZsb2F0
MTZUb0Zsb2F0MzIoKigodW5zaWduZWQgc2hvcnQqKShzb3VyY2UgKyA4ICogaSArIGogKiBpbnB1
dFBpdGNoKSArIDApKTsKKyAgICAgICAgICAgICAgICAgICAgZyA9IGdsOjpmbG9hdDE2VG9GbG9h
dDMyKCooKHVuc2lnbmVkIHNob3J0Kikoc291cmNlICsgOCAqIGkgKyBqICogaW5wdXRQaXRjaCkg
KyAxKSk7CisgICAgICAgICAgICAgICAgICAgIGIgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMigqKCh1
bnNpZ25lZCBzaG9ydCopKHNvdXJjZSArIDggKiBpICsgaiAqIGlucHV0UGl0Y2gpICsgMikpOwor
ICAgICAgICAgICAgICAgICAgICBhID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoKigodW5zaWduZWQg
c2hvcnQqKShzb3VyY2UgKyA4ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDMpKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAoZm9ybWF0KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToK
KyAgICAgICAgICAgICAgICAgICAgZGVzdFs0ICogaSArIGogKiBvdXRwdXRQaXRjaCArIDBdID0g
KHVuc2lnbmVkIGNoYXIpKDI1NSAqIHIgKyAwLjVmKTsKKyAgICAgICAgICAgICAgICAgICAgZGVz
dFs0ICogaSArIGogKiBvdXRwdXRQaXRjaCArIDFdID0gKHVuc2lnbmVkIGNoYXIpKDI1NSAqIGcg
KyAwLjVmKTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFs0ICogaSArIGogKiBvdXRwdXRQaXRj
aCArIDJdID0gKHVuc2lnbmVkIGNoYXIpKDI1NSAqIGIgKyAwLjVmKTsKKyAgICAgICAgICAgICAg
ICAgICAgZGVzdFs0ICogaSArIGogKiBvdXRwdXRQaXRjaCArIDNdID0gKHVuc2lnbmVkIGNoYXIp
KDI1NSAqIGEgKyAwLjVmKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgICAgICBkZXN0WzQg
KiBpICsgaiAqIG91dHB1dFBpdGNoICsgMF0gPSAodW5zaWduZWQgY2hhcikoMjU1ICogYiArIDAu
NWYpOworICAgICAgICAgICAgICAgICAgICBkZXN0WzQgKiBpICsgaiAqIG91dHB1dFBpdGNoICsg
MV0gPSAodW5zaWduZWQgY2hhcikoMjU1ICogZyArIDAuNWYpOworICAgICAgICAgICAgICAgICAg
ICBkZXN0WzQgKiBpICsgaiAqIG91dHB1dFBpdGNoICsgMl0gPSAodW5zaWduZWQgY2hhcikoMjU1
ICogciArIDAuNWYpOworICAgICAgICAgICAgICAgICAgICBkZXN0WzQgKiBpICsgaiAqIG91dHB1
dFBpdGNoICsgM10gPSAodW5zaWduZWQgY2hhcikoMjU1ICogYSArIDAuNWYpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hP
UlRfNF80XzRfNF9SRVZfRVhUOgorICAgICAgICAgICAgICAgICAgICAvLyBBY2NvcmRpbmcgdG8g
dGhlIGRlc2t0b3AgR0wgc3BlYyBpbiB0aGUgIlRyYW5zZmVyIG9mIFBpeGVsIFJlY3RhbmdsZXMi
IHNlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyB0eXBlIGlzIHBhY2tlZCBhcyBm
b2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAvLyAgIDE1ICAgMTQgICAxMyAgIDEyICAgMTEg
ICAxMCAgICA5ICAgIDggICAgNyAgICA2ICAgIDUgICAgNCAgICAzICAgIDIgICAgMSAgICAwCisg
ICAgICAgICAgICAgICAgICAgIC8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg
ICAgICAgICAgICAvLyB8ICAgICAgIDR0aCAgICAgICAgIHwgICAgICAgIDNyZCAgICAgICAgIHwg
ICAgICAgIDJuZCAgICAgICAgfCAgIDFzdCBjb21wb25lbnQgICB8CisgICAgICAgICAgICAgICAg
ICAgIC8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAvLyBp
biB0aGUgY2FzZSBvZiBCR1JBX0VYVCwgQiBpcyB0aGUgZmlyc3QgY29tcG9uZW50LCBHIHRoZSBz
ZWNvbmQsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgZGVzdDE2W2kgKyBqICog
b3V0cHV0UGl0Y2ggLyBzaXplb2YodW5zaWduZWQgc2hvcnQpXSA9CisgICAgICAgICAgICAgICAg
ICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgxNSAqIGEgKyAwLjVmKSA8PCAxMil8CisgICAgICAg
ICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgxNSAqIHIgKyAwLjVmKSA8PCA4KSB8
CisgICAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgxNSAqIGcgKyAwLjVm
KSA8PCA0KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgxNSAq
IGIgKyAwLjVmKSA8PCAwKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVDoKKyAgICAgICAg
ICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBkZXNrdG9wIEdMIHNwZWMgaW4gdGhlICJU
cmFuc2ZlciBvZiBQaXhlbCBSZWN0YW5nbGVzIiBzZWN0aW9uCisgICAgICAgICAgICAgICAgICAg
IC8vIHRoaXMgdHlwZSBpcyBwYWNrZWQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAg
Ly8gICAxNSAgIDE0ICAgMTMgICAxMiAgIDExICAgMTAgICAgOSAgICA4ICAgIDcgICAgNiAgICA1
ICAgIDQgICAgMyAgICAyICAgIDEgICAgMAorICAgICAgICAgICAgICAgICAgICAvLyAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgLy8gfCA0dGggfCAgICAgICAg
ICAzcmQgICAgICAgICAgIHwgICAgICAgICAgIDJuZCAgICAgICAgICB8ICAgICAgMXN0IGNvbXBv
bmVudCAgICAgfAorICAgICAgICAgICAgICAgICAgICAvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgQkdSQV9FWFQsIEIgaXMg
dGhlIGZpcnN0IGNvbXBvbmVudCwgRyB0aGUgc2Vjb25kLCBhbmQgc28gZm9ydGguCisgICAgICAg
ICAgICAgICAgICAgIGRlc3QxNltpICsgaiAqIG91dHB1dFBpdGNoIC8gc2l6ZW9mKHVuc2lnbmVk
IHNob3J0KV0gPQorICAgICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBzaG9ydCkoICAg
ICBhICsgMC41ZikgPDwgMTUpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQg
c2hvcnQpKDMxICogciArIDAuNWYpIDw8IDEwKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAo
KHVuc2lnbmVkIHNob3J0KSgzMSAqIGcgKyAwLjVmKSA8PCA1KSB8CisgICAgICAgICAgICAgICAg
ICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgzMSAqIGIgKyAwLjVmKSA8PCAwKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJM
RSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82
XzU6CisgICAgICAgICAgICAgICAgICAgIGRlc3QxNltpICsgaiAqIG91dHB1dFBpdGNoIC8gc2l6
ZW9mKHVuc2lnbmVkIHNob3J0KV0gPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICgodW5zaWdu
ZWQgc2hvcnQpKDMxICogYiArIDAuNWYpIDw8IDApIHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICgodW5zaWduZWQgc2hvcnQpKDYzICogZyArIDAuNWYpIDw8IDUpIHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICgodW5zaWduZWQgc2hvcnQpKDMxICogciArIDAuNWYpIDw8IDExKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVE
X0JZVEU6CisgICAgICAgICAgICAgICAgICAgIGRlc3RbMyAqIGkgKyBqICogb3V0cHV0UGl0Y2gg
KyAwXSA9ICh1bnNpZ25lZCBjaGFyKSgyNTUgKiByICsgMC41Zik7CisgICAgICAgICAgICAgICAg
ICAgIGRlc3RbMyAqIGkgKyBqICogb3V0cHV0UGl0Y2ggKyAxXSA9ICh1bnNpZ25lZCBjaGFyKSgy
NTUgKiBnICsgMC41Zik7CisgICAgICAgICAgICAgICAgICAgIGRlc3RbMyAqIGkgKyBqICogb3V0
cHV0UGl0Y2ggKyAyXSA9ICh1bnNpZ25lZCBjaGFyKSgyNTUgKiBiICsgMC41Zik7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBzeXN0ZW1TdXJmYWNlLT5VbmxvY2tSZWN0KCk7CisKKyAgICBzeXN0ZW1T
dXJmYWNlLT5SZWxlYXNlKCk7Cit9CisKK1JlbmRlclRhcmdldCAqUmVuZGVyZXI5OjpjcmVhdGVS
ZW5kZXJUYXJnZXQoU3dhcENoYWluICpzd2FwQ2hhaW4sIGJvb2wgZGVwdGgpCit7CisgICAgU3dh
cENoYWluOSAqc3dhcENoYWluOSA9IFN3YXBDaGFpbjk6Om1ha2VTd2FwQ2hhaW45KHN3YXBDaGFp
bik7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UgPSBOVUxMOworICAgIGlmIChkZXB0
aCkKKyAgICB7CisgICAgICAgIHN1cmZhY2UgPSBzd2FwQ2hhaW45LT5nZXREZXB0aFN0ZW5jaWwo
KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc3VyZmFjZSA9IHN3YXBDaGFpbjkt
PmdldFJlbmRlclRhcmdldCgpOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDkgKnJlbmRlclRh
cmdldCA9IG5ldyBSZW5kZXJUYXJnZXQ5KHRoaXMsIHN1cmZhY2UpOworCisgICAgcmV0dXJuIHJl
bmRlclRhcmdldDsKK30KKworUmVuZGVyVGFyZ2V0ICpSZW5kZXJlcjk6OmNyZWF0ZVJlbmRlclRh
cmdldChpbnQgd2lkdGgsIGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxl
cywgYm9vbCBkZXB0aCkKK3sKKyAgICBSZW5kZXJUYXJnZXQ5ICpyZW5kZXJUYXJnZXQgPSBuZXcg
UmVuZGVyVGFyZ2V0OSh0aGlzLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHNhbXBsZXMpOworICAg
IHJldHVybiByZW5kZXJUYXJnZXQ7Cit9CisKK1NoYWRlckV4ZWN1dGFibGUgKlJlbmRlcmVyOTo6
bG9hZEV4ZWN1dGFibGUoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIHJ4OjpT
aGFkZXJUeXBlIHR5cGUpCit7CisgICAgU2hhZGVyRXhlY3V0YWJsZTkgKmV4ZWN1dGFibGUgPSBO
VUxMOworCisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgIGNhc2Ugcng6OlNIQURFUl9W
RVJURVg6CisgICAgICAgIHsKKyAgICAgICAgICAgIElEaXJlY3QzRFZlcnRleFNoYWRlcjkgKnZz
aGFkZXIgPSBjcmVhdGVWZXJ0ZXhTaGFkZXIoKERXT1JEKilmdW5jdGlvbiwgbGVuZ3RoKTsKKyAg
ICAgICAgICAgIGlmICh2c2hhZGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4
ZWN1dGFibGUgPSBuZXcgU2hhZGVyRXhlY3V0YWJsZTkoZnVuY3Rpb24sIGxlbmd0aCwgdnNoYWRl
cik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IHJ4OjpTSEFERVJfUElYRUw6CisgICAgICAgIHsKKyAgICAgICAgICAgIElEaXJlY3QzRFBpeGVs
U2hhZGVyOSAqcHNoYWRlciA9IGNyZWF0ZVBpeGVsU2hhZGVyKChEV09SRCopZnVuY3Rpb24sIGxl
bmd0aCk7CisgICAgICAgICAgICBpZiAocHNoYWRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBleGVjdXRhYmxlID0gbmV3IFNoYWRlckV4ZWN1dGFibGU5KGZ1bmN0aW9uLCBsZW5n
dGgsIHBzaGFkZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgcmV0dXJuIGV4ZWN1dGFibGU7Cit9CisKK1NoYWRlckV4ZWN1dGFibGUgKlJl
bmRlcmVyOTo6Y29tcGlsZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3Qg
Y2hhciAqc2hhZGVySExTTCwgcng6OlNoYWRlclR5cGUgdHlwZSkKK3sKKyAgICBjb25zdCBjaGFy
ICpwcm9maWxlID0gTlVMTDsKKworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNl
IHJ4OjpTSEFERVJfVkVSVEVYOgorICAgICAgICBwcm9maWxlID0gZ2V0TWFqb3JTaGFkZXJNb2Rl
bCgpID49IDMgPyAidnNfM18wIiA6ICJ2c18yXzAiOworICAgICAgICBicmVhazsKKyAgICAgIGNh
c2Ugcng6OlNIQURFUl9QSVhFTDoKKyAgICAgICAgcHJvZmlsZSA9IGdldE1ham9yU2hhZGVyTW9k
ZWwoKSA+PSAzID8gInBzXzNfMCIgOiAicHNfMl8wIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBk
ZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9CisKKyAgICBJRDNEQmxvYiAqYmluYXJ5ID0gKElEM0RCbG9iKiljb21waWxlVG9CaW5hcnko
aW5mb0xvZywgc2hhZGVySExTTCwgcHJvZmlsZSwgQU5HTEVfQ09NUElMRV9PUFRJTUlaQVRJT05f
TEVWRUwsIHRydWUpOworICAgIGlmICghYmluYXJ5KQorICAgICAgICByZXR1cm4gTlVMTDsKKwor
ICAgIFNoYWRlckV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBsb2FkRXhlY3V0YWJsZShiaW5hcnkt
PkdldEJ1ZmZlclBvaW50ZXIoKSwgYmluYXJ5LT5HZXRCdWZmZXJTaXplKCksIHR5cGUpOworICAg
IGJpbmFyeS0+UmVsZWFzZSgpOworCisgICAgcmV0dXJuIGV4ZWN1dGFibGU7Cit9CisKK2Jvb2wg
UmVuZGVyZXI5Ojpib3hGaWx0ZXIoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgSURpcmVjdDNE
U3VyZmFjZTkgKmRlc3QpCit7CisgICAgcmV0dXJuIG1CbGl0LT5ib3hGaWx0ZXIoc291cmNlLCBk
ZXN0KTsKK30KKworRDNEUE9PTCBSZW5kZXJlcjk6OmdldFRleHR1cmVQb29sKERXT1JEIHVzYWdl
KSBjb25zdAoreworICAgIGlmIChtRDNkOUV4ICE9IE5VTEwpCisgICAgeworICAgICAgICByZXR1
cm4gRDNEUE9PTF9ERUZBVUxUOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAo
ISh1c2FnZSAmIChEM0RVU0FHRV9ERVBUSFNURU5DSUwgfCBEM0RVU0FHRV9SRU5ERVJUQVJHRVQp
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEQzRFBPT0xfTUFOQUdFRDsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBEM0RQT09MX0RFRkFVTFQ7Cit9CisKK2Jvb2wgUmVu
ZGVyZXI5Ojpjb3B5VG9SZW5kZXJUYXJnZXQoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QsIElEaXJl
Y3QzRFN1cmZhY2U5ICpzb3VyY2UsIGJvb2wgZnJvbU1hbmFnZWQpCit7CisgICAgaWYgKHNvdXJj
ZSAmJiBkZXN0KQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBEM0RFUlJfT1VUT0ZW
SURFT01FTU9SWTsKKworICAgICAgICBpZiAoZnJvbU1hbmFnZWQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOworICAgICAgICAgICAgc291cmNlLT5HZXREZXNj
KCZkZXNjKTsKKworICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmYgPSAwOworICAg
ICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlT2Zmc2NyZWVuUGxhaW5TdXJmYWNlKGRl
c2MuV2lkdGgsIGRlc2MuSGVpZ2h0LCBkZXNjLkZvcm1hdCwgRDNEUE9PTF9TWVNURU1NRU0sICZz
dXJmLCBOVUxMKTsKKworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIEltYWdlOTo6Y29weUxvY2thYmxlU3VyZmFjZXMoc3Vy
Ziwgc291cmNlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5VcGRhdGVTdXJm
YWNlKHN1cmYsIE5VTEwsIGRlc3QsIE5VTEwpOworICAgICAgICAgICAgICAgIHN1cmYtPlJlbGVh
c2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgICAgIGVuZFNjZW5lKCk7CisgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5T
dHJldGNoUmVjdChzb3VyY2UsIE5VTEwsIGRlc3QsIE5VTEwsIEQzRFRFWEZfTk9ORSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09
IEVfT1VUT0ZNRU1PUlkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0ltYWdlICpSZW5kZXJlcjk6OmNyZWF0ZUlt
YWdlKCkKK3sKKyAgICByZXR1cm4gbmV3IEltYWdlOSgpOworfQorCit2b2lkIFJlbmRlcmVyOTo6
Z2VuZXJhdGVNaXBtYXAoSW1hZ2UgKmRlc3QsIEltYWdlICpzcmMpCit7CisgICAgSW1hZ2U5ICpz
cmM5ID0gSW1hZ2U5OjptYWtlSW1hZ2U5KHNyYyk7CisgICAgSW1hZ2U5ICpkc3Q5ID0gSW1hZ2U5
OjptYWtlSW1hZ2U5KGRlc3QpOworICAgIEltYWdlOTo6Z2VuZXJhdGVNaXBtYXAoZHN0OSwgc3Jj
OSk7Cit9CisKK1RleHR1cmVTdG9yYWdlICpSZW5kZXJlcjk6OmNyZWF0ZVRleHR1cmVTdG9yYWdl
MkQoU3dhcENoYWluICpzd2FwQ2hhaW4pCit7CisgICAgU3dhcENoYWluOSAqc3dhcENoYWluOSA9
IFN3YXBDaGFpbjk6Om1ha2VTd2FwQ2hhaW45KHN3YXBDaGFpbik7CisgICAgcmV0dXJuIG5ldyBU
ZXh0dXJlU3RvcmFnZTlfMkQodGhpcywgc3dhcENoYWluOSk7Cit9CisKK1RleHR1cmVTdG9yYWdl
ICpSZW5kZXJlcjk6OmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoaW50IGxldmVscywgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHTGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdl
OV8yRCh0aGlzLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxl
LCB3aWR0aCwgaGVpZ2h0KTsKK30KKworVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyOTo6Y3JlYXRl
VGV4dHVyZVN0b3JhZ2VDdWJlKGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xl
bnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgaW50IHNpemUpCit7CisgICAgcmV0dXJu
IG5ldyBUZXh0dXJlU3RvcmFnZTlfQ3ViZSh0aGlzLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB1
c2FnZSwgZm9yY2VSZW5kZXJhYmxlLCBzaXplKTsKK30KKworYm9vbCBSZW5kZXJlcjk6OmdldExV
SUQoTFVJRCAqYWRhcHRlckx1aWQpIGNvbnN0Cit7CisgICAgYWRhcHRlckx1aWQtPkhpZ2hQYXJ0
ID0gMDsKKyAgICBhZGFwdGVyTHVpZC0+TG93UGFydCA9IDA7CisKKyAgICBpZiAobUQzZDlFeCkK
KyAgICB7CisgICAgICAgIG1EM2Q5RXgtPkdldEFkYXB0ZXJMVUlEKG1BZGFwdGVyLCBhZGFwdGVy
THVpZCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJlcjkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzNDkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTItMjAx
MyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFJlbmRl
cmVyOS5oOiBEZWZpbmVzIGEgYmFjay1lbmQgc3BlY2lmaWMgY2xhc3MgZm9yIHRoZSBEM0Q5IHJl
bmRlcmVyLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUjlfSF8KKyNkZWZp
bmUgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUkVSOV9IXworCisjaW5jbHVkZSAiY29tbW9uL2Fu
Z2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWF0aHV0aWwuaCIKKyNpbmNsdWRlICJs
aWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvVmVydGV4RGVjbGFyYXRpb25DYWNoZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJn
ZXQuaCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBSZW5kZXJidWZmZXI7Cit9CisKK25hbWVz
cGFjZSByeAoreworY2xhc3MgVmVydGV4RGF0YU1hbmFnZXI7CitjbGFzcyBJbmRleERhdGFNYW5h
Z2VyOworY2xhc3MgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2U7CitzdHJ1Y3QgVHJhbnNs
YXRlZEF0dHJpYnV0ZTsKKworY2xhc3MgUmVuZGVyZXI5IDogcHVibGljIFJlbmRlcmVyCit7Cisg
IHB1YmxpYzoKKyAgICBSZW5kZXJlcjkoZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBIREMgaERjLCBi
b29sIHNvZnR3YXJlRGV2aWNlKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJlcjkoKTsKKworICAgIHN0
YXRpYyBSZW5kZXJlcjkgKm1ha2VSZW5kZXJlcjkoUmVuZGVyZXIgKnJlbmRlcmVyKTsKKworICAg
IHZpcnR1YWwgRUdMaW50IGluaXRpYWxpemUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVzZXREZXZp
Y2UoKTsKKworICAgIHZpcnR1YWwgaW50IGdlbmVyYXRlQ29uZmlncyhDb25maWdEZXNjICoqY29u
ZmlnRGVzY0xpc3QpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb25maWdzKENvbmZpZ0Rlc2Mg
KmNvbmZpZ0Rlc2NMaXN0KTsKKworICAgIHZvaWQgc3RhcnRTY2VuZSgpOworICAgIHZvaWQgZW5k
U2NlbmUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzeW5jKGJvb2wgYmxvY2spOworCisgICAgdmly
dHVhbCBTd2FwQ2hhaW4gKmNyZWF0ZVN3YXBDaGFpbihIV05EIHdpbmRvdywgSEFORExFIHNoYXJl
SGFuZGxlLCBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0
KTsKKworICAgIElEaXJlY3QzRFF1ZXJ5OSogYWxsb2NhdGVFdmVudFF1ZXJ5KCk7CisgICAgdm9p
ZCBmcmVlRXZlbnRRdWVyeShJRGlyZWN0M0RRdWVyeTkqIHF1ZXJ5KTsKKworICAgIC8vIHJlc291
cmNlIGNyZWF0aW9uCisgICAgSURpcmVjdDNEVmVydGV4U2hhZGVyOSAqY3JlYXRlVmVydGV4U2hh
ZGVyKGNvbnN0IERXT1JEICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCk7CisgICAgSURpcmVjdDNE
UGl4ZWxTaGFkZXI5ICpjcmVhdGVQaXhlbFNoYWRlcihjb25zdCBEV09SRCAqZnVuY3Rpb24sIHNp
emVfdCBsZW5ndGgpOworICAgIEhSRVNVTFQgY3JlYXRlVmVydGV4QnVmZmVyKFVJTlQgTGVuZ3Ro
LCBEV09SRCBVc2FnZSwgSURpcmVjdDNEVmVydGV4QnVmZmVyOSAqKnBwVmVydGV4QnVmZmVyKTsK
KyAgICBIUkVTVUxUIGNyZWF0ZUluZGV4QnVmZmVyKFVJTlQgTGVuZ3RoLCBEV09SRCBVc2FnZSwg
RDNERk9STUFUIEZvcm1hdCwgSURpcmVjdDNESW5kZXhCdWZmZXI5ICoqcHBJbmRleEJ1ZmZlcik7
CisjaWYgMAorICAgIHZvaWQgKmNyZWF0ZVRleHR1cmUyRCgpOworICAgIHZvaWQgKmNyZWF0ZVRl
eHR1cmVDdWJlKCk7CisgICAgdm9pZCAqY3JlYXRlUXVlcnkoKTsKKyAgICB2b2lkICpjcmVhdGVJ
bmRleEJ1ZmZlcigpOworICAgIHZvaWQgKmNyZWF0ZVZlcnRleGJ1ZmZlcigpOworCisgICAgLy8g
c3RhdGUgc2V0dXAKKyAgICB2b2lkIGFwcGx5U2hhZGVycygpOworICAgIHZvaWQgYXBwbHlDb25z
dGFudHMoKTsKKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXRTYW1wbGVyU3RhdGUoZ2w6OlNh
bXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxl
cik7CisgICAgdmlydHVhbCB2b2lkIHNldFRleHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGlu
dCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUpOworCisgICAgdmlydHVhbCB2b2lkIHNldFJh
c3Rlcml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVyaXplclN0YXRlICZyYXN0ZXJTdGF0ZSk7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEJsZW5kU3RhdGUoY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5k
U3RhdGUsIGNvbnN0IGdsOjpDb2xvciAmYmxlbmRDb2xvciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlTWFzayk7CisgICAgdmlydHVhbCB2b2lkIHNl
dERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZGVwdGhTdGVu
Y2lsU3RhdGUsIGludCBzdGVuY2lsUmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgc3RlbmNpbEJhY2tSZWYsIGJvb2wgZnJvbnRGYWNlQ0NXKTsKKworICAgIHZp
cnR1YWwgdm9pZCBzZXRTY2lzc29yUmVjdGFuZ2xlKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNjaXNz
b3IsIGJvb2wgZW5hYmxlZCk7CisgICAgdmlydHVhbCBib29sIHNldFZpZXdwb3J0KGNvbnN0IGds
OjpSZWN0YW5nbGUgJnZpZXdwb3J0LCBmbG9hdCB6TmVhciwgZmxvYXQgekZhciwgR0xlbnVtIGRy
YXdNb2RlLCBHTGVudW0gZnJvbnRGYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlnbm9yZVZpZXdwb3J0KTsKKworICAgIHZpcnR1YWwgYm9vbCBhcHBseVJlbmRlclRhcmdl
dChnbDo6RnJhbWVidWZmZXIgKmZyYW1lQnVmZmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlT
aGFkZXJzKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5KTsKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwbHlVbmlmb3JtcyhnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSwgZ2w6OlVu
aWZvcm1BcnJheSAqdW5pZm9ybUFycmF5KTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHlQcmltaXRp
dmVUeXBlKEdMZW51bSBwcmltaXRpdmVUeXBlLCBHTHNpemVpIGVsZW1lbnRDb3VudCk7CisgICAg
dmlydHVhbCBHTGVudW0gYXBwbHlWZXJ0ZXhCdWZmZXIoZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dy
YW1CaW5hcnksIGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgdmVydGV4QXR0cmlidXRlc1tdLCBHTGludCBm
aXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworICAgIHZpcnR1YWwgR0xl
bnVtIGFwcGx5SW5kZXhCdWZmZXIoY29uc3QgR0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICpl
bGVtZW50QXJyYXlCdWZmZXIsIEdMc2l6ZWkgY291bnQsIEdMZW51bSBtb2RlLCBHTGVudW0gdHlw
ZSwgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZvKTsKKworICAgIHZpcnR1YWwgdm9pZCBk
cmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcyk7
CisgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3Vu
dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVu
dEFycmF5QnVmZmVyLCBjb25zdCBUcmFuc2xhdGVkSW5kZXhEYXRhICZpbmRleEluZm8sIEdMc2l6
ZWkgaW5zdGFuY2VzKTsKKworICAgIHZpcnR1YWwgdm9pZCBjbGVhcihjb25zdCBnbDo6Q2xlYXJQ
YXJhbWV0ZXJzICZjbGVhclBhcmFtcywgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZUJ1ZmZlcik7CisK
KyAgICB2aXJ0dWFsIHZvaWQgbWFya0FsbFN0YXRlRGlydHkoKTsKKworICAgIC8vIGxvc3QgZGV2
aWNlCisgICAgdm9pZCBub3RpZnlEZXZpY2VMb3N0KCk7CisgICAgdmlydHVhbCBib29sIGlzRGV2
aWNlTG9zdCgpOworICAgIHZpcnR1YWwgYm9vbCB0ZXN0RGV2aWNlTG9zdChib29sIG5vdGlmeSk7
CisgICAgdmlydHVhbCBib29sIHRlc3REZXZpY2VSZXNldHRhYmxlKCk7CisKKyAgICAvLyBSZW5k
ZXJlciBjYXBhYmlsaXRpZXMKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpnZXREZXZpY2UoKSB7IHJl
dHVybiBtRGV2aWNlOyB9CisgICAgdmlydHVhbCBEV09SRCBnZXRBZGFwdGVyVmVuZG9yKCkgY29u
c3Q7CisgICAgdmlydHVhbCBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29u
c3Q7CisgICAgdmlydHVhbCBHVUlEIGdldEFkYXB0ZXJJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0QkdSQVRleHR1cmVTdXBwb3J0KCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGdldERYVDFUZXh0dXJlU3VwcG9ydCgpOworICAgIHZpcnR1YWwgYm9vbCBnZXREWFQz
VGV4dHVyZVN1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RFhUNVRleHR1cmVTdXBwb3J0
KCk7CisgICAgdmlydHVhbCBib29sIGdldEV2ZW50UXVlcnlTdXBwb3J0KCk7CisgICAgdmlydHVh
bCBib29sIGdldEZsb2F0MzJUZXh0dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wgKnJl
bmRlcmFibGUpOworICAgIHZpcnR1YWwgYm9vbCBnZXRGbG9hdDE2VGV4dHVyZVN1cHBvcnQoYm9v
bCAqZmlsdGVyaW5nLCBib29sICpyZW5kZXJhYmxlKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0THVt
aW5hbmNlVGV4dHVyZVN1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0THVtaW5hbmNlQWxw
aGFUZXh0dXJlU3VwcG9ydCgpOworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldE1heFZlcnRl
eFRleHR1cmVJbWFnZVVuaXRzKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0
TWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWdu
ZWQgaW50IGdldFJlc2VydmVkVmVydGV4VW5pZm9ybVZlY3RvcnMoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycygp
IGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldE1heEZyYWdtZW50VW5pZm9ybVZl
Y3RvcnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhWYXJ5aW5nVmVj
dG9ycygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXROb25Qb3dlcjJUZXh0dXJlU3VwcG9y
dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXREZXB0aFRleHR1cmVTdXBwb3J0KCkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBnZXRJbnN0YW5jaW5nU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBnZXRUZXh0dXJlRmlsdGVyQW5pc290cm9weVN1cHBvcnQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGZsb2F0IGdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGdldFNoYXJlSGFuZGxlU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBn
ZXREZXJpdmF0aXZlSW5zdHJ1Y3Rpb25TdXBwb3J0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGdldFBvc3RTdWJCdWZmZXJTdXBwb3J0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGludCBnZXRN
YWpvclNoYWRlck1vZGVsKCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCBnZXRNYXhQb2ludFNp
emUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBnZXRNYXhWaWV3cG9ydERpbWVuc2lvbigpIGNv
bnN0OworICAgIHZpcnR1YWwgaW50IGdldE1heFRleHR1cmVXaWR0aCgpIGNvbnN0OworICAgIHZp
cnR1YWwgaW50IGdldE1heFRleHR1cmVIZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
Z2V0MzJCaXRJbmRleFN1cHBvcnQoKSBjb25zdDsKKyAgICBEV09SRCBnZXRDYXBzRGVjbFR5cGVz
KCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgZ2V0TWluU3dhcEludGVydmFsKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBpbnQgZ2V0TWF4U3dhcEludGVydmFsKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFs
IEdMc2l6ZWkgZ2V0TWF4U3VwcG9ydGVkU2FtcGxlcygpIGNvbnN0OworICAgIGludCBnZXROZWFy
ZXN0U3VwcG9ydGVkU2FtcGxlcyhEM0RGT1JNQVQgZm9ybWF0LCBpbnQgcmVxdWVzdGVkKSBjb25z
dDsKKyAgICAKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhSZW5kZXJUYXJnZXRzKCkg
Y29uc3Q7CisKKyAgICBEM0RGT1JNQVQgQ29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdChHTGlu
dCBpbnRlcm5hbGZvcm1hdCk7CisKKyAgICAvLyBQaXhlbCBvcGVyYXRpb25zCisgICAgdmlydHVh
bCBib29sIGNvcHlUb1JlbmRlclRhcmdldChUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpkZXN0
LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpzb3VyY2UpOworICAgIHZpcnR1YWwgYm9vbCBj
b3B5VG9SZW5kZXJUYXJnZXQoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpkZXN0LCBUZXh0
dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKnNvdXJjZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgY29w
eUltYWdlKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2Uy
RCAqc3RvcmFnZSwgR0xpbnQgbGV2ZWwpOworICAgIHZpcnR1YWwgYm9vbCBjb3B5SW1hZ2UoZ2w6
OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVj
dCwgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKnN0b3Jh
Z2UsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKTsKKworICAgIHZpcnR1YWwgYm9vbCBibGl0
UmVjdChnbDo6RnJhbWVidWZmZXIgKnJlYWRUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJl
YWRSZWN0LCBnbDo6RnJhbWVidWZmZXIgKmRyYXdUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JmRyYXdSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJn
ZXQsIGJvb2wgYmxpdERlcHRoU3RlbmNpbCk7CisgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMo
Z2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgb3V0cHV0UGl0Y2gsIGJvb2wgcGFja1JldmVy
c2VSb3dPcmRlciwgR0xpbnQgcGFja0FsaWdubWVudCwgdm9pZCogcGl4ZWxzKTsKKworICAgIC8v
IFJlbmRlclRhcmdldCBjcmVhdGlvbgorICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpjcmVhdGVS
ZW5kZXJUYXJnZXQoU3dhcENoYWluICpzd2FwQ2hhaW4sIGJvb2wgZGVwdGgpOworICAgIHZpcnR1
YWwgUmVuZGVyVGFyZ2V0ICpjcmVhdGVSZW5kZXJUYXJnZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMsIGJvb2wgZGVwdGgpOworCisgICAgLy8g
U2hhZGVyIG9wZXJhdGlvbnMKKyAgICB2aXJ0dWFsIFNoYWRlckV4ZWN1dGFibGUgKmxvYWRFeGVj
dXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCByeDo6U2hhZGVyVHlw
ZSB0eXBlKTsKKyAgICB2aXJ0dWFsIFNoYWRlckV4ZWN1dGFibGUgKmNvbXBpbGVUb0V4ZWN1dGFi
bGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGNoYXIgKnNoYWRlckhMU0wsIHJ4OjpTaGFk
ZXJUeXBlIHR5cGUpOworCisgICAgLy8gSW1hZ2Ugb3BlcmF0aW9ucworICAgIHZpcnR1YWwgSW1h
Z2UgKmNyZWF0ZUltYWdlKCk7CisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwKEltYWdl
ICpkZXN0LCBJbWFnZSAqc291cmNlKTsKKyAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVh
dGVUZXh0dXJlU3RvcmFnZTJEKFN3YXBDaGFpbiAqc3dhcENoYWluKTsKKyAgICB2aXJ0dWFsIFRl
eHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKGludCBsZXZlbHMsIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNy
ZWF0ZVRleHR1cmVTdG9yYWdlQ3ViZShpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMZW51bSB1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIGludCBzaXplKTsKKworICAgIC8v
IEJ1ZmZlciBjcmVhdGlvbgorICAgIHZpcnR1YWwgVmVydGV4QnVmZmVyICpjcmVhdGVWZXJ0ZXhC
dWZmZXIoKTsKKyAgICB2aXJ0dWFsIEluZGV4QnVmZmVyICpjcmVhdGVJbmRleEJ1ZmZlcigpOwor
ICAgIHZpcnR1YWwgQnVmZmVyU3RvcmFnZSAqY3JlYXRlQnVmZmVyU3RvcmFnZSgpOworCisgICAg
Ly8gUXVlcnkgYW5kIEZlbmNlIGNyZWF0aW9uCisgICAgdmlydHVhbCBRdWVyeUltcGwgKmNyZWF0
ZVF1ZXJ5KEdMZW51bSB0eXBlKTsKKyAgICB2aXJ0dWFsIEZlbmNlSW1wbCAqY3JlYXRlRmVuY2Uo
KTsKKworICAgIC8vIEQzRDktcmVuZGVyZXIgc3BlY2lmaWMgbWV0aG9kcworICAgIGJvb2wgYm94
RmlsdGVyKElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0
KTsKKworICAgIEQzRFBPT0wgZ2V0VGV4dHVyZVBvb2woRFdPUkQgdXNhZ2UpIGNvbnN0OworCisg
ICAgdmlydHVhbCBib29sIGdldExVSUQoTFVJRCAqYWRhcHRlckx1aWQpIGNvbnN0OworCisgIHBy
aXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlcmVyOSk7CisKKyAgICB2
b2lkIGFwcGx5VW5pZm9ybW5mdihnbDo6VW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwgY29uc3QgR0xm
bG9hdCAqdik7CisgICAgdm9pZCBhcHBseVVuaWZvcm1uaXYoZ2w6OlVuaWZvcm0gKnRhcmdldFVu
aWZvcm0sIGNvbnN0IEdMaW50ICp2KTsKKyAgICB2b2lkIGFwcGx5VW5pZm9ybW5idihnbDo6VW5p
Zm9ybSAqdGFyZ2V0VW5pZm9ybSwgY29uc3QgR0xpbnQgKnYpOworCisgICAgdm9pZCBkcmF3TGlu
ZUxvb3AoR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywg
aW50IG1pbkluZGV4LCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIpOworICAgIHZvaWQg
ZHJhd0luZGV4ZWRQb2ludHMoR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9p
ZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyKTsKKworICAgIHZvaWQg
Z2V0TXVsdGlTYW1wbGVTdXBwb3J0KEQzREZPUk1BVCBmb3JtYXQsIGJvb2wgKm11bHRpU2FtcGxl
QXJyYXkpOworICAgIGJvb2wgY29weVRvUmVuZGVyVGFyZ2V0KElEaXJlY3QzRFN1cmZhY2U5ICpk
ZXN0LCBJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlLCBib29sIGZyb21NYW5hZ2VkKTsKKyAgICBn
bDo6UmVuZGVyYnVmZmVyICpnZXROdWxsQ29sb3JidWZmZXIoZ2w6OlJlbmRlcmJ1ZmZlciAqZGVw
dGhidWZmZXIpOworCisgICAgRDNEUE9PTCBnZXRCdWZmZXJQb29sKERXT1JEIHVzYWdlKSBjb25z
dDsKKworICAgIEhNT0RVTEUgbUQzZDlNb2R1bGU7CisgICAgSERDIG1EYzsKKworICAgIHZvaWQg
aW5pdGlhbGl6ZURldmljZSgpOworICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBnZXREZWZhdWx0
UHJlc2VudFBhcmFtZXRlcnMoKTsKKyAgICB2b2lkIHJlbGVhc2VEZXZpY2VSZXNvdXJjZXMoKTsK
KworICAgIFVJTlQgbUFkYXB0ZXI7CisgICAgRDNEREVWVFlQRSBtRGV2aWNlVHlwZTsKKyAgICBi
b29sIG1Tb2Z0d2FyZURldmljZTsgICAvLyBGSVhNRTogRGVwcmVjYXRlCisgICAgSURpcmVjdDNE
OSAqbUQzZDk7ICAvLyBBbHdheXMgdmFsaWQgYWZ0ZXIgc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlv
bi4KKyAgICBJRGlyZWN0M0Q5RXggKm1EM2Q5RXg7ICAvLyBNaWdodCBiZSBudWxsIGlmIEQzRDlF
eCBpcyBub3Qgc3VwcG9ydGVkLgorICAgIElEaXJlY3QzRERldmljZTkgKm1EZXZpY2U7CisgICAg
SURpcmVjdDNERGV2aWNlOUV4ICptRGV2aWNlRXg7ICAvLyBNaWdodCBiZSBudWxsIGlmIEQzRDlF
eCBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAgQmxpdCAqbUJsaXQ7CisKKyAgICBIV05EIG1EZXZp
Y2VXaW5kb3c7CisKKyAgICBib29sIG1EZXZpY2VMb3N0OworICAgIEQzRENBUFM5IG1EZXZpY2VD
YXBzOworICAgIEQzREFEQVBURVJfSURFTlRJRklFUjkgbUFkYXB0ZXJJZGVudGlmaWVyOworCisg
ICAgRDNEUFJJTUlUSVZFVFlQRSBtUHJpbWl0aXZlVHlwZTsKKyAgICBpbnQgbVByaW1pdGl2ZUNv
dW50OworICAgIEdMc2l6ZWkgbVJlcGVhdERyYXc7CisKKyAgICBib29sIG1TY2VuZVN0YXJ0ZWQ7
CisgICAgYm9vbCBtU3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlczsKKyAgICBib29sIG1TdXBwb3J0
c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5OworICAgIGludCBtTWluU3dhcEludGVydmFsOworICAg
IGludCBtTWF4U3dhcEludGVydmFsOworCisgICAgYm9vbCBtT2NjbHVzaW9uUXVlcnlTdXBwb3J0
OworICAgIGJvb2wgbUV2ZW50UXVlcnlTdXBwb3J0OworICAgIGJvb2wgbVZlcnRleFRleHR1cmVT
dXBwb3J0OworCisgICAgYm9vbCBtRGVwdGhUZXh0dXJlU3VwcG9ydDsKKworICAgIGJvb2wgbUZs
b2F0MzJUZXh0dXJlU3VwcG9ydDsKKyAgICBib29sIG1GbG9hdDMyRmlsdGVyU3VwcG9ydDsKKyAg
ICBib29sIG1GbG9hdDMyUmVuZGVyU3VwcG9ydDsKKworICAgIGJvb2wgbUZsb2F0MTZUZXh0dXJl
U3VwcG9ydDsKKyAgICBib29sIG1GbG9hdDE2RmlsdGVyU3VwcG9ydDsKKyAgICBib29sIG1GbG9h
dDE2UmVuZGVyU3VwcG9ydDsKKworICAgIGJvb2wgbURYVDFUZXh0dXJlU3VwcG9ydDsKKyAgICBi
b29sIG1EWFQzVGV4dHVyZVN1cHBvcnQ7CisgICAgYm9vbCBtRFhUNVRleHR1cmVTdXBwb3J0Owor
CisgICAgYm9vbCBtTHVtaW5hbmNlVGV4dHVyZVN1cHBvcnQ7CisgICAgYm9vbCBtTHVtaW5hbmNl
QWxwaGFUZXh0dXJlU3VwcG9ydDsKKworICAgIHN0ZDo6bWFwPEQzREZPUk1BVCwgYm9vbCAqPiBt
TXVsdGlTYW1wbGVTdXBwb3J0OworICAgIEdMc2l6ZWkgbU1heFN1cHBvcnRlZFNhbXBsZXM7CisK
KyAgICAvLyBjdXJyZW50IHJlbmRlciB0YXJnZXQgc3RhdGVzCisgICAgdW5zaWduZWQgaW50IG1B
cHBsaWVkUmVuZGVyVGFyZ2V0U2VyaWFsOworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZERlcHRo
YnVmZmVyU2VyaWFsOworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZFN0ZW5jaWxidWZmZXJTZXJp
YWw7CisgICAgYm9vbCBtRGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQ7CisgICAgYm9vbCBtUmVuZGVy
VGFyZ2V0RGVzY0luaXRpYWxpemVkOworICAgIHJ4OjpSZW5kZXJUYXJnZXQ6OkRlc2MgbVJlbmRl
clRhcmdldERlc2M7CisgICAgdW5zaWduZWQgaW50IG1DdXJTdGVuY2lsU2l6ZTsKKyAgICB1bnNp
Z25lZCBpbnQgbUN1ckRlcHRoU2l6ZTsKKworICAgIElEaXJlY3QzRFN0YXRlQmxvY2s5ICptTWFz
a2VkQ2xlYXJTYXZlZFN0YXRlOworCisgICAgLy8gcHJldmlvdXNseSBzZXQgcmVuZGVyIHN0YXRl
cworICAgIGJvb2wgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGU7CisgICAgZ2w6OkRlcHRoU3Rl
bmNpbFN0YXRlIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICBpbnQgbUN1clN0ZW5jaWxSZWY7
CisgICAgaW50IG1DdXJTdGVuY2lsQmFja1JlZjsKKyAgICBib29sIG1DdXJGcm9udEZhY2VDQ1c7
CisKKyAgICBib29sIG1Gb3JjZVNldFJhc3RlclN0YXRlOworICAgIGdsOjpSYXN0ZXJpemVyU3Rh
dGUgbUN1clJhc3RlclN0YXRlOworCisgICAgYm9vbCBtRm9yY2VTZXRTY2lzc29yOworICAgIGds
OjpSZWN0YW5nbGUgbUN1clNjaXNzb3I7CisgICAgYm9vbCBtU2Npc3NvckVuYWJsZWQ7CisKKyAg
ICBib29sIG1Gb3JjZVNldFZpZXdwb3J0OworICAgIGdsOjpSZWN0YW5nbGUgbUN1clZpZXdwb3J0
OworICAgIGZsb2F0IG1DdXJOZWFyOworICAgIGZsb2F0IG1DdXJGYXI7CisKKyAgICBib29sIG1G
b3JjZVNldEJsZW5kU3RhdGU7CisgICAgZ2w6OkJsZW5kU3RhdGUgbUN1ckJsZW5kU3RhdGU7Cisg
ICAgZ2w6OkNvbG9yIG1DdXJCbGVuZENvbG9yOworICAgIEdMdWludCBtQ3VyU2FtcGxlTWFzazsK
KworICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIHNhbXBsZXIgc3RhdGVzCisgICAgYm9vbCBtRm9y
Y2VTZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RF
WFRVUkVfSU1BR0VfVU5JVFNdOworICAgIGdsOjpTYW1wbGVyU3RhdGUgbUN1clZlcnRleFNhbXBs
ZXJTdGF0ZXNbZ2w6OklNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklU
U107CisKKyAgICBib29sIG1Gb3JjZVNldFBpeGVsU2FtcGxlclN0YXRlc1tnbDo6TUFYX1RFWFRV
UkVfSU1BR0VfVU5JVFNdOworICAgIGdsOjpTYW1wbGVyU3RhdGUgbUN1clBpeGVsU2FtcGxlclN0
YXRlc1tnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworCisgICAgLy8gQ3VycmVudGx5IGFw
cGxpZWQgdGV4dHVyZXMKKyAgICB1bnNpZ25lZCBpbnQgbUN1clZlcnRleFRleHR1cmVTZXJpYWxz
W2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworICAg
IHVuc2lnbmVkIGludCBtQ3VyUGl4ZWxUZXh0dXJlU2VyaWFsc1tnbDo6TUFYX1RFWFRVUkVfSU1B
R0VfVU5JVFNdOworCisgICAgdW5zaWduZWQgaW50IG1BcHBsaWVkSUJTZXJpYWw7CisgICAgdW5z
aWduZWQgaW50IG1BcHBsaWVkUHJvZ3JhbUJpbmFyeVNlcmlhbDsKKyAgICAKKyAgICByeDo6ZHhf
VmVydGV4Q29uc3RhbnRzIG1WZXJ0ZXhDb25zdGFudHM7CisgICAgcng6OmR4X1BpeGVsQ29uc3Rh
bnRzIG1QaXhlbENvbnN0YW50czsKKyAgICBib29sIG1EeFVuaWZvcm1zRGlydHk7CisKKyAgICAv
LyBBIHBvb2wgb2YgZXZlbnQgcXVlcmllcyB0aGF0IGFyZSBjdXJyZW50bHkgdW51c2VkLgorICAg
IHN0ZDo6dmVjdG9yPElEaXJlY3QzRFF1ZXJ5OSo+IG1FdmVudFF1ZXJ5UG9vbDsKKyAgICBWZXJ0
ZXhTaGFkZXJDYWNoZSBtVmVydGV4U2hhZGVyQ2FjaGU7CisgICAgUGl4ZWxTaGFkZXJDYWNoZSBt
UGl4ZWxTaGFkZXJDYWNoZTsKKworICAgIFZlcnRleERhdGFNYW5hZ2VyICptVmVydGV4RGF0YU1h
bmFnZXI7CisgICAgVmVydGV4RGVjbGFyYXRpb25DYWNoZSBtVmVydGV4RGVjbGFyYXRpb25DYWNo
ZTsKKworICAgIEluZGV4RGF0YU1hbmFnZXIgKm1JbmRleERhdGFNYW5hZ2VyOworICAgIFN0cmVh
bWluZ0luZGV4QnVmZmVySW50ZXJmYWNlICptTGluZUxvb3BJQjsKKworICAgIGVudW0geyBOVU1f
TlVMTF9DT0xPUkJVRkZFUl9DQUNIRV9FTlRSSUVTID0gMTIgfTsKKyAgICBzdHJ1Y3QgTnVsbENv
bG9yYnVmZmVyQ2FjaGVFbnRyeQorICAgIHsKKyAgICAgICAgVUlOVCBscnVDb3VudDsKKyAgICAg
ICAgaW50IHdpZHRoOworICAgICAgICBpbnQgaGVpZ2h0OworICAgICAgICBnbDo6UmVuZGVyYnVm
ZmVyICpidWZmZXI7CisgICAgfSBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbTlVNX05VTExfQ09MT1JC
VUZGRVJfQ0FDSEVfRU5UUklFU107CisgICAgVUlOVCBtTWF4TnVsbENvbG9yYnVmZmVyTFJVOwor
Cit9OworCit9CisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUkVSOV9IXwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJl
cjExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzNTI3IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIFJlbmRlcmVyMTEuY3BwOiBJbXBsZW1lbnRzIGEgYmFjay1lbmQg
c3BlY2lmaWMgY2xhc3MgZm9yIHRoZSBEM0QxMSByZW5kZXJlci4KKworI2luY2x1ZGUgImxpYkdM
RVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9CdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9SZW5kZXJCdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIx
MS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmgiCisjaW5jbHVkZSAi
bGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUxMS5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9JbWFnZTExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjEx
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL1ZlcnRleERhdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvVGV4dHVyZVN0b3JhZ2UxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9RdWVy
eTExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlMTEuaCIKKworI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdoMTF2cy5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJv
dWdocmdiYTExcHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21w
aWxlZC9wYXNzdGhyb3VnaHJnYjExcHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
c2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTExcHMuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bWFscGhhMTFwcy5oIgor
CisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXIxMXZz
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJz
aW5nbGUxMXBzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGls
ZWQvY2xlYXJtdWx0aXBsZTExcHMuaCIKKworI2luY2x1ZGUgImxpYkVHTC9EaXNwbGF5LmgiCisK
KyNpZmRlZiBfREVCVUcKKy8vIHRoaXMgZmxhZyBlbmFibGVzIHN1cHByZXNzaW5nIHNvbWUgc3B1
cmlvdXMgd2FybmluZ3MgdGhhdCBwb3AgdXAgaW4gY2VydGFpbiBXZWJHTCBzYW1wbGVzCisvLyBh
bmQgY29uZm9ybWFuY2UgdGVzdHMuIHRvIGVuYWJsZSBhbGwgd2FybmluZ3MsIHJlbW92ZSB0aGlz
IGRlZmluZS4KKyNkZWZpbmUgQU5HTEVfU1VQUFJFU1NfRDNEMTFfSEFaQVJEX1dBUk5JTkdTIDEK
KyNlbmRpZgorCituYW1lc3BhY2UgcngKK3sKK3N0YXRpYyBjb25zdCBEWEdJX0ZPUk1BVCBSZW5k
ZXJUYXJnZXRGb3JtYXRzW10gPQorICAgIHsKKyAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThf
VU5PUk0sCisgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNCisgICAgfTsKKworc3Rh
dGljIGNvbnN0IERYR0lfRk9STUFUIERlcHRoU3RlbmNpbEZvcm1hdHNbXSA9CisgICAgeworICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1f
UzhfVUlOVCwKKyAgICAgICAgRFhHSV9GT1JNQVRfRDE2X1VOT1JNCisgICAgfTsKKworZW51bQor
eworICAgIE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTX1ZURl9TTTQgPSAxNgorfTsKKworUmVuZGVy
ZXIxMTo6UmVuZGVyZXIxMShlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIEhEQyBoRGMpIDogUmVuZGVy
ZXIoZGlzcGxheSksIG1EYyhoRGMpCit7CisgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gTlVMTDsK
KyAgICBtSW5kZXhEYXRhTWFuYWdlciA9IE5VTEw7CisKKyAgICBtTGluZUxvb3BJQiA9IE5VTEw7
CisgICAgbVRyaWFuZ2xlRmFuSUIgPSBOVUxMOworCisgICAgbUNvcHlSZXNvdXJjZXNJbml0aWFs
aXplZCA9IGZhbHNlOworICAgIG1Db3B5VkIgPSBOVUxMOworICAgIG1Db3B5U2FtcGxlciA9IE5V
TEw7CisgICAgbUNvcHlJTCA9IE5VTEw7CisgICAgbUNvcHlWUyA9IE5VTEw7CisgICAgbUNvcHlS
R0JBUFMgPSBOVUxMOworICAgIG1Db3B5UkdCUFMgPSBOVUxMOworICAgIG1Db3B5THVtUFMgPSBO
VUxMOworICAgIG1Db3B5THVtQWxwaGFQUyA9IE5VTEw7CisKKyAgICBtQ2xlYXJSZXNvdXJjZXNJ
bml0aWFsaXplZCA9IGZhbHNlOworICAgIG1DbGVhclZCID0gTlVMTDsKKyAgICBtQ2xlYXJJTCA9
IE5VTEw7CisgICAgbUNsZWFyVlMgPSBOVUxMOworICAgIG1DbGVhclNpbmdsZVBTID0gTlVMTDsK
KyAgICBtQ2xlYXJNdWx0aXBsZVBTID0gTlVMTDsKKyAgICBtQ2xlYXJTY2lzc29yUlMgPSBOVUxM
OworICAgIG1DbGVhck5vU2Npc3NvclJTID0gTlVMTDsKKworICAgIG1TeW5jUXVlcnkgPSBOVUxM
OworCisgICAgbUQzZDExTW9kdWxlID0gTlVMTDsKKyAgICBtRHhnaU1vZHVsZSA9IE5VTEw7CisK
KyAgICBtRGV2aWNlTG9zdCA9IGZhbHNlOworCisgICAgbU1heFN1cHBvcnRlZFNhbXBsZXMgPSAw
OworCisgICAgbURldmljZSA9IE5VTEw7CisgICAgbURldmljZUNvbnRleHQgPSBOVUxMOworICAg
IG1EeGdpQWRhcHRlciA9IE5VTEw7CisgICAgbUR4Z2lGYWN0b3J5ID0gTlVMTDsKKworICAgIG1E
cml2ZXJDb25zdGFudEJ1ZmZlclZTID0gTlVMTDsKKyAgICBtRHJpdmVyQ29uc3RhbnRCdWZmZXJQ
UyA9IE5VTEw7CisKKyAgICBtQkdSQVRleHR1cmVTdXBwb3J0ID0gZmFsc2U7CisKKyAgICBtSXNH
ZW9tZXRyeVNoYWRlckFjdGl2ZSA9IGZhbHNlOworfQorCitSZW5kZXJlcjExOjp+UmVuZGVyZXIx
MSgpCit7CisgICAgcmVsZWFzZSgpOworfQorCitSZW5kZXJlcjExICpSZW5kZXJlcjExOjptYWtl
UmVuZGVyZXIxMShSZW5kZXJlciAqcmVuZGVyZXIpCit7CisgICAgQVNTRVJUKEhBU19EWU5BTUlD
X1RZUEUocng6OlJlbmRlcmVyMTEqLCByZW5kZXJlcikpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxyeDo6UmVuZGVyZXIxMSo+KHJlbmRlcmVyKTsKK30KKworI2lmbmRlZiBfX2QzZDExXzFfaF9f
CisjZGVmaW5lIEQzRDExX01FU1NBR0VfSURfREVWSUNFX0RSQVdfUkVOREVSVEFSR0VUVklFV19O
T1RfU0VUICgoRDNEMTFfTUVTU0FHRV9JRCkzMTQ2MDgxKQorI2VuZGlmCisKK0VHTGludCBSZW5k
ZXJlcjExOjppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIWluaXRpYWxpemVDb21waWxlcigpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAgfQorCisgICAg
bUR4Z2lNb2R1bGUgPSBMb2FkTGlicmFyeShURVhUKCJkeGdpLmRsbCIpKTsKKyAgICBtRDNkMTFN
b2R1bGUgPSBMb2FkTGlicmFyeShURVhUKCJkM2QxMS5kbGwiKSk7CisKKyAgICBpZiAobUQzZDEx
TW9kdWxlID09IE5VTEwgfHwgbUR4Z2lNb2R1bGUgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIEVS
UigiQ291bGQgbm90IGxvYWQgRDNEMTEgb3IgRFhHSSBsaWJyYXJ5IC0gYWJvcnRpbmchXG4iKTsK
KyAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAgfQorCisgICAgLy8gY3Jl
YXRlIHRoZSBEM0QxMSBkZXZpY2UKKyAgICBBU1NFUlQobURldmljZSA9PSBOVUxMKTsKKyAgICBQ
Rk5fRDNEMTFfQ1JFQVRFX0RFVklDRSBEM0QxMUNyZWF0ZURldmljZSA9IChQRk5fRDNEMTFfQ1JF
QVRFX0RFVklDRSlHZXRQcm9jQWRkcmVzcyhtRDNkMTFNb2R1bGUsICJEM0QxMUNyZWF0ZURldmlj
ZSIpOworCisgICAgaWYgKEQzRDExQ3JlYXRlRGV2aWNlID09IE5VTEwpCisgICAgeworICAgICAg
ICBFUlIoIkNvdWxkIG5vdCByZXRyaWV2ZSBEM0QxMUNyZWF0ZURldmljZSBhZGRyZXNzIC0gYWJv
cnRpbmchXG4iKTsKKyAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAgfQor
CisgICAgRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsc1tdID0KKyAgICB7CisgICAgICAg
IEQzRF9GRUFUVVJFX0xFVkVMXzExXzAsCisgICAgICAgIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzEs
CisgICAgICAgIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzAsCisgICAgfTsKKworICAgIEhSRVNVTFQg
cmVzdWx0ID0gU19PSzsKKworI2lmZGVmIF9ERUJVRworICAgIHJlc3VsdCA9IEQzRDExQ3JlYXRl
RGV2aWNlKE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEX0RSSVZFUl9U
WVBFX0hBUkRXQVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfQ1JFQVRFX0RFVklDRV9ERUJVRywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlTGV2ZWxzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFycmF5U2l6ZShmZWF0dXJlTGV2ZWxzKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEM0QxMV9TREtfVkVSU0lPTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmbURldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
bUZlYXR1cmVMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbURldmljZUNv
bnRleHQpOworCisgICAgaWYgKCFtRGV2aWNlIHx8IEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAg
ICAgICAgRVJSKCJGYWlsZWQgY3JlYXRpbmcgRGVidWcgRDNEMTEgZGV2aWNlIC0gZmFsbGluZyBi
YWNrIHRvIHJlbGVhc2UgcnVudGltZS5cbiIpOworICAgIH0KKworICAgIGlmICghbURldmljZSB8
fCBGQUlMRUQocmVzdWx0KSkKKyNlbmRpZgorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gRDNEMTFD
cmVhdGVEZXZpY2UoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNE
X0RSSVZFUl9UWVBFX0hBUkRXQVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlTGV2ZWxzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBcnJheVNpemUoZmVhdHVyZUxldmVscyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX1NES19WRVJTSU9OLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmbURldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJm1GZWF0dXJlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZtRGV2aWNlQ29udGV4dCk7CisKKyAgICAgICAgaWYgKCFtRGV2aWNlIHx8IEZBSUxF
RChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUg
RDNEMTEgZGV2aWNlIC0gYWJvcnRpbmchXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBFR0xfTk9U
X0lOSVRJQUxJWkVEOyAgIC8vIENsZWFudXAgZG9uZSBieSBkZXN0cnVjdG9yIHRocm91Z2ggZ2xE
ZXN0cm95UmVuZGVyZXIKKyAgICAgICAgfQorICAgIH0KKworICAgIElEWEdJRGV2aWNlICpkeGdp
RGV2aWNlID0gTlVMTDsKKyAgICByZXN1bHQgPSBtRGV2aWNlLT5RdWVyeUludGVyZmFjZShfX3V1
aWRvZihJRFhHSURldmljZSksICh2b2lkKiopJmR4Z2lEZXZpY2UpOworCisgICAgaWYgKEZBSUxF
RChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgcXVlcnkgRFhHSSBkZXZp
Y2UgLSBhYm9ydGluZyFcbiIpOworICAgICAgICByZXR1cm4gRUdMX05PVF9JTklUSUFMSVpFRDsK
KyAgICB9CisKKyAgICByZXN1bHQgPSBkeGdpRGV2aWNlLT5HZXRQYXJlbnQoX191dWlkb2YoSURY
R0lBZGFwdGVyKSwgKHZvaWQqKikmbUR4Z2lBZGFwdGVyKTsKKworICAgIGlmIChGQUlMRUQocmVz
dWx0KSkKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IHJldHJpZXZlIERYR0kgYWRhcHRl
ciAtIGFib3J0aW5nIVxuIik7CisgICAgICAgIHJldHVybiBFR0xfTk9UX0lOSVRJQUxJWkVEOwor
ICAgIH0KKworICAgIGR4Z2lEZXZpY2UtPlJlbGVhc2UoKTsKKworICAgIG1EeGdpQWRhcHRlci0+
R2V0RGVzYygmbUFkYXB0ZXJEZXNjcmlwdGlvbik7CisgICAgbWVtc2V0KG1EZXNjcmlwdGlvbiwg
MCwgc2l6ZW9mKG1EZXNjcmlwdGlvbikpOworICAgIHdjc3RvbWJzKG1EZXNjcmlwdGlvbiwgbUFk
YXB0ZXJEZXNjcmlwdGlvbi5EZXNjcmlwdGlvbiwgc2l6ZW9mKG1EZXNjcmlwdGlvbikgLSAxKTsK
KworICAgIHJlc3VsdCA9IG1EeGdpQWRhcHRlci0+R2V0UGFyZW50KF9fdXVpZG9mKElEWEdJRmFj
dG9yeSksICh2b2lkKiopJm1EeGdpRmFjdG9yeSk7CisKKyAgICBpZiAoIW1EeGdpRmFjdG9yeSB8
fCBGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBE
WEdJIGZhY3RvcnkgLSBhYm9ydGluZyFcbiIpOworICAgICAgICByZXR1cm4gRUdMX05PVF9JTklU
SUFMSVpFRDsKKyAgICB9CisKKyAgICAvLyBEaXNhYmxlIHNvbWUgc3B1cmlvdXMgRDNEMTEgZGVi
dWcgd2FybmluZ3MgdG8gcHJldmVudCB0aGVtIGZyb20gZmxvb2RpbmcgdGhlIG91dHB1dCBsb2cK
KyNpZiBkZWZpbmVkKEFOR0xFX1NVUFBSRVNTX0QzRDExX0hBWkFSRF9XQVJOSU5HUykgJiYgZGVm
aW5lZChfREVCVUcpCisgICAgSUQzRDExSW5mb1F1ZXVlICppbmZvUXVldWU7CisgICAgcmVzdWx0
ID0gbURldmljZS0+UXVlcnlJbnRlcmZhY2UoX191dWlkb2YoSUQzRDExSW5mb1F1ZXVlKSwgICh2
b2lkICoqKSZpbmZvUXVldWUpOworCisgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgIHsK
KyAgICAgICAgRDNEMTFfTUVTU0FHRV9JRCBoaWRlTWVzc2FnZXNbXSA9CisgICAgICAgIHsKKyAg
ICAgICAgICAgIEQzRDExX01FU1NBR0VfSURfREVWSUNFX09NU0VUUkVOREVSVEFSR0VUU19IQVpB
UkQsCisgICAgICAgICAgICBEM0QxMV9NRVNTQUdFX0lEX0RFVklDRV9QU1NFVFNIQURFUlJFU09V
UkNFU19IQVpBUkQsCisgICAgICAgICAgICBEM0QxMV9NRVNTQUdFX0lEX0RFVklDRV9EUkFXX1JF
TkRFUlRBUkdFVFZJRVdfTk9UX1NFVAorICAgICAgICB9OworCisgICAgICAgIEQzRDExX0lORk9f
UVVFVUVfRklMVEVSIGZpbHRlciA9IHswfTsKKyAgICAgICAgZmlsdGVyLkRlbnlMaXN0Lk51bUlE
cyA9IEFycmF5U2l6ZShoaWRlTWVzc2FnZXMpOworICAgICAgICBmaWx0ZXIuRGVueUxpc3QucElE
TGlzdCA9IGhpZGVNZXNzYWdlczsKKworICAgICAgICBpbmZvUXVldWUtPkFkZFN0b3JhZ2VGaWx0
ZXJFbnRyaWVzKCZmaWx0ZXIpOworCisgICAgICAgIGluZm9RdWV1ZS0+UmVsZWFzZSgpOworICAg
IH0KKyNlbmRpZgorCisgICAgdW5zaWduZWQgaW50IG1heFN1cHBvcnRlZFNhbXBsZXMgPSAwOwor
ICAgIHVuc2lnbmVkIGludCBydEZvcm1hdENvdW50ID0gQXJyYXlTaXplKFJlbmRlclRhcmdldEZv
cm1hdHMpOworICAgIHVuc2lnbmVkIGludCBkc0Zvcm1hdENvdW50ID0gQXJyYXlTaXplKERlcHRo
U3RlbmNpbEZvcm1hdHMpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcnRGb3Jt
YXRDb3VudCArIGRzRm9ybWF0Q291bnQ7ICsraSkKKyAgICB7CisgICAgICAgIERYR0lfRk9STUFU
IGZvcm1hdCA9IChpIDwgcnRGb3JtYXRDb3VudCkgPyBSZW5kZXJUYXJnZXRGb3JtYXRzW2ldIDog
RGVwdGhTdGVuY2lsRm9ybWF0c1tpIC0gcnRGb3JtYXRDb3VudF07CisgICAgICAgIGlmIChmb3Jt
YXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKKyAgICAgICAgeworICAgICAgICAgICAgVUlOVCBm
b3JtYXRTdXBwb3J0OworICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q2hlY2tGb3JtYXRT
dXBwb3J0KGZvcm1hdCwgJmZvcm1hdFN1cHBvcnQpOworICAgICAgICAgICAgaWYgKFNVQ0NFRURF
RChyZXN1bHQpICYmIChmb3JtYXRTdXBwb3J0ICYgRDNEMTFfRk9STUFUX1NVUFBPUlRfTVVMVElT
QU1QTEVfUkVOREVSVEFSR0VUKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBNdWx0
aXNhbXBsZVN1cHBvcnRJbmZvIHN1cHBvcnRJbmZvOworCisgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaiA9IDE7IGogPD0gRDNEMTFfTUFYX01VTFRJU0FNUExFX1NBTVBMRV9DT1VO
VDsgaisrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
bURldmljZS0+Q2hlY2tNdWx0aXNhbXBsZVF1YWxpdHlMZXZlbHMoZm9ybWF0LCBqLCAmc3VwcG9y
dEluZm8ucXVhbGl0eUxldmVsc1tqIC0gMV0pOworICAgICAgICAgICAgICAgICAgICBpZiAoU1VD
Q0VFREVEKHJlc3VsdCkgJiYgc3VwcG9ydEluZm8ucXVhbGl0eUxldmVsc1tqIC0gMV0gPiAwKQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhTdXBwb3J0
ZWRTYW1wbGVzID0gc3RkOjptYXgoaiwgbWF4U3VwcG9ydGVkU2FtcGxlcyk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0SW5mby5xdWFsaXR5TGV2ZWxzW2og
LSAxXSA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBtTXVsdGlzYW1wbGVTdXBwb3J0TWFwLmluc2VydChzdGQ6Om1ha2VfcGFp
cihmb3JtYXQsIHN1cHBvcnRJbmZvKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgbU1heFN1cHBvcnRlZFNhbXBsZXMgPSBtYXhTdXBwb3J0ZWRTYW1wbGVzOworCisgICAg
aW5pdGlhbGl6ZURldmljZSgpOworCisgICAgLy8gQkdSQSB0ZXh0dXJlIHN1cHBvcnQgaXMgb3B0
aW9uYWwgaW4gZmVhdHVyZSBsZXZlbHMgMTAgYW5kIDEwXzEKKyAgICBVSU5UIGZvcm1hdFN1cHBv
cnQ7CisgICAgcmVzdWx0ID0gbURldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KERYR0lfRk9STUFU
X0I4RzhSOEE4X1VOT1JNLCAmZm9ybWF0U3VwcG9ydCk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQorICAgIHsKKyAgICAgICAgRVJSKCJFcnJvciBjaGVja2luZyBCR1JBIGZvcm1hdCBzdXBwb3J0
OiAweCUwOFgiLCByZXN1bHQpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjb25z
dCBpbnQgZmxhZ3MgPSAoRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTJEIHwgRDNEMTFfRk9S
TUFUX1NVUFBPUlRfUkVOREVSX1RBUkdFVCk7CisgICAgICAgIG1CR1JBVGV4dHVyZVN1cHBvcnQg
PSAoZm9ybWF0U3VwcG9ydCAmIGZsYWdzKSA9PSBmbGFnczsKKyAgICB9CisKKyAgICAvLyBDaGVj
ayBmbG9hdGluZyBwb2ludCB0ZXh0dXJlIHN1cHBvcnQKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgaW50IHJlcXVpcmVkVGV4dHVyZUZsYWdzID0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVS
RTJEIHwgRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRUNVQkU7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGludCByZXF1aXJlZFJlbmRlcmFibGVGbGFncyA9IEQzRDExX0ZPUk1BVF9TVVBQ
T1JUX1JFTkRFUl9UQVJHRVQ7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCByZXF1aXJl
ZEZpbHRlckZsYWdzID0gRDNEMTFfRk9STUFUX1NVUFBPUlRfU0hBREVSX1NBTVBMRTsKKworICAg
IERYR0lfRk9STUFUIGZsb2F0MTZGb3JtYXRzW10gPQorICAgIHsKKyAgICAgICAgRFhHSV9GT1JN
QVRfUjE2X0ZMT0FULAorICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsCisgICAgICAg
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICB9OworCisgICAgRFhHSV9GT1JN
QVQgZmxvYXQzMkZvcm1hdHNbXSA9CisgICAgeworICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxP
QVQsCisgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwKKyAgICAgICAgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyX0ZMT0FULAorICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxP
QVQsCisgICAgfTsKKworICAgIG1GbG9hdDE2VGV4dHVyZVN1cHBvcnQgPSB0cnVlOworICAgIG1G
bG9hdDE2RmlsdGVyU3VwcG9ydCA9IHRydWU7CisgICAgbUZsb2F0MTZSZW5kZXJTdXBwb3J0ID0g
dHJ1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IEFycmF5U2l6ZShmbG9hdDE2
Rm9ybWF0cyk7IGkrKykKKyAgICB7CisgICAgICAgIGlmIChTVUNDRUVERUQobURldmljZS0+Q2hl
Y2tGb3JtYXRTdXBwb3J0KGZsb2F0MTZGb3JtYXRzW2ldLCAmZm9ybWF0U3VwcG9ydCkpKQorICAg
ICAgICB7CisgICAgICAgICAgICBtRmxvYXQxNlRleHR1cmVTdXBwb3J0ID0gbUZsb2F0MTZUZXh0
dXJlU3VwcG9ydCAmJiAoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkVGV4dHVyZUZsYWdzKSA9PSBy
ZXF1aXJlZFRleHR1cmVGbGFnczsKKyAgICAgICAgICAgIG1GbG9hdDE2RmlsdGVyU3VwcG9ydCA9
IG1GbG9hdDE2RmlsdGVyU3VwcG9ydCAmJiAoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkRmlsdGVy
RmxhZ3MpID09IHJlcXVpcmVkRmlsdGVyRmxhZ3M7CisgICAgICAgICAgICBtRmxvYXQxNlJlbmRl
clN1cHBvcnQgPSBtRmxvYXQxNlJlbmRlclN1cHBvcnQgJiYgKGZvcm1hdFN1cHBvcnQgJiByZXF1
aXJlZFJlbmRlcmFibGVGbGFncykgPT0gcmVxdWlyZWRSZW5kZXJhYmxlRmxhZ3M7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRmxvYXQxNlRleHR1cmVT
dXBwb3J0ID0gZmFsc2U7CisgICAgICAgICAgICBtRmxvYXQxNlJlbmRlclN1cHBvcnQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIG1GbG9hdDE2RmlsdGVyU3VwcG9ydCA9IGZhbHNlOworICAgICAgICB9
CisgICAgfQorCisgICAgbUZsb2F0MzJUZXh0dXJlU3VwcG9ydCA9IHRydWU7CisgICAgbUZsb2F0
MzJGaWx0ZXJTdXBwb3J0ID0gdHJ1ZTsKKyAgICBtRmxvYXQzMlJlbmRlclN1cHBvcnQgPSB0cnVl
OworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKGZsb2F0MzJGb3Jt
YXRzKTsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChtRGV2aWNlLT5DaGVja0Zv
cm1hdFN1cHBvcnQoZmxvYXQzMkZvcm1hdHNbaV0sICZmb3JtYXRTdXBwb3J0KSkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1GbG9hdDMyVGV4dHVyZVN1cHBvcnQgPSBtRmxvYXQzMlRleHR1cmVT
dXBwb3J0ICYmIChmb3JtYXRTdXBwb3J0ICYgcmVxdWlyZWRUZXh0dXJlRmxhZ3MpID09IHJlcXVp
cmVkVGV4dHVyZUZsYWdzOworICAgICAgICAgICAgbUZsb2F0MzJGaWx0ZXJTdXBwb3J0ID0gbUZs
b2F0MzJGaWx0ZXJTdXBwb3J0ICYmIChmb3JtYXRTdXBwb3J0ICYgcmVxdWlyZWRGaWx0ZXJGbGFn
cykgPT0gcmVxdWlyZWRGaWx0ZXJGbGFnczsKKyAgICAgICAgICAgIG1GbG9hdDMyUmVuZGVyU3Vw
cG9ydCA9IG1GbG9hdDMyUmVuZGVyU3VwcG9ydCAmJiAoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVk
UmVuZGVyYWJsZUZsYWdzKSA9PSByZXF1aXJlZFJlbmRlcmFibGVGbGFnczsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1GbG9hdDMyVGV4dHVyZVN1cHBv
cnQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1GbG9hdDMyRmlsdGVyU3VwcG9ydCA9IGZhbHNlOwor
ICAgICAgICAgICAgbUZsb2F0MzJSZW5kZXJTdXBwb3J0ID0gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBDaGVjayBjb21wcmVzc2VkIHRleHR1cmUgc3VwcG9ydAorICAgIGNvbnN0
IHVuc2lnbmVkIGludCByZXF1aXJlZENvbXByZXNzZWRUZXh0dXJlRmxhZ3MgPSBEM0QxMV9GT1JN
QVRfU1VQUE9SVF9URVhUVVJFMkQ7CisKKyAgICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNoZWNr
Rm9ybWF0U3VwcG9ydChEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sICZmb3JtYXRTdXBwb3J0KSkpCisg
ICAgeworICAgICAgICBtRFhUMVRleHR1cmVTdXBwb3J0ID0gKGZvcm1hdFN1cHBvcnQgJiByZXF1
aXJlZENvbXByZXNzZWRUZXh0dXJlRmxhZ3MpID09IHJlcXVpcmVkQ29tcHJlc3NlZFRleHR1cmVG
bGFnczsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbURYVDFUZXh0dXJlU3VwcG9y
dCA9IGZhbHNlOworICAgIH0KKworICAgIGlmIChTVUNDRUVERUQobURldmljZS0+Q2hlY2tGb3Jt
YXRTdXBwb3J0KERYR0lfRk9STUFUX0JDM19VTk9STSwgJmZvcm1hdFN1cHBvcnQpKSkKKyAgICB7
CisgICAgICAgIG1EWFQzVGV4dHVyZVN1cHBvcnQgPSAoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVk
Q29tcHJlc3NlZFRleHR1cmVGbGFncykgPT0gcmVxdWlyZWRDb21wcmVzc2VkVGV4dHVyZUZsYWdz
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtRFhUM1RleHR1cmVTdXBwb3J0ID0g
ZmFsc2U7CisgICAgfQorCisgICAgaWYgKFNVQ0NFRURFRChtRGV2aWNlLT5DaGVja0Zvcm1hdFN1
cHBvcnQoRFhHSV9GT1JNQVRfQkM1X1VOT1JNLCAmZm9ybWF0U3VwcG9ydCkpKQorICAgIHsKKyAg
ICAgICAgbURYVDVUZXh0dXJlU3VwcG9ydCA9IChmb3JtYXRTdXBwb3J0ICYgcmVxdWlyZWRDb21w
cmVzc2VkVGV4dHVyZUZsYWdzKSA9PSByZXF1aXJlZENvbXByZXNzZWRUZXh0dXJlRmxhZ3M7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1EWFQ1VGV4dHVyZVN1cHBvcnQgPSBmYWxz
ZTsKKyAgICB9CisKKyAgICAvLyBDaGVjayBkZXB0aCB0ZXh0dXJlIHN1cHBvcnQKKyAgICBEWEdJ
X0ZPUk1BVCBkZXB0aFRleHR1cmVGb3JtYXRzW10gPQorICAgIHsKKyAgICAgICAgRFhHSV9GT1JN
QVRfRDE2X1VOT1JNLAorICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAg
ICB9OworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCByZXF1aXJlZERlcHRoVGV4dHVy
ZUZsYWdzID0gRDNEMTFfRk9STUFUX1NVUFBPUlRfREVQVEhfU1RFTkNJTCB8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfRk9S
TUFUX1NVUFBPUlRfVEVYVFVSRTJEOworCisgICAgbURlcHRoVGV4dHVyZVN1cHBvcnQgPSB0cnVl
OworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKGRlcHRoVGV4dHVy
ZUZvcm1hdHMpOyBpKyspCisgICAgeworICAgICAgICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNo
ZWNrRm9ybWF0U3VwcG9ydChkZXB0aFRleHR1cmVGb3JtYXRzW2ldLCAmZm9ybWF0U3VwcG9ydCkp
KQorICAgICAgICB7CisgICAgICAgICAgICBtRGVwdGhUZXh0dXJlU3VwcG9ydCA9IG1EZXB0aFRl
eHR1cmVTdXBwb3J0ICYmICgoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkRGVwdGhUZXh0dXJlRmxh
Z3MpID09IHJlcXVpcmVkRGVwdGhUZXh0dXJlRmxhZ3MpOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgbURlcHRoVGV4dHVyZVN1cHBvcnQgPSBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKK30KKworLy8gZG8g
YW55IG9uZS10aW1lIGRldmljZSBpbml0aWFsaXphdGlvbgorLy8gTk9URTogdGhpcyBpcyBhbHNv
IG5lZWRlZCBhZnRlciBhIGRldmljZSBsb3N0L3Jlc2V0CisvLyB0byByZXNldCB0aGUgc2NlbmUg
c3RhdHVzIGFuZCBlbnN1cmUgdGhlIGRlZmF1bHQgc3RhdGVzIGFyZSByZXNldC4KK3ZvaWQgUmVu
ZGVyZXIxMTo6aW5pdGlhbGl6ZURldmljZSgpCit7CisgICAgbVN0YXRlQ2FjaGUuaW5pdGlhbGl6
ZShtRGV2aWNlKTsKKyAgICBtSW5wdXRMYXlvdXRDYWNoZS5pbml0aWFsaXplKG1EZXZpY2UsIG1E
ZXZpY2VDb250ZXh0KTsKKworICAgIEFTU0VSVCghbVZlcnRleERhdGFNYW5hZ2VyICYmICFtSW5k
ZXhEYXRhTWFuYWdlcik7CisgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gbmV3IFZlcnRleERhdGFN
YW5hZ2VyKHRoaXMpOworICAgIG1JbmRleERhdGFNYW5hZ2VyID0gbmV3IEluZGV4RGF0YU1hbmFn
ZXIodGhpcyk7CisKKyAgICBtYXJrQWxsU3RhdGVEaXJ0eSgpOworfQorCitpbnQgUmVuZGVyZXIx
MTo6Z2VuZXJhdGVDb25maWdzKENvbmZpZ0Rlc2MgKipjb25maWdEZXNjTGlzdCkKK3sKKyAgICB1
bnNpZ25lZCBpbnQgbnVtUmVuZGVyRm9ybWF0cyA9IEFycmF5U2l6ZShSZW5kZXJUYXJnZXRGb3Jt
YXRzKTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtRGVwdGhGb3JtYXRzID0gQXJyYXlTaXplKERlcHRo
U3RlbmNpbEZvcm1hdHMpOworICAgICgqY29uZmlnRGVzY0xpc3QpID0gbmV3IENvbmZpZ0Rlc2Nb
bnVtUmVuZGVyRm9ybWF0cyAqIG51bURlcHRoRm9ybWF0c107CisgICAgaW50IG51bUNvbmZpZ3Mg
PSAwOworICAgIAorICAgIGZvciAodW5zaWduZWQgaW50IGZvcm1hdEluZGV4ID0gMDsgZm9ybWF0
SW5kZXggPCBudW1SZW5kZXJGb3JtYXRzOyBmb3JtYXRJbmRleCsrKQorICAgIHsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgZGVwdGhTdGVuY2lsSW5kZXggPSAwOyBkZXB0aFN0ZW5jaWxJbmRl
eCA8IG51bURlcHRoRm9ybWF0czsgZGVwdGhTdGVuY2lsSW5kZXgrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgRFhHSV9GT1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0ID0gUmVuZGVyVGFyZ2V0Rm9y
bWF0c1tmb3JtYXRJbmRleF07CisKKyAgICAgICAgICAgIFVJTlQgZm9ybWF0U3VwcG9ydCA9IDA7
CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNoZWNrRm9ybWF0U3VwcG9y
dChyZW5kZXJUYXJnZXRGb3JtYXQsICZmb3JtYXRTdXBwb3J0KTsKKworICAgICAgICAgICAgaWYg
KFNVQ0NFRURFRChyZXN1bHQpICYmIChmb3JtYXRTdXBwb3J0ICYgRDNEMTFfRk9STUFUX1NVUFBP
UlRfUkVOREVSX1RBUkdFVCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVQgZGVwdGhTdGVuY2lsRm9ybWF0ID0gRGVwdGhTdGVuY2lsRm9ybWF0c1tkZXB0aFN0ZW5j
aWxJbmRleF07CisKKyAgICAgICAgICAgICAgICBib29sIGRlcHRoU3RlbmNpbEZvcm1hdE9LID0g
dHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmIChkZXB0aFN0ZW5jaWxGb3JtYXQgIT0gRFhHSV9G
T1JNQVRfVU5LTk9XTikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFVJ
TlQgZm9ybWF0U3VwcG9ydCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1EZXZp
Y2UtPkNoZWNrRm9ybWF0U3VwcG9ydChkZXB0aFN0ZW5jaWxGb3JtYXQsICZmb3JtYXRTdXBwb3J0
KTsKKyAgICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsRm9ybWF0T0sgPSBTVUNDRUVERUQo
cmVzdWx0KSAmJiAoZm9ybWF0U3VwcG9ydCAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX0RFUFRIX1NU
RU5DSUwpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChkZXB0aFN0
ZW5jaWxGb3JtYXRPSykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENv
bmZpZ0Rlc2MgbmV3Q29uZmlnOworICAgICAgICAgICAgICAgICAgICBuZXdDb25maWcucmVuZGVy
VGFyZ2V0Rm9ybWF0ID0gZDNkMTFfZ2w6OkNvbnZlcnRCYWNrQnVmZmVyRm9ybWF0KHJlbmRlclRh
cmdldEZvcm1hdCk7CisgICAgICAgICAgICAgICAgICAgIG5ld0NvbmZpZy5kZXB0aFN0ZW5jaWxG
b3JtYXQgPSBkM2QxMV9nbDo6Q29udmVydERlcHRoU3RlbmNpbEZvcm1hdChkZXB0aFN0ZW5jaWxG
b3JtYXQpOworICAgICAgICAgICAgICAgICAgICBuZXdDb25maWcubXVsdGlTYW1wbGUgPSAwOyAg
ICAgLy8gRklYTUU6IGVudW1lcmF0ZSBtdWx0aS1zYW1wbGluZworICAgICAgICAgICAgICAgICAg
ICBuZXdDb25maWcuZmFzdENvbmZpZyA9IHRydWU7ICAgLy8gQXNzdW1lIGFsbCBEWDExIGZvcm1h
dCBjb252ZXJzaW9ucyB0byBiZSBmYXN0CisKKyAgICAgICAgICAgICAgICAgICAgKCpjb25maWdE
ZXNjTGlzdClbbnVtQ29uZmlncysrXSA9IG5ld0NvbmZpZzsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbnVtQ29uZmlnczsK
K30KKwordm9pZCBSZW5kZXJlcjExOjpkZWxldGVDb25maWdzKENvbmZpZ0Rlc2MgKmNvbmZpZ0Rl
c2NMaXN0KQoreworICAgIGRlbGV0ZSBbXSAoY29uZmlnRGVzY0xpc3QpOworfQorCit2b2lkIFJl
bmRlcmVyMTE6OnN5bmMoYm9vbCBibG9jaykKK3sKKyAgICBpZiAoYmxvY2spCisgICAgeworICAg
ICAgICBIUkVTVUxUIHJlc3VsdDsKKworICAgICAgICBpZiAoIW1TeW5jUXVlcnkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEQzRDExX1FVRVJZX0RFU0MgcXVlcnlEZXNjOworICAgICAgICAgICAg
cXVlcnlEZXNjLlF1ZXJ5ID0gRDNEMTFfUVVFUllfRVZFTlQ7CisgICAgICAgICAgICBxdWVyeURl
c2MuTWlzY0ZsYWdzID0gMDsKKworICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRl
UXVlcnkoJnF1ZXJ5RGVzYywgJm1TeW5jUXVlcnkpOworICAgICAgICAgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKyAgICAgICAgfQorCisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5FbmQo
bVN5bmNRdWVyeSk7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5GbHVzaCgpOworCisgICAgICAg
IGRvCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2VDb250ZXh0LT5HZXRE
YXRhKG1TeW5jUXVlcnksIE5VTEwsIDAsIEQzRDExX0FTWU5DX0dFVERBVEFfRE9OT1RGTFVTSCk7
CisKKyAgICAgICAgICAgIC8vIEtlZXAgcG9sbGluZywgYnV0IGFsbG93IG90aGVyIHRocmVhZHMg
dG8gZG8gc29tZXRoaW5nIHVzZWZ1bCBmaXJzdAorICAgICAgICAgICAgU2xlZXAoMCk7CisKKyAg
ICAgICAgICAgIGlmICh0ZXN0RGV2aWNlTG9zdCh0cnVlKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgd2hp
bGUgKHJlc3VsdCA9PSBTX0ZBTFNFKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
bURldmljZUNvbnRleHQtPkZsdXNoKCk7CisgICAgfQorfQorCitTd2FwQ2hhaW4gKlJlbmRlcmVy
MTE6OmNyZWF0ZVN3YXBDaGFpbihIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBHTGVu
dW0gYmFja0J1ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KQoreworICAgIHJl
dHVybiBuZXcgcng6OlN3YXBDaGFpbjExKHRoaXMsIHdpbmRvdywgc2hhcmVIYW5kbGUsIGJhY2tC
dWZmZXJGb3JtYXQsIGRlcHRoQnVmZmVyRm9ybWF0KTsKK30KKwordm9pZCBSZW5kZXJlcjExOjpz
ZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgY29uc3QgZ2w6
OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKQoreworICAgIGlmICh0eXBlID09IGdsOjpTQU1Q
TEVSX1BJWEVMKQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBnbDo6
TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiUGl4
ZWwgc2hhZGVyIHNhbXBsZXIgaW5kZXggJWkgaXMgbm90IHZhbGlkLiIsIGluZGV4KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtRm9yY2VTZXRQaXhlbFNh
bXBsZXJTdGF0ZXNbaW5kZXhdIHx8IG1lbWNtcCgmc2FtcGxlclN0YXRlLCAmbUN1clBpeGVsU2Ft
cGxlclN0YXRlc1tpbmRleF0sIHNpemVvZihnbDo6U2FtcGxlclN0YXRlKSkgIT0gMCkKKyAgICAg
ICAgeworICAgICAgICAgICAgSUQzRDExU2FtcGxlclN0YXRlICpkeFNhbXBsZXJTdGF0ZSA9IG1T
dGF0ZUNhY2hlLmdldFNhbXBsZXJTdGF0ZShzYW1wbGVyU3RhdGUpOworCisgICAgICAgICAgICBp
ZiAoIWR4U2FtcGxlclN0YXRlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVSUigi
TlVMTCBzYW1wbGVyIHN0YXRlIHJldHVybmVkIGJ5IFJlbmRlclN0YXRlQ2FjaGU6OmdldFNhbXBs
ZXJTdGF0ZSwgc2V0dGluZyB0aGUgZGVmYXVsdCIKKyAgICAgICAgICAgICAgICAgICAgInNhbXBs
ZXIgc3RhdGUgZm9yIHBpeGVsIHNoYWRlcnMgYXQgc2xvdCAlaS4iLCBpbmRleCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldFNhbXBsZXJzKGluZGV4
LCAxLCAmZHhTYW1wbGVyU3RhdGUpOworCisgICAgICAgICAgICBtQ3VyUGl4ZWxTYW1wbGVyU3Rh
dGVzW2luZGV4XSA9IHNhbXBsZXJTdGF0ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1Gb3JjZVNl
dFBpeGVsU2FtcGxlclN0YXRlc1tpbmRleF0gPSBmYWxzZTsKKyAgICB9CisgICAgZWxzZSBpZiAo
dHlwZSA9PSBnbDo6U0FNUExFUl9WRVJURVgpCisgICAgeworICAgICAgICBpZiAoaW5kZXggPCAw
IHx8IGluZGV4ID49IChpbnQpZ2V0TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMoKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgRVJSKCJWZXJ0ZXggc2hhZGVyIHNhbXBsZXIgaW5kZXggJWkgaXMg
bm90IHZhbGlkLiIsIGluZGV4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChtRm9yY2VTZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzW2luZGV4XSB8fCBtZW1jbXAo
JnNhbXBsZXJTdGF0ZSwgJm1DdXJWZXJ0ZXhTYW1wbGVyU3RhdGVzW2luZGV4XSwgc2l6ZW9mKGds
OjpTYW1wbGVyU3RhdGUpKSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBJRDNEMTFTYW1w
bGVyU3RhdGUgKmR4U2FtcGxlclN0YXRlID0gbVN0YXRlQ2FjaGUuZ2V0U2FtcGxlclN0YXRlKHNh
bXBsZXJTdGF0ZSk7CisKKyAgICAgICAgICAgIGlmICghZHhTYW1wbGVyU3RhdGUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgRVJSKCJOVUxMIHNhbXBsZXIgc3RhdGUgcmV0dXJuZWQg
YnkgUmVuZGVyU3RhdGVDYWNoZTo6Z2V0U2FtcGxlclN0YXRlLCBzZXR0aW5nIHRoZSBkZWZhdWx0
IgorICAgICAgICAgICAgICAgICAgICAic2FtcGxlciBzdGF0ZSBmb3IgdmVydGV4IHNoYWRlcnMg
YXQgc2xvdCAlaS4iLCBpbmRleCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1EZXZp
Y2VDb250ZXh0LT5WU1NldFNhbXBsZXJzKGluZGV4LCAxLCAmZHhTYW1wbGVyU3RhdGUpOworCisg
ICAgICAgICAgICBtQ3VyVmVydGV4U2FtcGxlclN0YXRlc1tpbmRleF0gPSBzYW1wbGVyU3RhdGU7
CisgICAgICAgIH0KKworICAgICAgICBtRm9yY2VTZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzW2luZGV4
XSA9IGZhbHNlOworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Cit9CisKK3ZvaWQgUmVu
ZGVyZXIxMTo6c2V0VGV4dHVyZShnbDo6U2FtcGxlclR5cGUgdHlwZSwgaW50IGluZGV4LCBnbDo6
VGV4dHVyZSAqdGV4dHVyZSkKK3sKKyAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnRleHR1
cmVTUlYgPSBOVUxMOworICAgIHVuc2lnbmVkIGludCBzZXJpYWwgPSAwOworICAgIGJvb2wgZm9y
Y2VTZXRUZXh0dXJlID0gZmFsc2U7CisKKyAgICBpZiAodGV4dHVyZSkKKyAgICB7CisgICAgICAg
IFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlICp0ZXhTdG9yYWdlID0gdGV4dHVyZS0+Z2V0TmF0aXZl
VGV4dHVyZSgpOworICAgICAgICBpZiAodGV4U3RvcmFnZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgVGV4dHVyZVN0b3JhZ2UxMSAqc3RvcmFnZTExID0gVGV4dHVyZVN0b3JhZ2UxMTo6bWFrZVRl
eHR1cmVTdG9yYWdlMTEodGV4U3RvcmFnZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgICAg
ICAgICAgdGV4dHVyZVNSViA9IHN0b3JhZ2UxMS0+Z2V0U1JWKCk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBJZiB3ZSBnZXQgTlVMTCBiYWNrIGZyb20gZ2V0U1JWIGhlcmUsIHNvbWV0aGluZyB3
ZW50IHdyb25nIGluIHRoZSB0ZXh0dXJlIGNsYXNzIGFuZCB3ZSdyZSB1bmV4cGVjdGVkbHkKKyAg
ICAgICAgLy8gbWlzc2luZyB0aGUgc2hhZGVyIHJlc291cmNlIHZpZXcKKyAgICAgICAgQVNTRVJU
KHRleHR1cmVTUlYgIT0gTlVMTCk7CisKKyAgICAgICAgc2VyaWFsID0gdGV4dHVyZS0+Z2V0VGV4
dHVyZVNlcmlhbCgpOworICAgICAgICBmb3JjZVNldFRleHR1cmUgPSB0ZXh0dXJlLT5oYXNEaXJ0
eUltYWdlcygpOworICAgIH0KKworICAgIGlmICh0eXBlID09IGdsOjpTQU1QTEVSX1BJWEVMKQor
ICAgIHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBnbDo6TUFYX1RFWFRVUkVf
SU1BR0VfVU5JVFMpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiUGl4ZWwgc2hhZGVyIHNh
bXBsZXIgaW5kZXggJWkgaXMgbm90IHZhbGlkLiIsIGluZGV4KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmb3JjZVNldFRleHR1cmUgfHwgbUN1clBpeGVs
VGV4dHVyZVNlcmlhbHNbaW5kZXhdICE9IHNlcmlhbCkKKyAgICAgICAgeworICAgICAgICAgICAg
bURldmljZUNvbnRleHQtPlBTU2V0U2hhZGVyUmVzb3VyY2VzKGluZGV4LCAxLCAmdGV4dHVyZVNS
Vik7CisgICAgICAgIH0KKworICAgICAgICBtQ3VyUGl4ZWxUZXh0dXJlU2VyaWFsc1tpbmRleF0g
PSBzZXJpYWw7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUgPT0gZ2w6OlNBTVBMRVJfVkVSVEVY
KQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSAoaW50KWdldE1heFZl
cnRleFRleHR1cmVJbWFnZVVuaXRzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiVmVy
dGV4IHNoYWRlciBzYW1wbGVyIGluZGV4ICVpIGlzIG5vdCB2YWxpZC4iLCBpbmRleCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZm9yY2VTZXRUZXh0dXJl
IHx8IG1DdXJWZXJ0ZXhUZXh0dXJlU2VyaWFsc1tpbmRleF0gIT0gc2VyaWFsKQorICAgICAgICB7
CisgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+VlNTZXRTaGFkZXJSZXNvdXJjZXMoaW5kZXgs
IDEsICZ0ZXh0dXJlU1JWKTsKKyAgICAgICAgfQorCisgICAgICAgIG1DdXJWZXJ0ZXhUZXh0dXJl
U2VyaWFsc1tpbmRleF0gPSBzZXJpYWw7CisgICAgfQorICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsK
K30KKwordm9pZCBSZW5kZXJlcjExOjpzZXRSYXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6OlJhc3Rl
cml6ZXJTdGF0ZSAmcmFzdGVyU3RhdGUpCit7CisgICAgaWYgKG1Gb3JjZVNldFJhc3RlclN0YXRl
IHx8IG1lbWNtcCgmcmFzdGVyU3RhdGUsICZtQ3VyUmFzdGVyU3RhdGUsIHNpemVvZihnbDo6UmFz
dGVyaXplclN0YXRlKSkgIT0gMCkKKyAgICB7CisgICAgICAgIElEM0QxMVJhc3Rlcml6ZXJTdGF0
ZSAqZHhSYXN0ZXJTdGF0ZSA9IG1TdGF0ZUNhY2hlLmdldFJhc3Rlcml6ZXJTdGF0ZShyYXN0ZXJT
dGF0ZSwgbVNjaXNzb3JFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUN1ckRlcHRoU2l6
ZSk7CisgICAgICAgIGlmICghZHhSYXN0ZXJTdGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAg
RVJSKCJOVUxMIHJhc3Rlcml6ZXIgc3RhdGUgcmV0dXJuZWQgYnkgUmVuZGVyU3RhdGVDYWNoZTo6
Z2V0UmFzdGVyaXplclN0YXRlLCBzZXR0aW5nIHRoZSBkZWZhdWx0IgorICAgICAgICAgICAgICAg
ICJyYXN0ZXJpemVyIHN0YXRlLiIpOworICAgICAgICB9CisKKyAgICAgICAgbURldmljZUNvbnRl
eHQtPlJTU2V0U3RhdGUoZHhSYXN0ZXJTdGF0ZSk7CisKKyAgICAgICAgbUN1clJhc3RlclN0YXRl
ID0gcmFzdGVyU3RhdGU7CisgICAgfQorCisgICAgbUZvcmNlU2V0UmFzdGVyU3RhdGUgPSBmYWxz
ZTsKK30KKwordm9pZCBSZW5kZXJlcjExOjpzZXRCbGVuZFN0YXRlKGNvbnN0IGdsOjpCbGVuZFN0
YXRlICZibGVuZFN0YXRlLCBjb25zdCBnbDo6Q29sb3IgJmJsZW5kQ29sb3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZU1hc2spCit7CisgICAgaWYg
KG1Gb3JjZVNldEJsZW5kU3RhdGUgfHwKKyAgICAgICAgbWVtY21wKCZibGVuZFN0YXRlLCAmbUN1
ckJsZW5kU3RhdGUsIHNpemVvZihnbDo6QmxlbmRTdGF0ZSkpICE9IDAgfHwKKyAgICAgICAgbWVt
Y21wKCZibGVuZENvbG9yLCAmbUN1ckJsZW5kQ29sb3IsIHNpemVvZihnbDo6Q29sb3IpKSAhPSAw
IHx8CisgICAgICAgIHNhbXBsZU1hc2sgIT0gbUN1clNhbXBsZU1hc2spCisgICAgeworICAgICAg
ICBJRDNEMTFCbGVuZFN0YXRlICpkeEJsZW5kU3RhdGUgPSBtU3RhdGVDYWNoZS5nZXRCbGVuZFN0
YXRlKGJsZW5kU3RhdGUpOworICAgICAgICBpZiAoIWR4QmxlbmRTdGF0ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgRVJSKCJOVUxMIGJsZW5kIHN0YXRlIHJldHVybmVkIGJ5IFJlbmRlclN0YXRl
Q2FjaGU6OmdldEJsZW5kU3RhdGUsIHNldHRpbmcgdGhlIGRlZmF1bHQgIgorICAgICAgICAgICAg
ICAgICJibGVuZCBzdGF0ZS4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZsb2F0IGJsZW5kQ29s
b3JzWzRdID0gezAuMGZ9OworICAgICAgICBpZiAoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJHQiAh
PSBHTF9DT05TVEFOVF9BTFBIQSAmJiBibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICE9IEdMX09O
RV9NSU5VU19DT05TVEFOVF9BTFBIQSAmJgorICAgICAgICAgICAgYmxlbmRTdGF0ZS5kZXN0Qmxl
bmRSR0IgIT0gR0xfQ09OU1RBTlRfQUxQSEEgJiYgYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgIT0g
R0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBKQorICAgICAgICB7CisgICAgICAgICAgICBibGVu
ZENvbG9yc1swXSA9IGJsZW5kQ29sb3IucmVkOworICAgICAgICAgICAgYmxlbmRDb2xvcnNbMV0g
PSBibGVuZENvbG9yLmdyZWVuOworICAgICAgICAgICAgYmxlbmRDb2xvcnNbMl0gPSBibGVuZENv
bG9yLmJsdWU7CisgICAgICAgICAgICBibGVuZENvbG9yc1szXSA9IGJsZW5kQ29sb3IuYWxwaGE7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBibGVuZENv
bG9yc1swXSA9IGJsZW5kQ29sb3IuYWxwaGE7CisgICAgICAgICAgICBibGVuZENvbG9yc1sxXSA9
IGJsZW5kQ29sb3IuYWxwaGE7CisgICAgICAgICAgICBibGVuZENvbG9yc1syXSA9IGJsZW5kQ29s
b3IuYWxwaGE7CisgICAgICAgICAgICBibGVuZENvbG9yc1szXSA9IGJsZW5kQ29sb3IuYWxwaGE7
CisgICAgICAgIH0KKworICAgICAgICBtRGV2aWNlQ29udGV4dC0+T01TZXRCbGVuZFN0YXRlKGR4
QmxlbmRTdGF0ZSwgYmxlbmRDb2xvcnMsIHNhbXBsZU1hc2spOworCisgICAgICAgIG1DdXJCbGVu
ZFN0YXRlID0gYmxlbmRTdGF0ZTsKKyAgICAgICAgbUN1ckJsZW5kQ29sb3IgPSBibGVuZENvbG9y
OworICAgICAgICBtQ3VyU2FtcGxlTWFzayA9IHNhbXBsZU1hc2s7CisgICAgfQorCisgICAgbUZv
cmNlU2V0QmxlbmRTdGF0ZSA9IGZhbHNlOworfQorCit2b2lkIFJlbmRlcmVyMTE6OnNldERlcHRo
U3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZGVwdGhTdGVuY2lsU3Rh
dGUsIGludCBzdGVuY2lsUmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgc3RlbmNpbEJhY2tSZWYsIGJvb2wgZnJvbnRGYWNlQ0NXKQoreworICAgIGlmIChtRm9y
Y2VTZXREZXB0aFN0ZW5jaWxTdGF0ZSB8fAorICAgICAgICBtZW1jbXAoJmRlcHRoU3RlbmNpbFN0
YXRlLCAmbUN1ckRlcHRoU3RlbmNpbFN0YXRlLCBzaXplb2YoZ2w6OkRlcHRoU3RlbmNpbFN0YXRl
KSkgIT0gMCB8fAorICAgICAgICBzdGVuY2lsUmVmICE9IG1DdXJTdGVuY2lsUmVmIHx8IHN0ZW5j
aWxCYWNrUmVmICE9IG1DdXJTdGVuY2lsQmFja1JlZikKKyAgICB7CisgICAgICAgIGlmIChkZXB0
aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrICE9IGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5j
aWxCYWNrV3JpdGVtYXNrIHx8CisgICAgICAgICAgICBzdGVuY2lsUmVmICE9IHN0ZW5jaWxCYWNr
UmVmIHx8CisgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsTWFzayAhPSBkZXB0
aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja01hc2spCisgICAgICAgIHsKKyAgICAgICAgICAgIEVS
UigiU2VwYXJhdGUgZnJvbnQvYmFjayBzdGVuY2lsIHdyaXRlbWFza3MsIHJlZmVyZW5jZSB2YWx1
ZXMsIG9yIHN0ZW5jaWwgbWFzayB2YWx1ZXMgYXJlICIKKyAgICAgICAgICAgICAgICAiaW52YWxp
ZCB1bmRlciBXZWJHTC4iKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICB9CisKKyAgICAgICAgSUQzRDExRGVwdGhTdGVuY2lsU3Rh
dGUgKmR4RGVwdGhTdGVuY2lsU3RhdGUgPSBtU3RhdGVDYWNoZS5nZXREZXB0aFN0ZW5jaWxTdGF0
ZShkZXB0aFN0ZW5jaWxTdGF0ZSk7CisgICAgICAgIGlmICghZHhEZXB0aFN0ZW5jaWxTdGF0ZSkK
KyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJOVUxMIGRlcHRoIHN0ZW5jaWwgc3RhdGUgcmV0
dXJuZWQgYnkgUmVuZGVyU3RhdGVDYWNoZTo6Z2V0RGVwdGhTdGVuY2lsU3RhdGUsICIKKyAgICAg
ICAgICAgICAgICAic2V0dGluZyB0aGUgZGVmYXVsdCBkZXB0aCBzdGVuY2lsIHN0YXRlLiIpOwor
ICAgICAgICB9CisKKyAgICAgICAgbURldmljZUNvbnRleHQtPk9NU2V0RGVwdGhTdGVuY2lsU3Rh
dGUoZHhEZXB0aFN0ZW5jaWxTdGF0ZSwgc3RhdGljX2Nhc3Q8VUlOVD4oc3RlbmNpbFJlZikpOwor
CisgICAgICAgIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZSA9IGRlcHRoU3RlbmNpbFN0YXRlOworICAg
ICAgICBtQ3VyU3RlbmNpbFJlZiA9IHN0ZW5jaWxSZWY7CisgICAgICAgIG1DdXJTdGVuY2lsQmFj
a1JlZiA9IHN0ZW5jaWxCYWNrUmVmOworICAgIH0KKworICAgIG1Gb3JjZVNldERlcHRoU3RlbmNp
bFN0YXRlID0gZmFsc2U7Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6c2V0U2Npc3NvclJlY3Rhbmds
ZShjb25zdCBnbDo6UmVjdGFuZ2xlICZzY2lzc29yLCBib29sIGVuYWJsZWQpCit7CisgICAgaWYg
KG1Gb3JjZVNldFNjaXNzb3IgfHwgbWVtY21wKCZzY2lzc29yLCAmbUN1clNjaXNzb3IsIHNpemVv
ZihnbDo6UmVjdGFuZ2xlKSkgIT0gMCB8fAorICAgICAgICBlbmFibGVkICE9IG1TY2lzc29yRW5h
YmxlZCkKKyAgICB7CisgICAgICAgIGlmIChlbmFibGVkKQorICAgICAgICB7CisgICAgICAgICAg
ICBEM0QxMV9SRUNUIHJlY3Q7CisgICAgICAgICAgICByZWN0LmxlZnQgPSBzdGQ6Om1heCgwLCBz
Y2lzc29yLngpOworICAgICAgICAgICAgcmVjdC50b3AgPSBzdGQ6Om1heCgwLCBzY2lzc29yLnkp
OworICAgICAgICAgICAgcmVjdC5yaWdodCA9IHNjaXNzb3IueCArIHN0ZDo6bWF4KDAsIHNjaXNz
b3Iud2lkdGgpOworICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBzY2lzc29yLnkgKyBzdGQ6Om1h
eCgwLCBzY2lzc29yLmhlaWdodCk7CisKKyAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5SU1Nl
dFNjaXNzb3JSZWN0cygxLCAmcmVjdCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZW5hYmxl
ZCAhPSBtU2Npc3NvckVuYWJsZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1Gb3JjZVNldFJh
c3RlclN0YXRlID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1DdXJTY2lzc29yID0gc2Np
c3NvcjsKKyAgICAgICAgbVNjaXNzb3JFbmFibGVkID0gZW5hYmxlZDsKKyAgICB9CisKKyAgICBt
Rm9yY2VTZXRTY2lzc29yID0gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6c2V0Vmlld3Bv
cnQoY29uc3QgZ2w6OlJlY3RhbmdsZSAmdmlld3BvcnQsIGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFy
LCBHTGVudW0gZHJhd01vZGUsIEdMZW51bSBmcm9udEZhY2UsIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlnbm9yZVZpZXdwb3J0KQoreworICAgIGdsOjpSZWN0YW5nbGUgYWN0
dWFsVmlld3BvcnQgPSB2aWV3cG9ydDsKKyAgICBmbG9hdCBhY3R1YWxaTmVhciA9IGdsOjpjbGFt
cDAxKHpOZWFyKTsKKyAgICBmbG9hdCBhY3R1YWxaRmFyID0gZ2w6OmNsYW1wMDEoekZhcik7Cisg
ICAgaWYgKGlnbm9yZVZpZXdwb3J0KQorICAgIHsKKyAgICAgICAgYWN0dWFsVmlld3BvcnQueCA9
IDA7CisgICAgICAgIGFjdHVhbFZpZXdwb3J0LnkgPSAwOworICAgICAgICBhY3R1YWxWaWV3cG9y
dC53aWR0aCA9IG1SZW5kZXJUYXJnZXREZXNjLndpZHRoOworICAgICAgICBhY3R1YWxWaWV3cG9y
dC5oZWlnaHQgPSBtUmVuZGVyVGFyZ2V0RGVzYy5oZWlnaHQ7CisgICAgICAgIGFjdHVhbFpOZWFy
ID0gMC4wZjsKKyAgICAgICAgYWN0dWFsWkZhciA9IDEuMGY7CisgICAgfQorCisgICAgLy8gR2V0
IEQzRCB2aWV3cG9ydCBib3VuZHMsIHdoaWNoIGRlcGVuZHMgb24gdGhlIGZlYXR1cmUgbGV2ZWwK
KyAgICBjb25zdCBSYW5nZSYgdmlld3BvcnRCb3VuZHMgPSBnZXRWaWV3cG9ydEJvdW5kcygpOwor
CisgICAgLy8gQ2xhbXAgd2lkdGggYW5kIGhlaWdodCBmaXJzdCB0byB0aGUgZ2wgbWF4aW11bSwg
dGhlbiBjbGFtcCBmdXJ0aGVyIGlmIHdlIGV4dGVuZCBwYXN0IHRoZSBEM0QgbWF4aW11bSBib3Vu
ZHMKKyAgICBEM0QxMV9WSUVXUE9SVCBkeFZpZXdwb3J0OworICAgIGR4Vmlld3BvcnQuVG9wTGVm
dFggPSBnbDo6Y2xhbXAoYWN0dWFsVmlld3BvcnQueCwgdmlld3BvcnRCb3VuZHMuc3RhcnQsIHZp
ZXdwb3J0Qm91bmRzLmVuZCk7CisgICAgZHhWaWV3cG9ydC5Ub3BMZWZ0WSA9IGdsOjpjbGFtcChh
Y3R1YWxWaWV3cG9ydC55LCB2aWV3cG9ydEJvdW5kcy5zdGFydCwgdmlld3BvcnRCb3VuZHMuZW5k
KTsKKyAgICBkeFZpZXdwb3J0LldpZHRoID0gZ2w6OmNsYW1wKGFjdHVhbFZpZXdwb3J0LndpZHRo
LCAwLCBnZXRNYXhWaWV3cG9ydERpbWVuc2lvbigpKTsKKyAgICBkeFZpZXdwb3J0LkhlaWdodCA9
IGdsOjpjbGFtcChhY3R1YWxWaWV3cG9ydC5oZWlnaHQsIDAsIGdldE1heFZpZXdwb3J0RGltZW5z
aW9uKCkpOworICAgIGR4Vmlld3BvcnQuV2lkdGggPSBzdGQ6Om1pbigoaW50KWR4Vmlld3BvcnQu
V2lkdGgsIHZpZXdwb3J0Qm91bmRzLmVuZCAtIHN0YXRpY19jYXN0PGludD4oZHhWaWV3cG9ydC5U
b3BMZWZ0WCkpOworICAgIGR4Vmlld3BvcnQuSGVpZ2h0ID0gc3RkOjptaW4oKGludClkeFZpZXdw
b3J0LkhlaWdodCwgdmlld3BvcnRCb3VuZHMuZW5kIC0gc3RhdGljX2Nhc3Q8aW50PihkeFZpZXdw
b3J0LlRvcExlZnRZKSk7CisgICAgZHhWaWV3cG9ydC5NaW5EZXB0aCA9IGFjdHVhbFpOZWFyOwor
ICAgIGR4Vmlld3BvcnQuTWF4RGVwdGggPSBhY3R1YWxaRmFyOworCisgICAgaWYgKGR4Vmlld3Bv
cnQuV2lkdGggPD0gMCB8fCBkeFZpZXdwb3J0LkhlaWdodCA8PSAwKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOyAgIC8vIE5vdGhpbmcgdG8gcmVuZGVyCisgICAgfQorCisgICAgYm9vbCB2
aWV3cG9ydENoYW5nZWQgPSBtRm9yY2VTZXRWaWV3cG9ydCB8fCBtZW1jbXAoJmFjdHVhbFZpZXdw
b3J0LCAmbUN1clZpZXdwb3J0LCBzaXplb2YoZ2w6OlJlY3RhbmdsZSkpICE9IDAgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbFpOZWFyICE9IG1DdXJOZWFyIHx8IGFjdHVhbFpG
YXIgIT0gbUN1ckZhcjsKKworICAgIGlmICh2aWV3cG9ydENoYW5nZWQpCisgICAgeworICAgICAg
ICBtRGV2aWNlQ29udGV4dC0+UlNTZXRWaWV3cG9ydHMoMSwgJmR4Vmlld3BvcnQpOworCisgICAg
ICAgIG1DdXJWaWV3cG9ydCA9IGFjdHVhbFZpZXdwb3J0OworICAgICAgICBtQ3VyTmVhciA9IGFj
dHVhbFpOZWFyOworICAgICAgICBtQ3VyRmFyID0gYWN0dWFsWkZhcjsKKworICAgICAgICBtUGl4
ZWxDb25zdGFudHMudmlld0Nvb3Jkc1swXSA9IGFjdHVhbFZpZXdwb3J0LndpZHRoICAqIDAuNWY7
CisgICAgICAgIG1QaXhlbENvbnN0YW50cy52aWV3Q29vcmRzWzFdID0gYWN0dWFsVmlld3BvcnQu
aGVpZ2h0ICogMC41ZjsKKyAgICAgICAgbVBpeGVsQ29uc3RhbnRzLnZpZXdDb29yZHNbMl0gPSBh
Y3R1YWxWaWV3cG9ydC54ICsgKGFjdHVhbFZpZXdwb3J0LndpZHRoICAqIDAuNWYpOworICAgICAg
ICBtUGl4ZWxDb25zdGFudHMudmlld0Nvb3Jkc1szXSA9IGFjdHVhbFZpZXdwb3J0LnkgKyAoYWN0
dWFsVmlld3BvcnQuaGVpZ2h0ICogMC41Zik7CisKKyAgICAgICAgbVBpeGVsQ29uc3RhbnRzLmRl
cHRoRnJvbnRbMF0gPSAoYWN0dWFsWkZhciAtIGFjdHVhbFpOZWFyKSAqIDAuNWY7CisgICAgICAg
IG1QaXhlbENvbnN0YW50cy5kZXB0aEZyb250WzFdID0gKGFjdHVhbFpOZWFyICsgYWN0dWFsWkZh
cikgKiAwLjVmOworCisgICAgICAgIG1WZXJ0ZXhDb25zdGFudHMuZGVwdGhSYW5nZVswXSA9IGFj
dHVhbFpOZWFyOworICAgICAgICBtVmVydGV4Q29uc3RhbnRzLmRlcHRoUmFuZ2VbMV0gPSBhY3R1
YWxaRmFyOworICAgICAgICBtVmVydGV4Q29uc3RhbnRzLmRlcHRoUmFuZ2VbMl0gPSBhY3R1YWxa
RmFyIC0gYWN0dWFsWk5lYXI7CisKKyAgICAgICAgbVBpeGVsQ29uc3RhbnRzLmRlcHRoUmFuZ2Vb
MF0gPSBhY3R1YWxaTmVhcjsKKyAgICAgICAgbVBpeGVsQ29uc3RhbnRzLmRlcHRoUmFuZ2VbMV0g
PSBhY3R1YWxaRmFyOworICAgICAgICBtUGl4ZWxDb25zdGFudHMuZGVwdGhSYW5nZVsyXSA9IGFj
dHVhbFpGYXIgLSBhY3R1YWxaTmVhcjsKKyAgICB9CisKKyAgICBtRm9yY2VTZXRWaWV3cG9ydCA9
IGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlbmRlcmVyMTE6OmFwcGx5UHJp
bWl0aXZlVHlwZShHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCkKK3sKKyAgICBEM0QxMV9QUklN
SVRJVkVfVE9QT0xPR1kgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZ
X1VOREVGSU5FRDsKKworICAgIHN3aXRjaCAobW9kZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1BP
SU5UUzogICAgICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRDExX1BSSU1JVElWRV9UT1BPTE9H
WV9QT0lOVExJU1Q7ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJTkVTOiAgICAgICAgICBwcmlt
aXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfTElORUxJU1Q7ICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX0xJTkVfTE9PUDogICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQz
RF9QUklNSVRJVkVfVE9QT0xPR1lfTElORVNUUklQOyAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X0xJTkVfU1RSSVA6ICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xP
R1lfTElORVNUUklQOyAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RSSUFOR0xFUzogICAgICBw
cmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVMSVNUOyAg
YnJlYWs7CisgICAgICBjYXNlIEdMX1RSSUFOR0xFX1NUUklQOiBwcmltaXRpdmVUb3BvbG9neSA9
IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVTVFJJUDsgYnJlYWs7CisgICAgICAgICAg
Ly8gZW11bGF0ZSBmYW5zIHZpYSByZXdyaXRpbmcgaW5kZXggYnVmZmVyCisgICAgICBjYXNlIEdM
X1RSSUFOR0xFX0ZBTjogICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xP
R1lfVFJJQU5HTEVMSVNUOyAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSwgZmFsc2UpOworICAgIH0KKworICAgIG1EZXZpY2VD
b250ZXh0LT5JQVNldFByaW1pdGl2ZVRvcG9sb2d5KHByaW1pdGl2ZVRvcG9sb2d5KTsKKworICAg
IHJldHVybiBjb3VudCA+IDA7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6YXBwbHlSZW5kZXJUYXJn
ZXQoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlcikKK3sKKyAgICAvLyBHZXQgdGhlIGNvbG9y
IHJlbmRlciBidWZmZXIgYW5kIHNlcmlhbAorICAgIC8vIEFsc28gZXh0cmFjdCB0aGUgcmVuZGVy
IHRhcmdldCBkaW1lbnNpb25zIGFuZCB2aWV3CisgICAgdW5zaWduZWQgaW50IHJlbmRlclRhcmdl
dFdpZHRoID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgcmVuZGVyVGFyZ2V0SGVpZ2h0ID0gMDsKKyAg
ICBHTGVudW0gcmVuZGVyVGFyZ2V0Rm9ybWF0ID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgcmVuZGVy
VGFyZ2V0U2VyaWFsc1tnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSU10gPSB7MH07
CisgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyogZnJhbWVidWZmZXJSVFZzW2dsOjpJTVBMRU1F
TlRBVElPTl9NQVhfRFJBV19CVUZGRVJTXSA9IHtOVUxMfTsKKyAgICBib29sIG1pc3NpbmdDb2xv
clJlbmRlclRhcmdldCA9IHRydWU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBjb2xvckF0dGFj
aG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdf
QlVGRkVSUzsgY29sb3JBdHRhY2htZW50KyspCisgICAgeworICAgICAgICBjb25zdCBHTGVudW0g
ZHJhd0J1ZmZlclN0YXRlID0gZnJhbWVidWZmZXItPmdldERyYXdCdWZmZXJTdGF0ZShjb2xvckF0
dGFjaG1lbnQpOworCisgICAgICAgIGlmIChmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXJUeXBl
KGNvbG9yQXR0YWNobWVudCkgIT0gR0xfTk9ORSAmJiBkcmF3QnVmZmVyU3RhdGUgIT0gR0xfTk9O
RSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gdGhlIGRyYXcgYnVmZmVyIG11c3QgYmUgZWl0
aGVyICJub25lIiwgImJhY2siIGZvciB0aGUgZGVmYXVsdCBidWZmZXIgb3IgdGhlIHNhbWUgaW5k
ZXggYXMgdGhpcyBjb2xvciAoaW4gb3JkZXIpCisgICAgICAgICAgICBBU1NFUlQoZHJhd0J1ZmZl
clN0YXRlID09IEdMX0JBQ0sgfHwgZHJhd0J1ZmZlclN0YXRlID09IChHTF9DT0xPUl9BVFRBQ0hN
RU5UMF9FWFQgKyBjb2xvckF0dGFjaG1lbnQpKTsKKworICAgICAgICAgICAgZ2w6OlJlbmRlcmJ1
ZmZlciAqY29sb3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoY29sb3JBdHRh
Y2htZW50KTsKKworICAgICAgICAgICAgaWYgKCFjb2xvcmJ1ZmZlcikKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBFUlIoInJlbmRlciB0YXJnZXQgcG9pbnRlciB1bmV4cGVjdGVkbHkg
bnVsbC4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIGNoZWNrIGZvciB6ZXJvLXNpemVkIGRlZmF1bHQgZnJhbWVidWZmZXIs
IHdoaWNoIGlzIGEgc3BlY2lhbCBjYXNlLgorICAgICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdl
IGRvIG5vdCB3aXNoIHRvIG1vZGlmeSBhbnkgc3RhdGUgYW5kIGp1c3Qgc2lsZW50bHkgcmV0dXJu
IGZhbHNlLgorICAgICAgICAgICAgLy8gdGhpcyB3aWxsIG5vdCByZXBvcnQgYW55IGdsIGVycm9y
IGJ1dCB3aWxsIGNhdXNlIHRoZSBjYWxsaW5nIG1ldGhvZCB0byByZXR1cm4uCisgICAgICAgICAg
ICBpZiAoY29sb3JidWZmZXItPmdldFdpZHRoKCkgPT0gMCB8fCBjb2xvcmJ1ZmZlci0+Z2V0SGVp
Z2h0KCkgPT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJlbmRlclRhcmdldFNlcmlhbHNbY29sb3JB
dHRhY2htZW50XSA9IGNvbG9yYnVmZmVyLT5nZXRTZXJpYWwoKTsKKworICAgICAgICAgICAgLy8g
RXh0cmFjdCB0aGUgcmVuZGVyIHRhcmdldCBkaW1lbnNpb25zIGFuZCB2aWV3CisgICAgICAgICAg
ICBSZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5k
ZXJUYXJnZXQxMShjb2xvcmJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAgICAgICAgICAg
aWYgKCFyZW5kZXJUYXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRVJSKCJy
ZW5kZXIgdGFyZ2V0IHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmcmFtZWJ1ZmZl
clJUVnNbY29sb3JBdHRhY2htZW50XSA9IHJlbmRlclRhcmdldC0+Z2V0UmVuZGVyVGFyZ2V0Vmll
dygpOworICAgICAgICAgICAgaWYgKCFmcmFtZWJ1ZmZlclJUVnNbY29sb3JBdHRhY2htZW50XSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFUlIoInJlbmRlciB0YXJnZXQgdmlldyBw
b2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1pc3NpbmdDb2xvclJlbmRlclRh
cmdldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXRXaWR0aCA9
IGNvbG9yYnVmZmVyLT5nZXRXaWR0aCgpOworICAgICAgICAgICAgICAgIHJlbmRlclRhcmdldEhl
aWdodCA9IGNvbG9yYnVmZmVyLT5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgICAgICByZW5kZXJU
YXJnZXRGb3JtYXQgPSBjb2xvcmJ1ZmZlci0+Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAgICAgICAg
ICAgICAgbWlzc2luZ0NvbG9yUmVuZGVyVGFyZ2V0ID0gZmFsc2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBHZXQgdGhlIGRlcHRoIHN0ZW5jaWwgcmVuZGVyIGJ1
ZmZlciBhbmQgc2VyaWFscworICAgIGdsOjpSZW5kZXJidWZmZXIgKmRlcHRoU3RlbmNpbCA9IE5V
TEw7CisgICAgdW5zaWduZWQgaW50IGRlcHRoYnVmZmVyU2VyaWFsID0gMDsKKyAgICB1bnNpZ25l
ZCBpbnQgc3RlbmNpbGJ1ZmZlclNlcmlhbCA9IDA7CisgICAgaWYgKGZyYW1lYnVmZmVyLT5nZXRE
ZXB0aGJ1ZmZlclR5cGUoKSAhPSBHTF9OT05FKQorICAgIHsKKyAgICAgICAgZGVwdGhTdGVuY2ls
ID0gZnJhbWVidWZmZXItPmdldERlcHRoYnVmZmVyKCk7CisgICAgICAgIGlmICghZGVwdGhTdGVu
Y2lsKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkRlcHRoIHN0ZW5jaWwgcG9pbnRlciB1
bmV4cGVjdGVkbHkgbnVsbC4iKTsKKyAgICAgICAgICAgIFNhZmVSZWxlYXNlKGZyYW1lYnVmZmVy
UlRWcyk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBk
ZXB0aGJ1ZmZlclNlcmlhbCA9IGRlcHRoU3RlbmNpbC0+Z2V0U2VyaWFsKCk7CisgICAgfQorICAg
IGVsc2UgaWYgKGZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyVHlwZSgpICE9IEdMX05PTkUp
CisgICAgeworICAgICAgICBkZXB0aFN0ZW5jaWwgPSBmcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1
ZmZlcigpOworICAgICAgICBpZiAoIWRlcHRoU3RlbmNpbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgRVJSKCJEZXB0aCBzdGVuY2lsIHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAg
ICAgICAgICBTYWZlUmVsZWFzZShmcmFtZWJ1ZmZlclJUVnMpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgc3RlbmNpbGJ1ZmZlclNlcmlhbCA9IGRlcHRo
U3RlbmNpbC0+Z2V0U2VyaWFsKCk7CisgICAgfQorCisgICAgLy8gRXh0cmFjdCB0aGUgZGVwdGgg
c3RlbmNpbCBzaXplcyBhbmQgdmlldworICAgIHVuc2lnbmVkIGludCBkZXB0aFNpemUgPSAwOwor
ICAgIHVuc2lnbmVkIGludCBzdGVuY2lsU2l6ZSA9IDA7CisgICAgSUQzRDExRGVwdGhTdGVuY2ls
VmlldyogZnJhbWVidWZmZXJEU1YgPSBOVUxMOworICAgIGlmIChkZXB0aFN0ZW5jaWwpCisgICAg
eworICAgICAgICBSZW5kZXJUYXJnZXQxMSAqZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0ID0gUmVu
ZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShkZXB0aFN0ZW5jaWwtPmdldERlcHRoU3Rl
bmNpbCgpKTsKKyAgICAgICAgaWYgKCFkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEVSUigicmVuZGVyIHRhcmdldCBwb2ludGVyIHVuZXhwZWN0ZWRseSBu
dWxsLiIpOworICAgICAgICAgICAgU2FmZVJlbGVhc2UoZnJhbWVidWZmZXJSVFZzKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGZyYW1lYnVmZmVyRFNW
ID0gZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0LT5nZXREZXB0aFN0ZW5jaWxWaWV3KCk7CisgICAg
ICAgIGlmICghZnJhbWVidWZmZXJEU1YpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiZGVw
dGggc3RlbmNpbCB2aWV3IHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAgICAgICAg
ICBTYWZlUmVsZWFzZShmcmFtZWJ1ZmZlclJUVnMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmVuZGVyIGJ1ZmZlciwg
dGhlIHdpZHRoLCBoZWlnaHQgYW5kIGZvcm1hdCB2YWx1ZXMgY29tZSBmcm9tCisgICAgICAgIC8v
IHRoZSBkZXB0aCBzdGVuY2lsCisgICAgICAgIGlmIChtaXNzaW5nQ29sb3JSZW5kZXJUYXJnZXQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJlbmRlclRhcmdldFdpZHRoID0gZGVwdGhTdGVuY2ls
LT5nZXRXaWR0aCgpOworICAgICAgICAgICAgcmVuZGVyVGFyZ2V0SGVpZ2h0ID0gZGVwdGhTdGVu
Y2lsLT5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIHJlbmRlclRhcmdldEZvcm1hdCA9IGRlcHRo
U3RlbmNpbC0+Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAgICAgIH0KKworICAgICAgICBkZXB0aFNp
emUgPSBkZXB0aFN0ZW5jaWwtPmdldERlcHRoU2l6ZSgpOworICAgICAgICBzdGVuY2lsU2l6ZSA9
IGRlcHRoU3RlbmNpbC0+Z2V0U3RlbmNpbFNpemUoKTsKKyAgICB9CisKKyAgICAvLyBBcHBseSB0
aGUgcmVuZGVyIHRhcmdldCBhbmQgZGVwdGggc3RlbmNpbAorICAgIGlmICghbVJlbmRlclRhcmdl
dERlc2NJbml0aWFsaXplZCB8fCAhbURlcHRoU3RlbmNpbEluaXRpYWxpemVkIHx8CisgICAgICAg
IG1lbWNtcChyZW5kZXJUYXJnZXRTZXJpYWxzLCBtQXBwbGllZFJlbmRlclRhcmdldFNlcmlhbHMs
IHNpemVvZihyZW5kZXJUYXJnZXRTZXJpYWxzKSkgIT0gMCB8fAorICAgICAgICBkZXB0aGJ1ZmZl
clNlcmlhbCAhPSBtQXBwbGllZERlcHRoYnVmZmVyU2VyaWFsIHx8CisgICAgICAgIHN0ZW5jaWxi
dWZmZXJTZXJpYWwgIT0gbUFwcGxpZWRTdGVuY2lsYnVmZmVyU2VyaWFsKQorICAgIHsKKyAgICAg
ICAgbURldmljZUNvbnRleHQtPk9NU2V0UmVuZGVyVGFyZ2V0cyhnZXRNYXhSZW5kZXJUYXJnZXRz
KCksIGZyYW1lYnVmZmVyUlRWcywgZnJhbWVidWZmZXJEU1YpOworCisgICAgICAgIG1SZW5kZXJU
YXJnZXREZXNjLndpZHRoID0gcmVuZGVyVGFyZ2V0V2lkdGg7CisgICAgICAgIG1SZW5kZXJUYXJn
ZXREZXNjLmhlaWdodCA9IHJlbmRlclRhcmdldEhlaWdodDsKKyAgICAgICAgbVJlbmRlclRhcmdl
dERlc2MuZm9ybWF0ID0gcmVuZGVyVGFyZ2V0Rm9ybWF0OworICAgICAgICBtRm9yY2VTZXRWaWV3
cG9ydCA9IHRydWU7CisgICAgICAgIG1Gb3JjZVNldFNjaXNzb3IgPSB0cnVlOworCisgICAgICAg
IGlmICghbURlcHRoU3RlbmNpbEluaXRpYWxpemVkIHx8IGRlcHRoU2l6ZSAhPSBtQ3VyRGVwdGhT
aXplKQorICAgICAgICB7CisgICAgICAgICAgICBtQ3VyRGVwdGhTaXplID0gZGVwdGhTaXplOwor
ICAgICAgICAgICAgbUZvcmNlU2V0UmFzdGVyU3RhdGUgPSB0cnVlOworICAgICAgICB9CisKKyAg
ICAgICAgbUN1clN0ZW5jaWxTaXplID0gc3RlbmNpbFNpemU7CisKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgcnRJbmRleCA9IDA7IHJ0SW5kZXggPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RS
QVdfQlVGRkVSUzsgcnRJbmRleCsrKQorICAgICAgICB7CisgICAgICAgICAgICBtQXBwbGllZFJl
bmRlclRhcmdldFNlcmlhbHNbcnRJbmRleF0gPSByZW5kZXJUYXJnZXRTZXJpYWxzW3J0SW5kZXhd
OworICAgICAgICB9CisgICAgICAgIG1BcHBsaWVkRGVwdGhidWZmZXJTZXJpYWwgPSBkZXB0aGJ1
ZmZlclNlcmlhbDsKKyAgICAgICAgbUFwcGxpZWRTdGVuY2lsYnVmZmVyU2VyaWFsID0gc3RlbmNp
bGJ1ZmZlclNlcmlhbDsKKyAgICAgICAgbVJlbmRlclRhcmdldERlc2NJbml0aWFsaXplZCA9IHRy
dWU7CisgICAgICAgIG1EZXB0aFN0ZW5jaWxJbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisg
ICAgU2FmZVJlbGVhc2UoZnJhbWVidWZmZXJSVFZzKTsKKyAgICBTYWZlUmVsZWFzZShmcmFtZWJ1
ZmZlckRTVik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworR0xlbnVtIFJlbmRlcmVyMTE6OmFw
cGx5VmVydGV4QnVmZmVyKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5LCBnbDo6VmVy
dGV4QXR0cmlidXRlIHZlcnRleEF0dHJpYnV0ZXNbXSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291
bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKQoreworICAgIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmli
dXRlc1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsKKyAgICBHTGVudW0gZXJyID0gbVZlcnRleERh
dGFNYW5hZ2VyLT5wcmVwYXJlVmVydGV4RGF0YSh2ZXJ0ZXhBdHRyaWJ1dGVzLCBwcm9ncmFtQmlu
YXJ5LCBmaXJzdCwgY291bnQsIGF0dHJpYnV0ZXMsIGluc3RhbmNlcyk7CisgICAgaWYgKGVyciAh
PSBHTF9OT19FUlJPUikKKyAgICB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorCisgICAg
cmV0dXJuIG1JbnB1dExheW91dENhY2hlLmFwcGx5VmVydGV4QnVmZmVycyhhdHRyaWJ1dGVzLCBw
cm9ncmFtQmluYXJ5KTsKK30KKworR0xlbnVtIFJlbmRlcmVyMTE6OmFwcGx5SW5kZXhCdWZmZXIo
Y29uc3QgR0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIsIEdM
c2l6ZWkgY291bnQsIEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgVHJhbnNsYXRlZEluZGV4RGF0
YSAqaW5kZXhJbmZvKQoreworICAgIEdMZW51bSBlcnIgPSBtSW5kZXhEYXRhTWFuYWdlci0+cHJl
cGFyZUluZGV4RGF0YSh0eXBlLCBjb3VudCwgZWxlbWVudEFycmF5QnVmZmVyLCBpbmRpY2VzLCBp
bmRleEluZm8pOworCisgICAgaWYgKGVyciA9PSBHTF9OT19FUlJPUikKKyAgICB7CisgICAgICAg
IGlmIChpbmRleEluZm8tPnN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpbmRl
eEluZm8tPnNlcmlhbCAhPSBtQXBwbGllZFN0b3JhZ2VJQlNlcmlhbCB8fCBpbmRleEluZm8tPnN0
YXJ0T2Zmc2V0ICE9IG1BcHBsaWVkSUJPZmZzZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgQnVmZmVyU3RvcmFnZTExICpzdG9yYWdlID0gQnVmZmVyU3RvcmFnZTExOjptYWtlQnVm
ZmVyU3RvcmFnZTExKGluZGV4SW5mby0+c3RvcmFnZSk7CisgICAgICAgICAgICAgICAgSW5kZXhC
dWZmZXIxMSogaW5kZXhCdWZmZXIgPSBJbmRleEJ1ZmZlcjExOjptYWtlSW5kZXhCdWZmZXIxMShp
bmRleEluZm8tPmluZGV4QnVmZmVyKTsKKworICAgICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0
LT5JQVNldEluZGV4QnVmZmVyKHN0b3JhZ2UtPmdldEJ1ZmZlcigpLCBpbmRleEJ1ZmZlci0+Z2V0
SW5kZXhGb3JtYXQoKSwgaW5kZXhJbmZvLT5zdGFydE9mZnNldCk7CisKKyAgICAgICAgICAgICAg
ICBtQXBwbGllZElCU2VyaWFsID0gMDsKKyAgICAgICAgICAgICAgICBtQXBwbGllZFN0b3JhZ2VJ
QlNlcmlhbCA9IHN0b3JhZ2UtPmdldFNlcmlhbCgpOworICAgICAgICAgICAgICAgIG1BcHBsaWVk
SUJPZmZzZXQgPSBpbmRleEluZm8tPnN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGVsc2UgaWYgKGluZGV4SW5mby0+c2VyaWFsICE9IG1BcHBsaWVkSUJTZXJp
YWwgfHwgaW5kZXhJbmZvLT5zdGFydE9mZnNldCAhPSBtQXBwbGllZElCT2Zmc2V0KQorICAgICAg
ICB7CisgICAgICAgICAgICBJbmRleEJ1ZmZlcjExKiBpbmRleEJ1ZmZlciA9IEluZGV4QnVmZmVy
MTE6Om1ha2VJbmRleEJ1ZmZlcjExKGluZGV4SW5mby0+aW5kZXhCdWZmZXIpOworCisgICAgICAg
ICAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbmRleEJ1ZmZlcihpbmRleEJ1ZmZlci0+Z2V0QnVm
ZmVyKCksIGluZGV4QnVmZmVyLT5nZXRJbmRleEZvcm1hdCgpLCBpbmRleEluZm8tPnN0YXJ0T2Zm
c2V0KTsKKworICAgICAgICAgICAgbUFwcGxpZWRJQlNlcmlhbCA9IGluZGV4SW5mby0+c2VyaWFs
OworICAgICAgICAgICAgbUFwcGxpZWRTdG9yYWdlSUJTZXJpYWwgPSAwOworICAgICAgICAgICAg
bUFwcGxpZWRJQk9mZnNldCA9IGluZGV4SW5mby0+c3RhcnRPZmZzZXQ7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gZXJyOworfQorCit2b2lkIFJlbmRlcmVyMTE6OmRyYXdBcnJheXMo
R0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKQoreworICAgIGlm
IChtb2RlID09IEdMX0xJTkVfTE9PUCkKKyAgICB7CisgICAgICAgIGRyYXdMaW5lTG9vcChjb3Vu
dCwgR0xfTk9ORSwgTlVMTCwgMCwgTlVMTCk7CisgICAgfQorICAgIGVsc2UgaWYgKG1vZGUgPT0g
R0xfVFJJQU5HTEVfRkFOKQorICAgIHsKKyAgICAgICAgZHJhd1RyaWFuZ2xlRmFuKGNvdW50LCBH
TF9OT05FLCBOVUxMLCAwLCBOVUxMLCBpbnN0YW5jZXMpOworICAgIH0KKyAgICBlbHNlIGlmIChp
bnN0YW5jZXMgPiAwKQorICAgIHsKKyAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbnN0YW5j
ZWQoY291bnQsIGluc3RhbmNlcywgMCwgMCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3KGNvdW50LCAwKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVu
ZGVyZXIxMTo6ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0g
dHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZm
ZXIsIGNvbnN0IFRyYW5zbGF0ZWRJbmRleERhdGEgJmluZGV4SW5mbywgR0xzaXplaSBpbnN0YW5j
ZXMpCit7CisgICAgaWYgKG1vZGUgPT0gR0xfTElORV9MT09QKQorICAgIHsKKyAgICAgICAgZHJh
d0xpbmVMb29wKGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbmRleEluZm8ubWluSW5kZXgsIGVsZW1l
bnRBcnJheUJ1ZmZlcik7CisgICAgfQorICAgIGVsc2UgaWYgKG1vZGUgPT0gR0xfVFJJQU5HTEVf
RkFOKQorICAgIHsKKyAgICAgICAgZHJhd1RyaWFuZ2xlRmFuKGNvdW50LCB0eXBlLCBpbmRpY2Vz
LCBpbmRleEluZm8ubWluSW5kZXgsIGVsZW1lbnRBcnJheUJ1ZmZlciwgaW5zdGFuY2VzKTsKKyAg
ICB9CisgICAgZWxzZSBpZiAoaW5zdGFuY2VzID4gMCkKKyAgICB7CisgICAgICAgIG1EZXZpY2VD
b250ZXh0LT5EcmF3SW5kZXhlZEluc3RhbmNlZChjb3VudCwgaW5zdGFuY2VzLCAwLCAtc3RhdGlj
X2Nhc3Q8aW50PihpbmRleEluZm8ubWluSW5kZXgpLCAwKTsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbmRleGVkKGNvdW50LCAwLCAtc3RhdGlj
X2Nhc3Q8aW50PihpbmRleEluZm8ubWluSW5kZXgpKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVy
ZXIxMTo6ZHJhd0xpbmVMb29wKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv
aWQgKmluZGljZXMsIGludCBtaW5JbmRleCwgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVy
KQoreworICAgIC8vIEdldCB0aGUgcmF3IGluZGljZXMgZm9yIGFuIGluZGV4ZWQgZHJhdworICAg
IGlmICh0eXBlICE9IEdMX05PTkUgJiYgZWxlbWVudEFycmF5QnVmZmVyKQorICAgIHsKKyAgICAg
ICAgZ2w6OkJ1ZmZlciAqaW5kZXhCdWZmZXIgPSBlbGVtZW50QXJyYXlCdWZmZXI7CisgICAgICAg
IEJ1ZmZlclN0b3JhZ2UgKnN0b3JhZ2UgPSBpbmRleEJ1ZmZlci0+Z2V0U3RvcmFnZSgpOworICAg
ICAgICBpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PGludHB0cl90PihpbmRpY2Vz
KTsKKyAgICAgICAgaW5kaWNlcyA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihzdG9yYWdl
LT5nZXREYXRhKCkpICsgb2Zmc2V0OworICAgIH0KKworICAgIGlmICghbUxpbmVMb29wSUIpCisg
ICAgeworICAgICAgICBtTGluZUxvb3BJQiA9IG5ldyBTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVy
ZmFjZSh0aGlzKTsKKyAgICAgICAgaWYgKCFtTGluZUxvb3BJQi0+cmVzZXJ2ZUJ1ZmZlclNwYWNl
KElOSVRJQUxfSU5ERVhfQlVGRkVSX1NJWkUsIEdMX1VOU0lHTkVEX0lOVCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlbGV0ZSBtTGluZUxvb3BJQjsKKyAgICAgICAgICAgIG1MaW5lTG9vcElC
ID0gTlVMTDsKKworICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGEgMzItYml0IGxv
b3BpbmcgaW5kZXggYnVmZmVyIGZvciBHTF9MSU5FX0xPT1AuIik7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQgKyAxKSA+IChzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGludCkpKQorICAg
IHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGEgMzItYml0IGxvb3BpbmcgaW5kZXgg
YnVmZmVyIGZvciBHTF9MSU5FX0xPT1AsIHRvbyBtYW55IGluZGljZXMgcmVxdWlyZWQuIik7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAg
Y29uc3QgdW5zaWduZWQgaW50IHNwYWNlTmVlZGVkID0gKGNvdW50ICsgMSkgKiBzaXplb2YodW5z
aWduZWQgaW50KTsKKyAgICBpZiAoIW1MaW5lTG9vcElCLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3Bh
Y2VOZWVkZWQsIEdMX1VOU0lHTkVEX0lOVCkpCisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5v
dCByZXNlcnZlIGVub3VnaCBzcGFjZSBpbiBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElO
RV9MT09QLiIpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwor
ICAgIH0KKworICAgIHZvaWQqIG1hcHBlZE1lbW9yeSA9IE5VTEw7CisgICAgaW50IG9mZnNldCA9
IG1MaW5lTG9vcElCLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnkpOworICAg
IGlmIChvZmZzZXQgPT0gLTEgfHwgbWFwcGVkTWVtb3J5ID09IE5VTEwpCisgICAgeworICAgICAg
ICBFUlIoIkNvdWxkIG5vdCBtYXAgaW5kZXggYnVmZmVyIGZvciBHTF9MSU5FX0xPT1AuIik7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAg
dW5zaWduZWQgaW50ICpkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihtYXBw
ZWRNZW1vcnkpOworICAgIHVuc2lnbmVkIGludCBpbmRleEJ1ZmZlck9mZnNldCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4ob2Zmc2V0KTsKKworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7Cisg
ICAgICBjYXNlIEdMX05PTkU6ICAgLy8gTm9uLWluZGV4ZWQgZHJhdworICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFbaV0g
PSBpOworICAgICAgICB9CisgICAgICAgIGRhdGFbY291bnRdID0gMDsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGF0YVtpXSA9IHN0YXRpY19j
YXN0PGNvbnN0IEdMdWJ5dGUqPihpbmRpY2VzKVtpXTsKKyAgICAgICAgfQorICAgICAgICBkYXRh
W2NvdW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihpbmRpY2VzKVswXTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFbaV0g
PSBzdGF0aWNfY2FzdDxjb25zdCBHTHVzaG9ydCo+KGluZGljZXMpW2ldOworICAgICAgICB9Cisg
ICAgICAgIGRhdGFbY291bnRdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1c2hvcnQqPihpbmRpY2Vz
KVswXTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNlcylbaV07CisgICAg
ICAgIH0KKyAgICAgICAgZGF0YVtjb3VudF0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVpbnQqPihp
bmRpY2VzKVswXTsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OworICAgIH0KKworICAgIGlmICghbUxpbmVMb29wSUItPnVubWFwQnVmZmVyKCkpCisgICAgewor
ICAgICAgICBFUlIoIkNvdWxkIG5vdCB1bm1hcCBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9P
UC4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9
CisKKyAgICBpZiAobUFwcGxpZWRJQlNlcmlhbCAhPSBtTGluZUxvb3BJQi0+Z2V0U2VyaWFsKCkg
fHwgbUFwcGxpZWRJQk9mZnNldCAhPSBpbmRleEJ1ZmZlck9mZnNldCkKKyAgICB7CisgICAgICAg
IEluZGV4QnVmZmVyMTEgKmluZGV4QnVmZmVyID0gSW5kZXhCdWZmZXIxMTo6bWFrZUluZGV4QnVm
ZmVyMTEobUxpbmVMb29wSUItPmdldEluZGV4QnVmZmVyKCkpOworCisgICAgICAgIG1EZXZpY2VD
b250ZXh0LT5JQVNldEluZGV4QnVmZmVyKGluZGV4QnVmZmVyLT5nZXRCdWZmZXIoKSwgaW5kZXhC
dWZmZXItPmdldEluZGV4Rm9ybWF0KCksIGluZGV4QnVmZmVyT2Zmc2V0KTsKKyAgICAgICAgbUFw
cGxpZWRJQlNlcmlhbCA9IG1MaW5lTG9vcElCLT5nZXRTZXJpYWwoKTsKKyAgICAgICAgbUFwcGxp
ZWRTdG9yYWdlSUJTZXJpYWwgPSAwOworICAgICAgICBtQXBwbGllZElCT2Zmc2V0ID0gaW5kZXhC
dWZmZXJPZmZzZXQ7CisgICAgfQorCisgICAgbURldmljZUNvbnRleHQtPkRyYXdJbmRleGVkKGNv
dW50ICsgMSwgMCwgLW1pbkluZGV4KTsKK30KKwordm9pZCBSZW5kZXJlcjExOjpkcmF3VHJpYW5n
bGVGYW4oR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywg
aW50IG1pbkluZGV4LCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIsIGludCBpbnN0YW5j
ZXMpCit7CisgICAgLy8gR2V0IHRoZSByYXcgaW5kaWNlcyBmb3IgYW4gaW5kZXhlZCBkcmF3Cisg
ICAgaWYgKHR5cGUgIT0gR0xfTk9ORSAmJiBlbGVtZW50QXJyYXlCdWZmZXIpCisgICAgeworICAg
ICAgICBnbDo6QnVmZmVyICppbmRleEJ1ZmZlciA9IGVsZW1lbnRBcnJheUJ1ZmZlcjsKKyAgICAg
ICAgQnVmZmVyU3RvcmFnZSAqc3RvcmFnZSA9IGluZGV4QnVmZmVyLT5nZXRTdG9yYWdlKCk7Cisg
ICAgICAgIGludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluZGlj
ZXMpOworICAgICAgICBpbmRpY2VzID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KHN0b3Jh
Z2UtPmdldERhdGEoKSkgKyBvZmZzZXQ7CisgICAgfQorCisgICAgaWYgKCFtVHJpYW5nbGVGYW5J
QikKKyAgICB7CisgICAgICAgIG1UcmlhbmdsZUZhbklCID0gbmV3IFN0cmVhbWluZ0luZGV4QnVm
ZmVySW50ZXJmYWNlKHRoaXMpOworICAgICAgICBpZiAoIW1UcmlhbmdsZUZhbklCLT5yZXNlcnZl
QnVmZmVyU3BhY2UoSU5JVElBTF9JTkRFWF9CVUZGRVJfU0laRSwgR0xfVU5TSUdORURfSU5UKSkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVsZXRlIG1UcmlhbmdsZUZhbklCOworICAgICAgICAg
ICAgbVRyaWFuZ2xlRmFuSUIgPSBOVUxMOworCisgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBj
cmVhdGUgYSBzY3JhdGNoIGluZGV4IGJ1ZmZlciBmb3IgR0xfVFJJQU5HTEVfRkFOLiIpOworICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBudW1UcmlzID0gY291bnQgLSAyOworCisg
ICAgaWYgKG51bVRyaXMgKiAzID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6
bWF4KCkgLyBzaXplb2YodW5zaWduZWQgaW50KSkpCisgICAgeworICAgICAgICBFUlIoIkNvdWxk
IG5vdCBjcmVhdGUgYSBzY3JhdGNoIGluZGV4IGJ1ZmZlciBmb3IgR0xfVFJJQU5HTEVfRkFOLCB0
b28gbWFueSBpbmRpY2VzIHJlcXVpcmVkLiIpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBzcGFjZU5l
ZWRlZCA9IChudW1UcmlzICogMykgKiBzaXplb2YodW5zaWduZWQgaW50KTsKKyAgICBpZiAoIW1U
cmlhbmdsZUZhbklCLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lHTkVE
X0lOVCkpCisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5vdCByZXNlcnZlIGVub3VnaCBzcGFj
ZSBpbiBzY3JhdGNoIGluZGV4IGJ1ZmZlciBmb3IgR0xfVFJJQU5HTEVfRkFOLiIpOworICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIHZvaWQq
IG1hcHBlZE1lbW9yeSA9IE5VTEw7CisgICAgaW50IG9mZnNldCA9IG1UcmlhbmdsZUZhbklCLT5t
YXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnkpOworICAgIGlmIChvZmZzZXQgPT0g
LTEgfHwgbWFwcGVkTWVtb3J5ID09IE5VTEwpCisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5v
dCBtYXAgc2NyYXRjaCBpbmRleCBidWZmZXIgZm9yIEdMX1RSSUFOR0xFX0ZBTi4iKTsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9CisKKyAgICB1bnNp
Z25lZCBpbnQgKmRhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGludCo+KG1hcHBlZE1l
bW9yeSk7CisgICAgdW5zaWduZWQgaW50IGluZGV4QnVmZmVyT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgaW50PihvZmZzZXQpOworCisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAg
IGNhc2UgR0xfTk9ORTogICAvLyBOb24taW5kZXhlZCBkcmF3CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgbnVtVHJpczsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBk
YXRhW2kqMyArIDBdID0gMDsKKyAgICAgICAgICAgIGRhdGFbaSozICsgMV0gPSBpICsgMTsKKyAg
ICAgICAgICAgIGRhdGFbaSozICsgMl0gPSBpICsgMjsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBudW1UcmlzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFb
aSozICsgMF0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5kaWNlcylbMF07CisgICAg
ICAgICAgICBkYXRhW2kqMyArIDFdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KGluZGlj
ZXMpW2kgKyAxXTsKKyAgICAgICAgICAgIGRhdGFbaSozICsgMl0gPSBzdGF0aWNfY2FzdDxjb25z
dCBHTHVieXRlKj4oaW5kaWNlcylbaSArIDJdOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBudW1UcmlzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFbaSoz
ICsgMF0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVzaG9ydCo+KGluZGljZXMpWzBdOworICAgICAg
ICAgICAgZGF0YVtpKjMgKyAxXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNl
cylbaSArIDFdOworICAgICAgICAgICAgZGF0YVtpKjMgKyAyXSA9IHN0YXRpY19jYXN0PGNvbnN0
IEdMdXNob3J0Kj4oaW5kaWNlcylbaSArIDJdOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgbnVtVHJpczsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBkYXRhW2kqMyAr
IDBdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNlcylbMF07CisgICAgICAgICAg
ICBkYXRhW2kqMyArIDFdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNlcylbaSAr
IDFdOworICAgICAgICAgICAgZGF0YVtpKjMgKyAyXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWlu
dCo+KGluZGljZXMpW2kgKyAyXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgaWYgKCFtVHJpYW5nbGVGYW5JQi0+
dW5tYXBCdWZmZXIoKSkKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IHVubWFwIHNjcmF0
Y2ggaW5kZXggYnVmZmVyIGZvciBHTF9UUklBTkdMRV9GQU4uIik7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgaWYgKG1BcHBsaWVkSUJT
ZXJpYWwgIT0gbVRyaWFuZ2xlRmFuSUItPmdldFNlcmlhbCgpIHx8IG1BcHBsaWVkSUJPZmZzZXQg
IT0gaW5kZXhCdWZmZXJPZmZzZXQpCisgICAgeworICAgICAgICBJbmRleEJ1ZmZlcjExICppbmRl
eEJ1ZmZlciA9IEluZGV4QnVmZmVyMTE6Om1ha2VJbmRleEJ1ZmZlcjExKG1UcmlhbmdsZUZhbklC
LT5nZXRJbmRleEJ1ZmZlcigpKTsKKworICAgICAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbmRl
eEJ1ZmZlcihpbmRleEJ1ZmZlci0+Z2V0QnVmZmVyKCksIGluZGV4QnVmZmVyLT5nZXRJbmRleEZv
cm1hdCgpLCBpbmRleEJ1ZmZlck9mZnNldCk7CisgICAgICAgIG1BcHBsaWVkSUJTZXJpYWwgPSBt
VHJpYW5nbGVGYW5JQi0+Z2V0U2VyaWFsKCk7CisgICAgICAgIG1BcHBsaWVkU3RvcmFnZUlCU2Vy
aWFsID0gMDsKKyAgICAgICAgbUFwcGxpZWRJQk9mZnNldCA9IGluZGV4QnVmZmVyT2Zmc2V0Owor
ICAgIH0KKworICAgIGlmIChpbnN0YW5jZXMgPiAwKQorICAgIHsKKyAgICAgICAgbURldmljZUNv
bnRleHQtPkRyYXdJbmRleGVkSW5zdGFuY2VkKG51bVRyaXMgKiAzLCBpbnN0YW5jZXMsIDAsIC1t
aW5JbmRleCwgMCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1EZXZpY2VDb250
ZXh0LT5EcmF3SW5kZXhlZChudW1UcmlzICogMywgMCwgLW1pbkluZGV4KTsKKyAgICB9Cit9CisK
K3ZvaWQgUmVuZGVyZXIxMTo6YXBwbHlTaGFkZXJzKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFt
QmluYXJ5KQoreworICAgIHVuc2lnbmVkIGludCBwcm9ncmFtQmluYXJ5U2VyaWFsID0gcHJvZ3Jh
bUJpbmFyeS0+Z2V0U2VyaWFsKCk7CisgICAgY29uc3QgYm9vbCB1cGRhdGVQcm9ncmFtU3RhdGUg
PSAocHJvZ3JhbUJpbmFyeVNlcmlhbCAhPSBtQXBwbGllZFByb2dyYW1CaW5hcnlTZXJpYWwpOwor
CisgICAgaWYgKHVwZGF0ZVByb2dyYW1TdGF0ZSkKKyAgICB7CisgICAgICAgIFNoYWRlckV4ZWN1
dGFibGUgKnZlcnRleEV4ZSA9IHByb2dyYW1CaW5hcnktPmdldFZlcnRleEV4ZWN1dGFibGUoKTsK
KyAgICAgICAgU2hhZGVyRXhlY3V0YWJsZSAqcGl4ZWxFeGUgPSBwcm9ncmFtQmluYXJ5LT5nZXRQ
aXhlbEV4ZWN1dGFibGUoKTsKKworICAgICAgICBJRDNEMTFWZXJ0ZXhTaGFkZXIgKnZlcnRleFNo
YWRlciA9IE5VTEw7CisgICAgICAgIGlmICh2ZXJ0ZXhFeGUpIHZlcnRleFNoYWRlciA9IFNoYWRl
ckV4ZWN1dGFibGUxMTo6bWFrZVNoYWRlckV4ZWN1dGFibGUxMSh2ZXJ0ZXhFeGUpLT5nZXRWZXJ0
ZXhTaGFkZXIoKTsKKworICAgICAgICBJRDNEMTFQaXhlbFNoYWRlciAqcGl4ZWxTaGFkZXIgPSBO
VUxMOworICAgICAgICBpZiAocGl4ZWxFeGUpIHBpeGVsU2hhZGVyID0gU2hhZGVyRXhlY3V0YWJs
ZTExOjptYWtlU2hhZGVyRXhlY3V0YWJsZTExKHBpeGVsRXhlKS0+Z2V0UGl4ZWxTaGFkZXIoKTsK
KworICAgICAgICBtRGV2aWNlQ29udGV4dC0+UFNTZXRTaGFkZXIocGl4ZWxTaGFkZXIsIE5VTEws
IDApOworICAgICAgICBtRGV2aWNlQ29udGV4dC0+VlNTZXRTaGFkZXIodmVydGV4U2hhZGVyLCBO
VUxMLCAwKTsKKworICAgICAgICBwcm9ncmFtQmluYXJ5LT5kaXJ0eUFsbFVuaWZvcm1zKCk7CisK
KyAgICAgICAgbUFwcGxpZWRQcm9ncmFtQmluYXJ5U2VyaWFsID0gcHJvZ3JhbUJpbmFyeVNlcmlh
bDsKKyAgICB9CisKKyAgICAvLyBPbmx5IHVzZSB0aGUgZ2VvbWV0cnkgc2hhZGVyIGN1cnJlbnRs
eSBmb3IgcG9pbnQgc3ByaXRlIGRyYXdpbmcKKyAgICBjb25zdCBib29sIHVzZXNHZW9tZXRyeVNo
YWRlciA9IChwcm9ncmFtQmluYXJ5LT51c2VzR2VvbWV0cnlTaGFkZXIoKSAmJiBtQ3VyUmFzdGVy
U3RhdGUucG9pbnREcmF3TW9kZSk7CisKKyAgICBpZiAodXBkYXRlUHJvZ3JhbVN0YXRlIHx8IHVz
ZXNHZW9tZXRyeVNoYWRlciAhPSBtSXNHZW9tZXRyeVNoYWRlckFjdGl2ZSkKKyAgICB7CisgICAg
ICAgIGlmICh1c2VzR2VvbWV0cnlTaGFkZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNoYWRl
ckV4ZWN1dGFibGUgKmdlb21ldHJ5RXhlID0gcHJvZ3JhbUJpbmFyeS0+Z2V0R2VvbWV0cnlFeGVj
dXRhYmxlKCk7CisgICAgICAgICAgICBJRDNEMTFHZW9tZXRyeVNoYWRlciAqZ2VvbWV0cnlTaGFk
ZXIgPSBTaGFkZXJFeGVjdXRhYmxlMTE6Om1ha2VTaGFkZXJFeGVjdXRhYmxlMTEoZ2VvbWV0cnlF
eGUpLT5nZXRHZW9tZXRyeVNoYWRlcigpOworICAgICAgICAgICAgbURldmljZUNvbnRleHQtPkdT
U2V0U2hhZGVyKGdlb21ldHJ5U2hhZGVyLCBOVUxMLCAwKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5HU1NldFNoYWRlcihO
VUxMLCBOVUxMLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIG1Jc0dlb21ldHJ5U2hhZGVyQWN0
aXZlID0gdXNlc0dlb21ldHJ5U2hhZGVyOworICAgIH0KK30KKwordm9pZCBSZW5kZXJlcjExOjph
cHBseVVuaWZvcm1zKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5LCBnbDo6VW5pZm9y
bUFycmF5ICp1bmlmb3JtQXJyYXkpCit7CisgICAgU2hhZGVyRXhlY3V0YWJsZTExICp2ZXJ0ZXhF
eGVjdXRhYmxlID0gU2hhZGVyRXhlY3V0YWJsZTExOjptYWtlU2hhZGVyRXhlY3V0YWJsZTExKHBy
b2dyYW1CaW5hcnktPmdldFZlcnRleEV4ZWN1dGFibGUoKSk7CisgICAgU2hhZGVyRXhlY3V0YWJs
ZTExICpwaXhlbEV4ZWN1dGFibGUgPSBTaGFkZXJFeGVjdXRhYmxlMTE6Om1ha2VTaGFkZXJFeGVj
dXRhYmxlMTEocHJvZ3JhbUJpbmFyeS0+Z2V0UGl4ZWxFeGVjdXRhYmxlKCkpOworCisgICAgdW5z
aWduZWQgaW50IHRvdGFsUmVnaXN0ZXJDb3VudFZTID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgdG90
YWxSZWdpc3RlckNvdW50UFMgPSAwOworCisgICAgYm9vbCB2ZXJ0ZXhVbmlmb3Jtc0RpcnR5ID0g
ZmFsc2U7CisgICAgYm9vbCBwaXhlbFVuaWZvcm1zRGlydHkgPSBmYWxzZTsKKworICAgIGZvciAo
Z2w6OlVuaWZvcm1BcnJheTo6Y29uc3RfaXRlcmF0b3IgdW5pZm9ybV9pdGVyYXRvciA9IHVuaWZv
cm1BcnJheS0+YmVnaW4oKTsgdW5pZm9ybV9pdGVyYXRvciAhPSB1bmlmb3JtQXJyYXktPmVuZCgp
OyB1bmlmb3JtX2l0ZXJhdG9yKyspCisgICAgeworICAgICAgICBjb25zdCBnbDo6VW5pZm9ybSAq
dW5pZm9ybSA9ICp1bmlmb3JtX2l0ZXJhdG9yOworCisgICAgICAgIGlmICh1bmlmb3JtLT52c1Jl
Z2lzdGVySW5kZXggPj0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgdG90YWxSZWdpc3RlckNv
dW50VlMgKz0gdW5pZm9ybS0+cmVnaXN0ZXJDb3VudDsKKyAgICAgICAgICAgIHZlcnRleFVuaWZv
cm1zRGlydHkgPSB2ZXJ0ZXhVbmlmb3Jtc0RpcnR5IHx8IHVuaWZvcm0tPmRpcnR5OworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHVuaWZvcm0tPnBzUmVnaXN0ZXJJbmRleCA+PSAwKQorICAgICAg
ICB7CisgICAgICAgICAgICB0b3RhbFJlZ2lzdGVyQ291bnRQUyArPSB1bmlmb3JtLT5yZWdpc3Rl
ckNvdW50OworICAgICAgICAgICAgcGl4ZWxVbmlmb3Jtc0RpcnR5ID0gcGl4ZWxVbmlmb3Jtc0Rp
cnR5IHx8IHVuaWZvcm0tPmRpcnR5OworICAgICAgICB9CisgICAgfQorCisgICAgSUQzRDExQnVm
ZmVyICp2ZXJ0ZXhDb25zdGFudEJ1ZmZlciA9IHZlcnRleEV4ZWN1dGFibGUtPmdldENvbnN0YW50
QnVmZmVyKG1EZXZpY2UsIHRvdGFsUmVnaXN0ZXJDb3VudFZTKTsKKyAgICBJRDNEMTFCdWZmZXIg
KnBpeGVsQ29uc3RhbnRCdWZmZXIgPSBwaXhlbEV4ZWN1dGFibGUtPmdldENvbnN0YW50QnVmZmVy
KG1EZXZpY2UsIHRvdGFsUmVnaXN0ZXJDb3VudFBTKTsKKworICAgIGZsb2F0ICgqbWFwVlMpWzRd
ID0gTlVMTDsKKyAgICBmbG9hdCAoKm1hcFBTKVs0XSA9IE5VTEw7CisKKyAgICBpZiAodG90YWxS
ZWdpc3RlckNvdW50VlMgPiAwICYmIHZlcnRleFVuaWZvcm1zRGlydHkpCisgICAgeworICAgICAg
ICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwID0gezB9OworICAgICAgICBIUkVTVUxUIHJl
c3VsdCA9IG1EZXZpY2VDb250ZXh0LT5NYXAodmVydGV4Q29uc3RhbnRCdWZmZXIsIDAsIEQzRDEx
X01BUF9XUklURV9ESVNDQVJELCAwLCAmbWFwKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChy
ZXN1bHQpKTsKKyAgICAgICAgbWFwVlMgPSAoZmxvYXQoKilbNF0pbWFwLnBEYXRhOworICAgIH0K
KworICAgIGlmICh0b3RhbFJlZ2lzdGVyQ291bnRQUyA+IDAgJiYgcGl4ZWxVbmlmb3Jtc0RpcnR5
KQorICAgIHsKKyAgICAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcCA9IHswfTsKKyAg
ICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlQ29udGV4dC0+TWFwKHBpeGVsQ29uc3RhbnRC
dWZmZXIsIDAsIEQzRDExX01BUF9XUklURV9ESVNDQVJELCAwLCAmbWFwKTsKKyAgICAgICAgQVNT
RVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgbWFwUFMgPSAoZmxvYXQoKilbNF0pbWFw
LnBEYXRhOworICAgIH0KKworICAgIGZvciAoZ2w6OlVuaWZvcm1BcnJheTo6aXRlcmF0b3IgdW5p
Zm9ybV9pdGVyYXRvciA9IHVuaWZvcm1BcnJheS0+YmVnaW4oKTsgdW5pZm9ybV9pdGVyYXRvciAh
PSB1bmlmb3JtQXJyYXktPmVuZCgpOyB1bmlmb3JtX2l0ZXJhdG9yKyspCisgICAgeworICAgICAg
ICBnbDo6VW5pZm9ybSAqdW5pZm9ybSA9ICp1bmlmb3JtX2l0ZXJhdG9yOworCisgICAgICAgIGlm
ICh1bmlmb3JtLT50eXBlICE9ICBHTF9TQU1QTEVSXzJEICYmIHVuaWZvcm0tPnR5cGUgIT0gR0xf
U0FNUExFUl9DVUJFKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodW5pZm9ybS0+dnNSZWdp
c3RlckluZGV4ID49IDAgJiYgbWFwVlMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
bWVtY3B5KG1hcFZTICsgdW5pZm9ybS0+dnNSZWdpc3RlckluZGV4LCB1bmlmb3JtLT5kYXRhLCB1
bmlmb3JtLT5yZWdpc3RlckNvdW50ICogc2l6ZW9mKGZsb2F0WzRdKSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmICh1bmlmb3JtLT5wc1JlZ2lzdGVySW5kZXggPj0gMCAmJiBtYXBQ
UykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtZW1jcHkobWFwUFMgKyB1bmlmb3Jt
LT5wc1JlZ2lzdGVySW5kZXgsIHVuaWZvcm0tPmRhdGEsIHVuaWZvcm0tPnJlZ2lzdGVyQ291bnQg
KiBzaXplb2YoZmxvYXRbNF0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IHVuaWZvcm0tPmRpcnR5ID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1hcFZTKQorICAgIHsK
KyAgICAgICAgbURldmljZUNvbnRleHQtPlVubWFwKHZlcnRleENvbnN0YW50QnVmZmVyLCAwKTsK
KyAgICB9CisKKyAgICBpZiAobWFwUFMpCisgICAgeworICAgICAgICBtRGV2aWNlQ29udGV4dC0+
VW5tYXAocGl4ZWxDb25zdGFudEJ1ZmZlciwgMCk7CisgICAgfQorICAgIAorICAgIG1EZXZpY2VD
b250ZXh0LT5WU1NldENvbnN0YW50QnVmZmVycygwLCAxLCAmdmVydGV4Q29uc3RhbnRCdWZmZXIp
OworICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldENvbnN0YW50QnVmZmVycygwLCAxLCAmcGl4ZWxD
b25zdGFudEJ1ZmZlcik7CisKKyAgICAvLyBEcml2ZXIgdW5pZm9ybXMKKyAgICBpZiAoIW1Ecml2
ZXJDb25zdGFudEJ1ZmZlclZTKQorICAgIHsKKyAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgY29u
c3RhbnRCdWZmZXJEZXNjcmlwdGlvbiA9IHswfTsKKyAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNj
cmlwdGlvbi5CeXRlV2lkdGggPSBzaXplb2YoZHhfVmVydGV4Q29uc3RhbnRzKTsKKyAgICAgICAg
Y29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7Cisg
ICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uQmluZEZsYWdzID0gRDNEMTFfQklORF9D
T05TVEFOVF9CVUZGRVI7CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uQ1BVQWNj
ZXNzRmxhZ3MgPSAwOworICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLk1pc2NGbGFn
cyA9IDA7CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uU3RydWN0dXJlQnl0ZVN0
cmlkZSA9IDA7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVCdWZm
ZXIoJmNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24sIE5VTEwsICZtRHJpdmVyQ29uc3RhbnRCdWZm
ZXJWUyk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgbURl
dmljZUNvbnRleHQtPlZTU2V0Q29uc3RhbnRCdWZmZXJzKDEsIDEsICZtRHJpdmVyQ29uc3RhbnRC
dWZmZXJWUyk7CisgICAgfQorCisgICAgaWYgKCFtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUykKKyAg
ICB7CisgICAgICAgIEQzRDExX0JVRkZFUl9ERVNDIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24g
PSB7MH07CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uQnl0ZVdpZHRoID0gc2l6
ZW9mKGR4X1BpeGVsQ29uc3RhbnRzKTsKKyAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlv
bi5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVz
Y3JpcHRpb24uQmluZEZsYWdzID0gRDNEMTFfQklORF9DT05TVEFOVF9CVUZGRVI7CisgICAgICAg
IGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uQ1BVQWNjZXNzRmxhZ3MgPSAwOworICAgICAgICBj
b25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLk1pc2NGbGFncyA9IDA7CisgICAgICAgIGNvbnN0YW50
QnVmZmVyRGVzY3JpcHRpb24uU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7CisKKyAgICAgICAgSFJF
U1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVCdWZmZXIoJmNvbnN0YW50QnVmZmVyRGVzY3Jp
cHRpb24sIE5VTEwsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUyk7CisgICAgICAgIEFTU0VSVChT
VUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgbURldmljZUNvbnRleHQtPlBTU2V0Q29uc3Rh
bnRCdWZmZXJzKDEsIDEsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUyk7CisgICAgfQorCisgICAg
aWYgKG1lbWNtcCgmbVZlcnRleENvbnN0YW50cywgJm1BcHBsaWVkVmVydGV4Q29uc3RhbnRzLCBz
aXplb2YoZHhfVmVydGV4Q29uc3RhbnRzKSkgIT0gMCkKKyAgICB7CisgICAgICAgIG1EZXZpY2VD
b250ZXh0LT5VcGRhdGVTdWJyZXNvdXJjZShtRHJpdmVyQ29uc3RhbnRCdWZmZXJWUywgMCwgTlVM
TCwgJm1WZXJ0ZXhDb25zdGFudHMsIDE2LCAwKTsKKyAgICAgICAgbWVtY3B5KCZtQXBwbGllZFZl
cnRleENvbnN0YW50cywgJm1WZXJ0ZXhDb25zdGFudHMsIHNpemVvZihkeF9WZXJ0ZXhDb25zdGFu
dHMpKTsKKyAgICB9CisKKyAgICBpZiAobWVtY21wKCZtUGl4ZWxDb25zdGFudHMsICZtQXBwbGll
ZFBpeGVsQ29uc3RhbnRzLCBzaXplb2YoZHhfUGl4ZWxDb25zdGFudHMpKSAhPSAwKQorICAgIHsK
KyAgICAgICAgbURldmljZUNvbnRleHQtPlVwZGF0ZVN1YnJlc291cmNlKG1Ecml2ZXJDb25zdGFu
dEJ1ZmZlclBTLCAwLCBOVUxMLCAmbVBpeGVsQ29uc3RhbnRzLCAxNiwgMCk7CisgICAgICAgIG1l
bWNweSgmbUFwcGxpZWRQaXhlbENvbnN0YW50cywgJm1QaXhlbENvbnN0YW50cywgc2l6ZW9mKGR4
X1BpeGVsQ29uc3RhbnRzKSk7CisgICAgfQorCisgICAgLy8gbmVlZGVkIGZvciB0aGUgcG9pbnQg
c3ByaXRlIGdlb21ldHJ5IHNoYWRlcgorICAgIG1EZXZpY2VDb250ZXh0LT5HU1NldENvbnN0YW50
QnVmZmVycygwLCAxLCAmbURyaXZlckNvbnN0YW50QnVmZmVyUFMpOworfQorCit2b2lkIFJlbmRl
cmVyMTE6OmNsZWFyKGNvbnN0IGdsOjpDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLCBnbDo6
RnJhbWVidWZmZXIgKmZyYW1lQnVmZmVyKQoreworICAgICBib29sIGFscGhhVW5tYXNrZWQgPSAo
Z2w6OkdldEFscGhhU2l6ZShtUmVuZGVyVGFyZ2V0RGVzYy5mb3JtYXQpID09IDApIHx8IGNsZWFy
UGFyYW1zLmNvbG9yTWFza0FscGhhOworICAgICBib29sIG5lZWRNYXNrZWRDb2xvckNsZWFyID0g
KGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKSAmJgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIShjbGVhclBhcmFtcy5jb2xvck1hc2tSZWQgJiYgY2xlYXJQ
YXJhbXMuY29sb3JNYXNrR3JlZW4gJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZSAmJiBhbHBoYVVubWFza2VkKTsKKworICAgICB1
bnNpZ25lZCBpbnQgc3RlbmNpbFVubWFza2VkID0gMHgwOworICAgICBpZiAoZnJhbWVCdWZmZXIt
Pmhhc1N0ZW5jaWwoKSkKKyAgICAgeworICAgICAgICAgdW5zaWduZWQgaW50IHN0ZW5jaWxTaXpl
ID0gZ2w6OkdldFN0ZW5jaWxTaXplKGZyYW1lQnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyKCktPmdl
dEFjdHVhbEZvcm1hdCgpKTsKKyAgICAgICAgIHN0ZW5jaWxVbm1hc2tlZCA9ICgweDEgPDwgc3Rl
bmNpbFNpemUpIC0gMTsKKyAgICAgfQorICAgICBib29sIG5lZWRNYXNrZWRTdGVuY2lsQ2xlYXIg
PSAoY2xlYXJQYXJhbXMubWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkgJiYKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1hc2sg
JiBzdGVuY2lsVW5tYXNrZWQpICE9IHN0ZW5jaWxVbm1hc2tlZDsKKworICAgICBib29sIG5lZWRT
Y2lzc29yZWRDbGVhciA9IG1TY2lzc29yRW5hYmxlZCAmJiAobUN1clNjaXNzb3IueCA+IDAgfHwg
bUN1clNjaXNzb3IueSA+IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1DdXJTY2lzc29yLnggKyBtQ3VyU2Npc3Nvci53aWR0aCA8IG1SZW5k
ZXJUYXJnZXREZXNjLndpZHRoIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtQ3VyU2Npc3Nvci55ICsgbUN1clNjaXNzb3IuaGVpZ2h0IDwgbVJl
bmRlclRhcmdldERlc2MuaGVpZ2h0KTsKKworICAgICBpZiAobmVlZE1hc2tlZENvbG9yQ2xlYXIg
fHwgbmVlZE1hc2tlZFN0ZW5jaWxDbGVhciB8fCBuZWVkU2Npc3NvcmVkQ2xlYXIpCisgICAgIHsK
KyAgICAgICAgIG1hc2tlZENsZWFyKGNsZWFyUGFyYW1zLCBmcmFtZUJ1ZmZlci0+dXNpbmdFeHRl
bmRlZERyYXdCdWZmZXJzKCkpOworICAgICB9CisgICAgIGVsc2UKKyAgICAgeworICAgICAgICAg
aWYgKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKQorICAgICAgICAgewor
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9y
QXR0YWNobWVudCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTOyBjb2xvckF0
dGFjaG1lbnQrKykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGlmIChmcmFtZUJ1
ZmZlci0+aXNFbmFibGVkQ29sb3JBdHRhY2htZW50KGNvbG9yQXR0YWNobWVudCkpCisgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKnJlbmRl
cmJ1ZmZlck9iamVjdCA9IGZyYW1lQnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcihjb2xvckF0dGFjaG1l
bnQpOworICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmJ1ZmZlck9iamVjdCkKKyAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldDEx
ICpyZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKHJlbmRl
cmJ1ZmZlck9iamVjdC0+Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFyZW5kZXJUYXJnZXQpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRVJSKCJyZW5kZXIgdGFyZ2V0IHBvaW50ZXIgdW5leHBlY3Rl
ZGx5IG51bGwuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFSZW5k
ZXJUYXJnZXRWaWV3ICpmcmFtZWJ1ZmZlclJUViA9IHJlbmRlclRhcmdldC0+Z2V0UmVuZGVyVGFy
Z2V0VmlldygpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmcmFtZWJ1ZmZlclJUVikK
KyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
UlIoInJlbmRlciB0YXJnZXQgdmlldyBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgY2xlYXJWYWx1ZXNbNF0g
PSB7IGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZS5yZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJQYXJhbXMuY29sb3JDbGVh
clZhbHVlLmdyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZS5ibHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1z
LmNvbG9yQ2xlYXJWYWx1ZS5hbHBoYSB9OworICAgICAgICAgICAgICAgICAgICAgICAgbURldmlj
ZUNvbnRleHQtPkNsZWFyUmVuZGVyVGFyZ2V0VmlldyhmcmFtZWJ1ZmZlclJUViwgY2xlYXJWYWx1
ZXMpOworCisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlclJUVi0+UmVsZWFzZSgp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9ERVBUSF9C
VUZGRVJfQklUIHx8IGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlck9iamVj
dCA9IGZyYW1lQnVmZmVyLT5nZXREZXB0aE9yU3RlbmNpbGJ1ZmZlcigpOworICAgICAgICAgICAg
aWYgKHJlbmRlcmJ1ZmZlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBS
ZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJU
YXJnZXQxMShyZW5kZXJidWZmZXJPYmplY3QtPmdldERlcHRoU3RlbmNpbCgpKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIXJlbmRlclRhcmdldCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIEVSUigicmVuZGVyIHRhcmdldCBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZnJhbWVidWZmZXJEU1YgPSByZW5k
ZXJUYXJnZXQtPmdldERlcHRoU3RlbmNpbFZpZXcoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWZy
YW1lYnVmZmVyRFNWKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgRVJS
KCJkZXB0aCBzdGVuY2lsIHZpZXcgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIFVJTlQgY2xlYXJGbGFncyA9IDA7CisgICAgICAgICAgICAgICAgaWYgKGNsZWFyUGFyYW1z
Lm1hc2sgJiBHTF9ERVBUSF9CVUZGRVJfQklUKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2xlYXJGbGFncyB8PSBEM0QxMV9DTEVBUl9ERVBUSDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9TVEVOQ0lM
X0JVRkZFUl9CSVQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjbGVh
ckZsYWdzIHw9IEQzRDExX0NMRUFSX1NURU5DSUw7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgZmxvYXQgZGVwdGhDbGVhciA9IGdsOjpjbGFtcDAxKGNsZWFyUGFyYW1zLmRl
cHRoQ2xlYXJWYWx1ZSk7CisgICAgICAgICAgICAgICAgVUlOVDggc3RlbmNpbENsZWFyID0gY2xl
YXJQYXJhbXMuc3RlbmNpbENsZWFyVmFsdWUgJiAweDAwMDAwMEZGOworCisgICAgICAgICAgICAg
ICAgbURldmljZUNvbnRleHQtPkNsZWFyRGVwdGhTdGVuY2lsVmlldyhmcmFtZWJ1ZmZlckRTViwg
Y2xlYXJGbGFncywgZGVwdGhDbGVhciwgc3RlbmNpbENsZWFyKTsKKworICAgICAgICAgICAgICAg
IGZyYW1lYnVmZmVyRFNWLT5SZWxlYXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6bWFza2VkQ2xlYXIoY29uc3QgZ2w6OkNsZWFyUGFy
YW1ldGVycyAmY2xlYXJQYXJhbXMsIGJvb2wgdXNpbmdFeHRlbmRlZERyYXdCdWZmZXJzKQorewor
ICAgIEhSRVNVTFQgcmVzdWx0OworCisgICAgaWYgKCFtQ2xlYXJSZXNvdXJjZXNJbml0aWFsaXpl
ZCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbUNsZWFyVkIgJiYgIW1DbGVhclZTICYmICFtQ2xl
YXJTaW5nbGVQUyAmJiAhbUNsZWFyTXVsdGlwbGVQUyAmJiAhbUNsZWFyU2Npc3NvclJTICYmICFt
Q2xlYXJOb1NjaXNzb3JSUyk7CisKKyAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgdmJEZXNjOwor
ICAgICAgICB2YkRlc2MuQnl0ZVdpZHRoID0gc2l6ZW9mKGQzZDExOjpQb3NpdGlvbkRlcHRoQ29s
b3JWZXJ0ZXgpICogNDsKKyAgICAgICAgdmJEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfRFlOQU1J
QzsKKyAgICAgICAgdmJEZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfVkVSVEVYX0JVRkZFUjsK
KyAgICAgICAgdmJEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsK
KyAgICAgICAgdmJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgIHZiRGVzYy5TdHJ1Y3R1cmVC
eXRlU3RyaWRlID0gMDsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVCdWZmZXIo
JnZiRGVzYywgTlVMTCwgJm1DbGVhclZCKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1
bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ2xlYXJWQiwgIlJlbmRlcmVyMTEg
bWFza2VkIGNsZWFyIHZlcnRleCBidWZmZXIiKTsKKworICAgICAgICBEM0QxMV9JTlBVVF9FTEVN
RU5UX0RFU0MgcXVhZExheW91dFtdID0KKyAgICAgICAgeworICAgICAgICAgICAgeyAiUE9TSVRJ
T04iLCAwLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsICAgIDAsICAwLCBEM0QxMV9JTlBV
VF9QRVJfVkVSVEVYX0RBVEEsIDAgfSwKKyAgICAgICAgICAgIHsgIkNPTE9SIiwgICAgMCwgRFhH
SV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAwLCAxMiwgRDNEMTFfSU5QVVRfUEVSX1ZFUlRF
WF9EQVRBLCAwIH0sCisgICAgICAgIH07CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3Jl
YXRlSW5wdXRMYXlvdXQocXVhZExheW91dCwgMiwgZ19WU19DbGVhciwgc2l6ZW9mKGdfVlNfQ2xl
YXIpLCAmbUNsZWFySUwpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAg
ICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1DbGVhcklMLCAiUmVuZGVyZXIxMSBtYXNrZWQgY2xl
YXIgaW5wdXQgbGF5b3V0Iik7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlVmVy
dGV4U2hhZGVyKGdfVlNfQ2xlYXIsIHNpemVvZihnX1ZTX0NsZWFyKSwgTlVMTCwgJm1DbGVhclZT
KTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNl
dERlYnVnTmFtZShtQ2xlYXJWUywgIlJlbmRlcmVyMTEgbWFza2VkIGNsZWFyIHZlcnRleCBzaGFk
ZXIiKTsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVQaXhlbFNoYWRlcihnX1BT
X0NsZWFyU2luZ2xlLCBzaXplb2YoZ19QU19DbGVhclNpbmdsZSksIE5VTEwsICZtQ2xlYXJTaW5n
bGVQUyk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgICAgIGQzZDEx
OjpTZXREZWJ1Z05hbWUobUNsZWFyU2luZ2xlUFMsICJSZW5kZXJlcjExIG1hc2tlZCBjbGVhciBw
aXhlbCBzaGFkZXIgKDEgUlQpIik7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRl
UGl4ZWxTaGFkZXIoZ19QU19DbGVhck11bHRpcGxlLCBzaXplb2YoZ19QU19DbGVhck11bHRpcGxl
KSwgTlVMTCwgJm1DbGVhck11bHRpcGxlUFMpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJl
c3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1DbGVhck11bHRpcGxlUFMsICJS
ZW5kZXJlcjExIG1hc2tlZCBjbGVhciBwaXhlbCBzaGFkZXIgKE1SVCkiKTsKKworICAgICAgICBE
M0QxMV9SQVNURVJJWkVSX0RFU0MgcnNTY2lzc29yRGVzYzsKKyAgICAgICAgcnNTY2lzc29yRGVz
Yy5GaWxsTW9kZSA9IEQzRDExX0ZJTExfU09MSUQ7CisgICAgICAgIHJzU2Npc3NvckRlc2MuQ3Vs
bE1vZGUgPSBEM0QxMV9DVUxMX05PTkU7CisgICAgICAgIHJzU2Npc3NvckRlc2MuRnJvbnRDb3Vu
dGVyQ2xvY2t3aXNlID0gRkFMU0U7CisgICAgICAgIHJzU2Npc3NvckRlc2MuRGVwdGhCaWFzID0g
MDsKKyAgICAgICAgcnNTY2lzc29yRGVzYy5EZXB0aEJpYXNDbGFtcCA9IDAuMGY7CisgICAgICAg
IHJzU2Npc3NvckRlc2MuU2xvcGVTY2FsZWREZXB0aEJpYXMgPSAwLjBmOworICAgICAgICByc1Nj
aXNzb3JEZXNjLkRlcHRoQ2xpcEVuYWJsZSA9IEZBTFNFOworICAgICAgICByc1NjaXNzb3JEZXNj
LlNjaXNzb3JFbmFibGUgPSBUUlVFOworICAgICAgICByc1NjaXNzb3JEZXNjLk11bHRpc2FtcGxl
RW5hYmxlID0gRkFMU0U7CisgICAgICAgIHJzU2Npc3NvckRlc2MuQW50aWFsaWFzZWRMaW5lRW5h
YmxlID0gRkFMU0U7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUmFzdGVyaXpl
clN0YXRlKCZyc1NjaXNzb3JEZXNjLCAmbUNsZWFyU2Npc3NvclJTKTsKKyAgICAgICAgQVNTRVJU
KFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ2xlYXJT
Y2lzc29yUlMsICJSZW5kZXJlcjExIG1hc2tlZCBjbGVhciBzY2lzc29yIHJhc3Rlcml6ZXIgc3Rh
dGUiKTsKKworICAgICAgICBEM0QxMV9SQVNURVJJWkVSX0RFU0MgcnNOb1NjaXNzb3JEZXNjOwor
ICAgICAgICByc05vU2Npc3NvckRlc2MuRmlsbE1vZGUgPSBEM0QxMV9GSUxMX1NPTElEOworICAg
ICAgICByc05vU2Npc3NvckRlc2MuQ3VsbE1vZGUgPSBEM0QxMV9DVUxMX05PTkU7CisgICAgICAg
IHJzTm9TY2lzc29yRGVzYy5Gcm9udENvdW50ZXJDbG9ja3dpc2UgPSBGQUxTRTsKKyAgICAgICAg
cnNOb1NjaXNzb3JEZXNjLkRlcHRoQmlhcyA9IDA7CisgICAgICAgIHJzTm9TY2lzc29yRGVzYy5E
ZXB0aEJpYXNDbGFtcCA9IDAuMGY7CisgICAgICAgIHJzTm9TY2lzc29yRGVzYy5TbG9wZVNjYWxl
ZERlcHRoQmlhcyA9IDAuMGY7CisgICAgICAgIHJzTm9TY2lzc29yRGVzYy5EZXB0aENsaXBFbmFi
bGUgPSBGQUxTRTsKKyAgICAgICAgcnNOb1NjaXNzb3JEZXNjLlNjaXNzb3JFbmFibGUgPSBGQUxT
RTsKKyAgICAgICAgcnNOb1NjaXNzb3JEZXNjLk11bHRpc2FtcGxlRW5hYmxlID0gRkFMU0U7Cisg
ICAgICAgIHJzTm9TY2lzc29yRGVzYy5BbnRpYWxpYXNlZExpbmVFbmFibGUgPSBGQUxTRTsKKwor
ICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVSYXN0ZXJpemVyU3RhdGUoJnJzTm9TY2lz
c29yRGVzYywgJm1DbGVhck5vU2Npc3NvclJTKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChy
ZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ2xlYXJOb1NjaXNzb3JSUywg
IlJlbmRlcmVyMTEgbWFza2VkIGNsZWFyIG5vIHNjaXNzb3IgcmFzdGVyaXplciBzdGF0ZSIpOwor
CisgICAgICAgIG1DbGVhclJlc291cmNlc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICAvLyBQcmVwYXJlIHRoZSBkZXB0aCBzdGVuY2lsIHN0YXRlIHRvIHdyaXRlIGRlcHRoIHZhbHVl
cyBpZiB0aGUgZGVwdGggc2hvdWxkIGJlIGNsZWFyZWQKKyAgICAvLyBhbmQgc3RlbmNpbCB2YWx1
ZXMgaWYgdGhlIHN0ZW5jaWwgc2hvdWxkIGJlIGNsZWFyZWQKKyAgICBnbDo6RGVwdGhTdGVuY2ls
U3RhdGUgZ2xEU1N0YXRlOworICAgIGdsRFNTdGF0ZS5kZXB0aFRlc3QgPSAoY2xlYXJQYXJhbXMu
bWFzayAmIEdMX0RFUFRIX0JVRkZFUl9CSVQpICE9IDA7CisgICAgZ2xEU1N0YXRlLmRlcHRoRnVu
YyA9IEdMX0FMV0FZUzsKKyAgICBnbERTU3RhdGUuZGVwdGhNYXNrID0gKGNsZWFyUGFyYW1zLm1h
c2sgJiBHTF9ERVBUSF9CVUZGRVJfQklUKSAhPSAwOworICAgIGdsRFNTdGF0ZS5zdGVuY2lsVGVz
dCA9IChjbGVhclBhcmFtcy5tYXNrICYgR0xfU1RFTkNJTF9CVUZGRVJfQklUKSAhPSAwOworICAg
IGdsRFNTdGF0ZS5zdGVuY2lsRnVuYyA9IEdMX0FMV0FZUzsKKyAgICBnbERTU3RhdGUuc3RlbmNp
bE1hc2sgPSAwOworICAgIGdsRFNTdGF0ZS5zdGVuY2lsRmFpbCA9IEdMX1JFUExBQ0U7CisgICAg
Z2xEU1N0YXRlLnN0ZW5jaWxQYXNzRGVwdGhGYWlsID0gR0xfUkVQTEFDRTsKKyAgICBnbERTU3Rh
dGUuc3RlbmNpbFBhc3NEZXB0aFBhc3MgPSBHTF9SRVBMQUNFOworICAgIGdsRFNTdGF0ZS5zdGVu
Y2lsV3JpdGVtYXNrID0gY2xlYXJQYXJhbXMuc3RlbmNpbFdyaXRlTWFzazsKKyAgICBnbERTU3Rh
dGUuc3RlbmNpbEJhY2tGdW5jID0gR0xfQUxXQVlTOworICAgIGdsRFNTdGF0ZS5zdGVuY2lsQmFj
a01hc2sgPSAwOworICAgIGdsRFNTdGF0ZS5zdGVuY2lsQmFja0ZhaWwgPSBHTF9SRVBMQUNFOwor
ICAgIGdsRFNTdGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwgPSBHTF9SRVBMQUNFOworICAg
IGdsRFNTdGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MgPSBHTF9SRVBMQUNFOworICAgIGds
RFNTdGF0ZS5zdGVuY2lsQmFja1dyaXRlbWFzayA9IGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1h
c2s7CisKKyAgICBpbnQgc3RlbmNpbENsZWFyID0gY2xlYXJQYXJhbXMuc3RlbmNpbENsZWFyVmFs
dWUgJiAweDAwMDAwMEZGOworCisgICAgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKmRzU3RhdGUg
PSBtU3RhdGVDYWNoZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZShnbERTU3RhdGUpOworCisgICAgLy8g
UHJlcGFyZSB0aGUgYmxlbmQgc3RhdGUgdG8gdXNlIGEgd3JpdGUgbWFzayBpZiB0aGUgY29sb3Ig
YnVmZmVyIHNob3VsZCBiZSBjbGVhcmVkCisgICAgZ2w6OkJsZW5kU3RhdGUgZ2xCbGVuZFN0YXRl
OworICAgIGdsQmxlbmRTdGF0ZS5ibGVuZCA9IGZhbHNlOworICAgIGdsQmxlbmRTdGF0ZS5zb3Vy
Y2VCbGVuZFJHQiA9IEdMX09ORTsKKyAgICBnbEJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCID0gR0xf
WkVSTzsKKyAgICBnbEJsZW5kU3RhdGUuc291cmNlQmxlbmRBbHBoYSA9IEdMX09ORTsKKyAgICBn
bEJsZW5kU3RhdGUuZGVzdEJsZW5kQWxwaGEgPSBHTF9aRVJPOworICAgIGdsQmxlbmRTdGF0ZS5i
bGVuZEVxdWF0aW9uUkdCID0gR0xfRlVOQ19BREQ7CisgICAgZ2xCbGVuZFN0YXRlLmJsZW5kRXF1
YXRpb25BbHBoYSA9IEdMX0ZVTkNfQUREOworICAgIGdsQmxlbmRTdGF0ZS5jb2xvck1hc2tSZWQg
PSAoY2xlYXJQYXJhbXMubWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpID8gY2xlYXJQYXJhbXMu
Y29sb3JNYXNrUmVkIDogZmFsc2U7CisgICAgZ2xCbGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuID0g
KGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKSA/IGNsZWFyUGFyYW1zLmNv
bG9yTWFza0dyZWVuIDogZmFsc2U7CisgICAgZ2xCbGVuZFN0YXRlLmNvbG9yTWFza0JsdWUgPSAo
Y2xlYXJQYXJhbXMubWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpID8gY2xlYXJQYXJhbXMuY29s
b3JNYXNrQmx1ZSA6IGZhbHNlOworICAgIGdsQmxlbmRTdGF0ZS5jb2xvck1hc2tBbHBoYSA9IChj
bGVhclBhcmFtcy5tYXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJVCkgPyBjbGVhclBhcmFtcy5jb2xv
ck1hc2tBbHBoYSA6IGZhbHNlOworICAgIGdsQmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJh
Z2UgPSBmYWxzZTsKKyAgICBnbEJsZW5kU3RhdGUuZGl0aGVyID0gZmFsc2U7CisKKyAgICBzdGF0
aWMgY29uc3QgZmxvYXQgYmxlbmRGYWN0b3JzWzRdID0geyAxLjBmLCAxLjBmLCAxLjBmLCAxLjBm
IH07CisgICAgc3RhdGljIGNvbnN0IFVJTlQgc2FtcGxlTWFzayA9IDB4RkZGRkZGRkY7CisKKyAg
ICBJRDNEMTFCbGVuZFN0YXRlICpibGVuZFN0YXRlID0gbVN0YXRlQ2FjaGUuZ2V0QmxlbmRTdGF0
ZShnbEJsZW5kU3RhdGUpOworCisgICAgLy8gU2V0IHRoZSB2ZXJ0aWNlcworICAgIEQzRDExX01B
UFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKKyAgICByZXN1bHQgPSBtRGV2aWNlQ29u
dGV4dC0+TWFwKG1DbGVhclZCLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwgJm1hcHBl
ZFJlc291cmNlKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICBFUlIo
IkZhaWxlZCB0byBtYXAgbWFza2VkIGNsZWFyIHZlcnRleCBidWZmZXIsIEhSRVNVTFQ6IDB4JVgu
IiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGQzZDExOjpQb3NpdGlv
bkRlcHRoQ29sb3JWZXJ0ZXggKnZlcnRpY2VzID0gcmVpbnRlcnByZXRfY2FzdDxkM2QxMTo6UG9z
aXRpb25EZXB0aENvbG9yVmVydGV4Kj4obWFwcGVkUmVzb3VyY2UucERhdGEpOworCisgICAgZmxv
YXQgZGVwdGhDbGVhciA9IGdsOjpjbGFtcDAxKGNsZWFyUGFyYW1zLmRlcHRoQ2xlYXJWYWx1ZSk7
CisgICAgZDNkMTE6OlNldFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleCgmdmVydGljZXNbMF0sIC0x
LjBmLCAgMS4wZiwgZGVwdGhDbGVhciwgY2xlYXJQYXJhbXMuY29sb3JDbGVhclZhbHVlKTsKKyAg
ICBkM2QxMTo6U2V0UG9zaXRpb25EZXB0aENvbG9yVmVydGV4KCZ2ZXJ0aWNlc1sxXSwgLTEuMGYs
IC0xLjBmLCBkZXB0aENsZWFyLCBjbGVhclBhcmFtcy5jb2xvckNsZWFyVmFsdWUpOworICAgIGQz
ZDExOjpTZXRQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXgoJnZlcnRpY2VzWzJdLCAgMS4wZiwgIDEu
MGYsIGRlcHRoQ2xlYXIsIGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZSk7CisgICAgZDNkMTE6
OlNldFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleCgmdmVydGljZXNbM10sICAxLjBmLCAtMS4wZiwg
ZGVwdGhDbGVhciwgY2xlYXJQYXJhbXMuY29sb3JDbGVhclZhbHVlKTsKKworICAgIG1EZXZpY2VD
b250ZXh0LT5Vbm1hcChtQ2xlYXJWQiwgMCk7CisKKyAgICAvLyBBcHBseSBzdGF0ZQorICAgIG1E
ZXZpY2VDb250ZXh0LT5PTVNldEJsZW5kU3RhdGUoYmxlbmRTdGF0ZSwgYmxlbmRGYWN0b3JzLCBz
YW1wbGVNYXNrKTsKKyAgICBtRGV2aWNlQ29udGV4dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShk
c1N0YXRlLCBzdGVuY2lsQ2xlYXIpOworICAgIG1EZXZpY2VDb250ZXh0LT5SU1NldFN0YXRlKG1T
Y2lzc29yRW5hYmxlZCA/IG1DbGVhclNjaXNzb3JSUyA6IG1DbGVhck5vU2Npc3NvclJTKTsKKwor
ICAgIC8vIEFwcGx5IHNoYWRlcnMKKyAgICBJRDNEMTFQaXhlbFNoYWRlciAqcGl4ZWxTaGFkZXIg
PSB1c2luZ0V4dGVuZGVkRHJhd0J1ZmZlcnMgPyBtQ2xlYXJNdWx0aXBsZVBTIDogbUNsZWFyU2lu
Z2xlUFM7CisKKyAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbnB1dExheW91dChtQ2xlYXJJTCk7
CisgICAgbURldmljZUNvbnRleHQtPlZTU2V0U2hhZGVyKG1DbGVhclZTLCBOVUxMLCAwKTsKKyAg
ICBtRGV2aWNlQ29udGV4dC0+UFNTZXRTaGFkZXIocGl4ZWxTaGFkZXIsIE5VTEwsIDApOworICAg
IG1EZXZpY2VDb250ZXh0LT5HU1NldFNoYWRlcihOVUxMLCBOVUxMLCAwKTsKKworICAgIC8vIEFw
cGx5IHZlcnRleCBidWZmZXIKKyAgICBzdGF0aWMgVUlOVCBzdHJpZGUgPSBzaXplb2YoZDNkMTE6
OlBvc2l0aW9uRGVwdGhDb2xvclZlcnRleCk7CisgICAgc3RhdGljIFVJTlQgc3RhcnRJZHggPSAw
OworICAgIG1EZXZpY2VDb250ZXh0LT5JQVNldFZlcnRleEJ1ZmZlcnMoMCwgMSwgJm1DbGVhclZC
LCAmc3RyaWRlLCAmc3RhcnRJZHgpOworICAgIG1EZXZpY2VDb250ZXh0LT5JQVNldFByaW1pdGl2
ZVRvcG9sb2d5KEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVTVFJJUCk7CisKKyAgICAv
LyBEcmF3IHRoZSBjbGVhciBxdWFkCisgICAgbURldmljZUNvbnRleHQtPkRyYXcoNCwgMCk7CisK
KyAgICAvLyBDbGVhbiB1cAorICAgIG1hcmtBbGxTdGF0ZURpcnR5KCk7Cit9CisKK3ZvaWQgUmVu
ZGVyZXIxMTo6bWFya0FsbFN0YXRlRGlydHkoKQoreworICAgIGZvciAodW5zaWduZWQgaW50IHJ0
SW5kZXggPSAwOyBydEluZGV4IDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM7
IHJ0SW5kZXgrKykKKyAgICB7CisgICAgICAgIG1BcHBsaWVkUmVuZGVyVGFyZ2V0U2VyaWFsc1ty
dEluZGV4XSA9IDA7CisgICAgfQorICAgIG1BcHBsaWVkRGVwdGhidWZmZXJTZXJpYWwgPSAwOwor
ICAgIG1BcHBsaWVkU3RlbmNpbGJ1ZmZlclNlcmlhbCA9IDA7CisgICAgbURlcHRoU3RlbmNpbElu
aXRpYWxpemVkID0gZmFsc2U7CisgICAgbVJlbmRlclRhcmdldERlc2NJbml0aWFsaXplZCA9IGZh
bHNlOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1ZF
UlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOyBpKyspCisgICAgeworICAgICAgICBtRm9yY2VTZXRW
ZXJ0ZXhTYW1wbGVyU3RhdGVzW2ldID0gdHJ1ZTsKKyAgICAgICAgbUN1clZlcnRleFRleHR1cmVT
ZXJpYWxzW2ldID0gMDsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1RF
WFRVUkVfSU1BR0VfVU5JVFM7IGkrKykKKyAgICB7CisgICAgICAgIG1Gb3JjZVNldFBpeGVsU2Ft
cGxlclN0YXRlc1tpXSA9IHRydWU7CisgICAgICAgIG1DdXJQaXhlbFRleHR1cmVTZXJpYWxzW2ld
ID0gMDsKKyAgICB9CisKKyAgICBtRm9yY2VTZXRCbGVuZFN0YXRlID0gdHJ1ZTsKKyAgICBtRm9y
Y2VTZXRSYXN0ZXJTdGF0ZSA9IHRydWU7CisgICAgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUg
PSB0cnVlOworICAgIG1Gb3JjZVNldFNjaXNzb3IgPSB0cnVlOworICAgIG1Gb3JjZVNldFZpZXdw
b3J0ID0gdHJ1ZTsKKworICAgIG1BcHBsaWVkSUJTZXJpYWwgPSAwOworICAgIG1BcHBsaWVkU3Rv
cmFnZUlCU2VyaWFsID0gMDsKKyAgICBtQXBwbGllZElCT2Zmc2V0ID0gMDsKKworICAgIG1BcHBs
aWVkUHJvZ3JhbUJpbmFyeVNlcmlhbCA9IDA7CisgICAgbWVtc2V0KCZtQXBwbGllZFZlcnRleENv
bnN0YW50cywgMCwgc2l6ZW9mKGR4X1ZlcnRleENvbnN0YW50cykpOworICAgIG1lbXNldCgmbUFw
cGxpZWRQaXhlbENvbnN0YW50cywgMCwgc2l6ZW9mKGR4X1BpeGVsQ29uc3RhbnRzKSk7Cit9CisK
K3ZvaWQgUmVuZGVyZXIxMTo6cmVsZWFzZURldmljZVJlc291cmNlcygpCit7CisgICAgbVN0YXRl
Q2FjaGUuY2xlYXIoKTsKKyAgICBtSW5wdXRMYXlvdXRDYWNoZS5jbGVhcigpOworCisgICAgZGVs
ZXRlIG1WZXJ0ZXhEYXRhTWFuYWdlcjsKKyAgICBtVmVydGV4RGF0YU1hbmFnZXIgPSBOVUxMOwor
CisgICAgZGVsZXRlIG1JbmRleERhdGFNYW5hZ2VyOworICAgIG1JbmRleERhdGFNYW5hZ2VyID0g
TlVMTDsKKworICAgIGRlbGV0ZSBtTGluZUxvb3BJQjsKKyAgICBtTGluZUxvb3BJQiA9IE5VTEw7
CisKKyAgICBkZWxldGUgbVRyaWFuZ2xlRmFuSUI7CisgICAgbVRyaWFuZ2xlRmFuSUIgPSBOVUxM
OworCisgICAgU2FmZVJlbGVhc2UobUNvcHlWQik7CisgICAgU2FmZVJlbGVhc2UobUNvcHlTYW1w
bGVyKTsKKyAgICBTYWZlUmVsZWFzZShtQ29weUlMKTsKKyAgICBTYWZlUmVsZWFzZShtQ29weUlM
KTsKKyAgICBTYWZlUmVsZWFzZShtQ29weVZTKTsKKyAgICBTYWZlUmVsZWFzZShtQ29weVJHQkFQ
Uyk7CisgICAgU2FmZVJlbGVhc2UobUNvcHlSR0JQUyk7CisgICAgU2FmZVJlbGVhc2UobUNvcHlM
dW1QUyk7CisgICAgU2FmZVJlbGVhc2UobUNvcHlMdW1BbHBoYVBTKTsKKworICAgIG1Db3B5UmVz
b3VyY2VzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIFNhZmVSZWxlYXNlKG1DbGVhclZCKTsK
KyAgICBTYWZlUmVsZWFzZShtQ2xlYXJJTCk7CisgICAgU2FmZVJlbGVhc2UobUNsZWFyVlMpOwor
ICAgIFNhZmVSZWxlYXNlKG1DbGVhclNpbmdsZVBTKTsKKyAgICBTYWZlUmVsZWFzZShtQ2xlYXJN
dWx0aXBsZVBTKTsKKyAgICBTYWZlUmVsZWFzZShtQ2xlYXJTY2lzc29yUlMpOworICAgIFNhZmVS
ZWxlYXNlKG1DbGVhck5vU2Npc3NvclJTKTsKKworICAgIG1DbGVhclJlc291cmNlc0luaXRpYWxp
emVkID0gZmFsc2U7CisKKyAgICBTYWZlUmVsZWFzZShtRHJpdmVyQ29uc3RhbnRCdWZmZXJWUyk7
CisgICAgU2FmZVJlbGVhc2UobURyaXZlckNvbnN0YW50QnVmZmVyUFMpOworICAgIFNhZmVSZWxl
YXNlKG1TeW5jUXVlcnkpOworfQorCit2b2lkIFJlbmRlcmVyMTE6Om5vdGlmeURldmljZUxvc3Qo
KQoreworICAgIG1EZXZpY2VMb3N0ID0gdHJ1ZTsKKyAgICBtRGlzcGxheS0+bm90aWZ5RGV2aWNl
TG9zdCgpOworfQorCitib29sIFJlbmRlcmVyMTE6OmlzRGV2aWNlTG9zdCgpCit7CisgICAgcmV0
dXJuIG1EZXZpY2VMb3N0OworfQorCisvLyBzZXQgbm90aWZ5IHRvIHRydWUgdG8gYnJvYWRjYXN0
IGEgbWVzc2FnZSB0byBhbGwgY29udGV4dHMgb2YgdGhlIGRldmljZSBsb3NzCitib29sIFJlbmRl
cmVyMTE6OnRlc3REZXZpY2VMb3N0KGJvb2wgbm90aWZ5KQoreworICAgIGJvb2wgaXNMb3N0ID0g
ZmFsc2U7CisKKyAgICAvLyBHZXRSZW1vdmVkUmVhc29uIGlzIHVzZWQgdG8gdGVzdCBpZiB0aGUg
ZGV2aWNlIGlzIHJlbW92ZWQKKyAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkdldERldmlj
ZVJlbW92ZWRSZWFzb24oKTsKKyAgICBpc0xvc3QgPSBkM2QxMTo6aXNEZXZpY2VMb3N0RXJyb3Io
cmVzdWx0KTsKKworICAgIGlmIChpc0xvc3QpCisgICAgeworICAgICAgICAvLyBMb2cgZXJyb3Ig
aWYgdGhpcyBpcyBhIG5ldyBkZXZpY2UgbG9zdCBldmVudAorICAgICAgICBpZiAobURldmljZUxv
c3QgPT0gZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiVGhlIEQzRDExIGRldmlj
ZSB3YXMgcmVtb3ZlZDogMHglMDhYIiwgcmVzdWx0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IGVuc3VyZSB3ZSBub3RlIHRoZSBkZXZpY2UgbG9zcyAtLQorICAgICAgICAvLyB3ZSdsbCBwcm9i
YWJseSBnZXQgdGhpcyBkb25lIGFnYWluIGJ5IG5vdGlmeURldmljZUxvc3QKKyAgICAgICAgLy8g
YnV0IGJlc3QgdG8gcmVtZW1iZXIgaXQhCisgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCB3
YW50IHRvIGNsZWFyIHRoZSBkZXZpY2UgbG9zcyBzdGF0dXMgaGVyZQorICAgICAgICAvLyAtLSB0
aGlzIG5lZWRzIHRvIGJlIGRvbmUgYnkgcmVzZXREZXZpY2UKKyAgICAgICAgbURldmljZUxvc3Qg
PSB0cnVlOworICAgICAgICBpZiAobm90aWZ5KQorICAgICAgICB7CisgICAgICAgICAgICBub3Rp
ZnlEZXZpY2VMb3N0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gaXNMb3N0Owor
fQorCitib29sIFJlbmRlcmVyMTE6OnRlc3REZXZpY2VSZXNldHRhYmxlKCkKK3sKKyAgICAvLyBk
ZXRlcm1pbmUgaWYgdGhlIGRldmljZSBpcyByZXNldHRhYmxlIGJ5IGNyZWF0aW5nIGEgZHVtbXkg
ZGV2aWNlCisgICAgUEZOX0QzRDExX0NSRUFURV9ERVZJQ0UgRDNEMTFDcmVhdGVEZXZpY2UgPSAo
UEZOX0QzRDExX0NSRUFURV9ERVZJQ0UpR2V0UHJvY0FkZHJlc3MobUQzZDExTW9kdWxlLCAiRDNE
MTFDcmVhdGVEZXZpY2UiKTsKKworICAgIGlmIChEM0QxMUNyZWF0ZURldmljZSA9PSBOVUxMKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEQzRF9GRUFUVVJFX0xF
VkVMIGZlYXR1cmVMZXZlbHNbXSA9CisgICAgeworICAgICAgICBEM0RfRkVBVFVSRV9MRVZFTF8x
MV8wLAorICAgICAgICBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xLAorICAgICAgICBEM0RfRkVBVFVS
RV9MRVZFTF8xMF8wLAorICAgIH07CisKKyAgICBJRDNEMTFEZXZpY2UqIGR1bW15RGV2aWNlOwor
ICAgIEQzRF9GRUFUVVJFX0xFVkVMIGR1bW15RmVhdHVyZUxldmVsOworICAgIElEM0QxMURldmlj
ZUNvbnRleHQqIGR1bW15Q29udGV4dDsKKworICAgIEhSRVNVTFQgcmVzdWx0ID0gRDNEMTFDcmVh
dGVEZXZpY2UoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQz
RF9EUklWRVJfVFlQRV9IQVJEV0FSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaWYg
ZGVmaW5lZChfREVCVUcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
M0QxMV9DUkVBVEVfREVWSUNFX0RFQlVHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVMZXZlbHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVNpemUoZmVhdHVyZUxldmVscyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9TREtfVkVSU0lPTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdW1teURldmljZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdW1teUZlYXR1cmVMZXZlbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdW1teUNvbnRleHQpOwor
CisgICAgaWYgKCFtRGV2aWNlIHx8IEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGR1bW15Q29udGV4dC0+UmVsZWFzZSgpOworICAgIGR1
bW15RGV2aWNlLT5SZWxlYXNlKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZW5k
ZXJlcjExOjpyZWxlYXNlKCkKK3sKKyAgICByZWxlYXNlRGV2aWNlUmVzb3VyY2VzKCk7CisKKyAg
ICBpZiAobUR4Z2lGYWN0b3J5KQorICAgIHsKKyAgICAgICAgbUR4Z2lGYWN0b3J5LT5SZWxlYXNl
KCk7CisgICAgICAgIG1EeGdpRmFjdG9yeSA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1EeGdp
QWRhcHRlcikKKyAgICB7CisgICAgICAgIG1EeGdpQWRhcHRlci0+UmVsZWFzZSgpOworICAgICAg
ICBtRHhnaUFkYXB0ZXIgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtRGV2aWNlQ29udGV4dCkK
KyAgICB7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5DbGVhclN0YXRlKCk7CisgICAgICAgIG1E
ZXZpY2VDb250ZXh0LT5GbHVzaCgpOworICAgICAgICBtRGV2aWNlQ29udGV4dC0+UmVsZWFzZSgp
OworICAgICAgICBtRGV2aWNlQ29udGV4dCA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1EZXZp
Y2UpCisgICAgeworICAgICAgICBtRGV2aWNlLT5SZWxlYXNlKCk7CisgICAgICAgIG1EZXZpY2Ug
PSBOVUxMOworICAgIH0KKworICAgIGlmIChtRDNkMTFNb2R1bGUpCisgICAgeworICAgICAgICBG
cmVlTGlicmFyeShtRDNkMTFNb2R1bGUpOworICAgICAgICBtRDNkMTFNb2R1bGUgPSBOVUxMOwor
ICAgIH0KKworICAgIGlmIChtRHhnaU1vZHVsZSkKKyAgICB7CisgICAgICAgIEZyZWVMaWJyYXJ5
KG1EeGdpTW9kdWxlKTsKKyAgICAgICAgbUR4Z2lNb2R1bGUgPSBOVUxMOworICAgIH0KK30KKwor
Ym9vbCBSZW5kZXJlcjExOjpyZXNldERldmljZSgpCit7CisgICAgLy8gcmVjcmVhdGUgZXZlcnl0
aGluZworICAgIHJlbGVhc2UoKTsKKyAgICBFR0xpbnQgcmVzdWx0ID0gaW5pdGlhbGl6ZSgpOwor
CisgICAgaWYgKHJlc3VsdCAhPSBFR0xfU1VDQ0VTUykKKyAgICB7CisgICAgICAgIEVSUigiQ291
bGQgbm90IHJlaW5pdGlhbGl6ZSBEM0QxMSBkZXZpY2U6ICUwOFgiLCByZXN1bHQpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbURldmljZUxvc3QgPSBmYWxzZTsKKworICAg
IHJldHVybiB0cnVlOworfQorCitEV09SRCBSZW5kZXJlcjExOjpnZXRBZGFwdGVyVmVuZG9yKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbUFkYXB0ZXJEZXNjcmlwdGlvbi5WZW5kb3JJZDsKK30KKwor
c3RkOjpzdHJpbmcgUmVuZGVyZXIxMTo6Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0Cit7
CisgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHJlbmRlcmVyU3RyaW5nOworCisgICAgcmVuZGVyZXJT
dHJpbmcgPDwgbURlc2NyaXB0aW9uOworICAgIHJlbmRlcmVyU3RyaW5nIDw8ICIgRGlyZWN0M0Qx
MSI7CisKKyAgICByZW5kZXJlclN0cmluZyA8PCAiIHZzXyIgPDwgZ2V0TWFqb3JTaGFkZXJNb2Rl
bCgpIDw8ICJfIiA8PCBnZXRNaW5vclNoYWRlck1vZGVsKCk7CisgICAgcmVuZGVyZXJTdHJpbmcg
PDwgIiBwc18iIDw8IGdldE1ham9yU2hhZGVyTW9kZWwoKSA8PCAiXyIgPDwgZ2V0TWlub3JTaGFk
ZXJNb2RlbCgpOworCisgICAgcmV0dXJuIHJlbmRlcmVyU3RyaW5nLnN0cigpOworfQorCitHVUlE
IFJlbmRlcmVyMTE6OmdldEFkYXB0ZXJJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICAvLyBVc2Ug
dGhlIGFkYXB0ZXIgTFVJRCBhcyBvdXIgYWRhcHRlciBJRAorICAgIC8vIFRoaXMgbnVtYmVyIGlz
IGxvY2FsIHRvIGEgbWFjaGluZSBpcyBvbmx5IGd1YXJhbnRlZWQgdG8gYmUgdW5pcXVlIGJldHdl
ZW4gcmVzdGFydHMKKyAgICBNRVRBX0FTU0VSVChzaXplb2YoTFVJRCkgPD0gc2l6ZW9mKEdVSUQp
KTsKKyAgICBHVUlEIGFkYXB0ZXJJZCA9IHswfTsKKyAgICBtZW1jcHkoJmFkYXB0ZXJJZCwgJm1B
ZGFwdGVyRGVzY3JpcHRpb24uQWRhcHRlckx1aWQsIHNpemVvZihMVUlEKSk7CisgICAgcmV0dXJu
IGFkYXB0ZXJJZDsKK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRCR1JBVGV4dHVyZVN1cHBvcnQo
KSBjb25zdAoreworICAgIHJldHVybiBtQkdSQVRleHR1cmVTdXBwb3J0OworfQorCitib29sIFJl
bmRlcmVyMTE6OmdldERYVDFUZXh0dXJlU3VwcG9ydCgpCit7CisgICAgcmV0dXJuIG1EWFQxVGV4
dHVyZVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0RFhUM1RleHR1cmVTdXBwb3J0
KCkKK3sKKyAgICByZXR1cm4gbURYVDNUZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJl
cjExOjpnZXREWFQ1VGV4dHVyZVN1cHBvcnQoKQoreworICAgIHJldHVybiBtRFhUNVRleHR1cmVT
dXBwb3J0OworfQorCitib29sIFJlbmRlcmVyMTE6OmdldERlcHRoVGV4dHVyZVN1cHBvcnQoKSBj
b25zdAoreworICAgIHJldHVybiBtRGVwdGhUZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5k
ZXJlcjExOjpnZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5nLCBib29sICpy
ZW5kZXJhYmxlKQoreworICAgICpyZW5kZXJhYmxlID0gbUZsb2F0MzJSZW5kZXJTdXBwb3J0Owor
ICAgICpmaWx0ZXJpbmcgPSBtRmxvYXQzMkZpbHRlclN1cHBvcnQ7CisgICAgcmV0dXJuIG1GbG9h
dDMyVGV4dHVyZVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0RmxvYXQxNlRleHR1
cmVTdXBwb3J0KGJvb2wgKmZpbHRlcmluZywgYm9vbCAqcmVuZGVyYWJsZSkKK3sKKyAgICAqcmVu
ZGVyYWJsZSA9IG1GbG9hdDE2UmVuZGVyU3VwcG9ydDsKKyAgICAqZmlsdGVyaW5nID0gbUZsb2F0
MTZGaWx0ZXJTdXBwb3J0OworICAgIHJldHVybiBtRmxvYXQxNlRleHR1cmVTdXBwb3J0OworfQor
Citib29sIFJlbmRlcmVyMTE6OmdldEx1bWluYW5jZVRleHR1cmVTdXBwb3J0KCkKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0THVtaW5hbmNlQWxwaGFUZXh0
dXJlU3VwcG9ydCgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbmRlcmVyMTE6
OmdldFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5U3VwcG9ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Zsb2F0IFJlbmRlcmVyMTE6OmdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KCkg
Y29uc3QKK3sKKyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICByZXR1cm4gRDNEMTFfTUFYX01BWEFOSVNP
VFJPUFk7CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgIHJldHVybiBEM0QxMF9NQVhfTUFYQU5JU09U
Uk9QWTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRFdmVudFF1ZXJ5U3VwcG9ydCgpCit7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK1JhbmdlIFJlbmRlcmVyMTE6OmdldFZpZXdwb3J0Qm91bmRz
KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICByZXR1cm4gUmFuZ2UoRDNEMTFfVklF
V1BPUlRfQk9VTkRTX01JTiwgRDNEMTFfVklFV1BPUlRfQk9VTkRTX01BWCk7CisgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEw
XzA6CisgICAgICAgIHJldHVybiBSYW5nZShEM0QxMF9WSUVXUE9SVF9CT1VORFNfTUlOLCBEM0Qx
MF9WSUVXUE9SVF9CT1VORFNfTUFYKTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgIHJldHVybiBSYW5nZSgwLCAwKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBSZW5k
ZXJlcjExOjpnZXRNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0Cit7CisgICAgTUVU
QV9BU1NFUlQoTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGX1NNNCA8PSBnbDo6SU1QTEVNRU5U
QVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTKTsKKyAgICBzd2l0Y2ggKG1GZWF0
dXJlTGV2ZWwpCisgICAgeworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMF8wOgorICAgICAgICByZXR1cm4gTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGX1NN
NDsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyMTE6OmdldE1heENvbWJpbmVkVGV4dHVyZUlt
YWdlVW5pdHMoKSBjb25zdAoreworICAgIHJldHVybiBnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5J
VFMgKyBnZXRNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpOworfQorCit1bnNpZ25lZCBpbnQg
UmVuZGVyZXIxMTo6Z2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIDA7ICAgLy8gRHJpdmVyIHVuaWZvcm1zIGFyZSBzdG9yZWQgaW4gYSBzZXBhcmF0
ZSBjb25zdGFudCBidWZmZXIKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyMTE6OmdldFJlc2Vy
dmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7ICAgLy8g
RHJpdmVyIHVuaWZvcm1zIGFyZSBzdG9yZWQgaW4gYSBzZXBhcmF0ZSBjb25zdGFudCBidWZmZXIK
K30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyMTE6OmdldE1heFZlcnRleFVuaWZvcm1WZWN0b3Jz
KCkgY29uc3QKK3sKKyAgICBNRVRBX0FTU0VSVChNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU19E
M0QxMSA8PSBEM0QxMF9SRVFfQ09OU1RBTlRfQlVGRkVSX0VMRU1FTlRfQ09VTlQpOworICAgIEFT
U0VSVChtRmVhdHVyZUxldmVsID49IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzApOworICAgIHJldHVy
biBNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU19EM0QxMTsKK30KKwordW5zaWduZWQgaW50IFJl
bmRlcmVyMTE6OmdldE1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKSBjb25zdAoreworICAgIE1F
VEFfQVNTRVJUKE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNfRDNEMTEgPD0gRDNEMTBfUkVR
X0NPTlNUQU5UX0JVRkZFUl9FTEVNRU5UX0NPVU5UKTsKKyAgICBBU1NFUlQobUZlYXR1cmVMZXZl
bCA+PSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wKTsKKyAgICByZXR1cm4gTUFYX0ZSQUdNRU5UX1VO
SUZPUk1fVkVDVE9SU19EM0QxMTsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyMTE6OmdldE1h
eFZhcnlpbmdWZWN0b3JzKCkgY29uc3QKK3sKKyAgICBNRVRBX0FTU0VSVChnbDo6SU1QTEVNRU5U
QVRJT05fTUFYX1ZBUllJTkdfVkVDVE9SUyA9PSBEM0QxMV9WU19PVVRQVVRfUkVHSVNURVJfQ09V
TlQpOworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgIHJldHVybiBEM0QxMV9WU19PVVRQVVRfUkVHSVNU
RVJfQ09VTlQ7CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgIHJldHVybiBEM0QxMF9WU19PVVRQVVRf
UkVHSVNURVJfQ09VTlQ7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0Tm9uUG93ZXIyVGV4dHVy
ZVN1cHBvcnQoKSBjb25zdAoreworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7Cisg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRPY2NsdXNpb25RdWVy
eVN1cHBvcnQoKSBjb25zdAoreworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7Cisg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRJbnN0YW5jaW5nU3Vw
cG9ydCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtRmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTBfMToKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfQorCitib29sIFJlbmRlcmVyMTE6OmdldFNoYXJlSGFuZGxlU3VwcG9y
dCgpIGNvbnN0Cit7CisgICAgLy8gV2Ugb25seSBjdXJyZW50bHkgc3VwcG9ydCBzaGFyZSBoYW5k
bGVzIHdpdGggQkdSQSBzdXJmYWNlcywgYmVjYXVzZQorICAgIC8vIGNocm9tZSBuZWVkcyBCR1JB
LiBPbmNlIGNocm9tZSBmaXhlcyB0aGlzLCB3ZSBzaG91bGQgYWx3YXlzIHN1cHBvcnQgdGhlbS4K
KyAgICAvLyBQSVggZG9lc24ndCBzZWVtIHRvIHN1cHBvcnQgdXNpbmcgc2hhcmUgaGFuZGxlcywg
c28gZGlzYWJsZSB0aGVtLgorICAgIHJldHVybiBnZXRCR1JBVGV4dHVyZVN1cHBvcnQoKSAmJiAh
Z2w6OnBlcmZBY3RpdmUoKTsKK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXREZXJpdmF0aXZlSW5z
dHJ1Y3Rpb25TdXBwb3J0KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisg
ICAgeworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0UG9zdFN1
YkJ1ZmZlclN1cHBvcnQoKSBjb25zdAoreworICAgIC8vIEQzRDExIGRvZXMgbm90IHN1cHBvcnQg
cHJlc2VudCB3aXRoIGRpcnR5IHJlY3RhbmdsZXMgdW50aWwgRDNEMTEuMSBhbmQgRFhHSSAxLjIu
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbnQgUmVuZGVyZXIxMTo6Z2V0TWFqb3JTaGFkZXJN
b2RlbCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtRmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuIEQzRDExX1NIQURFUl9NQUpPUl9W
RVJTSU9OOyAgIC8vIDUKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMTogcmV0dXJu
IEQzRDEwXzFfU0hBREVSX01BSk9SX1ZFUlNJT047IC8vIDQKKyAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfMTBfMDogcmV0dXJuIEQzRDEwX1NIQURFUl9NQUpPUl9WRVJTSU9OOyAgIC8vIDQK
KyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgfQorfQor
CitpbnQgUmVuZGVyZXIxMTo6Z2V0TWlub3JTaGFkZXJNb2RlbCgpIGNvbnN0Cit7CisgICAgc3dp
dGNoIChtRmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTFfMDogcmV0dXJuIEQzRDExX1NIQURFUl9NSU5PUl9WRVJTSU9OOyAgIC8vIDAKKyAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMTogcmV0dXJuIEQzRDEwXzFfU0hBREVSX01JTk9SX1ZF
UlNJT047IC8vIDEKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIEQz
RDEwX1NIQURFUl9NSU5PUl9WRVJTSU9OOyAgIC8vIDAKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hB
QkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitmbG9hdCBSZW5kZXJlcjExOjpnZXRN
YXhQb2ludFNpemUoKSBjb25zdAoreworICAgIC8vIGNob29zZSBhIHJlYXNvbmFibGUgbWF4aW11
bS4gd2UgZW5mb3JjZSB0aGlzIGluIHRoZSBzaGFkZXIuCisgICAgLy8gKG5iOiBvbiBhIFJhZGVv
biAyNjAweHQsIERYOSByZXBvcnRzIGEgMjU2IG1heCBwb2ludCBzaXplKQorICAgIHJldHVybiAx
MDI0LjBmOworfQorCitpbnQgUmVuZGVyZXIxMTo6Z2V0TWF4Vmlld3BvcnREaW1lbnNpb24oKSBj
b25zdAoreworICAgIC8vIE1heGltdW0gdmlld3BvcnQgc2l6ZSBtdXN0IGJlIGF0IGxlYXN0IGFz
IGxhcmdlIGFzIHRoZSBsYXJnZXN0IHJlbmRlciBidWZmZXIgKG9yIGxhcmdlcikuCisgICAgLy8g
SW4gb3VyIGNhc2UgcmV0dXJuIHRoZSBtYXhpbXVtIHRleHR1cmUgc2l6ZSwgd2hpY2ggaXMgdGhl
IG1heGltdW0gcmVuZGVyIGJ1ZmZlciBzaXplLgorICAgIE1FVEFfQVNTRVJUKEQzRDExX1JFUV9U
RVhUVVJFMkRfVV9PUl9WX0RJTUVOU0lPTiAqIDIgLSAxIDw9IEQzRDExX1ZJRVdQT1JUX0JPVU5E
U19NQVgpOworICAgIE1FVEFfQVNTRVJUKEQzRDEwX1JFUV9URVhUVVJFMkRfVV9PUl9WX0RJTUVO
U0lPTiAqIDIgLSAxIDw9IEQzRDEwX1ZJRVdQT1JUX0JPVU5EU19NQVgpOworCisgICAgc3dpdGNo
IChtRmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFf
MDogCisgICAgICAgIHJldHVybiBEM0QxMV9SRVFfVEVYVFVSRTJEX1VfT1JfVl9ESU1FTlNJT047
ICAgLy8gMTYzODQKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogCisgICAgICAgIHJldHVybiBEM0QxMF9SRVFfVEVY
VFVSRTJEX1VfT1JfVl9ESU1FTlNJT047ICAgLy8gODE5MgorICAgICAgZGVmYXVsdDogVU5SRUFD
SEFCTEUoKTsgICAgICAKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitpbnQgUmVuZGVy
ZXIxMTo6Z2V0TWF4VGV4dHVyZVdpZHRoKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1GZWF0dXJl
TGV2ZWwpCisgICAgeworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOiByZXR1cm4g
RDNEMTFfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOyAgIC8vIDE2Mzg0CisgICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzEwXzA6IHJldHVybiBEM0QxMF9SRVFfVEVYVFVSRTJEX1VfT1JfVl9ESU1FTlNJT047ICAgLy8g
ODE5MgorICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1cm4gMDsKKyAgICB9
Cit9CisKK2ludCBSZW5kZXJlcjExOjpnZXRNYXhUZXh0dXJlSGVpZ2h0KCkgY29uc3QKK3sKKyAg
ICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMV8wOiByZXR1cm4gRDNEMTFfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOyAg
IC8vIDE2Mzg0CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiBEM0QxMF9SRVFfVEVYVFVSRTJEX1VfT1Jf
Vl9ESU1FTlNJT047ICAgLy8gODE5MgorICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAg
ICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0MzJCaXRJbmRleFN1
cHBvcnQoKSBjb25zdAoreworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6IAorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMF8xOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gRDNE
MTBfUkVRX0RSQVdJTkRFWEVEX0lOREVYX0NPVU5UXzJfVE9fRVhQID49IDMyOyAgIC8vIHRydWUK
KyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKworaW50IFJlbmRlcmVyMTE6OmdldE1pblN3YXBJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIDA7Cit9CisKK2ludCBSZW5kZXJlcjExOjpnZXRNYXhTd2FwSW50ZXJ2YWwoKSBjb25z
dAoreworICAgIHJldHVybiA0OworfQorCitpbnQgUmVuZGVyZXIxMTo6Z2V0TWF4U3VwcG9ydGVk
U2FtcGxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1NYXhTdXBwb3J0ZWRTYW1wbGVzOworfQor
CitpbnQgUmVuZGVyZXIxMTo6Z2V0TmVhcmVzdFN1cHBvcnRlZFNhbXBsZXMoRFhHSV9GT1JNQVQg
Zm9ybWF0LCB1bnNpZ25lZCBpbnQgcmVxdWVzdGVkKSBjb25zdAoreworICAgIGlmIChyZXF1ZXN0
ZWQgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIE11bHRpc2Ft
cGxlU3VwcG9ydE1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1NdWx0aXNhbXBsZVN1cHBvcnRN
YXAuZmluZChmb3JtYXQpOworICAgIGlmIChpdGVyICE9IG1NdWx0aXNhbXBsZVN1cHBvcnRNYXAu
ZW5kKCkpCisgICAgeworICAgICAgICBjb25zdCBNdWx0aXNhbXBsZVN1cHBvcnRJbmZvJiBpbmZv
ID0gaXRlci0+c2Vjb25kOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gcmVxdWVzdGVk
IC0gMTsgaSA8IEQzRDExX01BWF9NVUxUSVNBTVBMRV9TQU1QTEVfQ09VTlQ7IGkrKykKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKGluZm8ucXVhbGl0eUxldmVsc1tpXSA+IDApCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGkgKyAxOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCit1bnNpZ25lZCBpbnQgUmVuZGVy
ZXIxMTo6Z2V0TWF4UmVuZGVyVGFyZ2V0cygpIGNvbnN0Cit7CisgICAgTUVUQV9BU1NFUlQoRDNE
MTFfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQgPD0gZ2w6OklNUExFTUVOVEFUSU9O
X01BWF9EUkFXX0JVRkZFUlMpOworICAgIE1FVEFfQVNTRVJUKEQzRDEwX1NJTVVMVEFORU9VU19S
RU5ERVJfVEFSR0VUX0NPVU5UIDw9IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJT
KTsKKworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgIHJldHVybiBEM0QxMV9TSU1VTFRBTkVPVVNfUkVO
REVSX1RBUkdFVF9DT1VOVDsgIC8vIDgKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBf
MToKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgcmV0dXJuIEQz
RDEwX1NJTVVMVEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UOyAgLy8gOAorICAgICAgZGVmYXVs
dDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQor
Citib29sIFJlbmRlcmVyMTE6OmNvcHlUb1JlbmRlclRhcmdldChUZXh0dXJlU3RvcmFnZUludGVy
ZmFjZTJEICpkZXN0LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpzb3VyY2UpCit7CisgICAg
aWYgKHNvdXJjZSAmJiBkZXN0KQorICAgIHsKKyAgICAgICAgVGV4dHVyZVN0b3JhZ2UxMV8yRCAq
c291cmNlMTEgPSBUZXh0dXJlU3RvcmFnZTExXzJEOjptYWtlVGV4dHVyZVN0b3JhZ2UxMV8yRChz
b3VyY2UtPmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsKKyAgICAgICAgVGV4dHVyZVN0b3JhZ2UxMV8y
RCAqZGVzdDExID0gVGV4dHVyZVN0b3JhZ2UxMV8yRDo6bWFrZVRleHR1cmVTdG9yYWdlMTFfMkQo
ZGVzdC0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworCisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5D
b3B5UmVzb3VyY2UoZGVzdDExLT5nZXRCYXNlVGV4dHVyZSgpLCBzb3VyY2UxMS0+Z2V0QmFzZVRl
eHR1cmUoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBSZW5kZXJlcjExOjpjb3B5VG9SZW5kZXJUYXJnZXQoVGV4dHVyZVN0b3Jh
Z2VJbnRlcmZhY2VDdWJlICpkZXN0LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKnNvdXJj
ZSkKK3sKKyAgICBpZiAoc291cmNlICYmIGRlc3QpCisgICAgeworICAgICAgICBUZXh0dXJlU3Rv
cmFnZTExX0N1YmUgKnNvdXJjZTExID0gVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjptYWtlVGV4dHVy
ZVN0b3JhZ2UxMV9DdWJlKHNvdXJjZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgICAgICBU
ZXh0dXJlU3RvcmFnZTExX0N1YmUgKmRlc3QxMSA9IFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6bWFr
ZVRleHR1cmVTdG9yYWdlMTFfQ3ViZShkZXN0LT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7CisKKyAg
ICAgICAgbURldmljZUNvbnRleHQtPkNvcHlSZXNvdXJjZShkZXN0MTEtPmdldEJhc2VUZXh0dXJl
KCksIHNvdXJjZTExLT5nZXRCYXNlVGV4dHVyZSgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbmRlcmVyMTE6OmNvcHlJbWFn
ZShnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3Vy
Y2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0
b3JhZ2UsIEdMaW50IGxldmVsKQoreworICAgIGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVy
ID0gZnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpOworICAgIGlmICghY29sb3JidWZm
ZXIpCisgICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgY29sb3IgYnVm
ZmVyIGZyb20gdGhlIGZyYW1lIGJ1ZmZlci4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgUmVuZGVyVGFyZ2V0MTEgKnNv
dXJjZVJlbmRlclRhcmdldCA9IFJlbmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEoY29s
b3JidWZmZXItPmdldFJlbmRlclRhcmdldCgpKTsKKyAgICBpZiAoIXNvdXJjZVJlbmRlclRhcmdl
dCkKKyAgICB7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFy
Z2V0IGZyb20gdGhlIGZyYW1lIGJ1ZmZlci4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgSUQzRDExU2hhZGVyUmVzb3Vy
Y2VWaWV3ICpzb3VyY2UgPSBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldFNoYWRlclJlc291cmNlVmll
dygpOworICAgIGlmICghc291cmNlKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0
cmlldmUgdGhlIHJlbmRlciB0YXJnZXQgdmlldyBmcm9tIHRoZSByZW5kZXIgdGFyZ2V0LiIpOwor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICB9
CisKKyAgICBUZXh0dXJlU3RvcmFnZTExXzJEICpzdG9yYWdlMTEgPSBUZXh0dXJlU3RvcmFnZTEx
XzJEOjptYWtlVGV4dHVyZVN0b3JhZ2UxMV8yRChzdG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2Uo
KSk7CisgICAgaWYgKCFzdG9yYWdlMTEpCisgICAgeworICAgICAgICBzb3VyY2UtPlJlbGVhc2Uo
KTsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIHRleHR1cmUgc3RvcmFnZSBm
cm9tIHRoZSBkZXN0aW5hdGlvbi4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgUmVuZGVyVGFyZ2V0MTEgKmRlc3RSZW5k
ZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKHN0b3JhZ2UxMS0+
Z2V0UmVuZGVyVGFyZ2V0KGxldmVsKSk7CisgICAgaWYgKCFkZXN0UmVuZGVyVGFyZ2V0KQorICAg
IHsKKyAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJl
dHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIGRlc3RpbmF0aW9uIHN0b3JhZ2UuIik7
CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAg
IH0KKworICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3QgPSBkZXN0UmVuZGVyVGFyZ2V0
LT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7CisgICAgaWYgKCFkZXN0KQorICAgIHsKKyAgICAgICAg
c291cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSBy
ZW5kZXIgdGFyZ2V0IHZpZXcgZnJvbSB0aGUgZGVzdGluYXRpb24gcmVuZGVyIHRhcmdldC4iKTsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAg
fQorCisgICAgZ2w6OlJlY3RhbmdsZSBkZXN0UmVjdDsKKyAgICBkZXN0UmVjdC54ID0geG9mZnNl
dDsKKyAgICBkZXN0UmVjdC55ID0geW9mZnNldDsKKyAgICBkZXN0UmVjdC53aWR0aCA9IHNvdXJj
ZVJlY3Qud2lkdGg7CisgICAgZGVzdFJlY3QuaGVpZ2h0ID0gc291cmNlUmVjdC5oZWlnaHQ7CisK
KyAgICBib29sIHJldCA9IGNvcHlUZXh0dXJlKHNvdXJjZSwgc291cmNlUmVjdCwgc291cmNlUmVu
ZGVyVGFyZ2V0LT5nZXRXaWR0aCgpLCBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdFJlY3QsIGRlc3RSZW5kZXJUYXJn
ZXQtPmdldFdpZHRoKCksIGRlc3RSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLCBkZXN0Rm9ybWF0
KTsKKworICAgIHNvdXJjZS0+UmVsZWFzZSgpOworICAgIGRlc3QtPlJlbGVhc2UoKTsKKworICAg
IHJldHVybiByZXQ7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Y29weUltYWdlKGdsOjpGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51
bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBHTGVu
dW0gdGFyZ2V0LCBHTGludCBsZXZlbCkKK3sKKyAgICBnbDo6UmVuZGVyYnVmZmVyICpjb2xvcmJ1
ZmZlciA9IGZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKTsKKyAgICBpZiAoIWNvbG9y
YnVmZmVyKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIGNvbG9y
IGJ1ZmZlciBmcm9tIHRoZSBmcmFtZSBidWZmZXIuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDEx
ICpzb3VyY2VSZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDEx
KGNvbG9yYnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKSk7CisgICAgaWYgKCFzb3VyY2VSZW5kZXJU
YXJnZXQpCisgICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVy
IHRhcmdldCBmcm9tIHRoZSBmcmFtZSBidWZmZXIuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIElEM0QxMVNoYWRlclJl
c291cmNlVmlldyAqc291cmNlID0gc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRTaGFkZXJSZXNvdXJj
ZVZpZXcoKTsKKyAgICBpZiAoIXNvdXJjZSkKKyAgICB7CisgICAgICAgIEVSUigiRmFpbGVkIHRv
IHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0IHZpZXcgZnJvbSB0aGUgcmVuZGVyIHRhcmdldC4i
KTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7Cisg
ICAgfQorCisgICAgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlICpzdG9yYWdlMTEgPSBUZXh0dXJlU3Rv
cmFnZTExX0N1YmU6Om1ha2VUZXh0dXJlU3RvcmFnZTExX0N1YmUoc3RvcmFnZS0+Z2V0U3RvcmFn
ZUluc3RhbmNlKCkpOworICAgIGlmICghc3RvcmFnZTExKQorICAgIHsKKyAgICAgICAgc291cmNl
LT5SZWxlYXNlKCk7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSB0ZXh0dXJl
IHN0b3JhZ2UgZnJvbSB0aGUgZGVzdGluYXRpb24uIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDEx
ICpkZXN0UmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShz
dG9yYWdlMTEtPmdldFJlbmRlclRhcmdldCh0YXJnZXQsIGxldmVsKSk7CisgICAgaWYgKCFkZXN0
UmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAg
IEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIGRlc3Rp
bmF0aW9uIHN0b3JhZ2UuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3Qg
PSBkZXN0UmVuZGVyVGFyZ2V0LT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7CisgICAgaWYgKCFkZXN0
KQorICAgIHsKKyAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIEVSUigiRmFpbGVk
IHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0IHZpZXcgZnJvbSB0aGUgZGVzdGluYXRpb24g
cmVuZGVyIHRhcmdldC4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgZ2w6OlJlY3RhbmdsZSBkZXN0UmVjdDsKKyAgICBk
ZXN0UmVjdC54ID0geG9mZnNldDsKKyAgICBkZXN0UmVjdC55ID0geW9mZnNldDsKKyAgICBkZXN0
UmVjdC53aWR0aCA9IHNvdXJjZVJlY3Qud2lkdGg7CisgICAgZGVzdFJlY3QuaGVpZ2h0ID0gc291
cmNlUmVjdC5oZWlnaHQ7CisKKyAgICBib29sIHJldCA9IGNvcHlUZXh0dXJlKHNvdXJjZSwgc291
cmNlUmVjdCwgc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpLCBzb3VyY2VSZW5kZXJUYXJn
ZXQtPmdldEhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdFJl
Y3QsIGRlc3RSZW5kZXJUYXJnZXQtPmdldFdpZHRoKCksIGRlc3RSZW5kZXJUYXJnZXQtPmdldEhl
aWdodCgpLCBkZXN0Rm9ybWF0KTsKKworICAgIHNvdXJjZS0+UmVsZWFzZSgpOworICAgIGRlc3Qt
PlJlbGVhc2UoKTsKKworICAgIHJldHVybiByZXQ7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Y29w
eVRleHR1cmUoSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UsIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnNvdXJjZUFyZWEsIHVuc2lnbmVkIGludCBzb3VyY2VXaWR0aCwgdW5zaWduZWQgaW50
IHNvdXJjZUhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExUmVuZGVy
VGFyZ2V0VmlldyAqZGVzdCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEsIHVuc2lnbmVk
IGludCBkZXN0V2lkdGgsIHVuc2lnbmVkIGludCBkZXN0SGVpZ2h0LCBHTGVudW0gZGVzdEZvcm1h
dCkKK3sKKyAgICBIUkVTVUxUIHJlc3VsdDsKKworICAgIGlmICghbUNvcHlSZXNvdXJjZXNJbml0
aWFsaXplZCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbUNvcHlWQiAmJiAhbUNvcHlTYW1wbGVy
ICYmICFtQ29weUlMICYmICFtQ29weVZTICYmICFtQ29weVJHQkFQUyAmJiAhbUNvcHlSR0JQUyAm
JiAhbUNvcHlMdW1QUyAmJiAhbUNvcHlMdW1BbHBoYVBTKTsKKworICAgICAgICBEM0QxMV9CVUZG
RVJfREVTQyB2YkRlc2M7CisgICAgICAgIHZiRGVzYy5CeXRlV2lkdGggPSBzaXplb2YoZDNkMTE6
OlBvc2l0aW9uVGV4Q29vcmRWZXJ0ZXgpICogNDsKKyAgICAgICAgdmJEZXNjLlVzYWdlID0gRDNE
MTFfVVNBR0VfRFlOQU1JQzsKKyAgICAgICAgdmJEZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRf
VkVSVEVYX0JVRkZFUjsKKyAgICAgICAgdmJEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BV
X0FDQ0VTU19XUklURTsKKyAgICAgICAgdmJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgIHZi
RGVzYy5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0gMDsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNl
LT5DcmVhdGVCdWZmZXIoJnZiRGVzYywgTlVMTCwgJm1Db3B5VkIpOworICAgICAgICBBU1NFUlQo
U1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1Db3B5VkIs
ICJSZW5kZXJlcjExIGNvcHkgdGV4dHVyZSB2ZXJ0ZXggYnVmZmVyIik7CisKKyAgICAgICAgRDNE
MTFfU0FNUExFUl9ERVNDIHNhbXBsZXJEZXNjOworICAgICAgICBzYW1wbGVyRGVzYy5GaWx0ZXIg
PSBEM0QxMV9GSUxURVJfTUlOX01BR19NSVBfTElORUFSOworICAgICAgICBzYW1wbGVyRGVzYy5B
ZGRyZXNzVSA9IEQzRDExX1RFWFRVUkVfQUREUkVTU19DTEFNUDsKKyAgICAgICAgc2FtcGxlckRl
c2MuQWRkcmVzc1YgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7CisgICAgICAgIHNhbXBs
ZXJEZXNjLkFkZHJlc3NXID0gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgICAgICBz
YW1wbGVyRGVzYy5NaXBMT0RCaWFzID0gMC4wZjsKKyAgICAgICAgc2FtcGxlckRlc2MuTWF4QW5p
c290cm9weSA9IDA7CisgICAgICAgIHNhbXBsZXJEZXNjLkNvbXBhcmlzb25GdW5jID0gRDNEMTFf
Q09NUEFSSVNPTl9ORVZFUjsKKyAgICAgICAgc2FtcGxlckRlc2MuQm9yZGVyQ29sb3JbMF0gPSAw
LjBmOworICAgICAgICBzYW1wbGVyRGVzYy5Cb3JkZXJDb2xvclsxXSA9IDAuMGY7CisgICAgICAg
IHNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzJdID0gMC4wZjsKKyAgICAgICAgc2FtcGxlckRlc2Mu
Qm9yZGVyQ29sb3JbM10gPSAwLjBmOworICAgICAgICBzYW1wbGVyRGVzYy5NaW5MT0QgPSAwLjBm
OworICAgICAgICBzYW1wbGVyRGVzYy5NYXhMT0QgPSAwLjBmOworCisgICAgICAgIHJlc3VsdCA9
IG1EZXZpY2UtPkNyZWF0ZVNhbXBsZXJTdGF0ZSgmc2FtcGxlckRlc2MsICZtQ29weVNhbXBsZXIp
OworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0
RGVidWdOYW1lKG1Db3B5U2FtcGxlciwgIlJlbmRlcmVyMTEgY29weSBzYW1wbGVyIik7CisKKyAg
ICAgICAgRDNEMTFfSU5QVVRfRUxFTUVOVF9ERVNDIHF1YWRMYXlvdXRbXSA9CisgICAgICAgIHsK
KyAgICAgICAgICAgIHsgIlBPU0lUSU9OIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAw
LCAwLCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEsIDAgfSwKKyAgICAgICAgICAgIHsgIlRF
WENPT1JEIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAwLCA4LCBEM0QxMV9JTlBVVF9Q
RVJfVkVSVEVYX0RBVEEsIDAgfSwKKyAgICAgICAgfTsKKworICAgICAgICByZXN1bHQgPSBtRGV2
aWNlLT5DcmVhdGVJbnB1dExheW91dChxdWFkTGF5b3V0LCAyLCBnX1ZTX1Bhc3N0aHJvdWdoLCBz
aXplb2YoZ19WU19QYXNzdGhyb3VnaCksICZtQ29weUlMKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ29weUlMLCAiUmVu
ZGVyZXIxMSBjb3B5IHRleHR1cmUgaW5wdXQgbGF5b3V0Iik7CisKKyAgICAgICAgcmVzdWx0ID0g
bURldmljZS0+Q3JlYXRlVmVydGV4U2hhZGVyKGdfVlNfUGFzc3Rocm91Z2gsIHNpemVvZihnX1ZT
X1Bhc3N0aHJvdWdoKSwgTlVMTCwgJm1Db3B5VlMpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVE
KHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1Db3B5VlMsICJSZW5kZXJl
cjExIGNvcHkgdGV4dHVyZSB2ZXJ0ZXggc2hhZGVyIik7CisKKyAgICAgICAgcmVzdWx0ID0gbURl
dmljZS0+Q3JlYXRlUGl4ZWxTaGFkZXIoZ19QU19QYXNzdGhyb3VnaFJHQkEsIHNpemVvZihnX1BT
X1Bhc3N0aHJvdWdoUkdCQSksIE5VTEwsICZtQ29weVJHQkFQUyk7CisgICAgICAgIEFTU0VSVChT
VUNDRUVERUQocmVzdWx0KSk7CisgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUNvcHlSR0JB
UFMsICJSZW5kZXJlcjExIGNvcHkgdGV4dHVyZSBSR0JBIHBpeGVsIHNoYWRlciIpOworCisgICAg
ICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVBpeGVsU2hhZGVyKGdfUFNfUGFzc3Rocm91Z2hS
R0IsIHNpemVvZihnX1BTX1Bhc3N0aHJvdWdoUkdCKSwgTlVMTCwgJm1Db3B5UkdCUFMpOworICAg
ICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdO
YW1lKG1Db3B5UkdCUFMsICJSZW5kZXJlcjExIGNvcHkgdGV4dHVyZSBSR0IgcGl4ZWwgc2hhZGVy
Iik7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUGl4ZWxTaGFkZXIoZ19QU19Q
YXNzdGhyb3VnaEx1bSwgc2l6ZW9mKGdfUFNfUGFzc3Rocm91Z2hMdW0pLCBOVUxMLCAmbUNvcHlM
dW1QUyk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgICAgIGQzZDEx
OjpTZXREZWJ1Z05hbWUobUNvcHlMdW1QUywgIlJlbmRlcmVyMTEgY29weSB0ZXh0dXJlIGx1bWlu
YW5jZSBwaXhlbCBzaGFkZXIiKTsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVQ
aXhlbFNoYWRlcihnX1BTX1Bhc3N0aHJvdWdoTHVtQWxwaGEsIHNpemVvZihnX1BTX1Bhc3N0aHJv
dWdoTHVtQWxwaGEpLCBOVUxMLCAmbUNvcHlMdW1BbHBoYVBTKTsKKyAgICAgICAgQVNTRVJUKFNV
Q0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ29weUx1bUFs
cGhhUFMsICJSZW5kZXJlcjExIGNvcHkgdGV4dHVyZSBsdW1pbmFuY2UgYWxwaGEgcGl4ZWwgc2hh
ZGVyIik7CisKKyAgICAgICAgbUNvcHlSZXNvdXJjZXNJbml0aWFsaXplZCA9IHRydWU7CisgICAg
fQorCisgICAgLy8gVmVyaWZ5IHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZWEgc2l6ZXMK
KyAgICBpZiAoc291cmNlQXJlYS54IDwgMCB8fCBzb3VyY2VBcmVhLnggKyBzb3VyY2VBcmVhLndp
ZHRoID4gc3RhdGljX2Nhc3Q8aW50Pihzb3VyY2VXaWR0aCkgfHwKKyAgICAgICAgc291cmNlQXJl
YS55IDwgMCB8fCBzb3VyY2VBcmVhLnkgKyBzb3VyY2VBcmVhLmhlaWdodCA+IHN0YXRpY19jYXN0
PGludD4oc291cmNlSGVpZ2h0KSB8fAorICAgICAgICBkZXN0QXJlYS54IDwgMCB8fCBkZXN0QXJl
YS54ICsgZGVzdEFyZWEud2lkdGggPiBzdGF0aWNfY2FzdDxpbnQ+KGRlc3RXaWR0aCkgfHwKKyAg
ICAgICAgZGVzdEFyZWEueSA8IDAgfHwgZGVzdEFyZWEueSArIGRlc3RBcmVhLmhlaWdodCA+IHN0
YXRpY19jYXN0PGludD4oZGVzdEhlaWdodCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfVkFMVUUsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvLyBTZXQgdmVydGlj
ZXMKKyAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7CisgICAgcmVz
dWx0ID0gbURldmljZUNvbnRleHQtPk1hcChtQ29weVZCLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElT
Q0FSRCwgMCwgJm1hcHBlZFJlc291cmNlKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAg
eworICAgICAgICBFUlIoIkZhaWxlZCB0byBtYXAgdmVydGV4IGJ1ZmZlciBmb3IgdGV4dHVyZSBj
b3B5LCBIUkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIGQzZDExOjpQb3NpdGlvblRl
eENvb3JkVmVydGV4ICp2ZXJ0aWNlcyA9IHN0YXRpY19jYXN0PGQzZDExOjpQb3NpdGlvblRleENv
b3JkVmVydGV4Kj4obWFwcGVkUmVzb3VyY2UucERhdGEpOworCisgICAgLy8gQ3JlYXRlIGEgcXVh
ZCBpbiBob21vZ2VuZW91cyBjb29yZGluYXRlcworICAgIGZsb2F0IHgxID0gKGRlc3RBcmVhLngg
LyBmbG9hdChkZXN0V2lkdGgpKSAqIDIuMGYgLSAxLjBmOworICAgIGZsb2F0IHkxID0gKChkZXN0
SGVpZ2h0IC0gZGVzdEFyZWEueSAtIGRlc3RBcmVhLmhlaWdodCkgLyBmbG9hdChkZXN0SGVpZ2h0
KSkgKiAyLjBmIC0gMS4wZjsKKyAgICBmbG9hdCB4MiA9ICgoZGVzdEFyZWEueCArIGRlc3RBcmVh
LndpZHRoKSAvIGZsb2F0KGRlc3RXaWR0aCkpICogMi4wZiAtIDEuMGY7CisgICAgZmxvYXQgeTIg
PSAoKGRlc3RIZWlnaHQgLSBkZXN0QXJlYS55KSAvIGZsb2F0KGRlc3RIZWlnaHQpKSAqIDIuMGYg
LSAxLjBmOworCisgICAgZmxvYXQgdTEgPSBzb3VyY2VBcmVhLnggLyBmbG9hdChzb3VyY2VXaWR0
aCk7CisgICAgZmxvYXQgdjEgPSBzb3VyY2VBcmVhLnkgLyBmbG9hdChzb3VyY2VIZWlnaHQpOwor
ICAgIGZsb2F0IHUyID0gKHNvdXJjZUFyZWEueCArIHNvdXJjZUFyZWEud2lkdGgpIC8gZmxvYXQo
c291cmNlV2lkdGgpOworICAgIGZsb2F0IHYyID0gKHNvdXJjZUFyZWEueSArIHNvdXJjZUFyZWEu
aGVpZ2h0KSAvIGZsb2F0KHNvdXJjZUhlaWdodCk7CisKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25U
ZXhDb29yZFZlcnRleCgmdmVydGljZXNbMF0sIHgxLCB5MSwgdTEsIHYyKTsKKyAgICBkM2QxMTo6
U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbMV0sIHgxLCB5MiwgdTEsIHYxKTsK
KyAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbMl0sIHgyLCB5
MSwgdTIsIHYyKTsKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGlj
ZXNbM10sIHgyLCB5MiwgdTIsIHYxKTsKKworICAgIG1EZXZpY2VDb250ZXh0LT5Vbm1hcChtQ29w
eVZCLCAwKTsKKworICAgIHN0YXRpYyBVSU5UIHN0cmlkZSA9IHNpemVvZihkM2QxMTo6UG9zaXRp
b25UZXhDb29yZFZlcnRleCk7CisgICAgc3RhdGljIFVJTlQgc3RhcnRJZHggPSAwOworICAgIG1E
ZXZpY2VDb250ZXh0LT5JQVNldFZlcnRleEJ1ZmZlcnMoMCwgMSwgJm1Db3B5VkIsICZzdHJpZGUs
ICZzdGFydElkeCk7CisKKyAgICAvLyBBcHBseSBzdGF0ZQorICAgIG1EZXZpY2VDb250ZXh0LT5P
TVNldEJsZW5kU3RhdGUoTlVMTCwgTlVMTCwgMHhGRkZGRkZGKTsKKyAgICBtRGV2aWNlQ29udGV4
dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShOVUxMLCAweEZGRkZGRkZGKTsKKyAgICBtRGV2aWNl
Q29udGV4dC0+UlNTZXRTdGF0ZShOVUxMKTsKKworICAgIC8vIEFwcGx5IHNoYWRlcnMKKyAgICBt
RGV2aWNlQ29udGV4dC0+SUFTZXRJbnB1dExheW91dChtQ29weUlMKTsKKyAgICBtRGV2aWNlQ29u
dGV4dC0+SUFTZXRQcmltaXRpdmVUb3BvbG9neShEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFO
R0xFU1RSSVApOworICAgIG1EZXZpY2VDb250ZXh0LT5WU1NldFNoYWRlcihtQ29weVZTLCBOVUxM
LCAwKTsKKworICAgIElEM0QxMVBpeGVsU2hhZGVyICpwcyA9IE5VTEw7CisgICAgc3dpdGNoKGRl
c3RGb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9SR0JBOiAgICAgICAgICAgIHBzID0gbUNv
cHlSR0JBUFM7ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCOiAgICAgICAgICAgICBwcyA9
IG1Db3B5UkdCUFM7ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FMUEhBOiAgICAgICAgICAg
cHMgPSBtQ29weVJHQkFQUzsgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9CR1JBX0VYVDogICAg
ICAgIHBzID0gbUNvcHlSR0JBUFM7ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNF
OiAgICAgICBwcyA9IG1Db3B5THVtUFM7ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xVTUlO
QU5DRV9BTFBIQTogcHMgPSBtQ29weUx1bUFscGhhUFM7IGJyZWFrOworICAgICAgZGVmYXVsdDog
VU5SRUFDSEFCTEUoKTsgIHBzID0gTlVMTDsgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBtRGV2aWNlQ29udGV4dC0+UFNTZXRTaGFkZXIocHMsIE5VTEwsIDApOworICAgIG1EZXZpY2VD
b250ZXh0LT5HU1NldFNoYWRlcihOVUxMLCBOVUxMLCAwKTsKKworICAgIC8vIFVuc2V0IHRoZSBj
dXJyZW50bHkgYm91bmQgc2hhZGVyIHJlc291cmNlIHRvIGF2b2lkIGNvbmZsaWN0cworICAgIHN0
YXRpYyBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmNvbnN0IG51bGxTUlYgPSBOVUxMOworICAg
IG1EZXZpY2VDb250ZXh0LT5QU1NldFNoYWRlclJlc291cmNlcygwLCAxLCAmbnVsbFNSVik7CisK
KyAgICAvLyBBcHBseSByZW5kZXIgdGFyZ2V0CisgICAgc2V0T25lVGltZVJlbmRlclRhcmdldChk
ZXN0KTsKKworICAgIC8vIFNldCB0aGUgdmlld3BvcnQKKyAgICBEM0QxMV9WSUVXUE9SVCB2aWV3
cG9ydDsKKyAgICB2aWV3cG9ydC5Ub3BMZWZ0WCA9IDA7CisgICAgdmlld3BvcnQuVG9wTGVmdFkg
PSAwOworICAgIHZpZXdwb3J0LldpZHRoID0gZGVzdFdpZHRoOworICAgIHZpZXdwb3J0LkhlaWdo
dCA9IGRlc3RIZWlnaHQ7CisgICAgdmlld3BvcnQuTWluRGVwdGggPSAwLjBmOworICAgIHZpZXdw
b3J0Lk1heERlcHRoID0gMS4wZjsKKyAgICBtRGV2aWNlQ29udGV4dC0+UlNTZXRWaWV3cG9ydHMo
MSwgJnZpZXdwb3J0KTsKKworICAgIC8vIEFwcGx5IHRleHR1cmVzCisgICAgbURldmljZUNvbnRl
eHQtPlBTU2V0U2hhZGVyUmVzb3VyY2VzKDAsIDEsICZzb3VyY2UpOworICAgIG1EZXZpY2VDb250
ZXh0LT5QU1NldFNhbXBsZXJzKDAsIDEsICZtQ29weVNhbXBsZXIpOworCisgICAgLy8gRHJhdyB0
aGUgcXVhZAorICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3KDQsIDApOworCisgICAgLy8gVW5iaW5k
IHRleHR1cmVzIGFuZCByZW5kZXIgdGFyZ2V0cyBhbmQgdmVydGV4IGJ1ZmZlcgorICAgIG1EZXZp
Y2VDb250ZXh0LT5QU1NldFNoYWRlclJlc291cmNlcygwLCAxLCAmbnVsbFNSVik7CisKKyAgICB1
bmFwcGx5UmVuZGVyVGFyZ2V0cygpOworCisgICAgVUlOVCB6ZXJvID0gMDsKKyAgICBJRDNEMTFC
dWZmZXIgKmNvbnN0IG51bGxCdWZmZXIgPSBOVUxMOworICAgIG1EZXZpY2VDb250ZXh0LT5JQVNl
dFZlcnRleEJ1ZmZlcnMoMCwgMSwgJm51bGxCdWZmZXIsICZ6ZXJvLCAmemVybyk7CisKKyAgICBt
YXJrQWxsU3RhdGVEaXJ0eSgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVuZGVy
ZXIxMTo6dW5hcHBseVJlbmRlclRhcmdldHMoKQoreworICAgIHNldE9uZVRpbWVSZW5kZXJUYXJn
ZXQoTlVMTCk7Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6c2V0T25lVGltZVJlbmRlclRhcmdldChJ
RDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpyZW5kZXJUYXJnZXRWaWV3KQoreworICAgIElEM0QxMVJl
bmRlclRhcmdldFZpZXcgKnJ0dkFycmF5W2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZG
RVJTXSA9IHtOVUxMfTsKKworICAgIHJ0dkFycmF5WzBdID0gcmVuZGVyVGFyZ2V0VmlldzsKKwor
ICAgIG1EZXZpY2VDb250ZXh0LT5PTVNldFJlbmRlclRhcmdldHMoZ2V0TWF4UmVuZGVyVGFyZ2V0
cygpLCBydHZBcnJheSwgTlVMTCk7CisKKyAgICAvLyBEbyBub3QgcHJlc2VydmUgdGhlIHNlcmlh
bCBmb3IgdGhpcyBvbmUtdGltZS11c2UgcmVuZGVyIHRhcmdldAorICAgIGZvciAodW5zaWduZWQg
aW50IHJ0SW5kZXggPSAwOyBydEluZGV4IDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JV
RkZFUlM7IHJ0SW5kZXgrKykKKyAgICB7CisgICAgICAgIG1BcHBsaWVkUmVuZGVyVGFyZ2V0U2Vy
aWFsc1tydEluZGV4XSA9IDA7CisgICAgfQorfQorCitSZW5kZXJUYXJnZXQgKlJlbmRlcmVyMTE6
OmNyZWF0ZVJlbmRlclRhcmdldChTd2FwQ2hhaW4gKnN3YXBDaGFpbiwgYm9vbCBkZXB0aCkKK3sK
KyAgICBTd2FwQ2hhaW4xMSAqc3dhcENoYWluMTEgPSBTd2FwQ2hhaW4xMTo6bWFrZVN3YXBDaGFp
bjExKHN3YXBDaGFpbik7CisgICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldCA9IE5VTEw7
CisKKyAgICBpZiAoZGVwdGgpCisgICAgeworICAgICAgICAvLyBOb3RlOiBkZXB0aCBzdGVuY2ls
IG1heSBiZSBOVUxMIGZvciAwIHNpemVkIHN1cmZhY2VzCisgICAgICAgIHJlbmRlclRhcmdldCA9
IG5ldyBSZW5kZXJUYXJnZXQxMSh0aGlzLCBzd2FwQ2hhaW4xMS0+Z2V0RGVwdGhTdGVuY2lsKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwQ2hhaW4xMS0+
Z2V0RGVwdGhTdGVuY2lsVGV4dHVyZSgpLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3dhcENoYWluMTEtPmdldFdpZHRoKCksIHN3YXBDaGFpbjExLT5n
ZXRIZWlnaHQoKSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8vIE5vdGU6IHJl
bmRlciB0YXJnZXQgbWF5IGJlIE5VTEwgZm9yIDAgc2l6ZWQgc3VyZmFjZXMKKyAgICAgICAgcmVu
ZGVyVGFyZ2V0ID0gbmV3IFJlbmRlclRhcmdldDExKHRoaXMsIHN3YXBDaGFpbjExLT5nZXRSZW5k
ZXJUYXJnZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3
YXBDaGFpbjExLT5nZXRPZmZzY3JlZW5UZXh0dXJlKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzd2FwQ2hhaW4xMS0+Z2V0UmVuZGVyVGFyZ2V0U2hhZGVyUmVz
b3VyY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YXBD
aGFpbjExLT5nZXRXaWR0aCgpLCBzd2FwQ2hhaW4xMS0+Z2V0SGVpZ2h0KCkpOworICAgIH0KKyAg
ICByZXR1cm4gcmVuZGVyVGFyZ2V0OworfQorCitSZW5kZXJUYXJnZXQgKlJlbmRlcmVyMTE6OmNy
ZWF0ZVJlbmRlclRhcmdldChpbnQgd2lkdGgsIGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdM
c2l6ZWkgc2FtcGxlcywgYm9vbCBkZXB0aCkKK3sKKyAgICBSZW5kZXJUYXJnZXQxMSAqcmVuZGVy
VGFyZ2V0ID0gbmV3IFJlbmRlclRhcmdldDExKHRoaXMsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
c2FtcGxlcywgZGVwdGgpOworICAgIHJldHVybiByZW5kZXJUYXJnZXQ7Cit9CisKK1NoYWRlckV4
ZWN1dGFibGUgKlJlbmRlcmVyMTE6OmxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9u
LCBzaXplX3QgbGVuZ3RoLCByeDo6U2hhZGVyVHlwZSB0eXBlKQoreworICAgIFNoYWRlckV4ZWN1
dGFibGUxMSAqZXhlY3V0YWJsZSA9IE5VTEw7CisKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgewor
ICAgICAgY2FzZSByeDo6U0hBREVSX1ZFUlRFWDoKKyAgICAgICAgeworICAgICAgICAgICAgSUQz
RDExVmVydGV4U2hhZGVyICp2c2hhZGVyID0gTlVMTDsKKyAgICAgICAgICAgIEhSRVNVTFQgcmVz
dWx0ID0gbURldmljZS0+Q3JlYXRlVmVydGV4U2hhZGVyKGZ1bmN0aW9uLCBsZW5ndGgsIE5VTEws
ICZ2c2hhZGVyKTsKKyAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAg
ICAgICAgICAgIGlmICh2c2hhZGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4
ZWN1dGFibGUgPSBuZXcgU2hhZGVyRXhlY3V0YWJsZTExKGZ1bmN0aW9uLCBsZW5ndGgsIHZzaGFk
ZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSByeDo6U0hBREVSX1BJWEVMOgorICAgICAgICB7CisgICAgICAgICAgICBJRDNEMTFQaXhlbFNo
YWRlciAqcHNoYWRlciA9IE5VTEw7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZp
Y2UtPkNyZWF0ZVBpeGVsU2hhZGVyKGZ1bmN0aW9uLCBsZW5ndGgsIE5VTEwsICZwc2hhZGVyKTsK
KyAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgICAgIGlm
IChwc2hhZGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBu
ZXcgU2hhZGVyRXhlY3V0YWJsZTExKGZ1bmN0aW9uLCBsZW5ndGgsIHBzaGFkZXIpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSByeDo6U0hBREVS
X0dFT01FVFJZOgorICAgICAgICB7CisgICAgICAgICAgICBJRDNEMTFHZW9tZXRyeVNoYWRlciAq
Z3NoYWRlciA9IE5VTEw7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNy
ZWF0ZUdlb21ldHJ5U2hhZGVyKGZ1bmN0aW9uLCBsZW5ndGgsIE5VTEwsICZnc2hhZGVyKTsKKyAg
ICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgICAgIGlmIChn
c2hhZGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBuZXcg
U2hhZGVyRXhlY3V0YWJsZTExKGZ1bmN0aW9uLCBsZW5ndGgsIGdzaGFkZXIpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIGV4ZWN1
dGFibGU7Cit9CisKK1NoYWRlckV4ZWN1dGFibGUgKlJlbmRlcmVyMTE6OmNvbXBpbGVUb0V4ZWN1
dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGNoYXIgKnNoYWRlckhMU0wsIHJ4OjpT
aGFkZXJUeXBlIHR5cGUpCit7CisgICAgY29uc3QgY2hhciAqcHJvZmlsZSA9IE5VTEw7CisKKyAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgY2FzZSByeDo6U0hBREVSX1ZFUlRFWDoKKyAg
ICAgICAgcHJvZmlsZSA9ICJ2c180XzAiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ugcng6
OlNIQURFUl9QSVhFTDoKKyAgICAgICAgcHJvZmlsZSA9ICJwc180XzAiOworICAgICAgICBicmVh
azsKKyAgICAgIGNhc2Ugcng6OlNIQURFUl9HRU9NRVRSWToKKyAgICAgICAgcHJvZmlsZSA9ICJn
c180XzAiOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIElEM0RCbG9iICpiaW5h
cnkgPSAoSUQzREJsb2IqKWNvbXBpbGVUb0JpbmFyeShpbmZvTG9nLCBzaGFkZXJITFNMLCBwcm9m
aWxlLCBEM0RDT01QSUxFX09QVElNSVpBVElPTl9MRVZFTDAsIGZhbHNlKTsKKyAgICBpZiAoIWJp
bmFyeSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBTaGFkZXJFeGVjdXRhYmxlICpleGVj
dXRhYmxlID0gbG9hZEV4ZWN1dGFibGUoKERXT1JEICopYmluYXJ5LT5HZXRCdWZmZXJQb2ludGVy
KCksIGJpbmFyeS0+R2V0QnVmZmVyU2l6ZSgpLCB0eXBlKTsKKyAgICBiaW5hcnktPlJlbGVhc2Uo
KTsKKworICAgIHJldHVybiBleGVjdXRhYmxlOworfQorCitWZXJ0ZXhCdWZmZXIgKlJlbmRlcmVy
MTE6OmNyZWF0ZVZlcnRleEJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG5ldyBWZXJ0ZXhCdWZmZXIx
MSh0aGlzKTsKK30KKworSW5kZXhCdWZmZXIgKlJlbmRlcmVyMTE6OmNyZWF0ZUluZGV4QnVmZmVy
KCkKK3sKKyAgICByZXR1cm4gbmV3IEluZGV4QnVmZmVyMTEodGhpcyk7Cit9CisKK0J1ZmZlclN0
b3JhZ2UgKlJlbmRlcmVyMTE6OmNyZWF0ZUJ1ZmZlclN0b3JhZ2UoKQoreworICAgIHJldHVybiBu
ZXcgQnVmZmVyU3RvcmFnZTExKHRoaXMpOworfQorCitRdWVyeUltcGwgKlJlbmRlcmVyMTE6OmNy
ZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKQoreworICAgIHJldHVybiBuZXcgUXVlcnkxMSh0aGlzLCB0
eXBlKTsKK30KKworRmVuY2VJbXBsICpSZW5kZXJlcjExOjpjcmVhdGVGZW5jZSgpCit7CisgICAg
cmV0dXJuIG5ldyBGZW5jZTExKHRoaXMpOworfQorCitib29sIFJlbmRlcmVyMTE6OmdldFJlbmRl
clRhcmdldFJlc291cmNlKGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVyLCB1bnNpZ25lZCBp
bnQgKnN1YnJlc291cmNlSW5kZXgsIElEM0QxMVRleHR1cmUyRCAqKnJlc291cmNlKQoreworICAg
IEFTU0VSVChjb2xvcmJ1ZmZlciAhPSBOVUxMKTsKKworICAgIFJlbmRlclRhcmdldDExICpyZW5k
ZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKGNvbG9yYnVmZmVy
LT5nZXRSZW5kZXJUYXJnZXQoKSk7CisgICAgaWYgKHJlbmRlclRhcmdldCkKKyAgICB7CisgICAg
ICAgICpzdWJyZXNvdXJjZUluZGV4ID0gcmVuZGVyVGFyZ2V0LT5nZXRTdWJyZXNvdXJjZUluZGV4
KCk7CisKKyAgICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqY29sb3JCdWZmZXJSVFYgPSBy
ZW5kZXJUYXJnZXQtPmdldFJlbmRlclRhcmdldFZpZXcoKTsKKyAgICAgICAgaWYgKGNvbG9yQnVm
ZmVyUlRWKQorICAgICAgICB7CisgICAgICAgICAgICBJRDNEMTFSZXNvdXJjZSAqdGV4dHVyZVJl
c291cmNlID0gTlVMTDsKKyAgICAgICAgICAgIGNvbG9yQnVmZmVyUlRWLT5HZXRSZXNvdXJjZSgm
dGV4dHVyZVJlc291cmNlKTsKKyAgICAgICAgICAgIGNvbG9yQnVmZmVyUlRWLT5SZWxlYXNlKCk7
CisKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlUmVzb3VyY2UpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSB0ZXh0dXJlUmVzb3VyY2UtPlF1ZXJ5SW50ZXJm
YWNlKElJRF9JRDNEMTFUZXh0dXJlMkQsICh2b2lkKiopcmVzb3VyY2UpOworICAgICAgICAgICAg
ICAgIHRleHR1cmVSZXNvdXJjZS0+UmVsZWFzZSgpOworCisgICAgICAgICAgICAgICAgaWYgKFNV
Q0NFRURFRChyZXN1bHQpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIGV4dHJh
Y3QgdGhlIElEM0QxMVRleHR1cmUyRCBmcm9tIHRoZSByZW5kZXIgdGFyZ2V0IHJlc291cmNlLCAi
CisgICAgICAgICAgICAgICAgICAgICAgICAiSFJFU1VMVDogMHglWC4iLCByZXN1bHQpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJlcjExOjpibGl0UmVjdChnbDo6RnJhbWVidWZm
ZXIgKnJlYWRUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlYWRSZWN0LCBnbDo6RnJhbWVi
dWZmZXIgKmRyYXdUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRyYXdSZWN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQsIGJvb2wgYmxpdERlcHRo
U3RlbmNpbCkKK3sKKyAgICBpZiAoYmxpdFJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIGds
OjpSZW5kZXJidWZmZXIgKnJlYWRCdWZmZXIgPSByZWFkVGFyZ2V0LT5nZXRSZWFkQ29sb3JidWZm
ZXIoKTsKKworICAgICAgICBpZiAoIXJlYWRCdWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZWFkIGJ1ZmZlciBmcm9tIHRoZSByZWFkIGZy
YW1lYnVmZmVyLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBSZW5kZXJUYXJnZXQgKnJlYWRSZW5k
ZXJUYXJnZXQgPSByZWFkQnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKTsKKworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBnbDo6
SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUzsgY29sb3JBdHRhY2htZW50KyspCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChkcmF3VGFyZ2V0LT5pc0VuYWJsZWRDb2xvckF0dGFjaG1l
bnQoY29sb3JBdHRhY2htZW50KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6
UmVuZGVyYnVmZmVyICpkcmF3QnVmZmVyID0gZHJhd1RhcmdldC0+Z2V0Q29sb3JidWZmZXIoY29s
b3JBdHRhY2htZW50KTsKKworICAgICAgICAgICAgICAgIGlmICghZHJhd0J1ZmZlcikKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZl
IHRoZSBkcmF3IGJ1ZmZlciBmcm9tIHRoZSBkcmF3IGZyYW1lYnVmZmVyLiIpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXQgKmRyYXdSZW5k
ZXJUYXJnZXQgPSBkcmF3QnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKTsKKworICAgICAgICAgICAg
ICAgIGlmICghYmxpdFJlbmRlcmJ1ZmZlclJlY3QocmVhZFJlY3QsIGRyYXdSZWN0LCByZWFkUmVu
ZGVyVGFyZ2V0LCBkcmF3UmVuZGVyVGFyZ2V0LCBmYWxzZSkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGJsaXREZXB0aFN0ZW5jaWwp
CisgICAgeworICAgICAgICBnbDo6UmVuZGVyYnVmZmVyICpyZWFkQnVmZmVyID0gcmVhZFRhcmdl
dC0+Z2V0RGVwdGhPclN0ZW5jaWxidWZmZXIoKTsKKyAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZlciAq
ZHJhd0J1ZmZlciA9IGRyYXdUYXJnZXQtPmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKCk7CisKKyAg
ICAgICAgaWYgKCFyZWFkQnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkZhaWxl
ZCB0byByZXRyaWV2ZSB0aGUgcmVhZCBkZXB0aC1zdGVuY2lsIGJ1ZmZlciBmcm9tIHRoZSByZWFk
IGZyYW1lYnVmZmVyLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWRyYXdCdWZmZXIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSBkcmF3IGRl
cHRoLXN0ZW5jaWwgYnVmZmVyIGZyb20gdGhlIGRyYXcgZnJhbWVidWZmZXIuIik7CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICAgICAg
fQorCisgICAgICAgIFJlbmRlclRhcmdldCAqcmVhZFJlbmRlclRhcmdldCA9IHJlYWRCdWZmZXIt
PmdldERlcHRoU3RlbmNpbCgpOworICAgICAgICBSZW5kZXJUYXJnZXQgKmRyYXdSZW5kZXJUYXJn
ZXQgPSBkcmF3QnVmZmVyLT5nZXREZXB0aFN0ZW5jaWwoKTsKKworICAgICAgICBpZiAoIWJsaXRS
ZW5kZXJidWZmZXJSZWN0KHJlYWRSZWN0LCBkcmF3UmVjdCwgcmVhZFJlbmRlclRhcmdldCwgZHJh
d1JlbmRlclRhcmdldCwgdHJ1ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbmRl
cmVyMTE6OnJlYWRQaXhlbHMoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgR0xpbnQgeCwg
R0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgb3V0cHV0UGl0
Y2gsIGJvb2wgcGFja1JldmVyc2VSb3dPcmRlciwgR0xpbnQgcGFja0FsaWdubWVudCwgdm9pZCog
cGl4ZWxzKQoreworICAgIElEM0QxMVRleHR1cmUyRCAqY29sb3JCdWZmZXJUZXh0dXJlID0gTlVM
TDsKKyAgICB1bnNpZ25lZCBpbnQgc3VicmVzb3VyY2VJbmRleCA9IDA7CisKKyAgICBnbDo6UmVu
ZGVyYnVmZmVyICpjb2xvcmJ1ZmZlciA9IGZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIo
KTsKKworICAgIGlmIChjb2xvcmJ1ZmZlciAmJiBnZXRSZW5kZXJUYXJnZXRSZXNvdXJjZShjb2xv
cmJ1ZmZlciwgJnN1YnJlc291cmNlSW5kZXgsICZjb2xvckJ1ZmZlclRleHR1cmUpKQorICAgIHsK
KyAgICAgICAgZ2w6OlJlY3RhbmdsZSBhcmVhOworICAgICAgICBhcmVhLnggPSB4OworICAgICAg
ICBhcmVhLnkgPSB5OworICAgICAgICBhcmVhLndpZHRoID0gd2lkdGg7CisgICAgICAgIGFyZWEu
aGVpZ2h0ID0gaGVpZ2h0OworCisgICAgICAgIHJlYWRUZXh0dXJlRGF0YShjb2xvckJ1ZmZlclRl
eHR1cmUsIHN1YnJlc291cmNlSW5kZXgsIGFyZWEsIGZvcm1hdCwgdHlwZSwgb3V0cHV0UGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrUmV2ZXJzZVJvd09yZGVyLCBwYWNrQWxpZ25t
ZW50LCBwaXhlbHMpOworCisgICAgICAgIGNvbG9yQnVmZmVyVGV4dHVyZS0+UmVsZWFzZSgpOwor
ICAgICAgICBjb2xvckJ1ZmZlclRleHR1cmUgPSBOVUxMOworICAgIH0KK30KKworSW1hZ2UgKlJl
bmRlcmVyMTE6OmNyZWF0ZUltYWdlKCkKK3sKKyAgICByZXR1cm4gbmV3IEltYWdlMTEoKTsKK30K
Kwordm9pZCBSZW5kZXJlcjExOjpnZW5lcmF0ZU1pcG1hcChJbWFnZSAqZGVzdCwgSW1hZ2UgKnNy
YykKK3sKKyAgICBJbWFnZTExICpkZXN0MTEgPSBJbWFnZTExOjptYWtlSW1hZ2UxMShkZXN0KTsK
KyAgICBJbWFnZTExICpzcmMxMSA9IEltYWdlMTE6Om1ha2VJbWFnZTExKHNyYyk7CisgICAgSW1h
Z2UxMTo6Z2VuZXJhdGVNaXBtYXAoZGVzdDExLCBzcmMxMSk7Cit9CisKK1RleHR1cmVTdG9yYWdl
ICpSZW5kZXJlcjExOjpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKFN3YXBDaGFpbiAqc3dhcENoYWlu
KQoreworICAgIFN3YXBDaGFpbjExICpzd2FwQ2hhaW4xMSA9IFN3YXBDaGFpbjExOjptYWtlU3dh
cENoYWluMTEoc3dhcENoYWluKTsKKyAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlMTFfMkQo
dGhpcywgc3dhcENoYWluMTEpOworfQorCitUZXh0dXJlU3RvcmFnZSAqUmVuZGVyZXIxMTo6Y3Jl
YXRlVGV4dHVyZVN0b3JhZ2UyRChpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdM
ZW51bSB1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0KQoreworICAgIHJldHVybiBuZXcgVGV4dHVyZVN0b3JhZ2UxMV8yRCh0aGlzLCBsZXZl
bHMsIGludGVybmFsZm9ybWF0LCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxlLCB3aWR0aCwgaGVpZ2h0
KTsKK30KKworVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyMTE6OmNyZWF0ZVRleHR1cmVTdG9yYWdl
Q3ViZShpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2FnZSwgYm9v
bCBmb3JjZVJlbmRlcmFibGUsIGludCBzaXplKQoreworICAgIHJldHVybiBuZXcgVGV4dHVyZVN0
b3JhZ2UxMV9DdWJlKHRoaXMsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHVzYWdlLCBmb3JjZVJl
bmRlcmFibGUsIHNpemUpOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRGYXN0
UGl4ZWxDb3B5U2l6ZShEWEdJX0ZPUk1BVCBzb3VyY2VGb3JtYXQsIEdMZW51bSBkZXN0Rm9ybWF0
LCBHTGVudW0gZGVzdFR5cGUpCit7CisgICAgaWYgKHNvdXJjZUZvcm1hdCA9PSBEWEdJX0ZPUk1B
VF9BOF9VTk9STSAmJgorICAgICAgICBkZXN0Rm9ybWF0ICAgPT0gR0xfQUxQSEEgJiYKKyAgICAg
ICAgZGVzdFR5cGUgICAgID09IEdMX1VOU0lHTkVEX0JZVEUpCisgICAgeworICAgICAgICByZXR1
cm4gMTsKKyAgICB9CisgICAgZWxzZSBpZiAoc291cmNlRm9ybWF0ID09IERYR0lfRk9STUFUX1I4
RzhCOEE4X1VOT1JNICYmCisgICAgICAgICAgICAgZGVzdEZvcm1hdCAgID09IEdMX1JHQkEgJiYK
KyAgICAgICAgICAgICBkZXN0VHlwZSAgICAgPT0gR0xfVU5TSUdORURfQllURSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiA0OworICAgIH0KKyAgICBlbHNlIGlmIChzb3VyY2VGb3JtYXQgPT0gRFhH
SV9GT1JNQVRfQjhHOFI4QThfVU5PUk0gJiYKKyAgICAgICAgICAgICBkZXN0Rm9ybWF0ICAgPT0g
R0xfQkdSQV9FWFQgJiYKKyAgICAgICAgICAgICBkZXN0VHlwZSAgICAgPT0gR0xfVU5TSUdORURf
QllURSkKKyAgICB7CisgICAgICAgIHJldHVybiA0OworICAgIH0KKyAgICBlbHNlIGlmIChzb3Vy
Y2VGb3JtYXQgPT0gRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUICYmCisgICAgICAgICAg
ICAgZGVzdEZvcm1hdCAgID09IEdMX1JHQkEgJiYKKyAgICAgICAgICAgICBkZXN0VHlwZSAgICAg
PT0gR0xfSEFMRl9GTE9BVF9PRVMpCisgICAgeworICAgICAgICByZXR1cm4gODsKKyAgICB9Cisg
ICAgZWxzZSBpZiAoc291cmNlRm9ybWF0ID09IERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCAm
JgorICAgICAgICAgICAgIGRlc3RGb3JtYXQgICA9PSBHTF9SR0IgJiYKKyAgICAgICAgICAgICBk
ZXN0VHlwZSAgICAgPT0gR0xfRkxPQVQpCisgICAgeworICAgICAgICByZXR1cm4gMTI7CisgICAg
fQorICAgIGVsc2UgaWYgKHNvdXJjZUZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJf
RkxPQVQgJiYKKyAgICAgICAgICAgICBkZXN0Rm9ybWF0ICAgPT0gR0xfUkdCQSAmJgorICAgICAg
ICAgICAgIGRlc3RUeXBlICAgICA9PSBHTF9GTE9BVCkKKyAgICB7CisgICAgICAgIHJldHVybiAx
NjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQor
CitzdGF0aWMgaW5saW5lIHZvaWQgcmVhZFBpeGVsQ29sb3IoY29uc3QgdW5zaWduZWQgY2hhciAq
ZGF0YSwgRFhHSV9GT1JNQVQgZm9ybWF0LCB1bnNpZ25lZCBpbnQgeCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgeSwgaW50IGlucHV0UGl0Y2gsIGdsOjpD
b2xvciAqb3V0Q29sb3IpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgdW5z
aWduZWQgaW50IHJnYmEgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBpbnQqPihk
YXRhICsgNCAqIHggKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgICAgICBvdXRDb2xvci0+cmVk
ID0gICAocmdiYSAmIDB4MDAwMDAwRkYpICogKDEuMGYgLyAweDAwMDAwMEZGKTsKKyAgICAgICAg
ICAgIG91dENvbG9yLT5ncmVlbiA9IChyZ2JhICYgMHgwMDAwRkYwMCkgKiAoMS4wZiAvIDB4MDAw
MEZGMDApOworICAgICAgICAgICAgb3V0Q29sb3ItPmJsdWUgPSAgKHJnYmEgJiAweDAwRkYwMDAw
KSAqICgxLjBmIC8gMHgwMEZGMDAwMCk7CisgICAgICAgICAgICBvdXRDb2xvci0+YWxwaGEgPSAo
cmdiYSAmIDB4RkYwMDAwMDApICogKDEuMGYgLyAweEZGMDAwMDAwKTsKKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOF9VTk9STToKKyAgICAgICAg
eworICAgICAgICAgICAgb3V0Q29sb3ItPnJlZCA9ICAgMC4wZjsKKyAgICAgICAgICAgIG91dENv
bG9yLT5ncmVlbiA9IDAuMGY7CisgICAgICAgICAgICBvdXRDb2xvci0+Ymx1ZSA9ICAwLjBmOwor
ICAgICAgICAgICAgb3V0Q29sb3ItPmFscGhhID0gKihkYXRhICsgeCArIHkgKiBpbnB1dFBpdGNo
KSAvIDI1NS4wZjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dENv
bG9yLT5yZWQgPSAgICoocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEgKyAxNiAq
IHggKyB5ICogaW5wdXRQaXRjaCkgKyAwKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ncmVlbiA9
ICoocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEgKyAxNiAqIHggKyB5ICogaW5w
dXRQaXRjaCkgKyAxKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ibHVlID0gICoocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEgKyAxNiAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAy
KTsKKyAgICAgICAgICAgIG91dENvbG9yLT5hbHBoYSA9ICoocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KGRhdGEgKyAxNiAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAzKTsKKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxP
QVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dENvbG9yLT5yZWQgPSAgICoocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEgKyAxMiAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAw
KTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ncmVlbiA9ICoocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KGRhdGEgKyAxMiAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAxKTsKKyAgICAgICAg
ICAgIG91dENvbG9yLT5ibHVlID0gICoocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRh
dGEgKyAxMiAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAyKTsKKyAgICAgICAgICAgIG91dENvbG9y
LT5hbHBoYSA9IDEuMGY7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBv
dXRDb2xvci0+cmVkID0gICBnbDo6ZmxvYXQxNlRvRmxvYXQzMigqKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdW5zaWduZWQgc2hvcnQqPihkYXRhICsgOCAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAw
KSk7CisgICAgICAgICAgICBvdXRDb2xvci0+Z3JlZW4gPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMigq
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihkYXRhICsgOCAqIHggKyB5
ICogaW5wdXRQaXRjaCkgKyAxKSk7CisgICAgICAgICAgICBvdXRDb2xvci0+Ymx1ZSA9ICBnbDo6
ZmxvYXQxNlRvRmxvYXQzMigqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQq
PihkYXRhICsgOCAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAyKSk7CisgICAgICAgICAgICBvdXRD
b2xvci0+YWxwaGEgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMigqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgc2hvcnQqPihkYXRhICsgOCAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAzKSk7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhH
OFI4QThfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBiZ3JhID0g
KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgaW50Kj4oZGF0YSArIDQgKiB4ICsgeSAq
IGlucHV0UGl0Y2gpOworICAgICAgICAgICAgb3V0Q29sb3ItPnJlZCA9ICAgKGJncmEgJiAweDAw
RkYwMDAwKSAqICgxLjBmIC8gMHgwMEZGMDAwMCk7CisgICAgICAgICAgICBvdXRDb2xvci0+Ymx1
ZSA9ICAoYmdyYSAmIDB4MDAwMDAwRkYpICogKDEuMGYgLyAweDAwMDAwMEZGKTsKKyAgICAgICAg
ICAgIG91dENvbG9yLT5ncmVlbiA9IChiZ3JhICYgMHgwMDAwRkYwMCkgKiAoMS4wZiAvIDB4MDAw
MEZGMDApOworICAgICAgICAgICAgb3V0Q29sb3ItPmFscGhhID0gKGJncmEgJiAweEZGMDAwMDAw
KSAqICgxLjBmIC8gMHhGRjAwMDAwMCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIG91
dENvbG9yLT5yZWQgPSAgICooZGF0YSArIHggKyB5ICogaW5wdXRQaXRjaCkgLyAyNTUuMGY7Cisg
ICAgICAgICAgICBvdXRDb2xvci0+Z3JlZW4gPSAwLjBmOworICAgICAgICAgICAgb3V0Q29sb3It
PmJsdWUgPSAgMC4wZjsKKyAgICAgICAgICAgIG91dENvbG9yLT5hbHBoYSA9IDEuMGY7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VTk9S
TToKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcmcgPSAqcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KGRhdGEgKyAyICogeCArIHkgKiBpbnB1dFBp
dGNoKTsKKworICAgICAgICAgICAgb3V0Q29sb3ItPnJlZCA9ICAgKHJnICYgMHhGRjAwKSAqICgx
LjBmIC8gMHhGRjAwKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ncmVlbiA9IChyZyAmIDB4MDBG
RikgKiAoMS4wZiAvIDB4MDBGRik7CisgICAgICAgICAgICBvdXRDb2xvci0+Ymx1ZSA9ICAwLjBm
OworICAgICAgICAgICAgb3V0Q29sb3ItPmFscGhhID0gMS4wZjsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIG91dENvbG9yLT5yZWQgPSAgIGdsOjpmbG9hdDE2VG9GbG9hdDMyKCpyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oZGF0YSArIDIgKiB4ICsgeSAqIGlu
cHV0UGl0Y2gpKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ncmVlbiA9IDAuMGY7CisgICAgICAg
ICAgICBvdXRDb2xvci0+Ymx1ZSA9ICAwLjBmOworICAgICAgICAgICAgb3V0Q29sb3ItPmFscGhh
ID0gMS4wZjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SMTZHMTZfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dENvbG9yLT5yZWQg
PSAgIGdsOjpmbG9hdDE2VG9GbG9hdDMyKCoocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25l
ZCBzaG9ydCo+KGRhdGEgKyA0ICogeCArIHkgKiBpbnB1dFBpdGNoKSArIDApKTsKKyAgICAgICAg
ICAgIG91dENvbG9yLT5ncmVlbiA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKCoocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KGRhdGEgKyA0ICogeCArIHkgKiBpbnB1dFBpdGNo
KSArIDEpKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ibHVlID0gIDAuMGY7CisgICAgICAgICAg
ICBvdXRDb2xvci0+YWxwaGEgPSAxLjBmOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisg
ICAgICBkZWZhdWx0OgorICAgICAgICBFUlIoIlJlYWRQaXhlbENvbG9yIG5vdCBpbXBsZW1lbnRl
ZCBmb3IgRFhHSSBmb3JtYXQgJXUuIiwgZm9ybWF0KTsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZVBp
eGVsQ29sb3IoY29uc3QgZ2w6OkNvbG9yICZjb2xvciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIHVuc2lnbmVkIGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgeSwgaW50IG91dHB1dFBpdGNoLCB2b2lkICpvdXREYXRhKQoreworICAgIHVu
c2lnbmVkIGNoYXIqIGJ5dGVEYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4o
b3V0RGF0YSk7CisgICAgdW5zaWduZWQgc2hvcnQqIHNob3J0RGF0YSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQgc2hvcnQqPihvdXREYXRhKTsKKworICAgIHN3aXRjaCAoZm9ybWF0KQorICAg
IHsKKyAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7
CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgYnl0ZURhdGFb
NCAqIHggKyB5ICogb3V0cHV0UGl0Y2ggKyAwXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KDI1NSAqIGNvbG9yLnJlZCAgICsgMC41Zik7CisgICAgICAgICAgICBieXRlRGF0YVs0ICogeCAr
IHkgKiBvdXRwdXRQaXRjaCArIDFdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMjU1ICog
Y29sb3IuZ3JlZW4gKyAwLjVmKTsKKyAgICAgICAgICAgIGJ5dGVEYXRhWzQgKiB4ICsgeSAqIG91
dHB1dFBpdGNoICsgMl0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigyNTUgKiBjb2xvci5i
bHVlICArIDAuNWYpOworICAgICAgICAgICAgYnl0ZURhdGFbNCAqIHggKyB5ICogb3V0cHV0UGl0
Y2ggKyAzXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNvbG9yLmFscGhhICsg
MC41Zik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBFUlIoIldyaXRlUGl4ZWxDb2xvciBub3QgaW1wbGVtZW50ZWQgZm9yIGZvcm1hdCBHTF9S
R0JBIGFuZCB0eXBlIDB4JVguIiwgdHlwZSk7CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAg
Y2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgYnl0ZURhdGFbNCAqIHgg
KyB5ICogb3V0cHV0UGl0Y2ggKyAwXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAq
IGNvbG9yLmJsdWUgICsgMC41Zik7CisgICAgICAgICAgICBieXRlRGF0YVs0ICogeCArIHkgKiBv
dXRwdXRQaXRjaCArIDFdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMjU1ICogY29sb3Iu
Z3JlZW4gKyAwLjVmKTsKKyAgICAgICAgICAgIGJ5dGVEYXRhWzQgKiB4ICsgeSAqIG91dHB1dFBp
dGNoICsgMl0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigyNTUgKiBjb2xvci5yZWQgICAr
IDAuNWYpOworICAgICAgICAgICAgYnl0ZURhdGFbNCAqIHggKyB5ICogb3V0cHV0UGl0Y2ggKyAz
XSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNvbG9yLmFscGhhICsgMC41Zik7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRf
NF80XzRfNF9SRVZfRVhUOgorICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBkZXNrdG9w
IEdMIHNwZWMgaW4gdGhlICJUcmFuc2ZlciBvZiBQaXhlbCBSZWN0YW5nbGVzIiBzZWN0aW9uCisg
ICAgICAgICAgICAvLyB0aGlzIHR5cGUgaXMgcGFja2VkIGFzIGZvbGxvd3M6CisgICAgICAgICAg
ICAvLyAgIDE1ICAgMTQgICAxMyAgIDEyICAgMTEgICAxMCAgICA5ICAgIDggICAgNyAgICA2ICAg
IDUgICAgNCAgICAzICAgIDIgICAgMSAgICAwCisgICAgICAgICAgICAvLyAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAgICAgICAgICAgIC8vIHwgICAgICAgNHRoICAgICAgICAgfCAgICAgICAg
M3JkICAgICAgICAgfCAgICAgICAgMm5kICAgICAgICB8ICAgMXN0IGNvbXBvbmVudCAgIHwKKyAg
ICAgICAgICAgIC8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgLy8gaW4g
dGhlIGNhc2Ugb2YgQkdSQV9FWFQsIEIgaXMgdGhlIGZpcnN0IGNvbXBvbmVudCwgRyB0aGUgc2Vj
b25kLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICBzaG9ydERhdGFbeCArIHkgKiBvdXRwdXRQ
aXRjaCAvIHNpemVvZih1bnNpZ25lZCBzaG9ydCldID0KKyAgICAgICAgICAgICAgICAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDE1ICogY29sb3IuYWxwaGEgKyAwLjVmKSA8PCAxMikgfAor
ICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oMTUgKiBjb2xvci5y
ZWQgICArIDAuNWYpIDw8ICA4KSB8CisgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2ln
bmVkIHNob3J0PigxNSAqIGNvbG9yLmdyZWVuICsgMC41ZikgPDwgIDQpIHwKKyAgICAgICAgICAg
ICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDE1ICogY29sb3IuYmx1ZSAgKyAwLjVm
KSA8PCAgMCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfU0hPUlRfMV81XzVfNV9SRVZfRVhUOgorICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRo
ZSBkZXNrdG9wIEdMIHNwZWMgaW4gdGhlICJUcmFuc2ZlciBvZiBQaXhlbCBSZWN0YW5nbGVzIiBz
ZWN0aW9uCisgICAgICAgICAgICAvLyB0aGlzIHR5cGUgaXMgcGFja2VkIGFzIGZvbGxvd3M6Cisg
ICAgICAgICAgICAvLyAgIDE1ICAgMTQgICAxMyAgIDEyICAgMTEgICAxMCAgICA5ICAgIDggICAg
NyAgICA2ICAgIDUgICAgNCAgICAzICAgIDIgICAgMSAgICAwCisgICAgICAgICAgICAvLyAgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIC8vIHwgNHRoIHwgICAgICAgICAgM3Jk
ICAgICAgICAgICB8ICAgICAgICAgICAybmQgICAgICAgICAgfCAgICAgIDFzdCBjb21wb25lbnQg
ICAgIHwKKyAgICAgICAgICAgIC8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg
ICAgLy8gaW4gdGhlIGNhc2Ugb2YgQkdSQV9FWFQsIEIgaXMgdGhlIGZpcnN0IGNvbXBvbmVudCwg
RyB0aGUgc2Vjb25kLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICBzaG9ydERhdGFbeCArIHkg
KiBvdXRwdXRQaXRjaCAvIHNpemVvZih1bnNpZ25lZCBzaG9ydCldID0KKyAgICAgICAgICAgICAg
ICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KCAgICAgY29sb3IuYWxwaGEgKyAwLjVmKSA8
PCAxNSkgfAorICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oMzEg
KiBjb2xvci5yZWQgICArIDAuNWYpIDw8IDEwKSB8CisgICAgICAgICAgICAgICAgKHN0YXRpY19j
YXN0PHVuc2lnbmVkIHNob3J0PigzMSAqIGNvbG9yLmdyZWVuICsgMC41ZikgPDwgIDUpIHwKKyAg
ICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDMxICogY29sb3IuYmx1
ZSAgKyAwLjVmKSA8PCAgMCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBFUlIoIldyaXRlUGl4ZWxDb2xvciBub3QgaW1wbGVtZW50ZWQgZm9y
IGZvcm1hdCBHTF9CR1JBX0VYVCBhbmQgdHlwZSAweCVYLiIsIHR5cGUpOworICAgICAgICAgICAg
VU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisKKyAgICAgIGNhc2UgR0xfUkdCOgorICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAg
ICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgorICAgICAgICAg
ICAgc2hvcnREYXRhW3ggKyB5ICogb3V0cHV0UGl0Y2ggLyBzaXplb2YodW5zaWduZWQgc2hvcnQp
XSA9CisgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PigzMSAqIGNv
bG9yLmJsdWUgICsgMC41ZikgPDwgIDApIHwKKyAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgc2hvcnQ+KDYzICogY29sb3IuZ3JlZW4gKyAwLjVmKSA8PCAgNSkgfAorICAgICAg
ICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oMzEgKiBjb2xvci5yZWQgICAr
IDAuNWYpIDw8IDExKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9CWVRFOgorICAgICAgICAgICAgYnl0ZURhdGFbMyAqIHggKyB5ICogb3V0cHV0UGl0
Y2ggKyAwXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNvbG9yLnJlZCArICAg
MC41Zik7CisgICAgICAgICAgICBieXRlRGF0YVszICogeCArIHkgKiBvdXRwdXRQaXRjaCArIDFd
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMjU1ICogY29sb3IuZ3JlZW4gKyAwLjVmKTsK
KyAgICAgICAgICAgIGJ5dGVEYXRhWzMgKiB4ICsgeSAqIG91dHB1dFBpdGNoICsgMl0gPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigyNTUgKiBjb2xvci5ibHVlICsgIDAuNWYpOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgRVJSKCJXcml0
ZVBpeGVsQ29sb3Igbm90IGltcGxlbWVudGVkIGZvciBmb3JtYXQgR0xfUkdCIGFuZCB0eXBlIDB4
JVguIiwgdHlwZSk7CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgRVJSKCJXcml0ZVBpeGVsQ29sb3Igbm90IGltcGxlbWVudGVkIGZvciBmb3JtYXQgMHglWC4i
LCBmb3JtYXQpOworICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKwordm9pZCBSZW5kZXJlcjExOjpyZWFkVGV4dHVyZURhdGEoSUQzRDExVGV4dHVyZTJE
ICp0ZXh0dXJlLCB1bnNpZ25lZCBpbnQgc3ViUmVzb3VyY2UsIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgR0xzaXplaSBvdXRwdXRQaXRjaCwgYm9vbCBwYWNrUmV2ZXJzZVJvd09yZGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcGFja0FsaWdubWVudCwg
dm9pZCAqcGl4ZWxzKQoreworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleHR1cmVEZXNjOwor
ICAgIHRleHR1cmUtPkdldERlc2MoJnRleHR1cmVEZXNjKTsKKworICAgIEQzRDExX1RFWFRVUkUy
RF9ERVNDIHN0YWdpbmdEZXNjOworICAgIHN0YWdpbmdEZXNjLldpZHRoID0gYXJlYS53aWR0aDsK
KyAgICBzdGFnaW5nRGVzYy5IZWlnaHQgPSBhcmVhLmhlaWdodDsKKyAgICBzdGFnaW5nRGVzYy5N
aXBMZXZlbHMgPSAxOworICAgIHN0YWdpbmdEZXNjLkFycmF5U2l6ZSA9IDE7CisgICAgc3RhZ2lu
Z0Rlc2MuRm9ybWF0ID0gdGV4dHVyZURlc2MuRm9ybWF0OworICAgIHN0YWdpbmdEZXNjLlNhbXBs
ZURlc2MuQ291bnQgPSAxOworICAgIHN0YWdpbmdEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7
CisgICAgc3RhZ2luZ0Rlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOworICAgIHN0YWdp
bmdEZXNjLkJpbmRGbGFncyA9IDA7CisgICAgc3RhZ2luZ0Rlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBE
M0QxMV9DUFVfQUNDRVNTX1JFQUQ7CisgICAgc3RhZ2luZ0Rlc2MuTWlzY0ZsYWdzID0gMDsKKwor
ICAgIElEM0QxMVRleHR1cmUyRCogc3RhZ2luZ1RleCA9IE5VTEw7CisgICAgSFJFU1VMVCByZXN1
bHQgPSBtRGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnN0YWdpbmdEZXNjLCBOVUxMLCAmc3RhZ2lu
Z1RleCk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWls
ZWQgdG8gY3JlYXRlIHN0YWdpbmcgdGV4dHVyZSBmb3IgcmVhZFBpeGVscywgSFJFU1VMVDogMHgl
WC4iLCByZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSUQzRDExVGV4dHVy
ZTJEKiBzcmNUZXggPSBOVUxMOworICAgIGlmICh0ZXh0dXJlRGVzYy5TYW1wbGVEZXNjLkNvdW50
ID4gMSkKKyAgICB7CisgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHJlc29sdmVEZXNjOwor
ICAgICAgICByZXNvbHZlRGVzYy5XaWR0aCA9IHRleHR1cmVEZXNjLldpZHRoOworICAgICAgICBy
ZXNvbHZlRGVzYy5IZWlnaHQgPSB0ZXh0dXJlRGVzYy5IZWlnaHQ7CisgICAgICAgIHJlc29sdmVE
ZXNjLk1pcExldmVscyA9IDE7CisgICAgICAgIHJlc29sdmVEZXNjLkFycmF5U2l6ZSA9IDE7Cisg
ICAgICAgIHJlc29sdmVEZXNjLkZvcm1hdCA9IHRleHR1cmVEZXNjLkZvcm1hdDsKKyAgICAgICAg
cmVzb2x2ZURlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7CisgICAgICAgIHJlc29sdmVEZXNjLlNh
bXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIHJlc29sdmVEZXNjLlVzYWdlID0gRDNEMTFf
VVNBR0VfREVGQVVMVDsKKyAgICAgICAgcmVzb2x2ZURlc2MuQmluZEZsYWdzID0gMDsKKyAgICAg
ICAgcmVzb2x2ZURlc2MuQ1BVQWNjZXNzRmxhZ3MgPSAwOworICAgICAgICByZXNvbHZlRGVzYy5N
aXNjRmxhZ3MgPSAwOworCisgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVRleHR1cmUy
RCgmcmVzb2x2ZURlc2MsIE5VTEwsICZzcmNUZXgpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3Vs
dCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIGNyZWF0ZSByZXNvbHZl
IHRleHR1cmUgZm9yIHJlYWRQaXhlbHMsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAg
ICAgICAgIHN0YWdpbmdUZXgtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5SZXNvbHZlU3VicmVzb3VyY2Uoc3JjVGV4
LCAwLCB0ZXh0dXJlLCBzdWJSZXNvdXJjZSwgdGV4dHVyZURlc2MuRm9ybWF0KTsKKyAgICAgICAg
c3ViUmVzb3VyY2UgPSAwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBzcmNUZXgg
PSB0ZXh0dXJlOworICAgICAgICBzcmNUZXgtPkFkZFJlZigpOworICAgIH0KKworICAgIEQzRDEx
X0JPWCBzcmNCb3g7CisgICAgc3JjQm94LmxlZnQgPSBhcmVhLng7CisgICAgc3JjQm94LnJpZ2h0
ID0gYXJlYS54ICsgYXJlYS53aWR0aDsKKyAgICBzcmNCb3gudG9wID0gYXJlYS55OworICAgIHNy
Y0JveC5ib3R0b20gPSBhcmVhLnkgKyBhcmVhLmhlaWdodDsKKyAgICBzcmNCb3guZnJvbnQgPSAw
OworICAgIHNyY0JveC5iYWNrID0gMTsKKworICAgIG1EZXZpY2VDb250ZXh0LT5Db3B5U3VicmVz
b3VyY2VSZWdpb24oc3RhZ2luZ1RleCwgMCwgMCwgMCwgMCwgc3JjVGV4LCBzdWJSZXNvdXJjZSwg
JnNyY0JveCk7CisKKyAgICBzcmNUZXgtPlJlbGVhc2UoKTsKKyAgICBzcmNUZXggPSBOVUxMOwor
CisgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBpbmc7CisgICAgbURldmljZUNvbnRl
eHQtPk1hcChzdGFnaW5nVGV4LCAwLCBEM0QxMV9NQVBfUkVBRCwgMCwgJm1hcHBpbmcpOworCisg
ICAgdW5zaWduZWQgY2hhciAqc291cmNlOworICAgIGludCBpbnB1dFBpdGNoOworICAgIGlmIChw
YWNrUmV2ZXJzZVJvd09yZGVyKQorICAgIHsKKyAgICAgICAgc291cmNlID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcio+KG1hcHBpbmcucERhdGEpICsgbWFwcGluZy5Sb3dQaXRjaCAqIChhcmVh
LmhlaWdodCAtIDEpOworICAgICAgICBpbnB1dFBpdGNoID0gLXN0YXRpY19jYXN0PGludD4obWFw
cGluZy5Sb3dQaXRjaCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHNvdXJjZSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihtYXBwaW5nLnBEYXRhKTsKKyAgICAgICAgaW5w
dXRQaXRjaCA9IHN0YXRpY19jYXN0PGludD4obWFwcGluZy5Sb3dQaXRjaCk7CisgICAgfQorCisg
ICAgdW5zaWduZWQgaW50IGZhc3RQaXhlbFNpemUgPSBnZXRGYXN0UGl4ZWxDb3B5U2l6ZSh0ZXh0
dXJlRGVzYy5Gb3JtYXQsIGZvcm1hdCwgdHlwZSk7CisgICAgaWYgKGZhc3RQaXhlbFNpemUgIT0g
MCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyKj4ocGl4ZWxzKTsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBhcmVhLmhl
aWdodDsgaisrKQorICAgICAgICB7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCArIGogKiBvdXRw
dXRQaXRjaCwgc291cmNlICsgaiAqIGlucHV0UGl0Y2gsIGFyZWEud2lkdGggKiBmYXN0UGl4ZWxT
aXplKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh0ZXh0dXJlRGVzYy5Gb3JtYXQg
PT0gRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0gJiYKKyAgICAgICAgICAgICBmb3JtYXQgPT0g
R0xfUkdCQSAmJgorICAgICAgICAgICAgIHR5cGUgPT0gR0xfVU5TSUdORURfQllURSkKKyAgICB7
CisgICAgICAgIC8vIEZhc3QgcGF0aCBmb3Igc3dhcHBpbmcgcmVkIHdpdGggYmx1ZQorICAgICAg
ICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHBpeGVs
cyk7CisKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBhcmVhLmhlaWdodDsgaisrKQorICAg
ICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZWEud2lkdGg7IGkrKykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJnYiA9ICoodW5z
aWduZWQgaW50Kikoc291cmNlICsgNCAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisgICAgICAgICAg
ICAgICAgKih1bnNpZ25lZCBpbnQqKShkZXN0ICsgNCAqIGkgKyBqICogb3V0cHV0UGl0Y2gpID0K
KyAgICAgICAgICAgICAgICAgICAgKGFyZ2IgJiAweEZGMDBGRjAwKSB8ICAgICAgIC8vIEtlZXAg
YWxwaGEgYW5kIGdyZWVuCisgICAgICAgICAgICAgICAgICAgIChhcmdiICYgMHgwMEZGMDAwMCkg
Pj4gMTYgfCAvLyBNb3ZlIHJlZCB0byBibHVlCisgICAgICAgICAgICAgICAgICAgIChhcmdiICYg
MHgwMDAwMDBGRikgPDwgMTY7ICAvLyBNb3ZlIGJsdWUgdG8gcmVkCisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZ2w6OkNvbG9yIHBpeGVs
Q29sb3I7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgYXJlYS5oZWlnaHQ7IGorKykKKyAg
ICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmVhLndpZHRoOyBpKysp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVhZFBpeGVsQ29sb3Ioc291cmNlLCB0
ZXh0dXJlRGVzYy5Gb3JtYXQsIGksIGosIGlucHV0UGl0Y2gsICZwaXhlbENvbG9yKTsKKyAgICAg
ICAgICAgICAgICB3cml0ZVBpeGVsQ29sb3IocGl4ZWxDb2xvciwgZm9ybWF0LCB0eXBlLCBpLCBq
LCBvdXRwdXRQaXRjaCwgcGl4ZWxzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIG1EZXZpY2VDb250ZXh0LT5Vbm1hcChzdGFnaW5nVGV4LCAwKTsKKworICAgIHN0YWdp
bmdUZXgtPlJlbGVhc2UoKTsKKyAgICBzdGFnaW5nVGV4ID0gTlVMTDsKK30KKworYm9vbCBSZW5k
ZXJlcjExOjpibGl0UmVuZGVyYnVmZmVyUmVjdChjb25zdCBnbDo6UmVjdGFuZ2xlICZyZWFkUmVj
dCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZHJhd1JlY3QsIFJlbmRlclRhcmdldCAqcmVhZFJlbmRl
clRhcmdldCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRh
cmdldCAqZHJhd1JlbmRlclRhcmdldCwgYm9vbCB3aG9sZUJ1ZmZlckNvcHkpCit7CisgICAgQVNT
RVJUKHJlYWRSZWN0LndpZHRoID09IGRyYXdSZWN0LndpZHRoICYmIHJlYWRSZWN0LmhlaWdodCA9
PSBkcmF3UmVjdC5oZWlnaHQpOworCisgICAgUmVuZGVyVGFyZ2V0MTEgKnJlYWRSZW5kZXJUYXJn
ZXQxMSA9IFJlbmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEocmVhZFJlbmRlclRhcmdl
dCk7CisgICAgaWYgKCFyZWFkUmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgRVJSKCJGYWls
ZWQgdG8gcmV0cmlldmUgdGhlIHJlYWQgcmVuZGVyIHRhcmdldCBmcm9tIHRoZSByZWFkIGZyYW1l
YnVmZmVyLiIpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZh
bHNlKTsKKyAgICB9CisKKyAgICBJRDNEMTFUZXh0dXJlMkQgKnJlYWRUZXh0dXJlID0gTlVMTDsK
KyAgICB1bnNpZ25lZCBpbnQgcmVhZFN1YnJlc291cmNlID0gMDsKKyAgICBpZiAocmVhZFJlbmRl
clRhcmdldC0+Z2V0U2FtcGxlcygpID4gMCkKKyAgICB7CisgICAgICAgIElEM0QxMVRleHR1cmUy
RCAqdW5yZXNvbHZlZFRleHR1cmUgPSByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFRleHR1cmUoKTsK
KworICAgICAgICByZWFkVGV4dHVyZSA9IHJlc29sdmVNdWx0aXNhbXBsZWRUZXh0dXJlKHVucmVz
b2x2ZWRUZXh0dXJlLCByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFN1YnJlc291cmNlSW5kZXgoKSk7
CisgICAgICAgIHJlYWRTdWJyZXNvdXJjZSA9IDA7CisKKyAgICAgICAgdW5yZXNvbHZlZFRleHR1
cmUtPlJlbGVhc2UoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmVhZFRleHR1
cmUgPSByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFRleHR1cmUoKTsKKyAgICAgICAgcmVhZFN1YnJl
c291cmNlID0gcmVhZFJlbmRlclRhcmdldDExLT5nZXRTdWJyZXNvdXJjZUluZGV4KCk7CisgICAg
fQorCisgICAgaWYgKCFyZWFkVGV4dHVyZSkKKyAgICB7CisgICAgICAgIEVSUigiRmFpbGVkIHRv
IHJldHJpZXZlIHRoZSByZWFkIHJlbmRlciB0YXJnZXQgdmlldyBmcm9tIHRoZSByZWFkIHJlbmRl
ciB0YXJnZXQuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwg
ZmFsc2UpOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDExICpkcmF3UmVuZGVyVGFyZ2V0MTEg
PSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKGRyYXdSZW5kZXJUYXJnZXQpOwor
ICAgIGlmICghZHJhd1JlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIHJlYWRUZXh0dXJlLT5S
ZWxlYXNlKCk7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSBkcmF3IHJlbmRl
ciB0YXJnZXQgZnJvbSB0aGUgZHJhdyBmcmFtZWJ1ZmZlci4iKTsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgSUQzRDExVGV4
dHVyZTJEICpkcmF3VGV4dHVyZSA9IGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0VGV4dHVyZSgpOwor
ICAgIHVuc2lnbmVkIGludCBkcmF3U3VicmVzb3VyY2UgPSBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdl
dFN1YnJlc291cmNlSW5kZXgoKTsKKworICAgIEQzRDExX0JPWCByZWFkQm94OworICAgIHJlYWRC
b3gubGVmdCA9IHJlYWRSZWN0Lng7CisgICAgcmVhZEJveC5yaWdodCA9IHJlYWRSZWN0LnggKyBy
ZWFkUmVjdC53aWR0aDsKKyAgICByZWFkQm94LnRvcCA9IHJlYWRSZWN0Lnk7CisgICAgcmVhZEJv
eC5ib3R0b20gPSByZWFkUmVjdC55ICsgcmVhZFJlY3QuaGVpZ2h0OworICAgIHJlYWRCb3guZnJv
bnQgPSAwOworICAgIHJlYWRCb3guYmFjayA9IDE7CisKKyAgICAvLyBEM0QxMSBuZWVkcyBkZXB0
aC1zdGVuY2lsIENvcHlTdWJyZXNvdXJjZVJlZ2lvbnMgdG8gaGF2ZSBhIE5VTEwgcFNyY0JveAor
ICAgIC8vIFdlIGFsc28gcmVxdWlyZSBjb21wbGV0ZSBmcmFtZWJ1ZmZlciBjb3BpZXMgZm9yIGRl
cHRoLXN0ZW5jaWwgYmxpdC4KKyAgICBEM0QxMV9CT1ggKnBTcmNCb3ggPSB3aG9sZUJ1ZmZlckNv
cHkgPyBOVUxMIDogJnJlYWRCb3g7CisKKyAgICBtRGV2aWNlQ29udGV4dC0+Q29weVN1YnJlc291
cmNlUmVnaW9uKGRyYXdUZXh0dXJlLCBkcmF3U3VicmVzb3VyY2UsIGRyYXdSZWN0LngsIGRyYXdS
ZWN0LnksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFk
VGV4dHVyZSwgcmVhZFN1YnJlc291cmNlLCBwU3JjQm94KTsKKworICAgIHJlYWRUZXh0dXJlLT5S
ZWxlYXNlKCk7CisgICAgZHJhd1RleHR1cmUtPlJlbGVhc2UoKTsKKworICAgIHJldHVybiB0cnVl
OworfQorCitJRDNEMTFUZXh0dXJlMkQgKlJlbmRlcmVyMTE6OnJlc29sdmVNdWx0aXNhbXBsZWRU
ZXh0dXJlKElEM0QxMVRleHR1cmUyRCAqc291cmNlLCB1bnNpZ25lZCBpbnQgc3VicmVzb3VyY2Up
Cit7CisgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgdGV4dHVyZURlc2M7CisgICAgc291cmNlLT5H
ZXREZXNjKCZ0ZXh0dXJlRGVzYyk7CisKKyAgICBpZiAodGV4dHVyZURlc2MuU2FtcGxlRGVzYy5D
b3VudCA+IDEpCisgICAgeworICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyByZXNvbHZlRGVz
YzsKKyAgICAgICAgcmVzb2x2ZURlc2MuV2lkdGggPSB0ZXh0dXJlRGVzYy5XaWR0aDsKKyAgICAg
ICAgcmVzb2x2ZURlc2MuSGVpZ2h0ID0gdGV4dHVyZURlc2MuSGVpZ2h0OworICAgICAgICByZXNv
bHZlRGVzYy5NaXBMZXZlbHMgPSAxOworICAgICAgICByZXNvbHZlRGVzYy5BcnJheVNpemUgPSAx
OworICAgICAgICByZXNvbHZlRGVzYy5Gb3JtYXQgPSB0ZXh0dXJlRGVzYy5Gb3JtYXQ7CisgICAg
ICAgIHJlc29sdmVEZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICByZXNvbHZlRGVz
Yy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAgICByZXNvbHZlRGVzYy5Vc2FnZSA9IHRl
eHR1cmVEZXNjLlVzYWdlOworICAgICAgICByZXNvbHZlRGVzYy5CaW5kRmxhZ3MgPSB0ZXh0dXJl
RGVzYy5CaW5kRmxhZ3M7CisgICAgICAgIHJlc29sdmVEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gMDsK
KyAgICAgICAgcmVzb2x2ZURlc2MuTWlzY0ZsYWdzID0gMDsKKworICAgICAgICBJRDNEMTFUZXh0
dXJlMkQgKnJlc29sdmVUZXh0dXJlID0gTlVMTDsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBt
RGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnJlc29sdmVEZXNjLCBOVUxMLCAmcmVzb2x2ZVRleHR1
cmUpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEVSUigiRmFpbGVkIHRvIGNyZWF0ZSBhIG11bHRpc2FtcGxlIHJlc29sdmUgdGV4dHVyZSwgSFJF
U1VMVDogMHglWC4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAg
IH0KKworICAgICAgICBtRGV2aWNlQ29udGV4dC0+UmVzb2x2ZVN1YnJlc291cmNlKHJlc29sdmVU
ZXh0dXJlLCAwLCBzb3VyY2UsIHN1YnJlc291cmNlLCB0ZXh0dXJlRGVzYy5Gb3JtYXQpOworICAg
ICAgICByZXR1cm4gcmVzb2x2ZVRleHR1cmU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIHNvdXJjZS0+QWRkUmVmKCk7CisgICAgICAgIHJldHVybiBzb3VyY2U7CisgICAgfQorfQor
Citib29sIFJlbmRlcmVyMTE6OmdldExVSUQoTFVJRCAqYWRhcHRlckx1aWQpIGNvbnN0Cit7Cisg
ICAgYWRhcHRlckx1aWQtPkhpZ2hQYXJ0ID0gMDsKKyAgICBhZGFwdGVyTHVpZC0+TG93UGFydCA9
IDA7CisKKyAgICBpZiAoIW1EeGdpQWRhcHRlcikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBEWEdJX0FEQVBURVJfREVTQyBhZGFwdGVyRGVzYzsKKyAgICBpZiAo
RkFJTEVEKG1EeGdpQWRhcHRlci0+R2V0RGVzYygmYWRhcHRlckRlc2MpKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAqYWRhcHRlckx1aWQgPSBhZGFwdGVyRGVz
Yy5BZGFwdGVyTHVpZDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9S
ZW5kZXJlcjExLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
NTEgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFJlbmRlcmVyMTEuaDogRGVmaW5lcyBhIGJh
Y2stZW5kIHNwZWNpZmljIGNsYXNzIGZvciB0aGUgRDNEMTEgcmVuZGVyZXIuCisKKyNpZm5kZWYg
TElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUkVSMTFfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRF
UkVSX1JFTkRFUkVSMTFfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL2FuZ2xldHlwZXMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWF0aHV0
aWwuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJTdGF0ZUNhY2hlLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvUmVuZGVyVGFyZ2V0LmgiCisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgUmVuZGVy
YnVmZmVyOworfQorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgVmVydGV4RGF0YU1hbmFnZXI7
CitjbGFzcyBJbmRleERhdGFNYW5hZ2VyOworY2xhc3MgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRl
cmZhY2U7CisKK2VudW0KK3sKKyAgICBNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU19EM0QxMSA9
IDEwMjQsCisgICAgTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SU19EM0QxMSA9IDEwMjQKK307
CisKK2NsYXNzIFJlbmRlcmVyMTEgOiBwdWJsaWMgUmVuZGVyZXIKK3sKKyAgcHVibGljOgorICAg
IFJlbmRlcmVyMTEoZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBIREMgaERjKTsKKyAgICB2aXJ0dWFs
IH5SZW5kZXJlcjExKCk7CisKKyAgICBzdGF0aWMgUmVuZGVyZXIxMSAqbWFrZVJlbmRlcmVyMTEo
UmVuZGVyZXIgKnJlbmRlcmVyKTsKKworICAgIHZpcnR1YWwgRUdMaW50IGluaXRpYWxpemUoKTsK
KyAgICB2aXJ0dWFsIGJvb2wgcmVzZXREZXZpY2UoKTsKKworICAgIHZpcnR1YWwgaW50IGdlbmVy
YXRlQ29uZmlncyhDb25maWdEZXNjICoqY29uZmlnRGVzY0xpc3QpOworICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb25maWdzKENvbmZpZ0Rlc2MgKmNvbmZpZ0Rlc2NMaXN0KTsKKworICAgIHZpcnR1
YWwgdm9pZCBzeW5jKGJvb2wgYmxvY2spOworCisgICAgdmlydHVhbCBTd2FwQ2hhaW4gKmNyZWF0
ZVN3YXBDaGFpbihIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBHTGVudW0gYmFja0J1
ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KTsKKworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgY29uc3Qg
Z2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlcik7CisgICAgdmlydHVhbCB2b2lkIHNldFRleHR1cmUo
Z2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUpOwor
CisgICAgdmlydHVhbCB2b2lkIHNldFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVyaXpl
clN0YXRlICZyYXN0ZXJTdGF0ZSk7CisgICAgdmlydHVhbCB2b2lkIHNldEJsZW5kU3RhdGUoY29u
c3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUsIGNvbnN0IGdsOjpDb2xvciAmYmxlbmRDb2xv
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlTWFz
ayk7CisgICAgdmlydHVhbCB2b2lkIHNldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0
aFN0ZW5jaWxTdGF0ZSAmZGVwdGhTdGVuY2lsU3RhdGUsIGludCBzdGVuY2lsUmVmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RlbmNpbEJhY2tSZWYsIGJvb2wg
ZnJvbnRGYWNlQ0NXKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTY2lzc29yUmVjdGFuZ2xlKGNv
bnN0IGdsOjpSZWN0YW5nbGUgJnNjaXNzb3IsIGJvb2wgZW5hYmxlZCk7CisgICAgdmlydHVhbCBi
b29sIHNldFZpZXdwb3J0KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnZpZXdwb3J0LCBmbG9hdCB6TmVh
ciwgZmxvYXQgekZhciwgR0xlbnVtIGRyYXdNb2RlLCBHTGVudW0gZnJvbnRGYWNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZVZpZXdwb3J0KTsKKworICAgIHZpcnR1
YWwgYm9vbCBhcHBseVByaW1pdGl2ZVR5cGUoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQpOwor
ICAgIHZpcnR1YWwgYm9vbCBhcHBseVJlbmRlclRhcmdldChnbDo6RnJhbWVidWZmZXIgKmZyYW1l
QnVmZmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTaGFkZXJzKGdsOjpQcm9ncmFtQmluYXJ5
ICpwcm9ncmFtQmluYXJ5KTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlVbmlmb3JtcyhnbDo6UHJv
Z3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSwgZ2w6OlVuaWZvcm1BcnJheSAqdW5pZm9ybUFycmF5
KTsKKyAgICB2aXJ0dWFsIEdMZW51bSBhcHBseVZlcnRleEJ1ZmZlcihnbDo6UHJvZ3JhbUJpbmFy
eSAqcHJvZ3JhbUJpbmFyeSwgZ2w6OlZlcnRleEF0dHJpYnV0ZSB2ZXJ0ZXhBdHRyaWJ1dGVzW10s
IEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcyk7CisgICAgdmly
dHVhbCBHTGVudW0gYXBwbHlJbmRleEJ1ZmZlcihjb25zdCBHTHZvaWQgKmluZGljZXMsIGdsOjpC
dWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlciwgR0xzaXplaSBjb3VudCwgR0xlbnVtIG1vZGUsIEdM
ZW51bSB0eXBlLCBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8pOworCisgICAgdmlydHVh
bCB2b2lkIGRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5z
dGFuY2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNp
emVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVy
ICplbGVtZW50QXJyYXlCdWZmZXIsIGNvbnN0IFRyYW5zbGF0ZWRJbmRleERhdGEgJmluZGV4SW5m
bywgR0xzaXplaSBpbnN0YW5jZXMpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyKGNvbnN0IGds
OjpDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lQnVm
ZmVyKTsKKworICAgIHZpcnR1YWwgdm9pZCBtYXJrQWxsU3RhdGVEaXJ0eSgpOworCisgICAgLy8g
bG9zdCBkZXZpY2UKKyAgICB2b2lkIG5vdGlmeURldmljZUxvc3QoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNEZXZpY2VMb3N0KCk7CisgICAgdmlydHVhbCBib29sIHRlc3REZXZpY2VMb3N0KGJvb2wg
bm90aWZ5KTsKKyAgICB2aXJ0dWFsIGJvb2wgdGVzdERldmljZVJlc2V0dGFibGUoKTsKKworICAg
IC8vIFJlbmRlcmVyIGNhcGFiaWxpdGllcworICAgIHZpcnR1YWwgRFdPUkQgZ2V0QWRhcHRlclZl
bmRvcigpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNjcmlw
dGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgR1VJRCBnZXRBZGFwdGVySWRlbnRpZmllcigpIGNv
bnN0OworCisgICAgdmlydHVhbCBib29sIGdldEJHUkFUZXh0dXJlU3VwcG9ydCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBnZXREWFQxVGV4dHVyZVN1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0RFhUM1RleHR1cmVTdXBwb3J0KCk7CisgICAgdmlydHVhbCBib29sIGdldERYVDVUZXh0
dXJlU3VwcG9ydCgpOworICAgIHZpcnR1YWwgYm9vbCBnZXRFdmVudFF1ZXJ5U3VwcG9ydCgpOwor
ICAgIHZpcnR1YWwgYm9vbCBnZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5n
LCBib29sICpyZW5kZXJhYmxlKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RmxvYXQxNlRleHR1cmVT
dXBwb3J0KGJvb2wgKmZpbHRlcmluZywgYm9vbCAqcmVuZGVyYWJsZSk7CisgICAgdmlydHVhbCBi
b29sIGdldEx1bWluYW5jZVRleHR1cmVTdXBwb3J0KCk7CisgICAgdmlydHVhbCBib29sIGdldEx1
bWluYW5jZUFscGhhVGV4dHVyZVN1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBn
ZXRNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWdu
ZWQgaW50IGdldE1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKCkgY29uc3Q7
CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1WZWN0
b3JzKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4VmVydGV4VW5pZm9y
bVZlY3RvcnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhGcmFnbWVu
dFVuaWZvcm1WZWN0b3JzKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4
VmFyeWluZ1ZlY3RvcnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0Tm9uUG93ZXIyVGV4
dHVyZVN1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RGVwdGhUZXh0dXJlU3Vw
cG9ydCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRPY2NsdXNpb25RdWVyeVN1cHBvcnQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SW5zdGFuY2luZ1N1cHBvcnQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0VGV4dHVyZUZpbHRlckFuaXNvdHJvcHlTdXBwb3J0KCkgY29u
c3Q7CisgICAgdmlydHVhbCBmbG9hdCBnZXRUZXh0dXJlTWF4QW5pc290cm9weSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBnZXRTaGFyZUhhbmRsZVN1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgZ2V0RGVyaXZhdGl2ZUluc3RydWN0aW9uU3VwcG9ydCgpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBnZXRQb3N0U3ViQnVmZmVyU3VwcG9ydCgpIGNvbnN0OworCisgICAgdmlydHVh
bCBpbnQgZ2V0TWFqb3JTaGFkZXJNb2RlbCgpIGNvbnN0OworICAgIHZpcnR1YWwgZmxvYXQgZ2V0
TWF4UG9pbnRTaXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgZ2V0TWF4Vmlld3BvcnREaW1l
bnNpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBnZXRNYXhUZXh0dXJlV2lkdGgoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGludCBnZXRNYXhUZXh0dXJlSGVpZ2h0KCkgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIGdldDMyQml0SW5kZXhTdXBwb3J0KCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQg
Z2V0TWluU3dhcEludGVydmFsKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgZ2V0TWF4U3dhcElu
dGVydmFsKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0TWF4U3VwcG9ydGVkU2Ft
cGxlcygpIGNvbnN0OworICAgIGludCBnZXROZWFyZXN0U3VwcG9ydGVkU2FtcGxlcyhEWEdJX0ZP
Uk1BVCBmb3JtYXQsIHVuc2lnbmVkIGludCByZXF1ZXN0ZWQpIGNvbnN0OworCisgICAgdmlydHVh
bCB1bnNpZ25lZCBpbnQgZ2V0TWF4UmVuZGVyVGFyZ2V0cygpIGNvbnN0OworCisgICAgLy8gUGl4
ZWwgb3BlcmF0aW9ucworICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9SZW5kZXJUYXJnZXQoVGV4dHVy
ZVN0b3JhZ2VJbnRlcmZhY2UyRCAqZGVzdCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc291
cmNlKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29weVRvUmVuZGVyVGFyZ2V0KFRleHR1cmVTdG9yYWdl
SW50ZXJmYWNlQ3ViZSAqZGVzdCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzb3VyY2Up
OworCisgICAgdmlydHVhbCBib29sIGNvcHlJbWFnZShnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVm
ZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
IFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIEdMaW50IGxldmVsKTsKKyAgICB2
aXJ0dWFsIGJvb2wgY29weUltYWdlKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0
IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0
b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCk7
CisKKyAgICBib29sIGNvcHlUZXh0dXJlKElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291cmNl
LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCB1bnNpZ25lZCBpbnQgc291cmNlV2lk
dGgsIHVuc2lnbmVkIGludCBzb3VyY2VIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICBJRDNE
MTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwg
dW5zaWduZWQgaW50IGRlc3RXaWR0aCwgdW5zaWduZWQgaW50IGRlc3RIZWlnaHQsIEdMZW51bSBk
ZXN0Rm9ybWF0KTsKKworICAgIHZpcnR1YWwgYm9vbCBibGl0UmVjdChnbDo6RnJhbWVidWZmZXIg
KnJlYWRUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlYWRSZWN0LCBnbDo6RnJhbWVidWZm
ZXIgKmRyYXdUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRyYXdSZWN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQsIGJvb2wgYmxpdERlcHRoU3Rl
bmNpbCk7CisgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoZ2w6OkZyYW1lYnVmZmVyICpmcmFt
ZWJ1ZmZlciwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgb3V0cHV0UGl0Y2gsIGJvb2wgcGFja1JldmVyc2VSb3dPcmRlciwgR0xpbnQgcGFj
a0FsaWdubWVudCwgdm9pZCogcGl4ZWxzKTsKKworICAgIC8vIFJlbmRlclRhcmdldCBjcmVhdGlv
bgorICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpjcmVhdGVSZW5kZXJUYXJnZXQoU3dhcENoYWlu
ICpzd2FwQ2hhaW4sIGJvb2wgZGVwdGgpOworICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpjcmVh
dGVSZW5kZXJUYXJnZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNp
emVpIHNhbXBsZXMsIGJvb2wgZGVwdGgpOworCisgICAgLy8gU2hhZGVyIG9wZXJhdGlvbnMKKyAg
ICB2aXJ0dWFsIFNoYWRlckV4ZWN1dGFibGUgKmxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1
bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCByeDo6U2hhZGVyVHlwZSB0eXBlKTsKKyAgICB2aXJ0dWFs
IFNoYWRlckV4ZWN1dGFibGUgKmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9M
b2csIGNvbnN0IGNoYXIgKnNoYWRlckhMU0wsIHJ4OjpTaGFkZXJUeXBlIHR5cGUpOworCisgICAg
Ly8gSW1hZ2Ugb3BlcmF0aW9ucworICAgIHZpcnR1YWwgSW1hZ2UgKmNyZWF0ZUltYWdlKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwKEltYWdlICpkZXN0LCBJbWFnZSAqc291cmNl
KTsKKyAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKFN3
YXBDaGFpbiAqc3dhcENoYWluKTsKKyAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVU
ZXh0dXJlU3RvcmFnZTJEKGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVt
IHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQpOworICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlQ3Vi
ZShpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2FnZSwgYm9vbCBm
b3JjZVJlbmRlcmFibGUsIGludCBzaXplKTsKKworICAgIC8vIEJ1ZmZlciBjcmVhdGlvbgorICAg
IHZpcnR1YWwgVmVydGV4QnVmZmVyICpjcmVhdGVWZXJ0ZXhCdWZmZXIoKTsKKyAgICB2aXJ0dWFs
IEluZGV4QnVmZmVyICpjcmVhdGVJbmRleEJ1ZmZlcigpOworICAgIHZpcnR1YWwgQnVmZmVyU3Rv
cmFnZSAqY3JlYXRlQnVmZmVyU3RvcmFnZSgpOworCisgICAgLy8gUXVlcnkgYW5kIEZlbmNlIGNy
ZWF0aW9uCisgICAgdmlydHVhbCBRdWVyeUltcGwgKmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKTsK
KyAgICB2aXJ0dWFsIEZlbmNlSW1wbCAqY3JlYXRlRmVuY2UoKTsKKworICAgIC8vIEQzRDExLXJl
bmRlcmVyIHNwZWNpZmljIG1ldGhvZHMKKyAgICBJRDNEMTFEZXZpY2UgKmdldERldmljZSgpIHsg
cmV0dXJuIG1EZXZpY2U7IH0KKyAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpnZXREZXZpY2VDb250
ZXh0KCkgeyByZXR1cm4gbURldmljZUNvbnRleHQ7IH07CisgICAgSURYR0lGYWN0b3J5ICpnZXRE
eGdpRmFjdG9yeSgpIHsgcmV0dXJuIG1EeGdpRmFjdG9yeTsgfTsKKworICAgIGJvb2wgZ2V0UmVu
ZGVyVGFyZ2V0UmVzb3VyY2UoZ2w6OlJlbmRlcmJ1ZmZlciAqY29sb3JidWZmZXIsIHVuc2lnbmVk
IGludCAqc3VicmVzb3VyY2VJbmRleCwgSUQzRDExVGV4dHVyZTJEICoqcmVzb3VyY2UpOworICAg
IHZvaWQgdW5hcHBseVJlbmRlclRhcmdldHMoKTsKKyAgICB2b2lkIHNldE9uZVRpbWVSZW5kZXJU
YXJnZXQoSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqcmVuZGVyVGFyZ2V0Vmlldyk7CisKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0TFVJRChMVUlEICphZGFwdGVyTHVpZCkgY29uc3Q7CisKKyAgcHJpdmF0
ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVuZGVyZXIxMSk7CisKKyAgICB2b2lk
IGRyYXdMaW5lTG9vcChHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpp
bmRpY2VzLCBpbnQgbWluSW5kZXgsIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlcik7Cisg
ICAgdm9pZCBkcmF3VHJpYW5nbGVGYW4oR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0
IEdMdm9pZCAqaW5kaWNlcywgaW50IG1pbkluZGV4LCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlC
dWZmZXIsIGludCBpbnN0YW5jZXMpOworCisgICAgdm9pZCByZWFkVGV4dHVyZURhdGEoSUQzRDEx
VGV4dHVyZTJEICp0ZXh0dXJlLCB1bnNpZ25lZCBpbnQgc3ViUmVzb3VyY2UsIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIEdMc2l6ZWkgb3V0cHV0UGl0Y2gsIGJvb2wgcGFja1JldmVyc2VSb3dPcmRl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBwYWNrQWxpZ25tZW50LCB2b2lkICpw
aXhlbHMpOworCisgICAgdm9pZCBtYXNrZWRDbGVhcihjb25zdCBnbDo6Q2xlYXJQYXJhbWV0ZXJz
ICZjbGVhclBhcmFtcywgYm9vbCB1c2luZ0V4dGVuZGVkRHJhd0J1ZmZlcnMpOworICAgIHJ4OjpS
YW5nZSBnZXRWaWV3cG9ydEJvdW5kcygpIGNvbnN0OworCisgICAgYm9vbCBibGl0UmVuZGVyYnVm
ZmVyUmVjdChjb25zdCBnbDo6UmVjdGFuZ2xlICZyZWFkUmVjdCwgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmZHJhd1JlY3QsIFJlbmRlclRhcmdldCAqcmVhZFJlbmRlclRhcmdldCwgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXQgKmRyYXdSZW5kZXJUYXJnZXQsIGJvb2wg
d2hvbGVCdWZmZXJDb3B5KTsKKyAgICBJRDNEMTFUZXh0dXJlMkQgKnJlc29sdmVNdWx0aXNhbXBs
ZWRUZXh0dXJlKElEM0QxMVRleHR1cmUyRCAqc291cmNlLCB1bnNpZ25lZCBpbnQgc3VicmVzb3Vy
Y2UpOworCisgICAgSE1PRFVMRSBtRDNkMTFNb2R1bGU7CisgICAgSE1PRFVMRSBtRHhnaU1vZHVs
ZTsKKyAgICBIREMgbURjOworCisgICAgYm9vbCBtRGV2aWNlTG9zdDsKKworICAgIHZvaWQgaW5p
dGlhbGl6ZURldmljZSgpOworICAgIHZvaWQgcmVsZWFzZURldmljZVJlc291cmNlcygpOworICAg
IGludCBnZXRNaW5vclNoYWRlck1vZGVsKCkgY29uc3Q7CisgICAgdm9pZCByZWxlYXNlKCk7CisK
KyAgICBSZW5kZXJTdGF0ZUNhY2hlIG1TdGF0ZUNhY2hlOworCisgICAgLy8gU3VwcG9ydCBmbGFn
cworICAgIGJvb2wgbUZsb2F0MTZUZXh0dXJlU3VwcG9ydDsKKyAgICBib29sIG1GbG9hdDE2Rmls
dGVyU3VwcG9ydDsKKyAgICBib29sIG1GbG9hdDE2UmVuZGVyU3VwcG9ydDsKKworICAgIGJvb2wg
bUZsb2F0MzJUZXh0dXJlU3VwcG9ydDsKKyAgICBib29sIG1GbG9hdDMyRmlsdGVyU3VwcG9ydDsK
KyAgICBib29sIG1GbG9hdDMyUmVuZGVyU3VwcG9ydDsKKworICAgIGJvb2wgbURYVDFUZXh0dXJl
U3VwcG9ydDsKKyAgICBib29sIG1EWFQzVGV4dHVyZVN1cHBvcnQ7CisgICAgYm9vbCBtRFhUNVRl
eHR1cmVTdXBwb3J0OworCisgICAgYm9vbCBtRGVwdGhUZXh0dXJlU3VwcG9ydDsKKworICAgIC8v
IE11bHRpc2FtcGxlIGZvcm1hdCBzdXBwb3J0CisgICAgc3RydWN0IE11bHRpc2FtcGxlU3VwcG9y
dEluZm8KKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBxdWFsaXR5TGV2ZWxzW0QzRDExX01B
WF9NVUxUSVNBTVBMRV9TQU1QTEVfQ09VTlRdOworICAgIH07CisKKyAgICB0eXBlZGVmIHN0ZDo6
dW5vcmRlcmVkX21hcDxEWEdJX0ZPUk1BVCwgTXVsdGlzYW1wbGVTdXBwb3J0SW5mbz4gTXVsdGlz
YW1wbGVTdXBwb3J0TWFwOworICAgIE11bHRpc2FtcGxlU3VwcG9ydE1hcCBtTXVsdGlzYW1wbGVT
dXBwb3J0TWFwOworCisgICAgdW5zaWduZWQgaW50IG1NYXhTdXBwb3J0ZWRTYW1wbGVzOworCisg
ICAgLy8gY3VycmVudCByZW5kZXIgdGFyZ2V0IHN0YXRlcworICAgIHVuc2lnbmVkIGludCBtQXBw
bGllZFJlbmRlclRhcmdldFNlcmlhbHNbZ2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZF
UlNdOworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZERlcHRoYnVmZmVyU2VyaWFsOworICAgIHVu
c2lnbmVkIGludCBtQXBwbGllZFN0ZW5jaWxidWZmZXJTZXJpYWw7CisgICAgYm9vbCBtRGVwdGhT
dGVuY2lsSW5pdGlhbGl6ZWQ7CisgICAgYm9vbCBtUmVuZGVyVGFyZ2V0RGVzY0luaXRpYWxpemVk
OworICAgIHJ4OjpSZW5kZXJUYXJnZXQ6OkRlc2MgbVJlbmRlclRhcmdldERlc2M7CisgICAgdW5z
aWduZWQgaW50IG1DdXJEZXB0aFNpemU7CisgICAgdW5zaWduZWQgaW50IG1DdXJTdGVuY2lsU2l6
ZTsKKworICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIHNhbXBsZXIgc3RhdGVzCisgICAgYm9vbCBt
Rm9yY2VTZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVY
X1RFWFRVUkVfSU1BR0VfVU5JVFNdOworICAgIGdsOjpTYW1wbGVyU3RhdGUgbUN1clZlcnRleFNh
bXBsZXJTdGF0ZXNbZ2w6OklNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9V
TklUU107CisKKyAgICBib29sIG1Gb3JjZVNldFBpeGVsU2FtcGxlclN0YXRlc1tnbDo6TUFYX1RF
WFRVUkVfSU1BR0VfVU5JVFNdOworICAgIGdsOjpTYW1wbGVyU3RhdGUgbUN1clBpeGVsU2FtcGxl
clN0YXRlc1tnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworCisgICAgLy8gQ3VycmVudGx5
IGFwcGxpZWQgdGV4dHVyZXMKKyAgICB1bnNpZ25lZCBpbnQgbUN1clZlcnRleFRleHR1cmVTZXJp
YWxzW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOwor
ICAgIHVuc2lnbmVkIGludCBtQ3VyUGl4ZWxUZXh0dXJlU2VyaWFsc1tnbDo6TUFYX1RFWFRVUkVf
SU1BR0VfVU5JVFNdOworCisgICAgLy8gQ3VycmVudGx5IGFwcGxpZWQgYmxlbmQgc3RhdGUKKyAg
ICBib29sIG1Gb3JjZVNldEJsZW5kU3RhdGU7CisgICAgZ2w6OkJsZW5kU3RhdGUgbUN1ckJsZW5k
U3RhdGU7CisgICAgZ2w6OkNvbG9yIG1DdXJCbGVuZENvbG9yOworICAgIHVuc2lnbmVkIGludCBt
Q3VyU2FtcGxlTWFzazsKKworICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIHJhc3Rlcml6ZXIgc3Rh
dGUKKyAgICBib29sIG1Gb3JjZVNldFJhc3RlclN0YXRlOworICAgIGdsOjpSYXN0ZXJpemVyU3Rh
dGUgbUN1clJhc3RlclN0YXRlOworCisgICAgLy8gQ3VycmVudGx5IGFwcGxpZWQgZGVwdGggc3Rl
bmNpbCBzdGF0ZQorICAgIGJvb2wgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGU7CisgICAgZ2w6
OkRlcHRoU3RlbmNpbFN0YXRlIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICBpbnQgbUN1clN0
ZW5jaWxSZWY7CisgICAgaW50IG1DdXJTdGVuY2lsQmFja1JlZjsKKworICAgIC8vIEN1cnJlbnRs
eSBhcHBsaWVkIHNjaXNzb3IgcmVjdGFuZ2xlCisgICAgYm9vbCBtRm9yY2VTZXRTY2lzc29yOwor
ICAgIGJvb2wgbVNjaXNzb3JFbmFibGVkOworICAgIGdsOjpSZWN0YW5nbGUgbUN1clNjaXNzb3I7
CisKKyAgICAvLyBDdXJyZW50bHkgYXBwbGllZCB2aWV3cG9ydAorICAgIGJvb2wgbUZvcmNlU2V0
Vmlld3BvcnQ7CisgICAgZ2w6OlJlY3RhbmdsZSBtQ3VyVmlld3BvcnQ7CisgICAgZmxvYXQgbUN1
ck5lYXI7CisgICAgZmxvYXQgbUN1ckZhcjsKKworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZElC
U2VyaWFsOworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZFN0b3JhZ2VJQlNlcmlhbDsKKyAgICB1
bnNpZ25lZCBpbnQgbUFwcGxpZWRJQk9mZnNldDsKKworICAgIHVuc2lnbmVkIGludCBtQXBwbGll
ZFByb2dyYW1CaW5hcnlTZXJpYWw7CisgICAgYm9vbCBtSXNHZW9tZXRyeVNoYWRlckFjdGl2ZTsK
KworICAgIGR4X1ZlcnRleENvbnN0YW50cyBtVmVydGV4Q29uc3RhbnRzOworICAgIGR4X1ZlcnRl
eENvbnN0YW50cyBtQXBwbGllZFZlcnRleENvbnN0YW50czsKKyAgICBJRDNEMTFCdWZmZXIgKm1E
cml2ZXJDb25zdGFudEJ1ZmZlclZTOworCisgICAgZHhfUGl4ZWxDb25zdGFudHMgbVBpeGVsQ29u
c3RhbnRzOworICAgIGR4X1BpeGVsQ29uc3RhbnRzIG1BcHBsaWVkUGl4ZWxDb25zdGFudHM7Cisg
ICAgSUQzRDExQnVmZmVyICptRHJpdmVyQ29uc3RhbnRCdWZmZXJQUzsKKworICAgIC8vIFZlcnRl
eCwgaW5kZXggYW5kIGlucHV0IGxheW91dHMKKyAgICBWZXJ0ZXhEYXRhTWFuYWdlciAqbVZlcnRl
eERhdGFNYW5hZ2VyOworICAgIEluZGV4RGF0YU1hbmFnZXIgKm1JbmRleERhdGFNYW5hZ2VyOwor
ICAgIElucHV0TGF5b3V0Q2FjaGUgbUlucHV0TGF5b3V0Q2FjaGU7CisKKyAgICBTdHJlYW1pbmdJ
bmRleEJ1ZmZlckludGVyZmFjZSAqbUxpbmVMb29wSUI7CisgICAgU3RyZWFtaW5nSW5kZXhCdWZm
ZXJJbnRlcmZhY2UgKm1UcmlhbmdsZUZhbklCOworCisgICAgLy8gVGV4dHVyZSBjb3B5IHJlc291
cmNlcworICAgIGJvb2wgbUNvcHlSZXNvdXJjZXNJbml0aWFsaXplZDsKKyAgICBJRDNEMTFCdWZm
ZXIgKm1Db3B5VkI7CisgICAgSUQzRDExU2FtcGxlclN0YXRlICptQ29weVNhbXBsZXI7CisgICAg
SUQzRDExSW5wdXRMYXlvdXQgKm1Db3B5SUw7CisgICAgSUQzRDExVmVydGV4U2hhZGVyICptQ29w
eVZTOworICAgIElEM0QxMVBpeGVsU2hhZGVyICptQ29weVJHQkFQUzsKKyAgICBJRDNEMTFQaXhl
bFNoYWRlciAqbUNvcHlSR0JQUzsKKyAgICBJRDNEMTFQaXhlbFNoYWRlciAqbUNvcHlMdW1QUzsK
KyAgICBJRDNEMTFQaXhlbFNoYWRlciAqbUNvcHlMdW1BbHBoYVBTOworCisgICAgLy8gTWFza2Vk
IGNsZWFyIHJlc291cmNlcworICAgIGJvb2wgbUNsZWFyUmVzb3VyY2VzSW5pdGlhbGl6ZWQ7Cisg
ICAgSUQzRDExQnVmZmVyICptQ2xlYXJWQjsKKyAgICBJRDNEMTFJbnB1dExheW91dCAqbUNsZWFy
SUw7CisgICAgSUQzRDExVmVydGV4U2hhZGVyICptQ2xlYXJWUzsKKyAgICBJRDNEMTFQaXhlbFNo
YWRlciAqbUNsZWFyU2luZ2xlUFM7CisgICAgSUQzRDExUGl4ZWxTaGFkZXIgKm1DbGVhck11bHRp
cGxlUFM7CisgICAgSUQzRDExUmFzdGVyaXplclN0YXRlICptQ2xlYXJTY2lzc29yUlM7CisgICAg
SUQzRDExUmFzdGVyaXplclN0YXRlICptQ2xlYXJOb1NjaXNzb3JSUzsKKworICAgIC8vIFN5bmMg
cXVlcnkKKyAgICBJRDNEMTFRdWVyeSAqbVN5bmNRdWVyeTsKKworICAgIElEM0QxMURldmljZSAq
bURldmljZTsKKyAgICBEM0RfRkVBVFVSRV9MRVZFTCBtRmVhdHVyZUxldmVsOworICAgIElEM0Qx
MURldmljZUNvbnRleHQgKm1EZXZpY2VDb250ZXh0OworICAgIElEWEdJQWRhcHRlciAqbUR4Z2lB
ZGFwdGVyOworICAgIERYR0lfQURBUFRFUl9ERVNDIG1BZGFwdGVyRGVzY3JpcHRpb247CisgICAg
Y2hhciBtRGVzY3JpcHRpb25bMTI4XTsKKyAgICBJRFhHSUZhY3RvcnkgKm1EeGdpRmFjdG9yeTsK
KworICAgIC8vIENhY2hlZCBkZXZpY2UgY2FwcworICAgIGJvb2wgbUJHUkFUZXh0dXJlU3VwcG9y
dDsKK307CisKK30KKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfUkVOREVSRVIxMV9IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5k
ZXJlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9SZW5kZXJlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMjAgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gUmVuZGVyZXIuY3BwOiBJbXBsZW1lbnRzIEVHTCBkZXBlbmRlbmNpZXMg
Zm9yIGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIFJlbmRlcmVyIGluc3RhbmNlcy4KKworI2luY2x1
ZGUgPEVHTC9lZ2xleHQuaD4KKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9Qcm9ncmFtLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRl
cmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3V0aWxpdGllcy5oIgorCisjaWYgIWRlZmluZWQoQU5HTEVfRU5BQkxFX0QzRDExKQorLy8gRW5h
YmxlcyB1c2Ugb2YgdGhlIERpcmVjdDNEIDExIEFQSSBmb3IgYSBkZWZhdWx0IGRpc3BsYXksIHdo
ZW4gYXZhaWxhYmxlCisjZGVmaW5lIEFOR0xFX0VOQUJMRV9EM0QxMSAwCisjZW5kaWYKKworbmFt
ZXNwYWNlIHJ4Cit7CisKK1JlbmRlcmVyOjpSZW5kZXJlcihlZ2w6OkRpc3BsYXkgKmRpc3BsYXkp
IDogbURpc3BsYXkoZGlzcGxheSkKK3sKKyAgICBtRDNkQ29tcGlsZXJNb2R1bGUgPSBOVUxMOwor
ICAgIG1EM0RDb21waWxlRnVuYyA9IE5VTEw7Cit9CisKK1JlbmRlcmVyOjp+UmVuZGVyZXIoKQor
eworICAgIGlmIChtRDNkQ29tcGlsZXJNb2R1bGUpCisgICAgeworICAgICAgICBGcmVlTGlicmFy
eShtRDNkQ29tcGlsZXJNb2R1bGUpOworICAgICAgICBtRDNkQ29tcGlsZXJNb2R1bGUgPSBOVUxM
OworICAgIH0KK30KKworYm9vbCBSZW5kZXJlcjo6aW5pdGlhbGl6ZUNvbXBpbGVyKCkKK3sKKyNp
ZiBkZWZpbmVkKEFOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVMpCisgICAg
Ly8gRmluZCBhIEQzRENvbXBpbGVyIG1vZHVsZSB0aGF0IGhhZCBhbHJlYWR5IGJlZW4gbG9hZGVk
IGJhc2VkIG9uIGEgcHJlZGVmaW5lZCBsaXN0IG9mIHZlcnNpb25zLgorICAgIHN0YXRpYyBUQ0hB
UiogZDNkQ29tcGlsZXJOYW1lc1tdID0gQU5HTEVfUFJFTE9BREVEX0QzRENPTVBJTEVSX01PRFVM
RV9OQU1FUzsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQXJyYXlTaXplKGQzZENvbXBp
bGVyTmFtZXMpOyArK2kpCisgICAgeworICAgICAgICBpZiAoR2V0TW9kdWxlSGFuZGxlRXgoMCwg
ZDNkQ29tcGlsZXJOYW1lc1tpXSwgJm1EM2RDb21waWxlck1vZHVsZSkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICAvLyBMb2FkIHRo
ZSB2ZXJzaW9uIG9mIHRoZSBEM0RDb21waWxlciBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBEaXJl
Y3QzRCB2ZXJzaW9uIEFOR0xFIHdhcyBidWlsdCB3aXRoLgorICAgIG1EM2RDb21waWxlck1vZHVs
ZSA9IExvYWRMaWJyYXJ5KEQzRENPTVBJTEVSX0RMTCk7CisjZW5kaWYgIC8vIEFOR0xFX1BSRUxP
QURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVMKKworICAgIGlmICghbUQzZENvbXBpbGVyTW9k
dWxlKQorICAgIHsKKyAgICAgICAgRVJSKCJObyBEM0QgY29tcGlsZXIgbW9kdWxlIGZvdW5kIC0g
YWJvcnRpbmchXG4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1EM0RD
b21waWxlRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cENvbXBpbGVGdW5jPihHZXRQcm9jQWRkcmVz
cyhtRDNkQ29tcGlsZXJNb2R1bGUsICJEM0RDb21waWxlIikpOworICAgIEFTU0VSVChtRDNEQ29t
cGlsZUZ1bmMpOworCisgICAgcmV0dXJuIG1EM0RDb21waWxlRnVuYyAhPSBOVUxMOworfQorCisv
LyBDb21waWxlcyBITFNMIGNvZGUgaW50byBleGVjdXRhYmxlIGJpbmFyaWVzCitTaGFkZXJCbG9i
ICpSZW5kZXJlcjo6Y29tcGlsZVRvQmluYXJ5KGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBj
aGFyICpobHNsLCBjb25zdCBjaGFyICpwcm9maWxlLCBVSU5UIG9wdGltaXphdGlvbkZsYWdzLCBi
b29sIGFsdGVybmF0ZUZsYWdzKQoreworICAgIGlmICghaGxzbCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBOVUxMOworICAgIH0KKworICAgIEhSRVNVTFQgcmVzdWx0ID0gU19PSzsKKyAgICBVSU5U
IGZsYWdzID0gMDsKKyAgICBzdGQ6OnN0cmluZyBzb3VyY2VUZXh0OworICAgIGlmIChnbDo6cGVy
ZkFjdGl2ZSgpKQorICAgIHsKKyAgICAgICAgZmxhZ3MgfD0gRDNEQ09NUElMRV9ERUJVRzsKKwor
I2lmZGVmIE5ERUJVRworICAgICAgICBmbGFncyB8PSBvcHRpbWl6YXRpb25GbGFnczsKKyNlbHNl
CisgICAgICAgIGZsYWdzIHw9IEQzRENPTVBJTEVfU0tJUF9PUFRJTUlaQVRJT047CisjZW5kaWYK
KworICAgICAgICBzdGQ6OnN0cmluZyBzb3VyY2VQYXRoID0gZ2V0VGVtcFBhdGgoKTsKKyAgICAg
ICAgc291cmNlVGV4dCA9IHN0ZDo6c3RyaW5nKCIjbGluZSAyIFwiIikgKyBzb3VyY2VQYXRoICsg
c3RkOjpzdHJpbmcoIlwiXG5cbiIpICsgc3RkOjpzdHJpbmcoaGxzbCk7CisgICAgICAgIHdyaXRl
RmlsZShzb3VyY2VQYXRoLmNfc3RyKCksIHNvdXJjZVRleHQuY19zdHIoKSwgc291cmNlVGV4dC5z
aXplKCkpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBmbGFncyB8PSBvcHRpbWl6
YXRpb25GbGFnczsKKyAgICAgICAgc291cmNlVGV4dCA9IGhsc2w7CisgICAgfQorCisgICAgLy8g
U29tZXRpbWVzIEQzRENvbXBpbGUgd2lsbCBmYWlsIHdpdGggdGhlIGRlZmF1bHQgY29tcGlsYXRp
b24gZmxhZ3MgZm9yIGNvbXBsaWNhdGVkIHNoYWRlcnMgd2hlbiBpdCB3b3VsZCBvdGhlcndpc2Ug
cGFzcyB3aXRoIGFsdGVybmF0aXZlIG9wdGlvbnMuCisgICAgLy8gVHJ5IHRoZSBkZWZhdWx0IGZs
YWdzIGZpcnN0IGFuZCBpZiBjb21waWxhdGlvbiBmYWlscywgdHJ5IHNvbWUgYWx0ZXJuYXRpdmVz
LgorICAgIGNvbnN0IHN0YXRpYyBVSU5UIGV4dHJhRmxhZ3NbXSA9CisgICAgeworICAgICAgICAw
LAorICAgICAgICBEM0RDT01QSUxFX0FWT0lEX0ZMT1dfQ09OVFJPTCwKKyAgICAgICAgRDNEQ09N
UElMRV9QUkVGRVJfRkxPV19DT05UUk9MCisgICAgfTsKKworICAgIGNvbnN0IHN0YXRpYyBjaGFy
ICogY29uc3QgZXh0cmFGbGFnTmFtZXNbXSA9CisgICAgeworICAgICAgICAiZGVmYXVsdCIsCisg
ICAgICAgICJhdm9pZCBmbG93IGNvbnRyb2wiLAorICAgICAgICAicHJlZmVyIGZsb3cgY29udHJv
bCIKKyAgICB9OworCisgICAgaW50IGF0dGVtcHRzID0gYWx0ZXJuYXRlRmxhZ3MgPyBBcnJheVNp
emUoZXh0cmFGbGFncykgOiAxOworICAgIHBEM0RDb21waWxlIGNvbXBpbGVGdW5jID0gcmVpbnRl
cnByZXRfY2FzdDxwRDNEQ29tcGlsZT4obUQzRENvbXBpbGVGdW5jKTsKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGF0dGVtcHRzOyArK2kpCisgICAgeworICAgICAgICBJRDNEQmxvYiAqZXJyb3JN
ZXNzYWdlID0gTlVMTDsKKyAgICAgICAgSUQzREJsb2IgKmJpbmFyeSA9IE5VTEw7CisKKyAgICAg
ICAgcmVzdWx0ID0gY29tcGlsZUZ1bmMoaGxzbCwgc3RybGVuKGhsc2wpLCBnbDo6Z19mYWtlcGF0
aCwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1haW4iLCBwcm9m
aWxlLCBmbGFncyB8IGV4dHJhRmxhZ3NbaV0sIDAsICZiaW5hcnksICZlcnJvck1lc3NhZ2UpOwor
ICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBj
aGFyICptZXNzYWdlID0gKGNvbnN0IGNoYXIqKWVycm9yTWVzc2FnZS0+R2V0QnVmZmVyUG9pbnRl
cigpOworCisgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZFNhbml0aXplZChtZXNzYWdlKTsKKyAg
ICAgICAgICAgIFRSQUNFKCJcbiVzIiwgaGxzbCk7CisgICAgICAgICAgICBUUkFDRSgiXG4lcyIs
IG1lc3NhZ2UpOworCisgICAgICAgICAgICBlcnJvck1lc3NhZ2UtPlJlbGVhc2UoKTsKKyAgICAg
ICAgICAgIGVycm9yTWVzc2FnZSA9IE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoU1VD
Q0VFREVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAoU2hhZGVyQmxv
YiopYmluYXJ5OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9P
VVRPRk1FTU9SWSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlksIChTaGFkZXJCbG9iKikgTlVMTCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJXYXJuaW5nOiBEM0Qgc2hhZGVyIGNvbXBp
bGF0aW9uIGZhaWxlZCB3aXRoICIpOworICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoZXh0cmFG
bGFnTmFtZXNbaV0pOworICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIiBmbGFncy4iKTsKKyAg
ICAgICAgICAgIGlmIChpICsgMSA8IGF0dGVtcHRzKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGluZm9Mb2cuYXBwZW5kKCIgUmV0cnlpbmcgd2l0aCAiKTsKKyAgICAgICAgICAgICAg
ICBpbmZvTG9nLmFwcGVuZChleHRyYUZsYWdOYW1lc1tpICsgMV0pOworICAgICAgICAgICAgICAg
IGluZm9Mb2cuYXBwZW5kKCIuXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBOVUxMOworfQorCit9CisKK2V4dGVybiAiQyIKK3sKKworcng6OlJlbmRl
cmVyICpnbENyZWF0ZVJlbmRlcmVyKGVnbDo6RGlzcGxheSAqZGlzcGxheSwgSERDIGhEYywgRUdM
TmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheUlkKQoreworICAgIHJ4OjpSZW5kZXJlciAqcmVuZGVy
ZXIgPSBOVUxMOworICAgIEVHTGludCBzdGF0dXMgPSBFR0xfQkFEX0FMTE9DOworICAgIAorICAg
IGlmIChBTkdMRV9FTkFCTEVfRDNEMTEgfHwKKyAgICAgICAgZGlzcGxheUlkID09IEVHTF9EM0Qx
MV9FTFNFX0QzRDlfRElTUExBWV9BTkdMRSB8fAorICAgICAgICBkaXNwbGF5SWQgPT0gRUdMX0Qz
RDExX09OTFlfRElTUExBWV9BTkdMRSkKKyAgICB7CisgICAgICAgIHJlbmRlcmVyID0gbmV3IHJ4
OjpSZW5kZXJlcjExKGRpc3BsYXksIGhEYyk7CisgICAgCisgICAgICAgIGlmIChyZW5kZXJlcikK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdHVzID0gcmVuZGVyZXItPmluaXRpYWxpemUoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGF0dXMgPT0gRUdMX1NVQ0NFU1MpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICAgICAgfQorICAgICAgICBlbHNl
IGlmIChkaXNwbGF5SWQgPT0gRUdMX0QzRDExX09OTFlfRElTUExBWV9BTkdMRSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICAvLyBGYWls
ZWQgdG8gY3JlYXRlIGEgRDNEMTEgcmVuZGVyZXIsIHRyeSBjcmVhdGluZyBhIEQzRDkgcmVuZGVy
ZXIKKyAgICAgICAgZGVsZXRlIHJlbmRlcmVyOworICAgIH0KKworICAgIGJvb2wgc29mdHdhcmVE
ZXZpY2UgPSAoZGlzcGxheUlkID09IEVHTF9TT0ZUV0FSRV9ESVNQTEFZX0FOR0xFKTsKKyAgICBy
ZW5kZXJlciA9IG5ldyByeDo6UmVuZGVyZXI5KGRpc3BsYXksIGhEYywgc29mdHdhcmVEZXZpY2Up
OworICAgIAorICAgIGlmIChyZW5kZXJlcikKKyAgICB7CisgICAgICAgIHN0YXR1cyA9IHJlbmRl
cmVyLT5pbml0aWFsaXplKCk7CisgICAgfQorCisgICAgaWYgKHN0YXR1cyA9PSBFR0xfU1VDQ0VT
UykKKyAgICB7CisgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICB9CisKKyAgICByZXR1cm4g
TlVMTDsKK30KKwordm9pZCBnbERlc3Ryb3lSZW5kZXJlcihyeDo6UmVuZGVyZXIgKnJlbmRlcmVy
KQoreworICAgIGRlbGV0ZSByZW5kZXJlcjsKK30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvUmVuZGVyZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjQ0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBSZW5kZXJlci5o
OiBEZWZpbmVzIGEgYmFjay1lbmQgc3BlY2lmaWMgY2xhc3MgdGhhdCBoaWRlcyB0aGUgZGV0YWls
cyBvZiB0aGUKKy8vIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIHJlbmRlcmVyLgorCisjaWZuZGVm
IExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUl9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVS
RVJfUkVOREVSRVJfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9Vbmlmb3JtLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL2FuZ2xldHlwZXMuaCIKKworI2lmICFkZWZpbmVkKEFOR0xFX0NPTVBJTEVf
T1BUSU1JWkFUSU9OX0xFVkVMKQorI2RlZmluZSBBTkdMRV9DT01QSUxFX09QVElNSVpBVElPTl9M
RVZFTCBEM0RDT01QSUxFX09QVElNSVpBVElPTl9MRVZFTDMKKyNlbmRpZgorCitjb25zdCBpbnQg
dmVyc2lvbldpbmRvd3NWaXN0YSA9IE1BS0VXT1JEKDB4MDAsIDB4MDYpOworY29uc3QgaW50IHZl
cnNpb25XaW5kb3dzNyA9IE1BS0VXT1JEKDB4MDEsIDB4MDYpOworCisvLyBSZXR1cm4gdGhlIHZl
cnNpb24gb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaW4gYSBmb3JtYXQgc3VpdGFibGUgZm9yIG9y
ZGVyaW5nCisvLyBjb21wYXJpc29uLgoraW5saW5lIGludCBnZXRDb21wYXJhYmxlT1NWZXJzaW9u
KCkKK3sKKyAgICBEV09SRCB2ZXJzaW9uID0gR2V0VmVyc2lvbigpOworICAgIGludCBtYWpvclZl
cnNpb24gPSBMT0JZVEUoTE9XT1JEKHZlcnNpb24pKTsKKyAgICBpbnQgbWlub3JWZXJzaW9uID0g
SElCWVRFKExPV09SRCh2ZXJzaW9uKSk7CisgICAgcmV0dXJuIE1BS0VXT1JEKG1pbm9yVmVyc2lv
biwgbWFqb3JWZXJzaW9uKTsKK30KKworbmFtZXNwYWNlIGVnbAoreworY2xhc3MgRGlzcGxheTsK
K30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBJbmZvTG9nOworY2xhc3MgUHJvZ3JhbUJpbmFy
eTsKK2NsYXNzIFZlcnRleEF0dHJpYnV0ZTsKK2NsYXNzIEJ1ZmZlcjsKK2NsYXNzIFRleHR1cmU7
CitjbGFzcyBGcmFtZWJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBUZXh0dXJl
U3RvcmFnZUludGVyZmFjZTJEOworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlOwor
Y2xhc3MgVmVydGV4QnVmZmVyOworY2xhc3MgSW5kZXhCdWZmZXI7CitjbGFzcyBRdWVyeUltcGw7
CitjbGFzcyBGZW5jZUltcGw7CitjbGFzcyBCdWZmZXJTdG9yYWdlOworY2xhc3MgQmxpdDsKK3N0
cnVjdCBUcmFuc2xhdGVkSW5kZXhEYXRhOworY2xhc3MgU2hhZGVyRXhlY3V0YWJsZTsKK2NsYXNz
IFN3YXBDaGFpbjsKK2NsYXNzIFJlbmRlclRhcmdldDsKK2NsYXNzIEltYWdlOworY2xhc3MgVGV4
dHVyZVN0b3JhZ2U7CisKK3R5cGVkZWYgdm9pZCAqIFNoYWRlckJsb2I7Cit0eXBlZGVmIHZvaWQg
KCpwQ29tcGlsZUZ1bmMpKCk7CisKK3N0cnVjdCBDb25maWdEZXNjCit7CisgICAgR0xlbnVtICBy
ZW5kZXJUYXJnZXRGb3JtYXQ7CisgICAgR0xlbnVtICBkZXB0aFN0ZW5jaWxGb3JtYXQ7CisgICAg
R0xpbnQgICBtdWx0aVNhbXBsZTsKKyAgICBib29sICAgIGZhc3RDb25maWc7Cit9OworCitzdHJ1
Y3QgZHhfVmVydGV4Q29uc3RhbnRzCit7CisgICAgZmxvYXQgZGVwdGhSYW5nZVs0XTsKKyAgICBm
bG9hdCB2aWV3QWRqdXN0WzRdOworfTsKKworc3RydWN0IGR4X1BpeGVsQ29uc3RhbnRzCit7Cisg
ICAgZmxvYXQgZGVwdGhSYW5nZVs0XTsKKyAgICBmbG9hdCB2aWV3Q29vcmRzWzRdOworICAgIGZs
b2F0IGRlcHRoRnJvbnRbNF07Cit9OworCitlbnVtIFNoYWRlclR5cGUKK3sKKyAgICBTSEFERVJf
VkVSVEVYLAorICAgIFNIQURFUl9QSVhFTCwKKyAgICBTSEFERVJfR0VPTUVUUlkKK307CisKK2Ns
YXNzIFJlbmRlcmVyCit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBSZW5kZXJlcihlZ2w6OkRp
c3BsYXkgKmRpc3BsYXkpOworICAgIHZpcnR1YWwgflJlbmRlcmVyKCk7CisKKyAgICB2aXJ0dWFs
IEVHTGludCBpbml0aWFsaXplKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZXNldERldmljZSgp
ID0gMDsKKworICAgIHZpcnR1YWwgaW50IGdlbmVyYXRlQ29uZmlncyhDb25maWdEZXNjICoqY29u
ZmlnRGVzY0xpc3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29uZmlncyhDb25maWdE
ZXNjICpjb25maWdEZXNjTGlzdCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN5bmMoYm9vbCBi
bG9jaykgPSAwOworCisgICAgdmlydHVhbCBTd2FwQ2hhaW4gKmNyZWF0ZVN3YXBDaGFpbihIV05E
IHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwgR0xl
bnVtIGRlcHRoQnVmZmVyRm9ybWF0KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2FtcGxl
clN0YXRlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5kZXgsIGNvbnN0IGdsOjpTYW1wbGVy
U3RhdGUgJnNhbXBsZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZShnbDo6U2Ft
cGxlclR5cGUgdHlwZSwgaW50IGluZGV4LCBnbDo6VGV4dHVyZSAqdGV4dHVyZSkgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIHNldFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVyaXplclN0
YXRlICZyYXN0ZXJTdGF0ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRCbGVuZFN0YXRlKGNv
bnN0IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0YXRlLCBjb25zdCBnbDo6Q29sb3IgJmJsZW5kQ29s
b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZU1h
c2spID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgZ2w6
OkRlcHRoU3RlbmNpbFN0YXRlICZkZXB0aFN0ZW5jaWxTdGF0ZSwgaW50IHN0ZW5jaWxSZWYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGVuY2lsQmFja1JlZiwg
Ym9vbCBmcm9udEZhY2VDQ1cpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTY2lzc29yUmVj
dGFuZ2xlKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNjaXNzb3IsIGJvb2wgZW5hYmxlZCkgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBzZXRWaWV3cG9ydChjb25zdCBnbDo6UmVjdGFuZ2xlICZ2aWV3cG9y
dCwgZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIsIEdMZW51bSBkcmF3TW9kZSwgR0xlbnVtIGZyb250
RmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmVWaWV3cG9ydCkg
PSAwOworCisgICAgdmlydHVhbCBib29sIGFwcGx5UmVuZGVyVGFyZ2V0KGdsOjpGcmFtZWJ1ZmZl
ciAqZnJhbWVCdWZmZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTaGFkZXJzKGdsOjpQ
cm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5
VW5pZm9ybXMoZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnksIGdsOjpVbmlmb3JtQXJy
YXkgKnVuaWZvcm1BcnJheSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhcHBseVByaW1pdGl2ZVR5
cGUoR0xlbnVtIHByaW1pdGl2ZVR5cGUsIEdMc2l6ZWkgZWxlbWVudENvdW50KSA9IDA7CisgICAg
dmlydHVhbCBHTGVudW0gYXBwbHlWZXJ0ZXhCdWZmZXIoZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dy
YW1CaW5hcnksIGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgdmVydGV4QXR0cmlidXRlc1tdLCBHTGludCBm
aXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpID0gMDsKKyAgICB2aXJ0dWFs
IEdMZW51bSBhcHBseUluZGV4QnVmZmVyKGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZl
ciAqZWxlbWVudEFycmF5QnVmZmVyLCBHTHNpemVpIGNvdW50LCBHTGVudW0gbW9kZSwgR0xlbnVt
IHR5cGUsIFRyYW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbykgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIGRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5z
dGFuY2VzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwg
R0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1
ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyLCBjb25zdCBUcmFuc2xhdGVkSW5kZXhEYXRhICZpbmRl
eEluZm8sIEdMc2l6ZWkgaW5zdGFuY2VzKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIo
Y29uc3QgZ2w6OkNsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMsIGdsOjpGcmFtZWJ1ZmZlciAq
ZnJhbWVCdWZmZXIpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBtYXJrQWxsU3RhdGVEaXJ0eSgp
ID0gMDsKKworICAgIC8vIGxvc3QgZGV2aWNlCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeURldmlj
ZUxvc3QoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGV2aWNlTG9zdCgpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgdGVzdERldmljZUxvc3QoYm9vbCBub3RpZnkpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgdGVzdERldmljZVJlc2V0dGFibGUoKSA9IDA7CisKKyAgICAvLyBSZW5kZXJlciBjYXBh
YmlsaXRpZXMKKyAgICB2aXJ0dWFsIERXT1JEIGdldEFkYXB0ZXJWZW5kb3IoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgR1VJRCBnZXRBZGFwdGVySWRlbnRpZmllcigpIGNvbnN0ID0gMDsK
KworICAgIHZpcnR1YWwgYm9vbCBnZXRCR1JBVGV4dHVyZVN1cHBvcnQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGdldERYVDFUZXh0dXJlU3VwcG9ydCgpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0RFhUM1RleHR1cmVTdXBwb3J0KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRE
WFQ1VGV4dHVyZVN1cHBvcnQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGdldEV2ZW50UXVlcnlT
dXBwb3J0KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQo
Ym9vbCAqZmlsdGVyaW5nLCBib29sICpyZW5kZXJhYmxlKSA9IDA7CisgICAgdmlydHVhbCBib29s
IGdldEZsb2F0MTZUZXh0dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wgKnJlbmRlcmFi
bGUpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0THVtaW5hbmNlVGV4dHVyZVN1cHBvcnQoKSA9
IDA7CisgICAgdmlydHVhbCBib29sIGdldEx1bWluYW5jZUFscGhhVGV4dHVyZVN1cHBvcnQoKSA9
IDA7CisgICAgYm9vbCBnZXRWZXJ0ZXhUZXh0dXJlU3VwcG9ydCgpIGNvbnN0IHsgcmV0dXJuIGdl
dE1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKCkgPiAwOyB9CisgICAgdmlydHVhbCB1bnNpZ25l
ZCBpbnQgZ2V0TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1W
ZWN0b3JzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlc2VydmVk
RnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IGludCBnZXRNYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIGludCBnZXRNYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldE1heFZhcnlpbmdWZWN0b3JzKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBnZXROb25Qb3dlcjJUZXh0dXJlU3VwcG9ydCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RGVwdGhUZXh0dXJlU3VwcG9ydCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0T2NjbHVzaW9uUXVlcnlTdXBwb3J0KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBnZXRJbnN0YW5jaW5nU3VwcG9ydCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0VGV4dHVyZUZpbHRlckFuaXNvdHJvcHlTdXBwb3J0KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgZmxvYXQgZ2V0VGV4dHVyZU1heEFuaXNvdHJvcHkoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGdldFNoYXJlSGFuZGxlU3VwcG9ydCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0RGVyaXZhdGl2ZUluc3RydWN0aW9uU3VwcG9ydCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UG9zdFN1YkJ1ZmZlclN1cHBvcnQoKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIGludCBnZXRNYWpvclNoYWRlck1vZGVsKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgZmxvYXQgZ2V0TWF4UG9pbnRTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
aW50IGdldE1heFZpZXdwb3J0RGltZW5zaW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50
IGdldE1heFRleHR1cmVXaWR0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBnZXRNYXhU
ZXh0dXJlSGVpZ2h0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXQzMkJpdEluZGV4
U3VwcG9ydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBnZXRNaW5Td2FwSW50ZXJ2YWwo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgZ2V0TWF4U3dhcEludGVydmFsKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBHTHNpemVpIGdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhSZW5kZXJUYXJnZXRzKCkg
Y29uc3QgPSAwOworCisgICAgLy8gUGl4ZWwgb3BlcmF0aW9ucworICAgIHZpcnR1YWwgYm9vbCBj
b3B5VG9SZW5kZXJUYXJnZXQoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqZGVzdCwgVGV4dHVy
ZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc291cmNlKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNvcHlU
b1JlbmRlclRhcmdldChUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKmRlc3QsIFRleHR1cmVT
dG9yYWdlSW50ZXJmYWNlQ3ViZSAqc291cmNlKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY29w
eUltYWdlKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2Uy
RCAqc3RvcmFnZSwgR0xpbnQgbGV2ZWwpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29weUltYWdl
KGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJj
ZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpz
dG9yYWdlLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkgPSAwOworCisgICAgdmlydHVhbCBi
b29sIGJsaXRSZWN0KGdsOjpGcmFtZWJ1ZmZlciAqcmVhZFRhcmdldCwgY29uc3QgZ2w6OlJlY3Rh
bmdsZSAmcmVhZFJlY3QsIGdsOjpGcmFtZWJ1ZmZlciAqZHJhd1RhcmdldCwgY29uc3QgZ2w6OlJl
Y3RhbmdsZSAmZHJhd1JlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxpdFJl
bmRlclRhcmdldCwgYm9vbCBibGl0RGVwdGhTdGVuY2lsKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlYWRQaXhlbHMoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgR0xpbnQgeCwgR0xpbnQg
eSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgb3V0cHV0UGl0Y2gsIGJv
b2wgcGFja1JldmVyc2VSb3dPcmRlciwgR0xpbnQgcGFja0FsaWdubWVudCwgdm9pZCogcGl4ZWxz
KSA9IDA7CisKKyAgICAvLyBSZW5kZXJUYXJnZXQgY3JlYXRpb24KKyAgICB2aXJ0dWFsIFJlbmRl
clRhcmdldCAqY3JlYXRlUmVuZGVyVGFyZ2V0KFN3YXBDaGFpbiAqc3dhcENoYWluLCBib29sIGRl
cHRoKSA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmNyZWF0ZVJlbmRlclRhcmdldChp
bnQgd2lkdGgsIGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywgYm9v
bCBkZXB0aCkgPSAwOworCisgICAgLy8gU2hhZGVyIG9wZXJhdGlvbnMKKyAgICB2aXJ0dWFsIFNo
YWRlckV4ZWN1dGFibGUgKmxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXpl
X3QgbGVuZ3RoLCByeDo6U2hhZGVyVHlwZSB0eXBlKSA9IDA7CisgICAgdmlydHVhbCBTaGFkZXJF
eGVjdXRhYmxlICpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25z
dCBjaGFyICpzaGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0eXBlKSA9IDA7CisKKyAgICAvLyBJ
bWFnZSBvcGVyYXRpb25zCisgICAgdmlydHVhbCBJbWFnZSAqY3JlYXRlSW1hZ2UoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwKEltYWdlICpkZXN0LCBJbWFnZSAqc291cmNl
KSA9IDA7CisgICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2Uy
RChTd2FwQ2hhaW4gKnN3YXBDaGFpbikgPSAwOworICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2Ug
KmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHTGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCkgPSAwOworICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1
cmVTdG9yYWdlQ3ViZShpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1
c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIGludCBzaXplKSA9IDA7CisKKyAgICAvLyBCdWZm
ZXIgY3JlYXRpb24KKyAgICB2aXJ0dWFsIFZlcnRleEJ1ZmZlciAqY3JlYXRlVmVydGV4QnVmZmVy
KCkgPSAwOworICAgIHZpcnR1YWwgSW5kZXhCdWZmZXIgKmNyZWF0ZUluZGV4QnVmZmVyKCkgPSAw
OworICAgIHZpcnR1YWwgQnVmZmVyU3RvcmFnZSAqY3JlYXRlQnVmZmVyU3RvcmFnZSgpID0gMDsK
KworICAgIC8vIFF1ZXJ5IGFuZCBGZW5jZSBjcmVhdGlvbgorICAgIHZpcnR1YWwgUXVlcnlJbXBs
ICpjcmVhdGVRdWVyeShHTGVudW0gdHlwZSkgPSAwOworICAgIHZpcnR1YWwgRmVuY2VJbXBsICpj
cmVhdGVGZW5jZSgpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRMVUlEKExVSUQgKmFkYXB0
ZXJMdWlkKSBjb25zdCA9IDA7CisKKyAgcHJvdGVjdGVkOgorICAgIGJvb2wgaW5pdGlhbGl6ZUNv
bXBpbGVyKCk7CisgICAgU2hhZGVyQmxvYiAqY29tcGlsZVRvQmluYXJ5KGdsOjpJbmZvTG9nICZp
bmZvTG9nLCBjb25zdCBjaGFyICpobHNsLCBjb25zdCBjaGFyICpwcm9maWxlLCBVSU5UIG9wdGlt
aXphdGlvbkZsYWdzLCBib29sIGFsdGVybmF0ZUZsYWdzKTsKKworICAgIGVnbDo6RGlzcGxheSAq
bURpc3BsYXk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVu
ZGVyZXIpOworCisgICAgSE1PRFVMRSBtRDNkQ29tcGlsZXJNb2R1bGU7CisgICAgcENvbXBpbGVG
dW5jIG1EM0RDb21waWxlRnVuYzsKK307CisKK30KKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVS
RVJfUkVOREVSRVJfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvU2hhZGVyQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckNhY2hlLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRl
ckNhY2hlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEwIEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gU2hhZGVyQ2FjaGU6IERlZmluZXMgcng6OlNoYWRlckNhY2hlLCBhIGNhY2hlIG9mIERpcmVj
dDNEIHNoYWRlciBvYmplY3RzCisvLyBrZXllZCBieSB0aGVpciBieXRlIGNvZGUuCisKKyNpZm5k
ZWYgTElCR0xFU1YyX1JFTkRFUkVSX1NIQURFUl9DQUNIRV9IXworI2RlZmluZSBMSUJHTEVTVjJf
UkVOREVSRVJfU0hBREVSX0NBQ0hFX0hfCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKwor
bmFtZXNwYWNlIHJ4Cit7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgU2hhZGVyT2JqZWN0PgorY2xhc3Mg
U2hhZGVyQ2FjaGUKK3sKKyAgcHVibGljOgorICAgIFNoYWRlckNhY2hlKCkgOiBtRGV2aWNlKE5V
TEwpCisgICAgeworICAgIH0KKworICAgIH5TaGFkZXJDYWNoZSgpCisgICAgeworICAgICAgICAv
LyBDYWxsIGNsZWFyIHdoaWxlIHRoZSBkZXZpY2UgaXMgc3RpbGwgdmFsaWQuCisgICAgICAgIEFT
U0VSVChtTWFwLmVtcHR5KCkpOworICAgIH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZShJRGlyZWN0
M0REZXZpY2U5KiBkZXZpY2UpCisgICAgeworICAgICAgICBtRGV2aWNlID0gZGV2aWNlOworICAg
IH0KKworICAgIFNoYWRlck9iamVjdCAqY3JlYXRlKGNvbnN0IERXT1JEICpmdW5jdGlvbiwgc2l6
ZV90IGxlbmd0aCkKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nIGtleShyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihmdW5jdGlvbiksIGxlbmd0aCk7CisgICAgICAgIHR5cGVuYW1lIE1h
cDo6aXRlcmF0b3IgaXQgPSBtTWFwLmZpbmQoa2V5KTsKKyAgICAgICAgaWYgKGl0ICE9IG1NYXAu
ZW5kKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPkFkZFJlZigpOworICAg
ICAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgICAgICAgIH0KKworICAgICAgICBTaGFkZXJP
YmplY3QgKnNoYWRlcjsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBjcmVhdGVTaGFkZXIoZnVu
Y3Rpb24sICZzaGFkZXIpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmFuZG9t
IGV2aWN0aW9uIHBvbGljeS4KKyAgICAgICAgaWYgKG1NYXAuc2l6ZSgpID49IGtNYXhNYXBTaXpl
KQorICAgICAgICB7CisgICAgICAgICAgICBtTWFwLmJlZ2luKCktPnNlY29uZC0+UmVsZWFzZSgp
OworICAgICAgICAgICAgbU1hcC5lcmFzZShtTWFwLmJlZ2luKCkpOworICAgICAgICB9CisKKyAg
ICAgICAgc2hhZGVyLT5BZGRSZWYoKTsKKyAgICAgICAgbU1hcFtrZXldID0gc2hhZGVyOworCisg
ICAgICAgIHJldHVybiBzaGFkZXI7CisgICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgewor
ICAgICAgICBmb3IgKHR5cGVuYW1lIE1hcDo6aXRlcmF0b3IgaXQgPSBtTWFwLmJlZ2luKCk7IGl0
ICE9IG1NYXAuZW5kKCk7ICsraXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQt
PlJlbGVhc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1NYXAuY2xlYXIoKTsKKyAgICB9CisK
KyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oU2hhZGVyQ2FjaGUpOwor
CisgICAgY29uc3Qgc3RhdGljIHNpemVfdCBrTWF4TWFwU2l6ZSA9IDEwMDsKKworICAgIEhSRVNV
TFQgY3JlYXRlU2hhZGVyKGNvbnN0IERXT1JEICpmdW5jdGlvbiwgSURpcmVjdDNEVmVydGV4U2hh
ZGVyOSAqKnNoYWRlcikKKyAgICB7CisgICAgICAgIHJldHVybiBtRGV2aWNlLT5DcmVhdGVWZXJ0
ZXhTaGFkZXIoZnVuY3Rpb24sIHNoYWRlcik7CisgICAgfQorCisgICAgSFJFU1VMVCBjcmVhdGVT
aGFkZXIoY29uc3QgRFdPUkQgKmZ1bmN0aW9uLCBJRGlyZWN0M0RQaXhlbFNoYWRlcjkgKipzaGFk
ZXIpCisgICAgeworICAgICAgICByZXR1cm4gbURldmljZS0+Q3JlYXRlUGl4ZWxTaGFkZXIoZnVu
Y3Rpb24sIHNoYWRlcik7CisgICAgfQorCisjaWZuZGVmIEhBU0hfTUFQCisjIGlmZGVmIF9NU0Nf
VkVSCisjICBkZWZpbmUgSEFTSF9NQVAgc3RkZXh0OjpoYXNoX21hcAorIyBlbHNlCisjICBkZWZp
bmUgSEFTSF9NQVAgc3RkOjp1bm9yZGVyZWRfbWFwCisjIGVuZGlmCisjZW5kaWYKKworICAgIHR5
cGVkZWYgSEFTSF9NQVA8c3RkOjpzdHJpbmcsIFNoYWRlck9iamVjdCo+IE1hcDsKKyAgICBNYXAg
bU1hcDsKKworICAgIElEaXJlY3QzRERldmljZTkgKm1EZXZpY2U7Cit9OworCit0eXBlZGVmIFNo
YWRlckNhY2hlPElEaXJlY3QzRFZlcnRleFNoYWRlcjk+IFZlcnRleFNoYWRlckNhY2hlOwordHlw
ZWRlZiBTaGFkZXJDYWNoZTxJRGlyZWN0M0RQaXhlbFNoYWRlcjk+IFBpeGVsU2hhZGVyQ2FjaGU7
CisKK30KKworI2VuZGlmICAgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1NIQURFUl9DQUNIRV9IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFk
ZXJFeGVjdXRhYmxlOS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlOS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRl
ckV4ZWN1dGFibGU5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorI2luY2x1ZGUg
InByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTaGFkZXJFeGVjdXRhYmxl
OS5jcHA6IEltcGxlbWVudHMgYSBEM0Q5LXNwZWNpZmljIGNsYXNzIHRvIGNvbnRhaW4gc2hhZGVy
CisvLyBleGVjdXRhYmxlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTkuaCIKKworI2luY2x1ZGUgImNvbW1vbi9k
ZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworU2hhZGVyRXhlY3V0YWJsZTk6OlNoYWRlckV4
ZWN1dGFibGU5KGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCBJRGlyZWN0M0RQ
aXhlbFNoYWRlcjkgKmV4ZWN1dGFibGUpCisgICAgOiBTaGFkZXJFeGVjdXRhYmxlKGZ1bmN0aW9u
LCBsZW5ndGgpCit7CisgICAgbVBpeGVsRXhlY3V0YWJsZSA9IGV4ZWN1dGFibGU7CisgICAgbVZl
cnRleEV4ZWN1dGFibGUgPSBOVUxMOworfQorCitTaGFkZXJFeGVjdXRhYmxlOTo6U2hhZGVyRXhl
Y3V0YWJsZTkoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIElEaXJlY3QzRFZl
cnRleFNoYWRlcjkgKmV4ZWN1dGFibGUpCisgICAgOiBTaGFkZXJFeGVjdXRhYmxlKGZ1bmN0aW9u
LCBsZW5ndGgpCit7CisgICAgbVZlcnRleEV4ZWN1dGFibGUgPSBleGVjdXRhYmxlOworICAgIG1Q
aXhlbEV4ZWN1dGFibGUgPSBOVUxMOworfQorCitTaGFkZXJFeGVjdXRhYmxlOTo6flNoYWRlckV4
ZWN1dGFibGU5KCkKK3sKKyAgICBpZiAobVZlcnRleEV4ZWN1dGFibGUpCisgICAgeworICAgICAg
ICBtVmVydGV4RXhlY3V0YWJsZS0+UmVsZWFzZSgpOworICAgIH0KKyAgICBpZiAobVBpeGVsRXhl
Y3V0YWJsZSkKKyAgICB7CisgICAgICAgIG1QaXhlbEV4ZWN1dGFibGUtPlJlbGVhc2UoKTsKKyAg
ICB9Cit9CisKK1NoYWRlckV4ZWN1dGFibGU5ICpTaGFkZXJFeGVjdXRhYmxlOTo6bWFrZVNoYWRl
ckV4ZWN1dGFibGU5KFNoYWRlckV4ZWN1dGFibGUgKmV4ZWN1dGFibGUpCit7CisgICAgQVNTRVJU
KEhBU19EWU5BTUlDX1RZUEUoU2hhZGVyRXhlY3V0YWJsZTkqLCBleGVjdXRhYmxlKSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFNoYWRlckV4ZWN1dGFibGU5Kj4oZXhlY3V0YWJsZSk7Cit9CisK
K0lEaXJlY3QzRFZlcnRleFNoYWRlcjkgKlNoYWRlckV4ZWN1dGFibGU5OjpnZXRWZXJ0ZXhTaGFk
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtVmVydGV4RXhlY3V0YWJsZTsKK30KKworSURpcmVj
dDNEUGl4ZWxTaGFkZXI5ICpTaGFkZXJFeGVjdXRhYmxlOTo6Z2V0UGl4ZWxTaGFkZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtUGl4ZWxFeGVjdXRhYmxlOworfQorCit9ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlOS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTkuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworLy8gU2hhZGVyRXhlY3V0YWJsZTkuaDogRGVmaW5lcyBhIEQz
RDktc3BlY2lmaWMgY2xhc3MgdG8gY29udGFpbiBzaGFkZXIKKy8vIGV4ZWN1dGFibGUgaW1wbGVt
ZW50YXRpb24gZGV0YWlscy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhF
Q1VUQUJMRTlfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1NIQURFUkVYRUNVVEFCTEU5
X0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZS5oIgor
CituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgU2hhZGVyRXhlY3V0YWJsZTkgOiBwdWJsaWMgU2hh
ZGVyRXhlY3V0YWJsZQoreworICBwdWJsaWM6CisgICAgU2hhZGVyRXhlY3V0YWJsZTkoY29uc3Qg
dm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIElEaXJlY3QzRFBpeGVsU2hhZGVyOSAqZXhl
Y3V0YWJsZSk7CisgICAgU2hhZGVyRXhlY3V0YWJsZTkoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNp
emVfdCBsZW5ndGgsIElEaXJlY3QzRFZlcnRleFNoYWRlcjkgKmV4ZWN1dGFibGUpOworICAgIHZp
cnR1YWwgflNoYWRlckV4ZWN1dGFibGU5KCk7CisKKyAgICBzdGF0aWMgU2hhZGVyRXhlY3V0YWJs
ZTkgKm1ha2VTaGFkZXJFeGVjdXRhYmxlOShTaGFkZXJFeGVjdXRhYmxlICpleGVjdXRhYmxlKTsK
KworICAgIElEaXJlY3QzRFBpeGVsU2hhZGVyOSAqZ2V0UGl4ZWxTaGFkZXIoKSBjb25zdDsKKyAg
ICBJRGlyZWN0M0RWZXJ0ZXhTaGFkZXI5ICpnZXRWZXJ0ZXhTaGFkZXIoKSBjb25zdDsKKworICBw
cml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTaGFkZXJFeGVjdXRhYmxlOSk7
CisKKyAgICBJRGlyZWN0M0RQaXhlbFNoYWRlcjkgKm1QaXhlbEV4ZWN1dGFibGU7CisgICAgSURp
cmVjdDNEVmVydGV4U2hhZGVyOSAqbVZlcnRleEV4ZWN1dGFibGU7Cit9OworCit9CisKKyNlbmRp
ZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VUQUJMRTlfSF8KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxl
MTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEwOSBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDEyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBTaGFkZXJFeGVjdXRhYmxlMTEuY3BwOiBJbXBsZW1lbnRzIGEgRDNEMTEtc3BlY2lmaWMg
Y2xhc3MgdG8gY29udGFpbiBzaGFkZXIKKy8vIGV4ZWN1dGFibGUgaW1wbGVtZW50YXRpb24gZGV0
YWlscy4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEu
aCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworU2hh
ZGVyRXhlY3V0YWJsZTExOjpTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAqZnVuY3Rpb24s
IHNpemVfdCBsZW5ndGgsIElEM0QxMVBpeGVsU2hhZGVyICpleGVjdXRhYmxlKQorICAgIDogU2hh
ZGVyRXhlY3V0YWJsZShmdW5jdGlvbiwgbGVuZ3RoKQoreworICAgIG1QaXhlbEV4ZWN1dGFibGUg
PSBleGVjdXRhYmxlOworICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gTlVMTDsKKyAgICBtR2VvbWV0
cnlFeGVjdXRhYmxlID0gTlVMTDsKKworICAgIG1Db25zdGFudEJ1ZmZlciA9IE5VTEw7Cit9CisK
K1NoYWRlckV4ZWN1dGFibGUxMTo6U2hhZGVyRXhlY3V0YWJsZTExKGNvbnN0IHZvaWQgKmZ1bmN0
aW9uLCBzaXplX3QgbGVuZ3RoLCBJRDNEMTFWZXJ0ZXhTaGFkZXIgKmV4ZWN1dGFibGUpCisgICAg
OiBTaGFkZXJFeGVjdXRhYmxlKGZ1bmN0aW9uLCBsZW5ndGgpCit7CisgICAgbVZlcnRleEV4ZWN1
dGFibGUgPSBleGVjdXRhYmxlOworICAgIG1QaXhlbEV4ZWN1dGFibGUgPSBOVUxMOworICAgIG1H
ZW9tZXRyeUV4ZWN1dGFibGUgPSBOVUxMOworCisgICAgbUNvbnN0YW50QnVmZmVyID0gTlVMTDsK
K30KKworU2hhZGVyRXhlY3V0YWJsZTExOjpTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAq
ZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIElEM0QxMUdlb21ldHJ5U2hhZGVyICpleGVjdXRhYmxl
KQorICAgIDogU2hhZGVyRXhlY3V0YWJsZShmdW5jdGlvbiwgbGVuZ3RoKQoreworICAgIG1HZW9t
ZXRyeUV4ZWN1dGFibGUgPSBleGVjdXRhYmxlOworICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gTlVM
TDsKKyAgICBtUGl4ZWxFeGVjdXRhYmxlID0gTlVMTDsKKworICAgIG1Db25zdGFudEJ1ZmZlciA9
IE5VTEw7Cit9CisKK1NoYWRlckV4ZWN1dGFibGUxMTo6flNoYWRlckV4ZWN1dGFibGUxMSgpCit7
CisgICAgaWYgKG1WZXJ0ZXhFeGVjdXRhYmxlKQorICAgIHsKKyAgICAgICAgbVZlcnRleEV4ZWN1
dGFibGUtPlJlbGVhc2UoKTsKKyAgICB9CisgICAgaWYgKG1QaXhlbEV4ZWN1dGFibGUpCisgICAg
eworICAgICAgICBtUGl4ZWxFeGVjdXRhYmxlLT5SZWxlYXNlKCk7CisgICAgfQorICAgIGlmICht
R2VvbWV0cnlFeGVjdXRhYmxlKQorICAgIHsKKyAgICAgICAgbUdlb21ldHJ5RXhlY3V0YWJsZS0+
UmVsZWFzZSgpOworICAgIH0KKyAgICAKKyAgICBpZiAobUNvbnN0YW50QnVmZmVyKQorICAgIHsK
KyAgICAgICAgbUNvbnN0YW50QnVmZmVyLT5SZWxlYXNlKCk7CisgICAgfQorfQorCitTaGFkZXJF
eGVjdXRhYmxlMTEgKlNoYWRlckV4ZWN1dGFibGUxMTo6bWFrZVNoYWRlckV4ZWN1dGFibGUxMShT
aGFkZXJFeGVjdXRhYmxlICpleGVjdXRhYmxlKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19U
WVBFKFNoYWRlckV4ZWN1dGFibGUxMSosIGV4ZWN1dGFibGUpKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8U2hhZGVyRXhlY3V0YWJsZTExKj4oZXhlY3V0YWJsZSk7Cit9CisKK0lEM0QxMVZlcnRl
eFNoYWRlciAqU2hhZGVyRXhlY3V0YWJsZTExOjpnZXRWZXJ0ZXhTaGFkZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBtVmVydGV4RXhlY3V0YWJsZTsKK30KKworSUQzRDExUGl4ZWxTaGFkZXIgKlNo
YWRlckV4ZWN1dGFibGUxMTo6Z2V0UGl4ZWxTaGFkZXIoKSBjb25zdAoreworICAgIHJldHVybiBt
UGl4ZWxFeGVjdXRhYmxlOworfQorCitJRDNEMTFHZW9tZXRyeVNoYWRlciAqU2hhZGVyRXhlY3V0
YWJsZTExOjpnZXRHZW9tZXRyeVNoYWRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1HZW9tZXRy
eUV4ZWN1dGFibGU7Cit9CisKK0lEM0QxMUJ1ZmZlciAqU2hhZGVyRXhlY3V0YWJsZTExOjpnZXRD
b25zdGFudEJ1ZmZlcihJRDNEMTFEZXZpY2UgKmRldmljZSwgdW5zaWduZWQgaW50IHJlZ2lzdGVy
Q291bnQpCit7CisgICAgaWYgKCFtQ29uc3RhbnRCdWZmZXIgJiYgcmVnaXN0ZXJDb3VudCA+IDAp
CisgICAgeworICAgICAgICBEM0QxMV9CVUZGRVJfREVTQyBjb25zdGFudEJ1ZmZlckRlc2NyaXB0
aW9uID0gezB9OworICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLkJ5dGVXaWR0aCA9
IHJlZ2lzdGVyQ291bnQgKiBzaXplb2YoZmxvYXRbNF0pOworICAgICAgICBjb25zdGFudEJ1ZmZl
ckRlc2NyaXB0aW9uLlVzYWdlID0gRDNEMTFfVVNBR0VfRFlOQU1JQzsKKyAgICAgICAgY29uc3Rh
bnRCdWZmZXJEZXNjcmlwdGlvbi5CaW5kRmxhZ3MgPSBEM0QxMV9CSU5EX0NPTlNUQU5UX0JVRkZF
UjsKKyAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5DUFVBY2Nlc3NGbGFncyA9IEQz
RDExX0NQVV9BQ0NFU1NfV1JJVEU7CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24u
TWlzY0ZsYWdzID0gMDsKKyAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5TdHJ1Y3R1
cmVCeXRlU3RyaWRlID0gMDsKKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3Jl
YXRlQnVmZmVyKCZjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLCBOVUxMLCAmbUNvbnN0YW50QnVm
ZmVyKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gbUNvbnN0YW50QnVmZmVyOworfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9T
aGFkZXJFeGVjdXRhYmxlMTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUxMS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFk
ZXJFeGVjdXRhYmxlMTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gU2hhZGVyRXhlY3V0YWJsZTExLmg6IERlZmluZXMgYSBEM0QxMS1zcGVj
aWZpYyBjbGFzcyB0byBjb250YWluIHNoYWRlcgorLy8gZXhlY3V0YWJsZSBpbXBsZW1lbnRhdGlv
biBkZXRhaWxzLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9TSEFERVJFWEVDVVRBQkxF
MTFfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1NIQURFUkVYRUNVVEFCTEUxMV9IXwor
CisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUuaCIKKworbmFt
ZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFNoYWRlckV4ZWN1dGFibGUxMSA6IHB1YmxpYyBTaGFkZXJF
eGVjdXRhYmxlCit7CisgIHB1YmxpYzoKKyAgICBTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9p
ZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIElEM0QxMVBpeGVsU2hhZGVyICpleGVjdXRhYmxl
KTsKKyAgICBTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVfdCBs
ZW5ndGgsIElEM0QxMVZlcnRleFNoYWRlciAqZXhlY3V0YWJsZSk7CisgICAgU2hhZGVyRXhlY3V0
YWJsZTExKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCBJRDNEMTFHZW9tZXRy
eVNoYWRlciAqZXhlY3V0YWJsZSk7CisKKyAgICB2aXJ0dWFsIH5TaGFkZXJFeGVjdXRhYmxlMTEo
KTsKKworICAgIHN0YXRpYyBTaGFkZXJFeGVjdXRhYmxlMTEgKm1ha2VTaGFkZXJFeGVjdXRhYmxl
MTEoU2hhZGVyRXhlY3V0YWJsZSAqZXhlY3V0YWJsZSk7CisKKyAgICBJRDNEMTFQaXhlbFNoYWRl
ciAqZ2V0UGl4ZWxTaGFkZXIoKSBjb25zdDsKKyAgICBJRDNEMTFWZXJ0ZXhTaGFkZXIgKmdldFZl
cnRleFNoYWRlcigpIGNvbnN0OworICAgIElEM0QxMUdlb21ldHJ5U2hhZGVyICpnZXRHZW9tZXRy
eVNoYWRlcigpIGNvbnN0OworCisgICAgSUQzRDExQnVmZmVyICpnZXRDb25zdGFudEJ1ZmZlcihJ
RDNEMTFEZXZpY2UgKmRldmljZSwgdW5zaWduZWQgaW50IHJlZ2lzdGVyQ291bnQpOworCisgIHBy
aXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNoYWRlckV4ZWN1dGFibGUxMSk7
CisKKyAgICBJRDNEMTFQaXhlbFNoYWRlciAqbVBpeGVsRXhlY3V0YWJsZTsKKyAgICBJRDNEMTFW
ZXJ0ZXhTaGFkZXIgKm1WZXJ0ZXhFeGVjdXRhYmxlOworICAgIElEM0QxMUdlb21ldHJ5U2hhZGVy
ICptR2VvbWV0cnlFeGVjdXRhYmxlOworCisgICAgSUQzRDExQnVmZmVyICptQ29uc3RhbnRCdWZm
ZXI7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VU
QUJMRTExX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1NoYWRlckV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
U2hhZGVyRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gU2hhZGVyRXhlY3V0YWJsZS5oOiBEZWZpbmVzIGEgcmVuZGVyZXItYWdub3N0
aWMgY2xhc3MgdG8gY29udGFpbiBzaGFkZXIKKy8vIGV4ZWN1dGFibGUgaW1wbGVtZW50YXRpb24g
ZGV0YWlscy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VUQUJMRV9I
XworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VUQUJMRV9IXworCisjaW5j
bHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFNo
YWRlckV4ZWN1dGFibGUKK3sKKyAgcHVibGljOgorICAgIFNoYWRlckV4ZWN1dGFibGUoY29uc3Qg
dm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgpIDogbUxlbmd0aChsZW5ndGgpCisgICAgewor
ICAgICAgICBtRnVuY3Rpb24gPSBuZXcgY2hhcltsZW5ndGhdOworICAgICAgICBtZW1jcHkobUZ1
bmN0aW9uLCBmdW5jdGlvbiwgbGVuZ3RoKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB+U2hh
ZGVyRXhlY3V0YWJsZSgpCisgICAgeworICAgICAgICBkZWxldGVbXSBtRnVuY3Rpb247CisgICAg
fQorCisgICAgdm9pZCAqZ2V0RnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1GdW5jdGlvbjsKKyAgICB9CisKKyAgICBzaXplX3QgZ2V0TGVuZ3RoKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtTGVuZ3RoOworICAgIH0KKworICBwcml2YXRlOgorICAgIERJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihTaGFkZXJFeGVjdXRhYmxlKTsKKworICAgIHZvaWQgKm1GdW5j
dGlvbjsKKyAgICBjb25zdCBzaXplX3QgbUxlbmd0aDsKK307CisKK30KKworI2VuZGlmIC8vIExJ
QkdMRVNWMl9SRU5ERVJFUl9TSEFERVJFWEVDVVRBQkxFOV9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW45LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3
YXBDaGFpbjkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW45LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0MzQgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gU3dhcENoYWluOS5jcHA6IEltcGxlbWVudHMgYSBiYWNrLWVuZCBzcGVjaWZpYyBjbGFzcyBm
b3IgdGhlIEQzRDkgc3dhcCBjaGFpbi4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9T
d2FwQ2hhaW45LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyOV91dGls
cy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuaCIKKworbmFtZXNw
YWNlIHJ4Cit7CisKK1N3YXBDaGFpbjk6OlN3YXBDaGFpbjkoUmVuZGVyZXI5ICpyZW5kZXJlciwg
SFdORCB3aW5kb3csIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCkKKyAgICA6
IG1SZW5kZXJlcihyZW5kZXJlciksIFN3YXBDaGFpbih3aW5kb3csIHNoYXJlSGFuZGxlLCBiYWNr
QnVmZmVyRm9ybWF0LCBkZXB0aEJ1ZmZlckZvcm1hdCkKK3sKKyAgICBtU3dhcENoYWluID0gTlVM
TDsKKyAgICBtQmFja0J1ZmZlciA9IE5VTEw7CisgICAgbURlcHRoU3RlbmNpbCA9IE5VTEw7Cisg
ICAgbVJlbmRlclRhcmdldCA9IE5VTEw7CisgICAgbU9mZnNjcmVlblRleHR1cmUgPSBOVUxMOwor
ICAgIG1XaWR0aCA9IC0xOworICAgIG1IZWlnaHQgPSAtMTsKKyAgICBtU3dhcEludGVydmFsID0g
LTE7Cit9CisKK1N3YXBDaGFpbjk6On5Td2FwQ2hhaW45KCkKK3sKKyAgICByZWxlYXNlKCk7Cit9
CisKK3ZvaWQgU3dhcENoYWluOTo6cmVsZWFzZSgpCit7CisgICAgaWYgKG1Td2FwQ2hhaW4pCisg
ICAgeworICAgICAgICBtU3dhcENoYWluLT5SZWxlYXNlKCk7CisgICAgICAgIG1Td2FwQ2hhaW4g
PSBOVUxMOworICAgIH0KKworICAgIGlmIChtQmFja0J1ZmZlcikKKyAgICB7CisgICAgICAgIG1C
YWNrQnVmZmVyLT5SZWxlYXNlKCk7CisgICAgICAgIG1CYWNrQnVmZmVyID0gTlVMTDsKKyAgICB9
CisKKyAgICBpZiAobURlcHRoU3RlbmNpbCkKKyAgICB7CisgICAgICAgIG1EZXB0aFN0ZW5jaWwt
PlJlbGVhc2UoKTsKKyAgICAgICAgbURlcHRoU3RlbmNpbCA9IE5VTEw7CisgICAgfQorCisgICAg
aWYgKG1SZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICBtUmVuZGVyVGFyZ2V0LT5SZWxlYXNl
KCk7CisgICAgICAgIG1SZW5kZXJUYXJnZXQgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtT2Zm
c2NyZWVuVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlLT5SZWxlYXNl
KCk7CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAo
bVdpbmRvdykKKyAgICAgICAgbVNoYXJlSGFuZGxlID0gTlVMTDsKK30KKworc3RhdGljIERXT1JE
IGNvbnZlcnRJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpCit7CisgICAgc3dpdGNoKGludGVydmFs
KQorICAgIHsKKyAgICAgIGNhc2UgMDogcmV0dXJuIEQzRFBSRVNFTlRfSU5URVJWQUxfSU1NRURJ
QVRFOworICAgICAgY2FzZSAxOiByZXR1cm4gRDNEUFJFU0VOVF9JTlRFUlZBTF9PTkU7CisgICAg
ICBjYXNlIDI6IHJldHVybiBEM0RQUkVTRU5UX0lOVEVSVkFMX1RXTzsKKyAgICAgIGNhc2UgMzog
cmV0dXJuIEQzRFBSRVNFTlRfSU5URVJWQUxfVEhSRUU7CisgICAgICBjYXNlIDQ6IHJldHVybiBE
M0RQUkVTRU5UX0lOVEVSVkFMX0ZPVVI7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwor
ICAgIH0KKworICAgIHJldHVybiBEM0RQUkVTRU5UX0lOVEVSVkFMX0RFRkFVTFQ7Cit9CisKK0VH
TGludCBTd2FwQ2hhaW45OjpyZXNpemUoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZm
ZXJIZWlnaHQpCit7CisgICAgLy8gRDNEOSBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIHN3YXAg
Y2hhaW5zIHdpdGhvdXQgcmVjcmVhdGluZyB0aGVtCisgICAgcmV0dXJuIHJlc2V0KGJhY2tidWZm
ZXJXaWR0aCwgYmFja2J1ZmZlckhlaWdodCwgbVN3YXBJbnRlcnZhbCk7Cit9CisKK0VHTGludCBT
d2FwQ2hhaW45OjpyZXNldChpbnQgYmFja2J1ZmZlcldpZHRoLCBpbnQgYmFja2J1ZmZlckhlaWdo
dCwgRUdMaW50IHN3YXBJbnRlcnZhbCkKK3sKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2Ug
PSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgaWYgKGRldmljZSA9PSBOVUxMKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEVHTF9CQURfQUNDRVNTOworICAgIH0KKworICAgIC8vIEV2aWN0
IGFsbCBub24tcmVuZGVyIHRhcmdldCB0ZXh0dXJlcyB0byBzeXN0ZW0gbWVtb3J5IGFuZCByZWxl
YXNlIGFsbCByZXNvdXJjZXMKKyAgICAvLyBiZWZvcmUgcmVhbGxvY2F0aW5nIHRoZW0gdG8gZnJl
ZSB1cCBhcyBtdWNoIHZpZGVvIG1lbW9yeSBhcyBwb3NzaWJsZS4KKyAgICBkZXZpY2UtPkV2aWN0
TWFuYWdlZFJlc291cmNlcygpOworCisgICAgSFJFU1VMVCByZXN1bHQ7CisKKyAgICAvLyBSZWxl
YXNlIHNwZWNpZmljIHJlc291cmNlcyB0byBmcmVlIHVwIG1lbW9yeSBmb3IgdGhlIG5ldyByZW5k
ZXIgdGFyZ2V0LCB3aGlsZSB0aGUKKyAgICAvLyBvbGQgcmVuZGVyIHRhcmdldCBzdGlsbCBleGlz
dHMgZm9yIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZpbmcgaXRzIGNvbnRlbnRzLgorICAgIGlmICht
U3dhcENoYWluKQorICAgIHsKKyAgICAgICAgbVN3YXBDaGFpbi0+UmVsZWFzZSgpOworICAgICAg
ICBtU3dhcENoYWluID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobUJhY2tCdWZmZXIpCisgICAg
eworICAgICAgICBtQmFja0J1ZmZlci0+UmVsZWFzZSgpOworICAgICAgICBtQmFja0J1ZmZlciA9
IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1PZmZzY3JlZW5UZXh0dXJlKQorICAgIHsKKyAgICAg
ICAgbU9mZnNjcmVlblRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbU9mZnNjcmVlblRleHR1
cmUgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAg
ICAgbURlcHRoU3RlbmNpbC0+UmVsZWFzZSgpOworICAgICAgICBtRGVwdGhTdGVuY2lsID0gTlVM
TDsKKyAgICB9CisKKyAgICBIQU5ETEUgKnBTaGFyZUhhbmRsZSA9IE5VTEw7CisgICAgaWYgKCFt
V2luZG93ICYmIG1SZW5kZXJlci0+Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KCkpCisgICAgeworICAg
ICAgICBwU2hhcmVIYW5kbGUgPSAmbVNoYXJlSGFuZGxlOworICAgIH0KKworICAgIHJlc3VsdCA9
IGRldmljZS0+Q3JlYXRlVGV4dHVyZShiYWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJIZWlnaHQs
IDEsIEQzRFVTQUdFX1JFTkRFUlRBUkdFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xfZDNkOTo6Q29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChtQmFja0J1ZmZlckZvcm1h
dCksIEQzRFBPT0xfREVGQVVMVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jm1PZmZzY3JlZW5UZXh0dXJlLCBwU2hhcmVIYW5kbGUpOworICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBvZmZzY3JlZW4gdGV4dHVy
ZTogJTA4bFgiLCByZXN1bHQpOworICAgICAgICByZWxlYXNlKCk7CisKKyAgICAgICAgaWYgKGQz
ZDk6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBFR0xfQ09OVEVYVF9MT1NUOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIEVHTF9CQURfQUxMT0M7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqb2xkUmVuZGVyVGFyZ2V0ID0gbVJlbmRlclRhcmdldDsK
KworICAgIHJlc3VsdCA9IG1PZmZzY3JlZW5UZXh0dXJlLT5HZXRTdXJmYWNlTGV2ZWwoMCwgJm1S
ZW5kZXJUYXJnZXQpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICBpZiAo
b2xkUmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgUkVDVCByZWN0ID0KKyAgICAgICAgewor
ICAgICAgICAgICAgMCwgMCwKKyAgICAgICAgICAgIG1XaWR0aCwgbUhlaWdodAorICAgICAgICB9
OworCisgICAgICAgIGlmIChyZWN0LnJpZ2h0ID4gc3RhdGljX2Nhc3Q8TE9ORz4oYmFja2J1ZmZl
cldpZHRoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmVjdC5yaWdodCA9IGJhY2tidWZmZXJX
aWR0aDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZWN0LmJvdHRvbSA+IHN0YXRpY19jYXN0
PExPTkc+KGJhY2tidWZmZXJIZWlnaHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZWN0LmJv
dHRvbSA9IGJhY2tidWZmZXJIZWlnaHQ7CisgICAgICAgIH0KKworICAgICAgICBtUmVuZGVyZXIt
PmVuZFNjZW5lKCk7CisKKyAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5TdHJldGNoUmVjdChvbGRS
ZW5kZXJUYXJnZXQsICZyZWN0LCBtUmVuZGVyVGFyZ2V0LCAmcmVjdCwgRDNEVEVYRl9OT05FKTsK
KyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgICAgICBvbGRSZW5kZXJU
YXJnZXQtPlJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBpZiAobVdpbmRvdykKKyAgICB7CisgICAg
ICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBwcmVzZW50UGFyYW1ldGVycyA9IHswfTsKKyAgICAg
ICAgcHJlc2VudFBhcmFtZXRlcnMuQXV0b0RlcHRoU3RlbmNpbEZvcm1hdCA9IGdsX2QzZDk6OkNv
bnZlcnRSZW5kZXJidWZmZXJGb3JtYXQobURlcHRoQnVmZmVyRm9ybWF0KTsKKyAgICAgICAgcHJl
c2VudFBhcmFtZXRlcnMuQmFja0J1ZmZlckNvdW50ID0gMTsKKyAgICAgICAgcHJlc2VudFBhcmFt
ZXRlcnMuQmFja0J1ZmZlckZvcm1hdCA9IGdsX2QzZDk6OkNvbnZlcnRSZW5kZXJidWZmZXJGb3Jt
YXQobUJhY2tCdWZmZXJGb3JtYXQpOworICAgICAgICBwcmVzZW50UGFyYW1ldGVycy5FbmFibGVB
dXRvRGVwdGhTdGVuY2lsID0gRkFMU0U7CisgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLkZsYWdz
ID0gMDsKKyAgICAgICAgcHJlc2VudFBhcmFtZXRlcnMuaERldmljZVdpbmRvdyA9IG1XaW5kb3c7
CisgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLk11bHRpU2FtcGxlUXVhbGl0eSA9IDA7ICAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQKKyAgICAgICAgcHJlc2VudFBhcmFt
ZXRlcnMuTXVsdGlTYW1wbGVUeXBlID0gRDNETVVMVElTQU1QTEVfTk9ORTsgICAvLyBGSVhNRTog
VW5pbXBsZW1lbnRlZAorICAgICAgICBwcmVzZW50UGFyYW1ldGVycy5QcmVzZW50YXRpb25JbnRl
cnZhbCA9IGNvbnZlcnRJbnRlcnZhbChzd2FwSW50ZXJ2YWwpOworICAgICAgICBwcmVzZW50UGFy
YW1ldGVycy5Td2FwRWZmZWN0ID0gRDNEU1dBUEVGRkVDVF9ESVNDQVJEOworICAgICAgICBwcmVz
ZW50UGFyYW1ldGVycy5XaW5kb3dlZCA9IFRSVUU7CisgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJz
LkJhY2tCdWZmZXJXaWR0aCA9IGJhY2tidWZmZXJXaWR0aDsKKyAgICAgICAgcHJlc2VudFBhcmFt
ZXRlcnMuQmFja0J1ZmZlckhlaWdodCA9IGJhY2tidWZmZXJIZWlnaHQ7CisKKyAgICAgICAgLy8g
aHR0cDovL2NyYnVnLmNvbS8xNDAyMzkKKyAgICAgICAgLy8gaHR0cDovL2NyYnVnLmNvbS8xNDM0
MzQKKyAgICAgICAgLy8KKyAgICAgICAgLy8gU29tZSBBTUQvSW50ZWwgc3dpdGNoYWJsZSBzeXN0
ZW1zIC8gZHJpdmVycyBhcHBlYXIgdG8gcm91bmQgc3dhcCBjaGFpbiBzdXJmYWNlcyB0byBhIG11
bHRpcGxlIG9mIDY0IHBpeGVscyBpbiB3aWR0aAorICAgICAgICAvLyB3aGVuIHVzaW5nIHRoZSBp
bnRlZ3JhdGVkIEludGVsLiBUaGlzIHJvdW5kcyB0aGUgd2lkdGggdXAgcmF0aGVyIHRoYW4gZG93
bi4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gU29tZSBub24tc3dpdGNoYWJsZSBBTUQgR1BVcyAv
IGRyaXZlcnMgZG8gbm90IHJlc3BlY3QgdGhlIHNvdXJjZSByZWN0YW5nbGUgdG8gUHJlc2VudC4g
VGhlcmVmb3JlLCB3aGVuIHRoZSB2ZW5kb3IgSUQKKyAgICAgICAgLy8gaXMgbm90IEludGVsLCB0
aGUgYmFjayBidWZmZXIgd2lkdGggbXVzdCBiZSBleGFjdGx5IHRoZSBzYW1lIHdpZHRoIGFzIHRo
ZSB3aW5kb3cgb3IgaG9yaXpvbnRhbCBzY2FsaW5nIHdpbGwgb2NjdXIuCisgICAgICAgIGlmICht
UmVuZGVyZXItPmdldEFkYXB0ZXJWZW5kb3IoKSA9PSBWRU5ET1JfSURfSU5URUwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZmZXJXaWR0aCA9IChwcmVz
ZW50UGFyYW1ldGVycy5CYWNrQnVmZmVyV2lkdGggKyA2MykgLyA2NCAqIDY0OworICAgICAgICB9
CisKKyAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVBZGRpdGlvbmFsU3dhcENoYWluKCZw
cmVzZW50UGFyYW1ldGVycywgJm1Td2FwQ2hhaW4pOworCisgICAgICAgIGlmIChGQUlMRUQocmVz
dWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VU
T0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCByZXN1bHQgPT0gRDNE
RVJSX0lOVkFMSURDQUxMIHx8IHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTE9TVCk7CisKKyAgICAg
ICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBhZGRpdGlvbmFsIHN3YXAgY2hhaW5zIG9yIG9m
ZnNjcmVlbiBzdXJmYWNlczogJTA4bFgiLCByZXN1bHQpOworICAgICAgICAgICAgcmVsZWFzZSgp
OworCisgICAgICAgICAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRUdMX0NPTlRFWFRfTE9TVDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gRUdMX0JBRF9BTExPQzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIHJlc3VsdCA9IG1Td2FwQ2hhaW4tPkdldEJhY2tCdWZmZXIoMCwgRDNEQkFDS0JVRkZF
Ul9UWVBFX01PTk8sICZtQmFja0J1ZmZlcik7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVz
dWx0KSk7CisgICAgICAgIEludmFsaWRhdGVSZWN0KG1XaW5kb3csIE5VTEwsIEZBTFNFKTsKKyAg
ICB9CisKKyAgICBpZiAobURlcHRoQnVmZmVyRm9ybWF0ICE9IEdMX05PTkUpCisgICAgeworICAg
ICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFN1cmZhY2UoYmFja2J1ZmZl
cldpZHRoLCBiYWNrYnVmZmVySGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xfZDNkOTo6Q29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdCht
RGVwdGhCdWZmZXJGb3JtYXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRDNETVVMVElTQU1QTEVfTk9ORSwgMCwgRkFMU0UsICZtRGVwdGhTdGVu
Y2lsLCBOVUxMKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVz
dWx0ID09IEVfT1VUT0ZNRU1PUlkgfHwgcmVzdWx0ID09IEQzREVSUl9JTlZBTElEQ0FMTCk7CisK
KyAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBkZXB0aHN0ZW5jaWwgc3VyZmFjZSBm
b3IgbmV3IHN3YXAgY2hhaW46IDB4JTA4WCIsIHJlc3VsdCk7CisgICAgICAgICAgICByZWxlYXNl
KCk7CisKKyAgICAgICAgICAgIGlmIChkM2Q5Ojppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NUOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgbVdpZHRoID0gYmFja2J1ZmZlcldpZHRoOworICAgIG1IZWlnaHQgPSBiYWNr
YnVmZmVySGVpZ2h0OworICAgIG1Td2FwSW50ZXJ2YWwgPSBzd2FwSW50ZXJ2YWw7CisKKyAgICBy
ZXR1cm4gRUdMX1NVQ0NFU1M7Cit9CisKKy8vIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHZhbGlkYXRl
ZC9jbGFtcGVkIGJ5IGNhbGxlcgorRUdMaW50IFN3YXBDaGFpbjk6OnN3YXBSZWN0KEVHTGludCB4
LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KQoreworICAgIGlmICghbVN3
YXBDaGFpbikKKyAgICB7CisgICAgICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKKyAgICB9CisKKyAg
ICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisg
ICAgLy8gRGlzYWJsZSBhbGwgcGlwZWxpbmUgb3BlcmF0aW9ucworICAgIGRldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfWkVOQUJMRSwgRDNEWkJfRkFMU0UpOworICAgIGRldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfRklMTE1PREUsIEQzREZJTExfU09MSUQpOworICAgIGRldmljZS0+U2V0
UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFURVNURU5BQkxFLCBGQUxTRSk7CisgICAgZGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBGQUxTRSk7CisgICAgZGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DVUxMTU9ERSwgRDNEQ1VMTF9OT05FKTsKKyAgICBkZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxFTkFCTEUsIEZBTFNFKTsKKyAgICBkZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NMSVBQTEFORUVOQUJMRSwgMCk7CisgICAgZGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DT0xPUldSSVRFRU5BQkxFLCBEM0RDT0xPUldSSVRFRU5B
QkxFX0FMUEhBIHwgRDNEQ09MT1JXUklURUVOQUJMRV9CTFVFIHwgRDNEQ09MT1JXUklURUVOQUJM
RV9HUkVFTiB8IEQzRENPTE9SV1JJVEVFTkFCTEVfUkVEKTsKKyAgICBkZXZpY2UtPlNldFJlbmRl
clN0YXRlKEQzRFJTX1NSR0JXUklURUVOQUJMRSwgRkFMU0UpOworICAgIGRldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfU0NJU1NPUlRFU1RFTkFCTEUsIEZBTFNFKTsKKyAgICBkZXZpY2UtPlNl
dFBpeGVsU2hhZGVyKE5VTEwpOworICAgIGRldmljZS0+U2V0VmVydGV4U2hhZGVyKE5VTEwpOwor
CisgICAgZGV2aWNlLT5TZXRSZW5kZXJUYXJnZXQoMCwgbUJhY2tCdWZmZXIpOworICAgIGRldmlj
ZS0+U2V0RGVwdGhTdGVuY2lsU3VyZmFjZShOVUxMKTsKKworICAgIGRldmljZS0+U2V0VGV4dHVy
ZSgwLCBtT2Zmc2NyZWVuVGV4dHVyZSk7CisgICAgZGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0
ZSgwLCBEM0RUU1NfQ09MT1JPUCwgRDNEVE9QX1NFTEVDVEFSRzEpOworICAgIGRldmljZS0+U2V0
VGV4dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNTX0NPTE9SQVJHMSwgRDNEVEFfVEVYVFVSRSk7Cisg
ICAgZGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgxLCBEM0RUU1NfQ09MT1JPUCwgRDNEVE9Q
X0RJU0FCTEUpOworICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfTUFHRklM
VEVSLCBEM0RURVhGX1BPSU5UKTsKKyAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZSgwLCBEM0RT
QU1QX01JTkZJTFRFUiwgRDNEVEVYRl9QT0lOVCk7CisgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3Rh
dGUoMCwgRDNEU0FNUF9BRERSRVNTVSwgRDNEVEFERFJFU1NfQ0xBTVApOworICAgIGRldmljZS0+
U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfQUREUkVTU1YsIEQzRFRBRERSRVNTX0NMQU1QKTsK
KyAgICBkZXZpY2UtPlNldEZWRihEM0RGVkZfWFlaUkhXIHwgRDNERlZGX1RFWDEpOworCisgICAg
RDNEVklFV1BPUlQ5IHZpZXdwb3J0ID0gezAsIDAsIG1XaWR0aCwgbUhlaWdodCwgMC4wZiwgMS4w
Zn07CisgICAgZGV2aWNlLT5TZXRWaWV3cG9ydCgmdmlld3BvcnQpOworCisgICAgZmxvYXQgeDEg
PSB4IC0gMC41ZjsKKyAgICBmbG9hdCB5MSA9IChtSGVpZ2h0IC0geSAtIGhlaWdodCkgLSAwLjVm
OworICAgIGZsb2F0IHgyID0gKHggKyB3aWR0aCkgLSAwLjVmOworICAgIGZsb2F0IHkyID0gKG1I
ZWlnaHQgLSB5KSAtIDAuNWY7CisKKyAgICBmbG9hdCB1MSA9IHggLyBmbG9hdChtV2lkdGgpOwor
ICAgIGZsb2F0IHYxID0geSAvIGZsb2F0KG1IZWlnaHQpOworICAgIGZsb2F0IHUyID0gKHggKyB3
aWR0aCkgLyBmbG9hdChtV2lkdGgpOworICAgIGZsb2F0IHYyID0gKHkgKyBoZWlnaHQpIC8gZmxv
YXQobUhlaWdodCk7CisKKyAgICBmbG9hdCBxdWFkWzRdWzZdID0ge3t4MSwgeTEsIDAuMGYsIDEu
MGYsIHUxLCB2Mn0sCisgICAgICAgICAgICAgICAgICAgICAgICB7eDIsIHkxLCAwLjBmLCAxLjBm
LCB1MiwgdjJ9LAorICAgICAgICAgICAgICAgICAgICAgICAge3gyLCB5MiwgMC4wZiwgMS4wZiwg
dTIsIHYxfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHt4MSwgeTIsIDAuMGYsIDEuMGYsIHUx
LCB2MX19OyAgIC8vIHgsIHksIHosIHJodywgdSwgdgorCisgICAgbVJlbmRlcmVyLT5zdGFydFNj
ZW5lKCk7CisgICAgZGV2aWNlLT5EcmF3UHJpbWl0aXZlVVAoRDNEUFRfVFJJQU5HTEVGQU4sIDIs
IHF1YWQsIDYgKiBzaXplb2YoZmxvYXQpKTsKKyAgICBtUmVuZGVyZXItPmVuZFNjZW5lKCk7CisK
KyAgICBkZXZpY2UtPlNldFRleHR1cmUoMCwgTlVMTCk7CisKKyAgICBSRUNUIHJlY3QgPQorICAg
IHsKKyAgICAgICAgeCwgbUhlaWdodCAtIHkgLSBoZWlnaHQsCisgICAgICAgIHggKyB3aWR0aCwg
bUhlaWdodCAtIHkKKyAgICB9OworCisgICAgSFJFU1VMVCByZXN1bHQgPSBtU3dhcENoYWluLT5Q
cmVzZW50KCZyZWN0LCAmcmVjdCwgTlVMTCwgTlVMTCwgMCk7CisKKyAgICBtUmVuZGVyZXItPm1h
cmtBbGxTdGF0ZURpcnR5KCk7CisKKyAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJyb3IocmVz
dWx0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NUOworICAgIH0KKwor
ICAgIGlmIChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVf
T1VUT0ZNRU1PUlkgfHwgcmVzdWx0ID09IEQzREVSUl9EUklWRVJJTlRFUk5BTEVSUk9SKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEVHTF9CQURfQUxMT0M7CisgICAgfQorCisgICAgQVNTRVJUKFNV
Q0NFRURFRChyZXN1bHQpKTsKKworICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKK30KKworLy8gSW5j
cmVtZW50cyByZWZjb3VudCBvbiBzdXJmYWNlLgorLy8gY2FsbGVyIG11c3QgUmVsZWFzZSgpIHRo
ZSByZXR1cm5lZCBzdXJmYWNlCitJRGlyZWN0M0RTdXJmYWNlOSAqU3dhcENoYWluOTo6Z2V0UmVu
ZGVyVGFyZ2V0KCkKK3sKKyAgICBpZiAobVJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIG1S
ZW5kZXJUYXJnZXQtPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0
OworfQorCisvLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHN1cmZhY2UuCisvLyBjYWxsZXIgbXVz
dCBSZWxlYXNlKCkgdGhlIHJldHVybmVkIHN1cmZhY2UKK0lEaXJlY3QzRFN1cmZhY2U5ICpTd2Fw
Q2hhaW45OjpnZXREZXB0aFN0ZW5jaWwoKQoreworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAg
IHsKKyAgICAgICAgbURlcHRoU3RlbmNpbC0+QWRkUmVmKCk7CisgICAgfQorCisgICAgcmV0dXJu
IG1EZXB0aFN0ZW5jaWw7Cit9CisKKy8vIEluY3JlbWVudHMgcmVmY291bnQgb24gdGV4dHVyZS4K
Ky8vIGNhbGxlciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJuZWQgdGV4dHVyZQorSURpcmVjdDNE
VGV4dHVyZTkgKlN3YXBDaGFpbjk6OmdldE9mZnNjcmVlblRleHR1cmUoKQoreworICAgIGlmICht
T2Zmc2NyZWVuVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlLT5BZGRS
ZWYoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbU9mZnNjcmVlblRleHR1cmU7Cit9CisKK1N3YXBD
aGFpbjkgKlN3YXBDaGFpbjk6Om1ha2VTd2FwQ2hhaW45KFN3YXBDaGFpbiAqc3dhcENoYWluKQor
eworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpTd2FwQ2hhaW45Kiwgc3dhcENoYWlu
KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHJ4OjpTd2FwQ2hhaW45Kj4oc3dhcENoYWluKTsK
K30KKwordm9pZCBTd2FwQ2hhaW45OjpyZWNyZWF0ZSgpCit7CisgICAgaWYgKCFtU3dhcENoYWlu
KQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIElEaXJlY3QzRERldmljZTkg
KmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgaWYgKGRldmljZSA9PSBOVUxM
KQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEQzRFBSRVNFTlRfUEFSQU1F
VEVSUyBwcmVzZW50UGFyYW1ldGVyczsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IG1Td2FwQ2hhaW4t
PkdldFByZXNlbnRQYXJhbWV0ZXJzKCZwcmVzZW50UGFyYW1ldGVycyk7CisgICAgQVNTRVJUKFNV
Q0NFRURFRChyZXN1bHQpKTsKKworICAgIElEaXJlY3QzRFN3YXBDaGFpbjkqIG5ld1N3YXBDaGFp
biA9IE5VTEw7CisgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVBZGRpdGlvbmFsU3dhcENoYWlu
KCZwcmVzZW50UGFyYW1ldGVycywgJm5ld1N3YXBDaGFpbik7CisgICAgaWYgKEZBSUxFRChyZXN1
bHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1Td2FwQ2hhaW4tPlJl
bGVhc2UoKTsKKyAgICBtU3dhcENoYWluID0gbmV3U3dhcENoYWluOworCisgICAgbUJhY2tCdWZm
ZXItPlJlbGVhc2UoKTsKKyAgICByZXN1bHQgPSBtU3dhcENoYWluLT5HZXRCYWNrQnVmZmVyKDAs
IEQzREJBQ0tCVUZGRVJfVFlQRV9NT05PLCAmbUJhY2tCdWZmZXIpOworICAgIEFTU0VSVChTVUND
RUVERUQocmVzdWx0KSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9Td2FwQ2hhaW45LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyBTd2FwQ2hhaW45Lmg6IERlZmluZXMgYSBiYWNrLWVuZCBzcGVjaWZpYyBjbGFzcyBm
b3IgdGhlIEQzRDkgc3dhcCBjaGFpbi4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfU1dB
UENIQUlOOV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJfU1dBUENIQUlOOV9IXworCisj
aW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvU3dhcENoYWluLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI5OworCitj
bGFzcyBTd2FwQ2hhaW45IDogcHVibGljIFN3YXBDaGFpbgoreworICBwdWJsaWM6CisgICAgU3dh
cENoYWluOShSZW5kZXJlcjkgKnJlbmRlcmVyLCBIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFu
ZGxlLAorICAgICAgICAgICAgICAgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0
aEJ1ZmZlckZvcm1hdCk7CisgICAgdmlydHVhbCB+U3dhcENoYWluOSgpOworCisgICAgRUdMaW50
IHJlc2l6ZShFR0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1ZmZlckhlaWdodCk7
CisgICAgdmlydHVhbCBFR0xpbnQgcmVzZXQoRUdMaW50IGJhY2tidWZmZXJXaWR0aCwgRUdMaW50
IGJhY2tidWZmZXJIZWlnaHQsIEVHTGludCBzd2FwSW50ZXJ2YWwpOworICAgIHZpcnR1YWwgRUdM
aW50IHN3YXBSZWN0KEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVp
Z2h0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGUoKTsKKworICAgIHZpcnR1YWwgSURpcmVj
dDNEU3VyZmFjZTkgKmdldFJlbmRlclRhcmdldCgpOworICAgIHZpcnR1YWwgSURpcmVjdDNEU3Vy
ZmFjZTkgKmdldERlcHRoU3RlbmNpbCgpOworICAgIHZpcnR1YWwgSURpcmVjdDNEVGV4dHVyZTkg
KmdldE9mZnNjcmVlblRleHR1cmUoKTsKKworICAgIHN0YXRpYyBTd2FwQ2hhaW45ICptYWtlU3dh
cENoYWluOShTd2FwQ2hhaW4gKnN3YXBDaGFpbik7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oU3dhcENoYWluOSk7CisKKyAgICB2b2lkIHJlbGVhc2UoKTsKKwor
ICAgIFJlbmRlcmVyOSAqbVJlbmRlcmVyOworICAgIEVHTGludCBtSGVpZ2h0OworICAgIEVHTGlu
dCBtV2lkdGg7CisgICAgRUdMaW50IG1Td2FwSW50ZXJ2YWw7CisKKyAgICBJRGlyZWN0M0RTd2Fw
Q2hhaW45ICptU3dhcENoYWluOworICAgIElEaXJlY3QzRFN1cmZhY2U5ICptQmFja0J1ZmZlcjsK
KyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqbVJlbmRlclRhcmdldDsKKyAgICBJRGlyZWN0M0RTdXJm
YWNlOSAqbURlcHRoU3RlbmNpbDsKKyAgICBJRGlyZWN0M0RUZXh0dXJlOSogbU9mZnNjcmVlblRl
eHR1cmU7Cit9OworCit9CisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1NXQVBDSEFJTjlf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
U3dhcENoYWluMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluMTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzY3IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQu
aCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN3YXBDaGFpbjExLmNwcDogSW1wbGVtZW50cyBh
IGJhY2stZW5kIHNwZWNpZmljIGNsYXNzIGZvciB0aGUgRDNEMTEgc3dhcCBjaGFpbi4KKworI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5oIgorCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvUmVuZGVyZXIxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFk
ZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdoMTF2cy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5k
ZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTExcHMuaCIKKworbmFtZXNwYWNl
IHJ4Cit7CisKK1N3YXBDaGFpbjExOjpTd2FwQ2hhaW4xMShSZW5kZXJlcjExICpyZW5kZXJlciwg
SFdORCB3aW5kb3csIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KQorICAg
IDogbVJlbmRlcmVyKHJlbmRlcmVyKSwgU3dhcENoYWluKHdpbmRvdywgc2hhcmVIYW5kbGUsIGJh
Y2tCdWZmZXJGb3JtYXQsIGRlcHRoQnVmZmVyRm9ybWF0KQoreworICAgIG1Td2FwQ2hhaW4gPSBO
VUxMOworICAgIG1CYWNrQnVmZmVyVGV4dHVyZSA9IE5VTEw7CisgICAgbUJhY2tCdWZmZXJSVFZp
ZXcgPSBOVUxMOworICAgIG1PZmZzY3JlZW5UZXh0dXJlID0gTlVMTDsKKyAgICBtT2Zmc2NyZWVu
UlRWaWV3ID0gTlVMTDsKKyAgICBtT2Zmc2NyZWVuU1JWaWV3ID0gTlVMTDsKKyAgICBtRGVwdGhT
dGVuY2lsVGV4dHVyZSA9IE5VTEw7CisgICAgbURlcHRoU3RlbmNpbERTVmlldyA9IE5VTEw7Cisg
ICAgbVF1YWRWQiA9IE5VTEw7CisgICAgbVBhc3NUaHJvdWdoU2FtcGxlciA9IE5VTEw7CisgICAg
bVBhc3NUaHJvdWdoSUwgPSBOVUxMOworICAgIG1QYXNzVGhyb3VnaFZTID0gTlVMTDsKKyAgICBt
UGFzc1Rocm91Z2hQUyA9IE5VTEw7CisgICAgbVdpZHRoID0gLTE7CisgICAgbUhlaWdodCA9IC0x
OworICAgIG1Td2FwSW50ZXJ2YWwgPSAwOworICAgIG1BcHBDcmVhdGVkU2hhcmVIYW5kbGUgPSBt
U2hhcmVIYW5kbGUgIT0gTlVMTDsKKyAgICBtUGFzc1Rocm91Z2hSZXNvdXJjZXNJbml0ID0gZmFs
c2U7Cit9CisKK1N3YXBDaGFpbjExOjp+U3dhcENoYWluMTEoKQoreworICAgIHJlbGVhc2UoKTsK
K30KKwordm9pZCBTd2FwQ2hhaW4xMTo6cmVsZWFzZSgpCit7CisgICAgaWYgKG1Td2FwQ2hhaW4p
CisgICAgeworICAgICAgICBtU3dhcENoYWluLT5SZWxlYXNlKCk7CisgICAgICAgIG1Td2FwQ2hh
aW4gPSBOVUxMOworICAgIH0KKworICAgIGlmIChtQmFja0J1ZmZlclRleHR1cmUpCisgICAgewor
ICAgICAgICBtQmFja0J1ZmZlclRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbUJhY2tCdWZm
ZXJUZXh0dXJlID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobUJhY2tCdWZmZXJSVFZpZXcpCisg
ICAgeworICAgICAgICBtQmFja0J1ZmZlclJUVmlldy0+UmVsZWFzZSgpOworICAgICAgICBtQmFj
a0J1ZmZlclJUVmlldyA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1PZmZzY3JlZW5UZXh0dXJl
KQorICAgIHsKKyAgICAgICAgbU9mZnNjcmVlblRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAg
bU9mZnNjcmVlblRleHR1cmUgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtT2Zmc2NyZWVuUlRW
aWV3KQorICAgIHsKKyAgICAgICAgbU9mZnNjcmVlblJUVmlldy0+UmVsZWFzZSgpOworICAgICAg
ICBtT2Zmc2NyZWVuUlRWaWV3ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobU9mZnNjcmVlblNS
VmlldykKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5TUlZpZXctPlJlbGVhc2UoKTsKKyAgICAg
ICAgbU9mZnNjcmVlblNSVmlldyA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1EZXB0aFN0ZW5j
aWxUZXh0dXJlKQorICAgIHsKKyAgICAgICAgbURlcHRoU3RlbmNpbFRleHR1cmUtPlJlbGVhc2Uo
KTsKKyAgICAgICAgbURlcHRoU3RlbmNpbFRleHR1cmUgPSBOVUxMOworICAgIH0KKworICAgIGlm
IChtRGVwdGhTdGVuY2lsRFNWaWV3KQorICAgIHsKKyAgICAgICAgbURlcHRoU3RlbmNpbERTVmll
dy0+UmVsZWFzZSgpOworICAgICAgICBtRGVwdGhTdGVuY2lsRFNWaWV3ID0gTlVMTDsKKyAgICB9
CisKKyAgICBpZiAobVF1YWRWQikKKyAgICB7CisgICAgICAgIG1RdWFkVkItPlJlbGVhc2UoKTsK
KyAgICAgICAgbVF1YWRWQiA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1QYXNzVGhyb3VnaFNh
bXBsZXIpCisgICAgeworICAgICAgICBtUGFzc1Rocm91Z2hTYW1wbGVyLT5SZWxlYXNlKCk7Cisg
ICAgICAgIG1QYXNzVGhyb3VnaFNhbXBsZXIgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtUGFz
c1Rocm91Z2hJTCkKKyAgICB7CisgICAgICAgIG1QYXNzVGhyb3VnaElMLT5SZWxlYXNlKCk7Cisg
ICAgICAgIG1QYXNzVGhyb3VnaElMID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobVBhc3NUaHJv
dWdoVlMpCisgICAgeworICAgICAgICBtUGFzc1Rocm91Z2hWUy0+UmVsZWFzZSgpOworICAgICAg
ICBtUGFzc1Rocm91Z2hWUyA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1QYXNzVGhyb3VnaFBT
KQorICAgIHsKKyAgICAgICAgbVBhc3NUaHJvdWdoUFMtPlJlbGVhc2UoKTsKKyAgICAgICAgbVBh
c3NUaHJvdWdoUFMgPSBOVUxMOworICAgIH0KKworICAgIGlmICghbUFwcENyZWF0ZWRTaGFyZUhh
bmRsZSkKKyAgICB7CisgICAgICAgIG1TaGFyZUhhbmRsZSA9IE5VTEw7CisgICAgfQorfQorCit2
b2lkIFN3YXBDaGFpbjExOjpyZWxlYXNlT2Zmc2NyZWVuVGV4dHVyZSgpCit7CisgICAgaWYgKG1P
ZmZzY3JlZW5UZXh0dXJlKQorICAgIHsKKyAgICAgICAgbU9mZnNjcmVlblRleHR1cmUtPlJlbGVh
c2UoKTsKKyAgICAgICAgbU9mZnNjcmVlblRleHR1cmUgPSBOVUxMOworICAgIH0KKworICAgIGlm
IChtT2Zmc2NyZWVuUlRWaWV3KQorICAgIHsKKyAgICAgICAgbU9mZnNjcmVlblJUVmlldy0+UmVs
ZWFzZSgpOworICAgICAgICBtT2Zmc2NyZWVuUlRWaWV3ID0gTlVMTDsKKyAgICB9CisKKyAgICBp
ZiAobU9mZnNjcmVlblNSVmlldykKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5TUlZpZXctPlJl
bGVhc2UoKTsKKyAgICAgICAgbU9mZnNjcmVlblNSVmlldyA9IE5VTEw7CisgICAgfQorCisgICAg
aWYgKG1EZXB0aFN0ZW5jaWxUZXh0dXJlKQorICAgIHsKKyAgICAgICAgbURlcHRoU3RlbmNpbFRl
eHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbURlcHRoU3RlbmNpbFRleHR1cmUgPSBOVUxMOwor
ICAgIH0KKworICAgIGlmIChtRGVwdGhTdGVuY2lsRFNWaWV3KQorICAgIHsKKyAgICAgICAgbURl
cHRoU3RlbmNpbERTVmlldy0+UmVsZWFzZSgpOworICAgICAgICBtRGVwdGhTdGVuY2lsRFNWaWV3
ID0gTlVMTDsKKyAgICB9Cit9CisKK0VHTGludCBTd2FwQ2hhaW4xMTo6cmVzZXRPZmZzY3JlZW5U
ZXh0dXJlKGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmVySGVpZ2h0KQoreworICAg
IElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIEFT
U0VSVChkZXZpY2UgIT0gTlVMTCk7CisKKyAgICAvLyBEM0QxMSBkb2VzIG5vdCBhbGxvdyB6ZXJv
IHNpemUgdGV4dHVyZXMKKyAgICBBU1NFUlQoYmFja2J1ZmZlcldpZHRoID49IDEpOworICAgIEFT
U0VSVChiYWNrYnVmZmVySGVpZ2h0ID49IDEpOworCisgICAgLy8gUHJlc2VydmUgdGhlIHJlbmRl
ciB0YXJnZXQgY29udGVudAorICAgIElEM0QxMVRleHR1cmUyRCAqcHJldmlvdXNPZmZzY3JlZW5U
ZXh0dXJlID0gbU9mZnNjcmVlblRleHR1cmU7CisgICAgaWYgKHByZXZpb3VzT2Zmc2NyZWVuVGV4
dHVyZSkKKyAgICB7CisgICAgICAgIHByZXZpb3VzT2Zmc2NyZWVuVGV4dHVyZS0+QWRkUmVmKCk7
CisgICAgfQorICAgIGNvbnN0IGludCBwcmV2aW91c1dpZHRoID0gbVdpZHRoOworICAgIGNvbnN0
IGludCBwcmV2aW91c0hlaWdodCA9IG1IZWlnaHQ7CisKKyAgICByZWxlYXNlT2Zmc2NyZWVuVGV4
dHVyZSgpOworCisgICAgLy8gSWYgdGhlIGFwcCBwYXNzZWQgaW4gYSBzaGFyZSBoYW5kbGUsIG9w
ZW4gdGhlIHJlc291cmNlCisgICAgLy8gU2VlIEVHTF9BTkdMRV9kM2Rfc2hhcmVfaGFuZGxlX2Ns
aWVudF9idWZmZXIKKyAgICBpZiAobUFwcENyZWF0ZWRTaGFyZUhhbmRsZSkKKyAgICB7CisgICAg
ICAgIElEM0QxMVJlc291cmNlICp0ZW1wUmVzb3VyY2UxMTsKKyAgICAgICAgSFJFU1VMVCByZXN1
bHQgPSBkZXZpY2UtPk9wZW5TaGFyZWRSZXNvdXJjZShtU2hhcmVIYW5kbGUsIF9fdXVpZG9mKElE
M0QxMVJlc291cmNlKSwgKHZvaWQqKikmdGVtcFJlc291cmNlMTEpOworCisgICAgICAgIGlmIChG
QUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gb3Bl
biB0aGUgc3dhcCBjaGFpbiBwYnVmZmVyIHNoYXJlIGhhbmRsZTogJTA4bFgiLCByZXN1bHQpOwor
ICAgICAgICAgICAgcmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIEVHTF9CQURfUEFSQU1F
VEVSOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gdGVtcFJlc291cmNlMTEtPlF1ZXJ5
SW50ZXJmYWNlKF9fdXVpZG9mKElEM0QxMVRleHR1cmUyRCksICh2b2lkKiopJm1PZmZzY3JlZW5U
ZXh0dXJlKTsKKyAgICAgICAgdGVtcFJlc291cmNlMTEtPlJlbGVhc2UoKTsKKworICAgICAgICBp
ZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRv
IHF1ZXJ5IHRleHR1cmUyZCBpbnRlcmZhY2UgaW4gcGJ1ZmZlciBzaGFyZSBoYW5kbGU6ICUwOGxY
IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBF
R0xfQkFEX1BBUkFNRVRFUjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFZhbGlkYXRlIG9mZnNj
cmVlbiB0ZXh0dXJlIHBhcmFtZXRlcnMKKyAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0Mgb2Zm
c2NyZWVuVGV4dHVyZURlc2MgPSB7MH07CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlLT5HZXRE
ZXNjKCZvZmZzY3JlZW5UZXh0dXJlRGVzYyk7CisKKyAgICAgICAgaWYgKG9mZnNjcmVlblRleHR1
cmVEZXNjLldpZHRoICE9IChVSU5UKWJhY2tidWZmZXJXaWR0aAorICAgICAgICAgICAgfHwgb2Zm
c2NyZWVuVGV4dHVyZURlc2MuSGVpZ2h0ICE9IChVSU5UKWJhY2tidWZmZXJIZWlnaHQKKyAgICAg
ICAgICAgIHx8IG9mZnNjcmVlblRleHR1cmVEZXNjLkZvcm1hdCAhPSBnbF9kM2QxMTo6Q29udmVy
dFJlbmRlcmJ1ZmZlckZvcm1hdChtQmFja0J1ZmZlckZvcm1hdCkKKyAgICAgICAgICAgIHx8IG9m
ZnNjcmVlblRleHR1cmVEZXNjLk1pcExldmVscyAhPSAxCisgICAgICAgICAgICB8fCBvZmZzY3Jl
ZW5UZXh0dXJlRGVzYy5BcnJheVNpemUgIT0gMSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJS
KCJJbnZhbGlkIHRleHR1cmUgcGFyYW1ldGVycyBpbiB0aGUgc2hhcmVkIG9mZnNjcmVlbiB0ZXh0
dXJlIHBidWZmZXIiKTsKKyAgICAgICAgICAgIHJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVy
biBFR0xfQkFEX1BBUkFNRVRFUjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBjb25zdCBib29sIHVzZVNoYXJlZFJlc291cmNlID0gIW1XaW5kb3cgJiYgbVJlbmRl
cmVyLT5nZXRTaGFyZUhhbmRsZVN1cHBvcnQoKTsKKworICAgICAgICBEM0QxMV9URVhUVVJFMkRf
REVTQyBvZmZzY3JlZW5UZXh0dXJlRGVzYyA9IHswfTsKKyAgICAgICAgb2Zmc2NyZWVuVGV4dHVy
ZURlc2MuV2lkdGggPSBiYWNrYnVmZmVyV2lkdGg7CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVE
ZXNjLkhlaWdodCA9IGJhY2tidWZmZXJIZWlnaHQ7CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVE
ZXNjLkZvcm1hdCA9IGdsX2QzZDExOjpDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KG1CYWNrQnVm
ZmVyRm9ybWF0KTsKKyAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuTWlwTGV2ZWxzID0gMTsK
KyAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuQXJyYXlTaXplID0gMTsKKyAgICAgICAgb2Zm
c2NyZWVuVGV4dHVyZURlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7CisgICAgICAgIG9mZnNjcmVl
blRleHR1cmVEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIG9mZnNjcmVlblRl
eHR1cmVEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKKyAgICAgICAgb2Zmc2NyZWVu
VGV4dHVyZURlc2MuQmluZEZsYWdzID0gRDNEMTFfQklORF9SRU5ERVJfVEFSR0VUIHwgRDNEMTFf
QklORF9TSEFERVJfUkVTT1VSQ0U7CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLkNQVUFj
Y2Vzc0ZsYWdzID0gMDsKKyAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuTWlzY0ZsYWdzID0g
dXNlU2hhcmVkUmVzb3VyY2UgPyBEM0QxMV9SRVNPVVJDRV9NSVNDX1NIQVJFRCA6IDA7CisKKyAg
ICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmb2Zmc2NyZWVu
VGV4dHVyZURlc2MsIE5VTEwsICZtT2Zmc2NyZWVuVGV4dHVyZSk7CisKKyAgICAgICAgaWYgKEZB
SUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVh
dGUgb2Zmc2NyZWVuIHRleHR1cmU6ICUwOGxYIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlbGVh
c2UoKTsKKworICAgICAgICAgICAgaWYgKGQzZDExOjppc0RldmljZUxvc3RFcnJvcihyZXN1bHQp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NU
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtT2Zmc2NyZWVuVGV4dHVyZSwgIk9mZnNj
cmVlbiB0ZXh0dXJlIik7CisKKyAgICAgICAgLy8gRUdMX0FOR0xFX3N1cmZhY2VfZDNkX3RleHR1
cmVfMmRfc2hhcmVfaGFuZGxlIHJlcXVpcmVzIHRoYXQgd2Ugc3RvcmUgYSBzaGFyZSBoYW5kbGUg
Zm9yIHRoZSBjbGllbnQKKyAgICAgICAgaWYgKHVzZVNoYXJlZFJlc291cmNlKQorICAgICAgICB7
CisgICAgICAgICAgICBJRFhHSVJlc291cmNlICpvZmZzY3JlZW5UZXh0dXJlUmVzb3VyY2UgPSBO
VUxMOworICAgICAgICAgICAgcmVzdWx0ID0gbU9mZnNjcmVlblRleHR1cmUtPlF1ZXJ5SW50ZXJm
YWNlKF9fdXVpZG9mKElEWEdJUmVzb3VyY2UpLCAodm9pZCoqKSZvZmZzY3JlZW5UZXh0dXJlUmVz
b3VyY2UpOworCisgICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gbm8gc2hhcmUgaGFuZGxlIG9u
IGZhaWx1cmUKKyAgICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBxdWVyeSBvZmZzY3JlZW4gdGV4dHVyZSBy
ZXNvdXJjZTogJTA4bFgiLCByZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9mZnNjcmVlblRleHR1
cmVSZXNvdXJjZS0+R2V0U2hhcmVkSGFuZGxlKCZtU2hhcmVIYW5kbGUpOworCisgICAgICAgICAg
ICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgbVNoYXJlSGFuZGxlID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgRVJSKCJD
b3VsZCBub3QgZ2V0IG9mZnNjcmVlbiB0ZXh0dXJlIHNoYXJlZCBoYW5kbGU6ICUwOGxYIiwgcmVz
dWx0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgICAgIAorICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJn
ZXRWaWV3KG1PZmZzY3JlZW5UZXh0dXJlLCBOVUxMLCAmbU9mZnNjcmVlblJUVmlldyk7CisKKyAg
ICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobU9m
ZnNjcmVlblJUVmlldywgIk9mZnNjcmVlbiByZW5kZXIgdGFyZ2V0Iik7CisKKyAgICByZXN1bHQg
PSBkZXZpY2UtPkNyZWF0ZVNoYWRlclJlc291cmNlVmlldyhtT2Zmc2NyZWVuVGV4dHVyZSwgTlVM
TCwgJm1PZmZzY3JlZW5TUlZpZXcpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7Cisg
ICAgZDNkMTE6OlNldERlYnVnTmFtZShtT2Zmc2NyZWVuU1JWaWV3LCAiT2Zmc2NyZWVuIHNoYWRl
ciByZXNvdXJjZSIpOworCisgICAgaWYgKG1EZXB0aEJ1ZmZlckZvcm1hdCAhPSBHTF9OT05FKQor
ICAgIHsKKyAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVwdGhTdGVuY2lsRGVzYyA9IHsw
fTsKKyAgICAgICAgZGVwdGhTdGVuY2lsRGVzYy5XaWR0aCA9IGJhY2tidWZmZXJXaWR0aDsKKyAg
ICAgICAgZGVwdGhTdGVuY2lsRGVzYy5IZWlnaHQgPSBiYWNrYnVmZmVySGVpZ2h0OworICAgICAg
ICBkZXB0aFN0ZW5jaWxEZXNjLkZvcm1hdCA9IGdsX2QzZDExOjpDb252ZXJ0UmVuZGVyYnVmZmVy
Rm9ybWF0KG1EZXB0aEJ1ZmZlckZvcm1hdCk7CisgICAgICAgIGRlcHRoU3RlbmNpbERlc2MuTWlw
TGV2ZWxzID0gMTsKKyAgICAgICAgZGVwdGhTdGVuY2lsRGVzYy5BcnJheVNpemUgPSAxOworICAg
ICAgICBkZXB0aFN0ZW5jaWxEZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICBkZXB0
aFN0ZW5jaWxEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIGRlcHRoU3RlbmNp
bERlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOworICAgICAgICBkZXB0aFN0ZW5jaWxE
ZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfREVQVEhfU1RFTkNJTDsKKyAgICAgICAgZGVwdGhT
dGVuY2lsRGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7CisgICAgICAgIGRlcHRoU3RlbmNpbERlc2Mu
TWlzY0ZsYWdzID0gMDsKKworICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUy
RCgmZGVwdGhTdGVuY2lsRGVzYywgTlVMTCwgJm1EZXB0aFN0ZW5jaWxUZXh0dXJlKTsKKyAgICAg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNvdWxk
IG5vdCBjcmVhdGUgZGVwdGhzdGVuY2lsIHN1cmZhY2UgZm9yIG5ldyBzd2FwIGNoYWluOiAweCUw
OFgiLCByZXN1bHQpOworICAgICAgICAgICAgcmVsZWFzZSgpOworCisgICAgICAgICAgICBpZiAo
ZDNkMTE6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEVHTF9DT05URVhUX0xPU1Q7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9CQURf
QUxMT0M7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZDNkMTE6OlNldERlYnVn
TmFtZShtRGVwdGhTdGVuY2lsVGV4dHVyZSwgIkRlcHRoIHN0ZW5jaWwgdGV4dHVyZSIpOworCisg
ICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlRGVwdGhTdGVuY2lsVmlldyhtRGVwdGhTdGVu
Y2lsVGV4dHVyZSwgTlVMTCwgJm1EZXB0aFN0ZW5jaWxEU1ZpZXcpOworICAgICAgICBBU1NFUlQo
U1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1EZXB0aFN0
ZW5jaWxEU1ZpZXcsICJEZXB0aCBzdGVuY2lsIHZpZXciKTsKKyAgICB9CisKKyAgICBtV2lkdGgg
PSBiYWNrYnVmZmVyV2lkdGg7CisgICAgbUhlaWdodCA9IGJhY2tidWZmZXJIZWlnaHQ7CisKKyAg
ICBpZiAocHJldmlvdXNPZmZzY3JlZW5UZXh0dXJlICE9IE5VTEwpCisgICAgeworICAgICAgICBE
M0QxMV9CT1ggc291cmNlQm94ID0gezB9OworICAgICAgICBzb3VyY2VCb3gubGVmdCA9IDA7Cisg
ICAgICAgIHNvdXJjZUJveC5yaWdodCA9IHN0ZDo6bWluKHByZXZpb3VzV2lkdGgsIG1XaWR0aCk7
CisgICAgICAgIHNvdXJjZUJveC50b3AgPSBzdGQ6Om1heChwcmV2aW91c0hlaWdodCAtIG1IZWln
aHQsIDApOworICAgICAgICBzb3VyY2VCb3guYm90dG9tID0gcHJldmlvdXNIZWlnaHQ7CisgICAg
ICAgIHNvdXJjZUJveC5mcm9udCA9IDA7CisgICAgICAgIHNvdXJjZUJveC5iYWNrID0gMTsKKwor
ICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVyLT5n
ZXREZXZpY2VDb250ZXh0KCk7CisgICAgICAgIGNvbnN0IGludCB5b2Zmc2V0ID0gc3RkOjptYXgo
bUhlaWdodCAtIHByZXZpb3VzSGVpZ2h0LCAwKTsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+Q29w
eVN1YnJlc291cmNlUmVnaW9uKG1PZmZzY3JlZW5UZXh0dXJlLCAwLCAwLCB5b2Zmc2V0LCAwLCBw
cmV2aW91c09mZnNjcmVlblRleHR1cmUsIDAsICZzb3VyY2VCb3gpOworCisgICAgICAgIHByZXZp
b3VzT2Zmc2NyZWVuVGV4dHVyZS0+UmVsZWFzZSgpOworCisgICAgICAgIGlmIChtU3dhcENoYWlu
KQorICAgICAgICB7CisgICAgICAgICAgICBzd2FwUmVjdCgwLCAwLCBtV2lkdGgsIG1IZWlnaHQp
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEVHTF9TVUNDRVNTOworfQorCitFR0xp
bnQgU3dhcENoYWluMTE6OnJlc2l6ZShFR0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFj
a2J1ZmZlckhlaWdodCkKK3sKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+
Z2V0RGV2aWNlKCk7CisKKyAgICBpZiAoZGV2aWNlID09IE5VTEwpCisgICAgeworICAgICAgICBy
ZXR1cm4gRUdMX0JBRF9BQ0NFU1M7CisgICAgfQorCisgICAgLy8gQ2FuIG9ubHkgY2FsbCByZXNp
emUgaWYgd2UgaGF2ZSBhbHJlYWR5IGNyZWF0ZWQgb3VyIHN3YXAgYnVmZmVyIGFuZCByZXNvdXJj
ZXMKKyAgICBBU1NFUlQobVN3YXBDaGFpbiAmJiBtQmFja0J1ZmZlclRleHR1cmUgJiYgbUJhY2tC
dWZmZXJSVFZpZXcpOworCisgICAgaWYgKG1CYWNrQnVmZmVyVGV4dHVyZSkKKyAgICB7CisgICAg
ICAgIG1CYWNrQnVmZmVyVGV4dHVyZS0+UmVsZWFzZSgpOworICAgICAgICBtQmFja0J1ZmZlclRl
eHR1cmUgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtQmFja0J1ZmZlclJUVmlldykKKyAgICB7
CisgICAgICAgIG1CYWNrQnVmZmVyUlRWaWV3LT5SZWxlYXNlKCk7CisgICAgICAgIG1CYWNrQnVm
ZmVyUlRWaWV3ID0gTlVMTDsKKyAgICB9CisKKyAgICAvLyBSZXNpemUgc3dhcCBjaGFpbgorICAg
IERYR0lfRk9STUFUIGJhY2tidWZmZXJEWEdJRm9ybWF0ID0gZ2xfZDNkMTE6OkNvbnZlcnRSZW5k
ZXJidWZmZXJGb3JtYXQobUJhY2tCdWZmZXJGb3JtYXQpOworICAgIEhSRVNVTFQgcmVzdWx0ID0g
bVN3YXBDaGFpbi0+UmVzaXplQnVmZmVycygyLCBiYWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJI
ZWlnaHQsIGJhY2tidWZmZXJEWEdJRm9ybWF0LCAwKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKKyAgICB7CisgICAgICAgIEVSUigiRXJyb3IgcmVzaXppbmcgc3dhcCBjaGFpbiBidWZmZXJz
OiAweCUwOFgiLCByZXN1bHQpOworICAgICAgICByZWxlYXNlKCk7CisKKyAgICAgICAgaWYgKGQz
ZDExOjppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gRUdMX0NPTlRFWFRfTE9TVDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICB9CisgICAgfQor
CisgICAgcmVzdWx0ID0gbVN3YXBDaGFpbi0+R2V0QnVmZmVyKDAsIF9fdXVpZG9mKElEM0QxMVRl
eHR1cmUyRCksIChMUFZPSUQqKSZtQmFja0J1ZmZlclRleHR1cmUpOworICAgIEFTU0VSVChTVUND
RUVERUQocmVzdWx0KSk7CisgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgIHsKKyAgICAg
ICAgZDNkMTE6OlNldERlYnVnTmFtZShtQmFja0J1ZmZlclRleHR1cmUsICJCYWNrIGJ1ZmZlciB0
ZXh0dXJlIik7CisgICAgfQorCisgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJn
ZXRWaWV3KG1CYWNrQnVmZmVyVGV4dHVyZSwgTlVMTCwgJm1CYWNrQnVmZmVyUlRWaWV3KTsKKyAg
ICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkK
KyAgICB7CisgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUJhY2tCdWZmZXJSVFZpZXcsICJC
YWNrIGJ1ZmZlciByZW5kZXIgdGFyZ2V0Iik7CisgICAgfQorCisgICAgcmV0dXJuIHJlc2V0T2Zm
c2NyZWVuVGV4dHVyZShiYWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJIZWlnaHQpOworfQorCitF
R0xpbnQgU3dhcENoYWluMTE6OnJlc2V0KGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVm
ZmVySGVpZ2h0LCBFR0xpbnQgc3dhcEludGVydmFsKQoreworICAgIElEM0QxMURldmljZSAqZGV2
aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIGlmIChkZXZpY2UgPT0gTlVMTCkK
KyAgICB7CisgICAgICAgIHJldHVybiBFR0xfQkFEX0FDQ0VTUzsKKyAgICB9CisKKyAgICAvLyBS
ZWxlYXNlIHNwZWNpZmljIHJlc291cmNlcyB0byBmcmVlIHVwIG1lbW9yeSBmb3IgdGhlIG5ldyBy
ZW5kZXIgdGFyZ2V0LCB3aGlsZSB0aGUKKyAgICAvLyBvbGQgcmVuZGVyIHRhcmdldCBzdGlsbCBl
eGlzdHMgZm9yIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZpbmcgaXRzIGNvbnRlbnRzLgorICAgIGlm
IChtU3dhcENoYWluKQorICAgIHsKKyAgICAgICAgbVN3YXBDaGFpbi0+UmVsZWFzZSgpOworICAg
ICAgICBtU3dhcENoYWluID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobUJhY2tCdWZmZXJUZXh0
dXJlKQorICAgIHsKKyAgICAgICAgbUJhY2tCdWZmZXJUZXh0dXJlLT5SZWxlYXNlKCk7CisgICAg
ICAgIG1CYWNrQnVmZmVyVGV4dHVyZSA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1CYWNrQnVm
ZmVyUlRWaWV3KQorICAgIHsKKyAgICAgICAgbUJhY2tCdWZmZXJSVFZpZXctPlJlbGVhc2UoKTsK
KyAgICAgICAgbUJhY2tCdWZmZXJSVFZpZXcgPSBOVUxMOworICAgIH0KKworICAgIG1Td2FwSW50
ZXJ2YWwgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHN3YXBJbnRlcnZhbCk7CisgICAgaWYg
KG1Td2FwSW50ZXJ2YWwgPiA0KQorICAgIHsKKyAgICAgICAgLy8gSURYR0lTd2FwQ2hhaW46OlBy
ZXNlbnQgZG9jdW1lbnRhdGlvbiBzdGF0ZXMgdGhhdCB2YWxpZCBzeW5jIGludGVydmFscyBhcmUg
aW4gdGhlIFswLDRdIHJhbmdlCisgICAgICAgIHJldHVybiBFR0xfQkFEX1BBUkFNRVRFUjsKKyAg
ICB9CisKKyAgICAvLyBFR0wgYWxsb3dzIGNyZWF0aW5nIGEgc3VyZmFjZSB3aXRoIDB4MCBkaW1l
bnNpb24sIGhvd2V2ZXIsIERYR0kgZG9lcyBub3QgbGlrZSAweDAgc3dhcGNoYWlucworICAgIGlm
IChiYWNrYnVmZmVyV2lkdGggPCAxIHx8IGJhY2tidWZmZXJIZWlnaHQgPCAxKQorICAgIHsKKyAg
ICAgICAgcmVsZWFzZU9mZnNjcmVlblRleHR1cmUoKTsKKyAgICAgICAgcmV0dXJuIEVHTF9TVUND
RVNTOworICAgIH0KKworICAgIGlmIChtV2luZG93KQorICAgIHsKKyAgICAgICAgLy8gV2UgY2Fu
bm90IGNyZWF0ZSBhIHN3YXAgY2hhaW4gZm9yIGFuIEhXTkQgdGhhdCBpcyBvd25lZCBieSBhIGRp
ZmZlcmVudCBwcm9jZXNzCisgICAgICAgIERXT1JEIGN1cnJlbnRQcm9jZXNzSWQgPSBHZXRDdXJy
ZW50UHJvY2Vzc0lkKCk7CisgICAgICAgIERXT1JEIHduZFByb2Nlc3NJZDsKKyAgICAgICAgR2V0
V2luZG93VGhyZWFkUHJvY2Vzc0lkKG1XaW5kb3csICZ3bmRQcm9jZXNzSWQpOworCisgICAgICAg
IGlmIChjdXJyZW50UHJvY2Vzc0lkICE9IHduZFByb2Nlc3NJZCkKKyAgICAgICAgeworICAgICAg
ICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIHN3YXAgY2hhaW4sIHdpbmRvdyBvd25lZCBieSBk
aWZmZXJlbnQgcHJvY2VzcyIpOworICAgICAgICAgICAgcmVsZWFzZSgpOworICAgICAgICAgICAg
cmV0dXJuIEVHTF9CQURfTkFUSVZFX1dJTkRPVzsKKyAgICAgICAgfQorCisgICAgICAgIElEWEdJ
RmFjdG9yeSAqZmFjdG9yeSA9IG1SZW5kZXJlci0+Z2V0RHhnaUZhY3RvcnkoKTsKKworICAgICAg
ICBEWEdJX1NXQVBfQ0hBSU5fREVTQyBzd2FwQ2hhaW5EZXNjID0gezB9OworICAgICAgICBzd2Fw
Q2hhaW5EZXNjLkJ1ZmZlckNvdW50ID0gMjsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJE
ZXNjLkZvcm1hdCA9IGdsX2QzZDExOjpDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KG1CYWNrQnVm
ZmVyRm9ybWF0KTsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLldpZHRoID0gYmFj
a2J1ZmZlcldpZHRoOworICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckRlc2MuSGVpZ2h0ID0g
YmFja2J1ZmZlckhlaWdodDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLlNjYWxp
bmcgPSBEWEdJX01PREVfU0NBTElOR19VTlNQRUNJRklFRDsKKyAgICAgICAgc3dhcENoYWluRGVz
Yy5CdWZmZXJEZXNjLlNjYW5saW5lT3JkZXJpbmcgPSBEWEdJX01PREVfU0NBTkxJTkVfT1JERVJf
VU5TUEVDSUZJRUQ7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5SZWZyZXNoUmF0
ZS5OdW1lcmF0b3IgPSAwOworICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckRlc2MuUmVmcmVz
aFJhdGUuRGVub21pbmF0b3IgPSAxOworICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlclVzYWdl
ID0gRFhHSV9VU0FHRV9SRU5ERVJfVEFSR0VUX09VVFBVVDsKKyAgICAgICAgc3dhcENoYWluRGVz
Yy5GbGFncyA9IDA7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuT3V0cHV0V2luZG93ID0gbVdpbmRv
dzsKKyAgICAgICAgc3dhcENoYWluRGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKKyAgICAgICAg
c3dhcENoYWluRGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAgICBzd2FwQ2hhaW5E
ZXNjLldpbmRvd2VkID0gVFJVRTsKKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGZhY3Rvcnkt
PkNyZWF0ZVN3YXBDaGFpbihkZXZpY2UsICZzd2FwQ2hhaW5EZXNjLCAmbVN3YXBDaGFpbik7CisK
KyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIo
IkNvdWxkIG5vdCBjcmVhdGUgYWRkaXRpb25hbCBzd2FwIGNoYWlucyBvciBvZmZzY3JlZW4gc3Vy
ZmFjZXM6ICUwOGxYIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlbGVhc2UoKTsKKworICAgICAg
ICAgICAgaWYgKGQzZDExOjppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NUOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBFR0xfQkFEX0FMTE9DOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmVz
dWx0ID0gbVN3YXBDaGFpbi0+R2V0QnVmZmVyKDAsIF9fdXVpZG9mKElEM0QxMVRleHR1cmUyRCks
IChMUFZPSUQqKSZtQmFja0J1ZmZlclRleHR1cmUpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVE
KHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1CYWNrQnVmZmVyVGV4dHVy
ZSwgIkJhY2sgYnVmZmVyIHRleHR1cmUiKTsKKworICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNy
ZWF0ZVJlbmRlclRhcmdldFZpZXcobUJhY2tCdWZmZXJUZXh0dXJlLCBOVUxMLCAmbUJhY2tCdWZm
ZXJSVFZpZXcpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBk
M2QxMTo6U2V0RGVidWdOYW1lKG1CYWNrQnVmZmVyUlRWaWV3LCAiQmFjayBidWZmZXIgcmVuZGVy
IHRhcmdldCIpOworICAgIH0KKworICAgIC8vIElmIHdlIGFyZSByZXNpemluZyB0aGUgc3dhcCBj
aGFpbiwgd2UgZG9uJ3Qgd2lzaCB0byByZWNyZWF0ZSBhbGwgdGhlIHN0YXRpYyByZXNvdXJjZXMK
KyAgICBpZiAoIW1QYXNzVGhyb3VnaFJlc291cmNlc0luaXQpCisgICAgeworICAgICAgICBtUGFz
c1Rocm91Z2hSZXNvdXJjZXNJbml0ID0gdHJ1ZTsKKyAgICAgICAgaW5pdFBhc3NUaHJvdWdoUmVz
b3VyY2VzKCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc2V0T2Zmc2NyZWVuVGV4dHVyZShiYWNr
YnVmZmVyV2lkdGgsIGJhY2tidWZmZXJIZWlnaHQpOworfQorCit2b2lkIFN3YXBDaGFpbjExOjpp
bml0UGFzc1Rocm91Z2hSZXNvdXJjZXMoKQoreworICAgIElEM0QxMURldmljZSAqZGV2aWNlID0g
bVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIEFTU0VSVChkZXZpY2UgIT0gTlVMTCk7CisK
KyAgICAvLyBNYWtlIHN1cmUgb3VyIHJlc291cmNlcyBhcmUgYWxsIG5vdCBhbGxvY2F0ZWQsIHdo
ZW4gd2UgY3JlYXRlCisgICAgQVNTRVJUKG1RdWFkVkIgPT0gTlVMTCAmJiBtUGFzc1Rocm91Z2hT
YW1wbGVyID09IE5VTEwpOworICAgIEFTU0VSVChtUGFzc1Rocm91Z2hJTCA9PSBOVUxMICYmIG1Q
YXNzVGhyb3VnaFZTID09IE5VTEwgJiYgbVBhc3NUaHJvdWdoUFMgPT0gTlVMTCk7CisKKyAgICBE
M0QxMV9CVUZGRVJfREVTQyB2YkRlc2M7CisgICAgdmJEZXNjLkJ5dGVXaWR0aCA9IHNpemVvZihk
M2QxMTo6UG9zaXRpb25UZXhDb29yZFZlcnRleCkgKiA0OworICAgIHZiRGVzYy5Vc2FnZSA9IEQz
RDExX1VTQUdFX0RZTkFNSUM7CisgICAgdmJEZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfVkVS
VEVYX0JVRkZFUjsKKyAgICB2YkRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNT
X1dSSVRFOworICAgIHZiRGVzYy5NaXNjRmxhZ3MgPSAwOworICAgIHZiRGVzYy5TdHJ1Y3R1cmVC
eXRlU3RyaWRlID0gMDsKKworICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVCdWZm
ZXIoJnZiRGVzYywgTlVMTCwgJm1RdWFkVkIpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0
KSk7CisgICAgZDNkMTE6OlNldERlYnVnTmFtZShtUXVhZFZCLCAiU3dhcCBjaGFpbiBxdWFkIHZl
cnRleCBidWZmZXIiKTsKKworICAgIEQzRDExX1NBTVBMRVJfREVTQyBzYW1wbGVyRGVzYzsKKyAg
ICBzYW1wbGVyRGVzYy5GaWx0ZXIgPSBEM0QxMV9GSUxURVJfTUlOX01BR19NSVBfUE9JTlQ7Cisg
ICAgc2FtcGxlckRlc2MuQWRkcmVzc1UgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7Cisg
ICAgc2FtcGxlckRlc2MuQWRkcmVzc1YgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7Cisg
ICAgc2FtcGxlckRlc2MuQWRkcmVzc1cgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7Cisg
ICAgc2FtcGxlckRlc2MuTWlwTE9EQmlhcyA9IDAuMGY7CisgICAgc2FtcGxlckRlc2MuTWF4QW5p
c290cm9weSA9IDA7CisgICAgc2FtcGxlckRlc2MuQ29tcGFyaXNvbkZ1bmMgPSBEM0QxMV9DT01Q
QVJJU09OX05FVkVSOworICAgIHNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzBdID0gMC4wZjsKKyAg
ICBzYW1wbGVyRGVzYy5Cb3JkZXJDb2xvclsxXSA9IDAuMGY7CisgICAgc2FtcGxlckRlc2MuQm9y
ZGVyQ29sb3JbMl0gPSAwLjBmOworICAgIHNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzNdID0gMC4w
ZjsKKyAgICBzYW1wbGVyRGVzYy5NaW5MT0QgPSAwOworICAgIHNhbXBsZXJEZXNjLk1heExPRCA9
IEQzRDExX0ZMT0FUMzJfTUFYOworCisgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVTYW1wbGVy
U3RhdGUoJnNhbXBsZXJEZXNjLCAmbVBhc3NUaHJvdWdoU2FtcGxlcik7CisgICAgQVNTRVJUKFNV
Q0NFRURFRChyZXN1bHQpKTsKKyAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1QYXNzVGhyb3VnaFNh
bXBsZXIsICJTd2FwIGNoYWluIHBhc3MgdGhyb3VnaCBzYW1wbGVyIik7CisKKyAgICBEM0QxMV9J
TlBVVF9FTEVNRU5UX0RFU0MgcXVhZExheW91dFtdID0KKyAgICB7CisgICAgICAgIHsgIlBPU0lU
SU9OIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAwLCAwLCBEM0QxMV9JTlBVVF9QRVJf
VkVSVEVYX0RBVEEsIDAgfSwKKyAgICAgICAgeyAiVEVYQ09PUkQiLCAwLCBEWEdJX0ZPUk1BVF9S
MzJHMzJfRkxPQVQsIDAsIDgsIEQzRDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMCB9LAorICAg
IH07CisKKyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUlucHV0TGF5b3V0KHF1YWRMYXlvdXQs
IDIsIGdfVlNfUGFzc3Rocm91Z2gsIHNpemVvZihnX1ZTX1Bhc3N0aHJvdWdoKSwgJm1QYXNzVGhy
b3VnaElMKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGQzZDExOjpTZXRE
ZWJ1Z05hbWUobVBhc3NUaHJvdWdoSUwsICJTd2FwIGNoYWluIHBhc3MgdGhyb3VnaCBsYXlvdXQi
KTsKKworICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVmVydGV4U2hhZGVyKGdfVlNfUGFzc3Ro
cm91Z2gsIHNpemVvZihnX1ZTX1Bhc3N0aHJvdWdoKSwgTlVMTCwgJm1QYXNzVGhyb3VnaFZTKTsK
KyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGQzZDExOjpTZXREZWJ1Z05hbWUo
bVBhc3NUaHJvdWdoVlMsICJTd2FwIGNoYWluIHBhc3MgdGhyb3VnaCB2ZXJ0ZXggc2hhZGVyIik7
CisKKyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVBpeGVsU2hhZGVyKGdfUFNfUGFzc3Rocm91
Z2hSR0JBLCBzaXplb2YoZ19QU19QYXNzdGhyb3VnaFJHQkEpLCBOVUxMLCAmbVBhc3NUaHJvdWdo
UFMpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgZDNkMTE6OlNldERlYnVn
TmFtZShtUGFzc1Rocm91Z2hQUywgIlN3YXAgY2hhaW4gcGFzcyB0aHJvdWdoIHBpeGVsIHNoYWRl
ciIpOworfQorCisvLyBwYXJhbWV0ZXJzIHNob3VsZCBiZSB2YWxpZGF0ZWQvY2xhbXBlZCBieSBj
YWxsZXIKK0VHTGludCBTd2FwQ2hhaW4xMTo6c3dhcFJlY3QoRUdMaW50IHgsIEVHTGludCB5LCBF
R0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCit7CisgICAgaWYgKCFtU3dhcENoYWluKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEVHTF9TVUNDRVNTOworICAgIH0KKworICAgIElEM0QxMURldmlj
ZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKyAgICBJRDNEMTFEZXZpY2VDb250
ZXh0ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CisKKyAg
ICAvLyBTZXQgdmVydGljZXMKKyAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVz
b3VyY2U7CisgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2VDb250ZXh0LT5NYXAobVF1YWRWQiwg
MCwgRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXBwZWRSZXNvdXJjZSk7CisgICAgaWYg
KEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVHTF9CQURfQUNDRVNTOwor
ICAgIH0KKworICAgIGQzZDExOjpQb3NpdGlvblRleENvb3JkVmVydGV4ICp2ZXJ0aWNlcyA9IHN0
YXRpY19jYXN0PGQzZDExOjpQb3NpdGlvblRleENvb3JkVmVydGV4Kj4obWFwcGVkUmVzb3VyY2Uu
cERhdGEpOworCisgICAgLy8gQ3JlYXRlIGEgcXVhZCBpbiBob21vZ2VuZW91cyBjb29yZGluYXRl
cworICAgIGZsb2F0IHgxID0gKHggLyBmbG9hdChtV2lkdGgpKSAqIDIuMGYgLSAxLjBmOworICAg
IGZsb2F0IHkxID0gKHkgLyBmbG9hdChtSGVpZ2h0KSkgKiAyLjBmIC0gMS4wZjsKKyAgICBmbG9h
dCB4MiA9ICgoeCArIHdpZHRoKSAvIGZsb2F0KG1XaWR0aCkpICogMi4wZiAtIDEuMGY7CisgICAg
ZmxvYXQgeTIgPSAoKHkgKyBoZWlnaHQpIC8gZmxvYXQobUhlaWdodCkpICogMi4wZiAtIDEuMGY7
CisKKyAgICBmbG9hdCB1MSA9IHggLyBmbG9hdChtV2lkdGgpOworICAgIGZsb2F0IHYxID0geSAv
IGZsb2F0KG1IZWlnaHQpOworICAgIGZsb2F0IHUyID0gKHggKyB3aWR0aCkgLyBmbG9hdChtV2lk
dGgpOworICAgIGZsb2F0IHYyID0gKHkgKyBoZWlnaHQpIC8gZmxvYXQobUhlaWdodCk7CisKKyAg
ICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbMF0sIHgxLCB5MSwg
dTEsIHYxKTsKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNb
MV0sIHgxLCB5MiwgdTEsIHYyKTsKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRl
eCgmdmVydGljZXNbMl0sIHgyLCB5MSwgdTIsIHYxKTsKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25U
ZXhDb29yZFZlcnRleCgmdmVydGljZXNbM10sIHgyLCB5MiwgdTIsIHYyKTsKKworICAgIGRldmlj
ZUNvbnRleHQtPlVubWFwKG1RdWFkVkIsIDApOworCisgICAgc3RhdGljIFVJTlQgc3RyaWRlID0g
c2l6ZW9mKGQzZDExOjpQb3NpdGlvblRleENvb3JkVmVydGV4KTsKKyAgICBzdGF0aWMgVUlOVCBz
dGFydElkeCA9IDA7CisgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIDEs
ICZtUXVhZFZCLCAmc3RyaWRlLCAmc3RhcnRJZHgpOworCisgICAgLy8gQXBwbHkgc3RhdGUKKyAg
ICBkZXZpY2VDb250ZXh0LT5PTVNldERlcHRoU3RlbmNpbFN0YXRlKE5VTEwsIDB4RkZGRkZGRkYp
OworCisgICAgc3RhdGljIGNvbnN0IGZsb2F0IGJsZW5kRmFjdG9yWzRdID0geyAxLjBmLCAxLjBm
LCAxLjBmLCAxLjBmIH07CisgICAgZGV2aWNlQ29udGV4dC0+T01TZXRCbGVuZFN0YXRlKE5VTEws
IGJsZW5kRmFjdG9yLCAweEZGRkZGRkYpOworCisgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRTdGF0
ZShOVUxMKTsKKworICAgIC8vIEFwcGx5IHNoYWRlcnMKKyAgICBkZXZpY2VDb250ZXh0LT5JQVNl
dElucHV0TGF5b3V0KG1QYXNzVGhyb3VnaElMKTsKKyAgICBkZXZpY2VDb250ZXh0LT5JQVNldFBy
aW1pdGl2ZVRvcG9sb2d5KEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVTVFJJUCk7Cisg
ICAgZGV2aWNlQ29udGV4dC0+VlNTZXRTaGFkZXIobVBhc3NUaHJvdWdoVlMsIE5VTEwsIDApOwor
ICAgIGRldmljZUNvbnRleHQtPlBTU2V0U2hhZGVyKG1QYXNzVGhyb3VnaFBTLCBOVUxMLCAwKTsK
KyAgICBkZXZpY2VDb250ZXh0LT5HU1NldFNoYWRlcihOVUxMLCBOVUxMLCAwKTsKKworICAgIC8v
IEFwcGx5IHJlbmRlciB0YXJnZXRzCisgICAgbVJlbmRlcmVyLT5zZXRPbmVUaW1lUmVuZGVyVGFy
Z2V0KG1CYWNrQnVmZmVyUlRWaWV3KTsKKworICAgIC8vIFNldCB0aGUgdmlld3BvcnQKKyAgICBE
M0QxMV9WSUVXUE9SVCB2aWV3cG9ydDsKKyAgICB2aWV3cG9ydC5Ub3BMZWZ0WCA9IDA7CisgICAg
dmlld3BvcnQuVG9wTGVmdFkgPSAwOworICAgIHZpZXdwb3J0LldpZHRoID0gbVdpZHRoOworICAg
IHZpZXdwb3J0LkhlaWdodCA9IG1IZWlnaHQ7CisgICAgdmlld3BvcnQuTWluRGVwdGggPSAwLjBm
OworICAgIHZpZXdwb3J0Lk1heERlcHRoID0gMS4wZjsKKyAgICBkZXZpY2VDb250ZXh0LT5SU1Nl
dFZpZXdwb3J0cygxLCAmdmlld3BvcnQpOworCisgICAgLy8gQXBwbHkgdGV4dHVyZXMKKyAgICBk
ZXZpY2VDb250ZXh0LT5QU1NldFNoYWRlclJlc291cmNlcygwLCAxLCAmbU9mZnNjcmVlblNSVmll
dyk7CisgICAgZGV2aWNlQ29udGV4dC0+UFNTZXRTYW1wbGVycygwLCAxLCAmbVBhc3NUaHJvdWdo
U2FtcGxlcik7CisKKyAgICAvLyBEcmF3CisgICAgZGV2aWNlQ29udGV4dC0+RHJhdyg0LCAwKTsK
KyAgICByZXN1bHQgPSBtU3dhcENoYWluLT5QcmVzZW50KG1Td2FwSW50ZXJ2YWwsIDApOworCisg
ICAgaWYgKHJlc3VsdCA9PSBEWEdJX0VSUk9SX0RFVklDRV9SRU1PVkVEKQorICAgIHsKKyAgICAg
ICAgSFJFU1VMVCByZW1vdmVkUmVhc29uID0gZGV2aWNlLT5HZXREZXZpY2VSZW1vdmVkUmVhc29u
KCk7CisgICAgICAgIEVSUigiUHJlc2VudCBmYWlsZWQ6IHRoZSBEM0QxMSBkZXZpY2Ugd2FzIHJl
bW92ZWQ6IDB4JTA4WCIsIHJlbW92ZWRSZWFzb24pOworICAgICAgICByZXR1cm4gRUdMX0NPTlRF
WFRfTE9TVDsKKyAgICB9CisgICAgZWxzZSBpZiAocmVzdWx0ID09IERYR0lfRVJST1JfREVWSUNF
X1JFU0VUKQorICAgIHsKKyAgICAgICAgRVJSKCJQcmVzZW50IGZhaWxlZDogdGhlIEQzRDExIGRl
dmljZSB3YXMgcmVzZXQgZnJvbSBhIGJhZCBjb21tYW5kLiIpOworICAgICAgICByZXR1cm4gRUdM
X0NPTlRFWFRfTE9TVDsKKyAgICB9CisgICAgZWxzZSBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAg
eworICAgICAgICBFUlIoIlByZXNlbnQgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAweCUwOFgiLCBy
ZXN1bHQpOworICAgIH0KKworICAgIC8vIFVuYmluZAorICAgIHN0YXRpYyBJRDNEMTFTaGFkZXJS
ZXNvdXJjZVZpZXcgKmNvbnN0IG51bGxTUlYgPSBOVUxMOworICAgIGRldmljZUNvbnRleHQtPlBT
U2V0U2hhZGVyUmVzb3VyY2VzKDAsIDEsICZudWxsU1JWKTsKKworICAgIG1SZW5kZXJlci0+dW5h
cHBseVJlbmRlclRhcmdldHMoKTsKKyAgICBtUmVuZGVyZXItPm1hcmtBbGxTdGF0ZURpcnR5KCk7
CisKKyAgICByZXR1cm4gRUdMX1NVQ0NFU1M7Cit9CisKKy8vIEluY3JlbWVudHMgcmVmY291bnQg
b24gdGV4dHVyZS4KKy8vIGNhbGxlciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJuZWQgdGV4dHVy
ZQorSUQzRDExVGV4dHVyZTJEICpTd2FwQ2hhaW4xMTo6Z2V0T2Zmc2NyZWVuVGV4dHVyZSgpCit7
CisgICAgaWYgKG1PZmZzY3JlZW5UZXh0dXJlKQorICAgIHsKKyAgICAgICAgbU9mZnNjcmVlblRl
eHR1cmUtPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtT2Zmc2NyZWVuVGV4dHVyZTsK
K30KKworLy8gSW5jcmVtZW50cyByZWZjb3VudCBvbiB2aWV3LgorLy8gY2FsbGVyIG11c3QgUmVs
ZWFzZSgpIHRoZSByZXR1cm5lZCB2aWV3CitJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpTd2FwQ2hh
aW4xMTo6Z2V0UmVuZGVyVGFyZ2V0KCkKK3sKKyAgICBpZiAobU9mZnNjcmVlblJUVmlldykKKyAg
ICB7CisgICAgICAgIG1PZmZzY3JlZW5SVFZpZXctPkFkZFJlZigpOworICAgIH0KKworICAgIHJl
dHVybiBtT2Zmc2NyZWVuUlRWaWV3OworfQorCisvLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHZp
ZXcuCisvLyBjYWxsZXIgbXVzdCBSZWxlYXNlKCkgdGhlIHJldHVybmVkIHZpZXcKK0lEM0QxMVNo
YWRlclJlc291cmNlVmlldyAqU3dhcENoYWluMTE6OmdldFJlbmRlclRhcmdldFNoYWRlclJlc291
cmNlKCkKK3sKKyAgICBpZiAobU9mZnNjcmVlblNSVmlldykKKyAgICB7CisgICAgICAgIG1PZmZz
Y3JlZW5TUlZpZXctPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtT2Zmc2NyZWVuU1JW
aWV3OworfQorCisvLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHZpZXcuCisvLyBjYWxsZXIgbXVz
dCBSZWxlYXNlKCkgdGhlIHJldHVybmVkIHZpZXcKK0lEM0QxMURlcHRoU3RlbmNpbFZpZXcgKlN3
YXBDaGFpbjExOjpnZXREZXB0aFN0ZW5jaWwoKQoreworICAgIGlmIChtRGVwdGhTdGVuY2lsRFNW
aWV3KQorICAgIHsKKyAgICAgICAgbURlcHRoU3RlbmNpbERTVmlldy0+QWRkUmVmKCk7CisgICAg
fQorCisgICAgcmV0dXJuIG1EZXB0aFN0ZW5jaWxEU1ZpZXc7Cit9CisKK0lEM0QxMVRleHR1cmUy
RCAqU3dhcENoYWluMTE6OmdldERlcHRoU3RlbmNpbFRleHR1cmUoKQoreworICAgIGlmIChtRGVw
dGhTdGVuY2lsVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1EZXB0aFN0ZW5jaWxUZXh0dXJlLT5B
ZGRSZWYoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbURlcHRoU3RlbmNpbFRleHR1cmU7Cit9CisK
K1N3YXBDaGFpbjExICpTd2FwQ2hhaW4xMTo6bWFrZVN3YXBDaGFpbjExKFN3YXBDaGFpbiAqc3dh
cENoYWluKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpTd2FwQ2hhaW4xMSos
IHN3YXBDaGFpbikpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxyeDo6U3dhcENoYWluMTEqPihz
d2FwQ2hhaW4pOworfQorCit2b2lkIFN3YXBDaGFpbjExOjpyZWNyZWF0ZSgpCit7CisgICAgLy8g
cG9zc2libHkgc2hvdWxkIHVzZSB0aGlzIG1ldGhvZCBpbnN0ZWFkIG9mIHJlc2V0Cit9CisKK30K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dh
cENoYWluMTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjExLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjExLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTd2FwQ2hhaW4xMS5o
OiBEZWZpbmVzIGEgYmFjay1lbmQgc3BlY2lmaWMgY2xhc3MgZm9yIHRoZSBEM0QxMSBzd2FwIGNo
YWluLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9TV0FQQ0hBSU4xMV9IXworI2RlZmlu
ZSBMSUJHTEVTVjJfUkVOREVSRVJfU1dBUENIQUlOMTFfSF8KKworI2luY2x1ZGUgImNvbW1vbi9h
bmdsZXV0aWxzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oIgor
CituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyMTE7CisKK2NsYXNzIFN3YXBDaGFpbjEx
IDogcHVibGljIFN3YXBDaGFpbgoreworICBwdWJsaWM6CisgICAgU3dhcENoYWluMTEoUmVuZGVy
ZXIxMSAqcmVuZGVyZXIsIEhXTkQgd2luZG93LCBIQU5ETEUgc2hhcmVIYW5kbGUsCisgICAgICAg
ICAgICAgICAgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1h
dCk7CisgICAgdmlydHVhbCB+U3dhcENoYWluMTEoKTsKKworICAgIEVHTGludCByZXNpemUoRUdM
aW50IGJhY2tidWZmZXJXaWR0aCwgRUdMaW50IGJhY2tidWZmZXJIZWlnaHQpOworICAgIHZpcnR1
YWwgRUdMaW50IHJlc2V0KEVHTGludCBiYWNrYnVmZmVyV2lkdGgsIEVHTGludCBiYWNrYnVmZmVy
SGVpZ2h0LCBFR0xpbnQgc3dhcEludGVydmFsKTsKKyAgICB2aXJ0dWFsIEVHTGludCBzd2FwUmVj
dChFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCk7CisgICAg
dmlydHVhbCB2b2lkIHJlY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIElEM0QxMVRleHR1cmUyRCAq
Z2V0T2Zmc2NyZWVuVGV4dHVyZSgpOworICAgIHZpcnR1YWwgSUQzRDExUmVuZGVyVGFyZ2V0Vmll
dyAqZ2V0UmVuZGVyVGFyZ2V0KCk7CisgICAgdmlydHVhbCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZp
ZXcgKmdldFJlbmRlclRhcmdldFNoYWRlclJlc291cmNlKCk7CisKKyAgICB2aXJ0dWFsIElEM0Qx
MVRleHR1cmUyRCAqZ2V0RGVwdGhTdGVuY2lsVGV4dHVyZSgpOworICAgIHZpcnR1YWwgSUQzRDEx
RGVwdGhTdGVuY2lsVmlldyAqZ2V0RGVwdGhTdGVuY2lsKCk7CisKKyAgICBFR0xpbnQgZ2V0V2lk
dGgoKSBjb25zdCB7IHJldHVybiBtV2lkdGg7IH0KKyAgICBFR0xpbnQgZ2V0SGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbUhlaWdodDsgfQorCisgICAgc3RhdGljIFN3YXBDaGFpbjExICptYWtlU3dh
cENoYWluMTEoU3dhcENoYWluICpzd2FwQ2hhaW4pOworCisgIHByaXZhdGU6CisgICAgRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKFN3YXBDaGFpbjExKTsKKworICAgIHZvaWQgcmVsZWFzZSgpOwor
ICAgIHZvaWQgaW5pdFBhc3NUaHJvdWdoUmVzb3VyY2VzKCk7CisgICAgdm9pZCByZWxlYXNlT2Zm
c2NyZWVuVGV4dHVyZSgpOworICAgIEVHTGludCByZXNldE9mZnNjcmVlblRleHR1cmUoaW50IGJh
Y2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpOworCisgICAgUmVuZGVyZXIxMSAq
bVJlbmRlcmVyOworICAgIEVHTGludCBtSGVpZ2h0OworICAgIEVHTGludCBtV2lkdGg7CisgICAg
Ym9vbCBtQXBwQ3JlYXRlZFNoYXJlSGFuZGxlOworICAgIHVuc2lnbmVkIGludCBtU3dhcEludGVy
dmFsOworICAgIGJvb2wgbVBhc3NUaHJvdWdoUmVzb3VyY2VzSW5pdDsKKworICAgIElEWEdJU3dh
cENoYWluICptU3dhcENoYWluOworCisgICAgSUQzRDExVGV4dHVyZTJEICptQmFja0J1ZmZlclRl
eHR1cmU7CisgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqbUJhY2tCdWZmZXJSVFZpZXc7CisK
KyAgICBJRDNEMTFUZXh0dXJlMkQgKm1PZmZzY3JlZW5UZXh0dXJlOworICAgIElEM0QxMVJlbmRl
clRhcmdldFZpZXcgKm1PZmZzY3JlZW5SVFZpZXc7CisgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VW
aWV3ICptT2Zmc2NyZWVuU1JWaWV3OworCisgICAgSUQzRDExVGV4dHVyZTJEICptRGVwdGhTdGVu
Y2lsVGV4dHVyZTsKKyAgICBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICptRGVwdGhTdGVuY2lsRFNW
aWV3OworCisgICAgSUQzRDExQnVmZmVyICptUXVhZFZCOworICAgIElEM0QxMVNhbXBsZXJTdGF0
ZSAqbVBhc3NUaHJvdWdoU2FtcGxlcjsKKyAgICBJRDNEMTFJbnB1dExheW91dCAqbVBhc3NUaHJv
dWdoSUw7CisgICAgSUQzRDExVmVydGV4U2hhZGVyICptUGFzc1Rocm91Z2hWUzsKKyAgICBJRDNE
MTFQaXhlbFNoYWRlciAqbVBhc3NUaHJvdWdoUFM7Cit9OworCit9CisjZW5kaWYgLy8gTElCR0xF
U1YyX1JFTkRFUkVSX1NXQVBDSEFJTjExX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL1N3YXBDaGFpbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gU3dhcENoYWluLmg6IERlZmluZXMgYSBiYWNrLWVuZCBzcGVjaWZpYyBjbGFzcyB0
aGF0IGhpZGVzIHRoZSBkZXRhaWxzIG9mIHRoZQorLy8gaW1wbGVtZW50YXRpb24tc3BlY2lmaWMg
c3dhcGNoYWluLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9TV0FQQ0hBSU5fSF8KKyNk
ZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1NXQVBDSEFJTl9IXworCisjaW5jbHVkZSAiY29tbW9u
L2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFN3YXBDaGFpbgorewor
ICBwdWJsaWM6CisgICAgU3dhcENoYWluKEhXTkQgd2luZG93LCBIQU5ETEUgc2hhcmVIYW5kbGUs
IEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0LCBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQpCisgICAg
ICAgIDogbVdpbmRvdyh3aW5kb3cpLCBtU2hhcmVIYW5kbGUoc2hhcmVIYW5kbGUpLCBtQmFja0J1
ZmZlckZvcm1hdChiYWNrQnVmZmVyRm9ybWF0KSwgbURlcHRoQnVmZmVyRm9ybWF0KGRlcHRoQnVm
ZmVyRm9ybWF0KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Td2FwQ2hhaW4oKSB7fTsK
KworICAgIHZpcnR1YWwgRUdMaW50IHJlc2l6ZShFR0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xp
bnQgYmFja2J1ZmZlclNpemUpID0gMDsKKyAgICB2aXJ0dWFsIEVHTGludCByZXNldChFR0xpbnQg
YmFja2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1ZmZlckhlaWdodCwgRUdMaW50IHN3YXBJbnRl
cnZhbCkgPSAwOworICAgIHZpcnR1YWwgRUdMaW50IHN3YXBSZWN0KEVHTGludCB4LCBFR0xpbnQg
eSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
Y3JlYXRlKCkgPSAwOworCisgICAgdmlydHVhbCBIQU5ETEUgZ2V0U2hhcmVIYW5kbGUoKSB7cmV0
dXJuIG1TaGFyZUhhbmRsZTt9OworCisgIHByb3RlY3RlZDoKKyAgICBjb25zdCBIV05EIG1XaW5k
b3c7ICAgICAgICAgICAgLy8gV2luZG93IHRoYXQgdGhlIHN1cmZhY2UgaXMgY3JlYXRlZCBmb3Iu
CisgICAgY29uc3QgR0xlbnVtIG1CYWNrQnVmZmVyRm9ybWF0OworICAgIGNvbnN0IEdMZW51bSBt
RGVwdGhCdWZmZXJGb3JtYXQ7CisKKyAgICBIQU5ETEUgbVNoYXJlSGFuZGxlOworfTsKKworfQor
I2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9TV0FQQ0hBSU5fSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1RleHR1cmVTdG9yYWdlOS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlOS5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzI4IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisvLyBUZXh0dXJlU3RvcmFnZTkuY3BwOiBJbXBsZW1lbnRzIHRoZSBhYnN0
cmFjdCByeDo6VGV4dHVyZVN0b3JhZ2U5IGNsYXNzIGFuZCBpdHMgY29uY3JldGUgZGVyaXZlZAor
Ly8gY2xhc3NlcyBUZXh0dXJlU3RvcmFnZTlfMkQgYW5kIFRleHR1cmVTdG9yYWdlOV9DdWJlLCB3
aGljaCBhY3QgYXMgdGhlIGludGVyZmFjZSB0byB0aGUKKy8vIEQzRDkgdGV4dHVyZS4KKworI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlcmVyOS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTku
aCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQ5LmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL3JlbmRlcmVyOV91dGlscy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJl
LmgiCisKK25hbWVzcGFjZSByeAoreworVGV4dHVyZVN0b3JhZ2U5OjpUZXh0dXJlU3RvcmFnZTko
UmVuZGVyZXIgKnJlbmRlcmVyLCBEV09SRCB1c2FnZSkKKyAgICA6IG1Mb2RPZmZzZXQoMCksCisg
ICAgICBtUmVuZGVyZXIoUmVuZGVyZXI5OjptYWtlUmVuZGVyZXI5KHJlbmRlcmVyKSksCisgICAg
ICBtRDNEVXNhZ2UodXNhZ2UpLAorICAgICAgbUQzRFBvb2wobVJlbmRlcmVyLT5nZXRUZXh0dXJl
UG9vbCh1c2FnZSkpCit7Cit9CisKK1RleHR1cmVTdG9yYWdlOTo6flRleHR1cmVTdG9yYWdlOSgp
Cit7Cit9CisKK1RleHR1cmVTdG9yYWdlOSAqVGV4dHVyZVN0b3JhZ2U5OjptYWtlVGV4dHVyZVN0
b3JhZ2U5KFRleHR1cmVTdG9yYWdlICpzdG9yYWdlKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1J
Q19UWVBFKFRleHR1cmVTdG9yYWdlOSosIHN0b3JhZ2UpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VGV4dHVyZVN0b3JhZ2U5Kj4oc3RvcmFnZSk7Cit9CisKK0RXT1JEIFRleHR1cmVTdG9yYWdl
OTo6R2V0VGV4dHVyZVVzYWdlKEQzREZPUk1BVCBkM2RmbXQsIEdMZW51bSBnbHVzYWdlLCBib29s
IGZvcmNlUmVuZGVyYWJsZSkKK3sKKyAgICBEV09SRCBkM2R1c2FnZSA9IDA7CisKKyAgICBpZiAo
ZDNkZm10ID09IEQzREZNVF9JTlRaKQorICAgIHsKKyAgICAgICAgZDNkdXNhZ2UgfD0gRDNEVVNB
R0VfREVQVEhTVEVOQ0lMOworICAgIH0KKyAgICBlbHNlIGlmKGZvcmNlUmVuZGVyYWJsZSB8fCAo
VGV4dHVyZVN0b3JhZ2U5OjpJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKGQzZGZtdCkgJiYgKGds
dXNhZ2UgPT0gR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRSkpKQorICAgIHsKKyAgICAg
ICAgZDNkdXNhZ2UgfD0gRDNEVVNBR0VfUkVOREVSVEFSR0VUOworICAgIH0KKyAgICByZXR1cm4g
ZDNkdXNhZ2U7Cit9CisKK2Jvb2wgVGV4dHVyZVN0b3JhZ2U5OjpJc1RleHR1cmVGb3JtYXRSZW5k
ZXJhYmxlKEQzREZPUk1BVCBmb3JtYXQpCit7CisgICAgaWYgKGZvcm1hdCA9PSBEM0RGTVRfSU5U
WikKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBzd2l0Y2goZm9ybWF0
KQorICAgIHsKKyAgICAgIGNhc2UgRDNERk1UX0w4OgorICAgICAgY2FzZSBEM0RGTVRfQThMODoK
KyAgICAgIGNhc2UgRDNERk1UX0RYVDE6CisgICAgICBjYXNlIEQzREZNVF9EWFQzOgorICAgICAg
Y2FzZSBEM0RGTVRfRFhUNToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgY2FzZSBEM0RG
TVRfQThSOEc4Qjg6CisgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKKyAgICAgIGNhc2UgRDNE
Rk1UX0ExNkIxNkcxNlIxNkY6CisgICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFRleHR1cmVTdG9yYWdlOTo6
aXNSZW5kZXJUYXJnZXQoKSBjb25zdAoreworICAgIHJldHVybiAobUQzRFVzYWdlICYgKEQzRFVT
QUdFX1JFTkRFUlRBUkdFVCB8IEQzRFVTQUdFX0RFUFRIU1RFTkNJTCkpICE9IDA7Cit9CisKK2Jv
b2wgVGV4dHVyZVN0b3JhZ2U5Ojppc01hbmFnZWQoKSBjb25zdAoreworICAgIHJldHVybiAobUQz
RFBvb2wgPT0gRDNEUE9PTF9NQU5BR0VEKTsKK30KKworRDNEUE9PTCBUZXh0dXJlU3RvcmFnZTk6
OmdldFBvb2woKSBjb25zdAoreworICAgIHJldHVybiBtRDNEUG9vbDsKK30KKworRFdPUkQgVGV4
dHVyZVN0b3JhZ2U5OjpnZXRVc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EM0RVc2FnZTsK
K30KKworaW50IFRleHR1cmVTdG9yYWdlOTo6Z2V0TG9kT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbUxvZE9mZnNldDsKK30KKworaW50IFRleHR1cmVTdG9yYWdlOTo6bGV2ZWxDb3VudCgp
Cit7CisgICAgcmV0dXJuIGdldEJhc2VUZXh0dXJlKCkgPyBnZXRCYXNlVGV4dHVyZSgpLT5HZXRM
ZXZlbENvdW50KCkgLSBnZXRMb2RPZmZzZXQoKSA6IDA7Cit9CisKK1RleHR1cmVTdG9yYWdlOV8y
RDo6VGV4dHVyZVN0b3JhZ2U5XzJEKFJlbmRlcmVyICpyZW5kZXJlciwgU3dhcENoYWluOSAqc3dh
cGNoYWluKSA6IFRleHR1cmVTdG9yYWdlOShyZW5kZXJlciwgRDNEVVNBR0VfUkVOREVSVEFSR0VU
KQoreworICAgIElEaXJlY3QzRFRleHR1cmU5ICpzdXJmYWNlVGV4dHVyZSA9IHN3YXBjaGFpbi0+
Z2V0T2Zmc2NyZWVuVGV4dHVyZSgpOworICAgIG1UZXh0dXJlID0gc3VyZmFjZVRleHR1cmU7Cisg
ICAgbVJlbmRlclRhcmdldCA9IE5VTEw7CisKKyAgICBpbml0aWFsaXplUmVuZGVyVGFyZ2V0KCk7
Cit9CisKK1RleHR1cmVTdG9yYWdlOV8yRDo6VGV4dHVyZVN0b3JhZ2U5XzJEKFJlbmRlcmVyICpy
ZW5kZXJlciwgaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gdXNhZ2Us
IGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKKyAg
ICA6IFRleHR1cmVTdG9yYWdlOShyZW5kZXJlciwgR2V0VGV4dHVyZVVzYWdlKFJlbmRlcmVyOTo6
bWFrZVJlbmRlcmVyOShyZW5kZXJlciktPkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50
ZXJuYWxmb3JtYXQpLCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxlKSkKK3sKKyAgICBtVGV4dHVyZSA9
IE5VTEw7CisgICAgbVJlbmRlclRhcmdldCA9IE5VTEw7CisgICAgLy8gaWYgdGhlIHdpZHRoIG9y
IGhlaWdodCBpcyBub3QgcG9zaXRpdmUgdGhpcyBzaG91bGQgYmUgdHJlYXRlZCBhcyBhbiBpbmNv
bXBsZXRlIHRleHR1cmUKKyAgICAvLyB3ZSBoYW5kbGUgdGhhdCBoZXJlIGJ5IHNraXBwaW5nIHRo
ZSBkM2QgdGV4dHVyZSBjcmVhdGlvbgorICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkK
KyAgICB7CisgICAgICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0
RGV2aWNlKCk7CisgICAgICAgIGdsOjpNYWtlVmFsaWRTaXplKGZhbHNlLCBnbDo6SXNDb21wcmVz
c2VkKGludGVybmFsZm9ybWF0KSwgJndpZHRoLCAmaGVpZ2h0LCAmbUxvZE9mZnNldCk7CisgICAg
ICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlKHdpZHRoLCBoZWlnaHQs
IGxldmVscyA/IGxldmVscyArIG1Mb2RPZmZzZXQgOiAwLCBnZXRVc2FnZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyZXItPkNvbnZlcnRU
ZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQpLCBnZXRQb29sKCksICZtVGV4dHVy
ZSwgTlVMTCk7CisKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3Vs
dCA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgICAgIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGluaXRpYWxpemVSZW5kZXJUYXJnZXQoKTsK
K30KKworVGV4dHVyZVN0b3JhZ2U5XzJEOjp+VGV4dHVyZVN0b3JhZ2U5XzJEKCkKK3sKKyAgICBp
ZiAobVRleHR1cmUpCisgICAgeworICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOworICAgIH0K
KworICAgIGRlbGV0ZSBtUmVuZGVyVGFyZ2V0OworfQorCitUZXh0dXJlU3RvcmFnZTlfMkQgKlRl
eHR1cmVTdG9yYWdlOV8yRDo6bWFrZVRleHR1cmVTdG9yYWdlOV8yRChUZXh0dXJlU3RvcmFnZSAq
c3RvcmFnZSkKK3sKKyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShUZXh0dXJlU3RvcmFnZTlf
MkQqLCBzdG9yYWdlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHR1cmVTdG9yYWdlOV8y
RCo+KHN0b3JhZ2UpOworfQorCisvLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHN1cmZhY2UuCisv
LyBjYWxsZXIgbXVzdCBSZWxlYXNlKCkgdGhlIHJldHVybmVkIHN1cmZhY2UKK0lEaXJlY3QzRFN1
cmZhY2U5ICpUZXh0dXJlU3RvcmFnZTlfMkQ6OmdldFN1cmZhY2VMZXZlbChpbnQgbGV2ZWwsIGJv
b2wgZGlydHkpCit7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UgPSBOVUxMOworCisg
ICAgaWYgKG1UZXh0dXJlKQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtVGV4dHVy
ZS0+R2V0U3VyZmFjZUxldmVsKGxldmVsICsgbUxvZE9mZnNldCwgJnN1cmZhY2UpOworICAgICAg
ICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgICAgIC8vIFdpdGggbWFuYWdlZCB0
ZXh0dXJlcyB0aGUgZHJpdmVyIG5lZWRzIHRvIGJlIGluZm9ybWVkIG9mIHVwZGF0ZXMgdG8gdGhl
IGxvd2VyIG1pcG1hcCBsZXZlbHMKKyAgICAgICAgaWYgKGxldmVsICsgbUxvZE9mZnNldCAhPSAw
ICYmIGlzTWFuYWdlZCgpICYmIGRpcnR5KQorICAgICAgICB7CisgICAgICAgICAgICBtVGV4dHVy
ZS0+QWRkRGlydHlSZWN0KE5VTEwpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHN1
cmZhY2U7Cit9CisKK1JlbmRlclRhcmdldCAqVGV4dHVyZVN0b3JhZ2U5XzJEOjpnZXRSZW5kZXJU
YXJnZXQoKQoreworICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0OworfQorCit2b2lkIFRleHR1cmVT
dG9yYWdlOV8yRDo6Z2VuZXJhdGVNaXBtYXAoaW50IGxldmVsKQoreworICAgIElEaXJlY3QzRFN1
cmZhY2U5ICp1cHBlciA9IGdldFN1cmZhY2VMZXZlbChsZXZlbCAtIDEsIGZhbHNlKTsKKyAgICBJ
RGlyZWN0M0RTdXJmYWNlOSAqbG93ZXIgPSBnZXRTdXJmYWNlTGV2ZWwobGV2ZWwsIHRydWUpOwor
CisgICAgaWYgKHVwcGVyICE9IE5VTEwgJiYgbG93ZXIgIT0gTlVMTCkKKyAgICB7CisgICAgICAg
IG1SZW5kZXJlci0+Ym94RmlsdGVyKHVwcGVyLCBsb3dlcik7CisgICAgfQorCisgICAgaWYgKHVw
cGVyICE9IE5VTEwpIHVwcGVyLT5SZWxlYXNlKCk7CisgICAgaWYgKGxvd2VyICE9IE5VTEwpIGxv
d2VyLT5SZWxlYXNlKCk7Cit9CisKK0lEaXJlY3QzREJhc2VUZXh0dXJlOSAqVGV4dHVyZVN0b3Jh
Z2U5XzJEOjpnZXRCYXNlVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlOwor
fQorCit2b2lkIFRleHR1cmVTdG9yYWdlOV8yRDo6aW5pdGlhbGl6ZVJlbmRlclRhcmdldCgpCit7
CisgICAgQVNTRVJUKG1SZW5kZXJUYXJnZXQgPT0gTlVMTCk7CisKKyAgICBpZiAobVRleHR1cmUg
IT0gTlVMTCAmJiBpc1JlbmRlclRhcmdldCgpKQorICAgIHsKKyAgICAgICAgSURpcmVjdDNEU3Vy
ZmFjZTkgKnN1cmZhY2UgPSBnZXRTdXJmYWNlTGV2ZWwoMCwgZmFsc2UpOworCisgICAgICAgIG1S
ZW5kZXJUYXJnZXQgPSBuZXcgUmVuZGVyVGFyZ2V0OShtUmVuZGVyZXIsIHN1cmZhY2UpOworICAg
IH0KK30KKworVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OlRleHR1cmVTdG9yYWdlOV9DdWJlKFJlbmRl
cmVyICpyZW5kZXJlciwgaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0g
dXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBpbnQgc2l6ZSkKKyAgICA6IFRleHR1cmVTdG9y
YWdlOShyZW5kZXJlciwgR2V0VGV4dHVyZVVzYWdlKFJlbmRlcmVyOTo6bWFrZVJlbmRlcmVyOShy
ZW5kZXJlciktPkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQpLCB1
c2FnZSwgZm9yY2VSZW5kZXJhYmxlKSkKK3sKKyAgICBtVGV4dHVyZSA9IE5VTEw7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCA2OyArK2kpCisgICAgeworICAgICAgICBtUmVuZGVyVGFyZ2V0W2ld
ID0gTlVMTDsKKyAgICB9CisKKyAgICAvLyBpZiB0aGUgc2l6ZSBpcyBub3QgcG9zaXRpdmUgdGhp
cyBzaG91bGQgYmUgdHJlYXRlZCBhcyBhbiBpbmNvbXBsZXRlIHRleHR1cmUKKyAgICAvLyB3ZSBo
YW5kbGUgdGhhdCBoZXJlIGJ5IHNraXBwaW5nIHRoZSBkM2QgdGV4dHVyZSBjcmVhdGlvbgorICAg
IGlmIChzaXplID4gMCkKKyAgICB7CisgICAgICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9
IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgICAgIGludCBoZWlnaHQgPSBzaXplOworICAg
ICAgICBnbDo6TWFrZVZhbGlkU2l6ZShmYWxzZSwgZ2w6OklzQ29tcHJlc3NlZChpbnRlcm5hbGZv
cm1hdCksICZzaXplLCAmaGVpZ2h0LCAmbUxvZE9mZnNldCk7CisgICAgICAgIEhSRVNVTFQgcmVz
dWx0ID0gZGV2aWNlLT5DcmVhdGVDdWJlVGV4dHVyZShzaXplLCBsZXZlbHMgPyBsZXZlbHMgKyBt
TG9kT2Zmc2V0IDogMCwgZ2V0VXNhZ2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJlci0+Q29udmVydFRleHR1cmVJbnRlcm5hbEZv
cm1hdChpbnRlcm5hbGZvcm1hdCksIGdldFBvb2woKSwgJm1UZXh0dXJlLCBOVUxMKTsKKworICAg
ICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChy
ZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1P
UlkpOworICAgICAgICAgICAgZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICB9
CisgICAgfQorCisgICAgaW5pdGlhbGl6ZVJlbmRlclRhcmdldCgpOworfQorCitUZXh0dXJlU3Rv
cmFnZTlfQ3ViZTo6flRleHR1cmVTdG9yYWdlOV9DdWJlKCkKK3sKKyAgICBpZiAobVRleHR1cmUp
CisgICAgeworICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOworICAgIH0KKworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgNjsgKytpKQorICAgIHsKKyAgICAgICAgZGVsZXRlIG1SZW5kZXJUYXJn
ZXRbaV07CisgICAgfQorfQorCitUZXh0dXJlU3RvcmFnZTlfQ3ViZSAqVGV4dHVyZVN0b3JhZ2U5
X0N1YmU6Om1ha2VUZXh0dXJlU3RvcmFnZTlfQ3ViZShUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSkK
K3sKKyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShUZXh0dXJlU3RvcmFnZTlfQ3ViZSosIHN0
b3JhZ2UpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dHVyZVN0b3JhZ2U5X0N1YmUqPihz
dG9yYWdlKTsKK30KKworLy8gSW5jcmVtZW50cyByZWZjb3VudCBvbiBzdXJmYWNlLgorLy8gY2Fs
bGVyIG11c3QgUmVsZWFzZSgpIHRoZSByZXR1cm5lZCBzdXJmYWNlCitJRGlyZWN0M0RTdXJmYWNl
OSAqVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmdldEN1YmVNYXBTdXJmYWNlKEdMZW51bSBmYWNlVGFy
Z2V0LCBpbnQgbGV2ZWwsIGJvb2wgZGlydHkpCit7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1
cmZhY2UgPSBOVUxMOworCisgICAgaWYgKG1UZXh0dXJlKQorICAgIHsKKyAgICAgICAgRDNEQ1VC
RU1BUF9GQUNFUyBmYWNlID0gZ2xfZDNkOTo6Q29udmVydEN1YmVGYWNlKGZhY2VUYXJnZXQpOwor
ICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1UZXh0dXJlLT5HZXRDdWJlTWFwU3VyZmFjZShmYWNl
LCBsZXZlbCArIG1Mb2RPZmZzZXQsICZzdXJmYWNlKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURF
RChyZXN1bHQpKTsKKworICAgICAgICAvLyBXaXRoIG1hbmFnZWQgdGV4dHVyZXMgdGhlIGRyaXZl
ciBuZWVkcyB0byBiZSBpbmZvcm1lZCBvZiB1cGRhdGVzIHRvIHRoZSBsb3dlciBtaXBtYXAgbGV2
ZWxzCisgICAgICAgIGlmIChsZXZlbCAhPSAwICYmIGlzTWFuYWdlZCgpICYmIGRpcnR5KQorICAg
ICAgICB7CisgICAgICAgICAgICBtVGV4dHVyZS0+QWRkRGlydHlSZWN0KGZhY2UsIE5VTEwpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHN1cmZhY2U7Cit9CisKK1JlbmRlclRhcmdl
dCAqVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmdldFJlbmRlclRhcmdldChHTGVudW0gZmFjZVRhcmdl
dCkKK3sKKyAgICByZXR1cm4gbVJlbmRlclRhcmdldFtnbDo6VGV4dHVyZUN1YmVNYXA6OmZhY2VJ
bmRleChmYWNlVGFyZ2V0KV07Cit9CisKK3ZvaWQgVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmdlbmVy
YXRlTWlwbWFwKGludCBmYWNlLCBpbnQgbGV2ZWwpCit7CisgICAgSURpcmVjdDNEU3VyZmFjZTkg
KnVwcGVyID0gZ2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Y
ICsgZmFjZSwgbGV2ZWwgLSAxLCBmYWxzZSk7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKmxvd2Vy
ID0gZ2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgZmFj
ZSwgbGV2ZWwsIHRydWUpOworCisgICAgaWYgKHVwcGVyICE9IE5VTEwgJiYgbG93ZXIgIT0gTlVM
TCkKKyAgICB7CisgICAgICAgIG1SZW5kZXJlci0+Ym94RmlsdGVyKHVwcGVyLCBsb3dlcik7Cisg
ICAgfQorCisgICAgaWYgKHVwcGVyICE9IE5VTEwpIHVwcGVyLT5SZWxlYXNlKCk7CisgICAgaWYg
KGxvd2VyICE9IE5VTEwpIGxvd2VyLT5SZWxlYXNlKCk7Cit9CisKK0lEaXJlY3QzREJhc2VUZXh0
dXJlOSAqVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmdldEJhc2VUZXh0dXJlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVRleHR1cmU7Cit9CisKK3ZvaWQgVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmluaXRp
YWxpemVSZW5kZXJUYXJnZXQoKQoreworICAgIGlmIChtVGV4dHVyZSAhPSBOVUxMICYmIGlzUmVu
ZGVyVGFyZ2V0KCkpCisgICAgeworICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSA9
IE5VTEw7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2OyArK2kpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVChtUmVuZGVyVGFyZ2V0W2ldID09IE5VTEwpOworCisgICAgICAg
ICAgICBzdXJmYWNlID0gZ2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9YICsgaSwgMCwgZmFsc2UpOworCisgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0W2ldID0g
bmV3IFJlbmRlclRhcmdldDkobVJlbmRlcmVyLCBzdXJmYWNlKTsKKyAgICAgICAgfQorICAgIH0K
K30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9U
ZXh0dXJlU3RvcmFnZTkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTA5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVGV4dHVyZVN0b3JhZ2U5Lmg6IERl
ZmluZXMgdGhlIGFic3RyYWN0IHJ4OjpUZXh0dXJlU3RvcmFnZTkgY2xhc3MgYW5kIGl0cyBjb25j
cmV0ZSBkZXJpdmVkCisvLyBjbGFzc2VzIFRleHR1cmVTdG9yYWdlOV8yRCBhbmQgVGV4dHVyZVN0
b3JhZ2U5X0N1YmUsIHdoaWNoIGFjdCBhcyB0aGUgaW50ZXJmYWNlIHRvIHRoZQorLy8gRDNEOSB0
ZXh0dXJlLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9URVhUVVJFU1RPUkFHRTlfSF8K
KyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1RFWFRVUkVTVE9SQUdFOV9IXworCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlLmgiCisjaW5jbHVkZSAiY29tbW9u
L2RlYnVnLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI5OworY2xhc3MgU3dh
cENoYWluOTsKK2NsYXNzIFJlbmRlclRhcmdldDsKK2NsYXNzIFJlbmRlclRhcmdldDk7CitjbGFz
cyBCbGl0OworCitjbGFzcyBUZXh0dXJlU3RvcmFnZTkgOiBwdWJsaWMgVGV4dHVyZVN0b3JhZ2UK
K3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlOShSZW5kZXJlciAqcmVuZGVyZXIsIERX
T1JEIHVzYWdlKTsKKyAgICB2aXJ0dWFsIH5UZXh0dXJlU3RvcmFnZTkoKTsKKworICAgIHN0YXRp
YyBUZXh0dXJlU3RvcmFnZTkgKm1ha2VUZXh0dXJlU3RvcmFnZTkoVGV4dHVyZVN0b3JhZ2UgKnN0
b3JhZ2UpOworCisgICAgc3RhdGljIERXT1JEIEdldFRleHR1cmVVc2FnZShEM0RGT1JNQVQgZDNk
Zm10LCBHTGVudW0gZ2x1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUpOworICAgIHN0YXRpYyBi
b29sIElzVGV4dHVyZUZvcm1hdFJlbmRlcmFibGUoRDNERk9STUFUIGZvcm1hdCk7CisKKyAgICBE
M0RQT09MIGdldFBvb2woKSBjb25zdDsKKyAgICBEV09SRCBnZXRVc2FnZSgpIGNvbnN0OworCisg
ICAgdmlydHVhbCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKmdldEJhc2VUZXh0dXJlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoKSB7IHJldHVy
biBOVUxMOyB9CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChHTGVu
dW0gZmFjZVRhcmdldCkgeyByZXR1cm4gTlVMTDsgfQorICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0
ZU1pcG1hcChpbnQgbGV2ZWwpIHt9OworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcChp
bnQgZmFjZSwgaW50IGxldmVsKSB7fTsKKworICAgIHZpcnR1YWwgaW50IGdldExvZE9mZnNldCgp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclRhcmdldCgpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBpc01hbmFnZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBsZXZlbENvdW50
KCk7CisKKyAgcHJvdGVjdGVkOgorICAgIGludCBtTG9kT2Zmc2V0OworICAgIFJlbmRlcmVyOSAq
bVJlbmRlcmVyOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRl
eHR1cmVTdG9yYWdlOSk7CisKKyAgICBjb25zdCBEV09SRCBtRDNEVXNhZ2U7CisgICAgY29uc3Qg
RDNEUE9PTCBtRDNEUG9vbDsKK307CisKK2NsYXNzIFRleHR1cmVTdG9yYWdlOV8yRCA6IHB1Ymxp
YyBUZXh0dXJlU3RvcmFnZTkKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlOV8yRChS
ZW5kZXJlciAqcmVuZGVyZXIsIFN3YXBDaGFpbjkgKnN3YXBjaGFpbik7CisgICAgVGV4dHVyZVN0
b3JhZ2U5XzJEKFJlbmRlcmVyICpyZW5kZXJlciwgaW50IGxldmVscywgR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHTGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCk7CisgICAgdmlydHVhbCB+VGV4dHVyZVN0b3JhZ2U5XzJEKCk7CisK
KyAgICBzdGF0aWMgVGV4dHVyZVN0b3JhZ2U5XzJEICptYWtlVGV4dHVyZVN0b3JhZ2U5XzJEKFRl
eHR1cmVTdG9yYWdlICpzdG9yYWdlKTsKKworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRTdXJm
YWNlTGV2ZWwoaW50IGxldmVsLCBib29sIGRpcnR5KTsKKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdl
dCAqZ2V0UmVuZGVyVGFyZ2V0KCk7CisgICAgdmlydHVhbCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkg
KmdldEJhc2VUZXh0dXJlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFw
KGludCBsZXZlbCk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04o
VGV4dHVyZVN0b3JhZ2U5XzJEKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZVJlbmRlclRhcmdldCgp
OworCisgICAgSURpcmVjdDNEVGV4dHVyZTkgKm1UZXh0dXJlOworICAgIFJlbmRlclRhcmdldDkg
Km1SZW5kZXJUYXJnZXQ7Cit9OworCitjbGFzcyBUZXh0dXJlU3RvcmFnZTlfQ3ViZSA6IHB1Ymxp
YyBUZXh0dXJlU3RvcmFnZTkKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlOV9DdWJl
KFJlbmRlcmVyICpyZW5kZXJlciwgaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
TGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBpbnQgc2l6ZSk7CisgICAgdmlydHVh
bCB+VGV4dHVyZVN0b3JhZ2U5X0N1YmUoKTsKKworICAgIHN0YXRpYyBUZXh0dXJlU3RvcmFnZTlf
Q3ViZSAqbWFrZVRleHR1cmVTdG9yYWdlOV9DdWJlKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlKTsK
KworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRDdWJlTWFwU3VyZmFjZShHTGVudW0gZmFjZVRh
cmdldCwgaW50IGxldmVsLCBib29sIGRpcnR5KTsKKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAq
Z2V0UmVuZGVyVGFyZ2V0KEdMZW51bSBmYWNlVGFyZ2V0KTsKKyAgICB2aXJ0dWFsIElEaXJlY3Qz
REJhc2VUZXh0dXJlOSAqZ2V0QmFzZVRleHR1cmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2VuZXJhdGVNaXBtYXAoaW50IGZhY2UsIGludCBsZXZlbCk7CisKKyAgcHJpdmF0ZToKKyAgICBE
SVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZVN0b3JhZ2U5X0N1YmUpOworCisgICAgdm9p
ZCBpbml0aWFsaXplUmVuZGVyVGFyZ2V0KCk7CisKKyAgICBJRGlyZWN0M0RDdWJlVGV4dHVyZTkg
Km1UZXh0dXJlOworICAgIFJlbmRlclRhcmdldDkgKm1SZW5kZXJUYXJnZXRbNl07Cit9OworCit9
CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfVEVYVFVSRVNUT1JBR0U5X0hfCisKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVy
ZVN0b3JhZ2UxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0
b3JhZ2UxMS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjc2IEBACisjaW5jbHVkZSAicHJl
Y29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBUZXh0dXJlU3RvcmFnZTExLmNwcDogSW1w
bGVtZW50cyB0aGUgYWJzdHJhY3Qgcng6OlRleHR1cmVTdG9yYWdlMTEgY2xhc3MgYW5kIGl0cyBj
b25jcmV0ZSBkZXJpdmVkCisvLyBjbGFzc2VzIFRleHR1cmVTdG9yYWdlMTFfMkQgYW5kIFRleHR1
cmVTdG9yYWdlMTFfQ3ViZSwgd2hpY2ggYWN0IGFzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIEQzRDEx
IHRleHR1cmUuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2Ux
MS5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0MTEuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvU3dhcENoYWluMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvcmVuZGVyZXIxMV91dGlscy5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisKK25hbWVzcGFjZSByeAoreworCitUZXh0
dXJlU3RvcmFnZTExOjpUZXh0dXJlU3RvcmFnZTExKFJlbmRlcmVyICpyZW5kZXJlciwgVUlOVCBi
aW5kRmxhZ3MpCisgICAgOiBtQmluZEZsYWdzKGJpbmRGbGFncyksCisgICAgICBtTG9kT2Zmc2V0
KDApLAorICAgICAgbU1pcExldmVscygwKSwKKyAgICAgIG1UZXh0dXJlKE5VTEwpLAorICAgICAg
bVRleHR1cmVGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBtU2hhZGVyUmVzb3Vy
Y2VGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBtUmVuZGVyVGFyZ2V0Rm9ybWF0
KERYR0lfRk9STUFUX1VOS05PV04pLAorICAgICAgbURlcHRoU3RlbmNpbEZvcm1hdChEWEdJX0ZP
Uk1BVF9VTktOT1dOKSwKKyAgICAgIG1TUlYoTlVMTCksCisgICAgICBtVGV4dHVyZVdpZHRoKDAp
LAorICAgICAgbVRleHR1cmVIZWlnaHQoMCkKK3sKKyAgICBtUmVuZGVyZXIgPSBSZW5kZXJlcjEx
OjptYWtlUmVuZGVyZXIxMShyZW5kZXJlcik7Cit9CisKK1RleHR1cmVTdG9yYWdlMTE6On5UZXh0
dXJlU3RvcmFnZTExKCkKK3sKK30KKworVGV4dHVyZVN0b3JhZ2UxMSAqVGV4dHVyZVN0b3JhZ2Ux
MTo6bWFrZVRleHR1cmVTdG9yYWdlMTEoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UpCit7CisgICAg
QVNTRVJUKEhBU19EWU5BTUlDX1RZUEUoVGV4dHVyZVN0b3JhZ2UxMSosIHN0b3JhZ2UpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dHVyZVN0b3JhZ2UxMSo+KHN0b3JhZ2UpOworfQorCitE
V09SRCBUZXh0dXJlU3RvcmFnZTExOjpHZXRUZXh0dXJlQmluZEZsYWdzKERYR0lfRk9STUFUIGZv
cm1hdCwgR0xlbnVtIGdsdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlKQoreworICAgIFVJTlQg
YmluZEZsYWdzID0gRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0U7CisgICAgCisgICAgaWYgKGQz
ZDExOjpJc0RlcHRoU3RlbmNpbEZvcm1hdChmb3JtYXQpKQorICAgIHsKKyAgICAgICAgYmluZEZs
YWdzIHw9IEQzRDExX0JJTkRfREVQVEhfU1RFTkNJTDsKKyAgICB9CisgICAgZWxzZSBpZihmb3Jj
ZVJlbmRlcmFibGUgfHwgKFRleHR1cmVTdG9yYWdlMTE6OklzVGV4dHVyZUZvcm1hdFJlbmRlcmFi
bGUoZm9ybWF0KSAmJiAoZ2x1c2FnZSA9PSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xF
KSkpCisgICAgeworICAgICAgICBiaW5kRmxhZ3MgfD0gRDNEMTFfQklORF9SRU5ERVJfVEFSR0VU
OworICAgIH0KKyAgICByZXR1cm4gYmluZEZsYWdzOworfQorCitib29sIFRleHR1cmVTdG9yYWdl
MTE6OklzVGV4dHVyZUZvcm1hdFJlbmRlcmFibGUoRFhHSV9GT1JNQVQgZm9ybWF0KQoreworICAg
IHN3aXRjaChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQThfVU5PUk06CisgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyX0ZMT0FUOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SOF9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VTk9STToKKyAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjE2X0ZMT0FUOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZH
MTZfRkxPQVQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzFfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9STTogCisgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDM19VTk9STToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZGVm
YXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK30KKworVUlOVCBUZXh0dXJlU3RvcmFnZTExOjpnZXRCaW5kRmxhZ3MoKSBjb25zdAorewor
ICAgIHJldHVybiBtQmluZEZsYWdzOworfQorCitJRDNEMTFUZXh0dXJlMkQgKlRleHR1cmVTdG9y
YWdlMTE6OmdldEJhc2VUZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmU7Cit9
CisKK2ludCBUZXh0dXJlU3RvcmFnZTExOjpnZXRMb2RPZmZzZXQoKSBjb25zdAoreworICAgIHJl
dHVybiBtTG9kT2Zmc2V0OworfQorCitib29sIFRleHR1cmVTdG9yYWdlMTE6OmlzUmVuZGVyVGFy
Z2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1CaW5kRmxhZ3MgJiAoRDNEMTFfQklORF9SRU5E
RVJfVEFSR0VUIHwgRDNEMTFfQklORF9ERVBUSF9TVEVOQ0lMKSkgIT0gMDsKK30KKyAgICAKK2Jv
b2wgVGV4dHVyZVN0b3JhZ2UxMTo6aXNNYW5hZ2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2ludCBUZXh0dXJlU3RvcmFnZTExOjpsZXZlbENvdW50KCkKK3sKKyAgICBpbnQg
bGV2ZWxzID0gMDsKKyAgICBpZiAoZ2V0QmFzZVRleHR1cmUoKSkKKyAgICB7CisgICAgICAgIGxl
dmVscyA9IG1NaXBMZXZlbHMgLSBnZXRMb2RPZmZzZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIGxl
dmVsczsKK30KKworVUlOVCBUZXh0dXJlU3RvcmFnZTExOjpnZXRTdWJyZXNvdXJjZUluZGV4KGlu
dCBsZXZlbCwgaW50IGZhY2VJbmRleCkKK3sKKyAgICBVSU5UIGluZGV4ID0gMDsKKyAgICBpZiAo
Z2V0QmFzZVRleHR1cmUoKSkKKyAgICB7CisgICAgICAgIGluZGV4ID0gRDNEMTFDYWxjU3VicmVz
b3VyY2UobGV2ZWwsIGZhY2VJbmRleCwgbU1pcExldmVscyk7CisgICAgfQorICAgIHJldHVybiBp
bmRleDsKK30KKworYm9vbCBUZXh0dXJlU3RvcmFnZTExOjp1cGRhdGVTdWJyZXNvdXJjZUxldmVs
KElEM0QxMVRleHR1cmUyRCAqc3JjVGV4dHVyZSwgdW5zaWduZWQgaW50IHNvdXJjZVN1YnJlc291
cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBs
ZXZlbCwgaW50IGZhY2UsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQpCit7CisgICAgaWYgKHNyY1RleHR1cmUpCisgICAgeworICAgICAgICAvLyBSb3Vu
ZCB1cCB0aGUgd2lkdGggYW5kIGhlaWdodCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiBkaW1l
bnNpb24gYWxpZ25tZW50CisgICAgICAgIHVuc2lnbmVkIGludCBkaW1lbnNpb25BbGlnbm1lbnQg
PSBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdERpbWVuc2lvbkFsaWdubWVudChtVGV4dHVyZUZvcm1h
dCk7CisgICAgICAgIHdpZHRoID0gd2lkdGggKyBkaW1lbnNpb25BbGlnbm1lbnQgLSAxIC0gKHdp
ZHRoIC0gMSkgJSBkaW1lbnNpb25BbGlnbm1lbnQ7CisgICAgICAgIGhlaWdodCA9IGhlaWdodCAr
IGRpbWVuc2lvbkFsaWdubWVudCAtIDEgLSAoaGVpZ2h0IC0gMSkgJSBkaW1lbnNpb25BbGlnbm1l
bnQ7CisKKyAgICAgICAgRDNEMTFfQk9YIHNyY0JveDsKKyAgICAgICAgc3JjQm94LmxlZnQgPSB4
b2Zmc2V0OworICAgICAgICBzcmNCb3gudG9wID0geW9mZnNldDsKKyAgICAgICAgc3JjQm94LnJp
Z2h0ID0geG9mZnNldCArIHdpZHRoOworICAgICAgICBzcmNCb3guYm90dG9tID0geW9mZnNldCAr
IGhlaWdodDsKKyAgICAgICAgc3JjQm94LmZyb250ID0gMDsKKyAgICAgICAgc3JjQm94LmJhY2sg
PSAxOworCisgICAgICAgIElEM0QxMURldmljZUNvbnRleHQgKmNvbnRleHQgPSBtUmVuZGVyZXIt
PmdldERldmljZUNvbnRleHQoKTsKKyAgICAgICAgCisgICAgICAgIEFTU0VSVChnZXRCYXNlVGV4
dHVyZSgpKTsKKyAgICAgICAgY29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKGdldEJhc2VU
ZXh0dXJlKCksIGdldFN1YnJlc291cmNlSW5kZXgobGV2ZWwgKyBtTG9kT2Zmc2V0LCBmYWNlKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvZmZzZXQsIHlvZmZzZXQs
IDAsIHNyY1RleHR1cmUsIHNvdXJjZVN1YnJlc291cmNlLCAmc3JjQm94KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFRleHR1cmVT
dG9yYWdlMTE6OmdlbmVyYXRlTWlwbWFwTGF5ZXIoUmVuZGVyVGFyZ2V0MTEgKnNvdXJjZSwgUmVu
ZGVyVGFyZ2V0MTEgKmRlc3QpCit7CisgICAgaWYgKHNvdXJjZSAmJiBkZXN0KQorICAgIHsKKyAg
ICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2VTUlYgPSBzb3VyY2UtPmdldFNo
YWRlclJlc291cmNlVmlldygpOworICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0
UlRWID0gZGVzdC0+Z2V0UmVuZGVyVGFyZ2V0VmlldygpOworCisgICAgICAgIGlmIChzb3VyY2VT
UlYgJiYgZGVzdFJUVikKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlJlY3RhbmdsZSBzb3Vy
Y2VBcmVhOworICAgICAgICAgICAgc291cmNlQXJlYS54ID0gMDsKKyAgICAgICAgICAgIHNvdXJj
ZUFyZWEueSA9IDA7CisgICAgICAgICAgICBzb3VyY2VBcmVhLndpZHRoID0gc291cmNlLT5nZXRX
aWR0aCgpOworICAgICAgICAgICAgc291cmNlQXJlYS5oZWlnaHQgPSBzb3VyY2UtPmdldEhlaWdo
dCgpOworCisgICAgICAgICAgICBnbDo6UmVjdGFuZ2xlIGRlc3RBcmVhOworICAgICAgICAgICAg
ZGVzdEFyZWEueCA9IDA7CisgICAgICAgICAgICBkZXN0QXJlYS55ID0gMDsKKyAgICAgICAgICAg
IGRlc3RBcmVhLndpZHRoID0gZGVzdC0+Z2V0V2lkdGgoKTsKKyAgICAgICAgICAgIGRlc3RBcmVh
LmhlaWdodCA9IGRlc3QtPmdldEhlaWdodCgpOworCisgICAgICAgICAgICBtUmVuZGVyZXItPmNv
cHlUZXh0dXJlKHNvdXJjZVNSViwgc291cmNlQXJlYSwgc291cmNlLT5nZXRXaWR0aCgpLCBzb3Vy
Y2UtPmdldEhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0
UlRWLCBkZXN0QXJlYSwgZGVzdC0+Z2V0V2lkdGgoKSwgZGVzdC0+Z2V0SGVpZ2h0KCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKHNvdXJjZVNSVikKKyAgICAgICAgeworICAgICAgICAgICAgc291cmNlU1JWLT5S
ZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlc3RSVFYpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlc3RSVFYtPlJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworVGV4
dHVyZVN0b3JhZ2UxMV8yRDo6VGV4dHVyZVN0b3JhZ2UxMV8yRChSZW5kZXJlciAqcmVuZGVyZXIs
IFN3YXBDaGFpbjExICpzd2FwY2hhaW4pCisgICAgOiBUZXh0dXJlU3RvcmFnZTExKHJlbmRlcmVy
LCBEM0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQgfCBEM0QxMV9CSU5EX1NIQURFUl9SRVNPVVJDRSkK
K3sKKyAgICBtVGV4dHVyZSA9IHN3YXBjaGFpbi0+Z2V0T2Zmc2NyZWVuVGV4dHVyZSgpOworICAg
IG1TUlYgPSBzd2FwY2hhaW4tPmdldFJlbmRlclRhcmdldFNoYWRlclJlc291cmNlKCk7CisKKyAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVY
VFVSRV9MRVZFTFM7IGkrKykKKyAgICB7CisgICAgICAgIG1SZW5kZXJUYXJnZXRbaV0gPSBOVUxM
OworICAgIH0KKworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleERlc2M7CisgICAgbVRleHR1
cmUtPkdldERlc2MoJnRleERlc2MpOworICAgIG1NaXBMZXZlbHMgPSB0ZXhEZXNjLk1pcExldmVs
czsKKyAgICBtVGV4dHVyZUZvcm1hdCA9IHRleERlc2MuRm9ybWF0OworICAgIG1UZXh0dXJlV2lk
dGggPSB0ZXhEZXNjLldpZHRoOworICAgIG1UZXh0dXJlSGVpZ2h0ID0gdGV4RGVzYy5IZWlnaHQ7
CisKKyAgICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHNydkRlc2M7CisgICAgbVNS
Vi0+R2V0RGVzYygmc3J2RGVzYyk7CisgICAgbVNoYWRlclJlc291cmNlRm9ybWF0ID0gc3J2RGVz
Yy5Gb3JtYXQ7CisKKyAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3KiBvZmZzY3JlZW5SVFYgPSBz
d2FwY2hhaW4tPmdldFJlbmRlclRhcmdldCgpOworICAgIEQzRDExX1JFTkRFUl9UQVJHRVRfVklF
V19ERVNDIHJ0dkRlc2M7CisgICAgb2Zmc2NyZWVuUlRWLT5HZXREZXNjKCZydHZEZXNjKTsKKyAg
ICBtUmVuZGVyVGFyZ2V0Rm9ybWF0ID0gcnR2RGVzYy5Gb3JtYXQ7CisgICAgb2Zmc2NyZWVuUlRW
LT5SZWxlYXNlKCk7CisKKyAgICBtRGVwdGhTdGVuY2lsRm9ybWF0ID0gRFhHSV9GT1JNQVRfVU5L
Tk9XTjsKK30KKworVGV4dHVyZVN0b3JhZ2UxMV8yRDo6VGV4dHVyZVN0b3JhZ2UxMV8yRChSZW5k
ZXJlciAqcmVuZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVt
IHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQpCisgICAgOiBUZXh0dXJlU3RvcmFnZTExKHJlbmRlcmVyLCBHZXRUZXh0dXJlQmluZEZsYWdz
KGdsX2QzZDExOjpDb252ZXJ0VGV4dHVyZUZvcm1hdChpbnRlcm5hbGZvcm1hdCksIHVzYWdlLCBm
b3JjZVJlbmRlcmFibGUpKQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2w6
OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQorICAgIHsKKyAgICAgICAg
bVJlbmRlclRhcmdldFtpXSA9IE5VTEw7CisgICAgfQorCisgICAgRFhHSV9GT1JNQVQgY29udmVy
dGVkRm9ybWF0ID0gZ2xfZDNkMTE6OkNvbnZlcnRUZXh0dXJlRm9ybWF0KGludGVybmFsZm9ybWF0
KTsKKyAgICBpZiAoZDNkMTE6OklzRGVwdGhTdGVuY2lsRm9ybWF0KGNvbnZlcnRlZEZvcm1hdCkp
CisgICAgeworICAgICAgICBtVGV4dHVyZUZvcm1hdCA9IGQzZDExOjpHZXREZXB0aFRleHR1cmVG
b3JtYXQoY29udmVydGVkRm9ybWF0KTsKKyAgICAgICAgbVNoYWRlclJlc291cmNlRm9ybWF0ID0g
ZDNkMTE6OkdldERlcHRoU2hhZGVyUmVzb3VyY2VGb3JtYXQoY29udmVydGVkRm9ybWF0KTsKKyAg
ICAgICAgbURlcHRoU3RlbmNpbEZvcm1hdCA9IGNvbnZlcnRlZEZvcm1hdDsKKyAgICAgICAgbVJl
bmRlclRhcmdldEZvcm1hdCA9IERYR0lfRk9STUFUX1VOS05PV047CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIG1UZXh0dXJlRm9ybWF0ID0gY29udmVydGVkRm9ybWF0OworICAgICAg
ICBtU2hhZGVyUmVzb3VyY2VGb3JtYXQgPSBjb252ZXJ0ZWRGb3JtYXQ7CisgICAgICAgIG1EZXB0
aFN0ZW5jaWxGb3JtYXQgPSBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAgICAgICBtUmVuZGVyVGFy
Z2V0Rm9ybWF0ID0gY29udmVydGVkRm9ybWF0OworICAgIH0KKworICAgIC8vIGlmIHRoZSB3aWR0
aCBvciBoZWlnaHQgaXMgbm90IHBvc2l0aXZlIHRoaXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4g
aW5jb21wbGV0ZSB0ZXh0dXJlCisgICAgLy8gd2UgaGFuZGxlIHRoYXQgaGVyZSBieSBza2lwcGlu
ZyB0aGUgZDNkIHRleHR1cmUgY3JlYXRpb24KKyAgICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+
IDApCisgICAgeworICAgICAgICAvLyBhZGp1c3Qgc2l6ZSBpZiBuZWVkZWQgZm9yIGNvbXByZXNz
ZWQgdGV4dHVyZXMKKyAgICAgICAgZ2w6Ok1ha2VWYWxpZFNpemUoZmFsc2UsIGdsOjpJc0NvbXBy
ZXNzZWQoaW50ZXJuYWxmb3JtYXQpLCAmd2lkdGgsICZoZWlnaHQsICZtTG9kT2Zmc2V0KTsKKwor
ICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisK
KyAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVzYzsKKyAgICAgICAgZGVzYy5XaWR0aCA9
IHdpZHRoOyAgICAgIC8vIENvbXByZXNzZWQgdGV4dHVyZSBzaXplIGNvbnN0cmFpbnRzPworICAg
ICAgICBkZXNjLkhlaWdodCA9IGhlaWdodDsKKyAgICAgICAgZGVzYy5NaXBMZXZlbHMgPSAobGV2
ZWxzID4gMCkgPyBsZXZlbHMgKyBtTG9kT2Zmc2V0IDogMDsKKyAgICAgICAgZGVzYy5BcnJheVNp
emUgPSAxOworICAgICAgICBkZXNjLkZvcm1hdCA9IG1UZXh0dXJlRm9ybWF0OworICAgICAgICBk
ZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICBkZXNjLlNhbXBsZURlc2MuUXVhbGl0
eSA9IDA7CisgICAgICAgIGRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOworICAgICAg
ICBkZXNjLkJpbmRGbGFncyA9IGdldEJpbmRGbGFncygpOworICAgICAgICBkZXNjLkNQVUFjY2Vz
c0ZsYWdzID0gMDsKKyAgICAgICAgZGVzYy5NaXNjRmxhZ3MgPSAwOworCisgICAgICAgIEhSRVNV
TFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlc2MsIE5VTEwsICZtVGV4dHVy
ZSk7CisKKyAgICAgICAgLy8gdGhpcyBjYW4gaGFwcGVuIGZyb20gd2luZG93cyBURFIKKyAgICAg
ICAgaWYgKGQzZDExOjppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgICAgICB7CisgICAg
ICAgICAgICBtUmVuZGVyZXItPm5vdGlmeURldmljZUxvc3QoKTsKKyAgICAgICAgICAgIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChGQUlM
RUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09V
VE9GTUVNT1JZKTsKKyAgICAgICAgICAgIEVSUigiQ3JlYXRpbmcgaW1hZ2UgZmFpbGVkLiIpOwor
ICAgICAgICAgICAgZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbVRleHR1cmUtPkdldERlc2MoJmRlc2Mp
OworICAgICAgICAgICAgbU1pcExldmVscyA9IGRlc2MuTWlwTGV2ZWxzOworICAgICAgICAgICAg
bVRleHR1cmVXaWR0aCA9IGRlc2MuV2lkdGg7CisgICAgICAgICAgICBtVGV4dHVyZUhlaWdodCA9
IGRlc2MuSGVpZ2h0OworICAgICAgICB9CisgICAgfQorfQorCitUZXh0dXJlU3RvcmFnZTExXzJE
Ojp+VGV4dHVyZVN0b3JhZ2UxMV8yRCgpCit7CisgICAgaWYgKG1UZXh0dXJlKQorICAgIHsKKyAg
ICAgICAgbVRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbVRleHR1cmUgPSBOVUxMOworICAg
IH0KKworICAgIGlmIChtU1JWKQorICAgIHsKKyAgICAgICAgbVNSVi0+UmVsZWFzZSgpOworICAg
ICAgICBtU1JWID0gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7IGkrKykKKyAgICB7Cisg
ICAgICAgIGRlbGV0ZSBtUmVuZGVyVGFyZ2V0W2ldOworICAgICAgICBtUmVuZGVyVGFyZ2V0W2ld
ID0gTlVMTDsKKyAgICB9Cit9CisKK1RleHR1cmVTdG9yYWdlMTFfMkQgKlRleHR1cmVTdG9yYWdl
MTFfMkQ6Om1ha2VUZXh0dXJlU3RvcmFnZTExXzJEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlKQor
eworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKFRleHR1cmVTdG9yYWdlMTFfMkQqLCBzdG9y
YWdlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHR1cmVTdG9yYWdlMTFfMkQqPihzdG9y
YWdlKTsKK30KKworUmVuZGVyVGFyZ2V0ICpUZXh0dXJlU3RvcmFnZTExXzJEOjpnZXRSZW5kZXJU
YXJnZXQoaW50IGxldmVsKQoreworICAgIGlmIChsZXZlbCA+PSAwICYmIGxldmVsIDwgc3RhdGlj
X2Nhc3Q8aW50PihtTWlwTGV2ZWxzKSkKKyAgICB7CisgICAgICAgIGlmICghbVJlbmRlclRhcmdl
dFtsZXZlbF0pCisgICAgICAgIHsKKyAgICAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0g
bVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0OworCisg
ICAgICAgICAgICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHNydkRlc2M7CisgICAg
ICAgICAgICBzcnZEZXNjLkZvcm1hdCA9IG1TaGFkZXJSZXNvdXJjZUZvcm1hdDsKKyAgICAgICAg
ICAgIHNydkRlc2MuVmlld0RpbWVuc2lvbiA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJE
OworICAgICAgICAgICAgc3J2RGVzYy5UZXh0dXJlMkQuTW9zdERldGFpbGVkTWlwID0gbGV2ZWw7
CisgICAgICAgICAgICBzcnZEZXNjLlRleHR1cmUyRC5NaXBMZXZlbHMgPSAxOworCisgICAgICAg
ICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydjsKKyAgICAgICAgICAgIHJlc3VsdCA9
IGRldmljZS0+Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KG1UZXh0dXJlLCAmc3J2RGVzYywgJnNy
dik7CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlks
IHN0YXRpY19jYXN0PFJlbmRlclRhcmdldCo+KE5VTEwpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgICAgIGlmIChtUmVu
ZGVyVGFyZ2V0Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKKyAg
ICAgICAgICAgICAgICBydHZEZXNjLkZvcm1hdCA9IG1SZW5kZXJUYXJnZXRGb3JtYXQ7CisgICAg
ICAgICAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9U
RVhUVVJFMkQ7CisgICAgICAgICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkQuTWlwU2xpY2UgPSBs
ZXZlbDsKKworICAgICAgICAgICAgICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnJ0djsKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcobVRl
eHR1cmUsICZydHZEZXNjLCAmcnR2KTsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0g
RV9PVVRPRk1FTU9SWSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNy
di0+UmVsZWFzZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlksIHN0YXRpY19jYXN0PFJlbmRlclRhcmdldCo+KE5VTEwpKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKwor
ICAgICAgICAgICAgICAgIC8vIFJlbmRlclRhcmdldDExIGV4cGVjdHMgdG8gYmUgdGhlIG93bmVy
IG9mIHRoZSByZXNvdXJjZXMgaXQgaXMgZ2l2ZW4gYnV0IFRleHR1cmVTdG9yYWdlMTEKKyAgICAg
ICAgICAgICAgICAvLyBhbHNvIG5lZWRzIHRvIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHRleHR1
cmUuCisgICAgICAgICAgICAgICAgbVRleHR1cmUtPkFkZFJlZigpOworCisgICAgICAgICAgICAg
ICAgbVJlbmRlclRhcmdldFtsZXZlbF0gPSBuZXcgUmVuZGVyVGFyZ2V0MTEobVJlbmRlcmVyLCBy
dHYsIG1UZXh0dXJlLCBzcnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXgobVRleHR1cmVXaWR0aCA+PiBsZXZlbCwgMVUp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWF4KG1UZXh0dXJlSGVpZ2h0ID4+IGxldmVsLCAxVSkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSBpZiAobURlcHRoU3RlbmNpbEZvcm1hdCAhPSBEWEdJX0ZPUk1B
VF9VTktOT1dOKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEQzRDExX0RFUFRIX1NU
RU5DSUxfVklFV19ERVNDIGRzdkRlc2M7CisgICAgICAgICAgICAgICAgZHN2RGVzYy5Gb3JtYXQg
PSBtRGVwdGhTdGVuY2lsRm9ybWF0OworICAgICAgICAgICAgICAgIGRzdkRlc2MuVmlld0RpbWVu
c2lvbiA9IEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJEOworICAgICAgICAgICAgICAgIGRz
dkRlc2MuVGV4dHVyZTJELk1pcFNsaWNlID0gbGV2ZWw7CisgICAgICAgICAgICAgICAgZHN2RGVz
Yy5GbGFncyA9IDA7CisKKyAgICAgICAgICAgICAgICBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpk
c3Y7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVEZXB0aFN0ZW5jaWxW
aWV3KG1UZXh0dXJlLCAmZHN2RGVzYywgJmRzdik7CisKKyAgICAgICAgICAgICAgICBpZiAocmVz
dWx0ID09IEVfT1VUT0ZNRU1PUlkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBzcnYtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9PVVRfT0ZfTUVNT1JZLCBzdGF0aWNfY2FzdDxSZW5kZXJUYXJnZXQqPihOVUxMKSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0
KSk7CisKKyAgICAgICAgICAgICAgICAvLyBSZW5kZXJUYXJnZXQxMSBleHBlY3RzIHRvIGJlIHRo
ZSBvd25lciBvZiB0aGUgcmVzb3VyY2VzIGl0IGlzIGdpdmVuIGJ1dCBUZXh0dXJlU3RvcmFnZTEx
CisgICAgICAgICAgICAgICAgLy8gYWxzbyBuZWVkcyB0byBrZWVwIGEgcmVmZXJlbmNlIHRvIHRo
ZSB0ZXh0dXJlLgorICAgICAgICAgICAgICAgIG1UZXh0dXJlLT5BZGRSZWYoKTsKKworICAgICAg
ICAgICAgICAgIG1SZW5kZXJUYXJnZXRbbGV2ZWxdID0gbmV3IFJlbmRlclRhcmdldDExKG1SZW5k
ZXJlciwgZHN2LCBtVGV4dHVyZSwgc3J2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KG1UZXh0dXJlV2lkdGggPj4gbGV2
ZWwsIDFVKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om1heChtVGV4dHVyZUhlaWdodCA+PiBsZXZlbCwgMVUpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIG1SZW5kZXJUYXJnZXRbbGV2ZWxdOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK0lEM0QxMVNoYWRlclJlc291cmNlVmlldyAqVGV4
dHVyZVN0b3JhZ2UxMV8yRDo6Z2V0U1JWKCkKK3sKKyAgICBpZiAoIW1TUlYpCisgICAgeworICAg
ICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAg
ICAgICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZEZXNjOworICAgICAgICBz
cnZEZXNjLkZvcm1hdCA9IG1TaGFkZXJSZXNvdXJjZUZvcm1hdDsKKyAgICAgICAgc3J2RGVzYy5W
aWV3RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkQ7CisgICAgICAgIHNy
dkRlc2MuVGV4dHVyZTJELk1pcExldmVscyA9IChtTWlwTGV2ZWxzID09IDAgPyAtMSA6IG1NaXBM
ZXZlbHMpOworICAgICAgICBzcnZEZXNjLlRleHR1cmUyRC5Nb3N0RGV0YWlsZWRNaXAgPSAwOwor
CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVTaGFkZXJSZXNvdXJjZVZp
ZXcobVRleHR1cmUsICZzcnZEZXNjLCAmbVNSVik7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBF
X09VVE9GTUVNT1JZKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlksIHN0YXRpY19jYXN0PElEM0QxMVNoYWRlclJlc291cmNlVmlldyo+KE5V
TEwpKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAg
IH0KKworICAgIHJldHVybiBtU1JWOworfQorCit2b2lkIFRleHR1cmVTdG9yYWdlMTFfMkQ6Omdl
bmVyYXRlTWlwbWFwKGludCBsZXZlbCkKK3sKKyAgICBSZW5kZXJUYXJnZXQxMSAqc291cmNlID0g
UmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShnZXRSZW5kZXJUYXJnZXQobGV2ZWwg
LSAxKSk7CisgICAgUmVuZGVyVGFyZ2V0MTEgKmRlc3QgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJl
bmRlclRhcmdldDExKGdldFJlbmRlclRhcmdldChsZXZlbCkpOworCisgICAgZ2VuZXJhdGVNaXBt
YXBMYXllcihzb3VyY2UsIGRlc3QpOworfQorCitUZXh0dXJlU3RvcmFnZTExX0N1YmU6OlRleHR1
cmVTdG9yYWdlMTFfQ3ViZShSZW5kZXJlciAqcmVuZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgaW50IHNp
emUpCisgICAgOiBUZXh0dXJlU3RvcmFnZTExKHJlbmRlcmVyLCBHZXRUZXh0dXJlQmluZEZsYWdz
KGdsX2QzZDExOjpDb252ZXJ0VGV4dHVyZUZvcm1hdChpbnRlcm5hbGZvcm1hdCksIHVzYWdlLCBm
b3JjZVJlbmRlcmFibGUpKQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgNjsg
aSsrKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCBnbDo6SU1Q
TEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBqKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1SZW5kZXJUYXJnZXRbaV1bal0gPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAg
RFhHSV9GT1JNQVQgY29udmVydGVkRm9ybWF0ID0gZ2xfZDNkMTE6OkNvbnZlcnRUZXh0dXJlRm9y
bWF0KGludGVybmFsZm9ybWF0KTsKKyAgICBpZiAoZDNkMTE6OklzRGVwdGhTdGVuY2lsRm9ybWF0
KGNvbnZlcnRlZEZvcm1hdCkpCisgICAgeworICAgICAgICBtVGV4dHVyZUZvcm1hdCA9IGQzZDEx
OjpHZXREZXB0aFRleHR1cmVGb3JtYXQoY29udmVydGVkRm9ybWF0KTsKKyAgICAgICAgbVNoYWRl
clJlc291cmNlRm9ybWF0ID0gZDNkMTE6OkdldERlcHRoU2hhZGVyUmVzb3VyY2VGb3JtYXQoY29u
dmVydGVkRm9ybWF0KTsKKyAgICAgICAgbURlcHRoU3RlbmNpbEZvcm1hdCA9IGNvbnZlcnRlZEZv
cm1hdDsKKyAgICAgICAgbVJlbmRlclRhcmdldEZvcm1hdCA9IERYR0lfRk9STUFUX1VOS05PV047
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1UZXh0dXJlRm9ybWF0ID0gY29udmVy
dGVkRm9ybWF0OworICAgICAgICBtU2hhZGVyUmVzb3VyY2VGb3JtYXQgPSBjb252ZXJ0ZWRGb3Jt
YXQ7CisgICAgICAgIG1EZXB0aFN0ZW5jaWxGb3JtYXQgPSBEWEdJX0ZPUk1BVF9VTktOT1dOOwor
ICAgICAgICBtUmVuZGVyVGFyZ2V0Rm9ybWF0ID0gY29udmVydGVkRm9ybWF0OworICAgIH0KKwor
ICAgIC8vIGlmIHRoZSBzaXplIGlzIG5vdCBwb3NpdGl2ZSB0aGlzIHNob3VsZCBiZSB0cmVhdGVk
IGFzIGFuIGluY29tcGxldGUgdGV4dHVyZQorICAgIC8vIHdlIGhhbmRsZSB0aGF0IGhlcmUgYnkg
c2tpcHBpbmcgdGhlIGQzZCB0ZXh0dXJlIGNyZWF0aW9uCisgICAgaWYgKHNpemUgPiAwKQorICAg
IHsKKyAgICAgICAgLy8gYWRqdXN0IHNpemUgaWYgbmVlZGVkIGZvciBjb21wcmVzc2VkIHRleHR1
cmVzCisgICAgICAgIGludCBoZWlnaHQgPSBzaXplOworICAgICAgICBnbDo6TWFrZVZhbGlkU2l6
ZShmYWxzZSwgZ2w6OklzQ29tcHJlc3NlZChpbnRlcm5hbGZvcm1hdCksICZzaXplLCAmaGVpZ2h0
LCAmbUxvZE9mZnNldCk7CisKKyAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVy
ZXItPmdldERldmljZSgpOworCisgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIGRlc2M7Cisg
ICAgICAgIGRlc2MuV2lkdGggPSBzaXplOworICAgICAgICBkZXNjLkhlaWdodCA9IHNpemU7Cisg
ICAgICAgIGRlc2MuTWlwTGV2ZWxzID0gKGxldmVscyA+IDApID8gbGV2ZWxzICsgbUxvZE9mZnNl
dCA6IDA7CisgICAgICAgIGRlc2MuQXJyYXlTaXplID0gNjsKKyAgICAgICAgZGVzYy5Gb3JtYXQg
PSBtVGV4dHVyZUZvcm1hdDsKKyAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKKyAg
ICAgICAgZGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAgICBkZXNjLlVzYWdlID0g
RDNEMTFfVVNBR0VfREVGQVVMVDsKKyAgICAgICAgZGVzYy5CaW5kRmxhZ3MgPSBnZXRCaW5kRmxh
Z3MoKTsKKyAgICAgICAgZGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7CisgICAgICAgIGRlc2MuTWlz
Y0ZsYWdzID0gRDNEMTFfUkVTT1VSQ0VfTUlTQ19URVhUVVJFQ1VCRTsKKworICAgICAgICBIUkVT
VUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZkZXNjLCBOVUxMLCAmbVRleHR1
cmUpOworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgICAgIEVSUigiQ3Jl
YXRpbmcgaW1hZ2UgZmFpbGVkLiIpOworICAgICAgICAgICAgZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
bVRleHR1cmUtPkdldERlc2MoJmRlc2MpOworICAgICAgICAgICAgbU1pcExldmVscyA9IGRlc2Mu
TWlwTGV2ZWxzOworICAgICAgICAgICAgbVRleHR1cmVXaWR0aCA9IGRlc2MuV2lkdGg7CisgICAg
ICAgICAgICBtVGV4dHVyZUhlaWdodCA9IGRlc2MuSGVpZ2h0OworICAgICAgICB9CisgICAgfQor
fQorCitUZXh0dXJlU3RvcmFnZTExX0N1YmU6On5UZXh0dXJlU3RvcmFnZTExX0N1YmUoKQorewor
ICAgIGlmIChtVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1UZXh0dXJlLT5SZWxlYXNlKCk7Cisg
ICAgICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobVNSVikKKyAgICB7Cisg
ICAgICAgIG1TUlYtPlJlbGVhc2UoKTsKKyAgICAgICAgbVNSViA9IE5VTEw7CisgICAgfQorCisg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCA2OyBpKyspCisgICAgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVS
RV9MRVZFTFM7IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgZGVsZXRlIG1SZW5kZXJUYXJn
ZXRbaV1bal07CisgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0W2ldW2pdID0gTlVMTDsKKyAgICAg
ICAgfQorICAgIH0KK30KKworVGV4dHVyZVN0b3JhZ2UxMV9DdWJlICpUZXh0dXJlU3RvcmFnZTEx
X0N1YmU6Om1ha2VUZXh0dXJlU3RvcmFnZTExX0N1YmUoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2Up
Cit7CisgICAgQVNTRVJUKEhBU19EWU5BTUlDX1RZUEUoVGV4dHVyZVN0b3JhZ2UxMV9DdWJlKiwg
c3RvcmFnZSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0dXJlU3RvcmFnZTExX0N1YmUq
PihzdG9yYWdlKTsKK30KKworUmVuZGVyVGFyZ2V0ICpUZXh0dXJlU3RvcmFnZTExX0N1YmU6Omdl
dFJlbmRlclRhcmdldChHTGVudW0gZmFjZVRhcmdldCwgaW50IGxldmVsKQoreworICAgIHVuc2ln
bmVkIGludCBmYWNlSWR4ID0gZ2w6OlRleHR1cmVDdWJlTWFwOjpmYWNlSW5kZXgoZmFjZVRhcmdl
dCk7CisgICAgaWYgKGxldmVsID49IDAgJiYgbGV2ZWwgPCBzdGF0aWNfY2FzdDxpbnQ+KG1NaXBM
ZXZlbHMpKQorICAgIHsKKyAgICAgICAgaWYgKCFtUmVuZGVyVGFyZ2V0W2ZhY2VJZHhdW2xldmVs
XSkKKyAgICAgICAgeworICAgICAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVy
ZXItPmdldERldmljZSgpOworICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQ7CisKKyAgICAgICAg
ICAgIEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc3J2RGVzYzsKKyAgICAgICAgICAg
IHNydkRlc2MuRm9ybWF0ID0gbVNoYWRlclJlc291cmNlRm9ybWF0OworICAgICAgICAgICAgc3J2
RGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFQ1VCRTsKKyAg
ICAgICAgICAgIHNydkRlc2MuVGV4dHVyZTJEQXJyYXkuTW9zdERldGFpbGVkTWlwID0gbGV2ZWw7
CisgICAgICAgICAgICBzcnZEZXNjLlRleHR1cmUyREFycmF5Lk1pcExldmVscyA9IDE7CisgICAg
ICAgICAgICBzcnZEZXNjLlRleHR1cmUyREFycmF5LkZpcnN0QXJyYXlTbGljZSA9IGZhY2VJZHg7
CisgICAgICAgICAgICBzcnZEZXNjLlRleHR1cmUyREFycmF5LkFycmF5U2l6ZSA9IDE7CisKKyAg
ICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2OworICAgICAgICAgICAgcmVz
dWx0ID0gZGV2aWNlLT5DcmVhdGVTaGFkZXJSZXNvdXJjZVZpZXcobVRleHR1cmUsICZzcnZEZXNj
LCAmc3J2KTsKKworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSwgc3RhdGljX2Nhc3Q8UmVuZGVyVGFyZ2V0Kj4oTlVMTCkpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgICAgICAgICAgaWYg
KG1SZW5kZXJUYXJnZXRGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNj
OworICAgICAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ID0gbVJlbmRlclRhcmdldEZvcm1hdDsK
KyAgICAgICAgICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gPSBEM0QxMV9SVFZfRElNRU5T
SU9OX1RFWFRVUkUyREFSUkFZOworICAgICAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJEQXJy
YXkuTWlwU2xpY2UgPSBsZXZlbDsKKyAgICAgICAgICAgICAgICBydHZEZXNjLlRleHR1cmUyREFy
cmF5LkZpcnN0QXJyYXlTbGljZSA9IGZhY2VJZHg7CisgICAgICAgICAgICAgICAgcnR2RGVzYy5U
ZXh0dXJlMkRBcnJheS5BcnJheVNpemUgPSAxOworCisgICAgICAgICAgICAgICAgSUQzRDExUmVu
ZGVyVGFyZ2V0VmlldyAqcnR2OworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3Jl
YXRlUmVuZGVyVGFyZ2V0VmlldyhtVGV4dHVyZSwgJnJ0dkRlc2MsICZydHYpOworCisgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgc3J2LT5SZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgc3RhdGljX2Nhc3Q8UmVuZGVyVGFy
Z2V0Kj4oTlVMTCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBBU1NFUlQo
U1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgICAgICAgICAgICAgLy8gUmVuZGVyVGFyZ2V0MTEg
ZXhwZWN0cyB0byBiZSB0aGUgb3duZXIgb2YgdGhlIHJlc291cmNlcyBpdCBpcyBnaXZlbiBidXQg
VGV4dHVyZVN0b3JhZ2UxMQorICAgICAgICAgICAgICAgIC8vIGFsc28gbmVlZHMgdG8ga2VlcCBh
IHJlZmVyZW5jZSB0byB0aGUgdGV4dHVyZS4KKyAgICAgICAgICAgICAgICBtVGV4dHVyZS0+QWRk
UmVmKCk7CisKKyAgICAgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0W2ZhY2VJZHhdW2xldmVsXSA9
IG5ldyBSZW5kZXJUYXJnZXQxMShtUmVuZGVyZXIsIHJ0diwgbVRleHR1cmUsIHNydiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1heChtVGV4dHVyZVdpZHRoID4+IGxldmVsLCAxVSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjptYXgobVRleHR1cmVIZWlnaHQgPj4gbGV2ZWwsIDFVKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIGlmIChtRGVwdGhTdGVuY2lsRm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05P
V04pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9W
SUVXX0RFU0MgZHN2RGVzYzsKKyAgICAgICAgICAgICAgICBkc3ZEZXNjLkZvcm1hdCA9IG1SZW5k
ZXJUYXJnZXRGb3JtYXQ7CisgICAgICAgICAgICAgICAgZHN2RGVzYy5WaWV3RGltZW5zaW9uID0g
RDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWTsKKyAgICAgICAgICAgICAgICBkc3ZE
ZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlID0gbGV2ZWw7CisgICAgICAgICAgICAgICAgZHN2
RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSBmYWNlSWR4OworICAgICAgICAg
ICAgICAgIGRzdkRlc2MuVGV4dHVyZTJEQXJyYXkuQXJyYXlTaXplID0gMTsKKworICAgICAgICAg
ICAgICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRzdjsKKyAgICAgICAgICAgICAgICByZXN1
bHQgPSBkZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFZpZXcobVRleHR1cmUsICZkc3ZEZXNjLCAm
ZHN2KTsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNydi0+UmVsZWFzZSgpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIHN0YXRp
Y19jYXN0PFJlbmRlclRhcmdldCo+KE5VTEwpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgICAgICAgICAgICAgIC8v
IFJlbmRlclRhcmdldDExIGV4cGVjdHMgdG8gYmUgdGhlIG93bmVyIG9mIHRoZSByZXNvdXJjZXMg
aXQgaXMgZ2l2ZW4gYnV0IFRleHR1cmVTdG9yYWdlMTEKKyAgICAgICAgICAgICAgICAvLyBhbHNv
IG5lZWRzIHRvIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUuCisgICAgICAgICAgICAg
ICAgbVRleHR1cmUtPkFkZFJlZigpOworCisgICAgICAgICAgICAgICAgbVJlbmRlclRhcmdldFtm
YWNlSWR4XVtsZXZlbF0gPSBuZXcgUmVuZGVyVGFyZ2V0MTEobVJlbmRlcmVyLCBkc3YsIG1UZXh0
dXJlLCBzcnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXgobVRleHR1cmVXaWR0aCA+PiBsZXZlbCwgMVUp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bWF4KG1UZXh0dXJlSGVpZ2h0ID4+IGxldmVsLCAxVSkpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gbVJlbmRlclRhcmdldFtmYWNlSWR4XVtsZXZlbF07CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworSUQzRDExU2hhZGVyUmVzb3Vy
Y2VWaWV3ICpUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmdldFNSVigpCit7CisgICAgaWYgKCFtU1JW
KQorICAgIHsKKyAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERl
dmljZSgpOworCisgICAgICAgIEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc3J2RGVz
YzsKKyAgICAgICAgc3J2RGVzYy5Gb3JtYXQgPSBtU2hhZGVyUmVzb3VyY2VGb3JtYXQ7CisgICAg
ICAgIHNydkRlc2MuVmlld0RpbWVuc2lvbiA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRUNV
QkU7CisgICAgICAgIHNydkRlc2MuVGV4dHVyZUN1YmUuTWlwTGV2ZWxzID0gKG1NaXBMZXZlbHMg
PT0gMCA/IC0xIDogbU1pcExldmVscyk7CisgICAgICAgIHNydkRlc2MuVGV4dHVyZUN1YmUuTW9z
dERldGFpbGVkTWlwID0gMDsKKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3Jl
YXRlU2hhZGVyUmVzb3VyY2VWaWV3KG1UZXh0dXJlLCAmc3J2RGVzYywgJm1TUlYpOworCisgICAg
ICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBzdGF0aWNfY2FzdDxJRDNEMTFTaGFk
ZXJSZXNvdXJjZVZpZXcqPihOVUxMKSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbVNSVjsKK30KKwordm9pZCBUZXh0
dXJlU3RvcmFnZTExX0N1YmU6OmdlbmVyYXRlTWlwbWFwKGludCBmYWNlLCBpbnQgbGV2ZWwpCit7
CisgICAgUmVuZGVyVGFyZ2V0MTEgKnNvdXJjZSA9IFJlbmRlclRhcmdldDExOjptYWtlUmVuZGVy
VGFyZ2V0MTEoZ2V0UmVuZGVyVGFyZ2V0KEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCAr
IGZhY2UsIGxldmVsIC0gMSkpOworICAgIFJlbmRlclRhcmdldDExICpkZXN0ID0gUmVuZGVyVGFy
Z2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShnZXRSZW5kZXJUYXJnZXQoR0xfVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9YICsgZmFjZSwgbGV2ZWwpKTsKKworICAgIGdlbmVyYXRlTWlwbWFwTGF5
ZXIoc291cmNlLCBkZXN0KTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3Rv
cmFnZTExLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlMTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMjAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBUZXh0dXJlU3RvcmFnZTExLmg6IERlZmluZXMg
dGhlIGFic3RyYWN0IHJ4OjpUZXh0dXJlU3RvcmFnZTExIGNsYXNzIGFuZCBpdHMgY29uY3JldGUg
ZGVyaXZlZAorLy8gY2xhc3NlcyBUZXh0dXJlU3RvcmFnZTExXzJEIGFuZCBUZXh0dXJlU3RvcmFn
ZTExX0N1YmUsIHdoaWNoIGFjdCBhcyB0aGUgaW50ZXJmYWNlIHRvIHRoZSBEM0QxMSB0ZXh0dXJl
LgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9URVhUVVJFU1RPUkFHRTExX0hfCisjZGVm
aW5lIExJQkdMRVNWMl9SRU5ERVJFUl9URVhUVVJFU1RPUkFHRTExX0hfCisKKyNpbmNsdWRlICJs
aWJHTEVTdjIvVGV4dHVyZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJl
U3RvcmFnZS5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlclRhcmdldDsKK2NsYXNz
IFJlbmRlclRhcmdldDExOworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBSZW5kZXJlcjExOworY2xh
c3MgU3dhcENoYWluMTE7CisKK2NsYXNzIFRleHR1cmVTdG9yYWdlMTEgOiBwdWJsaWMgVGV4dHVy
ZVN0b3JhZ2UKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlMTEoUmVuZGVyZXIgKnJl
bmRlcmVyLCBVSU5UIGJpbmRGbGFncyk7CisgICAgdmlydHVhbCB+VGV4dHVyZVN0b3JhZ2UxMSgp
OworCisgICAgc3RhdGljIFRleHR1cmVTdG9yYWdlMTEgKm1ha2VUZXh0dXJlU3RvcmFnZTExKFRl
eHR1cmVTdG9yYWdlICpzdG9yYWdlKTsKKworICAgIHN0YXRpYyBEV09SRCBHZXRUZXh0dXJlQmlu
ZEZsYWdzKERYR0lfRk9STUFUIGQzZGZtdCwgR0xlbnVtIGdsdXNhZ2UsIGJvb2wgZm9yY2VSZW5k
ZXJhYmxlKTsKKyAgICBzdGF0aWMgYm9vbCBJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKERYR0lf
Rk9STUFUIGZvcm1hdCk7CisKKyAgICBVSU5UIGdldEJpbmRGbGFncygpIGNvbnN0OworCisgICAg
dmlydHVhbCBJRDNEMTFUZXh0dXJlMkQgKmdldEJhc2VUZXh0dXJlKCkgY29uc3Q7CisgICAgdmly
dHVhbCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmdldFNSVigpID0gMDsKKyAgICB2aXJ0dWFs
IFJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KCkgeyByZXR1cm4gZ2V0UmVuZGVyVGFyZ2V0
KDApOyB9CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChpbnQgbGV2
ZWwpIHsgcmV0dXJuIE5VTEw7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAqZ2V0UmVuZGVy
VGFyZ2V0KEdMZW51bSBmYWNlVGFyZ2V0KSB7IHJldHVybiBnZXRSZW5kZXJUYXJnZXQoZmFjZVRh
cmdldCwgMCk7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KEdM
ZW51bSBmYWNlVGFyZ2V0LCBpbnQgbGV2ZWwpIHsgcmV0dXJuIE5VTEw7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcChpbnQgbGV2ZWwpIHt9OworICAgIHZpcnR1YWwgdm9pZCBn
ZW5lcmF0ZU1pcG1hcChpbnQgZmFjZSwgaW50IGxldmVsKSB7fTsKKworICAgIHZpcnR1YWwgaW50
IGdldExvZE9mZnNldCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclRhcmdldCgp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc01hbmFnZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGludCBsZXZlbENvdW50KCk7CisgICAgVUlOVCBnZXRTdWJyZXNvdXJjZUluZGV4KGludCBsZXZl
bCwgaW50IGZhY2VUYXJnZXQpOworCisgICAgYm9vbCB1cGRhdGVTdWJyZXNvdXJjZUxldmVsKElE
M0QxMVRleHR1cmUyRCAqdGV4dHVyZSwgdW5zaWduZWQgaW50IHNvdXJjZVN1YnJlc291cmNlLCBp
bnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmYWNlVGFyZ2V0
LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCk7CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXBMYXllcihSZW5k
ZXJUYXJnZXQxMSAqc291cmNlLCBSZW5kZXJUYXJnZXQxMSAqZGVzdCk7CisKKyAgICBSZW5kZXJl
cjExICptUmVuZGVyZXI7CisgICAgaW50IG1Mb2RPZmZzZXQ7CisgICAgdW5zaWduZWQgaW50IG1N
aXBMZXZlbHM7CisKKyAgICBJRDNEMTFUZXh0dXJlMkQgKm1UZXh0dXJlOworICAgIERYR0lfRk9S
TUFUIG1UZXh0dXJlRm9ybWF0OworICAgIERYR0lfRk9STUFUIG1TaGFkZXJSZXNvdXJjZUZvcm1h
dDsKKyAgICBEWEdJX0ZPUk1BVCBtUmVuZGVyVGFyZ2V0Rm9ybWF0OworICAgIERYR0lfRk9STUFU
IG1EZXB0aFN0ZW5jaWxGb3JtYXQ7CisgICAgdW5zaWduZWQgaW50IG1UZXh0dXJlV2lkdGg7Cisg
ICAgdW5zaWduZWQgaW50IG1UZXh0dXJlSGVpZ2h0OworCisgICAgSUQzRDExU2hhZGVyUmVzb3Vy
Y2VWaWV3ICptU1JWOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
KFRleHR1cmVTdG9yYWdlMTEpOworCisgICAgY29uc3QgVUlOVCBtQmluZEZsYWdzOworfTsKKwor
Y2xhc3MgVGV4dHVyZVN0b3JhZ2UxMV8yRCA6IHB1YmxpYyBUZXh0dXJlU3RvcmFnZTExCit7Cisg
IHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZTExXzJEKFJlbmRlcmVyICpyZW5kZXJlciwgU3dh
cENoYWluMTEgKnN3YXBjaGFpbik7CisgICAgVGV4dHVyZVN0b3JhZ2UxMV8yRChSZW5kZXJlciAq
cmVuZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdl
LCBib29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwor
ICAgIHZpcnR1YWwgflRleHR1cmVTdG9yYWdlMTFfMkQoKTsKKworICAgIHN0YXRpYyBUZXh0dXJl
U3RvcmFnZTExXzJEICptYWtlVGV4dHVyZVN0b3JhZ2UxMV8yRChUZXh0dXJlU3RvcmFnZSAqc3Rv
cmFnZSk7CisKKyAgICB2aXJ0dWFsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqZ2V0U1JWKCk7
CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChpbnQgbGV2ZWwpOwor
CisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwKGludCBsZXZlbCk7CisKKyAgcHJpdmF0
ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZVN0b3JhZ2UxMV8yRCk7CisK
KyAgICBSZW5kZXJUYXJnZXQxMSAqbVJlbmRlclRhcmdldFtnbDo6SU1QTEVNRU5UQVRJT05fTUFY
X1RFWFRVUkVfTEVWRUxTXTsKK307CisKK2NsYXNzIFRleHR1cmVTdG9yYWdlMTFfQ3ViZSA6IHB1
YmxpYyBUZXh0dXJlU3RvcmFnZTExCit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZTEx
X0N1YmUoUmVuZGVyZXIgKnJlbmRlcmVyLCBpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMZW51bSB1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIGludCBzaXplKTsKKyAgICB2
aXJ0dWFsIH5UZXh0dXJlU3RvcmFnZTExX0N1YmUoKTsKKworICAgIHN0YXRpYyBUZXh0dXJlU3Rv
cmFnZTExX0N1YmUgKm1ha2VUZXh0dXJlU3RvcmFnZTExX0N1YmUoVGV4dHVyZVN0b3JhZ2UgKnN0
b3JhZ2UpOworCisgICAgdmlydHVhbCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmdldFNSVigp
OworICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoR0xlbnVtIGZhY2VU
YXJnZXQsIGludCBsZXZlbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVNaXBtYXAoaW50
IGZhY2UsIGludCBsZXZlbCk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9B
U1NJR04oVGV4dHVyZVN0b3JhZ2UxMV9DdWJlKTsKKworICAgIFJlbmRlclRhcmdldDExICptUmVu
ZGVyVGFyZ2V0WzZdW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFNdOworfTsK
KworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1RFWFRVUkVTVE9SQUdFMTFfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4
dHVyZVN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3Rv
cmFnZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIyIEBACisjaW5jbHVkZSAicHJlY29t
cGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFRleHR1cmVTdG9yYWdlLmNwcDogSW1w
bGVtZW50cyB0aGUgYWJzdHJhY3Qgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlIGNsYXNzIGFu
ZCBpdHMgY29uY3JldGUgZGVyaXZlZAorLy8gY2xhc3NlcyBUZXh0dXJlU3RvcmFnZUludGVyZmFj
ZTJEIGFuZCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUsIHdoaWNoIGFjdCBhcyB0aGUgaW50
ZXJmYWNlIHRvIHRoZQorLy8gR1BVLXNpZGUgdGV4dHVyZS4KKworI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9SZW5kZXJlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvVGV4dHVyZS5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisK
K25hbWVzcGFjZSByeAorewordW5zaWduZWQgaW50IFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlOjpt
Q3VycmVudFRleHR1cmVTZXJpYWwgPSAxOworCitUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6VGV4
dHVyZVN0b3JhZ2VJbnRlcmZhY2UoKQorICAgIDogbVRleHR1cmVTZXJpYWwoaXNzdWVUZXh0dXJl
U2VyaWFsKCkpLAorICAgICAgbUluc3RhbmNlKE5VTEwpCit7Cit9CisKK1RleHR1cmVTdG9yYWdl
SW50ZXJmYWNlOjp+VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UoKQoreworICAgIGRlbGV0ZSBtSW5z
dGFuY2U7Cit9CisKK2Jvb2wgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OmlzUmVuZGVyVGFyZ2V0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5pc1JlbmRlclRhcmdldCgpOworfQor
CisKK2Jvb2wgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OmlzTWFuYWdlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1JbnN0YW5jZS0+aXNNYW5hZ2VkKCk7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0
dXJlU3RvcmFnZUludGVyZmFjZTo6Z2V0VGV4dHVyZVNlcmlhbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1UZXh0dXJlU2VyaWFsOworfQorCit1bnNpZ25lZCBpbnQgVGV4dHVyZVN0b3JhZ2VJbnRl
cmZhY2U6Omlzc3VlVGV4dHVyZVNlcmlhbCgpCit7CisgICAgcmV0dXJuIG1DdXJyZW50VGV4dHVy
ZVNlcmlhbCsrOworfQorCitpbnQgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OmdldExvZE9mZnNl
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0TG9kT2Zmc2V0KCk7Cit9CisK
KworaW50IFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlOjpsZXZlbENvdW50KCkKK3sKKyAgICByZXR1
cm4gbUluc3RhbmNlLT5sZXZlbENvdW50KCk7Cit9CisKK1RleHR1cmVTdG9yYWdlSW50ZXJmYWNl
MkQ6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQoUmVuZGVyZXIgKnJlbmRlcmVyLCBTd2FwQ2hh
aW4gKnN3YXBjaGFpbikgCisgICAgOiBtUmVuZGVyVGFyZ2V0U2VyaWFsKGdsOjpSZW5kZXJidWZm
ZXJTdG9yYWdlOjppc3N1ZVNlcmlhbCgpKQoreworICAgIG1JbnN0YW5jZSA9IHJlbmRlcmVyLT5j
cmVhdGVUZXh0dXJlU3RvcmFnZTJEKHN3YXBjaGFpbik7Cit9CisKK1RleHR1cmVTdG9yYWdlSW50
ZXJmYWNlMkQ6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQoUmVuZGVyZXIgKnJlbmRlcmVyLCBp
bnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2FnZSwgYm9vbCBmb3Jj
ZVJlbmRlcmFibGUsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQorICAgIDogbVJlbmRl
clRhcmdldFNlcmlhbChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNzdWVTZXJpYWwoKSkKK3sK
KyAgICBtSW5zdGFuY2UgPSByZW5kZXJlci0+Y3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChsZXZlbHMs
IGludGVybmFsZm9ybWF0LCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxlLCB3aWR0aCwgaGVpZ2h0KTsK
K30KKworVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDo6flRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
MkQoKQoreworfQorCitSZW5kZXJUYXJnZXQgKlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ6Omdl
dFJlbmRlclRhcmdldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0UmVuZGVy
VGFyZ2V0KCk7Cit9CisKK3ZvaWQgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDo6Z2VuZXJhdGVN
aXBtYXAoaW50IGxldmVsKQoreworICAgIG1JbnN0YW5jZS0+Z2VuZXJhdGVNaXBtYXAobGV2ZWwp
OworfQorCit1bnNpZ25lZCBpbnQgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDo6Z2V0UmVuZGVy
VGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJU
YXJnZXRTZXJpYWw7Cit9CisKK1RleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6VGV4dHVyZVN0
b3JhZ2VJbnRlcmZhY2VDdWJlKFJlbmRlcmVyICpyZW5kZXJlciwgaW50IGxldmVscywgR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHTGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBpbnQg
c2l6ZSkKKyAgICA6IG1GaXJzdFJlbmRlclRhcmdldFNlcmlhbChnbDo6UmVuZGVyYnVmZmVyU3Rv
cmFnZTo6aXNzdWVDdWJlU2VyaWFscygpKQoreworICAgIG1JbnN0YW5jZSA9IHJlbmRlcmVyLT5j
cmVhdGVUZXh0dXJlU3RvcmFnZUN1YmUobGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgdXNhZ2UsIGZv
cmNlUmVuZGVyYWJsZSwgc2l6ZSk7Cit9CisKK1RleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6
flRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSgpCit7Cit9CisKK1JlbmRlclRhcmdldCAqVGV4
dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlOjpnZXRSZW5kZXJUYXJnZXQoR0xlbnVtIGZhY2VUYXJn
ZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0UmVuZGVyVGFyZ2V0KGZhY2VU
YXJnZXQpOworfQorCit2b2lkIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6Z2VuZXJhdGVN
aXBtYXAoaW50IGZhY2UsIGludCBsZXZlbCkKK3sKKyAgICBtSW5zdGFuY2UtPmdlbmVyYXRlTWlw
bWFwKGZhY2UsIGxldmVsKTsKK30KKwordW5zaWduZWQgaW50IFRleHR1cmVTdG9yYWdlSW50ZXJm
YWNlQ3ViZTo6Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1GaXJzdFJlbmRlclRhcmdldFNlcmlhbCArIGdsOjpUZXh0dXJlQ3ViZU1hcDo6
ZmFjZUluZGV4KHRhcmdldCk7Cit9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1
cmVTdG9yYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
VGV4dHVyZVN0b3JhZ2UuaDogRGVmaW5lcyB0aGUgYWJzdHJhY3Qgcng6OlRleHR1cmVTdG9yYWdl
SW50ZXJmYWNlIGNsYXNzIGFuZCBpdHMgY29uY3JldGUgZGVyaXZlZAorLy8gY2xhc3NlcyBUZXh0
dXJlU3RvcmFnZUludGVyZmFjZTJEIGFuZCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUsIHdo
aWNoIGFjdCBhcyB0aGUgaW50ZXJmYWNlIHRvIHRoZQorLy8gR1BVLXNpZGUgdGV4dHVyZS4KKwor
I2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfVEVYVFVSRVNUT1JBR0VfSF8KKyNkZWZpbmUgTElC
R0xFU1YyX1JFTkRFUkVSX1RFWFRVUkVTVE9SQUdFX0hfCisKKyNpbmNsdWRlICJjb21tb24vZGVi
dWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKK2NsYXNzIFN3YXBDaGFp
bjsKK2NsYXNzIFJlbmRlclRhcmdldDsKK2NsYXNzIEJsaXQ7CisKK2NsYXNzIFRleHR1cmVTdG9y
YWdlCit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZSgpIHt9OworICAgIHZpcnR1YWwg
flRleHR1cmVTdG9yYWdlKCkge307CisKKyAgICB2aXJ0dWFsIGludCBnZXRMb2RPZmZzZXQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyVGFyZ2V0KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc01hbmFnZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQg
bGV2ZWxDb3VudCgpID0gMDsKKworICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJU
YXJnZXQoKSA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChH
TGVudW0gZmFjZVRhcmdldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcChp
bnQgbGV2ZWwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVNaXBtYXAoaW50IGZhY2Us
IGludCBsZXZlbCkgPSAwOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOKFRleHR1cmVTdG9yYWdlKTsKKworfTsKKworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZh
Y2UKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlKCk7CisgICAgdmly
dHVhbCB+VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UoKTsKKworICAgIFRleHR1cmVTdG9yYWdlICpn
ZXRTdG9yYWdlSW5zdGFuY2UoKSB7IHJldHVybiBtSW5zdGFuY2U7IH0KKworICAgIHVuc2lnbmVk
IGludCBnZXRUZXh0dXJlU2VyaWFsKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQg
Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0ID0gMDsKKworICAgIHZp
cnR1YWwgaW50IGdldExvZE9mZnNldCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRl
clRhcmdldCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc01hbmFnZWQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGludCBsZXZlbENvdW50KCk7CisKKyAgcHJvdGVjdGVkOgorICAgIFRleHR1cmVT
dG9yYWdlICptSW5zdGFuY2U7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9B
U1NJR04oVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UpOworCisgICAgY29uc3QgdW5zaWduZWQgaW50
IG1UZXh0dXJlU2VyaWFsOworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXNzdWVUZXh0dXJlU2Vy
aWFsKCk7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IG1DdXJyZW50VGV4dHVyZVNlcmlhbDsK
K307CisKK2NsYXNzIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgOiBwdWJsaWMgVGV4dHVyZVN0
b3JhZ2VJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
MkQoUmVuZGVyZXIgKnJlbmRlcmVyLCBTd2FwQ2hhaW4gKnN3YXBjaGFpbik7CisgICAgVGV4dHVy
ZVN0b3JhZ2VJbnRlcmZhY2UyRChSZW5kZXJlciAqcmVuZGVyZXIsIGludCBsZXZlbHMsIEdMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworICAgIHZpcnR1YWwgflRleHR1cmVTdG9yYWdl
SW50ZXJmYWNlMkQoKTsKKworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAoaW50IGxldmVsKTsKKyAg
ICBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldCgpIGNvbnN0OworCisgICAgdmlydHVhbCB1
bnNpZ25lZCBpbnQgZ2V0UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0Owor
CisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmVTdG9yYWdl
SW50ZXJmYWNlMkQpOworCisgICAgY29uc3QgdW5zaWduZWQgaW50IG1SZW5kZXJUYXJnZXRTZXJp
YWw7Cit9OworCitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgOiBwdWJsaWMgVGV4
dHVyZVN0b3JhZ2VJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlQ3ViZShSZW5kZXJlciAqcmVuZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgaW50IHNpemUpOwor
ICAgIHZpcnR1YWwgflRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSgpOworCisgICAgdm9pZCBn
ZW5lcmF0ZU1pcG1hcChpbnQgZmFjZSwgaW50IGxldmVsKTsKKyAgICBSZW5kZXJUYXJnZXQgKmdl
dFJlbmRlclRhcmdldChHTGVudW0gZmFjZVRhcmdldCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHVu
c2lnbmVkIGludCBnZXRSZW5kZXJUYXJnZXRTZXJpYWwoR0xlbnVtIHRhcmdldCkgY29uc3Q7CisK
KyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZVN0b3JhZ2VJ
bnRlcmZhY2VDdWJlKTsKKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBtRmlyc3RSZW5kZXJUYXJn
ZXRTZXJpYWw7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfVEVYVFVS
RVNUT1JBR0VfSF8KKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9WZXJ0ZXhCdWZmZXI5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0ODYgQEAKKyNpbmNs
dWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVmVydGV4QnVmZmVy
OS5jcHA6IERlZmluZXMgdGhlIEQzRDkgVmVydGV4QnVmZmVyIGltcGxlbWVudGF0aW9uLgorCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuaCIKKyNpbmNsdWRlICJs
aWJHTEVTdjIvcmVuZGVyZXIvdmVydGV4Y29udmVyc2lvbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQu
aCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmgiCisKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvQnVmZmVyLmgiCisKK25hbWVzcGFjZSByeAoreworCitib29sIFZlcnRleEJ1
ZmZlcjk6Om1UcmFuc2xhdGlvbnNJbml0aWFsaXplZCA9IGZhbHNlOworVmVydGV4QnVmZmVyOTo6
Rm9ybWF0Q29udmVydGVyIFZlcnRleEJ1ZmZlcjk6Om1Gb3JtYXRDb252ZXJ0ZXJzW05VTV9HTF9W
RVJURVhfQVRUUklCX1RZUEVTXVsyXVs0XTsKKworVmVydGV4QnVmZmVyOTo6VmVydGV4QnVmZmVy
OShyeDo6UmVuZGVyZXI5ICpjb25zdCByZW5kZXJlcikgOiBtUmVuZGVyZXIocmVuZGVyZXIpCit7
CisgICAgbVZlcnRleEJ1ZmZlciA9IE5VTEw7CisgICAgbUJ1ZmZlclNpemUgPSAwOworICAgIG1E
eW5hbWljVXNhZ2UgPSBmYWxzZTsKKworICAgIGlmICghbVRyYW5zbGF0aW9uc0luaXRpYWxpemVk
KQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZVRyYW5zbGF0aW9ucyhyZW5kZXJlci0+Z2V0Q2Fw
c0RlY2xUeXBlcygpKTsKKyAgICAgICAgbVRyYW5zbGF0aW9uc0luaXRpYWxpemVkID0gdHJ1ZTsK
KyAgICB9Cit9CisKK1ZlcnRleEJ1ZmZlcjk6On5WZXJ0ZXhCdWZmZXI5KCkKK3sKKyAgICBpZiAo
bVZlcnRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1WZXJ0ZXhCdWZmZXItPlJlbGVhc2UoKTsK
KyAgICAgICAgbVZlcnRleEJ1ZmZlciA9IE5VTEw7CisgICAgfQorfQorCitib29sIFZlcnRleEJ1
ZmZlcjk6OmluaXRpYWxpemUodW5zaWduZWQgaW50IHNpemUsIGJvb2wgZHluYW1pY1VzYWdlKQor
eworICAgIGlmIChtVmVydGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgbVZlcnRleEJ1ZmZlci0+
UmVsZWFzZSgpOworICAgICAgICBtVmVydGV4QnVmZmVyID0gTlVMTDsKKyAgICB9CisKKyAgICB1
cGRhdGVTZXJpYWwoKTsKKworICAgIGlmIChzaXplID4gMCkKKyAgICB7CisgICAgICAgIERXT1JE
IGZsYWdzID0gRDNEVVNBR0VfV1JJVEVPTkxZOworICAgICAgICBpZiAoZHluYW1pY1VzYWdlKQor
ICAgICAgICB7CisgICAgICAgICAgICBmbGFncyB8PSBEM0RVU0FHRV9EWU5BTUlDOworICAgICAg
ICB9CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtUmVuZGVyZXItPmNyZWF0ZVZlcnRleEJ1
ZmZlcihzaXplLCBmbGFncywgJm1WZXJ0ZXhCdWZmZXIpOworCisgICAgICAgIGlmIChGQUlMRUQo
cmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJPdXQgb2YgbWVtb3J5IGFsbG9j
YXRpbmcgYSB2ZXJ0ZXggYnVmZmVyIG9mIHNpemUgJWx1LiIsIHNpemUpOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgbUJ1ZmZlclNpemUgPSBzaXpl
OworICAgIG1EeW5hbWljVXNhZ2UgPSBkeW5hbWljVXNhZ2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK1ZlcnRleEJ1ZmZlcjkgKlZlcnRleEJ1ZmZlcjk6Om1ha2VWZXJ0ZXhCdWZmZXI5KFZlcnRl
eEJ1ZmZlciAqdmVydGV4QnVmZmVyKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKFZl
cnRleEJ1ZmZlcjkqLCB2ZXJ0ZXhCdWZmZXIpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmVy
dGV4QnVmZmVyOSo+KHZlcnRleEJ1ZmZlcik7Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVyOTo6c3Rv
cmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xp
bnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywgdW5zaWduZWQgaW50IG9mZnNldCkKK3sK
KyAgICBpZiAobVZlcnRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZl
ciA9IGF0dHJpYi5tQm91bmRCdWZmZXIuZ2V0KCk7CisKKyAgICAgICAgaW50IGlucHV0U3RyaWRl
ID0gYXR0cmliLnN0cmlkZSgpOworICAgICAgICBpbnQgZWxlbWVudFNpemUgPSBhdHRyaWIudHlw
ZVNpemUoKTsKKyAgICAgICAgY29uc3QgRm9ybWF0Q29udmVydGVyICZjb252ZXJ0ZXIgPSBmb3Jt
YXRDb252ZXJ0ZXIoYXR0cmliKTsKKworICAgICAgICBEV09SRCBsb2NrRmxhZ3MgPSBtRHluYW1p
Y1VzYWdlID8gRDNETE9DS19OT09WRVJXUklURSA6IDA7CisKKyAgICAgICAgdm9pZCAqbWFwUHRy
ID0gTlVMTDsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtVmVydGV4QnVmZmVyLT5Mb2NrKG9m
ZnNldCwgc3BhY2VSZXF1aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMpLCAmbWFwUHRyLCBs
b2NrRmxhZ3MpOworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAg
ICAgICAgICAgRVJSKCJMb2NrIGZhaWxlZCB3aXRoIGVycm9yIDB4JTA4eCIsIHJlc3VsdCk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBjaGFy
ICppbnB1dCA9IE5VTEw7CisgICAgICAgIGlmIChidWZmZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEJ1ZmZlclN0b3JhZ2UgKnN0b3JhZ2UgPSBidWZmZXItPmdldFN0b3JhZ2UoKTsKKyAgICAg
ICAgICAgIGlucHV0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHN0b3JhZ2UtPmdldERhdGEo
KSkgKyBzdGF0aWNfY2FzdDxpbnQ+KGF0dHJpYi5tT2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlucHV0ID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KGF0dHJpYi5tUG9pbnRlcik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW5zdGFu
Y2VzID09IDAgfHwgYXR0cmliLm1EaXZpc29yID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlucHV0ICs9IGlucHV0U3RyaWRlICogc3RhcnQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
Y29udmVydGVyLmlkZW50aXR5ICYmIGlucHV0U3RyaWRlID09IGVsZW1lbnRTaXplKQorICAgICAg
ICB7CisgICAgICAgICAgICBtZW1jcHkobWFwUHRyLCBpbnB1dCwgY291bnQgKiBpbnB1dFN0cmlk
ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBjb252
ZXJ0ZXIuY29udmVydEFycmF5KGlucHV0LCBpbnB1dFN0cmlkZSwgY291bnQsIG1hcFB0cik7Cisg
ICAgICAgIH0KKworICAgICAgICBtVmVydGV4QnVmZmVyLT5VbmxvY2soKTsKKworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgRVJSKCJWZXJ0ZXgg
YnVmZmVyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKworYm9vbCBWZXJ0ZXhCdWZmZXI5OjpzdG9yZVJhd0RhdGEoY29uc3Qgdm9pZCogZGF0YSwg
dW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGludCBvZmZzZXQpCit7CisgICAgaWYgKG1WZXJ0
ZXhCdWZmZXIpCisgICAgeworICAgICAgICBEV09SRCBsb2NrRmxhZ3MgPSBtRHluYW1pY1VzYWdl
ID8gRDNETE9DS19OT09WRVJXUklURSA6IDA7CisKKyAgICAgICAgdm9pZCAqbWFwUHRyID0gTlVM
TDsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtVmVydGV4QnVmZmVyLT5Mb2NrKG9mZnNldCwg
c2l6ZSwgJm1hcFB0ciwgbG9ja0ZsYWdzKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiTG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUw
OHgiLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAg
ICAgICAgbWVtY3B5KG1hcFB0ciwgZGF0YSwgc2l6ZSk7CisKKyAgICAgICAgbVZlcnRleEJ1ZmZl
ci0+VW5sb2NrKCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIEVSUigiVmVydGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXI5
OjpnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xz
aXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNwYWNl
UmVxdWlyZWQoYXR0cmliLCBjb3VudCwgaW5zdGFuY2VzKTsKK30KKworYm9vbCBWZXJ0ZXhCdWZm
ZXI5OjpyZXF1aXJlc0NvbnZlcnNpb24oY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmli
KSBjb25zdAoreworICAgIHJldHVybiBmb3JtYXRDb252ZXJ0ZXIoYXR0cmliKS5pZGVudGl0eTsK
K30KKwordW5zaWduZWQgaW50IFZlcnRleEJ1ZmZlcjk6OmdldFZlcnRleFNpemUoY29uc3QgZ2w6
OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdAoreworICAgIHJldHVybiBzcGFjZVJlcXVp
cmVkKGF0dHJpYiwgMSwgMCk7Cit9CisKK0QzRERFQ0xUWVBFIFZlcnRleEJ1ZmZlcjk6OmdldERl
Y2xUeXBlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZm9ybWF0Q29udmVydGVyKGF0dHJpYikuZDNkRGVjbFR5cGU7Cit9CisKK3Vuc2lnbmVk
IGludCBWZXJ0ZXhCdWZmZXI5OjpnZXRCdWZmZXJTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bUJ1ZmZlclNpemU7Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVyOTo6c2V0QnVmZmVyU2l6ZSh1bnNp
Z25lZCBpbnQgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA+IG1CdWZmZXJTaXplKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGluaXRpYWxpemUoc2l6ZSwgbUR5bmFtaWNVc2FnZSk7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKworYm9vbCBWZXJ0
ZXhCdWZmZXI5OjpkaXNjYXJkKCkKK3sKKyAgICBpZiAobVZlcnRleEJ1ZmZlcikKKyAgICB7Cisg
ICAgICAgIHZvaWQgKmR1bW15OworICAgICAgICBIUkVTVUxUIHJlc3VsdDsKKworICAgICAgICBy
ZXN1bHQgPSBtVmVydGV4QnVmZmVyLT5Mb2NrKDAsIDEsICZkdW1teSwgRDNETE9DS19ESVNDQVJE
KTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBF
UlIoIkRpc2NhcmQgbG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gbVZl
cnRleEJ1ZmZlci0+VW5sb2NrKCk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAg
ICAgeworICAgICAgICAgICAgRVJSKCJEaXNjYXJkIHVubG9jayBmYWlsZWQgd2l0aCBlcnJvciAw
eCUwOHgiLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEVS
UigiVmVydGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9CisKK0lEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKiBWZXJ0ZXhCdWZmZXI5Ojpn
ZXRCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBtVmVydGV4QnVmZmVyOworfQorCisvLyBN
YXBwaW5nIGZyb20gT3BlbkdMLUVTIHZlcnRleCBhdHRyaWIgdHlwZSB0byBEM0QgZGVjbCB0eXBl
OgorLy8KKy8vIEJZVEUgICAgICAgICAgICAgICAgIFNIT1JUIChDYXN0KQorLy8gQllURS1ub3Jt
ICAgICAgICAgICAgRkxPQVQgKE5vcm1hbGl6ZSkgKGNhbid0IGJlIGV4YWN0bHkgcmVwcmVzZW50
ZWQgYXMgU0hPUlQtbm9ybSkKKy8vIFVOU0lHTkVEX0JZVEUgICAgICAgIFVCWVRFNCAoSWRlbnRp
dHkpIG9yIFNIT1JUIChDYXN0KQorLy8gVU5TSUdORURfQllURS1ub3JtICAgVUJZVEU0TiAoSWRl
bnRpdHkpIG9yIEZMT0FUIChOb3JtYWxpemUpCisvLyBTSE9SVCAgICAgICAgICAgICAgICBTSE9S
VCAoSWRlbnRpdHkpCisvLyBTSE9SVC1ub3JtICAgICAgICAgICBTSE9SVC1ub3JtIChJZGVudGl0
eSkgb3IgRkxPQVQgKE5vcm1hbGl6ZSkKKy8vIFVOU0lHTkVEX1NIT1JUICAgICAgIEZMT0FUIChD
YXN0KQorLy8gVU5TSUdORURfU0hPUlQtbm9ybSAgVVNIT1JULW5vcm0gKElkZW50aXR5KSBvciBG
TE9BVCAoTm9ybWFsaXplKQorLy8gRklYRUQgKG5vdCBpbiBXZWJHTCkgRkxPQVQgKEZpeGVkVG9G
bG9hdCkKKy8vIEZMT0FUICAgICAgICAgICAgICAgIEZMT0FUIChJZGVudGl0eSkKKworLy8gR0xU
b0NUeXBlIG1hcHMgZnJvbSBHTCB0eXBlIChhcyBHTGVudW0pIHRvIHRoZSBDIHR5cGVkZWYuCit0
ZW1wbGF0ZSA8R0xlbnVtIEdMVHlwZT4gc3RydWN0IEdMVG9DVHlwZSB7IH07CisKK3RlbXBsYXRl
IDw+IHN0cnVjdCBHTFRvQ1R5cGU8R0xfQllURT4gICAgICAgICAgIHsgdHlwZWRlZiBHTGJ5dGUg
dHlwZTsgICAgICB9OwordGVtcGxhdGUgPD4gc3RydWN0IEdMVG9DVHlwZTxHTF9VTlNJR05FRF9C
WVRFPiAgeyB0eXBlZGVmIEdMdWJ5dGUgdHlwZTsgICAgIH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
R0xUb0NUeXBlPEdMX1NIT1JUPiAgICAgICAgICB7IHR5cGVkZWYgR0xzaG9ydCB0eXBlOyAgICAg
fTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBHTFRvQ1R5cGU8R0xfVU5TSUdORURfU0hPUlQ+IHsgdHlw
ZWRlZiBHTHVzaG9ydCB0eXBlOyAgICB9OwordGVtcGxhdGUgPD4gc3RydWN0IEdMVG9DVHlwZTxH
TF9GSVhFRD4gICAgICAgICAgeyB0eXBlZGVmIEdMdWludCB0eXBlOyAgICAgIH07Cit0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgR0xUb0NUeXBlPEdMX0ZMT0FUPiAgICAgICAgICB7IHR5cGVkZWYgR0xmbG9h
dCB0eXBlOyAgICAgfTsKKworLy8gVGhpcyBkaWZmZXJzIGZyb20gRDNEREVDTFRZUEUgaW4gdGhh
dCBpdCBpcyB1bnNpemVkLiAoU2l6ZSBleHBhbnNpb24gaXMgYXBwbGllZCBsYXN0LikKK2VudW0g
RDNEVmVydGV4VHlwZQoreworICAgIEQzRFZUX0ZMT0FULAorICAgIEQzRFZUX1NIT1JULAorICAg
IEQzRFZUX1NIT1JUX05PUk0sCisgICAgRDNEVlRfVUJZVEUsCisgICAgRDNEVlRfVUJZVEVfTk9S
TSwKKyAgICBEM0RWVF9VU0hPUlRfTk9STQorfTsKKworLy8gRDNEVG9DVHlwZSBtYXBzIGZyb20g
RDNEIHZlcnRleCB0eXBlIChhcyBlbnVtIEQzRFZlcnRleFR5cGUpIHRvIHRoZSBjb3JyZXNwb25k
aW5nIEMgdHlwZS4KK3RlbXBsYXRlIDx1bnNpZ25lZCBpbnQgRDNEVHlwZT4gc3RydWN0IEQzRFRv
Q1R5cGUgeyB9OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNEVG9DVHlwZTxEM0RWVF9GTE9BVD4g
eyB0eXBlZGVmIGZsb2F0IHR5cGU7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNEVG9DVHlwZTxE
M0RWVF9TSE9SVD4geyB0eXBlZGVmIHNob3J0IHR5cGU7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
RDNEVG9DVHlwZTxEM0RWVF9TSE9SVF9OT1JNPiB7IHR5cGVkZWYgc2hvcnQgdHlwZTsgfTsKK3Rl
bXBsYXRlIDw+IHN0cnVjdCBEM0RUb0NUeXBlPEQzRFZUX1VCWVRFPiB7IHR5cGVkZWYgdW5zaWdu
ZWQgY2hhciB0eXBlOyB9OwordGVtcGxhdGUgPD4gc3RydWN0IEQzRFRvQ1R5cGU8RDNEVlRfVUJZ
VEVfTk9STT4geyB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdHlwZTsgfTsKK3RlbXBsYXRlIDw+IHN0
cnVjdCBEM0RUb0NUeXBlPEQzRFZUX1VTSE9SVF9OT1JNPiB7IHR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgdHlwZTsgfTsKKworLy8gRW5jb2RlIHRoZSB0eXBlL3NpemUgY29tYmluYXRpb25zIHRoYXQg
RDNEIHBlcm1pdHMuIEZvciBlYWNoIHR5cGUvc2l6ZSBpdCBleHBhbmRzIHRvIGEgd2lkZW5lciB0
aGF0IHdpbGwgcHJvdmlkZSB0aGUgYXBwcm9wcmlhdGUgZmluYWwgc2l6ZS4KK3RlbXBsYXRlIDx1
bnNpZ25lZCBpbnQgdHlwZSwgaW50IHNpemU+IHN0cnVjdCBXaWRlblJ1bGUgeyB9OworCit0ZW1w
bGF0ZSA8aW50IHNpemU+IHN0cnVjdCBXaWRlblJ1bGU8RDNEVlRfRkxPQVQsIHNpemU+ICAgICAg
ICAgIDogTm9XaWRlbjxzaXplPiB7IH07Cit0ZW1wbGF0ZSA8aW50IHNpemU+IHN0cnVjdCBXaWRl
blJ1bGU8RDNEVlRfU0hPUlQsIHNpemU+ICAgICAgICAgIDogV2lkZW5Ub0V2ZW48c2l6ZT4geyB9
OwordGVtcGxhdGUgPGludCBzaXplPiBzdHJ1Y3QgV2lkZW5SdWxlPEQzRFZUX1NIT1JUX05PUk0s
IHNpemU+ICAgICA6IFdpZGVuVG9FdmVuPHNpemU+IHsgfTsKK3RlbXBsYXRlIDxpbnQgc2l6ZT4g
c3RydWN0IFdpZGVuUnVsZTxEM0RWVF9VQllURSwgc2l6ZT4gICAgICAgICAgOiBXaWRlblRvRm91
cjxzaXplPiB7IH07Cit0ZW1wbGF0ZSA8aW50IHNpemU+IHN0cnVjdCBXaWRlblJ1bGU8RDNEVlRf
VUJZVEVfTk9STSwgc2l6ZT4gICAgIDogV2lkZW5Ub0ZvdXI8c2l6ZT4geyB9OwordGVtcGxhdGUg
PGludCBzaXplPiBzdHJ1Y3QgV2lkZW5SdWxlPEQzRFZUX1VTSE9SVF9OT1JNLCBzaXplPiAgICA6
IFdpZGVuVG9FdmVuPHNpemU+IHsgfTsKKworLy8gVmVydGV4VHlwZUZsYWdzIGVuY29kZXMgdGhl
IEQzRENBUFM5OjpEZWNsVHlwZSBmbGFnIGFuZCB2ZXJ0ZXggZGVjbGFyYXRpb24gZmxhZyBmb3Ig
ZWFjaCBEM0QgdmVydGV4IHR5cGUgJiBzaXplIGNvbWJpbmF0aW9uLgordGVtcGxhdGUgPHVuc2ln
bmVkIGludCBkM2R0eXBlLCBpbnQgc2l6ZT4gc3RydWN0IFZlcnRleFR5cGVGbGFncyB7IH07CisK
K3RlbXBsYXRlIDx1bnNpZ25lZCBpbnQgX2NhcGZsYWcsIHVuc2lnbmVkIGludCBfZGVjbGZsYWc+
CitzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzSGVscGVyCit7CisgICAgZW51bSB7IGNhcGZsYWcgPSBf
Y2FwZmxhZyB9OworICAgIGVudW0geyBkZWNsZmxhZyA9IF9kZWNsZmxhZyB9OworfTsKKwordGVt
cGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9GTE9BVCwgMT4gOiBWZXJ0ZXhU
eXBlRmxhZ3NIZWxwZXI8MCwgRDNEREVDTFRZUEVfRkxPQVQxPiB7IH07Cit0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX0ZMT0FULCAyPiA6IFZlcnRleFR5cGVGbGFnc0hl
bHBlcjwwLCBEM0RERUNMVFlQRV9GTE9BVDI+IHsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0
ZXhUeXBlRmxhZ3M8RDNEVlRfRkxPQVQsIDM+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPDAsIEQz
RERFQ0xUWVBFX0ZMT0FUMz4geyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFn
czxEM0RWVF9GTE9BVCwgND4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxwZXI8MCwgRDNEREVDTFRZUEVf
RkxPQVQ0PiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX1NI
T1JULCAyPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjwwLCBEM0RERUNMVFlQRV9TSE9SVDI+IHsg
fTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRfU0hPUlQsIDQ+IDog
VmVydGV4VHlwZUZsYWdzSGVscGVyPDAsIEQzRERFQ0xUWVBFX1NIT1JUND4geyB9OwordGVtcGxh
dGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9TSE9SVF9OT1JNLCAyPiA6IFZlcnRl
eFR5cGVGbGFnc0hlbHBlcjxEM0REVENBUFNfU0hPUlQyTiwgRDNEREVDTFRZUEVfU0hPUlQyTj4g
eyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9TSE9SVF9OT1JN
LCA0PiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjxEM0REVENBUFNfU0hPUlQ0TiwgRDNEREVDTFRZ
UEVfU0hPUlQ0Tj4geyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RW
VF9VQllURSwgND4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxwZXI8RDNERFRDQVBTX1VCWVRFNCwgRDNE
REVDTFRZUEVfVUJZVEU0PiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdz
PEQzRFZUX1VCWVRFX05PUk0sIDQ+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPEQzRERUQ0FQU19V
QllURTROLCBEM0RERUNMVFlQRV9VQllURTROPiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVy
dGV4VHlwZUZsYWdzPEQzRFZUX1VTSE9SVF9OT1JNLCAyPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBl
cjxEM0REVENBUFNfVVNIT1JUMk4sIEQzRERFQ0xUWVBFX1VTSE9SVDJOPiB7IH07Cit0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX1VTSE9SVF9OT1JNLCA0PiA6IFZlcnRl
eFR5cGVGbGFnc0hlbHBlcjxEM0REVENBUFNfVVNIT1JUNE4sIEQzRERFQ0xUWVBFX1VTSE9SVDRO
PiB7IH07CisKKworLy8gVmVydGV4VHlwZU1hcHBpbmcgbWFwcyBHTCB0eXBlICYgbm9ybWFsaXpl
ZCBmbGFnIHRvIHByZWZlcnJlZCBhbmQgZmFsbGJhY2sgRDNEIHZlcnRleCB0eXBlcyAoYXMgRDNE
VmVydGV4VHlwZSBlbnVtcykuCit0ZW1wbGF0ZSA8R0xlbnVtIEdMdHlwZSwgYm9vbCBub3JtYWxp
emVkPiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmcgeyB9OworCit0ZW1wbGF0ZSA8RDNEVmVydGV4
VHlwZSBQcmVmZXJyZWQsIEQzRFZlcnRleFR5cGUgRmFsbGJhY2sgPSBQcmVmZXJyZWQ+CitzdHJ1
Y3QgVmVydGV4VHlwZU1hcHBpbmdCYXNlCit7CisgICAgZW51bSB7IHByZWZlcnJlZCA9IFByZWZl
cnJlZCB9OworICAgIGVudW0geyBmYWxsYmFjayA9IEZhbGxiYWNrIH07Cit9OworCit0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfQllURSwgZmFsc2U+ICAgICAgICAgICAg
ICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfU0hPUlQ+IHsgfTsgICAg
ICAgICAgICAgICAgICAgICAgIC8vIENhc3QKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBl
TWFwcGluZzxHTF9CWVRFLCB0cnVlPiAgICAgICAgICAgICAgICAgICAgICAgICA6IFZlcnRleFR5
cGVNYXBwaW5nQmFzZTxEM0RWVF9GTE9BVD4geyB9OyAgICAgICAgICAgICAgICAgICAgICAgLy8g
Tm9ybWFsaXplCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfVU5TSUdO
RURfQllURSwgZmFsc2U+ICAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNE
VlRfVUJZVEUsIEQzRFZUX0ZMT0FUPiB7IH07ICAgICAgICAgIC8vIElkZW50aXR5LCBDYXN0Cit0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfVU5TSUdORURfQllURSwgdHJ1
ZT4gICAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfVUJZVEVfTk9S
TSwgRDNEVlRfRkxPQVQ+IHsgfTsgICAgIC8vIElkZW50aXR5LCBOb3JtYWxpemUKK3RlbXBsYXRl
IDw+IHN0cnVjdCBWZXJ0ZXhUeXBlTWFwcGluZzxHTF9TSE9SVCwgZmFsc2U+ICAgICAgICAgICAg
ICAgICAgICAgICA6IFZlcnRleFR5cGVNYXBwaW5nQmFzZTxEM0RWVF9TSE9SVD4geyB9OyAgICAg
ICAgICAgICAgICAgICAgICAgLy8gSWRlbnRpdHkKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhU
eXBlTWFwcGluZzxHTF9TSE9SVCwgdHJ1ZT4gICAgICAgICAgICAgICAgICAgICAgICA6IFZlcnRl
eFR5cGVNYXBwaW5nQmFzZTxEM0RWVF9TSE9SVF9OT1JNLCBEM0RWVF9GTE9BVD4geyB9OyAgICAg
Ly8gQ2FzdCwgTm9ybWFsaXplCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8
R0xfVU5TSUdORURfU0hPUlQsIGZhbHNlPiAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGlu
Z0Jhc2U8RDNEVlRfRkxPQVQ+IHsgfTsgICAgICAgICAgICAgICAgICAgICAgIC8vIENhc3QKK3Rl
bXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlTWFwcGluZzxHTF9VTlNJR05FRF9TSE9SVCwgdHJ1
ZT4gICAgICAgICAgICAgICA6IFZlcnRleFR5cGVNYXBwaW5nQmFzZTxEM0RWVF9VU0hPUlRfTk9S
TSwgRDNEVlRfRkxPQVQ+IHsgfTsgICAgLy8gQ2FzdCwgTm9ybWFsaXplCit0ZW1wbGF0ZSA8Ym9v
bCBub3JtYWxpemVkPiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfRklYRUQsIG5vcm1hbGl6
ZWQ+ICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfRkxPQVQ+IHsgfTsgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEZpeGVkVG9GbG9hdAordGVtcGxhdGUgPGJvb2wgbm9ybWFsaXplZD4g
c3RydWN0IFZlcnRleFR5cGVNYXBwaW5nPEdMX0ZMT0FULCBub3JtYWxpemVkPiAgIDogVmVydGV4
VHlwZU1hcHBpbmdCYXNlPEQzRFZUX0ZMT0FUPiB7IH07ICAgICAgICAgICAgICAgICAgICAgICAv
LyBJZGVudGl0eQorCisKKy8vIEdpdmVuIGEgR0wgdHlwZSAmIG5vcm0gZmxhZyBhbmQgYSBEM0Qg
dHlwZSwgQ29udmVyc2lvblJ1bGUgcHJvdmlkZXMgdGhlIHR5cGUgY29udmVyc2lvbiBydWxlIChD
YXN0LCBOb3JtYWxpemUsIElkZW50aXR5LCBGaXhlZFRvRmxvYXQpLgorLy8gVGhlIGNvbnZlcnNp
b24gcnVsZXMgdGhlbXNlbHZlcyBhcmUgZGVmaW5lZCBpbiB2ZXJ0ZXhjb252ZXJzaW9uLmguCisK
Ky8vIEFsbW9zdCBhbGwgY2FzZXMgYXJlIGNvdmVyZWQgYnkgQ2FzdCAoaW5jbHVkaW5nIHRob3Nl
IHRoYXQgYXJlIGFjdHVhbGx5IElkZW50aXR5IHNpbmNlIENhc3Q8VCxUPiBrbm93cyBpdCdzIGFu
IGlkZW50aXR5IG1hcHBpbmcpLgordGVtcGxhdGUgPEdMZW51bSBmcm9tVHlwZSwgYm9vbCBub3Jt
YWxpemVkLCB1bnNpZ25lZCBpbnQgdG9UeXBlPgorc3RydWN0IENvbnZlcnNpb25SdWxlIDogQ2Fz
dDx0eXBlbmFtZSBHTFRvQ1R5cGU8ZnJvbVR5cGU+Ojp0eXBlLCB0eXBlbmFtZSBEM0RUb0NUeXBl
PHRvVHlwZT46OnR5cGU+IHsgfTsKKworLy8gQWxsIGNvbnZlcnNpb25zIGZyb20gbm9ybWFsaXpl
ZCB0eXBlcyB0byBmbG9hdCB1c2UgdGhlIE5vcm1hbGl6ZSBvcGVyYXRvci4KK3RlbXBsYXRlIDxH
TGVudW0gZnJvbVR5cGU+IHN0cnVjdCBDb252ZXJzaW9uUnVsZTxmcm9tVHlwZSwgdHJ1ZSwgRDNE
VlRfRkxPQVQ+IDogTm9ybWFsaXplPHR5cGVuYW1lIEdMVG9DVHlwZTxmcm9tVHlwZT46OnR5cGU+
IHsgfTsKKworLy8gVXNlIGEgZnVsbCBzcGVjaWFsaXphdGlvbiBmb3IgdGhpcyBzbyB0aGF0IGl0
IHByZWZlcmVudGlhbGx5IG1hdGNoZXMgYWhlYWQgb2YgdGhlIGdlbmVyaWMgbm9ybWFsaXplLXRv
LWZsb2F0IHJ1bGVzLgordGVtcGxhdGUgPD4gc3RydWN0IENvbnZlcnNpb25SdWxlPEdMX0ZJWEVE
LCB0cnVlLCBEM0RWVF9GTE9BVD4gIDogRml4ZWRUb0Zsb2F0PEdMaW50LCAxNj4geyB9OwordGVt
cGxhdGUgPD4gc3RydWN0IENvbnZlcnNpb25SdWxlPEdMX0ZJWEVELCBmYWxzZSwgRDNEVlRfRkxP
QVQ+IDogRml4ZWRUb0Zsb2F0PEdMaW50LCAxNj4geyB9OworCisvLyBBIDItc3RhZ2UgY29uc3Ry
dWN0aW9uIGlzIHVzZWQgZm9yIERlZmF1bHRWZXJ0ZXhWYWx1ZXMgYmVjYXVzZSBmbG9hdCBtdXN0
IHVzZSBTaW1wbGVEZWZhdWx0VmFsdWVzIChpLmUuIDAvMSkKKy8vIHdoZXRoZXIgaXQgaXMgbm9y
bWFsaXplZCBvciBub3QuCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgYm9vbCBub3JtYWxpemVkPiBzdHJ1
Y3QgRGVmYXVsdFZlcnRleFZhbHVlc1N0YWdlMiB7IH07CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBz
dHJ1Y3QgRGVmYXVsdFZlcnRleFZhbHVlc1N0YWdlMjxULCB0cnVlPiAgOiBOb3JtYWxpemVkRGVm
YXVsdFZhbHVlczxUPiB7IH07Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IERlZmF1bHRWZXJ0
ZXhWYWx1ZXNTdGFnZTI8VCwgZmFsc2U+IDogU2ltcGxlRGVmYXVsdFZhbHVlczxUPiB7IH07CisK
Ky8vIFdvcmsgb3V0IHRoZSBkZWZhdWx0IHZhbHVlIHJ1bGUgZm9yIGEgRDNEIHR5cGUgKGV4cHJl
c3NlZCBhcyB0aGUgQyB0eXBlKSBhbmQKK3RlbXBsYXRlIDxjbGFzcyBULCBib29sIG5vcm1hbGl6
ZWQ+IHN0cnVjdCBEZWZhdWx0VmVydGV4VmFsdWVzIDogRGVmYXVsdFZlcnRleFZhbHVlc1N0YWdl
MjxULCBub3JtYWxpemVkPiB7IH07Cit0ZW1wbGF0ZSA8Ym9vbCBub3JtYWxpemVkPiBzdHJ1Y3Qg
RGVmYXVsdFZlcnRleFZhbHVlczxmbG9hdCwgbm9ybWFsaXplZD4gOiBTaW1wbGVEZWZhdWx0VmFs
dWVzPGZsb2F0PiB7IH07CisKKy8vIFBvbGljeSBydWxlcyBmb3IgdXNlIHdpdGggQ29udmVydGVy
LCB0byBjaG9vc2Ugd2hldGhlciB0byB1c2UgdGhlIHByZWZlcnJlZCBvciBmYWxsYmFjayBjb252
ZXJzaW9uLgorLy8gVGhlIGZhbGxiYWNrIGNvbnZlcnNpb24gcHJvZHVjZXMgYW4gb3V0cHV0IHRo
YXQgYWxsIEQzRDkgZGV2aWNlcyBtdXN0IHN1cHBvcnQuCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3Ry
dWN0IFVzZVByZWZlcnJlZCB7IGVudW0geyB0eXBlID0gVDo6cHJlZmVycmVkIH07IH07Cit0ZW1w
bGF0ZSA8Y2xhc3MgVD4gc3RydWN0IFVzZUZhbGxiYWNrIHsgZW51bSB7IHR5cGUgPSBUOjpmYWxs
YmFjayB9OyB9OworCisvLyBDb252ZXJ0ZXIgdGllcyBpdCBhbGwgdG9nZXRoZXIuIEdpdmVuIGFu
IE9wZW5HTCB0eXBlL25vcm0vc2l6ZSBhbmQgY2hvaWNlIG9mIHByZWZlcnJlZC9mYWxsYmFjayBj
b252ZXJzaW9uLAorLy8gaXQgcHJvdmlkZXMgYWxsIHRoZSBtZW1iZXJzIG9mIHRoZSBhcHByb3By
aWF0ZSBWZXJ0ZXhEYXRhQ29udmVydGVyLCB0aGUgRDNEQ0FQUzk6OkRlY2xUeXBlcyBmbGFnIGlu
IGNhcCBmbGFnCisvLyBhbmQgdGhlIEQzRERFQ0xUWVBFIG1lbWJlciBuZWVkZWQgZm9yIHRoZSB2
ZXJ0ZXggZGVjbGFyYXRpb24gaW4gZGVjbGZsYWcuCit0ZW1wbGF0ZSA8R0xlbnVtIGZyb21UeXBl
LCBib29sIG5vcm1hbGl6ZWQsIGludCBzaXplLCB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUHJl
ZmVyZW5jZVJ1bGU+CitzdHJ1Y3QgQ29udmVydGVyCisgICAgOiBWZXJ0ZXhEYXRhQ29udmVydGVy
PHR5cGVuYW1lIEdMVG9DVHlwZTxmcm9tVHlwZT46OnR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdpZGVuUnVsZTxQcmVmZXJlbmNlUnVsZTwgVmVydGV4VHlwZU1hcHBpbmc8ZnJvbVR5
cGUsIG5vcm1hbGl6ZWQ+ID46OnR5cGUsIHNpemU+LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb252ZXJzaW9uUnVsZTxmcm9tVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUHJlZmVyZW5jZVJ1bGU8IFZlcnRleFR5cGVNYXBwaW5nPGZyb21UeXBlLCBub3Jt
YWxpemVkPiA+Ojp0eXBlPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFZlcnRl
eFZhbHVlczx0eXBlbmFtZSBEM0RUb0NUeXBlPFByZWZlcmVuY2VSdWxlPCBWZXJ0ZXhUeXBlTWFw
cGluZzxmcm9tVHlwZSwgbm9ybWFsaXplZD4gPjo6dHlwZT46OnR5cGUsIG5vcm1hbGl6ZWQgPiA+
Cit7Citwcml2YXRlOgorICAgIGVudW0geyBkM2R0eXBlID0gUHJlZmVyZW5jZVJ1bGU8IFZlcnRl
eFR5cGVNYXBwaW5nPGZyb21UeXBlLCBub3JtYWxpemVkPiA+Ojp0eXBlIH07CisgICAgZW51bSB7
IGQzZHNpemUgPSBXaWRlblJ1bGU8ZDNkdHlwZSwgc2l6ZT46OmZpbmFsV2lkdGggfTsKKworcHVi
bGljOgorICAgIGVudW0geyBjYXBmbGFnID0gVmVydGV4VHlwZUZsYWdzPGQzZHR5cGUsIGQzZHNp
emU+OjpjYXBmbGFnIH07CisgICAgZW51bSB7IGRlY2xmbGFnID0gVmVydGV4VHlwZUZsYWdzPGQz
ZHR5cGUsIGQzZHNpemU+OjpkZWNsZmxhZyB9OworfTsKKworLy8gSW5pdGlhbGl6ZSBhIFRyYW5z
bGF0aW9uSW5mbworI2RlZmluZSBUUkFOU0xBVElPTih0eXBlLCBub3JtLCBzaXplLCBwcmVmZXJy
ZWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBDb252ZXJ0ZXI8dHlwZSwgbm9ybSwgc2l6ZSwgcHJlZmVy
cmVkPjo6aWRlbnRpdHksICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDb252
ZXJ0ZXI8dHlwZSwgbm9ybSwgc2l6ZSwgcHJlZmVycmVkPjo6ZmluYWxTaXplLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBDb252ZXJ0ZXI8dHlwZSwgbm9ybSwgc2l6ZSwgcHJl
ZmVycmVkPjo6Y29udmVydEFycmF5LCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBz
dGF0aWNfY2FzdDxEM0RERUNMVFlQRT4oQ29udmVydGVyPHR5cGUsIG5vcm0sIHNpemUsIHByZWZl
cnJlZD46OmRlY2xmbGFnKSAgXAorICAgIH0KKworI2RlZmluZSBUUkFOU0xBVElPTl9GT1JfVFlQ
RV9OT1JNX1NJWkUodHlwZSwgbm9ybSwgc2l6ZSkgICAgXAorICAgIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDb252ZXJ0
ZXI8dHlwZSwgbm9ybSwgc2l6ZSwgVXNlUHJlZmVycmVkPjo6Y2FwZmxhZywgXAorICAgICAgICBU
UkFOU0xBVElPTih0eXBlLCBub3JtLCBzaXplLCBVc2VQcmVmZXJyZWQpLCAgICAgICAgXAorICAg
ICAgICBUUkFOU0xBVElPTih0eXBlLCBub3JtLCBzaXplLCBVc2VGYWxsYmFjaykgICAgICAgICAg
XAorICAgIH0KKworI2RlZmluZSBUUkFOU0xBVElPTlNfRk9SX1RZUEUodHlwZSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB7IFRSQU5TTEFUSU9OX0ZPUl9UWVBF
X05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMSksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0la
RSh0eXBlLCBmYWxzZSwgMiksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBm
YWxzZSwgMyksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgNCkg
fSwgXAorICAgICAgICB7IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCB0cnVl
LCAxKSwgVFJBTlNMQVRJT05fRk9SX1RZUEVfTk9STV9TSVpFKHR5cGUsIHRydWUsIDIpLCBUUkFO
U0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgdHJ1ZSwgMyksIFRSQU5TTEFUSU9OX0ZP
Ul9UWVBFX05PUk1fU0laRSh0eXBlLCB0cnVlLCA0KSB9LCAgICAgXAorICAgIH0KKworI2RlZmlu
ZSBUUkFOU0xBVElPTlNfRk9SX1RZUEVfTk9fTk9STSh0eXBlKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICB7IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBm
YWxzZSwgMSksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMiks
IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMyksIFRSQU5TTEFU
SU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgNCkgfSwgXAorICAgICAgICB7IFRS
QU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMSksIFRSQU5TTEFUSU9O
X0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMiksIFRSQU5TTEFUSU9OX0ZPUl9UWVBF
X05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMyksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0la
RSh0eXBlLCBmYWxzZSwgNCkgfSwgXAorICAgIH0KKworY29uc3QgVmVydGV4QnVmZmVyOTo6VHJh
bnNsYXRpb25EZXNjcmlwdGlvbiBWZXJ0ZXhCdWZmZXI5OjptUG9zc2libGVUcmFuc2xhdGlvbnNb
TlVNX0dMX1ZFUlRFWF9BVFRSSUJfVFlQRVNdWzJdWzRdID0gLy8gW0dMIHR5cGVzIGFzIGVudW1l
cmF0ZWQgYnkgdHlwZUluZGV4KCldW25vcm1hbGl6ZWRdW3NpemUtMV0KK3sKKyAgICBUUkFOU0xB
VElPTlNfRk9SX1RZUEUoR0xfQllURSksCisgICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBFKEdMX1VO
U0lHTkVEX0JZVEUpLAorICAgIFRSQU5TTEFUSU9OU19GT1JfVFlQRShHTF9TSE9SVCksCisgICAg
VFJBTlNMQVRJT05TX0ZPUl9UWVBFKEdMX1VOU0lHTkVEX1NIT1JUKSwKKyAgICBUUkFOU0xBVElP
TlNfRk9SX1RZUEVfTk9fTk9STShHTF9GSVhFRCksCisgICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBF
X05PX05PUk0oR0xfRkxPQVQpCit9OworCit2b2lkIFZlcnRleEJ1ZmZlcjk6OmluaXRpYWxpemVU
cmFuc2xhdGlvbnMoRFdPUkQgZGVjbFR5cGVzKQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgTlVNX0dMX1ZFUlRFWF9BVFRSSUJfVFlQRVM7IGkrKykKKyAgICB7CisgICAgICAg
IGZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgMjsgaisrKQorICAgICAgICB7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBrID0gMDsgayA8IDQ7IGsrKykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAobVBvc3NpYmxlVHJhbnNsYXRpb25zW2ldW2pdW2tdLmNhcHNG
bGFnID09IDAgfHwgKGRlY2xUeXBlcyAmIG1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tpXVtqXVtrXS5j
YXBzRmxhZykgIT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1G
b3JtYXRDb252ZXJ0ZXJzW2ldW2pdW2tdID0gbVBvc3NpYmxlVHJhbnNsYXRpb25zW2ldW2pdW2td
LnByZWZlcnJlZENvbnZlcnNpb247CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1Gb3JtYXRDb252
ZXJ0ZXJzW2ldW2pdW2tdID0gbVBvc3NpYmxlVHJhbnNsYXRpb25zW2ldW2pdW2tdLmZhbGxiYWNr
Q29udmVyc2lvbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXI5Ojp0eXBlSW5kZXgoR0xlbnVt
IHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfQllURTog
cmV0dXJuIDA7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6IHJldHVybiAxOworICAgICAg
Y2FzZSBHTF9TSE9SVDogcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOiBy
ZXR1cm4gMzsKKyAgICAgIGNhc2UgR0xfRklYRUQ6IHJldHVybiA0OworICAgICAgY2FzZSBHTF9G
TE9BVDogcmV0dXJuIDU7CisKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IHJldHVybiA1
OworICAgIH0KK30KKworY29uc3QgVmVydGV4QnVmZmVyOTo6Rm9ybWF0Q29udmVydGVyICZWZXJ0
ZXhCdWZmZXI5Ojpmb3JtYXRDb252ZXJ0ZXIoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0
cmlidXRlKQoreworICAgIHJldHVybiBtRm9ybWF0Q29udmVydGVyc1t0eXBlSW5kZXgoYXR0cmli
dXRlLm1UeXBlKV1bYXR0cmlidXRlLm1Ob3JtYWxpemVkXVthdHRyaWJ1dGUubVNpemUgLSAxXTsK
K30KKwordW5zaWduZWQgaW50IFZlcnRleEJ1ZmZlcjk6OnNwYWNlUmVxdWlyZWQoY29uc3QgZ2w6
OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBzdGQ6OnNpemVfdCBjb3VudCwgR0xzaXplaSBpbnN0
YW5jZXMpCit7CisgICAgdW5zaWduZWQgaW50IGVsZW1lbnRTaXplID0gZm9ybWF0Q29udmVydGVy
KGF0dHJpYikub3V0cHV0RWxlbWVudFNpemU7CisKKyAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwg
YXR0cmliLm1EaXZpc29yID09IDApCisgICAgeworICAgICAgICByZXR1cm4gZWxlbWVudFNpemUg
KiBjb3VudDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRT
aXplICogKChpbnN0YW5jZXMgKyBhdHRyaWIubURpdmlzb3IgLSAxKSAvIGF0dHJpYi5tRGl2aXNv
cik7CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvVmVydGV4QnVmZmVyOS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkwIEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisvLyBWZXJ0ZXhCdWZmZXI5Lmg6IERlZmluZXMgdGhlIEQzRDkgVmVydGV4
QnVmZmVyIGltcGxlbWVudGF0aW9uLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9WRVJU
RVhCVUZGRVI5X0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVI5X0hf
CisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmgiCisKK25hbWVz
cGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI5OworCitjbGFzcyBWZXJ0ZXhCdWZmZXI5IDogcHVi
bGljIFZlcnRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgVmVydGV4QnVmZmVy
OShyeDo6UmVuZGVyZXI5ICpjb25zdCByZW5kZXJlcik7CisgICAgdmlydHVhbCB+VmVydGV4QnVm
ZmVyOSgpOworCisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUodW5zaWduZWQgaW50IHNpemUs
IGJvb2wgZHluYW1pY1VzYWdlKTsKKworICAgIHN0YXRpYyBWZXJ0ZXhCdWZmZXI5ICptYWtlVmVy
dGV4QnVmZmVyOShWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlcik7CisKKyAgICB2aXJ0dWFsIGJv
b2wgc3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJp
YiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9mZnNldCk7Cisg
ICAgdmlydHVhbCBib29sIHN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBp
bnQgc2l6ZSwgdW5zaWduZWQgaW50IG9mZnNldCk7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGlu
dCBnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xz
aXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0OworCisgICAgdmlydHVhbCBib29s
IHJlcXVpcmVzQ29udmVyc2lvbihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNv
bnN0OworCisgICAgdW5zaWduZWQgaW50IGdldFZlcnRleFNpemUoY29uc3QgZ2w6OlZlcnRleEF0
dHJpYnV0ZSAmYXR0cmliKSBjb25zdDsKKyAgICBEM0RERUNMVFlQRSBnZXREZWNsVHlwZShjb25z
dCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0OworCisgICAgdmlydHVhbCB1bnNp
Z25lZCBpbnQgZ2V0QnVmZmVyU2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzZXRCdWZm
ZXJTaXplKHVuc2lnbmVkIGludCBzaXplKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGlzY2FyZCgpOwor
CisgICAgSURpcmVjdDNEVmVydGV4QnVmZmVyOSAqZ2V0QnVmZmVyKCkgY29uc3Q7CisKKyAgcHJp
dmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVmVydGV4QnVmZmVyOSk7CisKKyAg
ICByeDo6UmVuZGVyZXI5ICpjb25zdCBtUmVuZGVyZXI7CisKKyAgICBJRGlyZWN0M0RWZXJ0ZXhC
dWZmZXI5ICptVmVydGV4QnVmZmVyOworICAgIHVuc2lnbmVkIGludCBtQnVmZmVyU2l6ZTsKKyAg
ICBib29sIG1EeW5hbWljVXNhZ2U7CisKKyAgICAvLyBBdHRyaWJ1dGUgZm9ybWF0IGNvbnZlcnNp
b24KKyAgICBlbnVtIHsgTlVNX0dMX1ZFUlRFWF9BVFRSSUJfVFlQRVMgPSA2IH07CisKKyAgICBz
dHJ1Y3QgRm9ybWF0Q29udmVydGVyCisgICAgeworICAgICAgICBib29sIGlkZW50aXR5OworICAg
ICAgICBzdGQ6OnNpemVfdCBvdXRwdXRFbGVtZW50U2l6ZTsKKyAgICAgICAgdm9pZCAoKmNvbnZl
cnRBcnJheSkoY29uc3Qgdm9pZCAqaW4sIHN0ZDo6c2l6ZV90IHN0cmlkZSwgc3RkOjpzaXplX3Qg
biwgdm9pZCAqb3V0KTsKKyAgICAgICAgRDNEREVDTFRZUEUgZDNkRGVjbFR5cGU7CisgICAgfTsK
KworICAgIHN0YXRpYyBib29sIG1UcmFuc2xhdGlvbnNJbml0aWFsaXplZDsKKyAgICBzdGF0aWMg
dm9pZCBpbml0aWFsaXplVHJhbnNsYXRpb25zKERXT1JEIGRlY2xUeXBlcyk7CisKKyAgICAvLyBb
R0wgdHlwZXMgYXMgZW51bWVyYXRlZCBieSB0eXBlSW5kZXgoKV1bbm9ybWFsaXplZF1bc2l6ZSAt
IDFdCisgICAgc3RhdGljIEZvcm1hdENvbnZlcnRlciBtRm9ybWF0Q29udmVydGVyc1tOVU1fR0xf
VkVSVEVYX0FUVFJJQl9UWVBFU11bMl1bNF07CisKKyAgICBzdHJ1Y3QgVHJhbnNsYXRpb25EZXNj
cmlwdGlvbgorICAgIHsKKyAgICAgICAgRFdPUkQgY2Fwc0ZsYWc7CisgICAgICAgIEZvcm1hdENv
bnZlcnRlciBwcmVmZXJyZWRDb252ZXJzaW9uOworICAgICAgICBGb3JtYXRDb252ZXJ0ZXIgZmFs
bGJhY2tDb252ZXJzaW9uOworICAgIH07CisKKyAgICAvLyBUaGlzIHRhYmxlIGlzIHVzZWQgdG8g
Z2VuZXJhdGUgbUZvcm1hdENvbnZlcnRlcnMuCisgICAgLy8gW0dMIHR5cGVzIGFzIGVudW1lcmF0
ZWQgYnkgdHlwZUluZGV4KCldW25vcm1hbGl6ZWRdW3NpemUgLSAxXQorICAgIHN0YXRpYyBjb25z
dCBUcmFuc2xhdGlvbkRlc2NyaXB0aW9uIG1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tOVU1fR0xfVkVS
VEVYX0FUVFJJQl9UWVBFU11bMl1bNF07CisKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IHR5cGVJ
bmRleChHTGVudW0gdHlwZSk7CisgICAgc3RhdGljIGNvbnN0IEZvcm1hdENvbnZlcnRlciAmZm9y
bWF0Q29udmVydGVyKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSk7CisKKyAg
ICBzdGF0aWMgdW5zaWduZWQgaW50IHNwYWNlUmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0dHJp
YnV0ZSAmYXR0cmliLCBzdGQ6OnNpemVfdCBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworfTsK
KworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1ZFUlRFWEJVRkZFUjlfSF8KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4
QnVmZmVyMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIx
MS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDE4IEBACisjaW5jbHVkZSAicHJlY29tcGls
ZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBWZXJ0ZXhCdWZmZXIxMS5jcHA6IERlZmluZXMgdGhl
IEQzRDExIFZlcnRleEJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KKworI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9CdWZmZXJTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvQnVmZmVyLmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvQ29udGV4dC5oIgorCituYW1lc3BhY2UgcngKK3sKKworVmVydGV4QnVmZmVyMTE6OlZlcnRl
eEJ1ZmZlcjExKHJ4OjpSZW5kZXJlcjExICpjb25zdCByZW5kZXJlcikgOiBtUmVuZGVyZXIocmVu
ZGVyZXIpCit7CisgICAgbUJ1ZmZlciA9IE5VTEw7CisgICAgbUJ1ZmZlclNpemUgPSAwOworICAg
IG1EeW5hbWljVXNhZ2UgPSBmYWxzZTsKK30KKworVmVydGV4QnVmZmVyMTE6On5WZXJ0ZXhCdWZm
ZXIxMSgpCit7CisgICAgaWYgKG1CdWZmZXIpCisgICAgeworICAgICAgICBtQnVmZmVyLT5SZWxl
YXNlKCk7CisgICAgICAgIG1CdWZmZXIgPSBOVUxMOworICAgIH0KK30KKworYm9vbCBWZXJ0ZXhC
dWZmZXIxMTo6aW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQgc2l6ZSwgYm9vbCBkeW5hbWljVXNhZ2Up
Cit7CisgICAgaWYgKG1CdWZmZXIpCisgICAgeworICAgICAgICBtQnVmZmVyLT5SZWxlYXNlKCk7
CisgICAgICAgIG1CdWZmZXIgPSBOVUxMOworICAgIH0KKworICAgIHVwZGF0ZVNlcmlhbCgpOwor
CisgICAgaWYgKHNpemUgPiAwKQorICAgIHsKKyAgICAgICAgSUQzRDExRGV2aWNlKiBkeERldmlj
ZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0Mg
YnVmZmVyRGVzYzsKKyAgICAgICAgYnVmZmVyRGVzYy5CeXRlV2lkdGggPSBzaXplOworICAgICAg
ICBidWZmZXJEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfRFlOQU1JQzsKKyAgICAgICAgYnVmZmVy
RGVzYy5CaW5kRmxhZ3MgPSBEM0QxMV9CSU5EX1ZFUlRFWF9CVUZGRVI7CisgICAgICAgIGJ1ZmZl
ckRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOworICAgICAgICBi
dWZmZXJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgIGJ1ZmZlckRlc2MuU3RydWN0dXJlQnl0
ZVN0cmlkZSA9IDA7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkeERldmljZS0+Q3JlYXRl
QnVmZmVyKCZidWZmZXJEZXNjLCBOVUxMLCAmbUJ1ZmZlcik7CisgICAgICAgIGlmIChGQUlMRUQo
cmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfQorCisgICAgbUJ1ZmZlclNpemUgPSBzaXplOworICAgIG1EeW5hbWljVXNhZ2UgPSBk
eW5hbWljVXNhZ2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1ZlcnRleEJ1ZmZlcjExICpWZXJ0
ZXhCdWZmZXIxMTo6bWFrZVZlcnRleEJ1ZmZlcjExKFZlcnRleEJ1ZmZlciAqdmV0ZXhCdWZmZXIp
Cit7CisgICAgQVNTRVJUKEhBU19EWU5BTUlDX1RZUEUoVmVydGV4QnVmZmVyMTEqLCB2ZXRleEJ1
ZmZlcikpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxWZXJ0ZXhCdWZmZXIxMSo+KHZldGV4QnVm
ZmVyKTsKK30KKworYm9vbCBWZXJ0ZXhCdWZmZXIxMTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNv
bnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBp
bnN0YW5jZXMsIHVuc2lnbmVkIGludCBvZmZzZXQpCit7CisgICAgaWYgKG1CdWZmZXIpCisgICAg
eworICAgICAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBhdHRyaWIubUJvdW5kQnVmZmVyLmdldCgp
OworCisgICAgICAgIGludCBpbnB1dFN0cmlkZSA9IGF0dHJpYi5zdHJpZGUoKTsKKyAgICAgICAg
Y29uc3QgVmVydGV4Q29udmVydGVyICZjb252ZXJ0ZXIgPSBnZXRWZXJ0ZXhDb252ZXJzaW9uKGF0
dHJpYik7CisKKyAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqZHhDb250ZXh0ID0gbVJlbmRl
cmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CisKKyAgICAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09V
UkNFIG1hcHBlZFJlc291cmNlOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGR4Q29udGV4dC0+
TWFwKG1CdWZmZXIsIDAsIEQzRDExX01BUF9XUklURV9OT19PVkVSV1JJVEUsIDAsICZtYXBwZWRS
ZXNvdXJjZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAg
ICAgICAgRVJSKCJWZXJ0ZXggYnVmZmVyIG1hcCBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCBy
ZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAg
Y2hhciogb3V0cHV0ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFwcGVkUmVzb3VyY2UucERh
dGEpICsgb2Zmc2V0OworCisgICAgICAgIGNvbnN0IGNoYXIgKmlucHV0ID0gTlVMTDsKKyAgICAg
ICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgQnVmZmVyU3RvcmFnZSAqc3Rv
cmFnZSA9IGJ1ZmZlci0+Z2V0U3RvcmFnZSgpOworICAgICAgICAgICAgaW5wdXQgPSBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oc3RvcmFnZS0+Z2V0RGF0YSgpKSArIHN0YXRpY19jYXN0PGludD4o
YXR0cmliLm1PZmZzZXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgaW5wdXQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXR0cmliLm1Qb2ludGVy
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbnN0YW5jZXMgPT0gMCB8fCBhdHRyaWIubURp
dmlzb3IgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgaW5wdXQgKz0gaW5wdXRTdHJpZGUg
KiBzdGFydDsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnZlcnRlci5jb252ZXJzaW9uRnVuYyhp
bnB1dCwgaW5wdXRTdHJpZGUsIGNvdW50LCBvdXRwdXQpOworCisgICAgICAgIGR4Q29udGV4dC0+
VW5tYXAobUJ1ZmZlciwgMCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIEVSUigiVmVydGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVyMTE6
OnN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWdu
ZWQgaW50IG9mZnNldCkKK3sKKyAgICBpZiAobUJ1ZmZlcikKKyAgICB7CisgICAgICAgIElEM0Qx
MURldmljZUNvbnRleHQgKmR4Q29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgp
OworCisgICAgICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKKyAg
ICAgICAgSFJFU1VMVCByZXN1bHQgPSBkeENvbnRleHQtPk1hcChtQnVmZmVyLCAwLCBEM0QxMV9N
QVBfV1JJVEVfTk9fT1ZFUldSSVRFLCAwLCAmbWFwcGVkUmVzb3VyY2UpOworICAgICAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiVmVydGV4IGJ1ZmZl
ciBtYXAgZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGNoYXIqIGJ1ZmZlckRhdGEgPSBzdGF0
aWNfY2FzdDxjaGFyKj4obWFwcGVkUmVzb3VyY2UucERhdGEpOworICAgICAgICBtZW1jcHkoYnVm
ZmVyRGF0YSArIG9mZnNldCwgZGF0YSwgc2l6ZSk7CisKKyAgICAgICAgZHhDb250ZXh0LT5Vbm1h
cChtQnVmZmVyLCAwKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgRVJSKCJWZXJ0ZXggYnVmZmVyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordW5zaWduZWQgaW50IFZlcnRleEJ1ZmZl
cjExOjpnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwg
R0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGluc3RhbmNlcykgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBpbnQgZWxlbWVu
dFNpemUgPSBnZXRWZXJ0ZXhDb252ZXJzaW9uKGF0dHJpYikub3V0cHV0RWxlbWVudFNpemU7CisK
KyAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmliLm1EaXZpc29yID09IDApCisgICAgewor
ICAgICAgICByZXR1cm4gZWxlbWVudFNpemUgKiBjb3VudDsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRTaXplICogKChpbnN0YW5jZXMgKyBhdHRyaWIubURp
dmlzb3IgLSAxKSAvIGF0dHJpYi5tRGl2aXNvcik7CisgICAgfQorfQorCitib29sIFZlcnRleEJ1
ZmZlcjExOjpyZXF1aXJlc0NvbnZlcnNpb24oY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0
cmliKSBjb25zdAoreworICAgIHJldHVybiAhZ2V0VmVydGV4Q29udmVyc2lvbihhdHRyaWIpLmlk
ZW50aXR5OworfQorCit1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyMTE6OmdldEJ1ZmZlclNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBtQnVmZmVyU2l6ZTsKK30KKworYm9vbCBWZXJ0ZXhCdWZm
ZXIxMTo6c2V0QnVmZmVyU2l6ZSh1bnNpZ25lZCBpbnQgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA+
IG1CdWZmZXJTaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluaXRpYWxpemUoc2l6ZSwgbUR5
bmFtaWNVc2FnZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KK30KKworYm9vbCBWZXJ0ZXhCdWZmZXIxMTo6ZGlzY2FyZCgpCit7CisgICAgaWYg
KG1CdWZmZXIpCisgICAgeworICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkeENvbnRleHQg
PSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKKworICAgICAgICBEM0QxMV9NQVBQRURf
U1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZHhD
b250ZXh0LT5NYXAobUJ1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXBw
ZWRSZXNvdXJjZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAg
ICAgICAgICAgRVJSKCJWZXJ0ZXggYnVmZmVyIG1hcCBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgi
LCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAg
ICAgZHhDb250ZXh0LT5Vbm1hcChtQnVmZmVyLCAwKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgRVJSKCJWZXJ0ZXggYnVmZmVyIG5vdCBp
bml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordW5zaWdu
ZWQgaW50IFZlcnRleEJ1ZmZlcjExOjpnZXRWZXJ0ZXhTaXplKGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYikgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0VmVydGV4Q29udmVyc2lvbihh
dHRyaWIpLm91dHB1dEVsZW1lbnRTaXplOworfQorCitEWEdJX0ZPUk1BVCBWZXJ0ZXhCdWZmZXIx
MTo6Z2V0RFhHSUZvcm1hdChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGdldFZlcnRleENvbnZlcnNpb24oYXR0cmliKS5keGdpRm9ybWF0Owor
fQorCitJRDNEMTFCdWZmZXIgKlZlcnRleEJ1ZmZlcjExOjpnZXRCdWZmZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBtQnVmZmVyOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdW5zaWduZWQg
aW50IGNvbXBvbmVudENvdW50LCBib29sIHdpZGVuLCBib29sIG5vcm1hbGl6ZWQ+CitzdGF0aWMg
dm9pZCBjb3B5VmVydGV4RGF0YShjb25zdCB2b2lkICppbnB1dCwgdW5zaWduZWQgaW50IHN0cmlk
ZSwgdW5zaWduZWQgaW50IGNvdW50LCB2b2lkICpvdXRwdXQpCit7CisgICAgdW5zaWduZWQgaW50
IGF0dHJpYlNpemUgPSBzaXplb2YoVCkgKiBjb21wb25lbnRDb3VudDsKKworICAgIGlmIChhdHRy
aWJTaXplID09IHN0cmlkZSAmJiAhd2lkZW4pCisgICAgeworICAgICAgICBtZW1jcHkob3V0cHV0
LCBpbnB1dCwgY291bnQgKiBhdHRyaWJTaXplKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgdW5zaWduZWQgaW50IG91dHB1dFN0cmlkZSA9IHdpZGVuID8gNCA6IGNvbXBvbmVudENv
dW50OworICAgICAgICBUIGRlZmF1bHRWYWwgPSBub3JtYWxpemVkID8gc3RkOjpudW1lcmljX2xp
bWl0czxUPjo6bWF4KCkgOiBUKDEpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgVCAqb2Zmc2V0
SW5wdXQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihpbnB1dCkgKyBpICogc3RyaWRlKTsKKyAgICAgICAgICAgIFQgKm9mZnNldE91dHB1
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KG91dHB1dCkgKyBpICogb3V0cHV0U3RyaWRlOworCisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8IGNvbXBvbmVudENvdW50OyBq
KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb2Zmc2V0T3V0cHV0W2pdID0gb2Zm
c2V0SW5wdXRbal07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aWRlbikKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvZmZzZXRPdXRwdXRbM10gPSBkZWZhdWx0VmFs
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dW5zaWdu
ZWQgaW50IGNvbXBvbmVudENvdW50Pgorc3RhdGljIHZvaWQgY29weUZpeGVkVmVydGV4RGF0YShj
b25zdCB2b2lkKiBpbnB1dCwgdW5zaWduZWQgaW50IHN0cmlkZSwgdW5zaWduZWQgaW50IGNvdW50
LCB2b2lkKiBvdXRwdXQpCit7CisgICAgc3RhdGljIGNvbnN0IGZsb2F0IGRpdmlzb3IgPSAxLjBm
IC8gKDEgPDwgMTYpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3VudDsg
aSsrKQorICAgIHsKKyAgICAgICAgY29uc3QgR0xmaXhlZCogb2Zmc2V0SW5wdXQgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IEdMZml4ZWQqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihp
bnB1dCkgKyBzdHJpZGUgKiBpKTsKKyAgICAgICAgZmxvYXQqIG9mZnNldE91dHB1dCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihvdXRwdXQpICsgaSAqIGNvbXBvbmVudENvdW50OworCisgICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgY29tcG9uZW50Q291bnQ7IGorKykKKyAg
ICAgICAgeworICAgICAgICAgICAgb2Zmc2V0T3V0cHV0W2pdID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KG9mZnNldElucHV0W2pdKSAqIGRpdmlzb3I7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBULCB1bnNpZ25lZCBpbnQgY29tcG9uZW50Q291bnQsIGJvb2wgbm9ybWFs
aXplZD4KK3N0YXRpYyB2b2lkIGNvcHlUb0Zsb2F0VmVydGV4RGF0YShjb25zdCB2b2lkKiBpbnB1
dCwgdW5zaWduZWQgaW50IHN0cmlkZSwgdW5zaWduZWQgaW50IGNvdW50LCB2b2lkKiBvdXRwdXQp
Cit7CisgICAgdHlwZWRlZiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+IE5MOworCisgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgY29uc3Qg
VCAqb2Zmc2V0SW5wdXQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihpbnB1dCkgKyBzdHJpZGUgKiBpKTsKKyAgICAgICAgZmxvYXQgKm9m
ZnNldE91dHB1dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihvdXRwdXQpICsgaSAqIGNvbXBv
bmVudENvdW50OworCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgY29tcG9u
ZW50Q291bnQ7IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKE5MOjppc19zaWduZWQpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBkaXZpc29yID0gMS4w
ZiAvICgyICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KE5MOjptYXgoKSkgKyAxKTsKKyAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0T3V0cHV0W2pdID0gKDIgKiBzdGF0aWNfY2FzdDxmbG9hdD4ob2Zmc2V0
SW5wdXRbal0pICsgMSkgKiBkaXZpc29yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBvZmZzZXRP
dXRwdXRbal0gPSAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG9mZnNldElucHV0W2pdKSAvIE5MOjptYXgo
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb2Zmc2V0T3V0cHV0W2pdID0gIHN0YXRpY19j
YXN0PGZsb2F0PihvZmZzZXRJbnB1dFtqXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK2NvbnN0IFZlcnRleEJ1ZmZlcjExOjpWZXJ0ZXhDb252ZXJ0ZXIgVmVydGV4QnVm
ZmVyMTE6Om1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tOVU1fR0xfVkVSVEVYX0FUVFJJQl9UWVBFU11b
Ml1bNF0gPQoreworICAgIHsgLy8gR0xfQllURQorICAgICAgICB7IC8vIHVubm9ybWFsaXplZAor
ICAgICAgICAgICAgeyAmY29weVRvRmxvYXRWZXJ0ZXhEYXRhPEdMYnl0ZSwgMSwgZmFsc2U+LCBm
YWxzZSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCA0IH0sCisgICAgICAgICAgICB7ICZjb3B5VG9G
bG9hdFZlcnRleERhdGE8R0xieXRlLCAyLCBmYWxzZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJH
MzJfRkxPQVQsIDggfSwKKyAgICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTGJ5
dGUsIDMsIGZhbHNlPiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgMTIgfSwK
KyAgICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTGJ5dGUsIDQsIGZhbHNlPiwg
ZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgMTYgfSwKKyAgICAgICAgfSwK
KyAgICAgICAgeyAvLyBub3JtYWxpemVkCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxH
TGJ5dGUsIDEsIGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjhfU05PUk0sIDEgfSwK
KyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMYnl0ZSwgMiwgZmFsc2UsIHRydWU+LCB0
cnVlLCBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNLCAyIH0sCisgICAgICAgICAgICB7ICZjb3B5VmVy
dGV4RGF0YTxHTGJ5dGUsIDMsIHRydWUsIHRydWU+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjhHOEI4
QThfU05PUk0sIDQgfSwKKyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMYnl0ZSwgNCwg
ZmFsc2UsIHRydWU+LCB0cnVlLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwgNCB9LAorICAg
ICAgICB9LAorICAgIH0sCisgICAgeyAvLyBHTF9VTlNJR05FRF9CWVRFCisgICAgICAgIHsgLy8g
dW5ub3JtYWxpemVkCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9hdFZlcnRleERhdGE8R0x1Ynl0
ZSwgMSwgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCA0IH0sCisgICAgICAg
ICAgICB7ICZjb3B5VG9GbG9hdFZlcnRleERhdGE8R0x1Ynl0ZSwgMiwgZmFsc2U+LCBmYWxzZSwg
RFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCA4IH0sCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9h
dFZlcnRleERhdGE8R0x1Ynl0ZSwgMywgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyX0ZMT0FULCAxMiB9LAorICAgICAgICAgICAgeyAmY29weVRvRmxvYXRWZXJ0ZXhEYXRhPEdM
dWJ5dGUsIDQsIGZhbHNlPiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwg
MTYgfSwKKyAgICAgICAgfSwKKyAgICAgICAgeyAvLyBub3JtYWxpemVkCisgICAgICAgICAgICB7
ICZjb3B5VmVydGV4RGF0YTxHTHVieXRlLCAxLCBmYWxzZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9S
TUFUX1I4X1VOT1JNLCAxIH0sCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxHTHVieXRl
LCAyLCBmYWxzZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9STUFUX1I4RzhfVU5PUk0sIDIgfSwKKyAg
ICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDMsIHRydWUsIHRydWU+LCBmYWxz
ZSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sIDQgfSwKKyAgICAgICAgICAgIHsgJmNvcHlW
ZXJ0ZXhEYXRhPEdMdWJ5dGUsIDQsIGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sIDQgfSwKKyAgICAgICAgfSwKKyAgICB9LAorICAgIHsgLy8gR0xfU0hPUlQK
KyAgICAgICAgeyAvLyB1bm5vcm1hbGl6ZWQKKyAgICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVy
dGV4RGF0YTxHTHNob3J0LCAxLCBmYWxzZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQs
IDQgfSwKKyAgICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTHNob3J0LCAyLCBm
YWxzZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsIDggfSwKKyAgICAgICAgICAg
IHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTHNob3J0LCAzLCBmYWxzZT4sIGZhbHNlLCBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsIDEyIH0sCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9h
dFZlcnRleERhdGE8R0xzaG9ydCwgNCwgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyQTMyX0ZMT0FULCAxNiB9LAorICAgICAgICB9LAorICAgICAgICB7IC8vIG5vcm1hbGl6ZWQK
KyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMc2hvcnQsIDEsIGZhbHNlLCB0cnVlPiwg
dHJ1ZSwgRFhHSV9GT1JNQVRfUjE2X1NOT1JNLCAyIH0sCisgICAgICAgICAgICB7ICZjb3B5VmVy
dGV4RGF0YTxHTHNob3J0LCAyLCBmYWxzZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9STUFUX1IxNkcx
Nl9TTk9STSwgNCB9LAorICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8R0xzaG9ydCwgMywg
dHJ1ZSwgdHJ1ZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sIDggfSwK
KyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMc2hvcnQsIDQsIGZhbHNlLCB0cnVlPiwg
dHJ1ZSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNLCA4IH0sCisgICAgICAgIH0sCisg
ICAgfSwKKyAgICB7IC8vIEdMX1VOU0lHTkVEX1NIT1JUCisgICAgICAgIHsgLy8gdW5ub3JtYWxp
emVkCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9hdFZlcnRleERhdGE8R0x1c2hvcnQsIDEsIGZh
bHNlPiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMl9GTE9BVCwgNCB9LAorICAgICAgICAgICAgeyAm
Y29weVRvRmxvYXRWZXJ0ZXhEYXRhPEdMdXNob3J0LCAyLCBmYWxzZT4sIGZhbHNlLCBEWEdJX0ZP
Uk1BVF9SMzJHMzJfRkxPQVQsIDggfSwKKyAgICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4
RGF0YTxHTHVzaG9ydCwgMywgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZM
T0FULCAxMiB9LAorICAgICAgICAgICAgeyAmY29weVRvRmxvYXRWZXJ0ZXhEYXRhPEdMdXNob3J0
LCA0LCBmYWxzZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsIDE2IH0s
CisgICAgICAgIH0sCisgICAgICAgIHsgLy8gbm9ybWFsaXplZAorICAgICAgICAgICAgeyAmY29w
eVZlcnRleERhdGE8R0x1c2hvcnQsIDEsIGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRf
UjE2X1VOT1JNLCAyIH0sCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxHTHVzaG9ydCwg
MiwgZmFsc2UsIHRydWU+LCB0cnVlLCBEWEdJX0ZPUk1BVF9SMTZHMTZfVU5PUk0sIDQgfSwKKyAg
ICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMdXNob3J0LCAzLCB0cnVlLCB0cnVlPiwgZmFs
c2UsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwgOCB9LAorICAgICAgICAgICAgeyAm
Y29weVZlcnRleERhdGE8R0x1c2hvcnQsIDQsIGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1VOT1JNLCA4IH0sCisgICAgICAgIH0sCisgICAgfSwKKyAgICB7IC8v
IEdMX0ZJWEVECisgICAgICAgIHsgLy8gdW5ub3JtYWxpemVkCisgICAgICAgICAgICB7ICZjb3B5
Rml4ZWRWZXJ0ZXhEYXRhPDE+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCA0IH0sCisg
ICAgICAgICAgICB7ICZjb3B5Rml4ZWRWZXJ0ZXhEYXRhPDI+LCBmYWxzZSwgRFhHSV9GT1JNQVRf
UjMyRzMyX0ZMT0FULCA4IH0sCisgICAgICAgICAgICB7ICZjb3B5Rml4ZWRWZXJ0ZXhEYXRhPDM+
LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAxMiB9LAorICAgICAgICAgICAg
eyAmY29weUZpeGVkVmVydGV4RGF0YTw0PiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMkIzMkEz
Ml9GTE9BVCwgMTYgfSwKKyAgICAgICAgfSwKKyAgICAgICAgeyAvLyBub3JtYWxpemVkCisgICAg
ICAgICAgICB7ICZjb3B5Rml4ZWRWZXJ0ZXhEYXRhPDE+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMy
X0ZMT0FULCA0IH0sCisgICAgICAgICAgICB7ICZjb3B5Rml4ZWRWZXJ0ZXhEYXRhPDI+LCBmYWxz
ZSwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCA4IH0sCisgICAgICAgICAgICB7ICZjb3B5Rml4
ZWRWZXJ0ZXhEYXRhPDM+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAxMiB9
LAorICAgICAgICAgICAgeyAmY29weUZpeGVkVmVydGV4RGF0YTw0PiwgZmFsc2UsIERYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgMTYgfSwKKyAgICAgICAgfSwKKyAgICB9LAorICAgIHsg
Ly8gR0xfRkxPQVQKKyAgICAgICAgeyAvLyB1bm5vcm1hbGl6ZWQKKyAgICAgICAgICAgIHsgJmNv
cHlWZXJ0ZXhEYXRhPEdMZmxvYXQsIDEsIGZhbHNlLCBmYWxzZT4sIHRydWUsIERYR0lfRk9STUFU
X1IzMl9GTE9BVCwgNCB9LAorICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8R0xmbG9hdCwg
MiwgZmFsc2UsIGZhbHNlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCA4IH0sCisg
ICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxHTGZsb2F0LCAzLCBmYWxzZSwgZmFsc2U+LCB0
cnVlLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsIDEyIH0sCisgICAgICAgICAgICB7ICZj
b3B5VmVydGV4RGF0YTxHTGZsb2F0LCA0LCBmYWxzZSwgZmFsc2U+LCB0cnVlLCBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfRkxPQVQsIDE2IH0sCisgICAgICAgIH0sCisgICAgICAgIHsgLy8gbm9y
bWFsaXplZAorICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8R0xmbG9hdCwgMSwgZmFsc2Us
IGZhbHNlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCA0IH0sCisgICAgICAgICAgICB7
ICZjb3B5VmVydGV4RGF0YTxHTGZsb2F0LCAyLCBmYWxzZSwgZmFsc2U+LCB0cnVlLCBEWEdJX0ZP
Uk1BVF9SMzJHMzJfRkxPQVQsIDggfSwKKyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdM
ZmxvYXQsIDMsIGZhbHNlLCBmYWxzZT4sIHRydWUsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9B
VCwgMTIgfSwKKyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMZmxvYXQsIDQsIGZhbHNl
LCBmYWxzZT4sIHRydWUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgMTYgfSwKKyAg
ICAgICAgfSwKKyAgICB9LAorfTsKKworY29uc3QgVmVydGV4QnVmZmVyMTE6OlZlcnRleENvbnZl
cnRlciAmVmVydGV4QnVmZmVyMTE6OmdldFZlcnRleENvbnZlcnNpb24oY29uc3QgZ2w6OlZlcnRl
eEF0dHJpYnV0ZSAmYXR0cmlidXRlKQoreworICAgIHVuc2lnbmVkIGludCB0eXBlSW5kZXggPSAw
OworICAgIHN3aXRjaCAoYXR0cmlidXRlLm1UeXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfQllU
RTogICAgICAgICAgICAgdHlwZUluZGV4ID0gMDsgYnJlYWs7CisgICAgICBjYXNlIEdMX1VOU0lH
TkVEX0JZVEU6ICAgIHR5cGVJbmRleCA9IDE7IGJyZWFrOworICAgICAgY2FzZSBHTF9TSE9SVDog
ICAgICAgICAgICB0eXBlSW5kZXggPSAyOyBicmVhazsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURf
U0hPUlQ6ICAgdHlwZUluZGV4ID0gMzsgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZJWEVEOiAgICAg
ICAgICAgIHR5cGVJbmRleCA9IDQ7IGJyZWFrOworICAgICAgY2FzZSBHTF9GTE9BVDogICAgICAg
ICAgICB0eXBlSW5kZXggPSA1OyBicmVhazsKKyAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIG1Qb3NzaWJsZVRy
YW5zbGF0aW9uc1t0eXBlSW5kZXhdW2F0dHJpYnV0ZS5tTm9ybWFsaXplZCA/IDEgOiAwXVthdHRy
aWJ1dGUubVNpemUgLSAxXTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVy
MTEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIFZlcnRleEJ1ZmZlcjExLmg6IERlZmluZXMgdGhlIEQzRDEx
IFZlcnRleEJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVS
RVJfVkVSVEVYQlVGRkVSMTFfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1ZFUlRFWEJV
RkZFUjExX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmgi
CisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXIxMTsKKworY2xhc3MgVmVydGV4QnVm
ZmVyMTEgOiBwdWJsaWMgVmVydGV4QnVmZmVyCit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBW
ZXJ0ZXhCdWZmZXIxMShyeDo6UmVuZGVyZXIxMSAqY29uc3QgcmVuZGVyZXIpOworICAgIHZpcnR1
YWwgflZlcnRleEJ1ZmZlcjExKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZSh1bnNp
Z25lZCBpbnQgc2l6ZSwgYm9vbCBkeW5hbWljVXNhZ2UpOworCisgICAgc3RhdGljIFZlcnRleEJ1
ZmZlcjExICptYWtlVmVydGV4QnVmZmVyMTEoVmVydGV4QnVmZmVyICp2ZXRleEJ1ZmZlcik7CisK
KyAgICB2aXJ0dWFsIGJvb2wgc3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhB
dHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5z
dGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9m
ZnNldCk7CisgICAgdmlydHVhbCBib29sIHN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1
bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50IG9mZnNldCk7CisKKyAgICB2aXJ0dWFsIHVu
c2lnbmVkIGludCBnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0
dHJpYiwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0OworCisgICAgdmly
dHVhbCBib29sIHJlcXVpcmVzQ29udmVyc2lvbihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZh
dHRyaWIpIGNvbnN0OworCisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0QnVmZmVyU2l6ZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzZXRCdWZmZXJTaXplKHVuc2lnbmVkIGludCBzaXpl
KTsKKyAgICB2aXJ0dWFsIGJvb2wgZGlzY2FyZCgpOworCisgICAgdW5zaWduZWQgaW50IGdldFZl
cnRleFNpemUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdDsKKyAgICBE
WEdJX0ZPUk1BVCBnZXREWEdJRm9ybWF0KGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJp
YikgY29uc3Q7CisKKyAgICBJRDNEMTFCdWZmZXIgKmdldEJ1ZmZlcigpIGNvbnN0OworCisgIHBy
aXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFZlcnRleEJ1ZmZlcjExKTsKKwor
ICAgIHJ4OjpSZW5kZXJlcjExICpjb25zdCBtUmVuZGVyZXI7CisKKyAgICBJRDNEMTFCdWZmZXIg
Km1CdWZmZXI7CisgICAgdW5zaWduZWQgaW50IG1CdWZmZXJTaXplOworICAgIGJvb2wgbUR5bmFt
aWNVc2FnZTsKKworICAgIHR5cGVkZWYgdm9pZCAoKlZlcnRleENvbnZlcnNpb25GdW5jdGlvbiko
Y29uc3Qgdm9pZCAqLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgdm9pZCAqKTsKKyAgICBz
dHJ1Y3QgVmVydGV4Q29udmVydGVyCisgICAgeworICAgICAgICBWZXJ0ZXhDb252ZXJzaW9uRnVu
Y3Rpb24gY29udmVyc2lvbkZ1bmM7CisgICAgICAgIGJvb2wgaWRlbnRpdHk7CisgICAgICAgIERY
R0lfRk9STUFUIGR4Z2lGb3JtYXQ7CisgICAgICAgIHVuc2lnbmVkIGludCBvdXRwdXRFbGVtZW50
U2l6ZTsKKyAgICB9OworCisgICAgZW51bSB7IE5VTV9HTF9WRVJURVhfQVRUUklCX1RZUEVTID0g
NiB9OworCisgICAgLy8gVGhpcyB0YWJsZSBpcyB1c2VkIHRvIGdlbmVyYXRlIG1BdHRyaWJ1dGVU
eXBlcy4KKyAgICBzdGF0aWMgY29uc3QgVmVydGV4Q29udmVydGVyIG1Qb3NzaWJsZVRyYW5zbGF0
aW9uc1tOVU1fR0xfVkVSVEVYX0FUVFJJQl9UWVBFU11bMl1bNF07IC8vIFtHTCB0eXBlcyBhcyBl
bnVtZXJhdGVkIGJ5IHR5cGVJbmRleCgpXVtub3JtYWxpemVkXVtzaXplIC0gMV0KKworICAgIHN0
YXRpYyBjb25zdCBWZXJ0ZXhDb252ZXJ0ZXIgJmdldFZlcnRleENvbnZlcnNpb24oY29uc3QgZ2w6
OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlKTsKK307CisKK30KKworI2VuZGlmIC8vIExJQkdM
RVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVIxMV9IXwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
VmVydGV4QnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZl
ci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQ1IEBACisjaW5jbHVkZSAicHJlY29tcGls
ZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFZlcnRleEJ1ZmZlci5jcHA6IERlZmluZXMg
dGhlIGFic3RyYWN0IFZlcnRleEJ1ZmZlciBjbGFzcyBhbmQgVmVydGV4QnVmZmVySW50ZXJmYWNl
CisvLyBjbGFzcyB3aXRoIGRlcml2YXRpb25zLCBjbGFzc2VzIHRoYXQgcGVyZm9ybSBncmFwaGlj
cyBBUEkgYWdub3N0aWMgdmVydGV4IGJ1ZmZlciBvcGVyYXRpb25zLgorCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9Db250ZXh0LmgiCisKK25hbWVz
cGFjZSByeAoreworCit1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyOjptTmV4dFNlcmlhbCA9IDE7
CisKK1ZlcnRleEJ1ZmZlcjo6VmVydGV4QnVmZmVyKCkKK3sKKyAgICB1cGRhdGVTZXJpYWwoKTsK
K30KKworVmVydGV4QnVmZmVyOjp+VmVydGV4QnVmZmVyKCkKK3sKK30KKwordm9pZCBWZXJ0ZXhC
dWZmZXI6OnVwZGF0ZVNlcmlhbCgpCit7CisgICAgbVNlcmlhbCA9IG1OZXh0U2VyaWFsKys7Cit9
CisKK3Vuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXI6OmdldFNlcmlhbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1TZXJpYWw7Cit9CisKK1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6VmVydGV4QnVmZmVy
SW50ZXJmYWNlKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIGJvb2wgZHluYW1pYykgOiBtUmVuZGVy
ZXIocmVuZGVyZXIpCit7CisgICAgbUR5bmFtaWMgPSBkeW5hbWljOworICAgIG1Xcml0ZVBvc2l0
aW9uID0gMDsKKyAgICBtUmVzZXJ2ZWRTcGFjZSA9IDA7CisKKyAgICBtVmVydGV4QnVmZmVyID0g
cmVuZGVyZXItPmNyZWF0ZVZlcnRleEJ1ZmZlcigpOworfQorCitWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2U6On5WZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoKQoreworICAgIGRlbGV0ZSBtVmVydGV4QnVmZmVy
OworfQorCit1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVySW50ZXJmYWNlOjpnZXRTZXJpYWwoKSBj
b25zdAoreworICAgIHJldHVybiBtVmVydGV4QnVmZmVyLT5nZXRTZXJpYWwoKTsKK30KKwordW5z
aWduZWQgaW50IFZlcnRleEJ1ZmZlckludGVyZmFjZTo6Z2V0QnVmZmVyU2l6ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1WZXJ0ZXhCdWZmZXItPmdldEJ1ZmZlclNpemUoKTsKK30KKworYm9vbCBW
ZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnNldEJ1ZmZlclNpemUodW5zaWduZWQgaW50IHNpemUpCit7
CisgICAgaWYgKG1WZXJ0ZXhCdWZmZXItPmdldEJ1ZmZlclNpemUoKSA9PSAwKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1WZXJ0ZXhCdWZmZXItPmluaXRpYWxpemUoc2l6ZSwgbUR5bmFtaWMpOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gbVZlcnRleEJ1ZmZlci0+c2V0
QnVmZmVyU2l6ZShzaXplKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXJJ
bnRlcmZhY2U6OmdldFdyaXRlUG9zaXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtV3JpdGVQ
b3NpdGlvbjsKK30KKwordm9pZCBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnNldFdyaXRlUG9zaXRp
b24odW5zaWduZWQgaW50IHdyaXRlUG9zaXRpb24pCit7CisgICAgbVdyaXRlUG9zaXRpb24gPSB3
cml0ZVBvc2l0aW9uOworfQorCitib29sIFZlcnRleEJ1ZmZlckludGVyZmFjZTo6ZGlzY2FyZCgp
Cit7CisgICAgcmV0dXJuIG1WZXJ0ZXhCdWZmZXItPmRpc2NhcmQoKTsKK30KKworaW50IFZlcnRl
eEJ1ZmZlckludGVyZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhB
dHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5z
dGFuY2VzKQoreworICAgIGlmICghcmVzZXJ2ZVNwYWNlKG1SZXNlcnZlZFNwYWNlKSkKKyAgICB7
CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbVJlc2VydmVkU3BhY2UgPSAwOworCisg
ICAgaWYgKCFtVmVydGV4QnVmZmVyLT5zdG9yZVZlcnRleEF0dHJpYnV0ZXMoYXR0cmliLCBzdGFy
dCwgY291bnQsIGluc3RhbmNlcywgbVdyaXRlUG9zaXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIC0xOworICAgIH0KKworICAgIGludCBvbGRXcml0ZVBvcyA9IHN0YXRpY19jYXN0PGludD4o
bVdyaXRlUG9zaXRpb24pOworICAgIG1Xcml0ZVBvc2l0aW9uICs9IG1WZXJ0ZXhCdWZmZXItPmdl
dFNwYWNlUmVxdWlyZWQoYXR0cmliLCBjb3VudCwgaW5zdGFuY2VzKTsKKworICAgIHJldHVybiBv
bGRXcml0ZVBvczsKK30KKworaW50IFZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVSYXdEYXRh
KGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGludCBzaXplKQoreworICAgIGlmICghcmVzZXJ2
ZVNwYWNlKG1SZXNlcnZlZFNwYWNlKSkKKyAgICB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9
CisgICAgbVJlc2VydmVkU3BhY2UgPSAwOworCisgICAgaWYgKCFtVmVydGV4QnVmZmVyLT5zdG9y
ZVJhd0RhdGEoZGF0YSwgc2l6ZSwgbVdyaXRlUG9zaXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIC0xOworICAgIH0KKworICAgIGludCBvbGRXcml0ZVBvcyA9IHN0YXRpY19jYXN0PGludD4o
bVdyaXRlUG9zaXRpb24pOworICAgIG1Xcml0ZVBvc2l0aW9uICs9IHNpemU7CisKKyAgICByZXR1
cm4gb2xkV3JpdGVQb3M7Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZl
VmVydGV4U3BhY2UoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBHTHNpemVp
IGNvdW50LCBHTHNpemVpIGluc3RhbmNlcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgcmVxdWlyZWRT
cGFjZSA9IG1WZXJ0ZXhCdWZmZXItPmdldFNwYWNlUmVxdWlyZWQoYXR0cmlidXRlLCBjb3VudCwg
aW5zdGFuY2VzKTsKKworICAgIC8vIFByb3RlY3QgYWdhaW5zdCBpbnRlZ2VyIG92ZXJmbG93Cisg
ICAgaWYgKG1SZXNlcnZlZFNwYWNlICsgcmVxdWlyZWRTcGFjZSA8IG1SZXNlcnZlZFNwYWNlKQor
ICAgIHsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtUmVzZXJ2ZWRTcGFj
ZSArPSByZXF1aXJlZFNwYWNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZlcnRleEJ1
ZmZlckludGVyZmFjZTo6cmVzZXJ2ZVJhd0RhdGFTcGFjZSh1bnNpZ25lZCBpbnQgc2l6ZSkKK3sK
KyAgICAvLyBQcm90ZWN0IGFnYWluc3QgaW50ZWdlciBvdmVyZmxvdworICAgIGlmIChtUmVzZXJ2
ZWRTcGFjZSArIHNpemUgPCBtUmVzZXJ2ZWRTcGFjZSkKKyAgICB7CisgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgbVJlc2VydmVkU3BhY2UgKz0gc2l6ZTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworVmVydGV4QnVmZmVyKiBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OmdldFZlcnRl
eEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1WZXJ0ZXhCdWZmZXI7Cit9CisKKworU3Ry
ZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlOjpTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2Uocng6OlJlbmRlcmVyICpyZW5kZXJlciwgc3RkOjpzaXplX3QgaW5pdGlhbFNpemUpIDogVmVy
dGV4QnVmZmVySW50ZXJmYWNlKHJlbmRlcmVyLCB0cnVlKQoreworICAgIHNldEJ1ZmZlclNpemUo
aW5pdGlhbFNpemUpOworfQorCitTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6On5TdHJl
YW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoKQoreworfQorCitib29sIFN0cmVhbWluZ1ZlcnRl
eEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2ZVNwYWNlKHVuc2lnbmVkIGludCBzaXplKQoreworICAg
IGJvb2wgcmVzdWx0ID0gdHJ1ZTsKKyAgICB1bnNpZ25lZCBpbnQgY3VyQnVmZmVyU2l6ZSA9IGdl
dEJ1ZmZlclNpemUoKTsKKyAgICBpZiAoc2l6ZSA+IGN1ckJ1ZmZlclNpemUpCisgICAgeworICAg
ICAgICByZXN1bHQgPSBzZXRCdWZmZXJTaXplKHN0ZDo6bWF4KHNpemUsIDMgKiBjdXJCdWZmZXJT
aXplIC8gMikpOworICAgICAgICBzZXRXcml0ZVBvc2l0aW9uKDApOworICAgIH0KKyAgICBlbHNl
IGlmIChnZXRXcml0ZVBvc2l0aW9uKCkgKyBzaXplID4gY3VyQnVmZmVyU2l6ZSkKKyAgICB7Cisg
ICAgICAgIGlmICghZGlzY2FyZCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgc2V0V3JpdGVQb3NpdGlvbigwKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OlN0YXRp
Y1ZlcnRleEJ1ZmZlckludGVyZmFjZShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKSA6IFZlcnRleEJ1
ZmZlckludGVyZmFjZShyZW5kZXJlciwgZmFsc2UpCit7Cit9CisKK1N0YXRpY1ZlcnRleEJ1ZmZl
ckludGVyZmFjZTo6flN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSgpCit7Cit9CisKK2ludCBT
dGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6Omxvb2t1cEF0dHJpYnV0ZShjb25zdCBnbDo6VmVy
dGV4QXR0cmlidXRlICZhdHRyaWJ1dGUpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgZWxlbWVu
dCA9IDA7IGVsZW1lbnQgPCBtQ2FjaGUuc2l6ZSgpOyBlbGVtZW50KyspCisgICAgeworICAgICAg
ICBpZiAobUNhY2hlW2VsZW1lbnRdLnR5cGUgPT0gYXR0cmlidXRlLm1UeXBlICYmCisgICAgICAg
ICAgICBtQ2FjaGVbZWxlbWVudF0uc2l6ZSA9PSBhdHRyaWJ1dGUubVNpemUgJiYKKyAgICAgICAg
ICAgIG1DYWNoZVtlbGVtZW50XS5zdHJpZGUgPT0gYXR0cmlidXRlLnN0cmlkZSgpICYmCisgICAg
ICAgICAgICBtQ2FjaGVbZWxlbWVudF0ubm9ybWFsaXplZCA9PSBhdHRyaWJ1dGUubU5vcm1hbGl6
ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtQ2FjaGVbZWxlbWVudF0uYXR0cmlidXRl
T2Zmc2V0ID09IGF0dHJpYnV0ZS5tT2Zmc2V0ICUgYXR0cmlidXRlLnN0cmlkZSgpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtQ2FjaGVbZWxlbWVudF0uc3RyZWFtT2Zm
c2V0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOwor
fQorCitib29sIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2ZVNwYWNlKHVuc2ln
bmVkIGludCBzaXplKQoreworICAgIHVuc2lnbmVkIGludCBjdXJTaXplID0gZ2V0QnVmZmVyU2l6
ZSgpOworICAgIGlmIChjdXJTaXplID09IDApCisgICAgeworICAgICAgICBzZXRCdWZmZXJTaXpl
KHNpemUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZSBpZiAoY3VyU2l6
ZSA+PSBzaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7ICAgLy8gU3RhdGljIHZlcnRleCBidWZmZXJz
IGNhbid0IGJlIHJlc2l6ZWQKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW50
IFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0
IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQs
IEdMc2l6ZWkgaW5zdGFuY2VzKQoreworICAgIGludCBhdHRyaWJ1dGVPZmZzZXQgPSBhdHRyaWIu
bU9mZnNldCAlIGF0dHJpYi5zdHJpZGUoKTsKKyAgICBWZXJ0ZXhFbGVtZW50IGVsZW1lbnQgPSB7
IGF0dHJpYi5tVHlwZSwgYXR0cmliLm1TaXplLCBhdHRyaWIuc3RyaWRlKCksIGF0dHJpYi5tTm9y
bWFsaXplZCwgYXR0cmlidXRlT2Zmc2V0LCBnZXRXcml0ZVBvc2l0aW9uKCkgfTsKKyAgICBtQ2Fj
aGUucHVzaF9iYWNrKGVsZW1lbnQpOworCisgICAgcmV0dXJuIFZlcnRleEJ1ZmZlckludGVyZmFj
ZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGF0dHJpYiwgc3RhcnQsIGNvdW50LCBpbnN0YW5jZXMp
OworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1ZlcnRleEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1
ZmZlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzOCBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gVmVydGV4QnVmZmVyLmg6IERlZmluZXMgdGhlIGFic3RyYWN0IFZlcnRleEJ1ZmZlciBj
bGFzcyBhbmQgVmVydGV4QnVmZmVySW50ZXJmYWNlCisvLyBjbGFzcyB3aXRoIGRlcml2YXRpb25z
LCBjbGFzc2VzIHRoYXQgcGVyZm9ybSBncmFwaGljcyBBUEkgYWdub3N0aWMgdmVydGV4IGJ1ZmZl
ciBvcGVyYXRpb25zLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVJf
SF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1ZFUlRFWEJVRkZFUl9IXworCisjaW5jbHVk
ZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBWZXJ0ZXhB
dHRyaWJ1dGU7Cit9CisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CisKK2NsYXNz
IFZlcnRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgVmVydGV4QnVmZmVyKCk7CisgICAgdmly
dHVhbCB+VmVydGV4QnVmZmVyKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZSh1bnNp
Z25lZCBpbnQgc2l6ZSwgYm9vbCBkeW5hbWljVXNhZ2UpID0gMDsKKworICAgIHZpcnR1YWwgYm9v
bCBzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmli
LCBHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KSA9IDA7
CisgICAgdmlydHVhbCBib29sIHN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25l
ZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50IG9mZnNldCkgPSAwOworCisgICAgdmlydHVhbCB1bnNp
Z25lZCBpbnQgZ2V0U3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRy
aWIsIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGluc3RhbmNlcykgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzQ29udmVyc2lvbihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldEJ1ZmZlclNpemUoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIHNldEJ1ZmZlclNpemUodW5zaWduZWQgaW50IHNpemUpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgZGlzY2FyZCgpID0gMDsKKworICAgIHVuc2lnbmVkIGludCBn
ZXRTZXJpYWwoKSBjb25zdDsKKworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVTZXJpYWwo
KTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihWZXJ0ZXhCdWZm
ZXIpOworCisgICAgdW5zaWduZWQgaW50IG1TZXJpYWw7CisgICAgc3RhdGljIHVuc2lnbmVkIGlu
dCBtTmV4dFNlcmlhbDsKK307CisKK2NsYXNzIFZlcnRleEJ1ZmZlckludGVyZmFjZQoreworICBw
dWJsaWM6CisgICAgVmVydGV4QnVmZmVySW50ZXJmYWNlKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIs
IGJvb2wgZHluYW1pYyk7CisgICAgdmlydHVhbCB+VmVydGV4QnVmZmVySW50ZXJmYWNlKCk7CisK
KyAgICBib29sIHJlc2VydmVWZXJ0ZXhTcGFjZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZh
dHRyaWJ1dGUsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKTsKKyAgICBib29sIHJl
c2VydmVSYXdEYXRhU3BhY2UodW5zaWduZWQgaW50IHNpemUpOworCisgICAgdW5zaWduZWQgaW50
IGdldEJ1ZmZlclNpemUoKSBjb25zdDsKKworICAgIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBj
b25zdDsKKworICAgIHZpcnR1YWwgaW50IHN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6
VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBHTHNp
emVpIGluc3RhbmNlcyk7CisgICAgdmlydHVhbCBpbnQgc3RvcmVSYXdEYXRhKGNvbnN0IHZvaWQq
IGRhdGEsIHVuc2lnbmVkIGludCBzaXplKTsKKworICAgIFZlcnRleEJ1ZmZlciogZ2V0VmVydGV4
QnVmZmVyKCkgY29uc3Q7CisKKyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgYm9vbCByZXNlcnZl
U3BhY2UodW5zaWduZWQgaW50IHNpemUpID0gMDsKKworICAgIHVuc2lnbmVkIGludCBnZXRXcml0
ZVBvc2l0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRXcml0ZVBvc2l0aW9uKHVuc2lnbmVkIGlu
dCB3cml0ZVBvc2l0aW9uKTsKKworICAgIGJvb2wgZGlzY2FyZCgpOworCisgICAgYm9vbCBzZXRC
dWZmZXJTaXplKHVuc2lnbmVkIGludCBzaXplKTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTihWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UpOworCisgICAgcng6OlJlbmRl
cmVyICpjb25zdCBtUmVuZGVyZXI7CisKKyAgICBWZXJ0ZXhCdWZmZXIqIG1WZXJ0ZXhCdWZmZXI7
CisKKyAgICB1bnNpZ25lZCBpbnQgbVdyaXRlUG9zaXRpb247CisgICAgdW5zaWduZWQgaW50IG1S
ZXNlcnZlZFNwYWNlOworICAgIGJvb2wgbUR5bmFtaWM7Cit9OworCitjbGFzcyBTdHJlYW1pbmdW
ZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgOiBwdWJsaWMgVmVydGV4QnVmZmVySW50ZXJmYWNlCit7Cisg
IHB1YmxpYzoKKyAgICBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2Uocng6OlJlbmRlcmVy
ICpyZW5kZXJlciwgc3RkOjpzaXplX3QgaW5pdGlhbFNpemUpOworICAgIH5TdHJlYW1pbmdWZXJ0
ZXhCdWZmZXJJbnRlcmZhY2UoKTsKKworICBwcm90ZWN0ZWQ6CisgICAgYm9vbCByZXNlcnZlU3Bh
Y2UodW5zaWduZWQgaW50IHNpemUpOworfTsKKworY2xhc3MgU3RhdGljVmVydGV4QnVmZmVySW50
ZXJmYWNlIDogcHVibGljIFZlcnRleEJ1ZmZlckludGVyZmFjZQoreworICBwdWJsaWM6CisgICAg
ZXhwbGljaXQgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlKHJ4OjpSZW5kZXJlciAqcmVuZGVy
ZXIpOworICAgIH5TdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoKTsKKworICAgIGludCBzdG9y
ZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGlu
dCBzdGFydCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworCisgICAgLy8gUmV0
dXJucyB0aGUgb2Zmc2V0IGludG8gdGhlIHZlcnRleCBidWZmZXIsIG9yIC0xIGlmIG5vdCBmb3Vu
ZAorICAgIGludCBsb29rdXBBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0
cmlidXRlKTsKKworICBwcm90ZWN0ZWQ6CisgICAgYm9vbCByZXNlcnZlU3BhY2UodW5zaWduZWQg
aW50IHNpemUpOworCisgIHByaXZhdGU6CisgICAgc3RydWN0IFZlcnRleEVsZW1lbnQKKyAgICB7
CisgICAgICAgIEdMZW51bSB0eXBlOworICAgICAgICBHTGludCBzaXplOworICAgICAgICBHTHNp
emVpIHN0cmlkZTsKKyAgICAgICAgYm9vbCBub3JtYWxpemVkOworICAgICAgICBpbnQgYXR0cmli
dXRlT2Zmc2V0OworCisgICAgICAgIHVuc2lnbmVkIGludCBzdHJlYW1PZmZzZXQ7CisgICAgfTsK
KworICAgIHN0ZDo6dmVjdG9yPFZlcnRleEVsZW1lbnQ+IG1DYWNoZTsKK307CisKK30KKworI2Vu
ZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVJfSF8KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1ZlcnRleERhdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERhdGFNYW5hZ2VyLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2
NyBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBW
ZXJ0ZXhEYXRhTWFuYWdlci5oOiBEZWZpbmVzIHRoZSBWZXJ0ZXhEYXRhTWFuYWdlciwgYSBjbGFz
cyB0aGF0CisvLyBydW5zIHRoZSBCdWZmZXIgdHJhbnNsYXRpb24gcHJvY2Vzcy4KKworI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIv
QnVmZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0
ZXhCdWZmZXIuaCIKKworbmFtZXNwYWNlCit7CisgICAgZW51bSB7IElOSVRJQUxfU1RSRUFNX0JV
RkZFUl9TSVpFID0gMTAyNCoxMDI0IH07CisgICAgLy8gVGhpcyBoYXMgdG8gYmUgYXQgbGVhc3Qg
NGsgb3IgZWxzZSBpdCBmYWlscyBvbiBBVEkgY2FyZHMuCisgICAgZW51bSB7IENPTlNUQU5UX1ZF
UlRFWF9CVUZGRVJfU0laRSA9IDQwOTYgfTsKK30KKworbmFtZXNwYWNlIHJ4Cit7CisKK3N0YXRp
YyBpbnQgZWxlbWVudHNJbkJ1ZmZlcihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWJ1
dGUsIGludCBzaXplKQoreworICAgIGludCBzdHJpZGUgPSBhdHRyaWJ1dGUuc3RyaWRlKCk7Cisg
ICAgcmV0dXJuIChzaXplIC0gYXR0cmlidXRlLm1PZmZzZXQgJSBzdHJpZGUgKyAoc3RyaWRlIC0g
YXR0cmlidXRlLnR5cGVTaXplKCkpKSAvIHN0cmlkZTsKK30KKworVmVydGV4RGF0YU1hbmFnZXI6
OlZlcnRleERhdGFNYW5hZ2VyKFJlbmRlcmVyICpyZW5kZXJlcikgOiBtUmVuZGVyZXIocmVuZGVy
ZXIpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBp
KyspCisgICAgeworICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzBdID0gc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46OnF1aWV0X05hTigpOworICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzFdID0g
c3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpOworICAgICAgICBtQ3VycmVu
dFZhbHVlW2ldWzJdID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpOwor
ICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzNdID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46
OnF1aWV0X05hTigpOworICAgICAgICBtQ3VycmVudFZhbHVlQnVmZmVyW2ldID0gTlVMTDsKKyAg
ICAgICAgbUN1cnJlbnRWYWx1ZU9mZnNldHNbaV0gPSAwOworICAgIH0KKworICAgIG1TdHJlYW1p
bmdCdWZmZXIgPSBuZXcgU3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlKHJlbmRlcmVyLCBJ
TklUSUFMX1NUUkVBTV9CVUZGRVJfU0laRSk7CisKKyAgICBpZiAoIW1TdHJlYW1pbmdCdWZmZXIp
CisgICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byBhbGxvY2F0ZSB0aGUgc3RyZWFtaW5nIHZl
cnRleCBidWZmZXIuIik7CisgICAgfQorfQorCitWZXJ0ZXhEYXRhTWFuYWdlcjo6flZlcnRleERh
dGFNYW5hZ2VyKCkKK3sKKyAgICBkZWxldGUgbVN0cmVhbWluZ0J1ZmZlcjsKKworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAg
ICAgZGVsZXRlIG1DdXJyZW50VmFsdWVCdWZmZXJbaV07CisgICAgfQorfQorCitzdGF0aWMgYm9v
bCBkaXJlY3RTdG9yYWdlUG9zc2libGUoVmVydGV4QnVmZmVySW50ZXJmYWNlKiB2YiwgY29uc3Qg
Z2w6OlZlcnRleEF0dHJpYnV0ZSYgYXR0cmliKQoreworICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9
IGF0dHJpYi5tQm91bmRCdWZmZXIuZ2V0KCk7CisgICAgQnVmZmVyU3RvcmFnZSAqc3RvcmFnZSA9
IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0U3RvcmFnZSgpIDogTlVMTDsKKworICAgIGNvbnN0IGJvb2wg
aXNBbGlnbmVkID0gKGF0dHJpYi5zdHJpZGUoKSAlIDQgPT0gMCkgJiYgKGF0dHJpYi5tT2Zmc2V0
ICUgNCA9PSAwKTsKKworICAgIHJldHVybiBzdG9yYWdlICYmIHN0b3JhZ2UtPnN1cHBvcnRzRGly
ZWN0QmluZGluZygpICYmICF2Yi0+Z2V0VmVydGV4QnVmZmVyKCktPnJlcXVpcmVzQ29udmVyc2lv
bihhdHRyaWIpICYmIGlzQWxpZ25lZDsKK30KKworR0xlbnVtIFZlcnRleERhdGFNYW5hZ2VyOjpw
cmVwYXJlVmVydGV4RGF0YShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlIGF0dHJpYnNbXSwgZ2w6
OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnksIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50
LCBUcmFuc2xhdGVkQXR0cmlidXRlICp0cmFuc2xhdGVkLCBHTHNpemVpIGluc3RhbmNlcykKK3sK
KyAgICBpZiAoIW1TdHJlYW1pbmdCdWZmZXIpCisgICAgeworICAgICAgICByZXR1cm4gR0xfT1VU
X09GX01FTU9SWTsKKyAgICB9CisKKyAgICBmb3IgKGludCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0
dHJpYnV0ZUluZGV4IDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgYXR0cmlidXRlSW5kZXgrKykK
KyAgICB7CisgICAgICAgIHRyYW5zbGF0ZWRbYXR0cmlidXRlSW5kZXhdLmFjdGl2ZSA9IChwcm9n
cmFtQmluYXJ5LT5nZXRTZW1hbnRpY0luZGV4KGF0dHJpYnV0ZUluZGV4KSAhPSAtMSk7CisgICAg
fQorCisgICAgLy8gSW52YWxpZGF0ZSBzdGF0aWMgYnVmZmVycyB0aGF0IGRvbid0IGNvbnRhaW4g
bWF0Y2hpbmcgYXR0cmlidXRlcworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJU
RVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKHRyYW5zbGF0ZWRbaV0uYWN0aXZl
ICYmIGF0dHJpYnNbaV0ubUFycmF5RW5hYmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6
OkJ1ZmZlciAqYnVmZmVyID0gYXR0cmlic1tpXS5tQm91bmRCdWZmZXIuZ2V0KCk7CisgICAgICAg
ICAgICBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlciA/
IGJ1ZmZlci0+Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkgOiBOVUxMOworCisgICAgICAgICAgICBp
ZiAoc3RhdGljQnVmZmVyICYmIHN0YXRpY0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpID4gMCAmJiBz
dGF0aWNCdWZmZXItPmxvb2t1cEF0dHJpYnV0ZShhdHRyaWJzW2ldKSA9PSAtMSAmJgorICAgICAg
ICAgICAgICAgICFkaXJlY3RTdG9yYWdlUG9zc2libGUoc3RhdGljQnVmZmVyLCBhdHRyaWJzW2ld
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBidWZmZXItPmludmFsaWRhdGVTdGF0
aWNEYXRhKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBSZXNl
cnZlIHRoZSByZXF1aXJlZCBzcGFjZSBpbiB0aGUgYnVmZmVycworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKHRy
YW5zbGF0ZWRbaV0uYWN0aXZlICYmIGF0dHJpYnNbaV0ubUFycmF5RW5hYmxlZCkKKyAgICAgICAg
eworICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0gYXR0cmlic1tpXS5tQm91bmRCdWZm
ZXIuZ2V0KCk7CisgICAgICAgICAgICBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKnN0YXRp
Y0J1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkgOiBOVUxM
OworICAgICAgICAgICAgVmVydGV4QnVmZmVySW50ZXJmYWNlICp2ZXJ0ZXhCdWZmZXIgPSBzdGF0
aWNCdWZmZXIgPyBzdGF0aWNCdWZmZXIgOiBzdGF0aWNfY2FzdDxWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2UqPihtU3RyZWFtaW5nQnVmZmVyKTsKKworICAgICAgICAgICAgaWYgKCFkaXJlY3RTdG9yYWdl
UG9zc2libGUodmVydGV4QnVmZmVyLCBhdHRyaWJzW2ldKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBpZiAoc3RhdGljQnVmZmVyKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHN0YXRpY0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpID09IDApCisgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB0b3RhbENvdW50
ID0gZWxlbWVudHNJbkJ1ZmZlcihhdHRyaWJzW2ldLCBidWZmZXItPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXN0YXRpY0J1ZmZlci0+cmVzZXJ2ZVZlcnRleFNwYWNlKGF0
dHJpYnNbaV0sIHRvdGFsQ291bnQsIDApKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIGlmICghbVN0cmVhbWluZ0J1ZmZlci0+cmVzZXJ2ZVZlcnRleFNwYWNlKGF0dHJp
YnNbaV0sIGNvdW50LCBpbnN0YW5jZXMpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIC8vIFBlcmZvcm0gdGhlIHZlcnRleCBkYXRhIHRyYW5zbGF0aW9ucworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAg
ICAgICAgaWYgKHRyYW5zbGF0ZWRbaV0uYWN0aXZlKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoYXR0cmlic1tpXS5tQXJyYXlFbmFibGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYnNbaV0ubUJvdW5kQnVmZmVyLmdldCgpOwor
CisgICAgICAgICAgICAgICAgaWYgKCFidWZmZXIgJiYgYXR0cmlic1tpXS5tUG9pbnRlciA9PSBO
VUxMKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBh
biBhcHBsaWNhdGlvbiBlcnJvciB0aGF0IHdvdWxkIG5vcm1hbGx5IHJlc3VsdCBpbiBhIGNyYXNo
LCBidXQgd2UgY2F0Y2ggaXQgYW5kIHJldHVybiBhbiBlcnJvcgorICAgICAgICAgICAgICAgICAg
ICBFUlIoIkFuIGVuYWJsZWQgdmVydGV4IGFycmF5IGhhcyBubyBidWZmZXIgYW5kIG5vIHBvaW50
ZXIuIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9JTlZBTElEX09QRVJBVElPTjsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBTdGF0aWNWZXJ0ZXhCdWZmZXJJ
bnRlcmZhY2UgKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0U3RhdGljVmVydGV4
QnVmZmVyKCkgOiBOVUxMOworICAgICAgICAgICAgICAgIFZlcnRleEJ1ZmZlckludGVyZmFjZSAq
dmVydGV4QnVmZmVyID0gc3RhdGljQnVmZmVyID8gc3RhdGljQnVmZmVyIDogc3RhdGljX2Nhc3Q8
VmVydGV4QnVmZmVySW50ZXJmYWNlKj4obVN0cmVhbWluZ0J1ZmZlcik7CisKKyAgICAgICAgICAg
ICAgICBCdWZmZXJTdG9yYWdlICpzdG9yYWdlID0gYnVmZmVyID8gYnVmZmVyLT5nZXRTdG9yYWdl
KCkgOiBOVUxMOworICAgICAgICAgICAgICAgIGJvb2wgZGlyZWN0U3RvcmFnZSA9IGRpcmVjdFN0
b3JhZ2VQb3NzaWJsZSh2ZXJ0ZXhCdWZmZXIsIGF0dHJpYnNbaV0pOworCisgICAgICAgICAgICAg
ICAgc3RkOjpzaXplX3Qgc3RyZWFtT2Zmc2V0ID0gLTE7CisgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IG91dHB1dEVsZW1lbnRTaXplID0gMDsKKworICAgICAgICAgICAgICAgIGlmIChkaXJl
Y3RTdG9yYWdlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0
RWxlbWVudFNpemUgPSBhdHRyaWJzW2ldLnN0cmlkZSgpOworICAgICAgICAgICAgICAgICAgICBz
dHJlYW1PZmZzZXQgPSBhdHRyaWJzW2ldLm1PZmZzZXQgKyBvdXRwdXRFbGVtZW50U2l6ZSAqIHN0
YXJ0OworICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLT5tYXJrQnVmZmVyVXNhZ2UoKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGljQnVmZmVyKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0gc3Rh
dGljQnVmZmVyLT5sb29rdXBBdHRyaWJ1dGUoYXR0cmlic1tpXSk7CisgICAgICAgICAgICAgICAg
ICAgIG91dHB1dEVsZW1lbnRTaXplID0gc3RhdGljQnVmZmVyLT5nZXRWZXJ0ZXhCdWZmZXIoKS0+
Z2V0U3BhY2VSZXF1aXJlZChhdHRyaWJzW2ldLCAxLCAwKTsKKworICAgICAgICAgICAgICAgICAg
ICBpZiAoc3RyZWFtT2Zmc2V0ID09IC0xKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBlbnRpcmUgYnVmZmVyCisgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgdG90YWxDb3VudCA9IGVsZW1lbnRzSW5CdWZmZXIoYXR0cmlic1tp
XSwgc3RvcmFnZS0+Z2V0U2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFy
dEluZGV4ID0gYXR0cmlic1tpXS5tT2Zmc2V0IC8gYXR0cmlic1tpXS5zdHJpZGUoKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0gc3RhdGljQnVmZmVyLT5zdG9yZVZl
cnRleEF0dHJpYnV0ZXMoYXR0cmlic1tpXSwgLXN0YXJ0SW5kZXgsIHRvdGFsQ291bnQsIDApOwor
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmVhbU9m
ZnNldCAhPSAtMSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtT2Zmc2V0ICs9IChhdHRyaWJzW2ldLm1PZmZzZXQgLyBhdHRyaWJzW2ldLnN0cmlk
ZSgpKSAqIG91dHB1dEVsZW1lbnRTaXplOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
aW5zdGFuY2VzID09IDAgfHwgYXR0cmlic1tpXS5tRGl2aXNvciA9PSAwKQorICAgICAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbU9mZnNldCAr
PSBzdGFydCAqIG91dHB1dEVsZW1lbnRTaXplOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dEVsZW1l
bnRTaXplID0gbVN0cmVhbWluZ0J1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCktPmdldFNwYWNlUmVx
dWlyZWQoYXR0cmlic1tpXSwgMSwgMCk7CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbU9mZnNl
dCA9IG1TdHJlYW1pbmdCdWZmZXItPnN0b3JlVmVydGV4QXR0cmlidXRlcyhhdHRyaWJzW2ldLCBz
dGFydCwgY291bnQsIGluc3RhbmNlcyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgaWYgKHN0cmVhbU9mZnNldCA9PSAtMSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0uc3RvcmFnZSA9IGRpcmVjdFN0b3JhZ2Ug
PyBzdG9yYWdlIDogTlVMTDsKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnZlcnRleEJ1
ZmZlciA9IHZlcnRleEJ1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCk7CisgICAgICAgICAgICAgICAg
dHJhbnNsYXRlZFtpXS5zZXJpYWwgPSBkaXJlY3RTdG9yYWdlID8gc3RvcmFnZS0+Z2V0U2VyaWFs
KCkgOiB2ZXJ0ZXhCdWZmZXItPmdldFNlcmlhbCgpOworICAgICAgICAgICAgICAgIHRyYW5zbGF0
ZWRbaV0uZGl2aXNvciA9IGF0dHJpYnNbaV0ubURpdmlzb3I7CisKKyAgICAgICAgICAgICAgICB0
cmFuc2xhdGVkW2ldLmF0dHJpYnV0ZSA9ICZhdHRyaWJzW2ldOworICAgICAgICAgICAgICAgIHRy
YW5zbGF0ZWRbaV0uc3RyaWRlID0gb3V0cHV0RWxlbWVudFNpemU7CisgICAgICAgICAgICAgICAg
dHJhbnNsYXRlZFtpXS5vZmZzZXQgPSBzdHJlYW1PZmZzZXQ7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFtQ3VycmVu
dFZhbHVlQnVmZmVyW2ldKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
bUN1cnJlbnRWYWx1ZUJ1ZmZlcltpXSA9IG5ldyBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2UobVJlbmRlcmVyLCBDT05TVEFOVF9WRVJURVhfQlVGRkVSX1NJWkUpOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIFN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZSAq
YnVmZmVyID0gbUN1cnJlbnRWYWx1ZUJ1ZmZlcltpXTsKKworICAgICAgICAgICAgICAgIGlmICht
Q3VycmVudFZhbHVlW2ldWzBdICE9IGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZVswXSB8fAorICAg
ICAgICAgICAgICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzFdICE9IGF0dHJpYnNbaV0ubUN1cnJl
bnRWYWx1ZVsxXSB8fAorICAgICAgICAgICAgICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzJdICE9
IGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZVsyXSB8fAorICAgICAgICAgICAgICAgICAgICBtQ3Vy
cmVudFZhbHVlW2ldWzNdICE9IGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZVszXSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByZXF1aXJlZFNwYWNl
ID0gc2l6ZW9mKGZsb2F0KSAqIDQ7CisgICAgICAgICAgICAgICAgICAgIGlmICghYnVmZmVyLT5y
ZXNlcnZlUmF3RGF0YVNwYWNlKHJlcXVpcmVkU3BhY2UpKQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpbnQgc3RyZWFtT2Zmc2V0ID0g
YnVmZmVyLT5zdG9yZVJhd0RhdGEoYXR0cmlic1tpXS5tQ3VycmVudFZhbHVlLCByZXF1aXJlZFNw
YWNlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmVhbU9mZnNldCA9PSAtMSkKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX09VVF9P
Rl9NRU1PUlk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBt
Q3VycmVudFZhbHVlT2Zmc2V0c1tpXSA9IHN0cmVhbU9mZnNldDsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnN0b3JhZ2UgPSBOVUxMOworICAgICAg
ICAgICAgICAgIHRyYW5zbGF0ZWRbaV0udmVydGV4QnVmZmVyID0gbUN1cnJlbnRWYWx1ZUJ1ZmZl
cltpXS0+Z2V0VmVydGV4QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5z
ZXJpYWwgPSBtQ3VycmVudFZhbHVlQnVmZmVyW2ldLT5nZXRTZXJpYWwoKTsKKyAgICAgICAgICAg
ICAgICB0cmFuc2xhdGVkW2ldLmRpdmlzb3IgPSAwOworCisgICAgICAgICAgICAgICAgdHJhbnNs
YXRlZFtpXS5hdHRyaWJ1dGUgPSAmYXR0cmlic1tpXTsKKyAgICAgICAgICAgICAgICB0cmFuc2xh
dGVkW2ldLnN0cmlkZSA9IDA7CisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5vZmZzZXQg
PSBtQ3VycmVudFZhbHVlT2Zmc2V0c1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsr
KQorICAgIHsKKyAgICAgICAgaWYgKHRyYW5zbGF0ZWRbaV0uYWN0aXZlICYmIGF0dHJpYnNbaV0u
bUFycmF5RW5hYmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVy
ID0gYXR0cmlic1tpXS5tQm91bmRCdWZmZXIuZ2V0KCk7CisKKyAgICAgICAgICAgIGlmIChidWZm
ZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5wcm9tb3RlU3RhdGlj
VXNhZ2UoY291bnQgKiBhdHRyaWJzW2ldLnR5cGVTaXplKCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEdMX05PX0VSUk9SOworfQorCit9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERhdGFN
YW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdl
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisv
LyBWZXJ0ZXhEYXRhTWFuYWdlci5oOiBEZWZpbmVzIHRoZSBWZXJ0ZXhEYXRhTWFuYWdlciwgYSBj
bGFzcyB0aGF0CisvLyBydW5zIHRoZSBCdWZmZXIgdHJhbnNsYXRpb24gcHJvY2Vzcy4KKworI2lm
bmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfVkVSVEVYREFUQU1BTkFHRVJfSF8KKyNkZWZpbmUgTElC
R0xFU1YyX1JFTkRFUkVSX1ZFUlRFWERBVEFNQU5BR0VSX0hfCisKKyNpbmNsdWRlICJsaWJHTEVT
djIvQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNw
YWNlIGdsCit7CitjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGU7CitjbGFzcyBQcm9ncmFtQmluYXJ5Owor
fQorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIEJ1ZmZlclN0b3JhZ2U7CitjbGFzcyBTdHJlYW1p
bmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U7CitjbGFzcyBWZXJ0ZXhCdWZmZXI7CitjbGFzcyBSZW5k
ZXJlcjsKKworc3RydWN0IFRyYW5zbGF0ZWRBdHRyaWJ1dGUKK3sKKyAgICBib29sIGFjdGl2ZTsK
KworICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgKmF0dHJpYnV0ZTsKKyAgICBVSU5UIG9m
ZnNldDsKKyAgICBVSU5UIHN0cmlkZTsgICAvLyAwIG1lYW5zIG5vdCB0byBhZHZhbmNlIHRoZSBy
ZWFkIHBvaW50ZXIgYXQgYWxsCisKKyAgICBWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlcjsKKyAg
ICBCdWZmZXJTdG9yYWdlICpzdG9yYWdlOworICAgIHVuc2lnbmVkIGludCBzZXJpYWw7CisgICAg
dW5zaWduZWQgaW50IGRpdmlzb3I7Cit9OworCitjbGFzcyBWZXJ0ZXhEYXRhTWFuYWdlcgorewor
ICBwdWJsaWM6CisgICAgVmVydGV4RGF0YU1hbmFnZXIocng6OlJlbmRlcmVyICpyZW5kZXJlcik7
CisgICAgdmlydHVhbCB+VmVydGV4RGF0YU1hbmFnZXIoKTsKKworICAgIEdMZW51bSBwcmVwYXJl
VmVydGV4RGF0YShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlIGF0dHJpYnNbXSwgZ2w6OlByb2dy
YW1CaW5hcnkgKnByb2dyYW1CaW5hcnksIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBUcmFu
c2xhdGVkQXR0cmlidXRlICpvdXRBdHRyaWJzLCBHTHNpemVpIGluc3RhbmNlcyk7CisKKyAgcHJp
dmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVmVydGV4RGF0YU1hbmFnZXIpOwor
CisgICAgcng6OlJlbmRlcmVyICpjb25zdCBtUmVuZGVyZXI7CisKKyAgICBTdHJlYW1pbmdWZXJ0
ZXhCdWZmZXJJbnRlcmZhY2UgKm1TdHJlYW1pbmdCdWZmZXI7CisKKyAgICBmbG9hdCBtQ3VycmVu
dFZhbHVlW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdWzRdOworICAgIFN0cmVhbWluZ1ZlcnRleEJ1
ZmZlckludGVyZmFjZSAqbUN1cnJlbnRWYWx1ZUJ1ZmZlcltnbDo6TUFYX1ZFUlRFWF9BVFRSSUJT
XTsKKyAgICBzdGQ6OnNpemVfdCBtQ3VycmVudFZhbHVlT2Zmc2V0c1tnbDo6TUFYX1ZFUlRFWF9B
VFRSSUJTXTsKK307CisKK30KKworI2VuZGlmICAgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1ZFUlRF
WERBVEFNQU5BR0VSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGVjbGFy
YXRpb25DYWNoZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIxNyBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gVmVydGV4RGVjbGFyYXRpb25DYWNoZS5jcHA6IEltcGxlbWVudHMgYSBoZWxw
ZXIgY2xhc3MgdG8gY29uc3RydWN0IGFuZCBjYWNoZSB2ZXJ0ZXggZGVjbGFyYXRpb25zLgorCisj
aW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
Q29udGV4dC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5Lmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuaCIK
KworbmFtZXNwYWNlIHJ4Cit7CisKK1ZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OlZlcnRleERlY2xh
cmF0aW9uQ2FjaGUoKSA6IG1NYXhMcnUoMCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE5V
TV9WRVJURVhfREVDTF9DQUNIRV9FTlRSSUVTOyBpKyspCisgICAgeworICAgICAgICBtVmVydGV4
RGVjbENhY2hlW2ldLnZlcnRleERlY2xhcmF0aW9uID0gTlVMTDsKKyAgICAgICAgbVZlcnRleERl
Y2xDYWNoZVtpXS5scnVDb3VudCA9IDA7CisgICAgfQorCisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBtQXBwbGllZFZC
c1tpXS5zZXJpYWwgPSAwOworICAgIH0KKworICAgIG1MYXN0U2V0VkRlY2wgPSBOVUxMOworICAg
IG1JbnN0YW5jaW5nRW5hYmxlZCA9IHRydWU7Cit9CisKK1ZlcnRleERlY2xhcmF0aW9uQ2FjaGU6
On5WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlKCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE5V
TV9WRVJURVhfREVDTF9DQUNIRV9FTlRSSUVTOyBpKyspCisgICAgeworICAgICAgICBpZiAobVZl
cnRleERlY2xDYWNoZVtpXS52ZXJ0ZXhEZWNsYXJhdGlvbikKKyAgICAgICAgeworICAgICAgICAg
ICAgbVZlcnRleERlY2xDYWNoZVtpXS52ZXJ0ZXhEZWNsYXJhdGlvbi0+UmVsZWFzZSgpOworICAg
ICAgICB9CisgICAgfQorfQorCitHTGVudW0gVmVydGV4RGVjbGFyYXRpb25DYWNoZTo6YXBwbHlE
ZWNsYXJhdGlvbihJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UsIFRyYW5zbGF0ZWRBdHRyaWJ1dGUg
YXR0cmlidXRlc1tdLCBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSwgR0xzaXplaSBp
bnN0YW5jZXMsIEdMc2l6ZWkgKnJlcGVhdERyYXcpCit7CisgICAgKnJlcGVhdERyYXcgPSAxOwor
CisgICAgaW50IGluZGV4ZWRBdHRyaWJ1dGUgPSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOworICAg
IGludCBpbnN0YW5jZWRBdHRyaWJ1dGUgPSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOworCisgICAg
aWYgKGluc3RhbmNlcyA+IDApCisgICAgeworICAgICAgICAvLyBGaW5kIGFuIGluZGV4ZWQgYXR0
cmlidXRlIHRvIGJlIG1hcHBlZCB0byBEM0Qgc3RyZWFtIDAKKyAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChhdHRyaWJ1dGVzW2ldLmFjdGl2ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoaW5kZXhlZEF0dHJpYnV0ZSA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTICYmIGF0
dHJpYnV0ZXNbaV0uZGl2aXNvciA9PSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgaW5kZXhlZEF0dHJpYnV0ZSA9IGk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGluc3RhbmNlZEF0dHJpYnV0ZSA9PSBnbDo6TUFYX1ZFUlRFWF9B
VFRSSUJTICYmIGF0dHJpYnV0ZXNbaV0uZGl2aXNvciAhPSAwKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VkQXR0cmlidXRlID0gaTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ZWRBdHRyaWJ1dGUgIT0gZ2w6Ok1BWF9W
RVJURVhfQVRUUklCUyAmJiBpbnN0YW5jZWRBdHRyaWJ1dGUgIT0gZ2w6Ok1BWF9WRVJURVhfQVRU
UklCUykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgLy8gRm91bmQgYm90aCBhbiBpbmRl
eGVkIGFuZCBpbnN0YW5jZWQgYXR0cmlidXRlCisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoaW5kZXhlZEF0dHJpYnV0ZSA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9PUEVSQVRJT047CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBEM0RWRVJURVhFTEVNRU5UOSBlbGVtZW50c1tnbDo6TUFYX1ZF
UlRFWF9BVFRSSUJTICsgMV07CisgICAgRDNEVkVSVEVYRUxFTUVOVDkgKmVsZW1lbnQgPSAmZWxl
bWVudHNbMF07CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJ
QlM7IGkrKykKKyAgICB7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzW2ldLmFjdGl2ZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgLy8gRGlyZWN0bHkgYmluZGluZyB0aGUgc3RvcmFnZSBidWZmZXIg
aXMgbm90IHN1cHBvcnRlZCBmb3IgZDNkOQorICAgICAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZXNb
aV0uc3RvcmFnZSA9PSBOVUxMKTsKKworICAgICAgICAgICAgaW50IHN0cmVhbSA9IGk7CisKKyAg
ICAgICAgICAgIGlmIChpbnN0YW5jZXMgPiAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIC8vIER1ZSB0byBhIGJ1ZyBvbiBBVEkgY2FyZHMgd2UgY2FuJ3QgZW5hYmxlIGluc3RhbmNp
bmcgd2hlbiBub25lIG9mIHRoZSBhdHRyaWJ1dGVzIGFyZSBpbnN0YW5jZWQuCisgICAgICAgICAg
ICAgICAgaWYgKGluc3RhbmNlZEF0dHJpYnV0ZSA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKnJlcGVhdERyYXcgPSBpbnN0
YW5jZXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpID09IGluZGV4ZWRBdHRyaWJ1dGUp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSA9
IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
aSA9PSAwKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBz
dHJlYW0gPSBpbmRleGVkQXR0cmlidXRlOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgVUlOVCBmcmVxdWVuY3kgPSAxOworICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXNbaV0uZGl2aXNvciA9PSAwKQorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3kgPSBE
M0RTVFJFQU1TT1VSQ0VfSU5ERVhFRERBVEEgfCBpbnN0YW5jZXM7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3kgPSBEM0RTVFJFQU1TT1VSQ0VfSU5TVEFO
Q0VEQVRBIHwgYXR0cmlidXRlc1tpXS5kaXZpc29yOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPlNldFN0cmVh
bVNvdXJjZUZyZXEoc3RyZWFtLCBmcmVxdWVuY3kpOworICAgICAgICAgICAgICAgICAgICBtSW5z
dGFuY2luZ0VuYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgVmVydGV4QnVmZmVyOSAqdmVydGV4QnVmZmVyID0gVmVydGV4QnVmZmVy
OTo6bWFrZVZlcnRleEJ1ZmZlcjkoYXR0cmlidXRlc1tpXS52ZXJ0ZXhCdWZmZXIpOworCisgICAg
ICAgICAgICBpZiAobUFwcGxpZWRWQnNbc3RyZWFtXS5zZXJpYWwgIT0gYXR0cmlidXRlc1tpXS5z
ZXJpYWwgfHwKKyAgICAgICAgICAgICAgICBtQXBwbGllZFZCc1tzdHJlYW1dLnN0cmlkZSAhPSBh
dHRyaWJ1dGVzW2ldLnN0cmlkZSB8fAorICAgICAgICAgICAgICAgIG1BcHBsaWVkVkJzW3N0cmVh
bV0ub2Zmc2V0ICE9IGF0dHJpYnV0ZXNbaV0ub2Zmc2V0KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGRldmljZS0+U2V0U3RyZWFtU291cmNlKHN0cmVhbSwgdmVydGV4QnVmZmVyLT5n
ZXRCdWZmZXIoKSwgYXR0cmlidXRlc1tpXS5vZmZzZXQsIGF0dHJpYnV0ZXNbaV0uc3RyaWRlKTsK
KyAgICAgICAgICAgICAgICBtQXBwbGllZFZCc1tzdHJlYW1dLnNlcmlhbCA9IGF0dHJpYnV0ZXNb
aV0uc2VyaWFsOworICAgICAgICAgICAgICAgIG1BcHBsaWVkVkJzW3N0cmVhbV0uc3RyaWRlID0g
YXR0cmlidXRlc1tpXS5zdHJpZGU7CisgICAgICAgICAgICAgICAgbUFwcGxpZWRWQnNbc3RyZWFt
XS5vZmZzZXQgPSBhdHRyaWJ1dGVzW2ldLm9mZnNldDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZWxlbWVudC0+U3RyZWFtID0gc3RyZWFtOworICAgICAgICAgICAgZWxlbWVudC0+T2Zm
c2V0ID0gMDsKKyAgICAgICAgICAgIGVsZW1lbnQtPlR5cGUgPSBhdHRyaWJ1dGVzW2ldLmF0dHJp
YnV0ZS0+bUFycmF5RW5hYmxlZCA/IHZlcnRleEJ1ZmZlci0+Z2V0RGVjbFR5cGUoKmF0dHJpYnV0
ZXNbaV0uYXR0cmlidXRlKSA6IEQzRERFQ0xUWVBFX0ZMT0FUNDsKKyAgICAgICAgICAgIGVsZW1l
bnQtPk1ldGhvZCA9IEQzRERFQ0xNRVRIT0RfREVGQVVMVDsKKyAgICAgICAgICAgIGVsZW1lbnQt
PlVzYWdlID0gRDNEREVDTFVTQUdFX1RFWENPT1JEOworICAgICAgICAgICAgZWxlbWVudC0+VXNh
Z2VJbmRleCA9IHByb2dyYW1CaW5hcnktPmdldFNlbWFudGljSW5kZXgoaSk7CisgICAgICAgICAg
ICBlbGVtZW50Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaW5zdGFuY2VzID09IDAg
fHwgaW5zdGFuY2VkQXR0cmlidXRlID09IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgewor
ICAgICAgICBpZiAobUluc3RhbmNpbmdFbmFibGVkKQorICAgICAgICB7CisgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBkZXZpY2UtPlNldFN0cmVhbVNvdXJjZUZyZXEoaSwgMSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1JbnN0YW5jaW5nRW5hYmxlZCA9IGZhbHNl
OworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IEQzRFZFUlRFWEVMRU1FTlQ5
IGVuZCA9IEQzRERFQ0xfRU5EKCk7CisgICAgKihlbGVtZW50KyspID0gZW5kOworCisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBOVU1fVkVSVEVYX0RFQ0xfQ0FDSEVfRU5UUklFUzsgaSsrKQorICAg
IHsKKyAgICAgICAgVmVydGV4RGVjbENhY2hlRW50cnkgKmVudHJ5ID0gJm1WZXJ0ZXhEZWNsQ2Fj
aGVbaV07CisgICAgICAgIGlmIChtZW1jbXAoZW50cnktPmNhY2hlZEVsZW1lbnRzLCBlbGVtZW50
cywgKGVsZW1lbnQgLSBlbGVtZW50cykgKiBzaXplb2YoRDNEVkVSVEVYRUxFTUVOVDkpKSA9PSAw
ICYmIGVudHJ5LT52ZXJ0ZXhEZWNsYXJhdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgZW50
cnktPmxydUNvdW50ID0gKyttTWF4THJ1OworICAgICAgICAgICAgaWYoZW50cnktPnZlcnRleERl
Y2xhcmF0aW9uICE9IG1MYXN0U2V0VkRlY2wpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZGV2aWNlLT5TZXRWZXJ0ZXhEZWNsYXJhdGlvbihlbnRyeS0+dmVydGV4RGVjbGFyYXRpb24p
OworICAgICAgICAgICAgICAgIG1MYXN0U2V0VkRlY2wgPSBlbnRyeS0+dmVydGV4RGVjbGFyYXRp
b247CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBHTF9OT19FUlJPUjsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIFZlcnRleERlY2xDYWNoZUVudHJ5ICpsYXN0Q2FjaGUgPSBt
VmVydGV4RGVjbENhY2hlOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fVkVSVEVYX0RF
Q0xfQ0FDSEVfRU5UUklFUzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKG1WZXJ0ZXhEZWNsQ2Fj
aGVbaV0ubHJ1Q291bnQgPCBsYXN0Q2FjaGUtPmxydUNvdW50KQorICAgICAgICB7CisgICAgICAg
ICAgICBsYXN0Q2FjaGUgPSAmbVZlcnRleERlY2xDYWNoZVtpXTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmIChsYXN0Q2FjaGUtPnZlcnRleERlY2xhcmF0aW9uICE9IE5VTEwpCisgICAgewor
ICAgICAgICBsYXN0Q2FjaGUtPnZlcnRleERlY2xhcmF0aW9uLT5SZWxlYXNlKCk7CisgICAgICAg
IGxhc3RDYWNoZS0+dmVydGV4RGVjbGFyYXRpb24gPSBOVUxMOworICAgICAgICAvLyBtTGFzdFNl
dFZEZWNsIGlzIHNldCB0byB0aGUgcmVwbGFjZW1lbnQsIHNvIHdlIGRvbid0IGhhdmUgdG8gd29y
cnkKKyAgICAgICAgLy8gYWJvdXQgaXQuCisgICAgfQorCisgICAgbWVtY3B5KGxhc3RDYWNoZS0+
Y2FjaGVkRWxlbWVudHMsIGVsZW1lbnRzLCAoZWxlbWVudCAtIGVsZW1lbnRzKSAqIHNpemVvZihE
M0RWRVJURVhFTEVNRU5UOSkpOworICAgIGRldmljZS0+Q3JlYXRlVmVydGV4RGVjbGFyYXRpb24o
ZWxlbWVudHMsICZsYXN0Q2FjaGUtPnZlcnRleERlY2xhcmF0aW9uKTsKKyAgICBkZXZpY2UtPlNl
dFZlcnRleERlY2xhcmF0aW9uKGxhc3RDYWNoZS0+dmVydGV4RGVjbGFyYXRpb24pOworICAgIG1M
YXN0U2V0VkRlY2wgPSBsYXN0Q2FjaGUtPnZlcnRleERlY2xhcmF0aW9uOworICAgIGxhc3RDYWNo
ZS0+bHJ1Q291bnQgPSArK21NYXhMcnU7CisKKyAgICByZXR1cm4gR0xfTk9fRVJST1I7Cit9CisK
K3ZvaWQgVmVydGV4RGVjbGFyYXRpb25DYWNoZTo6bWFya1N0YXRlRGlydHkoKQoreworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAg
ICAgICAgbUFwcGxpZWRWQnNbaV0uc2VyaWFsID0gMDsKKyAgICB9CisKKyAgICBtTGFzdFNldFZE
ZWNsID0gTlVMTDsKKyAgICBtSW5zdGFuY2luZ0VuYWJsZWQgPSB0cnVlOyAgIC8vIEZvcmNlcyBp
dCB0byBiZSBkaXNhYmxlZCB3aGVuIG5vdCB1c2VkCit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGVjbGFyYXRpb25DYWNo
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvVmVydGV4RGVjbGFyYXRpb25DYWNoZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEZWNsYXJhdGlv
bkNhY2hlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisv
LyBWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmg6IERlZmluZXMgYSBoZWxwZXIgY2xhc3MgdG8gY29u
c3RydWN0IGFuZCBjYWNoZSB2ZXJ0ZXggZGVjbGFyYXRpb25zLgorCisjaWZuZGVmIExJQkdMRVNW
Ml9SRU5ERVJFUl9WRVJURVhERUNMQVJBVElPTkNBQ0hFX0hfCisjZGVmaW5lIExJQkdMRVNWMl9S
RU5ERVJFUl9WRVJURVhERUNMQVJBVElPTkNBQ0hFX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIuaCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBW
ZXJ0ZXhEYXRhTWFuYWdlcjsKK30KKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFZlcnRleERl
Y2xhcmF0aW9uQ2FjaGUKK3sKKyAgcHVibGljOgorICAgIFZlcnRleERlY2xhcmF0aW9uQ2FjaGUo
KTsKKyAgICB+VmVydGV4RGVjbGFyYXRpb25DYWNoZSgpOworCisgICAgR0xlbnVtIGFwcGx5RGVj
bGFyYXRpb24oSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBUcmFuc2xhdGVkQXR0cmlidXRlIGF0
dHJpYnV0ZXNbXSwgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnksIEdMc2l6ZWkgaW5z
dGFuY2VzLCBHTHNpemVpICpyZXBlYXREcmF3KTsKKworICAgIHZvaWQgbWFya1N0YXRlRGlydHko
KTsKKworICBwcml2YXRlOgorICAgIFVJTlQgbU1heExydTsKKworICAgIGVudW0geyBOVU1fVkVS
VEVYX0RFQ0xfQ0FDSEVfRU5UUklFUyA9IDMyIH07CisKKyAgICBzdHJ1Y3QgVkJEYXRhCisgICAg
eworICAgICAgICB1bnNpZ25lZCBpbnQgc2VyaWFsOworICAgICAgICB1bnNpZ25lZCBpbnQgc3Ry
aWRlOworICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0OworICAgIH07CisKKyAgICBWQkRhdGEg
bUFwcGxpZWRWQnNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU107CisgICAgSURpcmVjdDNEVmVydGV4
RGVjbGFyYXRpb245ICptTGFzdFNldFZEZWNsOworICAgIGJvb2wgbUluc3RhbmNpbmdFbmFibGVk
OworCisgICAgc3RydWN0IFZlcnRleERlY2xDYWNoZUVudHJ5CisgICAgeworICAgICAgICBEM0RW
RVJURVhFTEVNRU5UOSBjYWNoZWRFbGVtZW50c1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTICsgMV07
CisgICAgICAgIFVJTlQgbHJ1Q291bnQ7CisgICAgICAgIElEaXJlY3QzRFZlcnRleERlY2xhcmF0
aW9uOSAqdmVydGV4RGVjbGFyYXRpb247CisgICAgfSBtVmVydGV4RGVjbENhY2hlW05VTV9WRVJU
RVhfREVDTF9DQUNIRV9FTlRSSUVTXTsKK307CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9S
RU5ERVJFUl9WRVJURVhERUNMQVJBVElPTkNBQ0hFX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL2dlbmVyYXRlbWlwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9nZW5lcmF0
ZW1pcC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9nZW5lcmF0ZW1pcC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwMyBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gZ2VuZXJhdGVtaXAuaDogRGVmaW5lcyB0aGUgR2Vu
ZXJhdGVNaXAgZnVuY3Rpb24sIHRlbXBsYXRlZCBvbiB0aGUgZm9ybWF0CisvLyB0eXBlIG9mIHRo
ZSBpbWFnZSBmb3Igd2hpY2ggbWlwIGxldmVscyBhcmUgYmVpbmcgZ2VuZXJhdGVkLgorCisjaWZu
ZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9HRU5FUkFURU1JUF9IXworI2RlZmluZSBMSUJHTEVTVjJf
UkVOREVSRVJfR0VORVJBVEVNSVBfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5o
IgorCituYW1lc3BhY2UgcngKK3sKK3N0cnVjdCBMOAoreworICAgIHVuc2lnbmVkIGNoYXIgTDsK
KworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoTDggKmRzdCwgY29uc3QgTDggKnNyYzEsIGNvbnN0
IEw4ICpzcmMyKQorICAgIHsKKyAgICAgICAgZHN0LT5MID0gKChzcmMxLT5MIF4gc3JjMi0+TCkg
Pj4gMSkgKyAoc3JjMS0+TCAmIHNyYzItPkwpOworICAgIH0KK307CisKK3R5cGVkZWYgTDggUjg7
IC8vIFI4IHR5cGUgaXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIG1pcCBwdXJwb3Nlcwor
dHlwZWRlZiBMOCBBODsgLy8gQTggdHlwZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3Ig
bWlwIHB1cnBvc2VzCisKK3N0cnVjdCBBOEw4Cit7CisgICAgdW5zaWduZWQgY2hhciBMOworICAg
IHVuc2lnbmVkIGNoYXIgQTsKKworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQThMOCAqZHN0LCBj
b25zdCBBOEw4ICpzcmMxLCBjb25zdCBBOEw4ICpzcmMyKQorICAgIHsKKyAgICAgICAgKih1bnNp
Z25lZCBzaG9ydCopZHN0ID0gKCgoKih1bnNpZ25lZCBzaG9ydCopc3JjMSBeICoodW5zaWduZWQg
c2hvcnQqKXNyYzIpICYgMHhGRUZFKSA+PiAxKSArICgqKHVuc2lnbmVkIHNob3J0KilzcmMxICYg
Kih1bnNpZ25lZCBzaG9ydCopc3JjMik7CisgICAgfQorfTsKKwordHlwZWRlZiBBOEw4IFI4Rzg7
IC8vIFI4RzggdHlwZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgbWlwIHB1cnBvc2Vz
CisKK3N0cnVjdCBBOFI4RzhCOAoreworICAgIHVuc2lnbmVkIGNoYXIgQjsKKyAgICB1bnNpZ25l
ZCBjaGFyIEc7CisgICAgdW5zaWduZWQgY2hhciBSOworICAgIHVuc2lnbmVkIGNoYXIgQTsKKwor
ICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQThSOEc4QjggKmRzdCwgY29uc3QgQThSOEc4QjggKnNy
YzEsIGNvbnN0IEE4UjhHOEI4ICpzcmMyKQorICAgIHsKKyAgICAgICAgKih1bnNpZ25lZCBpbnQq
KWRzdCA9ICgoKCoodW5zaWduZWQgaW50KilzcmMxIF4gKih1bnNpZ25lZCBpbnQqKXNyYzIpICYg
MHhGRUZFRkVGRSkgPj4gMSkgKyAoKih1bnNpZ25lZCBpbnQqKXNyYzEgJiAqKHVuc2lnbmVkIGlu
dCopc3JjMik7CisgICAgfQorfTsKKwordHlwZWRlZiBBOFI4RzhCOCBSOEc4QjhBODsgLy8gUjhH
OEI4QTggdHlwZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgbWlwIHB1cnBvc2VzCisK
K3N0cnVjdCBBMTZCMTZHMTZSMTZGCit7CisgICAgdW5zaWduZWQgc2hvcnQgUjsKKyAgICB1bnNp
Z25lZCBzaG9ydCBHOworICAgIHVuc2lnbmVkIHNob3J0IEI7CisgICAgdW5zaWduZWQgc2hvcnQg
QTsKKworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQTE2QjE2RzE2UjE2RiAqZHN0LCBjb25zdCBB
MTZCMTZHMTZSMTZGICpzcmMxLCBjb25zdCBBMTZCMTZHMTZSMTZGICpzcmMyKQorICAgIHsKKyAg
ICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoKGdsOjpmbG9hdDE2VG9GbG9hdDMy
KHNyYzEtPlIpICsgZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjMi0+UikpICogMC41Zik7CisgICAg
ICAgIGRzdC0+RyA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KChnbDo6ZmxvYXQxNlRvRmxvYXQzMihz
cmMxLT5HKSArIGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYzItPkcpKSAqIDAuNWYpOworICAgICAg
ICBkc3QtPkIgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNigoZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3Jj
MS0+QikgKyBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMyLT5CKSkgKiAwLjVmKTsKKyAgICAgICAg
ZHN0LT5BID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoKGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYzEt
PkEpICsgZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjMi0+QSkpICogMC41Zik7CisgICAgfQorfTsK
Kworc3RydWN0IFIxNkYKK3sKKyAgICB1bnNpZ25lZCBzaG9ydCBSOworCisgICAgc3RhdGljIHZv
aWQgYXZlcmFnZShSMTZGICpkc3QsIGNvbnN0IFIxNkYgKnNyYzEsIGNvbnN0IFIxNkYgKnNyYzIp
CisgICAgeworICAgICAgICBkc3QtPlIgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNigoZ2w6OmZsb2F0
MTZUb0Zsb2F0MzIoc3JjMS0+UikgKyBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMyLT5SKSkgKiAw
LjVmKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgUjE2RzE2RgoreworICAgIHVuc2lnbmVkIHNob3J0
IFI7CisgICAgdW5zaWduZWQgc2hvcnQgRzsKKworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjE2
RzE2RiAqZHN0LCBjb25zdCBSMTZHMTZGICpzcmMxLCBjb25zdCBSMTZHMTZGICpzcmMyKQorICAg
IHsKKyAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoKGdsOjpmbG9hdDE2VG9G
bG9hdDMyKHNyYzEtPlIpICsgZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjMi0+UikpICogMC41Zik7
CisgICAgICAgIGRzdC0+RyA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KChnbDo6ZmxvYXQxNlRvRmxv
YXQzMihzcmMxLT5HKSArIGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYzItPkcpKSAqIDAuNWYpOwor
ICAgIH0KK307CisKK3N0cnVjdCBBMzJCMzJHMzJSMzJGCit7CisgICAgZmxvYXQgUjsKKyAgICBm
bG9hdCBHOworICAgIGZsb2F0IEI7CisgICAgZmxvYXQgQTsKKworICAgIHN0YXRpYyB2b2lkIGF2
ZXJhZ2UoQTMyQjMyRzMyUjMyRiAqZHN0LCBjb25zdCBBMzJCMzJHMzJSMzJGICpzcmMxLCBjb25z
dCBBMzJCMzJHMzJSMzJGICpzcmMyKQorICAgIHsKKyAgICAgICAgZHN0LT5SID0gKHNyYzEtPlIg
KyBzcmMyLT5SKSAqIDAuNWY7CisgICAgICAgIGRzdC0+RyA9IChzcmMxLT5HICsgc3JjMi0+Rykg
KiAwLjVmOworICAgICAgICBkc3QtPkIgPSAoc3JjMS0+QiArIHNyYzItPkIpICogMC41ZjsKKyAg
ICAgICAgZHN0LT5BID0gKHNyYzEtPkEgKyBzcmMyLT5BKSAqIDAuNWY7CisgICAgfQorfTsKKwor
c3RydWN0IFIzMkYKK3sKKyAgICBmbG9hdCBSOworCisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShS
MzJGICpkc3QsIGNvbnN0IFIzMkYgKnNyYzEsIGNvbnN0IFIzMkYgKnNyYzIpCisgICAgeworICAg
ICAgICBkc3QtPlIgPSAoc3JjMS0+UiArIHNyYzItPlIpICogMC41ZjsKKyAgICB9Cit9OworCitz
dHJ1Y3QgUjMyRzMyRgoreworICAgIGZsb2F0IFI7CisgICAgZmxvYXQgRzsKKworICAgIHN0YXRp
YyB2b2lkIGF2ZXJhZ2UoUjMyRzMyRiAqZHN0LCBjb25zdCBSMzJHMzJGICpzcmMxLCBjb25zdCBS
MzJHMzJGICpzcmMyKQorICAgIHsKKyAgICAgICAgZHN0LT5SID0gKHNyYzEtPlIgKyBzcmMyLT5S
KSAqIDAuNWY7CisgICAgICAgIGRzdC0+RyA9IChzcmMxLT5HICsgc3JjMi0+RykgKiAwLjVmOwor
ICAgIH0KK307CisKK3N0cnVjdCBSMzJHMzJCMzJGCit7CisgICAgZmxvYXQgUjsKKyAgICBmbG9h
dCBHOworICAgIGZsb2F0IEI7CisKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIzMkczMkIzMkYg
KmRzdCwgY29uc3QgUjMyRzMyQjMyRiAqc3JjMSwgY29uc3QgUjMyRzMyQjMyRiAqc3JjMikKKyAg
ICB7CisgICAgICAgIGRzdC0+UiA9IChzcmMxLT5SICsgc3JjMi0+UikgKiAwLjVmOworICAgICAg
ICBkc3QtPkcgPSAoc3JjMS0+RyArIHNyYzItPkcpICogMC41ZjsKKyAgICAgICAgZHN0LT5CID0g
KHNyYzEtPkIgKyBzcmMyLT5CKSAqIDAuNWY7CisgICAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitzdGF0aWMgdm9pZCBHZW5lcmF0ZU1pcCh1bnNpZ25lZCBpbnQgc291cmNlV2lkdGgs
IHVuc2lnbmVkIGludCBzb3VyY2VIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1bnNpZ25lZCBjaGFyICpzb3VyY2VEYXRhLCBpbnQgc291cmNlUGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpkZXN0RGF0YSwgaW50IGRlc3RQaXRjaCkKK3sK
KyAgICB1bnNpZ25lZCBpbnQgbWlwV2lkdGggPSBzdGQ6Om1heCgxVSwgc291cmNlV2lkdGggPj4g
MSk7CisgICAgdW5zaWduZWQgaW50IG1pcEhlaWdodCA9IHN0ZDo6bWF4KDFVLCBzb3VyY2VIZWln
aHQgPj4gMSk7CisKKyAgICBpZiAoc291cmNlSGVpZ2h0ID09IDEpCisgICAgeworICAgICAgICBB
U1NFUlQoc291cmNlV2lkdGggIT0gMSk7CisKKyAgICAgICAgY29uc3QgVCAqc3JjID0gKGNvbnN0
IFQqKXNvdXJjZURhdGE7CisgICAgICAgIFQgKmRzdCA9IChUKilkZXN0RGF0YTsKKworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCB4ID0gMDsgeCA8IG1pcFdpZHRoOyB4KyspCisgICAgICAgIHsK
KyAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoJmRzdFt4XSwgJnNyY1t4ICogMl0sICZzcmNbeCAqIDIg
KyAxXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoc291cmNlV2lkdGggPT0gMSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChzb3VyY2VIZWlnaHQgIT0gMSk7CisKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgeSA9IDA7IHkgPCBtaXBIZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgY29uc3QgVCAqc3JjMCA9IChjb25zdCBUKikoc291cmNlRGF0YSArIHkgKiAyICog
c291cmNlUGl0Y2gpOworICAgICAgICAgICAgY29uc3QgVCAqc3JjMSA9IChjb25zdCBUKikoc291
cmNlRGF0YSArIHkgKiAyICogc291cmNlUGl0Y2ggKyBzb3VyY2VQaXRjaCk7CisgICAgICAgICAg
ICBUICpkc3QgPSAoVCopKGRlc3REYXRhICsgeSAqIGRlc3RQaXRjaCk7CisKKyAgICAgICAgICAg
IFQ6OmF2ZXJhZ2UoZHN0LCBzcmMwLCBzcmMxKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCB5ID0gMDsgeSA8IG1pcEhlaWdodDsg
eSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBUICpzcmMwID0gKGNvbnN0IFQqKShz
b3VyY2VEYXRhICsgeSAqIDIgKiBzb3VyY2VQaXRjaCk7CisgICAgICAgICAgICBjb25zdCBUICpz
cmMxID0gKGNvbnN0IFQqKShzb3VyY2VEYXRhICsgeSAqIDIgKiBzb3VyY2VQaXRjaCArIHNvdXJj
ZVBpdGNoKTsKKyAgICAgICAgICAgIFQgKmRzdCA9IChUKikoZGVzdERhdGEgKyB5ICogZGVzdFBp
dGNoKTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgeCA9IDA7IHggPCBtaXBXaWR0
aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFQgdG1wMDsKKyAgICAgICAg
ICAgICAgICBUIHRtcDE7CisKKyAgICAgICAgICAgICAgICBUOjphdmVyYWdlKCZ0bXAwLCAmc3Jj
MFt4ICogMl0sICZzcmMwW3ggKiAyICsgMV0pOworICAgICAgICAgICAgICAgIFQ6OmF2ZXJhZ2Uo
JnRtcDEsICZzcmMxW3ggKiAyXSwgJnNyYzFbeCAqIDIgKyAxXSk7CisgICAgICAgICAgICAgICAg
VDo6YXZlcmFnZSgmZHN0W3hdLCAmdG1wMCwgJnRtcDEpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorfQorfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0dFTkVSQVRF
TUlQX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3JlbmRlcmVyOV91dGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9y
ZW5kZXJlcjlfdXRpbHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwMCBAQAorI2luY2x1
ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyByZW5kZXJlcjlfdXRp
bHMuY3BwOiBDb252ZXJzaW9uIGZ1bmN0aW9ucyBhbmQgb3RoZXIgdXRpbGl0eSByb3V0aW5lcwor
Ly8gc3BlY2lmaWMgdG8gdGhlIEQzRDkgcmVuZGVyZXIuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL21hdGh1dGls
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKworI2luY2x1ZGUgImNvbW1vbi9k
ZWJ1Zy5oIgorCituYW1lc3BhY2UgZ2xfZDNkOQoreworCitEM0RDTVBGVU5DIENvbnZlcnRDb21w
YXJpc29uKEdMZW51bSBjb21wYXJpc29uKQoreworICAgIEQzRENNUEZVTkMgZDNkQ29tcCA9IEQz
RENNUF9BTFdBWVM7CisgICAgc3dpdGNoIChjb21wYXJpc29uKQorICAgIHsKKyAgICAgIGNhc2Ug
R0xfTkVWRVI6ICAgIGQzZENvbXAgPSBEM0RDTVBfTkVWRVI7ICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgR0xfQUxXQVlTOiAgIGQzZENvbXAgPSBEM0RDTVBfQUxXQVlTOyAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfTEVTUzogICAgIGQzZENvbXAgPSBEM0RDTVBfTEVTUzsgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfTEVRVUFMOiAgIGQzZENvbXAgPSBEM0RDTVBfTEVTU0VRVUFM
OyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfRVFVQUw6ICAgIGQzZENvbXAgPSBEM0RDTVBfRVFV
QUw7ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfR1JFQVRFUjogIGQzZENvbXAgPSBEM0RD
TVBfR1JFQVRFUjsgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfR0VRVUFMOiAgIGQzZENvbXAg
PSBEM0RDTVBfR1JFQVRFUkVRVUFMOyBicmVhazsKKyAgICAgIGNhc2UgR0xfTk9URVFVQUw6IGQz
ZENvbXAgPSBEM0RDTVBfTk9URVFVQUw7ICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVB
Q0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIGQzZENvbXA7Cit9CisKK0QzRENPTE9SIENv
bnZlcnRDb2xvcihnbDo6Q29sb3IgY29sb3IpCit7CisgICAgcmV0dXJuIEQzRENPTE9SX1JHQkEo
Z2w6OnVub3JtPDg+KGNvbG9yLnJlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OnVu
b3JtPDg+KGNvbG9yLmdyZWVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08
OD4oY29sb3IuYmx1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OnVub3JtPDg+KGNv
bG9yLmFscGhhKSk7Cit9CisKK0QzREJMRU5EIENvbnZlcnRCbGVuZEZ1bmMoR0xlbnVtIGJsZW5k
KQoreworICAgIEQzREJMRU5EIGQzZEJsZW5kID0gRDNEQkxFTkRfWkVSTzsKKworICAgIHN3aXRj
aCAoYmxlbmQpCisgICAgeworICAgICAgY2FzZSBHTF9aRVJPOiAgICAgICAgICAgICAgICAgICAg
IGQzZEJsZW5kID0gRDNEQkxFTkRfWkVSTzsgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9PTkU6ICAgICAgICAgICAgICAgICAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfT05FOyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TUkNfQ09MT1I6ICAgICAgICAgICAgICAgIGQz
ZEJsZW5kID0gRDNEQkxFTkRfU1JDQ09MT1I7ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9P
TkVfTUlOVVNfU1JDX0NPTE9SOiAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WU1JDQ09MT1I7
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6ICAgICAgICAgICAgICAgIGQzZEJs
ZW5kID0gRDNEQkxFTkRfREVTVENPTE9SOyAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVf
TUlOVVNfRFNUX0NPTE9SOiAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WREVTVENPTE9SOyAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9TUkNfQUxQSEE6ICAgICAgICAgICAgICAgIGQzZEJsZW5k
ID0gRDNEQkxFTkRfU1JDQUxQSEE7ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlO
VVNfU1JDX0FMUEhBOiAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WU1JDQUxQSEE7ICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9EU1RfQUxQSEE6ICAgICAgICAgICAgICAgIGQzZEJsZW5kID0g
RDNEQkxFTkRfREVTVEFMUEhBOyAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNf
RFNUX0FMUEhBOiAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WREVTVEFMUEhBOyAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjogICAgICAgICAgIGQzZEJsZW5kID0gRDNE
QkxFTkRfQkxFTkRGQUNUT1I7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09O
U1RBTlRfQ09MT1I6IGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WQkxFTkRGQUNUT1I7IGJyZWFrOwor
ICAgICAgY2FzZSBHTF9DT05TVEFOVF9BTFBIQTogICAgICAgICAgIGQzZEJsZW5kID0gRDNEQkxF
TkRfQkxFTkRGQUNUT1I7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RB
TlRfQUxQSEE6IGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WQkxFTkRGQUNUT1I7IGJyZWFrOworICAg
ICAgY2FzZSBHTF9TUkNfQUxQSEFfU0FUVVJBVEU6ICAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRf
U1JDQUxQSEFTQVQ7ICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZDNkQmxlbmQ7Cit9CisKK0QzREJMRU5ET1AgQ29udmVydEJsZW5k
T3AoR0xlbnVtIGJsZW5kT3ApCit7CisgICAgRDNEQkxFTkRPUCBkM2RCbGVuZE9wID0gRDNEQkxF
TkRPUF9BREQ7CisKKyAgICBzd2l0Y2ggKGJsZW5kT3ApCisgICAgeworICAgICAgY2FzZSBHTF9G
VU5DX0FERDogICAgICAgICAgICAgIGQzZEJsZW5kT3AgPSBEM0RCTEVORE9QX0FERDsgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfRlVOQ19TVUJUUkFDVDogICAgICAgICBkM2RCbGVuZE9w
ID0gRDNEQkxFTkRPUF9TVUJUUkFDVDsgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZVTkNfUkVW
RVJTRV9TVUJUUkFDVDogZDNkQmxlbmRPcCA9IEQzREJMRU5ET1BfUkVWU1VCVFJBQ1Q7IGJyZWFr
OworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZDNk
QmxlbmRPcDsKK30KKworRDNEU1RFTkNJTE9QIENvbnZlcnRTdGVuY2lsT3AoR0xlbnVtIHN0ZW5j
aWxPcCkKK3sKKyAgICBEM0RTVEVOQ0lMT1AgZDNkU3RlbmNpbE9wID0gRDNEU1RFTkNJTE9QX0tF
RVA7CisKKyAgICBzd2l0Y2ggKHN0ZW5jaWxPcCkKKyAgICB7CisgICAgICBjYXNlIEdMX1pFUk86
ICAgICAgZDNkU3RlbmNpbE9wID0gRDNEU1RFTkNJTE9QX1pFUk87ICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9LRUVQOiAgICAgIGQzZFN0ZW5jaWxPcCA9IEQzRFNURU5DSUxPUF9LRUVQOyAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfUkVQTEFDRTogICBkM2RTdGVuY2lsT3AgPSBEM0RTVEVOQ0lM
T1BfUkVQTEFDRTsgYnJlYWs7CisgICAgICBjYXNlIEdMX0lOQ1I6ICAgICAgZDNkU3RlbmNpbE9w
ID0gRDNEU1RFTkNJTE9QX0lOQ1JTQVQ7IGJyZWFrOworICAgICAgY2FzZSBHTF9ERUNSOiAgICAg
IGQzZFN0ZW5jaWxPcCA9IEQzRFNURU5DSUxPUF9ERUNSU0FUOyBicmVhazsKKyAgICAgIGNhc2Ug
R0xfSU5WRVJUOiAgICBkM2RTdGVuY2lsT3AgPSBEM0RTVEVOQ0lMT1BfSU5WRVJUOyAgYnJlYWs7
CisgICAgICBjYXNlIEdMX0lOQ1JfV1JBUDogZDNkU3RlbmNpbE9wID0gRDNEU1RFTkNJTE9QX0lO
Q1I7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9ERUNSX1dSQVA6IGQzZFN0ZW5jaWxPcCA9IEQz
RFNURU5DSUxPUF9ERUNSOyAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7
CisgICAgfQorCisgICAgcmV0dXJuIGQzZFN0ZW5jaWxPcDsKK30KKworRDNEVEVYVFVSRUFERFJF
U1MgQ29udmVydFRleHR1cmVXcmFwKEdMZW51bSB3cmFwKQoreworICAgIEQzRFRFWFRVUkVBRERS
RVNTIGQzZFdyYXAgPSBEM0RUQUREUkVTU19XUkFQOworCisgICAgc3dpdGNoICh3cmFwKQorICAg
IHsKKyAgICAgIGNhc2UgR0xfUkVQRUFUOiAgICAgICAgICAgIGQzZFdyYXAgPSBEM0RUQUREUkVT
U19XUkFQOyAgIGJyZWFrOworICAgICAgY2FzZSBHTF9DTEFNUF9UT19FREdFOiAgICAgZDNkV3Jh
cCA9IEQzRFRBRERSRVNTX0NMQU1QOyAgYnJlYWs7CisgICAgICBjYXNlIEdMX01JUlJPUkVEX1JF
UEVBVDogICBkM2RXcmFwID0gRDNEVEFERFJFU1NfTUlSUk9SOyBicmVhazsKKyAgICAgIGRlZmF1
bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIGQzZFdyYXA7Cit9CisKK0Qz
RENVTEwgQ29udmVydEN1bGxNb2RlKEdMZW51bSBjdWxsRmFjZSwgR0xlbnVtIGZyb250RmFjZSkK
K3sKKyAgICBEM0RDVUxMIGN1bGwgPSBEM0RDVUxMX0NDVzsKKyAgICBzd2l0Y2ggKGN1bGxGYWNl
KQorICAgIHsKKyAgICAgIGNhc2UgR0xfRlJPTlQ6CisgICAgICAgIGN1bGwgPSAoZnJvbnRGYWNl
ID09IEdMX0NDVyA/IEQzRENVTExfQ1cgOiBEM0RDVUxMX0NDVyk7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9CQUNLOgorICAgICAgICBjdWxsID0gKGZyb250RmFjZSA9PSBHTF9DQ1cg
PyBEM0RDVUxMX0NDVyA6IEQzRENVTExfQ1cpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfRlJPTlRfQU5EX0JBQ0s6CisgICAgICAgIGN1bGwgPSBEM0RDVUxMX05PTkU7IC8vIGN1bGxp
bmcgd2lsbCBiZSBoYW5kbGVkIGR1cmluZyBkcmF3CisgICAgICAgIGJyZWFrOworICAgICAgZGVm
YXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gY3VsbDsKK30KKworRDNE
Q1VCRU1BUF9GQUNFUyBDb252ZXJ0Q3ViZUZhY2UoR0xlbnVtIGN1YmVGYWNlKQoreworICAgIEQz
RENVQkVNQVBfRkFDRVMgZmFjZSA9IEQzRENVQkVNQVBfRkFDRV9QT1NJVElWRV9YOworCisgICAg
c3dpdGNoIChjdWJlRmFjZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWDoKKyAgICAgICAgZmFjZSA9IEQzRENVQkVNQVBfRkFDRV9QT1NJVElWRV9YOwor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9Y
OgorICAgICAgICBmYWNlID0gRDNEQ1VCRU1BUF9GQUNFX05FR0FUSVZFX1g7CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6CisgICAgICAg
IGZhY2UgPSBEM0RDVUJFTUFQX0ZBQ0VfUE9TSVRJVkVfWTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKKyAgICAgICAgZmFjZSA9IEQz
RENVQkVNQVBfRkFDRV9ORUdBVElWRV9ZOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgorICAgICAgICBmYWNlID0gRDNEQ1VCRU1BUF9G
QUNFX1BPU0lUSVZFX1o7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9URVhUVVJFX0NV
QkVfTUFQX05FR0FUSVZFX1o6CisgICAgICAgIGZhY2UgPSBEM0RDVUJFTUFQX0ZBQ0VfTkVHQVRJ
VkVfWjsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAg
IH0KKworICAgIHJldHVybiBmYWNlOworfQorCitEV09SRCBDb252ZXJ0Q29sb3JNYXNrKGJvb2wg
cmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCit7CisgICAgcmV0dXJuIChy
ZWQgICA/IEQzRENPTE9SV1JJVEVFTkFCTEVfUkVEICAgOiAwKSB8CisgICAgICAgICAgIChncmVl
biA/IEQzRENPTE9SV1JJVEVFTkFCTEVfR1JFRU4gOiAwKSB8CisgICAgICAgICAgIChibHVlICA/
IEQzRENPTE9SV1JJVEVFTkFCTEVfQkxVRSAgOiAwKSB8CisgICAgICAgICAgIChhbHBoYSA/IEQz
RENPTE9SV1JJVEVFTkFCTEVfQUxQSEEgOiAwKTsKK30KKworRDNEVEVYVFVSRUZJTFRFUlRZUEUg
Q29udmVydE1hZ0ZpbHRlcihHTGVudW0gbWFnRmlsdGVyLCBmbG9hdCBtYXhBbmlzb3Ryb3B5KQor
eworICAgIGlmIChtYXhBbmlzb3Ryb3B5ID4gMS4wZikKKyAgICB7CisgICAgICAgIHJldHVybiBE
M0RURVhGX0FOSVNPVFJPUElDOworICAgIH0KKworICAgIEQzRFRFWFRVUkVGSUxURVJUWVBFIGQz
ZE1hZ0ZpbHRlciA9IEQzRFRFWEZfUE9JTlQ7CisgICAgc3dpdGNoIChtYWdGaWx0ZXIpCisgICAg
eworICAgICAgY2FzZSBHTF9ORUFSRVNUOiBkM2RNYWdGaWx0ZXIgPSBEM0RURVhGX1BPSU5UOyAg
YnJlYWs7CisgICAgICBjYXNlIEdMX0xJTkVBUjogIGQzZE1hZ0ZpbHRlciA9IEQzRFRFWEZfTElO
RUFSOyBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAg
cmV0dXJuIGQzZE1hZ0ZpbHRlcjsKK30KKwordm9pZCBDb252ZXJ0TWluRmlsdGVyKEdMZW51bSBt
aW5GaWx0ZXIsIEQzRFRFWFRVUkVGSUxURVJUWVBFICpkM2RNaW5GaWx0ZXIsIEQzRFRFWFRVUkVG
SUxURVJUWVBFICpkM2RNaXBGaWx0ZXIsIGZsb2F0IG1heEFuaXNvdHJvcHkpCit7CisgICAgc3dp
dGNoIChtaW5GaWx0ZXIpCisgICAgeworICAgICAgY2FzZSBHTF9ORUFSRVNUOgorICAgICAgICAq
ZDNkTWluRmlsdGVyID0gRDNEVEVYRl9QT0lOVDsKKyAgICAgICAgKmQzZE1pcEZpbHRlciA9IEQz
RFRFWEZfTk9ORTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJTkVBUjoKKyAgICAg
ICAgKmQzZE1pbkZpbHRlciA9IEQzRFRFWEZfTElORUFSOworICAgICAgICAqZDNkTWlwRmlsdGVy
ID0gRDNEVEVYRl9OT05FOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTkVBUkVTVF9N
SVBNQVBfTkVBUkVTVDoKKyAgICAgICAgKmQzZE1pbkZpbHRlciA9IEQzRFRFWEZfUE9JTlQ7Cisg
ICAgICAgICpkM2RNaXBGaWx0ZXIgPSBEM0RURVhGX1BPSU5UOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUOgorICAgICAgICAqZDNkTWluRmlsdGVy
ID0gRDNEVEVYRl9MSU5FQVI7CisgICAgICAgICpkM2RNaXBGaWx0ZXIgPSBEM0RURVhGX1BPSU5U
OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSOgor
ICAgICAgICAqZDNkTWluRmlsdGVyID0gRDNEVEVYRl9QT0lOVDsKKyAgICAgICAgKmQzZE1pcEZp
bHRlciA9IEQzRFRFWEZfTElORUFSOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTElO
RUFSX01JUE1BUF9MSU5FQVI6CisgICAgICAgICpkM2RNaW5GaWx0ZXIgPSBEM0RURVhGX0xJTkVB
UjsKKyAgICAgICAgKmQzZE1pcEZpbHRlciA9IEQzRFRFWEZfTElORUFSOworICAgICAgICBicmVh
azsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgICpkM2RNaW5GaWx0ZXIgPSBEM0RURVhGX1BPSU5U
OworICAgICAgICAqZDNkTWlwRmlsdGVyID0gRDNEVEVYRl9OT05FOworICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgIH0KKworICAgIGlmIChtYXhBbmlzb3Ryb3B5ID4gMS4wZikKKyAgICB7Cisg
ICAgICAgICpkM2RNaW5GaWx0ZXIgPSBEM0RURVhGX0FOSVNPVFJPUElDOworICAgIH0KK30KKwor
RDNERk9STUFUIENvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQoR0xlbnVtIGZvcm1hdCkKK3sKKyAg
ICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX05PTkU6ICAgICAgICAgICAg
ICAgICByZXR1cm4gRDNERk1UX05VTEw7CisgICAgICBjYXNlIEdMX1JHQkE0OgorICAgICAgY2Fz
ZSBHTF9SR0I1X0ExOgorICAgICAgY2FzZSBHTF9SR0JBOF9PRVM6ICAgICAgICAgICAgcmV0dXJu
IEQzREZNVF9BOFI4RzhCODsKKyAgICAgIGNhc2UgR0xfUkdCNTY1OiAgICAgICAgICAgICAgIHJl
dHVybiBEM0RGTVRfUjVHNkI1OworICAgICAgY2FzZSBHTF9SR0I4X09FUzogICAgICAgICAgICAg
cmV0dXJuIEQzREZNVF9YOFI4RzhCODsKKyAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6
CisgICAgICBjYXNlIEdMX1NURU5DSUxfSU5ERVg4OiAgICAgICAKKyAgICAgIGNhc2UgR0xfREVQ
VEgyNF9TVEVOQ0lMOF9PRVM6IHJldHVybiBEM0RGTVRfRDI0Uzg7CisgICAgICBkZWZhdWx0OiBV
TlJFQUNIQUJMRSgpOyAgICAgICByZXR1cm4gRDNERk1UX0E4UjhHOEI4OworICAgIH0KK30KKwor
RDNETVVMVElTQU1QTEVfVFlQRSBHZXRNdWx0aXNhbXBsZVR5cGVGcm9tU2FtcGxlcyhHTHNpemVp
IHNhbXBsZXMpCit7CisgICAgaWYgKHNhbXBsZXMgPD0gMSkKKyAgICAgICAgcmV0dXJuIEQzRE1V
TFRJU0FNUExFX05PTkU7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gKEQzRE1VTFRJU0FNUExF
X1RZUEUpc2FtcGxlczsKK30KKworfQorCituYW1lc3BhY2UgZDNkOV9nbAoreworCit1bnNpZ25l
ZCBpbnQgR2V0U3RlbmNpbFNpemUoRDNERk9STUFUIHN0ZW5jaWxGb3JtYXQpCit7CisgICAgaWYg
KHN0ZW5jaWxGb3JtYXQgPT0gRDNERk1UX0lOVFopCisgICAgeworICAgICAgICByZXR1cm4gODsK
KyAgICB9CisgICAgc3dpdGNoKHN0ZW5jaWxGb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEM0RG
TVRfRDI0RlM4OgorICAgICAgY2FzZSBEM0RGTVRfRDI0Uzg6CisgICAgICAgIHJldHVybiA4Owor
ICAgICAgY2FzZSBEM0RGTVRfRDI0WDRTNDoKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgICBjYXNl
IEQzREZNVF9EMTVTMToKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICBjYXNlIEQzREZNVF9EMTZf
TE9DS0FCTEU6CisgICAgICBjYXNlIEQzREZNVF9EMzI6CisgICAgICBjYXNlIEQzREZNVF9EMjRY
ODoKKyAgICAgIGNhc2UgRDNERk1UX0QzMkZfTE9DS0FCTEU6CisgICAgICBjYXNlIEQzREZNVF9E
MTY6CisgICAgICAgIHJldHVybiAwOworICAgIC8vY2FzZSBEM0RGTVRfRDMyX0xPQ0tBQkxFOiAg
cmV0dXJuIDA7ICAgLy8gRGlyZWN0WCA5RXggb25seQorICAgIC8vY2FzZSBEM0RGTVRfUzhfTE9D
S0FCTEU6ICAgcmV0dXJuIDg7ICAgLy8gRGlyZWN0WCA5RXggb25seQorICAgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgR2V0QWxwaGFTaXpl
KEQzREZPUk1BVCBjb2xvckZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yRm9ybWF0KQorICAg
IHsKKyAgICAgIGNhc2UgRDNERk1UX0ExNkIxNkcxNlIxNkY6CisgICAgICAgIHJldHVybiAxNjsK
KyAgICAgIGNhc2UgRDNERk1UX0EzMkIzMkczMlIzMkY6CisgICAgICAgIHJldHVybiAzMjsKKyAg
ICAgIGNhc2UgRDNERk1UX0EyUjEwRzEwQjEwOgorICAgICAgICByZXR1cm4gMjsKKyAgICAgIGNh
c2UgRDNERk1UX0E4UjhHOEI4OgorICAgICAgICByZXR1cm4gODsKKyAgICAgIGNhc2UgRDNERk1U
X0ExUjVHNUI1OgorICAgICAgICByZXR1cm4gMTsKKyAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4
OgorICAgICAgY2FzZSBEM0RGTVRfUjVHNkI1OgorICAgICAgICByZXR1cm4gMDsKKyAgICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworR0xzaXplaSBHZXRTYW1wbGVz
RnJvbU11bHRpc2FtcGxlVHlwZShEM0RNVUxUSVNBTVBMRV9UWVBFIHR5cGUpCit7CisgICAgaWYg
KHR5cGUgPT0gRDNETVVMVElTQU1QTEVfTk9OTUFTS0FCTEUpCisgICAgICAgIHJldHVybiAwOwor
ICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHR5cGU7Cit9CisKK2Jvb2wgSXNGb3JtYXRDaGFubmVs
RXF1aXZhbGVudChEM0RGT1JNQVQgZDNkZm9ybWF0LCBHTGVudW0gZm9ybWF0KQoreworICAgIHN3
aXRjaCAoZDNkZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRDNERk1UX0w4OgorICAgICAgICBy
ZXR1cm4gKGZvcm1hdCA9PSBHTF9MVU1JTkFOQ0UpOworICAgICAgY2FzZSBEM0RGTVRfQThMODoK
KyAgICAgICAgcmV0dXJuIChmb3JtYXQgPT0gR0xfTFVNSU5BTkNFX0FMUEhBKTsKKyAgICAgIGNh
c2UgRDNERk1UX0RYVDE6CisgICAgICAgIHJldHVybiAoZm9ybWF0ID09IEdMX0NPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhUIHx8IGZvcm1hdCA9PSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhUKTsKKyAgICAgIGNhc2UgRDNERk1UX0RYVDM6CisgICAgICAgIHJldHVybiAoZm9ybWF0
ID09IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUpOworICAgICAgY2FzZSBEM0RG
TVRfRFhUNToKKyAgICAgICAgcmV0dXJuIChmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUNV9BTkdMRSk7CisgICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKKyAgICAgIGNhc2Ug
RDNERk1UX0ExNkIxNkcxNlIxNkY6CisgICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOgor
ICAgICAgICByZXR1cm4gKGZvcm1hdCA9PSBHTF9SR0JBIHx8IGZvcm1hdCA9PSBHTF9CR1JBX0VY
VCk7CisgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKKyAgICAgICAgcmV0dXJuIChmb3JtYXQg
PT0gR0xfUkdCKTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChkM2Rmb3JtYXQgPT0gRDNE
Rk1UX0lOVFogJiYgZ2w6OklzRGVwdGhUZXh0dXJlKGZvcm1hdCkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworR0xlbnVtIENvbnZl
cnRCYWNrQnVmZmVyRm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3Jt
YXQpCisgICAgeworICAgICAgY2FzZSBEM0RGTVRfQTRSNEc0QjQ6IHJldHVybiBHTF9SR0JBNDsK
KyAgICAgIGNhc2UgRDNERk1UX0E4UjhHOEI4OiByZXR1cm4gR0xfUkdCQThfT0VTOworICAgICAg
Y2FzZSBEM0RGTVRfQTFSNUc1QjU6IHJldHVybiBHTF9SR0I1X0ExOworICAgICAgY2FzZSBEM0RG
TVRfUjVHNkI1OiAgIHJldHVybiBHTF9SR0I1NjU7CisgICAgICBjYXNlIEQzREZNVF9YOFI4RzhC
ODogcmV0dXJuIEdMX1JHQjhfT0VTOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfUkdCQTQ7Cit9CisKK0dMZW51bSBDb252ZXJ0
RGVwdGhTdGVuY2lsRm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpCit7CisgICAgaWYgKGZvcm1hdCA9
PSBEM0RGTVRfSU5UWikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4
X09FUzsKKyAgICB9CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEM0RG
TVRfRDE2OgorICAgICAgY2FzZSBEM0RGTVRfRDI0WDg6CisgICAgICAgIHJldHVybiBHTF9ERVBU
SF9DT01QT05FTlQxNjsKKyAgICAgIGNhc2UgRDNERk1UX0QyNFM4OgorICAgICAgICByZXR1cm4g
R0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM7CisgICAgICBjYXNlIEQzREZNVF9VTktOT1dOOgorICAg
ICAgICByZXR1cm4gR0xfTk9ORTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOworfQorCitH
TGVudW0gQ29udmVydFJlbmRlclRhcmdldEZvcm1hdChEM0RGT1JNQVQgZm9ybWF0KQoreworICAg
IGlmIChmb3JtYXQgPT0gRDNERk1UX0lOVFopCisgICAgeworICAgICAgICByZXR1cm4gR0xfREVQ
VEgyNF9TVEVOQ0lMOF9PRVM7CisgICAgfQorICAgIAorICAgIHN3aXRjaCAoZm9ybWF0KQorICAg
IHsKKyAgICAgIGNhc2UgRDNERk1UX0E0UjRHNEI0OiByZXR1cm4gR0xfUkdCQTQ7CisgICAgICBj
YXNlIEQzREZNVF9BOFI4RzhCODogcmV0dXJuIEdMX1JHQkE4X09FUzsKKyAgICAgIGNhc2UgRDNE
Rk1UX0ExUjVHNUI1OiByZXR1cm4gR0xfUkdCNV9BMTsKKyAgICAgIGNhc2UgRDNERk1UX1I1RzZC
NTogICByZXR1cm4gR0xfUkdCNTY1OworICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6IHJldHVy
biBHTF9SR0I4X09FUzsKKyAgICAgIGNhc2UgRDNERk1UX0QxNjoKKyAgICAgIGNhc2UgRDNERk1U
X0QyNFg4OgorICAgICAgICByZXR1cm4gR0xfREVQVEhfQ09NUE9ORU5UMTY7CisgICAgICBjYXNl
IEQzREZNVF9EMjRTODoKKyAgICAgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOwor
ICAgICAgY2FzZSBEM0RGTVRfVU5LTk9XTjoKKyAgICAgICAgcmV0dXJuIEdMX05PTkU7CisgICAg
ICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBH
TF9SR0JBNDsKK30KKworR0xlbnVtIEdldEVxdWl2YWxlbnRGb3JtYXQoRDNERk9STUFUIGZvcm1h
dCkKK3sKKyAgICBpZiAoZm9ybWF0ID09IEQzREZNVF9JTlRaKQorICAgICAgICByZXR1cm4gR0xf
REVQVEgyNF9TVEVOQ0lMOF9PRVM7CisgICAgaWYgKGZvcm1hdCA9PSBEM0RGTVRfTlVMTCkKKyAg
ICAgICAgcmV0dXJuIEdMX05PTkU7CisKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAg
ICBjYXNlIEQzREZNVF9BNFI0RzRCNDogICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkE0OworICAg
ICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6ICAgICAgICAgICAgIHJldHVybiBHTF9SR0JBOF9PRVM7
CisgICAgICBjYXNlIEQzREZNVF9BMVI1RzVCNTogICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjVf
QTE7CisgICAgICBjYXNlIEQzREZNVF9SNUc2QjU6ICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JH
QjU2NTsKKyAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OiAgICAgICAgICAgICByZXR1cm4gR0xf
UkdCOF9PRVM7CisgICAgICBjYXNlIEQzREZNVF9EMTY6ICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdMX0RFUFRIX0NPTVBPTkVOVDE2OworICAgICAgY2FzZSBEM0RGTVRfRDI0Uzg6ICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAgICAgIGNhc2UgRDNERk1U
X1VOS05PV046ICAgICAgICAgICAgICByZXR1cm4gR0xfTk9ORTsKKyAgICAgIGNhc2UgRDNERk1U
X0RYVDE6ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQ7CisgICAgICBjYXNlIEQzREZNVF9EWFQzOiAgICAgICAgICAgICAgICAgcmV0dXJuIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU7CisgICAgICBjYXNlIEQzREZNVF9EWFQ1
OiAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5H
TEU7CisgICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOiAgICAgICAgcmV0dXJuIEdMX1JH
QkEzMkZfRVhUOworICAgICAgY2FzZSBEM0RGTVRfQTE2QjE2RzE2UjE2RjogICAgICAgIHJldHVy
biBHTF9SR0JBMTZGX0VYVDsKKyAgICAgIGNhc2UgRDNERk1UX0w4OiAgICAgICAgICAgICAgICAg
ICByZXR1cm4gR0xfTFVNSU5BTkNFOF9FWFQ7CisgICAgICBjYXNlIEQzREZNVF9BOEw4OiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDsKKyAgICAgIGRlZmF1
bHQ6ICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gR0xfTk9ORTsK
KyAgICB9Cit9CisKK30KKworbmFtZXNwYWNlIGQzZDkKK3sKKworYm9vbCBJc0NvbXByZXNzZWRG
b3JtYXQoRDNERk9STUFUIHN1cmZhY2VGb3JtYXQpCit7CisgICAgc3dpdGNoKHN1cmZhY2VGb3Jt
YXQpCisgICAgeworICAgICAgY2FzZSBEM0RGTVRfRFhUMToKKyAgICAgIGNhc2UgRDNERk1UX0RY
VDI6CisgICAgICBjYXNlIEQzREZNVF9EWFQzOgorICAgICAgY2FzZSBEM0RGTVRfRFhUNDoKKyAg
ICAgIGNhc2UgRDNERk1UX0RYVDU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc2l6ZV90IENvbXB1dGVSb3dT
aXplKEQzREZPUk1BVCBmb3JtYXQsIHVuc2lnbmVkIGludCB3aWR0aCkKK3sKKyAgICBpZiAoZm9y
bWF0ID09IEQzREZNVF9JTlRaKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDQgKiB3aWR0aDsKKyAg
ICB9CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEM0RGTVRfTDg6Cisg
ICAgICAgICAgcmV0dXJuIDEgKiB3aWR0aDsKKyAgICAgIGNhc2UgRDNERk1UX0E4TDg6CisgICAg
ICAgICAgcmV0dXJuIDIgKiB3aWR0aDsKKyAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OgorICAg
ICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6CisgICAgICAgIHJldHVybiA0ICogd2lkdGg7CisgICAg
ICBjYXNlIEQzREZNVF9BMTZCMTZHMTZSMTZGOgorICAgICAgICByZXR1cm4gOCAqIHdpZHRoOwor
ICAgICAgY2FzZSBEM0RGTVRfQTMyQjMyRzMyUjMyRjoKKyAgICAgICAgcmV0dXJuIDE2ICogd2lk
dGg7CisgICAgICBjYXNlIEQzREZNVF9EWFQxOgorICAgICAgICByZXR1cm4gOCAqICgod2lkdGgg
KyAzKSAvIDQpOworICAgICAgY2FzZSBEM0RGTVRfRFhUMzoKKyAgICAgIGNhc2UgRDNERk1UX0RY
VDU6CisgICAgICAgIHJldHVybiAxNiAqICgod2lkdGggKyAzKSAvIDQpOworICAgICAgZGVmYXVs
dDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQor
Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3JlbmRlcmVyOV91dGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVy
OV91dGlscy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyByZW5kZXJlcjlfdXRpbHMuaDogQ29udmVyc2lvbiBmdW5jdGlvbnMgYW5kIG90aGVy
IHV0aWxpdHkgcm91dGluZXMgCisvLyBzcGVjaWZpYyB0byB0aGUgRDNEOSByZW5kZXJlcgorCisj
aWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUjlfVVRJTFNfSAorI2RlZmluZSBMSUJH
TEVTVjJfUkVOREVSRVJfUkVOREVSRVI5X1VUSUxTX0gKKworI2luY2x1ZGUgImxpYkdMRVN2Mi91
dGlsaXRpZXMuaCIKKworY29uc3QgRDNERk9STUFUIEQzREZNVF9JTlRaID0gKChEM0RGT1JNQVQp
KE1BS0VGT1VSQ0MoJ0knLCdOJywnVCcsJ1onKSkpOworY29uc3QgRDNERk9STUFUIEQzREZNVF9O
VUxMID0gKChEM0RGT1JNQVQpKE1BS0VGT1VSQ0MoJ04nLCdVJywnTCcsJ0wnKSkpOworCituYW1l
c3BhY2UgZ2xfZDNkOQoreworCitEM0RDTVBGVU5DIENvbnZlcnRDb21wYXJpc29uKEdMZW51bSBj
b21wYXJpc29uKTsKK0QzRENPTE9SIENvbnZlcnRDb2xvcihnbDo6Q29sb3IgY29sb3IpOworRDNE
QkxFTkQgQ29udmVydEJsZW5kRnVuYyhHTGVudW0gYmxlbmQpOworRDNEQkxFTkRPUCBDb252ZXJ0
QmxlbmRPcChHTGVudW0gYmxlbmRPcCk7CitEM0RTVEVOQ0lMT1AgQ29udmVydFN0ZW5jaWxPcChH
TGVudW0gc3RlbmNpbE9wKTsKK0QzRFRFWFRVUkVBRERSRVNTIENvbnZlcnRUZXh0dXJlV3JhcChH
TGVudW0gd3JhcCk7CitEM0RDVUxMIENvbnZlcnRDdWxsTW9kZShHTGVudW0gY3VsbEZhY2UsIEdM
ZW51bSBmcm9udEZhY2UpOworRDNEQ1VCRU1BUF9GQUNFUyBDb252ZXJ0Q3ViZUZhY2UoR0xlbnVt
IGN1YmVGYWNlKTsKK0RXT1JEIENvbnZlcnRDb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4s
IGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSk7CitEM0RURVhUVVJFRklMVEVSVFlQRSBDb252ZXJ0TWFn
RmlsdGVyKEdMZW51bSBtYWdGaWx0ZXIsIGZsb2F0IG1heEFuaXNvdHJvcHkpOwordm9pZCBDb252
ZXJ0TWluRmlsdGVyKEdMZW51bSBtaW5GaWx0ZXIsIEQzRFRFWFRVUkVGSUxURVJUWVBFICpkM2RN
aW5GaWx0ZXIsIEQzRFRFWFRVUkVGSUxURVJUWVBFICpkM2RNaXBGaWx0ZXIsIGZsb2F0IG1heEFu
aXNvdHJvcHkpOworRDNERk9STUFUIENvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQoR0xlbnVtIGZv
cm1hdCk7CitEM0RNVUxUSVNBTVBMRV9UWVBFIEdldE11bHRpc2FtcGxlVHlwZUZyb21TYW1wbGVz
KEdMc2l6ZWkgc2FtcGxlcyk7CisKK30KKworbmFtZXNwYWNlIGQzZDlfZ2wKK3sKKworR0x1aW50
IEdldEFscGhhU2l6ZShEM0RGT1JNQVQgY29sb3JGb3JtYXQpOworR0x1aW50IEdldFN0ZW5jaWxT
aXplKEQzREZPUk1BVCBzdGVuY2lsRm9ybWF0KTsKKworR0xzaXplaSBHZXRTYW1wbGVzRnJvbU11
bHRpc2FtcGxlVHlwZShEM0RNVUxUSVNBTVBMRV9UWVBFIHR5cGUpOworCitib29sIElzRm9ybWF0
Q2hhbm5lbEVxdWl2YWxlbnQoRDNERk9STUFUIGQzZGZvcm1hdCwgR0xlbnVtIGZvcm1hdCk7CitH
TGVudW0gQ29udmVydEJhY2tCdWZmZXJGb3JtYXQoRDNERk9STUFUIGZvcm1hdCk7CitHTGVudW0g
Q29udmVydERlcHRoU3RlbmNpbEZvcm1hdChEM0RGT1JNQVQgZm9ybWF0KTsKK0dMZW51bSBDb252
ZXJ0UmVuZGVyVGFyZ2V0Rm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpOworR0xlbnVtIEdldEVxdWl2
YWxlbnRGb3JtYXQoRDNERk9STUFUIGZvcm1hdCk7CisKK30KKworbmFtZXNwYWNlIGQzZDkKK3sK
K2Jvb2wgSXNDb21wcmVzc2VkRm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpOworc2l6ZV90IENvbXB1
dGVSb3dTaXplKEQzREZPUk1BVCBmb3JtYXQsIHVuc2lnbmVkIGludCB3aWR0aCk7CisKK2lubGlu
ZSBib29sIGlzRGV2aWNlTG9zdEVycm9yKEhSRVNVTFQgZXJyb3JDb2RlKQoreworICAgIHN3aXRj
aCAoZXJyb3JDb2RlKQorICAgIHsKKyAgICAgIGNhc2UgRDNERVJSX0RSSVZFUklOVEVSTkFMRVJS
T1I6CisgICAgICBjYXNlIEQzREVSUl9ERVZJQ0VMT1NUOgorICAgICAgY2FzZSBEM0RFUlJfREVW
SUNFSFVORzoKKyAgICAgIGNhc2UgRDNERVJSX0RFVklDRVJFTU9WRUQ6CisgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
KworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUkVSOV9VVElMU19ICklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRl
cmVyMTFfdXRpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXIxMV91dGlscy5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVy
MTFfdXRpbHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4OCBAQAorI2luY2x1ZGUgInBy
ZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gcmVuZGVyZXIxMV91dGlscy5jcHA6IENv
bnZlcnNpb24gZnVuY3Rpb25zIGFuZCBvdGhlciB1dGlsaXR5IHJvdXRpbmVzCisvLyBzcGVjaWZp
YyB0byB0aGUgRDNEMTEgcmVuZGVyZXIuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
cmVuZGVyZXIxMV91dGlscy5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVz
cGFjZSBnbF9kM2QxMQoreworCitEM0QxMV9CTEVORCBDb252ZXJ0QmxlbmRGdW5jKEdMZW51bSBn
bEJsZW5kLCBib29sIGlzQWxwaGEpCit7CisgICAgRDNEMTFfQkxFTkQgZDNkQmxlbmQgPSBEM0Qx
MV9CTEVORF9aRVJPOworCisgICAgc3dpdGNoIChnbEJsZW5kKQorICAgIHsKKyAgICAgIGNhc2Ug
R0xfWkVSTzogICAgICAgICAgICAgICAgICAgICBkM2RCbGVuZCA9IEQzRDExX0JMRU5EX1pFUk87
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkU6ICAgICAgICAgICAgICAg
ICAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfT05FOyAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX1NSQ19DT0xPUjogICAgICAgICAgICAgICAgZDNkQmxlbmQgPSAoaXNB
bHBoYSA/IEQzRDExX0JMRU5EX1NSQ19BTFBIQSA6IEQzRDExX0JMRU5EX1NSQ19DT0xPUik7ICAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19DT0xPUjogICAgICBk
M2RCbGVuZCA9IChpc0FscGhhID8gRDNEMTFfQkxFTkRfSU5WX1NSQ19BTFBIQSA6IEQzRDExX0JM
RU5EX0lOVl9TUkNfQ09MT1IpOyAgIGJyZWFrOworICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6ICAg
ICAgICAgICAgICAgIGQzZEJsZW5kID0gKGlzQWxwaGEgPyBEM0QxMV9CTEVORF9ERVNUX0FMUEhB
IDogRDNEMTFfQkxFTkRfREVTVF9DT0xPUik7ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X09ORV9NSU5VU19EU1RfQ09MT1I6ICAgICAgZDNkQmxlbmQgPSAoaXNBbHBoYSA/IEQzRDExX0JM
RU5EX0lOVl9ERVNUX0FMUEhBIDogRDNEMTFfQkxFTkRfSU5WX0RFU1RfQ09MT1IpOyBicmVhazsK
KyAgICAgIGNhc2UgR0xfU1JDX0FMUEhBOiAgICAgICAgICAgICAgICBkM2RCbGVuZCA9IEQzRDEx
X0JMRU5EX1NSQ19BTFBIQTsgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlO
VVNfU1JDX0FMUEhBOiAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfSU5WX1NSQ19BTFBIQTsg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0RTVF9BTFBIQTogICAgICAgICAgICAgICAgZDNk
QmxlbmQgPSBEM0QxMV9CTEVORF9ERVNUX0FMUEhBOyAgICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfT05FX01JTlVTX0RTVF9BTFBIQTogICAgICBkM2RCbGVuZCA9IEQzRDExX0JMRU5EX0lO
Vl9ERVNUX0FMUEhBOyAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjog
ICAgICAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfQkxFTkRfRkFDVE9SOyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUjogZDNkQmxlbmQgPSBE
M0QxMV9CTEVORF9JTlZfQkxFTkRfRkFDVE9SOyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQ09O
U1RBTlRfQUxQSEE6ICAgICAgICAgICBkM2RCbGVuZCA9IEQzRDExX0JMRU5EX0JMRU5EX0ZBQ1RP
UjsgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6
IGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfSU5WX0JMRU5EX0ZBQ1RPUjsgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX1NSQ19BTFBIQV9TQVRVUkFURTogICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVO
RF9TUkNfQUxQSEFfU0FUOyAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxF
KCk7CisgICAgfQorCisgICAgcmV0dXJuIGQzZEJsZW5kOworfQorCitEM0QxMV9CTEVORF9PUCBD
b252ZXJ0QmxlbmRPcChHTGVudW0gZ2xCbGVuZE9wKQoreworICAgIEQzRDExX0JMRU5EX09QIGQz
ZEJsZW5kT3AgPSBEM0QxMV9CTEVORF9PUF9BREQ7CisKKyAgICBzd2l0Y2ggKGdsQmxlbmRPcCkK
KyAgICB7CisgICAgICBjYXNlIEdMX0ZVTkNfQUREOiAgICAgICAgICAgICAgZDNkQmxlbmRPcCA9
IEQzRDExX0JMRU5EX09QX0FERDsgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9GVU5D
X1NVQlRSQUNUOiAgICAgICAgIGQzZEJsZW5kT3AgPSBEM0QxMV9CTEVORF9PUF9TVUJUUkFDVDsg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUOiBkM2RCbGVu
ZE9wID0gRDNEMTFfQkxFTkRfT1BfUkVWX1NVQlRSQUNUOyAgYnJlYWs7CisgICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBkM2RCbGVuZE9wOworfQorCitV
SU5UOCBDb252ZXJ0Q29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJv
b2wgYWxwaGEpCit7CisgICAgVUlOVDggbWFzayA9IDA7CisgICAgaWYgKHJlZCkKKyAgICB7Cisg
ICAgICAgIG1hc2sgfD0gRDNEMTFfQ09MT1JfV1JJVEVfRU5BQkxFX1JFRDsKKyAgICB9CisgICAg
aWYgKGdyZWVuKQorICAgIHsKKyAgICAgICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFC
TEVfR1JFRU47CisgICAgfQorICAgIGlmIChibHVlKQorICAgIHsKKyAgICAgICAgbWFzayB8PSBE
M0QxMV9DT0xPUl9XUklURV9FTkFCTEVfQkxVRTsKKyAgICB9CisgICAgaWYgKGFscGhhKQorICAg
IHsKKyAgICAgICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFCTEVfQUxQSEE7CisgICAg
fQorICAgIHJldHVybiBtYXNrOworfQorCitEM0QxMV9DVUxMX01PREUgQ29udmVydEN1bGxNb2Rl
KGJvb2wgY3VsbEVuYWJsZWQsIEdMZW51bSBjdWxsTW9kZSkKK3sKKyAgICBEM0QxMV9DVUxMX01P
REUgY3VsbCA9IEQzRDExX0NVTExfTk9ORTsKKworICAgIGlmIChjdWxsRW5hYmxlZCkKKyAgICB7
CisgICAgICAgIHN3aXRjaCAoY3VsbE1vZGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdM
X0ZST05UOiAgICAgICAgICAgIGN1bGwgPSBEM0QxMV9DVUxMX0ZST05UOyAgICBicmVhazsKKyAg
ICAgICAgICBjYXNlIEdMX0JBQ0s6ICAgICAgICAgICAgIGN1bGwgPSBEM0QxMV9DVUxMX0JBQ0s7
ICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0ZST05UX0FORF9CQUNLOiAgIGN1bGwgPSBE
M0QxMV9DVUxMX05PTkU7ICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJM
RSgpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGN1bGwgPSBE
M0QxMV9DVUxMX05PTkU7CisgICAgfQorCisgICAgcmV0dXJuIGN1bGw7Cit9CisKK0QzRDExX0NP
TVBBUklTT05fRlVOQyBDb252ZXJ0Q29tcGFyaXNvbihHTGVudW0gY29tcGFyaXNvbikKK3sKKyAg
ICBEM0QxMV9DT01QQVJJU09OX0ZVTkMgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05fTkVWRVI7
CisgICAgc3dpdGNoIChjb21wYXJpc29uKQorICAgIHsKKyAgICAgIGNhc2UgR0xfTkVWRVI6ICAg
IGQzZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX05FVkVSOyAgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0FMV0FZUzogICBkM2RDb21wID0gRDNEMTFfQ09NUEFSSVNPTl9BTFdBWVM7ICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MRVNTOiAgICAgZDNkQ29tcCA9IEQzRDExX0NP
TVBBUklTT05fTEVTUzsgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTEVRVUFMOiAg
IGQzZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX0xFU1NfRVFVQUw7ICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0VRVUFMOiAgICBkM2RDb21wID0gRDNEMTFfQ09NUEFSSVNPTl9FUVVBTDsgICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9HUkVBVEVSOiAgZDNkQ29tcCA9IEQzRDExX0NP
TVBBUklTT05fR1JFQVRFUjsgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfR0VRVUFMOiAg
IGQzZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX0dSRUFURVJfRVFVQUw7ICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX05PVEVRVUFMOiBkM2RDb21wID0gRDNEMTFfQ09NUEFSSVNPTl9OT1RfRVFVQUw7
ICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZDNkQ29tcDsKK30KKworRDNEMTFfREVQVEhfV1JJVEVfTUFTSyBDb252ZXJ0RGVw
dGhNYXNrKGJvb2wgZGVwdGhXcml0ZUVuYWJsZWQpCit7CisgICAgcmV0dXJuIGRlcHRoV3JpdGVF
bmFibGVkID8gRDNEMTFfREVQVEhfV1JJVEVfTUFTS19BTEwgOiBEM0QxMV9ERVBUSF9XUklURV9N
QVNLX1pFUk87Cit9CisKK1VJTlQ4IENvbnZlcnRTdGVuY2lsTWFzayhHTHVpbnQgc3RlbmNpbG1h
c2spCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVJTlQ4PihzdGVuY2lsbWFzayk7Cit9CisK
K0QzRDExX1NURU5DSUxfT1AgQ29udmVydFN0ZW5jaWxPcChHTGVudW0gc3RlbmNpbE9wKQorewor
ICAgIEQzRDExX1NURU5DSUxfT1AgZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RFTkNJTF9PUF9LRUVQ
OworCisgICAgc3dpdGNoIChzdGVuY2lsT3ApCisgICAgeworICAgICAgY2FzZSBHTF9aRVJPOiAg
ICAgIGQzZFN0ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfWkVSTzsgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfS0VFUDogICAgICBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0tF
RVA7ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JFUExBQ0U6ICAgZDNkU3RlbmNpbE9wID0g
RDNEMTFfU1RFTkNJTF9PUF9SRVBMQUNFOyAgIGJyZWFrOworICAgICAgY2FzZSBHTF9JTkNSOiAg
ICAgIGQzZFN0ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfSU5DUl9TQVQ7ICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfREVDUjogICAgICBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0RF
Q1JfU0FUOyAgYnJlYWs7CisgICAgICBjYXNlIEdMX0lOVkVSVDogICAgZDNkU3RlbmNpbE9wID0g
RDNEMTFfU1RFTkNJTF9PUF9JTlZFUlQ7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9JTkNSX1dS
QVA6IGQzZFN0ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfSU5DUjsgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfREVDUl9XUkFQOiBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0RF
Q1I7ICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgIH0KKwor
ICAgIHJldHVybiBkM2RTdGVuY2lsT3A7Cit9CisKK0QzRDExX0ZJTFRFUiBDb252ZXJ0RmlsdGVy
KEdMZW51bSBtaW5GaWx0ZXIsIEdMZW51bSBtYWdGaWx0ZXIsIGZsb2F0IG1heEFuaXNvdHJvcHkp
Cit7CisgICAgaWYgKG1heEFuaXNvdHJvcHkgPiAxLjBmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEQzRDExX0VOQ09ERV9BTklTT1RST1BJQ19GSUxURVIoZmFsc2UpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBEM0QxMV9GSUxURVJfVFlQRSBkeE1pbiA9IEQzRDExX0ZJTFRFUl9U
WVBFX1BPSU5UOworICAgICAgICBEM0QxMV9GSUxURVJfVFlQRSBkeE1pcCA9IEQzRDExX0ZJTFRF
Ul9UWVBFX1BPSU5UOworICAgICAgICBzd2l0Y2ggKG1pbkZpbHRlcikKKyAgICAgICAgeworICAg
ICAgICAgIGNhc2UgR0xfTkVBUkVTVDogICAgICAgICAgICAgICAgZHhNaW4gPSBEM0QxMV9GSUxU
RVJfVFlQRV9QT0lOVDsgIGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7ICBicmVhazsK
KyAgICAgICAgICBjYXNlIEdMX0xJTkVBUjogICAgICAgICAgICAgICAgIGR4TWluID0gRDNEMTFf
RklMVEVSX1RZUEVfTElORUFSOyBkeE1pcCA9IEQzRDExX0ZJTFRFUl9UWVBFX1BPSU5UOyAgYnJl
YWs7CisgICAgICAgICAgY2FzZSBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUOiBkeE1pbiA9IEQz
RDExX0ZJTFRFUl9UWVBFX1BPSU5UOyAgZHhNaXAgPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsg
IGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUOiAgZHhNaW4g
PSBEM0QxMV9GSUxURVJfVFlQRV9MSU5FQVI7IGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVfUE9J
TlQ7ICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUjogIGR4
TWluID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7ICBkeE1pcCA9IEQzRDExX0ZJTFRFUl9UWVBF
X0xJTkVBUjsgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUjog
ICBkeE1pbiA9IEQzRDExX0ZJTFRFUl9UWVBFX0xJTkVBUjsgZHhNaXAgPSBEM0QxMV9GSUxURVJf
VFlQRV9MSU5FQVI7IGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorCisgICAgICAgIEQzRDExX0ZJTFRFUl9U
WVBFIGR4TWFnID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7CisgICAgICAgIHN3aXRjaCAobWFn
RmlsdGVyKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9ORUFSRVNUOiBkeE1hZyA9IEQz
RDExX0ZJTFRFUl9UWVBFX1BPSU5UOyAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9MSU5FQVI6
ICBkeE1hZyA9IEQzRDExX0ZJTFRFUl9UWVBFX0xJTkVBUjsgYnJlYWs7CisgICAgICAgICAgZGVm
YXVsdDogICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IEQzRDExX0VOQ09ERV9CQVNJQ19GSUxURVIoZHhNaW4sIGR4TWFnLCBkeE1pcCwgZmFsc2UpOwor
ICAgIH0KK30KKworRDNEMTFfVEVYVFVSRV9BRERSRVNTX01PREUgQ29udmVydFRleHR1cmVXcmFw
KEdMZW51bSB3cmFwKQoreworICAgIHN3aXRjaCAod3JhcCkKKyAgICB7CisgICAgICBjYXNlIEdM
X1JFUEVBVDogICAgICAgICAgcmV0dXJuIEQzRDExX1RFWFRVUkVfQUREUkVTU19XUkFQOworICAg
ICAgY2FzZSBHTF9DTEFNUF9UT19FREdFOiAgIHJldHVybiBEM0QxMV9URVhUVVJFX0FERFJFU1Nf
Q0xBTVA7CisgICAgICBjYXNlIEdMX01JUlJPUkVEX1JFUEVBVDogcmV0dXJuIEQzRDExX1RFWFRV
UkVfQUREUkVTU19NSVJST1I7CisgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gRDNEMTFfVEVYVFVSRV9BRERSRVNTX1dSQVA7
Cit9CisKK0ZMT0FUIENvbnZlcnRNaW5MT0QoR0xlbnVtIG1pbkZpbHRlciwgdW5zaWduZWQgaW50
IGxvZE9mZnNldCkKK3sKKyAgICByZXR1cm4gKG1pbkZpbHRlciA9PSBHTF9ORUFSRVNUIHx8IG1p
bkZpbHRlciA9PSBHTF9MSU5FQVIpID8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGxvZE9mZnNldCkgOiAt
RkxUX01BWDsKK30KKworRkxPQVQgQ29udmVydE1heExPRChHTGVudW0gbWluRmlsdGVyLCB1bnNp
Z25lZCBpbnQgbG9kT2Zmc2V0KQoreworICAgIHJldHVybiAobWluRmlsdGVyID09IEdMX05FQVJF
U1QgfHwgbWluRmlsdGVyID09IEdMX0xJTkVBUikgPyBzdGF0aWNfY2FzdDxmbG9hdD4obG9kT2Zm
c2V0KSA6IEZMVF9NQVg7Cit9CisKK30KKworbmFtZXNwYWNlIGQzZDExX2dsCit7CisKK0dMZW51
bSBDb252ZXJ0QmFja0J1ZmZlckZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dp
dGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TTogcmV0dXJuIEdMX1JHQkE4X09FUzsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThf
VU5PUk06IHJldHVybiBHTF9CR1JBOF9FWFQ7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBHTF9SR0JBOF9PRVM7Cit9CisKK0dMZW51
bSBDb252ZXJ0RGVwdGhTdGVuY2lsRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCkKK3sKKyAgICBz
d2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046IHJl
dHVybiBHTF9OT05FOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06IHJldHVybiBH
TF9ERVBUSF9DT01QT05FTlQxNjsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4
X1VJTlQ6IHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RF
TkNJTDhfT0VTOworfQorCitHTGVudW0gQ29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChEWEdJX0ZP
Uk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STToKKyAgICAgICAgcmV0dXJuIEdMX0JHUkE4X0VYVDsK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk06CisgICAgICAgIHJldHVybiBH
TF9SR0JBOF9PRVM7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QxNl9VTk9STToKKyAgICAgICAg
cmV0dXJuIEdMX0RFUFRIX0NPTVBPTkVOVDE2OworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRf
VU5PUk1fUzhfVUlOVDoKKyAgICAgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOwor
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gR0xfUkdCQThfT0VTOworfQorCitHTGVudW0gQ29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1h
dChEWEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAgICAgICAgcmV0dXJuIEdMX1JH
QkE4X09FUzsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQThfVU5PUk06CisgICAgICAgIHJldHVy
biBHTF9BTFBIQThfRVhUOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk06CisgICAg
ICAgIHJldHVybiBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDsKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQkMyX1VOT1JNOgorICAgICAgICByZXR1cm4gR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUM19BTkdMRTsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNOgorICAg
ICAgICByZXR1cm4gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRTsKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgorICAgICAgICByZXR1cm4gR0xfUkdC
QTMyRl9FWFQ7CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVDoKKyAgICAg
ICAgcmV0dXJuIEdMX1JHQjMyRl9FWFQ7CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9GTE9BVDoKKyAgICAgICAgcmV0dXJuIEdMX1JHQkExNkZfRVhUOworICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STToKKyAgICAgICAgcmV0dXJuIEdMX0JHUkE4X0VYVDsK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVU5PUk06CisgICAgICAgIHJldHVybiBHTF9SOF9F
WFQ7CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVU5PUk06CisgICAgICAgIHJldHVybiBH
TF9SRzhfRVhUOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6CisgICAgICAgIHJl
dHVybiBHTF9SMTZGX0VYVDsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FUOgor
ICAgICAgICByZXR1cm4gR0xfUkcxNkZfRVhUOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZf
VU5PUk06CisgICAgICAgIHJldHVybiBHTF9ERVBUSF9DT01QT05FTlQxNjsKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6CisgICAgICAgIHJldHVybiBHTF9ERVBUSDI0
X1NURU5DSUw4X09FUzsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKKyAgICAgICAg
cmV0dXJuIEdMX05PTkU7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgIH0KKworICAgIHJldHVybiBHTF9SR0JBOF9PRVM7Cit9CisKK30KKworbmFtZXNwYWNlIGds
X2QzZDExCit7CisKK0RYR0lfRk9STUFUIENvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQoR0xlbnVt
IGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JH
QkE0OgorICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgY2FzZSBHTF9SR0JBOF9PRVM6Cisg
ICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICAgIHJl
dHVybiBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STTsKKyAgICAgIGNhc2UgR0xfQkdSQThfRVhU
OgorICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk07CisgICAgICBjYXNl
IEdMX0RFUFRIX0NPTVBPTkVOVDE2OgorICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfRDE2X1VO
T1JNOworICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKKyAgICAgIGNhc2UgR0xfREVQVEgy
NF9TVEVOQ0lMOF9PRVM6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhf
VUlOVDsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisg
ICAgcmV0dXJuIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOworfQorCitEWEdJX0ZPUk1BVCBD
b252ZXJ0VGV4dHVyZUZvcm1hdChHTGVudW0gaW50ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNo
IChpbnRlcm5hbGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNh
c2UgR0xfUkdCQTQ6CisgICAgICBjYXNlIEdMX1JHQjVfQTE6CisgICAgICBjYXNlIEdMX1JHQjhf
T0VTOgorICAgICAgY2FzZSBHTF9SR0JBOF9PRVM6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThf
RVhUOgorICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQ6CisgICAgICAgIHJldHVy
biBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STTsKKyAgICAgIGNhc2UgR0xfQUxQSEE4X0VYVDoK
KyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX0E4X1VOT1JNOworICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQxX0VYVDoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX0JDMV9VTk9STTsKKyAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAgICAgcmV0
dXJuIERYR0lfRk9STUFUX0JDMl9VTk9STTsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9BTkdMRToKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX0JDM19VTk9STTsK
KyAgICAgIGNhc2UgR0xfUkdCQTMyRl9FWFQ6CisgICAgICBjYXNlIEdMX0FMUEhBMzJGX0VYVDoK
KyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVDoKKyAgICAgICAgcmV0dXJuIERY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDsKKyAgICAgIGNhc2UgR0xfUkdCMzJGX0VYVDoK
KyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMzJGX0VYVDoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9S
TUFUX1IzMkczMkIzMl9GTE9BVDsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6CisgICAgICBj
YXNlIEdMX0FMUEhBMTZGX0VYVDoKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VY
VDoKKyAgICAgIGNhc2UgR0xfUkdCMTZGX0VYVDoKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMTZG
X0VYVDoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDsKKyAg
ICAgIGNhc2UgR0xfQkdSQThfRVhUOgorICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfQjhHOFI4
QThfVU5PUk07CisgICAgICBjYXNlIEdMX1I4X0VYVDoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9S
TUFUX1I4X1VOT1JNOworICAgICAgY2FzZSBHTF9SRzhfRVhUOgorICAgICAgICByZXR1cm4gRFhH
SV9GT1JNQVRfUjhHOF9VTk9STTsKKyAgICAgIGNhc2UgR0xfUjE2Rl9FWFQ6CisgICAgICAgIHJl
dHVybiBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ7CisgICAgICBjYXNlIEdMX1JHMTZGX0VYVDoKKyAg
ICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVDsKKyAgICAgIGNhc2UgR0xfREVQ
VEhfQ09NUE9ORU5UMTY6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9EMTZfVU5PUk07Cisg
ICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzoKKyAgICAgIGNhc2UgR0xfREVQVEgy
NF9TVEVOQ0lMOF9PRVM6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhf
VUlOVDsKKyAgICAgIGNhc2UgR0xfTk9ORToKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1VO
S05PV047CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKwor
ICAgIHJldHVybiBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STTsKK30KKworfQorCituYW1lc3Bh
Y2UgZDNkMTEKK3sKKwordm9pZCBTZXRQb3NpdGlvblRleENvb3JkVmVydGV4KFBvc2l0aW9uVGV4
Q29vcmRWZXJ0ZXgqIHZlcnRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgdSwgZmxvYXQgdikK
K3sKKyAgICB2ZXJ0ZXgtPnggPSB4OworICAgIHZlcnRleC0+eSA9IHk7CisgICAgdmVydGV4LT51
ID0gdTsKKyAgICB2ZXJ0ZXgtPnYgPSB2OworfQorCit2b2lkIFNldFBvc2l0aW9uRGVwdGhDb2xv
clZlcnRleChQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXgqIHZlcnRleCwgZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpD
b2xvciAmY29sb3IpCit7CisgICAgdmVydGV4LT54ID0geDsKKyAgICB2ZXJ0ZXgtPnkgPSB5Owor
ICAgIHZlcnRleC0+eiA9IHo7CisgICAgdmVydGV4LT5yID0gY29sb3IucmVkOworICAgIHZlcnRl
eC0+ZyA9IGNvbG9yLmdyZWVuOworICAgIHZlcnRleC0+YiA9IGNvbG9yLmJsdWU7CisgICAgdmVy
dGV4LT5hID0gY29sb3IuYWxwaGE7Cit9CisKK3NpemVfdCBDb21wdXRlUGl4ZWxTaXplQml0cyhE
WEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMV9VTk9STToKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfQThfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1NJTlQ6
CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1NOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SOF9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVUlOVDoKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjhfVU5PUk06CisgICAgICAgIHJldHVybiA4OworCisgICAgICBjYXNl
IERYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNUc2
UjVfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QxNl9VTk9STToKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjE2X0ZMT0FUOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfU0lOVDoK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1NOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMTZfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9VSU5UOgorICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTZfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4Rzhf
U0lOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TTk9STToKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhHOF9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VSU5U
OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNOgorICAgICAgICByZXR1cm4gMTY7
CisKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVFlQRUxFU1M6CisgICAgICBjYXNl
IERYR0lfRk9STUFUX0I4RzhSOFg4X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4
UjhYOF9VTk9STV9TUkdCOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlO
VDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRzhSOF9H
OEI4X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBfWFJfQklBU19BMl9V
Tk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVFlQRUxFU1M6CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQ6CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IxMEcxMEIxMEEyX1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBf
RkxPQVQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVDoKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9T
Tk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1RZUEVMRVNTOgorICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2
X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1M6Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SMzJfRkxPQVQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9GTE9BVF9YOFgyNF9U
WVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1NJTlQ6CisgICAgICBjYXNlIERY
R0lfRk9STUFUX1IzMl9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1VJTlQ6
CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfQjhHOF9VTk9STToKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhHOEI4QThfU0lOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThf
U05PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1RZUEVMRVNTOgorICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JH
QjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVFlQRUxFU1M6CisgICAgICBjYXNl
IERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4
UjhBOF9VTk9STV9TUkdCOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURF
WFA6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5UOgorICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9YMzJfVFlQRUxFU1NfRzhYMjRfVUlOVDoKKyAgICAgICAgcmV0dXJu
IDMyOworCisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoKKyAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQ6CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IxNkcxNkIxNkExNl9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVDoK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNOgorICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9T
SU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfVFlQRUxFU1M6CisgICAgICBjYXNl
IERYR0lfRk9STUFUX1IzMkczMl9VSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHOFgy
NF9UWVBFTEVTUzoKKyAgICAgICAgcmV0dXJuIDY0OworCisgICAgICBjYXNlIERYR0lfRk9STUFU
X1IzMkczMkIzMl9GTE9BVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1NJTlQ6
CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9UWVBFTEVTUzoKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjMyRzMyQjMyX1VJTlQ6CisgICAgICAgIHJldHVybiA5NjsKKworICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQ6CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9TSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJB
MzJfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5UOgor
ICAgICAgICByZXR1cm4gMTI4OworCisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9UWVBFTEVT
UzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzFfVU5PUk1fU1JHQjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1NOT1JNOgor
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX0JDNF9VTk9STToKKyAgICAgICAgcmV0dXJuIDQ7CisKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkMyX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk06CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9STV9TUkdCOgorICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9CQzNfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STToKKyAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNX1NSR0I6CisgICAgICBjYXNlIERYR0lfRk9STUFU
X0JDNV9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1RZUEVMRVNTOgorICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzVfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhf
U0YxNjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9UWVBFTEVTUzoKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQkM2SF9VRjE2OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVFlQRUxF
U1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19VTk9STToKKyAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfQkM3X1VOT1JNX1NSR0I6CisgICAgICAgIHJldHVybiA4OworCisgICAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3NpemVfdCBDb21wdXRlQmxvY2tTaXpl
Qml0cyhEWEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgewor
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX0JDMV9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0I6Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkM0X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVU5PUk06CisgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDMl9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMy
X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQjoKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfQkMzX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNf
VU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STV9TUkdCOgorICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzVfU05PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9UWVBF
TEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1VOT1JNOgorICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzZIX1NGMTY6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVFlQRUxFU1M6
CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVUYxNjoKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM3X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk06CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX0JDN19VTk9STV9TUkdCOgorICAgICAgICByZXR1cm4gQ29tcHV0
ZVBpeGVsU2l6ZUJpdHMoZm9ybWF0KSAqIDE2OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitib29sIElzQ29tcHJl
c3NlZChEWEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgewor
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX0JDMV9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0I6Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkM0X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVU5PUk06CisgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDMl9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMy
X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQjoKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfQkMzX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNf
VU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STV9TUkdCOgorICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzVfU05PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9UWVBF
TEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1VOT1JNOgorICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzZIX1NGMTY6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVFlQRUxFU1M6
CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVUYxNjoKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM3X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk06CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX0JDN19VTk9STV9TUkdCOgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KK30KKwordW5zaWduZWQgaW50IEdldFRleHR1cmVGb3JtYXREaW1lbnNpb25B
bGlnbm1lbnQoRFhHSV9GT1JNQVQgZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KQorICAg
IHsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzFfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9VTk9STV9TUkdC
OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfU05PUk06CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX0JDNF9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1VOT1JNOgorICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFU
X0JDMl9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1VOT1JNX1NSR0I6CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX0JDM19UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkMzX1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQjoKKyAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQkM1X1NOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVf
VFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9VTk9STToKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQkM2SF9TRjE2OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1RZUEVM
RVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1VGMTY6CisgICAgICBjYXNlIERYR0lf
Rk9STUFUX0JDN19UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1VOT1JNOgor
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk1fU1JHQjoKKyAgICAgICAgcmV0dXJuIDQ7
CisgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgIHJldHVybiAxOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgfQorfQorCitib29sIElzRGVwdGhTdGVuY2lsRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCkK
K3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0Qz
Ml9GTE9BVF9TOFgyNF9VSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMzJfRkxPQVQ6Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UOgorICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9EMTZfVU5PUk06CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworRFhHSV9GT1JNQVQgR2V0RGVwdGhU
ZXh0dXJlRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkK
KyAgICB7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QzMl9GTE9BVF9TOFgyNF9VSU5UOiByZXR1
cm4gRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1M7CisgICAgICBjYXNlIERYR0lfRk9STUFU
X0QzMl9GTE9BVDogICAgICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjMyX1RZUEVMRVNTOwor
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDogICAgcmV0dXJuIERYR0lf
Rk9STUFUX1IyNEc4X1RZUEVMRVNTOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06
ICAgICAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1IxNl9UWVBFTEVTUzsKKyAgICAgIGRlZmF1
bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgICAgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9VTktO
T1dOOworICAgIH0KK30KKworRFhHSV9GT1JNQVQgR2V0RGVwdGhTaGFkZXJSZXNvdXJjZUZvcm1h
dChEWEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVDogcmV0dXJuIERYR0lfRk9S
TUFUX1IzMl9GTE9BVF9YOFgyNF9UWVBFTEVTUzsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDMy
X0ZMT0FUOiAgICAgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9SMzJfVUlOVDsKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6ICAgIHJldHVybiBEWEdJX0ZPUk1BVF9S
MjRfVU5PUk1fWDhfVFlQRUxFU1M7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QxNl9VTk9STTog
ICAgICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjE2X1VOT1JNOworICAgICAgZGVmYXVsdDog
VU5SRUFDSEFCTEUoKTsgICAgICAgICAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1VOS05PV047
CisgICAgfQorfQorCitIUkVTVUxUIFNldERlYnVnTmFtZShJRDNEMTFEZXZpY2VDaGlsZCAqcmVz
b3VyY2UsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisjaWYgZGVmaW5lZChfREVCVUcpCisgICAgcmV0
dXJuIHJlc291cmNlLT5TZXRQcml2YXRlRGF0YShXS1BESURfRDNERGVidWdPYmplY3ROYW1lLCBz
dHJsZW4obmFtZSksIG5hbWUpOworI2Vsc2UKKyAgICByZXR1cm4gU19PSzsKKyNlbmRpZgorfQor
Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3JlbmRlcmVyMTFfdXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVy
ZXIxMV91dGlscy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk1IEBACisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gcmVuZGVyZXIxMV91dGlscy5oOiBDb252ZXJzaW9uIGZ1bmN0aW9ucyBhbmQgb3RoZXIg
dXRpbGl0eSByb3V0aW5lcworLy8gc3BlY2lmaWMgdG8gdGhlIEQzRDExIHJlbmRlcmVyLgorCisj
aWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUjExX1VUSUxTX0gKKyNkZWZpbmUgTElC
R0xFU1YyX1JFTkRFUkVSX1JFTkRFUkVSMTFfVVRJTFNfSAorCisjaW5jbHVkZSAibGliR0xFU3Yy
L2FuZ2xldHlwZXMuaCIKKworbmFtZXNwYWNlIGdsX2QzZDExCit7CisKK0QzRDExX0JMRU5EIENv
bnZlcnRCbGVuZEZ1bmMoR0xlbnVtIGdsQmxlbmQsIGJvb2wgaXNBbHBoYSk7CitEM0QxMV9CTEVO
RF9PUCBDb252ZXJ0QmxlbmRPcChHTGVudW0gZ2xCbGVuZE9wKTsKK1VJTlQ4IENvbnZlcnRDb2xv
ck1hc2soYm9vbCBtYXNrUmVkLCBib29sIG1hc2tHcmVlbiwgYm9vbCBtYXNrQmx1ZSwgYm9vbCBt
YXNrQWxwaGEpOworCitEM0QxMV9DVUxMX01PREUgQ29udmVydEN1bGxNb2RlKGJvb2wgY3VsbEVu
YWJsZWQsIEdMZW51bSBjdWxsTW9kZSk7CisKK0QzRDExX0NPTVBBUklTT05fRlVOQyBDb252ZXJ0
Q29tcGFyaXNvbihHTGVudW0gY29tcGFyaXNvbik7CitEM0QxMV9ERVBUSF9XUklURV9NQVNLIENv
bnZlcnREZXB0aE1hc2soYm9vbCBkZXB0aFdyaXRlRW5hYmxlZCk7CitVSU5UOCBDb252ZXJ0U3Rl
bmNpbE1hc2soR0x1aW50IHN0ZW5jaWxtYXNrKTsKK0QzRDExX1NURU5DSUxfT1AgQ29udmVydFN0
ZW5jaWxPcChHTGVudW0gc3RlbmNpbE9wKTsKKworRDNEMTFfRklMVEVSIENvbnZlcnRGaWx0ZXIo
R0xlbnVtIG1pbkZpbHRlciwgR0xlbnVtIG1hZ0ZpbHRlciwgZmxvYXQgbWF4QW5pc290cm9weSk7
CitEM0QxMV9URVhUVVJFX0FERFJFU1NfTU9ERSBDb252ZXJ0VGV4dHVyZVdyYXAoR0xlbnVtIHdy
YXApOworRkxPQVQgQ29udmVydE1pbkxPRChHTGVudW0gbWluRmlsdGVyLCB1bnNpZ25lZCBpbnQg
bG9kT2Zmc2V0KTsKK0ZMT0FUIENvbnZlcnRNYXhMT0QoR0xlbnVtIG1pbkZpbHRlciwgdW5zaWdu
ZWQgaW50IGxvZE9mZnNldCk7CisKK0RYR0lfRk9STUFUIENvbnZlcnRSZW5kZXJidWZmZXJGb3Jt
YXQoR0xlbnVtIGZvcm1hdCk7CitEWEdJX0ZPUk1BVCBDb252ZXJ0VGV4dHVyZUZvcm1hdChHTGVu
dW0gZm9ybWF0KTsKK30KKworbmFtZXNwYWNlIGQzZDExX2dsCit7CisKK0dMZW51bSBDb252ZXJ0
QmFja0J1ZmZlckZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpOworR0xlbnVtIENvbnZlcnREZXB0
aFN0ZW5jaWxGb3JtYXQoRFhHSV9GT1JNQVQgZm9ybWF0KTsKK0dMZW51bSBDb252ZXJ0UmVuZGVy
YnVmZmVyRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCk7CitHTGVudW0gQ29udmVydFRleHR1cmVJ
bnRlcm5hbEZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpOworCit9CisKK25hbWVzcGFjZSBkM2Qx
MQoreworCitzdHJ1Y3QgUG9zaXRpb25UZXhDb29yZFZlcnRleAoreworICAgIGZsb2F0IHgsIHk7
CisgICAgZmxvYXQgdSwgdjsKK307Cit2b2lkIFNldFBvc2l0aW9uVGV4Q29vcmRWZXJ0ZXgoUG9z
aXRpb25UZXhDb29yZFZlcnRleCogdmVydGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB1LCBm
bG9hdCB2KTsKKworc3RydWN0IFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleAoreworICAgIGZsb2F0
IHgsIHksIHo7CisgICAgZmxvYXQgciwgZywgYiwgYTsKK307Cit2b2lkIFNldFBvc2l0aW9uRGVw
dGhDb2xvclZlcnRleChQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXgqIHZlcnRleCwgZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpDb2xvciAmY29sb3IpOworCitzaXplX3QgQ29tcHV0ZVBpeGVsU2l6ZUJpdHMoRFhHSV9G
T1JNQVQgZm9ybWF0KTsKK3NpemVfdCBDb21wdXRlQmxvY2tTaXplQml0cyhEWEdJX0ZPUk1BVCBm
b3JtYXQpOworCitib29sIElzQ29tcHJlc3NlZChEWEdJX0ZPUk1BVCBmb3JtYXQpOwordW5zaWdu
ZWQgaW50IEdldFRleHR1cmVGb3JtYXREaW1lbnNpb25BbGlnbm1lbnQoRFhHSV9GT1JNQVQgZm9y
bWF0KTsKKworYm9vbCBJc0RlcHRoU3RlbmNpbEZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpOwor
RFhHSV9GT1JNQVQgR2V0RGVwdGhUZXh0dXJlRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCk7CitE
WEdJX0ZPUk1BVCBHZXREZXB0aFNoYWRlclJlc291cmNlRm9ybWF0KERYR0lfRk9STUFUIGZvcm1h
dCk7CisKK0hSRVNVTFQgU2V0RGVidWdOYW1lKElEM0QxMURldmljZUNoaWxkICpyZXNvdXJjZSwg
Y29uc3QgY2hhciAqbmFtZSk7CisKK2lubGluZSBib29sIGlzRGV2aWNlTG9zdEVycm9yKEhSRVNV
TFQgZXJyb3JDb2RlKQoreworICAgIHN3aXRjaCAoZXJyb3JDb2RlKQorICAgIHsKKyAgICAgIGNh
c2UgRFhHSV9FUlJPUl9ERVZJQ0VfSFVORzoKKyAgICAgIGNhc2UgRFhHSV9FUlJPUl9ERVZJQ0Vf
UkVNT1ZFRDoKKyAgICAgIGNhc2UgRFhHSV9FUlJPUl9ERVZJQ0VfUkVTRVQ6CisgICAgICBjYXNl
IERYR0lfRVJST1JfRFJJVkVSX0lOVEVSTkFMX0VSUk9SOgorICAgICAgY2FzZSBEWEdJX0VSUk9S
X05PVF9DVVJSRU5UTFlfQVZBSUxBQkxFOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK30KKworI2VuZGlmIC8v
IExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUjExX1VUSUxTX0gKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvdmVydGV4Y29udmVyc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvdmVydGV4Y29udmVyc2lvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci92ZXJ0ZXhjb252ZXJzaW9uLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjAzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyB2ZXJ0ZXhjb252
ZXJzaW9uLmg6IEEgbGlicmFyeSBvZiB2ZXJ0ZXggY29udmVyc2lvbiBjbGFzc2VzIHRoYXQgY2Fu
IGJlIHVzZWQgdG8gYnVpbGQKKy8vIHRoZSBGb3JtYXRDb252ZXJ0ZXIgb2JqZWN0cyB1c2VkIGJ5
IHRoZSBidWZmZXIgY29udmVyc2lvbiBzeXN0ZW0uCisKKyNpZm5kZWYgTElCR0xFU1YyX1ZFUlRF
WENPTlZFUlNJT05fSF8KKyNkZWZpbmUgTElCR0xFU1YyX1ZFUlRFWENPTlZFUlNJT05fSF8KKwor
bmFtZXNwYWNlIHJ4Cit7CisKKy8vIENvbnZlcnNpb24gdHlwZXM6CisvLyBzdGF0aWMgY29uc3Qg
Ym9vbCBpZGVudGl0eTogdHJ1ZSBpZiB0aGlzIGlzIGFuIGlkZW50aXR5IHRyYW5zZm9ybSwgZmFs
c2Ugb3RoZXJ3aXNlCisvLyBzdGF0aWMgVSBjb252ZXJ0KFQpOiBjb252ZXJ0IGEgc2luZ2xlIGVs
ZW1lbnQgZnJvbSB0aGUgaW5wdXQgdHlwZSB0byB0aGUgb3V0cHV0IHR5cGUKKy8vIHR5cGVkZWYg
Li4uIE91dHB1dFR5cGU6IHRoZSB0eXBlIHByb2R1Y2VkIGJ5IHRoaXMgY29udmVyc2lvbgorCit0
ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBJZGVudGl0eQoreworICAgIHN0YXRpYyBjb25zdCBi
b29sIGlkZW50aXR5ID0gdHJ1ZTsKKworICAgIHR5cGVkZWYgVCBPdXRwdXRUeXBlOworCisgICAg
c3RhdGljIFQgY29udmVydChUIHgpCisgICAgeworICAgICAgICByZXR1cm4geDsKKyAgICB9Cit9
OworCit0ZW1wbGF0ZSA8Y2xhc3MgRnJvbVQsIGNsYXNzIFRvVD4KK3N0cnVjdCBDYXN0Cit7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaWRlbnRpdHkgPSBmYWxzZTsKKworICAgIHR5cGVkZWYgVG9U
IE91dHB1dFR5cGU7CisKKyAgICBzdGF0aWMgVG9UIGNvbnZlcnQoRnJvbVQgeCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUb1Q+KHgpOworICAgIH0KK307CisKK3RlbXBsYXRl
IDxjbGFzcyBUPgorc3RydWN0IENhc3Q8VCwgVD4KK3sKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBp
ZGVudGl0eSA9IHRydWU7CisKKyAgICB0eXBlZGVmIFQgT3V0cHV0VHlwZTsKKworICAgIHN0YXRp
YyBUIGNvbnZlcnQoVCB4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHgp
OworICAgIH0KK307CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IE5vcm1hbGl6ZQorewor
ICAgIHN0YXRpYyBjb25zdCBib29sIGlkZW50aXR5ID0gZmFsc2U7CisKKyAgICB0eXBlZGVmIGZs
b2F0IE91dHB1dFR5cGU7CisKKyAgICBzdGF0aWMgZmxvYXQgY29udmVydChUIHgpCisgICAgewor
ICAgICAgICB0eXBlZGVmIHN0ZDo6bnVtZXJpY19saW1pdHM8VD4gTkw7CisgICAgICAgIGZsb2F0
IGYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oeCk7CisKKyAgICAgICAgaWYgKE5MOjppc19zaWduZWQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIGNvbnN0IGZsb2F0ID0+IFZDMjAwOCBjb21wdXRl
cyBpdCBhdCBjb21waWxlIHRpbWUKKyAgICAgICAgICAgIC8vIHN0YXRpYyBjb25zdCBmbG9hdCA9
PiBWQzIwMDggY29tcHV0ZXMgaXQgdGhlIGZpcnN0IHRpbWUgd2UgZ2V0IGhlcmUsIHN0b3JlcyBp
dCB0byBtZW1vcnkgd2l0aCBzdGF0aWMgZ3VhcmQgYW5kIGFsbCB0aGF0LgorICAgICAgICAgICAg
Y29uc3QgZmxvYXQgZGl2aXNvciA9IDEuMGYvKDIqc3RhdGljX2Nhc3Q8ZmxvYXQ+KE5MOjptYXgo
KSkrMSk7CisgICAgICAgICAgICByZXR1cm4gKDIqZisxKSpkaXZpc29yOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGYvTkw6Om1heCgpOwor
ICAgICAgICB9CisgICAgfQorfTsKKwordGVtcGxhdGUgPGNsYXNzIEZyb21UeXBlLCBzdGQ6OnNp
emVfdCBTY2FsZUJpdHM+CitzdHJ1Y3QgRml4ZWRUb0Zsb2F0Cit7CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgaWRlbnRpdHkgPSBmYWxzZTsKKworICAgIHR5cGVkZWYgZmxvYXQgT3V0cHV0VHlwZTsK
KworICAgIHN0YXRpYyBmbG9hdCBjb252ZXJ0KEZyb21UeXBlIHgpCisgICAgeworICAgICAgICBj
b25zdCBmbG9hdCBkaXZpc29yID0gMS4wZiAvIHN0YXRpY19jYXN0PGZsb2F0PihzdGF0aWNfY2Fz
dDxGcm9tVHlwZT4oMSkgPDwgU2NhbGVCaXRzKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGZsb2F0Pih4KSAqIGRpdmlzb3I7CisgICAgfQorfTsKKworLy8gV2lkZW4gdHlwZXM6CisvLyBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGluaXRpYWxXaWR0aDogbnVtYmVyIG9mIGNvbXBvbmVu
dHMgYmVmb3JlIGNvbnZlcnNpb24KKy8vIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgZmluYWxX
aWR0aDogbnVtYmVyIG9mIGNvbXBvbmVudHMgYWZ0ZXIgY29udmVyc2lvbgorCisvLyBGbG9hdCBp
cyBzdXBwb3J0ZWQgYXQgYW55IHNpemUuCit0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KK3N0cnVj
dCBOb1dpZGVuCit7CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGluaXRpYWxXaWR0aCA9
IE47CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGZpbmFsV2lkdGggPSBOOworfTsKKwor
Ly8gU0hPUlQsIG5vcm0tU0hPUlQsIG5vcm0tVU5TSUdORURfU0hPUlQgYXJlIHN1cHBvcnRlZCBi
dXQgb25seSB3aXRoIDIgb3IgNCBjb21wb25lbnRzCit0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4K
K3N0cnVjdCBXaWRlblRvRXZlbgoreworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBpbml0
aWFsV2lkdGggPSBOOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBmaW5hbFdpZHRoID0g
TisoTiYxKTsKK307CisKK3RlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgorc3RydWN0IFdpZGVuVG9G
b3VyCit7CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGluaXRpYWxXaWR0aCA9IE47Cisg
ICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGZpbmFsV2lkdGggPSA0OworfTsKKworLy8gTW9z
dCB0eXBlcyBoYXZlIDAgYW5kIDEgdGhhdCBhcmUganVzdCB0aGF0LgordGVtcGxhdGUgPGNsYXNz
IFQ+CitzdHJ1Y3QgU2ltcGxlRGVmYXVsdFZhbHVlcworeworICAgIHN0YXRpYyBUIHplcm8oKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxUPigwKTsgfQorICAgIHN0YXRpYyBUIG9uZSgpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PFQ+KDEpOyB9Cit9OworCisvLyBCdXQgbm9ybWFsaXNlZCB0eXBlcyBvbmx5
IHN0b3JlIFswLDFdIG9yIFstMSwxXSBzbyAxLjAgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIG1heCB2
YWx1ZS4KK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IE5vcm1hbGl6ZWREZWZhdWx0VmFsdWVz
Cit7CisgICAgc3RhdGljIFQgemVybygpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KDApOyB9Cisg
ICAgc3RhdGljIFQgb25lKCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCk7
IH0KK307CisKKy8vIENvbnZlcnRlcjoKKy8vIHN0YXRpYyBjb25zdCBib29sIGlkZW50aXR5OiB0
cnVlIGlmIHRoaXMgaXMgYW4gaWRlbnRpdHkgdHJhbnNmb3JtICh3aXRoIG5vIHdpZGVuaW5nKQor
Ly8gc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGZpbmFsU2l6ZTogbnVtYmVyIG9mIGJ5dGVzIHBl
ciBvdXRwdXQgdmVydGV4CisvLyBzdGF0aWMgdm9pZCBjb252ZXJ0QXJyYXkoY29uc3Qgdm9pZCAq
aW4sIHN0ZDo6c2l6ZV90IHN0cmlkZSwgc3RkOjpzaXplX3Qgbiwgdm9pZCAqb3V0KTogY29udmVy
dCBhbiBhcnJheSBvZiB2ZXJ0aWNlcy4gSW5wdXQgbWF5IGJlIHN0cmlkZWQsIGJ1dCBvdXRwdXQg
d2lsbCBiZSB1bnN0cmlkZWQuCisKK3RlbXBsYXRlIDxjbGFzcyBJblQsIGNsYXNzIFdpZGVuUnVs
ZSwgY2xhc3MgQ29udmVydGVyLCBjbGFzcyBEZWZhdWx0VmFsdWVSdWxlID0gU2ltcGxlRGVmYXVs
dFZhbHVlczxJblQ+ID4KK3N0cnVjdCBWZXJ0ZXhEYXRhQ29udmVydGVyCit7CisgICAgdHlwZWRl
ZiB0eXBlbmFtZSBDb252ZXJ0ZXI6Ok91dHB1dFR5cGUgT3V0cHV0VHlwZTsKKyAgICB0eXBlZGVm
IEluVCBJbnB1dFR5cGU7CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpZGVudGl0eSA9IChXaWRl
blJ1bGU6OmluaXRpYWxXaWR0aCA9PSBXaWRlblJ1bGU6OmZpbmFsV2lkdGgpICYmIENvbnZlcnRl
cjo6aWRlbnRpdHk7CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGZpbmFsU2l6ZSA9IFdp
ZGVuUnVsZTo6ZmluYWxXaWR0aCAqIHNpemVvZihPdXRwdXRUeXBlKTsKKworICAgIHN0YXRpYyB2
b2lkIGNvbnZlcnRBcnJheShjb25zdCBJbnB1dFR5cGUgKmluLCBzdGQ6OnNpemVfdCBzdHJpZGUs
IHN0ZDo6c2l6ZV90IG4sIE91dHB1dFR5cGUgKm91dCkKKyAgICB7CisgICAgICAgIGZvciAoc3Rk
OjpzaXplX3QgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0
IElucHV0VHlwZSAqZWluID0gcG9pbnRlckFkZEJ5dGVzKGluLCBpICogc3RyaWRlKTsKKworICAg
ICAgICAgICAgY29weUNvbXBvbmVudChvdXQsIGVpbiwgMCwgc3RhdGljX2Nhc3Q8T3V0cHV0VHlw
ZT4oRGVmYXVsdFZhbHVlUnVsZTo6emVybygpKSk7CisgICAgICAgICAgICBjb3B5Q29tcG9uZW50
KG91dCwgZWluLCAxLCBzdGF0aWNfY2FzdDxPdXRwdXRUeXBlPihEZWZhdWx0VmFsdWVSdWxlOjp6
ZXJvKCkpKTsKKyAgICAgICAgICAgIGNvcHlDb21wb25lbnQob3V0LCBlaW4sIDIsIHN0YXRpY19j
YXN0PE91dHB1dFR5cGU+KERlZmF1bHRWYWx1ZVJ1bGU6Onplcm8oKSkpOworICAgICAgICAgICAg
Y29weUNvbXBvbmVudChvdXQsIGVpbiwgMywgc3RhdGljX2Nhc3Q8T3V0cHV0VHlwZT4oRGVmYXVs
dFZhbHVlUnVsZTo6b25lKCkpKTsKKworICAgICAgICAgICAgb3V0ICs9IFdpZGVuUnVsZTo6Zmlu
YWxXaWR0aDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRBcnJh
eShjb25zdCB2b2lkICppbiwgc3RkOjpzaXplX3Qgc3RyaWRlLCBzdGQ6OnNpemVfdCBuLCB2b2lk
ICpvdXQpCisgICAgeworICAgICAgICByZXR1cm4gY29udmVydEFycmF5KHN0YXRpY19jYXN0PGNv
bnN0IElucHV0VHlwZSo+KGluKSwgc3RyaWRlLCBuLCBzdGF0aWNfY2FzdDxPdXRwdXRUeXBlKj4o
b3V0KSk7CisgICAgfQorCisgIHByaXZhdGU6CisgICAgLy8gQWR2YW5jZSB0aGUgZ2l2ZW4gcG9p
bnRlciBieSBhIG51bWJlciBvZiBieXRlcyAobm90IHBvaW50ZWQtdG8gZWxlbWVudHMpLgorICAg
IHRlbXBsYXRlIDxjbGFzcyBUPgorICAgIHN0YXRpYyBUICpwb2ludGVyQWRkQnl0ZXMoVCAqYmFz
ZVB0ciwgc3RkOjpzaXplX3QgbnVtQnl0ZXMpCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxUICo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihiYXNlUHRyKSArIG51
bUJ5dGVzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBjb3B5Q29tcG9uZW50KE91dHB1dFR5
cGUgKm91dCwgY29uc3QgSW5wdXRUeXBlICppbiwgc3RkOjpzaXplX3QgZWxlbWVudGluZGV4LCBP
dXRwdXRUeXBlIGRlZmF1bHR2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChXaWRlblJ1bGU6OmZp
bmFsV2lkdGggPiBlbGVtZW50aW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChXaWRl
blJ1bGU6OmluaXRpYWxXaWR0aCA+IGVsZW1lbnRpbmRleCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBvdXRbZWxlbWVudGluZGV4XSA9IENvbnZlcnRlcjo6Y29udmVydChpbltlbGVt
ZW50aW5kZXhdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBvdXRbZWxlbWVudGluZGV4XSA9IGRlZmF1bHR2YWx1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK307CisKK30KKworI2VuZGlmICAgLy8gTElC
R0xFU1YyX1ZFUlRFWENPTlZFUlNJT05fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9CbGl0LnBzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9CbGl0
LnBzCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9zaGFkZXJzL0JsaXQucHMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCitzYW1wbGVyMkQgdGV4IDogczA7CisKK3VuaWZvcm0gZmxvYXQ0IG1v
ZGUgOiBjMDsKKworLy8gUGFzc3Rocm91Z2ggUGl4ZWwgU2hhZGVyCisvLyBPdXRwdXRzIHRleHR1
cmUgMCBzYW1wbGVkIGF0IHRleGNvb3JkIDAuCitmbG9hdDQgcGFzc3Rocm91Z2hwcyhmbG9hdDQg
dGV4Y29vcmQgOiBURVhDT09SRDApIDogQ09MT1IKK3sKKwlyZXR1cm4gdGV4MkQodGV4LCB0ZXhj
b29yZC54eSk7Cit9OworCisvLyBMdW1pbmFuY2UgQ29udmVyc2lvbiBQaXhlbCBTaGFkZXIKKy8v
IE91dHB1dHMgc2FtcGxlKHRleDAsIHRjMCkucnJyYS4KKy8vIEZvciBMQSBvdXRwdXQgKHBhc3Mg
QSkgc2V0IEMwLlggPSAxLCBDMC5ZID0gMC4KKy8vIEZvciBMIG91dHB1dCAoQSA9IDEpIHNldCBD
MC5YID0gMCwgQzAuWSA9IDEuCitmbG9hdDQgbHVtaW5hbmNlcHMoZmxvYXQ0IHRleGNvb3JkIDog
VEVYQ09PUkQwKSA6IENPTE9SCit7CisJZmxvYXQ0IHRtcCA9IHRleDJEKHRleCwgdGV4Y29vcmQu
eHkpOworCXRtcC53ID0gdG1wLncgKiBtb2RlLnggKyBtb2RlLnk7CisJcmV0dXJuIHRtcC54eHh3
OworfTsKKworLy8gUkdCL0EgQ29tcG9uZW50IE1hc2sgUGl4ZWwgU2hhZGVyCisvLyBPdXRwdXRz
IHNhbXBsZSh0ZXgwLCB0YzApIHdpdGggb3B0aW9ucyB0byBmb3JjZSBSR0IgPSAwIGFuZC9vciBB
ID0gMS4KKy8vIFRvIGZvcmNlIFJHQiA9IDAsIHNldCBDMC5YID0gMCwgb3RoZXJ3aXNlIEMwLlgg
PSAxLgorLy8gVG8gZm9yY2UgQSA9IDEsIHNldCBDMC5aID0gMCwgQzAuVyA9IDEsIG90aGVyd2lz
ZSBDMC5aID0gMSwgQzAuVyA9IDAuCitmbG9hdDQgY29tcG9uZW50bWFza3BzKGZsb2F0NCB0ZXhj
b29yZCA6IFRFWENPT1JEMCkgOiBDT0xPUgoreworCWZsb2F0NCB0bXAgPSB0ZXgyRCh0ZXgsIHRl
eGNvb3JkLnh5KTsKKwl0bXAueHl6ID0gdG1wLnh5eiAqIG1vZGUueDsKKwl0bXAudyA9IHRtcC53
ICogbW9kZS56ICsgbW9kZS53OworCXJldHVybiB0bXA7Cit9OwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL0JsaXQudnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9z
aGFkZXJzL0JsaXQudnMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvQmxpdC52cwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKK3N0cnVjdCBWU19PVVRQVVQKK3sKKyAgICBmbG9h
dDQgcG9zaXRpb24gOiBQT1NJVElPTjsKKyAgICBmbG9hdDQgdGV4Y29vcmQgOiBURVhDT09SRDA7
Cit9OworCit1bmlmb3JtIGZsb2F0NCBoYWxmUGl4ZWxTaXplIDogYzA7CisKKy8vIFN0YW5kYXJk
IFZlcnRleCBTaGFkZXIKKy8vIElucHV0IDAgaXMgdGhlIGhvbW9nZW5vdXMgcG9zaXRpb24uCisv
LyBPdXRwdXRzIHRoZSBob21vZ2Vub3VzIHBvc2l0aW9uIGFzLWlzLgorLy8gT3V0cHV0cyBhIHRl
eCBjb29yZCB3aXRoICgwLDApIGluIHRoZSB1cHBlci1sZWZ0IGNvcm5lciBvZiB0aGUgc2NyZWVu
IGFuZCAoMSwxKSBpbiB0aGUgYm90dG9tIHJpZ2h0LgorLy8gQzAuWCBtdXN0IGJlIG5lZ2F0aXZl
IGhhbGYtcGl4ZWwgd2lkdGgsIEMwLlkgbXVzdCBiZSBoYWxmLXBpeGVsIGhlaWdodC4gQzAuWlcg
bXVzdCBiZSAwLgorVlNfT1VUUFVUIHN0YW5kYXJkdnMoaW4gZmxvYXQ0IHBvc2l0aW9uIDogUE9T
SVRJT04pCit7CisgICAgVlNfT1VUUFVUIE91dDsKKworICAgIE91dC5wb3NpdGlvbiA9IHBvc2l0
aW9uICsgaGFsZlBpeGVsU2l6ZTsKKyAgICBPdXQudGV4Y29vcmQgPSBwb3NpdGlvbiAqIGZsb2F0
NCgwLjUsIC0wLjUsIDEuMCwgMS4wKSArIGZsb2F0NCgwLjUsIDAuNSwgMCwgMCk7CisKKyAgICBy
ZXR1cm4gT3V0OworfTsKKworLy8gRmxpcCBZIFZlcnRleCBTaGFkZXIKKy8vIElucHV0IDAgaXMg
dGhlIGhvbW9nZW5vdXMgcG9zaXRpb24uCisvLyBPdXRwdXRzIHRoZSBob21vZ2Vub3VzIHBvc2l0
aW9uIGFzLWlzLgorLy8gT3V0cHV0cyBhIHRleCBjb29yZCB3aXRoICgwLDEpIGluIHRoZSB1cHBl
ci1sZWZ0IGNvcm5lciBvZiB0aGUgc2NyZWVuIGFuZCAoMSwwKSBpbiB0aGUgYm90dG9tIHJpZ2h0
LgorLy8gQzAuWFkgbXVzdCBiZSB0aGUgaGFsZi1waXhlbCB3aWR0aCBhbmQgaGVpZ2h0LiBDMC5a
VyBtdXN0IGJlIDAuCitWU19PVVRQVVQgZmxpcHl2cyhpbiBmbG9hdDQgcG9zaXRpb24gOiBQT1NJ
VElPTikKK3sKKyAgICBWU19PVVRQVVQgT3V0OworCisgICAgT3V0LnBvc2l0aW9uID0gcG9zaXRp
b24gKyBoYWxmUGl4ZWxTaXplOworICAgIE91dC50ZXhjb29yZCA9IHBvc2l0aW9uICogZmxvYXQ0
KDAuNSwgMC41LCAxLjAsIDEuMCkgKyBmbG9hdDQoMC41LCAwLjUsIDAsIDApOworCisgICAgcmV0
dXJuIE91dDsKK307CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL3NoYWRlcnMvQ2xlYXIxMS5obHNsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9DbGVhcjExLmhsc2wJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL3NoYWRlcnMvQ2xlYXIxMS5obHNsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBA
Cit2b2lkIFZTX0NsZWFyKCBpbiBmbG9hdDMgIGluUG9zaXRpb24gOiAgICBQT1NJVElPTiwgIGlu
IGZsb2F0NCAgaW5Db2xvciA6IENPTE9SLAorICAgICAgICAgICAgICBvdXQgZmxvYXQ0IG91dFBv
c2l0aW9uIDogU1ZfUE9TSVRJT04sIG91dCBmbG9hdDQgb3V0Q29sb3IgOiBDT0xPUikKK3sKKyAg
ICBvdXRQb3NpdGlvbiA9IGZsb2F0NChpblBvc2l0aW9uLCAxLjBmKTsKKyAgICBvdXRDb2xvciA9
IGluQ29sb3I7Cit9CisKKy8vIEFzc3VtZSB3ZSBhcmUgaW4gU000Kywgd2hpY2ggaGFzIDggY29s
b3Igb3V0cHV0cworc3RydWN0IFBTX091dHB1dE11bHRpcGxlCit7CisJZmxvYXQ0IGNvbG9yMCA6
IFNWX1RBUkdFVDA7CisJZmxvYXQ0IGNvbG9yMSA6IFNWX1RBUkdFVDE7CisJZmxvYXQ0IGNvbG9y
MiA6IFNWX1RBUkdFVDI7CisJZmxvYXQ0IGNvbG9yMyA6IFNWX1RBUkdFVDM7CisJZmxvYXQ0IGNv
bG9yNCA6IFNWX1RBUkdFVDQ7CisJZmxvYXQ0IGNvbG9yNSA6IFNWX1RBUkdFVDU7CisJZmxvYXQ0
IGNvbG9yNiA6IFNWX1RBUkdFVDY7CisJZmxvYXQ0IGNvbG9yNyA6IFNWX1RBUkdFVDc7Cit9Owor
CitQU19PdXRwdXRNdWx0aXBsZSBQU19DbGVhck11bHRpcGxlKGluIGZsb2F0NCBpblBvc2l0aW9u
IDogU1ZfUE9TSVRJT04sIGluIGZsb2F0NCBpbkNvbG9yIDogQ09MT1IpCit7CisJUFNfT3V0cHV0
TXVsdGlwbGUgb3V0Q29sb3I7CisJb3V0Q29sb3IuY29sb3IwID0gaW5Db2xvcjsKKwlvdXRDb2xv
ci5jb2xvcjEgPSBpbkNvbG9yOworCW91dENvbG9yLmNvbG9yMiA9IGluQ29sb3I7CisJb3V0Q29s
b3IuY29sb3IzID0gaW5Db2xvcjsKKwlvdXRDb2xvci5jb2xvcjQgPSBpbkNvbG9yOworCW91dENv
bG9yLmNvbG9yNSA9IGluQ29sb3I7CisJb3V0Q29sb3IuY29sb3I2ID0gaW5Db2xvcjsKKwlvdXRD
b2xvci5jb2xvcjcgPSBpbkNvbG9yOworCXJldHVybiBvdXRDb2xvcjsKK30KKworZmxvYXQ0IFBT
X0NsZWFyU2luZ2xlKGluIGZsb2F0NCBpblBvc2l0aW9uIDogU1ZfUG9zaXRpb24sIGluIGZsb2F0
NCBpbkNvbG9yIDogQ09MT1IpIDogU1ZfVGFyZ2V0MAoreworCXJldHVybiBpbkNvbG9yOworfQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFk
ZXJzL1Bhc3N0aHJvdWdoMTEuaGxzbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvUGFzc3Rocm91Z2gxMS5obHNsCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9zaGFkZXJzL1Bhc3N0aHJvdWdoMTEuaGxzbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
OSBAQAorVGV4dHVyZTJEIFRleHR1cmUgOiByZWdpc3Rlcih0MCk7CitTYW1wbGVyU3RhdGUgU2Ft
cGxlciA6IHJlZ2lzdGVyKHMwKTsKKwordm9pZCBWU19QYXNzdGhyb3VnaCggaW4gZmxvYXQyICBp
blBvc2l0aW9uIDogICAgUE9TSVRJT04sICBpbiBmbG9hdDIgIGluVGV4Q29vcmQgOiBURVhDT09S
RDAsCisgICAgICAgICAgICAgICAgICAgIG91dCBmbG9hdDQgb3V0UG9zaXRpb24gOiBTVl9QT1NJ
VElPTiwgb3V0IGZsb2F0MiBvdXRUZXhDb29yZCA6IFRFWENPT1JEMCkKK3sKKyAgICBvdXRQb3Np
dGlvbiA9IGZsb2F0NChpblBvc2l0aW9uLCAwLjBmLCAxLjBmKTsKKyAgICBvdXRUZXhDb29yZCA9
IGluVGV4Q29vcmQ7Cit9CisKK2Zsb2F0NCBQU19QYXNzdGhyb3VnaFJHQkEoaW4gZmxvYXQ0IGlu
UG9zaXRpb24gOiBTVl9QT1NJVElPTiwgaW4gZmxvYXQyIGluVGV4Q29vcmQgOiBURVhDT09SRDAp
IDogU1ZfVEFSR0VUMAoreworICAgIHJldHVybiBUZXh0dXJlLlNhbXBsZShTYW1wbGVyLCBpblRl
eENvb3JkKS5yZ2JhOworfQorCitmbG9hdDQgUFNfUGFzc3Rocm91Z2hSR0IoaW4gZmxvYXQ0IGlu
UG9zaXRpb24gOiBTVl9QT1NJVElPTiwgaW4gZmxvYXQyIGluVGV4Q29vcmQgOiBURVhDT09SRDAp
IDogU1ZfVEFSR0VUMAoreworICAgIHJldHVybiBmbG9hdDQoVGV4dHVyZS5TYW1wbGUoU2FtcGxl
ciwgaW5UZXhDb29yZCkucmdiLCAxLjBmKTsKK30KKworZmxvYXQ0IFBTX1Bhc3N0aHJvdWdoTHVt
KGluIGZsb2F0NCBpblBvc2l0aW9uIDogU1ZfUE9TSVRJT04sIGluIGZsb2F0MiBpblRleENvb3Jk
IDogVEVYQ09PUkQwKSA6IFNWX1RBUkdFVDAKK3sKKyAgICByZXR1cm4gZmxvYXQ0KFRleHR1cmUu
U2FtcGxlKFNhbXBsZXIsIGluVGV4Q29vcmQpLnJyciwgMS4wZik7Cit9CisKK2Zsb2F0NCBQU19Q
YXNzdGhyb3VnaEx1bUFscGhhKGluIGZsb2F0NCBpblBvc2l0aW9uIDogU1ZfUE9TSVRJT04sIGlu
IGZsb2F0MiBpblRleENvb3JkIDogVEVYQ09PUkQwKSA6IFNWX1RBUkdFVDAKK3sKKyAgICByZXR1
cm4gVGV4dHVyZS5TYW1wbGUoU2FtcGxlciwgaW5UZXhDb29yZCkucnJyYTsKK30KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9nZW5l
cmF0ZV9zaGFkZXJzLmJhdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5iYXQJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3NoYWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5iYXQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQg
QEAKK0BFQ0hPIE9GRg0KK1JFTQ0KK1JFTSBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCitSRU0gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0K
K1JFTSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KK1JFTQ0KKw0KK1BBVEggJVBBVEglOyVE
WFNES19ESVIlXFV0aWxpdGllc1xiaW5ceDg2DQorDQorZnhjIC9FIHN0YW5kYXJkdnMgL1QgdnNf
Ml8wIC9GaCBjb21waWxlZC9zdGFuZGFyZHZzLmggQmxpdC52cw0KK2Z4YyAvRSBmbGlweXZzIC9U
IHZzXzJfMCAvRmggY29tcGlsZWQvZmxpcHl2cy5oIEJsaXQudnMNCitmeGMgL0UgcGFzc3Rocm91
Z2hwcyAvVCBwc18yXzAgL0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdocHMuaCBCbGl0LnBzDQorZnhj
IC9FIGx1bWluYW5jZXBzIC9UIHBzXzJfMCAvRmggY29tcGlsZWQvbHVtaW5hbmNlcHMuaCBCbGl0
LnBzDQorZnhjIC9FIGNvbXBvbmVudG1hc2twcyAvVCBwc18yXzAgL0ZoIGNvbXBpbGVkL2NvbXBv
bmVudG1hc2twcy5oIEJsaXQucHMNCisNCitmeGMgL0UgVlNfUGFzc3Rocm91Z2ggL1QgdnNfNF8w
IC9GaCBjb21waWxlZC9wYXNzdGhyb3VnaDExdnMuaCBQYXNzdGhyb3VnaDExLmhsc2wNCitmeGMg
L0UgUFNfUGFzc3Rocm91Z2hSR0JBIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hy
Z2JhMTFwcy5oIFBhc3N0aHJvdWdoMTEuaGxzbA0KK2Z4YyAvRSBQU19QYXNzdGhyb3VnaFJHQiAv
VCBwc180XzAgL0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMTFwcy5oIFBhc3N0aHJvdWdoMTEu
aGxzbA0KK2Z4YyAvRSBQU19QYXNzdGhyb3VnaEx1bSAvVCBwc180XzAgL0ZoIGNvbXBpbGVkL3Bh
c3N0aHJvdWdobHVtMTFwcy5oIFBhc3N0aHJvdWdoMTEuaGxzbA0KK2Z4YyAvRSBQU19QYXNzdGhy
b3VnaEx1bUFscGhhIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTEx
cHMuaCBQYXNzdGhyb3VnaDExLmhsc2wNCisNCitmeGMgL0UgVlNfQ2xlYXIgL1QgdnNfNF8wIC9G
aCBjb21waWxlZC9jbGVhcjExdnMuaCBDbGVhcjExLmhsc2wNCitmeGMgL0UgUFNfQ2xlYXJTaW5n
bGUgL1QgcHNfNF8wIC9GaCBjb21waWxlZC9jbGVhcnNpbmdsZTExcHMuaCBDbGVhcjExLmhsc2wN
CitmeGMgL0UgUFNfQ2xlYXJNdWx0aXBsZSAvVCBwc180XzAgL0ZoIGNvbXBpbGVkL2NsZWFybXVs
dGlwbGUxMXBzLmggQ2xlYXIxMS5obHNsDQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyMTF2cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
c2hhZGVycy9jb21waWxlZC9jbGVhcjExdnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jbGVh
cjExdnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzMgQEAKKyNpZiAwDQorLy8NCisvLyBH
ZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4z
MTExDQorLy8NCisvLw0KKy8vICAgZnhjIC9FIFZTX0NsZWFyIC9UIHZzXzRfMCAvRmggY29tcGls
ZWQvY2xlYXIxMXZzLmggQ2xlYXIxMS5obHNsDQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2ln
bmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lz
dGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0t
LSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFBPU0lUSU9OICAg
ICAgICAgICAgICAgICAwICAgeHl6ICAgICAgICAgMCAgICAgTk9ORSAgZmxvYXQgICB4eXogDQor
Ly8gQ09MT1IgICAgICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAxICAgICBOT05FICBm
bG9hdCAgIHh5encNCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5h
bWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQg
ICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0tIC0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5
encgICAgICAgIDAgICAgICBQT1MgIGZsb2F0ICAgeHl6dw0KKy8vIENPTE9SICAgICAgICAgICAg
ICAgICAgICAwICAgeHl6dyAgICAgICAgMSAgICAgTk9ORSAgZmxvYXQgICB4eXp3DQorLy8NCit2
c180XzANCitkY2xfaW5wdXQgdjAueHl6DQorZGNsX2lucHV0IHYxLnh5encNCitkY2xfb3V0cHV0
X3NpdiBvMC54eXp3LCBwb3NpdGlvbg0KK2RjbF9vdXRwdXQgbzEueHl6dw0KK21vdiBvMC54eXos
IHYwLnh5engNCittb3YgbzAudywgbCgxLjAwMDAwMCkNCittb3YgbzEueHl6dywgdjEueHl6dw0K
K3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRp
Zg0KKw0KK2NvbnN0IEJZVEUgZ19WU19DbGVhcltdID0NCit7DQorICAgICA2OCwgIDg4LCAgNjYs
ICA2NywgMTA5LCAxMzgsIA0KKyAgICAxMDUsICA4MywgIDg2LCAxOTAsICA4MywgMTI1LCANCisg
ICAgIDcyLCAxMDIsIDE5NCwgMTM2LCAgNDYsICA2OSwgDQorICAgICAxNywgMTIxLCAgIDEsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgNDgsICAgMiwgICAwLCAgIDAsICAgNSwgICAwLCANCisgICAg
ICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgIDE0MCwgICAwLCAgIDAsICAgMCwg
MjIwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDQ4LCAgIDEsICAgMCwgICAwLCANCisgICAgMTgw
LCAgIDEsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwgIDcwLCAgODAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDQsIA0KKyAgICAyNTQsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAs
ICAgMCwgICAwLCAgNzcsIDEwNSwgDQorICAgICA5OSwgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIs
IA0KKyAgICAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCANCisgICAgIDcyLCAgNzYsICA4
MywgIDc2LCAgMzIsICA4MywgDQorICAgIDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsIA0K
KyAgICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCANCisgICAgMTAxLCAxMTQsICAzMiwg
IDU3LCAgNDYsICA1MCwgDQorICAgICA1NywgIDQ2LCAgNTcsICA1MywgIDUwLCAgNDYsIA0KKyAg
ICAgNTEsICA0OSwgIDQ5LCAgNDksICAgMCwgMTcxLCANCisgICAgMTcxLCAxNzEsICA3MywgIDgz
LCAgNzEsICA3OCwgDQorICAgICA3MiwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgNywgICA3LCAgIDAs
ICAgMCwgDQorICAgICA2NSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDEsICAg
MCwgDQorICAgICAgMCwgICAwLCAgMTUsICAxNSwgICAwLCAgIDAsIA0KKyAgICAgODAsICA3OSwg
IDgzLCAgNzMsICA4NCwgIDczLCANCisgICAgIDc5LCAgNzgsICAgMCwgIDY3LCAgNzksICA3Niwg
DQorICAgICA3OSwgIDgyLCAgIDAsIDE3MSwgIDc5LCAgODMsIA0KKyAgICAgNzEsICA3OCwgIDc2
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDY4LCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAx
NSwgICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4MCwgDQorICAgICA3OSwg
IDgzLCAgNzMsICA4NCwgIDczLCAgNzksIA0KKyAgICAgNzgsICAgMCwgIDY3LCAgNzksICA3Niwg
IDc5LCANCisgICAgIDgyLCAgIDAsIDE3MSwgMTcxLCAgODMsICA3MiwgDQorICAgICA2OCwgIDgy
LCAxMjQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjQsICAgMCwgICAxLCAgIDAsICAzMSwgICAw
LCANCisgICAgICAwLCAgIDAsICA5NSwgICAwLCAgIDAsICAgMywgDQorICAgIDExNCwgIDE2LCAg
MTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDk1LCAgIDAsICAgMCwgICAzLCAN
CisgICAgMjQyLCAgMTYsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAxMDMs
ICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwMSwgICAwLCAgIDAsICAg
MywgMjQyLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAg
IDU0LCAgIDAsICAgMCwgICA1LCAxMTQsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgNzAsICAxOCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICA1NCwgICAwLCAgIDAsICAgNSwgDQorICAgIDEzMCwgIDMyLCAgMTYsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgNjQsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsIDEyOCwgIDYzLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAg
IDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICA3MCwgIDMwLCANCisgICAgIDE2LCAgIDAs
ICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2MiwgICAwLCAgIDAsICAgMSwgIDgzLCAgODQs
IA0KKyAgICAgNjUsICA4NCwgMTE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJtdWx0aXBsZTExcHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJtdWx0aXBsZTExcHMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9j
b21waWxlZC9jbGVhcm11bHRpcGxlMTFwcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5OSBA
QAorI2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVy
IENvbXBpbGVyIDkuMjkuOTUyLjMxMTENCisvLw0KKy8vDQorLy8gICBmeGMgL0UgUFNfQ2xlYXJN
dWx0aXBsZSAvVCBwc180XzAgL0ZoIGNvbXBpbGVkL2NsZWFybXVsdGlwbGUxMXBzLmgNCisvLyAg
ICBDbGVhcjExLmhsc2wNCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8N
CisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUg
Rm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAg
IDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICBmbG9hdCAgICAgICANCisvLyBDT0xPUiAgICAg
ICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHl6dw0K
Ky8vDQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAg
ICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0t
IC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAg
IFRBUkdFVCAgZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDEgICB4
eXp3ICAgICAgICAxICAgVEFSR0VUICBmbG9hdCAgIHh5encNCisvLyBTVl9UQVJHRVQgICAgICAg
ICAgICAgICAgMiAgIHh5encgICAgICAgIDIgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vIFNW
X1RBUkdFVCAgICAgICAgICAgICAgICAzICAgeHl6dyAgICAgICAgMyAgIFRBUkdFVCAgZmxvYXQg
ICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDQgICB4eXp3ICAgICAgICA0ICAg
VEFSR0VUICBmbG9hdCAgIHh5encNCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgNSAgIHh5
encgICAgICAgIDUgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAg
ICAgICAgICA2ICAgeHl6dyAgICAgICAgNiAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQorLy8gU1Zf
VEFSR0VUICAgICAgICAgICAgICAgIDcgICB4eXp3ICAgICAgICA3ICAgVEFSR0VUICBmbG9hdCAg
IHh5encNCisvLw0KK3BzXzRfMA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHl6dw0KK2RjbF9v
dXRwdXQgbzAueHl6dw0KK2RjbF9vdXRwdXQgbzEueHl6dw0KK2RjbF9vdXRwdXQgbzIueHl6dw0K
K2RjbF9vdXRwdXQgbzMueHl6dw0KK2RjbF9vdXRwdXQgbzQueHl6dw0KK2RjbF9vdXRwdXQgbzUu
eHl6dw0KK2RjbF9vdXRwdXQgbzYueHl6dw0KK2RjbF9vdXRwdXQgbzcueHl6dw0KK21vdiBvMC54
eXp3LCB2MS54eXp3DQorbW92IG8xLnh5encsIHYxLnh5encNCittb3YgbzIueHl6dywgdjEueHl6
dw0KK21vdiBvMy54eXp3LCB2MS54eXp3DQorbW92IG80Lnh5encsIHYxLnh5encNCittb3YgbzUu
eHl6dywgdjEueHl6dw0KK21vdiBvNi54eXp3LCB2MS54eXp3DQorbW92IG83Lnh5encsIHYxLnh5
encNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisj
ZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfQ2xlYXJNdWx0aXBsZVtdID0NCit7DQorICAgICA2
OCwgIDg4LCAgNjYsICA2NywgMTQ2LCAyNDYsIA0KKyAgICAyMzYsIDI0MCwgIDUwLCAgNDAsICA4
NywgIDU1LCANCisgICAgIDczLCAxNDAsIDI1MSwgMjAwLCAgIDgsICAyMiwgDQorICAgIDE3Mywg
MTE3LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODgsICAgMywgICAwLCAgIDAsICAgNSwg
ICAwLCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgIDE0MCwgICAw
LCAgIDAsICAgMCwgMjI0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTg4LCAgIDEsICAgMCwgICAw
LCANCisgICAgMjIwLCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwgIDcwLCAg
ODAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCANCisg
ICAgIDI4LCAgIDAsICAgMCwgICAwLCAgNzcsIDEwNSwgDQorICAgICA5OSwgMTE0LCAxMTEsIDEx
NSwgMTExLCAxMDIsIA0KKyAgICAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCANCisgICAg
IDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgDQorICAgIDEwNCwgIDk3LCAxMDAsIDEwMSwg
MTE0LCAgMzIsIA0KKyAgICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCANCisgICAgMTAx
LCAxMTQsICAzMiwgIDU3LCAgNDYsICA1MCwgDQorICAgICA1NywgIDQ2LCAgNTcsICA1MywgIDUw
LCAgNDYsIA0KKyAgICAgNTEsICA0OSwgIDQ5LCAgNDksICAgMCwgMTcxLCANCisgICAgMTcxLCAx
NzEsICA3MywgIDgzLCAgNzEsICA3OCwgDQorICAgICA3NiwgICAwLCAgIDAsICAgMCwgICAyLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAx
NSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAxNSwgICAwLCAgIDAsIA0KKyAg
ICAgODMsICA4NiwgIDk1LCAgODAsICA3OSwgIDgzLCANCisgICAgIDczLCAgODQsICA3MywgIDc5
LCAgNzgsICAgMCwgDQorICAgICA2NywgIDc5LCAgNzYsICA3OSwgIDgyLCAgIDAsIA0KKyAgICAx
NzEsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCANCisgICAgMjEyLCAgIDAsICAgMCwgICAwLCAg
IDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgMjAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwg
ICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwg
DQorICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMCwgICAwLCAg
IDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMywgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAs
ICAgMCwgICAwLCANCisgICAgMjAwLCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAg
NCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgIDIwMCwg
ICAwLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAw
LCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMCwgICAwLCAgIDAsICAgNiwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAg
IDAsICAgMCwgICA2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCAN
CisgICAgMjAwLCAgIDAsICAgMCwgICAwLCAgIDcsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgNywgICAwLCANCisg
ICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4
NCwgIDY1LCAgODIsIA0KKyAgICAgNzEsICA2OSwgIDg0LCAgIDAsIDE3MSwgMTcxLCANCisgICAg
IDgzLCAgNzIsICA2OCwgIDgyLCAgMjQsICAgMSwgDQorICAgICAgMCwgICAwLCAgNjQsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgNzAsICAgMCwgICAwLCAgIDAsICA5OCwgIDE2LCANCisgICAgICAw
LCAgIDMsIDI0MiwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAx
LCAgIDAsIA0KKyAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAg
IDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMs
IDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAs
IA0KKyAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAzLCAgIDAsICAg
MCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0K
KyAgICAgIDQsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0Miwg
IDMyLCAgMTYsICAgMCwgDQorICAgICAgNSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAg
ICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICA2LCAgIDAsICAgMCwgICAw
LCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAg
IDcsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDUsIDI0MiwgIDMyLCAg
MTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgMzAsIA0KKyAgICAgMTYs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA1LCAyNDIs
ICAzMiwgDQorICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAz
MCwgIDE2LCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAg
NSwgDQorICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDcwLCAgMzAsICAxNiwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwg
DQorICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAw
LCAgIDAsICA3MCwgIDMwLCANCisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA1NCwgICAwLCAgIDAsICAgNSwgMjQyLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICA0LCAg
IDAsICAgMCwgICAwLCANCisgICAgIDcwLCAgMzAsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDUsIA0KKyAgICAyNDIsICAzMiwgIDE2LCAgIDAs
ICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgIDMwLCAgMTYsICAgMCwgDQorICAgICAg
MSwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMjQyLCAgMzIsICAx
NiwgICAwLCANCisgICAgICA2LCAgIDAsICAgMCwgICAwLCAgNzAsICAzMCwgDQorICAgICAxNiwg
ICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDI0Miwg
IDMyLCANCisgICAgIDE2LCAgIDAsICAgNywgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgIDMw
LCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDYyLCAgIDAsICAgMCwgICAx
LCANCisgICAgIDgzLCAgODQsICA2NSwgIDg0LCAxMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDksICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgOSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jbGVhcnNpbmds
ZTExcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW5nbGUxMXBzLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3No
YWRlcnMvY29tcGlsZWQvY2xlYXJzaW5nbGUxMXBzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTEzIEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBT
aGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KKy8vDQorLy8NCisvLyAgIGZ4YyAvRSBQU19D
bGVhclNpbmdsZSAvVCBwc180XzAgL0ZoIGNvbXBpbGVkL2NsZWFyc2luZ2xlMTFwcy5oDQorLy8g
ICAgQ2xlYXIxMS5obHNsDQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0KKy8v
DQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVl
IEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0t
LS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1Bvc2l0aW9uICAgICAgICAgICAg
ICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgZmxvYXQgICAgICAgDQorLy8gQ09MT1IgICAg
ICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5encN
CisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAg
ICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0t
LSAtLS0tLS0NCisvLyBTVl9UYXJnZXQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAg
ICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vDQorcHNfNF8wDQorZGNsX2lucHV0X3BzIGxpbmVh
ciB2MS54eXp3DQorZGNsX291dHB1dCBvMC54eXp3DQorbW92IG8wLnh5encsIHYxLnh5encNCity
ZXQgDQorLy8gQXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYN
CisNCitjb25zdCBCWVRFIGdfUFNfQ2xlYXJTaW5nbGVbXSA9DQorew0KKyAgICAgNjgsICA4OCwg
IDY2LCAgNjcsICAxMSwgIDQ5LCANCisgICAgMjIwLCAxNTcsICAzNSwgMTA2LCAxNzUsIDE2MSwg
DQorICAgIDE4MCwgMTc4LCAxNDcsIDE1MCwgMTM0LCAxNjIsIA0KKyAgICAyMjIsICA3OSwgICAx
LCAgIDAsICAgMCwgICAwLCANCisgICAgMjA4LCAgIDEsICAgMCwgICAwLCAgIDUsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNDAsICAgMCwgICAwLCAg
IDAsIDIyNCwgICAwLCANCisgICAgICAwLCAgIDAsICAyMCwgICAxLCAgIDAsICAgMCwgDQorICAg
ICA4NCwgICAxLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgIDgwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAg
MCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICAyOCwg
ICAwLCAgIDAsICAgMCwgIDc3LCAxMDUsIA0KKyAgICAgOTksIDExNCwgMTExLCAxMTUsIDExMSwg
MTAyLCANCisgICAgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgDQorICAgICA3MiwgIDc2
LCAgODMsICA3NiwgIDMyLCAgODMsIA0KKyAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMy
LCANCisgICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgDQorICAgIDEwMSwgMTE0LCAg
MzIsICA1NywgIDQ2LCAgNTAsIA0KKyAgICAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgIDQ2LCAN
CisgICAgIDUxLCAgNDksICA0OSwgIDQ5LCAgIDAsIDE3MSwgDQorICAgIDE3MSwgMTcxLCAgNzMs
ICA4MywgIDcxLCAgNzgsIA0KKyAgICAgNzYsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NiwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgNjgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgMTUsICAgMCwgICAwLCANCisgICAgIDgzLCAg
ODYsICA5NSwgIDgwLCAxMTEsIDExNSwgDQorICAgIDEwNSwgMTE2LCAxMDUsIDExMSwgMTEwLCAg
IDAsIA0KKyAgICAgNjcsICA3OSwgIDc2LCAgNzksICA4MiwgICAwLCANCisgICAgMTcxLCAxNzEs
ICA3OSwgIDgzLCAgNzEsICA3OCwgDQorICAgICA0NCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDMyLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwg
ICAwLCAgIDAsICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4NCwgIDk3LCAxMTQsIA0KKyAg
ICAxMDMsIDEwMSwgMTE2LCAgIDAsIDE3MSwgMTcxLCANCisgICAgIDgzLCAgNzIsICA2OCwgIDgy
LCAgNTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
MTQsICAgMCwgICAwLCAgIDAsICA5OCwgIDE2LCANCisgICAgICAwLCAgIDMsIDI0MiwgIDE2LCAg
MTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAgICAgIDAs
ICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQs
ICAgMCwgDQorICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICA3MCwgIDMwLCANCisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgDQorICAgICA2MiwgICAwLCAgIDAsICAgMSwgIDgzLCAgODQsIA0KKyAgICAgNjUsICA4NCwg
MTE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwDQor
fTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50bWFza3BzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVk
L2NvbXBvbmVudG1hc2twcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2tw
cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJh
dGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0K
Ky8vDQorLy8gICBmeGMgL0UgY29tcG9uZW50bWFza3BzIC9UIHBzXzJfMCAvRmggY29tcGlsZWQv
Y29tcG9uZW50bWFza3BzLmggQmxpdC5wcw0KKy8vDQorLy8NCisvLyBQYXJhbWV0ZXJzOg0KKy8v
DQorLy8gICBmbG9hdDQgbW9kZTsNCisvLyAgIHNhbXBsZXIyRCB0ZXg7DQorLy8NCisvLw0KKy8v
IFJlZ2lzdGVyczoNCisvLw0KKy8vICAgTmFtZSAgICAgICAgIFJlZyAgIFNpemUNCisvLyAgIC0t
LS0tLS0tLS0tLSAtLS0tLSAtLS0tDQorLy8gICBtb2RlICAgICAgICAgYzAgICAgICAgMQ0KKy8v
ICAgdGV4ICAgICAgICAgIHMwICAgICAgIDENCisvLw0KKw0KKyAgICBwc18yXzANCisgICAgZGNs
IHQwLnh5DQorICAgIGRjbF8yZCBzMA0KKyAgICB0ZXhsZCByMCwgdDAsIHMwDQorICAgIG11bCBy
MS54eXosIHIwLCBjMC54DQorICAgIG1hZCByMS53LCByMC53LCBjMC56LCBjMC53DQorICAgIG1v
diBvQzAsIHIxDQorDQorLy8gYXBwcm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQg
KDEgdGV4dHVyZSwgMyBhcml0aG1ldGljKQ0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19wczIw
X2NvbXBvbmVudG1hc2twc1tdID0NCit7DQorICAgICAgMCwgICAyLCAyNTUsIDI1NSwgMjU0LCAy
NTUsIA0KKyAgICAgNDMsICAgMCwgIDY3LCAgODQsICA2NSwgIDY2LCANCisgICAgIDI4LCAgIDAs
ICAgMCwgICAwLCAxMTksICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1LCAyNTUs
IA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAyOCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsICAgMCwgDQorICAgIDExMiwgICAwLCAgIDAsICAgMCwgIDY4LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwg
ICAwLCAgNzYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgOTIsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgDQorICAgICA5NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgMTA5LCAxMTEsIDEwMCwgMTAxLCANCisgICAgICAwLCAxNzEsIDE3MSwgMTcxLCAg
IDEsICAgMCwgDQorICAgICAgMywgICAwLCAgIDEsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDExNiwgMTAxLCAxMjAs
ICAgMCwgDQorICAgICAgNCwgICAwLCAgMTIsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDEsICAg
MCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAxMTIsIDEx
NSwgDQorICAgICA5NSwgIDUwLCAgOTUsICA0OCwgICAwLCAgNzcsIA0KKyAgICAxMDUsICA5OSwg
MTE0LCAxMTEsIDExNSwgMTExLCANCisgICAgMTAyLCAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwg
DQorICAgICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsIA0KKyAgICAgODMsIDEwNCwgIDk3
LCAxMDAsIDEwMSwgMTE0LCANCisgICAgIDMyLCAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgDQor
ICAgIDEwOCwgMTAxLCAxMTQsICAzMiwgIDU3LCAgNDYsIA0KKyAgICAgNTAsICA1NywgIDQ2LCAg
NTcsICA1MywgIDUwLCANCisgICAgIDQ2LCAgNTEsICA0OSwgIDQ5LCAgNDksICAgMCwgDQorICAg
ICAzMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsIA0KKyAgICAgIDAsIDEyOCwgICAwLCAgIDAs
ICAgMywgMTc2LCANCisgICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgDQorICAgICAg
MCwgMTQ0LCAgIDAsICAgOCwgIDE1LCAxNjAsIA0KKyAgICAgNjYsICAgMCwgICAwLCAgIDMsICAg
MCwgICAwLCANCisgICAgIDE1LCAxMjgsICAgMCwgICAwLCAyMjgsIDE3NiwgDQorICAgICAgMCwg
ICA4LCAyMjgsIDE2MCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMywgICAxLCAgIDAsICAgNywg
MTI4LCANCisgICAgICAwLCAgIDAsIDIyOCwgMTI4LCAgIDAsICAgMCwgDQorICAgICAgMCwgMTYw
LCAgIDQsICAgMCwgICAwLCAgIDQsIA0KKyAgICAgIDEsICAgMCwgICA4LCAxMjgsICAgMCwgICAw
LCANCisgICAgMjU1LCAxMjgsICAgMCwgICAwLCAxNzAsIDE2MCwgDQorICAgICAgMCwgICAwLCAy
NTUsIDE2MCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAwLCAgIDgsICAxNSwgMTI4LCAN
CisgICAgICAxLCAgIDAsIDIyOCwgMTI4LCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAwDQorfTsN
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3No
YWRlcnMvY29tcGlsZWQvZmxpcHl2cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9mbGlweXZzLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvZmxpcHl2cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY5IEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBT
aGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KKy8vDQorLy8gICBmeGMgL0UgZmxpcHl2cyAv
VCB2c18yXzAgL0ZoIGNvbXBpbGVkL2ZsaXB5dnMuaCBCbGl0LnZzDQorLy8NCisvLw0KKy8vIFBh
cmFtZXRlcnM6DQorLy8NCisvLyAgIGZsb2F0NCBoYWxmUGl4ZWxTaXplOw0KKy8vDQorLy8NCisv
LyBSZWdpc3RlcnM6DQorLy8NCisvLyAgIE5hbWUgICAgICAgICAgUmVnICAgU2l6ZQ0KKy8vICAg
LS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tDQorLy8gICBoYWxmUGl4ZWxTaXplIGMwICAgICAgIDEN
CisvLw0KKw0KKyAgICB2c18yXzANCisgICAgZGVmIGMxLCAwLjUsIDEsIDAsIDANCisgICAgZGNs
X3Bvc2l0aW9uIHYwDQorICAgIGFkZCBvUG9zLCB2MCwgYzANCisgICAgbWFkIG9UMCwgdjAsIGMx
Lnh4eXksIGMxLnh4enoNCisNCisvLyBhcHByb3hpbWF0ZWx5IDIgaW5zdHJ1Y3Rpb24gc2xvdHMg
dXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ192czIwX2ZsaXB5dnNbXSA9DQorew0KKyAg
ICAgIDAsICAgMiwgMjU0LCAyNTUsIDI1NCwgMjU1LCANCisgICAgIDM1LCAgIDAsICA2NywgIDg0
LCAgNjUsICA2NiwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgIDg3LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDIsIDI1NCwgMjU1LCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAg
MjgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgODAs
ICAgMCwgICAwLCAgIDAsICA0OCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDY0LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgMTA0LCAgOTcsIDEwOCwgMTAyLCAgODAsIDEw
NSwgDQorICAgIDEyMCwgMTAxLCAxMDgsICA4MywgMTA1LCAxMjIsIA0KKyAgICAxMDEsICAgMCwg
MTcxLCAxNzEsICAgMSwgICAwLCANCisgICAgICAzLCAgIDAsICAgMSwgICAwLCAgIDQsICAgMCwg
DQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTE4
LCAxMTUsICA5NSwgIDUwLCANCisgICAgIDk1LCAgNDgsICAgMCwgIDc3LCAxMDUsICA5OSwgDQor
ICAgIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCAxMTYsIA0KKyAgICAgMzIsICA0MCwgIDgyLCAg
NDEsICAzMiwgIDcyLCANCisgICAgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwgDQorICAg
ICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCAgNjcsIA0KKyAgICAxMTEsIDEwOSwgMTEyLCAxMDUs
IDEwOCwgMTAxLCANCisgICAgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTAsICA1NywgDQorICAgICA0
NiwgIDU3LCAgNTMsICA1MCwgIDQ2LCAgNTEsIA0KKyAgICAgNDksICA0OSwgIDQ5LCAgIDAsICA4
MSwgICAwLCANCisgICAgICAwLCAgIDUsICAgMSwgICAwLCAgMTUsIDE2MCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICA2MywgICAwLCAgIDAsIA0KKyAgICAxMjgsICA2MywgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMzEsICAgMCwgDQorICAgICAgMCwgICAy
LCAgIDAsICAgMCwgICAwLCAxMjgsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAxNDQsICAgMiwgICAw
LCANCisgICAgICAwLCAgIDMsICAgMCwgICAwLCAgMTUsIDE5MiwgDQorICAgICAgMCwgICAwLCAy
MjgsIDE0NCwgICAwLCAgIDAsIA0KKyAgICAyMjgsIDE2MCwgICA0LCAgIDAsICAgMCwgICA0LCAN
CisgICAgICAwLCAgIDAsICAxNSwgMjI0LCAgIDAsICAgMCwgDQorICAgIDIyOCwgMTQ0LCAgIDEs
ICAgMCwgIDgwLCAxNjAsIA0KKyAgICAgIDEsICAgMCwgMTYwLCAxNjAsIDI1NSwgMjU1LCANCisg
ICAgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVy
cy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2x1bWluYW5j
ZXBzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKyNpZiAwDQorLy8NCisvLyBHZW5l
cmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTEx
DQorLy8NCisvLyAgIGZ4YyAvRSBsdW1pbmFuY2VwcyAvVCBwc18yXzAgL0ZoIGNvbXBpbGVkL2x1
bWluYW5jZXBzLmggQmxpdC5wcw0KKy8vDQorLy8NCisvLyBQYXJhbWV0ZXJzOg0KKy8vDQorLy8g
ICBmbG9hdDQgbW9kZTsNCisvLyAgIHNhbXBsZXIyRCB0ZXg7DQorLy8NCisvLw0KKy8vIFJlZ2lz
dGVyczoNCisvLw0KKy8vICAgTmFtZSAgICAgICAgIFJlZyAgIFNpemUNCisvLyAgIC0tLS0tLS0t
LS0tLSAtLS0tLSAtLS0tDQorLy8gICBtb2RlICAgICAgICAgYzAgICAgICAgMQ0KKy8vICAgdGV4
ICAgICAgICAgIHMwICAgICAgIDENCisvLw0KKw0KKyAgICBwc18yXzANCisgICAgZGNsIHQwLnh5
DQorICAgIGRjbF8yZCBzMA0KKyAgICB0ZXhsZCByMCwgdDAsIHMwDQorICAgIG1hZCByMS53LCBy
MC53LCBjMC54LCBjMC55DQorICAgIG1vdiByMS54eXosIHIwLngNCisgICAgbW92IG9DMCwgcjEN
CisNCisvLyBhcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZCAoMSB0ZXh0dXJl
LCAzIGFyaXRobWV0aWMpDQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX3BzMjBfbHVtaW5hbmNl
cHNbXSA9DQorew0KKyAgICAgIDAsICAgMiwgMjU1LCAyNTUsIDI1NCwgMjU1LCANCisgICAgIDQz
LCAgIDAsICA2NywgIDg0LCAgNjUsICA2NiwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgMTE5
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NSwgMjU1LCANCisgICAgICAyLCAg
IDAsICAgMCwgICAwLCAgMjgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsIA0KKyAgICAxMTIsICAgMCwgICAwLCAgIDAsICA2OCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDc2LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDkyLCAgIDAsICAg
MCwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgOTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDEwOSwg
MTExLCAxMDAsIDEwMSwgDQorICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgICAxLCAgIDAsIA0KKyAg
ICAgIDMsICAgMCwgICAxLCAgIDAsICAgNCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAxMTYsIDEwMSwgMTIwLCAgIDAsIA0KKyAgICAg
IDQsICAgMCwgIDEyLCAgIDAsICAgMSwgICAwLCANCisgICAgICAxLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTEyLCAxMTUsIA0KKyAgICAgOTUs
ICA1MCwgIDk1LCAgNDgsICAgMCwgIDc3LCANCisgICAgMTA1LCAgOTksIDExNCwgMTExLCAxMTUs
IDExMSwgDQorICAgIDEwMiwgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsIA0KKyAgICAgMzIsICA3
MiwgIDc2LCAgODMsICA3NiwgIDMyLCANCisgICAgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIDEx
NCwgDQorICAgICAzMiwgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIA0KKyAgICAxMDgsIDEwMSwg
MTE0LCAgMzIsICA1NywgIDQ2LCANCisgICAgIDUwLCAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwg
DQorICAgICA0NiwgIDUxLCAgNDksICA0OSwgIDQ5LCAgIDAsIA0KKyAgICAgMzEsICAgMCwgICAw
LCAgIDIsICAgMCwgICAwLCANCisgICAgICAwLCAxMjgsICAgMCwgICAwLCAgIDMsIDE3NiwgDQor
ICAgICAzMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsIA0KKyAgICAgIDAsIDE0NCwgICAwLCAg
IDgsICAxNSwgMTYwLCANCisgICAgIDY2LCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgDQorICAg
ICAxNSwgMTI4LCAgIDAsICAgMCwgMjI4LCAxNzYsIA0KKyAgICAgIDAsICAgOCwgMjI4LCAxNjAs
ICAgNCwgICAwLCANCisgICAgICAwLCAgIDQsICAgMSwgICAwLCAgIDgsIDEyOCwgDQorICAgICAg
MCwgICAwLCAyNTUsIDEyOCwgICAwLCAgIDAsIA0KKyAgICAgIDAsIDE2MCwgICAwLCAgIDAsICA4
NSwgMTYwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAyLCAgIDEsICAgMCwgDQorICAgICAgNywg
MTI4LCAgIDAsICAgMCwgICAwLCAxMjgsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDIsICAgMCwg
ICA4LCANCisgICAgIDE1LCAxMjgsICAgMSwgICAwLCAyMjgsIDEyOCwgDQorICAgIDI1NSwgMjU1
LCAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdoMTF2cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hh
ZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaDExdnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9w
YXNzdGhyb3VnaDExdnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzcgQEAKKyNpZiAwDQor
Ly8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5
LjI5Ljk1Mi4zMTExDQorLy8NCisvLw0KKy8vICAgZnhjIC9FIFZTX1Bhc3N0aHJvdWdoIC9UIHZz
XzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2gxMXZzLmgNCisvLyAgICBQYXNzdGhyb3VnaDEx
Lmhsc2wNCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1l
ICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAg
VXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0gLS0tLS0tDQorLy8gUE9TSVRJT04gICAgICAgICAgICAgICAgIDAgICB4eSAg
ICAgICAgICAwICAgICBOT05FICBmbG9hdCAgIHh5ICANCisvLyBURVhDT09SRCAgICAgICAgICAg
ICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8N
CisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5k
ZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0K
Ky8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAg
ZmxvYXQgICB4eXp3DQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAg
ICAxICAgICBOT05FICBmbG9hdCAgIHh5ICANCisvLw0KK3ZzXzRfMA0KK2RjbF9pbnB1dCB2MC54
eQ0KK2RjbF9pbnB1dCB2MS54eQ0KK2RjbF9vdXRwdXRfc2l2IG8wLnh5encsIHBvc2l0aW9uDQor
ZGNsX291dHB1dCBvMS54eQ0KK21vdiBvMC54eSwgdjAueHl4eA0KK21vdiBvMC56dywgbCgwLDAs
MCwxLjAwMDAwMCkNCittb3YgbzEueHksIHYxLnh5eHgNCityZXQgDQorLy8gQXBwcm94aW1hdGVs
eSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfVlNf
UGFzc3Rocm91Z2hbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDExNywgIDc0LCAN
CisgICAgIDM0LCAgNzksIDE3NCwgMjI2LCAxNzAsICA3NCwgDQorICAgIDExMCwgIDE2LCAyMzcs
ICAxNCwgIDY3LCAxODUsIA0KKyAgICAxMTksIDE2NywgICAxLCAgIDAsICAgMCwgICAwLCANCisg
ICAgIDY4LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAxNDAsICAgMCwgICAwLCAgIDAsIDIyNCwgICAwLCANCisgICAg
ICAwLCAgIDAsICA1NiwgICAxLCAgIDAsICAgMCwgDQorICAgIDIwMCwgICAxLCAgIDAsICAgMCwg
IDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgIDgwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU0LCAy
NTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgIDc3LCAx
MDUsIA0KKyAgICAgOTksIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCANCisgICAgMTE2LCAgMzIs
ICA0MCwgIDgyLCAgNDEsICAzMiwgDQorICAgICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCAgODMs
IA0KKyAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCANCisgICAgIDY3LCAxMTEsIDEw
OSwgMTEyLCAxMDUsIDEwOCwgDQorICAgIDEwMSwgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTAsIA0K
KyAgICAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgIDQ2LCANCisgICAgIDUxLCAgNDksICA0OSwg
IDQ5LCAgIDAsIDE3MSwgDQorICAgIDE3MSwgMTcxLCAgNzMsICA4MywgIDcxLCAgNzgsIA0KKyAg
ICAgNzYsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgOCwgICAw
LCAgIDAsICAgMCwgDQorICAgICA1NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMywgICAwLCAgIDAsIA0KKyAgICAgNjUs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAzLCAgIDMsICAgMCwgICAwLCANCisgICAgIDgwLCAgNzksICA4MywgIDczLCAgODQsICA3
MywgDQorICAgICA3OSwgIDc4LCAgIDAsICA4NCwgIDY5LCAgODgsIA0KKyAgICAgNjcsICA3OSwg
IDc5LCAgODIsICA2OCwgICAwLCANCisgICAgMTcxLCAxNzEsICA3OSwgIDgzLCAgNzEsICA3OCwg
DQorICAgICA4MCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA4
LCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAg
ICA2OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDMsICAxMiwgICAwLCAgIDAsIA0KKyAgICAgODMsICA4NiwgIDk1LCAgODAsICA3
OSwgIDgzLCANCisgICAgIDczLCAgODQsICA3MywgIDc5LCAgNzgsICAgMCwgDQorICAgICA4NCwg
IDY5LCAgODgsICA2NywgIDc5LCAgNzksIA0KKyAgICAgODIsICA2OCwgICAwLCAxNzEsIDE3MSwg
MTcxLCANCisgICAgIDgzLCAgNzIsICA2OCwgIDgyLCAxMzYsICAgMCwgDQorICAgICAgMCwgICAw
LCAgNjQsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgMzQsICAgMCwgICAwLCAgIDAsICA5NSwgICAw
LCANCisgICAgICAwLCAgIDMsICA1MCwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDk1LCAgIDAsIA0KKyAgICAgIDAsICAgMywgIDUwLCAgMTYsICAxNiwgICAwLCAN
CisgICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDMsICAgMCwgDQorICAgICAgMCwgICA0LCAyNDIs
ICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisg
ICAgICAwLCAgIDAsIDEwMSwgICAwLCAgIDAsICAgMywgDQorICAgICA1MCwgIDMyLCAgMTYsICAg
MCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA1LCANCisgICAg
IDUwLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAxNiwg
IDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAw
LCAgIDgsIDE5NCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAy
LCAgNjQsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTI4LCAg
NjMsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsICA1MCwgIDMyLCANCisgICAgIDE2LCAgIDAs
ICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDYyLCAgIDAsICAgMCwgICAxLCANCisgICAgIDgzLCAgODQsICA2
NSwgIDg0LCAxMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgNCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTExcHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW0xMXBzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQv
cGFzc3Rocm91Z2hsdW0xMXBzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU1IEBACisjaWYg
MA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGls
ZXIgOS4yOS45NTIuMzExMQ0KKy8vDQorLy8NCisvLyAgIGZ4YyAvRSBQU19QYXNzdGhyb3VnaEx1
bSAvVCBwc180XzAgL0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdobHVtMTFwcy5oDQorLy8gICAgUGFz
c3Rocm91Z2gxMS5obHNsDQorLy8NCisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdzOg0KKy8vDQor
Ly8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAg
ICAgIERpbSBTbG90IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQorLy8gU2FtcGxl
ciAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXIgICAgICBOQSAgICAgICAgICBOQSAg
ICAwICAgICAgICAxDQorLy8gVGV4dHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1
cmUgIGZsb2F0NCAgICAgICAgICAyZCAgICAwICAgICAgICAxDQorLy8NCisvLw0KKy8vDQorLy8g
SW5wdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBN
YXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNW
X1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgZmxvYXQg
ICAgICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAg
ICBOT05FICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisv
Lw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1
ZSBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0t
LS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAg
ICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vDQorcHNfNF8w
DQorZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJlMmQg
KGZsb2F0LGZsb2F0LGZsb2F0LGZsb2F0KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHkN
CitkY2xfb3V0cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMQ0KK3NhbXBsZSByMC54eXp3LCB2MS54
eXh4LCB0MC54eXp3LCBzMA0KK21vdiBvMC54eXosIHIwLnh4eHgNCittb3YgbzAudywgbCgxLjAw
MDAwMCkNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQN
CisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hMdW1bXSA9DQorew0KKyAg
ICAgNjgsICA4OCwgIDY2LCAgNjcsICA5NywgIDQxLCANCisgICAgIDM3LCAxNTQsICAgMCwgMTc0
LCAxMzcsIDE1NywgDQorICAgICA3NiwgMjE5LCAyMzAsICAyNiwgMjI3LCAxNzQsIA0KKyAgICAx
ODcsICA2NiwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTI4LCAgIDIsICAgMCwgICAwLCAg
IDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMjAs
ICAgMCwgICAwLCAgIDAsICA1MiwgICAxLCANCisgICAgICAwLCAgIDAsIDEwNCwgICAxLCAgIDAs
ICAgMCwgDQorICAgICAgNCwgICAyLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3
MCwgMTYwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwg
ICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwg
DQorICAgIDEwOCwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAz
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAg
IDEwMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA1LCAgIDAs
ICAgMCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwgICAwLCAyNTUsIDI1NSwgDQorICAgIDI1
NSwgMjU1LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAx
MywgICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDk3LCAxMDksIDExMiwgDQorICAgIDEwOCwg
MTAxLCAxMTQsICAgMCwgIDg0LCAxMDEsIA0KKyAgICAxMjAsIDExNiwgMTE3LCAxMTQsIDEwMSwg
ICAwLCANCisgICAgIDc3LCAxMDUsICA5OSwgMTE0LCAxMTEsIDExNSwgDQorICAgIDExMSwgMTAy
LCAxMTYsICAzMiwgIDQwLCAgODIsIA0KKyAgICAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgIDc2
LCANCisgICAgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIDEwMSwgDQorICAgIDExNCwgIDMyLCAg
NjcsIDExMSwgMTA5LCAxMTIsIA0KKyAgICAxMDUsIDEwOCwgMTAxLCAxMTQsICAzMiwgIDU3LCAN
CisgICAgIDQ2LCAgNTAsICA1NywgIDQ2LCAgNTcsICA1MywgDQorICAgICA1MCwgIDQ2LCAgNTEs
ICA0OSwgIDQ5LCAgNDksIA0KKyAgICAgIDAsIDE3MSwgMTcxLCAxNzEsICA3MywgIDgzLCANCisg
ICAgIDcxLCAgNzgsICA4MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAg
MCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU2LCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwgICAwLCANCisgICAgICAw
LCAgIDAsICA2OCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAg
IDAsICAgMCwgICAwLCAgIDMsICAgMywgDQorICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAg
ODAsIA0KKyAgICAgNzksICA4MywgIDczLCAgODQsICA3MywgIDc5LCANCisgICAgIDc4LCAgIDAs
ICA4NCwgIDY5LCAgODgsICA2NywgDQorICAgICA3OSwgIDc5LCAgODIsICA2OCwgICAwLCAxNzEs
IA0KKyAgICAxNzEsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCANCisgICAgIDQ0LCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYsICA5NSwgIDg0
LCAgNjUsICA4MiwgDQorICAgICA3MSwgIDY5LCAgODQsICAgMCwgMTcxLCAxNzEsIA0KKyAgICAg
ODMsICA3MiwgIDY4LCAgODIsIDE0OCwgICAwLCANCisgICAgICAwLCAgIDAsICA2NCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAzNywgICAwLCAgIDAsICAgMCwgIDkwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMywgICAwLCAgOTYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgODgs
ICAyNCwgDQorICAgICAgMCwgICA0LCAgIDAsIDExMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICA4NSwgIDg1LCANCisgICAgICAwLCAgIDAsICA5OCwgIDE2LCAgIDAsICAg
MywgDQorICAgICA1MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
MTAxLCAgIDAsICAgMCwgICAzLCANCisgICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAxMDQsICAgMCwgICAwLCAgIDIsIA0KKyAgICAgIDEsICAgMCwgICAw
LCAgIDAsICA2OSwgICAwLCANCisgICAgICAwLCAgIDksIDI0MiwgICAwLCAgMTYsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgMTYsIA0KKyAgICAgMTYsICAgMCwgICAxLCAg
IDAsICAgMCwgICAwLCANCisgICAgIDcwLCAxMjYsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICA1NCwgICAwLCANCisgICAgICAwLCAgIDUsIDExNCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICA2LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMzAsICAzMiwgDQorICAgICAxNiwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICA2NCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgMTI4LCAgNjMsICA2MiwgICAwLCAgIDAsICAgMSwgDQorICAgICA4MywgIDg0
LCAgNjUsICA4NCwgMTE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA0LCAgIDAsICAgMCwgICAw
LCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAy
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hh
ZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bWFscGhhMTFwcy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE1MSBAQAorI2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIp
IEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTENCisvLw0KKy8vDQorLy8gICBmeGMg
L0UgUFNfUGFzc3Rocm91Z2hMdW1BbHBoYSAvVCBwc180XzAgL0ZoDQorLy8gICAgY29tcGlsZWQv
cGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaCBQYXNzdGhyb3VnaDExLmhsc2wNCisvLw0KKy8vDQor
Ly8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0t
LS0tIC0tLS0gLS0tLS0tLS0NCisvLyBTYW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2FtcGxlciAgICAgIE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgZmxvYXQ0ICAgICAgICAgIDJkICAgIDAg
ICAgICAgIDENCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBO
YW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0
ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0tLSAtLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4
eXp3ICAgICAgICAwICAgICAgUE9TICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAg
ICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vDQor
Ly8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAg
SW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0t
LQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdF
VCAgZmxvYXQgICB4eXp3DQorLy8NCitwc180XzANCitkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZh
dWx0DQorZGNsX3Jlc291cmNlX3RleHR1cmUyZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQw
DQorZGNsX2lucHV0X3BzIGxpbmVhciB2MS54eQ0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2RjbF90
ZW1wcyAxDQorc2FtcGxlIHIwLnh5encsIHYxLnh5eHgsIHQwLnh5encsIHMwDQorbW92IG8wLnh5
encsIHIwLnh4eHcNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSAzIGluc3RydWN0aW9uIHNsb3Rz
IHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hMdW1BbHBoYVtd
ID0NCit7DQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgMTk3LCAgNzIsIA0KKyAgICAyNTEsIDIz
NiwgIDUzLCAxMDcsIDE4MiwgMTQ2LCANCisgICAgMTk2LCAyMTksIDEzMCwgMTg3LCAxNDAsIDE1
OSwgDQorICAgIDIxMSwgMTIzLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMDgsICAgMiwg
ICAwLCAgIDAsICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwg
DQorICAgIDIyMCwgICAwLCAgIDAsICAgMCwgIDUyLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgMTA0
LCAgIDEsICAgMCwgICAwLCANCisgICAgMjQwLCAgIDEsICAgMCwgICAwLCAgODIsICA2OCwgDQor
ICAgICA2OSwgIDcwLCAxNjAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEs
ICAgMCwgICAwLCANCisgICAgMTA4LCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAwLCANCisgICAgMTAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsIDI1NSwgMjU1
LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAg
IDAsICAgMCwgIDEzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgOTcsIDEwOSwgMTEyLCAN
CisgICAgMTA4LCAxMDEsIDExNCwgICAwLCAgODQsIDEwMSwgDQorICAgIDEyMCwgMTE2LCAxMTcs
IDExNCwgMTAxLCAgIDAsIA0KKyAgICAgNzcsIDEwNSwgIDk5LCAxMTQsIDExMSwgMTE1LCANCisg
ICAgMTExLCAxMDIsIDExNiwgIDMyLCAgNDAsICA4MiwgDQorICAgICA0MSwgIDMyLCAgNzIsICA3
NiwgIDgzLCAgNzYsIA0KKyAgICAgMzIsICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCANCisgICAg
MTE0LCAgMzIsICA2NywgMTExLCAxMDksIDExMiwgDQorICAgIDEwNSwgMTA4LCAxMDEsIDExNCwg
IDMyLCAgNTcsIA0KKyAgICAgNDYsICA1MCwgIDU3LCAgNDYsICA1NywgIDUzLCANCisgICAgIDUw
LCAgNDYsICA1MSwgIDQ5LCAgNDksICA0OSwgDQorICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgIDcz
LCAgODMsIA0KKyAgICAgNzEsICA3OCwgIDgwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAg
IDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDY4LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMywgICAzLCANCisgICAgICAwLCAgIDAsICA4Mywg
IDg2LCAgOTUsICA4MCwgDQorICAgICA3OSwgIDgzLCAgNzMsICA4NCwgIDczLCAgNzksIA0KKyAg
ICAgNzgsICAgMCwgIDg0LCAgNjksICA4OCwgIDY3LCANCisgICAgIDc5LCAgNzksICA4MiwgIDY4
LCAgIDAsIDE3MSwgDQorICAgIDE3MSwgMTcxLCAgNzksICA4MywgIDcxLCAgNzgsIA0KKyAgICAg
NDQsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODMsICA4
NiwgIDk1LCAgODQsICA2NSwgIDgyLCANCisgICAgIDcxLCAgNjksICA4NCwgICAwLCAxNzEsIDE3
MSwgDQorICAgICA4MywgIDcyLCAgNjgsICA4MiwgMTI4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDY0LCAgIDAsICAgMCwgICAwLCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgOTAsICAgMCwg
DQorICAgICAgMCwgICAzLCAgIDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICA4OCwgIDI0LCANCisgICAgICAwLCAgIDQsICAgMCwgMTEyLCAgMTYsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDg1LCAgODUsIA0KKyAgICAgIDAsICAgMCwgIDk4LCAg
MTYsICAgMCwgICAzLCANCisgICAgIDUwLCAgMTYsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAg
ICAgMCwgICAwLCAxMDEsICAgMCwgICAwLCAgIDMsIA0KKyAgICAyNDIsICAzMiwgIDE2LCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDEwNCwgICAwLCAgIDAsICAgMiwgDQorICAgICAg
MSwgICAwLCAgIDAsICAgMCwgIDY5LCAgIDAsIA0KKyAgICAgIDAsICAgOSwgMjQyLCAgIDAsICAx
NiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAxNiwgDQorICAgICAxNiwg
ICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsIDEyNiwgIDE2LCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgIDk2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMjQyLCAgMzIsICAxNiwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDYsICAxMiwgDQorICAgICAxNiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjIsICAgMCwgICAwLCAgIDEsICA4MywgIDg0LCAN
CisgICAgIDY1LCAgODQsIDExNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAs
ICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3No
YWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hwcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bh
c3N0aHJvdWdocHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorI2lmIDANCisvLw0K
Ky8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjku
OTUyLjMxMTENCisvLw0KKy8vICAgZnhjIC9FIHBhc3N0aHJvdWdocHMgL1QgcHNfMl8wIC9GaCBj
b21waWxlZC9wYXNzdGhyb3VnaHBzLmggQmxpdC5wcw0KKy8vDQorLy8NCisvLyBQYXJhbWV0ZXJz
Og0KKy8vDQorLy8gICBzYW1wbGVyMkQgdGV4Ow0KKy8vDQorLy8NCisvLyBSZWdpc3RlcnM6DQor
Ly8NCisvLyAgIE5hbWUgICAgICAgICBSZWcgICBTaXplDQorLy8gICAtLS0tLS0tLS0tLS0gLS0t
LS0gLS0tLQ0KKy8vICAgdGV4ICAgICAgICAgIHMwICAgICAgIDENCisvLw0KKw0KKyAgICBwc18y
XzANCisgICAgZGNsIHQwLnh5DQorICAgIGRjbF8yZCBzMA0KKyAgICB0ZXhsZCByMCwgdDAsIHMw
DQorICAgIG1vdiBvQzAsIHIwDQorDQorLy8gYXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNs
b3RzIHVzZWQgKDEgdGV4dHVyZSwgMSBhcml0aG1ldGljKQ0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZ
VEUgZ19wczIwX3Bhc3N0aHJvdWdocHNbXSA9DQorew0KKyAgICAgIDAsICAgMiwgMjU1LCAyNTUs
IDI1NCwgMjU1LCANCisgICAgIDMyLCAgIDAsICA2NywgIDg0LCAgNjUsICA2NiwgDQorICAgICAy
OCwgICAwLCAgIDAsICAgMCwgIDc1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1
NSwgMjU1LCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjgsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgNjgsICAgMCwgICAwLCAgIDAsICA0OCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAw
LCAgIDAsICAgMCwgIDUyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgMTE2LCAxMDEsIDEyMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAxMiwgICAwLCAg
IDEsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsIDExMiwgMTE1LCAgOTUsICA1MCwgDQorICAgICA5NSwgIDQ4LCAgIDAs
ICA3NywgMTA1LCAgOTksIA0KKyAgICAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCANCisg
ICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgDQorICAgICA3NiwgIDgzLCAgNzYsICAz
MiwgIDgzLCAxMDQsIA0KKyAgICAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3LCANCisgICAg
MTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgDQorICAgIDExNCwgIDMyLCAgNTcsICA0Niwg
IDUwLCAgNTcsIA0KKyAgICAgNDYsICA1NywgIDUzLCAgNTAsICA0NiwgIDUxLCANCisgICAgIDQ5
LCAgNDksICA0OSwgICAwLCAgMzEsICAgMCwgDQorICAgICAgMCwgICAyLCAgIDAsICAgMCwgICAw
LCAxMjgsIA0KKyAgICAgIDAsICAgMCwgICAzLCAxNzYsICAzMSwgICAwLCANCisgICAgICAwLCAg
IDIsICAgMCwgICAwLCAgIDAsIDE0NCwgDQorICAgICAgMCwgICA4LCAgMTUsIDE2MCwgIDY2LCAg
IDAsIA0KKyAgICAgIDAsICAgMywgICAwLCAgIDAsICAxNSwgMTI4LCANCisgICAgICAwLCAgIDAs
IDIyOCwgMTc2LCAgIDAsICAgOCwgDQorICAgIDIyOCwgMTYwLCAgIDEsICAgMCwgICAwLCAgIDIs
IA0KKyAgICAgIDAsICAgOCwgIDE1LCAxMjgsICAgMCwgICAwLCANCisgICAgMjI4LCAxMjgsIDI1
NSwgMjU1LCAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMTFwcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjExcHMuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVy
cy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjExcHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NTUgQEAKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNo
YWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQorLy8NCisvLw0KKy8vICAgZnhjIC9FIFBTX1Bh
c3N0aHJvdWdoUkdCIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IxMXBzLmgN
CisvLyAgICBQYXNzdGhyb3VnaDExLmhsc2wNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGlu
Z3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAg
Rm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0N
CisvLyBTYW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAgIE5BICAg
ICAgICAgIE5BICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGV4dHVyZSAgZmxvYXQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDENCisvLw0KKy8v
DQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAg
ICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0gLS0t
LS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAg
UE9TICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAg
ICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2ln
bmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lz
dGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0t
LSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAg
ICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQor
Ly8NCitwc180XzANCitkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0DQorZGNsX3Jlc291cmNl
X3RleHR1cmUyZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwDQorZGNsX2lucHV0X3BzIGxp
bmVhciB2MS54eQ0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2RjbF90ZW1wcyAxDQorc2FtcGxlIHIw
Lnh5encsIHYxLnh5eHgsIHQwLnh5encsIHMwDQorbW92IG8wLnh5eiwgcjAueHl6eA0KK21vdiBv
MC53LCBsKDEuMDAwMDAwKQ0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24g
c2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQltd
ID0NCit7DQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgMjUzLCAgNDUsIA0KKyAgICAgMTMsICAz
NCwgMTI1LCAxOTQsICA5NSwgMTQ5LCANCisgICAgICAxLCAgOTUsIDE5NCwgMjUyLCAxMTgsIDIy
OCwgDQorICAgIDE3OCwgMjAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMjgsICAgMiwg
ICAwLCAgIDAsICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwg
DQorICAgIDIyMCwgICAwLCAgIDAsICAgMCwgIDUyLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgMTA0
LCAgIDEsICAgMCwgICAwLCANCisgICAgICA0LCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgDQor
ICAgICA2OSwgIDcwLCAxNjAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEs
ICAgMCwgICAwLCANCisgICAgMTA4LCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAwLCANCisgICAgMTAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsIDI1NSwgMjU1
LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAg
IDAsICAgMCwgIDEzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgOTcsIDEwOSwgMTEyLCAN
CisgICAgMTA4LCAxMDEsIDExNCwgICAwLCAgODQsIDEwMSwgDQorICAgIDEyMCwgMTE2LCAxMTcs
IDExNCwgMTAxLCAgIDAsIA0KKyAgICAgNzcsIDEwNSwgIDk5LCAxMTQsIDExMSwgMTE1LCANCisg
ICAgMTExLCAxMDIsIDExNiwgIDMyLCAgNDAsICA4MiwgDQorICAgICA0MSwgIDMyLCAgNzIsICA3
NiwgIDgzLCAgNzYsIA0KKyAgICAgMzIsICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCANCisgICAg
MTE0LCAgMzIsICA2NywgMTExLCAxMDksIDExMiwgDQorICAgIDEwNSwgMTA4LCAxMDEsIDExNCwg
IDMyLCAgNTcsIA0KKyAgICAgNDYsICA1MCwgIDU3LCAgNDYsICA1NywgIDUzLCANCisgICAgIDUw
LCAgNDYsICA1MSwgIDQ5LCAgNDksICA0OSwgDQorICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgIDcz
LCAgODMsIA0KKyAgICAgNzEsICA3OCwgIDgwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAg
IDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDY4LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMywgICAzLCANCisgICAgICAwLCAgIDAsICA4Mywg
IDg2LCAgOTUsICA4MCwgDQorICAgICA3OSwgIDgzLCAgNzMsICA4NCwgIDczLCAgNzksIA0KKyAg
ICAgNzgsICAgMCwgIDg0LCAgNjksICA4OCwgIDY3LCANCisgICAgIDc5LCAgNzksICA4MiwgIDY4
LCAgIDAsIDE3MSwgDQorICAgIDE3MSwgMTcxLCAgNzksICA4MywgIDcxLCAgNzgsIA0KKyAgICAg
NDQsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODMsICA4
NiwgIDk1LCAgODQsICA2NSwgIDgyLCANCisgICAgIDcxLCAgNjksICA4NCwgICAwLCAxNzEsIDE3
MSwgDQorICAgICA4MywgIDcyLCAgNjgsICA4MiwgMTQ4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDY0LCAgIDAsICAgMCwgICAwLCANCisgICAgIDM3LCAgIDAsICAgMCwgICAwLCAgOTAsICAgMCwg
DQorICAgICAgMCwgICAzLCAgIDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICA4OCwgIDI0LCANCisgICAgICAwLCAgIDQsICAgMCwgMTEyLCAgMTYsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDg1LCAgODUsIA0KKyAgICAgIDAsICAgMCwgIDk4LCAg
MTYsICAgMCwgICAzLCANCisgICAgIDUwLCAgMTYsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAg
ICAgMCwgICAwLCAxMDEsICAgMCwgICAwLCAgIDMsIA0KKyAgICAyNDIsICAzMiwgIDE2LCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDEwNCwgICAwLCAgIDAsICAgMiwgDQorICAgICAg
MSwgICAwLCAgIDAsICAgMCwgIDY5LCAgIDAsIA0KKyAgICAgIDAsICAgOSwgMjQyLCAgIDAsICAx
NiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAxNiwgDQorICAgICAxNiwg
ICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsIDEyNiwgIDE2LCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgIDk2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMTE0LCAgMzIsICAxNiwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgDQorICAgICAxNiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDEzMCwgIDMyLCAN
CisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgIDY0LCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMjgsICA2MywgIDYyLCAgIDAsICAgMCwgICAxLCANCisg
ICAgIDgzLCAgODQsICA2NSwgIDg0LCAxMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDQsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAx
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmEx
MXBzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTExcHMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
c2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmExMXBzLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTQ0IEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikg
SExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KKy8vDQorLy8NCisvLyAgIGZ4YyAv
RSBQU19QYXNzdGhyb3VnaFJHQkEgL1QgcHNfNF8wIC9GaCBjb21waWxlZC9wYXNzdGhyb3VnaHJn
YmExMXBzLmgNCisvLyAgICBQYXNzdGhyb3VnaDExLmhsc2wNCisvLw0KKy8vDQorLy8gUmVzb3Vy
Y2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0g
LS0tLS0tLS0NCisvLyBTYW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAg
ICAgIE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dHVyZSAgZmxvYXQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDEN
CisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAg
ICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAg
ICAwICAgICAgUE9TICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAg
MCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8NCisvLyBP
dXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBN
YXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNW
X1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgZmxvYXQg
ICB4eXp3DQorLy8NCitwc180XzANCitkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0DQorZGNs
X3Jlc291cmNlX3RleHR1cmUyZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwDQorZGNsX2lu
cHV0X3BzIGxpbmVhciB2MS54eQ0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK3NhbXBsZSBvMC54eXp3
LCB2MS54eXh4LCB0MC54eXp3LCBzMA0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDIgaW5zdHJ1
Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3Vn
aFJHQkFbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDE1MiwgIDg2LCANCisgICAg
MjI1LCAxMDcsIDE1NSwgIDgzLCAyMTYsICAxMywgDQorICAgIDE1NCwgMjEyLCAxNDQsICAgNSwg
IDgyLCAgNzQsIA0KKyAgICAgOTAsICA5OCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDgw
LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAyMjAsICAgMCwgICAwLCAgIDAsICA1MiwgICAxLCANCisgICAgICAwLCAg
IDAsIDEwNCwgICAxLCAgIDAsICAgMCwgDQorICAgIDIxMiwgICAxLCAgIDAsICAgMCwgIDgyLCAg
NjgsIA0KKyAgICAgNjksICA3MCwgMTYwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAg
MCwgICAxLCAgIDAsICAgMCwgDQorICAgIDEwOCwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgDQorICAgIDEwMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICA1LCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwgICAwLCAy
NTUsIDI1NSwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAxMywgICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDk3LCAxMDks
IDExMiwgDQorICAgIDEwOCwgMTAxLCAxMTQsICAgMCwgIDg0LCAxMDEsIA0KKyAgICAxMjAsIDEx
NiwgMTE3LCAxMTQsIDEwMSwgICAwLCANCisgICAgIDc3LCAxMDUsICA5OSwgMTE0LCAxMTEsIDEx
NSwgDQorICAgIDExMSwgMTAyLCAxMTYsICAzMiwgIDQwLCAgODIsIA0KKyAgICAgNDEsICAzMiwg
IDcyLCAgNzYsICA4MywgIDc2LCANCisgICAgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIDEwMSwg
DQorICAgIDExNCwgIDMyLCAgNjcsIDExMSwgMTA5LCAxMTIsIA0KKyAgICAxMDUsIDEwOCwgMTAx
LCAxMTQsICAzMiwgIDU3LCANCisgICAgIDQ2LCAgNTAsICA1NywgIDQ2LCAgNTcsICA1MywgDQor
ICAgICA1MCwgIDQ2LCAgNTEsICA0OSwgIDQ5LCAgNDksIA0KKyAgICAgIDAsIDE3MSwgMTcxLCAx
NzEsICA3MywgIDgzLCANCisgICAgIDcxLCAgNzgsICA4MCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMiwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU2LCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAx
NSwgICAwLCANCisgICAgICAwLCAgIDAsICA2OCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMywgDQorICAgICAgMCwgICAw
LCAgODMsICA4NiwgIDk1LCAgODAsIA0KKyAgICAgNzksICA4MywgIDczLCAgODQsICA3MywgIDc5
LCANCisgICAgIDc4LCAgIDAsICA4NCwgIDY5LCAgODgsICA2NywgDQorICAgICA3OSwgIDc5LCAg
ODIsICA2OCwgICAwLCAxNzEsIA0KKyAgICAxNzEsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCAN
CisgICAgIDQ0LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAg
IDgzLCAgODYsICA5NSwgIDg0LCAgNjUsICA4MiwgDQorICAgICA3MSwgIDY5LCAgODQsICAgMCwg
MTcxLCAxNzEsIA0KKyAgICAgODMsICA3MiwgIDY4LCAgODIsIDEwMCwgICAwLCANCisgICAgICAw
LCAgIDAsICA2NCwgICAwLCAgIDAsICAgMCwgDQorICAgICAyNSwgICAwLCAgIDAsICAgMCwgIDkw
LCAgIDAsIA0KKyAgICAgIDAsICAgMywgICAwLCAgOTYsICAxNiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgODgsICAyNCwgDQorICAgICAgMCwgICA0LCAgIDAsIDExMiwgIDE2LCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4NSwgIDg1LCANCisgICAgICAwLCAgIDAs
ICA5OCwgIDE2LCAgIDAsICAgMywgDQorICAgICA1MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgMTAxLCAgIDAsICAgMCwgICAzLCANCisgICAgMjQyLCAgMzIsICAx
NiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjksICAgMCwgICAwLCAgIDksIA0K
KyAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwg
IDE2LCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDcwLCAxMjYsIA0KKyAg
ICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgOTYsICAxNiwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjIsICAgMCwgICAwLCAgIDEsIA0KKyAgICAg
ODMsICA4NCwgIDY1LCAgODQsIDExNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3N0YW5kYXJkdnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3No
YWRlcnMvY29tcGlsZWQvc3RhbmRhcmR2cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3N0YW5k
YXJkdnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorI2lmIDANCisvLw0KKy8vIEdl
bmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMx
MTENCisvLw0KKy8vICAgZnhjIC9FIHN0YW5kYXJkdnMgL1QgdnNfMl8wIC9GaCBjb21waWxlZC9z
dGFuZGFyZHZzLmggQmxpdC52cw0KKy8vDQorLy8NCisvLyBQYXJhbWV0ZXJzOg0KKy8vDQorLy8g
ICBmbG9hdDQgaGFsZlBpeGVsU2l6ZTsNCisvLw0KKy8vDQorLy8gUmVnaXN0ZXJzOg0KKy8vDQor
Ly8gICBOYW1lICAgICAgICAgIFJlZyAgIFNpemUNCisvLyAgIC0tLS0tLS0tLS0tLS0gLS0tLS0g
LS0tLQ0KKy8vICAgaGFsZlBpeGVsU2l6ZSBjMCAgICAgICAxDQorLy8NCisNCisgICAgdnNfMl8w
DQorICAgIGRlZiBjMSwgMC41LCAtMC41LCAxLCAwDQorICAgIGRjbF9wb3NpdGlvbiB2MA0KKyAg
ICBhZGQgb1BvcywgdjAsIGMwDQorICAgIG1hZCBvVDAsIHYwLCBjMS54eXp6LCBjMS54eHd3DQor
DQorLy8gYXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisN
Citjb25zdCBCWVRFIGdfdnMyMF9zdGFuZGFyZHZzW10gPQ0KK3sNCisgICAgICAwLCAgIDIsIDI1
NCwgMjU1LCAyNTQsIDI1NSwgDQorICAgICAzNSwgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIA0K
KyAgICAgMjgsICAgMCwgICAwLCAgIDAsICA4NywgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAyLCAyNTQsIDI1NSwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI4LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgIDgwLCAgIDAsICAgMCwgICAw
LCAgNDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDEsICAgMCwgICAwLCAgIDAsICA2NCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgIDEwNCwgIDk3LCAxMDgsIDEwMiwgIDgwLCAxMDUsIA0KKyAgICAxMjAs
IDEwMSwgMTA4LCAgODMsIDEwNSwgMTIyLCANCisgICAgMTAxLCAgIDAsIDE3MSwgMTcxLCAgIDEs
ICAgMCwgDQorICAgICAgMywgICAwLCAgIDEsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDEsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDExOCwgMTE1LCAgOTUsICA1
MCwgDQorICAgICA5NSwgIDQ4LCAgIDAsICA3NywgMTA1LCAgOTksIA0KKyAgICAxMTQsIDExMSwg
MTE1LCAxMTEsIDEwMiwgMTE2LCANCisgICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3Miwg
DQorICAgICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsIA0KKyAgICAgOTcsIDEwMCwgMTAx
LCAxMTQsICAzMiwgIDY3LCANCisgICAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgDQor
ICAgIDExNCwgIDMyLCAgNTcsICA0NiwgIDUwLCAgNTcsIA0KKyAgICAgNDYsICA1NywgIDUzLCAg
NTAsICA0NiwgIDUxLCANCisgICAgIDQ5LCAgNDksICA0OSwgICAwLCAgODEsICAgMCwgDQorICAg
ICAgMCwgICA1LCAgIDEsICAgMCwgIDE1LCAxNjAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgNjMs
ICAgMCwgICAwLCANCisgICAgICAwLCAxOTEsICAgMCwgICAwLCAxMjgsICA2MywgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgIDMxLCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAwLCAgIDAsICAg
MCwgMTI4LCANCisgICAgICAwLCAgIDAsICAxNSwgMTQ0LCAgIDIsICAgMCwgDQorICAgICAgMCwg
ICAzLCAgIDAsICAgMCwgIDE1LCAxOTIsIA0KKyAgICAgIDAsICAgMCwgMjI4LCAxNDQsICAgMCwg
ICAwLCANCisgICAgMjI4LCAxNjAsICAgNCwgICAwLCAgIDAsICAgNCwgDQorICAgICAgMCwgICAw
LCAgMTUsIDIyNCwgICAwLCAgIDAsIA0KKyAgICAyMjgsIDE0NCwgICAxLCAgIDAsIDE2NCwgMTYw
LCANCisgICAgICAxLCAgIDAsIDI0MCwgMTYwLCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAwDQor
fTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVy
aGFzaC9MSUNFTlNFCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL0xJQ0VOU0UJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9MSUNFTlNFCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIgQEAKKy8vIE11cm11ckhhc2gzIHdhcyB3cml0dGVuIGJ5IEF1c3Rp
biBBcHBsZWJ5LCBhbmQgaXMgcGxhY2VkIGluIHRoZSBwdWJsaWMKKy8vIGRvbWFpbi4gVGhlIGF1
dGhvciBoZXJlYnkgZGlzY2xhaW1zIGNvcHlyaWdodCB0byB0aGlzIHNvdXJjZSBjb2RlLgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJI
YXNoMy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhp
cmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzM0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gTXVybXVySGFzaDMgd2FzIHdy
aXR0ZW4gYnkgQXVzdGluIEFwcGxlYnksIGFuZCBpcyBwbGFjZWQgaW4gdGhlIHB1YmxpYw0KKy8v
IGRvbWFpbi4gVGhlIGF1dGhvciBoZXJlYnkgZGlzY2xhaW1zIGNvcHlyaWdodCB0byB0aGlzIHNv
dXJjZSBjb2RlLg0KKw0KKy8vIE5vdGUgLSBUaGUgeDg2IGFuZCB4NjQgdmVyc2lvbnMgZG8gX25v
dF8gcHJvZHVjZSB0aGUgc2FtZSByZXN1bHRzLCBhcyB0aGUNCisvLyBhbGdvcml0aG1zIGFyZSBv
cHRpbWl6ZWQgZm9yIHRoZWlyIHJlc3BlY3RpdmUgcGxhdGZvcm1zLiBZb3UgY2FuIHN0aWxsDQor
Ly8gY29tcGlsZSBhbmQgcnVuIGFueSBvZiB0aGVtIG9uIGFueSBwbGF0Zm9ybSwgYnV0IHlvdXIg
cGVyZm9ybWFuY2Ugd2l0aCB0aGUNCisvLyBub24tbmF0aXZlIHZlcnNpb24gd2lsbCBiZSBsZXNz
IHRoYW4gb3B0aW1hbC4NCisNCisjaW5jbHVkZSAiTXVybXVySGFzaDMuaCINCisNCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQorLy8gUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtYWNy
b3MNCisNCisvLyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbw0KKw0KKyNpZiBkZWZpbmVkKF9NU0Nf
VkVSKQ0KKw0KKyNkZWZpbmUgRk9SQ0VfSU5MSU5FCV9fZm9yY2VpbmxpbmUNCisNCisjaW5jbHVk
ZSA8c3RkbGliLmg+DQorDQorI2RlZmluZSBST1RMMzIoeCx5KQlfcm90bCh4LHkpDQorI2RlZmlu
ZSBST1RMNjQoeCx5KQlfcm90bDY0KHgseSkNCisNCisjZGVmaW5lIEJJR19DT05TVEFOVCh4KSAo
eCkNCisNCisvLyBPdGhlciBjb21waWxlcnMNCisNCisjZWxzZQkvLyBkZWZpbmVkKF9NU0NfVkVS
KQ0KKw0KKyNkZWZpbmUJRk9SQ0VfSU5MSU5FIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUp
KQ0KKw0KK2lubGluZSB1aW50MzJfdCByb3RsMzIgKCB1aW50MzJfdCB4LCBpbnQ4X3QgciApDQor
ew0KKyAgcmV0dXJuICh4IDw8IHIpIHwgKHggPj4gKDMyIC0gcikpOw0KK30NCisNCitpbmxpbmUg
dWludDY0X3Qgcm90bDY0ICggdWludDY0X3QgeCwgaW50OF90IHIgKQ0KK3sNCisgIHJldHVybiAo
eCA8PCByKSB8ICh4ID4+ICg2NCAtIHIpKTsNCit9DQorDQorI2RlZmluZQlST1RMMzIoeCx5KQly
b3RsMzIoeCx5KQ0KKyNkZWZpbmUgUk9UTDY0KHgseSkJcm90bDY0KHgseSkNCisNCisjZGVmaW5l
IEJJR19DT05TVEFOVCh4KSAoeCMjTExVKQ0KKw0KKyNlbmRpZiAvLyAhZGVmaW5lZChfTVNDX1ZF
UikNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQmxvY2sgcmVhZCAtIGlmIHlvdXIg
cGxhdGZvcm0gbmVlZHMgdG8gZG8gZW5kaWFuLXN3YXBwaW5nIG9yIGNhbiBvbmx5DQorLy8gaGFu
ZGxlIGFsaWduZWQgcmVhZHMsIGRvIHRoZSBjb252ZXJzaW9uIGhlcmUNCisNCitGT1JDRV9JTkxJ
TkUgdWludDMyX3QgZ2V0YmxvY2sgKCBjb25zdCB1aW50MzJfdCAqIHAsIGludCBpICkNCit7DQor
ICByZXR1cm4gcFtpXTsNCit9DQorDQorRk9SQ0VfSU5MSU5FIHVpbnQ2NF90IGdldGJsb2NrICgg
Y29uc3QgdWludDY0X3QgKiBwLCBpbnQgaSApDQorew0KKyAgcmV0dXJuIHBbaV07DQorfQ0KKw0K
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBGaW5hbGl6YXRpb24gbWl4IC0gZm9yY2UgYWxs
IGJpdHMgb2YgYSBoYXNoIGJsb2NrIHRvIGF2YWxhbmNoZQ0KKw0KK0ZPUkNFX0lOTElORSB1aW50
MzJfdCBmbWl4ICggdWludDMyX3QgaCApDQorew0KKyAgaCBePSBoID4+IDE2Ow0KKyAgaCAqPSAw
eDg1ZWJjYTZiOw0KKyAgaCBePSBoID4+IDEzOw0KKyAgaCAqPSAweGMyYjJhZTM1Ow0KKyAgaCBe
PSBoID4+IDE2Ow0KKw0KKyAgcmV0dXJuIGg7DQorfQ0KKw0KKy8vLS0tLS0tLS0tLQ0KKw0KK0ZP
UkNFX0lOTElORSB1aW50NjRfdCBmbWl4ICggdWludDY0X3QgayApDQorew0KKyAgayBePSBrID4+
IDMzOw0KKyAgayAqPSBCSUdfQ09OU1RBTlQoMHhmZjUxYWZkN2VkNTU4Y2NkKTsNCisgIGsgXj0g
ayA+PiAzMzsNCisgIGsgKj0gQklHX0NPTlNUQU5UKDB4YzRjZWI5ZmUxYTg1ZWM1Myk7DQorICBr
IF49IGsgPj4gMzM7DQorDQorICByZXR1cm4gazsNCit9DQorDQorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KKw0KK3ZvaWQgTXVybXVySGFzaDNfeDg2XzMyICggY29uc3Qgdm9pZCAqIGtleSwgaW50
IGxlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBv
dXQgKQ0KK3sNCisgIGNvbnN0IHVpbnQ4X3QgKiBkYXRhID0gKGNvbnN0IHVpbnQ4X3QqKWtleTsN
CisgIGNvbnN0IGludCBuYmxvY2tzID0gbGVuIC8gNDsNCisNCisgIHVpbnQzMl90IGgxID0gc2Vl
ZDsNCisNCisgIGNvbnN0IHVpbnQzMl90IGMxID0gMHhjYzllMmQ1MTsNCisgIGNvbnN0IHVpbnQz
Ml90IGMyID0gMHgxYjg3MzU5MzsNCisNCisgIC8vLS0tLS0tLS0tLQ0KKyAgLy8gYm9keQ0KKw0K
KyAgY29uc3QgdWludDMyX3QgKiBibG9ja3MgPSAoY29uc3QgdWludDMyX3QgKikoZGF0YSArIG5i
bG9ja3MqNCk7DQorDQorICBmb3IoaW50IGkgPSAtbmJsb2NrczsgaTsgaSsrKQ0KKyAgew0KKyAg
ICB1aW50MzJfdCBrMSA9IGdldGJsb2NrKGJsb2NrcyxpKTsNCisNCisgICAgazEgKj0gYzE7DQor
ICAgIGsxID0gUk9UTDMyKGsxLDE1KTsNCisgICAgazEgKj0gYzI7DQorICAgIA0KKyAgICBoMSBe
PSBrMTsNCisgICAgaDEgPSBST1RMMzIoaDEsMTMpOyANCisgICAgaDEgPSBoMSo1KzB4ZTY1NDZi
NjQ7DQorICB9DQorDQorICAvLy0tLS0tLS0tLS0NCisgIC8vIHRhaWwNCisNCisgIGNvbnN0IHVp
bnQ4X3QgKiB0YWlsID0gKGNvbnN0IHVpbnQ4X3QqKShkYXRhICsgbmJsb2Nrcyo0KTsNCisNCisg
IHVpbnQzMl90IGsxID0gMDsNCisNCisgIHN3aXRjaChsZW4gJiAzKQ0KKyAgew0KKyAgY2FzZSAz
OiBrMSBePSB0YWlsWzJdIDw8IDE2Ow0KKyAgY2FzZSAyOiBrMSBePSB0YWlsWzFdIDw8IDg7DQor
ICBjYXNlIDE6IGsxIF49IHRhaWxbMF07DQorICAgICAgICAgIGsxICo9IGMxOyBrMSA9IFJPVEwz
MihrMSwxNSk7IGsxICo9IGMyOyBoMSBePSBrMTsNCisgIH07DQorDQorICAvLy0tLS0tLS0tLS0N
CisgIC8vIGZpbmFsaXphdGlvbg0KKw0KKyAgaDEgXj0gbGVuOw0KKw0KKyAgaDEgPSBmbWl4KGgx
KTsNCisNCisgICoodWludDMyX3QqKW91dCA9IGgxOw0KK30gDQorDQorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KKw0KK3ZvaWQgTXVybXVySGFzaDNfeDg2XzEyOCAoIGNvbnN0IHZvaWQgKiBrZXks
IGNvbnN0IGludCBsZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2Vl
ZCwgdm9pZCAqIG91dCApDQorew0KKyAgY29uc3QgdWludDhfdCAqIGRhdGEgPSAoY29uc3QgdWlu
dDhfdCopa2V5Ow0KKyAgY29uc3QgaW50IG5ibG9ja3MgPSBsZW4gLyAxNjsNCisNCisgIHVpbnQz
Ml90IGgxID0gc2VlZDsNCisgIHVpbnQzMl90IGgyID0gc2VlZDsNCisgIHVpbnQzMl90IGgzID0g
c2VlZDsNCisgIHVpbnQzMl90IGg0ID0gc2VlZDsNCisNCisgIGNvbnN0IHVpbnQzMl90IGMxID0g
MHgyMzliOTYxYjsgDQorICBjb25zdCB1aW50MzJfdCBjMiA9IDB4YWIwZTk3ODk7DQorICBjb25z
dCB1aW50MzJfdCBjMyA9IDB4MzhiMzRhZTU7IA0KKyAgY29uc3QgdWludDMyX3QgYzQgPSAweGEx
ZTM4YjkzOw0KKw0KKyAgLy8tLS0tLS0tLS0tDQorICAvLyBib2R5DQorDQorICBjb25zdCB1aW50
MzJfdCAqIGJsb2NrcyA9IChjb25zdCB1aW50MzJfdCAqKShkYXRhICsgbmJsb2NrcyoxNik7DQor
DQorICBmb3IoaW50IGkgPSAtbmJsb2NrczsgaTsgaSsrKQ0KKyAgew0KKyAgICB1aW50MzJfdCBr
MSA9IGdldGJsb2NrKGJsb2NrcyxpKjQrMCk7DQorICAgIHVpbnQzMl90IGsyID0gZ2V0YmxvY2so
YmxvY2tzLGkqNCsxKTsNCisgICAgdWludDMyX3QgazMgPSBnZXRibG9jayhibG9ja3MsaSo0KzIp
Ow0KKyAgICB1aW50MzJfdCBrNCA9IGdldGJsb2NrKGJsb2NrcyxpKjQrMyk7DQorDQorICAgIGsx
ICo9IGMxOyBrMSAgPSBST1RMMzIoazEsMTUpOyBrMSAqPSBjMjsgaDEgXj0gazE7DQorDQorICAg
IGgxID0gUk9UTDMyKGgxLDE5KTsgaDEgKz0gaDI7IGgxID0gaDEqNSsweDU2MWNjZDFiOw0KKw0K
KyAgICBrMiAqPSBjMjsgazIgID0gUk9UTDMyKGsyLDE2KTsgazIgKj0gYzM7IGgyIF49IGsyOw0K
Kw0KKyAgICBoMiA9IFJPVEwzMihoMiwxNyk7IGgyICs9IGgzOyBoMiA9IGgyKjUrMHgwYmNhYTc0
NzsNCisNCisgICAgazMgKj0gYzM7IGszICA9IFJPVEwzMihrMywxNyk7IGszICo9IGM0OyBoMyBe
PSBrMzsNCisNCisgICAgaDMgPSBST1RMMzIoaDMsMTUpOyBoMyArPSBoNDsgaDMgPSBoMyo1KzB4
OTZjZDFjMzU7DQorDQorICAgIGs0ICo9IGM0OyBrNCAgPSBST1RMMzIoazQsMTgpOyBrNCAqPSBj
MTsgaDQgXj0gazQ7DQorDQorICAgIGg0ID0gUk9UTDMyKGg0LDEzKTsgaDQgKz0gaDE7IGg0ID0g
aDQqNSsweDMyYWMzYjE3Ow0KKyAgfQ0KKw0KKyAgLy8tLS0tLS0tLS0tDQorICAvLyB0YWlsDQor
DQorICBjb25zdCB1aW50OF90ICogdGFpbCA9IChjb25zdCB1aW50OF90KikoZGF0YSArIG5ibG9j
a3MqMTYpOw0KKw0KKyAgdWludDMyX3QgazEgPSAwOw0KKyAgdWludDMyX3QgazIgPSAwOw0KKyAg
dWludDMyX3QgazMgPSAwOw0KKyAgdWludDMyX3QgazQgPSAwOw0KKw0KKyAgc3dpdGNoKGxlbiAm
IDE1KQ0KKyAgew0KKyAgY2FzZSAxNTogazQgXj0gdGFpbFsxNF0gPDwgMTY7DQorICBjYXNlIDE0
OiBrNCBePSB0YWlsWzEzXSA8PCA4Ow0KKyAgY2FzZSAxMzogazQgXj0gdGFpbFsxMl0gPDwgMDsN
CisgICAgICAgICAgIGs0ICo9IGM0OyBrNCAgPSBST1RMMzIoazQsMTgpOyBrNCAqPSBjMTsgaDQg
Xj0gazQ7DQorDQorICBjYXNlIDEyOiBrMyBePSB0YWlsWzExXSA8PCAyNDsNCisgIGNhc2UgMTE6
IGszIF49IHRhaWxbMTBdIDw8IDE2Ow0KKyAgY2FzZSAxMDogazMgXj0gdGFpbFsgOV0gPDwgODsN
CisgIGNhc2UgIDk6IGszIF49IHRhaWxbIDhdIDw8IDA7DQorICAgICAgICAgICBrMyAqPSBjMzsg
azMgID0gUk9UTDMyKGszLDE3KTsgazMgKj0gYzQ7IGgzIF49IGszOw0KKw0KKyAgY2FzZSAgODog
azIgXj0gdGFpbFsgN10gPDwgMjQ7DQorICBjYXNlICA3OiBrMiBePSB0YWlsWyA2XSA8PCAxNjsN
CisgIGNhc2UgIDY6IGsyIF49IHRhaWxbIDVdIDw8IDg7DQorICBjYXNlICA1OiBrMiBePSB0YWls
WyA0XSA8PCAwOw0KKyAgICAgICAgICAgazIgKj0gYzI7IGsyICA9IFJPVEwzMihrMiwxNik7IGsy
ICo9IGMzOyBoMiBePSBrMjsNCisNCisgIGNhc2UgIDQ6IGsxIF49IHRhaWxbIDNdIDw8IDI0Ow0K
KyAgY2FzZSAgMzogazEgXj0gdGFpbFsgMl0gPDwgMTY7DQorICBjYXNlICAyOiBrMSBePSB0YWls
WyAxXSA8PCA4Ow0KKyAgY2FzZSAgMTogazEgXj0gdGFpbFsgMF0gPDwgMDsNCisgICAgICAgICAg
IGsxICo9IGMxOyBrMSAgPSBST1RMMzIoazEsMTUpOyBrMSAqPSBjMjsgaDEgXj0gazE7DQorICB9
Ow0KKw0KKyAgLy8tLS0tLS0tLS0tDQorICAvLyBmaW5hbGl6YXRpb24NCisNCisgIGgxIF49IGxl
bjsgaDIgXj0gbGVuOyBoMyBePSBsZW47IGg0IF49IGxlbjsNCisNCisgIGgxICs9IGgyOyBoMSAr
PSBoMzsgaDEgKz0gaDQ7DQorICBoMiArPSBoMTsgaDMgKz0gaDE7IGg0ICs9IGgxOw0KKw0KKyAg
aDEgPSBmbWl4KGgxKTsNCisgIGgyID0gZm1peChoMik7DQorICBoMyA9IGZtaXgoaDMpOw0KKyAg
aDQgPSBmbWl4KGg0KTsNCisNCisgIGgxICs9IGgyOyBoMSArPSBoMzsgaDEgKz0gaDQ7DQorICBo
MiArPSBoMTsgaDMgKz0gaDE7IGg0ICs9IGgxOw0KKw0KKyAgKCh1aW50MzJfdCopb3V0KVswXSA9
IGgxOw0KKyAgKCh1aW50MzJfdCopb3V0KVsxXSA9IGgyOw0KKyAgKCh1aW50MzJfdCopb3V0KVsy
XSA9IGgzOw0KKyAgKCh1aW50MzJfdCopb3V0KVszXSA9IGg0Ow0KK30NCisNCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQorDQordm9pZCBNdXJtdXJIYXNoM194NjRfMTI4ICggY29uc3Qgdm9pZCAq
IGtleSwgY29uc3QgaW50IGxlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50MzJfdCBzZWVkLCB2b2lkICogb3V0ICkNCit7DQorICBjb25zdCB1aW50OF90ICogZGF0YSA9
IChjb25zdCB1aW50OF90KilrZXk7DQorICBjb25zdCBpbnQgbmJsb2NrcyA9IGxlbiAvIDE2Ow0K
Kw0KKyAgdWludDY0X3QgaDEgPSBzZWVkOw0KKyAgdWludDY0X3QgaDIgPSBzZWVkOw0KKw0KKyAg
Y29uc3QgdWludDY0X3QgYzEgPSBCSUdfQ09OU1RBTlQoMHg4N2MzN2I5MTExNDI1M2Q1KTsNCisg
IGNvbnN0IHVpbnQ2NF90IGMyID0gQklHX0NPTlNUQU5UKDB4NGNmNWFkNDMyNzQ1OTM3Zik7DQor
DQorICAvLy0tLS0tLS0tLS0NCisgIC8vIGJvZHkNCisNCisgIGNvbnN0IHVpbnQ2NF90ICogYmxv
Y2tzID0gKGNvbnN0IHVpbnQ2NF90ICopKGRhdGEpOw0KKw0KKyAgZm9yKGludCBpID0gMDsgaSA8
IG5ibG9ja3M7IGkrKykNCisgIHsNCisgICAgdWludDY0X3QgazEgPSBnZXRibG9jayhibG9ja3Ms
aSoyKzApOw0KKyAgICB1aW50NjRfdCBrMiA9IGdldGJsb2NrKGJsb2NrcyxpKjIrMSk7DQorDQor
ICAgIGsxICo9IGMxOyBrMSAgPSBST1RMNjQoazEsMzEpOyBrMSAqPSBjMjsgaDEgXj0gazE7DQor
DQorICAgIGgxID0gUk9UTDY0KGgxLDI3KTsgaDEgKz0gaDI7IGgxID0gaDEqNSsweDUyZGNlNzI5
Ow0KKw0KKyAgICBrMiAqPSBjMjsgazIgID0gUk9UTDY0KGsyLDMzKTsgazIgKj0gYzE7IGgyIF49
IGsyOw0KKw0KKyAgICBoMiA9IFJPVEw2NChoMiwzMSk7IGgyICs9IGgxOyBoMiA9IGgyKjUrMHgz
ODQ5NWFiNTsNCisgIH0NCisNCisgIC8vLS0tLS0tLS0tLQ0KKyAgLy8gdGFpbA0KKw0KKyAgY29u
c3QgdWludDhfdCAqIHRhaWwgPSAoY29uc3QgdWludDhfdCopKGRhdGEgKyBuYmxvY2tzKjE2KTsN
CisNCisgIHVpbnQ2NF90IGsxID0gMDsNCisgIHVpbnQ2NF90IGsyID0gMDsNCisNCisgIHN3aXRj
aChsZW4gJiAxNSkNCisgIHsNCisgIGNhc2UgMTU6IGsyIF49IHVpbnQ2NF90KHRhaWxbMTRdKSA8
PCA0ODsNCisgIGNhc2UgMTQ6IGsyIF49IHVpbnQ2NF90KHRhaWxbMTNdKSA8PCA0MDsNCisgIGNh
c2UgMTM6IGsyIF49IHVpbnQ2NF90KHRhaWxbMTJdKSA8PCAzMjsNCisgIGNhc2UgMTI6IGsyIF49
IHVpbnQ2NF90KHRhaWxbMTFdKSA8PCAyNDsNCisgIGNhc2UgMTE6IGsyIF49IHVpbnQ2NF90KHRh
aWxbMTBdKSA8PCAxNjsNCisgIGNhc2UgMTA6IGsyIF49IHVpbnQ2NF90KHRhaWxbIDldKSA8PCA4
Ow0KKyAgY2FzZSAgOTogazIgXj0gdWludDY0X3QodGFpbFsgOF0pIDw8IDA7DQorICAgICAgICAg
ICBrMiAqPSBjMjsgazIgID0gUk9UTDY0KGsyLDMzKTsgazIgKj0gYzE7IGgyIF49IGsyOw0KKw0K
KyAgY2FzZSAgODogazEgXj0gdWludDY0X3QodGFpbFsgN10pIDw8IDU2Ow0KKyAgY2FzZSAgNzog
azEgXj0gdWludDY0X3QodGFpbFsgNl0pIDw8IDQ4Ow0KKyAgY2FzZSAgNjogazEgXj0gdWludDY0
X3QodGFpbFsgNV0pIDw8IDQwOw0KKyAgY2FzZSAgNTogazEgXj0gdWludDY0X3QodGFpbFsgNF0p
IDw8IDMyOw0KKyAgY2FzZSAgNDogazEgXj0gdWludDY0X3QodGFpbFsgM10pIDw8IDI0Ow0KKyAg
Y2FzZSAgMzogazEgXj0gdWludDY0X3QodGFpbFsgMl0pIDw8IDE2Ow0KKyAgY2FzZSAgMjogazEg
Xj0gdWludDY0X3QodGFpbFsgMV0pIDw8IDg7DQorICBjYXNlICAxOiBrMSBePSB1aW50NjRfdCh0
YWlsWyAwXSkgPDwgMDsNCisgICAgICAgICAgIGsxICo9IGMxOyBrMSAgPSBST1RMNjQoazEsMzEp
OyBrMSAqPSBjMjsgaDEgXj0gazE7DQorICB9Ow0KKw0KKyAgLy8tLS0tLS0tLS0tDQorICAvLyBm
aW5hbGl6YXRpb24NCisNCisgIGgxIF49IGxlbjsgaDIgXj0gbGVuOw0KKw0KKyAgaDEgKz0gaDI7
DQorICBoMiArPSBoMTsNCisNCisgIGgxID0gZm1peChoMSk7DQorICBoMiA9IGZtaXgoaDIpOw0K
Kw0KKyAgaDEgKz0gaDI7DQorICBoMiArPSBoMTsNCisNCisgICgodWludDY0X3QqKW91dClbMF0g
PSBoMTsNCisgICgodWludDY0X3QqKW91dClbMV0gPSBoMjsNCit9DQorDQorLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0
eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJtdXJo
YXNoL011cm11ckhhc2gzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCisvLyBNdXJtdXJIYXNoMyB3YXMgd3JpdHRlbiBieSBBdXN0aW4gQXBw
bGVieSwgYW5kIGlzIHBsYWNlZCBpbiB0aGUgcHVibGljDQorLy8gZG9tYWluLiBUaGUgYXV0aG9y
IGhlcmVieSBkaXNjbGFpbXMgY29weXJpZ2h0IHRvIHRoaXMgc291cmNlIGNvZGUuDQorDQorI2lm
bmRlZiBfTVVSTVVSSEFTSDNfSF8NCisjZGVmaW5lIF9NVVJNVVJIQVNIM19IXw0KKw0KKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCisvLyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG1h
Y3Jvcw0KKw0KKy8vIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvDQorDQorI2lmIGRlZmluZWQoX01T
Q19WRVIpDQorDQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7DQordHlwZWRlZiB1bnNp
Z25lZCBsb25nIHVpbnQzMl90Ow0KK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50NjRfdDsN
CisNCisvLyBPdGhlciBjb21waWxlcnMNCisNCisjZWxzZQkvLyBkZWZpbmVkKF9NU0NfVkVSKQ0K
Kw0KKyNpbmNsdWRlIDxzdGRpbnQuaD4NCisNCisjZW5kaWYgLy8gIWRlZmluZWQoX01TQ19WRVIp
DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK3ZvaWQgTXVybXVySGFzaDNfeDg2XzMy
ICAoIGNvbnN0IHZvaWQgKiBrZXksIGludCBsZW4sIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQg
KTsNCisNCit2b2lkIE11cm11ckhhc2gzX3g4Nl8xMjggKCBjb25zdCB2b2lkICoga2V5LCBpbnQg
bGVuLCB1aW50MzJfdCBzZWVkLCB2b2lkICogb3V0ICk7DQorDQordm9pZCBNdXJtdXJIYXNoM194
NjRfMTI4ICggY29uc3Qgdm9pZCAqIGtleSwgaW50IGxlbiwgdWludDMyX3Qgc2VlZCwgdm9pZCAq
IG91dCApOw0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisjZW5kaWYgLy8gX01VUk1V
UkhBU0gzX0hfClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMTUzMDA4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDctMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgQU5HTEUgdG8gbGF0ZXN0IGdpdCBj
b21taXQgKDA0NzM3M2FhM2ViNDA4YmU2MmJlNTJhZGU4NDBmYTVmMTFlNzIzMzcpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NTUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDogUmVuYW1lZCBEZXRlY3RSZWN1cnNpb24gdG8gRGV0ZWN0Q2FsbERlcHRoLgorCiAyMDEzLTA3
LTIyICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBE
byBub3QgYWxsb2NhdGUgMiBBdG9taWNTdHJpbmcganVzdCB0byBkbyBhIGNvbXBhcmlzb24gaW4g
SFRNTEFuY2hvckVsZW1lbnQ6OnNldFJlbCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTUyOTc5KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTI4NzksOCArMjg3OSw4IEBAIGlmIChXVEZfVVNFXzNEX0dSQVBISUNTKQogICAg
ICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5k
ZW5jeUdyYXBoQnVpbGRlci5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3Jj
L2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAKICAgICAgICAgJHtU
SElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFw
aFRyYXZlcnNlLmNwcAorICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGls
ZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5jcHAKLSAgICAgICAgJHtUSElSRFBBUlRZ
X0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAKICAgICAgICAgJHtU
SElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCiAgICAg
ICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAKICAg
ICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3Bw
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207298</attachid>
            <date>2013-07-22 17:45:42 -0700</date>
            <delta_ts>2013-07-23 11:05:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118550-20130722174541.patch</filename>
            <type>text/plain</type>
            <size>2566355</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzAxMikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE5NTcgQEAKKzIwMTMtMDctMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgQU5HTEUgdG8gbGF0ZXN0IGdpdCBjb21taXQgKDA0
NzM3M2FhM2ViNDA4YmU2MmJlNTJhZGU4NDBmYTVmMTFlNzIzMzcpLgorICAgICAgICBBZGRlZCBt
aXNzaW5nIEFOR0xFIGZpbGVzIGV4Y2VwdCB1bnVzZWQgdGVzdHMsIGV4dGVuc2lvbnMsIHNhbXBs
ZXMsIGJ1aWxkLCBhbmQgLmdpdCBkaXJlY3Rvcmllcy4KKyAgICAgICAgUmFuIEJpc29uIGFmdGVy
IG1ha2luZyBzb21lIGNoYW5nZXMgdG8gZml4IGNvbXBpbGUgZXJyb3JzIChzZWUgYmVsb3cpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg1NTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFOR0xF
LnBsaXN0OiBVcGRhdGVkIGZyb20gc3ZuIHRvIGdpdC4KKyAgICAgICAgKiBBTkdMRS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBSZW5hbWVkIERldGVjdFJlY3Vyc2lvbiB0byBEZXRlY3RDYWxs
RGVwdGguCisgICAgICAgICogQVVUSE9SUzogQWRkZWQuCisgICAgICAgICogQ09OVFJJQlVUT1JT
OiBBZGRlZC4KKyAgICAgICAgKiBERVBTOiBBZGRlZC4KKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOiBBZGRlZC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogUmVuYW1lZCBEZXRlY3RS
ZWN1cnNpb24gdG8gRGV0ZWN0Q2FsbERlcHRoLgorICAgICAgICAqIExJQ0VOU0U6IEFkZGVkLgor
ICAgICAgICAqIFJFQURNRS5jaHJvbWl1bTogQWRkZWQuCisgICAgICAgICogVGFyZ2V0LnByaTog
UmVuYW1lZCBEZXRlY3RSZWN1cnNpb24gdG8gRGV0ZWN0Q2FsbERlcHRoLgorICAgICAgICAqIGNv
ZGVyZXZpZXcuc2V0dGluZ3M6IEFkZGVkLgorICAgICAgICAqIGluY2x1ZGUvRUdML2VnbGV4dC5o
OgorICAgICAgICAqIGluY2x1ZGUvR0xFUzIvZ2wyZXh0Lmg6CisgICAgICAgICogaW5jbHVkZS9H
TFNMQU5HL1NoYWRlckxhbmcuaDoKKyAgICAgICAgKiBzcmMvQU5HTEUuc2xuOiBBZGRlZC4KKyAg
ICAgICAgKiBzcmMvYnVpbGRfYW5nbGUuZ3lwOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYnVpbGRf
YW5nbGUuZ3lwaTogQWRkZWQuCisgICAgICAgICogc3JjL2NvbW1vbi9SZWZDb3VudE9iamVjdC5j
cHA6CisgICAgICAgICogc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmg6CisgICAgICAgIChBcnJheVNp
emUpOgorICAgICAgICAoU2FmZVJlbGVhc2UpOgorICAgICAgICAqIHNyYy9jb21tb24vZGVidWcu
Y3BwOgorICAgICAgICAqIHNyYy9jb21tb24vZGVidWcuaDoKKyAgICAgICAgKiBzcmMvY29tbW9u
L3N5c3RlbS5oOgorICAgICAgICAqIHNyYy9jb21tb24vdmVyc2lvbi5oOgorICAgICAgICAqIHNy
Yy9jb21waWxlci82NGJpdC1sZXhlci1zYWZldHkucGF0Y2g6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9jb21waWxlci9CYXNlVHlwZXMuaDoKKyAgICAgICAgKGdldFF1YWxpZmllclN0cmluZyk6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL0NvZGVHZW5ITFNMLmNwcDoKKyAgICAgICAgKENvbnN0cnVj
dENvbXBpbGVyKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29tbW9uLmg6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcDoKKyAgICAgICAgKFRDb21waWxlcjo6VENvbXBpbGVy
KToKKyAgICAgICAgKFRDb21waWxlcjo6SW5pdCk6CisgICAgICAgIChUQ29tcGlsZXI6OmNvbXBp
bGUpOgorICAgICAgICAoVENvbXBpbGVyOjpJbml0QnVpbHRJblN5bWJvbFRhYmxlKToKKyAgICAg
ICAgKFRDb21waWxlcjo6ZGV0ZWN0Q2FsbERlcHRoKToKKyAgICAgICAgKFRDb21waWxlcjo6bGlt
aXRFeHByZXNzaW9uQ29tcGxleGl0eSk6CisgICAgICAgIChUQ29tcGlsZXI6OmdldFJlc291cmNl
cyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0NvbnN0YW50VW5pb24uaDoKKyAgICAgICAgKENv
bnN0YW50VW5pb246OkNvbnN0YW50VW5pb24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRl
Y3RDYWxsRGVwdGguY3BwOiBBZGRlZC4KKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RnVuY3Rp
b25Ob2RlOjpGdW5jdGlvbk5vZGUpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlv
bk5vZGU6OmdldE5hbWUpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6
OmFkZENhbGxlZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6ZGV0
ZWN0Q2FsbERlcHRoKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpy
ZXNldCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkRldGVjdENhbGxEZXB0aCk6CisgICAg
ICAgIChEZXRlY3RDYWxsRGVwdGg6On5EZXRlY3RDYWxsRGVwdGgpOgorICAgICAgICAoRGV0ZWN0
Q2FsbERlcHRoOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmNo
ZWNrRXhjZWVkc01heERlcHRoKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6cmVzZXRGdW5j
dGlvbk5vZGVzKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6ZGV0ZWN0Q2FsbERlcHRoRm9y
RnVuY3Rpb24pOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGgpOgor
ICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpmaW5kRnVuY3Rpb25CeU5hbWUpOgorICAgICAgICAq
IHNyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguaDogQWRkZWQuCisgICAgICAgIChEZXRlY3RD
YWxsRGVwdGg6OmdldEluZm9TaW5rKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRGV0ZWN0UmVj
dXJzaW9uLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJz
aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcDoK
KyAgICAgICAgKFREaWFnbm9zdGljczo6d3JpdGVJbmZvKToKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvRm9yTG9vcFVucm9sbC5jcHA6CisgICAgICAgIChGb3JMb29wVW5yb2xsOjpldmFsdWF0ZUlu
dENvbnN0YW50KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwOgorICAgICAg
ICAoVEluZm9TaW5rQmFzZTo6cHJlZml4KToKKyAgICAgICAgKFRJbmZvU2lua0Jhc2U6OmxvY2F0
aW9uKToKKyAgICAgICAgKFRJbmZvU2lua0Jhc2U6Om1lc3NhZ2UpOgorICAgICAgICAqIHNyYy9j
b21waWxlci9JbmZvU2luay5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9Jbml0aWFsaXplLmNw
cDoKKyAgICAgICAgKEluc2VydEJ1aWx0SW5GdW5jdGlvbnMpOgorICAgICAgICAoSWRlbnRpZnlC
dWlsdElucyk6CisgICAgICAgIChJbml0RXh0ZW5zaW9uQmVoYXZpb3IpOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9Jbml0aWFsaXplLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0ludGVybWVk
aWF0ZS5jcHA6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTeW1ib2wpOgorICAgICAgICAo
VEludGVybWVkaWF0ZTo6YWRkQmluYXJ5TWF0aCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjph
ZGRBc3NpZ24pOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkSW5kZXgpOgorICAgICAgICAo
VEludGVybWVkaWF0ZTo6YWRkVW5hcnlNYXRoKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OnNl
dEFnZ3JlZ2F0ZU9wZXJhdG9yKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNp
b24pOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6Z3Jvd0FnZ3JlZ2F0ZSk6CisgICAgICAgIChU
SW50ZXJtZWRpYXRlOjptYWtlQWdncmVnYXRlKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFk
ZFNlbGVjdGlvbik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRDb21tYSk6CisgICAgICAg
IChUSW50ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9uKToKKyAgICAgICAgKFRJbnRlcm1lZGlh
dGU6OmFkZFN3aXp6bGUpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkTG9vcCk6CisgICAg
ICAgIChUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2gpOgorICAgICAgICAoVEludGVybVVuYXJ5Ojpw
cm9tb3RlKToKKyAgICAgICAgKFRJbnRlcm1CaW5hcnk6OnByb21vdGUpOgorICAgICAgICAoQ29t
cGFyZVN0cnVjdCk6CisgICAgICAgIChDb21wYXJlU3RydWN0dXJlKToKKyAgICAgICAgKFRJbnRl
cm1Db25zdGFudFVuaW9uOjpmb2xkKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OnByb21vdGVD
b25zdGFudFVuaW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHA6Cisg
ICAgICAgIChUT3V0cHV0R0xTTDo6dmlzaXRTeW1ib2wpOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9PdXRwdXRHTFNMLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNw
cDoKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6d3JpdGVWYXJpYWJsZVR5cGUpOgorICAgICAg
ICAoVE91dHB1dEdMU0xCYXNlOjp3cml0ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAoVE91dHB1
dEdMU0xCYXNlOjp2aXNpdEJpbmFyeSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnZpc2l0
QWdncmVnYXRlKToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6Z2V0VHlwZU5hbWUpOgorICAg
ICAgICAoVE91dHB1dEdMU0xCYXNlOjpzdHJ1Y3REZWNsYXJlZCk6CisgICAgICAgIChUT3V0cHV0
R0xTTEJhc2U6OmRlY2xhcmVTdHJ1Y3QpOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRH
TFNMQmFzZS5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcDoKKyAgICAg
ICAgKHNoOjpPdXRwdXRITFNMOjpPdXRwdXRITFNMKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNM
OjpnZXRVbmlmb3Jtcyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6aGVhZGVyKToKKyAgICAg
ICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdFN5bWJvbCk6CisgICAgICAgIChzaDo6T3V0cHV0SExT
TDo6dmlzaXRCaW5hcnkpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRl
KToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdFNlbGVjdGlvbik6CisgICAgICAgIChz
aDo6T3V0cHV0SExTTDo6dmlzaXRMb29wKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjpoYW5k
bGVFeGNlc3NpdmVMb29wKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjphcmd1bWVudFN0cmlu
Zyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dHlwZVN0cmluZyk6CisgICAgICAgIChzaDo6
T3V0cHV0SExTTDo6dGV4dHVyZVN0cmluZyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6aW5p
dGlhbGl6ZXIpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKToKKyAg
ICAgICAgKHNoOjpPdXRwdXRITFNMOjp3cml0ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAoc2g6
Ok91dHB1dEhMU0w6OmRlY29yYXRlVW5pZm9ybSk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6
ZGVjb3JhdGVGaWVsZCk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6cmVnaXN0ZXJTdHJpbmcp
OgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnNhbXBsZXJSZWdpc3Rlcik6CisgICAgICAgIChz
aDo6T3V0cHV0SExTTDo6dW5pZm9ybVJlZ2lzdGVyKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNM
OjpkZWNsYXJlVW5pZm9ybSk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6Z2xWYXJpYWJsZVR5
cGUpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmdsVmFyaWFibGVQcmVjaXNpb24pOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNMLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L1BhcnNlSGVscGVyLmNwcDoKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmll
bGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4RmllbGRzKToKKyAgICAg
ICAgKFRQYXJzZUNvbnRleHQ6OmVycm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Ondhcm5p
bmcpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YXNzaWduRXJyb3IpOgorICAgICAgICAoVFBh
cnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmJpbmFy
eU9wRXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVjayk6
CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6
cmVzZXJ2ZWRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9y
RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayk6Cisg
ICAgICAgIChUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VD
b250ZXh0OjpzYW1wbGVyRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRl
clNhbXBsZXJFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2Ft
cGxlcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKToKKyAg
ICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmFycmF5RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpub25Jbml0
Q29uc3RFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNo
ZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmlzRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIFJlcGxhY2VkIGF1dG8gd2l0aCBz
dGQ6Om1hcDxzdGQ6OnN0cmluZywgVEJlaGF2aW9yPjo6Y29uc3RfaXRlcmF0b3IgdG8gZml4IFF0
IGFuZCBFRkwgY29tcGlsaW5nIGVycm9ycy4KKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmZpbmRG
dW5jdGlvbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIpOgor
ICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IpOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6Y29uc3RydWN0QnVpbHRJbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpjb25z
dHJ1Y3RTdHJ1Y3QpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWN0b3JOb2Rl
KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZSk6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjphZGRDb25zdEFycmF5Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250
ZXh0OjphZGRDb25zdFN0cnVjdCk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjplbnRlclN0cnVj
dERlY2xhcmF0aW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJv
ckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZEluZGV4RXhwcmVzc2lvbik6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmg6CisgICAgICAgIChUUGFyc2VDb250
ZXh0OjpUUGFyc2VDb250ZXh0KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnByYWdtYSk6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHA6CisgICAgICAgIChUUG9vbEFsbG9j
YXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9TaEhhbmRsZS5oOgorICAg
ICAgICAoVFNoSGFuZGxlQmFzZTo6Z2V0QXNUcmFuc2xhdG9ySExTTCk6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwOgorICAgICAgICAoU2hJbml0QnVpbHRJblJlc291cmNl
cyk6CisgICAgICAgIChTaEdldEluZm9Qb2ludGVyKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
U3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoVFR5cGU6OlRUeXBlKToKKyAgICAgICAgKFRUeXBl
OjpidWlsZE1hbmdsZWROYW1lKToKKyAgICAgICAgKFRUeXBlOjpnZXRPYmplY3RTaXplKToKKyAg
ICAgICAgKFRTdHJ1Y3R1cmU6OmNvbnRhaW5zQXJyYXlzKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6
OmJ1aWxkTWFuZ2xlZE5hbWUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6Y2FsY3VsYXRlT2JqZWN0
U2l6ZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpjYWxjdWxhdGVEZWVwZXN0TmVzdGluZyk6Cisg
ICAgICAgIChUU3ltYm9sVGFibGVMZXZlbDo6cmVsYXRlVG9FeHRlbnNpb24pOgorICAgICAgICAq
IHNyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oOgorICAgICAgICAoVFN5bWJvbDo6cmVsYXRlVG9F
eHRlbnNpb24pOgorICAgICAgICAoVFN5bWJvbDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFRW
YXJpYWJsZTo6VFZhcmlhYmxlKToKKyAgICAgICAgKFRWYXJpYWJsZTo6c2V0UXVhbGlmaWVyKToK
KyAgICAgICAgKFRWYXJpYWJsZTo6c2hhcmVDb25zdFBvaW50ZXIpOgorICAgICAgICAoVFN5bWJv
bFRhYmxlTGV2ZWw6Omluc2VydCk6CisgICAgICAgIChUU3ltYm9sVGFibGU6Omluc2VydENvbnN0
SW50KToKKyAgICAgICAgKFRTeW1ib2xUYWJsZTo6aW5zZXJ0QnVpbHRJbik6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmNwcDoKKyAgICAgICAgKFRyYW5zbGF0b3JITFNM
OjpUcmFuc2xhdG9ySExTTCk6CisgICAgICAgIChUcmFuc2xhdG9ySExTTDo6dHJhbnNsYXRlKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuaDoKKyAgICAgICAgKFRyYW5z
bGF0b3JITFNMOjpnZXRBc1RyYW5zbGF0b3JITFNMKToKKyAgICAgICAgKFRyYW5zbGF0b3JITFNM
OjpnZXRVbmlmb3Jtcyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1R5cGVzLmg6CisgICAgICAg
IChURmllbGQ6OlRGaWVsZCk6CisgICAgICAgIChURmllbGQ6OnR5cGUpOgorICAgICAgICAoVEZp
ZWxkOjpuYW1lKToKKyAgICAgICAgKE5ld1Bvb2xURmllbGRMaXN0KToKKyAgICAgICAgKFRTdHJ1
Y3R1cmU6OlRTdHJ1Y3R1cmUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6bmFtZSk6CisgICAgICAg
IChUU3RydWN0dXJlOjpmaWVsZHMpOgorICAgICAgICAoVFN0cnVjdHVyZTo6bWFuZ2xlZE5hbWUp
OgorICAgICAgICAoVFN0cnVjdHVyZTo6b2JqZWN0U2l6ZSk6CisgICAgICAgIChUU3RydWN0dXJl
OjpkZWVwZXN0TmVzdGluZyk6CisgICAgICAgIChUVHlwZTo6VFR5cGUpOgorICAgICAgICAoVFR5
cGU6OmVsZW1lbnRSZWdpc3RlckNvdW50KToKKyAgICAgICAgKFRUeXBlOjp0b3RhbFJlZ2lzdGVy
Q291bnQpOgorICAgICAgICAoVFR5cGU6OmNsZWFyQXJyYXluZXNzKToKKyAgICAgICAgKFRUeXBl
OjpnZXRTdHJ1Y3QpOgorICAgICAgICAoVFR5cGU6OnNldFN0cnVjdCk6CisgICAgICAgIChUVHlw
ZTo6Z2V0TWFuZ2xlZE5hbWUpOgorICAgICAgICAoVFR5cGU6OmdldERlZXBlc3RTdHJ1Y3ROZXN0
aW5nKToKKyAgICAgICAgKFRUeXBlOjppc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMpOgorICAg
ICAgICAoVFB1YmxpY1R5cGU6OnNldEJhc2ljKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVW5p
Zm9ybS5jcHA6IEFkZGVkLgorICAgICAgICAoc2g6OlVuaWZvcm06OlVuaWZvcm0pOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9Vbmlmb3JtLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9jb21waWxl
ci9WYXJpYWJsZUluZm8uY3BwOgorICAgICAgICAoZ2V0VXNlckRlZmluZWRWYXJpYWJsZUluZm8p
OgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nLmw6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL2dsc2xhbmcueTogTW92ZWQgWVlMVFlQRSBkZWZpbml0aW9uIGludG8gJXVuaW9uIHRvIHdv
cmsgd2l0aCBCaXNvbiAyLjMuCisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNw
cDoKKyAgICAgICAgKHl5X2dldF9wcmV2aW91c19zdGF0ZSk6CisgICAgICAgICh5eV90cnlfTlVM
X3RyYW5zKToKKyAgICAgICAgKHl5Z2V0X2xsb2MpOgorICAgICAgICAoeXlzZXRfbGxvYyk6Cisg
ICAgICAgIChzdHJpbmdfaW5wdXQpOgorICAgICAgICAoY2hlY2tfdHlwZSk6CisgICAgICAgIChy
ZXNlcnZlZF93b3JkKToKKyAgICAgICAgKGdsc2xhbmdfc2Nhbik6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL2dsc2xhbmdfdGFiLmNwcDoKKyAgICAgICAgKHl5ZXJyb3IpOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9nbHNsYW5nX3RhYi5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9pbnRlcm1P
dXQuY3BwOgorICAgICAgICAoVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRVbmFyeSk6CisgICAgICAg
IChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChUT3V0cHV0VHJh
dmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9pbnRl
cm1lZGlhdGUuaDoKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpUSW50ZXJtTm9kZSk6CisgICAgICAg
IChUSW50ZXJtTm9kZTo6flRJbnRlcm1Ob2RlKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRM
aW5lKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpzZXRMaW5lKToKKyAgICAgICAgKFRJbnRlcm1O
b2RlOjpnZXRBc0xvb3BOb2RlKToKKyAgICAgICAgKFRJbnRlcm1UeXBlZDo6dG90YWxSZWdpc3Rl
ckNvdW50KToKKyAgICAgICAgKFRJbnRlcm1UeXBlZDo6ZWxlbWVudFJlZ2lzdGVyQ291bnQpOgor
ICAgICAgICAoVEludGVybVR5cGVkOjpnZXRBcnJheVNpemUpOgorICAgICAgICAoVEludGVybUNv
bnN0YW50VW5pb246OmdldElDb25zdCk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6
Z2V0RkNvbnN0KToKKyAgICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjpnZXRCQ29uc3QpOgor
ICAgICAgICAoVEludGVybUFnZ3JlZ2F0ZTo6VEludGVybUFnZ3JlZ2F0ZSk6CisgICAgICAgIChU
SW50ZXJtVHJhdmVyc2VyOjpUSW50ZXJtVHJhdmVyc2VyKToKKyAgICAgICAgKFRJbnRlcm1UcmF2
ZXJzZXI6OmdldE1heERlcHRoKToKKyAgICAgICAgKFRJbnRlcm1UcmF2ZXJzZXI6OmluY3JlbWVu
dERlcHRoKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaDoKKyAg
ICAgICAgKiBzcmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHA6CisgICAgICAgIChUQ29uc3RUcmF2
ZXJzZXI6OnZpc2l0U3ltYm9sKToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRCaW5h
cnkpOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdFVuYXJ5KToKKyAgICAgICAgKFRD
b25zdFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoVENvbnN0VHJhdmVyc2Vy
Ojp2aXNpdFNlbGVjdGlvbik6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3Rh
bnRVbmlvbik6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0TG9vcCk6CisgICAgICAg
IChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QnJhbmNoKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6
OnBhcnNlQ29uc3RUcmVlKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yLzY0
Yml0LXRva2VuaXplci1zYWZldHkucGF0Y2g6IEFkZGVkLgorICAgICAgICAqIHNyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKHl5X2dldF9wcmV2aW91c19z
dGF0ZSk6CisgICAgICAgICh5eV90cnlfTlVMX3RyYW5zKToKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5sOgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHByb2o6IEFkZGVkLgorICAgICAgICAqIHNyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHByb2ouZmlsdGVyczogQWRkZWQuCisg
ICAgICAgICogc3JjL2NvbXBpbGVyL3RpbWluZy9SZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5j
cHA6CisgICAgICAgIChSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZzo6dmlzaXRTeW1ib2wpOgor
ICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yX2NvbW1vbi52Y3hwcm9qOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9jb21tb24udmN4cHJvai5maWx0ZXJz
OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9obHNsLnZjeHByb2o6
IEFkZGVkLgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yX2hsc2wudmN4cHJvai5m
aWx0ZXJzOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliRUdML0NvbmZpZy5jcHA6IEFkZGVkLgor
ICAgICAgICAoZWdsOjpDb25maWc6OkNvbmZpZyk6CisgICAgICAgIChlZ2w6OkNvbmZpZzo6Z2V0
SGFuZGxlKToKKyAgICAgICAgKGVnbDo6U29ydENvbmZpZzo6U29ydENvbmZpZyk6CisgICAgICAg
IChlZ2w6OlNvcnRDb25maWc6OnNjYW5Gb3JXYW50ZWRDb21wb25lbnRzKToKKyAgICAgICAgKGVn
bDo6U29ydENvbmZpZzo6d2FudGVkQ29tcG9uZW50c1NpemUpOgorICAgICAgICAoZWdsOjpTb3J0
Q29uZmlnOjpvcGVyYXRvcigpKToKKyAgICAgICAgKGVnbDo6Q29uZmlnU2V0OjpDb25maWdTZXQp
OgorICAgICAgICAoZWdsOjpDb25maWdTZXQ6OmFkZCk6CisgICAgICAgIChlZ2w6OkNvbmZpZ1Nl
dDo6c2l6ZSk6CisgICAgICAgIChlZ2w6OkNvbmZpZ1NldDo6Z2V0Q29uZmlncyk6CisgICAgICAg
IChlZ2w6OkNvbmZpZ1NldDo6Z2V0KToKKyAgICAgICAgKiBzcmMvbGliRUdML0NvbmZpZy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBzcmMvbGliRUdML0Rpc3BsYXkuY3BwOiBBZGRlZC4KKyAgICAgICAg
KGVnbDo6RGlzcGxheTo6Z2V0RGlzcGxheSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OkRpc3Bs
YXkpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojp+RGlzcGxheSk6CisgICAgICAgIChlZ2w6OkRp
c3BsYXk6OmluaXRpYWxpemUpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojp0ZXJtaW5hdGUpOgor
ICAgICAgICAoZWdsOjpEaXNwbGF5OjpnZXRDb25maWdzKToKKyAgICAgICAgKGVnbDo6RGlzcGxh
eTo6Z2V0Q29uZmlnQXR0cmliKToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6Y3JlYXRlV2luZG93
U3VyZmFjZSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmNyZWF0ZU9mZnNjcmVlblN1cmZhY2Up
OgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKGVnbDo6
RGlzcGxheTo6cmVzdG9yZUxvc3REZXZpY2UpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpkZXN0
cm95U3VyZmFjZSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmRlc3Ryb3lDb250ZXh0KToKKyAg
ICAgICAgKGVnbDo6RGlzcGxheTo6bm90aWZ5RGV2aWNlTG9zdCk6CisgICAgICAgIChlZ2w6OkRp
c3BsYXk6OnJlY3JlYXRlU3dhcENoYWlucyk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmlzSW5p
dGlhbGl6ZWQpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojppc1ZhbGlkQ29uZmlnKToKKyAgICAg
ICAgKGVnbDo6RGlzcGxheTo6aXNWYWxpZENvbnRleHQpOgorICAgICAgICAoZWdsOjpEaXNwbGF5
Ojppc1ZhbGlkU3VyZmFjZSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6Omhhc0V4aXN0aW5nV2lu
ZG93U3VyZmFjZSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmluaXRFeHRlbnNpb25TdHJpbmcp
OgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpnZXRFeHRlbnNpb25TdHJpbmcpOgorICAgICAgICAo
ZWdsOjpEaXNwbGF5Ojppbml0VmVuZG9yU3RyaW5nKToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6
Z2V0VmVuZG9yU3RyaW5nKToKKyAgICAgICAgKiBzcmMvbGliRUdML0Rpc3BsYXkuaDogQWRkZWQu
CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmdldFJlbmRlcmVyKToKKyAgICAgICAgKiBzcmMvbGli
RUdML1N1cmZhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6U3VyZmFjZSk6
CisgICAgICAgIChlZ2w6OlN1cmZhY2U6On5TdXJmYWNlKToKKyAgICAgICAgKGVnbDo6U3VyZmFj
ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OnJlbGVhc2UpOgorICAgICAg
ICAoZWdsOjpTdXJmYWNlOjpyZXNldFN3YXBDaGFpbik6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6
OnJlc2l6ZVN3YXBDaGFpbik6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OnN3YXBSZWN0KToKKyAg
ICAgICAgKGVnbDo6U3VyZmFjZTo6Z2V0V2luZG93SGFuZGxlKToKKyAgICAgICAgKGVnbDo6U3Vy
ZmFjZVdpbmRvd1Byb2MpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpzdWJjbGFzc1dpbmRvdyk6
CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OnVuc3ViY2xhc3NXaW5kb3cpOgorICAgICAgICAoZWds
OjpTdXJmYWNlOjpjaGVja0Zvck91dE9mRGF0ZVN3YXBDaGFpbik6CisgICAgICAgIChlZ2w6OlN1
cmZhY2U6OnN3YXApOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpwb3N0U3ViQnVmZmVyKToKKyAg
ICAgICAgKGVnbDo6U3VyZmFjZTo6Z2V0V2lkdGgpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpn
ZXRIZWlnaHQpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0
ZWQpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpnZXRTd2FwQ2hhaW4pOgorICAgICAgICAoZWds
OjpTdXJmYWNlOjpzZXRTd2FwSW50ZXJ2YWwpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpnZXRU
ZXh0dXJlRm9ybWF0KToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6Z2V0VGV4dHVyZVRhcmdldCk6
CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OnNldEJvdW5kVGV4dHVyZSk6CisgICAgICAgIChlZ2w6
OlN1cmZhY2U6OmdldEJvdW5kVGV4dHVyZSk6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OmdldEZv
cm1hdCk6CisgICAgICAgICogc3JjL2xpYkVHTC9TdXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAq
IHNyYy9saWJFR0wvbGliRUdMLmNwcDogQWRkZWQuCisgICAgICAgICh2YWxpZGF0ZURpc3BsYXkp
OgorICAgICAgICAodmFsaWRhdGVDb25maWcpOgorICAgICAgICAodmFsaWRhdGVDb250ZXh0KToK
KyAgICAgICAgKHZhbGlkYXRlU3VyZmFjZSk6CisgICAgICAgICogc3JjL2xpYkVHTC9saWJFR0wu
ZGVmOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliRUdML2xpYkVHTC5yYzogQWRkZWQuCisgICAg
ICAgICogc3JjL2xpYkVHTC9saWJFR0wudmN4cHJvajogQWRkZWQuCisgICAgICAgICogc3JjL2xp
YkVHTC9saWJFR0wudmN4cHJvai5maWx0ZXJzOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliRUdM
L21haW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKERsbE1haW4pOgorICAgICAgICAoZWdsOjpzZXRD
dXJyZW50RXJyb3IpOgorICAgICAgICAoZWdsOjpnZXRDdXJyZW50RXJyb3IpOgorICAgICAgICAo
ZWdsOjpzZXRDdXJyZW50QVBJKToKKyAgICAgICAgKGVnbDo6Z2V0Q3VycmVudEFQSSk6CisgICAg
ICAgIChlZ2w6OnNldEN1cnJlbnREaXNwbGF5KToKKyAgICAgICAgKGVnbDo6Z2V0Q3VycmVudERp
c3BsYXkpOgorICAgICAgICAoZWdsOjpzZXRDdXJyZW50RHJhd1N1cmZhY2UpOgorICAgICAgICAo
ZWdsOjpnZXRDdXJyZW50RHJhd1N1cmZhY2UpOgorICAgICAgICAoZWdsOjpzZXRDdXJyZW50UmVh
ZFN1cmZhY2UpOgorICAgICAgICAoZWdsOjpnZXRDdXJyZW50UmVhZFN1cmZhY2UpOgorICAgICAg
ICAoZWdsOjplcnJvcik6CisgICAgICAgICogc3JjL2xpYkVHTC9tYWluLmg6IEFkZGVkLgorICAg
ICAgICAoZWdsOjplcnJvcik6CisgICAgICAgIChlZ2w6OnN1Y2Nlc3MpOgorICAgICAgICAqIHNy
Yy9saWJFR0wvcmVzb3VyY2UuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9CaW5h
cnlTdHJlYW0uaDogQWRkZWQuCisgICAgICAgIChnbDo6QmluYXJ5SW5wdXRTdHJlYW06OkJpbmFy
eUlucHV0U3RyZWFtKToKKyAgICAgICAgKGdsOjpCaW5hcnlJbnB1dFN0cmVhbTo6cmVhZCk6Cisg
ICAgICAgIChnbDo6QmluYXJ5SW5wdXRTdHJlYW06OnNraXApOgorICAgICAgICAoZ2w6OkJpbmFy
eUlucHV0U3RyZWFtOjpvZmZzZXQpOgorICAgICAgICAoZ2w6OkJpbmFyeUlucHV0U3RyZWFtOjpl
cnJvcik6CisgICAgICAgIChnbDo6QmluYXJ5SW5wdXRTdHJlYW06OmVuZE9mU3RyZWFtKToKKyAg
ICAgICAgKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW06OkJpbmFyeU91dHB1dFN0cmVhbSk6CisgICAg
ICAgIChnbDo6QmluYXJ5T3V0cHV0U3RyZWFtOjp3cml0ZSk6CisgICAgICAgIChnbDo6QmluYXJ5
T3V0cHV0U3RyZWFtOjpsZW5ndGgpOgorICAgICAgICAoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbTo6
ZGF0YSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9CdWZmZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKGdsOjpCdWZmZXI6OkJ1ZmZlcik6CisgICAgICAgIChnbDo6QnVmZmVyOjp+QnVmZmVyKToK
KyAgICAgICAgKGdsOjpCdWZmZXI6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoZ2w6OkJ1ZmZlcjo6
YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChnbDo6QnVmZmVyOjpnZXRTdG9yYWdlKToKKyAgICAg
ICAgKGdsOjpCdWZmZXI6OnNpemUpOgorICAgICAgICAoZ2w6OkJ1ZmZlcjo6dXNhZ2UpOgorICAg
ICAgICAoZ2w6OkJ1ZmZlcjo6Z2V0U3RhdGljVmVydGV4QnVmZmVyKToKKyAgICAgICAgKGdsOjpC
dWZmZXI6OmdldFN0YXRpY0luZGV4QnVmZmVyKToKKyAgICAgICAgKGdsOjpCdWZmZXI6OmludmFs
aWRhdGVTdGF0aWNEYXRhKToKKyAgICAgICAgKGdsOjpCdWZmZXI6OnByb21vdGVTdGF0aWNVc2Fn
ZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9CdWZmZXIuaDogQWRkZWQuCisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9Db250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6bWFrZVN0YXRp
Y1N0cmluZyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Q29udGV4dCk6CisgICAgICAgIChnbDo6
Q29udGV4dDo6fkNvbnRleHQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6Om1ha2VDdXJyZW50KToK
KyAgICAgICAgKGdsOjpDb250ZXh0OjptYXJrQ29udGV4dExvc3QpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OmlzQ29udGV4dExvc3QpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldENsZWFyQ29s
b3IpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldENsZWFyRGVwdGgpOgorICAgICAgICAoZ2w6
OkNvbnRleHQ6OnNldENsZWFyU3RlbmNpbCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0Q3Vs
bEZhY2UpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzQ3VsbEZhY2VFbmFibGVkKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpzZXRDdWxsTW9kZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0
RnJvbnRGYWNlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXREZXB0aFRlc3QpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmlzRGVwdGhUZXN0RW5hYmxlZCk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6c2V0RGVwdGhGdW5jKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXREZXB0aFJhbmdlKToK
KyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRCbGVuZCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6
aXNCbGVuZEVuYWJsZWQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldEJsZW5kRmFjdG9ycyk6
CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0QmxlbmRDb2xvcik6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6c2V0QmxlbmRFcXVhdGlvbik6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0U3RlbmNp
bFRlc3QpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzU3RlbmNpbFRlc3RFbmFibGVkKToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpzZXRTdGVuY2lsUGFyYW1zKToKKyAgICAgICAgKGdsOjpDb250
ZXh0OjpzZXRTdGVuY2lsQmFja1BhcmFtcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0U3Rl
bmNpbFdyaXRlbWFzayk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0U3RlbmNpbEJhY2tXcml0
ZW1hc2spOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFN0ZW5jaWxPcGVyYXRpb25zKToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpzZXRTdGVuY2lsQmFja09wZXJhdGlvbnMpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OnNldFBvbHlnb25PZmZzZXRGaWxsKToKKyAgICAgICAgKGdsOjpDb250ZXh0
Ojppc1BvbHlnb25PZmZzZXRGaWxsRW5hYmxlZCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0
UG9seWdvbk9mZnNldFBhcmFtcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0U2FtcGxlQWxw
aGFUb0NvdmVyYWdlKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc1NhbXBsZUFscGhhVG9Db3Zl
cmFnZUVuYWJsZWQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFNhbXBsZUNvdmVyYWdlKToK
KyAgICAgICAgKGdsOjpDb250ZXh0Ojppc1NhbXBsZUNvdmVyYWdlRW5hYmxlZCk6CisgICAgICAg
IChnbDo6Q29udGV4dDo6c2V0U2FtcGxlQ292ZXJhZ2VQYXJhbXMpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OnNldFNjaXNzb3JUZXN0KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc1NjaXNzb3JU
ZXN0RW5hYmxlZCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0RGl0aGVyKToKKyAgICAgICAg
KGdsOjpDb250ZXh0Ojppc0RpdGhlckVuYWJsZWQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNl
dExpbmVXaWR0aCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0R2VuZXJhdGVNaXBtYXBIaW50
KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRGcmFnbWVudFNoYWRlckRlcml2YXRpdmVIaW50
KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRWaWV3cG9ydFBhcmFtcyk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6c2V0U2Npc3NvclBhcmFtcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0
Q29sb3JNYXNrKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXREZXB0aE1hc2spOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OnNldEFjdGl2ZVNhbXBsZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmdldFJlYWRGcmFtZWJ1ZmZlckhhbmRsZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0RHJh
d0ZyYW1lYnVmZmVySGFuZGxlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRSZW5kZXJidWZm
ZXJIYW5kbGUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEFycmF5QnVmZmVySGFuZGxlKToK
KyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRBY3RpdmVRdWVyeSk6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6c2V0RW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmdldFZlcnRleEF0dHJpYlN0YXRlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRWZXJ0ZXhB
dHRyaWJTdGF0ZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0VmVydGV4QXR0cmliUG9pbnRl
cik6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0UGFja0FsaWdubWVudCk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6Z2V0UGFja0FsaWdubWVudCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0
VW5wYWNrQWxpZ25tZW50KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRVbnBhY2tBbGlnbm1l
bnQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFBhY2tSZXZlcnNlUm93T3JkZXIpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OmdldFBhY2tSZXZlcnNlUm93T3JkZXIpOgorICAgICAgICAoZ2w6
OkNvbnRleHQ6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Y3JlYXRlUHJv
Z3JhbSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGds
OjpDb250ZXh0OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpjcmVhdGVS
ZW5kZXJidWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmNyZWF0ZUZyYW1lYnVmZmVyKToK
KyAgICAgICAgKGdsOjpDb250ZXh0OjpjcmVhdGVGZW5jZSk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmRlbGV0ZUJ1ZmZlcik6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0
OjpkZWxldGVQcm9ncmFtKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpkZWxldGVUZXh0dXJlKToK
KyAgICAgICAgKGdsOjpDb250ZXh0OjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoZ2w6
OkNvbnRleHQ6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpkZWxl
dGVGZW5jZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6ZGVsZXRlUXVlcnkpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OmdldEJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0U2hhZGVy
KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRQcm9ncmFtKToKKyAgICAgICAgKGdsOjpDb250
ZXh0OjpnZXRUZXh0dXJlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRSZW5kZXJidWZmZXIp
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFJlYWRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChn
bDo6Q29udGV4dDo6Z2V0RHJhd0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpi
aW5kQXJyYXlCdWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmJpbmRFbGVtZW50QXJyYXlC
dWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmJpbmRUZXh0dXJlMkQpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OmJpbmRUZXh0dXJlQ3ViZU1hcCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6
YmluZFJlYWRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6YmluZERyYXdGcmFt
ZWJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6bGlu
a1Byb2dyYW0pOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFByb2dyYW1CaW5hcnkpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OmJlZ2luUXVlcnkpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmVu
ZFF1ZXJ5KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRGcmFtZWJ1ZmZlclplcm8pOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OnNldFJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoZ2w6
OkNvbnRleHQ6OmdldEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRGZW5j
ZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0UXVlcnkpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OmdldEFycmF5QnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRFbGVtZW50QXJy
YXlCdWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5
KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRUZXh0dXJlMkQpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OmdldFRleHR1cmVDdWJlTWFwKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRTYW1w
bGVyVGV4dHVyZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0Qm9vbGVhbnYpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmdldEZsb2F0dik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0SW50
ZWdlcnYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVySW5mbyk6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6YXBwbHlSZW5kZXJUYXJnZXQpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OmFwcGx5U3RhdGUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmFwcGx5U2hhZGVycyk6
CisgICAgICAgIChnbDo6Q29udGV4dDo6YXBwbHlUZXh0dXJlcyk6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6cmVhZFBpeGVscyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Y2xlYXIpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmRyYXdBcnJheXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmRyYXdF
bGVtZW50cyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3luYyk6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6cmVjb3JkSW52YWxpZEVudW0pOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnJlY29yZElu
dmFsaWRWYWx1ZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6cmVjb3JkSW52YWxpZE9wZXJhdGlv
bik6CisgICAgICAgIChnbDo6Q29udGV4dDo6cmVjb3JkT3V0T2ZNZW1vcnkpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OnJlY29yZEludmFsaWRGcmFtZWJ1ZmZlck9wZXJhdGlvbik6CisgICAgICAg
IChnbDo6Q29udGV4dDo6Z2V0RXJyb3IpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFJlc2V0
U3RhdHVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc1Jlc2V0Tm90aWZpY2F0aW9uRW5hYmxl
ZCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0TWFqb3JTaGFkZXJNb2RlbCk6CisgICAgICAg
IChnbDo6Q29udGV4dDo6Z2V0TWF4aW11bVBvaW50U2l6ZSk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6Z2V0TWF4aW11bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OmdldE1heFN1cHBvcnRlZFNhbXBsZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6Omdl
dE1heGltdW1SZW5kZXJUYXJnZXRzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0V2
ZW50UXVlcmllcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNPY2NsdXNpb25RdWVy
aWVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0JHUkFUZXh0dXJlcyk6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNEWFQxVGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OnN1cHBvcnRzRFhUM1RleHR1cmVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBw
b3J0c0RYVDVUZXh0dXJlcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNGbG9hdDMy
VGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzRmxvYXQzMkxpbmVhckZp
bHRlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNGbG9hdDMyUmVuZGVyYWJsZVRl
eHR1cmVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0Zsb2F0MTZUZXh0dXJlcyk6
CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNGbG9hdDE2TGluZWFyRmlsdGVyKToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0Zsb2F0MTZSZW5kZXJhYmxlVGV4dHVyZXMpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldE1heGltdW1SZW5kZXJidWZmZXJEaW1lbnNpb24pOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldE1heGltdW1UZXh0dXJlRGltZW5zaW9uKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpnZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNpb24pOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmdldE1heGltdW1UZXh0dXJlTGV2ZWwpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OnN1cHBvcnRzTHVtaW5hbmNlVGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OnN1cHBvcnRzTHVtaW5hbmNlQWxwaGFUZXh0dXJlcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6
c3VwcG9ydHNEZXB0aFRleHR1cmVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0czMy
Yml0SW5kaWNlcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNOb25Qb3dlcjJUZXh0
dXJlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0luc3RhbmNpbmcpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHkpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KToKKyAgICAgICAgKGdsOjpD
b250ZXh0OjpnZXRDdXJyZW50UmVhZEZvcm1hdFR5cGUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmRldGFjaEJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6ZGV0YWNoVGV4dHVyZSk6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6ZGV0YWNoRnJhbWVidWZmZXIpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OmRldGFjaFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0SW5j
b21wbGV0ZVRleHR1cmUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNraXBEcmF3KToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpzZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OnNldFZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmluaXRFeHRl
bnNpb25TdHJpbmcpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEV4dGVuc2lvblN0cmluZyk6
CisgICAgICAgIChnbDo6Q29udGV4dDo6aW5pdFJlbmRlcmVyU3RyaW5nKToKKyAgICAgICAgKGds
OjpDb250ZXh0OjpnZXRSZW5kZXJlclN0cmluZyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Ymxp
dEZyYW1lYnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0NvbnRleHQuaDogQWRkZWQu
CisgICAgICAgIChnbDo6VmVydGV4QXR0cmlidXRlOjpWZXJ0ZXhBdHRyaWJ1dGUpOgorICAgICAg
ICAoZ2w6OlZlcnRleEF0dHJpYnV0ZTo6dHlwZVNpemUpOgorICAgICAgICAoZ2w6OlZlcnRleEF0
dHJpYnV0ZTo6c3RyaWRlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0ZlbmNlLmNwcDogQWRk
ZWQuCisgICAgICAgIChnbDo6RmVuY2U6OkZlbmNlKToKKyAgICAgICAgKGdsOjpGZW5jZTo6fkZl
bmNlKToKKyAgICAgICAgKGdsOjpGZW5jZTo6aXNGZW5jZSk6CisgICAgICAgIChnbDo6RmVuY2U6
OnNldEZlbmNlKToKKyAgICAgICAgKGdsOjpGZW5jZTo6dGVzdEZlbmNlKToKKyAgICAgICAgKGds
OjpGZW5jZTo6ZmluaXNoRmVuY2UpOgorICAgICAgICAoZ2w6OkZlbmNlOjpnZXRGZW5jZWl2KToK
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0ZlbmNlLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvRmxvYXQxNlRvRmxvYXQzMi5jcHA6IEFkZGVkLgorICAgICAgICAoZ2w6OmZsb2F0
MTZUb0Zsb2F0MzIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvRmxvYXQxNlRvRmxvYXQzMi5w
eTogQWRkZWQuCisgICAgICAgIChjb252ZXJ0TWFudGlzc2EpOgorICAgICAgICAoY29udmVydEV4
cG9uZW50KToKKyAgICAgICAgKGNvbnZlcnRPZmZzZXQpOgorICAgICAgICAqIHNyYy9saWJHTEVT
djIvRnJhbWVidWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6RnJh
bWVidWZmZXIpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjp+RnJhbWVidWZmZXIpOgorICAg
ICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpsb29rdXBSZW5kZXJidWZmZXIpOgorICAgICAgICAoZ2w6
OkZyYW1lYnVmZmVyOjpzZXRDb2xvcmJ1ZmZlcik6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6
OnNldERlcHRoYnVmZmVyKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6c2V0U3RlbmNpbGJ1
ZmZlcik6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmRldGFjaFRleHR1cmUpOgorICAgICAg
ICAoZ2w6OkZyYW1lYnVmZmVyOjpkZXRhY2hSZW5kZXJidWZmZXIpOgorICAgICAgICAoZ2w6OkZy
YW1lYnVmZmVyOjpnZXRSZW5kZXJUYXJnZXRTZXJpYWwpOgorICAgICAgICAoZ2w6OkZyYW1lYnVm
ZmVyOjpnZXREZXB0aGJ1ZmZlclNlcmlhbCk6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6Omdl
dFN0ZW5jaWxidWZmZXJTZXJpYWwpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXRDb2xv
cmJ1ZmZlcik6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmdldERlcHRoYnVmZmVyKToKKyAg
ICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0U3RlbmNpbGJ1ZmZlcik6CisgICAgICAgIChnbDo6
RnJhbWVidWZmZXI6OmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKToKKyAgICAgICAgKGdsOjpGcmFt
ZWJ1ZmZlcjo6Z2V0UmVhZENvbG9yYnVmZmVyKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6
Z2V0UmVhZENvbG9yYnVmZmVyVHlwZSk6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmdldEZp
cnN0Q29sb3JidWZmZXIpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXRDb2xvcmJ1ZmZl
clR5cGUpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXREZXB0aGJ1ZmZlclR5cGUpOgor
ICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXRTdGVuY2lsYnVmZmVyVHlwZSk6CisgICAgICAg
IChnbDo6RnJhbWVidWZmZXI6OmdldENvbG9yYnVmZmVySGFuZGxlKToKKyAgICAgICAgKGdsOjpG
cmFtZWJ1ZmZlcjo6Z2V0RGVwdGhidWZmZXJIYW5kbGUpOgorICAgICAgICAoZ2w6OkZyYW1lYnVm
ZmVyOjpnZXRTdGVuY2lsYnVmZmVySGFuZGxlKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6
Z2V0RHJhd0J1ZmZlclN0YXRlKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6c2V0RHJhd0J1
ZmZlclN0YXRlKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6aXNFbmFibGVkQ29sb3JBdHRh
Y2htZW50KToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6aGFzRW5hYmxlZENvbG9yQXR0YWNo
bWVudCk6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6Omhhc1N0ZW5jaWwpOgorICAgICAgICAo
Z2w6OkZyYW1lYnVmZmVyOjp1c2luZ0V4dGVuZGVkRHJhd0J1ZmZlcnMpOgorICAgICAgICAoZ2w6
OkZyYW1lYnVmZmVyOjpjb21wbGV0ZW5lc3MpOgorICAgICAgICAoZ2w6OkRlZmF1bHRGcmFtZWJ1
ZmZlcjo6RGVmYXVsdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0
U2FtcGxlcyk6CisgICAgICAgIChnbDo6RGVmYXVsdEZyYW1lYnVmZmVyOjpjb21wbGV0ZW5lc3Mp
OgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIuaDogQWRkZWQuCisgICAgICAg
ICogc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKGds
OjpIYW5kbGVBbGxvY2F0b3I6OkhhbmRsZUFsbG9jYXRvcik6CisgICAgICAgIChnbDo6SGFuZGxl
QWxsb2NhdG9yOjp+SGFuZGxlQWxsb2NhdG9yKToKKyAgICAgICAgKGdsOjpIYW5kbGVBbGxvY2F0
b3I6OnNldEJhc2VIYW5kbGUpOgorICAgICAgICAoZ2w6OkhhbmRsZUFsbG9jYXRvcjo6YWxsb2Nh
dGUpOgorICAgICAgICAoZ2w6OkhhbmRsZUFsbG9jYXRvcjo6cmVsZWFzZSk6CisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xp
YkdMRVN2Mi9Qcm9ncmFtLmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6QXR0cmlidXRlQmluZGlu
Z3M6OkF0dHJpYnV0ZUJpbmRpbmdzKToKKyAgICAgICAgKGdsOjpBdHRyaWJ1dGVCaW5kaW5nczo6
fkF0dHJpYnV0ZUJpbmRpbmdzKToKKyAgICAgICAgKGdsOjpJbmZvTG9nOjpJbmZvTG9nKToKKyAg
ICAgICAgKGdsOjpJbmZvTG9nOjp+SW5mb0xvZyk6CisgICAgICAgIChnbDo6SW5mb0xvZzo6Z2V0
TGVuZ3RoKToKKyAgICAgICAgKGdsOjpJbmZvTG9nOjpnZXRMb2cpOgorICAgICAgICAoZ2w6Oklu
Zm9Mb2c6OmFwcGVuZFNhbml0aXplZCk6CisgICAgICAgIChnbDo6SW5mb0xvZzo6YXBwZW5kKToK
KyAgICAgICAgKGdsOjpJbmZvTG9nOjpyZXNldCk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6UHJv
Z3JhbSk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6flByb2dyYW0pOgorICAgICAgICAoZ2w6OlBy
b2dyYW06OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6ZGV0YWNoU2hhZGVy
KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRBdHRhY2hlZFNoYWRlcnNDb3VudCk6CisgICAg
ICAgIChnbDo6QXR0cmlidXRlQmluZGluZ3M6OmJpbmRBdHRyaWJ1dGVMb2NhdGlvbik6CisgICAg
ICAgIChnbDo6UHJvZ3JhbTo6YmluZEF0dHJpYnV0ZUxvY2F0aW9uKToKKyAgICAgICAgKGdsOjpQ
cm9ncmFtOjpsaW5rKToKKyAgICAgICAgKGdsOjpBdHRyaWJ1dGVCaW5kaW5nczo6Z2V0QXR0cmli
dXRlQmluZGluZyk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6dW5saW5rKToKKyAgICAgICAgKGds
OjpQcm9ncmFtOjppc0xpbmtlZCk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0UHJvZ3JhbUJp
bmFyeSk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6c2V0UHJvZ3JhbUJpbmFyeSk6CisgICAgICAg
IChnbDo6UHJvZ3JhbTo6cmVsZWFzZSk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6YWRkUmVmKToK
KyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRSZWZDb3VudCk6CisgICAgICAgIChnbDo6UHJvZ3Jh
bTo6Z2V0UHJvZ3JhbUJpbmFyeUxlbmd0aCk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0SW5m
b0xvZ0xlbmd0aCk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0SW5mb0xvZyk6CisgICAgICAg
IChnbDo6UHJvZ3JhbTo6Z2V0QXR0YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKGdsOjpQcm9ncmFt
OjpnZXRBY3RpdmVBdHRyaWJ1dGUpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldEFjdGl2ZUF0
dHJpYnV0ZUNvdW50KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRBY3RpdmVBdHRyaWJ1dGVN
YXhMZW5ndGgpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm0pOgorICAg
ICAgICAoZ2w6OlByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm1Db3VudCk6CisgICAgICAgIChnbDo6
UHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aCk6CisgICAgICAgIChnbDo6UHJvZ3Jh
bTo6ZmxhZ0ZvckRlbGV0aW9uKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjppc0ZsYWdnZWRGb3JE
ZWxldGlvbik6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6dmFsaWRhdGUpOgorICAgICAgICAoZ2w6
OlByb2dyYW06OmlzVmFsaWRhdGVkKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1Byb2dyYW0u
aDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5LmNwcDogQWRk
ZWQuCisgICAgICAgIChnbDo6c3RyKToKKyAgICAgICAgKGdsOjpVbmlmb3JtTG9jYXRpb246OlVu
aWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6UHJvZ3JhbUJpbmFy
eSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6flByb2dyYW1CaW5hcnkpOgorICAgICAg
ICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldFNlcmlhbCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJp
bmFyeTo6aXNzdWVTZXJpYWwpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldFBpeGVs
RXhlY3V0YWJsZSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2V0VmVydGV4RXhlY3V0
YWJsZSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2V0R2VvbWV0cnlFeGVjdXRhYmxl
KToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRBdHRyaWJ1dGVMb2NhdGlvbik6Cisg
ICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2V0U2VtYW50aWNJbmRleCk6CisgICAgICAgIChn
bDo6UHJvZ3JhbUJpbmFyeTo6Z2V0VXNlZFNhbXBsZXJSYW5nZSk6CisgICAgICAgIChnbDo6UHJv
Z3JhbUJpbmFyeTo6dXNlc1BvaW50U2l6ZSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6
dXNlc1BvaW50U3ByaXRlRW11bGF0aW9uKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5Ojp1
c2VzR2VvbWV0cnlTaGFkZXIpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldFNhbXBs
ZXJNYXBwaW5nKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRTYW1wbGVyVGV4dHVy
ZVR5cGUpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldFVuaWZvcm1Mb2NhdGlvbik6
CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTFmdik6CisgICAgICAgIChn
bDo6UHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTJmdik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJp
bmFyeTo6c2V0VW5pZm9ybTNmdik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6c2V0VW5p
Zm9ybTRmdik6CisgICAgICAgIChnbDo6dHJhbnNwb3NlTWF0cml4KToKKyAgICAgICAgKGdsOjpQ
cm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKGdsOjpQcm9ncmFt
QmluYXJ5OjpzZXRVbmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5
OjpzZXRVbmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpzZXRV
bmlmb3JtMWl2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtMml2KToK
KyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtM2l2KToKKyAgICAgICAgKGds
OjpQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtNGl2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmlu
YXJ5OjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldFVuaWZv
cm1pdik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6ZGlydHlBbGxVbmlmb3Jtcyk6Cisg
ICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6YXBwbHlVbmlmb3Jtcyk6CisgICAgICAgIChnbDo6
UHJvZ3JhbUJpbmFyeTo6cGFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5
OjpsaW5rVmFyeWluZ3MpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmxvYWQpOgorICAg
ICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OnNhdmUpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5h
cnk6OmdldExlbmd0aCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6bGluayk6CisgICAg
ICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6bGlua0F0dHJpYnV0ZXMpOgorICAgICAgICAoZ2w6OlBy
b2dyYW1CaW5hcnk6OmxpbmtVbmlmb3Jtcyk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6
ZGVmaW5lVW5pZm9ybSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2VuZXJhdGVHZW9t
ZXRyeVNoYWRlckhMU0wpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdlbmVyYXRlUG9p
bnRTcHJpdGVITFNMKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpkZWNvcmF0ZUF0dHJp
YnV0ZSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6aXNWYWxpZGF0ZWQpOgorICAgICAg
ICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldEFjdGl2ZUF0dHJpYnV0ZSk6CisgICAgICAgIChnbDo6
UHJvZ3JhbUJpbmFyeTo6Z2V0QWN0aXZlQXR0cmlidXRlQ291bnQpOgorICAgICAgICAoZ2w6OlBy
b2dyYW1CaW5hcnk6OmdldEFjdGl2ZUF0dHJpYnV0ZU1heExlbmd0aCk6CisgICAgICAgIChnbDo6
UHJvZ3JhbUJpbmFyeTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJp
bmFyeTo6Z2V0QWN0aXZlVW5pZm9ybUNvdW50KToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5
OjpnZXRBY3RpdmVVbmlmb3JtTWF4TGVuZ3RoKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5
Ojp2YWxpZGF0ZSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6dmFsaWRhdGVTYW1wbGVy
cyk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6U2FtcGxlcjo6U2FtcGxlcik6CisgICAg
ICAgIChnbDo6QXR0cmlidXRlU29ydGVyOjpBdHRyaWJ1dGVTb3J0ZXIpOgorICAgICAgICAoZ2w6
OkF0dHJpYnV0ZVNvcnRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFy
eTo6c29ydEF0dHJpYnV0ZXNCeUxheW91dCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Qcm9n
cmFtQmluYXJ5Lmg6IEFkZGVkLgorICAgICAgICAoZ2w6OlVuaWZvcm1Mb2NhdGlvbjo6VW5pZm9y
bUxvY2F0aW9uKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1F1ZXJ5LmNwcDogQWRkZWQuCisg
ICAgICAgIChnbDo6UXVlcnk6OlF1ZXJ5KToKKyAgICAgICAgKGdsOjpRdWVyeTo6flF1ZXJ5KToK
KyAgICAgICAgKGdsOjpRdWVyeTo6YmVnaW4pOgorICAgICAgICAoZ2w6OlF1ZXJ5OjplbmQpOgor
ICAgICAgICAoZ2w6OlF1ZXJ5OjpnZXRSZXN1bHQpOgorICAgICAgICAoZ2w6OlF1ZXJ5Ojppc1Jl
c3VsdEF2YWlsYWJsZSk6CisgICAgICAgIChnbDo6UXVlcnk6OmdldFR5cGUpOgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvUXVlcnkuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9S
ZW5kZXJidWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJJbnRlcmZh
Y2U6OlJlbmRlcmJ1ZmZlckludGVyZmFjZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVySW50
ZXJmYWNlOjphZGRQcm94eVJlZik6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVySW50ZXJmYWNl
OjpyZWxlYXNlUHJveHkpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVyZmFjZTo6Z2V0
UmVkU2l6ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVySW50ZXJmYWNlOjpnZXRHcmVlblNp
emUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVyZmFjZTo6Z2V0Qmx1ZVNpemUpOgor
ICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVyZmFjZTo6Z2V0QWxwaGFTaXplKToKKyAgICAg
ICAgKGdsOjpSZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldERlcHRoU2l6ZSk6CisgICAgICAgIChn
bDo6UmVuZGVyYnVmZmVySW50ZXJmYWNlOjpnZXRTdGVuY2lsU2l6ZSk6CisgICAgICAgIChnbDo6
UmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAo
Z2w6OlJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6flJlbmRlcmJ1ZmZlclRleHR1cmUyRCk6CisgICAg
ICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZTJEOjphZGRQcm94eVJlZik6CisgICAgICAgIChn
bDo6UmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpyZWxlYXNlUHJveHkpOgorICAgICAgICAoZ2w6OlJl
bmRlcmJ1ZmZlclRleHR1cmUyRDo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpSZW5k
ZXJidWZmZXJUZXh0dXJlMkQ6OmdldERlcHRoU3RlbmNpbCk6CisgICAgICAgIChnbDo6UmVuZGVy
YnVmZmVyVGV4dHVyZTJEOjpnZXRXaWR0aCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4
dHVyZTJEOjpnZXRIZWlnaHQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6
Z2V0SW50ZXJuYWxGb3JtYXQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6
Z2V0QWN0dWFsRm9ybWF0KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6Omdl
dFNhbXBsZXMpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6Z2V0U2VyaWFs
KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6UmVuZGVyYnVmZmVy
VGV4dHVyZUN1YmVNYXApOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFw
Ojp+UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXApOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZl
clRleHR1cmVDdWJlTWFwOjphZGRQcm94eVJlZik6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVy
VGV4dHVyZUN1YmVNYXA6OnJlbGVhc2VQcm94eSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVy
VGV4dHVyZUN1YmVNYXA6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVm
ZmVyVGV4dHVyZUN1YmVNYXA6OmdldERlcHRoU3RlbmNpbCk6CisgICAgICAgIChnbDo6UmVuZGVy
YnVmZmVyVGV4dHVyZUN1YmVNYXA6OmdldFdpZHRoKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZm
ZXJUZXh0dXJlQ3ViZU1hcDo6Z2V0SGVpZ2h0KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJU
ZXh0dXJlQ3ViZU1hcDo6Z2V0SW50ZXJuYWxGb3JtYXQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1
ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRBY3R1YWxGb3JtYXQpOgorICAgICAgICAoZ2w6OlJlbmRl
cmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRTYW1wbGVzKToKKyAgICAgICAgKGdsOjpSZW5kZXJi
dWZmZXJUZXh0dXJlQ3ViZU1hcDo6Z2V0U2VyaWFsKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZm
ZXI6OlJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjp+UmVuZGVyYnVm
ZmVyKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmFkZFJlZik6CisgICAgICAgIChnbDo6
UmVuZGVyYnVmZmVyOjpyZWxlYXNlKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldFJl
bmRlclRhcmdldCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXREZXB0aFN0ZW5jaWwp
OgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0V2lkdGgpOgorICAgICAgICAoZ2w6OlJl
bmRlcmJ1ZmZlcjo6Z2V0SGVpZ2h0KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldElu
dGVybmFsRm9ybWF0KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldEFjdHVhbEZvcm1h
dCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRSZWRTaXplKToKKyAgICAgICAgKGds
OjpSZW5kZXJidWZmZXI6OmdldEdyZWVuU2l6ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVy
OjpnZXRCbHVlU2l6ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRBbHBoYVNpemUp
OgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0RGVwdGhTaXplKToKKyAgICAgICAgKGds
OjpSZW5kZXJidWZmZXI6OmdldFN0ZW5jaWxTaXplKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZm
ZXI6OmdldFNhbXBsZXMpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0U2VyaWFsKToK
KyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OnNldFN0b3JhZ2UpOgorICAgICAgICAoZ2w6OlJl
bmRlcmJ1ZmZlclN0b3JhZ2U6OlJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoZ2w6OlJl
bmRlcmJ1ZmZlclN0b3JhZ2U6On5SZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKGdsOjpS
ZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAgICAoZ2w6OlJlbmRl
cmJ1ZmZlclN0b3JhZ2U6OmdldERlcHRoU3RlbmNpbCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVm
ZmVyU3RvcmFnZTo6Z2V0V2lkdGgpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6
OmdldEhlaWdodCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0SW50ZXJu
YWxGb3JtYXQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldEFjdHVhbEZv
cm1hdCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0U2FtcGxlcyk6Cisg
ICAgICAgIChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0U2VyaWFsKToKKyAgICAgICAgKGds
OjpSZW5kZXJidWZmZXJTdG9yYWdlOjppc3N1ZVNlcmlhbCk6CisgICAgICAgIChnbDo6UmVuZGVy
YnVmZmVyU3RvcmFnZTo6aXNzdWVDdWJlU2VyaWFscyk6CisgICAgICAgIChnbDo6Q29sb3JidWZm
ZXI6OkNvbG9yYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb2xvcmJ1ZmZlcjo6fkNvbG9yYnVmZmVy
KToKKyAgICAgICAgKGdsOjpDb2xvcmJ1ZmZlcjo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAg
KGdsOjpEZXB0aFN0ZW5jaWxidWZmZXI6OkRlcHRoU3RlbmNpbGJ1ZmZlcik6CisgICAgICAgIChn
bDo6RGVwdGhTdGVuY2lsYnVmZmVyOjp+RGVwdGhTdGVuY2lsYnVmZmVyKToKKyAgICAgICAgKGds
OjpEZXB0aFN0ZW5jaWxidWZmZXI6OmdldERlcHRoU3RlbmNpbCk6CisgICAgICAgIChnbDo6RGVw
dGhidWZmZXI6OkRlcHRoYnVmZmVyKToKKyAgICAgICAgKGdsOjpEZXB0aGJ1ZmZlcjo6fkRlcHRo
YnVmZmVyKToKKyAgICAgICAgKGdsOjpTdGVuY2lsYnVmZmVyOjpTdGVuY2lsYnVmZmVyKToKKyAg
ICAgICAgKGdsOjpTdGVuY2lsYnVmZmVyOjp+U3RlbmNpbGJ1ZmZlcik6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaDogQWRkZWQuCisgICAgICAgIChnbDo6UmVuZGVyYnVm
ZmVySW50ZXJmYWNlOjp+UmVuZGVyYnVmZmVySW50ZXJmYWNlKToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL1Jlc291cmNlTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoZ2w6OlJlc291cmNl
TWFuYWdlcjo6UmVzb3VyY2VNYW5hZ2VyKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6
On5SZXNvdXJjZU1hbmFnZXIpOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6YWRkUmVm
KToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OnJlbGVhc2UpOgorICAgICAgICAoZ2w6
OlJlc291cmNlTWFuYWdlcjo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1h
bmFnZXI6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpjcmVh
dGVQcm9ncmFtKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVRleHR1cmUp
OgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChnbDo6
UmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFu
YWdlcjo6ZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpkZWxl
dGVUZXh0dXJlKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZVJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpnZXRCdWZmZXIpOgorICAgICAg
ICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6Z2V0U2hhZGVyKToKKyAgICAgICAgKGdsOjpSZXNvdXJj
ZU1hbmFnZXI6OmdldFRleHR1cmUpOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6Z2V0
UHJvZ3JhbSk6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpnZXRSZW5kZXJidWZmZXIp
OgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6c2V0UmVuZGVyYnVmZmVyKToKKyAgICAg
ICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmNoZWNrQnVmZmVyQWxsb2NhdGlvbik6CisgICAgICAg
IChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpjaGVja1RleHR1cmVBbGxvY2F0aW9uKToKKyAgICAgICAg
KGdsOjpSZXNvdXJjZU1hbmFnZXI6OmNoZWNrUmVuZGVyYnVmZmVyQWxsb2NhdGlvbik6CisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9TaGFkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdsOjpTaGFkZXI6OlNo
YWRlcik6CisgICAgICAgIChnbDo6U2hhZGVyOjp+U2hhZGVyKToKKyAgICAgICAgKGdsOjpTaGFk
ZXI6OmdldEhhbmRsZSk6CisgICAgICAgIChnbDo6U2hhZGVyOjpzZXRTb3VyY2UpOgorICAgICAg
ICAoZ2w6OlNoYWRlcjo6Z2V0SW5mb0xvZ0xlbmd0aCk6CisgICAgICAgIChnbDo6U2hhZGVyOjpn
ZXRJbmZvTG9nKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmdldFNvdXJjZUxlbmd0aCk6CisgICAg
ICAgIChnbDo6U2hhZGVyOjpnZXRUcmFuc2xhdGVkU291cmNlTGVuZ3RoKToKKyAgICAgICAgKGds
OjpTaGFkZXI6OmdldFNvdXJjZUltcGwpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6Z2V0U291cmNl
KToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmdldFRyYW5zbGF0ZWRTb3VyY2UpOgorICAgICAgICAo
Z2w6OlNoYWRlcjo6Z2V0VW5pZm9ybXMpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6aXNDb21waWxl
ZCk6CisgICAgICAgIChnbDo6U2hhZGVyOjpnZXRITFNMKToKKyAgICAgICAgKGdsOjpTaGFkZXI6
OmFkZFJlZik6CisgICAgICAgIChnbDo6U2hhZGVyOjpyZWxlYXNlKToKKyAgICAgICAgKGdsOjpT
aGFkZXI6OmdldFJlZkNvdW50KToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmlzRmxhZ2dlZEZvckRl
bGV0aW9uKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmZsYWdGb3JEZWxldGlvbik6CisgICAgICAg
IChnbDo6U2hhZGVyOjppbml0aWFsaXplQ29tcGlsZXIpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6
cmVsZWFzZUNvbXBpbGVyKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OnBhcnNlVmFyeWluZ3MpOgor
ICAgICAgICAoZ2w6OlNoYWRlcjo6cmVzZXRWYXJ5aW5nc1JlZ2lzdGVyQXNzaWdubWVudCk6Cisg
ICAgICAgIChnbDo6U2hhZGVyOjp1bmNvbXBpbGUpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6Y29t
cGlsZVRvSExTTCk6CisgICAgICAgIChnbDo6U2hhZGVyOjpwYXJzZVR5cGUpOgorICAgICAgICAo
Z2w6OlNoYWRlcjo6Y29tcGFyZVZhcnlpbmcpOgorICAgICAgICAoZ2w6OlZlcnRleFNoYWRlcjo6
VmVydGV4U2hhZGVyKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhTaGFkZXI6On5WZXJ0ZXhTaGFkZXIp
OgorICAgICAgICAoZ2w6OlZlcnRleFNoYWRlcjo6Z2V0VHlwZSk6CisgICAgICAgIChnbDo6VmVy
dGV4U2hhZGVyOjp1bmNvbXBpbGUpOgorICAgICAgICAoZ2w6OlZlcnRleFNoYWRlcjo6Y29tcGls
ZSk6CisgICAgICAgIChnbDo6VmVydGV4U2hhZGVyOjpnZXRTZW1hbnRpY0luZGV4KToKKyAgICAg
ICAgKGdsOjpWZXJ0ZXhTaGFkZXI6OnBhcnNlQXR0cmlidXRlcyk6CisgICAgICAgIChnbDo6RnJh
Z21lbnRTaGFkZXI6OkZyYWdtZW50U2hhZGVyKToKKyAgICAgICAgKGdsOjpGcmFnbWVudFNoYWRl
cjo6fkZyYWdtZW50U2hhZGVyKToKKyAgICAgICAgKGdsOjpGcmFnbWVudFNoYWRlcjo6Z2V0VHlw
ZSk6CisgICAgICAgIChnbDo6RnJhZ21lbnRTaGFkZXI6OmNvbXBpbGUpOgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvU2hhZGVyLmg6IEFkZGVkLgorICAgICAgICAoZ2w6OlZhcnlpbmc6OlZhcnlp
bmcpOgorICAgICAgICAoZ2w6OkF0dHJpYnV0ZTo6QXR0cmlidXRlKToKKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL1RleHR1cmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdsOjpUZXh0dXJlOjpUZXh0
dXJlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjp+VGV4dHVyZSk6CisgICAgICAgIChnbDo6VGV4
dHVyZTo6c2V0TWluRmlsdGVyKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpzZXRNYWdGaWx0ZXIp
OgorICAgICAgICAoZ2w6OlRleHR1cmU6OnNldFdyYXBTKToKKyAgICAgICAgKGdsOjpUZXh0dXJl
OjpzZXRXcmFwVCk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6c2V0TWF4QW5pc290cm9weSk6Cisg
ICAgICAgIChnbDo6VGV4dHVyZTo6c2V0VXNhZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmU6Omdl
dE1pbkZpbHRlcik6CisgICAgICAgIChnbDo6VGV4dHVyZTo6Z2V0TWFnRmlsdGVyKToKKyAgICAg
ICAgKGdsOjpUZXh0dXJlOjpnZXRXcmFwUyk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6Z2V0V3Jh
cFQpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmdldE1heEFuaXNvdHJvcHkpOgorICAgICAgICAo
Z2w6OlRleHR1cmU6OmdldExvZE9mZnNldCk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6Z2V0U2Ft
cGxlclN0YXRlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpnZXRVc2FnZSk6CisgICAgICAgIChn
bDo6VGV4dHVyZTo6aXNNaXBtYXBGaWx0ZXJlZCk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6c2V0
SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OnNldENvbXByZXNzZWRJbWFnZSk6CisgICAg
ICAgIChnbDo6VGV4dHVyZTo6c3ViSW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OnN1Yklt
YWdlQ29tcHJlc3NlZCk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6Z2V0TmF0aXZlVGV4dHVyZSk6
CisgICAgICAgIChnbDo6VGV4dHVyZTo6aGFzRGlydHlJbWFnZXMpOgorICAgICAgICAoZ2w6OlRl
eHR1cmU6OnJlc2V0RGlydHkpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmdldFRleHR1cmVTZXJp
YWwpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmdldFJlbmRlclRhcmdldFNlcmlhbCk6CisgICAg
ICAgIChnbDo6VGV4dHVyZTo6aXNJbW11dGFibGUpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmNy
ZWF0aW9uTGV2ZWxzKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OlRleHR1cmUyRCk6CisgICAg
ICAgIChnbDo6VGV4dHVyZTJEOjp+VGV4dHVyZTJEKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6
OmFkZFByb3h5UmVmKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnJlbGVhc2VQcm94eSk6Cisg
ICAgICAgIChnbDo6VGV4dHVyZTJEOjpnZXRUYXJnZXQpOgorICAgICAgICAoZ2w6OlRleHR1cmUy
RDo6Z2V0V2lkdGgpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Z2V0SGVpZ2h0KToKKyAgICAg
ICAgKGdsOjpUZXh0dXJlMkQ6OmdldEludGVybmFsRm9ybWF0KToKKyAgICAgICAgKGdsOjpUZXh0
dXJlMkQ6OmdldEFjdHVhbEZvcm1hdCk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpyZWRlZmlu
ZUltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnNldEltYWdlKToKKyAgICAgICAgKGds
OjpUZXh0dXJlMkQ6OmJpbmRUZXhJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpyZWxl
YXNlVGV4SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6c2V0Q29tcHJlc3NlZEltYWdl
KToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmNvbW1pdFJlY3QpOgorICAgICAgICAoZ2w6OlRl
eHR1cmUyRDo6c3ViSW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6c3ViSW1hZ2VDb21w
cmVzc2VkKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmNvcHlJbWFnZSk6CisgICAgICAgIChn
bDo6VGV4dHVyZTJEOjpjb3B5U3ViSW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6c3Rv
cmFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjppc1NhbXBsZXJDb21wbGV0ZSk6CisgICAg
ICAgIChnbDo6VGV4dHVyZTJEOjppc01pcG1hcENvbXBsZXRlKToKKyAgICAgICAgKGdsOjpUZXh0
dXJlMkQ6OmlzQ29tcHJlc3NlZCk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjppc0RlcHRoKToK
KyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoZ2w6OlRl
eHR1cmUyRDo6dXBkYXRlVGV4dHVyZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpjb252ZXJ0
VG9SZW5kZXJUYXJnZXQpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Z2VuZXJhdGVNaXBtYXBz
KToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdldFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChn
bDo6VGV4dHVyZTJEOjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6
Z2V0RGVwdGhTdGVuY2lsKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmxldmVsQ291bnQpOgor
ICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Z2V0U3RvcmFnZSk6CisgICAgICAgIChnbDo6VGV4dHVy
ZUN1YmVNYXA6OlRleHR1cmVDdWJlTWFwKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6
flRleHR1cmVDdWJlTWFwKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6YWRkUHJveHlS
ZWYpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpyZWxlYXNlUHJveHkpOgorICAgICAg
ICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpnZXRUYXJnZXQpOgorICAgICAgICAoZ2w6OlRleHR1cmVD
dWJlTWFwOjpnZXRXaWR0aCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmdldEhlaWdo
dCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmdldEludGVybmFsRm9ybWF0KToKKyAg
ICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Z2V0QWN0dWFsRm9ybWF0KToKKyAgICAgICAgKGds
OjpUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VQb3NYKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3Vi
ZU1hcDo6c2V0SW1hZ2VOZWdYKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c2V0SW1h
Z2VQb3NZKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWdZKToKKyAg
ICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VQb3NaKToKKyAgICAgICAgKGdsOjpU
ZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWdaKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1h
cDo6c2V0Q29tcHJlc3NlZEltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Y29t
bWl0UmVjdCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnN1YkltYWdlKToKKyAgICAg
ICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c3ViSW1hZ2VDb21wcmVzc2VkKToKKyAgICAgICAgKGds
OjpUZXh0dXJlQ3ViZU1hcDo6aXNTYW1wbGVyQ29tcGxldGUpOgorICAgICAgICAoZ2w6OlRleHR1
cmVDdWJlTWFwOjppc0N1YmVDb21wbGV0ZSk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6
OmlzTWlwbWFwQ3ViZUNvbXBsZXRlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6aXND
b21wcmVzc2VkKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Y3JlYXRlVGV4dHVyZSk6
CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnVwZGF0ZVRleHR1cmUpOgorICAgICAgICAo
Z2w6OlRleHR1cmVDdWJlTWFwOjpjb252ZXJ0VG9SZW5kZXJUYXJnZXQpOgorICAgICAgICAoZ2w6
OlRleHR1cmVDdWJlTWFwOjpzZXRJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6
OmZhY2VJbmRleCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnJlZGVmaW5lSW1hZ2Up
OgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpjb3B5SW1hZ2UpOgorICAgICAgICAoZ2w6
OlRleHR1cmVDdWJlTWFwOjpjb3B5U3ViSW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJl
TWFwOjpzdG9yYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Z2VuZXJhdGVNaXBt
YXBzKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Z2V0UmVuZGVyYnVmZmVyKToKKyAg
ICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGds
OjpUZXh0dXJlQ3ViZU1hcDo6bGV2ZWxDb3VudCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVN
YXA6OmdldFN0b3JhZ2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvVGV4dHVyZS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1VuaWZvcm0uY3BwOiBBZGRlZC4KKyAgICAgICAg
KGdsOjpVbmlmb3JtOjpVbmlmb3JtKToKKyAgICAgICAgKGdsOjpVbmlmb3JtOjp+VW5pZm9ybSk6
CisgICAgICAgIChnbDo6VW5pZm9ybTo6aXNBcnJheSk6CisgICAgICAgIChnbDo6VW5pZm9ybTo6
ZWxlbWVudENvdW50KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1VuaWZvcm0uaDogQWRkZWQu
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9hbmdsZXR5cGVzLmg6IEFkZGVkLgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvY29uc3RhbnRzLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVT
djIvbGliR0xFU3YyLmNwcDogQWRkZWQuCisgICAgICAgICh2YWxpZEltYWdlU2l6ZSk6CisgICAg
ICAgIChjaGVja1RleHR1cmVGb3JtYXRUeXBlKToKKyAgICAgICAgKHZhbGlkYXRlU3ViSW1hZ2VQ
YXJhbXMyRCk6CisgICAgICAgICh2YWxpZGF0ZVN1YkltYWdlUGFyYW1zQ3ViZSk6CisgICAgICAg
ICh2YWxpZFJlYWRGb3JtYXRUeXBlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2
Mi5kZWY6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvbGliR0xFU3YyLnJjOiBBZGRl
ZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qOiBBZGRlZC4KKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qLmZpbHRlcnM6IEFkZGVkLgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvbWFpbi5jcHA6IEFkZGVkLgorICAgICAgICAoRGxsTWFp
bik6CisgICAgICAgIChnbDo6bWFrZUN1cnJlbnQpOgorICAgICAgICAoZ2w6OmdldENvbnRleHQp
OgorICAgICAgICAoZ2w6OmdldE5vbkxvc3RDb250ZXh0KToKKyAgICAgICAgKGdsOjpnZXREaXNw
bGF5KToKKyAgICAgICAgKGdsOjplcnJvcik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9tYWlu
Lmg6IEFkZGVkLgorICAgICAgICAoZ2w6OmVycm9yKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3Yy
L21hdGh1dGlsLmg6IEFkZGVkLgorICAgICAgICAoZ2w6OlZlY3RvcjQ6OlZlY3RvcjQpOgorICAg
ICAgICAoZ2w6OmlzUG93Mik6CisgICAgICAgIChnbDo6bG9nMik6CisgICAgICAgIChnbDo6Y2Vp
bFBvdzIpOgorICAgICAgICAoZ2w6OmNsYW1wKToKKyAgICAgICAgKGdsOjpjbGFtcDAxKToKKyAg
ICAgICAgKGdsOjp1bm9ybSk6CisgICAgICAgIChnbDo6c3VwcG9ydHNTU0UyKToKKyAgICAgICAg
KGdsOjpmbG9hdDMyVG9GbG9hdDE2KToKKyAgICAgICAgKHJ4OjpSYW5nZTo6UmFuZ2UpOgorICAg
ICAgICAqIHNyYy9saWJHTEVTdjIvcHJlY29tcGlsZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBz
cmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVT
djIvcmVuZGVyZXI6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvQmxp
dC5jcHA6IEFkZGVkLgorICAgICAgICAocng6OkJsaXQ6OkJsaXQpOgorICAgICAgICAocng6OkJs
aXQ6On5CbGl0KToKKyAgICAgICAgKHJ4OjpCbGl0Ojppbml0R2VvbWV0cnkpOgorICAgICAgICAo
cng6OkJsaXQ6OnNldFNoYWRlcik6CisgICAgICAgIChyeDo6QmxpdDo6c2V0VmVydGV4U2hhZGVy
KToKKyAgICAgICAgKHJ4OjpCbGl0OjpzZXRQaXhlbFNoYWRlcik6CisgICAgICAgIChyeDo6Qmxp
dDo6Z2V0U3VyZmFjZVJlY3QpOgorICAgICAgICAocng6OkJsaXQ6OmJveEZpbHRlcik6CisgICAg
ICAgIChyeDo6QmxpdDo6Y29weSk6CisgICAgICAgIChyeDo6QmxpdDo6Zm9ybWF0Q29udmVydCk6
CisgICAgICAgIChyeDo6QmxpdDo6c2V0Rm9ybWF0Q29udmVydFNoYWRlcnMpOgorICAgICAgICAo
cng6OkJsaXQ6OmNvcHlTdXJmYWNlVG9UZXh0dXJlKToKKyAgICAgICAgKHJ4OjpCbGl0OjpzZXRW
aWV3cG9ydCk6CisgICAgICAgIChyeDo6QmxpdDo6c2V0Q29tbW9uQmxpdFN0YXRlKToKKyAgICAg
ICAgKHJ4OjpCbGl0OjpyZW5kZXIpOgorICAgICAgICAocng6OkJsaXQ6OnNhdmVTdGF0ZSk6Cisg
ICAgICAgIChyeDo6QmxpdDo6cmVzdG9yZVN0YXRlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL0JsaXQuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9CdWZmZXJTdG9yYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTo6
QnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTo6fkJ1ZmZlclN0b3Jh
Z2UpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2U6OmdldFNlcmlhbCk6CisgICAgICAgIChy
eDo6QnVmZmVyU3RvcmFnZTo6dXBkYXRlU2VyaWFsKToKKyAgICAgICAgKHJ4OjpCdWZmZXJTdG9y
YWdlOjptYXJrQnVmZmVyVXNhZ2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIv
QnVmZmVyU3RvcmFnZS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVy
L0J1ZmZlclN0b3JhZ2UxMS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2Ux
MTo6QnVmZmVyU3RvcmFnZTExKToKKyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlMTE6On5CdWZm
ZXJTdG9yYWdlMTEpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2UxMTo6bWFrZUJ1ZmZlclN0
b3JhZ2UxMSk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTExOjpnZXREYXRhKToKKyAgICAg
ICAgKHJ4OjpCdWZmZXJTdG9yYWdlMTE6OnNldERhdGEpOgorICAgICAgICAocng6OkJ1ZmZlclN0
b3JhZ2UxMTo6Y2xlYXIpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2UxMTo6Z2V0U2l6ZSk6
CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTExOjpzdXBwb3J0c0RpcmVjdEJpbmRpbmcpOgor
ICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2UxMTo6bWFya0J1ZmZlclVzYWdlKToKKyAgICAgICAg
KHJ4OjpCdWZmZXJTdG9yYWdlMTE6OmdldEJ1ZmZlcik6CisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OkJ1
ZmZlclN0b3JhZ2U5OjpCdWZmZXJTdG9yYWdlOSk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFn
ZTk6On5CdWZmZXJTdG9yYWdlOSk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTk6Om1ha2VC
dWZmZXJTdG9yYWdlOSk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTk6OmdldERhdGEpOgor
ICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2U5OjpzZXREYXRhKToKKyAgICAgICAgKHJ4OjpCdWZm
ZXJTdG9yYWdlOTo6Y2xlYXIpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2U5OjpnZXRTaXpl
KToKKyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlOTo6c3VwcG9ydHNEaXJlY3RCaW5kaW5nKToK
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2U5Lmg6IEFkZGVk
LgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2UxMS5jcHA6IEFkZGVkLgor
ICAgICAgICAocng6OkZlbmNlMTE6OkZlbmNlMTEpOgorICAgICAgICAocng6OkZlbmNlMTE6On5G
ZW5jZTExKToKKyAgICAgICAgKHJ4OjpGZW5jZTExOjppc0ZlbmNlKToKKyAgICAgICAgKHJ4OjpG
ZW5jZTExOjpzZXRGZW5jZSk6CisgICAgICAgIChyeDo6RmVuY2UxMTo6dGVzdEZlbmNlKToKKyAg
ICAgICAgKHJ4OjpGZW5jZTExOjpmaW5pc2hGZW5jZSk6CisgICAgICAgIChyeDo6RmVuY2UxMTo6
Z2V0RmVuY2Vpdik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTExLmg6
IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2U5LmNwcDogQWRk
ZWQuCisgICAgICAgIChyeDo6RmVuY2U5OjpGZW5jZTkpOgorICAgICAgICAocng6OkZlbmNlOTo6
fkZlbmNlOSk6CisgICAgICAgIChyeDo6RmVuY2U5Ojppc0ZlbmNlKToKKyAgICAgICAgKHJ4OjpG
ZW5jZTk6OnNldEZlbmNlKToKKyAgICAgICAgKHJ4OjpGZW5jZTk6OnRlc3RGZW5jZSk6CisgICAg
ICAgIChyeDo6RmVuY2U5OjpmaW5pc2hGZW5jZSk6CisgICAgICAgIChyeDo6RmVuY2U5OjpnZXRG
ZW5jZWl2KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlOS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlSW1wbC5oOiBBZGRlZC4K
KyAgICAgICAgKHJ4OjpGZW5jZUltcGw6OkZlbmNlSW1wbCk6CisgICAgICAgIChyeDo6RmVuY2VJ
bXBsOjp+RmVuY2VJbXBsKToKKyAgICAgICAgKHJ4OjpGZW5jZUltcGw6OnNldFN0YXR1cyk6Cisg
ICAgICAgIChyeDo6RmVuY2VJbXBsOjpnZXRTdGF0dXMpOgorICAgICAgICAocng6OkZlbmNlSW1w
bDo6c2V0Q29uZGl0aW9uKToKKyAgICAgICAgKHJ4OjpGZW5jZUltcGw6OmdldENvbmRpdGlvbik6
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5jcHA6IEFkZGVkLgorICAg
ICAgICAocng6OkltYWdlOjpJbWFnZSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRBbHBoYURh
dGFUb0JHUkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkQWxwaGFEYXRhVG9OYXRpdmUpOgor
ICAgICAgICAocng6OkltYWdlOjpsb2FkQWxwaGFGbG9hdERhdGFUb1JHQkEpOgorICAgICAgICAo
cng6OkltYWdlOjpsb2FkQWxwaGFIYWxmRmxvYXREYXRhVG9SR0JBKToKKyAgICAgICAgKHJ4OjpJ
bWFnZTo6bG9hZEx1bWluYW5jZURhdGFUb05hdGl2ZU9yQkdSQSk6CisgICAgICAgIChyeDo6SW1h
Z2U6OmxvYWRMdW1pbmFuY2VGbG9hdERhdGFUb1JHQkEpOgorICAgICAgICAocng6OkltYWdlOjps
b2FkTHVtaW5hbmNlRmxvYXREYXRhVG9SR0IpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkTHVt
aW5hbmNlSGFsZkZsb2F0RGF0YVRvUkdCQSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRMdW1p
bmFuY2VBbHBoYURhdGFUb05hdGl2ZU9yQkdSQSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRM
dW1pbmFuY2VBbHBoYUZsb2F0RGF0YVRvUkdCQSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRM
dW1pbmFuY2VBbHBoYUhhbGZGbG9hdERhdGFUb1JHQkEpOgorICAgICAgICAocng6OkltYWdlOjps
b2FkUkdCVUJ5dGVEYXRhVG9CR1JYKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQlVCeXRl
RGF0YVRvUkdCQSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRSR0I1NjVEYXRhVG9CR1JBKToK
KyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQjU2NURhdGFUb1JHQkEpOgorICAgICAgICAocng6
OkltYWdlOjpsb2FkUkdCRmxvYXREYXRhVG9SR0JBKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9h
ZFJHQkZsb2F0RGF0YVRvTmF0aXZlKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQkhhbGZG
bG9hdERhdGFUb1JHQkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkUkdCQVVCeXRlRGF0YVRv
QkdSQSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRSR0JBVUJ5dGVEYXRhVG9OYXRpdmUpOgor
ICAgICAgICAocng6OkltYWdlOjpsb2FkUkdCQTQ0NDREYXRhVG9CR1JBKToKKyAgICAgICAgKHJ4
OjpJbWFnZTo6bG9hZFJHQkE0NDQ0RGF0YVRvUkdCQSk6CisgICAgICAgIChyeDo6SW1hZ2U6Omxv
YWRSR0JBNTU1MURhdGFUb0JHUkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkUkdCQTU1NTFE
YXRhVG9SR0JBKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQkFGbG9hdERhdGFUb1JHQkEp
OgorICAgICAgICAocng6OkltYWdlOjpsb2FkUkdCQUhhbGZGbG9hdERhdGFUb1JHQkEpOgorICAg
ICAgICAocng6OkltYWdlOjpsb2FkQkdSQURhdGFUb0JHUkEpOgorICAgICAgICAqIHNyYy9saWJH
TEVTdjIvcmVuZGVyZXIvSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChyeDo6SW1hZ2U6On5JbWFn
ZSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmdldFdpZHRoKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6
Z2V0SGVpZ2h0KToKKyAgICAgICAgKHJ4OjpJbWFnZTo6Z2V0SW50ZXJuYWxGb3JtYXQpOgorICAg
ICAgICAocng6OkltYWdlOjpnZXRBY3R1YWxGb3JtYXQpOgorICAgICAgICAocng6OkltYWdlOjpt
YXJrRGlydHkpOgorICAgICAgICAocng6OkltYWdlOjptYXJrQ2xlYW4pOgorICAgICAgICAocng6
OkltYWdlOjpzZXRNYW5hZ2VkU3VyZmFjZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9JbWFnZTExLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6SW1hZ2UxMTo6SW1hZ2UxMSk6
CisgICAgICAgIChyeDo6SW1hZ2UxMTo6fkltYWdlMTEpOgorICAgICAgICAocng6OkltYWdlMTE6
Om1ha2VJbWFnZTExKToKKyAgICAgICAgKHJ4OjpJbWFnZTExOjpnZW5lcmF0ZU1pcG1hcCk6Cisg
ICAgICAgIChyeDo6SW1hZ2UxMTo6aXNEaXJ0eSk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6dXBk
YXRlU3VyZmFjZSk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6cmVkZWZpbmUpOgorICAgICAgICAo
cng6OkltYWdlMTE6OmlzUmVuZGVyYWJsZUZvcm1hdCk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6
Z2V0RFhHSUZvcm1hdCk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6bG9hZERhdGEpOgorICAgICAg
ICAocng6OkltYWdlMTE6OmxvYWRDb21wcmVzc2VkRGF0YSk6CisgICAgICAgIChyeDo6SW1hZ2Ux
MTo6Y29weSk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6Z2V0U3RhZ2luZ1RleHR1cmUpOgorICAg
ICAgICAocng6OkltYWdlMTE6OmdldFN0YWdpbmdTdWJyZXNvdXJjZSk6CisgICAgICAgIChyeDo6
SW1hZ2UxMTo6Y3JlYXRlU3RhZ2luZ1RleHR1cmUpOgorICAgICAgICAocng6OkltYWdlMTE6Om1h
cCk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6dW5tYXApOgorICAgICAgICAqIHNyYy9saWJHTEVT
djIvcmVuZGVyZXIvSW1hZ2UxMS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL0ltYWdlOS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OkltYWdlOTo6SW1hZ2U5KToK
KyAgICAgICAgKHJ4OjpJbWFnZTk6On5JbWFnZTkpOgorICAgICAgICAocng6OkltYWdlOTo6Z2Vu
ZXJhdGVNaXApOgorICAgICAgICAocng6OkltYWdlOTo6bWFrZUltYWdlOSk6CisgICAgICAgIChy
eDo6SW1hZ2U5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChyeDo6SW1hZ2U5Ojpjb3B5TG9j
a2FibGVTdXJmYWNlcyk6CisgICAgICAgIChyeDo6SW1hZ2U5OjpyZWRlZmluZSk6CisgICAgICAg
IChyeDo6SW1hZ2U5OjpjcmVhdGVTdXJmYWNlKToKKyAgICAgICAgKHJ4OjpJbWFnZTk6OmxvY2sp
OgorICAgICAgICAocng6OkltYWdlOTo6dW5sb2NrKToKKyAgICAgICAgKHJ4OjpJbWFnZTk6Omlz
UmVuZGVyYWJsZUZvcm1hdCk6CisgICAgICAgIChyeDo6SW1hZ2U5OjpnZXREM0RGb3JtYXQpOgor
ICAgICAgICAocng6OkltYWdlOTo6Z2V0U3VyZmFjZSk6CisgICAgICAgIChyeDo6SW1hZ2U5Ojpz
ZXRNYW5hZ2VkU3VyZmFjZSk6CisgICAgICAgIChyeDo6SW1hZ2U5Ojp1cGRhdGVTdXJmYWNlKToK
KyAgICAgICAgKHJ4OjpJbWFnZTk6OmxvYWREYXRhKToKKyAgICAgICAgKHJ4OjpJbWFnZTk6Omxv
YWRDb21wcmVzc2VkRGF0YSk6CisgICAgICAgIChyeDo6SW1hZ2U5Ojpjb3B5KToKKyAgICAgICAg
KiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlOS5oOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpJ
bWFnZTk6OmlzRGlydHkpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2VT
U0UyLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRSR0JBVUJ5dGVEYXRhVG9C
R1JBU1NFMik6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRBbHBoYURhdGFUb0JHUkFTU0UyKToK
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmNwcDogQWRkZWQu
CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI6OkluZGV4QnVmZmVyKToKKyAgICAgICAgKHJ4OjpJ
bmRleEJ1ZmZlcjo6fkluZGV4QnVmZmVyKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjo6Z2V0
U2VyaWFsKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjo6dXBkYXRlU2VyaWFsKToKKyAgICAg
ICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6SW5kZXhCdWZmZXJJbnRlcmZhY2UpOgorICAg
ICAgICAocng6OkluZGV4QnVmZmVySW50ZXJmYWNlOjp+SW5kZXhCdWZmZXJJbnRlcmZhY2UpOgor
ICAgICAgICAocng6OkluZGV4QnVmZmVySW50ZXJmYWNlOjpnZXRJbmRleFR5cGUpOgorICAgICAg
ICAocng6OkluZGV4QnVmZmVySW50ZXJmYWNlOjpnZXRCdWZmZXJTaXplKToKKyAgICAgICAgKHJ4
OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6Z2V0U2VyaWFsKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1
ZmZlckludGVyZmFjZTo6bWFwQnVmZmVyKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlckludGVy
ZmFjZTo6dW5tYXBCdWZmZXIpOgorICAgICAgICAocng6OkluZGV4QnVmZmVySW50ZXJmYWNlOjpn
ZXRJbmRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXJJbnRlcmZhY2U6OmdldFdy
aXRlUG9zaXRpb24pOgorICAgICAgICAocng6OkluZGV4QnVmZmVySW50ZXJmYWNlOjpzZXRXcml0
ZVBvc2l0aW9uKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6ZGlzY2FyZCk6
CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXJJbnRlcmZhY2U6OnNldEJ1ZmZlclNpemUpOgorICAg
ICAgICAocng6OlN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlOjpTdHJlYW1pbmdJbmRleEJ1
ZmZlckludGVyZmFjZSk6CisgICAgICAgIChyeDo6U3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZh
Y2U6On5TdHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZSk6CisgICAgICAgIChyeDo6U3RyZWFt
aW5nSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2VydmVCdWZmZXJTcGFjZSk6CisgICAgICAgIChy
eDo6U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6OlN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNl
KToKKyAgICAgICAgKHJ4OjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZTo6flN0YXRpY0luZGV4
QnVmZmVySW50ZXJmYWNlKToKKyAgICAgICAgKHJ4OjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFj
ZTo6cmVzZXJ2ZUJ1ZmZlclNwYWNlKToKKyAgICAgICAgKHJ4OjpTdGF0aWNJbmRleEJ1ZmZlcklu
dGVyZmFjZTo6bG9va3VwUmFuZ2UpOgorICAgICAgICAocng6OlN0YXRpY0luZGV4QnVmZmVySW50
ZXJmYWNlOjphZGRSYW5nZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRl
eEJ1ZmZlci5oOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFj
ZTo6SW5kZXhSYW5nZTo6b3BlcmF0b3I8KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRl
cmVyL0luZGV4QnVmZmVyMTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjEx
OjpJbmRleEJ1ZmZlcjExKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjExOjp+SW5kZXhCdWZm
ZXIxMSk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXIxMTo6aW5pdGlhbGl6ZSk6CisgICAgICAg
IChyeDo6SW5kZXhCdWZmZXIxMTo6bWFrZUluZGV4QnVmZmVyMTEpOgorICAgICAgICAocng6Oklu
ZGV4QnVmZmVyMTE6Om1hcEJ1ZmZlcik6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXIxMTo6dW5t
YXBCdWZmZXIpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyMTE6OmdldEluZGV4VHlwZSk6Cisg
ICAgICAgIChyeDo6SW5kZXhCdWZmZXIxMTo6Z2V0QnVmZmVyU2l6ZSk6CisgICAgICAgIChyeDo6
SW5kZXhCdWZmZXIxMTo6c2V0U2l6ZSk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXIxMTo6ZGlz
Y2FyZCk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXIxMTo6Z2V0SW5kZXhGb3JtYXQpOgorICAg
ICAgICAocng6OkluZGV4QnVmZmVyMTE6OmdldEJ1ZmZlcik6CisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjExLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJH
TEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXI5LmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6SW5k
ZXhCdWZmZXI5OjpJbmRleEJ1ZmZlcjkpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyOTo6fklu
ZGV4QnVmZmVyOSk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI5Ojppbml0aWFsaXplKToKKyAg
ICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjk6Om1ha2VJbmRleEJ1ZmZlcjkpOgorICAgICAgICAocng6
OkluZGV4QnVmZmVyOTo6bWFwQnVmZmVyKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjk6OnVu
bWFwQnVmZmVyKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjk6OmdldEluZGV4VHlwZSk6Cisg
ICAgICAgIChyeDo6SW5kZXhCdWZmZXI5OjpnZXRCdWZmZXJTaXplKToKKyAgICAgICAgKHJ4OjpJ
bmRleEJ1ZmZlcjk6OnNldFNpemUpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyOTo6ZGlzY2Fy
ZCk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI5OjpnZXRJbmRleEZvcm1hdCk6CisgICAgICAg
IChyeDo6SW5kZXhCdWZmZXI5OjpnZXRCdWZmZXIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
cmVuZGVyZXIvSW5kZXhCdWZmZXI5Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
cmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAocng6OkluZGV4
RGF0YU1hbmFnZXI6OkluZGV4RGF0YU1hbmFnZXIpOgorICAgICAgICAocng6OkluZGV4RGF0YU1h
bmFnZXI6On5JbmRleERhdGFNYW5hZ2VyKToKKyAgICAgICAgKHJ4OjppbmRleFR5cGVTaXplKToK
KyAgICAgICAgKHJ4Ojpjb252ZXJ0SW5kaWNlcyk6CisgICAgICAgIChyeDo6Y29tcHV0ZVJhbmdl
KToKKyAgICAgICAgKHJ4OjpJbmRleERhdGFNYW5hZ2VyOjpwcmVwYXJlSW5kZXhEYXRhKToKKyAg
ICAgICAgKHJ4OjpJbmRleERhdGFNYW5hZ2VyOjpnZXRDb3VudGluZ0luZGljZXMpOgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKHJ4OjpJbnB1dExheW91dENhY2hlOjpJbnB1dExheW91dENhY2hlKToKKyAg
ICAgICAgKHJ4OjpJbnB1dExheW91dENhY2hlOjp+SW5wdXRMYXlvdXRDYWNoZSk6CisgICAgICAg
IChyeDo6SW5wdXRMYXlvdXRDYWNoZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChyeDo6SW5wdXRM
YXlvdXRDYWNoZTo6Y2xlYXIpOgorICAgICAgICAocng6OklucHV0TGF5b3V0Q2FjaGU6OmFwcGx5
VmVydGV4QnVmZmVycyk6CisgICAgICAgIChyeDo6SW5wdXRMYXlvdXRDYWNoZTo6aGFzaElucHV0
TGF5b3V0KToKKyAgICAgICAgKHJ4OjpJbnB1dExheW91dENhY2hlOjpjb21wYXJlSW5wdXRMYXlv
dXRzKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUu
aDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmNwcDog
QWRkZWQuCisgICAgICAgIChyeDo6UXVlcnkxMTo6UXVlcnkxMSk6CisgICAgICAgIChyeDo6UXVl
cnkxMTo6flF1ZXJ5MTEpOgorICAgICAgICAocng6OlF1ZXJ5MTE6OmJlZ2luKToKKyAgICAgICAg
KHJ4OjpRdWVyeTExOjplbmQpOgorICAgICAgICAocng6OlF1ZXJ5MTE6OmdldFJlc3VsdCk6Cisg
ICAgICAgIChyeDo6UXVlcnkxMTo6aXNSZXN1bHRBdmFpbGFibGUpOgorICAgICAgICAocng6OlF1
ZXJ5MTE6OnRlc3RRdWVyeSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVy
eTExLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnk5LmNw
cDogQWRkZWQuCisgICAgICAgIChyeDo6UXVlcnk5OjpRdWVyeTkpOgorICAgICAgICAocng6OlF1
ZXJ5OTo6flF1ZXJ5OSk6CisgICAgICAgIChyeDo6UXVlcnk5OjpiZWdpbik6CisgICAgICAgIChy
eDo6UXVlcnk5OjplbmQpOgorICAgICAgICAocng6OlF1ZXJ5OTo6Z2V0UmVzdWx0KToKKyAgICAg
ICAgKHJ4OjpRdWVyeTk6OmlzUmVzdWx0QXZhaWxhYmxlKToKKyAgICAgICAgKHJ4OjpRdWVyeTk6
OnRlc3RRdWVyeSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTkuaDog
QWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeUltcGwuaDogQWRk
ZWQuCisgICAgICAgIChyeDo6UXVlcnlJbXBsOjpRdWVyeUltcGwpOgorICAgICAgICAocng6OlF1
ZXJ5SW1wbDo6flF1ZXJ5SW1wbCk6CisgICAgICAgIChyeDo6UXVlcnlJbXBsOjpnZXRUeXBlKToK
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclN0YXRlQ2FjaGUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpSZW5kZXJTdGF0ZUNhY2hlKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjp+UmVuZGVyU3RhdGVDYWNoZSk6CisgICAg
ICAgIChyeDo6UmVuZGVyU3RhdGVDYWNoZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChyeDo6UmVu
ZGVyU3RhdGVDYWNoZTo6Y2xlYXIpOgorICAgICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6Omhh
c2hCbGVuZFN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpjb21wYXJlQmxl
bmRTdGF0ZXMpOgorICAgICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6OmdldEJsZW5kU3RhdGUp
OgorICAgICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6Omhhc2hSYXN0ZXJpemVyU3RhdGUpOgor
ICAgICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6OmNvbXBhcmVSYXN0ZXJpemVyU3RhdGVzKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpnZXRSYXN0ZXJpemVyU3RhdGUpOgorICAg
ICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6Omhhc2hEZXB0aFN0ZW5jaWxTdGF0ZSk6CisgICAg
ICAgIChyeDo6UmVuZGVyU3RhdGVDYWNoZTo6Y29tcGFyZURlcHRoU3RlbmNpbFN0YXRlcyk6Cisg
ICAgICAgIChyeDo6UmVuZGVyU3RhdGVDYWNoZTo6Z2V0RGVwdGhTdGVuY2lsU3RhdGUpOgorICAg
ICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6Omhhc2hTYW1wbGVyU3RhdGUpOgorICAgICAgICAo
cng6OlJlbmRlclN0YXRlQ2FjaGU6OmNvbXBhcmVTYW1wbGVyU3RhdGVzKToKKyAgICAgICAgKHJ4
OjpSZW5kZXJTdGF0ZUNhY2hlOjpnZXRTYW1wbGVyU3RhdGUpOgorICAgICAgICAqIHNyYy9saWJH
TEVTdjIvcmVuZGVyZXIvUmVuZGVyU3RhdGVDYWNoZS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldC5oOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpS
ZW5kZXJUYXJnZXQ6OlJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0Ojp+
UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQ6OmdldFdpZHRoKToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQ6OmdldEhlaWdodCk6CisgICAgICAgIChyeDo6UmVuZGVy
VGFyZ2V0OjpnZXRJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0Ojpn
ZXRBY3R1YWxGb3JtYXQpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDo6Z2V0U2FtcGxlcyk6
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5jcHA6IEFk
ZGVkLgorICAgICAgICAocng6OmdldFJUVlN1YnJlc291cmNlSW5kZXgpOgorICAgICAgICAocng6
OmdldERTVlN1YnJlc291cmNlSW5kZXgpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDExOjpS
ZW5kZXJUYXJnZXQxMSk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0MTE6On5SZW5kZXJUYXJn
ZXQxMSk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMSk6
CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0MTE6OmdldFRleHR1cmUpOgorICAgICAgICAocng6
OlJlbmRlclRhcmdldDExOjpnZXRSZW5kZXJUYXJnZXRWaWV3KToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJUYXJnZXQxMTo6Z2V0RGVwdGhTdGVuY2lsVmlldyk6CisgICAgICAgIChyeDo6UmVuZGVyVGFy
Z2V0MTE6OmdldFNoYWRlclJlc291cmNlVmlldyk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0
MTE6OmdldFN1YnJlc291cmNlSW5kZXgpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvUmVuZGVyVGFyZ2V0MTEuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJUYXJnZXQ5LmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0
OTo6UmVuZGVyVGFyZ2V0OSk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0OTo6flJlbmRlclRh
cmdldDkpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5KToK
KyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQ5OjpnZXRTdXJmYWNlKToKKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDkuaDogQWRkZWQuCisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5jcHA6IEFkZGVkLgorICAgICAgICAocng6OlJl
bmRlcmVyOjpSZW5kZXJlcik6CisgICAgICAgIChyeDo6UmVuZGVyZXI6On5SZW5kZXJlcik6Cisg
ICAgICAgIChyeDo6UmVuZGVyZXI6OmluaXRpYWxpemVDb21waWxlcik6CisgICAgICAgIChyeDo6
UmVuZGVyZXI6OmNvbXBpbGVUb0JpbmFyeSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJlci5oOiBBZGRlZC4KKyAgICAgICAgKGdldENvbXBhcmFibGVPU1ZlcnNpb24p
OgorICAgICAgICAocng6OlJlbmRlcmVyOjpnZXRWZXJ0ZXhUZXh0dXJlU3VwcG9ydCk6CisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmNwcDogQWRkZWQuCisgICAg
ICAgIChyeDo6UmVuZGVyZXIxMTo6UmVuZGVyZXIxMSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIx
MTo6flJlbmRlcmVyMTEpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6Om1ha2VSZW5kZXJlcjEx
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjppbml0aWFsaXplKToKKyAgICAgICAgKHJ4OjpS
ZW5kZXJlcjExOjppbml0aWFsaXplRGV2aWNlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpn
ZW5lcmF0ZUNvbmZpZ3MpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmRlbGV0ZUNvbmZpZ3Mp
OgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OnN5bmMpOgorICAgICAgICAocng6OlJlbmRlcmVy
MTE6OmNyZWF0ZVN3YXBDaGFpbik6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6c2V0U2FtcGxl
clN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpzZXRUZXh0dXJlKToKKyAgICAgICAg
KHJ4OjpSZW5kZXJlcjExOjpzZXRSYXN0ZXJpemVyU3RhdGUpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OnNldEJsZW5kU3RhdGUpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OnNldERlcHRo
U3RlbmNpbFN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpzZXRTY2lzc29yUmVjdGFu
Z2xlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpzZXRWaWV3cG9ydCk6CisgICAgICAgIChy
eDo6UmVuZGVyZXIxMTo6YXBwbHlQcmltaXRpdmVUeXBlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjExOjphcHBseVJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6YXBwbHlW
ZXJ0ZXhCdWZmZXIpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmFwcGx5SW5kZXhCdWZmZXIp
OgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmRyYXdBcnJheXMpOgorICAgICAgICAocng6OlJl
bmRlcmVyMTE6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6ZHJhd0xp
bmVMb29wKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpkcmF3VHJpYW5nbGVGYW4pOgorICAg
ICAgICAocng6OlJlbmRlcmVyMTE6OmFwcGx5U2hhZGVycyk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXIxMTo6YXBwbHlVbmlmb3Jtcyk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y2xlYXIpOgor
ICAgICAgICAocng6OlJlbmRlcmVyMTE6Om1hc2tlZENsZWFyKToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjExOjptYXJrQWxsU3RhdGVEaXJ0eSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6cmVs
ZWFzZURldmljZVJlc291cmNlcyk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6bm90aWZ5RGV2
aWNlTG9zdCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6aXNEZXZpY2VMb3N0KToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjExOjp0ZXN0RGV2aWNlTG9zdCk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXIxMTo6dGVzdERldmljZVJlc2V0dGFibGUpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OnJl
bGVhc2UpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OnJlc2V0RGV2aWNlKToKKyAgICAgICAg
KHJ4OjpSZW5kZXJlcjExOjpnZXRBZGFwdGVyVmVuZG9yKToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjExOjpnZXRSZW5kZXJlckRlc2NyaXB0aW9uKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpn
ZXRBZGFwdGVySWRlbnRpZmllcik6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0QkdSQVRl
eHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXREWFQxVGV4dHVyZVN1
cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldERYVDNUZXh0dXJlU3VwcG9ydCk6
CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0RFhUNVRleHR1cmVTdXBwb3J0KToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjExOjpnZXREZXB0aFRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4
OjpSZW5kZXJlcjExOjpnZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6OlJl
bmRlcmVyMTE6OmdldEZsb2F0MTZUZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXIxMTo6Z2V0THVtaW5hbmNlVGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVy
MTE6OmdldEx1bWluYW5jZUFscGhhVGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OmdldFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5U3VwcG9ydCk6CisgICAgICAgIChyeDo6
UmVuZGVyZXIxMTo6Z2V0VGV4dHVyZU1heEFuaXNvdHJvcHkpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OmdldEV2ZW50UXVlcnlTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpn
ZXRWaWV3cG9ydEJvdW5kcyk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0TWF4VmVydGV4
VGV4dHVyZUltYWdlVW5pdHMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldE1heENvbWJp
bmVkVGV4dHVyZUltYWdlVW5pdHMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldFJlc2Vy
dmVkVmVydGV4VW5pZm9ybVZlY3RvcnMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldFJl
c2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycyk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6
Z2V0TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6Omdl
dE1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6Omdl
dE1heFZhcnlpbmdWZWN0b3JzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXROb25Qb3dl
cjJUZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0T2NjbHVzaW9u
UXVlcnlTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRJbnN0YW5jaW5nU3Vw
cG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXREZXJpdmF0aXZlSW5zdHJ1Y3Rpb25TdXBwb3J0
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRQb3N0U3ViQnVmZmVyU3VwcG9ydCk6Cisg
ICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0TWFqb3JTaGFkZXJNb2RlbCk6CisgICAgICAgIChy
eDo6UmVuZGVyZXIxMTo6Z2V0TWlub3JTaGFkZXJNb2RlbCk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXIxMTo6Z2V0TWF4UG9pbnRTaXplKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRNYXhW
aWV3cG9ydERpbWVuc2lvbik6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0TWF4VGV4dHVy
ZVdpZHRoKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRNYXhUZXh0dXJlSGVpZ2h0KToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXQzMkJpdEluZGV4U3VwcG9ydCk6CisgICAgICAg
IChyeDo6UmVuZGVyZXIxMTo6Z2V0TWluU3dhcEludGVydmFsKToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjExOjpnZXRNYXhTd2FwSW50ZXJ2YWwpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6Omdl
dE1heFN1cHBvcnRlZFNhbXBsZXMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldE5lYXJl
c3RTdXBwb3J0ZWRTYW1wbGVzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRNYXhSZW5k
ZXJUYXJnZXRzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjb3B5VG9SZW5kZXJUYXJnZXQp
OgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmNvcHlJbWFnZSk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXIxMTo6Y29weVRleHR1cmUpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OnVuYXBwbHlS
ZW5kZXJUYXJnZXRzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpzZXRPbmVUaW1lUmVuZGVy
VGFyZ2V0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjcmVhdGVSZW5kZXJUYXJnZXQpOgor
ICAgICAgICAocng6OlJlbmRlcmVyMTE6OmxvYWRFeGVjdXRhYmxlKToKKyAgICAgICAgKHJ4OjpS
ZW5kZXJlcjExOjpjb21waWxlVG9FeGVjdXRhYmxlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjEx
OjpjcmVhdGVWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmNyZWF0ZUlu
ZGV4QnVmZmVyKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjcmVhdGVCdWZmZXJTdG9yYWdl
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjcmVhdGVRdWVyeSk6CisgICAgICAgIChyeDo6
UmVuZGVyZXIxMTo6Y3JlYXRlRmVuY2UpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldFJl
bmRlclRhcmdldFJlc291cmNlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpibGl0UmVjdCk6
CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6cmVhZFBpeGVscyk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXIxMTo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdlbmVyYXRl
TWlwbWFwKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjcmVhdGVUZXh0dXJlU3RvcmFnZTJE
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjcmVhdGVUZXh0dXJlU3RvcmFnZUN1YmUpOgor
ICAgICAgICAocng6OmdldEZhc3RQaXhlbENvcHlTaXplKToKKyAgICAgICAgKHJ4OjpyZWFkUGl4
ZWxDb2xvcik6CisgICAgICAgIChyeDo6d3JpdGVQaXhlbENvbG9yKToKKyAgICAgICAgKHJ4OjpS
ZW5kZXJlcjExOjpyZWFkVGV4dHVyZURhdGEpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmJs
aXRSZW5kZXJidWZmZXJSZWN0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpyZXNvbHZlTXVs
dGlzYW1wbGVkVGV4dHVyZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0TFVJRCk6Cisg
ICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmg6IEFkZGVkLgorICAg
ICAgICAocng6OlJlbmRlcmVyMTE6OmdldERldmljZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIx
MTo6Z2V0RGV2aWNlQ29udGV4dCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0RHhnaUZh
Y3RvcnkpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmNwcDog
QWRkZWQuCisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpSZW5kZXJlcjkpOgorICAgICAgICAocng6
OlJlbmRlcmVyOTo6flJlbmRlcmVyOSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjptYWtlUmVu
ZGVyZXI5KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmluaXRpYWxpemUpOgorICAgICAgICAo
cng6OlJlbmRlcmVyOTo6aW5pdGlhbGl6ZURldmljZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5
OjpnZXREZWZhdWx0UHJlc2VudFBhcmFtZXRlcnMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6
Z2VuZXJhdGVDb25maWdzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmRlbGV0ZUNvbmZpZ3Mp
OgorICAgICAgICAocng6OlJlbmRlcmVyOTo6c3RhcnRTY2VuZSk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXI5OjplbmRTY2VuZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpzeW5jKToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjk6OmNyZWF0ZVN3YXBDaGFpbik6CisgICAgICAgIChyeDo6UmVuZGVy
ZXI5OjphbGxvY2F0ZUV2ZW50UXVlcnkpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6ZnJlZUV2
ZW50UXVlcnkpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Y3JlYXRlVmVydGV4U2hhZGVyKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmNyZWF0ZVBpeGVsU2hhZGVyKToKKyAgICAgICAgKHJ4
OjpSZW5kZXJlcjk6OmNyZWF0ZVZlcnRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6UmVuZGVyZXI5
OjpjcmVhdGVJbmRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpjcmVhdGVCdWZm
ZXJTdG9yYWdlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmNyZWF0ZVF1ZXJ5KToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjk6OmNyZWF0ZUZlbmNlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6
OnNldFNhbXBsZXJTdGF0ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpzZXRUZXh0dXJlKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OnNldFJhc3Rlcml6ZXJTdGF0ZSk6CisgICAgICAgIChy
eDo6UmVuZGVyZXI5OjpzZXRCbGVuZFN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OnNl
dERlcHRoU3RlbmNpbFN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OnNldFNjaXNzb3JS
ZWN0YW5nbGUpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6c2V0Vmlld3BvcnQpOgorICAgICAg
ICAocng6OlJlbmRlcmVyOTo6YXBwbHlQcmltaXRpdmVUeXBlKToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjk6OmdldE51bGxDb2xvcmJ1ZmZlcik6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjphcHBs
eVJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjphcHBseVZlcnRleEJ1ZmZl
cik6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjphcHBseUluZGV4QnVmZmVyKToKKyAgICAgICAg
KHJ4OjpSZW5kZXJlcjk6OmRyYXdBcnJheXMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6ZHJh
d0VsZW1lbnRzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmRyYXdMaW5lTG9vcCk6CisgICAg
ICAgIChyeDo6ZHJhd1BvaW50cyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpkcmF3SW5kZXhl
ZFBvaW50cyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjphcHBseVNoYWRlcnMpOgorICAgICAg
ICAocng6OlJlbmRlcmVyOTo6YXBwbHlVbmlmb3Jtcyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5
OjphcHBseVVuaWZvcm1uZnYpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6YXBwbHlVbmlmb3Jt
bml2KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmFwcGx5VW5pZm9ybW5idik6CisgICAgICAg
IChyeDo6UmVuZGVyZXI5OjpjbGVhcik6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjptYXJrQWxs
U3RhdGVEaXJ0eSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpyZWxlYXNlRGV2aWNlUmVzb3Vy
Y2VzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6Om5vdGlmeURldmljZUxvc3QpOgorICAgICAg
ICAocng6OlJlbmRlcmVyOTo6aXNEZXZpY2VMb3N0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6
OnRlc3REZXZpY2VMb3N0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OnRlc3REZXZpY2VSZXNl
dHRhYmxlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OnJlc2V0RGV2aWNlKToKKyAgICAgICAg
KHJ4OjpSZW5kZXJlcjk6OmdldEFkYXB0ZXJWZW5kb3IpOgorICAgICAgICAocng6OlJlbmRlcmVy
OTo6Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbik6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRB
ZGFwdGVySWRlbnRpZmllcik6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNdWx0aVNhbXBs
ZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0QkdSQVRleHR1cmVTdXBwb3J0
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldERYVDFUZXh0dXJlU3VwcG9ydCk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXI5OjpnZXREWFQzVGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6
OlJlbmRlcmVyOTo6Z2V0RFhUNVRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjk6OmdldERlcHRoVGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0
RmxvYXQzMlRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldEZsb2F0
MTZUZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRMdW1pbmFuY2VU
ZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRMdW1pbmFuY2VBbHBo
YVRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldFRleHR1cmVGaWx0
ZXJBbmlzb3Ryb3B5U3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRUZXh0dXJl
TWF4QW5pc290cm9weSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRFdmVudFF1ZXJ5U3Vw
cG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VV
bml0cyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNYXhDb21iaW5lZFRleHR1cmVJbWFn
ZVVuaXRzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldFJlc2VydmVkVmVydGV4VW5pZm9y
bVZlY3RvcnMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0UmVzZXJ2ZWRGcmFnbWVudFVu
aWZvcm1WZWN0b3JzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1heFZlcnRleFVuaWZv
cm1WZWN0b3JzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1heEZyYWdtZW50VW5pZm9y
bVZlY3RvcnMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0TWF4VmFyeWluZ1ZlY3RvcnMp
OgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQpOgor
ICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0T2NjbHVzaW9uUXVlcnlTdXBwb3J0KToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjk6OmdldEluc3RhbmNpbmdTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpS
ZW5kZXJlcjk6OmdldFNoYXJlSGFuZGxlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5
OjpnZXREZXJpdmF0aXZlSW5zdHJ1Y3Rpb25TdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjk6OmdldFBvc3RTdWJCdWZmZXJTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6Omdl
dE1ham9yU2hhZGVyTW9kZWwpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0TWF4UG9pbnRT
aXplKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1heFZpZXdwb3J0RGltZW5zaW9uKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1heFRleHR1cmVXaWR0aCk6CisgICAgICAgIChy
eDo6UmVuZGVyZXI5OjpnZXRNYXhUZXh0dXJlSGVpZ2h0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjk6OmdldDMyQml0SW5kZXhTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldENh
cHNEZWNsVHlwZXMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0TWluU3dhcEludGVydmFs
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1heFN3YXBJbnRlcnZhbCk6CisgICAgICAg
IChyeDo6UmVuZGVyZXI5OjpnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKToKKyAgICAgICAgKHJ4OjpS
ZW5kZXJlcjk6OmdldE5lYXJlc3RTdXBwb3J0ZWRTYW1wbGVzKToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjk6OmdldE1heFJlbmRlclRhcmdldHMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Q29u
dmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpjb3B5
VG9SZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0QnVmZmVyUG9vbCk6
CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpjb3B5SW1hZ2UpOgorICAgICAgICAocng6OlJlbmRl
cmVyOTo6YmxpdFJlY3QpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6cmVhZFBpeGVscyk6Cisg
ICAgICAgIChyeDo6UmVuZGVyZXI5OjpjcmVhdGVSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6
OlJlbmRlcmVyOTo6bG9hZEV4ZWN1dGFibGUpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Y29t
cGlsZVRvRXhlY3V0YWJsZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpib3hGaWx0ZXIpOgor
ICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0VGV4dHVyZVBvb2wpOgorICAgICAgICAocng6OlJl
bmRlcmVyOTo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2VuZXJhdGVN
aXBtYXApOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2UyRCk6
CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpjcmVhdGVUZXh0dXJlU3RvcmFnZUN1YmUpOgorICAg
ICAgICAocng6OlJlbmRlcmVyOTo6Z2V0TFVJRCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9SZW5kZXJlcjkuaDogQWRkZWQuCisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRE
ZXZpY2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyQ2FjaGUuaDog
QWRkZWQuCisgICAgICAgIChyeDo6U2hhZGVyQ2FjaGU6OlNoYWRlckNhY2hlKToKKyAgICAgICAg
KHJ4OjpTaGFkZXJDYWNoZTo6flNoYWRlckNhY2hlKToKKyAgICAgICAgKHJ4OjpTaGFkZXJDYWNo
ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChyeDo6U2hhZGVyQ2FjaGU6OmNyZWF0ZSk6CisgICAg
ICAgIChyeDo6U2hhZGVyQ2FjaGU6OmNsZWFyKToKKyAgICAgICAgKHJ4OjpTaGFkZXJDYWNoZTo6
Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4
ZWN1dGFibGUuaDogQWRkZWQuCisgICAgICAgIChyeDo6U2hhZGVyRXhlY3V0YWJsZTo6U2hhZGVy
RXhlY3V0YWJsZSk6CisgICAgICAgIChyeDo6U2hhZGVyRXhlY3V0YWJsZTo6flNoYWRlckV4ZWN1
dGFibGUpOgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGU6OmdldEZ1bmN0aW9uKToKKyAg
ICAgICAgKHJ4OjpTaGFkZXJFeGVjdXRhYmxlOjpnZXRMZW5ndGgpOgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTExLmNwcDogQWRkZWQuCisgICAgICAg
IChyeDo6U2hhZGVyRXhlY3V0YWJsZTExOjpTaGFkZXJFeGVjdXRhYmxlMTEpOgorICAgICAgICAo
cng6OlNoYWRlckV4ZWN1dGFibGUxMTo6flNoYWRlckV4ZWN1dGFibGUxMSk6CisgICAgICAgIChy
eDo6U2hhZGVyRXhlY3V0YWJsZTExOjptYWtlU2hhZGVyRXhlY3V0YWJsZTExKToKKyAgICAgICAg
KHJ4OjpTaGFkZXJFeGVjdXRhYmxlMTE6OmdldFZlcnRleFNoYWRlcik6CisgICAgICAgIChyeDo6
U2hhZGVyRXhlY3V0YWJsZTExOjpnZXRQaXhlbFNoYWRlcik6CisgICAgICAgIChyeDo6U2hhZGVy
RXhlY3V0YWJsZTExOjpnZXRHZW9tZXRyeVNoYWRlcik6CisgICAgICAgIChyeDo6U2hhZGVyRXhl
Y3V0YWJsZTExOjpnZXRDb25zdGFudEJ1ZmZlcik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlOS5jcHA6IEFkZGVkLgorICAgICAgICAocng6
OlNoYWRlckV4ZWN1dGFibGU5OjpTaGFkZXJFeGVjdXRhYmxlOSk6CisgICAgICAgIChyeDo6U2hh
ZGVyRXhlY3V0YWJsZTk6On5TaGFkZXJFeGVjdXRhYmxlOSk6CisgICAgICAgIChyeDo6U2hhZGVy
RXhlY3V0YWJsZTk6Om1ha2VTaGFkZXJFeGVjdXRhYmxlOSk6CisgICAgICAgIChyeDo6U2hhZGVy
RXhlY3V0YWJsZTk6OmdldFZlcnRleFNoYWRlcik6CisgICAgICAgIChyeDo6U2hhZGVyRXhlY3V0
YWJsZTk6OmdldFBpeGVsU2hhZGVyKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1NoYWRlckV4ZWN1dGFibGU5Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvU3dhcENoYWluLmg6IEFkZGVkLgorICAgICAgICAocng6OlN3YXBDaGFpbjo6U3dhcENo
YWluKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW46On5Td2FwQ2hhaW4pOgorICAgICAgICAocng6
OlN3YXBDaGFpbjo6Z2V0U2hhcmVIYW5kbGUpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvU3dhcENoYWluMTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6
U3dhcENoYWluMTEpOgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjp+U3dhcENoYWluMTEpOgor
ICAgICAgICAocng6OlN3YXBDaGFpbjExOjpyZWxlYXNlKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hh
aW4xMTo6cmVsZWFzZU9mZnNjcmVlblRleHR1cmUpOgorICAgICAgICAocng6OlN3YXBDaGFpbjEx
OjpyZXNldE9mZnNjcmVlblRleHR1cmUpOgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjpyZXNp
emUpOgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjpyZXNldCk6CisgICAgICAgIChyeDo6U3dh
cENoYWluMTE6OmluaXRQYXNzVGhyb3VnaFJlc291cmNlcyk6CisgICAgICAgIChyeDo6U3dhcENo
YWluMTE6OnN3YXBSZWN0KToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6Z2V0T2Zmc2NyZWVu
VGV4dHVyZSk6CisgICAgICAgIChyeDo6U3dhcENoYWluMTE6OmdldFJlbmRlclRhcmdldCk6Cisg
ICAgICAgIChyeDo6U3dhcENoYWluMTE6OmdldFJlbmRlclRhcmdldFNoYWRlclJlc291cmNlKToK
KyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6Z2V0RGVwdGhTdGVuY2lsKToKKyAgICAgICAgKHJ4
OjpTd2FwQ2hhaW4xMTo6Z2V0RGVwdGhTdGVuY2lsVGV4dHVyZSk6CisgICAgICAgIChyeDo6U3dh
cENoYWluMTE6Om1ha2VTd2FwQ2hhaW4xMSk6CisgICAgICAgIChyeDo6U3dhcENoYWluMTE6OnJl
Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjExLmg6
IEFkZGVkLgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjpnZXRXaWR0aCk6CisgICAgICAgIChy
eDo6U3dhcENoYWluMTE6OmdldEhlaWdodCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9Td2FwQ2hhaW45LmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6U3dhcENoYWluOTo6U3dh
cENoYWluOSk6CisgICAgICAgIChyeDo6U3dhcENoYWluOTo6flN3YXBDaGFpbjkpOgorICAgICAg
ICAocng6OlN3YXBDaGFpbjk6OnJlbGVhc2UpOgorICAgICAgICAocng6OmNvbnZlcnRJbnRlcnZh
bCk6CisgICAgICAgIChyeDo6U3dhcENoYWluOTo6cmVzaXplKToKKyAgICAgICAgKHJ4OjpTd2Fw
Q2hhaW45OjpyZXNldCk6CisgICAgICAgIChyeDo6U3dhcENoYWluOTo6c3dhcFJlY3QpOgorICAg
ICAgICAocng6OlN3YXBDaGFpbjk6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6U3dh
cENoYWluOTo6Z2V0RGVwdGhTdGVuY2lsKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW45OjpnZXRP
ZmZzY3JlZW5UZXh0dXJlKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW45OjptYWtlU3dhcENoYWlu
OSk6CisgICAgICAgIChyeDo6U3dhcENoYWluOTo6cmVjcmVhdGUpOgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6
VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlKToKKyAgICAg
ICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6flRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6aXNSZW5kZXJUYXJnZXQp
OgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlOjppc01hbmFnZWQpOgorICAg
ICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlOjpnZXRUZXh0dXJlU2VyaWFsKToKKyAg
ICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6aXNzdWVUZXh0dXJlU2VyaWFsKToK
KyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6Z2V0TG9kT2Zmc2V0KToKKyAg
ICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6bGV2ZWxDb3VudCk6CisgICAgICAg
IChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2Uy
RCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDo6flRleHR1cmVTdG9y
YWdlSW50ZXJmYWNlMkQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ6
OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2Uy
RDo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
MkQ6OmdldFJlbmRlclRhcmdldFNlcmlhbCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJ
bnRlcmZhY2VDdWJlOjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUpOgorICAgICAgICAocng6
OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6flRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3Vi
ZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlOjpnZXRSZW5kZXJU
YXJnZXQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6Z2VuZXJh
dGVNaXBtYXApOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6Z2V0
UmVuZGVyVGFyZ2V0U2VyaWFsKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Rl
eHR1cmVTdG9yYWdlLmg6IEFkZGVkLgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOjpUZXh0
dXJlU3RvcmFnZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U6On5UZXh0dXJlU3RvcmFn
ZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OmdldFN0b3JhZ2VJbnN0
YW5jZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTEx
LmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2UxMTo6VGV4dHVyZVN0b3Jh
Z2UxMSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2UxMTo6flRleHR1cmVTdG9yYWdlMTEp
OgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6Om1ha2VUZXh0dXJlU3RvcmFnZTExKToK
KyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjpHZXRUZXh0dXJlQmluZEZsYWdzKToKKyAg
ICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjpJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKToK
KyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjpnZXRCaW5kRmxhZ3MpOgorICAgICAgICAo
cng6OlRleHR1cmVTdG9yYWdlMTE6OmdldEJhc2VUZXh0dXJlKToKKyAgICAgICAgKHJ4OjpUZXh0
dXJlU3RvcmFnZTExOjpnZXRMb2RPZmZzZXQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdl
MTE6OmlzUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjppc01h
bmFnZWQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6OmxldmVsQ291bnQpOgorICAg
ICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6OmdldFN1YnJlc291cmNlSW5kZXgpOgorICAgICAg
ICAocng6OlRleHR1cmVTdG9yYWdlMTE6OnVwZGF0ZVN1YnJlc291cmNlTGV2ZWwpOgorICAgICAg
ICAocng6OlRleHR1cmVTdG9yYWdlMTE6OmdlbmVyYXRlTWlwbWFwTGF5ZXIpOgorICAgICAgICAo
cng6OlRleHR1cmVTdG9yYWdlMTFfMkQ6OlRleHR1cmVTdG9yYWdlMTFfMkQpOgorICAgICAgICAo
cng6OlRleHR1cmVTdG9yYWdlMTFfMkQ6On5UZXh0dXJlU3RvcmFnZTExXzJEKToKKyAgICAgICAg
KHJ4OjpUZXh0dXJlU3RvcmFnZTExXzJEOjptYWtlVGV4dHVyZVN0b3JhZ2UxMV8yRCk6CisgICAg
ICAgIChyeDo6VGV4dHVyZVN0b3JhZ2UxMV8yRDo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAg
KHJ4OjpUZXh0dXJlU3RvcmFnZTExXzJEOjpnZXRTUlYpOgorICAgICAgICAocng6OlRleHR1cmVT
dG9yYWdlMTFfMkQ6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFn
ZTExX0N1YmU6OlRleHR1cmVTdG9yYWdlMTFfQ3ViZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0
b3JhZ2UxMV9DdWJlOjp+VGV4dHVyZVN0b3JhZ2UxMV9DdWJlKToKKyAgICAgICAgKHJ4OjpUZXh0
dXJlU3RvcmFnZTExX0N1YmU6Om1ha2VUZXh0dXJlU3RvcmFnZTExX0N1YmUpOgorICAgICAgICAo
cng6OlRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4
OjpUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmdldFNSVik6CisgICAgICAgIChyeDo6VGV4dHVyZVN0
b3JhZ2UxMV9DdWJlOjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmg6IEFkZGVkLgorICAgICAgICAocng6OlRleHR1cmVT
dG9yYWdlMTE6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2Ux
MTo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4
dHVyZVN0b3JhZ2U5LmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5OjpU
ZXh0dXJlU3RvcmFnZTkpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOTo6flRleHR1cmVT
dG9yYWdlOSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5OjptYWtlVGV4dHVyZVN0b3Jh
Z2U5KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTk6OkdldFRleHR1cmVVc2FnZSk6Cisg
ICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5OjpJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKToK
KyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTk6OmlzUmVuZGVyVGFyZ2V0KToKKyAgICAgICAg
KHJ4OjpUZXh0dXJlU3RvcmFnZTk6OmlzTWFuYWdlZCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0
b3JhZ2U5OjpnZXRQb29sKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTk6OmdldFVzYWdl
KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTk6OmdldExvZE9mZnNldCk6CisgICAgICAg
IChyeDo6VGV4dHVyZVN0b3JhZ2U5OjpsZXZlbENvdW50KToKKyAgICAgICAgKHJ4OjpUZXh0dXJl
U3RvcmFnZTlfMkQ6OlRleHR1cmVTdG9yYWdlOV8yRCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0
b3JhZ2U5XzJEOjp+VGV4dHVyZVN0b3JhZ2U5XzJEKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3Rv
cmFnZTlfMkQ6Om1ha2VUZXh0dXJlU3RvcmFnZTlfMkQpOgorICAgICAgICAocng6OlRleHR1cmVT
dG9yYWdlOV8yRDo6Z2V0U3VyZmFjZUxldmVsKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFn
ZTlfMkQ6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5XzJE
OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5XzJEOjpnZXRC
YXNlVGV4dHVyZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5XzJEOjppbml0aWFsaXpl
UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6VGV4dHVy
ZVN0b3JhZ2U5X0N1YmUpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOV9DdWJlOjp+VGV4
dHVyZVN0b3JhZ2U5X0N1YmUpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOV9DdWJlOjpt
YWtlVGV4dHVyZVN0b3JhZ2U5X0N1YmUpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOV9D
dWJlOjpnZXRDdWJlTWFwU3VyZmFjZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5X0N1
YmU6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5X0N1YmU6
OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6Z2V0
QmFzZVRleHR1cmUpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOV9DdWJlOjppbml0aWFs
aXplUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1
cmVTdG9yYWdlOS5oOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTk6OmdldFJl
bmRlclRhcmdldCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5OjpnZW5lcmF0ZU1pcG1h
cCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI6OlZlcnRleEJ1ZmZlcik6CisgICAgICAg
IChyeDo6VmVydGV4QnVmZmVyOjp+VmVydGV4QnVmZmVyKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhC
dWZmZXI6OnVwZGF0ZVNlcmlhbCk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOjpnZXRTZXJp
YWwpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6VmVydGV4QnVmZmVySW50
ZXJmYWNlKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6On5WZXJ0ZXhCdWZm
ZXJJbnRlcmZhY2UpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6Z2V0U2Vy
aWFsKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OmdldEJ1ZmZlclNpemUp
OgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6c2V0QnVmZmVyU2l6ZSk6Cisg
ICAgICAgIChyeDo6VmVydGV4QnVmZmVySW50ZXJmYWNlOjpnZXRXcml0ZVBvc2l0aW9uKToKKyAg
ICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnNldFdyaXRlUG9zaXRpb24pOgorICAg
ICAgICAocng6OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6ZGlzY2FyZCk6CisgICAgICAgIChyeDo6
VmVydGV4QnVmZmVySW50ZXJmYWNlOjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMpOgorICAgICAgICAo
cng6OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVSYXdEYXRhKToKKyAgICAgICAgKHJ4OjpW
ZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2VydmVWZXJ0ZXhTcGFjZSk6CisgICAgICAgIChyeDo6
VmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZlUmF3RGF0YVNwYWNlKToKKyAgICAgICAgKHJ4
OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OmdldFZlcnRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6
U3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlOjpTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRl
cmZhY2UpOgorICAgICAgICAocng6OlN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6flN0
cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZSk6CisgICAgICAgIChyeDo6U3RyZWFtaW5nVmVy
dGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZlU3BhY2UpOgorICAgICAgICAocng6OlN0YXRpY1Zl
cnRleEJ1ZmZlckludGVyZmFjZTo6U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlKToKKyAgICAg
ICAgKHJ4OjpTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6On5TdGF0aWNWZXJ0ZXhCdWZmZXJJ
bnRlcmZhY2UpOgorICAgICAgICAocng6OlN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6bG9v
a3VwQXR0cmlidXRlKToKKyAgICAgICAgKHJ4OjpTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6
OnJlc2VydmVTcGFjZSk6CisgICAgICAgIChyeDo6U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNl
OjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvVmVydGV4QnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvVmVydGV4QnVmZmVyMTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIx
MTo6VmVydGV4QnVmZmVyMTEpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjExOjp+VmVydGV4
QnVmZmVyMTEpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjExOjppbml0aWFsaXplKToKKyAg
ICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6bWFrZVZlcnRleEJ1ZmZlcjExKToKKyAgICAgICAg
KHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKHJ4
OjpWZXJ0ZXhCdWZmZXIxMTo6c3RvcmVSYXdEYXRhKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZm
ZXIxMTo6Z2V0U3BhY2VSZXF1aXJlZCk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyMTE6OnJl
cXVpcmVzQ29udmVyc2lvbik6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyMTE6OmdldEJ1ZmZl
clNpemUpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjExOjpzZXRCdWZmZXJTaXplKToKKyAg
ICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6ZGlzY2FyZCk6CisgICAgICAgIChyeDo6VmVydGV4
QnVmZmVyMTE6OmdldFZlcnRleFNpemUpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjExOjpn
ZXREWEdJRm9ybWF0KToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6Z2V0QnVmZmVyKToK
KyAgICAgICAgKHJ4Ojpjb3B5VmVydGV4RGF0YSk6CisgICAgICAgIChyeDo6Y29weUZpeGVkVmVy
dGV4RGF0YSk6CisgICAgICAgIChyeDo6Y29weVRvRmxvYXRWZXJ0ZXhEYXRhKToKKyAgICAgICAg
KHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6Z2V0VmVydGV4Q29udmVyc2lvbik6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5oOiBBZGRlZC4KKyAgICAgICAgKiBz
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuY3BwOiBBZGRlZC4KKyAgICAgICAg
KHJ4OjpWZXJ0ZXhCdWZmZXI5OjpWZXJ0ZXhCdWZmZXI5KToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhC
dWZmZXI5Ojp+VmVydGV4QnVmZmVyOSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6bWFrZVZlcnRleEJ1ZmZlcjkp
OgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6OnN0b3JlVmVydGV4QXR0cmlidXRlcyk6Cisg
ICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6c3RvcmVSYXdEYXRhKToKKyAgICAgICAgKHJ4OjpW
ZXJ0ZXhCdWZmZXI5OjpnZXRTcGFjZVJlcXVpcmVkKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZm
ZXI5OjpyZXF1aXJlc0NvbnZlcnNpb24pOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6Omdl
dFZlcnRleFNpemUpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6OmdldERlY2xUeXBlKToK
KyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5OjpnZXRCdWZmZXJTaXplKToKKyAgICAgICAgKHJ4
OjpWZXJ0ZXhCdWZmZXI5OjpzZXRCdWZmZXJTaXplKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZm
ZXI5OjpkaXNjYXJkKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5OjpnZXRCdWZmZXIpOgor
ICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6OmluaXRpYWxpemVUcmFuc2xhdGlvbnMpOgorICAg
ICAgICAocng6OlZlcnRleEJ1ZmZlcjk6OnR5cGVJbmRleCk6CisgICAgICAgIChyeDo6VmVydGV4
QnVmZmVyOTo6Zm9ybWF0Q29udmVydGVyKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5Ojpz
cGFjZVJlcXVpcmVkKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1
ZmZlcjkuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhE
YXRhTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAocng6OmVsZW1lbnRzSW5CdWZmZXIpOgor
ICAgICAgICAocng6OlZlcnRleERhdGFNYW5hZ2VyOjpWZXJ0ZXhEYXRhTWFuYWdlcik6CisgICAg
ICAgIChyeDo6VmVydGV4RGF0YU1hbmFnZXI6On5WZXJ0ZXhEYXRhTWFuYWdlcik6CisgICAgICAg
IChyeDo6ZGlyZWN0U3RvcmFnZVBvc3NpYmxlKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhEYXRhTWFu
YWdlcjo6cHJlcGFyZVZlcnRleERhdGEpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvVmVydGV4RGF0YU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6
VmVydGV4RGVjbGFyYXRpb25DYWNoZTo6VmVydGV4RGVjbGFyYXRpb25DYWNoZSk6CisgICAgICAg
IChyeDo6VmVydGV4RGVjbGFyYXRpb25DYWNoZTo6flZlcnRleERlY2xhcmF0aW9uQ2FjaGUpOgor
ICAgICAgICAocng6OlZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OmFwcGx5RGVjbGFyYXRpb24pOgor
ICAgICAgICAocng6OlZlcnRleERlY2xhcmF0aW9uQ2FjaGU6Om1hcmtTdGF0ZURpcnR5KToKKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuaDog
QWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9nZW5lcmF0ZW1pcC5oOiBB
ZGRlZC4KKyAgICAgICAgKHJ4OjpMODo6YXZlcmFnZSk6CisgICAgICAgIChyeDo6QThMODo6YXZl
cmFnZSk6CisgICAgICAgIChyeDo6QThSOEc4Qjg6OmF2ZXJhZ2UpOgorICAgICAgICAocng6OkEx
NkIxNkcxNlIxNkY6OmF2ZXJhZ2UpOgorICAgICAgICAocng6OlIxNkY6OmF2ZXJhZ2UpOgorICAg
ICAgICAocng6OlIxNkcxNkY6OmF2ZXJhZ2UpOgorICAgICAgICAocng6OkEzMkIzMkczMlIzMkY6
OmF2ZXJhZ2UpOgorICAgICAgICAocng6OlIzMkY6OmF2ZXJhZ2UpOgorICAgICAgICAocng6OlIz
MkczMkY6OmF2ZXJhZ2UpOgorICAgICAgICAocng6OlIzMkczMkIzMkY6OmF2ZXJhZ2UpOgorICAg
ICAgICAocng6OkdlbmVyYXRlTWlwKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3JlbmRlcmVyMTFfdXRpbHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdsX2QzZDExOjpDb252ZXJ0
QmxlbmRGdW5jKToKKyAgICAgICAgKGdsX2QzZDExOjpDb252ZXJ0QmxlbmRPcCk6CisgICAgICAg
IChnbF9kM2QxMTo6Q29udmVydENvbG9yTWFzayk6CisgICAgICAgIChnbF9kM2QxMTo6Q29udmVy
dEN1bGxNb2RlKToKKyAgICAgICAgKGdsX2QzZDExOjpDb252ZXJ0Q29tcGFyaXNvbik6CisgICAg
ICAgIChnbF9kM2QxMTo6Q29udmVydERlcHRoTWFzayk6CisgICAgICAgIChnbF9kM2QxMTo6Q29u
dmVydFN0ZW5jaWxNYXNrKToKKyAgICAgICAgKGdsX2QzZDExOjpDb252ZXJ0U3RlbmNpbE9wKToK
KyAgICAgICAgKGdsX2QzZDExOjpDb252ZXJ0RmlsdGVyKToKKyAgICAgICAgKGdsX2QzZDExOjpD
b252ZXJ0VGV4dHVyZVdyYXApOgorICAgICAgICAoZ2xfZDNkMTE6OkNvbnZlcnRNaW5MT0QpOgor
ICAgICAgICAoZ2xfZDNkMTE6OkNvbnZlcnRNYXhMT0QpOgorICAgICAgICAoZDNkMTFfZ2w6OkNv
bnZlcnRCYWNrQnVmZmVyRm9ybWF0KToKKyAgICAgICAgKGQzZDExX2dsOjpDb252ZXJ0RGVwdGhT
dGVuY2lsRm9ybWF0KToKKyAgICAgICAgKGQzZDExX2dsOjpDb252ZXJ0UmVuZGVyYnVmZmVyRm9y
bWF0KToKKyAgICAgICAgKGQzZDExX2dsOjpDb252ZXJ0VGV4dHVyZUludGVybmFsRm9ybWF0KToK
KyAgICAgICAgKGdsX2QzZDExOjpDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KToKKyAgICAgICAg
KGdsX2QzZDExOjpDb252ZXJ0VGV4dHVyZUZvcm1hdCk6CisgICAgICAgIChkM2QxMTo6U2V0UG9z
aXRpb25UZXhDb29yZFZlcnRleCk6CisgICAgICAgIChkM2QxMTo6U2V0UG9zaXRpb25EZXB0aENv
bG9yVmVydGV4KToKKyAgICAgICAgKGQzZDExOjpDb21wdXRlUGl4ZWxTaXplQml0cyk6CisgICAg
ICAgIChkM2QxMTo6Q29tcHV0ZUJsb2NrU2l6ZUJpdHMpOgorICAgICAgICAoZDNkMTE6OklzQ29t
cHJlc3NlZCk6CisgICAgICAgIChkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdERpbWVuc2lvbkFsaWdu
bWVudCk6CisgICAgICAgIChkM2QxMTo6SXNEZXB0aFN0ZW5jaWxGb3JtYXQpOgorICAgICAgICAo
ZDNkMTE6OkdldERlcHRoVGV4dHVyZUZvcm1hdCk6CisgICAgICAgIChkM2QxMTo6R2V0RGVwdGhT
aGFkZXJSZXNvdXJjZUZvcm1hdCk6CisgICAgICAgIChkM2QxMTo6U2V0RGVidWdOYW1lKToKKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuaDogQWRkZWQu
CisgICAgICAgIChkM2QxMTo6aXNEZXZpY2VMb3N0RXJyb3IpOgorICAgICAgICAqIHNyYy9saWJH
TEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmNwcDogQWRkZWQuCisgICAgICAgIChnbF9k
M2Q5OjpDb252ZXJ0Q29tcGFyaXNvbik6CisgICAgICAgIChnbF9kM2Q5OjpDb252ZXJ0Q29sb3Ip
OgorICAgICAgICAoZ2xfZDNkOTo6Q29udmVydEJsZW5kRnVuYyk6CisgICAgICAgIChnbF9kM2Q5
OjpDb252ZXJ0QmxlbmRPcCk6CisgICAgICAgIChnbF9kM2Q5OjpDb252ZXJ0U3RlbmNpbE9wKToK
KyAgICAgICAgKGdsX2QzZDk6OkNvbnZlcnRUZXh0dXJlV3JhcCk6CisgICAgICAgIChnbF9kM2Q5
OjpDb252ZXJ0Q3VsbE1vZGUpOgorICAgICAgICAoZ2xfZDNkOTo6Q29udmVydEN1YmVGYWNlKToK
KyAgICAgICAgKGdsX2QzZDk6OkNvbnZlcnRDb2xvck1hc2spOgorICAgICAgICAoZ2xfZDNkOTo6
Q29udmVydE1hZ0ZpbHRlcik6CisgICAgICAgIChnbF9kM2Q5OjpDb252ZXJ0TWluRmlsdGVyKToK
KyAgICAgICAgKGdsX2QzZDk6OkNvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQpOgorICAgICAgICAo
Z2xfZDNkOTo6R2V0TXVsdGlzYW1wbGVUeXBlRnJvbVNhbXBsZXMpOgorICAgICAgICAoZDNkOV9n
bDo6R2V0U3RlbmNpbFNpemUpOgorICAgICAgICAoZDNkOV9nbDo6R2V0QWxwaGFTaXplKToKKyAg
ICAgICAgKGQzZDlfZ2w6OkdldFNhbXBsZXNGcm9tTXVsdGlzYW1wbGVUeXBlKToKKyAgICAgICAg
KGQzZDlfZ2w6OklzRm9ybWF0Q2hhbm5lbEVxdWl2YWxlbnQpOgorICAgICAgICAoZDNkOV9nbDo6
Q29udmVydEJhY2tCdWZmZXJGb3JtYXQpOgorICAgICAgICAoZDNkOV9nbDo6Q29udmVydERlcHRo
U3RlbmNpbEZvcm1hdCk6CisgICAgICAgIChkM2Q5X2dsOjpDb252ZXJ0UmVuZGVyVGFyZ2V0Rm9y
bWF0KToKKyAgICAgICAgKGQzZDlfZ2w6OkdldEVxdWl2YWxlbnRGb3JtYXQpOgorICAgICAgICAo
ZDNkOTo6SXNDb21wcmVzc2VkRm9ybWF0KToKKyAgICAgICAgKGQzZDk6OkNvbXB1dGVSb3dTaXpl
KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyOV91dGlscy5oOiBB
ZGRlZC4KKyAgICAgICAgKGQzZDk6OmlzRGV2aWNlTG9zdEVycm9yKToKKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnM6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVT
djIvcmVuZGVyZXIvc2hhZGVycy9CbGl0LnBzOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL3JlbmRlcmVyL3NoYWRlcnMvQmxpdC52czogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9zaGFkZXJzL0NsZWFyMTEuaGxzbDogQWRkZWQuCisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL1Bhc3N0aHJvdWdoMTEuaGxzbDogQWRkZWQuCisg
ICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXIx
MXZzLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9j
b21waWxlZC9jbGVhcm11bHRpcGxlMTFwcy5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW5nbGUxMXBzLmg6IEFkZGVkLgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jb21wb25l
bnRtYXNrcHMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFk
ZXJzL2NvbXBpbGVkL2ZsaXB5dnMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2x1bWluYW5jZXBzLmg6IEFkZGVkLgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaDExdnMu
aDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBp
bGVkL3Bhc3N0aHJvdWdobHVtMTFwcy5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaDogQWRk
ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bh
c3N0aHJvdWdocHMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9z
aGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMTFwcy5oOiBBZGRlZC4KKyAgICAgICAgKiBz
cmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhMTFw
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29t
cGlsZWQvc3RhbmRhcmR2cy5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5iYXQ6IEFkZGVkLgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvdmVydGV4Y29udmVyc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKHJ4
OjpJZGVudGl0eTo6Y29udmVydCk6CisgICAgICAgIChyeDo6Q2FzdDo6Y29udmVydCk6CisgICAg
ICAgIChyeDo6Tm9ybWFsaXplOjpjb252ZXJ0KToKKyAgICAgICAgKHJ4OjpGaXhlZFRvRmxvYXQ6
OmNvbnZlcnQpOgorICAgICAgICAocng6OlNpbXBsZURlZmF1bHRWYWx1ZXM6Onplcm8pOgorICAg
ICAgICAocng6OlNpbXBsZURlZmF1bHRWYWx1ZXM6Om9uZSk6CisgICAgICAgIChyeDo6Tm9ybWFs
aXplZERlZmF1bHRWYWx1ZXM6Onplcm8pOgorICAgICAgICAocng6Ok5vcm1hbGl6ZWREZWZhdWx0
VmFsdWVzOjpvbmUpOgorICAgICAgICAocng6OlZlcnRleERhdGFDb252ZXJ0ZXI6OmNvbnZlcnRB
cnJheSk6CisgICAgICAgIChyeDo6VmVydGV4RGF0YUNvbnZlcnRlcjo6cG9pbnRlckFkZEJ5dGVz
KToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhEYXRhQ29udmVydGVyOjpjb3B5Q29tcG9uZW50KToKKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL3Jlc291cmNlLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvdXRpbGl0aWVzLmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6VW5pZm9ybUNvbXBv
bmVudENvdW50KToKKyAgICAgICAgKGdsOjpVbmlmb3JtQ29tcG9uZW50VHlwZSk6CisgICAgICAg
IChnbDo6VW5pZm9ybUNvbXBvbmVudFNpemUpOgorICAgICAgICAoZ2w6OlVuaWZvcm1JbnRlcm5h
bFNpemUpOgorICAgICAgICAoZ2w6OlVuaWZvcm1FeHRlcm5hbFNpemUpOgorICAgICAgICAoZ2w6
OlZhcmlhYmxlUm93Q291bnQpOgorICAgICAgICAoZ2w6OlZhcmlhYmxlQ29sdW1uQ291bnQpOgor
ICAgICAgICAoZ2w6OkFsbG9jYXRlRmlyc3RGcmVlQml0cyk6CisgICAgICAgIChnbDo6Q29tcHV0
ZVBpdGNoKToKKyAgICAgICAgKGdsOjpDb21wdXRlQ29tcHJlc3NlZFBpdGNoKToKKyAgICAgICAg
KGdsOjpDb21wdXRlQ29tcHJlc3NlZFNpemUpOgorICAgICAgICAoZ2w6OklzQ29tcHJlc3NlZCk6
CisgICAgICAgIChnbDo6SXNEZXB0aFRleHR1cmUpOgorICAgICAgICAoZ2w6OklzU3RlbmNpbFRl
eHR1cmUpOgorICAgICAgICAoZ2w6Ok1ha2VWYWxpZFNpemUpOgorICAgICAgICAoZ2w6OkNvbXB1
dGVQaXhlbFNpemUpOgorICAgICAgICAoZ2w6OklzQ3ViZW1hcFRleHR1cmVUYXJnZXQpOgorICAg
ICAgICAoZ2w6OklzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KToKKyAgICAgICAgKGdsOjpDb252ZXJ0
U2l6ZWRJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChnbDo6RXh0cmFjdEZvcm1hdCk6CisgICAg
ICAgIChnbDo6RXh0cmFjdFR5cGUpOgorICAgICAgICAoZ2w6OklzQ29sb3JSZW5kZXJhYmxlKToK
KyAgICAgICAgKGdsOjpJc0RlcHRoUmVuZGVyYWJsZSk6CisgICAgICAgIChnbDo6SXNTdGVuY2ls
UmVuZGVyYWJsZSk6CisgICAgICAgIChnbDo6SXNGbG9hdDMyRm9ybWF0KToKKyAgICAgICAgKGds
OjpJc0Zsb2F0MTZGb3JtYXQpOgorICAgICAgICAoZ2w6OkdldEFscGhhU2l6ZSk6CisgICAgICAg
IChnbDo6R2V0UmVkU2l6ZSk6CisgICAgICAgIChnbDo6R2V0R3JlZW5TaXplKToKKyAgICAgICAg
KGdsOjpHZXRCbHVlU2l6ZSk6CisgICAgICAgIChnbDo6R2V0RGVwdGhTaXplKToKKyAgICAgICAg
KGdsOjpHZXRTdGVuY2lsU2l6ZSk6CisgICAgICAgIChnbDo6SXNUcmlhbmdsZU1vZGUpOgorICAg
ICAgICAoZ2V0VGVtcFBhdGgpOgorICAgICAgICAod3JpdGVGaWxlKToKKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL3V0aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvdGhpcmRfcGFydHkv
bXVybXVyaGFzaDogQWRkZWQuCisgICAgICAgICogc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gv
TElDRU5TRTogQWRkZWQuCisgICAgICAgICogc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVy
bXVySGFzaDMuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJvdGwzMik6CisgICAgICAgIChyb3RsNjQp
OgorICAgICAgICAoZ2V0YmxvY2spOgorICAgICAgICAoZm1peCk6CisgICAgICAgIChNdXJtdXJI
YXNoM194ODZfMzIpOgorICAgICAgICAoTXVybXVySGFzaDNfeDg2XzEyOCk6CisgICAgICAgIChN
dXJtdXJIYXNoM194NjRfMTI4KToKKyAgICAgICAgKiBzcmMvdGhpcmRfcGFydHkvbXVybXVyaGFz
aC9NdXJtdXJIYXNoMy5oOiBBZGRlZC4KKwogMjAxMy0wNy0yMCAgRGVhbiBKYWNrc29uICA8ZGlu
b0BhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlZCBBTkdMRSBpcyBsZWFraW5nIGxpa2UgYSBz
aWV2ZQpAQCAtNzAsNyArMjAyNCw3IEBACiAgICAgICAgIChUSW50ZXJtQmluYXJ5Ojpwcm9tb3Rl
KToKICAgICAgICAgKENvbXBhcmVTdHJ1Y3QpOgogICAgICAgICAoQ29tcGFyZVN0cnVjdHVyZSk6
Ci0gICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZCk6CisgICAgICAgIChUSW50ZXJt
Q29uc3RhbnRVbmlvbjo6Zm9sZCk6IEFkZGVkIGltcGxpZWQgc3RhdGljX2Nhc3RzIHRvIGZpeCBj
b21waWxpbmcgZXJyb3JzIG9uIE1hYy4KICAgICAgICAgKFRJbnRlcm1lZGlhdGU6OnByb21vdGVD
b25zdGFudFVuaW9uKToKICAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHA6CiAg
ICAgICAgIChUT3V0cHV0R0xTTDo6d3JpdGVWYXJpYWJsZVByZWNpc2lvbik6CkBAIC0xNjgsNyAr
MjEyMiw3IEBACiAgICAgICAgIChUUGFyYW1ldGVyOjpjb3B5UGFyYW0pOgogICAgICAgICAoVEZ1
bmN0aW9uOjpyZWxhdGVUb0V4dGVuc2lvbik6CiAgICAgICAgIChURnVuY3Rpb246OmdldEV4dGVu
c2lvbik6Ci0gICAgICAgICogc3JjL2NvbXBpbGVyL1R5cGVzLmg6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL1R5cGVzLmg6IFJlbW92ZWQgZW51bSBiaXQgZmllbGRzIHRvIGZpeCBnY2MgY29tcGls
ZXIgZXJyb3JzLgogICAgICAgICAoTmV3UG9vbFRUeXBlTGlzdCk6CiAgICAgICAgIChUVHlwZTo6
VFR5cGUpOgogICAgICAgICAoVFR5cGU6OmNvcHlUeXBlKToKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL0FOR0xFLnBsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL0FOR0xFLnBsaXN0CShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9BTkdMRS5wbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTAsOSArMTAsOSBAQAogCQk8a2V5
Pk9wZW5Tb3VyY2VXZWJzaXRlVVJMPC9rZXk+CiAJCTxzdHJpbmc+aHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS9wL2FuZ2xlcHJvamVjdC88L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlU0NNPC9rZXk+
Ci0JCTxzdHJpbmc+c3ZuIGNvIC1yMTY0MSBodHRwOi8vYW5nbGVwcm9qZWN0Lmdvb2dsZWNvZGUu
Y29tL3N2bi90cnVuay88L3N0cmluZz4KKwkJPHN0cmluZz5naXQgY2xvbmUgaHR0cHM6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9hbmdsZXByb2plY3QvICYmIGNkIGFuZ2xlcHJvamVjdCAmJiBnaXQgY2hl
Y2tvdXQgMDQ3MzczYWEzZWI0MDhiZTYyYmU1MmFkZTg0MGZhNWYxMWU3MjMzNzwvc3RyaW5nPgog
CQk8a2V5Pk9wZW5Tb3VyY2VJbXBvcnREYXRlPC9rZXk+Ci0JCTxzdHJpbmc+MjAxMy0wMS0wNDwv
c3RyaW5nPgorCQk8c3RyaW5nPjIwMTMtMDctMjI8L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNl
TGljZW5zZTwva2V5PgogCQk8c3RyaW5nPkJTRDwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VM
aWNlbnNlRmlsZTwva2V5PgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQVVUSE9SUwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BVVRIT1JTCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQVVUSE9SUwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzMiBAQAorIyBUaGlzIGlzIHRoZSBvZmZpY2lhbCBsaXN0IG9mIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMKKyMgZm9yIGNvcHlyaWdodCBwdXJwb3Nlcy4KKyMgVGhpcyBmaWxlIGlzIGRp
c3RpbmN0IGZyb20gdGhlIENPTlRSSUJVVE9SUyBmaWxlcy4KKyMgU2VlIHRoZSBsYXR0ZXIgZm9y
IGFuIGV4cGxhbmF0aW9uLgorCisjIE5hbWVzIHNob3VsZCBiZSBhZGRlZCB0byB0aGlzIGZpbGUg
YXMKKyMJTmFtZSBvciBPcmdhbml6YXRpb24KKyMgRW1haWwgYWRkcmVzc2VzIGZvciBpbmRpdmlk
dWFscyBhcmUgdHJhY2tlZCBlbHNld2hlcmUgdG8gYXZvaWQgc3BhbS4KKworR29vZ2xlIEluYy4K
K1RyYW5zR2FtaW5nIEluYy4KKzNETGFicyBJbmMuIEx0ZC4KKworQWRvYmUgU3lzdGVtcyBJbmMu
CitBdXRvZGVzaywgSW5jLgorQ2xvdWQgUGFydHksIEluYy4KK0ludGVsIENvcnBvcmF0aW9uCitN
b3ppbGxhIENvcnBvcmF0aW9uCitUdXJidWxlbnoKK0tsYXLDpGx2ZGFsZW5zIERhdGFrb25zdWx0
IEFCCisKK0phY2VrIENhYmFuCitNYXJrIENhbGxvdworR2lubiBDaGVuCitKYW1lcyBIYXV4d2Vs
bAorU2FtIEhvY2V2YXIKK1BpZXJyZSBMZXZlaWxsZQorSm9uYXRoYW4gTGl1CitCb3lpbmcgTHUK
K0FpdG9yIE1vcmVubworWXVyaSBPJ0Rvbm5lbGwKK0pvc2ggU29yZWYKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL0NPTlRSSUJVVE9SUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9DT05UUklCVVRPUlMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DT05UUklCVVRPUlMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKyMgVGhp
cyBpcyB0aGUgb2ZmaWNpYWwgbGlzdCBvZiBwZW9wbGUgd2hvIGNhbiBjb250cmlidXRlDQorIyAo
YW5kIHdobyBoYXZlIGNvbnRyaWJ1dGVkKSBjb2RlIHRvIHRoZSBBTkdMRSBwcm9qZWN0DQorIyBy
ZXBvc2l0b3J5Lg0KKyMgVGhlIEFVVEhPUlMgZmlsZSBsaXN0cyB0aGUgY29weXJpZ2h0IGhvbGRl
cnM7IHRoaXMgZmlsZQ0KKyMgbGlzdHMgcGVvcGxlLiAgRm9yIGV4YW1wbGUsIEdvb2dsZSBlbXBs
b3llZXMgYXJlIGxpc3RlZCBoZXJlDQorIyBidXQgbm90IGluIEFVVEhPUlMsIGJlY2F1c2UgR29v
Z2xlIGhvbGRzIHRoZSBjb3B5cmlnaHQuDQorIw0KKw0KK1RyYW5zR2FtaW5nIEluYy4NCisgTmlj
b2xhcyBDYXBlbnMNCisgRGFuaWVsIEtvY2gNCisgR2VvZmYgTGFuZw0KKyBBbmRyZXcgTGV3eWNr
eQ0KKyBKYW1pZSBNYWRpbGwNCisgR2F2cmllbCBTdGF0ZQ0KKyBTaGFubm9uIFdvb2RzDQorDQor
R29vZ2xlIEluYy4NCisgQnJlbnQgQXVzdGluDQorIE1pY2hhZWwgQmFpDQorIEpvaG4gQmF1bWFu
DQorIFBldGVyIEJldmVybG9vDQorIFN0ZXZlIEJsb2NrDQorIFJhY2hlbCBCbHVtDQorIEVyaWMg
Qm9yZW4NCisgSGVucnkgQnJpZGdlDQorIE5hdCBEdWNhDQorIFBldGVyIEthc3RpbmcNCisgVmFu
Z2VsaXMgS29ra2V2aXMNCisgWmhlbnlhbyBNbw0KKyBEYW5pZWwgTmljb2FyYQ0KKyBBbGFzdGFp
ciBQYXRyaWNrDQorIEFsb2sgUHJpeWFkYXJzaGkNCisgS2VubmV0aCBSdXNzZWxsDQorIEJyaWFu
IFNhbG9tb24NCisgR3JlZ2cgVGF2YXJlcw0KKyBKZWZmIFRpbWFudXMNCisgQmVuIFZhbmlrDQor
IEFkcmllbm5lIFdhbGtlcg0KKyB0aGVzdGlnQGNocm9taXVtLm9yZw0KKyBKdXN0aW4gU2NodWgN
CisNCitBZG9iZSBTeXN0ZW1zIEluYy4NCisgQWxleGFuZHJ1IENoaWN1bGl0YQ0KKyBTdGV2ZSBN
aW5ucw0KKyBNYXggVnVqb3ZpYw0KKw0KK0F1dG9kZXNrLCBJbmMuDQorIFJhbmdlciBIYXJrZQ0K
Kw0KK0Nsb3VkIFBhcnR5LCBJbmMuDQorIENvbm9yIERpY2tpbnNvbg0KKw0KK0ludGVsIENvcnBv
cmF0aW9uDQorIEppbiBZYW5nDQorIEFuZHkgQ2hlbg0KKyBKb3NoIFRyaXBsZXR0DQorDQorS2xh
csOkbHZkYWxlbnMgRGF0YWtvbnN1bHQgQUINCisgTWlsaWFuIFdvbGZmDQorDQorTW96aWxsYSBD
b3JwLg0KKyBFaHNhbiBBa2hnYXJpDQorIEplZmYgR2lsYmVydA0KKyBNaWtlIEhvbW1leQ0KKyBC
ZW5vaXQgSmFjb2INCisgTWFrb3RvIEthdG8NCisgVmxhZGltaXIgVnVraWNldmljDQorDQorVHVy
YnVsZW56DQorIE1pY2hhZWwgQnJhaXRod2FpdGUNCisNCitVbHJpayBQZXJzc29uIChkZGVmcm9z
dHQpDQorTWFyayBCYW5uZXIgKHN0YW5kYXJkOG1icCkNCitEYXZpZCBLaWx6ZXINCisNCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9ERVBTCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL0RFUFMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9ERVBTCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACitkZXBzID0geworICAidHJ1bmsv
dGhpcmRfcGFydHkvZ3lwIjoKKyAgICAgICJodHRwOi8vZ3lwLmdvb2dsZWNvZGUuY29tL3N2bi90
cnVua0AxNTY0IiwKKworICAidHJ1bmsvdGhpcmRfcGFydHkvZ29vZ2xldGVzdCI6CisgICAgICAi
aHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rQDU3MyIsICNyZWxlYXNl
IDEuNi4wCisKKyAgInRydW5rL3RoaXJkX3BhcnR5L2dvb2dsZW1vY2siOgorICAgICAgImh0dHA6
Ly9nb29nbGVtb2NrLmdvb2dsZWNvZGUuY29tL3N2bi90cnVua0AzODciLCAjcmVsZWFzZSAxLjYu
MAorfQorCitob29rcyA9IFsKKyAgeworICAgICMgQSBjaGFuZ2UgdG8gYSAuZ3lwLCAuZ3lwaSwg
b3IgdG8gR1lQIGl0c2VsZiBzaG91bGQgcnVuIHRoZSBnZW5lcmF0b3IuCisgICAgInBhdHRlcm4i
OiAiLiIsCisgICAgImFjdGlvbiI6IFsicHl0aG9uIiwgInRydW5rL2J1aWxkL2d5cF9hbmdsZSJd
LAorICB9LAorXQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvRGVyaXZlZFNvdXJjZXMu
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9EZXJpdmVkU291cmNl
cy5tYWtlCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvRGVyaXZlZFNv
dXJjZXMubWFrZQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorYWxsOiBnbHNsYW5nX2xl
eC5jcHAgZ2xzbGFuZ190YWIuaCBnbHNsYW5nX3RhYi5jcHAgRXhwcmVzc2lvblBhcnNlci5jcHAg
VG9rZW5pemVyLmNwcAorCitnbHNsYW5nX2xleC5jcHA6IEFOR0xFL3NyYy9jb21waWxlci9nbHNs
YW5nLmwKKwlmbGV4IC0tbm9saW5lIC0tbm91bmlzdGQgLS1vdXRmaWxlPWdsc2xhbmdfbGV4LmNw
cCBBTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCisKK2dsc2xhbmdfdGFiLmggZ2xzbGFuZ190
YWIuY3BwOiBBTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55CisJYmlzb24gLS1uby1saW5lcyAt
LXNrZWxldG9uPXlhY2MuYyAtLWRlZmluZXM9Z2xzbGFuZ190YWIuaCAtLW91dHB1dD1nbHNsYW5n
X3RhYi5jcHAgQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcueQorCitFeHByZXNzaW9uUGFyc2Vy
LmNwcDogQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLnkK
KwliaXNvbiAtLW5vLWxpbmVzIC0tc2tlbGV0b249eWFjYy5jIC0tb3V0cHV0PUV4cHJlc3Npb25Q
YXJzZXIuY3BwIEFOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNl
ci55CisKK1Rva2VuaXplci5jcHA6IEFOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9r
ZW5pemVyLmwKKwlmbGV4IC0tbm9saW5lIC0tbm91bmlzdGQgLS1vdXRmaWxlPVRva2VuaXplci5j
cHAgQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIubApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSwxMCArMzksMTAgQEAgbGliQU5HTEVfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggXAog
CVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5
R3JhcGhPdXRwdXQuY3BwIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
ZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoVHJhdmVyc2UuY3BwIFwKKwlTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcCBcCisJU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oIFwKIAlTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5jcHAgXAogCVNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5Lmgg
XAotCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24u
Y3BwIFwKLQlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJz
aW9uLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGlj
cy5jcHAgXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGlj
cy5oIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlyZWN0aXZlSGFu
ZGxlci5jcHAgXApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvTElDRU5TRQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9MSUNFTlNFCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvTElDRU5TRQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
MiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisvLyBhcmUgbWV0OgorLy8KKy8vICAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vCisvLyAg
ICAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSAKKy8vICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworLy8gICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKy8vCisvLyAgICAgTmVpdGhlciB0aGUgbmFtZSBvZiBUcmFuc0dhbWluZyBJbmMuLCBHb29n
bGUgSW5jLiwgM0RMYWJzIEluYy4KKy8vICAgICBMdGQuLCBub3IgdGhlIG5hbWVzIG9mIHRoZWly
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlCisvLyAgICAgb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljCisvLyAg
ICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MKKy8vIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisvLyBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisvLyBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LAorLy8gQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworLy8gTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTgorLy8g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFCisvLyBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL1JFQURNRS5jaHJvbWl1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9SRUFETUUuY2hyb21pdW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9SRUFETUUuY2hyb21pdW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAK
K05hbWU6IEFOR0xFCitVUkw6IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0
LworVmVyc2lvbjogMjQyMgorTGljZW5zZTogQlNECitMaWNlbnNlIEZpbGU6IExJQ0VOU0UKKwor
RGVzY3JpcHRpb246CitBTkdMRSBpcyBhIGNvbmZvcm1hbnQgaW1wbGVtZW50YXRpb24gb2YgdGhl
IE9wZW5HTCBFUyAyLjAKK3NwZWNpZmljYXRpb24gdGhhdCBpcyBoYXJkd2FyZeKAkGFjY2VsZXJh
dGVkIHZpYSBEaXJlY3QzRC4KKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvVGFyZ2V0
LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9UYXJnZXQucHJpCShy
ZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9UYXJnZXQucHJpCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBAIEhFQURFUlMgKz0gXAogICAgIHNyYy9jb21w
aWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguaCBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdy
YXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBo
L0RlcGVuZGVuY3lHcmFwaE91dHB1dC5oIFwKKyAgICBzcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERl
cHRoLmggXAogICAgIHNyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmggXAotICAgIHNy
Yy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RpYWdub3N0
aWNzLmggXAogICAgIHNyYy9jb21waWxlci9EaXJlY3RpdmVIYW5kbGVyLmggXAogICAgIHNyYy9j
b21waWxlci9FeHRlbnNpb25CZWhhdmlvci5oIFwKQEAgLTkyLDggKzkyLDggQEAgU09VUkNFUyAr
PSBcCiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3Bw
IFwKICAgICBzcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCBc
CiAgICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaFRyYXZlcnNlLmNwcCBc
CisgICAgc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAgXAogICAgIHNyYy9jb21waWxl
ci9EZXRlY3REaXNjb250aW51aXR5LmNwcCBcCi0gICAgc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vy
c2lvbi5jcHAgXAogICAgIHNyYy9jb21waWxlci9EaWFnbm9zdGljcy5jcHAgXAogICAgIHNyYy9j
b21waWxlci9EaXJlY3RpdmVIYW5kbGVyLmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0Zvckxvb3BV
bnJvbGwuY3BwIFwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2NvZGVyZXZpZXcuc2V0
dGluZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvY29kZXJldmlldy5z
ZXR0aW5ncwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2NvZGVyZXZp
ZXcuc2V0dGluZ3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorIyBUaGlzIGZpbGUgaXMg
dXNlZCBieSBnY2wgdG8gZ2V0IHJlcG9zaXRvcnkgc3BlY2lmaWMgaW5mb3JtYXRpb24uDQorQ09E
RV9SRVZJRVdfU0VSVkVSOiBjb2RlcmV2aWV3LmFwcHNwb3QuY29tDQorQ0NfTElTVDogYW5nbGVw
cm9qZWN0LXJldmlld0Bnb29nbGVncm91cHMuY29tDQorVklFV19WQzogaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2FuZ2xlcHJvamVjdC9zb3VyY2UvZGV0YWlsP3I9DQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBA
CiAJCTQ5OTUxQzAzMTRCN0FBQjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwMjE0QjdBQUIzMDA2
MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oICovOyB9OwogCQk0OTk1MUMwOTE0QjdBQUQ4MDA2MEU5
NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDUxNEI3QUFENzAwNjBFOTZFIC8qIEJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCAqLzsgfTsKIAkJNDk5NTFDMEExNEI3QUFEODAwNjBFOTZF
IC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwNjE0QjdBQUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3IuaCAqLzsgfTsKLQkJNDk5NTFDMEIxNEI3QUFEODAwNjBFOTZFIC8qIERl
dGVjdFJlY3Vyc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCAq
LzsgfTsKLQkJNDk5NTFDMEMxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5NTFDMDgxNEI3
QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5oICovOyB9OworCQk1Q0IxM0ZENDE3OURC
M0ZEMDAxRjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjEzRkQyMTc5REIzRkQwMDFGODUxRCAvKiBEZXRl
Y3RDYWxsRGVwdGguY3BwICovOyB9OworCQk1Q0IxM0ZENTE3OURCM0ZEMDAxRjg1MUQgLyogRGV0
ZWN0Q2FsbERlcHRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0IxM0ZEMzE3OURCM0ZEMDAxRjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmggKi87IH07
CiAJCTkwRDlCMTAyMTJFMTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjBGOTEyRTExRENCMDAyRDQy
NTUgLyogQ29tcGlsZXIuY3BwICovOyB9OwogCQk5MEQ5QjEwMzEyRTExRENCMDAyRDQyNTUgLyog
RXh0ZW5zaW9uQmVoYXZpb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkwRDlCMEZBMTJFMTFEQ0IwMDJENDI1NSAvKiBFeHRlbnNpb25CZWhhdmlvci5o
ICovOyB9OwogCQk5MEQ5QjEwNDEyRTExRENCMDAyRDQyNTUgLyogZ2xzbGFuZ19sZXguY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTBEOUIwRkIxMkUx
MURDQjAwMkQ0MjU1IC8qIGdsc2xhbmdfbGV4LmNwcCAqLzsgfTsKQEAgLTE0MCw4ICsxNDAsOCBA
QAogCQk0OTk1MUMwMjE0QjdBQUIzMDA2MEU5NkUgLyogbGVuZ3RoX2xpbWl0cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBsZW5ndGhfbGltaXRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ5OTUxQzA1MTRCN0FBRDcwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rp
b25FbXVsYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWls
dEluRnVuY3Rpb25FbXVsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5
OTUxQzA2MTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyog
RGV0ZWN0UmVjdXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERldGVjdFJlY3Vyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5OTUx
QzA4MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGV0ZWN0UmVjdXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDQjEzRkQyMTc5REIzRkQwMDFGODUxRCAvKiBEZXRlY3RDYWxsRGVwdGguY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGV0ZWN0Q2FsbERlcHRoLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCMTNGRDMxNzlEQjNGRDAwMUY4NTFE
IC8qIERldGVjdENhbGxEZXB0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
ZXRlY3RDYWxsRGVwdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QzU5QzUx
MjA4QzY4QjAwMUM4NzNFIC8qIEFOR0xFLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IEFOR0xFLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
RDdDNTlDNjEyMDhDNjhCMDAxQzg3M0UgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1RDdDNTlDNzEyMDhDNjhCMDAxQzg3M0UgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM5OSw4ICszOTksOCBAQAogCQkJCUZCMzlEMjI1
MTIwMEYzNUEwMDA4OEU2OSAvKiBDb25zdGFudFVuaW9uLmggKi8sCiAJCQkJRkIzOUQyMjYxMjAw
RjM1QTAwMDg4RTY5IC8qIGRlYnVnLmNwcCAqLywKIAkJCQlGQjM5RDIyNzEyMDBGMzVBMDAwODhF
NjkgLyogZGVidWcuaCAqLywKLQkJCQk0OTk1MUMwNzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0
UmVjdXJzaW9uLmNwcCAqLywKLQkJCQk0OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0
UmVjdXJzaW9uLmggKi8sCisJCQkJNUNCMTNGRDMxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENh
bGxEZXB0aC5oICovLAorCQkJCTVDQjEzRkQyMTc5REIzRkQwMDFGODUxRCAvKiBEZXRlY3RDYWxs
RGVwdGguY3BwICovLAogCQkJCUEyNjU2N0IwMTU5QzIxQjEwMDM5ODUzOSAvKiBEaWFnbm9zdGlj
cy5jcHAgKi8sCiAJCQkJQTI2NTY3QjExNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdub3N0aWNzLmgg
Ki8sCiAJCQkJQTI2NTY3QjIxNTlDMjFCMTAwMzk4NTM5IC8qIERpcmVjdGl2ZUhhbmRsZXIuY3Bw
ICovLApAQCAtNTMwLDcgKzUzMCw2IEBACiAJCQkJQTI2NTY4M0ExNTlDMjNFMTAwMzk4NTM5IC8q
IERlcGVuZGVuY3lHcmFwaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY4M0MxNTlDMjNFMTAw
Mzk4NTM5IC8qIERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEy
NjU2ODNFMTU5QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhPdXRwdXQuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTQ5OTUxQzBDMTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjU2N0JDMTU5QzIxQjEwMDM5ODUzOSAvKiBEaWFnbm9z
dGljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QUQxNjk3NERFRDAwNkZBQTVBIC8qIERp
YWdub3N0aWNzQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY3QkUxNTlDMjFCMTAwMzk4
NTM5IC8qIERpcmVjdGl2ZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNTY5LDYgKzU2OCw3
IEBACiAJCQkJOTBEOUIxMTgxMkUxMURENjAwMkQ0MjU1IC8qIFZhcmlhYmxlSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTI2NEY4Q0ExNjk3NEUyQTAwNkZBQTVBIC8qIFZhcmlhYmxlUGFja2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MEQ5QjExQTEyRTExREQ2MDAyRDQyNTUgLyogVmVyc2lv
bkdMU0wuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQjEzRkQ1MTc5REIzRkQwMDFGODUxRCAvKiBE
ZXRlY3RDYWxsRGVwdGguaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNjM1LDcgKzYzNSw2IEBACiAJCQkJ
QTI2NTY4M0IxNTlDMjNFMTAwMzk4NTM5IC8qIERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTI2NTY4M0QxNTlDMjNFMTAwMzk4NTM5IC8qIERlcGVuZGVuY3lH
cmFwaE91dHB1dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1NjgzRjE1OUMyM0UxMDAzOTg1
MzkgLyogRGVwZW5kZW5jeUdyYXBoVHJhdmVyc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDk5
NTFDMEIxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMjY1NjdCQjE1OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25vc3RpY3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTI2NEY4QUMxNjk3NERFRDAwNkZBQTVBIC8qIERpYWdub3N0aWNzQmFz
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1NjdCRDE1OUMyMUIxMDAzOTg1MzkgLyogRGly
ZWN0aXZlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY4MSw2ICs2ODAsNyBAQAogCQkJ
CTkwRDlCMTE3MTJFMTFERDYwMDJENDI1NSAvKiBWYXJpYWJsZUluZm8uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTI2NEY4QzkxNjk3NEUyQTAwNkZBQTVBIC8qIFZhcmlhYmxlUGFja2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkwRDlCMTE5MTJFMTFERDYwMDJENDI1NSAvKiBWZXJzaW9uR0xT
TC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0IxM0ZENDE3OURCM0ZEMDAxRjg1MUQgLyogRGV0
ZWN0Q2FsbERlcHRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0LmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMDYsNiArMzA2LDEyIEBAIHR5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVH
TFEKICNkZWZpbmUgRUdMX1NPRlRXQVJFX0RJU1BMQVlfQU5HTEUgKChFR0xOYXRpdmVEaXNwbGF5
VHlwZSktMSkKICNlbmRpZgogCisjaWZuZGVmIEVHTF9BTkdMRV9kaXJlY3QzZF9kaXNwbGF5Cisj
ZGVmaW5lIEVHTF9BTkdMRV9kaXJlY3QzZF9kaXNwbGF5IDEKKyNkZWZpbmUgRUdMX0QzRDExX0VM
U0VfRDNEOV9ESVNQTEFZX0FOR0xFICgoRUdMTmF0aXZlRGlzcGxheVR5cGUpLTIpCisjZGVmaW5l
IEVHTF9EM0QxMV9PTkxZX0RJU1BMQVlfQU5HTEUgKChFR0xOYXRpdmVEaXNwbGF5VHlwZSktMykK
KyNlbmRpZgorCiAjaWZuZGVmIEVHTF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJl
X2hhbmRsZQogI2RlZmluZSBFR0xfQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFyZV9o
YW5kbGUgMQogI2RlZmluZSBFR0xfRDNEX1RFWFRVUkVfMkRfU0hBUkVfSEFORExFX0FOR0xFCTB4
MzIwMApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2ds
MmV4dC5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNs
dWRlL0dMRVMyL2dsMmV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTYsNiArNTU2LDQ0IEBAIHR5
cGVkZWYgdm9pZCogR0xlZ2xJbWFnZU9FUzsKICNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDE1
X05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRUYKICNlbmRpZgogCisvKiBH
TF9FWFRfZHJhd19idWZmZXJzICovCisjaWZuZGVmIEdMX0VYVF9kcmF3X2J1ZmZlcnMKKyNkZWZp
bmUgR0xfTUFYX0RSQVdfQlVGRkVSU19FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4ODI0CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMF9FWFQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4ODgyNQorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjFfRVhUICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MjYKKyNkZWZpbmUgR0xfRFJB
V19CVUZGRVIyX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI3
CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSM19FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4ODgyOAorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjRfRVhUICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MjkKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVI1
X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODJBCisjZGVmaW5l
IEdMX0RSQVdfQlVGRkVSNl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4ODgyQgorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjdfRVhUICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDg4MkMKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVI4X0VYVCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODJECisjZGVmaW5lIEdMX0RSQVdf
QlVGRkVSOV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyRQor
I2RlZmluZSBHTF9EUkFXX0JVRkZFUjEwX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDg4MkYKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxMV9FWFQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODMwCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTJf
RVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgzMQorI2RlZmluZSBH
TF9EUkFXX0JVRkZFUjEzX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDg4MzIKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxNF9FWFQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4ODMzCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTVfRVhUICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgzNAorI2RlZmluZSBHTF9DT0xPUl9B
VFRBQ0hNRU5UMF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRTAKKyNk
ZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDFfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4Q0UxCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQyX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4OENFMgorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5U
M19FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRTMKKyNkZWZpbmUgR0xf
Q09MT1JfQVRUQUNITUVOVDRfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
Q0U0CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ1X0VYVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4OENFNQorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UNl9FWFQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRTYKKyNkZWZpbmUgR0xfQ09MT1JfQVRU
QUNITUVOVDdfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U3CisjZGVm
aW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ4X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4OENFOAorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UOV9FWFQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDhDRTkKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDEw
X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VBCisjZGVmaW5lIEdMX0NP
TE9SX0FUVEFDSE1FTlQxMV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENF
QgorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTJfRVhUICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDhDRUMKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDEzX0VYVCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VECisjZGVmaW5lIEdMX0NPTE9SX0FUVEFD
SE1FTlQxNF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFRQorI2RlZmlu
ZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTVfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDhDRUYKKyNkZWZpbmUgR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4Q0RGCisjZW5kaWYKKwogLyogR0xfTlZfZmJvX2NvbG9yX2F0
dGFjaG1lbnRzICovCiAjaWZuZGVmIEdMX05WX2Zib19jb2xvcl9hdHRhY2htZW50cwogI2RlZmlu
ZSBHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFNfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4OENERgpAQCAtMTMzMSw2ICsxMzY5LDE0IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbERyYXdCdWZmZXIKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRFJBV0JVRkZF
UlNOVlBST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcyk7CiAjZW5kaWYKIAorI2lm
bmRlZiBHTF9FWFRfZHJhd19idWZmZXJzCisjZGVmaW5lIEdMX0VYVF9kcmF3X2J1ZmZlcnMgMQor
I2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bERyYXdCdWZmZXJzRVhUIChHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcyk7CisjZW5kaWYK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRFJBV0JVRkZFUlNFWFRQUk9DKSAoR0xz
aXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpOworI2VuZGlmCisKIC8qIEdMX05WX2Zib19jb2xv
cl9hdHRhY2htZW50cyAqLwogI2lmbmRlZiBHTF9OVl9mYm9fY29sb3JfYXR0YWNobWVudHMKICNk
ZWZpbmUgR0xfTlZfZmJvX2NvbG9yX2F0dGFjaG1lbnRzIDEKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkocmV2aXNp
b24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1No
YWRlckxhbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmln
aHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtNzgsOSArNzgsMTEgQEAgdHlwZWRlZiBlbnVtIHsK
IH0gU2hTaGFkZXJTcGVjOwogCiB0eXBlZGVmIGVudW0gewotICBTSF9FU1NMX09VVFBVVCA9IDB4
OEI0NSwKLSAgU0hfR0xTTF9PVVRQVVQgPSAweDhCNDYsCi0gIFNIX0hMU0xfT1VUUFVUID0gMHg4
QjQ3CisgIFNIX0VTU0xfT1VUUFVUICAgPSAweDhCNDUsCisgIFNIX0dMU0xfT1VUUFVUICAgPSAw
eDhCNDYsCisgIFNIX0hMU0xfT1VUUFVUICAgPSAweDhCNDcsCisgIFNIX0hMU0w5X09VVFBVVCAg
PSAweDhCNDcsCisgIFNIX0hMU0wxMV9PVVRQVVQgPSAweDhCNDgKIH0gU2hTaGFkZXJPdXRwdXQ7
CiAKIHR5cGVkZWYgZW51bSB7CkBAIC0xMTYsNyArMTE4LDggQEAgdHlwZWRlZiBlbnVtIHsKICAg
U0hfTUFQUEVEX05BTUVfTUFYX0xFTkdUSCAgICAgID0gIDB4NjAwMCwKICAgU0hfTkFNRV9NQVhf
TEVOR1RIICAgICAgICAgICAgID0gIDB4NjAwMSwKICAgU0hfSEFTSEVEX05BTUVfTUFYX0xFTkdU
SCAgICAgID0gIDB4NjAwMiwKLSAgU0hfSEFTSEVEX05BTUVTX0NPVU5UICAgICAgICAgID0gIDB4
NjAwMworICBTSF9IQVNIRURfTkFNRVNfQ09VTlQgICAgICAgICAgPSAgMHg2MDAzLAorICBTSF9B
Q1RJVkVfVU5JRk9STVNfQVJSQVkgICAgICAgPSAgMHg2MDA0CiB9IFNoU2hhZGVySW5mbzsKIAog
Ly8gQ29tcGlsZSBvcHRpb25zLgpAQCAtMTU5LDcgKzE2MiwxMyBAQCB0eXBlZGVmIGVudW0gewog
ICAvLyB2ZWMyMzQsIG9yIG1hdDIzNCB0eXBlLiBUaGUgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJh
dGVneSBlbnVtLAogICAvLyBzcGVjaWZpZWQgaW4gdGhlIFNoQnVpbHRJblJlc291cmNlcyB3aGVu
IGNvbnN0cnVjdGluZyB0aGUKICAgLy8gY29tcGlsZXIsIHNlbGVjdHMgdGhlIHN0cmF0ZWd5IGZv
ciB0aGUgY2xhbXBpbmcgaW1wbGVtZW50YXRpb24uCi0gIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZ
X0JPVU5EUyA9IDB4MTAwMAorICBTSF9DTEFNUF9JTkRJUkVDVF9BUlJBWV9CT1VORFMgPSAweDEw
MDAsCisKKyAgLy8gVGhpcyBmbGFnIGxpbWl0cyB0aGUgY29tcGxleGl0eSBvZiBhbiBleHByZXNz
aW9uLgorICBTSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkgPSAweDIwMDAsCisKKyAgLy8g
VGhpcyBmbGFnIGxpbWl0cyB0aGUgZGVwdGggb2YgdGhlIGNhbGwgc3RhY2suCisgIFNIX0xJTUlU
X0NBTExfU1RBQ0tfREVQVEggPSAweDQwMDAsCiB9IFNoQ29tcGlsZU9wdGlvbnM7CiAKIC8vIERl
ZmluZXMgYWx0ZXJuYXRlIHN0cmF0ZWdpZXMgZm9yIGltcGxlbWVudGluZyBhcnJheSBpbmRleCBj
bGFtcGluZy4KQEAgLTIwOSw2ICsyMTgsNyBAQCB0eXBlZGVmIHN0cnVjdAogICAgIGludCBPRVNf
RUdMX2ltYWdlX2V4dGVybmFsOwogICAgIGludCBBUkJfdGV4dHVyZV9yZWN0YW5nbGU7CiAgICAg
aW50IEVYVF9kcmF3X2J1ZmZlcnM7CisgICAgaW50IEVYVF9mcmFnX2RlcHRoOwogCiAgICAgLy8g
U2V0IHRvIDEgaWYgaGlnaHAgcHJlY2lzaW9uIGlzIHN1cHBvcnRlZCBpbiB0aGUgZnJhZ21lbnQg
bGFuZ3VhZ2UuCiAgICAgLy8gRGVmYXVsdCBpcyAwLgpAQCAtMjIyLDYgKzIzMiwxMiBAQCB0eXBl
ZGVmIHN0cnVjdAogICAgIC8vIFNlbGVjdHMgYSBzdHJhdGVneSB0byB1c2Ugd2hlbiBpbXBsZW1l
bnRpbmcgYXJyYXkgaW5kZXggY2xhbXBpbmcuCiAgICAgLy8gRGVmYXVsdCBpcyBTSF9DTEFNUF9X
SVRIX0NMQU1QX0lOVFJJTlNJQy4KICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IEFy
cmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5OworCisgICAgLy8gVGhlIG1heGltdW0gY29tcGxleGl0
eSBhbiBleHByZXNzaW9uIGNhbiBiZS4KKyAgICBpbnQgTWF4RXhwcmVzc2lvbkNvbXBsZXhpdHk7
CisKKyAgICAvLyBUaGUgbWF4aW11bSBkZXB0aCBhIGNhbGwgc3RhY2sgY2FuIGJlLgorICAgIGlu
dCBNYXhDYWxsU3RhY2tEZXB0aDsKIH0gU2hCdWlsdEluUmVzb3VyY2VzOwogCiAvLwpAQCAtMjQ4
LDcgKzI2NCw3IEBAIHR5cGVkZWYgdm9pZCogU2hIYW5kbGU7CiAvLyBzcGVjOiBTcGVjaWZpZXMg
dGhlIGxhbmd1YWdlIHNwZWMgdGhlIGNvbXBpbGVyIG11c3QgY29uZm9ybSB0byAtCiAvLyAgICAg
ICBTSF9HTEVTMl9TUEVDIG9yIFNIX1dFQkdMX1NQRUMuCiAvLyBvdXRwdXQ6IFNwZWNpZmllcyB0
aGUgb3V0cHV0IGNvZGUgdHlwZSAtIFNIX0VTU0xfT1VUUFVULCBTSF9HTFNMX09VVFBVVCwKLS8v
ICAgICAgICAgb3IgU0hfSExTTF9PVVRQVVQuCisvLyAgICAgICAgIFNIX0hMU0w5X09VVFBVVCBv
ciBTSF9ITFNMMTFfT1VUUFVULgogLy8gcmVzb3VyY2VzOiBTcGVjaWZpZXMgdGhlIGJ1aWx0LWlu
IHJlc291cmNlcy4KIENPTVBJTEVSX0VYUE9SVCBTaEhhbmRsZSBTaENvbnN0cnVjdENvbXBpbGVy
KAogICAgIFNoU2hhZGVyVHlwZSB0eXBlLApAQCAtNDExLDYgKzQyNywxOCBAQCBDT01QSUxFUl9F
WFBPUlQgdm9pZCBTaEdldE5hbWVIYXNoaW5nRW50CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciogbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyKiBoYXNoZWROYW1lKTsKIAorLy8gUmV0dXJucyBhIHBhcmFt
ZXRlciBmcm9tIGEgY29tcGlsZWQgc2hhZGVyLgorLy8gUGFyYW1ldGVyczoKKy8vIGhhbmRsZTog
U3BlY2lmaWVzIHRoZSBjb21waWxlcgorLy8gcG5hbWU6IFNwZWNpZmllcyB0aGUgcGFyYW1ldGVy
IHRvIHF1ZXJ5LgorLy8gVGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIGFyZSBkZWZpbmVkOgorLy8g
U0hfQUNUSVZFX1VOSUZPUk1TX0FSUkFZOiBhbiBTVEwgdmVjdG9yIG9mIGFjdGl2ZSB1bmlmb3Jt
cy4gVmFsaWQgb25seSBmb3IKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgSExTTCBvdXRw
dXQuCisvLyBwYXJhbXM6IFJlcXVlc3RlZCBwYXJhbWV0ZXIKK0NPTVBJTEVSX0VYUE9SVCB2b2lk
IFNoR2V0SW5mb1BvaW50ZXIoY29uc3QgU2hIYW5kbGUgaGFuZGxlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRlckluZm8gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqKiBwYXJhbXMpOworCiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL0FOR0xF
LnNsbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvQU5HTEUuc2xu
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL0FOR0xFLnNsbgko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAor77u/DQorTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDANCisjIFZpc3VhbCBDKysgRXhw
cmVzcyAyMDEwDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0
Mn0iKSA9ICJsaWJFR0wiLCAibGliRUdMXGxpYkVHTC52Y3hwcm9qIiwgIntFNzQ2RkNBOS02NEMz
LTQzM0UtODVFOC05QTVBNjdBQjdFRDZ9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNF
QjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImxpYkdMRVN2MiIsICJsaWJHTEVT
djJcbGliR0xFU3YyLnZjeHByb2oiLCAie0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0
OEU3OH0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0w
MEEwQzkxQkM5NDJ9IikgPSAidHJhbnNsYXRvcl9obHNsIiwgImNvbXBpbGVyXHRyYW5zbGF0b3Jf
aGxzbC52Y3hwcm9qIiwgIns1NjIwRjBFNC02QzQzLTQ5QkMtQTE3OC1CODA0RTFBMEMzQTd9Ig0K
K0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJD
OTQyfSIpID0gInRyYW5zbGF0b3JfY29tbW9uIiwgImNvbXBpbGVyXHRyYW5zbGF0b3JfY29tbW9u
LnZjeHByb2oiLCAiezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0iDQorRW5k
UHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9
IikgPSAicHJlcHJvY2Vzc29yIiwgImNvbXBpbGVyXHByZXByb2Nlc3NvclxwcmVwcm9jZXNzb3Iu
dmN4cHJvaiIsICJ7RkJFMzJERjMtMEZCMC00RjJGLUE0MjQtMkMyMUJEN0JDMzI1fSINCitFbmRQ
cm9qZWN0DQorR2xvYmFsDQorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxh
dGZvcm1zKSA9IHByZVNvbHV0aW9uDQorCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQorCQlE
ZWJ1Z3x4NjQgPSBEZWJ1Z3x4NjQNCisJCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyDQor
CQlSZWxlYXNlfHg2NCA9IFJlbGVhc2V8eDY0DQorCUVuZEdsb2JhbFNlY3Rpb24NCisJR2xvYmFs
U2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24NCisJ
CXtFNzQ2RkNBOS02NEMzLTQzM0UtODVFOC05QTVBNjdBQjdFRDZ9LkRlYnVnfFdpbjMyLkFjdGl2
ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7RTc0NkZDQTktNjRDMy00MzNFLTg1RTgtOUE1QTY3QUI3
RUQ2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtFNzQ2RkNBOS02NEMz
LTQzM0UtODVFOC05QTVBNjdBQjdFRDZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQN
CisJCXtFNzQ2RkNBOS02NEMzLTQzM0UtODVFOC05QTVBNjdBQjdFRDZ9LkRlYnVnfHg2NC5CdWls
ZC4wID0gRGVidWd8eDY0DQorCQl7RTc0NkZDQTktNjRDMy00MzNFLTg1RTgtOUE1QTY3QUI3RUQ2
fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtFNzQ2RkNBOS02
NEMzLTQzM0UtODVFOC05QTVBNjdBQjdFRDZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVh
c2V8V2luMzINCisJCXtFNzQ2RkNBOS02NEMzLTQzM0UtODVFOC05QTVBNjdBQjdFRDZ9LlJlbGVh
c2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RTc0NkZDQTktNjRDMy00MzNFLTg1
RTgtOUE1QTY3QUI3RUQ2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtC
NTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFFNkY0NDhFNzh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNm
ZyA9IERlYnVnfFdpbjMyDQorCQl7QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0ItOTgxRTZGNDQ4RTc4
fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtCNTg3MUE3QS05NjhDLTQy
RTMtQTMzQi05ODFFNkY0NDhFNzh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJ
CXtCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFFNkY0NDhFNzh9LkRlYnVnfHg2NC5CdWlsZC4w
ID0gRGVidWd8eDY0DQorCQl7QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0ItOTgxRTZGNDQ4RTc4fS5S
ZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtCNTg3MUE3QS05NjhD
LTQyRTMtQTMzQi05ODFFNkY0NDhFNzh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8
V2luMzINCisJCXtCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFFNkY0NDhFNzh9LlJlbGVhc2V8
eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0It
OTgxRTZGNDQ4RTc4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs1NjIw
RjBFNC02QzQzLTQ5QkMtQTE3OC1CODA0RTFBMEMzQTd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9
IERlYnVnfFdpbjMyDQorCQl7NTYyMEYwRTQtNkM0My00OUJDLUExNzgtQjgwNEUxQTBDM0E3fS5E
ZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs1NjIwRjBFNC02QzQzLTQ5QkMt
QTE3OC1CODA0RTFBMEMzQTd9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs1
NjIwRjBFNC02QzQzLTQ5QkMtQTE3OC1CODA0RTFBMEMzQTd9LkRlYnVnfHg2NC5CdWlsZC4wID0g
RGVidWd8eDY0DQorCQl7NTYyMEYwRTQtNkM0My00OUJDLUExNzgtQjgwNEUxQTBDM0E3fS5SZWxl
YXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs1NjIwRjBFNC02QzQzLTQ5
QkMtQTE3OC1CODA0RTFBMEMzQTd9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2lu
MzINCisJCXs1NjIwRjBFNC02QzQzLTQ5QkMtQTE3OC1CODA0RTFBMEMzQTd9LlJlbGVhc2V8eDY0
LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NTYyMEYwRTQtNkM0My00OUJDLUExNzgtQjgw
NEUxQTBDM0E3fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs1QjNBNkRC
OC0xRTdFLTQwRDctOTJCOS1EQThBQUU2MTlGQUR9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERl
YnVnfFdpbjMyDQorCQl7NUIzQTZEQjgtMUU3RS00MEQ3LTkyQjktREE4QUFFNjE5RkFEfS5EZWJ1
Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs1QjNBNkRCOC0xRTdFLTQwRDctOTJC
OS1EQThBQUU2MTlGQUR9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs1QjNB
NkRCOC0xRTdFLTQwRDctOTJCOS1EQThBQUU2MTlGQUR9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVi
dWd8eDY0DQorCQl7NUIzQTZEQjgtMUU3RS00MEQ3LTkyQjktREE4QUFFNjE5RkFEfS5SZWxlYXNl
fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs1QjNBNkRCOC0xRTdFLTQwRDct
OTJCOS1EQThBQUU2MTlGQUR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIN
CisJCXs1QjNBNkRCOC0xRTdFLTQwRDctOTJCOS1EQThBQUU2MTlGQUR9LlJlbGVhc2V8eDY0LkFj
dGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NUIzQTZEQjgtMUU3RS00MEQ3LTkyQjktREE4QUFF
NjE5RkFEfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtGQkUzMkRGMy0w
RkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVn
fFdpbjMyDQorCQl7RkJFMzJERjMtMEZCMC00RjJGLUE0MjQtMkMyMUJEN0JDMzI1fS5EZWJ1Z3xX
aW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0y
QzIxQkQ3QkMzMjV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtGQkUzMkRG
My0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8
eDY0DQorCQl7RkJFMzJERjMtMEZCMC00RjJGLUE0MjQtMkMyMUJEN0JDMzI1fS5SZWxlYXNlfFdp
bjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQy
NC0yQzIxQkQ3QkMzMjV9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJ
CXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9LlJlbGVhc2V8eDY0LkFjdGl2
ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RkJFMzJERjMtMEZCMC00RjJGLUE0MjQtMkMyMUJEN0JD
MzI1fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJRW5kR2xvYmFsU2VjdGlv
bg0KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KKwkJ
SGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQorCUVuZEdsb2JhbFNlY3Rpb24NCitFbmRHbG9iYWwN
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYnVpbGRfYW5nbGUuZ3lwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9idWlsZF9hbmdsZS5neXAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYnVpbGRfYW5nbGUuZ3lw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACisjIENvcHlyaWdodCAoYykgMjAxMiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ2luY2x1ZGVzJzogWwor
ICAgICdidWlsZF9hbmdsZS5neXBpJywKKyAgXSwKK30KKworIyBMb2NhbCBWYXJpYWJsZXM6Cisj
IHRhYi13aWR0aDoyCisjIGluZGVudC10YWJzLW1vZGU6bmlsCisjIEVuZDoKKyMgdmltOiBzZXQg
ZXhwYW5kdGFiIHRhYnN0b3A9MiBzaGlmdHdpZHRoPTI6CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvYnVpbGRfYW5nbGUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvYnVpbGRfYW5nbGUuZ3lwaQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9idWlsZF9hbmdsZS5neXBpCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQyMCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorCit7CisgICd2YXJpYWJsZXMnOiB7CisgICAgJ2FuZ2xlX2NvZGUnOiAx
LAorICB9LAorICAndGFyZ2V0X2RlZmF1bHRzJzogeworICAgICdkZWZpbmVzJzogWworICAgICAg
J0FOR0xFX0RJU0FCTEVfVFJBQ0UnLAorICAgICAgJ0FOR0xFX0NPTVBJTEVfT1BUSU1JWkFUSU9O
X0xFVkVMPUQzRENPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMMScsCisgICAgICAnQU5HTEVfUFJF
TE9BREVEX0QzRENPTVBJTEVSX01PRFVMRV9OQU1FUz17IFRFWFQoImQzZGNvbXBpbGVyXzQ2LmRs
bCIpLCBURVhUKCJkM2Rjb21waWxlcl80My5kbGwiKSB9JywKKyAgICBdLAorICB9LAorICAndGFy
Z2V0cyc6IFsKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAncHJlcHJvY2Vzc29yJywKKyAg
ICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKKyAgICAgICdpbmNsdWRlX2RpcnMnOiBbCisg
ICAgICBdLAorICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNz
b3IvRGlhZ25vc3RpY3NCYXNlLmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3Iv
RGlhZ25vc3RpY3NCYXNlLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVj
dGl2ZUhhbmRsZXJCYXNlLmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGly
ZWN0aXZlSGFuZGxlckJhc2UuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGly
ZWN0aXZlUGFyc2VyLmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0
aXZlUGFyc2VyLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25Q
YXJzZXIuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFy
c2VyLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmNwcCcsCisgICAg
ICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuaCcsCisgICAgICAgICdjb21waWxlci9w
cmVwcm9jZXNzb3IvbGVuZ3RoX2xpbWl0cy5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9MZXhlci5jcHAnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0xleGVyLmgn
LAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvLmNwcCcsCisgICAgICAgICdj
b21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm8uaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9j
ZXNzb3IvTWFjcm9FeHBhbmRlci5jcHAnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29y
L01hY3JvRXhwYW5kZXIuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvbnVtZXJp
Y19sZXguaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvcHBfdXRpbHMuaCcsCisg
ICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmNwcCcsCisgICAgICAg
ICdjb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmgnLAorICAgICAgICAnY29tcGls
ZXIvcHJlcHJvY2Vzc29yL1NvdXJjZUxvY2F0aW9uLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJl
cHJvY2Vzc29yL1Rva2VuLmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvVG9r
ZW4uaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcCcsCisg
ICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmgnLAorICAgICAgXSwKKyAg
ICAgICMgVE9ETyhqc2NodWgpOiBodHRwOi8vY3JidWcuY29tLzE2NzE4NworICAgICAgJ21zdnNf
ZGlzYWJsZWRfd2FybmluZ3MnOiBbCisgICAgICAgIDQyNjcsCisgICAgICBdLCAgICAgIAorICAg
IH0sCisgICAgeworICAgICAgJ3RhcmdldF9uYW1lJzogJ3RyYW5zbGF0b3JfY29tbW9uJywKKyAg
ICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKKyAgICAgICdkZXBlbmRlbmNpZXMnOiBbJ3By
ZXByb2Nlc3NvciddLAorICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKKyAgICAgICAgJy4nLAorICAg
ICAgICAnLi4vaW5jbHVkZScsCisgICAgICBdLAorICAgICAgJ2RlZmluZXMnOiBbCisgICAgICAg
ICdDT01QSUxFUl9JTVBMRU1FTlRBVElPTicsCisgICAgICBdLAorICAgICAgJ3NvdXJjZXMnOiBb
CisgICAgICAgICdjb21waWxlci9CYXNlVHlwZXMuaCcsCisgICAgICAgICdjb21waWxlci9CdWls
dEluRnVuY3Rpb25FbXVsYXRvci5jcHAnLAorICAgICAgICAnY29tcGlsZXIvQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IuaCcsCisgICAgICAgICdjb21waWxlci9Db21tb24uaCcsCisgICAgICAgICdj
b21waWxlci9Db21waWxlci5jcHAnLAorICAgICAgICAnY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5o
JywKKyAgICAgICAgJ2NvbXBpbGVyL2RlYnVnLmNwcCcsCisgICAgICAgICdjb21waWxlci9kZWJ1
Zy5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAnLAorICAgICAgICAn
Y29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgnLAorICAgICAgICAnY29tcGlsZXIvRGlhZ25vc3Rp
Y3MuaCcsCisgICAgICAgICdjb21waWxlci9EaWFnbm9zdGljcy5jcHAnLAorICAgICAgICAnY29t
cGlsZXIvRGlyZWN0aXZlSGFuZGxlci5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0RpcmVjdGl2ZUhh
bmRsZXIuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL0V4dGVuc2lvbkJlaGF2aW9yLmgnLAorICAg
ICAgICAnY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvRm9y
TG9vcFVucm9sbC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL2dsc2xhbmcuaCcsCisgICAgICAgICdj
b21waWxlci9nbHNsYW5nX2xleC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvZ2xzbGFuZ190YWIu
Y3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgnLAorICAgICAgICAnY29tcGls
ZXIvSGFzaE5hbWVzLmgnLAorICAgICAgICAnY29tcGlsZXIvSW5mb1NpbmsuY3BwJywKKyAgICAg
ICAgJ2NvbXBpbGVyL0luZm9TaW5rLmgnLAorICAgICAgICAnY29tcGlsZXIvSW5pdGlhbGl6ZS5j
cHAnLAorICAgICAgICAnY29tcGlsZXIvSW5pdGlhbGl6ZS5oJywKKyAgICAgICAgJ2NvbXBpbGVy
L0luaXRpYWxpemVEbGwuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL0luaXRpYWxpemVEbGwuaCcs
CisgICAgICAgICdjb21waWxlci9Jbml0aWFsaXplR2xvYmFscy5oJywKKyAgICAgICAgJ2NvbXBp
bGVyL0luaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL0luaXRp
YWxpemVQYXJzZUNvbnRleHQuaCcsCisgICAgICAgICdjb21waWxlci9JbnRlcm1lZGlhdGUuY3Bw
JywKKyAgICAgICAgJ2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oJywKKyAgICAgICAgJ2NvbXBpbGVy
L2ludGVybU91dC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvSW50ZXJtVHJhdmVyc2UuY3BwJywK
KyAgICAgICAgJ2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmgnLAorICAgICAgICAnY29tcGls
ZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL01hcExvbmdW
YXJpYWJsZU5hbWVzLmgnLAorICAgICAgICAnY29tcGlsZXIvTU1hcC5oJywKKyAgICAgICAgJ2Nv
bXBpbGVyL29zaW5jbHVkZS5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwJywK
KyAgICAgICAgJ2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcCcsCisgICAgICAgICdjb21waWxlci9Q
YXJzZUhlbHBlci5oJywKKyAgICAgICAgJ2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHAnLAorICAgICAg
ICAnY29tcGlsZXIvUG9vbEFsbG9jLmgnLAorICAgICAgICAnY29tcGlsZXIvUXVhbGlmaWVyQWxp
dmUuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1F1YWxpZmllckFsaXZlLmgnLAorICAgICAgICAn
Y29tcGlsZXIvUmVtb3ZlVHJlZS5jcHAnLAorICAgICAgICAnY29tcGlsZXIvUmVtb3ZlVHJlZS5o
JywKKyAgICAgICAgJ2NvbXBpbGVyL1JlbmFtZUZ1bmN0aW9uLmgnLAorICAgICAgICAnY29tcGls
ZXIvU2hIYW5kbGUuaCcsCisgICAgICAgICdjb21waWxlci9TeW1ib2xUYWJsZS5jcHAnLAorICAg
ICAgICAnY29tcGlsZXIvU3ltYm9sVGFibGUuaCcsCisgICAgICAgICdjb21waWxlci9UeXBlcy5o
JywKKyAgICAgICAgJ2NvbXBpbGVyL1VuaWZvcm0uY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1Vu
aWZvcm0uaCcsCisgICAgICAgICdjb21waWxlci91dGlsLmNwcCcsCisgICAgICAgICdjb21waWxl
ci91dGlsLmgnLAorICAgICAgICAnY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHAnLAor
ICAgICAgICAnY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0aW9ucy5oJywKKyAgICAgICAgJ2NvbXBp
bGVyL1ZhcmlhYmxlSW5mby5jcHAnLAorICAgICAgICAnY29tcGlsZXIvVmFyaWFibGVJbmZvLmgn
LAorICAgICAgICAnY29tcGlsZXIvVmFyaWFibGVQYWNrZXIuY3BwJywKKyAgICAgICAgJ2NvbXBp
bGVyL1ZhcmlhYmxlUGFja2VyLmgnLAorICAgICAgICAjIERlcGVuZGVuY3kgZ3JhcGgKKyAgICAg
ICAgJ2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5jcHAnLAorICAgICAgICAnY29t
cGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmgnLAorICAgICAgICAnY29tcGlsZXIvZGVw
Z3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAnLAorICAgICAgICAnY29tcGlsZXIvZGVw
Z3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oJywKKyAgICAgICAgJ2NvbXBpbGVyL2RlcGdy
YXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvZGVwZ3Jh
cGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmgnLAorICAgICAgICAnY29tcGlsZXIvZGVwZ3JhcGgv
RGVwZW5kZW5jeUdyYXBoVHJhdmVyc2UuY3BwJywKKyAgICAgICAgIyBUaW1pbmcgcmVzdHJpY3Rp
b25zCisgICAgICAgICdjb21waWxlci90aW1pbmcvUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWlu
Zy5jcHAnLAorICAgICAgICAnY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJU
aW1pbmcuaCcsCisgICAgICAgICdjb21waWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJU
aW1pbmcuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3RpbWluZy9SZXN0cmljdFZlcnRleFNoYWRl
clRpbWluZy5oJywKKyAgICAgICAgJ3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xh
bXBlci5jcHAnLAorICAgICAgICAndGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFt
cGVyLmgnLAorICAgICAgXSwKKyAgICAgICdjb25kaXRpb25zJzogWworICAgICAgICBbJ09TPT0i
d2luIicsIHsKKyAgICAgICAgICAjIFRPRE8oanNjaHVoKTogaHR0cDovL2NyYnVnLmNvbS8xNjcx
ODcgc2l6ZV90IC0+IGludAorICAgICAgICAgICdtc3ZzX2Rpc2FibGVkX3dhcm5pbmdzJzogWyA0
MjY3IF0sCisgICAgICAgICAgJ3NvdXJjZXMnOiBbJ2NvbXBpbGVyL29zc291cmNlX3dpbi5jcHAn
XSwKKyAgICAgICAgfSwgeyAjIGVsc2U6IHBvc2l4CisgICAgICAgICAgJ3NvdXJjZXMnOiBbJ2Nv
bXBpbGVyL29zc291cmNlX3Bvc2l4LmNwcCddLAorICAgICAgICB9XSwKKyAgICAgIF0sCisgICAg
fSwKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAndHJhbnNsYXRvcl9nbHNsJywKKyAgICAg
ICd0eXBlJzogJzwoY29tcG9uZW50KScsCisgICAgICAnZGVwZW5kZW5jaWVzJzogWyd0cmFuc2xh
dG9yX2NvbW1vbiddLAorICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKKyAgICAgICAgJy4nLAorICAg
ICAgICAnLi4vaW5jbHVkZScsCisgICAgICBdLAorICAgICAgJ2RlZmluZXMnOiBbCisgICAgICAg
ICdDT01QSUxFUl9JTVBMRU1FTlRBVElPTicsCisgICAgICBdLAorICAgICAgJ3NvdXJjZXMnOiBb
CisgICAgICAgICdjb21waWxlci9Db2RlR2VuR0xTTC5jcHAnLAorICAgICAgICAnY29tcGlsZXIv
T3V0cHV0RVNTTC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvT3V0cHV0RVNTTC5oJywgICAgICAg
IAorICAgICAgICAnY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwJywKKyAgICAgICAgJ2NvbXBp
bGVyL091dHB1dEdMU0xCYXNlLmgnLAorICAgICAgICAnY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAn
LAorICAgICAgICAnY29tcGlsZXIvT3V0cHV0R0xTTC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL1No
YWRlckxhbmcuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1RyYW5zbGF0b3JFU1NMLmNwcCcsCisg
ICAgICAgICdjb21waWxlci9UcmFuc2xhdG9yRVNTTC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL1Ry
YW5zbGF0b3JHTFNMLmNwcCcsCisgICAgICAgICdjb21waWxlci9UcmFuc2xhdG9yR0xTTC5oJywK
KyAgICAgICAgJ2NvbXBpbGVyL1ZlcnNpb25HTFNMLmNwcCcsCisgICAgICAgICdjb21waWxlci9W
ZXJzaW9uR0xTTC5oJywKKyAgICAgIF0sCisgICAgICAjIFRPRE8oanNjaHVoKTogaHR0cDovL2Ny
YnVnLmNvbS8xNjcxODcgc2l6ZV90IC0+IGludAorICAgICAgJ21zdnNfZGlzYWJsZWRfd2Fybmlu
Z3MnOiBbIDQyNjcgXSwKKyAgICB9LAorICBdLAorICAnY29uZGl0aW9ucyc6IFsKKyAgICBbJ09T
PT0id2luIicsIHsKKyAgICAgICd0YXJnZXRzJzogWworICAgICAgICB7CisgICAgICAgICAgJ3Rh
cmdldF9uYW1lJzogJ3RyYW5zbGF0b3JfaGxzbCcsCisgICAgICAgICAgJ3R5cGUnOiAnPChjb21w
b25lbnQpJywKKyAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWyd0cmFuc2xhdG9yX2NvbW1vbidd
LAorICAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCisgICAgICAgICAgICAnLicsCisgICAgICAg
ICAgICAnLi4vaW5jbHVkZScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnZGVmaW5lcyc6IFsK
KyAgICAgICAgICAgICdDT01QSUxFUl9JTVBMRU1FTlRBVElPTicsCisgICAgICAgICAgXSwKKyAg
ICAgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgICAgICdjb21waWxlci9TaGFkZXJMYW5nLmNw
cCcsCisgICAgICAgICAgICAnY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5jcHAnLAorICAg
ICAgICAgICAgJ2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuaCcsCisgICAgICAgICAgICAn
Y29tcGlsZXIvQ29kZUdlbkhMU0wuY3BwJywKKyAgICAgICAgICAgICdjb21waWxlci9PdXRwdXRI
TFNMLmNwcCcsCisgICAgICAgICAgICAnY29tcGlsZXIvT3V0cHV0SExTTC5oJywKKyAgICAgICAg
ICAgICdjb21waWxlci9UcmFuc2xhdG9ySExTTC5jcHAnLAorICAgICAgICAgICAgJ2NvbXBpbGVy
L1RyYW5zbGF0b3JITFNMLmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL1VuZm9sZFNob3J0Q2ly
Y3VpdC5jcHAnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL1VuZm9sZFNob3J0Q2lyY3VpdC5oJywK
KyAgICAgICAgICAgICdjb21waWxlci9TZWFyY2hTeW1ib2wuY3BwJywKKyAgICAgICAgICAgICdj
b21waWxlci9TZWFyY2hTeW1ib2wuaCcsCisgICAgICAgICAgXSwKKyAgICAgICAgICAjIFRPRE8o
anNjaHVoKTogaHR0cDovL2NyYnVnLmNvbS8xNjcxODcgc2l6ZV90IC0+IGludAorICAgICAgICAg
ICdtc3ZzX2Rpc2FibGVkX3dhcm5pbmdzJzogWyA0MjY3IF0sCisgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnbGliR0xFU3YyJywKKyAgICAgICAgICAndHlw
ZSc6ICdzaGFyZWRfbGlicmFyeScsCisgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsndHJhbnNs
YXRvcl9obHNsJ10sCisgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKKyAgICAgICAgICAgICcu
JywKKyAgICAgICAgICAgICcuLi9pbmNsdWRlJywKKyAgICAgICAgICAgICdsaWJHTEVTdjInLAor
ICAgICAgICAgIF0sCisgICAgICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICAgICAndGhpcmRf
cGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5oJywKKyAgICAgICAgICAgICd0aGlyZF9wYXJ0
eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmNwcCcsCisgICAgICAgICAgICAnY29tbW9uL2FuZ2xl
dXRpbHMuaCcsCisgICAgICAgICAgICAnY29tbW9uL2RlYnVnLmNwcCcsCisgICAgICAgICAgICAn
Y29tbW9uL2RlYnVnLmgnLAorICAgICAgICAgICAgJ2NvbW1vbi9SZWZDb3VudE9iamVjdC5jcHAn
LAorICAgICAgICAgICAgJ2NvbW1vbi9SZWZDb3VudE9iamVjdC5oJywKKyAgICAgICAgICAgICdj
b21tb24vdmVyc2lvbi5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcHJlY29tcGlsZWQuaCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL3ByZWNvbXBpbGVkLmNwcCcsCisgICAgICAgICAgICAn
bGliR0xFU3YyL0JpbmFyeVN0cmVhbS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvQnVmZmVy
LmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL0J1ZmZlci5oJywKKyAgICAgICAgICAgICds
aWJHTEVTdjIvY29uc3RhbnRzLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9Db250ZXh0LmNw
cCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL0NvbnRleHQuaCcsCisgICAgICAgICAgICAnbGli
R0xFU3YyL2FuZ2xldHlwZXMuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL0ZlbmNlLmNwcCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL0ZlbmNlLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2
Mi9GbG9hdDE2VG9GbG9hdDMyLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL0ZyYW1lYnVm
ZmVyLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL0ZyYW1lYnVmZmVyLmgnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuY3BwJywKKyAgICAgICAgICAgICdsaWJH
TEVTdjIvSGFuZGxlQWxsb2NhdG9yLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9saWJHTEVT
djIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvbGliR0xFU3YyLmRlZicsCisgICAgICAg
ICAgICAnbGliR0xFU3YyL2xpYkdMRVN2Mi5yYycsCisgICAgICAgICAgICAnbGliR0xFU3YyL21h
aW4uY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvbWFpbi5oJywKKyAgICAgICAgICAgICds
aWJHTEVTdjIvbWF0aHV0aWwuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1Byb2dyYW0uY3Bw
JywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvUHJvZ3JhbS5oJywKKyAgICAgICAgICAgICdsaWJH
TEVTdjIvUHJvZ3JhbUJpbmFyeS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9Qcm9ncmFt
QmluYXJ5LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9RdWVyeS5oJywKKyAgICAgICAgICAg
ICdsaWJHTEVTdjIvUXVlcnkuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvUmVuZGVyYnVm
ZmVyLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oJywKKyAgICAg
ICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvQmxpdC5jcHAnLAorICAgICAgICAgICAgJ2xpYkdM
RVN2Mi9yZW5kZXJlci9CbGl0LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9C
dWZmZXJTdG9yYWdlLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJT
dG9yYWdlLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3Jh
Z2U5LmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2U5
LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEuY3Bw
JywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmgnLAor
ICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZUltcGwuaCcsCisgICAgICAgICAg
ICAnbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlOS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2
Mi9yZW5kZXJlci9GZW5jZTkuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0Zl
bmNlMTEuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvRmVuY2UxMS5oJywK
KyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvZ2VuZXJhdGVtaXAuaCcsCisgICAgICAg
ICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlLmNwcCcsCisgICAgICAgICAgICAnbGliR0xF
U3YyL3JlbmRlcmVyL0ltYWdlLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9J
bWFnZTExLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuaCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlOS5jcHAnLAorICAgICAgICAg
ICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTkuaCcsCisgICAgICAgICAgICAnbGliR0xFU3Yy
L3JlbmRlcmVyL0ltYWdlU1NFMi5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJl
ci9JbmRleEJ1ZmZlci5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRl
eEJ1ZmZlci5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXI5
LmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyOS5oJywK
KyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXIxMS5jcHAnLAorICAg
ICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjExLmgnLAorICAgICAgICAg
ICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmNwcCcsCisgICAgICAgICAg
ICAnbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuaCcsCisgICAgICAgICAgICAn
bGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuY3BwJywKKyAgICAgICAgICAgICds
aWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5oJywKKyAgICAgICAgICAgICdsaWJH
TEVTdjIvcmVuZGVyZXIvUXVlcnlJbXBsLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5k
ZXJlci9RdWVyeTkuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvUXVlcnk5
LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmNwcCcsCisgICAg
ICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5MTEuaCcsCisgICAgICAgICAgICAnbGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3Jl
bmRlcmVyL1JlbmRlcmVyLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5k
ZXJlcjExLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEu
aCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuY3Bw
JywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXIxMV91dGlscy5oJywK
KyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmNwcCcsCisgICAgICAg
ICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oJywKKyAgICAgICAgICAgICdsaWJH
TEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmNwcCcsCisgICAgICAgICAgICAnbGliR0xF
U3YyL3JlbmRlcmVyL3JlbmRlcmVyOV91dGlscy5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIv
cmVuZGVyZXIvUmVuZGVyU3RhdGVDYWNoZS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9y
ZW5kZXJlci9SZW5kZXJTdGF0ZUNhY2hlLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJUYXJnZXQuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlclRhcmdldDExLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJU
YXJnZXQxMS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJn
ZXQ5LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQ5LmNw
cCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckNhY2hlLmgnLAorICAg
ICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlLmgnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlOS5jcHAnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlOS5oJywKKyAgICAgICAg
ICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTExLmNwcCcsCisgICAgICAg
ICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUxMS5oJywKKyAgICAgICAg
ICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluLmgnLAorICAgICAgICAgICAgJ2xpYkdM
RVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW45LmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3Jl
bmRlcmVyL1N3YXBDaGFpbjkuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1N3
YXBDaGFpbjExLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFp
bjExLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5j
cHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5oJywK
KyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UxMS5jcHAnLAor
ICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmgnLAorICAg
ICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTkuY3BwJywKKyAgICAg
ICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmgnLAorICAgICAgICAg
ICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIuY3BwJywKKyAgICAgICAgICAgICds
aWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2
Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3Jl
bmRlcmVyL1ZlcnRleEJ1ZmZlcjkuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVy
L1ZlcnRleEJ1ZmZlcjExLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1Zl
cnRleEJ1ZmZlcjExLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci92ZXJ0ZXhj
b252ZXJzaW9uLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRh
TWFuYWdlci5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRh
TWFuYWdlci5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGVjbGFy
YXRpb25DYWNoZS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhE
ZWNsYXJhdGlvbkNhY2hlLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFn
ZXIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvUmVzb3VyY2VNYW5hZ2VyLmgnLAorICAg
ICAgICAgICAgJ2xpYkdMRVN2Mi9TaGFkZXIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIv
U2hhZGVyLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9UZXh0dXJlLmNwcCcsCisgICAgICAg
ICAgICAnbGliR0xFU3YyL1RleHR1cmUuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1VuaWZv
cm0uY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvVW5pZm9ybS5oJywKKyAgICAgICAgICAg
ICdsaWJHTEVTdjIvdXRpbGl0aWVzLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3V0aWxp
dGllcy5oJywKKyAgICAgICAgICBdLAorICAgICAgICAgICMgVE9ETyhqc2NodWgpOiBodHRwOi8v
Y3JidWcuY29tLzE2NzE4NyBzaXplX3QgLT4gaW50CisgICAgICAgICAgJ21zdnNfZGlzYWJsZWRf
d2FybmluZ3MnOiBbIDQyNjcgXSwKKyAgICAgICAgICAnbXN2c19zZXR0aW5ncyc6IHsKKyAgICAg
ICAgICAgICdWQ0xpbmtlclRvb2wnOiB7CisgICAgICAgICAgICAgICdBZGRpdGlvbmFsRGVwZW5k
ZW5jaWVzJzogWworICAgICAgICAgICAgICAgICdkM2Q5LmxpYicsCisgICAgICAgICAgICAgICAg
J2R4Z3VpZC5saWInLAorICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgfQorICAgICAgICAg
IH0sCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnbGli
RUdMJywKKyAgICAgICAgICAndHlwZSc6ICdzaGFyZWRfbGlicmFyeScsCisgICAgICAgICAgJ2Rl
cGVuZGVuY2llcyc6IFsnbGliR0xFU3YyJ10sCisgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsK
KyAgICAgICAgICAgICcuJywKKyAgICAgICAgICAgICcuLi9pbmNsdWRlJywKKyAgICAgICAgICAg
ICdsaWJHTEVTdjInLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ3NvdXJjZXMnOiBbCisgICAg
ICAgICAgICAnY29tbW9uL2FuZ2xldXRpbHMuaCcsCisgICAgICAgICAgICAnY29tbW9uL2RlYnVn
LmNwcCcsCisgICAgICAgICAgICAnY29tbW9uL2RlYnVnLmgnLAorICAgICAgICAgICAgJ2NvbW1v
bi9SZWZDb3VudE9iamVjdC5jcHAnLAorICAgICAgICAgICAgJ2NvbW1vbi9SZWZDb3VudE9iamVj
dC5oJywKKyAgICAgICAgICAgICdjb21tb24vdmVyc2lvbi5oJywKKyAgICAgICAgICAgICdsaWJF
R0wvQ29uZmlnLmNwcCcsCisgICAgICAgICAgICAnbGliRUdML0NvbmZpZy5oJywKKyAgICAgICAg
ICAgICdsaWJFR0wvRGlzcGxheS5jcHAnLAorICAgICAgICAgICAgJ2xpYkVHTC9EaXNwbGF5Lmgn
LAorICAgICAgICAgICAgJ2xpYkVHTC9saWJFR0wuY3BwJywKKyAgICAgICAgICAgICdsaWJFR0wv
bGliRUdMLmRlZicsCisgICAgICAgICAgICAnbGliRUdML2xpYkVHTC5yYycsCisgICAgICAgICAg
ICAnbGliRUdML21haW4uY3BwJywKKyAgICAgICAgICAgICdsaWJFR0wvbWFpbi5oJywKKyAgICAg
ICAgICAgICdsaWJFR0wvU3VyZmFjZS5jcHAnLAorICAgICAgICAgICAgJ2xpYkVHTC9TdXJmYWNl
LmgnLAorICAgICAgICAgIF0sCisgICAgICAgICAgIyBUT0RPKGpzY2h1aCk6IGh0dHA6Ly9jcmJ1
Zy5jb20vMTY3MTg3IHNpemVfdCAtPiBpbnQKKyAgICAgICAgICAnbXN2c19kaXNhYmxlZF93YXJu
aW5ncyc6IFsgNDI2NyBdLAorICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzogeworICAgICAgICAg
ICAgJ1ZDTGlua2VyVG9vbCc6IHsKKyAgICAgICAgICAgICAgJ0FkZGl0aW9uYWxEZXBlbmRlbmNp
ZXMnOiBbCisgICAgICAgICAgICAgICAgJ2QzZDkubGliJywKKyAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICB9LAorICAgICAgICB9LAorICAgICAgXSwKKyAgICB9XSwK
KyAgXSwKK30KKworIyBMb2NhbCBWYXJpYWJsZXM6CisjIHRhYi13aWR0aDoyCisjIGluZGVudC10
YWJzLW1vZGU6bmlsCisjIEVuZDoKKyMgdmltOiBzZXQgZXhwYW5kdGFiIHRhYnN0b3A9MiBzaGlm
dHdpZHRoPTI6CisjIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL1Jl
ZkNvdW50T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tbW9uL1JlZkNvdW50T2JqZWN0LmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9SZWZDb3VudE9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKIC8vCiAvLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5nbGV1dGlscy5oCSh3b3JraW5n
IGNvcHkpCkBAIC05LDEyICs5LDM5IEBACiAjaWZuZGVmIENPTU1PTl9BTkdMRVVUSUxTX0hfCiAj
ZGVmaW5lIENPTU1PTl9BTkdMRVVUSUxTX0hfCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogLy8g
QSBtYWNybyB0byBkaXNhbGxvdyB0aGUgY29weSBjb25zdHJ1Y3RvciBhbmQgb3BlcmF0b3I9IGZ1
bmN0aW9ucwogLy8gVGhpcyBtdXN0IGJlIHVzZWQgaW4gdGhlIHByaXZhdGU6IGRlY2xhcmF0aW9u
cyBmb3IgYSBjbGFzcwogI2RlZmluZSBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVHlwZU5hbWUp
IFwKICAgVHlwZU5hbWUoY29uc3QgVHlwZU5hbWUmKTsgICAgICAgICAgICAgICBcCiAgIHZvaWQg
b3BlcmF0b3I9KGNvbnN0IFR5cGVOYW1lJikKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHVuc2ln
bmVkIGludCBOPgoraW5saW5lIHVuc2lnbmVkIGludCBBcnJheVNpemUoVCgmKVtOXSkKK3sKKyAg
ICByZXR1cm4gTjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHVuc2lnbmVkIGludCBOPgor
dm9pZCBTYWZlUmVsZWFzZShUICgmcmVzb3VyY2VCbG9jaylbTl0pCit7CisgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBOOyBpKyspCisgICAgeworICAgICAgICBTYWZlUmVsZWFzZShy
ZXNvdXJjZUJsb2NrW2ldKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9p
ZCBTYWZlUmVsZWFzZShUJiByZXNvdXJjZSkKK3sKKyAgICBpZiAocmVzb3VyY2UpCisgICAgewor
ICAgICAgICByZXNvdXJjZS0+UmVsZWFzZSgpOworICAgICAgICByZXNvdXJjZSA9IE5VTEw7Cisg
ICAgfQorfQorCiAjaWYgZGVmaW5lZChfTVNDX1ZFUikKICNkZWZpbmUgc25wcmludGYgX3NucHJp
bnRmCiAjZW5kaWYKQEAgLTIzLDQgKzUwLDcgQEAKICNkZWZpbmUgVkVORE9SX0lEX0lOVEVMIDB4
ODA4NgogI2RlZmluZSBWRU5ET1JfSURfTlZJRElBIDB4MTBERQogCisjZGVmaW5lIEdMX0JHUkE0
X0FOR0xFWCAweDZBQkMKKyNkZWZpbmUgR0xfQkdSNV9BMV9BTkdMRVggMHg2QUJECisKICNlbmRp
ZiAvLyBDT01NT05fQU5HTEVVVElMU19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbW1vbi9kZWJ1Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03LDEw
ICs3LDYgQEAKIC8vIGRlYnVnLmNwcDogRGVidWdnaW5nIHV0aWxpdGllcy4KIAogI2luY2x1ZGUg
ImNvbW1vbi9kZWJ1Zy5oIgotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRhcmcu
aD4KLQogI2luY2x1ZGUgImNvbW1vbi9zeXN0ZW0uaCIKICNpbmNsdWRlIDxkM2Q5Lmg+CiAKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmgJKHJldmlzaW9u
IDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuaAko
d29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksMTMgQEAgbmFtZXNwYWNlIGdsCiAgICAgI2RlZmlu
ZSBVTlJFQUNIQUJMRSgpIEVSUigiXHQhIFVucmVhY2hhYmxlIHJlYWNoZWQ6ICVzKCVkKVxuIiwg
X19GVU5DVElPTl9fLCBfX0xJTkVfXykKICNlbmRpZgogCisvLyBBIG1hY3JvIHRoYXQgZGV0ZXJt
aW5lcyB3aGV0aGVyIGFuIG9iamVjdCBoYXMgYSBnaXZlbiBydW50aW1lIHR5cGUuCisjaWYgIWRl
ZmluZWQoTkRFQlVHKSAmJiAoIWRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX0NQUFJUVEkp
KQorI2RlZmluZSBIQVNfRFlOQU1JQ19UWVBFKHR5cGUsIG9iaikgKGR5bmFtaWNfY2FzdDx0eXBl
ID4ob2JqKSAhPSBOVUxMKQorI2Vsc2UKKyNkZWZpbmUgSEFTX0RZTkFNSUNfVFlQRSh0eXBlLCBv
YmopIHRydWUKKyNlbmRpZgorCiAvLyBBIG1hY3JvIGZ1bmN0aW9uaW5nIGFzIGEgY29tcGlsZS10
aW1lIGFzc2VydCB0byB2YWxpZGF0ZSBjb25zdGFudCBjb25kaXRpb25zCiAjZGVmaW5lIE1FVEFf
QVNTRVJUKGNvbmRpdGlvbikgdHlwZWRlZiBpbnQgQ09NUElMRV9USU1FX0FTU0VSVF8jI19fTElO
RV9fW3N0YXRpY19jYXN0PGJvb2w+KGNvbmRpdGlvbik/MTotMV0KIApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbS5oCShyZXZpc2lvbiAxNTI5NzkpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNCwxMCArMTQsNiBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0j
aW5jbHVkZSA8ZDNkOS5oPgotI2luY2x1ZGUgPEQzRGNvbXBpbGVyLmg+Ci0jaW5jbHVkZSA8ZDNk
OXR5cGVzLmg+Ci0jaW5jbHVkZSA8bW1zeXN0ZW0uaD4KIAogI2lmIGRlZmluZWQobWluKQogI3Vu
ZGVmIG1pbgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJz
aW9uLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21tb24vdmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogI2RlZmluZSBN
QUpPUl9WRVJTSU9OIDEKLSNkZWZpbmUgTUlOT1JfVkVSU0lPTiAwCisjZGVmaW5lIE1JTk9SX1ZF
UlNJT04gMgogI2RlZmluZSBCVUlMRF9WRVJTSU9OIDAKLSNkZWZpbmUgQlVJTERfUkVWSVNJT04g
MTk4NworI2RlZmluZSBCVUlMRF9SRVZJU0lPTiAyNDI2CiAKICNkZWZpbmUgU1RSSU5HSUZZKHgp
ICN4CiAjZGVmaW5lIE1BQ1JPX1NUUklOR0lGWSh4KSBTVFJJTkdJRlkoeCkKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci82NGJpdC1sZXhlci1zYWZldHkucGF0Y2gK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyLzY0Yml0
LWxleGVyLXNhZmV0eS5wYXRjaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci82NGJpdC1sZXhlci1zYWZldHkucGF0Y2gJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTc3IEBACistLS0gYS9zcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwCisrKysg
Yi9zcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwCitAQCAtNjgsNiArNjgsNyBAQCB0eXBlZGVm
IGludDE2X3QgZmxleF9pbnQxNl90OworIHR5cGVkZWYgdWludDE2X3QgZmxleF91aW50MTZfdDsK
KyB0eXBlZGVmIGludDMyX3QgZmxleF9pbnQzMl90OworIHR5cGVkZWYgdWludDMyX3QgZmxleF91
aW50MzJfdDsKKyt0eXBlZGVmIHVpbnQ2NF90IGZsZXhfdWludDY0X3Q7CisgI2Vsc2UKKyB0eXBl
ZGVmIHNpZ25lZCBjaGFyIGZsZXhfaW50OF90OworIHR5cGVkZWYgc2hvcnQgaW50IGZsZXhfaW50
MTZfdDsKK0BAIC0xOTEsNiArMTkyLDExIEBAIHR5cGVkZWYgdm9pZCogeXlzY2FuX3Q7CisgdHlw
ZWRlZiBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlICpZWV9CVUZGRVJfU1RBVEU7CisgI2VuZGlmCisg
CisrI2lmbmRlZiBZWV9UWVBFREVGX1lZX1NJWkVfVAorKyNkZWZpbmUgWVlfVFlQRURFRl9ZWV9T
SVpFX1QKKyt0eXBlZGVmIHNpemVfdCB5eV9zaXplX3Q7CisrI2VuZGlmCisrCisgI2RlZmluZSBF
T0JfQUNUX0NPTlRJTlVFX1NDQU4gMAorICNkZWZpbmUgRU9CX0FDVF9FTkRfT0ZfRklMRSAxCisg
I2RlZmluZSBFT0JfQUNUX0xBU1RfTUFUQ0ggMgorQEAgLTIwNCw3ICsyMTAsNyBAQCB0eXBlZGVm
IHN0cnVjdCB5eV9idWZmZXJfc3RhdGUgKllZX0JVRkZFUl9TVEFURTsKKyAgICAgICovCisgICAg
ICNkZWZpbmUgIFlZX0xFU1NfTElORU5PKG4pIFwKKyAgICAgICAgICAgICBkbyB7IFwKKy0gICAg
ICAgICAgICAgICAgaW50IHl5bDtcCisrICAgICAgICAgICAgICAgIHl5X3NpemVfdCB5eWw7XAor
ICAgICAgICAgICAgICAgICBmb3IgKCB5eWwgPSBuOyB5eWwgPCB5eWxlbmc7ICsreXlsIClcCisg
ICAgICAgICAgICAgICAgICAgICBpZiAoIHl5dGV4dFt5eWxdID09ICdcbicgKVwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAtLXl5bGluZW5vO1wKK0BAIC0yMjYsMTEgKzIzMiw2IEBAIHR5cGVk
ZWYgc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSAqWVlfQlVGRkVSX1NUQVRFOworIAorICNkZWZpbmUg
dW5wdXQoYykgeXl1bnB1dCggYywgeXlnLT55eXRleHRfcHRyICwgeXlzY2FubmVyICkKKyAKKy0j
aWZuZGVmIFlZX1RZUEVERUZfWVlfU0laRV9UCistI2RlZmluZSBZWV9UWVBFREVGX1lZX1NJWkVf
VAorLXR5cGVkZWYgc2l6ZV90IHl5X3NpemVfdDsKKy0jZW5kaWYKKy0KKyAjaWZuZGVmIFlZX1NU
UlVDVF9ZWV9CVUZGRVJfU1RBVEUKKyAjZGVmaW5lIFlZX1NUUlVDVF9ZWV9CVUZGRVJfU1RBVEUK
KyBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlCitAQCAtMjQ4LDcgKzI0OSw3IEBAIHN0cnVjdCB5eV9i
dWZmZXJfc3RhdGUKKyAJLyogTnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZCBpbnRvIHl5X2NoX2J1
Ziwgbm90IGluY2x1ZGluZyBFT0IKKyAJICogY2hhcmFjdGVycy4KKyAJICovCistCWludCB5eV9u
X2NoYXJzOworKwl5eV9zaXplX3QgeXlfbl9jaGFyczsKKyAKKyAJLyogV2hldGhlciB3ZSAib3du
IiB0aGUgYnVmZmVyIC0gaS5lLiwgd2Uga25vdyB3ZSBjcmVhdGVkIGl0LAorIAkgKiBhbmQgY2Fu
IHJlYWxsb2MoKSBpdCB0byBncm93IGl0LCBhbmQgc2hvdWxkIGZyZWUoKSBpdCB0bworQEAgLTMy
Nyw3ICszMjgsNyBAQCBzdGF0aWMgdm9pZCB5eV9pbml0X2J1ZmZlciAoWVlfQlVGRkVSX1NUQVRF
IGIsRklMRSAqZmlsZSAseXlzY2FuX3QgeXlzY2FubmVyICk7CisgCisgWVlfQlVGRkVSX1NUQVRF
IHl5X3NjYW5fYnVmZmVyIChjaGFyICpiYXNlLHl5X3NpemVfdCBzaXplICx5eXNjYW5fdCB5eXNj
YW5uZXIgKTsKKyBZWV9CVUZGRVJfU1RBVEUgeXlfc2Nhbl9zdHJpbmcgKHl5Y29uc3QgY2hhciAq
eXlfc3RyICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKy1ZWV9CVUZGRVJfU1RBVEUgeXlfc2Nhbl9i
eXRlcyAoeXljb25zdCBjaGFyICpieXRlcyxpbnQgbGVuICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsK
KytZWV9CVUZGRVJfU1RBVEUgeXlfc2Nhbl9ieXRlcyAoeXljb25zdCBjaGFyICpieXRlcyx5eV9z
aXplX3QgbGVuICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAKKyB2b2lkICp5eWFsbG9jICh5eV9z
aXplX3QgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworIHZvaWQgKnl5cmVhbGxvYyAodm9pZCAqLHl5
X3NpemVfdCAseXlzY2FuX3QgeXlzY2FubmVyICk7CitAQCAtMzc4LDcgKzM3OSw3IEBAIHN0YXRp
YyB2b2lkIHl5X2ZhdGFsX2Vycm9yICh5eWNvbnN0IGNoYXIgbXNnW10gLHl5c2Nhbl90IHl5c2Nh
bm5lciApOworICAqLworICNkZWZpbmUgWVlfRE9fQkVGT1JFX0FDVElPTiBcCisgCXl5Zy0+eXl0
ZXh0X3B0ciA9IHl5X2JwOyBcCistCXl5bGVuZyA9IChzaXplX3QpICh5eV9jcCAtIHl5X2JwKTsg
XAorKwl5eWxlbmcgPSAoeXlfc2l6ZV90KSAoeXlfY3AgLSB5eV9icCk7IFwKKyAJeXlnLT55eV9o
b2xkX2NoYXIgPSAqeXlfY3A7IFwKKyAJKnl5X2NwID0gJ1wwJzsgXAorIAl5eWctPnl5X2NfYnVm
X3AgPSB5eV9jcDsKK0BAIC0xMDM1LDggKzEwMzYsOCBAQCBzdHJ1Y3QgeXlndXRzX3QKKyAgICAg
c2l6ZV90IHl5X2J1ZmZlcl9zdGFja19tYXg7IC8qKjwgY2FwYWNpdHkgb2Ygc3RhY2suICovCisg
ICAgIFlZX0JVRkZFUl9TVEFURSAqIHl5X2J1ZmZlcl9zdGFjazsgLyoqPCBTdGFjayBhcyBhbiBh
cnJheS4gKi8KKyAgICAgY2hhciB5eV9ob2xkX2NoYXI7CistICAgIGludCB5eV9uX2NoYXJzOwor
LSAgICBpbnQgeXlsZW5nX3I7CisrICAgIHl5X3NpemVfdCB5eV9uX2NoYXJzOworKyAgICB5eV9z
aXplX3QgeXlsZW5nX3I7CisgICAgIGNoYXIgKnl5X2NfYnVmX3A7CisgICAgIGludCB5eV9pbml0
OworICAgICBpbnQgeXlfc3RhcnQ7CitAQCAtMTA4OSw3ICsxMDkwLDcgQEAgRklMRSAqeXlnZXRf
b3V0ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAKKyB2b2lkIHl5c2V0X291dCAgKEZJTEUgKiBv
dXRfc3RyICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAKKy1pbnQgeXlnZXRfbGVuZyAoeXlzY2Fu
X3QgeXlzY2FubmVyICk7CisreXlfc2l6ZV90IHl5Z2V0X2xlbmcgKHl5c2Nhbl90IHl5c2Nhbm5l
ciApOworIAorIGNoYXIgKnl5Z2V0X3RleHQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorQEAg
LTExNTgsNyArMTE1OSw3IEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciAp
OworIAlpZiAoIFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfaXNfaW50ZXJhY3RpdmUgKSBc
CisgCQl7IFwKKyAJCWludCBjID0gJyonOyBcCistCQlpbnQgbjsgXAorKwkJeXlfc2l6ZV90IG47
IFwKKyAJCWZvciAoIG4gPSAwOyBuIDwgbWF4X3NpemUgJiYgXAorIAkJCSAgICAgKGMgPSBnZXRj
KCB5eWluICkpICE9IEVPRiAmJiBjICE9ICdcbic7ICsrbiApIFwKKyAJCQlidWZbbl0gPSAoY2hh
cikgYzsgXAorQEAgLTEzMTcsNyArMTMxOCw3IEBAIHl5X2ZpbmRfYWN0aW9uOgorIAorIAkJaWYg
KCB5eV9hY3QgIT0gWVlfRU5EX09GX0JVRkZFUiAmJiB5eV9ydWxlX2Nhbl9tYXRjaF9lb2xbeXlf
YWN0XSApCisgCQkJeworLQkJCWludCB5eWw7CisrCQkJeXlfc2l6ZV90IHl5bDsKKyAJCQlmb3Ig
KCB5eWwgPSAwOyB5eWwgPCB5eWxlbmc7ICsreXlsICkKKyAJCQkJaWYgKCB5eXRleHRbeXlsXSA9
PSAnXG4nICkKKyAJCQkJCSAgIAorQEAgLTIyMDMsNyArMjIwNCw3IEBAIHN0YXRpYyBpbnQgeXlf
Z2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgCisgCWVsc2UKKyAJCXsKKy0J
CQlpbnQgbnVtX3RvX3JlYWQgPQorKwkJCXl5X3NpemVfdCBudW1fdG9fcmVhZCA9CisgCQkJWVlf
Q1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJlcl90b19tb3ZlIC0gMTsK
KyAKKyAJCXdoaWxlICggbnVtX3RvX3JlYWQgPD0gMCApCitAQCAtMjIxNyw3ICsyMjE4LDcgQEAg
c3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAKKyAJ
CQlpZiAoIGItPnl5X2lzX291cl9idWZmZXIgKQorIAkJCQl7CistCQkJCWludCBuZXdfc2l6ZSA9
IGItPnl5X2J1Zl9zaXplICogMjsKKysJCQkJeXlfc2l6ZV90IG5ld19zaXplID0gYi0+eXlfYnVm
X3NpemUgKiAyOworIAorIAkJCQlpZiAoIG5ld19zaXplIDw9IDAgKQorIAkJCQkJYi0+eXlfYnVm
X3NpemUgKz0gYi0+eXlfYnVmX3NpemUgLyA4OworQEAgLTIyNDgsNyArMjI0OSw3IEBAIHN0YXRp
YyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgCisgCQkvKiBS
ZWFkIGluIG1vcmUgZGF0YS4gKi8KKyAJCVlZX0lOUFVUKCAoJllZX0NVUlJFTlRfQlVGRkVSX0xW
QUxVRS0+eXlfY2hfYnVmW251bWJlcl90b19tb3ZlXSksCistCQkJeXlnLT55eV9uX2NoYXJzLCAo
c2l6ZV90KSBudW1fdG9fcmVhZCApOworKwkJCXl5Zy0+eXlfbl9jaGFycywgbnVtX3RvX3JlYWQg
KTsKKyAKKyAJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfbl9jaGFycyA9IHl5Zy0+eXlf
bl9jaGFyczsKKyAJCX0KK0BAIC0yMzczLDcgKzIzNzQsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9u
ZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQorIAorIAkJZWxzZQorIAkJCXsgLyogbmVl
ZCBtb3JlIGlucHV0ICovCistCQkJaW50IG9mZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+
eXl0ZXh0X3B0cjsKKysJCQl5eV9zaXplX3Qgb2Zmc2V0ID0geXlnLT55eV9jX2J1Zl9wIC0geXln
LT55eXRleHRfcHRyOworIAkJCSsreXlnLT55eV9jX2J1Zl9wOworIAorIAkJCXN3aXRjaCAoIHl5
X2dldF9uZXh0X2J1ZmZlciggeXlzY2FubmVyICkgKQorQEAgLTI2NjAsNyArMjY2MSw3IEBAIHZv
aWQgeXlwb3BfYnVmZmVyX3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgICovCisgc3RhdGlj
IHZvaWQgeXllbnN1cmVfYnVmZmVyX3N0YWNrICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgeworLQlp
bnQgbnVtX3RvX2FsbG9jOworKwl5eV9zaXplX3QgbnVtX3RvX2FsbG9jOworICAgICBzdHJ1Y3Qg
eXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisgCisgCWlmICgh
eXlnLT55eV9idWZmZXJfc3RhY2spIHsKK0BAIC0yNzU4LDEyICsyNzU5LDExIEBAIFlZX0JVRkZF
Ul9TVEFURSB5eV9zY2FuX3N0cmluZyAoeXljb25zdCBjaGFyICogeXlzdHIgLCB5eXNjYW5fdCB5
eXNjYW5uZXIpCisgICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCisgICog
QHJldHVybiB0aGUgbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlciBzdGF0ZSBvYmplY3QuCisgICovCist
WVlfQlVGRkVSX1NUQVRFIHl5X3NjYW5fYnl0ZXMgICh5eWNvbnN0IGNoYXIgKiB5eWJ5dGVzLCBp
bnQgIF95eWJ5dGVzX2xlbiAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKKytZWV9CVUZGRVJfU1RBVEUg
eXlfc2Nhbl9ieXRlcyAgKHl5Y29uc3QgY2hhciAqIHl5Ynl0ZXMsIHl5X3NpemVfdCAgX3l5Ynl0
ZXNfbGVuICwgeXlzY2FuX3QgeXlzY2FubmVyKQorIHsKKyAJWVlfQlVGRkVSX1NUQVRFIGI7Cisg
CWNoYXIgKmJ1ZjsKKy0JeXlfc2l6ZV90IG47CistCWludCBpOworKwl5eV9zaXplX3QgbiwgaTsK
KyAgICAgCisgCS8qIEdldCBtZW1vcnkgZm9yIGZ1bGwgYnVmZmVyLCBpbmNsdWRpbmcgc3BhY2Ug
Zm9yIHRyYWlsaW5nIEVPQidzLiAqLworIAluID0gX3l5Ynl0ZXNfbGVuICsgMjsKK0BAIC0yOTEz
LDcgKzI5MTMsNyBAQCBGSUxFICp5eWdldF9vdXQgICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgLyoq
IEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuLgorICAqIEBwYXJhbSB5eXNjYW5u
ZXIgVGhlIHNjYW5uZXIgb2JqZWN0LgorICAqLworLWludCB5eWdldF9sZW5nICAoeXlzY2FuX3Qg
eXlzY2FubmVyKQorK3l5X3NpemVfdCB5eWdldF9sZW5nICAoeXlzY2FuX3QgeXlzY2FubmVyKQor
IHsKKyAgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2Fu
bmVyOworICAgICByZXR1cm4geXlsZW5nOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9CYXNlVHlwZXMuaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC05MCwxMCArOTAsNiBAQCBlbnVtIFRRdWFsaWZpZXIKICAgICBFdnFJbnZhcmlhbnRW
YXJ5aW5nT3V0LCAgICAvLyB2ZXJ0ZXggc2hhZGVycyBvbmx5ICByZWFkL3dyaXRlCiAgICAgRXZx
VW5pZm9ybSwgICAgICAgLy8gUmVhZG9ubHksIHZlcnRleCBhbmQgZnJhZ21lbnQKIAotICAgIC8v
IHBhY2svdW5wYWNrIGlucHV0IGFuZCBvdXRwdXQKLSAgICBFdnFJbnB1dCwKLSAgICBFdnFPdXRw
dXQsCi0KICAgICAvLyBwYXJhbWV0ZXJzCiAgICAgRXZxSW4sCiAgICAgRXZxT3V0LApAQCAtMTEy
LDYgKzEwOCw3IEBAIGVudW0gVFF1YWxpZmllcgogICAgIC8vIGJ1aWx0LWlucyB3cml0dGVuIGJ5
IGZyYWdtZW50IHNoYWRlcgogICAgIEV2cUZyYWdDb2xvciwKICAgICBFdnFGcmFnRGF0YSwKKyAg
ICBFdnFGcmFnRGVwdGgsCiAKICAgICAvLyBlbmQgb2YgbGlzdAogICAgIEV2cUxhc3QKQEAgLTEz
NywxNCArMTM0LDEzIEBAIGlubGluZSBjb25zdCBjaGFyKiBnZXRRdWFsaWZpZXJTdHJpbmcoVFEK
ICAgICBjYXNlIEV2cUluOiAgICAgICAgICAgICByZXR1cm4gImluIjsgICAgICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBFdnFPdXQ6ICAgICAgICAgICAgcmV0dXJuICJvdXQiOyAgICAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRXZxSW5PdXQ6ICAgICAgICAgIHJldHVybiAiaW5vdXQiOyAgICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEV2cUlucHV0OiAgICAgICAgICByZXR1cm4gImlucHV0Ijsg
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFPdXRwdXQ6ICAgICAgICAgcmV0dXJuICJvdXRw
dXQiOyAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxUG9zaXRpb246ICAgICAgIHJldHVybiAi
UG9zaXRpb24iOyAgICAgICBicmVhazsKICAgICBjYXNlIEV2cVBvaW50U2l6ZTogICAgICByZXR1
cm4gIlBvaW50U2l6ZSI7ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcmFnQ29vcmQ6ICAgICAg
cmV0dXJuICJGcmFnQ29vcmQiOyAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6
ICAgIHJldHVybiAiRnJvbnRGYWNpbmciOyAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb2xv
cjogICAgICByZXR1cm4gIkZyYWdDb2xvciI7ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcmFn
RGF0YTogICAgICAgcmV0dXJuICJGcmFnRGF0YSI7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdnFG
cmFnRGVwdGg6ICAgICAgcmV0dXJuICJGcmFnRGVwdGgiOyAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDogICAgICAgICAgICAgICAgcmV0dXJuICJ1bmtub3duIHF1YWxpZmllciI7CiAgICAgfQogfQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvZGVHZW5ITFNMLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29k
ZUdlbkhMU0wuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvQ29kZUdlbkhMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xNCw5ICsxNCwx
MSBAQAogVENvbXBpbGVyKiBDb25zdHJ1Y3RDb21waWxlcigKICAgICBTaFNoYWRlclR5cGUgdHlw
ZSwgU2hTaGFkZXJTcGVjIHNwZWMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKIHsKLSAgc3dpdGNo
IChvdXRwdXQpIHsKLSAgICBjYXNlIFNIX0hMU0xfT1VUUFVUOgotICAgICAgcmV0dXJuIG5ldyBU
cmFuc2xhdG9ySExTTCh0eXBlLCBzcGVjKTsKKyAgc3dpdGNoIChvdXRwdXQpCisgIHsKKyAgICBj
YXNlIFNIX0hMU0w5X09VVFBVVDoKKyAgICBjYXNlIFNIX0hMU0wxMV9PVVRQVVQ6CisgICAgICBy
ZXR1cm4gbmV3IFRyYW5zbGF0b3JITFNMKHR5cGUsIHNwZWMsIG91dHB1dCk7CiAgICAgZGVmYXVs
dDoKICAgICAgIHJldHVybiBOVUxMOwogICB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0NvbW1vbi5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0LDI0ICsxNCwxMiBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvUG9vbEFsbG9jLmgiCiAKLS8v
IFdlIG5lZWQgdHdvIHBpZWNlcyBvZiBpbmZvcm1hdGlvbiB0byByZXBvcnQgZXJyb3JzL3dhcm5p
bmdzIC0gc3RyaW5nIGFuZAotLy8gbGluZSBudW1iZXIuIFdlIGVuY29kZSB0aGVzZSBpbnRvIGEg
c2luZ2xlIGludCBzbyB0aGF0IGl0IGNhbiBiZSBlYXNpbHkKLS8vIGluY3JlbWVudGVkL2RlY3Jl
bWVudGVkIGJ5IGxleGVyLiBUaGUgcmlnaHQgU09VUkNFX0xPQ19MSU5FX1NJWkUgYml0cyBzdG9y
ZQotLy8gbGluZSBudW1iZXIgd2hpbGUgdGhlIHJlc3Qgc3RvcmUgdGhlIHN0cmluZyBudW1iZXIu
IFNpbmNlIHRoZSBzaGFkZXJzIGFyZQotLy8gdXN1YWxseSBzbWFsbCwgd2Ugc2hvdWxkIG5vdCBy
dW4gb3V0IG9mIG1lbW9yeS4gU09VUkNFX0xPQ19MSU5FX1NJWkUKLS8vIGNhbiBiZSBpbmNyZWFz
ZWQgdG8gYWxsZXZpYXRlIHRoaXMgaXNzdWUuCi10eXBlZGVmIGludCBUU291cmNlTG9jOwotY29u
c3QgdW5zaWduZWQgaW50IFNPVVJDRV9MT0NfTElORV9TSVpFID0gMTY7ICAvLyBpbiBiaXRzLgot
Y29uc3QgdW5zaWduZWQgaW50IFNPVVJDRV9MT0NfTElORV9NQVNLID0gKDEgPDwgU09VUkNFX0xP
Q19MSU5FX1NJWkUpIC0gMTsKLQotaW5saW5lIFRTb3VyY2VMb2MgRW5jb2RlU291cmNlTG9jKGlu
dCBzdHJpbmcsIGludCBsaW5lKSB7Ci0gICAgcmV0dXJuIChzdHJpbmcgPDwgU09VUkNFX0xPQ19M
SU5FX1NJWkUpIHwgKGxpbmUgJiBTT1VSQ0VfTE9DX0xJTkVfTUFTSyk7Ci19Ci0KLWlubGluZSB2
b2lkIERlY29kZVNvdXJjZUxvYyhUU291cmNlTG9jIGxvYywgaW50KiBzdHJpbmcsIGludCogbGlu
ZSkgewotICAgIGlmIChzdHJpbmcpICpzdHJpbmcgPSBsb2MgPj4gU09VUkNFX0xPQ19MSU5FX1NJ
WkU7Ci0gICAgaWYgKGxpbmUpICpsaW5lID0gbG9jICYgU09VUkNFX0xPQ19MSU5FX01BU0s7Ci19
CitzdHJ1Y3QgVFNvdXJjZUxvYyB7CisgICAgaW50IGZpcnN0X2ZpbGU7CisgICAgaW50IGZpcnN0
X2xpbmU7CisgICAgaW50IGxhc3RfZmlsZTsKKyAgICBpbnQgbGFzdF9saW5lOworfTsKIAogLy8K
IC8vIFB1dCBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFIGluIGJhc2UgY2xhc3NlcyB0byBtYWtl
IHRoZW0gdXNlIHRoaXMgc2NoZW1lLgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0NvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDExICsxLDExIEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgog
Ly8KIAogI2luY2x1ZGUgImNvbXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmgiCi0jaW5j
bHVkZSAiY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvRGV0
ZWN0Q2FsbERlcHRoLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvRm9yTG9vcFVucm9sbC5oIgogI2lu
Y2x1ZGUgImNvbXBpbGVyL0luaXRpYWxpemUuaCIKICNpbmNsdWRlICJjb21waWxlci9Jbml0aWFs
aXplUGFyc2VDb250ZXh0LmgiCkBAIC0yNyw1MSArMjcsNiBAQCBib29sIGlzV2ViR0xCYXNlZFNw
ZWMoU2hTaGFkZXJTcGVjIHNwZWMpCiB9CiAKIG5hbWVzcGFjZSB7Ci1ib29sIEluaXRpYWxpemVT
eW1ib2xUYWJsZSgKLSAgICBjb25zdCBUQnVpbHRJblN0cmluZ3MmIGJ1aWx0SW5TdHJpbmdzLAot
ICAgIFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgY29uc3QgU2hCdWlsdElu
UmVzb3VyY2VzJiByZXNvdXJjZXMsCi0gICAgVEluZm9TaW5rJiBpbmZvU2luaywgVFN5bWJvbFRh
YmxlJiBzeW1ib2xUYWJsZSkKLXsKLSAgICBUSW50ZXJtZWRpYXRlIGludGVybWVkaWF0ZShpbmZv
U2luayk7Ci0gICAgVEV4dGVuc2lvbkJlaGF2aW9yIGV4dEJlaGF2aW9yOwotICAgIEluaXRFeHRl
bnNpb25CZWhhdmlvcihyZXNvdXJjZXMsIGV4dEJlaGF2aW9yKTsKLSAgICAvLyBUaGUgYnVpbHRp
bnMgZGVsaWJlcmF0ZWx5IGRvbid0IHNwZWNpZnkgcHJlY2lzaW9ucyBmb3IgdGhlIGZ1bmN0aW9u
Ci0gICAgLy8gYXJndW1lbnRzIGFuZCByZXR1cm4gdHlwZXMuIEZvciB0aGF0IHJlYXNvbiB3ZSBk
b24ndCB0cnkgdG8gY2hlY2sgdGhlbS4KLSAgICBUUGFyc2VDb250ZXh0IHBhcnNlQ29udGV4dChz
eW1ib2xUYWJsZSwgZXh0QmVoYXZpb3IsIGludGVybWVkaWF0ZSwgdHlwZSwgc3BlYywgMCwgZmFs
c2UsIE5VTEwsIGluZm9TaW5rKTsKLSAgICBwYXJzZUNvbnRleHQuZnJhZ21lbnRQcmVjaXNpb25I
aWdoID0gcmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA9PSAxOwotCi0gICAgR2xvYmFs
UGFyc2VDb250ZXh0ID0gJnBhcnNlQ29udGV4dDsKLQotICAgIGFzc2VydChzeW1ib2xUYWJsZS5p
c0VtcHR5KCkpOyAgICAgICAKLSAgICAvLwotICAgIC8vIFBhcnNlIHRoZSBidWlsdC1pbnMuICBU
aGlzIHNob3VsZCBvbmx5IGhhcHBlbiBvbmNlIHBlcgotICAgIC8vIGxhbmd1YWdlIHN5bWJvbCB0
YWJsZS4KLSAgICAvLwotICAgIC8vIFB1c2ggdGhlIHN5bWJvbCB0YWJsZSB0byBnaXZlIGl0IGFu
IGluaXRpYWwgc2NvcGUuICBUaGlzCi0gICAgLy8gcHVzaCBzaG91bGQgbm90IGhhdmUgYSBjb3Jy
ZXNwb25kaW5nIHBvcCwgc28gdGhhdCBidWlsdC1pbnMKLSAgICAvLyBhcmUgcHJlc2VydmVkLCBh
bmQgdGhlIHRlc3QgZm9yIGFuIGVtcHR5IHRhYmxlIGZhaWxzLgotICAgIC8vCi0gICAgc3ltYm9s
VGFibGUucHVzaCgpOwotCi0gICAgZm9yIChUQnVpbHRJblN0cmluZ3M6OmNvbnN0X2l0ZXJhdG9y
IGkgPSBidWlsdEluU3RyaW5ncy5iZWdpbigpOyBpICE9IGJ1aWx0SW5TdHJpbmdzLmVuZCgpOyAr
K2kpCi0gICAgewotICAgICAgICBjb25zdCBjaGFyKiBidWlsdEluU2hhZGVycyA9IGktPmNfc3Ry
KCk7Ci0gICAgICAgIGludCBidWlsdEluTGVuZ3RocyA9IHN0YXRpY19jYXN0PGludD4oaS0+c2l6
ZSgpKTsKLSAgICAgICAgaWYgKGJ1aWx0SW5MZW5ndGhzIDw9IDApCi0gICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgaWYgKFBhUGFyc2VTdHJpbmdzKDEsICZidWlsdEluU2hhZGVycywgJmJ1
aWx0SW5MZW5ndGhzLCAmcGFyc2VDb250ZXh0KSAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJVbmFibGUgdG8g
cGFyc2UgYnVpbHQtaW5zIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBJZGVudGlmeUJ1aWx0SW5zKHR5cGUsIHNwZWMsIHJlc291cmNlcywgc3lt
Ym9sVGFibGUpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGNsYXNzIFRTY29wZWRQb29sQWxs
b2NhdG9yIHsKIHB1YmxpYzoKICAgICBUU2NvcGVkUG9vbEFsbG9jYXRvcihUUG9vbEFsbG9jYXRv
ciogYWxsb2NhdG9yLCBib29sIHB1c2hQb3ApCkBAIC0xMDMsNiArNTgsOSBAQCBUU2hIYW5kbGVC
YXNlOjp+VFNoSGFuZGxlQmFzZSgpIHsKIFRDb21waWxlcjo6VENvbXBpbGVyKFNoU2hhZGVyVHlw
ZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYykKICAgICA6IHNoYWRlclR5cGUodHlwZSksCiAgICAg
ICBzaGFkZXJTcGVjKHNwZWMpLAorICAgICAgbWF4VW5pZm9ybVZlY3RvcnMoMCksCisgICAgICBt
YXhFeHByZXNzaW9uQ29tcGxleGl0eSgwKSwKKyAgICAgIG1heENhbGxTdGFja0RlcHRoKDApLAog
ICAgICAgZnJhZ21lbnRQcmVjaXNpb25IaWdoKGZhbHNlKSwKICAgICAgIGNsYW1waW5nU3RyYXRl
Z3koU0hfQ0xBTVBfV0lUSF9DTEFNUF9JTlRSSU5TSUMpLAogICAgICAgYnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3IodHlwZSkKQEAgLTEyMSw2ICs3OSw4IEBAIGJvb2wgVENvbXBpbGVyOjpJbml0KGNv
bnN0IFNoQnVpbHRJblJlc28KICAgICBtYXhVbmlmb3JtVmVjdG9ycyA9IChzaGFkZXJUeXBlID09
IFNIX1ZFUlRFWF9TSEFERVIpID8KICAgICAgICAgcmVzb3VyY2VzLk1heFZlcnRleFVuaWZvcm1W
ZWN0b3JzIDoKICAgICAgICAgcmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnM7Cisg
ICAgbWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkgPSByZXNvdXJjZXMuTWF4RXhwcmVzc2lvbkNvbXBs
ZXhpdHk7CisgICAgbWF4Q2FsbFN0YWNrRGVwdGggPSByZXNvdXJjZXMuTWF4Q2FsbFN0YWNrRGVw
dGg7CiAgICAgVFNjb3BlZFBvb2xBbGxvY2F0b3Igc2NvcGVkQWxsb2MoJmFsbG9jYXRvciwgZmFs
c2UpOwogCiAgICAgLy8gR2VuZXJhdGUgYnVpbHQtaW4gc3ltYm9sIHRhYmxlLgpAQCAtMTcwLDgg
KzEzMCwxMCBAQCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAg
Ly8gV2UgcHJlc2VydmUgc3ltYm9scyBhdCB0aGUgYnVpbHQtaW4gbGV2ZWwgZnJvbSBjb21waWxl
LXRvLWNvbXBpbGUuCiAgICAgLy8gU3RhcnQgcHVzaGluZyB0aGUgdXNlci1kZWZpbmVkIHN5bWJv
bHMgYXQgZ2xvYmFsIGxldmVsLgogICAgIHN5bWJvbFRhYmxlLnB1c2goKTsKLSAgICBpZiAoIXN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSkKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiV3Jvbmcgc3ltYm9sIHRhYmxlIGxldmVsIik7CisgICAg
aWYgKCFzeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkpIHsKKyAgICAgICAgaW5mb1NpbmsuaW5m
by5wcmVmaXgoRVByZWZpeEludGVybmFsRXJyb3IpOworICAgICAgICBpbmZvU2luay5pbmZvIDw8
ICJXcm9uZyBzeW1ib2wgdGFibGUgbGV2ZWwiOworICAgIH0KIAogICAgIC8vIFBhcnNlIHNoYWRl
ci4KICAgICBib29sIHN1Y2Nlc3MgPQpAQCAtMTgyLDcgKzE0NCw3IEBAIGJvb2wgVENvbXBpbGVy
Ojpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAgICAgc3VjY2VzcyA9IGludGVybWVkaWF0
ZS5wb3N0UHJvY2Vzcyhyb290KTsKIAogICAgICAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgICAg
IHN1Y2Nlc3MgPSBkZXRlY3RSZWN1cnNpb24ocm9vdCk7CisgICAgICAgICAgICBzdWNjZXNzID0g
ZGV0ZWN0Q2FsbERlcHRoKHJvb3QsIGluZm9TaW5rLCAoY29tcGlsZU9wdGlvbnMgJiBTSF9MSU1J
VF9DQUxMX1NUQUNLX0RFUFRIKSAhPSAwKTsKIAogICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29t
cGlsZU9wdGlvbnMgJiBTSF9WQUxJREFURV9MT09QX0lOREVYSU5HKSkKICAgICAgICAgICAgIHN1
Y2Nlc3MgPSB2YWxpZGF0ZUxpbWl0YXRpb25zKHJvb3QpOwpAQCAtMjA1LDYgKzE2NywxMCBAQCBi
b29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgIGlmIChzdWNj
ZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUykp
CiAgICAgICAgICAgICBhcnJheUJvdW5kc0NsYW1wZXIuTWFya0luZGlyZWN0QXJyYXlCb3VuZHNG
b3JDbGFtcGluZyhyb290KTsKIAorICAgICAgICAvLyBEaXNhbGxvdyBleHByZXNzaW9ucyBkZWVt
ZWQgdG9vIGNvbXBsZXguCisgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAm
IFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSkpCisgICAgICAgICAgICBzdWNjZXNzID0g
bGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShyb290KTsKKwogICAgICAgICAvLyBDYWxsIG1hcExv
bmdWYXJpYWJsZU5hbWVzKCkgYmVmb3JlIGNvbGxlY3RBdHRyaWJzVW5pZm9ybXMoKSBzbyBpbgog
ICAgICAgICAvLyBjb2xsZWN0QXR0cmlic1VuaWZvcm1zKCkgd2UgYWxyZWFkeSBoYXZlIHRoZSBt
YXBwZWQgc3ltYm9sIG5hbWVzIGFuZAogICAgICAgICAvLyB3ZSBjb3VsZCBjb21wb3NpdGUgbWFw
cGVkIGFuZCBvcmlnaW5hbCB2YXJpYWJsZSBuYW1lcy4KQEAgLTIxNyw3ICsxODMsOCBAQCBib29s
IFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgICAgICAgICBpZiAoY29t
cGlsZU9wdGlvbnMgJiBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05TKSB7CiAgICAgICAg
ICAgICAgICAgc3VjY2VzcyA9IGVuZm9yY2VQYWNraW5nUmVzdHJpY3Rpb25zKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4RXJyb3IsICJ0b28gbWFueSB1bmlmb3JtcyIpOworICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJ0b28gbWFueSB1bmlmb3JtcyI7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMzksMTMgKzIwNiw0MiBA
QCBib29sIFRDb21waWxlcjo6Y29tcGlsZShjb25zdCBjaGFyKiBjb25zCiAgICAgcmV0dXJuIHN1
Y2Nlc3M7CiB9CiAKLWJvb2wgVENvbXBpbGVyOjpJbml0QnVpbHRJblN5bWJvbFRhYmxlKGNvbnN0
IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQorYm9vbCBUQ29tcGlsZXI6OkluaXRCdWls
dEluU3ltYm9sVGFibGUoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzICZyZXNvdXJjZXMpCiB7Ci0g
ICAgVEJ1aWx0SW5zIGJ1aWx0SW5zOworICAgIGNvbXBpbGVSZXNvdXJjZXMgPSByZXNvdXJjZXM7
CisKKyAgICBhc3NlcnQoc3ltYm9sVGFibGUuaXNFbXB0eSgpKTsKKyAgICBzeW1ib2xUYWJsZS5w
dXNoKCk7CiAKLSAgICBidWlsdElucy5pbml0aWFsaXplKHNoYWRlclR5cGUsIHNoYWRlclNwZWMs
IHJlc291cmNlcyk7Ci0gICAgcmV0dXJuIEluaXRpYWxpemVTeW1ib2xUYWJsZShidWlsdElucy5n
ZXRCdWlsdEluU3RyaW5ncygpLAotICAgICAgICBzaGFkZXJUeXBlLCBzaGFkZXJTcGVjLCByZXNv
dXJjZXMsIGluZm9TaW5rLCBzeW1ib2xUYWJsZSk7CisgICAgVFB1YmxpY1R5cGUgaW50ZWdlcjsK
KyAgICBpbnRlZ2VyLnR5cGUgPSBFYnRJbnQ7CisgICAgaW50ZWdlci5zaXplID0gMTsKKyAgICBp
bnRlZ2VyLm1hdHJpeCA9IGZhbHNlOworICAgIGludGVnZXIuYXJyYXkgPSBmYWxzZTsKKworICAg
IFRQdWJsaWNUeXBlIGZsb2F0aW5nUG9pbnQ7CisgICAgZmxvYXRpbmdQb2ludC50eXBlID0gRWJ0
RmxvYXQ7CisgICAgZmxvYXRpbmdQb2ludC5zaXplID0gMTsKKyAgICBmbG9hdGluZ1BvaW50Lm1h
dHJpeCA9IGZhbHNlOworICAgIGZsb2F0aW5nUG9pbnQuYXJyYXkgPSBmYWxzZTsKKworICAgIHN3
aXRjaChzaGFkZXJUeXBlKQorICAgIHsKKyAgICAgIGNhc2UgU0hfRlJBR01FTlRfU0hBREVSOgor
ICAgICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKGludGVnZXIsIEVicE1lZGl1
bSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBTSF9WRVJURVhfU0hBREVSOgorICAgICAg
ICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKGludGVnZXIsIEVicEhpZ2gpOworICAg
ICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKGZsb2F0aW5nUG9pbnQsIEVicEhp
Z2gpOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSAmJiAiTGFu
Z3VhZ2Ugbm90IHN1cHBvcnRlZCIpOworICAgIH0KKworICAgIEluc2VydEJ1aWx0SW5GdW5jdGlv
bnMoc2hhZGVyVHlwZSwgc2hhZGVyU3BlYywgcmVzb3VyY2VzLCBzeW1ib2xUYWJsZSk7CisKKyAg
ICBJZGVudGlmeUJ1aWx0SW5zKHNoYWRlclR5cGUsIHNoYWRlclNwZWMsIHJlc291cmNlcywgc3lt
Ym9sVGFibGUpOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgVENvbXBpbGVyOjpjbGVh
clJlc3VsdHMoKQpAQCAtMjYzLDE4ICsyNTksMjQgQEAgdm9pZCBUQ29tcGlsZXI6OmNsZWFyUmVz
dWx0cygpCiAgICAgbmFtZU1hcC5jbGVhcigpOwogfQogCi1ib29sIFRDb21waWxlcjo6ZGV0ZWN0
UmVjdXJzaW9uKFRJbnRlcm1Ob2RlKiByb290KQorYm9vbCBUQ29tcGlsZXI6OmRldGVjdENhbGxE
ZXB0aChUSW50ZXJtTm9kZSogcm9vdCwgVEluZm9TaW5rJiBpbmZvU2luaywgYm9vbCBsaW1pdENh
bGxTdGFja0RlcHRoKQogewotICAgIERldGVjdFJlY3Vyc2lvbiBkZXRlY3Q7CisgICAgRGV0ZWN0
Q2FsbERlcHRoIGRldGVjdChpbmZvU2luaywgbGltaXRDYWxsU3RhY2tEZXB0aCwgbWF4Q2FsbFN0
YWNrRGVwdGgpOwogICAgIHJvb3QtPnRyYXZlcnNlKCZkZXRlY3QpOwotICAgIHN3aXRjaCAoZGV0
ZWN0LmRldGVjdFJlY3Vyc2lvbigpKSB7Ci0gICAgICAgIGNhc2UgRGV0ZWN0UmVjdXJzaW9uOjpr
RXJyb3JOb25lOgorICAgIHN3aXRjaCAoZGV0ZWN0LmRldGVjdENhbGxEZXB0aCgpKSB7CisgICAg
ICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JOb25lOgogICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIGNhc2UgRGV0ZWN0UmVjdXJzaW9uOjprRXJyb3JNaXNzaW5nTWFpbjoK
LSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsICJNaXNzaW5n
IG1haW4oKSIpOworICAgICAgICBjYXNlIERldGVjdENhbGxEZXB0aDo6a0Vycm9yTWlzc2luZ01h
aW46CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiTWlzc2luZyBtYWluKCkiOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBjYXNlIERldGVjdENhbGxEZXB0aDo6a0Vycm9yUmVjdXJz
aW9uOgorICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9yKTsKKyAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIkZ1bmN0aW9uIHJlY3Vyc2lvbiBkZXRlY3RlZCI7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgRGV0ZWN0UmVjdXJzaW9u
OjprRXJyb3JSZWN1cnNpb246Ci0gICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVBy
ZWZpeEVycm9yLCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVkIik7CisgICAgICAgIGNhc2Ug
RGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JNYXhEZXB0aEV4Y2VlZGVkOgorICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9yKTsKKyAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8gPDwgIkZ1bmN0aW9uIGNhbGwgc3RhY2sgdG9vIGRlZXAiOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKQEAg
LTMyMCw2ICszMjIsMjggQEAgYm9vbCBUQ29tcGlsZXI6OmVuZm9yY2VUaW1pbmdSZXN0cmljdGlv
bgogICAgIH0KIH0KIAorYm9vbCBUQ29tcGlsZXI6OmxpbWl0RXhwcmVzc2lvbkNvbXBsZXhpdHko
VEludGVybU5vZGUqIHJvb3QpCit7CisgICAgVEludGVybVRyYXZlcnNlciB0cmF2ZXJzZXI7Cisg
ICAgcm9vdC0+dHJhdmVyc2UoJnRyYXZlcnNlcik7CisgICAgVERlcGVuZGVuY3lHcmFwaCBncmFw
aChyb290KTsKKworICAgIGZvciAoVEZ1bmN0aW9uQ2FsbFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3Ig
aXRlciA9IGdyYXBoLmJlZ2luVXNlckRlZmluZWRGdW5jdGlvbkNhbGxzKCk7CisgICAgICAgICBp
dGVyICE9IGdyYXBoLmVuZFVzZXJEZWZpbmVkRnVuY3Rpb25DYWxscygpOworICAgICAgICAgKytp
dGVyKQorICAgIHsKKyAgICAgICAgVEdyYXBoRnVuY3Rpb25DYWxsKiBzYW1wbGVyU3ltYm9sID0g
Kml0ZXI7CisgICAgICAgIFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIgZ3JhcGhUcmF2ZXJzZXI7
CisgICAgICAgIHNhbXBsZXJTeW1ib2wtPnRyYXZlcnNlKCZncmFwaFRyYXZlcnNlcik7CisgICAg
fQorCisgICAgaWYgKHRyYXZlcnNlci5nZXRNYXhEZXB0aCgpID4gbWF4RXhwcmVzc2lvbkNvbXBs
ZXhpdHkpIHsKKyAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiRXhwcmVzc2lvbiB0b28gY29tcGxl
eC4iOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
CiBib29sIFRDb21waWxlcjo6ZW5mb3JjZUZyYWdtZW50U2hhZGVyVGltaW5nUmVzdHJpY3Rpb25z
KGNvbnN0IFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKQogewogICAgIFJlc3RyaWN0RnJhZ21lbnRT
aGFkZXJUaW1pbmcgcmVzdHJpY3RvcihpbmZvU2luay5pbmZvKTsKQEAgLTM2Myw2ICszODcsMTEg
QEAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBUQ29tcGlsZXI6OmdldAogICAgIHJldHVybiBl
eHRlbnNpb25CZWhhdmlvcjsKIH0KIAorY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiBUQ29tcGls
ZXI6OmdldFJlc291cmNlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbXBpbGVSZXNvdXJjZXM7
Cit9CisKIGNvbnN0IEFycmF5Qm91bmRzQ2xhbXBlciYgVENvbXBpbGVyOjpnZXRBcnJheUJvdW5k
c0NsYW1wZXIoKSBjb25zdAogewogICAgIHJldHVybiBhcnJheUJvdW5kc0NsYW1wZXI7CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db25zdGFu
dFVuaW9uLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9Db25zdGFudFVuaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE0LDYgKzE0LDcgQEAg
cHVibGljOgogICAgIENvbnN0YW50VW5pb24oKQogICAgIHsKICAgICAgICAgaUNvbnN0ID0gMDsK
KyAgICAgICAgdHlwZSA9IEVidFZvaWQ7CiAgICAgfQogCiAgICAgUE9PTF9BTExPQ0FUT1JfTkVX
X0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKSAgICAgICAgCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9E
ZXRlY3RDYWxsRGVwdGguY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4NSBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oIgorI2lu
Y2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgiCisKK0RldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25O
b2RlOjpGdW5jdGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5hbWUpCisgICAgOiBuYW1lKGZuYW1l
KSwKKyAgICAgIHZpc2l0KFByZVZpc2l0KQoreworfQorCitjb25zdCBUU3RyaW5nJiBEZXRlY3RD
YWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6Z2V0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5h
bWU7Cit9CisKK3ZvaWQgRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OmFkZENhbGxlZSgK
KyAgICBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZSogY2FsbGVlKQoreworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoY2Fs
bGVlc1tpXSA9PSBjYWxsZWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhbGxl
ZXMucHVzaF9iYWNrKGNhbGxlZSk7Cit9CisKK2ludCBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9u
Tm9kZTo6ZGV0ZWN0Q2FsbERlcHRoKERldGVjdENhbGxEZXB0aCogZGV0ZWN0Q2FsbERlcHRoLCBp
bnQgZGVwdGgpCit7CisgICAgQVNTRVJUKHZpc2l0ID09IFByZVZpc2l0KTsKKyAgICBBU1NFUlQo
ZGV0ZWN0Q2FsbERlcHRoKTsKKworICAgIGludCBtYXhEZXB0aCA9IGRlcHRoOworICAgIHZpc2l0
ID0gSW5WaXNpdDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxlZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgc3dpdGNoIChjYWxsZWVzW2ldLT52aXNpdCkgeworICAgICAgICAgICAg
Y2FzZSBJblZpc2l0OgorICAgICAgICAgICAgICAgIC8vIGN5Y2xlIGRldGVjdGVkLCBpLmUuLCBy
ZWN1cnNpb24gZGV0ZWN0ZWQuCisgICAgICAgICAgICAgICAgcmV0dXJuIGtJbmZpbml0ZUNhbGxE
ZXB0aDsKKyAgICAgICAgICAgIGNhc2UgUG9zdFZpc2l0OgorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBQcmVWaXNpdDogeworICAgICAgICAgICAgICAgIC8vIENoZWNr
IGJlZm9yZSB3ZSByZWN1cnNlIHNvIHdlIGRvbid0IGdvIHRvbyBkZXB0aAorICAgICAgICAgICAg
ICAgIGlmIChkZXRlY3RDYWxsRGVwdGgtPmNoZWNrRXhjZWVkc01heERlcHRoKGRlcHRoKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlcHRoOworICAgICAgICAgICAgICAgIGludCBjYWxs
RGVwdGggPSBjYWxsZWVzW2ldLT5kZXRlY3RDYWxsRGVwdGgoZGV0ZWN0Q2FsbERlcHRoLCBkZXB0
aCArIDEpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIGFmdGVyIHdlIHJlY3Vyc2Ugc28gd2Ug
Y2FuIGV4aXQgaW1tZWRpYXRlbHkgYW5kIHByb3ZpZGUgaW5mby4KKyAgICAgICAgICAgICAgICBp
ZiAoZGV0ZWN0Q2FsbERlcHRoLT5jaGVja0V4Y2VlZHNNYXhEZXB0aChjYWxsRGVwdGgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGRldGVjdENhbGxEZXB0aC0+Z2V0SW5mb1NpbmsoKS5pbmZvIDw8
ICI8LSIgPDwgY2FsbGVlc1tpXS0+Z2V0TmFtZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gY2FsbERlcHRoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtYXhEZXB0
aCA9IHN0ZDo6bWF4KGNhbGxEZXB0aCwgbWF4RGVwdGgpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
ICAgIHZpc2l0ID0gUG9zdFZpc2l0OworICAgIHJldHVybiBtYXhEZXB0aDsKK30KKwordm9pZCBE
ZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6cmVzZXQoKQoreworICAgIHZpc2l0ID0gUHJl
VmlzaXQ7Cit9CisKK0RldGVjdENhbGxEZXB0aDo6RGV0ZWN0Q2FsbERlcHRoKFRJbmZvU2luayYg
aW5mb1NpbmssIGJvb2wgbGltaXRDYWxsU3RhY2tEZXB0aCwgaW50IG1heENhbGxTdGFja0RlcHRo
KQorICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpLAorICAg
ICAgY3VycmVudEZ1bmN0aW9uKE5VTEwpLAorICAgICAgaW5mb1NpbmsoaW5mb1NpbmspLAorICAg
ICAgbWF4RGVwdGgobGltaXRDYWxsU3RhY2tEZXB0aCA/IG1heENhbGxTdGFja0RlcHRoIDogRnVu
Y3Rpb25Ob2RlOjprSW5maW5pdGVDYWxsRGVwdGgpCit7Cit9CisKK0RldGVjdENhbGxEZXB0aDo6
fkRldGVjdENhbGxEZXB0aCgpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlv
bnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRlbGV0ZSBmdW5jdGlvbnNbaV07Cit9CisKK2Jvb2wg
RGV0ZWN0Q2FsbERlcHRoOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3Jl
Z2F0ZSogbm9kZSkKK3sKKyAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisgICAgeworICAgICAg
ICBjYXNlIEVPcFByb3RvdHlwZToKKyAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9u
LgorICAgICAgICAgICAgLy8gRG9uJ3QgYWRkIEZ1bmN0aW9uTm9kZSBoZXJlIGJlY2F1c2Ugbm9k
ZS0+Z2V0TmFtZSgpIGlzIHRoZQorICAgICAgICAgICAgLy8gdW5tYW5nbGVkIGZ1bmN0aW9uIG5h
bWUuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BGdW5jdGlvbjogeworICAg
ICAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KKyAgICAgICAgICAgIGlmICh2aXNpdCA9
PSBQcmVWaXNpdCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9IGZpbmRGdW5j
dGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50
RnVuY3Rpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24g
PSBuZXcgRnVuY3Rpb25Ob2RlKG5vZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9ucy5wdXNoX2JhY2soY3VycmVudEZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgaWYgKHZpc2l0ID09IFBvc3RWaXNpdCkgeworICAgICAgICAg
ICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9IE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEVPcEZ1bmN0aW9uQ2FsbDogeworICAg
ICAgICAgICAgLy8gRnVuY3Rpb24gY2FsbC4KKyAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVW
aXNpdCkgeworICAgICAgICAgICAgICAgIEZ1bmN0aW9uTm9kZSogZnVuYyA9IGZpbmRGdW5jdGlv
bkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgIGlmIChmdW5jID09IE5V
TEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG5ldyBGdW5jdGlvbk5vZGUobm9kZS0+
Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLnB1c2hfYmFjayhmdW5j
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGdW5jdGlv
bikKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uLT5hZGRDYWxsZWUoZnVuYyk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Citib29sIERldGVjdENhbGxEZXB0aDo6Y2hlY2tFeGNlZWRzTWF4RGVwdGgoaW50IGRlcHRoKQor
eworICAgIHJldHVybiBkZXB0aCA+PSBtYXhEZXB0aDsKK30KKwordm9pZCBEZXRlY3RDYWxsRGVw
dGg6OnJlc2V0RnVuY3Rpb25Ob2RlcygpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBm
dW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZnVuY3Rpb25zW2ldLT5yZXNldCgpOwor
ICAgIH0KK30KKworRGV0ZWN0Q2FsbERlcHRoOjpFcnJvckNvZGUgRGV0ZWN0Q2FsbERlcHRoOjpk
ZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbihGdW5jdGlvbk5vZGUqIGZ1bmMpCit7CisgICAgY3Vy
cmVudEZ1bmN0aW9uID0gTlVMTDsKKyAgICByZXNldEZ1bmN0aW9uTm9kZXMoKTsKKworICAgIGlu
dCBtYXhDYWxsRGVwdGggPSBmdW5jLT5kZXRlY3RDYWxsRGVwdGgodGhpcywgMSk7CisKKyAgICBp
ZiAobWF4Q2FsbERlcHRoID09IEZ1bmN0aW9uTm9kZTo6a0luZmluaXRlQ2FsbERlcHRoKQorICAg
ICAgICByZXR1cm4ga0Vycm9yUmVjdXJzaW9uOworCisgICAgaWYgKG1heENhbGxEZXB0aCA+PSBt
YXhEZXB0aCkKKyAgICAgICAgcmV0dXJuIGtFcnJvck1heERlcHRoRXhjZWVkZWQ7CisKKyAgICBy
ZXR1cm4ga0Vycm9yTm9uZTsKK30KKworRGV0ZWN0Q2FsbERlcHRoOjpFcnJvckNvZGUgRGV0ZWN0
Q2FsbERlcHRoOjpkZXRlY3RDYWxsRGVwdGgoKQoreworICAgIGlmIChtYXhEZXB0aCAhPSBGdW5j
dGlvbk5vZGU6OmtJbmZpbml0ZUNhbGxEZXB0aCkgeworICAgICAgICAvLyBDaGVjayBhbGwgZnVu
Y3Rpb25zIGJlY2F1c2UgdGhlIGRyaXZlciBtYXkgZmFpbCBvbiB0aGVtCisgICAgICAgIC8vIFRP
RE86IEJlZm9yZSBkZXRlY3RpbmdSZWN1cnNpb24sIHN0cmlwIHVudXNlZCBmdW5jdGlvbnMuCisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25zLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgICAgICBFcnJvckNvZGUgZXJyb3IgPSBkZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbihm
dW5jdGlvbnNbaV0pOworICAgICAgICAgICAgaWYgKGVycm9yICE9IGtFcnJvck5vbmUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgRnVuY3Rpb25Ob2RlKiBtYWluID0gZmluZEZ1bmN0aW9uQnlOYW1lKCJtYWluKCIpOworICAg
ICAgICBpZiAobWFpbiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIGtFcnJvck1pc3NpbmdN
YWluOworCisgICAgICAgIHJldHVybiBkZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbihtYWluKTsK
KyAgICB9CisKKyAgICByZXR1cm4ga0Vycm9yTm9uZTsKK30KKworRGV0ZWN0Q2FsbERlcHRoOjpG
dW5jdGlvbk5vZGUqIERldGVjdENhbGxEZXB0aDo6ZmluZEZ1bmN0aW9uQnlOYW1lKAorICAgIGNv
bnN0IFRTdHJpbmcmIG5hbWUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlv
bnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uc1tpXS0+Z2V0TmFtZSgpID09
IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25zW2ldOworICAgIH0KKyAgICByZXR1
cm4gTlVMTDsKK30KKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0RldGVjdENhbGxEZXB0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4MCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2lmbmRlZiBDT01QSUxF
Ul9ERVRFQ1RfUkVDVVJTSU9OX0hfCisjZGVmaW5lIENPTVBJTEVSX0RFVEVDVF9SRUNVUlNJT05f
SF8KKworI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgorCisjaW5jbHVkZSA8bGltaXRz
Lmg+CisjaW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCisjaW5jbHVkZSAiY29tcGls
ZXIvVmFyaWFibGVJbmZvLmgiCisKK2NsYXNzIFRJbmZvU2luazsKKworLy8gVHJhdmVyc2VzIGlu
dGVybWVkaWF0ZSB0cmVlIHRvIGRldGVjdCBmdW5jdGlvbiByZWN1cnNpb24uCitjbGFzcyBEZXRl
Y3RDYWxsRGVwdGggOiBwdWJsaWMgVEludGVybVRyYXZlcnNlciB7CitwdWJsaWM6CisgICAgZW51
bSBFcnJvckNvZGUgeworICAgICAgICBrRXJyb3JNaXNzaW5nTWFpbiwKKyAgICAgICAga0Vycm9y
UmVjdXJzaW9uLAorICAgICAgICBrRXJyb3JNYXhEZXB0aEV4Y2VlZGVkLAorICAgICAgICBrRXJy
b3JOb25lCisgICAgfTsKKworICAgIERldGVjdENhbGxEZXB0aChUSW5mb1NpbmsmIGluZm9TeW5j
LCBib29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgsIGludCBtYXhDYWxsU3RhY2tEZXB0aCk7CisgICAg
fkRldGVjdENhbGxEZXB0aCgpOworCisgICAgdmlydHVhbCBib29sIHZpc2l0QWdncmVnYXRlKFZp
c2l0LCBUSW50ZXJtQWdncmVnYXRlKik7CisKKyAgICBib29sIGNoZWNrRXhjZWVkc01heERlcHRo
KGludCBkZXB0aCk7CisKKyAgICBFcnJvckNvZGUgZGV0ZWN0Q2FsbERlcHRoKCk7CisKK3ByaXZh
dGU6CisgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRp
YyBjb25zdCBpbnQga0luZmluaXRlQ2FsbERlcHRoID0gSU5UX01BWDsKKworICAgICAgICBGdW5j
dGlvbk5vZGUoY29uc3QgVFN0cmluZyYgZm5hbWUpOworCisgICAgICAgIGNvbnN0IFRTdHJpbmcm
IGdldE5hbWUoKSBjb25zdDsKKworICAgICAgICAvLyBJZiBhIGZ1bmN0aW9uIGlzIGFscmVhZHkg
aW4gdGhlIGNhbGxlZSBsaXN0LCB0aGlzIGJlY29tZXMgYSBuby1vcC4KKyAgICAgICAgdm9pZCBh
ZGRDYWxsZWUoRnVuY3Rpb25Ob2RlKiBjYWxsZWUpOworCisgICAgICAgIC8vIFJldHVybnMga0lu
aWZpbml0eUNhbGxEZXB0aCBpZiByZWN1cnNpdmUgZnVuY3Rpb24gY2FsbHMgYXJlIGRldGVjdGVk
LgorICAgICAgICBpbnQgZGV0ZWN0Q2FsbERlcHRoKERldGVjdENhbGxEZXB0aCogZGV0ZWN0Q2Fs
bERlcHRoLCBpbnQgZGVwdGgpOworCisgICAgICAgIC8vIFJlc2V0IHN0YXRlLgorICAgICAgICB2
b2lkIHJlc2V0KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBtYW5nbGVkIGZ1bmN0aW9u
IG5hbWUgaXMgdW5pcXVlLgorICAgICAgICBUU3RyaW5nIG5hbWU7CisKKyAgICAgICAgLy8gZnVu
Y3Rpb25zIHRoYXQgYXJlIGRpcmVjdGx5IGNhbGxlZCBieSB0aGlzIGZ1bmN0aW9uLgorICAgICAg
ICBUVmVjdG9yPEZ1bmN0aW9uTm9kZSo+IGNhbGxlZXM7CisKKyAgICAgICAgVmlzaXQgdmlzaXQ7
CisgICAgfTsKKworICAgIEVycm9yQ29kZSBkZXRlY3RDYWxsRGVwdGhGb3JGdW5jdGlvbihGdW5j
dGlvbk5vZGUqIGZ1bmMpOworICAgIEZ1bmN0aW9uTm9kZSogZmluZEZ1bmN0aW9uQnlOYW1lKGNv
bnN0IFRTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgcmVzZXRGdW5jdGlvbk5vZGVzKCk7CisKKyAg
ICBUSW5mb1NpbmsmIGdldEluZm9TaW5rKCkgeyByZXR1cm4gaW5mb1Npbms7IH0KKworICAgIFRW
ZWN0b3I8RnVuY3Rpb25Ob2RlKj4gZnVuY3Rpb25zOworICAgIEZ1bmN0aW9uTm9kZSogY3VycmVu
dEZ1bmN0aW9uOworICAgIFRJbmZvU2luayYgaW5mb1Npbms7CisgICAgaW50IG1heERlcHRoOwor
CisgICAgRGV0ZWN0Q2FsbERlcHRoKGNvbnN0IERldGVjdENhbGxEZXB0aCYpOworICAgIHZvaWQg
b3BlcmF0b3I9KGNvbnN0IERldGVjdENhbGxEZXB0aCYpOworfTsKKworI2VuZGlmICAvLyBDT01Q
SUxFUl9ERVRFQ1RfUkVDVVJTSU9OX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmNwcAkocmV2aXNpb24g
MTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJl
Y3Vyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTI1ICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KLS8vCi0KLSNpbmNsdWRlICJjb21waWxlci9EZXRlY3RSZWN1cnNpb24uaCIKLQotRGV0ZWN0
UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZShjb25zdCBUU3RyaW5nJiBmbmFt
ZSkKLSAgICA6IG5hbWUoZm5hbWUpLAotICAgICAgdmlzaXQoUHJlVmlzaXQpCi17Ci19Ci0KLWNv
bnN0IFRTdHJpbmcmIERldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlOjpnZXROYW1lKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbmFtZTsKLX0KLQotdm9pZCBEZXRlY3RSZWN1cnNpb246OkZ1bmN0
aW9uTm9kZTo6YWRkQ2FsbGVlKAotICAgIERldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlKiBj
YWxsZWUpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGlmIChjYWxsZWVzW2ldID09IGNhbGxlZSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FsbGVlcy5wdXNoX2JhY2soY2FsbGVlKTsKLX0KLQotYm9vbCBEZXRl
Y3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6ZGV0ZWN0UmVjdXJzaW9uKCkKLXsKLSAgICBBU1NF
UlQodmlzaXQgPT0gUHJlVmlzaXQpOwotICAgIHZpc2l0ID0gSW5WaXNpdDsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNhbGxlZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgc3dpdGNoIChj
YWxsZWVzW2ldLT52aXNpdCkgewotICAgICAgICAgICAgY2FzZSBJblZpc2l0OgotICAgICAgICAg
ICAgICAgIC8vIGN5Y2xlIGRldGVjdGVkLCBpLmUuLCByZWN1cnNpb24gZGV0ZWN0ZWQuCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBjYXNlIFBvc3RWaXNpdDoKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUHJlVmlzaXQ6IHsKLSAgICAg
ICAgICAgICAgICBib29sIHJlY3Vyc2lvbiA9IGNhbGxlZXNbaV0tPmRldGVjdFJlY3Vyc2lvbigp
OwotICAgICAgICAgICAgICAgIGlmIChyZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIHZpc2l0ID0gUG9zdFZpc2l0Owot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotRGV0ZWN0UmVjdXJzaW9uOjpEZXRlY3RSZWN1cnNpb24o
KQotICAgIDogY3VycmVudEZ1bmN0aW9uKE5VTEwpCi17Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6
fkRldGVjdFJlY3Vyc2lvbigpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlv
bnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGRlbGV0ZSBmdW5jdGlvbnNbaV07Ci19Ci0KLWJvb2wg
RGV0ZWN0UmVjdXJzaW9uOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3Jl
Z2F0ZSogbm9kZSkKLXsKLSAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCi0gICAgewotICAgICAg
ICBjYXNlIEVPcFByb3RvdHlwZToKLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9u
LgotICAgICAgICAgICAgLy8gRG9uJ3QgYWRkIEZ1bmN0aW9uTm9kZSBoZXJlIGJlY2F1c2Ugbm9k
ZS0+Z2V0TmFtZSgpIGlzIHRoZQotICAgICAgICAgICAgLy8gdW5tYW5nbGVkIGZ1bmN0aW9uIG5h
bWUuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFT3BGdW5jdGlvbjogewotICAg
ICAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbi4KLSAgICAgICAgICAgIGlmICh2aXNpdCA9
PSBQcmVWaXNpdCkgewotICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbiA9IGZpbmRGdW5j
dGlvbkJ5TmFtZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgIGlmIChjdXJyZW50
RnVuY3Rpb24gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24g
PSBuZXcgRnVuY3Rpb25Ob2RlKG5vZGUtPmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9ucy5wdXNoX2JhY2soY3VycmVudEZ1bmN0aW9uKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIEVPcEZ1bmN0aW9uQ2FsbDogewotICAgICAgICAgICAgLy8gRnVuY3Rpb24gY2FsbC4KLSAg
ICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkgewotICAgICAgICAgICAgICAgIEFTU0VS
VChjdXJyZW50RnVuY3Rpb24gIT0gTlVMTCk7Ci0gICAgICAgICAgICAgICAgRnVuY3Rpb25Ob2Rl
KiBmdW5jID0gZmluZEZ1bmN0aW9uQnlOYW1lKG5vZGUtPmdldE5hbWUoKSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBmdW5jID0gbmV3
IEZ1bmN0aW9uTm9kZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbnMucHVzaF9iYWNrKGZ1bmMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBjdXJyZW50RnVuY3Rpb24tPmFkZENhbGxlZShmdW5jKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLURldGVjdFJlY3Vyc2lvbjo6RXJy
b3JDb2RlIERldGVjdFJlY3Vyc2lvbjo6ZGV0ZWN0UmVjdXJzaW9uKCkKLXsKLSAgICBGdW5jdGlv
bk5vZGUqIG1haW4gPSBmaW5kRnVuY3Rpb25CeU5hbWUoIm1haW4oIik7Ci0gICAgaWYgKG1haW4g
PT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIGtFcnJvck1pc3NpbmdNYWluOwotICAgIGlmIChtYWlu
LT5kZXRlY3RSZWN1cnNpb24oKSkKLSAgICAgICAgcmV0dXJuIGtFcnJvclJlY3Vyc2lvbjsKLSAg
ICByZXR1cm4ga0Vycm9yTm9uZTsKLX0KLQotRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGUq
IERldGVjdFJlY3Vyc2lvbjo6ZmluZEZ1bmN0aW9uQnlOYW1lKAotICAgIGNvbnN0IFRTdHJpbmcm
IG5hbWUpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uc1tpXS0+Z2V0TmFtZSgpID09IG5hbWUpCi0gICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb25zW2ldOwotICAgIH0KLSAgICByZXR1cm4gTlVMTDsKLX0K
LQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vy
c2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9EZXRlY3RSZWN1cnNpb24uaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpZm5kZWYgQ09NUElMRVJfREVU
RUNUX1JFQ1VSU0lPTl9IXwotI2RlZmluZSBDT01QSUxFUl9ERVRFQ1RfUkVDVVJTSU9OX0hfCi0K
LSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKLQotI2luY2x1ZGUgImNvbXBpbGVyL2lu
dGVybWVkaWF0ZS5oIgotI2luY2x1ZGUgImNvbXBpbGVyL1ZhcmlhYmxlSW5mby5oIgotCi0vLyBU
cmF2ZXJzZXMgaW50ZXJtZWRpYXRlIHRyZWUgdG8gZGV0ZWN0IGZ1bmN0aW9uIHJlY3Vyc2lvbi4K
LWNsYXNzIERldGVjdFJlY3Vyc2lvbiA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyIHsKLXB1Ymxp
YzoKLSAgICBlbnVtIEVycm9yQ29kZSB7Ci0gICAgICAgIGtFcnJvck1pc3NpbmdNYWluLAotICAg
ICAgICBrRXJyb3JSZWN1cnNpb24sCi0gICAgICAgIGtFcnJvck5vbmUKLSAgICB9OwotCi0gICAg
RGV0ZWN0UmVjdXJzaW9uKCk7Ci0gICAgfkRldGVjdFJlY3Vyc2lvbigpOwotCi0gICAgdmlydHVh
bCBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlKik7Ci0KLSAgICBF
cnJvckNvZGUgZGV0ZWN0UmVjdXJzaW9uKCk7Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3MgRnVuY3Rp
b25Ob2RlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uTm9kZShjb25zdCBUU3RyaW5n
JiBmbmFtZSk7Ci0KLSAgICAgICAgY29uc3QgVFN0cmluZyYgZ2V0TmFtZSgpIGNvbnN0OwotCi0g
ICAgICAgIC8vIElmIGEgZnVuY3Rpb24gaXMgYWxyZWFkeSBpbiB0aGUgY2FsbGVlIGxpc3QsIHRo
aXMgYmVjb21lcyBhIG5vLW9wLgotICAgICAgICB2b2lkIGFkZENhbGxlZShGdW5jdGlvbk5vZGUq
IGNhbGxlZSk7Ci0KLSAgICAgICAgLy8gUmV0dXJuIHRydWUgaWYgcmVjdXJzaXZlIGZ1bmN0aW9u
IGNhbGxzIGFyZSBkZXRlY3RlZC4KLSAgICAgICAgYm9vbCBkZXRlY3RSZWN1cnNpb24oKTsKLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIG1hbmdsZWQgZnVuY3Rpb24gbmFtZSBpcyB1bmlxdWUu
Ci0gICAgICAgIFRTdHJpbmcgbmFtZTsKLQotICAgICAgICAvLyBmdW5jdGlvbnMgdGhhdCBhcmUg
ZGlyZWN0bHkgY2FsbGVkIGJ5IHRoaXMgZnVuY3Rpb24uCi0gICAgICAgIFRWZWN0b3I8RnVuY3Rp
b25Ob2RlKj4gY2FsbGVlczsKLQotICAgICAgICBWaXNpdCB2aXNpdDsKLSAgICB9OwotCi0gICAg
RnVuY3Rpb25Ob2RlKiBmaW5kRnVuY3Rpb25CeU5hbWUoY29uc3QgVFN0cmluZyYgbmFtZSk7Ci0K
LSAgICBUVmVjdG9yPEZ1bmN0aW9uTm9kZSo+IGZ1bmN0aW9uczsKLSAgICBGdW5jdGlvbk5vZGUq
IGN1cnJlbnRGdW5jdGlvbjsKLX07Ci0KLSNlbmRpZiAgLy8gQ09NUElMRVJfREVURUNUX1JFQ1VS
U0lPTl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpYWdu
b3N0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvRGlhZ25vc3RpY3MuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGlhZ25vc3RpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw3ICs0Niw3IEBAIHZvaWQgVERpYWdub3N0aWNzOjp3cml0ZUluZm8oU2V2ZXJpdHkgc2UK
ICAgICBUSW5mb1NpbmtCYXNlJiBzaW5rID0gbUluZm9TaW5rLmluZm87CiAgICAgLyogVkMrKyBm
b3JtYXQ6IGZpbGUobGluZW51bSkgOiBlcnJvciAjOiAndG9rZW4nIDogZXh0cmFpbmZvICovCiAg
ICAgc2luay5wcmVmaXgocHJlZml4KTsKLSAgICBzaW5rLmxvY2F0aW9uKEVuY29kZVNvdXJjZUxv
Yyhsb2MuZmlsZSwgbG9jLmxpbmUpKTsKKyAgICBzaW5rLmxvY2F0aW9uKGxvYy5maWxlLCBsb2Mu
bGluZSk7CiAgICAgc2luayA8PCAiJyIgPDwgdG9rZW4gPDwgICInIDogIiA8PCByZWFzb24gPDwg
IiAiIDw8IGV4dHJhIDw8ICJcbiI7CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAJKHJldmlzaW9uIDE1
Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Gb3JMb29wVW5y
b2xsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQg
KGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjEwLDYgKzIxMCw2IEBAIGludCBGb3JMb29wVW5yb2xs
OjpnZXRMb29wSW5jcmVtZW50KFRJbnQKIGludCBGb3JMb29wVW5yb2xsOjpldmFsdWF0ZUludENv
bnN0YW50KFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2RlKQogewogICAgIEFTU0VSVCgobm9kZSAh
PSBOVUxMKSAmJiAobm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSAhPSBOVUxMKSk7Ci0gICAg
cmV0dXJuIG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpOworICAgIHJl
dHVybiBub2RlLT5nZXRJQ29uc3QoMCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmNwcAkocmV2aXNpb24gMTUyOTc5KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5r
LmgiCiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6cHJlZml4KFRQcmVmaXhUeXBlIG1lc3NhZ2UpIHsK
LSAgICBzd2l0Y2gobWVzc2FnZSkgewordm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoVFByZWZp
eFR5cGUgcCkgeworICAgIHN3aXRjaChwKSB7CiAgICAgICAgIGNhc2UgRVByZWZpeE5vbmU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFUHJlZml4V2FybmluZzoKQEAgLTMxLDI5
ICszMSwyNCBAQCB2b2lkIFRJbmZvU2lua0Jhc2U6OnByZWZpeChUUHJlZml4VHlwZSBtCiAgICAg
fQogfQogCi12b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9uKFRTb3VyY2VMb2MgbG9jKSB7Ci0g
ICAgaW50IHN0cmluZyA9IDAsIGxpbmUgPSAwOwotICAgIERlY29kZVNvdXJjZUxvYyhsb2MsICZz
dHJpbmcsICZsaW5lKTsKLQordm9pZCBUSW5mb1NpbmtCYXNlOjpsb2NhdGlvbihpbnQgZmlsZSwg
aW50IGxpbmUpIHsKICAgICBUUGVyc2lzdFN0cmluZ1N0cmVhbSBzdHJlYW07CiAgICAgaWYgKGxp
bmUpCi0gICAgICAgIHN0cmVhbSA8PCBzdHJpbmcgPDwgIjoiIDw8IGxpbmU7CisgICAgICAgIHN0
cmVhbSA8PCBmaWxlIDw8ICI6IiA8PCBsaW5lOwogICAgIGVsc2UKLSAgICAgICAgc3RyZWFtIDw8
IHN0cmluZyA8PCAiOj8gIjsKKyAgICAgICAgc3RyZWFtIDw8IGZpbGUgPDwgIjo/ICI7CiAgICAg
c3RyZWFtIDw8ICI6ICI7CiAKICAgICBzaW5rLmFwcGVuZChzdHJlYW0uc3RyKCkpOwogfQogCi12
b2lkIFRJbmZvU2lua0Jhc2U6Om1lc3NhZ2UoVFByZWZpeFR5cGUgbWVzc2FnZSwgY29uc3QgY2hh
ciogcykgewotICAgIHByZWZpeChtZXNzYWdlKTsKLSAgICBzaW5rLmFwcGVuZChzKTsKLSAgICBz
aW5rLmFwcGVuZCgiXG4iKTsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6bG9jYXRpb24oY29uc3QgVFNv
dXJjZUxvYyYgbG9jKSB7CisgICAgbG9jYXRpb24obG9jLmZpcnN0X2ZpbGUsIGxvYy5maXJzdF9s
aW5lKTsKIH0KIAotdm9pZCBUSW5mb1NpbmtCYXNlOjptZXNzYWdlKFRQcmVmaXhUeXBlIG1lc3Nh
Z2UsIGNvbnN0IGNoYXIqIHMsIFRTb3VyY2VMb2MgbG9jKSB7Ci0gICAgcHJlZml4KG1lc3NhZ2Up
Owordm9pZCBUSW5mb1NpbmtCYXNlOjptZXNzYWdlKFRQcmVmaXhUeXBlIHAsIGNvbnN0IFRTb3Vy
Y2VMb2MmIGxvYywgY29uc3QgY2hhciogbSkgeworICAgIHByZWZpeChwKTsKICAgICBsb2NhdGlv
bihsb2MpOwotICAgIHNpbmsuYXBwZW5kKHMpOworICAgIHNpbmsuYXBwZW5kKG0pOwogICAgIHNp
bmsuYXBwZW5kKCJcbiIpOwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0luZm9TaW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0luZm9TaW5rLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5oCSh3b3JraW5nIGNvcHkpCkBAIC05
NiwxMCArOTYsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFRQZXJzaXN0U3RyaW5nJiBzdHIoKSBj
b25zdCB7IHJldHVybiBzaW5rOyB9CiAgICAgY29uc3QgY2hhciogY19zdHIoKSBjb25zdCB7IHJl
dHVybiBzaW5rLmNfc3RyKCk7IH0KIAotICAgIHZvaWQgcHJlZml4KFRQcmVmaXhUeXBlIG1lc3Nh
Z2UpOwotICAgIHZvaWQgbG9jYXRpb24oVFNvdXJjZUxvYyBsb2MpOwotICAgIHZvaWQgbWVzc2Fn
ZShUUHJlZml4VHlwZSBtZXNzYWdlLCBjb25zdCBjaGFyKiBzKTsKLSAgICB2b2lkIG1lc3NhZ2Uo
VFByZWZpeFR5cGUgbWVzc2FnZSwgY29uc3QgY2hhciogcywgVFNvdXJjZUxvYyBsb2MpOworICAg
IHZvaWQgcHJlZml4KFRQcmVmaXhUeXBlIHApOworICAgIHZvaWQgbG9jYXRpb24oaW50IGZpbGUs
IGludCBsaW5lKTsKKyAgICB2b2lkIGxvY2F0aW9uKGNvbnN0IFRTb3VyY2VMb2MmIGxvYyk7Cisg
ICAgdm9pZCBtZXNzYWdlKFRQcmVmaXhUeXBlIHAsIGNvbnN0IFRTb3VyY2VMb2MmIGxvYywgY29u
c3QgY2hhciogbSk7CiAKIHByaXZhdGU6CiAgICAgVFBlcnNpc3RTdHJpbmcgc2luazsKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6
ZS5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9Jbml0aWFsaXplLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8v
Ci0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
IC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTQsNTEzICsxNCw0MTMgQEAK
IAogI2luY2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5oIgogCi0vLz09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS8vCi0vLyBQcm90b3R5cGVzIGZvciBidWlsdC1pbiBmdW5jdGlvbnMgc2VlbiBieSBi
b3RoIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycy4KLS8vCi0vLz09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLXN0YXRpYyBUU3RyaW5nIEJ1aWx0SW5GdW5jdGlvbnNDb21tb24oY29uc3QgU2hCdWlsdElu
UmVzb3VyY2VzJiByZXNvdXJjZXMpCit2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnMoU2hTaGFk
ZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMg
JnJlc291cmNlcywgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSkKIHsKLSAgICBUU3RyaW5nIHM7
CisgICAgVFR5cGUgKmZsb2F0MSA9IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEpOworICAgIFRUeXBlICpmbG9hdDIgPSBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAyKTsKKyAgICBUVHlwZSAqZmxvYXQzID0gbmV3IFRUeXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMyk7CisgICAgVFR5cGUgKmZsb2F0
NCA9IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQpOworCisg
ICAgVFR5cGUgKmludDIgPSBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgMik7CisgICAgVFR5cGUgKmludDMgPSBuZXcgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMyk7CisgICAgVFR5cGUgKmludDQgPSBuZXcgVFR5cGUoRWJ0SW50LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgNCk7CiAKICAgICAvLwogICAgIC8vIEFuZ2xlIGFuZCBUcmln
b25vbWV0cmljIEZ1bmN0aW9ucy4KICAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0
IHJhZGlhbnMoZmxvYXQgZGVncmVlcyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IHJhZGlhbnModmVjMiAgZGVncmVlcyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMg
IHJhZGlhbnModmVjMyAgZGVncmVlcyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
IHJhZGlhbnModmVjNCAgZGVncmVlcyk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxv
YXQgZGVncmVlcyhmbG9hdCByYWRpYW5zKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MiAgZGVncmVlcyh2ZWMyICByYWRpYW5zKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgZGVncmVlcyh2ZWMzICByYWRpYW5zKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
NCAgZGVncmVlcyh2ZWM0ICByYWRpYW5zKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJm
bG9hdCBzaW4oZmxvYXQgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBz
aW4odmVjMiAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBzaW4odmVj
MyAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzaW4odmVjNCAgYW5n
bGUpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGNvcyhmbG9hdCBhbmdsZSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGNvcyh2ZWMyICBhbmdsZSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGNvcyh2ZWMzICBhbmdsZSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzQgIGNvcyh2ZWM0ICBhbmdsZSk7IikpOwotCi0gICAgcy5hcHBl
bmQoVFN0cmluZygiZmxvYXQgdGFuKGZsb2F0IGFuZ2xlKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMiAgdGFuKHZlYzIgIGFuZ2xlKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgdGFuKHZlYzMgIGFuZ2xlKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAg
dGFuKHZlYzQgIGFuZ2xlKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhc2lu
KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhc2luKHZlYzIgIHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhc2luKHZlYzMgIHgpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhc2luKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImZsb2F0IGFjb3MoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzIgIGFjb3ModmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMg
IGFjb3ModmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGFjb3ModmVj
NCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYXRhbihmbG9hdCB5LCBm
bG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgYXRhbih2ZWMyICB5LCB2
ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgYXRhbih2ZWMzICB5LCB2
ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgYXRhbih2ZWM0ICB5LCB2
ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhdGFuKGZsb2F0IHlf
b3Zlcl94KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgYXRhbih2ZWMyICB5X292
ZXJfeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGF0YW4odmVjMyAgeV9vdmVy
X3gpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhdGFuKHZlYzQgIHlfb3Zlcl94
KTsiKSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJyYWRpYW5zIiwg
ZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgInJhZGlhbnMi
LCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAicmFkaWFu
cyIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJyYWRp
YW5zIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAi
ZGVncmVlcyIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIs
ICJkZWdyZWVzIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0
MywgImRlZ3JlZXMiLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQ0LCAiZGVncmVlcyIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0MSwgInNpbiIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDIsICJzaW4iLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQzLCAic2luIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0
NCwgInNpbiIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0
MSwgImNvcyIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIs
ICJjb3MiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAi
Y29zIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImNv
cyIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgInRh
biIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJ0YW4i
LCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAidGFuIiwg
ZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRhbiIsIGZs
b2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImFzaW4iLCBm
bG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAiYXNpbiIsIGZs
b2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJhc2luIiwgZmxv
YXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImFzaW4iLCBmbG9h
dDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJhY29zIiwgZmxv
YXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImFjb3MiLCBmbG9h
dDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiYWNvcyIsIGZsb2F0
Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJhY29zIiwgZmxvYXQ0
KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiYXRhbiIsIGZsb2F0
MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImF0YW4i
LCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMs
ICJhdGFuIiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQ0LCAiYXRhbiIsIGZsb2F0NCwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQxLCAiYXRhbiIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihmbG9hdDIsICJhdGFuIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0MywgImF0YW4iLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQ0LCAiYXRhbiIsIGZsb2F0NCk7CiAKICAgICAvLwogICAgIC8vIEV4cG9uZW50
aWFsIEZ1bmN0aW9ucy4KICAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHBvdyhm
bG9hdCB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgcG93KHZl
YzIgIHgsIHZlYzIgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBwb3codmVj
MyAgeCwgdmVjMyAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHBvdyh2ZWM0
ICB4LCB2ZWM0ICB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBleHAoZmxv
YXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGV4cCh2ZWMyICB4KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZXhwKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0ICBleHAodmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0
cmluZygiZmxvYXQgbG9nKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMy
ICBsb2codmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGxvZyh2ZWMz
ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbG9nKHZlYzQgIHgpOyIpKTsK
LQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGV4cDIoZmxvYXQgeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIGV4cDIodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzMgIGV4cDIodmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgIGV4cDIodmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbG9n
MihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbG9nMih2ZWMyICB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbG9nMih2ZWMzICB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbG9nMih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJmbG9hdCBzcXJ0KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMyICBzcXJ0KHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
ICBzcXJ0KHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBzcXJ0KHZl
YzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGludmVyc2VzcXJ0KGZs
b2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBpbnZlcnNlc3FydCh2ZWMy
ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgaW52ZXJzZXNxcnQodmVjMyAg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGludmVyc2VzcXJ0KHZlYzQgIHgp
OyIpKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgInBvdyIsIGZsb2F0
MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgInBvdyIs
IGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0Mywg
InBvdyIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0NCwgInBvdyIsIGZsb2F0NCwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQxLCAiZXhwIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0MiwgImV4cCIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDMsICJleHAiLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQ0LCAiZXhwIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQxLCAibG9nIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MiwgImxvZyIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDMsICJsb2ciLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0
LCAibG9nIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQx
LCAiZXhwMiIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIs
ICJleHAyIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0Mywg
ImV4cDIiLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAi
ZXhwMiIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwg
ImxvZzIiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAi
bG9nMiIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJs
b2cyIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImxv
ZzIiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJz
cXJ0IiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgInNx
cnQiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAic3Fy
dCIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJzcXJ0
IiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiaW52
ZXJzZXNxcnQiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQy
LCAiaW52ZXJzZXNxcnQiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQzLCAiaW52ZXJzZXNxcnQiLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQ0LCAiaW52ZXJzZXNxcnQiLCBmbG9hdDQpOwogCiAgICAgLy8KICAgICAvLyBD
b21tb24gRnVuY3Rpb25zLgogICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYWJz
KGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhYnModmVjMiAgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGFicyh2ZWMzICB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjNCAgYWJzKHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IHNpZ24oZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzIgIHNpZ24odmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHNp
Z24odmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHNpZ24odmVjNCAg
eCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZmxvb3IoZmxvYXQgeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGZsb29yKHZlYzIgIHgpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBmbG9vcih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgZmxvb3IodmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiZmxvYXQgY2VpbChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAg
Y2VpbCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgY2VpbCh2ZWMz
ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgY2VpbCh2ZWM0ICB4KTsiKSk7
Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBmcmFjdChmbG9hdCB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMiAgZnJhY3QodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzMgIGZyYWN0KHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWM0ICBmcmFjdCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCBtb2QoZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IG1vZCh2ZWMyICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAg
bW9kKHZlYzMgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBt
b2QodmVjNCAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1v
ZCh2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbW9k
KHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtb2Qo
dmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbWlu
KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtaW4o
dmVjMiAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1pbih2
ZWMzICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWluKHZl
YzQgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtaW4odmVj
MiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1pbih2ZWMz
ICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWluKHZlYzQg
IHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG1heChmbG9h
dCB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbWF4KHZlYzIg
IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtYXgodmVjMyAg
eCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1heCh2ZWM0ICB4
LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbWF4KHZlYzIgIHgs
IHZlYzIgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBtYXgodmVjMyAgeCwg
dmVjMyAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG1heCh2ZWM0ICB4LCB2
ZWM0ICB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBjbGFtcChmbG9hdCB4
LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzIgIGNsYW1wKHZlYzIgIHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4VmFsKTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgY2xhbXAodmVjMyAgeCwgZmxvYXQgbWluVmFsLCBm
bG9hdCBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBjbGFtcCh2ZWM0
ICB4LCBmbG9hdCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzIgIGNsYW1wKHZlYzIgIHgsIHZlYzIgIG1pblZhbCwgdmVjMiAgbWF4VmFsKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgY2xhbXAodmVjMyAgeCwgdmVjMyAgbWluVmFs
LCB2ZWMzICBtYXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBjbGFtcCh2
ZWM0ICB4LCB2ZWM0ICBtaW5WYWwsIHZlYzQgIG1heFZhbCk7IikpOwotCi0gICAgcy5hcHBlbmQo
VFN0cmluZygiZmxvYXQgbWl4KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IGEpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtaXgodmVjMiAgeCwgdmVjMiAgeSwgZmxvYXQgYSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1peCh2ZWMzICB4LCB2ZWMzICB5LCBmbG9h
dCBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWl4KHZlYzQgIHgsIHZlYzQg
IHksIGZsb2F0IGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtaXgodmVjMiAg
eCwgdmVjMiAgeSwgdmVjMiAgYSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1p
eCh2ZWMzICB4LCB2ZWMzICB5LCB2ZWMzICBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgbWl4KHZlYzQgIHgsIHZlYzQgIHksIHZlYzQgIGEpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IHN0ZXAoZmxvYXQgZWRnZSwgZmxvYXQgeCk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzIgIHN0ZXAodmVjMiAgZWRnZSwgdmVjMiAgeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzMgIHN0ZXAodmVjMyAgZWRnZSwgdmVjMyAgeCk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHN0ZXAodmVjNCAgZWRnZSwgdmVjNCAgeCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHN0ZXAoZmxvYXQgZWRnZSwgdmVjMiAgeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHN0ZXAoZmxvYXQgZWRnZSwgdmVjMyAgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHN0ZXAoZmxvYXQgZWRnZSwgdmVjNCAg
eCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc21vb3Roc3RlcChmbG9hdCBl
ZGdlMCwgZmxvYXQgZWRnZTEsIGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMyICBzbW9vdGhzdGVwKHZlYzIgIGVkZ2UwLCB2ZWMyICBlZGdlMSwgdmVjMiAgeCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHNtb290aHN0ZXAodmVjMyAgZWRnZTAsIHZlYzMg
IGVkZ2UxLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc21vb3Ro
c3RlcCh2ZWM0ICBlZGdlMCwgdmVjNCAgZWRnZTEsIHZlYzQgIHgpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMyICBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgdmVj
MiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHNtb290aHN0ZXAoZmxvYXQg
ZWRnZTAsIGZsb2F0IGVkZ2UxLCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgc21vb3Roc3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIHZlYzQgIHgpOyIpKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImFicyIsIGZsb2F0MSk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJhYnMiLCBmbG9hdDIpOworICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiYWJzIiwgZmxvYXQzKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImFicyIsIGZsb2F0NCk7CisKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgInNpZ24iLCBmbG9hdDEpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAic2lnbiIsIGZsb2F0Mik7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJzaWduIiwgZmxvYXQzKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInNpZ24iLCBmbG9hdDQpOworCisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJmbG9vciIsIGZsb2F0MSk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJmbG9vciIsIGZsb2F0Mik7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJmbG9vciIsIGZsb2F0Myk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJmbG9vciIsIGZsb2F0NCk7CisKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImNlaWwiLCBmbG9hdDEpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAiY2VpbCIsIGZsb2F0Mik7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJjZWlsIiwgZmxvYXQzKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImNlaWwiLCBmbG9hdDQpOworCisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJmcmFjdCIsIGZsb2F0MSk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJmcmFjdCIsIGZsb2F0Mik7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJmcmFjdCIsIGZsb2F0Myk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJmcmFjdCIsIGZsb2F0NCk7CisKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgIm1vZCIsIGZsb2F0MSwgZmxvYXQxKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgIm1vZCIsIGZsb2F0MiwgZmxv
YXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgIm1vZCIsIGZsb2F0
MywgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgIm1vZCIs
IGZsb2F0NCwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0Miwg
Im1vZCIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MywgIm1vZCIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0NCwgIm1vZCIsIGZsb2F0NCwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQxLCAibWluIiwgZmxvYXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAibWluIiwgZmxvYXQyLCBmbG9hdDEpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAibWluIiwgZmxvYXQzLCBmbG9hdDEpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAibWluIiwgZmxvYXQ0LCBmbG9h
dDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAibWluIiwgZmxvYXQy
LCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAibWluIiwg
ZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAi
bWluIiwgZmxvYXQ0LCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDEsICJtYXgiLCBmbG9hdDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDIsICJtYXgiLCBmbG9hdDIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDMsICJtYXgiLCBmbG9hdDMsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJtYXgiLCBmbG9hdDQsIGZsb2F0MSk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJtYXgiLCBmbG9hdDIsIGZsb2F0Mik7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJtYXgiLCBmbG9hdDMsIGZsb2F0
Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJtYXgiLCBmbG9hdDQs
IGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImNsYW1w
IiwgZmxvYXQxLCBmbG9hdDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDIsICJjbGFtcCIsIGZsb2F0MiwgZmxvYXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiY2xhbXAiLCBmbG9hdDMsIGZsb2F0MSwgZmxvYXQx
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImNsYW1wIiwgZmxvYXQ0
LCBmbG9hdDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIs
ICJjbGFtcCIsIGZsb2F0MiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQzLCAiY2xhbXAiLCBmbG9hdDMsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImNsYW1wIiwgZmxvYXQ0LCBmbG9hdDQs
IGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgIm1peCIs
IGZsb2F0MSwgZmxvYXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQyLCAibWl4IiwgZmxvYXQyLCBmbG9hdDIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihmbG9hdDMsICJtaXgiLCBmbG9hdDMsIGZsb2F0MywgZmxvYXQxKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgIm1peCIsIGZsb2F0NCwgZmxvYXQ0
LCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAibWl4Iiwg
ZmxvYXQyLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDMsICJtaXgiLCBmbG9hdDMsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0NCwgIm1peCIsIGZsb2F0NCwgZmxvYXQ0LCBmbG9hdDQpOworCisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJzdGVwIiwgZmxvYXQxLCBmbG9h
dDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAic3RlcCIsIGZsb2F0
MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgInN0ZXAi
LCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQs
ICJzdGVwIiwgZmxvYXQ0LCBmbG9hdDQpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQyLCAic3RlcCIsIGZsb2F0MSwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0MywgInN0ZXAiLCBmbG9hdDEsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihmbG9hdDQsICJzdGVwIiwgZmxvYXQxLCBmbG9hdDQpOworCisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJzbW9vdGhzdGVwIiwgZmxvYXQxLCBmbG9h
dDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJzbW9v
dGhzdGVwIiwgZmxvYXQyLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihmbG9hdDMsICJzbW9vdGhzdGVwIiwgZmxvYXQzLCBmbG9hdDMsIGZsb2F0Myk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJzbW9vdGhzdGVwIiwgZmxvYXQ0
LCBmbG9hdDQsIGZsb2F0NCk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIs
ICJzbW9vdGhzdGVwIiwgZmxvYXQxLCBmbG9hdDEsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihmbG9hdDMsICJzbW9vdGhzdGVwIiwgZmxvYXQxLCBmbG9hdDEsIGZsb2F0
Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJzbW9vdGhzdGVwIiwg
ZmxvYXQxLCBmbG9hdDEsIGZsb2F0NCk7CiAKICAgICAvLwogICAgIC8vIEdlb21ldHJpYyBGdW5j
dGlvbnMuCiAgICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsZW5ndGgoZmxvYXQg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2ZWMyICB4KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKHZlYzMgIHgpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsZW5ndGgodmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBl
bmQoVFN0cmluZygiZmxvYXQgZGlzdGFuY2UoZmxvYXQgcDAsIGZsb2F0IHAxKTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZGlzdGFuY2UodmVjMiAgcDAsIHZlYzIgIHAxKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZGlzdGFuY2UodmVjMyAgcDAsIHZlYzMgIHAx
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZGlzdGFuY2UodmVjNCAgcDAsIHZl
YzQgIHAxKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkb3QoZmxvYXQgeCwg
ZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRvdCh2ZWMyICB4LCB2
ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KHZlYzMgIHgsIHZl
YzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkb3QodmVjNCAgeCwgdmVj
NCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyBjcm9zcyh2ZWMzIHgsIHZl
YzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IG5vcm1hbGl6ZShmbG9hdCB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgbm9ybWFsaXplKHZlYzIgIHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBub3JtYWxpemUodmVjMyAgeCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIG5vcm1hbGl6ZSh2ZWM0ICB4KTsiKSk7Ci0KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBmYWNlZm9yd2FyZChmbG9hdCBOLCBmbG9hdCBJLCBm
bG9hdCBOcmVmKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZmFjZWZvcndhcmQo
dmVjMiAgTiwgdmVjMiAgSSwgdmVjMiAgTnJlZik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzMgIGZhY2Vmb3J3YXJkKHZlYzMgIE4sIHZlYzMgIEksIHZlYzMgIE5yZWYpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBmYWNlZm9yd2FyZCh2ZWM0ICBOLCB2ZWM0ICBJLCB2
ZWM0ICBOcmVmKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCByZWZsZWN0KGZs
b2F0IEksIGZsb2F0IE4pOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICByZWZsZWN0
KHZlYzIgIEksIHZlYzIgIE4pOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICByZWZs
ZWN0KHZlYzMgIEksIHZlYzMgIE4pOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBy
ZWZsZWN0KHZlYzQgIEksIHZlYzQgIE4pOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZs
b2F0IHJlZnJhY3QoZmxvYXQgSSwgZmxvYXQgTiwgZmxvYXQgZXRhKTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMiAgcmVmcmFjdCh2ZWMyICBJLCB2ZWMyICBOLCBmbG9hdCBldGEpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICByZWZyYWN0KHZlYzMgIEksIHZlYzMgIE4s
IGZsb2F0IGV0YSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHJlZnJhY3QodmVj
NCAgSSwgdmVjNCAgTiwgZmxvYXQgZXRhKTsiKSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDEsICJsZW5ndGgiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQxLCAibGVuZ3RoIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0MSwgImxlbmd0aCIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihmbG9hdDEsICJsZW5ndGgiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDEsICJkaXN0YW5jZSIsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImRpc3RhbmNlIiwgZmxvYXQyLCBmbG9hdDIp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZGlzdGFuY2UiLCBmbG9h
dDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJkaXN0
YW5jZSIsIGZsb2F0NCwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQxLCAiZG90IiwgZmxvYXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQxLCAiZG90IiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQxLCAiZG90IiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZG90IiwgZmxvYXQ0LCBmbG9hdDQpOworCisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJjcm9zcyIsIGZsb2F0MywgZmxvYXQz
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgIm5vcm1hbGl6ZSIsIGZs
b2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJub3JtYWxpemUi
LCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAibm9ybWFs
aXplIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgIm5v
cm1hbGl6ZSIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0
MSwgImZhY2Vmb3J3YXJkIiwgZmxvYXQxLCBmbG9hdDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJmYWNlZm9yd2FyZCIsIGZsb2F0MiwgZmxvYXQyLCBm
bG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiZmFjZWZvcndh
cmQiLCBmbG9hdDMsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0NCwgImZhY2Vmb3J3YXJkIiwgZmxvYXQ0LCBmbG9hdDQsIGZsb2F0NCk7CisKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgInJlZmxlY3QiLCBmbG9hdDEsIGZs
b2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJyZWZsZWN0Iiwg
ZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAi
cmVmbGVjdCIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0NCwgInJlZmxlY3QiLCBmbG9hdDQsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0MSwgInJlZnJhY3QiLCBmbG9hdDEsIGZsb2F0MSwgZmxvYXQxKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgInJlZnJhY3QiLCBmbG9hdDIs
IGZsb2F0MiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0Mywg
InJlZnJhY3QiLCBmbG9hdDMsIGZsb2F0MywgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0NCwgInJlZnJhY3QiLCBmbG9hdDQsIGZsb2F0NCwgZmxvYXQxKTsKKwor
ICAgIFRUeXBlICptYXQyID0gbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMiwgdHJ1ZSk7CisgICAgVFR5cGUgKm1hdDMgPSBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzLCB0cnVlKTsKKyAgICBUVHlwZSAqbWF0NCA9IG5ldyBU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDQsIHRydWUpOwogCiAgICAg
Ly8KICAgICAvLyBNYXRyaXggRnVuY3Rpb25zLgogICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmlu
ZygibWF0MiBtYXRyaXhDb21wTXVsdChtYXQyIHgsIG1hdDIgeSk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoIm1hdDMgbWF0cml4Q29tcE11bHQobWF0MyB4LCBtYXQzIHkpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJtYXQ0IG1hdHJpeENvbXBNdWx0KG1hdDQgeCwgbWF0NCB5KTsiKSk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihtYXQyLCAibWF0cml4Q29tcE11bHQiLCBt
YXQyLCBtYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKG1hdDMsICJtYXRyaXhD
b21wTXVsdCIsIG1hdDMsIG1hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4obWF0
NCwgIm1hdHJpeENvbXBNdWx0IiwgbWF0NCwgbWF0NCk7CisKKyAgICBUVHlwZSAqYm9vbDEgPSBu
ZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDEpOworICAgIFRUeXBl
ICpib29sMiA9IG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMik7
CisgICAgVFR5cGUgKmJvb2wzID0gbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAzKTsKKyAgICBUVHlwZSAqYm9vbDQgPSBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDQpOwogCiAgICAgLy8KICAgICAvLyBWZWN0b3IgcmVsYXRpb25h
bCBmdW5jdGlvbnMuCiAgICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhh
bih2ZWMyIHgsIHZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NU
aGFuKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbGVz
c1RoYW4odmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMy
IGxlc3NUaGFuKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJi
dmVjMyBsZXNzVGhhbihpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiYnZlYzQgbGVzc1RoYW4oaXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQo
VFN0cmluZygiYnZlYzIgbGVzc1RoYW5FcXVhbCh2ZWMyIHgsIHZlYzIgeSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuRXF1YWwodmVjMyB4LCB2ZWMzIHkpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbkVxdWFsKHZlYzQgeCwgdmVjNCB5
KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbkVxdWFsKGl2ZWMy
IHgsIGl2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBsZXNzVGhhbkVx
dWFsKGl2ZWMzIHgsIGl2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBs
ZXNzVGhhbkVxdWFsKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJ2ZWMyIGdyZWF0ZXJUaGFuKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygiYnZlYzMgZ3JlYXRlclRoYW4odmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJidmVjNCBncmVhdGVyVGhhbih2ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0g
ICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW4oaXZlYzIgeCwgaXZlYzIgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGdyZWF0ZXJUaGFuKGl2ZWMzIHgsIGl2
ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBncmVhdGVyVGhhbihpdmVj
NCB4LCBpdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBncmVhdGVy
VGhhbkVxdWFsKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZl
YzMgZ3JlYXRlclRoYW5FcXVhbCh2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFuRXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGdyZWF0ZXJUaGFuRXF1YWwoaXZlYzIgeCwgaXZlYzIg
eSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGdyZWF0ZXJUaGFuRXF1YWwoaXZl
YzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJU
aGFuRXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygi
YnZlYzIgZXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJi
dmVjMyBlcXVhbCh2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWM0IGVxdWFsKHZlYzQgeCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJi
dmVjMiBlcXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
YnZlYzMgZXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImJ2ZWM0IGVxdWFsKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJ2ZWMyIGVxdWFsKGJ2ZWMyIHgsIGJ2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJidmVjMyBlcXVhbChidmVjMyB4LCBidmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzQgZXF1YWwoYnZlYzQgeCwgYnZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQo
VFN0cmluZygiYnZlYzIgbm90RXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJidmVjMyBub3RFcXVhbCh2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoImJ2ZWM0IG5vdEVxdWFsKHZlYzQgeCwgdmVjNCB5KTsiKSk7Ci0KLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJidmVjMiBub3RFcXVhbChpdmVjMiB4LCBpdmVjMiB5KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbm90RXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IG5vdEVxdWFsKGl2ZWM0IHgsIGl2ZWM0IHkp
OyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdEVxdWFsKGJ2ZWMyIHgsIGJ2
ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBub3RFcXVhbChidmVjMyB4
LCBidmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1YWwoYnZl
YzQgeCwgYnZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYm9vbCBhbnkoYnZl
YzIgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYW55KGJ2ZWMzIHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFueShidmVjNCB4KTsiKSk7Ci0KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJib29sIGFsbChidmVjMiB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiYm9vbCBhbGwoYnZlYzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYWxs
KGJ2ZWM0IHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdChidmVjMiB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbm90KGJ2ZWMzIHgpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBub3QoYnZlYzQgeCk7IikpOwotCi0gICAgLy8KLSAg
ICAvLyBUZXh0dXJlIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgdGV4dHVyZTJEKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMyIGNvb3JkKTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMz
IGNvb3JkKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNh
bXBsZXIyRCBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCB0ZXh0dXJlQ3ViZShzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkKTsiKSk7Ci0K
LSAgICBpZiAocmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwpIHsKLSAgICAgICAgcy5h
cHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkQoc2FtcGxlckV4dGVybmFsT0VTIHNhbXBsZXIs
IHZlYzIgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJl
MkRQcm9qKHNhbXBsZXJFeHRlcm5hbE9FUyBzYW1wbGVyLCB2ZWMzIGNvb3JkKTsiKSk7Ci0gICAg
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvaihzYW1wbGVyRXh0ZXJuYWxP
RVMgc2FtcGxlciwgdmVjNCBjb29yZCk7IikpOwotICAgIH0KKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGJvb2wyLCAibGVzc1RoYW4iLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgImxlc3NUaGFuIiwgZmxvYXQzLCBmbG9hdDMpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDQsICJsZXNzVGhhbiIsIGZsb2F0NCwg
ZmxvYXQ0KTsKIAotICAgIGlmIChyZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFuZ2xlKSB7Ci0g
ICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUmVjdChzYW1wbGVyMkRSZWN0
IHNhbXBsZXIsIHZlYzIgY29vcmQpOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVj
NCB0ZXh0dXJlMkRSZWN0UHJvaihzYW1wbGVyMkRSZWN0IHNhbXBsZXIsIHZlYzMgY29vcmQpOyIp
KTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRSZWN0UHJvaihzYW1w
bGVyMkRSZWN0IHNhbXBsZXIsIHZlYzQgY29vcmQpOyIpKTsKLSAgICB9CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihib29sMiwgImxlc3NUaGFuIiwgaW50MiwgaW50Mik7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgImxlc3NUaGFuIiwgaW50MywgaW50Myk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwgImxlc3NUaGFuIiwgaW50NCwgaW50
NCk7CiAKLSAgICAvLwotICAgIC8vIE5vaXNlIGZ1bmN0aW9ucy4KLSAgICAvLwotICAgIC8vcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgbm9pc2UxKGZsb2F0IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IG5vaXNlMSh2ZWMyICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBub2lzZTEodmVjMyAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygi
ZmxvYXQgbm9pc2UxKHZlYzQgIHgpOyIpKTsKLQotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVj
MiBub2lzZTIoZmxvYXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjMiBub2lz
ZTIodmVjMiAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjMiBub2lzZTIodmVj
MyAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjMiBub2lzZTIodmVjNCAgeCk7
IikpOwotCi0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMzIG5vaXNlMyhmbG9hdCB4KTsiKSk7
Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMzIG5vaXNlMyh2ZWMyICB4KTsiKSk7Ci0gICAg
Ly9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMzIG5vaXNlMyh2ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFw
cGVuZChUU3RyaW5nKCJ2ZWMzIG5vaXNlMyh2ZWM0ICB4KTsiKSk7Ci0KLSAgICAvL3MuYXBwZW5k
KFRTdHJpbmcoInZlYzQgbm9pc2U0KGZsb2F0IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJp
bmcoInZlYzQgbm9pc2U0KHZlYzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZl
YzQgbm9pc2U0KHZlYzMgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzQgbm9p
c2U0KHZlYzQgIHgpOyIpKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAi
bGVzc1RoYW5FcXVhbCIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGJvb2wzLCAibGVzc1RoYW5FcXVhbCIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAibGVzc1RoYW5FcXVhbCIsIGZsb2F0NCwgZmxv
YXQ0KTsKIAotICAgIHJldHVybiBzOwotfQorICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
Ym9vbDIsICJsZXNzVGhhbkVxdWFsIiwgaW50MiwgaW50Mik7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihib29sMywgImxlc3NUaGFuRXF1YWwiLCBpbnQzLCBpbnQzKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAibGVzc1RoYW5FcXVhbCIsIGludDQsIGludDQp
OwogCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBQcm90b3R5cGVzIGZvciBidWlsdC1p
biBmdW5jdGlvbnMgc2VlbiBieSB2ZXJ0ZXggc2hhZGVycyBvbmx5LgotLy8KLS8vPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotc3RhdGljIFRTdHJpbmcgQnVpbHRJbkZ1bmN0aW9uc1ZlcnRleChjb25zdCBT
aEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcykKLXsKLSAgICBUU3RyaW5nIHM7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMiwgImdyZWF0ZXJUaGFuIiwgZmxvYXQyLCBmbG9h
dDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDMsICJncmVhdGVyVGhhbiIs
IGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAi
Z3JlYXRlclRoYW4iLCBmbG9hdDQsIGZsb2F0NCk7CiAKLSAgICAvLwotICAgIC8vIEdlb21ldHJp
YyBGdW5jdGlvbnMuCi0gICAgLy8KLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzQgZnRyYW5z
Zm9ybSgpOyIpKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAiZ3JlYXRl
clRoYW4iLCBpbnQyLCBpbnQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wz
LCAiZ3JlYXRlclRoYW4iLCBpbnQzLCBpbnQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGJvb2w0LCAiZ3JlYXRlclRoYW4iLCBpbnQ0LCBpbnQ0KTsKIAotICAgIC8vCi0gICAgLy8g
VGV4dHVyZSBGdW5jdGlvbnMuCi0gICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRl
eHR1cmUyRExvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVjMiBjb29yZCwgZmxvYXQgbG9kKTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qTG9kKHNhbXBsZXIyRCBz
YW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBsb2QpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWM0IHRleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzQgY29vcmQsIGZs
b2F0IGxvZCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZUN1YmVMb2Qo
c2FtcGxlckN1YmUgc2FtcGxlciwgdmVjMyBjb29yZCwgZmxvYXQgbG9kKTsiKSk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMiwgImdyZWF0ZXJUaGFuRXF1YWwiLCBmbG9hdDIs
IGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgImdyZWF0ZXJU
aGFuRXF1YWwiLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihib29sNCwgImdyZWF0ZXJUaGFuRXF1YWwiLCBmbG9hdDQsIGZsb2F0NCk7CiAKLSAgICByZXR1
cm4gczsKLX0KKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAiZ3JlYXRlclRo
YW5FcXVhbCIsIGludDIsIGludDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9v
bDMsICJncmVhdGVyVGhhbkVxdWFsIiwgaW50MywgaW50Myk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihib29sNCwgImdyZWF0ZXJUaGFuRXF1YWwiLCBpbnQ0LCBpbnQ0KTsKIAotLy89
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0vLwotLy8gUHJvdG90eXBlcyBmb3IgYnVpbHQtaW4gZnVuY3Rp
b25zIHNlZW4gYnkgZnJhZ21lbnQgc2hhZGVycyBvbmx5LgotLy8KLS8vPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotc3RhdGljIFRTdHJpbmcgQnVpbHRJbkZ1bmN0aW9uc0ZyYWdtZW50KGNvbnN0IFNoQnVp
bHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQotewotICAgIFRTdHJpbmcgczsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAiZXF1YWwiLCBmbG9hdDIsIGZsb2F0Mik7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgImVxdWFsIiwgZmxvYXQzLCBmbG9hdDMp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDQsICJlcXVhbCIsIGZsb2F0NCwg
ZmxvYXQ0KTsKIAotICAgIC8vCi0gICAgLy8gVGV4dHVyZSBGdW5jdGlvbnMuCi0gICAgLy8KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRChzYW1wbGVyMkQgc2FtcGxlciwgdmVj
MiBjb29yZCwgZmxvYXQgYmlhcyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4
dHVyZTJEUHJvaihzYW1wbGVyMkQgc2FtcGxlciwgdmVjMyBjb29yZCwgZmxvYXQgYmlhcyk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgc2Ft
cGxlciwgdmVjNCBjb29yZCwgZmxvYXQgYmlhcyk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzQgdGV4dHVyZUN1YmUoc2FtcGxlckN1YmUgc2FtcGxlciwgdmVjMyBjb29yZCwgZmxvYXQg
Ymlhcyk7IikpOwotCi0gICAgaWYgKHJlc291cmNlcy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMp
IHsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZEZkeChmbG9hdCBwKTsiKSk7Ci0g
ICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGRGZHgodmVjMiAgcCk7IikpOwotICAgICAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBkRmR4KHZlYzMgIHApOyIpKTsKLSAgICAgICAgcy5h
cHBlbmQoVFN0cmluZygidmVjNCAgZEZkeCh2ZWM0ICBwKTsiKSk7Ci0KLSAgICAgICAgcy5hcHBl
bmQoVFN0cmluZygiZmxvYXQgZEZkeShmbG9hdCBwKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzIgIGRGZHkodmVjMiAgcCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMzICBkRmR5KHZlYzMgIHApOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVj
NCAgZEZkeSh2ZWM0ICBwKTsiKSk7Ci0KLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQg
ZndpZHRoKGZsb2F0IHApOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZndp
ZHRoKHZlYzIgIHApOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZndpZHRo
KHZlYzMgIHApOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgZndpZHRoKHZl
YzQgIHApOyIpKTsKLSAgICB9CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMiwg
ImVxdWFsIiwgaW50MiwgaW50Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29s
MywgImVxdWFsIiwgaW50MywgaW50Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihi
b29sNCwgImVxdWFsIiwgaW50NCwgaW50NCk7CiAKLSAgICByZXR1cm4gczsKLX0KKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAiZXF1YWwiLCBib29sMiwgYm9vbDIpOworICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDMsICJlcXVhbCIsIGJvb2wzLCBib29sMyk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwgImVxdWFsIiwgYm9vbDQsIGJv
b2w0KTsKIAotLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLwotLy8gU3RhbmRhcmQgdW5pZm9ybXMu
Ci0vLwotLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBTdGFuZGFyZFVuaWZv
cm1zKCkKLXsKLSAgICBUU3RyaW5nIHM7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihi
b29sMiwgIm5vdEVxdWFsIiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oYm9vbDMsICJub3RFcXVhbCIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAibm90RXF1YWwiLCBmbG9hdDQsIGZsb2F0NCk7CiAK
LSAgICAvLwotICAgIC8vIERlcHRoIHJhbmdlIGluIHdpbmRvdyBjb29yZGluYXRlcwotICAgIC8v
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygic3RydWN0IGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIHsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiICAgIGhpZ2hwIGZsb2F0IG5lYXI7IikpOyAgICAg
ICAgLy8gbgotICAgIHMuYXBwZW5kKFRTdHJpbmcoIiAgICBoaWdocCBmbG9hdCBmYXI7IikpOyAg
ICAgICAgIC8vIGYKLSAgICBzLmFwcGVuZChUU3RyaW5nKCIgICAgaGlnaHAgZmxvYXQgZGlmZjsi
KSk7ICAgICAgICAvLyBmIC0gbgotICAgIHMuYXBwZW5kKFRTdHJpbmcoIn07IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInVuaWZvcm0gZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnMgZ2xfRGVwdGhS
YW5nZTsiKSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMiwgIm5vdEVxdWFs
IiwgaW50MiwgaW50Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgIm5v
dEVxdWFsIiwgaW50MywgaW50Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29s
NCwgIm5vdEVxdWFsIiwgaW50NCwgaW50NCk7CiAKLSAgICByZXR1cm4gczsKLX0KKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAibm90RXF1YWwiLCBib29sMiwgYm9vbDIpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDMsICJub3RFcXVhbCIsIGJvb2wzLCBi
b29sMyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwgIm5vdEVxdWFsIiwg
Ym9vbDQsIGJvb2w0KTsKIAotLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLwotLy8gRGVmYXVsdCBw
cmVjaXNpb24gZm9yIHZlcnRleCBzaGFkZXJzLgotLy8KLS8vPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
c3RhdGljIFRTdHJpbmcgRGVmYXVsdFByZWNpc2lvblZlcnRleCgpCi17Ci0gICAgVFN0cmluZyBz
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDEsICJhbnkiLCBib29sMik7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMSwgImFueSIsIGJvb2wzKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wxLCAiYW55IiwgYm9vbDQpOwogCi0gICAgcy5h
cHBlbmQoVFN0cmluZygicHJlY2lzaW9uIGhpZ2hwIGludDsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygicHJlY2lzaW9uIGhpZ2hwIGZsb2F0OyIpKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGJvb2wxLCAiYWxsIiwgYm9vbDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oYm9vbDEsICJhbGwiLCBib29sMyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihi
b29sMSwgImFsbCIsIGJvb2w0KTsKIAotICAgIHJldHVybiBzOwotfQotCi0vLz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS8vCi0vLyBEZWZhdWx0IHByZWNpc2lvbiBmb3IgZnJhZ21lbnQgc2hhZGVycy4K
LS8vCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLXN0YXRpYyBUU3RyaW5nIERlZmF1bHRQcmVjaXNp
b25GcmFnbWVudCgpCi17Ci0gICAgVFN0cmluZyBzOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oYm9vbDIsICJub3QiLCBib29sMik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihib29sMywgIm5vdCIsIGJvb2wzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJv
b2w0LCAibm90IiwgYm9vbDQpOwogCi0gICAgcy5hcHBlbmQoVFN0cmluZygicHJlY2lzaW9uIG1l
ZGl1bXAgaW50OyIpKTsKLSAgICAvLyBObyBkZWZhdWx0IHByZWNpc2lvbiBmb3IgZmxvYXQgaW4g
ZnJhZ21lbnQgc2hhZGVycworICAgIFRUeXBlICpzYW1wbGVyMkQgPSBuZXcgVFR5cGUoRWJ0U2Ft
cGxlcjJELCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSk7CisgICAgVFR5cGUgKnNhbXBsZXJD
dWJlID0gbmV3IFRUeXBlKEVidFNhbXBsZXJDdWJlLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwg
MSk7CiAKLSAgICByZXR1cm4gczsKLX0KKyAgICAvLworICAgIC8vIFRleHR1cmUgRnVuY3Rpb25z
IGZvciBHTFNMIEVTIDEuMAorICAgIC8vCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDQsICJ0ZXh0dXJlMkQiLCBzYW1wbGVyMkQsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qIiwgc2FtcGxlcjJELCBmbG9hdDMp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZTJEUHJvaiIs
IHNhbXBsZXIyRCwgZmxvYXQ0KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0
NCwgInRleHR1cmVDdWJlIiwgc2FtcGxlckN1YmUsIGZsb2F0Myk7CiAKLS8vPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLy8KLS8vIEltcGxlbWVudGF0aW9uIGRlcGVuZGVudCBidWlsdC1pbiBjb25zdGFu
dHMuCi0vLwotLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBCdWlsdEluQ29u
c3RhbnRzKFNoU2hhZGVyU3BlYyBzcGVjLCBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgJnJlc291
cmNlcykKLXsKLSAgICBUU3RyaW5nU3RyZWFtIHM7CisgICAgaWYgKHJlc291cmNlcy5PRVNfRUdM
X2ltYWdlX2V4dGVybmFsKQorICAgIHsKKyAgICAgICAgVFR5cGUgKnNhbXBsZXJFeHRlcm5hbE9F
UyA9IG5ldyBUVHlwZShFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxKTsKIAotICAgIHMgPDwgImNvbnN0IGludCBnbF9NYXhWZXJ0ZXhBdHRyaWJzID0gIiA8
PCByZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyA8PCAiOyI7Ci0gICAgcyA8PCAiY29uc3QgaW50
IGdsX01heFZlcnRleFVuaWZvcm1WZWN0b3JzID0gIiA8PCByZXNvdXJjZXMuTWF4VmVydGV4VW5p
Zm9ybVZlY3RvcnMgPDwgIjsiOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0NCwgInRleHR1cmUyRCIsIHNhbXBsZXJFeHRlcm5hbE9FUywgZmxvYXQyKTsKKyAgICAgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qIiwgc2FtcGxl
ckV4dGVybmFsT0VTLCBmbG9hdDMpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0NCwgInRleHR1cmUyRFByb2oiLCBzYW1wbGVyRXh0ZXJuYWxPRVMsIGZsb2F0NCk7Cisg
ICAgfQogCi0gICAgcyA8PCAiY29uc3QgaW50IGdsX01heFZhcnlpbmdWZWN0b3JzID0gIiA8PCBy
ZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMgPDwgIjsiOwotICAgIHMgPDwgImNvbnN0IGludCBn
bF9NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyA9ICIgPDwgcmVzb3VyY2VzLk1heFZlcnRleFRl
eHR1cmVJbWFnZVVuaXRzIDw8ICI7IjsKLSAgICBzIDw8ICJjb25zdCBpbnQgZ2xfTWF4Q29tYmlu
ZWRUZXh0dXJlSW1hZ2VVbml0cyA9ICIgPDwgcmVzb3VyY2VzLk1heENvbWJpbmVkVGV4dHVyZUlt
YWdlVW5pdHMgPDwgIjsiOwotICAgIHMgPDwgImNvbnN0IGludCBnbF9NYXhUZXh0dXJlSW1hZ2VV
bml0cyA9ICIgPDwgcmVzb3VyY2VzLk1heFRleHR1cmVJbWFnZVVuaXRzIDw8ICI7IjsKLSAgICBz
IDw8ICJjb25zdCBpbnQgZ2xfTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyA9ICIgPDwgcmVzb3Vy
Y2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgPDwgIjsiOworICAgIGlmIChyZXNvdXJjZXMu
QVJCX3RleHR1cmVfcmVjdGFuZ2xlKQorICAgIHsKKyAgICAgICAgVFR5cGUgKnNhbXBsZXIyRFJl
Y3QgPSBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJEUmVjdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWws
IDEpOwogCi0gICAgaWYgKHNwZWMgIT0gU0hfQ1NTX1NIQURFUlNfU1BFQykKLSAgICAgICAgcyA8
PCAiY29uc3QgaW50IGdsX01heERyYXdCdWZmZXJzID0gIiA8PCByZXNvdXJjZXMuTWF4RHJhd0J1
ZmZlcnMgPDwgIjsiOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwg
InRleHR1cmUyRFJlY3QiLCBzYW1wbGVyMkRSZWN0LCBmbG9hdDIpOworICAgICAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRFJlY3RQcm9qIiwgc2FtcGxlcjJE
UmVjdCwgZmxvYXQzKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQs
ICJ0ZXh0dXJlMkRSZWN0UHJvaiIsIHNhbXBsZXIyRFJlY3QsIGZsb2F0NCk7CisgICAgfQogCi0g
ICAgcmV0dXJuIHMuc3RyKCk7Ci19CisgICAgaWYgKHR5cGUgPT0gU0hfRlJBR01FTlRfU0hBREVS
KQorICAgIHsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0
dXJlMkQiLCBzYW1wbGVyMkQsIGZsb2F0MiwgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qIiwgc2FtcGxlcjJELCBmbG9hdDMs
IGZsb2F0MSk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4
dHVyZTJEUHJvaiIsIHNhbXBsZXIyRCwgZmxvYXQ0LCBmbG9hdDEpOworICAgICAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmVDdWJlIiwgc2FtcGxlckN1YmUsIGZs
b2F0MywgZmxvYXQxKTsKKworICAgICAgICBpZiAocmVzb3VyY2VzLk9FU19zdGFuZGFyZF9kZXJp
dmF0aXZlcykKKyAgICAgICAgeworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDEsICJkRmR4IiwgZmxvYXQxKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQyLCAiZEZkeCIsIGZsb2F0Mik7CisgICAgICAgICAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImRGZHgiLCBmbG9hdDMpOworICAgICAgICAgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJkRmR4IiwgZmxvYXQ0KTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJkRmR5
IiwgZmxvYXQxKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQy
LCAiZEZkeSIsIGZsb2F0Mik7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0MywgImRGZHkiLCBmbG9hdDMpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihmbG9hdDQsICJkRmR5IiwgZmxvYXQ0KTsKKworICAgICAgICAgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJmd2lkdGgiLCBmbG9hdDEpOworICAgICAgICAgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJmd2lkdGgiLCBmbG9hdDIpOworICAg
ICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJmd2lkdGgiLCBmbG9h
dDMpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJmd2lk
dGgiLCBmbG9hdDQpOworICAgICAgICB9CisgICAgfQogCi12b2lkIFRCdWlsdEluczo6aW5pdGlh
bGl6ZShTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcykKLXsKLSAg
ICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFNIX0ZSQUdNRU5UX1NIQURFUjoKLSAgICAgICAg
YnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKERlZmF1bHRQcmVjaXNpb25GcmFnbWVudCgpKTsKLSAg
ICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1aWx0SW5GdW5jdGlvbnNDb21tb24ocmVz
b3VyY2VzKSk7Ci0gICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rp
b25zRnJhZ21lbnQocmVzb3VyY2VzKSk7Ci0gICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFj
ayhTdGFuZGFyZFVuaWZvcm1zKCkpOwotICAgICAgICBicmVhazsKKyAgICBpZih0eXBlID09IFNI
X1ZFUlRFWF9TSEFERVIpCisgICAgeworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0NCwgInRleHR1cmUyRExvZCIsIHNhbXBsZXIyRCwgZmxvYXQyLCBmbG9hdDEpOworICAg
ICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRFByb2pMb2Qi
LCBzYW1wbGVyMkQsIGZsb2F0MywgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qTG9kIiwgc2FtcGxlcjJELCBmbG9hdDQsIGZs
b2F0MSk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVy
ZUN1YmVMb2QiLCBzYW1wbGVyQ3ViZSwgZmxvYXQzLCBmbG9hdDEpOworICAgIH0KIAotICAgIGNh
c2UgU0hfVkVSVEVYX1NIQURFUjoKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKERl
ZmF1bHRQcmVjaXNpb25WZXJ0ZXgoKSk7Ci0gICAgICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFj
ayhCdWlsdEluRnVuY3Rpb25zQ29tbW9uKHJlc291cmNlcykpOwotICAgICAgICBidWlsdEluU3Ry
aW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc1ZlcnRleChyZXNvdXJjZXMpKTsKLSAgICAg
ICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKFN0YW5kYXJkVW5pZm9ybXMoKSk7Ci0gICAgICAg
IGJyZWFrOworICAgIC8vCisgICAgLy8gRGVwdGggcmFuZ2UgaW4gd2luZG93IGNvb3JkaW5hdGVz
CisgICAgLy8KKyAgICBURmllbGRMaXN0ICpmaWVsZHMgPSBOZXdQb29sVEZpZWxkTGlzdCgpOwor
ICAgIFRGaWVsZCAqbmVhciA9IG5ldyBURmllbGQobmV3IFRUeXBlKEVidEZsb2F0LCBFYnBIaWdo
LCBFdnFHbG9iYWwsIDEpLCBOZXdQb29sVFN0cmluZygibmVhciIpKTsKKyAgICBURmllbGQgKmZh
ciA9IG5ldyBURmllbGQobmV3IFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFHbG9iYWwsIDEp
LCBOZXdQb29sVFN0cmluZygiZmFyIikpOworICAgIFRGaWVsZCAqZGlmZiA9IG5ldyBURmllbGQo
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFHbG9iYWwsIDEpLCBOZXdQb29sVFN0cmlu
ZygiZGlmZiIpKTsKKyAgICBmaWVsZHMtPnB1c2hfYmFjayhuZWFyKTsKKyAgICBmaWVsZHMtPnB1
c2hfYmFjayhmYXIpOworICAgIGZpZWxkcy0+cHVzaF9iYWNrKGRpZmYpOworICAgIFRTdHJ1Y3R1
cmUgKmRlcHRoUmFuZ2VTdHJ1Y3QgPSBuZXcgVFN0cnVjdHVyZShOZXdQb29sVFN0cmluZygiZ2xf
RGVwdGhSYW5nZVBhcmFtZXRlcnMiKSwgZmllbGRzKTsKKyAgICBUVmFyaWFibGUgKmRlcHRoUmFu
Z2VQYXJhbWV0ZXJzID0gbmV3IFRWYXJpYWJsZSgmZGVwdGhSYW5nZVN0cnVjdC0+bmFtZSgpLCBk
ZXB0aFJhbmdlU3RydWN0LCB0cnVlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnQoKmRlcHRoUmFu
Z2VQYXJhbWV0ZXJzKTsKKyAgICBUVmFyaWFibGUgKmRlcHRoUmFuZ2UgPSBuZXcgVFZhcmlhYmxl
KE5ld1Bvb2xUU3RyaW5nKCJnbF9EZXB0aFJhbmdlIiksIFRUeXBlKGRlcHRoUmFuZ2VTdHJ1Y3Qp
KTsKKyAgICBkZXB0aFJhbmdlLT5zZXRRdWFsaWZpZXIoRXZxVW5pZm9ybSk7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0KCpkZXB0aFJhbmdlKTsKKworICAgIC8vCisgICAgLy8gSW1wbGVtZW50YXRp
b24gZGVwZW5kZW50IGJ1aWx0LWluIGNvbnN0YW50cy4KKyAgICAvLworICAgIHN5bWJvbFRhYmxl
Lmluc2VydENvbnN0SW50KCJnbF9NYXhWZXJ0ZXhBdHRyaWJzIiwgcmVzb3VyY2VzLk1heFZlcnRl
eEF0dHJpYnMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KCJnbF9NYXhWZXJ0ZXhV
bmlmb3JtVmVjdG9ycyIsIHJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyk7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoImdsX01heFZhcnlpbmdWZWN0b3JzIiwgcmVzb3Vy
Y2VzLk1heFZhcnlpbmdWZWN0b3JzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludCgi
Z2xfTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMiLCByZXNvdXJjZXMuTWF4VmVydGV4VGV4dHVy
ZUltYWdlVW5pdHMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KCJnbF9NYXhDb21i
aW5lZFRleHR1cmVJbWFnZVVuaXRzIiwgcmVzb3VyY2VzLk1heENvbWJpbmVkVGV4dHVyZUltYWdl
VW5pdHMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0SW50KCJnbF9NYXhUZXh0dXJlSW1h
Z2VVbml0cyIsIHJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0Q29uc3RJbnQoImdsX01heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMiLCByZXNvdXJj
ZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyk7CiAKLSAgICBkZWZhdWx0OiBhc3NlcnQoZmFs
c2UgJiYgIkxhbmd1YWdlIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICBpZiAoc3BlYyAhPSBTSF9DU1Nf
U0hBREVSU19TUEVDKQorICAgIHsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQo
ImdsX01heERyYXdCdWZmZXJzIiwgcmVzb3VyY2VzLk1heERyYXdCdWZmZXJzKTsKICAgICB9Ci0K
LSAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkNvbnN0YW50cyhzcGVjLCByZXNv
dXJjZXMpKTsKIH0KIAogdm9pZCBJZGVudGlmeUJ1aWx0SW5zKFNoU2hhZGVyVHlwZSB0eXBlLCBT
aFNoYWRlclNwZWMgc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaEJ1aWx0SW5S
ZXNvdXJjZXMmIHJlc291cmNlcywKLSAgICAgICAgICAgICAgICAgICAgICBUU3ltYm9sVGFibGUm
IHN5bWJvbFRhYmxlKQorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoQnVpbHRJblJlc291
cmNlcyAmcmVzb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgIFRTeW1ib2xUYWJsZSAmc3lt
Ym9sVGFibGUpCiB7CiAgICAgLy8KICAgICAvLyBGaXJzdCwgaW5zZXJ0IHNvbWUgc3BlY2lhbCBi
dWlsdC1pbiB2YXJpYWJsZXMgdGhhdCBhcmUgbm90IGluIApAQCAtNTM5LDYgKzQzOSwxMCBAQCB2
b2lkIElkZW50aWZ5QnVpbHRJbnMoU2hTaGFkZXJUeXBlIHR5cGUsCiAgICAgICAgIGlmIChzcGVj
ICE9IFNIX0NTU19TSEFERVJTX1NQRUMpIHsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJhZ0NvbG9yIiksICAgICAgICAg
ICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUZyYWdDb2xvciwgICA0KSkp
OwogICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xU
U3RyaW5nKCJnbF9GcmFnRGF0YVtnbF9NYXhEcmF3QnVmZmVyc10iKSwgVFR5cGUoRWJ0RmxvYXQs
IEVicE1lZGl1bSwgRXZxRnJhZ0RhdGEsICAgIDQpKSk7CisgICAgICAgICAgICBpZiAocmVzb3Vy
Y2VzLkVYVF9mcmFnX2RlcHRoKSB7CisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGVwdGhFWFQiKSwgICAgICAg
ICAgICBUVHlwZShFYnRGbG9hdCwgcmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA/IEVi
cEhpZ2ggOiBFYnBNZWRpdW0sIEV2cUZyYWdEZXB0aCwgMSkpKTsKKyAgICAgICAgICAgICAgICBz
eW1ib2xUYWJsZS5yZWxhdGVUb0V4dGVuc2lvbigiZ2xfRnJhZ0RlcHRoRVhUIiwgIkdMX0VYVF9m
cmFnX2RlcHRoIik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBzeW1ib2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImNzc19N
aXhDb2xvciIpLCAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBF
dnFHbG9iYWwsICAgICAgNCkpKTsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgqbmV3
IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiY3NzX0NvbG9yTWF0cml4IiksICAgICAgICAgICAg
ICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUdsb2JhbCwgICAgICA0LCB0cnVlKSkp
OwpAQCAtNTYwLDggKzQ2NCw2IEBAIHZvaWQgSWRlbnRpZnlCdWlsdElucyhTaFNoYWRlclR5cGUg
dHlwZSwKICAgICAvLyBleHBlY3RlZCB0byBiZSByZXNvbHZlZCB0aHJvdWdoIGEgbGlicmFyeSBv
ZiBmdW5jdGlvbnMsIHZlcnN1cyBhcwogICAgIC8vIG9wZXJhdGlvbnMuCiAgICAgLy8KLSAgICBz
eW1ib2xUYWJsZS5yZWxhdGVUb09wZXJhdG9yKCJub3QiLCAgICAgICAgICAgICAgRU9wVmVjdG9y
TG9naWNhbE5vdCk7Ci0KICAgICBzeW1ib2xUYWJsZS5yZWxhdGVUb09wZXJhdG9yKCJtYXRyaXhD
b21wTXVsdCIsICAgRU9wTXVsKTsKIAogICAgIHN5bWJvbFRhYmxlLnJlbGF0ZVRvT3BlcmF0b3Io
ImVxdWFsIiwgICAgICAgICAgICBFT3BWZWN0b3JFcXVhbCk7CkBAIC02MTIsNiArNTE0LDcgQEAg
dm9pZCBJZGVudGlmeUJ1aWx0SW5zKFNoU2hhZGVyVHlwZSB0eXBlLAogICAgIAogICAgIHN5bWJv
bFRhYmxlLnJlbGF0ZVRvT3BlcmF0b3IoImFueSIsICAgICAgICAgIEVPcEFueSk7CiAgICAgc3lt
Ym9sVGFibGUucmVsYXRlVG9PcGVyYXRvcigiYWxsIiwgICAgICAgICAgRU9wQWxsKTsKKyAgICBz
eW1ib2xUYWJsZS5yZWxhdGVUb09wZXJhdG9yKCJub3QiLCAgICAgICAgICBFT3BWZWN0b3JMb2dp
Y2FsTm90KTsKIAogICAgIC8vIE1hcCBsYW5ndWFnZS1zcGVjaWZpYyBvcGVyYXRvcnMuCiAgICAg
c3dpdGNoKHR5cGUpIHsKQEAgLTY1Niw0ICs1NTksNiBAQCB2b2lkIEluaXRFeHRlbnNpb25CZWhh
dmlvcihjb25zdCBTaEJ1aWx0CiAgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9BUkJfdGV4dHVyZV9y
ZWN0YW5nbGUiXSA9IEVCaFVuZGVmaW5lZDsKICAgICBpZiAocmVzb3VyY2VzLkVYVF9kcmF3X2J1
ZmZlcnMpCiAgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9FWFRfZHJhd19idWZmZXJzIl0gPSBFQmhV
bmRlZmluZWQ7CisgICAgaWYgKHJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCkKKyAgICAgICAgZXh0
QmVoYXZpb3JbIkdMX0VYVF9mcmFnX2RlcHRoIl0gPSBFQmhVbmRlZmluZWQ7CiB9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmgJ
KHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9Jbml0aWFsaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTExLDE5ICsxMSw3IEBACiAjaW5jbHVkZSAi
Y29tcGlsZXIvU2hIYW5kbGUuaCIKICNpbmNsdWRlICJjb21waWxlci9TeW1ib2xUYWJsZS5oIgog
Ci10eXBlZGVmIFRWZWN0b3I8VFN0cmluZz4gVEJ1aWx0SW5TdHJpbmdzOwotCi1jbGFzcyBUQnVp
bHRJbnMgewotcHVibGljOgotICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9v
bEFsbG9jYXRvcikKLQotICAgIHZvaWQgaW5pdGlhbGl6ZShTaFNoYWRlclR5cGUgdHlwZSwgU2hT
aGFkZXJTcGVjIHNwZWMsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoQnVpbHRJblJlc291
cmNlcyYgcmVzb3VyY2VzKTsKLSAgICBjb25zdCBUQnVpbHRJblN0cmluZ3MmIGdldEJ1aWx0SW5T
dHJpbmdzKCkgeyByZXR1cm4gYnVpbHRJblN0cmluZ3M7IH0KLQotcHJvdGVjdGVkOgotICAgIFRC
dWlsdEluU3RyaW5ncyBidWlsdEluU3RyaW5nczsKLX07Cit2b2lkIEluc2VydEJ1aWx0SW5GdW5j
dGlvbnMoU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBjb25zdCBTaEJ1aWx0
SW5SZXNvdXJjZXMgJnJlc291cmNlcywgVFN5bWJvbFRhYmxlICZ0YWJsZSk7CiAKIHZvaWQgSWRl
bnRpZnlCdWlsdElucyhTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsCiAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50
ZXJtZWRpYXRlLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEz
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTEzMSw3ICsx
MzEsNyBAQCBjb25zdCBjaGFyKiBnZXRPcGVyYXRvclN0cmluZyhUT3BlcmF0b3IgCiAvLwogLy8g
UmV0dXJucyB0aGUgYWRkZWQgbm9kZS4KIC8vCi1USW50ZXJtU3ltYm9sKiBUSW50ZXJtZWRpYXRl
OjphZGRTeW1ib2woaW50IGlkLCBjb25zdCBUU3RyaW5nJiBuYW1lLCBjb25zdCBUVHlwZSYgdHlw
ZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVN5bWJvbCogVEludGVybWVkaWF0ZTo6YWRkU3lt
Ym9sKGludCBpZCwgY29uc3QgVFN0cmluZyYgbmFtZSwgY29uc3QgVFR5cGUmIHR5cGUsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVN5bWJvbCogbm9kZSA9IG5ldyBUSW50
ZXJtU3ltYm9sKGlkLCBuYW1lLCB0eXBlKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAt
MTQ0LDcgKzE0NCw3IEBAIFRJbnRlcm1TeW1ib2wqIFRJbnRlcm1lZGlhdGU6OmFkZFN5bWJvbCgK
IC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVy
bWVkaWF0ZTo6YWRkQmluYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwg
VEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYyBsaW5lLCBUU3ltYm9sVGFibGUmIHN5bWJv
bFRhYmxlKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYXRoKFRPcGVy
YXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQogewogICAgIHN3aXRj
aCAob3ApIHsKICAgICAgICAgY2FzZSBFT3BFcXVhbDoKQEAgLTIwMCw4ICsyMDAsNiBAQCBUSW50
ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hCiAgICAgLy8gb25lIGFuZCBwcm9t
b3RlIGl0IHRvIHRoZSByaWdodCB0eXBlLgogICAgIC8vCiAgICAgVEludGVybUJpbmFyeSogbm9k
ZSA9IG5ldyBUSW50ZXJtQmluYXJ5KG9wKTsKLSAgICBpZiAobGluZSA9PSAwKQotICAgICAgICBs
aW5lID0gcmlnaHQtPmdldExpbmUoKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAg
bm9kZS0+c2V0TGVmdChsZWZ0KTsKQEAgLTIzMCwxNSArMjI4LDEzIEBAIFRJbnRlcm1UeXBlZCog
VEludGVybWVkaWF0ZTo6YWRkQmluYXJ5TWEKIC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2Rl
LgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKFRPcGVyYXRvciBv
cCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jIGxp
bmUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEFzc2lnbihUT3BlcmF0b3Igb3As
IFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNvdXJjZUxv
YyYgbGluZSkKIHsKICAgICAvLwogICAgIC8vIExpa2UgYWRkaW5nIGJpbmFyeSBtYXRoLCBleGNl
cHQgdGhlIGNvbnZlcnNpb24gY2FuIG9ubHkgZ28KICAgICAvLyBmcm9tIHJpZ2h0IHRvIGxlZnQu
CiAgICAgLy8KICAgICBUSW50ZXJtQmluYXJ5KiBub2RlID0gbmV3IFRJbnRlcm1CaW5hcnkob3Ap
OwotICAgIGlmIChsaW5lID09IDApCi0gICAgICAgIGxpbmUgPSBsZWZ0LT5nZXRMaW5lKCk7CiAg
ICAgbm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAgIFRJbnRlcm1UeXBlZCogY2hpbGQgPSBhZGRD
b252ZXJzaW9uKG9wLCBsZWZ0LT5nZXRUeXBlKCksIHJpZ2h0KTsKQEAgLTI2MCwxMSArMjU2LDkg
QEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRBc3NpZ24oVAogLy8gUmV0dXJucyB0
aGUgYWRkZWQgbm9kZS4KIC8vIFRoZSBjYWxsZXIgc2hvdWxkIHNldCB0aGUgdHlwZSBvZiB0aGUg
cmV0dXJuZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4
KFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBU
U291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KFRP
cGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBjb25z
dCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRlcm1CaW5hcnkqIG5vZGUgPSBuZXcgVElu
dGVybUJpbmFyeShvcCk7Ci0gICAgaWYgKGxpbmUgPT0gMCkKLSAgICAgICAgbGluZSA9IGluZGV4
LT5nZXRMaW5lKCk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKICAgICBub2RlLT5zZXRMZWZ0
KGJhc2UpOwogICAgIG5vZGUtPnNldFJpZ2h0KGluZGV4KTsKQEAgLTI3OSwxMyArMjczLDEzIEBA
IFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkSW5kZXgoVE8KIC8vCiAvLyBSZXR1cm5z
IHRoZSBhZGRlZCBub2RlLgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkVW5h
cnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIGNoaWxkTm9kZSwgVFNvdXJjZUxvYyBs
aW5lLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRp
YXRlOjphZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtTm9kZSogY2hpbGROb2RlLCBj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQogewogICAg
IFRJbnRlcm1VbmFyeSogbm9kZTsKICAgICBUSW50ZXJtVHlwZWQqIGNoaWxkID0gY2hpbGROb2Rl
LT5nZXRBc1R5cGVkKCk7CiAKICAgICBpZiAoY2hpbGQgPT0gMCkgewotICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJCYWQgdHlwZSBpbiBBZGRVbmFy
eU1hdGgiLCBsaW5lKTsKKyAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRl
cm5hbEVycm9yLCBsaW5lLCAiQmFkIHR5cGUgaW4gQWRkVW5hcnlNYXRoIik7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIApAQCAtMzQ4LDggKzM0Miw2IEBAIFRJbnRlcm1UeXBlZCogVEludGVy
bWVkaWF0ZTo6YWRkVW5hcnlNYXQKICAgICAvLyBNYWtlIGEgbmV3IG5vZGUgZm9yIHRoZSBvcGVy
YXRvci4KICAgICAvLwogICAgIG5vZGUgPSBuZXcgVEludGVybVVuYXJ5KG9wKTsKLSAgICBpZiAo
bGluZSA9PSAwKQotICAgICAgICBsaW5lID0gY2hpbGQtPmdldExpbmUoKTsKICAgICBub2RlLT5z
ZXRMaW5lKGxpbmUpOwogICAgIG5vZGUtPnNldE9wZXJhbmQoY2hpbGQpOwogCkBAIC0zNzYsNyAr
MzY4LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdAogLy8gUmV0
dXJucyBhbiBhZ2dyZWdhdGUgbm9kZSwgd2hpY2ggY291bGQgYmUgdGhlIG9uZSBwYXNzZWQgaW4g
aWYKIC8vIGl0IHdhcyBhbHJlYWR5IGFuIGFnZ3JlZ2F0ZSBidXQgbm8gb3BlcmF0b3Igd2FzIHNl
dC4KIC8vCi1USW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVy
YXRvcihUSW50ZXJtTm9kZSogbm9kZSwgVE9wZXJhdG9yIG9wLCBUU291cmNlTG9jIGxpbmUpCitU
SW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRvcihUSW50
ZXJtTm9kZSogbm9kZSwgVE9wZXJhdG9yIG9wLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewog
ICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ05vZGU7CiAKQEAgLTM5MSw4ICszODMsNiBAQCBUSW50
ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyCiAgICAgICAgICAgICAvLwogICAg
ICAgICAgICAgYWdnTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKCk7CiAgICAgICAgICAgICBh
Z2dOb2RlLT5nZXRTZXF1ZW5jZSgpLnB1c2hfYmFjayhub2RlKTsKLSAgICAgICAgICAgIGlmIChs
aW5lID09IDApCi0gICAgICAgICAgICAgICAgbGluZSA9IG5vZGUtPmdldExpbmUoKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZQogICAgICAgICBhZ2dOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUo
KTsKQEAgLTQwMSw4ICszOTEsNyBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpz
ZXRBZ2dyCiAgICAgLy8gU2V0IHRoZSBvcGVyYXRvci4KICAgICAvLwogICAgIGFnZ05vZGUtPnNl
dE9wKG9wKTsKLSAgICBpZiAobGluZSAhPSAwKQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKGxp
bmUpOworICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1cm4gYWdnTm9kZTsK
IH0KQEAgLTQ5MSw3ICs0ODAsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENv
bnZlcnNpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OiAgIG5ld09wID0gRU9wQ29u
dkludFRvRmxvYXQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOiAg
bmV3T3AgPSBFT3BDb252Qm9vbFRvRmxvYXQ7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlvbiBub2RlIiwgbm9kZS0+Z2V0TGluZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFkIHByb21vdGlvbiBub2RlIik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC01MDAsNyArNDg5LDcgQEAgVEludGVybVR5cGVkKiBUSW50
ZXJtZWRpYXRlOjphZGRDb252ZXJzaQogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDog
ICBuZXdPcCA9IEVPcENvbnZJbnRUb0Jvb2w7ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgRWJ0RmxvYXQ6IG5ld09wID0gRU9wQ29udkZsb2F0VG9Cb29sOyBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gbm9kZSIs
IG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJhZCBwcm9t
b3Rpb24gbm9kZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTA5LDEyICs0OTgsMTIgQEAg
VEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb252ZXJzaQogICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVidEJvb2w6ICAgbmV3T3AgPSBFT3BDb252Qm9vbFRvSW50OyAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6ICBuZXdPcCA9IEVPcENvbnZGbG9hdFRv
SW50OyBicmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJh
ZCBwcm9tb3Rpb24gbm9kZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdl
dExpbmUoKSwgIkJhZCBwcm9tb3Rpb24gbm9kZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEludGVybmFsRXJyb3IsICJCYWQgcHJvbW90aW9uIHR5cGUiLCBub2RlLT5nZXRMaW5l
KCkpOworICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFkIHByb21vdGlvbiB0eXBlIik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIApAQCAtNTM0LDcgKzUyMyw3IEBAIFRJbnRl
cm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQ29udmVyc2kKIC8vIFJldHVybnMgdGhlIHJlc3Vs
dGluZyBhZ2dyZWdhdGUsIHVubGVzcyAwIHdhcyBwYXNzZWQgaW4gZm9yCiAvLyBib3RoIGV4aXN0
aW5nIG5vZGVzLgogLy8KLVRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2dy
ZWdhdGUoVEludGVybU5vZGUqIGxlZnQsIFRJbnRlcm1Ob2RlKiByaWdodCwgVFNvdXJjZUxvYyBs
aW5lKQorVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jvd0FnZ3JlZ2F0ZShUSW50
ZXJtTm9kZSogbGVmdCwgVEludGVybU5vZGUqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5l
KQogewogICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQgPT0gMCkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC01NTEsOCArNTQwLDcgQEAgVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jv
d0FnZwogICAgIGlmIChyaWdodCkKICAgICAgICAgYWdnTm9kZS0+Z2V0U2VxdWVuY2UoKS5wdXNo
X2JhY2socmlnaHQpOwogCi0gICAgaWYgKGxpbmUgIT0gMCkKLSAgICAgICAgYWdnTm9kZS0+c2V0
TGluZShsaW5lKTsKKyAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAgcmV0dXJuIGFn
Z05vZGU7CiB9CkBAIC01NjIsMTggKzU1MCwxNCBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJt
ZWRpYXRlOjpncm93QWdnCiAvLwogLy8gUmV0dXJucyBhbiBhZ2dyZWdhdGUsIHVubGVzcyAwIHdh
cyBwYXNzZWQgaW4gZm9yIHRoZSBleGlzdGluZyBub2RlLgogLy8KLVRJbnRlcm1BZ2dyZWdhdGUq
IFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUqIG5vZGUsIFRTb3VyY2VM
b2MgbGluZSkKK1RJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2dyZWdhdGUo
VEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgaWYgKG5v
ZGUgPT0gMCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBUSW50ZXJtQWdncmVnYXRlKiBhZ2dO
b2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7CiAgICAgYWdnTm9kZS0+Z2V0U2VxdWVuY2UoKS5w
dXNoX2JhY2sobm9kZSk7Ci0KLSAgICBpZiAobGluZSAhPSAwKQotICAgICAgICBhZ2dOb2RlLT5z
ZXRMaW5lKGxpbmUpOwotICAgIGVsc2UKLSAgICAgICAgYWdnTm9kZS0+c2V0TGluZShub2RlLT5n
ZXRMaW5lKCkpOworICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1cm4gYWdn
Tm9kZTsKIH0KQEAgLTU4NSw3ICs1NjksNyBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRp
YXRlOjptYWtlQWdnCiAvLwogLy8gUmV0dXJucyB0aGUgc2VsZWN0aW9uIG5vZGUgY3JlYXRlZC4K
IC8vCi1USW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBl
ZCogY29uZCwgVEludGVybU5vZGVQYWlyIG5vZGVQYWlyLCBUU291cmNlTG9jIGxpbmUpCitUSW50
ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwg
VEludGVybU5vZGVQYWlyIG5vZGVQYWlyLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAg
IC8vCiAgICAgLy8gRm9yIGNvbXBpbGUgdGltZSBjb25zdGFudCBzZWxlY3Rpb25zLCBwcnVuZSB0
aGUgY29kZSBhbmQKQEAgLTU5Myw3ICs1NzcsNyBAQCBUSW50ZXJtTm9kZSogVEludGVybWVkaWF0
ZTo6YWRkU2VsZWN0aW9uCiAgICAgLy8KIAogICAgIGlmIChjb25kLT5nZXRBc1R5cGVkKCkgJiYg
Y29uZC0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgewotICAgICAgICBpZiAo
Y29uZC0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBv
aW50ZXIoKS0+Z2V0QkNvbnN0KCkgPT0gdHJ1ZSkKKyAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29u
c3RhbnRVbmlvbigpLT5nZXRCQ29uc3QoMCkgPT0gdHJ1ZSkKICAgICAgICAgICAgIHJldHVybiBu
b2RlUGFpci5ub2RlMSA/IHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKG5vZGVQYWlyLm5vZGUxLCBFT3BT
ZXF1ZW5jZSwgbm9kZVBhaXIubm9kZTEtPmdldExpbmUoKSkgOiBOVUxMOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICByZXR1cm4gbm9kZVBhaXIubm9kZTIgPyBzZXRBZ2dyZWdhdGVPcGVyYXRv
cihub2RlUGFpci5ub2RlMiwgRU9wU2VxdWVuY2UsIG5vZGVQYWlyLm5vZGUyLT5nZXRMaW5lKCkp
IDogTlVMTDsKQEAgLTYwNiw3ICs1OTAsNyBAQCBUSW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6
YWRkU2VsZWN0aW9uCiB9CiAKIAotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb21t
YShUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MgbGlu
ZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQ29tbWEoVEludGVybVR5cGVkKiBs
ZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAg
IGlmIChsZWZ0LT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYgcmlnaHQt
PmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewogICAgICAgICByZXR1cm4g
cmlnaHQ7CkBAIC02MjYsNyArNjEwLDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjph
ZGRDb21tYShUSQogLy8KIC8vIFJldHVybnMgdGhlIHNlbGVjdGlvbiBub2RlIGNyZWF0ZWQsIG9y
IDAgaWYgb25lIGNvdWxkIG5vdCBiZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6
OmFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogdHJ1ZUJsb2Nr
LCBUSW50ZXJtVHlwZWQqIGZhbHNlQmxvY2ssIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBl
ZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVy
bVR5cGVkKiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCogZmFsc2VCbG9jaywgY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSkKIHsKICAgICAvLwogICAgIC8vIEdldCBjb21wYXRpYmxlIHR5cGVzLgpAQCAt
NjQ3LDcgKzYzMSw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW8K
ICAgICAvLwogCiAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRVbmlvbigpICYmIHRydWVCbG9j
ay0+Z2V0QXNDb25zdGFudFVuaW9uKCkgJiYgZmFsc2VCbG9jay0+Z2V0QXNDb25zdGFudFVuaW9u
KCkpIHsKLSAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpLT5nZXRCQ29uc3QoKSkKKyAgICAgICAgaWYgKGNvbmQtPmdldEFzQ29uc3Rh
bnRVbmlvbigpLT5nZXRCQ29uc3QoMCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZUJsb2NrOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gZmFsc2VCbG9jazsKQEAgLTY2OSw3ICs2
NTMsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvCiAvLyBSZXR1
cm5zIHRoZSBjb25zdGFudCB1bmlvbiBub2RlIGNyZWF0ZWQuCiAvLwogCi1USW50ZXJtQ29uc3Rh
bnRVbmlvbiogVEludGVybWVkaWF0ZTo6YWRkQ29uc3RhbnRVbmlvbihDb25zdGFudFVuaW9uKiB1
bmlvbkFycmF5UG9pbnRlciwgY29uc3QgVFR5cGUmIHQsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRl
cm1Db25zdGFudFVuaW9uKiBUSW50ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9uKENvbnN0YW50
VW5pb24qIHVuaW9uQXJyYXlQb2ludGVyLCBjb25zdCBUVHlwZSYgdCwgY29uc3QgVFNvdXJjZUxv
YyYgbGluZSkKIHsKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSA9IG5ldyBUSW50ZXJt
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5UG9pbnRlciwgdCk7CiAgICAgbm9kZS0+c2V0TGluZShs
aW5lKTsKQEAgLTY3Nyw3ICs2NjEsNyBAQCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogVEludGVybWVk
aWF0ZTo6YWRkCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLVRJbnRlcm1UeXBlZCogVEludGVybWVk
aWF0ZTo6YWRkU3dpenpsZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIFRTb3VyY2VMb2MgbGluZSkK
K1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU3dpenpsZShUVmVjdG9yRmllbGRzJiBm
aWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAKICAgICBUSW50ZXJtQWdncmVnYXRl
KiBub2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOwpAQCAtNzAwLDcgKzY4
NCw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU3dpenpsZSgKIC8vCiAvLyBD
cmVhdGUgbG9vcCBub2Rlcy4KIC8vCi1USW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkTG9v
cChUTG9vcFR5cGUgdHlwZSwgVEludGVybU5vZGUqIGluaXQsIFRJbnRlcm1UeXBlZCogY29uZCwg
VEludGVybVR5cGVkKiBleHByLCBUSW50ZXJtTm9kZSogYm9keSwgVFNvdXJjZUxvYyBsaW5lKQor
VEludGVybU5vZGUqIFRJbnRlcm1lZGlhdGU6OmFkZExvb3AoVExvb3BUeXBlIHR5cGUsIFRJbnRl
cm1Ob2RlKiBpbml0LCBUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1UeXBlZCogZXhwciwgVElu
dGVybU5vZGUqIGJvZHksIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybU5v
ZGUqIG5vZGUgPSBuZXcgVEludGVybUxvb3AodHlwZSwgaW5pdCwgY29uZCwgZXhwciwgYm9keSk7
CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKQEAgLTcxMSwxMiArNjk1LDEyIEBAIFRJbnRlcm1O
b2RlKiBUSW50ZXJtZWRpYXRlOjphZGRMb29wKFRMb28KIC8vCiAvLyBBZGQgYnJhbmNoZXMuCiAv
LwotVEludGVybUJyYW5jaCogVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVyYXRvciBicmFu
Y2hPcCwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybUJyYW5jaCogVEludGVybWVkaWF0ZTo6YWRk
QnJhbmNoKFRPcGVyYXRvciBicmFuY2hPcCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAg
ICByZXR1cm4gYWRkQnJhbmNoKGJyYW5jaE9wLCAwLCBsaW5lKTsKIH0KIAotVEludGVybUJyYW5j
aCogVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVyYXRvciBicmFuY2hPcCwgVEludGVybVR5
cGVkKiBleHByZXNzaW9uLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtQnJhbmNoKiBUSW50ZXJt
ZWRpYXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBUSW50ZXJtVHlwZWQqIGV4cHJl
c3Npb24sIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybUJyYW5jaCogbm9k
ZSA9IG5ldyBUSW50ZXJtQnJhbmNoKGJyYW5jaE9wLCBleHByZXNzaW9uKTsKICAgICBub2RlLT5z
ZXRMaW5lKGxpbmUpOwpAQCAtODQ2LDYgKzgzMCw3IEBAIGJvb2wgVEludGVybVVuYXJ5Ojpwcm9t
b3RlKFRJbmZvU2luayYpCiAgICAgfQogCiAgICAgc2V0VHlwZShvcGVyYW5kLT5nZXRUeXBlKCkp
OworICAgIHR5cGUuc2V0UXVhbGlmaWVyKEV2cVRlbXBvcmFyeSk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTg2MCw3ICs4NDUsNyBAQCBib29sIFRJbnRlcm1CaW5hcnk6OnByb21vdGUoVElu
Zm9TaW5rJiBpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBvbmx5IGhhbmRsZXMgc2NhbGFycywg
dmVjdG9ycywgYW5kIG1hdHJpY2VzLgogICAgIGlmIChsZWZ0LT5pc0FycmF5KCkgfHwgcmlnaHQt
PmlzQXJyYXkoKSkgewotICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsICJJbnZhbGlkIG9wZXJhdGlvbiBmb3IgYXJyYXlzIiwgZ2V0TGluZSgpKTsKKyAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5l
KCksICJJbnZhbGlkIG9wZXJhdGlvbiBmb3IgYXJyYXlzIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTk2NSw3ICs5NTAsNyBAQCBib29sIFRJbnRlcm1CaW5hcnk6OnByb21v
dGUoVEluZm9TaW5rJiBpCiAgICAgICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNU
eXBlLCBoaWdoZXJQcmVjaXNpb24sIEV2cVRlbXBvcmFyeSwgc2l6ZSwgZmFsc2UpKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIk1pc3NpbmcgZWxzZXMiLCBn
ZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiTWlzc2luZyBlbHNlcyIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAt
OTk0LDcgKzk3OSw3IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkK
ICAgICAgICAgICAgICAgICAgICAgc2V0VHlwZShUVHlwZShiYXNpY1R5cGUsIGhpZ2hlclByZWNp
c2lvbiwgRXZxVGVtcG9yYXJ5LCBzaXplLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiTWlzc2luZyBlbHNlcyIsIGdldExpbmUoKSk7CisgICAg
ICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBn
ZXRMaW5lKCksICJNaXNzaW5nIGVsc2VzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDM0LDIzICsxMDE5LDIy
IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKIAogYm9vbCBDb21w
YXJlU3RydWN0KGNvbnN0IFRUeXBlJiBsZWZ0Tm9kZVR5cGUsIENvbnN0YW50VW5pb24qIHJpZ2h0
VW5pb25BcnJheSwgQ29uc3RhbnRVbmlvbiogbGVmdFVuaW9uQXJyYXkpCiB7Ci0gICAgY29uc3Qg
VFR5cGVMaXN0KiBmaWVsZHMgPSBsZWZ0Tm9kZVR5cGUuZ2V0U3RydWN0KCk7CisgICAgY29uc3Qg
VEZpZWxkTGlzdCYgZmllbGRzID0gbGVmdE5vZGVUeXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsK
IAotICAgIHNpemVfdCBzdHJ1Y3RTaXplID0gZmllbGRzLT5zaXplKCk7Ci0gICAgaW50IGluZGV4
ID0gMDsKKyAgICBzaXplX3Qgc3RydWN0U2l6ZSA9IGZpZWxkcy5zaXplKCk7CisgICAgc2l6ZV90
IGluZGV4ID0gMDsKIAogICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgc3RydWN0U2l6ZTsgaisr
KSB7Ci0gICAgICAgIGludCBzaXplID0gKCpmaWVsZHMpW2pdLnR5cGUtPmdldE9iamVjdFNpemUo
KTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAg
IGlmICgoKmZpZWxkcylbal0udHlwZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFDb21wYXJlU3RydWN0dXJlKCooKmZpZWxkcylbal0udHlwZSwg
JnJpZ2h0VW5pb25BcnJheVtpbmRleF0sICZsZWZ0VW5pb25BcnJheVtpbmRleF0pKQorICAgICAg
ICBzaXplX3Qgc2l6ZSA9IGZpZWxkc1tqXS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBpZiAo
ZmllbGRzW2pdLT50eXBlKCktPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgeworICAgICAg
ICAgICAgICAgIGlmICghQ29tcGFyZVN0cnVjdHVyZSgqKGZpZWxkc1tqXS0+dHlwZSgpKSwgJnJp
Z2h0VW5pb25BcnJheVtpbmRleF0sICZsZWZ0VW5pb25BcnJheVtpbmRleF0pKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIGlmIChsZWZ0VW5pb25BcnJheVtpbmRleF0gIT0gcmlnaHRVbmlvbkFycmF5W2luZGV4
XSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGlu
ZGV4Kys7CiAgICAgICAgICAgICB9Ci0KICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTEwNjIsMTAgKzEwNDYsMTAgQEAgYm9vbCBDb21wYXJlU3RydWN0dXJlKGNvbnN0IFRU
eXBlJiBsZWZ0TgogICAgICAgICBUVHlwZSB0eXBlV2l0aG91dEFycmF5bmVzcyA9IGxlZnROb2Rl
VHlwZTsKICAgICAgICAgdHlwZVdpdGhvdXRBcnJheW5lc3MuY2xlYXJBcnJheW5lc3MoKTsKIAot
ICAgICAgICBpbnQgYXJyYXlTaXplID0gbGVmdE5vZGVUeXBlLmdldEFycmF5U2l6ZSgpOworICAg
ICAgICBzaXplX3QgYXJyYXlTaXplID0gbGVmdE5vZGVUeXBlLmdldEFycmF5U2l6ZSgpOwogCi0g
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpIHsKLSAgICAgICAgICAg
IGludCBvZmZzZXQgPSB0eXBlV2l0aG91dEFycmF5bmVzcy5nZXRPYmplY3RTaXplKCkgKiBpOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKSB7CisgICAgICAg
ICAgICBzaXplX3Qgb2Zmc2V0ID0gdHlwZVdpdGhvdXRBcnJheW5lc3MuZ2V0T2JqZWN0U2l6ZSgp
ICogaTsKICAgICAgICAgICAgIGlmICghQ29tcGFyZVN0cnVjdCh0eXBlV2l0aG91dEFycmF5bmVz
cywgJnJpZ2h0VW5pb25BcnJheVtvZmZzZXRdLCAmbGVmdFVuaW9uQXJyYXlbb2Zmc2V0XSkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMDg1LDcgKzEwNjks
NyBAQCBib29sIENvbXBhcmVTdHJ1Y3R1cmUoY29uc3QgVFR5cGUmIGxlZnROCiBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVk
KiBjb25zdGFudE5vZGUsIFRJbmZvU2luayYgaW5mb1NpbmspCiB7CiAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IGdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0gICAgaW50IG9iamVjdFNp
emUgPSBnZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgIHNpemVfdCBvYmplY3RTaXplID0g
Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKIAogICAgIGlmIChjb25zdGFudE5vZGUpIHsgIC8v
IGJpbmFyeSBvcGVyYXRpb25zCiAgICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2RlID0g
Y29uc3RhbnROb2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTEwOTUsMTMgKzEwNzksMTMg
QEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAvLyBm
b3IgYSBjYXNlIGxpa2UgZmxvYXQgZiA9IDEuMiArIHZlYzQoMiwzLDQsNSk7CiAgICAgICAgIGlm
IChjb25zdGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkgPT0gMSAmJiBvYmplY3RT
aXplID4gMSkgewogICAgICAgICAgICAgcmlnaHRVbmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5p
b25bb2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNp
emU7ICsraSkKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsg
KytpKQogICAgICAgICAgICAgICAgIHJpZ2h0VW5pb25BcnJheVtpXSA9ICpub2RlLT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpOwogICAgICAgICAgICAgcmV0dXJuVHlwZSA9IGdldFR5cGUoKTsKICAg
ICAgICAgfSBlbHNlIGlmIChjb25zdGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkg
PiAxICYmIG9iamVjdFNpemUgPT0gMSkgewogICAgICAgICAgICAgLy8gZm9yIGEgY2FzZSBsaWtl
IGZsb2F0IGYgPSB2ZWM0KDIsMyw0LDUpICsgMS4yOwogICAgICAgICAgICAgdW5pb25BcnJheSA9
IG5ldyBDb25zdGFudFVuaW9uW2NvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUo
KV07Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbnN0YW50Tm9kZS0+Z2V0VHlw
ZSgpLmdldE9iamVjdFNpemUoKTsgKytpKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb25zdGFudE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7ICsraSkKICAgICAg
ICAgICAgICAgICB1bmlvbkFycmF5W2ldID0gKmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAgICAg
ICAgICAgICByZXR1cm5UeXBlID0gbm9kZS0+Z2V0VHlwZSgpOwogICAgICAgICAgICAgb2JqZWN0
U2l6ZSA9IGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKQEAgLTExMTUs
MTQgKzEwOTksMTQgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAog
ICAgICAgICAgICAgY2FzZSBFT3BBZGQ6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3Vw
cG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBv
YmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJy
YXlbaV0gPSB1bmlvbkFycmF5W2ldICsgcmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRU9wU3ViOgog
ICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0
U2l6ZV07CiAgICAgICAgICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldID0gdW5pb25BcnJheVtpXSAtIHJp
Z2h0VW5pb25BcnJheVtpXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMTMyLDEzICsxMTE2LDEzIEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50
VW5pb246OmZvbGQKICAgICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6CiAgICAg
ICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXpl
XTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAg
ICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldICogcmlnaHRV
bmlvbkFycmF5W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXg6CiAgICAgICAgICAgICAgICAg
aWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCB8fCBub2RlLT5nZXRCYXNp
Y1R5cGUoKSAhPSBFYnRGbG9hdCkgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBi
ZSBkb25lIGZvciBtYXRyaXggbXVsdGlwbHkiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAg
ICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUo
KSwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCBtdWx0aXBseSIp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCkBAIC0xMTU3LDExICsxMTQxLDExIEBA
IFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgIGNh
c2UgRU9wRGl2OgogICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4w
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsr
KSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6
ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRC
YXNpY1R5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAg
ICBpZiAocmlnaHRVbmlvbkFycmF5W2ldID09IDAuMGYpIHsKLSAgICAgICAgICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhXYXJuaW5nLCAiRGl2aWRlIGJ5IHplcm8gZXJy
b3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAg
ICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsIGdldExpbmUoKSwgIkRp
dmlkZSBieSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIik7CiAgICAgICAgICAg
ICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCh1bmlvbkFycmF5W2ldLmdldEZD
b25zdCgpIDwgMCA/IC1GTFRfTUFYIDogRkxUX01BWCk7CiAgICAgICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCh1bmlvbkFy
cmF5W2ldLmdldEZDb25zdCgpIC8gcmlnaHRVbmlvbkFycmF5W2ldLmdldEZDb25zdCgpKTsKQEAg
LTExNjksMTMgKzExNTMsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6
Zm9sZAogCiAgICAgICAgICAgICBjYXNlIEVidEludDoKICAgICAgICAgICAgICAgICBpZiAocmln
aHRVbmlvbkFycmF5W2ldID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhXYXJuaW5nLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNv
bnN0YW50IGZvbGRpbmciLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsIGdldExpbmUoKSwgIkRpdmlkZSBieSB6ZXJv
IGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIik7CiAgICAgICAgICAgICAgICAgICAgIHRl
bXBDb25zdEFycmF5W2ldLnNldElDb25zdChJTlRfTUFYKTsKICAgICAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0KHVuaW9u
QXJyYXlbaV0uZ2V0SUNvbnN0KCkgLyByaWdodFVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDb25zdGFu
dCBmb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciBcIi9cIiIsIGdldExpbmUoKSk7CisgICAgICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRM
aW5lKCksICJDb25zdGFudCBmb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciBcIi9cIiIpOwogICAg
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICB9CkBAIC0xMTg0LDcgKzExNjgsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRl
cm1Db25zdGFudFVuaW9uOjpmb2xkCiAKICAgICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNW
ZWN0b3I6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldEJhc2ljVHlwZSgpICE9IEVidEZs
b2F0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJp
eCB0aW1lcyB2ZWN0b3IiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50
IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCB0aW1lcyB2ZWN0b3IiKTsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bZ2V0Tm9taW5hbFNpemUoKV07
CkBAIC0xMjA1LDcgKzExODksNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9u
Ojpmb2xkCiAKICAgICAgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6CiAgICAgICAg
ICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCkgewotICAg
ICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciB2ZWN0b3IgdGltZXMgbWF0
cml4IiwgZ2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJDb25zdGFudCBGb2xkaW5nIGNh
bm5vdCBiZSBkb25lIGZvciB2ZWN0b3IgdGltZXMgbWF0cml4Iik7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTIyMyw3ICsxMjA3LDcgQEAg
VEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2Fz
ZSBFT3BMb2dpY2FsQW5kOiAvLyB0aGlzIGNvZGUgaXMgd3JpdHRlbiBmb3IgcG9zc2libGUgZnV0
dXJlIHVzZSwgd2lsbCBub3QgZ2V0IGV4ZWN1dGVkIGN1cnJlbnRseQogICAgICAgICAgICAgICAg
IHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAg
ICAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlbXBDb25zdEFycmF5W2ldID0gdW5pb25BcnJheVtpXSAmJiByaWdodFVuaW9uQXJyYXlb
aV07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTIzMSw3
ICsxMjE1LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAg
ICAgICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6IC8vIHRoaXMgY29kZSBpcyB3cml0dGVuIGZvciBw
b3NzaWJsZSBmdXR1cmUgdXNlLCB3aWxsIG5vdCBnZXQgZXhlY3V0ZWQgY3VycmVudGx5CiAgICAg
ICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXpl
XTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAg
ICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldIHx8IHJpZ2h0
VW5pb25BcnJheVtpXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMjM5LDcgKzEyMjMsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9u
Ojpmb2xkCiAgICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxYb3I6CiAgICAgICAgICAgICAgICAg
dGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAg
ICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2Ug
RWJ0Qm9vbDogdGVtcENvbnN0QXJyYXlbaV0uc2V0QkNvbnN0KCh1bmlvbkFycmF5W2ldID09IHJp
Z2h0VW5pb25BcnJheVtpXSkgPyBmYWxzZSA6IHRydWUpOyBicmVhazsKICAgICAgICAgICAgIGRl
ZmF1bHQ6IGFzc2VydChmYWxzZSAmJiAiRGVmYXVsdCBtaXNzaW5nIik7CkBAIC0xMjg1LDcgKzEy
NjksNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAg
ICAgICAgICAgICAgIGlmICghQ29tcGFyZVN0cnVjdHVyZShub2RlLT5nZXRUeXBlKCksIG5vZGUt
PmdldFVuaW9uQXJyYXlQb2ludGVyKCksIHVuaW9uQXJyYXkpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkr
KykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaW9uQXJyYXlbaV0gIT0gcmlnaHRV
bmlvbkFycmF5W2ldKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFn
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgIC8vIGJyZWFrIG91
dCBvZiBmb3IgbG9vcApAQCAtMTMxMSw3ICsxMjk1LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJt
Q29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgICAgICAgICBpZiAoQ29tcGFyZVN0cnVj
dHVyZShub2RlLT5nZXRUeXBlKCksIG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCksIHVuaW9u
QXJyYXkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG9iamVjdFNpemU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHVuaW9uQXJyYXlbaV0gPT0gcmlnaHRVbmlvbkFycmF5W2ldKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbE5vZGVGbGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsgIC8vIGJyZWFrIG91dCBvZiBmb3IgbG9vcApAQCAtMTMzMyw3ICsxMzE3
LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAg
ICAgICAgIHJldHVybiB0ZW1wTm9kZTsKIAogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJJbnZh
bGlkIG9wZXJhdG9yIGZvciBjb25zdGFudCBmb2xkaW5nIiwgZ2V0TGluZSgpKTsKKyAgICAgICAg
ICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExp
bmUoKSwgIkludmFsaWQgb3BlcmF0b3IgZm9yIGNvbnN0YW50IGZvbGRpbmciKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICB0ZW1wTm9kZSA9IG5ldyBUSW50
ZXJtQ29uc3RhbnRVbmlvbih0ZW1wQ29uc3RBcnJheSwgcmV0dXJuVHlwZSk7CkBAIC0xMzQ2LDE0
ICsxMzMwLDE0IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAg
ICAgICAgLy8KICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5ld05vZGUgPSAwOwogICAg
ICAgICBDb25zdGFudFVuaW9uKiB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29i
amVjdFNpemVdOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykg
eworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykgewogICAg
ICAgICAgICAgc3dpdGNoKG9wKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBFT3BOZWdhdGl2ZToK
ICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6IHRlbXBDb25zdEFycmF5W2ld
LnNldEZDb25zdCgtdW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSk7IGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6ICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0
KC11bmlvbkFycmF5W2ldLmdldElDb25zdCgpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVk
IGludG8gY29uc3RhbnQiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAi
VW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM2MSw3ICsxMzQ1LDcgQEAgVEludGVybVR5cGVkKiBU
SW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdl
dFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRCb29sOiAgdGVtcENvbnN0QXJyYXlbaV0uc2V0QkNvbnN0KCF1bmlvbkFycmF5W2ldLmdldEJD
b25zdCgpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiLCBnZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBm
b2xkZWQgaW50byBjb25zdGFudCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTM3Nyw2NSArMTM2MSw2NCBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9u
Ojpmb2xkCiAKIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6cHJvbW90ZUNvbnN0YW50VW5p
b24oVEJhc2ljVHlwZSBwcm9tb3RlVG8sIFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2RlKQogewot
ICAgIENvbnN0YW50VW5pb24gKnJpZ2h0VW5pb25BcnJheSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCk7Ci0gICAgaW50IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgp
OworICAgIHNpemVfdCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKIAog
ICAgIENvbnN0YW50VW5pb24gKmxlZnRVbmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bc2l6
ZV07CiAKLSAgICBmb3IgKGludCBpPTA7IGkgPCBzaXplOyBpKyspIHsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogCiAgICAgICAgIHN3aXRjaCAocHJvbW90ZVRvKSB7
CiAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9k
ZS0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0SW50OgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNv
bnN0KHN0YXRpY19jYXN0PGZsb2F0PihyaWdodFVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0
aWNfY2FzdDxmbG9hdD4obm9kZS0+Z2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oaSkpKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRCb29sOgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNv
bnN0KHN0YXRpY19jYXN0PGZsb2F0PihyaWdodFVuaW9uQXJyYXlbaV0uZ2V0QkNvbnN0KCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEZDb25zdChzdGF0
aWNfY2FzdDxmbG9hdD4obm9kZS0+Z2V0QkNvbnN0KHN0YXRpY19jYXN0PGJvb2w+KGkpKSkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXSA9IHJp
Z2h0VW5pb25BcnJheVtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5
W2ldLnNldEZDb25zdChzdGF0aWNfY2FzdDxmbG9hdD4obm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19j
YXN0PGZsb2F0PihpKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQ2Fubm90IHByb21vdGUiLCBub2Rl
LT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJDYW5ub3QgcHJvbW90
ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAg
ICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBs
ZWZ0VW5pb25BcnJheVtpXSA9IHJpZ2h0VW5pb25BcnJheVtpXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUt
PmdldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KGkpKSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+
KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRCQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+Z2V0
QkNvbnN0KHN0YXRpY19jYXN0PGJvb2w+KGkpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihy
aWdodFVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQ+KG5vZGUtPmdldEZD
b25zdChzdGF0aWNfY2FzdDxmbG9hdD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNhbm5vdCBw
cm9tb3RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAi
Q2Fubm90IHByb21vdGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
RWJ0Qm9vbDoKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldFR5cGUoKS5nZXRCYXNp
Y1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChyaWdodFVuaW9uQXJyYXlb
aV0uZ2V0SUNvbnN0KCkgIT0gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25B
cnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oaSkpICE9
IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ld
ID0gcmlnaHRVbmlvbkFycmF5W2ldOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9u
QXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUtPmdldEJDb25zdChzdGF0aWNfY2FzdDxib29sPihpKSkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5z
ZXRCQ29uc3QocmlnaHRVbmlvbkFycmF5W2ldLmdldEZDb25zdCgpICE9IDAuMGYpOworICAgICAg
ICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KG5vZGUtPmdldEZD
b25zdChzdGF0aWNfY2FzdDxmbG9hdD4oaSkpICE9IDAuMGYpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJD
YW5ub3QgcHJvbW90ZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExp
bmUoKSwgIkNhbm5vdCBwcm9tb3RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhJbnRlcm5hbEVycm9yLCAiSW5jb3JyZWN0IGRhdGEgdHlwZSBmb3VuZCIsIG5vZGUtPmdldExp
bmUoKSk7CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRl
cm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJJbmNvcnJlY3QgZGF0YSB0eXBlIGZvdW5kIik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmNwcAkocmV2
aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091
dHB1dEdMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwzICsxOSwxNyBAQCBib29sIFRPdXRw
dXRHTFNMOjp3cml0ZVZhcmlhYmxlUHJlY2lzaW9uCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQor
Cit2b2lkIFRPdXRwdXRHTFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKiBub2RlKQorewor
ICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IG9ialNpbmsoKTsKKworICAgIGlmIChub2RlLT5nZXRT
eW1ib2woKSA9PSAiZ2xfRnJhZ0RlcHRoRVhUIikKKyAgICB7CisgICAgICAgIG91dCA8PCAiZ2xf
RnJhZ0RlcHRoIjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgVE91dHB1dEdMU0xC
YXNlOjp2aXNpdFN5bWJvbChub2RlKTsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmgJKHJldmlzaW9uIDE1Mjk3
OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBib29sIHdyaXRlVmFyaWFibGVQcmVjaXNpb24oVFByZWNpc2lvbik7CisgICAg
dmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqIG5vZGUpOwogfTsKIAogI2Vu
ZGlmICAvLyBDUk9TU0NPTVBJTEVSR0xTTF9PVVRQVVRHTFNMX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5j
cHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9PdXRwdXRHTFNMQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDI1ICs3OSw5IEBA
IHZvaWQgVE91dHB1dEdMU0xCYXNlOjp3cml0ZVZhcmlhYmxlVHlwZSgKICAgICBpZiAoKHF1YWxp
ZmllciAhPSBFdnFUZW1wb3JhcnkpICYmIChxdWFsaWZpZXIgIT0gRXZxR2xvYmFsKSkKICAgICAg
ICAgb3V0IDw8IHR5cGUuZ2V0UXVhbGlmaWVyU3RyaW5nKCkgPDwgIiAiOwogICAgIC8vIERlY2xh
cmUgdGhlIHN0cnVjdCBpZiB3ZSBoYXZlIG5vdCBkb25lIHNvIGFscmVhZHkuCi0gICAgaWYgKCh0
eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgJiYKLSAgICAgICAgKG1EZWNsYXJlZFN0
cnVjdHMuZmluZCh0eXBlLmdldFR5cGVOYW1lKCkpID09IG1EZWNsYXJlZFN0cnVjdHMuZW5kKCkp
KQorICAgIGlmICgodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpICYmICFzdHJ1Y3RE
ZWNsYXJlZCh0eXBlLmdldFN0cnVjdCgpKSkKICAgICB7Ci0gICAgICAgIG91dCA8PCAic3RydWN0
ICIgPDwgaGFzaE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKSA8PCAie1xuIjsKLSAgICAgICAgY29u
c3QgVFR5cGVMaXN0KiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOwotICAgICAgICBBU1NF
UlQoc3RydWN0dXJlICE9IE5VTEwpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
cnVjdHVyZS0+c2l6ZSgpOyArK2kpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBl
KiBmaWVsZFR5cGUgPSAoKnN0cnVjdHVyZSlbaV0udHlwZTsKLSAgICAgICAgICAgIEFTU0VSVChm
aWVsZFR5cGUgIT0gTlVMTCk7Ci0gICAgICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lv
bihmaWVsZFR5cGUtPmdldFByZWNpc2lvbigpKSkKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiAi
OwotICAgICAgICAgICAgb3V0IDw8IGdldFR5cGVOYW1lKCpmaWVsZFR5cGUpIDw8ICIgIiA8PCBo
YXNoTmFtZShmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpKTsKLSAgICAgICAgICAgIGlmIChmaWVs
ZFR5cGUtPmlzQXJyYXkoKSkKLSAgICAgICAgICAgICAgICBvdXQgPDwgYXJyYXlCcmFja2V0cygq
ZmllbGRUeXBlKTsKLSAgICAgICAgICAgIG91dCA8PCAiO1xuIjsKLSAgICAgICAgfQotICAgICAg
ICBvdXQgPDwgIn0iOwotICAgICAgICBtRGVjbGFyZWRTdHJ1Y3RzLmluc2VydCh0eXBlLmdldFR5
cGVOYW1lKCkpOworICAgICAgICBkZWNsYXJlU3RydWN0KHR5cGUuZ2V0U3RydWN0KCkpOwogICAg
IH0KICAgICBlbHNlCiAgICAgewpAQCAtMTM4LDI0ICsxMjIsMjUgQEAgY29uc3QgQ29uc3RhbnRV
bmlvbiogVE91dHB1dEdMU0xCYXNlOjp3cgogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkg
PT0gRWJ0U3RydWN0KQogICAgIHsKLSAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5cGUuZ2V0VHlw
ZU5hbWUoKSkgPDwgIigiOwotICAgICAgICBjb25zdCBUVHlwZUxpc3QqIHN0cnVjdHVyZSA9IHR5
cGUuZ2V0U3RydWN0KCk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gTlVMTCk7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkKKyAgICAg
ICAgY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAg
ICAgb3V0IDw8IGhhc2hOYW1lKHN0cnVjdHVyZS0+bmFtZSgpKSA8PCAiKCI7CisKKyAgICAgICAg
Y29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gc3RydWN0dXJlLT5maWVsZHMoKTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUgPSAoKnN0cnVjdHVyZSlbaV0udHlwZTsK
KyAgICAgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUgPSBmaWVsZHNbaV0tPnR5cGUoKTsK
ICAgICAgICAgICAgIEFTU0VSVChmaWVsZFR5cGUgIT0gTlVMTCk7CiAgICAgICAgICAgICBwQ29u
c3RVbmlvbiA9IHdyaXRlQ29uc3RhbnRVbmlvbigqZmllbGRUeXBlLCBwQ29uc3RVbmlvbik7Ci0g
ICAgICAgICAgICBpZiAoaSAhPSBzdHJ1Y3R1cmUtPnNpemUoKSAtIDEpIG91dCA8PCAiLCAiOwor
ICAgICAgICAgICAgaWYgKGkgIT0gZmllbGRzLnNpemUoKSAtIDEpIG91dCA8PCAiLCAiOwogICAg
ICAgICB9CiAgICAgICAgIG91dCA8PCAiKSI7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAg
ICAgIGludCBzaXplID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIHNpemVfdCBzaXpl
ID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CiAgICAgICAgIGJvb2wgd3JpdGVUeXBlID0gc2l6ZSA+
IDE7CiAgICAgICAgIGlmICh3cml0ZVR5cGUpIG91dCA8PCBnZXRUeXBlTmFtZSh0eXBlKSA8PCAi
KCI7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpLCArK3BDb25zdFVuaW9u
KQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSwgKytwQ29uc3RVbmlv
bikKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChwQ29uc3RVbmlvbi0+Z2V0VHlwZSgp
KQogICAgICAgICAgICAgewpAQCAtMjYwLDEyICsyNDUsMTggQEAgYm9vbCBUT3V0cHV0R0xTTEJh
c2U6OnZpc2l0QmluYXJ5KFZpc2l0IAogICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0
OgogICAgICAgICAgICAgaWYgKHZpc2l0ID09IEluVmlzaXQpCiAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgLy8gSGVyZSB3ZSBhcmUgd3JpdGluZyBvdXQgImZvby5iYXIiLCB3aGVyZSAi
Zm9vIiBpcyBzdHJ1Y3QKKyAgICAgICAgICAgICAgICAvLyBhbmQgImJhciIgaXMgZmllbGQuIElu
IEFTVCwgaXQgaXMgcmVwcmVzZW50ZWQgYXMgYSBiaW5hcnkKKyAgICAgICAgICAgICAgICAvLyBu
b2RlLCB3aGVyZSBsZWZ0IGNoaWxkIHJlcHJlc2VudHMgImZvbyIgYW5kIHJpZ2h0IGNoaWxkICJi
YXIiLgorICAgICAgICAgICAgICAgIC8vIFRoZSBub2RlIGl0c2VsZiByZXByZXNlbnRzICIuIi4g
VGhlIHN0cnVjdCBmaWVsZCAiYmFyIiBpcworICAgICAgICAgICAgICAgIC8vIGFjdHVhbGx5IHN0
b3JlZCBhcyBhbiBpbmRleCBpbnRvIFRTdHJ1Y3R1cmU6OmZpZWxkcy4KICAgICAgICAgICAgICAg
ICBvdXQgPDwgIi4iOwotICAgICAgICAgICAgICAgIC8vIFRPRE8oYWxva3ApOiBBU1NFUlQKLSAg
ICAgICAgICAgICAgICBUU3RyaW5nIGZpZWxkTmFtZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRGaWVs
ZE5hbWUoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBu
b2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgICAgICAgICBj
b25zdCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogaW5kZXggPSBub2RlLT5nZXRSaWdodCgpLT5nZXRB
c0NvbnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgICAgICBjb25zdCBURmllbGQqIGZpZWxkID0g
c3RydWN0dXJlLT5maWVsZHMoKVtpbmRleC0+Z2V0SUNvbnN0KDApXTsKIAotICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlJiBzdHJ1Y3RUeXBlID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFtU3ltYm9sVGFibGUuZmluZEJ1aWx0SW4oc3RydWN0VHlw
ZS5nZXRUeXBlTmFtZSgpKSkKKyAgICAgICAgICAgICAgICBUU3RyaW5nIGZpZWxkTmFtZSA9IGZp
ZWxkLT5uYW1lKCk7CisgICAgICAgICAgICAgICAgaWYgKCFtU3ltYm9sVGFibGUuZmluZEJ1aWx0
SW4oc3RydWN0dXJlLT5uYW1lKCkpKQogICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUgPSBo
YXNoTmFtZShmaWVsZE5hbWUpOwogCiAgICAgICAgICAgICAgICAgb3V0IDw8IGZpZWxkTmFtZTsK
QEAgLTU5Niw3ICs1ODcsNyBAQCBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRBZ2dyZWdhdGUo
VmlzCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUmIHR5cGUgPSBu
b2RlLT5nZXRUeXBlKCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUuZ2V0QmFzaWNUeXBl
KCkgPT0gRWJ0U3RydWN0KTsKLSAgICAgICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5n
ZXRUeXBlTmFtZSgpKSA8PCAiKCI7CisgICAgICAgICAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5
cGUuZ2V0U3RydWN0KCktPm5hbWUoKSkgPDwgIigiOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgZWxzZSBpZiAodmlzaXQgPT0gSW5WaXNpdCkKICAgICAgICAgICAgIHsKQEAgLTc2NSw3ICs3
NTYsNyBAQCBUU3RyaW5nIFRPdXRwdXRHTFNMQmFzZTo6Z2V0VHlwZU5hbWUoY29uCiAgICAgZWxz
ZQogICAgIHsKICAgICAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQot
ICAgICAgICAgICAgb3V0IDw8IGhhc2hOYW1lKHR5cGUuZ2V0VHlwZU5hbWUoKSk7CisgICAgICAg
ICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRTdHJ1Y3QoKS0+bmFtZSgpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgb3V0IDw8IHR5cGUuZ2V0QmFzaWNTdHJpbmcoKTsKICAgICB9CkBA
IC03OTgsMyArNzg5LDI5IEBAIFRTdHJpbmcgVE91dHB1dEdMU0xCYXNlOjpoYXNoRnVuY3Rpb25O
YW0KICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgcmV0dXJuIGhhc2hOYW1lKG5hbWUpOwogfQor
Citib29sIFRPdXRwdXRHTFNMQmFzZTo6c3RydWN0RGVjbGFyZWQoY29uc3QgVFN0cnVjdHVyZSog
c3RydWN0dXJlKSBjb25zdAoreworICAgIHJldHVybiBtRGVjbGFyZWRTdHJ1Y3RzLmZpbmQoc3Ry
dWN0dXJlLT5uYW1lKCkpICE9IG1EZWNsYXJlZFN0cnVjdHMuZW5kKCk7Cit9CisKK3ZvaWQgVE91
dHB1dEdMU0xCYXNlOjpkZWNsYXJlU3RydWN0KGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K3sKKyAgICBUSW5mb1NpbmtCYXNlJiBvdXQgPSBvYmpTaW5rKCk7CisKKyAgICBvdXQgPDwgInN0
cnVjdCAiIDw8IGhhc2hOYW1lKHN0cnVjdHVyZS0+bmFtZSgpKSA8PCAie1xuIjsKKyAgICBjb25z
dCBURmllbGRMaXN0JiBmaWVsZHMgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytpKQorICAgIHsKKyAgICAgICAgY29uc3Qg
VEZpZWxkKiBmaWVsZCA9IGZpZWxkc1tpXTsKKyAgICAgICAgaWYgKHdyaXRlVmFyaWFibGVQcmVj
aXNpb24oZmllbGQtPnR5cGUoKS0+Z2V0UHJlY2lzaW9uKCkpKQorICAgICAgICAgICAgb3V0IDw8
ICIgIjsKKyAgICAgICAgb3V0IDw8IGdldFR5cGVOYW1lKCpmaWVsZC0+dHlwZSgpKSA8PCAiICIg
PDwgaGFzaE5hbWUoZmllbGQtPm5hbWUoKSk7CisgICAgICAgIGlmIChmaWVsZC0+dHlwZSgpLT5p
c0FycmF5KCkpCisgICAgICAgICAgICBvdXQgPDwgYXJyYXlCcmFja2V0cygqZmllbGQtPnR5cGUo
KSk7CisgICAgICAgIG91dCA8PCAiO1xuIjsKKyAgICB9CisgICAgb3V0IDw8ICJ9IjsKKworICAg
IG1EZWNsYXJlZFN0cnVjdHMuaW5zZXJ0KHN0cnVjdHVyZS0+bmFtZSgpKTsKK30KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNM
QmFzZS5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgVFN0cmluZyBoYXNoRnVuY3Rpb25OYW1lKGNvbnN0IFRTdHJpbmcm
IG1hbmdsZWRfbmFtZSk7CiAKIHByaXZhdGU6CisgICAgYm9vbCBzdHJ1Y3REZWNsYXJlZChjb25z
dCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0OworICAgIHZvaWQgZGVjbGFyZVN0cnVjdChj
b25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUpOworCiAgICAgVEluZm9TaW5rQmFzZSYgbU9ialNp
bms7CiAgICAgYm9vbCBtRGVjbGFyaW5nVmFyaWFibGVzOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwCShyZXZpc2lv
biAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0
SExTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTI3LDcgKzI3LDggQEAgVFN0cmluZyBzdHIoaW50IGkp
CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotT3V0cHV0SExTTDo6T3V0cHV0SExTTChUUGFyc2VD
b250ZXh0ICZjb250ZXh0KSA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgdHJ1ZSwgdHJ1ZSksIG1D
b250ZXh0KGNvbnRleHQpCitPdXRwdXRITFNMOjpPdXRwdXRITFNMKFRQYXJzZUNvbnRleHQgJmNv
bnRleHQsIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLCBTaFNoYWRlck91dHB1
dCBvdXRwdXRUeXBlKQorICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCB0cnVlLCB0cnVlKSwg
bUNvbnRleHQoY29udGV4dCksIG1PdXRwdXRUeXBlKG91dHB1dFR5cGUpCiB7CiAgICAgbVVuZm9s
ZFNob3J0Q2lyY3VpdCA9IG5ldyBVbmZvbGRTaG9ydENpcmN1aXQoY29udGV4dCwgdGhpcyk7CiAg
ICAgbUluc2lkZUZ1bmN0aW9uID0gZmFsc2U7CkBAIC00NywxMSArNDgsMTQgQEAgT3V0cHV0SExT
TDo6T3V0cHV0SExTTChUUGFyc2VDb250ZXh0ICZjbwogICAgIG1Vc2VzVGV4dHVyZTJEUHJvakxv
ZDBfYmlhcyA9IGZhbHNlOwogICAgIG1Vc2VzVGV4dHVyZUN1YmVMb2QwID0gZmFsc2U7CiAgICAg
bVVzZXNUZXh0dXJlQ3ViZUxvZDBfYmlhcyA9IGZhbHNlOworICAgIG1Vc2VzRnJhZ0NvbG9yID0g
ZmFsc2U7CisgICAgbVVzZXNGcmFnRGF0YSA9IGZhbHNlOwogICAgIG1Vc2VzRGVwdGhSYW5nZSA9
IGZhbHNlOwogICAgIG1Vc2VzRnJhZ0Nvb3JkID0gZmFsc2U7CiAgICAgbVVzZXNQb2ludENvb3Jk
ID0gZmFsc2U7CiAgICAgbVVzZXNGcm9udEZhY2luZyA9IGZhbHNlOwogICAgIG1Vc2VzUG9pbnRT
aXplID0gZmFsc2U7CisgICAgbVVzZXNGcmFnRGVwdGggPSBmYWxzZTsKICAgICBtVXNlc1hvciA9
IGZhbHNlOwogICAgIG1Vc2VzTW9kMSA9IGZhbHNlOwogICAgIG1Vc2VzTW9kMnYgPSBmYWxzZTsK
QEAgLTgxLDYgKzg1LDggQEAgT3V0cHV0SExTTDo6T3V0cHV0SExTTChUUGFyc2VDb250ZXh0ICZj
bwogICAgIG1Vc2VzQXRhbjJfMyA9IGZhbHNlOwogICAgIG1Vc2VzQXRhbjJfNCA9IGZhbHNlOwog
CisgICAgbU51bVJlbmRlclRhcmdldHMgPSByZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyA/IHJl
c291cmNlcy5NYXhEcmF3QnVmZmVycyA6IDE7CisKICAgICBtU2NvcGVEZXB0aCA9IDA7CiAKICAg
ICBtVW5pcXVlSW5kZXggPSAwOwpAQCAtOTAsNiArOTYsMjQgQEAgT3V0cHV0SExTTDo6T3V0cHV0
SExTTChUUGFyc2VDb250ZXh0ICZjbwogICAgIG1JbnNpZGVEaXNjb250aW51b3VzTG9vcCA9IGZh
bHNlOwogCiAgICAgbUV4Y2Vzc2l2ZUxvb3BJbmRleCA9IE5VTEw7CisKKyAgICBpZiAobU91dHB1
dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgIHsKKyAgICAgICAgaWYgKG1Db250ZXh0LnNo
YWRlclR5cGUgPT0gU0hfRlJBR01FTlRfU0hBREVSKQorICAgICAgICB7CisgICAgICAgICAgICBt
VW5pZm9ybVJlZ2lzdGVyID0gMzsgICAvLyBSZXNlcnZlIHJlZ2lzdGVycyBmb3IgZHhfRGVwdGhS
YW5nZSwgZHhfVmlld0Nvb3JkcyBhbmQgZHhfRGVwdGhGcm9udAorICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbVVuaWZvcm1SZWdpc3RlciA9IDI7ICAgLy8g
UmVzZXJ2ZSByZWdpc3RlcnMgZm9yIGR4X0RlcHRoUmFuZ2UgYW5kIGR4X1ZpZXdBZGp1c3QKKyAg
ICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtVW5pZm9ybVJlZ2lzdGVy
ID0gMDsKKyAgICB9CisKKyAgICBtU2FtcGxlclJlZ2lzdGVyID0gMDsKIH0KIAogT3V0cHV0SExT
TDo6fk91dHB1dEhMU0woKQpAQCAtMTEzLDYgKzEzNywxMSBAQCBUSW5mb1NpbmtCYXNlICZPdXRw
dXRITFNMOjpnZXRCb2R5U3RyZWFtCiAgICAgcmV0dXJuIG1Cb2R5OwogfQogCitjb25zdCBBY3Rp
dmVVbmlmb3JtcyAmT3V0cHV0SExTTDo6Z2V0VW5pZm9ybXMoKQoreworICAgIHJldHVybiBtQWN0
aXZlVW5pZm9ybXM7Cit9CisKIGludCBPdXRwdXRITFNMOjp2ZWN0b3JTaXplKGNvbnN0IFRUeXBl
ICZ0eXBlKSBjb25zdAogewogICAgIGludCBlbGVtZW50U2l6ZSA9IHR5cGUuaXNNYXRyaXgoKSA/
IHR5cGUuZ2V0Tm9taW5hbFNpemUoKSA6IDE7CkBAIC0xMzYsNTggKzE2NSw3NiBAQCB2b2lkIE91
dHB1dEhMU0w6OmhlYWRlcigpCiAgICAgICAgIG91dCA8PCAqY29uc3RydWN0b3I7CiAgICAgfQog
Ci0gICAgaWYgKHNoYWRlclR5cGUgPT0gU0hfRlJBR01FTlRfU0hBREVSKQorICAgIFRTdHJpbmcg
dW5pZm9ybXM7CisgICAgVFN0cmluZyB2YXJ5aW5nczsKKyAgICBUU3RyaW5nIGF0dHJpYnV0ZXM7
CisKKyAgICBmb3IgKFJlZmVyZW5jZWRTeW1ib2xzOjpjb25zdF9pdGVyYXRvciB1bmlmb3JtID0g
bVJlZmVyZW5jZWRVbmlmb3Jtcy5iZWdpbigpOyB1bmlmb3JtICE9IG1SZWZlcmVuY2VkVW5pZm9y
bXMuZW5kKCk7IHVuaWZvcm0rKykKICAgICB7Ci0gICAgICAgIFRTdHJpbmcgdW5pZm9ybXM7Ci0g
ICAgICAgIFRTdHJpbmcgdmFyeWluZ3M7CisgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gdW5p
Zm9ybS0+c2Vjb25kLT5nZXRUeXBlKCk7CisgICAgICAgIGNvbnN0IFRTdHJpbmcgJm5hbWUgPSB1
bmlmb3JtLT5zZWNvbmQtPmdldFN5bWJvbCgpOwogCi0gICAgICAgIFRTeW1ib2xUYWJsZUxldmVs
ICpzeW1ib2xzID0gbUNvbnRleHQuc3ltYm9sVGFibGUuZ2V0R2xvYmFsTGV2ZWwoKTsKLSAgICAg
ICAgaW50IHNlbWFudGljSW5kZXggPSAwOworICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hf
SExTTDExX09VVFBVVCAmJiBJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpICAgLy8gQWxz
byBkZWNsYXJlIHRoZSB0ZXh0dXJlCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9
IHNhbXBsZXJSZWdpc3RlcihtUmVmZXJlbmNlZFVuaWZvcm1zW25hbWVdKTsKIAotICAgICAgICBm
b3IgKFRTeW1ib2xUYWJsZUxldmVsOjpjb25zdF9pdGVyYXRvciBuYW1lZFN5bWJvbCA9IHN5bWJv
bHMtPmJlZ2luKCk7IG5hbWVkU3ltYm9sICE9IHN5bWJvbHMtPmVuZCgpOyBuYW1lZFN5bWJvbCsr
KQorICAgICAgICAgICAgdW5pZm9ybXMgKz0gInVuaWZvcm0gU2FtcGxlclN0YXRlIHNhbXBsZXJf
IiArIGRlY29yYXRlVW5pZm9ybShuYW1lLCB0eXBlKSArIGFycmF5U3RyaW5nKHR5cGUpICsgCisg
ICAgICAgICAgICAgICAgICAgICAgICAiIDogcmVnaXN0ZXIocyIgKyBzdHIoaW5kZXgpICsgIik7
XG4iOworCisgICAgICAgICAgICB1bmlmb3JtcyArPSAidW5pZm9ybSAiICsgdGV4dHVyZVN0cmlu
Zyh0eXBlKSArICIgdGV4dHVyZV8iICsgZGVjb3JhdGVVbmlmb3JtKG5hbWUsIHR5cGUpICsgYXJy
YXlTdHJpbmcodHlwZSkgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICIgOiByZWdpc3Rlcih0
IiArIHN0cihpbmRleCkgKyAiKTtcbiI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb25zdCBUU3ltYm9sICpzeW1ib2wgPSAoKm5hbWVkU3ltYm9sKS5z
ZWNvbmQ7Ci0gICAgICAgICAgICBjb25zdCBUU3RyaW5nICZuYW1lID0gc3ltYm9sLT5nZXROYW1l
KCk7CisgICAgICAgICAgICB1bmlmb3JtcyArPSAidW5pZm9ybSAiICsgdHlwZVN0cmluZyh0eXBl
KSArICIgIiArIGRlY29yYXRlVW5pZm9ybShuYW1lLCB0eXBlKSArIGFycmF5U3RyaW5nKHR5cGUp
ICsgCisgICAgICAgICAgICAgICAgICAgICAgICAiIDogcmVnaXN0ZXIoIiArIHJlZ2lzdGVyU3Ry
aW5nKG1SZWZlcmVuY2VkVW5pZm9ybXNbbmFtZV0pICsgIik7XG4iOworICAgICAgICB9CisgICAg
fQogCi0gICAgICAgICAgICBpZiAoc3ltYm9sLT5pc1ZhcmlhYmxlKCkpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgY29uc3QgVFZhcmlhYmxlICp2YXJpYWJsZSA9IHN0YXRpY19jYXN0
PGNvbnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7Ci0gICAgICAgICAgICAgICAgY29uc3QgVFR5cGUg
JnR5cGUgPSB2YXJpYWJsZS0+Z2V0VHlwZSgpOwotICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbGlmaWVyID0gdHlwZS5nZXRRdWFsaWZpZXIoKTsKKyAgICBmb3IgKFJlZmVyZW5jZWRTeW1i
b2xzOjpjb25zdF9pdGVyYXRvciB2YXJ5aW5nID0gbVJlZmVyZW5jZWRWYXJ5aW5ncy5iZWdpbigp
OyB2YXJ5aW5nICE9IG1SZWZlcmVuY2VkVmFyeWluZ3MuZW5kKCk7IHZhcnlpbmcrKykKKyAgICB7
CisgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gdmFyeWluZy0+c2Vjb25kLT5nZXRUeXBlKCk7
CisgICAgICAgIGNvbnN0IFRTdHJpbmcgJm5hbWUgPSB2YXJ5aW5nLT5zZWNvbmQtPmdldFN5bWJv
bCgpOwogCi0gICAgICAgICAgICAgICAgaWYgKHF1YWxpZmllciA9PSBFdnFVbmlmb3JtKQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1SZWZlcmVuY2VkVW5pZm9y
bXMuZmluZChuYW1lLmNfc3RyKCkpICE9IG1SZWZlcmVuY2VkVW5pZm9ybXMuZW5kKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1zICs9ICJ1
bmlmb3JtICIgKyB0eXBlU3RyaW5nKHR5cGUpICsgIiAiICsgZGVjb3JhdGVVbmlmb3JtKG5hbWUs
IHR5cGUpICsgYXJyYXlTdHJpbmcodHlwZSkgKyAiO1xuIjsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIg
PT0gRXZxVmFyeWluZ0luIHx8IHF1YWxpZmllciA9PSBFdnFJbnZhcmlhbnRWYXJ5aW5nSW4pCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAobVJlZmVyZW5jZWRWYXJ5
aW5ncy5maW5kKG5hbWUuY19zdHIoKSkgIT0gbVJlZmVyZW5jZWRWYXJ5aW5ncy5lbmQoKSkKLSAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJvZ3JhbSBs
aW5raW5nIGRlcGVuZHMgb24gdGhpcyBleGFjdCBmb3JtYXQKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHZhcnlpbmdzICs9ICJzdGF0aWMgIiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBkZWNv
cmF0ZShuYW1lKSArIGFycmF5U3RyaW5nKHR5cGUpICsgIiA9ICIgKyBpbml0aWFsaXplcih0eXBl
KSArICI7XG4iOworICAgICAgICAvLyBQcm9ncmFtIGxpbmtpbmcgZGVwZW5kcyBvbiB0aGlzIGV4
YWN0IGZvcm1hdAorICAgICAgICB2YXJ5aW5ncyArPSAic3RhdGljICIgKyB0eXBlU3RyaW5nKHR5
cGUpICsgIiAiICsgZGVjb3JhdGUobmFtZSkgKyBhcnJheVN0cmluZyh0eXBlKSArICIgPSAiICsg
aW5pdGlhbGl6ZXIodHlwZSkgKyAiO1xuIjsKKyAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbWFudGljSW5kZXggKz0gdHlwZS5pc0FycmF5KCkgPyB0eXBlLmdldEFycmF5U2l6ZSgp
IDogMTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxR2xvYmFsIHx8IHF1YWxpZmllciA9PSBF
dnFUZW1wb3JhcnkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBH
bG9iYWxzIGFyZSBkZWNsYXJlZCBhbmQgaW50aWFsaXplZCBhcyBhbiBhZ2dyZWdhdGUgbm9kZQot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0g
RXZxQ29uc3QpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBDb25z
dGFudHMgYXJlIHJlcGVhdGVkIGFzIGxpdGVyYWxzIHdoZXJlIHVzZWQKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9CisgICAgZm9yIChSZWZlcmVuY2VkU3ltYm9sczo6Y29uc3RfaXRlcmF0b3IgYXR0
cmlidXRlID0gbVJlZmVyZW5jZWRBdHRyaWJ1dGVzLmJlZ2luKCk7IGF0dHJpYnV0ZSAhPSBtUmVm
ZXJlbmNlZEF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQorICAgIHsKKyAgICAgICAgY29u
c3QgVFR5cGUgJnR5cGUgPSBhdHRyaWJ1dGUtPnNlY29uZC0+Z2V0VHlwZSgpOworICAgICAgICBj
b25zdCBUU3RyaW5nICZuYW1lID0gYXR0cmlidXRlLT5zZWNvbmQtPmdldFN5bWJvbCgpOworCisg
ICAgICAgIGF0dHJpYnV0ZXMgKz0gInN0YXRpYyAiICsgdHlwZVN0cmluZyh0eXBlKSArICIgIiAr
IGRlY29yYXRlKG5hbWUpICsgYXJyYXlTdHJpbmcodHlwZSkgKyAiID0gIiArIGluaXRpYWxpemVy
KHR5cGUpICsgIjtcbiI7CisgICAgfQorCisgICAgaWYgKHNoYWRlclR5cGUgPT0gU0hfRlJBR01F
TlRfU0hBREVSKQorICAgIHsKKyAgICAgICAgVEV4dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVy
YXRvciBpdGVyID0gbUNvbnRleHQuZXh0ZW5zaW9uQmVoYXZpb3IoKS5maW5kKCJHTF9FWFRfZHJh
d19idWZmZXJzIik7CisgICAgICAgIGNvbnN0IGJvb2wgdXNpbmdNUlRFeHRlbnNpb24gPSAoaXRl
ciAhPSBtQ29udGV4dC5leHRlbnNpb25CZWhhdmlvcigpLmVuZCgpICYmIChpdGVyLT5zZWNvbmQg
PT0gRUJoRW5hYmxlIHx8IGl0ZXItPnNlY29uZCA9PSBFQmhSZXF1aXJlKSk7CisKKyAgICAgICAg
Y29uc3QgdW5zaWduZWQgaW50IG51bUNvbG9yVmFsdWVzID0gdXNpbmdNUlRFeHRlbnNpb24gPyBt
TnVtUmVuZGVyVGFyZ2V0cyA6IDE7CiAKICAgICAgICAgb3V0IDw8ICIvLyBWYXJ5aW5nc1xuIjsK
ICAgICAgICAgb3V0IDw8ICB2YXJ5aW5nczsKICAgICAgICAgb3V0IDw8ICJcbiIKLSAgICAgICAg
ICAgICAgICJzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0ge2Zsb2F0NCgwLCAwLCAwLCAwKX07
XG4iOworICAgICAgICAgICAgICAgInN0YXRpYyBmbG9hdDQgZ2xfQ29sb3JbIiA8PCBudW1Db2xv
clZhbHVlcyA8PCAiXSA9XG4iCisgICAgICAgICAgICAgICAie1xuIjsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1Db2xvclZhbHVlczsgaSsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDQoMCwgMCwgMCwgMCkiOworICAgICAgICAgICAg
aWYgKGkgKyAxICE9IG51bUNvbG9yVmFsdWVzKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG91dCA8PCAiLCI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXQgPDwgIlxuIjsK
KyAgICAgICAgfQorICAgICAgICBvdXQgPDwgIn07XG4iOworCisgICAgICAgIGlmIChtVXNlc0Zy
YWdEZXB0aCkKKyAgICAgICAgeworICAgICAgICAgICAgb3V0IDw8ICJzdGF0aWMgZmxvYXQgZ2xf
RGVwdGggPSAwLjA7XG4iOworICAgICAgICB9CiAKICAgICAgICAgaWYgKG1Vc2VzRnJhZ0Nvb3Jk
KQogICAgICAgICB7CkBAIC0yMDYsMjA1ICsyNTMsMzc5IEBAIHZvaWQgT3V0cHV0SExTTDo6aGVh
ZGVyKCkKIAogICAgICAgICBvdXQgPDwgIlxuIjsKIAotICAgICAgICBpZiAobVVzZXNGcmFnQ29v
cmQpCisgICAgICAgIGlmIChtVXNlc0RlcHRoUmFuZ2UpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG91dCA8PCAidW5pZm9ybSBmbG9hdDQgZHhfQ29vcmQ7XG4iCi0gICAgICAgICAgICAgICAgICAg
InVuaWZvcm0gZmxvYXQyIGR4X0RlcHRoO1xuIjsKKyAgICAgICAgICAgIG91dCA8PCAic3RydWN0
IGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzXG4iCisgICAgICAgICAgICAgICAgICAgIntcbiIKKyAg
ICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IG5lYXI7XG4iCisgICAgICAgICAgICAgICAgICAg
IiAgICBmbG9hdCBmYXI7XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBkaWZmO1xu
IgorICAgICAgICAgICAgICAgICAgICJ9O1xuIgorICAgICAgICAgICAgICAgICAgICJcbiI7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAobVVzZXNGcm9udEZhY2luZykKKyAgICAgICAgaWYgKG1P
dXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91
dCA8PCAidW5pZm9ybSBib29sIGR4X1BvaW50c09yTGluZXM7XG4iCi0gICAgICAgICAgICAgICAg
ICAgInVuaWZvcm0gYm9vbCBkeF9Gcm9udENDVztcbiI7CisgICAgICAgICAgICBvdXQgPDwgImNi
dWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpXG4iCisgICAgICAgICAgICAgICAg
ICAgIntcbiI7CisKKyAgICAgICAgICAgIGlmIChtVXNlc0RlcHRoUmFuZ2UpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQzIGR4X0RlcHRoUmFuZ2UgOiBw
YWNrb2Zmc2V0KGMwKTtcbiI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtVXNl
c0ZyYWdDb29yZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBm
bG9hdDQgZHhfVmlld0Nvb3JkcyA6IHBhY2tvZmZzZXQoYzEpO1xuIjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKG1Vc2VzRnJhZ0Nvb3JkIHx8IG1Vc2VzRnJvbnRGYWNpbmcpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQzIGR4X0RlcHRo
RnJvbnQgOiBwYWNrb2Zmc2V0KGMyKTtcbiI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IG91dCA8PCAifTtcbiI7CiAgICAgICAgIH0KLSAgICAgICAgCisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBvdXQgPDwgInVuaWZvcm0gZmxvYXQzIGR4X0RlcHRoUmFuZ2UgOiByZWdp
c3RlcihjMCk7IjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1Vc2VzRnJhZ0Nv
b3JkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAidW5pZm9ybSBmbG9h
dDQgZHhfVmlld0Nvb3JkcyA6IHJlZ2lzdGVyKGMxKTtcbiI7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmIChtVXNlc0ZyYWdDb29yZCB8fCBtVXNlc0Zyb250RmFjaW5nKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAidW5pZm9ybSBmbG9hdDMgZHhfRGVwdGhG
cm9udCA6IHJlZ2lzdGVyKGMyKTtcbiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAg
ICAgICBvdXQgPDwgIlxuIjsKKworICAgICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQorICAgICAg
ICB7CisgICAgICAgICAgICBvdXQgPDwgInN0YXRpYyBnbF9EZXB0aFJhbmdlUGFyYW1ldGVycyBn
bF9EZXB0aFJhbmdlID0ge2R4X0RlcHRoUmFuZ2UueCwgZHhfRGVwdGhSYW5nZS55LCBkeF9EZXB0
aFJhbmdlLnp9O1xuIgorICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgIH0KKyAgICAg
ICAgCiAgICAgICAgIG91dCA8PCAgdW5pZm9ybXM7CiAgICAgICAgIG91dCA8PCAiXG4iOwogCiAg
ICAgICAgIGlmIChtVXNlc1RleHR1cmUyRCkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8
ICJmbG9hdDQgZ2xfdGV4dHVyZTJEKHNhbXBsZXIyRCBzLCBmbG9hdDIgdClcbiIKLSAgICAgICAg
ICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEKHMs
IHQpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxu
IjsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEKHNh
bXBsZXIyRCBzLCBmbG9hdDIgdClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkQocywgdCk7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFf
T1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGds
X3RleHR1cmUyRChUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MiB1dilcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICBy
ZXR1cm4gdC5TYW1wbGUocywgdXYpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1Vc2VzVGV4dHVy
ZTJEX2JpYXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1
cmUyRChzYW1wbGVyMkQgcywgZmxvYXQyIHQsIGZsb2F0IGJpYXMpXG4iCi0gICAgICAgICAgICAg
ICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGJpYXMocywg
ZmxvYXQ0KHQueCwgdC55LCAwLCBiaWFzKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIK
LSAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09
IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwg
ImZsb2F0NCBnbF90ZXh0dXJlMkQoc2FtcGxlcjJEIHMsIGZsb2F0MiB0LCBmbG9hdCBiaWFzKVxu
IgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIHJldHVybiB0ZXgyRGJpYXMocywgZmxvYXQ0KHQueCwgdC55LCAwLCBiaWFzKSk7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9I
TFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxv
YXQ0IGdsX3RleHR1cmUyRChUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MiB1diwg
ZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVCaWFzKHMsIHV2LCBiaWFzKTtcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChtVXNlc1RleHR1cmUyRFByb2opCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZsb2F0MyB0
KVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICBy
ZXR1cm4gdGV4MkRwcm9qKHMsIGZsb2F0NCh0LngsIHQueSwgMCwgdC56KSk7XG4iCi0gICAgICAg
ICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAg
ICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzLCBmbG9hdDQgdClcbiIK
LSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJu
IHRleDJEcHJvaihzLCB0KTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAg
ICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlf
T1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGds
X3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZsb2F0MyB0KVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRHBy
b2oocywgZmxvYXQ0KHQueCwgdC55LCAwLCB0LnopKTtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZsb2F0NCB0KVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiB0ZXgyRHByb2oocywgdCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooVGV4dHVy
ZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDMgdXZ3KVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZShz
LCBmbG9hdDIodXZ3LnggLyB1dncueiwgdXZ3LnkgLyB1dncueikpO1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihUZXh0dXJlMkQgdCwgU2FtcGxl
clN0YXRlIHMsIGZsb2F0NCB1dncpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlKHMsIGZsb2F0Mih1dncu
eCAvIHV2dy53LCB1dncueSAvIHV2dy53KSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobVVzZXNU
ZXh0dXJlMkRQcm9qX2JpYXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0
IGdsX3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZsb2F0MyB0LCBmbG9hdCBiaWFzKVxuIgot
ICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
dGV4MkRiaWFzKHMsIGZsb2F0NCh0LnggLyB0LnosIHQueSAvIHQueiwgMCwgYmlhcykpO1xuIgot
ICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAg
ICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxvYXQ0
IHQsIGZsb2F0IGJpYXMpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAg
ICAgICAgICAiICAgIHJldHVybiB0ZXgyRGJpYXMocywgZmxvYXQ0KHQueCAvIHQudywgdC55IC8g
dC53LCAwLCBiaWFzKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAg
ICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09V
VFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90
ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzLCBmbG9hdDMgdCwgZmxvYXQgYmlhcylcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1
cm4gdGV4MkRiaWFzKHMsIGZsb2F0NCh0LnggLyB0LnosIHQueSAvIHQueiwgMCwgYmlhcykpO1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1w
bGVyMkQgcywgZmxvYXQ0IHQsIGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEYmlhcyhzLCBm
bG9hdDQodC54IC8gdC53LCB0LnkgLyB0LncsIDAsIGJpYXMpKTtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVy
ZTJEUHJvaihUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MyB1dncsIGZsb2F0IGJp
YXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgcmV0dXJuIHQuU2FtcGxlQmlhcyhzLCBmbG9hdDIodXZ3LnggLyB1dncueiwgdXZ3
LnkgLyB1dncueiksIGJpYXMpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDQg
Z2xfdGV4dHVyZTJEUHJvaihUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0NCB1dncs
IGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlQmlhcyhzLCBmbG9hdDIodXZ3LnggLyB1
dncudywgdXZ3LnkgLyB1dncudyksIGJpYXMpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAi
fVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1Vc2Vz
VGV4dHVyZUN1YmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3Rl
eHR1cmVDdWJlKHNhbXBsZXJDVUJFIHMsIGZsb2F0MyB0KVxuIgotICAgICAgICAgICAgICAgICAg
ICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4Q1VCRShzLCB0KTtcbiIK
LSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAg
ICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlKHNhbXBsZXJD
VUJFIHMsIGZsb2F0MyB0KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhDVUJFKHMsIHQpO1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09V
VFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90
ZXh0dXJlQ3ViZShUZXh0dXJlQ3ViZSB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dylcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICByZXR1cm4gdC5TYW1wbGUocywgdXZ3KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1c
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtVXNlc1Rl
eHR1cmVDdWJlX2JpYXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGds
X3RleHR1cmVDdWJlKHNhbXBsZXJDVUJFIHMsIGZsb2F0MyB0LCBmbG9hdCBiaWFzKVxuIgotICAg
ICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4
Q1VCRWJpYXMocywgZmxvYXQ0KHQueCwgdC55LCB0LnosIGJpYXMpKTtcbiIKLSAgICAgICAgICAg
ICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAo
bU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlKHNhbXBsZXJDVUJFIHMsIGZsb2F0
MyB0LCBmbG9hdCBiaWFzKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhDVUJFYmlhcyhzLCBmbG9hdDQodC54LCB0
LnksIHQueiwgYmlhcykpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBp
ZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZShUZXh0dXJlQ3ViZSB0LCBT
YW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dywgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1w
bGVCaWFzKHMsIHV2dywgYmlhcyk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVzZSAqTG9kMCBp
bnRyaW5zaWNzIGFyZSBub3QgYXZhaWxhYmxlIGluIEdMIGZyYWdtZW50IHNoYWRlcnMuCiAgICAg
ICAgIC8vIFRoZXkgYXJlIHVzZWQgdG8gc2FtcGxlIHVzaW5nIGRpc2NvbnRpbnVvdXMgdGV4dHVy
ZSBjb29yZGluYXRlcy4KICAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJETG9kMCkKICAgICAgICAg
ewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJETG9kMChzYW1wbGVyMkQg
cywgZmxvYXQyIHQpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAg
ICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54LCB0LnksIDAsIDApKTtcbiIK
LSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAg
ICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRExvZDAoc2FtcGxl
cjJEIHMsIGZsb2F0MiB0KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54LCB0Lnks
IDAsIDApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRw
dXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJETG9kMChUZXh0dXJlMkQgdCwgU2FtcGxlclN0
YXRlIHMsIGZsb2F0MiB1dilcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCB1diwgMCk7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJc
biI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAobVVzZXNUZXh0dXJlMkRMb2QwX2JpYXMpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRExvZDAoc2FtcGxlcjJEIHMs
IGZsb2F0MiB0LCBmbG9hdCBiaWFzKVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAg
ICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCwgdC55LCAw
LCAwKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAi
XG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRM
b2QwKHNhbXBsZXIyRCBzLCBmbG9hdDIgdCwgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRs
b2QocywgZmxvYXQ0KHQueCwgdC55LCAwLCAwKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRExvZDAo
VGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDIgdXYsIGZsb2F0IGJpYXMpXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAg
cmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgdXYsIDApO1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1V
c2VzVGV4dHVyZTJEUHJvakxvZDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiZmxv
YXQ0IGdsX3RleHR1cmUyRFByb2pMb2QwKHNhbXBsZXIyRCBzLCBmbG9hdDMgdClcbiIKLSAgICAg
ICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJE
bG9kKHMsIGZsb2F0NCh0LnggLyB0LnosIHQueSAvIHQueiwgMCwgMCkpO1xuIgotICAgICAgICAg
ICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAg
ICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgcywgZmxvYXQ0IHQpXG4i
Ci0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVy
biB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC53LCB0LnkgLyB0LncsIDAsIDApKTtcbiIKLSAg
ICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAg
ICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2QwKHNhbXBs
ZXIyRCBzLCBmbG9hdDMgdClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQu
eiwgdC55IC8gdC56LCAwLCAwKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0
NCBnbF90ZXh0dXJlMkRQcm9qTG9kKHNhbXBsZXIyRCBzLCBmbG9hdDQgdClcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
dGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQudywgdC55IC8gdC53LCAwLCAwKSk7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNM
MTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0
IGdsX3RleHR1cmUyRFByb2pMb2QwKFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQz
IHV2dylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCBmbG9hdDIodXZ3LnggLyB1dncueiwg
dXZ3LnkgLyB1dncueiksIDApO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDQg
Z2xfdGV4dHVyZTJEUHJvakxvZDAoVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDQg
dXZ3KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIHJldHVybiB0LlNhbXBsZUxldmVsKHMsIGZsb2F0Mih1dncueCAvIHV2dy53LCB1
dncueSAvIHV2dy53KSwgMCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobVVzZXNUZXh0dXJlMkRQ
cm9qTG9kMF9iaWFzKQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90
ZXh0dXJlMkRQcm9qTG9kMF9iaWFzKHNhbXBsZXIyRCBzLCBmbG9hdDMgdCwgZmxvYXQgYmlhcylc
biIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LnosIHQueSAvIHQueiwgMCwgMCkpO1xuIgot
ICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAg
ICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZF9iaWFzKHNhbXBsZXIyRCBz
LCBmbG9hdDQgdCwgZmxvYXQgYmlhcylcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAg
ICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0Lncs
IHQueSAvIHQudywgMCwgMCkpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAg
ICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNM
OV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQg
Z2xfdGV4dHVyZTJEUHJvakxvZDBfYmlhcyhzYW1wbGVyMkQgcywgZmxvYXQzIHQsIGZsb2F0IGJp
YXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LnosIHQueSAvIHQueiwg
MCwgMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJE
UHJvakxvZF9iaWFzKHNhbXBsZXIyRCBzLCBmbG9hdDQgdCwgZmxvYXQgYmlhcylcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1
cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQudywgdC55IC8gdC53LCAwLCAwKSk7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9I
TFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxv
YXQ0IGdsX3RleHR1cmUyRFByb2pMb2RfYmlhcyhUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMs
IGZsb2F0MyB1dncsIGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgZmxv
YXQyKHV2dy54IC8gdXZ3LnosIHV2dy55IC8gdXZ3LnopLCAwKTtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2RfYmlhcyhUZXh0dXJlMkQgdCwg
U2FtcGxlclN0YXRlIHMsIGZsb2F0NCB1dncsIGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2Ft
cGxlTGV2ZWwocywgZmxvYXQyKHV2dy54IC8gdXZ3LncsIHV2dy55IC8gdXZ3LncpLCAwKTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxu
IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChtVXNlc1RleHR1cmVDdWJlTG9kMCkKICAgICAgICAgewotICAg
ICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmVMb2QwKHNhbXBsZXJDVUJFIHMs
IGZsb2F0MyB0KVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAg
ICAgIiAgICByZXR1cm4gdGV4Q1VCRWxvZChzLCBmbG9hdDQodC54LCB0LnksIHQueiwgMCkpO1xu
IgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIjsKKyAg
ICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmVMb2QwKHNh
bXBsZXJDVUJFIHMsIGZsb2F0MyB0KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhDVUJFbG9kKHMsIGZsb2F0NCh0
LngsIHQueSwgdC56LCAwKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlTG9kMChUZXh0dXJlQ3Vi
ZSB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dylcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZl
bChzLCB1dncsIDApO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJF
QUNIQUJMRSgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZUN1YmVMb2Qw
X2JpYXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVD
dWJlTG9kMChzYW1wbGVyQ1VCRSBzLCBmbG9hdDMgdCwgZmxvYXQgYmlhcylcbiIKLSAgICAgICAg
ICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleENVQkVs
b2QocywgZmxvYXQ0KHQueCwgdC55LCB0LnosIDApKTtcbiIKLSAgICAgICAgICAgICAgICAgICAi
fVxuIgotICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5
cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91
dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlTG9kMChzYW1wbGVyQ1VCRSBzLCBmbG9hdDMgdCwg
ZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4Q1VCRWxvZChzLCBmbG9hdDQodC54LCB0LnksIHQu
eiwgMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1
dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZUxvZDAoVGV4dHVyZUN1YmUgdCwgU2FtcGxl
clN0YXRlIHMsIGZsb2F0MyB1dncsIGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2
ZWwocywgdXZ3LCAwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5S
RUFDSEFCTEUoKTsKICAgICAgICAgfQotICAgIH0KLSAgICBlbHNlICAgLy8gVmVydGV4IHNoYWRl
cgotICAgIHsKLSAgICAgICAgVFN0cmluZyB1bmlmb3JtczsKLSAgICAgICAgVFN0cmluZyBhdHRy
aWJ1dGVzOwotICAgICAgICBUU3RyaW5nIHZhcnlpbmdzOwotCi0gICAgICAgIFRTeW1ib2xUYWJs
ZUxldmVsICpzeW1ib2xzID0gbUNvbnRleHQuc3ltYm9sVGFibGUuZ2V0R2xvYmFsTGV2ZWwoKTsK
IAotICAgICAgICBmb3IgKFRTeW1ib2xUYWJsZUxldmVsOjpjb25zdF9pdGVyYXRvciBuYW1lZFN5
bWJvbCA9IHN5bWJvbHMtPmJlZ2luKCk7IG5hbWVkU3ltYm9sICE9IHN5bWJvbHMtPmVuZCgpOyBu
YW1lZFN5bWJvbCsrKQorICAgICAgICBpZiAodXNpbmdNUlRFeHRlbnNpb24gJiYgbU51bVJlbmRl
clRhcmdldHMgPiAxKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBUU3ltYm9sICpzeW1i
b2wgPSAoKm5hbWVkU3ltYm9sKS5zZWNvbmQ7Ci0gICAgICAgICAgICBjb25zdCBUU3RyaW5nICZu
YW1lID0gc3ltYm9sLT5nZXROYW1lKCk7Ci0KLSAgICAgICAgICAgIGlmIChzeW1ib2wtPmlzVmFy
aWFibGUoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBUVmFyaWFibGUg
KnZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3ltYm9sKTsKLSAgICAg
ICAgICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSA9IHZhcmlhYmxlLT5nZXRUeXBlKCk7Ci0gICAg
ICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSB0eXBlLmdldFF1YWxpZmllcigpOwor
ICAgICAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNfTVJUXG4iOworICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICBpZiAocXVhbGlmaWVyID09IEV2cVVuaWZvcm0pCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAobVJlZmVyZW5jZWRVbmlmb3Jtcy5maW5k
KG5hbWUuY19zdHIoKSkgIT0gbVJlZmVyZW5jZWRVbmlmb3Jtcy5lbmQoKSkKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybXMgKz0gInVuaWZvcm0g
IiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBkZWNvcmF0ZVVuaWZvcm0obmFtZSwgdHlwZSkg
KyBhcnJheVN0cmluZyh0eXBlKSArICI7XG4iOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHF1YWxpZmllciA9PSBFdnFB
dHRyaWJ1dGUpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAobVJl
ZmVyZW5jZWRBdHRyaWJ1dGVzLmZpbmQobmFtZS5jX3N0cigpKSAhPSBtUmVmZXJlbmNlZEF0dHJp
YnV0ZXMuZW5kKCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZXMgKz0gInN0YXRpYyAiICsgdHlwZVN0cmluZyh0eXBlKSArICIgIiArIGRl
Y29yYXRlKG5hbWUpICsgYXJyYXlTdHJpbmcodHlwZSkgKyAiID0gIiArIGluaXRpYWxpemVyKHR5
cGUpICsgIjtcbiI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVyID09IEV2cVZhcnlpbmdPdXQgfHwgcXVh
bGlmaWVyID09IEV2cUludmFyaWFudFZhcnlpbmdPdXQpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBpZiAobVJlZmVyZW5jZWRWYXJ5aW5ncy5maW5kKG5hbWUuY19zdHIo
KSkgIT0gbVJlZmVyZW5jZWRWYXJ5aW5ncy5lbmQoKSkKLSAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJvZ3JhbSBsaW5raW5nIGRlcGVuZHMgb24gdGhp
cyBleGFjdCBmb3JtYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcnlpbmdzICs9ICJzdGF0
aWMgIiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBkZWNvcmF0ZShuYW1lKSArIGFycmF5U3Ry
aW5nKHR5cGUpICsgIiA9ICIgKyBpbml0aWFsaXplcih0eXBlKSArICI7XG4iOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHF1YWxpZmllciA9PSBFdnFHbG9iYWwgfHwgcXVhbGlmaWVyID09IEV2cVRlbXBvcmFyeSkKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEdsb2JhbHMgYXJlIGRlY2xh
cmVkIGFuZCBpbnRpYWxpemVkIGFzIGFuIGFnZ3JlZ2F0ZSBub2RlCi0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHF1YWxpZmllciA9PSBFdnFDb25zdCkKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIENvbnN0YW50cyBhcmUgcmVwZWF0
ZWQgYXMgbGl0ZXJhbHMgd2hlcmUgdXNlZAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChtVXNl
c0ZyYWdDb2xvcikKKyAgICAgICAgeworICAgICAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VT
RVNfRlJBR19DT0xPUlxuIjsKICAgICAgICAgfQogCisgICAgICAgIGlmIChtVXNlc0ZyYWdEYXRh
KQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgIiNkZWZpbmUgR0xfVVNFU19GUkFHX0RB
VEFcbiI7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSAgIC8vIFZlcnRleCBzaGFkZXIKKyAg
ICB7CiAgICAgICAgIG91dCA8PCAiLy8gQXR0cmlidXRlc1xuIjsKICAgICAgICAgb3V0IDw8ICBh
dHRyaWJ1dGVzOwogICAgICAgICBvdXQgPDwgIlxuIgpAQCAtNDE4LDc0ICs2MzksMTk0IEBAIHZv
aWQgT3V0cHV0SExTTDo6aGVhZGVyKCkKICAgICAgICAgb3V0IDw8ICJcbiIKICAgICAgICAgICAg
ICAgICIvLyBWYXJ5aW5nc1xuIjsKICAgICAgICAgb3V0IDw8ICB2YXJ5aW5nczsKLSAgICAgICAg
b3V0IDw8ICJcbiIKLSAgICAgICAgICAgICAgICJ1bmlmb3JtIGZsb2F0MiBkeF9IYWxmUGl4ZWxT
aXplO1xuIgotICAgICAgICAgICAgICAgIlxuIjsKLSAgICAgICAgb3V0IDw8ICB1bmlmb3JtczsK
ICAgICAgICAgb3V0IDw8ICJcbiI7Ci0gICAgICAgIAotICAgICAgICBpZiAobVVzZXNUZXh0dXJl
MkQpCisKKyAgICAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkKICAgICAgICAgewotICAgICAgICAg
ICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEKHNhbXBsZXIyRCBzLCBmbG9hdDIgdClcbiIK
KyAgICAgICAgICAgIG91dCA8PCAic3RydWN0IGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzXG4iCiAg
ICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0
ZXgyRGxvZChzLCBmbG9hdDQodC54LCB0LnksIDAsIDApKTtcbiIKLSAgICAgICAgICAgICAgICAg
ICAifVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgbmVhcjtcbiIKKyAgICAgICAg
ICAgICAgICAgICAiICAgIGZsb2F0IGZhcjtcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgIGZs
b2F0IGRpZmY7XG4iCisgICAgICAgICAgICAgICAgICAgIn07XG4iCiAgICAgICAgICAgICAgICAg
ICAgIlxuIjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtVXNlc1RleHR1cmUyRExvZCkKKyAg
ICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRExvZChzYW1wbGVyMkQgcywgZmxv
YXQyIHQsIGZsb2F0IGxvZClcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAg
ICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LngsIHQueSwgMCwgbG9k
KSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgIGlmIChtVXNlc0Rl
cHRoUmFuZ2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJjYnVmZmVy
IERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MyBkeF9EZXB0aFJhbmdl
IDogcGFja29mZnNldChjMCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9O1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgInVuaWZvcm0gZmxvYXQzIGR4X0Rl
cHRoUmFuZ2UgOiByZWdpc3RlcihjMCk7XG4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBvdXQgPDwgInVuaWZvcm0gZmxvYXQ0IGR4X1ZpZXdBZGp1c3QgOiByZWdpc3RlcihjMSk7XG4i
CiAgICAgICAgICAgICAgICAgICAgIlxuIjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtVXNl
c1RleHR1cmUyRFByb2opCisgICAgICAgIGlmIChtVXNlc0RlcHRoUmFuZ2UpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMs
IGZsb2F0MyB0KVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAg
ICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8gdC56LCAw
LCAwKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAi
XG4iCi0gICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKHNhbXBsZXIy
RCBzLCBmbG9hdDQgdClcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAg
ICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LncsIHQueSAvIHQu
dywgMCwgMCkpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICBvdXQg
PDwgInN0YXRpYyBnbF9EZXB0aFJhbmdlUGFyYW1ldGVycyBnbF9EZXB0aFJhbmdlID0ge2R4X0Rl
cHRoUmFuZ2UueCwgZHhfRGVwdGhSYW5nZS55LCBkeF9EZXB0aFJhbmdlLnp9O1xuIgogICAgICAg
ICAgICAgICAgICAgICJcbiI7CiAgICAgICAgIH0KIAorICAgICAgICBvdXQgPDwgdW5pZm9ybXM7
CisgICAgICAgIG91dCA8PCAiXG4iOworICAgICAgICAKKyAgICAgICAgaWYgKG1Vc2VzVGV4dHVy
ZTJEKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlf
T1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGds
X3RleHR1cmUyRChzYW1wbGVyMkQgcywgZmxvYXQyIHQpXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMs
IGZsb2F0NCh0LngsIHQueSwgMCwgMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxu
IgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkQoVGV4dHVyZTJE
IHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDIgdXYpXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwo
cywgdXYsIDApO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNI
QUJMRSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJETG9kKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUy
RExvZChzYW1wbGVyMkQgcywgZmxvYXQyIHQsIGZsb2F0IGxvZClcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRs
b2QocywgZmxvYXQ0KHQueCwgdC55LCAwLCBsb2QpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJETG9k
KFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQyIHV2LCBmbG9hdCBsb2QpXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAg
cmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgdXYsIGxvZCk7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
bVVzZXNUZXh0dXJlMkRQcm9qKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5
cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91
dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZsb2F0MyB0KVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC56LCB0LnkgLyB0LnosIDAsIDApKTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2Ft
cGxlcjJEIHMsIGZsb2F0NCB0KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8g
dC53LCB0LnkgLyB0LncsIDAsIDApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihUZXh0dXJl
MkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MyB1dncpXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2
ZWwocywgZmxvYXQyKHV2dy54IC8gdXZ3LnosIHV2dy55IC8gdXZ3LnopLCAwKTtcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooVGV4dHVyZTJEIHQs
IFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDQgdXZ3KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAi
e1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUxldmVsKHMs
IGZsb2F0Mih1dncueCAvIHV2dy53LCB1dncueSAvIHV2dy53KSwgMCk7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKwogICAg
ICAgICBpZiAobVVzZXNUZXh0dXJlMkRQcm9qTG9kKQogICAgICAgICB7Ci0gICAgICAgICAgICBv
dXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kKHNhbXBsZXIyRCBzLCBmbG9hdDMgdCwg
ZmxvYXQgbG9kKVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAg
ICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8gdC56LCAw
LCBsb2QpKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAg
ICJcbiIKLSAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2Qoc2Ft
cGxlcjJEIHMsIGZsb2F0NCB0LCBmbG9hdCBsb2QpXG4iCi0gICAgICAgICAgICAgICAgICAgIntc
biIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54
IC8gdC53LCB0LnkgLyB0LncsIDAsIGxvZCkpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4i
Ci0gICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9
PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8
ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgcywgZmxvYXQzIHQsIGZsb2F0
IGxvZClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8gdC56
LCAwLCBsb2QpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1
cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHMsIGZsb2F0NCB0LCBmbG9hdCBsb2QpXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJu
IHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LncsIHQueSAvIHQudywgMCwgbG9kKSk7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9I
TFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxv
YXQ0IGdsX3RleHR1cmUyRFByb2ooVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDMg
dXZ3LCBmbG9hdCBsb2QpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgZmxvYXQyKHV2dy54
IC8gdXZ3LnosIHV2dy55IC8gdXZ3LnopLCBsb2QpO1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMs
IGZsb2F0NCB1dncpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgZmxvYXQyKHV2dy54IC8g
dXZ3LncsIHV2dy55IC8gdXZ3LncpLCBsb2QpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAi
fVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1Vc2Vz
VGV4dHVyZUN1YmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3Rl
eHR1cmVDdWJlKHNhbXBsZXJDVUJFIHMsIGZsb2F0MyB0KVxuIgotICAgICAgICAgICAgICAgICAg
ICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4Q1VCRWxvZChzLCBmbG9h
dDQodC54LCB0LnksIHQueiwgMCkpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAg
ICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9I
TFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9h
dDQgZ2xfdGV4dHVyZUN1YmUoc2FtcGxlckNVQkUgcywgZmxvYXQzIHQpXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRl
eENVQkVsb2QocywgZmxvYXQ0KHQueCwgdC55LCB0LnosIDApKTtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVy
ZUN1YmUoVGV4dHVyZUN1YmUgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MyB1dncpXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuIHQuU2FtcGxlTGV2ZWwocywgdXZ3LCAwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
In1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtVXNl
c1RleHR1cmVDdWJlTG9kKQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBn
bF90ZXh0dXJlQ3ViZUxvZChzYW1wbGVyQ1VCRSBzLCBmbG9hdDMgdCwgZmxvYXQgbG9kKVxuIgot
ICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
dGV4Q1VCRWxvZChzLCBmbG9hdDQodC54LCB0LnksIHQueiwgbG9kKSk7XG4iCi0gICAgICAgICAg
ICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYg
KG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZUxvZChzYW1wbGVyQ1VCRSBzLCBm
bG9hdDMgdCwgZmxvYXQgbG9kKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhDVUJFbG9kKHMsIGZsb2F0NCh0Lngs
IHQueSwgdC56LCBsb2QpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
aWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmVMb2QoVGV4dHVyZUN1YmUg
dCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MyB1dncsIGZsb2F0IGxvZClcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5T
YW1wbGVMZXZlbChzLCB1dncsIGxvZCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTUwOSwxOCArODUw
LDE0IEBAIHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKCkKICAgICAgICAgb3V0IDw8ICIjZGVmaW5l
IEdMX1VTRVNfUE9JTlRfU0laRVxuIjsKICAgICB9CiAKKyAgICBpZiAobVVzZXNGcmFnRGVwdGgp
CisgICAgeworICAgICAgICBvdXQgPDwgIiNkZWZpbmUgR0xfVVNFU19GUkFHX0RFUFRIXG4iOwor
ICAgIH0KKwogICAgIGlmIChtVXNlc0RlcHRoUmFuZ2UpCiAgICAgewotICAgICAgICBvdXQgPDwg
InN0cnVjdCBnbF9EZXB0aFJhbmdlUGFyYW1ldGVyc1xuIgotICAgICAgICAgICAgICAgIntcbiIK
LSAgICAgICAgICAgICAgICIgICAgZmxvYXQgbmVhcjtcbiIKLSAgICAgICAgICAgICAgICIgICAg
ZmxvYXQgZmFyO1xuIgotICAgICAgICAgICAgICAgIiAgICBmbG9hdCBkaWZmO1xuIgotICAgICAg
ICAgICAgICAgIn07XG4iCi0gICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAidW5p
Zm9ybSBmbG9hdDMgZHhfRGVwdGhSYW5nZTsiCi0gICAgICAgICAgICAgICAic3RhdGljIGdsX0Rl
cHRoUmFuZ2VQYXJhbWV0ZXJzIGdsX0RlcHRoUmFuZ2UgPSB7ZHhfRGVwdGhSYW5nZS54LCBkeF9E
ZXB0aFJhbmdlLnksIGR4X0RlcHRoUmFuZ2Uuen07XG4iCi0gICAgICAgICAgICAgICAiXG4iOwor
ICAgICAgICBvdXQgPDwgIiNkZWZpbmUgR0xfVVNFU19ERVBUSF9SQU5HRVxuIjsKICAgICB9CiAK
ICAgICBpZiAobVVzZXNYb3IpCkBAIC04MTMsMTAgKzExNTAsMTIgQEAgdm9pZCBPdXRwdXRITFNM
Ojp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYgogICAgIGlmIChuYW1lID09ICJnbF9GcmFnQ29sb3Ii
KQogICAgIHsKICAgICAgICAgb3V0IDw8ICJnbF9Db2xvclswXSI7CisgICAgICAgIG1Vc2VzRnJh
Z0NvbG9yID0gdHJ1ZTsKICAgICB9CiAgICAgZWxzZSBpZiAobmFtZSA9PSAiZ2xfRnJhZ0RhdGEi
KQogICAgIHsKICAgICAgICAgb3V0IDw8ICJnbF9Db2xvciI7CisgICAgICAgIG1Vc2VzRnJhZ0Rh
dGEgPSB0cnVlOwogICAgIH0KICAgICBlbHNlIGlmIChuYW1lID09ICJnbF9EZXB0aFJhbmdlIikK
ICAgICB7CkBAIC04NDMsMjMgKzExODIsMjggQEAgdm9pZCBPdXRwdXRITFNMOjp2aXNpdFN5bWJv
bChUSW50ZXJtU3ltYgogICAgICAgICBtVXNlc1BvaW50U2l6ZSA9IHRydWU7CiAgICAgICAgIG91
dCA8PCBuYW1lOwogICAgIH0KKyAgICBlbHNlIGlmIChuYW1lID09ICJnbF9GcmFnRGVwdGhFWFQi
KQorICAgIHsKKyAgICAgICAgbVVzZXNGcmFnRGVwdGggPSB0cnVlOworICAgICAgICBvdXQgPDwg
ImdsX0RlcHRoIjsKKyAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBx
dWFsaWZpZXIgPSBub2RlLT5nZXRRdWFsaWZpZXIoKTsKIAogICAgICAgICBpZiAocXVhbGlmaWVy
ID09IEV2cVVuaWZvcm0pCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1SZWZlcmVuY2VkVW5pZm9y
bXMuaW5zZXJ0KG5hbWUuY19zdHIoKSk7CisgICAgICAgICAgICBtUmVmZXJlbmNlZFVuaWZvcm1z
W25hbWVdID0gbm9kZTsKICAgICAgICAgICAgIG91dCA8PCBkZWNvcmF0ZVVuaWZvcm0obmFtZSwg
bm9kZS0+Z2V0VHlwZSgpKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIg
PT0gRXZxQXR0cmlidXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICBtUmVmZXJlbmNlZEF0dHJp
YnV0ZXMuaW5zZXJ0KG5hbWUuY19zdHIoKSk7CisgICAgICAgICAgICBtUmVmZXJlbmNlZEF0dHJp
YnV0ZXNbbmFtZV0gPSBub2RlOwogICAgICAgICAgICAgb3V0IDw8IGRlY29yYXRlKG5hbWUpOwog
ICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHF1YWxpZmllciA9PSBFdnFWYXJ5aW5nT3V0IHx8
IHF1YWxpZmllciA9PSBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0IHx8IHF1YWxpZmllciA9PSBFdnFW
YXJ5aW5nSW4gfHwgcXVhbGlmaWVyID09IEV2cUludmFyaWFudFZhcnlpbmdJbikKICAgICAgICAg
ewotICAgICAgICAgICAgbVJlZmVyZW5jZWRWYXJ5aW5ncy5pbnNlcnQobmFtZS5jX3N0cigpKTsK
KyAgICAgICAgICAgIG1SZWZlcmVuY2VkVmFyeWluZ3NbbmFtZV0gPSBub2RlOwogICAgICAgICAg
ICAgb3V0IDw8IGRlY29yYXRlKG5hbWUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKQEAgLTk1
Miw3ICsxMjk2LDEwIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQK
ICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6CiAgICAgICAgIGlmICh2aXNpdCA9PSBJ
blZpc2l0KQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgIi4iICsgZGVjb3JhdGVGaWVs
ZChub2RlLT5nZXRUeXBlKCkuZ2V0RmllbGROYW1lKCksIG5vZGUtPmdldExlZnQoKS0+Z2V0VHlw
ZSgpKTsKKyAgICAgICAgICAgIGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPmdl
dExlZnQoKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOworICAgICAgICAgICAgY29uc3QgVEludGVy
bUNvbnN0YW50VW5pb24qIGluZGV4ID0gbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0QXNDb25zdGFudFVu
aW9uKCk7CisgICAgICAgICAgICBjb25zdCBURmllbGQqIGZpZWxkID0gc3RydWN0dXJlLT5maWVs
ZHMoKVtpbmRleC0+Z2V0SUNvbnN0KDApXTsKKyAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNv
cmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksIG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpKTsKIAog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC05NzQsNyArMTMyMSw3IEBA
IGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQKIAogICAgICAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGkgPSBlbGVtZW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpWzBdLmdl
dElDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGkgPSBlbGVtZW50LT5nZXRJ
Q29uc3QoMCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKQEAgLTEwMjEsMTggKzEzNjgsMTggQEAgYm9vbCBPdXRwdXRITFNM
Ojp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdAogICAgICAgICAgICAgICAgIG91dCA8PCAiISgiOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBjb25zdCBUVHlwZUxpc3QgKmZpZWxkcyA9IG5v
ZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOworICAgICAgICAgICAgY29uc3Qg
VEZpZWxkTGlzdCAmZmllbGRzID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0
KCktPmZpZWxkcygpOwogCi0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxk
cy0+c2l6ZSgpOyBpKyspCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxk
cy5zaXplKCk7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBUVHlw
ZSAqZmllbGRUeXBlID0gKCpmaWVsZHMpW2ldLnR5cGU7CisgICAgICAgICAgICAgICAgY29uc3Qg
VEZpZWxkICpmaWVsZCA9IGZpZWxkc1tpXTsKIAogICAgICAgICAgICAgICAgIG5vZGUtPmdldExl
ZnQoKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIuIiArIGRlY29y
YXRlRmllbGQoZmllbGRUeXBlLT5nZXRGaWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRU
eXBlKCkpICsgIiA9PSAiOworICAgICAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZp
ZWxkKGZpZWxkLT5uYW1lKCksIG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpKSArICIgPT0gIjsK
ICAgICAgICAgICAgICAgICBub2RlLT5nZXRSaWdodCgpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAg
ICAgICAgICAgICBvdXQgPDwgIi4iICsgZGVjb3JhdGVGaWVsZChmaWVsZFR5cGUtPmdldEZpZWxk
TmFtZSgpLCBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSk7CisgICAgICAgICAgICAgICAgb3V0
IDw8ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGQtPm5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5n
ZXRUeXBlKCkpOwogCi0gICAgICAgICAgICAgICAgaWYgKGkgPCBmaWVsZHMtPnNpemUoKSAtIDEp
CisgICAgICAgICAgICAgICAgaWYgKGkgPCBmaWVsZHMuc2l6ZSgpIC0gMSkKICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICYmICI7CiAgICAgICAgICAgICAg
ICAgfQpAQCAtMTIzOCw3ICsxNTg1LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0
ZShWaXNpdCB2aQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobUluc2lkZUZ1bmN0aW9uKQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+
Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdl
dExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgIntcbiI7CiAKICAg
ICAgICAgICAgICAgICBtU2NvcGVEZXB0aCsrOwpAQCAtMTI1NSw3ICsxNjAyLDcgQEAgYm9vbCBP
dXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogCiAgICAgICAgICAgICBmb3IgKFRJ
bnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Igc2l0ID0gbm9kZS0+Z2V0U2VxdWVuY2UoKS5iZWdpbigp
OyBzaXQgIT0gbm9kZS0+Z2V0U2VxdWVuY2UoKS5lbmQoKTsgc2l0KyspCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZSgoKnNpdCktPmdldExpbmUoKSk7
CisgICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZSgoKnNpdCktPmdldExpbmUoKS5m
aXJzdF9saW5lKTsKIAogICAgICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGVtZW50cygqc2l0KTsK
IApAQCAtMTI2NCw3ICsxNjExLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShW
aXNpdCB2aQogCiAgICAgICAgICAgICBpZiAobUluc2lkZUZ1bmN0aW9uKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RW5kTGluZSgp
KTsKKyAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5s
YXN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAifVxuIjsKIAogICAgICAgICAgICAg
ICAgIG1TY29wZURlcHRoLS07CkBAIC0xMjc3LDEzICsxNjI0LDEyIEBAIGJvb2wgT3V0cHV0SExT
TDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKICAgICAgICAgewogICAgICAgICAgICAgVEludGVy
bVNlcXVlbmNlICZzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7CiAgICAgICAgICAgICBU
SW50ZXJtVHlwZWQgKnZhcmlhYmxlID0gc2VxdWVuY2VbMF0tPmdldEFzVHlwZWQoKTsKLSAgICAg
ICAgICAgIGJvb2wgdmlzaXQgPSB0cnVlOwogCiAgICAgICAgICAgICBpZiAodmFyaWFibGUgJiYg
KHZhcmlhYmxlLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFUZW1wb3JhcnkgfHwgdmFyaWFibGUtPmdl
dFF1YWxpZmllcigpID09IEV2cUdsb2JhbCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgaWYgKHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpCiAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBhZGRDb25zdHJ1Y3Rvcih2YXJpYWJsZS0+Z2V0VHlwZSgp
LCBzY29wZWRTdHJ1Y3QodmFyaWFibGUtPmdldFR5cGUoKS5nZXRUeXBlTmFtZSgpKSwgTlVMTCk7
CisgICAgICAgICAgICAgICAgICAgIGFkZENvbnN0cnVjdG9yKHZhcmlhYmxlLT5nZXRUeXBlKCks
IHNjb3BlZFN0cnVjdCh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5uYW1lKCkpLCBO
VUxMKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoIXZhcmlhYmxl
LT5nZXRBc1N5bWJvbE5vZGUoKSB8fCB2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5
bWJvbCgpICE9ICIiKSAgIC8vIFZhcmlhYmxlIGRlY2xhcmF0aW9uCkBAIC0xMzEwLDE5ICsxNjU2
LDExIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoKnNpdCktPnRyYXZlcnNlKHRoaXMpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlzaXQgJiYgdGhp
cy0+aW5WaXNpdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqc2l0ICE9IHNlcXVlbmNl
LmJhY2soKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKnNpdCAhPSBzZXF1ZW5jZS5iYWNrKCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdCA9IHRoaXMt
PnZpc2l0QWdncmVnYXRlKEluVmlzaXQsIG5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgICAgIGlmICh2aXNpdCAmJiB0aGlzLT5wb3N0VmlzaXQpCi0gICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPnZpc2l0QWdncmVnYXRlKFBvc3RWaXNp
dCwgbm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAodmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpICYmIHZhcmlh
YmxlLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkgPT0gIiIpICAgLy8gVHlwZSAoc3Ry
dWN0KSBkZWNsYXJhdGlvbgogICAgICAgICAgICAgICAgIHsKQEAgLTEzMzAsNyArMTY2OCwyNCBA
QCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIAorICAgICAgICAgICAgZWxzZSBpZiAodmFyaWFibGUgJiYgKHZhcmlhYmxl
LT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFWYXJ5aW5nT3V0IHx8IHZhcmlhYmxlLT5nZXRRdWFsaWZp
ZXIoKSA9PSBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Igc2l0ID0gc2VxdWVuY2UuYmVn
aW4oKTsgc2l0ICE9IHNlcXVlbmNlLmVuZCgpOyBzaXQrKykKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9ICgqc2l0KS0+Z2V0QXNT
eW1ib2xOb2RlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmVydGV4IChvdXRwdXQp
IHZhcnlpbmdzIHdoaWNoIGFyZSBkZWNsYXJlZCBidXQgbm90IHdyaXR0ZW4gdG8gc2hvdWxkIHN0
aWxsIGJlIGRlY2xhcmVkIHRvIGFsbG93IHN1Y2Nlc3NmdWwgbGlua2luZworICAgICAgICAgICAg
ICAgICAgICAgICAgbVJlZmVyZW5jZWRWYXJ5aW5nc1tzeW1ib2wtPmdldFN5bWJvbCgpXSA9IHN5
bWJvbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICgqc2l0KS0+dHJh
dmVyc2UodGhpcyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
ICAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZpc2l0KQpAQCAtMTQwMSw3ICsxNzU2LDcgQEAgYm9v
bCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQog
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRDb25zdHJ1
Y3RvcihzeW1ib2wtPmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KHN5bWJvbC0+Z2V0VHlwZSgpLmdl
dFR5cGVOYW1lKCkpLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbnN0cnVj
dG9yKHN5bWJvbC0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3Qoc3ltYm9sLT5nZXRUeXBlKCkuZ2V0
U3RydWN0KCktPm5hbWUoKSksIE5VTEwpOwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICAgICAgb3V0IDw8IGFyZ3VtZW50U3RyaW5nKHN5bWJvbCk7CkBAIC0xNDQxLDE1
MSArMTc5NiwxNjMgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQog
ICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgVFN0cmluZyBuYW1lID0gVEZ1bmN0aW9uOjp1bm1hbmdsZU5hbWUobm9kZS0+Z2V0
TmFtZSgpKTsKLSAgICAgICAgICAgICAgICBib29sIGxvZDAgPSBtSW5zaWRlRGlzY29udGludW91
c0xvb3AgfHwgbU91dHB1dExvZDBGdW5jdGlvbjsKKyAgICAgICAgICAgIFRTdHJpbmcgbmFtZSA9
IFRGdW5jdGlvbjo6dW5tYW5nbGVOYW1lKG5vZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICBi
b29sIGxvZDAgPSBtSW5zaWRlRGlzY29udGludW91c0xvb3AgfHwgbU91dHB1dExvZDBGdW5jdGlv
bjsKIAotICAgICAgICAgICAgICAgIGlmIChub2RlLT5pc1VzZXJEZWZpbmVkKCkpCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBvdXQgPDwgZGVjb3JhdGUobmFtZSkgPDwg
KGxvZDAgPyAiTG9kMCgiIDogIigiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVXNlckRlZmluZWQoKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgZGVjb3JhdGUobmFtZSkgPDwgKGxvZDAgPyAi
TG9kMCgiIDogIigiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAobmFtZSA9PSAidGV4dHVyZTJEIikKICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuYW1lID09ICJ0ZXh0dXJlMkQiKQor
ICAgICAgICAgICAgICAgICAgICBpZiAoIWxvZDApCiAgICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9kMCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQogICAgICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5j
ZSgpLnNpemUoKSA9PSAyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkQgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRf
YmlhcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJEKCI7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbVVzZXNUZXh0dXJlMkQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVu
Y2UoKS5zaXplKCkgPT0gMikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJETG9kMCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1
cmUyRExvZDBfYmlhcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJETG9kMCgiOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJEX2JpYXMgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJM
RSgpOworCisgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmUyRCgiOwog
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUg
PT0gInRleHR1cmUyRFByb2oiKQorICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9kMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQogICAg
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRQcm9q
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1Vc2VzVGV4dHVyZTJEUHJval9iaWFzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgp
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlMkRQcm9q
KCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRMb2QwID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCku
c2l6ZSgpID09IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDIpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
VXNlc1RleHR1cmUyRFByb2pMb2QwID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVu
Y2UoKS5zaXplKCkgPT0gMykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJEUHJvakxvZDBfYmlhcyA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG91dCA8PCAiZ2xfdGV4dHVyZTJEUHJvakxvZDAoIjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtVXNlc1RleHR1cmUyRExvZDBfYmlhcyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJETG9kMCgiOwogICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gInRl
eHR1cmVDdWJlIikKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAo
bmFtZSA9PSAidGV4dHVyZTJEUHJvaiIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoIWxvZDApCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghbG9kMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5n
ZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9
PSAyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbVVzZXNUZXh0dXJlQ3ViZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdl
dFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmVDdWJlX2JpYXMgPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdXQgPDwgImdsX3RleHR1cmVDdWJlKCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bVVzZXNUZXh0dXJlMkRQcm9qID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCiAgICAgICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNl
KCkuc2l6ZSgpID09IDIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmVDdWJlTG9kMCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1
cmVDdWJlTG9kMF9iaWFzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlQ3ViZUxvZDAoIjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRFByb2pfYmlhcyA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVO
UkVBQ0hBQkxFKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVy
ZTJEUHJvaigiOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKG5hbWUgPT0gInRleHR1cmUyRExvZCIpCisgICAgICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMikKKyAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRFByb2pMb2QwID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCiAgICAgICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRM
b2QgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJEUHJv
akxvZDBfYmlhcyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJETG9kKCI7CisgICAgICAgICAgICAgICAgICAgICAgICBv
dXQgPDwgImdsX3RleHR1cmUyRFByb2pMb2QwKCI7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVyZTJEUHJvakxvZCIpCisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1
cmVDdWJlIikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbG9k
MCkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmVDdWJlID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCiAgICAgICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRQcm9q
TG9kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmVDdWJl
X2JpYXMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBv
dXQgPDwgImdsX3RleHR1cmUyRFByb2pMb2QoIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91
dCA8PCAiZ2xfdGV4dHVyZUN1YmUoIjsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlQ3ViZUxvZCIpCisgICAgICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1
cmVDdWJlTG9kMCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQog
ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1V
c2VzVGV4dHVyZUN1YmVMb2QgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1V
c2VzVGV4dHVyZUN1YmVMb2QwX2JpYXMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogCi0gICAgICAg
ICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmVDdWJlTG9kKCI7CisgICAgICAgICAg
ICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmVDdWJlTG9kMCgiOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5h
bWUgPT0gInRleHR1cmUyRExvZCIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRMb2QgPSB0cnVl
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFD
SEFCTEUoKTsKKworICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmUyRExvZCgi
OwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09ICJ0
ZXh0dXJlMkRQcm9qTG9kIikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQorICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRFByb2pMb2QgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFD
SEFCTEUoKTsKKworICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmUyRFByb2pM
b2QoIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9
PSAidGV4dHVyZUN1YmVMb2QiKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCisgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZUN1YmVMb2QgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFD
SEFCTEUoKTsKKworICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmVDdWJlTG9k
KCI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUo
KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHZpc2l0ID09IEluVmlzaXQp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICIsICI7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBlbHNlCisKKyAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAmYXJn
dW1lbnRzID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKKworICAgICAgICAgICAgZm9yIChUSW50ZXJt
U2VxdWVuY2U6Oml0ZXJhdG9yIGFyZyA9IGFyZ3VtZW50cy5iZWdpbigpOyBhcmcgIT0gYXJndW1l
bnRzLmVuZCgpOyBhcmcrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXQgPDwg
IikiOworICAgICAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVU
ICYmIElzU2FtcGxlcigoKmFyZyktPmdldEFzVHlwZWQoKS0+Z2V0QmFzaWNUeXBlKCkpKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJ0ZXh0dXJlXyI7Cisg
ICAgICAgICAgICAgICAgICAgICgqYXJnKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICAg
ICAgICAgIG91dCA8PCAiLCBzYW1wbGVyXyI7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgKCphcmcpLT50cmF2ZXJzZSh0aGlzKTsKKworICAgICAgICAgICAgICAgIGlmIChh
cmcgPCBhcmd1bWVudHMuZW5kKCkgLSAxKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgb3V0IDw8ICIsICI7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBvdXQgPDwgIikiOworCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcFBhcmFtZXRlcnM6ICAgICAg
IG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiwgIiwgIilcbntcbiIpOyAgICAgICAgICAgICBi
cmVhazsKQEAgLTE2NTAsOCArMjAxNyw4IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdh
dGUoVmlzaXQgdmkKICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIm1hdDQoIiwgIiwgIiwg
IikiKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcENvbnN0cnVjdFN0cnVjdDoKLSAg
ICAgICAgYWRkQ29uc3RydWN0b3Iobm9kZS0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3Qobm9kZS0+
Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpLCAmbm9kZS0+Z2V0U2VxdWVuY2UoKSk7Ci0gICAgICAg
IG91dHB1dFRyaXBsZXQodmlzaXQsIHN0cnVjdExvb2t1cChub2RlLT5nZXRUeXBlKCkuZ2V0VHlw
ZU5hbWUoKSkgKyAiX2N0b3IoIiwgIiwgIiwgIikiKTsKKyAgICAgICAgYWRkQ29uc3RydWN0b3Io
bm9kZS0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3Qobm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgp
LT5uYW1lKCkpLCAmbm9kZS0+Z2V0U2VxdWVuY2UoKSk7CisgICAgICAgIG91dHB1dFRyaXBsZXQo
dmlzaXQsIHN0cnVjdExvb2t1cChub2RlLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPm5hbWUoKSkg
KyAiX2N0b3IoIiwgIiwgIiwgIikiKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcExl
c3NUaGFuOiAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiA8ICIsICIpIik7ICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46ICAgICAgb3V0
cHV0VHJpcGxldCh2aXNpdCwgIigiLCAiID4gIiwgIikiKTsgICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTc0MSw3ICsyMTA4LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdFNlbGVjdGlvbihW
aXNpdCB2aQogCiAgICAgICAgIG91dCA8PCAiKVxuIjsKICAgICAgICAgCi0gICAgICAgIG91dHB1
dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgb3V0cHV0TGluZURpcmVj
dGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAie1xuIjsK
IAogICAgICAgICBpZiAobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpCkBAIC0xNzQ5LDIwICsyMTE2LDIw
IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmkKICAgICAgICAgICAg
IHRyYXZlcnNlU3RhdGVtZW50cyhub2RlLT5nZXRUcnVlQmxvY2soKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIG91
dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICBv
dXQgPDwgIjtcbn1cbiI7CiAKICAgICAgICAgaWYgKG5vZGUtPmdldEZhbHNlQmxvY2soKSkKICAg
ICAgICAgewogICAgICAgICAgICAgb3V0IDw8ICJlbHNlXG4iOwogCi0gICAgICAgICAgICBvdXRw
dXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpKTsKKyAgICAg
ICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5l
KCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAgICBvdXQgPDwgIntcbiI7CiAKLSAgICAgICAgICAg
IG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5lKCkpOwor
ICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdl
dExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGVtZW50cyhub2Rl
LT5nZXRGYWxzZUJsb2NrKCkpOwogCi0gICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5v
ZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgIG91dHB1dExpbmVE
aXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAg
ICAgICAgICAgICBvdXQgPDwgIjtcbn1cbiI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzg0LDkg
KzIxNTEsMTIgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIAogICAg
ICAgICBtSW5zaWRlRGlzY29udGludW91c0xvb3AgPSBjb250YWluc0xvb3BEaXNjb250aW51aXR5
KG5vZGUpOwogICAgIH0KIAotICAgIGlmIChoYW5kbGVFeGNlc3NpdmVMb29wKG5vZGUpKQorICAg
IGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCiAgICAgewotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlmIChoYW5kbGVFeGNlc3NpdmVMb29wKG5vZGUpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKICAgICBU
SW5mb1NpbmtCYXNlICZvdXQgPSBtQm9keTsKQEAgLTE3OTUsNyArMjE2NSw3IEBAIGJvb2wgT3V0
cHV0SExTTDo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCAKICAgICB7CiAgICAgICAgIG91dCA8PCAi
e2RvXG4iOwogCi0gICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsK
KyAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7
CiAgICAgICAgIG91dCA8PCAie1xuIjsKICAgICB9CiAgICAgZWxzZQpAQCAtMTgyMyw3ICsyMTkz
LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIAogCiAgICAgICAg
IG91dCA8PCAiKVxuIjsKICAgICAgICAgCi0gICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9k
ZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5l
KCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAie1xuIjsKICAgICB9CiAKQEAgLTE4MzIs
MTIgKzIyMDIsMTIgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIAog
ICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0Qm9keSgpKTsKICAgICB9CiAKLSAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKSk7CisgICAgb3V0cHV0TGluZURp
cmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgb3V0IDw8ICI7fVxuIjsK
IAogICAgIGlmIChub2RlLT5nZXRUeXBlKCkgPT0gRUxvb3BEb1doaWxlKQogICAgIHsKLSAgICAg
ICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRDb25kaXRpb24oKS0+Z2V0TGluZSgpKTsK
KyAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRDb25kaXRpb24oKS0+Z2V0TGlu
ZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICBvdXQgPDwgIndoaWxlKFxuIjsKIAogICAgICAgICBu
b2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CkBAIC0xOTc3LDcgKzIzNDcsNyBA
QCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoY29uc3RhbnQtPmdldEJhc2ljVHlwZSgpID09IEVidEludCAmJiBjb25z
dGFudC0+Z2V0Tm9taW5hbFNpemUoKSA9PSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gc3ltYm9sOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluaXRpYWwgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsID0g
Y29uc3RhbnQtPmdldElDb25zdCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTE5OTksNyArMjM2OSw3IEBA
IGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcChUSW4KICAgICAgICAgICAgICAg
ICBpZiAoY29uc3RhbnQtPmdldEJhc2ljVHlwZSgpID09IEVidEludCAmJiBjb25zdGFudC0+Z2V0
Tm9taW5hbFNpemUoKSA9PSAxKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgY29tcGFyYXRvciA9IHRlc3QtPmdldE9wKCk7Ci0gICAgICAgICAgICAgICAgICAgIGxpbWl0
ID0gY29uc3RhbnQtPmdldFVuaW9uQXJyYXlQb2ludGVyKClbMF0uZ2V0SUNvbnN0KCk7CisgICAg
ICAgICAgICAgICAgICAgIGxpbWl0ID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIwMjAsNyArMjM5MCw3IEBA
IGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcChUSW4KICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQtPmdldEJhc2ljVHlwZSgpID09IEVidEludCAm
JiBjb25zdGFudC0+Z2V0Tm9taW5hbFNpemUoKSA9PSAxKQogICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gY29uc3RhbnQtPmdldFVuaW9uQXJyYXlQb2lu
dGVyKClbMF0uZ2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9IGNv
bnN0YW50LT5nZXRJQ29uc3QoMCk7CiAKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcCkK
ICAgICAgICAgICAgICAgICAgICAgewpAQCAtMjEwOSw3ICsyNDc5LDcgQEAgYm9vbCBPdXRwdXRI
TFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgogICAgICAgICAgICAgICAgIG91dCA8PCBpbmNy
ZW1lbnQ7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICIpXG4iOwogICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAg
ICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9s
aW5lKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgIntcbiI7CiAKICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Z2V0Qm9keSgpKQpAQCAtMjExNyw3ICsyNDg3LDcgQEAgYm9vbCBPdXRwdXRITFNM
OjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgogICAgICAgICAgICAgICAgICAgICBub2RlLT5nZXRC
b2R5KCktPnRyYXZlcnNlKHRoaXMpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAg
ICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAg
ICAgICAgICAgICBvdXQgPDwgIjt9XG4iOwogCiAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdExv
b3BGcmFnbWVudCkKQEAgLTIxOTIsNiArMjU2MiwxMiBAQCBUU3RyaW5nIE91dHB1dEhMU0w6OmFy
Z3VtZW50U3RyaW5nKGNvbnN0CiAgICAgICAgIG5hbWUgPSBkZWNvcmF0ZShuYW1lKTsKICAgICB9
CiAKKyAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCAmJiBJc1NhbXBsZXIo
dHlwZS5nZXRCYXNpY1R5cGUoKSkpCisgICAgeworICAgICAgIHJldHVybiBxdWFsaWZpZXJTdHJp
bmcocXVhbGlmaWVyKSArICIgIiArIHRleHR1cmVTdHJpbmcodHlwZSkgKyAiIHRleHR1cmVfIiAr
IG5hbWUgKyBhcnJheVN0cmluZyh0eXBlKSArICIsICIgKworICAgICAgICAgICAgICBxdWFsaWZp
ZXJTdHJpbmcocXVhbGlmaWVyKSArICIgU2FtcGxlclN0YXRlIHNhbXBsZXJfIiArIG5hbWUgKyBh
cnJheVN0cmluZyh0eXBlKTsKKyAgICB9CisKICAgICByZXR1cm4gcXVhbGlmaWVyU3RyaW5nKHF1
YWxpZmllcikgKyAiICIgKyB0eXBlU3RyaW5nKHR5cGUpICsgIiAiICsgbmFtZSArIGFycmF5U3Ry
aW5nKHR5cGUpOwogfQogCkBAIC0yMjEzLDIyICsyNTg5LDIzIEBAIFRTdHJpbmcgT3V0cHV0SExT
TDo6dHlwZVN0cmluZyhjb25zdCBUVHkKIHsKICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9
PSBFYnRTdHJ1Y3QpCiAgICAgewotICAgICAgICBpZiAodHlwZS5nZXRUeXBlTmFtZSgpICE9ICIi
KQorICAgICAgICBjb25zdCBUU3RyaW5nJiB0eXBlTmFtZSA9IHR5cGUuZ2V0U3RydWN0KCktPm5h
bWUoKTsKKyAgICAgICAgaWYgKHR5cGVOYW1lICE9ICIiKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RydWN0TG9va3VwKHR5cGUuZ2V0VHlwZU5hbWUoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gc3RydWN0TG9va3VwKHR5cGVOYW1lKTsKICAgICAgICAgfQogICAgICAgICBlbHNlICAg
Ly8gTmFtZWxlc3Mgc3RydWN0dXJlLCBkZWZpbmUgaW4gcGxhY2UKICAgICAgICAgewotICAgICAg
ICAgICAgY29uc3QgVFR5cGVMaXN0ICZmaWVsZHMgPSAqdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAg
ICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxk
cygpOwogCiAgICAgICAgICAgICBUU3RyaW5nIHN0cmluZyA9ICJzdHJ1Y3RcbiIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIntcbiI7CiAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnN0IFRUeXBlICZmaWVsZCA9ICpmaWVsZHNbaV0udHlwZTsKKyAgICAgICAg
ICAgICAgICBjb25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ldOwogCi0gICAgICAgICAgICAg
ICAgc3RyaW5nICs9ICIgICAgIiArIHR5cGVTdHJpbmcoZmllbGQpICsgIiAiICsgZGVjb3JhdGUo
ZmllbGQuZ2V0RmllbGROYW1lKCkpICsgYXJyYXlTdHJpbmcoZmllbGQpICsgIjtcbiI7CisgICAg
ICAgICAgICAgICAgc3RyaW5nICs9ICIgICAgIiArIHR5cGVTdHJpbmcoKmZpZWxkLT50eXBlKCkp
ICsgIiAiICsgZGVjb3JhdGUoZmllbGQtPm5hbWUoKSkgKyBhcnJheVN0cmluZygqZmllbGQtPnR5
cGUoKSkgKyAiO1xuIjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgc3RyaW5nICs9ICJ9
ICI7CkBAIC0yMjg2LDEwICsyNjYzLDI4IEBAIFRTdHJpbmcgT3V0cHV0SExTTDo6dHlwZVN0cmlu
Zyhjb25zdCBUVHkKICAgICAgICAgfQogICAgIH0KIAotICAgIFVOSU1QTEVNRU5URUQoKTsgICAv
LyBGSVhNRQorICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgcmV0dXJuICI8dW5rbm93biB0eXBlPiI7
CiB9CiAKK1RTdHJpbmcgT3V0cHV0SExTTDo6dGV4dHVyZVN0cmluZyhjb25zdCBUVHlwZSAmdHlw
ZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUuZ2V0QmFzaWNUeXBlKCkpCisgICAgeworICAgICAgY2Fz
ZSBFYnRTYW1wbGVyMkQ6CisgICAgICAgIHJldHVybiAiVGV4dHVyZTJEIjsKKyAgICAgIGNhc2Ug
RWJ0U2FtcGxlckN1YmU6CisgICAgICAgIHJldHVybiAiVGV4dHVyZUN1YmUiOworICAgICAgY2Fz
ZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6CisgICAgICAgIHJldHVybiAiVGV4dHVyZTJEIjsKKyAg
ICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgcmV0dXJuICI8dW5rbm93biB0ZXh0dXJlIHR5cGU+IjsKK30KKwogVFN0cmluZyBPdXRw
dXRITFNMOjphcnJheVN0cmluZyhjb25zdCBUVHlwZSAmdHlwZSkKIHsKICAgICBpZiAoIXR5cGUu
aXNBcnJheSgpKQpAQCAtMjMwNCwxMSArMjY5OSwxMiBAQCBUU3RyaW5nIE91dHB1dEhMU0w6Omlu
aXRpYWxpemVyKGNvbnN0IFRUCiB7CiAgICAgVFN0cmluZyBzdHJpbmc7CiAKLSAgICBmb3IgKGlu
dCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCB0eXBlLmdldE9iamVjdFNpemUoKTsgY29tcG9u
ZW50KyspCisgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICBmb3Ig
KHNpemVfdCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCBzaXplOyBjb21wb25lbnQrKykKICAg
ICB7CiAgICAgICAgIHN0cmluZyArPSAiMCI7CiAKLSAgICAgICAgaWYgKGNvbXBvbmVudCA8IHR5
cGUuZ2V0T2JqZWN0U2l6ZSgpIC0gMSkKKyAgICAgICAgaWYgKGNvbXBvbmVudCArIDEgPCBzaXpl
KQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJpbmcgKz0gIiwgIjsKICAgICAgICAgfQpAQCAt
MjM0NywxMyArMjc0MywxMyBAQCB2b2lkIE91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0
IFRUCiAgICAgICAgIHN0cnVjdHVyZSArPSAic3RydWN0ICIgKyBkZWNvcmF0ZShuYW1lKSArICJc
biIKICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCi0gICAgICAgIGNvbnN0IFRUeXBlTGlz
dCAmZmllbGRzID0gKnR5cGUuZ2V0U3RydWN0KCk7CisgICAgICAgIGNvbnN0IFRGaWVsZExpc3Qg
JmZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwogCiAgICAgICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb25zdCBUVHlwZSAmZmllbGQgPSAqZmllbGRzW2ldLnR5cGU7CisgICAgICAgICAg
ICBjb25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ldOwogCi0gICAgICAgICAgICBzdHJ1Y3R1
cmUgKz0gIiAgICAiICsgdHlwZVN0cmluZyhmaWVsZCkgKyAiICIgKyBkZWNvcmF0ZUZpZWxkKGZp
ZWxkLmdldEZpZWxkTmFtZSgpLCB0eXBlKSArIGFycmF5U3RyaW5nKGZpZWxkKSArICI7XG4iOwor
ICAgICAgICAgICAgc3RydWN0dXJlICs9ICIgICAgIiArIHR5cGVTdHJpbmcoKmZpZWxkLT50eXBl
KCkpICsgIiAiICsgZGVjb3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCB0eXBlKSArIGFycmF5U3Ry
aW5nKCpmaWVsZC0+dHlwZSgpKSArICI7XG4iOwogICAgICAgICB9CiAKICAgICAgICAgc3RydWN0
dXJlICs9ICJ9O1xuIjsKQEAgLTIzNjUsNyArMjc2MSw3IEBAIHZvaWQgT3V0cHV0SExTTDo6YWRk
Q29uc3RydWN0b3IoY29uc3QgVFQKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAgICAgICAgICAgY3RvclBhcmFt
ZXRlcnMucHVzaF9iYWNrKCpmaWVsZHNbaV0udHlwZSk7CisgICAgICAgICAgICBjdG9yUGFyYW1l
dGVycy5wdXNoX2JhY2soKmZpZWxkc1tpXS0+dHlwZSgpKTsKICAgICAgICAgfQogICAgIH0KICAg
ICBlbHNlIGlmIChwYXJhbWV0ZXJzKQpAQCAtMjQ1OCwyNyArMjg1NCwzMCBAQCB2b2lkIE91dHB1
dEhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0g
ICAgICAgIGludCByZW1haW5pbmdDb21wb25lbnRzID0gY3RvclR5cGUuZ2V0T2JqZWN0U2l6ZSgp
OwotICAgICAgICBpbnQgcGFyYW1ldGVySW5kZXggPSAwOworICAgICAgICBzaXplX3QgcmVtYWlu
aW5nQ29tcG9uZW50cyA9IGN0b3JUeXBlLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6ZV90
IHBhcmFtZXRlckluZGV4ID0gMDsKIAogICAgICAgICB3aGlsZSAocmVtYWluaW5nQ29tcG9uZW50
cyA+IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZwYXJhbWV0ZXIgPSBj
dG9yUGFyYW1ldGVyc1twYXJhbWV0ZXJJbmRleF07Ci0gICAgICAgICAgICBib29sIG1vcmVQYXJh
bWV0ZXJzID0gcGFyYW1ldGVySW5kZXggPCAoaW50KWN0b3JQYXJhbWV0ZXJzLnNpemUoKSAtIDE7
CisgICAgICAgICAgICBjb25zdCBzaXplX3QgcGFyYW1ldGVyU2l6ZSA9IHBhcmFtZXRlci5nZXRP
YmplY3RTaXplKCk7CisgICAgICAgICAgICBib29sIG1vcmVQYXJhbWV0ZXJzID0gcGFyYW1ldGVy
SW5kZXggKyAxIDwgY3RvclBhcmFtZXRlcnMuc2l6ZSgpOwogCiAgICAgICAgICAgICBjb25zdHJ1
Y3RvciArPSAieCIgKyBzdHIocGFyYW1ldGVySW5kZXgpOwogCiAgICAgICAgICAgICBpZiAocGFy
YW1ldGVyLmlzU2NhbGFyKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVtYWlu
aW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJlbWFpbmluZ0NvbXBvbmVudHMpOworICAgICAg
ICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6ZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5pc1ZlY3RvcigpKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmdDb21wb25lbnRzID09IHBhcmFt
ZXRlci5nZXRPYmplY3RTaXplKCkgfHwgbW9yZVBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAg
aWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPT0gcGFyYW1ldGVyU2l6ZSB8fCBtb3JlUGFyYW1ldGVy
cykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBv
bmVudHMgLT0gcGFyYW1ldGVyLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKHBhcmFtZXRlclNpemUgPD0gcmVtYWluaW5nQ29tcG9uZW50cyk7CisgICAgICAgICAg
ICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6ZTsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVtYWluaW5nQ29tcG9uZW50cyA8
IHBhcmFtZXRlci5nZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJl
bWFpbmluZ0NvbXBvbmVudHMgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBhcmFtZXRlci5nZXROb21p
bmFsU2l6ZSgpKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAocmVtYWluaW5nQ29tcG9uZW50cykKICAgICAgICAgICAgICAgICAgICAgewpAQCAtMjQ5NSw5
ICsyODk0LDEwIEBAIHZvaWQgT3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFQKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtZXRlci5pc01hdHJpeCgpIHx8
IHBhcmFtZXRlci5nZXRTdHJ1Y3QoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQocmVtYWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpIHx8
IG1vcmVQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmVtYWluaW5nQ29tcG9u
ZW50cyA9PSBwYXJhbWV0ZXJTaXplIHx8IG1vcmVQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQocGFyYW1ldGVyU2l6ZSA8PSByZW1haW5pbmdDb21wb25lbnRzKTsKICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRzIC09IHBhcmFtZXRl
ci5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nQ29tcG9uZW50cyAt
PSBwYXJhbWV0ZXJTaXplOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBVTlJFQUNI
QUJMRSgpOwogCkBAIC0yNTM0LDE3ICsyOTM0LDE3IEBAIGNvbnN0IENvbnN0YW50VW5pb24gKk91
dHB1dEhMU0w6OndyaXRlQ28KIAogICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0
cnVjdCkKICAgICB7Ci0gICAgICAgIG91dCA8PCBzdHJ1Y3RMb29rdXAodHlwZS5nZXRUeXBlTmFt
ZSgpKSArICJfY3RvcigiOworICAgICAgICBvdXQgPDwgc3RydWN0TG9va3VwKHR5cGUuZ2V0U3Ry
dWN0KCktPm5hbWUoKSkgKyAiX2N0b3IoIjsKICAgICAgICAgCi0gICAgICAgIGNvbnN0IFRUeXBl
TGlzdCAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgY29uc3QgVEZpZWxk
TGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgaSsrKQorICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAgICAg
ICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOworICAg
ICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9IGZpZWxkc1tpXS0+dHlwZSgpOwogCiAg
ICAgICAgICAgICBjb25zdFVuaW9uID0gd3JpdGVDb25zdGFudFVuaW9uKCpmaWVsZFR5cGUsIGNv
bnN0VW5pb24pOwogCi0gICAgICAgICAgICBpZiAoaSAhPSBzdHJ1Y3R1cmUtPnNpemUoKSAtIDEp
CisgICAgICAgICAgICBpZiAoaSAhPSBmaWVsZHMuc2l6ZSgpIC0gMSkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKICAgICAgICAgICAgIH0KQEAgLTI1NTQsNyAr
Mjk1NCw3IEBAIGNvbnN0IENvbnN0YW50VW5pb24gKk91dHB1dEhMU0w6OndyaXRlQ28KICAgICB9
CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW50IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUo
KTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKICAgICAgICAg
Ym9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAgICAgCiAgICAgICAgIGlmICh3cml0ZVR5
cGUpCkBAIC0yNTYyLDcgKzI5NjIsNyBAQCBjb25zdCBDb25zdGFudFVuaW9uICpPdXRwdXRITFNM
Ojp3cml0ZUNvCiAgICAgICAgICAgICBvdXQgPDwgdHlwZVN0cmluZyh0eXBlKSA8PCAiKCI7CiAg
ICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKywgY29uc3RV
bmlvbisrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKywgY29uc3RV
bmlvbisrKQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnN0VW5pb24tPmdldFR5
cGUoKSkKICAgICAgICAgICAgIHsKQEAgLTI2NDEsMTEgKzMwNDEsNyBAQCBUU3RyaW5nIE91dHB1
dEhMU0w6OmRlY29yYXRlKGNvbnN0IFRTdHJpCiAKIFRTdHJpbmcgT3V0cHV0SExTTDo6ZGVjb3Jh
dGVVbmlmb3JtKGNvbnN0IFRTdHJpbmcgJnN0cmluZywgY29uc3QgVFR5cGUgJnR5cGUpCiB7Ci0g
ICAgaWYgKHR5cGUuaXNBcnJheSgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuICJhcl8iICsgc3Ry
aW5nOyAgIC8vIEFsbG93cyBpZGVudGlmeWluZyBhcnJheXMgb2Ygc2l6ZSAxCi0gICAgfQotICAg
IGVsc2UgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U2FtcGxlckV4dGVybmFsT0VTKQor
ICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFNhbXBsZXJFeHRlcm5hbE9FUykKICAg
ICB7CiAgICAgICAgIHJldHVybiAiZXhfIiArIHN0cmluZzsKICAgICB9CkBAIC0yNjU1LDExICsz
MDUxLDIwMiBAQCBUU3RyaW5nIE91dHB1dEhMU0w6OmRlY29yYXRlVW5pZm9ybShjb25zCiAKIFRT
dHJpbmcgT3V0cHV0SExTTDo6ZGVjb3JhdGVGaWVsZChjb25zdCBUU3RyaW5nICZzdHJpbmcsIGNv
bnN0IFRUeXBlICZzdHJ1Y3R1cmUpCiB7Ci0gICAgaWYgKHN0cnVjdHVyZS5nZXRUeXBlTmFtZSgp
LmNvbXBhcmUoMCwgMywgImdsXyIpICE9IDApCisgICAgaWYgKHN0cnVjdHVyZS5nZXRTdHJ1Y3Qo
KS0+bmFtZSgpLmNvbXBhcmUoMCwgMywgImdsXyIpICE9IDApCiAgICAgewogICAgICAgICByZXR1
cm4gZGVjb3JhdGUoc3RyaW5nKTsKICAgICB9CiAKICAgICByZXR1cm4gc3RyaW5nOwogfQorCitU
U3RyaW5nIE91dHB1dEhMU0w6OnJlZ2lzdGVyU3RyaW5nKFRJbnRlcm1TeW1ib2wgKm9wZXJhbmQp
Cit7CisgICAgQVNTRVJUKG9wZXJhbmQtPmdldFF1YWxpZmllcigpID09IEV2cVVuaWZvcm0pOwor
CisgICAgaWYgKElzU2FtcGxlcihvcGVyYW5kLT5nZXRCYXNpY1R5cGUoKSkpCisgICAgeworICAg
ICAgICByZXR1cm4gInMiICsgc3RyKHNhbXBsZXJSZWdpc3RlcihvcGVyYW5kKSk7CisgICAgfQor
CisgICAgcmV0dXJuICJjIiArIHN0cih1bmlmb3JtUmVnaXN0ZXIob3BlcmFuZCkpOworfQorCitp
bnQgT3V0cHV0SExTTDo6c2FtcGxlclJlZ2lzdGVyKFRJbnRlcm1TeW1ib2wgKnNhbXBsZXIpCit7
CisgICAgY29uc3QgVFR5cGUgJnR5cGUgPSBzYW1wbGVyLT5nZXRUeXBlKCk7CisgICAgQVNTRVJU
KElzU2FtcGxlcih0eXBlLmdldEJhc2ljVHlwZSgpKSk7CisKKyAgICBpbnQgaW5kZXggPSBtU2Ft
cGxlclJlZ2lzdGVyOworICAgIG1TYW1wbGVyUmVnaXN0ZXIgKz0gc2FtcGxlci0+dG90YWxSZWdp
c3RlckNvdW50KCk7CisKKyAgICBkZWNsYXJlVW5pZm9ybSh0eXBlLCBzYW1wbGVyLT5nZXRTeW1i
b2woKSwgaW5kZXgpOworCisgICAgcmV0dXJuIGluZGV4OworfQorCitpbnQgT3V0cHV0SExTTDo6
dW5pZm9ybVJlZ2lzdGVyKFRJbnRlcm1TeW1ib2wgKnVuaWZvcm0pCit7CisgICAgY29uc3QgVFR5
cGUgJnR5cGUgPSB1bmlmb3JtLT5nZXRUeXBlKCk7CisgICAgQVNTRVJUKCFJc1NhbXBsZXIodHlw
ZS5nZXRCYXNpY1R5cGUoKSkpOworCisgICAgaW50IGluZGV4ID0gbVVuaWZvcm1SZWdpc3RlcjsK
KyAgICBtVW5pZm9ybVJlZ2lzdGVyICs9IHVuaWZvcm0tPnRvdGFsUmVnaXN0ZXJDb3VudCgpOwor
CisgICAgZGVjbGFyZVVuaWZvcm0odHlwZSwgdW5pZm9ybS0+Z2V0U3ltYm9sKCksIGluZGV4KTsK
KworICAgIHJldHVybiBpbmRleDsKK30KKwordm9pZCBPdXRwdXRITFNMOjpkZWNsYXJlVW5pZm9y
bShjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgVFN0cmluZyAmbmFtZSwgaW50IGluZGV4KQorewor
ICAgIFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7CisKKyAgICBpZiAo
IXN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIG1BY3RpdmVVbmlmb3Jtcy5wdXNoX2JhY2soVW5p
Zm9ybShnbFZhcmlhYmxlVHlwZSh0eXBlKSwgZ2xWYXJpYWJsZVByZWNpc2lvbih0eXBlKSwgbmFt
ZS5jX3N0cigpLCB0eXBlLmdldEFycmF5U2l6ZSgpLCBpbmRleCkpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBzdHJ1Y3R1cmUtPmZp
ZWxkcygpOworCisgICAgICAgIGlmICh0eXBlLmlzQXJyYXkoKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgaW50IGVsZW1lbnRJbmRleCA9IGluZGV4OworCisgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHR5cGUuZ2V0QXJyYXlTaXplKCk7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGZpZWxkcy5zaXplKCk7IGorKykKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZmaWVsZFR5
cGUgPSAqZmllbGRzW2pdLT50eXBlKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJp
bmcgdW5pZm9ybU5hbWUgPSBuYW1lICsgIlsiICsgc3RyKGkpICsgIl0uIiArIGZpZWxkc1tqXS0+
bmFtZSgpOworICAgICAgICAgICAgICAgICAgICBkZWNsYXJlVW5pZm9ybShmaWVsZFR5cGUsIHVu
aWZvcm1OYW1lLCBlbGVtZW50SW5kZXgpOworICAgICAgICAgICAgICAgICAgICBlbGVtZW50SW5k
ZXggKz0gZmllbGRUeXBlLnRvdGFsUmVnaXN0ZXJDb3VudCgpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGludCBmaWVsZEluZGV4ID0gaW5kZXg7CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICZmaWVsZFR5cGUgPSAqZmllbGRzW2ldLT50eXBlKCk7CisgICAg
ICAgICAgICAgICAgY29uc3QgVFN0cmluZyB1bmlmb3JtTmFtZSA9IG5hbWUgKyAiLiIgKyBmaWVs
ZHNbaV0tPm5hbWUoKTsKKyAgICAgICAgICAgICAgICBkZWNsYXJlVW5pZm9ybShmaWVsZFR5cGUs
IHVuaWZvcm1OYW1lLCBmaWVsZEluZGV4KTsKKyAgICAgICAgICAgICAgICBmaWVsZEluZGV4ICs9
IGZpZWxkVHlwZS50b3RhbFJlZ2lzdGVyQ291bnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKworR0xlbnVtIE91dHB1dEhMU0w6OmdsVmFyaWFibGVUeXBlKGNvbnN0IFRU
eXBlICZ0eXBlKQoreworICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQor
ICAgIHsKKyAgICAgICAgaWYgKHR5cGUuaXNTY2FsYXIoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIEdMX0ZMT0FUOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHR5cGUuaXNW
ZWN0b3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoKHR5cGUuZ2V0Tm9taW5hbFNp
emUoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gR0xfRkxP
QVRfVkVDMjsKKyAgICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gR0xfRkxPQVRfVkVDMzsKKyAg
ICAgICAgICAgICAgY2FzZSA0OiByZXR1cm4gR0xfRkxPQVRfVkVDNDsKKyAgICAgICAgICAgICAg
ZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBlbHNlIGlmICh0eXBlLmlzTWF0cml4KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRj
aCh0eXBlLmdldE5vbWluYWxTaXplKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNh
c2UgMjogcmV0dXJuIEdMX0ZMT0FUX01BVDI7CisgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJu
IEdMX0ZMT0FUX01BVDM7CisgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIEdMX0ZMT0FUX01B
VDQ7CisgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworICAgIH0KKyAgICBlbHNl
IGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidEludCkKKyAgICB7CisgICAgICAgIGlmICh0
eXBlLmlzU2NhbGFyKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9JTlQ7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAodHlwZS5pc1ZlY3RvcigpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBzd2l0Y2godHlwZS5nZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBHTF9JTlRfVkVDMjsKKyAgICAgICAgICAgICAg
Y2FzZSAzOiByZXR1cm4gR0xfSU5UX1ZFQzM7CisgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJu
IEdMX0lOVF9WRUM0OworICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICB9
CisgICAgZWxzZSBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sKQorICAgIHsKKyAg
ICAgICAgaWYgKHR5cGUuaXNTY2FsYXIoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IEdMX0JPT0w7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAodHlwZS5pc1ZlY3RvcigpKQor
ICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2godHlwZS5nZXROb21pbmFsU2l6ZSgpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBHTF9CT09MX1ZFQzI7Cisg
ICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIEdMX0JPT0xfVkVDMzsKKyAgICAgICAgICAgICAg
Y2FzZSA0OiByZXR1cm4gR0xfQk9PTF9WRUM0OworICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgVU5SRUFD
SEFCTEUoKTsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRT
YW1wbGVyMkQpCisgICAgeworICAgICAgICByZXR1cm4gR0xfU0FNUExFUl8yRDsKKyAgICB9Cisg
ICAgZWxzZSBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTYW1wbGVyQ3ViZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBHTF9TQU1QTEVSX0NVQkU7CisgICAgfQorICAgIGVsc2UgVU5SRUFD
SEFCTEUoKTsKKworICAgIHJldHVybiBHTF9OT05FOworfQorCitHTGVudW0gT3V0cHV0SExTTDo6
Z2xWYXJpYWJsZVByZWNpc2lvbihjb25zdCBUVHlwZSAmdHlwZSkKK3sKKyAgICBpZiAodHlwZS5n
ZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodHlwZS5n
ZXRQcmVjaXNpb24oKSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgRWJwSGlnaDogICByZXR1
cm4gR0xfSElHSF9GTE9BVDsKKyAgICAgICAgICBjYXNlIEVicE1lZGl1bTogcmV0dXJuIEdMX01F
RElVTV9GTE9BVDsKKyAgICAgICAgICBjYXNlIEVicExvdzogICAgcmV0dXJuIEdMX0xPV19GTE9B
VDsKKyAgICAgICAgICBjYXNlIEVicFVuZGVmaW5lZDoKKyAgICAgICAgICAgIC8vIFNob3VsZCBi
ZSBkZWZpbmVkIGFzIHRoZSBkZWZhdWx0IHByZWNpc2lvbiBieSB0aGUgcGFyc2VyCisgICAgICAg
ICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlm
ICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidEludCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
dHlwZS5nZXRQcmVjaXNpb24oKSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgRWJwSGlnaDog
ICByZXR1cm4gR0xfSElHSF9JTlQ7CisgICAgICAgICAgY2FzZSBFYnBNZWRpdW06IHJldHVybiBH
TF9NRURJVU1fSU5UOworICAgICAgICAgIGNhc2UgRWJwTG93OiAgICByZXR1cm4gR0xfTE9XX0lO
VDsKKyAgICAgICAgICBjYXNlIEVicFVuZGVmaW5lZDoKKyAgICAgICAgICAgIC8vIFNob3VsZCBi
ZSBkZWZpbmVkIGFzIHRoZSBkZWZhdWx0IHByZWNpc2lvbiBieSB0aGUgcGFyc2VyCisgICAgICAg
ICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE90
aGVyIHR5cGVzIChib29sZWFuLCBzYW1wbGVyKSBkb24ndCBoYXZlIGEgcHJlY2lzaW9uCisgICAg
cmV0dXJuIEdMX05PTkU7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9PdXRwdXRITFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAv
LwpAQCAtOSw5ICs5LDE0IEBACiAKICNpbmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPHNldD4KKyNp
bmNsdWRlIDxtYXA+CisKKyNkZWZpbmUgR0xfQVBJQ0FMTAorI2luY2x1ZGUgPEdMRVMyL2dsMi5o
PgogCiAjaW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvUGFyc2VIZWxwZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci9Vbmlmb3JtLmgiCiAKIG5hbWVz
cGFjZSBzaAogewpAQCAtMjAsMTQgKzI1LDE2IEBAIGNsYXNzIFVuZm9sZFNob3J0Q2lyY3VpdDsK
IGNsYXNzIE91dHB1dEhMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogewogICBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgT3V0cHV0SExTTChUUGFyc2VDb250ZXh0ICZjb250ZXh0KTsKKyAgICBP
dXRwdXRITFNMKFRQYXJzZUNvbnRleHQgJmNvbnRleHQsIGNvbnN0IFNoQnVpbHRJblJlc291cmNl
cyYgcmVzb3VyY2VzLCBTaFNoYWRlck91dHB1dCBvdXRwdXRUeXBlKTsKICAgICB+T3V0cHV0SExT
TCgpOwogCiAgICAgdm9pZCBvdXRwdXQoKTsKIAogICAgIFRJbmZvU2lua0Jhc2UgJmdldEJvZHlT
dHJlYW0oKTsKKyAgICBjb25zdCBBY3RpdmVVbmlmb3JtcyAmZ2V0VW5pZm9ybXMoKTsKIAogICAg
IFRTdHJpbmcgdHlwZVN0cmluZyhjb25zdCBUVHlwZSAmdHlwZSk7CisgICAgVFN0cmluZyB0ZXh0
dXJlU3RyaW5nKGNvbnN0IFRUeXBlICZ0eXBlKTsKICAgICBzdGF0aWMgVFN0cmluZyBxdWFsaWZp
ZXJTdHJpbmcoVFF1YWxpZmllciBxdWFsaWZpZXIpOwogICAgIHN0YXRpYyBUU3RyaW5nIGFycmF5
U3RyaW5nKGNvbnN0IFRUeXBlICZ0eXBlKTsKICAgICBzdGF0aWMgVFN0cmluZyBpbml0aWFsaXpl
cihjb25zdCBUVHlwZSAmdHlwZSk7CkBAIC02NCw2ICs3MSw3IEBAIGNsYXNzIE91dHB1dEhMU0wg
OiBwdWJsaWMgVEludGVybVRyYXZlcnMKICAgICBUU3RyaW5nIHN0cnVjdExvb2t1cChjb25zdCBU
U3RyaW5nICZ0eXBlTmFtZSk7CiAKICAgICBUUGFyc2VDb250ZXh0ICZtQ29udGV4dDsKKyAgICBj
b25zdCBTaFNoYWRlck91dHB1dCBtT3V0cHV0VHlwZTsKICAgICBVbmZvbGRTaG9ydENpcmN1aXQg
Km1VbmZvbGRTaG9ydENpcmN1aXQ7CiAgICAgYm9vbCBtSW5zaWRlRnVuY3Rpb247CiAKQEAgLTcy
LDkgKzgwLDEwIEBAIGNsYXNzIE91dHB1dEhMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnMKICAg
ICBUSW5mb1NpbmtCYXNlIG1Cb2R5OwogICAgIFRJbmZvU2lua0Jhc2UgbUZvb3RlcjsKIAotICAg
IHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtUmVmZXJlbmNlZFVuaWZvcm1zOwotICAgIHN0ZDo6c2V0
PHN0ZDo6c3RyaW5nPiBtUmVmZXJlbmNlZEF0dHJpYnV0ZXM7Ci0gICAgc3RkOjpzZXQ8c3RkOjpz
dHJpbmc+IG1SZWZlcmVuY2VkVmFyeWluZ3M7CisgICAgdHlwZWRlZiBzdGQ6Om1hcDxUU3RyaW5n
LCBUSW50ZXJtU3ltYm9sKj4gUmVmZXJlbmNlZFN5bWJvbHM7CisgICAgUmVmZXJlbmNlZFN5bWJv
bHMgbVJlZmVyZW5jZWRVbmlmb3JtczsKKyAgICBSZWZlcmVuY2VkU3ltYm9scyBtUmVmZXJlbmNl
ZEF0dHJpYnV0ZXM7CisgICAgUmVmZXJlbmNlZFN5bWJvbHMgbVJlZmVyZW5jZWRWYXJ5aW5nczsK
IAogICAgIC8vIFBhcmFtZXRlcnMgZGV0ZXJtaW5pbmcgd2hhdCBnb2VzIGluIHRoZSBoZWFkZXIg
b3V0cHV0CiAgICAgYm9vbCBtVXNlc1RleHR1cmUyRDsKQEAgLTkyLDExICsxMDEsMTQgQEAgY2xh
c3MgT3V0cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVycwogICAgIGJvb2wgbVVzZXNUZXh0
dXJlMkRQcm9qTG9kMF9iaWFzOwogICAgIGJvb2wgbVVzZXNUZXh0dXJlQ3ViZUxvZDA7CiAgICAg
Ym9vbCBtVXNlc1RleHR1cmVDdWJlTG9kMF9iaWFzOworICAgIGJvb2wgbVVzZXNGcmFnQ29sb3I7
CisgICAgYm9vbCBtVXNlc0ZyYWdEYXRhOwogICAgIGJvb2wgbVVzZXNEZXB0aFJhbmdlOwogICAg
IGJvb2wgbVVzZXNGcmFnQ29vcmQ7CiAgICAgYm9vbCBtVXNlc1BvaW50Q29vcmQ7CiAgICAgYm9v
bCBtVXNlc0Zyb250RmFjaW5nOwogICAgIGJvb2wgbVVzZXNQb2ludFNpemU7CisgICAgYm9vbCBt
VXNlc0ZyYWdEZXB0aDsKICAgICBib29sIG1Vc2VzWG9yOwogICAgIGJvb2wgbVVzZXNNb2QxOwog
ICAgIGJvb2wgbVVzZXNNb2QydjsKQEAgLTEyNiw2ICsxMzgsOCBAQCBjbGFzcyBPdXRwdXRITFNM
IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAgICAgYm9vbCBtVXNlc0F0YW4yXzM7CiAgICAgYm9v
bCBtVXNlc0F0YW4yXzQ7CiAKKyAgICBpbnQgbU51bVJlbmRlclRhcmdldHM7CisKICAgICB0eXBl
ZGVmIHN0ZDo6c2V0PFRTdHJpbmc+IENvbnN0cnVjdG9yczsKICAgICBDb25zdHJ1Y3RvcnMgbUNv
bnN0cnVjdG9yczsKIApAQCAtMTQ2LDYgKzE2MCwxOCBAQCBjbGFzcyBPdXRwdXRITFNMIDogcHVi
bGljIFRJbnRlcm1UcmF2ZXJzCiAgICAgYm9vbCBtSW5zaWRlRGlzY29udGludW91c0xvb3A7CiAK
ICAgICBUSW50ZXJtU3ltYm9sICptRXhjZXNzaXZlTG9vcEluZGV4OworCisgICAgaW50IG1Vbmlm
b3JtUmVnaXN0ZXI7CisgICAgaW50IG1TYW1wbGVyUmVnaXN0ZXI7CisKKyAgICBUU3RyaW5nIHJl
Z2lzdGVyU3RyaW5nKFRJbnRlcm1TeW1ib2wgKm9wZXJhbmQpOworICAgIGludCBzYW1wbGVyUmVn
aXN0ZXIoVEludGVybVN5bWJvbCAqc2FtcGxlcik7CisgICAgaW50IHVuaWZvcm1SZWdpc3RlcihU
SW50ZXJtU3ltYm9sICp1bmlmb3JtKTsKKyAgICB2b2lkIGRlY2xhcmVVbmlmb3JtKGNvbnN0IFRU
eXBlICZ0eXBlLCBjb25zdCBUU3RyaW5nICZuYW1lLCBpbnQgaW5kZXgpOworICAgIHN0YXRpYyBH
TGVudW0gZ2xWYXJpYWJsZVR5cGUoY29uc3QgVFR5cGUgJnR5cGUpOworICAgIHN0YXRpYyBHTGVu
dW0gZ2xWYXJpYWJsZVByZWNpc2lvbihjb25zdCBUVHlwZSAmdHlwZSk7CisKKyAgICBBY3RpdmVV
bmlmb3JtcyBtQWN0aXZlVW5pZm9ybXM7CiB9OwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAJKHJldmlzaW9u
IDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhl
bHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTIyLDcgKzIyLDcgQEAKIC8vIExvb2sgYXQgYSAnLicg
ZmllbGQgc2VsZWN0b3Igc3RyaW5nIGFuZCBjaGFuZ2UgaXQgaW50byBvZmZzZXRzCiAvLyBmb3Ig
YSB2ZWN0b3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJzZVZlY3RvckZpZWxkcyhjb25z
dCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYgZmllbGRz
LCBpbnQgbGluZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VWZWN0b3JGaWVsZHMoY29uc3Qg
VFN0cmluZyYgY29tcFN0cmluZywgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmIGZpZWxkcywg
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBmaWVsZHMubnVtID0gKGludCkgY29tcFN0
cmluZy5zaXplKCk7CiAgICAgaWYgKGZpZWxkcy5udW0gPiA0KSB7CkBAIC0xMTUsNyArMTE1LDcg
QEAgYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJzZVZlY3RvckZpZWxkcyhjbwogLy8gTG9vayBhdCBh
ICcuJyBmaWVsZCBzZWxlY3RvciBzdHJpbmcgYW5kIGNoYW5nZSBpdCBpbnRvIG9mZnNldHMKIC8v
IGZvciBhIG1hdHJpeC4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4RmllbGRz
KGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCBtYXRTaXplLCBUTWF0cml4RmllbGRzJiBm
aWVsZHMsIGludCBsaW5lKQorYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJzZU1hdHJpeEZpZWxkcyhj
b25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgbWF0U2l6ZSwgVE1hdHJpeEZpZWxkcyYgZmll
bGRzLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGZpZWxkcy53aG9sZVJvdyA9IGZh
bHNlOwogICAgIGZpZWxkcy53aG9sZUNvbCA9IGZhbHNlOwpAQCAtMTc1LDIyICsxNzUsMjQgQEAg
dm9pZCBUUGFyc2VDb250ZXh0OjpyZWNvdmVyKCkKIC8vCiAvLyBVc2VkIGJ5IGZsZXgvYmlzb24g
dG8gb3V0cHV0IGFsbCBzeW50YXggYW5kIHBhcnNpbmcgZXJyb3JzLgogLy8KLXZvaWQgVFBhcnNl
Q29udGV4dDo6ZXJyb3IoVFNvdXJjZUxvYyBsb2MsCit2b2lkIFRQYXJzZUNvbnRleHQ6OmVycm9y
KGNvbnN0IFRTb3VyY2VMb2MmIGxvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5mbykKIHsKICAgICBwcDo6U291cmNlTG9jYXRpb24gc3Jj
TG9jOwotICAgIERlY29kZVNvdXJjZUxvYyhsb2MsICZzcmNMb2MuZmlsZSwgJnNyY0xvYy5saW5l
KTsKKyAgICBzcmNMb2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOworICAgIHNyY0xvYy5saW5lID0g
bG9jLmZpcnN0X2xpbmU7CiAgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9zdGlj
czo6RVJST1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY0xvYywgcmVhc29uLCB0b2tl
biwgZXh0cmFJbmZvKTsKIAogfQogCi12b2lkIFRQYXJzZUNvbnRleHQ6Ondhcm5pbmcoVFNvdXJj
ZUxvYyBsb2MsCit2b2lkIFRQYXJzZUNvbnRleHQ6Ondhcm5pbmcoY29uc3QgVFNvdXJjZUxvYyYg
bG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJlYXNvbiwgY29u
c3QgY2hhciogdG9rZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZXh0cmFJbmZvKSB7CiAgICAgcHA6OlNvdXJjZUxvY2F0aW9uIHNyY0xvYzsKLSAgICBEZWNvZGVT
b3VyY2VMb2MobG9jLCAmc3JjTG9jLmZpbGUsICZzcmNMb2MubGluZSk7CisgICAgc3JjTG9jLmZp
bGUgPSBsb2MuZmlyc3RfZmlsZTsKKyAgICBzcmNMb2MubGluZSA9IGxvYy5maXJzdF9saW5lOwog
ICAgIGRpYWdub3N0aWNzLndyaXRlSW5mbyhwcDo6RGlhZ25vc3RpY3M6OldBUk5JTkcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNyY0xvYywgcmVhc29uLCB0b2tlbiwgZXh0cmFJbmZvKTsK
IH0KQEAgLTIwMyw3ICsyMDUsNyBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnRyYWNlKGNvbnN0IGNo
YXIqIHN0CiAvLwogLy8gU2FtZSBlcnJvciBtZXNzYWdlIGZvciBhbGwgcGxhY2VzIGFzc2lnbm1l
bnRzIGRvbid0IHdvcmsuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcihpbnQg
bGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCkKK3ZvaWQg
VFBhcnNlQ29udGV4dDo6YXNzaWduRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3Qg
Y2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCkKIHsKICAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJjYW5ub3Qg
Y29udmVydCBmcm9tICciIDw8IHJpZ2h0IDw8ICInIHRvICciIDw8IGxlZnQgPDwgIiciOwpAQCAt
MjE0LDcgKzIxNiw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6YXNzaWduRXJyb3IoaW50IGxpbmUK
IC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBwbGFjZXMgdW5hcnkgb3BlcmF0aW9u
cyBkb24ndCB3b3JrLgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKGludCBs
aW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKQordm9pZCBUUGFyc2VDb250ZXh0
Ojp1bmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRT
dHJpbmcgb3BlcmFuZCkKIHsKICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07
CiAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJubyBvcGVyYXRpb24gJyIgPDwgb3AgPDwgIicgZXhp
c3RzIHRoYXQgdGFrZXMgYW4gb3BlcmFuZCBvZiB0eXBlICIgPDwgb3BlcmFuZCAKQEAgLTIyNiw3
ICsyMjgsNyBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnVuYXJ5T3BFcnJvcihpbnQgbGluCiAvLwog
Ly8gU2FtZSBlcnJvciBtZXNzYWdlIGZvciBhbGwgYmluYXJ5IG9wZXJhdGlvbnMgZG9uJ3Qgd29y
ay4KIC8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OmJpbmFyeU9wRXJyb3IoaW50IGxpbmUsIGNvbnN0
IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpCit2b2lkIFRQYXJzZUNvbnRl
eHQ6OmJpbmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3As
IFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCkKIHsKICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBl
eHRyYUluZm9TdHJlYW07CiAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJubyBvcGVyYXRpb24gJyIg
PDwgb3AgPDwgIicgZXhpc3RzIHRoYXQgdGFrZXMgYSBsZWZ0LWhhbmQgb3BlcmFuZCBvZiB0eXBl
ICciIDw8IGxlZnQgCkBAIC0yMzUsNyArMjM3LDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0OjpiaW5h
cnlPcEVycm9yKGludCBsaQogICAgIGVycm9yKGxpbmUsICIgd3Jvbmcgb3BlcmFuZCB0eXBlcyAi
LCBvcCwgZXh0cmFJbmZvLmNfc3RyKCkpOyAKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVj
aXNpb25FcnJvckNoZWNrKGludCBsaW5lLCBUUHJlY2lzaW9uIHByZWNpc2lvbiwgVEJhc2ljVHlw
ZSB0eXBlKXsKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBUUHJlY2lzaW9uIHByZWNpc2lvbiwgVEJhc2ljVHlwZSB0eXBlKXsK
ICAgICBpZiAoIWNoZWNrc1ByZWNpc2lvbkVycm9ycykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHN3aXRjaCggdHlwZSApewpAQCAtMjYzLDcgKzI2NSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4
dDo6cHJlY2lzaW9uRXJyb3JDaGVjaygKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdhcyBh
biBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soaW50IGxp
bmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50ZXJtVHlwZWQqIG5vZGUpCitib29sIFRQYXJzZUNvbnRl
eHQ6OmxWYWx1ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciog
b3AsIFRJbnRlcm1UeXBlZCogbm9kZSkKIHsKICAgICBUSW50ZXJtU3ltYm9sKiBzeW1Ob2RlID0g
bm9kZS0+Z2V0QXNTeW1ib2xOb2RlKCk7CiAgICAgVEludGVybUJpbmFyeSogYmluYXJ5Tm9kZSA9
IG5vZGUtPmdldEFzQmluYXJ5Tm9kZSgpOwpAQCAtMjg2LDcgKzI4OCw3IEBAIGJvb2wgVFBhcnNl
Q29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhpbnQKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3IgcCA9IGFnZ3JOb2RlLT5nZXRT
ZXF1ZW5jZSgpLmJlZ2luKCk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwICE9IGFnZ3JOb2RlLT5nZXRTZXF1ZW5jZSgpLmVuZCgpOyBwKyspIHsKLSAg
ICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gKCpwKS0+Z2V0QXNUeXBlZCgpLT5nZXRBc0Nv
bnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7CisgICAg
ICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9ICgqcCktPmdldEFzVHlwZWQoKS0+Z2V0QXNDb25z
dGFudFVuaW9uKCktPmdldElDb25zdCgwKTsKICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0W3Zh
bHVlXSsrOyAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXRbdmFsdWVdID4gMSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIG9mIHN3aXp6
bGUgY2Fubm90IGhhdmUgZHVwbGljYXRlIGNvbXBvbmVudHMiLCBvcCk7CkBAIC0zMTcsNyArMzE5
LDYgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGludAogICAgIGNhc2Ug
RXZxQXR0cmlidXRlOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGFuIGF0dHJpYnV0ZSI7
ICAgYnJlYWs7CiAgICAgY2FzZSBFdnFVbmlmb3JtOiAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBt
b2RpZnkgYSB1bmlmb3JtIjsgICAgICBicmVhazsKICAgICBjYXNlIEV2cVZhcnlpbmdJbjogICAg
ICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHZhcnlpbmciOyAgICAgIGJyZWFrOwotICAgIGNh
c2UgRXZxSW5wdXQ6ICAgICAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGFuIGlucHV0Ijsg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcmFnQ29vcmQ6ICAgICAgbWVzc2FnZSA9ICJjYW4n
dCBtb2RpZnkgZ2xfRnJhZ0Nvb3JkIjsgICBicmVhazsKICAgICBjYXNlIEV2cUZyb250RmFjaW5n
OiAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBnbF9Gcm9udEZhY2luZyI7IGJyZWFrOwogICAg
IGNhc2UgRXZxUG9pbnRDb29yZDogICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX1BvaW50
Q29vcmQiOyAgYnJlYWs7CkBAIC00MDksNyArNDEwLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpp
bnRlZ2VyRXJyb3JDaGVjayhUSQogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2FzIGFuIGVy
cm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Z2xvYmFsRXJyb3JDaGVjayhpbnQgbGluZSwg
Ym9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2VuKQorYm9vbCBUUGFyc2VDb250ZXh0OjpnbG9i
YWxFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgZ2xvYmFsLCBjb25zdCBj
aGFyKiB0b2tlbikKIHsKICAgICBpZiAoZ2xvYmFsKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC00MjgsNyArNDI5LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpnbG9iYWxFcnJvckNoZWNrKGlu
dAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBU
UGFyc2VDb250ZXh0OjpyZXNlcnZlZEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcm
IGlkZW50aWZpZXIpCitib29sIFRQYXJzZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKQogewogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiByZXNlcnZlZEVyck1zZyA9ICJyZXNlcnZlZCBidWlsdC1pbiBuYW1l
IjsKICAgICBpZiAoIXN5bWJvbFRhYmxlLmF0QnVpbHRJbkxldmVsKCkpIHsKQEAgLTQ2Niw3ICs0
NjcsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JDaGVjayhpCiAvLwogLy8g
UmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvciBpbiBjb25zdHJ1Y3Rpb24uCiAvLwot
Ym9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlY2soaW50IGxpbmUsIFRJbnRl
cm1Ob2RlKiBub2RlLCBURnVuY3Rpb24mIGZ1bmN0aW9uLCBUT3BlcmF0b3Igb3AsIFRUeXBlKiB0
eXBlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlY2soY29uc3QgVFNv
dXJjZUxvYyYgbGluZSwgVEludGVybU5vZGUqIG5vZGUsIFRGdW5jdGlvbiYgZnVuY3Rpb24sIFRP
cGVyYXRvciBvcCwgVFR5cGUqIHR5cGUpCiB7CiAgICAgKnR5cGUgPSBmdW5jdGlvbi5nZXRSZXR1
cm5UeXBlKCk7CiAKQEAgLTQ4Nyw3ICs0ODgsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0
cnVjdG9yRXJyb3JDaGVjCiAgICAgLy8gYWdhaW4sIHRoZXJlIGlzIGFuIGV4dHJhIGFyZ3VtZW50
LCBzbyAnb3ZlcmZ1bGwnIHdpbGwgYmVjb21lIHRydWUuCiAgICAgLy8KIAotICAgIGludCBzaXpl
ID0gMDsKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CiAgICAgYm9vbCBjb25zdFR5cGUgPSB0cnVlOwog
ICAgIGJvb2wgZnVsbCA9IGZhbHNlOwogICAgIGJvb2wgb3ZlckZ1bGwgPSBmYWxzZTsKQEAgLTUz
NCw3ICs1MzUsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBpZiAob3AgPT0gRU9wQ29uc3Ry
dWN0U3RydWN0ICYmICF0eXBlLT5pc0FycmF5KCkgJiYgaW50KHR5cGUtPmdldFN0cnVjdCgpLT5z
aXplKCkpICE9IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSkgeworICAgIGlmIChvcCA9PSBFT3BD
b25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXkoKSAmJiBpbnQodHlwZS0+Z2V0U3RydWN0
KCktPmZpZWxkcygpLnNpemUoKSkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSB7CiAgICAg
ICAgIGVycm9yKGxpbmUsICJOdW1iZXIgb2YgY29uc3RydWN0b3IgcGFyYW1ldGVycyBkb2VzIG5v
dCBtYXRjaCB0aGUgbnVtYmVyIG9mIHN0cnVjdHVyZSBmaWVsZHMiLCAiY29uc3RydWN0b3IiKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNTY4LDcgKzU2OSw3IEBAIGJvb2wgVFBh
cnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWMKIC8vCiAvLyByZXR1cm5zIHRydWUgaW4g
Y2FzZSBvZiBhbiBlcnJvcgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6dm9pZEVycm9yQ2hlY2so
aW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFRQdWJsaWNUeXBlJiBw
dWJUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBUUHVibGljVHlwZSYg
cHViVHlwZSkKIHsKICAgICBpZiAocHViVHlwZS50eXBlID09IEVidFZvaWQpIHsKICAgICAgICAg
ZXJyb3IobGluZSwgImlsbGVnYWwgdXNlIG9mIHR5cGUgJ3ZvaWQnIiwgaWRlbnRpZmllci5jX3N0
cigpKTsKQEAgLTU4Miw3ICs1ODMsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJvckNo
ZWNrKGludCBsCiAvLwogLy8gcmV0dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1i
b29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUSW50ZXJt
VHlwZWQqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRJbnRlcm1UeXBlZCogdHlwZSkKIHsKICAgICBpZiAodHlw
ZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Qm9vbCB8fCB0eXBlLT5pc0FycmF5KCkgfHwgdHlwZS0+
aXNNYXRyaXgoKSB8fCB0eXBlLT5pc1ZlY3RvcigpKSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJi
b29sZWFuIGV4cHJlc3Npb24gZXhwZWN0ZWQiLCAiIik7CkBAIC01OTYsNyArNTk3LDcgQEAgYm9v
bCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhpbnQgbAogLy8KIC8vIHJldHVybnMgdHJ1
ZSBpbiBjYXNlIG9mIGFuIGVycm9yCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JD
aGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQorYm9vbCBUUGFyc2VDb250
ZXh0Ojpib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGlj
VHlwZSYgcFR5cGUpCiB7CiAgICAgaWYgKHBUeXBlLnR5cGUgIT0gRWJ0Qm9vbCB8fCBwVHlwZS5h
cnJheSB8fCBwVHlwZS5tYXRyaXggfHwgKHBUeXBlLnNpemUgPiAxKSkgewogICAgICAgICBlcnJv
cihsaW5lLCAiYm9vbGVhbiBleHByZXNzaW9uIGV4cGVjdGVkIiwgIiIpOwpAQCAtNjA2LDcgKzYw
Nyw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soaW50IGwKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2soaW50
IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciogcmVhc29uKQorYm9v
bCBUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUsIGNvbnN0IGNoYXIqIHJlYXNvbikKIHsKICAgICBp
ZiAocFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxl
cigqcFR5cGUudXNlckRlZikpIHsKQEAgLTYyNSw3ICs2MjYsNyBAQCBib29sIFRQYXJzZUNvbnRl
eHQ6OnNhbXBsZXJFcnJvckNoZWNrKGluCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQ
YXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRQ
dWJsaWNUeXBlJiBwVHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0UXVhbGlmaWVyRXJy
b3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUp
CiB7CiAgICAgaWYgKChwVHlwZS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ0luIHx8IHBUeXBlLnF1
YWxpZmllciA9PSBFdnFWYXJ5aW5nT3V0IHx8IHBUeXBlLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1
dGUpICYmCiAgICAgICAgIHBUeXBlLnR5cGUgPT0gRWJ0U3RydWN0KSB7CkBAIC02NDAsNyArNjQx
LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpzdHJ1Y3RRdWFsaWZpZXJFcnJvcgogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJhbWV0ZXJTYW1wbGVyRXJyb3JD
aGVjayhpbnQgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlJiB0eXBlKQor
Ym9vbCBUUGFyc2VDb250ZXh0OjpwYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgY29uc3QgVFR5cGUmIHR5cGUpCiB7
CiAgICAgaWYgKChxdWFsaWZpZXIgPT0gRXZxT3V0IHx8IHF1YWxpZmllciA9PSBFdnFJbk91dCkg
JiYgCiAgICAgICAgICAgICAgdHlwZS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QgJiYgSXNT
YW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKSB7CkBAIC02NTcsOSArNjU4LDkgQEAgYm9vbCBU
UGFyc2VDb250ZXh0Ojpjb250YWluc1NhbXBsZXIoVFR5cAogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgewotICAgICAgICBU
VHlwZUxpc3QmIHN0cnVjdHVyZSA9ICp0eXBlLmdldFN0cnVjdCgpOwotICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IHN0cnVjdHVyZS5zaXplKCk7ICsraSkgewotICAgICAgICAg
ICAgaWYgKGNvbnRhaW5zU2FtcGxlcigqc3RydWN0dXJlW2ldLnR5cGUpKQorICAgICAgICBjb25z
dCBURmllbGRMaXN0JiBmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgICAgIGlmIChjb250YWluc1NhbXBsZXIoKmZpZWxkc1tpXS0+dHlwZSgpKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTY3Miw3ICs2NzMs
NyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxlcihUVHlwCiAvLwogLy8gUmV0
dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6
OmFycmF5U2l6ZUVycm9yQ2hlY2soaW50IGxpbmUsIFRJbnRlcm1UeXBlZCogZXhwciwgaW50JiBz
aXplKQorYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIFRJbnRlcm1UeXBlZCogZXhwciwgaW50JiBzaXplKQogewogICAgIFRJbnRl
cm1Db25zdGFudFVuaW9uKiBjb25zdGFudCA9IGV4cHItPmdldEFzQ29uc3RhbnRVbmlvbigpOwog
ICAgIGlmIChjb25zdGFudCA9PSAwIHx8IGNvbnN0YW50LT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRJ
bnQpIHsKQEAgLTY4MCw3ICs2ODEsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVy
cm9yQ2hlY2soCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHNpemUgPSBjb25z
dGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7CisgICAgc2l6ZSA9IGNv
bnN0YW50LT5nZXRJQ29uc3QoMCk7CiAKICAgICBpZiAoc2l6ZSA8PSAwKSB7CiAgICAgICAgIGVy
cm9yKGxpbmUsICJhcnJheSBzaXplIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIiwgIiIpOwpA
QCAtNjk2LDcgKzY5Nyw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVj
aygKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgYW4gZXJyb3IuCiAvLwotYm9vbCBU
UGFyc2VDb250ZXh0OjphcnJheVF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIFRQdWJsaWNU
eXBlIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHVibGljVHlwZSB0eXBlKQogewogICAgIGlmICgodHlw
ZS5xdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlKSB8fCAodHlwZS5xdWFsaWZpZXIgPT0gRXZxQ29u
c3QpKSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJjYW5ub3QgZGVjbGFyZSBhcnJheXMgb2YgdGhp
cyBxdWFsaWZpZXIiLCBUVHlwZSh0eXBlKS5nZXRDb21wbGV0ZVN0cmluZygpLmNfc3RyKCkpOwpA
QCAtNzExLDcgKzcxMiw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlRdWFsaWZpZXJFcnJv
ckMKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgYW4gZXJyb3IuCiAvLwotYm9vbCBU
UGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKGludCBsaW5lLCBUUHVibGljVHlwZSB0
eXBlKQorYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCiB7CiAgICAgLy8KICAgICAvLyBDYW4gdGhl
IHR5cGUgYmUgYW4gYXJyYXk/CkBAIC03MzIsNyArNzMzLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjphcnJheVR5cGVFcnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMg
YW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheUVycm9yQ2hlY2soaW50IGxp
bmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZh
cmlhYmxlKQorYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheUVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlh
YmxlKiYgdmFyaWFibGUpCiB7CiAgICAgLy8KICAgICAvLyBEb24ndCBjaGVjayBmb3IgcmVzZXJ2
ZWQgd29yZCB1c2UgdW50aWwgYWZ0ZXIgd2Uga25vdyBpdCdzIG5vdCBpbiB0aGUgc3ltYm9sIHRh
YmxlLApAQCAtNzc3LDE2ICs3NzgsNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JD
aGVjayhpbnQgCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAg
IFRUeXBlKiB0ID0gdmFyaWFibGUtPmdldEFycmF5SW5mb3JtYXRpb25UeXBlKCk7Ci0gICAgICAg
IHdoaWxlICh0ICE9IDApIHsKLSAgICAgICAgICAgIGlmICh0LT5nZXRNYXhBcnJheVNpemUoKSA+
IHR5cGUuYXJyYXlTaXplKSB7Ci0gICAgICAgICAgICAgICAgZXJyb3IobGluZSwgImhpZ2hlciBp
bmRleCB2YWx1ZSBhbHJlYWR5IHVzZWQgZm9yIHRoZSBhcnJheSIsIGlkZW50aWZpZXIuY19zdHIo
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0LT5zZXRBcnJheVNpemUodHlwZS5hcnJheVNpemUpOwotICAgICAgICAgICAgdCA9IHQt
PmdldEFycmF5SW5mb3JtYXRpb25UeXBlKCk7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAodHlw
ZS5hcnJheVNpemUpCiAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldEFycmF5U2l6
ZSh0eXBlLmFycmF5U2l6ZSk7CiAgICAgfSAKQEAgLTc5Nyw1NiArNzg4LDEyIEBAIGJvb2wgVFBh
cnNlQ29udGV4dDo6YXJyYXlFcnJvckNoZWNrKGludCAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlTZXRNYXhTaXplKFRJbnRlcm1TeW1ib2wgKm5vZGUs
IFRUeXBlKiB0eXBlLCBpbnQgc2l6ZSwgYm9vbCB1cGRhdGVGbGFnLCBUU291cmNlTG9jIGxpbmUp
Ci17Ci0gICAgYm9vbCBidWlsdEluID0gZmFsc2U7Ci0gICAgVFN5bWJvbCogc3ltYm9sID0gc3lt
Ym9sVGFibGUuZmluZChub2RlLT5nZXRTeW1ib2woKSwgJmJ1aWx0SW4pOwotICAgIGlmIChzeW1i
b2wgPT0gMCkgewotICAgICAgICBlcnJvcihsaW5lLCAiIHVuZGVjbGFyZWQgaWRlbnRpZmllciIs
IG5vZGUtPmdldFN5bWJvbCgpLmNfc3RyKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0gICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KHN5bWJv
bCk7Ci0KLSAgICB0eXBlLT5zZXRBcnJheUluZm9ybWF0aW9uVHlwZSh2YXJpYWJsZS0+Z2V0QXJy
YXlJbmZvcm1hdGlvblR5cGUoKSk7Ci0gICAgdmFyaWFibGUtPnVwZGF0ZUFycmF5SW5mb3JtYXRp
b25UeXBlKHR5cGUpOwotCi0gICAgLy8gc3BlY2lhbCBjYXNpbmcgdG8gdGVzdCBpbmRleCB2YWx1
ZSBvZiBnbF9GcmFnRGF0YS4gSWYgdGhlIGFjY2Vzc2VkIGluZGV4IGlzID49IGdsX01heERyYXdC
dWZmZXJzCi0gICAgLy8gaXRzIGFuIGVycm9yCi0gICAgaWYgKG5vZGUtPmdldFN5bWJvbCgpID09
ICJnbF9GcmFnRGF0YSIpIHsKLSAgICAgICAgVFN5bWJvbCogZnJhZ0RhdGEgPSBzeW1ib2xUYWJs
ZS5maW5kKCJnbF9NYXhEcmF3QnVmZmVycyIsICZidWlsdEluKTsKLSAgICAgICAgQVNTRVJUKGZy
YWdEYXRhKTsKLQotICAgICAgICBpbnQgZnJhZ0RhdGFWYWx1ZSA9IHN0YXRpY19jYXN0PFRWYXJp
YWJsZSo+KGZyYWdEYXRhKS0+Z2V0Q29uc3RQb2ludGVyKClbMF0uZ2V0SUNvbnN0KCk7Ci0gICAg
ICAgIGlmIChmcmFnRGF0YVZhbHVlIDw9IHNpemUpIHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUs
ICIiLCAiWyIsICJnbF9GcmFnRGF0YSBjYW4gb25seSBoYXZlIGEgbWF4IGFycmF5IHNpemUgb2Yg
dXAgdG8gZ2xfTWF4RHJhd0J1ZmZlcnMiKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8gd2UgZG9udCB3YW50IHRvIHVwZGF0ZSB0aGUgbWF4QXJy
YXlTaXplIHdoZW4gdGhpcyBmbGFnIGlzIG5vdCBzZXQsIHdlIGp1c3Qgd2FudCB0byBpbmNsdWRl
IHRoaXMgCi0gICAgLy8gbm9kZSB0eXBlIGluIHRoZSBjaGFpbiBvZiBub2RlIHR5cGVzIHNvIHRo
YXQgaXRzIHVwZGF0ZWQgd2hlbiBhIGhpZ2hlciBtYXhBcnJheVNpemUgY29tZXMgaW4uCi0gICAg
aWYgKCF1cGRhdGVGbGFnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzaXplKys7Ci0g
ICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRNYXhBcnJheVNpemUoc2l6ZSk7Ci0gICAgdHlwZS0+
c2V0TWF4QXJyYXlTaXplKHNpemUpOwotICAgIFRUeXBlKiB0dCA9IHR5cGU7Ci0KLSAgICB3aGls
ZSh0dC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSAhPSAwKSB7Ci0gICAgICAgIHR0ID0gdHQt
PmdldEFycmF5SW5mb3JtYXRpb25UeXBlKCk7Ci0gICAgICAgIHR0LT5zZXRNYXhBcnJheVNpemUo
c2l6ZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiAvLwogLy8gRW5mb3JjZSBu
b24taW5pdGlhbGl6ZXIgdHlwZS9xdWFsaWZpZXIgcnVsZXMuCiAvLwogLy8gUmV0dXJucyB0cnVl
IGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRD
b25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
JiB0eXBlLCBib29sIGFycmF5KQorYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29uc3RFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJs
aWNUeXBlJiB0eXBlLCBib29sIGFycmF5KQogewogICAgIGlmICh0eXBlLnF1YWxpZmllciA9PSBF
dnFDb25zdCkKICAgICB7CkBAIC04NzgsNyArODI1LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpu
b25Jbml0Q29uc3RFcnJvckNoZQogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4g
ZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhpbnQgbGlu
ZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIFRWYXJpYWJsZSomIHZh
cmlhYmxlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSwgVFZh
cmlhYmxlKiYgdmFyaWFibGUpCiB7CiAgICAgaWYgKHJlc2VydmVkRXJyb3JDaGVjayhsaW5lLCBp
ZGVudGlmaWVyKSkKICAgICAgICAgcmVjb3ZlcigpOwpAQCAtODk4LDcgKzg0NSw3IEBAIGJvb2wg
VFBhcnNlQ29udGV4dDo6bm9uSW5pdEVycm9yQ2hlY2soaW4KICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlm
aWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5cGUqIHR5cGUpCiti
b29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5cGUq
IHR5cGUpCiB7ICAgIAogICAgIGlmIChxdWFsaWZpZXIgIT0gRXZxQ29uc3QgJiYgcXVhbGlmaWVy
ICE9IEV2cVRlbXBvcmFyeSkgewogICAgICAgICBlcnJvcihsaW5lLCAicXVhbGlmaWVyIG5vdCBh
bGxvd2VkIG9uIGZ1bmN0aW9uIHBhcmFtZXRlciIsIGdldFF1YWxpZmllclN0cmluZyhxdWFsaWZp
ZXIpKTsKQEAgLTkxNyw3ICs4NjQsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JD
aGVjayhpbnQgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OmV4
dGVuc2lvbkVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGV4dGVuc2lvbikKK2Jv
b2wgVFBhcnNlQ29udGV4dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBjb25zdCBUU3RyaW5nJiBleHRlbnNpb24pCiB7CiAgICAgY29uc3QgVEV4dGVuc2lvbkJl
aGF2aW9yJiBleHRCZWhhdmlvciA9IGV4dGVuc2lvbkJlaGF2aW9yKCk7CiAgICAgVEV4dGVuc2lv
bkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0QmVoYXZpb3IuZmluZChleHRlbnNp
b24uY19zdHIoKSk7CkBAIC05NDUsMTggKzg5MiwxNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnN1
cHBvcnRzRXh0ZW5zaW9uKGNvCiAgICAgcmV0dXJuIChpdGVyICE9IGV4dGJlaGF2aW9yLmVuZCgp
KTsKIH0KIAotdm9pZCBUUGFyc2VDb250ZXh0OjpoYW5kbGVFeHRlbnNpb25EaXJlY3RpdmUoaW50
IGxpbmUsIGNvbnN0IGNoYXIqIGV4dE5hbWUsIGNvbnN0IGNoYXIqIGJlaGF2aW9yKQorYm9vbCBU
UGFyc2VDb250ZXh0Ojppc0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgY2hhciogZXh0ZW5zaW9uKSBj
b25zdAogewotICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBsb2M7Ci0gICAgRGVjb2RlU291cmNlTG9j
KGxpbmUsICZsb2MuZmlsZSwgJmxvYy5saW5lKTsKLSAgICBkaXJlY3RpdmVIYW5kbGVyLmhhbmRs
ZUV4dGVuc2lvbihsb2MsIGV4dE5hbWUsIGJlaGF2aW9yKTsKLX0KKyAgICBjb25zdCBURXh0ZW5z
aW9uQmVoYXZpb3ImIGV4dGJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZpb3IoKTsKKyAgICBzdGQ6
Om1hcDxzdGQ6OnN0cmluZywgVEJlaGF2aW9yPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGV4dGJl
aGF2aW9yLmZpbmQoZXh0ZW5zaW9uKTsKIAotdm9pZCBUUGFyc2VDb250ZXh0OjpoYW5kbGVQcmFn
bWFEaXJlY3RpdmUoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVl
KQotewotICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBsb2M7Ci0gICAgRGVjb2RlU291cmNlTG9jKGxp
bmUsICZsb2MuZmlsZSwgJmxvYy5saW5lKTsKLSAgICBkaXJlY3RpdmVIYW5kbGVyLmhhbmRsZVBy
YWdtYShsb2MsIG5hbWUsIHZhbHVlKTsKKyAgICBpZiAoaXRlciA9PSBleHRiZWhhdmlvci5lbmQo
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gKGl0
ZXItPnNlY29uZCA9PSBFQmhFbmFibGUgfHwgaXRlci0+c2Vjb25kID09IEVCaFJlcXVpcmUpOwog
fQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTk3MCwxMiArOTE2LDEzIEBAIHZvaWQg
VFBhcnNlQ29udGV4dDo6aGFuZGxlUHJhZ21hRGlyZWN0aXYKIC8vCiAvLyBSZXR1cm4gdGhlIGZ1
bmN0aW9uIHN5bWJvbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIDAuCiAvLwotY29uc3QgVEZ1bmN0aW9u
KiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuY3Rpb24oaW50IGxpbmUsIFRGdW5jdGlvbiogY2FsbCwg
Ym9vbCAqYnVpbHRJbikKK2NvbnN0IFRGdW5jdGlvbiogVFBhcnNlQ29udGV4dDo6ZmluZEZ1bmN0
aW9uKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRGdW5jdGlvbiogY2FsbCwgYm9vbCAqYnVpbHRJ
bikKIHsKICAgICAvLyBGaXJzdCBmaW5kIGJ5IHVubWFuZ2xlZCBuYW1lIHRvIGNoZWNrIHdoZXRo
ZXIgdGhlIGZ1bmN0aW9uIG5hbWUgaGFzIGJlZW4KICAgICAvLyBoaWRkZW4gYnkgYSB2YXJpYWJs
ZSBuYW1lIG9yIHN0cnVjdCB0eXBlbmFtZS4KKyAgICAvLyBJZiBhIGZ1bmN0aW9uIGlzIGZvdW5k
LCBjaGVjayBmb3Igb25lIHdpdGggYSBtYXRjaGluZyBhcmd1bWVudCBsaXN0LgogICAgIGNvbnN0
IFRTeW1ib2wqIHN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQoY2FsbC0+Z2V0TmFtZSgpLCBidWls
dEluKTsKLSAgICBpZiAoc3ltYm9sID09IDApIHsKKyAgICBpZiAoc3ltYm9sID09IDAgfHwgc3lt
Ym9sLT5pc0Z1bmN0aW9uKCkpIHsKICAgICAgICAgc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZChj
YWxsLT5nZXRNYW5nbGVkTmFtZSgpLCBidWlsdEluKTsKICAgICB9CiAKQEAgLTk5Niw3ICs5NDMs
NyBAQCBjb25zdCBURnVuY3Rpb24qIFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jCiAvLyBJbml0aWFs
aXplcnMgc2hvdyB1cCBpbiBzZXZlcmFsIHBsYWNlcyBpbiB0aGUgZ3JhbW1hci4gIEhhdmUgb25l
IHNldCBvZgogLy8gY29kZSB0byBoYW5kbGUgdGhlbSBoZXJlLgogLy8KLWJvb2wgVFBhcnNlQ29u
dGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVyKFRTb3VyY2VMb2MgbGluZSwgVFN0cmluZyYgaWRlbnRp
ZmllciwgVFB1YmxpY1R5cGUmIHBUeXBlLCAKK2Jvb2wgVFBhcnNlQ29udGV4dDo6ZXhlY3V0ZUlu
aXRpYWxpemVyKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQ
dWJsaWNUeXBlJiBwVHlwZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtVHlwZWQqIGluaXRpYWxpemVyLCBUSW50ZXJtTm9kZSomIGludGVybU5vZGUsIFRW
YXJpYWJsZSogdmFyaWFibGUpCiB7CiAgICAgVFR5cGUgdHlwZSA9IFRUeXBlKHBUeXBlKTsKQEAg
LTEwNDgsMTMgKzk5NSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVy
KFQKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChpbml0
aWFsaXplci0+Z2V0QXNDb25zdGFudFVuaW9uKCkpIHsgCi0gICAgICAgICAgICBDb25zdGFudFVu
aW9uKiB1bmlvbkFycmF5ID0gdmFyaWFibGUtPmdldENvbnN0UG9pbnRlcigpOwotCi0gICAgICAg
ICAgICBpZiAodHlwZS5nZXRPYmplY3RTaXplKCkgPT0gMSAmJiB0eXBlLmdldEJhc2ljVHlwZSgp
ICE9IEVidFN0cnVjdCkgewotICAgICAgICAgICAgICAgICp1bmlvbkFycmF5ID0gKGluaXRpYWxp
emVyLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSlbMF07Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5zaGFyZUNvbnN0
UG9pbnRlcihpbml0aWFsaXplci0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyaWFibGUtPnNoYXJlQ29u
c3RQb2ludGVyKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaW5pdGlhbGl6ZXItPmdldEFzU3ltYm9s
Tm9kZSgpKSB7CiAgICAgICAgICAgICBjb25zdCBUU3ltYm9sKiBzeW1ib2wgPSBzeW1ib2xUYWJs
ZS5maW5kKGluaXRpYWxpemVyLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkpOwogICAg
ICAgICAgICAgY29uc3QgVFZhcmlhYmxlKiB0VmFyID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlh
YmxlKj4oc3ltYm9sKTsKQEAgLTExMDgsMTYgKzEwNDksMTYgQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjphcmVBbGxDaGlsZENvbnN0KFRJbgogLy8KIC8vIFJldHVybnMgMCBmb3IgYW4gZXJyb3Igb3Ig
dGhlIGNvbnN0cnVjdGVkIG5vZGUgKGFnZ3JlZ2F0ZSBvciB0eXBlZCkgZm9yIG5vIGVycm9yLgog
Ly8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IoVEludGVybU5v
ZGUqIG5vZGUsIGNvbnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRGdW5jdGlvbiogZm5D
YWxsLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENv
bnN0cnVjdG9yKFRJbnRlcm1Ob2RlKiBub2RlLCBjb25zdCBUVHlwZSogdHlwZSwgVE9wZXJhdG9y
IG9wLCBURnVuY3Rpb24qIGZuQ2FsbCwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBp
ZiAobm9kZSA9PSAwKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFRJbnRlcm1BZ2dyZWdhdGUq
IGFnZ3JOb2RlID0gbm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKTsKICAgICAKLSAgICBUVHlwZUxpc3Q6
OmNvbnN0X2l0ZXJhdG9yIG1lbWJlclR5cGVzOworICAgIFRGaWVsZExpc3Q6OmNvbnN0X2l0ZXJh
dG9yIG1lbWJlckZpZWxkczsKICAgICBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0KQotICAg
ICAgICBtZW1iZXJUeXBlcyA9IHR5cGUtPmdldFN0cnVjdCgpLT5iZWdpbigpOworICAgICAgICBt
ZW1iZXJGaWVsZHMgPSB0eXBlLT5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCkuYmVnaW4oKTsKICAgICAK
ICAgICBUVHlwZSBlbGVtZW50VHlwZSA9ICp0eXBlOwogICAgIGlmICh0eXBlLT5pc0FycmF5KCkp
CkBAIC0xMTM5LDcgKzEwODAsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENv
bnN0cnVjCiAgICAgICAgIGlmICh0eXBlLT5pc0FycmF5KCkpCiAgICAgICAgICAgICBuZXdOb2Rl
ID0gY29uc3RydWN0U3RydWN0KG5vZGUsICZlbGVtZW50VHlwZSwgMSwgbm9kZS0+Z2V0TGluZSgp
LCBmYWxzZSk7CiAgICAgICAgIGVsc2UgaWYgKG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCkKLSAg
ICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgKCptZW1iZXJUeXBlcyku
dHlwZSwgMSwgbm9kZS0+Z2V0TGluZSgpLCBmYWxzZSk7CisgICAgICAgICAgICBuZXdOb2RlID0g
Y29uc3RydWN0U3RydWN0KG5vZGUsICgqbWVtYmVyRmllbGRzKS0+dHlwZSgpLCAxLCBub2RlLT5n
ZXRMaW5lKCksIGZhbHNlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV3Tm9kZSA9IGNv
bnN0cnVjdEJ1aWx0SW4odHlwZSwgb3AsIG5vZGUsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwog
CkBAIC0xMTcwLDcgKzExMTEsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENv
bnN0cnVjCiAgICAgICAgIGlmICh0eXBlLT5pc0FycmF5KCkpCiAgICAgICAgICAgICBuZXdOb2Rl
ID0gY29uc3RydWN0U3RydWN0KCpwLCAmZWxlbWVudFR5cGUsIHBhcmFtQ291bnQrMSwgbm9kZS0+
Z2V0TGluZSgpLCB0cnVlKTsKICAgICAgICAgZWxzZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3Ry
dWN0KQotICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdCgqcCwgKG1lbWJlclR5
cGVzW3BhcmFtQ291bnRdKS50eXBlLCBwYXJhbUNvdW50KzEsIG5vZGUtPmdldExpbmUoKSwgdHJ1
ZSk7CisgICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0U3RydWN0KCpwLCBtZW1iZXJGaWVs
ZHNbcGFyYW1Db3VudF0tPnR5cGUoKSwgcGFyYW1Db3VudCsxLCBub2RlLT5nZXRMaW5lKCksIHRy
dWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0QnVpbHRJ
bih0eXBlLCBvcCwgKnAsIG5vZGUtPmdldExpbmUoKSwgdHJ1ZSk7CiAgICAgICAgIApAQCAtMTIx
Niw3ICsxMTU3LDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpmb2xkQ29uc3RDbwog
Ly8KIC8vIFJldHVybnMgMCBmb3IgYW4gZXJyb3Igb3IgdGhlIGNvbnN0cnVjdGVkIG5vZGUuCiAv
LwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRU
eXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBub2RlLCBUU291cmNlTG9jIGxp
bmUsIGJvb2wgc3Vic2V0KQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RC
dWlsdEluKGNvbnN0IFRUeXBlKiB0eXBlLCBUT3BlcmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBub2Rl
LCBjb25zdCBUU291cmNlTG9jJiBsaW5lLCBib29sIHN1YnNldCkKIHsKICAgICBUSW50ZXJtVHlw
ZWQqIG5ld05vZGU7CiAgICAgVE9wZXJhdG9yIGJhc2ljT3A7CkBAIC0xMjc4LDcgKzEyMTksNyBA
QCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdEJ1CiAvLwogLy8gUmV0dXJu
cyAwIGZvciBhbiBlcnJvciBvciB0aGUgaW5wdXQgbm9kZSBpdHNlbGYgaWYgdGhlIGV4cGVjdGVk
IGFuZCB0aGUgZ2l2ZW4gcGFyYW1ldGVyIHR5cGVzIG1hdGNoLgogLy8KLVRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6Y29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2RlKiBub2RlLCBUVHlwZSog
dHlwZSwgaW50IHBhcmFtQ291bnQsIFRTb3VyY2VMb2MgbGluZSwgYm9vbCBzdWJzZXQpCitUSW50
ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdFN0cnVjdChUSW50ZXJtTm9kZSogbm9k
ZSwgVFR5cGUqIHR5cGUsIGludCBwYXJhbUNvdW50LCBjb25zdCBUU291cmNlTG9jJiBsaW5lLCBi
b29sIHN1YnNldCkKIHsKICAgICBpZiAoKnR5cGUgPT0gbm9kZS0+Z2V0QXNUeXBlZCgpLT5nZXRU
eXBlKCkpIHsKICAgICAgICAgaWYgKHN1YnNldCkKQEAgLTEzMDUsNyArMTI0Niw3IEBAIFRJbnRl
cm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0U3QKIC8vIG5vZGUgb3IgaXQgY291bGQg
YmUgdGhlIGludGVybWVkaWF0ZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIGFjY2Vzc2luZyBmaWVs
ZHMgaW4gYSBjb25zdGFudCBzdHJ1Y3R1cmUgb3IgY29sdW1uIG9mIAogLy8gYSBjb25zdGFudCBt
YXRyaXguCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFZlY3Rvck5v
ZGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2Mg
bGluZSkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWN0b3JOb2RlKFRW
ZWN0b3JGaWVsZHMmIGZpZWxkcywgVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBUU291cmNlTG9j
JiBsaW5lKQogewogICAgIFRJbnRlcm1UeXBlZCogdHlwZWROb2RlOwogICAgIFRJbnRlcm1Db25z
dGFudFVuaW9uKiB0ZW1wQ29uc3RhbnROb2RlID0gbm9kZS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7
CkBAIC0xMzEzLDcgKzEyNTQsNiBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENv
bnN0VmVjCiAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheTsKICAgICBpZiAodGVtcENvbnN0
YW50Tm9kZSkgewogICAgICAgICB1bmlvbkFycmF5ID0gdGVtcENvbnN0YW50Tm9kZS0+Z2V0VW5p
b25BcnJheVBvaW50ZXIoKTsKLSAgICAgICAgQVNTRVJUKHVuaW9uQXJyYXkpOwogCiAgICAgICAg
IGlmICghdW5pb25BcnJheSkgewogICAgICAgICAgICAgcmV0dXJuIG5vZGU7CkBAIC0xMzI4LDcg
KzEyNjgsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVjCiAgICAg
Q29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW2ZpZWxkcy5udW1d
OwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWVsZHMubnVtOyBpKyspIHsKLSAgICAgICAg
aWYgKGZpZWxkcy5vZmZzZXRzW2ldID49IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkp
IHsKKyAgICAgICAgaWYgKGZpZWxkcy5vZmZzZXRzW2ldID49IG5vZGUtPmdldFR5cGUoKS5nZXRO
b21pbmFsU2l6ZSgpKSB7CiAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9T
dHJlYW07CiAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgInZlY3RvciBmaWVsZCBzZWxl
Y3Rpb24gb3V0IG9mIHJhbmdlICciIDw8IGZpZWxkcy5vZmZzZXRzW2ldIDw8ICInIjsKICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKQEAg
LTEzNTAsNyArMTI5MCw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RW
ZWMKIC8vIHRvIHRoZSBmdW5jdGlvbiBjb3VsZCBlaXRoZXIgYmUgYSBzeW1ib2wgbm9kZSAobVsw
XSB3aGVyZSBtIGlzIGEgY29uc3RhbnQgbWF0cml4KXRoYXQgcmVwcmVzZW50cyBhIAogLy8gY29u
c3RhbnQgbWF0cml4IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRo
ZSBjb25zdGFudCBtYXRyaXggKHMubTFbMF0gd2hlcmUgcyBpcyBhIGNvbnN0YW50IHN0cnVjdHVy
ZSkKIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZShp
bnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5
cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdE1hdHJpeE5vZGUoaW50IGluZGV4LCBUSW50ZXJt
VHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVk
KiB0eXBlZE5vZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUg
PSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKQEAgLTEzODUsNyArMTMyNSw3IEBAIFRJbnRl
cm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RNYXQKIC8vIHRvIHRoZSBmdW5jdGlvbiBj
b3VsZCBlaXRoZXIgYmUgYSBzeW1ib2wgbm9kZSAoYVswXSB3aGVyZSBhIGlzIGEgY29uc3RhbnQg
YXJyYXkpdGhhdCByZXByZXNlbnRzIGEgCiAvLyBjb25zdGFudCBhcnJheSBvciBpdCBjb3VsZCBi
ZSB0aGUgdHJlZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29uc3RhbnQgYXJyYXkgKHMuYTFbMF0g
d2hlcmUgcyBpcyBhIGNvbnN0YW50IHN0cnVjdHVyZSkKIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJz
ZUNvbnRleHQ6OmFkZENvbnN0QXJyYXlOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2Rl
LCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0
QXJyYXlOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBUU291cmNlTG9j
JiBsaW5lKQogewogICAgIFRJbnRlcm1UeXBlZCogdHlwZWROb2RlOwogICAgIFRJbnRlcm1Db25z
dGFudFVuaW9uKiB0ZW1wQ29uc3RhbnROb2RlID0gbm9kZS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7
CkBAIC0xNDAxLDkgKzEzNDEsOCBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENv
bnN0QXJyCiAgICAgICAgIGluZGV4ID0gMDsKICAgICB9CiAKLSAgICBpbnQgYXJyYXlFbGVtZW50
U2l6ZSA9IGFycmF5RWxlbWVudFR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwotCiAgICAgaWYgKHRlbXBD
b25zdGFudE5vZGUpIHsKKyAgICAgICAgIHNpemVfdCBhcnJheUVsZW1lbnRTaXplID0gYXJyYXlF
bGVtZW50VHlwZS5nZXRPYmplY3RTaXplKCk7CiAgICAgICAgICBDb25zdGFudFVuaW9uKiB1bmlv
bkFycmF5ID0gdGVtcENvbnN0YW50Tm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKICAgICAg
ICAgIHR5cGVkTm9kZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKCZ1bmlvbkFycmF5
W2FycmF5RWxlbWVudFNpemUgKiBpbmRleF0sIHRlbXBDb25zdGFudE5vZGUtPmdldFR5cGUoKSwg
bGluZSk7CiAgICAgfSBlbHNlIHsKQEAgLTE0MjIsMjIgKzEzNjEsMjEgQEAgVEludGVybVR5cGVk
KiBUUGFyc2VDb250ZXh0OjphZGRDb25zdEFycgogLy8gSWYgdGhlcmUgaXMgYW4gZW1iZWRkZWQv
bmVzdGVkIHN0cnVjdCwgaXQgYXBwcm9wcmlhdGVseSBjYWxscyBhZGRDb25zdFN0cnVjdE5lc3Rl
ZCBvciBhZGRDb25zdFN0cnVjdEZyb21BZ2dyCiAvLyBmdW5jdGlvbiBhbmQgcmV0dXJucyB0aGUg
cGFyc2UtdHJlZSB3aXRoIHRoZSB2YWx1ZXMgb2YgdGhlIGVtYmVkZGVkL25lc3RlZCBzdHJ1Y3Qu
CiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdChUU3RyaW5n
JiBpZGVudGlmaWVyLCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRl
cm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RTdHJ1Y3QoVFN0cmluZyYgaWRlbnRpZmll
ciwgVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewotICAgIGNv
bnN0IFRUeXBlTGlzdCogZmllbGRzID0gbm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOwotICAg
IFRJbnRlcm1UeXBlZCAqdHlwZWROb2RlOwotICAgIGludCBpbnN0YW5jZVNpemUgPSAwOwotICAg
IHVuc2lnbmVkIGludCBpbmRleCA9IDA7Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24gKnRlbXBD
b25zdGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICBjb25zdCBURmll
bGRMaXN0JiBmaWVsZHMgPSBub2RlLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPmZpZWxkcygpOwog
Ci0gICAgZm9yICggaW5kZXggPSAwOyBpbmRleCA8IGZpZWxkcy0+c2l6ZSgpOyArK2luZGV4KSB7
Ci0gICAgICAgIGlmICgoKmZpZWxkcylbaW5kZXhdLnR5cGUtPmdldEZpZWxkTmFtZSgpID09IGlk
ZW50aWZpZXIpIHsKKyAgICBzaXplX3QgaW5zdGFuY2VTaXplID0gMDsKKyAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgZmllbGRzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBp
ZiAoZmllbGRzW2luZGV4XS0+bmFtZSgpID09IGlkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaW5zdGFuY2VTaXplICs9ICgqZmll
bGRzKVtpbmRleF0udHlwZS0+Z2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAgICAgaW5zdGFuY2VT
aXplICs9IGZpZWxkc1tpbmRleF0tPnR5cGUoKS0+Z2V0T2JqZWN0U2l6ZSgpOwogICAgICAgICB9
CiAgICAgfQogCisgICAgVEludGVybVR5cGVkKiB0eXBlZE5vZGUgPSAwOworICAgIFRJbnRlcm1D
b25zdGFudFVuaW9uKiB0ZW1wQ29uc3RhbnROb2RlID0gbm9kZS0+Z2V0QXNDb25zdGFudFVuaW9u
KCk7CiAgICAgaWYgKHRlbXBDb25zdGFudE5vZGUpIHsKICAgICAgICAgIENvbnN0YW50VW5pb24q
IGNvbnN0QXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwog
CkBAIC0xNDUyLDcgKzEzOTAsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENv
bnN0U3RyCiAgICAgcmV0dXJuIHR5cGVkTm9kZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0Ojpl
bnRlclN0cnVjdERlY2xhcmF0aW9uKGludCBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVy
KQorYm9vbCBUUGFyc2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9uKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCiB7CiAgICAgKytzdHJ1Y3RO
ZXN0aW5nTGV2ZWw7CiAKQEAgLTE0NzgsMjEgKzE0MTYsMjEgQEAgY29uc3QgaW50IGtXZWJHTE1h
eFN0cnVjdE5lc3RpbmcgPSA0OwogCiB9ICAvLyBuYW1lc3BhY2UKIAotYm9vbCBUUGFyc2VDb250
ZXh0OjpzdHJ1Y3ROZXN0aW5nRXJyb3JDaGVjayhUU291cmNlTG9jIGxpbmUsIGNvbnN0IFRUeXBl
JiBmaWVsZFR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQpCiB7CiAgICAgaWYg
KCFpc1dlYkdMQmFzZWRTcGVjKHNoYWRlclNwZWMpKSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoZmllbGRUeXBlLmdldEJhc2ljVHlwZSgpICE9IEVidFN0cnVjdCkg
eworICAgIGlmIChmaWVsZC50eXBlKCktPmdldEJhc2ljVHlwZSgpICE9IEVidFN0cnVjdCkgewog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gV2UncmUgYWxyZWFkeSBpbnNp
ZGUgYSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBhdCB0aGlzIHBvaW50LCBzbyBhZGQKICAgICAvLyBv
bmUgdG8gdGhlIGZpZWxkJ3Mgc3RydWN0IG5lc3RpbmcuCi0gICAgaWYgKDEgKyBmaWVsZFR5cGUu
Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSA+IGtXZWJHTE1heFN0cnVjdE5lc3RpbmcpIHsKKyAg
ICBpZiAoMSArIGZpZWxkLnR5cGUoKS0+Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSA+IGtXZWJH
TE1heFN0cnVjdE5lc3RpbmcpIHsKICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZv
U3RyZWFtOwotICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgIlJlZmVyZW5jZSBvZiBzdHJ1Y3Qg
dHlwZSAiIDw8IGZpZWxkVHlwZS5nZXRUeXBlTmFtZSgpIAorICAgICAgICBleHRyYUluZm9TdHJl
YW0gPDwgIlJlZmVyZW5jZSBvZiBzdHJ1Y3QgdHlwZSAiIDw8IGZpZWxkLm5hbWUoKQogICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgIiBleGNlZWRzIG1heGltdW0gc3RydWN0IG5lc3Rpbmcgb2Yg
IiA8PCBrV2ViR0xNYXhTdHJ1Y3ROZXN0aW5nOwogICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUlu
Zm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CiAgICAgICAgIGVycm9yKGxpbmUsICIiLCAiIiwg
ZXh0cmFJbmZvLmNfc3RyKCkpOwpAQCAtMTUwMyw2ICsxNDQxLDE0MCBAQCBib29sIFRQYXJzZUNv
bnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoCiB9CiAKIC8vCisvLyBQYXJzZSBhbiBhcnJheSBp
bmRleCBleHByZXNzaW9uCisvLworVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRJbmRl
eEV4cHJlc3Npb24oVEludGVybVR5cGVkICpiYXNlRXhwcmVzc2lvbiwgY29uc3QgVFNvdXJjZUxv
YyYgbG9jYXRpb24sIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uKQoreworICAgIFRJbnRl
cm1UeXBlZCAqaW5kZXhlZEV4cHJlc3Npb24gPSBOVUxMOworCisgICAgaWYgKCFiYXNlRXhwcmVz
c2lvbi0+aXNBcnJheSgpICYmICFiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgoKSAmJiAhYmFzZUV4
cHJlc3Npb24tPmlzVmVjdG9yKCkpCisgICAgeworICAgICAgICBpZiAoYmFzZUV4cHJlc3Npb24t
PmdldEFzU3ltYm9sTm9kZSgpKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcihsb2NhdGlv
biwgIiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3Ig
IiwgYmFzZUV4cHJlc3Npb24tPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKS5jX3N0cigp
KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9y
KGxvY2F0aW9uLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9y
IHZlY3RvciAiLCAiZXhwcmVzc2lvbiIpOworICAgICAgICB9CisgICAgICAgIHJlY292ZXIoKTsK
KyAgICB9CisKKyAgICBpZiAoaW5kZXhFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFD
b25zdCkKKyAgICB7CisgICAgICAgIGludCBpbmRleCA9IGluZGV4RXhwcmVzc2lvbi0+Z2V0QXND
b25zdGFudFVuaW9uKCktPmdldElDb25zdCgwKTsKKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gaW5mb1N0cmVhbTsKKyAgICAg
ICAgICAgIGluZm9TdHJlYW0gPDwgaW5kZXg7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyBpbmZv
ID0gaW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAibmVnYXRp
dmUgaW5kZXgiLCBpbmZvLmNfc3RyKCkpOworICAgICAgICAgICAgcmVjb3ZlcigpOworICAgICAg
ICAgICAgaW5kZXggPSAwOworICAgICAgICB9CisgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+
Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoYmFzZUV4cHJlc3Npb24tPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheXMKKyAgICAgICAgICAgICAg
ICBpbmRleGVkRXhwcmVzc2lvbiA9IGFkZENvbnN0QXJyYXlOb2RlKGluZGV4LCBiYXNlRXhwcmVz
c2lvbiwgbG9jYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYmFz
ZUV4cHJlc3Npb24tPmlzVmVjdG9yKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ly8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9ycworICAgICAgICAgICAgICAgIFRWZWN0b3JG
aWVsZHMgZmllbGRzOworICAgICAgICAgICAgICAgIGZpZWxkcy5udW0gPSAxOworICAgICAgICAg
ICAgICAgIGZpZWxkcy5vZmZzZXRzWzBdID0gaW5kZXg7IC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3
YXkgYmVjYXVzZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5CisgICAgICAgICAgICAg
ICAgaW5kZXhlZEV4cHJlc3Npb24gPSBhZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCBiYXNlRXhw
cmVzc2lvbiwgbG9jYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAo
YmFzZUV4cHJlc3Npb24tPmlzTWF0cml4KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKKyAgICAgICAgICAgICAgICBpbmRl
eGVkRXhwcmVzc2lvbiA9IGFkZENvbnN0TWF0cml4Tm9kZShpbmRleCwgYmFzZUV4cHJlc3Npb24s
IGxvY2F0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNBcnJheSgpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBiYXNlRXhwcmVzc2lvbi0+Z2V0
VHlwZSgpLmdldEFycmF5U2l6ZSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOworICAgICAgICAgICAgICAg
ICAgICBleHRyYUluZm9TdHJlYW0gPDwgImFycmF5IGluZGV4IG91dCBvZiByYW5nZSAnIiA8PCBp
bmRleCA8PCAiJyI7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9
IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IobG9jYXRp
b24sICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVj
b3ZlcigpOworICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGJhc2VFeHByZXNzaW9uLT5nZXRU
eXBlKCkuZ2V0QXJyYXlTaXplKCkgLSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxRnJhZ0Rh
dGEgJiYgaW5kZXggPiAwICYmICFpc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZl
cnMiKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGVycm9yKGxvY2F0
aW9uLCAiIiwgIlsiLCAiYXJyYXkgaW5kZXhlcyBmb3IgZ2xfRnJhZ0RhdGEgbXVzdCBiZSB6ZXJv
IHdoZW4gR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBkaXNhYmxlZCIpOworICAgICAgICAgICAgICAg
ICAgICByZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICgoYmFzZUV4cHJl
c3Npb24tPmlzVmVjdG9yKCkgfHwgYmFzZUV4cHJlc3Npb24tPmlzTWF0cml4KCkpICYmIGJhc2VF
eHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSA8PSBpbmRleCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07
CisgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJmaWVsZCBzZWxlY3Rpb24gb3V0
IG9mIHJhbmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgZXJy
b3IobG9jYXRpb24sICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICAgICAgICAgICAg
ICByZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgaW5kZXggPSBiYXNlRXhwcmVzc2lvbi0+Z2V0
VHlwZSgpLmdldE5vbWluYWxTaXplKCkgLSAxOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpbmRleEV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9p
bnRlcigpLT5zZXRJQ29uc3QoaW5kZXgpOworICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24g
PSBpbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsIGJhc2VFeHByZXNzaW9uLCBp
bmRleEV4cHJlc3Npb24sIGxvY2F0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRJbmRleChF
T3BJbmRleEluZGlyZWN0LCBiYXNlRXhwcmVzc2lvbiwgaW5kZXhFeHByZXNzaW9uLCBsb2NhdGlv
bik7CisgICAgfQorCisgICAgaWYgKGluZGV4ZWRFeHByZXNzaW9uID09IDApCisgICAgeworICAg
ICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Cisg
ICAgICAgIHVuaW9uQXJyYXktPnNldEZDb25zdCgwLjBmKTsKKyAgICAgICAgaW5kZXhlZEV4cHJl
c3Npb24gPSBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRGbG9hdCwgRWJwSGlnaCwgRXZxQ29uc3QpLCBsb2NhdGlvbik7CisgICAgfQorICAgIGVsc2Ug
aWYgKGJhc2VFeHByZXNzaW9uLT5pc0FycmF5KCkpCisgICAgeworICAgICAgICBjb25zdCBUVHlw
ZSAmYmFzZVR5cGUgPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpOworICAgICAgICBpZiAoYmFz
ZVR5cGUuZ2V0U3RydWN0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRUeXBlIGNvcHlPZlR5
cGUoYmFzZVR5cGUuZ2V0U3RydWN0KCkpOworICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24t
PnNldFR5cGUoY29weU9mVHlwZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7
CisgICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShUVHlwZShiYXNlRXhwcmVz
c2lvbi0+Z2V0QmFzaWNUeXBlKCksIGJhc2VFeHByZXNzaW9uLT5nZXRQcmVjaXNpb24oKSwgRXZx
VGVtcG9yYXJ5LCBiYXNlRXhwcmVzc2lvbi0+Z2V0Tm9taW5hbFNpemUoKSwgYmFzZUV4cHJlc3Np
b24tPmlzTWF0cml4KCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChiYXNlRXhwcmVzc2lv
bi0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQorICAgICAgICB7CisgICAg
ICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVy
KEV2cUNvbnN0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lv
bi0+aXNNYXRyaXgoKSkKKyAgICB7CisgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gYmFz
ZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNv
bnN0IDogRXZxVGVtcG9yYXJ5OworICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShU
VHlwZShiYXNlRXhwcmVzc2lvbi0+Z2V0QmFzaWNUeXBlKCksIGJhc2VFeHByZXNzaW9uLT5nZXRQ
cmVjaXNpb24oKSwgcXVhbGlmaWVyLCBiYXNlRXhwcmVzc2lvbi0+Z2V0Tm9taW5hbFNpemUoKSkp
OworICAgIH0KKyAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKKyAgICB7
CisgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUo
KS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5Owor
ICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShUVHlwZShiYXNlRXhwcmVzc2lvbi0+
Z2V0QmFzaWNUeXBlKCksIGJhc2VFeHByZXNzaW9uLT5nZXRQcmVjaXNpb24oKSwgcXVhbGlmaWVy
KSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5z
ZXRUeXBlKGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkpOworICAgIH0KKworICAgIHJldHVybiBp
bmRleGVkRXhwcmVzc2lvbjsKK30KKworLy8KIC8vIFBhcnNlIGFuIGFycmF5IG9mIHN0cmluZ3Mg
dXNpbmcgeXlwYXJzZS4KIC8vCiAvLyBSZXR1cm5zIDAgZm9yIHN1Y2Nlc3MuCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAko
cmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1BhcnNlSGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTMzLDEwICszMyw4IEBAIHN0cnVjdCBUUGFy
c2VDb250ZXh0IHsKICAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zKG9wdGlvbnMpLAogICAgICAg
ICAgICAgc291cmNlUGF0aChzb3VyY2VQYXRoKSwKICAgICAgICAgICAgIHRyZWVSb290KDApLAot
ICAgICAgICAgICAgbGV4QWZ0ZXJUeXBlKGZhbHNlKSwKICAgICAgICAgICAgIGxvb3BOZXN0aW5n
TGV2ZWwoMCksCiAgICAgICAgICAgICBzdHJ1Y3ROZXN0aW5nTGV2ZWwoMCksCi0gICAgICAgICAg
ICBpblR5cGVQYXJlbihmYWxzZSksCiAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb25UeXBlKE5V
TEwpLAogICAgICAgICAgICAgZnVuY3Rpb25SZXR1cm5zVmFsdWUoZmFsc2UpLAogICAgICAgICAg
ICAgY2hlY2tzUHJlY2lzaW9uRXJyb3JzKGNoZWNrc1ByZWNFcnJvcnMpLApAQCAtNTEsMTYgKzQ5
LDEzIEBAIHN0cnVjdCBUUGFyc2VDb250ZXh0IHsKICAgICBpbnQgY29tcGlsZU9wdGlvbnM7CiAg
ICAgY29uc3QgY2hhciogc291cmNlUGF0aDsgICAgICAvLyBQYXRoIG9mIHNvdXJjZSBmaWxlIG9y
IE5VTEwuCiAgICAgVEludGVybU5vZGUqIHRyZWVSb290OyAgICAgICAvLyByb290IG9mIHBhcnNl
IHRyZWUgYmVpbmcgY3JlYXRlZAotICAgIGJvb2wgbGV4QWZ0ZXJUeXBlOyAgICAgICAgICAgLy8g
dHJ1ZSBpZiB3ZSd2ZSByZWNvZ25pemVkIGEgdHlwZSwgc28gY2FuIG9ubHkgYmUgbG9va2luZyBm
b3IgYW4gaWRlbnRpZmllcgogICAgIGludCBsb29wTmVzdGluZ0xldmVsOyAgICAgICAgLy8gMCBp
ZiBvdXRzaWRlIGFsbCBsb29wcwogICAgIGludCBzdHJ1Y3ROZXN0aW5nTGV2ZWw7ICAgICAgLy8g
aW5jcmVtZW50ZWQgd2hpbGUgcGFyc2luZyBhIHN0cnVjdCBkZWNsYXJhdGlvbgotICAgIGJvb2wg
aW5UeXBlUGFyZW47ICAgICAgICAgICAgLy8gdHJ1ZSBpZiBpbiBwYXJlbnRoZXNlcywgbG9va2lu
ZyBvbmx5IGZvciBhbiBpZGVudGlmaWVyCiAgICAgY29uc3QgVFR5cGUqIGN1cnJlbnRGdW5jdGlv
blR5cGU7ICAvLyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQncyBjdXJyZW50
bHkgYmVpbmcgcGFyc2VkCiAgICAgYm9vbCBmdW5jdGlvblJldHVybnNWYWx1ZTsgICAvLyB0cnVl
IGlmIGEgbm9uLXZvaWQgZnVuY3Rpb24gaGFzIGEgcmV0dXJuCiAgICAgYm9vbCBjaGVja3NQcmVj
aXNpb25FcnJvcnM7ICAvLyB0cnVlIGlmIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkIHdoZW4g
YSB2YXJpYWJsZSBpcyBkZWNsYXJlZCB3aXRob3V0IHByZWNpc2lvbiwgZXhwbGljaXQgb3IgaW1w
bGljaXQuCiAgICAgYm9vbCBmcmFnbWVudFByZWNpc2lvbkhpZ2g7ICAvLyB0cnVlIGlmIGhpZ2hw
IHByZWNpc2lvbiBpcyBzdXBwb3J0ZWQgaW4gdGhlIGZyYWdtZW50IGxhbmd1YWdlLgogICAgIFRT
dHJpbmcgSGFzaEVyck1zZzsKLSAgICBib29sIEFmdGVyRU9GOwogICAgIFREaWFnbm9zdGljcyBk
aWFnbm9zdGljczsKICAgICBURGlyZWN0aXZlSGFuZGxlciBkaXJlY3RpdmVIYW5kbGVyOwogICAg
IHBwOjpQcmVwcm9jZXNzb3IgcHJlcHJvY2Vzc29yOwpAQCAtNjgsNzEgKzYzLDY5IEBAIHN0cnVj
dCBUUGFyc2VDb250ZXh0IHsKIAogICAgIGludCBudW1FcnJvcnMoKSBjb25zdCB7IHJldHVybiBk
aWFnbm9zdGljcy5udW1FcnJvcnMoKTsgfQogICAgIFRJbmZvU2luayYgaW5mb1NpbmsoKSB7IHJl
dHVybiBkaWFnbm9zdGljcy5pbmZvU2luaygpOyB9Ci0gICAgdm9pZCBlcnJvcihUU291cmNlTG9j
IGxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKKyAgICB2b2lkIGVy
cm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFy
KiB0b2tlbiwKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5mbz0iIik7Ci0gICAg
dm9pZCB3YXJuaW5nKFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNo
YXIqIHRva2VuLAorICAgIHZvaWQgd2FybmluZyhjb25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0
IGNoYXIqIHJlYXNvbiwgY29uc3QgY2hhciogdG9rZW4sCiAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGV4dHJhSW5mbz0iIik7CiAgICAgdm9pZCB0cmFjZShjb25zdCBjaGFyKiBzdHIpOwog
ICAgIHZvaWQgcmVjb3ZlcigpOwogCi0gICAgYm9vbCBwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBU
U3RyaW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBpbnQgbGluZSk7Ci0gICAgYm9v
bCBwYXJzZU1hdHJpeEZpZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IG1hdFNpemUsIFRNYXRyaXhG
aWVsZHMmLCBpbnQgbGluZSk7CisgICAgYm9vbCBwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3Ry
aW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291cmNlTG9jJiBsaW5l
KTsKKyAgICBib29sIHBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgbWF0U2l6
ZSwgVE1hdHJpeEZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpOwogCi0gICAgYm9vbCBy
ZXNlcnZlZEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpOwot
ICAgIHZvaWQgYXNzaWduRXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxl
ZnQsIFRTdHJpbmcgcmlnaHQpOwotICAgIHZvaWQgdW5hcnlPcEVycm9yKGludCBsaW5lLCBjb25z
dCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKTsKLSAgICB2b2lkIGJpbmFyeU9wRXJyb3IoaW50
IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOwotICAg
IGJvb2wgcHJlY2lzaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgVFByZWNpc2lvbiBwcmVjaXNpb24s
IFRCYXNpY1R5cGUgdHlwZSk7Ci0gICAgYm9vbCBsVmFsdWVFcnJvckNoZWNrKGludCBsaW5lLCBj
b25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CisgICAgYm9vbCByZXNlcnZlZEVycm9yQ2hl
Y2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcik7Cisg
ICAgdm9pZCBhc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBv
cCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKKyAgICB2b2lkIHVuYXJ5T3BFcnJvcihj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKTsK
KyAgICB2b2lkIGJpbmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hh
ciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7CisgICAgYm9vbCBwcmVjaXNpb25F
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBU
QmFzaWNUeXBlIHR5cGUpOworICAgIGJvb2wgbFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7CiAgICAgYm9vbCBjb25z
dEVycm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlKTsKICAgICBib29sIGludGVnZXJFcnJvckNo
ZWNrKFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgY2hhciogdG9rZW4pOwotICAgIGJvb2wgZ2xv
YmFsRXJyb3JDaGVjayhpbnQgbGluZSwgYm9vbCBnbG9iYWwsIGNvbnN0IGNoYXIqIHRva2VuKTsK
LSAgICBib29sIGNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVybU5vZGUqLCBU
RnVuY3Rpb24mLCBUT3BlcmF0b3IsIFRUeXBlKik7Ci0gICAgYm9vbCBhcnJheVNpemVFcnJvckNo
ZWNrKGludCBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7Ci0gICAgYm9vbCBh
cnJheVF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOwotICAg
IGJvb2wgYXJyYXlUeXBlRXJyb3JDaGVjayhpbnQgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7Ci0g
ICAgYm9vbCBhcnJheUVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQ
dWJsaWNUeXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKLSAgICBib29sIHZvaWRFcnJv
ckNoZWNrKGludCwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRQdWJsaWNUeXBlJik7Ci0gICAgYm9v
bCBib29sRXJyb3JDaGVjayhpbnQsIGNvbnN0IFRJbnRlcm1UeXBlZCopOwotICAgIGJvb2wgYm9v
bEVycm9yQ2hlY2soaW50LCBjb25zdCBUUHVibGljVHlwZSYpOwotICAgIGJvb2wgc2FtcGxlckVy
cm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciog
cmVhc29uKTsKLSAgICBib29sIHN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soaW50IGxpbmUsIGNv
bnN0IFRQdWJsaWNUeXBlJiBwVHlwZSk7Ci0gICAgYm9vbCBwYXJhbWV0ZXJTYW1wbGVyRXJyb3JD
aGVjayhpbnQgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIGNvbnN0IFRUeXBlJiB0eXBlKTsK
LSAgICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50
aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBlLCBib29sIGFycmF5KTsKLSAgICBib29sIG5vbkluaXRF
cnJvckNoZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlw
ZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOwotICAgIGJvb2wgcGFyYW1FcnJvckNoZWNrKGludCBs
aW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmllciwgVFR5
cGUqIHR5cGUpOwotICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3Qg
VFN0cmluZyYpOworICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pOworICAgIGJvb2wgY29uc3RydWN0
b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1Ob2RlKiwgVEZ1bmN0
aW9uJiwgVE9wZXJhdG9yLCBUVHlwZSopOworICAgIGJvb2wgYXJyYXlTaXplRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSk7Cisg
ICAgYm9vbCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
VFB1YmxpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBhcnJheVR5cGVFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpOworICAgIGJvb2wgYXJyYXlFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNU
eXBlIHR5cGUsIFRWYXJpYWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHZvaWRFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFB1YmxpY1R5cGUmKTsK
KyAgICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25zdCBUSW50ZXJt
VHlwZWQqKTsKKyAgICBib29sIGJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmLCBjb25z
dCBUUHVibGljVHlwZSYpOworICAgIGJvb2wgc2FtcGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiByZWFzb24p
OworICAgIGJvb2wgc3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpOworICAgIGJvb2wgcGFyYW1ldGVyU2FtcGxl
ckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIs
IGNvbnN0IFRUeXBlJiB0eXBlKTsKKyAgICBib29sIG5vbkluaXRDb25zdEVycm9yQ2hlY2soY29u
c3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5
cGUsIGJvb2wgYXJyYXkpOworICAgIGJvb2wgbm9uSW5pdEVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIFRWYXJp
YWJsZSomIHZhcmlhYmxlKTsKKyAgICBib29sIHBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1YWxpZmll
ciwgVFR5cGUqIHR5cGUpOworICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJik7CiAKKyAgICBjb25zdCBUUHJhZ21hJiBwcmFn
bWEoKSBjb25zdCB7IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLnByYWdtYSgpOyB9CiAgICAgY29u
c3QgVEV4dGVuc2lvbkJlaGF2aW9yJiBleHRlbnNpb25CZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJu
IGRpcmVjdGl2ZUhhbmRsZXIuZXh0ZW5zaW9uQmVoYXZpb3IoKTsgfQogICAgIGJvb2wgc3VwcG9y
dHNFeHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9uKTsKLSAgICB2b2lkIGhhbmRsZUV4dGVu
c2lvbkRpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogZXh0TmFtZSwgY29uc3QgY2hhciog
YmVoYXZpb3IpOwotCi0gICAgY29uc3QgVFByYWdtYSYgcHJhZ21hKCkgY29uc3QgeyByZXR1cm4g
ZGlyZWN0aXZlSGFuZGxlci5wcmFnbWEoKTsgfQotICAgIHZvaWQgaGFuZGxlUHJhZ21hRGlyZWN0
aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSk7CisgICAg
Ym9vbCBpc0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgY2hhciogZXh0ZW5zaW9uKSBjb25zdDsKIAog
ICAgIGJvb2wgY29udGFpbnNTYW1wbGVyKFRUeXBlJiB0eXBlKTsKICAgICBib29sIGFyZUFsbENo
aWxkQ29uc3QoVEludGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUpOwotICAgIGNvbnN0IFRGdW5jdGlv
biogZmluZEZ1bmN0aW9uKGludCBsaW5lLCBURnVuY3Rpb24qIHBmbkNhbGwsIGJvb2wgKmJ1aWx0
SW4gPSAwKTsKLSAgICBib29sIGV4ZWN1dGVJbml0aWFsaXplcihUU291cmNlTG9jIGxpbmUsIFRT
dHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiBwVHlwZSwKKyAgICBjb25zdCBURnVuY3Rp
b24qIGZpbmRGdW5jdGlvbihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBURnVuY3Rpb24qIHBmbkNh
bGwsIGJvb2wgKmJ1aWx0SW4gPSAwKTsKKyAgICBib29sIGV4ZWN1dGVJbml0aWFsaXplcihjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbml0aWFsaXpl
ciwgVEludGVybU5vZGUqJiBpbnRlcm1Ob2RlLCBUVmFyaWFibGUqIHZhcmlhYmxlID0gMCk7Ci0g
ICAgYm9vbCBhcnJheVNldE1heFNpemUoVEludGVybVN5bWJvbCosIFRUeXBlKiwgaW50LCBib29s
LCBUU291cmNlTG9jKTsKIAotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RydWN0b3IoVEludGVy
bU5vZGUqLCBjb25zdCBUVHlwZSosIFRPcGVyYXRvciwgVEZ1bmN0aW9uKiwgVFNvdXJjZUxvYyk7
CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9kZSosIGNvbnN0IFRU
eXBlKiwgVE9wZXJhdG9yLCBURnVuY3Rpb24qLCBjb25zdCBUU291cmNlTG9jJik7CiAgICAgVElu
dGVybVR5cGVkKiBmb2xkQ29uc3RDb25zdHJ1Y3RvcihUSW50ZXJtQWdncmVnYXRlKiBhZ2dyTm9k
ZSwgY29uc3QgVFR5cGUmIHR5cGUpOwotICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0U3RydWN0
KFRJbnRlcm1Ob2RlKiwgVFR5cGUqLCBpbnQsIFRTb3VyY2VMb2MsIGJvb2wgc3Vic2V0KTsKLSAg
ICBUSW50ZXJtVHlwZWQqIGNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqLCBUT3BlcmF0b3Is
IFRJbnRlcm1Ob2RlKiwgVFNvdXJjZUxvYywgYm9vbCBzdWJzZXQpOwotICAgIFRJbnRlcm1UeXBl
ZCogYWRkQ29uc3RWZWN0b3JOb2RlKFRWZWN0b3JGaWVsZHMmLCBUSW50ZXJtVHlwZWQqLCBUU291
cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0TWF0cml4Tm9kZShpbnQgLCBUSW50
ZXJtVHlwZWQqLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0QXJyYXlO
b2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBUU291cmNlTG9jIGxpbmUpOwotICAg
IFRJbnRlcm1UeXBlZCogYWRkQ29uc3RTdHJ1Y3QoVFN0cmluZyYgLCBUSW50ZXJtVHlwZWQqLCBU
U291cmNlTG9jKTsKKyAgICBUSW50ZXJtVHlwZWQqIGNvbnN0cnVjdFN0cnVjdChUSW50ZXJtTm9k
ZSosIFRUeXBlKiwgaW50LCBjb25zdCBUU291cmNlTG9jJiwgYm9vbCBzdWJzZXQpOworICAgIFRJ
bnRlcm1UeXBlZCogY29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSosIFRPcGVyYXRvciwgVElu
dGVybU5vZGUqLCBjb25zdCBUU291cmNlTG9jJiwgYm9vbCBzdWJzZXQpOworICAgIFRJbnRlcm1U
eXBlZCogYWRkQ29uc3RWZWN0b3JOb2RlKFRWZWN0b3JGaWVsZHMmLCBUSW50ZXJtVHlwZWQqLCBj
b25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdE1hdHJpeE5vZGUo
aW50ICwgVEludGVybVR5cGVkKiwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBl
ZCogYWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RTdHJ1Y3QoVFN0
cmluZyYgLCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5
cGVkKiBhZGRJbmRleEV4cHJlc3Npb24oVEludGVybVR5cGVkICpiYXNlRXhwcmVzc2lvbiwgY29u
c3QgVFNvdXJjZUxvYyYgbG9jYXRpb24sIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uKTsK
IAogICAgIC8vIFBlcmZvcm1zIGFuIGVycm9yIGNoZWNrIGZvciBlbWJlZGRlZCBzdHJ1Y3QgZGVj
bGFyYXRpb25zLgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbiBlcnJvciB3YXMgcmFpc2VkIGR1
ZSB0byB0aGUgZGVjbGFyYXRpb24gb2YKICAgICAvLyB0aGlzIHN0cnVjdC4KLSAgICBib29sIGVu
dGVyU3RydWN0RGVjbGFyYXRpb24oVFNvdXJjZUxvYyBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVu
dGlmaWVyKTsKKyAgICBib29sIGVudGVyU3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxv
YyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcik7CiAgICAgdm9pZCBleGl0U3RydWN0
RGVjbGFyYXRpb24oKTsKIAotICAgIGJvb2wgc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soVFNvdXJj
ZUxvYyBsaW5lLCBjb25zdCBUVHlwZSYgZmllbGRUeXBlKTsKKyAgICBib29sIHN0cnVjdE5lc3Rp
bmdFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQp
OwogfTsKIAogaW50IFBhUGFyc2VTdHJpbmdzKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29u
c3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuY3BwCShyZXZpc2lvbiAxNTI5
NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDI0ICsyMjgsMjcgQEAgdm9pZCBUUG9vbEFsbG9jYXRv
cjo6cG9wQWxsKCkKIAogdm9pZCogVFBvb2xBbGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBudW1C
eXRlcykKIHsKKyAgICAvLworICAgIC8vIEp1c3Qga2VlcCBzb21lIGludGVyZXN0aW5nIHN0YXRp
c3RpY3MuCisgICAgLy8KKyAgICArK251bUNhbGxzOworICAgIHRvdGFsQnl0ZXMgKz0gbnVtQnl0
ZXM7CisKICAgICAvLyBJZiB3ZSBhcmUgdXNpbmcgZ3VhcmQgYmxvY2tzLCBhbGwgYWxsb2NhdGlv
bnMgYXJlIGJyYWNrZXRlZCBieQogICAgIC8vIHRoZW06IFtndWFyZGJsb2NrXVthbGxvY2F0aW9u
XVtndWFyZGJsb2NrXS4gIG51bUJ5dGVzIGlzIGhvdwogICAgIC8vIG11Y2ggbWVtb3J5IHRoZSBj
YWxsZXIgYXNrZWQgZm9yLiAgYWxsb2NhdGlvblNpemUgaXMgdGhlIHRvdGFsCiAgICAgLy8gc2l6
ZSBpbmNsdWRpbmcgZ3VhcmQgYmxvY2tzLiAgSW4gcmVsZWFzZSBidWlsZCwKICAgICAvLyBndWFy
ZEJsb2NrU2l6ZT0wIGFuZCB0aGlzIGFsbCBnZXRzIG9wdGltaXplZCBhd2F5LgogICAgIHNpemVf
dCBhbGxvY2F0aW9uU2l6ZSA9IFRBbGxvY2F0aW9uOjphbGxvY2F0aW9uU2l6ZShudW1CeXRlcyk7
Ci0gICAgCi0gICAgLy8KLSAgICAvLyBKdXN0IGtlZXAgc29tZSBpbnRlcmVzdGluZyBzdGF0aXN0
aWNzLgotICAgIC8vCi0gICAgKytudW1DYWxsczsKLSAgICB0b3RhbEJ5dGVzICs9IG51bUJ5dGVz
OworICAgIC8vIERldGVjdCBpbnRlZ2VyIG92ZXJmbG93LgorICAgIGlmIChhbGxvY2F0aW9uU2l6
ZSA8IG51bUJ5dGVzKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vCiAgICAgLy8gRG8gdGhl
IGFsbG9jYXRpb24sIG1vc3QgbGlrZWx5IGNhc2UgZmlyc3QsIGZvciBlZmZpY2llbmN5LgogICAg
IC8vIFRoaXMgc3RlcCBjb3VsZCBiZSBtb3ZlZCB0byBiZSBpbmxpbmUgc29tZXRpbWUuCiAgICAg
Ly8KLSAgICBpZiAoY3VycmVudFBhZ2VPZmZzZXQgKyBhbGxvY2F0aW9uU2l6ZSA8PSBwYWdlU2l6
ZSkgeworICAgIGlmIChhbGxvY2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSAtIGN1cnJlbnRQYWdlT2Zm
c2V0KSB7CiAgICAgICAgIC8vCiAgICAgICAgIC8vIFNhZmUgdG8gYWxsb2NhdGUgZnJvbSBjdXJy
ZW50UGFnZU9mZnNldC4KICAgICAgICAgLy8KQEAgLTI1NiwxMiArMjU5LDE2IEBAIHZvaWQqIFRQ
b29sQWxsb2NhdG9yOjphbGxvY2F0ZShzaXplX3QgbnUKICAgICAgICAgcmV0dXJuIGluaXRpYWxp
emVBbGxvY2F0aW9uKGluVXNlTGlzdCwgbWVtb3J5LCBudW1CeXRlcyk7CiAgICAgfQogCi0gICAg
aWYgKGFsbG9jYXRpb25TaXplICsgaGVhZGVyU2tpcCA+IHBhZ2VTaXplKSB7CisgICAgaWYgKGFs
bG9jYXRpb25TaXplID4gcGFnZVNpemUgLSBoZWFkZXJTa2lwKSB7CiAgICAgICAgIC8vCiAgICAg
ICAgIC8vIERvIGEgbXVsdGktcGFnZSBhbGxvY2F0aW9uLiAgRG9uJ3QgbWl4IHRoZXNlIHdpdGgg
dGhlIG90aGVycy4KICAgICAgICAgLy8gVGhlIE9TIGlzIGVmZmljaWVudCBhbmQgYWxsb2NhdGlu
ZyBhbmQgZnJlZS1pbmcgbXVsdGlwbGUgcGFnZXMuCiAgICAgICAgIC8vCiAgICAgICAgIHNpemVf
dCBudW1CeXRlc1RvQWxsb2MgPSBhbGxvY2F0aW9uU2l6ZSArIGhlYWRlclNraXA7CisgICAgICAg
IC8vIERldGVjdCBpbnRlZ2VyIG92ZXJmbG93LgorICAgICAgICBpZiAobnVtQnl0ZXNUb0FsbG9j
IDwgYWxsb2NhdGlvblNpemUpCisgICAgICAgICAgICByZXR1cm4gMDsKKwogICAgICAgICB0SGVh
ZGVyKiBtZW1vcnkgPSByZWludGVycHJldF9jYXN0PHRIZWFkZXIqPig6Om5ldyBjaGFyW251bUJ5
dGVzVG9BbGxvY10pOwogICAgICAgICBpZiAobWVtb3J5ID09IDApCiAgICAgICAgICAgICByZXR1
cm4gMDsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9T
aEhhbmRsZS5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvU2hIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
Y2xhc3MgTG9uZ05hbWVNYXA7CiBjbGFzcyBUQ29tcGlsZXI7CiBjbGFzcyBURGVwZW5kZW5jeUdy
YXBoOworY2xhc3MgVHJhbnNsYXRvckhMU0w7CiAKIC8vCiAvLyBIZWxwZXIgZnVuY3Rpb24gdG8g
aWRlbnRpZnkgc3BlY3MgdGhhdCBhcmUgYmFzZWQgb24gdGhlIFdlYkdMIHNwZWMsCkBAIC00Miw2
ICs0Myw3IEBAIHB1YmxpYzoKICAgICBUU2hIYW5kbGVCYXNlKCk7CiAgICAgdmlydHVhbCB+VFNo
SGFuZGxlQmFzZSgpOwogICAgIHZpcnR1YWwgVENvbXBpbGVyKiBnZXRBc0NvbXBpbGVyKCkgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgVHJhbnNsYXRvckhMU0wqIGdldEFzVHJhbnNsYXRvckhM
U0woKSB7IHJldHVybiAwOyB9CiAKIHByb3RlY3RlZDoKICAgICAvLyBNZW1vcnkgYWxsb2NhdG9y
LiBBbGxvY2F0ZXMgYW5kIHRyYWNrcyBtZW1vcnkgcmVxdWlyZWQgYnkgdGhlIGNvbXBpbGVyLgpA
QCAtODEsOCArODMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBJbml0QnVpbHRJblN5bWJvbFRh
YmxlKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKTsKICAgICAvLyBDbGVhcnMg
dGhlIHJlc3VsdHMgZnJvbSB0aGUgcHJldmlvdXMgY29tcGlsYXRpb24uCiAgICAgdm9pZCBjbGVh
clJlc3VsdHMoKTsKLSAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBmdW5jdGlvbiByZWN1cnNpb24gaXMg
ZGV0ZWN0ZWQuCi0gICAgYm9vbCBkZXRlY3RSZWN1cnNpb24oVEludGVybU5vZGUqIHJvb3QpOwor
ICAgIC8vIFJldHVybiB0cnVlIGlmIGZ1bmN0aW9uIHJlY3Vyc2lvbiBpcyBkZXRlY3RlZCBvciBj
YWxsIGRlcHRoIGV4Y2VlZGVkLgorICAgIGJvb2wgZGV0ZWN0Q2FsbERlcHRoKFRJbnRlcm1Ob2Rl
KiByb290LCBUSW5mb1NpbmsmIGluZm9TaW5rLCBib29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgpOwog
ICAgIC8vIFJld3JpdGVzIGEgc2hhZGVyJ3MgaW50ZXJtZWRpYXRlIHRyZWUgYWNjb3JkaW5nIHRv
IHRoZSBDU1MgU2hhZGVycyBzcGVjLgogICAgIHZvaWQgcmV3cml0ZUNTU1NoYWRlcihUSW50ZXJt
Tm9kZSogcm9vdCk7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBzaGFkZXIgZG9l
cyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtCkBAIC0xMDQsOCArMTA2LDEyIEBAIHByb3RlY3RlZDoK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHNoYWRlciBkb2VzIG5vdCB1c2Ugc2FtcGxlciBk
ZXBlbmRlbnQgdmFsdWVzIHRvIGFmZmVjdCBjb250cm9sIAogICAgIC8vIGZsb3cgb3IgaW4gb3Bl
cmF0aW9ucyB3aG9zZSB0aW1lIGNhbiBkZXBlbmQgb24gdGhlIGlucHV0IHZhbHVlcy4KICAgICBi
b29sIGVuZm9yY2VGcmFnbWVudFNoYWRlclRpbWluZ1Jlc3RyaWN0aW9ucyhjb25zdCBURGVwZW5k
ZW5jeUdyYXBoJiBncmFwaCk7CisgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIG1heGltdW0gZXhw
cmVzc2lvbiBjb21wbGV4aXR5IGJlbG93IHRoZSBsaW1pdC4KKyAgICBib29sIGxpbWl0RXhwcmVz
c2lvbkNvbXBsZXhpdHkoVEludGVybU5vZGUqIHJvb3QpOwogICAgIC8vIEdldCBidWlsdC1pbiBl
eHRlbnNpb25zIHdpdGggZGVmYXVsdCBiZWhhdmlvci4KICAgICBjb25zdCBURXh0ZW5zaW9uQmVo
YXZpb3ImIGdldEV4dGVuc2lvbkJlaGF2aW9yKCkgY29uc3Q7CisgICAgLy8gR2V0IHRoZSByZXNv
dXJjZXMgc2V0IGJ5IEluaXRCdWlsdEluU3ltYm9sVGFibGUKKyAgICBjb25zdCBTaEJ1aWx0SW5S
ZXNvdXJjZXMmIGdldFJlc291cmNlcygpIGNvbnN0OwogCiAgICAgY29uc3QgQXJyYXlCb3VuZHND
bGFtcGVyJiBnZXRBcnJheUJvdW5kc0NsYW1wZXIoKSBjb25zdDsKICAgICBTaEFycmF5SW5kZXhD
bGFtcGluZ1N0cmF0ZWd5IGdldEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5KCkgY29uc3Q7CkBA
IC0xMTYsNiArMTIyLDEwIEBAIHByaXZhdGU6CiAgICAgU2hTaGFkZXJTcGVjIHNoYWRlclNwZWM7
CiAKICAgICBpbnQgbWF4VW5pZm9ybVZlY3RvcnM7CisgICAgaW50IG1heEV4cHJlc3Npb25Db21w
bGV4aXR5OworICAgIGludCBtYXhDYWxsU3RhY2tEZXB0aDsKKworICAgIFNoQnVpbHRJblJlc291
cmNlcyBjb21waWxlUmVzb3VyY2VzOwogCiAgICAgLy8gQnVpbHQtaW4gc3ltYm9sIHRhYmxlIGZv
ciB0aGUgZ2l2ZW4gbGFuZ3VhZ2UsIHNwZWMsIGFuZCByZXNvdXJjZXMuCiAgICAgLy8gSXQgaXMg
cHJlc2VydmVkIGZyb20gY29tcGlsZS10by1jb21waWxlLgpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TaGFkZXJMYW5nLmNwcAkocmV2aXNpb24g
MTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRlckxh
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSAiY29tcGlsZXIv
SW5pdGlhbGl6ZURsbC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9sZW5ndGhf
bGltaXRzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvU2hIYW5kbGUuaCIKKyNpbmNsdWRlICJjb21w
aWxlci9UcmFuc2xhdG9ySExTTC5oIgogCiAvLwogLy8gVGhpcyBpcyB0aGUgcGxhdGZvcm0gaW5k
ZXBlbmRlbnQgaW50ZXJmYWNlIGJldHdlZW4gYW4gT0dMIGRyaXZlcgpAQCAtMTI2LDYgKzEyNyw3
IEBAIHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXMKICAgICByZXNvdXJj
ZXMtPk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgPSAwOwogICAgIHJlc291cmNlcy0+QVJCX3RleHR1
cmVfcmVjdGFuZ2xlID0gMDsKICAgICByZXNvdXJjZXMtPkVYVF9kcmF3X2J1ZmZlcnMgPSAwOwor
ICAgIHJlc291cmNlcy0+RVhUX2ZyYWdfZGVwdGggPSAwOwogCiAgICAgLy8gRGlzYWJsZSBoaWdo
cCBwcmVjaXNpb24gaW4gZnJhZ21lbnQgc2hhZGVyIGJ5IGRlZmF1bHQuCiAgICAgcmVzb3VyY2Vz
LT5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPSAwOwpAQCAtMzUxLDMgKzM1MywyMSBAQCB2b2lkIFNo
R2V0TmFtZUhhc2hpbmdFbnRyeShjb25zdCBTaEhhbmRsCiAgICAgLy8gVG8gYmUgb24gdGhlIHNh
ZmUgc2lkZSBpbiBjYXNlIHRoZSBzb3VyY2UgaXMgbG9uZ2VyIHRoYW4gZXhwZWN0ZWQuCiAgICAg
aGFzaGVkTmFtZVtsZW4gLSAxXSA9ICdcMCc7CiB9CisKK3ZvaWQgU2hHZXRJbmZvUG9pbnRlcihj
b25zdCBTaEhhbmRsZSBoYW5kbGUsIFNoU2hhZGVySW5mbyBwbmFtZSwgdm9pZCoqIHBhcmFtcykK
K3sKKyAgICBpZiAoIWhhbmRsZSB8fCAhcGFyYW1zKQorICAgICAgICByZXR1cm47CisKKyAgICBU
U2hIYW5kbGVCYXNlKiBiYXNlID0gc3RhdGljX2Nhc3Q8VFNoSGFuZGxlQmFzZSo+KGhhbmRsZSk7
CisgICAgVHJhbnNsYXRvckhMU0wqIHRyYW5zbGF0b3IgPSBiYXNlLT5nZXRBc1RyYW5zbGF0b3JI
TFNMKCk7CisgICAgaWYgKCF0cmFuc2xhdG9yKSByZXR1cm47CisKKyAgICBzd2l0Y2gocG5hbWUp
CisgICAgeworICAgIGNhc2UgU0hfQUNUSVZFX1VOSUZPUk1TX0FSUkFZOgorICAgICAgICAqcGFy
YW1zID0gKHZvaWQqKSZ0cmFuc2xhdG9yLT5nZXRVbmlmb3JtcygpOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgIH0KK30KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcAkocmV2
aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5
bWJvbFRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcsNDggKzE3LDM0IEBACiAKICNpbmNs
dWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotI2luY2x1ZGUgImNvbW1vbi9h
bmdsZXV0aWxzLmgiCisjaW5jbHVkZSA8Y2xpbWl0cz4KIAogVFR5cGU6OlRUeXBlKGNvbnN0IFRQ
dWJsaWNUeXBlICZwKSA6Ci0gICAgICAgICAgICB0eXBlKHAudHlwZSksIHByZWNpc2lvbihwLnBy
ZWNpc2lvbiksIHF1YWxpZmllcihwLnF1YWxpZmllciksIHNpemUocC5zaXplKSwgbWF0cml4KHAu
bWF0cml4KSwgYXJyYXkocC5hcnJheSksIGFycmF5U2l6ZShwLmFycmF5U2l6ZSksCi0gICAgICAg
ICAgICBtYXhBcnJheVNpemUoMCksIGFycmF5SW5mb3JtYXRpb25UeXBlKDApLCBzdHJ1Y3R1cmUo
MCksIHN0cnVjdHVyZVNpemUoMCksIGRlZXBlc3RTdHJ1Y3ROZXN0aW5nKDApLCBmaWVsZE5hbWUo
MCksIG1hbmdsZWQoMCksIHR5cGVOYW1lKDApCisgICAgICAgICAgICB0eXBlKHAudHlwZSksIHBy
ZWNpc2lvbihwLnByZWNpc2lvbiksIHF1YWxpZmllcihwLnF1YWxpZmllciksIHNpemUocC5zaXpl
KSwgbWF0cml4KHAubWF0cml4KSwgYXJyYXkocC5hcnJheSksIGFycmF5U2l6ZShwLmFycmF5U2l6
ZSksIHN0cnVjdHVyZSgwKQogewotICAgIGlmIChwLnVzZXJEZWYpIHsKKyAgICBpZiAocC51c2Vy
RGVmKQogICAgICAgICBzdHJ1Y3R1cmUgPSBwLnVzZXJEZWYtPmdldFN0cnVjdCgpOwotICAgICAg
ICB0eXBlTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKHAudXNlckRlZi0+Z2V0VHlwZU5hbWUoKS5jX3N0
cigpKTsKLSAgICAgICAgY29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCk7Ci0gICAgfQogfQog
CiAvLwogLy8gUmVjdXJzaXZlbHkgZ2VuZXJhdGUgbWFuZ2xlZCBuYW1lcy4KIC8vCi12b2lkIFRU
eXBlOjpidWlsZE1hbmdsZWROYW1lKFRTdHJpbmcmIG1hbmdsZWROYW1lKQorVFN0cmluZyBUVHlw
ZTo6YnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0CiB7CisgICAgVFN0cmluZyBtYW5nbGVkTmFtZTsK
ICAgICBpZiAoaXNNYXRyaXgoKSkKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ20nOwogICAgIGVs
c2UgaWYgKGlzVmVjdG9yKCkpCiAgICAgICAgIG1hbmdsZWROYW1lICs9ICd2JzsKIAogICAgIHN3
aXRjaCAodHlwZSkgewotICAgIGNhc2UgRWJ0RmxvYXQ6ICAgICAgICAgICAgICBtYW5nbGVkTmFt
ZSArPSAnZic7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRJbnQ6ICAgICAgICAgICAgICAgIG1h
bmdsZWROYW1lICs9ICdpJzsgICAgICBicmVhazsKLSAgICBjYXNlIEVidEJvb2w6ICAgICAgICAg
ICAgICAgbWFuZ2xlZE5hbWUgKz0gJ2InOyAgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0U2FtcGxl
cjJEOiAgICAgICAgICBtYW5nbGVkTmFtZSArPSAiczIiOyAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
YnRTYW1wbGVyQ3ViZTogICAgICAgIG1hbmdsZWROYW1lICs9ICJzQyI7ICAgICBicmVhazsKLSAg
ICBjYXNlIEVidFN0cnVjdDoKLSAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInN0cnVjdC0iOwotICAg
ICAgICBpZiAodHlwZU5hbWUpCi0gICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAqdHlwZU5hbWU7
Ci0gICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgbWFuZ2xlZE5hbWUgKz0gJy0nOwotICAgICAgICAgICAgICAgICgqc3RydWN0dXJlKVtpXS50
eXBlLT5idWlsZE1hbmdsZWROYW1lKG1hbmdsZWROYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0RmxvYXQ6ICAg
ICAgIG1hbmdsZWROYW1lICs9ICdmJzsgICAgICBicmVhazsKKyAgICBjYXNlIEVidEludDogICAg
ICAgICBtYW5nbGVkTmFtZSArPSAnaSc7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRCb29sOiAg
ICAgICAgbWFuZ2xlZE5hbWUgKz0gJ2InOyAgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0U2FtcGxl
cjJEOiAgIG1hbmdsZWROYW1lICs9ICJzMiI7ICAgICBicmVhazsKKyAgICBjYXNlIEVidFNhbXBs
ZXJDdWJlOiBtYW5nbGVkTmFtZSArPSAic0MiOyAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRTdHJ1
Y3Q6ICAgICAgbWFuZ2xlZE5hbWUgKz0gc3RydWN0dXJlLT5tYW5nbGVkTmFtZSgpOyBicmVhazsK
KyAgICBkZWZhdWx0OiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBtYW5nbGVkTmFt
ZSArPSBzdGF0aWNfY2FzdDxjaGFyPignMCcgKyBnZXROb21pbmFsU2l6ZSgpKTsKQEAgLTY5LDUz
ICs1NSw3MiBAQCB2b2lkIFRUeXBlOjpidWlsZE1hbmdsZWROYW1lKFRTdHJpbmcmIG1hCiAgICAg
ICAgIG1hbmdsZWROYW1lICs9IGJ1ZjsKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ10nOwogICAg
IH0KKyAgICByZXR1cm4gbWFuZ2xlZE5hbWU7CiB9CiAKLWludCBUVHlwZTo6Z2V0U3RydWN0U2l6
ZSgpIGNvbnN0CitzaXplX3QgVFR5cGU6OmdldE9iamVjdFNpemUoKSBjb25zdAogewotICAgIGlm
ICghZ2V0U3RydWN0KCkpIHsKLSAgICAgICAgYXNzZXJ0KGZhbHNlICYmICJOb3QgYSBzdHJ1Y3Qi
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIHNpemVfdCB0b3RhbFNpemUgPSAwOwog
Ci0gICAgaWYgKHN0cnVjdHVyZVNpemUgPT0gMCkKLSAgICAgICAgZm9yIChUVHlwZUxpc3Q6OmNv
bnN0X2l0ZXJhdG9yIHRsID0gZ2V0U3RydWN0KCktPmJlZ2luKCk7IHRsICE9IGdldFN0cnVjdCgp
LT5lbmQoKTsgdGwrKykKLSAgICAgICAgICAgIHN0cnVjdHVyZVNpemUgKz0gKCgqdGwpLnR5cGUp
LT5nZXRPYmplY3RTaXplKCk7CisgICAgaWYgKGdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkK
KyAgICAgICAgdG90YWxTaXplID0gc3RydWN0dXJlLT5vYmplY3RTaXplKCk7CisgICAgZWxzZSBp
ZiAobWF0cml4KQorICAgICAgICB0b3RhbFNpemUgPSBzaXplICogc2l6ZTsKKyAgICBlbHNlCisg
ICAgICAgIHRvdGFsU2l6ZSA9IHNpemU7CisKKyAgICBpZiAoaXNBcnJheSgpKSB7CisgICAgICAg
IHNpemVfdCBhcnJheVNpemUgPSBnZXRBcnJheVNpemUoKTsKKyAgICAgICAgaWYgKGFycmF5U2l6
ZSA+IElOVF9NQVggLyB0b3RhbFNpemUpCisgICAgICAgICAgICB0b3RhbFNpemUgPSBJTlRfTUFY
OworICAgICAgICBlbHNlCisgICAgICAgICAgICB0b3RhbFNpemUgKj0gYXJyYXlTaXplOworICAg
IH0KIAotICAgIHJldHVybiBzdHJ1Y3R1cmVTaXplOworICAgIHJldHVybiB0b3RhbFNpemU7CiB9
CiAKLXZvaWQgVFR5cGU6OmNvbXB1dGVEZWVwZXN0U3RydWN0TmVzdGluZygpCitib29sIFRTdHJ1
Y3R1cmU6OmNvbnRhaW5zQXJyYXlzKCkgY29uc3QKIHsKLSAgICBpZiAoIWdldFN0cnVjdCgpKSB7
Ci0gICAgICAgIHJldHVybjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1GaWVsZHMtPnNp
emUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRUeXBlKiBmaWVsZFR5cGUgPSAoKm1GaWVsZHMp
W2ldLT50eXBlKCk7CisgICAgICAgIGlmIChmaWVsZFR5cGUtPmlzQXJyYXkoKSB8fCBmaWVsZFR5
cGUtPmlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KIAotICAgIGludCBtYXhOZXN0aW5nID0g
MDsKLSAgICBmb3IgKFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgdGwgPSBnZXRTdHJ1Y3QoKS0+
YmVnaW4oKTsgdGwgIT0gZ2V0U3RydWN0KCktPmVuZCgpOyArK3RsKSB7Ci0gICAgICAgIG1heE5l
c3RpbmcgPSBzdGQ6Om1heChtYXhOZXN0aW5nLCAoKCp0bCkudHlwZSktPmdldERlZXBlc3RTdHJ1
Y3ROZXN0aW5nKCkpOworVFN0cmluZyBUU3RydWN0dXJlOjpidWlsZE1hbmdsZWROYW1lKCkgY29u
c3QKK3sKKyAgICBUU3RyaW5nIG1hbmdsZWROYW1lKCJzdHJ1Y3QtIik7CisgICAgbWFuZ2xlZE5h
bWUgKz0gKm1OYW1lOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZpZWxkcy0+c2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJy0nOworICAgICAgICBtYW5nbGVkTmFt
ZSArPSAoKm1GaWVsZHMpW2ldLT50eXBlKCktPmdldE1hbmdsZWROYW1lKCk7CiAgICAgfQotCi0g
ICAgZGVlcGVzdFN0cnVjdE5lc3RpbmcgPSAxICsgbWF4TmVzdGluZzsKKyAgICByZXR1cm4gbWFu
Z2xlZE5hbWU7CiB9CiAKLWJvb2wgVFR5cGU6OmlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygp
IGNvbnN0CitzaXplX3QgVFN0cnVjdHVyZTo6Y2FsY3VsYXRlT2JqZWN0U2l6ZSgpIGNvbnN0CiB7
Ci0gICAgaWYgKCFzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
c2l6ZV90IHNpemUgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZpZWxkcy0+c2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgc2l6ZV90IGZpZWxkU2l6ZSA9ICgqbUZpZWxkcylbaV0tPnR5
cGUoKS0+Z2V0T2JqZWN0U2l6ZSgpOworICAgICAgICBpZiAoZmllbGRTaXplID4gSU5UX01BWCAt
IHNpemUpCisgICAgICAgICAgICBzaXplID0gSU5UX01BWDsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgc2l6ZSArPSBmaWVsZFNpemU7CiAgICAgfQorICAgIHJldHVybiBzaXplOworfQogCi0g
ICAgZm9yIChUVHlwZUxpc3Q6OmNvbnN0X2l0ZXJhdG9yIG1lbWJlciA9IHN0cnVjdHVyZS0+YmVn
aW4oKTsgbWVtYmVyICE9IHN0cnVjdHVyZS0+ZW5kKCk7IG1lbWJlcisrKQotICAgIHsKLSAgICAg
ICAgaWYgKG1lbWJlci0+dHlwZS0+aXNBcnJheSgpIHx8Ci0gICAgICAgICAgICBtZW1iZXItPnR5
cGUtPmlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQoraW50IFRTdHJ1Y3R1cmU6OmNhbGN1bGF0ZURlZXBl
c3ROZXN0aW5nKCkgY29uc3QKK3sKKyAgICBpbnQgbWF4TmVzdGluZyA9IDA7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsraSkgeworICAgICAgICBtYXhOZXN0
aW5nID0gc3RkOjptYXgobWF4TmVzdGluZywgKCptRmllbGRzKVtpXS0+dHlwZSgpLT5nZXREZWVw
ZXN0U3RydWN0TmVzdGluZygpKTsKICAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIDEgKyBtYXhOZXN0aW5nOwogfQogCiAvLwpAQCAtMTk2LDg0ICsyMDEsOCBAQCB2b2lkIFRT
eW1ib2xUYWJsZUxldmVsOjpyZWxhdGVUb09wZXJhdG9yCiB2b2lkIFRTeW1ib2xUYWJsZUxldmVs
OjpyZWxhdGVUb0V4dGVuc2lvbihjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBUU3RyaW5nJiBleHQp
CiB7CiAgICAgZm9yICh0TGV2ZWw6Oml0ZXJhdG9yIGl0ID0gbGV2ZWwuYmVnaW4oKTsgaXQgIT0g
bGV2ZWwuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LT5zZWNvbmQtPmlzRnVuY3Rpb24o
KSkgewotICAgICAgICAgICAgVEZ1bmN0aW9uKiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0PFRGdW5j
dGlvbio+KGl0LT5zZWNvbmQpOwotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nZXROYW1lKCkg
PT0gbmFtZSkKLSAgICAgICAgICAgICAgICBmdW5jdGlvbi0+cmVsYXRlVG9FeHRlbnNpb24oZXh0
KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotVFN5bWJvbDo6VFN5bWJvbChjb25zdCBUU3ltYm9s
JiBjb3B5T2YpCi17Ci0gICAgbmFtZSA9IE5ld1Bvb2xUU3RyaW5nKGNvcHlPZi5uYW1lLT5jX3N0
cigpKTsKLSAgICB1bmlxdWVJZCA9IGNvcHlPZi51bmlxdWVJZDsKLX0KLQotVFZhcmlhYmxlOjpU
VmFyaWFibGUoY29uc3QgVFZhcmlhYmxlJiBjb3B5T2YsIFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVy
KSA6IFRTeW1ib2woY29weU9mKQotewotICAgIHR5cGUuY29weVR5cGUoY29weU9mLnR5cGUsIHJl
bWFwcGVyKTsKLSAgICB1c2VyVHlwZSA9IGNvcHlPZi51c2VyVHlwZTsKLSAgICAvLyBmb3IgYnVp
bHRJbiBzeW1ib2wgdGFibGUgbGV2ZWwsIHVuaW9uQXJyYXkgYW5kIGFycmF5SW5mb3JtYXRpb24g
cG9pbnRlcnMgc2hvdWxkIGJlIE5VTEwKLSAgICBhc3NlcnQoY29weU9mLmFycmF5SW5mb3JtYXRp
b25UeXBlID09IDApOwotICAgIGFycmF5SW5mb3JtYXRpb25UeXBlID0gMDsKLQotICAgIGlmIChj
b3B5T2YudW5pb25BcnJheSkgewotICAgICAgICBhc3NlcnQoIWNvcHlPZi50eXBlLmdldFN0cnVj
dCgpKTsKLSAgICAgICAgYXNzZXJ0KGNvcHlPZi50eXBlLmdldE9iamVjdFNpemUoKSA9PSAxKTsK
LSAgICAgICAgdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwotICAgICAgICB1bmlv
bkFycmF5WzBdID0gY29weU9mLnVuaW9uQXJyYXlbMF07Ci0gICAgfSBlbHNlCi0gICAgICAgIHVu
aW9uQXJyYXkgPSAwOwotfQotCi1UVmFyaWFibGUqIFRWYXJpYWJsZTo6Y2xvbmUoVFN0cnVjdHVy
ZU1hcCYgcmVtYXBwZXIpCi17Ci0gICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFyaWFi
bGUoKnRoaXMsIHJlbWFwcGVyKTsKLQotICAgIHJldHVybiB2YXJpYWJsZTsKLX0KLQotVEZ1bmN0
aW9uOjpURnVuY3Rpb24oY29uc3QgVEZ1bmN0aW9uJiBjb3B5T2YsIFRTdHJ1Y3R1cmVNYXAmIHJl
bWFwcGVyKSA6IFRTeW1ib2woY29weU9mKQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgY29weU9mLnBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgVFBhcmFtZXRl
ciBwYXJhbTsKLSAgICAgICAgcGFyYW1ldGVycy5wdXNoX2JhY2socGFyYW0pOwotICAgICAgICBw
YXJhbWV0ZXJzLmJhY2soKS5jb3B5UGFyYW0oY29weU9mLnBhcmFtZXRlcnNbaV0sIHJlbWFwcGVy
KTsKLSAgICB9Ci0KLSAgICByZXR1cm5UeXBlLmNvcHlUeXBlKGNvcHlPZi5yZXR1cm5UeXBlLCBy
ZW1hcHBlcik7Ci0gICAgbWFuZ2xlZE5hbWUgPSBjb3B5T2YubWFuZ2xlZE5hbWU7Ci0gICAgb3Ag
PSBjb3B5T2Yub3A7Ci0gICAgZGVmaW5lZCA9IGNvcHlPZi5kZWZpbmVkOwotfQotCi1URnVuY3Rp
b24qIFRGdW5jdGlvbjo6Y2xvbmUoVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpCi17Ci0gICAgVEZ1
bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oKnRoaXMsIHJlbWFwcGVyKTsKLQotICAg
IHJldHVybiBmdW5jdGlvbjsKLX0KLQotVFN5bWJvbFRhYmxlTGV2ZWwqIFRTeW1ib2xUYWJsZUxl
dmVsOjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLXsKLSAgICBUU3ltYm9sVGFibGVM
ZXZlbCAqc3ltVGFibGVMZXZlbCA9IG5ldyBUU3ltYm9sVGFibGVMZXZlbCgpOwotICAgIHRMZXZl
bDo6aXRlcmF0b3IgaXRlcjsKLSAgICBmb3IgKGl0ZXIgPSBsZXZlbC5iZWdpbigpOyBpdGVyICE9
IGxldmVsLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgc3ltVGFibGVMZXZlbC0+aW5zZXJ0KCpp
dGVyLT5zZWNvbmQtPmNsb25lKHJlbWFwcGVyKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN5bVRh
YmxlTGV2ZWw7Ci19Ci0KLXZvaWQgVFN5bWJvbFRhYmxlOjpjb3B5VGFibGUoY29uc3QgVFN5bWJv
bFRhYmxlJiBjb3B5T2YpCi17Ci0gICAgVFN0cnVjdHVyZU1hcCByZW1hcHBlcjsKLSAgICB1bmlx
dWVJZCA9IGNvcHlPZi51bmlxdWVJZDsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IGNvcHlPZi50YWJsZS5zaXplKCk7ICsraSkgewotICAgICAgICB0YWJsZS5wdXNoX2JhY2soY29w
eU9mLnRhYmxlW2ldLT5jbG9uZShyZW1hcHBlcikpOwotICAgIH0KLSAgICBmb3IoIHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IGNvcHlPZi5wcmVjaXNpb25TdGFjay5zaXplKCk7IGkrKykgewotICAg
ICAgICBwcmVjaXNpb25TdGFjay5wdXNoX2JhY2soIGNvcHlPZi5wcmVjaXNpb25TdGFja1tpXSAp
OworICAgICAgICBUU3ltYm9sKiBzeW1ib2wgPSBpdC0+c2Vjb25kOworICAgICAgICBpZiAoc3lt
Ym9sLT5nZXROYW1lKCkgPT0gbmFtZSkKKyAgICAgICAgICAgIHN5bWJvbC0+cmVsYXRlVG9FeHRl
bnNpb24oZXh0KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgog
Ly8KQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgPGFzc2VydC5oPgogCisjaW5jbHVkZSAi
Y29tbW9uL2FuZ2xldXRpbHMuaCIKICNpbmNsdWRlICJjb21waWxlci9JbmZvU2luay5oIgogI2lu
Y2x1ZGUgImNvbXBpbGVyL2ludGVybWVkaWF0ZS5oIgogCkBAIC00OSwxMyArNTAsMTYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2b2lkIHNldFVuaXF1ZUlkKGludCBpZCkgeyB1bmlxdWVJZCA9IGlkOyB9CiAgICAg
aW50IGdldFVuaXF1ZUlkKCkgY29uc3QgeyByZXR1cm4gdW5pcXVlSWQ7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZHVtcChUSW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdCA9IDA7CQotICAgIFRTeW1ib2wo
Y29uc3QgVFN5bWJvbCYpOwotICAgIHZpcnR1YWwgVFN5bWJvbCogY2xvbmUoVFN0cnVjdHVyZU1h
cCYgcmVtYXBwZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHVtcChUSW5mb1NpbmsgJmluZm9T
aW5rKSBjb25zdCA9IDA7CisgICAgdm9pZCByZWxhdGVUb0V4dGVuc2lvbihjb25zdCBUU3RyaW5n
JiBleHQpIHsgZXh0ZW5zaW9uID0gZXh0OyB9CisgICAgY29uc3QgVFN0cmluZyYgZ2V0RXh0ZW5z
aW9uKCkgY29uc3QgeyByZXR1cm4gZXh0ZW5zaW9uOyB9CisKK3ByaXZhdGU6CisgICAgRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKFRTeW1ib2wpOwogCi1wcm90ZWN0ZWQ6CiAgICAgY29uc3QgVFN0
cmluZyAqbmFtZTsKICAgICB1bnNpZ25lZCBpbnQgdW5pcXVlSWQ7ICAgICAgLy8gRm9yIHJlYWwg
Y29tcGFyaW5nIGR1cmluZyBjb2RlIGdlbmVyYXRpb24KKyAgICBUU3RyaW5nIGV4dGVuc2lvbjsK
IH07CiAKIC8vCkBAIC03MCwxNSArNzQsMTMgQEAgcHJvdGVjdGVkOgogLy8KIGNsYXNzIFRWYXJp
YWJsZSA6IHB1YmxpYyBUU3ltYm9sIHsKIHB1YmxpYzoKLSAgICBUVmFyaWFibGUoY29uc3QgVFN0
cmluZyAqbmFtZSwgY29uc3QgVFR5cGUmIHQsIGJvb2wgdVQgPSBmYWxzZSApIDogVFN5bWJvbChu
YW1lKSwgdHlwZSh0KSwgdXNlclR5cGUodVQpLCB1bmlvbkFycmF5KDApLCBhcnJheUluZm9ybWF0
aW9uVHlwZSgwKSB7IH0KKyAgICBUVmFyaWFibGUoY29uc3QgVFN0cmluZyAqbmFtZSwgY29uc3Qg
VFR5cGUmIHQsIGJvb2wgdVQgPSBmYWxzZSApIDogVFN5bWJvbChuYW1lKSwgdHlwZSh0KSwgdXNl
clR5cGUodVQpLCB1bmlvbkFycmF5KDApIHsgfQogICAgIHZpcnR1YWwgflRWYXJpYWJsZSgpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfSAg
ICAKICAgICBUVHlwZSYgZ2V0VHlwZSgpIHsgcmV0dXJuIHR5cGU7IH0gICAgCiAgICAgY29uc3Qg
VFR5cGUmIGdldFR5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlOyB9CiAgICAgYm9vbCBpc1VzZXJU
eXBlKCkgY29uc3QgeyByZXR1cm4gdXNlclR5cGU7IH0KICAgICB2b2lkIHNldFF1YWxpZmllcihU
UXVhbGlmaWVyIHF1YWxpZmllcikgeyB0eXBlLnNldFF1YWxpZmllcihxdWFsaWZpZXIpOyB9Ci0g
ICAgdm9pZCB1cGRhdGVBcnJheUluZm9ybWF0aW9uVHlwZShUVHlwZSAqdCkgeyBhcnJheUluZm9y
bWF0aW9uVHlwZSA9IHQ7IH0KLSAgICBUVHlwZSogZ2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKSB7
IHJldHVybiBhcnJheUluZm9ybWF0aW9uVHlwZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGR1bXAo
VEluZm9TaW5rICZpbmZvU2luaykgY29uc3Q7CiAKQEAgLTEwMCwxNiArMTAyLDE1IEBAIHB1Ymxp
YzoKICAgICAgICAgZGVsZXRlW10gdW5pb25BcnJheTsKICAgICAgICAgdW5pb25BcnJheSA9IGNv
bnN0QXJyYXk7ICAKICAgICB9Ci0gICAgVFZhcmlhYmxlKGNvbnN0IFRWYXJpYWJsZSYsIFRTdHJ1
Y3R1cmVNYXAmIHJlbWFwcGVyKTsgLy8gY29weSBjb25zdHJ1Y3RvcgotICAgIHZpcnR1YWwgVFZh
cmlhYmxlKiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcik7CiAKLXByb3RlY3RlZDoKK3By
aXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRWYXJpYWJsZSk7CisKICAgICBU
VHlwZSB0eXBlOwogICAgIGJvb2wgdXNlclR5cGU7CiAgICAgLy8gd2UgYXJlIGFzc3VtaW5nIHRo
YXQgUG9vbCBBbGxvY2F0b3Igd2lsbCBmcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVkIHRvIHVuaW9u
QXJyYXkKICAgICAvLyB3aGVuIHRoaXMgb2JqZWN0IGlzIGRlc3Ryb3llZAogICAgIENvbnN0YW50
VW5pb24gKnVuaW9uQXJyYXk7Ci0gICAgVFR5cGUgKmFycmF5SW5mb3JtYXRpb25UeXBlOyAgLy8g
dGhpcyBpcyB1c2VkIGZvciB1cGRhdGluZyBtYXhBcnJheVNpemUgaW4gYWxsIHRoZSByZWZlcmVu
Y2VzIHRvIGEgZ2l2ZW4gc3ltYm9sCiB9OwogCiAvLwpAQCAtMTE5LDExICsxMjAsNiBAQCBwcm90
ZWN0ZWQ6CiBzdHJ1Y3QgVFBhcmFtZXRlciB7CiAgICAgVFN0cmluZyAqbmFtZTsKICAgICBUVHlw
ZSogdHlwZTsKLSAgICB2b2lkIGNvcHlQYXJhbShjb25zdCBUUGFyYW1ldGVyJiBwYXJhbSwgVFN0
cnVjdHVyZU1hcCYgcmVtYXBwZXIpCi0gICAgewotICAgICAgICBuYW1lID0gTmV3UG9vbFRTdHJp
bmcocGFyYW0ubmFtZS0+Y19zdHIoKSk7Ci0gICAgICAgIHR5cGUgPSBwYXJhbS50eXBlLT5jbG9u
ZShyZW1hcHBlcik7Ci0gICAgfQogfTsKIAogLy8KQEAgLTE2Myw5ICsxNTksNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWxhdGVUb09wZXJhdG9yKFRPcGVyYXRvciBvKSB7IG9wID0gbzsgfQogICAg
IFRPcGVyYXRvciBnZXRCdWlsdEluT3AoKSBjb25zdCB7IHJldHVybiBvcDsgfQogCi0gICAgdm9p
ZCByZWxhdGVUb0V4dGVuc2lvbihjb25zdCBUU3RyaW5nJiBleHQpIHsgZXh0ZW5zaW9uID0gZXh0
OyB9Ci0gICAgY29uc3QgVFN0cmluZyYgZ2V0RXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gZXh0
ZW5zaW9uOyB9Ci0KICAgICB2b2lkIHNldERlZmluZWQoKSB7IGRlZmluZWQgPSB0cnVlOyB9CiAg
ICAgYm9vbCBpc0RlZmluZWQoKSB7IHJldHVybiBkZWZpbmVkOyB9CiAKQEAgLTE3MywxNiArMTY2
LDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBUUGFyYW1ldGVyJiBnZXRQYXJhbShzaXplX3QgaSkg
Y29uc3QgeyByZXR1cm4gcGFyYW1ldGVyc1tpXTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGR1bXAo
VEluZm9TaW5rICZpbmZvU2luaykgY29uc3Q7Ci0gICAgVEZ1bmN0aW9uKGNvbnN0IFRGdW5jdGlv
biYsIFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKLSAgICB2aXJ0dWFsIFRGdW5jdGlvbiogY2xv
bmUoVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpOwogCi1wcm90ZWN0ZWQ6Citwcml2YXRlOgorICAg
IERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihURnVuY3Rpb24pOworCiAgICAgdHlwZWRlZiBUVmVj
dG9yPFRQYXJhbWV0ZXI+IFRQYXJhbUxpc3Q7CiAgICAgVFBhcmFtTGlzdCBwYXJhbWV0ZXJzOwog
ICAgIFRUeXBlIHJldHVyblR5cGU7CiAgICAgVFN0cmluZyBtYW5nbGVkTmFtZTsKICAgICBUT3Bl
cmF0b3Igb3A7Ci0gICAgVFN0cmluZyBleHRlbnNpb247CiAgICAgYm9vbCBkZWZpbmVkOwogfTsK
IApAQCAtMTk4LDE3ICsxOTAsMjIgQEAgcHVibGljOgogICAgIFRTeW1ib2xUYWJsZUxldmVsKCkg
eyB9CiAgICAgflRTeW1ib2xUYWJsZUxldmVsKCk7CiAKLSAgICBib29sIGluc2VydChUU3ltYm9s
JiBzeW1ib2wpIAorICAgIGJvb2wgaW5zZXJ0KGNvbnN0IFRTdHJpbmcgJm5hbWUsIFRTeW1ib2wg
JnN5bWJvbCkKICAgICB7CiAgICAgICAgIC8vCiAgICAgICAgIC8vIHJldHVybmluZyB0cnVlIG1l
YW5zIHN5bWJvbCB3YXMgYWRkZWQgdG8gdGhlIHRhYmxlCiAgICAgICAgIC8vCiAgICAgICAgIHRJ
bnNlcnRSZXN1bHQgcmVzdWx0OwotICAgICAgICByZXN1bHQgPSBsZXZlbC5pbnNlcnQodExldmVs
UGFpcihzeW1ib2wuZ2V0TWFuZ2xlZE5hbWUoKSwgJnN5bWJvbCkpOworICAgICAgICByZXN1bHQg
PSBsZXZlbC5pbnNlcnQodExldmVsUGFpcihuYW1lLCAmc3ltYm9sKSk7CiAKICAgICAgICAgcmV0
dXJuIHJlc3VsdC5zZWNvbmQ7CiAgICAgfQogCisgICAgYm9vbCBpbnNlcnQoVFN5bWJvbCAmc3lt
Ym9sKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydChzeW1ib2wuZ2V0TWFuZ2xlZE5hbWUo
KSwgc3ltYm9sKTsKKyAgICB9CisKICAgICBUU3ltYm9sKiBmaW5kKGNvbnN0IFRTdHJpbmcmIG5h
bWUpIGNvbnN0CiAgICAgewogICAgICAgICB0TGV2ZWw6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGV2
ZWwuZmluZChuYW1lKTsKQEAgLTIzMSw3ICsyMjgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxh
dGVUb09wZXJhdG9yKGNvbnN0IGNoYXIqIG5hbWUsIFRPcGVyYXRvciBvcCk7CiAgICAgdm9pZCBy
ZWxhdGVUb0V4dGVuc2lvbihjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBUU3RyaW5nJiBleHQpOwog
ICAgIHZvaWQgZHVtcChUSW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKLSAgICBUU3ltYm9sVGFi
bGVMZXZlbCogY2xvbmUoVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdExldmVsIGxldmVsOwpAQCAtMjgyLDYgKzI3OCwzNSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiB0YWJsZVtjdXJyZW50TGV2ZWwoKV0tPmluc2VydChzeW1ib2wpOwogICAgIH0KIAorICAg
IGJvb2wgaW5zZXJ0Q29uc3RJbnQoY29uc3QgY2hhciAqbmFtZSwgaW50IHZhbHVlKQorICAgIHsK
KyAgICAgICAgVFZhcmlhYmxlICpjb25zdGFudCA9IG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJp
bmcobmFtZSksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCwgMSkpOworICAg
ICAgICBjb25zdGFudC0+Z2V0Q29uc3RQb2ludGVyKCktPnNldElDb25zdCh2YWx1ZSk7CisgICAg
ICAgIHJldHVybiBpbnNlcnQoKmNvbnN0YW50KTsKKyAgICB9CisKKyAgICBib29sIGluc2VydEJ1
aWx0SW4oVFR5cGUgKnJ2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSwgVFR5cGUgKnB0eXBlMSwgVFR5
cGUgKnB0eXBlMiA9IDAsIFRUeXBlICpwdHlwZTMgPSAwKQorICAgIHsKKyAgICAgICAgVEZ1bmN0
aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oTmV3UG9vbFRTdHJpbmcobmFtZSksICpydmFs
dWUpOworCisgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0xID0ge05VTEwsIHB0eXBlMX07CisgICAg
ICAgIGZ1bmN0aW9uLT5hZGRQYXJhbWV0ZXIocGFyYW0xKTsKKworICAgICAgICBpZihwdHlwZTIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0yID0ge05VTEwsIHB0eXBl
Mn07CisgICAgICAgICAgICBmdW5jdGlvbi0+YWRkUGFyYW1ldGVyKHBhcmFtMik7CisgICAgICAg
IH0KKworICAgICAgICBpZihwdHlwZTMpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRQYXJhbWV0
ZXIgcGFyYW0zID0ge05VTEwsIHB0eXBlM307CisgICAgICAgICAgICBmdW5jdGlvbi0+YWRkUGFy
YW1ldGVyKHBhcmFtMyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaW5zZXJ0KCpmdW5j
dGlvbik7CisgICAgfQorCiAgICAgVFN5bWJvbCogZmluZChjb25zdCBUU3RyaW5nJiBuYW1lLCBi
b29sKiBidWlsdEluID0gMCwgYm9vbCAqc2FtZVNjb3BlID0gMCkgCiAgICAgewogICAgICAgICBp
bnQgbGV2ZWwgPSBjdXJyZW50TGV2ZWwoKTsKQEAgLTMyMSw3ICszNDYsNiBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIGludCBnZXRNYXhTeW1ib2xJZCgpIHsgcmV0dXJuIHVuaXF1ZUlkOyB9CiAgICAg
dm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0OwotICAgIHZvaWQgY29weVRhYmxl
KGNvbnN0IFRTeW1ib2xUYWJsZSYgY29weU9mKTsKIAogICAgIGJvb2wgc2V0RGVmYXVsdFByZWNp
c2lvbiggY29uc3QgVFB1YmxpY1R5cGUmIHR5cGUsIFRQcmVjaXNpb24gcHJlYyApewogICAgICAg
ICBpZiAoSXNTYW1wbGVyKHR5cGUudHlwZSkpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xhdG9ySExTTC5jcHAJKHJldmlzaW9u
IDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xh
dG9ySExTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTksMTUgKzksMTYgQEAKICNpbmNsdWRlICJjb21w
aWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvT3V0cHV0
SExTTC5oIgogCi1UcmFuc2xhdG9ySExTTDo6VHJhbnNsYXRvckhMU0woU2hTaGFkZXJUeXBlIHR5
cGUsIFNoU2hhZGVyU3BlYyBzcGVjKQotICAgIDogVENvbXBpbGVyKHR5cGUsIHNwZWMpCitUcmFu
c2xhdG9ySExTTDo6VHJhbnNsYXRvckhMU0woU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3Bl
YyBzcGVjLCBTaFNoYWRlck91dHB1dCBvdXRwdXQpCisgICAgOiBUQ29tcGlsZXIodHlwZSwgc3Bl
YyksIG1PdXRwdXRUeXBlKG91dHB1dCkKIHsKIH0KIAogdm9pZCBUcmFuc2xhdG9ySExTTDo6dHJh
bnNsYXRlKFRJbnRlcm1Ob2RlICpyb290KQogewogICAgIFRQYXJzZUNvbnRleHQmIHBhcnNlQ29u
dGV4dCA9ICpHZXRHbG9iYWxQYXJzZUNvbnRleHQoKTsKLSAgICBzaDo6T3V0cHV0SExTTCBvdXRw
dXRITFNMKHBhcnNlQ29udGV4dCk7CisgICAgc2g6Ok91dHB1dEhMU0wgb3V0cHV0SExTTChwYXJz
ZUNvbnRleHQsIGdldFJlc291cmNlcygpLCBtT3V0cHV0VHlwZSk7CiAKICAgICBvdXRwdXRITFNM
Lm91dHB1dCgpOworICAgIG1BY3RpdmVVbmlmb3JtcyA9IG91dHB1dEhMU0wuZ2V0VW5pZm9ybXMo
KTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xh
dG9ySExTTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9UcmFuc2xhdG9ySExTTC5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAy
MDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
IC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAt
OCwxMyArOCwyMCBAQAogI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SSExTTF9IXwogCiAjaW5j
bHVkZSAiY29tcGlsZXIvU2hIYW5kbGUuaCIKKyNpbmNsdWRlICJjb21waWxlci9Vbmlmb3JtLmgi
CiAKIGNsYXNzIFRyYW5zbGF0b3JITFNMIDogcHVibGljIFRDb21waWxlciB7CiBwdWJsaWM6Ci0g
ICAgVHJhbnNsYXRvckhMU0woU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjKTsK
KyAgICBUcmFuc2xhdG9ySExTTChTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMs
IFNoU2hhZGVyT3V0cHV0IG91dHB1dCk7CisKKyAgICB2aXJ0dWFsIFRyYW5zbGF0b3JITFNMICpn
ZXRBc1RyYW5zbGF0b3JITFNMKCkgeyByZXR1cm4gdGhpczsgfQorICAgIGNvbnN0IHNoOjpBY3Rp
dmVVbmlmb3JtcyAmZ2V0VW5pZm9ybXMoKSB7IHJldHVybiBtQWN0aXZlVW5pZm9ybXM7IH0KIAog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2xhdGUoVEludGVybU5vZGUqIHJvb3Qp
OworCisgICAgc2g6OkFjdGl2ZVVuaWZvcm1zIG1BY3RpdmVVbmlmb3JtczsKKyAgICBTaFNoYWRl
ck91dHB1dCBtT3V0cHV0VHlwZTsKIH07CiAKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRP
UkhMU0xfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UeXBl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9U
eXBlcy5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNywzMCArNyw4NSBAQAogI2lmbmRl
ZiBfVFlQRVNfSU5DTFVERUQKICNkZWZpbmUgX1RZUEVTX0lOQ0xVREVECiAKKyNpbmNsdWRlICJj
b21tb24vYW5nbGV1dGlscy5oIgorCiAjaW5jbHVkZSAiY29tcGlsZXIvQmFzZVR5cGVzLmgiCiAj
aW5jbHVkZSAiY29tcGlsZXIvQ29tbW9uLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvZGVidWcuaCIK
IAotY2xhc3MgVFR5cGU7CiBzdHJ1Y3QgVFB1YmxpY1R5cGU7CitjbGFzcyBUVHlwZTsKIAotLy8K
LS8vIE5lZWQgdG8gaGF2ZSBhc3NvY2lhdGlvbiBvZiBsaW5lIG51bWJlcnMgdG8gdHlwZXMgaW4g
YSBsaXN0IGZvciBidWlsZGluZyBzdHJ1Y3RzLgotLy8KLXN0cnVjdCBUVHlwZUxpbmUgewotICAg
IFRUeXBlKiB0eXBlOwotICAgIGludCBsaW5lOworY2xhc3MgVEZpZWxkCit7CitwdWJsaWM6Cisg
ICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9iYWxQb29sQWxsb2NhdG9yKTsKKyAgICBU
RmllbGQoVFR5cGUqIHR5cGUsIFRTdHJpbmcqIG5hbWUpIDogbVR5cGUodHlwZSksIG1OYW1lKG5h
bWUpIHt9CisKKyAgICAvLyBUT0RPKGFsb2twKTogV2Ugc2hvdWxkIG9ubHkgcmV0dXJuIGNvbnN0
IHR5cGUuCisgICAgLy8gRml4IGl0IGJ5IHR3ZWFraW5nIGdyYW1tYXIuCisgICAgVFR5cGUqIHR5
cGUoKSB7IHJldHVybiBtVHlwZTsgfQorICAgIGNvbnN0IFRUeXBlKiB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbVR5cGU7IH0KKworICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVy
biAqbU5hbWU7IH0KKworcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVEZp
ZWxkKTsKKyAgICBUVHlwZSogbVR5cGU7CisgICAgVFN0cmluZyogbU5hbWU7CiB9OwotdHlwZWRl
ZiBUVmVjdG9yPFRUeXBlTGluZT4gVFR5cGVMaXN0OwogCi1pbmxpbmUgVFR5cGVMaXN0KiBOZXdQ
b29sVFR5cGVMaXN0KCkKK3R5cGVkZWYgVFZlY3RvcjxURmllbGQqPiBURmllbGRMaXN0OworaW5s
aW5lIFRGaWVsZExpc3QqIE5ld1Bvb2xURmllbGRMaXN0KCkKIHsKLSAgICB2b2lkKiBtZW1vcnkg
PSBHbG9iYWxQb29sQWxsb2NhdG9yLmFsbG9jYXRlKHNpemVvZihUVHlwZUxpc3QpKTsKLSAgICBy
ZXR1cm4gbmV3KG1lbW9yeSkgVFR5cGVMaXN0OworICAgIHZvaWQqIG1lbW9yeSA9IEdsb2JhbFBv
b2xBbGxvY2F0b3IuYWxsb2NhdGUoc2l6ZW9mKFRGaWVsZExpc3QpKTsKKyAgICByZXR1cm4gbmV3
KG1lbW9yeSkgVEZpZWxkTGlzdDsKIH0KIAotdHlwZWRlZiBUTWFwPFRUeXBlTGlzdCosIFRUeXBl
TGlzdCo+IFRTdHJ1Y3R1cmVNYXA7Ci10eXBlZGVmIFRNYXA8VFR5cGVMaXN0KiwgVFR5cGVMaXN0
Kj46Oml0ZXJhdG9yIFRTdHJ1Y3R1cmVNYXBJdGVyYXRvcjsKK2NsYXNzIFRTdHJ1Y3R1cmUKK3sK
K3B1YmxpYzoKKyAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0
b3IpOworICAgIFRTdHJ1Y3R1cmUoVFN0cmluZyogbmFtZSwgVEZpZWxkTGlzdCogZmllbGRzKQor
ICAgICAgICA6IG1OYW1lKG5hbWUpLAorICAgICAgICAgIG1GaWVsZHMoZmllbGRzKSwKKyAgICAg
ICAgICBtT2JqZWN0U2l6ZSgwKSwKKyAgICAgICAgICBtRGVlcGVzdE5lc3RpbmcoMCkgeworICAg
IH0KKworICAgIGNvbnN0IFRTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiAqbU5hbWU7IH0K
KyAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMoKSBjb25zdCB7IHJldHVybiAqbUZpZWxkczsg
fQorCisgICAgY29uc3QgVFN0cmluZyYgbWFuZ2xlZE5hbWUoKSBjb25zdCB7CisgICAgICAgIGlm
IChtTWFuZ2xlZE5hbWUuZW1wdHkoKSkKKyAgICAgICAgICAgIG1NYW5nbGVkTmFtZSA9IGJ1aWxk
TWFuZ2xlZE5hbWUoKTsKKyAgICAgICAgcmV0dXJuIG1NYW5nbGVkTmFtZTsKKyAgICB9CisgICAg
c2l6ZV90IG9iamVjdFNpemUoKSBjb25zdCB7CisgICAgICAgIGlmIChtT2JqZWN0U2l6ZSA9PSAw
KQorICAgICAgICAgICAgbU9iamVjdFNpemUgPSBjYWxjdWxhdGVPYmplY3RTaXplKCk7CisgICAg
ICAgIHJldHVybiBtT2JqZWN0U2l6ZTsKKyAgICB9OworICAgIGludCBkZWVwZXN0TmVzdGluZygp
IGNvbnN0IHsKKyAgICAgICAgaWYgKG1EZWVwZXN0TmVzdGluZyA9PSAwKQorICAgICAgICAgICAg
bURlZXBlc3ROZXN0aW5nID0gY2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKTsKKyAgICAgICAgcmV0
dXJuIG1EZWVwZXN0TmVzdGluZzsKKyAgICB9CisgICAgYm9vbCBjb250YWluc0FycmF5cygpIGNv
bnN0OworCitwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUU3RydWN0dXJl
KTsKKyAgICBUU3RyaW5nIGJ1aWxkTWFuZ2xlZE5hbWUoKSBjb25zdDsKKyAgICBzaXplX3QgY2Fs
Y3VsYXRlT2JqZWN0U2l6ZSgpIGNvbnN0OworICAgIGludCBjYWxjdWxhdGVEZWVwZXN0TmVzdGlu
ZygpIGNvbnN0OworCisgICAgVFN0cmluZyogbU5hbWU7CisgICAgVEZpZWxkTGlzdCogbUZpZWxk
czsKKworICAgIG11dGFibGUgVFN0cmluZyBtTWFuZ2xlZE5hbWU7CisgICAgbXV0YWJsZSBzaXpl
X3QgbU9iamVjdFNpemU7CisgICAgbXV0YWJsZSBpbnQgbURlZXBlc3ROZXN0aW5nOworfTsKIAog
Ly8KIC8vIEJhc2UgY2xhc3MgZm9yIHRoaW5ncyB0aGF0IGhhdmUgYSB0eXBlLgpAQCAtNDEsNjkg
Kzk2LDEzIEBAIHB1YmxpYzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBv
b2xBbGxvY2F0b3IpCiAgICAgVFR5cGUoKSB7fQogICAgIFRUeXBlKFRCYXNpY1R5cGUgdCwgVFBy
ZWNpc2lvbiBwLCBUUXVhbGlmaWVyIHEgPSBFdnFUZW1wb3JhcnksIGludCBzID0gMSwgYm9vbCBt
ID0gZmFsc2UsIGJvb2wgYSA9IGZhbHNlKSA6Ci0gICAgICAgICAgICB0eXBlKHQpLCBwcmVjaXNp
b24ocCksIHF1YWxpZmllcihxKSwgc2l6ZShzKSwgbWF0cml4KG0pLCBhcnJheShhKSwgYXJyYXlT
aXplKDApLAotICAgICAgICAgICAgbWF4QXJyYXlTaXplKDApLCBhcnJheUluZm9ybWF0aW9uVHlw
ZSgwKSwgc3RydWN0dXJlKDApLCBzdHJ1Y3R1cmVTaXplKDApLCBkZWVwZXN0U3RydWN0TmVzdGlu
ZygwKSwgZmllbGROYW1lKDApLCBtYW5nbGVkKDApLCB0eXBlTmFtZSgwKQorICAgICAgICAgICAg
dHlwZSh0KSwgcHJlY2lzaW9uKHApLCBxdWFsaWZpZXIocSksIHNpemUocyksIG1hdHJpeChtKSwg
YXJyYXkoYSksIGFycmF5U2l6ZSgwKSwgc3RydWN0dXJlKDApCiAgICAgewogICAgIH0KICAgICBl
eHBsaWNpdCBUVHlwZShjb25zdCBUUHVibGljVHlwZSAmcCk7Ci0gICAgVFR5cGUoVFR5cGVMaXN0
KiB1c2VyRGVmLCBjb25zdCBUU3RyaW5nJiBuLCBUUHJlY2lzaW9uIHAgPSBFYnBVbmRlZmluZWQp
IDoKLSAgICAgICAgICAgIHR5cGUoRWJ0U3RydWN0KSwgcHJlY2lzaW9uKHApLCBxdWFsaWZpZXIo
RXZxVGVtcG9yYXJ5KSwgc2l6ZSgxKSwgbWF0cml4KGZhbHNlKSwgYXJyYXkoZmFsc2UpLCBhcnJh
eVNpemUoMCksCi0gICAgICAgICAgICBtYXhBcnJheVNpemUoMCksIGFycmF5SW5mb3JtYXRpb25U
eXBlKDApLCBzdHJ1Y3R1cmUodXNlckRlZiksIHN0cnVjdHVyZVNpemUoMCksIGRlZXBlc3RTdHJ1
Y3ROZXN0aW5nKDApLCBmaWVsZE5hbWUoMCksIG1hbmdsZWQoMCkKKyAgICBUVHlwZShUU3RydWN0
dXJlKiB1c2VyRGVmLCBUUHJlY2lzaW9uIHAgPSBFYnBVbmRlZmluZWQpIDoKKyAgICAgICAgICAg
IHR5cGUoRWJ0U3RydWN0KSwgcHJlY2lzaW9uKHApLCBxdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KSwg
c2l6ZSgxKSwgbWF0cml4KGZhbHNlKSwgYXJyYXkoZmFsc2UpLCBhcnJheVNpemUoMCksIHN0cnVj
dHVyZSh1c2VyRGVmKQogICAgIHsKLSAgICAgICAgdHlwZU5hbWUgPSBOZXdQb29sVFN0cmluZyhu
LmNfc3RyKCkpOwotICAgIH0KLQotICAgIHZvaWQgY29weVR5cGUoY29uc3QgVFR5cGUmIGNvcHlP
ZiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpCi0gICAgewotICAgICAgICB0eXBlID0gY29weU9m
LnR5cGU7Ci0gICAgICAgIHByZWNpc2lvbiA9IGNvcHlPZi5wcmVjaXNpb247Ci0gICAgICAgIHF1
YWxpZmllciA9IGNvcHlPZi5xdWFsaWZpZXI7Ci0gICAgICAgIHNpemUgPSBjb3B5T2Yuc2l6ZTsK
LSAgICAgICAgbWF0cml4ID0gY29weU9mLm1hdHJpeDsKLSAgICAgICAgYXJyYXkgPSBjb3B5T2Yu
YXJyYXk7Ci0gICAgICAgIGFycmF5U2l6ZSA9IGNvcHlPZi5hcnJheVNpemU7Ci0KLSAgICAgICAg
VFN0cnVjdHVyZU1hcEl0ZXJhdG9yIGl0ZXI7Ci0gICAgICAgIGlmIChjb3B5T2Yuc3RydWN0dXJl
KSB7Ci0gICAgICAgICAgICBpZiAoKGl0ZXIgPSByZW1hcHBlci5maW5kKHN0cnVjdHVyZSkpID09
IHJlbWFwcGVyLmVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gY3JlYXRlIHRoZSBuZXcgc3Ry
dWN0dXJlIGhlcmUKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBOZXdQb29sVFR5cGVMaXN0
KCk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3B5T2Yu
c3RydWN0dXJlLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBUVHlwZUxpbmUg
dHlwZUxpbmU7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVMaW5lLmxpbmUgPSAoKmNvcHlPZi5z
dHJ1Y3R1cmUpW2ldLmxpbmU7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVMaW5lLnR5cGUgPSAo
KmNvcHlPZi5zdHJ1Y3R1cmUpW2ldLnR5cGUtPmNsb25lKHJlbWFwcGVyKTsKLSAgICAgICAgICAg
ICAgICAgICAgc3RydWN0dXJlLT5wdXNoX2JhY2sodHlwZUxpbmUpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3RydWN0dXJlID0gaXRl
ci0+c2Vjb25kOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN0
cnVjdHVyZSA9IDA7Ci0KLSAgICAgICAgZmllbGROYW1lID0gMDsKLSAgICAgICAgaWYgKGNvcHlP
Zi5maWVsZE5hbWUpCi0gICAgICAgICAgICBmaWVsZE5hbWUgPSBOZXdQb29sVFN0cmluZyhjb3B5
T2YuZmllbGROYW1lLT5jX3N0cigpKTsKLSAgICAgICAgdHlwZU5hbWUgPSAwOwotICAgICAgICBp
ZiAoY29weU9mLnR5cGVOYW1lKQotICAgICAgICAgICAgdHlwZU5hbWUgPSBOZXdQb29sVFN0cmlu
Zyhjb3B5T2YudHlwZU5hbWUtPmNfc3RyKCkpOwotCi0gICAgICAgIG1hbmdsZWQgPSAwOwotICAg
ICAgICBpZiAoY29weU9mLm1hbmdsZWQpCi0gICAgICAgICAgICBtYW5nbGVkID0gTmV3UG9vbFRT
dHJpbmcoY29weU9mLm1hbmdsZWQtPmNfc3RyKCkpOwotCi0gICAgICAgIHN0cnVjdHVyZVNpemUg
PSBjb3B5T2Yuc3RydWN0dXJlU2l6ZTsKLSAgICAgICAgbWF4QXJyYXlTaXplID0gY29weU9mLm1h
eEFycmF5U2l6ZTsKLSAgICAgICAgZGVlcGVzdFN0cnVjdE5lc3RpbmcgPSBjb3B5T2YuZGVlcGVz
dFN0cnVjdE5lc3Rpbmc7Ci0gICAgICAgIGFzc2VydChjb3B5T2YuYXJyYXlJbmZvcm1hdGlvblR5
cGUgPT0gMCk7Ci0gICAgICAgIGFycmF5SW5mb3JtYXRpb25UeXBlID0gMDsgLy8gYXJyYXlJbmZv
cm1hdGlvblR5cGUgc2hvdWxkIG5vdCBiZSBzZXQgZm9yIGJ1aWx0SW4gc3ltYm9sIHRhYmxlIGxl
dmVsCi0gICAgfQotCi0gICAgVFR5cGUqIGNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQot
ICAgIHsKLSAgICAgICAgVFR5cGUgKm5ld1R5cGUgPSBuZXcgVFR5cGUoKTsKLSAgICAgICAgbmV3
VHlwZS0+Y29weVR5cGUoKnRoaXMsIHJlbWFwcGVyKTsKLQotICAgICAgICByZXR1cm4gbmV3VHlw
ZTsKICAgICB9CiAKICAgICBUQmFzaWNUeXBlIGdldEJhc2ljVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHR5cGU7IH0KQEAgLTExOSwyMSArMTE4LDQyIEBAIHB1YmxpYzoKICAgICBpbnQgZ2V0Tm9taW5h
bFNpemUoKSBjb25zdCB7IHJldHVybiBzaXplOyB9CiAgICAgdm9pZCBzZXROb21pbmFsU2l6ZShp
bnQgcykgeyBzaXplID0gczsgfQogICAgIC8vIEZ1bGwgc2l6ZSBvZiBzaW5nbGUgaW5zdGFuY2Ug
b2YgdHlwZQotICAgIGludCBnZXRPYmplY3RTaXplKCkgY29uc3QKKyAgICBzaXplX3QgZ2V0T2Jq
ZWN0U2l6ZSgpIGNvbnN0OworCisgICAgaW50IGVsZW1lbnRSZWdpc3RlckNvdW50KCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIGludCB0b3RhbFNpemU7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IGdldFN0cnVj
dCgpLT5maWVsZHMoKTsKKyAgICAgICAgICAgIGludCByZWdpc3RlckNvdW50ID0gMDsKIAotICAg
ICAgICBpZiAoZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQotICAgICAgICAgICAgdG90YWxT
aXplID0gZ2V0U3RydWN0U2l6ZSgpOwotICAgICAgICBlbHNlIGlmIChtYXRyaXgpCi0gICAgICAg
ICAgICB0b3RhbFNpemUgPSBzaXplICogc2l6ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
dG90YWxTaXplID0gc2l6ZTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmll
bGRzLnNpemUoKTsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlZ2lzdGVy
Q291bnQgKz0gZmllbGRzW2ldLT50eXBlKCktPnRvdGFsUmVnaXN0ZXJDb3VudCgpOworICAgICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChpc0FycmF5KCkpCi0gICAgICAgICAgICB0b3RhbFNpemUg
Kj0gc3RkOjptYXgoZ2V0QXJyYXlTaXplKCksIGdldE1heEFycmF5U2l6ZSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiByZWdpc3RlckNvdW50OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGlz
TWF0cml4KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnZXROb21pbmFsU2l6ZSgp
OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IDE7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKKyAgICBp
bnQgdG90YWxSZWdpc3RlckNvdW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChhcnJheSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFycmF5U2l6ZSAqIGVsZW1lbnRSZWdpc3Rl
ckNvdW50KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZWxlbWVudFJlZ2lzdGVyQ291bnQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IGJvb2wgaXNNYXRyaXgoKSBjb25zdCB7IHJldHVybiBtYXRyaXggPyB0cnVlIDogZmFsc2U7IH0K
QEAgLTE0Miw0NyArMTYyLDIwIEBAIHB1YmxpYzoKICAgICBib29sIGlzQXJyYXkoKSBjb25zdCAg
eyByZXR1cm4gYXJyYXkgPyB0cnVlIDogZmFsc2U7IH0KICAgICBpbnQgZ2V0QXJyYXlTaXplKCkg
Y29uc3QgeyByZXR1cm4gYXJyYXlTaXplOyB9CiAgICAgdm9pZCBzZXRBcnJheVNpemUoaW50IHMp
IHsgYXJyYXkgPSB0cnVlOyBhcnJheVNpemUgPSBzOyB9Ci0gICAgaW50IGdldE1heEFycmF5U2l6
ZSAoKSBjb25zdCB7IHJldHVybiBtYXhBcnJheVNpemU7IH0KLSAgICB2b2lkIHNldE1heEFycmF5
U2l6ZSAoaW50IHMpIHsgbWF4QXJyYXlTaXplID0gczsgfQotICAgIHZvaWQgY2xlYXJBcnJheW5l
c3MoKSB7IGFycmF5ID0gZmFsc2U7IGFycmF5U2l6ZSA9IDA7IG1heEFycmF5U2l6ZSA9IDA7IH0K
LSAgICB2b2lkIHNldEFycmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlKiB0KSB7IGFycmF5SW5mb3Jt
YXRpb25UeXBlID0gdDsgfQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGFycmF5SW5mb3JtYXRpb25UeXBlOyB9CisgICAgdm9pZCBjbGVhckFycmF5
bmVzcygpIHsgYXJyYXkgPSBmYWxzZTsgYXJyYXlTaXplID0gMDsgfQogCiAgICAgYm9vbCBpc1Zl
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIHNpemUgPiAxICYmICFtYXRyaXg7IH0KICAgICBib29sIGlz
U2NhbGFyKCkgY29uc3QgeyByZXR1cm4gc2l6ZSA9PSAxICYmICFtYXRyaXggJiYgIXN0cnVjdHVy
ZTsgfQogCi0gICAgVFR5cGVMaXN0KiBnZXRTdHJ1Y3QoKSBjb25zdCB7IHJldHVybiBzdHJ1Y3R1
cmU7IH0KLSAgICB2b2lkIHNldFN0cnVjdChUVHlwZUxpc3QqIHMpIHsgc3RydWN0dXJlID0gczsg
Y29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCk7IH0KKyAgICBUU3RydWN0dXJlKiBnZXRTdHJ1
Y3QoKSBjb25zdCB7IHJldHVybiBzdHJ1Y3R1cmU7IH0KKyAgICB2b2lkIHNldFN0cnVjdChUU3Ry
dWN0dXJlKiBzKSB7IHN0cnVjdHVyZSA9IHM7IH0KIAotICAgIGNvbnN0IFRTdHJpbmcmIGdldFR5
cGVOYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGFzc2VydCh0eXBlTmFtZSk7Ci0gICAgICAg
IHJldHVybiAqdHlwZU5hbWU7Ci0gICAgfQotICAgIHZvaWQgc2V0VHlwZU5hbWUoY29uc3QgVFN0
cmluZyYgbikKLSAgICB7Ci0gICAgICAgIHR5cGVOYW1lID0gTmV3UG9vbFRTdHJpbmcobi5jX3N0
cigpKTsKLSAgICB9Ci0KLSAgICBib29sIGlzRmllbGQoKSBjb25zdCB7IHJldHVybiBmaWVsZE5h
bWUgIT0gMDsgfQotICAgIGNvbnN0IFRTdHJpbmcmIGdldEZpZWxkTmFtZSgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBhc3NlcnQoZmllbGROYW1lKTsKLSAgICAgICAgcmV0dXJuICpmaWVsZE5hbWU7
Ci0gICAgfQotICAgIHZvaWQgc2V0RmllbGROYW1lKGNvbnN0IFRTdHJpbmcmIG4pCi0gICAgewot
ICAgICAgICBmaWVsZE5hbWUgPSBOZXdQb29sVFN0cmluZyhuLmNfc3RyKCkpOwotICAgIH0KLQot
ICAgIFRTdHJpbmcmIGdldE1hbmdsZWROYW1lKCkgewotICAgICAgICBpZiAoIW1hbmdsZWQpIHsK
LSAgICAgICAgICAgIG1hbmdsZWQgPSBOZXdQb29sVFN0cmluZygiIik7Ci0gICAgICAgICAgICBi
dWlsZE1hbmdsZWROYW1lKCptYW5nbGVkKTsKLSAgICAgICAgICAgICptYW5nbGVkICs9ICc7JyA7
CisgICAgY29uc3QgVFN0cmluZyYgZ2V0TWFuZ2xlZE5hbWUoKSBjb25zdCB7CisgICAgICAgIGlm
IChtYW5nbGVkLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIG1hbmdsZWQgPSBidWlsZE1hbmdsZWRO
YW1lKCk7CisgICAgICAgICAgICBtYW5nbGVkICs9ICc7JzsKICAgICAgICAgfQotCi0gICAgICAg
IHJldHVybiAqbWFuZ2xlZDsKKyAgICAgICAgcmV0dXJuIG1hbmdsZWQ7CiAgICAgfQogCiAgICAg
Ym9vbCBzYW1lRWxlbWVudFR5cGUoY29uc3QgVFR5cGUmIHJpZ2h0KSBjb25zdCB7CkBAIC0yMzAs
MzIgKzIyMywzNCBAQCBwdWJsaWM6CiAgICAgLy8gRm9yIHR5cGUgIm5lc3RpbmcyIiwgdGhpcyBt
ZXRob2Qgd291bGQgcmV0dXJuIDIgLS0gdGhlIG51bWJlcgogICAgIC8vIG9mIHN0cnVjdHVyZXMg
dGhyb3VnaCB3aGljaCBpbmRpcmVjdGlvbiBtdXN0IG9jY3VyIHRvIHJlYWNoIHRoZQogICAgIC8v
IGRlZXBlc3QgZmllbGQgKG5lc3RpbmcyLmZpZWxkMS5wb3NpdGlvbikuCi0gICAgaW50IGdldERl
ZXBlc3RTdHJ1Y3ROZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gZGVlcGVzdFN0cnVjdE5lc3Rpbmc7
IH0KKyAgICBpbnQgZ2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSBjb25zdCB7CisgICAgICAgIHJl
dHVybiBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmRlZXBlc3ROZXN0aW5nKCkgOiAwOworICAgIH0K
IAotICAgIGJvb2wgaXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkgY29uc3Q7CisgICAgYm9v
bCBpc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSBjb25zdCB7CisgICAgICAgIHJldHVybiBz
dHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmNvbnRhaW5zQXJyYXlzKCkgOiBmYWxzZTsKKyAgICB9CiAK
LXByb3RlY3RlZDoKLSAgICB2b2lkIGJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYpOwotICAgIGlu
dCBnZXRTdHJ1Y3RTaXplKCkgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlRGVlcGVzdFN0cnVjdE5l
c3RpbmcoKTsKK3ByaXZhdGU6CisgICAgVFN0cmluZyBidWlsZE1hbmdsZWROYW1lKCkgY29uc3Q7
CiAKKyNpZmRlZiBfX0dOVUNfXworICAgIFRCYXNpY1R5cGUgdHlwZTsKKyAgICBUUHJlY2lzaW9u
IHByZWNpc2lvbjsKKyAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKKyNlbHNlCiAgICAgVEJhc2lj
VHlwZSB0eXBlICAgICAgOiA2OwogICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOwogICAgIFRRdWFs
aWZpZXIgcXVhbGlmaWVyIDogNzsKKyNlbmRpZgogICAgIGludCBzaXplICAgICAgICAgICAgIDog
ODsgLy8gc2l6ZSBvZiB2ZWN0b3Igb3IgbWF0cml4LCBub3Qgc2l6ZSBvZiBhcnJheQogICAgIHVu
c2lnbmVkIGludCBtYXRyaXggIDogMTsKICAgICB1bnNpZ25lZCBpbnQgYXJyYXkgICA6IDE7CiAg
ICAgaW50IGFycmF5U2l6ZTsKLSAgICBpbnQgbWF4QXJyYXlTaXplOwotICAgIFRUeXBlKiBhcnJh
eUluZm9ybWF0aW9uVHlwZTsKIAotICAgIFRUeXBlTGlzdCogc3RydWN0dXJlOyAgICAgIC8vIDAg
dW5sZXNzIHRoaXMgaXMgYSBzdHJ1Y3QKLSAgICBtdXRhYmxlIGludCBzdHJ1Y3R1cmVTaXplOwot
ICAgIGludCBkZWVwZXN0U3RydWN0TmVzdGluZzsKLQotICAgIFRTdHJpbmcgKmZpZWxkTmFtZTsg
ICAgICAgICAvLyBmb3Igc3RydWN0dXJlIGZpZWxkIG5hbWVzCi0gICAgVFN0cmluZyAqbWFuZ2xl
ZDsKLSAgICBUU3RyaW5nICp0eXBlTmFtZTsgICAgICAgICAgLy8gZm9yIHN0cnVjdHVyZSBmaWVs
ZCB0eXBlIG5hbWUKKyAgICBUU3RydWN0dXJlKiBzdHJ1Y3R1cmU7ICAgICAgLy8gMCB1bmxlc3Mg
dGhpcyBpcyBhIHN0cnVjdAorCisgICAgbXV0YWJsZSBUU3RyaW5nIG1hbmdsZWQ7CiB9OwogCiAv
LwpAQCAtMjc3LDkgKzI3Miw5IEBAIHN0cnVjdCBUUHVibGljVHlwZQogICAgIGJvb2wgYXJyYXk7
CiAgICAgaW50IGFycmF5U2l6ZTsKICAgICBUVHlwZSogdXNlckRlZjsKLSAgICBpbnQgbGluZTsK
KyAgICBUU291cmNlTG9jIGxpbmU7CiAKLSAgICB2b2lkIHNldEJhc2ljKFRCYXNpY1R5cGUgYnQs
IFRRdWFsaWZpZXIgcSwgaW50IGxuID0gMCkKKyAgICB2b2lkIHNldEJhc2ljKFRCYXNpY1R5cGUg
YnQsIFRRdWFsaWZpZXIgcSwgY29uc3QgVFNvdXJjZUxvYyYgbG4pCiAgICAgewogICAgICAgICB0
eXBlID0gYnQ7CiAgICAgICAgIHF1YWxpZmllciA9IHE7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5pZm9ybS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuaWZvcm0uY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuaWZvcm0uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIxIEBACisvLw0KKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUNCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KKy8vDQorDQorI2luY2x1ZGUgImNv
bXBpbGVyL1VuaWZvcm0uaCINCisNCituYW1lc3BhY2Ugc2gNCit7DQorDQorVW5pZm9ybTo6VW5p
Zm9ybShHTGVudW0gdHlwZSwgR0xlbnVtIHByZWNpc2lvbiwgY29uc3QgY2hhciAqbmFtZSwgaW50
IGFycmF5U2l6ZSwgaW50IHJlZ2lzdGVySW5kZXgpDQorew0KKyAgICB0aGlzLT50eXBlID0gdHlw
ZTsNCisgICAgdGhpcy0+cHJlY2lzaW9uID0gcHJlY2lzaW9uOw0KKyAgICB0aGlzLT5uYW1lID0g
bmFtZTsNCisgICAgdGhpcy0+YXJyYXlTaXplID0gYXJyYXlTaXplOw0KKyAgICB0aGlzLT5yZWdp
c3RlckluZGV4ID0gcmVnaXN0ZXJJbmRleDsNCit9DQorDQorfQ0KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Vbmlmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuaWZvcm0uaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Vbmlmb3JtLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzUgQEAKKy8vDQorLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorLy8NCisNCisjaWZuZGVmIENPTVBJ
TEVSX1VOSUZPUk1fSF8NCisjZGVmaW5lIENPTVBJTEVSX1VOSUZPUk1fSF8NCisNCisjaW5jbHVk
ZSA8c3RyaW5nPg0KKyNpbmNsdWRlIDx2ZWN0b3I+DQorDQorI2RlZmluZSBHTF9BUElDQUxMDQor
I2luY2x1ZGUgPEdMRVMyL2dsMi5oPg0KKw0KK25hbWVzcGFjZSBzaA0KK3sNCisNCitzdHJ1Y3Qg
VW5pZm9ybQ0KK3sNCisgICAgVW5pZm9ybShHTGVudW0gdHlwZSwgR0xlbnVtIHByZWNpc2lvbiwg
Y29uc3QgY2hhciAqbmFtZSwgaW50IGFycmF5U2l6ZSwgaW50IHJlZ2lzdGVySW5kZXgpOw0KKw0K
KyAgICBHTGVudW0gdHlwZTsNCisgICAgR0xlbnVtIHByZWNpc2lvbjsNCisgICAgc3RkOjpzdHJp
bmcgbmFtZTsNCisgICAgdW5zaWduZWQgaW50IGFycmF5U2l6ZTsNCisgICAgDQorICAgIGludCBy
ZWdpc3RlckluZGV4Ow0KK307DQorDQordHlwZWRlZiBzdGQ6OnZlY3RvcjxVbmlmb3JtPiBBY3Rp
dmVVbmlmb3JtczsNCisNCit9DQorDQorI2VuZGlmICAgLy8gQ09NUElMRVJfVU5JRk9STV9IXw0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9W
YXJpYWJsZUluZm8uY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMx
LDEyICsxMzEsMTMgQEAgdm9pZCBnZXRVc2VyRGVmaW5lZFZhcmlhYmxlSW5mbyhjb25zdCBUVAog
ewogICAgIEFTU0VSVCh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCk7CiAKLSAgICBj
b25zdCBUVHlwZUxpc3QqIHN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0
IFRUeXBlKiBmaWVsZFR5cGUgPSAoKnN0cnVjdHVyZSlbaV0udHlwZTsKLSAgICAgICAgZ2V0VmFy
aWFibGVJbmZvKCpmaWVsZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lICsgIi4i
ICsgZmllbGRUeXBlLT5nZXRGaWVsZE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1h
cHBlZE5hbWUgKyAiLiIgKyBUSW50ZXJtVHJhdmVyc2VyOjpoYXNoKGZpZWxkVHlwZS0+Z2V0Rmll
bGROYW1lKCksIGhhc2hGdW5jdGlvbiksCisgICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0g
dHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBm
aWVsZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVFR5cGUmIGZpZWxkVHlwZSA9ICoo
ZmllbGRzW2ldLT50eXBlKCkpOworICAgICAgICBjb25zdCBUU3RyaW5nJiBmaWVsZE5hbWUgPSBm
aWVsZHNbaV0tPm5hbWUoKTsKKyAgICAgICAgZ2V0VmFyaWFibGVJbmZvKGZpZWxkVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWUgKyAiLiIgKyBmaWVsZE5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICBtYXBwZWROYW1lICsgIi4iICsgVEludGVybVRyYXZlcnNlcjo6aGFzaChm
aWVsZE5hbWUsIGhhc2hGdW5jdGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvTGlz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hGdW5jdGlvbik7CiAgICAgfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcubAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCShyZXZp
c2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xz
bGFuZy5sCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0NywxMCBAQCBXSElDSCBHRU5FUkFURVMg
VEhFIEdMU0wgRVMgTEVYRVIgKGdsc2xhCiAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQxMDIp
CiAjZW5kaWYKIAotI2RlZmluZSBZWV9VU0VSX0FDVElPTiB5eWx2YWwtPmxleC5saW5lID0geXls
aW5lbm87CisjZGVmaW5lIFlZX1VTRVJfQUNUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIHl5bGxvYy0+Zmlyc3RfZmlsZSA9IHl5bGxvYy0+bGFzdF9maWxlID0geXlj
b2x1bW47IFwKKyAgICB5eWxsb2MtPmZpcnN0X2xpbmUgPSB5eWxsb2MtPmxhc3RfbGluZSA9IHl5
bGluZW5vOworCiAjZGVmaW5lIFlZX0lOUFVUKGJ1ZiwgcmVzdWx0LCBtYXhfc2l6ZSkgXAogICAg
IHJlc3VsdCA9IHN0cmluZ19pbnB1dChidWYsIG1heF9zaXplLCB5eXNjYW5uZXIpOwogCkBAIC01
NywxMCArNjAsOCBAQCBzdGF0aWMgaW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2FuCiAl
fQogCiAlb3B0aW9uIG5veXl3cmFwIG5vdW5wdXQgbmV2ZXItaW50ZXJhY3RpdmUKLSVvcHRpb24g
eXlsaW5lbm8gcmVlbnRyYW50IGJpc29uLWJyaWRnZQotJW9wdGlvbiBzdGFjaworJW9wdGlvbiB5
eWxpbmVubyByZWVudHJhbnQgYmlzb24tYnJpZGdlIGJpc29uLWxvY2F0aW9ucwogJW9wdGlvbiBl
eHRyYS10eXBlPSJUUGFyc2VDb250ZXh0KiIKLSV4IENPTU1FTlQgRklFTERTCiAKIEQgICAgICAg
ICAgIFswLTldCiBMICAgICAgICAgICBbYS16QS1aX10KQEAgLTcwLDczICs3MSw2MCBAQCBPICAg
ICAgICAgICBbMC03XQogCiAlJQogCi0lewotICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQgPSB5
eWV4dHJhOwotJX0KLQotICAgIC8qIFNpbmdsZS1saW5lIGNvbW1lbnRzICovCi0iLy8iW15cbl0q
IDsKKyJpbnZhcmlhbnQiICAgIHsgcmV0dXJuIElOVkFSSUFOVDsgfQorImhpZ2hwIiAgICAgICAg
eyByZXR1cm4gSElHSF9QUkVDSVNJT047IH0KKyJtZWRpdW1wIiAgICAgIHsgcmV0dXJuIE1FRElV
TV9QUkVDSVNJT047IH0KKyJsb3dwIiAgICAgICAgIHsgcmV0dXJuIExPV19QUkVDSVNJT047IH0K
KyJwcmVjaXNpb24iICAgIHsgcmV0dXJuIFBSRUNJU0lPTjsgfQorCisiYXR0cmlidXRlIiAgICB7
IHJldHVybiBBVFRSSUJVVEU7IH0KKyJjb25zdCIgICAgICAgIHsgcmV0dXJuIENPTlNUX1FVQUw7
IH0KKyJ1bmlmb3JtIiAgICAgIHsgcmV0dXJuIFVOSUZPUk07IH0KKyJ2YXJ5aW5nIiAgICAgIHsg
cmV0dXJuIFZBUllJTkc7IH0KKworImJyZWFrIiAgICAgICAgeyByZXR1cm4gQlJFQUs7IH0KKyJj
b250aW51ZSIgICAgIHsgcmV0dXJuIENPTlRJTlVFOyB9CisiZG8iICAgICAgICAgICB7IHJldHVy
biBETzsgfQorImZvciIgICAgICAgICAgeyByZXR1cm4gRk9SOyB9Cisid2hpbGUiICAgICAgICB7
IHJldHVybiBXSElMRTsgfQorCisiaWYiICAgICAgICAgICB7IHJldHVybiBJRjsgfQorImVsc2Ui
ICAgICAgICAgeyByZXR1cm4gRUxTRTsgfQorCisiaW4iICAgICAgICAgICB7IHJldHVybiBJTl9R
VUFMOyB9Cisib3V0IiAgICAgICAgICB7IHJldHVybiBPVVRfUVVBTDsgfQorImlub3V0IiAgICAg
ICAgeyByZXR1cm4gSU5PVVRfUVVBTDsgfQorCisiZmxvYXQiICAgICAgICB7IHJldHVybiBGTE9B
VF9UWVBFOyB9CisiaW50IiAgICAgICAgICB7IHJldHVybiBJTlRfVFlQRTsgfQorInZvaWQiICAg
ICAgICAgeyByZXR1cm4gVk9JRF9UWVBFOyB9CisiYm9vbCIgICAgICAgICB7IHJldHVybiBCT09M
X1RZUEU7IH0KKyJ0cnVlIiAgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4g
Qk9PTENPTlNUQU5UOyB9CisiZmFsc2UiICAgICAgICB7IHl5bHZhbC0+bGV4LmIgPSBmYWxzZTsg
cmV0dXJuIEJPT0xDT05TVEFOVDsgfQorCisiZGlzY2FyZCIgICAgICB7IHJldHVybiBESVNDQVJE
OyB9CisicmV0dXJuIiAgICAgICB7IHJldHVybiBSRVRVUk47IH0KKworIm1hdDIiICAgICAgICAg
eyByZXR1cm4gTUFUUklYMjsgfQorIm1hdDMiICAgICAgICAgeyByZXR1cm4gTUFUUklYMzsgfQor
Im1hdDQiICAgICAgICAgeyByZXR1cm4gTUFUUklYNDsgfQorCisidmVjMiIgICAgICAgICB7IHJl
dHVybiBWRUMyOyB9CisidmVjMyIgICAgICAgICB7IHJldHVybiBWRUMzOyB9CisidmVjNCIgICAg
ICAgICB7IHJldHVybiBWRUM0OyB9CisiaXZlYzIiICAgICAgICB7IHJldHVybiBJVkVDMjsgfQor
Iml2ZWMzIiAgICAgICAgeyByZXR1cm4gSVZFQzM7IH0KKyJpdmVjNCIgICAgICAgIHsgcmV0dXJu
IElWRUM0OyB9CisiYnZlYzIiICAgICAgICB7IHJldHVybiBCVkVDMjsgfQorImJ2ZWMzIiAgICAg
ICAgeyByZXR1cm4gQlZFQzM7IH0KKyJidmVjNCIgICAgICAgIHsgcmV0dXJuIEJWRUM0OyB9CisK
KyJzYW1wbGVyMkQiICAgICAgICAgIHsgcmV0dXJuIFNBTVBMRVIyRDsgfQorInNhbXBsZXJDdWJl
IiAgICAgICAgeyByZXR1cm4gU0FNUExFUkNVQkU7IH0KKyJzYW1wbGVyRXh0ZXJuYWxPRVMiIHsg
cmV0dXJuIFNBTVBMRVJfRVhURVJOQUxfT0VTOyB9Cisic2FtcGxlcjJEUmVjdCIgICAgICB7IHJl
dHVybiBTQU1QTEVSMkRSRUNUOyB9CiAKLSAgICAvKiBNdWx0aS1saW5lIGNvbW1lbnRzICovCi0i
LyoiICAgICAgICAgICB7IHl5X3B1c2hfc3RhdGUoQ09NTUVOVCwgeXlzY2FubmVyKTsgfQotPENP
TU1FTlQ+LiB8Ci08Q09NTUVOVD5cbiA7Ci08Q09NTUVOVD4iKi8iICB7IHl5X3BvcF9zdGF0ZSh5
eXNjYW5uZXIpOyB9Ci0KLSJpbnZhcmlhbnQiICAgIHsgcmV0dXJuKElOVkFSSUFOVCk7IH0KLSJo
aWdocCIgICAgICAgIHsgcmV0dXJuKEhJR0hfUFJFQ0lTSU9OKTsgfQotIm1lZGl1bXAiICAgICAg
eyByZXR1cm4oTUVESVVNX1BSRUNJU0lPTik7IH0KLSJsb3dwIiAgICAgICAgIHsgcmV0dXJuKExP
V19QUkVDSVNJT04pOyB9Ci0icHJlY2lzaW9uIiAgICB7IHJldHVybihQUkVDSVNJT04pOyB9Ci0K
LSJhdHRyaWJ1dGUiICAgIHsgcmV0dXJuKEFUVFJJQlVURSk7IH0KLSJjb25zdCIgICAgICAgIHsg
cmV0dXJuKENPTlNUX1FVQUwpOyB9Ci0idW5pZm9ybSIgICAgICB7IHJldHVybihVTklGT1JNKTsg
fQotInZhcnlpbmciICAgICAgeyByZXR1cm4oVkFSWUlORyk7IH0KLQotImJyZWFrIiAgICAgICAg
eyByZXR1cm4oQlJFQUspOyB9Ci0iY29udGludWUiICAgICB7IHJldHVybihDT05USU5VRSk7IH0K
LSJkbyIgICAgICAgICAgIHsgcmV0dXJuKERPKTsgfQotImZvciIgICAgICAgICAgeyByZXR1cm4o
Rk9SKTsgfQotIndoaWxlIiAgICAgICAgeyByZXR1cm4oV0hJTEUpOyB9Ci0KLSJpZiIgICAgICAg
ICAgIHsgcmV0dXJuKElGKTsgfQotImVsc2UiICAgICAgICAgeyByZXR1cm4oRUxTRSk7IH0KLQot
ImluIiAgICAgICAgICAgeyByZXR1cm4oSU5fUVVBTCk7IH0KLSJvdXQiICAgICAgICAgIHsgcmV0
dXJuKE9VVF9RVUFMKTsgfQotImlub3V0IiAgICAgICAgeyByZXR1cm4oSU5PVVRfUVVBTCk7IH0K
LQotImZsb2F0IiAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4o
RkxPQVRfVFlQRSk7IH0KLSJpbnQiICAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
dHJ1ZTsgcmV0dXJuKElOVF9UWVBFKTsgfQotInZvaWQiICAgICAgICAgeyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oVk9JRF9UWVBFKTsgfQotImJvb2wiICAgICAgICAgeyBj
b250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oQk9PTF9UWVBFKTsgfQotInRydWUi
ICAgICAgICAgeyB5eWx2YWwtPmxleC5iID0gdHJ1ZTsgIHJldHVybihCT09MQ09OU1RBTlQpOyB9
Ci0iZmFsc2UiICAgICAgICB7IHl5bHZhbC0+bGV4LmIgPSBmYWxzZTsgcmV0dXJuKEJPT0xDT05T
VEFOVCk7IH0KLQotImRpc2NhcmQiICAgICAgeyByZXR1cm4oRElTQ0FSRCk7IH0KLSJyZXR1cm4i
ICAgICAgIHsgcmV0dXJuKFJFVFVSTik7IH0KLQotIm1hdDIiICAgICAgICAgeyBjb250ZXh0LT5s
ZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMik7IH0KLSJtYXQzIiAgICAgICAgIHsg
Y29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJWDMpOyB9Ci0ibWF0NCIg
ICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVg0KTsg
fQotCi0idmVjMiIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVy
biAoVkVDMik7IH0KLSJ2ZWMzIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuIChWRUMzKTsgfQotInZlYzQiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5
cGUgPSB0cnVlOyByZXR1cm4gKFZFQzQpOyB9Ci0iaXZlYzIiICAgICAgICB7IGNvbnRleHQtPmxl
eEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzIpOyB9Ci0iaXZlYzMiICAgICAgICB7IGNv
bnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzMpOyB9Ci0iaXZlYzQiICAg
ICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzQpOyB9Ci0i
YnZlYzIiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoQlZF
QzIpOyB9Ci0iYnZlYzMiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJl
dHVybiAoQlZFQzMpOyB9Ci0iYnZlYzQiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9
IHRydWU7IHJldHVybiAoQlZFQzQpOyB9Ci0KLSJzYW1wbGVyMkQiICAgICAgIHsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVIyRDsgfQotInNhbXBsZXJDdWJlIiAg
ICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUkNVQkU7IH0K
LSJzYW1wbGVyRXh0ZXJuYWxPRVMiIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuIFNBTVBMRVJfRVhURVJOQUxfT0VTOyB9Ci0ic2FtcGxlcjJEUmVjdCIgeyBjb250ZXh0LT5s
ZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEUkVDVDsgfQotCi0ic3RydWN0IiAg
ICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihTVFJVQ1QpOyB9Cisi
c3RydWN0IiAgICAgICB7IHJldHVybiBTVFJVQ1Q7IH0KIAogImFzbSIgICAgICAgICAgeyByZXR1
cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAKQEAgLTE4MywxMyArMTcxLDExIEBAIE8g
ICAgICAgICAgIFswLTddCiAiZnZlYzMiICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5
c2Nhbm5lcik7IH0KICJmdmVjNCIgICAgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2Fu
bmVyKTsgfQogCi0ic2FtcGxlcjFEIiAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5l
cik7IH0KLSJzYW1wbGVyM0QiICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsg
fQotCi0ic2FtcGxlcjFEU2hhZG93IiB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7
IH0KLSJzYW1wbGVyMkRTaGFkb3ciIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsg
fQotCi0ic2FtcGxlcjNEUmVjdCIgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9
Cisic2FtcGxlcjFEIiAgICAgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIp
OyB9Cisic2FtcGxlcjNEIiAgICAgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5u
ZXIpOyB9Cisic2FtcGxlcjFEU2hhZG93IiAgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNj
YW5uZXIpOyB9Cisic2FtcGxlcjJEU2hhZG93IiAgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5
eXNjYW5uZXIpOyB9Cisic2FtcGxlcjNEUmVjdCIgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29y
ZCh5eXNjYW5uZXIpOyB9CiAic2FtcGxlcjJEUmVjdFNoYWRvdyIgeyByZXR1cm4gcmVzZXJ2ZWRf
d29yZCh5eXNjYW5uZXIpOyB9CiAKICJzaXplb2YiICAgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dv
cmQoeXlzY2FubmVyKTsgfQpAQCAtMjAzLDcyICsxODksNjQgQEAgTyAgICAgICAgICAgWzAtN10K
ICAgIHJldHVybiBjaGVja190eXBlKHl5c2Nhbm5lcik7CiB9CiAKLTBbeFhde0h9KyAgICAgICAg
IHsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkp
OyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Ci0we099KyAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4
LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENP
TlNUQU5UKTsgfQotMHtEfSsgICAgICAgICAgICAgeyBjb250ZXh0LT5lcnJvcih5eWxpbmVubywg
IkludmFsaWQgT2N0YWwgbnVtYmVyLiIsIHl5dGV4dCk7IGNvbnRleHQtPnJlY292ZXIoKTsgcmV0
dXJuIDA7fQote0R9KyAgICAgICAgICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8
aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KLQote0R9
K3tFfSAgICAgICAgICAgeyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2Zf
ZG90KHl5dGV4dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KLXtEfSsiLiJ7RH0qKHtFfSk/
IHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsg
cmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Ci0iLiJ7RH0rKHtFfSk/ICAgICB7IHl5bHZhbC0+bGV4
LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENP
TlNUQU5UKTsgfQotCi0iKz0iICAgICAgICAgICAgeyAgcmV0dXJuKEFERF9BU1NJR04pOyB9Ci0i
LT0iICAgICAgICAgICAgeyAgcmV0dXJuKFNVQl9BU1NJR04pOyB9Ci0iKj0iICAgICAgICAgICAg
eyAgcmV0dXJuKE1VTF9BU1NJR04pOyB9Ci0iLz0iICAgICAgICAgICAgeyAgcmV0dXJuKERJVl9B
U1NJR04pOyB9Ci0iJT0iICAgICAgICAgICAgeyAgcmV0dXJuKE1PRF9BU1NJR04pOyB9Ci0iPDw9
IiAgICAgICAgICAgeyAgcmV0dXJuKExFRlRfQVNTSUdOKTsgfQotIj4+PSIgICAgICAgICAgIHsg
IHJldHVybihSSUdIVF9BU1NJR04pOyB9Ci0iJj0iICAgICAgICAgICAgeyAgcmV0dXJuKEFORF9B
U1NJR04pOyB9Ci0iXj0iICAgICAgICAgICAgeyAgcmV0dXJuKFhPUl9BU1NJR04pOyB9Ci0ifD0i
ICAgICAgICAgICAgeyAgcmV0dXJuKE9SX0FTU0lHTik7IH0KLQotIisrIiAgICAgICAgICAgIHsg
IHJldHVybihJTkNfT1ApOyB9Ci0iLS0iICAgICAgICAgICAgeyAgcmV0dXJuKERFQ19PUCk7IH0K
LSImJiIgICAgICAgICAgICB7ICByZXR1cm4oQU5EX09QKTsgfQotInx8IiAgICAgICAgICAgIHsg
IHJldHVybihPUl9PUCk7IH0KLSJeXiIgICAgICAgICAgICB7ICByZXR1cm4oWE9SX09QKTsgfQot
Ijw9IiAgICAgICAgICAgIHsgIHJldHVybihMRV9PUCk7IH0KLSI+PSIgICAgICAgICAgICB7ICBy
ZXR1cm4oR0VfT1ApOyB9Ci0iPT0iICAgICAgICAgICAgeyAgcmV0dXJuKEVRX09QKTsgfQotIiE9
IiAgICAgICAgICAgIHsgIHJldHVybihORV9PUCk7IH0KLSI8PCIgICAgICAgICAgICB7ICByZXR1
cm4oTEVGVF9PUCk7IH0KLSI+PiIgICAgICAgICAgICB7ICByZXR1cm4oUklHSFRfT1ApOyB9Ci0i
OyIgICAgICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJuKFNF
TUlDT0xPTik7IH0KLSgieyJ8IjwlIikgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZh
bHNlOyByZXR1cm4oTEVGVF9CUkFDRSk7IH0KLSgifSJ8IiU+IikgICAgICB7IHJldHVybihSSUdI
VF9CUkFDRSk7IH0KLSIsIiAgICAgICAgIHsgaWYgKGNvbnRleHQtPmluVHlwZVBhcmVuKSBjb250
ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJuKENPTU1BKTsgfQotIjoiICAgICAgICAg
eyByZXR1cm4oQ09MT04pOyB9Ci0iPSIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9
IGZhbHNlOyByZXR1cm4oRVFVQUwpOyB9Ci0iKCIgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVy
VHlwZSA9IGZhbHNlOyBjb250ZXh0LT5pblR5cGVQYXJlbiA9IHRydWU7IHJldHVybihMRUZUX1BB
UkVOKTsgfQotIikiICAgICAgICAgeyBjb250ZXh0LT5pblR5cGVQYXJlbiA9IGZhbHNlOyByZXR1
cm4oUklHSFRfUEFSRU4pOyB9Ci0oIlsifCI8OiIpICAgICAgeyByZXR1cm4oTEVGVF9CUkFDS0VU
KTsgfQotKCJdInwiOj4iKSAgICAgIHsgcmV0dXJuKFJJR0hUX0JSQUNLRVQpOyB9Ci0iLiIgICAg
ICAgICB7IEJFR0lOKEZJRUxEUyk7ICByZXR1cm4oRE9UKTsgfQotIiEiICAgICAgICAgeyByZXR1
cm4oQkFORyk7IH0KLSItIiAgICAgICAgIHsgcmV0dXJuKERBU0gpOyB9Ci0ifiIgICAgICAgICB7
IHJldHVybihUSUxERSk7IH0KLSIrIiAgICAgICAgIHsgcmV0dXJuKFBMVVMpOyB9Ci0iKiIgICAg
ICAgICB7IHJldHVybihTVEFSKTsgfQotIi8iICAgICAgICAgeyByZXR1cm4oU0xBU0gpOyB9Ci0i
JSIgICAgICAgICB7IHJldHVybihQRVJDRU5UKTsgfQotIjwiICAgICAgICAgeyByZXR1cm4oTEVG
VF9BTkdMRSk7IH0KLSI+IiAgICAgICAgIHsgcmV0dXJuKFJJR0hUX0FOR0xFKTsgfQotInwiICAg
ICAgICAgeyByZXR1cm4oVkVSVElDQUxfQkFSKTsgfQotIl4iICAgICAgICAgeyByZXR1cm4oQ0FS
RVQpOyB9Ci0iJiIgICAgICAgICB7IHJldHVybihBTVBFUlNBTkQpOyB9Ci0iPyIgICAgICAgICB7
IHJldHVybihRVUVTVElPTik7IH0KLQotPEZJRUxEUz57TH0oe0x9fHtEfSkqIHsgCi0gICAgQkVH
SU4oSU5JVElBTCk7Ci0gICAgeXlsdmFsLT5sZXguc3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0
ZXh0KTsgCi0gICAgcmV0dXJuIEZJRUxEX1NFTEVDVElPTjsKLX0KLTxGSUVMRFM+WyBcdFx2XGZc
cl0ge30KLQotWyBcdFx2XG5cZlxyXSAgIHsgIH0KLTwqPjw8RU9GPj4gICAgICB7IGNvbnRleHQt
PkFmdGVyRU9GID0gdHJ1ZTsgeXl0ZXJtaW5hdGUoKTsgfQotPCo+LiAgICAgICAgICAgIHsgY29u
dGV4dC0+d2FybmluZyh5eWxpbmVubywgIlVua25vd24gY2hhciIsIHl5dGV4dCwgIiIpOyByZXR1
cm4gMDsgfQorMFt4WF17SH0rICAgICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8
aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05TVEFOVDsgfQorMHtPfSsg
ICAgICAgICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0
ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05TVEFOVDsgfQore0R9KyAgICAgICAgICAgICAgeyB5
eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJl
dHVybiBJTlRDT05TVEFOVDsgfQorCit7RH0re0V9ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmYg
PSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNU
QU5UOyB9Cit7RH0rIi4ie0R9Kih7RX0pPyB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxm
bG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9CisiLiJ7RH0r
KHtFfSk/ICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3Qo
eXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9CisKKyIrPSIgICAgICAgICAgICB7IHJl
dHVybiBBRERfQVNTSUdOOyB9CisiLT0iICAgICAgICAgICAgeyByZXR1cm4gU1VCX0FTU0lHTjsg
fQorIio9IiAgICAgICAgICAgIHsgcmV0dXJuIE1VTF9BU1NJR047IH0KKyIvPSIgICAgICAgICAg
ICB7IHJldHVybiBESVZfQVNTSUdOOyB9CisiJT0iICAgICAgICAgICAgeyByZXR1cm4gTU9EX0FT
U0lHTjsgfQorIjw8PSIgICAgICAgICAgIHsgcmV0dXJuIExFRlRfQVNTSUdOOyB9CisiPj49IiAg
ICAgICAgICAgeyByZXR1cm4gUklHSFRfQVNTSUdOOyB9CisiJj0iICAgICAgICAgICAgeyByZXR1
cm4gQU5EX0FTU0lHTjsgfQorIl49IiAgICAgICAgICAgIHsgcmV0dXJuIFhPUl9BU1NJR047IH0K
KyJ8PSIgICAgICAgICAgICB7IHJldHVybiBPUl9BU1NJR047IH0KKworIisrIiAgICAgICAgICAg
IHsgcmV0dXJuIElOQ19PUDsgfQorIi0tIiAgICAgICAgICAgIHsgcmV0dXJuIERFQ19PUDsgfQor
IiYmIiAgICAgICAgICAgIHsgcmV0dXJuIEFORF9PUDsgfQorInx8IiAgICAgICAgICAgIHsgcmV0
dXJuIE9SX09QOyB9CisiXl4iICAgICAgICAgICAgeyByZXR1cm4gWE9SX09QOyB9CisiPD0iICAg
ICAgICAgICAgeyByZXR1cm4gTEVfT1A7IH0KKyI+PSIgICAgICAgICAgICB7IHJldHVybiBHRV9P
UDsgfQorIj09IiAgICAgICAgICAgIHsgcmV0dXJuIEVRX09QOyB9CisiIT0iICAgICAgICAgICAg
eyByZXR1cm4gTkVfT1A7IH0KKyI8PCIgICAgICAgICAgICB7IHJldHVybiBMRUZUX09QOyB9Cisi
Pj4iICAgICAgICAgICAgeyByZXR1cm4gUklHSFRfT1A7IH0KKyI7IiAgICAgICAgICAgICB7IHJl
dHVybiBTRU1JQ09MT047IH0KKygieyJ8IjwlIikgICAgICB7IHJldHVybiBMRUZUX0JSQUNFOyB9
CisoIn0ifCIlPiIpICAgICAgeyByZXR1cm4gUklHSFRfQlJBQ0U7IH0KKyIsIiAgICAgICAgIHsg
cmV0dXJuIENPTU1BOyB9CisiOiIgICAgICAgICB7IHJldHVybiBDT0xPTjsgfQorIj0iICAgICAg
ICAgeyByZXR1cm4gRVFVQUw7IH0KKyIoIiAgICAgICAgIHsgcmV0dXJuIExFRlRfUEFSRU47IH0K
KyIpIiAgICAgICAgIHsgcmV0dXJuIFJJR0hUX1BBUkVOOyB9CisoIlsifCI8OiIpICB7IHJldHVy
biBMRUZUX0JSQUNLRVQ7IH0KKygiXSJ8Ijo+IikgIHsgcmV0dXJuIFJJR0hUX0JSQUNLRVQ7IH0K
KyIuIiAgICAgICAgIHsgcmV0dXJuIERPVDsgfQorIiEiICAgICAgICAgeyByZXR1cm4gQkFORzsg
fQorIi0iICAgICAgICAgeyByZXR1cm4gREFTSDsgfQorIn4iICAgICAgICAgeyByZXR1cm4gVElM
REU7IH0KKyIrIiAgICAgICAgIHsgcmV0dXJuIFBMVVM7IH0KKyIqIiAgICAgICAgIHsgcmV0dXJu
IFNUQVI7IH0KKyIvIiAgICAgICAgIHsgcmV0dXJuIFNMQVNIOyB9CisiJSIgICAgICAgICB7IHJl
dHVybiBQRVJDRU5UOyB9CisiPCIgICAgICAgICB7IHJldHVybiBMRUZUX0FOR0xFOyB9CisiPiIg
ICAgICAgICB7IHJldHVybiBSSUdIVF9BTkdMRTsgfQorInwiICAgICAgICAgeyByZXR1cm4gVkVS
VElDQUxfQkFSOyB9CisiXiIgICAgICAgICB7IHJldHVybiBDQVJFVDsgfQorIiYiICAgICAgICAg
eyByZXR1cm4gQU1QRVJTQU5EOyB9CisiPyIgICAgICAgICB7IHJldHVybiBRVUVTVElPTjsgfQor
CitbIFx0XHZcblxmXHJdIHsgfQorPDxFT0Y+PiAgICB7IHl5dGVybWluYXRlKCk7IH0KKy4gICAg
ICAgICAgeyBhc3NlcnQoZmFsc2UpOyByZXR1cm4gMDsgfQogCiAlJQogCkBAIC0yNzgsNyArMjU2
LDggQEAgeXlfc2l6ZV90IHN0cmluZ19pbnB1dChjaGFyKiBidWYsIHl5X3NpegogICAgIHl5X3Np
emVfdCBsZW4gPSB0b2tlbi50eXBlID09IHBwOjpUb2tlbjo6TEFTVCA/IDAgOiB0b2tlbi50ZXh0
LnNpemUoKTsKICAgICBpZiAobGVuIDwgbWF4X3NpemUpCiAgICAgICAgIG1lbWNweShidWYsIHRv
a2VuLnRleHQuY19zdHIoKSwgbGVuKTsKLSAgICB5eXNldF9saW5lbm8oRW5jb2RlU291cmNlTG9j
KHRva2VuLmxvY2F0aW9uLmZpbGUsIHRva2VuLmxvY2F0aW9uLmxpbmUpLCB5eXNjYW5uZXIpOwor
ICAgIHl5c2V0X2NvbHVtbih0b2tlbi5sb2NhdGlvbi5maWxlLCB5eXNjYW5uZXIpOworICAgIHl5
c2V0X2xpbmVubyh0b2tlbi5sb2NhdGlvbi5saW5lLCB5eXNjYW5uZXIpOwogCiAgICAgaWYgKGxl
biA+PSBtYXhfc2l6ZSkKICAgICAgICAgWVlfRkFUQUxfRVJST1IoIklucHV0IGJ1ZmZlciBvdmVy
ZmxvdyIpOwpAQCAtMjkyLDEyICsyNzEsMTAgQEAgaW50IGNoZWNrX3R5cGUoeXlzY2FuX3QgeXlz
Y2FubmVyKSB7CiAgICAgCiAgICAgaW50IHRva2VuID0gSURFTlRJRklFUjsKICAgICBUU3ltYm9s
KiBzeW1ib2wgPSB5eWV4dHJhLT5zeW1ib2xUYWJsZS5maW5kKHl5dGV4dCk7Ci0gICAgaWYgKHl5
ZXh0cmEtPmxleEFmdGVyVHlwZSA9PSBmYWxzZSAmJiBzeW1ib2wgJiYgc3ltYm9sLT5pc1Zhcmlh
YmxlKCkpIHsKKyAgICBpZiAoc3ltYm9sICYmIHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7CiAgICAg
ICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSBzdGF0aWNfY2FzdDxUVmFyaWFibGUqPihzeW1ib2wp
OwotICAgICAgICBpZiAodmFyaWFibGUtPmlzVXNlclR5cGUoKSkgewotICAgICAgICAgICAgeXll
eHRyYS0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsKKyAgICAgICAgaWYgKHZhcmlhYmxlLT5pc1VzZXJU
eXBlKCkpCiAgICAgICAgICAgICB0b2tlbiA9IFRZUEVfTkFNRTsKLSAgICAgICAgfQogICAgIH0K
ICAgICB5eWx2YWwtPmxleC5zeW1ib2wgPSBzeW1ib2w7CiAgICAgcmV0dXJuIHRva2VuOwpAQCAt
MzA2LDIyICsyODMsMTEgQEAgaW50IGNoZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiBp
bnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKICAgICBzdHJ1Y3QgeXlndXRz
X3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSB5eXNjYW5uZXI7CiAKLSAgICB5eWV4dHJhLT5l
cnJvcih5eWxpbmVubywgIklsbGVnYWwgdXNlIG9mIHJlc2VydmVkIHdvcmQiLCB5eXRleHQsICIi
KTsKKyAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQg
d29yZCIsIHl5dGV4dCwgIiIpOwogICAgIHl5ZXh0cmEtPnJlY292ZXIoKTsKICAgICByZXR1cm4g
MDsKIH0KIAotdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIq
IHJlYXNvbikgewotICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCop
IGNvbnRleHQtPnNjYW5uZXI7Ci0KLSAgICBpZiAoY29udGV4dC0+QWZ0ZXJFT0YpIHsKLSAgICAg
ICAgY29udGV4dC0+ZXJyb3IoeXlsaW5lbm8sIHJlYXNvbiwgInVuZXhwZWN0ZWQgRU9GIik7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXlsaW5lbm8sIHJlYXNvbiwgeXl0
ZXh0KTsKLSAgICB9Ci0gICAgY29udGV4dC0+cmVjb3ZlcigpOwotfQotCiBpbnQgZ2xzbGFuZ19p
bml0aWFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICB5eXNjYW5fdCBzY2FubmVy
ID0gTlVMTDsKICAgICBpZiAoeXlsZXhfaW5pdF9leHRyYShjb250ZXh0LCAmc2Nhbm5lcikpCkBA
IC0zNDQsOCArMzEwLDggQEAgaW50IGdsc2xhbmdfZmluYWxpemUoVFBhcnNlQ29udGV4dCogY29u
dAogaW50IGdsc2xhbmdfc2NhbihzaXplX3QgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmlu
Z1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCiAgICAgICAgICAgICAgICAgIFRQYXJzZUNvbnRleHQq
IGNvbnRleHQpIHsKICAgICB5eXJlc3RhcnQoTlVMTCwgY29udGV4dC0+c2Nhbm5lcik7Ci0gICAg
eXlzZXRfbGluZW5vKEVuY29kZVNvdXJjZUxvYygwLCAxKSwgY29udGV4dC0+c2Nhbm5lcik7Ci0g
ICAgY29udGV4dC0+QWZ0ZXJFT0YgPSBmYWxzZTsKKyAgICB5eXNldF9jb2x1bW4oMCwgY29udGV4
dC0+c2Nhbm5lcik7CisgICAgeXlzZXRfbGluZW5vKDEsIGNvbnRleHQtPnNjYW5uZXIpOwogCiAg
ICAgLy8gSW5pdGlhbGl6ZSBwcmVwcm9jZXNzb3IuCiAgICAgaWYgKCFjb250ZXh0LT5wcmVwcm9j
ZXNzb3IuaW5pdChjb3VudCwgc3RyaW5nLCBsZW5ndGgpKQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcueQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55CShyZXZpc2lvbiAxNTI5NzkpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCiAvLwpAQCAtMzksNyArMzksNiBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMgUEFS
U0VSIChnbHNsCiAjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCiAKICNkZWZpbmUgWVlF
TkFCTEVfTkxTIDAKLSNkZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKIAogI2RlZmluZSBZWUxF
WF9QQVJBTSBjb250ZXh0LT5zY2FubmVyCiAlfQpAQCAtNDcsMTAgKzQ2LDEyIEBAIFdISUNIIEdF
TkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICVleHBlY3QgMSAvKiBPbmUgc2hpZnQg
cmVkdWNlIGNvbmZsaWN0IGJlY2F1c2Ugb2YgaWYgfCBlbHNlICovCiAlcHVyZS1wYXJzZXIKICVw
YXJzZS1wYXJhbSB7VFBhcnNlQ29udGV4dCogY29udGV4dH0KKyVsb2NhdGlvbnMKIAogJXVuaW9u
IHsKKyNkZWZpbmUgWVlMVFlQRSBUU291cmNlTG9jCisjZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFS
RUQgMQogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgdW5p
b24gewogICAgICAgICAgICAgVFN0cmluZyAqc3RyaW5nOwogICAgICAgICAgICAgZmxvYXQgZjsK
QEAgLTYwLDcgKzYxLDYgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xz
bAogICAgICAgICBUU3ltYm9sKiBzeW1ib2w7CiAgICAgfSBsZXg7CiAgICAgc3RydWN0IHsKLSAg
ICAgICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAgICBUT3BlcmF0b3Igb3A7CiAgICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwpAQCAtNzQsMjMgKzc0
LDMxIEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2wKICAgICAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyOwogICAgICAgICAgICAgVEZ1bmN0aW9uKiBmdW5jdGlv
bjsKICAgICAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW07Ci0gICAgICAgICAgICBUVHlwZUxpbmUg
dHlwZUxpbmU7Ci0gICAgICAgICAgICBUVHlwZUxpc3QqIHR5cGVMaXN0OworICAgICAgICAgICAg
VEZpZWxkKiBmaWVsZDsKKyAgICAgICAgICAgIFRGaWVsZExpc3QqIGZpZWxkTGlzdDsKICAgICAg
ICAgfTsKICAgICB9IGludGVybTsKIH0KIAogJXsKLWV4dGVybiBpbnQgeXlsZXgoWVlTVFlQRSog
eXlsdmFsX3BhcmFtLCB2b2lkKiB5eXNjYW5uZXIpOwotZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFy
c2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOworZXh0ZXJuIGludCB5eWxl
eChZWVNUWVBFKiB5eWx2YWwsIFlZTFRZUEUqIHl5bGxvYywgdm9pZCogeXlzY2FubmVyKTsKK3N0
YXRpYyB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBjaGFyKiByZWFzb24pOwogCi0jZGVmaW5lIEZSQUdfVkVSVF9PTkxZKFMsIEwpIHsg
IFwKLSAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9GUkFHTUVOVF9TSEFERVIgJiYg
IFwKLSAgICAgICAgY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7ICBc
Ci0gICAgICAgIGNvbnRleHQtPmVycm9yKEwsICIgc3VwcG9ydGVkIGluIHZlcnRleC9mcmFnbWVu
dCBzaGFkZXJzIG9ubHkgIiwgUyk7ICBcCi0gICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsgIFwK
LSAgICB9ICBcCi19CisjZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJocywgTikgICAg
ICAgICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGlmIChZWUlEKE4pKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChDdXJyZW50KS5maXJz
dF9maWxlID0gWVlSSFNMT0MoUmhzLCAxKS5maXJzdF9maWxlOyAgXAorICAgICAgICAoQ3VycmVu
dCkuZmlyc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMSkuZmlyc3RfbGluZTsgIFwKKyAgICAgICAg
KEN1cnJlbnQpLmxhc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgTikubGFzdF9maWxlOyAgICBcCisg
ICAgICAgIChDdXJyZW50KS5sYXN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIE4pLmxhc3RfbGluZTsg
ICAgXAorICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9maWxlID0gWVlSSFNM
T0MoUmhzLCAwKS5sYXN0X2ZpbGU7ICAgXAorICAgICAgICAoQ3VycmVudCkuZmlyc3RfbGluZSA9
IFlZUkhTTE9DKFJocywgMCkubGFzdF9saW5lOyAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3Rf
ZmlsZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9maWxlOyAgICBcCisgICAgICAgIChDdXJyZW50
KS5sYXN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsgICAgXAorICAgICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
fSB3aGlsZSAoMCkKIAogI2RlZmluZSBWRVJURVhfT05MWShTLCBMKSB7ICBcCiAgICAgaWYgKGNv
bnRleHQtPnNoYWRlclR5cGUgIT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXApAQCAtMTE2LDcgKzEy
NCw2IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGUKICV0b2tlbiA8
bGV4PiBTQU1QTEVSMkQgU0FNUExFUkNVQkUgU0FNUExFUl9FWFRFUk5BTF9PRVMgU0FNUExFUjJE
UkVDVAogCiAldG9rZW4gPGxleD4gSURFTlRJRklFUiBUWVBFX05BTUUgRkxPQVRDT05TVEFOVCBJ
TlRDT05TVEFOVCBCT09MQ09OU1RBTlQKLSV0b2tlbiA8bGV4PiBGSUVMRF9TRUxFQ1RJT04KICV0
b2tlbiA8bGV4PiBMRUZUX09QIFJJR0hUX09QCiAldG9rZW4gPGxleD4gSU5DX09QIERFQ19PUCBM
RV9PUCBHRV9PUCBFUV9PUCBORV9PUAogJXRva2VuIDxsZXg+IEFORF9PUCBPUl9PUCBYT1JfT1Ag
TVVMX0FTU0lHTiBESVZfQVNTSUdOIEFERF9BU1NJR04KQEAgLTEyNyw2ICsxMzQsNyBAQCBleHRl
cm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRlCiAldG9rZW4gPGxleD4gQ09NTUEg
Q09MT04gRVFVQUwgU0VNSUNPTE9OIEJBTkcgREFTSCBUSUxERSBQTFVTIFNUQVIgU0xBU0ggUEVS
Q0VOVAogJXRva2VuIDxsZXg+IExFRlRfQU5HTEUgUklHSFRfQU5HTEUgVkVSVElDQUxfQkFSIENB
UkVUIEFNUEVSU0FORCBRVUVTVElPTgogCisldHlwZSA8bGV4PiBpZGVudGlmaWVyCiAldHlwZSA8
aW50ZXJtPiBhc3NpZ25tZW50X29wZXJhdG9yIHVuYXJ5X29wZXJhdG9yCiAldHlwZSA8aW50ZXJt
LmludGVybVR5cGVkTm9kZT4gdmFyaWFibGVfaWRlbnRpZmllciBwcmltYXJ5X2V4cHJlc3Npb24g
cG9zdGZpeF9leHByZXNzaW9uCiAldHlwZSA8aW50ZXJtLmludGVybVR5cGVkTm9kZT4gZXhwcmVz
c2lvbiBpbnRlZ2VyX2V4cHJlc3Npb24gYXNzaWdubWVudF9leHByZXNzaW9uCkBAIC0xNTQsOCAr
MTYyLDggQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBjb250ZQogJXR5cGUg
PGludGVybS50eXBlPiB0eXBlX3F1YWxpZmllciBmdWxseV9zcGVjaWZpZWRfdHlwZSB0eXBlX3Nw
ZWNpZmllcgogJXR5cGUgPGludGVybS50eXBlPiB0eXBlX3NwZWNpZmllcl9ub19wcmVjIHR5cGVf
c3BlY2lmaWVyX25vbmFycmF5CiAldHlwZSA8aW50ZXJtLnR5cGU+IHN0cnVjdF9zcGVjaWZpZXIK
LSV0eXBlIDxpbnRlcm0udHlwZUxpbmU+IHN0cnVjdF9kZWNsYXJhdG9yCi0ldHlwZSA8aW50ZXJt
LnR5cGVMaXN0PiBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IHN0cnVjdF9kZWNsYXJhdGlvbiBzdHJ1
Y3RfZGVjbGFyYXRpb25fbGlzdAorJXR5cGUgPGludGVybS5maWVsZD4gc3RydWN0X2RlY2xhcmF0
b3IKKyV0eXBlIDxpbnRlcm0uZmllbGRMaXN0PiBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0IHN0cnVj
dF9kZWNsYXJhdGlvbiBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdAogJXR5cGUgPGludGVybS5mdW5j
dGlvbj4gZnVuY3Rpb25faGVhZGVyIGZ1bmN0aW9uX2RlY2xhcmF0b3IgZnVuY3Rpb25faWRlbnRp
ZmllcgogJXR5cGUgPGludGVybS5mdW5jdGlvbj4gZnVuY3Rpb25faGVhZGVyX3dpdGhfcGFyYW1l
dGVycyBmdW5jdGlvbl9jYWxsX2hlYWRlcgogJXR5cGUgPGludGVybT4gZnVuY3Rpb25fY2FsbF9o
ZWFkZXJfd2l0aF9wYXJhbWV0ZXJzIGZ1bmN0aW9uX2NhbGxfaGVhZGVyX25vX3BhcmFtZXRlcnMg
ZnVuY3Rpb25fY2FsbF9nZW5lcmljIGZ1bmN0aW9uX3Byb3RvdHlwZQpAQCAtMTY0LDEzICsxNzIs
MTcgQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBjb250ZQogJXN0YXJ0IHRy
YW5zbGF0aW9uX3VuaXQKICUlCiAKK2lkZW50aWZpZXIKKyAgICA6IElERU5USUZJRVIKKyAgICB8
IFRZUEVfTkFNRQorCiB2YXJpYWJsZV9pZGVudGlmaWVyCiAgICAgOiBJREVOVElGSUVSIHsKICAg
ICAgICAgLy8gVGhlIHN5bWJvbCB0YWJsZSBzZWFyY2ggd2FzIGRvbmUgaW4gdGhlIGxleGljYWwg
cGhhc2UKICAgICAgICAgY29uc3QgVFN5bWJvbCogc3ltYm9sID0gJDEuc3ltYm9sOwogICAgICAg
ICBjb25zdCBUVmFyaWFibGUqIHZhcmlhYmxlOwogICAgICAgICBpZiAoc3ltYm9sID09IDApIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1bmRlY2xhcmVkIGlkZW50aWZp
ZXIiLCAkMS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEs
ICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIiLCAkMS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgVFR5cGUgdHlwZShFYnRGbG9hdCwg
RWJwVW5kZWZpbmVkKTsKICAgICAgICAgICAgIFRWYXJpYWJsZSogZmFrZVZhcmlhYmxlID0gbmV3
IFRWYXJpYWJsZSgkMS5zdHJpbmcsIHR5cGUpOwpAQCAtMTc5LDEwICsxOTEsMTcgQEAgdmFyaWFi
bGVfaWRlbnRpZmllcgogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gVGhpcyBpZGVu
dGlmaWVyIGNhbiBvbmx5IGJlIGEgdmFyaWFibGUgdHlwZSBzeW1ib2wKICAgICAgICAgICAgIGlm
ICghIHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoJDEubGluZSwgInZhcmlhYmxlIGV4cGVjdGVkIiwgJDEuc3RyaW5nLT5jX3N0cigpKTsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgInZhcmlhYmxlIGV4cGVjdGVkIiwgJDEu
c3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIHZhcmlhYmxlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3ltYm9sKTsKKworICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKHZhcmlhYmxlLT5nZXROYW1lKCkpICYmCisgICAg
ICAgICAgICAgICAgIXZhcmlhYmxlLT5nZXRFeHRlbnNpb24oKS5lbXB0eSgpICYmCisgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjayhAMSwgdmFyaWFibGUtPmdldEV4
dGVuc2lvbigpKSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcs
IGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVyeSwgYW5kIHRoZSBwb29sCkBAIC0xOTEsMTEgKzIx
MCwxMiBAQCB2YXJpYWJsZV9pZGVudGlmaWVyCiAgICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlw
ZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ICkgewogICAgICAgICAgICAgQ29uc3RhbnRV
bmlvbiogY29uc3RBcnJheSA9IHZhcmlhYmxlLT5nZXRDb25zdFBvaW50ZXIoKTsKICAgICAgICAg
ICAgIFRUeXBlIHQodmFyaWFibGUtPmdldFR5cGUoKSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICQxLmxpbmUp
OworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bihjb25zdEFycmF5LCB0LCBAMSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJp
YWJsZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlLT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTIwOSwyMiArMjI5LDIyIEBAIHByaW1h
cnlfZXhwcmVzc2lvbgogICAgICAgICAvLyBjaGVjayBmb3Igb3ZlcmZsb3cgZm9yIGNvbnN0YW50
cwogICAgICAgICAvLwogICAgICAgICBpZiAoYWJzKCQxLmkpID49ICgxIDw8IDE2KSkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJm
bG93IiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICIgaW50ZWdlciBjb25z
dGFudCBvdmVyZmxvdyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50
VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdCgkMS5pKTsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAgfQogICAgIHwg
RkxPQVRDT05TVEFOVCB7CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KCQxLmYpOwot
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDEubGluZSk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAg
ICAgfQogICAgIHwgQk9PTENPTlNUQU5UIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29u
c3QoJDEuYik7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
ICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCBAMSk7CiAgICAgfQogICAgIHwgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIHsK
ICAgICAgICAgJCQgPSAkMjsKQEAgLTIzNiwxMDMgKzI1NiwyNyBAQCBwb3N0Zml4X2V4cHJlc3Np
b24KICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCBwb3N0Zml4X2V4cHJlc3Npb24gTEVG
VF9CUkFDS0VUIGludGVnZXJfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYg
KCEkMS0+aXNBcnJheSgpICYmICEkMS0+aXNNYXRyaXgoKSAmJiAhJDEtPmlzVmVjdG9yKCkpIHsK
LSAgICAgICAgICAgIGlmICgkMS0+Z2V0QXNTeW1ib2xOb2RlKCkpCi0gICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJh
eSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgJDEtPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2wo
KS5jX3N0cigpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigkMi5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgs
IG9yIHZlY3RvciAiLCAiZXhwcmVzc2lvbiIpOwotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigp
ID09IEV2cUNvbnN0ICYmICQzLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgewotICAgICAg
ICAgICAgaWYgKCQxLT5pc0FycmF5KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgYXJyYXlz
Ci0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdEFycmF5Tm9kZSgkMy0+Z2V0
QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpLCAk
MSwgJDIubGluZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc1ZlY3RvcigpKSB7ICAv
LyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCi0gICAgICAgICAgICAgICAgVFZlY3RvckZp
ZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7Ci0gICAgICAgICAg
ICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVu
aW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpOyAvLyBuZWVkIHRvIGRvIGl0IHRoaXMgd2F5
IGJlY2F1c2Ugdi54eSBzZW5kcyBmaWVsZHMgaW50ZWdlciBhcnJheQotICAgICAgICAgICAgICAg
ICQkID0gY29udGV4dC0+YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgJDEsICQyLmxpbmUpOwot
ICAgICAgICAgICAgfSBlbHNlIGlmICgkMS0+aXNNYXRyaXgoKSkgeyAvLyBjb25zdGFudCBmb2xk
aW5nIGZvciBtYXRyaWNlcwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RN
YXRyaXhOb2RlKCQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KS0+Z2V0SUNvbnN0KCksICQxLCAkMi5saW5lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmICgkMy0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsK
LSAgICAgICAgICAgICAgICBpZiAoKCQxLT5pc1ZlY3RvcigpIHx8ICQxLT5pc01hdHJpeCgpKSAm
JiAkMS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gJDMtPmdldEFzQ29uc3RhbnRVbmlv
bigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSAmJiAhJDEtPmlzQXJyYXko
KSApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3Ry
ZWFtOwotICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxkIHNlbGVj
dGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgZXh0cmFJbmZvLmNf
c3RyKCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCQxLT5pc0FycmF5KCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6
ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUo
KS5nZXRNYXhBcnJheVNpemUoKSA8PSAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9u
QXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNldE1heFNpemUoJDEtPmdldEFzU3ltYm9sTm9kZSgp
LCAkMS0+Z2V0VHlwZVBvaW50ZXIoKSwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgdHJ1ZSwgJDIubGluZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgkMS0+Z2V0QXNTeW1ib2xOb2RlKCksICQx
LT5nZXRUeXBlUG9pbnRlcigpLCAwLCBmYWxzZSwgJDIubGluZSkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggJDMtPmdl
dEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA+
PSAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdl
ICciIDw8ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+
Z2V0SUNvbnN0KCkgPDwgIiciOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIiwgIlsiLCBleHRyYUluZm8uY19z
dHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4
RGlyZWN0LCAkMSwgJDMsICQyLmxpbmUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCQxLT5pc0FycmF5KCkgJiYgJDEtPmdldFR5
cGUoKS5nZXRBcnJheVNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCQyLmxpbmUsICIiLCAiWyIsICJhcnJheSBtdXN0IGJlIHJlZGVjbGFyZWQgd2l0aCBh
IHNpemUgYmVmb3JlIGJlaW5nIGluZGV4ZWQgd2l0aCBhIHZhcmlhYmxlIik7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleElu
ZGlyZWN0LCAkMSwgJDMsICQyLmxpbmUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29u
c3QoMC4wZik7Ci0gICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCks
ICQyLmxpbmUpOwotICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc0FycmF5KCkpIHsKLSAgICAgICAg
ICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQotICAgICAgICAgICAgICAgICQkLT5z
ZXRUeXBlKFRUeXBlKCQxLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCksICQxLT5nZXRUeXBlKCkuZ2V0
VHlwZU5hbWUoKSkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICQkLT5zZXRU
eXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFUZW1w
b3JhcnksICQxLT5nZXROb21pbmFsU2l6ZSgpLCAkMS0+aXNNYXRyaXgoKSkpOwotCi0gICAgICAg
ICAgICBpZiAoJDEtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKLSAgICAg
ICAgICAgICAgICAkJC0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsK
LSAgICAgICAgfSBlbHNlIGlmICgkMS0+aXNNYXRyaXgoKSAmJiAkMS0+Z2V0VHlwZSgpLmdldFF1
YWxpZmllcigpID09IEV2cUNvbnN0KQotICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEt
PmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0LCAkMS0+Z2V0Tm9t
aW5hbFNpemUoKSkpOwotICAgICAgICBlbHNlIGlmICgkMS0+aXNNYXRyaXgoKSkKLSAgICAgICAg
ICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lv
bigpLCBFdnFUZW1wb3JhcnksICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2Ug
aWYgKCQxLT5pc1ZlY3RvcigpICYmICQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QpCi0gICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCks
ICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QpKTsKLSAgICAgICAgZWxzZSBpZiAoJDEtPmlz
VmVjdG9yKCkpCi0gICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBl
KCksICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5KSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICQkLT5zZXRUeXBlKCQxLT5nZXRUeXBlKCkpOworICAgICAgICAkJCA9IGNvbnRl
eHQtPmFkZEluZGV4RXhwcmVzc2lvbigkMSwgQDIsICQzKTsKICAgICB9CiAgICAgfCBmdW5jdGlv
bl9jYWxsIHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBwb3N0Zml4X2V4cHJlc3Np
b24gRE9UIEZJRUxEX1NFTEVDVElPTiB7CisgICAgfCBwb3N0Zml4X2V4cHJlc3Npb24gRE9UIGlk
ZW50aWZpZXIgewogICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoJDMubGluZSwgImNhbm5vdCBhcHBseSBkb3Qgb3BlcmF0b3IgdG8gYW4gYXJy
YXkiLCAiLiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJjYW5ub3QgYXBwbHkg
ZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS0+aXNWZWN0b3IoKSkgewogICAg
ICAgICAgICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0
LT5wYXJzZVZlY3RvckZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5hbFNpemUoKSwgZmll
bGRzLCAkMy5saW5lKSkgeworICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VWZWN0b3JG
aWVsZHMoKiQzLnN0cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgQDMpKSB7CiAg
ICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CiAgICAgICAgICAgICAgICAgZmllbGRzLm9m
ZnNldHNbMF0gPSAwOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkg
PT0gRXZxQ29uc3QpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9yIGZpZWxkcwotICAg
ICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgJDEs
ICQzLmxpbmUpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RWZWN0b3JO
b2RlKGZpZWxkcywgJDEsIEAzKTsKICAgICAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewogICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgICAg
ICQkID0gJDE7CkBAIC0zNDEsMTMgKzI4NSwxMyBAQCBwb3N0Zml4X2V4cHJlc3Npb24KICAgICAg
ICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+
Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0LCAoaW50KSAoKiQzLnN0cmluZykuc2l6ZSgpKSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFRTdHJpbmcgdmVjdG9yU3RyaW5n
ID0gKiQzLnN0cmluZzsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmllbGRzLCAkMy5saW5lKTsKLSAgICAgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BWZWN0b3JTd2l6
emxlLCAkMSwgaW5kZXgsICQyLmxpbmUpOworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCog
aW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVsZHMsIEAzKTsKKyAg
ICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BWZWN0
b3JTd2l6emxlLCAkMSwgaW5kZXgsIEAyKTsKICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShU
VHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5
LCAoaW50KSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSBpZiAoJDEtPmlzTWF0cml4KCkpIHsKICAgICAgICAgICAgIFRNYXRyaXhGaWVsZHMgZmll
bGRzOwotICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKiQzLnN0
cmluZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgJDMubGluZSkpIHsKKyAgICAgICAg
ICAgIGlmICghIGNvbnRleHQtPnBhcnNlTWF0cml4RmllbGRzKCokMy5zdHJpbmcsICQxLT5nZXRO
b21pbmFsU2l6ZSgpLCBmaWVsZHMsIEAzKSkgewogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9s
ZVJvdyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9sZUNvbCA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgIGZpZWxkcy5yb3cgPSAwOwpAQCAtMzU2LDg0ICszMDAsNzggQEAgcG9z
dGZpeF9leHByZXNzaW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChmaWVsZHMu
d2hvbGVSb3cgfHwgZmllbGRzLndob2xlQ29sKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoJDIubGluZSwgIiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1wbGVtZW50ZWQgeWV0Iiwg
Ii4iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiBub24tc2NhbGFyIGZp
ZWxkcyBub3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsKICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9
IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElD
b25zdCgwKTsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDMubGluZSk7Ci0gICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCBpbmRleCwg
JDIubGluZSk7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAzKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgJDEsIGluZGV4LCBAMik7
CiAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAk
MS0+Z2V0UHJlY2lzaW9uKCksRXZxVGVtcG9yYXJ5LCAkMS0+Z2V0Tm9taW5hbFNpemUoKSkpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlv
bkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0SUNvbnN0KGZpZWxkcy5jb2wgKiAkMS0+Z2V0Tm9taW5hbFNpemUoKSArIGZpZWxkcy5y
b3cpOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAkMy5saW5lKTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgJDEsIGluZGV4LCAkMi5s
aW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgQDMpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwgaW5kZXgsIEAyKTsKICAg
ICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5n
ZXRQcmVjaXNpb24oKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKCQxLT5n
ZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpIHsKICAgICAgICAgICAgIGJvb2wgZmllbGRGb3Vu
ZCA9IGZhbHNlOwotICAgICAgICAgICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSAkMS0+Z2V0
VHlwZSgpLmdldFN0cnVjdCgpOwotICAgICAgICAgICAgaWYgKGZpZWxkcyA9PSAwKSB7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInN0cnVjdHVyZSBoYXMgbm8gZmll
bGRzIiwgIkludGVybmFsIEVycm9yIik7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7
IGkgPCBmaWVsZHMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoKmZp
ZWxkcylbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKiQzLnN0cmluZykgewotICAgICAgICAg
ICAgICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3QgVEZpZWxk
TGlzdCYgZmllbGRzID0gJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWVs
ZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmllbGRzW2ldLT5uYW1lKCkg
PT0gKiQzLnN0cmluZykgeworICAgICAgICAgICAgICAgICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGlmIChmaWVsZEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0
VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0KCokMy5zdHJpbmcsICQxLCAkMi5saW5l
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlw
ZSgqKCpmaWVsZHMpW2ldLnR5cGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNo
YW5nZSB0aGUgcXVhbGlmaWVyIG9mIHRoZSByZXR1cm4gdHlwZSwgbm90IG9mIHRoZSBzdHJ1Y3R1
cmUgZmllbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyB0aGUgc3RydWN0dXJl
IGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1Y3R1cmVzLgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIo
RXZxQ29uc3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwotICAgICAgICAgICAgICAgICAgICAgICAgdW5p
b25BcnJheS0+c2V0SUNvbnN0KGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5
cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksICooKmZpZWxkcylbaV0udHlwZSwgJDMubGluZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdFN0
cnVjdCwgJDEsIGluZGV4LCAkMi5saW5lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICQkLT5z
ZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoZmllbGRGb3VuZCkgeworICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1
YWxpZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4
dC0+YWRkQ29uc3RTdHJ1Y3QoKiQzLnN0cmluZywgJDEsIEAyKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCQkID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICQkID0gJDE7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAkJC0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0eXBlLCBub3Qgb2YgdGhl
IHN0cnVjdHVyZSBmaWVsZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgdGhlIHN0cnVj
dHVyZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHZhcmlvdXMgc3RydWN0dXJlcy4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIo
RXZxQ29uc3QpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiBubyBzdWNo
IGZpZWxkIGluIHN0cnVjdHVyZSIsICQzLnN0cmluZy0+Y19zdHIoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgJCQgPSAkMTsK
KyAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25z
dGFudFVuaW9uWzFdOworICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3Qo
aSk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAqZmllbGRzW2ldLT50eXBl
KCksIEAzKTsKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICQxLCBpbmRleCwgQDIpOworICAgICAgICAg
ICAgICAgICAgICAkJC0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOwogICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoQDIsICIgbm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1cmUiLCAkMy5zdHJpbmctPmNfc3RyKCkp
OworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAk
JCA9ICQxOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoJDIubGluZSwgIiBmaWVsZCBzZWxlY3Rpb24gcmVxdWlyZXMgc3RydWN0dXJl
LCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIsICQzLnN0cmluZy0+Y19zdHIo
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIiBmaWVsZCBzZWxlY3Rpb24gcmVx
dWlyZXMgc3RydWN0dXJlLCB2ZWN0b3IsIG9yIG1hdHJpeCBvbiBsZWZ0IGhhbmQgc2lkZSIsICQz
LnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSAkMy5z
dHJpbmcsIGl0J3MgZnJvbSB0aGUgcG9vbAogICAgIH0KICAgICB8IHBvc3RmaXhfZXhwcmVzc2lv
biBJTkNfT1AgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygkMi5saW5l
LCAiKysiLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKEAyLCAi
KysiLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVtZW50LCAkMSwg
JDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdEluY3JlbWVudCwgJDEsIEAyLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT51bmFyeU9wRXJyb3IoJDIubGluZSwgIisrIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKEAyLCAiKysiLCAkMS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAkJCA9ICQxOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcG9zdGZpeF9leHByZXNzaW9u
IERFQ19PUCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCQyLmxpbmUs
ICItLSIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soQDIsICIt
LSIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNyZW1lbnQsICQxLCAk
Mi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0RGVjcmVtZW50LCAkMSwgQDIsIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnVuYXJ5T3BFcnJvcigkMi5saW5lLCAiLS0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDIsICItLSIsICQxLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTQ2MSwxOCArMzk5LDE4IEBAIGZ1bmN0aW9uX2Nh
bGwKICAgICAgICAgICAgIC8vIFRoZWlyIHBhcmFtZXRlcnMgd2lsbCBiZSB2ZXJpZmllZCBhbGdv
cml0aG1pY2FsbHkuCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgVFR5cGUgdHlwZShFYnRW
b2lkLCBFYnBVbmRlZmluZWQpOyAgLy8gdXNlIHRoaXMgdG8gZ2V0IHRoZSB0eXBlIGJhY2sKLSAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1Y3RvckVycm9yQ2hlY2soJDEubGluZSwgJDEu
aW50ZXJtTm9kZSwgKmZuQ2FsbCwgb3AsICZ0eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVjayhAMSwgJDEuaW50ZXJtTm9kZSwgKmZuQ2FsbCwgb3As
ICZ0eXBlKSkgewogICAgICAgICAgICAgICAgICQkID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAvLyBJdCdzIGEgY29uc3RydWN0
b3IsIG9mIHR5cGUgJ3R5cGUnLgogICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAg
JCQgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvcigkMS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZu
Q2FsbCwgJDEubGluZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdHJ1
Y3RvcigkMS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgQDEpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5z
ZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwgJDEubGluZSk7CisgICAgICAgICAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoMCwgb3AsIEAxKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICQkLT5zZXRUeXBlKHR5cGUpOwogICAgICAgICB9
IGVsc2UgewpAQCAtNDgxLDEzICs0MTksMTMgQEAgZnVuY3Rpb25fY2FsbAogICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgIGNvbnN0IFRGdW5jdGlvbiogZm5DYW5kaWRhdGU7CiAgICAgICAgICAg
ICBib29sIGJ1aWx0SW47Ci0gICAgICAgICAgICBmbkNhbmRpZGF0ZSA9IGNvbnRleHQtPmZpbmRG
dW5jdGlvbigkMS5saW5lLCBmbkNhbGwsICZidWlsdEluKTsKKyAgICAgICAgICAgIGZuQ2FuZGlk
YXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKEAxLCBmbkNhbGwsICZidWlsdEluKTsKICAgICAg
ICAgICAgIGlmIChmbkNhbmRpZGF0ZSkgewogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAg
ICAgICAgLy8gQSBkZWNsYXJlZCBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAvLwogICAgICAg
ICAgICAgICAgIGlmIChidWlsdEluICYmICFmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkuZW1w
dHkoKSAmJgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNr
KCQxLmxpbmUsIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjayhAMSwgZm5DYW5kaWRhdGUtPmdldEV4
dGVuc2lvbigpKSkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG9wID0gZm5DYW5kaWRhdGUtPmdldEJ1
aWx0SW5PcCgpOwpAQCAtNDk5LDcgKzQzNyw3IEBAIGZ1bmN0aW9uX2NhbGwKICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmVhdCBpdCBsaWtl
IGEgYnVpbHQtaW4gdW5hcnkgb3BlcmF0b3IuCiAgICAgICAgICAgICAgICAgICAgICAgICAvLwot
ICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5h
cnlNYXRoKG9wLCAkMS5pbnRlcm1Ob2RlLCAwLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1h
dGgob3AsICQxLmludGVybU5vZGUsIEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJidWlsdCBpbiB1bmFyeSBvcGVyYXRvciBm
dW5jdGlvbi4gIFR5cGU6ICIgPDwgc3RhdGljX2Nhc3Q8VEludGVybVR5cGVkKj4oJDEuaW50ZXJt
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCk7CkBAIC01MDgsMTIgKzQ0NiwxMiBAQCBmdW5jdGlv
bl9jYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWVlFUlJPUjsKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJh
dG9yKCQxLmludGVybUFnZ3JlZ2F0ZSwgb3AsICQxLmxpbmUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEu
aW50ZXJtQWdncmVnYXRlLCBvcCwgQDEpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHJlYWwg
ZnVuY3Rpb24gY2FsbAogCi0gICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQxLmludGVybUFnZ3JlZ2F0ZSwgRU9wRnVuY3Rp
b25DYWxsLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBFT3BGdW5j
dGlvbkNhbGwsIEAxKTsKICAgICAgICAgICAgICAgICAgICAgJCQtPnNldFR5cGUoZm5DYW5kaWRh
dGUtPmdldFJldHVyblR5cGUoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBo
b3cgd2Uga25vdyB3aGV0aGVyIHRoZSBnaXZlbiBmdW5jdGlvbiBpcyBhIGJ1aWx0SW4gZnVuY3Rp
b24gb3IgYSB1c2VyIGRlZmluZWQgZnVuY3Rpb24KQEAgLTU0MCw3ICs0NzgsNyBAQCBmdW5jdGlv
bl9jYWxsCiAgICAgICAgICAgICAgICAgLy8gUHV0IG9uIGEgZHVtbXkgbm9kZSBmb3IgZXJyb3Ig
cmVjb3ZlcnkKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0
KDAuMGYpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZx
Q29uc3QpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUNvbnN0KSwgQDEpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTUzLDcgKzQ5MSw3IEBAIGZ1bmN0aW9u
X2NhbGxfb3JfbWV0aG9kCiAgICAgICAgICQkID0gJDE7CiAgICAgfQogICAgIHwgcG9zdGZpeF9l
eHByZXNzaW9uIERPVCBmdW5jdGlvbl9jYWxsX2dlbmVyaWMgewotICAgICAgICBjb250ZXh0LT5l
cnJvcigkMy5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIsICIiKTsKKyAgICAgICAg
Y29udGV4dC0+ZXJyb3IoQDMsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkIiwgIiIpOwogICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICQkID0gJDM7CiAgICAgfQpAQCAtNTYy
LDExICs1MDAsOSBAQCBmdW5jdGlvbl9jYWxsX29yX21ldGhvZAogZnVuY3Rpb25fY2FsbF9nZW5l
cmljCiAgICAgOiBmdW5jdGlvbl9jYWxsX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMgUklHSFRfUEFS
RU4gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICAkJC5saW5lID0gJDIubGluZTsKICAgICB9
CiAgICAgfCBmdW5jdGlvbl9jYWxsX2hlYWRlcl9ub19wYXJhbWV0ZXJzIFJJR0hUX1BBUkVOIHsK
ICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxpbmU7CiAgICAgfQogICAg
IDsKIApAQCAtNTkyLDcgKzUyOCw3IEBAIGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1l
dGVycwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5cGUoJDMtPmdldFR5
cGUoKSkgfTsKICAgICAgICAgJDEuZnVuY3Rpb24tPmFkZFBhcmFtZXRlcihwYXJhbSk7CiAgICAg
ICAgICQkLmZ1bmN0aW9uID0gJDEuZnVuY3Rpb247Ci0gICAgICAgICQkLmludGVybU5vZGUgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCAkMywgJDIu
bGluZSk7CisgICAgICAgICQkLmludGVybU5vZGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jv
d0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCAkMywgQDIpOwogICAgIH0KICAgICA7CiAKQEAgLTYx
NywzOSArNTUzLDM5IEBAIGZ1bmN0aW9uX2lkZW50aWZpZXIKICAgICAgICAgICAgIGNhc2UgRWJ0
RmxvYXQ6CiAgICAgICAgICAgICAgICAgaWYgKCQxLm1hdHJpeCkgewogICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2goJDEuc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0g
RU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IG9w
ID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6
IG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDQ6IG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKCQx
LnNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cCA9IEVPcENvbnN0cnVjdFZlYzI7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAz
OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZl
YzM7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7ICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OyBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdFZlYzI7ICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdFZlYzM7ICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7ICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgogICAgICAgICAgICAgICAg
IHN3aXRjaCgkMS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RJbnQ7ICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzIiLCAk
MS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSAzOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzMiLCAkMS5saW5lKTsgb3AgPSBFT3BD
b25zdHJ1Y3RJVmVjMzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiAgICAgICBGUkFH
X1ZFUlRfT05MWSgiaXZlYzQiLCAkMS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjNDsgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEludDsgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0SVZlYzI7IGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdElWZWM0OyBicmVhazsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIEVidEJvb2w6CiAgICAgICAgICAgICAgICAgc3dpdGNoKCQxLnNpemUpIHsKLSAgICAgICAg
ICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cCA9IEVPcENvbnN0cnVjdEJvb2w7ICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6ICAg
ICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMiIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJW
ZWMyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgIEZSQUdfVkVSVF9PTkxZ
KCJidmVjMyIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMzOyBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjNCIsICQxLmxpbmUp
OyBvcCA9IEVPcENvbnN0cnVjdEJWZWM0OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE6
IG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjog
b3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBv
cCA9IEVPcENvbnN0cnVjdEJWZWMzOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6IG9w
ID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKG9wID09IEVPcE51bGwpIHsKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigkMS5saW5lLCAiY2Fubm90IGNvbnN0cnVjdCB0aGlzIHR5cGUiLCBnZXRCYXNp
Y1N0cmluZygkMS50eXBlKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJj
YW5ub3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5nKCQxLnR5cGUpKTsKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgJDEudHlw
ZSA9IEVidEZsb2F0OwogICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7CkBA
IC02NjEsMTQgKzU5Nyw3IEBAIGZ1bmN0aW9uX2lkZW50aWZpZXIKICAgICAgICAgJCQgPSBmdW5j
dGlvbjsKICAgICB9CiAgICAgfCBJREVOVElGSUVSIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJl
c2VydmVkRXJyb3JDaGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQp
OwotICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigkMS5zdHJpbmcs
IHR5cGUpOwotICAgICAgICAkJCA9IGZ1bmN0aW9uOwotICAgIH0KLSAgICB8IEZJRUxEX1NFTEVD
VElPTiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDEubGluZSwg
KiQxLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEs
ICokMS5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBU
VHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgIFRGdW5jdGlvbiAqZnVu
Y3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCQxLnN0cmluZywgdHlwZSk7CkBAIC02ODEsMjggKzYxMCwy
OCBAQCB1bmFyeV9leHByZXNzaW9uCiAgICAgICAgICQkID0gJDE7CiAgICAgfQogICAgIHwgSU5D
X09QIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JD
aGVjaygkMS5saW5lLCAiKysiLCAkMikpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJv
ckNoZWNrKEAxLCAiKysiLCAkMikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVJbmNy
ZW1lbnQsICQyLCAkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVJbmNyZW1lbnQsICQyLCBA
MSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsICIrKyIsICQyLT5nZXRDb21wbGV0
ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihAMSwgIisrIiwg
JDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgfQogICAgIH0KICAgICB8IERFQ19PUCB1
bmFyeV9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2so
JDEubGluZSwgIi0tIiwgJDIpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVj
ayhAMSwgIi0tIiwgJDIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50
LCAkMiwgJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAkMiwgQDEsIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMS5saW5lLCAiLS0iLCAkMi0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDEsICItLSIsICQyLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICQkID0gJDI7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCB1bmFyeV9vcGVyYXRv
ciB1bmFyeV9leHByZXNzaW9uIHsKICAgICAgICAgaWYgKCQxLm9wICE9IEVPcE51bGwpIHsKLSAg
ICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgkMS5vcCwg
JDIsICQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgkMS5vcCwgJDIsIEAxLCBjb250ZXh0LT5z
eW1ib2xUYWJsZSk7CiAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgewogICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGVycm9yT3AgPSAiIjsKICAgICAgICAgICAgICAgICBzd2l0Y2goJDEub3Ap
IHsKQEAgLTcxMCw3ICs2MzksNyBAQCB1bmFyeV9leHByZXNzaW9uCiAgICAgICAgICAgICAgICAg
Y2FzZSBFT3BMb2dpY2FsTm90OiBlcnJvck9wID0gIiEiOyBicmVhazsKICAgICAgICAgICAgICAg
ICBkZWZhdWx0OiBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsIGVycm9yT3AsICQyLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDEsIGVycm9yT3As
ICQyLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgICAgIH0KQEAgLTcyMSwy
OCArNjUwLDI2IEBAIHVuYXJ5X2V4cHJlc3Npb24KIC8vIEdyYW1tYXIgTm90ZTogIE5vIHRyYWRp
dGlvbmFsIHN0eWxlIHR5cGUgY2FzdHMuCiAKIHVuYXJ5X29wZXJhdG9yCi0gICAgOiBQTFVTICB7
ICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcE51bGw7IH0KLSAgICB8IERBU0ggIHsgJCQu
bGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTmVnYXRpdmU7IH0KLSAgICB8IEJBTkcgIHsgJCQu
bGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTG9naWNhbE5vdDsgfQorICAgIDogUExVUyAgeyAk
JC5vcCA9IEVPcE51bGw7IH0KKyAgICB8IERBU0ggIHsgJCQub3AgPSBFT3BOZWdhdGl2ZTsgfQor
ICAgIHwgQkFORyAgeyAkJC5vcCA9IEVPcExvZ2ljYWxOb3Q7IH0KICAgICA7CiAvLyBHcmFtbWFy
IE5vdGU6ICBObyAnKicgb3IgJyYnIHVuYXJ5IG9wcy4gIFBvaW50ZXJzIGFyZSBub3Qgc3VwcG9y
dGVkLgogCiBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uCiAgICAgOiB1bmFyeV9leHByZXNzaW9u
IHsgJCQgPSAkMTsgfQogICAgIHwgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiBTVEFSIHVuYXJ5
X2V4cHJlc3Npb24gewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgiKiIsICQyLmxpbmUpOwotICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE11bCwgJDEs
ICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAkMSwgJDMsIEAyLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIqIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCks
ICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoQDIsICIqIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQk
ID0gJDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9u
IFNMQVNIIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgiLyIsICQy
LmxpbmUpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRo
KEVPcERpdiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRGl2LCAkMSwgJDMs
IEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIvIiwgJDEtPmdldENvbXBs
ZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoQDIsICIvIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTc1MiwxNyArNjc5LDE3IEBAIG11bHRp
cGxpY2F0aXZlX2V4cHJlc3Npb24KIGFkZGl0aXZlX2V4cHJlc3Npb24KICAgICA6IG11bHRpcGxp
Y2F0aXZlX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBhZGRpdGl2ZV9leHByZXNzaW9u
IFBMVVMgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wQWRkLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRl
eHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QmluYXJ5TWF0aChFT3BBZGQsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAg
ICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3Io
JDIubGluZSwgIisiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3Ry
aW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIisiLCAkMS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQog
ICAgIH0KICAgICB8IGFkZGl0aXZlX2V4cHJlc3Npb24gREFTSCBtdWx0aXBsaWNhdGl2ZV9leHBy
ZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0
aChFT3BTdWIsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcFN1YiwgJDEsICQz
LCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAg
ICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiLSIsICQxLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiLSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CkBAIC03NzYsNDMgKzcwMyw0MyBAQCBzaGlm
dF9leHByZXNzaW9uCiByZWxhdGlvbmFsX2V4cHJlc3Npb24KICAgICA6IHNoaWZ0X2V4cHJlc3Np
b24geyAkJCA9ICQxOyB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Npb24gTEVGVF9BTkdMRSBz
aGlmdF9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QmluYXJ5TWF0aChFT3BMZXNzVGhhbiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wTGVzc1RoYW4sICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAg
aWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGlu
ZSwgIjwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkp
OworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIjwiLCAkMS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9
IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0
KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25z
dCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9leHByZXNz
aW9uIFJJR0hUX0FOR0xFIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgJDEsICQzLCAkMi5s
aW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW4sICQxLCAkMywgQDIsIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwg
JDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BF
cnJvcihAMiwgIj4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3Ry
aW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29u
c3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAg
ICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQog
ICAgIHwgcmVsYXRpb25hbF9leHByZXNzaW9uIExFX09QIHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhh
bkVxdWFsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbkVxdWFs
LCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI8PSIsICQx
LT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiPD0iLCAkMS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25z
dGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsK
LSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxp
bmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
QDIpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgcmVsYXRpb25hbF9leHByZXNzaW9uIEdFX09Q
IHNoaWZ0X2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRl
eHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbkVxdWFsLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5i
aW5hcnlPcEVycm9yKCQyLmxpbmUsICI+PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9y
KEAyLCAiPj0iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5n
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3Rh
bnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAg
dW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAg
IDsKQEAgLTgyMCwyMyArNzQ3LDIzIEBAIHJlbGF0aW9uYWxfZXhwcmVzc2lvbgogZXF1YWxpdHlf
ZXhwcmVzc2lvbgogICAgIDogcmVsYXRpb25hbF9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAg
IHwgZXF1YWxpdHlfZXhwcmVzc2lvbiBFUV9PUCByZWxhdGlvbmFsX2V4cHJlc3Npb24gIHsKLSAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BFcXVhbCwg
JDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1YWwsICQxLCAkMywgQDIsIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj09IiwgJDEtPmdldENvbXBsZXRlU3Ry
aW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoQDIsICI9PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAg
ICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgfCBlcXVhbGl0eV9leHByZXNzaW9uIE5FX09QIHJlbGF0aW9uYWxfZXhwcmVz
c2lvbiB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wTm90RXF1YWwsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5vdEVxdWFs
LCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIhPSIsICQx
LT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiIT0iLCAkMS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25z
dGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsK
LSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxp
bmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
QDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg1NiwxMyArNzgzLDEzIEBAIGluY2x1
c2l2ZV9vcl9leHByZXNzaW9uCiBsb2dpY2FsX2FuZF9leHByZXNzaW9uCiAgICAgOiBpbmNsdXNp
dmVfb3JfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxvZ2ljYWxfYW5kX2V4cHJlc3Np
b24gQU5EX09QIGluY2x1c2l2ZV9vcl9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5kLCAkMSwgJDMsICQyLmxp
bmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5kLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5z
eW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICImJiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAk
My0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVy
cm9yKEAyLCAiJiYiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3Ry
aW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29u
c3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAg
ICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQog
ICAgIDsKQEAgLTg3MCwxMyArNzk3LDEzIEBAIGxvZ2ljYWxfYW5kX2V4cHJlc3Npb24KIGxvZ2lj
YWxfeG9yX2V4cHJlc3Npb24KICAgICA6IGxvZ2ljYWxfYW5kX2V4cHJlc3Npb24geyAkJCA9ICQx
OyB9CiAgICAgfCBsb2dpY2FsX3hvcl9leHByZXNzaW9uIFhPUl9PUCBsb2dpY2FsX2FuZF9leHBy
ZXNzaW9uICB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1h
dGgoRU9wTG9naWNhbFhvciwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9n
aWNhbFhvciwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAo
JCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAi
Xl4iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwor
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIl5eIiwgJDEtPmdldENvbXBs
ZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBu
ZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChm
YWxzZSk7Ci0gICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCAkMi5saW5lKTsKKyAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksIEAyKTsKICAgICAgICAgfQogICAgIH0KICAgICA7CkBAIC04ODQsMTMgKzgxMSwxMyBA
QCBsb2dpY2FsX3hvcl9leHByZXNzaW9uCiBsb2dpY2FsX29yX2V4cHJlc3Npb24KICAgICA6IGxv
Z2ljYWxfeG9yX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBsb2dpY2FsX29yX2V4cHJl
c3Npb24gT1JfT1AgbG9naWNhbF94b3JfZXhwcmVzc2lvbiAgewotICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxPciwgJDEsICQzLCAkMi5s
aW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5z
eW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICJ8fCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAk
My0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVy
cm9yKEAyLCAifHwiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3Ry
aW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29u
c3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAg
ICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQog
ICAgIDsKQEAgLTg5OCwxNSArODI1LDE1IEBAIGxvZ2ljYWxfb3JfZXhwcmVzc2lvbgogY29uZGl0
aW9uYWxfZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF9vcl9leHByZXNzaW9uIHsgJCQgPSAkMTsg
fQogICAgIHwgbG9naWNhbF9vcl9leHByZXNzaW9uIFFVRVNUSU9OIGV4cHJlc3Npb24gQ09MT04g
YXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hl
Y2soJDIubGluZSwgJDEpKQorICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjayhAMiwg
JDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigkMSwgJDMsICQ1LCAkMi5saW5lKTsKKyAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCQxLCAkMywgJDUs
IEAyKTsKICAgICAgICAgaWYgKCQzLT5nZXRUeXBlKCkgIT0gJDUtPmdldFR5cGUoKSkKICAgICAg
ICAgICAgICQkID0gMDsKIAogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29u
dGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiOiIsICQzLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAkNS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlP
cEVycm9yKEAyLCAiOiIsICQzLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkNS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAk
JCA9ICQ1OwogICAgICAgICB9CkBAIC05MTYsMTEgKzg0MywxMSBAQCBjb25kaXRpb25hbF9leHBy
ZXNzaW9uCiBhc3NpZ25tZW50X2V4cHJlc3Npb24KICAgICA6IGNvbmRpdGlvbmFsX2V4cHJlc3Np
b24geyAkJCA9ICQxOyB9CiAgICAgfCB1bmFyeV9leHByZXNzaW9uIGFzc2lnbm1lbnRfb3BlcmF0
b3IgYXNzaWdubWVudF9leHByZXNzaW9uIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVy
cm9yQ2hlY2soJDIubGluZSwgImFzc2lnbiIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxW
YWx1ZUVycm9yQ2hlY2soQDIsICJhc3NpZ24iLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEFzc2lnbigk
Mi5vcCwgJDEsICQzLCAkMi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQXNzaWduKCQyLm9wLCAkMSwgJDMsIEAyKTsKICAgICAgICAgaWYgKCQkID09IDApIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9yKCQyLmxpbmUsICJhc3NpZ24iLCAkMS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+YXNzaWduRXJyb3IoQDIsICJhc3NpZ24iLCAkMS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpAQCAtOTI4LDExICs4NTUs
MTEgQEAgYXNzaWdubWVudF9leHByZXNzaW9uCiAgICAgOwogCiBhc3NpZ25tZW50X29wZXJhdG9y
Ci0gICAgOiBFUVVBTCAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcEFzc2lnbjsgfQotICAgIHwgTVVMX0FTU0lH
TiAgIHsgRlJBR19WRVJUX09OTFkoIio9IiwgJDEubGluZSk7ICAgICAkJC5saW5lID0gJDEubGlu
ZTsgJCQub3AgPSBFT3BNdWxBc3NpZ247IH0KLSAgICB8IERJVl9BU1NJR04gICB7IEZSQUdfVkVS
VF9PTkxZKCIvPSIsICQxLmxpbmUpOyAgICAgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9w
RGl2QXNzaWduOyB9Ci0gICAgfCBBRERfQVNTSUdOICAgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcEFkZEFzc2lnbjsgfQot
ICAgIHwgU1VCX0FTU0lHTiAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
JC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BTdWJBc3NpZ247IH0KKyAgICA6IEVRVUFMICAg
ICAgICB7ICQkLm9wID0gRU9wQXNzaWduOyB9CisgICAgfCBNVUxfQVNTSUdOICAgeyAkJC5vcCA9
IEVPcE11bEFzc2lnbjsgfQorICAgIHwgRElWX0FTU0lHTiAgIHsgJCQub3AgPSBFT3BEaXZBc3Np
Z247IH0KKyAgICB8IEFERF9BU1NJR04gICB7ICQkLm9wID0gRU9wQWRkQXNzaWduOyB9CisgICAg
fCBTVUJfQVNTSUdOICAgeyAkJC5vcCA9IEVPcFN1YkFzc2lnbjsgfQogICAgIDsKIAogZXhwcmVz
c2lvbgpAQCAtOTQwLDkgKzg2Nyw5IEBAIGV4cHJlc3Npb24KICAgICAgICAgJCQgPSAkMTsKICAg
ICB9CiAgICAgfCBleHByZXNzaW9uIENPTU1BIGFzc2lnbm1lbnRfZXhwcmVzc2lvbiB7Ci0gICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCQxLCAkMywgJDIubGluZSk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCQxLCAkMywgQDIp
OwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BF
cnJvcigkMi5saW5lLCAiLCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiLCIs
ICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQzOwogICAgICAg
ICB9CkBAIC05NzAsMTMgKzg5NywxMyBAQCBkZWNsYXJhdGlvbgogICAgICAgICAgICAgY29uc3Qg
VFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJhbShpKTsKICAgICAgICAgICAgIGlm
IChwYXJhbS5uYW1lICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVFZhcmlh
YmxlICp2YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOwor
ICAgICAgICAgICAgICAgIFRWYXJpYWJsZSB2YXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlw
ZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS0+Z2V0TmFt
ZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5lKSwgJDEubGluZSk7CisgICAgICAgICAg
ICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJv
dG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLmdldFVuaXF1
ZUlkKCksIHZhcmlhYmxlLmdldE5hbWUoKSwgdmFyaWFibGUuZ2V0VHlwZSgpLCBAMSksIEAxKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShw
cm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50
eXBlLCAkMS5saW5lKSwgJDEubGluZSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgQDEpLCBAMSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC05OTIsMTEgKzkxOSwxMSBAQCBkZWNsYXJh
dGlvbgogICAgIH0KICAgICB8IFBSRUNJU0lPTiBwcmVjaXNpb25fcXVhbGlmaWVyIHR5cGVfc3Bl
Y2lmaWVyX25vX3ByZWMgU0VNSUNPTE9OIHsKICAgICAgICAgaWYgKCgkMiA9PSBFYnBIaWdoKSAm
JiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIpICYmICFjb250ZXh0
LT5mcmFnbWVudFByZWNpc2lvbkhpZ2gpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQx
LmxpbmUsICJwcmVjaXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAi
aGlnaHAiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAicHJlY2lzaW9uIGlzIG5v
dCBzdXBwb3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVyIiwgImhpZ2hwIik7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFjb250ZXh0LT5zeW1i
b2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKCAkMywgJDIgKSkgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoJDEubGluZSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBmb3IgZGVmYXVsdCBw
cmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlwZSkpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoQDEsICJpbGxlZ2FsIHR5cGUgYXJndW1lbnQgZm9yIGRlZmF1bHQg
cHJlY2lzaW9uIHF1YWxpZmllciIsIGdldEJhc2ljU3RyaW5nKCQzLnR5cGUpKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAkJCA9IDA7CkBAIC0x
MDE2LDI0ICs5NDMsNDEgQEAgZnVuY3Rpb25fcHJvdG90eXBlCiAgICAgICAgIFRGdW5jdGlvbiog
cHJldkRlYyA9IHN0YXRpY19jYXN0PFRGdW5jdGlvbio+KGNvbnRleHQtPnN5bWJvbFRhYmxlLmZp
bmQoJDEtPmdldE1hbmdsZWROYW1lKCkpKTsKICAgICAgICAgaWYgKHByZXZEZWMpIHsKICAgICAg
ICAgICAgIGlmIChwcmV2RGVjLT5nZXRSZXR1cm5UeXBlKCkgIT0gJDEtPmdldFJldHVyblR5cGUo
KSkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJvdmVybG9hZGVk
IGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUiLCAkMS0+Z2V0UmV0dXJu
VHlwZSgpLmdldEJhc2ljU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KEAyLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBl
IiwgJDEtPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHByZXZEZWMtPmdldFBhcmFtQ291bnQoKTsgKytpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHByZXZEZWMtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllcigpICE9
ICQxLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXIoKSkgewotICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBo
YXZlIHRoZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgJDEtPmdldFBhcmFtKGkpLnR5cGUt
PmdldFF1YWxpZmllclN0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoQDIsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVy
IHF1YWxpZmllcnMiLCAkMS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkp
OwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8KKyAgICAgICAgLy8g
Q2hlY2sgZm9yIHByZXZpb3VzbHkgZGVjbGFyZWQgdmFyaWFibGVzIHVzaW5nIHRoZSBzYW1lIG5h
bWUuCisgICAgICAgIC8vCisgICAgICAgIFRTeW1ib2wgKnByZXZTeW0gPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5maW5kKCQxLT5nZXROYW1lKCkpOworICAgICAgICBpZiAocHJldlN5bSkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKCFwcmV2U3ltLT5pc0Z1bmN0aW9uKCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJyZWRlZmluaXRpb24iLCAk
MS0+Z2V0TmFtZSgpLmNfc3RyKCksICJmdW5jdGlvbiIpOworICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vIEluc2VydCB0aGUgdW5tYW5nbGVkIG5hbWUgdG8gZGV0
ZWN0IHBvdGVudGlhbCBmdXR1cmUgcmVkZWZpbml0aW9uIGFzIGEgdmFyaWFibGUuCisgICAgICAg
ICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5nZXRPdXRlckxldmVsKCktPmluc2VydCgkMS0+Z2V0
TmFtZSgpLCAqJDEpOworICAgICAgICB9CisKKyAgICAgICAgLy8KICAgICAgICAgLy8gSWYgdGhp
cyBpcyBhIHJlZGVjbGFyYXRpb24sIGl0IGNvdWxkIGFsc28gYmUgYSBkZWZpbml0aW9uLAogICAg
ICAgICAvLyBpbiB3aGljaCBjYXNlLCB3ZSB3YW50IHRvIHVzZSB0aGUgdmFyaWFibGUgbmFtZXMg
ZnJvbSB0aGlzIG9uZSwgYW5kIG5vdCB0aGUgb25lIHRoYXQncwogICAgICAgICAvLyBiZWluZyBy
ZWRlY2xhcmVkLiAgU28sIHBhc3MgYmFjayB1cCB0aGlzIGRlY2xhcmF0aW9uLCBub3QgdGhlIG9u
ZSBpbiB0aGUgc3ltYm9sIHRhYmxlLgogICAgICAgICAvLwogICAgICAgICAkJC5mdW5jdGlvbiA9
ICQxOwotICAgICAgICAkJC5saW5lID0gJDIubGluZTsKIAogICAgICAgICAvLyBXZSdyZSBhdCB0
aGUgaW5uZXIgc2NvcGUgbGV2ZWwgb2YgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzIGFuZCBib2R5
IHN0YXRlbWVudC4KICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUgdG8gdGhl
IHN1cnJvdW5kaW5nIHNjb3BlIGluc3RlYWQuCkBAIC0xMDY5LDcgKzEwMTMsNyBAQCBmdW5jdGlv
bl9oZWFkZXJfd2l0aF9wYXJhbWV0ZXJzCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8g
VGhpcyBwYXJhbWV0ZXIgPiBmaXJzdCBpcyB2b2lkCiAgICAgICAgICAgICAvLwotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4
Y2VwdCBmb3IgJyh2b2lkKSciLCAidm9pZCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDIsICJjYW5ub3QgYmUgYW4gYXJndW1lbnQgdHlwZSBleGNlcHQgZm9yICcodm9pZCknIiwgInZv
aWQiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIGRlbGV0
ZSAkMy5wYXJhbS50eXBlOwogICAgICAgICB9IGVsc2UgewpAQCAtMTA4MywxMSArMTAyNywxMSBA
QCBmdW5jdGlvbl9oZWFkZXJfd2l0aF9wYXJhbWV0ZXJzCiBmdW5jdGlvbl9oZWFkZXIKICAgICA6
IGZ1bGx5X3NwZWNpZmllZF90eXBlIElERU5USUZJRVIgTEVGVF9QQVJFTiB7CiAgICAgICAgIGlm
ICgkMS5xdWFsaWZpZXIgIT0gRXZxR2xvYmFsICYmICQxLnF1YWxpZmllciAhPSBFdnFUZW1wb3Jh
cnkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJubyBxdWFsaWZpZXJz
IGFsbG93ZWQgZm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFs
aWZpZXIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAibm8gcXVhbGlmaWVycyBh
bGxvd2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlm
aWVyKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAg
ICAgLy8gbWFrZSBzdXJlIGEgc2FtcGxlciBpcyBub3QgaW52b2x2ZWQgYXMgd2VsbC4uLgotICAg
ICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMi5saW5lLCAkMSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAyLCAkMSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBm
dW5jdGlvbiBhcyBhIHByb3RvdHlwZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9y
dCByZWN1cnNpb24pCkBAIC0xMTAyLDMzICsxMDQ2LDMxIEBAIGZ1bmN0aW9uX2hlYWRlcgogCiBw
YXJhbWV0ZXJfZGVjbGFyYXRvcgogICAgIC8vIFR5cGUgKyBuYW1lCi0gICAgOiB0eXBlX3NwZWNp
ZmllciBJREVOVElGSUVSIHsKKyAgICA6IHR5cGVfc3BlY2lmaWVyIGlkZW50aWZpZXIgewogICAg
ICAgICBpZiAoJDEudHlwZSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigkMi5saW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCAkMi5zdHJpbmctPmNfc3Ry
KCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJpbGxlZ2FsIHVzZSBvZiB0eXBl
ICd2b2lkJyIsICQyLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVj
aygkMi5saW5lLCAqJDIuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJy
b3JDaGVjayhAMiwgKiQyLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7JDIuc3RyaW5nLCBuZXcgVFR5cGUoJDEpfTsK
LSAgICAgICAgJCQubGluZSA9ICQyLmxpbmU7CiAgICAgICAgICQkLnBhcmFtID0gcGFyYW07CiAg
ICAgfQotICAgIHwgdHlwZV9zcGVjaWZpZXIgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3Rh
bnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKKyAgICB8IHR5cGVfc3BlY2lmaWVyIGlkZW50
aWZpZXIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAg
ICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIG1ha2UgYW4gYXJyYXkgb3V0IG9mIHRoaXMgdHlw
ZQotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMy5saW5lLCAkMSkp
CisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAzLCAkMSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2Vy
dmVkRXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PnJlc2VydmVkRXJyb3JDaGVjayhAMiwgKiQyLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAKICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVNpemVFcnJvckNoZWNrKCQzLmxpbmUsICQ0LCBzaXplKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQ0LCBzaXplKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgJDEuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAKICAgICAg
ICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoJDEpOwogICAgICAgICBUUGFyYW1ldGVyIHBhcmFt
ID0geyAkMi5zdHJpbmcsIHR5cGUgfTsKLSAgICAgICAgJCQubGluZSA9ICQyLmxpbmU7CiAgICAg
ICAgICQkLnBhcmFtID0gcGFyYW07CiAgICAgfQogICAgIDsKQEAgLTExNDQsMTQgKzEwODYsMTQg
QEAgcGFyYW1ldGVyX2RlY2xhcmF0aW9uCiAgICAgLy8KICAgICA6IHR5cGVfcXVhbGlmaWVyIHBh
cmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX2RlY2xhcmF0b3IgewogICAgICAgICAkJCA9ICQz
OwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCQzLmxpbmUsICQxLnF1YWxp
ZmllciwgJDIsICQkLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJv
ckNoZWNrKEAzLCAkMS5xdWFsaWZpZXIsICQyLCAkJC5wYXJhbS50eXBlKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9CiAgICAgfCBwYXJhbWV0ZXJfcXVhbGlmaWVyIHBh
cmFtZXRlcl9kZWNsYXJhdG9yIHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxLCAqJDIucGFyYW0udHlw
ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhAMiwg
JDEsICokMi5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3Jhcnks
ICQxLCAkJC5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVj
ayhAMiwgRXZxVGVtcG9yYXJ5LCAkMSwgJCQucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQogICAgIC8vCkBAIC0xMTU5LDE0ICsxMTAxLDE0IEBAIHBh
cmFtZXRlcl9kZWNsYXJhdGlvbgogICAgIC8vCiAgICAgfCB0eXBlX3F1YWxpZmllciBwYXJhbWV0
ZXJfcXVhbGlmaWVyIHBhcmFtZXRlcl90eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDM7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soJDMubGluZSwgJDEucXVhbGlm
aWVyLCAkMiwgJCQucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9y
Q2hlY2soQDMsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgIH0KICAgICB8IHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFy
YW1ldGVyX3R5cGVfc3BlY2lmaWVyIHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKGNv
bnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxLCAqJDIucGFyYW0u
dHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhA
MiwgJDEsICokMi5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygkMi5saW5lLCBFdnFUZW1wb3Jh
cnksICQxLCAkJC5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JD
aGVjayhAMiwgRXZxVGVtcG9yYXJ5LCAkMSwgJCQucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQogICAgIDsKQEAgLTExOTcsODMgKzExMzksODMgQEAg
aW5pdF9kZWNsYXJhdG9yX2xpc3QKICAgICA6IHNpbmdsZV9kZWNsYXJhdGlvbiB7CiAgICAgICAg
ICQkID0gJDE7CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJ
RklFUiB7CisgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIHsKICAg
ICAgICAgaWYgKCQxLnR5cGUudHlwZSA9PSBFYnRJbnZhcmlhbnQgJiYgISQzLnN5bWJvbCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDMubGluZSwgInVuZGVjbGFyZWQg
aWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMy5zdHJpbmctPmNfc3RyKCkpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDMsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVj
bGFyZWQgYXMgaW52YXJpYW50IiwgJDMuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5
bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQzLnN0cmluZywgVFR5
cGUoJDEudHlwZSksICQzLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCBzeW1ib2wsICQz
LmxpbmUpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKDAsICokMy5zdHJpbmcsIFRUeXBlKCQxLnR5cGUpLCBAMyk7CisgICAg
ICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVn
YXRlKCQxLmludGVybU5vZGUsIHN5bWJvbCwgQDMpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNv
bnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDMubGluZSwgJCQudHlwZSkpCisgICAg
ICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKEAzLCAkJC50eXBlKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+
bm9uSW5pdENvbnN0RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCBmYWxz
ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKEAzLCAqJDMu
c3RyaW5nLCAkJC50eXBlLCBmYWxzZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAKICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5ub25Jbml0RXJyb3JDaGVjaygkMy5saW5lLCAqJDMuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJs
ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjayhAMywgKiQzLnN0cmlu
ZywgJCQudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICBpZiAoc3ltYm9sICYmIHZhcmlhYmxlKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJ
ZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAgICAgfQotICAgIHwgaW5pdF9kZWNsYXJhdG9y
X2xpc3QgQ09NTUEgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxLnR5
cGUpKQorICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBMRUZUX0JS
QUNLRVQgUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZp
ZXJFcnJvckNoZWNrKEAzLCAkMS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygkMy5saW5l
LCAqJDMuc3RyaW5nLCAkMS50eXBlLCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbklu
aXRDb25zdEVycm9yQ2hlY2soQDMsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQkID0gJDE7CiAKLSAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soJDQubGluZSwgJDEudHlwZSkgfHwgY29u
dGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCQ0LmxpbmUsICQxLnR5cGUpKQorICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjayhANCwgJDEudHlwZSkgfHwgY29udGV4
dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKEA0LCAkMS50eXBlKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAkMS50eXBlLnNl
dEFycmF5KHRydWUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZTsKLSAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soJDQubGluZSwgKiQzLnN0cmluZywgJDEu
dHlwZSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVj
ayhANCwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgIH0KLSAgICB8IGluaXRfZGVjbGFyYXRv
cl9saXN0IENPTU1BIElERU5USUZJRVIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24g
UklHSFRfQlJBQ0tFVCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJv
ckNoZWNrKCQzLmxpbmUsICQxLnR5cGUpKQorICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09N
TUEgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFD
S0VUIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMs
ICQxLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlm
IChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQx
LnR5cGUsIHRydWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVj
ayhAMywgKiQzLnN0cmluZywgJDEudHlwZSwgdHJ1ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAKICAgICAgICAgJCQgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlUeXBlRXJyb3JDaGVjaygkNC5saW5lLCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxp
ZmllckVycm9yQ2hlY2soJDQubGluZSwgJDEudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVR5cGVFcnJvckNoZWNrKEA0LCAkMS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmll
ckVycm9yQ2hlY2soQDQsICQxLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDQubGluZSwgJDUsIHNpemUpKQorICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDQsICQ1LCBzaXplKSkKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkMS50eXBlLnNl
dEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7
Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCQ0LmxpbmUsICokMy5z
dHJpbmcsICQxLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJh
eUVycm9yQ2hlY2soQDQsICokMy5zdHJpbmcsICQxLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlID0gVFR5
cGUoJDEudHlwZSk7CiAgICAgICAgICAgICB0eXBlLnNldEFycmF5U2l6ZShzaXplKTsKLSAgICAg
ICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdn
cmVnYXRlKCQxLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFy
aWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICokMy5zdHJpbmcsIHR5cGUsICQz
LmxpbmUpLCAkMy5saW5lKTsKKyAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6
IDAsICokMy5zdHJpbmcsIHR5cGUsIEAzKSwgQDMpOwogICAgICAgICB9CiAgICAgfQotICAgIHwg
aW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQzLmxpbmUs
ICQxLnR5cGUpKQorICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBF
UVVBTCBpbml0aWFsaXplciB7CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJF
cnJvckNoZWNrKEAzLCAkMS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
IAogICAgICAgICAkJCA9ICQxOwogCiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwot
ICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMy5saW5lLCAqJDMuc3Ry
aW5nLCAkMS50eXBlLCAkNSwgaW50ZXJtTm9kZSkpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5l
eGVjdXRlSW5pdGlhbGl6ZXIoQDMsICokMy5zdHJpbmcsICQxLnR5cGUsICQ1LCBpbnRlcm1Ob2Rl
KSkgewogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIGJ1aWxkIHRoZSBpbnRlcm1lZGlh
dGUgcmVwcmVzZW50YXRpb24KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBpZiAoaW50ZXJt
Tm9kZSkKLSAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgaW50ZXJtTm9kZSwgJDQubGluZSk7CisgICAg
ICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVn
YXRlKCQxLmludGVybU5vZGUsIGludGVybU5vZGUsIEA0KTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSAkMS5pbnRlcm1BZ2dyZWdhdGU7CiAg
ICAgICAgIH0gZWxzZSB7CkBAIC0xMjg2LDc5ICsxMjI4LDc5IEBAIGluaXRfZGVjbGFyYXRvcl9s
aXN0CiBzaW5nbGVfZGVjbGFyYXRpb24KICAgICA6IGZ1bGx5X3NwZWNpZmllZF90eXBlIHsKICAg
ICAgICAgJCQudHlwZSA9ICQxOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3lt
Ym9sKDAsICIiLCBUVHlwZSgkMSksICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgJCQuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgVFR5cGUoJDEpLCBAMSksIEAxKTsKICAg
ICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIHsKLSAgICAgICAgVElu
dGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAq
JDIuc3RyaW5nLCBUVHlwZSgkMSksICQyLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdh
dGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICQyLmxpbmUp
OworICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmllciB7CisgICAgICAgIFRJbnRl
cm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQy
LnN0cmluZywgVFR5cGUoJDEpLCBAMik7CisgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAgICAK
LSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDIubGluZSwg
JCQudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNr
KEAyLCAkJC50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAg
ICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5n
LCAkJC50eXBlLCBmYWxzZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJv
ckNoZWNrKEAyLCAqJDIuc3RyaW5nLCAkJC50eXBlLCBmYWxzZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgICQkLnR5cGUgPSAkMTsK
IAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgaWYgKGNvbnRleHQt
Pm5vbkluaXRFcnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcsICQkLnR5cGUsIHZhcmlhYmxl
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5n
LCAkJC50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAgICAgICAgICAgICBzeW1ib2wtPnNldElk
KHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRf
dHlwZSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgY29u
dGV4dC0+ZXJyb3IoJDIubGluZSwgInVuc2l6ZWQgYXJyYXkgZGVjbGFyYXRpb25zIG5vdCBzdXBw
b3J0ZWQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUg
aWRlbnRpZmllciBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCB7CisgICAgICAgIGNvbnRleHQt
PmVycm9yKEAyLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIsICQy
LnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAg
ICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KDAsICokMi5zdHJpbmcsIFRUeXBlKCQxKSwgJDIubGluZSk7Ci0gICAgICAgICQkLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgJDIu
bGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEpLCBAMik7CisgICAgICAgICQk
LmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5
bWJvbCwgQDIpOwogICAgICAgICAkJC50eXBlID0gJDE7CiAgICAgfQotICAgIHwgZnVsbHlfc3Bl
Y2lmaWVkX3R5cGUgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBS
SUdIVF9CUkFDS0VUIHsKKyAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgTEVG
VF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7CiAgICAgICAgIFRU
eXBlIHR5cGUgPSBUVHlwZSgkMSk7CiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygkMi5saW5lLCAkNCwgc2l6ZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKEAyLCAkNCwgc2l6ZSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwot
ICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
U3ltYm9sKDAsICokMi5zdHJpbmcsIHR5cGUsICQyLmxpbmUpOwotICAgICAgICAkJC5pbnRlcm1B
Z2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICQy
LmxpbmUpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcsIHR5cGUsIEAyKTsKKyAgICAgICAgJCQuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9s
LCBAMik7CiAgICAgICAgIAotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJy
b3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZp
ZXJFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAK
LSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soJDIubGluZSwgKiQy
LnN0cmluZywgJDEsIHRydWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJy
b3JDaGVjayhAMiwgKiQyLnN0cmluZywgJDEsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogCiAgICAgICAgICQkLnR5cGUgPSAkMTsKIAotICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMy5saW5lLCAkMSkgfHwgY29udGV4dC0+YXJyYXlRdWFs
aWZpZXJFcnJvckNoZWNrKCQzLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
VHlwZUVycm9yQ2hlY2soQDMsICQxKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hl
Y2soQDMsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJh
eVNpemVFcnJvckNoZWNrKCQzLmxpbmUsICQ0LCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250
ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKEAzLCAkNCwgc2l6ZSkpCiAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICAgICAkMS5zZXRBcnJheSh0cnVlLCBzaXpl
KTsKICAgICAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygkMy5saW5lLCAqJDIuc3RyaW5nLCAkMSwgdmFyaWFi
bGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjayhAMywgKiQyLnN0
cmluZywgJDEsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgICAgIHN5
bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgICAgICB9CiAgICAgfQot
ICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBFUVVBTCBpbml0aWFsaXplciB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUs
ICQxKSkKKyAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgRVFVQUwgaW5pdGlh
bGl6ZXIgeworICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhA
MiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICQkLnR5
cGUgPSAkMTsKIAogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYg
KCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoJDIubGluZSwgKiQyLnN0cmluZywgJDEsICQ0
LCBpbnRlcm1Ob2RlKSkgeworICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXpl
cihAMiwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAvLwogICAg
ICAgICAvLyBCdWlsZCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAgICAgICAgLy8KICAg
ICAgICAgICAgIGlmKGludGVybU5vZGUpCi0gICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgJDMu
bGluZSk7CisgICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgQDMpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0gZWxz
ZSB7CkBAIC0xMzY3LDExOCArMTMwOSw1MCBAQCBzaW5nbGVfZGVjbGFyYXRpb24KICAgICAgICAg
fQogICAgIH0KICAgICB8IElOVkFSSUFOVCBJREVOVElGSUVSIHsKLSAgICAgICAgVkVSVEVYX09O
TFkoImludmFyaWFudCBkZWNsYXJhdGlvbiIsICQxLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4
dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQorICAgICAgICBWRVJURVhfT05MWSgiaW52
YXJpYW50IGRlY2xhcmF0aW9uIiwgQDEpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJy
b3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJp
YW50IHZhcnlpbmciKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAg
JCQudHlwZS5zZXRCYXNpYyhFYnRJbnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICQy
LmxpbmUpOworICAgICAgICAkJC50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJp
YW50VmFyeWluZ091dCwgQDIpOwogICAgICAgICBpZiAoISQyLnN5bWJvbCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmll
ciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoQDIsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMg
aW52YXJpYW50IiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0g
MDsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRl
cm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQy
LnN0cmluZywgVFR5cGUoJCQudHlwZSksICQyLmxpbmUpOwotICAgICAgICAgICAgJCQuaW50ZXJt
QWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAk
Mi5saW5lKTsKKyAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJCQudHlwZSksIEAyKTsK
KyAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5t
YWtlQWdncmVnYXRlKHN5bWJvbCwgQDIpOwogICAgICAgICB9CiAgICAgfQotCi0vLwotLy8gUGxh
Y2UgaG9sZGVyIGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8vICAgIHwgYnVm
ZmVyX3NwZWNpZmllciB7Ci0vLyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKLS8vICAg
IH0KICAgICA7CiAKLS8vIEdyYW1tYXIgTm90ZTogIE5vICdlbnVtJywgb3IgJ3R5cGVkZWYnLgot
Ci0vLwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8K
LS8vJXR5cGUgPGludGVybT4gYnVmZmVyX2RlY2xhcmF0aW9uCi0vLyV0eXBlIDxpbnRlcm0udHlw
ZT4gYnVmZmVyX3NwZWNpZmllciBpbnB1dF9vcl9vdXRwdXQgYnVmZmVyX2RlY2xhcmF0aW9uX2xp
c3QKLS8vYnVmZmVyX3NwZWNpZmllcgotLy8gICAgOiBpbnB1dF9vcl9vdXRwdXQgTEVGVF9CUkFD
RSBidWZmZXJfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFDRSB7Ci0vLyAgICB9Ci0vLyAgICA7
Ci0vLwotLy9pbnB1dF9vcl9vdXRwdXQKLS8vICAgIDogSU5QVVQgewotLy8gICAgICAgIGlmIChj
b250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSwgImlucHV0IikpCi0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLS8vICAgICAgICBVTlBBQ0tfT05MWSgiaW5wdXQiLCAkMS5saW5lKTsKLS8vICAgICAgICAk
JC5xdWFsaWZpZXIgPSBFdnFJbnB1dDsKLS8vICAgIH0KLS8vICAgIHwgT1VUUFVUIHsKLS8vICAg
ICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJvdXRwdXQiKSkKLS8vICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwotLy8gICAgICAgIFBBQ0tfT05MWSgib3V0cHV0IiwgJDEubGluZSk7Ci0v
LyAgICAgICAgJCQucXVhbGlmaWVyID0gRXZxT3V0cHV0OwotLy8gICAgfQotLy8gICAgOwotCi0v
LwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2VzLgotLy8KLS8v
YnVmZmVyX2RlY2xhcmF0aW9uX2xpc3QKLS8vICAgIDogYnVmZmVyX2RlY2xhcmF0aW9uIHsKLS8v
ICAgIH0KLS8vICAgIHwgYnVmZmVyX2RlY2xhcmF0aW9uX2xpc3QgYnVmZmVyX2RlY2xhcmF0aW9u
IHsKLS8vICAgIH0KLS8vICAgIDsKLQotLy8KLS8vIElucHV0L291dHB1dCBzZW1hbnRpY3M6Ci0v
LyAgIGZsb2F0IG11c3QgYmUgMTYgb3IgMzIgYml0cwotLy8gICBmbG9hdCBhbGlnbm1lbnQgcmVz
dHJpY3Rpb25zPwotLy8gICBjaGVjayBmb3Igb25seSBvbmUgaW5wdXQgYW5kIG9ubHkgb25lIG91
dHB1dAotLy8gICBzdW0gb2YgYml0ZmllbGRzIGhhcyB0byBiZSBtdWx0aXBsZSBvZiAzMgotLy8K
LQotLy8KLS8vIFBsYWNlIGhvbGRlciBmb3IgdGhlIHBhY2svdW5wYWNrIGxhbmd1YWdlcy4KLS8v
Ci0vL2J1ZmZlcl9kZWNsYXJhdGlvbgotLy8gICAgOiB0eXBlX3NwZWNpZmllciBJREVOVElGSUVS
IENPTE9OIGNvbnN0YW50X2V4cHJlc3Npb24gU0VNSUNPTE9OIHsKLS8vICAgICAgICBpZiAoY29u
dGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcsIGNvbnRleHQpKQot
Ly8gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgJCQudmFyaWFibGUg
PSBuZXcgVFZhcmlhYmxlKCQyLnN0cmluZywgJDEpOwotLy8gICAgICAgIGlmICghIGNvbnRleHQt
PnN5bWJvbFRhYmxlLmluc2VydCgqJCQudmFyaWFibGUpKSB7Ci0vLyAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCQyLmxpbmUsICJyZWRlZmluaXRpb24iLCAkJC52YXJpYWJsZS0+Z2V0TmFtZSgp
LmNfc3RyKCkpOwotLy8gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAg
ICAgIC8vIGRvbid0IGhhdmUgdG8gZGVsZXRlICQkLnZhcmlhYmxlLCB0aGUgcG9vbCBwb3Agd2ls
bCB0YWtlIGNhcmUgb2YgaXQKLS8vICAgICAgICB9Ci0vLyAgICB9Ci0vLyAgICA7Ci0KIGZ1bGx5
X3NwZWNpZmllZF90eXBlCiAgICAgOiB0eXBlX3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDE7
CiAKICAgICAgICAgaWYgKCQxLmFycmF5KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigk
MS5saW5lLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoQDEsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5
Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkMS5zZXRB
cnJheShmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCB0eXBlX3F1YWxpZmllciB0eXBl
X3NwZWNpZmllciAgewogICAgICAgICBpZiAoJDIuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCQyLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3Qt
Y2xhc3MgYXJyYXkiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICQyLnNldEFycmF5KGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkMS5xdWFs
aWZpZXIgPT0gRXZxQXR0cmlidXRlICYmCiAgICAgICAgICAgICAoJDIudHlwZSA9PSBFYnRCb29s
IHx8ICQyLnR5cGUgPT0gRWJ0SW50KSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIu
bGluZSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZygkMS5xdWFs
aWZpZXIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiY2Fubm90IGJlIGJvb2wg
b3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCQxLnF1YWxpZmllcikpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGlmICgoJDEucXVhbGlmaWVy
ID09IEV2cVZhcnlpbmdJbiB8fCAkMS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ091dCkgJiYKICAg
ICAgICAgICAgICgkMi50eXBlID09IEVidEJvb2wgfHwgJDIudHlwZSA9PSBFYnRJbnQpKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50
IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoQDIsICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmco
JDEucXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IH0KICAgICAgICAgJCQgPSAkMjsKQEAgLTE0ODgsMzQgKzEzNjIsMzQgQEAgZnVsbHlfc3BlY2lm
aWVkX3R5cGUKIAogdHlwZV9xdWFsaWZpZXIKICAgICA6IENPTlNUX1FVQUwgewotICAgICAgICAk
JC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFDb25zdCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJh
c2ljKEVidFZvaWQsIEV2cUNvbnN0LCBAMSk7CiAgICAgfQogICAgIHwgQVRUUklCVVRFIHsKLSAg
ICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0ZSIsICQxLmxpbmUpOwotICAgICAgICBpZiAoY29u
dGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCksICJhdHRyaWJ1dGUiKSkKKyAgICAgICAgVkVSVEVYX09OTFkoImF0dHJpYnV0
ZSIsIEAxKTsKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soQDEsIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFB
dHRyaWJ1dGUsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFBdHRy
aWJ1dGUsIEAxKTsKICAgICB9CiAgICAgfCBWQVJZSU5HIHsKLSAgICAgICAgaWYgKGNvbnRleHQt
Pmdsb2JhbEVycm9yQ2hlY2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpLCAidmFyeWluZyIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVj
ayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWluZyIpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hh
ZGVyVHlwZSA9PSBTSF9WRVJURVhfU0hBREVSKQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
Vm9pZCwgRXZxVmFyeWluZ091dCwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhF
YnRWb2lkLCBFdnFWYXJ5aW5nT3V0LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICQk
LnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgJDEubGluZSk7CisgICAgICAgICAgICAk
JC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nSW4sIEAxKTsKICAgICB9CiAgICAgfCBJTlZB
UklBTlQgVkFSWUlORyB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQx
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2
YXJ5aW5nIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hh
ZGVyVHlwZSA9PSBTSF9WRVJURVhfU0hBREVSKQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
Vm9pZCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCBAMSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdJ
biwgJDEubGluZSk7CisgICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlh
bnRWYXJ5aW5nSW4sIEAxKTsKICAgICB9CiAgICAgfCBVTklGT1JNIHsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmdsb2JhbEVycm9yQ2hlY2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpLCAidW5pZm9ybSIpKQorICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJy
b3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidW5pZm9y
bSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJC5zZXRCYXNp
YyhFYnRWb2lkLCBFdnFVbmlmb3JtLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
Vm9pZCwgRXZxVW5pZm9ybSwgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTE1MjUsNyArMTM5OSw3
IEBAIHR5cGVfc3BlY2lmaWVyCiAKICAgICAgICAgaWYgKCQkLnByZWNpc2lvbiA9PSBFYnBVbmRl
ZmluZWQpIHsKICAgICAgICAgICAgICQkLnByZWNpc2lvbiA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmdldERlZmF1bHRQcmVjaXNpb24oJDEudHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+
cHJlY2lzaW9uRXJyb3JDaGVjaygkMS5saW5lLCAkJC5wcmVjaXNpb24sICQxLnR5cGUpKSB7Cisg
ICAgICAgICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9uRXJyb3JDaGVjayhAMSwgJCQucHJlY2lz
aW9uLCAkMS50eXBlKSkgewogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTU1NSwxMSArMTQyOSwxMSBAQCB0eXBlX3NwZWNp
Zmllcl9ub19wcmVjCiAgICAgfCB0eXBlX3NwZWNpZmllcl9ub25hcnJheSBMRUZUX0JSQUNLRVQg
Y29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKICAgICAgICAgJCQgPSAkMTsKIAot
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50
IHNpemU7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygkMi5s
aW5lLCAkMywgc2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JD
aGVjayhAMiwgJDMsIHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICQkLnNldEFycmF5KHRydWUsIHNpemUpOwogICAgICAgICB9CkBAIC0xNTY5
LDExOCArMTQ0MywxMDUgQEAgdHlwZV9zcGVjaWZpZXJfbm9fcHJlYwogdHlwZV9zcGVjaWZpZXJf
bm9uYXJyYXkKICAgICA6IFZPSURfVFlQRSB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgJDEubGluZSk7CisgICAg
ICAgICQkLnNldEJhc2ljKEVidFZvaWQsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBGTE9BVF9U
WVBFIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRC
YXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZs
b2F0LCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwgSU5UX1RZUEUgewogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEu
bGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwgcXVhbCwgQDEpOwogICAgIH0KICAg
ICB8IEJPT0xfVFlQRSB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJh
c2ljKEVidEJvb2wsIHF1YWwsIEAxKTsKICAgICB9Ci0vLyAgICB8IFVOU0lHTkVEIElOVF9UWVBF
IHsKLS8vICAgICAgICBQQUNLX1VOUEFDS19PTkxZKCJ1bnNpZ25lZCIsICQxLmxpbmUpOwotLy8g
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLS8vICAgICAgICAkJC5zZXRCYXNpYyhF
YnRJbnQsIHF1YWwsICQxLmxpbmUpOwotLy8gICAgfQogICAgIHwgVkVDMiB7CiAgICAgICAgIFRR
dWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2
cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1
YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwog
ICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMik7CiAgICAgfQogICAgIHwgVkVDMyB7CiAgICAgICAg
IFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/
IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQs
IHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEp
OwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwgVkVDNCB7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Rmxv
YXQsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwg
QDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgQlZFQzIgewog
ICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVi
dEJvb2wsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFs
LCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAgfCBCVkVDMyB7
CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMo
RWJ0Qm9vbCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEJvb2wsIHF1
YWwsIEAxKTsKICAgICAgICAgJCQuc2V0QWdncmVnYXRlKDMpOwogICAgIH0KICAgICB8IEJWRUM0
IHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNp
YyhFYnRCb29sLCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwg
cXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgSVZF
QzIgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJh
c2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwg
cXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMik7CiAgICAgfQogICAgIHwgSVZF
QzMgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJh
c2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwg
cXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwgSVZF
QzQgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJh
c2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEludCwg
cXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgfQogICAgIHwgTUFU
UklYMiB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJtYXQyIiwgJDEubGluZSk7CiAgICAgICAg
IFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/
IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQs
IHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEp
OwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMiwgdHJ1ZSk7CiAgICAgfQogICAgIHwgTUFUUklY
MyB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJtYXQzIiwgJDEubGluZSk7CiAgICAgICAgIFRR
dWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2
cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1
YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwog
ICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7CiAgICAgfQogICAgIHwgTUFUUklYNCB7
Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJtYXQ0IiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFs
aWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUds
b2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWws
ICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgQDEpOwogICAg
ICAgICAkJC5zZXRBZ2dyZWdhdGUoNCwgdHJ1ZSk7CiAgICAgfQogICAgIHwgU0FNUExFUjJEIHsK
LSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXIyRCIsICQxLmxpbmUpOwogICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIy
RCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXIyRCwgcXVh
bCwgQDEpOwogICAgIH0KICAgICB8IFNBTVBMRVJDVUJFIHsKLSAgICAgICAgRlJBR19WRVJUX09O
TFkoInNhbXBsZXJDdWJlIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlckN1YmUsIHF1YWwsICQxLmxpbmUp
OworICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgQDEpOwogICAgIH0K
ICAgICB8IFNBTVBMRVJfRVhURVJOQUxfT0VTIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyRXh0
ZXJuYWxPRVMiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5zdXBwb3J0ZWQg
dHlwZSIsICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgfQotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlckV4dGVybmFs
T0VTIiwgJDEubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCAkMS5saW5lKTsKKyAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCBAMSk7CiAgICAg
fQogICAgIHwgU0FNUExFUjJEUkVDVCB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNF
eHRlbnNpb24oIkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSIpKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigkMS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2Ft
cGxlcjJEUmVjdCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9
Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyMkRSZWN0IiwgJDEubGluZSk7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2Ft
cGxlcjJEUmVjdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBs
ZXIyRFJlY3QsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBzdHJ1Y3Rfc3BlY2lmaWVyIHsKLSAg
ICAgICAgRlJBR19WRVJUX09OTFkoInN0cnVjdCIsICQxLmxpbmUpOwogICAgICAgICAkJCA9ICQx
OwogICAgICAgICAkJC5xdWFsaWZpZXIgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CiAgICAgfQpAQCAtMTY5MSwyOSArMTU1
MiwyOSBAQCB0eXBlX3NwZWNpZmllcl9ub25hcnJheQogICAgICAgICAvLwogICAgICAgICBUVHlw
ZSYgc3RydWN0dXJlID0gc3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oJDEuc3ltYm9sKS0+Z2V0VHlw
ZSgpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNldEJh
c2ljKEVidFN0cnVjdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFN0
cnVjdCwgcXVhbCwgQDEpOwogICAgICAgICAkJC51c2VyRGVmID0gJnN0cnVjdHVyZTsKICAgICB9
CiAgICAgOwogCiBzdHJ1Y3Rfc3BlY2lmaWVyCi0gICAgOiBTVFJVQ1QgSURFTlRJRklFUiBMRUZU
X0JSQUNFIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oJDIubGluZSwgKiQy
LnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBS
SUdIVF9CUkFDRSB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDIu
bGluZSwgKiQyLnN0cmluZykpCisgICAgOiBTVFJVQ1QgaWRlbnRpZmllciBMRUZUX0JSQUNFIHsg
aWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oQDIsICokMi5zdHJpbmcpKSBjb250
ZXh0LT5yZWNvdmVyKCk7IH0gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0Ugewor
ICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUVHlwZSogc3RydWN0
dXJlID0gbmV3IFRUeXBlKCQ1LCAqJDIuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVy
ZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVjdHVyZSgkMi5zdHJpbmcsICQ1KSk7CiAgICAgICAgIFRW
YXJpYWJsZSogdXNlclR5cGVEZWYgPSBuZXcgVFZhcmlhYmxlKCQyLnN0cmluZywgKnN0cnVjdHVy
ZSwgdHJ1ZSk7CiAgICAgICAgIGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgqdXNl
clR5cGVEZWYpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAicmVkZWZp
bml0aW9uIiwgJDIuc3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMiwgInJlZGVmaW5pdGlvbiIsICQyLnN0cmluZy0+Y19zdHIoKSwgInN0cnVj
dCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAg
ICQkLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAkMS5saW5lKTsKKyAgICAgICAg
JCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksIEAxKTsKICAgICAgICAgJCQudXNl
ckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9u
KCk7CiAgICAgfQotICAgIHwgU1RSVUNUIExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJT
dHJ1Y3REZWNsYXJhdGlvbigkMi5saW5lLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3Zlcigp
OyB9IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKLSAgICAgICAgVFR5cGUq
IHN0cnVjdHVyZSA9IG5ldyBUVHlwZSgkNCwgVFN0cmluZygiIikpOwotICAgICAgICAkJC5zZXRC
YXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgJDEubGluZSk7CisgICAgfCBTVFJVQ1QgTEVG
VF9CUkFDRSB7IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKEAyLCAqJDIuc3Ry
aW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IFJJR0hU
X0JSQUNFIHsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVj
dHVyZShOZXdQb29sVFN0cmluZygiIiksICQ0KSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFN0
cnVjdCwgRXZxVGVtcG9yYXJ5LCBAMSk7CiAgICAgICAgICQkLnVzZXJEZWYgPSBzdHJ1Y3R1cmU7
CiAgICAgICAgIGNvbnRleHQtPmV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwogICAgIH0KQEAgLTE3
MjUsMTQgKzE1ODYsMTUgQEAgc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QKICAgICB9CiAgICAgfCBz
dHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBzdHJ1Y3RfZGVjbGFyYXRpb24gewogICAgICAgICAkJCA9
ICQxOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICQyLT5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCAkJC0+c2l6ZSgp
OyArK2opIHsKLSAgICAgICAgICAgICAgICBpZiAoKCokJClbal0udHlwZS0+Z2V0RmllbGROYW1l
KCkgPT0gKCokMilbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKCokMilbaV0ubGluZSwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGlu
IHN0cnVjdHVyZToiLCAic3RydWN0IiwgKCokMilbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkuY19z
dHIoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgJDItPnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBURmllbGQqIGZpZWxkID0gKCokMilbaV07CisgICAgICAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8ICQkLT5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIGlm
ICgoKiQkKVtqXS0+bmFtZSgpID09IGZpZWxkLT5uYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoQDIsICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6
IiwgInN0cnVjdCIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAkJC0+cHVzaF9iYWNrKCgqJDIpW2ldKTsKKyAgICAgICAgICAgICQkLT5wdXNo
X2JhY2soZmllbGQpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTE3NDEsMTQgKzE2MDMs
MTQgQEAgc3RydWN0X2RlY2xhcmF0aW9uCiAgICAgOiB0eXBlX3NwZWNpZmllciBzdHJ1Y3RfZGVj
bGFyYXRvcl9saXN0IFNFTUlDT0xPTiB7CiAgICAgICAgICQkID0gJDI7CiAKLSAgICAgICAgaWYg
KGNvbnRleHQtPnZvaWRFcnJvckNoZWNrKCQxLmxpbmUsICgqJDIpWzBdLnR5cGUtPmdldEZpZWxk
TmFtZSgpLCAkMSkpIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnZvaWRFcnJvckNoZWNrKEAxLCAo
KiQyKVswXS0+bmFtZSgpLCAkMSkpIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICQkLT5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIENhcmVmdWwgbm90IHRv
IHJlcGxhY2UgYWxyZWFkeSBrbm93biBhc3BlY3RzIG9mIHR5cGUsIGxpa2UgYXJyYXktbmVzcwog
ICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIFRUeXBlKiB0eXBlID0gKCokJClbaV0udHlwZTsK
KyAgICAgICAgICAgIFRUeXBlKiB0eXBlID0gKCokJClbaV0tPnR5cGUoKTsKICAgICAgICAgICAg
IHR5cGUtPnNldEJhc2ljVHlwZSgkMS50eXBlKTsKICAgICAgICAgICAgIHR5cGUtPnNldE5vbWlu
YWxTaXplKCQxLnNpemUpOwogICAgICAgICAgICAgdHlwZS0+c2V0TWF0cml4KCQxLm1hdHJpeCk7
CkBAIC0xNzU2LDI2ICsxNjE4LDIzIEBAIHN0cnVjdF9kZWNsYXJhdGlvbgogCiAgICAgICAgICAg
ICAvLyBkb24ndCBhbGxvdyBhcnJheXMgb2YgYXJyYXlzCiAgICAgICAgICAgICBpZiAodHlwZS0+
aXNBcnJheSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9y
Q2hlY2soJDEubGluZSwgJDEpKQorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5
cGVFcnJvckNoZWNrKEAxLCAkMSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgkMS5hcnJheSkKICAgICAgICAg
ICAgICAgICB0eXBlLT5zZXRBcnJheVNpemUoJDEuYXJyYXlTaXplKTsKLSAgICAgICAgICAgIGlm
ICgkMS51c2VyRGVmKSB7CisgICAgICAgICAgICBpZiAoJDEudXNlckRlZikKICAgICAgICAgICAg
ICAgICB0eXBlLT5zZXRTdHJ1Y3QoJDEudXNlckRlZi0+Z2V0U3RydWN0KCkpOwotICAgICAgICAg
ICAgICAgIHR5cGUtPnNldFR5cGVOYW1lKCQxLnVzZXJEZWYtPmdldFR5cGVOYW1lKCkpOwotICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9y
Q2hlY2soJDEubGluZSwgKnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0
TmVzdGluZ0Vycm9yQ2hlY2soQDEsICooKiQkKVtpXSkpCiAgICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIDsKIAog
c3RydWN0X2RlY2xhcmF0b3JfbGlzdAogICAgIDogc3RydWN0X2RlY2xhcmF0b3IgewotICAgICAg
ICAkJCA9IE5ld1Bvb2xUVHlwZUxpc3QoKTsKKyAgICAgICAgJCQgPSBOZXdQb29sVEZpZWxkTGlz
dCgpOwogICAgICAgICAkJC0+cHVzaF9iYWNrKCQxKTsKICAgICB9CiAgICAgfCBzdHJ1Y3RfZGVj
bGFyYXRvcl9saXN0IENPTU1BIHN0cnVjdF9kZWNsYXJhdG9yIHsKQEAgLTE3ODQsMjYgKzE2NDMs
MjQgQEAgc3RydWN0X2RlY2xhcmF0b3JfbGlzdAogICAgIDsKIAogc3RydWN0X2RlY2xhcmF0b3IK
LSAgICA6IElERU5USUZJRVIgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNo
ZWNrKCQxLmxpbmUsICokMS5zdHJpbmcpKQorICAgIDogaWRlbnRpZmllciB7CisgICAgICAgIGlm
IChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkLnR5cGUgPSBuZXcgVFR5cGUoRWJ0
Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7Ci0gICAgICAg
ICQkLnR5cGUtPnNldEZpZWxkTmFtZSgqJDEuc3RyaW5nKTsKKyAgICAgICAgVFR5cGUqIHR5cGUg
PSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKKyAgICAgICAgJCQgPSBuZXcgVEZp
ZWxkKHR5cGUsICQxLnN0cmluZyk7CiAgICAgfQotICAgIHwgSURFTlRJRklFUiBMRUZUX0JSQUNL
RVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMS5saW5lLCAqJDEuc3RyaW5nKSkKKyAgICB8IGlkZW50
aWZpZXIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7Cisg
ICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJpbmcpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkLnR5cGUgPSBuZXcg
VFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7
Ci0gICAgICAgICQkLnR5cGUtPnNldEZpZWxkTmFtZSgqJDEuc3RyaW5nKTsKLQotICAgICAgICBp
bnQgc2l6ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDIubGlu
ZSwgJDMsIHNpemUpKQorICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBF
YnBVbmRlZmluZWQpOworICAgICAgICBpbnQgc2l6ZSA9IDA7CisgICAgICAgIGlmIChjb250ZXh0
LT5hcnJheVNpemVFcnJvckNoZWNrKEAzLCAkMywgc2l6ZSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkLnR5cGUtPnNldEFycmF5U2l6ZShzaXplKTsKKyAgICAg
ICAgdHlwZS0+c2V0QXJyYXlTaXplKHNpemUpOworCisgICAgICAgICQkID0gbmV3IFRGaWVsZCh0
eXBlLCAkMS5zdHJpbmcpOwogICAgIH0KICAgICA7CiAKQEAgLTE4MzUsNyArMTY5Miw3IEBAIGNv
bXBvdW5kX3N0YXRlbWVudAogICAgIHwgTEVGVF9CUkFDRSB7IGNvbnRleHQtPnN5bWJvbFRhYmxl
LnB1c2goKTsgfSBzdGF0ZW1lbnRfbGlzdCB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyB9
IFJJR0hUX0JSQUNFIHsKICAgICAgICAgaWYgKCQzICE9IDApIHsKICAgICAgICAgICAgICQzLT5z
ZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAgICAgICAgICAkMy0+c2V0RW5kTGluZSgkNS5saW5lKTsK
KyAgICAgICAgICAgICQzLT5zZXRMaW5lKEAkKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQz
OwogICAgIH0KQEAgLTE4NTksNyArMTcxNiw3IEBAIGNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdf
c2NvcGUKICAgICB8IExFRlRfQlJBQ0Ugc3RhdGVtZW50X2xpc3QgUklHSFRfQlJBQ0UgewogICAg
ICAgICBpZiAoJDIpIHsKICAgICAgICAgICAgICQyLT5zZXRPcChFT3BTZXF1ZW5jZSk7Ci0gICAg
ICAgICAgICAkMi0+c2V0RW5kTGluZSgkMy5saW5lKTsKKyAgICAgICAgICAgICQyLT5zZXRMaW5l
KEAkKTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQyOwogICAgIH0KQEAgLTE4NjcsMTAgKzE3
MjQsMTAgQEAgY29tcG91bmRfc3RhdGVtZW50X25vX25ld19zY29wZQogCiBzdGF0ZW1lbnRfbGlz
dAogICAgIDogc3RhdGVtZW50IHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
bWFrZUFnZ3JlZ2F0ZSgkMSwgMCk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lm1ha2VBZ2dyZWdhdGUoJDEsIEAkKTsKICAgICB9CiAgICAgfCBzdGF0ZW1lbnRfbGlzdCBzdGF0
ZW1lbnQgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRl
KCQxLCAkMiwgMCk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dy
ZWdhdGUoJDEsICQyLCBAJCk7CiAgICAgfQogICAgIDsKIApAQCAtMTg4MSw5ICsxNzM4LDkgQEAg
ZXhwcmVzc2lvbl9zdGF0ZW1lbnQKIAogc2VsZWN0aW9uX3N0YXRlbWVudAogICAgIDogSUYgTEVG
VF9QQVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIHNlbGVjdGlvbl9yZXN0X3N0YXRlbWVudCB7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygkMS5saW5lLCAkMykpCisgICAg
ICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjayhAMSwgJDMpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRT
ZWxlY3Rpb24oJDMsICQ1LCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkU2VsZWN0aW9uKCQzLCAkNSwgQDEpOwogICAgIH0KICAgICA7CiAKQEAgLTE5MDcs
MTQgKzE3NjQsMTQgQEAgY29uZGl0aW9uCiAgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JD
aGVjaygkMS0+Z2V0TGluZSgpLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgfQotICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBFUVVBTCBpbml0
aWFsaXplciB7CisgICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIEVRVUFMIGlu
aXRpYWxpemVyIHsKICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAg
ICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDIsICQxKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJv
ckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNr
KEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYg
KCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoJDIubGluZSwgKiQyLnN0cmluZywgJDEsICQ0
LCBpbnRlcm1Ob2RlKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIo
QDIsICokMi5zdHJpbmcsICQxLCAkNCwgaW50ZXJtTm9kZSkpCiAgICAgICAgICAgICAkJCA9ICQ0
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKQEAgLTE5
MjYsMTkgKzE3ODMsMTkgQEAgY29uZGl0aW9uCiBpdGVyYXRpb25fc3RhdGVtZW50CiAgICAgOiBX
SElMRSBMRUZUX1BBUkVOIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQt
Pmxvb3BOZXN0aW5nTGV2ZWw7IH0gY29uZGl0aW9uIFJJR0hUX1BBUkVOIHN0YXRlbWVudF9ub19u
ZXdfc2NvcGUgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAkNCwgMCwg
JDYsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29w
KEVMb29wV2hpbGUsIDAsICQ0LCAwLCAkNiwgQDEpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BO
ZXN0aW5nTGV2ZWw7CiAgICAgfQogICAgIHwgRE8geyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2
ZWw7IH0gc3RhdGVtZW50X3dpdGhfc2NvcGUgV0hJTEUgTEVGVF9QQVJFTiBleHByZXNzaW9uIFJJ
R0hUX1BBUkVOIFNFTUlDT0xPTiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVj
aygkOC5saW5lLCAkNikpCisgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjayhAOCwg
JDYpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BEb1doaWxlLCAwLCAkNiwgMCwgJDMsICQ0
LmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29w
RG9XaGlsZSwgMCwgJDYsIDAsICQzLCBANCk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3Rp
bmdMZXZlbDsKICAgICB9CiAgICAgfCBGT1IgTEVGVF9QQVJFTiB7IGNvbnRleHQtPnN5bWJvbFRh
YmxlLnB1c2goKTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyB9IGZvcl9pbml0X3N0YXRl
bWVudCBmb3JfcmVzdF9zdGF0ZW1lbnQgUklHSFRfUEFSRU4gc3RhdGVtZW50X25vX25ld19zY29w
ZSB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwotICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wRm9yLCAkNCwgcmVpbnRlcnByZXRfY2Fz
dDxUSW50ZXJtVHlwZWQqPigkNS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVk
Kj4oJDUubm9kZTIpLCAkNywgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZExvb3AoRUxvb3BGb3IsICQ0LCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBl
ZCo+KCQ1Lm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigkNS5ub2RlMiks
ICQ3LCBAMSk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAg
ICAgOwpAQCAtMTk3NSwzOSArMTgzMiwzOSBAQCBmb3JfcmVzdF9zdGF0ZW1lbnQKIGp1bXBfc3Rh
dGVtZW50CiAgICAgOiBDT05USU5VRSBTRU1JQ09MT04gewogICAgICAgICBpZiAoY29udGV4dC0+
bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5s
aW5lLCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxs
b3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9w
Q29udGludWUsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCcmFuY2goRU9wQ29udGludWUsIEAxKTsKICAgICB9CiAgICAgfCBCUkVBSyBTRU1JQ09MT04g
ewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxsb3dl
ZCBpbiBsb29wcyIsICIiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiYnJlYWsg
c3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCcmFuY2goRU9wQnJlYWssICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQnJlYWssIEAxKTsKICAgICB9CiAgICAgfCBSRVRV
Uk4gU0VNSUNPTE9OIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJh
bmNoKEVPcFJldHVybiwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sIEAxKTsKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJl
bnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBh
IHZhbHVlIiwgInJldHVybiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJub24t
dm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgUkVUVVJOIGV4
cHJlc3Npb24gU0VNSUNPTE9OIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQnJhbmNoKEVPcFJldHVybiwgJDIsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAkMiwgQDEpOwogICAgICAgICBjb250
ZXh0LT5mdW5jdGlvblJldHVybnNWYWx1ZSA9IHRydWU7CiAgICAgICAgIGlmIChjb250ZXh0LT5j
dXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJu
IGEgdmFsdWUiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgInZv
aWQgZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIiwgInJldHVybiIpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9IGVsc2UgaWYgKCooY29udGV4dC0+Y3Vy
cmVudEZ1bmN0aW9uVHlwZSkgIT0gJDItPmdldFR5cGUoKSkgewotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hpbmcgdHlwZToi
LCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIHJl
dHVybiBpcyBub3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBESVNDQVJEIFNFTUlDT0xP
TiB7Ci0gICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICQxLmxpbmUpOwotICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgJDEubGluZSk7CisgICAg
ICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsIEAxKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQnJhbmNoKEVPcEtpbGwsIEAxKTsKICAgICB9CiAgICAgOwogCkBAIC0yMDE5
LDcgKzE4NzYsNyBAQCB0cmFuc2xhdGlvbl91bml0CiAgICAgICAgIGNvbnRleHQtPnRyZWVSb290
ID0gJCQ7CiAgICAgfQogICAgIHwgdHJhbnNsYXRpb25fdW5pdCBleHRlcm5hbF9kZWNsYXJhdGlv
biB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEs
ICQyLCAwKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0
ZSgkMSwgJDIsIEAkKTsKICAgICAgICAgY29udGV4dC0+dHJlZVJvb3QgPSAkJDsKICAgICB9CiAg
ICAgOwpAQCAtMjA0MSw3ICsxODk4LDcgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICAK
ICAgICAgICAgaWYgKGJ1aWx0SW4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCQxLmxpbmUsICJidWlsdC1pbiBmdW5jdGlvbnMgY2Fubm90IGJlIHJlZGVmaW5lZCIsIGZ1
bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihA
MSwgImJ1aWx0LWluIGZ1bmN0aW9ucyBjYW5ub3QgYmUgcmVkZWZpbmVkIiwgZnVuY3Rpb24tPmdl
dE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQogICAgICAgICAKQEAgLTIwNTUsNyArMTkxMiw3IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24K
ICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBUaGVuIHRoaXMgZnVuY3Rpb24gYWxyZWFk
eSBoYXMgYSBib2R5LgogICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCQxLmxpbmUsICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFt
ZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJmdW5jdGlvbiBh
bHJlYWR5IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIHByZXZEZWMtPnNl
dERlZmluZWQoKTsKQEAgLTIwNjUsMTEgKzE5MjIsMTEgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgog
ICAgICAgICAvLwogICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAibWFpbiIpIHsK
ICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgpID4gMCkgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJmdW5jdGlvbiBjYW5ub3QgdGFrZSBh
bnkgcGFyYW1ldGVyKHMpIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJh
bWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmdW5j
dGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiIiwgZnVuY3Rpb24tPmdldFJldHVy
blR5cGUoKS5nZXRCYXNpY1N0cmluZygpLCAibWFpbiBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEg
dmFsdWUiKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIiIsIGZ1bmN0aW9u
LT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90
IHJldHVybiBhIHZhbHVlIik7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMDk3LDcgKzE5NTQsNyBAQCBmdW5jdGlvbl9k
ZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgLy8gSW5zZXJ0IHRoZSBwYXJhbWV0ZXJzIHdpdGgg
bmFtZSBpbiB0aGUgc3ltYm9sIHRhYmxlLgogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAg
ICAgICAgaWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgInJlZGVmaW5pdGlvbiIs
IHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKEAxLCAicmVkZWZpbml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigp
KTsKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAg
ICAgICAgICBkZWxldGUgdmFyaWFibGU7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjEwOCwxNCAr
MTk2NSwxNSBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgcGFyYW1Ob2Rl
cyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbU5vZGVzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJs
ZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAkMS5saW5l
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEubGlu
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEp
OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsICQxLmxpbmUpLCAkMS5saW5l
KTsKKyAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdy
b3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAiIiwgKnBhcmFtLnR5cGUsIEAxKSwgQDEpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0g
ICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihwYXJhbU5v
ZGVzLCBFT3BQYXJhbWV0ZXJzLCAkMS5saW5lKTsKKyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRp
YXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsIEAxKTsK
ICAgICAgICAgJDEuaW50ZXJtQWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAgICAgY29udGV4
dC0+bG9vcE5lc3RpbmdMZXZlbCA9IDA7CiAgICAgfQpAQCAtMjEyMywxMiArMTk4MSwxMiBAQCBm
dW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAgIC8vPz8gQ2hlY2sgdGhhdCBhbGwgcGF0aHMgcmV0
dXJuIGEgdmFsdWUgaWYgcmV0dXJuIHR5cGUgIT0gdm9pZCA/CiAgICAgICAgIC8vICAgTWF5IGJl
IGJlc3QgZG9uZSBhcyBwb3N0IHByb2Nlc3MgcGhhc2Ugb24gaW50ZXJtZWRpYXRlIGNvZGUKICAg
ICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9
IEVidFZvaWQgJiYgISBjb250ZXh0LT5mdW5jdGlvblJldHVybnNWYWx1ZSkgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZh
bHVlOiIsICIiLCAkMS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoQDEsICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAi
IiwgJDEuZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1BZ2dyZWdhdGUsICQzLCAwKTsKLSAg
ICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQkLCBFT3BG
dW5jdGlvbiwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdy
b3dBZ2dyZWdhdGUoJDEuaW50ZXJtQWdncmVnYXRlLCAkMywgQCQpOworICAgICAgICBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJCQsIEVPcEZ1bmN0aW9uLCBAMSk7
CiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXROYW1lKCQxLmZ1bmN0aW9uLT5nZXRN
YW5nbGVkTmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0
VHlwZSgkMS5mdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpKTsKIApAQCAtMjEzNywxNSArMTk5NSwx
NyBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5z
ZXRPcHRpbWl6ZShjb250ZXh0LT5wcmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICQkLT5nZXRB
c0FnZ3JlZ2F0ZSgpLT5zZXREZWJ1Zyhjb250ZXh0LT5wcmFnbWEoKS5kZWJ1Zyk7CiAKLSAgICAg
ICAgaWYgKCQzICYmICQzLT5nZXRBc0FnZ3JlZ2F0ZSgpKQotICAgICAgICAgICAgJCQtPmdldEFz
QWdncmVnYXRlKCktPnNldEVuZExpbmUoJDMtPmdldEFzQWdncmVnYXRlKCktPmdldEVuZExpbmUo
KSk7Ci0KICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgfQogICAgIDsK
IAogJSUKIAordm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxvYywgVFBhcnNlQ29udGV4dCogY29u
dGV4dCwgY29uc3QgY2hhciogcmVhc29uKSB7CisgICAgY29udGV4dC0+ZXJyb3IoKnl5bGxvYywg
cmVhc29uLCAiIik7CisgICAgY29udGV4dC0+cmVjb3ZlcigpOworfQorCiBpbnQgZ2xzbGFuZ19w
YXJzZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgcmV0dXJuIHl5cGFyc2UoY29udGV4
dCk7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFu
Z19sZXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9nbHNsYW5nX2xleC5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4NCw4ICszODQsOCBAQCBzdGF0aWMgdm9pZCB5eV9mYXRhbF9lcnJvciAoeXljb25zdCBjaGFy
CiAJKnl5X2NwID0gJ1wwJzsgXAogCXl5Zy0+eXlfY19idWZfcCA9IHl5X2NwOwogCi0jZGVmaW5l
IFlZX05VTV9SVUxFUyAxNTUKLSNkZWZpbmUgWVlfRU5EX09GX0JVRkZFUiAxNTYKKyNkZWZpbmUg
WVlfTlVNX1JVTEVTIDE0NworI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSIDE0OAogLyogVGhpcyBz
dHJ1Y3QgaXMgbm90IHVzZWQgaW4gdGhpcyBzY2FubmVyLAogICAgYnV0IGl0cyBwcmVzZW5jZSBp
cyBuZWNlc3NhcnkuICovCiBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwpAQCAtMzkzLDU4ICszOTMsNTcg
QEAgc3RydWN0IHl5X3RyYW5zX2luZm8KIAlmbGV4X2ludDMyX3QgeXlfdmVyaWZ5OwogCWZsZXhf
aW50MzJfdCB5eV9ueHQ7CiAJfTsKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2Nl
cHRbNDU5XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYWNjZXB0WzQ0M10gPQog
ICAgIHsgICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMTU2
LCAgMTU0LCAgMTUzLCAgMTUzLAotICAgICAgMTM4LCAgMTQ0LCAgMTQ5LCAgMTMzLCAgMTM0LCAg
MTQyLCAgMTQxLCAgMTMwLCAgMTM5LCAgMTM3LAotICAgICAgMTQzLCAgMTAyLCAgMTAyLCAgMTMx
LCAgMTI3LCAgMTQ1LCAgMTMyLCAgMTQ2LCAgMTUwLCAgIDk4LAotICAgICAgMTM1LCAgMTM2LCAg
MTQ4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAot
ICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgMTI4LCAgMTQ3LCAgMTI5LCAgMTQwLCAgICAzLCAgICA0
LCAgICAzLAotICAgICAgMTUyLCAgMTU1LCAgMTUxLCAgMTI0LCAgMTEwLCAgMTI5LCAgMTE4LCAg
MTEzLCAgMTA4LCAgMTE2LAotICAgICAgMTA2LCAgMTE3LCAgMTA3LCAgMTA1LCAgICAyLCAgICAx
LCAgMTA5LCAgMTA0LCAgMTAwLCAgMTAxLAotICAgICAgICAwLCAgICAwLCAgMTAyLCAgMTM2LCAg
MTI4LCAgMTM1LCAgMTI1LCAgMTIxLCAgMTIzLCAgMTIyLAotICAgICAgMTI2LCAgIDk4LCAgMTE0
LCAgMTIwLCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotCi0gICAgICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgMTcsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0g
ICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgMjAs
ICAgMjIsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAxMTUsICAxMTksICAgIDUsCi0gICAgICAxNTEsICAgIDAsICAgIDEs
ICAxMDQsICAgIDAsICAgIDAsICAxMDMsICAgOTksICAxMTEsICAxMTIsCi0gICAgICAgNTAsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAg
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
MTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgMjYsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgMjMsICAgOTgsICAgOTgsCi0KLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICAg
MCwgIDEwNSwgICAgMCwgIDEwNCwgICA5OCwgICAyOCwgICA5OCwgICA5OCwgICA5NSwKLSAgICAg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAyMSwgICA1MywgICA5
OCwKLSAgICAgICA5OCwgICA5OCwgICA2OSwgICA5OCwgICA5OCwgICA1OCwgICA3MywgICA5OCwg
ICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA3MCwgICAg
OSwgICAzMywgICAzNCwgICAzNSwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA1NiwgICAyOSwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICAzNiwgICAzNywgICAzOCwgICAyNywgICA5OCwgICA5OCwKLSAgICAgICA5
OCwgICAxNSwgICA0MiwgICA0MywgICA0NCwgICA1MSwgICAxMiwgICA5OCwgICA5OCwgICA5OCwK
LQotICAgICAgIDk4LCAgIDgyLCAgIDgzLCAgIDg0LCAgIDk4LCAgIDMwLCAgIDc0LCAgIDI1LCAg
IDg1LCAgIDg2LAotICAgICAgIDg3LCAgICA3LCAgIDc5LCAgIDgwLCAgIDgxLCAgIDk4LCAgIDI0
LCAgIDc3LCAgIDk4LCAgIDk4LAotICAgICAgIDM5LCAgIDQwLCAgIDQxLCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDcxLCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDUyLCAg
IDk4LCAgIDk3LCAgIDk4LCAgIDk4LCAgIDE5LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4
LCAgIDcyLCAgIDY2LCAgIDYxLCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDc4LAot
ICAgICAgIDU3LCAgIDk4LCAgIDY0LCAgIDMyLCAgIDk4LCAgIDk0LCAgIDY1LCAgIDQ5LCAgIDc2
LCAgIDU5LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDYwLCAgIDMxLAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgICA4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDU0LAotICAgICAgIDEzLCAgIDk4LCAgIDE0LCAgIDk4LCAg
IDk4LCAgIDE2LCAgIDY3LCAgIDk4LCAgIDk4LCAgIDk4LAotCi0gICAgICAgNjIsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNTUsICAgNzUsICAgNjMsCi0gICAgICAgMTEs
ICAgNjgsICAgIDYsICAgOTYsICAgMTAsICAgODgsICAgNDUsICAgODksICAgOTgsICAgOTgsCi0g
ICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTgsCi0gICAgICAgNDYsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgNDgsICAgOTgsCi0gICAgICAgOTIsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
ICAgOTAsICAgOTgsICAgOTEsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgNDcsICAgOTMsICAgIDAKKyAgICAgICAgMCwgICAgMCwgIDE0OCwgIDE0NiwgIDE0NSwg
IDE0NSwgIDEzMiwgIDEzOCwgIDE0MywgIDEyNywKKyAgICAgIDEyOCwgIDEzNiwgIDEzNSwgIDEy
NCwgIDEzMywgIDEzMSwgIDEzNywgICA5NiwgICA5NiwgIDEyNSwKKyAgICAgIDEyMSwgIDEzOSwg
IDEyNiwgIDE0MCwgIDE0NCwgICA5MywgIDEyOSwgIDEzMCwgIDE0MiwgICA5MywKKyAgICAgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywK
KyAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgIDEyMiwKKyAgICAgIDE0MSwgIDEyMywgIDEzNCwgIDExOCwgIDEwNCwgIDEyMywgIDExMiwg
IDEwNywgIDEwMiwgIDExMCwKKyAgICAgIDEwMCwgIDExMSwgIDEwMSwgICA5OSwgIDEwMywgICA5
OCwgICA5NSwgICA5NiwgICAgMCwgICAgMCwKKyAgICAgIDEzMCwgIDEyMiwgIDEyOSwgIDExOSwg
IDExNSwgIDExNywgIDExNiwgIDEyMCwgICA5MywgIDEwOCwKKyAgICAgIDExNCwgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5Mywg
ICAxMiwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKwor
ICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDE1LCAgIDE3LCAgIDkzLCAgIDkz
LCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
MTA5LCAgMTEzLCAgICAwLCAgIDk4LCAgICAwLCAgICAwLAorICAgICAgIDk3LCAgIDk0LCAgMTA1
LCAgMTA2LCAgIDQ1LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAg
ICAgIDkzLCAgIDkzLCAgIDkzLCAgIDEzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDIxLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDE4LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorCisgICAgICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgIDAsICAgOTksICAgIDAsICAgOTgsICAgOTMsCisgICAgICAgMjMsICAg
OTMsICAgOTMsICAgOTAsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAg
ICAgOTMsICAgMTYsICAgNDgsICAgOTMsICAgOTMsICAgOTMsICAgNjQsICAgOTMsICAgOTMsICAg
NTMsCisgICAgICAgNjgsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgNjUsCisgICAgICAgIDQsICAgMjgsICAgMjksICAgMzAsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgNTEsICAgMjQsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgMzEsICAgMzIsCisgICAgICAgMzMsICAgMjIs
ICAgOTMsICAgOTMsICAgOTMsICAgMTAsICAgMzcsICAgMzgsICAgMzksICAgNDYsCisgICAgICAg
IDcsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNzcsICAgNzgsICAgNzksICAgOTMsICAgMjUs
CisgICAgICAgNjksICAgMjAsICAgODAsICAgODEsICAgODIsICAgIDIsICAgNzQsICAgNzUsICAg
NzYsICAgOTMsCisKKyAgICAgICAxOSwgICA3MiwgICA5MywgICA5MywgICAzNCwgICAzNSwgICAz
NiwgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA2NiwgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywgICA0NywgICA5MywgICA5MiwgICA5MywgICA5MywKKyAgICAgICAxNCwgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA2NywgICA2MSwgICA1NiwgICA5MywgICA5MywKKyAgICAgICA5
MywgICA5MywgICA5MywgICA3MywgICA1MiwgICA5MywgICA1OSwgICAyNywgICA5MywgICA4OSwK
KyAgICAgICA2MCwgICA0NCwgICA3MSwgICA1NCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5
MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA1NSwgICAyNiwgICA5MywgICA5MywgICA5Mywg
ICAgMywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA0OSwgICAgOCwgICA5
MywgICAgOSwgICA5MywgICA5MywgICAxMSwKKyAgICAgICA2MiwgICA5MywgICA5MywgICA5Mywg
ICA1NywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA1MCwgICA3
MCwgICA1OCwgICAgNiwgICA2MywgICAgMSwgICA5MSwgICAgNSwgICA4MywKKworICAgICAgIDQw
LCAgIDg0LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAor
ICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDQxLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDQzLCAgIDkzLCAgIDg3LCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDg1LCAgIDkzLCAgIDg2LCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDQyLAorICAgICAgIDg4LCAgICAwCiAgICAgfSA7CiAKIHN0
YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9lY1syNTZdID0KQEAgLTQ4MSwyMTIgKzQ4MCwx
OTggQEAgc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQogCiBzdGF0aWMg
eXljb25zdCBmbGV4X2ludDMyX3QgeXlfbWV0YVs2OF0gPQogICAgIHsgICAwLAotICAgICAgICAx
LCAgICAxLCAgICAyLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAot
ICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICAz
LCAgICAzLAotICAgICAgICAzLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAzLCAgICAzLCAgICAzLAotICAgICAgICAzLCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0
LCAgICAxLCAgICAxLCAgICAxLCAgICAzLAotICAgICAgICAzLCAgICAzLCAgICAzLCAgICAzLCAg
ICAzLCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LAotICAgICAgICA0LCAgICA0LCAgICA0
LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LAotICAgICAgICA0LCAg
ICA0LCAgICA0LCAgICAxLCAgICAxLCAgICAxLCAgICAxCisgICAgICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCisgICAgICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsCisgICAg
ICAgIDIsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDIsICAgIDIsICAg
IDIsCisgICAgICAgIDIsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDEsICAgIDEs
ICAgIDEsICAgIDIsCisgICAgICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDMsICAg
IDMsICAgIDMsICAgIDMsICAgIDMsCisgICAgICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMs
ICAgIDMsICAgIDMsICAgIDMsICAgIDMsICAgIDMsCisgICAgICAgIDMsICAgIDMsICAgIDMsICAg
IDEsICAgIDEsICAgIDEsICAgIDEKICAgICB9IDsKIAotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQx
Nl90IHl5X2Jhc2VbNDY0XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYmFzZVs0
NDVdID0KICAgICB7ICAgMCwKLSAgICAgICAgMCwgICAgMCwgICA2NSwgICA2NiwgICA3NSwgICAg
MCwgIDY4MCwgIDY4MSwgIDY4MSwgIDY4MSwKLSAgICAgIDY1NCwgICA0NSwgIDEzNywgIDY4MSwg
IDY4MSwgIDY1MywgIDEzNCwgIDY4MSwgIDEzMywgIDEzMSwKLSAgICAgIDE0NiwgIDE1OSwgIDE2
OCwgIDY1MSwgIDY4MSwgIDE4NiwgIDY1MSwgICA0NywgIDY4MSwgICAgMCwKLSAgICAgIDY4MSwg
IDY4MSwgIDEyOCwgIDEwMCwgIDExMCwgIDE1MiwgIDE1NiwgIDE0NiwgIDE2NiwgIDYyMiwKLSAg
ICAgIDE3MywgIDEwOSwgIDYyMSwgIDEyNiwgIDE3NywgIDYxNSwgIDE3OCwgIDYyOCwgIDE4Nywg
IDE4NCwKLSAgICAgIDE0MSwgIDE5NywgIDYyNCwgIDY4MSwgIDE1NywgIDY4MSwgIDY4MSwgIDY4
MSwgIDY4MSwgIDY1NiwKLSAgICAgIDY4MSwgIDY4MSwgICAgMCwgIDY4MSwgIDY4MSwgIDY4MSwg
IDY4MSwgIDY4MSwgIDY4MSwgIDY4MSwKLSAgICAgIDY4MSwgIDY4MSwgIDY4MSwgIDIzNiwgIDY4
MSwgICAgMCwgIDY4MSwgIDI0MywgIDI3MywgIDI4MiwKLSAgICAgIDMwNCwgICAgMCwgIDMxNCwg
IDY4MSwgIDY4MSwgIDY4MSwgIDY0NCwgIDY4MSwgIDY4MSwgIDY4MSwKLSAgICAgIDY0MywgICAg
MCwgIDY4MSwgIDY4MSwgIDYxNiwgIDYwOSwgIDYxMiwgIDYyMCwgIDYxOSwgIDYwNiwKLQotICAg
ICAgNjIxLCAgNjA4LCAgNjE0LCAgNjAyLCAgNTk5LCAgNjEyLCAgNTk5LCAgNTk2LCAgNTk2LCAg
NjAyLAotICAgICAgNTkwLCAgMTg5LCAgNTk1LCAgNjA1LCAgNTkxLCAgNTk3LCAgNjAwLCAgNjAx
LCAgICAwLCAgMjE2LAotICAgICAgNjAwLCAgMTg4LCAgNTg2LCAgNTk5LCAgNTkwLCAgNTkyLCAg
NTgyLCAgNTk2LCAgNTkzLCAgNTk1LAotICAgICAgNTc4LCAgNTgzLCAgNTgwLCAgNTY5LCAgMTgz
LCAgNTc3LCAgNTgyLCAgNTc4LCAgNTgwLCAgNTY5LAotICAgICAgNTcyLCAgMjIwLCAgNTc3LCAg
NTY5LCAgNTgxLCAgMTc2LCAgNTc0LCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgICAwLCAgMzMx
LCAgICAwLCAgMzQ0LCAgMzYxLCAgMjkwLCAgMzc0LCAgICAwLCAgNjgxLCAgNjgxLAotICAgICAg
ICAwLCAgNTY2LCAgNTcwLCAgNTc5LCAgNTc2LCAgNTYwLCAgNTYwLCAgMjE1LCAgNTc1LCAgNTcy
LAotICAgICAgNTcyLCAgNTcwLCAgNTY3LCAgNTU5LCAgNTY1LCAgNTUyLCAgNTYzLCAgNTQ5LCAg
NTY1LCAgICAwLAotICAgICAgNTYyLCAgNTUwLCAgNTU3LCAgNTU0LCAgNTU4LCAgNTUxLCAgNTQw
LCAgNTM5LCAgNTUyLCAgNTU1LAotICAgICAgNTUyLCAgNTQ3LCAgNTM4LCAgMjYwLCAgNTQzLCAg
NTQ2LCAgNTM3LCAgNTM0LCAgNTM4LCAgNTQ0LAotCi0gICAgICA1MzUsICA1MjYsICA1MjksICA1
MjcsICA1MzcsICA1MjMsICA1MjEsICA1MzQsICA1MjAsICA1MjIsCi0gICAgICA1MTksICA1MzAs
ICA1MjksICAyODMsICA1MjQsICA1MTksICA1MDgsICAyNjQsICA1MjYsICA1MjgsCi0gICAgICA1
MTcsICAzODEsICAzODgsICAzOTUsICA0MDIsICA1MTgsICAgIDAsICA1MTYsICAzMjAsICAgIDAs
Ci0gICAgICA1MDgsICA1MDYsICA1MTQsICA1MDMsICA1MjAsICA1MDksICAzMzYsICAgIDAsICAg
IDAsICA1MDMsCi0gICAgICA1MTMsICA1MTMsICAgIDAsICA0OTgsICAzNDksICAgIDAsICAgIDAs
ICA1MDAsICAzNjYsICA1MDEsCi0gICAgICA0OTUsICA0OTQsICA0OTUsICA0OTQsICA0MDcsICAg
IDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsCi0gICAgICA0OTAsICA0OTEsICA0OTYsICA0ODcs
ICA1MDAsICA0OTUsICA0OTQsICA0ODYsICA0OTAsICA0ODIsCi0gICAgICA0ODUsICA0ODksICA0
OTQsICA0ODAsICA0OTIsICA0ODMsICAgIDAsICAgIDAsICA0ODksICA0NzgsCi0gICAgICA0Nzgs
ICA0ODMsICA0ODIsICA0NzksICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0NjksICA0ODEsCi0g
ICAgICA0ODMsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0NzEsICA0NzIs
ICA0NjYsCi0KLSAgICAgIDQ3NiwgICAgMCwgICAgMCwgICAgMCwgIDQ2NywgICAgMCwgICAgMCwg
ICAgMCwgICAgMCwgICAgMCwKLSAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ3
NCwgICAgMCwgICAgMCwgIDQ3MiwgIDQ2OCwKLSAgICAgICAgMCwgICAgMCwgICAgMCwgIDQ2NCwg
IDQ2MCwgIDQ2NSwgIDQ1NSwgIDQ2OCwgIDQ1NCwgIDQ2NywKLSAgICAgIDQ1NiwgIDQ2MywgICAg
MCwgIDQ2MSwgIDQ2MywgIDQ0NywgIDQ0OSwgIDQ1NSwgIDQ2MSwgIDQ1NiwKLSAgICAgIDQ0NCwg
ICAgMCwgIDQ0NiwgICAgMCwgIDQ0NSwgIDQ0OCwgICAgMCwgIDQzNywgIDQzNiwgIDQzNiwKLSAg
ICAgIDQ0OSwgICAgMCwgIDQ1MSwgICAgMCwgIDQ1MCwgIDQ0OSwgIDQzNCwgIDQ0NywgIDQzNCwg
ICAgMCwKLSAgICAgICAgMCwgIDQzNywgICAgMCwgICAgMCwgIDQyOSwgICAgMCwgICAgMCwgICAg
MCwgICAgMCwgICAgMCwKLSAgICAgIDQyNiwgIDQzNywgIDQzMCwgIDQzNiwgIDQzMywgIDQyOCwg
IDQyMCwgIDQzMiwgICAgMCwgICAgMCwKLSAgICAgIDQyNSwgIDQzMiwgIDQyMSwgICAgMCwgIDQz
MCwgIDQyNywgIDQxNywgIDQxMSwgIDQyNSwgICAgMCwKLSAgICAgICAgMCwgIDQyNSwgICAgMCwg
IDQyMywgIDQyMiwgICAgMCwgICAgMCwgIDQyMSwgIDQwNywgIDQxOSwKLQotICAgICAgICAwLCAg
NDEwLCAgNDMxLCAgNDMwLCAgNDI5LCAgNDAwLCAgMzk2LCAgICAwLCAgICAwLCAgICAwLAotICAg
ICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgNDIxLCAgMjUwLCAgNDIxLCAgNDExLCAg
Mzg0LAotICAgICAgMzkyLCAgMzk0LCAgMzkwLCAgMzkyLCAgMzkxLCAgMzkwLCAgMzkzLCAgMzkw
LCAgMzkxLCAgMzg4LAotICAgICAgICAwLCAgMzMyLCAgMzQzLCAgMzE3LCAgMzI5LCAgMzEzLCAg
MzE3LCAgMzA0LCAgMzIxLCAgMjkxLAotICAgICAgICAwLCAgMzAyLCAgMjgwLCAgMjcxLCAgMjU1
LCAgMjYyLCAgICAwLCAgMjU2LCAgICAwLCAgMjMyLAotICAgICAgMjA2LCAgMjEyLCAgMTQ4LCAg
MTU5LCAgMTEzLCAgICAwLCAgICAwLCAgNjgxLCAgNDQyLCAgNDQ0LAotICAgICAgNDQ2LCAgNDUw
LCAgMTYxCisgICAgICAgIDAsICAgIDAsICA1ODcsICA1ODgsICA1ODgsICA1ODgsICA1NjEsICAg
NDMsICAgNjQsICA1ODgsCisgICAgICA1ODgsICA1NjAsICAgNjEsICA1ODgsICAgNjAsICAgNTgs
ICA1NTksICAgNzcsICAgODYsICA1NTcsCisgICAgICA1ODgsICAxMDQsICA1NTcsICAgNTUsICA1
ODgsICAgIDAsICA1ODgsICA1ODgsICAgNzUsICAgMjYsCisgICAgICAgNTcsICAgODIsICAgODMs
ICAgNzMsICAgOTMsICA1MjgsICAgOTcsICAgOTUsICA1MjcsICAgNDQsCisgICAgICAgNzEsICA1
MjEsICAxMDQsICA1MzQsICAxMTAsICAxMTYsICAgMzUsICAxMTEsICA1MzAsICA1ODgsCisgICAg
ICAxMTQsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1ODgsICA1
ODgsCisgICAgICA1ODgsICA1ODgsICA1ODgsICAxNjUsICA1ODgsICAxNzIsICAyMDIsICAyMTEs
ICAyMzMsICAgIDAsCisgICAgICA1ODgsICA1ODgsICA1ODgsICA1NTEsICA1ODgsICA1ODgsICA1
ODgsICA1NTAsICAgIDAsICA1ODgsCisgICAgICA1ODgsICA1MjMsICA1MTYsICA1MTksICA1Mjcs
ICA1MjYsICA1MTMsICA1MjgsICA1MTUsICA1MjEsCisgICAgICA1MDksICA1MDYsICA1MTksICA1
MDYsICA1MDMsICA1MDMsICA1MDksICA0OTcsICAxMDgsICA1MDIsCisKKyAgICAgIDUxMiwgIDQ5
OCwgIDUwNCwgIDUwNywgIDUwOCwgICAgMCwgIDE0NSwgIDUwNywgIDExMywgIDQ5MywKKyAgICAg
IDUwNiwgIDQ5NywgIDQ5OSwgIDQ4OSwgIDUwMywgIDUwMCwgIDUwMiwgIDQ4NSwgIDQ5MCwgIDQ4
NywKKyAgICAgIDQ3NiwgIDE1NywgIDQ4NCwgIDQ4OSwgIDQ4NSwgIDQ4NywgIDQ3NiwgIDQ3OSwg
IDExOCwgIDQ4NCwKKyAgICAgIDQ3NiwgIDQ4OCwgICA3MCwgIDQ4MSwgIDU4OCwgIDU4OCwgIDI0
NiwgIDI1MywgIDI3MCwgIDIxOSwKKyAgICAgIDI4MywgICAgMCwgIDU4OCwgIDU4OCwgICAgMCwg
IDQ3MywgIDQ3NywgIDQ4NiwgIDQ4MywgIDQ2NywKKyAgICAgIDQ2NywgIDExOSwgIDQ4MiwgIDQ3
OSwgIDQ3OSwgIDQ3NywgIDQ3NCwgIDQ2NiwgIDQ3MiwgIDQ1OSwKKyAgICAgIDQ3MCwgIDQ1Niwg
IDQ3MiwgICAgMCwgIDQ2OSwgIDQ1NywgIDQ2NCwgIDQ2MSwgIDQ2NSwgIDQ1OCwKKyAgICAgIDQ0
NywgIDQ0NiwgIDQ1OSwgIDQ2MiwgIDQ1OSwgIDQ1NCwgIDQ0NSwgIDE4OCwgIDQ1MCwgIDQ1MywK
KyAgICAgIDQ0NCwgIDQ0MSwgIDQ0NSwgIDQ1MSwgIDQ0MiwgIDQzMywgIDQzNiwgIDQzNCwgIDQ0
NCwgIDQzMCwKKyAgICAgIDQyOCwgIDQ0MSwgIDQyNywgIDQyOSwgIDQyNiwgIDQzNywgIDQzNiwg
IDEyNCwgIDQzMSwgIDQyNiwKKworICAgICAgNDE1LCAgMjU4LCAgNDMzLCAgNDM1LCAgNDI0LCAg
MjkwLCAgMjk3LCAgMzA0LCAgMzExLCAgNDI1LAorICAgICAgICAwLCAgNDIzLCAgMjc1LCAgICAw
LCAgNDE1LCAgNDEzLCAgNDIxLCAgNDEwLCAgNDI3LCAgNDE2LAorICAgICAgMzE2LCAgICAwLCAg
ICAwLCAgNDEwLCAgNDIwLCAgNDIwLCAgICAwLCAgNDA1LCAgMzE5LCAgICAwLAorICAgICAgICAw
LCAgNDA3LCAgMzIyLCAgNDA4LCAgNDAyLCAgNDAxLCAgNDAyLCAgNDAxLCAgMzI1LCAgICAwLAor
ICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMzk3LCAgMzk4LCAgNDAzLCAgMzk0LCAgNDA3
LCAgNDAyLAorICAgICAgNDAxLCAgMzkzLCAgMzk3LCAgMzg5LCAgMzkyLCAgMzk2LCAgNDAxLCAg
Mzg3LCAgMzk5LCAgMzkwLAorICAgICAgICAwLCAgICAwLCAgMzk2LCAgMzg1LCAgMzg1LCAgMzkw
LCAgMzg5LCAgMzg2LCAgICAwLCAgICAwLAorICAgICAgICAwLCAgICAwLCAgMzc2LCAgMzg4LCAg
MzkwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLAorICAgICAgICAwLCAgMzc4LCAgMzc5
LCAgMzczLCAgMzgzLCAgICAwLCAgICAwLCAgICAwLCAgMzc0LCAgICAwLAorICAgICAgICAwLCAg
ICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMzgxLAorCisg
ICAgICAgIDAsICAgIDAsICAzNzksICAzNzUsICAgIDAsICAgIDAsICAgIDAsICAzNzEsICAzNjcs
ICAzNzIsCisgICAgICAzNjIsICAzNzUsICAzNjEsICAzNzQsICAzNjMsICAzNzAsICAgIDAsICAz
NjgsICAzNzAsICAzNTQsCisgICAgICAzNTYsICAzNjIsICAzNjgsICAzNjMsICAzNTEsICAgIDAs
ICAzNTMsICAgIDAsICAzNTIsICAzNTUsCisgICAgICAgIDAsICAzNDQsICAzNDMsICAzNDMsICAz
NTYsICAgIDAsICAzNTgsICAgIDAsICAzNTcsICAzNTYsCisgICAgICAzNDEsICAzNTQsICAzNDEs
ICAgIDAsICAgIDAsICAzNDQsICAgIDAsICAgIDAsICAzMzYsICAgIDAsCisgICAgICAgIDAsICAg
IDAsICAgIDAsICAgIDAsICAzMzMsICAzNDQsICAzMzcsICAzNDMsICAzNDAsICAzMzUsCisgICAg
ICAzMjcsICAzMzksICAgIDAsICAgIDAsICAzMzIsICAzMzksICAzMjgsICAgIDAsICAzMzcsICAz
MzQsCisgICAgICAzMjQsICAzMjksICAzMzIsICAgIDAsICAgIDAsICAzMzIsICAgIDAsICAzMzAs
ICAzMjksICAgIDAsCisgICAgICAgIDAsICAzMjgsICAzMTQsICAzMjYsICAgIDAsICAzMTcsICAz
MzgsICAzMzcsICAzMzYsICAzMDcsCisgICAgICAzMDMsICAgIDAsICAgIDAsICAgIDAsICAgIDAs
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzMjgsCisKKyAgICAgIDE2NiwgIDMyNSwgIDMxNiwg
IDI5OSwgIDMwOCwgIDMxMCwgIDMwNiwgIDMwOCwgIDMwNywgIDMwNiwKKyAgICAgIDMwOSwgIDMw
NiwgIDI1NiwgIDI1MywgICAgMCwgIDIyOCwgIDIzOCwgIDIyMiwgIDIzNSwgIDIwMywKKyAgICAg
IDIwNywgIDIwNCwgIDIxMiwgIDE5MSwgICAgMCwgIDIwMSwgIDE2NSwgIDE2NywgIDE1MywgIDE2
MSwKKyAgICAgICAgMCwgIDE3MCwgICAgMCwgIDE3NSwgIDE1MSwgIDE0MSwgIDEwMCwgIDExNCwg
ICA1OSwgICAgMCwKKyAgICAgICAgMCwgIDU4OCwgIDM1OSwgIDExMwogICAgIH0gOwogCi1zdGF0
aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfZGVmWzQ2NF0gPQorc3RhdGljIHl5Y29uc3QgZmxl
eF9pbnQxNl90IHl5X2RlZls0NDVdID0KICAgICB7ICAgMCwKLSAgICAgIDQ1OCwgICAgMSwgIDQ1
OSwgIDQ1OSwgIDQ1OCwgICAgNSwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAg
ICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ2MCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ2MSwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MiwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAg
IDQ1OCwgIDQ2MywgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwKLSAgICAgIDQ1OCwgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwKLQotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDU4LCAgNDU4LCAgNDU4
LAotICAgICAgNDYxLCAgNDU4LCAgNDYyLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDYzLCAg
NDU4LCAgNDU4LAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotCi0gICAgICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
Ci0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsCi0gICAgICA0NjAsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0g
ICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0KLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAg
ICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwKLQotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgICAwLCAgNDU4LCAgNDU4
LAotICAgICAgNDU4LCAgNDU4LCAgNDU4CisgICAgICA0NDIsICAgIDEsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDMsICA0NDIsICA0NDIsICA0NDIsICA0NDMsCisgICAg
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDQsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDMsICA0NDIsCisgICAgICA0NDIsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
CisKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0NCwg
IDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywK
KyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKworICAgICAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQzLAorICAgICAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAor
ICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAg
ICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLAorCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAg
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisKKyAgICAg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgICAgMCwgIDQ0MiwgIDQ0
MgogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0Wzc0OV0gPQor
c3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X254dFs2NTZdID0KICAgICB7ICAgMCwKLSAg
ICAgICAgOCwgICAgOSwgICAxMCwgICAxMSwgICAxMiwgICAxMywgICAxNCwgICAxNSwgICAxNiwg
ICAxNywKLSAgICAgICAxOCwgICAxOSwgICAyMCwgICAyMSwgICAyMiwgICAyMywgICAyMywgICAy
MywgICAyMywgICAyMywKLSAgICAgICAyMywgICAyNCwgICAyNSwgICAyNiwgICAyNywgICAyOCwg
ICAyOSwgICAzMCwgICAzMCwgICAzMCwKLSAgICAgICAzMCwgICAzMCwgICAzMCwgICAzMCwgICAz
MCwgICAzMCwgICAzMSwgICAzMiwgICAzMywgICAzNCwKLSAgICAgICAzNSwgICAzNiwgICAzNywg
ICAzOCwgICAzOSwgICA0MCwgICA0MSwgICA0MiwgICAzMCwgICA0MywKLSAgICAgICA0NCwgICA0
NSwgICA0NiwgICA0NywgICA0OCwgICA0OSwgICA1MCwgICA1MSwgICA1MiwgICA1MywKLSAgICAg
ICAzMCwgICAzMCwgICAzMCwgICA1NCwgICA1NSwgICA1NiwgICA1NywgICA1OSwgICA1OSwgICA2
NSwKLSAgICAgICA2NiwgICA5MCwgICA5MSwgICA2MCwgICA2MCwgICAgOCwgICA2MSwgICA2Miwg
ICAgOCwgICAgOCwKLSAgICAgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAg
OCwgICAgOCwgICAgOCwgICAgOCwKLSAgICAgICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwg
ICAgOCwgICAgOCwgICAgOCwgICAgOCwgICAgOCwKLQotICAgICAgICA4LCAgICA4LCAgIDYzLCAg
IDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLAotICAgICAgIDYzLCAgICA4
LCAgICA4LCAgICA4LCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLAotICAgICAg
IDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYz
LAotICAgICAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAgIDYzLCAg
ICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgIDY3LCAgIDcwLCAgIDcyLCAgIDc0LCAgIDc0
LCAgIDc0LCAgIDc0LCAgIDc0LAotICAgICAgIDc0LCAgIDc0LCAgIDkzLCAgMTE5LCAgIDc1LCAg
IDk1LCAgIDk2LCAgIDczLCAgIDcxLCAgIDc2LAotICAgICAgMTIwLCAgIDY4LCAgIDk3LCAgMTU4
LCAgIDk4LCAgMTIzLCAgIDk0LCAgMTIxLCAgIDk5LCAgMTI0LAotICAgICAgIDc3LCAgIDc4LCAg
NDU3LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDgwLAotICAgICAgIDc4
LCAgMTQ4LCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgxLAot
ICAgICAgIDg1LCAgMTAwLCAgMTQyLCAgNDU2LCAgIDgyLCAgMTA3LCAgMTQzLCAgMTA4LCAgIDgx
LCAgMTAzLAotCi0gICAgICA0NTUsICAxMDEsICAgODEsICAxMDQsICAxMDIsICAxMTAsICAxMDks
ICAgODYsICAxMDUsICAgODcsCi0gICAgICAgODgsICAgODEsICAxMTYsICAxMTEsICAxMDYsICAx
MTIsICAxMjUsICAxMjgsICAxMTMsICAgODIsCi0gICAgICAxMTcsICAxNDksICAyMDYsICAyMTks
ICAxMTQsICAyMjAsICAxMzIsICAxMzgsICAxNzgsICAxMjYsCi0gICAgICAxMzksICAxMTgsICAx
MjksICAxMzMsICAxMzQsICAxMzAsICAxNDQsICAyMDcsICAxNDAsICAxOTIsCi0gICAgICAxNDUs
ICAxNzksICA0NTQsICAxMzUsICAxMzYsICAxNDEsICAxMzcsICAxOTMsICA0NTMsICAxNDYsCi0g
ICAgICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAxNTQsICAxNTQs
ICAxNTQsCi0gICAgICAxNTQsICAxNTQsICAxNTQsICAxNTQsICA0NTIsICAxODYsICAxNTIsICAy
MTQsICAxODcsICAxODgsCi0gICAgICAyMzIsICAyMzMsICAxODksICAxNTUsICAxOTAsICAyMTUs
ICAyNTgsICAyNTksICAyNjAsICAxNTIsCi0gICAgICAyODUsICAyODYsICAyODcsICA0MjIsICA0
MjMsICAgNzgsICAxNTUsICAgNzksICAgNzksICAgNzksCi0gICAgICAgNzksICAgNzksICAgNzks
ICAgODAsICAgNzgsICA0NTEsICAgODAsICAgODAsICAgODAsICAgODAsCi0KLSAgICAgICA4MCwg
ICA4MCwgICA4MCwgICA4MSwgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywKLSAg
ICAgIDE1NywgIDQ1MCwgICA4MSwgIDE1NiwgIDQ0OSwgIDE1NiwgICA4MSwgIDQ0OCwgIDE1Nywg
IDE1NywKLSAgICAgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgICA4MSwgICA3OCwgIDI4
MCwgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgIDI4MSwg
IDI5MywgIDI5NCwgIDI5NSwgIDQ0NywKLSAgICAgIDIyMiwgIDQ0NiwgIDIyMiwgIDQ0NSwgICA4
MSwgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIyMywKLSAgICAgIDIyMywgIDIyMywgIDMwMiwg
IDMwMywgIDMwNCwgIDQ0NCwgIDQ0MywgICA4MSwgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1
NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDMwOSwgIDMxMCwgIDMxMSwgIDQ0MiwgIDQ0MSwKLSAgICAg
IDIyNCwgIDQ0MCwgIDIyNCwgIDQzOSwgIDE1NSwgIDIyNSwgIDIyNSwgIDIyNSwgIDIyNSwgIDIy
NSwKLSAgICAgIDIyNSwgIDIyNSwgIDMxMywgIDMxNCwgIDMxNSwgIDQzOCwgIDQzNywgIDE1NSwg
IDE1NywgIDE1NywKLSAgICAgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDIyMywgIDIy
MywgIDIyMywgIDIyMywgIDIyMywKLQotICAgICAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIz
LCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMjI1LCAg
MjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAgMjI1
LCAgMjI1LCAgMzIxLCAgMzIyLCAgMzIzLCAgNDAzLCAgNDA0LCAgNDA1LCAgNDM2LAotICAgICAg
NDM1LCAgNDM0LCAgNDMzLCAgNDMyLCAgNDMxLCAgNDMwLCAgNDI5LCAgNDI4LCAgNDI3LCAgNDA2
LAotICAgICAgNDI2LCAgNDA3LCAgIDU4LCAgIDU4LCAgIDU4LCAgIDU4LCAgIDkyLCAgIDkyLCAg
MTUxLCAgMTUxLAotICAgICAgMTUzLCAgNDI1LCAgMTUzLCAgMTUzLCAgNDI0LCAgNDIxLCAgNDIw
LCAgNDE5LCAgNDE4LCAgNDE3LAotICAgICAgNDE2LCAgNDE1LCAgNDE0LCAgNDEzLCAgNDEyLCAg
NDExLCAgNDEwLCAgNDA5LCAgNDA4LCAgNDAyLAotICAgICAgNDAxLCAgNDAwLCAgMzk5LCAgMzk4
LCAgMzk3LCAgMzk2LCAgMzk1LCAgMzk0LCAgMzkzLCAgMzkyLAotICAgICAgMzkxLCAgMzkwLCAg
Mzg5LCAgMzg4LCAgMzg3LCAgMzg2LCAgMzg1LCAgMzg0LCAgMzgzLCAgMzgyLAotICAgICAgMzgx
LCAgMzgwLCAgMzc5LCAgMzc4LCAgMzc3LCAgMzc2LCAgMzc1LCAgMzc0LCAgMzczLCAgMzcyLAot
Ci0gICAgICAzNzEsICAzNzAsICAzNjksICAzNjgsICAzNjcsICAzNjYsICAzNjUsICAzNjQsICAz
NjMsICAzNjIsCi0gICAgICAzNjEsICAzNjAsICAzNTksICAzNTgsICAzNTcsICAzNTYsICAzNTUs
ICAzNTQsICAzNTMsICAzNTIsCi0gICAgICAzNTEsICAzNTAsICAzNDksICAzNDgsICAzNDcsICAz
NDYsICAzNDUsICAzNDQsICAzNDMsICAzNDIsCi0gICAgICAzNDEsICAzNDAsICAzMzksICAzMzgs
ICAzMzcsICAzMzYsICAzMzUsICAzMzQsICAzMzMsICAzMzIsCi0gICAgICAzMzEsICAzMzAsICAz
MjksICAzMjgsICAzMjcsICAzMjYsICAzMjUsICAzMjQsICAzMjAsICAzMTksCi0gICAgICAzMTgs
ICAzMTcsICAzMTYsICAzMTIsICAzMDgsICAzMDcsICAzMDYsICAzMDUsICAzMDEsICAzMDAsCi0g
ICAgICAyOTksICAyOTgsICAyOTcsICAyOTYsICAyOTIsICAyOTEsICAyOTAsICAyODksICAyODgs
ICAyODQsCi0gICAgICAyODMsICAyODIsICAyNzksICAyNzgsICAyNzcsICAyNzYsICAyNzUsICAy
NzQsICAyNzMsICAyNzIsCi0gICAgICAyNzEsICAyNzAsICAyNjksICAyNjgsICAyNjcsICAyNjYs
ICAyNjUsICAyNjQsICAyNjMsICAyNjIsCi0gICAgICAyNjEsICAyNTcsICAyNTYsICAyNTUsICAy
NTQsICAyNTMsICAyNTIsICAyNTEsICAyNTAsICAyNDksCi0KLSAgICAgIDI0OCwgIDI0NywgIDI0
NiwgIDI0NSwgIDI0NCwgIDI0MywgIDI0MiwgIDI0MSwgIDI0MCwgIDIzOSwKLSAgICAgIDIzOCwg
IDIzNywgIDIzNiwgIDIzNSwgIDIzNCwgIDIzMSwgIDIzMCwgIDIyOSwgIDIyOCwgIDIyNywKLSAg
ICAgIDIyNiwgIDIyMSwgIDIxOCwgIDIxNywgIDIxNiwgIDIxMywgIDIxMiwgIDIxMSwgIDIxMCwg
IDIwOSwKLSAgICAgIDIwOCwgIDIwNSwgIDIwNCwgIDIwMywgIDIwMiwgIDIwMSwgIDIwMCwgIDE5
OSwgIDE5OCwgIDE5NywKLSAgICAgIDE5NiwgIDE5NSwgIDE5NCwgIDE5MSwgIDE4NSwgIDE4NCwg
IDE4MywgIDE4MiwgIDE4MSwgIDE4MCwKLSAgICAgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwgIDE3
MywgIDE3MiwgIDE3MSwgIDE3MCwgIDE2OSwgIDE2OCwKLSAgICAgIDE2NywgIDE2NiwgIDE2NSwg
IDE2NCwgIDE2MywgIDE2MiwgIDE2MSwgIDE2MCwgIDE1OSwgIDE1MCwKLSAgICAgIDE0NywgIDEz
MSwgIDEyNywgIDEyMiwgIDExNSwgICA4OSwgICA4NCwgICA2OSwgICA2NCwgIDQ1OCwKLSAgICAg
ICAgNywgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwKLQotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4CisgICAgICAgIDQs
ICAgIDUsICAgIDYsICAgIDcsICAgIDgsICAgIDksICAgMTAsICAgMTEsICAgMTIsICAgMTMsCisg
ICAgICAgMTQsICAgMTUsICAgMTYsICAgMTcsICAgMTgsICAgMTksICAgMTksICAgMTksICAgMTks
ICAgMTksCisgICAgICAgMTksICAgMjAsICAgMjEsICAgMjIsICAgMjMsICAgMjQsICAgMjUsICAg
MjYsICAgMjYsICAgMjYsCisgICAgICAgMjYsICAgMjYsICAgMjYsICAgMjYsICAgMjYsICAgMjYs
ICAgMjcsICAgMjgsICAgMjksICAgMzAsCisgICAgICAgMzEsICAgMzIsICAgMzMsICAgMzQsICAg
MzUsICAgMzYsICAgMzcsICAgMzgsICAgMjYsICAgMzksCisgICAgICAgNDAsICAgNDEsICAgNDIs
ICAgNDMsICAgNDQsICAgNDUsICAgNDYsICAgNDcsICAgNDgsICAgNDksCisgICAgICAgMjYsICAg
MjYsICAgMjYsICAgNTAsICAgNTEsICAgNTIsICAgNTMsICAgNTUsICAgNTYsICAgNTcsCisgICAg
ICAgNjAsICAgNjIsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAgNjQsICAg
NzcsCisgICAgICAgNzgsICAgODIsICAgODMsICAxMTAsICAgNjMsICAgNjEsICAxMjksICAxMTEs
ICAgNTgsICAgNjYsCisgICAgICAxMzAsICAgNjcsICAgNjcsICAgNjcsICAgNjcsICAgNjcsICAg
NjcsICAgNjgsICAgNjYsICAgODAsCisKKyAgICAgICA2OCwgICA2OCwgICA2OCwgICA2OCwgICA2
OCwgICA2OCwgICA2OCwgICA2OSwgICA3MiwgICA4NCwKKyAgICAgIDExMiwgICA4NSwgICA3MCwg
ICA4MSwgIDE0MiwgICA4NiwgICA2OSwgIDIwMywgIDQ0MSwgIDIwNCwKKyAgICAgICA2OSwgICA4
NywgICA5NCwgIDExMywgICA5NSwgICA3MywgICA5MCwgICA3NCwgICA3NSwgICA2OSwKKyAgICAg
ICA5MSwgICA4OCwgICA5NywgICA5NiwgICA4OSwgICA5MiwgIDEwMywgICA3MCwgIDEzNSwgIDEw
NiwKKyAgICAgICA5OCwgICA5MywgICA5OSwgIDExNSwgIDEwNCwgIDEwMCwgIDEwNywgIDE2Miwg
IDQ0MCwgIDExOSwKKyAgICAgIDEzMSwgIDEwMSwgIDQzOSwgIDEwOCwgIDEzMiwgIDEwNSwgIDEy
MCwgIDEyMSwgIDExNiwgIDEyNSwKKyAgICAgIDE2MywgIDExNywgIDEyNiwgIDEzMywgIDE3Niwg
IDE5OCwgIDEyMiwgIDEyMywgIDI2NCwgIDEyNCwKKyAgICAgIDEyNywgIDQzOCwgIDE3NywgIDE5
OSwgIDIxNiwgIDIxNywgIDI2NSwgIDEyOCwgIDEzNiwgICA2NCwKKyAgICAgICA2NCwgICA2NCwg
ICA2NCwgICA2NCwgICA2NCwgICA2NCwgIDEzOCwgIDEzOCwgIDEzOCwgIDEzOCwKKyAgICAgIDEz
OCwgIDEzOCwgIDEzOCwgIDQzNywgIDE3MCwgIDEzNywgIDE5MCwgIDE3MSwgIDE3MiwgIDQwNiwK
KworICAgICAgNDA3LCAgMTczLCAgMTM5LCAgMTc0LCAgMjQyLCAgMjQzLCAgMjQ0LCAgNDM2LCAg
MTM3LCAgNDM1LAorICAgICAgNDM0LCAgMTkxLCAgNDMzLCAgNDMyLCAgIDY2LCAgMTM5LCAgIDY3
LCAgIDY3LCAgIDY3LCAgIDY3LAorICAgICAgIDY3LCAgIDY3LCAgIDY4LCAgIDY2LCAgNDMxLCAg
IDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LAorICAgICAgIDY4LCAgIDY4LCAgIDY5LCAgMTQx
LCAgMTQxLCAgMTQxLCAgMTQxLCAgMTQxLCAgMTQxLCAgMTQxLAorICAgICAgNDMwLCAgIDY5LCAg
MTQwLCAgNDI5LCAgMTQwLCAgIDY5LCAgNDI4LCAgMTQxLCAgMTQxLCAgMTQxLAorICAgICAgMTQx
LCAgMTQxLCAgMTQxLCAgMTQxLCAgIDY5LCAgMjA2LCAgNDI3LCAgMjA2LCAgNDI2LCAgNDI1LAor
ICAgICAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMTM4LCAgMTM4
LCAgMTM4LAorICAgICAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LCAgMjY5LCAgMjcwLCAgMjcxLCAg
NDI0LCAgNDIzLCAgMjA4LAorICAgICAgNDIyLCAgMjA4LCAgNDIxLCAgMTM5LCAgMjA5LCAgMjA5
LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LAorICAgICAgMjA5LCAgMjc3LCAgMjc4LCAgMjc5LCAg
NDIwLCAgNDE5LCAgMTM5LCAgMTQxLCAgMTQxLCAgMTQxLAorCisgICAgICAxNDEsICAxNDEsICAx
NDEsICAxNDEsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsCisgICAgICAyMDcs
ICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDksICAyMDksCisg
ICAgICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDks
ICAyMDksCisgICAgICAyMDksICAyMDksICAyODYsICAyODcsICAyODgsICAyOTMsICAyOTQsICAy
OTUsICAyOTcsICAyOTgsCisgICAgICAyOTksICAzMDUsICAzMDYsICAzMDcsICAzODcsICAzODgs
ICAzODksICA0MTgsICA0MTcsICA0MTYsCisgICAgICA0MTUsICA0MTQsICA0MTMsICA0MTIsICA0
MTEsICA0MTAsICA0MDksICAzOTAsICA0MDgsICAzOTEsCisgICAgICAgNzksICAgNzksICA0MDUs
ICA0MDQsICA0MDMsICA0MDIsICA0MDEsICA0MDAsICAzOTksICAzOTgsCisgICAgICAzOTcsICAz
OTYsICAzOTUsICAzOTQsICAzOTMsICAzOTIsICAzODYsICAzODUsICAzODQsICAzODMsCisgICAg
ICAzODIsICAzODEsICAzODAsICAzNzksICAzNzgsICAzNzcsICAzNzYsICAzNzUsICAzNzQsICAz
NzMsCisgICAgICAzNzIsICAzNzEsICAzNzAsICAzNjksICAzNjgsICAzNjcsICAzNjYsICAzNjUs
ICAzNjQsICAzNjMsCisKKyAgICAgIDM2MiwgIDM2MSwgIDM2MCwgIDM1OSwgIDM1OCwgIDM1Nywg
IDM1NiwgIDM1NSwgIDM1NCwgIDM1MywKKyAgICAgIDM1MiwgIDM1MSwgIDM1MCwgIDM0OSwgIDM0
OCwgIDM0NywgIDM0NiwgIDM0NSwgIDM0NCwgIDM0MywKKyAgICAgIDM0MiwgIDM0MSwgIDM0MCwg
IDMzOSwgIDMzOCwgIDMzNywgIDMzNiwgIDMzNSwgIDMzNCwgIDMzMywKKyAgICAgIDMzMiwgIDMz
MSwgIDMzMCwgIDMyOSwgIDMyOCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMywKKyAgICAg
IDMyMiwgIDMyMSwgIDMyMCwgIDMxOSwgIDMxOCwgIDMxNywgIDMxNiwgIDMxNSwgIDMxNCwgIDMx
MywKKyAgICAgIDMxMiwgIDMxMSwgIDMxMCwgIDMwOSwgIDMwOCwgIDMwNCwgIDMwMywgIDMwMiwg
IDMwMSwgIDMwMCwKKyAgICAgIDI5NiwgIDI5MiwgIDI5MSwgIDI5MCwgIDI4OSwgIDI4NSwgIDI4
NCwgIDI4MywgIDI4MiwgIDI4MSwKKyAgICAgIDI4MCwgIDI3NiwgIDI3NSwgIDI3NCwgIDI3Mywg
IDI3MiwgIDI2OCwgIDI2NywgIDI2NiwgIDI2MywKKyAgICAgIDI2MiwgIDI2MSwgIDI2MCwgIDI1
OSwgIDI1OCwgIDI1NywgIDI1NiwgIDI1NSwgIDI1NCwgIDI1MywKKyAgICAgIDI1MiwgIDI1MSwg
IDI1MCwgIDI0OSwgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDI0MSwgIDI0MCwKKworICAgICAg
MjM5LCAgMjM4LCAgMjM3LCAgMjM2LCAgMjM1LCAgMjM0LCAgMjMzLCAgMjMyLCAgMjMxLCAgMjMw
LAorICAgICAgMjI5LCAgMjI4LCAgMjI3LCAgMjI2LCAgMjI1LCAgMjI0LCAgMjIzLCAgMjIyLCAg
MjIxLCAgMjIwLAorICAgICAgMjE5LCAgMjE4LCAgMjE1LCAgMjE0LCAgMjEzLCAgMjEyLCAgMjEx
LCAgMjEwLCAgMjA1LCAgMjAyLAorICAgICAgMjAxLCAgMjAwLCAgMTk3LCAgMTk2LCAgMTk1LCAg
MTk0LCAgMTkzLCAgMTkyLCAgMTg5LCAgMTg4LAorICAgICAgMTg3LCAgMTg2LCAgMTg1LCAgMTg0
LCAgMTgzLCAgMTgyLCAgMTgxLCAgMTgwLCAgMTc5LCAgMTc4LAorICAgICAgMTc1LCAgMTY5LCAg
MTY4LCAgMTY3LCAgMTY2LCAgMTY1LCAgMTY0LCAgMTYxLCAgMTYwLCAgMTU5LAorICAgICAgMTU4
LCAgMTU3LCAgMTU2LCAgMTU1LCAgMTU0LCAgMTUzLCAgMTUyLCAgMTUxLCAgMTUwLCAgMTQ5LAor
ICAgICAgMTQ4LCAgMTQ3LCAgMTQ2LCAgMTQ1LCAgMTQ0LCAgMTQzLCAgMTM0LCAgMTE4LCAgMTE0
LCAgMTA5LAorICAgICAgMTAyLCAgIDc2LCAgIDcxLCAgIDY1LCAgIDU5LCAgIDU0LCAgNDQyLCAg
ICAzLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisg
ICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIKICAgICB9
IDsKIAotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1s3NDldID0KK3N0YXRpYyB5
eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9jaGtbNjU2XSA9CiAgICAgeyAgIDAsCiAgICAgICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCiAg
ICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsCkBAIC02OTQsOTUgKzY3OSw4NSBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3Qg
eXlfY2hrWzc0OV0gCiAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsCiAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCiAgICAgICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCi0gICAgICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMsICAgIDQsICAgMTIsCi0gICAgICAg
MTIsICAgMjgsICAgMjgsICAgIDMsICAgIDQsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUs
Ci0gICAgICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAg
IDUsICAgIDUsCi0gICAgICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDUs
ICAgIDUsICAgIDUsICAgIDUsCi0KLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAg
NSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwK
LSAgICAgICAgNSwgICAgNSwgICAxMywgICAxNywgICAxOSwgICAyMCwgICAyMCwgICAyMCwgICAy
MCwgICAyMCwKLSAgICAgICAyMCwgICAyMCwgICAzMywgICA0MiwgICAyMSwgICAzNCwgICAzNCwg
ICAxOSwgICAxNywgICAyMSwKLSAgICAgICA0MiwgICAxMywgICAzNSwgIDQ2MywgICAzNSwgICA0
NCwgICAzMywgICA0MiwgICAzNSwgICA0NCwKLSAgICAgICAyMSwgICAyMiwgIDQ1NSwgICAyMiwg
ICAyMiwgICAyMiwgICAyMiwgICAyMiwgICAyMiwgICAyMiwKLSAgICAgICAyMywgICA1NSwgICAy
MywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMiwKLSAgICAgICAyNiwg
ICAzNiwgICA1MSwgIDQ1NCwgICAyMiwgICAzOCwgICA1MSwgICAzOCwgICAyMywgICAzNywKLQot
ICAgICAgNDUzLCAgIDM2LCAgIDIyLCAgIDM3LCAgIDM2LCAgIDM5LCAgIDM4LCAgIDI2LCAgIDM3
LCAgIDI2LAotICAgICAgIDI2LCAgIDIzLCAgIDQxLCAgIDM5LCAgIDM3LCAgIDM5LCAgIDQ1LCAg
IDQ3LCAgIDM5LCAgIDIyLAotICAgICAgIDQxLCAgIDU1LCAgMTM1LCAgMTQ2LCAgIDM5LCAgMTQ2
LCAgIDQ5LCAgIDUwLCAgMTEyLCAgIDQ1LAotICAgICAgIDUwLCAgIDQxLCAgIDQ3LCAgIDQ5LCAg
IDQ5LCAgIDQ3LCAgIDUyLCAgMTM1LCAgIDUwLCAgMTIyLAotICAgICAgIDUyLCAgMTEyLCAgNDUy
LCAgIDQ5LCAgIDQ5LCAgIDUwLCAgIDQ5LCAgMTIyLCAgNDUxLCAgIDUyLAotICAgICAgIDc0LCAg
IDc0LCAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0LCAgIDc4LCAgIDc4LCAgIDc4LAotICAg
ICAgIDc4LCAgIDc4LCAgIDc4LCAgIDc4LCAgNDUwLCAgMTIwLCAgIDc0LCAgMTQyLCAgMTIwLCAg
MTIwLAotICAgICAgMTY4LCAgMTY4LCAgMTIwLCAgIDc4LCAgMTIwLCAgMTQyLCAgMTk0LCAgMTk0
LCAgMTk0LCAgIDc0LAotICAgICAgMjE4LCAgMjE4LCAgMjE4LCAgNDE3LCAgNDE3LCAgIDc5LCAg
IDc4LCAgIDc5LCAgIDc5LCAgIDc5LAotICAgICAgIDc5LCAgIDc5LCAgIDc5LCAgIDc5LCAgIDgw
LCAgNDQ4LCAgIDgwLCAgIDgwLCAgIDgwLCAgIDgwLAotCi0gICAgICAgODAsICAgODAsICAgODAs
ICAgNzksICAxNTYsICAxNTYsICAxNTYsICAxNTYsICAxNTYsICAxNTYsCi0gICAgICAxNTYsICA0
NDYsICAgODAsICAgODEsICA0NDUsICAgODEsICAgNzksICA0NDQsICAgODEsICAgODEsCi0gICAg
ICAgODEsICAgODEsICAgODEsICAgODEsICAgODEsICAgODAsICAgODMsICAyMTQsICAgODMsICAg
ODMsCi0gICAgICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAyMTQsICAyMjksICAyMjks
ICAyMjksICA0NDMsCi0gICAgICAxNTIsICA0NDIsICAxNTIsICA0NDAsICAgODMsICAxNTIsICAx
NTIsICAxNTIsICAxNTIsICAxNTIsCi0gICAgICAxNTIsICAxNTIsICAyMzcsICAyMzcsICAyMzcs
ICA0MzksICA0MzgsICAgODMsICAxNTQsICAxNTQsCi0gICAgICAxNTQsICAxNTQsICAxNTQsICAx
NTQsICAxNTQsICAyNDUsICAyNDUsICAyNDUsICA0MzcsICA0MzYsCi0gICAgICAxNTUsICA0MzUs
ICAxNTUsICA0MzQsICAxNTQsICAxNTUsICAxNTUsICAxNTUsICAxNTUsICAxNTUsCi0gICAgICAx
NTUsICAxNTUsICAyNDksICAyNDksICAyNDksICA0MzMsICA0MzIsICAxNTQsICAxNTcsICAxNTcs
Ci0gICAgICAxNTcsICAxNTcsICAxNTcsICAxNTcsICAxNTcsICAyMjIsICAyMjIsICAyMjIsICAy
MjIsICAyMjIsCi0KLSAgICAgIDIyMiwgIDIyMiwgIDIyMywgIDIyMywgIDIyMywgIDIyMywgIDIy
MywgIDIyMywgIDIyMywgIDIyNCwKLSAgICAgIDIyNCwgIDIyNCwgIDIyNCwgIDIyNCwgIDIyNCwg
IDIyNCwgIDIyNSwgIDIyNSwgIDIyNSwgIDIyNSwKLSAgICAgIDIyNSwgIDIyNSwgIDIyNSwgIDI1
NSwgIDI1NSwgIDI1NSwgIDM4OCwgIDM4OCwgIDM4OCwgIDQzMCwKLSAgICAgIDQyOSwgIDQyOCwg
IDQyNywgIDQyNiwgIDQyNSwgIDQyNCwgIDQyMywgIDQyMiwgIDQyMSwgIDM4OCwKLSAgICAgIDQy
MCwgIDM4OCwgIDQ1OSwgIDQ1OSwgIDQ1OSwgIDQ1OSwgIDQ2MCwgIDQ2MCwgIDQ2MSwgIDQ2MSwK
LSAgICAgIDQ2MiwgIDQxOSwgIDQ2MiwgIDQ2MiwgIDQxOCwgIDQxNiwgIDQwNywgIDQwNiwgIDQw
NSwgIDQwNCwKLSAgICAgIDQwMywgIDQwMiwgIDQwMCwgIDM5OSwgIDM5OCwgIDM5NSwgIDM5NCwg
IDM5MiwgIDM4OSwgIDM4NywKLSAgICAgIDM4NiwgIDM4NSwgIDM4MywgIDM4MiwgIDM4MSwgIDM3
OCwgIDM3NywgIDM3NiwgIDM3NSwgIDM3NCwKLSAgICAgIDM3MywgIDM3MiwgIDM3MSwgIDM2NSwg
IDM2MiwgIDM1OSwgIDM1OCwgIDM1NywgIDM1NiwgIDM1NSwKLSAgICAgIDM1MywgIDM1MSwgIDM1
MCwgIDM0OSwgIDM0OCwgIDM0NiwgIDM0NSwgIDM0MywgIDM0MSwgIDM0MCwKLQotICAgICAgMzM5
LCAgMzM4LCAgMzM3LCAgMzM2LCAgMzM1LCAgMzM0LCAgMzMyLCAgMzMxLCAgMzMwLCAgMzI5LAot
ICAgICAgMzI4LCAgMzI3LCAgMzI2LCAgMzI1LCAgMzI0LCAgMzIwLCAgMzE5LCAgMzE2LCAgMzA1
LCAgMzAxLAotICAgICAgMzAwLCAgMjk5LCAgMjk4LCAgMjkxLCAgMjkwLCAgMjg5LCAgMjg0LCAg
MjgzLCAgMjgyLCAgMjgxLAotICAgICAgMjgwLCAgMjc5LCAgMjc2LCAgMjc1LCAgMjc0LCAgMjcz
LCAgMjcyLCAgMjcxLCAgMjcwLCAgMjY5LAotICAgICAgMjY4LCAgMjY3LCAgMjY2LCAgMjY1LCAg
MjY0LCAgMjYzLCAgMjYyLCAgMjYxLCAgMjU0LCAgMjUzLAotICAgICAgMjUyLCAgMjUxLCAgMjUw
LCAgMjQ4LCAgMjQ0LCAgMjQyLCAgMjQxLCAgMjQwLCAgMjM2LCAgMjM1LAotICAgICAgMjM0LCAg
MjMzLCAgMjMyLCAgMjMxLCAgMjI4LCAgMjI2LCAgMjIxLCAgMjIwLCAgMjE5LCAgMjE3LAotICAg
ICAgMjE2LCAgMjE1LCAgMjEzLCAgMjEyLCAgMjExLCAgMjEwLCAgMjA5LCAgMjA4LCAgMjA3LCAg
MjA2LAotICAgICAgMjA1LCAgMjA0LCAgMjAzLCAgMjAyLCAgMjAxLCAgMjAwLCAgMTk5LCAgMTk4
LCAgMTk3LCAgMTk2LAotICAgICAgMTk1LCAgMTkzLCAgMTkyLCAgMTkxLCAgMTkwLCAgMTg5LCAg
MTg4LCAgMTg3LCAgMTg2LCAgMTg1LAotCi0gICAgICAxODQsICAxODMsICAxODIsICAxODEsICAx
NzksICAxNzgsICAxNzcsICAxNzYsICAxNzUsICAxNzQsCi0gICAgICAxNzMsICAxNzIsICAxNzEs
ICAxNzAsICAxNjksICAxNjcsICAxNjYsICAxNjUsICAxNjQsICAxNjMsCi0gICAgICAxNjIsICAx
NDcsICAxNDUsICAxNDQsICAxNDMsICAxNDEsICAxNDAsICAxMzksICAxMzgsICAxMzcsCi0gICAg
ICAxMzYsICAxMzQsICAxMzMsICAxMzIsICAxMzEsICAxMzAsICAxMjksICAxMjgsICAxMjcsICAx
MjYsCi0gICAgICAxMjUsICAxMjQsICAxMjMsICAxMjEsICAxMTgsICAxMTcsICAxMTYsICAxMTUs
ICAxMTQsICAxMTMsCi0gICAgICAxMTEsICAxMTAsICAxMDksICAxMDgsICAxMDcsICAxMDYsICAx
MDUsICAxMDQsICAxMDMsICAxMDIsCi0gICAgICAxMDEsICAxMDAsICAgOTksICAgOTgsICAgOTcs
ICAgOTYsICAgOTUsICAgOTEsICAgODcsICAgNjAsCi0gICAgICAgNTMsICAgNDgsICAgNDYsICAg
NDMsICAgNDAsICAgMjcsICAgMjQsICAgMTYsICAgMTEsICAgIDcsCi0gICAgICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgs
Ci0KLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAgICAgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OAorICAgICAgICAxLCAgICAxLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICA4LCAgICA4LCAgICA5LAorICAgICAgIDEzLCAg
IDE1LCAgIDE2LCAgIDE2LCAgIDE2LCAgIDE2LCAgIDE2LCAgIDE2LCAgIDE2LCAgIDI0LAorICAg
ICAgIDI0LCAgIDMwLCAgIDMwLCAgIDQwLCAgIDE1LCAgIDEzLCAgIDQ3LCAgIDQwLCAgICA5LCAg
IDE4LAorICAgICAgIDQ3LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4
LCAgIDE5LCAgIDI5LAorCisgICAgICAgMTksICAgMTksICAgMTksICAgMTksICAgMTksICAgMTks
ICAgMTksICAgMTgsICAgMjIsICAgMzEsCisgICAgICAgNDEsICAgMzEsICAgMTgsICAgMjksICA0
NDQsICAgMzEsICAgMTksICAxMzMsICA0MzksICAxMzMsCisgICAgICAgMTgsICAgMzIsICAgMzQs
ICAgNDEsICAgMzQsICAgMjIsICAgMzMsICAgMjIsICAgMjIsICAgMTksCisgICAgICAgMzMsICAg
MzIsICAgMzUsICAgMzQsICAgMzIsICAgMzMsICAgMzcsICAgMTgsICAgNTEsICAgMzgsCisgICAg
ICAgMzUsICAgMzMsICAgMzUsICAgNDMsICAgMzcsICAgMzUsICAgMzgsICAgOTksICA0MzgsICAg
NDUsCisgICAgICAgNDgsICAgMzUsICA0MzcsICAgMzgsICAgNDgsICAgMzcsICAgNDUsICAgNDUs
ICAgNDMsICAgNDYsCisgICAgICAgOTksICAgNDMsICAgNDYsICAgNDgsICAxMDksICAxMjksICAg
NDUsICAgNDUsICAxOTgsICAgNDUsCisgICAgICAgNDYsICA0MzYsICAxMDksICAxMjksICAxNTIs
ICAxNTIsICAxOTgsICAgNDYsICAgNTEsICAgNjQsCisgICAgICAgNjQsICAgNjQsICAgNjQsICAg
NjQsICAgNjQsICAgNjQsICAgNjYsICAgNjYsICAgNjYsICAgNjYsCisgICAgICAgNjYsICAgNjYs
ICAgNjYsICA0MzUsICAxMDcsICAgNjQsICAxMjIsICAxMDcsICAxMDcsICA0MDEsCisKKyAgICAg
IDQwMSwgIDEwNywgICA2NiwgIDEwNywgIDE3OCwgIDE3OCwgIDE3OCwgIDQzNCwgICA2NCwgIDQz
MiwKKyAgICAgIDQzMCwgIDEyMiwgIDQyOSwgIDQyOCwgICA2NywgICA2NiwgICA2NywgICA2Nywg
ICA2NywgICA2NywKKyAgICAgICA2NywgICA2NywgICA2NywgICA2OCwgIDQyNywgICA2OCwgICA2
OCwgICA2OCwgICA2OCwgICA2OCwKKyAgICAgICA2OCwgICA2OCwgICA2NywgIDE0MCwgIDE0MCwg
IDE0MCwgIDE0MCwgIDE0MCwgIDE0MCwgIDE0MCwKKyAgICAgIDQyNiwgICA2OCwgICA2OSwgIDQy
NCwgICA2OSwgICA2NywgIDQyMywgICA2OSwgICA2OSwgICA2OSwKKyAgICAgICA2OSwgICA2OSwg
ICA2OSwgICA2OSwgICA2OCwgIDEzNywgIDQyMiwgIDEzNywgIDQyMSwgIDQyMCwKKyAgICAgIDEz
NywgIDEzNywgIDEzNywgIDEzNywgIDEzNywgIDEzNywgIDEzNywgIDEzOCwgIDEzOCwgIDEzOCwK
KyAgICAgIDEzOCwgIDEzOCwgIDEzOCwgIDEzOCwgIDIwMiwgIDIwMiwgIDIwMiwgIDQxOSwgIDQx
OCwgIDEzOSwKKyAgICAgIDQxNywgIDEzOSwgIDQxNiwgIDEzOCwgIDEzOSwgIDEzOSwgIDEzOSwg
IDEzOSwgIDEzOSwgIDEzOSwKKyAgICAgIDEzOSwgIDIxMywgIDIxMywgIDIxMywgIDQxNCwgIDQx
MywgIDEzOCwgIDE0MSwgIDE0MSwgIDE0MSwKKworICAgICAgMTQxLCAgMTQxLCAgMTQxLCAgMTQx
LCAgMjA2LCAgMjA2LCAgMjA2LCAgMjA2LCAgMjA2LCAgMjA2LAorICAgICAgMjA2LCAgMjA3LCAg
MjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA3LCAgMjA4LCAgMjA4LAorICAgICAgMjA4
LCAgMjA4LCAgMjA4LCAgMjA4LCAgMjA4LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LCAgMjA5LAor
ICAgICAgMjA5LCAgMjA5LCAgMjIxLCAgMjIxLCAgMjIxLCAgMjI5LCAgMjI5LCAgMjI5LCAgMjMz
LCAgMjMzLAorICAgICAgMjMzLCAgMjM5LCAgMjM5LCAgMjM5LCAgMzcyLCAgMzcyLCAgMzcyLCAg
NDEyLCAgNDExLCAgNDEwLAorICAgICAgNDA5LCAgNDA4LCAgNDA3LCAgNDA2LCAgNDA1LCAgNDA0
LCAgNDAzLCAgMzcyLCAgNDAyLCAgMzcyLAorICAgICAgNDQzLCAgNDQzLCAgNDAwLCAgMzkxLCAg
MzkwLCAgMzg5LCAgMzg4LCAgMzg3LCAgMzg2LCAgMzg0LAorICAgICAgMzgzLCAgMzgyLCAgMzc5
LCAgMzc4LCAgMzc2LCAgMzczLCAgMzcxLCAgMzcwLCAgMzY5LCAgMzY3LAorICAgICAgMzY2LCAg
MzY1LCAgMzYyLCAgMzYxLCAgMzYwLCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LAorICAg
ICAgMzQ5LCAgMzQ2LCAgMzQzLCAgMzQyLCAgMzQxLCAgMzQwLCAgMzM5LCAgMzM3LCAgMzM1LCAg
MzM0LAorCisgICAgICAzMzMsICAzMzIsICAzMzAsICAzMjksICAzMjcsICAzMjUsICAzMjQsICAz
MjMsICAzMjIsICAzMjEsCisgICAgICAzMjAsICAzMTksICAzMTgsICAzMTYsICAzMTUsICAzMTQs
ICAzMTMsICAzMTIsICAzMTEsICAzMTAsCisgICAgICAzMDksICAzMDgsICAzMDQsICAzMDMsICAz
MDAsICAyODksICAyODUsICAyODQsICAyODMsICAyODIsCisgICAgICAyNzUsICAyNzQsICAyNzMs
ICAyNjgsICAyNjcsICAyNjYsICAyNjUsICAyNjQsICAyNjMsICAyNjAsCisgICAgICAyNTksICAy
NTgsICAyNTcsICAyNTYsICAyNTUsICAyNTQsICAyNTMsICAyNTIsICAyNTEsICAyNTAsCisgICAg
ICAyNDksICAyNDgsICAyNDcsICAyNDYsICAyNDUsICAyMzgsICAyMzcsICAyMzYsICAyMzUsICAy
MzQsCisgICAgICAyMzIsICAyMjgsICAyMjYsICAyMjUsICAyMjQsICAyMjAsICAyMTksICAyMTgs
ICAyMTcsICAyMTYsCisgICAgICAyMTUsICAyMTIsICAyMTAsICAyMDUsICAyMDQsICAyMDMsICAy
MDEsICAyMDAsICAxOTksICAxOTcsCisgICAgICAxOTYsICAxOTUsICAxOTQsICAxOTMsICAxOTIs
ICAxOTEsICAxOTAsICAxODksICAxODgsICAxODcsCisgICAgICAxODYsICAxODUsICAxODQsICAx
ODMsICAxODIsICAxODEsICAxODAsICAxNzksICAxNzcsICAxNzYsCisKKyAgICAgIDE3NSwgIDE3
NCwgIDE3MywgIDE3MiwgIDE3MSwgIDE3MCwgIDE2OSwgIDE2OCwgIDE2NywgIDE2NiwKKyAgICAg
IDE2NSwgIDE2MywgIDE2MiwgIDE2MSwgIDE2MCwgIDE1OSwgIDE1OCwgIDE1NywgIDE1NiwgIDE1
NSwKKyAgICAgIDE1NCwgIDE1MywgIDE1MSwgIDE1MCwgIDE0OSwgIDE0OCwgIDE0NywgIDE0Niwg
IDEzNCwgIDEzMiwKKyAgICAgIDEzMSwgIDEzMCwgIDEyOCwgIDEyNywgIDEyNiwgIDEyNSwgIDEy
NCwgIDEyMywgIDEyMSwgIDEyMCwKKyAgICAgIDExOSwgIDExOCwgIDExNywgIDExNiwgIDExNSwg
IDExNCwgIDExMywgIDExMiwgIDExMSwgIDExMCwKKyAgICAgIDEwOCwgIDEwNSwgIDEwNCwgIDEw
MywgIDEwMiwgIDEwMSwgIDEwMCwgICA5OCwgICA5NywgICA5NiwKKyAgICAgICA5NSwgICA5NCwg
ICA5MywgICA5MiwgICA5MSwgICA5MCwgICA4OSwgICA4OCwgICA4NywgICA4NiwKKyAgICAgICA4
NSwgICA4NCwgICA4MywgICA4MiwgICA3OCwgICA3NCwgICA0OSwgICA0NCwgICA0MiwgICAzOSwK
KyAgICAgICAzNiwgICAyMywgICAyMCwgICAxNywgICAxMiwgICAgNywgICAgMywgIDQ0MiwgIDQ0
MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwKKworICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQy
LCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAor
ICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQy
LCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyCiAgICAgfSA7CiAKIC8q
IFRhYmxlIG9mIGJvb2xlYW5zLCB0cnVlIGlmIHJ1bGUgY291bGQgbWF0Y2ggZW9sLiAqLwotc3Rh
dGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X3J1bGVfY2FuX21hdGNoX2VvbFsxNTZdID0KK3N0
YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9ydWxlX2Nhbl9tYXRjaF9lb2xbMTQ4XSA9CiAg
ICAgeyAgIDAsCi0wLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAKKzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEs
IDAsIDAsICAgICB9OworICAgIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsICAgICB9OwogCiAvKiBU
aGUgaW50ZW50IGJlaGluZCB0aGlzIGRlZmluaXRpb24gaXMgdGhhdCBpdCdsbCBjYXRjaAogICog
YW55IHVzZXMgb2YgUkVKRUNUIHdoaWNoIGZsZXggbWlzc2VkLgpAQCAtODE3LDcgKzc5MiwxMCBA
QCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMgTEVYRVIgKGdsc2xhCiAjcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZSA6IDQxMDIpCiAjZW5kaWYKIAotI2RlZmluZSBZWV9VU0VSX0FDVElPTiB5eWx2
YWwtPmxleC5saW5lID0geXlsaW5lbm87CisjZGVmaW5lIFlZX1VTRVJfQUNUSU9OICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHl5bGxvYy0+Zmlyc3RfZmlsZSA9IHl5bGxv
Yy0+bGFzdF9maWxlID0geXljb2x1bW47IFwKKyAgICB5eWxsb2MtPmZpcnN0X2xpbmUgPSB5eWxs
b2MtPmxhc3RfbGluZSA9IHl5bGluZW5vOworCiAjZGVmaW5lIFlZX0lOUFVUKGJ1ZiwgcmVzdWx0
LCBtYXhfc2l6ZSkgXAogICAgIHJlc3VsdCA9IHN0cmluZ19pbnB1dChidWYsIG1heF9zaXplLCB5
eXNjYW5uZXIpOwogCkBAIC04MjYsOCArODA0LDYgQEAgc3RhdGljIGludCBjaGVja190eXBlKHl5
c2Nhbl90IHl5c2Nhbm5lcgogc3RhdGljIGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nh
bm5lcik7CiAKICNkZWZpbmUgSU5JVElBTCAwCi0jZGVmaW5lIENPTU1FTlQgMQotI2RlZmluZSBG
SUVMRFMgMgogCiAjZGVmaW5lIFlZX0VYVFJBX1RZUEUgVFBhcnNlQ29udGV4dCoKIApAQCAtODY1
LDYgKzg0MSw4IEBAIHN0cnVjdCB5eWd1dHNfdAogCiAgICAgWVlTVFlQRSAqIHl5bHZhbF9yOwog
CisgICAgWVlMVFlQRSAqIHl5bGxvY19yOworCiAgICAgfTsgLyogZW5kIHN0cnVjdCB5eWd1dHNf
dCAqLwogCiBzdGF0aWMgaW50IHl5X2luaXRfZ2xvYmFscyAoeXlzY2FuX3QgeXlzY2FubmVyICk7
CkBAIC04NzMsNiArODUxLDggQEAgc3RhdGljIGludCB5eV9pbml0X2dsb2JhbHMgKHl5c2Nhbl90
IHl5cwogICAgICAqIGZyb20gYmlzb24gb3V0cHV0IGluIHNlY3Rpb24gMS4qLwogICAgICMgICAg
ZGVmaW5lIHl5bHZhbCB5eWctPnl5bHZhbF9yCiAgICAgCisgICAgIyAgICBkZWZpbmUgeXlsbG9j
IHl5Zy0+eXlsbG9jX3IKKyAgICAKIGludCB5eWxleF9pbml0ICh5eXNjYW5fdCogc2Nhbm5lcik7
CiAKIGludCB5eWxleF9pbml0X2V4dHJhIChZWV9FWFRSQV9UWVBFIHVzZXJfZGVmaW5lZCx5eXNj
YW5fdCogc2Nhbm5lcik7CkBAIC05MTAsNiArODkwLDEwIEBAIFlZU1RZUEUgKiB5eWdldF9sdmFs
ICh5eXNjYW5fdCB5eXNjYW5uZXIKIAogdm9pZCB5eXNldF9sdmFsIChZWVNUWVBFICogeXlsdmFs
X3BhcmFtICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIAorICAgICAgIFlZTFRZUEUgKnl5Z2V0X2xs
b2MgKHl5c2Nhbl90IHl5c2Nhbm5lciApOworICAgIAorICAgICAgICB2b2lkIHl5c2V0X2xsb2Mg
KFlZTFRZUEUgKiB5eWxsb2NfcGFyYW0gLHl5c2Nhbl90IHl5c2Nhbm5lciApOworICAgIAogLyog
TWFjcm9zIGFmdGVyIHRoaXMgcG9pbnQgY2FuIGFsbCBiZSBvdmVycmlkZGVuIGJ5IHVzZXIgZGVm
aW5pdGlvbnMgaW4KICAqIHNlY3Rpb24gMS4KICAqLwpAQCAtOTQwLDEyICs5MjQsNiBAQCBzdGF0
aWMgaW50IGlucHV0ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIAogI2VuZGlmCiAKLSAgICBzdGF0
aWMgdm9pZCB5eV9wdXNoX3N0YXRlIChpbnQgbmV3X3N0YXRlICx5eXNjYW5fdCB5eXNjYW5uZXIp
OwotICAgIAotICAgIHN0YXRpYyB2b2lkIHl5X3BvcF9zdGF0ZSAoeXlzY2FuX3QgeXlzY2FubmVy
ICk7Ci0gICAgCi0gICAgc3RhdGljIGludCB5eV90b3Bfc3RhdGUgKHl5c2Nhbl90IHl5c2Nhbm5l
ciApOwotICAgIAogLyogQW1vdW50IG9mIHN0dWZmIHRvIHNsdXJwIHVwIHdpdGggZWFjaCByZWFk
LiAqLwogI2lmbmRlZiBZWV9SRUFEX0JVRl9TSVpFCiAjZGVmaW5lIFlZX1JFQURfQlVGX1NJWkUg
ODE5MgpAQCAtMTAyMiwxMCArMTAwMCwxMCBAQCBzdGF0aWMgaW50IGlucHV0ICh5eXNjYW5fdCB5
eXNjYW5uZXIgKTsKICNkZWZpbmUgWVlfREVDTF9JU19PVVJTIDEKIAogZXh0ZXJuIGludCB5eWxl
eCBcCi0gICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSAseXlzY2FuX3QgeXlz
Y2FubmVyKTsKKyAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFtLFlZTFRZUEUg
KiB5eWxsb2NfcGFyYW0gLHl5c2Nhbl90IHl5c2Nhbm5lcik7CiAKICNkZWZpbmUgWVlfREVDTCBp
bnQgeXlsZXggXAotICAgICAgICAgICAgICAgKFlZU1RZUEUgKiB5eWx2YWxfcGFyYW0gLCB5eXNj
YW5fdCB5eXNjYW5uZXIpCisgICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSwg
WVlMVFlQRSAqIHl5bGxvY19wYXJhbSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKICNlbmRpZiAvKiAh
WVlfREVDTCAqLwogCiAvKiBDb2RlIGV4ZWN1dGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBy
dWxlLCBhZnRlciB5eXRleHQgYW5kIHl5bGVuZwpAQCAtMTA1MiwxMiArMTAzMCwxMCBAQCBZWV9E
RUNMCiAJcmVnaXN0ZXIgaW50IHl5X2FjdDsKICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAo
c3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CiAKLSAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0
ID0geXlleHRyYTsKLQotICAgIC8qIFNpbmdsZS1saW5lIGNvbW1lbnRzICovCi0KICAgICB5eWx2
YWwgPSB5eWx2YWxfcGFyYW07CiAKKyAgICB5eWxsb2MgPSB5eWxsb2NfcGFyYW07CisKIAlpZiAo
ICF5eWctPnl5X2luaXQgKQogCQl7CiAJCXl5Zy0+eXlfaW5pdCA9IDE7CkBAIC0xMTA5LDEzICsx
MDg1LDEzIEBAIHl5X21hdGNoOgogCQkJd2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50
X3N0YXRlXSArIHl5X2NdICE9IHl5X2N1cnJlbnRfc3RhdGUgKQogCQkJCXsKIAkJCQl5eV9jdXJy
ZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJCWlmICggeXlf
Y3VycmVudF9zdGF0ZSA+PSA0NTkgKQorCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NDMg
KQogCQkJCQl5eV9jID0geXlfbWV0YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJCQl9CiAJCQl5
eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5z
aWduZWQgaW50KSB5eV9jXTsKIAkJCSsreXlfY3A7CiAJCQl9Ci0JCXdoaWxlICggeXlfY3VycmVu
dF9zdGF0ZSAhPSA0NTggKTsKKwkJd2hpbGUgKCB5eV9jdXJyZW50X3N0YXRlICE9IDQ0MiApOwog
CQl5eV9jcCA9IHl5Zy0+eXlfbGFzdF9hY2NlcHRpbmdfY3BvczsKIAkJeXlfY3VycmVudF9zdGF0
ZSA9IHl5Zy0+eXlfbGFzdF9hY2NlcHRpbmdfc3RhdGU7CiAKQEAgLTExNDksMTk4ICsxMTI1LDE5
OSBAQCBkb19hY3Rpb246CS8qIFRoaXMgbGFiZWwgaXMgdXNlZCBvbmx5IHRvCiAKIGNhc2UgMToK
IFlZX1JVTEVfU0VUVVAKLTsKK3sgcmV0dXJuIElOVkFSSUFOVDsgfQogCVlZX0JSRUFLCi0vKiBN
dWx0aS1saW5lIGNvbW1lbnRzICovCiBjYXNlIDI6CiBZWV9SVUxFX1NFVFVQCi17IHl5X3B1c2hf
c3RhdGUoQ09NTUVOVCwgeXlzY2FubmVyKTsgfQoreyByZXR1cm4gSElHSF9QUkVDSVNJT047IH0K
IAlZWV9CUkVBSwogY2FzZSAzOgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4gTUVESVVNX1BSRUNJ
U0lPTjsgfQorCVlZX0JSRUFLCiBjYXNlIDQ6Ci0vKiBydWxlIDQgY2FuIG1hdGNoIGVvbCAqLwog
WVlfUlVMRV9TRVRVUAotOworeyByZXR1cm4gTE9XX1BSRUNJU0lPTjsgfQogCVlZX0JSRUFLCiBj
YXNlIDU6CiBZWV9SVUxFX1NFVFVQCi17IHl5X3BvcF9zdGF0ZSh5eXNjYW5uZXIpOyB9Cit7IHJl
dHVybiBQUkVDSVNJT047IH0KIAlZWV9CUkVBSwogY2FzZSA2OgogWVlfUlVMRV9TRVRVUAoteyBy
ZXR1cm4oSU5WQVJJQU5UKTsgfQoreyByZXR1cm4gQVRUUklCVVRFOyB9CiAJWVlfQlJFQUsKIGNh
c2UgNzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKEhJR0hfUFJFQ0lTSU9OKTsgfQoreyByZXR1
cm4gQ09OU1RfUVVBTDsgfQogCVlZX0JSRUFLCiBjYXNlIDg6CiBZWV9SVUxFX1NFVFVQCi17IHJl
dHVybihNRURJVU1fUFJFQ0lTSU9OKTsgfQoreyByZXR1cm4gVU5JRk9STTsgfQogCVlZX0JSRUFL
CiBjYXNlIDk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihMT1dfUFJFQ0lTSU9OKTsgfQoreyBy
ZXR1cm4gVkFSWUlORzsgfQogCVlZX0JSRUFLCiBjYXNlIDEwOgogWVlfUlVMRV9TRVRVUAoteyBy
ZXR1cm4oUFJFQ0lTSU9OKTsgfQoreyByZXR1cm4gQlJFQUs7IH0KIAlZWV9CUkVBSwogY2FzZSAx
MToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKEFUVFJJQlVURSk7IH0KK3sgcmV0dXJuIENPTlRJ
TlVFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihDT05T
VF9RVUFMKTsgfQoreyByZXR1cm4gRE87IH0KIAlZWV9CUkVBSwogY2FzZSAxMzoKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKFVOSUZPUk0pOyB9Cit7IHJldHVybiBGT1I7IH0KIAlZWV9CUkVBSwog
Y2FzZSAxNDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFZBUllJTkcpOyB9Cit7IHJldHVybiBX
SElMRTsgfQogCVlZX0JSRUFLCiBjYXNlIDE1OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQlJF
QUspOyB9Cit7IHJldHVybiBJRjsgfQogCVlZX0JSRUFLCiBjYXNlIDE2OgogWVlfUlVMRV9TRVRV
UAoteyByZXR1cm4oQ09OVElOVUUpOyB9Cit7IHJldHVybiBFTFNFOyB9CiAJWVlfQlJFQUsKIGNh
c2UgMTc6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihETyk7IH0KK3sgcmV0dXJuIElOX1FVQUw7
IH0KIAlZWV9CUkVBSwogY2FzZSAxODoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKEZPUik7IH0K
K3sgcmV0dXJuIE9VVF9RVUFMOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTk6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybihXSElMRSk7IH0KK3sgcmV0dXJuIElOT1VUX1FVQUw7IH0KIAlZWV9CUkVBSwog
Y2FzZSAyMDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKElGKTsgfQoreyByZXR1cm4gRkxPQVRf
VFlQRTsgfQogCVlZX0JSRUFLCiBjYXNlIDIxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oRUxT
RSk7IH0KK3sgcmV0dXJuIElOVF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjI6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybihJTl9RVUFMKTsgfQoreyByZXR1cm4gVk9JRF9UWVBFOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMjM6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihPVVRfUVVBTCk7IH0KK3sg
cmV0dXJuIEJPT0xfVFlQRTsgfQogCVlZX0JSRUFLCiBjYXNlIDI0OgogWVlfUlVMRV9TRVRVUAot
eyByZXR1cm4oSU5PVVRfUVVBTCk7IH0KK3sgeXlsdmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4g
Qk9PTENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjU6CiBZWV9SVUxFX1NFVFVQCi17IGNv
bnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihGTE9BVF9UWVBFKTsgfQoreyB5eWx2
YWwtPmxleC5iID0gZmFsc2U7IHJldHVybiBCT09MQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAyNjoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0
dXJuKElOVF9UWVBFKTsgfQoreyByZXR1cm4gRElTQ0FSRDsgfQogCVlZX0JSRUFLCiBjYXNlIDI3
OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4o
Vk9JRF9UWVBFKTsgfQoreyByZXR1cm4gUkVUVVJOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjg6CiBZ
WV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihCT09M
X1RZUEUpOyB9Cit7IHJldHVybiBNQVRSSVgyOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjk6CiBZWV9S
VUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuKEJPT0xDT05TVEFOVCk7
IH0KK3sgcmV0dXJuIE1BVFJJWDM7IH0KIAlZWV9CUkVBSwogY2FzZSAzMDoKIFlZX1JVTEVfU0VU
VVAKLXsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyByZXR1cm4oQk9PTENPTlNUQU5UKTsgfQoreyBy
ZXR1cm4gTUFUUklYNDsgfQogCVlZX0JSRUFLCiBjYXNlIDMxOgogWVlfUlVMRV9TRVRVUAoteyBy
ZXR1cm4oRElTQ0FSRCk7IH0KK3sgcmV0dXJuIFZFQzI7IH0KIAlZWV9CUkVBSwogY2FzZSAzMjoK
IFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJFVFVSTik7IH0KK3sgcmV0dXJuIFZFQzM7IH0KIAlZ
WV9CUkVBSwogY2FzZSAzMzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gdHJ1ZTsgcmV0dXJuKE1BVFJJWDIpOyB9Cit7IHJldHVybiBWRUM0OyB9CiAJWVlfQlJFQUsK
IGNhc2UgMzQ6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7
IHJldHVybihNQVRSSVgzKTsgfQoreyByZXR1cm4gSVZFQzI7IH0KIAlZWV9CUkVBSwogY2FzZSAz
NToKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJu
KE1BVFJJWDQpOyB9Cit7IHJldHVybiBJVkVDMzsgfQogCVlZX0JSRUFLCiBjYXNlIDM2OgogWVlf
UlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzIp
OyB9Cit7IHJldHVybiBJVkVDNDsgfQogCVlZX0JSRUFLCiBjYXNlIDM3OgogWVlfUlVMRV9TRVRV
UAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzMpOyB9Cit7IHJl
dHVybiBCVkVDMjsgfQogCVlZX0JSRUFLCiBjYXNlIDM4OgogWVlfUlVMRV9TRVRVUAoteyBjb250
ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzQpOyB9Cit7IHJldHVybiBCVkVD
MzsgfQogCVlZX0JSRUFLCiBjYXNlIDM5OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKElWRUMyKTsgfQoreyByZXR1cm4gQlZFQzQ7IH0KIAlZ
WV9CUkVBSwogY2FzZSA0MDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gdHJ1ZTsgcmV0dXJuIChJVkVDMyk7IH0KK3sgcmV0dXJuIFNBTVBMRVIyRDsgfQogCVlZX0JS
RUFLCiBjYXNlIDQxOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0
cnVlOyByZXR1cm4gKElWRUM0KTsgfQoreyByZXR1cm4gU0FNUExFUkNVQkU7IH0KIAlZWV9CUkVB
SwogY2FzZSA0MjoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuIChCVkVDMik7IH0KK3sgcmV0dXJuIFNBTVBMRVJfRVhURVJOQUxfT0VTOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgNDM6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlw
ZSA9IHRydWU7IHJldHVybiAoQlZFQzMpOyB9Cit7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgNDQ6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlw
ZSA9IHRydWU7IHJldHVybiAoQlZFQzQpOyB9Cit7IHJldHVybiBTVFJVQ1Q7IH0KIAlZWV9CUkVB
SwogY2FzZSA0NToKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuIFNBTVBMRVIyRDsgfQoreyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIp
OyB9CiAJWVlfQlJFQUsKIGNhc2UgNDY6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFm
dGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQoreyByZXR1cm4gcmVzZXJ2ZWRf
d29yZCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDc6CiBZWV9SVUxFX1NFVFVQCi17
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSX0VYVEVSTkFMX09F
UzsgfQoreyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNh
c2UgNDg6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJl
dHVybiBTQU1QTEVSMkRSRUNUOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7
IH0KIAlZWV9CUkVBSwogY2FzZSA0OToKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0
ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKFNUUlVDVCk7IH0KK3sgcmV0dXJuIHJlc2VydmVkX3dvcmQo
eXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDUwOgogWVlfUlVMRV9TRVRVUApAQCAtMTUx
NiwyNjYgKzE0OTMsMjI4IEBAIFlZX1JVTEVfU0VUVVAKIAlZWV9CUkVBSwogY2FzZSA5MzoKIFlZ
X1JVTEVfU0VUVVAKLXsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreworICAg
eXlsdmFsLT5sZXguc3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsgCisgICByZXR1cm4g
Y2hlY2tfdHlwZSh5eXNjYW5uZXIpOworfQogCVlZX0JSRUFLCiBjYXNlIDk0OgogWVlfUlVMRV9T
RVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7IHl5bHZhbC0+bGV4
LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENP
TlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgOTU6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBy
ZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KK3sgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0
PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4gSU5UQ09OU1RBTlQ7IH0KIAlZWV9C
UkVBSwogY2FzZSA5NjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlz
Y2FubmVyKTsgfQoreyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0
ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDk3Ogog
WVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7IHl5
bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVy
biBGTE9BVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgOTg6CiBZWV9SVUxFX1NFVFVQCi17
Ci0gICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAKLSAgIHJl
dHVybiBjaGVja190eXBlKHl5c2Nhbm5lcik7Ci19Cit7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNf
Y2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgOTk6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmkgPSBzdGF0
aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsg
fQoreyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkp
OyByZXR1cm4gRkxPQVRDT05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDEwMDoKIFlZX1JVTEVf
U0VUVVAKLXsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwg
MCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Cit7IHJldHVybiBBRERfQVNTSUdOOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMTAxOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5lcnJvcih5eWxp
bmVubywgIkludmFsaWQgT2N0YWwgbnVtYmVyLiIsIHl5dGV4dCk7IGNvbnRleHQtPnJlY292ZXIo
KTsgcmV0dXJuIDA7fQoreyByZXR1cm4gU1VCX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEw
MjoKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3Ry
dG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RBTlQpOyB9Cit7IHJldHVybiBNVUxf
QVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAzOgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwt
PmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1cm4oRkxP
QVRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIERJVl9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAx
MDQ6CiBZWV9SVUxFX1NFVFVQCi17IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
YXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQoreyByZXR1cm4gTU9E
X0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEwNToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFs
LT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZM
T0FUQ09OU1RBTlQpOyB9Cit7IHJldHVybiBMRUZUX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBjYXNl
IDEwNjoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihBRERfQVNTSUdOKTsgfQoreyByZXR1cm4g
UklHSFRfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA3OgogWVlfUlVMRV9TRVRVUAoteyAg
cmV0dXJuKFNVQl9BU1NJR04pOyB9Cit7IHJldHVybiBBTkRfQVNTSUdOOyB9CiAJWVlfQlJFQUsK
IGNhc2UgMTA4OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKE1VTF9BU1NJR04pOyB9Cit7IHJl
dHVybiBYT1JfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA5OgogWVlfUlVMRV9TRVRVUAot
eyAgcmV0dXJuKERJVl9BU1NJR04pOyB9Cit7IHJldHVybiBPUl9BU1NJR047IH0KIAlZWV9CUkVB
SwogY2FzZSAxMTA6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTU9EX0FTU0lHTik7IH0KK3sg
cmV0dXJuIElOQ19PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExMToKIFlZX1JVTEVfU0VUVVAKLXsg
IHJldHVybihMRUZUX0FTU0lHTik7IH0KK3sgcmV0dXJuIERFQ19PUDsgfQogCVlZX0JSRUFLCiBj
YXNlIDExMjoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihSSUdIVF9BU1NJR04pOyB9Cit7IHJl
dHVybiBBTkRfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTM6CiBZWV9SVUxFX1NFVFVQCi17ICBy
ZXR1cm4oQU5EX0FTU0lHTik7IH0KK3sgcmV0dXJuIE9SX09QOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
MTE0OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFhPUl9BU1NJR04pOyB9Cit7IHJldHVybiBY
T1JfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTU6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4o
T1JfQVNTSUdOKTsgfQoreyByZXR1cm4gTEVfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTY6CiBZ
WV9SVUxFX1NFVFVQCi17ICByZXR1cm4oSU5DX09QKTsgfQoreyByZXR1cm4gR0VfT1A7IH0KIAlZ
WV9CUkVBSwogY2FzZSAxMTc6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oREVDX09QKTsgfQor
eyByZXR1cm4gRVFfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMTg6CiBZWV9SVUxFX1NFVFVQCi17
ICByZXR1cm4oQU5EX09QKTsgfQoreyByZXR1cm4gTkVfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAx
MTk6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oT1JfT1ApOyB9Cit7IHJldHVybiBMRUZUX09Q
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIwOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFhPUl9P
UCk7IH0KK3sgcmV0dXJuIFJJR0hUX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIxOgogWVlfUlVM
RV9TRVRVUAoteyAgcmV0dXJuKExFX09QKTsgfQoreyByZXR1cm4gU0VNSUNPTE9OOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMTIyOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEdFX09QKTsgfQoreyBy
ZXR1cm4gTEVGVF9CUkFDRTsgfQogCVlZX0JSRUFLCiBjYXNlIDEyMzoKIFlZX1JVTEVfU0VUVVAK
LXsgIHJldHVybihFUV9PUCk7IH0KK3sgcmV0dXJuIFJJR0hUX0JSQUNFOyB9CiAJWVlfQlJFQUsK
IGNhc2UgMTI0OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKE5FX09QKTsgfQoreyByZXR1cm4g
Q09NTUE7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjU6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4o
TEVGVF9PUCk7IH0KK3sgcmV0dXJuIENPTE9OOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI2OgogWVlf
UlVMRV9TRVRVUAoteyAgcmV0dXJuKFJJR0hUX09QKTsgfQoreyByZXR1cm4gRVFVQUw7IH0KIAlZ
WV9CUkVBSwogY2FzZSAxMjc6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlw
ZSA9IGZhbHNlOyByZXR1cm4oU0VNSUNPTE9OKTsgfQoreyByZXR1cm4gTEVGVF9QQVJFTjsgfQog
CVlZX0JSRUFLCiBjYXNlIDEyODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gZmFsc2U7IHJldHVybihMRUZUX0JSQUNFKTsgfQoreyByZXR1cm4gUklHSFRfUEFSRU47
IH0KIAlZWV9CUkVBSwogY2FzZSAxMjk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihSSUdIVF9C
UkFDRSk7IH0KK3sgcmV0dXJuIExFRlRfQlJBQ0tFVDsgfQogCVlZX0JSRUFLCiBjYXNlIDEzMDoK
IFlZX1JVTEVfU0VUVVAKLXsgaWYgKGNvbnRleHQtPmluVHlwZVBhcmVuKSBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJuKENPTU1BKTsgfQoreyByZXR1cm4gUklHSFRfQlJBQ0tF
VDsgfQogCVlZX0JSRUFLCiBjYXNlIDEzMToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKENPTE9O
KTsgfQoreyByZXR1cm4gRE9UOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMyOgogWVlfUlVMRV9TRVRV
UAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJuKEVRVUFMKTsgfQoreyBy
ZXR1cm4gQkFORzsgfQogCVlZX0JSRUFLCiBjYXNlIDEzMzoKIFlZX1JVTEVfU0VUVVAKLXsgY29u
dGV4dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gdHJ1ZTsg
cmV0dXJuKExFRlRfUEFSRU4pOyB9Cit7IHJldHVybiBEQVNIOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
MTM0OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5pblR5cGVQYXJlbiA9IGZhbHNlOyByZXR1
cm4oUklHSFRfUEFSRU4pOyB9Cit7IHJldHVybiBUSUxERTsgfQogCVlZX0JSRUFLCiBjYXNlIDEz
NToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKExFRlRfQlJBQ0tFVCk7IH0KK3sgcmV0dXJuIFBM
VVM7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzY6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihSSUdI
VF9CUkFDS0VUKTsgfQoreyByZXR1cm4gU1RBUjsgfQogCVlZX0JSRUFLCiBjYXNlIDEzNzoKIFlZ
X1JVTEVfU0VUVVAKLXsgQkVHSU4oRklFTERTKTsgIHJldHVybihET1QpOyB9Cit7IHJldHVybiBT
TEFTSDsgfQogCVlZX0JSRUFLCiBjYXNlIDEzODoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKEJB
TkcpOyB9Cit7IHJldHVybiBQRVJDRU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM5OgogWVlfUlVM
RV9TRVRVUAoteyByZXR1cm4oREFTSCk7IH0KK3sgcmV0dXJuIExFRlRfQU5HTEU7IH0KIAlZWV9C
UkVBSwogY2FzZSAxNDA6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihUSUxERSk7IH0KK3sgcmV0
dXJuIFJJR0hUX0FOR0xFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQxOgogWVlfUlVMRV9TRVRVUAot
eyByZXR1cm4oUExVUyk7IH0KK3sgcmV0dXJuIFZFUlRJQ0FMX0JBUjsgfQogCVlZX0JSRUFLCiBj
YXNlIDE0MjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFNUQVIpOyB9Cit7IHJldHVybiBDQVJF
VDsgfQogCVlZX0JSRUFLCiBjYXNlIDE0MzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFNMQVNI
KTsgfQoreyByZXR1cm4gQU1QRVJTQU5EOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQ0OgogWVlfUlVM
RV9TRVRVUAoteyByZXR1cm4oUEVSQ0VOVCk7IH0KK3sgcmV0dXJuIFFVRVNUSU9OOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMTQ1OgorLyogcnVsZSAxNDUgY2FuIG1hdGNoIGVvbCAqLwogWVlfUlVMRV9T
RVRVUAoteyByZXR1cm4oTEVGVF9BTkdMRSk7IH0KLQlZWV9CUkVBSwotY2FzZSAxNDY6Ci1ZWV9S
VUxFX1NFVFVQCi17IHJldHVybihSSUdIVF9BTkdMRSk7IH0KLQlZWV9CUkVBSwotY2FzZSAxNDc6
Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihWRVJUSUNBTF9CQVIpOyB9Ci0JWVlfQlJFQUsKLWNh
c2UgMTQ4OgotWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQ0FSRVQpOyB9Ci0JWVlfQlJFQUsKLWNh
c2UgMTQ5OgotWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQU1QRVJTQU5EKTsgfQotCVlZX0JSRUFL
Ci1jYXNlIDE1MDoKLVlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFFVRVNUSU9OKTsgfQotCVlZX0JS
RUFLCi1jYXNlIDE1MToKLVlZX1JVTEVfU0VUVVAKLXsgCi0gICAgQkVHSU4oSU5JVElBTCk7Ci0g
ICAgeXlsdmFsLT5sZXguc3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsgCi0gICAgcmV0
dXJuIEZJRUxEX1NFTEVDVElPTjsKLX0KLQlZWV9CUkVBSwotY2FzZSAxNTI6Ci1ZWV9SVUxFX1NF
VFVQCi17fQotCVlZX0JSRUFLCi1jYXNlIDE1MzoKLS8qIHJ1bGUgMTUzIGNhbiBtYXRjaCBlb2wg
Ki8KLVlZX1JVTEVfU0VUVVAKLXsgIH0KK3sgfQogCVlZX0JSRUFLCiBjYXNlIFlZX1NUQVRFX0VP
RihJTklUSUFMKToKLWNhc2UgWVlfU1RBVEVfRU9GKENPTU1FTlQpOgotY2FzZSBZWV9TVEFURV9F
T0YoRklFTERTKToKLXsgY29udGV4dC0+QWZ0ZXJFT0YgPSB0cnVlOyB5eXRlcm1pbmF0ZSgpOyB9
Cit7IHl5dGVybWluYXRlKCk7IH0KIAlZWV9CUkVBSwotY2FzZSAxNTQ6CitjYXNlIDE0NjoKIFlZ
X1JVTEVfU0VUVVAKLXsgY29udGV4dC0+d2FybmluZyh5eWxpbmVubywgIlVua25vd24gY2hhciIs
IHl5dGV4dCwgIiIpOyByZXR1cm4gMDsgfQoreyBhc3NlcnQoZmFsc2UpOyByZXR1cm4gMDsgfQog
CVlZX0JSRUFLCi1jYXNlIDE1NToKK2Nhc2UgMTQ3OgogWVlfUlVMRV9TRVRVUAogRUNITzsKIAlZ
WV9CUkVBSwpAQCAtMjA3MSw3ICsyMDEwLDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZm
ZXIgKHl5c2Nhbl90IAogCQl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVd
ICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQl7CiAJCQl5eV9jdXJyZW50X3N0YXRl
ID0gKGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJaWYgKCB5eV9jdXJyZW50X3N0
YXRlID49IDQ1OSApCisJCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gNDQzICkKIAkJCQl5eV9j
ID0geXlfbWV0YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJCX0KIAkJeXlfY3VycmVudF9zdGF0
ZSA9IHl5X254dFt5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlf
Y107CkBAIC0yMTAwLDExICsyMDM5LDExIEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVy
ICh5eXNjYW5fdCAKIAl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsg
eXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCXsKIAkJeXlfY3VycmVudF9zdGF0ZSA9IChp
bnQpIHl5X2RlZlt5eV9jdXJyZW50X3N0YXRlXTsKLQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49
IDQ1OSApCisJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NDMgKQogCQkJeXlfYyA9IHl5X21l
dGFbKHVuc2lnbmVkIGludCkgeXlfY107CiAJCX0KIAl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0
W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsKLQl5eV9p
c19qYW0gPSAoeXlfY3VycmVudF9zdGF0ZSA9PSA0NTgpOworCXl5X2lzX2phbSA9ICh5eV9jdXJy
ZW50X3N0YXRlID09IDQ0Mik7CiAKIAlyZXR1cm4geXlfaXNfamFtID8gMCA6IHl5X2N1cnJlbnRf
c3RhdGU7CiB9CkBAIC0yNTQ4LDQ2ICsyNDg3LDYgQEAgWVlfQlVGRkVSX1NUQVRFIHl5X3NjYW5f
Ynl0ZXMgICh5eWNvbnN0IAogCXJldHVybiBiOwogfQogCi0gICAgc3RhdGljIHZvaWQgeXlfcHVz
aF9zdGF0ZSAoaW50ICBuZXdfc3RhdGUgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCi17Ci0gICAgc3Ry
dWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOwotCWlmICgg
eXlnLT55eV9zdGFydF9zdGFja19wdHIgPj0geXlnLT55eV9zdGFydF9zdGFja19kZXB0aCApCi0J
CXsKLQkJeXlfc2l6ZV90IG5ld19zaXplOwotCi0JCXl5Zy0+eXlfc3RhcnRfc3RhY2tfZGVwdGgg
Kz0gWVlfU1RBUlRfU1RBQ0tfSU5DUjsKLQkJbmV3X3NpemUgPSB5eWctPnl5X3N0YXJ0X3N0YWNr
X2RlcHRoICogc2l6ZW9mKCBpbnQgKTsKLQotCQlpZiAoICEgeXlnLT55eV9zdGFydF9zdGFjayAp
Ci0JCQl5eWctPnl5X3N0YXJ0X3N0YWNrID0gKGludCAqKSB5eWFsbG9jKG5ld19zaXplICx5eXNj
YW5uZXIgKTsKLQotCQllbHNlCi0JCQl5eWctPnl5X3N0YXJ0X3N0YWNrID0gKGludCAqKSB5eXJl
YWxsb2MoKHZvaWQgKikgeXlnLT55eV9zdGFydF9zdGFjayxuZXdfc2l6ZSAseXlzY2FubmVyICk7
Ci0KLQkJaWYgKCAhIHl5Zy0+eXlfc3RhcnRfc3RhY2sgKQotCQkJWVlfRkFUQUxfRVJST1IoICJv
dXQgb2YgbWVtb3J5IGV4cGFuZGluZyBzdGFydC1jb25kaXRpb24gc3RhY2siICk7Ci0JCX0KLQot
CXl5Zy0+eXlfc3RhcnRfc3RhY2tbeXlnLT55eV9zdGFydF9zdGFja19wdHIrK10gPSBZWV9TVEFS
VDsKLQotCUJFR0lOKG5ld19zdGF0ZSk7Ci19Ci0KLSAgICBzdGF0aWMgdm9pZCB5eV9wb3Bfc3Rh
dGUgICh5eXNjYW5fdCB5eXNjYW5uZXIpCi17Ci0gICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0g
KHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOwotCWlmICggLS15eWctPnl5X3N0YXJ0X3N0YWNr
X3B0ciA8IDAgKQotCQlZWV9GQVRBTF9FUlJPUiggInN0YXJ0LWNvbmRpdGlvbiBzdGFjayB1bmRl
cmZsb3ciICk7Ci0KLQlCRUdJTih5eWctPnl5X3N0YXJ0X3N0YWNrW3l5Zy0+eXlfc3RhcnRfc3Rh
Y2tfcHRyXSk7Ci19Ci0KLSAgICBzdGF0aWMgaW50IHl5X3RvcF9zdGF0ZSAgKHl5c2Nhbl90IHl5
c2Nhbm5lcikKLXsKLSAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190
Kil5eXNjYW5uZXI7Ci0JcmV0dXJuIHl5Zy0+eXlfc3RhcnRfc3RhY2tbeXlnLT55eV9zdGFydF9z
dGFja19wdHIgLSAxXTsKLX0KLQogI2lmbmRlZiBZWV9FWElUX0ZBSUxVUkUKICNkZWZpbmUgWVlf
RVhJVF9GQUlMVVJFIDIKICNlbmRpZgpAQCAtMjc3Myw2ICsyNjcyLDE4IEBAIHZvaWQgeXlzZXRf
bHZhbCAoWVlTVFlQRSAqICB5eWx2YWxfcGFyYW0KICAgICB5eWx2YWwgPSB5eWx2YWxfcGFyYW07
CiB9CiAKK1lZTFRZUEUgKnl5Z2V0X2xsb2MgICh5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAg
c3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAg
IHJldHVybiB5eWxsb2M7Cit9CisgICAgCit2b2lkIHl5c2V0X2xsb2MgKFlZTFRZUEUgKiAgeXls
bG9jX3BhcmFtICwgeXlzY2FuX3QgeXlzY2FubmVyKQoreworICAgIHN0cnVjdCB5eWd1dHNfdCAq
IHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKKyAgICB5eWxsb2MgPSB5eWxsb2Nf
cGFyYW07Cit9CisgICAgCiAvKiBVc2VyLXZpc2libGUgQVBJICovCiAKIC8qIHl5bGV4X2luaXQg
aXMgc3BlY2lhbCBiZWNhdXNlIGl0IGNyZWF0ZXMgdGhlIHNjYW5uZXIgaXRzZWxmLCBzbyBpdCBp
cwpAQCAtMjk1NCw3ICsyODY1LDggQEAgeXlfc2l6ZV90IHN0cmluZ19pbnB1dChjaGFyKiBidWYs
IHl5X3NpegogICAgIHl5X3NpemVfdCBsZW4gPSB0b2tlbi50eXBlID09IHBwOjpUb2tlbjo6TEFT
VCA/IDAgOiB0b2tlbi50ZXh0LnNpemUoKTsKICAgICBpZiAobGVuIDwgbWF4X3NpemUpCiAgICAg
ICAgIG1lbWNweShidWYsIHRva2VuLnRleHQuY19zdHIoKSwgbGVuKTsKLSAgICB5eXNldF9saW5l
bm8oRW5jb2RlU291cmNlTG9jKHRva2VuLmxvY2F0aW9uLmZpbGUsIHRva2VuLmxvY2F0aW9uLmxp
bmUpLHl5c2Nhbm5lcik7CisgICAgeXlzZXRfY29sdW1uKHRva2VuLmxvY2F0aW9uLmZpbGUseXlz
Y2FubmVyKTsKKyAgICB5eXNldF9saW5lbm8odG9rZW4ubG9jYXRpb24ubGluZSx5eXNjYW5uZXIp
OwogCiAgICAgaWYgKGxlbiA+PSBtYXhfc2l6ZSkKICAgICAgICAgWVlfRkFUQUxfRVJST1IoIklu
cHV0IGJ1ZmZlciBvdmVyZmxvdyIpOwpAQCAtMjk2OCwxMiArMjg4MCwxMCBAQCBpbnQgY2hlY2tf
dHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKICAgICAKICAgICBpbnQgdG9rZW4gPSBJREVOVElG
SUVSOwogICAgIFRTeW1ib2wqIHN5bWJvbCA9IHl5ZXh0cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0
ZXh0KTsKLSAgICBpZiAoeXlleHRyYS0+bGV4QWZ0ZXJUeXBlID09IGZhbHNlICYmIHN5bWJvbCAm
JiBzeW1ib2wtPmlzVmFyaWFibGUoKSkgeworICAgIGlmIChzeW1ib2wgJiYgc3ltYm9sLT5pc1Zh
cmlhYmxlKCkpIHsKICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRW
YXJpYWJsZSo+KHN5bWJvbCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKSB7
Ci0gICAgICAgICAgICB5eWV4dHJhLT5sZXhBZnRlclR5cGUgPSB0cnVlOworICAgICAgICBpZiAo
dmFyaWFibGUtPmlzVXNlclR5cGUoKSkKICAgICAgICAgICAgIHRva2VuID0gVFlQRV9OQU1FOwot
ICAgICAgICB9CiAgICAgfQogICAgIHl5bHZhbC0+bGV4LnN5bWJvbCA9IHN5bWJvbDsKICAgICBy
ZXR1cm4gdG9rZW47CkBAIC0yOTgyLDIyICsyODkyLDExIEBAIGludCBjaGVja190eXBlKHl5c2Nh
bl90IHl5c2Nhbm5lcikgewogaW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3QgeXlzY2FubmVyKSB7
CiAgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgeXlzY2FubmVy
OwogCi0gICAgeXlleHRyYS0+ZXJyb3IoeXlsaW5lbm8sICJJbGxlZ2FsIHVzZSBvZiByZXNlcnZl
ZCB3b3JkIiwgeXl0ZXh0LCAiIik7CisgICAgeXlleHRyYS0+ZXJyb3IoKnl5bGxvYywgIklsbGVn
YWwgdXNlIG9mIHJlc2VydmVkIHdvcmQiLCB5eXRleHQsICIiKTsKICAgICB5eWV4dHJhLT5yZWNv
dmVyKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pIHsKLSAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9
IChzdHJ1Y3QgeXlndXRzX3QqKSBjb250ZXh0LT5zY2FubmVyOwotCi0gICAgaWYgKGNvbnRleHQt
PkFmdGVyRU9GKSB7Ci0gICAgICAgIGNvbnRleHQtPmVycm9yKHl5bGluZW5vLCByZWFzb24sICJ1
bmV4cGVjdGVkIEVPRiIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnRleHQtPmVycm9yKHl5
bGluZW5vLCByZWFzb24sIHl5dGV4dCk7Ci0gICAgfQotICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LX0KLQogaW50IGdsc2xhbmdfaW5pdGlhbGl6ZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAg
ICAgeXlzY2FuX3Qgc2Nhbm5lciA9IE5VTEw7CiAgICAgaWYgKHl5bGV4X2luaXRfZXh0cmEoY29u
dGV4dCwmc2Nhbm5lcikpCkBAIC0zMDIwLDggKzI5MTksOCBAQCBpbnQgZ2xzbGFuZ19maW5hbGl6
ZShUUGFyc2VDb250ZXh0KiBjb250CiBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29u
c3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAg
ICAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5cmVzdGFydChOVUxMLGNvbnRl
eHQtPnNjYW5uZXIpOwotICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VMb2MoMCwgMSksY29u
dGV4dC0+c2Nhbm5lcik7Ci0gICAgY29udGV4dC0+QWZ0ZXJFT0YgPSBmYWxzZTsKKyAgICB5eXNl
dF9jb2x1bW4oMCxjb250ZXh0LT5zY2FubmVyKTsKKyAgICB5eXNldF9saW5lbm8oMSxjb250ZXh0
LT5zY2FubmVyKTsKIAogICAgIC8vIEluaXRpYWxpemUgcHJlcHJvY2Vzc29yLgogICAgIGlmICgh
Y29udGV4dC0+cHJlcHJvY2Vzc29yLmluaXQoY291bnQsIHN0cmluZywgbGVuZ3RoKSkKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdf
dGFiLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBA
QAogI2RlZmluZSBZWVBVUkUgMQogCiAvKiBVc2luZyBsb2NhdGlvbnMuICAqLwotI2RlZmluZSBZ
WUxTUF9ORUVERUQgMAorI2RlZmluZSBZWUxTUF9ORUVERUQgMQogCiAKIApAQCAtMTEzLDUyICsx
MTMsNTEgQEAKICAgICAgRkxPQVRDT05TVEFOVCA9IDMwMiwKICAgICAgSU5UQ09OU1RBTlQgPSAz
MDMsCiAgICAgIEJPT0xDT05TVEFOVCA9IDMwNCwKLSAgICAgRklFTERfU0VMRUNUSU9OID0gMzA1
LAotICAgICBMRUZUX09QID0gMzA2LAotICAgICBSSUdIVF9PUCA9IDMwNywKLSAgICAgSU5DX09Q
ID0gMzA4LAotICAgICBERUNfT1AgPSAzMDksCi0gICAgIExFX09QID0gMzEwLAotICAgICBHRV9P
UCA9IDMxMSwKLSAgICAgRVFfT1AgPSAzMTIsCi0gICAgIE5FX09QID0gMzEzLAotICAgICBBTkRf
T1AgPSAzMTQsCi0gICAgIE9SX09QID0gMzE1LAotICAgICBYT1JfT1AgPSAzMTYsCi0gICAgIE1V
TF9BU1NJR04gPSAzMTcsCi0gICAgIERJVl9BU1NJR04gPSAzMTgsCi0gICAgIEFERF9BU1NJR04g
PSAzMTksCi0gICAgIE1PRF9BU1NJR04gPSAzMjAsCi0gICAgIExFRlRfQVNTSUdOID0gMzIxLAot
ICAgICBSSUdIVF9BU1NJR04gPSAzMjIsCi0gICAgIEFORF9BU1NJR04gPSAzMjMsCi0gICAgIFhP
Ul9BU1NJR04gPSAzMjQsCi0gICAgIE9SX0FTU0lHTiA9IDMyNSwKLSAgICAgU1VCX0FTU0lHTiA9
IDMyNiwKLSAgICAgTEVGVF9QQVJFTiA9IDMyNywKLSAgICAgUklHSFRfUEFSRU4gPSAzMjgsCi0g
ICAgIExFRlRfQlJBQ0tFVCA9IDMyOSwKLSAgICAgUklHSFRfQlJBQ0tFVCA9IDMzMCwKLSAgICAg
TEVGVF9CUkFDRSA9IDMzMSwKLSAgICAgUklHSFRfQlJBQ0UgPSAzMzIsCi0gICAgIERPVCA9IDMz
MywKLSAgICAgQ09NTUEgPSAzMzQsCi0gICAgIENPTE9OID0gMzM1LAotICAgICBFUVVBTCA9IDMz
NiwKLSAgICAgU0VNSUNPTE9OID0gMzM3LAotICAgICBCQU5HID0gMzM4LAotICAgICBEQVNIID0g
MzM5LAotICAgICBUSUxERSA9IDM0MCwKLSAgICAgUExVUyA9IDM0MSwKLSAgICAgU1RBUiA9IDM0
MiwKLSAgICAgU0xBU0ggPSAzNDMsCi0gICAgIFBFUkNFTlQgPSAzNDQsCi0gICAgIExFRlRfQU5H
TEUgPSAzNDUsCi0gICAgIFJJR0hUX0FOR0xFID0gMzQ2LAotICAgICBWRVJUSUNBTF9CQVIgPSAz
NDcsCi0gICAgIENBUkVUID0gMzQ4LAotICAgICBBTVBFUlNBTkQgPSAzNDksCi0gICAgIFFVRVNU
SU9OID0gMzUwCisgICAgIExFRlRfT1AgPSAzMDUsCisgICAgIFJJR0hUX09QID0gMzA2LAorICAg
ICBJTkNfT1AgPSAzMDcsCisgICAgIERFQ19PUCA9IDMwOCwKKyAgICAgTEVfT1AgPSAzMDksCisg
ICAgIEdFX09QID0gMzEwLAorICAgICBFUV9PUCA9IDMxMSwKKyAgICAgTkVfT1AgPSAzMTIsCisg
ICAgIEFORF9PUCA9IDMxMywKKyAgICAgT1JfT1AgPSAzMTQsCisgICAgIFhPUl9PUCA9IDMxNSwK
KyAgICAgTVVMX0FTU0lHTiA9IDMxNiwKKyAgICAgRElWX0FTU0lHTiA9IDMxNywKKyAgICAgQURE
X0FTU0lHTiA9IDMxOCwKKyAgICAgTU9EX0FTU0lHTiA9IDMxOSwKKyAgICAgTEVGVF9BU1NJR04g
PSAzMjAsCisgICAgIFJJR0hUX0FTU0lHTiA9IDMyMSwKKyAgICAgQU5EX0FTU0lHTiA9IDMyMiwK
KyAgICAgWE9SX0FTU0lHTiA9IDMyMywKKyAgICAgT1JfQVNTSUdOID0gMzI0LAorICAgICBTVUJf
QVNTSUdOID0gMzI1LAorICAgICBMRUZUX1BBUkVOID0gMzI2LAorICAgICBSSUdIVF9QQVJFTiA9
IDMyNywKKyAgICAgTEVGVF9CUkFDS0VUID0gMzI4LAorICAgICBSSUdIVF9CUkFDS0VUID0gMzI5
LAorICAgICBMRUZUX0JSQUNFID0gMzMwLAorICAgICBSSUdIVF9CUkFDRSA9IDMzMSwKKyAgICAg
RE9UID0gMzMyLAorICAgICBDT01NQSA9IDMzMywKKyAgICAgQ09MT04gPSAzMzQsCisgICAgIEVR
VUFMID0gMzM1LAorICAgICBTRU1JQ09MT04gPSAzMzYsCisgICAgIEJBTkcgPSAzMzcsCisgICAg
IERBU0ggPSAzMzgsCisgICAgIFRJTERFID0gMzM5LAorICAgICBQTFVTID0gMzQwLAorICAgICBT
VEFSID0gMzQxLAorICAgICBTTEFTSCA9IDM0MiwKKyAgICAgUEVSQ0VOVCA9IDM0MywKKyAgICAg
TEVGVF9BTkdMRSA9IDM0NCwKKyAgICAgUklHSFRfQU5HTEUgPSAzNDUsCisgICAgIFZFUlRJQ0FM
X0JBUiA9IDM0NiwKKyAgICAgQ0FSRVQgPSAzNDcsCisgICAgIEFNUEVSU0FORCA9IDM0OCwKKyAg
ICAgUVVFU1RJT04gPSAzNDkKICAgIH07CiAjZW5kaWYKIC8qIFRva2Vucy4gICovCkBAIC0yMDks
NTIgKzIwOCw1MSBAQAogI2RlZmluZSBGTE9BVENPTlNUQU5UIDMwMgogI2RlZmluZSBJTlRDT05T
VEFOVCAzMDMKICNkZWZpbmUgQk9PTENPTlNUQU5UIDMwNAotI2RlZmluZSBGSUVMRF9TRUxFQ1RJ
T04gMzA1Ci0jZGVmaW5lIExFRlRfT1AgMzA2Ci0jZGVmaW5lIFJJR0hUX09QIDMwNwotI2RlZmlu
ZSBJTkNfT1AgMzA4Ci0jZGVmaW5lIERFQ19PUCAzMDkKLSNkZWZpbmUgTEVfT1AgMzEwCi0jZGVm
aW5lIEdFX09QIDMxMQotI2RlZmluZSBFUV9PUCAzMTIKLSNkZWZpbmUgTkVfT1AgMzEzCi0jZGVm
aW5lIEFORF9PUCAzMTQKLSNkZWZpbmUgT1JfT1AgMzE1Ci0jZGVmaW5lIFhPUl9PUCAzMTYKLSNk
ZWZpbmUgTVVMX0FTU0lHTiAzMTcKLSNkZWZpbmUgRElWX0FTU0lHTiAzMTgKLSNkZWZpbmUgQURE
X0FTU0lHTiAzMTkKLSNkZWZpbmUgTU9EX0FTU0lHTiAzMjAKLSNkZWZpbmUgTEVGVF9BU1NJR04g
MzIxCi0jZGVmaW5lIFJJR0hUX0FTU0lHTiAzMjIKLSNkZWZpbmUgQU5EX0FTU0lHTiAzMjMKLSNk
ZWZpbmUgWE9SX0FTU0lHTiAzMjQKLSNkZWZpbmUgT1JfQVNTSUdOIDMyNQotI2RlZmluZSBTVUJf
QVNTSUdOIDMyNgotI2RlZmluZSBMRUZUX1BBUkVOIDMyNwotI2RlZmluZSBSSUdIVF9QQVJFTiAz
MjgKLSNkZWZpbmUgTEVGVF9CUkFDS0VUIDMyOQotI2RlZmluZSBSSUdIVF9CUkFDS0VUIDMzMAot
I2RlZmluZSBMRUZUX0JSQUNFIDMzMQotI2RlZmluZSBSSUdIVF9CUkFDRSAzMzIKLSNkZWZpbmUg
RE9UIDMzMwotI2RlZmluZSBDT01NQSAzMzQKLSNkZWZpbmUgQ09MT04gMzM1Ci0jZGVmaW5lIEVR
VUFMIDMzNgotI2RlZmluZSBTRU1JQ09MT04gMzM3Ci0jZGVmaW5lIEJBTkcgMzM4Ci0jZGVmaW5l
IERBU0ggMzM5Ci0jZGVmaW5lIFRJTERFIDM0MAotI2RlZmluZSBQTFVTIDM0MQotI2RlZmluZSBT
VEFSIDM0MgotI2RlZmluZSBTTEFTSCAzNDMKLSNkZWZpbmUgUEVSQ0VOVCAzNDQKLSNkZWZpbmUg
TEVGVF9BTkdMRSAzNDUKLSNkZWZpbmUgUklHSFRfQU5HTEUgMzQ2Ci0jZGVmaW5lIFZFUlRJQ0FM
X0JBUiAzNDcKLSNkZWZpbmUgQ0FSRVQgMzQ4Ci0jZGVmaW5lIEFNUEVSU0FORCAzNDkKLSNkZWZp
bmUgUVVFU1RJT04gMzUwCisjZGVmaW5lIExFRlRfT1AgMzA1CisjZGVmaW5lIFJJR0hUX09QIDMw
NgorI2RlZmluZSBJTkNfT1AgMzA3CisjZGVmaW5lIERFQ19PUCAzMDgKKyNkZWZpbmUgTEVfT1Ag
MzA5CisjZGVmaW5lIEdFX09QIDMxMAorI2RlZmluZSBFUV9PUCAzMTEKKyNkZWZpbmUgTkVfT1Ag
MzEyCisjZGVmaW5lIEFORF9PUCAzMTMKKyNkZWZpbmUgT1JfT1AgMzE0CisjZGVmaW5lIFhPUl9P
UCAzMTUKKyNkZWZpbmUgTVVMX0FTU0lHTiAzMTYKKyNkZWZpbmUgRElWX0FTU0lHTiAzMTcKKyNk
ZWZpbmUgQUREX0FTU0lHTiAzMTgKKyNkZWZpbmUgTU9EX0FTU0lHTiAzMTkKKyNkZWZpbmUgTEVG
VF9BU1NJR04gMzIwCisjZGVmaW5lIFJJR0hUX0FTU0lHTiAzMjEKKyNkZWZpbmUgQU5EX0FTU0lH
TiAzMjIKKyNkZWZpbmUgWE9SX0FTU0lHTiAzMjMKKyNkZWZpbmUgT1JfQVNTSUdOIDMyNAorI2Rl
ZmluZSBTVUJfQVNTSUdOIDMyNQorI2RlZmluZSBMRUZUX1BBUkVOIDMyNgorI2RlZmluZSBSSUdI
VF9QQVJFTiAzMjcKKyNkZWZpbmUgTEVGVF9CUkFDS0VUIDMyOAorI2RlZmluZSBSSUdIVF9CUkFD
S0VUIDMyOQorI2RlZmluZSBMRUZUX0JSQUNFIDMzMAorI2RlZmluZSBSSUdIVF9CUkFDRSAzMzEK
KyNkZWZpbmUgRE9UIDMzMgorI2RlZmluZSBDT01NQSAzMzMKKyNkZWZpbmUgQ09MT04gMzM0Cisj
ZGVmaW5lIEVRVUFMIDMzNQorI2RlZmluZSBTRU1JQ09MT04gMzM2CisjZGVmaW5lIEJBTkcgMzM3
CisjZGVmaW5lIERBU0ggMzM4CisjZGVmaW5lIFRJTERFIDMzOQorI2RlZmluZSBQTFVTIDM0MAor
I2RlZmluZSBTVEFSIDM0MQorI2RlZmluZSBTTEFTSCAzNDIKKyNkZWZpbmUgUEVSQ0VOVCAzNDMK
KyNkZWZpbmUgTEVGVF9BTkdMRSAzNDQKKyNkZWZpbmUgUklHSFRfQU5HTEUgMzQ1CisjZGVmaW5l
IFZFUlRJQ0FMX0JBUiAzNDYKKyNkZWZpbmUgQ0FSRVQgMzQ3CisjZGVmaW5lIEFNUEVSU0FORCAz
NDgKKyNkZWZpbmUgUVVFU1RJT04gMzQ5CiAKIAogCkBAIC0yODcsNyArMjg1LDYgQEAKICNpbmNs
dWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAogI2RlZmluZSBZWUVOQUJMRV9OTFMgMAotI2Rl
ZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQogCiAjZGVmaW5lIFlZTEVYX1BBUkFNIGNvbnRleHQt
PnNjYW5uZXIKIApAQCAtMzE0LDggKzMxMSw5IEBACiB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKIAog
eworI2RlZmluZSBZWUxUWVBFIFRTb3VyY2VMb2MKKyNkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJF
RCAxCiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAgICB1bmlv
biB7CiAgICAgICAgICAgICBUU3RyaW5nICpzdHJpbmc7CiAgICAgICAgICAgICBmbG9hdCBmOwpA
QCAtMzI1LDcgKzMyMyw2IEBAIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogICAgICAgICBUU3ltYm9s
KiBzeW1ib2w7CiAgICAgfSBsZXg7CiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBs
aW5lOwogICAgICAgICBUT3BlcmF0b3Igb3A7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAg
IFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwpAQCAtMzM5LDggKzMzNiw4IEBAIHR5cGVkZWYgdW5p
b24gWVlTVFlQRQogICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgICAgICAg
ICBURnVuY3Rpb24qIGZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKLSAg
ICAgICAgICAgIFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgIFRUeXBlTGlzdCogdHlw
ZUxpc3Q7CisgICAgICAgICAgICBURmllbGQqIGZpZWxkOworICAgICAgICAgICAgVEZpZWxkTGlz
dCogZmllbGRMaXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwogfQpAQCAtMzUyLDIxICsz
NDksNDEgQEAgdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJ
QUwgMQogI2VuZGlmCiAKKyNpZiAhIGRlZmluZWQgWVlMVFlQRSAmJiAhIGRlZmluZWQgWVlMVFlQ
RV9JU19ERUNMQVJFRAordHlwZWRlZiBzdHJ1Y3QgWVlMVFlQRQoreworICBpbnQgZmlyc3RfbGlu
ZTsKKyAgaW50IGZpcnN0X2NvbHVtbjsKKyAgaW50IGxhc3RfbGluZTsKKyAgaW50IGxhc3RfY29s
dW1uOworfSBZWUxUWVBFOworIyBkZWZpbmUgeXlsdHlwZSBZWUxUWVBFIC8qIG9ic29sZXNjZW50
OyB3aWxsIGJlIHdpdGhkcmF3biAqLworIyBkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisj
IGRlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQorI2VuZGlmCiAKIAogLyogQ29weSB0aGUgc2Vj
b25kIHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLwogCiAKLWV4dGVybiBpbnQgeXlsZXgo
WVlTVFlQRSogeXlsdmFsX3BhcmFtLCB2b2lkKiB5eXNjYW5uZXIpOwotZXh0ZXJuIHZvaWQgeXll
cnJvcihUUGFyc2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOworZXh0ZXJu
IGludCB5eWxleChZWVNUWVBFKiB5eWx2YWwsIFlZTFRZUEUqIHl5bGxvYywgdm9pZCogeXlzY2Fu
bmVyKTsKK3N0YXRpYyB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pOwogCi0jZGVmaW5lIEZSQUdfVkVSVF9PTkxZ
KFMsIEwpIHsgIFwKLSAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9GUkFHTUVOVF9T
SEFERVIgJiYgIFwKLSAgICAgICAgY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hB
REVSKSB7ICBcCi0gICAgICAgIGNvbnRleHQtPmVycm9yKEwsICIgc3VwcG9ydGVkIGluIHZlcnRl
eC9mcmFnbWVudCBzaGFkZXJzIG9ubHkgIiwgUyk7ICBcCi0gICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsgIFwKLSAgICB9ICBcCi19CisjZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJo
cywgTikgICAgICAgICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGlmIChZWUlEKE4pKSB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChDdXJy
ZW50KS5maXJzdF9maWxlID0gWVlSSFNMT0MoUmhzLCAxKS5maXJzdF9maWxlOyAgXAorICAgICAg
ICAoQ3VycmVudCkuZmlyc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMSkuZmlyc3RfbGluZTsgIFwK
KyAgICAgICAgKEN1cnJlbnQpLmxhc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgTikubGFzdF9maWxl
OyAgICBcCisgICAgICAgIChDdXJyZW50KS5sYXN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIE4pLmxh
c3RfbGluZTsgICAgXAorICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9maWxl
ID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2ZpbGU7ICAgXAorICAgICAgICAoQ3VycmVudCkuZmly
c3RfbGluZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9saW5lOyAgIFwKKyAgICAgICAgKEN1cnJl
bnQpLmxhc3RfZmlsZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9maWxlOyAgICBcCisgICAgICAg
IChDdXJyZW50KS5sYXN0X2xpbmUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfbGluZTsgICAgXAor
ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgfSB3aGlsZSAoMCkKIAogI2RlZmluZSBWRVJURVhfT05MWShTLCBMKSB7ICBcCiAg
ICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgIT0gU0hfVkVSVEVYX1NIQURFUikgeyAgXApAQCAt
NTQyLDE0ICs1NTksMTYgQEAgdm9pZCBmcmVlICh2b2lkICopOyAvKiBJTkZSSU5HRVMgT04gVVNF
UgogCiAjaWYgKCEgZGVmaW5lZCB5eW92ZXJmbG93IFwKICAgICAgJiYgKCEgZGVmaW5lZCBfX2Nw
bHVzcGx1cyBcCi0JIHx8IChkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lT
X1RSSVZJQUwpKSkKKwkgfHwgKGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVf
SVNfVFJJVklBTCBcCisJICAgICAmJiBkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNU
WVBFX0lTX1RSSVZJQUwpKSkKIAogLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBm
b3IgYW55IHN0YWNrIG1lbWJlci4gICovCiB1bmlvbiB5eWFsbG9jCiB7CiAgIHl5dHlwZV9pbnQx
NiB5eXNzOwogICBZWVNUWVBFIHl5dnM7Ci0gIH07CisgICAgWVlMVFlQRSB5eWxzOworfTsKIAog
LyogVGhlIHNpemUgb2YgdGhlIG1heGltdW0gZ2FwIGJldHdlZW4gb25lIGFsaWduZWQgc3RhY2sg
YW5kIHRoZSBuZXh0LiAgKi8KICMgZGVmaW5lIFlZU1RBQ0tfR0FQX01BWElNVU0gKHNpemVvZiAo
dW5pb24geXlhbGxvYykgLSAxKQpAQCAtNTU3LDggKzU3Niw4IEBAIHVuaW9uIHl5YWxsb2MKIC8q
IFRoZSBzaXplIG9mIGFuIGFycmF5IGxhcmdlIHRvIGVub3VnaCB0byBob2xkIGFsbCBzdGFja3Ms
IGVhY2ggd2l0aAogICAgTiBlbGVtZW50cy4gICovCiAjIGRlZmluZSBZWVNUQUNLX0JZVEVTKE4p
IFwKLSAgICAgKChOKSAqIChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUp
KSBcCi0gICAgICArIFlZU1RBQ0tfR0FQX01BWElNVU0pCisgICAgICgoTikgKiAoc2l6ZW9mICh5
eXR5cGVfaW50MTYpICsgc2l6ZW9mIChZWVNUWVBFKSArIHNpemVvZiAoWVlMVFlQRSkpIFwKKyAg
ICAgICsgMiAqIFlZU1RBQ0tfR0FQX01BWElNVU0pCiAKIC8qIENvcHkgQ09VTlQgb2JqZWN0cyBm
cm9tIEZST00gdG8gVE8uICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbwogICAgbm90IG92
ZXJsYXAuICAqLwpAQCAtNTk3LDIyICs2MTYsMjIgQEAgdW5pb24geXlhbGxvYwogI2VuZGlmCiAK
IC8qIFlZRklOQUwgLS0gU3RhdGUgbnVtYmVyIG9mIHRoZSB0ZXJtaW5hdGlvbiBzdGF0ZS4gICov
Ci0jZGVmaW5lIFlZRklOQUwgIDcxCisjZGVmaW5lIFlZRklOQUwgIDc0CiAvKiBZWUxBU1QgLS0g
TGFzdCBpbmRleCBpbiBZWVRBQkxFLiAgKi8KLSNkZWZpbmUgWVlMQVNUICAgMTQxNgorI2RlZmlu
ZSBZWUxBU1QgICAxNDkwCiAKIC8qIFlZTlRPS0VOUyAtLSBOdW1iZXIgb2YgdGVybWluYWxzLiAg
Ki8KLSNkZWZpbmUgWVlOVE9LRU5TICA5NgorI2RlZmluZSBZWU5UT0tFTlMgIDk1CiAvKiBZWU5O
VFMgLS0gTnVtYmVyIG9mIG5vbnRlcm1pbmFscy4gICovCi0jZGVmaW5lIFlZTk5UUyAgODMKKyNk
ZWZpbmUgWVlOTlRTICA4NAogLyogWVlOUlVMRVMgLS0gTnVtYmVyIG9mIHJ1bGVzLiAgKi8KLSNk
ZWZpbmUgWVlOUlVMRVMgIDIwMQorI2RlZmluZSBZWU5SVUxFUyAgMjAyCiAvKiBZWU5SVUxFUyAt
LSBOdW1iZXIgb2Ygc3RhdGVzLiAgKi8KLSNkZWZpbmUgWVlOU1RBVEVTICAzMDQKKyNkZWZpbmUg
WVlOU1RBVEVTICAzMDcKIAogLyogWVlUUkFOU0xBVEUoWVlMRVgpIC0tIEJpc29uIHN5bWJvbCBu
dW1iZXIgY29ycmVzcG9uZGluZyB0byBZWUxFWC4gICovCiAjZGVmaW5lIFlZVU5ERUZUT0sgIDIK
LSNkZWZpbmUgWVlNQVhVVE9LICAgMzUwCisjZGVmaW5lIFlZTUFYVVRPSyAgIDM0OQogCiAjZGVm
aW5lIFlZVFJBTlNMQVRFKFlZWCkJCQkJCQlcCiAgICgodW5zaWduZWQgaW50KSAoWVlYKSA8PSBZ
WU1BWFVUT0sgPyB5eXRyYW5zbGF0ZVtZWVhdIDogWVlVTkRFRlRPSykKQEAgLTY1NCw4ICs2NzMs
NyBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJhbnNsYXRlW10gCiAgICAgICA1NSwg
ICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAg
ICA2NCwKICAgICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcx
LCAgICA3MiwgICAgNzMsICAgIDc0LAogICAgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAg
IDc5LCAgICA4MCwgICAgODEsICAgIDgyLCAgICA4MywgICAgODQsCi0gICAgICA4NSwgICAgODYs
ICAgIDg3LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwK
LSAgICAgIDk1CisgICAgICA4NSwgICAgODYsICAgIDg3LCAgICA4OCwgICAgODksICAgIDkwLCAg
ICA5MSwgICAgOTIsICAgIDkzLCAgICA5NAogfTsKIAogI2lmIFlZREVCVUcKQEAgLTY2MywxMTUg
KzY4MSwxMTYgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXRyYW5zbGF0ZVtdIAogICAg
WVlSSFMuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlwcmhzW10gPQogewotICAg
ICAgIDAsICAgICAwLCAgICAgMywgICAgIDUsICAgICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAg
ICAxNywgICAgMTksCi0gICAgICAyNCwgICAgMjYsICAgIDMwLCAgICAzMywgICAgMzYsICAgIDM4
LCAgICA0MCwgICAgNDIsICAgIDQ2LCAgICA0OSwKLSAgICAgIDUyLCAgICA1NSwgICAgNTcsICAg
IDYwLCAgICA2NCwgICAgNjcsICAgIDY5LCAgICA3MSwgICAgNzMsICAgIDc1LAotICAgICAgNzgs
ICAgIDgxLCAgICA4NCwgICAgODYsICAgIDg4LCAgICA5MCwgICAgOTIsICAgIDk2LCAgIDEwMCwg
ICAxMDIsCi0gICAgIDEwNiwgICAxMTAsICAgMTEyLCAgIDExNCwgICAxMTgsICAgMTIyLCAgIDEy
NiwgICAxMzAsICAgMTMyLCAgIDEzNiwKLSAgICAgMTQwLCAgIDE0MiwgICAxNDQsICAgMTQ2LCAg
IDE0OCwgICAxNTIsICAgMTU0LCAgIDE1OCwgICAxNjAsICAgMTY0LAotICAgICAxNjYsICAgMTcy
LCAgIDE3NCwgICAxNzgsICAgMTgwLCAgIDE4MiwgICAxODQsICAgMTg2LCAgIDE4OCwgICAxOTAs
Ci0gICAgIDE5NCwgICAxOTYsICAgMTk5LCAgIDIwMiwgICAyMDcsICAgMjEwLCAgIDIxMiwgICAy
MTQsICAgMjE3LCAgIDIyMSwKLSAgICAgMjI1LCAgIDIyOCwgICAyMzQsICAgMjM4LCAgIDI0MSwg
ICAyNDUsICAgMjQ4LCAgIDI0OSwgICAyNTEsICAgMjUzLAotICAgICAyNTUsICAgMjU3LCAgIDI1
OSwgICAyNjMsICAgMjY5LCAgIDI3NiwgICAyODIsICAgMjg0LCAgIDI4NywgICAyOTIsCi0gICAg
IDI5OCwgICAzMDMsICAgMzA2LCAgIDMwOCwgICAzMTEsICAgMzEzLCAgIDMxNSwgICAzMTcsICAg
MzIwLCAgIDMyMiwKLSAgICAgMzI0LCAgIDMyNywgICAzMjksICAgMzMxLCAgIDMzMywgICAzMzUs
ICAgMzQwLCAgIDM0MiwgICAzNDQsICAgMzQ2LAorICAgICAgIDAsICAgICAwLCAgICAgMywgICAg
IDUsICAgICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNSwgICAgMTcsCisgICAgICAyMSwg
ICAgMjMsICAgIDI4LCAgICAzMCwgICAgMzQsICAgIDM3LCAgICA0MCwgICAgNDIsICAgIDQ0LCAg
ICA0NiwKKyAgICAgIDUwLCAgICA1MywgICAgNTYsICAgIDU5LCAgICA2MSwgICAgNjQsICAgIDY4
LCAgICA3MSwgICAgNzMsICAgIDc1LAorICAgICAgNzcsICAgIDgwLCAgICA4MywgICAgODYsICAg
IDg4LCAgICA5MCwgICAgOTIsICAgIDk0LCAgICA5OCwgICAxMDIsCisgICAgIDEwNCwgICAxMDgs
ICAgMTEyLCAgIDExNCwgICAxMTYsICAgMTIwLCAgIDEyNCwgICAxMjgsICAgMTMyLCAgIDEzNCwK
KyAgICAgMTM4LCAgIDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwgICAxNTAsICAgMTU0LCAgIDE1
NiwgICAxNjAsICAgMTYyLAorICAgICAxNjYsICAgMTY4LCAgIDE3NCwgICAxNzYsICAgMTgwLCAg
IDE4MiwgICAxODQsICAgMTg2LCAgIDE4OCwgICAxOTAsCisgICAgIDE5MiwgICAxOTYsICAgMTk4
LCAgIDIwMSwgICAyMDQsICAgMjA5LCAgIDIxMiwgICAyMTQsICAgMjE2LCAgIDIxOSwKKyAgICAg
MjIzLCAgIDIyNywgICAyMzAsICAgMjM2LCAgIDI0MCwgICAyNDMsICAgMjQ3LCAgIDI1MCwgICAy
NTEsICAgMjUzLAorICAgICAyNTUsICAgMjU3LCAgIDI1OSwgICAyNjEsICAgMjY1LCAgIDI3MSwg
ICAyNzgsICAgMjg0LCAgIDI4NiwgICAyODksCisgICAgIDI5NCwgICAzMDAsICAgMzA1LCAgIDMw
OCwgICAzMTAsICAgMzEzLCAgIDMxNSwgICAzMTcsICAgMzE5LCAgIDMyMiwKKyAgICAgMzI0LCAg
IDMyNiwgICAzMjksICAgMzMxLCAgIDMzMywgICAzMzUsICAgMzM3LCAgIDM0MiwgICAzNDQsICAg
MzQ2LAogICAgICAzNDgsICAgMzUwLCAgIDM1MiwgICAzNTQsICAgMzU2LCAgIDM1OCwgICAzNjAs
ICAgMzYyLCAgIDM2NCwgICAzNjYsCi0gICAgIDM2OCwgICAzNzAsICAgMzcyLCAgIDM3NCwgICAz
NzYsICAgMzc4LCAgIDM4MCwgICAzODIsICAgMzg0LCAgIDM4NSwKLSAgICAgMzkyLCAgIDM5Mywg
ICAzOTksICAgNDAxLCAgIDQwNCwgICA0MDgsICAgNDEwLCAgIDQxNCwgICA0MTYsICAgNDIxLAot
ICAgICA0MjMsICAgNDI1LCAgIDQyNywgICA0MjksICAgNDMxLCAgIDQzMywgICA0MzUsICAgNDM3
LCAgIDQzOSwgICA0NDIsCi0gICAgIDQ0MywgICA0NDQsICAgNDUwLCAgIDQ1MiwgICA0NTQsICAg
NDU1LCAgIDQ1OCwgICA0NTksICAgNDYyLCAgIDQ2NSwKLSAgICAgNDY5LCAgIDQ3MSwgICA0NzQs
ICAgNDc2LCAgIDQ3OSwgICA0ODUsICAgNDg5LCAgIDQ5MSwgICA0OTMsICAgNDk4LAotICAgICA0
OTksICAgNTA2LCAgIDUwNywgICA1MTYsICAgNTE3LCAgIDUyNSwgICA1MjcsICAgNTI5LCAgIDUz
MSwgICA1MzIsCi0gICAgIDUzNSwgICA1MzksICAgNTQyLCAgIDU0NSwgICA1NDgsICAgNTUyLCAg
IDU1NSwgICA1NTcsICAgNTYwLCAgIDU2MiwKLSAgICAgNTY0LCAgIDU2NQorICAgICAzNjgsICAg
MzcwLCAgIDM3MiwgICAzNzQsICAgMzc2LCAgIDM3OCwgICAzODAsICAgMzgyLCAgIDM4NCwgICAz
ODYsCisgICAgIDM4NywgICAzOTQsICAgMzk1LCAgIDQwMSwgICA0MDMsICAgNDA2LCAgIDQxMCwg
ICA0MTIsICAgNDE2LCAgIDQxOCwKKyAgICAgNDIzLCAgIDQyNSwgICA0MjcsICAgNDI5LCAgIDQz
MSwgICA0MzMsICAgNDM1LCAgIDQzNywgICA0MzksICAgNDQxLAorICAgICA0NDQsICAgNDQ1LCAg
IDQ0NiwgICA0NTIsICAgNDU0LCAgIDQ1NiwgICA0NTcsICAgNDYwLCAgIDQ2MSwgICA0NjQsCisg
ICAgIDQ2NywgICA0NzEsICAgNDczLCAgIDQ3NiwgICA0NzgsICAgNDgxLCAgIDQ4NywgICA0OTEs
ICAgNDkzLCAgIDQ5NSwKKyAgICAgNTAwLCAgIDUwMSwgICA1MDgsICAgNTA5LCAgIDUxOCwgICA1
MTksICAgNTI3LCAgIDUyOSwgICA1MzEsICAgNTMzLAorICAgICA1MzQsICAgNTM3LCAgIDU0MSwg
ICA1NDQsICAgNTQ3LCAgIDU1MCwgICA1NTQsICAgNTU3LCAgIDU1OSwgICA1NjIsCisgICAgIDU2
NCwgICA1NjYsICAgNTY3CiB9OwogCiAvKiBZWVJIUyAtLSBBIGAtMSctc2VwYXJhdGVkIGxpc3Qg
b2YgdGhlIHJ1bGVzJyBSSFMuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXJoc1td
ID0KIHsKLSAgICAgMTc1LCAgICAgMCwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgOTcsICAgIC0x
LCAgICA0OCwgICAgLTEsICAgIDQ3LAotICAgICAgLTEsICAgIDQ5LCAgICAtMSwgICAgNzIsICAg
MTI0LCAgICA3MywgICAgLTEsICAgIDk4LCAgICAtMSwgICAgOTksCi0gICAgICA3NCwgICAxMDAs
ICAgIDc1LCAgICAtMSwgICAxMDEsICAgIC0xLCAgICA5OSwgICAgNzgsICAgIDUwLCAgICAtMSwK
LSAgICAgIDk5LCAgICA1MywgICAgLTEsICAgIDk5LCAgICA1NCwgICAgLTEsICAgMTI0LCAgICAt
MSwgICAxMDIsICAgIC0xLAotICAgICAxMDMsICAgIC0xLCAgICA5OSwgICAgNzgsICAgMTAzLCAg
ICAtMSwgICAxMDUsICAgIDczLCAgICAtMSwgICAxMDQsCi0gICAgICA3MywgICAgLTEsICAgMTA2
LCAgICAzOSwgICAgLTEsICAgMTA2LCAgICAtMSwgICAxMDYsICAgMTIyLCAgICAtMSwKLSAgICAg
MTA1LCAgICA3OSwgICAxMjIsICAgIC0xLCAgIDEwNywgICAgNzIsICAgIC0xLCAgIDE0MiwgICAg
LTEsICAgIDQ1LAotICAgICAgLTEsICAgIDUwLCAgICAtMSwgICAgOTksICAgIC0xLCAgICA1Mywg
ICAxMDgsICAgIC0xLCAgICA1NCwgICAxMDgsCi0gICAgICAtMSwgICAxMDksICAgMTA4LCAgICAt
MSwgICAgODYsICAgIC0xLCAgICA4NCwgICAgLTEsICAgIDgzLCAgICAtMSwKLSAgICAgMTA4LCAg
ICAtMSwgICAxMTAsICAgIDg3LCAgIDEwOCwgICAgLTEsICAgMTEwLCAgICA4OCwgICAxMDgsICAg
IC0xLAotICAgICAxMTAsICAgIC0xLCAgIDExMSwgICAgODYsICAgMTEwLCAgICAtMSwgICAxMTEs
ICAgIDg0LCAgIDExMCwgICAgLTEsCi0gICAgIDExMSwgICAgLTEsICAgMTEyLCAgICAtMSwgICAx
MTMsICAgIDkwLCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA5MSwKLSAgICAgMTEyLCAgICAtMSwg
ICAxMTMsICAgIDU1LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA1NiwgICAxMTIsICAgIC0xLAot
ICAgICAxMTMsICAgIC0xLCAgIDExNCwgICAgNTcsICAgMTEzLCAgICAtMSwgICAxMTQsICAgIDU4
LCAgIDExMywgICAgLTEsCi0gICAgIDExNCwgICAgLTEsICAgMTE1LCAgICAtMSwgICAxMTYsICAg
IC0xLCAgIDExNywgICAgLTEsICAgMTE4LCAgICA1OSwKLSAgICAgMTE3LCAgICAtMSwgICAxMTgs
ICAgIC0xLCAgIDExOSwgICAgNjEsICAgMTE4LCAgICAtMSwgICAxMTksICAgIC0xLAotICAgICAx
MjAsICAgIDYwLCAgIDExOSwgICAgLTEsICAgMTIwLCAgICAtMSwgICAxMjAsICAgIDk1LCAgIDEy
NCwgICAgODAsCi0gICAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMDgsICAgMTIzLCAg
IDEyMiwgICAgLTEsICAgIDgxLCAgICAtMSwKLSAgICAgIDYyLCAgICAtMSwgICAgNjMsICAgIC0x
LCAgICA2NCwgICAgLTEsICAgIDcxLCAgICAtMSwgICAxMjIsICAgIC0xLAotICAgICAxMjQsICAg
IDc5LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMjcsICAgIDgyLCAgICAtMSwgICAx
MzUsCi0gICAgICA4MiwgICAgLTEsICAgICA3LCAgIDE0MCwgICAxNDEsICAgIDgyLCAgICAtMSwg
ICAxMjgsICAgIDczLCAgICAtMSwKLSAgICAgMTMwLCAgICAtMSwgICAxMjksICAgIC0xLCAgIDEz
MCwgICAxMzIsICAgIC0xLCAgIDEyOSwgICAgNzksICAgMTMyLAotICAgICAgLTEsICAgMTM3LCAg
ICA0NSwgICAgNzIsICAgIC0xLCAgIDEzOSwgICAgNDUsICAgIC0xLCAgIDEzOSwgICAgNDUsCi0g
ICAgICA3NCwgICAxMjUsICAgIDc1LCAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzMSwgICAgLTEs
ICAgMTMzLCAgIDEzMSwKLSAgICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTM0LCAgICAtMSwgICAx
MzMsICAgMTM0LCAgICAtMSwgICAgLTEsICAgIDMzLAotICAgICAgLTEsICAgIDM0LCAgICAtMSwg
ICAgMzUsICAgIC0xLCAgIDEzOSwgICAgLTEsICAgMTM2LCAgICAtMSwgICAxMzUsCi0gICAgICA3
OSwgICAgNDUsICAgIC0xLCAgIDEzNSwgICAgNzksICAgIDQ1LCAgICA3NCwgICAgNzUsICAgIC0x
LCAgIDEzNSwKLSAgICAgIDc5LCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAg
MTM1LCAgICA3OSwgICAgNDUsICAgIDgxLAotICAgICAxNTAsICAgIC0xLCAgIDEzNywgICAgLTEs
ICAgMTM3LCAgICA0NSwgICAgLTEsICAgMTM3LCAgICA0NSwgICAgNzQsCi0gICAgICA3NSwgICAg
LTEsICAgMTM3LCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwgICAgLTEsICAgMTM3LCAgICA0
NSwKLSAgICAgIDgxLCAgIDE1MCwgICAgLTEsICAgICAzLCAgICA0NSwgICAgLTEsICAgMTM5LCAg
ICAtMSwgICAxMzgsICAgMTM5LAotICAgICAgLTEsICAgICA5LCAgICAtMSwgICAgIDgsICAgIC0x
LCAgICAzNywgICAgLTEsICAgICAzLCAgICAzNywgICAgLTEsCi0gICAgICAzNiwgICAgLTEsICAg
MTQxLCAgICAtMSwgICAxNDAsICAgMTQxLCAgICAtMSwgICAgIDQsICAgIC0xLCAgICAgNSwKLSAg
ICAgIC0xLCAgICAgNiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDc0LCAgIDEyNSwg
ICAgNzUsICAgIC0xLAotICAgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEyLCAgICAt
MSwgICAgMTAsICAgIC0xLCAgICAyNywgICAgLTEsCi0gICAgICAyOCwgICAgLTEsICAgIDI5LCAg
ICAtMSwgICAgMjEsICAgIC0xLCAgICAyMiwgICAgLTEsICAgIDIzLCAgICAtMSwKLSAgICAgIDI0
LCAgICAtMSwgICAgMjUsICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwgICAgMzEs
ICAgIC0xLAotICAgICAgMzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAg
NDMsICAgIC0xLCAgICA0NCwgICAgLTEsCi0gICAgIDE0MywgICAgLTEsICAgIDQ2LCAgICAtMSwg
ICAgLTEsICAgIDM4LCAgICA0NSwgICAgNzYsICAgMTQ0LCAgIDE0NiwKLSAgICAgIDc3LCAgICAt
MSwgICAgLTEsICAgIDM4LCAgICA3NiwgICAxNDUsICAgMTQ2LCAgICA3NywgICAgLTEsICAgMTQ3
LAotICAgICAgLTEsICAgMTQ2LCAgIDE0NywgICAgLTEsICAgMTM5LCAgIDE0OCwgICAgODIsICAg
IC0xLCAgIDE0OSwgICAgLTEsCi0gICAgIDE0OCwgICAgNzksICAgMTQ5LCAgICAtMSwgICAgNDUs
ICAgIC0xLCAgICA0NSwgICAgNzQsICAgMTI1LCAgICA3NSwKLSAgICAgIC0xLCAgIDEyMiwgICAg
LTEsICAgMTI2LCAgICAtMSwgICAxNTQsICAgIC0xLCAgIDE1MywgICAgLTEsICAgMTUxLAotICAg
ICAgLTEsICAgMTYzLCAgICAtMSwgICAxNjQsICAgIC0xLCAgIDE2NywgICAgLTEsICAgMTc0LCAg
ICAtMSwgICAgNzYsCi0gICAgICA3NywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgMTU1
LCAgIDE2MiwgICAxNTYsICAgIDc3LCAgICAtMSwKLSAgICAgMTYxLCAgICAtMSwgICAxNTMsICAg
IC0xLCAgICAtMSwgICAxNTksICAgMTYxLCAgICAtMSwgICAgLTEsICAgMTYwLAotICAgICAxNTMs
ICAgIC0xLCAgICA3NiwgICAgNzcsICAgIC0xLCAgICA3NiwgICAxNjIsICAgIDc3LCAgICAtMSwg
ICAxNTIsCi0gICAgICAtMSwgICAxNjIsICAgMTUyLCAgICAtMSwgICAgODIsICAgIC0xLCAgIDEy
NCwgICAgODIsICAgIC0xLCAgICAxOCwKLSAgICAgIDcyLCAgIDEyNCwgICAgNzMsICAgMTY1LCAg
ICAtMSwgICAxNTgsICAgIDE2LCAgIDE1OCwgICAgLTEsICAgMTU4LAotICAgICAgLTEsICAgMTI0
LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA4MSwgICAxNTAsICAgIC0xLCAgICAtMSwgICAgNDAs
Ci0gICAgICA3MiwgICAxNjgsICAgMTY2LCAgICA3MywgICAxNTcsICAgIC0xLCAgICAtMSwgICAg
MTUsICAgMTY5LCAgIDE1OCwKLSAgICAgIDQwLCAgICA3MiwgICAxMjQsICAgIDczLCAgICA4Miwg
ICAgLTEsICAgIC0xLCAgICAxNywgICAgNzIsICAgMTcwLAotICAgICAxNzEsICAgMTczLCAgICA3
MywgICAxNTcsICAgIC0xLCAgIDE2MywgICAgLTEsICAgMTUxLCAgICAtMSwgICAxNjYsCi0gICAg
ICAtMSwgICAgLTEsICAgMTcyLCAgICA4MiwgICAgLTEsICAgMTcyLCAgICA4MiwgICAxMjQsICAg
IC0xLCAgICAxNCwKLSAgICAgIDgyLCAgICAtMSwgICAgMTMsICAgIDgyLCAgICAtMSwgICAgMjAs
ICAgIDgyLCAgICAtMSwgICAgMjAsICAgMTI0LAotICAgICAgODIsICAgIC0xLCAgICAxOSwgICAg
ODIsICAgIC0xLCAgIDE3NiwgICAgLTEsICAgMTc1LCAgIDE3NiwgICAgLTEsCi0gICAgIDE3Nywg
ICAgLTEsICAgMTI2LCAgICAtMSwgICAgLTEsICAgMTI3LCAgIDE3OCwgICAxNjEsICAgIC0xCisg
ICAgIDE3NSwgICAgIDAsICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDQ2LCAgICAtMSwgICAgNDUs
ICAgIC0xLCAgICA5NywKKyAgICAgIC0xLCAgICA0OCwgICAgLTEsICAgIDQ3LCAgICAtMSwgICAg
NDksICAgIC0xLCAgICA3MSwgICAxMjQsICAgIDcyLAorICAgICAgLTEsICAgIDk4LCAgICAtMSwg
ICAgOTksICAgIDczLCAgIDEwMCwgICAgNzQsICAgIC0xLCAgIDEwMSwgICAgLTEsCisgICAgICA5
OSwgICAgNzcsICAgIDk2LCAgICAtMSwgICAgOTksICAgIDUyLCAgICAtMSwgICAgOTksICAgIDUz
LCAgICAtMSwKKyAgICAgMTI0LCAgICAtMSwgICAxMDIsICAgIC0xLCAgIDEwMywgICAgLTEsICAg
IDk5LCAgICA3NywgICAxMDMsICAgIC0xLAorICAgICAxMDUsICAgIDcyLCAgICAtMSwgICAxMDQs
ICAgIDcyLCAgICAtMSwgICAxMDYsICAgIDM5LCAgICAtMSwgICAxMDYsCisgICAgICAtMSwgICAx
MDYsICAgMTIyLCAgICAtMSwgICAxMDUsICAgIDc4LCAgIDEyMiwgICAgLTEsICAgMTA3LCAgICA3
MSwKKyAgICAgIC0xLCAgIDE0MiwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgOTksICAgIC0xLCAg
ICA1MiwgICAxMDgsICAgIC0xLAorICAgICAgNTMsICAgMTA4LCAgICAtMSwgICAxMDksICAgMTA4
LCAgICAtMSwgICAgODUsICAgIC0xLCAgICA4MywgICAgLTEsCisgICAgICA4MiwgICAgLTEsICAg
MTA4LCAgICAtMSwgICAxMTAsICAgIDg2LCAgIDEwOCwgICAgLTEsICAgMTEwLCAgICA4NywKKyAg
ICAgMTA4LCAgICAtMSwgICAxMTAsICAgIC0xLCAgIDExMSwgICAgODUsICAgMTEwLCAgICAtMSwg
ICAxMTEsICAgIDgzLAorICAgICAxMTAsICAgIC0xLCAgIDExMSwgICAgLTEsICAgMTEyLCAgICAt
MSwgICAxMTMsICAgIDg5LCAgIDExMiwgICAgLTEsCisgICAgIDExMywgICAgOTAsICAgMTEyLCAg
ICAtMSwgICAxMTMsICAgIDU0LCAgIDExMiwgICAgLTEsICAgMTEzLCAgICA1NSwKKyAgICAgMTEy
LCAgICAtMSwgICAxMTMsICAgIC0xLCAgIDExNCwgICAgNTYsICAgMTEzLCAgICAtMSwgICAxMTQs
ICAgIDU3LAorICAgICAxMTMsICAgIC0xLCAgIDExNCwgICAgLTEsICAgMTE1LCAgICAtMSwgICAx
MTYsICAgIC0xLCAgIDExNywgICAgLTEsCisgICAgIDExOCwgICAgNTgsICAgMTE3LCAgICAtMSwg
ICAxMTgsICAgIC0xLCAgIDExOSwgICAgNjAsICAgMTE4LCAgICAtMSwKKyAgICAgMTE5LCAgICAt
MSwgICAxMjAsICAgIDU5LCAgIDExOSwgICAgLTEsICAgMTIwLCAgICAtMSwgICAxMjAsICAgIDk0
LAorICAgICAxMjQsICAgIDc5LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMDgsICAg
MTIzLCAgIDEyMiwgICAgLTEsCisgICAgICA4MCwgICAgLTEsICAgIDYxLCAgICAtMSwgICAgNjIs
ICAgIC0xLCAgICA2MywgICAgLTEsICAgIDcwLCAgICAtMSwKKyAgICAgMTIyLCAgICAtMSwgICAx
MjQsICAgIDc4LCAgIDEyMiwgICAgLTEsICAgMTIxLCAgICAtMSwgICAxMjcsICAgIDgxLAorICAg
ICAgLTEsICAgMTM1LCAgICA4MSwgICAgLTEsICAgICA3LCAgIDE0MCwgICAxNDEsICAgIDgxLCAg
ICAtMSwgICAxMjgsCisgICAgICA3MiwgICAgLTEsICAgMTMwLCAgICAtMSwgICAxMjksICAgIC0x
LCAgIDEzMCwgICAxMzIsICAgIC0xLCAgIDEyOSwKKyAgICAgIDc4LCAgIDEzMiwgICAgLTEsICAg
MTM3LCAgICA0NSwgICAgNzEsICAgIC0xLCAgIDEzOSwgICAgOTYsICAgIC0xLAorICAgICAxMzks
ICAgIDk2LCAgICA3MywgICAxMjUsICAgIDc0LCAgICAtMSwgICAxMzgsICAgMTMzLCAgIDEzMSwg
ICAgLTEsCisgICAgIDEzMywgICAxMzEsICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTM0LCAgICAt
MSwgICAxMzMsICAgMTM0LCAgICAtMSwKKyAgICAgIC0xLCAgICAzMywgICAgLTEsICAgIDM0LCAg
ICAtMSwgICAgMzUsICAgIC0xLCAgIDEzOSwgICAgLTEsICAgMTM2LAorICAgICAgLTEsICAgMTM1
LCAgICA3OCwgICAgOTYsICAgIC0xLCAgIDEzNSwgICAgNzgsICAgIDk2LCAgICA3MywgICAgNzQs
CisgICAgICAtMSwgICAxMzUsICAgIDc4LCAgICA5NiwgICAgNzMsICAgMTI1LCAgICA3NCwgICAg
LTEsICAgMTM1LCAgICA3OCwKKyAgICAgIDk2LCAgICA4MCwgICAxNTAsICAgIC0xLCAgIDEzNywg
ICAgLTEsICAgMTM3LCAgICA5NiwgICAgLTEsICAgMTM3LAorICAgICAgOTYsICAgIDczLCAgICA3
NCwgICAgLTEsICAgMTM3LCAgICA5NiwgICAgNzMsICAgMTI1LCAgICA3NCwgICAgLTEsCisgICAg
IDEzNywgICAgOTYsICAgIDgwLCAgIDE1MCwgICAgLTEsICAgICAzLCAgICA0NSwgICAgLTEsICAg
MTM5LCAgICAtMSwKKyAgICAgMTM4LCAgIDEzOSwgICAgLTEsICAgICA5LCAgICAtMSwgICAgIDgs
ICAgIC0xLCAgICAzNywgICAgLTEsICAgICAzLAorICAgICAgMzcsICAgIC0xLCAgICAzNiwgICAg
LTEsICAgMTQxLCAgICAtMSwgICAxNDAsICAgMTQxLCAgICAtMSwgICAgIDQsCisgICAgICAtMSwg
ICAgIDUsICAgIC0xLCAgICAgNiwgICAgLTEsICAgMTQyLCAgICAtMSwgICAxNDIsICAgIDczLCAg
IDEyNSwKKyAgICAgIDc0LCAgICAtMSwgICAgMzksICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEy
LCAgICAtMSwgICAgMTAsICAgIC0xLAorICAgICAgMjcsICAgIC0xLCAgICAyOCwgICAgLTEsICAg
IDI5LCAgICAtMSwgICAgMjEsICAgIC0xLCAgICAyMiwgICAgLTEsCisgICAgICAyMywgICAgLTEs
ICAgIDI0LCAgICAtMSwgICAgMjUsICAgIC0xLCAgICAyNiwgICAgLTEsICAgIDMwLCAgICAtMSwK
KyAgICAgIDMxLCAgICAtMSwgICAgMzIsICAgIC0xLCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAt
MSwgICAgNDMsICAgIC0xLAorICAgICAgNDQsICAgIC0xLCAgIDE0MywgICAgLTEsICAgIDQ2LCAg
ICAtMSwgICAgLTEsICAgIDM4LCAgICA5NiwgICAgNzUsCisgICAgIDE0NCwgICAxNDYsICAgIDc2
LCAgICAtMSwgICAgLTEsICAgIDM4LCAgICA3NSwgICAxNDUsICAgMTQ2LCAgICA3NiwKKyAgICAg
IC0xLCAgIDE0NywgICAgLTEsICAgMTQ2LCAgIDE0NywgICAgLTEsICAgMTM5LCAgIDE0OCwgICAg
ODEsICAgIC0xLAorICAgICAxNDksICAgIC0xLCAgIDE0OCwgICAgNzgsICAgMTQ5LCAgICAtMSwg
ICAgOTYsICAgIC0xLCAgICA5NiwgICAgNzMsCisgICAgIDEyNSwgICAgNzQsICAgIC0xLCAgIDEy
MiwgICAgLTEsICAgMTI2LCAgICAtMSwgICAxNTQsICAgIC0xLCAgIDE1MywKKyAgICAgIC0xLCAg
IDE1MSwgICAgLTEsICAgMTYzLCAgICAtMSwgICAxNjQsICAgIC0xLCAgIDE2NywgICAgLTEsICAg
MTc0LAorICAgICAgLTEsICAgIDc1LCAgICA3NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUs
ICAgMTU1LCAgIDE2MiwgICAxNTYsCisgICAgICA3NiwgICAgLTEsICAgMTYxLCAgICAtMSwgICAx
NTMsICAgIC0xLCAgICAtMSwgICAxNTksICAgMTYxLCAgICAtMSwKKyAgICAgIC0xLCAgIDE2MCwg
ICAxNTMsICAgIC0xLCAgICA3NSwgICAgNzYsICAgIC0xLCAgICA3NSwgICAxNjIsICAgIDc2LAor
ICAgICAgLTEsICAgMTUyLCAgICAtMSwgICAxNjIsICAgMTUyLCAgICAtMSwgICAgODEsICAgIC0x
LCAgIDEyNCwgICAgODEsCisgICAgICAtMSwgICAgMTgsICAgIDcxLCAgIDEyNCwgICAgNzIsICAg
MTY1LCAgICAtMSwgICAxNTgsICAgIDE2LCAgIDE1OCwKKyAgICAgIC0xLCAgIDE1OCwgICAgLTEs
ICAgMTI0LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICA4MCwgICAxNTAsICAgIC0xLAorICAgICAg
LTEsICAgIDQwLCAgICA3MSwgICAxNjgsICAgMTY2LCAgICA3MiwgICAxNTcsICAgIC0xLCAgICAt
MSwgICAgMTUsCisgICAgIDE2OSwgICAxNTgsICAgIDQwLCAgICA3MSwgICAxMjQsICAgIDcyLCAg
ICA4MSwgICAgLTEsICAgIC0xLCAgICAxNywKKyAgICAgIDcxLCAgIDE3MCwgICAxNzEsICAgMTcz
LCAgICA3MiwgICAxNTcsICAgIC0xLCAgIDE2MywgICAgLTEsICAgMTUxLAorICAgICAgLTEsICAg
MTY2LCAgICAtMSwgICAgLTEsICAgMTcyLCAgICA4MSwgICAgLTEsICAgMTcyLCAgICA4MSwgICAx
MjQsCisgICAgICAtMSwgICAgMTQsICAgIDgxLCAgICAtMSwgICAgMTMsICAgIDgxLCAgICAtMSwg
ICAgMjAsICAgIDgxLCAgICAtMSwKKyAgICAgIDIwLCAgIDEyNCwgICAgODEsICAgIC0xLCAgICAx
OSwgICAgODEsICAgIC0xLCAgIDE3NiwgICAgLTEsICAgMTc1LAorICAgICAxNzYsICAgIC0xLCAg
IDE3NywgICAgLTEsICAgMTI2LCAgICAtMSwgICAgLTEsICAgMTI3LCAgIDE3OCwgICAxNjEsCisg
ICAgICAtMQogfTsKIAogLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUg
bnVtYmVyIFlZTiB3YXMgZGVmaW5lZC4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5
eXJsaW5lW10gPQogewotICAgICAgIDAsICAgMTY4LCAgIDE2OCwgICAyMDMsICAgMjA2LCAgIDIx
OSwgICAyMjQsICAgMjI5LCAgIDIzNSwgICAyMzgsCi0gICAgIDMxNywgICAzMjAsICAgNDIxLCAg
IDQzMSwgICA0NDQsICAgNDUyLCAgIDU1MiwgICA1NTUsICAgNTYzLCAgIDU2NywKLSAgICAgNTc0
LCAgIDU3OCwgICA1ODUsICAgNTkxLCAgIDYwMCwgICA2MDgsICAgNjYzLCAgIDY3MCwgICA2ODAs
ICAgNjgzLAotICAgICA2OTMsICAgNzAzLCAgIDcyNCwgICA3MjUsICAgNzI2LCAgIDczMSwgICA3
MzIsICAgNzQxLCAgIDc1MywgICA3NTQsCi0gICAgIDc2MiwgICA3NzMsICAgNzc3LCAgIDc3OCwg
ICA3ODgsICAgNzk4LCAgIDgwOCwgICA4MjEsICAgODIyLCAgIDgzMiwKLSAgICAgODQ1LCAgIDg0
OSwgICA4NTMsICAgODU3LCAgIDg1OCwgICA4NzEsICAgODcyLCAgIDg4NSwgICA4ODYsICAgODk5
LAotICAgICA5MDAsICAgOTE3LCAgIDkxOCwgICA5MzEsICAgOTMyLCAgIDkzMywgICA5MzQsICAg
OTM1LCAgIDkzOSwgICA5NDIsCi0gICAgIDk1MywgICA5NjEsICAgOTg4LCAgIDk5MywgIDEwMDcs
ICAxMDQ1LCAgMTA0OCwgIDEwNTUsICAxMDYzLCAgMTA4NCwKLSAgICAxMTA1LCAgMTExNiwgIDEx
NDUsICAxMTUwLCAgMTE2MCwgIDExNjUsICAxMTc1LCAgMTE3OCwgIDExODEsICAxMTg0LAotICAg
IDExOTAsICAxMTk3LCAgMTIwMCwgIDEyMjIsICAxMjQwLCAgMTI2NCwgIDEyODcsICAxMjkxLCAg
MTMwOSwgIDEzMTcsCi0gICAgMTM0OSwgIDEzNjksICAxNDU4LCAgMTQ2NywgIDE0OTAsICAxNDkz
LCAgMTQ5OSwgIDE1MDcsICAxNTE1LCAgMTUyMywKLSAgICAxNTMzLCAgMTU0MCwgIDE1NDMsICAx
NTQ2LCAgMTU1MiwgIDE1NTUsICAxNTcwLCAgMTU3NCwgIDE1NzgsICAxNTgyLAotICAgIDE1OTEs
ICAxNTk2LCAgMTYwMSwgIDE2MDYsICAxNjExLCAgMTYxNiwgIDE2MjEsICAxNjI2LCAgMTYzMSwg
IDE2MzYsCi0gICAgMTY0MiwgIDE2NDgsICAxNjU0LCAgMTY1OSwgIDE2NjQsICAxNjczLCAgMTY4
MiwgIDE2ODcsICAxNzAwLCAgMTcwMCwKLSAgICAxNzE0LCAgMTcxNCwgIDE3MjMsICAxNzI2LCAg
MTc0MSwgIDE3NzcsICAxNzgxLCAgMTc4NywgIDE3OTUsICAxODExLAotICAgIDE4MTUsICAxODE5
LCAgMTgyMCwgIDE4MjYsICAxODI3LCAgMTgyOCwgIDE4MjksICAxODMwLCAgMTgzNCwgIDE4MzUs
Ci0gICAgMTgzNSwgIDE4MzUsICAxODQ1LCAgMTg0NiwgIDE4NTAsICAxODUwLCAgMTg1MSwgIDE4
NTEsICAxODU2LCAgMTg1OSwKLSAgICAxODY5LCAgMTg3MiwgIDE4NzgsICAxODc5LCAgMTg4Mywg
IDE4OTEsICAxODk1LCAgMTkwNSwgIDE5MTAsICAxOTI3LAotICAgIDE5MjcsICAxOTMyLCAgMTkz
MiwgIDE5MzksICAxOTM5LCAgMTk0NywgIDE5NTAsICAxOTU2LCAgMTk1OSwgIDE5NjUsCi0gICAg
MTk2OSwgIDE5NzYsICAxOTgzLCAgMTk5MCwgIDE5OTcsICAyMDA4LCAgMjAxNywgIDIwMjEsICAy
MDI4LCAgMjAzMSwKLSAgICAyMDM3LCAgMjAzNworICAgICAgIDAsICAgMTc2LCAgIDE3NiwgICAx
NzcsICAgMTgwLCAgIDIyMywgICAyMjYsICAgMjM5LCAgIDI0NCwgICAyNDksCisgICAgIDI1NSwg
ICAyNTgsICAgMjYxLCAgIDI2NCwgICAzNTksICAgMzY5LCAgIDM4MiwgICAzOTAsICAgNDkwLCAg
IDQ5MywKKyAgICAgNTAxLCAgIDUwNCwgICA1MTAsICAgNTE0LCAgIDUyMSwgICA1MjcsICAgNTM2
LCAgIDU0NCwgICA1OTksICAgNjA5LAorICAgICA2MTIsICAgNjIyLCAgIDYzMiwgICA2NTMsICAg
NjU0LCAgIDY1NSwgICA2NjAsICAgNjYxLCAgIDY2OSwgICA2ODAsCisgICAgIDY4MSwgICA2ODks
ICAgNzAwLCAgIDcwNCwgICA3MDUsICAgNzE1LCAgIDcyNSwgICA3MzUsICAgNzQ4LCAgIDc0OSwK
KyAgICAgNzU5LCAgIDc3MiwgICA3NzYsICAgNzgwLCAgIDc4NCwgICA3ODUsICAgNzk4LCAgIDc5
OSwgICA4MTIsICAgODEzLAorICAgICA4MjYsICAgODI3LCAgIDg0NCwgICA4NDUsICAgODU4LCAg
IDg1OSwgICA4NjAsICAgODYxLCAgIDg2MiwgICA4NjYsCisgICAgIDg2OSwgICA4ODAsICAgODg4
LCAgIDkxNSwgICA5MjAsICAgOTM0LCAgIDk4OSwgICA5OTIsICAgOTk5LCAgMTAwNywKKyAgICAx
MDI4LCAgMTA0OSwgIDEwNTksICAxMDg3LCAgMTA5MiwgIDExMDIsICAxMTA3LCAgMTExNywgIDEx
MjAsICAxMTIzLAorICAgIDExMjYsICAxMTMyLCAgMTEzOSwgIDExNDIsICAxMTY0LCAgMTE4Miwg
IDEyMDYsICAxMjI5LCAgMTIzMywgIDEyNTEsCisgICAgMTI1OSwgIDEyOTEsICAxMzExLCAgMTMz
MiwgIDEzNDEsICAxMzY0LCAgMTM2NywgIDEzNzMsICAxMzgxLCAgMTM4OSwKKyAgICAxMzk3LCAg
MTQwNywgIDE0MTQsICAxNDE3LCAgMTQyMCwgIDE0MjYsICAxNDI5LCAgMTQ0NCwgIDE0NDgsICAx
NDUyLAorICAgIDE0NTYsICAxNDYwLCAgMTQ2NSwgIDE0NzAsICAxNDc1LCAgMTQ4MCwgIDE0ODUs
ICAxNDkwLCAgMTQ5NSwgIDE1MDAsCisgICAgMTUwNSwgIDE1MTAsICAxNTE1LCAgMTUyMCwgIDE1
MjQsICAxNTI4LCAgMTUzNiwgIDE1NDQsICAxNTQ4LCAgMTU2MSwKKyAgICAxNTYxLCAgMTU3NSwg
IDE1NzUsICAxNTg0LCAgMTU4NywgIDE2MDMsICAxNjM2LCAgMTY0MCwgIDE2NDYsICAxNjUzLAor
ICAgIDE2NjgsICAxNjcyLCAgMTY3NiwgIDE2NzcsICAxNjgzLCAgMTY4NCwgIDE2ODUsICAxNjg2
LCAgMTY4NywgIDE2OTEsCisgICAgMTY5MiwgIDE2OTIsICAxNjkyLCAgMTcwMiwgIDE3MDMsICAx
NzA3LCAgMTcwNywgIDE3MDgsICAxNzA4LCAgMTcxMywKKyAgICAxNzE2LCAgMTcyNiwgIDE3Mjks
ICAxNzM1LCAgMTczNiwgIDE3NDAsICAxNzQ4LCAgMTc1MiwgIDE3NjIsICAxNzY3LAorICAgIDE3
ODQsICAxNzg0LCAgMTc4OSwgIDE3ODksICAxNzk2LCAgMTc5NiwgIDE4MDQsICAxODA3LCAgMTgx
MywgIDE4MTYsCisgICAgMTgyMiwgIDE4MjYsICAxODMzLCAgMTg0MCwgIDE4NDcsICAxODU0LCAg
MTg2NSwgIDE4NzQsICAxODc4LCAgMTg4NSwKKyAgICAxODg4LCAgMTg5NCwgIDE4OTQKIH07CiAj
ZW5kaWYKIApAQCAtNzg4LDE1ICs4MDcsMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHl5
dG5hbWVbXSA9CiAgICJNQVRSSVgzIiwgIk1BVFJJWDQiLCAiSU5fUVVBTCIsICJPVVRfUVVBTCIs
ICJJTk9VVF9RVUFMIiwgIlVOSUZPUk0iLAogICAiVkFSWUlORyIsICJTVFJVQ1QiLCAiVk9JRF9U
WVBFIiwgIldISUxFIiwgIlNBTVBMRVIyRCIsICJTQU1QTEVSQ1VCRSIsCiAgICJTQU1QTEVSX0VY
VEVSTkFMX09FUyIsICJTQU1QTEVSMkRSRUNUIiwgIklERU5USUZJRVIiLCAiVFlQRV9OQU1FIiwK
LSAgIkZMT0FUQ09OU1RBTlQiLCAiSU5UQ09OU1RBTlQiLCAiQk9PTENPTlNUQU5UIiwgIkZJRUxE
X1NFTEVDVElPTiIsCi0gICJMRUZUX09QIiwgIlJJR0hUX09QIiwgIklOQ19PUCIsICJERUNfT1Ai
LCAiTEVfT1AiLCAiR0VfT1AiLCAiRVFfT1AiLAotICAiTkVfT1AiLCAiQU5EX09QIiwgIk9SX09Q
IiwgIlhPUl9PUCIsICJNVUxfQVNTSUdOIiwgIkRJVl9BU1NJR04iLAotICAiQUREX0FTU0lHTiIs
ICJNT0RfQVNTSUdOIiwgIkxFRlRfQVNTSUdOIiwgIlJJR0hUX0FTU0lHTiIsICJBTkRfQVNTSUdO
IiwKLSAgIlhPUl9BU1NJR04iLCAiT1JfQVNTSUdOIiwgIlNVQl9BU1NJR04iLCAiTEVGVF9QQVJF
TiIsICJSSUdIVF9QQVJFTiIsCi0gICJMRUZUX0JSQUNLRVQiLCAiUklHSFRfQlJBQ0tFVCIsICJM
RUZUX0JSQUNFIiwgIlJJR0hUX0JSQUNFIiwgIkRPVCIsCi0gICJDT01NQSIsICJDT0xPTiIsICJF
UVVBTCIsICJTRU1JQ09MT04iLCAiQkFORyIsICJEQVNIIiwgIlRJTERFIiwgIlBMVVMiLAotICAi
U1RBUiIsICJTTEFTSCIsICJQRVJDRU5UIiwgIkxFRlRfQU5HTEUiLCAiUklHSFRfQU5HTEUiLCAi
VkVSVElDQUxfQkFSIiwKLSAgIkNBUkVUIiwgIkFNUEVSU0FORCIsICJRVUVTVElPTiIsICIkYWNj
ZXB0IiwgInZhcmlhYmxlX2lkZW50aWZpZXIiLAorICAiRkxPQVRDT05TVEFOVCIsICJJTlRDT05T
VEFOVCIsICJCT09MQ09OU1RBTlQiLCAiTEVGVF9PUCIsICJSSUdIVF9PUCIsCisgICJJTkNfT1Ai
LCAiREVDX09QIiwgIkxFX09QIiwgIkdFX09QIiwgIkVRX09QIiwgIk5FX09QIiwgIkFORF9PUCIs
CisgICJPUl9PUCIsICJYT1JfT1AiLCAiTVVMX0FTU0lHTiIsICJESVZfQVNTSUdOIiwgIkFERF9B
U1NJR04iLAorICAiTU9EX0FTU0lHTiIsICJMRUZUX0FTU0lHTiIsICJSSUdIVF9BU1NJR04iLCAi
QU5EX0FTU0lHTiIsICJYT1JfQVNTSUdOIiwKKyAgIk9SX0FTU0lHTiIsICJTVUJfQVNTSUdOIiwg
IkxFRlRfUEFSRU4iLCAiUklHSFRfUEFSRU4iLCAiTEVGVF9CUkFDS0VUIiwKKyAgIlJJR0hUX0JS
QUNLRVQiLCAiTEVGVF9CUkFDRSIsICJSSUdIVF9CUkFDRSIsICJET1QiLCAiQ09NTUEiLCAiQ09M
T04iLAorICAiRVFVQUwiLCAiU0VNSUNPTE9OIiwgIkJBTkciLCAiREFTSCIsICJUSUxERSIsICJQ
TFVTIiwgIlNUQVIiLCAiU0xBU0giLAorICAiUEVSQ0VOVCIsICJMRUZUX0FOR0xFIiwgIlJJR0hU
X0FOR0xFIiwgIlZFUlRJQ0FMX0JBUiIsICJDQVJFVCIsCisgICJBTVBFUlNBTkQiLCAiUVVFU1RJ
T04iLCAiJGFjY2VwdCIsICJpZGVudGlmaWVyIiwgInZhcmlhYmxlX2lkZW50aWZpZXIiLAogICAi
cHJpbWFyeV9leHByZXNzaW9uIiwgInBvc3RmaXhfZXhwcmVzc2lvbiIsICJpbnRlZ2VyX2V4cHJl
c3Npb24iLAogICAiZnVuY3Rpb25fY2FsbCIsICJmdW5jdGlvbl9jYWxsX29yX21ldGhvZCIsICJm
dW5jdGlvbl9jYWxsX2dlbmVyaWMiLAogICAiZnVuY3Rpb25fY2FsbF9oZWFkZXJfbm9fcGFyYW1l
dGVycyIsCkBAIC04NDIsNjAgKzg2MSw2MCBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5
eXRva251bVtdID0KICAgICAgMzE1LCAgIDMxNiwgICAzMTcsICAgMzE4LCAgIDMxOSwgICAzMjAs
ICAgMzIxLCAgIDMyMiwgICAzMjMsICAgMzI0LAogICAgICAzMjUsICAgMzI2LCAgIDMyNywgICAz
MjgsICAgMzI5LCAgIDMzMCwgICAzMzEsICAgMzMyLCAgIDMzMywgICAzMzQsCiAgICAgIDMzNSwg
ICAzMzYsICAgMzM3LCAgIDMzOCwgICAzMzksICAgMzQwLCAgIDM0MSwgICAzNDIsICAgMzQzLCAg
IDM0NCwKLSAgICAgMzQ1LCAgIDM0NiwgICAzNDcsICAgMzQ4LCAgIDM0OSwgICAzNTAKKyAgICAg
MzQ1LCAgIDM0NiwgICAzNDcsICAgMzQ4LCAgIDM0OQogfTsKICMgZW5kaWYKIAogLyogWVlSMVtZ
WU5dIC0tIFN5bWJvbCBudW1iZXIgb2Ygc3ltYm9sIHRoYXQgcnVsZSBZWU4gZGVyaXZlcy4gICov
CiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjFbXSA9CiB7Ci0gICAgICAgMCwgICAgOTYs
ICAgIDk3LCAgICA5OCwgICAgOTgsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk5LCAgICA5OSwK
LSAgICAgIDk5LCAgICA5OSwgICAgOTksICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEw
MiwgICAxMDMsICAgMTAzLAotICAgICAxMDQsICAgMTA0LCAgIDEwNSwgICAxMDUsICAgMTA2LCAg
IDEwNywgICAxMDcsICAgMTA3LCAgIDEwOCwgICAxMDgsCi0gICAgIDEwOCwgICAxMDgsICAgMTA5
LCAgIDEwOSwgICAxMDksICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTExLCAgIDExMSwKLSAgICAg
MTExLCAgIDExMiwgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExNCwgICAx
MTQsICAgMTE0LAotICAgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE4LCAgIDExOSwg
ICAxMTksICAgMTIwLCAgIDEyMCwgICAxMjEsCi0gICAgIDEyMSwgICAxMjIsICAgMTIyLCAgIDEy
MywgICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTI0LCAgIDEyNCwKLSAgICAgMTI1LCAg
IDEyNiwgICAxMjYsICAgMTI2LCAgIDEyNywgICAxMjgsICAgMTI4LCAgIDEyOSwgICAxMjksICAg
MTMwLAotICAgICAxMzEsICAgMTMxLCAgIDEzMiwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzMs
ICAgMTMzLCAgIDEzMywgICAxMzMsCi0gICAgIDEzNCwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAx
MzUsICAgMTM1LCAgIDEzNiwgICAxMzYsICAgMTM2LCAgIDEzNiwKLSAgICAgMTM2LCAgIDEzNiwg
ICAxMzcsICAgMTM3LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM5LAot
ICAgICAxMzksICAgMTQwLCAgIDE0MCwgICAxNDAsICAgMTQxLCAgIDE0MSwgICAxNDIsICAgMTQy
LCAgIDE0MiwgICAxNDIsCisgICAgICAgMCwgICAgOTUsICAgIDk2LCAgICA5NiwgICAgOTcsICAg
IDk4LCAgICA5OCwgICAgOTgsICAgIDk4LCAgICA5OCwKKyAgICAgIDk5LCAgICA5OSwgICAgOTks
ICAgIDk5LCAgICA5OSwgICAgOTksICAgMTAwLCAgIDEwMSwgICAxMDIsICAgMTAyLAorICAgICAx
MDMsICAgMTAzLCAgIDEwNCwgICAxMDQsICAgMTA1LCAgIDEwNSwgICAxMDYsICAgMTA3LCAgIDEw
NywgICAxMDgsCisgICAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOSwgICAxMDksICAgMTA5LCAg
IDExMCwgICAxMTAsICAgMTEwLCAgIDExMSwKKyAgICAgMTExLCAgIDExMSwgICAxMTIsICAgMTEz
LCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTQsICAgMTE0LAorICAgICAxMTQsICAg
MTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgIDExOCwgICAxMTksICAgMTE5LCAgIDEyMCwgICAx
MjAsCisgICAgIDEyMSwgICAxMjEsICAgMTIyLCAgIDEyMiwgICAxMjMsICAgMTIzLCAgIDEyMywg
ICAxMjMsICAgMTIzLCAgIDEyNCwKKyAgICAgMTI0LCAgIDEyNSwgICAxMjYsICAgMTI2LCAgIDEy
NiwgICAxMjcsICAgMTI4LCAgIDEyOCwgICAxMjksICAgMTI5LAorICAgICAxMzAsICAgMTMxLCAg
IDEzMSwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzIsICAgMTMzLCAgIDEzMywgICAxMzMsCisg
ICAgIDEzMywgICAxMzQsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzYs
ICAgMTM2LCAgIDEzNiwKKyAgICAgMTM2LCAgIDEzNiwgICAxMzYsICAgMTM3LCAgIDEzNywgICAx
MzgsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM4LAorICAgICAxMzksICAgMTM5LCAgIDE0MCwg
ICAxNDAsICAgMTQwLCAgIDE0MSwgICAxNDEsICAgMTQyLCAgIDE0MiwgICAxNDIsCiAgICAgIDE0
MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQy
LCAgIDE0MiwKLSAgICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAg
MTQyLCAgIDE0MiwgICAxNDQsICAgMTQzLAotICAgICAxNDUsICAgMTQzLCAgIDE0NiwgICAxNDYs
ICAgMTQ3LCAgIDE0OCwgICAxNDgsICAgMTQ5LCAgIDE0OSwgICAxNTAsCi0gICAgIDE1MSwgICAx
NTIsICAgMTUyLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTU0LCAgIDE1
NSwKLSAgICAgMTU2LCAgIDE1NCwgICAxNTcsICAgMTU3LCAgIDE1OSwgICAxNTgsICAgMTYwLCAg
IDE1OCwgICAxNjEsICAgMTYxLAotICAgICAxNjIsICAgMTYyLCAgIDE2MywgICAxNjMsICAgMTY0
LCAgIDE2NSwgICAxNjUsICAgMTY2LCAgIDE2NiwgICAxNjgsCi0gICAgIDE2NywgICAxNjksICAg
MTY3LCAgIDE3MCwgICAxNjcsICAgMTcxLCAgIDE3MSwgICAxNzIsICAgMTcyLCAgIDE3MywKLSAg
ICAgMTczLCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc1LCAgIDE3NSwg
ICAxNzYsICAgMTc2LAotICAgICAxNzgsICAgMTc3CisgICAgIDE0MiwgICAxNDIsICAgMTQyLCAg
IDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0NCwKKyAgICAgMTQz
LCAgIDE0NSwgICAxNDMsICAgMTQ2LCAgIDE0NiwgICAxNDcsICAgMTQ4LCAgIDE0OCwgICAxNDks
ICAgMTQ5LAorICAgICAxNTAsICAgMTUxLCAgIDE1MiwgICAxNTIsICAgMTUzLCAgIDE1MywgICAx
NTMsICAgMTUzLCAgIDE1MywgICAxNTQsCisgICAgIDE1NSwgICAxNTYsICAgMTU0LCAgIDE1Nywg
ICAxNTcsICAgMTU5LCAgIDE1OCwgICAxNjAsICAgMTU4LCAgIDE2MSwKKyAgICAgMTYxLCAgIDE2
MiwgICAxNjIsICAgMTYzLCAgIDE2MywgICAxNjQsICAgMTY1LCAgIDE2NSwgICAxNjYsICAgMTY2
LAorICAgICAxNjgsICAgMTY3LCAgIDE2OSwgICAxNjcsICAgMTcwLCAgIDE2NywgICAxNzEsICAg
MTcxLCAgIDE3MiwgICAxNzIsCisgICAgIDE3MywgICAxNzMsICAgMTc0LCAgIDE3NCwgICAxNzQs
ICAgMTc0LCAgIDE3NCwgICAxNzUsICAgMTc1LCAgIDE3NiwKKyAgICAgMTc2LCAgIDE3OCwgICAx
NzcKIH07CiAKIC8qIFlZUjJbWVlOXSAtLSBOdW1iZXIgb2Ygc3ltYm9scyBjb21wb3Npbmcgcmln
aHQgaGFuZCBzaWRlIG9mIHJ1bGUgWVlOLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDgg
eXlyMltdID0KIHsKLSAgICAgICAwLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMywgICAgIDEsICAgICA0LAotICAgICAgIDEsICAgICAzLCAgICAgMiwgICAg
IDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMiwgICAgIDIsCi0gICAgICAgMiwg
ICAgIDEsICAgICAyLCAgICAgMywgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMiwKLSAgICAgICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAz
LCAgICAgMywgICAgIDEsICAgICAzLAotICAgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDMsICAg
ICAzLCAgICAgMywgICAgIDMsICAgICAxLCAgICAgMywgICAgIDMsCi0gICAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwK
LSAgICAgICA1LCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAzLAotICAgICAgIDEsICAgICAyLCAgICAgMiwgICAgIDQsICAgICAyLCAg
ICAgMSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDMsCi0gICAgICAgMiwgICAgIDUsICAgICAz
LCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMCwgICAgIDEsICAgICAxLCAgICAgMSwKLSAgICAg
ICAxLCAgICAgMSwgICAgIDMsICAgICA1LCAgICAgNiwgICAgIDUsICAgICAxLCAgICAgMiwgICAg
IDQsICAgICA1LAotICAgICAgIDQsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsCi0gICAgICAgMiwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICA0LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAwLCAg
ICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAzLAorICAgICAgIDEsICAgICA0LCAgICAgMSwgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDMsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMSwgICAg
IDIsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDMsICAgICAxLAor
ICAgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAgIDMsICAgICAz
LCAgICAgMSwgICAgIDMsCisgICAgICAgMywgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywKKyAgICAgICAxLCAgICAgNSwgICAgIDEs
ICAgICAzLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAorICAgICAg
IDMsICAgICAxLCAgICAgMiwgICAgIDIsICAgICA0LCAgICAgMiwgICAgIDEsICAgICAxLCAgICAg
MiwgICAgIDMsCisgICAgICAgMywgICAgIDIsICAgICA1LCAgICAgMywgICAgIDIsICAgICAzLCAg
ICAgMiwgICAgIDAsICAgICAxLCAgICAgMSwKKyAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAz
LCAgICAgNSwgICAgIDYsICAgICA1LCAgICAgMSwgICAgIDIsICAgICA0LAorICAgICAgIDUsICAg
ICA0LCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAg
IDEsCisgICAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgNCwg
ICAgIDEsICAgICAxLCAgICAgMSwKICAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAotICAgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDYsCi0g
ICAgICAgMCwgICAgIDUsICAgICAxLCAgICAgMiwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEs
ICAgICA0LCAgICAgMSwKLSAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAwLAotICAgICAgIDAsICAgICA1LCAgICAgMSwg
ICAgIDEsICAgICAwLCAgICAgMiwgICAgIDAsICAgICAyLCAgICAgMiwgICAgIDMsCi0gICAgICAg
MSwgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDUsICAgICAzLCAgICAgMSwgICAgIDEsICAgICA0
LCAgICAgMCwKLSAgICAgICA2LCAgICAgMCwgICAgIDgsICAgICAwLCAgICAgNywgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDAsICAgICAyLAotICAgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAzLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsCi0gICAgICAgMCwgICAg
IDMKKyAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAwLAorICAgICAgIDYsICAgICAwLCAgICAgNSwgICAgIDEsICAgICAy
LCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDQsCisgICAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwKKyAg
ICAgICAwLCAgICAgMCwgICAgIDUsICAgICAxLCAgICAgMSwgICAgIDAsICAgICAyLCAgICAgMCwg
ICAgIDIsICAgICAyLAorICAgICAgIDMsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAg
NSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDQsCisgICAgICAgMCwgICAgIDYsICAgICAwLCAg
ICAgOCwgICAgIDAsICAgICA3LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwKKyAgICAgICAy
LCAgICAgMywgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDIs
ICAgICAxLAorICAgICAgIDEsICAgICAwLCAgICAgMwogfTsKIAogLyogWVlERUZBQ1RbU1RBVEUt
TkFNRV0gLS0gRGVmYXVsdCBydWxlIHRvIHJlZHVjZSB3aXRoIGluIHN0YXRlCkBAIC05MDMsNDAw
ICs5MjIsNDE2IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0KICAgIG1lYW5z
IHRoZSBkZWZhdWx0IGlzIGFuIGVycm9yLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDgg
eXlkZWZhY3RbXSA9CiB7Ci0gICAgICAgMCwgICAgIDAsICAgMTExLCAgIDExMiwgICAxMTMsICAg
ICAwLCAgIDEwNSwgICAxMDQsICAgMTE5LCAgIDExNywKLSAgICAgMTE4LCAgIDEyMywgICAxMjQs
ICAgMTI1LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyMCwgICAxMjEsICAgMTIyLAotICAgICAx
MjksICAgMTMwLCAgIDEzMSwgICAxMDgsICAgMTA2LCAgICAgMCwgICAxMTYsICAgMTMyLCAgIDEz
MywgICAxMzQsCi0gICAgIDEzNSwgICAxMzcsICAgMTk5LCAgIDIwMCwgICAgIDAsICAgIDc2LCAg
ICA4NiwgICAgIDAsICAgIDkxLCAgICA5NiwKLSAgICAgICAwLCAgIDEwMiwgICAgIDAsICAgMTA5
LCAgIDExNCwgICAxMzYsICAgICAwLCAgIDE5NiwgICAxOTgsICAgMTA3LAotICAgICAxMDEsICAg
ICAwLCAgICAgMCwgICAxNDAsICAgIDcxLCAgICAgMCwgICAgNzQsICAgIDg2LCAgICAgMCwgICAg
ODcsCi0gICAgICA4OCwgICAgODksICAgIDc3LCAgICAgMCwgICAgODYsICAgICAwLCAgICA3Miwg
ICAgOTcsICAgMTAzLCAgIDExMCwKLSAgICAgICAwLCAgICAgMSwgICAxOTcsICAgICAwLCAgIDEz
OCwgICAgIDAsICAgICAwLCAgIDIwMSwgICAgNzgsICAgIDgzLAotICAgICAgODUsICAgIDkwLCAg
ICAgMCwgICAgOTIsICAgIDc5LCAgICAgMCwgICAgIDAsICAgICAyLCAgICAgNSwgICAgIDQsCi0g
ICAgICAgNiwgICAgMjcsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDM0LCAgICAzMywgICAgMzIs
ICAgICAzLCAgICAgOCwKLSAgICAgIDI4LCAgICAxMCwgICAgMTUsICAgIDE2LCAgICAgMCwgICAg
IDAsICAgIDIxLCAgICAgMCwgICAgMzUsICAgICAwLAotICAgICAgMzgsICAgIDQxLCAgICA0Miwg
ICAgNDcsICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NSwgICAgNTcsCi0gICAgICA1
OSwgICAgNzAsICAgICAwLCAgICAyNSwgICAgNzMsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQy
LCAgICAgMCwKLSAgICAgICAwLCAgIDE4MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE1OSwgICAxNjgsICAgMTcyLAotICAgICAgMzUsICAgIDYxLCAgICA2OCwgICAgIDAs
ICAgMTUwLCAgICAgMCwgICAxMTQsICAgMTUzLCAgIDE3MCwgICAxNTIsCi0gICAgIDE1MSwgICAg
IDAsICAgMTU0LCAgIDE1NSwgICAxNTYsICAgMTU3LCAgICA4MCwgICAgODIsICAgIDg0LCAgICAg
MCwKLSAgICAgICAwLCAgICA5OCwgICAgIDAsICAgMTQ5LCAgIDEwMCwgICAgMjksICAgIDMwLCAg
ICAgMCwgICAgMTIsICAgIDEzLAotICAgICAgIDAsICAgICAwLCAgICAxOSwgICAgMTgsICAgICAw
LCAgICAyMCwgICAgMjIsICAgIDI0LCAgICAzMSwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgMTE1LCAgICAgMCwgICAxNDcsICAgICAwLCAgIDE0NSwg
ICAxNDEsICAgMTQzLAotICAgICAxOTIsICAgMTkxLCAgIDE2NiwgICAxODMsICAgICAwLCAgIDE5
NSwgICAxOTMsICAgICAwLCAgIDE3OSwgICAxNTgsCi0gICAgICAgMCwgICAgNjQsICAgIDY1LCAg
ICA2NiwgICAgNjcsICAgIDYzLCAgICAgMCwgICAgIDAsICAgMTczLCAgIDE2OSwKLSAgICAgMTcx
LCAgICAgMCwgICAgOTMsICAgICAwLCAgICA5NSwgICAgOTksICAgICA3LCAgICAgMCwgICAgMTQs
ICAgIDI2LAotICAgICAgMTEsICAgIDE3LCAgICAyMywgICAgMzYsICAgIDM3LCAgICA0MCwgICAg
MzksICAgIDQ1LCAgICA0NiwgICAgNDMsCi0gICAgICA0NCwgICAgNDgsICAgIDQ5LCAgICA1NCwg
ICAgNTYsICAgIDU4LCAgICAgMCwgICAxMzksICAgICAwLCAgICAgMCwKLSAgICAgMTQ0LCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTk0LCAgICAgMCwgICAxNjAsICAgIDYy
LAotICAgICAgNjksICAgICAwLCAgICA5NCwgICAgIDksICAgICAwLCAgICAgMCwgICAxNDYsICAg
ICAwLCAgIDE2NSwgICAxNjcsCi0gICAgIDE4NiwgICAxODUsICAgMTg4LCAgIDE2NiwgICAxNzcs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDgxLCAgICA2MCwKLSAgICAgMTQ4LCAgICAgMCwgICAx
ODcsICAgICAwLCAgICAgMCwgICAxNzYsICAgMTc0LCAgICAgMCwgICAgIDAsICAgMTYxLAotICAg
ICAgIDAsICAgMTg5LCAgICAgMCwgICAxNjYsICAgICAwLCAgIDE2MywgICAxODAsICAgMTYyLCAg
ICAgMCwgICAxOTAsCi0gICAgIDE4NCwgICAxNzUsICAgMTc4LCAgIDE4MgorICAgICAgIDAsICAg
ICAwLCAgIDExMiwgICAxMTMsICAgMTE0LCAgICAgMCwgICAxMDYsICAgMTA1LCAgIDEyMCwgICAx
MTgsCisgICAgIDExOSwgICAxMjQsICAgMTI1LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOSwg
ICAxMjEsICAgMTIyLCAgIDEyMywKKyAgICAgMTMwLCAgIDEzMSwgICAxMzIsICAgMTA5LCAgIDEw
NywgICAgIDAsICAgMTE3LCAgIDEzMywgICAxMzQsICAgMTM1LAorICAgICAxMzYsICAgMTM4LCAg
IDIwMCwgICAyMDEsICAgICAwLCAgICA3NywgICAgODcsICAgICAwLCAgICA5MiwgICAgOTcsCisg
ICAgICAgMCwgICAxMDMsICAgICAwLCAgIDExMCwgICAxMTUsICAgMTM3LCAgICAgMCwgICAxOTcs
ICAgMTk5LCAgIDEwOCwKKyAgICAgMTAyLCAgICAgMCwgICAgIDIsICAgICAzLCAgIDE0MSwgICAg
IDAsICAgIDcyLCAgICAgMCwgICAgNzUsICAgIDg3LAorICAgICAgIDAsICAgIDg4LCAgICA4OSwg
ICAgOTAsICAgIDc4LCAgICAgMCwgICAgODcsICAgICAwLCAgICA3MywgICAgIDIsCisgICAgICA5
OCwgICAxMDQsICAgMTExLCAgICAgMCwgICAgIDEsICAgMTk4LCAgICAgMCwgICAgIDAsICAgMTM5
LCAgICAgMCwKKyAgICAgMjAyLCAgICA3OSwgICAgODQsICAgIDg2LCAgICA5MSwgICAgIDAsICAg
IDkzLCAgICA4MCwgICAgIDAsICAgICAwLAorICAgICAgIDQsICAgICA3LCAgICAgNiwgICAgIDgs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDM1LCAgICAzNCwgICAgMzMsCisgICAgICAgNSwgICAg
MTAsICAgIDI5LCAgICAxMiwgICAgMTcsICAgIDE4LCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAg
MCwKKyAgICAgIDM2LCAgICAgMCwgICAgMzksICAgIDQyLCAgICA0MywgICAgNDgsICAgIDUxLCAg
ICA1MiwgICAgNTMsICAgIDU0LAorICAgICAgNTYsICAgIDU4LCAgICA2MCwgICAgNzEsICAgICAw
LCAgICAyNywgICAgNzQsICAgICAwLCAgICAgMCwgICAxNDMsCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE4MiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE2MCwKKyAg
ICAgMTY5LCAgIDE3MywgICAgMzYsICAgIDYyLCAgICA2OSwgICAgIDAsICAgMTUxLCAgICAgMCwg
ICAxMTUsICAgMTU0LAorICAgICAxNzEsICAgMTUzLCAgIDE1MiwgICAgIDAsICAgMTU1LCAgIDE1
NiwgICAxNTcsICAgMTU4LCAgICA4MSwgICAgODMsCisgICAgICA4NSwgICAgIDAsICAgICAwLCAg
ICA5OSwgICAgIDAsICAgMTUwLCAgIDEwMSwgICAgMzAsICAgIDMxLCAgICAgMCwKKyAgICAgIDE0
LCAgICAxNSwgICAgIDAsICAgICAwLCAgICAyMSwgICAgMjAsICAgICAwLCAgICAyMiwgICAgMjQs
ICAgIDI2LAorICAgICAgMzIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgMTE2LCAgIDE0OCwgICAgIDAsICAgMTQ2LCAgIDE0MiwKKyAgICAgMTQ0LCAgICAg
MCwgICAxOTMsICAgMTkyLCAgIDE2NywgICAxODQsICAgICAwLCAgIDE5NiwgICAxOTQsICAgICAw
LAorICAgICAxODAsICAgMTU5LCAgICAgMCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAg
IDY0LCAgICAgMCwgICAgIDAsCisgICAgIDE3NCwgICAxNzAsICAgMTcyLCAgICAgMCwgICAgOTQs
ICAgICAwLCAgICA5NiwgICAxMDAsICAgICA5LCAgICAgMCwKKyAgICAgIDE2LCAgICAgMiwgICAg
IDMsICAgIDEzLCAgICAxOSwgICAgMjUsICAgIDM3LCAgICAzOCwgICAgNDEsICAgIDQwLAorICAg
ICAgNDYsICAgIDQ3LCAgICA0NCwgICAgNDUsICAgIDQ5LCAgICA1MCwgICAgNTUsICAgIDU3LCAg
ICA1OSwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgMTQ1LCAgIDE0MCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE5NSwKKyAgICAgICAwLCAgIDE2MSwgICAgNjMsICAg
IDcwLCAgICAgMCwgICAgOTUsICAgIDExLCAgICAgMCwgICAgIDAsICAgMTQ3LAorICAgICAgIDAs
ICAgMTY2LCAgIDE2OCwgICAxODcsICAgMTg2LCAgIDE4OSwgICAxNjcsICAgMTc4LCAgICAgMCwg
ICAgIDAsCisgICAgICAgMCwgICAgODIsICAgIDYxLCAgIDE0OSwgICAgIDAsICAgMTg4LCAgICAg
MCwgICAgIDAsICAgMTc3LCAgIDE3NSwKKyAgICAgICAwLCAgICAgMCwgICAxNjIsICAgICAwLCAg
IDE5MCwgICAgIDAsICAgMTY3LCAgICAgMCwgICAxNjQsICAgMTgxLAorICAgICAxNjMsICAgICAw
LCAgIDE5MSwgICAxODUsICAgMTc2LCAgIDE3OSwgICAxODMKIH07CiAKIC8qIFlZREVGR09UT1tO
VEVSTS1OVU1dLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlkZWZnb3RvW10gPQog
ewotICAgICAgLTEsICAgIDk4LCAgICA5OSwgICAxMDAsICAgMjI3LCAgIDEwMSwgICAxMDIsICAg
MTAzLCAgIDEwNCwgICAxMDUsCi0gICAgIDEwNiwgICAxMDcsICAgMTQwLCAgIDEwOSwgICAxMTAs
ICAgMTExLCAgIDExMiwgICAxMTMsICAgMTE0LCAgIDExNSwKLSAgICAgMTE2LCAgIDExNywgICAx
MTgsICAgMTE5LCAgIDEyMCwgICAxNDEsICAgMTQyLCAgIDIxNiwgICAxNDMsICAgMTIyLAotICAg
ICAxNDQsICAgMTQ1LCAgICAzNCwgICAgMzUsICAgIDM2LCAgICA3OSwgICAgNjIsICAgIDYzLCAg
ICA4MCwgICAgMzcsCi0gICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQz
LCAgIDEyMywgICAgNDUsICAgMTI1LCAgICA3NSwKLSAgICAgMTI3LCAgIDEyOCwgICAxOTYsICAg
MTk3LCAgIDE2NCwgICAxNDcsICAgMTQ4LCAgIDE0OSwgICAxNTAsICAgMjEwLAotICAgICAyNzcs
ICAgMjk2LCAgIDI1MSwgICAyNTIsICAgMjUzLCAgIDI5NywgICAxNTEsICAgMTUyLCAgIDE1Mywg
ICAyODYsCi0gICAgIDI3NiwgICAxNTQsICAgMjU3LCAgIDIwMiwgICAyNTQsICAgMjcyLCAgIDI4
MywgICAyODQsICAgMTU1LCAgICA0NiwKLSAgICAgIDQ3LCAgICA0OCwgICAgNTUKKyAgICAgIC0x
LCAgIDE5NiwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAyMjksICAgMTAzLCAgIDEwNCwgICAxMDUs
ICAgMTA2LAorICAgICAxMDcsICAgMTA4LCAgIDEwOSwgICAxNDIsICAgMTExLCAgIDExMiwgICAx
MTMsICAgMTE0LCAgIDExNSwgICAxMTYsCisgICAgIDExNywgICAxMTgsICAgMTE5LCAgIDEyMCwg
ICAxMjEsICAgMTIyLCAgIDE0MywgICAxNDQsICAgMjE4LCAgIDE0NSwKKyAgICAgMTI0LCAgIDE0
NiwgICAxNDcsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDgyLCAgICA2NCwgICAgNjUsICAgIDgz
LAorICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAg
MTI1LCAgICA0NSwgICAxMzAsCisgICAgICA3NywgICAxMjgsICAgMTI5LCAgIDE5NywgICAxOTgs
ICAgMTY2LCAgIDE0OSwgICAxNTAsICAgMTUxLCAgIDE1MiwKKyAgICAgMjEyLCAgIDI4MCwgICAy
OTksICAgMjU0LCAgIDI1NSwgICAyNTYsICAgMzAwLCAgIDE1MywgICAxNTQsICAgMTU1LAorICAg
ICAyODksICAgMjc5LCAgIDE1NiwgICAyNjAsICAgMjA0LCAgIDI1NywgICAyNzUsICAgMjg2LCAg
IDI4NywgICAxNTcsCisgICAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA1NwogfTsKIAogLyogWVlQ
QUNUW1NUQVRFLU5VTV0gLS0gSW5kZXggaW4gWVlUQUJMRSBvZiB0aGUgcG9ydGlvbiBkZXNjcmli
aW5nCiAgICBTVEFURS1OVU0uICAqLwotI2RlZmluZSBZWVBBQ1RfTklORiAtMjY2CisjZGVmaW5l
IFlZUEFDVF9OSU5GIC0yNjEKIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlwYWN0W10gPQog
ewotICAgIDEyNTMsICAgLTIwLCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDE0OCwgIC0yNjYsICAt
MjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYs
ICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgIC0y
NjYsICAtMjY2LCAgLTI2NiwgICAtMzksICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAg
IC0yNjYsICAtMjY2LCAgLTI2NiwgICAtMTgsICAgIC0yLCAgICAgNiwgICAgMjEsICAgLTYxLCAg
LTI2NiwgICAgNTEsCi0gICAgMTI5NiwgIC0yNjYsICAxMzcwLCAgLTI2NiwgICAgMjUsICAtMjY2
LCAgMTIwOSwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgMTM3MCwgICAgNDIsICAt
MjY2LCAgLTI2NiwgICAgNTAsICAtMjY2LCAgICA3MSwgICAgOTUsICAtMjY2LAotICAgIC0yNjYs
ICAtMjY2LCAgLTI2NiwgIDEyOTYsICAgMTIzLCAgIDEwNSwgIC0yNjYsICAgICA5LCAgLTI2Niwg
IC0yNjYsCi0gICAgIDk3NCwgIC0yNjYsICAtMjY2LCAgICA4MSwgIC0yNjYsICAxMjk2LCAgIDI5
MCwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIDEyNSwgIDEyOTYsICAgLTEzLCAg
LTI2NiwgICA3NzYsICAgOTc0LCAgICA5OSwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2
LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYs
Ci0gICAgICAzNSwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxMDAsICAgIC02LCAgMTA0MCwgICAx
MDQsICAtMjY2LCAgIDk3NCwKLSAgICAgIDM2LCAgIC02NCwgIC0yNjYsICAgLTIxLCAgIDEwMiwg
IC0yNjYsICAtMjY2LCAgLTI2NiwgICAxMTMsICAgMTE3LAotICAgICAtNTEsICAtMjY2LCAgIDEw
OCwgIC0yNjYsICAtMjY2LCAgMTI5NiwgICAxMjksICAxMTA5LCAgLTI2NiwgICAgOTcsCi0gICAg
IDEwMywgIC0yNjYsICAgMTEyLCAgIDExNCwgICAxMDYsICAgODQyLCAgIDExNSwgICAxMTYsICAt
MjY2LCAgLTI2NiwKLSAgICAgIDM5LCAgLTI2NiwgIC0yNjYsICAgLTQzLCAgLTI2NiwgICAtMTgs
ICAgIDQ3LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgMzc0LCAgLTI2NiwgIC0y
NjYsICAtMjY2LCAgLTI2NiwgICAxMTgsICAtMjY2LCAgLTI2NiwgICA5MDgsCi0gICAgIDk3NCwg
IC0yNjYsICAgMTIwLCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAgMTksICAtMjY2LCAg
LTI2NiwKLSAgICAgOTc0LCAgMTMzMywgIC0yNjYsICAtMjY2LCAgIDk3NCwgICAxMTksICAtMjY2
LCAgLTI2NiwgIC0yNjYsICAgOTc0LAotICAgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAg
OTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsCi0gICAgIDk3NCwgICA5NzQs
ICAgOTc0LCAgLTI2NiwgIDExNTIsICAgMTIyLCAgIC0yOSwgIC0yNjYsICAtMjY2LCAgLTI2NiwK
LSAgICAtMjY2LCAgLTI2NiwgICAxMjEsICAtMjY2LCAgIDk3NCwgIC0yNjYsICAtMjY2LCAgICAg
NSwgIC0yNjYsICAtMjY2LAotICAgICA0NTgsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
LTI2NiwgICA5NzQsICAgOTc0LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICA5NzQsICAtMjY2
LCAgIDEzNywgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxMzgsICAgMTExLCAgLTI2NiwKLSAgICAg
MTQyLCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAgMzYsICAgIDM2LCAgLTI2NiwgIC0y
NjYsICAtMjY2LAotICAgIC0yNjYsICAgLTIxLCAgIC0yMSwgIC0yNjYsICAgMTEzLCAgIDExNywg
ICAgODIsICAtMjY2LCAgIDk3NCwgICAxMjksCi0gICAgLTI2NiwgICAxNzUsICAgIDUwLCAgIDYy
NiwgICA3MTAsICAgIDM4LCAgLTI2NiwgICAxOTcsICAgNDU4LCAgLTI2NiwKLSAgICAtMjY2LCAg
IDE0MSwgIC0yNjYsICAtMjY2LCAgIDk3NCwgICAxNTUsICAtMjY2LCAgIDE0NSwgIC0yNjYsICAt
MjY2LAotICAgIC0yNjYsICAtMjY2LCAgIDE5NywgICAxMjEsICAgMTExLCAgIDE4NiwgICAxNTks
ICAgMTYwLCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICA5NzQsICAtMjY2LCAgIDE2NiwgICAx
NzYsICAgMjM2LCAgLTI2NiwgICAxNzQsICAgNTQyLCAgLTI2NiwKLSAgICAgIDQzLCAgIDk3NCwg
ICA1NDIsICAgMTIxLCAgIDk3NCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxNzcsICAgMTExLAot
ICAgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYKKyAgICAxMzI3LCAgIC0yMCwgIC0yNjEsICAt
MjYxLCAgLTI2MSwgICAxMTMsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEs
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwg
IC0yNjEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgLTE5LCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgLTYxLCAg
IC00MCwgICAtMjgsICAgIDc1LCAgICAtNywgIC0yNjEsICAgIDI0LAorICAgIDEzNzAsICAtMjYx
LCAgMTQ0NCwgIC0yNjEsICAgLTExLCAgLTI2MSwgIDEyODMsICAtMjYxLCAgLTI2MSwgIC0yNjEs
CisgICAgLTI2MSwgIDE0NDQsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgICA2LCAgLTI2MSwgICAg
NTQsICAtMjYxLCAgICA4OCwKKyAgICAgIDYyLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwg
IDEzNzAsICAgIDU5LCAgICA5MSwgIC0yNjEsICAgIDM2LAorICAgICAtNTAsICAtMjYxLCAgLTI2
MSwgIDEwNTEsICAtMjYxLCAgLTI2MSwgICAgNjMsICAxMzcwLCAgLTI2MSwgICAyOTMsCisgICAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAgOTEsICAxMzcwLCAgIC0xMiwgIC0yNjEsICAg
ODU2LCAgMTA1MSwKKyAgICAgIDc3LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgMTA1MSwgIDEwNTEs
ICAxMDUxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgIC0xNCwgIC0y
NjEsICAtMjYxLCAgLTI2MSwgICAgODQsICAgLTQ0LCAgMTExNiwgICAgOTUsCisgICAgLTI2MSwg
IDEwNTEsICAgIDUzLCAgICAgMywgIC0yNjEsICAgLTM2LCAgICA4OSwgIC0yNjEsICAtMjYxLCAg
LTI2MSwKKyAgICAgMTA0LCAgIDEwNywgICAtNDUsICAtMjYxLCAgICA5NiwgIC0yNjEsICAtMjYx
LCAgICA5MSwgIDExODQsICAtMjYxLAorICAgIDEzNzAsICAgIDkyLCAgICA5MywgIC0yNjEsICAg
IDk4LCAgIDEwMSwgICAgOTQsICAgOTIxLCAgIDEwNSwgICAxMDIsCisgICAgLTI2MSwgIC0yNjEs
ICAgIDcyLCAgLTI2MSwgIC0yNjEsICAgICA5LCAgLTI2MSwgICAtNjEsICAgIDQyLCAgLTI2MSwK
KyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgMzc2LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2
MSwgICAxMDYsICAtMjYxLAorICAgIC0yNjEsICAgOTg2LCAgMTA1MSwgIC0yNjEsICAgMTAzLCAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAtNDEsCisgICAgLTI2MSwgIC0yNjEsICAxMDUx
LCAgMTQwNywgIC0yNjEsICAtMjYxLCAgMTA1MSwgICAxMTAsICAtMjYxLCAgLTI2MSwKKyAgICAt
MjYxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEw
NTEsICAxMDUxLAorICAgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgLTI2MSwg
ICAxMDksICAgIDIzLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgIDEyMjcsICAtMjYxLCAgLTI2
MSwgICAxMTEsICAtMjYxLCAgMTA1MSwgIC0yNjEsICAtMjYxLCAgICAyNSwKKyAgICAtMjYxLCAg
LTI2MSwgICA0NTksICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAx
MDUxLAorICAgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAtMjYxLCAgIDExNCwgIC0yNjEs
ICAtMjYxLCAgLTI2MSwgICAxMTUsCisgICAgIDExMiwgICAgNzcsICAgMTE2LCAgLTI2MSwgIC0y
NjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgIDUzLCAgICA1MywKKyAgICAtMjYxLCAgLTI2MSwg
IC0yNjEsICAtMjYxLCAgIC0zNiwgICAtMzYsICAtMjYxLCAgIDEwNCwgICAxMDcsICAgIDc2LAor
ICAgIDEwNTEsICAgIDkxLCAgLTI2MSwgIC0yNjEsICAgMTQ1LCAgICA1NCwgICA2MjUsICAgNzA4
LCAgICAtNiwgIC0yNjEsCisgICAgIDc5MSwgICA0NTksICAtMjYxLCAgLTI2MSwgICAxMTcsICAt
MjYxLCAgLTI2MSwgIDEwNTEsICAgMTIwLCAgLTI2MSwKKyAgICAgMTI0LCAgLTI2MSwgIC0yNjEs
ICAtMjYxLCAgLTI2MSwgICA3OTEsICAgMTExLCAgIDExMiwgICAgOTEsICAgMTI1LAorICAgICAx
MjIsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgLTI2MSwgICAxMTgsICAgMTI4LCAgIDE4
MCwgIC0yNjEsCisgICAgIDEyNiwgICA1NDIsICAtMjYxLCAgICAtNSwgIDEwNTEsICAgNTQyLCAg
IDExMSwgIDEwNTEsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgIDEyMywgICAxMTIsICAtMjYx
LCAgLTI2MSwgIC0yNjEsICAtMjYxCiB9OwogCiAvKiBZWVBHT1RPW05URVJNLU5VTV0uICAqLwog
c3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXBnb3RvW10gPQogewotICAgIC0yNjYsICAtMjY2
LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgIDg1LCAgLTI2NiwgIC0yNjYs
Ci0gICAgLTI2NiwgIC0yNjYsICAgLTQ0LCAgLTI2NiwgICAtMTUsICAtMjY2LCAgIC01NSwgICAt
MTksICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgICA3MiwgICAgNzAsICAgIDczLCAgLTI2Niwg
ICAtNjYsICAgLTgzLCAgLTI2NiwgICAtOTIsICAgLTczLAotICAgICAgMTMsICAgIDE0LCAgLTI2
NiwgIC0yNjYsICAtMjY2LCAgIDE4MCwgICAyMDYsICAgMjAxLCAgIDE4NCwgIC0yNjYsCi0gICAg
LTI2NiwgIC0yNDEsICAgLTI1LCAgIC0zMCwgICAyNjIsICAgIC00LCAgICAgMCwgIC0yNjYsICAt
MjY2LCAgLTI2NiwKLSAgICAgMTQzLCAgLTEyMiwgIC0yNjYsICAgIDIyLCAgLTE0NSwgICAgMTYs
ICAtMTQ0LCAgLTIyNiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgLTE3LCAgLTI2NSwgIC0y
NjYsICAtMjY2LCAgIC01NCwgICAgNjMsICAgIDIwLCAgLTI2NiwgIC0yNjYsCi0gICAgICAgNCwg
IC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
LTI2NiwKLSAgICAgMjMxLCAgLTI2NiwgIC0yNjYKKyAgICAtMjYxLCAgIC0yNCwgIC0yNjEsICAt
MjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAgMzQsICAtMjYxLAorICAgIC0yNjEs
ICAtMjYxLCAgLTI2MSwgICAgMzIsICAtMjYxLCAgIC0zMywgIC0yNjEsICAgLTI3LCAgIC0yNiwg
IC0yNjEsCisgICAgLTI2MSwgIC0yNjEsICAgIDE0LCAgICAxNiwgICAgMTgsICAtMjYxLCAgIC02
NiwgICAtODcsICAtMjYxLCAgIC05MiwKKyAgICAgLTg1LCAgICAxMSwgICAgMTIsICAtMjYxLCAg
LTI2MSwgIC0yNjEsICAgMTQxLCAgIDE1MCwgICAxNjEsICAgMTQzLAorICAgIC0yNjEsICAtMjYx
LCAgLTIzMSwgICAgIDUsICAgLTMwLCAgIDIyNCwgICAtMTgsICAgICAwLCAgLTI2MSwgIC0yNjEs
CisgICAgLTI2MSwgICAxMDAsICAtMTE5LCAgLTI2MSwgICAtMTcsICAtMTU2LCAgIC0yNSwgIC0x
NDUsICAtMjQzLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgICAtNjQsICAtMjYwLCAgLTI2MSwg
IC0yNjEsICAgLTUyLCAgICAyMSwgICAtMjIsICAtMjYxLAorICAgIC0yNjEsICAgLTM5LCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAg
LTI2MSwgICAxOTEsICAtMjYxLCAgLTI2MQogfTsKIAogLyogWVlUQUJMRVtZWVBBQ1RbU1RBVEUt
TlVNXV0uICBXaGF0IHRvIGRvIGluIHN0YXRlIFNUQVRFLU5VTS4gIElmCiAgICBwb3NpdGl2ZSwg
c2hpZnQgdGhhdCB0b2tlbi4gIElmIG5lZ2F0aXZlLCByZWR1Y2UgdGhlIHJ1bGUgd2hpY2gKICAg
IG51bWJlciBpcyB0aGUgb3Bwb3NpdGUuICBJZiB6ZXJvLCBkbyB3aGF0IFlZREVGQUNUIHNheXMu
CiAgICBJZiBZWVRBQkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCi0jZGVmaW5lIFlZVEFCTEVf
TklORiAtMTY1CisjZGVmaW5lIFlZVEFCTEVfTklORiAtMTY2CiBzdGF0aWMgY29uc3QgeXl0eXBl
X2ludDE2IHl5dGFibGVbXSA9CiB7Ci0gICAgICA0NCwgICAgNzcsICAgMTY3LCAgIDE2MywgICAx
MjEsICAgMTk5LCAgICA1MiwgICAyMjAsICAgMjg1LCAgIDE5MSwKLSAgICAgIDY4LCAgICA2NCwg
ICAxNjIsICAgIDMyLCAgICAzMywgICAyMjQsICAgMjc1LCAgICA0OSwgICAgNjUsICAgMTIxLAot
ICAgICAxODEsICAgIDY2LCAgIDE4MiwgICAxNzYsICAgIDU4LCAgICA1MCwgICAxMDgsICAgMjY5
LCAgIDMwMSwgICAgIDYsCi0gICAgICAgNywgICAyNzUsICAgIDY0LCAgICA4MSwgICAxODMsICAg
MTg0LCAgIDIxNywgICAgNTMsICAgIDY5LCAgIDIxOCwKLSAgICAgIDQ0LCAgIDEwOCwgICAgNDQs
ICAgMjA3LCAgIDE5MiwgICAxMjYsICAgIDQ0LCAgICA3MywgICAxNjUsICAgMTY2LAotICAgICAy
NDksICAgIDQ0LCAgICA4MSwgICAyNTAsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDIzLCAgICAy
NCwgICAgMzIsCi0gICAgICAzMywgICAxNTksICAgMjk1LCAgICA0NCwgICAgNTQsICAgMTc4LCAg
IDI5NSwgICAxNzMsICAgMTYwLCAgIDE4NSwKLSAgICAgMTg2LCAgICA1NiwgICAxOTksICAgMTc0
LCAgICA1OCwgICAgNDQsICAgMTQ2LCAgIDE2MywgICAyMjgsICAgICA2LAotICAgICAgIDcsICAg
IDg0LCAgICA0NCwgICAgODUsICAgMjE3LCAgICA1NywgICAyMjMsICAgMjU2LCAgIDE2OCwgICAx
NjksCi0gICAgICA4NiwgICAyMzIsICAgMjI2LCAgIDEyMSwgICAtNzUsICAgMTI2LCAgICA2Nywg
ICAxMjYsICAgMjE3LCAgICA3MCwKLSAgICAgMjQ2LCAgIDIxMSwgICAyMTIsICAgMjEzLCAgICA1
OSwgICAgNjAsICAgIDYxLCAgICAyMywgICAgMjQsICAgMTcwLAotICAgICAyMTQsICAgMjczLCAg
IDI1NSwgICAxNzEsICAgMjIwLCAgIDEwOCwgICAyOTgsICAgMjE3LCAgICA3NCwgICAtMjUsCi0g
ICAgIDIxNSwgICAgNzAsICAgMjE3LCAgIDE3OSwgICAxODAsICAgIDQ0LCAgICA3NiwgICAgNDQs
ICAgMjM3LCAgIDIzOCwKLSAgICAgMjM5LCAgIDI0MCwgICAgNDksICAgMjU5LCAgIDI2MCwgICAy
MzMsICAgMjM0LCAgIDEwOCwgICAxMDgsICAgMTA4LAotICAgICAxMDgsICAgMTA4LCAgIDEwOCwg
ICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDI2MSwgICAzMDIsCi0gICAgICA4
MywgICAxNDYsICAgICAyLCAgICAgMywgICAgIDQsICAgMTIxLCAgICA1OSwgICAgNjAsICAgIDYx
LCAgIDE4NywKLSAgICAgMTg4LCAgIDIxNywgICAyNjQsICAgMTI0LCAgIDEyNiwgICAyNzQsICAg
MjM1LCAgIDIzNiwgICAyNDEsICAgMjQyLAotICAgICAxNTYsICAgLTI2LCAgIDE4OSwgICAxNzIs
ICAgMTk1LCAgIDI2NSwgICAxNzcsICAgMTA4LCAgIDE5MCwgICAyMDAsCi0gICAgIDI3NCwgICAy
NzksICAgMTIxLCAgIDE5MywgICAyMDMsICAgMjAxLCAgIDIwNCwgICAyMDgsICAgMjA1LCAgIDI5
MCwKLSAgICAgMjE3LCAgLTExNiwgICAyMjEsICAgMjA5LCAgICA0NCwgICAyMjUsICAgMjQ4LCAg
LTE2NCwgICAyNjgsICAgMjk5LAotICAgICAgNTgsICAgICAyLCAgICAgMywgICAgIDQsICAgMTA4
LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCi0gICAgIDE0NiwgICAxNjMsICAg
MjYyLCAgIDI2MywgICAtMjcsICAgMjY3LCAgIDI3OCwgICAyODEsICAgIDExLCAgICAxMiwKLSAg
ICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLAotICAgICAyODAsICAgMjg3LCAgIDI4OCwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgMjg5LCAgICAyNywgICAgMjgsCi0gICAgICAyOSwgICAgMzAsICAgIDg3LCAg
ICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgMjkxLCAgIDI5MiwKLSAgICAgIDky
LCAgICA5MywgICAyOTMsICAgMTQ2LCAgIDE0NiwgICAyOTQsICAgMjMxLCAgIDE0NiwgICAxNDYs
ICAgMzAzLAotICAgICAyNDQsICAgMjQzLCAgIDE1NywgICAgNzgsICAgMjQ1LCAgICA4MiwgICAx
NTgsICAgIDUxLCAgIDE5NCwgICAgOTQsCi0gICAgIDI3MCwgICAyNjYsICAgMTQ2LCAgIDI1OCwg
ICAyNzEsICAgMzAwLCAgIDI4MiwgICAgNzIsICAgICAwLCAgICAgMCwKLSAgICAgIDk1LCAgICA5
NiwgICAgIDAsICAgIDk3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDYsICAgICAw
LAotICAgICAgIDAsICAgICAwLCAgIDE0NiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAg
ICA1LCAgICAgNiwgICAgIDcsCi0gICAgICAgOCwgICAgIDksICAgIDEwLCAgIDEyOSwgICAxMzAs
ICAgMTMxLCAgICAgMCwgICAxMzIsICAgMTMzLCAgIDEzNCwKLSAgICAgMTM1LCAgICAxMSwgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LAotICAg
ICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAg
ICAyNSwgICAgMjYsCi0gICAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3
LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwKLSAgICAgIDkxLCAgICAgMCwgICAgIDAsICAg
IDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgNDQs
ICAgIDU1LCAgIDE2NSwgICAxNjQsICAgMTY5LCAgICA4MCwgICAyMjYsICAgMTIzLCAgIDIyMiwg
ICAyMDAsCisgICAgICA3MSwgICAgMzIsICAgIDMzLCAgIDI3MiwgICAxOTMsICAgIDcwLCAgIDI4
OCwgICAgNDksICAgMTg1LCAgIDE4NiwKKyAgICAgIDU2LCAgIDE3OCwgICAxMjMsICAgIDg4LCAg
ICA3MiwgICAgNTAsICAgIDUyLCAgICA1MywgICAxNzUsICAgMjc4LAorICAgICAgODksICAgMjI4
LCAgICA1OCwgICAgNzYsICAgMTc2LCAgICA4NCwgICAzMDQsICAgMjE5LCAgIDE3MCwgICAxNzEs
CisgICAgICA0NCwgICAgNjYsICAgIDQ0LCAgICA4NiwgICAyNzgsICAgMjA5LCAgICA0NCwgICAx
MjcsICAgMjk4LCAgIDE5NCwKKyAgICAgIDU5LCAgICA0NCwgICAyOTgsICAgMTg3LCAgIDE4OCwg
ICAgODQsICAgIDU0LCAgICAzMiwgICAgMzMsICAgMTcyLAorICAgICAxNTgsICAgMTYxLCAgICA3
MywgICAxNzMsICAgIDY2LCAgICA0NCwgICAyNzYsICAgMzAxLCAgIDE2MiwgICAgNjksCisgICAg
ICA1MywgICAgNjcsICAgMjE5LCAgIDIxOSwgICAgNjgsICAgMTY1LCAgIDIyNSwgICAgNDQsICAg
IDYwLCAgIDE0OCwKKyAgICAgMjMwLCAgICA3OCwgICAyMDAsICAgICA2LCAgICAgNywgICAgNDQs
ICAgMTgzLCAgIDIxOSwgICAxODQsICAgMjM1LAorICAgICAyMjAsICAgIDYwLCAgICA2MSwgICAg
NjIsICAgIDYzLCAgIDEyMywgICAgIDYsICAgICA3LCAgIDEyNywgICAgNDksCisgICAgIDEyNywg
ICAyNTEsICAgMjQ5LCAgIDIxOSwgICAyNTIsICAgMTEwLCAgIDI1OSwgICAgODcsICAgIDYxLCAg
ICA2MiwKKyAgICAgIDYzLCAgICAyMywgICAgMjQsICAgLTI3LCAgIDI1OCwgICAgNzMsICAgMjIy
LCAgICAgMiwgICAgIDMsICAgICA0LAorICAgICAxMTAsICAgIDYxLCAgICA2MiwgICAgNjMsICAg
IDIzLCAgICAyNCwgICAxNjcsICAgMTY4LCAgICA0NCwgICAgNzksCisgICAgICA0NCwgICAyNjIs
ICAgMjYzLCAgIDIxMywgICAyMTQsICAgMjE1LCAgICA1MiwgICAgNTMsICAgMjY0LCAgIDE4MSwK
KyAgICAgMTgyLCAgIDMwNSwgICAyMTYsICAgMTgwLCAgIDEyNiwgICAxODksICAgMTkwLCAgIC03
NiwgICAtMjgsICAgMjMzLAorICAgICAyMzgsICAgMjM5LCAgIDIxNywgICAxNDgsICAgMjE5LCAg
IDI2NywgICAxNzQsICAgMTIzLCAgIDI0MCwgICAyNDEsCisgICAgIDI0MiwgICAyNDMsICAgMTkx
LCAgIDI0NCwgICAyNDUsICAgMjY4LCAgIDE3OSwgICAxOTIsICAgMjc3LCAgIDIwNSwKKyAgICAg
MTk1LCAgIDEyNywgICAyMDYsICAgMjAyLCAgIDIwMywgICAyMDcsICAgMjEwLCAgIDIyNywgICAy
MTEsICAgMjIzLAorICAgICAyODIsICAtMTE3LCAgIDI1MCwgICAyNzcsICAgMTIzLCAgIDI3MCwg
IC0xNjUsICAtMTM4LCAgIDI2NSwgICAyNjYsCisgICAgIDIxOSwgICAyODEsICAgMjkzLCAgIDEx
MCwgICAyODMsICAgMjg0LCAgIDI5NiwgICAyOTEsICAgMjkyLCAgIDI5NCwKKyAgICAgMjk1LCAg
ICA0NCwgICAzMDIsICAgMjcxLCAgIDMwNiwgICAyNDYsICAgMjk3LCAgIDIzNCwgICAyNDcsICAg
IDgxLAorICAgICAxNjUsICAgMjQ4LCAgIDE0OCwgICAyMzYsICAgMjM3LCAgIDExMCwgICAxMTAs
ICAgMTEwLCAgIDExMCwgICAxMTAsCisgICAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMCwgICAx
MTAsICAgMTEwLCAgIDE1OSwgICAgODUsICAgMTYwLCAgICA1MSwKKyAgICAgMjAxLCAgIDMwMywg
ICAyNzMsICAgMjYxLCAgIDI2OSwgICAyNzQsICAgMjg1LCAgICA3NSwgICAgIDAsICAgICAwLAog
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDEzNywgICAxMzgsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAxMzks
ICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAgMSwgICAgIDIsICAgICAzLAotICAgICAg
IDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTI5LCAgIDEz
MCwgICAxMzEsCi0gICAgICAgMCwgICAxMzIsICAgMTMzLCAgIDEzNCwgICAxMzUsICAgIDExLCAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKLSAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgMjMsICAg
IDI0LCAgICAyNSwgICAgMjYsICAgMTM2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
ODcsCi0gICAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwg
ICAgOTIsICAgIDkzLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI5
MCwgICAxMTAsICAgMTQ4LCAgIDE0OCwgICAgIDAsICAgICAwLAorICAgICAxNDgsICAgMTQ4LCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisg
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ4LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAxMTAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgMTQ4LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgIDE0OCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsCisgICAgICAg
NSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEzMSwgICAxMzIsICAgMTMz
LCAgICAgMCwKKyAgICAgMTM0LCAgIDEzNSwgICAxMzYsICAgMTM3LCAgICAxMSwgICAgMTIsICAg
IDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAorICAgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAs
ICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsCisgICAgICAyNCwgICAg
MjUsICAgIDI2LCAgIDEzOCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAz
MSwKKyAgICAgIDkxLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LCAg
ICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgMTM3LCAgIDIxOSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICA5NSwg
ICAgOTYsICAgICAwLAotICAgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAg
NSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksCi0gICAgICAxMCwgICAxMjksICAgMTMwLCAg
IDEzMSwgICAgIDAsICAgMTMyLCAgIDEzMywgICAxMzQsICAgMTM1LCAgICAxMSwKLSAgICAgIDEy
LCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAs
ICAgIDIxLAotICAgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI2LCAgIDEzNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjksICAgIDMwLCAgICA4Nywg
ICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwKLSAgICAgICAwLCAgICA5
MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDEzOSwgICAxNDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEs
ICAgIDk3LCAgICA5OCwgICAgIDAsICAgIDk5LCAgICAgMSwKKyAgICAgICAyLCAgICAgMywgICAg
IDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMxLAorICAg
ICAxMzIsICAgMTMzLCAgICAgMCwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAg
ICAxMiwgICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMjMsICAg
IDI0LCAgICAyNSwgICAgMjYsICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LAorICAgICAgMzAs
ICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwg
ICAgOTUsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDEzNywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAxMzksICAgIDk1
LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUs
Ci0gICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTI5LCAgIDEzMCwgICAx
MzEsICAgICAwLCAgIDEzMiwKLSAgICAgMTMzLCAgIDEzNCwgICAxMzUsICAgIDExLCAgICAxMiwg
ICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsCisgICAg
ICAgMCwgICAxMzksICAgMjIxLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAg
IDk3LCAgICA5OCwKKyAgICAgICAwLCAgICA5OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LAorICAgICAgIDksICAgIDEwLCAgIDEzMSwgICAx
MzIsICAgMTMzLCAgICAgMCwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsCisgICAgICAxMSwg
ICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0
LCAgICAyNSwgICAgMjYsICAgMTM4LAorICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAg
IDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsCisgICAgICAgMCwgICAgOTQs
ICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK
KyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAorICAgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgIDE0MSwgICAgOTcsICAgIDk4
LCAgICAgMCwgICAgOTksICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwKKyAgICAg
ICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEsICAgMTMyLCAgIDEzMywgICAg
IDAsICAgMTM0LAorICAgICAxMzUsICAgMTM2LCAgIDEzNywgICAgMTEsICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCiAgICAgICAxOCwgICAgMTksICAgIDIwLCAgICAy
MSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwKLSAgICAgIDI1LCAg
ICAyNiwgICAxMzYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAg
IDg4LAotICAgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMs
ICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAyNSwgICAgMjYsICAgMTM4LCAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwKKyAgICAgIDkyLCAgICA5Mywg
ICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAog
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDc2LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLAotICAgICAg
IDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwgICAxMjksCi0gICAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LCAg
IDEzNSwgICAgMTEsICAgIDEyLCAgICAxMywKLSAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAotICAgICAgIDAsICAg
ICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzYsICAgIDI3LCAgICAyOCwgICAg
MjksCi0gICAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwg
ICAgIDAsICAgICAwLCAgICA5MiwKLSAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsCi0g
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMTM5LCAgICA5NSwKLSAgICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAg
IDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LAotICAgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAg
MCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4
LCAgICAxOSwKLSAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAotICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsCi0gICAgICA5MSwgICAg
IDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICA3OSwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3
LCAgICA5OCwgICAgIDAsICAgIDk5LCAgICAgMSwgICAgIDIsCisgICAgICAgMywgICAgIDQsICAg
ICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMxLCAgIDEzMiwKKyAg
ICAgMTMzLCAgICAgMCwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAxMiwg
ICAgMTMsICAgIDE0LAorICAgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgMjMsICAgIDI0LCAg
ICAyNSwgICAgMjYsICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKKyAgICAgIDkw
LCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUs
ICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLCAgICA5NywgICAgOTgsICAgICAw
LAorICAgICAgOTksICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksCisgICAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwKKyAgICAgIDEyLCAgICAxMywgICAg
MTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAorICAg
ICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAg
ICAgMCwgICAgMjcsCisgICAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkx
LCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwKKyAgICAgIDk0LCAgICA5NSwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgOTYsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgIDE0MSwKKyAgICAgIDk3LCAgICA5OCwgICAgIDAsICAgIDk5LCAg
ICA2MCwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICA2LAorICAgICAgIDcsICAgICA4
LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAg
MTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAg
ICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICA5NCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCi0gICAgICAgMCwg
ICAgIDAsICAgMTM5LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgMTEsICAgIDEyLCAg
ICAxMywKKyAgICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4
LCAgICAgOSwgICAgMTAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTcsICAg
IDk4LCAgICAgMCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsCiAgICAgICAxNCwgICAgMTUs
ICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwK
ICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAy
NywgICAgMjgsICAgIDI5LAotICAgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAg
ICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsCi0gICAgICA5MywgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
OTQsICAgICAwLAotICAgICAgIDAsICAgMTYxLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgOTUsCi0gICAgICA5NiwgICAgIDAsICAgIDk3LCAgICAx
MSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKLSAgICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLAotICAgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDg3LCAgICAzMSwgICAgODgsCi0gICAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAg
IDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgIDMwLCAgICA5MCwg
ICAgMzEsICAgIDkxLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQsICAgIDk1LAog
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDIwNiwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLAotICAgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwgICAgMjEsCi0gICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAyNSwgICAgMjYsICAgICAwLCAgICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3
LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLAotICAgICAgIDAsICAg
IDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgOTYsICAgICAwLCAgICAgMCwKKyAgICAgMTYzLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LAorICAgICAgIDAsICAgIDk5LCAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCisg
ICAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAyNSwKKyAgICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAg
MzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLAorICAgICAgOTMsICAgICAwLCAgICAgMCwg
ICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKLSAgICAgIDk0LCAgICAgMCwgICAgIDAsICAgMjIyLCAgICAgOCwgICAgIDksICAg
IDEwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgIDk1LCAgICA5NiwgICAgIDAs
ICAgIDk3LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCi0gICAgICAxNiwgICAg
MTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAg
MCwKLSAgICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDg3LAotICAgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkx
LCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAg
IDk2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKKyAg
ICAgICAwLCAgICAgMCwgICAyMDgsICAgIDk3LCAgICA5OCwgICAgIDAsICAgIDk5LCAgICAxMSwg
ICAgMTIsICAgIDEzLAorICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAx
OSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwKKyAgICAgIDMw
LCAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgOTQs
ICAgIDk1LAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICA4LCAgICAg
OSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwgICAgOTYsICAgICAw
LAotICAgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAg
IDE3LCAgICAxOCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgIDE3NSwKLSAgICAgICAwLCAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLAotICAg
ICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwKKyAgICAgMjI0LCAgICAgOCwgICAgIDksICAg
IDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LAorICAgICAgIDAs
ICAgIDk5LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywg
ICAgMTgsCisgICAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAyNSwKKyAgICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLAorICAgICAgOTMsICAgICAw
LCAgICAgMCwgICAgOTQsICAgIDk1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
CiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgOTQsICAgICAyLCAgICAgMywg
ICAgIDQsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgICAg
MCwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwKLSAgICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLAotICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAg
MzAsICAgICAwLCAgICAzMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsCi0gICAgICAgMCwg
ICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0
LCAgICAxNSwgICAgMTYsICAgIDE3LAotICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAg
IDIyLCAgICAgMCwgICAxOTgsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAyNSwgICAgMjYs
ICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMCwK
LSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDcxLAotICAgICAgIDAsICAgICAwLCAgICAgMSwgICAgIDIsICAgICAzLCAg
ICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsCi0gICAgICAgOSwgICAgMTAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI0NywKLSAgICAg
IDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAg
MTksICAgIDIwLAotICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsCi0gICAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgIDAsICAgIDMxLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKKyAgICAgICAwLCAg
ICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAg
ICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTks
ICAgIDExLCAgICAxMiwgICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAg
MTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAyNSwgICAxNzcsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LAor
ICAgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAw
LCAgICA5NCwgICAgOTUsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDIsICAgICAzLAorICAgICAg
IDQsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICA5
NywgICAgOTgsCisgICAgICAgMCwgICAgOTksICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKKyAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAg
ICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
IDAsCisgICAgICAzMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDgsICAgICA5LCAgICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLAorICAgICAgMTMsICAgIDE0LCAg
ICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCisg
ICAgIDE5OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAs
ICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgNzQsICAgICAwLCAgICAgMCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsCiAgICAgICAg
NSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAg
IDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAyNTMs
ICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCiAgICAgICAxNywgICAg
MTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAy
MywKICAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgIDAsICAgIDMxLAotICAgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywKLSAg
ICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAy
NiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgIDAsICAgIDMxLCAg
ICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUs
ICAgIDE2LAotICAgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwg
ICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgMjI5LCAgICAzMSwKLSAgICAgICA4LCAgICAg
OSwgICAgMTAsICAgMjMwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAorICAgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwgICAgMTAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwKKyAgICAgIDEzLCAgICAxNCwgICAg
MTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAorICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAg
ICAyNywgICAgMjgsCisgICAgICAyOSwgICAgMzAsICAgICAwLCAgICAzMSwgICAgIDIsICAgICAz
LCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICA4LCAgICAgOSwgICAgMTAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAs
ICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksCiAgICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDI1LCAgICAyNiwKLSAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgIDAsICAgIDMxCisgICAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgICAwLCAgICAzMSwgICAgIDgsICAgICA5LCAgICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLAorICAg
ICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAg
ICAyMSwgICAgMjIsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1
LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAyMzEsICAg
MjMyLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwg
ICAgMTUsCisgICAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAy
MiwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAg
ICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgICAwLAorICAgICAgMzEKIH07CiAK
IHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXljaGVja1tdID0KIHsKLSAgICAgICAwLCAgICA1
NSwgICAgOTQsICAgIDg2LCAgICA3MCwgICAxMjcsICAgIDQ1LCAgIDE1MSwgICAyNzMsICAgIDYw
LAotICAgICAgNDAsICAgIDM2LCAgICA4NSwgICAgIDAsICAgICAwLCAgIDE2MCwgICAyNTcsICAg
IDM3LCAgICA3OSwgICAgODUsCi0gICAgICA4NCwgICAgODIsICAgIDg2LCAgIDEwNiwgICAgIDMs
ICAgIDQ1LCAgICA3MCwgICAyNTMsICAgMjkzLCAgICAgOCwKLSAgICAgICA5LCAgIDI3MiwgICAg
NTcsICAgIDYzLCAgICA1NSwgICAgNTYsICAgIDc5LCAgICA3NiwgICAgNDIsICAgIDgyLAotICAg
ICAgNDAsICAgIDg1LCAgICA0MiwgICAxMzUsICAgIDk1LCAgICA3NSwgICAgNDYsICAgIDUxLCAg
ICA5MiwgICAgOTMsCi0gICAgICA3OSwgICAgNTEsICAgIDgyLCAgICA4MiwgICAgMzMsICAgIDM0
LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICA0NiwKLSAgICAgIDQ2LCAgICA3NCwgICAyODgsICAg
IDYzLCAgICA4MiwgICAxMDksICAgMjkyLCAgICA3MywgICAgODEsICAgIDkwLAotICAgICAgOTEs
ICAgIDczLCAgIDE5NCwgICAgNzksICAgICAzLCAgICA3NSwgICAgNzYsICAgMTYwLCAgIDE3MCwg
ICAgIDgsCi0gICAgICAgOSwgICAgNzIsICAgIDgyLCAgICA3NCwgICAgNzksICAgIDc5LCAgIDE1
OSwgICAgODIsICAgIDUzLCAgICA1NCwKLSAgICAgIDgxLCAgIDE3NCwgICAgNzMsICAgMTU5LCAg
ICA3MywgICAxMjUsICAgIDQ1LCAgIDEyNywgICAgNzksICAgIDc0LAotICAgICAxOTIsICAgIDYy
LCAgICA2MywgICAgNjQsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgNzQs
Ci0gICAgICA3MSwgICAgNzMsICAgMjA0LCAgICA3OCwgICAyNTgsICAgMTU5LCAgICA3MywgICAg
NzksICAgIDc2LCAgICA3MiwKLSAgICAgIDgxLCAgICA3NCwgICAgNzksICAgIDg3LCAgICA4OCwg
ICAxMjUsICAgIDc2LCAgIDEyNywgICAxODMsICAgMTg0LAotICAgICAxODUsICAgMTg2LCAgICAz
NywgICAyMTYsICAgMjE3LCAgIDE3OSwgICAxODAsICAgMTgxLCAgIDE4MiwgICAxODMsCi0gICAg
IDE4NCwgICAxODUsICAgMTg2LCAgIDE4NywgICAxODgsICAgMTg5LCAgIDE5MCwgICAxOTEsICAg
MjIxLCAgIDI5NCwKLSAgICAgIDQ1LCAgIDE1MSwgICAgIDQsICAgICA1LCAgICAgNiwgICAyMjEs
ICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDU3LAotICAgICAgNTgsICAgIDc5LCAgICA4MCwgICAg
ODIsICAgMTk0LCAgIDI1NywgICAxODEsICAgMTgyLCAgIDE4NywgICAxODgsCi0gICAgICA0NSwg
ICAgNzIsICAgIDU5LCAgICA3MywgICAgNDUsICAgMjQ4LCAgICA3MiwgICAyMjEsICAgIDYxLCAg
ICA4MiwKLSAgICAgMjcyLCAgIDI2NCwgICAyNDgsICAgIDc1LCAgICA3MiwgICAgODIsICAgIDcy
LCAgICA3MiwgICAgODIsICAgMjgxLAotICAgICAgNzksICAgIDcyLCAgICA3NCwgICAgNzcsICAg
MTk0LCAgICA3NSwgICAgNzQsICAgIDc2LCAgIDI1MiwgICAyOTEsCi0gICAgICAgMywgICAgIDQs
ICAgICA1LCAgICAgNiwgICAyNDgsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwK
LSAgICAgMjEwLCAgIDI5NCwgICAgNzUsICAgIDc1LCAgICA3MiwgICAgNDAsICAgIDc1LCAgICA3
MiwgICAgMjEsICAgIDIyLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsCi0gICAgICA3NSwgICAgNDUsICAgIDcz
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNzcsICAgIDQxLCAgICA0MiwKLSAgICAg
IDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAg
ODIsICAgIDczLAotICAgICAgNTMsICAgIDU0LCAgICAxNiwgICAyNTMsICAgMjU0LCAgICA4MSwg
ICAxNzEsICAgMjU3LCAgIDI1OCwgICAgODIsCi0gICAgIDE5MCwgICAxODksICAgIDgyLCAgICA1
NywgICAxOTEsICAgIDY0LCAgICA4MiwgICAgIDUsICAgMTI1LCAgICA3MiwKLSAgICAgMjU0LCAg
IDI0OSwgICAyNzIsICAgMjEwLCAgIDI1NCwgICAyOTIsICAgMjcyLCAgICA0NiwgICAgLTEsICAg
IC0xLAotICAgICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgIDI4OCwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgMjkyLCAgICAgMywgICAg
IDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAxMSwg
ICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LAot
ICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3
LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwKLSAgICAgIDQwLCAgICA0MSwgICAgNDIs
ICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LAotICAgICAg
NTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsCisgICAgICAgMCwgICAgMjUsICAgIDg5LCAgICA4OCwgICAgOTYsICAgIDU3LCAg
IDE2MiwgICAgNzMsICAgMTUzLCAgIDEyOCwKKyAgICAgIDQwLCAgICAgMCwgICAgIDAsICAgMjU2
LCAgICA1OSwgICAgMzksICAgMjc2LCAgICAzNywgICAgNTQsICAgIDU1LAorICAgICAgODEsICAg
MTA4LCAgICA4OCwgICAgNzMsICAgIDQyLCAgICA0NSwgICAgNDUsICAgIDQ2LCAgICA3MiwgICAy
NjAsCisgICAgICA4MCwgICAgNzIsICAgIDcyLCAgICA1MSwgICAgNzgsICAgIDY1LCAgIDI5Niwg
ICAgNzgsICAgIDUyLCAgICA1MywKKyAgICAgIDQwLCAgICAzNiwgICAgNDIsICAgIDY3LCAgIDI3
NSwgICAxMzcsICAgIDQ2LCAgICA3NywgICAyOTEsICAgIDk0LAorICAgICAgNzgsICAgIDUxLCAg
IDI5NSwgICAgODksICAgIDkwLCAgICA4NSwgICAgNzUsICAgIDQ2LCAgICA0NiwgICAgNzMsCisg
ICAgICA4NCwgICAgNzMsICAgIDczLCAgICA3NywgICAgNTksICAgIDY1LCAgICA3MiwgICAgNzIs
ICAgIDgwLCAgICA0NSwKKyAgICAgIDQ2LCAgICA3OCwgICAgNzgsICAgIDc4LCAgICA4MSwgICAx
NjIsICAgMTYxLCAgICA3NywgICAgIDMsICAgIDc5LAorICAgICAxNzIsICAgIDc1LCAgIDIwMSwg
ICAgIDgsICAgICA5LCAgICA4NSwgICAgODMsICAgIDc4LCAgICA4NSwgICAxNzYsCisgICAgICA4
MSwgICAgIDMsICAgIDMzLCAgICAzNCwgICAgMzUsICAgMTYxLCAgICAgOCwgICAgIDksICAgMTI4
LCAgICAzNywKKyAgICAgMTMwLCAgICA3OCwgICAxOTQsICAgIDc4LCAgICA4MSwgICAgNzMsICAg
IDgxLCAgICA3MSwgICAgMzMsICAgIDM0LAorICAgICAgMzUsICAgIDM2LCAgICAzNywgICAgNzEs
ICAgMjA2LCAgICA3MywgICAyNjEsICAgICA0LCAgICAgNSwgICAgIDYsCisgICAgICA4OCwgICAg
MzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICA5NCwgICAgOTUsICAgMTI4LCAgICA3
NSwKKyAgICAgMTMwLCAgIDIxOCwgICAyMTksICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDQ1LCAg
ICA0NiwgICAyMjMsICAgIDg2LAorICAgICAgODcsICAgMjk3LCAgICA3MCwgICAxMTEsICAgIDgx
LCAgICA1NiwgICAgNTcsICAgIDcyLCAgICA3MSwgICAxNzMsCisgICAgIDE4MywgICAxODQsICAg
IDgwLCAgIDE1MywgICAgNzgsICAgIDc5LCAgICA3MiwgICAyMjMsICAgMTg1LCAgIDE4NiwKKyAg
ICAgMTg3LCAgIDE4OCwgICAgNTgsICAgMTg5LCAgIDE5MCwgICAyNTAsICAgIDcxLCAgICA2MCwg
ICAyNjAsICAgIDcxLAorICAgICAgNzQsICAgMjAxLCAgICA3MSwgICAgODEsICAgIDgxLCAgICA4
MSwgICAgNzEsICAgIDc0LCAgICA3NiwgICAgNzMsCisgICAgIDI2NywgICAgNzEsICAgIDczLCAg
IDI3NSwgICAyNTAsICAgIDQwLCAgICA3NSwgICAgNzEsICAgIDc0LCAgICA3NCwKKyAgICAgIDc4
LCAgICA3NCwgICAyODQsICAgMTYxLCAgICA3NCwgICAgNzEsICAgIDE2LCAgICA3MiwgICAgNzYs
ICAgIDgxLAorICAgICAgNzIsICAgMjAxLCAgIDI5NCwgICAyNTUsICAgIDgxLCAgIDE5MSwgICAg
ODAsICAgMTczLCAgIDE5MiwgICAgNTksCisgICAgIDI5NywgICAxOTMsICAgMjEyLCAgIDE4MSwg
ICAxODIsICAgMTgzLCAgIDE4NCwgICAxODUsICAgMTg2LCAgIDE4NywKKyAgICAgMTg4LCAgIDE4
OSwgICAxOTAsICAgMTkxLCAgIDE5MiwgICAxOTMsICAgIDg1LCAgICA2NiwgICAgODUsICAgICA1
LAorICAgICAxMzAsICAgMjk1LCAgIDI1NywgICAyMTIsICAgMjUxLCAgIDI1NywgICAyNzUsICAg
IDQ2LCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAg
NzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAgICA3NywgICAgLTEsICAgIC0xLAotICAg
ICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgICAzLCAg
ICAgNCwgICAgIDUsCi0gICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKLSAgICAgIC0xLCAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAotICAgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwg
ICAgLTEsCi0gICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKLSAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLAorICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgMjc4LCAgIDIyMywgICAyNTYsICAgMjU3LCAgICAtMSwgICAgLTEs
CisgICAgIDI2MCwgICAyNjEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAyNzUsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgIDI1
MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAg
ICAtMSwgICAyOTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMjk1LCAgICAgMywgICAgIDQsICAg
ICA1LCAgICAgNiwKKyAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLAorICAgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCisgICAgICAyNywg
ICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAzNiwKKyAgICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQz
LCAgICA0NCwgICAgNDUsICAgIDQ2LAorICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAg
IC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
LSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAt
MSwgICAgLTEsICAgIC0xLAotICAgICAgNzYsICAgIDc3LCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgODIsICAgIDgzLCAgICA4NCwgICAgLTEsCi0gICAgICA4NiwgICAgIDMsICAgICA0
LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKLSAgICAg
IDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLAotICAgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywg
ICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsCi0gICAgICAzMiwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwKLSAgICAgIDQyLCAg
ICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAg
IC0xLAotICAgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
NzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc1LCAgICA3NiwKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwgICAgODUsICAgICAzLAor
ICAgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAorICAgICAg
LTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0
MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAg
LTEsCisgICAgICAtMSwgICAgNzUsICAgIDc2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgODEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgIDMsICAgICA0LCAgICAg
NSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgMTEsICAgIDEyLCAg
ICAxMywgICAgMTQsICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCisg
ICAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwKKyAgICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLAorICAgICAgNDEsICAgIDQyLCAgICA0Mywg
ICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsCisgICAgICAt
MSwgICAgNTIsICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDc2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA4MiwgICAg
ODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAg
NywKKyAgICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3NSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgODEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1
LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsCiAgICAgICAgOCwgICAgIDksICAg
IDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywKICAg
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LAogICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsCiAgICAgICAzOCwgICAgMzksICAgIDQwLCAg
ICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywKLSAgICAgIDQ4
LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEs
ICAgIC0xLAorICAgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIC0x
LAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAg
IC0xLCAgICA4NiwgICAgIDMsCi0gICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgs
ICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywKLSAgICAgIDE0LCAgICAxNSwgICAg
LTEsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAotICAg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5
LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLAotICAgICAgNTQs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDcyLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLAotICAgICAgODQsICAgIC0x
LCAgICA4NiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDks
Ci0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwg
ICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAotICAgICAgMzAsICAgIDMxLCAgICAz
MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksCi0gICAg
ICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAg
IDQ4LCAgICA0OSwKLSAgICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
NzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc1LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwgICAgODUsICAgICAzLCAg
ICAgNCwKKyAgICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDE0LAorICAgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsCisgICAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwK
KyAgICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LAorICAgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAg
IC0xLCAgICAtMSwgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAg
MTIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwg
ICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAg
IC0xLAorICAgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgs
ICAgICA5LCAgICAxMCwgICAgMTEsCisgICAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwKKyAgICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLAor
ICAgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5
LCAgICAtMSwgICAgNDEsCisgICAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwKKyAgICAgIDUyLCAgICA1MywgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgNzEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICA4MSwKKyAgICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1
LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEsICAgICA4LAorICAgICAgIDksICAg
IDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LAorICAgICAgMzksICAgIC0xLCAg
ICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCisg
ICAgICA0OSwgICAgLTEsICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICA3MSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCisgICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIy
LCAgICAyMywKICAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAg
IDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsCi0gICAgICA0NCwgICAg
NDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1
MywKLSAgICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsCi0gICAgICAtMSwgICAgNzUsICAg
IDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MywKLSAg
ICAgIDg0LCAgICAtMSwgICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LAotICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAzOCwgICAgMzksICAgIC0xLCAg
ICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywKLSAgICAgIDQ4
LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEs
ICAgIC0xLAorICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAg
LTEsICAgIC0xLCAgICA1MiwgICAgNTMsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDEx
LAotICAgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAg
IC0xLCAgICA4NiwgICAgMjEsCi0gICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLAotICAg
ICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwgICAgLTEsCi0gICAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLAorICAgICAgNzQs
ICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4Miwg
ICAgODMsCisgICAgICAtMSwgICAgODUsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LAorICAgICAgMzksICAgIC0x
LCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgs
CisgICAgICA0OSwgICAgLTEsICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgNzIsICAgIC0xLCAgICAt
MSwgICAgNzUsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAg
ICAtMSwgICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsICAg
IDI0LCAgICAyNSwKLSAgICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEs
ICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAzOCwgICAg
MzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsCi0gICAgICA0Niwg
ICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAg
ICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEw
LCAgICAxMSwgICAgMTIsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICA4MSwgICAgODIsICAg
IDgzLCAgICAtMSwgICAgODUsICAgIDIxLCAgICAyMiwgICAgMjMsCisgICAgICAyNCwgICAgMjUs
ICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwK
KyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0
MSwgICAgNDIsICAgIDQzLAorICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAg
ICA0OSwgICAgLTEsICAgIC0xLCAgICA1MiwgICAgNTMsCiAgICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAg
LTEsICAgIC0xLAotICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDgzLCAgICA4NCwgICAgLTEsCi0gICAgICA4NiwgICAgMjEsICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAg
ICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAg
IDM5LAotICAgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYs
ICAgIDQ3LCAgICA0OCwgICAgNDksCi0gICAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAg
NTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLAor
ICAgICAgNzQsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA4MiwgICAgODMsCisgICAgICAtMSwgICAgODUsICAgIDIxLCAgICAyMiwgICAgMjMsICAg
IDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgMzEs
ICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LAorICAgICAg
MzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsCisgICAgICA0OSwgICAgLTEsICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAg
IC0xLCAgICA3MiwgICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MTAsCi0gICAgICAxMSwgICAgMTIsICAgIC0xLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4Niwg
ICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAotICAgICAgMzEsICAgIDMyLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsCi0g
ICAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LCAgICAgNCwgICAgIDUs
ICAgICA2LCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICA3NywgICAgLTEsICAgIC0x
LCAgICAtMSwKLSAgICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAg
IDQ0LCAgICAtMSwgICAgNDYsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgIDAsCi0gICAgICAtMSwgICAg
LTEsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwKLSAgICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDc3LAotICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1
LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAgMzIsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwKLSAg
ICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgICAzLCAgICAgNCwg
ICAgIDUsICAgICA2LAorICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0
LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAg
LTEsICAgIDQxLCAgICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0Nywg
ICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKKyAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDcxLCAgICAgNCwgICAgIDUsCisgICAgICAgNiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAs
ICAgIDExLCAgICAxMiwgICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAorICAg
ICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQx
LCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwKKyAgICAgIDQ2LCAgICAgNCwgICAgIDUsICAg
ICA2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLAorICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwg
ICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIDc2LCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAgICAgNDMsICAgIDQ0
LCAgICAtMSwgICAgNDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
CisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMCwgICAgLTEsICAgIC0xLCAgICAgMywgICAg
IDQsICAgICA1LCAgICAgNiwKICAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwg
ICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCisgICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICA3NiwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwKICAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LAogICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAg
LTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsCi0gICAgICAgNCwg
ICAgIDUsICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAg
ICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAyMSwgICAgMjIsICAgIDIzLAotICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAg
IDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywK
LSAgICAgIDQ0LCAgICAtMSwgICAgNDYsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAg
ICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCi0gICAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAg
IC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAg
NDUsICAgIDQ2LAotICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgNTAsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAgMywgICAgIDQsICAgICA1LCAgICAg
NiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwKKyAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAg
IDIyLAorICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICAzMSwgICAgMzIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAg
MzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwKKyAgICAgIDQzLCAgICA0NCwg
ICAgLTEsICAgIDQ2LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0xLAor
ICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwKICAgICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LAotICAgICAg
LTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYKKyAgICAgIC0xLCAg
ICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LCAgICAxMCwgICAgMTEsICAg
IDEyLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAyMSwgICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAor
ICAgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0x
LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwKKyAgICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAg
LTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0
NCwgICAgLTEsCisgICAgICA0NgogfTsKIAogLyogWVlTVE9TW1NUQVRFLU5VTV0gLS0gVGhlIChp
bnRlcm5hbCBudW1iZXIgb2YgdGhlKSBhY2Nlc3NpbmcKQEAgLTEzMDgsMzIgKzEzNDMsMzIgQEAg
c3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXN0b3NbXSA9CiAgICAgICAzMCwgICAgMzEsICAg
IDMyLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDEsICAgIDQyLCAgICA0MywKICAg
ICAgIDQ0LCAgICA0NiwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjksICAgMTMwLCAgIDEzNSwg
ICAxMzYsICAgMTM3LAogICAgICAxMzgsICAgMTM5LCAgIDE0MCwgICAxNDEsICAgMTQyLCAgIDE0
MywgICAxNzUsICAgMTc2LCAgIDE3NywgICAgMzcsCi0gICAgICA0NSwgICAxNDAsICAgIDQ1LCAg
ICA3NiwgICAgODIsICAgMTc4LCAgICA3MywgICAgNzksICAgICAzLCAgICAzMywKLSAgICAgIDM0
LCAgICAzNSwgICAxMzIsICAgMTMzLCAgIDEzOCwgICAgNzksICAgIDgyLCAgICA0NSwgICAxMzks
ICAgMTQxLAotICAgICAgNzQsICAgICAwLCAgIDE3NiwgICAxNDEsICAgIDc2LCAgIDE0NSwgICAg
NzYsICAgMTYxLCAgIDEzMiwgICAxMzEsCi0gICAgIDEzNCwgICAxMzksICAgMTMzLCAgICA0NSwg
ICAgNzIsICAgIDc0LCAgICA4MSwgICAgNDUsICAgIDQ3LCAgICA0OCwKLSAgICAgIDQ5LCAgICA1
MCwgICAgNTMsICAgIDU0LCAgICA3MiwgICAgODMsICAgIDg0LCAgICA4NiwgICAgOTcsICAgIDk4
LAotICAgICAgOTksICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMTA0LCAgIDEwNSwgICAxMDYsICAg
MTA3LCAgIDEwOCwgICAxMDksCi0gICAgIDExMCwgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTQs
ICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgIDExOSwKLSAgICAgMTIwLCAgIDEyMSwgICAx
MjUsICAgMTQyLCAgICA4MiwgICAxNDQsICAgMTM5LCAgIDE0NiwgICAxNDcsICAgIDEzLAotICAg
ICAgMTQsICAgIDE1LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgNDAsICAgIDc2LCAg
ICA3NywgICAgODIsCi0gICAgIDEwOCwgICAxMjEsICAgMTIyLCAgIDEyNCwgICAxMjYsICAgMTI3
LCAgIDE0MiwgICAxNTEsICAgMTUyLCAgIDE1MywKLSAgICAgMTU0LCAgIDE2MiwgICAxNjMsICAg
MTY0LCAgIDE2NywgICAxNzQsICAgIDQ1LCAgIDEzMSwgICAxMzQsICAgIDc0LAotICAgICAgODEs
ICAgIDc1LCAgIDEyNSwgICAxMjIsICAgMTUwLCAgIDEwOCwgICAxMDgsICAgMTI0LCAgICA1Mywg
ICAgNTQsCi0gICAgICA3NCwgICAgNzgsICAgIDczLCAgICA3MywgICAgNzksICAgIDM5LCAgIDEy
MiwgICAgNzIsICAgMTA4LCAgICA4NywKLSAgICAgIDg4LCAgICA4NCwgICAgODYsICAgIDU1LCAg
ICA1NiwgICAgOTAsICAgIDkxLCAgICA1NywgICAgNTgsICAgIDU5LAotICAgICAgNjEsICAgIDYw
LCAgICA5NSwgICAgNzUsICAgMTQ2LCAgICA0NSwgICAxNDgsICAgMTQ5LCAgICA3NywgICAxNDcs
Ci0gICAgICA4MiwgICAgODIsICAgMTY5LCAgICA3MiwgICAgNzIsICAgIDgyLCAgICA4MiwgICAx
MjQsICAgIDcyLCAgICA3NywKLSAgICAgMTU1LCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA3MSwg
ICAgODEsICAgMTIzLCAgICA3OSwgICAgODIsICAgIDc3LAotICAgICAxNTIsICAgIDc0LCAgICA3
NSwgICAxMjUsICAgMTUwLCAgICA3NSwgICAgNzMsICAgMTAwLCAgIDEyNCwgICAgNDUsCi0gICAg
ICA1MCwgICAxMDMsICAgMTIyLCAgIDEwOCwgICAxMDgsICAgMTEwLCAgIDExMCwgICAxMTIsICAg
MTEyLCAgIDExMiwKLSAgICAgMTEyLCAgIDExMywgICAxMTMsICAgMTE3LCAgIDExOCwgICAxMTks
ICAgMTI0LCAgICA3NywgICAgNzQsICAgIDc5LAotICAgICAgODIsICAgMTU4LCAgIDE1OSwgICAx
NjAsICAgMTcwLCAgIDEyNCwgICAgODIsICAgMTY4LCAgIDE2MiwgICAxMjIsCi0gICAgIDEyMiwg
ICAxMjUsICAgIDc1LCAgICA3NSwgICAgODAsICAgMTI1LCAgIDE0OSwgICAgNDAsICAgMTYxLCAg
IDE1MywKLSAgICAgMTUxLCAgIDE2MywgICAxNzEsICAgIDczLCAgIDEyNCwgICAxMzcsICAgMTY2
LCAgIDE1NiwgICAgNzUsICAgMTIyLAotICAgICAgNzUsICAgIDcyLCAgIDE2NiwgICAxNzIsICAg
MTczLCAgIDE1OCwgICAxNjUsICAgIDQ1LCAgICA3MywgICAgNzcsCi0gICAgIDEyNCwgICAgODIs
ICAgIDczLCAgICAxNiwgICAgODEsICAgMTUzLCAgIDE1NywgICAxNjEsICAgIDczLCAgIDEyNCwK
LSAgICAgMTU3LCAgIDE1OCwgICAxNTAsICAgIDgyCisgICAgICA0NSwgICAxNDAsICAgIDQ1LCAg
ICA0NiwgICAgNzUsICAgIDk2LCAgICA4MSwgICAxNzgsICAgIDcyLCAgICA3OCwKKyAgICAgICAz
LCAgICAzMywgICAgMzQsICAgIDM1LCAgIDEzMiwgICAxMzMsICAgMTM4LCAgICA3OCwgICAgODEs
ICAgIDQ1LAorICAgICAgOTYsICAgMTM5LCAgIDE0MSwgICAgNzMsICAgICAwLCAgIDE3NiwgICAx
NDEsICAgMTQ1LCAgICA3NSwgICAgNzUsCisgICAgIDE2MSwgICAxMzIsICAgMTMxLCAgIDEzNCwg
ICAxMzksICAgMTMzLCAgICA5NiwgICAgNzEsICAgIDczLCAgICA4MCwKKyAgICAgIDQ1LCAgICA0
NywgICAgNDgsICAgIDQ5LCAgICA1MiwgICAgNTMsICAgIDcxLCAgICA4MiwgICAgODMsICAgIDg1
LAorICAgICAgOTcsICAgIDk4LCAgICA5OSwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAg
MTA1LCAgIDEwNiwgICAxMDcsCisgICAgIDEwOCwgICAxMDksICAgMTEwLCAgIDExMSwgICAxMTIs
ICAgMTEzLCAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywKKyAgICAgMTE4LCAgIDExOSwgICAx
MjAsICAgMTIxLCAgIDEyNSwgICAxNDIsICAgIDgxLCAgIDEzOSwgICAxNDYsICAgMTQ3LAorICAg
ICAxNDQsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAg
ICA0MCwgICAgNzUsCisgICAgICA3NiwgICAgODEsICAgMTA4LCAgIDEyMSwgICAxMjIsICAgMTI0
LCAgIDEyNiwgICAxMjcsICAgMTQyLCAgIDE1MSwKKyAgICAgMTUyLCAgIDE1MywgICAxNTQsICAg
MTYyLCAgIDE2MywgICAxNjQsICAgMTY3LCAgIDE3NCwgICAgOTYsICAgMTMxLAorICAgICAxMzQs
ICAgIDczLCAgICA4MCwgICAgNzQsICAgMTI1LCAgIDEyMiwgICAxNTAsICAgMTA4LCAgIDEwOCwg
ICAxMjQsCisgICAgICA1MiwgICAgNTMsICAgIDczLCAgICA3NywgICAgNzIsICAgIDcyLCAgICA3
OCwgICAgMzksICAgMTIyLCAgICA3MSwKKyAgICAgMTA4LCAgICA4NiwgICAgODcsICAgIDgzLCAg
ICA4NSwgICAgNTQsICAgIDU1LCAgICA4OSwgICAgOTAsICAgIDU2LAorICAgICAgNTcsICAgIDU4
LCAgICA2MCwgICAgNTksICAgIDk0LCAgICA3NCwgICAgOTYsICAgMTQ4LCAgIDE0OSwgICAgNzYs
CisgICAgIDE0NywgICAxNDYsICAgIDgxLCAgICA4MSwgICAxNjksICAgIDcxLCAgICA3MSwgICAg
ODEsICAgIDgxLCAgIDEyNCwKKyAgICAgIDcxLCAgICA3NiwgICAxNTUsICAgIDYxLCAgICA2Miwg
ICAgNjMsICAgIDcwLCAgICA4MCwgICAxMjMsICAgIDc4LAorICAgICAgODEsICAgIDc2LCAgIDE1
MiwgICAgNzMsICAgIDc0LCAgIDEyNSwgICAxNTAsICAgIDc0LCAgICA3MiwgICAxMDAsCisgICAg
IDEyNCwgICAgNDUsICAgIDQ2LCAgICA5NiwgICAxMDMsICAgMTIyLCAgIDEwOCwgICAxMDgsICAg
MTEwLCAgIDExMCwKKyAgICAgMTEyLCAgIDExMiwgICAxMTIsICAgMTEyLCAgIDExMywgICAxMTMs
ICAgMTE3LCAgIDExOCwgICAxMTksICAgMTI0LAorICAgICAgNzMsICAgIDc4LCAgICA4MSwgICAg
NzYsICAgMTU4LCAgIDE1OSwgICAxNjAsICAgMTcwLCAgIDEyNCwgICAgODEsCisgICAgIDE2OCwg
ICAxNjIsICAgMTIyLCAgIDEyMiwgICAxMjUsICAgIDc0LCAgICA3NCwgICAgNzksICAgMTI1LCAg
IDE0OSwKKyAgICAgIDQwLCAgIDE2MSwgICAxNTMsICAgMTUxLCAgIDE2MywgICAxNzEsICAgIDcy
LCAgIDEyNCwgICAxMzcsICAgMTY2LAorICAgICAxNTYsICAgIDc0LCAgIDEyMiwgICAgNzQsICAg
IDcxLCAgIDE2NiwgICAxNzIsICAgMTczLCAgIDE1OCwgICAxNjUsCisgICAgICA5NiwgICAgNzIs
ICAgIDc2LCAgIDEyNCwgICAgODEsICAgIDcyLCAgICAxNiwgICAgODAsICAgMTUzLCAgIDE1NywK
KyAgICAgMTYxLCAgICA3MiwgICAxMjQsICAgMTU3LCAgIDE1OCwgICAxNTAsICAgIDgxCiB9Owog
CiAjZGVmaW5lIHl5ZXJyb2sJCSh5eWVycnN0YXR1cyA9IDApCkBAIC0xMzY2LDcgKzE0MDEsNyBA
QCBkbwkJCQkJCQkJXAogICAgIH0JCQkJCQkJCVwKICAgZWxzZQkJCQkJCQkJXAogICAgIHsJCQkJ
CQkJCVwKLSAgICAgIHl5ZXJyb3IgKGNvbnRleHQsIFlZXygic3ludGF4IGVycm9yOiBjYW5ub3Qg
YmFjayB1cCIpKTsgXAorICAgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgWVlfKCJzeW50
YXggZXJyb3I6IGNhbm5vdCBiYWNrIHVwIikpOyBcCiAgICAgICBZWUVSUk9SOwkJCQkJCQlcCiAg
ICAgfQkJCQkJCQkJXAogd2hpbGUgKFlZSUQgKDApKQpAQCAtMTQyMSw5ICsxNDU2LDkgQEAgd2hp
bGUgKFlZSUQgKDApKQogLyogWVlMRVggLS0gY2FsbGluZyBgeXlsZXgnIHdpdGggdGhlIHJpZ2h0
IGFyZ3VtZW50cy4gICovCiAKICNpZmRlZiBZWUxFWF9QQVJBTQotIyBkZWZpbmUgWVlMRVggeXls
ZXggKCZ5eWx2YWwsIFlZTEVYX1BBUkFNKQorIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWws
ICZ5eWxsb2MsIFlZTEVYX1BBUkFNKQogI2Vsc2UKLSMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXls
dmFsKQorIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2MpCiAjZW5kaWYKIAog
LyogRW5hYmxlIGRlYnVnZ2luZyBpZiByZXF1ZXN0ZWQuICAqLwpAQCAtMTQ0Niw3ICsxNDgxLDcg
QEAgZG8gewkJCQkJCQkJCSAgXAogICAgIHsJCQkJCQkJCQkgIFwKICAgICAgIFlZRlBSSU5URiAo
c3RkZXJyLCAiJXMgIiwgVGl0bGUpOwkJCQkJICBcCiAgICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0
ZGVyciwJCQkJCQkgIFwKLQkJICBUeXBlLCBWYWx1ZSwgY29udGV4dCk7IFwKKwkJICBUeXBlLCBW
YWx1ZSwgTG9jYXRpb24sIGNvbnRleHQpOyBcCiAgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxu
Iik7CQkJCQkJICBcCiAgICAgfQkJCQkJCQkJCSAgXAogfSB3aGlsZSAoWVlJRCAoMCkpCkBAIC0x
NDYwLDE4ICsxNDk1LDIwIEBAIGRvIHsJCQkJCQkJCQkgIFwKICNpZiAoZGVmaW5lZCBfX1NURENf
XyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVz
IHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ZhbHVlX3ByaW50
IChGSUxFICp5eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFs
dWVwLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0KQoreXlfc3ltYm9sX3ZhbHVlX3ByaW50IChGSUxF
ICp5eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBZ
WUxUWVBFIGNvbnN0ICogY29uc3QgeXlsb2NhdGlvbnAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQp
CiAjZWxzZQogc3RhdGljIHZvaWQKLXl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5
dHlwZSwgeXl2YWx1ZXAsIGNvbnRleHQpCit5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0
LCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICAgICBGSUxFICp5eW91
dHB1dDsKICAgICBpbnQgeXl0eXBlOwogICAgIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVl
cDsKKyAgICBZWUxUWVBFIGNvbnN0ICogY29uc3QgeXlsb2NhdGlvbnA7CiAgICAgVFBhcnNlQ29u
dGV4dCogY29udGV4dDsKICNlbmRpZgogewogICBpZiAoIXl5dmFsdWVwKQogICAgIHJldHVybjsK
KyAgWVlVU0UgKHl5bG9jYXRpb25wKTsKICAgWVlVU0UgKGNvbnRleHQpOwogIyBpZmRlZiBZWVBS
SU5UCiAgIGlmICh5eXR5cGUgPCBZWU5UT0tFTlMpCkBAIC0xNDk0LDEzICsxNTMxLDE0IEBAIHl5
X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwKICNpZiAoZGVmaW5lZCBfX1NU
RENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9fY3BsdXNw
bHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ByaW50IChG
SUxFICp5eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVw
LCBUUGFyc2VDb250ZXh0KiBjb250ZXh0KQoreXlfc3ltYm9sX3ByaW50IChGSUxFICp5eW91dHB1
dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBZWUxUWVBFIGNv
bnN0ICogY29uc3QgeXlsb2NhdGlvbnAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiAjZWxzZQog
c3RhdGljIHZvaWQKLXl5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAs
IGNvbnRleHQpCit5eV9zeW1ib2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCB5
eWxvY2F0aW9ucCwgY29udGV4dCkKICAgICBGSUxFICp5eW91dHB1dDsKICAgICBpbnQgeXl0eXBl
OwogICAgIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKKyAgICBZWUxUWVBFIGNvbnN0
ICogY29uc3QgeXlsb2NhdGlvbnA7CiAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dDsKICNlbmRp
ZgogewpAQCAtMTUwOSw3ICsxNTQ3LDkgQEAgeXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0
eXBlLCB5eXZhbAogICBlbHNlCiAgICAgWVlGUFJJTlRGICh5eW91dHB1dCwgIm50ZXJtICVzICgi
LCB5eXRuYW1lW3l5dHlwZV0pOwogCi0gIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQs
IHl5dHlwZSwgeXl2YWx1ZXAsIGNvbnRleHQpOworICBZWV9MT0NBVElPTl9QUklOVCAoeXlvdXRw
dXQsICp5eWxvY2F0aW9ucCk7CisgIFlZRlBSSU5URiAoeXlvdXRwdXQsICI6ICIpOworICB5eV9z
eW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9u
cCwgY29udGV4dCk7CiAgIFlZRlBSSU5URiAoeXlvdXRwdXQsICIpIik7CiB9CiAKQEAgLTE1NDks
MTEgKzE1ODksMTIgQEAgZG8gewkJCQkJCQkJXAogI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRl
ZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVm
aW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9yZWR1Y2VfcHJpbnQgKFlZU1RZUEUgKnl5
dnNwLCBpbnQgeXlydWxlLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0KQoreXlfcmVkdWNlX3ByaW50
IChZWVNUWVBFICp5eXZzcCwgWVlMVFlQRSAqeXlsc3AsIGludCB5eXJ1bGUsIFRQYXJzZUNvbnRl
eHQqIGNvbnRleHQpCiAjZWxzZQogc3RhdGljIHZvaWQKLXl5X3JlZHVjZV9wcmludCAoeXl2c3As
IHl5cnVsZSwgY29udGV4dCkKK3l5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5bHNwLCB5eXJ1bGUs
IGNvbnRleHQpCiAgICAgWVlTVFlQRSAqeXl2c3A7CisgICAgWVlMVFlQRSAqeXlsc3A7CiAgICAg
aW50IHl5cnVsZTsKICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0OwogI2VuZGlmCkBAIC0xNTY5
LDcgKzE2MTAsNyBAQCB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eXJ1bGUsIGNvbnRleHQpCiAg
ICAgICBmcHJpbnRmIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKICAgICAgIHl5X3N5
bWJvbF9wcmludCAoc3RkZXJyLCB5eXJoc1t5eXByaHNbeXlydWxlXSArIHl5aV0sCiAJCSAgICAg
ICAmKHl5dnNwWyh5eWkgKyAxKSAtICh5eW5yaHMpXSkKLQkJICAgICAgIAkJICAgICAgICwgY29u
dGV4dCk7CisJCSAgICAgICAsICYoeXlsc3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQkJICAgICAg
ICwgY29udGV4dCk7CiAgICAgICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOwogICAgIH0KIH0KQEAg
LTE1NzcsNyArMTYxOCw3IEBAIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5cnVsZSwgY29udGV4
dCkKICMgZGVmaW5lIFlZX1JFRFVDRV9QUklOVChSdWxlKQkJXAogZG8gewkJCQkJXAogICBpZiAo
eXlkZWJ1ZykJCQkJXAotICAgIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIFJ1bGUsIGNvbnRleHQp
OyBcCisgICAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlsc3AsIFJ1bGUsIGNvbnRleHQpOyBc
CiB9IHdoaWxlIChZWUlEICgwKSkKIAogLyogTm9uemVybyBtZWFucyBwcmludCBwYXJzZSB0cmFj
ZS4gIEl0IGlzIGxlZnQgdW5pbml0aWFsaXplZCBzbyB0aGF0CkBAIC0xODI4LDE3ICsxODY5LDE5
IEBAIHl5c3ludGF4X2Vycm9yIChjaGFyICp5eXJlc3VsdCwgaW50IHl5c3QKICNpZiAoZGVmaW5l
ZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAogICAgICB8fCBkZWZpbmVkIF9f
Y3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAoteXlkZXN0cnVjdCAo
Y29uc3QgY2hhciAqeXltc2csIGludCB5eXR5cGUsIFlZU1RZUEUgKnl5dmFsdWVwLCBUUGFyc2VD
b250ZXh0KiBjb250ZXh0KQoreXlkZXN0cnVjdCAoY29uc3QgY2hhciAqeXltc2csIGludCB5eXR5
cGUsIFlZU1RZUEUgKnl5dmFsdWVwLCBZWUxUWVBFICp5eWxvY2F0aW9ucCwgVFBhcnNlQ29udGV4
dCogY29udGV4dCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlkZXN0cnVjdCAoeXltc2csIHl5dHlw
ZSwgeXl2YWx1ZXAsIGNvbnRleHQpCit5eWRlc3RydWN0ICh5eW1zZywgeXl0eXBlLCB5eXZhbHVl
cCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpCiAgICAgY29uc3QgY2hhciAqeXltc2c7CiAgICAgaW50
IHl5dHlwZTsKICAgICBZWVNUWVBFICp5eXZhbHVlcDsKKyAgICBZWUxUWVBFICp5eWxvY2F0aW9u
cDsKICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0OwogI2VuZGlmCiB7CiAgIFlZVVNFICh5eXZh
bHVlcCk7CisgIFlZVVNFICh5eWxvY2F0aW9ucCk7CiAgIFlZVVNFIChjb250ZXh0KTsKIAogICBp
ZiAoIXl5bXNnKQpAQCAtMTkwOSw2ICsxOTUyLDggQEAgWVlTVFlQRSB5eWx2YWw7CiAKIC8qIE51
bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCiBpbnQgeXluZXJyczsKKy8qIExvY2F0
aW9uIGRhdGEgZm9yIHRoZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCitZWUxUWVBFIHl5bGxvYzsK
IAogICBpbnQgeXlzdGF0ZTsKICAgaW50IHl5bjsKQEAgLTE5NDIsMTYgKzE5ODcsMjEgQEAgaW50
IHl5bmVycnM7CiAgIFlZU1RZUEUgKnl5dnMgPSB5eXZzYTsKICAgWVlTVFlQRSAqeXl2c3A7CiAK
KyAgLyogVGhlIGxvY2F0aW9uIHN0YWNrLiAgKi8KKyAgWVlMVFlQRSB5eWxzYVtZWUlOSVRERVBU
SF07CisgIFlZTFRZUEUgKnl5bHMgPSB5eWxzYTsKKyAgWVlMVFlQRSAqeXlsc3A7CisgIC8qIFRo
ZSBsb2NhdGlvbnMgd2hlcmUgdGhlIGVycm9yIHN0YXJ0ZWQgYW5kIGVuZGVkLiAgKi8KKyAgWVlM
VFlQRSB5eWVycm9yX3JhbmdlWzJdOwogCi0KLSNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZz
cCAtPSAoTiksIHl5c3NwIC09IChOKSkKKyNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAt
PSAoTiksIHl5c3NwIC09IChOKSwgeXlsc3AgLT0gKE4pKQogCiAgIFlZU0laRV9UIHl5c3RhY2tz
aXplID0gWVlJTklUREVQVEg7CiAKICAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBz
ZW1hbnRpYyB2YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKICAgICAgYWN0aW9uIHJvdXRpbmVz
LiAgKi8KICAgWVlTVFlQRSB5eXZhbDsKLQorICBZWUxUWVBFIHl5bG9jOwogCiAgIC8qIFRoZSBu
dW1iZXIgb2Ygc3ltYm9scyBvbiB0aGUgUkhTIG9mIHRoZSByZWR1Y2VkIHJ1bGUuCiAgICAgIEtl
ZXAgdG8gemVybyB3aGVuIG5vIHN5bWJvbCBzaG91bGQgYmUgcG9wcGVkLiAgKi8KQEAgLTE5NzEs
NiArMjAyMSwxMiBAQCBpbnQgeXluZXJyczsKIAogICB5eXNzcCA9IHl5c3M7CiAgIHl5dnNwID0g
eXl2czsKKyAgeXlsc3AgPSB5eWxzOworI2lmIGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYm
IFlZTFRZUEVfSVNfVFJJVklBTAorICAvKiBJbml0aWFsaXplIHRoZSBkZWZhdWx0IGxvY2F0aW9u
IGJlZm9yZSBwYXJzaW5nIHN0YXJ0cy4gICovCisgIHl5bGxvYy5maXJzdF9saW5lICAgPSB5eWxs
b2MubGFzdF9saW5lICAgPSAxOworICB5eWxsb2MuZmlyc3RfY29sdW1uID0geXlsbG9jLmxhc3Rf
Y29sdW1uID0gMDsKKyNlbmRpZgogCiAgIGdvdG8geXlzZXRzdGF0ZTsKIApAQCAtMTk5Nyw3ICsy
MDUzLDcgQEAgaW50IHl5bmVycnM7CiAJICAgbWVtb3J5LiAgKi8KIAlZWVNUWVBFICp5eXZzMSA9
IHl5dnM7CiAJeXl0eXBlX2ludDE2ICp5eXNzMSA9IHl5c3M7Ci0KKwlZWUxUWVBFICp5eWxzMSA9
IHl5bHM7CiAKIAkvKiBFYWNoIHN0YWNrIHBvaW50ZXIgYWRkcmVzcyBpcyBmb2xsb3dlZCBieSB0
aGUgc2l6ZSBvZiB0aGUKIAkgICBkYXRhIGluIHVzZSBpbiB0aGF0IHN0YWNrLCBpbiBieXRlcy4g
IFRoaXMgdXNlZCB0byBiZSBhCkBAIC0yMDA2LDkgKzIwNjIsOSBAQCBpbnQgeXluZXJyczsKIAl5
eW92ZXJmbG93IChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwKIAkJICAgICZ5eXNzMSwgeXlzaXpl
ICogc2l6ZW9mICgqeXlzc3ApLAogCQkgICAgJnl5dnMxLCB5eXNpemUgKiBzaXplb2YgKCp5eXZz
cCksCi0KKwkJICAgICZ5eWxzMSwgeXlzaXplICogc2l6ZW9mICgqeXlsc3ApLAogCQkgICAgJnl5
c3RhY2tzaXplKTsKLQorCXl5bHMgPSB5eWxzMTsKIAl5eXNzID0geXlzczE7CiAJeXl2cyA9IHl5
dnMxOwogICAgICAgfQpAQCAtMjAzMSw3ICsyMDg3LDcgQEAgaW50IHl5bmVycnM7CiAJICBnb3Rv
IHl5ZXhoYXVzdGVkbGFiOwogCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3MpOwogCVlZU1RBQ0tfUkVM
T0NBVEUgKHl5dnMpOwotCisJWVlTVEFDS19SRUxPQ0FURSAoeXlscyk7CiAjICB1bmRlZiBZWVNU
QUNLX1JFTE9DQVRFCiAJaWYgKHl5c3MxICE9IHl5c3NhKQogCSAgWVlTVEFDS19GUkVFICh5eXNz
MSk7CkBAIC0yMDQxLDcgKzIwOTcsNyBAQCBpbnQgeXluZXJyczsKIAogICAgICAgeXlzc3AgPSB5
eXNzICsgeXlzaXplIC0gMTsKICAgICAgIHl5dnNwID0geXl2cyArIHl5c2l6ZSAtIDE7Ci0KKyAg
ICAgIHl5bHNwID0geXlscyArIHl5c2l6ZSAtIDE7CiAKICAgICAgIFlZRFBSSU5URiAoKHN0ZGVy
ciwgIlN0YWNrIHNpemUgaW5jcmVhc2VkIHRvICVsdVxuIiwKIAkJICAodW5zaWduZWQgbG9uZyBp
bnQpIHl5c3RhY2tzaXplKSk7CkBAIC0yMTE4LDcgKzIxNzQsNyBAQCB5eWJhY2t1cDoKIAogICB5
eXN0YXRlID0geXluOwogICAqKyt5eXZzcCA9IHl5bHZhbDsKLQorICAqKyt5eWxzcCA9IHl5bGxv
YzsKICAgZ290byB5eW5ld3N0YXRlOwogCiAKQEAgLTIxNDksMTggKzIyMDUsMTkgQEAgeXlyZWR1
Y2U6CiAgICAgIEdDQyB3YXJuaW5nIHRoYXQgWVlWQUwgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXpl
ZC4gICovCiAgIHl5dmFsID0geXl2c3BbMS15eWxlbl07CiAKLQorICAvKiBEZWZhdWx0IGxvY2F0
aW9uLiAgKi8KKyAgWVlMTE9DX0RFRkFVTFQgKHl5bG9jLCAoeXlsc3AgLSB5eWxlbiksIHl5bGVu
KTsKICAgWVlfUkVEVUNFX1BSSU5UICh5eW4pOwogICBzd2l0Y2ggKHl5bikKICAgICB7Ci0gICAg
ICAgIGNhc2UgMjoKKyAgICAgICAgY2FzZSA0OgogCiAgICAgewogICAgICAgICAvLyBUaGUgc3lt
Ym9sIHRhYmxlIHNlYXJjaCB3YXMgZG9uZSBpbiB0aGUgbGV4aWNhbCBwaGFzZQogICAgICAgICBj
b25zdCBUU3ltYm9sKiBzeW1ib2wgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN5bWJvbDsKICAg
ICAgICAgY29uc3QgVFZhcmlhYmxlKiB2YXJpYWJsZTsKICAgICAgICAgaWYgKHN5bWJvbCA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxp
bmUsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmlu
Zy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEp
XSksICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmlu
Zy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICBUVHlwZSB0eXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQpOwogICAgICAgICAgICAgVFZhcmlh
YmxlKiBmYWtlVmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKCh5eXZzcFsoMSkgLSAoMSldLmxleCku
c3RyaW5nLCB0eXBlKTsKQEAgLTIxNjksMTAgKzIyMjYsMTcgQEAgeXlyZWR1Y2U6CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlkZW50aWZpZXIgY2FuIG9ubHkgYmUgYSB2
YXJpYWJsZSB0eXBlIHN5bWJvbAogICAgICAgICAgICAgaWYgKCEgc3ltYm9sLT5pc1ZhcmlhYmxl
KCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5s
ZXgpLmxpbmUsICJ2YXJpYWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3Ry
aW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEp
IC0gKDEpXSksICJ2YXJpYWJsZSBleHBlY3RlZCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3Ry
aW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIHZhcmlhYmxlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3ltYm9sKTsKKworICAgICAgICAgICAgaWYgKGNvbnRleHQt
PnN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKHZhcmlhYmxlLT5nZXROYW1lKCkpICYmCisgICAgICAg
ICAgICAgICAgIXZhcmlhYmxlLT5nZXRFeHRlbnNpb24oKS5lbXB0eSgpICYmCisgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIHZh
cmlhYmxlLT5nZXRFeHRlbnNpb24oKSkpIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBkb24ndCBkZWxl
dGUgJDEuc3RyaW5nLCBpdCdzIHVzZWQgYnkgZXJyb3IgcmVjb3ZlcnksIGFuZCB0aGUgcG9vbApA
QCAtMjE4MSwyMiArMjI0NSwyMyBAQCB5eXJlZHVjZToKICAgICAgICAgaWYgKHZhcmlhYmxlLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgKSB7CiAgICAgICAgICAgICBDb25z
dGFudFVuaW9uKiBjb25zdEFycmF5ID0gdmFyaWFibGUtPmdldENvbnN0UG9pbnRlcigpOwogICAg
ICAgICAgICAgVFR5cGUgdCh2YXJpYWJsZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Cisg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbihjb25zdEFycmF5LCB0LCAoeXlsc3BbKDEpIC0gKDEp
XSkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVu
aXF1ZUlkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksICh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eWxzcFsoMSkgLSAoMSld
KSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDM6CisgIGNhc2UgNToKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDQ6CisgIGNhc2UgNjoKIAogICAgIHsKICAgICAgICAgLy8KQEAgLTIyMDQsMTU1ICsyMjY5LDc5
IEBAIHl5cmVkdWNlOgogICAgICAgICAvLyBjaGVjayBmb3Igb3ZlcmZsb3cgZm9yIGNvbnN0YW50
cwogICAgICAgICAvLwogICAgICAgICBpZiAoYWJzKCh5eXZzcFsoMSkgLSAoMSldLmxleCkuaSkg
Pj0gKDEgPDwgMTYpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0g
KDEpXS5sZXgpLmxpbmUsICIgaW50ZWdlciBjb25zdGFudCBvdmVyZmxvdyIsICIiKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgIiBpbnRlZ2VyIGNvbnN0
YW50IG92ZXJmbG93IiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICB9CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRV
bmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KCh5eXZzcFsoMSkgLSAoMSld
LmxleCkuaSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidElu
dCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDU6CisgIGNhc2UgNzoKIAogICAgIHsKICAgICAgICAgQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5
LT5zZXRGQ29uc3QoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5mKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1
bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxz
cFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDY6CisgIGNhc2Ug
ODoKIAogICAgIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25z
dGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5iKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMSkgLSAoMSldLmxleCku
bGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgIDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA3OgorICBjYXNlIDk6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4OgorICBjYXNlIDEw
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgOToKKyAgY2FzZSAxMToKIAogICAgIHsKLSAgICAgICAgaWYgKCEoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpICYmICEoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSAmJiAhKHl5dnNw
WygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkpIHsKLSAgICAg
ICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
QXNTeW1ib2xOb2RlKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygy
KSAtICg0KV0ubGV4KS5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBt
YXRyaXgsIG9yIHZlY3RvciAiLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNfc3RyKCkpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCld
LmxleCkubGluZSwgIiBsZWZ0IG9mICdbJyBpcyBub3Qgb2YgdHlwZSBhcnJheSwgbWF0cml4LCBv
ciB2ZWN0b3IgIiwgImV4cHJlc3Npb24iKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCAmJiAoeXl2
c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVyKCkgPT0g
RXZxQ29uc3QpIHsKLSAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7IC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIGFycmF5
cwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmFkZENvbnN0QXJyYXlOb2RlKCh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0
SUNvbnN0KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2
c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkgeyAgLy8gY29u
c3RhbnQgZm9sZGluZyBmb3IgdmVjdG9ycwotICAgICAgICAgICAgICAgIFRWZWN0b3JGaWVsZHMg
ZmllbGRzOwotICAgICAgICAgICAgICAgIGZpZWxkcy5udW0gPSAxOwotICAgICAgICAgICAgICAg
IGZpZWxkcy5vZmZzZXRzWzBdID0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJ
Q29uc3QoKTsgLy8gbmVlZCB0byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmll
bGRzIGludGVnZXIgYXJyYXkKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5s
aW5lKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgbWF0
cmljZXMKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5hZGRDb25zdE1hdHJpeE5vZGUoKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigp
LT5nZXRJQ29uc3QoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBpZiAoKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3Io
KSB8fCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgo
KSkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUo
KS5nZXROb21pbmFsU2l6ZSgpIDw9ICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0
SUNvbnN0KCkgJiYgISh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5p
c0FycmF5KCkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJh
SW5mb1N0cmVhbTsKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJmaWVs
ZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlICciIDw8ICh5eXZzcFsoMykgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50
ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIiciOwotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgIiIsICJbIiwgZXh0
cmFJbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldFR5cGUoKS5nZXRNYXhBcnJheVNpemUoKSA8PSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCktPmdldElDb25zdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVNldE1heFNpemUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldEFzU3ltYm9sTm9kZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50ZXIoKSwgKHl5dnNwWygzKSAtICg0KV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgdHJ1ZSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5s
aW5lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTZXRNYXhTaXplKCh5eXZzcFso
MSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc1N5bWJvbE5vZGUoKSwgKHl5
dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGVQb2ludGVyKCks
IDAsIGZhbHNlLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoICh5eXZz
cFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24o
KS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkgPj0gKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0
cmVhbTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImFy
cmF5IGluZGV4IG91dCBvZiByYW5nZSAnIiA8PCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVy
KCktPmdldElDb25zdCgpIDw8ICInIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5l
LCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVj
dCwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxp
bmUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0Fy
cmF5KCkgJiYgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5
cGUoKS5nZXRBcnJheVNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgIiIsICJbIiwgImFycmF5IG11c3Qg
YmUgcmVkZWNsYXJlZCB3aXRoIGEgc2l6ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRoIGEgdmFy
aWFibGUiKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleEluZGlyZWN0LCAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRG
Q29uc3QoMC4wZik7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxp
bmUpOwotICAgICAgICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5pc0FycmF5KCkpIHsKLSAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQotICAgICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFN0
cnVjdCgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlw
ZSgpLmdldFR5cGVOYW1lKCkpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBv
cmFyeSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWlu
YWxTaXplKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01h
dHJpeCgpKSk7Ci0KLSAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQotICAg
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50
ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKLSAgICAgICAgfSBlbHNlIGlmICgoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSAmJiAoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmll
cigpID09IEV2cUNvbnN0KQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCkpKTsKLSAgICAgICAgZWxzZSBpZiAo
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzTWF0cml4KCkpCi0g
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUo
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgp
LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9u
KCksIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldE5vbWluYWxTaXplKCkpKTsKLSAgICAgICAgZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkgJiYgKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBF
dnFDb25zdCkKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0
VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QpKTsKLSAgICAgICAgZWxzZSBpZiAoKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkpCi0gICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAt
ICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBv
cmFyeSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPnNldFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldFR5cGUoKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmFkZEluZGV4RXhwcmVzc2lvbigoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICg0KV0pLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwOgor
ICBjYXNlIDEyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTE6CisgIGNhc2UgMTM6CiAKICAgICB7CiAgICAgICAgIGlm
ICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNBcnJheSgpKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUs
ICJjYW5ub3QgYXBwbHkgZG90IG9wZXJhdG9yIHRvIGFuIGFycmF5IiwgIi4iKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMykgLSAoMyldKSwgImNhbm5vdCBhcHBseSBkb3Qg
b3BlcmF0b3IgdG8gYW4gYXJyYXkiLCAiLiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKSB7CiAgICAgICAgICAgICBUVmVjdG9yRmllbGRz
IGZpZWxkczsKLSAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBhcnNlVmVjdG9yRmllbGRzKCoo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgKHl5dnNwWygzKSAtICgz
KV0ubGV4KS5saW5lKSkgeworICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VWZWN0b3JG
aWVsZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAoeXlsc3Bb
KDMpIC0gKDMpXSkpKSB7CiAgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CiAgICAgICAg
ICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSAwOwogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkg
PT0gRXZxQ29uc3QpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9yIGZpZWxkcwotICAg
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFk
ZENvbnN0VmVjdG9yTm9kZShmaWVsZHMsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9y
Tm9kZShmaWVsZHMsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXlsc3BbKDMpIC0gKDMpXSkpOwogICAgICAgICAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtMjM2MSwx
MyArMjM1MCwxMyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCwgKGludCkgKCoo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZykuc2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIFRTdHJpbmcgdmVjdG9yU3RyaW5nID0gKih5eXZzcFsoMykg
LSAoMyldLmxleCkuc3RyaW5nOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXgg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVsZHMsICh5eXZzcFsoMykgLSAo
MyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcFZlY3RvclN3aXp6bGUs
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGlu
ZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmllbGRzLCAoeXlsc3BbKDMp
IC0gKDMpXSkpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BWZWN0b3JTd2l6emxlLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eWxzcFsoMikg
LSAoMyldKSk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnksIChpbnQpIHZlY3RvclN0cmluZy5zaXpl
KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSkgewogICAgICAgICAgICAgVE1h
dHJpeEZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJzZU1hdHJp
eEZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsICh5eXZz
cFsoMykgLSAoMyldLmxleCkubGluZSkpIHsKKyAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBh
cnNlTWF0cml4RmllbGRzKCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCksIGZpZWxk
cywgKHl5bHNwWygzKSAtICgzKV0pKSkgewogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9sZVJv
dyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGZpZWxkcy53aG9sZUNvbCA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgIGZpZWxkcy5yb3cgPSAwOwpAQCAtMjM3Niw2MyArMjM2NSw1NyBAQCB5eXJl
ZHVjZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGZpZWxkcy53aG9sZVJvdyB8
fCBmaWVsZHMud2hvbGVDb2wpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2
c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIgbm9uLXNjYWxhciBmaWVsZHMgbm90IGltcGxlbWVu
dGVkIHlldCIsICIuIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygy
KSAtICgzKV0pLCAiIG5vbi1zY2FsYXIgZmllbGRzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiLCAiLiIp
OwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICBD
b25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAg
ICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KDApOwotICAgICAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1
bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERp
cmVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4LCAo
eXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBl
ZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDMpIC0g
KDMpXSkpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4LCAoeXlsc3BbKDIpIC0gKDMp
XSkpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0
VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRQcmVjaXNpb24oKSxFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRV
bmlvblsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoZmllbGRzLmNv
bCAqICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFs
U2l6ZSgpICsgZmllbGRzLnJvdyk7Ci0gICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRl
eCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMykgLSAoMyldLmxl
eCkubGluZSk7Ci0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eXZzcFsoMikgLSAo
MyldLmxleCkubGluZSk7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVi
dEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMykgLSAoMyldKSk7CisgICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwg
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFByZWNpc2lvbigp
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgewog
ICAgICAgICAgICAgYm9vbCBmaWVsZEZvdW5kID0gZmFsc2U7Ci0gICAgICAgICAgICBjb25zdCBU
VHlwZUxpc3QqIGZpZWxkcyA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgICAgICAgICBpZiAoZmllbGRzID09IDAp
IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUsICJzdHJ1Y3R1cmUgaGFzIG5vIGZpZWxkcyIsICJJbnRlcm5hbCBFcnJvciIpOwotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IGk7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGZpZWxkcy0+c2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCgqZmllbGRzKVtpXS50eXBlLT5nZXRG
aWVsZE5hbWUoKSA9PSAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZpZWxkRm91bmQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnN0IFRGaWVs
ZExpc3QmIGZpZWxkcyA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPmZpZWxkcygpOworICAgICAgICAgICAgdW5zaWduZWQg
aW50IGk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICAgICAgaWYgKGZpZWxkc1tpXS0+bmFtZSgpID09ICooeXl2c3BbKDMpIC0g
KDMpXS5sZXgpLnN0cmluZykgeworICAgICAgICAgICAgICAgICAgICBmaWVsZEZvdW5kID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxp
ZmllcigpID09IEV2cUNvbnN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdFN0cnVjdCgqKHl5dnNwWygz
KSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKCooKmZpZWxkcylb
aV0udHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFs
aWZpZXIgb2YgdGhlIHJldHVybiB0eXBlLCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBmaWVsZAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBp
cyBzaGFyZWQgYmV0d2VlbiB2YXJpb3VzIHN0cnVjdHVyZXMuCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigp
LT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3Rh
bnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksICooKmZpZWxkcylbaV0udHlwZSwgKHl5dnNwWygzKSAtICgz
KV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERp
cmVjdFN0cnVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGlu
ZGV4LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKCooKmZpZWxkcylbaV0u
dHlwZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZmllbGRGb3VuZCkgeworICAg
ICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CisgICAgICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0
U3RydWN0KCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoKmZpZWxkc1tpXS0+dHlwZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZSB0aGUgcXVhbGlmaWVyIG9mIHRoZSByZXR1cm4g
dHlwZSwgbm90IG9mIHRoZSBzdHJ1Y3R1cmUgZmllbGQKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGFzIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyBzaGFyZWQgYmV0d2VlbiB2YXJpb3Vz
IHN0cnVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFDb25zdCk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIg
bm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1cmUiLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmlu
Zy0+Y19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CisgICAgICAgICAgICAgICAgICAg
IENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKKyAgICAg
ICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkpOworICAgICAgICAgICAgICAg
ICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgKmZpZWxkc1tpXS0+dHlwZSgpLCAoeXlsc3BbKDMpIC0gKDMp
XSkpOworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5bHNwWygy
KSAtICgzKV0pKTsKKyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbKDIpIC0gKDMpXSksICIgbm8gc3VjaCBmaWVsZCBpbiBzdHJ1Y3R1cmUiLCAoeXl2c3BbKDMp
IC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lLCAiIGZpZWxkIHNlbGVjdGlvbiByZXF1aXJlcyBzdHJ1Y3R1
cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRlIiwgKHl5dnNwWygzKSAtICgz
KV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
bHNwWygyKSAtICgzKV0pLCAiIGZpZWxkIHNlbGVjdGlvbiByZXF1aXJlcyBzdHJ1Y3R1cmUsIHZl
Y3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRlIiwgKHl5dnNwWygzKSAtICgzKV0ubGV4
KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KQEAgLTI0NDAsMzUgKzI0MjMs
MzUgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEyOgorICBjYXNl
IDE0OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2
c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICIrKyIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2so
KHl5bHNwWygyKSAtICgyKV0pLCAiKysiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRV
bmFyeU1hdGgoRU9wUG9zdEluY3JlbWVudCwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9s
VGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RJbmNyZW1lbnQsICh5eXZzcFsoMSkg
LSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDIpXSksIGNvbnRl
eHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5dnNwWygy
KSAtICgyKV0ubGV4KS5saW5lLCAiKysiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51
bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiKysiLCAoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAg
ICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzoKKyAgY2FzZSAxNToKIAog
ICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAt
ICgyKV0ubGV4KS5saW5lLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFso
MikgLSAoMildKSwgIi0tIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRo
KEVPcFBvc3REZWNyZW1lbnQsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0RGVjcmVtZW50LCAoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgyKV0pLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0g
MCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMild
LmxleCkubGluZSwgIi0tIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVy
cm9yKCh5eWxzcFsoMikgLSAoMildKSwgIi0tIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0K
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ6CisgIGNhc2UgMTY6CiAKICAgICB7CiAg
ICAgICAgIGlmIChjb250ZXh0LT5pbnRlZ2VyRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgIltdIikpCkBAIC0yNDc3LDcgKzI0NjAsNyBAQCB5eXJl
ZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTU6CisgIGNhc2UgMTc6CiAKICAg
ICB7CiAgICAgICAgIFRGdW5jdGlvbiogZm5DYWxsID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
KS5mdW5jdGlvbjsKQEAgLTI0OTEsMTggKzI0NzQsMTggQEAgeXlyZWR1Y2U6CiAgICAgICAgICAg
ICAvLyBUaGVpciBwYXJhbWV0ZXJzIHdpbGwgYmUgdmVyaWZpZWQgYWxnb3JpdGhtaWNhbGx5Lgog
ICAgICAgICAgICAgLy8KICAgICAgICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZp
bmVkKTsgIC8vIHVzZSB0aGlzIHRvIGdldCB0aGUgdHlwZSBiYWNrCi0gICAgICAgICAgICBpZiAo
Y29udGV4dC0+Y29uc3RydWN0b3JFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSku
bGluZSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAqZm5DYWxsLCBvcCwg
JnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Y29uc3RydWN0b3JFcnJvckNoZWNr
KCh5eWxzcFsoMSkgLSAoMSldKSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2Rl
LCAqZm5DYWxsLCBvcCwgJnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgLy8KICAgICAgICAgICAgICAgICAvLyBJdCdzIGEgY29uc3RydWN0b3IsIG9mIHR5cGUgJ3R5
cGUnLgogICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RydWN0b3IoKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAmdHlwZSwgb3AsIGZuQ2FsbCwgKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0pLmludGVybU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID09IDApIHsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKDAsIG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwg
KHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSh0eXBlKTsKICAgICAgICAgfSBlbHNlIHsK
QEAgLTI1MTEsMTMgKzI0OTQsMTMgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAvLwogICAgICAg
ICAgICAgY29uc3QgVEZ1bmN0aW9uKiBmbkNhbmRpZGF0ZTsKICAgICAgICAgICAgIGJvb2wgYnVp
bHRJbjsKLSAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKCh5
eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgZm5DYWxsLCAmYnVpbHRJbik7CisgICAgICAg
ICAgICBmbkNhbmRpZGF0ZSA9IGNvbnRleHQtPmZpbmRGdW5jdGlvbigoeXlsc3BbKDEpIC0gKDEp
XSksIGZuQ2FsbCwgJmJ1aWx0SW4pOwogICAgICAgICAgICAgaWYgKGZuQ2FuZGlkYXRlKSB7CiAg
ICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAvLyBBIGRlY2xhcmVkIGZ1bmN0aW9u
LgogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKGJ1aWx0SW4gJiYgIWZu
Q2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKS5lbXB0eSgpICYmCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPmV4dGVuc2lvbkVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5s
aW5lLCBmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPmV4dGVuc2lvbkVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBmbkNhbmRp
ZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3AgPSBmbkNhbmRp
ZGF0ZS0+Z2V0QnVpbHRJbk9wKCk7CkBAIC0yNTI5LDcgKzI1MTIsNyBAQCB5eXJlZHVjZToKICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmVh
dCBpdCBsaWtlIGEgYnVpbHQtaW4gdW5hcnkgb3BlcmF0b3IuCiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChvcCwgKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAwLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0pLmludGVybU5vZGUsICh5eWxzcFsoMSkgLSAoMSldKSwgY29udGV4dC0+c3ltYm9sVGFi
bGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9PSAwKSAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
c3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRy
YUluZm9TdHJlYW0gPDwgImJ1aWx0IGluIHVuYXJ5IG9wZXJhdG9yIGZ1bmN0aW9uLiAgVHlwZTog
IiA8PCBzdGF0aWNfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0p
LmludGVybU5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpOwpAQCAtMjUzOCwxMiArMjUyMSwxMiBA
QCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZWUVSUk9SOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybSkuaW50ZXJtQWdncmVnYXRlLCBvcCwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5l
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgb3AsICh5eWxzcFsoMSkgLSAoMSldKSk7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgcmVhbCBmdW5jdGlvbiBjYWxsCiAKLSAgICAgICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSku
aW50ZXJtQWdncmVnYXRlLCBFT3BGdW5jdGlvbkNhbGwsICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bSkubGluZSk7CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgRU9wRnVuY3Rpb25DYWxsLCAoeXls
c3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPnNldFR5cGUoZm5DYW5kaWRhdGUtPmdldFJldHVyblR5cGUoKSk7CiAKICAg
ICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBob3cgd2Uga25vdyB3aGV0aGVyIHRoZSBnaXZl
biBmdW5jdGlvbiBpcyBhIGJ1aWx0SW4gZnVuY3Rpb24gb3IgYSB1c2VyIGRlZmluZWQgZnVuY3Rp
b24KQEAgLTI1NzAsNyArMjU1Myw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgIC8vIFB1
dCBvbiBhIGR1bW15IG5vZGUgZm9yIGVycm9yIHJlY292ZXJ5CiAgICAgICAgICAgICAgICAgQ29u
c3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAg
ICAgICAgIHVuaW9uQXJyYXktPnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxQ29uc3QpLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjU3OCwzOSArMjU2MSwz
NyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY6CisgIGNhc2Ug
MTg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc6CisgIGNhc2UgMTk6CiAK
ICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMykgLSAoMyldLmludGVybSku
bGluZSwgIm1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQiLCAiIik7CisgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFsoMykgLSAoMyldKSwgIm1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQiLCAi
Iik7CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5dmFsLmludGVybSkg
PSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxODoKKyAgY2FzZSAyMDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2
c3BbKDEpIC0gKDIpXS5pbnRlcm0pOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5
dnNwWygyKSAtICgyKV0ubGV4KS5saW5lOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
OToKKyAgY2FzZSAyMToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3Bb
KDEpIC0gKDIpXS5pbnRlcm0pOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNw
WygyKSAtICgyKV0ubGV4KS5saW5lOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDoK
KyAgY2FzZSAyMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24gPSAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwpAQCAtMjYxOCw3ICsyNTk5LDcgQEAg
eXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDIxOgorICBjYXNlIDIzOgog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5mdW5jdGlvbik7CkBAIC0yNjI2LDcgKzI2MDcsNyBAQCB5eXJlZHVjZToKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjI6CisgIGNhc2UgMjQ6CiAKICAgICB7CiAgICAg
ICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpKSB9OwpAQCAtMjYzNiwyNCArMjYxNywy
NCBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjM6CisgIGNhc2Ug
MjU6CiAKICAgICB7CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpKSB9Owog
ICAgICAgICAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uLT5hZGRQYXJhbWV0ZXIo
cGFyYW0pOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAo
MyldLmludGVybSkuZnVuY3Rpb247Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybU5vZGUg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0pLmludGVybU5vZGUsICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJt
KS5pbnRlcm1Ob2RlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgMjQ6CisgIGNhc2UgMjY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uZnVuY3Rpb24pID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKTsKICAgICA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjU6CisgIGNhc2UgMjc6CiAKICAgICB7CiAgICAgICAg
IC8vCkBAIC0yNjY3LDM5ICsyNjQ4LDM5IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY2FzZSBF
YnRGbG9hdDoKICAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5
cGUpLm1hdHJpeCkgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2goKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpLnNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDI7ICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDM7ICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSA0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9
IEVPcENvbnN0cnVjdE1hdDQ7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiBv
cCA9IEVPcENvbnN0cnVjdE1hdDI7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAz
OiBvcCA9IEVPcENvbnN0cnVjdE1hdDM7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA0OiBvcCA9IEVPcENvbnN0cnVjdE1hdDQ7ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCgo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2l6ZSkgewotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0RmxvYXQ7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjMjsgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjMzsgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9w
Q29uc3RydWN0VmVjNDsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0g
RU9wQ29uc3RydWN0RmxvYXQ7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IG9w
ID0gRU9wQ29uc3RydWN0VmVjMjsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6
IG9wID0gRU9wQ29uc3RydWN0VmVjMzsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDQ6IG9wID0gRU9wQ29uc3RydWN0VmVjNDsgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBFYnRJbnQ6CiAgICAgICAgICAgICAgICAgc3dpdGNoKCh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS50eXBlKS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RJbnQ7ICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiaXZlYzIiLCAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0SVZl
YzI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgRlJBR19WRVJUX09OTFko
Iml2ZWMzIiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENv
bnN0cnVjdElWZWMzOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgIEZSQUdf
VkVSVF9PTkxZKCJpdmVjNCIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsg
b3AgPSBFT3BDb25zdHJ1Y3RJVmVjNDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOiBv
cCA9IEVPcENvbnN0cnVjdEludDsgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6IG9w
ID0gRU9wQ29uc3RydWN0SVZlYzI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzogb3Ag
PSBFT3BDb25zdHJ1Y3RJVmVjMzsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9
IEVPcENvbnN0cnVjdElWZWM0OyBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEVidEJvb2w6CiAgICAgICAgICAgICAgICAg
c3dpdGNoKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5zaXplKSB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Ag
PSBFT3BDb25zdHJ1Y3RCb29sOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiAgICAg
ICBGUkFHX1ZFUlRfT05MWSgiYnZlYzIiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSku
bGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgMzogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWMzIiwgKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWMzOyBicmVhazsKLSAgICAgICAg
ICAgICAgICBjYXNlIDQ6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjNCIsICh5eXZzcFsoMSkg
LSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RCVmVjNDsgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEJvb2w7ICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0QlZlYzI7IGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMzsgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdEJWZWM0OyBicmVhazsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZh
dWx0OiBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChvcCA9PSBFT3BOdWxs
KSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLnR5cGUpLmxpbmUsICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3Ry
aW5nKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBlKSk7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiY2Fubm90IGNvbnN0cnVjdCB0
aGlzIHR5cGUiLCBnZXRCYXNpY1N0cmluZygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSku
dHlwZSkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
ICAgICAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSA9IEVidEZsb2F0OwogICAg
ICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7CkBAIC0yNzEyLDIxICsyNjkzLDEw
IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNjoKLQotICAgIHsK
LSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLmxpbmUsICooeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZykpCi0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5k
ZWZpbmVkKTsKLSAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcsIHR5cGUpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
LmZ1bmN0aW9uKSA9IGZ1bmN0aW9uOwotICAgIDt9Ci0gICAgYnJlYWs7Ci0KLSAgY2FzZSAyNzoK
KyAgY2FzZSAyODoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JD
aGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICooeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNw
WygxKSAtICgxKV0pLCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVu
ZGVmaW5lZCk7CiAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCh5
eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nLCB0eXBlKTsKQEAgLTI3MzQsNDYgKzI3MDQsNDYg
QEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDI4OgorICBjYXNlIDI5
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgMjk6CisgIGNhc2UgMzA6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5sVmFsdWVFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIisrIiwgKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29u
dGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDIpXSksICIrKyIsICh5eXZzcFso
MikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVJbmNyZW1lbnQsICh5eXZzcFso
MikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgp
LmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVJ
bmNyZW1lbnQsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXls
c3BbKDEpIC0gKDIpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51
bmFyeU9wRXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAiKysiLCAoeXl2c3BbKDIp
IC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiKysi
LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAzMDoKKyAgY2FzZSAzMToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVy
cm9yQ2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAiLS0iLCAoeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFs
dWVFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMildKSwgIi0tIiwgKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFByZURlY3JlbWVudCwgKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgY29u
dGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFByZURlY3JlbWVudCwg
KHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMSkgLSAo
MildKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJv
cigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFsoMikgLSAoMildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDEpIC0gKDIpXSksICItLSIsICh5eXZzcFso
MikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDMxOgorICBj
YXNlIDMyOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5v
cCAhPSBFT3BOdWxsKSB7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCh5eXZzcFsoMSkgLSAoMild
LmludGVybSkub3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRVbmFyeU1hdGgoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5vcCwgKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMSkgLSAoMildKSwg
Y29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXJyb3JP
cCA9ICIiOwogICAgICAgICAgICAgICAgIHN3aXRjaCgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0p
Lm9wKSB7CkBAIC0yNzgxLDcgKzI3NTEsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICBj
YXNlIEVPcExvZ2ljYWxOb3Q6IGVycm9yT3AgPSAiISI7IGJyZWFrOwogICAgICAgICAgICAgICAg
IGRlZmF1bHQ6IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjb250
ZXh0LT51bmFyeU9wRXJyb3IoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5saW5lLCBlcnJvck9w
LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFso
MSkgLSAoMildKSwgZXJyb3JPcCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgICAg
IH0KQEAgLTI3OTAsMTg1ICsyNzYwLDE3OCBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgMzI6Ci0KLSAgICB7ICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEp
IC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTnVsbDsgO30KLSAgICBi
cmVhazsKLQogICBjYXNlIDMzOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE5lZ2F0aXZlOyA7
fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BOdWxsOyA7fQogICAgIGJyZWFrOwogCiAg
IGNhc2UgMzQ6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTG9naWNhbE5vdDsgO30KKyAgICB7
ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTmVnYXRpdmU7IDt9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAzNToKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJt
KS5vcCA9IEVPcExvZ2ljYWxOb3Q7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAzNjoKIAorICAg
IHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAzNzoKKwogICAg
IHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIioiLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxp
bmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BNdWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE11bCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYg
KCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIioiLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIp
IC0gKDMpXSksICIqIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDM3OgorICBjYXNlIDM4OgogCiAgICAgewotICAgICAgICBG
UkFHX1ZFUlRfT05MWSgiLyIsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcERpdiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJp
bmFyeU1hdGgoRU9wRGl2LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikg
LSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiLyIsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIi8i
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMzg6CisgIGNhc2UgMzk6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMzk6CisgIGNhc2UgNDA6CiAKICAgICB7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
aW5hcnlNYXRoKEVPcEFkZCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIp
IC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFy
eU1hdGgoRU9wQWRkLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAo
MyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJy
b3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiKyIsICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIisiLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgNDA6CisgIGNhc2UgNDE6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcFN1
YiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxp
bmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wU3ViLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAt
ICgzKV0ubGV4KS5saW5lLCAiLSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIi0iLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDE6CisgIGNh
c2UgNDI6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgNDI6CisgIGNhc2UgNDM6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgNDM6CisgIGNhc2UgNDQ6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcExlc3NUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BMZXNzVGhhbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIp
IC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlP
cEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIjwiLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwor
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICI8
IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsK
ICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29u
c3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDQ0OgorICBjYXNlIDQ1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChF
T3BHcmVhdGVyVGhhbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1h
dGgoRU9wR3JlYXRlclRoYW4sICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygy
KSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5
T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICI+IiwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAi
PiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07
CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNv
bnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA0NToKKyAgY2FzZSA0NjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wTGVzc1RoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIp
IC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFy
eU1hdGgoRU9wTGVzc1RoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXls
c3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5i
aW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIjw9IiwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgz
KV0pLCAiPD0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVu
aW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgNDY6CisgIGNhc2UgNDc6CiAKICAgICB7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5h
cnlNYXRoKEVPcEdyZWF0ZXJUaGFuRXF1YWwsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuRXF1YWwsICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAg
ICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAg
ICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICI+
PSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5
eWxzcFsoMikgLSAoMyldKSwgIj49IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBu
ZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChm
YWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5l
KTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDQ3OgorICBjYXNlIDQ4OgogCiAgICAgeyAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDQ4OgorICBjYXNlIDQ5
OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BFcXVhbCwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRXF1YWwsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAg
ICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUs
ICI9PSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9y
KCh5eWxzcFsoMikgLSAoMyldKSwgIj09IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25z
dChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5s
aW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAg
ICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDQ5OgorICBjYXNlIDUwOgogCiAgICAg
ewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BOb3RFcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTm90RXF1YWwsICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAg
ICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAg
ICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIh
PSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5
eWxzcFsoMikgLSAoMyldKSwgIiE9IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBu
ZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChm
YWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5l
KTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDUwOgotCi0gICAgeyAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsgO30KLSAgICBicmVhazsKLQogICBjYXNlIDUxOgogCiAgICAgeyAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsgO30KQEAgLTI5ODYsMTQzICsyOTQ5LDE0OCBAQCB5eXJlZHVjZToKIAogICBjYXNlIDU0
OgogCisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICBicmVhazsKKworICBjYXNlIDU1
OgorCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5kLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsQW5kLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9s
VGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDAp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0u
bGV4KS5saW5lLCAiJiYiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+Ymlu
YXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICImJiIsICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1
bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5
LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAo
MyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0p
KTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1NToKKyAgY2FzZSA1
NjoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1
NjoKKyAgY2FzZSA1NzoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbFhv
ciwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxp
bmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNh
bFhvciwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZz
cFsoMikgLSAoMyldLmxleCkubGluZSwgIl5eIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiXl4iLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwg
KHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3Ry
aW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29u
c3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAg
ICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAo
eXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxz
cFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
NTc6CisgIGNhc2UgNTg6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgNTg6CisgIGNhc2UgNTk6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRo
KEVPcExvZ2ljYWxPciwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1h
dGgoRU9wTG9naWNhbE9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikg
LSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAifHwiLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwor
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJ8
fCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07
CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNv
bnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA1OToKKyAgY2FzZSA2MDoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2MDoKKyAgY2FzZSA2MToKIAogICAgIHsKLSAgICAgICBp
ZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lLCAo
eXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCisgICAgICAgaWYgKGNv
bnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogCi0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg1
KV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDEpIC0gKDUpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3Bb
KDIpIC0gKDUpXSkpOwogICAgICAgICBpZiAoKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldFR5cGUoKSAhPSAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0VHlwZSgpKQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gMDsKIAogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygy
KSAtICg1KV0ubGV4KS5saW5lLCAiOiIsICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoNSldKSwgIjoiLCAoeXl2c3BbKDMpIC0g
KDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNw
Wyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjE6Cisg
IGNhc2UgNjI6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgNjI6CisgIGNhc2UgNjM6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFs
dWVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMyldLmludGVybSkubGluZSwgImFzc2lnbiIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgzKV0pLCAiYXNzaWduIiwgKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWduKCh5eXZzcFsoMikgLSAoMyldLmludGVy
bSkub3AsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0uaW50
ZXJtKS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEFzc2lnbigoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0pLm9w
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAg
ICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAg
ICAgY29udGV4dC0+YXNzaWduRXJyb3IoKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtKS5saW5lLCAi
YXNzaWduIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmFzc2lnbkVycm9y
KCh5eWxzcFsoMikgLSAoMyldKSwgImFzc2lnbiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAg
ICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2MzoKLQotICAgIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFzc2lnbjsgO30K
LSAgICBicmVhazsKLQogICBjYXNlIDY0OgogCi0gICAgeyBGUkFHX1ZFUlRfT05MWSgiKj0iLCAo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOyAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BNdWxBc3Np
Z247IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFzc2lnbjsgO30KICAgICBicmVh
azsKIAogICBjYXNlIDY1OgogCi0gICAgeyBGUkFHX1ZFUlRfT05MWSgiLz0iLCAoeXl2c3BbKDEp
IC0gKDEpXS5sZXgpLmxpbmUpOyAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BEaXZBc3NpZ247IDt9Cisg
ICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE11bEFzc2lnbjsgO30KICAgICBicmVhazsKIAog
ICBjYXNlIDY2OgogCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5p
bnRlcm0pLm9wID0gRU9wQWRkQXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBF
T3BEaXZBc3NpZ247IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2NzoKIAotICAgIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcFN1YkFzc2lnbjsg
O30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQWRkQXNzaWduOyA7fQogICAgIGJyZWFr
OwogCiAgIGNhc2UgNjg6CiAKLSAgICB7CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcFN1
YkFzc2lnbjsgO30KKyAgICBicmVhazsKKworICBjYXNlIDY5OgorCisgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjk6CisgIGNh
c2UgNzA6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb21tYSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb21tYSgoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIGlmICgo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIsIiwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAt
ICgzKV0pLCAiLCIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA3MDoKKyAgY2FzZSA3MToKIAogICAgIHsKICAgICAgICAgaWYg
KGNvbnRleHQtPmNvbnN0RXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSkpCkBAIC0zMTMxLDcgKzMwOTksNyBAQCB5eXJlZHVjZToKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgNzE6CisgIGNhc2UgNzI6CiAKICAgICB7CiAgICAgICAgIFRGdW5j
dGlvbiAmZnVuY3Rpb24gPSAqKCh5eXZzcFsoMSkgLSAoMildLmludGVybSkuZnVuY3Rpb24pOwpA
QCAtMzE0NSwxMyArMzExMywxMyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIGNvbnN0IFRQYXJh
bWV0ZXIgJnBhcmFtID0gZnVuY3Rpb24uZ2V0UGFyYW0oaSk7CiAgICAgICAgICAgICBpZiAocGFy
YW0ubmFtZSAhPSAwKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFRWYXJpYWJsZSAq
dmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJhbS50eXBlKTsKKyAgICAg
ICAgICAgICAgICBUVmFyaWFibGUgdmFyaWFibGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOwog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwgdmFyaWFibGUtPmdldE5hbWUoKSwg
dmFyaWFibGUtPmdldFR5cGUoKSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5saW5lKSwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUuZ2V0VW5pcXVlSWQoKSwgdmFyaWFibGUu
Z2V0TmFtZSgpLCB2YXJpYWJsZS5nZXRUeXBlKCksICh5eWxzcFsoMSkgLSAoMildKSksICh5eWxz
cFsoMSkgLSAoMildKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KDAsICIiLCAqcGFyYW0udHlwZSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5saW5lKSwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAoeXlsc3BbKDEpIC0g
KDIpXSkpLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIApAQCAtMzE2Miw3ICszMTMwLDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDcyOgorICBjYXNlIDczOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUpCkBAIC0zMTcxLDIyICszMTM5LDIy
IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3MzoKKyAgY2FzZSA3
NDoKIAogICAgIHsKICAgICAgICAgaWYgKCgoeXl2c3BbKDIpIC0gKDQpXS5pbnRlcm0ucHJlY2lz
aW9uKSA9PSBFYnBIaWdoKSAmJiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9T
SEFERVIpICYmICFjb250ZXh0LT5mcmFnbWVudFByZWNpc2lvbkhpZ2gpIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoNCldLmxleCkubGluZSwgInByZWNpc2lvbiBp
cyBub3Qgc3VwcG9ydGVkIGluIGZyYWdtZW50IHNoYWRlciIsICJoaWdocCIpOworICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICg0KV0pLCAicHJlY2lzaW9uIGlzIG5vdCBz
dXBwb3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVyIiwgImhpZ2hwIik7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFjb250ZXh0LT5zeW1ib2xU
YWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0udHlwZSks
ICh5eXZzcFsoMikgLSAoNCldLmludGVybS5wcmVjaXNpb24pICkpIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoNCldLmxleCkubGluZSwgImlsbGVnYWwgdHlwZSBh
cmd1bWVudCBmb3IgZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmco
KHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLnR5cGUpLnR5cGUpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoNCldKSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBmb3Ig
ZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoKHl5dnNwWygzKSAt
ICg0KV0uaW50ZXJtLnR5cGUpLnR5cGUpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzQ6CisgIGNhc2UgNzU6CiAKICAgICB7CiAgICAg
ICAgIC8vCkBAIC0zMjAwLDI0ICszMTY4LDQxIEBAIHl5cmVkdWNlOgogICAgICAgICBURnVuY3Rp
b24qIHByZXZEZWMgPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24qPihjb250ZXh0LT5zeW1ib2xUYWJs
ZS5maW5kKCh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbiktPmdldE1hbmdsZWROYW1l
KCkpKTsKICAgICAgICAgaWYgKHByZXZEZWMpIHsKICAgICAgICAgICAgIGlmIChwcmV2RGVjLT5n
ZXRSZXR1cm5UeXBlKCkgIT0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0
UmV0dXJuVHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygy
KSAtICgyKV0ubGV4KS5saW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBz
YW1lIHJldHVybiB0eXBlIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0
UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2
ZSB0aGUgc2FtZSByZXR1cm4gdHlwZSIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlv
biktPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHByZXZEZWMtPmdldFBhcmFtQ291bnQoKTsgKytpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKHByZXZEZWMtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllcigpICE9ICh5
eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbiktPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1
YWxpZmllcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MikgLSAoMildLmxleCkubGluZSwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUg
c2FtZSBwYXJhbWV0ZXIgcXVhbGlmaWVycyIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5j
dGlvbiktPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllclN0cmluZygpKTsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAib3ZlcmxvYWRl
ZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgKHl5
dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVh
bGlmaWVyU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAg
Ly8KKyAgICAgICAgLy8gQ2hlY2sgZm9yIHByZXZpb3VzbHkgZGVjbGFyZWQgdmFyaWFibGVzIHVz
aW5nIHRoZSBzYW1lIG5hbWUuCisgICAgICAgIC8vCisgICAgICAgIFRTeW1ib2wgKnByZXZTeW0g
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5maW5kKCh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5j
dGlvbiktPmdldE5hbWUoKSk7CisgICAgICAgIGlmIChwcmV2U3ltKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIXByZXZTeW0tPmlzRnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJyZWRlZmluaXRp
b24iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXROYW1lKCkuY19zdHIo
KSwgImZ1bmN0aW9uIik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg
ICAgLy8gSW5zZXJ0IHRoZSB1bm1hbmdsZWQgbmFtZSB0byBkZXRlY3QgcG90ZW50aWFsIGZ1dHVy
ZSByZWRlZmluaXRpb24gYXMgYSB2YXJpYWJsZS4KKyAgICAgICAgICAgIGNvbnRleHQtPnN5bWJv
bFRhYmxlLmdldE91dGVyTGV2ZWwoKS0+aW5zZXJ0KCh5eXZzcFsoMSkgLSAoMildLmludGVybS5m
dW5jdGlvbiktPmdldE5hbWUoKSwgKih5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbikp
OworICAgICAgICB9CisKKyAgICAgICAgLy8KICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHJlZGVj
bGFyYXRpb24sIGl0IGNvdWxkIGFsc28gYmUgYSBkZWZpbml0aW9uLAogICAgICAgICAvLyBpbiB3
aGljaCBjYXNlLCB3ZSB3YW50IHRvIHVzZSB0aGUgdmFyaWFibGUgbmFtZXMgZnJvbSB0aGlzIG9u
ZSwgYW5kIG5vdCB0aGUgb25lIHRoYXQncwogICAgICAgICAvLyBiZWluZyByZWRlY2xhcmVkLiAg
U28sIHBhc3MgYmFjayB1cCB0aGlzIGRlY2xhcmF0aW9uLCBub3QgdGhlIG9uZSBpbiB0aGUgc3lt
Ym9sIHRhYmxlLgogICAgICAgICAvLwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9
ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbik7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAKICAgICAgICAgLy8gV2Un
cmUgYXQgdGhlIGlubmVyIHNjb3BlIGxldmVsIG9mIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cyBh
bmQgYm9keSBzdGF0ZW1lbnQuCiAgICAgICAgIC8vIEFkZCB0aGUgZnVuY3Rpb24gcHJvdG90eXBl
IHRvIHRoZSBzdXJyb3VuZGluZyBzY29wZSBpbnN0ZWFkLgpAQCAtMzIyNSwyMSArMzIxMCwyMSBA
QCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzU6CisgIGNhc2UgNzY6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzY6
CisgIGNhc2UgNzc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsKICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgNzc6CisgIGNhc2UgNzg6CiAKICAgICB7CiAgICAgICAgIC8vIEFkZCB0aGUgcGFy
YW1ldGVyCkBAIC0zMjUxLDcgKzMyMzYsNyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgNzg6CisgIGNhc2UgNzk6CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC0zMjYy
LDcgKzMyNDcsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBU
aGlzIHBhcmFtZXRlciA+IGZpcnN0IGlzIHZvaWQKICAgICAgICAgICAgIC8vCi0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJjYW5ub3QgYmUg
YW4gYXJndW1lbnQgdHlwZSBleGNlcHQgZm9yICcodm9pZCknIiwgInZvaWQiKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgImNhbm5vdCBiZSBhbiBhcmd1
bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSciLCAidm9pZCIpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgZGVsZXRlICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybSkucGFyYW0udHlwZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTMyNzMsMTUgKzMyNTgsMTUg
QEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDc5OgorICBjYXNlIDgw
OgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1
YWxpZmllciAhPSBFdnFHbG9iYWwgJiYgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1
YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIm5vIHF1YWxpZmllcnMgYWxsb3dlZCBmb3IgZnVu
Y3Rpb24gcmV0dXJuIiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bS50eXBlKS5xdWFsaWZpZXIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFso
MikgLSAoMyldKSwgIm5vIHF1YWxpZmllcnMgYWxsb3dlZCBmb3IgZnVuY3Rpb24gcmV0dXJuIiwg
Z2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5xdWFsaWZp
ZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAg
ICAvLyBtYWtlIHN1cmUgYSBzYW1wbGVyIGlzIG5vdCBpbnZvbHZlZCBhcyB3ZWxsLi4uCi0gICAg
ICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAo
MyldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAg
aWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgzKV0p
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogCiAgICAgICAgIC8vIEFkZCB0aGUgZnVuY3Rpb24gYXMgYSBwcm90b3R5cGUg
YWZ0ZXIgcGFyc2luZyBpdCAod2UgZG8gbm90IHN1cHBvcnQgcmVjdXJzaW9uKQpAQCAtMzI5NCwx
MTIgKzMyNzksMTEwIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4
MDoKKyAgY2FzZSA4MToKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS50eXBlKS50eXBlID09IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgImlsbGVnYWwgdXNlIG9mIHR5cGUgJ3ZvaWQn
IiwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAn
dm9pZCciLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnRleHQt
PnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICooeXl2c3Bb
KDIpIC0gKDIpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVy
cm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJp
bmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBUUGFyYW1ldGVy
IHBhcmFtID0geyh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBuZXcgVFR5cGUoKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLnR5cGUpKX07Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUg
PSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnBh
cmFtID0gcGFyYW07CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDgxOgorICBjYXNlIDgy
OgogCiAgICAgewogICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBtYWtlIGFuIGFycmF5IG91
dCBvZiB0aGlzIHR5cGUKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2so
KHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlw
ZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDMp
IC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JD
aGVjaygoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgp
LnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNw
WygyKSAtICg1KV0pLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAo
Y29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUs
ICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAo
eXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICh5eXZzcFsoMSkgLSAoNSldLmludGVy
bS50eXBlKS5zZXRBcnJheSh0cnVlLCBzaXplKTsKIAogICAgICAgICBUVHlwZSogdHlwZSA9IG5l
dyBUVHlwZSgoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpOwogICAgICAgICBUUGFyYW1l
dGVyIHBhcmFtID0geyAoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgdHlwZSB9OwotICAg
ICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lOwog
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5wYXJhbSA9IHBhcmFtOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA4MjoKKyAgY2FzZSA4MzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bSkgPSAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pOwotICAgICAgICBpZiAoY29udGV4dC0+cGFy
YW1FcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybSkubGluZSwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnF1
YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4
dC0+cGFyYW1FcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwgKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLnF1YWxpZmll
ciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4MzoKKyAgY2FzZSA4NDoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0p
OwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlm
aWVyKSwgKih5eXZzcFsoMikgLSAoMildLmludGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSks
ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAqKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5pbnRl
cm0pLmxpbmUsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmll
ciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFy
YW1FcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDg0OgorICBjYXNlIDg1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5
eXZzcFsoMykgLSAoMyldLmludGVybSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9y
Q2hlY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0ucXVhbGlmaWVy
KSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJh
bUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
dHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5
dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDg1OgorICBjYXNlIDg2OgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybSk7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0pLmxpbmUsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAq
KHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0p
LnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBp
ZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmludGVybSkubGlu
ZSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5
dmFsLmludGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9y
Q2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoMild
LmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODY6
CisgIGNhc2UgODc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9
IEV2cUluOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4NzoKKyAgY2FzZSA4ODoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW47CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDg4OgorICBjYXNlIDg5OgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFPdXQ7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDg5OgorICBjYXNlIDkwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnF1
YWxpZmllcikgPSBFdnFJbk91dDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTA6Cisg
IGNhc2UgOTE6CiAKICAgICB7CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBU
VHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkpIH07CkBAIC0zNDA3LDEwNCArMzM5
MCwxMDQgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDkxOgorICBj
YXNlIDkyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDkyOgorICBjYXNlIDkz
OgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS50eXBlLnR5
cGUgPT0gRWJ0SW52YXJpYW50ICYmICEoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN5bWJvbCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygzKSAtICgzKV0ubGV4
KS5saW5lLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICh5
eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eWxzcFsoMykgLSAoMyldKSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNs
YXJlZCBhcyBpbnZhcmlhbnQiLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIo
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KDAsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtKS50eXBlKSwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAg
KHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdy
b3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBzeW1ib2ws
ICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5
bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMykgLSAo
MyldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLnR5cGUpLCAo
eXlsc3BbKDMpIC0gKDMpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdh
dGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0pLmludGVybU5vZGUsIHN5bWJvbCwgKHl5bHNwWygzKSAtICgzKV0pKTsKICAgICAg
ICAgCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZz
cFsoMykgLSAoMyldLmxleCkubGluZSwgKHl5dmFsLmludGVybSkudHlwZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoMyldKSwg
KHl5dmFsLmludGVybSkudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAK
LSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygzKSAt
ICgzKV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5p
bnRlcm0pLnR5cGUsIGZhbHNlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVy
cm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJp
bmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgaWYg
KGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSwg
Kih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCB2YXJp
YWJsZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXlsc3BbKDMp
IC0gKDMpXSksICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSku
dHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICBpZiAoc3ltYm9sICYmIHZhcmlhYmxlKQogICAgICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJp
YWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDkzOgor
ICBjYXNlIDk0OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVy
RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSld
LmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJv
ckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4
dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICoo
eXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50
eXBlLCB0cnVlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2so
KHl5bHNwWygzKSAtICg1KV0pLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgdHJ1ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0pOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eXZz
cFsoNCkgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSB8
fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWyg0KSAtICg1KV0ubGV4
KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDQpIC0gKDUpXSksICh5eXZzcFsoMSkg
LSAoNSldLmludGVybSkudHlwZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNr
KCh5eWxzcFsoNCkgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUuc2V0QXJyYXkodHJ1ZSk7CiAgICAgICAg
ICAgICBUVmFyaWFibGUqIHZhcmlhYmxlOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
RXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDUp
XS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkp
CisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAo
NSldKSwgKih5eXZzcFsoMykgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTQ6CisgIGNhc2Ug
OTU6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKCh5eXZzcFsoMykgLSAoNildLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJt
KS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
KHl5bHNwWygzKSAtICg2KV0pLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25J
bml0Q29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNildLmxleCkubGluZSwgKih5eXZzcFso
MykgLSAoNildLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHRy
dWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXlsc3Bb
KDMpIC0gKDYpXSksICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAt
ICg2KV0uaW50ZXJtKS50eXBlLCB0cnVlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKIAogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAoNildLmludGVybSk7
CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5dnNwWyg0KSAt
ICg2KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpIHx8IGNvbnRl
eHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUs
ICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVR5cGVFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKHl5dnNwWygxKSAtICg2KV0u
aW50ZXJtKS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNw
Wyg0KSAtICg2KV0pLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBz
aXplOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNw
Wyg0KSAtICg2KV0ubGV4KS5saW5lLCAoeXl2c3BbKDUpIC0gKDYpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgc2l6ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JD
aGVjaygoeXlsc3BbKDQpIC0gKDYpXSksICh5eXZzcFsoNSkgLSAoNildLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCBzaXplKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUuc2V0QXJyYXkodHJ1ZSwg
c2l6ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5dnNwWyg0KSAtICg2KV0ubGV4KS5saW5l
LCAqKHl5dnNwWygzKSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVy
bSkudHlwZSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JD
aGVjaygoeXlsc3BbKDQpIC0gKDYpXSksICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgVFR5cGUgdHlwZSA9IFRUeXBlKCh5
eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSk7CiAgICAgICAgICAgICB0eXBlLnNldEFycmF5
U2l6ZShzaXplKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoNildLmlu
dGVybSkuaW50ZXJtTm9kZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJs
ZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpIDogMCwgKih5eXZzcFsoMykgLSAoNildLmxleCku
c3RyaW5nLCB0eXBlLCAoeXl2c3BbKDMpIC0gKDYpXS5sZXgpLmxpbmUpLCAoeXl2c3BbKDMpIC0g
KDYpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICg2
KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZh
cmlhYmxlID8gdmFyaWFibGUtPmdldFVuaXF1ZUlkKCkgOiAwLCAqKHl5dnNwWygzKSAtICg2KV0u
bGV4KS5zdHJpbmcsIHR5cGUsICh5eWxzcFsoMykgLSAoNildKSksICh5eWxzcFsoMykgLSAoNild
KSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTU6CisgIGNhc2Ug
OTY6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJt
KS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
KHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0g
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKTsKIAogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJt
Tm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5dnNwWygz
KSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZz
cFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CisgICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0
ZUluaXRpYWxpemVyKCh5eWxzcFsoMykgLSAoNSldKSwgKih5eXZzcFsoMykgLSAoNSldLmxleCku
c3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsICh5eXZzcFsoNSkgLSAoNSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkgewogICAgICAgICAgICAgLy8K
ICAgICAgICAgICAgIC8vIGJ1aWxkIHRoZSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICBpZiAoaW50ZXJtTm9kZSkKLSAgICAgICAgKHl5dmFs
LmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dy
ZWdhdGUoKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBpbnRlcm1Ob2RlLCAo
eXl2c3BbKDQpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3Bb
KDEpIC0gKDUpXS5pbnRlcm0pLmludGVybU5vZGUsIGludGVybU5vZGUsICh5eWxzcFsoNCkgLSAo
NSldKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybSku
aW50ZXJtQWdncmVnYXRlID0gKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdh
dGU7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNTE0LDc3ICszNDk3LDc3IEBAIHl5cmVkdWNlOgog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NjoKKyAgY2FzZSA5NzoKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBl
KTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAiIiwgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpKSwgKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSku
bGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1i
b2woMCwgIiIsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKSksICh5eWxzcFso
MSkgLSAoMSldKSksICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDk3OgorICBjYXNlIDk4OgogCiAgICAgewotICAgICAgICBUSW50ZXJtU3ltYm9sKiBz
eW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpKSwg
KHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9s
LCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBz
eW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0g
KDIpXS5sZXgpLnN0cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpKSwg
KHl5bHNwWygyKSAtICgyKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3Bb
KDIpIC0gKDIpXSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAoeXl2YWwuaW50ZXJt
KS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
KHl5bHNwWygyKSAtICgyKV0pLCAoeXl2YWwuaW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJy
b3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDIpXS5s
ZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQorICAgICAgICBpZiAoY29u
dGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICooeXl2c3Bb
KDIpIC0gKDIpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpOwogCiAg
ICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICBpZiAoY29udGV4dC0+bm9u
SW5pdEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAt
ICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKKyAgICAg
ICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgKih5
eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCB2YXJpYWJs
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmICh2YXJpYWJs
ZSAmJiBzeW1ib2wpCiAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlx
dWVJZCgpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTg6CisgIGNhc2UgOTk6CiAK
ICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGlu
ZSwgInVuc2l6ZWQgYXJyYXkgZGVjbGFyYXRpb25zIG5vdCBzdXBwb3J0ZWQiLCAoeXl2c3BbKDIp
IC0gKDQpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eWxzcFsoMikgLSAoNCldKSwgInVuc2l6ZWQgYXJyYXkgZGVjbGFyYXRpb25zIG5vdCBzdXBwb3J0
ZWQiLCAoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0
cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSwgKHl5dnNwWygyKSAt
ICg0KV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRl
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXl2c3BbKDIp
IC0gKDQpXS5sZXgpLmxpbmUpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDQpXS5sZXgpLnN0
cmluZywgVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSwgKHl5bHNwWygyKSAt
ICg0KV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3BbKDIpIC0gKDQpXSkp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICg0KV0uaW50ZXJt
LnR5cGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5OToKKyAgY2FzZSAxMDA6CiAK
ICAgICB7CiAgICAgICAgIFRUeXBlIHR5cGUgPSBUVHlwZSgoeXl2c3BbKDEpIC0gKDUpXS5pbnRl
cm0udHlwZSkpOwogICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDQpIC0g
KDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKHl5dnNwWyg0KSAtICg1
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICB0eXBlLnNldEFycmF5U2l6ZShzaXplKTsKLSAgICAgICAgVElu
dGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAq
KHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsIHR5cGUsICh5eXZzcFsoMikgLSAoNSldLmxl
eCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICg1KV0u
bGV4KS5saW5lKTsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsIHR5
cGUsICh5eWxzcFsoMikgLSAoNSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5
bHNwWygyKSAtICg1KV0pKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygx
KSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRl
cm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlm
IChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCku
bGluZSwgKih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0udHlwZSksIHRydWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJy
b3JDaGVjaygoeXlsc3BbKDIpIC0gKDUpXSksICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmlu
ZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLCB0cnVlKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNw
WygxKSAtICg1KV0uaW50ZXJtLnR5cGUpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5
cGVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg1
KV0uaW50ZXJtLnR5cGUpKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5
dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkp
KQorICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0g
KDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSkgfHwgY29udGV4dC0+YXJyYXlR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0u
aW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5h
cnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWyg0
KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQorICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3Bb
KDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0udHlwZSkuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUq
IHZhcmlhYmxlID0gMDsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2so
KHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJp
bmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSwgdmFyaWFibGUpKQorICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICooeXl2
c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUp
LCB2YXJpYWJsZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgICAgICAgICBzeW1ib2wtPnNl
dElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKQEAgLTM1OTIsMjEgKzM1NzUsMjEgQEAgeXly
ZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwMDoKKyAgY2FzZSAxMDE6CiAK
ICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5
eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUp
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNw
WygyKSAtICg0KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSk7CiAKICAgICAgICAgVEludGVybU5vZGUqIGlu
dGVybU5vZGU7Ci0gICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eXZz
cFsoMikgLSAoNCldLmxleCkubGluZSwgKih5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCAo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSksICh5eXZzcFsoNCkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkgeworICAgICAgICBpZiAoIWNvbnRleHQtPmV4
ZWN1dGVJbml0aWFsaXplcigoeXlsc3BbKDIpIC0gKDQpXSksICooeXl2c3BbKDIpIC0gKDQpXS5s
ZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbKDQpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpIHsKICAgICAgICAgLy8K
ICAgICAgICAgLy8gQnVpbGQgaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uCiAgICAgICAgIC8v
CiAgICAgICAgICAgICBpZihpbnRlcm1Ob2RlKQotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRl
KGludGVybU5vZGUsICh5eXZzcFsoMykgLSAoNCldLmxleCkubGluZSk7CisgICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lm1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgKHl5bHNwWygzKSAtICg0KV0pKTsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUg
PSAwOwogICAgICAgICB9IGVsc2UgewpAQCAtMzYxNiw1OCArMzU5OSw1OCBAQCB5eXJlZHVjZToK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAxOgorICBjYXNlIDEwMjoKIAogICAgIHsK
LSAgICAgICAgVkVSVEVYX09OTFkoImludmFyaWFudCBkZWNsYXJhdGlvbiIsICh5eXZzcFsoMSkg
LSAoMildLmxleCkubGluZSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNr
KCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKKyAgICAgICAgVkVSVEVYX09OTFkoImlu
dmFyaWFudCBkZWNsYXJhdGlvbiIsICh5eWxzcFsoMSkgLSAoMildKSk7CisgICAgICAgIGlmIChj
b250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMildKSwgY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkudHlwZS5zZXRC
YXNpYyhFYnRJbnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICh5eXZzcFsoMikgLSAo
MildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUuc2V0QmFzaWMoRWJ0
SW52YXJpYW50LCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXlsc3BbKDIpIC0gKDIpXSkpOwog
ICAgICAgICBpZiAoISh5eXZzcFsoMikgLSAoMildLmxleCkuc3ltYm9sKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJ1
bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgKHl5dnNwWygyKSAt
ICgyKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KHl5bHNwWygyKSAtICgyKV0pLCAidW5kZWNsYXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGlu
dmFyaWFudCIsICh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgKHl5
dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAgICAgfQogICAgICAgICBlbHNl
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5n
LCBUVHlwZSgoeXl2YWwuaW50ZXJtKS50eXBlKSwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5l
KTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICgyKV0ubGV4
KS5saW5lKTsKKyAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBU
VHlwZSgoeXl2YWwuaW50ZXJtKS50eXBlKSwgKHl5bHNwWygyKSAtICgyKV0pKTsKKyAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5bHNwWygyKSAtICgyKV0pKTsKICAgICAgICAgfQog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDI6CisgIGNhc2UgMTAzOgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5
cGUpOwogCiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuYXJyYXkp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKS5saW5lLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAibm90IHN1cHBvcnRlZCIs
ICJmaXJzdC1jbGFzcyBhcnJheSIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNldEFycmF5KGZhbHNl
KTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDM6CisgIGNhc2Ug
MTA0OgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUp
LmFycmF5KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0udHlwZSkubGluZSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgIm5vdCBzdXBw
b3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJyYXkiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS5zZXRBcnJh
eShmYWxzZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLnR5cGUpLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgJiYKICAgICAgICAgICAgICgoeXl2
c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9PSBFYnRCb29sIHx8ICh5eXZzcFsoMikg
LSAoMildLmludGVybS50eXBlKS50eXBlID09IEVidEludCkpIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS5saW5lLCAiY2Fubm90IGJl
IGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZzcFsoMSkgLSAoMildLmludGVy
bS50eXBlKS5xdWFsaWZpZXIpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFso
MikgLSAoMildKSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZygo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCgoeXl2c3BbKDEpIC0g
KDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyID09IEV2cVZhcnlpbmdJbiB8fCAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyID09IEV2cVZhcnlpbmdPdXQpICYmCiAgICAg
ICAgICAgICAoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0Qm9vbCB8
fCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkubGlu
ZSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxpZmllclN0cmluZygoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyKSk7CisgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFs
aWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSk7CkBAIC0zNjc1
LDcxICszNjU4LDcxIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
MDQ6CisgIGNhc2UgMTA1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCAo
eXlsc3BbKDEpIC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDU6Cisg
IGNhc2UgMTA2OgogCiAgICAgewotICAgICAgICBWRVJURVhfT05MWSgiYXR0cmlidXRlIiwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVy
cm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5hdEdsb2JhbExldmVsKCksICJhdHRyaWJ1dGUiKSkKKyAgICAgICAgVkVSVEVYX09OTFkoImF0
dHJpYnV0ZSIsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgIGlmIChjb250ZXh0LT5nbG9i
YWxFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpLCAiYXR0cmlidXRlIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQXR0
cmlidXRlLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUF0dHJpYnV0ZSwgKHl5bHNwWygxKSAtICgx
KV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTA2OgorICBjYXNlIDEwNzoKIAog
ICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ2
YXJ5aW5nIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eWxzcFso
MSkgLSAoMSldKSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAidmFyeWlu
ZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4
dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJURVhfU0hBREVSKQotICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0LCAoeXl2c3BbKDEpIC0g
KDEpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0LCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2
cVZhcnlpbmdJbiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCAoeXlsc3Bb
KDEpIC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDc6CisgIGNhc2Ug
MTA4OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXl2
c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxF
cnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gU0hfVkVSVEVYX1NI
QURFUikKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwg
RXZxSW52YXJpYW50VmFyeWluZ091dCwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJp
YW50VmFyeWluZ091dCwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRW
YXJ5aW5nSW4sICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdJbiwg
KHl5bHNwWygxKSAtICgyKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTA4Ogor
ICBjYXNlIDEwOToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hl
Y2soKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCksICJ1bmlmb3JtIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJv
ckNoZWNrKCh5eWxzcFsoMSkgLSAoMSldKSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpLCAidW5pZm9ybSIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVVuaWZvcm0sICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVW5pZm9ybSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTA5OgorICBjYXNlIDExMDoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsK
IAogICAgICAgICBpZiAoKHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24gPT0gRWJwVW5kZWZp
bmVkKSB7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmdldERlZmF1bHRQcmVjaXNpb24oKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLnR5cGUpLnR5cGUpOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPnByZWNpc2lvbkVycm9y
Q2hlY2soKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUsICh5eXZhbC5pbnRlcm0u
dHlwZSkucHJlY2lzaW9uLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSkpIHsK
KyAgICAgICAgICAgIGlmIChjb250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKCh5eWxzcFsoMSkg
LSAoMSldKSwgKHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24sICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS50eXBlKS50eXBlKSkgewogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxMTA6CisgIGNhc2UgMTExOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
ID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpOwpAQCAtMzc0Nyw2MyArMzczMCw1NSBA
QCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTExOgorICBjYXNlIDEx
MjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwSGlnaDsK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTEyOgorICBjYXNlIDExMzoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwTWVkaXVtOwogICAgIDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxMTM6CisgIGNhc2UgMTE0OgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBMb3c7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDExNDoKKyAgY2FzZSAxMTU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSk7CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDExNToKKyAgY2FzZSAxMTY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSk7CiAKLSAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5s
aW5lLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAo
NCldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgICAgICBpZiAoY29udGV4
dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICh5eXZz
cFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNCldKSwgKHl5
dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTE2OgotCi0gICAgewotICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICA7fQotICAgIGJyZWFrOwotCiAgIGNhc2Ug
MTE3OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0Vm9pZCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwog
CkBAIC0zODExLDcgKzM3ODYsNyBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidEludCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgx
KV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0zODE5LDcgKzM3OTQsNyBAQCB5eXJlZHVj
ZToKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eXZzcFsoMSkgLSAo
MSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAg
LTM4MjcsOCArMzgwMiw3IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
RmxvYXQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30K
ICAgICBicmVhazsKIApAQCAtMzgzNiw4ICszODEwLDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5l
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkg
LSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIpOwog
ICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4NDUsOCArMzgxOSw4IEBAIHl5cmVkdWNlOgogCiAg
ICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXls
c3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0
ZSgzKTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0zODU0LDggKzM4MjgsOCBAQCB5eXJlZHVj
ZToKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eXZzcFsoMSkgLSAo
MSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRl
KDIpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFs
LCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFn
Z3JlZ2F0ZSg0KTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0zODYzLDggKzM4MzcsOCBAQCB5
eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdn
cmVnYXRlKDMpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEJvb2ws
IHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QWdncmVnYXRlKDIpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4NzIsOCArMzg0Niw4
IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRBZ2dyZWdhdGUoNCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzg4MSw4ICsz
ODU1LDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJbnQsIHF1YWws
ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QWdncmVnYXRlKDIpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidEJvb2wsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4OTAs
OCArMzg2NCw4IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBx
dWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4
OTksOTUgKzM4NzMsOTYgQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJ
bnQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgO30KICAgICBicmVhazsKIAog
ICBjYXNlIDEyOToKIAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDIiLCAoeXl2
c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWws
ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QWdncmVnYXRlKDIsIHRydWUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgO30KICAgICBicmVhazsKIAogICBj
YXNlIDEzMDoKIAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDMiLCAoeXl2c3Bb
KDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QWdncmVnYXRlKDMsIHRydWUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJh
c2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgyLCB0cnVlKTsKICAgICA7fQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMTMxOgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgibWF0NCIsICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVh
bCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRBZ2dyZWdhdGUoNCwgdHJ1ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMsIHRydWUpOwogICAgIDt9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMzI6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1w
bGVyMkQiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
U2FtcGxlcjJELCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEpIC0g
KDEpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0LCB0cnVl
KTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTMzOgogCiAgICAgewotICAgICAgICBG
UkFHX1ZFUlRfT05MWSgic2FtcGxlckN1YmUiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUp
OwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlckN1YmUsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2Ft
cGxlcjJELCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMzQ6CiAKICAgICB7CisgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsK
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVh
bCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMTM1
OgorCisgICAgewogICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9P
RVNfRUdMX2ltYWdlX2V4dGVybmFsIikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlckV4
dGVybmFsT0VTIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEp
XSksICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXJFeHRlcm5hbE9FUyIpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZ
KCJzYW1wbGVyRXh0ZXJuYWxPRVMiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwogICAg
ICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNh
bXBsZXJFeHRlcm5hbE9FUywgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTM1OgorICBjYXNlIDEzNjoKIAogICAgIHsKICAgICAgICAgaWYg
KCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIikp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGlu
ZSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlcjJEUmVjdCIpOworICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1w
bGVyMkRSZWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0K
LSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXIyRFJlY3QiLCAoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLmxpbmUpOwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRTYW1wbGVyMkRSZWN0LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzY6CisgIGNhc2UgMTM3OgogCiAgICAgewotICAg
ICAgICBGUkFHX1ZFUlRfT05MWSgic3RydWN0IiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5
cGUpLmxpbmUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM3OgorICBjYXNlIDEzODoK
IAogICAgIHsKICAgICAgICAgLy8KQEAgLTM5OTYsODUgKzM5NzEsODYgQEAgeXlyZWR1Y2U6CiAg
ICAgICAgIC8vCiAgICAgICAgIFRUeXBlJiBzdHJ1Y3R1cmUgPSBzdGF0aWNfY2FzdDxUVmFyaWFi
bGUqPigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN5bWJvbCktPmdldFR5cGUoKTsKICAgICAgICAg
VFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8g
RXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEJhc2ljKEVidFN0cnVjdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIHF1YWwsICh5eWxz
cFsoMSkgLSAoMSldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkudXNlckRlZiA9ICZz
dHJ1Y3R1cmU7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzODoKKyAgY2FzZSAxMzk6
CiAKLSAgICB7IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSwgKih5eXZzcFsoMikgLSAoMyldLmxleCkuc3RyaW5nKSkgY29udGV4
dC0+cmVjb3ZlcigpOyA7fQorICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRp
b24oKHl5bHNwWygyKSAtICgzKV0pLCAqKHl5dnNwWygyKSAtICgzKV0ubGV4KS5zdHJpbmcpKSBj
b250ZXh0LT5yZWNvdmVyKCk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzk6CisgIGNhc2Ug
MTQwOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5
eXZzcFsoMikgLSAoNildLmxleCkubGluZSwgKih5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5n
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0g
KDYpXSksICooeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmluZykpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZSgo
eXl2c3BbKDUpIC0gKDYpXS5pbnRlcm0udHlwZUxpc3QpLCAqKHl5dnNwWygyKSAtICg2KV0ubGV4
KS5zdHJpbmcpOworICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKG5ldyBUU3Ry
dWN0dXJlKCh5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nLCAoeXl2c3BbKDUpIC0gKDYpXS5p
bnRlcm0uZmllbGRMaXN0KSkpOwogICAgICAgICBUVmFyaWFibGUqIHVzZXJUeXBlRGVmID0gbmV3
IFRWYXJpYWJsZSgoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmluZywgKnN0cnVjdHVyZSwgdHJ1
ZSk7CiAgICAgICAgIGlmICghIGNvbnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgqdXNlclR5cGVE
ZWYpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDYpXS5sZXgp
LmxpbmUsICJyZWRlZmluaXRpb24iLCAoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmluZy0+Y19z
dHIoKSwgInN0cnVjdCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAt
ICg2KV0pLCAicmVkZWZpbml0aW9uIiwgKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmctPmNf
c3RyKCksICJzdHJ1Y3QiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgRXZx
VGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDYpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAoeXlsc3BbKDEp
IC0gKDYpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnVzZXJEZWYgPSBzdHJ1Y3R1
cmU7CiAgICAgICAgIGNvbnRleHQtPmV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwogICAgIDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxNDA6CisgIGNhc2UgMTQxOgogCi0gICAgeyBpZiAoY29udGV4
dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICoo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KKyAg
ICB7IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFsoMikgLSAoMild
KSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQxOgorICBjYXNlIDE0MjoKIAogICAgIHsKLSAgICAg
ICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZSgoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0u
dHlwZUxpc3QpLCBUU3RyaW5nKCIiKSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoNSldLmxleCkubGlu
ZSk7CisgICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUobmV3IFRTdHJ1Y3R1cmUo
TmV3UG9vbFRTdHJpbmcoIiIpLCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uZmllbGRMaXN0KSkp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVt
cG9yYXJ5LCAoeXlsc3BbKDEpIC0gKDUpXSkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnVzZXJEZWYgPSBzdHJ1Y3R1cmU7CiAgICAgICAgIGNvbnRleHQtPmV4aXRTdHJ1Y3REZWNsYXJh
dGlvbigpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDI6CisgIGNhc2UgMTQzOgog
CiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS50eXBlTGlzdCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5maWVsZExpc3QpOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxNDM6CisgIGNhc2UgMTQ0OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGVMaXN0KSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlTGlzdCk7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJt
LnR5cGVMaXN0KS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50
IGogPSAwOyBqIDwgKHl5dmFsLmludGVybS50eXBlTGlzdCktPnNpemUoKTsgKytqKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCgqKHl5dmFsLmludGVybS50eXBlTGlzdCkpW2pdLnR5cGUtPmdldEZp
ZWxkTmFtZSgpID09ICgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlbaV0udHlw
ZS0+Z2V0RmllbGROYW1lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZUxpc3QpKVtpXS5saW5lLCAiZHVwbGljYXRl
IGZpZWxkIG5hbWUgaW4gc3RydWN0dXJlOiIsICJzdHJ1Y3QiLCAoKih5eXZzcFsoMikgLSAoMild
LmludGVybS50eXBlTGlzdCkpW2ldLnR5cGUtPmdldEZpZWxkTmFtZSgpLmNfc3RyKCkpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
ZmllbGRMaXN0KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAoeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0uZmllbGRMaXN0KS0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFRGaWVs
ZCogZmllbGQgPSAoKih5eXZzcFsoMikgLSAoMildLmludGVybS5maWVsZExpc3QpKVtpXTsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgKHl5dmFsLmludGVybS5maWVsZExpc3Qp
LT5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIGlmICgoKih5eXZhbC5pbnRlcm0uZmll
bGRMaXN0KSlbal0tPm5hbWUoKSA9PSBmaWVsZC0+bmFtZSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgImR1cGxpY2F0ZSBmaWVsZCBu
YW1lIGluIHN0cnVjdHVyZToiLCAic3RydWN0IiwgZmllbGQtPm5hbWUoKS5jX3N0cigpKTsKICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5wdXNo
X2JhY2soKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZUxpc3QpKVtpXSk7CisgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnB1c2hfYmFjayhmaWVsZCk7CiAgICAgICAg
IH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ0OgorICBjYXNlIDE0NToKIAogICAg
IHsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCkgPSAoeXl2c3BbKDIpIC0gKDMpXS5p
bnRlcm0udHlwZUxpc3QpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSAoeXl2
c3BbKDIpIC0gKDMpXS5pbnRlcm0uZmllbGRMaXN0KTsKIAotICAgICAgICBpZiAoY29udGV4dC0+
dm9pZEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLmxpbmUsICgqKHl5
dnNwWygyKSAtICgzKV0uaW50ZXJtLnR5cGVMaXN0KSlbMF0udHlwZS0+Z2V0RmllbGROYW1lKCks
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpIHsKKyAgICAgICAgaWYgKGNvbnRleHQt
PnZvaWRFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMyldKSwgKCooeXl2c3BbKDIpIC0gKDMpXS5p
bnRlcm0uZmllbGRMaXN0KSlbMF0tPm5hbWUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5
cGUpKSkgewogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgKHl5dmFsLmludGVybS50eXBlTGlzdCkt
PnNpemUoKTsgKytpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgKHl5
dmFsLmludGVybS5maWVsZExpc3QpLT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgLy8KICAg
ICAgICAgICAgIC8vIENhcmVmdWwgbm90IHRvIHJlcGxhY2UgYWxyZWFkeSBrbm93biBhc3BlY3Rz
IG9mIHR5cGUsIGxpa2UgYXJyYXktbmVzcwogICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIFRU
eXBlKiB0eXBlID0gKCooeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSlbaV0udHlwZTsKKyAgICAgICAg
ICAgIFRUeXBlKiB0eXBlID0gKCooeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkpW2ldLT50eXBlKCk7
CiAgICAgICAgICAgICB0eXBlLT5zZXRCYXNpY1R5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LnR5cGUpLnR5cGUpOwogICAgICAgICAgICAgdHlwZS0+c2V0Tm9taW5hbFNpemUoKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLnR5cGUpLnNpemUpOwogICAgICAgICAgICAgdHlwZS0+c2V0TWF0cml4
KCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5tYXRyaXgpOwpAQCAtNDA4Miw4NSArNDA1
OCw3NSBAQCB5eXJlZHVjZToKIAogICAgICAgICAgICAgLy8gZG9uJ3QgYWxsb3cgYXJyYXlzIG9m
IGFycmF5cwogICAgICAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkgewotICAgICAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS50eXBlKS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkpKQorICAgICAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAo
MyldKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCh5
eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5hcnJheSkKICAgICAgICAgICAgICAgICB0eXBl
LT5zZXRBcnJheVNpemUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLmFycmF5U2l6ZSk7
Ci0gICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnVzZXJEZWYp
IHsKKyAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkudXNlckRl
ZikKICAgICAgICAgICAgICAgICB0eXBlLT5zZXRTdHJ1Y3QoKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLnR5cGUpLnVzZXJEZWYtPmdldFN0cnVjdCgpKTsKLSAgICAgICAgICAgICAgICB0eXBlLT5z
ZXRUeXBlTmFtZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkudXNlckRlZi0+Z2V0VHlw
ZU5hbWUoKSk7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3ROZXN0aW5nRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubGluZSwg
KnR5cGUpKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0TmVzdGluZ0Vycm9yQ2hl
Y2soKHl5bHNwWygxKSAtICgzKV0pLCAqKCooeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkpW2ldKSkK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ1OgorICBjYXNlIDE0NjoKIAog
ICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCkgPSBOZXdQb29sVFR5cGVMaXN0
KCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5wdXNoX2JhY2soKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLnR5cGVMaW5lKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRM
aXN0KSA9IE5ld1Bvb2xURmllbGRMaXN0KCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRM
aXN0KS0+cHVzaF9iYWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5maWVsZCkpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDY6CisgIGNhc2UgMTQ3OgogCiAgICAgewotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+cHVzaF9iYWNrKCh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS50eXBlTGluZSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnB1c2hf
YmFjaygoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uZmllbGQpKTsKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgMTQ3OgorICBjYXNlIDE0ODoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsICooeXl2
c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZl
ZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCAqKHl5dnNwWygxKSAtICgxKV0ubGV4KS5z
dHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZUxpbmUpLnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVk
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSkubGluZSA9ICh5eXZzcFsoMSkgLSAo
MSldLmxleCkubGluZTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSkudHlwZS0+c2V0
RmllbGROYW1lKCooeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZyk7CisgICAgICAgIFRUeXBl
KiB0eXBlID0gbmV3IFRUeXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0uZmllbGQpID0gbmV3IFRGaWVsZCh0eXBlLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LnN0cmluZyk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0ODoKKyAgY2FzZSAxNDk6
CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5dnNw
WygxKSAtICg0KV0ubGV4KS5saW5lLCAqKHl5dnNwWygxKSAtICg0KV0ubGV4KS5zdHJpbmcpKQor
ICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoNCld
KSwgKih5eXZzcFsoMSkgLSAoNCldLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKIAotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlID0gbmV3
IFRUeXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZUxpbmUpLmxpbmUgPSAoeXl2c3BbKDEpIC0gKDQpXS5sZXgpLmxpbmU7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZUxpbmUpLnR5cGUtPnNldEZpZWxkTmFtZSgqKHl5dnNwWygxKSAtICg0KV0u
bGV4KS5zdHJpbmcpOwotCi0gICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICh5eXZzcFso
MykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAgICAgVFR5cGUq
IHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKKyAgICAgICAgaW50IHNp
emUgPSAwOworICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3Bb
KDMpIC0gKDQpXSksICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBz
aXplKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlTGluZSkudHlwZS0+c2V0QXJyYXlTaXplKHNpemUpOwotICAgIDt9Ci0gICAgYnJl
YWs7CisgICAgICAgIHR5cGUtPnNldEFycmF5U2l6ZShzaXplKTsKIAotICBjYXNlIDE0OToKLQot
ICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGQp
ID0gbmV3IFRGaWVsZCh0eXBlLCAoeXl2c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmluZyk7CisgICAg
O30KICAgICBicmVhazsKIAogICBjYXNlIDE1MDoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KKyAgICB7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTUxOgogCi0gICAg
eyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybUFnZ3JlZ2F0ZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTUyOgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOyA7fQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTUzOgpAQCAtNDE5MCwxMTIgKzQxNTYsMTE3IEBAIHl5cmVkdWNl
OgogCiAgIGNhc2UgMTU4OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkg
PSAwOyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KICAgICBicmVhazsKIAogICBjYXNlIDE1OToKIAot
ICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyA7fQorICAgIHsgKHl5dmFsLmludGVy
bS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsgO30KICAgICBicmVhazsKIAogICBjYXNlIDE2MDoKIAot
ICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7IDt9CisgICAgeyBjb250ZXh0LT5zeW1i
b2xUYWJsZS5wdXNoKCk7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjE6CiAKKyAgICB7IGNv
bnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMTYyOgor
CiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3Jl
Z2F0ZSkgIT0gMCkgewogICAgICAgICAgICAgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVy
bUFnZ3JlZ2F0ZSktPnNldE9wKEVPcFNlcXVlbmNlKTsKLSAgICAgICAgICAgICh5eXZzcFsoMykg
LSAoNSldLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRFbmRMaW5lKCh5eXZzcFsoNSkgLSAo
NSldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50
ZXJtQWdncmVnYXRlKS0+c2V0TGluZSgoeXlsb2MpKTsKICAgICAgICAgfQogICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50
ZXJtQWdncmVnYXRlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTYyOgorICBjYXNl
IDE2MzoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE2MzoKKyAg
Y2FzZSAxNjQ6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjQ6
CisgIGNhc2UgMTY1OgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxNjU6CisgIGNhc2UgMTY2OgogCiAgICAgeyBjb250ZXh0LT5z
eW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMikg
LSAoMildLmludGVybS5pbnRlcm1Ob2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE2NjoK
KyAgY2FzZSAxNjc6CiAKICAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgO30KICAg
ICBicmVhazsKIAotICBjYXNlIDE2NzoKKyAgY2FzZSAxNjg6CiAKICAgICB7IGNvbnRleHQtPnN5
bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygyKSAt
ICgyKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY4Ogor
ICBjYXNlIDE2OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
IDA7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE2OToKKyAgY2FzZSAxNzA6CiAKICAg
ICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRl
KSkgewogICAgICAgICAgICAgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0
ZSktPnNldE9wKEVPcFNlcXVlbmNlKTsKLSAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMyldLmlu
dGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRFbmRMaW5lKCh5eXZzcFsoMykgLSAoMyldLmxleCku
bGluZSk7CisgICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVn
YXRlKS0+c2V0TGluZSgoeXlsb2MpKTsKICAgICAgICAgfQogICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE3MDoKKyAgY2FzZSAxNzE6CiAKICAgICB7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5tYWtlQWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2Rl
KSwgMCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRl
cm1Ob2RlKSwgKHl5bG9jKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE3MToKKyAg
Y2FzZSAxNzI6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMild
LmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
Tm9kZSksIDApOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtQWdncmVnYXRlKSwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAo
eXlsb2MpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTcyOgorICBjYXNlIDE3MzoK
IAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7IDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxNzM6CisgIGNhc2UgMTc0OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpID0gc3RhdGljX2Nhc3Q8VEludGVybU5vZGUqPigoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzQ6CisgIGNhc2Ug
MTc1OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5dnNw
WygxKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXlsc3BbKDEp
IC0gKDUpXSksICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oKHl5dnNwWygzKSAt
ICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5u
b2RlUGFpciksICh5eXZzcFsoMSkgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5
eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDUpIC0gKDUp
XS5pbnRlcm0ubm9kZVBhaXIpLCAoeXlsc3BbKDEpIC0gKDUpXSkpOwogICAgIDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxNzU6CisgIGNhc2UgMTc2OgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1O
b2RlKTsKQEAgLTQzMDMsNyArNDI3NCw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxNzY6CisgIGNhc2UgMTc3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2Rl
KTsKQEAgLTQzMTEsNyArNDI4Miw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxNzc6CisgIGNhc2UgMTc4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKQEAgLTQzMjAsMTYgKzQyOTEsMTYgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE3ODoKKyAgY2FzZSAxNzk6CiAKICAgICB7CiAgICAgICAgIFRJbnRlcm1O
b2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJy
b3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNCldLmlu
dGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKCh5eWxzcFsoMikgLSAoNCldKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJv
b2xFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5
eWxzcFsoMikgLSAoNCldKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1
dGVJbml0aWFsaXplcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0g
KDQpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpLCAoeXl2c3Bb
KDQpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpCisgICAgICAg
IGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eWxzcFsoMikgLSAoNCldKSwgKih5
eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlw
ZSksICh5eXZzcFsoNCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2Rl
KSkKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFso
NCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKQEAgLTQzMzgsNzkgKzQzMDksNzkgQEAgeXlyZWR1
Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE3OToKKyAgY2FzZSAxODA6CiAKICAg
ICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xl
dmVsOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTgwOgorICBjYXNlIDE4MToKIAogICAgIHsK
ICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxl
LCAwLCAoeXl2c3BbKDQpIC0gKDYpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgMCwgKHl5dnNw
Wyg2KSAtICg2KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDEpIC0gKDYpXS5sZXgpLmxp
bmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZExvb3AoRUxvb3BXaGlsZSwgMCwgKHl5dnNwWyg0KSAtICg2KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksIDAsICh5eXZzcFsoNikgLSAoNildLmludGVybS5pbnRlcm1Ob2RlKSwg
KHl5bHNwWygxKSAtICg2KV0pKTsKICAgICAgICAgLS1jb250ZXh0LT5sb29wTmVzdGluZ0xldmVs
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODE6CisgIGNhc2UgMTgyOgogCiAgICAg
eyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
ODI6CisgIGNhc2UgMTgzOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9y
Q2hlY2soKHl5dnNwWyg4KSAtICg4KV0ubGV4KS5saW5lLCAoeXl2c3BbKDYpIC0gKDgpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVj
aygoeXlsc3BbKDgpIC0gKDgpXSksICh5eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxv
b3BEb1doaWxlLCAwLCAoeXl2c3BbKDYpIC0gKDgpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
MCwgKHl5dnNwWygzKSAtICg4KV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDQpIC0gKDgp
XS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BEb1doaWxlLCAwLCAoeXl2c3BbKDYpIC0gKDgp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgMCwgKHl5dnNwWygzKSAtICg4KV0uaW50ZXJtLmlu
dGVybU5vZGUpLCAoeXlsc3BbKDQpIC0gKDgpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BO
ZXN0aW5nTGV2ZWw7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4MzoKKyAgY2FzZSAx
ODQ6CiAKICAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0LT5sb29w
TmVzdGluZ0xldmVsOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg0OgorICBjYXNlIDE4NToK
IAogICAgIHsKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChF
TG9vcEZvciwgKHl5dnNwWyg0KSAtICg3KV0uaW50ZXJtLmludGVybU5vZGUpLCByZWludGVycHJl
dF9jYXN0PFRJbnRlcm1UeXBlZCo+KCh5eXZzcFsoNSkgLSAoNyldLmludGVybS5ub2RlUGFpciku
bm9kZTEpLCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCh5eXZzcFsoNSkgLSAoNyld
LmludGVybS5ub2RlUGFpcikubm9kZTIpLCAoeXl2c3BbKDcpIC0gKDcpXS5pbnRlcm0uaW50ZXJt
Tm9kZSksICh5eXZzcFsoMSkgLSAoNyldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcEZvciwg
KHl5dnNwWyg0KSAtICg3KV0uaW50ZXJtLmludGVybU5vZGUpLCByZWludGVycHJldF9jYXN0PFRJ
bnRlcm1UeXBlZCo+KCh5eXZzcFsoNSkgLSAoNyldLmludGVybS5ub2RlUGFpcikubm9kZTEpLCBy
ZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCh5eXZzcFsoNSkgLSAoNyldLmludGVybS5u
b2RlUGFpcikubm9kZTIpLCAoeXl2c3BbKDcpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5
eWxzcFsoMSkgLSAoNyldKSk7CiAgICAgICAgIC0tY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg1OgorICBjYXNlIDE4NjoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS5pbnRlcm1Ob2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg2OgorICBj
YXNlIDE4NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTg3OgorICBjYXNlIDE4ODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4ODoKKyAgY2FzZSAxODk6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IDA7CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDE4OToKKyAgY2FzZSAxOTA6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7CkBAIC00NDE4LDcgKzQzODksNyBAQCB5eXJlZHVjZToKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkwOgorICBjYXNlIDE5MToKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTQ0MjYsNjMgKzQzOTcsNjMgQEAgeXlyZWR1Y2U6
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5MToKKyAgY2FzZSAxOTI6CiAKICAgICB7
CiAgICAgICAgIGlmIChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgImNvbnRpbnVl
IHN0YXRlbWVudCBvbmx5IGFsbG93ZWQgaW4gbG9vcHMiLCAiIik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDIpXSksICJjb250aW51ZSBzdGF0ZW1lbnQgb25seSBh
bGxvd2VkIGluIGxvb3BzIiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICB9Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcENvbnRpbnVlLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgp
LmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkyOgorICBjYXNlIDE5MzoKIAogICAgIHsKICAg
ICAgICAgaWYgKGNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWwgPD0gMCkgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAiYnJlYWsgc3RhdGVt
ZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMSkgLSAoMildKSwgImJyZWFrIHN0YXRlbWVudCBvbmx5IGFsbG93ZWQgaW4g
bG9vcHMiLCAiIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0K
LSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCcmFuY2goRU9wQnJlYWssICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QnJhbmNoKEVPcEJyZWFrLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxOTM6CisgIGNhc2UgMTk0OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1
cm4sICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwg
KHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlv
blR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11
c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXlsc3BbKDEpIC0gKDIpXSksICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZh
bHVlIiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5NDoKKyAgY2FzZSAxOTU6CiAKICAg
ICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoMSkgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVP
cFJldHVybiwgKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxz
cFsoMSkgLSAoMyldKSk7CiAgICAgICAgIGNvbnRleHQtPmZ1bmN0aW9uUmV0dXJuc1ZhbHVlID0g
dHJ1ZTsKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2lj
VHlwZSgpID09IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MSkgLSAoMyldLmxleCkubGluZSwgInZvaWQgZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVl
IiwgInJldHVybiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgz
KV0pLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoKihjb250
ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlKSAhPSAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXl2c3BbKDEpIC0gKDMpXS5sZXgpLmxpbmUsICJmdW5jdGlvbiByZXR1cm4gaXMgbm90IG1hdGNo
aW5nIHR5cGU6IiwgInJldHVybiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WygxKSAtICgzKV0pLCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJy
ZXR1cm4iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTU6CisgIGNhc2UgMTk2OgogCiAgICAgewotICAg
ICAgICBGUkFHX09OTFkoImRpc2NhcmQiLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUpOwot
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJyYW5jaChFT3BLaWxsLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUpOworICAgICAg
ICBGUkFHX09OTFkoImRpc2NhcmQiLCAoeXlsc3BbKDEpIC0gKDIpXSkpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChF
T3BLaWxsLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxOTY6CisgIGNhc2UgMTk3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwpAQCAtNDQ5MCwy
OSArNDQ2MSwyOSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk3
OgorICBjYXNlIDE5ODoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMild
LmludGVybS5pbnRlcm1Ob2RlKSwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUp
LCAwKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1Ob2Rl
KSwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsb2MpKTsKICAgICAg
ICAgY29udGV4dC0+dHJlZVJvb3QgPSAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTg6CisgIGNhc2UgMTk5OgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmlu
dGVybU5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTk6CisgIGNhc2UgMjAw
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAyMDA6CisgIGNhc2UgMjAxOgogCiAgICAgewogICAgICAgICBURnVuY3Rpb24qIGZ1bmN0aW9u
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5mdW5jdGlvbjsKQEAgLTQ1MjEsNyArNDQ5Miw3
IEBAIHl5cmVkdWNlOgogICAgICAgICAKICAgICAgICAgaWYgKGJ1aWx0SW4pCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGlu
ZSwgImJ1aWx0LWluIGZ1bmN0aW9ucyBjYW5ub3QgYmUgcmVkZWZpbmVkIiwgZnVuY3Rpb24tPmdl
dE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkg
LSAoMSldKSwgImJ1aWx0LWluIGZ1bmN0aW9ucyBjYW5ub3QgYmUgcmVkZWZpbmVkIiwgZnVuY3Rp
b24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgfQogICAgICAgICAKQEAgLTQ1MzUsNyArNDUwNiw3IEBAIHl5cmVkdWNlOgogICAg
ICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIFRoZW4gdGhpcyBmdW5jdGlvbiBhbHJlYWR5IGhh
cyBhIGJvZHkuCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCAiZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5
IiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgImZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1
bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIH0KICAgICAgICAgcHJldkRlYy0+c2V0RGVmaW5lZCgpOwpAQCAtNDU0NSwx
MSArNDUxNiwxMSBAQCB5eXJlZHVjZToKICAgICAgICAgLy8KICAgICAgICAgaWYgKGZ1bmN0aW9u
LT5nZXROYW1lKCkgPT0gIm1haW4iKSB7CiAgICAgICAgICAgICBpZiAoZnVuY3Rpb24tPmdldFBh
cmFtQ291bnQoKSA+IDApIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICJmdW5jdGlvbiBjYW5ub3QgdGFrZSBhbnkgcGFyYW1l
dGVyKHMpIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJmdW5jdGlvbiBjYW5ub3QgdGFrZSBh
bnkgcGFyYW1ldGVyKHMpIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRWb2lkKSB7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
KS5saW5lLCAiIiwgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpLCAi
bWFpbiBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICIiLCBmdW5jdGlvbi0+Z2V0UmV0dXJu
VHlwZSgpLmdldEJhc2ljU3RyaW5nKCksICJtYWluIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2
YWx1ZSIpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtNDU3Nyw3ICs0NTQ4LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAg
ICAgICAgLy8gSW5zZXJ0IHRoZSBwYXJhbWV0ZXJzIHdpdGggbmFtZSBpbiB0aGUgc3ltYm9sIHRh
YmxlLgogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+
c3ltYm9sVGFibGUuaW5zZXJ0KCp2YXJpYWJsZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCAicmVkZWZpbml0aW9u
IiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAicmVkZWZpbml0aW9uIiwgdmFyaWFibGUt
PmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgICAgICAgICBkZWxldGUgdmFyaWFibGU7CiAgICAgICAgICAgICAg
ICAgfQpAQCAtNDU4OCwzMSArNDU1OSwzMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgICAgICBw
YXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhcmlhYmxlLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCks
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5
eWxzcFsoMSkgLSAoMSldKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3Jl
Z2F0ZShwYXJhbU5vZGVzLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAq
cGFyYW0udHlwZSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKSwgKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsICh5eWxzcFsoMSkgLSAoMSldKSks
ICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
Y29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBhcmFtTm9kZXMsIEVP
cFBhcmFtZXRlcnMsICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgIGNv
bnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihwYXJhbU5vZGVzLCBFT3BQ
YXJhbWV0ZXJzLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IHBhcmFtTm9kZXM7CiAgICAgICAgIGNvbnRleHQt
Pmxvb3BOZXN0aW5nTGV2ZWwgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDE6
CisgIGNhc2UgMjAyOgogCiAgICAgewogICAgICAgICAvLz8/IENoZWNrIHRoYXQgYWxsIHBhdGhz
IHJldHVybiBhIHZhbHVlIGlmIHJldHVybiB0eXBlICE9IHZvaWQgPwogICAgICAgICAvLyAgIE1h
eSBiZSBiZXN0IGRvbmUgYXMgcG9zdCBwcm9jZXNzIHBoYXNlIG9uIGludGVybWVkaWF0ZSBjb2Rl
CiAgICAgICAgIGlmIChjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUo
KSAhPSBFYnRWb2lkICYmICEgY29udGV4dC0+ZnVuY3Rpb25SZXR1cm5zVmFsdWUpIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkubGluZSwgImZ1
bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlOiIsICIiLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0pLmZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXlsc3BbKDEpIC0gKDMpXSksICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2
YWx1ZToiLCAiIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+Z2V0TmFtZSgp
LmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRlcm1B
Z2dyZWdhdGUsICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKSwgMCk7Ci0gICAg
ICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpLCBFT3BGdW5jdGlvbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5s
aW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtQWdn
cmVnYXRlLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxvYykpOwor
ICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSwgRU9wRnVuY3Rpb24sICh5eWxzcFsoMSkgLSAoMyldKSk7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldE5h
bWUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbi0+Z2V0TWFuZ2xlZE5hbWUoKS5j
X3N0cigpKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdh
dGUoKS0+c2V0VHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uLT5nZXRSZXR1
cm5UeXBlKCkpOwogCkBAIC00NjIxLDkgKzQ1OTMsNiBAQCB5eXJlZHVjZToKICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0T3B0aW1pemUoY29u
dGV4dC0+cHJhZ21hKCkub3B0aW1pemUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXREZWJ1Zyhjb250ZXh0LT5wcmFnbWEoKS5kZWJ1Zyk7
CiAKLSAgICAgICAgaWYgKCh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKSAmJiAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCkpCi0g
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5z
ZXRFbmRMaW5lKCh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dy
ZWdhdGUoKS0+Z2V0RW5kTGluZSgpKTsKLQogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5w
b3AoKTsKICAgICA7fQogICAgIGJyZWFrOwpAQCAtNDY0MCw3ICs0NjA5LDcgQEAgeXlyZWR1Y2U6
CiAgIFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7CiAKICAgKisreXl2c3AgPSB5eXZhbDsK
LQorICAqKyt5eWxzcCA9IHl5bG9jOwogCiAgIC8qIE5vdyBgc2hpZnQnIHRoZSByZXN1bHQgb2Yg
dGhlIHJlZHVjdGlvbi4gIERldGVybWluZSB3aGF0IHN0YXRlCiAgICAgIHRoYXQgZ29lcyB0bywg
YmFzZWQgb24gdGhlIHN0YXRlIHdlIHBvcHBlZCBiYWNrIHRvIGFuZCB0aGUgcnVsZQpAQCAtNDY2
Niw3ICs0NjM1LDcgQEAgeXllcnJsYWI6CiAgICAgewogICAgICAgKyt5eW5lcnJzOwogI2lmICEg
WVlFUlJPUl9WRVJCT1NFCi0gICAgICB5eWVycm9yIChjb250ZXh0LCBZWV8oInN5bnRheCBlcnJv
ciIpKTsKKyAgICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIFlZXygic3ludGF4IGVycm9y
IikpOwogI2Vsc2UKICAgICAgIHsKIAlZWVNJWkVfVCB5eXNpemUgPSB5eXN5bnRheF9lcnJvciAo
MCwgeXlzdGF0ZSwgeXljaGFyKTsKQEAgLTQ2OTAsMTEgKzQ2NTksMTEgQEAgeXllcnJsYWI6CiAJ
aWYgKDAgPCB5eXNpemUgJiYgeXlzaXplIDw9IHl5bXNnX2FsbG9jKQogCSAgewogCSAgICAodm9p
ZCkgeXlzeW50YXhfZXJyb3IgKHl5bXNnLCB5eXN0YXRlLCB5eWNoYXIpOwotCSAgICB5eWVycm9y
IChjb250ZXh0LCB5eW1zZyk7CisJICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIHl5bXNn
KTsKIAkgIH0KIAllbHNlCiAJICB7Ci0JICAgIHl5ZXJyb3IgKGNvbnRleHQsIFlZXygic3ludGF4
IGVycm9yIikpOworCSAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZWV8oInN5bnRheCBl
cnJvciIpKTsKIAkgICAgaWYgKHl5c2l6ZSAhPSAwKQogCSAgICAgIGdvdG8geXlleGhhdXN0ZWRs
YWI7CiAJICB9CkBAIC00NzAyLDcgKzQ2NzEsNyBAQCB5eWVycmxhYjoKICNlbmRpZgogICAgIH0K
IAotCisgIHl5ZXJyb3JfcmFuZ2VbMF0gPSB5eWxsb2M7CiAKICAgaWYgKHl5ZXJyc3RhdHVzID09
IDMpCiAgICAgewpAQCAtNDcxOCw3ICs0Njg3LDcgQEAgeXllcnJsYWI6CiAgICAgICBlbHNlCiAJ
ewogCSAgeXlkZXN0cnVjdCAoIkVycm9yOiBkaXNjYXJkaW5nIiwKLQkJICAgICAgeXl0b2tlbiwg
Jnl5bHZhbCwgY29udGV4dCk7CisJCSAgICAgIHl5dG9rZW4sICZ5eWx2YWwsICZ5eWxsb2MsIGNv
bnRleHQpOwogCSAgeXljaGFyID0gWVlFTVBUWTsKIAl9CiAgICAgfQpAQCAtNDczOSw2ICs0NzA4
LDcgQEAgeXllcnJvcmxhYjoKICAgaWYgKC8qQ09OU1RDT05EKi8gMCkKICAgICAgZ290byB5eWVy
cm9ybGFiOwogCisgIHl5ZXJyb3JfcmFuZ2VbMF0gPSB5eWxzcFsxLXl5bGVuXTsKICAgLyogRG8g
bm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hpY2ggYWN0aW9uIHRyaWdnZXJl
ZAogICAgICB0aGlzIFlZRVJST1IuICAqLwogICBZWVBPUFNUQUNLICh5eWxlbik7CkBAIC00Nzcy
LDkgKzQ3NDIsOSBAQCB5eWVycmxhYjE6CiAgICAgICBpZiAoeXlzc3AgPT0geXlzcykKIAlZWUFC
T1JUOwogCi0KKyAgICAgIHl5ZXJyb3JfcmFuZ2VbMF0gPSAqeXlsc3A7CiAgICAgICB5eWRlc3Ry
dWN0ICgiRXJyb3I6IHBvcHBpbmciLAotCQkgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2c3AsIGNvbnRl
eHQpOworCQkgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2c3AsIHl5bHNwLCBjb250ZXh0KTsKICAgICAg
IFlZUE9QU1RBQ0sgKDEpOwogICAgICAgeXlzdGF0ZSA9ICp5eXNzcDsKICAgICAgIFlZX1NUQUNL
X1BSSU5UICh5eXNzLCB5eXNzcCk7CkBAIC00Nzg1LDYgKzQ3NTUsMTEgQEAgeXllcnJsYWIxOgog
CiAgICorK3l5dnNwID0geXlsdmFsOwogCisgIHl5ZXJyb3JfcmFuZ2VbMV0gPSB5eWxsb2M7Cisg
IC8qIFVzaW5nIFlZTExPQyBpcyB0ZW1wdGluZywgYnV0IHdvdWxkIGNoYW5nZSB0aGUgbG9jYXRp
b24gb2YKKyAgICAgdGhlIGxvb2stYWhlYWQuICBZWUxPQyBpcyBhdmFpbGFibGUgdGhvdWdoLiAg
Ki8KKyAgWVlMTE9DX0RFRkFVTFQgKHl5bG9jLCAoeXllcnJvcl9yYW5nZSAtIDEpLCAyKTsKKyAg
KisreXlsc3AgPSB5eWxvYzsKIAogICAvKiBTaGlmdCB0aGUgZXJyb3IgdG9rZW4uICAqLwogICBZ
WV9TWU1CT0xfUFJJTlQgKCJTaGlmdGluZyIsIHl5c3Rvc1t5eW5dLCB5eXZzcCwgeXlsc3ApOwpA
QCAtNDgxMiw3ICs0Nzg3LDcgQEAgeXlhYm9ydGxhYjoKIHwgeXlleGhhdXN0ZWRsYWIgLS0gbWVt
b3J5IGV4aGF1c3Rpb24gY29tZXMgaGVyZS4gIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIHl5ZXhoYXVzdGVkbGFiOgotICB5eWVycm9yIChj
b250ZXh0LCBZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSk7CisgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNv
bnRleHQsIFlZXygibWVtb3J5IGV4aGF1c3RlZCIpKTsKICAgeXlyZXN1bHQgPSAyOwogICAvKiBG
YWxsIHRocm91Z2guICAqLwogI2VuZGlmCkBAIC00ODIwLDcgKzQ3OTUsNyBAQCB5eWV4aGF1c3Rl
ZGxhYjoKIHl5cmV0dXJuOgogICBpZiAoeXljaGFyICE9IFlZRU9GICYmIHl5Y2hhciAhPSBZWUVN
UFRZKQogICAgICB5eWRlc3RydWN0ICgiQ2xlYW51cDogZGlzY2FyZGluZyBsb29rYWhlYWQiLAot
CQkgeXl0b2tlbiwgJnl5bHZhbCwgY29udGV4dCk7CisJCSB5eXRva2VuLCAmeXlsdmFsLCAmeXls
bG9jLCBjb250ZXh0KTsKICAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1
bGUgd2hpY2ggYWN0aW9uIHRyaWdnZXJlZAogICAgICB0aGlzIFlZQUJPUlQgb3IgWVlBQ0NFUFQu
ICAqLwogICBZWVBPUFNUQUNLICh5eWxlbik7CkBAIC00ODI4LDcgKzQ4MDMsNyBAQCB5eXJldHVy
bjoKICAgd2hpbGUgKHl5c3NwICE9IHl5c3MpCiAgICAgewogICAgICAgeXlkZXN0cnVjdCAoIkNs
ZWFudXA6IHBvcHBpbmciLAotCQkgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwgY29udGV4dCk7CisJ
CSAgeXlzdG9zWyp5eXNzcF0sIHl5dnNwLCB5eWxzcCwgY29udGV4dCk7CiAgICAgICBZWVBPUFNU
QUNLICgxKTsKICAgICB9CiAjaWZuZGVmIHl5b3ZlcmZsb3cKQEAgLTQ4NDcsNiArNDgyMiwxMSBA
QCB5eXJldHVybjoKIAogCiAKK3ZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbikgeworICAgIGNvbnRleHQtPmVycm9y
KCp5eWxsb2MsIHJlYXNvbiwgIiIpOworICAgIGNvbnRleHQtPnJlY292ZXIoKTsKK30KKwogaW50
IGdsc2xhbmdfcGFyc2UoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHJldHVybiB5eXBh
cnNlKGNvbnRleHQpOwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2dsc2xhbmdfdGFiLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Niw1MiArODYsNTEgQEAKICAgICAgRkxPQVRDT05TVEFOVCA9IDMwMiwKICAgICAgSU5U
Q09OU1RBTlQgPSAzMDMsCiAgICAgIEJPT0xDT05TVEFOVCA9IDMwNCwKLSAgICAgRklFTERfU0VM
RUNUSU9OID0gMzA1LAotICAgICBMRUZUX09QID0gMzA2LAotICAgICBSSUdIVF9PUCA9IDMwNywK
LSAgICAgSU5DX09QID0gMzA4LAotICAgICBERUNfT1AgPSAzMDksCi0gICAgIExFX09QID0gMzEw
LAotICAgICBHRV9PUCA9IDMxMSwKLSAgICAgRVFfT1AgPSAzMTIsCi0gICAgIE5FX09QID0gMzEz
LAotICAgICBBTkRfT1AgPSAzMTQsCi0gICAgIE9SX09QID0gMzE1LAotICAgICBYT1JfT1AgPSAz
MTYsCi0gICAgIE1VTF9BU1NJR04gPSAzMTcsCi0gICAgIERJVl9BU1NJR04gPSAzMTgsCi0gICAg
IEFERF9BU1NJR04gPSAzMTksCi0gICAgIE1PRF9BU1NJR04gPSAzMjAsCi0gICAgIExFRlRfQVNT
SUdOID0gMzIxLAotICAgICBSSUdIVF9BU1NJR04gPSAzMjIsCi0gICAgIEFORF9BU1NJR04gPSAz
MjMsCi0gICAgIFhPUl9BU1NJR04gPSAzMjQsCi0gICAgIE9SX0FTU0lHTiA9IDMyNSwKLSAgICAg
U1VCX0FTU0lHTiA9IDMyNiwKLSAgICAgTEVGVF9QQVJFTiA9IDMyNywKLSAgICAgUklHSFRfUEFS
RU4gPSAzMjgsCi0gICAgIExFRlRfQlJBQ0tFVCA9IDMyOSwKLSAgICAgUklHSFRfQlJBQ0tFVCA9
IDMzMCwKLSAgICAgTEVGVF9CUkFDRSA9IDMzMSwKLSAgICAgUklHSFRfQlJBQ0UgPSAzMzIsCi0g
ICAgIERPVCA9IDMzMywKLSAgICAgQ09NTUEgPSAzMzQsCi0gICAgIENPTE9OID0gMzM1LAotICAg
ICBFUVVBTCA9IDMzNiwKLSAgICAgU0VNSUNPTE9OID0gMzM3LAotICAgICBCQU5HID0gMzM4LAot
ICAgICBEQVNIID0gMzM5LAotICAgICBUSUxERSA9IDM0MCwKLSAgICAgUExVUyA9IDM0MSwKLSAg
ICAgU1RBUiA9IDM0MiwKLSAgICAgU0xBU0ggPSAzNDMsCi0gICAgIFBFUkNFTlQgPSAzNDQsCi0g
ICAgIExFRlRfQU5HTEUgPSAzNDUsCi0gICAgIFJJR0hUX0FOR0xFID0gMzQ2LAotICAgICBWRVJU
SUNBTF9CQVIgPSAzNDcsCi0gICAgIENBUkVUID0gMzQ4LAotICAgICBBTVBFUlNBTkQgPSAzNDks
Ci0gICAgIFFVRVNUSU9OID0gMzUwCisgICAgIExFRlRfT1AgPSAzMDUsCisgICAgIFJJR0hUX09Q
ID0gMzA2LAorICAgICBJTkNfT1AgPSAzMDcsCisgICAgIERFQ19PUCA9IDMwOCwKKyAgICAgTEVf
T1AgPSAzMDksCisgICAgIEdFX09QID0gMzEwLAorICAgICBFUV9PUCA9IDMxMSwKKyAgICAgTkVf
T1AgPSAzMTIsCisgICAgIEFORF9PUCA9IDMxMywKKyAgICAgT1JfT1AgPSAzMTQsCisgICAgIFhP
Ul9PUCA9IDMxNSwKKyAgICAgTVVMX0FTU0lHTiA9IDMxNiwKKyAgICAgRElWX0FTU0lHTiA9IDMx
NywKKyAgICAgQUREX0FTU0lHTiA9IDMxOCwKKyAgICAgTU9EX0FTU0lHTiA9IDMxOSwKKyAgICAg
TEVGVF9BU1NJR04gPSAzMjAsCisgICAgIFJJR0hUX0FTU0lHTiA9IDMyMSwKKyAgICAgQU5EX0FT
U0lHTiA9IDMyMiwKKyAgICAgWE9SX0FTU0lHTiA9IDMyMywKKyAgICAgT1JfQVNTSUdOID0gMzI0
LAorICAgICBTVUJfQVNTSUdOID0gMzI1LAorICAgICBMRUZUX1BBUkVOID0gMzI2LAorICAgICBS
SUdIVF9QQVJFTiA9IDMyNywKKyAgICAgTEVGVF9CUkFDS0VUID0gMzI4LAorICAgICBSSUdIVF9C
UkFDS0VUID0gMzI5LAorICAgICBMRUZUX0JSQUNFID0gMzMwLAorICAgICBSSUdIVF9CUkFDRSA9
IDMzMSwKKyAgICAgRE9UID0gMzMyLAorICAgICBDT01NQSA9IDMzMywKKyAgICAgQ09MT04gPSAz
MzQsCisgICAgIEVRVUFMID0gMzM1LAorICAgICBTRU1JQ09MT04gPSAzMzYsCisgICAgIEJBTkcg
PSAzMzcsCisgICAgIERBU0ggPSAzMzgsCisgICAgIFRJTERFID0gMzM5LAorICAgICBQTFVTID0g
MzQwLAorICAgICBTVEFSID0gMzQxLAorICAgICBTTEFTSCA9IDM0MiwKKyAgICAgUEVSQ0VOVCA9
IDM0MywKKyAgICAgTEVGVF9BTkdMRSA9IDM0NCwKKyAgICAgUklHSFRfQU5HTEUgPSAzNDUsCisg
ICAgIFZFUlRJQ0FMX0JBUiA9IDM0NiwKKyAgICAgQ0FSRVQgPSAzNDcsCisgICAgIEFNUEVSU0FO
RCA9IDM0OCwKKyAgICAgUVVFU1RJT04gPSAzNDkKICAgIH07CiAjZW5kaWYKIC8qIFRva2Vucy4g
ICovCkBAIC0xODIsNTIgKzE4MSw1MSBAQAogI2RlZmluZSBGTE9BVENPTlNUQU5UIDMwMgogI2Rl
ZmluZSBJTlRDT05TVEFOVCAzMDMKICNkZWZpbmUgQk9PTENPTlNUQU5UIDMwNAotI2RlZmluZSBG
SUVMRF9TRUxFQ1RJT04gMzA1Ci0jZGVmaW5lIExFRlRfT1AgMzA2Ci0jZGVmaW5lIFJJR0hUX09Q
IDMwNwotI2RlZmluZSBJTkNfT1AgMzA4Ci0jZGVmaW5lIERFQ19PUCAzMDkKLSNkZWZpbmUgTEVf
T1AgMzEwCi0jZGVmaW5lIEdFX09QIDMxMQotI2RlZmluZSBFUV9PUCAzMTIKLSNkZWZpbmUgTkVf
T1AgMzEzCi0jZGVmaW5lIEFORF9PUCAzMTQKLSNkZWZpbmUgT1JfT1AgMzE1Ci0jZGVmaW5lIFhP
Ul9PUCAzMTYKLSNkZWZpbmUgTVVMX0FTU0lHTiAzMTcKLSNkZWZpbmUgRElWX0FTU0lHTiAzMTgK
LSNkZWZpbmUgQUREX0FTU0lHTiAzMTkKLSNkZWZpbmUgTU9EX0FTU0lHTiAzMjAKLSNkZWZpbmUg
TEVGVF9BU1NJR04gMzIxCi0jZGVmaW5lIFJJR0hUX0FTU0lHTiAzMjIKLSNkZWZpbmUgQU5EX0FT
U0lHTiAzMjMKLSNkZWZpbmUgWE9SX0FTU0lHTiAzMjQKLSNkZWZpbmUgT1JfQVNTSUdOIDMyNQot
I2RlZmluZSBTVUJfQVNTSUdOIDMyNgotI2RlZmluZSBMRUZUX1BBUkVOIDMyNwotI2RlZmluZSBS
SUdIVF9QQVJFTiAzMjgKLSNkZWZpbmUgTEVGVF9CUkFDS0VUIDMyOQotI2RlZmluZSBSSUdIVF9C
UkFDS0VUIDMzMAotI2RlZmluZSBMRUZUX0JSQUNFIDMzMQotI2RlZmluZSBSSUdIVF9CUkFDRSAz
MzIKLSNkZWZpbmUgRE9UIDMzMwotI2RlZmluZSBDT01NQSAzMzQKLSNkZWZpbmUgQ09MT04gMzM1
Ci0jZGVmaW5lIEVRVUFMIDMzNgotI2RlZmluZSBTRU1JQ09MT04gMzM3Ci0jZGVmaW5lIEJBTkcg
MzM4Ci0jZGVmaW5lIERBU0ggMzM5Ci0jZGVmaW5lIFRJTERFIDM0MAotI2RlZmluZSBQTFVTIDM0
MQotI2RlZmluZSBTVEFSIDM0MgotI2RlZmluZSBTTEFTSCAzNDMKLSNkZWZpbmUgUEVSQ0VOVCAz
NDQKLSNkZWZpbmUgTEVGVF9BTkdMRSAzNDUKLSNkZWZpbmUgUklHSFRfQU5HTEUgMzQ2Ci0jZGVm
aW5lIFZFUlRJQ0FMX0JBUiAzNDcKLSNkZWZpbmUgQ0FSRVQgMzQ4Ci0jZGVmaW5lIEFNUEVSU0FO
RCAzNDkKLSNkZWZpbmUgUVVFU1RJT04gMzUwCisjZGVmaW5lIExFRlRfT1AgMzA1CisjZGVmaW5l
IFJJR0hUX09QIDMwNgorI2RlZmluZSBJTkNfT1AgMzA3CisjZGVmaW5lIERFQ19PUCAzMDgKKyNk
ZWZpbmUgTEVfT1AgMzA5CisjZGVmaW5lIEdFX09QIDMxMAorI2RlZmluZSBFUV9PUCAzMTEKKyNk
ZWZpbmUgTkVfT1AgMzEyCisjZGVmaW5lIEFORF9PUCAzMTMKKyNkZWZpbmUgT1JfT1AgMzE0Cisj
ZGVmaW5lIFhPUl9PUCAzMTUKKyNkZWZpbmUgTVVMX0FTU0lHTiAzMTYKKyNkZWZpbmUgRElWX0FT
U0lHTiAzMTcKKyNkZWZpbmUgQUREX0FTU0lHTiAzMTgKKyNkZWZpbmUgTU9EX0FTU0lHTiAzMTkK
KyNkZWZpbmUgTEVGVF9BU1NJR04gMzIwCisjZGVmaW5lIFJJR0hUX0FTU0lHTiAzMjEKKyNkZWZp
bmUgQU5EX0FTU0lHTiAzMjIKKyNkZWZpbmUgWE9SX0FTU0lHTiAzMjMKKyNkZWZpbmUgT1JfQVNT
SUdOIDMyNAorI2RlZmluZSBTVUJfQVNTSUdOIDMyNQorI2RlZmluZSBMRUZUX1BBUkVOIDMyNgor
I2RlZmluZSBSSUdIVF9QQVJFTiAzMjcKKyNkZWZpbmUgTEVGVF9CUkFDS0VUIDMyOAorI2RlZmlu
ZSBSSUdIVF9CUkFDS0VUIDMyOQorI2RlZmluZSBMRUZUX0JSQUNFIDMzMAorI2RlZmluZSBSSUdI
VF9CUkFDRSAzMzEKKyNkZWZpbmUgRE9UIDMzMgorI2RlZmluZSBDT01NQSAzMzMKKyNkZWZpbmUg
Q09MT04gMzM0CisjZGVmaW5lIEVRVUFMIDMzNQorI2RlZmluZSBTRU1JQ09MT04gMzM2CisjZGVm
aW5lIEJBTkcgMzM3CisjZGVmaW5lIERBU0ggMzM4CisjZGVmaW5lIFRJTERFIDMzOQorI2RlZmlu
ZSBQTFVTIDM0MAorI2RlZmluZSBTVEFSIDM0MQorI2RlZmluZSBTTEFTSCAzNDIKKyNkZWZpbmUg
UEVSQ0VOVCAzNDMKKyNkZWZpbmUgTEVGVF9BTkdMRSAzNDQKKyNkZWZpbmUgUklHSFRfQU5HTEUg
MzQ1CisjZGVmaW5lIFZFUlRJQ0FMX0JBUiAzNDYKKyNkZWZpbmUgQ0FSRVQgMzQ3CisjZGVmaW5l
IEFNUEVSU0FORCAzNDgKKyNkZWZpbmUgUVVFU1RJT04gMzQ5CiAKIAogCkBAIC0yMzYsOCArMjM0
LDkgQEAKIHR5cGVkZWYgdW5pb24gWVlTVFlQRQogCiB7CisjZGVmaW5lIFlZTFRZUEUgVFNvdXJj
ZUxvYworI2RlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKICAgICBzdHJ1Y3QgewotICAgICAg
ICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcg
KnN0cmluZzsKICAgICAgICAgICAgIGZsb2F0IGY7CkBAIC0yNDcsNyArMjQ2LDYgQEAgdHlwZWRl
ZiB1bmlvbiBZWVNUWVBFCiAgICAgICAgIFRTeW1ib2wqIHN5bWJvbDsKICAgICB9IGxleDsKICAg
ICBzdHJ1Y3QgewotICAgICAgICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAgIFRPcGVyYXRvciBv
cDsKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7
CkBAIC0yNjEsOCArMjU5LDggQEAgdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAgICAgICAgICAgICBU
UXVhbGlmaWVyIHF1YWxpZmllcjsKICAgICAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CiAg
ICAgICAgICAgICBUUGFyYW1ldGVyIHBhcmFtOwotICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVM
aW5lOwotICAgICAgICAgICAgVFR5cGVMaXN0KiB0eXBlTGlzdDsKKyAgICAgICAgICAgIFRGaWVs
ZCogZmllbGQ7CisgICAgICAgICAgICBURmllbGRMaXN0KiBmaWVsZExpc3Q7CiAgICAgICAgIH07
CiAgICAgfSBpbnRlcm07CiB9CkBAIC0yNzYsMyArMjc0LDE3IEBAIHR5cGVkZWYgdW5pb24gWVlT
VFlQRQogCiAKIAorI2lmICEgZGVmaW5lZCBZWUxUWVBFICYmICEgZGVmaW5lZCBZWUxUWVBFX0lT
X0RFQ0xBUkVECit0eXBlZGVmIHN0cnVjdCBZWUxUWVBFCit7CisgIGludCBmaXJzdF9saW5lOwor
ICBpbnQgZmlyc3RfY29sdW1uOworICBpbnQgbGFzdF9saW5lOworICBpbnQgbGFzdF9jb2x1bW47
Cit9IFlZTFRZUEU7CisjIGRlZmluZSB5eWx0eXBlIFlZTFRZUEUgLyogb2Jzb2xlc2NlbnQ7IHdp
bGwgYmUgd2l0aGRyYXduICovCisjIGRlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKKyMgZGVm
aW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCisjZW5kaWYKKworCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtT3V0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtT3V0LmNwcAkocmV2aXNpb24g
MTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybU91
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw3ICsxODksOSBAQCBib29sIFRPdXRwdXRUcmF2
ZXJzZXI6OnZpc2l0VW5hcnkoVmlzaXQgCiAgICAgICAgIGNhc2UgRU9wQW55OiAgICAgICAgICAg
IG91dCA8PCAiYW55IjsgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BB
bGw6ICAgICAgICAgICAgb3V0IDw8ICJhbGwiOyAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgIGRlZmF1bHQ6IG91dC5tZXNzYWdlKEVQcmVmaXhFcnJvciwgIkJhZCB1bmFyeSBvcCIp
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3Ip
OworICAgICAgICAgICAgb3V0IDw8ICJCYWQgdW5hcnkgb3AiOwogICAgIH0KIAogICAgIG91dCA8
PCAiICgiIDw8IG5vZGUtPmdldENvbXBsZXRlU3RyaW5nKCkgPDwgIikiOwpAQCAtMjA0LDcgKzIw
Niw4IEBAIGJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmkKICAgICBUSW5m
b1NpbmtCYXNlJiBvdXQgPSBzaW5rOwogCiAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wTnVs
bCkgewotICAgICAgICBvdXQubWVzc2FnZShFUHJlZml4RXJyb3IsICJub2RlIGlzIHN0aWxsIEVP
cE51bGwhIik7CisgICAgICAgIG91dC5wcmVmaXgoRVByZWZpeEVycm9yKTsKKyAgICAgICAgb3V0
IDw8ICJub2RlIGlzIHN0aWxsIEVPcE51bGwhIjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkBAIC0yNjMsNyArMjY2LDkgQEAgYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3Jl
Z2F0ZShWaQogCiAgICAgICAgIGNhc2UgRU9wRGVjbGFyYXRpb246ICAgb3V0IDw8ICJEZWNsYXJh
dGlvbjogIjsgICBicmVhazsKIAotICAgICAgICBkZWZhdWx0OiBvdXQubWVzc2FnZShFUHJlZml4
RXJyb3IsICJCYWQgYWdncmVnYXRpb24gb3AiKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIG91dC5wcmVmaXgoRVByZWZpeEVycm9yKTsKKyAgICAgICAgICAgIG91dCA8PCAiQmFkIGFn
Z3JlZ2F0aW9uIG9wIjsKICAgICB9CiAKICAgICBpZiAobm9kZS0+Z2V0T3AoKSAhPSBFT3BTZXF1
ZW5jZSAmJiBub2RlLT5nZXRPcCgpICE9IEVPcFBhcmFtZXRlcnMpCkBAIC0zMTEsOSArMzE2LDkg
QEAgdm9pZCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pbwogewogICAgIFRJbmZv
U2lua0Jhc2UmIG91dCA9IHNpbms7CiAKLSAgICBpbnQgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5n
ZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2Jq
ZWN0U2l6ZSgpOwogCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICBPdXRwdXRUcmVlVGV4
dChvdXQsIG5vZGUsIGRlcHRoKTsKICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpW2ldLmdldFR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBFYnRCb29sOgpAQCAt
MzM0LDcgKzMzOSw3IEBAIHZvaWQgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW8K
ICAgICAgICAgICAgICAgICBvdXQgPDwgIiAoY29uc3QgaW50KVxuIjsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgb3V0Lm1lc3Nh
Z2UoRVByZWZpeEludGVybmFsRXJyb3IsICJVbmtub3duIGNvbnN0YW50Iiwgbm9kZS0+Z2V0TGlu
ZSgpKTsKKyAgICAgICAgICAgICAgICBvdXQubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwg
bm9kZS0+Z2V0TGluZSgpLCAiVW5rbm93biBjb25zdGFudCIpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1lZGlhdGUuaAkocmV2aXNpb24gMTUyOTc5KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEw
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KIC8vCkBAIC0xOCw2ICsxOCw3IEBACiAKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcu
aCIKIAorI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlICJjb21waWxlci9Db21tb24uaCIK
ICNpbmNsdWRlICJjb21waWxlci9UeXBlcy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0NvbnN0YW50
VW5pb24uaCIKQEAgLTIwNiwxMCArMjA3LDE2IEBAIGNsYXNzIFRJbnRlcm1Ob2RlIHsKIHB1Ymxp
YzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpCiAK
LSAgICBUSW50ZXJtTm9kZSgpIDogbGluZSgwKSB7fQorICAgIFRJbnRlcm1Ob2RlKCkgeworICAg
ICAgICAvLyBUT0RPOiBNb3ZlIHRoaXMgdG8gVFNvdXJjZUxvYyBjb25zdHJ1Y3RvcgorICAgICAg
ICAvLyBhZnRlciBnZXR0aW5nIHJpZCBvZiBUUHVibGljVHlwZS4KKyAgICAgICAgbGluZS5maXJz
dF9maWxlID0gbGluZS5sYXN0X2ZpbGUgPSAwOworICAgICAgICBsaW5lLmZpcnN0X2xpbmUgPSBs
aW5lLmxhc3RfbGluZSA9IDA7CisgICAgfQorICAgIHZpcnR1YWwgflRJbnRlcm1Ob2RlKCkgeyB9
CiAKLSAgICBUU291cmNlTG9jIGdldExpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lOyB9Ci0gICAg
dm9pZCBzZXRMaW5lKFRTb3VyY2VMb2MgbCkgeyBsaW5lID0gbDsgfQorICAgIGNvbnN0IFRTb3Vy
Y2VMb2MmIGdldExpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lOyB9CisgICAgdm9pZCBzZXRMaW5l
KGNvbnN0IFRTb3VyY2VMb2MmIGwpIHsgbGluZSA9IGw7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0
cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKikgPSAwOwogICAgIHZpcnR1YWwgVEludGVybVR5cGVk
KiBnZXRBc1R5cGVkKCkgeyByZXR1cm4gMDsgfQpAQCAtMjIwLDcgKzIyNyw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFRJbnRlcm1TZWxlY3Rpb24qIGdldEFzU2VsZWN0aW9uTm9kZSgpIHsgcmV0
dXJuIDA7IH0KICAgICB2aXJ0dWFsIFRJbnRlcm1TeW1ib2wqIGdldEFzU3ltYm9sTm9kZSgpIHsg
cmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFRJbnRlcm1Mb29wKiBnZXRBc0xvb3BOb2RlKCkgeyBy
ZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgflRJbnRlcm1Ob2RlKCkgeyB9CiAKIHByb3RlY3RlZDoK
ICAgICBUU291cmNlTG9jIGxpbmU7CkBAIC0yNTksNiArMjY1LDEwIEBAIHB1YmxpYzoKICAgICBj
b25zdCBjaGFyKiBnZXRRdWFsaWZpZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiB0eXBlLmdldFF1
YWxpZmllclN0cmluZygpOyB9CiAgICAgVFN0cmluZyBnZXRDb21wbGV0ZVN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIHR5cGUuZ2V0Q29tcGxldGVTdHJpbmcoKTsgfQogCisgICAgaW50IHRvdGFsUmVn
aXN0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUudG90YWxSZWdpc3RlckNvdW50KCk7IH0K
KyAgICBpbnQgZWxlbWVudFJlZ2lzdGVyQ291bnQoKSBjb25zdCB7IHJldHVybiB0eXBlLmVsZW1l
bnRSZWdpc3RlckNvdW50KCk7IH0KKyAgICBpbnQgZ2V0QXJyYXlTaXplKCkgY29uc3QgeyByZXR1
cm4gdHlwZS5nZXRBcnJheVNpemUoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgVFR5cGUgdHlwZTsK
IH07CkBAIC0zNTgsNyArMzY4LDEwIEBAIHB1YmxpYzoKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlv
bihDb25zdGFudFVuaW9uICp1bmlvblBvaW50ZXIsIGNvbnN0IFRUeXBlJiB0KSA6IFRJbnRlcm1U
eXBlZCh0KSwgdW5pb25BcnJheVBvaW50ZXIodW5pb25Qb2ludGVyKSB7IH0KIAogICAgIENvbnN0
YW50VW5pb24qIGdldFVuaW9uQXJyYXlQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJh
eVBvaW50ZXI7IH0KLSAgICB2b2lkIHNldFVuaW9uQXJyYXlQb2ludGVyKENvbnN0YW50VW5pb24g
KmMpIHsgdW5pb25BcnJheVBvaW50ZXIgPSBjOyB9CisgICAgCisgICAgaW50IGdldElDb25zdChp
bnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVyID8gdW5pb25BcnJheVBv
aW50ZXJbaW5kZXhdLmdldElDb25zdCgpIDogMDsgfQorICAgIGZsb2F0IGdldEZDb25zdChpbnQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIHVuaW9uQXJyYXlQb2ludGVyID8gdW5pb25BcnJheVBvaW50
ZXJbaW5kZXhdLmdldEZDb25zdCgpIDogMC4wZjsgfQorICAgIGJvb2wgZ2V0QkNvbnN0KGludCBp
bmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXIgPyB1bmlvbkFycmF5UG9pbnRl
cltpbmRleF0uZ2V0QkNvbnN0KCkgOiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBUSW50ZXJtQ29u
c3RhbnRVbmlvbiogZ2V0QXNDb25zdGFudFVuaW9uKCkgIHsgcmV0dXJuIHRoaXM7IH0KICAgICB2
aXJ0dWFsIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciopOwpAQCAtNDQ3LDcgKzQ2MCw3
IEBAIHR5cGVkZWYgVFZlY3RvcjxpbnQ+IFRRdWFsaWZpZXJMaXN0OwogLy8KIGNsYXNzIFRJbnRl
cm1BZ2dyZWdhdGUgOiBwdWJsaWMgVEludGVybU9wZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBUSW50
ZXJtQWdncmVnYXRlKCkgOiBUSW50ZXJtT3BlcmF0b3IoRU9wTnVsbCksIHVzZXJEZWZpbmVkKGZh
bHNlKSwgZW5kTGluZSgwKSwgdXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSkgeyB9CisgICAgVElu
dGVybUFnZ3JlZ2F0ZSgpIDogVEludGVybU9wZXJhdG9yKEVPcE51bGwpLCB1c2VyRGVmaW5lZChm
YWxzZSksIHVzZUVtdWxhdGVkRnVuY3Rpb24oZmFsc2UpIHsgfQogICAgIFRJbnRlcm1BZ2dyZWdh
dGUoVE9wZXJhdG9yIG8pIDogVEludGVybU9wZXJhdG9yKG8pLCB1c2VFbXVsYXRlZEZ1bmN0aW9u
KGZhbHNlKSB7IH0KICAgICB+VEludGVybUFnZ3JlZ2F0ZSgpIHsgfQogCkBAIC00NjcsOSArNDgw
LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGVidWcoYm9vbCBkKSB7IGRlYnVnID0gZDsgfQog
ICAgIGJvb2wgZ2V0RGVidWcoKSB7IHJldHVybiBkZWJ1ZzsgfQogCi0gICAgdm9pZCBzZXRFbmRM
aW5lKFRTb3VyY2VMb2MgbGluZSkgeyBlbmRMaW5lID0gbGluZTsgfQotICAgIFRTb3VyY2VMb2Mg
Z2V0RW5kTGluZSgpIGNvbnN0IHsgcmV0dXJuIGVuZExpbmU7IH0KLQogICAgIHZvaWQgc2V0VXNl
RW11bGF0ZWRGdW5jdGlvbigpIHsgdXNlRW11bGF0ZWRGdW5jdGlvbiA9IHRydWU7IH0KICAgICBi
b29sIGdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSB7IHJldHVybiB1c2VFbXVsYXRlZEZ1bmN0aW9u
OyB9CiAKQEAgLTQ4Miw3ICs0OTIsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIG9wdGltaXpl
OwogICAgIGJvb2wgZGVidWc7Ci0gICAgVFNvdXJjZUxvYyBlbmRMaW5lOwogCiAgICAgLy8gSWYg
c2V0IHRvIHRydWUsIHJlcGxhY2UgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGNhbGwgd2l0aCBhbiBl
bXVsYXRlZCBvbmUKICAgICAvLyB0byB3b3JrIGFyb3VuZCBkcml2ZXIgYnVncy4KQEAgLTUzOCw3
ICs1NDcsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpblZpc2l0KGluVmlzaXQpLAogICAgICAg
ICAgICAgcG9zdFZpc2l0KHBvc3RWaXNpdCksCiAgICAgICAgICAgICByaWdodFRvTGVmdChyaWdo
dFRvTGVmdCksCi0gICAgICAgICAgICBkZXB0aCgwKSB7fQorICAgICAgICAgICAgZGVwdGgoMCks
CisgICAgICAgICAgICBtYXhEZXB0aCgwKSB7fQogICAgIHZpcnR1YWwgflRJbnRlcm1UcmF2ZXJz
ZXIoKSB7fTsKIAogICAgIHZpcnR1YWwgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKikg
e30KQEAgLTU1MCw3ICs1NjAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHZpc2l0TG9v
cChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AqKSB7cmV0dXJuIHRydWU7fQogICAgIHZpcnR1YWwg
Ym9vbCB2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCopIHtyZXR1cm4gdHJ1
ZTt9CiAKLSAgICB2b2lkIGluY3JlbWVudERlcHRoKCkge2RlcHRoKys7fQorICAgIGludCBnZXRN
YXhEZXB0aCgpIGNvbnN0IHtyZXR1cm4gbWF4RGVwdGg7fQorICAgIHZvaWQgaW5jcmVtZW50RGVw
dGgoKSB7ZGVwdGgrKzsgbWF4RGVwdGggPSBzdGQ6Om1heChtYXhEZXB0aCwgZGVwdGgpOyB9CiAg
ICAgdm9pZCBkZWNyZW1lbnREZXB0aCgpIHtkZXB0aC0tO30KIAogICAgIC8vIFJldHVybiB0aGUg
b3JpZ2luYWwgbmFtZSBpZiBoYXNoIGZ1bmN0aW9uIHBvaW50ZXIgaXMgTlVMTDsKQEAgLTU2NCw2
ICs1NzUsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBpbnQgZGVwdGg7CisgICAgaW50
IG1heERlcHRoOwogfTsKIAogI2VuZGlmIC8vIF9fSU5URVJNRURJQVRFX0gKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9sb2NhbGludGVy
bWVkaWF0ZS5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMzQg
KzI1LDMzIEBAIHB1YmxpYzogICAgCiAgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9i
YWxQb29sQWxsb2NhdG9yKQogCiAgICAgVEludGVybWVkaWF0ZShUSW5mb1NpbmsmIGkpIDogaW5m
b1NpbmsoaSkgeyB9Ci0gICAgVEludGVybVN5bWJvbCogYWRkU3ltYm9sKGludCBJZCwgY29uc3Qg
VFN0cmluZyYsIGNvbnN0IFRUeXBlJiwgVFNvdXJjZUxvYyk7CisgICAgVEludGVybVN5bWJvbCog
YWRkU3ltYm9sKGludCBJZCwgY29uc3QgVFN0cmluZyYsIGNvbnN0IFRUeXBlJiwgY29uc3QgVFNv
dXJjZUxvYyYpOwogICAgIFRJbnRlcm1UeXBlZCogYWRkQ29udmVyc2lvbihUT3BlcmF0b3IsIGNv
bnN0IFRUeXBlJiwgVEludGVybVR5cGVkKik7Ci0gICAgVEludGVybVR5cGVkKiBhZGRCaW5hcnlN
YXRoKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0
LCBUU291cmNlTG9jLCBUU3ltYm9sVGFibGUmKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZEFzc2ln
bihUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwg
VFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRJbmRleChUT3BlcmF0b3Igb3AsIFRJ
bnRlcm1UeXBlZCogYmFzZSwgVEludGVybVR5cGVkKiBpbmRleCwgVFNvdXJjZUxvYyk7Ci0gICAg
VEludGVybVR5cGVkKiBhZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtTm9kZSogY2hp
bGQsIFRTb3VyY2VMb2MsIFRTeW1ib2xUYWJsZSYpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGdy
b3dBZ2dyZWdhdGUoVEludGVybU5vZGUqIGxlZnQsIFRJbnRlcm1Ob2RlKiByaWdodCwgVFNvdXJj
ZUxvYyk7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSogbWFrZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSog
bm9kZSwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSogc2V0QWdncmVnYXRlT3Bl
cmF0b3IoVEludGVybU5vZGUqLCBUT3BlcmF0b3IsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1O
b2RlKiAgYWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybU5vZGVQYWlyIGNv
ZGUsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkU2VsZWN0aW9uKFRJbnRlcm1U
eXBlZCogY29uZCwgVEludGVybVR5cGVkKiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCogZmFsc2VC
bG9jaywgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb21tYShUSW50ZXJtVHlw
ZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1D
b25zdGFudFVuaW9uKiBhZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5pb24qLCBjb25zdCBUVHlw
ZSYsIFRTb3VyY2VMb2MpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQmluYXJ5TWF0aChUT3BlcmF0
b3Igb3AsIFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgY29uc3QgVFNv
dXJjZUxvYyYsIFRTeW1ib2xUYWJsZSYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQXNzaWduKFRP
cGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25z
dCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRJbmRleChUT3BlcmF0b3Igb3As
IFRJbnRlcm1UeXBlZCogYmFzZSwgVEludGVybVR5cGVkKiBpbmRleCwgY29uc3QgVFNvdXJjZUxv
YyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVy
bU5vZGUqIGNoaWxkLCBjb25zdCBUU291cmNlTG9jJiwgVFN5bWJvbFRhYmxlJik7CisgICAgVElu
dGVybUFnZ3JlZ2F0ZSogZ3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVmdCwgVEludGVybU5v
ZGUqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybUFnZ3JlZ2F0ZSogbWFr
ZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJ
bnRlcm1BZ2dyZWdhdGUqIHNldEFnZ3JlZ2F0ZU9wZXJhdG9yKFRJbnRlcm1Ob2RlKiwgVE9wZXJh
dG9yLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybU5vZGUqICBhZGRTZWxlY3Rpb24o
VEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBhaXIgY29kZSwgY29uc3QgVFNvdXJjZUxv
YyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwg
VEludGVybVR5cGVkKiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCogZmFsc2VCbG9jaywgY29uc3Qg
VFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkQ29tbWEoVEludGVybVR5cGVkKiBs
ZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVy
bUNvbnN0YW50VW5pb24qIGFkZENvbnN0YW50VW5pb24oQ29uc3RhbnRVbmlvbiosIGNvbnN0IFRU
eXBlJiwgY29uc3QgVFNvdXJjZUxvYyYpOwogICAgIFRJbnRlcm1UeXBlZCogcHJvbW90ZUNvbnN0
YW50VW5pb24oVEJhc2ljVHlwZSwgVEludGVybUNvbnN0YW50VW5pb24qKSA7Ci0gICAgYm9vbCBw
YXJzZUNvbnN0VHJlZShUU291cmNlTG9jLCBUSW50ZXJtTm9kZSosIENvbnN0YW50VW5pb24qLCBU
T3BlcmF0b3IsIFRTeW1ib2xUYWJsZSYsIFRUeXBlLCBib29sIHNpbmdsZUNvbnN0YW50UGFyYW0g
PSBmYWxzZSk7ICAgICAgICAKLSAgICBUSW50ZXJtTm9kZSogYWRkTG9vcChUTG9vcFR5cGUsIFRJ
bnRlcm1Ob2RlKiwgVEludGVybVR5cGVkKiwgVEludGVybVR5cGVkKiwgVEludGVybU5vZGUqLCBU
U291cmNlTG9jKTsKLSAgICBUSW50ZXJtQnJhbmNoKiBhZGRCcmFuY2goVE9wZXJhdG9yLCBUU291
cmNlTG9jKTsKLSAgICBUSW50ZXJtQnJhbmNoKiBhZGRCcmFuY2goVE9wZXJhdG9yLCBUSW50ZXJt
VHlwZWQqLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZFN3aXp6bGUoVFZlY3Rv
ckZpZWxkcyYsIFRTb3VyY2VMb2MpOworICAgIGJvb2wgcGFyc2VDb25zdFRyZWUoY29uc3QgVFNv
dXJjZUxvYyYsIFRJbnRlcm1Ob2RlKiwgQ29uc3RhbnRVbmlvbiosIFRPcGVyYXRvciwgVFN5bWJv
bFRhYmxlJiwgVFR5cGUsIGJvb2wgc2luZ2xlQ29uc3RhbnRQYXJhbSA9IGZhbHNlKTsgICAgICAg
IAorICAgIFRJbnRlcm1Ob2RlKiBhZGRMb29wKFRMb29wVHlwZSwgVEludGVybU5vZGUqLCBUSW50
ZXJtVHlwZWQqLCBUSW50ZXJtVHlwZWQqLCBUSW50ZXJtTm9kZSosIGNvbnN0IFRTb3VyY2VMb2Mm
KTsKKyAgICBUSW50ZXJtQnJhbmNoKiBhZGRCcmFuY2goVE9wZXJhdG9yLCBjb25zdCBUU291cmNl
TG9jJik7CisgICAgVEludGVybUJyYW5jaCogYWRkQnJhbmNoKFRPcGVyYXRvciwgVEludGVybVR5
cGVkKiwgY29uc3QgVFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1UeXBlZCogYWRkU3dpenpsZShU
VmVjdG9yRmllbGRzJiwgY29uc3QgVFNvdXJjZUxvYyYpOwogICAgIGJvb2wgcG9zdFByb2Nlc3Mo
VEludGVybU5vZGUqKTsKLQl2b2lkIHJlbW92ZShUSW50ZXJtTm9kZSopOworICAgIHZvaWQgcmVt
b3ZlKFRJbnRlcm1Ob2RlKik7CiAgICAgdm9pZCBvdXRwdXRUcmVlKFRJbnRlcm1Ob2RlKik7Ci0g
ICAgCi1wcm90ZWN0ZWQ6Ci0gICAgVEluZm9TaW5rJiBpbmZvU2luazsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIG9wZXJhdG9yPShUSW50ZXJtZWRpYXRlJik7IC8vIHByZXZlbnQgYXNzaWdubWVudHMK
KworICAgIFRJbmZvU2luayYgaW5mb1Npbms7CiB9OwogCiAjZW5kaWYgLy8gX0xPQ0FMX0lOVEVS
TUVESUFURV9JTkNMVURFRF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9wYXJzZUNvbnN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wYXJzZUNvbnN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsMTYgKzM4LDE2IEBAIHByb3RlY3RlZDoKICAgICBib29sIHZpc2l0TG9vcChW
aXNpdCB2aXNpdCwgVEludGVybUxvb3AqKTsKICAgICBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZp
c2l0LCBUSW50ZXJtQnJhbmNoKik7CiAKLSAgICBpbnQgaW5kZXg7CisgICAgc2l6ZV90IGluZGV4
OwogICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXk7CiAgICAgVFR5cGUgdHlwZTsKICAgICBU
T3BlcmF0b3IgY29uc3RydWN0b3JUeXBlOwogICAgIGJvb2wgc2luZ2xlQ29uc3RhbnRQYXJhbTsK
ICAgICBUSW5mb1NpbmsmIGluZm9TaW5rOwogICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGU7
Ci0gICAgaW50IHNpemU7IC8vIHNpemUgb2YgdGhlIGNvbnN0cnVjdG9yICggNCBmb3IgdmVjNCkK
KyAgICBzaXplX3Qgc2l6ZTsgLy8gc2l6ZSBvZiB0aGUgY29uc3RydWN0b3IgKCA0IGZvciB2ZWM0
KQogICAgIGJvb2wgaXNNYXRyaXg7Ci0gICAgaW50IG1hdHJpeFNpemU7IC8vIGRpbWVuc2lvbiBv
ZiB0aGUgbWF0cml4IChub21pbmFsIHNpemUgYW5kIG5vdCB0aGUgaW5zdGFuY2Ugc2l6ZSkKKyAg
ICBzaXplX3QgbWF0cml4U2l6ZTsgLy8gZGltZW5zaW9uIG9mIHRoZSBtYXRyaXggKG5vbWluYWwg
c2l6ZSBhbmQgbm90IHRoZSBpbnN0YW5jZSBzaXplKQogfTsKIAogLy8KQEAgLTYxLDcgKzYxLDcg
QEAgcHJvdGVjdGVkOgogCiB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRTeW1ib2woVEludGVy
bVN5bWJvbCogbm9kZSkKIHsKLSAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsICJTeW1ib2wgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5v
ZGUtPmdldExpbmUoKSk7CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5h
bEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJTeW1ib2wgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBj
b25zdHJ1Y3RvciIpOwogICAgIHJldHVybjsKIAogfQpAQCAtNzQsMTIgKzc0LDEyIEBAIGJvb2wg
VENvbnN0VHJhdmVyc2VyOjp2aXNpdEJpbmFyeShWaXNpdCAKICAgICAgICAgVFN0cmluZyBidWY7
CiAgICAgICAgIGJ1Zi5hcHBlbmQoIidjb25zdHJ1Y3RvcicgOiBhc3NpZ25pbmcgbm9uLWNvbnN0
YW50IHRvICIpOwogICAgICAgICBidWYuYXBwZW5kKHR5cGUuZ2V0Q29tcGxldGVTdHJpbmcoKSk7
Ci0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsIGJ1Zi5jX3N0cigp
LCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEVycm9yLCBub2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigpKTsKICAgICAgICAgZXJyb3IgPSB0
cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7ICAKICAgICB9CiAKLSAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJpbmFyeSBOb2RlIGZvdW5kIGluIGNvbnN0
YW50IGNvbnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmluYXJ5IE5vZGUg
Zm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiKTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7
CiB9CkBAIC04OSw3ICs4OSw3IEBAIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdFVuYXJ5KFZp
c2l0IHYKICAgICBUU3RyaW5nIGJ1ZjsKICAgICBidWYuYXBwZW5kKCInY29uc3RydWN0b3InIDog
YXNzaWduaW5nIG5vbi1jb25zdGFudCB0byAiKTsKICAgICBidWYuYXBwZW5kKHR5cGUuZ2V0Q29t
cGxldGVTdHJpbmcoKSk7Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwg
YnVmLmNfc3RyKCksIG5vZGUtPmdldExpbmUoKSk7CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCBidWYuY19zdHIoKSk7CiAgICAgZXJyb3Ig
PSB0cnVlOwogICAgIHJldHVybiBmYWxzZTsgIAogfQpAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wg
VENvbnN0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKICAgICAgICAgVFN0cmluZyBidWY7
CiAgICAgICAgIGJ1Zi5hcHBlbmQoIidjb25zdHJ1Y3RvcicgOiBhc3NpZ25pbmcgbm9uLWNvbnN0
YW50IHRvICIpOwogICAgICAgICBidWYuYXBwZW5kKHR5cGUuZ2V0Q29tcGxldGVTdHJpbmcoKSk7
Ci0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsIGJ1Zi5jX3N0cigp
LCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEVycm9yLCBub2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigpKTsKICAgICAgICAgZXJyb3IgPSB0
cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7ICAKICAgICB9CkBAIC0xNDQsMjQgKzE0NCwzMSBA
QCBib29sIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzCiAKIGJvb2wgVENvbnN0
VHJhdmVyc2VyOjp2aXNpdFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVEludGVybVNlbGVjdGlvbiog
bm9kZSkKIHsKLSAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3Is
ICJTZWxlY3Rpb24gTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdl
dExpbmUoKSk7CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCBub2RlLT5nZXRMaW5lKCksICJTZWxlY3Rpb24gTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25z
dHJ1Y3RvciIpOwogICAgIGVycm9yID0gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZv
aWQgVENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5p
b24qIG5vZGUpCiB7CisgICAgaWYgKCFub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKQorICAg
IHsKKyAgICAgICAgLy8gVGhlIGNvbnN0YW50IHdhcyBub3QgaW5pdGlhbGl6ZWQsIHRoaXMgc2hv
dWxkIGFscmVhZHkgaGF2ZSBiZWVuIGxvZ2dlZAorICAgICAgICBhc3NlcnQoaW5mb1NpbmsuaW5m
by5zaXplKCkgIT0gMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBDb25zdGFudFVu
aW9uKiBsZWZ0VW5pb25BcnJheSA9IHVuaW9uQXJyYXk7Ci0gICAgaW50IGluc3RhbmNlU2l6ZSA9
IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpOworICAgIHNpemVfdCBpbnN0YW5jZVNpemUgPSB0eXBlLmdl
dE9iamVjdFNpemUoKTsKIAogICAgIGlmIChpbmRleCA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghc2luZ2xlQ29uc3RhbnRQYXJhbSkgewotICAgICAgICBpbnQg
c2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIHNpemVfdCBz
aXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKICAgICAKICAgICAgICAgQ29u
c3RhbnRVbmlvbiAqcmlnaHRVbmlvbkFycmF5ID0gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIo
KTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoaW5kZXggPj0g
aW5zdGFuY2VTaXplKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGxlZnRV
bmlvbkFycmF5W2luZGV4XSA9IHJpZ2h0VW5pb25BcnJheVtpXTsKQEAgLTE2OSwxMSArMTc2LDEx
IEBAIHZvaWQgVENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24KICAgICAgICAgICAg
IChpbmRleCkrKzsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGludCB0b3RhbFNp
emUgPSBpbmRleCArIHNpemU7CisgICAgICAgIHNpemVfdCB0b3RhbFNpemUgPSBpbmRleCArIHNp
emU7CiAgICAgICAgIENvbnN0YW50VW5pb24gKnJpZ2h0VW5pb25BcnJheSA9IG5vZGUtPmdldFVu
aW9uQXJyYXlQb2ludGVyKCk7CiAgICAgICAgIGlmICghaXNNYXRyaXgpIHsKLSAgICAgICAgICAg
IGludCBjb3VudCA9IDA7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gaW5kZXg7IGkgPCB0b3Rh
bFNpemU7IGkrKykgeworICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSBpbmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsrKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGkgPj0gaW5zdGFuY2VTaXplKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTE4NSw5ICsxOTIsOSBAQCB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFu
dFVuaW9uCiAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSB7ICAvLyBmb3IgbWF0cml4IGNvbnN0cnVjdG9ycwotICAgICAgICAgICAgaW50
IGNvdW50ID0gMDsKLSAgICAgICAgICAgIGludCBlbGVtZW50ID0gaW5kZXg7Ci0gICAgICAgICAg
ICBmb3IgKGludCBpID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkrKykgeworICAgICAgICAgICAg
c2l6ZV90IGNvdW50ID0gMDsKKyAgICAgICAgICAgIHNpemVfdCBlbGVtZW50ID0gaW5kZXg7Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gaW5kZXg7IGkgPCB0b3RhbFNpemU7IGkrKykgewog
ICAgICAgICAgICAgICAgIGlmIChpID49IGluc3RhbmNlU2l6ZSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIGlmIChlbGVtZW50IC0gaSA9PSAwIHx8IChpIC0g
ZWxlbWVudCkgJSAobWF0cml4U2l6ZSArIDEpID09IDAgKQpAQCAtMjA2LDE0ICsyMTMsMTQgQEAg
dm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbgogCiBib29sIFRDb25zdFRy
YXZlcnNlcjo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCogbm9kZSkKIHsKLSAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJMb29wIE5vZGUg
Zm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5lKCkpOworICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgp
LCAiTG9vcCBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgZXJyb3Ig
PSB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZp
c2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKiBub2RlKQogewotICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJyYW5jaCBOb2RlIGZvdW5k
IGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkJy
YW5jaCBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgZXJyb3IgPSB0
cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTIyMyw3ICsyMzAsNyBAQCBib29sIFRDb25z
dFRyYXZlcnNlcjo6dmlzaXRCcmFuY2goVmlzaXQgCiAvLyBJbmRpdmlkdWFsIGZ1bmN0aW9ucyBj
YW4gYmUgaW5pdGlhbGl6ZWQgdG8gMCB0byBza2lwIHByb2Nlc3Npbmcgb2YgdGhhdAogLy8gdHlw
ZSBvZiBub2RlLiAgSXQncyBjaGlsZHJlbiB3aWxsIHN0aWxsIGJlIHByb2Nlc3NlZC4KIC8vCi1i
b29sIFRJbnRlcm1lZGlhdGU6OnBhcnNlQ29uc3RUcmVlKFRTb3VyY2VMb2MgbGluZSwgVEludGVy
bU5vZGUqIHJvb3QsIENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXksIFRPcGVyYXRvciBjb25zdHJ1
Y3RvclR5cGUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUsIFRUeXBlIHQsIGJvb2wgc2luZ2xl
Q29uc3RhbnRQYXJhbSkKK2Jvb2wgVEludGVybWVkaWF0ZTo6cGFyc2VDb25zdFRyZWUoY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgVEludGVybU5vZGUqIHJvb3QsIENvbnN0YW50VW5pb24qIHVuaW9u
QXJyYXksIFRPcGVyYXRvciBjb25zdHJ1Y3RvclR5cGUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFi
bGUsIFRUeXBlIHQsIGJvb2wgc2luZ2xlQ29uc3RhbnRQYXJhbSkKIHsKICAgICBpZiAocm9vdCA9
PSAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9jb21tb24udmN4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9jb21tb24udmN4
cHJvagkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yX2NvbW1vbi52Y3hwcm9qCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3MyBA
QAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8UHJvamVjdCBE
ZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3Nj
aGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3Jv
dXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+DQorICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8
L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IkRlYnVnfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRp
b24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZp
Z3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdp
bjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAg
ICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+DQor
ICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxh
dGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgIDwv
SXRlbUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KKyAgICA8UHJv
amVjdEd1aWQ+ezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH08L1Byb2plY3RH
dWlkPg0KKyAgICA8Um9vdE5hbWVzcGFjZT5jb21waWxlcjwvUm9vdE5hbWVzcGFjZT4NCisgICAg
PEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPElt
cG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9w
cyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAg
PENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAg
ICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQcm9ncmFt
T3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwvUHJvcGVy
dHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAg
IDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisg
ICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91
cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25m
aWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENo
YXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4NCisgICAgPFdob2xlUHJvZ3JhbU9wdGlt
aXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICA8L1Byb3BlcnR5R3Jv
dXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENvbmZp
Z3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8Q2hh
cmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+
DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4NCisgIDwvSW1wb3J0
R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5
U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisg
IDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVj
dD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBD
b25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1w
b3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCisgIDxQ
cm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Q
cm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1
cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChDb25maWd1cmF0aW9uKVxjb21tb25c
PC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQoQ29uZmln
dXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRp
b24pXDwvSW50RGlyPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0
aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKENvbmZpZ3VyYXRpb24pXGNvbW1vblw8
L0ludERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtKVwkKENvbmZp
Z3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFBsYXRmb3JtKVwkKENvbmZpZ3Vy
YXRpb24pXDwvSW50RGlyPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9u
R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8
L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFBy
b2plY3REaXIpOyQoUHJvamVjdERpcikuLi87JChQcm9qZWN0RGlyKS4uLy4uL2luY2x1ZGU7JShB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19MSUI7X0NS
VF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp
PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwv
TWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hl
Y2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhy
ZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0K
KyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8
L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdh
cm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250
aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2Fy
bmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ3MTg7JShEaXNh
YmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVu
dmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGlt
aXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9qZWN0RGlyKS4uLzskKFByb2plY3REaXIp
Li4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4z
MjtfREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5p
bWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hl
Y2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGlt
ZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJl
Y29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2Fy
bmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vy
cm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25G
b3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxE
aXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0MjY3
OzQ1MTI7NDcwMjs0NzE4OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lm
aWNXYXJuaW5ncz4NCisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+
DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8
T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPElubGluZUZ1bmN0
aW9uRXhwYW5zaW9uPkFueVN1aXRhYmxlPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4NCisgICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpOyQoUHJvamVjdERp
cikuLi87JChQcm9qZWN0RGlyKS4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19MSUI7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRF
O05PTUlOTUFYO19TRUNVUkVfU0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVk
PC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9Q
cmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xl
dmVsPg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJy
b3I+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAw
OzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDcxODslKERpc2FibGVTcGVjaWZp
Y1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAg
ICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVu
dD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+
TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+
QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9qZWN0RGlyKS4uLzskKFByb2pl
Y3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5XSU4zMjtOREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7X1NF
Q1VSRV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJy
YXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVh
ZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAg
PFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25G
b3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQy
Mzk7NDI0NDs0MjQ1OzQyNjc7NDUxMjs0NzAyOzQ3MTg7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5n
cyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRl
bURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IkNvbXBpbGVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZWJ1Zy5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGV0ZWN0Q2FsbERlcHRoLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaWFnbm9zdGljcy5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iRGlyZWN0aXZlSGFuZGxlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iRm9yTG9vcFVucm9sbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5m
b1NpbmsuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkluaXRpYWxpemUuY3BwIiAv
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkluaXRpYWxpemVEbGwuY3BwIiAvPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IkluaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwIiAvPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IkludGVybWVkaWF0ZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iaW50ZXJtT3V0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbnRl
cm1UcmF2ZXJzZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iTWFwTG9uZ1Zhcmlh
YmxlTmFtZXMuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im9zc291cmNlX3dpbi5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icGFyc2VDb25zdC5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iUGFyc2VIZWxwZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IlBvb2xBbGxvYy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUXVh
bGlmaWVyQWxpdmUuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlJlbW92ZVRyZWUu
Y3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlNoYWRlckxhbmcuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IlN5bWJvbFRhYmxlLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJ1dGlsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJWYWxpZGF0
ZUxpbWl0YXRpb25zLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJWYXJpYWJsZUlu
Zm8uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlZhcmlhYmxlUGFja2VyLmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJnbHNsYW5nX2xleC5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iZ2xzbGFuZ190YWIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhUcmF2ZXJz
ZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0idGltaW5nXFJlc3RyaWN0RnJhZ21l
bnRTaGFkZXJUaW1pbmcuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InRpbWluZ1xS
ZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cdGhpcmRfcGFydHlcY29tcGlsZXJcQXJyYXlCb3VuZHNDbGFtcGVyLmNwcCIgLz4NCisg
IDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPEN1c3RvbUJ1aWxkIEluY2x1ZGU9
Imdsc2xhbmcubCI+DQorICAgICAgPE1lc3NhZ2UgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICAgIDwvTWVzc2FnZT4NCisgICAg
ICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+DQorICAgICAgPC9Db21tYW5kPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5wdXRz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4lKEFkZGl0aW9uYWxJbnB1dHMpPC9BZGRpdGlvbmFsSW5wdXRzPg0KKyAgICAgIDxPdXRwdXRz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4lKE91dHB1dHMpPC9PdXRwdXRzPg0KKyAgICAgIDxNZXNzYWdlIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgICAgPC9NZXNzYWdl
Pg0KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+DQorICAgICAgPC9Db21tYW5kPg0KKyAgICAgIDxBZGRpdGlvbmFs
SW5wdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+JShBZGRpdGlvbmFsSW5wdXRzKTwvQWRkaXRpb25hbElucHV0cz4NCisgICAgICA8T3V0
cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2
NCciPiUoT3V0cHV0cyk8L091dHB1dHM+DQorICAgICAgPE1lc3NhZ2UgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgICAgPC9N
ZXNzYWdlPg0KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8
QWRkaXRpb25hbElucHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4lKEFkZGl0aW9uYWxJbnB1dHMpPC9BZGRpdGlvbmFsSW5wdXRz
Pg0KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPiUoT3V0cHV0cyk8L091dHB1dHM+DQorICAgICAgPE1lc3Nh
Z2UgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPg0KKyAgICAgIDwvTWVzc2FnZT4NCisgICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAgICAgPC9Db21t
YW5kPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5wdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4lKEFkZGl0aW9uYWxJbnB1dHMpPC9BZGRp
dGlvbmFsSW5wdXRzPg0KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4lKE91dHB1dHMpPC9PdXRwdXRzPg0KKyAg
ICA8L0N1c3RvbUJ1aWxkPg0KKyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iZ2xzbGFuZy55Ij4N
CisgICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAgIDxDb21tYW5kIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4N
CisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiUoT3V0cHV0cyk8L091dHB1dHM+
DQorICAgICAgPE1lc3NhZ2UgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgICA8L01lc3NhZ2U+DQorICAgICAgPENvbW1hbmQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisg
ICAgICA8L0NvbW1hbmQ+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4lKE91dHB1dHMpPC9PdXRwdXRzPg0KKyAg
ICAgIDxNZXNzYWdlIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPg0KKyAgICAgIDwvTWVzc2FnZT4NCisgICAgICA8Q29tbWFuZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4N
CisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JShPdXRwdXRzKTwvT3V0cHV0
cz4NCisgICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAgIDxDb21tYW5k
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij4NCisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiUoT3V0cHV0cyk8L091dHB1
dHM+DQorICAgIDwvQ3VzdG9tQnVpbGQ+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQmFzZVR5cGVzLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJDb21tb24uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJDb25zdGFu
dFVuaW9uLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVidWcuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJEZXRlY3RDYWxsRGVwdGguaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJEaWFnbm9zdGljcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRp
cmVjdGl2ZUhhbmRsZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJGb3JMb29wVW5y
b2xsLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSGFzaE5hbWVzLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5mb1NpbmsuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJJbml0aWFsaXplLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6
ZURsbC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkluaXRpYWxpemVHbG9iYWxzLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImludGVybWVkaWF0ZS5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9ImxvY2FsaW50ZXJtZWRpYXRlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJNTWFwLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ib3NpbmNsdWRlLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUGFyc2VIZWxwZXIuaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJQb29sQWxsb2MuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJR
dWFsaWZpZXJBbGl2ZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlbW92ZVRyZWUu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJSZW5hbWVGdW5jdGlvbi5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcR0xTTEFOR1xTaGFkZXJMYW5nLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU2hIYW5kbGUuaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJTeW1ib2xUYWJsZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IlR5cGVzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0idXRpbC5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IlZhbGlkYXRlTGltaXRhdGlvbnMuaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJWYXJpYWJsZUluZm8uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJWYXJpYWJsZVBhY2tlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Imdsc2xhbmdf
dGFiLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0idGltaW5nXFJlc3RyaWN0RnJhZ21l
bnRTaGFkZXJUaW1pbmcuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJ0aW1pbmdcUmVz
dHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJk
ZXBncmFwaFxEZXBlbmRlbmN5R3JhcGguaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJk
ZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cdGhpcmRfcGFydHlcY29tcGlsZXJcQXJyYXlCb3VuZHNDbGFtcGVyLmgi
IC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRo
KVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVu
c2lvblRhcmdldHMiPg0KKyAgPC9JbXBvcnRHcm91cD4NCis8L1Byb2plY3Q+CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9jb21tb24udmN4cHJv
ai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yX2NvbW1vbi52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9jb21tb24udmN4
cHJvai5maWx0ZXJzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3MSBAQAor77u/PD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQu
MCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQv
MjAwMyI+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxl
cyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJB
MzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7
Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+DQorICAgIDwv
RmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlc1xnZW5lcmF0ZWQiPg0K
KyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlYjhkYTE1Ny1iMjljLTQzYzMtODgwZC01NDY3OWUx
NzZkYzV9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJ
bmNsdWRlPSJTb3VyY2UgRmlsZXNcZGVwZ3JhcGgiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVy
PntiNTQxMGQzYS1jM2M4LTRhZTYtODQzYS1iMDAwZDY1MjYzMmV9PC9VbmlxdWVJZGVudGlmaWVy
Pg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXNcdGlt
aW5nIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YTk4NDc2MTEtZGNkNS00Yzg5LTgyNjIt
YTIyYjk2YzdjOThkfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxG
aWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57
OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4N
CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+
DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlc1xnZW5l
cmF0ZWQiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswOTRmNzExNS0zNWQzLTRjNjMtODcw
Yy1hYjVmMzkzZGMyYzJ9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAg
PEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXNcdGltaW5nIj4NCisgICAgICA8VW5pcXVlSWRl
bnRpZmllcj57NWY1NzQyZTktMTVlMS00M2I0LWIxZTctMGMxMThiZTE0ZTA0fTwvVW5pcXVlSWRl
bnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZp
bGVzXGRlcGdyYXBoIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YzQwMDdlMzUtM2MxMS00
NGQ2LTk1ZjctYmI4MWRiNTI4MDY4fTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+
DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJDb21waWxlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQor
ICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlYnVnLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGV0ZWN0Q2FsbERlcHRoLmNwcCI+DQorICAgICAgPEZp
bHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iRGlhZ25vc3RpY3MuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJEaXJlY3RpdmVIYW5kbGVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRm9yTG9v
cFVucm9sbC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkluZm9TaW5rLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IkluaXRpYWxpemVEbGwuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJ
bml0aWFsaXplUGFyc2VDb250ZXh0LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW50
ZXJtZWRpYXRlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iaW50ZXJtT3V0LmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW50ZXJtVHJhdmVyc2UuY3BwIj4NCisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJNYXBMb25nVmFyaWFibGVOYW1lcy5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Im9zc291cmNlX3dpbi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
InBhcnNlQ29uc3QuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQYXJzZUhlbHBlci5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlBvb2xBbGxvYy5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IlF1YWxpZmllckFsaXZlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iUmVtb3ZlVHJlZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlNoYWRlckxh
bmcuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTeW1ib2xUYWJsZS5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9InV0aWwuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJWYWxpZGF0ZUxpbWl0YXRpb25zLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVmFy
aWFibGVJbmZvLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVmFyaWFibGVQYWNrZXIu
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJnbHNsYW5nX2xleC5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzXGdlbmVyYXRlZDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGls
ZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJnbHNsYW5nX3RhYi5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzXGdlbmVyYXRlZDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGguY3BwIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xkZXBncmFwaDwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3Jh
cGhCdWlsZGVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcZGVwZ3JhcGg8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iZGVwZ3Jh
cGhcRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXNcZGVwZ3JhcGg8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoVHJhdmVyc2UuY3BwIj4NCisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlc1xkZXBncmFwaDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJ0aW1pbmdcUmVzdHJpY3RGcmFnbWVudFNoYWRlclRp
bWluZy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXHRpbWluZzwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJ0aW1pbmdcUmVzdHJp
Y3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1x0
aW1pbmc8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iQXJyYXlCb3VuZHNDbGFtcGVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3Jv
dXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQmFzZVR5cGVzLmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IkJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IkNvbW1vbi5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJDb25zdGFudFVu
aW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImRlYnVnLmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IkRldGVjdENhbGxEZXB0aC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJEaWFnbm9zdGljcy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJEaXJlY3RpdmVIYW5k
bGVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkZvckxvb3BVbnJvbGwuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5mb1NpbmsuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iSW5pdGlhbGl6ZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbml0aWFsaXplRGxs
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkluaXRpYWxpemVHbG9iYWxzLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkluaXRpYWxpemVQYXJzZUNvbnRleHQuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iaW50ZXJtZWRpYXRlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9ImxvY2FsaW50ZXJtZWRpYXRlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik1hcExv
bmdWYXJpYWJsZU5hbWVzLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik1NYXAuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ib3NpbmNsdWRlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IlBhcnNlSGVscGVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlBvb2xBbGxv
Yy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJRdWFsaWZpZXJBbGl2ZS5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJSZW1vdmVUcmVlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IlJlbmFtZUZ1bmN0aW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXGlu
Y2x1ZGVcR0xTTEFOR1xTaGFkZXJMYW5nLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNo
SGFuZGxlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlN5bWJvbFRhYmxlLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlR5cGVzLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InV0aWwuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVmFsaWRhdGVMaW1pdGF0aW9ucy5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJWYXJpYWJsZUluZm8uaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iVmFyaWFibGVQYWNrZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iZ2xzbGFuZ190YWIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcZ2VuZXJhdGVk
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InRp
bWluZ1xSZXN0cmljdEZyYWdtZW50U2hhZGVyVGltaW5nLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzXHRpbWluZzwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJ0aW1pbmdcUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcdGltaW5nPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaC5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xkZXBncmFwaDwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3Jh
cGhCdWlsZGVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXGRlcGdyYXBoPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImRlcGdyYXBo
XERlcGVuZGVuY3lHcmFwaE91dHB1dC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xk
ZXBncmFwaDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJIYXNoTmFtZXMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQXJyYXlCb3VuZHND
bGFtcGVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q3VzdG9t
QnVpbGQgSW5jbHVkZT0iZ2xzbGFuZy5sIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0N1c3RvbUJ1aWxkPg0KKyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0i
Z2xzbGFuZy55Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0N1c3RvbUJ1aWxkPg0KKyAgPC9JdGVtR3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yX2hsc2wudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9obHNsLnZjeHByb2oJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9obHNs
LnZjeHByb2oJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTY0IEBACivvu788P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWls
ZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29t
L2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENv
bmZpZ3VyYXRpb25zIj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVn
fFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisg
ICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0
aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisg
ICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZv
cm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFBy
b2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25m
aWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMy
PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlv
bj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3Jt
Pg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJv
cGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+DQorICAgIDxQcm9qZWN0R3VpZD57NTYyMEYwRTQt
NkM0My00OUJDLUExNzgtQjgwNEUxQTBDM0E3fTwvUHJvamVjdEd1aWQ+DQorICAgIDxSb290TmFt
ZXNwYWNlPkNyb3NzQ29tcGlsZXJITFNMPC9Sb290TmFtZXNwYWNlPg0KKyAgICA8S2V5d29yZD5X
aW4zMlByb2o8L0tleXdvcmQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2pl
Y3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPg0KKyAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJh
dGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0
ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0
aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4N
CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1
cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJh
Y3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8
UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlv
blR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJT
ZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9u
PnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisg
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlv
blR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJT
ZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9y
dCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+DQorICA8
SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4NCisgIDwvSW1wb3J0R3JvdXA+
DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9y
dCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIu
cHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0K
KyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0
YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCck
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFi
ZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRp
b249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2Vy
LnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3Jv
dXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCisgIDxQcm9wZXJ0
eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0
RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9u
KVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChDb25maWd1cmF0aW9uKVxobHNsXDwvSW50RGly
Pg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERp
cj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj4kKENvbmZpZ3VyYXRpb24pXGhsc2xcPC9JbnREaXI+DQorICAg
IDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9PdXRE
aXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj4kKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0K
KyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilc
PC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9J
bnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+DQor
ICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0
aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpciku
Li87JChQcm9qZWN0RGlyKS4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19MSUI7X0NSVF9TRUNVUkVfTk9fV0FSTklOR1M7Tk9N
SU5NQVg7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25z
Pg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8
QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4N
CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFy
eT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRl
cj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxU
cmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPERl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5
OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVT
cGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRpb25H
cm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAg
ICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5l
RnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0K
KyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPg0KKyAg
ICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikuLi87JChQcm9q
ZWN0RGlyKS4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+V0lOMzI7TkRFQlVHO19MSUI7X0NSVF9TRUNVUkVfTk9fV0FSTklOR1M7Tk9NSU5NQVg7X1NF
Q1VSRV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJy
YXJ5Pg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlu
a2luZz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhl
YWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAg
IDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAg
PERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0
MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2Fi
bGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRp
b25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxU
YXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQor
ICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0
aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpciku
Li87JChQcm9qZWN0RGlyKS4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19MSUI7X0NSVF9TRUNVUkVfTk9fV0FSTklOR1M7Tk9N
SU5NQVg7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25z
Pg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8
QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4N
CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFy
eT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRl
cj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxE
aXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEy
OzQ3MDI7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdz
Pg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVh
dFdhcm5pbmdBc0Vycm9yPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRpb25H
cm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRh
cmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisg
ICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRp
b24+DQorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkFueVN1aXRhYmxlPC9JbmxpbmVG
dW5jdGlvbkV4cGFuc2lvbj4NCisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJp
bnNpY0Z1bmN0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFBy
b2plY3REaXIpLi4vOyQoUHJvamVjdERpcikuLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfTElCO19DUlRfU0VDVVJFX05PX1dB
Uk5JTkdTO05PTUlOTUFYO19TRUNVUkVfU0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRo
cmVhZGVkPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1
ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAg
ICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dh
cm5pbmdMZXZlbD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQx
ODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9E
aXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Q
cm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPFRyZWF0V2Fy
bmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IkNvZGVHZW5ITFNMLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJEZXRlY3REaXNjb250aW51aXR5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJP
dXRwdXRITFNMLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTZWFyY2hTeW1ib2wu
Y3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlRyYW5zbGF0b3JITFNMLmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJVbmZvbGRTaG9ydENpcmN1aXQuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IlVuaWZvcm0uY3BwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQor
ICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRldGVjdERpc2NvbnRpbnVp
dHkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJPdXRwdXRITFNMLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iU2VhcmNoU3ltYm9sLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iVHJhbnNsYXRvckhMU0wuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJV
bmZvbGRTaG9ydENpcmN1aXQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJVbmlmb3Jt
LmgiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQ
YXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4
dGVuc2lvblRhcmdldHMiPg0KKyAgPC9JbXBvcnRHcm91cD4NCis8L1Byb2plY3Q+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3JfaGxzbC52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3JfaGxzbC52Y3hwcm9q
LmZpbHRlcnMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvcl9obHNsLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1NiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8
UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29m
dC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Rmls
dGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRG
QzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+DQor
ICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2Fz
bXg8L0V4dGVuc2lvbnM+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9Ikhl
YWRlciBGaWxlcyI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIw
NC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgICAgPEV4dGVuc2lv
bnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPg0KKyAgICA8L0ZpbHRlcj4N
CisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJDb2RlR2VuSExTTC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRldGVjdERpc2Nv
bnRpbnVpdHkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJPdXRwdXRITFNMLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2VhcmNoU3ltYm9sLmNwcCI+DQorICAgICAgPEZp
bHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iVHJhbnNsYXRvckhMU0wuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJj
ZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJVbmZvbGRTaG9ydENpcmN1aXQuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJV
bmlmb3JtLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iRGV0ZWN0RGlzY29udGludWl0eS5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJPdXRwdXRITFNMLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNlYXJjaFN5
bWJvbC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJUcmFuc2xhdG9ySExTTC5oIj4NCisg
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJVbmZvbGRTaG9ydENpcmN1aXQuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iVW5pZm9ybS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgIDwvSXRlbUdyb3VwPg0KKzwvUHJvamVjdD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yLzY0Yml0LXRva2VuaXplci1zYWZldHkucGF0Y2gK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci82NGJpdC10b2tlbml6ZXItc2FmZXR5LnBhdGNoCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci82NGJpdC10b2tl
bml6ZXItc2FmZXR5LnBhdGNoCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1OSBAQAorLS0tIGEv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwCisrKysgYi9zcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAKK0BAIC01Niw2ICs1Niw3IEBAIHR5cGVkZWYg
aW50MTZfdCBmbGV4X2ludDE2X3Q7CisgdHlwZWRlZiB1aW50MTZfdCBmbGV4X3VpbnQxNl90Owor
IHR5cGVkZWYgaW50MzJfdCBmbGV4X2ludDMyX3Q7CisgdHlwZWRlZiB1aW50MzJfdCBmbGV4X3Vp
bnQzMl90OworK3R5cGVkZWYgdWludDY0X3QgZmxleF91aW50NjRfdDsKKyAjZWxzZQorIHR5cGVk
ZWYgc2lnbmVkIGNoYXIgZmxleF9pbnQ4X3Q7CisgdHlwZWRlZiBzaG9ydCBpbnQgZmxleF9pbnQx
Nl90OworQEAgLTE3OSw2ICsxODAsMTEgQEAgdHlwZWRlZiB2b2lkKiB5eXNjYW5fdDsKKyB0eXBl
ZGVmIHN0cnVjdCB5eV9idWZmZXJfc3RhdGUgKllZX0JVRkZFUl9TVEFURTsKKyAjZW5kaWYKKyAK
KysjaWZuZGVmIFlZX1RZUEVERUZfWVlfU0laRV9UCisrI2RlZmluZSBZWV9UWVBFREVGX1lZX1NJ
WkVfVAorK3R5cGVkZWYgc2l6ZV90IHl5X3NpemVfdDsKKysjZW5kaWYKKysKKyAjZGVmaW5lIEVP
Ql9BQ1RfQ09OVElOVUVfU0NBTiAwCisgI2RlZmluZSBFT0JfQUNUX0VORF9PRl9GSUxFIDEKKyAj
ZGVmaW5lIEVPQl9BQ1RfTEFTVF9NQVRDSCAyCitAQCAtMjAxLDExICsyMDcsNiBAQCB0eXBlZGVm
IHN0cnVjdCB5eV9idWZmZXJfc3RhdGUgKllZX0JVRkZFUl9TVEFURTsKKyAKKyAjZGVmaW5lIHVu
cHV0KGMpIHl5dW5wdXQoIGMsIHl5Zy0+eXl0ZXh0X3B0ciAsIHl5c2Nhbm5lciApCisgCistI2lm
bmRlZiBZWV9UWVBFREVGX1lZX1NJWkVfVAorLSNkZWZpbmUgWVlfVFlQRURFRl9ZWV9TSVpFX1QK
Ky10eXBlZGVmIHNpemVfdCB5eV9zaXplX3Q7CistI2VuZGlmCistCisgI2lmbmRlZiBZWV9TVFJV
Q1RfWVlfQlVGRkVSX1NUQVRFCisgI2RlZmluZSBZWV9TVFJVQ1RfWVlfQlVGRkVSX1NUQVRFCisg
c3RydWN0IHl5X2J1ZmZlcl9zdGF0ZQorQEAgLTIyMyw3ICsyMjQsNyBAQCBzdHJ1Y3QgeXlfYnVm
ZmVyX3N0YXRlCisgCS8qIE51bWJlciBvZiBjaGFyYWN0ZXJzIHJlYWQgaW50byB5eV9jaF9idWYs
IG5vdCBpbmNsdWRpbmcgRU9CCisgCSAqIGNoYXJhY3RlcnMuCisgCSAqLworLQlpbnQgeXlfbl9j
aGFyczsKKysJeXlfc2l6ZV90IHl5X25fY2hhcnM7CisgCisgCS8qIFdoZXRoZXIgd2UgIm93biIg
dGhlIGJ1ZmZlciAtIGkuZS4sIHdlIGtub3cgd2UgY3JlYXRlZCBpdCwKKyAJICogYW5kIGNhbiBy
ZWFsbG9jKCkgaXQgdG8gZ3JvdyBpdCwgYW5kIHNob3VsZCBmcmVlKCkgaXQgdG8KK0BAIC0zMDIs
NyArMzAzLDcgQEAgc3RhdGljIHZvaWQgcHBfaW5pdF9idWZmZXIgKFlZX0JVRkZFUl9TVEFURSBi
LEZJTEUgKmZpbGUgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorIFlZX0JVRkZFUl9TVEFURSBw
cF9zY2FuX2J1ZmZlciAoY2hhciAqYmFzZSx5eV9zaXplX3Qgc2l6ZSAseXlzY2FuX3QgeXlzY2Fu
bmVyICk7CisgWVlfQlVGRkVSX1NUQVRFIHBwX3NjYW5fc3RyaW5nICh5eWNvbnN0IGNoYXIgKnl5
X3N0ciAseXlzY2FuX3QgeXlzY2FubmVyICk7CistWVlfQlVGRkVSX1NUQVRFIHBwX3NjYW5fYnl0
ZXMgKHl5Y29uc3QgY2hhciAqYnl0ZXMsaW50IGxlbiAseXlzY2FuX3QgeXlzY2FubmVyICk7Cisr
WVlfQlVGRkVSX1NUQVRFIHBwX3NjYW5fYnl0ZXMgKHl5Y29uc3QgY2hhciAqYnl0ZXMseXlfc2l6
ZV90IGxlbiAseXlzY2FuX3QgeXlzY2FubmVyICk7CisgCisgdm9pZCAqcHBhbGxvYyAoeXlfc2l6
ZV90ICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyB2b2lkICpwcHJlYWxsb2MgKHZvaWQgKix5eV9z
aXplX3QgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworQEAgLTM1Myw3ICszNTQsNyBAQCBzdGF0aWMg
dm9pZCB5eV9mYXRhbF9lcnJvciAoeXljb25zdCBjaGFyIG1zZ1tdICx5eXNjYW5fdCB5eXNjYW5u
ZXIgKTsKKyAgKi8KKyAjZGVmaW5lIFlZX0RPX0JFRk9SRV9BQ1RJT04gXAorIAl5eWctPnl5dGV4
dF9wdHIgPSB5eV9icDsgXAorLQl5eWxlbmcgPSAoc2l6ZV90KSAoeXlfY3AgLSB5eV9icCk7IFwK
KysJeXlsZW5nID0gKHl5X3NpemVfdCkgKHl5X2NwIC0geXlfYnApOyBcCisgCXl5Zy0+eXlfaG9s
ZF9jaGFyID0gKnl5X2NwOyBcCisgCSp5eV9jcCA9ICdcMCc7IFwKKyAJeXlnLT55eV9jX2J1Zl9w
ID0geXlfY3A7CitAQCAtNTc5LDggKzU4MCw4IEBAIHN0cnVjdCB5eWd1dHNfdAorICAgICBzaXpl
X3QgeXlfYnVmZmVyX3N0YWNrX21heDsgLyoqPCBjYXBhY2l0eSBvZiBzdGFjay4gKi8KKyAgICAg
WVlfQlVGRkVSX1NUQVRFICogeXlfYnVmZmVyX3N0YWNrOyAvKio8IFN0YWNrIGFzIGFuIGFycmF5
LiAqLworICAgICBjaGFyIHl5X2hvbGRfY2hhcjsKKy0gICAgaW50IHl5X25fY2hhcnM7CistICAg
IGludCB5eWxlbmdfcjsKKysgICAgeXlfc2l6ZV90IHl5X25fY2hhcnM7CisrICAgIHl5X3NpemVf
dCB5eWxlbmdfcjsKKyAgICAgY2hhciAqeXlfY19idWZfcDsKKyAgICAgaW50IHl5X2luaXQ7Cisg
ICAgIGludCB5eV9zdGFydDsKK0BAIC02MzcsNyArNjM4LDcgQEAgRklMRSAqcHBnZXRfb3V0ICh5
eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAKKyB2b2lkIHBwc2V0X291dCAgKEZJTEUgKiBvdXRfc3Ry
ICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAKKy1pbnQgcHBnZXRfbGVuZyAoeXlzY2FuX3QgeXlz
Y2FubmVyICk7CisreXlfc2l6ZV90IHBwZ2V0X2xlbmcgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwor
IAorIGNoYXIgKnBwZ2V0X3RleHQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorQEAgLTcwNCw3
ICs3MDUsNyBAQCBzdGF0aWMgaW50IGlucHV0ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAJaWYg
KCBZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2lzX2ludGVyYWN0aXZlICkgXAorIAkJeyBc
CisgCQlpbnQgYyA9ICcqJzsgXAorLQkJaW50IG47IFwKKysJCXl5X3NpemVfdCBuOyBcCisgCQlm
b3IgKCBuID0gMDsgbiA8IG1heF9zaXplICYmIFwKKyAJCQkgICAgIChjID0gZ2V0YyggeXlpbiAp
KSAhPSBFT0YgJiYgYyAhPSAnXG4nOyArK24gKSBcCisgCQkJYnVmW25dID0gKGNoYXIpIGM7IFwK
K0BAIC0xMzM4LDcgKzEzMzksNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlz
Y2FuX3QgeXlzY2FubmVyKQorIAorIAllbHNlCisgCQl7CistCQkJaW50IG51bV90b19yZWFkID0K
KysJCQl5eV9zaXplX3QgbnVtX3RvX3JlYWQgPQorIAkJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxV
RS0+eXlfYnVmX3NpemUgLSBudW1iZXJfdG9fbW92ZSAtIDE7CisgCisgCQl3aGlsZSAoIG51bV90
b19yZWFkIDw9IDAgKQorQEAgLTEzNTIsNyArMTM1Myw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25l
eHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgCisgCQkJaWYgKCBiLT55eV9pc19vdXJf
YnVmZmVyICkKKyAJCQkJeworLQkJCQlpbnQgbmV3X3NpemUgPSBiLT55eV9idWZfc2l6ZSAqIDI7
CisrCQkJCXl5X3NpemVfdCBuZXdfc2l6ZSA9IGItPnl5X2J1Zl9zaXplICogMjsKKyAKKyAJCQkJ
aWYgKCBuZXdfc2l6ZSA8PSAwICkKKyAJCQkJCWItPnl5X2J1Zl9zaXplICs9IGItPnl5X2J1Zl9z
aXplIC8gODsKK0BAIC0xMzgzLDcgKzEzODQsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1
ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQorIAorIAkJLyogUmVhZCBpbiBtb3JlIGRhdGEuICov
CisgCQlZWV9JTlBVVCggKCZZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1ZltudW1i
ZXJfdG9fbW92ZV0pLAorLQkJCXl5Zy0+eXlfbl9jaGFycywgKHNpemVfdCkgbnVtX3RvX3JlYWQg
KTsKKysJCQl5eWctPnl5X25fY2hhcnMsIG51bV90b19yZWFkICk7CisgCisgCQlZWV9DVVJSRU5U
X0JVRkZFUl9MVkFMVUUtPnl5X25fY2hhcnMgPSB5eWctPnl5X25fY2hhcnM7CisgCQl9CitAQCAt
MTUwOCw3ICsxNTA5LDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90
IHl5c2Nhbm5lcikKKyAKKyAJCWVsc2UKKyAJCQl7IC8qIG5lZWQgbW9yZSBpbnB1dCAqLworLQkJ
CWludCBvZmZzZXQgPSB5eWctPnl5X2NfYnVmX3AgLSB5eWctPnl5dGV4dF9wdHI7CisrCQkJeXlf
c2l6ZV90IG9mZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0X3B0cjsKKyAJCQkr
K3l5Zy0+eXlfY19idWZfcDsKKyAKKyAJCQlzd2l0Y2ggKCB5eV9nZXRfbmV4dF9idWZmZXIoIHl5
c2Nhbm5lciApICkKK0BAIC0xNzg4LDcgKzE3ODksNyBAQCB2b2lkIHBwcG9wX2J1ZmZlcl9zdGF0
ZSAoeXlzY2FuX3QgeXlzY2FubmVyKQorICAqLworIHN0YXRpYyB2b2lkIHBwZW5zdXJlX2J1ZmZl
cl9zdGFjayAoeXlzY2FuX3QgeXlzY2FubmVyKQorIHsKKy0JaW50IG51bV90b19hbGxvYzsKKysJ
eXlfc2l6ZV90IG51bV90b19hbGxvYzsKKyAgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0
cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworIAorIAlpZiAoIXl5Zy0+eXlfYnVmZmVyX3N0YWNr
KSB7CitAQCAtMTg4NiwxMiArMTg4NywxMSBAQCBZWV9CVUZGRVJfU1RBVEUgcHBfc2Nhbl9zdHJp
bmcgKHl5Y29uc3QgY2hhciAqIHl5c3RyICwgeXlzY2FuX3QgeXlzY2FubmVyKQorICAqIEBwYXJh
bSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIgb2JqZWN0LgorICAqIEByZXR1cm4gdGhlIG5ld2x5IGFs
bG9jYXRlZCBidWZmZXIgc3RhdGUgb2JqZWN0LgorICAqLworLVlZX0JVRkZFUl9TVEFURSBwcF9z
Y2FuX2J5dGVzICAoeXljb25zdCBjaGFyICogeXlieXRlcywgaW50ICBfeXlieXRlc19sZW4gLCB5
eXNjYW5fdCB5eXNjYW5uZXIpCisrWVlfQlVGRkVSX1NUQVRFIHBwX3NjYW5fYnl0ZXMgICh5eWNv
bnN0IGNoYXIgKiB5eWJ5dGVzLCB5eV9zaXplX3QgIF95eWJ5dGVzX2xlbiAsIHl5c2Nhbl90IHl5
c2Nhbm5lcikKKyB7CisgCVlZX0JVRkZFUl9TVEFURSBiOworIAljaGFyICpidWY7CistCXl5X3Np
emVfdCBuOworLQlpbnQgaTsKKysJeXlfc2l6ZV90IG4sIGk7CisgICAgIAorIAkvKiBHZXQgbWVt
b3J5IGZvciBmdWxsIGJ1ZmZlciwgaW5jbHVkaW5nIHNwYWNlIGZvciB0cmFpbGluZyBFT0Incy4g
Ki8KKyAJbiA9IF95eWJ5dGVzX2xlbiArIDI7CitAQCAtMjAwMSw3ICsyMDAxLDcgQEAgRklMRSAq
cHBnZXRfb3V0ICAoeXlzY2FuX3QgeXlzY2FubmVyKQorIC8qKiBHZXQgdGhlIGxlbmd0aCBvZiB0
aGUgY3VycmVudCB0b2tlbi4KKyAgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVj
dC4KKyAgKi8KKy1pbnQgcHBnZXRfbGVuZyAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyt5eV9zaXpl
X3QgcHBnZXRfbGVuZyAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyB7CisgICAgIHN0cnVjdCB5eWd1
dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKKyAgICAgcmV0dXJuIHl5
bGVuZzsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9j
ZXNzb3IvVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAJKHJldmlzaW9uIDE1Mjk3
OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
VG9rZW5pemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKICNsaW5lIDE2ICIu
L1Rva2VuaXplci5sIgogLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDExLTIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMzU5LDgg
KzM1OSw4IEBAIHN0YXRpYyB2b2lkIHl5X2ZhdGFsX2Vycm9yICh5eWNvbnN0IGNoYXIKIAkqeXlf
Y3AgPSAnXDAnOyBcCiAJeXlnLT55eV9jX2J1Zl9wID0geXlfY3A7CiAKLSNkZWZpbmUgWVlfTlVN
X1JVTEVTIDM3Ci0jZGVmaW5lIFlZX0VORF9PRl9CVUZGRVIgMzgKKyNkZWZpbmUgWVlfTlVNX1JV
TEVTIDM4CisjZGVmaW5lIFlZX0VORF9PRl9CVUZGRVIgMzkKIC8qIFRoaXMgc3RydWN0IGlzIG5v
dCB1c2VkIGluIHRoaXMgc2Nhbm5lciwKICAgIGJ1dCBpdHMgcHJlc2VuY2UgaXMgbmVjZXNzYXJ5
LiAqLwogc3RydWN0IHl5X3RyYW5zX2luZm8KQEAgLTM2OCwxNyArMzY4LDE3IEBAIHN0cnVjdCB5
eV90cmFuc19pbmZvCiAJZmxleF9pbnQzMl90IHl5X3ZlcmlmeTsKIAlmbGV4X2ludDMyX3QgeXlf
bnh0OwogCX07Ci1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYWNjZXB0Wzg0XSA9Citz
dGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYWNjZXB0Wzg3XSA9CiAgICAgeyAgIDAsCi0g
ICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgMzgsICAgMzYsICAgMzQsICAgMzUsICAgMzUs
ICAgMzMsCisgICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgMzksICAgMzcsICAgMzQsICAg
MzUsICAgMzUsICAgMzMsCiAgICAgICAgIDcsICAgMzMsICAgMzMsICAgMzMsICAgMzMsICAgMzMs
ICAgMzMsICAgMzMsICAgMzMsICAgIDksCi0gICAgICAgIDksICAgMzMsICAgMzMsICAgMzMsICAg
IDgsICAgMzMsICAgMzMsICAgIDMsICAgIDUsICAgIDUsCi0gICAgICAgIDQsICAgMzQsICAgMzUs
ICAgMTksICAgMjcsICAgMjAsICAgMzAsICAgMjUsICAgMTIsICAgMjMsCi0gICAgICAgMTMsICAg
MjQsICAgMTAsICAgIDIsICAgIDEsICAgMjYsICAgMTAsICAgIDksICAgMTEsICAgMTEsCi0gICAg
ICAgMTEsICAgMTEsICAgIDksICAgMTQsICAgMTYsICAgMTgsICAgMTcsICAgMTUsICAgIDgsICAg
MzEsCi0gICAgICAgMjEsICAgMzIsICAgMjIsICAgIDMsICAgIDUsICAgIDYsICAgMTEsICAgMTAs
ICAgMTEsICAgIDEsCi0gICAgICAgMTAsICAgMTEsICAgIDAsICAgMTAsICAgIDksICAgMjgsICAg
MjksICAgIDAsICAgMTAsICAgMTAsCi0gICAgICAgMTAsICAgMTAsICAgIDAKKyAgICAgICAgOSwg
ICAzMywgICAzMywgICAzMywgICAgOCwgICAzNywgICAzMywgICAzMywgICAgMywgICAgNSwKKyAg
ICAgICAgNSwgICAgNCwgICAzNCwgICAzNSwgICAxOSwgICAyNywgICAyMCwgICAzMCwgICAyNSwg
ICAxMiwKKyAgICAgICAyMywgICAxMywgICAyNCwgICAxMCwgICAgMiwgICAgMSwgICAyNiwgICAx
MCwgICAgOSwgICAxMSwKKyAgICAgICAxMSwgICAxMSwgICAxMSwgICAgOSwgICAxNCwgICAxNiwg
ICAxOCwgICAxNywgICAxNSwgICAgOCwKKyAgICAgICAzNiwgICAzNiwgICAzMSwgICAyMSwgICAz
MiwgICAyMiwgICAgMywgICAgNSwgICAgNiwgICAxMSwKKyAgICAgICAxMCwgICAxMSwgICAgMSwg
ICAxMCwgICAxMSwgICAgMCwgICAxMCwgICAgOSwgICAyOCwgICAyOSwKKyAgICAgICAgMCwgICAx
MCwgICAxMCwgICAxMCwgICAxMCwgICAgMAogICAgIH0gOwogCiBzdGF0aWMgeXljb25zdCBmbGV4
X2ludDMyX3QgeXlfZWNbMjU2XSA9CkBAIC0zOTIsMTEgKzM5MiwxMSBAQCBzdGF0aWMgeXljb25z
dCBmbGV4X2ludDMyX3QgeXlfZWNbMjU2XSA9CiAgICAgICAgMTksICAgMjAsICAgIDksICAgIDEs
ICAgMjEsICAgMjEsICAgMjEsICAgMjEsICAgMjIsICAgMjEsCiAgICAgICAgMjMsICAgMjMsICAg
MjMsICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAgMjMsCiAgICAgICAgMjMs
ICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAgMjMsICAgMjQsICAgMjMsICAgMjMsCi0g
ICAgICAgIDksICAgIDEsICAgIDksICAgMjUsICAgMjMsICAgIDEsICAgMjEsICAgMjEsICAgMjEs
ICAgMjEsCisgICAgICAgIDksICAgMjUsICAgIDksICAgMjYsICAgMjMsICAgIDEsICAgMjEsICAg
MjEsICAgMjEsICAgMjEsCiAKICAgICAgICAyMiwgICAyMSwgICAyMywgICAyMywgICAyMywgICAy
MywgICAyMywgICAyMywgICAyMywgICAyMywKICAgICAgICAyMywgICAyMywgICAyMywgICAyMywg
ICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyNCwKLSAgICAgICAyMywgICAyMywgICAg
OSwgICAyNiwgICAgOSwgICAgOSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKKyAgICAgICAyMywg
ICAyMywgICAgOSwgICAyNywgICAgOSwgICAgOSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAg
ICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwKQEAgLTQxMyw4NSArNDEzLDg5IEBAIHN0YXRpYyB5eWNv
bnN0IGZsZXhfaW50MzJfdCB5eV9lY1syNTZdID0KICAgICAgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMQogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfbWV0YVsy
N10gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X21ldGFbMjhdID0KICAgICB7ICAg
MCwKICAgICAgICAgMSwgICAgMSwgICAgMiwgICAgMiwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMywKICAgICAgICAgMSwgICAgMSwgICAgNCwgICAgMSwgICAgNSwgICAgNSwgICAg
NSwgICAgMSwgICAgMSwgICAgMSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgMSwg
ICAgMQorICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICAxLCAgICAxLCAgICAxCiAgICAg
fSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9iYXNlWzg5XSA9CitzdGF0aWMg
eXljb25zdCBmbGV4X2ludDE2X3QgeXlfYmFzZVs5Ml0gPQogICAgIHsgICAwLAotICAgICAgICAw
LCAgICAwLCAgIDI0LCAgIDI2LCAgMTU4LCAgMTU5LCAgMTUwLCAgMTU5LCAgMTQ1LCAgMTI4LAot
ICAgICAgMTU5LCAgMTEyLCAgIDIzLCAgMTU5LCAgMTExLCAgIDIxLCAgIDI1LCAgIDMwLCAgIDI5
LCAgIDM2LAotICAgICAgIDQ2LCAgIDM2LCAgMTAwLCAgIDQ1LCAgICAwLCAgIDE2LCAgIDQ3LCAg
ICAwLCAgMTU5LCAgIDg0LAotICAgICAgIDY1LCAgIDczLCAgMTU5LCAgMTU5LCAgMTU5LCAgMTU5
LCAgMTU5LCAgMTU5LCAgMTU5LCAgMTU5LAotICAgICAgMTU5LCAgMTU5LCAgIDYxLCAgMTU5LCAg
ICAwLCAgMTU5LCAgIDczLCAgIDMyLCAgIDU2LCAgIDgzLAotICAgICAgIDk1LCAgIDY4LCAgICAw
LCAgIDMxLCAgMTU5LCAgMTU5LCAgMTU5LCAgIDE5LCAgICAwLCAgMTU5LAotICAgICAgMTU5LCAg
MTU5LCAgMTU5LCAgICAwLCAgMTU5LCAgMTU5LCAgIDk4LCAgICAwLCAgMTEwLCAgICAwLAotICAg
ICAgICAwLCAgMTE3LCAgIDUyLCAgIDkwLCAgIDgwLCAgMTU5LCAgMTU5LCAgMTAxLCAgIDk3LCAg
MTEyLAotICAgICAgMTIwLCAgMTIzLCAgMTU5LCAgMTQwLCAgIDI4LCAgMTQ1LCAgMTUwLCAgMTUy
CisgICAgICAgIDAsICAgIDAsICAgMjUsICAgMjcsICAxNjIsICAxNjMsICAxNTksICAxNjMsICAx
NTIsICAxMzIsCisgICAgICAxNjMsICAxMzEsICAgMjQsICAxNjMsICAxMTYsICAgMjIsICAgMjYs
ICAgMzEsICAgMzAsICAgMzcsCisgICAgICAgNDAsICAgNDQsICAxMTUsICAgNDYsICAgIDAsICAg
NjQsICAgNTAsICAgMTUsICAgIDAsICAxNjMsCisgICAgICAxMjQsICAgOTEsICAgODgsICAxNjMs
ICAxNjMsICAxNjMsICAxNjMsICAxNjMsICAxNjMsICAxNjMsCisgICAgICAxNjMsICAxNjMsICAx
NjMsICAgNjQsICAxNjMsICAgIDAsICAxNjMsICAgNzYsICAgNTQsICAgNTgsCisgICAgICAgNzks
ICAgOTEsICAgOTEsICAgIDAsICAgNTYsICAxNjMsICAxNjMsICAxNjMsICAgMzIsICAgIDAsCisg
ICAgICAxNjMsICAgMzYsICAxNjMsICAxNjMsICAxNjMsICAxNjMsICAgIDAsICAxNjMsICAxNjMs
ICAgOTQsCisgICAgICAgIDAsICAxMDYsICAgIDAsICAgIDAsICAxMTMsICAgNTUsICAgNzIsICAx
MTMsICAxNjMsICAxNjMsCisgICAgICAxMTYsICAxMDEsICAxMDgsICAxMjMsICAxMjYsICAxNjMs
ICAxNDMsICAgMzEsICAxNDgsICAxNTMsCisgICAgICAxNTUKKwogICAgIH0gOwogCi1zdGF0aWMg
eXljb25zdCBmbGV4X2ludDE2X3QgeXlfZGVmWzg5XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2lu
dDE2X3QgeXlfZGVmWzkyXSA9CiAgICAgeyAgIDAsCi0gICAgICAgODMsICAgIDEsICAgODQsICAg
ODQsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsCi0gICAgICAgODMsICAgODMs
ICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsCi0gICAgICAg
MjAsICAgODMsICAgODMsICAgODMsICAgODUsICAgODMsICAgODMsICAgODYsICAgODMsICAgODMs
Ci0gICAgICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAg
ODMsICAgODMsCi0gICAgICAgODMsICAgODMsICAgODMsICAgODMsICAgODcsICAgODMsICAgODMs
ICAgMjAsICAgMjAsICAgNDcsCi0gICAgICAgNTAsICAgODgsICAgMjEsICAgODMsICAgODMsICAg
ODMsICAgODMsICAgODMsICAgODUsICAgODMsCi0gICAgICAgODMsICAgODMsICAgODMsICAgODYs
ICAgODMsICAgODMsICAgNDMsICAgNDMsICAgNjcsICAgODcsCi0gICAgICAgNDcsICAgNTAsICAg
ODMsICAgNTEsICAgODgsICAgODMsICAgODMsICAgODMsICAgNjksICAgNzIsCi0gICAgICAgODMs
ICAgODMsICAgIDAsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMKKyAgICAgICA4NiwgICAg
MSwgICA4NywgICA4NywgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwKKyAgICAg
ICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4
NiwKKyAgICAgICAyMCwgICA4NiwgICA4NiwgICA4NiwgICA4OCwgICA4NiwgICA4NiwgICA4Niwg
ICA4OSwgICA4NiwKKyAgICAgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4
NiwgICA4NiwgICA4NiwgICA4NiwKKyAgICAgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4Niwg
ICA5MCwgICA4NiwgICA4NiwgICAyMCwgICAyMCwKKyAgICAgICA0OCwgICA1MSwgICA5MSwgICAy
MSwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4OCwKKyAgICAgICA4NiwgICA4Niwg
ICA4NiwgICA4NiwgICA4NiwgICA4NiwgICA4OSwgICA4NiwgICA4NiwgICA0NCwKKyAgICAgICA0
NCwgICA3MCwgICA5MCwgICA0OCwgICA1MSwgICA4NiwgICA1MiwgICA5MSwgICA4NiwgICA4NiwK
KyAgICAgICA4NiwgICA3MiwgICA3NSwgICA4NiwgICA4NiwgICAgMCwgICA4NiwgICA4NiwgICA4
NiwgICA4NiwKKyAgICAgICA4NgorCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50
MTZfdCB5eV9ueHRbMTg2XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0WzE5
MV0gPQogICAgIHsgICAwLAogICAgICAgICA2LCAgICA3LCAgICA4LCAgICA5LCAgIDEwLCAgIDEx
LCAgIDEyLCAgIDEzLCAgIDE0LCAgIDE1LAogICAgICAgIDE2LCAgIDE3LCAgIDE4LCAgIDE5LCAg
IDIwLCAgIDIxLCAgIDIxLCAgIDIyLCAgIDIzLCAgIDI0LAotICAgICAgIDI1LCAgIDI1LCAgIDI1
LCAgIDI1LCAgIDI2LCAgIDI3LCAgIDI5LCAgIDMwLCAgIDI5LCAgIDMwLAotICAgICAgIDM2LCAg
IDM5LCAgIDU5LCAgIDMxLCAgIDYwLCAgIDMxLCAgIDQxLCAgIDc3LCAgIDQ0LCAgIDQwLAotICAg
ICAgIDYxLCAgIDM3LCAgIDQ1LCAgIDQyLCAgIDQzLCAgIDQzLCAgIDQzLCAgIDQ2LCAgIDQ3LCAg
IDc2LAotICAgICAgIDQ4LCAgIDQ4LCAgIDQ5LCAgIDU0LCAgIDU1LCAgIDUwLCAgIDUwLCAgIDUx
LCAgIDUwLCAgIDUyLAotICAgICAgIDUzLCAgIDUzLCAgIDUzLCAgIDU3LCAgIDU4LCAgIDYyLCAg
IDgxLCAgIDgxLCAgIDgxLCAgIDUwLAotICAgICAgIDQ5LCAgIDQ5LCAgIDYzLCAgIDY3LCAgIDMy
LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY2LCAgIDUwLAotICAgICAgIDUwLCAgIDY3LCAgIDY5LCAg
IDY3LCAgIDY3LCAgIDUwLCAgIDY1LCAgIDcxLCAgIDcxLCAgIDcxLAotICAgICAgIDUwLCAgIDUw
LCAgIDUwLCAgIDUwLCAgIDcyLCAgIDUwLCAgIDUwLCAgIDUwLCAgIDUwLCAgIDUwLAotCi0gICAg
ICAgODMsICAgODMsICAgNTAsICAgNTAsICAgNTAsICAgNzMsICAgNzMsICAgODMsICAgODMsICAg
NzQsCi0gICAgICAgNzQsICAgNzQsICAgNjcsICAgNjcsICAgNjcsICAgODIsICAgODIsICAgODIs
ICAgNTYsICAgNjcsCi0gICAgICAgNzgsICAgNzgsICAgODMsICAgODMsICAgNzksICAgNzksICAg
NzksICAgNzgsICAgNzgsICAgMzgsCi0gICAgICAgMzUsICAgODAsICAgODAsICAgODAsICAgODEs
ICAgODEsICAgODEsICAgODIsICAgODIsICAgODIsCi0gICAgICAgMjgsICAgMjgsICAgMjgsICAg
MjgsICAgMjgsICAgNjQsICAgMzQsICAgMzMsICAgNjQsICAgNjQsCi0gICAgICAgNzAsICAgMzIs
ICAgNzAsICAgNzAsICAgNzAsICAgNzUsICAgNzUsICAgODMsICAgIDUsICAgODMsCi0gICAgICAg
ODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMs
Ci0gICAgICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAg
ODMsICAgODMsCi0gICAgICAgODMsICAgODMsICAgODMsICAgODMsICAgODMKKyAgICAgICAyNSwg
ICAyNSwgICAyNSwgICAyNSwgICAyNiwgICAyNywgICAyOCwgICAzMCwgICAzMSwgICAzMCwKKyAg
ICAgICAzMSwgICAzNywgICA0MCwgICA2NSwgICAzMiwgICA2MCwgICAzMiwgICA0MiwgICA2MSwg
ICA0NSwKKyAgICAgICA0MSwgICA2NiwgICAzOCwgICA0NiwgICA0MywgICA0NCwgICA0NCwgICA0
NCwgICA0NywgICA0OCwKKyAgICAgICA4MCwgICA0OSwgICA0OSwgICA1MCwgICA1NCwgICA1NCwg
ICA1NCwgICA1MSwgICA1MiwgICA1MSwKKyAgICAgICA1MywgICA1NSwgICA1NiwgICA1MSwgICA1
OCwgICA1OSwgICA2MSwgICA2MiwgICA2MywgICA4NCwKKyAgICAgICA4NCwgICA4NCwgICA1MCwg
ICA1MCwgICA3OSwgICA2NCwgICA3MCwgICA1MSwgICA3MSwgICA3MSwKKyAgICAgICA3MSwgICA1
MSwgICA4NiwgICA4NiwgICA3MCwgICA3MiwgICA3MCwgICA3MCwgICA1MSwgICAzMywKKyAgICAg
ICA3NCwgICA3NCwgICA3NCwgICA1MSwgICA1MSwgICA1MSwgICA1MSwgICA3NSwgICA1MSwgICA1
MSwKKworICAgICAgIDUxLCAgIDc2LCAgIDc2LCAgIDUxLCAgIDY5LCAgIDc3LCAgIDc3LCAgIDc3
LCAgIDcwLCAgIDcwLAorICAgICAgIDcwLCAgIDg2LCAgIDg2LCAgIDUxLCAgIDUxLCAgIDcwLCAg
IDgxLCAgIDgxLCAgIDg2LCAgIDg2LAorICAgICAgIDgyLCAgIDgyLCAgIDgyLCAgIDgxLCAgIDgx
LCAgIDUxLCAgIDY4LCAgIDgzLCAgIDgzLCAgIDgzLAorICAgICAgIDg1LCAgIDg1LCAgIDg1LCAg
IDU3LCAgIDM5LCAgIDUxLCAgIDUxLCAgIDg0LCAgIDg0LCAgIDg0LAorICAgICAgIDg1LCAgIDg1
LCAgIDg1LCAgIDI5LCAgIDI5LCAgIDI5LCAgIDI5LCAgIDI5LCAgIDY3LCAgIDM2LAorICAgICAg
IDM1LCAgIDY3LCAgIDY3LCAgIDczLCAgIDM0LCAgIDczLCAgIDczLCAgIDczLCAgIDc4LCAgIDc4
LAorICAgICAgIDMzLCAgIDg2LCAgICA1LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAg
IDg2LCAgIDg2LAorICAgICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2
LCAgIDg2LCAgIDg2LCAgIDg2LAorICAgICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAg
IDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2CiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZs
ZXhfaW50MTZfdCB5eV9jaGtbMTg2XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlf
Y2hrWzE5MV0gPQogICAgIHsgICAwLAogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAogICAgICAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAotICAgICAgICAxLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAzLCAgICAzLCAgICA0LCAgICA0LAotICAgICAg
IDEzLCAgIDE2LCAgIDg1LCAgICAzLCAgIDI2LCAgICA0LCAgIDE3LCAgIDU4LCAgIDE5LCAgIDE2
LAotICAgICAgIDI2LCAgIDEzLCAgIDE5LCAgIDE3LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE5LCAg
IDIwLCAgIDU0LAotICAgICAgIDIwLCAgIDIwLCAgIDIwLCAgIDIyLCAgIDIyLCAgIDQ4LCAgIDIw
LCAgIDIwLCAgIDIwLCAgIDIwLAotICAgICAgIDIxLCAgIDIxLCAgIDIxLCAgIDI0LCAgIDI0LCAg
IDI3LCAgIDczLCAgIDczLCAgIDczLCAgIDIxLAotICAgICAgIDQ5LCAgIDQ5LCAgIDI3LCAgIDQz
LCAgIDMyLCAgIDQzLCAgIDQzLCAgIDQzLCAgIDMxLCAgIDQ5LAotICAgICAgIDUyLCAgIDQzLCAg
IDQzLCAgIDQzLCAgIDQzLCAgIDQ3LCAgIDMwLCAgIDQ3LCAgIDQ3LCAgIDQ3LAotICAgICAgIDUy
LCAgIDUyLCAgIDc1LCAgIDQ3LCAgIDQ3LCAgIDQ3LCAgIDQ3LCAgIDUwLCAgIDUwLCAgIDUwLAot
Ci0gICAgICAgNzQsICAgNzQsICAgNzUsICAgNzUsICAgNTAsICAgNTEsICAgNTEsICAgNzksICAg
NzksICAgNTEsCi0gICAgICAgNTEsICAgNTEsICAgNjcsICAgNjcsICAgNjcsICAgNzgsICAgNzgs
ICAgNzgsICAgMjMsICAgNjcsCi0gICAgICAgNjksICAgNjksICAgODAsICAgODAsICAgNjksICAg
NjksICAgNjksICAgNzIsICAgNzIsICAgMTUsCi0gICAgICAgMTIsICAgNzIsICAgNzIsICAgNzIs
ICAgODEsICAgODEsICAgODEsICAgODIsICAgODIsICAgODIsCi0gICAgICAgODQsICAgODQsICAg
ODQsICAgODQsICAgODQsICAgODYsICAgMTAsICAgIDksICAgODYsICAgODYsCi0gICAgICAgODcs
ICAgIDcsICAgODcsICAgODcsICAgODcsICAgODgsICAgODgsICAgIDUsICAgODMsICAgODMsCi0g
ICAgICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMs
ICAgODMsCi0gICAgICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAg
ODMsICAgODMsICAgODMsCi0gICAgICAgODMsICAgODMsICAgODMsICAgODMsICAgODMKKyAgICAg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAgMywgICAg
NCwKKyAgICAgICAgNCwgICAxMywgICAxNiwgICAyOCwgICAgMywgICA4OCwgICAgNCwgICAxNywg
ICA2MiwgICAxOSwKKyAgICAgICAxNiwgICAyOCwgICAxMywgICAxOSwgICAxNywgICAxOCwgICAx
OCwgICAxOCwgICAxOSwgICAyMCwKKyAgICAgICA1OSwgICAyMCwgICAyMCwgICAyMCwgICAyMSwg
ICAyMSwgICAyMSwgICAyMCwgICAyMCwgICAyMCwKKyAgICAgICAyMCwgICAyMiwgICAyMiwgICAy
MSwgICAyNCwgICAyNCwgICAyNiwgICAyNiwgICAyNywgICA3NiwKKyAgICAgICA3NiwgICA3Niwg
ICA1MCwgICA1MCwgICA1NSwgICAyNywgICA0NCwgICA0OSwgICA0NCwgICA0NCwKKyAgICAgICA0
NCwgICA1MCwgICA3NywgICA3NywgICA0NCwgICA0NCwgICA0NCwgICA0NCwgICA0OCwgICAzMywK
KyAgICAgICA0OCwgICA0OCwgICA0OCwgICA1MSwgICA1MSwgICA1MSwgICA0OCwgICA0OCwgICA0
OCwgICA0OCwKKworICAgICAgIDUxLCAgIDUyLCAgIDUyLCAgIDUzLCAgIDMyLCAgIDUyLCAgIDUy
LCAgIDUyLCAgIDcwLCAgIDcwLAorICAgICAgIDcwLCAgIDgyLCAgIDgyLCAgIDUzLCAgIDUzLCAg
IDcwLCAgIDcyLCAgIDcyLCAgIDgzLCAgIDgzLAorICAgICAgIDcyLCAgIDcyLCAgIDcyLCAgIDc1
LCAgIDc1LCAgIDc4LCAgIDMxLCAgIDc1LCAgIDc1LCAgIDc1LAorICAgICAgIDgxLCAgIDgxLCAg
IDgxLCAgIDIzLCAgIDE1LCAgIDc4LCAgIDc4LCAgIDg0LCAgIDg0LCAgIDg0LAorICAgICAgIDg1
LCAgIDg1LCAgIDg1LCAgIDg3LCAgIDg3LCAgIDg3LCAgIDg3LCAgIDg3LCAgIDg5LCAgIDEyLAor
ICAgICAgIDEwLCAgIDg5LCAgIDg5LCAgIDkwLCAgICA5LCAgIDkwLCAgIDkwLCAgIDkwLCAgIDkx
LCAgIDkxLAorICAgICAgICA3LCAgICA1LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAg
IDg2LCAgIDg2LCAgIDg2LAorICAgICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2
LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LAorICAgICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAg
IDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2CiAgICAgfSA7CiAKIC8qIFRoZSBpbnRl
bnQgYmVoaW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB0aGF0IGl0J2xsIGNhdGNoCkBAIC01MDMsNyAr
NTA3LDcgQEAgc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1sxODZdIAogI2RlZmlu
ZSBZWV9SRVNUT1JFX1lZX01PUkVfT0ZGU0VUCiAvKgogLy8KLS8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KIC8vCkBAIC04NDMsMTMgKzg0NywxMyBAQCB5eV9tYXRjaDoKIAkJCXdoaWxlICgg
eXlfY2hrW3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0
YXRlICkKIAkJCQl7CiAJCQkJeXlfY3VycmVudF9zdGF0ZSA9IChpbnQpIHl5X2RlZlt5eV9jdXJy
ZW50X3N0YXRlXTsKLQkJCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gODQgKQorCQkJCWlmICgg
eXlfY3VycmVudF9zdGF0ZSA+PSA4NyApCiAJCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBp
bnQpIHl5X2NdOwogCQkJCX0KIAkJCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5
eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJKyt5eV9jcDsKIAkJ
CX0KLQkJd2hpbGUgKCB5eV9jdXJyZW50X3N0YXRlICE9IDgzICk7CisJCXdoaWxlICggeXlfY3Vy
cmVudF9zdGF0ZSAhPSA4NiApOwogCQl5eV9jcCA9IHl5Zy0+eXlfbGFzdF9hY2NlcHRpbmdfY3Bv
czsKIAkJeXlfY3VycmVudF9zdGF0ZSA9IHl5Zy0+eXlfbGFzdF9hY2NlcHRpbmdfc3RhdGU7CiAK
QEAgLTExMDYsNiArMTExMCwxMSBAQCBZWV9SVUxFX1NFVFVQCiB9CiAJWVlfQlJFQUsKIGNhc2Ug
MzY6CisvKiBydWxlIDM2IGNhbiBtYXRjaCBlb2wgKi8KK1lZX1JVTEVfU0VUVVAKK3sgKyt5eWxp
bmVubzsgfQorCVlZX0JSRUFLCitjYXNlIDM3OgogWVlfUlVMRV9TRVRVUAogewogICAgIHl5bHZh
bC0+YXNzaWduKDEsIHl5dGV4dFswXSk7CkBAIC0xMTQxLDcgKzExNTAsNyBAQCBjYXNlIFlZX1NU
QVRFX0VPRihDT01NRU5UKToKICAgICB5eXRlcm1pbmF0ZSgpOwogfQogCVlZX0JSRUFLCi1jYXNl
IDM3OgorY2FzZSAzODoKIFlZX1JVTEVfU0VUVVAKIEVDSE87CiAJWVlfQlJFQUsKQEAgLTE0Mzcs
NyArMTQ0Niw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCAKIAkJ
d2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9IHl5X2N1
cnJlbnRfc3RhdGUgKQogCQkJewogCQkJeXlfY3VycmVudF9zdGF0ZSA9IChpbnQpIHl5X2RlZlt5
eV9jdXJyZW50X3N0YXRlXTsKLQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4NCApCisJCQlp
ZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gODcgKQogCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25l
ZCBpbnQpIHl5X2NdOwogCQkJfQogCQl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2Vb
eXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsKQEAgLTE0NjYsMTEgKzE0
NzUsMTEgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IAogCXdoaWxl
ICggeXlfY2hrW3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50
X3N0YXRlICkKIAkJewogCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5X2N1cnJl
bnRfc3RhdGVdOwotCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gODQgKQorCQlpZiAoIHl5X2N1
cnJlbnRfc3RhdGUgPj0gODcgKQogCQkJeXlfYyA9IHl5X21ldGFbKHVuc2lnbmVkIGludCkgeXlf
Y107CiAJCX0KIAl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9z
dGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsKLQl5eV9pc19qYW0gPSAoeXlfY3VycmVudF9z
dGF0ZSA9PSA4Myk7CisJeXlfaXNfamFtID0gKHl5X2N1cnJlbnRfc3RhdGUgPT0gODYpOwogCiAJ
cmV0dXJuIHl5X2lzX2phbSA/IDAgOiB5eV9jdXJyZW50X3N0YXRlOwogfQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIubAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL1Rva2VuaXplci5sCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CiAvLwpAQCAtMTQsNyArMTQsNyBAQCBJRiBZT1UgTU9ESUZZIFRISVMgRklMRSBZT1UgQUxTTyBO
RUVEIFRPCiAKICV0b3B7CiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDExIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMTEt
MjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0yMjks
NiArMjI5LDggQEAgRlJBQ1RJT05BTF9DT05TVEFOVCAgKHtESUdJVH0qIi4ie0RJR0lUfQogICAg
IHJldHVybiAnXG4nOwogfQogCitcXHtORVdMSU5FfSB7ICsreXlsaW5lbm87IH0KKwogLiB7CiAg
ICAgeXlsdmFsLT5hc3NpZ24oMSwgeXl0ZXh0WzBdKTsKICAgICByZXR1cm4gcHA6OlRva2VuOjpQ
UF9PVEhFUjsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcmVwcm9jZXNzb3IudmN4cHJv
agkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9w
cmVwcm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHByb2oJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTcyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9q
ZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRw
Oi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0
ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5E
ZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0K
KyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24g
SW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmln
dXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0
Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVh
c2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+
DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmln
dXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0
Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAgICAg
IDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0K
KyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+DQorICAg
IDxQcm9qZWN0R3VpZD57RkJFMzJERjMtMEZCMC00RjJGLUE0MjQtMkMyMUJEN0JDMzI1fTwvUHJv
amVjdEd1aWQ+DQorICAgIDxSb290TmFtZXNwYWNlPnByZXByb2Nlc3NvcjwvUm9vdE5hbWVzcGFj
ZT4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAgPC9Qcm9wZXJ0eUdyb3Vw
Pg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVm
YXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25U
eXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCisgICAgPFdo
b2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQor
ICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlv
blR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Q
cm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4N
CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBl
Pg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCisgICAgPFdob2xl
UHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQorICA8
L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4N
CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBl
Pg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVy
dHlHcm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQu
Q3BwLnByb3BzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+
DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNo
ZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFw
cERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExh
YmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0
cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJyki
IExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8
SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJbXBvcnQgUHJvamVj
dD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBD
b25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1w
b3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8
SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0i
IC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNy
b3MiIC8+DQorICA8UHJvcGVydHlHcm91cD4NCisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAu
MC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0aW9u
RGlyKSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoQ29uZmlndXJh
dGlvbilcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQo
Q29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKFBsYXRmb3JtKVwkKENvbmZp
Z3VyYXRpb24pXDwvSW50RGlyPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25m
aWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKENvbmZpZ3VyYXRpb24pXDwv
SW50RGlyPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQoQ29uZmln
dXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJh
dGlvbilcPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SXRlbURlZmluaXRpb25H
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwv
T3B0aW1pemF0aW9uPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVC
VUc7X1dJTkRPV1M7X1VTUkRMTDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAg
IDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50
aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8
UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCisgICAg
ICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAg
ICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxUcmVhdFdhcm5p
bmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPERlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAg
ICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0
NTs0NTEyOzQ3MDI7NDI2NzslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNp
ZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
Pg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVu
dmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENs
Q29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQor
ICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfV0lORE9XUztfVVNS
RExMO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmlu
aXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxk
PnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxl
RmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5N
dWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhl
YWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+
TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwv
VHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9n
cmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVj
aWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0NzE4
OzQyNjc7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdz
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRp
b24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNp
b24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtfQ1JUX1NFQ1VS
RV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmlu
aXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5
Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
cj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2
ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJl
YXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFt
RGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZp
Y1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0NzE4OzQy
Njc7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVm
aW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2
NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4NCisg
ICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPElubGlu
ZUZ1bmN0aW9uRXhwYW5zaW9uPkFueVN1aXRhYmxlPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4N
CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19XSU5ET1dTO19V
U1JETEw7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYO19TRUNVUkVfU0NMPTA7JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAg
IDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8
V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxUcmVhdFdhcm5pbmdB
c0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPERlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAg
IDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0
NTEyOzQ3MDI7NDcxODs0MjY3OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3Bl
Y2lmaWNXYXJuaW5ncz4NCisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1EZWZpbml0aW9uR3Jv
dXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpYWdub3N0aWNz
QmFzZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlyZWN0aXZlSGFuZGxlckJh
c2UuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpcmVjdGl2ZVBhcnNlci5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRXhwcmVzc2lvblBhcnNlci5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5wdXQuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IkxleGVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJNYWNyby5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iTWFjcm9FeHBhbmRlci5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iUHJlcHJvY2Vzc29yLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJUb2tlbi5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVG9rZW5p
emVyLmNwcCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJsZW5ndGhfbGltaXRzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iRGlhZ25vc3RpY3NCYXNlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGlyZWN0
aXZlSGFuZGxlckJhc2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJEaXJlY3RpdmVQ
YXJzZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJFeHByZXNzaW9uUGFyc2VyLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5wdXQuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJMZXhlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik1hY3JvLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTWFjcm9FeHBhbmRlci5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Im51bWVyaWNfbGV4LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0icHBfdXRpbHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJQcmVwcm9jZXNz
b3IuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTb3VyY2VMb2NhdGlvbi5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRva2VuLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iVG9rZW5pemVyLmgiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQor
ICAgIDxOb25lIEluY2x1ZGU9IlRva2VuaXplci5sIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8
SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAv
Pg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0
R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vz
c29yLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3ByZXByb2Nlc3Nvci52Y3hwcm9qLmZpbHRlcnMJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL3ByZXByb2Nlc3Nvci52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTAwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0K
KzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9z
b2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxG
aWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57
NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4N
CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207
YXNteDwvRXh0ZW5zaW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0i
SGVhZGVyIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00
YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5z
aW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+DQorICAgIDwvRmlsdGVy
Pg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IkRpcmVjdGl2ZVBhcnNlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkV4cHJl
c3Npb25QYXJzZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbnB1dC5jcHAiPg0K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkxleGVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iTWFjcm8uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJNYWNyb0V4cGFuZGVy
LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUHJlcHJvY2Vzc29yLmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iVG9rZW4uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJUb2tlbml6ZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaWFnbm9zdGljc0Jh
c2UuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXJlY3RpdmVIYW5kbGVyQmFzZS5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IkRpcmVjdGl2ZVBhcnNlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJFeHBy
ZXNzaW9uUGFyc2VyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQor
ICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IklucHV0LmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkxleGVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ik1hY3JvLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik1hY3JvRXhwYW5kZXIuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibnVtZXJpY19sZXguaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icHBfdXRpbHMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUHJlcHJvY2Vz
c29yLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNvdXJjZUxvY2F0aW9uLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRva2VuLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IlRva2VuaXplci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJsZW5ndGhfbGltaXRzLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpYWdub3N0aWNzQmFzZS5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJEaXJlY3RpdmVIYW5kbGVyQmFzZS5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgIDwvSXRlbUdyb3Vw
Pg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPE5vbmUgSW5jbHVkZT0iVG9rZW5pemVyLmwiPg0KKyAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvTm9uZT4NCisgIDwvSXRl
bUdyb3VwPg0KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4
U2hhZGVyVGltaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcAkocmV2aXNp
b24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RpbWlu
Zy9SZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwLDgg
KzEwLDggQEAgdm9pZCBSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZzo6dmlzaXRTeQogewogICAg
IGlmIChJc1NhbXBsZXIobm9kZS0+Z2V0QmFzaWNUeXBlKCkpKSB7CiAgICAgICAgICsrbU51bUVy
cm9yczsKLSAgICAgICAgbVNpbmsucHJlZml4KEVQcmVmaXhFcnJvcik7Ci0gICAgICAgIG1TaW5r
LmxvY2F0aW9uKG5vZGUtPmdldExpbmUoKSk7Ci0gICAgICAgIG1TaW5rIDw8ICJTYW1wbGVycyBh
cmUgbm90IHBlcm1pdHRlZCBpbiB2ZXJ0ZXggc2hhZGVycy5cbiI7CisgICAgICAgIG1TaW5rLm1l
c3NhZ2UoRVByZWZpeEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmdldExpbmUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAiU2FtcGxlcnMgYXJlIG5vdCBwZXJtaXR0ZWQgaW4g
dmVydGV4IHNoYWRlcnMiKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliRUdML0NvbmZpZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkVHTC9Db25maWcuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkVHTC9Db25maWcuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDM0MCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gQ29uZmlnLmNwcDogSW1wbGVtZW50cyB0
aGUgZWdsOjpDb25maWcgY2xhc3MsIGRlc2NyaWJpbmcgdGhlIGZvcm1hdCwgdHlwZQorLy8gYW5k
IHNpemUgZm9yIGFuIGVnbDo6U3VyZmFjZS4gSW1wbGVtZW50cyBFR0xDb25maWcgYW5kIHJlbGF0
ZWQgZnVuY3Rpb25hbGl0eS4KKy8vIFtFR0wgMS40XSBzZWN0aW9uIDMuNCBwYWdlIDE1LgorCisj
aW5jbHVkZSAibGliRUdML0NvbmZpZy5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1
ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorI2luY2x1ZGUgPEdMRVMyL2ds
MmV4dC5oPgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBz
dGQ7CisKK25hbWVzcGFjZSBlZ2wKK3sKK0NvbmZpZzo6Q29uZmlnKHJ4OjpDb25maWdEZXNjIGRl
c2MsIEVHTGludCBtaW5JbnRlcnZhbCwgRUdMaW50IG1heEludGVydmFsLCBFR0xpbnQgdGV4V2lk
dGgsIEVHTGludCB0ZXhIZWlnaHQpCisgICAgOiBtUmVuZGVyVGFyZ2V0Rm9ybWF0KGRlc2MucmVu
ZGVyVGFyZ2V0Rm9ybWF0KSwgbURlcHRoU3RlbmNpbEZvcm1hdChkZXNjLmRlcHRoU3RlbmNpbEZv
cm1hdCksIG1NdWx0aVNhbXBsZShkZXNjLm11bHRpU2FtcGxlKQoreworICAgIG1CaW5kVG9UZXh0
dXJlUkdCID0gRUdMX0ZBTFNFOworICAgIG1CaW5kVG9UZXh0dXJlUkdCQSA9IEVHTF9GQUxTRTsK
KyAgICBzd2l0Y2ggKGRlc2MucmVuZGVyVGFyZ2V0Rm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2Ug
R0xfUkdCNV9BMToKKyAgICAgICAgbUJ1ZmZlclNpemUgPSAxNjsKKyAgICAgICAgbVJlZFNpemUg
PSA1OworICAgICAgICBtR3JlZW5TaXplID0gNTsKKyAgICAgICAgbUJsdWVTaXplID0gNTsKKyAg
ICAgICAgbUFscGhhU2l6ZSA9IDE7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0JB
OF9PRVM6CisgICAgICAgIG1CdWZmZXJTaXplID0gMzI7CisgICAgICAgIG1SZWRTaXplID0gODsK
KyAgICAgICAgbUdyZWVuU2l6ZSA9IDg7CisgICAgICAgIG1CbHVlU2l6ZSA9IDg7CisgICAgICAg
IG1BbHBoYVNpemUgPSA4OworICAgICAgICBtQmluZFRvVGV4dHVyZVJHQkEgPSB0cnVlOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCNTY1OgorICAgICAgICBtQnVmZmVyU2l6ZSA9
IDE2OworICAgICAgICBtUmVkU2l6ZSA9IDU7CisgICAgICAgIG1HcmVlblNpemUgPSA2OworICAg
ICAgICBtQmx1ZVNpemUgPSA1OworICAgICAgICBtQWxwaGFTaXplID0gMDsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX1JHQjhfT0VTOgorICAgICAgICBtQnVmZmVyU2l6ZSA9IDMyOwor
ICAgICAgICBtUmVkU2l6ZSA9IDg7CisgICAgICAgIG1HcmVlblNpemUgPSA4OworICAgICAgICBt
Qmx1ZVNpemUgPSA4OworICAgICAgICBtQWxwaGFTaXplID0gMDsKKyAgICAgICAgbUJpbmRUb1Rl
eHR1cmVSR0IgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQkdSQThfRVhU
OgorICAgICAgICBtQnVmZmVyU2l6ZSA9IDMyOworICAgICAgICBtUmVkU2l6ZSA9IDg7CisgICAg
ICAgIG1HcmVlblNpemUgPSA4OworICAgICAgICBtQmx1ZVNpemUgPSA4OworICAgICAgICBtQWxw
aGFTaXplID0gODsKKyAgICAgICAgbUJpbmRUb1RleHR1cmVSR0JBID0gdHJ1ZTsKKyAgICAgICAg
YnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOyAgIC8vIE90aGVy
IGZvcm1hdHMgc2hvdWxkIG5vdCBiZSB2YWxpZAorICAgIH0KKworICAgIG1MdW1pbmFuY2VTaXpl
ID0gMDsKKyAgICBtQWxwaGFNYXNrU2l6ZSA9IDA7CisgICAgbUNvbG9yQnVmZmVyVHlwZSA9IEVH
TF9SR0JfQlVGRkVSOworICAgIG1Db25maWdDYXZlYXQgPSAoZGVzYy5mYXN0Q29uZmlnKSA/IEVH
TF9OT05FIDogRUdMX1NMT1dfQ09ORklHOworICAgIG1Db25maWdJRCA9IDA7CisgICAgbUNvbmZv
cm1hbnQgPSBFR0xfT1BFTkdMX0VTMl9CSVQ7CisKKyAgICBzd2l0Y2ggKGRlc2MuZGVwdGhTdGVu
Y2lsRm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfTk9ORToKKyAgICAgICAgbURlcHRoU2l6
ZSA9IDA7CisgICAgICAgIG1TdGVuY2lsU2l6ZSA9IDA7CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVM6CisgICAgICAgIG1EZXB0aFNpemUgPSAzMjsK
KyAgICAgICAgbVN0ZW5jaWxTaXplID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X0RFUFRIMjRfU1RFTkNJTDhfT0VTOgorICAgICAgICBtRGVwdGhTaXplID0gMjQ7CisgICAgICAg
IG1TdGVuY2lsU2l6ZSA9IDg7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9ERVBUSF9D
T01QT05FTlQyNF9PRVM6CisgICAgICAgIG1EZXB0aFNpemUgPSAyNDsKKyAgICAgICAgbVN0ZW5j
aWxTaXplID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVO
VDE2OgorICAgICAgICBtRGVwdGhTaXplID0gMTY7CisgICAgICAgIG1TdGVuY2lsU2l6ZSA9IDA7
CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICB9CisKKyAgICBtTGV2ZWwgPSAwOworICAgIG1NYXRjaE5hdGl2ZVBpeG1hcCA9IEVHTF9O
T05FOworICAgIG1NYXhQQnVmZmVyV2lkdGggPSB0ZXhXaWR0aDsKKyAgICBtTWF4UEJ1ZmZlckhl
aWdodCA9IHRleEhlaWdodDsKKyAgICBtTWF4UEJ1ZmZlclBpeGVscyA9IHRleFdpZHRoKnRleEhl
aWdodDsKKyAgICBtTWF4U3dhcEludGVydmFsID0gbWF4SW50ZXJ2YWw7CisgICAgbU1pblN3YXBJ
bnRlcnZhbCA9IG1pbkludGVydmFsOworICAgIG1OYXRpdmVSZW5kZXJhYmxlID0gRUdMX0ZBTFNF
OworICAgIG1OYXRpdmVWaXN1YWxJRCA9IDA7CisgICAgbU5hdGl2ZVZpc3VhbFR5cGUgPSAwOwor
ICAgIG1SZW5kZXJhYmxlVHlwZSA9IEVHTF9PUEVOR0xfRVMyX0JJVDsKKyAgICBtU2FtcGxlQnVm
ZmVycyA9IGRlc2MubXVsdGlTYW1wbGUgPyAxIDogMDsKKyAgICBtU2FtcGxlcyA9IGRlc2MubXVs
dGlTYW1wbGU7CisgICAgbVN1cmZhY2VUeXBlID0gRUdMX1BCVUZGRVJfQklUIHwgRUdMX1dJTkRP
V19CSVQgfCBFR0xfU1dBUF9CRUhBVklPUl9QUkVTRVJWRURfQklUOworICAgIG1UcmFuc3BhcmVu
dFR5cGUgPSBFR0xfTk9ORTsKKyAgICBtVHJhbnNwYXJlbnRSZWRWYWx1ZSA9IDA7CisgICAgbVRy
YW5zcGFyZW50R3JlZW5WYWx1ZSA9IDA7CisgICAgbVRyYW5zcGFyZW50Qmx1ZVZhbHVlID0gMDsK
K30KKworRUdMQ29uZmlnIENvbmZpZzo6Z2V0SGFuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
KEVHTENvbmZpZykoc2l6ZV90KW1Db25maWdJRDsKK30KKworU29ydENvbmZpZzo6U29ydENvbmZp
Zyhjb25zdCBFR0xpbnQgKmF0dHJpYkxpc3QpCisgICAgOiBtV2FudFJlZChmYWxzZSksIG1XYW50
R3JlZW4oZmFsc2UpLCBtV2FudEJsdWUoZmFsc2UpLCBtV2FudEFscGhhKGZhbHNlKSwgbVdhbnRM
dW1pbmFuY2UoZmFsc2UpCit7CisgICAgc2NhbkZvcldhbnRlZENvbXBvbmVudHMoYXR0cmliTGlz
dCk7Cit9CisKK3ZvaWQgU29ydENvbmZpZzo6c2NhbkZvcldhbnRlZENvbXBvbmVudHMoY29uc3Qg
RUdMaW50ICphdHRyaWJMaXN0KQoreworICAgIC8vIFtFR0xdIHNlY3Rpb24gMy40LjEgcGFnZSAy
NAorICAgIC8vIFNvcnRpbmcgcnVsZSAjMzogYnkgbGFyZ2VyIHRvdGFsIG51bWJlciBvZiBjb2xv
ciBiaXRzLCBub3QgY29uc2lkZXJpbmcKKyAgICAvLyBjb21wb25lbnRzIHRoYXQgYXJlIDAgb3Ig
ZG9uJ3QtY2FyZS4KKyAgICBmb3IgKGNvbnN0IEVHTGludCAqYXR0ciA9IGF0dHJpYkxpc3Q7IGF0
dHJbMF0gIT0gRUdMX05PTkU7IGF0dHIgKz0gMikKKyAgICB7CisgICAgICAgIGlmIChhdHRyWzFd
ICE9IDAgJiYgYXR0clsxXSAhPSBFR0xfRE9OVF9DQVJFKQorICAgICAgICB7CisgICAgICAgICAg
ICBzd2l0Y2ggKGF0dHJbMF0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgRUdM
X1JFRF9TSVpFOiAgICAgICBtV2FudFJlZCA9IHRydWU7IGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIEVHTF9HUkVFTl9TSVpFOiAgICAgbVdhbnRHcmVlbiA9IHRydWU7IGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIEVHTF9CTFVFX1NJWkU6ICAgICAgbVdhbnRCbHVlID0gdHJ1ZTsgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgRUdMX0FMUEhBX1NJWkU6ICAgICBtV2FudEFscGhhID0gdHJ1
ZTsgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0xVTUlOQU5DRV9TSVpFOiBtV2FudEx1
bWluYW5jZSA9IHRydWU7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCitFR0xpbnQgU29ydENvbmZpZzo6d2FudGVkQ29tcG9uZW50c1NpemUoY29uc3QgQ29uZmln
ICZjb25maWcpIGNvbnN0Cit7CisgICAgRUdMaW50IHRvdGFsID0gMDsKKworICAgIGlmIChtV2Fu
dFJlZCkgICAgICAgdG90YWwgKz0gY29uZmlnLm1SZWRTaXplOworICAgIGlmIChtV2FudEdyZWVu
KSAgICAgdG90YWwgKz0gY29uZmlnLm1HcmVlblNpemU7CisgICAgaWYgKG1XYW50Qmx1ZSkgICAg
ICB0b3RhbCArPSBjb25maWcubUJsdWVTaXplOworICAgIGlmIChtV2FudEFscGhhKSAgICAgdG90
YWwgKz0gY29uZmlnLm1BbHBoYVNpemU7CisgICAgaWYgKG1XYW50THVtaW5hbmNlKSB0b3RhbCAr
PSBjb25maWcubUx1bWluYW5jZVNpemU7CisKKyAgICByZXR1cm4gdG90YWw7Cit9CisKK2Jvb2wg
U29ydENvbmZpZzo6b3BlcmF0b3IoKShjb25zdCBDb25maWcgKngsIGNvbnN0IENvbmZpZyAqeSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gKCp0aGlzKSgqeCwgKnkpOworfQorCitib29sIFNvcnRDb25m
aWc6Om9wZXJhdG9yKCkoY29uc3QgQ29uZmlnICZ4LCBjb25zdCBDb25maWcgJnkpIGNvbnN0Cit7
CisgICAgI2RlZmluZSBTT1JUKGF0dHJpYnV0ZSkgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIGlmICh4LmF0dHJpYnV0ZSAhPSB5LmF0dHJpYnV0ZSkgICAgICAgICAgICBcCisgICAg
ICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICByZXR1cm4geC5hdHRyaWJ1dGUgPCB5LmF0dHJpYnV0ZTsgICAgICBcCisgICAgICAgIH0K
KworICAgIE1FVEFfQVNTRVJUKEVHTF9OT05FIDwgRUdMX1NMT1dfQ09ORklHICYmIEVHTF9TTE9X
X0NPTkZJRyA8IEVHTF9OT05fQ09ORk9STUFOVF9DT05GSUcpOworICAgIFNPUlQobUNvbmZpZ0Nh
dmVhdCk7CisKKyAgICBNRVRBX0FTU0VSVChFR0xfUkdCX0JVRkZFUiA8IEVHTF9MVU1JTkFOQ0Vf
QlVGRkVSKTsKKyAgICBTT1JUKG1Db2xvckJ1ZmZlclR5cGUpOworCisgICAgLy8gQnkgbGFyZ2Vy
IHRvdGFsIG51bWJlciBvZiBjb2xvciBiaXRzLCBvbmx5IGNvbnNpZGVyaW5nIHRob3NlIHRoYXQg
YXJlIHJlcXVlc3RlZCB0byBiZSA+IDAuCisgICAgRUdMaW50IHhDb21wb25lbnRzU2l6ZSA9IHdh
bnRlZENvbXBvbmVudHNTaXplKHgpOworICAgIEVHTGludCB5Q29tcG9uZW50c1NpemUgPSB3YW50
ZWRDb21wb25lbnRzU2l6ZSh5KTsKKyAgICBpZiAoeENvbXBvbmVudHNTaXplICE9IHlDb21wb25l
bnRzU2l6ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB4Q29tcG9uZW50c1NpemUgPiB5Q29tcG9u
ZW50c1NpemU7CisgICAgfQorCisgICAgU09SVChtQnVmZmVyU2l6ZSk7CisgICAgU09SVChtU2Ft
cGxlQnVmZmVycyk7CisgICAgU09SVChtU2FtcGxlcyk7CisgICAgU09SVChtRGVwdGhTaXplKTsK
KyAgICBTT1JUKG1TdGVuY2lsU2l6ZSk7CisgICAgU09SVChtQWxwaGFNYXNrU2l6ZSk7CisgICAg
U09SVChtTmF0aXZlVmlzdWFsVHlwZSk7CisgICAgU09SVChtQ29uZmlnSUQpOworCisgICAgI3Vu
ZGVmIFNPUlQKKworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gV2UnZCBsaWtlIHRvIHVzZSBT
b3J0Q29uZmlnIHRvIGFsc28gZWxpbWluYXRlIGR1cGxpY2F0ZSBjb25maWdzLgorLy8gVGhpcyB3
b3JrcyBhcyBsb25nIGFzIHdlIG5ldmVyIGhhdmUgdHdvIGNvbmZpZ3Mgd2l0aCBkaWZmZXJlbnQg
cGVyLVJHQi1jb21wb25lbnQgbGF5b3V0cywKKy8vIGJ1dCB0aGUgc2FtZSB0b3RhbC4KKy8vIDU1
NTEgYW5kIDU2NSBhcmUgZGlmZmVyZW50IGJlY2F1c2UgUitHK0IgaXMgZGlmZmVyZW50LgorLy8g
NTU1MSBhbmQgNTU1IGFyZSBkaWZmZXJlbnQgYmVjYXVzZSBidWZmZXJTaXplIGlzIGRpZmZlcmVu
dC4KK2NvbnN0IEVHTGludCBDb25maWdTZXQ6Om1Tb3J0QXR0cmlic1tdID0KK3sKKyAgICBFR0xf
UkVEX1NJWkUsIDEsCisgICAgRUdMX0dSRUVOX1NJWkUsIDEsCisgICAgRUdMX0JMVUVfU0laRSwg
MSwKKyAgICBFR0xfTFVNSU5BTkNFX1NJWkUsIDEsCisgICAgLy8gQlVUIE5PVCBBTFBIQQorICAg
IEVHTF9OT05FCit9OworCitDb25maWdTZXQ6OkNvbmZpZ1NldCgpCisgICAgOiBtU2V0KFNvcnRD
b25maWcobVNvcnRBdHRyaWJzKSkKK3sKK30KKwordm9pZCBDb25maWdTZXQ6OmFkZChyeDo6Q29u
ZmlnRGVzYyBkZXNjLCBFR0xpbnQgbWluU3dhcEludGVydmFsLCBFR0xpbnQgbWF4U3dhcEludGVy
dmFsLCBFR0xpbnQgdGV4V2lkdGgsIEVHTGludCB0ZXhIZWlnaHQpCit7CisgICAgQ29uZmlnIGNv
bmZpZyhkZXNjLCBtaW5Td2FwSW50ZXJ2YWwsIG1heFN3YXBJbnRlcnZhbCwgdGV4V2lkdGgsIHRl
eEhlaWdodCk7CisgICAgbVNldC5pbnNlcnQoY29uZmlnKTsKK30KKworc2l6ZV90IENvbmZpZ1Nl
dDo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TZXQuc2l6ZSgpOworfQorCitib29sIENv
bmZpZ1NldDo6Z2V0Q29uZmlncyhFR0xDb25maWcgKmNvbmZpZ3MsIGNvbnN0IEVHTGludCAqYXR0
cmliTGlzdCwgRUdMaW50IGNvbmZpZ1NpemUsIEVHTGludCAqbnVtQ29uZmlnKQoreworICAgIHZl
Y3Rvcjxjb25zdCBDb25maWcqPiBwYXNzZWQ7CisgICAgcGFzc2VkLnJlc2VydmUobVNldC5zaXpl
KCkpOworCisgICAgZm9yIChJdGVyYXRvciBjb25maWcgPSBtU2V0LmJlZ2luKCk7IGNvbmZpZyAh
PSBtU2V0LmVuZCgpOyBjb25maWcrKykKKyAgICB7CisgICAgICAgIGJvb2wgbWF0Y2ggPSB0cnVl
OworICAgICAgICBjb25zdCBFR0xpbnQgKmF0dHJpYnV0ZSA9IGF0dHJpYkxpc3Q7CisKKyAgICAg
ICAgd2hpbGUgKGF0dHJpYnV0ZVswXSAhPSBFR0xfTk9ORSkKKyAgICAgICAgeworICAgICAgICAg
ICAgc3dpdGNoIChhdHRyaWJ1dGVbMF0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNh
c2UgRUdMX0JVRkZFUl9TSVpFOiAgICAgICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tQnVmZmVy
U2l6ZSA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIEVHTF9BTFBIQV9TSVpFOiAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbmZp
Zy0+bUFscGhhU2l6ZSA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfQkxVRV9TSVpFOiAgICAgICAgICAgICAgICAgbWF0
Y2ggPSBjb25maWctPm1CbHVlU2l6ZSA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0dSRUVOX1NJWkU6ICAgICAgICAg
ICAgICAgIG1hdGNoID0gY29uZmlnLT5tR3JlZW5TaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9SRURfU0laRTog
ICAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bVJlZFNpemUgPj0gYXR0cmlidXRlWzFd
OyAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xf
REVQVEhfU0laRTogICAgICAgICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1EZXB0aFNpemUgPj0g
YXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgRUdMX1NURU5DSUxfU0laRTogICAgICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tU3Rl
bmNpbFNpemUgPj0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIEVHTF9DT05GSUdfQ0FWRUFUOiAgICAgICAgICAgICBtYXRjaCA9IGNv
bmZpZy0+bUNvbmZpZ0NhdmVhdCA9PSAoRUdMZW51bSkgYXR0cmlidXRlWzFdOyAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfQ09ORklHX0lEOiAgICAgICAgICAgICAgICAg
bWF0Y2ggPSBjb25maWctPm1Db25maWdJRCA9PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0xFVkVMOiAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tTGV2ZWwgPj0gYXR0cmlidXRlWzFdOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9OQVRJVkVf
UkVOREVSQUJMRTogICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bU5hdGl2ZVJlbmRlcmFibGUgPT0g
KEVHTEJvb2xlYW4pIGF0dHJpYnV0ZVsxXTsgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBF
R0xfTkFUSVZFX1ZJU1VBTF9UWVBFOiAgICAgICAgbWF0Y2ggPSBjb25maWctPm1OYXRpdmVWaXN1
YWxUeXBlID09IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgRUdMX1NBTVBMRVM6ICAgICAgICAgICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5t
U2FtcGxlcyA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIEVHTF9TQU1QTEVfQlVGRkVSUzogICAgICAgICAgICBtYXRjaCA9
IGNvbmZpZy0+bVNhbXBsZUJ1ZmZlcnMgPj0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfU1VSRkFDRV9UWVBFOiAgICAgICAgICAg
ICAgbWF0Y2ggPSAoY29uZmlnLT5tU3VyZmFjZVR5cGUgJiBhdHRyaWJ1dGVbMV0pID09IGF0dHJp
YnV0ZVsxXTsgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX1RZ
UEU6ICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tVHJhbnNwYXJlbnRUeXBlID09IChFR0xlbnVt
KSBhdHRyaWJ1dGVbMV07ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9UUkFO
U1BBUkVOVF9CTFVFX1ZBTFVFOiAgICBtYXRjaCA9IGNvbmZpZy0+bVRyYW5zcGFyZW50Qmx1ZVZh
bHVlID09IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2Fz
ZSBFR0xfVFJBTlNQQVJFTlRfR1JFRU5fVkFMVUU6ICAgbWF0Y2ggPSBjb25maWctPm1UcmFuc3Bh
cmVudEdyZWVuVmFsdWUgPT0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX1JFRF9WQUxVRTogICAgIG1hdGNoID0gY29uZmln
LT5tVHJhbnNwYXJlbnRSZWRWYWx1ZSA9PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIEVHTF9CSU5EX1RPX1RFWFRVUkVfUkdCOiAgICAgICBtYXRj
aCA9IGNvbmZpZy0+bUJpbmRUb1RleHR1cmVSR0IgPT0gKEVHTEJvb2xlYW4pIGF0dHJpYnV0ZVsx
XTsgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfQklORF9UT19URVhUVVJFX1JHQkE6
ICAgICAgbWF0Y2ggPSBjb25maWctPm1CaW5kVG9UZXh0dXJlUkdCQSA9PSAoRUdMQm9vbGVhbikg
YXR0cmlidXRlWzFdOyAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX01JTl9TV0FQX0lO
VEVSVkFMOiAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tTWluU3dhcEludGVydmFsID09IGF0dHJp
YnV0ZVsxXTsgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9N
QVhfU1dBUF9JTlRFUlZBTDogICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bU1heFN3YXBJbnRlcnZh
bCA9PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSBFR0xfTFVNSU5BTkNFX1NJWkU6ICAgICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1MdW1p
bmFuY2VTaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgRUdMX0FMUEhBX01BU0tfU0laRTogICAgICAgICAgIG1hdGNoID0gY29u
ZmlnLT5tQWxwaGFNYXNrU2l6ZSA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9DT0xPUl9CVUZGRVJfVFlQRTogICAgICAgICBt
YXRjaCA9IGNvbmZpZy0+bUNvbG9yQnVmZmVyVHlwZSA9PSAoRUdMZW51bSkgYXR0cmlidXRlWzFd
OyAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfUkVOREVSQUJMRV9UWVBFOiAg
ICAgICAgICAgbWF0Y2ggPSAoY29uZmlnLT5tUmVuZGVyYWJsZVR5cGUgJiBhdHRyaWJ1dGVbMV0p
ID09IGF0dHJpYnV0ZVsxXTsgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX01BVENIX05B
VElWRV9QSVhNQVA6ICAgICAgIG1hdGNoID0gZmFsc2U7IFVOSU1QTEVNRU5URUQoKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVH
TF9DT05GT1JNQU5UOiAgICAgICAgICAgICAgICBtYXRjaCA9IChjb25maWctPm1Db25mb3JtYW50
ICYgYXR0cmlidXRlWzFdKSA9PSBhdHRyaWJ1dGVbMV07ICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgY2FzZSBFR0xfTUFYX1BCVUZGRVJfV0lEVEg6ICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1N
YXhQQnVmZmVyV2lkdGggPj0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX0hFSUdIVDogICAgICAgIG1hdGNoID0g
Y29uZmlnLT5tTWF4UEJ1ZmZlckhlaWdodCA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9QSVhFTFM6ICAgICAg
ICBtYXRjaCA9IGNvbmZpZy0+bU1heFBCdWZmZXJQaXhlbHMgPj0gYXR0cmlidXRlWzFdOyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbWF0Y2gp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGF0dHJpYnV0ZSArPSAyOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1h
dGNoKQorICAgICAgICB7CisgICAgICAgICAgICBwYXNzZWQucHVzaF9iYWNrKCYqY29uZmlnKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjb25maWdzKQorICAgIHsKKyAgICAgICAgc29y
dChwYXNzZWQuYmVnaW4oKSwgcGFzc2VkLmVuZCgpLCBTb3J0Q29uZmlnKGF0dHJpYkxpc3QpKTsK
KworICAgICAgICBFR0xpbnQgaW5kZXg7CisgICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8
IGNvbmZpZ1NpemUgJiYgaW5kZXggPCBzdGF0aWNfY2FzdDxFR0xpbnQ+KHBhc3NlZC5zaXplKCkp
OyBpbmRleCsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25maWdzW2luZGV4XSA9IHBhc3Nl
ZFtpbmRleF0tPmdldEhhbmRsZSgpOworICAgICAgICB9CisKKyAgICAgICAgKm51bUNvbmZpZyA9
IGluZGV4OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAqbnVtQ29uZmlnID0gcGFz
c2VkLnNpemUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY29uc3QgZWdsOjpD
b25maWcgKkNvbmZpZ1NldDo6Z2V0KEVHTENvbmZpZyBjb25maWdIYW5kbGUpCit7CisgICAgZm9y
IChJdGVyYXRvciBjb25maWcgPSBtU2V0LmJlZ2luKCk7IGNvbmZpZyAhPSBtU2V0LmVuZCgpOyBj
b25maWcrKykKKyAgICB7CisgICAgICAgIGlmIChjb25maWctPmdldEhhbmRsZSgpID09IGNvbmZp
Z0hhbmRsZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICYoKmNvbmZpZyk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsKK30KK30KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvQ29uZmlnLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTE1IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBDb25maWcuaDogRGVmaW5lcyB0
aGUgZWdsOjpDb25maWcgY2xhc3MsIGRlc2NyaWJpbmcgdGhlIGZvcm1hdCwgdHlwZQorLy8gYW5k
IHNpemUgZm9yIGFuIGVnbDo6U3VyZmFjZS4gSW1wbGVtZW50cyBFR0xDb25maWcgYW5kIHJlbGF0
ZWQgZnVuY3Rpb25hbGl0eS4KKy8vIFtFR0wgMS40XSBzZWN0aW9uIDMuNCBwYWdlIDE1LgorCisj
aWZuZGVmIElOQ0xVREVfQ09ORklHX0hfCisjZGVmaW5lIElOQ0xVREVfQ09ORklHX0hfCisKKyNk
ZWZpbmUgRUdMQVBJCisjaW5jbHVkZSA8RUdML2VnbC5oPgorCisjaW5jbHVkZSA8c2V0PgorCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgiCisjaW5jbHVkZSAiY29tbW9u
L2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIGVnbAoreworY2xhc3MgRGlzcGxheTsKKworY2xh
c3MgQ29uZmlnCit7CisgIHB1YmxpYzoKKyAgICBDb25maWcocng6OkNvbmZpZ0Rlc2MgZGVzYywg
RUdMaW50IG1pblN3YXBJbnRlcnZhbCwgRUdMaW50IG1heFN3YXBJbnRlcnZhbCwgRUdMaW50IHRl
eFdpZHRoLCBFR0xpbnQgdGV4SGVpZ2h0KTsKKworICAgIEVHTENvbmZpZyBnZXRIYW5kbGUoKSBj
b25zdDsKKworICAgIGNvbnN0IEdMZW51bSBtUmVuZGVyVGFyZ2V0Rm9ybWF0OworICAgIGNvbnN0
IEdMZW51bSBtRGVwdGhTdGVuY2lsRm9ybWF0OworICAgIGNvbnN0IEdMaW50IG1NdWx0aVNhbXBs
ZTsKKworICAgIEVHTGludCBtQnVmZmVyU2l6ZTsgICAgICAgICAgICAgIC8vIERlcHRoIG9mIHRo
ZSBjb2xvciBidWZmZXIKKyAgICBFR0xpbnQgbVJlZFNpemU7ICAgICAgICAgICAgICAgICAvLyBC
aXRzIG9mIFJlZCBpbiB0aGUgY29sb3IgYnVmZmVyCisgICAgRUdMaW50IG1HcmVlblNpemU7ICAg
ICAgICAgICAgICAgLy8gQml0cyBvZiBHcmVlbiBpbiB0aGUgY29sb3IgYnVmZmVyCisgICAgRUdM
aW50IG1CbHVlU2l6ZTsgICAgICAgICAgICAgICAgLy8gQml0cyBvZiBCbHVlIGluIHRoZSBjb2xv
ciBidWZmZXIKKyAgICBFR0xpbnQgbUx1bWluYW5jZVNpemU7ICAgICAgICAgICAvLyBCaXRzIG9m
IEx1bWluYW5jZSBpbiB0aGUgY29sb3IgYnVmZmVyCisgICAgRUdMaW50IG1BbHBoYVNpemU7ICAg
ICAgICAgICAgICAgLy8gQml0cyBvZiBBbHBoYSBpbiB0aGUgY29sb3IgYnVmZmVyCisgICAgRUdM
aW50IG1BbHBoYU1hc2tTaXplOyAgICAgICAgICAgLy8gQml0cyBvZiBBbHBoYSBNYXNrIGluIHRo
ZSBtYXNrIGJ1ZmZlcgorICAgIEVHTEJvb2xlYW4gbUJpbmRUb1RleHR1cmVSR0I7ICAgIC8vIFRy
dWUgaWYgYmluZGFibGUgdG8gUkdCIHRleHR1cmVzLgorICAgIEVHTEJvb2xlYW4gbUJpbmRUb1Rl
eHR1cmVSR0JBOyAgIC8vIFRydWUgaWYgYmluZGFibGUgdG8gUkdCQSB0ZXh0dXJlcy4KKyAgICBF
R0xlbnVtIG1Db2xvckJ1ZmZlclR5cGU7ICAgICAgICAvLyBDb2xvciBidWZmZXIgdHlwZQorICAg
IEVHTGVudW0gbUNvbmZpZ0NhdmVhdDsgICAgICAgICAgIC8vIEFueSBjYXZlYXRzIGZvciB0aGUg
Y29uZmlndXJhdGlvbgorICAgIEVHTGludCBtQ29uZmlnSUQ7ICAgICAgICAgICAgICAgIC8vIFVu
aXF1ZSBFR0xDb25maWcgaWRlbnRpZmllcgorICAgIEVHTGludCBtQ29uZm9ybWFudDsgICAgICAg
ICAgICAgIC8vIFdoZXRoZXIgY29udGV4dHMgY3JlYXRlZCB3aXRoIHRoaXMgY29uZmlnIGFyZSBj
b25mb3JtYW50CisgICAgRUdMaW50IG1EZXB0aFNpemU7ICAgICAgICAgICAgICAgLy8gQml0cyBv
ZiBaIGluIHRoZSBkZXB0aCBidWZmZXIKKyAgICBFR0xpbnQgbUxldmVsOyAgICAgICAgICAgICAg
ICAgICAvLyBGcmFtZSBidWZmZXIgbGV2ZWwKKyAgICBFR0xCb29sZWFuIG1NYXRjaE5hdGl2ZVBp
eG1hcDsgICAvLyBNYXRjaCB0aGUgbmF0aXZlIHBpeG1hcCBmb3JtYXQKKyAgICBFR0xpbnQgbU1h
eFBCdWZmZXJXaWR0aDsgICAgICAgICAvLyBNYXhpbXVtIHdpZHRoIG9mIHBidWZmZXIKKyAgICBF
R0xpbnQgbU1heFBCdWZmZXJIZWlnaHQ7ICAgICAgICAvLyBNYXhpbXVtIGhlaWdodCBvZiBwYnVm
ZmVyCisgICAgRUdMaW50IG1NYXhQQnVmZmVyUGl4ZWxzOyAgICAgICAgLy8gTWF4aW11bSBzaXpl
IG9mIHBidWZmZXIKKyAgICBFR0xpbnQgbU1heFN3YXBJbnRlcnZhbDsgICAgICAgICAvLyBNYXhp
bXVtIHN3YXAgaW50ZXJ2YWwKKyAgICBFR0xpbnQgbU1pblN3YXBJbnRlcnZhbDsgICAgICAgICAv
LyBNaW5pbXVtIHN3YXAgaW50ZXJ2YWwKKyAgICBFR0xCb29sZWFuIG1OYXRpdmVSZW5kZXJhYmxl
OyAgICAvLyBFR0xfVFJVRSBpZiBuYXRpdmUgcmVuZGVyaW5nIEFQSXMgY2FuIHJlbmRlciB0byBz
dXJmYWNlCisgICAgRUdMaW50IG1OYXRpdmVWaXN1YWxJRDsgICAgICAgICAgLy8gSGFuZGxlIG9m
IGNvcnJlc3BvbmRpbmcgbmF0aXZlIHZpc3VhbAorICAgIEVHTGludCBtTmF0aXZlVmlzdWFsVHlw
ZTsgICAgICAgIC8vIE5hdGl2ZSB2aXN1YWwgdHlwZSBvZiB0aGUgYXNzb2NpYXRlZCB2aXN1YWwK
KyAgICBFR0xpbnQgbVJlbmRlcmFibGVUeXBlOyAgICAgICAgICAvLyBXaGljaCBjbGllbnQgcmVu
ZGVyaW5nIEFQSXMgYXJlIHN1cHBvcnRlZC4KKyAgICBFR0xpbnQgbVNhbXBsZUJ1ZmZlcnM7ICAg
ICAgICAgICAvLyBOdW1iZXIgb2YgbXVsdGlzYW1wbGUgYnVmZmVycworICAgIEVHTGludCBtU2Ft
cGxlczsgICAgICAgICAgICAgICAgIC8vIE51bWJlciBvZiBzYW1wbGVzIHBlciBwaXhlbAorICAg
IEVHTGludCBtU3RlbmNpbFNpemU7ICAgICAgICAgICAgIC8vIEJpdHMgb2YgU3RlbmNpbCBpbiB0
aGUgc3RlbmNpbCBidWZmZXIKKyAgICBFR0xpbnQgbVN1cmZhY2VUeXBlOyAgICAgICAgICAgICAv
LyBXaGljaCB0eXBlcyBvZiBFR0wgc3VyZmFjZXMgYXJlIHN1cHBvcnRlZC4KKyAgICBFR0xlbnVt
IG1UcmFuc3BhcmVudFR5cGU7ICAgICAgICAvLyBUeXBlIG9mIHRyYW5zcGFyZW5jeSBzdXBwb3J0
ZWQKKyAgICBFR0xpbnQgbVRyYW5zcGFyZW50UmVkVmFsdWU7ICAgICAvLyBUcmFuc3BhcmVudCBy
ZWQgdmFsdWUKKyAgICBFR0xpbnQgbVRyYW5zcGFyZW50R3JlZW5WYWx1ZTsgICAvLyBUcmFuc3Bh
cmVudCBncmVlbiB2YWx1ZQorICAgIEVHTGludCBtVHJhbnNwYXJlbnRCbHVlVmFsdWU7ICAgIC8v
IFRyYW5zcGFyZW50IGJsdWUgdmFsdWUKK307CisKKy8vIEZ1bmN0aW9uIG9iamVjdCB1c2VkIGJ5
IFNUTCBzb3J0aW5nIHJvdXRpbmVzIGZvciBvcmRlcmluZyBDb25maWdzIGFjY29yZGluZyB0byBb
RUdMXSBzZWN0aW9uIDMuNC4xIHBhZ2UgMjQuCitjbGFzcyBTb3J0Q29uZmlnCit7CisgIHB1Ymxp
YzoKKyAgICBleHBsaWNpdCBTb3J0Q29uZmlnKGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCk7CisK
KyAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgQ29uZmlnICp4LCBjb25zdCBDb25maWcgKnkpIGNv
bnN0OworICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBDb25maWcgJngsIGNvbnN0IENvbmZpZyAm
eSkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICB2b2lkIHNjYW5Gb3JXYW50ZWRDb21wb25lbnRz
KGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCk7CisgICAgRUdMaW50IHdhbnRlZENvbXBvbmVudHNT
aXplKGNvbnN0IENvbmZpZyAmY29uZmlnKSBjb25zdDsKKworICAgIGJvb2wgbVdhbnRSZWQ7Cisg
ICAgYm9vbCBtV2FudEdyZWVuOworICAgIGJvb2wgbVdhbnRCbHVlOworICAgIGJvb2wgbVdhbnRB
bHBoYTsKKyAgICBib29sIG1XYW50THVtaW5hbmNlOworfTsKKworY2xhc3MgQ29uZmlnU2V0Cit7
CisgICAgZnJpZW5kIERpc3BsYXk7CisKKyAgcHVibGljOgorICAgIENvbmZpZ1NldCgpOworCisg
ICAgdm9pZCBhZGQocng6OkNvbmZpZ0Rlc2MgZGVzYywgRUdMaW50IG1pblN3YXBJbnRlcnZhbCwg
RUdMaW50IG1heFN3YXBJbnRlcnZhbCwgRUdMaW50IHRleFdpZHRoLCBFR0xpbnQgdGV4SGVpZ2h0
KTsKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OworICAgIGJvb2wgZ2V0Q29uZmlncyhFR0xDb25m
aWcgKmNvbmZpZ3MsIGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCwgRUdMaW50IGNvbmZpZ1NpemUs
IEVHTGludCAqbnVtQ29uZmlnKTsKKyAgICBjb25zdCBlZ2w6OkNvbmZpZyAqZ2V0KEVHTENvbmZp
ZyBjb25maWdIYW5kbGUpOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOKENvbmZpZ1NldCk7CisKKyAgICB0eXBlZGVmIHN0ZDo6c2V0PENvbmZpZywgU29ydENvbmZp
Zz4gU2V0OworICAgIHR5cGVkZWYgU2V0OjppdGVyYXRvciBJdGVyYXRvcjsKKyAgICBTZXQgbVNl
dDsKKworICAgIHN0YXRpYyBjb25zdCBFR0xpbnQgbVNvcnRBdHRyaWJzW107Cit9OworfQorCisj
ZW5kaWYgICAvLyBJTkNMVURFX0NPTkZJR19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkVHTC9EaXNwbGF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliRUdML0Rpc3BsYXkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9EaXNwbGF5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1MzcgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIERpc3BsYXkuY3BwOiBJbXBsZW1l
bnRzIHRoZSBlZ2w6OkRpc3BsYXkgY2xhc3MsIHJlcHJlc2VudGluZyB0aGUgYWJzdHJhY3QKKy8v
IGRpc3BsYXkgb24gd2hpY2ggZ3JhcGhpY3MgYXJlIGRyYXduLiBJbXBsZW1lbnRzIEVHTERpc3Bs
YXkuCisvLyBbRUdMIDEuNF0gc2VjdGlvbiAyLjEuMiBwYWdlIDMuCisKKyNpbmNsdWRlICJsaWJF
R0wvRGlzcGxheS5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPG1hcD4KKyNp
bmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJs
aWJHTEVTdjIvbWF0aHV0aWwuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9Db250ZXh0LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1N3
YXBDaGFpbi5oIgorCisjaW5jbHVkZSAibGliRUdML21haW4uaCIKKyNpbmNsdWRlICJsaWJFR0wv
U3VyZmFjZS5oIgorCituYW1lc3BhY2UgZWdsCit7CituYW1lc3BhY2UKK3sKKyAgICB0eXBlZGVm
IHN0ZDo6bWFwPEVHTE5hdGl2ZURpc3BsYXlUeXBlLCBEaXNwbGF5Kj4gRGlzcGxheU1hcDsgCisg
ICAgRGlzcGxheU1hcCBkaXNwbGF5czsKK30KKworZWdsOjpEaXNwbGF5ICpEaXNwbGF5OjpnZXRE
aXNwbGF5KEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlJZCkKK3sKKyAgICBpZiAoZGlzcGxh
eXMuZmluZChkaXNwbGF5SWQpICE9IGRpc3BsYXlzLmVuZCgpKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGRpc3BsYXlzW2Rpc3BsYXlJZF07CisgICAgfQorICAgIAorICAgIC8vIEZJWE1FOiBDaGVj
ayBpZiBkaXNwbGF5SWQgaXMgYSB2YWxpZCBkaXNwbGF5IGRldmljZSBjb250ZXh0CisKKyAgICBl
Z2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBuZXcgZWdsOjpEaXNwbGF5KGRpc3BsYXlJZCwgKEhEQylk
aXNwbGF5SWQpOworCisgICAgZGlzcGxheXNbZGlzcGxheUlkXSA9IGRpc3BsYXk7CisgICAgcmV0
dXJuIGRpc3BsYXk7Cit9CisKK0Rpc3BsYXk6OkRpc3BsYXkoRUdMTmF0aXZlRGlzcGxheVR5cGUg
ZGlzcGxheUlkLCBIREMgZGV2aWNlQ29udGV4dCkgOiBtRGMoZGV2aWNlQ29udGV4dCkKK3sKKyAg
ICBtRGlzcGxheUlkID0gZGlzcGxheUlkOworICAgIG1SZW5kZXJlciA9IE5VTEw7Cit9CisKK0Rp
c3BsYXk6On5EaXNwbGF5KCkKK3sKKyAgICB0ZXJtaW5hdGUoKTsKKworICAgIERpc3BsYXlNYXA6
Oml0ZXJhdG9yIHRoaXNEaXNwbGF5ID0gZGlzcGxheXMuZmluZChtRGlzcGxheUlkKTsKKworICAg
IGlmICh0aGlzRGlzcGxheSAhPSBkaXNwbGF5cy5lbmQoKSkKKyAgICB7CisgICAgICAgIGRpc3Bs
YXlzLmVyYXNlKHRoaXNEaXNwbGF5KTsKKyAgICB9Cit9CisKK2Jvb2wgRGlzcGxheTo6aW5pdGlh
bGl6ZSgpCit7CisgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICB7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIG1SZW5kZXJlciA9IGdsQ3JlYXRlUmVuZGVyZXIodGhpcywg
bURjLCBtRGlzcGxheUlkKTsKKyAgICAKKyAgICBpZiAoIW1SZW5kZXJlcikKKyAgICB7CisgICAg
ICAgIHRlcm1pbmF0ZSgpOworICAgICAgICByZXR1cm4gZXJyb3IoRUdMX05PVF9JTklUSUFMSVpF
RCwgZmFsc2UpOworICAgIH0KKworICAgIEVHTGludCBtaW5Td2FwSW50ZXJ2YWwgPSBtUmVuZGVy
ZXItPmdldE1pblN3YXBJbnRlcnZhbCgpOworICAgIEVHTGludCBtYXhTd2FwSW50ZXJ2YWwgPSBt
UmVuZGVyZXItPmdldE1heFN3YXBJbnRlcnZhbCgpOworICAgIEVHTGludCBtYXhUZXh0dXJlV2lk
dGggPSBtUmVuZGVyZXItPmdldE1heFRleHR1cmVXaWR0aCgpOworICAgIEVHTGludCBtYXhUZXh0
dXJlSGVpZ2h0ID0gbVJlbmRlcmVyLT5nZXRNYXhUZXh0dXJlSGVpZ2h0KCk7CisKKyAgICByeDo6
Q29uZmlnRGVzYyAqZGVzY0xpc3Q7CisgICAgaW50IG51bUNvbmZpZ3MgPSBtUmVuZGVyZXItPmdl
bmVyYXRlQ29uZmlncygmZGVzY0xpc3QpOworICAgIENvbmZpZ1NldCBjb25maWdTZXQ7CisKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNvbmZpZ3M7ICsraSkKKyAgICAgICAgY29uZmlnU2V0
LmFkZChkZXNjTGlzdFtpXSwgbWluU3dhcEludGVydmFsLCBtYXhTd2FwSW50ZXJ2YWwsCisgICAg
ICAgICAgICAgICAgICAgICAgbWF4VGV4dHVyZVdpZHRoLCBtYXhUZXh0dXJlSGVpZ2h0KTsKKwor
ICAgIC8vIEdpdmUgdGhlIHNvcnRlZCBjb25maWdzIGEgdW5pcXVlIElEIGFuZCBzdG9yZSB0aGVt
IGludGVybmFsbHkKKyAgICBFR0xpbnQgaW5kZXggPSAxOworICAgIGZvciAoQ29uZmlnU2V0OjpJ
dGVyYXRvciBjb25maWcgPSBjb25maWdTZXQubVNldC5iZWdpbigpOyBjb25maWcgIT0gY29uZmln
U2V0Lm1TZXQuZW5kKCk7IGNvbmZpZysrKQorICAgIHsKKyAgICAgICAgQ29uZmlnIGNvbmZpZ3Vy
YXRpb24gPSAqY29uZmlnOworICAgICAgICBjb25maWd1cmF0aW9uLm1Db25maWdJRCA9IGluZGV4
OworICAgICAgICBpbmRleCsrOworCisgICAgICAgIG1Db25maWdTZXQubVNldC5pbnNlcnQoY29u
ZmlndXJhdGlvbik7CisgICAgfQorCisgICAgbVJlbmRlcmVyLT5kZWxldGVDb25maWdzKGRlc2NM
aXN0KTsKKyAgICBkZXNjTGlzdCA9IE5VTEw7CisKKyAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkK
KyAgICB7CisgICAgICAgIHRlcm1pbmF0ZSgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgaW5pdEV4dGVuc2lvblN0cmluZygpOworICAgIGluaXRWZW5kb3JTdHJpbmcoKTsK
KworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERpc3BsYXk6OnRlcm1pbmF0ZSgpCit7Cisg
ICAgd2hpbGUgKCFtU3VyZmFjZVNldC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVzdHJveVN1
cmZhY2UoKm1TdXJmYWNlU2V0LmJlZ2luKCkpOworICAgIH0KKworICAgIHdoaWxlICghbUNvbnRl
eHRTZXQuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGRlc3Ryb3lDb250ZXh0KCptQ29udGV4dFNl
dC5iZWdpbigpKTsKKyAgICB9CisKKyAgICBnbERlc3Ryb3lSZW5kZXJlcihtUmVuZGVyZXIpOwor
ICAgIG1SZW5kZXJlciA9IE5VTEw7Cit9CisKK2Jvb2wgRGlzcGxheTo6Z2V0Q29uZmlncyhFR0xD
b25maWcgKmNvbmZpZ3MsIGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCwgRUdMaW50IGNvbmZpZ1Np
emUsIEVHTGludCAqbnVtQ29uZmlnKQoreworICAgIHJldHVybiBtQ29uZmlnU2V0LmdldENvbmZp
Z3MoY29uZmlncywgYXR0cmliTGlzdCwgY29uZmlnU2l6ZSwgbnVtQ29uZmlnKTsKK30KKworYm9v
bCBEaXNwbGF5OjpnZXRDb25maWdBdHRyaWIoRUdMQ29uZmlnIGNvbmZpZywgRUdMaW50IGF0dHJp
YnV0ZSwgRUdMaW50ICp2YWx1ZSkKK3sKKyAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJh
dGlvbiA9IG1Db25maWdTZXQuZ2V0KGNvbmZpZyk7CisKKyAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkK
KyAgICB7CisgICAgICBjYXNlIEVHTF9CVUZGRVJfU0laRTogICAgICAgICAgICAgICAqdmFsdWUg
PSBjb25maWd1cmF0aW9uLT5tQnVmZmVyU2l6ZTsgICAgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEVHTF9BTFBIQV9TSVpFOiAgICAgICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9u
LT5tQWxwaGFTaXplOyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9CTFVFX1NJ
WkU6ICAgICAgICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tQmx1ZVNpemU7ICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9HUkVFTl9TSVpFOiAgICAgICAgICAg
ICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tR3JlZW5TaXplOyAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEVHTF9SRURfU0laRTogICAgICAgICAgICAgICAgICAqdmFsdWUgPSBj
b25maWd1cmF0aW9uLT5tUmVkU2l6ZTsgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEVHTF9ERVBUSF9TSVpFOiAgICAgICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5t
RGVwdGhTaXplOyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9TVEVOQ0lMX1NJ
WkU6ICAgICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tU3RlbmNpbFNpemU7ICAg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9DT05GSUdfQ0FWRUFUOiAgICAgICAgICAg
ICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tQ29uZmlnQ2F2ZWF0OyAgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEVHTF9DT05GSUdfSUQ6ICAgICAgICAgICAgICAgICAqdmFsdWUgPSBjb25m
aWd1cmF0aW9uLT5tQ29uZmlnSUQ7ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVH
TF9MRVZFTDogICAgICAgICAgICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tTGV2
ZWw7ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9OQVRJVkVfUkVOREVS
QUJMRTogICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tTmF0aXZlUmVuZGVyYWJsZTsg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9OQVRJVkVfVklTVUFMX1RZUEU6ICAgICAgICAq
dmFsdWUgPSBjb25maWd1cmF0aW9uLT5tTmF0aXZlVmlzdWFsVHlwZTsgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEVHTF9TQU1QTEVTOiAgICAgICAgICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1
cmF0aW9uLT5tU2FtcGxlczsgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9T
QU1QTEVfQlVGRkVSUzogICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tU2FtcGxl
QnVmZmVyczsgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9TVVJGQUNFX1RZUEU6ICAg
ICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tU3VyZmFjZVR5cGU7ICAgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9UUkFOU1BBUkVOVF9UWVBFOiAgICAgICAgICAqdmFs
dWUgPSBjb25maWd1cmF0aW9uLT5tVHJhbnNwYXJlbnRUeXBlOyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEVHTF9UUkFOU1BBUkVOVF9CTFVFX1ZBTFVFOiAgICAqdmFsdWUgPSBjb25maWd1cmF0
aW9uLT5tVHJhbnNwYXJlbnRCbHVlVmFsdWU7ICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9UUkFO
U1BBUkVOVF9HUkVFTl9WQUxVRTogICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tVHJhbnNwYXJl
bnRHcmVlblZhbHVlOyAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9UUkFOU1BBUkVOVF9SRURfVkFM
VUU6ICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tVHJhbnNwYXJlbnRSZWRWYWx1ZTsgICAg
YnJlYWs7CisgICAgICBjYXNlIEVHTF9CSU5EX1RPX1RFWFRVUkVfUkdCOiAgICAgICAqdmFsdWUg
PSBjb25maWd1cmF0aW9uLT5tQmluZFRvVGV4dHVyZVJHQjsgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEVHTF9CSU5EX1RPX1RFWFRVUkVfUkdCQTogICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9u
LT5tQmluZFRvVGV4dHVyZVJHQkE7ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9NSU5fU1dB
UF9JTlRFUlZBTDogICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tTWluU3dhcEludGVy
dmFsOyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9NQVhfU1dBUF9JTlRFUlZBTDogICAg
ICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tTWF4U3dhcEludGVydmFsOyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEVHTF9MVU1JTkFOQ0VfU0laRTogICAgICAgICAgICAqdmFsdWUgPSBj
b25maWd1cmF0aW9uLT5tTHVtaW5hbmNlU2l6ZTsgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEVHTF9BTFBIQV9NQVNLX1NJWkU6ICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5t
QWxwaGFNYXNrU2l6ZTsgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9DT0xPUl9CVUZG
RVJfVFlQRTogICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tQ29sb3JCdWZmZXJUeXBl
OyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9SRU5ERVJBQkxFX1RZUEU6ICAgICAgICAg
ICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tUmVuZGVyYWJsZVR5cGU7ICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEVHTF9NQVRDSF9OQVRJVkVfUElYTUFQOiAgICAgICAqdmFsdWUgPSBmYWxz
ZTsgVU5JTVBMRU1FTlRFRCgpOyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVH
TF9DT05GT1JNQU5UOiAgICAgICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tQ29u
Zm9ybWFudDsgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9X
SURUSDogICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tTWF4UEJ1ZmZlcldpZHRoOyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9IRUlHSFQ6ICAgICAgICAq
dmFsdWUgPSBjb25maWd1cmF0aW9uLT5tTWF4UEJ1ZmZlckhlaWdodDsgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9QSVhFTFM6ICAgICAgICAqdmFsdWUgPSBjb25maWd1
cmF0aW9uLT5tTWF4UEJ1ZmZlclBpeGVsczsgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKwor
CitFR0xTdXJmYWNlIERpc3BsYXk6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoSFdORCB3aW5kb3csIEVH
TENvbmZpZyBjb25maWcsIGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCkKK3sKKyAgICBjb25zdCBD
b25maWcgKmNvbmZpZ3VyYXRpb24gPSBtQ29uZmlnU2V0LmdldChjb25maWcpOworICAgIEVHTGlu
dCBwb3N0U3ViQnVmZmVyU3VwcG9ydGVkID0gRUdMX0ZBTFNFOworCisgICAgaWYgKGF0dHJpYkxp
c3QpCisgICAgeworICAgICAgICB3aGlsZSAoKmF0dHJpYkxpc3QgIT0gRUdMX05PTkUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYXR0cmliTGlzdFswXSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgY2FzZSBFR0xfUkVOREVSX0JVRkZFUjoKKyAgICAgICAgICAgICAgICBz
d2l0Y2ggKGF0dHJpYkxpc3RbMV0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgY2FzZSBFR0xfQkFDS19CVUZGRVI6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgY2FzZSBFR0xfU0lOR0xFX0JVRkZFUjoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9OT19TVVJGQUNFKTsgICAvLyBSZW5k
ZXJpbmcgZGlyZWN0bHkgdG8gZnJvbnQgYnVmZmVyIG5vdCBzdXBwb3J0ZWQKKyAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFE
X0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfUE9TVF9TVUJfQlVGRkVSX1NV
UFBPUlRFRF9OVjoKKyAgICAgICAgICAgICAgICBwb3N0U3ViQnVmZmVyU3VwcG9ydGVkID0gYXR0
cmliTGlzdFsxXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBF
R0xfVkdfQ09MT1JTUEFDRToKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9N
QVRDSCwgRUdMX05PX1NVUkZBQ0UpOworICAgICAgICAgICAgICBjYXNlIEVHTF9WR19BTFBIQV9G
T1JNQVQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9O
T19TVVJGQUNFKTsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgYXR0cmliTGlzdCArPSAyOworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKGhhc0V4aXN0aW5nV2luZG93U3VyZmFjZSh3aW5kb3cpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9OT19TVVJGQUNFKTsKKyAgICB9CisKKyAg
ICBpZiAobVJlbmRlcmVyLT50ZXN0RGV2aWNlTG9zdChmYWxzZSkpCisgICAgeworICAgICAgICBp
ZiAoIXJlc3RvcmVMb3N0RGV2aWNlKCkpCisgICAgICAgICAgICByZXR1cm4gRUdMX05PX1NVUkZB
Q0U7CisgICAgfQorCisgICAgU3VyZmFjZSAqc3VyZmFjZSA9IG5ldyBTdXJmYWNlKHRoaXMsIGNv
bmZpZ3VyYXRpb24sIHdpbmRvdywgcG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCk7CisKKyAgICBpZiAo
IXN1cmZhY2UtPmluaXRpYWxpemUoKSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBzdXJmYWNlOwor
ICAgICAgICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7CisgICAgfQorCisgICAgbVN1cmZhY2VTZXQu
aW5zZXJ0KHN1cmZhY2UpOworCisgICAgcmV0dXJuIHN1Y2Nlc3Moc3VyZmFjZSk7Cit9CisKK0VH
TFN1cmZhY2UgRGlzcGxheTo6Y3JlYXRlT2Zmc2NyZWVuU3VyZmFjZShFR0xDb25maWcgY29uZmln
LCBIQU5ETEUgc2hhcmVIYW5kbGUsIGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCkKK3sKKyAgICBF
R0xpbnQgd2lkdGggPSAwLCBoZWlnaHQgPSAwOworICAgIEVHTGVudW0gdGV4dHVyZUZvcm1hdCA9
IEVHTF9OT19URVhUVVJFOworICAgIEVHTGVudW0gdGV4dHVyZVRhcmdldCA9IEVHTF9OT19URVhU
VVJFOworICAgIGNvbnN0IENvbmZpZyAqY29uZmlndXJhdGlvbiA9IG1Db25maWdTZXQuZ2V0KGNv
bmZpZyk7CisKKyAgICBpZiAoYXR0cmliTGlzdCkKKyAgICB7CisgICAgICAgIHdoaWxlICgqYXR0
cmliTGlzdCAhPSBFR0xfTk9ORSkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhdHRy
aWJMaXN0WzBdKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEVHTF9XSURUSDoK
KyAgICAgICAgICAgICAgICB3aWR0aCA9IGF0dHJpYkxpc3RbMV07CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0hFSUdIVDoKKyAgICAgICAgICAgICAgICBo
ZWlnaHQgPSBhdHRyaWJMaXN0WzFdOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIEVHTF9MQVJHRVNUX1BCVUZGRVI6CisgICAgICAgICAgICAgICAgaWYgKGF0dHJp
Ykxpc3RbMV0gIT0gRUdMX0ZBTFNFKQorICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OyAvLyBGSVhNRQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVH
TF9URVhUVVJFX0ZPUk1BVDoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGF0dHJpYkxpc3RbMV0p
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfTk9fVEVYVFVS
RToKKyAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX1RFWFRVUkVfUkdCOgorICAgICAgICAgICAg
ICAgICAgY2FzZSBFR0xfVEVYVFVSRV9SR0JBOgorICAgICAgICAgICAgICAgICAgICB0ZXh0dXJl
Rm9ybWF0ID0gYXR0cmliTGlzdFsxXTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Io
RUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX1RFWFRVUkVfVEFS
R0VUOgorICAgICAgICAgICAgICAgIHN3aXRjaCAoYXR0cmliTGlzdFsxXSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9OT19URVhUVVJFOgorICAgICAgICAg
ICAgICAgICAgY2FzZSBFR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVy
ZVRhcmdldCA9IGF0dHJpYkxpc3RbMV07CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEVHTF9CQURfQVRUUklCVVRFLCBFR0xfTk9fU1VSRkFDRSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9NSVBNQVBfVEVY
VFVSRToKKyAgICAgICAgICAgICAgICBpZiAoYXR0cmliTGlzdFsxXSAhPSBFR0xfRkFMU0UpCisg
ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19T
VVJGQUNFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xf
VkdfQ09MT1JTUEFDRToKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9NQVRD
SCwgRUdMX05PX1NVUkZBQ0UpOworICAgICAgICAgICAgICBjYXNlIEVHTF9WR19BTFBIQV9GT1JN
QVQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9OT19T
VVJGQUNFKTsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgYXR0cmliTGlzdCArPSAyOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9y
KEVHTF9CQURfUEFSQU1FVEVSLCBFR0xfTk9fU1VSRkFDRSk7CisgICAgfQorCisgICAgaWYgKHdp
ZHRoID09IDAgfHwgaGVpZ2h0ID09IDApCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3IoRUdM
X0JBRF9BVFRSSUJVVEUsIEVHTF9OT19TVVJGQUNFKTsKKyAgICB9CisKKyAgICBpZiAodGV4dHVy
ZUZvcm1hdCAhPSBFR0xfTk9fVEVYVFVSRSAmJiAhbVJlbmRlcmVyLT5nZXROb25Qb3dlcjJUZXh0
dXJlU3VwcG9ydCgpICYmICghZ2w6OmlzUG93Mih3aWR0aCkgfHwgIWdsOjppc1BvdzIoaGVpZ2h0
KSkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX05PX1NV
UkZBQ0UpOworICAgIH0KKworICAgIGlmICgodGV4dHVyZUZvcm1hdCAhPSBFR0xfTk9fVEVYVFVS
RSAmJiB0ZXh0dXJlVGFyZ2V0ID09IEVHTF9OT19URVhUVVJFKSB8fAorICAgICAgICAodGV4dHVy
ZUZvcm1hdCA9PSBFR0xfTk9fVEVYVFVSRSAmJiB0ZXh0dXJlVGFyZ2V0ICE9IEVHTF9OT19URVhU
VVJFKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX01BVENILCBFR0xfTk9f
U1VSRkFDRSk7CisgICAgfQorCisgICAgaWYgKCEoY29uZmlndXJhdGlvbi0+bVN1cmZhY2VUeXBl
ICYgRUdMX1BCVUZGRVJfQklUKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFE
X01BVENILCBFR0xfTk9fU1VSRkFDRSk7CisgICAgfQorCisgICAgaWYgKCh0ZXh0dXJlRm9ybWF0
ID09IEVHTF9URVhUVVJFX1JHQiAmJiBjb25maWd1cmF0aW9uLT5tQmluZFRvVGV4dHVyZVJHQiAh
PSBFR0xfVFJVRSkgfHwKKyAgICAgICAgKHRleHR1cmVGb3JtYXQgPT0gRUdMX1RFWFRVUkVfUkdC
QSAmJiBjb25maWd1cmF0aW9uLT5tQmluZFRvVGV4dHVyZVJHQkEgIT0gRUdMX1RSVUUpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQVRUUklCVVRFLCBFR0xfTk9fU1VSRkFD
RSk7CisgICAgfQorCisgICAgaWYgKG1SZW5kZXJlci0+dGVzdERldmljZUxvc3QoZmFsc2UpKQor
ICAgIHsKKyAgICAgICAgaWYgKCFyZXN0b3JlTG9zdERldmljZSgpKQorICAgICAgICAgICAgcmV0
dXJuIEVHTF9OT19TVVJGQUNFOworICAgIH0KKworICAgIFN1cmZhY2UgKnN1cmZhY2UgPSBuZXcg
U3VyZmFjZSh0aGlzLCBjb25maWd1cmF0aW9uLCBzaGFyZUhhbmRsZSwgd2lkdGgsIGhlaWdodCwg
dGV4dHVyZUZvcm1hdCwgdGV4dHVyZVRhcmdldCk7CisKKyAgICBpZiAoIXN1cmZhY2UtPmluaXRp
YWxpemUoKSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBzdXJmYWNlOworICAgICAgICByZXR1cm4g
RUdMX05PX1NVUkZBQ0U7CisgICAgfQorCisgICAgbVN1cmZhY2VTZXQuaW5zZXJ0KHN1cmZhY2Up
OworCisgICAgcmV0dXJuIHN1Y2Nlc3Moc3VyZmFjZSk7Cit9CisKK0VHTENvbnRleHQgRGlzcGxh
eTo6Y3JlYXRlQ29udGV4dChFR0xDb25maWcgY29uZmlnSGFuZGxlLCBjb25zdCBnbDo6Q29udGV4
dCAqc2hhcmVDb250ZXh0LCBib29sIG5vdGlmeVJlc2V0cywgYm9vbCByb2J1c3RBY2Nlc3MpCit7
CisgICAgaWYgKCFtUmVuZGVyZXIpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9
CisgICAgZWxzZSBpZiAobVJlbmRlcmVyLT50ZXN0RGV2aWNlTG9zdChmYWxzZSkpICAgLy8gTG9z
dCBkZXZpY2UKKyAgICB7CisgICAgICAgIGlmICghcmVzdG9yZUxvc3REZXZpY2UoKSkKKyAgICAg
ICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2xDcmVhdGVDb250ZXh0KHNoYXJlQ29udGV4dCwgbVJlbmRlcmVyLCBub3RpZnlSZXNldHMsIHJv
YnVzdEFjY2Vzcyk7CisgICAgbUNvbnRleHRTZXQuaW5zZXJ0KGNvbnRleHQpOworCisgICAgcmV0
dXJuIGNvbnRleHQ7Cit9CisKK2Jvb2wgRGlzcGxheTo6cmVzdG9yZUxvc3REZXZpY2UoKQorewor
ICAgIGZvciAoQ29udGV4dFNldDo6aXRlcmF0b3IgY3R4ID0gbUNvbnRleHRTZXQuYmVnaW4oKTsg
Y3R4ICE9IG1Db250ZXh0U2V0LmVuZCgpOyBjdHgrKykKKyAgICB7CisgICAgICAgIGlmICgoKmN0
eCktPmlzUmVzZXROb3RpZmljYXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7ICAgLy8gSWYgcmVzZXQgbm90aWZpY2F0aW9ucyBoYXZlIGJlZW4gcmVxdWVzdGVkLCBhcHBs
aWNhdGlvbiBtdXN0IGRlbGV0ZSBhbGwgY29udGV4dHMgZmlyc3QKKyAgICB9CisgCisgICAgLy8g
UmVsZWFzZSBzdXJmYWNlIHJlc291cmNlcyB0byBtYWtlIHRoZSBSZXNldCgpIHN1Y2NlZWQKKyAg
ICBmb3IgKFN1cmZhY2VTZXQ6Oml0ZXJhdG9yIHN1cmZhY2UgPSBtU3VyZmFjZVNldC5iZWdpbigp
OyBzdXJmYWNlICE9IG1TdXJmYWNlU2V0LmVuZCgpOyBzdXJmYWNlKyspCisgICAgeworICAgICAg
ICAoKnN1cmZhY2UpLT5yZWxlYXNlKCk7CisgICAgfQorCisgICAgaWYgKCFtUmVuZGVyZXItPnJl
c2V0RGV2aWNlKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywg
ZmFsc2UpOworICAgIH0KKworICAgIC8vIFJlc3RvcmUgYW55IHN1cmZhY2VzIHRoYXQgbWF5IGhh
dmUgYmVlbiBsb3N0CisgICAgZm9yIChTdXJmYWNlU2V0OjppdGVyYXRvciBzdXJmYWNlID0gbVN1
cmZhY2VTZXQuYmVnaW4oKTsgc3VyZmFjZSAhPSBtU3VyZmFjZVNldC5lbmQoKTsgc3VyZmFjZSsr
KQorICAgIHsKKyAgICAgICAgKCpzdXJmYWNlKS0+cmVzZXRTd2FwQ2hhaW4oKTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworCit2b2lkIERpc3BsYXk6OmRlc3Ryb3lTdXJmYWNlKGVn
bDo6U3VyZmFjZSAqc3VyZmFjZSkKK3sKKyAgICBkZWxldGUgc3VyZmFjZTsKKyAgICBtU3VyZmFj
ZVNldC5lcmFzZShzdXJmYWNlKTsKK30KKwordm9pZCBEaXNwbGF5OjpkZXN0cm95Q29udGV4dChn
bDo6Q29udGV4dCAqY29udGV4dCkKK3sKKyAgICBnbERlc3Ryb3lDb250ZXh0KGNvbnRleHQpOwor
ICAgIG1Db250ZXh0U2V0LmVyYXNlKGNvbnRleHQpOworfQorCit2b2lkIERpc3BsYXk6Om5vdGlm
eURldmljZUxvc3QoKQoreworICAgIGZvciAoQ29udGV4dFNldDo6aXRlcmF0b3IgY29udGV4dCA9
IG1Db250ZXh0U2V0LmJlZ2luKCk7IGNvbnRleHQgIT0gbUNvbnRleHRTZXQuZW5kKCk7IGNvbnRl
eHQrKykKKyAgICB7CisgICAgICAgICgqY29udGV4dCktPm1hcmtDb250ZXh0TG9zdCgpOworICAg
IH0KKyAgICBlZ2w6OmVycm9yKEVHTF9DT05URVhUX0xPU1QpOworfQorCit2b2lkIERpc3BsYXk6
OnJlY3JlYXRlU3dhcENoYWlucygpCit7CisgICAgZm9yIChTdXJmYWNlU2V0OjppdGVyYXRvciBz
dXJmYWNlID0gbVN1cmZhY2VTZXQuYmVnaW4oKTsgc3VyZmFjZSAhPSBtU3VyZmFjZVNldC5lbmQo
KTsgc3VyZmFjZSsrKQorICAgIHsKKyAgICAgICAgKCpzdXJmYWNlKS0+Z2V0U3dhcENoYWluKCkt
PnJlY3JlYXRlKCk7CisgICAgfQorfQorCitib29sIERpc3BsYXk6OmlzSW5pdGlhbGl6ZWQoKSBj
b25zdAoreworICAgIHJldHVybiBtUmVuZGVyZXIgIT0gTlVMTCAmJiBtQ29uZmlnU2V0LnNpemUo
KSA+IDA7Cit9CisKK2Jvb2wgRGlzcGxheTo6aXNWYWxpZENvbmZpZyhFR0xDb25maWcgY29uZmln
KQoreworICAgIHJldHVybiBtQ29uZmlnU2V0LmdldChjb25maWcpICE9IE5VTEw7Cit9CisKK2Jv
b2wgRGlzcGxheTo6aXNWYWxpZENvbnRleHQoZ2w6OkNvbnRleHQgKmNvbnRleHQpCit7CisgICAg
cmV0dXJuIG1Db250ZXh0U2V0LmZpbmQoY29udGV4dCkgIT0gbUNvbnRleHRTZXQuZW5kKCk7Cit9
CisKK2Jvb2wgRGlzcGxheTo6aXNWYWxpZFN1cmZhY2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKQor
eworICAgIHJldHVybiBtU3VyZmFjZVNldC5maW5kKHN1cmZhY2UpICE9IG1TdXJmYWNlU2V0LmVu
ZCgpOworfQorCitib29sIERpc3BsYXk6Omhhc0V4aXN0aW5nV2luZG93U3VyZmFjZShIV05EIHdp
bmRvdykKK3sKKyAgICBmb3IgKFN1cmZhY2VTZXQ6Oml0ZXJhdG9yIHN1cmZhY2UgPSBtU3VyZmFj
ZVNldC5iZWdpbigpOyBzdXJmYWNlICE9IG1TdXJmYWNlU2V0LmVuZCgpOyBzdXJmYWNlKyspCisg
ICAgeworICAgICAgICBpZiAoKCpzdXJmYWNlKS0+Z2V0V2luZG93SGFuZGxlKCkgPT0gd2luZG93
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBEaXNwbGF5Ojppbml0RXh0ZW5zaW9uU3Ry
aW5nKCkKK3sKKyAgICBITU9EVUxFIHN3aWZ0U2hhZGVyID0gR2V0TW9kdWxlSGFuZGxlKFRFWFQo
InN3aWZ0c2hhZGVyX2QzZDkuZGxsIikpOworICAgIGJvb2wgc2hhcmVIYW5kbGVTdXBwb3J0ZWQg
PSBtUmVuZGVyZXItPmdldFNoYXJlSGFuZGxlU3VwcG9ydCgpOworCisgICAgbUV4dGVuc2lvblN0
cmluZyA9ICIiOworCisgICAgLy8gTXVsdGktdmVuZG9yIChFWFQpIGV4dGVuc2lvbnMKKyAgICBt
RXh0ZW5zaW9uU3RyaW5nICs9ICJFR0xfRVhUX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MgIjsK
KworICAgIC8vIEFOR0xFLXNwZWNpZmljIGV4dGVuc2lvbnMKKyAgICBpZiAoc2hhcmVIYW5kbGVT
dXBwb3J0ZWQpCisgICAgeworICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJFR0xfQU5HTEVf
ZDNkX3NoYXJlX2hhbmRsZV9jbGllbnRfYnVmZmVyICI7CisgICAgfQorCisgICAgbUV4dGVuc2lv
blN0cmluZyArPSAiRUdMX0FOR0xFX3F1ZXJ5X3N1cmZhY2VfcG9pbnRlciAiOworCisgICAgaWYg
KHN3aWZ0U2hhZGVyKQorICAgIHsKKyAgICAgICAgbUV4dGVuc2lvblN0cmluZyArPSAiRUdMX0FO
R0xFX3NvZnR3YXJlX2Rpc3BsYXkgIjsKKyAgICB9CisKKyAgICBpZiAoc2hhcmVIYW5kbGVTdXBw
b3J0ZWQpCisgICAgeworICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJFR0xfQU5HTEVfc3Vy
ZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFyZV9oYW5kbGUgIjsKKyAgICB9CisKKyAgICBpZiAobVJl
bmRlcmVyLT5nZXRQb3N0U3ViQnVmZmVyU3VwcG9ydCgpKQorICAgIHsKKyAgICAgICAgbUV4dGVu
c2lvblN0cmluZyArPSAiRUdMX05WX3Bvc3Rfc3ViX2J1ZmZlciI7CisgICAgfQorCisgICAgc3Rk
OjpzdHJpbmc6OnNpemVfdHlwZSBlbmQgPSBtRXh0ZW5zaW9uU3RyaW5nLmZpbmRfbGFzdF9ub3Rf
b2YoJyAnKTsKKyAgICBpZiAoZW5kICE9IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgIHsKKyAgICAg
ICAgbUV4dGVuc2lvblN0cmluZy5yZXNpemUoZW5kKzEpOworICAgIH0KK30KKworY29uc3QgY2hh
ciAqRGlzcGxheTo6Z2V0RXh0ZW5zaW9uU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUV4
dGVuc2lvblN0cmluZy5jX3N0cigpOworfQorCit2b2lkIERpc3BsYXk6OmluaXRWZW5kb3JTdHJp
bmcoKQoreworICAgIG1WZW5kb3JTdHJpbmcgPSAiR29vZ2xlIEluYy4iOworCisgICAgTFVJRCBh
ZGFwdGVyTHVpZCA9IHswfTsKKworICAgIGlmIChtUmVuZGVyZXIgJiYgbVJlbmRlcmVyLT5nZXRM
VUlEKCZhZGFwdGVyTHVpZCkpCisgICAgeworICAgICAgICBjaGFyIGFkYXB0ZXJMdWlkU3RyaW5n
WzY0XTsKKyAgICAgICAgc3ByaW50Zl9zKGFkYXB0ZXJMdWlkU3RyaW5nLCBzaXplb2YoYWRhcHRl
ckx1aWRTdHJpbmcpLCAiIChhZGFwdGVyIExVSUQ6ICUwOHglMDh4KSIsIGFkYXB0ZXJMdWlkLkhp
Z2hQYXJ0LCBhZGFwdGVyTHVpZC5Mb3dQYXJ0KTsKKworICAgICAgICBtVmVuZG9yU3RyaW5nICs9
IGFkYXB0ZXJMdWlkU3RyaW5nOworICAgIH0KK30KKworY29uc3QgY2hhciAqRGlzcGxheTo6Z2V0
VmVuZG9yU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVZlbmRvclN0cmluZy5jX3N0cigp
OworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0Rpc3Bs
YXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0Rp
c3BsYXkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJF
R0wvRGlzcGxheS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk0IEBACisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBEaXNwbGF5Lmg6IERlZmluZXMgdGhlIGVnbDo6RGlzcGxheSBjbGFzcywgcmVw
cmVzZW50aW5nIHRoZSBhYnN0cmFjdAorLy8gZGlzcGxheSBvbiB3aGljaCBncmFwaGljcyBhcmUg
ZHJhd24uIEltcGxlbWVudHMgRUdMRGlzcGxheS4KKy8vIFtFR0wgMS40XSBzZWN0aW9uIDIuMS4y
IHBhZ2UgMy4KKworI2lmbmRlZiBMSUJFR0xfRElTUExBWV9IXworI2RlZmluZSBMSUJFR0xfRElT
UExBWV9IXworCisjaW5jbHVkZSAiY29tbW9uL3N5c3RlbS5oIgorCisjaW5jbHVkZSA8c2V0Pgor
I2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImxpYkVHTC9Db25maWcuaCIKKworbmFtZXNw
YWNlIGdsCit7CitjbGFzcyBDb250ZXh0OworfQorCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBT
dXJmYWNlOworCitjbGFzcyBEaXNwbGF5Cit7CisgIHB1YmxpYzoKKyAgICB+RGlzcGxheSgpOwor
CisgICAgYm9vbCBpbml0aWFsaXplKCk7CisgICAgdm9pZCB0ZXJtaW5hdGUoKTsKKworICAgIHN0
YXRpYyBlZ2w6OkRpc3BsYXkgKmdldERpc3BsYXkoRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxh
eUlkKTsKKworICAgIGJvb2wgZ2V0Q29uZmlncyhFR0xDb25maWcgKmNvbmZpZ3MsIGNvbnN0IEVH
TGludCAqYXR0cmliTGlzdCwgRUdMaW50IGNvbmZpZ1NpemUsIEVHTGludCAqbnVtQ29uZmlnKTsK
KyAgICBib29sIGdldENvbmZpZ0F0dHJpYihFR0xDb25maWcgY29uZmlnLCBFR0xpbnQgYXR0cmli
dXRlLCBFR0xpbnQgKnZhbHVlKTsKKworICAgIEVHTFN1cmZhY2UgY3JlYXRlV2luZG93U3VyZmFj
ZShIV05EIHdpbmRvdywgRUdMQ29uZmlnIGNvbmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0
KTsKKyAgICBFR0xTdXJmYWNlIGNyZWF0ZU9mZnNjcmVlblN1cmZhY2UoRUdMQ29uZmlnIGNvbmZp
ZywgSEFORExFIHNoYXJlSGFuZGxlLCBjb25zdCBFR0xpbnQgKmF0dHJpYkxpc3QpOworICAgIEVH
TENvbnRleHQgY3JlYXRlQ29udGV4dChFR0xDb25maWcgY29uZmlnSGFuZGxlLCBjb25zdCBnbDo6
Q29udGV4dCAqc2hhcmVDb250ZXh0LCBib29sIG5vdGlmeVJlc2V0cywgYm9vbCByb2J1c3RBY2Nl
c3MpOworCisgICAgdm9pZCBkZXN0cm95U3VyZmFjZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOwor
ICAgIHZvaWQgZGVzdHJveUNvbnRleHQoZ2w6OkNvbnRleHQgKmNvbnRleHQpOworCisgICAgYm9v
bCBpc0luaXRpYWxpemVkKCkgY29uc3Q7CisgICAgYm9vbCBpc1ZhbGlkQ29uZmlnKEVHTENvbmZp
ZyBjb25maWcpOworICAgIGJvb2wgaXNWYWxpZENvbnRleHQoZ2w6OkNvbnRleHQgKmNvbnRleHQp
OworICAgIGJvb2wgaXNWYWxpZFN1cmZhY2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKKyAgICBi
b29sIGhhc0V4aXN0aW5nV2luZG93U3VyZmFjZShIV05EIHdpbmRvdyk7CisKKyAgICByeDo6UmVu
ZGVyZXIgKmdldFJlbmRlcmVyKCkgeyByZXR1cm4gbVJlbmRlcmVyOyB9OworCisgICAgLy8gZXhw
b3J0ZWQgbWV0aG9kcyBtdXN0IGJlIHZpcnR1YWwKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RGV2
aWNlTG9zdCgpOworICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVN3YXBDaGFpbnMoKTsKKworICAg
IGNvbnN0IGNoYXIgKmdldEV4dGVuc2lvblN0cmluZygpIGNvbnN0OworICAgIGNvbnN0IGNoYXIg
KmdldFZlbmRvclN0cmluZygpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOKERpc3BsYXkpOworCisgICAgRGlzcGxheShFR0xOYXRpdmVEaXNwbGF5VHlw
ZSBkaXNwbGF5SWQsIEhEQyBkZXZpY2VDb250ZXh0KTsKKworICAgIGJvb2wgcmVzdG9yZUxvc3RE
ZXZpY2UoKTsKKworICAgIEVHTE5hdGl2ZURpc3BsYXlUeXBlIG1EaXNwbGF5SWQ7CisgICAgY29u
c3QgSERDIG1EYzsKKworICAgIGJvb2wgbVNvZnR3YXJlRGV2aWNlOworICAgIAorICAgIHR5cGVk
ZWYgc3RkOjpzZXQ8U3VyZmFjZSo+IFN1cmZhY2VTZXQ7CisgICAgU3VyZmFjZVNldCBtU3VyZmFj
ZVNldDsKKworICAgIENvbmZpZ1NldCBtQ29uZmlnU2V0OworCisgICAgdHlwZWRlZiBzdGQ6OnNl
dDxnbDo6Q29udGV4dCo+IENvbnRleHRTZXQ7CisgICAgQ29udGV4dFNldCBtQ29udGV4dFNldDsK
KworICAgIHJ4OjpSZW5kZXJlciAqbVJlbmRlcmVyOworCisgICAgdm9pZCBpbml0RXh0ZW5zaW9u
U3RyaW5nKCk7CisgICAgdm9pZCBpbml0VmVuZG9yU3RyaW5nKCk7CisgICAgc3RkOjpzdHJpbmcg
bUV4dGVuc2lvblN0cmluZzsKKyAgICBzdGQ6OnN0cmluZyBtVmVuZG9yU3RyaW5nOworfTsKK30K
KworI2VuZGlmICAgLy8gTElCRUdMX0RJU1BMQVlfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJFR0wvU3VyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkVHTC9TdXJmYWNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvU3VyZmFjZS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDA4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTdXJmYWNlLmNwcDogSW1w
bGVtZW50cyB0aGUgZWdsOjpTdXJmYWNlIGNsYXNzLCByZXByZXNlbnRpbmcgYSBkcmF3aW5nIHN1
cmZhY2UKKy8vIHN1Y2ggYXMgdGhlIGNsaWVudCBhcmVhIG9mIGEgd2luZG93LCBpbmNsdWRpbmcg
YW55IGJhY2sgYnVmZmVycy4KKy8vIEltcGxlbWVudHMgRUdMU3VyZmFjZSBhbmQgcmVsYXRlZCBm
dW5jdGlvbmFsaXR5LiBbRUdMIDEuNF0gc2VjdGlvbiAyLjIgcGFnZSAzLgorCisjaW5jbHVkZSA8
dGNoYXIuaD4KKworI2luY2x1ZGUgImxpYkVHTC9TdXJmYWNlLmgiCisKKyNpbmNsdWRlICJjb21t
b24vZGVidWcuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvVGV4dHVyZS5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5o
IgorCisjaW5jbHVkZSAibGliRUdML21haW4uaCIKKyNpbmNsdWRlICJsaWJFR0wvRGlzcGxheS5o
IgorCituYW1lc3BhY2UgZWdsCit7CisKK1N1cmZhY2U6OlN1cmZhY2UoRGlzcGxheSAqZGlzcGxh
eSwgY29uc3QgQ29uZmlnICpjb25maWcsIEhXTkQgd2luZG93LCBFR0xpbnQgcG9zdFN1YkJ1ZmZl
clN1cHBvcnRlZCkgCisgICAgOiBtRGlzcGxheShkaXNwbGF5KSwgbUNvbmZpZyhjb25maWcpLCBt
V2luZG93KHdpbmRvdyksIG1Qb3N0U3ViQnVmZmVyU3VwcG9ydGVkKHBvc3RTdWJCdWZmZXJTdXBw
b3J0ZWQpCit7CisgICAgbVJlbmRlcmVyID0gbURpc3BsYXktPmdldFJlbmRlcmVyKCk7CisgICAg
bVN3YXBDaGFpbiA9IE5VTEw7CisgICAgbVNoYXJlSGFuZGxlID0gTlVMTDsKKyAgICBtVGV4dHVy
ZSA9IE5VTEw7CisgICAgbVRleHR1cmVGb3JtYXQgPSBFR0xfTk9fVEVYVFVSRTsKKyAgICBtVGV4
dHVyZVRhcmdldCA9IEVHTF9OT19URVhUVVJFOworCisgICAgbVBpeGVsQXNwZWN0UmF0aW8gPSAo
RUdMaW50KSgxLjAgKiBFR0xfRElTUExBWV9TQ0FMSU5HKTsgICAvLyBGSVhNRTogRGV0ZXJtaW5l
IGFjdHVhbCBwaXhlbCBhc3BlY3QgcmF0aW8KKyAgICBtUmVuZGVyQnVmZmVyID0gRUdMX0JBQ0tf
QlVGRkVSOworICAgIG1Td2FwQmVoYXZpb3IgPSBFR0xfQlVGRkVSX1BSRVNFUlZFRDsKKyAgICBt
U3dhcEludGVydmFsID0gLTE7CisgICAgbVdpZHRoID0gLTE7CisgICAgbUhlaWdodCA9IC0xOwor
ICAgIHNldFN3YXBJbnRlcnZhbCgxKTsKKworICAgIHN1YmNsYXNzV2luZG93KCk7Cit9CisKK1N1
cmZhY2U6OlN1cmZhY2UoRGlzcGxheSAqZGlzcGxheSwgY29uc3QgQ29uZmlnICpjb25maWcsIEhB
TkRMRSBzaGFyZUhhbmRsZSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0LCBFR0xlbnVtIHRl
eHR1cmVGb3JtYXQsIEVHTGVudW0gdGV4dHVyZVR5cGUpCisgICAgOiBtRGlzcGxheShkaXNwbGF5
KSwgbVdpbmRvdyhOVUxMKSwgbUNvbmZpZyhjb25maWcpLCBtU2hhcmVIYW5kbGUoc2hhcmVIYW5k
bGUpLCBtV2lkdGgod2lkdGgpLCBtSGVpZ2h0KGhlaWdodCksIG1Qb3N0U3ViQnVmZmVyU3VwcG9y
dGVkKEVHTF9GQUxTRSkKK3sKKyAgICBtUmVuZGVyZXIgPSBtRGlzcGxheS0+Z2V0UmVuZGVyZXIo
KTsKKyAgICBtU3dhcENoYWluID0gTlVMTDsKKyAgICBtV2luZG93U3ViY2xhc3NlZCA9IGZhbHNl
OworICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICBtVGV4dHVyZUZvcm1hdCA9IHRleHR1cmVGb3Jt
YXQ7CisgICAgbVRleHR1cmVUYXJnZXQgPSB0ZXh0dXJlVHlwZTsKKworICAgIG1QaXhlbEFzcGVj
dFJhdGlvID0gKEVHTGludCkoMS4wICogRUdMX0RJU1BMQVlfU0NBTElORyk7ICAgLy8gRklYTUU6
IERldGVybWluZSBhY3R1YWwgcGl4ZWwgYXNwZWN0IHJhdGlvCisgICAgbVJlbmRlckJ1ZmZlciA9
IEVHTF9CQUNLX0JVRkZFUjsKKyAgICBtU3dhcEJlaGF2aW9yID0gRUdMX0JVRkZFUl9QUkVTRVJW
RUQ7CisgICAgbVN3YXBJbnRlcnZhbCA9IC0xOworICAgIHNldFN3YXBJbnRlcnZhbCgxKTsKK30K
KworU3VyZmFjZTo6flN1cmZhY2UoKQoreworICAgIHVuc3ViY2xhc3NXaW5kb3coKTsKKyAgICBy
ZWxlYXNlKCk7Cit9CisKK2Jvb2wgU3VyZmFjZTo6aW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKCFy
ZXNldFN3YXBDaGFpbigpKQorICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgU3VyZmFjZTo6cmVsZWFzZSgpCit7CisgICAgZGVsZXRlIG1Td2FwQ2hhaW47
CisgICAgbVN3YXBDaGFpbiA9IE5VTEw7CisKKyAgICBpZiAobVRleHR1cmUpCisgICAgeworICAg
ICAgICBtVGV4dHVyZS0+cmVsZWFzZVRleEltYWdlKCk7CisgICAgICAgIG1UZXh0dXJlID0gTlVM
TDsKKyAgICB9Cit9CisKK2Jvb2wgU3VyZmFjZTo6cmVzZXRTd2FwQ2hhaW4oKQoreworICAgIEFT
U0VSVCghbVN3YXBDaGFpbik7CisKKyAgICBpbnQgd2lkdGg7CisgICAgaW50IGhlaWdodDsKKwor
ICAgIGlmIChtV2luZG93KQorICAgIHsKKyAgICAgICAgUkVDVCB3aW5kb3dSZWN0OworICAgICAg
ICBpZiAoIUdldENsaWVudFJlY3QoZ2V0V2luZG93SGFuZGxlKCksICZ3aW5kb3dSZWN0KSkKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGZhbHNlKTsKKworICAgICAgICAgICAgRVJSKCJD
b3VsZCBub3QgcmV0cmlldmUgdGhlIHdpbmRvdyBkaW1lbnNpb25zIik7CisgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoRUdMX0JBRF9TVVJGQUNFLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAg
ICB3aWR0aCA9IHdpbmRvd1JlY3QucmlnaHQgLSB3aW5kb3dSZWN0LmxlZnQ7CisgICAgICAgIGhl
aWdodCA9IHdpbmRvd1JlY3QuYm90dG9tIC0gd2luZG93UmVjdC50b3A7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIC8vIG5vbi13aW5kb3cgc3VyZmFjZSAtIHNpemUgaXMgZGV0ZXJt
aW5lZCBhdCBjcmVhdGlvbgorICAgICAgICB3aWR0aCA9IG1XaWR0aDsKKyAgICAgICAgaGVpZ2h0
ID0gbUhlaWdodDsKKyAgICB9CisKKyAgICBtU3dhcENoYWluID0gbVJlbmRlcmVyLT5jcmVhdGVT
d2FwQ2hhaW4obVdpbmRvdywgbVNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtQ29uZmlnLT5tUmVuZGVyVGFyZ2V0Rm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ29uZmlnLT5tRGVwdGhTdGVu
Y2lsRm9ybWF0KTsKKyAgICBpZiAoIW1Td2FwQ2hhaW4pCisgICAgeworICAgICAgICByZXR1cm4g
ZXJyb3IoRUdMX0JBRF9BTExPQywgZmFsc2UpOworICAgIH0KKworICAgIGlmICghcmVzZXRTd2Fw
Q2hhaW4od2lkdGgsIGhlaWdodCkpCisgICAgeworICAgICAgICBkZWxldGUgbVN3YXBDaGFpbjsK
KyAgICAgICAgbVN3YXBDaGFpbiA9IE5VTEw7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTdXJmYWNlOjpyZXNpemVTd2FwQ2hhaW4o
aW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpCit7CisgICAgQVNTRVJU
KGJhY2tidWZmZXJXaWR0aCA+PSAwICYmIGJhY2tidWZmZXJIZWlnaHQgPj0gMCk7CisgICAgQVNT
RVJUKG1Td2FwQ2hhaW4pOworCisgICAgRUdMaW50IHN0YXR1cyA9IG1Td2FwQ2hhaW4tPnJlc2l6
ZShiYWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJIZWlnaHQpOworCisgICAgaWYgKHN0YXR1cyA9
PSBFR0xfQ09OVEVYVF9MT1NUKQorICAgIHsKKyAgICAgICAgbURpc3BsYXktPm5vdGlmeURldmlj
ZUxvc3QoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBlbHNlIGlmIChzdGF0
dXMgIT0gRUdMX1NVQ0NFU1MpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3Ioc3RhdHVzLCBm
YWxzZSk7CisgICAgfQorCisgICAgbVdpZHRoID0gYmFja2J1ZmZlcldpZHRoOworICAgIG1IZWln
aHQgPSBiYWNrYnVmZmVySGVpZ2h0OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3Vy
ZmFjZTo6cmVzZXRTd2FwQ2hhaW4oaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJI
ZWlnaHQpCit7CisgICAgQVNTRVJUKGJhY2tidWZmZXJXaWR0aCA+PSAwICYmIGJhY2tidWZmZXJI
ZWlnaHQgPj0gMCk7CisgICAgQVNTRVJUKG1Td2FwQ2hhaW4pOworCisgICAgRUdMaW50IHN0YXR1
cyA9IG1Td2FwQ2hhaW4tPnJlc2V0KGJhY2tidWZmZXJXaWR0aCwgYmFja2J1ZmZlckhlaWdodCwg
bVN3YXBJbnRlcnZhbCk7CisKKyAgICBpZiAoc3RhdHVzID09IEVHTF9DT05URVhUX0xPU1QpCisg
ICAgeworICAgICAgICBtUmVuZGVyZXItPm5vdGlmeURldmljZUxvc3QoKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICBlbHNlIGlmIChzdGF0dXMgIT0gRUdMX1NVQ0NFU1MpCisg
ICAgeworICAgICAgICByZXR1cm4gZXJyb3Ioc3RhdHVzLCBmYWxzZSk7CisgICAgfQorCisgICAg
bVdpZHRoID0gYmFja2J1ZmZlcldpZHRoOworICAgIG1IZWlnaHQgPSBiYWNrYnVmZmVySGVpZ2h0
OworICAgIG1Td2FwSW50ZXJ2YWxEaXJ0eSA9IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgU3VyZmFjZTo6c3dhcFJlY3QoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lk
dGgsIEVHTGludCBoZWlnaHQpCit7CisgICAgaWYgKCFtU3dhcENoYWluKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKHggKyB3aWR0aCA+IG1XaWR0aCkKKyAg
ICB7CisgICAgICAgIHdpZHRoID0gbVdpZHRoIC0geDsKKyAgICB9CisKKyAgICBpZiAoeSArIGhl
aWdodCA+IG1IZWlnaHQpCisgICAgeworICAgICAgICBoZWlnaHQgPSBtSGVpZ2h0IC0geTsKKyAg
ICB9CisKKyAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIEVHTGludCBzdGF0dXMgPSBtU3dhcENoYWluLT5z
d2FwUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIGlmIChzdGF0dXMgPT0gRUdMX0NP
TlRFWFRfTE9TVCkKKyAgICB7CisgICAgICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNlTG9zdCgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGVsc2UgaWYgKHN0YXR1cyAhPSBF
R0xfU1VDQ0VTUykKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihzdGF0dXMsIGZhbHNlKTsK
KyAgICB9CisKKyAgICBjaGVja0Zvck91dE9mRGF0ZVN3YXBDaGFpbigpOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK0hXTkQgU3VyZmFjZTo6Z2V0V2luZG93SGFuZGxlKCkKK3sKKyAgICByZXR1
cm4gbVdpbmRvdzsKK30KKworCisjZGVmaW5lIGtTdXJmYWNlUHJvcGVydHkgX1RFWFQoIkVnbDo6
U3VyZmFjZU93bmVyIikKKyNkZWZpbmUga1BhcmVudFduZFByb2MgX1RFWFQoIkVnbDo6U3VyZmFj
ZVBhcmVudFduZFByb2MiKQorCitzdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBTdXJmYWNlV2luZG93
UHJvYyhIV05EIGh3bmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdwYXJhbSwgTFBBUkFNIGxwYXJh
bSkKK3sKKyAgaWYgKG1lc3NhZ2UgPT0gV01fU0laRSkKKyAgeworICAgICAgU3VyZmFjZSogc3Vy
ZiA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3VyZmFjZSo+KEdldFByb3AoaHduZCwga1N1cmZhY2VQcm9w
ZXJ0eSkpOworICAgICAgaWYoc3VyZikKKyAgICAgIHsKKyAgICAgICAgICBzdXJmLT5jaGVja0Zv
ck91dE9mRGF0ZVN3YXBDaGFpbigpOworICAgICAgfQorICB9CisgIFdORFBST0MgcHJldlduZEZ1
bmMgPSByZWludGVycHJldF9jYXN0PFdORFBST0MgPihHZXRQcm9wKGh3bmQsIGtQYXJlbnRXbmRQ
cm9jKSk7CisgIHJldHVybiBDYWxsV2luZG93UHJvYyhwcmV2V25kRnVuYywgaHduZCwgbWVzc2Fn
ZSwgd3BhcmFtLCBscGFyYW0pOworfQorCit2b2lkIFN1cmZhY2U6OnN1YmNsYXNzV2luZG93KCkK
K3sKKyAgICBpZiAoIW1XaW5kb3cpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgRFdPUkQgcHJvY2Vzc0lkOworICAgIERXT1JEIHRocmVhZElkID0gR2V0V2luZG93VGhyZWFk
UHJvY2Vzc0lkKG1XaW5kb3csICZwcm9jZXNzSWQpOworICAgIGlmIChwcm9jZXNzSWQgIT0gR2V0
Q3VycmVudFByb2Nlc3NJZCgpIHx8IHRocmVhZElkICE9IEdldEN1cnJlbnRUaHJlYWRJZCgpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFNldExhc3RFcnJvcigwKTsKKyAg
ICBMT05HX1BUUiBvbGRXbmRQcm9jID0gU2V0V2luZG93TG9uZ1B0cihtV2luZG93LCBHV0xQX1dO
RFBST0MsIHJlaW50ZXJwcmV0X2Nhc3Q8TE9OR19QVFI+KFN1cmZhY2VXaW5kb3dQcm9jKSk7Cisg
ICAgaWYob2xkV25kUHJvYyA9PSAwICYmIEdldExhc3RFcnJvcigpICE9IEVSUk9SX1NVQ0NFU1Mp
CisgICAgeworICAgICAgICBtV2luZG93U3ViY2xhc3NlZCA9IGZhbHNlOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgU2V0UHJvcChtV2luZG93LCBrU3VyZmFjZVByb3BlcnR5LCByZWlu
dGVycHJldF9jYXN0PEhBTkRMRT4odGhpcykpOworICAgIFNldFByb3AobVdpbmRvdywga1BhcmVu
dFduZFByb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPihvbGRXbmRQcm9jKSk7CisgICAgbVdp
bmRvd1N1YmNsYXNzZWQgPSB0cnVlOworfQorCit2b2lkIFN1cmZhY2U6OnVuc3ViY2xhc3NXaW5k
b3coKQoreworICAgIGlmKCFtV2luZG93U3ViY2xhc3NlZCkKKyAgICB7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyB1bi1zdWJjbGFzcworICAgIExPTkdfUFRSIHBhcmVudFduZEZ1
bmMgPSByZWludGVycHJldF9jYXN0PExPTkdfUFRSPihHZXRQcm9wKG1XaW5kb3csIGtQYXJlbnRX
bmRQcm9jKSk7CisKKyAgICAvLyBDaGVjayB0aGUgd2luZG93cHJvYyBpcyBzdGlsbCBTdXJmYWNl
V2luZG93UHJvYy4KKyAgICAvLyBJZiB0aGlzIGFzc2VydCBmYWlscywgdGhlbiBpdCBpcyBsaWtl
bHkgdGhlIGFwcGxpY2F0aW9uIGhhcyBzdWJjbGFzc2VkIHRoZQorICAgIC8vIGh3bmQgYXMgd2Vs
bCBhbmQgZGlkIG5vdCB1bnN1YmNsYXNzIGJlZm9yZSBkZXN0cm95aW5nIGl0cyBFR0wgY29udGV4
dC4gVGhlCisgICAgLy8gYXBwbGljYXRpb24gc2hvdWxkIGJlIG1vZGlmaWVkIHRvIGVpdGhlciBz
dWJjbGFzcyBiZWZvcmUgaW5pdGlhbGl6aW5nIHRoZQorICAgIC8vIEVHTCBjb250ZXh0LCBvciB0
byB1bnN1YmNsYXNzIGJlZm9yZSBkZXN0cm95aW5nIHRoZSBFR0wgY29udGV4dC4KKyAgICBpZihw
YXJlbnRXbmRGdW5jKQorICAgIHsKKyAgICAgICAgTE9OR19QVFIgcHJldlduZEZ1bmMgPSBTZXRX
aW5kb3dMb25nUHRyKG1XaW5kb3csIEdXTFBfV05EUFJPQywgcGFyZW50V25kRnVuYyk7CisgICAg
ICAgIEFTU0VSVChwcmV2V25kRnVuYyA9PSByZWludGVycHJldF9jYXN0PExPTkdfUFRSPihTdXJm
YWNlV2luZG93UHJvYykpOworICAgIH0KKworICAgIFJlbW92ZVByb3AobVdpbmRvdywga1N1cmZh
Y2VQcm9wZXJ0eSk7CisgICAgUmVtb3ZlUHJvcChtV2luZG93LCBrUGFyZW50V25kUHJvYyk7Cisg
ICAgbVdpbmRvd1N1YmNsYXNzZWQgPSBmYWxzZTsKK30KKworYm9vbCBTdXJmYWNlOjpjaGVja0Zv
ck91dE9mRGF0ZVN3YXBDaGFpbigpCit7CisgICAgUkVDVCBjbGllbnQ7CisgICAgaWYgKCFHZXRD
bGllbnRSZWN0KGdldFdpbmRvd0hhbmRsZSgpLCAmY2xpZW50KSkKKyAgICB7CisgICAgICAgIEFT
U0VSVChmYWxzZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBHcm93
IHRoZSBidWZmZXIgbm93LCBpZiB0aGUgd2luZG93IGhhcyBncm93bi4gV2UgbmVlZCB0byBncm93
IG5vdyB0byBhdm9pZCBsb3NpbmcgaW5mb3JtYXRpb24uCisgICAgaW50IGNsaWVudFdpZHRoID0g
Y2xpZW50LnJpZ2h0IC0gY2xpZW50LmxlZnQ7CisgICAgaW50IGNsaWVudEhlaWdodCA9IGNsaWVu
dC5ib3R0b20gLSBjbGllbnQudG9wOworICAgIGJvb2wgc2l6ZURpcnR5ID0gY2xpZW50V2lkdGgg
IT0gZ2V0V2lkdGgoKSB8fCBjbGllbnRIZWlnaHQgIT0gZ2V0SGVpZ2h0KCk7CisKKyAgICBpZiAo
bVN3YXBJbnRlcnZhbERpcnR5KQorICAgIHsKKyAgICAgICAgcmVzZXRTd2FwQ2hhaW4oY2xpZW50
V2lkdGgsIGNsaWVudEhlaWdodCk7CisgICAgfQorICAgIGVsc2UgaWYgKHNpemVEaXJ0eSkKKyAg
ICB7CisgICAgICAgIHJlc2l6ZVN3YXBDaGFpbihjbGllbnRXaWR0aCwgY2xpZW50SGVpZ2h0KTsK
KyAgICB9CisKKyAgICBpZiAobVN3YXBJbnRlcnZhbERpcnR5IHx8IHNpemVEaXJ0eSkKKyAgICB7
CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihnZXRDdXJyZW50RHJhd1N1
cmZhY2UoKSkgPT0gdGhpcykKKyAgICAgICAgeworICAgICAgICAgICAgZ2xNYWtlQ3VycmVudChn
bEdldEN1cnJlbnRDb250ZXh0KCksIHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGdldEN1cnJl
bnREaXNwbGF5KCkpLCB0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBTdXJmYWNlOjpzd2FwKCkKK3sK
KyAgICByZXR1cm4gc3dhcFJlY3QoMCwgMCwgbVdpZHRoLCBtSGVpZ2h0KTsKK30KKworYm9vbCBT
dXJmYWNlOjpwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBF
R0xpbnQgaGVpZ2h0KQoreworICAgIGlmICghbVBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQpCisgICAg
eworICAgICAgICAvLyBTcGVjIGlzIG5vdCBjbGVhciBhYm91dCBob3cgdGhpcyBzaG91bGQgYmUg
aGFuZGxlZC4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBz
d2FwUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKK30KKworRUdMaW50IFN1cmZhY2U6OmdldFdp
ZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVdpZHRoOworfQorCitFR0xpbnQgU3VyZmFjZTo6
Z2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUhlaWdodDsKK30KKworRUdMaW50IFN1
cmZhY2U6OmlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Q
b3N0U3ViQnVmZmVyU3VwcG9ydGVkOworfQorCityeDo6U3dhcENoYWluICpTdXJmYWNlOjpnZXRT
d2FwQ2hhaW4oKSBjb25zdAoreworICAgIHJldHVybiBtU3dhcENoYWluOworfQorCit2b2lkIFN1
cmZhY2U6OnNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpCit7CisgICAgaWYgKG1Td2Fw
SW50ZXJ2YWwgPT0gaW50ZXJ2YWwpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIG1Td2FwSW50ZXJ2YWwgPSBpbnRlcnZhbDsKKyAgICBtU3dhcEludGVydmFsID0gc3Rk
OjptYXgobVN3YXBJbnRlcnZhbCwgbVJlbmRlcmVyLT5nZXRNaW5Td2FwSW50ZXJ2YWwoKSk7Cisg
ICAgbVN3YXBJbnRlcnZhbCA9IHN0ZDo6bWluKG1Td2FwSW50ZXJ2YWwsIG1SZW5kZXJlci0+Z2V0
TWF4U3dhcEludGVydmFsKCkpOworCisgICAgbVN3YXBJbnRlcnZhbERpcnR5ID0gdHJ1ZTsKK30K
KworRUdMZW51bSBTdXJmYWNlOjpnZXRUZXh0dXJlRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVRleHR1cmVGb3JtYXQ7Cit9CisKK0VHTGVudW0gU3VyZmFjZTo6Z2V0VGV4dHVyZVRhcmdl
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlVGFyZ2V0OworfQorCit2b2lkIFN1cmZh
Y2U6OnNldEJvdW5kVGV4dHVyZShnbDo6VGV4dHVyZTJEICp0ZXh0dXJlKQoreworICAgIG1UZXh0
dXJlID0gdGV4dHVyZTsKK30KKworZ2w6OlRleHR1cmUyRCAqU3VyZmFjZTo6Z2V0Qm91bmRUZXh0
dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmU7Cit9CisKK0VHTGVudW0gU3VyZmFj
ZTo6Z2V0Rm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUNvbmZpZy0+bVJlbmRlclRhcmdl
dEZvcm1hdDsKK30KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wv
U3VyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJF
R0wvU3VyZmFjZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkVHTC9TdXJmYWNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA4IEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisvLyBTdXJmYWNlLmg6IERlZmluZXMgdGhlIGVnbDo6U3VyZmFjZSBjbGFz
cywgcmVwcmVzZW50aW5nIGEgZHJhd2luZyBzdXJmYWNlCisvLyBzdWNoIGFzIHRoZSBjbGllbnQg
YXJlYSBvZiBhIHdpbmRvdywgaW5jbHVkaW5nIGFueSBiYWNrIGJ1ZmZlcnMuCisvLyBJbXBsZW1l
bnRzIEVHTFN1cmZhY2UgYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gW0VHTCAxLjRdIHNlY3Rp
b24gMi4yIHBhZ2UgMy4KKworI2lmbmRlZiBMSUJFR0xfU1VSRkFDRV9IXworI2RlZmluZSBMSUJF
R0xfU1VSRkFDRV9IXworCisjZGVmaW5lIEVHTEFQSQorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKwor
I2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSBnbAoreworY2xhc3Mg
VGV4dHVyZTJEOworfQorbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKK2NsYXNzIFN3
YXBDaGFpbjsKK30KKworbmFtZXNwYWNlIGVnbAoreworY2xhc3MgRGlzcGxheTsKK2NsYXNzIENv
bmZpZzsKKworY2xhc3MgU3VyZmFjZQoreworICBwdWJsaWM6CisgICAgU3VyZmFjZShEaXNwbGF5
ICpkaXNwbGF5LCBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLCBIV05EIHdpbmRvdywgRUdMaW50
IHBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQpOworICAgIFN1cmZhY2UoRGlzcGxheSAqZGlzcGxheSwg
Y29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywgSEFORExFIHNoYXJlSGFuZGxlLCBFR0xpbnQgd2lk
dGgsIEVHTGludCBoZWlnaHQsIEVHTGVudW0gdGV4dHVyZUZvcm1hdCwgRUdMZW51bSB0ZXh0dXJl
VGFyZ2V0KTsKKworICAgIH5TdXJmYWNlKCk7CisKKyAgICBib29sIGluaXRpYWxpemUoKTsKKyAg
ICB2b2lkIHJlbGVhc2UoKTsKKyAgICBib29sIHJlc2V0U3dhcENoYWluKCk7CisKKyAgICBIV05E
IGdldFdpbmRvd0hhbmRsZSgpOworICAgIGJvb2wgc3dhcCgpOworICAgIGJvb2wgcG9zdFN1YkJ1
ZmZlcihFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCk7CisK
KyAgICB2aXJ0dWFsIEVHTGludCBnZXRXaWR0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgRUdMaW50
IGdldEhlaWdodCgpIGNvbnN0OworCisgICAgdmlydHVhbCBFR0xpbnQgaXNQb3N0U3ViQnVmZmVy
U3VwcG9ydGVkKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHJ4OjpTd2FwQ2hhaW4gKmdldFN3YXBD
aGFpbigpIGNvbnN0OworCisgICAgdm9pZCBzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFs
KTsKKyAgICBib29sIGNoZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCk7ICAgLy8gUmV0dXJucyB0
cnVlIGlmIHN3YXBjaGFpbiBjaGFuZ2VkIGR1ZSB0byByZXNpemUgb3IgaW50ZXJ2YWwgdXBkYXRl
CisKKyAgICB2aXJ0dWFsIEVHTGVudW0gZ2V0VGV4dHVyZUZvcm1hdCgpIGNvbnN0OworICAgIHZp
cnR1YWwgRUdMZW51bSBnZXRUZXh0dXJlVGFyZ2V0KCkgY29uc3Q7CisgICAgdmlydHVhbCBFR0xl
bnVtIGdldEZvcm1hdCgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIHNldEJvdW5kVGV4dHVy
ZShnbDo6VGV4dHVyZTJEICp0ZXh0dXJlKTsKKyAgICB2aXJ0dWFsIGdsOjpUZXh0dXJlMkQgKmdl
dEJvdW5kVGV4dHVyZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTihTdXJmYWNlKTsKKworICAgIERpc3BsYXkgKmNvbnN0IG1EaXNwbGF5OworICAgIHJ4
OjpSZW5kZXJlciAqbVJlbmRlcmVyOworCisgICAgSEFORExFIG1TaGFyZUhhbmRsZTsKKyAgICBy
eDo6U3dhcENoYWluICptU3dhcENoYWluOworCisgICAgdm9pZCBzdWJjbGFzc1dpbmRvdygpOwor
ICAgIHZvaWQgdW5zdWJjbGFzc1dpbmRvdygpOworICAgIGJvb2wgcmVzaXplU3dhcENoYWluKGlu
dCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmVySGVpZ2h0KTsKKyAgICBib29sIHJlc2V0
U3dhcENoYWluKGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmVySGVpZ2h0KTsKKyAg
ICBib29sIHN3YXBSZWN0KEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQg
aGVpZ2h0KTsKKworICAgIGNvbnN0IEhXTkQgbVdpbmRvdzsgICAgICAgICAgICAvLyBXaW5kb3cg
dGhhdCB0aGUgc3VyZmFjZSBpcyBjcmVhdGVkIGZvci4KKyAgICBib29sIG1XaW5kb3dTdWJjbGFz
c2VkOyAgICAgICAgLy8gSW5kaWNhdGVzIHdoZXRoZXIgd2Ugc3VjY2Vzc2Z1bGx5IHN1YmNsYXNz
ZWQgbVdpbmRvdyBmb3IgV01fUkVTSVpFIGhvb2tpbmcKKyAgICBjb25zdCBlZ2w6OkNvbmZpZyAq
bUNvbmZpZzsgICAgLy8gRUdMIGNvbmZpZyBzdXJmYWNlIHdhcyBjcmVhdGVkIHdpdGgKKyAgICBF
R0xpbnQgbUhlaWdodDsgICAgICAgICAgICAgICAgLy8gSGVpZ2h0IG9mIHN1cmZhY2UKKyAgICBF
R0xpbnQgbVdpZHRoOyAgICAgICAgICAgICAgICAgLy8gV2lkdGggb2Ygc3VyZmFjZQorLy8gIEVH
TGludCBob3Jpem9udGFsUmVzb2x1dGlvbjsgICAvLyBIb3Jpem9udGFsIGRvdCBwaXRjaAorLy8g
IEVHTGludCB2ZXJ0aWNhbFJlc29sdXRpb247ICAgICAvLyBWZXJ0aWNhbCBkb3QgcGl0Y2gKKy8v
ICBFR0xCb29sZWFuIGxhcmdlc3RQQnVmZmVyOyAgICAgLy8gSWYgdHJ1ZSwgY3JlYXRlIGxhcmdl
c3QgcGJ1ZmZlciBwb3NzaWJsZQorLy8gIEVHTEJvb2xlYW4gbWlwbWFwVGV4dHVyZTsgICAgICAv
LyBUcnVlIGlmIHRleHR1cmUgaGFzIG1pcG1hcHMKKy8vICBFR0xpbnQgbWlwbWFwTGV2ZWw7ICAg
ICAgICAgICAgLy8gTWlwbWFwIGxldmVsIHRvIHJlbmRlciB0bworLy8gIEVHTGVudW0gbXVsdGlz
YW1wbGVSZXNvbHZlOyAgICAvLyBNdWx0aXNhbXBsZSByZXNvbHZlIGJlaGF2aW9yCisgICAgRUdM
aW50IG1QaXhlbEFzcGVjdFJhdGlvOyAgICAgIC8vIERpc3BsYXkgYXNwZWN0IHJhdGlvCisgICAg
RUdMZW51bSBtUmVuZGVyQnVmZmVyOyAgICAgICAgIC8vIFJlbmRlciBidWZmZXIKKyAgICBFR0xl
bnVtIG1Td2FwQmVoYXZpb3I7ICAgICAgICAgLy8gQnVmZmVyIHN3YXAgYmVoYXZpb3IKKyAgICBF
R0xlbnVtIG1UZXh0dXJlRm9ybWF0OyAgICAgICAgLy8gRm9ybWF0IG9mIHRleHR1cmU6IFJHQiwg
UkdCQSwgb3Igbm8gdGV4dHVyZQorICAgIEVHTGVudW0gbVRleHR1cmVUYXJnZXQ7ICAgICAgICAv
LyBUeXBlIG9mIHRleHR1cmU6IDJEIG9yIG5vIHRleHR1cmUKKy8vICBFR0xlbnVtIHZnQWxwaGFG
b3JtYXQ7ICAgICAgICAgLy8gQWxwaGEgZm9ybWF0IGZvciBPcGVuVkcKKy8vICBFR0xlbnVtIHZn
Q29sb3JTcGFjZTsgICAgICAgICAgLy8gQ29sb3Igc3BhY2UgZm9yIE9wZW5WRworICAgIEVHTGlu
dCBtU3dhcEludGVydmFsOworICAgIEVHTGludCBtUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZDsKKyAg
ICAKKyAgICBib29sIG1Td2FwSW50ZXJ2YWxEaXJ0eTsKKyAgICBnbDo6VGV4dHVyZTJEICptVGV4
dHVyZTsKK307Cit9CisKKyNlbmRpZiAgIC8vIExJQkVHTF9TVVJGQUNFX0hfCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDExODUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIGxpYkVH
TC5jcHA6IEltcGxlbWVudHMgdGhlIGV4cG9ydGVkIEVHTCBmdW5jdGlvbnMuCisKKyNpbmNsdWRl
IDxleGNlcHRpb24+CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJjb21t
b24vdmVyc2lvbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9Db250ZXh0LmgiCisjaW5jbHVkZSAi
bGliR0xFU3YyL1RleHR1cmUuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4uaCIKKworI2luY2x1ZGUgImxpYkVHTC9t
YWluLmgiCisjaW5jbHVkZSAibGliRUdML0Rpc3BsYXkuaCIKKyNpbmNsdWRlICJsaWJFR0wvU3Vy
ZmFjZS5oIgorCitib29sIHZhbGlkYXRlRGlzcGxheShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCit7
CisgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgeworICAgICAgICByZXR1
cm4gZWdsOjplcnJvcihFR0xfQkFEX0RJU1BMQVksIGZhbHNlKTsKKyAgICB9CisKKyAgICBpZiAo
IWRpc3BsYXktPmlzSW5pdGlhbGl6ZWQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVy
cm9yKEVHTF9OT1RfSU5JVElBTElaRUQsIGZhbHNlKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCB2YWxpZGF0ZUNvbmZpZyhlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIEVHTENv
bmZpZyBjb25maWcpCit7CisgICAgaWYgKCF2YWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFkaXNwbGF5LT5pc1Zh
bGlkQ29uZmlnKGNvbmZpZykpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xf
QkFEX0NPTkZJRywgZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IHZhbGlkYXRlQ29udGV4dChlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGdsOjpDb250ZXh0ICpjb250
ZXh0KQoreworICAgIGlmICghdmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghZGlzcGxheS0+aXNWYWxpZENvbnRl
eHQoY29udGV4dCkpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0NP
TlRFWFQsIGZhbHNlKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCB2YWxp
ZGF0ZVN1cmZhY2UoZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBlZ2w6OlN1cmZhY2UgKnN1cmZhY2Up
Cit7CisgICAgaWYgKCF2YWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFkaXNwbGF5LT5pc1ZhbGlkU3VyZmFjZShz
dXJmYWNlKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfU1VSRkFD
RSwgZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitleHRlcm4gIkMiCit7
CitFR0xpbnQgX19zdGRjYWxsIGVnbEdldEVycm9yKHZvaWQpCit7CisgICAgRVZFTlQoIigpIik7
CisKKyAgICBFR0xpbnQgZXJyb3IgPSBlZ2w6OmdldEN1cnJlbnRFcnJvcigpOworCisgICAgaWYg
KGVycm9yICE9IEVHTF9TVUNDRVNTKQorICAgIHsKKyAgICAgICAgZWdsOjpzZXRDdXJyZW50RXJy
b3IoRUdMX1NVQ0NFU1MpOworICAgIH0KKworICAgIHJldHVybiBlcnJvcjsKK30KKworRUdMRGlz
cGxheSBfX3N0ZGNhbGwgZWdsR2V0RGlzcGxheShFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5
X2lkKQoreworICAgIEVWRU5UKCIoRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheV9pZCA9IDB4
JTAuOHApIiwgZGlzcGxheV9pZCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIHJldHVybiBl
Z2w6OkRpc3BsYXk6OmdldERpc3BsYXkoZGlzcGxheV9pZCk7CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURf
QUxMT0MsIEVHTF9OT19ESVNQTEFZKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxs
IGVnbEluaXRpYWxpemUoRUdMRGlzcGxheSBkcHksIEVHTGludCAqbWFqb3IsIEVHTGludCAqbWlu
b3IpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTGludCAqbWFq
b3IgPSAweCUwLjhwLCBFR0xpbnQgKm1pbm9yID0gMHglMC44cCkiLAorICAgICAgICAgIGRweSwg
bWFqb3IsIG1pbm9yKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGRweSA9PSBFR0xf
Tk9fRElTUExBWSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdM
X0JBRF9ESVNQTEFZLCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgZWdsOjpEaXNw
bGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKworICAgICAg
ICBpZiAoIWRpc3BsYXktPmluaXRpYWxpemUoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGVnbDo6ZXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgRUdMX0ZBTFNFKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChtYWpvcikgKm1ham9yID0gMTsKKyAgICAgICAgaWYgKG1pbm9yKSAq
bWlub3IgPSA0OworCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdMX1RSVUUpOworICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWds
OjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30KKworRUdMQm9vbGVh
biBfX3N0ZGNhbGwgZWdsVGVybWluYXRlKEVHTERpc3BsYXkgZHB5KQoreworICAgIEVWRU5UKCIo
RUdMRGlzcGxheSBkcHkgPSAweCUwLjhwKSIsIGRweSk7CisKKyAgICB0cnkKKyAgICB7CisgICAg
ICAgIGlmIChkcHkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBlZ2w6OmVycm9yKEVHTF9CQURfRElTUExBWSwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQor
CisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxh
eSo+KGRweSk7CisKKyAgICAgICAgZGlzcGxheS0+dGVybWluYXRlKCk7CisKKyAgICAgICAgcmV0
dXJuIGVnbDo6c3VjY2VzcyhFR0xfVFJVRSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVH
TF9GQUxTRSk7CisgICAgfQorfQorCitjb25zdCBjaGFyICpfX3N0ZGNhbGwgZWdsUXVlcnlTdHJp
bmcoRUdMRGlzcGxheSBkcHksIEVHTGludCBuYW1lKQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxh
eSBkcHkgPSAweCUwLjhwLCBFR0xpbnQgbmFtZSA9ICVkKSIsIGRweSwgbmFtZSk7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVn
bDo6RGlzcGxheSo+KGRweSk7CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZURpc3BsYXkoZGlzcGxh
eSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAg
ICAgICAgc3dpdGNoIChuYW1lKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBFR0xfQ0xJRU5U
X0FQSVM6CisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKCJPcGVuR0xfRVMiKTsKKyAg
ICAgICAgICBjYXNlIEVHTF9FWFRFTlNJT05TOgorICAgICAgICAgICAgcmV0dXJuIGVnbDo6c3Vj
Y2VzcyhkaXNwbGF5LT5nZXRFeHRlbnNpb25TdHJpbmcoKSk7CisgICAgICAgICAgY2FzZSBFR0xf
VkVORE9SOgorICAgICAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhkaXNwbGF5LT5nZXRWZW5k
b3JTdHJpbmcoKSk7CisgICAgICAgICAgY2FzZSBFR0xfVkVSU0lPTjoKKyAgICAgICAgICAgIHJl
dHVybiBlZ2w6OnN1Y2Nlc3MoIjEuNCAoQU5HTEUgIiBWRVJTSU9OX1NUUklORyAiKSIpOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsIChj
b25zdCBjaGFyKilOVUxMKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgKGNvbnN0IGNoYXIq
KU5VTEwpOworICAgIH0KK30KKworRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsR2V0Q29uZmlncyhF
R0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnICpjb25maWdzLCBFR0xpbnQgY29uZmlnX3NpemUsIEVH
TGludCAqbnVtX2NvbmZpZykKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44
cCwgRUdMQ29uZmlnICpjb25maWdzID0gMHglMC44cCwgIgorICAgICAgICAgICJFR0xpbnQgY29u
ZmlnX3NpemUgPSAlZCwgRUdMaW50ICpudW1fY29uZmlnID0gMHglMC44cCkiLAorICAgICAgICAg
IGRweSwgY29uZmlncywgY29uZmlnX3NpemUsIG51bV9jb25maWcpOworCisgICAgdHJ5CisgICAg
eworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3Bs
YXkqPihkcHkpOworCisgICAgICAgIGlmICghdmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCFudW1fY29uZmlnKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpl
cnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAg
IGNvbnN0IEVHTGludCBhdHRyaWJMaXN0W10gPSAgICB7RUdMX05PTkV9OworCisgICAgICAgIGlm
ICghZGlzcGxheS0+Z2V0Q29uZmlncyhjb25maWdzLCBhdHRyaWJMaXN0LCBjb25maWdfc2l6ZSwg
bnVtX2NvbmZpZykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVH
TF9CQURfQVRUUklCVVRFLCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IGVnbDo6c3VjY2VzcyhFR0xfVFJVRSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9j
JikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9G
QUxTRSk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xDaG9vc2VDb25maWco
RUdMRGlzcGxheSBkcHksIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QsIEVHTENvbmZpZyAqY29u
ZmlncywgRUdMaW50IGNvbmZpZ19zaXplLCBFR0xpbnQgKm51bV9jb25maWcpCit7CisgICAgRVZF
TlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3Qg
PSAweCUwLjhwLCAiCisgICAgICAgICAgIkVHTENvbmZpZyAqY29uZmlncyA9IDB4JTAuOHAsIEVH
TGludCBjb25maWdfc2l6ZSA9ICVkLCBFR0xpbnQgKm51bV9jb25maWcgPSAweCUwLjhwKSIsCisg
ICAgICAgICAgZHB5LCBhdHRyaWJfbGlzdCwgY29uZmlncywgY29uZmlnX3NpemUsIG51bV9jb25m
aWcpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBz
dGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOworCisgICAgICAgIGlmICghdmFsaWRhdGVE
aXNwbGF5KGRpc3BsYXkpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNF
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFudW1fY29uZmlnKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgRUdMX0ZBTFNFKTsK
KyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IEVHTGludCBhdHRyaWJMaXN0W10gPSAgICB7RUdM
X05PTkV9OworCisgICAgICAgIGlmICghYXR0cmliX2xpc3QpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGF0dHJpYl9saXN0ID0gYXR0cmliTGlzdDsKKyAgICAgICAgfQorCisgICAgICAgIGRpc3Bs
YXktPmdldENvbmZpZ3MoY29uZmlncywgYXR0cmliX2xpc3QsIGNvbmZpZ19zaXplLCBudW1fY29u
ZmlnKTsKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJy
b3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19z
dGRjYWxsIGVnbEdldENvbmZpZ0F0dHJpYihFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZp
ZywgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSkKK3sKKyAgICBFVkVOVCgiKEVHTERp
c3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29uZmlnIGNvbmZpZyA9IDB4JTAuOHAsIEVHTGludCBh
dHRyaWJ1dGUgPSAlZCwgRUdMaW50ICp2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBkcHks
IGNvbmZpZywgYXR0cmlidXRlLCB2YWx1ZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVn
bDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisK
KyAgICAgICAgaWYgKCF2YWxpZGF0ZUNvbmZpZyhkaXNwbGF5LCBjb25maWcpKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFkaXNwbGF5LT5nZXRDb25maWdBdHRyaWIoY29uZmlnLCBhdHRyaWJ1dGUsIHZhbHVlKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUs
IEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVH
TF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9
CisKK0VHTFN1cmZhY2UgX19zdGRjYWxsIGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoRUdMRGlzcGxh
eSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luLCBjb25zdCBF
R0xpbnQgKmF0dHJpYl9saXN0KQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUw
LjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44cCwgRUdMTmF0aXZlV2luZG93VHlwZSB3aW4g
PSAweCUwLjhwLCAiCisgICAgICAgICAgImNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUw
LjhwKSIsIGRweSwgY29uZmlnLCB3aW4sIGF0dHJpYl9saXN0KTsKKworICAgIHRyeQorICAgIHsK
KyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5
Kj4oZHB5KTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZykp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKKyAgICAgICAg
fQorCisgICAgICAgIEhXTkQgd2luZG93ID0gKEhXTkQpd2luOworCisgICAgICAgIGlmICghSXNX
aW5kb3cod2luZG93KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3Io
RUdMX0JBRF9OQVRJVkVfV0lORE9XLCBFR0xfTk9fU1VSRkFDRSk7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gZGlzcGxheS0+Y3JlYXRlV2luZG93U3VyZmFjZSh3aW5kb3csIGNvbmZpZywg
YXR0cmliX2xpc3QpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgewor
ICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfTk9fU1VSRkFDRSk7
CisgICAgfQorfQorCitFR0xTdXJmYWNlIF9fc3RkY2FsbCBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFj
ZShFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJf
bGlzdCkKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29uZmln
IGNvbmZpZyA9IDB4JTAuOHAsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUwLjhwKSIs
CisgICAgICAgICAgZHB5LCBjb25maWcsIGF0dHJpYl9saXN0KTsKKworICAgIHRyeQorICAgIHsK
KyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5
Kj4oZHB5KTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZykp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBkaXNwbGF5LT5jcmVhdGVPZmZzY3JlZW5TdXJmYWNlKGNvbmZp
ZywgTlVMTCwgYXR0cmliX2xpc3QpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfTk9f
U1VSRkFDRSk7CisgICAgfQorfQorCitFR0xTdXJmYWNlIF9fc3RkY2FsbCBlZ2xDcmVhdGVQaXht
YXBTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xOYXRpdmVQaXht
YXBUeXBlIHBpeG1hcCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkKK3sKKyAgICBFVkVOVCgi
KEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29uZmlnIGNvbmZpZyA9IDB4JTAuOHAsIEVH
TE5hdGl2ZVBpeG1hcFR5cGUgcGl4bWFwID0gMHglMC44cCwgIgorICAgICAgICAgICJjb25zdCBF
R0xpbnQgKmF0dHJpYl9saXN0ID0gMHglMC44cCkiLCBkcHksIGNvbmZpZywgcGl4bWFwLCBhdHRy
aWJfbGlzdCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxh
eSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisKKyAgICAgICAgaWYgKCF2YWxp
ZGF0ZUNvbmZpZyhkaXNwbGF5LCBjb25maWcpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gRUdMX05PX1NVUkZBQ0U7CisgICAgICAgIH0KKworICAgICAgICBVTklNUExFTUVOVEVEKCk7
ICAgLy8gRklYTUUKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9OT19TVVJGQUNF
KTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX05PX1NVUkZBQ0UpOworICAgIH0KK30K
KworRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsRGVzdHJveVN1cmZhY2UoRUdMRGlzcGxheSBkcHks
IEVHTFN1cmZhY2Ugc3VyZmFjZSkKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHgl
MC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCkiLCBkcHksIHN1cmZhY2UpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2Fz
dDxlZ2w6OkRpc3BsYXkqPihkcHkpOworICAgICAgICBlZ2w6OlN1cmZhY2UgKmVnbFN1cmZhY2Ug
PSBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihzdXJmYWNlKTsKKworICAgICAgICBpZiAoIXZh
bGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNlKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdXJmYWNlID09
IEVHTF9OT19TVVJGQUNFKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJv
cihFR0xfQkFEX1NVUkZBQ0UsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBkaXNw
bGF5LT5kZXN0cm95U3VyZmFjZSgoZWdsOjpTdXJmYWNlKilzdXJmYWNlKTsKKworICAgICAgICBy
ZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywg
RUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFF1ZXJ5U3Vy
ZmFjZShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYXR0cmlidXRl
LCBFR0xpbnQgKnZhbHVlKQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhw
LCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwLCBFR0xpbnQgYXR0cmlidXRlID0gJWQsIEVH
TGludCAqdmFsdWUgPSAweCUwLjhwKSIsCisgICAgICAgICAgZHB5LCBzdXJmYWNlLCBhdHRyaWJ1
dGUsIHZhbHVlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNw
bGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKyAgICAgICAgZWdsOjpTdXJm
YWNlICplZ2xTdXJmYWNlID0gKGVnbDo6U3VyZmFjZSopc3VyZmFjZTsKKworICAgICAgICBpZiAo
IXZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNlKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdXJmYWNl
ID09IEVHTF9OT19TVVJGQUNFKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpl
cnJvcihFR0xfQkFEX1NVUkZBQ0UsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBz
d2l0Y2ggKGF0dHJpYnV0ZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgRUdMX1ZHX0FMUEhB
X0ZPUk1BVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFR0xfVkdfQ09MT1JTUEFDRToKKyAgICAgICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgY2FzZSBFR0xfQ09ORklHX0lEOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAg
IC8vIEZJWE1FCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9IRUlHSFQ6
CisgICAgICAgICAgICAqdmFsdWUgPSBlZ2xTdXJmYWNlLT5nZXRIZWlnaHQoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRUdMX0hPUklaT05UQUxfUkVTT0xVVElPTjoKKyAg
ICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgY2FzZSBFR0xfTEFSR0VTVF9QQlVGRkVSOgorICAgICAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNl
IEVHTF9NSVBNQVBfVEVYVFVSRToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBG
SVhNRQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFR0xfTUlQTUFQX0xFVkVM
OgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9NVUxUSVNBTVBMRV9SRVNPTFZFOgorICAgICAgICAg
ICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICBjYXNlIEVHTF9QSVhFTF9BU1BFQ1RfUkFUSU86CisgICAgICAgICAgICBVTklNUExFTUVO
VEVEKCk7ICAgLy8gRklYTUUKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRUdM
X1JFTkRFUl9CVUZGRVI6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRUdMX1NXQVBfQkVIQVZJT1I6Cisg
ICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgIGNhc2UgRUdMX1RFWFRVUkVfRk9STUFUOgorICAgICAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNl
IEVHTF9URVhUVVJFX1RBUkdFVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBG
SVhNRQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFR0xfVkVSVElDQUxfUkVT
T0xVVElPTjoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFR0xfV0lEVEg6CisgICAgICAgICAgICAqdmFs
dWUgPSBlZ2xTdXJmYWNlLT5nZXRXaWR0aCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgY2FzZSBFR0xfUE9TVF9TVUJfQlVGRkVSX1NVUFBPUlRFRF9OVjoKKyAgICAgICAgICAgICp2
YWx1ZSA9IGVnbFN1cmZhY2UtPmlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVy
cm9yKEVHTF9CQURfQVRUUklCVVRFLCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIGVnbDo6c3VjY2VzcyhFR0xfVFJVRSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0Ms
IEVHTF9GQUxTRSk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xRdWVyeVN1
cmZhY2VQb2ludGVyQU5HTEUoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdM
aW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKQoreworICAgIFRSQUNFKCIoRUdMRGlzcGxheSBk
cHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwLCBFR0xpbnQgYXR0cmli
dXRlID0gJWQsIHZvaWQgKip2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBkcHksIHN1cmZh
Y2UsIGF0dHJpYnV0ZSwgdmFsdWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBlZ2w6OkRp
c3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOworICAgICAg
ICBlZ2w6OlN1cmZhY2UgKmVnbFN1cmZhY2UgPSAoZWdsOjpTdXJmYWNlKilzdXJmYWNlOworCisg
ICAgICAgIGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBlZ2w6OmVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQor
CisgICAgICAgIHN3aXRjaCAoYXR0cmlidXRlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBF
R0xfRDNEX1RFWFRVUkVfMkRfU0hBUkVfSEFORExFX0FOR0xFOgorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJ4OjpTd2FwQ2hhaW4gKnN3YXBjaGFpbiA9IGVnbFN1cmZhY2UtPmdldFN3
YXBDaGFpbigpOworICAgICAgICAgICAgICAgICp2YWx1ZSA9ICh2b2lkKikgKHN3YXBjaGFpbiA/
IHN3YXBjaGFpbi0+Z2V0U2hhcmVIYW5kbGUoKSA6IE5VTEwpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBl
Z2w6OmVycm9yKEVHTF9CQURfQVRUUklCVVRFLCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhFR0xfVFJVRSk7CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURf
QUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xC
aW5kQVBJKEVHTGVudW0gYXBpKQoreworICAgIEVWRU5UKCIoRUdMZW51bSBhcGkgPSAweCVYKSIs
IGFwaSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoYXBpKQorICAgICAgICB7
CisgICAgICAgICAgY2FzZSBFR0xfT1BFTkdMX0FQSToKKyAgICAgICAgICBjYXNlIEVHTF9PUEVO
VkdfQVBJOgorICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9QQVJBTUVURVIs
IEVHTF9GQUxTRSk7ICAgLy8gTm90IHN1cHBvcnRlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uCisg
ICAgICAgICAgY2FzZSBFR0xfT1BFTkdMX0VTX0FQSToKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX1BB
UkFNRVRFUiwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIGVnbDo6c2V0Q3VycmVu
dEFQSShhcGkpOworCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdMX1RSVUUpOworICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWds
OjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30KKworRUdMZW51bSBf
X3N0ZGNhbGwgZWdsUXVlcnlBUEkodm9pZCkKK3sKKyAgICBFVkVOVCgiKCkiKTsKKworICAgIHRy
eQorICAgIHsKKyAgICAgICAgRUdMZW51bSBBUEkgPSBlZ2w6OmdldEN1cnJlbnRBUEkoKTsKKwor
ICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEFQSSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxM
T0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xXYWl0
Q2xpZW50KHZvaWQpCit7CisgICAgRVZFTlQoIigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorCisgICAgICAgIHJldHVybiBlZ2w6OnN1
Y2Nlc3MoMCk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAg
ICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQor
fQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xSZWxlYXNlVGhyZWFkKHZvaWQpCit7CisgICAg
RVZFTlQoIigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbE1ha2VDdXJyZW50KEVH
TF9OT19ESVNQTEFZLCBFR0xfTk9fQ09OVEVYVCwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJG
QUNFKTsKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJy
b3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTFN1cmZhY2UgX19z
dGRjYWxsIGVnbENyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKEVHTERpc3BsYXkgZHB5LCBF
R0xlbnVtIGJ1ZnR5cGUsIEVHTENsaWVudEJ1ZmZlciBidWZmZXIsIEVHTENvbmZpZyBjb25maWcs
IGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRw
eSA9IDB4JTAuOHAsIEVHTGVudW0gYnVmdHlwZSA9IDB4JVgsIEVHTENsaWVudEJ1ZmZlciBidWZm
ZXIgPSAweCUwLjhwLCAiCisgICAgICAgICAgIkVHTENvbmZpZyBjb25maWcgPSAweCUwLjhwLCBj
b25zdCBFR0xpbnQgKmF0dHJpYl9saXN0ID0gMHglMC44cCkiLAorICAgICAgICAgIGRweSwgYnVm
dHlwZSwgYnVmZmVyLCBjb25maWcsIGF0dHJpYl9saXN0KTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4o
ZHB5KTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZykpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChidWZ0eXBlICE9IEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVf
QU5HTEUgfHwgIWJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJy
b3IoRUdMX0JBRF9QQVJBTUVURVIsIEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBkaXNwbGF5LT5jcmVhdGVPZmZzY3JlZW5TdXJmYWNlKGNvbmZpZywgKEhBTkRM
RSlidWZmZXIsIGF0dHJpYl9saXN0KTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2Mm
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX05P
X1NVUkZBQ0UpOworICAgIH0KK30KKworRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsU3VyZmFjZUF0
dHJpYihFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYXR0cmlidXRl
LCBFR0xpbnQgdmFsdWUpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAs
IEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCBhdHRyaWJ1dGUgPSAlZCwgRUdM
aW50IHZhbHVlID0gJWQpIiwKKyAgICAgICAgICBkcHksIHN1cmZhY2UsIGF0dHJpYnV0ZSwgdmFs
dWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBz
dGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOworICAgICAgICBlZ2w6OlN1cmZhY2UgKmVn
bFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihzdXJmYWNlKTsKKworICAgICAg
ICBpZiAoIXZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNlKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIFVOSU1Q
TEVNRU5URUQoKTsgICAvLyBGSVhNRQorCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdM
X1RSVUUpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAg
ICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30K
KworRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsQmluZFRleEltYWdlKEVHTERpc3BsYXkgZHB5LCBF
R0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBidWZmZXIpCit7CisgICAgRVZFTlQoIihFR0xEaXNw
bGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCBi
dWZmZXIgPSAlZCkiLCBkcHksIHN1cmZhY2UsIGJ1ZmZlcik7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+
KGRweSk7CisgICAgICAgIGVnbDo6U3VyZmFjZSAqZWdsU3VyZmFjZSA9IHN0YXRpY19jYXN0PGVn
bDo6U3VyZmFjZSo+KHN1cmZhY2UpOworCisgICAgICAgIGlmICghdmFsaWRhdGVTdXJmYWNlKGRp
c3BsYXksIGVnbFN1cmZhY2UpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZB
TFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJ1ZmZlciAhPSBFR0xfQkFDS19CVUZGRVIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfUEFSQU1F
VEVSLCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN1cmZhY2UgPT0gRUdM
X05PX1NVUkZBQ0UgfHwgZWdsU3VyZmFjZS0+Z2V0V2luZG93SGFuZGxlKCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNF
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChlZ2xTdXJmYWNlLT5nZXRCb3VuZFRleHR1cmUo
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BQ0NF
U1MsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZWdsU3VyZmFjZS0+Z2V0
VGV4dHVyZUZvcm1hdCgpID09IEVHTF9OT19URVhUVVJFKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX01BVENILCBFR0xfRkFMU0UpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFnbEJpbmRUZXhJbWFnZShlZ2xTdXJmYWNlKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX0ZBTFNFKTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdMX1RSVUUpOworICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWds
OjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30KKworRUdMQm9vbGVh
biBfX3N0ZGNhbGwgZWdsUmVsZWFzZVRleEltYWdlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNl
IHN1cmZhY2UsIEVHTGludCBidWZmZXIpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9
IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCBidWZmZXIgPSAl
ZCkiLCBkcHksIHN1cmZhY2UsIGJ1ZmZlcik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVn
bDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7Cisg
ICAgICAgIGVnbDo6U3VyZmFjZSAqZWdsU3VyZmFjZSA9IHN0YXRpY19jYXN0PGVnbDo6U3VyZmFj
ZSo+KHN1cmZhY2UpOworCisgICAgICAgIGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVn
bFN1cmZhY2UpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGJ1ZmZlciAhPSBFR0xfQkFDS19CVUZGRVIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCBFR0xf
RkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZB
Q0UgfHwgZWdsU3VyZmFjZS0+Z2V0V2luZG93SGFuZGxlKCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChlZ2xTdXJmYWNlLT5nZXRUZXh0dXJlRm9ybWF0KCkgPT0gRUdM
X05PX1RFWFRVUkUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVH
TF9CQURfTUFUQ0gsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6VGV4dHVy
ZTJEICp0ZXh0dXJlID0gZWdsU3VyZmFjZS0+Z2V0Qm91bmRUZXh0dXJlKCk7CisKKyAgICAgICAg
aWYgKHRleHR1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRleHR1cmUtPnJlbGVhc2VUZXhJ
bWFnZSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhFR0xfVFJV
RSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJl
dHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQorCitF
R0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xTd2FwSW50ZXJ2YWwoRUdMRGlzcGxheSBkcHksIEVHTGlu
dCBpbnRlcnZhbCkKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdM
aW50IGludGVydmFsID0gJWQpIiwgZHB5LCBpbnRlcnZhbCk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+
KGRweSk7CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBl
Z2w6OlN1cmZhY2UgKmRyYXdfc3VyZmFjZSA9IHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KGVn
bDo6Z2V0Q3VycmVudERyYXdTdXJmYWNlKCkpOworCisgICAgICAgIGlmIChkcmF3X3N1cmZhY2Ug
PT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JB
RF9TVVJGQUNFLCBFR0xfRkFMU0UpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkcmF3
X3N1cmZhY2UtPnNldFN3YXBJbnRlcnZhbChpbnRlcnZhbCk7CisKKyAgICAgICAgcmV0dXJuIGVn
bDo6c3VjY2VzcyhFR0xfVFJVRSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
KyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxT
RSk7CisgICAgfQorfQorCitFR0xDb250ZXh0IF9fc3RkY2FsbCBlZ2xDcmVhdGVDb250ZXh0KEVH
TERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xDb250ZXh0IHNoYXJlX2NvbnRleHQs
IGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRw
eSA9IDB4JTAuOHAsIEVHTENvbmZpZyBjb25maWcgPSAweCUwLjhwLCBFR0xDb250ZXh0IHNoYXJl
X2NvbnRleHQgPSAweCUwLjhwLCAiCisgICAgICAgICAgImNvbnN0IEVHTGludCAqYXR0cmliX2xp
c3QgPSAweCUwLjhwKSIsIGRweSwgY29uZmlnLCBzaGFyZV9jb250ZXh0LCBhdHRyaWJfbGlzdCk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIC8vIEdldCB0aGUgcmVxdWVzdGVkIGNsaWVudCB2
ZXJzaW9uIChkZWZhdWx0IGlzIDEpIGFuZCBjaGVjayBpdCBpcyB0d28uCisgICAgICAgIEVHTGlu
dCBjbGllbnRfdmVyc2lvbiA9IDE7CisgICAgICAgIGJvb2wgcmVzZXRfbm90aWZpY2F0aW9uID0g
ZmFsc2U7CisgICAgICAgIGJvb2wgcm9idXN0X2FjY2VzcyA9IGZhbHNlOworCisgICAgICAgIGlm
IChhdHRyaWJfbGlzdCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChjb25zdCBFR0xpbnQq
IGF0dHJpYnV0ZSA9IGF0dHJpYl9saXN0OyBhdHRyaWJ1dGVbMF0gIT0gRUdMX05PTkU7IGF0dHJp
YnV0ZSArPSAyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoYXR0cmli
dXRlWzBdKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX0NP
TlRFWFRfQ0xJRU5UX1ZFUlNJT046CisgICAgICAgICAgICAgICAgICAgIGNsaWVudF92ZXJzaW9u
ID0gYXR0cmlidXRlWzFdOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgIGNhc2UgRUdMX0NPTlRFWFRfT1BFTkdMX1JPQlVTVF9BQ0NFU1NfRVhUOgorICAgICAg
ICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlWzFdID09IEVHTF9UUlVFKQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xf
QkFEX0NPTkZJRywgRUdMX05PX0NPTlRFWFQpOyAgIC8vIFVuaW1wbGVtZW50ZWQKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHJvYnVzdF9hY2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZVsxXSAhPSBFR0xf
RkFMU0UpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFE
X0FUVFJJQlVURSwgRUdMX05PX0NPTlRFWFQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX0NPTlRFWFRfT1BFTkdMX1JFU0VUX05PVElGSUNB
VElPTl9TVFJBVEVHWV9FWFQ6CisgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVbMV0g
PT0gRUdMX0xPU0VfQ09OVEVYVF9PTl9SRVNFVF9FWFQpCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXNldF9ub3RpZmljYXRpb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChhdHRyaWJ1dGVbMV0gIT0gRUdMX05PX1JFU0VUX05PVElGSUNBVElPTl9FWFQpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdM
X05PX0NPTlRFWFQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9C
QURfQVRUUklCVVRFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGNsaWVudF92ZXJzaW9uICE9IDIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQ09ORklHLCBF
R0xfTk9fQ09OVEVYVCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2hhcmVfY29udGV4dCAm
JiBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCo+KHNoYXJlX2NvbnRleHQpLT5pc1Jlc2V0Tm90aWZp
Y2F0aW9uRW5hYmxlZCgpICE9IHJlc2V0X25vdGlmaWNhdGlvbikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX05PX0NPTlRFWFQpOwor
ICAgICAgICB9CisKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8
ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlQ29uZmlnKGRpc3Bs
YXksIGNvbmZpZykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfTk9fQ09OVEVY
VDsKKyAgICAgICAgfQorCisgICAgICAgIEVHTENvbnRleHQgY29udGV4dCA9IGRpc3BsYXktPmNy
ZWF0ZUNvbnRleHQoY29uZmlnLCBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCo+KHNoYXJlX2NvbnRl
eHQpLCByZXNldF9ub3RpZmljYXRpb24sIHJvYnVzdF9hY2Nlc3MpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2Vzcyhjb250ZXh0KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0NPTlRFWFRfTE9TVCwg
RUdMX05PX0NPTlRFWFQpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAg
eworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfTk9fQ09OVEVY
VCk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xEZXN0cm95Q29udGV4dChF
R0xEaXNwbGF5IGRweSwgRUdMQ29udGV4dCBjdHgpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5
IGRweSA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHglMC44cCkiLCBkcHksIGN0eCk7CisK
KyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19j
YXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQqPihjdHgpOworCisgICAgICAgIGlmICghdmFsaWRhdGVD
b250ZXh0KGRpc3BsYXksIGNvbnRleHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
RUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGN0eCA9PSBFR0xfTk9fQ09OVEVY
VCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9DT05U
RVhULCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgZGlzcGxheS0+ZGVzdHJveUNv
bnRleHQoY29udGV4dCk7CisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhFR0xfVFJVRSk7
CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVy
biBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQorCitFR0xC
b29sZWFuIF9fc3RkY2FsbCBlZ2xNYWtlQ3VycmVudChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFj
ZSBkcmF3LCBFR0xTdXJmYWNlIHJlYWQsIEVHTENvbnRleHQgY3R4KQoreworICAgIEVWRU5UKCIo
RUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIGRyYXcgPSAweCUwLjhwLCBFR0xT
dXJmYWNlIHJlYWQgPSAweCUwLjhwLCBFR0xDb250ZXh0IGN0eCA9IDB4JTAuOHApIiwKKyAgICAg
ICAgICBkcHksIGRyYXcsIHJlYWQsIGN0eCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVn
bDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7Cisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQqPihj
dHgpOworCisgICAgICAgIGlmIChjdHggIT0gRUdMX05PX0NPTlRFWFQgJiYgIXZhbGlkYXRlQ29u
dGV4dChkaXNwbGF5LCBjb250ZXh0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVH
TF9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIgPSBk
aXNwbGF5LT5nZXRSZW5kZXJlcigpOworICAgICAgICBpZiAocmVuZGVyZXItPnRlc3REZXZpY2VM
b3N0KHRydWUpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5pc0RldmljZUxvc3QoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0NPTlRFWFRfTE9TVCwgRUdMX0ZB
TFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgoZHJhdyAhPSBFR0xfTk9fU1VSRkFDRSAm
JiAhdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KGRy
YXcpKSkgfHwKKyAgICAgICAgICAgIChyZWFkICE9IEVHTF9OT19TVVJGQUNFICYmICF2YWxpZGF0
ZVN1cmZhY2UoZGlzcGxheSwgc3RhdGljX2Nhc3Q8ZWdsOjpTdXJmYWNlKj4ocmVhZCkpKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChkcmF3ICE9IHJlYWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFVOSU1QTEVNRU5U
RUQoKTsgICAvLyBGSVhNRQorICAgICAgICB9CisKKyAgICAgICAgZWdsOjpzZXRDdXJyZW50RGlz
cGxheShkcHkpOworICAgICAgICBlZ2w6OnNldEN1cnJlbnREcmF3U3VyZmFjZShkcmF3KTsKKyAg
ICAgICAgZWdsOjpzZXRDdXJyZW50UmVhZFN1cmZhY2UocmVhZCk7CisKKyAgICAgICAgZ2xNYWtl
Q3VycmVudChjb250ZXh0LCBkaXNwbGF5LCBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihkcmF3
KSk7CisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhFR0xfVFJVRSk7CisgICAgfQorICAg
IGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9y
KEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQorCitFR0xDb250ZXh0IF9fc3Rk
Y2FsbCBlZ2xHZXRDdXJyZW50Q29udGV4dCh2b2lkKQoreworICAgIEVWRU5UKCIoKSIpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBnbEdldEN1cnJlbnRD
b250ZXh0KCk7CisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2Vzcyhjb250ZXh0KTsKKyAgICB9
CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6
ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX05PX0NPTlRFWFQpOworICAgIH0KK30KKworRUdMU3Vy
ZmFjZSBfX3N0ZGNhbGwgZWdsR2V0Q3VycmVudFN1cmZhY2UoRUdMaW50IHJlYWRkcmF3KQorewor
ICAgIEVWRU5UKCIoRUdMaW50IHJlYWRkcmF3ID0gJWQpIiwgcmVhZGRyYXcpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBpZiAocmVhZGRyYXcgPT0gRUdMX1JFQUQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEVHTFN1cmZhY2UgcmVhZCA9IGVnbDo6Z2V0Q3VycmVudFJlYWRTdXJmYWNlKCk7
CisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKHJlYWQpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgaWYgKHJlYWRkcmF3ID09IEVHTF9EUkFXKQorICAgICAgICB7CisgICAgICAgICAg
ICBFR0xTdXJmYWNlIGRyYXcgPSBlZ2w6OmdldEN1cnJlbnREcmF3U3VyZmFjZSgpOworICAgICAg
ICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhkcmF3KTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfUEFSQU1F
VEVSLCBFR0xfTk9fU1VSRkFDRSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExP
QywgRUdMX05PX1NVUkZBQ0UpOworICAgIH0KK30KKworRUdMRGlzcGxheSBfX3N0ZGNhbGwgZWds
R2V0Q3VycmVudERpc3BsYXkodm9pZCkKK3sKKyAgICBFVkVOVCgiKCkiKTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgRUdMRGlzcGxheSBkcHkgPSBlZ2w6OmdldEN1cnJlbnREaXNwbGF5KCk7
CisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhkcHkpOworICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFE
X0FMTE9DLCBFR0xfTk9fRElTUExBWSk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2Fs
bCBlZ2xRdWVyeUNvbnRleHQoRUdMRGlzcGxheSBkcHksIEVHTENvbnRleHQgY3R4LCBFR0xpbnQg
YXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkg
PSAweCUwLjhwLCBFR0xDb250ZXh0IGN0eCA9IDB4JTAuOHAsIEVHTGludCBhdHRyaWJ1dGUgPSAl
ZCwgRUdMaW50ICp2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBkcHksIGN0eCwgYXR0cmli
dXRlLCB2YWx1ZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlz
cGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQqPihjdHgpOworCisgICAgICAg
IGlmICghdmFsaWRhdGVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgVU5JTVBMRU1F
TlRFRCgpOyAgIC8vIEZJWE1FCisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcygwKTsKKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVn
bDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xl
YW4gX19zdGRjYWxsIGVnbFdhaXRHTCh2b2lkKQoreworICAgIEVWRU5UKCIoKSIpOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKworICAgICAg
ICByZXR1cm4gZWdsOjpzdWNjZXNzKDApOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxv
YyYpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xf
RkFMU0UpOworICAgIH0KK30KKworRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsV2FpdE5hdGl2ZShF
R0xpbnQgZW5naW5lKQoreworICAgIEVWRU5UKCIoRUdMaW50IGVuZ2luZSA9ICVkKSIsIGVuZ2lu
ZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhN
RQorCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoMCk7CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURf
QUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xT
d2FwQnVmZmVycyhFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlKQoreworICAgIEVW
RU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUw
LjhwKSIsIGRweSwgc3VyZmFjZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlz
cGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisgICAgICAg
IGVnbDo6U3VyZmFjZSAqZWdsU3VyZmFjZSA9IChlZ2w6OlN1cmZhY2UqKXN1cmZhY2U7CisKKyAg
ICAgICAgaWYgKCF2YWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgZWdsU3VyZmFjZSkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoZGlzcGxheS0+Z2V0UmVuZGVyZXIoKS0+aXNEZXZpY2VMb3N0KCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9DT05URVhUX0xPU1QsIEVHTF9GQUxTRSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9TVVJGQUNFLCBF
R0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVnbFN1cmZhY2UtPnN3YXAoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhFR0xfVFJVRSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9CisK
KyAgICByZXR1cm4gRUdMX0ZBTFNFOworfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xDb3B5
QnVmZmVycyhFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xOYXRpdmVQaXht
YXBUeXBlIHRhcmdldCkKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwg
RUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCwgRUdMTmF0aXZlUGl4bWFwVHlwZSB0YXJnZXQg
PSAweCUwLjhwKSIsIGRweSwgc3VyZmFjZSwgdGFyZ2V0KTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4o
ZHB5KTsKKyAgICAgICAgZWdsOjpTdXJmYWNlICplZ2xTdXJmYWNlID0gc3RhdGljX2Nhc3Q8ZWds
OjpTdXJmYWNlKj4oc3VyZmFjZSk7CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVN1cmZhY2UoZGlz
cGxheSwgZWdsU3VyZmFjZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFM
U0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGlzcGxheS0+Z2V0UmVuZGVyZXIoKS0+aXNE
ZXZpY2VMb3N0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVH
TF9DT05URVhUX0xPU1QsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBVTklNUExF
TUVOVEVEKCk7ICAgLy8gRklYTUUKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKDApOwor
ICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4g
ZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30KKworRUdMQm9v
bGVhbiBfX3N0ZGNhbGwgZWdsUG9zdFN1YkJ1ZmZlck5WKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJm
YWNlIHN1cmZhY2UsIEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVp
Z2h0KQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNl
IHN1cmZhY2UgPSAweCUwLjhwLCBFR0xpbnQgeCA9ICVkLCBFR0xpbnQgeSA9ICVkLCBFR0xpbnQg
d2lkdGggPSAlZCwgRUdMaW50IGhlaWdodCA9ICVkKSIsIGRweSwgc3VyZmFjZSwgeCwgeSwgd2lk
dGgsIGhlaWdodCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmICh4IDwgMCB8fCB5IDwg
MCB8fCB3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsIEVHTF9GQUxTRSk7CisgICAgICAgIH0K
KworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3Bs
YXkqPihkcHkpOworICAgICAgICBlZ2w6OlN1cmZhY2UgKmVnbFN1cmZhY2UgPSBzdGF0aWNfY2Fz
dDxlZ2w6OlN1cmZhY2UqPihzdXJmYWNlKTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlU3VyZmFj
ZShkaXNwbGF5LCBlZ2xTdXJmYWNlKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVH
TF9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkaXNwbGF5LT5nZXRSZW5kZXJlcigp
LT5pc0RldmljZUxvc3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJy
b3IoRUdMX0NPTlRFWFRfTE9TVCwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZWdsOjplcnJvcihFR0xfQkFEX1NVUkZBQ0UsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoZWdsU3VyZmFjZS0+cG9zdFN1YkJ1ZmZlcih4LCB5LCB3aWR0aCwgaGVpZ2h0
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhFR0xfVFJVRSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9
CisKKyAgICByZXR1cm4gRUdMX0ZBTFNFOworfQorCitfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5j
dGlvblBvaW50ZXJUeXBlIF9fc3RkY2FsbCBlZ2xHZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyICpw
cm9jbmFtZSkKK3sKKyAgICBFVkVOVCgiKGNvbnN0IGNoYXIgKnByb2NuYW1lID0gXCIlc1wiKSIs
IHByb2NuYW1lKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgc3RydWN0IEV4dGVuc2lvbgor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lOworICAgICAgICAgICAgX19l
Z2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSBhZGRyZXNzOworICAgICAgICB9
OworCisgICAgICAgIHN0YXRpYyBjb25zdCBFeHRlbnNpb24gZWdsRXh0ZW5zaW9uc1tdID0KKyAg
ICAgICAgeworICAgICAgICAgICAgeyJlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUiLCAoX19l
Z2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSllZ2xRdWVyeVN1cmZhY2VQb2lu
dGVyQU5HTEV9LAorICAgICAgICAgICAgeyJlZ2xQb3N0U3ViQnVmZmVyTlYiLCAoX19lZ2xNdXN0
Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSllZ2xQb3N0U3ViQnVmZmVyTlZ9LAorICAg
ICAgICAgICAgeyIiLCBOVUxMfSwKKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBleHQgPSAwOyBleHQgPCBBcnJheVNpemUoZWdsRXh0ZW5zaW9ucyk7IGV4dCsrKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoc3RyY21wKHByb2NuYW1lLCBlZ2xFeHRlbnNpb25zW2V4
dF0ubmFtZSkgPT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKF9f
ZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZWdsRXh0ZW5zaW9uc1tleHRd
LmFkZHJlc3M7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZ2xH
ZXRQcm9jQWRkcmVzcyhwcm9jbmFtZSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9j
JikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIChfX2Vn
bE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKU5VTEwpOworICAgIH0KK30KK30K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLmRlZgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5kZWYJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVH
TC5kZWYJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKK0xJQlJBUlkJbGliRUdMCitFWFBP
UlRTCisJZWdsQmluZEFQSSAgICAgICAgICAgICAgICAgICAgICBAMTQKKwllZ2xCaW5kVGV4SW1h
Z2UgICAgICAgICAgICAgICAgIEAyMAorCWVnbENob29zZUNvbmZpZyAgICAgICAgICAgICAgICAg
QDcKKwllZ2xDb3B5QnVmZmVycyAgICAgICAgICAgICAgICAgIEAzMworCWVnbENyZWF0ZUNvbnRl
eHQgICAgICAgICAgICAgICAgQDIzCisJZWdsQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIg
ICAgICAgIEAxOAorCWVnbENyZWF0ZVBidWZmZXJTdXJmYWNlICAgICAgICAgQDEwCisJZWdsQ3Jl
YXRlUGl4bWFwU3VyZmFjZSAgICAgICAgICBAMTEKKwllZ2xDcmVhdGVXaW5kb3dTdXJmYWNlICAg
ICAgICAgIEA5CisJZWdsRGVzdHJveUNvbnRleHQgICAgICAgICAgICAgICBAMjQKKwllZ2xEZXN0
cm95U3VyZmFjZSAgICAgICAgICAgICAgIEAxMgorCWVnbEdldENvbmZpZ0F0dHJpYiAgICAgICAg
ICAgICAgQDgKKwllZ2xHZXRDb25maWdzICAgICAgICAgICAgICAgICAgIEA2CisJZWdsR2V0Q3Vy
cmVudENvbnRleHQgICAgICAgICAgICBAMjYKKwllZ2xHZXRDdXJyZW50RGlzcGxheSAgICAgICAg
ICAgIEAyOAorCWVnbEdldEN1cnJlbnRTdXJmYWNlICAgICAgICAgICAgQDI3CisJZWdsR2V0RGlz
cGxheSAgICAgICAgICAgICAgICAgICBAMgorCWVnbEdldEVycm9yICAgICAgICAgICAgICAgICAg
ICAgQDEKKwllZ2xHZXRQcm9jQWRkcmVzcyAgICAgICAgICAgICAgIEAzNAorCWVnbEluaXRpYWxp
emUgICAgICAgICAgICAgICAgICAgQDMKKwllZ2xNYWtlQ3VycmVudCAgICAgICAgICAgICAgICAg
IEAyNQorCWVnbFF1ZXJ5QVBJICAgICAgICAgICAgICAgICAgICAgQDE1CisJZWdsUXVlcnlDb250
ZXh0ICAgICAgICAgICAgICAgICBAMjkKKwllZ2xRdWVyeVN0cmluZyAgICAgICAgICAgICAgICAg
IEA1CisJZWdsUXVlcnlTdXJmYWNlICAgICAgICAgICAgICAgICBAMTMKKwllZ2xSZWxlYXNlVGV4
SW1hZ2UgICAgICAgICAgICAgIEAyMQorCWVnbFJlbGVhc2VUaHJlYWQgICAgICAgICAgICAgICAg
QDE3CisJZWdsU3VyZmFjZUF0dHJpYiAgICAgICAgICAgICAgICBAMTkKKwllZ2xTd2FwQnVmZmVy
cyAgICAgICAgICAgICAgICAgIEAzMgorCWVnbFN3YXBJbnRlcnZhbCAgICAgICAgICAgICAgICAg
QDIyCisJZWdsVGVybWluYXRlICAgICAgICAgICAgICAgICAgICBANAorCWVnbFdhaXRDbGllbnQg
ICAgICAgICAgICAgICAgICAgQDE2CisJZWdsV2FpdEdMICAgICAgICAgICAgICAgICAgICAgICBA
MzAKKwllZ2xXYWl0TmF0aXZlICAgICAgICAgICAgICAgICAgIEAzMQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGli
RUdMLnJjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wv
bGliRUdMLnJjCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkVHTC9saWJFR0wucmMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAyIEBACisvLyBNaWNyb3Nv
ZnQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgcmVzb3VyY2Ugc2NyaXB0LgorLy8KKyNpbmNsdWRlICJy
ZXNvdXJjZS5oIgorCisjZGVmaW5lIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKKy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCisvLworLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDIgcmVz
b3VyY2UuCisvLworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlICIuLi9jb21tb24vdmVy
c2lvbi5oIgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworI3VuZGVmIEFQU1RVRElPX1JFQURPTkxZ
X1NZTUJPTFMKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIEVuZ2xpc2ggKFUuUy4pIHJlc291
cmNlcworCisjaWYgIWRlZmluZWQoQUZYX1JFU09VUkNFX0RMTCkgfHwgZGVmaW5lZChBRlhfVEFS
R19FTlUpCisjaWZkZWYgX1dJTjMyCitMQU5HVUFHRSBMQU5HX0VOR0xJU0gsIFNVQkxBTkdfRU5H
TElTSF9VUworI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikKKyNlbmRpZiAvL19XSU4zMgorCisjaWZk
ZWYgQVBTVFVESU9fSU5WT0tFRAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBURVhUSU5D
TFVERQorLy8KKworMSBURVhUSU5DTFVERSAKK0JFR0lOCisgICAgInJlc291cmNlLmhcMCIKK0VO
RAorCisyIFRFWFRJTkNMVURFIAorQkVHSU4KKyAgICAiI2luY2x1ZGUgIiJhZnhyZXMuaCIiXHJc
biIKKyAgICAiI2luY2x1ZGUgIiIuLi9jb21tb24vdmVyc2lvbi5oIiJcMCIKK0VORAorCiszIFRF
WFRJTkNMVURFIAorQkVHSU4KKyAgICAiXHJcbiIKKyAgICAiXDAiCitFTkQKKworI2VuZGlmICAg
IC8vIEFQU1RVRElPX0lOVk9LRUQKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIFZl
cnNpb24KKy8vCisKK1ZTX1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTworIEZJTEVWRVJTSU9OIE1B
Sk9SX1ZFUlNJT04sTUlOT1JfVkVSU0lPTixCVUlMRF9WRVJTSU9OLEJVSUxEX1JFVklTSU9OCisg
UFJPRFVDVFZFUlNJT04gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLEJVSUxEX1ZFUlNJT04s
QlVJTERfUkVWSVNJT04KKyBGSUxFRkxBR1NNQVNLIDB4MTdMCisjaWZkZWYgX0RFQlVHCisgRklM
RUZMQUdTIDB4MUwKKyNlbHNlCisgRklMRUZMQUdTIDB4MEwKKyNlbmRpZgorIEZJTEVPUyAweDRM
CisgRklMRVRZUEUgMHgyTAorIEZJTEVTVUJUWVBFIDB4MEwKK0JFR0lOCisgICAgQkxPQ0sgIlN0
cmluZ0ZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIEJMT0NLICIwNDA5MDRiMCIKKyAgICAg
ICAgQkVHSU4KKyAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiQU5HTEUgbGli
RUdMIER5bmFtaWMgTGluayBMaWJyYXJ5IgorICAgICAgICAgICAgVkFMVUUgIkZpbGVWZXJzaW9u
IiwgVkVSU0lPTl9TVFJJTkcKKyAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAibGli
RUdMIgorICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiIKKyAgICAgICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwg
ImxpYkVHTC5kbGwiCisgICAgICAgICAgICBWQUxVRSAiUHJpdmF0ZUJ1aWxkIiwgVkVSU0lPTl9T
VFJJTkcKKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJBTkdMRSBsaWJFR0wgRHlu
YW1pYyBMaW5rIExpYnJhcnkiCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBW
RVJTSU9OX1NUUklORworICAgICAgICBFTkQKKyAgICBFTkQKKyAgICBCTE9DSyAiVmFyRmlsZUlu
Zm8iCisgICAgQkVHSU4KKyAgICAgICAgVkFMVUUgIlRyYW5zbGF0aW9uIiwgMHg0MDksIDEyMDAK
KyAgICBFTkQKK0VORAorCisjZW5kaWYgICAgLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzCisv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLworCisKKworI2lmbmRlZiBBUFNUVURJT19JTlZPS0VECisvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLworLy8KKy8vIEdlbmVyYXRlZCBmcm9tIHRoZSBURVhUSU5DTFVERSAz
IHJlc291cmNlLgorLy8KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworI2VuZGlmICAgIC8vIG5v
dCBBUFNUVURJT19JTlZPS0VECkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
RUdML2xpYkVHTC52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJFR0wvbGliRUdMLnZjeHByb2oJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI1OCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8
UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0i
aHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisg
IDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+DQorICAgIDxQcm9qZWN0
Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRp
b24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9y
bT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0
aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0Nv
bmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJv
amVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJS
ZWxlYXNlfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0
aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENv
bmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNl
fHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisg
ICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlv
bj4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0K
KyAgICA8UHJvamVjdEd1aWQ+e0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn08
L1Byb2plY3RHdWlkPg0KKyAgICA8Um9vdE5hbWVzcGFjZT5saWJFR0w8L1Jvb3ROYW1lc3BhY2U+
DQorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4NCisgIDwvUHJvcGVydHlHcm91cD4N
CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1
bHQucHJvcHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hv
bGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisg
IDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlv
biI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlv
blR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Q
cm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4N
CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlw
ZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9s
ZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAg
PC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29m
dC5DcHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdz
Ij4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5
U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2Fs
QXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIg
TGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290
RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhp
c3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMn
KSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisg
IDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9q
ZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMi
IENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9J
bXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAg
IDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3Jt
KS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0
LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9y
bSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1h
Y3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4x
MC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRp
b25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChDb25maWd1
cmF0aW9uKVw8L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3Jl
bWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8
L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0KKyAg
ICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQn
Ij4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQor
ICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj4kKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0KKyAgICA8
TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFNv
bHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJ
bnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxMaW5r
SW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxMaWJyYXJ5UGF0aCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4kKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQorICAgIDxMaWJyYXJ5UGF0aCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChEWFNE
S19ESVIpXGxpYlx4ODY7JChMaWJyYXJ5UGF0aCk8L0xpYnJhcnlQYXRoPg0KKyAgICA8TGlicmFy
eVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj4kKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQorICAgIDxMaWJyYXJ5UGF0aCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChM
aWJyYXJ5UGF0aCk8L0xpYnJhcnlQYXRoPg0KKyAgICA8SW5jbHVkZVBhdGggQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoRFhTREtfRElS
KVxpbmNsdWRlOyQoVkNJbnN0YWxsRGlyKWluY2x1ZGU7JChWQ0luc3RhbGxEaXIpYXRsbWZjXGlu
Y2x1ZGU7JChXaW5kb3dzU2RrRGlyKWluY2x1ZGU7JChGcmFtZXdvcmtTREtEaXIpXGluY2x1ZGU7
PC9JbmNsdWRlUGF0aD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2lu
MzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9P
cHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9q
ZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO0xJQkVH
TF9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDslKFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxS
ZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+
RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGli
cmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21w
aWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5n
TGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+
dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1h
dD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2Fi
bGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcw
MjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQor
ICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVu
Y2llcz5kM2Q5LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5k
ZW5jaWVzPg0KKyAgICAgIDxNb2R1bGVEZWZpbml0aW9uRmlsZT5saWJFR0wuZGVmPC9Nb2R1bGVE
ZWZpbml0aW9uRmlsZT4NCisgICAgICA8RGVsYXlMb2FkRExMcz4lKERlbGF5TG9hZERMTHMpPC9E
ZWxheUxvYWRETExzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2Vu
ZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lz
dGVtPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVj
dXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1Rhcmdl
dE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgICAgPFBvc3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxD
b21tYW5kPiU0MGVjaG8gb24NCitta2RpciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZp
Z3VyYXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJFR0wuZGxsIiAiJChQcm9qZWN0RGlyKS4u
XC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJFR0wubGliIiAi
JChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCislNDBlY2hvIG9mZg0K
KzwvQ29tbWFuZD4NCisgICAgPC9Qb3N0QnVpbGRFdmVudD4NCisgIDwvSXRlbURlZmluaXRpb25H
cm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAg
ICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5l
RnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0K
KyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcikvLi47ICQo
UHJvamVjdERpcikvLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz5BTkdMRV9ESVNBQkxFX1RSQUNFO1dJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExM
O0xJQkVHTF9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDtfU0VDVVJF
X1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+
DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+
DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJl
YXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1h
dD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0
MjQ0OzQyNDU7NDUxMjs0NzAyOyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3Bl
Y2lmaWNXYXJuaW5ncz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxB
ZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQzZDkubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8
L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPmxp
YkVHTC5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KKyAgICAgIDxEZWxheUxvYWRETExzPiUo
RGVsYXlMb2FkRExMcyk8L0RlbGF5TG9hZERMTHM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZv
cm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3Rl
bT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9P
cHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5h
YmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAg
ICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNo
aW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQb3N0QnVpbGRFdmVu
dD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJvamVjdERpcikuLlwu
LlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliRUdMLmRsbCIgIiQo
UHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIp
bGliRUdMLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQor
JTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0
ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICA8TWlkbD4N
CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAg
PC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8
L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFBy
b2plY3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEw7TElC
RUdMX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUoUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1h
bFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNr
cz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVM
aWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5p
bmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2Fy
bmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOyUoRGlzYWJsZVNw
ZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgICA8RGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5k
ZW5jaWVzPmQzZDkubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBl
bmRlbmNpZXM+DQorICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkVHTC5kZWY8L01vZHVs
ZURlZmluaXRpb25GaWxlPg0KKyAgICAgIDxEZWxheUxvYWRETExzPiUoRGVsYXlMb2FkRExMcyk8
L0RlbGF5TG9hZERMTHM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9H
ZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJT
eXN0ZW0+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4
ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFy
Z2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+DQorICAgICAg
PENvbW1hbmQ+JTQwZWNobyBvbg0KK21rZGlyICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29u
ZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxpYkVHTC5kbGwiICIkKFByb2plY3REaXIp
Li5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxpYkVHTC5saWIi
ICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KKyU0MGVjaG8gb2Zm
DQorPC9Db21tYW5kPg0KKyAgICA8L1Bvc3RCdWlsZEV2ZW50Pg0KKyAgPC9JdGVtRGVmaW5pdGlv
bkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8
VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0K
KyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXph
dGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGlu
ZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PiQoUHJvamVjdERpcikvLi47ICQoUHJvamVjdERpcikvLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRM
TDtMSUJFR0xfRVhQT1JUUztfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7X1NFQ1VS
RV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5
Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVy
Pg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPERp
c2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7
NDcwMjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+
DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0
V2FybmluZ0FzRXJyb3I+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8
QWRkaXRpb25hbERlcGVuZGVuY2llcz5kM2Q5LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMp
PC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxNb2R1bGVEZWZpbml0aW9uRmlsZT5s
aWJFR0wuZGVmPC9Nb2R1bGVEZWZpbml0aW9uRmlsZT4NCisgICAgICA8RGVsYXlMb2FkRExMcz4l
KERlbGF5TG9hZERMTHMpPC9EZWxheUxvYWRETExzPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5m
b3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0
ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwv
T3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0Vu
YWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAg
ICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFj
aGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgICA8UG9zdEJ1aWxkRXZl
bnQ+DQorICAgICAgPENvbW1hbmQ+JTQwZWNobyBvbg0KK21rZGlyICIkKFByb2plY3REaXIpLi5c
Li5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxpYkVHTC5kbGwiICIk
KFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGly
KWxpYkVHTC5saWIiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0K
KyU0MGVjaG8gb2ZmDQorPC9Db21tYW5kPg0KKyAgICA8L1Bvc3RCdWlsZEV2ZW50Pg0KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJDb25maWcuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxk
ZWJ1Zy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlzcGxheS5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibGliRUdMLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJtYWluLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTdXJmYWNlLmNw
cCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJDb25maWcuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJEaXNwbGF5Lmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxFR0xcZWdsLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxFR0xcZWdsZXh0LmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxFR0xcZWdscGxhdGZvcm0u
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJtYWluLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVzb3VyY2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTdXJm
YWNlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXHZlcnNpb24uaCIg
Lz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPE5vbmUgSW5jbHVkZT0i
bGliRUdMLmRlZiIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPFJl
c291cmNlQ29tcGlsZSBJbmNsdWRlPSJsaWJFR0wucmMiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisg
IDxJdGVtR3JvdXA+DQorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXGxpYkdMRVN2
MlxsaWJHTEVTdjIudmN4cHJvaiI+DQorICAgICAgPFByb2plY3Q+e2I1ODcxYTdhLTk2OGMtNDJl
My1hMzNiLTk4MWU2ZjQ0OGU3OH08L1Byb2plY3Q+DQorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4N
CisgIDwvSXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1p
Y3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9u
VGFyZ2V0cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xp
YkVHTC52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkVHTC9saWJFR0wudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wudmN4cHJvai5maWx0ZXJzCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDov
L3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVt
R3JvdXA+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4NCisgICAgICA8VW5p
cXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5p
cXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtp
ZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxG
aWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57
OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4N
CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+
DQorICAgIDwvRmlsdGVyPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IkNvbmZpZy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXENvbW1vblxkZWJ1Zy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpc3BsYXku
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJsaWJFR0wuY3BwIj4NCisgICAgICA8Rmls
dGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJtYWluLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU3VyZmFj
ZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xD
b21waWxlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IkNvbmZpZy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJEaXNwbGF5Lmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcRUdMXGVnbC5oIj4NCisg
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2xleHQuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxFR0xcZWdscGxhdGZvcm0uaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibWFpbi5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJyZXNvdXJjZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTdXJmYWNlLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblx2ZXJzaW9uLmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgPC9JdGVtR3Jv
dXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9ImxpYkVH
TC5yYyIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPE5vbmUgSW5j
bHVkZT0ibGliRUdMLmRlZiIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKzwvUHJvamVjdD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliRUdML21haW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJFR0wvbWFpbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliRUdML21haW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2NiBAQAorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworLy8gbWFpbi5jcHA6IERMTCBlbnRyeSBwb2ludCBhbmQgbWFuYWdl
bWVudCBvZiB0aHJlYWQtbG9jYWwgZGF0YS4KKworI2luY2x1ZGUgImxpYkVHTC9tYWluLmgiCisK
KyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworc3RhdGljIERXT1JEIGN1cnJlbnRUTFMgPSBU
TFNfT1VUX09GX0lOREVYRVM7CisKK2V4dGVybiAiQyIgQk9PTCBXSU5BUEkgRGxsTWFpbihISU5T
VEFOQ0UgaW5zdGFuY2UsIERXT1JEIHJlYXNvbiwgTFBWT0lEIHJlc2VydmVkKQoreworICAgIHN3
aXRjaCAocmVhc29uKQorICAgIHsKKyAgICAgIGNhc2UgRExMX1BST0NFU1NfQVRUQUNIOgorICAg
ICAgICB7CisjaWYgIWRlZmluZWQoQU5HTEVfRElTQUJMRV9UUkFDRSkKKyAgICAgICAgICAgIEZJ
TEUgKmRlYnVnID0gZm9wZW4oVFJBQ0VfT1VUUFVUX0ZJTEUsICJydCIpOworCisgICAgICAgICAg
ICBpZiAoZGVidWcpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmNsb3NlKGRlYnVn
KTsKKyAgICAgICAgICAgICAgICBkZWJ1ZyA9IGZvcGVuKFRSQUNFX09VVFBVVF9GSUxFLCAid3Qi
KTsgICAvLyBFcmFzZQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChkZWJ1
ZykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZjbG9zZShkZWJ1Zyk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgICAg
IGN1cnJlbnRUTFMgPSBUbHNBbGxvYygpOworCisgICAgICAgICAgICBpZiAoY3VycmVudFRMUyA9
PSBUTFNfT1VUX09GX0lOREVYRVMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIEZBTFNFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIEZhbGwgdGhy
b3VnaHQgdG8gaW5pdGlhbGl6ZSBpbmRleAorICAgICAgY2FzZSBETExfVEhSRUFEX0FUVEFDSDoK
KyAgICAgICAgeworICAgICAgICAgICAgZWdsOjpDdXJyZW50ICpjdXJyZW50ID0gKGVnbDo6Q3Vy
cmVudCopTG9jYWxBbGxvYyhMUFRSLCBzaXplb2YoZWdsOjpDdXJyZW50KSk7CisKKyAgICAgICAg
ICAgIGlmIChjdXJyZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFRsc1NldFZh
bHVlKGN1cnJlbnRUTFMsIGN1cnJlbnQpOworCisgICAgICAgICAgICAgICAgY3VycmVudC0+ZXJy
b3IgPSBFR0xfU1VDQ0VTUzsKKyAgICAgICAgICAgICAgICBjdXJyZW50LT5BUEkgPSBFR0xfT1BF
TkdMX0VTX0FQSTsKKyAgICAgICAgICAgICAgICBjdXJyZW50LT5kaXNwbGF5ID0gRUdMX05PX0RJ
U1BMQVk7CisgICAgICAgICAgICAgICAgY3VycmVudC0+ZHJhd1N1cmZhY2UgPSBFR0xfTk9fU1VS
RkFDRTsKKyAgICAgICAgICAgICAgICBjdXJyZW50LT5yZWFkU3VyZmFjZSA9IEVHTF9OT19TVVJG
QUNFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBETExfVEhSRUFEX0RFVEFDSDoKKyAgICAgICAgeworICAgICAgICAgICAgdm9pZCAqY3VycmVu
dCA9IFRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgICAgICAgICBpZiAoY3VycmVudCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMb2NhbEZyZWUoKEhMT0NBTCljdXJyZW50
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
RExMX1BST0NFU1NfREVUQUNIOgorICAgICAgICB7CisgICAgICAgICAgICB2b2lkICpjdXJyZW50
ID0gVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIExvY2FsRnJlZSgoSExPQ0FMKWN1cnJlbnQp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBUbHNGcmVlKGN1cnJlbnRUTFMpOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK25hbWVzcGFjZSBlZ2wKK3sKK3ZvaWQgc2V0
Q3VycmVudEVycm9yKEVHTGludCBlcnJvcikKK3sKKyAgICBDdXJyZW50ICpjdXJyZW50ID0gKEN1
cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgY3VycmVudC0+ZXJyb3IgPSBl
cnJvcjsKK30KKworRUdMaW50IGdldEN1cnJlbnRFcnJvcigpCit7CisgICAgQ3VycmVudCAqY3Vy
cmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKKworICAgIHJldHVybiBj
dXJyZW50LT5lcnJvcjsKK30KKwordm9pZCBzZXRDdXJyZW50QVBJKEVHTGVudW0gQVBJKQorewor
ICAgIEN1cnJlbnQgKmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7
CisKKyAgICBjdXJyZW50LT5BUEkgPSBBUEk7Cit9CisKK0VHTGVudW0gZ2V0Q3VycmVudEFQSSgp
Cit7CisgICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1ZShjdXJyZW50
VExTKTsKKworICAgIHJldHVybiBjdXJyZW50LT5BUEk7Cit9CisKK3ZvaWQgc2V0Q3VycmVudERp
c3BsYXkoRUdMRGlzcGxheSBkcHkpCit7CisgICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJyZW50
KilUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKKworICAgIGN1cnJlbnQtPmRpc3BsYXkgPSBkcHk7
Cit9CisKK0VHTERpc3BsYXkgZ2V0Q3VycmVudERpc3BsYXkoKQoreworICAgIEN1cnJlbnQgKmN1
cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7CisKKyAgICByZXR1cm4g
Y3VycmVudC0+ZGlzcGxheTsKK30KKwordm9pZCBzZXRDdXJyZW50RHJhd1N1cmZhY2UoRUdMU3Vy
ZmFjZSBzdXJmYWNlKQoreworICAgIEN1cnJlbnQgKmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0
VmFsdWUoY3VycmVudFRMUyk7CisKKyAgICBjdXJyZW50LT5kcmF3U3VyZmFjZSA9IHN1cmZhY2U7
Cit9CisKK0VHTFN1cmZhY2UgZ2V0Q3VycmVudERyYXdTdXJmYWNlKCkKK3sKKyAgICBDdXJyZW50
ICpjdXJyZW50ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgcmV0
dXJuIGN1cnJlbnQtPmRyYXdTdXJmYWNlOworfQorCit2b2lkIHNldEN1cnJlbnRSZWFkU3VyZmFj
ZShFR0xTdXJmYWNlIHN1cmZhY2UpCit7CisgICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJyZW50
KilUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKKworICAgIGN1cnJlbnQtPnJlYWRTdXJmYWNlID0g
c3VyZmFjZTsKK30KKworRUdMU3VyZmFjZSBnZXRDdXJyZW50UmVhZFN1cmZhY2UoKQoreworICAg
IEN1cnJlbnQgKmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7CisK
KyAgICByZXR1cm4gY3VycmVudC0+cmVhZFN1cmZhY2U7Cit9CisKK3ZvaWQgZXJyb3IoRUdMaW50
IGVycm9yQ29kZSkKK3sKKyAgICBlZ2w6OnNldEN1cnJlbnRFcnJvcihlcnJvckNvZGUpOworfQor
Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML21haW4uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML21haW4uaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbWFpbi5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBtYWlu
Lmg6IE1hbmFnZW1lbnQgb2YgdGhyZWFkLWxvY2FsIGRhdGEuCisKKyNpZm5kZWYgTElCRUdMX01B
SU5fSF8KKyNkZWZpbmUgTElCRUdMX01BSU5fSF8KKworI2RlZmluZSBFR0xBUEkKKyNpbmNsdWRl
IDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCituYW1lc3BhY2UgZWdsCit7
CitzdHJ1Y3QgQ3VycmVudAoreworICAgIEVHTGludCBlcnJvcjsKKyAgICBFR0xlbnVtIEFQSTsK
KyAgICBFR0xEaXNwbGF5IGRpc3BsYXk7CisgICAgRUdMU3VyZmFjZSBkcmF3U3VyZmFjZTsKKyAg
ICBFR0xTdXJmYWNlIHJlYWRTdXJmYWNlOworfTsKKwordm9pZCBzZXRDdXJyZW50RXJyb3IoRUdM
aW50IGVycm9yKTsKK0VHTGludCBnZXRDdXJyZW50RXJyb3IoKTsKKwordm9pZCBzZXRDdXJyZW50
QVBJKEVHTGVudW0gQVBJKTsKK0VHTGVudW0gZ2V0Q3VycmVudEFQSSgpOworCit2b2lkIHNldEN1
cnJlbnREaXNwbGF5KEVHTERpc3BsYXkgZHB5KTsKK0VHTERpc3BsYXkgZ2V0Q3VycmVudERpc3Bs
YXkoKTsKKwordm9pZCBzZXRDdXJyZW50RHJhd1N1cmZhY2UoRUdMU3VyZmFjZSBzdXJmYWNlKTsK
K0VHTFN1cmZhY2UgZ2V0Q3VycmVudERyYXdTdXJmYWNlKCk7CisKK3ZvaWQgc2V0Q3VycmVudFJl
YWRTdXJmYWNlKEVHTFN1cmZhY2Ugc3VyZmFjZSk7CitFR0xTdXJmYWNlIGdldEN1cnJlbnRSZWFk
U3VyZmFjZSgpOworCit2b2lkIGVycm9yKEVHTGludCBlcnJvckNvZGUpOworCit0ZW1wbGF0ZTxj
bGFzcyBUPgorY29uc3QgVCAmZXJyb3IoRUdMaW50IGVycm9yQ29kZSwgY29uc3QgVCAmcmV0dXJu
VmFsdWUpCit7CisgICAgZXJyb3IoZXJyb3JDb2RlKTsKKworICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVD4KK2NvbnN0IFQgJnN1Y2Nlc3MoY29uc3QgVCAmcmV0
dXJuVmFsdWUpCit7CisgICAgZWdsOjpzZXRDdXJyZW50RXJyb3IoRUdMX1NVQ0NFU1MpOworCisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit9CisKKyNlbmRpZiAgLy8gTElCRUdMX01BSU5f
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvcmVzb3VyY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML3Jlc291cmNl
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML3Jl
c291cmNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKy8ve3tOT19ERVBFTkRFTkNJ
RVN9fQorLy8gTWljcm9zb2Z0IFZpc3VhbCBDKysgZ2VuZXJhdGVkIGluY2x1ZGUgZmlsZS4KKy8v
IFVzZWQgYnkgbGliRUdMLnJjCisKKy8vIE5leHQgZGVmYXVsdCB2YWx1ZXMgZm9yIG5ldyBvYmpl
Y3RzCisvLyAKKyNpZmRlZiBBUFNUVURJT19JTlZPS0VECisjaWZuZGVmIEFQU1RVRElPX1JFQURP
TkxZX1NZTUJPTFMKKyNkZWZpbmUgX0FQU19ORVhUX1JFU09VUkNFX1ZBTFVFICAgICAgICAxMDEK
KyNkZWZpbmUgX0FQU19ORVhUX0NPTU1BTkRfVkFMVUUgICAgICAgICA0MDAwMQorI2RlZmluZSBf
QVBTX05FWFRfQ09OVFJPTF9WQUxVRSAgICAgICAgIDEwMDEKKyNkZWZpbmUgX0FQU19ORVhUX1NZ
TUVEX1ZBTFVFICAgICAgICAgICAxMDEKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0JpbmFyeVN0cmVhbS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQmluYXJ5U3RyZWFtLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0JpbmFy
eVN0cmVhbS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2NCBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIEJpbmFyeVN0cmVhbS5oOiBQcm92aWRlcyBiaW5hcnkgc2VyaWFsaXphdGlvbiBvZiBzaW1w
bGUgdHlwZXMuCisKKyNpZm5kZWYgTElCR0xFU1YyX0JJTkFSWVNUUkVBTV9IXworI2RlZmluZSBM
SUJHTEVTVjJfQklOQVJZU1RSRUFNX0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5o
IgorCituYW1lc3BhY2UgZ2wKK3sKKworY2xhc3MgQmluYXJ5SW5wdXRTdHJlYW0KK3sKKyAgcHVi
bGljOgorICAgIEJpbmFyeUlucHV0U3RyZWFtKGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW5n
dGgpCisgICAgeworICAgICAgICBtRXJyb3IgPSBmYWxzZTsKKyAgICAgICAgbU9mZnNldCA9IDA7
CisgICAgICAgIG1EYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpOworICAgICAg
ICBtTGVuZ3RoID0gbGVuZ3RoOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgor
ICAgIHZvaWQgcmVhZChUICp2LCBzaXplX3QgbnVtKQorICAgIHsKKyAgICAgICAgdW5pb24KKyAg
ICAgICAgeworICAgICAgICAgICAgVCBkdW1teTsgIC8vIENvbXBpbGF0aW9uIGVycm9yIGZvciBu
b24tdHJpdmlhbCB0eXBlcworICAgICAgICB9IGR1bW15OworICAgICAgICAodm9pZCkgZHVtbXk7
CisKKyAgICAgICAgaWYgKG1FcnJvcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IG51bSAqIHNpemVvZihUKTsKKwor
ICAgICAgICBpZiAobU9mZnNldCArIGxlbmd0aCA+IG1MZW5ndGgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1FcnJvciA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBtZW1jcHkodiwgbURhdGEgKyBtT2Zmc2V0LCBsZW5ndGgpOworICAgICAgICBtT2Zm
c2V0ICs9IGxlbmd0aDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2
b2lkIHJlYWQoVCAqIHYpCisgICAgeworICAgICAgICByZWFkKHYsIDEpOworICAgIH0KKworICAg
IHZvaWQgcmVhZChzdGQ6OnN0cmluZyAqdikKKyAgICB7CisgICAgICAgIHNpemVfdCBsZW5ndGg7
CisgICAgICAgIHJlYWQoJmxlbmd0aCk7CisKKyAgICAgICAgaWYgKG1FcnJvcikKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1PZmZzZXQg
KyBsZW5ndGggPiBtTGVuZ3RoKQorICAgICAgICB7CisgICAgICAgICAgICBtRXJyb3IgPSB0cnVl
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdi0+YXNzaWduKG1E
YXRhICsgbU9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgbU9mZnNldCArPSBsZW5ndGg7CisgICAg
fQorCisgICAgdm9pZCBza2lwKHNpemVfdCBsZW5ndGgpCisgICAgeworICAgICAgICBpZiAobU9m
ZnNldCArIGxlbmd0aCA+IG1MZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1FcnJvciA9
IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtT2Zmc2V0
ICs9IGxlbmd0aDsKKyAgICB9CisKKyAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtT2Zmc2V0OworICAgIH0KKworICAgIGJvb2wgZXJyb3IoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1FcnJvcjsKKyAgICB9CisKKyAgICBib29sIGVuZE9mU3Ry
ZWFtKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtT2Zmc2V0ID09IG1MZW5ndGg7Cisg
ICAgfQorCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEJpbmFyeUlu
cHV0U3RyZWFtKTsKKyAgICBib29sIG1FcnJvcjsKKyAgICBzaXplX3QgbU9mZnNldDsKKyAgICBj
b25zdCBjaGFyICptRGF0YTsKKyAgICBzaXplX3QgbUxlbmd0aDsKK307CisKK2NsYXNzIEJpbmFy
eU91dHB1dFN0cmVhbQoreworICBwdWJsaWM6CisgICAgQmluYXJ5T3V0cHV0U3RyZWFtKCkKKyAg
ICB7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCB3cml0ZShj
b25zdCBUICp2LCBzaXplX3QgbnVtKQorICAgIHsKKyAgICAgICAgdW5pb24KKyAgICAgICAgewor
ICAgICAgICAgICAgVCBkdW1teTsgIC8vIENvbXBpbGF0aW9uIGVycm9yIGZvciBub24tdHJpdmlh
bCB0eXBlcworICAgICAgICB9IGR1bW15OworICAgICAgICAodm9pZCkgZHVtbXk7CisKKyAgICAg
ICAgY29uc3QgY2hhciAqYXNCeXRlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHYp
OworICAgICAgICBtRGF0YS5pbnNlcnQobURhdGEuZW5kKCksIGFzQnl0ZXMsIGFzQnl0ZXMgKyBu
dW0gKiBzaXplb2YoVCkpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAg
IHZvaWQgd3JpdGUoY29uc3QgVCAmdikKKyAgICB7CisgICAgICAgIHdyaXRlKCZ2LCAxKTsKKyAg
ICB9CisKKyAgICB2b2lkIHdyaXRlKGNvbnN0IHN0ZDo6c3RyaW5nICZ2KQorICAgIHsKKyAgICAg
ICAgc2l6ZV90IGxlbmd0aCA9IHYubGVuZ3RoKCk7CisgICAgICAgIHdyaXRlKGxlbmd0aCk7CisK
KyAgICAgICAgd3JpdGUodi5jX3N0cigpLCBsZW5ndGgpOworICAgIH0KKworICAgIHNpemVfdCBs
ZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1EYXRhLnNpemUoKTsKKyAgICB9
CisKKyAgICBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
RGF0YS5zaXplKCkgPyAmbURhdGFbMF0gOiBOVUxMOworICAgIH0KKworICBwcml2YXRlOgorICAg
IERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihCaW5hcnlPdXRwdXRTdHJlYW0pOworICAgIHN0ZDo6
dmVjdG9yPGNoYXI+IG1EYXRhOworfTsKK30KKworI2VuZGlmICAvLyBMSUJHTEVTVjJfQklOQVJZ
U1RSRUFNX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0J1
ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9CdWZmZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9CdWZmZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExOSBAQAor
I2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBCdWZmZXIu
Y3BwOiBJbXBsZW1lbnRzIHRoZSBnbDo6QnVmZmVyIGNsYXNzLCByZXByZXNlbnRpbmcgc3RvcmFn
ZSBvZiB2ZXJ0ZXggYW5kL29yCisvLyBpbmRleCBkYXRhLiBJbXBsZW1lbnRzIEdMIGJ1ZmZlciBv
YmplY3RzIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCisvLyBbT3BlbkdMIEVTIDIuMC4yNF0g
c2VjdGlvbiAyLjkgcGFnZSAyMS4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9CdWZmZXIuaCIKKwor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIuaCIKKyNpbmNsdWRlICJs
aWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5k
ZXJlci5oIgorCituYW1lc3BhY2UgZ2wKK3sKKworQnVmZmVyOjpCdWZmZXIocng6OlJlbmRlcmVy
ICpyZW5kZXJlciwgR0x1aW50IGlkKSA6IFJlZkNvdW50T2JqZWN0KGlkKQoreworICAgIG1SZW5k
ZXJlciA9IHJlbmRlcmVyOworICAgIG1Vc2FnZSA9IEdMX0RZTkFNSUNfRFJBVzsKKworICAgIG1C
dWZmZXJTdG9yYWdlID0gcmVuZGVyZXItPmNyZWF0ZUJ1ZmZlclN0b3JhZ2UoKTsKKyAgICBtU3Rh
dGljVmVydGV4QnVmZmVyID0gTlVMTDsKKyAgICBtU3RhdGljSW5kZXhCdWZmZXIgPSBOVUxMOwor
ICAgIG1Vbm1vZGlmaWVkRGF0YVVzZSA9IDA7Cit9CisKK0J1ZmZlcjo6fkJ1ZmZlcigpCit7Cisg
ICAgZGVsZXRlIG1CdWZmZXJTdG9yYWdlOworICAgIGRlbGV0ZSBtU3RhdGljVmVydGV4QnVmZmVy
OworICAgIGRlbGV0ZSBtU3RhdGljSW5kZXhCdWZmZXI7Cit9CisKK3ZvaWQgQnVmZmVyOjpidWZm
ZXJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xlbnVtIHVzYWdlKQor
eworICAgIG1CdWZmZXJTdG9yYWdlLT5jbGVhcigpOworICAgIG1CdWZmZXJTdG9yYWdlLT5zZXRE
YXRhKGRhdGEsIHNpemUsIDApOworCisgICAgbVVzYWdlID0gdXNhZ2U7CisKKyAgICBpbnZhbGlk
YXRlU3RhdGljRGF0YSgpOworCisgICAgaWYgKHVzYWdlID09IEdMX1NUQVRJQ19EUkFXKQorICAg
IHsKKyAgICAgICAgbVN0YXRpY1ZlcnRleEJ1ZmZlciA9IG5ldyByeDo6U3RhdGljVmVydGV4QnVm
ZmVySW50ZXJmYWNlKG1SZW5kZXJlcik7CisgICAgICAgIG1TdGF0aWNJbmRleEJ1ZmZlciA9IG5l
dyByeDo6U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UobVJlbmRlcmVyKTsKKyAgICB9Cit9CisK
K3ZvaWQgQnVmZmVyOjpidWZmZXJTdWJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIg
c2l6ZSwgR0xpbnRwdHIgb2Zmc2V0KQoreworICAgIG1CdWZmZXJTdG9yYWdlLT5zZXREYXRhKGRh
dGEsIHNpemUsIG9mZnNldCk7CisKKyAgICBpZiAoKG1TdGF0aWNWZXJ0ZXhCdWZmZXIgJiYgbVN0
YXRpY1ZlcnRleEJ1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpICE9IDApIHx8IChtU3RhdGljSW5kZXhC
dWZmZXIgJiYgbVN0YXRpY0luZGV4QnVmZmVyLT5nZXRCdWZmZXJTaXplKCkgIT0gMCkpCisgICAg
eworICAgICAgICBpbnZhbGlkYXRlU3RhdGljRGF0YSgpOworICAgIH0KKworICAgIG1Vbm1vZGlm
aWVkRGF0YVVzZSA9IDA7Cit9CisKK3J4OjpCdWZmZXJTdG9yYWdlICpCdWZmZXI6OmdldFN0b3Jh
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBtQnVmZmVyU3RvcmFnZTsKK30KKwordW5zaWduZWQg
aW50IEJ1ZmZlcjo6c2l6ZSgpCit7CisgICAgcmV0dXJuIG1CdWZmZXJTdG9yYWdlLT5nZXRTaXpl
KCk7Cit9CisKK0dMZW51bSBCdWZmZXI6OnVzYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVVz
YWdlOworfQorCityeDo6U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlICpCdWZmZXI6OmdldFN0
YXRpY1ZlcnRleEJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1TdGF0aWNWZXJ0ZXhCdWZmZXI7Cit9
CisKK3J4OjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSAqQnVmZmVyOjpnZXRTdGF0aWNJbmRl
eEJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1TdGF0aWNJbmRleEJ1ZmZlcjsKK30KKwordm9pZCBC
dWZmZXI6OmludmFsaWRhdGVTdGF0aWNEYXRhKCkKK3sKKyAgICBkZWxldGUgbVN0YXRpY1ZlcnRl
eEJ1ZmZlcjsKKyAgICBtU3RhdGljVmVydGV4QnVmZmVyID0gTlVMTDsKKworICAgIGRlbGV0ZSBt
U3RhdGljSW5kZXhCdWZmZXI7CisgICAgbVN0YXRpY0luZGV4QnVmZmVyID0gTlVMTDsKKworICAg
IG1Vbm1vZGlmaWVkRGF0YVVzZSA9IDA7Cit9CisKKy8vIENyZWF0ZXMgc3RhdGljIGJ1ZmZlcnMg
aWYgc3VmZmljaWVudCB1c2VkIGRhdGEgaGFzIGJlZW4gbGVmdCB1bm1vZGlmaWVkCit2b2lkIEJ1
ZmZlcjo6cHJvbW90ZVN0YXRpY1VzYWdlKGludCBkYXRhU2l6ZSkKK3sKKyAgICBpZiAoIW1TdGF0
aWNWZXJ0ZXhCdWZmZXIgJiYgIW1TdGF0aWNJbmRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1V
bm1vZGlmaWVkRGF0YVVzZSArPSBkYXRhU2l6ZTsKKworICAgICAgICBpZiAobVVubW9kaWZpZWRE
YXRhVXNlID4gMyAqIG1CdWZmZXJTdG9yYWdlLT5nZXRTaXplKCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1TdGF0aWNWZXJ0ZXhCdWZmZXIgPSBuZXcgcng6OlN0YXRpY1ZlcnRleEJ1ZmZlcklu
dGVyZmFjZShtUmVuZGVyZXIpOworICAgICAgICAgICAgbVN0YXRpY0luZGV4QnVmZmVyID0gbmV3
IHJ4OjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZShtUmVuZGVyZXIpOworICAgICAgICB9Cisg
ICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvQnVmZmVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL0J1ZmZlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisvLyBCdWZmZXIuaDogRGVmaW5lcyB0aGUgZ2w6OkJ1ZmZlciBjbGFz
cywgcmVwcmVzZW50aW5nIHN0b3JhZ2Ugb2YgdmVydGV4IGFuZC9vcgorLy8gaW5kZXggZGF0YS4g
SW1wbGVtZW50cyBHTCBidWZmZXIgb2JqZWN0cyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5Lgor
Ly8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMi45IHBhZ2UgMjEuCisKKyNpZm5kZWYgTElC
R0xFU1YyX0JVRkZFUl9IXworI2RlZmluZSBMSUJHTEVTVjJfQlVGRkVSX0hfCisKKyNpbmNsdWRl
ICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNvbW1vbi9SZWZDb3VudE9iamVjdC5o
IgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOworY2xhc3MgQnVmZmVyU3RvcmFn
ZTsKK2NsYXNzIFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlOworY2xhc3MgU3RhdGljVmVydGV4
QnVmZmVySW50ZXJmYWNlOworfTsKKworbmFtZXNwYWNlIGdsCit7CisKK2NsYXNzIEJ1ZmZlciA6
IHB1YmxpYyBSZWZDb3VudE9iamVjdAoreworICBwdWJsaWM6CisgICAgQnVmZmVyKHJ4OjpSZW5k
ZXJlciAqcmVuZGVyZXIsIEdMdWludCBpZCk7CisKKyAgICB2aXJ0dWFsIH5CdWZmZXIoKTsKKwor
ICAgIHZvaWQgYnVmZmVyRGF0YShjb25zdCB2b2lkICpkYXRhLCBHTHNpemVpcHRyIHNpemUsIEdM
ZW51bSB1c2FnZSk7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIEdM
c2l6ZWlwdHIgc2l6ZSwgR0xpbnRwdHIgb2Zmc2V0KTsKKworICAgIEdMZW51bSB1c2FnZSgpIGNv
bnN0OworCisgICAgcng6OkJ1ZmZlclN0b3JhZ2UgKmdldFN0b3JhZ2UoKSBjb25zdDsKKyAgICB1
bnNpZ25lZCBpbnQgc2l6ZSgpOworCisgICAgcng6OlN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFj
ZSAqZ2V0U3RhdGljVmVydGV4QnVmZmVyKCk7CisgICAgcng6OlN0YXRpY0luZGV4QnVmZmVySW50
ZXJmYWNlICpnZXRTdGF0aWNJbmRleEJ1ZmZlcigpOworICAgIHZvaWQgaW52YWxpZGF0ZVN0YXRp
Y0RhdGEoKTsKKyAgICB2b2lkIHByb21vdGVTdGF0aWNVc2FnZShpbnQgZGF0YVNpemUpOworCisg
IHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEJ1ZmZlcik7CisKKyAgICBy
eDo6UmVuZGVyZXIgKm1SZW5kZXJlcjsKKyAgICBHTGVudW0gbVVzYWdlOworCisgICAgcng6OkJ1
ZmZlclN0b3JhZ2UgKm1CdWZmZXJTdG9yYWdlOworCisgICAgcng6OlN0YXRpY1ZlcnRleEJ1ZmZl
ckludGVyZmFjZSAqbVN0YXRpY1ZlcnRleEJ1ZmZlcjsKKyAgICByeDo6U3RhdGljSW5kZXhCdWZm
ZXJJbnRlcmZhY2UgKm1TdGF0aWNJbmRleEJ1ZmZlcjsKKyAgICB1bnNpZ25lZCBpbnQgbVVubW9k
aWZpZWREYXRhVXNlOworfTsKKworfQorCisjZW5kaWYgICAvLyBMSUJHTEVTVjJfQlVGRkVSX0hf
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0NvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL0NvbnRleHQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5NzIgQEAKKyNpbmNs
dWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gQ29udGV4dC5jcHA6
IEltcGxlbWVudHMgdGhlIGdsOjpDb250ZXh0IGNsYXNzLCBtYW5hZ2luZyBhbGwgR0wgc3RhdGUg
YW5kIHBlcmZvcm1pbmcKKy8vIHJlbmRlcmluZyBvcGVyYXRpb25zLiBJdCBpcyB0aGUgR0xFUzIg
c3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgRUdMQ29udGV4dC4KKworI2luY2x1ZGUgImxpYkdM
RVN2Mi9Db250ZXh0LmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvQnVmZmVyLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL0ZlbmNlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0ZyYW1lYnVm
ZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9Qcm9ncmFtLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvUXVlcnkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvVGV4dHVy
ZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJs
aWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyZXIuaCIKKworI2luY2x1ZGUgImxpYkVHTC9TdXJmYWNlLmgiCisKKyN1bmRlZiBuZWFy
CisjdW5kZWYgZmFyCisKK25hbWVzcGFjZSBnbAoreworc3RhdGljIGNvbnN0IGNoYXIqIG1ha2VT
dGF0aWNTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikKK3sKKyAgICBzdGF0aWMgc3RkOjpz
ZXQ8c3RkOjpzdHJpbmc+IHN0cmluZ3M7CisgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+OjppdGVy
YXRvciBpdCA9IHN0cmluZ3MuZmluZChzdHIpOworICAgIGlmIChpdCAhPSBzdHJpbmdzLmVuZCgp
KQorICAgICAgcmV0dXJuIGl0LT5jX3N0cigpOworCisgICAgcmV0dXJuIHN0cmluZ3MuaW5zZXJ0
KHN0cikuZmlyc3QtPmNfc3RyKCk7Cit9CisKK0NvbnRleHQ6OkNvbnRleHQoY29uc3QgZ2w6OkNv
bnRleHQgKnNoYXJlQ29udGV4dCwgcng6OlJlbmRlcmVyICpyZW5kZXJlciwgYm9vbCBub3RpZnlS
ZXNldHMsIGJvb2wgcm9idXN0QWNjZXNzKSA6IG1SZW5kZXJlcihyZW5kZXJlcikKK3sKKyAgICBB
U1NFUlQocm9idXN0QWNjZXNzID09IGZhbHNlKTsgICAvLyBVbmltcGxlbWVudGVkCisKKyAgICBt
RmVuY2VIYW5kbGVBbGxvY2F0b3Iuc2V0QmFzZUhhbmRsZSgwKTsKKworICAgIHNldENsZWFyQ29s
b3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7CisKKyAgICBtU3RhdGUuZGVwdGhDbGVhclZhbHVl
ID0gMS4wZjsKKyAgICBtU3RhdGUuc3RlbmNpbENsZWFyVmFsdWUgPSAwOworCisgICAgbVN0YXRl
LnJhc3Rlcml6ZXIuY3VsbEZhY2UgPSBmYWxzZTsKKyAgICBtU3RhdGUucmFzdGVyaXplci5jdWxs
TW9kZSA9IEdMX0JBQ0s7CisgICAgbVN0YXRlLnJhc3Rlcml6ZXIuZnJvbnRGYWNlID0gR0xfQ0NX
OworICAgIG1TdGF0ZS5yYXN0ZXJpemVyLnBvbHlnb25PZmZzZXRGaWxsID0gZmFsc2U7CisgICAg
bVN0YXRlLnJhc3Rlcml6ZXIucG9seWdvbk9mZnNldEZhY3RvciA9IDAuMGY7CisgICAgbVN0YXRl
LnJhc3Rlcml6ZXIucG9seWdvbk9mZnNldFVuaXRzID0gMC4wZjsKKyAgICBtU3RhdGUucmFzdGVy
aXplci5wb2ludERyYXdNb2RlID0gZmFsc2U7CisgICAgbVN0YXRlLnJhc3Rlcml6ZXIubXVsdGlT
YW1wbGUgPSBmYWxzZTsKKyAgICBtU3RhdGUuc2Npc3NvclRlc3QgPSBmYWxzZTsKKyAgICBtU3Rh
dGUuc2Npc3Nvci54ID0gMDsKKyAgICBtU3RhdGUuc2Npc3Nvci55ID0gMDsKKyAgICBtU3RhdGUu
c2Npc3Nvci53aWR0aCA9IDA7CisgICAgbVN0YXRlLnNjaXNzb3IuaGVpZ2h0ID0gMDsKKworICAg
IG1TdGF0ZS5ibGVuZC5ibGVuZCA9IGZhbHNlOworICAgIG1TdGF0ZS5ibGVuZC5zb3VyY2VCbGVu
ZFJHQiA9IEdMX09ORTsKKyAgICBtU3RhdGUuYmxlbmQuc291cmNlQmxlbmRBbHBoYSA9IEdMX09O
RTsKKyAgICBtU3RhdGUuYmxlbmQuZGVzdEJsZW5kUkdCID0gR0xfWkVSTzsKKyAgICBtU3RhdGUu
YmxlbmQuZGVzdEJsZW5kQWxwaGEgPSBHTF9aRVJPOworICAgIG1TdGF0ZS5ibGVuZC5ibGVuZEVx
dWF0aW9uUkdCID0gR0xfRlVOQ19BREQ7CisgICAgbVN0YXRlLmJsZW5kLmJsZW5kRXF1YXRpb25B
bHBoYSA9IEdMX0ZVTkNfQUREOworICAgIG1TdGF0ZS5ibGVuZC5zYW1wbGVBbHBoYVRvQ292ZXJh
Z2UgPSBmYWxzZTsKKyAgICBtU3RhdGUuYmxlbmQuZGl0aGVyID0gdHJ1ZTsKKworICAgIG1TdGF0
ZS5ibGVuZENvbG9yLnJlZCA9IDA7CisgICAgbVN0YXRlLmJsZW5kQ29sb3IuZ3JlZW4gPSAwOwor
ICAgIG1TdGF0ZS5ibGVuZENvbG9yLmJsdWUgPSAwOworICAgIG1TdGF0ZS5ibGVuZENvbG9yLmFs
cGhhID0gMDsKKworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuZGVwdGhUZXN0ID0gZmFsc2U7Cisg
ICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5kZXB0aEZ1bmMgPSBHTF9MRVNTOworICAgIG1TdGF0ZS5k
ZXB0aFN0ZW5jaWwuZGVwdGhNYXNrID0gdHJ1ZTsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0
ZW5jaWxUZXN0ID0gZmFsc2U7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsRnVuYyA9
IEdMX0FMV0FZUzsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxNYXNrID0gLTE7Cisg
ICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsV3JpdGVtYXNrID0gLTE7CisgICAgbVN0YXRl
LmRlcHRoU3RlbmNpbC5zdGVuY2lsQmFja0Z1bmMgPSBHTF9BTFdBWVM7CisgICAgbVN0YXRlLmRl
cHRoU3RlbmNpbC5zdGVuY2lsQmFja01hc2sgPSAtIDE7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNp
bC5zdGVuY2lsQmFja1dyaXRlbWFzayA9IC0xOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3Rl
bmNpbEZhaWwgPSBHTF9LRUVQOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbFBhc3NE
ZXB0aEZhaWwgPSBHTF9LRUVQOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbFBhc3NE
ZXB0aFBhc3MgPSBHTF9LRUVQOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tG
YWlsID0gR0xfS0VFUDsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxCYWNrUGFzc0Rl
cHRoRmFpbCA9IEdMX0tFRVA7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsQmFja1Bh
c3NEZXB0aFBhc3MgPSBHTF9LRUVQOworCisgICAgbVN0YXRlLnN0ZW5jaWxSZWYgPSAwOworICAg
IG1TdGF0ZS5zdGVuY2lsQmFja1JlZiA9IDA7CisKKyAgICBtU3RhdGUuc2FtcGxlQ292ZXJhZ2Ug
PSBmYWxzZTsKKyAgICBtU3RhdGUuc2FtcGxlQ292ZXJhZ2VWYWx1ZSA9IDEuMGY7CisgICAgbVN0
YXRlLnNhbXBsZUNvdmVyYWdlSW52ZXJ0ID0gZmFsc2U7CisgICAgbVN0YXRlLmdlbmVyYXRlTWlw
bWFwSGludCA9IEdMX0RPTlRfQ0FSRTsKKyAgICBtU3RhdGUuZnJhZ21lbnRTaGFkZXJEZXJpdmF0
aXZlSGludCA9IEdMX0RPTlRfQ0FSRTsKKworICAgIG1TdGF0ZS5saW5lV2lkdGggPSAxLjBmOwor
CisgICAgbVN0YXRlLnZpZXdwb3J0LnggPSAwOworICAgIG1TdGF0ZS52aWV3cG9ydC55ID0gMDsK
KyAgICBtU3RhdGUudmlld3BvcnQud2lkdGggPSAwOworICAgIG1TdGF0ZS52aWV3cG9ydC5oZWln
aHQgPSAwOworICAgIG1TdGF0ZS56TmVhciA9IDAuMGY7CisgICAgbVN0YXRlLnpGYXIgPSAxLjBm
OworCisgICAgbVN0YXRlLmJsZW5kLmNvbG9yTWFza1JlZCA9IHRydWU7CisgICAgbVN0YXRlLmJs
ZW5kLmNvbG9yTWFza0dyZWVuID0gdHJ1ZTsKKyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQmx1
ZSA9IHRydWU7CisgICAgbVN0YXRlLmJsZW5kLmNvbG9yTWFza0FscGhhID0gdHJ1ZTsKKworICAg
IGlmIChzaGFyZUNvbnRleHQgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIG1SZXNvdXJjZU1hbmFn
ZXIgPSBzaGFyZUNvbnRleHQtPm1SZXNvdXJjZU1hbmFnZXI7CisgICAgICAgIG1SZXNvdXJjZU1h
bmFnZXItPmFkZFJlZigpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtUmVzb3Vy
Y2VNYW5hZ2VyID0gbmV3IFJlc291cmNlTWFuYWdlcihtUmVuZGVyZXIpOworICAgIH0KKworICAg
IC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDMuNyBwYWdlIDgzOgorICAgIC8vIEluIHRo
ZSBpbml0aWFsIHN0YXRlLCBURVhUVVJFXzJEIGFuZCBURVhUVVJFX0NVQkVfTUFQIGhhdmUgdHdv
ZGltZW5zaW9uYWwKKyAgICAvLyBhbmQgY3ViZSBtYXAgdGV4dHVyZSBzdGF0ZSB2ZWN0b3JzIHJl
c3BlY3RpdmVseSBhc3NvY2lhdGVkIHdpdGggdGhlbS4KKyAgICAvLyBJbiBvcmRlciB0aGF0IGFj
Y2VzcyB0byB0aGVzZSBpbml0aWFsIHRleHR1cmVzIG5vdCBiZSBsb3N0LCB0aGV5IGFyZSB0cmVh
dGVkIGFzIHRleHR1cmUKKyAgICAvLyBvYmplY3RzIGFsbCBvZiB3aG9zZSBuYW1lcyBhcmUgMC4K
KworICAgIG1UZXh0dXJlMkRaZXJvLnNldChuZXcgVGV4dHVyZTJEKG1SZW5kZXJlciwgMCkpOwor
ICAgIG1UZXh0dXJlQ3ViZU1hcFplcm8uc2V0KG5ldyBUZXh0dXJlQ3ViZU1hcChtUmVuZGVyZXIs
IDApKTsKKworICAgIG1TdGF0ZS5hY3RpdmVTYW1wbGVyID0gMDsKKyAgICBiaW5kQXJyYXlCdWZm
ZXIoMCk7CisgICAgYmluZEVsZW1lbnRBcnJheUJ1ZmZlcigwKTsKKyAgICBiaW5kVGV4dHVyZUN1
YmVNYXAoMCk7CisgICAgYmluZFRleHR1cmUyRCgwKTsKKyAgICBiaW5kUmVhZEZyYW1lYnVmZmVy
KDApOworICAgIGJpbmREcmF3RnJhbWVidWZmZXIoMCk7CisgICAgYmluZFJlbmRlcmJ1ZmZlcigw
KTsKKworICAgIG1TdGF0ZS5jdXJyZW50UHJvZ3JhbSA9IDA7CisgICAgbUN1cnJlbnRQcm9ncmFt
QmluYXJ5LnNldChOVUxMKTsKKworICAgIG1TdGF0ZS5wYWNrQWxpZ25tZW50ID0gNDsKKyAgICBt
U3RhdGUudW5wYWNrQWxpZ25tZW50ID0gNDsKKyAgICBtU3RhdGUucGFja1JldmVyc2VSb3dPcmRl
ciA9IGZhbHNlOworCisgICAgbUV4dGVuc2lvblN0cmluZyA9IE5VTEw7CisgICAgbVJlbmRlcmVy
U3RyaW5nID0gTlVMTDsKKworICAgIG1JbnZhbGlkRW51bSA9IGZhbHNlOworICAgIG1JbnZhbGlk
VmFsdWUgPSBmYWxzZTsKKyAgICBtSW52YWxpZE9wZXJhdGlvbiA9IGZhbHNlOworICAgIG1PdXRP
Zk1lbW9yeSA9IGZhbHNlOworICAgIG1JbnZhbGlkRnJhbWVidWZmZXJPcGVyYXRpb24gPSBmYWxz
ZTsKKworICAgIG1IYXNCZWVuQ3VycmVudCA9IGZhbHNlOworICAgIG1Db250ZXh0TG9zdCA9IGZh
bHNlOworICAgIG1SZXNldFN0YXR1cyA9IEdMX05PX0VSUk9SOworICAgIG1SZXNldFN0cmF0ZWd5
ID0gKG5vdGlmeVJlc2V0cyA/IEdMX0xPU0VfQ09OVEVYVF9PTl9SRVNFVF9FWFQgOiBHTF9OT19S
RVNFVF9OT1RJRklDQVRJT05fRVhUKTsKKyAgICBtUm9idXN0QWNjZXNzID0gcm9idXN0QWNjZXNz
OworCisgICAgbVN1cHBvcnRzQkdSQVRleHR1cmVzID0gZmFsc2U7CisgICAgbVN1cHBvcnRzRFhU
MVRleHR1cmVzID0gZmFsc2U7CisgICAgbVN1cHBvcnRzRFhUM1RleHR1cmVzID0gZmFsc2U7Cisg
ICAgbVN1cHBvcnRzRFhUNVRleHR1cmVzID0gZmFsc2U7CisgICAgbVN1cHBvcnRzRXZlbnRRdWVy
aWVzID0gZmFsc2U7CisgICAgbVN1cHBvcnRzT2NjbHVzaW9uUXVlcmllcyA9IGZhbHNlOworICAg
IG1OdW1Db21wcmVzc2VkVGV4dHVyZUZvcm1hdHMgPSAwOworfQorCitDb250ZXh0Ojp+Q29udGV4
dCgpCit7CisgICAgaWYgKG1TdGF0ZS5jdXJyZW50UHJvZ3JhbSAhPSAwKQorICAgIHsKKyAgICAg
ICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFByb2dyYW0o
bVN0YXRlLmN1cnJlbnRQcm9ncmFtKTsKKyAgICAgICAgaWYgKHByb2dyYW1PYmplY3QpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHByb2dyYW1PYmplY3QtPnJlbGVhc2UoKTsKKyAgICAgICAgfQor
ICAgICAgICBtU3RhdGUuY3VycmVudFByb2dyYW0gPSAwOworICAgIH0KKyAgICBtQ3VycmVudFBy
b2dyYW1CaW5hcnkuc2V0KE5VTEwpOworCisgICAgd2hpbGUgKCFtRnJhbWVidWZmZXJNYXAuZW1w
dHkoKSkKKyAgICB7CisgICAgICAgIGRlbGV0ZUZyYW1lYnVmZmVyKG1GcmFtZWJ1ZmZlck1hcC5i
ZWdpbigpLT5maXJzdCk7CisgICAgfQorCisgICAgd2hpbGUgKCFtRmVuY2VNYXAuZW1wdHkoKSkK
KyAgICB7CisgICAgICAgIGRlbGV0ZUZlbmNlKG1GZW5jZU1hcC5iZWdpbigpLT5maXJzdCk7Cisg
ICAgfQorCisgICAgd2hpbGUgKCFtUXVlcnlNYXAuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGRl
bGV0ZVF1ZXJ5KG1RdWVyeU1hcC5iZWdpbigpLT5maXJzdCk7CisgICAgfQorCisgICAgZm9yIChp
bnQgdHlwZSA9IDA7IHR5cGUgPCBURVhUVVJFX1RZUEVfQ09VTlQ7IHR5cGUrKykKKyAgICB7Cisg
ICAgICAgIGZvciAoaW50IHNhbXBsZXIgPSAwOyBzYW1wbGVyIDwgSU1QTEVNRU5UQVRJT05fTUFY
X0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFM7IHNhbXBsZXIrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgbVN0YXRlLnNhbXBsZXJUZXh0dXJlW3R5cGVdW3NhbXBsZXJdLnNldChOVUxMKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoaW50IHR5cGUgPSAwOyB0eXBlIDwgVEVYVFVS
RV9UWVBFX0NPVU5UOyB0eXBlKyspCisgICAgeworICAgICAgICBtSW5jb21wbGV0ZVRleHR1cmVz
W3R5cGVdLnNldChOVUxMKTsKKyAgICB9CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9W
RVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0
ZVtpXS5tQm91bmRCdWZmZXIuc2V0KE5VTEwpOworICAgIH0KKworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgUVVFUllfVFlQRV9DT1VOVDsgaSsrKQorICAgIHsKKyAgICAgICAgbVN0YXRlLmFjdGl2
ZVF1ZXJ5W2ldLnNldChOVUxMKTsKKyAgICB9CisKKyAgICBtU3RhdGUuYXJyYXlCdWZmZXIuc2V0
KE5VTEwpOworICAgIG1TdGF0ZS5lbGVtZW50QXJyYXlCdWZmZXIuc2V0KE5VTEwpOworICAgIG1T
dGF0ZS5yZW5kZXJidWZmZXIuc2V0KE5VTEwpOworCisgICAgbVRleHR1cmUyRFplcm8uc2V0KE5V
TEwpOworICAgIG1UZXh0dXJlQ3ViZU1hcFplcm8uc2V0KE5VTEwpOworCisgICAgbVJlc291cmNl
TWFuYWdlci0+cmVsZWFzZSgpOworfQorCit2b2lkIENvbnRleHQ6Om1ha2VDdXJyZW50KGVnbDo6
U3VyZmFjZSAqc3VyZmFjZSkKK3sKKyAgICBpZiAoIW1IYXNCZWVuQ3VycmVudCkKKyAgICB7Cisg
ICAgICAgIG1NYWpvclNoYWRlck1vZGVsID0gbVJlbmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVs
KCk7CisgICAgICAgIG1NYXhpbXVtUG9pbnRTaXplID0gbVJlbmRlcmVyLT5nZXRNYXhQb2ludFNp
emUoKTsKKyAgICAgICAgbVN1cHBvcnRzVmVydGV4VGV4dHVyZSA9IG1SZW5kZXJlci0+Z2V0VmVy
dGV4VGV4dHVyZVN1cHBvcnQoKTsKKyAgICAgICAgbVN1cHBvcnRzTm9uUG93ZXIyVGV4dHVyZSA9
IG1SZW5kZXJlci0+Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQoKTsKKyAgICAgICAgbVN1cHBv
cnRzSW5zdGFuY2luZyA9IG1SZW5kZXJlci0+Z2V0SW5zdGFuY2luZ1N1cHBvcnQoKTsKKworICAg
ICAgICBtTWF4Vmlld3BvcnREaW1lbnNpb24gPSBtUmVuZGVyZXItPmdldE1heFZpZXdwb3J0RGlt
ZW5zaW9uKCk7CisgICAgICAgIG1NYXhUZXh0dXJlRGltZW5zaW9uID0gc3RkOjptaW4oc3RkOjpt
aW4obVJlbmRlcmVyLT5nZXRNYXhUZXh0dXJlV2lkdGgoKSwgbVJlbmRlcmVyLT5nZXRNYXhUZXh0
dXJlSGVpZ2h0KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp
bnQpZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX1NJWkUpOworICAgICAgICBtTWF4Q3Vi
ZVRleHR1cmVEaW1lbnNpb24gPSBzdGQ6Om1pbihtTWF4VGV4dHVyZURpbWVuc2lvbiwgKGludCln
bDo6SU1QTEVNRU5UQVRJT05fTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSk7CisgICAgICAgIG1N
YXhSZW5kZXJidWZmZXJEaW1lbnNpb24gPSBtTWF4VGV4dHVyZURpbWVuc2lvbjsKKyAgICAgICAg
bU1heFRleHR1cmVMZXZlbCA9IGxvZzIobU1heFRleHR1cmVEaW1lbnNpb24pICsgMTsKKyAgICAg
ICAgbU1heFRleHR1cmVBbmlzb3Ryb3B5ID0gbVJlbmRlcmVyLT5nZXRUZXh0dXJlTWF4QW5pc290
cm9weSgpOworICAgICAgICBUUkFDRSgiTWF4VGV4dHVyZURpbWVuc2lvbj0lZCwgTWF4Q3ViZVRl
eHR1cmVEaW1lbnNpb249JWQsIE1heFJlbmRlcmJ1ZmZlckRpbWVuc2lvbj0lZCwgTWF4VGV4dHVy
ZUxldmVsPSVkLCBNYXhUZXh0dXJlQW5pc290cm9weT0lZiIsCisgICAgICAgICAgICAgIG1NYXhU
ZXh0dXJlRGltZW5zaW9uLCBtTWF4Q3ViZVRleHR1cmVEaW1lbnNpb24sIG1NYXhSZW5kZXJidWZm
ZXJEaW1lbnNpb24sIG1NYXhUZXh0dXJlTGV2ZWwsIG1NYXhUZXh0dXJlQW5pc290cm9weSk7CisK
KyAgICAgICAgbVN1cHBvcnRzRXZlbnRRdWVyaWVzID0gbVJlbmRlcmVyLT5nZXRFdmVudFF1ZXJ5
U3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNPY2NsdXNpb25RdWVyaWVzID0gbVJlbmRlcmVy
LT5nZXRPY2NsdXNpb25RdWVyeVN1cHBvcnQoKTsKKyAgICAgICAgbVN1cHBvcnRzQkdSQVRleHR1
cmVzID0gbVJlbmRlcmVyLT5nZXRCR1JBVGV4dHVyZVN1cHBvcnQoKTsKKyAgICAgICAgbVN1cHBv
cnRzRFhUMVRleHR1cmVzID0gbVJlbmRlcmVyLT5nZXREWFQxVGV4dHVyZVN1cHBvcnQoKTsKKyAg
ICAgICAgbVN1cHBvcnRzRFhUM1RleHR1cmVzID0gbVJlbmRlcmVyLT5nZXREWFQzVGV4dHVyZVN1
cHBvcnQoKTsKKyAgICAgICAgbVN1cHBvcnRzRFhUNVRleHR1cmVzID0gbVJlbmRlcmVyLT5nZXRE
WFQ1VGV4dHVyZVN1cHBvcnQoKTsKKyAgICAgICAgbVN1cHBvcnRzRmxvYXQzMlRleHR1cmVzID0g
bVJlbmRlcmVyLT5nZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQoJm1TdXBwb3J0c0Zsb2F0MzJMaW5l
YXJGaWx0ZXIsICZtU3VwcG9ydHNGbG9hdDMyUmVuZGVyYWJsZVRleHR1cmVzKTsKKyAgICAgICAg
bVN1cHBvcnRzRmxvYXQxNlRleHR1cmVzID0gbVJlbmRlcmVyLT5nZXRGbG9hdDE2VGV4dHVyZVN1
cHBvcnQoJm1TdXBwb3J0c0Zsb2F0MTZMaW5lYXJGaWx0ZXIsICZtU3VwcG9ydHNGbG9hdDE2UmVu
ZGVyYWJsZVRleHR1cmVzKTsKKyAgICAgICAgbVN1cHBvcnRzTHVtaW5hbmNlVGV4dHVyZXMgPSBt
UmVuZGVyZXItPmdldEx1bWluYW5jZVRleHR1cmVTdXBwb3J0KCk7CisgICAgICAgIG1TdXBwb3J0
c0x1bWluYW5jZUFscGhhVGV4dHVyZXMgPSBtUmVuZGVyZXItPmdldEx1bWluYW5jZUFscGhhVGV4
dHVyZVN1cHBvcnQoKTsKKyAgICAgICAgbVN1cHBvcnRzRGVwdGhUZXh0dXJlcyA9IG1SZW5kZXJl
ci0+Z2V0RGVwdGhUZXh0dXJlU3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNUZXh0dXJlRmls
dGVyQW5pc290cm9weSA9IG1SZW5kZXJlci0+Z2V0VGV4dHVyZUZpbHRlckFuaXNvdHJvcHlTdXBw
b3J0KCk7CisgICAgICAgIG1TdXBwb3J0czMyYml0SW5kaWNlcyA9IG1SZW5kZXJlci0+Z2V0MzJC
aXRJbmRleFN1cHBvcnQoKTsKKworICAgICAgICBtTnVtQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRz
ID0gMDsKKyAgICAgICAgaWYgKHN1cHBvcnRzRFhUMVRleHR1cmVzKCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1OdW1Db21wcmVzc2VkVGV4dHVyZUZvcm1hdHMgKz0gMjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoc3VwcG9ydHNEWFQzVGV4dHVyZXMoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cyArPSAxOworICAgICAgICB9CisgICAgICAg
IGlmIChzdXBwb3J0c0RYVDVUZXh0dXJlcygpKQorICAgICAgICB7CisgICAgICAgICAgICBtTnVt
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXRzICs9IDE7CisgICAgICAgIH0KKworICAgICAgICBpbml0
RXh0ZW5zaW9uU3RyaW5nKCk7CisgICAgICAgIGluaXRSZW5kZXJlclN0cmluZygpOworCisgICAg
ICAgIG1TdGF0ZS52aWV3cG9ydC54ID0gMDsKKyAgICAgICAgbVN0YXRlLnZpZXdwb3J0LnkgPSAw
OworICAgICAgICBtU3RhdGUudmlld3BvcnQud2lkdGggPSBzdXJmYWNlLT5nZXRXaWR0aCgpOwor
ICAgICAgICBtU3RhdGUudmlld3BvcnQuaGVpZ2h0ID0gc3VyZmFjZS0+Z2V0SGVpZ2h0KCk7CisK
KyAgICAgICAgbVN0YXRlLnNjaXNzb3IueCA9IDA7CisgICAgICAgIG1TdGF0ZS5zY2lzc29yLnkg
PSAwOworICAgICAgICBtU3RhdGUuc2Npc3Nvci53aWR0aCA9IHN1cmZhY2UtPmdldFdpZHRoKCk7
CisgICAgICAgIG1TdGF0ZS5zY2lzc29yLmhlaWdodCA9IHN1cmZhY2UtPmdldEhlaWdodCgpOwor
CisgICAgICAgIG1IYXNCZWVuQ3VycmVudCA9IHRydWU7CisgICAgfQorCisgICAgLy8gV3JhcCB0
aGUgZXhpc3Rpbmcgc3dhcGNoYWluIHJlc291cmNlcyBpbnRvIEdMIG9iamVjdHMgYW5kIGFzc2ln
biB0aGVtIHRvIHRoZSAnMCcgbmFtZXMKKyAgICByeDo6U3dhcENoYWluICpzd2FwY2hhaW4gPSBz
dXJmYWNlLT5nZXRTd2FwQ2hhaW4oKTsKKworICAgIENvbG9yYnVmZmVyICpjb2xvcmJ1ZmZlclpl
cm8gPSBuZXcgQ29sb3JidWZmZXIobVJlbmRlcmVyLCBzd2FwY2hhaW4pOworICAgIERlcHRoU3Rl
bmNpbGJ1ZmZlciAqZGVwdGhTdGVuY2lsYnVmZmVyWmVybyA9IG5ldyBEZXB0aFN0ZW5jaWxidWZm
ZXIobVJlbmRlcmVyLCBzd2FwY2hhaW4pOworICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlclpl
cm8gPSBuZXcgRGVmYXVsdEZyYW1lYnVmZmVyKG1SZW5kZXJlciwgY29sb3JidWZmZXJaZXJvLCBk
ZXB0aFN0ZW5jaWxidWZmZXJaZXJvKTsKKworICAgIHNldEZyYW1lYnVmZmVyWmVybyhmcmFtZWJ1
ZmZlclplcm8pOworfQorCisvLyBOT1RFOiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYXNzdW1l
IHRoYXQgdGhpcyBjb250ZXh0IGlzIGN1cnJlbnQhCit2b2lkIENvbnRleHQ6Om1hcmtDb250ZXh0
TG9zdCgpCit7CisgICAgaWYgKG1SZXNldFN0cmF0ZWd5ID09IEdMX0xPU0VfQ09OVEVYVF9PTl9S
RVNFVF9FWFQpCisgICAgICAgIG1SZXNldFN0YXR1cyA9IEdMX1VOS05PV05fQ09OVEVYVF9SRVNF
VF9FWFQ7CisgICAgbUNvbnRleHRMb3N0ID0gdHJ1ZTsKK30KKworYm9vbCBDb250ZXh0Ojppc0Nv
bnRleHRMb3N0KCkKK3sKKyAgICByZXR1cm4gbUNvbnRleHRMb3N0OworfQorCit2b2lkIENvbnRl
eHQ6OnNldENsZWFyQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxv
YXQgYWxwaGEpCit7CisgICAgbVN0YXRlLmNvbG9yQ2xlYXJWYWx1ZS5yZWQgPSByZWQ7CisgICAg
bVN0YXRlLmNvbG9yQ2xlYXJWYWx1ZS5ncmVlbiA9IGdyZWVuOworICAgIG1TdGF0ZS5jb2xvckNs
ZWFyVmFsdWUuYmx1ZSA9IGJsdWU7CisgICAgbVN0YXRlLmNvbG9yQ2xlYXJWYWx1ZS5hbHBoYSA9
IGFscGhhOworfQorCit2b2lkIENvbnRleHQ6OnNldENsZWFyRGVwdGgoZmxvYXQgZGVwdGgpCit7
CisgICAgbVN0YXRlLmRlcHRoQ2xlYXJWYWx1ZSA9IGRlcHRoOworfQorCit2b2lkIENvbnRleHQ6
OnNldENsZWFyU3RlbmNpbChpbnQgc3RlbmNpbCkKK3sKKyAgICBtU3RhdGUuc3RlbmNpbENsZWFy
VmFsdWUgPSBzdGVuY2lsOworfQorCit2b2lkIENvbnRleHQ6OnNldEN1bGxGYWNlKGJvb2wgZW5h
YmxlZCkKK3sKKyAgICBtU3RhdGUucmFzdGVyaXplci5jdWxsRmFjZSA9IGVuYWJsZWQ7Cit9CisK
K2Jvb2wgQ29udGV4dDo6aXNDdWxsRmFjZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBt
U3RhdGUucmFzdGVyaXplci5jdWxsRmFjZTsKK30KKwordm9pZCBDb250ZXh0OjpzZXRDdWxsTW9k
ZShHTGVudW0gbW9kZSkKK3sKKyAgICBtU3RhdGUucmFzdGVyaXplci5jdWxsTW9kZSA9IG1vZGU7
Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0RnJvbnRGYWNlKEdMZW51bSBmcm9udCkKK3sKKyAgICBt
U3RhdGUucmFzdGVyaXplci5mcm9udEZhY2UgPSBmcm9udDsKK30KKwordm9pZCBDb250ZXh0Ojpz
ZXREZXB0aFRlc3QoYm9vbCBlbmFibGVkKQoreworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuZGVw
dGhUZXN0ID0gZW5hYmxlZDsKK30KKworYm9vbCBDb250ZXh0Ojppc0RlcHRoVGVzdEVuYWJsZWQo
KSBjb25zdAoreworICAgIHJldHVybiBtU3RhdGUuZGVwdGhTdGVuY2lsLmRlcHRoVGVzdDsKK30K
Kwordm9pZCBDb250ZXh0OjpzZXREZXB0aEZ1bmMoR0xlbnVtIGRlcHRoRnVuYykKK3sKKyAgICAg
bVN0YXRlLmRlcHRoU3RlbmNpbC5kZXB0aEZ1bmMgPSBkZXB0aEZ1bmM7Cit9CisKK3ZvaWQgQ29u
dGV4dDo6c2V0RGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQgekZhcikKK3sKKyAgICBtU3Rh
dGUuek5lYXIgPSB6TmVhcjsKKyAgICBtU3RhdGUuekZhciA9IHpGYXI7Cit9CisKK3ZvaWQgQ29u
dGV4dDo6c2V0QmxlbmQoYm9vbCBlbmFibGVkKQoreworICAgIG1TdGF0ZS5ibGVuZC5ibGVuZCA9
IGVuYWJsZWQ7Cit9CisKK2Jvb2wgQ29udGV4dDo6aXNCbGVuZEVuYWJsZWQoKSBjb25zdAorewor
ICAgIHJldHVybiBtU3RhdGUuYmxlbmQuYmxlbmQ7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0Qmxl
bmRGYWN0b3JzKEdMZW51bSBzb3VyY2VSR0IsIEdMZW51bSBkZXN0UkdCLCBHTGVudW0gc291cmNl
QWxwaGEsIEdMZW51bSBkZXN0QWxwaGEpCit7CisgICAgbVN0YXRlLmJsZW5kLnNvdXJjZUJsZW5k
UkdCID0gc291cmNlUkdCOworICAgIG1TdGF0ZS5ibGVuZC5kZXN0QmxlbmRSR0IgPSBkZXN0UkdC
OworICAgIG1TdGF0ZS5ibGVuZC5zb3VyY2VCbGVuZEFscGhhID0gc291cmNlQWxwaGE7CisgICAg
bVN0YXRlLmJsZW5kLmRlc3RCbGVuZEFscGhhID0gZGVzdEFscGhhOworfQorCit2b2lkIENvbnRl
eHQ6OnNldEJsZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxv
YXQgYWxwaGEpCit7CisgICAgbVN0YXRlLmJsZW5kQ29sb3IucmVkID0gcmVkOworICAgIG1TdGF0
ZS5ibGVuZENvbG9yLmdyZWVuID0gZ3JlZW47CisgICAgbVN0YXRlLmJsZW5kQ29sb3IuYmx1ZSA9
IGJsdWU7CisgICAgbVN0YXRlLmJsZW5kQ29sb3IuYWxwaGEgPSBhbHBoYTsKK30KKwordm9pZCBD
b250ZXh0OjpzZXRCbGVuZEVxdWF0aW9uKEdMZW51bSByZ2JFcXVhdGlvbiwgR0xlbnVtIGFscGhh
RXF1YXRpb24pCit7CisgICAgbVN0YXRlLmJsZW5kLmJsZW5kRXF1YXRpb25SR0IgPSByZ2JFcXVh
dGlvbjsKKyAgICBtU3RhdGUuYmxlbmQuYmxlbmRFcXVhdGlvbkFscGhhID0gYWxwaGFFcXVhdGlv
bjsKK30KKwordm9pZCBDb250ZXh0OjpzZXRTdGVuY2lsVGVzdChib29sIGVuYWJsZWQpCit7Cisg
ICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsVGVzdCA9IGVuYWJsZWQ7Cit9CisKK2Jvb2wg
Q29udGV4dDo6aXNTdGVuY2lsVGVzdEVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtU3Rh
dGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxUZXN0OworfQorCit2b2lkIENvbnRleHQ6OnNldFN0ZW5j
aWxQYXJhbXMoR0xlbnVtIHN0ZW5jaWxGdW5jLCBHTGludCBzdGVuY2lsUmVmLCBHTHVpbnQgc3Rl
bmNpbE1hc2spCit7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsRnVuYyA9IHN0ZW5j
aWxGdW5jOworICAgIG1TdGF0ZS5zdGVuY2lsUmVmID0gKHN0ZW5jaWxSZWYgPiAwKSA/IHN0ZW5j
aWxSZWYgOiAwOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbE1hc2sgPSBzdGVuY2ls
TWFzazsKK30KKwordm9pZCBDb250ZXh0OjpzZXRTdGVuY2lsQmFja1BhcmFtcyhHTGVudW0gc3Rl
bmNpbEJhY2tGdW5jLCBHTGludCBzdGVuY2lsQmFja1JlZiwgR0x1aW50IHN0ZW5jaWxCYWNrTWFz
aykKK3sKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxCYWNrRnVuYyA9IHN0ZW5jaWxC
YWNrRnVuYzsKKyAgICBtU3RhdGUuc3RlbmNpbEJhY2tSZWYgPSAoc3RlbmNpbEJhY2tSZWYgPiAw
KSA/IHN0ZW5jaWxCYWNrUmVmIDogMDsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxC
YWNrTWFzayA9IHN0ZW5jaWxCYWNrTWFzazsKK30KKwordm9pZCBDb250ZXh0OjpzZXRTdGVuY2ls
V3JpdGVtYXNrKEdMdWludCBzdGVuY2lsV3JpdGVtYXNrKQoreworICAgIG1TdGF0ZS5kZXB0aFN0
ZW5jaWwuc3RlbmNpbFdyaXRlbWFzayA9IHN0ZW5jaWxXcml0ZW1hc2s7Cit9CisKK3ZvaWQgQ29u
dGV4dDo6c2V0U3RlbmNpbEJhY2tXcml0ZW1hc2soR0x1aW50IHN0ZW5jaWxCYWNrV3JpdGVtYXNr
KQoreworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tXcml0ZW1hc2sgPSBzdGVu
Y2lsQmFja1dyaXRlbWFzazsKK30KKwordm9pZCBDb250ZXh0OjpzZXRTdGVuY2lsT3BlcmF0aW9u
cyhHTGVudW0gc3RlbmNpbEZhaWwsIEdMZW51bSBzdGVuY2lsUGFzc0RlcHRoRmFpbCwgR0xlbnVt
IHN0ZW5jaWxQYXNzRGVwdGhQYXNzKQoreworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNp
bEZhaWwgPSBzdGVuY2lsRmFpbDsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxQYXNz
RGVwdGhGYWlsID0gc3RlbmNpbFBhc3NEZXB0aEZhaWw7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNp
bC5zdGVuY2lsUGFzc0RlcHRoUGFzcyA9IHN0ZW5jaWxQYXNzRGVwdGhQYXNzOworfQorCit2b2lk
IENvbnRleHQ6OnNldFN0ZW5jaWxCYWNrT3BlcmF0aW9ucyhHTGVudW0gc3RlbmNpbEJhY2tGYWls
LCBHTGVudW0gc3RlbmNpbEJhY2tQYXNzRGVwdGhGYWlsLCBHTGVudW0gc3RlbmNpbEJhY2tQYXNz
RGVwdGhQYXNzKQoreworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tGYWlsID0g
c3RlbmNpbEJhY2tGYWlsOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tQYXNz
RGVwdGhGYWlsID0gc3RlbmNpbEJhY2tQYXNzRGVwdGhGYWlsOworICAgIG1TdGF0ZS5kZXB0aFN0
ZW5jaWwuc3RlbmNpbEJhY2tQYXNzRGVwdGhQYXNzID0gc3RlbmNpbEJhY2tQYXNzRGVwdGhQYXNz
OworfQorCit2b2lkIENvbnRleHQ6OnNldFBvbHlnb25PZmZzZXRGaWxsKGJvb2wgZW5hYmxlZCkK
K3sKKyAgICAgbVN0YXRlLnJhc3Rlcml6ZXIucG9seWdvbk9mZnNldEZpbGwgPSBlbmFibGVkOwor
fQorCitib29sIENvbnRleHQ6OmlzUG9seWdvbk9mZnNldEZpbGxFbmFibGVkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbVN0YXRlLnJhc3Rlcml6ZXIucG9seWdvbk9mZnNldEZpbGw7Cit9CisKK3Zv
aWQgQ29udGV4dDo6c2V0UG9seWdvbk9mZnNldFBhcmFtcyhHTGZsb2F0IGZhY3RvciwgR0xmbG9h
dCB1bml0cykKK3sKKyAgICAvLyBBbiBhcHBsaWNhdGlvbiBjYW4gcGFzcyBOYU4gdmFsdWVzIGhl
cmUsIHNvIGhhbmRsZSB0aGlzIGdyYWNlZnVsbHkKKyAgICBtU3RhdGUucmFzdGVyaXplci5wb2x5
Z29uT2Zmc2V0RmFjdG9yID0gZmFjdG9yICE9IGZhY3RvciA/IDAuMGYgOiBmYWN0b3I7CisgICAg
bVN0YXRlLnJhc3Rlcml6ZXIucG9seWdvbk9mZnNldFVuaXRzID0gdW5pdHMgIT0gdW5pdHMgPyAw
LjBmIDogdW5pdHM7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0U2FtcGxlQWxwaGFUb0NvdmVyYWdl
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtU3RhdGUuYmxlbmQuc2FtcGxlQWxwaGFUb0NvdmVyYWdl
ID0gZW5hYmxlZDsKK30KKworYm9vbCBDb250ZXh0Ojppc1NhbXBsZUFscGhhVG9Db3ZlcmFnZUVu
YWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtU3RhdGUuYmxlbmQuc2FtcGxlQWxwaGFUb0Nv
dmVyYWdlOworfQorCit2b2lkIENvbnRleHQ6OnNldFNhbXBsZUNvdmVyYWdlKGJvb2wgZW5hYmxl
ZCkKK3sKKyAgICBtU3RhdGUuc2FtcGxlQ292ZXJhZ2UgPSBlbmFibGVkOworfQorCitib29sIENv
bnRleHQ6OmlzU2FtcGxlQ292ZXJhZ2VFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0
YXRlLnNhbXBsZUNvdmVyYWdlOworfQorCit2b2lkIENvbnRleHQ6OnNldFNhbXBsZUNvdmVyYWdl
UGFyYW1zKEdMY2xhbXBmIHZhbHVlLCBib29sIGludmVydCkKK3sKKyAgICBtU3RhdGUuc2FtcGxl
Q292ZXJhZ2VWYWx1ZSA9IHZhbHVlOworICAgIG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZUludmVydCA9
IGludmVydDsKK30KKwordm9pZCBDb250ZXh0OjpzZXRTY2lzc29yVGVzdChib29sIGVuYWJsZWQp
Cit7CisgICAgbVN0YXRlLnNjaXNzb3JUZXN0ID0gZW5hYmxlZDsKK30KKworYm9vbCBDb250ZXh0
Ojppc1NjaXNzb3JUZXN0RW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5zY2lz
c29yVGVzdDsKK30KKwordm9pZCBDb250ZXh0OjpzZXREaXRoZXIoYm9vbCBlbmFibGVkKQorewor
ICAgIG1TdGF0ZS5ibGVuZC5kaXRoZXIgPSBlbmFibGVkOworfQorCitib29sIENvbnRleHQ6Omlz
RGl0aGVyRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5ibGVuZC5kaXRoZXI7
Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0TGluZVdpZHRoKEdMZmxvYXQgd2lkdGgpCit7CisgICAg
bVN0YXRlLmxpbmVXaWR0aCA9IHdpZHRoOworfQorCit2b2lkIENvbnRleHQ6OnNldEdlbmVyYXRl
TWlwbWFwSGludChHTGVudW0gaGludCkKK3sKKyAgICBtU3RhdGUuZ2VuZXJhdGVNaXBtYXBIaW50
ID0gaGludDsKK30KKwordm9pZCBDb250ZXh0OjpzZXRGcmFnbWVudFNoYWRlckRlcml2YXRpdmVI
aW50KEdMZW51bSBoaW50KQoreworICAgIG1TdGF0ZS5mcmFnbWVudFNoYWRlckRlcml2YXRpdmVI
aW50ID0gaGludDsKKyAgICAvLyBUT0RPOiBQcm9wYWdhdGUgdGhlIGhpbnQgdG8gc2hhZGVyIHRy
YW5zbGF0b3Igc28gd2UgY2FuIHdyaXRlCisgICAgLy8gZGR4LCBkZHhfY29hcnNlLCBvciBkZHhf
ZmluZSBkZXBlbmRpbmcgb24gdGhlIGhpbnQuCisgICAgLy8gSWdub3JlIGZvciBub3cuIEl0IGlz
IHZhbGlkIGZvciBpbXBsZW1lbnRhdGlvbnMgdG8gaWdub3JlIGhpbnQuCit9CisKK3ZvaWQgQ29u
dGV4dDo6c2V0Vmlld3BvcnRQYXJhbXMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQpCit7CisgICAgbVN0YXRlLnZpZXdwb3J0LnggPSB4OworICAgIG1TdGF0
ZS52aWV3cG9ydC55ID0geTsKKyAgICBtU3RhdGUudmlld3BvcnQud2lkdGggPSB3aWR0aDsKKyAg
ICBtU3RhdGUudmlld3BvcnQuaGVpZ2h0ID0gaGVpZ2h0OworfQorCit2b2lkIENvbnRleHQ6OnNl
dFNjaXNzb3JQYXJhbXMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQpCit7CisgICAgbVN0YXRlLnNjaXNzb3IueCA9IHg7CisgICAgbVN0YXRlLnNjaXNzb3Iu
eSA9IHk7CisgICAgbVN0YXRlLnNjaXNzb3Iud2lkdGggPSB3aWR0aDsKKyAgICBtU3RhdGUuc2Np
c3Nvci5oZWlnaHQgPSBoZWlnaHQ7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0Q29sb3JNYXNrKGJv
b2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCit7CisgICAgbVN0YXRl
LmJsZW5kLmNvbG9yTWFza1JlZCA9IHJlZDsKKyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrR3Jl
ZW4gPSBncmVlbjsKKyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQmx1ZSA9IGJsdWU7CisgICAg
bVN0YXRlLmJsZW5kLmNvbG9yTWFza0FscGhhID0gYWxwaGE7Cit9CisKK3ZvaWQgQ29udGV4dDo6
c2V0RGVwdGhNYXNrKGJvb2wgbWFzaykKK3sKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLmRlcHRo
TWFzayA9IG1hc2s7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0QWN0aXZlU2FtcGxlcih1bnNpZ25l
ZCBpbnQgYWN0aXZlKQoreworICAgIG1TdGF0ZS5hY3RpdmVTYW1wbGVyID0gYWN0aXZlOworfQor
CitHTHVpbnQgQ29udGV4dDo6Z2V0UmVhZEZyYW1lYnVmZmVySGFuZGxlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVN0YXRlLnJlYWRGcmFtZWJ1ZmZlcjsKK30KKworR0x1aW50IENvbnRleHQ6Omdl
dERyYXdGcmFtZWJ1ZmZlckhhbmRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5kcmF3
RnJhbWVidWZmZXI7Cit9CisKK0dMdWludCBDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJIYW5kbGUo
KSBjb25zdAoreworICAgIHJldHVybiBtU3RhdGUucmVuZGVyYnVmZmVyLmlkKCk7Cit9CisKK0dM
dWludCBDb250ZXh0OjpnZXRBcnJheUJ1ZmZlckhhbmRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1TdGF0ZS5hcnJheUJ1ZmZlci5pZCgpOworfQorCitHTHVpbnQgQ29udGV4dDo6Z2V0QWN0aXZl
UXVlcnkoR0xlbnVtIHRhcmdldCkgY29uc3QKK3sKKyAgICBRdWVyeSAqcXVlcnlPYmplY3QgPSBO
VUxMOworICAgIAorICAgIHN3aXRjaCAodGFyZ2V0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfQU5Z
X1NBTVBMRVNfUEFTU0VEX0VYVDoKKyAgICAgICAgcXVlcnlPYmplY3QgPSBtU3RhdGUuYWN0aXZl
UXVlcnlbUVVFUllfQU5ZX1NBTVBMRVNfUEFTU0VEXS5nZXQoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhUOgorICAgICAg
ICBxdWVyeU9iamVjdCA9IG1TdGF0ZS5hY3RpdmVRdWVyeVtRVUVSWV9BTllfU0FNUExFU19QQVNT
RURfQ09OU0VSVkFUSVZFXS5nZXQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgIH0KKworICAgIGlmIChxdWVyeU9iamVjdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBxdWVyeU9iamVjdC0+aWQoKTsKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OnNldEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGludCBhdHRyaWJOdW0sIGJvb2wgZW5hYmxl
ZCkKK3sKKyAgICBtU3RhdGUudmVydGV4QXR0cmlidXRlW2F0dHJpYk51bV0ubUFycmF5RW5hYmxl
ZCA9IGVuYWJsZWQ7Cit9CisKK2NvbnN0IFZlcnRleEF0dHJpYnV0ZSAmQ29udGV4dDo6Z2V0VmVy
dGV4QXR0cmliU3RhdGUodW5zaWduZWQgaW50IGF0dHJpYk51bSkKK3sKKyAgICByZXR1cm4gbVN0
YXRlLnZlcnRleEF0dHJpYnV0ZVthdHRyaWJOdW1dOworfQorCit2b2lkIENvbnRleHQ6OnNldFZl
cnRleEF0dHJpYlN0YXRlKHVuc2lnbmVkIGludCBhdHRyaWJOdW0sIEJ1ZmZlciAqYm91bmRCdWZm
ZXIsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBib29sIG5vcm1hbGl6ZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkICpwb2lu
dGVyKQoreworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmliTnVtXS5tQm91bmRCdWZm
ZXIuc2V0KGJvdW5kQnVmZmVyKTsKKyAgICBtU3RhdGUudmVydGV4QXR0cmlidXRlW2F0dHJpYk51
bV0ubVNpemUgPSBzaXplOworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmliTnVtXS5t
VHlwZSA9IHR5cGU7CisgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVthdHRyaWJOdW1dLm1Ob3Jt
YWxpemVkID0gbm9ybWFsaXplZDsKKyAgICBtU3RhdGUudmVydGV4QXR0cmlidXRlW2F0dHJpYk51
bV0ubVN0cmlkZSA9IHN0cmlkZTsKKyAgICBtU3RhdGUudmVydGV4QXR0cmlidXRlW2F0dHJpYk51
bV0ubVBvaW50ZXIgPSBwb2ludGVyOworfQorCitjb25zdCB2b2lkICpDb250ZXh0OjpnZXRWZXJ0
ZXhBdHRyaWJQb2ludGVyKHVuc2lnbmVkIGludCBhdHRyaWJOdW0pIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmliTnVtXS5tUG9pbnRlcjsKK30KKwordm9p
ZCBDb250ZXh0OjpzZXRQYWNrQWxpZ25tZW50KEdMaW50IGFsaWdubWVudCkKK3sKKyAgICBtU3Rh
dGUucGFja0FsaWdubWVudCA9IGFsaWdubWVudDsKK30KKworR0xpbnQgQ29udGV4dDo6Z2V0UGFj
a0FsaWdubWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5wYWNrQWxpZ25tZW50Owor
fQorCit2b2lkIENvbnRleHQ6OnNldFVucGFja0FsaWdubWVudChHTGludCBhbGlnbm1lbnQpCit7
CisgICAgbVN0YXRlLnVucGFja0FsaWdubWVudCA9IGFsaWdubWVudDsKK30KKworR0xpbnQgQ29u
dGV4dDo6Z2V0VW5wYWNrQWxpZ25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLnVu
cGFja0FsaWdubWVudDsKK30KKwordm9pZCBDb250ZXh0OjpzZXRQYWNrUmV2ZXJzZVJvd09yZGVy
KGJvb2wgcmV2ZXJzZVJvd09yZGVyKQoreworICAgIG1TdGF0ZS5wYWNrUmV2ZXJzZVJvd09yZGVy
ID0gcmV2ZXJzZVJvd09yZGVyOworfQorCitib29sIENvbnRleHQ6OmdldFBhY2tSZXZlcnNlUm93
T3JkZXIoKSBjb25zdAoreworICAgIHJldHVybiBtU3RhdGUucGFja1JldmVyc2VSb3dPcmRlcjsK
K30KKworR0x1aW50IENvbnRleHQ6OmNyZWF0ZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1SZXNv
dXJjZU1hbmFnZXItPmNyZWF0ZUJ1ZmZlcigpOworfQorCitHTHVpbnQgQ29udGV4dDo6Y3JlYXRl
UHJvZ3JhbSgpCit7CisgICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXItPmNyZWF0ZVByb2dyYW0o
KTsKK30KKworR0x1aW50IENvbnRleHQ6OmNyZWF0ZVNoYWRlcihHTGVudW0gdHlwZSkKK3sKKyAg
ICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Y3JlYXRlU2hhZGVyKHR5cGUpOworfQorCitHTHVp
bnQgQ29udGV4dDo6Y3JlYXRlVGV4dHVyZSgpCit7CisgICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFn
ZXItPmNyZWF0ZVRleHR1cmUoKTsKK30KKworR0x1aW50IENvbnRleHQ6OmNyZWF0ZVJlbmRlcmJ1
ZmZlcigpCit7CisgICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXItPmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpOworfQorCisvLyBSZXR1cm5zIGFuIHVudXNlZCBmcmFtZWJ1ZmZlciBuYW1lCitHTHVpbnQg
Q29udGV4dDo6Y3JlYXRlRnJhbWVidWZmZXIoKQoreworICAgIEdMdWludCBoYW5kbGUgPSBtRnJh
bWVidWZmZXJIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKKworICAgIG1GcmFtZWJ1ZmZlck1h
cFtoYW5kbGVdID0gTlVMTDsKKworICAgIHJldHVybiBoYW5kbGU7Cit9CisKK0dMdWludCBDb250
ZXh0OjpjcmVhdGVGZW5jZSgpCit7CisgICAgR0x1aW50IGhhbmRsZSA9IG1GZW5jZUhhbmRsZUFs
bG9jYXRvci5hbGxvY2F0ZSgpOworCisgICAgbUZlbmNlTWFwW2hhbmRsZV0gPSBuZXcgRmVuY2Uo
bVJlbmRlcmVyKTsKKworICAgIHJldHVybiBoYW5kbGU7Cit9CisKKy8vIFJldHVybnMgYW4gdW51
c2VkIHF1ZXJ5IG5hbWUKK0dMdWludCBDb250ZXh0OjpjcmVhdGVRdWVyeSgpCit7CisgICAgR0x1
aW50IGhhbmRsZSA9IG1RdWVyeUhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworCisgICAgbVF1
ZXJ5TWFwW2hhbmRsZV0gPSBOVUxMOworCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKwordm9pZCBD
b250ZXh0OjpkZWxldGVCdWZmZXIoR0x1aW50IGJ1ZmZlcikKK3sKKyAgICBpZiAobVJlc291cmNl
TWFuYWdlci0+Z2V0QnVmZmVyKGJ1ZmZlcikpCisgICAgeworICAgICAgICBkZXRhY2hCdWZmZXIo
YnVmZmVyKTsKKyAgICB9CisgICAgCisgICAgbVJlc291cmNlTWFuYWdlci0+ZGVsZXRlQnVmZmVy
KGJ1ZmZlcik7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZGVsZXRlU2hhZGVyKEdMdWludCBzaGFkZXIp
Cit7CisgICAgbVJlc291cmNlTWFuYWdlci0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7Cit9CisKK3Zv
aWQgQ29udGV4dDo6ZGVsZXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKK3sKKyAgICBtUmVzb3Vy
Y2VNYW5hZ2VyLT5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworfQorCit2b2lkIENvbnRleHQ6OmRl
bGV0ZVRleHR1cmUoR0x1aW50IHRleHR1cmUpCit7CisgICAgaWYgKG1SZXNvdXJjZU1hbmFnZXIt
PmdldFRleHR1cmUodGV4dHVyZSkpCisgICAgeworICAgICAgICBkZXRhY2hUZXh0dXJlKHRleHR1
cmUpOworICAgIH0KKworICAgIG1SZXNvdXJjZU1hbmFnZXItPmRlbGV0ZVRleHR1cmUodGV4dHVy
ZSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZGVsZXRlUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJi
dWZmZXIpCit7CisgICAgaWYgKG1SZXNvdXJjZU1hbmFnZXItPmdldFJlbmRlcmJ1ZmZlcihyZW5k
ZXJidWZmZXIpKQorICAgIHsKKyAgICAgICAgZGV0YWNoUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZl
cik7CisgICAgfQorICAgIAorICAgIG1SZXNvdXJjZU1hbmFnZXItPmRlbGV0ZVJlbmRlcmJ1ZmZl
cihyZW5kZXJidWZmZXIpOworfQorCit2b2lkIENvbnRleHQ6OmRlbGV0ZUZyYW1lYnVmZmVyKEdM
dWludCBmcmFtZWJ1ZmZlcikKK3sKKyAgICBGcmFtZWJ1ZmZlck1hcDo6aXRlcmF0b3IgZnJhbWVi
dWZmZXJPYmplY3QgPSBtRnJhbWVidWZmZXJNYXAuZmluZChmcmFtZWJ1ZmZlcik7CisKKyAgICBp
ZiAoZnJhbWVidWZmZXJPYmplY3QgIT0gbUZyYW1lYnVmZmVyTWFwLmVuZCgpKQorICAgIHsKKyAg
ICAgICAgZGV0YWNoRnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOworCisgICAgICAgIG1GcmFtZWJ1
ZmZlckhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKGZyYW1lYnVmZmVyT2JqZWN0LT5maXJzdCk7Cisg
ICAgICAgIGRlbGV0ZSBmcmFtZWJ1ZmZlck9iamVjdC0+c2Vjb25kOworICAgICAgICBtRnJhbWVi
dWZmZXJNYXAuZXJhc2UoZnJhbWVidWZmZXJPYmplY3QpOworICAgIH0KK30KKwordm9pZCBDb250
ZXh0OjpkZWxldGVGZW5jZShHTHVpbnQgZmVuY2UpCit7CisgICAgRmVuY2VNYXA6Oml0ZXJhdG9y
IGZlbmNlT2JqZWN0ID0gbUZlbmNlTWFwLmZpbmQoZmVuY2UpOworCisgICAgaWYgKGZlbmNlT2Jq
ZWN0ICE9IG1GZW5jZU1hcC5lbmQoKSkKKyAgICB7CisgICAgICAgIG1GZW5jZUhhbmRsZUFsbG9j
YXRvci5yZWxlYXNlKGZlbmNlT2JqZWN0LT5maXJzdCk7CisgICAgICAgIGRlbGV0ZSBmZW5jZU9i
amVjdC0+c2Vjb25kOworICAgICAgICBtRmVuY2VNYXAuZXJhc2UoZmVuY2VPYmplY3QpOworICAg
IH0KK30KKwordm9pZCBDb250ZXh0OjpkZWxldGVRdWVyeShHTHVpbnQgcXVlcnkpCit7CisgICAg
UXVlcnlNYXA6Oml0ZXJhdG9yIHF1ZXJ5T2JqZWN0ID0gbVF1ZXJ5TWFwLmZpbmQocXVlcnkpOwor
ICAgIGlmIChxdWVyeU9iamVjdCAhPSBtUXVlcnlNYXAuZW5kKCkpCisgICAgeworICAgICAgICBt
UXVlcnlIYW5kbGVBbGxvY2F0b3IucmVsZWFzZShxdWVyeU9iamVjdC0+Zmlyc3QpOworICAgICAg
ICBpZiAocXVlcnlPYmplY3QtPnNlY29uZCkKKyAgICAgICAgeworICAgICAgICAgICAgcXVlcnlP
YmplY3QtPnNlY29uZC0+cmVsZWFzZSgpOworICAgICAgICB9CisgICAgICAgIG1RdWVyeU1hcC5l
cmFzZShxdWVyeU9iamVjdCk7CisgICAgfQorfQorCitCdWZmZXIgKkNvbnRleHQ6OmdldEJ1ZmZl
cihHTHVpbnQgaGFuZGxlKQoreworICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRCdWZm
ZXIoaGFuZGxlKTsKK30KKworU2hhZGVyICpDb250ZXh0OjpnZXRTaGFkZXIoR0x1aW50IGhhbmRs
ZSkKK3sKKyAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Z2V0U2hhZGVyKGhhbmRsZSk7Cit9
CisKK1Byb2dyYW0gKkNvbnRleHQ6OmdldFByb2dyYW0oR0x1aW50IGhhbmRsZSkKK3sKKyAgICBy
ZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Z2V0UHJvZ3JhbShoYW5kbGUpOworfQorCitUZXh0dXJl
ICpDb250ZXh0OjpnZXRUZXh0dXJlKEdMdWludCBoYW5kbGUpCit7CisgICAgcmV0dXJuIG1SZXNv
dXJjZU1hbmFnZXItPmdldFRleHR1cmUoaGFuZGxlKTsKK30KKworUmVuZGVyYnVmZmVyICpDb250
ZXh0OjpnZXRSZW5kZXJidWZmZXIoR0x1aW50IGhhbmRsZSkKK3sKKyAgICByZXR1cm4gbVJlc291
cmNlTWFuYWdlci0+Z2V0UmVuZGVyYnVmZmVyKGhhbmRsZSk7Cit9CisKK0ZyYW1lYnVmZmVyICpD
b250ZXh0OjpnZXRSZWFkRnJhbWVidWZmZXIoKQoreworICAgIHJldHVybiBnZXRGcmFtZWJ1ZmZl
cihtU3RhdGUucmVhZEZyYW1lYnVmZmVyKTsKK30KKworRnJhbWVidWZmZXIgKkNvbnRleHQ6Omdl
dERyYXdGcmFtZWJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1Cb3VuZERyYXdGcmFtZWJ1ZmZlcjsK
K30KKwordm9pZCBDb250ZXh0OjpiaW5kQXJyYXlCdWZmZXIodW5zaWduZWQgaW50IGJ1ZmZlcikK
K3sKKyAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24oYnVmZmVyKTsK
KworICAgIG1TdGF0ZS5hcnJheUJ1ZmZlci5zZXQoZ2V0QnVmZmVyKGJ1ZmZlcikpOworfQorCit2
b2lkIENvbnRleHQ6OmJpbmRFbGVtZW50QXJyYXlCdWZmZXIodW5zaWduZWQgaW50IGJ1ZmZlcikK
K3sKKyAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24oYnVmZmVyKTsK
KworICAgIG1TdGF0ZS5lbGVtZW50QXJyYXlCdWZmZXIuc2V0KGdldEJ1ZmZlcihidWZmZXIpKTsK
K30KKwordm9pZCBDb250ZXh0OjpiaW5kVGV4dHVyZTJEKEdMdWludCB0ZXh0dXJlKQoreworICAg
IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrVGV4dHVyZUFsbG9jYXRpb24odGV4dHVyZSwgVEVYVFVS
RV8yRCk7CisKKyAgICBtU3RhdGUuc2FtcGxlclRleHR1cmVbVEVYVFVSRV8yRF1bbVN0YXRlLmFj
dGl2ZVNhbXBsZXJdLnNldChnZXRUZXh0dXJlKHRleHR1cmUpKTsKK30KKwordm9pZCBDb250ZXh0
OjpiaW5kVGV4dHVyZUN1YmVNYXAoR0x1aW50IHRleHR1cmUpCit7CisgICAgbVJlc291cmNlTWFu
YWdlci0+Y2hlY2tUZXh0dXJlQWxsb2NhdGlvbih0ZXh0dXJlLCBURVhUVVJFX0NVQkUpOworCisg
ICAgbVN0YXRlLnNhbXBsZXJUZXh0dXJlW1RFWFRVUkVfQ1VCRV1bbVN0YXRlLmFjdGl2ZVNhbXBs
ZXJdLnNldChnZXRUZXh0dXJlKHRleHR1cmUpKTsKK30KKwordm9pZCBDb250ZXh0OjpiaW5kUmVh
ZEZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlcikKK3sKKyAgICBpZiAoIWdldEZyYW1lYnVm
ZmVyKGZyYW1lYnVmZmVyKSkKKyAgICB7CisgICAgICAgIG1GcmFtZWJ1ZmZlck1hcFtmcmFtZWJ1
ZmZlcl0gPSBuZXcgRnJhbWVidWZmZXIobVJlbmRlcmVyKTsKKyAgICB9CisKKyAgICBtU3RhdGUu
cmVhZEZyYW1lYnVmZmVyID0gZnJhbWVidWZmZXI7Cit9CisKK3ZvaWQgQ29udGV4dDo6YmluZERy
YXdGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXIpCit7CisgICAgaWYgKCFnZXRGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlcikpCisgICAgeworICAgICAgICBtRnJhbWVidWZmZXJNYXBbZnJhbWVi
dWZmZXJdID0gbmV3IEZyYW1lYnVmZmVyKG1SZW5kZXJlcik7CisgICAgfQorCisgICAgbVN0YXRl
LmRyYXdGcmFtZWJ1ZmZlciA9IGZyYW1lYnVmZmVyOworCisgICAgbUJvdW5kRHJhd0ZyYW1lYnVm
ZmVyID0gZ2V0RnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOworfQorCit2b2lkIENvbnRleHQ6OmJp
bmRSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcikKK3sKKyAgICBtUmVzb3VyY2VNYW5h
Z2VyLT5jaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24ocmVuZGVyYnVmZmVyKTsKKworICAgIG1T
dGF0ZS5yZW5kZXJidWZmZXIuc2V0KGdldFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpKTsKK30K
Kwordm9pZCBDb250ZXh0Ojp1c2VQcm9ncmFtKEdMdWludCBwcm9ncmFtKQoreworICAgIEdMdWlu
dCBwcmlvclByb2dyYW0gPSBtU3RhdGUuY3VycmVudFByb2dyYW07CisgICAgbVN0YXRlLmN1cnJl
bnRQcm9ncmFtID0gcHJvZ3JhbTsgICAgICAgICAgICAgICAvLyBNdXN0IHN3aXRjaCBiZWZvcmUg
dHJ5aW5nIHRvIGRlbGV0ZSwgb3RoZXJ3aXNlIGl0IG9ubHkgZ2V0cyBmbGFnZ2VkLgorCisgICAg
aWYgKHByaW9yUHJvZ3JhbSAhPSBwcm9ncmFtKQorICAgIHsKKyAgICAgICAgUHJvZ3JhbSAqbmV3
UHJvZ3JhbSA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAg
IFByb2dyYW0gKm9sZFByb2dyYW0gPSBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQcm9ncmFtKHByaW9y
UHJvZ3JhbSk7CisgICAgICAgIG1DdXJyZW50UHJvZ3JhbUJpbmFyeS5zZXQoTlVMTCk7CisKKyAg
ICAgICAgaWYgKG5ld1Byb2dyYW0pCisgICAgICAgIHsKKyAgICAgICAgICAgIG5ld1Byb2dyYW0t
PmFkZFJlZigpOworICAgICAgICAgICAgbUN1cnJlbnRQcm9ncmFtQmluYXJ5LnNldChuZXdQcm9n
cmFtLT5nZXRQcm9ncmFtQmluYXJ5KCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBp
ZiAob2xkUHJvZ3JhbSkKKyAgICAgICAgeworICAgICAgICAgICAgb2xkUHJvZ3JhbS0+cmVsZWFz
ZSgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmxpbmtQcm9ncmFtKEdM
dWludCBwcm9ncmFtKQoreworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBtUmVzb3VyY2VN
YW5hZ2VyLT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgYm9vbCBsaW5rZWQgPSBwcm9ncmFt
T2JqZWN0LT5saW5rKCk7CisKKyAgICAvLyBpZiB0aGUgY3VycmVudCBwcm9ncmFtIHdhcyByZWxp
bmtlZCBzdWNjZXNzZnVsbHkgd2UKKyAgICAvLyBuZWVkIHRvIGluc3RhbGwgdGhlIG5ldyBleGVj
dXRhYmxlcworICAgIGlmIChsaW5rZWQgJiYgcHJvZ3JhbSA9PSBtU3RhdGUuY3VycmVudFByb2dy
YW0pCisgICAgeworICAgICAgICBtQ3VycmVudFByb2dyYW1CaW5hcnkuc2V0KHByb2dyYW1PYmpl
Y3QtPmdldFByb2dyYW1CaW5hcnkoKSk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OnNldFBy
b2dyYW1CaW5hcnkoR0x1aW50IHByb2dyYW0sIGNvbnN0IHZvaWQgKmJpbmFyeSwgR0xpbnQgbGVu
Z3RoKQoreworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBtUmVzb3VyY2VNYW5hZ2VyLT5n
ZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgYm9vbCBsb2FkZWQgPSBwcm9ncmFtT2JqZWN0LT5z
ZXRQcm9ncmFtQmluYXJ5KGJpbmFyeSwgbGVuZ3RoKTsKKworICAgIC8vIGlmIHRoZSBjdXJyZW50
IHByb2dyYW0gd2FzIHJlbG9hZGVkIHN1Y2Nlc3NmdWxseSB3ZQorICAgIC8vIG5lZWQgdG8gaW5z
dGFsbCB0aGUgbmV3IGV4ZWN1dGFibGVzCisgICAgaWYgKGxvYWRlZCAmJiBwcm9ncmFtID09IG1T
dGF0ZS5jdXJyZW50UHJvZ3JhbSkKKyAgICB7CisgICAgICAgIG1DdXJyZW50UHJvZ3JhbUJpbmFy
eS5zZXQocHJvZ3JhbU9iamVjdC0+Z2V0UHJvZ3JhbUJpbmFyeSgpKTsKKyAgICB9CisKK30KKwor
dm9pZCBDb250ZXh0OjpiZWdpblF1ZXJ5KEdMZW51bSB0YXJnZXQsIEdMdWludCBxdWVyeSkKK3sK
KyAgICAvLyBGcm9tIEVYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbjogSWYgQmVnaW5RdWVyeUVY
VCBpcyBjYWxsZWQgd2l0aCBhbiA8aWQ+ICAKKyAgICAvLyBvZiB6ZXJvLCBpZiB0aGUgYWN0aXZl
IHF1ZXJ5IG9iamVjdCBuYW1lIGZvciA8dGFyZ2V0PiBpcyBub24temVybyAoZm9yIHRoZSAgCisg
ICAgLy8gdGFyZ2V0cyBBTllfU0FNUExFU19QQVNTRURfRVhUIGFuZCBBTllfU0FNUExFU19QQVNT
RURfQ09OU0VSVkFUSVZFX0VYVCwgaWYgIAorICAgIC8vIHRoZSBhY3RpdmUgcXVlcnkgZm9yIGVp
dGhlciB0YXJnZXQgaXMgbm9uLXplcm8pLCBpZiA8aWQ+IGlzIHRoZSBuYW1lIG9mIGFuIAorICAg
IC8vIGV4aXN0aW5nIHF1ZXJ5IG9iamVjdCB3aG9zZSB0eXBlIGRvZXMgbm90IG1hdGNoIDx0YXJn
ZXQ+LCBvciBpZiA8aWQ+IGlzIHRoZQorICAgIC8vIGFjdGl2ZSBxdWVyeSBvYmplY3QgbmFtZSBm
b3IgYW55IHF1ZXJ5IHR5cGUsIHRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcworICAgIC8v
IGdlbmVyYXRlZC4KKworICAgIC8vIEVuc3VyZSBubyBvdGhlciBxdWVyaWVzIGFyZSBhY3RpdmUK
KyAgICAvLyBOT1RFOiBJZiBvdGhlciBxdWVyaWVzIHRoYW4gb2NjbHVzaW9uIGFyZSBzdXBwb3J0
ZWQsIHdlIHdpbGwgbmVlZCB0byBjaGVjaworICAgIC8vIHNlcGFyYXRlbHkgdGhhdDoKKyAgICAv
LyAgICBhKSBUaGUgcXVlcnkgSUQgcGFzc2VkIGlzIG5vdCB0aGUgY3VycmVudCBhY3RpdmUgcXVl
cnkgZm9yIGFueSB0YXJnZXQvdHlwZQorICAgIC8vICAgIGIpIFRoZXJlIGFyZSBubyBhY3RpdmUg
cXVlcmllcyBmb3IgdGhlIHJlcXVlc3RlZCB0YXJnZXQgKGFuZCBpbiB0aGUgY2FzZQorICAgIC8v
ICAgICAgIG9mIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQgYW5kIEdMX0FOWV9TQU1QTEVTX1BB
U1NFRF9DT05TRVJWQVRJVkVfRVhULAorICAgIC8vICAgICAgIG5vIHF1ZXJ5IG1heSBiZSBhY3Rp
dmUgZm9yIGVpdGhlciBpZiBnbEJlZ2luUXVlcnkgdGFyZ2V0cyBlaXRoZXIuCisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBRVUVSWV9UWVBFX0NPVU5UOyBpKyspCisgICAgeworICAgICAgICBpZiAo
bVN0YXRlLmFjdGl2ZVF1ZXJ5W2ldLmdldCgpICE9IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICB9Cisg
ICAgfQorCisgICAgUXVlcnlUeXBlIHFUeXBlOworICAgIHN3aXRjaCAodGFyZ2V0KQorICAgIHsK
KyAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVDogCisgICAgICAgIHFUeXBlID0g
UVVFUllfQU5ZX1NBTVBMRVNfUEFTU0VEOyAKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhUOiAKKyAgICAgICAgcVR5cGUgPSBR
VUVSWV9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFOyAKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBkZWZhdWx0OiAKKyAgICAgICAgQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGdldFF1ZXJ5KHF1ZXJ5LCB0cnVlLCB0
YXJnZXQpOworCisgICAgLy8gY2hlY2sgdGhhdCBuYW1lIHdhcyBvYnRhaW5lZCB3aXRoIGdsR2Vu
UXVlcmllcworICAgIGlmICghcXVlcnlPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICAvLyBjaGVjayBmb3Ig
dHlwZSBtaXNtYXRjaAorICAgIGlmIChxdWVyeU9iamVjdC0+Z2V0VHlwZSgpICE9IHRhcmdldCkK
KyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgIH0KKworICAgIC8vIHNldCBxdWVyeSBhcyBhY3RpdmUgZm9yIHNwZWNpZmllZCB0YXJnZXQK
KyAgICBtU3RhdGUuYWN0aXZlUXVlcnlbcVR5cGVdLnNldChxdWVyeU9iamVjdCk7CisKKyAgICAv
LyBiZWdpbiBxdWVyeQorICAgIHF1ZXJ5T2JqZWN0LT5iZWdpbigpOworfQorCit2b2lkIENvbnRl
eHQ6OmVuZFF1ZXJ5KEdMZW51bSB0YXJnZXQpCit7CisgICAgUXVlcnlUeXBlIHFUeXBlOworCisg
ICAgc3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNT
RURfRVhUOiAKKyAgICAgICAgcVR5cGUgPSBRVUVSWV9BTllfU0FNUExFU19QQVNTRUQ7IAorICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElW
RV9FWFQ6IAorICAgICAgICBxVHlwZSA9IFFVRVJZX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJW
QVRJVkU7IAorICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IAorICAgICAgICBBU1NFUlQo
ZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUXVlcnkgKnF1ZXJ5T2JqZWN0
ID0gbVN0YXRlLmFjdGl2ZVF1ZXJ5W3FUeXBlXS5nZXQoKTsKKworICAgIGlmIChxdWVyeU9iamVj
dCA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgfQorCisgICAgcXVlcnlPYmplY3QtPmVuZCgpOworCisgICAgbVN0YXRl
LmFjdGl2ZVF1ZXJ5W3FUeXBlXS5zZXQoTlVMTCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0RnJh
bWVidWZmZXJaZXJvKEZyYW1lYnVmZmVyICpidWZmZXIpCit7CisgICAgZGVsZXRlIG1GcmFtZWJ1
ZmZlck1hcFswXTsKKyAgICBtRnJhbWVidWZmZXJNYXBbMF0gPSBidWZmZXI7CisgICAgaWYgKG1T
dGF0ZS5kcmF3RnJhbWVidWZmZXIgPT0gMCkKKyAgICB7CisgICAgICAgIG1Cb3VuZERyYXdGcmFt
ZWJ1ZmZlciA9IGJ1ZmZlcjsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0UmVuZGVyYnVm
ZmVyU3RvcmFnZShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHTHNpemVpIHNhbXBsZXMpCit7CisgICAgUmVuZGVyYnVmZmVyU3RvcmFnZSAqcmVu
ZGVyYnVmZmVyID0gTlVMTDsKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQorICAgIHsKKyAg
ICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6CisgICAgICAgIHJlbmRlcmJ1ZmZlciA9IG5l
dyBnbDo6RGVwdGhidWZmZXIobVJlbmRlcmVyLCB3aWR0aCwgaGVpZ2h0LCBzYW1wbGVzKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQkE0OgorICAgICAgY2FzZSBHTF9SR0I1X0Ex
OgorICAgICAgY2FzZSBHTF9SR0I1NjU6CisgICAgICBjYXNlIEdMX1JHQjhfT0VTOgorICAgICAg
Y2FzZSBHTF9SR0JBOF9PRVM6CisgICAgICAgIHJlbmRlcmJ1ZmZlciA9IG5ldyBnbDo6Q29sb3Ji
dWZmZXIobVJlbmRlcmVyLHdpZHRoLCBoZWlnaHQsIGludGVybmFsZm9ybWF0LCBzYW1wbGVzKTsK
KyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1NURU5DSUxfSU5ERVg4OgorICAgICAgICBy
ZW5kZXJidWZmZXIgPSBuZXcgZ2w6OlN0ZW5jaWxidWZmZXIobVJlbmRlcmVyLCB3aWR0aCwgaGVp
Z2h0LCBzYW1wbGVzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RF
TkNJTDhfT0VTOgorICAgICAgICByZW5kZXJidWZmZXIgPSBuZXcgZ2w6OkRlcHRoU3RlbmNpbGJ1
ZmZlcihtUmVuZGVyZXIsIHdpZHRoLCBoZWlnaHQsIHNhbXBsZXMpOworICAgICAgICBicmVhazsK
KyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7IHJldHVybjsKKyAgICB9CisK
KyAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlck9iamVjdCA9IG1TdGF0ZS5yZW5kZXJidWZm
ZXIuZ2V0KCk7CisgICAgcmVuZGVyYnVmZmVyT2JqZWN0LT5zZXRTdG9yYWdlKHJlbmRlcmJ1ZmZl
cik7Cit9CisKK0ZyYW1lYnVmZmVyICpDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlcih1bnNpZ25lZCBp
bnQgaGFuZGxlKQoreworICAgIEZyYW1lYnVmZmVyTWFwOjppdGVyYXRvciBmcmFtZWJ1ZmZlciA9
IG1GcmFtZWJ1ZmZlck1hcC5maW5kKGhhbmRsZSk7CisKKyAgICBpZiAoZnJhbWVidWZmZXIgPT0g
bUZyYW1lYnVmZmVyTWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg
fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBmcmFtZWJ1ZmZlci0+c2Vjb25kOwor
ICAgIH0KK30KKworRmVuY2UgKkNvbnRleHQ6OmdldEZlbmNlKHVuc2lnbmVkIGludCBoYW5kbGUp
Cit7CisgICAgRmVuY2VNYXA6Oml0ZXJhdG9yIGZlbmNlID0gbUZlbmNlTWFwLmZpbmQoaGFuZGxl
KTsKKworICAgIGlmIChmZW5jZSA9PSBtRmVuY2VNYXAuZW5kKCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZlbmNl
LT5zZWNvbmQ7CisgICAgfQorfQorCitRdWVyeSAqQ29udGV4dDo6Z2V0UXVlcnkodW5zaWduZWQg
aW50IGhhbmRsZSwgYm9vbCBjcmVhdGUsIEdMZW51bSB0eXBlKQoreworICAgIFF1ZXJ5TWFwOjpp
dGVyYXRvciBxdWVyeSA9IG1RdWVyeU1hcC5maW5kKGhhbmRsZSk7CisKKyAgICBpZiAocXVlcnkg
PT0gbVF1ZXJ5TWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmICghcXVlcnktPnNlY29uZCAmJiBjcmVhdGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHF1ZXJ5LT5zZWNvbmQgPSBuZXcgUXVlcnkobVJlbmRlcmVy
LCB0eXBlLCBoYW5kbGUpOworICAgICAgICAgICAgcXVlcnktPnNlY29uZC0+YWRkUmVmKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHF1ZXJ5LT5zZWNvbmQ7CisgICAgfQorfQorCitCdWZm
ZXIgKkNvbnRleHQ6OmdldEFycmF5QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbVN0YXRlLmFycmF5
QnVmZmVyLmdldCgpOworfQorCitCdWZmZXIgKkNvbnRleHQ6OmdldEVsZW1lbnRBcnJheUJ1ZmZl
cigpCit7CisgICAgcmV0dXJuIG1TdGF0ZS5lbGVtZW50QXJyYXlCdWZmZXIuZ2V0KCk7Cit9CisK
K1Byb2dyYW1CaW5hcnkgKkNvbnRleHQ6OmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCkKK3sKKyAg
ICByZXR1cm4gbUN1cnJlbnRQcm9ncmFtQmluYXJ5LmdldCgpOworfQorCitUZXh0dXJlMkQgKkNv
bnRleHQ6OmdldFRleHR1cmUyRCgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHR1cmUy
RCo+KGdldFNhbXBsZXJUZXh0dXJlKG1TdGF0ZS5hY3RpdmVTYW1wbGVyLCBURVhUVVJFXzJEKSk7
Cit9CisKK1RleHR1cmVDdWJlTWFwICpDb250ZXh0OjpnZXRUZXh0dXJlQ3ViZU1hcCgpCit7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHR1cmVDdWJlTWFwKj4oZ2V0U2FtcGxlclRleHR1cmUo
bVN0YXRlLmFjdGl2ZVNhbXBsZXIsIFRFWFRVUkVfQ1VCRSkpOworfQorCitUZXh0dXJlICpDb250
ZXh0OjpnZXRTYW1wbGVyVGV4dHVyZSh1bnNpZ25lZCBpbnQgc2FtcGxlciwgVGV4dHVyZVR5cGUg
dHlwZSkKK3sKKyAgICBHTHVpbnQgdGV4aWQgPSBtU3RhdGUuc2FtcGxlclRleHR1cmVbdHlwZV1b
c2FtcGxlcl0uaWQoKTsKKworICAgIGlmICh0ZXhpZCA9PSAwKSAgIC8vIFNwZWNpYWwgY2FzZTog
MCByZWZlcnMgdG8gZGlmZmVyZW50IGluaXRpYWwgdGV4dHVyZXMgYmFzZWQgb24gdGhlIHRhcmdl
dAorICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgZGVm
YXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICBjYXNlIFRFWFRVUkVfMkQ6IHJldHVybiBt
VGV4dHVyZTJEWmVyby5nZXQoKTsKKyAgICAgICAgICBjYXNlIFRFWFRVUkVfQ1VCRTogcmV0dXJu
IG1UZXh0dXJlQ3ViZU1hcFplcm8uZ2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gbVN0YXRlLnNhbXBsZXJUZXh0dXJlW3R5cGVdW3NhbXBsZXJdLmdldCgpOworfQorCitib29s
IENvbnRleHQ6OmdldEJvb2xlYW52KEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMpCit7
CisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1NIQURFUl9DT01QSUxF
UjogICAgICAgICAgICpwYXJhbXMgPSBHTF9UUlVFOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQ6ICAgICpwYXJh
bXMgPSBtU3RhdGUuc2FtcGxlQ292ZXJhZ2VJbnZlcnQ7ICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX0RFUFRIX1dSSVRFTUFTSzogICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZGVwdGhT
dGVuY2lsLmRlcHRoTWFzazsgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0NPTE9SX1dSSVRF
TUFTSzoKKyAgICAgICAgcGFyYW1zWzBdID0gbVN0YXRlLmJsZW5kLmNvbG9yTWFza1JlZDsKKyAg
ICAgICAgcGFyYW1zWzFdID0gbVN0YXRlLmJsZW5kLmNvbG9yTWFza0dyZWVuOworICAgICAgICBw
YXJhbXNbMl0gPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQmx1ZTsKKyAgICAgICAgcGFyYW1zWzNd
ID0gbVN0YXRlLmJsZW5kLmNvbG9yTWFza0FscGhhOworICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfQ1VMTF9GQUNFOiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5yYXN0ZXJp
emVyLmN1bGxGYWNlOyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZT
RVRfRklMTDogICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5yYXN0ZXJpemVyLnBvbHlnb25PZmZzZXRG
aWxsOyBicmVhazsKKyAgICAgIGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOiAgKnBh
cmFtcyA9IG1TdGF0ZS5ibGVuZC5zYW1wbGVBbHBoYVRvQ292ZXJhZ2U7ICBicmVhazsKKyAgICAg
IGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFOiAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5zYW1w
bGVDb3ZlcmFnZTsgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU0NJU1NPUl9U
RVNUOiAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5zY2lzc29yVGVzdDsgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9URVNUOiAgICAgICAgICAgICAg
KnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbFRlc3Q7ICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfREVQVEhfVEVTVDogICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5k
ZXB0aFN0ZW5jaWwuZGVwdGhUZXN0OyAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQkxFTkQ6
ICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5ibGVuZC5ibGVuZDsgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfRElUSEVSOiAgICAgICAgICAgICAgICAg
ICAgKnBhcmFtcyA9IG1TdGF0ZS5ibGVuZC5kaXRoZXI7ICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfQ09OVEVYVF9ST0JVU1RfQUNDRVNTX0VYVDogKnBhcmFtcyA9IG1Sb2J1
c3RBY2Nlc3MgPyBHTF9UUlVFIDogR0xfRkFMU0U7ICBicmVhazsKKyAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBDb250ZXh0OjpnZXRGbG9hdHYoR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCit7Cisg
ICAgLy8gUGxlYXNlIG5vdGU6IERFUFRIX0NMRUFSX1ZBTFVFIGlzIGluY2x1ZGVkIGluIG91ciBp
bnRlcm5hbCBnZXRGbG9hdHYgaW1wbGVtZW50YXRpb24KKyAgICAvLyBiZWNhdXNlIGl0IGlzIHN0
b3JlZCBhcyBhIGZsb2F0LCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgdGhlIEdMIEVTIDIuMCBzcGVj
IG5hbWVzCisgICAgLy8gR2V0SW50ZWdlcnYgYXMgaXRzIG5hdGl2ZSBxdWVyeSBmdW5jdGlvbi4g
QXMgaXQgd291bGQgcmVxdWlyZSBjb252ZXJzaW9uIGluIGFueQorICAgIC8vIGNhc2UsIHRoaXMg
c2hvdWxkIG1ha2Ugbm8gZGlmZmVyZW5jZSB0byB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4KKyAg
ICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgIGNhc2UgR0xfTElORV9XSURUSDogICAgICAg
ICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmxpbmVXaWR0aDsgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRTogICAgKnBhcmFt
cyA9IG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZVZhbHVlOyAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9ERVBUSF9DTEVBUl9WQUxVRTogICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZGVw
dGhDbGVhclZhbHVlOyAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUE9M
WUdPTl9PRkZTRVRfRkFDVE9SOiAgICAqcGFyYW1zID0gbVN0YXRlLnJhc3Rlcml6ZXIucG9seWdv
bk9mZnNldEZhY3RvcjsgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VUX1VO
SVRTOiAgICAgKnBhcmFtcyA9IG1TdGF0ZS5yYXN0ZXJpemVyLnBvbHlnb25PZmZzZXRVbml0czsg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0U6CisgICAg
ICAgIHBhcmFtc1swXSA9IGdsOjpBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VfTUlOOworICAgICAg
ICBwYXJhbXNbMV0gPSBnbDo6QUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFX01BWDsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRToKKyAgICAgICAg
cGFyYW1zWzBdID0gZ2w6OkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRV9NSU47CisgICAgICAgIHBh
cmFtc1sxXSA9IGdldE1heGltdW1Qb2ludFNpemUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX0RFUFRIX1JBTkdFOgorICAgICAgICBwYXJhbXNbMF0gPSBtU3RhdGUuek5lYXI7Cisg
ICAgICAgIHBhcmFtc1sxXSA9IG1TdGF0ZS56RmFyOworICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfQ09MT1JfQ0xFQVJfVkFMVUU6CisgICAgICAgIHBhcmFtc1swXSA9IG1TdGF0ZS5jb2xv
ckNsZWFyVmFsdWUucmVkOworICAgICAgICBwYXJhbXNbMV0gPSBtU3RhdGUuY29sb3JDbGVhclZh
bHVlLmdyZWVuOworICAgICAgICBwYXJhbXNbMl0gPSBtU3RhdGUuY29sb3JDbGVhclZhbHVlLmJs
dWU7CisgICAgICAgIHBhcmFtc1szXSA9IG1TdGF0ZS5jb2xvckNsZWFyVmFsdWUuYWxwaGE7Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9CTEVORF9DT0xPUjoKKyAgICAgICAgcGFyYW1z
WzBdID0gbVN0YXRlLmJsZW5kQ29sb3IucmVkOworICAgICAgICBwYXJhbXNbMV0gPSBtU3RhdGUu
YmxlbmRDb2xvci5ncmVlbjsKKyAgICAgICAgcGFyYW1zWzJdID0gbVN0YXRlLmJsZW5kQ29sb3Iu
Ymx1ZTsKKyAgICAgICAgcGFyYW1zWzNdID0gbVN0YXRlLmJsZW5kQ29sb3IuYWxwaGE7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6
CisgICAgICAgIGlmICghc3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9weSgpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgKnBhcmFt
cyA9IG1NYXhUZXh0dXJlQW5pc290cm9weTsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgQ29udGV4dDo6Z2V0SW50ZWdlcnYoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQor
eworICAgIGlmIChwbmFtZSA+PSBHTF9EUkFXX0JVRkZFUjBfRVhUICYmIHBuYW1lIDw9IEdMX0RS
QVdfQlVGRkVSMTVfRVhUKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGNvbG9yQXR0YWNo
bWVudCA9IChwbmFtZSAtIEdMX0RSQVdfQlVGRkVSMF9FWFQpOworCisgICAgICAgIGlmIChjb2xv
ckF0dGFjaG1lbnQgPj0gbVJlbmRlcmVyLT5nZXRNYXhSZW5kZXJUYXJnZXRzKCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIHJldHVybiB0cnVlIHRvIHN0b3AgZnVydGhlciBvcGVyYXRpb24g
aW4gdGhlIHBhcmVudCBjYWxsCisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIEZyYW1lYnVmZmVyICpm
cmFtZWJ1ZmZlciA9IGdldERyYXdGcmFtZWJ1ZmZlcigpOworCisgICAgICAgICpwYXJhbXMgPSBm
cmFtZWJ1ZmZlci0+Z2V0RHJhd0J1ZmZlclN0YXRlKGNvbG9yQXR0YWNobWVudCk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIFBsZWFzZSBub3RlOiBERVBUSF9DTEVBUl9W
QUxVRSBpcyBub3QgaW5jbHVkZWQgaW4gb3VyIGludGVybmFsIGdldEludGVnZXJ2IGltcGxlbWVu
dGF0aW9uCisgICAgLy8gYmVjYXVzZSBpdCBpcyBzdG9yZWQgYXMgYSBmbG9hdCwgZGVzcGl0ZSB0
aGUgZmFjdCB0aGF0IHRoZSBHTCBFUyAyLjAgc3BlYyBuYW1lcworICAgIC8vIEdldEludGVnZXJ2
IGFzIGl0cyBuYXRpdmUgcXVlcnkgZnVuY3Rpb24uIEFzIGl0IHdvdWxkIHJlcXVpcmUgY29udmVy
c2lvbiBpbiBhbnkKKyAgICAvLyBjYXNlLCB0aGlzIHNob3VsZCBtYWtlIG5vIGRpZmZlcmVuY2Ug
dG8gdGhlIGNhbGxpbmcgYXBwbGljYXRpb24uIFlvdSBtYXkgZmluZCBpdCBpbiAKKyAgICAvLyBD
b250ZXh0OjpnZXRGbG9hdHYuCisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICBjYXNl
IEdMX01BWF9WRVJURVhfQVRUUklCUzogICAgICAgICAgICAgICAqcGFyYW1zID0gZ2w6Ok1BWF9W
RVJURVhfQVRUUklCUzsgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX1ZF
UlRFWF9VTklGT1JNX1ZFQ1RPUlM6ICAgICAgICpwYXJhbXMgPSBtUmVuZGVyZXItPmdldE1heFZl
cnRleFVuaWZvcm1WZWN0b3JzKCk7IGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfVkFSWUlOR19W
RUNUT1JTOiAgICAgICAgICAgICAgKnBhcmFtcyA9IG1SZW5kZXJlci0+Z2V0TWF4VmFyeWluZ1Zl
Y3RvcnMoKTsgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9DT01CSU5FRF9URVhUVVJFX0lN
QUdFX1VOSVRTOiAqcGFyYW1zID0gbVJlbmRlcmVyLT5nZXRNYXhDb21iaW5lZFRleHR1cmVJbWFn
ZVVuaXRzKCk7IGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0Vf
VU5JVFM6ICAgKnBhcmFtcyA9IG1SZW5kZXJlci0+Z2V0TWF4VmVydGV4VGV4dHVyZUltYWdlVW5p
dHMoKTsgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTOiAgICAg
ICAgICAqcGFyYW1zID0gZ2w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTOyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUzogICAgICpwYXJh
bXMgPSBtUmVuZGVyZXItPmdldE1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKTsgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRTogICAgICAgICAgICAqcGFyYW1zID0g
Z2V0TWF4aW11bVJlbmRlcmJ1ZmZlckRpbWVuc2lvbigpOyAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVDogICAgICAgICpwYXJhbXMgPSBtUmVuZGVyZXIt
PmdldE1heFJlbmRlclRhcmdldHMoKTsgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfRFJB
V19CVUZGRVJTX0VYVDogICAgICAgICAgICAgKnBhcmFtcyA9IG1SZW5kZXJlci0+Z2V0TWF4UmVu
ZGVyVGFyZ2V0cygpOyAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX05VTV9TSEFERVJfQklOQVJZ
X0ZPUk1BVFM6ICAgICAgICAqcGFyYW1zID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTOiAgICAg
IC8qIG5vIHNoYWRlciBiaW5hcnkgZm9ybWF0cyBhcmUgc3VwcG9ydGVkICovICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVJfQklORElORzogICAgICAgICAgICAgKnBh
cmFtcyA9IG1TdGF0ZS5hcnJheUJ1ZmZlci5pZCgpOyAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkc6ICAgICAqcGFyYW1zID0gbVN0
YXRlLmVsZW1lbnRBcnJheUJ1ZmZlci5pZCgpOyAgICAgICBicmVhazsKKyAgICAgIC8vY2FzZSBH
TF9GUkFNRUJVRkZFUl9CSU5ESU5HOiAgICAgICAgICAgIC8vIG5vdyBlcXVpdmFsZW50IHRvIEdM
X0RSQVdfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRQorICAgICAgY2FzZSBHTF9EUkFXX0ZSQU1F
QlVGRkVSX0JJTkRJTkdfQU5HTEU6ICAgKnBhcmFtcyA9IG1TdGF0ZS5kcmF3RnJhbWVidWZmZXI7
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JFQURfRlJBTUVCVUZGRVJfQklO
RElOR19BTkdMRTogICAqcGFyYW1zID0gbVN0YXRlLnJlYWRGcmFtZWJ1ZmZlcjsgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0JJTkRJTkc6ICAgICAgICAg
ICAgICpwYXJhbXMgPSBtU3RhdGUucmVuZGVyYnVmZmVyLmlkKCk7ICAgICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9DVVJSRU5UX1BST0dSQU06ICAgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IG1TdGF0ZS5jdXJyZW50UHJvZ3JhbTsgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1BBQ0tfQUxJR05NRU5UOiAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRl
LnBhY2tBbGlnbm1lbnQ7ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUEFD
S19SRVZFUlNFX1JPV19PUkRFUl9BTkdMRTogICAgICpwYXJhbXMgPSBtU3RhdGUucGFja1JldmVy
c2VSb3dPcmRlcjsgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9VTlBBQ0tfQUxJR05N
RU5UOiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS51bnBhY2tBbGlnbm1lbnQ7ICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0dFTkVSQVRFX01JUE1BUF9ISU5UOiAg
ICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmdlbmVyYXRlTWlwbWFwSGludDsgICAgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9P
RVM6ICpwYXJhbXMgPSBtU3RhdGUuZnJhZ21lbnRTaGFkZXJEZXJpdmF0aXZlSGludDsgYnJlYWs7
CisgICAgICBjYXNlIEdMX0FDVElWRV9URVhUVVJFOiAgICAgICAgICAgICAgICAgICAqcGFyYW1z
ID0gKG1TdGF0ZS5hY3RpdmVTYW1wbGVyICsgR0xfVEVYVFVSRTApOyBicmVhazsKKyAgICAgIGNh
c2UgR0xfU1RFTkNJTF9GVU5DOiAgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUu
ZGVwdGhTdGVuY2lsLnN0ZW5jaWxGdW5jOyAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfU1RFTkNJTF9SRUY6ICAgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuc3Rl
bmNpbFJlZjsgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
U1RFTkNJTF9WQUxVRV9NQVNLOiAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZGVwdGhT
dGVuY2lsLnN0ZW5jaWxNYXNrOyAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RF
TkNJTF9CQUNLX0ZVTkM6ICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZGVwdGhTdGVu
Y2lsLnN0ZW5jaWxCYWNrRnVuYzsgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RFTkNJ
TF9CQUNLX1JFRjogICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuc3RlbmNpbEJhY2tS
ZWY7ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9C
QUNLX1ZBTFVFX01BU0s6ICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0
ZW5jaWxCYWNrTWFzazsgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9GQUlM
OiAgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5j
aWxGYWlsOyAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9QQVNTX0RF
UFRIX0ZBSUw6ICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxQ
YXNzRGVwdGhGYWlsOyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9QQVNTX0RFUFRI
X1BBU1M6ICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxQYXNz
RGVwdGhQYXNzOyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX0ZBSUw6ICAg
ICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxCYWNrRmFp
bDsgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhf
RkFJTDogICAgICpwYXJhbXMgPSBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxCYWNrUGFzc0Rl
cHRoRmFpbDsgYnJlYWs7CisgICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BB
U1M6ICAgICAqcGFyYW1zID0gbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsQmFja1Bhc3NEZXB0
aFBhc3M7IGJyZWFrOworICAgICAgY2FzZSBHTF9ERVBUSF9GVU5DOiAgICAgICAgICAgICAgICAg
ICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5jaWwuZGVwdGhGdW5jOyAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9CTEVORF9TUkNfUkdCOiAgICAgICAgICAgICAgICAg
ICAgKnBhcmFtcyA9IG1TdGF0ZS5ibGVuZC5zb3VyY2VCbGVuZFJHQjsgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9CTEVORF9TUkNfQUxQSEE6ICAgICAgICAgICAgICAgICAg
KnBhcmFtcyA9IG1TdGF0ZS5ibGVuZC5zb3VyY2VCbGVuZEFscGhhOyAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9CTEVORF9EU1RfUkdCOiAgICAgICAgICAgICAgICAgICAgKnBh
cmFtcyA9IG1TdGF0ZS5ibGVuZC5kZXN0QmxlbmRSR0I7ICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9CTEVORF9EU1RfQUxQSEE6ICAgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IG1TdGF0ZS5ibGVuZC5kZXN0QmxlbmRBbHBoYTsgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9CTEVORF9FUVVBVElPTl9SR0I6ICAgICAgICAgICAgICAgKnBhcmFtcyA9
IG1TdGF0ZS5ibGVuZC5ibGVuZEVxdWF0aW9uUkdCOyAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9CTEVORF9FUVVBVElPTl9BTFBIQTogICAgICAgICAgICAgKnBhcmFtcyA9IG1T
dGF0ZS5ibGVuZC5ibGVuZEVxdWF0aW9uQWxwaGE7ICAgICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9TVEVOQ0lMX1dSSVRFTUFTSzogICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0
ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbFdyaXRlbWFzazsgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLOiAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5k
ZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tXcml0ZW1hc2s7ICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9TVEVOQ0lMX0NMRUFSX1ZBTFVFOiAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5zdGVu
Y2lsQ2xlYXJWYWx1ZTsgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1NVQlBJWEVM
X0JJVFM6ICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gNDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX1RFWFRVUkVfU0laRTog
ICAgICAgICAgICAgICAgICpwYXJhbXMgPSBnZXRNYXhpbXVtVGV4dHVyZURpbWVuc2lvbigpOyAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOiAg
ICAgICAgKnBhcmFtcyA9IGdldE1heGltdW1DdWJlVGV4dHVyZURpbWVuc2lvbigpOyAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzogICAKKyAg
ICAgICAgcGFyYW1zWzBdID0gbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0czsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9TQU1QTEVTX0FOR0xFOgorICAgICAgICB7CisgICAg
ICAgICAgICBHTHNpemVpIG1heFNhbXBsZXMgPSBnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCk7Cisg
ICAgICAgICAgICBpZiAobWF4U2FtcGxlcyAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICpwYXJhbXMgPSBtYXhTYW1wbGVzOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIGNhc2UgR0xf
U0FNUExFX0JVRkZFUlM6ICAgICAgICAgICAgICAgICAgIAorICAgICAgY2FzZSBHTF9TQU1QTEVT
OgorICAgICAgICB7CisgICAgICAgICAgICBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0g
Z2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICBpZiAoZnJhbWVidWZmZXItPmNvbXBs
ZXRlbmVzcygpID09IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgY2FzZSBHTF9TQU1QTEVfQlVGRkVSUzoKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKCkgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IDE7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfU0FN
UExFUzoKKyAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGZyYW1lYnVmZmVyLT5nZXRTYW1w
bGVzKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgKnBhcmFtcyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRToKKyAgICAg
IGNhc2UgR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQ6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsIHR5cGU7CisgICAgICAgICAgICBpZiAoZ2V0Q3VycmVu
dFJlYWRGb3JtYXRUeXBlKCZmb3JtYXQsICZ0eXBlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAocG5hbWUgPT0gR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQp
CisgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBmb3JtYXQ7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gdHlwZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX1ZJRVdQT1JUX0RJ
TVM6CisgICAgICAgIHsKKyAgICAgICAgICAgIHBhcmFtc1swXSA9IG1NYXhWaWV3cG9ydERpbWVu
c2lvbjsKKyAgICAgICAgICAgIHBhcmFtc1sxXSA9IG1NYXhWaWV3cG9ydERpbWVuc2lvbjsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9URVhUVVJF
X0ZPUk1BVFM6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChzdXBwb3J0c0RYVDFUZXh0dXJl
cygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICpwYXJhbXMrKyA9IEdMX0NPTVBS
RVNTRURfUkdCX1MzVENfRFhUMV9FWFQ7CisgICAgICAgICAgICAgICAgKnBhcmFtcysrID0gR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoc3VwcG9ydHNEWFQzVGV4dHVyZXMoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAqcGFyYW1zKysgPSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgKnBhcmFtcysrID0gR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9BTkdMRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfVklFV1BPUlQ6CisgICAgICAgIHBhcmFtc1swXSA9IG1TdGF0ZS52
aWV3cG9ydC54OworICAgICAgICBwYXJhbXNbMV0gPSBtU3RhdGUudmlld3BvcnQueTsKKyAgICAg
ICAgcGFyYW1zWzJdID0gbVN0YXRlLnZpZXdwb3J0LndpZHRoOworICAgICAgICBwYXJhbXNbM10g
PSBtU3RhdGUudmlld3BvcnQuaGVpZ2h0OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
U0NJU1NPUl9CT1g6CisgICAgICAgIHBhcmFtc1swXSA9IG1TdGF0ZS5zY2lzc29yLng7CisgICAg
ICAgIHBhcmFtc1sxXSA9IG1TdGF0ZS5zY2lzc29yLnk7CisgICAgICAgIHBhcmFtc1syXSA9IG1T
dGF0ZS5zY2lzc29yLndpZHRoOworICAgICAgICBwYXJhbXNbM10gPSBtU3RhdGUuc2Npc3Nvci5o
ZWlnaHQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0VfTU9ERTogICAg
ICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5yYXN0ZXJpemVyLmN1bGxNb2RlOyAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9GUk9OVF9GQUNFOiAgICAgICAgICAgICAgICAgICAgICAgKnBh
cmFtcyA9IG1TdGF0ZS5yYXN0ZXJpemVyLmZyb250RmFjZTsgIGJyZWFrOworICAgICAgY2FzZSBH
TF9SRURfQklUUzoKKyAgICAgIGNhc2UgR0xfR1JFRU5fQklUUzoKKyAgICAgIGNhc2UgR0xfQkxV
RV9CSVRTOgorICAgICAgY2FzZSBHTF9BTFBIQV9CSVRTOgorICAgICAgICB7CisgICAgICAgICAg
ICBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7Cisg
ICAgICAgICAgICBnbDo6UmVuZGVyYnVmZmVyICpjb2xvcmJ1ZmZlciA9IGZyYW1lYnVmZmVyLT5n
ZXRGaXJzdENvbG9yYnVmZmVyKCk7CisKKyAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlcikKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfUkVEX0JJVFM6ICAgKnBhcmFtcyA9IGNv
bG9yYnVmZmVyLT5nZXRSZWRTaXplKCk7ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBj
YXNlIEdMX0dSRUVOX0JJVFM6ICpwYXJhbXMgPSBjb2xvcmJ1ZmZlci0+Z2V0R3JlZW5TaXplKCk7
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9CTFVFX0JJVFM6ICAqcGFyYW1z
ID0gY29sb3JidWZmZXItPmdldEJsdWVTaXplKCk7ICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgIGNhc2UgR0xfQUxQSEFfQklUUzogKnBhcmFtcyA9IGNvbG9yYnVmZmVyLT5nZXRBbHBoYVNp
emUoKTsgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICpwYXJhbXMgPSAwOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9E
RVBUSF9CSVRTOgorICAgICAgICB7CisgICAgICAgICAgICBnbDo6RnJhbWVidWZmZXIgKmZyYW1l
YnVmZmVyID0gZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICBnbDo6UmVuZGVyYnVm
ZmVyICpkZXB0aGJ1ZmZlciA9IGZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1ZmZlcigpOworCisgICAg
ICAgICAgICBpZiAoZGVwdGhidWZmZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
KnBhcmFtcyA9IGRlcHRoYnVmZmVyLT5nZXREZXB0aFNpemUoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0g
MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfU1RFTkNJTF9CSVRTOgorICAgICAgICB7CisgICAgICAgICAgICBnbDo6RnJhbWVidWZmZXIg
KmZyYW1lYnVmZmVyID0gZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICBnbDo6UmVu
ZGVyYnVmZmVyICpzdGVuY2lsYnVmZmVyID0gZnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXIo
KTsKKworICAgICAgICAgICAgaWYgKHN0ZW5jaWxidWZmZXIpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IHN0ZW5jaWxidWZmZXItPmdldFN0ZW5jaWxTaXplKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgKnBhcmFtcyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR18yRDoKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKG1TdGF0ZS5hY3RpdmVTYW1wbGVyID4gbVJlbmRlcmVyLT5nZXRNYXhDb21iaW5l
ZFRleHR1cmVJbWFnZVVuaXRzKCkgLSAxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnNh
bXBsZXJUZXh0dXJlW1RFWFRVUkVfMkRdW21TdGF0ZS5hY3RpdmVTYW1wbGVyXS5pZCgpOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfQ1VC
RV9NQVA6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtU3RhdGUuYWN0aXZlU2FtcGxlciA+
IG1SZW5kZXJlci0+Z2V0TWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIC0gMSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5zYW1wbGVyVGV4dHVyZVtURVhUVVJFX0NVQkVdW21TdGF0
ZS5hY3RpdmVTYW1wbGVyXS5pZCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1lfRVhUOgorICAgICAgICAqcGFyYW1z
ID0gbVJlc2V0U3RyYXRlZ3k7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9OVU1fUFJP
R1JBTV9CSU5BUllfRk9STUFUU19PRVM6CisgICAgICAgICpwYXJhbXMgPSAxOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfUFJPR1JBTV9CSU5BUllfRk9STUFUU19PRVM6CisgICAgICAg
ICpwYXJhbXMgPSBHTF9QUk9HUkFNX0JJTkFSWV9BTkdMRTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXJJbmZvKEdMZW51bSBwbmFt
ZSwgR0xlbnVtICp0eXBlLCB1bnNpZ25lZCBpbnQgKm51bVBhcmFtcykKK3sKKyAgICBpZiAocG5h
bWUgPj0gR0xfRFJBV19CVUZGRVIwX0VYVCAmJiBwbmFtZSA8PSBHTF9EUkFXX0JVRkZFUjE1X0VY
VCkKKyAgICB7CisgICAgICAgICp0eXBlID0gR0xfSU5UOworICAgICAgICAqbnVtUGFyYW1zID0g
MTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gUGxlYXNlIG5vdGU6IHRo
ZSBxdWVyeSB0eXBlIHJldHVybmVkIGZvciBERVBUSF9DTEVBUl9WQUxVRSBpbiB0aGlzIGltcGxl
bWVudGF0aW9uCisgICAgLy8gaXMgRkxPQVQgcmF0aGVyIHRoYW4gSU5ULCBhcyB3b3VsZCBiZSBz
dWdnZXN0ZWQgYnkgdGhlIEdMIEVTIDIuMCBzcGVjLiBUaGlzIGlzIGR1ZQorICAgIC8vIHRvIHRo
ZSBmYWN0IHRoYXQgaXQgaXMgc3RvcmVkIGludGVybmFsbHkgYXMgYSBmbG9hdCwgYW5kIHNvIHdv
dWxkIHJlcXVpcmUgY29udmVyc2lvbgorICAgIC8vIGlmIHJldHVybmVkIGZyb20gQ29udGV4dDo6
Z2V0SW50ZWdlcnYuIFNpbmNlIHRoaXMgY29udmVyc2lvbiBpcyBhbHJlYWR5IGltcGxlbWVudGVk
IAorICAgIC8vIGluIHRoZSBjYXNlIHRoYXQgb25lIGNhbGxzIGdsR2V0SW50ZWdlcnYgdG8gcmV0
cmlldmUgYSBmbG9hdC10eXBlZCBzdGF0ZSB2YXJpYWJsZSwgd2UKKyAgICAvLyBwbGFjZSBERVBU
SF9DTEVBUl9WQUxVRSB3aXRoIHRoZSBmbG9hdHMuIFRoaXMgc2hvdWxkIG1ha2Ugbm8gZGlmZmVy
ZW5jZSB0byB0aGUgY2FsbGluZworICAgIC8vIGFwcGxpY2F0aW9uLgorICAgIHN3aXRjaCAocG5h
bWUpCisgICAgeworICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzoKKyAg
ICAgICAgeworICAgICAgICAgICAgKnR5cGUgPSBHTF9JTlQ7CisgICAgICAgICAgICAqbnVtUGFy
YW1zID0gbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0czsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTOgorICAgICAgICB7Cisg
ICAgICAgICAgICAqdHlwZSA9IEdMX0lOVDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAwOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX0FUVFJJ
QlM6CisgICAgICBjYXNlIEdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOgorICAgICAgY2Fz
ZSBHTF9NQVhfVkFSWUlOR19WRUNUT1JTOgorICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURfVEVY
VFVSRV9JTUFHRV9VTklUUzoKKyAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdF
X1VOSVRTOgorICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUzoKKyAgICAgIGNh
c2UgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUzoKKyAgICAgIGNhc2UgR0xfTUFYX1JF
TkRFUkJVRkZFUl9TSVpFOgorICAgICAgY2FzZSBHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhU
OgorICAgICAgY2FzZSBHTF9NQVhfRFJBV19CVUZGRVJTX0VYVDoKKyAgICAgIGNhc2UgR0xfTlVN
X1NIQURFUl9CSU5BUllfRk9STUFUUzoKKyAgICAgIGNhc2UgR0xfTlVNX0NPTVBSRVNTRURfVEVY
VFVSRV9GT1JNQVRTOgorICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVJfQklORElORzoKKyAgICAg
IGNhc2UgR0xfRlJBTUVCVUZGRVJfQklORElORzoKKyAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVS
X0JJTkRJTkc6CisgICAgICBjYXNlIEdMX0NVUlJFTlRfUFJPR1JBTToKKyAgICAgIGNhc2UgR0xf
UEFDS19BTElHTk1FTlQ6CisgICAgICBjYXNlIEdMX1BBQ0tfUkVWRVJTRV9ST1dfT1JERVJfQU5H
TEU6CisgICAgICBjYXNlIEdMX1VOUEFDS19BTElHTk1FTlQ6CisgICAgICBjYXNlIEdMX0dFTkVS
QVRFX01JUE1BUF9ISU5UOgorICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElW
RV9ISU5UX09FUzoKKyAgICAgIGNhc2UgR0xfUkVEX0JJVFM6CisgICAgICBjYXNlIEdMX0dSRUVO
X0JJVFM6CisgICAgICBjYXNlIEdMX0JMVUVfQklUUzoKKyAgICAgIGNhc2UgR0xfQUxQSEFfQklU
UzoKKyAgICAgIGNhc2UgR0xfREVQVEhfQklUUzoKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CSVRT
OgorICAgICAgY2FzZSBHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HOgorICAgICAgY2Fz
ZSBHTF9DVUxMX0ZBQ0VfTU9ERToKKyAgICAgIGNhc2UgR0xfRlJPTlRfRkFDRToKKyAgICAgIGNh
c2UgR0xfQUNUSVZFX1RFWFRVUkU6CisgICAgICBjYXNlIEdMX1NURU5DSUxfRlVOQzoKKyAgICAg
IGNhc2UgR0xfU1RFTkNJTF9WQUxVRV9NQVNLOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX1JFRjoK
KyAgICAgIGNhc2UgR0xfU1RFTkNJTF9GQUlMOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX1BBU1Nf
REVQVEhfRkFJTDoKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1M6CisgICAg
ICBjYXNlIEdMX1NURU5DSUxfQkFDS19GVU5DOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tf
VkFMVUVfTUFTSzoKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1JFRjoKKyAgICAgIGNhc2Ug
R0xfU1RFTkNJTF9CQUNLX0ZBSUw6CisgICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19QQVNTX0RF
UFRIX0ZBSUw6CisgICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1M6Cisg
ICAgICBjYXNlIEdMX0RFUFRIX0ZVTkM6CisgICAgICBjYXNlIEdMX0JMRU5EX1NSQ19SR0I6Cisg
ICAgICBjYXNlIEdMX0JMRU5EX1NSQ19BTFBIQToKKyAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX1JH
QjoKKyAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX0FMUEhBOgorICAgICAgY2FzZSBHTF9CTEVORF9F
UVVBVElPTl9SR0I6CisgICAgICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBOgorICAgICAg
Y2FzZSBHTF9TVEVOQ0lMX1dSSVRFTUFTSzoKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1dS
SVRFTUFTSzoKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9DTEVBUl9WQUxVRToKKyAgICAgIGNhc2Ug
R0xfU1VCUElYRUxfQklUUzoKKyAgICAgIGNhc2UgR0xfTUFYX1RFWFRVUkVfU0laRToKKyAgICAg
IGNhc2UgR0xfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRToKKyAgICAgIGNhc2UgR0xfU0FNUExF
X0JVRkZFUlM6CisgICAgICBjYXNlIEdMX1NBTVBMRVM6CisgICAgICBjYXNlIEdMX0lNUExFTUVO
VEFUSU9OX0NPTE9SX1JFQURfVFlQRToKKyAgICAgIGNhc2UgR0xfSU1QTEVNRU5UQVRJT05fQ09M
T1JfUkVBRF9GT1JNQVQ6CisgICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR18yRDoKKyAgICAg
IGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQOgorICAgICAgY2FzZSBHTF9SRVNFVF9O
T1RJRklDQVRJT05fU1RSQVRFR1lfRVhUOgorICAgICAgY2FzZSBHTF9OVU1fUFJPR1JBTV9CSU5B
UllfRk9STUFUU19PRVM6CisgICAgICBjYXNlIEdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFNfT0VT
OgorICAgICAgICB7CisgICAgICAgICAgICAqdHlwZSA9IEdMX0lOVDsKKyAgICAgICAgICAgICpu
dW1QYXJhbXMgPSAxOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9N
QVhfU0FNUExFU19BTkdMRToKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGdldE1heFN1cHBv
cnRlZFNhbXBsZXMoKSAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICp0eXBl
ID0gR0xfSU5UOworICAgICAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgR0xfTUFYX1ZJRVdQT1JUX0RJTVM6CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBl
ID0gR0xfSU5UOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDI7CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1ZJRVdQT1JUOgorICAgICAgY2FzZSBHTF9TQ0lTU09S
X0JPWDoKKyAgICAgICAgeworICAgICAgICAgICAgKnR5cGUgPSBHTF9JTlQ7CisgICAgICAgICAg
ICAqbnVtUGFyYW1zID0gNDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfU0hBREVSX0NPTVBJTEVSOgorICAgICAgY2FzZSBHTF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJU
OgorICAgICAgY2FzZSBHTF9ERVBUSF9XUklURU1BU0s6CisgICAgICBjYXNlIEdMX0NVTExfRkFD
RTogICAgICAgICAgICAgICAgLy8gQ1VMTF9GQUNFIHRocm91Z2ggRElUSEVSIGFyZSBuYXR1cmFs
IHRvIElzRW5hYmxlZCwKKyAgICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZTRVRfRklMTDogICAgICAv
LyBidXQgY2FuIGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSBHZXR7VHlwZX12IHF1ZXJpZXMuCisg
ICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRTogLy8gRm9yIHRoaXMgcHVycG9z
ZSwgdGhleSBhcmUgdHJlYXRlZCBoZXJlIGFzIGJvb2wtbmF0dXJhbAorICAgICAgY2FzZSBHTF9T
QU1QTEVfQ09WRVJBR0U6CisgICAgICBjYXNlIEdMX1NDSVNTT1JfVEVTVDoKKyAgICAgIGNhc2Ug
R0xfU1RFTkNJTF9URVNUOgorICAgICAgY2FzZSBHTF9ERVBUSF9URVNUOgorICAgICAgY2FzZSBH
TF9CTEVORDoKKyAgICAgIGNhc2UgR0xfRElUSEVSOgorICAgICAgY2FzZSBHTF9DT05URVhUX1JP
QlVTVF9BQ0NFU1NfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICAqdHlwZSA9IEdMX0JPT0w7
CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfQ09MT1JfV1JJVEVNQVNLOgorICAgICAgICB7CisgICAgICAgICAgICAq
dHlwZSA9IEdMX0JPT0w7CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gNDsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SOgorICAg
ICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9VTklUUzoKKyAgICAgIGNhc2UgR0xfU0FNUExFX0NP
VkVSQUdFX1ZBTFVFOgorICAgICAgY2FzZSBHTF9ERVBUSF9DTEVBUl9WQUxVRToKKyAgICAgIGNh
c2UgR0xfTElORV9XSURUSDoKKyAgICAgICAgeworICAgICAgICAgICAgKnR5cGUgPSBHTF9GTE9B
VDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0U6CisgICAgICBjYXNlIEdM
X0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRToKKyAgICAgIGNhc2UgR0xfREVQVEhfUkFOR0U6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlID0gR0xfRkxPQVQ7CisgICAgICAgICAgICAqbnVt
UGFyYW1zID0gMjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQ09M
T1JfQ0xFQVJfVkFMVUU6CisgICAgICBjYXNlIEdMX0JMRU5EX0NPTE9SOgorICAgICAgICB7Cisg
ICAgICAgICAgICAqdHlwZSA9IEdMX0ZMT0FUOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDQ7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9URVhUVVJFX01B
WF9BTklTT1RST1BZX0VYVDoKKyAgICAgICAgaWYgKCFzdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlz
b3Ryb3B5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICAqdHlwZSA9IEdMX0ZMT0FUOworICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIEFwcGxpZXMgdGhlIHJlbmRlciB0YXJnZXQg
c3VyZmFjZSwgZGVwdGggc3RlbmNpbCBzdXJmYWNlLCB2aWV3cG9ydCByZWN0YW5nbGUgYW5kCisv
LyBzY2lzc29yIHJlY3RhbmdsZSB0byB0aGUgcmVuZGVyZXIKK2Jvb2wgQ29udGV4dDo6YXBwbHlS
ZW5kZXJUYXJnZXQoR0xlbnVtIGRyYXdNb2RlLCBib29sIGlnbm9yZVZpZXdwb3J0KQoreworICAg
IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlck9iamVjdCA9IGdldERyYXdGcmFtZWJ1ZmZlcigpOwor
CisgICAgaWYgKCFmcmFtZWJ1ZmZlck9iamVjdCB8fCBmcmFtZWJ1ZmZlck9iamVjdC0+Y29tcGxl
dGVuZXNzKCkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OLCBmYWxzZSk7Cisg
ICAgfQorCisgICAgbVJlbmRlcmVyLT5hcHBseVJlbmRlclRhcmdldChmcmFtZWJ1ZmZlck9iamVj
dCk7CisKKyAgICBpZiAoIW1SZW5kZXJlci0+c2V0Vmlld3BvcnQobVN0YXRlLnZpZXdwb3J0LCBt
U3RhdGUuek5lYXIsIG1TdGF0ZS56RmFyLCBkcmF3TW9kZSwgbVN0YXRlLnJhc3Rlcml6ZXIuZnJv
bnRGYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVWaWV3cG9ydCkp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbVJlbmRlcmVyLT5z
ZXRTY2lzc29yUmVjdGFuZ2xlKG1TdGF0ZS5zY2lzc29yLCBtU3RhdGUuc2Npc3NvclRlc3QpOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIEFwcGxpZXMgdGhlIGZpeGVkLWZ1bmN0aW9uIHN0
YXRlIChjdWxsaW5nLCBkZXB0aCB0ZXN0LCBhbHBoYSBibGVuZGluZywgc3RlbmNpbGluZywgZXRj
KSB0byB0aGUgRGlyZWN0M0QgOSBkZXZpY2UKK3ZvaWQgQ29udGV4dDo6YXBwbHlTdGF0ZShHTGVu
dW0gZHJhd01vZGUpCit7CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0gZ2V0
RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAgaW50IHNhbXBsZXMgPSBmcmFtZWJ1ZmZlck9iamVjdC0+
Z2V0U2FtcGxlcygpOworCisgICAgbVN0YXRlLnJhc3Rlcml6ZXIucG9pbnREcmF3TW9kZSA9IChk
cmF3TW9kZSA9PSBHTF9QT0lOVFMpOworICAgIG1TdGF0ZS5yYXN0ZXJpemVyLm11bHRpU2FtcGxl
ID0gKHNhbXBsZXMgIT0gMCk7CisgICAgbVJlbmRlcmVyLT5zZXRSYXN0ZXJpemVyU3RhdGUobVN0
YXRlLnJhc3Rlcml6ZXIpOworCisgICAgdW5zaWduZWQgaW50IG1hc2sgPSAwOworICAgIGlmICht
U3RhdGUuc2FtcGxlQ292ZXJhZ2UpCisgICAgeworICAgICAgICBpZiAobVN0YXRlLnNhbXBsZUNv
dmVyYWdlVmFsdWUgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgCisgICAgICAgICAgICBm
bG9hdCB0aHJlc2hvbGQgPSAwLjVmOworCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IHNhbXBsZXM7ICsraSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtYXNrIDw8PSAx
OworCisgICAgICAgICAgICAgICAgaWYgKChpICsgMSkgKiBtU3RhdGUuc2FtcGxlQ292ZXJhZ2VW
YWx1ZSA+PSB0aHJlc2hvbGQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICB0aHJlc2hvbGQgKz0gMS4wZjsKKyAgICAgICAgICAgICAgICAgICAgbWFzayB8PSAxOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICht
U3RhdGUuc2FtcGxlQ292ZXJhZ2VJbnZlcnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1hc2sg
PSB+bWFzazsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtYXNr
ID0gMHhGRkZGRkZGRjsKKyAgICB9CisgICAgbVJlbmRlcmVyLT5zZXRCbGVuZFN0YXRlKG1TdGF0
ZS5ibGVuZCwgbVN0YXRlLmJsZW5kQ29sb3IsIG1hc2spOworCisgICAgbVJlbmRlcmVyLT5zZXRE
ZXB0aFN0ZW5jaWxTdGF0ZShtU3RhdGUuZGVwdGhTdGVuY2lsLCBtU3RhdGUuc3RlbmNpbFJlZiwg
bVN0YXRlLnN0ZW5jaWxCYWNrUmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbVN0YXRlLnJhc3Rlcml6ZXIuZnJvbnRGYWNlID09IEdMX0NDVyk7Cit9CisKKy8vIEFwcGxp
ZXMgdGhlIHNoYWRlcnMgYW5kIHNoYWRlciBjb25zdGFudHMgdG8gdGhlIERpcmVjdDNEIDkgZGV2
aWNlCit2b2lkIENvbnRleHQ6OmFwcGx5U2hhZGVycygpCit7CisgICAgUHJvZ3JhbUJpbmFyeSAq
cHJvZ3JhbUJpbmFyeSA9IGdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7CisKKyAgICBtUmVuZGVy
ZXItPmFwcGx5U2hhZGVycyhwcm9ncmFtQmluYXJ5KTsKKyAgICAKKyAgICBwcm9ncmFtQmluYXJ5
LT5hcHBseVVuaWZvcm1zKCk7Cit9CisKKy8vIEFwcGxpZXMgdGhlIHRleHR1cmVzIGFuZCBzYW1w
bGVyIHN0YXRlcyB0byB0aGUgRGlyZWN0M0QgOSBkZXZpY2UKK3ZvaWQgQ29udGV4dDo6YXBwbHlU
ZXh0dXJlcygpCit7CisgICAgYXBwbHlUZXh0dXJlcyhTQU1QTEVSX1BJWEVMKTsKKworICAgIGlm
IChtU3VwcG9ydHNWZXJ0ZXhUZXh0dXJlKQorICAgIHsKKyAgICAgICAgYXBwbHlUZXh0dXJlcyhT
QU1QTEVSX1ZFUlRFWCk7CisgICAgfQorfQorCisvLyBGb3IgZWFjaCBEaXJlY3QzRCA5IHNhbXBs
ZXIgb2YgZWl0aGVyIHRoZSBwaXhlbCBvciB2ZXJ0ZXggc3RhZ2UsCisvLyBsb29rcyB1cCB0aGUg
Y29ycmVzcG9uZGluZyBPcGVuR0wgdGV4dHVyZSBpbWFnZSB1bml0IGFuZCB0ZXh0dXJlIHR5cGUs
CisvLyBhbmQgc2V0cyB0aGUgdGV4dHVyZSBhbmQgaXRzIGFkZHJlc3NpbmcvZmlsdGVyaW5nIHN0
YXRlIChvciBOVUxMIHdoZW4gaW5hY3RpdmUpLgordm9pZCBDb250ZXh0OjphcHBseVRleHR1cmVz
KFNhbXBsZXJUeXBlIHR5cGUpCit7CisgICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9
IGdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7CisKKyAgICAvLyBSYW5nZSBvZiBEaXJlY3QzRCBz
YW1wbGVycyBvZiBnaXZlbiBzYW1wbGVyIHR5cGUKKyAgICBpbnQgc2FtcGxlckNvdW50ID0gKHR5
cGUgPT0gU0FNUExFUl9QSVhFTCkgPyBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyA6IG1SZW5kZXJl
ci0+Z2V0TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMoKTsKKyAgICBpbnQgc2FtcGxlclJhbmdl
ID0gcHJvZ3JhbUJpbmFyeS0+Z2V0VXNlZFNhbXBsZXJSYW5nZSh0eXBlKTsKKworICAgIGZvciAo
aW50IHNhbXBsZXJJbmRleCA9IDA7IHNhbXBsZXJJbmRleCA8IHNhbXBsZXJSYW5nZTsgc2FtcGxl
ckluZGV4KyspCisgICAgeworICAgICAgICBpbnQgdGV4dHVyZVVuaXQgPSBwcm9ncmFtQmluYXJ5
LT5nZXRTYW1wbGVyTWFwcGluZyh0eXBlLCBzYW1wbGVySW5kZXgpOyAgIC8vIE9wZW5HTCB0ZXh0
dXJlIGltYWdlIHVuaXQgaW5kZXgKKworICAgICAgICBpZiAodGV4dHVyZVVuaXQgIT0gLTEpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIFRleHR1cmVUeXBlIHRleHR1cmVUeXBlID0gcHJvZ3JhbUJp
bmFyeS0+Z2V0U2FtcGxlclRleHR1cmVUeXBlKHR5cGUsIHNhbXBsZXJJbmRleCk7CisgICAgICAg
ICAgICBUZXh0dXJlICp0ZXh0dXJlID0gZ2V0U2FtcGxlclRleHR1cmUodGV4dHVyZVVuaXQsIHRl
eHR1cmVUeXBlKTsKKworICAgICAgICAgICAgaWYgKHRleHR1cmUtPmlzU2FtcGxlckNvbXBsZXRl
KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgU2FtcGxlclN0YXRlIHNhbXBsZXJT
dGF0ZTsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlLT5nZXRTYW1wbGVyU3RhdGUoJnNhbXBsZXJT
dGF0ZSk7CisgICAgICAgICAgICAgICAgbVJlbmRlcmVyLT5zZXRTYW1wbGVyU3RhdGUodHlwZSwg
c2FtcGxlckluZGV4LCBzYW1wbGVyU3RhdGUpOworCisgICAgICAgICAgICAgICAgbVJlbmRlcmVy
LT5zZXRUZXh0dXJlKHR5cGUsIHNhbXBsZXJJbmRleCwgdGV4dHVyZSk7CisKKyAgICAgICAgICAg
ICAgICB0ZXh0dXJlLT5yZXNldERpcnR5KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbVJlbmRlcmVyLT5zZXRUZXh0dXJl
KHR5cGUsIHNhbXBsZXJJbmRleCwgZ2V0SW5jb21wbGV0ZVRleHR1cmUodGV4dHVyZVR5cGUpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1SZW5kZXJlci0+c2V0VGV4dHVyZSh0eXBlLCBzYW1wbGVySW5kZXgsIE5VTEwpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChpbnQgc2FtcGxlckluZGV4ID0gc2FtcGxlclJh
bmdlOyBzYW1wbGVySW5kZXggPCBzYW1wbGVyQ291bnQ7IHNhbXBsZXJJbmRleCsrKQorICAgIHsK
KyAgICAgICAgbVJlbmRlcmVyLT5zZXRUZXh0dXJlKHR5cGUsIHNhbXBsZXJJbmRleCwgTlVMTCk7
CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OnJlYWRQaXhlbHMoR0xpbnQgeCwgR0xpbnQgeSwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgKmJ1ZlNpemUsIHZvaWQqIHBpeGVs
cykKK3sKKyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBnZXRSZWFkRnJhbWVidWZmZXIo
KTsKKworICAgIGlmIChmcmFtZWJ1ZmZlci0+Y29tcGxldGVuZXNzKCkgIT0gR0xfRlJBTUVCVUZG
RVJfQ09NUExFVEUpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
RlJBTUVCVUZGRVJfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICBpZiAoZ2V0UmVhZEZyYW1lYnVm
ZmVySGFuZGxlKCkgIT0gMCAmJiBmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcygpICE9IDApCisgICAg
eworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9
CisKKyAgICBHTHNpemVpIG91dHB1dFBpdGNoID0gQ29tcHV0ZVBpdGNoKHdpZHRoLCBDb252ZXJ0
U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQsIHR5cGUpLCBnZXRQYWNrQWxpZ25tZW50KCkpOwor
ICAgIC8vIHNpemVkIHF1ZXJ5IHNhbml0eSBjaGVjaworICAgIGlmIChidWZTaXplKQorICAgIHsK
KyAgICAgICAgaW50IHJlcXVpcmVkU2l6ZSA9IG91dHB1dFBpdGNoICogaGVpZ2h0OworICAgICAg
ICBpZiAocmVxdWlyZWRTaXplID4gKmJ1ZlNpemUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICB9CisgICAgfQor
CisgICAgbVJlbmRlcmVyLT5yZWFkUGl4ZWxzKGZyYW1lYnVmZmVyLCB4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIG91dHB1dFBpdGNoLCBnZXRQYWNrUmV2ZXJzZVJvd09yZGVyKCks
IGdldFBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKK30KKwordm9pZCBDb250ZXh0OjpjbGVhcihH
TGJpdGZpZWxkIG1hc2spCit7CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0g
Z2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisKKyAgICBpZiAoIWZyYW1lYnVmZmVyT2JqZWN0IHx8IGZy
YW1lYnVmZmVyT2JqZWN0LT5jb21wbGV0ZW5lc3MoKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVU
RSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZF
Ul9PUEVSQVRJT04pOworICAgIH0KKworICAgIERXT1JEIGZsYWdzID0gMDsKKyAgICBHTGJpdGZp
ZWxkIGZpbmFsTWFzayA9IDA7CisKKyAgICBpZiAobWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQp
CisgICAgeworICAgICAgICBtYXNrICY9IH5HTF9DT0xPUl9CVUZGRVJfQklUOworCisgICAgICAg
IGlmIChmcmFtZWJ1ZmZlck9iamVjdC0+aGFzRW5hYmxlZENvbG9yQXR0YWNobWVudCgpKQorICAg
ICAgICB7CisgICAgICAgICAgICBmaW5hbE1hc2sgfD0gR0xfQ09MT1JfQlVGRkVSX0JJVDsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmIChtYXNrICYgR0xfREVQVEhfQlVGRkVSX0JJVCkKKyAg
ICB7CisgICAgICAgIG1hc2sgJj0gfkdMX0RFUFRIX0JVRkZFUl9CSVQ7CisgICAgICAgIGlmICht
U3RhdGUuZGVwdGhTdGVuY2lsLmRlcHRoTWFzayAmJiBmcmFtZWJ1ZmZlck9iamVjdC0+Z2V0RGVw
dGhidWZmZXJUeXBlKCkgIT0gR0xfTk9ORSkKKyAgICAgICAgeworICAgICAgICAgICAgZmluYWxN
YXNrIHw9IEdMX0RFUFRIX0JVRkZFUl9CSVQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
bWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkKKyAgICB7CisgICAgICAgIG1hc2sgJj0gfkdM
X1NURU5DSUxfQlVGRkVSX0JJVDsKKyAgICAgICAgaWYgKGZyYW1lYnVmZmVyT2JqZWN0LT5nZXRT
dGVuY2lsYnVmZmVyVHlwZSgpICE9IEdMX05PTkUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJ4
OjpSZW5kZXJUYXJnZXQgKmRlcHRoU3RlbmNpbCA9IGZyYW1lYnVmZmVyT2JqZWN0LT5nZXRTdGVu
Y2lsYnVmZmVyKCktPmdldERlcHRoU3RlbmNpbCgpOworICAgICAgICAgICAgaWYgKCFkZXB0aFN0
ZW5jaWwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRVJSKCJEZXB0aCBzdGVuY2ls
IHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoR2V0U3RlbmNpbFNpemUoZGVwdGhTdGVu
Y2lsLT5nZXRBY3R1YWxGb3JtYXQoKSkgPiAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGZpbmFsTWFzayB8PSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQ7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobWFzayAhPSAwKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICB9CisKKyAgICBpZiAoIWFwcGx5
UmVuZGVyVGFyZ2V0KEdMX1RSSUFOR0xFUywgdHJ1ZSkpICAgLy8gQ2xpcHMgdGhlIGNsZWFyIHRv
IHRoZSBzY2lzc29yIHJlY3RhbmdsZSBidXQgbm90IHRoZSB2aWV3cG9ydAorICAgIHsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIENsZWFyUGFyYW1ldGVycyBjbGVhclBhcmFtczsKKyAg
ICBjbGVhclBhcmFtcy5tYXNrID0gZmluYWxNYXNrOworICAgIGNsZWFyUGFyYW1zLmNvbG9yQ2xl
YXJWYWx1ZSA9IG1TdGF0ZS5jb2xvckNsZWFyVmFsdWU7CisgICAgY2xlYXJQYXJhbXMuY29sb3JN
YXNrUmVkID0gbVN0YXRlLmJsZW5kLmNvbG9yTWFza1JlZDsKKyAgICBjbGVhclBhcmFtcy5jb2xv
ck1hc2tHcmVlbiA9IG1TdGF0ZS5ibGVuZC5jb2xvck1hc2tHcmVlbjsKKyAgICBjbGVhclBhcmFt
cy5jb2xvck1hc2tCbHVlID0gbVN0YXRlLmJsZW5kLmNvbG9yTWFza0JsdWU7CisgICAgY2xlYXJQ
YXJhbXMuY29sb3JNYXNrQWxwaGEgPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQWxwaGE7CisgICAg
Y2xlYXJQYXJhbXMuZGVwdGhDbGVhclZhbHVlID0gbVN0YXRlLmRlcHRoQ2xlYXJWYWx1ZTsKKyAg
ICBjbGVhclBhcmFtcy5zdGVuY2lsQ2xlYXJWYWx1ZSA9IG1TdGF0ZS5zdGVuY2lsQ2xlYXJWYWx1
ZTsKKyAgICBjbGVhclBhcmFtcy5zdGVuY2lsV3JpdGVNYXNrID0gbVN0YXRlLmRlcHRoU3RlbmNp
bC5zdGVuY2lsV3JpdGVtYXNrOworCisgICAgbVJlbmRlcmVyLT5jbGVhcihjbGVhclBhcmFtcywg
ZnJhbWVidWZmZXJPYmplY3QpOworfQorCit2b2lkIENvbnRleHQ6OmRyYXdBcnJheXMoR0xlbnVt
IG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcykKK3sK
KyAgICBpZiAoIW1TdGF0ZS5jdXJyZW50UHJvZ3JhbSkKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAgIGlmICghbVJlbmRl
cmVyLT5hcHBseVByaW1pdGl2ZVR5cGUobW9kZSwgY291bnQpKQorICAgIHsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICghYXBwbHlSZW5kZXJUYXJnZXQobW9kZSwgZmFsc2UpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFwcGx5U3RhdGUobW9kZSk7CisK
KyAgICBQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gZ2V0Q3VycmVudFByb2dyYW1CaW5h
cnkoKTsKKworICAgIEdMZW51bSBlcnIgPSBtUmVuZGVyZXItPmFwcGx5VmVydGV4QnVmZmVyKHBy
b2dyYW1CaW5hcnksIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGUsIGZpcnN0LCBjb3VudCwgaW5zdGFu
Y2VzKTsKKyAgICBpZiAoZXJyICE9IEdMX05PX0VSUk9SKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihlcnIpOworICAgIH0KKworICAgIGFwcGx5U2hhZGVycygpOworICAgIGFwcGx5
VGV4dHVyZXMoKTsKKworICAgIGlmICghcHJvZ3JhbUJpbmFyeS0+dmFsaWRhdGVTYW1wbGVycyhO
VUxMKSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgIH0KKworICAgIGlmICghc2tpcERyYXcobW9kZSkpCisgICAgeworICAgICAgICBt
UmVuZGVyZXItPmRyYXdBcnJheXMobW9kZSwgY291bnQsIGluc3RhbmNlcyk7CisgICAgfQorfQor
Cit2b2lkIENvbnRleHQ6OmRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwg
R0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgR0xzaXplaSBpbnN0YW5jZXMpCit7
CisgICAgaWYgKCFtU3RhdGUuY3VycmVudFByb2dyYW0pCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICBpZiAoIWluZGlj
ZXMgJiYgIW1TdGF0ZS5lbGVtZW50QXJyYXlCdWZmZXIpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFt
UmVuZGVyZXItPmFwcGx5UHJpbWl0aXZlVHlwZShtb2RlLCBjb3VudCkpCisgICAgeworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFhcHBseVJlbmRlclRhcmdldChtb2RlLCBmYWxz
ZSkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXBwbHlTdGF0ZShtb2Rl
KTsKKworICAgIHJ4OjpUcmFuc2xhdGVkSW5kZXhEYXRhIGluZGV4SW5mbzsKKyAgICBHTGVudW0g
ZXJyID0gbVJlbmRlcmVyLT5hcHBseUluZGV4QnVmZmVyKGluZGljZXMsIG1TdGF0ZS5lbGVtZW50
QXJyYXlCdWZmZXIuZ2V0KCksIGNvdW50LCBtb2RlLCB0eXBlLCAmaW5kZXhJbmZvKTsKKyAgICBp
ZiAoZXJyICE9IEdMX05PX0VSUk9SKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihl
cnIpOworICAgIH0KKworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBnZXRDdXJy
ZW50UHJvZ3JhbUJpbmFyeSgpOworCisgICAgR0xzaXplaSB2ZXJ0ZXhDb3VudCA9IGluZGV4SW5m
by5tYXhJbmRleCAtIGluZGV4SW5mby5taW5JbmRleCArIDE7CisgICAgZXJyID0gbVJlbmRlcmVy
LT5hcHBseVZlcnRleEJ1ZmZlcihwcm9ncmFtQmluYXJ5LCBtU3RhdGUudmVydGV4QXR0cmlidXRl
LCBpbmRleEluZm8ubWluSW5kZXgsIHZlcnRleENvdW50LCBpbnN0YW5jZXMpOworICAgIGlmIChl
cnIgIT0gR0xfTk9fRVJST1IpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKGVycik7
CisgICAgfQorCisgICAgYXBwbHlTaGFkZXJzKCk7CisgICAgYXBwbHlUZXh0dXJlcygpOworCisg
ICAgaWYgKCFwcm9ncmFtQmluYXJ5LT52YWxpZGF0ZVNhbXBsZXJzKE5VTEwpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisg
ICAgaWYgKCFza2lwRHJhdyhtb2RlKSkKKyAgICB7CisgICAgICAgIG1SZW5kZXJlci0+ZHJhd0Vs
ZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBtU3RhdGUuZWxlbWVudEFycmF5QnVm
ZmVyLmdldCgpLCBpbmRleEluZm8sIGluc3RhbmNlcyk7CisgICAgfQorfQorCisvLyBJbXBsZW1l
bnRzIGdsRmx1c2ggd2hlbiBibG9jayBpcyBmYWxzZSwgZ2xGaW5pc2ggd2hlbiBibG9jayBpcyB0
cnVlCit2b2lkIENvbnRleHQ6OnN5bmMoYm9vbCBibG9jaykKK3sKKyAgICBtUmVuZGVyZXItPnN5
bmMoYmxvY2spOworfQorCit2b2lkIENvbnRleHQ6OnJlY29yZEludmFsaWRFbnVtKCkKK3sKKyAg
ICBtSW52YWxpZEVudW0gPSB0cnVlOworfQorCit2b2lkIENvbnRleHQ6OnJlY29yZEludmFsaWRW
YWx1ZSgpCit7CisgICAgbUludmFsaWRWYWx1ZSA9IHRydWU7Cit9CisKK3ZvaWQgQ29udGV4dDo6
cmVjb3JkSW52YWxpZE9wZXJhdGlvbigpCit7CisgICAgbUludmFsaWRPcGVyYXRpb24gPSB0cnVl
OworfQorCit2b2lkIENvbnRleHQ6OnJlY29yZE91dE9mTWVtb3J5KCkKK3sKKyAgICBtT3V0T2ZN
ZW1vcnkgPSB0cnVlOworfQorCit2b2lkIENvbnRleHQ6OnJlY29yZEludmFsaWRGcmFtZWJ1ZmZl
ck9wZXJhdGlvbigpCit7CisgICAgbUludmFsaWRGcmFtZWJ1ZmZlck9wZXJhdGlvbiA9IHRydWU7
Cit9CisKKy8vIEdldCBvbmUgb2YgdGhlIHJlY29yZGVkIGVycm9ycyBhbmQgY2xlYXIgaXRzIGZs
YWcsIGlmIGFueS4KKy8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDIuNSBwYWdlIDEzLgor
R0xlbnVtIENvbnRleHQ6OmdldEVycm9yKCkKK3sKKyAgICBpZiAobUludmFsaWRFbnVtKQorICAg
IHsKKyAgICAgICAgbUludmFsaWRFbnVtID0gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIEdMX0lO
VkFMSURfRU5VTTsKKyAgICB9CisKKyAgICBpZiAobUludmFsaWRWYWx1ZSkKKyAgICB7CisgICAg
ICAgIG1JbnZhbGlkVmFsdWUgPSBmYWxzZTsKKworICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9W
QUxVRTsKKyAgICB9CisKKyAgICBpZiAobUludmFsaWRPcGVyYXRpb24pCisgICAgeworICAgICAg
ICBtSW52YWxpZE9wZXJhdGlvbiA9IGZhbHNlOworCisgICAgICAgIHJldHVybiBHTF9JTlZBTElE
X09QRVJBVElPTjsKKyAgICB9CisKKyAgICBpZiAobU91dE9mTWVtb3J5KQorICAgIHsKKyAgICAg
ICAgbU91dE9mTWVtb3J5ID0gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9NRU1P
Ulk7CisgICAgfQorCisgICAgaWYgKG1JbnZhbGlkRnJhbWVidWZmZXJPcGVyYXRpb24pCisgICAg
eworICAgICAgICBtSW52YWxpZEZyYW1lYnVmZmVyT3BlcmF0aW9uID0gZmFsc2U7CisKKyAgICAg
ICAgcmV0dXJuIEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OOworICAgIH0KKworICAg
IHJldHVybiBHTF9OT19FUlJPUjsKK30KKworR0xlbnVtIENvbnRleHQ6OmdldFJlc2V0U3RhdHVz
KCkKK3sKKyAgICBpZiAobVJlc2V0U3RhdHVzID09IEdMX05PX0VSUk9SICYmICFtQ29udGV4dExv
c3QpCisgICAgeworICAgICAgICAvLyBtUmVzZXRTdGF0dXMgd2lsbCBiZSBzZXQgYnkgdGhlIG1h
cmtDb250ZXh0TG9zdCBjYWxsYmFjaworICAgICAgICAvLyBpbiB0aGUgY2FzZSBhIG5vdGlmaWNh
dGlvbiBpcyBzZW50CisgICAgICAgIG1SZW5kZXJlci0+dGVzdERldmljZUxvc3QodHJ1ZSk7Cisg
ICAgfQorCisgICAgR0xlbnVtIHN0YXR1cyA9IG1SZXNldFN0YXR1czsKKworICAgIGlmIChtUmVz
ZXRTdGF0dXMgIT0gR0xfTk9fRVJST1IpCisgICAgeworICAgICAgICBBU1NFUlQobUNvbnRleHRM
b3N0KTsKKworICAgICAgICBpZiAobVJlbmRlcmVyLT50ZXN0RGV2aWNlUmVzZXR0YWJsZSgpKQor
ICAgICAgICB7CisgICAgICAgICAgICBtUmVzZXRTdGF0dXMgPSBHTF9OT19FUlJPUjsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitib29sIENvbnRleHQ6
OmlzUmVzZXROb3RpZmljYXRpb25FbmFibGVkKCkKK3sKKyAgICByZXR1cm4gKG1SZXNldFN0cmF0
ZWd5ID09IEdMX0xPU0VfQ09OVEVYVF9PTl9SRVNFVF9FWFQpOworfQorCitpbnQgQ29udGV4dDo6
Z2V0TWFqb3JTaGFkZXJNb2RlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1NYWpvclNoYWRlck1v
ZGVsOworfQorCitmbG9hdCBDb250ZXh0OjpnZXRNYXhpbXVtUG9pbnRTaXplKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbU1heGltdW1Qb2ludFNpemU7Cit9CisKK3Vuc2lnbmVkIGludCBDb250ZXh0
OjpnZXRNYXhpbXVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1SZW5kZXJlci0+Z2V0TWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpOworfQorCitp
bnQgQ29udGV4dDo6Z2V0TWF4U3VwcG9ydGVkU2FtcGxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1SZW5kZXJlci0+Z2V0TWF4U3VwcG9ydGVkU2FtcGxlcygpOworfQorCit1bnNpZ25lZCBpbnQg
Q29udGV4dDo6Z2V0TWF4aW11bVJlbmRlclRhcmdldHMoKSBjb25zdAoreworICAgIHJldHVybiBt
UmVuZGVyZXItPmdldE1heFJlbmRlclRhcmdldHMoKTsKK30KKworYm9vbCBDb250ZXh0OjpzdXBw
b3J0c0V2ZW50UXVlcmllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdXBwb3J0c0V2ZW50UXVl
cmllczsKK30KKworYm9vbCBDb250ZXh0OjpzdXBwb3J0c09jY2x1c2lvblF1ZXJpZXMoKSBjb25z
dAoreworICAgIHJldHVybiBtU3VwcG9ydHNPY2NsdXNpb25RdWVyaWVzOworfQorCitib29sIENv
bnRleHQ6OnN1cHBvcnRzQkdSQVRleHR1cmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBv
cnRzQkdSQVRleHR1cmVzOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzRFhUMVRleHR1cmVz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzRFhUMVRleHR1cmVzOworfQorCitib29s
IENvbnRleHQ6OnN1cHBvcnRzRFhUM1RleHR1cmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1
cHBvcnRzRFhUM1RleHR1cmVzOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzRFhUNVRleHR1
cmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzRFhUNVRleHR1cmVzOworfQorCiti
b29sIENvbnRleHQ6OnN1cHBvcnRzRmxvYXQzMlRleHR1cmVzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVN1cHBvcnRzRmxvYXQzMlRleHR1cmVzOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRz
RmxvYXQzMkxpbmVhckZpbHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdXBwb3J0c0Zsb2F0
MzJMaW5lYXJGaWx0ZXI7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNGbG9hdDMyUmVuZGVy
YWJsZVRleHR1cmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzRmxvYXQzMlJlbmRl
cmFibGVUZXh0dXJlczsKK30KKworYm9vbCBDb250ZXh0OjpzdXBwb3J0c0Zsb2F0MTZUZXh0dXJl
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdXBwb3J0c0Zsb2F0MTZUZXh0dXJlczsKK30KKwor
Ym9vbCBDb250ZXh0OjpzdXBwb3J0c0Zsb2F0MTZMaW5lYXJGaWx0ZXIoKSBjb25zdAoreworICAg
IHJldHVybiBtU3VwcG9ydHNGbG9hdDE2TGluZWFyRmlsdGVyOworfQorCitib29sIENvbnRleHQ6
OnN1cHBvcnRzRmxvYXQxNlJlbmRlcmFibGVUZXh0dXJlcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1TdXBwb3J0c0Zsb2F0MTZSZW5kZXJhYmxlVGV4dHVyZXM7Cit9CisKK2ludCBDb250ZXh0Ojpn
ZXRNYXhpbXVtUmVuZGVyYnVmZmVyRGltZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbU1h
eFJlbmRlcmJ1ZmZlckRpbWVuc2lvbjsKK30KKworaW50IENvbnRleHQ6OmdldE1heGltdW1UZXh0
dXJlRGltZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbU1heFRleHR1cmVEaW1lbnNpb247
Cit9CisKK2ludCBDb250ZXh0OjpnZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNpb24oKSBjb25z
dAoreworICAgIHJldHVybiBtTWF4Q3ViZVRleHR1cmVEaW1lbnNpb247Cit9CisKK2ludCBDb250
ZXh0OjpnZXRNYXhpbXVtVGV4dHVyZUxldmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbU1heFRl
eHR1cmVMZXZlbDsKK30KKworYm9vbCBDb250ZXh0OjpzdXBwb3J0c0x1bWluYW5jZVRleHR1cmVz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzTHVtaW5hbmNlVGV4dHVyZXM7Cit9CisK
K2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNMdW1pbmFuY2VBbHBoYVRleHR1cmVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbVN1cHBvcnRzTHVtaW5hbmNlQWxwaGFUZXh0dXJlczsKK30KKworYm9vbCBD
b250ZXh0OjpzdXBwb3J0c0RlcHRoVGV4dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3Vw
cG9ydHNEZXB0aFRleHR1cmVzOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzMzJiaXRJbmRp
Y2VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzMzJiaXRJbmRpY2VzOworfQorCiti
b29sIENvbnRleHQ6OnN1cHBvcnRzTm9uUG93ZXIyVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1TdXBwb3J0c05vblBvd2VyMlRleHR1cmU7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9y
dHNJbnN0YW5jaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzSW5zdGFuY2luZzsK
K30KKworYm9vbCBDb250ZXh0OjpzdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHk7Cit9CisK
K2Zsb2F0IENvbnRleHQ6OmdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbU1heFRleHR1cmVBbmlzb3Ryb3B5OworfQorCitib29sIENvbnRleHQ6OmdldEN1cnJl
bnRSZWFkRm9ybWF0VHlwZShHTGVudW0gKmZvcm1hdCwgR0xlbnVtICp0eXBlKQoreworICAgIEZy
YW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIGlmICgh
ZnJhbWVidWZmZXIgfHwgZnJhbWVidWZmZXItPmNvbXBsZXRlbmVzcygpICE9IEdMX0ZSQU1FQlVG
RkVSX0NPTVBMRVRFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgZmFsc2UpOworICAgIH0KKworICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVm
ZmVyID0gZnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpOworICAgIGlmICghcmVuZGVy
YnVmZmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgZmFsc2UpOworICAgIH0KKworICAgICpmb3JtYXQgPSBnbDo6RXh0cmFjdEZvcm1hdChy
ZW5kZXJidWZmZXItPmdldEFjdHVhbEZvcm1hdCgpKTsgCisgICAgKnR5cGUgPSBnbDo6RXh0cmFj
dFR5cGUocmVuZGVyYnVmZmVyLT5nZXRBY3R1YWxGb3JtYXQoKSk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBDb250ZXh0OjpkZXRhY2hCdWZmZXIoR0x1aW50IGJ1ZmZlcikKK3sKKyAg
ICAvLyBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAyLjkgcGFnZSAyMjoKKyAgICAvLyBJZiBh
IGJ1ZmZlciBvYmplY3QgaXMgZGVsZXRlZCB3aGlsZSBpdCBpcyBib3VuZCwgYWxsIGJpbmRpbmdz
IHRvIHRoYXQgb2JqZWN0IGluIHRoZSBjdXJyZW50IGNvbnRleHQKKyAgICAvLyAoaS5lLiBpbiB0
aGUgdGhyZWFkIHRoYXQgY2FsbGVkIERlbGV0ZS1CdWZmZXJzKSBhcmUgcmVzZXQgdG8gemVyby4K
KworICAgIGlmIChtU3RhdGUuYXJyYXlCdWZmZXIuaWQoKSA9PSBidWZmZXIpCisgICAgeworICAg
ICAgICBtU3RhdGUuYXJyYXlCdWZmZXIuc2V0KE5VTEwpOworICAgIH0KKworICAgIGlmIChtU3Rh
dGUuZWxlbWVudEFycmF5QnVmZmVyLmlkKCkgPT0gYnVmZmVyKQorICAgIHsKKyAgICAgICAgbVN0
YXRlLmVsZW1lbnRBcnJheUJ1ZmZlci5zZXQoTlVMTCk7CisgICAgfQorCisgICAgZm9yIChpbnQg
YXR0cmlidXRlID0gMDsgYXR0cmlidXRlIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBhdHRyaWJ1dGUr
KykKKyAgICB7CisgICAgICAgIGlmIChtU3RhdGUudmVydGV4QXR0cmlidXRlW2F0dHJpYnV0ZV0u
bUJvdW5kQnVmZmVyLmlkKCkgPT0gYnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICBtU3Rh
dGUudmVydGV4QXR0cmlidXRlW2F0dHJpYnV0ZV0ubUJvdW5kQnVmZmVyLnNldChOVUxMKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBDb250ZXh0OjpkZXRhY2hUZXh0dXJlKEdMdWludCB0
ZXh0dXJlKQoreworICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDMuOCBwYWdlIDg0
OgorICAgIC8vIElmIGEgdGV4dHVyZSBvYmplY3QgaXMgZGVsZXRlZCwgaXQgaXMgYXMgaWYgYWxs
IHRleHR1cmUgdW5pdHMgd2hpY2ggYXJlIGJvdW5kIHRvIHRoYXQgdGV4dHVyZSBvYmplY3QgYXJl
CisgICAgLy8gcmVib3VuZCB0byB0ZXh0dXJlIG9iamVjdCB6ZXJvCisKKyAgICBmb3IgKGludCB0
eXBlID0gMDsgdHlwZSA8IFRFWFRVUkVfVFlQRV9DT1VOVDsgdHlwZSsrKQorICAgIHsKKyAgICAg
ICAgZm9yIChpbnQgc2FtcGxlciA9IDA7IHNhbXBsZXIgPCBJTVBMRU1FTlRBVElPTl9NQVhfQ09N
QklORURfVEVYVFVSRV9JTUFHRV9VTklUUzsgc2FtcGxlcisrKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAobVN0YXRlLnNhbXBsZXJUZXh0dXJlW3R5cGVdW3NhbXBsZXJdLmlkKCkgPT0gdGV4
dHVyZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtU3RhdGUuc2FtcGxlclRleHR1
cmVbdHlwZV1bc2FtcGxlcl0uc2V0KE5VTEwpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gNC40IHBhZ2UgMTEyOgor
ICAgIC8vIElmIGEgdGV4dHVyZSBvYmplY3QgaXMgZGVsZXRlZCB3aGlsZSBpdHMgaW1hZ2UgaXMg
YXR0YWNoZWQgdG8gdGhlIGN1cnJlbnRseSBib3VuZCBmcmFtZWJ1ZmZlciwgdGhlbiBpdCBpcwor
ICAgIC8vIGFzIGlmIEZyYW1lYnVmZmVyVGV4dHVyZTJEIGhhZCBiZWVuIGNhbGxlZCwgd2l0aCBh
IHRleHR1cmUgb2YgMCwgZm9yIGVhY2ggYXR0YWNobWVudCBwb2ludCB0byB3aGljaCB0aGlzCisg
ICAgLy8gaW1hZ2Ugd2FzIGF0dGFjaGVkIGluIHRoZSBjdXJyZW50bHkgYm91bmQgZnJhbWVidWZm
ZXIuCisKKyAgICBGcmFtZWJ1ZmZlciAqcmVhZEZyYW1lYnVmZmVyID0gZ2V0UmVhZEZyYW1lYnVm
ZmVyKCk7CisgICAgRnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciA9IGdldERyYXdGcmFtZWJ1
ZmZlcigpOworCisgICAgaWYgKHJlYWRGcmFtZWJ1ZmZlcikKKyAgICB7CisgICAgICAgIHJlYWRG
cmFtZWJ1ZmZlci0+ZGV0YWNoVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICB9CisKKyAgICBpZiAoZHJh
d0ZyYW1lYnVmZmVyICYmIGRyYXdGcmFtZWJ1ZmZlciAhPSByZWFkRnJhbWVidWZmZXIpCisgICAg
eworICAgICAgICBkcmF3RnJhbWVidWZmZXItPmRldGFjaFRleHR1cmUodGV4dHVyZSk7CisgICAg
fQorfQorCit2b2lkIENvbnRleHQ6OmRldGFjaEZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZl
cikKK3sKKyAgICAvLyBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiA0LjQgcGFnZSAxMDc6Cisg
ICAgLy8gSWYgYSBmcmFtZWJ1ZmZlciB0aGF0IGlzIGN1cnJlbnRseSBib3VuZCB0byB0aGUgdGFy
Z2V0IEZSQU1FQlVGRkVSIGlzIGRlbGV0ZWQsIGl0IGlzIGFzIHRob3VnaAorICAgIC8vIEJpbmRG
cmFtZWJ1ZmZlciBoYWQgYmVlbiBleGVjdXRlZCB3aXRoIHRoZSB0YXJnZXQgb2YgRlJBTUVCVUZG
RVIgYW5kIGZyYW1lYnVmZmVyIG9mIHplcm8uCisKKyAgICBpZiAobVN0YXRlLnJlYWRGcmFtZWJ1
ZmZlciA9PSBmcmFtZWJ1ZmZlcikKKyAgICB7CisgICAgICAgIGJpbmRSZWFkRnJhbWVidWZmZXIo
MCk7CisgICAgfQorCisgICAgaWYgKG1TdGF0ZS5kcmF3RnJhbWVidWZmZXIgPT0gZnJhbWVidWZm
ZXIpCisgICAgeworICAgICAgICBiaW5kRHJhd0ZyYW1lYnVmZmVyKDApOworICAgIH0KK30KKwor
dm9pZCBDb250ZXh0OjpkZXRhY2hSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcikKK3sK
KyAgICAvLyBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiA0LjQgcGFnZSAxMDk6CisgICAgLy8g
SWYgYSByZW5kZXJidWZmZXIgdGhhdCBpcyBjdXJyZW50bHkgYm91bmQgdG8gUkVOREVSQlVGRkVS
IGlzIGRlbGV0ZWQsIGl0IGlzIGFzIHRob3VnaCBCaW5kUmVuZGVyYnVmZmVyCisgICAgLy8gaGFk
IGJlZW4gZXhlY3V0ZWQgd2l0aCB0aGUgdGFyZ2V0IFJFTkRFUkJVRkZFUiBhbmQgbmFtZSBvZiB6
ZXJvLgorCisgICAgaWYgKG1TdGF0ZS5yZW5kZXJidWZmZXIuaWQoKSA9PSByZW5kZXJidWZmZXIp
CisgICAgeworICAgICAgICBiaW5kUmVuZGVyYnVmZmVyKDApOworICAgIH0KKworICAgIC8vIFtP
cGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDQuNCBwYWdlIDExMToKKyAgICAvLyBJZiBhIHJlbmRl
cmJ1ZmZlciBvYmplY3QgaXMgZGVsZXRlZCB3aGlsZSBpdHMgaW1hZ2UgaXMgYXR0YWNoZWQgdG8g
dGhlIGN1cnJlbnRseSBib3VuZCBmcmFtZWJ1ZmZlciwKKyAgICAvLyB0aGVuIGl0IGlzIGFzIGlm
IEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIGhhZCBiZWVuIGNhbGxlZCwgd2l0aCBhIHJlbmRlcmJ1
ZmZlciBvZiAwLCBmb3IgZWFjaCBhdHRhY2htZW50CisgICAgLy8gcG9pbnQgdG8gd2hpY2ggdGhp
cyBpbWFnZSB3YXMgYXR0YWNoZWQgaW4gdGhlIGN1cnJlbnRseSBib3VuZCBmcmFtZWJ1ZmZlci4K
KworICAgIEZyYW1lYnVmZmVyICpyZWFkRnJhbWVidWZmZXIgPSBnZXRSZWFkRnJhbWVidWZmZXIo
KTsKKyAgICBGcmFtZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0gZ2V0RHJhd0ZyYW1lYnVmZmVy
KCk7CisKKyAgICBpZiAocmVhZEZyYW1lYnVmZmVyKQorICAgIHsKKyAgICAgICAgcmVhZEZyYW1l
YnVmZmVyLT5kZXRhY2hSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKTsKKyAgICB9CisKKyAgICBp
ZiAoZHJhd0ZyYW1lYnVmZmVyICYmIGRyYXdGcmFtZWJ1ZmZlciAhPSByZWFkRnJhbWVidWZmZXIp
CisgICAgeworICAgICAgICBkcmF3RnJhbWVidWZmZXItPmRldGFjaFJlbmRlcmJ1ZmZlcihyZW5k
ZXJidWZmZXIpOworICAgIH0KK30KKworVGV4dHVyZSAqQ29udGV4dDo6Z2V0SW5jb21wbGV0ZVRl
eHR1cmUoVGV4dHVyZVR5cGUgdHlwZSkKK3sKKyAgICBUZXh0dXJlICp0ID0gbUluY29tcGxldGVU
ZXh0dXJlc1t0eXBlXS5nZXQoKTsKKworICAgIGlmICh0ID09IE5VTEwpCisgICAgeworICAgICAg
ICBzdGF0aWMgY29uc3QgR0x1Ynl0ZSBjb2xvcltdID0geyAwLCAwLCAwLCAyNTUgfTsKKworICAg
ICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIC8vIGRlZmF1bHQgZmFsbHMgdGhyb3Vn
aCB0byBURVhUVVJFXzJECisKKyAgICAgICAgICBjYXNlIFRFWFRVUkVfMkQ6CisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgVGV4dHVyZTJEICppbmNvbXBsZXRlMmQgPSBuZXcgVGV4dHVy
ZTJEKG1SZW5kZXJlciwgVGV4dHVyZTo6SU5DT01QTEVURV9URVhUVVJFX0lEKTsKKyAgICAgICAg
ICAgICAgICBpbmNvbXBsZXRlMmQtPnNldEltYWdlKDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lH
TkVEX0JZVEUsIDEsIGNvbG9yKTsKKyAgICAgICAgICAgICAgICB0ID0gaW5jb21wbGV0ZTJkOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIFRFWFRV
UkVfQ1VCRToKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgVGV4dHVyZUN1YmVNYXAgKmlu
Y29tcGxldGVDdWJlID0gbmV3IFRleHR1cmVDdWJlTWFwKG1SZW5kZXJlciwgVGV4dHVyZTo6SU5D
T01QTEVURV9URVhUVVJFX0lEKTsKKworICAgICAgICAgICAgICBpbmNvbXBsZXRlQ3ViZS0+c2V0
SW1hZ2VQb3NYKDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDEsIGNvbG9yKTsK
KyAgICAgICAgICAgICAgaW5jb21wbGV0ZUN1YmUtPnNldEltYWdlTmVnWCgwLCAxLCAxLCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9CWVRFLCAxLCBjb2xvcik7CisgICAgICAgICAgICAgIGluY29tcGxl
dGVDdWJlLT5zZXRJbWFnZVBvc1koMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
MSwgY29sb3IpOworICAgICAgICAgICAgICBpbmNvbXBsZXRlQ3ViZS0+c2V0SW1hZ2VOZWdZKDAs
IDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDEsIGNvbG9yKTsKKyAgICAgICAgICAg
ICAgaW5jb21wbGV0ZUN1YmUtPnNldEltYWdlUG9zWigwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCAxLCBjb2xvcik7CisgICAgICAgICAgICAgIGluY29tcGxldGVDdWJlLT5zZXRJ
bWFnZU5lZ1ooMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMSwgY29sb3IpOwor
CisgICAgICAgICAgICAgIHQgPSBpbmNvbXBsZXRlQ3ViZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbUluY29tcGxldGVUZXh0dXJlc1t0
eXBlXS5zZXQodCk7CisgICAgfQorCisgICAgcmV0dXJuIHQ7Cit9CisKK2Jvb2wgQ29udGV4dDo6
c2tpcERyYXcoR0xlbnVtIGRyYXdNb2RlKQoreworICAgIGlmIChkcmF3TW9kZSA9PSBHTF9QT0lO
VFMpCisgICAgeworICAgICAgICAvLyBQcm9ncmFtQmluYXJ5IGFzc3VtZXMgbm9uLXBvaW50IHJl
bmRlcmluZyBpZiBnbF9Qb2ludFNpemUgaXNuJ3Qgd3JpdHRlbiwKKyAgICAgICAgLy8gd2hpY2gg
YWZmZWN0cyB2YXJ5aW5nIGludGVycG9sYXRpb24uIFNpbmNlIHRoZSB2YWx1ZSBvZiBnbF9Qb2lu
dFNpemUgaXMKKyAgICAgICAgLy8gdW5kZWZpbmVkIHdoZW4gbm90IHdyaXR0ZW4sIGp1c3Qgc2tp
cCBkcmF3aW5nIHRvIGF2b2lkIHVuZXhwZWN0ZWQgcmVzdWx0cy4KKyAgICAgICAgaWYgKCFnZXRD
dXJyZW50UHJvZ3JhbUJpbmFyeSgpLT51c2VzUG9pbnRTaXplKCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIC8vIFRoaXMgaXMgc3RpY3RseSBzcGVha2luZyBub3QgYW4gZXJyb3IsIGJ1dCBkZXZl
bG9wZXJzIHNob3VsZCBiZSAKKyAgICAgICAgICAgIC8vIG5vdGlmaWVkIG9mIHJpc2tpbmcgdW5k
ZWZpbmVkIGJlaGF2aW9yLgorICAgICAgICAgICAgRVJSKCJQb2ludCByZW5kZXJpbmcgd2l0aG91
dCB3cml0aW5nIHRvIGdsX1BvaW50U2l6ZS4iKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoSXNUcmlhbmdsZU1vZGUoZHJhd01vZGUp
KQorICAgIHsKKyAgICAgICAgaWYgKG1TdGF0ZS5yYXN0ZXJpemVyLmN1bGxGYWNlICYmIG1TdGF0
ZS5yYXN0ZXJpemVyLmN1bGxNb2RlID09IEdMX0ZST05UX0FORF9CQUNLKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBDb250ZXh0OjpzZXRWZXJ0ZXhBdHRyaWIoR0x1aW50IGluZGV4LCBj
b25zdCBHTGZsb2F0ICp2YWx1ZXMpCit7CisgICAgQVNTRVJUKGluZGV4IDwgZ2w6Ok1BWF9WRVJU
RVhfQVRUUklCUyk7CisKKyAgICBtU3RhdGUudmVydGV4QXR0cmlidXRlW2luZGV4XS5tQ3VycmVu
dFZhbHVlWzBdID0gdmFsdWVzWzBdOworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbaW5kZXhd
Lm1DdXJyZW50VmFsdWVbMV0gPSB2YWx1ZXNbMV07CisgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0
ZVtpbmRleF0ubUN1cnJlbnRWYWx1ZVsyXSA9IHZhbHVlc1syXTsKKyAgICBtU3RhdGUudmVydGV4
QXR0cmlidXRlW2luZGV4XS5tQ3VycmVudFZhbHVlWzNdID0gdmFsdWVzWzNdOworfQorCit2b2lk
IENvbnRleHQ6OnNldFZlcnRleEF0dHJpYkRpdmlzb3IoR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2
aXNvcikKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKTsKKwor
ICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbaW5kZXhdLm1EaXZpc29yID0gZGl2aXNvcjsKK30K
KworLy8ga2VlcCBsaXN0IHNvcnRlZCBpbiBmb2xsb3dpbmcgb3JkZXIKKy8vIE9FUyBleHRlbnNp
b25zCisvLyBFWFQgZXh0ZW5zaW9ucworLy8gVmVuZG9yIGV4dGVuc2lvbnMKK3ZvaWQgQ29udGV4
dDo6aW5pdEV4dGVuc2lvblN0cmluZygpCit7CisgICAgc3RkOjpzdHJpbmcgZXh0ZW5zaW9uU3Ry
aW5nID0gIiI7CisKKyAgICAvLyBPRVMgZXh0ZW5zaW9ucworICAgIGlmIChzdXBwb3J0czMyYml0
SW5kaWNlcygpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9PRVNfZWxl
bWVudF9pbmRleF91aW50ICI7CisgICAgfQorCisgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9P
RVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwgIjsKKyAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX09F
U19nZXRfcHJvZ3JhbV9iaW5hcnkgIjsKKyAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX09FU19y
Z2I4X3JnYmE4ICI7CisgICAgaWYgKG1SZW5kZXJlci0+Z2V0RGVyaXZhdGl2ZUluc3RydWN0aW9u
U3VwcG9ydCgpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9PRVNfc3Rh
bmRhcmRfZGVyaXZhdGl2ZXMgIjsKKyAgICB9CisKKyAgICBpZiAoc3VwcG9ydHNGbG9hdDE2VGV4
dHVyZXMoKSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdCAiOworICAgIH0KKyAgICBpZiAoc3VwcG9ydHNGbG9hdDE2TGluZWFyRmls
dGVyKCkpCisgICAgeworICAgICAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX09FU190ZXh0dXJl
X2hhbGZfZmxvYXRfbGluZWFyICI7CisgICAgfQorICAgIGlmIChzdXBwb3J0c0Zsb2F0MzJUZXh0
dXJlcygpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9PRVNfdGV4dHVy
ZV9mbG9hdCAiOworICAgIH0KKyAgICBpZiAoc3VwcG9ydHNGbG9hdDMyTGluZWFyRmlsdGVyKCkp
CisgICAgeworICAgICAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX09FU190ZXh0dXJlX2Zsb2F0
X2xpbmVhciAiOworICAgIH0KKworICAgIGlmIChzdXBwb3J0c05vblBvd2VyMlRleHR1cmUoKSkK
KyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfT0VTX3RleHR1cmVfbnBvdCAi
OworICAgIH0KKworICAgIC8vIE11bHRpLXZlbmRvciAoRVhUKSBleHRlbnNpb25zCisgICAgaWYg
KHN1cHBvcnRzT2NjbHVzaW9uUXVlcmllcygpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3Ry
aW5nICs9ICJHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4gIjsKKyAgICB9CisKKyAgICBl
eHRlbnNpb25TdHJpbmcgKz0gIkdMX0VYVF9yZWFkX2Zvcm1hdF9iZ3JhICI7CisgICAgZXh0ZW5z
aW9uU3RyaW5nICs9ICJHTF9FWFRfcm9idXN0bmVzcyAiOworCisgICAgaWYgKHN1cHBvcnRzRFhU
MVRleHR1cmVzKCkpCisgICAgeworICAgICAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEgIjsKKyAgICB9CisKKyAgICBpZiAoc3VwcG9ydHNUZXh0
dXJlRmlsdGVyQW5pc290cm9weSgpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9
ICJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMgIjsKKyAgICB9CisKKyAgICBpZiAo
c3VwcG9ydHNCR1JBVGV4dHVyZXMoKSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZyAr
PSAiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4ICI7CisgICAgfQorCisgICAgaWYgKG1S
ZW5kZXJlci0+Z2V0TWF4UmVuZGVyVGFyZ2V0cygpID4gMSkKKyAgICB7CisgICAgICAgIGV4dGVu
c2lvblN0cmluZyArPSAiR0xfRVhUX2RyYXdfYnVmZmVycyAiOworICAgIH0KKworICAgIGV4dGVu
c2lvblN0cmluZyArPSAiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSAiOworICAgIGV4dGVuc2lvblN0
cmluZyArPSAiR0xfRVhUX2ZyYWdfZGVwdGggIjsKKworICAgIC8vIEFOR0xFLXNwZWNpZmljIGV4
dGVuc2lvbnMKKyAgICBpZiAoc3VwcG9ydHNEZXB0aFRleHR1cmVzKCkpCisgICAgeworICAgICAg
ICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUgIjsKKyAgICB9CisK
KyAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgIjsKKyAg
ICBpZiAoZ2V0TWF4U3VwcG9ydGVkU2FtcGxlcygpICE9IDApCisgICAgeworICAgICAgICBleHRl
bnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlICI7CisgICAg
fQorCisgICAgaWYgKHN1cHBvcnRzSW5zdGFuY2luZygpKQorICAgIHsKKyAgICAgICAgZXh0ZW5z
aW9uU3RyaW5nICs9ICJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzICI7CisgICAgfQorCisgICAg
ZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9BTkdMRV9wYWNrX3JldmVyc2Vfcm93X29yZGVyICI7CisK
KyAgICBpZiAoc3VwcG9ydHNEWFQzVGV4dHVyZXMoKSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lv
blN0cmluZyArPSAiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzICI7CisgICAgfQor
ICAgIGlmIChzdXBwb3J0c0RYVDVUZXh0dXJlcygpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9u
U3RyaW5nICs9ICJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUgIjsKKyAgICB9CisK
KyAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX3RleHR1cmVfdXNhZ2UgIjsKKyAgICBl
eHRlbnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSAiOwor
CisgICAgLy8gT3RoZXIgdmVuZG9yLXNwZWNpZmljIGV4dGVuc2lvbnMKKyAgICBpZiAoc3VwcG9y
dHNFdmVudFF1ZXJpZXMoKSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xf
TlZfZmVuY2UgIjsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGVuZCA9IGV4
dGVuc2lvblN0cmluZy5maW5kX2xhc3Rfbm90X29mKCcgJyk7CisgICAgaWYgKGVuZCAhPSBzdGQ6
OnN0cmluZzo6bnBvcykKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZy5yZXNpemUoZW5k
KzEpOworICAgIH0KKworICAgIG1FeHRlbnNpb25TdHJpbmcgPSBtYWtlU3RhdGljU3RyaW5nKGV4
dGVuc2lvblN0cmluZyk7Cit9CisKK2NvbnN0IGNoYXIgKkNvbnRleHQ6OmdldEV4dGVuc2lvblN0
cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1FeHRlbnNpb25TdHJpbmc7Cit9CisKK3ZvaWQg
Q29udGV4dDo6aW5pdFJlbmRlcmVyU3RyaW5nKCkKK3sKKyAgICBzdGQ6Om9zdHJpbmdzdHJlYW0g
cmVuZGVyZXJTdHJpbmc7CisgICAgcmVuZGVyZXJTdHJpbmcgPDwgIkFOR0xFICgiOworICAgIHJl
bmRlcmVyU3RyaW5nIDw8IG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpOworICAg
IHJlbmRlcmVyU3RyaW5nIDw8ICIpIjsKKworICAgIG1SZW5kZXJlclN0cmluZyA9IG1ha2VTdGF0
aWNTdHJpbmcocmVuZGVyZXJTdHJpbmcuc3RyKCkpOworfQorCitjb25zdCBjaGFyICpDb250ZXh0
OjpnZXRSZW5kZXJlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlclN0cmlu
ZzsKK30KKwordm9pZCBDb250ZXh0OjpibGl0RnJhbWVidWZmZXIoR0xpbnQgc3JjWDAsIEdMaW50
IHNyY1kwLCBHTGludCBzcmNYMSwgR0xpbnQgc3JjWTEsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RYMSwgR0xpbnQgZHN0
WTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2spCit7Cisg
ICAgRnJhbWVidWZmZXIgKnJlYWRGcmFtZWJ1ZmZlciA9IGdldFJlYWRGcmFtZWJ1ZmZlcigpOwor
ICAgIEZyYW1lYnVmZmVyICpkcmF3RnJhbWVidWZmZXIgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsK
KworICAgIGlmICghcmVhZEZyYW1lYnVmZmVyIHx8IHJlYWRGcmFtZWJ1ZmZlci0+Y29tcGxldGVu
ZXNzKCkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUgfHwKKyAgICAgICAgIWRyYXdGcmFtZWJ1
ZmZlciB8fCBkcmF3RnJhbWVidWZmZXItPmNvbXBsZXRlbmVzcygpICE9IEdMX0ZSQU1FQlVGRkVS
X0NPTVBMRVRFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0ZS
QU1FQlVGRkVSX09QRVJBVElPTik7CisgICAgfQorCisgICAgaWYgKGRyYXdGcmFtZWJ1ZmZlci0+
Z2V0U2FtcGxlcygpICE9IDApCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICBSZW5kZXJidWZmZXIgKnJlYWRDb2xvckJ1
ZmZlciA9IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7CisgICAgUmVuZGVy
YnVmZmVyICpkcmF3Q29sb3JCdWZmZXIgPSBkcmF3RnJhbWVidWZmZXItPmdldEZpcnN0Q29sb3Ji
dWZmZXIoKTsKKworICAgIGlmIChkcmF3Q29sb3JCdWZmZXIgPT0gTlVMTCkKKyAgICB7CisgICAg
ICAgIEVSUigiRHJhdyBidWZmZXJzIGZvcm1hdHMgZG9uJ3QgbWF0Y2gsIHdoaWNoIGlzIG5vdCBz
dXBwb3J0ZWQgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBCbGl0RnJhbWVidWZmZXJBTkdMRSIp
OworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9
CisKKyAgICBpbnQgcmVhZEJ1ZmZlcldpZHRoID0gcmVhZENvbG9yQnVmZmVyLT5nZXRXaWR0aCgp
OworICAgIGludCByZWFkQnVmZmVySGVpZ2h0ID0gcmVhZENvbG9yQnVmZmVyLT5nZXRIZWlnaHQo
KTsKKyAgICBpbnQgZHJhd0J1ZmZlcldpZHRoID0gZHJhd0NvbG9yQnVmZmVyLT5nZXRXaWR0aCgp
OworICAgIGludCBkcmF3QnVmZmVySGVpZ2h0ID0gZHJhd0NvbG9yQnVmZmVyLT5nZXRIZWlnaHQo
KTsKKworICAgIFJlY3RhbmdsZSBzb3VyY2VSZWN0OworICAgIFJlY3RhbmdsZSBkZXN0UmVjdDsK
KworICAgIGlmIChzcmNYMCA8IHNyY1gxKQorICAgIHsKKyAgICAgICAgc291cmNlUmVjdC54ID0g
c3JjWDA7CisgICAgICAgIGRlc3RSZWN0LnggPSBkc3RYMDsKKyAgICAgICAgc291cmNlUmVjdC53
aWR0aCA9IHNyY1gxIC0gc3JjWDA7CisgICAgICAgIGRlc3RSZWN0LndpZHRoID0gZHN0WDEgLSBk
c3RYMDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc291cmNlUmVjdC54ID0gc3Jj
WDE7CisgICAgICAgIGRlc3RSZWN0LnggPSBkc3RYMTsKKyAgICAgICAgc291cmNlUmVjdC53aWR0
aCA9IHNyY1gwIC0gc3JjWDE7CisgICAgICAgIGRlc3RSZWN0LndpZHRoID0gZHN0WDAgLSBkc3RY
MTsKKyAgICB9CisKKyAgICBpZiAoc3JjWTAgPCBzcmNZMSkKKyAgICB7CisgICAgICAgIHNvdXJj
ZVJlY3QuaGVpZ2h0ID0gc3JjWTEgLSBzcmNZMDsKKyAgICAgICAgZGVzdFJlY3QuaGVpZ2h0ID0g
ZHN0WTEgLSBkc3RZMDsKKyAgICAgICAgc291cmNlUmVjdC55ID0gc3JjWTA7CisgICAgICAgIGRl
c3RSZWN0LnkgPSBkc3RZMDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc291cmNl
UmVjdC5oZWlnaHQgPSBzcmNZMCAtIHNyY1kxOworICAgICAgICBkZXN0UmVjdC5oZWlnaHQgPSBk
c3RZMCAtIHNyY1kxOworICAgICAgICBzb3VyY2VSZWN0LnkgPSBzcmNZMTsKKyAgICAgICAgZGVz
dFJlY3QueSA9IGRzdFkxOworICAgIH0KKworICAgIFJlY3RhbmdsZSBzb3VyY2VTY2lzc29yZWRS
ZWN0ID0gc291cmNlUmVjdDsKKyAgICBSZWN0YW5nbGUgZGVzdFNjaXNzb3JlZFJlY3QgPSBkZXN0
UmVjdDsKKworICAgIGlmIChtU3RhdGUuc2Npc3NvclRlc3QpCisgICAgeworICAgICAgICAvLyBP
bmx5IHdyaXRlIHRvIHBhcnRzIG9mIHRoZSBkZXN0aW5hdGlvbiBmcmFtZWJ1ZmZlciB3aGljaCBw
YXNzIHRoZSBzY2lzc29yIHRlc3QuCisgICAgICAgIGlmIChkZXN0UmVjdC54IDwgbVN0YXRlLnNj
aXNzb3IueCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IHhEaWZmID0gbVN0YXRlLnNjaXNz
b3IueCAtIGRlc3RSZWN0Lng7CisgICAgICAgICAgICBkZXN0U2Npc3NvcmVkUmVjdC54ID0gbVN0
YXRlLnNjaXNzb3IueDsKKyAgICAgICAgICAgIGRlc3RTY2lzc29yZWRSZWN0LndpZHRoIC09IHhE
aWZmOworICAgICAgICAgICAgc291cmNlU2Npc3NvcmVkUmVjdC54ICs9IHhEaWZmOworICAgICAg
ICAgICAgc291cmNlU2Npc3NvcmVkUmVjdC53aWR0aCAtPSB4RGlmZjsKKworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGRlc3RSZWN0LnggKyBkZXN0UmVjdC53aWR0aCA+IG1TdGF0ZS5zY2lzc29y
LnggKyBtU3RhdGUuc2Npc3Nvci53aWR0aCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IHhE
aWZmID0gKGRlc3RSZWN0LnggKyBkZXN0UmVjdC53aWR0aCkgLSAobVN0YXRlLnNjaXNzb3IueCAr
IG1TdGF0ZS5zY2lzc29yLndpZHRoKTsKKyAgICAgICAgICAgIGRlc3RTY2lzc29yZWRSZWN0Lndp
ZHRoIC09IHhEaWZmOworICAgICAgICAgICAgc291cmNlU2Npc3NvcmVkUmVjdC53aWR0aCAtPSB4
RGlmZjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkZXN0UmVjdC55IDwgbVN0YXRlLnNjaXNz
b3IueSkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IHlEaWZmID0gbVN0YXRlLnNjaXNzb3Iu
eSAtIGRlc3RSZWN0Lnk7CisgICAgICAgICAgICBkZXN0U2Npc3NvcmVkUmVjdC55ID0gbVN0YXRl
LnNjaXNzb3IueTsKKyAgICAgICAgICAgIGRlc3RTY2lzc29yZWRSZWN0LmhlaWdodCAtPSB5RGlm
ZjsKKyAgICAgICAgICAgIHNvdXJjZVNjaXNzb3JlZFJlY3QueSArPSB5RGlmZjsKKyAgICAgICAg
ICAgIHNvdXJjZVNjaXNzb3JlZFJlY3QuaGVpZ2h0IC09IHlEaWZmOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGRlc3RSZWN0LnkgKyBkZXN0UmVjdC5oZWlnaHQgPiBtU3RhdGUuc2Npc3Nvci55
ICsgbVN0YXRlLnNjaXNzb3IuaGVpZ2h0KQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgeURp
ZmYgPSAoZGVzdFJlY3QueSArIGRlc3RSZWN0LmhlaWdodCkgLSAobVN0YXRlLnNjaXNzb3IueSAr
IG1TdGF0ZS5zY2lzc29yLmhlaWdodCk7CisgICAgICAgICAgICBkZXN0U2Npc3NvcmVkUmVjdC5o
ZWlnaHQgIC09IHlEaWZmOworICAgICAgICAgICAgc291cmNlU2Npc3NvcmVkUmVjdC5oZWlnaHQg
LT0geURpZmY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQg
PSBmYWxzZTsKKyAgICBib29sIGJsaXREZXB0aFN0ZW5jaWwgPSBmYWxzZTsKKworICAgIFJlY3Rh
bmdsZSBzb3VyY2VUcmltbWVkUmVjdCA9IHNvdXJjZVNjaXNzb3JlZFJlY3Q7CisgICAgUmVjdGFu
Z2xlIGRlc3RUcmltbWVkUmVjdCA9IGRlc3RTY2lzc29yZWRSZWN0OworCisgICAgLy8gVGhlIHNv
dXJjZSAmIGRlc3RpbmF0aW9uIHJlY3RhbmdsZXMgYWxzbyBtYXkgbmVlZCB0byBiZSB0cmltbWVk
IGlmIHRoZXkgZmFsbCBvdXQgb2YgdGhlIGJvdW5kcyBvZiAKKyAgICAvLyB0aGUgYWN0dWFsIGRy
YXcgYW5kIHJlYWQgc3VyZmFjZXMuCisgICAgaWYgKHNvdXJjZVRyaW1tZWRSZWN0LnggPCAwKQor
ICAgIHsKKyAgICAgICAgaW50IHhEaWZmID0gMCAtIHNvdXJjZVRyaW1tZWRSZWN0Lng7CisgICAg
ICAgIHNvdXJjZVRyaW1tZWRSZWN0LnggPSAwOworICAgICAgICBzb3VyY2VUcmltbWVkUmVjdC53
aWR0aCAtPSB4RGlmZjsKKyAgICAgICAgZGVzdFRyaW1tZWRSZWN0LnggKz0geERpZmY7CisgICAg
ICAgIGRlc3RUcmltbWVkUmVjdC53aWR0aCAtPSB4RGlmZjsKKyAgICB9CisKKyAgICBpZiAoc291
cmNlVHJpbW1lZFJlY3QueCArIHNvdXJjZVRyaW1tZWRSZWN0LndpZHRoID4gcmVhZEJ1ZmZlcldp
ZHRoKQorICAgIHsKKyAgICAgICAgaW50IHhEaWZmID0gKHNvdXJjZVRyaW1tZWRSZWN0LnggKyBz
b3VyY2VUcmltbWVkUmVjdC53aWR0aCkgLSByZWFkQnVmZmVyV2lkdGg7CisgICAgICAgIHNvdXJj
ZVRyaW1tZWRSZWN0LndpZHRoIC09IHhEaWZmOworICAgICAgICBkZXN0VHJpbW1lZFJlY3Qud2lk
dGggLT0geERpZmY7CisgICAgfQorCisgICAgaWYgKHNvdXJjZVRyaW1tZWRSZWN0LnkgPCAwKQor
ICAgIHsKKyAgICAgICAgaW50IHlEaWZmID0gMCAtIHNvdXJjZVRyaW1tZWRSZWN0Lnk7CisgICAg
ICAgIHNvdXJjZVRyaW1tZWRSZWN0LnkgPSAwOworICAgICAgICBzb3VyY2VUcmltbWVkUmVjdC5o
ZWlnaHQgLT0geURpZmY7CisgICAgICAgIGRlc3RUcmltbWVkUmVjdC55ICs9IHlEaWZmOworICAg
ICAgICBkZXN0VHJpbW1lZFJlY3QuaGVpZ2h0IC09IHlEaWZmOworICAgIH0KKworICAgIGlmIChz
b3VyY2VUcmltbWVkUmVjdC55ICsgc291cmNlVHJpbW1lZFJlY3QuaGVpZ2h0ID4gcmVhZEJ1ZmZl
ckhlaWdodCkKKyAgICB7CisgICAgICAgIGludCB5RGlmZiA9IChzb3VyY2VUcmltbWVkUmVjdC55
ICsgc291cmNlVHJpbW1lZFJlY3QuaGVpZ2h0KSAtIHJlYWRCdWZmZXJIZWlnaHQ7CisgICAgICAg
IHNvdXJjZVRyaW1tZWRSZWN0LmhlaWdodCAtPSB5RGlmZjsKKyAgICAgICAgZGVzdFRyaW1tZWRS
ZWN0LmhlaWdodCAtPSB5RGlmZjsKKyAgICB9CisKKyAgICBpZiAoZGVzdFRyaW1tZWRSZWN0Lngg
PCAwKQorICAgIHsKKyAgICAgICAgaW50IHhEaWZmID0gMCAtIGRlc3RUcmltbWVkUmVjdC54Owor
ICAgICAgICBkZXN0VHJpbW1lZFJlY3QueCA9IDA7CisgICAgICAgIGRlc3RUcmltbWVkUmVjdC53
aWR0aCAtPSB4RGlmZjsKKyAgICAgICAgc291cmNlVHJpbW1lZFJlY3QueCArPSB4RGlmZjsKKyAg
ICAgICAgc291cmNlVHJpbW1lZFJlY3Qud2lkdGggLT0geERpZmY7CisgICAgfQorCisgICAgaWYg
KGRlc3RUcmltbWVkUmVjdC54ICsgZGVzdFRyaW1tZWRSZWN0LndpZHRoID4gZHJhd0J1ZmZlcldp
ZHRoKQorICAgIHsKKyAgICAgICAgaW50IHhEaWZmID0gKGRlc3RUcmltbWVkUmVjdC54ICsgZGVz
dFRyaW1tZWRSZWN0LndpZHRoKSAtIGRyYXdCdWZmZXJXaWR0aDsKKyAgICAgICAgZGVzdFRyaW1t
ZWRSZWN0LndpZHRoIC09IHhEaWZmOworICAgICAgICBzb3VyY2VUcmltbWVkUmVjdC53aWR0aCAt
PSB4RGlmZjsKKyAgICB9CisKKyAgICBpZiAoZGVzdFRyaW1tZWRSZWN0LnkgPCAwKQorICAgIHsK
KyAgICAgICAgaW50IHlEaWZmID0gMCAtIGRlc3RUcmltbWVkUmVjdC55OworICAgICAgICBkZXN0
VHJpbW1lZFJlY3QueSA9IDA7CisgICAgICAgIGRlc3RUcmltbWVkUmVjdC5oZWlnaHQgLT0geURp
ZmY7CisgICAgICAgIHNvdXJjZVRyaW1tZWRSZWN0LnkgKz0geURpZmY7CisgICAgICAgIHNvdXJj
ZVRyaW1tZWRSZWN0LmhlaWdodCAtPSB5RGlmZjsKKyAgICB9CisKKyAgICBpZiAoZGVzdFRyaW1t
ZWRSZWN0LnkgKyBkZXN0VHJpbW1lZFJlY3QuaGVpZ2h0ID4gZHJhd0J1ZmZlckhlaWdodCkKKyAg
ICB7CisgICAgICAgIGludCB5RGlmZiA9IChkZXN0VHJpbW1lZFJlY3QueSArIGRlc3RUcmltbWVk
UmVjdC5oZWlnaHQpIC0gZHJhd0J1ZmZlckhlaWdodDsKKyAgICAgICAgZGVzdFRyaW1tZWRSZWN0
LmhlaWdodCAtPSB5RGlmZjsKKyAgICAgICAgc291cmNlVHJpbW1lZFJlY3QuaGVpZ2h0IC09IHlE
aWZmOworICAgIH0KKworICAgIGJvb2wgcGFydGlhbEJ1ZmZlckNvcHkgPSBmYWxzZTsKKyAgICBp
ZiAoc291cmNlVHJpbW1lZFJlY3QuaGVpZ2h0IDwgcmVhZEJ1ZmZlckhlaWdodCB8fAorICAgICAg
ICBzb3VyY2VUcmltbWVkUmVjdC53aWR0aCA8IHJlYWRCdWZmZXJXaWR0aCB8fCAKKyAgICAgICAg
ZGVzdFRyaW1tZWRSZWN0LmhlaWdodCA8IGRyYXdCdWZmZXJIZWlnaHQgfHwKKyAgICAgICAgZGVz
dFRyaW1tZWRSZWN0LndpZHRoIDwgZHJhd0J1ZmZlcldpZHRoIHx8CisgICAgICAgIHNvdXJjZVRy
aW1tZWRSZWN0LnkgIT0gMCB8fCBkZXN0VHJpbW1lZFJlY3QueSAhPSAwIHx8IHNvdXJjZVRyaW1t
ZWRSZWN0LnggIT0gMCB8fCBkZXN0VHJpbW1lZFJlY3QueCAhPSAwKQorICAgIHsKKyAgICAgICAg
cGFydGlhbEJ1ZmZlckNvcHkgPSB0cnVlOworICAgIH0KKworICAgIGlmIChtYXNrICYgR0xfQ09M
T1JfQlVGRkVSX0JJVCkKKyAgICB7CisgICAgICAgIGNvbnN0IEdMZW51bSByZWFkQ29sb3JidWZm
ZXJUeXBlID0gcmVhZEZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXJUeXBlKCk7CisgICAg
ICAgIGNvbnN0IGJvb2wgdmFsaWRSZWFkVHlwZSA9IChyZWFkQ29sb3JidWZmZXJUeXBlID09IEdM
X1RFWFRVUkVfMkQpIHx8IChyZWFkQ29sb3JidWZmZXJUeXBlID09IEdMX1JFTkRFUkJVRkZFUik7
CisgICAgICAgIGJvb2wgdmFsaWREcmF3VHlwZSA9IHRydWU7CisgICAgICAgIGJvb2wgdmFsaWRE
cmF3Rm9ybWF0ID0gdHJ1ZTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBjb2xvckF0dGFj
aG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdf
QlVGRkVSUzsgY29sb3JBdHRhY2htZW50KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChk
cmF3RnJhbWVidWZmZXItPmlzRW5hYmxlZENvbG9yQXR0YWNobWVudChjb2xvckF0dGFjaG1lbnQp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChkcmF3RnJhbWVidWZmZXItPmdl
dENvbG9yYnVmZmVyVHlwZShjb2xvckF0dGFjaG1lbnQpICE9IEdMX1RFWFRVUkVfMkQgJiYKKyAg
ICAgICAgICAgICAgICAgICAgZHJhd0ZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlclR5cGUoY29s
b3JBdHRhY2htZW50KSAhPSBHTF9SRU5ERVJCVUZGRVIpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICB2YWxpZERyYXdUeXBlID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgaWYgKGRyYXdGcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIo
Y29sb3JBdHRhY2htZW50KS0+Z2V0QWN0dWFsRm9ybWF0KCkgIT0gcmVhZENvbG9yQnVmZmVyLT5n
ZXRBY3R1YWxGb3JtYXQoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHZhbGlkRHJhd0Zvcm1hdCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghdmFsaWRSZWFkVHlwZSB8fCAhdmFsaWREcmF3
VHlwZSB8fCAhdmFsaWREcmF3Rm9ybWF0KQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNv
bG9yIGJ1ZmZlciBmb3JtYXQgY29udmVyc2lvbiBpbiBCbGl0RnJhbWVidWZmZXJBTkdMRSBub3Qg
c3VwcG9ydGVkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb24iKTsKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAocGFydGlhbEJ1ZmZlckNvcHkgJiYgcmVhZEZyYW1lYnVmZmVyLT5nZXRTYW1wbGVz
KCkgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAgICAgICBibGl0UmVuZGVyVGFyZ2V0ID0g
dHJ1ZTsKKworICAgIH0KKworICAgIGlmIChtYXNrICYgKEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBH
TF9TVEVOQ0lMX0JVRkZFUl9CSVQpKQorICAgIHsKKyAgICAgICAgUmVuZGVyYnVmZmVyICpyZWFk
RFNCdWZmZXIgPSBOVUxMOworICAgICAgICBSZW5kZXJidWZmZXIgKmRyYXdEU0J1ZmZlciA9IE5V
TEw7CisKKyAgICAgICAgLy8gV2Ugc3VwcG9ydCBPRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwsIGFu
ZCBkbyBub3Qgc3VwcG9ydCBhIHNlcGFyYXRlbHkgYXR0YWNoZWQgZGVwdGggYW5kIHN0ZW5jaWwg
YnVmZmVyLCBzbyBpZiB3ZSBoYXZlCisgICAgICAgIC8vIGJvdGggYSBkZXB0aCBhbmQgc3RlbmNp
bCBidWZmZXIsIGl0IHdpbGwgYmUgdGhlIHNhbWUgYnVmZmVyLgorCisgICAgICAgIGlmIChtYXNr
ICYgR0xfREVQVEhfQlVGRkVSX0JJVCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHJlYWRG
cmFtZWJ1ZmZlci0+Z2V0RGVwdGhidWZmZXIoKSAmJiBkcmF3RnJhbWVidWZmZXItPmdldERlcHRo
YnVmZmVyKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHJlYWRGcmFtZWJ1
ZmZlci0+Z2V0RGVwdGhidWZmZXJUeXBlKCkgIT0gZHJhd0ZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1
ZmZlclR5cGUoKSB8fAorICAgICAgICAgICAgICAgICAgICByZWFkRnJhbWVidWZmZXItPmdldERl
cHRoYnVmZmVyKCktPmdldEFjdHVhbEZvcm1hdCgpICE9IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0RGVw
dGhidWZmZXIoKS0+Z2V0QWN0dWFsRm9ybWF0KCkpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBibGl0RGVwdGhTdGVuY2lsID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICByZWFkRFNCdWZmZXIgPSByZWFkRnJhbWVidWZmZXItPmdldERl
cHRoYnVmZmVyKCk7CisgICAgICAgICAgICAgICAgZHJhd0RTQnVmZmVyID0gZHJhd0ZyYW1lYnVm
ZmVyLT5nZXREZXB0aGJ1ZmZlcigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKG1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChyZWFkRnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXIoKSAmJiBkcmF3RnJhbWVi
dWZmZXItPmdldFN0ZW5jaWxidWZmZXIoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAocmVhZEZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyVHlwZSgpICE9IGRyYXdGcmFt
ZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlclR5cGUoKSB8fAorICAgICAgICAgICAgICAgICAgICBy
ZWFkRnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXIoKS0+Z2V0QWN0dWFsRm9ybWF0KCkgIT0g
ZHJhd0ZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyKCktPmdldEFjdHVhbEZvcm1hdCgpKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgYmxpdERlcHRoU3RlbmNpbCA9IHRydWU7CisgICAgICAgICAgICAgICAgcmVhZERTQnVmZmVy
ID0gcmVhZEZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyKCk7CisgICAgICAgICAgICAgICAg
ZHJhd0RTQnVmZmVyID0gZHJhd0ZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocGFydGlhbEJ1ZmZlckNvcHkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiT25seSB3aG9sZS1idWZmZXIgZGVwdGggYW5kIHN0
ZW5jaWwgYmxpdHMgYXJlIHN1cHBvcnRlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uLiIpOworICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7IC8vIG9ubHkg
d2hvbGUtYnVmZmVyIGNvcGllcyBhcmUgcGVybWl0dGVkCisgICAgICAgIH0KKworICAgICAgICBp
ZiAoKGRyYXdEU0J1ZmZlciAmJiBkcmF3RFNCdWZmZXItPmdldFNhbXBsZXMoKSAhPSAwKSB8fCAK
KyAgICAgICAgICAgIChyZWFkRFNCdWZmZXIgJiYgcmVhZERTQnVmZmVyLT5nZXRTYW1wbGVzKCkg
IT0gMCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGJsaXRSZW5kZXJUYXJn
ZXQgfHwgYmxpdERlcHRoU3RlbmNpbCkKKyAgICB7CisgICAgICAgIG1SZW5kZXJlci0+YmxpdFJl
Y3QocmVhZEZyYW1lYnVmZmVyLCBzb3VyY2VUcmltbWVkUmVjdCwgZHJhd0ZyYW1lYnVmZmVyLCBk
ZXN0VHJpbW1lZFJlY3QsIGJsaXRSZW5kZXJUYXJnZXQsIGJsaXREZXB0aFN0ZW5jaWwpOworICAg
IH0KK30KKworfQorCitleHRlcm4gIkMiCit7CitnbDo6Q29udGV4dCAqZ2xDcmVhdGVDb250ZXh0
KGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsIHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIs
IGJvb2wgbm90aWZ5UmVzZXRzLCBib29sIHJvYnVzdEFjY2VzcykKK3sKKyAgICByZXR1cm4gbmV3
IGdsOjpDb250ZXh0KHNoYXJlQ29udGV4dCwgcmVuZGVyZXIsIG5vdGlmeVJlc2V0cywgcm9idXN0
QWNjZXNzKTsKK30KKwordm9pZCBnbERlc3Ryb3lDb250ZXh0KGdsOjpDb250ZXh0ICpjb250ZXh0
KQoreworICAgIGRlbGV0ZSBjb250ZXh0OworCisgICAgaWYgKGNvbnRleHQgPT0gZ2w6OmdldENv
bnRleHQoKSkKKyAgICB7CisgICAgICAgIGdsOjptYWtlQ3VycmVudChOVUxMLCBOVUxMLCBOVUxM
KTsKKyAgICB9Cit9CisKK3ZvaWQgZ2xNYWtlQ3VycmVudChnbDo6Q29udGV4dCAqY29udGV4dCwg
ZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCit7CisgICAgZ2w6
Om1ha2VDdXJyZW50KGNvbnRleHQsIGRpc3BsYXksIHN1cmZhY2UpOworfQorCitnbDo6Q29udGV4
dCAqZ2xHZXRDdXJyZW50Q29udGV4dCgpCit7CisgICAgcmV0dXJuIGdsOjpnZXRDb250ZXh0KCk7
Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQ29u
dGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvQ29udGV4dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9Db250ZXh0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTA1IEBACisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisvLyBDb250ZXh0Lmg6IERlZmluZXMgdGhlIGdsOjpDb250ZXh0IGNs
YXNzLCBtYW5hZ2luZyBhbGwgR0wgc3RhdGUgYW5kIHBlcmZvcm1pbmcKKy8vIHJlbmRlcmluZyBv
cGVyYXRpb25zLiBJdCBpcyB0aGUgR0xFUzIgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgRUdM
Q29udGV4dC4KKworI2lmbmRlZiBMSUJHTEVTVjJfQ09OVEVYVF9IXworI2RlZmluZSBMSUJHTEVT
VjJfQ09OVEVYVF9IXworCisjZGVmaW5lIEdMX0FQSUNBTEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIu
aD4KKyNpbmNsdWRlIDxHTEVTMi9nbDJleHQuaD4KKyNkZWZpbmUgRUdMQVBJCisjaW5jbHVkZSA8
RUdML2VnbC5oPgorCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPG1hcD4KKyNpZmRlZiBf
TVNDX1ZFUgorI2luY2x1ZGUgPGhhc2hfbWFwPgorI2Vsc2UKKyNpbmNsdWRlIDx1bm9yZGVyZWRf
bWFwPgorI2VuZGlmCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUg
ImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9IYW5kbGVBbGxv
Y2F0b3IuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvYW5nbGV0eXBlcy5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9Db25zdGFudHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsK
K30KKworbmFtZXNwYWNlIGVnbAoreworY2xhc3MgRGlzcGxheTsKK2NsYXNzIFN1cmZhY2U7Cit9
CisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgU2hhZGVyOworY2xhc3MgUHJvZ3JhbTsKK2NsYXNz
IFByb2dyYW1CaW5hcnk7CitjbGFzcyBUZXh0dXJlOworY2xhc3MgVGV4dHVyZTJEOworY2xhc3Mg
VGV4dHVyZUN1YmVNYXA7CitjbGFzcyBGcmFtZWJ1ZmZlcjsKK2NsYXNzIFJlbmRlcmJ1ZmZlcjsK
K2NsYXNzIFJlbmRlcmJ1ZmZlclN0b3JhZ2U7CitjbGFzcyBDb2xvcmJ1ZmZlcjsKK2NsYXNzIERl
cHRoYnVmZmVyOworY2xhc3MgU3RlbmNpbGJ1ZmZlcjsKK2NsYXNzIERlcHRoU3RlbmNpbGJ1ZmZl
cjsKK2NsYXNzIEZlbmNlOworY2xhc3MgUXVlcnk7CitjbGFzcyBSZXNvdXJjZU1hbmFnZXI7Citj
bGFzcyBCdWZmZXI7CisKK2VudW0gUXVlcnlUeXBlCit7CisgICAgUVVFUllfQU5ZX1NBTVBMRVNf
UEFTU0VELAorICAgIFFVRVJZX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsCisKKyAg
ICBRVUVSWV9UWVBFX0NPVU5UCit9OworCisvLyBIZWxwZXIgc3RydWN0dXJlIGRlc2NyaWJpbmcg
YSBzaW5nbGUgdmVydGV4IGF0dHJpYnV0ZQorY2xhc3MgVmVydGV4QXR0cmlidXRlCit7CisgIHB1
YmxpYzoKKyAgICBWZXJ0ZXhBdHRyaWJ1dGUoKSA6IG1UeXBlKEdMX0ZMT0FUKSwgbVNpemUoMCks
IG1Ob3JtYWxpemVkKGZhbHNlKSwgbVN0cmlkZSgwKSwgbVBvaW50ZXIoTlVMTCksIG1BcnJheUVu
YWJsZWQoZmFsc2UpLCBtRGl2aXNvcigwKQorICAgIHsKKyAgICAgICAgbUN1cnJlbnRWYWx1ZVsw
XSA9IDAuMGY7CisgICAgICAgIG1DdXJyZW50VmFsdWVbMV0gPSAwLjBmOworICAgICAgICBtQ3Vy
cmVudFZhbHVlWzJdID0gMC4wZjsKKyAgICAgICAgbUN1cnJlbnRWYWx1ZVszXSA9IDEuMGY7Cisg
ICAgfQorCisgICAgaW50IHR5cGVTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
bVR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0JZVEU6ICAgICAgICAgICByZXR1
cm4gbVNpemUgKiBzaXplb2YoR0xieXRlKTsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6ICByZXR1cm4gbVNpemUgKiBzaXplb2YoR0x1Ynl0ZSk7CisgICAgICAgICAgY2FzZSBHTF9T
SE9SVDogICAgICAgICAgcmV0dXJuIG1TaXplICogc2l6ZW9mKEdMc2hvcnQpOworICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6IHJldHVybiBtU2l6ZSAqIHNpemVvZihHTHVzaG9ydCk7
CisgICAgICAgICAgY2FzZSBHTF9GSVhFRDogICAgICAgICAgcmV0dXJuIG1TaXplICogc2l6ZW9m
KEdMZml4ZWQpOworICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgICAgIHJldHVybiBtU2l6
ZSAqIHNpemVvZihHTGZsb2F0KTsKKyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyBy
ZXR1cm4gbVNpemUgKiBzaXplb2YoR0xmbG9hdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBH
THNpemVpIHN0cmlkZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbVN0cmlkZSA/IG1T
dHJpZGUgOiB0eXBlU2l6ZSgpOworICAgIH0KKworICAgIC8vIEZyb20gZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyCisgICAgR0xlbnVtIG1UeXBlOworICAgIEdMaW50IG1TaXplOworICAgIGJvb2wgbU5v
cm1hbGl6ZWQ7CisgICAgR0xzaXplaSBtU3RyaWRlOyAgIC8vIDAgbWVhbnMgbmF0dXJhbCBzdHJp
ZGUKKworICAgIHVuaW9uCisgICAgeworICAgICAgICBjb25zdCB2b2lkICptUG9pbnRlcjsKKyAg
ICAgICAgaW50cHRyX3QgbU9mZnNldDsKKyAgICB9OworCisgICAgQmluZGluZ1BvaW50ZXI8QnVm
ZmVyPiBtQm91bmRCdWZmZXI7ICAgLy8gQ2FwdHVyZWQgd2hlbiBnbFZlcnRleEF0dHJpYlBvaW50
ZXIgaXMgY2FsbGVkLgorCisgICAgYm9vbCBtQXJyYXlFbmFibGVkOyAgIC8vIEZyb20gZ2xFbmFi
bGUvRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5CisgICAgZmxvYXQgbUN1cnJlbnRWYWx1ZVs0XTsg
ICAvLyBGcm9tIGdsVmVydGV4QXR0cmliCisgICAgdW5zaWduZWQgaW50IG1EaXZpc29yOworfTsK
KworLy8gSGVscGVyIHN0cnVjdHVyZSB0byBzdG9yZSBhbGwgcmF3IHN0YXRlCitzdHJ1Y3QgU3Rh
dGUKK3sKKyAgICBDb2xvciBjb2xvckNsZWFyVmFsdWU7CisgICAgR0xjbGFtcGYgZGVwdGhDbGVh
clZhbHVlOworICAgIGludCBzdGVuY2lsQ2xlYXJWYWx1ZTsKKworICAgIFJhc3Rlcml6ZXJTdGF0
ZSByYXN0ZXJpemVyOworICAgIGJvb2wgc2Npc3NvclRlc3Q7CisgICAgUmVjdGFuZ2xlIHNjaXNz
b3I7CisKKyAgICBCbGVuZFN0YXRlIGJsZW5kOworICAgIENvbG9yIGJsZW5kQ29sb3I7CisgICAg
Ym9vbCBzYW1wbGVDb3ZlcmFnZTsKKyAgICBHTGNsYW1wZiBzYW1wbGVDb3ZlcmFnZVZhbHVlOwor
ICAgIGJvb2wgc2FtcGxlQ292ZXJhZ2VJbnZlcnQ7CisKKyAgICBEZXB0aFN0ZW5jaWxTdGF0ZSBk
ZXB0aFN0ZW5jaWw7CisgICAgR0xpbnQgc3RlbmNpbFJlZjsKKyAgICBHTGludCBzdGVuY2lsQmFj
a1JlZjsKKworICAgIEdMZmxvYXQgbGluZVdpZHRoOworCisgICAgR0xlbnVtIGdlbmVyYXRlTWlw
bWFwSGludDsKKyAgICBHTGVudW0gZnJhZ21lbnRTaGFkZXJEZXJpdmF0aXZlSGludDsKKworICAg
IFJlY3RhbmdsZSB2aWV3cG9ydDsKKyAgICBmbG9hdCB6TmVhcjsKKyAgICBmbG9hdCB6RmFyOwor
CisgICAgdW5zaWduZWQgaW50IGFjdGl2ZVNhbXBsZXI7ICAgLy8gQWN0aXZlIHRleHR1cmUgdW5p
dCBzZWxlY3RvciAtIEdMX1RFWFRVUkUwCisgICAgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiBhcnJh
eUJ1ZmZlcjsKKyAgICBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+IGVsZW1lbnRBcnJheUJ1ZmZlcjsK
KyAgICBHTHVpbnQgcmVhZEZyYW1lYnVmZmVyOworICAgIEdMdWludCBkcmF3RnJhbWVidWZmZXI7
CisgICAgQmluZGluZ1BvaW50ZXI8UmVuZGVyYnVmZmVyPiByZW5kZXJidWZmZXI7CisgICAgR0x1
aW50IGN1cnJlbnRQcm9ncmFtOworCisgICAgVmVydGV4QXR0cmlidXRlIHZlcnRleEF0dHJpYnV0
ZVtNQVhfVkVSVEVYX0FUVFJJQlNdOworICAgIEJpbmRpbmdQb2ludGVyPFRleHR1cmU+IHNhbXBs
ZXJUZXh0dXJlW1RFWFRVUkVfVFlQRV9DT1VOVF1bSU1QTEVNRU5UQVRJT05fTUFYX0NPTUJJTkVE
X1RFWFRVUkVfSU1BR0VfVU5JVFNdOworICAgIEJpbmRpbmdQb2ludGVyPFF1ZXJ5PiBhY3RpdmVR
dWVyeVtRVUVSWV9UWVBFX0NPVU5UXTsKKworICAgIEdMaW50IHVucGFja0FsaWdubWVudDsKKyAg
ICBHTGludCBwYWNrQWxpZ25tZW50OworICAgIGJvb2wgcGFja1JldmVyc2VSb3dPcmRlcjsKK307
CisKK2NsYXNzIENvbnRleHQKK3sKKyAgcHVibGljOgorICAgIENvbnRleHQoY29uc3QgZ2w6OkNv
bnRleHQgKnNoYXJlQ29udGV4dCwgcng6OlJlbmRlcmVyICpyZW5kZXJlciwgYm9vbCBub3RpZnlS
ZXNldHMsIGJvb2wgcm9idXN0QWNjZXNzKTsKKworICAgIH5Db250ZXh0KCk7CisKKyAgICB2b2lk
IG1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqc3VyZmFjZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
bWFya0NvbnRleHRMb3N0KCk7CisgICAgYm9vbCBpc0NvbnRleHRMb3N0KCk7CisKKyAgICAvLyBT
dGF0ZSBtYW5pcHVsYXRpb24KKyAgICB2b2lkIHNldENsZWFyQ29sb3IoZmxvYXQgcmVkLCBmbG9h
dCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpOworCisgICAgdm9pZCBzZXRDbGVhckRl
cHRoKGZsb2F0IGRlcHRoKTsKKworICAgIHZvaWQgc2V0Q2xlYXJTdGVuY2lsKGludCBzdGVuY2ls
KTsKKworICAgIHZvaWQgc2V0Q3VsbEZhY2UoYm9vbCBlbmFibGVkKTsKKyAgICBib29sIGlzQ3Vs
bEZhY2VFbmFibGVkKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEN1bGxNb2RlKEdMZW51bSBtb2Rl
KTsKKworICAgIHZvaWQgc2V0RnJvbnRGYWNlKEdMZW51bSBmcm9udCk7CisKKyAgICB2b2lkIHNl
dERlcHRoVGVzdChib29sIGVuYWJsZWQpOworICAgIGJvb2wgaXNEZXB0aFRlc3RFbmFibGVkKCkg
Y29uc3Q7CisKKyAgICB2b2lkIHNldERlcHRoRnVuYyhHTGVudW0gZGVwdGhGdW5jKTsKKworICAg
IHZvaWQgc2V0RGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQgekZhcik7CisgICAgCisgICAg
dm9pZCBzZXRCbGVuZChib29sIGVuYWJsZWQpOworICAgIGJvb2wgaXNCbGVuZEVuYWJsZWQoKSBj
b25zdDsKKworICAgIHZvaWQgc2V0QmxlbmRGYWN0b3JzKEdMZW51bSBzb3VyY2VSR0IsIEdMZW51
bSBkZXN0UkdCLCBHTGVudW0gc291cmNlQWxwaGEsIEdMZW51bSBkZXN0QWxwaGEpOworICAgIHZv
aWQgc2V0QmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9h
dCBhbHBoYSk7CisgICAgdm9pZCBzZXRCbGVuZEVxdWF0aW9uKEdMZW51bSByZ2JFcXVhdGlvbiwg
R0xlbnVtIGFscGhhRXF1YXRpb24pOworCisgICAgdm9pZCBzZXRTdGVuY2lsVGVzdChib29sIGVu
YWJsZWQpOworICAgIGJvb2wgaXNTdGVuY2lsVGVzdEVuYWJsZWQoKSBjb25zdDsKKworICAgIHZv
aWQgc2V0U3RlbmNpbFBhcmFtcyhHTGVudW0gc3RlbmNpbEZ1bmMsIEdMaW50IHN0ZW5jaWxSZWYs
IEdMdWludCBzdGVuY2lsTWFzayk7CisgICAgdm9pZCBzZXRTdGVuY2lsQmFja1BhcmFtcyhHTGVu
dW0gc3RlbmNpbEJhY2tGdW5jLCBHTGludCBzdGVuY2lsQmFja1JlZiwgR0x1aW50IHN0ZW5jaWxC
YWNrTWFzayk7CisgICAgdm9pZCBzZXRTdGVuY2lsV3JpdGVtYXNrKEdMdWludCBzdGVuY2lsV3Jp
dGVtYXNrKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxCYWNrV3JpdGVtYXNrKEdMdWludCBzdGVuY2ls
QmFja1dyaXRlbWFzayk7CisgICAgdm9pZCBzZXRTdGVuY2lsT3BlcmF0aW9ucyhHTGVudW0gc3Rl
bmNpbEZhaWwsIEdMZW51bSBzdGVuY2lsUGFzc0RlcHRoRmFpbCwgR0xlbnVtIHN0ZW5jaWxQYXNz
RGVwdGhQYXNzKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxCYWNrT3BlcmF0aW9ucyhHTGVudW0gc3Rl
bmNpbEJhY2tGYWlsLCBHTGVudW0gc3RlbmNpbEJhY2tQYXNzRGVwdGhGYWlsLCBHTGVudW0gc3Rl
bmNpbEJhY2tQYXNzRGVwdGhQYXNzKTsKKworICAgIHZvaWQgc2V0UG9seWdvbk9mZnNldEZpbGwo
Ym9vbCBlbmFibGVkKTsKKyAgICBib29sIGlzUG9seWdvbk9mZnNldEZpbGxFbmFibGVkKCkgY29u
c3Q7CisKKyAgICB2b2lkIHNldFBvbHlnb25PZmZzZXRQYXJhbXMoR0xmbG9hdCBmYWN0b3IsIEdM
ZmxvYXQgdW5pdHMpOworCisgICAgdm9pZCBzZXRTYW1wbGVBbHBoYVRvQ292ZXJhZ2UoYm9vbCBl
bmFibGVkKTsKKyAgICBib29sIGlzU2FtcGxlQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCgpIGNvbnN0
OworCisgICAgdm9pZCBzZXRTYW1wbGVDb3ZlcmFnZShib29sIGVuYWJsZWQpOworICAgIGJvb2wg
aXNTYW1wbGVDb3ZlcmFnZUVuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0U2FtcGxlQ292
ZXJhZ2VQYXJhbXMoR0xjbGFtcGYgdmFsdWUsIGJvb2wgaW52ZXJ0KTsKKworICAgIHZvaWQgc2V0
U2Npc3NvclRlc3QoYm9vbCBlbmFibGVkKTsKKyAgICBib29sIGlzU2Npc3NvclRlc3RFbmFibGVk
KCkgY29uc3Q7CisKKyAgICB2b2lkIHNldERpdGhlcihib29sIGVuYWJsZWQpOworICAgIGJvb2wg
aXNEaXRoZXJFbmFibGVkKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldExpbmVXaWR0aChHTGZsb2F0
IHdpZHRoKTsKKworICAgIHZvaWQgc2V0R2VuZXJhdGVNaXBtYXBIaW50KEdMZW51bSBoaW50KTsK
KyAgICB2b2lkIHNldEZyYWdtZW50U2hhZGVyRGVyaXZhdGl2ZUhpbnQoR0xlbnVtIGhpbnQpOwor
CisgICAgdm9pZCBzZXRWaWV3cG9ydFBhcmFtcyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCk7CisKKyAgICB2b2lkIHNldFNjaXNzb3JQYXJhbXMoR0xpbnQg
eCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworCisgICAgdm9pZCBz
ZXRDb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSk7
CisgICAgdm9pZCBzZXREZXB0aE1hc2soYm9vbCBtYXNrKTsKKworICAgIHZvaWQgc2V0QWN0aXZl
U2FtcGxlcih1bnNpZ25lZCBpbnQgYWN0aXZlKTsKKworICAgIEdMdWludCBnZXRSZWFkRnJhbWVi
dWZmZXJIYW5kbGUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxl
KCkgY29uc3Q7CisgICAgR0x1aW50IGdldFJlbmRlcmJ1ZmZlckhhbmRsZSgpIGNvbnN0OworCisg
ICAgR0x1aW50IGdldEFycmF5QnVmZmVySGFuZGxlKCkgY29uc3Q7CisKKyAgICBHTHVpbnQgZ2V0
QWN0aXZlUXVlcnkoR0xlbnVtIHRhcmdldCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGludCBhdHRyaWJOdW0sIGJvb2wgZW5hYmxlZCk7Cisg
ICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZnZXRWZXJ0ZXhBdHRyaWJTdGF0ZSh1bnNpZ25lZCBp
bnQgYXR0cmliTnVtKTsKKyAgICB2b2lkIHNldFZlcnRleEF0dHJpYlN0YXRlKHVuc2lnbmVkIGlu
dCBhdHRyaWJOdW0sIEJ1ZmZlciAqYm91bmRCdWZmZXIsIEdMaW50IHNpemUsIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBub3JtYWxpemVkLCBHTHNpemVp
IHN0cmlkZSwgY29uc3Qgdm9pZCAqcG9pbnRlcik7CisgICAgY29uc3Qgdm9pZCAqZ2V0VmVydGV4
QXR0cmliUG9pbnRlcih1bnNpZ25lZCBpbnQgYXR0cmliTnVtKSBjb25zdDsKKworICAgIHZvaWQg
c2V0VW5wYWNrQWxpZ25tZW50KEdMaW50IGFsaWdubWVudCk7CisgICAgR0xpbnQgZ2V0VW5wYWNr
QWxpZ25tZW50KCkgY29uc3Q7CisKKyAgICB2b2lkIHNldFBhY2tBbGlnbm1lbnQoR0xpbnQgYWxp
Z25tZW50KTsKKyAgICBHTGludCBnZXRQYWNrQWxpZ25tZW50KCkgY29uc3Q7CisKKyAgICB2b2lk
IHNldFBhY2tSZXZlcnNlUm93T3JkZXIoYm9vbCByZXZlcnNlUm93T3JkZXIpOworICAgIGJvb2wg
Z2V0UGFja1JldmVyc2VSb3dPcmRlcigpIGNvbnN0OworCisgICAgLy8gVGhlc2UgY3JlYXRlICBh
bmQgZGVzdHJveSBtZXRob2RzIGFyZSBtZXJlbHkgcGFzcy10aHJvdWdocyB0byAKKyAgICAvLyBS
ZXNvdXJjZU1hbmFnZXIsIHdoaWNoIG93bnMgdGhlc2Ugb2JqZWN0IHR5cGVzCisgICAgR0x1aW50
IGNyZWF0ZUJ1ZmZlcigpOworICAgIEdMdWludCBjcmVhdGVTaGFkZXIoR0xlbnVtIHR5cGUpOwor
ICAgIEdMdWludCBjcmVhdGVQcm9ncmFtKCk7CisgICAgR0x1aW50IGNyZWF0ZVRleHR1cmUoKTsK
KyAgICBHTHVpbnQgY3JlYXRlUmVuZGVyYnVmZmVyKCk7CisKKyAgICB2b2lkIGRlbGV0ZUJ1ZmZl
cihHTHVpbnQgYnVmZmVyKTsKKyAgICB2b2lkIGRlbGV0ZVNoYWRlcihHTHVpbnQgc2hhZGVyKTsK
KyAgICB2b2lkIGRlbGV0ZVByb2dyYW0oR0x1aW50IHByb2dyYW0pOworICAgIHZvaWQgZGVsZXRl
VGV4dHVyZShHTHVpbnQgdGV4dHVyZSk7CisgICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoR0x1
aW50IHJlbmRlcmJ1ZmZlcik7CisKKyAgICAvLyBGcmFtZWJ1ZmZlcnMgYXJlIG93bmVkIGJ5IHRo
ZSBDb250ZXh0LCBzbyB0aGVzZSBtZXRob2RzIGRvIG5vdCBwYXNzIHRocm91Z2gKKyAgICBHTHVp
bnQgY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICB2b2lkIGRlbGV0ZUZyYW1lYnVmZmVyKEdMdWlu
dCBmcmFtZWJ1ZmZlcik7CisKKyAgICAvLyBGZW5jZXMgYXJlIG93bmVkIGJ5IHRoZSBDb250ZXh0
LgorICAgIEdMdWludCBjcmVhdGVGZW5jZSgpOworICAgIHZvaWQgZGVsZXRlRmVuY2UoR0x1aW50
IGZlbmNlKTsKKyAgICAKKyAgICAvLyBRdWVyaWVzIGFyZSBvd25lZCBieSB0aGUgQ29udGV4dDsK
KyAgICBHTHVpbnQgY3JlYXRlUXVlcnkoKTsKKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KEdMdWludCBx
dWVyeSk7CisKKyAgICB2b2lkIGJpbmRBcnJheUJ1ZmZlcihHTHVpbnQgYnVmZmVyKTsKKyAgICB2
b2lkIGJpbmRFbGVtZW50QXJyYXlCdWZmZXIoR0x1aW50IGJ1ZmZlcik7CisgICAgdm9pZCBiaW5k
VGV4dHVyZTJEKEdMdWludCB0ZXh0dXJlKTsKKyAgICB2b2lkIGJpbmRUZXh0dXJlQ3ViZU1hcChH
THVpbnQgdGV4dHVyZSk7CisgICAgdm9pZCBiaW5kUmVhZEZyYW1lYnVmZmVyKEdMdWludCBmcmFt
ZWJ1ZmZlcik7CisgICAgdm9pZCBiaW5kRHJhd0ZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZl
cik7CisgICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpOworICAg
IHZvaWQgdXNlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSk7CisgICAgdm9pZCBsaW5rUHJvZ3JhbShH
THVpbnQgcHJvZ3JhbSk7CisgICAgdm9pZCBzZXRQcm9ncmFtQmluYXJ5KEdMdWludCBwcm9ncmFt
LCBjb25zdCB2b2lkICpiaW5hcnksIEdMaW50IGxlbmd0aCk7CisKKyAgICB2b2lkIGJlZ2luUXVl
cnkoR0xlbnVtIHRhcmdldCwgR0x1aW50IHF1ZXJ5KTsKKyAgICB2b2lkIGVuZFF1ZXJ5KEdMZW51
bSB0YXJnZXQpOworCisgICAgdm9pZCBzZXRGcmFtZWJ1ZmZlclplcm8oRnJhbWVidWZmZXIgKmZy
YW1lYnVmZmVyKTsKKworICAgIHZvaWQgc2V0UmVuZGVyYnVmZmVyU3RvcmFnZShHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHNhbXBs
ZXMpOworCisgICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWIoR0x1aW50IGluZGV4LCBjb25zdCBHTGZs
b2F0ICp2YWx1ZXMpOworICAgIHZvaWQgc2V0VmVydGV4QXR0cmliRGl2aXNvcihHTHVpbnQgaW5k
ZXgsIEdMdWludCBkaXZpc29yKTsKKworICAgIEJ1ZmZlciAqZ2V0QnVmZmVyKEdMdWludCBoYW5k
bGUpOworICAgIEZlbmNlICpnZXRGZW5jZShHTHVpbnQgaGFuZGxlKTsKKyAgICBTaGFkZXIgKmdl
dFNoYWRlcihHTHVpbnQgaGFuZGxlKTsKKyAgICBQcm9ncmFtICpnZXRQcm9ncmFtKEdMdWludCBo
YW5kbGUpOworICAgIFRleHR1cmUgKmdldFRleHR1cmUoR0x1aW50IGhhbmRsZSk7CisgICAgRnJh
bWVidWZmZXIgKmdldEZyYW1lYnVmZmVyKEdMdWludCBoYW5kbGUpOworICAgIFJlbmRlcmJ1ZmZl
ciAqZ2V0UmVuZGVyYnVmZmVyKEdMdWludCBoYW5kbGUpOworICAgIFF1ZXJ5ICpnZXRRdWVyeShH
THVpbnQgaGFuZGxlLCBib29sIGNyZWF0ZSwgR0xlbnVtIHR5cGUpOworCisgICAgQnVmZmVyICpn
ZXRBcnJheUJ1ZmZlcigpOworICAgIEJ1ZmZlciAqZ2V0RWxlbWVudEFycmF5QnVmZmVyKCk7Cisg
ICAgUHJvZ3JhbUJpbmFyeSAqZ2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKyAgICBUZXh0dXJl
MkQgKmdldFRleHR1cmUyRCgpOworICAgIFRleHR1cmVDdWJlTWFwICpnZXRUZXh0dXJlQ3ViZU1h
cCgpOworICAgIFRleHR1cmUgKmdldFNhbXBsZXJUZXh0dXJlKHVuc2lnbmVkIGludCBzYW1wbGVy
LCBUZXh0dXJlVHlwZSB0eXBlKTsKKyAgICBGcmFtZWJ1ZmZlciAqZ2V0UmVhZEZyYW1lYnVmZmVy
KCk7CisgICAgRnJhbWVidWZmZXIgKmdldERyYXdGcmFtZWJ1ZmZlcigpOworCisgICAgYm9vbCBn
ZXRGbG9hdHYoR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOworICAgIGJvb2wgZ2V0SW50
ZWdlcnYoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKyAgICBib29sIGdldEJvb2xlYW52
KEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMpOworCisgICAgYm9vbCBnZXRRdWVyeVBh
cmFtZXRlckluZm8oR0xlbnVtIHBuYW1lLCBHTGVudW0gKnR5cGUsIHVuc2lnbmVkIGludCAqbnVt
UGFyYW1zKTsKKworICAgIHZvaWQgcmVhZFBpeGVscyhHTGludCB4LCBHTGludCB5LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6
ZWkgKmJ1ZlNpemUsIHZvaWQqIHBpeGVscyk7CisgICAgdm9pZCBjbGVhcihHTGJpdGZpZWxkIG1h
c2spOworICAgIHZvaWQgZHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6
ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKTsKKyAgICB2b2lkIGRyYXdFbGVtZW50cyhHTGVu
dW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNl
cywgR0xzaXplaSBpbnN0YW5jZXMpOworICAgIHZvaWQgc3luYyhib29sIGJsb2NrKTsgICAvLyBm
bHVzaC9maW5pc2gKKworICAgIHZvaWQgcmVjb3JkSW52YWxpZEVudW0oKTsKKyAgICB2b2lkIHJl
Y29yZEludmFsaWRWYWx1ZSgpOworICAgIHZvaWQgcmVjb3JkSW52YWxpZE9wZXJhdGlvbigpOwor
ICAgIHZvaWQgcmVjb3JkT3V0T2ZNZW1vcnkoKTsKKyAgICB2b2lkIHJlY29yZEludmFsaWRGcmFt
ZWJ1ZmZlck9wZXJhdGlvbigpOworCisgICAgR0xlbnVtIGdldEVycm9yKCk7CisgICAgR0xlbnVt
IGdldFJlc2V0U3RhdHVzKCk7CisgICAgdmlydHVhbCBib29sIGlzUmVzZXROb3RpZmljYXRpb25F
bmFibGVkKCk7CisKKyAgICBpbnQgZ2V0TWFqb3JTaGFkZXJNb2RlbCgpIGNvbnN0OworICAgIGZs
b2F0IGdldE1heGltdW1Qb2ludFNpemUoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBpbnQgZ2V0TWF4
aW11bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKSBjb25zdDsKKyAgICBpbnQgZ2V0TWF4aW11
bVJlbmRlcmJ1ZmZlckRpbWVuc2lvbigpIGNvbnN0OworICAgIGludCBnZXRNYXhpbXVtVGV4dHVy
ZURpbWVuc2lvbigpIGNvbnN0OworICAgIGludCBnZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNp
b24oKSBjb25zdDsKKyAgICBpbnQgZ2V0TWF4aW11bVRleHR1cmVMZXZlbCgpIGNvbnN0OworICAg
IHVuc2lnbmVkIGludCBnZXRNYXhpbXVtUmVuZGVyVGFyZ2V0cygpIGNvbnN0OworICAgIEdMc2l6
ZWkgZ2V0TWF4U3VwcG9ydGVkU2FtcGxlcygpIGNvbnN0OworICAgIGNvbnN0IGNoYXIgKmdldEV4
dGVuc2lvblN0cmluZygpIGNvbnN0OworICAgIGNvbnN0IGNoYXIgKmdldFJlbmRlcmVyU3RyaW5n
KCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0V2ZW50UXVlcmllcygpIGNvbnN0OworICAgIGJv
b2wgc3VwcG9ydHNPY2NsdXNpb25RdWVyaWVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0JH
UkFUZXh0dXJlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNEWFQxVGV4dHVyZXMoKSBjb25z
dDsKKyAgICBib29sIHN1cHBvcnRzRFhUM1RleHR1cmVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBw
b3J0c0RYVDVUZXh0dXJlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNGbG9hdDMyVGV4dHVy
ZXMoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzRmxvYXQzMkxpbmVhckZpbHRlcigpIGNvbnN0
OworICAgIGJvb2wgc3VwcG9ydHNGbG9hdDMyUmVuZGVyYWJsZVRleHR1cmVzKCkgY29uc3Q7Cisg
ICAgYm9vbCBzdXBwb3J0c0Zsb2F0MTZUZXh0dXJlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9y
dHNGbG9hdDE2TGluZWFyRmlsdGVyKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0Zsb2F0MTZS
ZW5kZXJhYmxlVGV4dHVyZXMoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzTHVtaW5hbmNlVGV4
dHVyZXMoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzTHVtaW5hbmNlQWxwaGFUZXh0dXJlcygp
IGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNEZXB0aFRleHR1cmVzKCkgY29uc3Q7CisgICAgYm9v
bCBzdXBwb3J0czMyYml0SW5kaWNlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNOb25Qb3dl
cjJUZXh0dXJlKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0luc3RhbmNpbmcoKSBjb25zdDsK
KyAgICBib29sIHN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHkoKSBjb25zdDsKKworICAg
IGJvb2wgZ2V0Q3VycmVudFJlYWRGb3JtYXRUeXBlKEdMZW51bSAqZm9ybWF0LCBHTGVudW0gKnR5
cGUpOworCisgICAgZmxvYXQgZ2V0VGV4dHVyZU1heEFuaXNvdHJvcHkoKSBjb25zdDsKKworICAg
IHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdMaW50IHNyY1gwLCBHTGludCBzcmNZMCwgR0xpbnQgc3Jj
WDEsIEdMaW50IHNyY1kxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkc3RYMCwg
R0xpbnQgZHN0WTAsIEdMaW50IGRzdFgxLCBHTGludCBkc3RZMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJpdGZpZWxkIG1hc2spOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOKENvbnRleHQpOworCisgICAgYm9vbCBhcHBseVJlbmRlclRhcmdldChHTGVu
dW0gZHJhd01vZGUsIGJvb2wgaWdub3JlVmlld3BvcnQpOworICAgIHZvaWQgYXBwbHlTdGF0ZShH
TGVudW0gZHJhd01vZGUpOworICAgIHZvaWQgYXBwbHlTaGFkZXJzKCk7CisgICAgdm9pZCBhcHBs
eVRleHR1cmVzKCk7CisgICAgdm9pZCBhcHBseVRleHR1cmVzKFNhbXBsZXJUeXBlIHR5cGUpOwor
CisgICAgdm9pZCBkZXRhY2hCdWZmZXIoR0x1aW50IGJ1ZmZlcik7CisgICAgdm9pZCBkZXRhY2hU
ZXh0dXJlKEdMdWludCB0ZXh0dXJlKTsKKyAgICB2b2lkIGRldGFjaEZyYW1lYnVmZmVyKEdMdWlu
dCBmcmFtZWJ1ZmZlcik7CisgICAgdm9pZCBkZXRhY2hSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRl
cmJ1ZmZlcik7CisKKyAgICBUZXh0dXJlICpnZXRJbmNvbXBsZXRlVGV4dHVyZShUZXh0dXJlVHlw
ZSB0eXBlKTsKKworICAgIGJvb2wgc2tpcERyYXcoR0xlbnVtIGRyYXdNb2RlKTsKKworICAgIHZv
aWQgaW5pdEV4dGVuc2lvblN0cmluZygpOworICAgIHZvaWQgaW5pdFJlbmRlcmVyU3RyaW5nKCk7
CisKKyAgICByeDo6UmVuZGVyZXIgKmNvbnN0IG1SZW5kZXJlcjsKKworICAgIFN0YXRlIG1TdGF0
ZTsKKworICAgIEJpbmRpbmdQb2ludGVyPFRleHR1cmUyRD4gbVRleHR1cmUyRFplcm87CisgICAg
QmluZGluZ1BvaW50ZXI8VGV4dHVyZUN1YmVNYXA+IG1UZXh0dXJlQ3ViZU1hcFplcm87CisKKyNp
Zm5kZWYgSEFTSF9NQVAKKyMgaWZkZWYgX01TQ19WRVIKKyMgIGRlZmluZSBIQVNIX01BUCBzdGRl
eHQ6Omhhc2hfbWFwCisjIGVsc2UKKyMgIGRlZmluZSBIQVNIX01BUCBzdGQ6OnVub3JkZXJlZF9t
YXAKKyMgZW5kaWYKKyNlbmRpZgorCisgICAgdHlwZWRlZiBIQVNIX01BUDxHTHVpbnQsIEZyYW1l
YnVmZmVyKj4gRnJhbWVidWZmZXJNYXA7CisgICAgRnJhbWVidWZmZXJNYXAgbUZyYW1lYnVmZmVy
TWFwOworICAgIEhhbmRsZUFsbG9jYXRvciBtRnJhbWVidWZmZXJIYW5kbGVBbGxvY2F0b3I7CisK
KyAgICB0eXBlZGVmIEhBU0hfTUFQPEdMdWludCwgRmVuY2UqPiBGZW5jZU1hcDsKKyAgICBGZW5j
ZU1hcCBtRmVuY2VNYXA7CisgICAgSGFuZGxlQWxsb2NhdG9yIG1GZW5jZUhhbmRsZUFsbG9jYXRv
cjsKKworICAgIHR5cGVkZWYgSEFTSF9NQVA8R0x1aW50LCBRdWVyeSo+IFF1ZXJ5TWFwOworICAg
IFF1ZXJ5TWFwIG1RdWVyeU1hcDsKKyAgICBIYW5kbGVBbGxvY2F0b3IgbVF1ZXJ5SGFuZGxlQWxs
b2NhdG9yOworCisgICAgY29uc3QgY2hhciAqbUV4dGVuc2lvblN0cmluZzsKKyAgICBjb25zdCBj
aGFyICptUmVuZGVyZXJTdHJpbmc7CisgICAgCisgICAgQmluZGluZ1BvaW50ZXI8VGV4dHVyZT4g
bUluY29tcGxldGVUZXh0dXJlc1tURVhUVVJFX1RZUEVfQ09VTlRdOworCisgICAgLy8gUmVjb3Jk
ZWQgZXJyb3JzCisgICAgYm9vbCBtSW52YWxpZEVudW07CisgICAgYm9vbCBtSW52YWxpZFZhbHVl
OworICAgIGJvb2wgbUludmFsaWRPcGVyYXRpb247CisgICAgYm9vbCBtT3V0T2ZNZW1vcnk7Cisg
ICAgYm9vbCBtSW52YWxpZEZyYW1lYnVmZmVyT3BlcmF0aW9uOworCisgICAgLy8gQ3VycmVudC9s
b3N0IGNvbnRleHQgZmxhZ3MKKyAgICBib29sIG1IYXNCZWVuQ3VycmVudDsKKyAgICBib29sIG1D
b250ZXh0TG9zdDsKKyAgICBHTGVudW0gbVJlc2V0U3RhdHVzOworICAgIEdMZW51bSBtUmVzZXRT
dHJhdGVneTsKKyAgICBib29sIG1Sb2J1c3RBY2Nlc3M7CisKKyAgICBCaW5kaW5nUG9pbnRlcjxQ
cm9ncmFtQmluYXJ5PiBtQ3VycmVudFByb2dyYW1CaW5hcnk7CisgICAgRnJhbWVidWZmZXIgKm1C
b3VuZERyYXdGcmFtZWJ1ZmZlcjsKKworICAgIGludCBtTWFqb3JTaGFkZXJNb2RlbDsKKyAgICBm
bG9hdCBtTWF4aW11bVBvaW50U2l6ZTsKKyAgICBib29sIG1TdXBwb3J0c1ZlcnRleFRleHR1cmU7
CisgICAgYm9vbCBtU3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlOworICAgIGJvb2wgbVN1cHBvcnRz
SW5zdGFuY2luZzsKKyAgICBpbnQgIG1NYXhWaWV3cG9ydERpbWVuc2lvbjsKKyAgICBpbnQgIG1N
YXhSZW5kZXJidWZmZXJEaW1lbnNpb247CisgICAgaW50ICBtTWF4VGV4dHVyZURpbWVuc2lvbjsK
KyAgICBpbnQgIG1NYXhDdWJlVGV4dHVyZURpbWVuc2lvbjsKKyAgICBpbnQgIG1NYXhUZXh0dXJl
TGV2ZWw7CisgICAgZmxvYXQgbU1heFRleHR1cmVBbmlzb3Ryb3B5OworICAgIGJvb2wgbVN1cHBv
cnRzRXZlbnRRdWVyaWVzOworICAgIGJvb2wgbVN1cHBvcnRzT2NjbHVzaW9uUXVlcmllczsKKyAg
ICBib29sIG1TdXBwb3J0c0JHUkFUZXh0dXJlczsKKyAgICBib29sIG1TdXBwb3J0c0RYVDFUZXh0
dXJlczsKKyAgICBib29sIG1TdXBwb3J0c0RYVDNUZXh0dXJlczsKKyAgICBib29sIG1TdXBwb3J0
c0RYVDVUZXh0dXJlczsKKyAgICBib29sIG1TdXBwb3J0c0Zsb2F0MzJUZXh0dXJlczsKKyAgICBi
b29sIG1TdXBwb3J0c0Zsb2F0MzJMaW5lYXJGaWx0ZXI7CisgICAgYm9vbCBtU3VwcG9ydHNGbG9h
dDMyUmVuZGVyYWJsZVRleHR1cmVzOworICAgIGJvb2wgbVN1cHBvcnRzRmxvYXQxNlRleHR1cmVz
OworICAgIGJvb2wgbVN1cHBvcnRzRmxvYXQxNkxpbmVhckZpbHRlcjsKKyAgICBib29sIG1TdXBw
b3J0c0Zsb2F0MTZSZW5kZXJhYmxlVGV4dHVyZXM7CisgICAgYm9vbCBtU3VwcG9ydHNMdW1pbmFu
Y2VUZXh0dXJlczsKKyAgICBib29sIG1TdXBwb3J0c0x1bWluYW5jZUFscGhhVGV4dHVyZXM7Cisg
ICAgYm9vbCBtU3VwcG9ydHNEZXB0aFRleHR1cmVzOworICAgIGJvb2wgbVN1cHBvcnRzMzJiaXRJ
bmRpY2VzOworICAgIGJvb2wgbVN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHk7CisgICAg
aW50IG1OdW1Db21wcmVzc2VkVGV4dHVyZUZvcm1hdHM7CisKKyAgICBSZXNvdXJjZU1hbmFnZXIg
Km1SZXNvdXJjZU1hbmFnZXI7Cit9OworfQorCisjZW5kaWYgICAvLyBJTkNMVURFX0NPTlRFWFRf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRmVuY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRmVu
Y2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9GZW5jZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKyNpbmNsdWRlICJw
cmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRmVuY2UuY3BwOiBJbXBsZW1l
bnRzIHRoZSBnbDo6RmVuY2UgY2xhc3MsIHdoaWNoIHN1cHBvcnRzIHRoZSBHTF9OVl9mZW5jZSBl
eHRlbnNpb24uCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvRmVuY2UuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvRmVuY2VJbXBsLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L1JlbmRlcmVyLmgiCisKK25hbWVzcGFjZSBnbAoreworCitGZW5jZTo6RmVuY2Uocng6OlJlbmRl
cmVyICpyZW5kZXJlcikKK3sKKyAgICBtRmVuY2UgPSByZW5kZXJlci0+Y3JlYXRlRmVuY2UoKTsK
K30KKworRmVuY2U6On5GZW5jZSgpCit7CisgICAgZGVsZXRlIG1GZW5jZTsKK30KKworR0xib29s
ZWFuIEZlbmNlOjppc0ZlbmNlKCkKK3sKKyAgICByZXR1cm4gbUZlbmNlLT5pc0ZlbmNlKCk7Cit9
CisKK3ZvaWQgRmVuY2U6OnNldEZlbmNlKEdMZW51bSBjb25kaXRpb24pCit7CisgICAgbUZlbmNl
LT5zZXRGZW5jZShjb25kaXRpb24pOworfQorCitHTGJvb2xlYW4gRmVuY2U6OnRlc3RGZW5jZSgp
Cit7CisgICAgcmV0dXJuIG1GZW5jZS0+dGVzdEZlbmNlKCk7Cit9CisKK3ZvaWQgRmVuY2U6OmZp
bmlzaEZlbmNlKCkKK3sKKyAgICBtRmVuY2UtPmZpbmlzaEZlbmNlKCk7Cit9CisKK3ZvaWQgRmVu
Y2U6OmdldEZlbmNlaXYoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIG1GZW5j
ZS0+Z2V0RmVuY2VpdihwbmFtZSwgcGFyYW1zKTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRmVuY2UuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRmVuY2UuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRmVuY2UuaDogRGVmaW5l
cyB0aGUgZ2w6OkZlbmNlIGNsYXNzLCB3aGljaCBzdXBwb3J0cyB0aGUgR0xfTlZfZmVuY2UgZXh0
ZW5zaW9uLgorCisjaWZuZGVmIExJQkdMRVNWMl9GRU5DRV9IXworI2RlZmluZSBMSUJHTEVTVjJf
RkVOQ0VfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSBy
eAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBGZW5jZUltcGw7Cit9CisKK25hbWVzcGFjZSBn
bAoreworCitjbGFzcyBGZW5jZQoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgRmVuY2Uocng6
OlJlbmRlcmVyICpyZW5kZXJlcik7CisgICAgdmlydHVhbCB+RmVuY2UoKTsKKworICAgIEdMYm9v
bGVhbiBpc0ZlbmNlKCk7CisgICAgdm9pZCBzZXRGZW5jZShHTGVudW0gY29uZGl0aW9uKTsKKyAg
ICBHTGJvb2xlYW4gdGVzdEZlbmNlKCk7CisgICAgdm9pZCBmaW5pc2hGZW5jZSgpOworICAgIHZv
aWQgZ2V0RmVuY2VpdihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworCisgIHByaXZhdGU6
CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEZlbmNlKTsKKworICAgIHJ4OjpGZW5jZUlt
cGwgKm1GZW5jZTsKK307CisKK30KKworI2VuZGlmICAgLy8gTElCR0xFU1YyX0ZFTkNFX0hfCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0Zsb2F0MTZUb0Zsb2F0
MzIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvRmxvYXQxNlRvRmxvYXQzMi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL0Zsb2F0MTZUb0Zsb2F0MzIuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIyMDQgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHly
aWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKy8vIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC4KKworbmFtZXNwYWNl
IGdsCit7CisKK2NvbnN0IHN0YXRpYyB1bnNpZ25lZCBnX21hbnRpc3NhWzIwNDhdID0geworICAg
IDB4MDAwMDAwMDAsCisgICAgMHgzMzgwMDAwMCwKKyAgICAweDM0MDAwMDAwLAorICAgIDB4MzQ0
MDAwMDAsCisgICAgMHgzNDgwMDAwMCwKKyAgICAweDM0YTAwMDAwLAorICAgIDB4MzRjMDAwMDAs
CisgICAgMHgzNGUwMDAwMCwKKyAgICAweDM1MDAwMDAwLAorICAgIDB4MzUxMDAwMDAsCisgICAg
MHgzNTIwMDAwMCwKKyAgICAweDM1MzAwMDAwLAorICAgIDB4MzU0MDAwMDAsCisgICAgMHgzNTUw
MDAwMCwKKyAgICAweDM1NjAwMDAwLAorICAgIDB4MzU3MDAwMDAsCisgICAgMHgzNTgwMDAwMCwK
KyAgICAweDM1ODgwMDAwLAorICAgIDB4MzU5MDAwMDAsCisgICAgMHgzNTk4MDAwMCwKKyAgICAw
eDM1YTAwMDAwLAorICAgIDB4MzVhODAwMDAsCisgICAgMHgzNWIwMDAwMCwKKyAgICAweDM1Yjgw
MDAwLAorICAgIDB4MzVjMDAwMDAsCisgICAgMHgzNWM4MDAwMCwKKyAgICAweDM1ZDAwMDAwLAor
ICAgIDB4MzVkODAwMDAsCisgICAgMHgzNWUwMDAwMCwKKyAgICAweDM1ZTgwMDAwLAorICAgIDB4
MzVmMDAwMDAsCisgICAgMHgzNWY4MDAwMCwKKyAgICAweDM2MDAwMDAwLAorICAgIDB4MzYwNDAw
MDAsCisgICAgMHgzNjA4MDAwMCwKKyAgICAweDM2MGMwMDAwLAorICAgIDB4MzYxMDAwMDAsCisg
ICAgMHgzNjE0MDAwMCwKKyAgICAweDM2MTgwMDAwLAorICAgIDB4MzYxYzAwMDAsCisgICAgMHgz
NjIwMDAwMCwKKyAgICAweDM2MjQwMDAwLAorICAgIDB4MzYyODAwMDAsCisgICAgMHgzNjJjMDAw
MCwKKyAgICAweDM2MzAwMDAwLAorICAgIDB4MzYzNDAwMDAsCisgICAgMHgzNjM4MDAwMCwKKyAg
ICAweDM2M2MwMDAwLAorICAgIDB4MzY0MDAwMDAsCisgICAgMHgzNjQ0MDAwMCwKKyAgICAweDM2
NDgwMDAwLAorICAgIDB4MzY0YzAwMDAsCisgICAgMHgzNjUwMDAwMCwKKyAgICAweDM2NTQwMDAw
LAorICAgIDB4MzY1ODAwMDAsCisgICAgMHgzNjVjMDAwMCwKKyAgICAweDM2NjAwMDAwLAorICAg
IDB4MzY2NDAwMDAsCisgICAgMHgzNjY4MDAwMCwKKyAgICAweDM2NmMwMDAwLAorICAgIDB4MzY3
MDAwMDAsCisgICAgMHgzNjc0MDAwMCwKKyAgICAweDM2NzgwMDAwLAorICAgIDB4MzY3YzAwMDAs
CisgICAgMHgzNjgwMDAwMCwKKyAgICAweDM2ODIwMDAwLAorICAgIDB4MzY4NDAwMDAsCisgICAg
MHgzNjg2MDAwMCwKKyAgICAweDM2ODgwMDAwLAorICAgIDB4MzY4YTAwMDAsCisgICAgMHgzNjhj
MDAwMCwKKyAgICAweDM2OGUwMDAwLAorICAgIDB4MzY5MDAwMDAsCisgICAgMHgzNjkyMDAwMCwK
KyAgICAweDM2OTQwMDAwLAorICAgIDB4MzY5NjAwMDAsCisgICAgMHgzNjk4MDAwMCwKKyAgICAw
eDM2OWEwMDAwLAorICAgIDB4MzY5YzAwMDAsCisgICAgMHgzNjllMDAwMCwKKyAgICAweDM2YTAw
MDAwLAorICAgIDB4MzZhMjAwMDAsCisgICAgMHgzNmE0MDAwMCwKKyAgICAweDM2YTYwMDAwLAor
ICAgIDB4MzZhODAwMDAsCisgICAgMHgzNmFhMDAwMCwKKyAgICAweDM2YWMwMDAwLAorICAgIDB4
MzZhZTAwMDAsCisgICAgMHgzNmIwMDAwMCwKKyAgICAweDM2YjIwMDAwLAorICAgIDB4MzZiNDAw
MDAsCisgICAgMHgzNmI2MDAwMCwKKyAgICAweDM2YjgwMDAwLAorICAgIDB4MzZiYTAwMDAsCisg
ICAgMHgzNmJjMDAwMCwKKyAgICAweDM2YmUwMDAwLAorICAgIDB4MzZjMDAwMDAsCisgICAgMHgz
NmMyMDAwMCwKKyAgICAweDM2YzQwMDAwLAorICAgIDB4MzZjNjAwMDAsCisgICAgMHgzNmM4MDAw
MCwKKyAgICAweDM2Y2EwMDAwLAorICAgIDB4MzZjYzAwMDAsCisgICAgMHgzNmNlMDAwMCwKKyAg
ICAweDM2ZDAwMDAwLAorICAgIDB4MzZkMjAwMDAsCisgICAgMHgzNmQ0MDAwMCwKKyAgICAweDM2
ZDYwMDAwLAorICAgIDB4MzZkODAwMDAsCisgICAgMHgzNmRhMDAwMCwKKyAgICAweDM2ZGMwMDAw
LAorICAgIDB4MzZkZTAwMDAsCisgICAgMHgzNmUwMDAwMCwKKyAgICAweDM2ZTIwMDAwLAorICAg
IDB4MzZlNDAwMDAsCisgICAgMHgzNmU2MDAwMCwKKyAgICAweDM2ZTgwMDAwLAorICAgIDB4MzZl
YTAwMDAsCisgICAgMHgzNmVjMDAwMCwKKyAgICAweDM2ZWUwMDAwLAorICAgIDB4MzZmMDAwMDAs
CisgICAgMHgzNmYyMDAwMCwKKyAgICAweDM2ZjQwMDAwLAorICAgIDB4MzZmNjAwMDAsCisgICAg
MHgzNmY4MDAwMCwKKyAgICAweDM2ZmEwMDAwLAorICAgIDB4MzZmYzAwMDAsCisgICAgMHgzNmZl
MDAwMCwKKyAgICAweDM3MDAwMDAwLAorICAgIDB4MzcwMTAwMDAsCisgICAgMHgzNzAyMDAwMCwK
KyAgICAweDM3MDMwMDAwLAorICAgIDB4MzcwNDAwMDAsCisgICAgMHgzNzA1MDAwMCwKKyAgICAw
eDM3MDYwMDAwLAorICAgIDB4MzcwNzAwMDAsCisgICAgMHgzNzA4MDAwMCwKKyAgICAweDM3MDkw
MDAwLAorICAgIDB4MzcwYTAwMDAsCisgICAgMHgzNzBiMDAwMCwKKyAgICAweDM3MGMwMDAwLAor
ICAgIDB4MzcwZDAwMDAsCisgICAgMHgzNzBlMDAwMCwKKyAgICAweDM3MGYwMDAwLAorICAgIDB4
MzcxMDAwMDAsCisgICAgMHgzNzExMDAwMCwKKyAgICAweDM3MTIwMDAwLAorICAgIDB4MzcxMzAw
MDAsCisgICAgMHgzNzE0MDAwMCwKKyAgICAweDM3MTUwMDAwLAorICAgIDB4MzcxNjAwMDAsCisg
ICAgMHgzNzE3MDAwMCwKKyAgICAweDM3MTgwMDAwLAorICAgIDB4MzcxOTAwMDAsCisgICAgMHgz
NzFhMDAwMCwKKyAgICAweDM3MWIwMDAwLAorICAgIDB4MzcxYzAwMDAsCisgICAgMHgzNzFkMDAw
MCwKKyAgICAweDM3MWUwMDAwLAorICAgIDB4MzcxZjAwMDAsCisgICAgMHgzNzIwMDAwMCwKKyAg
ICAweDM3MjEwMDAwLAorICAgIDB4MzcyMjAwMDAsCisgICAgMHgzNzIzMDAwMCwKKyAgICAweDM3
MjQwMDAwLAorICAgIDB4MzcyNTAwMDAsCisgICAgMHgzNzI2MDAwMCwKKyAgICAweDM3MjcwMDAw
LAorICAgIDB4MzcyODAwMDAsCisgICAgMHgzNzI5MDAwMCwKKyAgICAweDM3MmEwMDAwLAorICAg
IDB4MzcyYjAwMDAsCisgICAgMHgzNzJjMDAwMCwKKyAgICAweDM3MmQwMDAwLAorICAgIDB4Mzcy
ZTAwMDAsCisgICAgMHgzNzJmMDAwMCwKKyAgICAweDM3MzAwMDAwLAorICAgIDB4MzczMTAwMDAs
CisgICAgMHgzNzMyMDAwMCwKKyAgICAweDM3MzMwMDAwLAorICAgIDB4MzczNDAwMDAsCisgICAg
MHgzNzM1MDAwMCwKKyAgICAweDM3MzYwMDAwLAorICAgIDB4MzczNzAwMDAsCisgICAgMHgzNzM4
MDAwMCwKKyAgICAweDM3MzkwMDAwLAorICAgIDB4MzczYTAwMDAsCisgICAgMHgzNzNiMDAwMCwK
KyAgICAweDM3M2MwMDAwLAorICAgIDB4MzczZDAwMDAsCisgICAgMHgzNzNlMDAwMCwKKyAgICAw
eDM3M2YwMDAwLAorICAgIDB4Mzc0MDAwMDAsCisgICAgMHgzNzQxMDAwMCwKKyAgICAweDM3NDIw
MDAwLAorICAgIDB4Mzc0MzAwMDAsCisgICAgMHgzNzQ0MDAwMCwKKyAgICAweDM3NDUwMDAwLAor
ICAgIDB4Mzc0NjAwMDAsCisgICAgMHgzNzQ3MDAwMCwKKyAgICAweDM3NDgwMDAwLAorICAgIDB4
Mzc0OTAwMDAsCisgICAgMHgzNzRhMDAwMCwKKyAgICAweDM3NGIwMDAwLAorICAgIDB4Mzc0YzAw
MDAsCisgICAgMHgzNzRkMDAwMCwKKyAgICAweDM3NGUwMDAwLAorICAgIDB4Mzc0ZjAwMDAsCisg
ICAgMHgzNzUwMDAwMCwKKyAgICAweDM3NTEwMDAwLAorICAgIDB4Mzc1MjAwMDAsCisgICAgMHgz
NzUzMDAwMCwKKyAgICAweDM3NTQwMDAwLAorICAgIDB4Mzc1NTAwMDAsCisgICAgMHgzNzU2MDAw
MCwKKyAgICAweDM3NTcwMDAwLAorICAgIDB4Mzc1ODAwMDAsCisgICAgMHgzNzU5MDAwMCwKKyAg
ICAweDM3NWEwMDAwLAorICAgIDB4Mzc1YjAwMDAsCisgICAgMHgzNzVjMDAwMCwKKyAgICAweDM3
NWQwMDAwLAorICAgIDB4Mzc1ZTAwMDAsCisgICAgMHgzNzVmMDAwMCwKKyAgICAweDM3NjAwMDAw
LAorICAgIDB4Mzc2MTAwMDAsCisgICAgMHgzNzYyMDAwMCwKKyAgICAweDM3NjMwMDAwLAorICAg
IDB4Mzc2NDAwMDAsCisgICAgMHgzNzY1MDAwMCwKKyAgICAweDM3NjYwMDAwLAorICAgIDB4Mzc2
NzAwMDAsCisgICAgMHgzNzY4MDAwMCwKKyAgICAweDM3NjkwMDAwLAorICAgIDB4Mzc2YTAwMDAs
CisgICAgMHgzNzZiMDAwMCwKKyAgICAweDM3NmMwMDAwLAorICAgIDB4Mzc2ZDAwMDAsCisgICAg
MHgzNzZlMDAwMCwKKyAgICAweDM3NmYwMDAwLAorICAgIDB4Mzc3MDAwMDAsCisgICAgMHgzNzcx
MDAwMCwKKyAgICAweDM3NzIwMDAwLAorICAgIDB4Mzc3MzAwMDAsCisgICAgMHgzNzc0MDAwMCwK
KyAgICAweDM3NzUwMDAwLAorICAgIDB4Mzc3NjAwMDAsCisgICAgMHgzNzc3MDAwMCwKKyAgICAw
eDM3NzgwMDAwLAorICAgIDB4Mzc3OTAwMDAsCisgICAgMHgzNzdhMDAwMCwKKyAgICAweDM3N2Iw
MDAwLAorICAgIDB4Mzc3YzAwMDAsCisgICAgMHgzNzdkMDAwMCwKKyAgICAweDM3N2UwMDAwLAor
ICAgIDB4Mzc3ZjAwMDAsCisgICAgMHgzNzgwMDAwMCwKKyAgICAweDM3ODA4MDAwLAorICAgIDB4
Mzc4MTAwMDAsCisgICAgMHgzNzgxODAwMCwKKyAgICAweDM3ODIwMDAwLAorICAgIDB4Mzc4Mjgw
MDAsCisgICAgMHgzNzgzMDAwMCwKKyAgICAweDM3ODM4MDAwLAorICAgIDB4Mzc4NDAwMDAsCisg
ICAgMHgzNzg0ODAwMCwKKyAgICAweDM3ODUwMDAwLAorICAgIDB4Mzc4NTgwMDAsCisgICAgMHgz
Nzg2MDAwMCwKKyAgICAweDM3ODY4MDAwLAorICAgIDB4Mzc4NzAwMDAsCisgICAgMHgzNzg3ODAw
MCwKKyAgICAweDM3ODgwMDAwLAorICAgIDB4Mzc4ODgwMDAsCisgICAgMHgzNzg5MDAwMCwKKyAg
ICAweDM3ODk4MDAwLAorICAgIDB4Mzc4YTAwMDAsCisgICAgMHgzNzhhODAwMCwKKyAgICAweDM3
OGIwMDAwLAorICAgIDB4Mzc4YjgwMDAsCisgICAgMHgzNzhjMDAwMCwKKyAgICAweDM3OGM4MDAw
LAorICAgIDB4Mzc4ZDAwMDAsCisgICAgMHgzNzhkODAwMCwKKyAgICAweDM3OGUwMDAwLAorICAg
IDB4Mzc4ZTgwMDAsCisgICAgMHgzNzhmMDAwMCwKKyAgICAweDM3OGY4MDAwLAorICAgIDB4Mzc5
MDAwMDAsCisgICAgMHgzNzkwODAwMCwKKyAgICAweDM3OTEwMDAwLAorICAgIDB4Mzc5MTgwMDAs
CisgICAgMHgzNzkyMDAwMCwKKyAgICAweDM3OTI4MDAwLAorICAgIDB4Mzc5MzAwMDAsCisgICAg
MHgzNzkzODAwMCwKKyAgICAweDM3OTQwMDAwLAorICAgIDB4Mzc5NDgwMDAsCisgICAgMHgzNzk1
MDAwMCwKKyAgICAweDM3OTU4MDAwLAorICAgIDB4Mzc5NjAwMDAsCisgICAgMHgzNzk2ODAwMCwK
KyAgICAweDM3OTcwMDAwLAorICAgIDB4Mzc5NzgwMDAsCisgICAgMHgzNzk4MDAwMCwKKyAgICAw
eDM3OTg4MDAwLAorICAgIDB4Mzc5OTAwMDAsCisgICAgMHgzNzk5ODAwMCwKKyAgICAweDM3OWEw
MDAwLAorICAgIDB4Mzc5YTgwMDAsCisgICAgMHgzNzliMDAwMCwKKyAgICAweDM3OWI4MDAwLAor
ICAgIDB4Mzc5YzAwMDAsCisgICAgMHgzNzljODAwMCwKKyAgICAweDM3OWQwMDAwLAorICAgIDB4
Mzc5ZDgwMDAsCisgICAgMHgzNzllMDAwMCwKKyAgICAweDM3OWU4MDAwLAorICAgIDB4Mzc5ZjAw
MDAsCisgICAgMHgzNzlmODAwMCwKKyAgICAweDM3YTAwMDAwLAorICAgIDB4MzdhMDgwMDAsCisg
ICAgMHgzN2ExMDAwMCwKKyAgICAweDM3YTE4MDAwLAorICAgIDB4MzdhMjAwMDAsCisgICAgMHgz
N2EyODAwMCwKKyAgICAweDM3YTMwMDAwLAorICAgIDB4MzdhMzgwMDAsCisgICAgMHgzN2E0MDAw
MCwKKyAgICAweDM3YTQ4MDAwLAorICAgIDB4MzdhNTAwMDAsCisgICAgMHgzN2E1ODAwMCwKKyAg
ICAweDM3YTYwMDAwLAorICAgIDB4MzdhNjgwMDAsCisgICAgMHgzN2E3MDAwMCwKKyAgICAweDM3
YTc4MDAwLAorICAgIDB4MzdhODAwMDAsCisgICAgMHgzN2E4ODAwMCwKKyAgICAweDM3YTkwMDAw
LAorICAgIDB4MzdhOTgwMDAsCisgICAgMHgzN2FhMDAwMCwKKyAgICAweDM3YWE4MDAwLAorICAg
IDB4MzdhYjAwMDAsCisgICAgMHgzN2FiODAwMCwKKyAgICAweDM3YWMwMDAwLAorICAgIDB4Mzdh
YzgwMDAsCisgICAgMHgzN2FkMDAwMCwKKyAgICAweDM3YWQ4MDAwLAorICAgIDB4MzdhZTAwMDAs
CisgICAgMHgzN2FlODAwMCwKKyAgICAweDM3YWYwMDAwLAorICAgIDB4MzdhZjgwMDAsCisgICAg
MHgzN2IwMDAwMCwKKyAgICAweDM3YjA4MDAwLAorICAgIDB4MzdiMTAwMDAsCisgICAgMHgzN2Ix
ODAwMCwKKyAgICAweDM3YjIwMDAwLAorICAgIDB4MzdiMjgwMDAsCisgICAgMHgzN2IzMDAwMCwK
KyAgICAweDM3YjM4MDAwLAorICAgIDB4MzdiNDAwMDAsCisgICAgMHgzN2I0ODAwMCwKKyAgICAw
eDM3YjUwMDAwLAorICAgIDB4MzdiNTgwMDAsCisgICAgMHgzN2I2MDAwMCwKKyAgICAweDM3YjY4
MDAwLAorICAgIDB4MzdiNzAwMDAsCisgICAgMHgzN2I3ODAwMCwKKyAgICAweDM3YjgwMDAwLAor
ICAgIDB4MzdiODgwMDAsCisgICAgMHgzN2I5MDAwMCwKKyAgICAweDM3Yjk4MDAwLAorICAgIDB4
MzdiYTAwMDAsCisgICAgMHgzN2JhODAwMCwKKyAgICAweDM3YmIwMDAwLAorICAgIDB4MzdiYjgw
MDAsCisgICAgMHgzN2JjMDAwMCwKKyAgICAweDM3YmM4MDAwLAorICAgIDB4MzdiZDAwMDAsCisg
ICAgMHgzN2JkODAwMCwKKyAgICAweDM3YmUwMDAwLAorICAgIDB4MzdiZTgwMDAsCisgICAgMHgz
N2JmMDAwMCwKKyAgICAweDM3YmY4MDAwLAorICAgIDB4MzdjMDAwMDAsCisgICAgMHgzN2MwODAw
MCwKKyAgICAweDM3YzEwMDAwLAorICAgIDB4MzdjMTgwMDAsCisgICAgMHgzN2MyMDAwMCwKKyAg
ICAweDM3YzI4MDAwLAorICAgIDB4MzdjMzAwMDAsCisgICAgMHgzN2MzODAwMCwKKyAgICAweDM3
YzQwMDAwLAorICAgIDB4MzdjNDgwMDAsCisgICAgMHgzN2M1MDAwMCwKKyAgICAweDM3YzU4MDAw
LAorICAgIDB4MzdjNjAwMDAsCisgICAgMHgzN2M2ODAwMCwKKyAgICAweDM3YzcwMDAwLAorICAg
IDB4MzdjNzgwMDAsCisgICAgMHgzN2M4MDAwMCwKKyAgICAweDM3Yzg4MDAwLAorICAgIDB4Mzdj
OTAwMDAsCisgICAgMHgzN2M5ODAwMCwKKyAgICAweDM3Y2EwMDAwLAorICAgIDB4MzdjYTgwMDAs
CisgICAgMHgzN2NiMDAwMCwKKyAgICAweDM3Y2I4MDAwLAorICAgIDB4MzdjYzAwMDAsCisgICAg
MHgzN2NjODAwMCwKKyAgICAweDM3Y2QwMDAwLAorICAgIDB4MzdjZDgwMDAsCisgICAgMHgzN2Nl
MDAwMCwKKyAgICAweDM3Y2U4MDAwLAorICAgIDB4MzdjZjAwMDAsCisgICAgMHgzN2NmODAwMCwK
KyAgICAweDM3ZDAwMDAwLAorICAgIDB4MzdkMDgwMDAsCisgICAgMHgzN2QxMDAwMCwKKyAgICAw
eDM3ZDE4MDAwLAorICAgIDB4MzdkMjAwMDAsCisgICAgMHgzN2QyODAwMCwKKyAgICAweDM3ZDMw
MDAwLAorICAgIDB4MzdkMzgwMDAsCisgICAgMHgzN2Q0MDAwMCwKKyAgICAweDM3ZDQ4MDAwLAor
ICAgIDB4MzdkNTAwMDAsCisgICAgMHgzN2Q1ODAwMCwKKyAgICAweDM3ZDYwMDAwLAorICAgIDB4
MzdkNjgwMDAsCisgICAgMHgzN2Q3MDAwMCwKKyAgICAweDM3ZDc4MDAwLAorICAgIDB4MzdkODAw
MDAsCisgICAgMHgzN2Q4ODAwMCwKKyAgICAweDM3ZDkwMDAwLAorICAgIDB4MzdkOTgwMDAsCisg
ICAgMHgzN2RhMDAwMCwKKyAgICAweDM3ZGE4MDAwLAorICAgIDB4MzdkYjAwMDAsCisgICAgMHgz
N2RiODAwMCwKKyAgICAweDM3ZGMwMDAwLAorICAgIDB4MzdkYzgwMDAsCisgICAgMHgzN2RkMDAw
MCwKKyAgICAweDM3ZGQ4MDAwLAorICAgIDB4MzdkZTAwMDAsCisgICAgMHgzN2RlODAwMCwKKyAg
ICAweDM3ZGYwMDAwLAorICAgIDB4MzdkZjgwMDAsCisgICAgMHgzN2UwMDAwMCwKKyAgICAweDM3
ZTA4MDAwLAorICAgIDB4MzdlMTAwMDAsCisgICAgMHgzN2UxODAwMCwKKyAgICAweDM3ZTIwMDAw
LAorICAgIDB4MzdlMjgwMDAsCisgICAgMHgzN2UzMDAwMCwKKyAgICAweDM3ZTM4MDAwLAorICAg
IDB4MzdlNDAwMDAsCisgICAgMHgzN2U0ODAwMCwKKyAgICAweDM3ZTUwMDAwLAorICAgIDB4Mzdl
NTgwMDAsCisgICAgMHgzN2U2MDAwMCwKKyAgICAweDM3ZTY4MDAwLAorICAgIDB4MzdlNzAwMDAs
CisgICAgMHgzN2U3ODAwMCwKKyAgICAweDM3ZTgwMDAwLAorICAgIDB4MzdlODgwMDAsCisgICAg
MHgzN2U5MDAwMCwKKyAgICAweDM3ZTk4MDAwLAorICAgIDB4MzdlYTAwMDAsCisgICAgMHgzN2Vh
ODAwMCwKKyAgICAweDM3ZWIwMDAwLAorICAgIDB4MzdlYjgwMDAsCisgICAgMHgzN2VjMDAwMCwK
KyAgICAweDM3ZWM4MDAwLAorICAgIDB4MzdlZDAwMDAsCisgICAgMHgzN2VkODAwMCwKKyAgICAw
eDM3ZWUwMDAwLAorICAgIDB4MzdlZTgwMDAsCisgICAgMHgzN2VmMDAwMCwKKyAgICAweDM3ZWY4
MDAwLAorICAgIDB4MzdmMDAwMDAsCisgICAgMHgzN2YwODAwMCwKKyAgICAweDM3ZjEwMDAwLAor
ICAgIDB4MzdmMTgwMDAsCisgICAgMHgzN2YyMDAwMCwKKyAgICAweDM3ZjI4MDAwLAorICAgIDB4
MzdmMzAwMDAsCisgICAgMHgzN2YzODAwMCwKKyAgICAweDM3ZjQwMDAwLAorICAgIDB4MzdmNDgw
MDAsCisgICAgMHgzN2Y1MDAwMCwKKyAgICAweDM3ZjU4MDAwLAorICAgIDB4MzdmNjAwMDAsCisg
ICAgMHgzN2Y2ODAwMCwKKyAgICAweDM3ZjcwMDAwLAorICAgIDB4MzdmNzgwMDAsCisgICAgMHgz
N2Y4MDAwMCwKKyAgICAweDM3Zjg4MDAwLAorICAgIDB4MzdmOTAwMDAsCisgICAgMHgzN2Y5ODAw
MCwKKyAgICAweDM3ZmEwMDAwLAorICAgIDB4MzdmYTgwMDAsCisgICAgMHgzN2ZiMDAwMCwKKyAg
ICAweDM3ZmI4MDAwLAorICAgIDB4MzdmYzAwMDAsCisgICAgMHgzN2ZjODAwMCwKKyAgICAweDM3
ZmQwMDAwLAorICAgIDB4MzdmZDgwMDAsCisgICAgMHgzN2ZlMDAwMCwKKyAgICAweDM3ZmU4MDAw
LAorICAgIDB4MzdmZjAwMDAsCisgICAgMHgzN2ZmODAwMCwKKyAgICAweDM4MDAwMDAwLAorICAg
IDB4MzgwMDQwMDAsCisgICAgMHgzODAwODAwMCwKKyAgICAweDM4MDBjMDAwLAorICAgIDB4Mzgw
MTAwMDAsCisgICAgMHgzODAxNDAwMCwKKyAgICAweDM4MDE4MDAwLAorICAgIDB4MzgwMWMwMDAs
CisgICAgMHgzODAyMDAwMCwKKyAgICAweDM4MDI0MDAwLAorICAgIDB4MzgwMjgwMDAsCisgICAg
MHgzODAyYzAwMCwKKyAgICAweDM4MDMwMDAwLAorICAgIDB4MzgwMzQwMDAsCisgICAgMHgzODAz
ODAwMCwKKyAgICAweDM4MDNjMDAwLAorICAgIDB4MzgwNDAwMDAsCisgICAgMHgzODA0NDAwMCwK
KyAgICAweDM4MDQ4MDAwLAorICAgIDB4MzgwNGMwMDAsCisgICAgMHgzODA1MDAwMCwKKyAgICAw
eDM4MDU0MDAwLAorICAgIDB4MzgwNTgwMDAsCisgICAgMHgzODA1YzAwMCwKKyAgICAweDM4MDYw
MDAwLAorICAgIDB4MzgwNjQwMDAsCisgICAgMHgzODA2ODAwMCwKKyAgICAweDM4MDZjMDAwLAor
ICAgIDB4MzgwNzAwMDAsCisgICAgMHgzODA3NDAwMCwKKyAgICAweDM4MDc4MDAwLAorICAgIDB4
MzgwN2MwMDAsCisgICAgMHgzODA4MDAwMCwKKyAgICAweDM4MDg0MDAwLAorICAgIDB4MzgwODgw
MDAsCisgICAgMHgzODA4YzAwMCwKKyAgICAweDM4MDkwMDAwLAorICAgIDB4MzgwOTQwMDAsCisg
ICAgMHgzODA5ODAwMCwKKyAgICAweDM4MDljMDAwLAorICAgIDB4MzgwYTAwMDAsCisgICAgMHgz
ODBhNDAwMCwKKyAgICAweDM4MGE4MDAwLAorICAgIDB4MzgwYWMwMDAsCisgICAgMHgzODBiMDAw
MCwKKyAgICAweDM4MGI0MDAwLAorICAgIDB4MzgwYjgwMDAsCisgICAgMHgzODBiYzAwMCwKKyAg
ICAweDM4MGMwMDAwLAorICAgIDB4MzgwYzQwMDAsCisgICAgMHgzODBjODAwMCwKKyAgICAweDM4
MGNjMDAwLAorICAgIDB4MzgwZDAwMDAsCisgICAgMHgzODBkNDAwMCwKKyAgICAweDM4MGQ4MDAw
LAorICAgIDB4MzgwZGMwMDAsCisgICAgMHgzODBlMDAwMCwKKyAgICAweDM4MGU0MDAwLAorICAg
IDB4MzgwZTgwMDAsCisgICAgMHgzODBlYzAwMCwKKyAgICAweDM4MGYwMDAwLAorICAgIDB4Mzgw
ZjQwMDAsCisgICAgMHgzODBmODAwMCwKKyAgICAweDM4MGZjMDAwLAorICAgIDB4MzgxMDAwMDAs
CisgICAgMHgzODEwNDAwMCwKKyAgICAweDM4MTA4MDAwLAorICAgIDB4MzgxMGMwMDAsCisgICAg
MHgzODExMDAwMCwKKyAgICAweDM4MTE0MDAwLAorICAgIDB4MzgxMTgwMDAsCisgICAgMHgzODEx
YzAwMCwKKyAgICAweDM4MTIwMDAwLAorICAgIDB4MzgxMjQwMDAsCisgICAgMHgzODEyODAwMCwK
KyAgICAweDM4MTJjMDAwLAorICAgIDB4MzgxMzAwMDAsCisgICAgMHgzODEzNDAwMCwKKyAgICAw
eDM4MTM4MDAwLAorICAgIDB4MzgxM2MwMDAsCisgICAgMHgzODE0MDAwMCwKKyAgICAweDM4MTQ0
MDAwLAorICAgIDB4MzgxNDgwMDAsCisgICAgMHgzODE0YzAwMCwKKyAgICAweDM4MTUwMDAwLAor
ICAgIDB4MzgxNTQwMDAsCisgICAgMHgzODE1ODAwMCwKKyAgICAweDM4MTVjMDAwLAorICAgIDB4
MzgxNjAwMDAsCisgICAgMHgzODE2NDAwMCwKKyAgICAweDM4MTY4MDAwLAorICAgIDB4MzgxNmMw
MDAsCisgICAgMHgzODE3MDAwMCwKKyAgICAweDM4MTc0MDAwLAorICAgIDB4MzgxNzgwMDAsCisg
ICAgMHgzODE3YzAwMCwKKyAgICAweDM4MTgwMDAwLAorICAgIDB4MzgxODQwMDAsCisgICAgMHgz
ODE4ODAwMCwKKyAgICAweDM4MThjMDAwLAorICAgIDB4MzgxOTAwMDAsCisgICAgMHgzODE5NDAw
MCwKKyAgICAweDM4MTk4MDAwLAorICAgIDB4MzgxOWMwMDAsCisgICAgMHgzODFhMDAwMCwKKyAg
ICAweDM4MWE0MDAwLAorICAgIDB4MzgxYTgwMDAsCisgICAgMHgzODFhYzAwMCwKKyAgICAweDM4
MWIwMDAwLAorICAgIDB4MzgxYjQwMDAsCisgICAgMHgzODFiODAwMCwKKyAgICAweDM4MWJjMDAw
LAorICAgIDB4MzgxYzAwMDAsCisgICAgMHgzODFjNDAwMCwKKyAgICAweDM4MWM4MDAwLAorICAg
IDB4MzgxY2MwMDAsCisgICAgMHgzODFkMDAwMCwKKyAgICAweDM4MWQ0MDAwLAorICAgIDB4Mzgx
ZDgwMDAsCisgICAgMHgzODFkYzAwMCwKKyAgICAweDM4MWUwMDAwLAorICAgIDB4MzgxZTQwMDAs
CisgICAgMHgzODFlODAwMCwKKyAgICAweDM4MWVjMDAwLAorICAgIDB4MzgxZjAwMDAsCisgICAg
MHgzODFmNDAwMCwKKyAgICAweDM4MWY4MDAwLAorICAgIDB4MzgxZmMwMDAsCisgICAgMHgzODIw
MDAwMCwKKyAgICAweDM4MjA0MDAwLAorICAgIDB4MzgyMDgwMDAsCisgICAgMHgzODIwYzAwMCwK
KyAgICAweDM4MjEwMDAwLAorICAgIDB4MzgyMTQwMDAsCisgICAgMHgzODIxODAwMCwKKyAgICAw
eDM4MjFjMDAwLAorICAgIDB4MzgyMjAwMDAsCisgICAgMHgzODIyNDAwMCwKKyAgICAweDM4MjI4
MDAwLAorICAgIDB4MzgyMmMwMDAsCisgICAgMHgzODIzMDAwMCwKKyAgICAweDM4MjM0MDAwLAor
ICAgIDB4MzgyMzgwMDAsCisgICAgMHgzODIzYzAwMCwKKyAgICAweDM4MjQwMDAwLAorICAgIDB4
MzgyNDQwMDAsCisgICAgMHgzODI0ODAwMCwKKyAgICAweDM4MjRjMDAwLAorICAgIDB4MzgyNTAw
MDAsCisgICAgMHgzODI1NDAwMCwKKyAgICAweDM4MjU4MDAwLAorICAgIDB4MzgyNWMwMDAsCisg
ICAgMHgzODI2MDAwMCwKKyAgICAweDM4MjY0MDAwLAorICAgIDB4MzgyNjgwMDAsCisgICAgMHgz
ODI2YzAwMCwKKyAgICAweDM4MjcwMDAwLAorICAgIDB4MzgyNzQwMDAsCisgICAgMHgzODI3ODAw
MCwKKyAgICAweDM4MjdjMDAwLAorICAgIDB4MzgyODAwMDAsCisgICAgMHgzODI4NDAwMCwKKyAg
ICAweDM4Mjg4MDAwLAorICAgIDB4MzgyOGMwMDAsCisgICAgMHgzODI5MDAwMCwKKyAgICAweDM4
Mjk0MDAwLAorICAgIDB4MzgyOTgwMDAsCisgICAgMHgzODI5YzAwMCwKKyAgICAweDM4MmEwMDAw
LAorICAgIDB4MzgyYTQwMDAsCisgICAgMHgzODJhODAwMCwKKyAgICAweDM4MmFjMDAwLAorICAg
IDB4MzgyYjAwMDAsCisgICAgMHgzODJiNDAwMCwKKyAgICAweDM4MmI4MDAwLAorICAgIDB4Mzgy
YmMwMDAsCisgICAgMHgzODJjMDAwMCwKKyAgICAweDM4MmM0MDAwLAorICAgIDB4MzgyYzgwMDAs
CisgICAgMHgzODJjYzAwMCwKKyAgICAweDM4MmQwMDAwLAorICAgIDB4MzgyZDQwMDAsCisgICAg
MHgzODJkODAwMCwKKyAgICAweDM4MmRjMDAwLAorICAgIDB4MzgyZTAwMDAsCisgICAgMHgzODJl
NDAwMCwKKyAgICAweDM4MmU4MDAwLAorICAgIDB4MzgyZWMwMDAsCisgICAgMHgzODJmMDAwMCwK
KyAgICAweDM4MmY0MDAwLAorICAgIDB4MzgyZjgwMDAsCisgICAgMHgzODJmYzAwMCwKKyAgICAw
eDM4MzAwMDAwLAorICAgIDB4MzgzMDQwMDAsCisgICAgMHgzODMwODAwMCwKKyAgICAweDM4MzBj
MDAwLAorICAgIDB4MzgzMTAwMDAsCisgICAgMHgzODMxNDAwMCwKKyAgICAweDM4MzE4MDAwLAor
ICAgIDB4MzgzMWMwMDAsCisgICAgMHgzODMyMDAwMCwKKyAgICAweDM4MzI0MDAwLAorICAgIDB4
MzgzMjgwMDAsCisgICAgMHgzODMyYzAwMCwKKyAgICAweDM4MzMwMDAwLAorICAgIDB4MzgzMzQw
MDAsCisgICAgMHgzODMzODAwMCwKKyAgICAweDM4MzNjMDAwLAorICAgIDB4MzgzNDAwMDAsCisg
ICAgMHgzODM0NDAwMCwKKyAgICAweDM4MzQ4MDAwLAorICAgIDB4MzgzNGMwMDAsCisgICAgMHgz
ODM1MDAwMCwKKyAgICAweDM4MzU0MDAwLAorICAgIDB4MzgzNTgwMDAsCisgICAgMHgzODM1YzAw
MCwKKyAgICAweDM4MzYwMDAwLAorICAgIDB4MzgzNjQwMDAsCisgICAgMHgzODM2ODAwMCwKKyAg
ICAweDM4MzZjMDAwLAorICAgIDB4MzgzNzAwMDAsCisgICAgMHgzODM3NDAwMCwKKyAgICAweDM4
Mzc4MDAwLAorICAgIDB4MzgzN2MwMDAsCisgICAgMHgzODM4MDAwMCwKKyAgICAweDM4Mzg0MDAw
LAorICAgIDB4MzgzODgwMDAsCisgICAgMHgzODM4YzAwMCwKKyAgICAweDM4MzkwMDAwLAorICAg
IDB4MzgzOTQwMDAsCisgICAgMHgzODM5ODAwMCwKKyAgICAweDM4MzljMDAwLAorICAgIDB4Mzgz
YTAwMDAsCisgICAgMHgzODNhNDAwMCwKKyAgICAweDM4M2E4MDAwLAorICAgIDB4MzgzYWMwMDAs
CisgICAgMHgzODNiMDAwMCwKKyAgICAweDM4M2I0MDAwLAorICAgIDB4MzgzYjgwMDAsCisgICAg
MHgzODNiYzAwMCwKKyAgICAweDM4M2MwMDAwLAorICAgIDB4MzgzYzQwMDAsCisgICAgMHgzODNj
ODAwMCwKKyAgICAweDM4M2NjMDAwLAorICAgIDB4MzgzZDAwMDAsCisgICAgMHgzODNkNDAwMCwK
KyAgICAweDM4M2Q4MDAwLAorICAgIDB4MzgzZGMwMDAsCisgICAgMHgzODNlMDAwMCwKKyAgICAw
eDM4M2U0MDAwLAorICAgIDB4MzgzZTgwMDAsCisgICAgMHgzODNlYzAwMCwKKyAgICAweDM4M2Yw
MDAwLAorICAgIDB4MzgzZjQwMDAsCisgICAgMHgzODNmODAwMCwKKyAgICAweDM4M2ZjMDAwLAor
ICAgIDB4Mzg0MDAwMDAsCisgICAgMHgzODQwNDAwMCwKKyAgICAweDM4NDA4MDAwLAorICAgIDB4
Mzg0MGMwMDAsCisgICAgMHgzODQxMDAwMCwKKyAgICAweDM4NDE0MDAwLAorICAgIDB4Mzg0MTgw
MDAsCisgICAgMHgzODQxYzAwMCwKKyAgICAweDM4NDIwMDAwLAorICAgIDB4Mzg0MjQwMDAsCisg
ICAgMHgzODQyODAwMCwKKyAgICAweDM4NDJjMDAwLAorICAgIDB4Mzg0MzAwMDAsCisgICAgMHgz
ODQzNDAwMCwKKyAgICAweDM4NDM4MDAwLAorICAgIDB4Mzg0M2MwMDAsCisgICAgMHgzODQ0MDAw
MCwKKyAgICAweDM4NDQ0MDAwLAorICAgIDB4Mzg0NDgwMDAsCisgICAgMHgzODQ0YzAwMCwKKyAg
ICAweDM4NDUwMDAwLAorICAgIDB4Mzg0NTQwMDAsCisgICAgMHgzODQ1ODAwMCwKKyAgICAweDM4
NDVjMDAwLAorICAgIDB4Mzg0NjAwMDAsCisgICAgMHgzODQ2NDAwMCwKKyAgICAweDM4NDY4MDAw
LAorICAgIDB4Mzg0NmMwMDAsCisgICAgMHgzODQ3MDAwMCwKKyAgICAweDM4NDc0MDAwLAorICAg
IDB4Mzg0NzgwMDAsCisgICAgMHgzODQ3YzAwMCwKKyAgICAweDM4NDgwMDAwLAorICAgIDB4Mzg0
ODQwMDAsCisgICAgMHgzODQ4ODAwMCwKKyAgICAweDM4NDhjMDAwLAorICAgIDB4Mzg0OTAwMDAs
CisgICAgMHgzODQ5NDAwMCwKKyAgICAweDM4NDk4MDAwLAorICAgIDB4Mzg0OWMwMDAsCisgICAg
MHgzODRhMDAwMCwKKyAgICAweDM4NGE0MDAwLAorICAgIDB4Mzg0YTgwMDAsCisgICAgMHgzODRh
YzAwMCwKKyAgICAweDM4NGIwMDAwLAorICAgIDB4Mzg0YjQwMDAsCisgICAgMHgzODRiODAwMCwK
KyAgICAweDM4NGJjMDAwLAorICAgIDB4Mzg0YzAwMDAsCisgICAgMHgzODRjNDAwMCwKKyAgICAw
eDM4NGM4MDAwLAorICAgIDB4Mzg0Y2MwMDAsCisgICAgMHgzODRkMDAwMCwKKyAgICAweDM4NGQ0
MDAwLAorICAgIDB4Mzg0ZDgwMDAsCisgICAgMHgzODRkYzAwMCwKKyAgICAweDM4NGUwMDAwLAor
ICAgIDB4Mzg0ZTQwMDAsCisgICAgMHgzODRlODAwMCwKKyAgICAweDM4NGVjMDAwLAorICAgIDB4
Mzg0ZjAwMDAsCisgICAgMHgzODRmNDAwMCwKKyAgICAweDM4NGY4MDAwLAorICAgIDB4Mzg0ZmMw
MDAsCisgICAgMHgzODUwMDAwMCwKKyAgICAweDM4NTA0MDAwLAorICAgIDB4Mzg1MDgwMDAsCisg
ICAgMHgzODUwYzAwMCwKKyAgICAweDM4NTEwMDAwLAorICAgIDB4Mzg1MTQwMDAsCisgICAgMHgz
ODUxODAwMCwKKyAgICAweDM4NTFjMDAwLAorICAgIDB4Mzg1MjAwMDAsCisgICAgMHgzODUyNDAw
MCwKKyAgICAweDM4NTI4MDAwLAorICAgIDB4Mzg1MmMwMDAsCisgICAgMHgzODUzMDAwMCwKKyAg
ICAweDM4NTM0MDAwLAorICAgIDB4Mzg1MzgwMDAsCisgICAgMHgzODUzYzAwMCwKKyAgICAweDM4
NTQwMDAwLAorICAgIDB4Mzg1NDQwMDAsCisgICAgMHgzODU0ODAwMCwKKyAgICAweDM4NTRjMDAw
LAorICAgIDB4Mzg1NTAwMDAsCisgICAgMHgzODU1NDAwMCwKKyAgICAweDM4NTU4MDAwLAorICAg
IDB4Mzg1NWMwMDAsCisgICAgMHgzODU2MDAwMCwKKyAgICAweDM4NTY0MDAwLAorICAgIDB4Mzg1
NjgwMDAsCisgICAgMHgzODU2YzAwMCwKKyAgICAweDM4NTcwMDAwLAorICAgIDB4Mzg1NzQwMDAs
CisgICAgMHgzODU3ODAwMCwKKyAgICAweDM4NTdjMDAwLAorICAgIDB4Mzg1ODAwMDAsCisgICAg
MHgzODU4NDAwMCwKKyAgICAweDM4NTg4MDAwLAorICAgIDB4Mzg1OGMwMDAsCisgICAgMHgzODU5
MDAwMCwKKyAgICAweDM4NTk0MDAwLAorICAgIDB4Mzg1OTgwMDAsCisgICAgMHgzODU5YzAwMCwK
KyAgICAweDM4NWEwMDAwLAorICAgIDB4Mzg1YTQwMDAsCisgICAgMHgzODVhODAwMCwKKyAgICAw
eDM4NWFjMDAwLAorICAgIDB4Mzg1YjAwMDAsCisgICAgMHgzODViNDAwMCwKKyAgICAweDM4NWI4
MDAwLAorICAgIDB4Mzg1YmMwMDAsCisgICAgMHgzODVjMDAwMCwKKyAgICAweDM4NWM0MDAwLAor
ICAgIDB4Mzg1YzgwMDAsCisgICAgMHgzODVjYzAwMCwKKyAgICAweDM4NWQwMDAwLAorICAgIDB4
Mzg1ZDQwMDAsCisgICAgMHgzODVkODAwMCwKKyAgICAweDM4NWRjMDAwLAorICAgIDB4Mzg1ZTAw
MDAsCisgICAgMHgzODVlNDAwMCwKKyAgICAweDM4NWU4MDAwLAorICAgIDB4Mzg1ZWMwMDAsCisg
ICAgMHgzODVmMDAwMCwKKyAgICAweDM4NWY0MDAwLAorICAgIDB4Mzg1ZjgwMDAsCisgICAgMHgz
ODVmYzAwMCwKKyAgICAweDM4NjAwMDAwLAorICAgIDB4Mzg2MDQwMDAsCisgICAgMHgzODYwODAw
MCwKKyAgICAweDM4NjBjMDAwLAorICAgIDB4Mzg2MTAwMDAsCisgICAgMHgzODYxNDAwMCwKKyAg
ICAweDM4NjE4MDAwLAorICAgIDB4Mzg2MWMwMDAsCisgICAgMHgzODYyMDAwMCwKKyAgICAweDM4
NjI0MDAwLAorICAgIDB4Mzg2MjgwMDAsCisgICAgMHgzODYyYzAwMCwKKyAgICAweDM4NjMwMDAw
LAorICAgIDB4Mzg2MzQwMDAsCisgICAgMHgzODYzODAwMCwKKyAgICAweDM4NjNjMDAwLAorICAg
IDB4Mzg2NDAwMDAsCisgICAgMHgzODY0NDAwMCwKKyAgICAweDM4NjQ4MDAwLAorICAgIDB4Mzg2
NGMwMDAsCisgICAgMHgzODY1MDAwMCwKKyAgICAweDM4NjU0MDAwLAorICAgIDB4Mzg2NTgwMDAs
CisgICAgMHgzODY1YzAwMCwKKyAgICAweDM4NjYwMDAwLAorICAgIDB4Mzg2NjQwMDAsCisgICAg
MHgzODY2ODAwMCwKKyAgICAweDM4NjZjMDAwLAorICAgIDB4Mzg2NzAwMDAsCisgICAgMHgzODY3
NDAwMCwKKyAgICAweDM4Njc4MDAwLAorICAgIDB4Mzg2N2MwMDAsCisgICAgMHgzODY4MDAwMCwK
KyAgICAweDM4Njg0MDAwLAorICAgIDB4Mzg2ODgwMDAsCisgICAgMHgzODY4YzAwMCwKKyAgICAw
eDM4NjkwMDAwLAorICAgIDB4Mzg2OTQwMDAsCisgICAgMHgzODY5ODAwMCwKKyAgICAweDM4Njlj
MDAwLAorICAgIDB4Mzg2YTAwMDAsCisgICAgMHgzODZhNDAwMCwKKyAgICAweDM4NmE4MDAwLAor
ICAgIDB4Mzg2YWMwMDAsCisgICAgMHgzODZiMDAwMCwKKyAgICAweDM4NmI0MDAwLAorICAgIDB4
Mzg2YjgwMDAsCisgICAgMHgzODZiYzAwMCwKKyAgICAweDM4NmMwMDAwLAorICAgIDB4Mzg2YzQw
MDAsCisgICAgMHgzODZjODAwMCwKKyAgICAweDM4NmNjMDAwLAorICAgIDB4Mzg2ZDAwMDAsCisg
ICAgMHgzODZkNDAwMCwKKyAgICAweDM4NmQ4MDAwLAorICAgIDB4Mzg2ZGMwMDAsCisgICAgMHgz
ODZlMDAwMCwKKyAgICAweDM4NmU0MDAwLAorICAgIDB4Mzg2ZTgwMDAsCisgICAgMHgzODZlYzAw
MCwKKyAgICAweDM4NmYwMDAwLAorICAgIDB4Mzg2ZjQwMDAsCisgICAgMHgzODZmODAwMCwKKyAg
ICAweDM4NmZjMDAwLAorICAgIDB4Mzg3MDAwMDAsCisgICAgMHgzODcwNDAwMCwKKyAgICAweDM4
NzA4MDAwLAorICAgIDB4Mzg3MGMwMDAsCisgICAgMHgzODcxMDAwMCwKKyAgICAweDM4NzE0MDAw
LAorICAgIDB4Mzg3MTgwMDAsCisgICAgMHgzODcxYzAwMCwKKyAgICAweDM4NzIwMDAwLAorICAg
IDB4Mzg3MjQwMDAsCisgICAgMHgzODcyODAwMCwKKyAgICAweDM4NzJjMDAwLAorICAgIDB4Mzg3
MzAwMDAsCisgICAgMHgzODczNDAwMCwKKyAgICAweDM4NzM4MDAwLAorICAgIDB4Mzg3M2MwMDAs
CisgICAgMHgzODc0MDAwMCwKKyAgICAweDM4NzQ0MDAwLAorICAgIDB4Mzg3NDgwMDAsCisgICAg
MHgzODc0YzAwMCwKKyAgICAweDM4NzUwMDAwLAorICAgIDB4Mzg3NTQwMDAsCisgICAgMHgzODc1
ODAwMCwKKyAgICAweDM4NzVjMDAwLAorICAgIDB4Mzg3NjAwMDAsCisgICAgMHgzODc2NDAwMCwK
KyAgICAweDM4NzY4MDAwLAorICAgIDB4Mzg3NmMwMDAsCisgICAgMHgzODc3MDAwMCwKKyAgICAw
eDM4Nzc0MDAwLAorICAgIDB4Mzg3NzgwMDAsCisgICAgMHgzODc3YzAwMCwKKyAgICAweDM4Nzgw
MDAwLAorICAgIDB4Mzg3ODQwMDAsCisgICAgMHgzODc4ODAwMCwKKyAgICAweDM4NzhjMDAwLAor
ICAgIDB4Mzg3OTAwMDAsCisgICAgMHgzODc5NDAwMCwKKyAgICAweDM4Nzk4MDAwLAorICAgIDB4
Mzg3OWMwMDAsCisgICAgMHgzODdhMDAwMCwKKyAgICAweDM4N2E0MDAwLAorICAgIDB4Mzg3YTgw
MDAsCisgICAgMHgzODdhYzAwMCwKKyAgICAweDM4N2IwMDAwLAorICAgIDB4Mzg3YjQwMDAsCisg
ICAgMHgzODdiODAwMCwKKyAgICAweDM4N2JjMDAwLAorICAgIDB4Mzg3YzAwMDAsCisgICAgMHgz
ODdjNDAwMCwKKyAgICAweDM4N2M4MDAwLAorICAgIDB4Mzg3Y2MwMDAsCisgICAgMHgzODdkMDAw
MCwKKyAgICAweDM4N2Q0MDAwLAorICAgIDB4Mzg3ZDgwMDAsCisgICAgMHgzODdkYzAwMCwKKyAg
ICAweDM4N2UwMDAwLAorICAgIDB4Mzg3ZTQwMDAsCisgICAgMHgzODdlODAwMCwKKyAgICAweDM4
N2VjMDAwLAorICAgIDB4Mzg3ZjAwMDAsCisgICAgMHgzODdmNDAwMCwKKyAgICAweDM4N2Y4MDAw
LAorICAgIDB4Mzg3ZmMwMDAsCisgICAgMHgzODAwMDAwMCwKKyAgICAweDM4MDAyMDAwLAorICAg
IDB4MzgwMDQwMDAsCisgICAgMHgzODAwNjAwMCwKKyAgICAweDM4MDA4MDAwLAorICAgIDB4Mzgw
MGEwMDAsCisgICAgMHgzODAwYzAwMCwKKyAgICAweDM4MDBlMDAwLAorICAgIDB4MzgwMTAwMDAs
CisgICAgMHgzODAxMjAwMCwKKyAgICAweDM4MDE0MDAwLAorICAgIDB4MzgwMTYwMDAsCisgICAg
MHgzODAxODAwMCwKKyAgICAweDM4MDFhMDAwLAorICAgIDB4MzgwMWMwMDAsCisgICAgMHgzODAx
ZTAwMCwKKyAgICAweDM4MDIwMDAwLAorICAgIDB4MzgwMjIwMDAsCisgICAgMHgzODAyNDAwMCwK
KyAgICAweDM4MDI2MDAwLAorICAgIDB4MzgwMjgwMDAsCisgICAgMHgzODAyYTAwMCwKKyAgICAw
eDM4MDJjMDAwLAorICAgIDB4MzgwMmUwMDAsCisgICAgMHgzODAzMDAwMCwKKyAgICAweDM4MDMy
MDAwLAorICAgIDB4MzgwMzQwMDAsCisgICAgMHgzODAzNjAwMCwKKyAgICAweDM4MDM4MDAwLAor
ICAgIDB4MzgwM2EwMDAsCisgICAgMHgzODAzYzAwMCwKKyAgICAweDM4MDNlMDAwLAorICAgIDB4
MzgwNDAwMDAsCisgICAgMHgzODA0MjAwMCwKKyAgICAweDM4MDQ0MDAwLAorICAgIDB4MzgwNDYw
MDAsCisgICAgMHgzODA0ODAwMCwKKyAgICAweDM4MDRhMDAwLAorICAgIDB4MzgwNGMwMDAsCisg
ICAgMHgzODA0ZTAwMCwKKyAgICAweDM4MDUwMDAwLAorICAgIDB4MzgwNTIwMDAsCisgICAgMHgz
ODA1NDAwMCwKKyAgICAweDM4MDU2MDAwLAorICAgIDB4MzgwNTgwMDAsCisgICAgMHgzODA1YTAw
MCwKKyAgICAweDM4MDVjMDAwLAorICAgIDB4MzgwNWUwMDAsCisgICAgMHgzODA2MDAwMCwKKyAg
ICAweDM4MDYyMDAwLAorICAgIDB4MzgwNjQwMDAsCisgICAgMHgzODA2NjAwMCwKKyAgICAweDM4
MDY4MDAwLAorICAgIDB4MzgwNmEwMDAsCisgICAgMHgzODA2YzAwMCwKKyAgICAweDM4MDZlMDAw
LAorICAgIDB4MzgwNzAwMDAsCisgICAgMHgzODA3MjAwMCwKKyAgICAweDM4MDc0MDAwLAorICAg
IDB4MzgwNzYwMDAsCisgICAgMHgzODA3ODAwMCwKKyAgICAweDM4MDdhMDAwLAorICAgIDB4Mzgw
N2MwMDAsCisgICAgMHgzODA3ZTAwMCwKKyAgICAweDM4MDgwMDAwLAorICAgIDB4MzgwODIwMDAs
CisgICAgMHgzODA4NDAwMCwKKyAgICAweDM4MDg2MDAwLAorICAgIDB4MzgwODgwMDAsCisgICAg
MHgzODA4YTAwMCwKKyAgICAweDM4MDhjMDAwLAorICAgIDB4MzgwOGUwMDAsCisgICAgMHgzODA5
MDAwMCwKKyAgICAweDM4MDkyMDAwLAorICAgIDB4MzgwOTQwMDAsCisgICAgMHgzODA5NjAwMCwK
KyAgICAweDM4MDk4MDAwLAorICAgIDB4MzgwOWEwMDAsCisgICAgMHgzODA5YzAwMCwKKyAgICAw
eDM4MDllMDAwLAorICAgIDB4MzgwYTAwMDAsCisgICAgMHgzODBhMjAwMCwKKyAgICAweDM4MGE0
MDAwLAorICAgIDB4MzgwYTYwMDAsCisgICAgMHgzODBhODAwMCwKKyAgICAweDM4MGFhMDAwLAor
ICAgIDB4MzgwYWMwMDAsCisgICAgMHgzODBhZTAwMCwKKyAgICAweDM4MGIwMDAwLAorICAgIDB4
MzgwYjIwMDAsCisgICAgMHgzODBiNDAwMCwKKyAgICAweDM4MGI2MDAwLAorICAgIDB4MzgwYjgw
MDAsCisgICAgMHgzODBiYTAwMCwKKyAgICAweDM4MGJjMDAwLAorICAgIDB4MzgwYmUwMDAsCisg
ICAgMHgzODBjMDAwMCwKKyAgICAweDM4MGMyMDAwLAorICAgIDB4MzgwYzQwMDAsCisgICAgMHgz
ODBjNjAwMCwKKyAgICAweDM4MGM4MDAwLAorICAgIDB4MzgwY2EwMDAsCisgICAgMHgzODBjYzAw
MCwKKyAgICAweDM4MGNlMDAwLAorICAgIDB4MzgwZDAwMDAsCisgICAgMHgzODBkMjAwMCwKKyAg
ICAweDM4MGQ0MDAwLAorICAgIDB4MzgwZDYwMDAsCisgICAgMHgzODBkODAwMCwKKyAgICAweDM4
MGRhMDAwLAorICAgIDB4MzgwZGMwMDAsCisgICAgMHgzODBkZTAwMCwKKyAgICAweDM4MGUwMDAw
LAorICAgIDB4MzgwZTIwMDAsCisgICAgMHgzODBlNDAwMCwKKyAgICAweDM4MGU2MDAwLAorICAg
IDB4MzgwZTgwMDAsCisgICAgMHgzODBlYTAwMCwKKyAgICAweDM4MGVjMDAwLAorICAgIDB4Mzgw
ZWUwMDAsCisgICAgMHgzODBmMDAwMCwKKyAgICAweDM4MGYyMDAwLAorICAgIDB4MzgwZjQwMDAs
CisgICAgMHgzODBmNjAwMCwKKyAgICAweDM4MGY4MDAwLAorICAgIDB4MzgwZmEwMDAsCisgICAg
MHgzODBmYzAwMCwKKyAgICAweDM4MGZlMDAwLAorICAgIDB4MzgxMDAwMDAsCisgICAgMHgzODEw
MjAwMCwKKyAgICAweDM4MTA0MDAwLAorICAgIDB4MzgxMDYwMDAsCisgICAgMHgzODEwODAwMCwK
KyAgICAweDM4MTBhMDAwLAorICAgIDB4MzgxMGMwMDAsCisgICAgMHgzODEwZTAwMCwKKyAgICAw
eDM4MTEwMDAwLAorICAgIDB4MzgxMTIwMDAsCisgICAgMHgzODExNDAwMCwKKyAgICAweDM4MTE2
MDAwLAorICAgIDB4MzgxMTgwMDAsCisgICAgMHgzODExYTAwMCwKKyAgICAweDM4MTFjMDAwLAor
ICAgIDB4MzgxMWUwMDAsCisgICAgMHgzODEyMDAwMCwKKyAgICAweDM4MTIyMDAwLAorICAgIDB4
MzgxMjQwMDAsCisgICAgMHgzODEyNjAwMCwKKyAgICAweDM4MTI4MDAwLAorICAgIDB4MzgxMmEw
MDAsCisgICAgMHgzODEyYzAwMCwKKyAgICAweDM4MTJlMDAwLAorICAgIDB4MzgxMzAwMDAsCisg
ICAgMHgzODEzMjAwMCwKKyAgICAweDM4MTM0MDAwLAorICAgIDB4MzgxMzYwMDAsCisgICAgMHgz
ODEzODAwMCwKKyAgICAweDM4MTNhMDAwLAorICAgIDB4MzgxM2MwMDAsCisgICAgMHgzODEzZTAw
MCwKKyAgICAweDM4MTQwMDAwLAorICAgIDB4MzgxNDIwMDAsCisgICAgMHgzODE0NDAwMCwKKyAg
ICAweDM4MTQ2MDAwLAorICAgIDB4MzgxNDgwMDAsCisgICAgMHgzODE0YTAwMCwKKyAgICAweDM4
MTRjMDAwLAorICAgIDB4MzgxNGUwMDAsCisgICAgMHgzODE1MDAwMCwKKyAgICAweDM4MTUyMDAw
LAorICAgIDB4MzgxNTQwMDAsCisgICAgMHgzODE1NjAwMCwKKyAgICAweDM4MTU4MDAwLAorICAg
IDB4MzgxNWEwMDAsCisgICAgMHgzODE1YzAwMCwKKyAgICAweDM4MTVlMDAwLAorICAgIDB4Mzgx
NjAwMDAsCisgICAgMHgzODE2MjAwMCwKKyAgICAweDM4MTY0MDAwLAorICAgIDB4MzgxNjYwMDAs
CisgICAgMHgzODE2ODAwMCwKKyAgICAweDM4MTZhMDAwLAorICAgIDB4MzgxNmMwMDAsCisgICAg
MHgzODE2ZTAwMCwKKyAgICAweDM4MTcwMDAwLAorICAgIDB4MzgxNzIwMDAsCisgICAgMHgzODE3
NDAwMCwKKyAgICAweDM4MTc2MDAwLAorICAgIDB4MzgxNzgwMDAsCisgICAgMHgzODE3YTAwMCwK
KyAgICAweDM4MTdjMDAwLAorICAgIDB4MzgxN2UwMDAsCisgICAgMHgzODE4MDAwMCwKKyAgICAw
eDM4MTgyMDAwLAorICAgIDB4MzgxODQwMDAsCisgICAgMHgzODE4NjAwMCwKKyAgICAweDM4MTg4
MDAwLAorICAgIDB4MzgxOGEwMDAsCisgICAgMHgzODE4YzAwMCwKKyAgICAweDM4MThlMDAwLAor
ICAgIDB4MzgxOTAwMDAsCisgICAgMHgzODE5MjAwMCwKKyAgICAweDM4MTk0MDAwLAorICAgIDB4
MzgxOTYwMDAsCisgICAgMHgzODE5ODAwMCwKKyAgICAweDM4MTlhMDAwLAorICAgIDB4MzgxOWMw
MDAsCisgICAgMHgzODE5ZTAwMCwKKyAgICAweDM4MWEwMDAwLAorICAgIDB4MzgxYTIwMDAsCisg
ICAgMHgzODFhNDAwMCwKKyAgICAweDM4MWE2MDAwLAorICAgIDB4MzgxYTgwMDAsCisgICAgMHgz
ODFhYTAwMCwKKyAgICAweDM4MWFjMDAwLAorICAgIDB4MzgxYWUwMDAsCisgICAgMHgzODFiMDAw
MCwKKyAgICAweDM4MWIyMDAwLAorICAgIDB4MzgxYjQwMDAsCisgICAgMHgzODFiNjAwMCwKKyAg
ICAweDM4MWI4MDAwLAorICAgIDB4MzgxYmEwMDAsCisgICAgMHgzODFiYzAwMCwKKyAgICAweDM4
MWJlMDAwLAorICAgIDB4MzgxYzAwMDAsCisgICAgMHgzODFjMjAwMCwKKyAgICAweDM4MWM0MDAw
LAorICAgIDB4MzgxYzYwMDAsCisgICAgMHgzODFjODAwMCwKKyAgICAweDM4MWNhMDAwLAorICAg
IDB4MzgxY2MwMDAsCisgICAgMHgzODFjZTAwMCwKKyAgICAweDM4MWQwMDAwLAorICAgIDB4Mzgx
ZDIwMDAsCisgICAgMHgzODFkNDAwMCwKKyAgICAweDM4MWQ2MDAwLAorICAgIDB4MzgxZDgwMDAs
CisgICAgMHgzODFkYTAwMCwKKyAgICAweDM4MWRjMDAwLAorICAgIDB4MzgxZGUwMDAsCisgICAg
MHgzODFlMDAwMCwKKyAgICAweDM4MWUyMDAwLAorICAgIDB4MzgxZTQwMDAsCisgICAgMHgzODFl
NjAwMCwKKyAgICAweDM4MWU4MDAwLAorICAgIDB4MzgxZWEwMDAsCisgICAgMHgzODFlYzAwMCwK
KyAgICAweDM4MWVlMDAwLAorICAgIDB4MzgxZjAwMDAsCisgICAgMHgzODFmMjAwMCwKKyAgICAw
eDM4MWY0MDAwLAorICAgIDB4MzgxZjYwMDAsCisgICAgMHgzODFmODAwMCwKKyAgICAweDM4MWZh
MDAwLAorICAgIDB4MzgxZmMwMDAsCisgICAgMHgzODFmZTAwMCwKKyAgICAweDM4MjAwMDAwLAor
ICAgIDB4MzgyMDIwMDAsCisgICAgMHgzODIwNDAwMCwKKyAgICAweDM4MjA2MDAwLAorICAgIDB4
MzgyMDgwMDAsCisgICAgMHgzODIwYTAwMCwKKyAgICAweDM4MjBjMDAwLAorICAgIDB4MzgyMGUw
MDAsCisgICAgMHgzODIxMDAwMCwKKyAgICAweDM4MjEyMDAwLAorICAgIDB4MzgyMTQwMDAsCisg
ICAgMHgzODIxNjAwMCwKKyAgICAweDM4MjE4MDAwLAorICAgIDB4MzgyMWEwMDAsCisgICAgMHgz
ODIxYzAwMCwKKyAgICAweDM4MjFlMDAwLAorICAgIDB4MzgyMjAwMDAsCisgICAgMHgzODIyMjAw
MCwKKyAgICAweDM4MjI0MDAwLAorICAgIDB4MzgyMjYwMDAsCisgICAgMHgzODIyODAwMCwKKyAg
ICAweDM4MjJhMDAwLAorICAgIDB4MzgyMmMwMDAsCisgICAgMHgzODIyZTAwMCwKKyAgICAweDM4
MjMwMDAwLAorICAgIDB4MzgyMzIwMDAsCisgICAgMHgzODIzNDAwMCwKKyAgICAweDM4MjM2MDAw
LAorICAgIDB4MzgyMzgwMDAsCisgICAgMHgzODIzYTAwMCwKKyAgICAweDM4MjNjMDAwLAorICAg
IDB4MzgyM2UwMDAsCisgICAgMHgzODI0MDAwMCwKKyAgICAweDM4MjQyMDAwLAorICAgIDB4Mzgy
NDQwMDAsCisgICAgMHgzODI0NjAwMCwKKyAgICAweDM4MjQ4MDAwLAorICAgIDB4MzgyNGEwMDAs
CisgICAgMHgzODI0YzAwMCwKKyAgICAweDM4MjRlMDAwLAorICAgIDB4MzgyNTAwMDAsCisgICAg
MHgzODI1MjAwMCwKKyAgICAweDM4MjU0MDAwLAorICAgIDB4MzgyNTYwMDAsCisgICAgMHgzODI1
ODAwMCwKKyAgICAweDM4MjVhMDAwLAorICAgIDB4MzgyNWMwMDAsCisgICAgMHgzODI1ZTAwMCwK
KyAgICAweDM4MjYwMDAwLAorICAgIDB4MzgyNjIwMDAsCisgICAgMHgzODI2NDAwMCwKKyAgICAw
eDM4MjY2MDAwLAorICAgIDB4MzgyNjgwMDAsCisgICAgMHgzODI2YTAwMCwKKyAgICAweDM4MjZj
MDAwLAorICAgIDB4MzgyNmUwMDAsCisgICAgMHgzODI3MDAwMCwKKyAgICAweDM4MjcyMDAwLAor
ICAgIDB4MzgyNzQwMDAsCisgICAgMHgzODI3NjAwMCwKKyAgICAweDM4Mjc4MDAwLAorICAgIDB4
MzgyN2EwMDAsCisgICAgMHgzODI3YzAwMCwKKyAgICAweDM4MjdlMDAwLAorICAgIDB4MzgyODAw
MDAsCisgICAgMHgzODI4MjAwMCwKKyAgICAweDM4Mjg0MDAwLAorICAgIDB4MzgyODYwMDAsCisg
ICAgMHgzODI4ODAwMCwKKyAgICAweDM4MjhhMDAwLAorICAgIDB4MzgyOGMwMDAsCisgICAgMHgz
ODI4ZTAwMCwKKyAgICAweDM4MjkwMDAwLAorICAgIDB4MzgyOTIwMDAsCisgICAgMHgzODI5NDAw
MCwKKyAgICAweDM4Mjk2MDAwLAorICAgIDB4MzgyOTgwMDAsCisgICAgMHgzODI5YTAwMCwKKyAg
ICAweDM4MjljMDAwLAorICAgIDB4MzgyOWUwMDAsCisgICAgMHgzODJhMDAwMCwKKyAgICAweDM4
MmEyMDAwLAorICAgIDB4MzgyYTQwMDAsCisgICAgMHgzODJhNjAwMCwKKyAgICAweDM4MmE4MDAw
LAorICAgIDB4MzgyYWEwMDAsCisgICAgMHgzODJhYzAwMCwKKyAgICAweDM4MmFlMDAwLAorICAg
IDB4MzgyYjAwMDAsCisgICAgMHgzODJiMjAwMCwKKyAgICAweDM4MmI0MDAwLAorICAgIDB4Mzgy
YjYwMDAsCisgICAgMHgzODJiODAwMCwKKyAgICAweDM4MmJhMDAwLAorICAgIDB4MzgyYmMwMDAs
CisgICAgMHgzODJiZTAwMCwKKyAgICAweDM4MmMwMDAwLAorICAgIDB4MzgyYzIwMDAsCisgICAg
MHgzODJjNDAwMCwKKyAgICAweDM4MmM2MDAwLAorICAgIDB4MzgyYzgwMDAsCisgICAgMHgzODJj
YTAwMCwKKyAgICAweDM4MmNjMDAwLAorICAgIDB4MzgyY2UwMDAsCisgICAgMHgzODJkMDAwMCwK
KyAgICAweDM4MmQyMDAwLAorICAgIDB4MzgyZDQwMDAsCisgICAgMHgzODJkNjAwMCwKKyAgICAw
eDM4MmQ4MDAwLAorICAgIDB4MzgyZGEwMDAsCisgICAgMHgzODJkYzAwMCwKKyAgICAweDM4MmRl
MDAwLAorICAgIDB4MzgyZTAwMDAsCisgICAgMHgzODJlMjAwMCwKKyAgICAweDM4MmU0MDAwLAor
ICAgIDB4MzgyZTYwMDAsCisgICAgMHgzODJlODAwMCwKKyAgICAweDM4MmVhMDAwLAorICAgIDB4
MzgyZWMwMDAsCisgICAgMHgzODJlZTAwMCwKKyAgICAweDM4MmYwMDAwLAorICAgIDB4MzgyZjIw
MDAsCisgICAgMHgzODJmNDAwMCwKKyAgICAweDM4MmY2MDAwLAorICAgIDB4MzgyZjgwMDAsCisg
ICAgMHgzODJmYTAwMCwKKyAgICAweDM4MmZjMDAwLAorICAgIDB4MzgyZmUwMDAsCisgICAgMHgz
ODMwMDAwMCwKKyAgICAweDM4MzAyMDAwLAorICAgIDB4MzgzMDQwMDAsCisgICAgMHgzODMwNjAw
MCwKKyAgICAweDM4MzA4MDAwLAorICAgIDB4MzgzMGEwMDAsCisgICAgMHgzODMwYzAwMCwKKyAg
ICAweDM4MzBlMDAwLAorICAgIDB4MzgzMTAwMDAsCisgICAgMHgzODMxMjAwMCwKKyAgICAweDM4
MzE0MDAwLAorICAgIDB4MzgzMTYwMDAsCisgICAgMHgzODMxODAwMCwKKyAgICAweDM4MzFhMDAw
LAorICAgIDB4MzgzMWMwMDAsCisgICAgMHgzODMxZTAwMCwKKyAgICAweDM4MzIwMDAwLAorICAg
IDB4MzgzMjIwMDAsCisgICAgMHgzODMyNDAwMCwKKyAgICAweDM4MzI2MDAwLAorICAgIDB4Mzgz
MjgwMDAsCisgICAgMHgzODMyYTAwMCwKKyAgICAweDM4MzJjMDAwLAorICAgIDB4MzgzMmUwMDAs
CisgICAgMHgzODMzMDAwMCwKKyAgICAweDM4MzMyMDAwLAorICAgIDB4MzgzMzQwMDAsCisgICAg
MHgzODMzNjAwMCwKKyAgICAweDM4MzM4MDAwLAorICAgIDB4MzgzM2EwMDAsCisgICAgMHgzODMz
YzAwMCwKKyAgICAweDM4MzNlMDAwLAorICAgIDB4MzgzNDAwMDAsCisgICAgMHgzODM0MjAwMCwK
KyAgICAweDM4MzQ0MDAwLAorICAgIDB4MzgzNDYwMDAsCisgICAgMHgzODM0ODAwMCwKKyAgICAw
eDM4MzRhMDAwLAorICAgIDB4MzgzNGMwMDAsCisgICAgMHgzODM0ZTAwMCwKKyAgICAweDM4MzUw
MDAwLAorICAgIDB4MzgzNTIwMDAsCisgICAgMHgzODM1NDAwMCwKKyAgICAweDM4MzU2MDAwLAor
ICAgIDB4MzgzNTgwMDAsCisgICAgMHgzODM1YTAwMCwKKyAgICAweDM4MzVjMDAwLAorICAgIDB4
MzgzNWUwMDAsCisgICAgMHgzODM2MDAwMCwKKyAgICAweDM4MzYyMDAwLAorICAgIDB4MzgzNjQw
MDAsCisgICAgMHgzODM2NjAwMCwKKyAgICAweDM4MzY4MDAwLAorICAgIDB4MzgzNmEwMDAsCisg
ICAgMHgzODM2YzAwMCwKKyAgICAweDM4MzZlMDAwLAorICAgIDB4MzgzNzAwMDAsCisgICAgMHgz
ODM3MjAwMCwKKyAgICAweDM4Mzc0MDAwLAorICAgIDB4MzgzNzYwMDAsCisgICAgMHgzODM3ODAw
MCwKKyAgICAweDM4MzdhMDAwLAorICAgIDB4MzgzN2MwMDAsCisgICAgMHgzODM3ZTAwMCwKKyAg
ICAweDM4MzgwMDAwLAorICAgIDB4MzgzODIwMDAsCisgICAgMHgzODM4NDAwMCwKKyAgICAweDM4
Mzg2MDAwLAorICAgIDB4MzgzODgwMDAsCisgICAgMHgzODM4YTAwMCwKKyAgICAweDM4MzhjMDAw
LAorICAgIDB4MzgzOGUwMDAsCisgICAgMHgzODM5MDAwMCwKKyAgICAweDM4MzkyMDAwLAorICAg
IDB4MzgzOTQwMDAsCisgICAgMHgzODM5NjAwMCwKKyAgICAweDM4Mzk4MDAwLAorICAgIDB4Mzgz
OWEwMDAsCisgICAgMHgzODM5YzAwMCwKKyAgICAweDM4MzllMDAwLAorICAgIDB4MzgzYTAwMDAs
CisgICAgMHgzODNhMjAwMCwKKyAgICAweDM4M2E0MDAwLAorICAgIDB4MzgzYTYwMDAsCisgICAg
MHgzODNhODAwMCwKKyAgICAweDM4M2FhMDAwLAorICAgIDB4MzgzYWMwMDAsCisgICAgMHgzODNh
ZTAwMCwKKyAgICAweDM4M2IwMDAwLAorICAgIDB4MzgzYjIwMDAsCisgICAgMHgzODNiNDAwMCwK
KyAgICAweDM4M2I2MDAwLAorICAgIDB4MzgzYjgwMDAsCisgICAgMHgzODNiYTAwMCwKKyAgICAw
eDM4M2JjMDAwLAorICAgIDB4MzgzYmUwMDAsCisgICAgMHgzODNjMDAwMCwKKyAgICAweDM4M2My
MDAwLAorICAgIDB4MzgzYzQwMDAsCisgICAgMHgzODNjNjAwMCwKKyAgICAweDM4M2M4MDAwLAor
ICAgIDB4MzgzY2EwMDAsCisgICAgMHgzODNjYzAwMCwKKyAgICAweDM4M2NlMDAwLAorICAgIDB4
MzgzZDAwMDAsCisgICAgMHgzODNkMjAwMCwKKyAgICAweDM4M2Q0MDAwLAorICAgIDB4MzgzZDYw
MDAsCisgICAgMHgzODNkODAwMCwKKyAgICAweDM4M2RhMDAwLAorICAgIDB4MzgzZGMwMDAsCisg
ICAgMHgzODNkZTAwMCwKKyAgICAweDM4M2UwMDAwLAorICAgIDB4MzgzZTIwMDAsCisgICAgMHgz
ODNlNDAwMCwKKyAgICAweDM4M2U2MDAwLAorICAgIDB4MzgzZTgwMDAsCisgICAgMHgzODNlYTAw
MCwKKyAgICAweDM4M2VjMDAwLAorICAgIDB4MzgzZWUwMDAsCisgICAgMHgzODNmMDAwMCwKKyAg
ICAweDM4M2YyMDAwLAorICAgIDB4MzgzZjQwMDAsCisgICAgMHgzODNmNjAwMCwKKyAgICAweDM4
M2Y4MDAwLAorICAgIDB4MzgzZmEwMDAsCisgICAgMHgzODNmYzAwMCwKKyAgICAweDM4M2ZlMDAw
LAorICAgIDB4Mzg0MDAwMDAsCisgICAgMHgzODQwMjAwMCwKKyAgICAweDM4NDA0MDAwLAorICAg
IDB4Mzg0MDYwMDAsCisgICAgMHgzODQwODAwMCwKKyAgICAweDM4NDBhMDAwLAorICAgIDB4Mzg0
MGMwMDAsCisgICAgMHgzODQwZTAwMCwKKyAgICAweDM4NDEwMDAwLAorICAgIDB4Mzg0MTIwMDAs
CisgICAgMHgzODQxNDAwMCwKKyAgICAweDM4NDE2MDAwLAorICAgIDB4Mzg0MTgwMDAsCisgICAg
MHgzODQxYTAwMCwKKyAgICAweDM4NDFjMDAwLAorICAgIDB4Mzg0MWUwMDAsCisgICAgMHgzODQy
MDAwMCwKKyAgICAweDM4NDIyMDAwLAorICAgIDB4Mzg0MjQwMDAsCisgICAgMHgzODQyNjAwMCwK
KyAgICAweDM4NDI4MDAwLAorICAgIDB4Mzg0MmEwMDAsCisgICAgMHgzODQyYzAwMCwKKyAgICAw
eDM4NDJlMDAwLAorICAgIDB4Mzg0MzAwMDAsCisgICAgMHgzODQzMjAwMCwKKyAgICAweDM4NDM0
MDAwLAorICAgIDB4Mzg0MzYwMDAsCisgICAgMHgzODQzODAwMCwKKyAgICAweDM4NDNhMDAwLAor
ICAgIDB4Mzg0M2MwMDAsCisgICAgMHgzODQzZTAwMCwKKyAgICAweDM4NDQwMDAwLAorICAgIDB4
Mzg0NDIwMDAsCisgICAgMHgzODQ0NDAwMCwKKyAgICAweDM4NDQ2MDAwLAorICAgIDB4Mzg0NDgw
MDAsCisgICAgMHgzODQ0YTAwMCwKKyAgICAweDM4NDRjMDAwLAorICAgIDB4Mzg0NGUwMDAsCisg
ICAgMHgzODQ1MDAwMCwKKyAgICAweDM4NDUyMDAwLAorICAgIDB4Mzg0NTQwMDAsCisgICAgMHgz
ODQ1NjAwMCwKKyAgICAweDM4NDU4MDAwLAorICAgIDB4Mzg0NWEwMDAsCisgICAgMHgzODQ1YzAw
MCwKKyAgICAweDM4NDVlMDAwLAorICAgIDB4Mzg0NjAwMDAsCisgICAgMHgzODQ2MjAwMCwKKyAg
ICAweDM4NDY0MDAwLAorICAgIDB4Mzg0NjYwMDAsCisgICAgMHgzODQ2ODAwMCwKKyAgICAweDM4
NDZhMDAwLAorICAgIDB4Mzg0NmMwMDAsCisgICAgMHgzODQ2ZTAwMCwKKyAgICAweDM4NDcwMDAw
LAorICAgIDB4Mzg0NzIwMDAsCisgICAgMHgzODQ3NDAwMCwKKyAgICAweDM4NDc2MDAwLAorICAg
IDB4Mzg0NzgwMDAsCisgICAgMHgzODQ3YTAwMCwKKyAgICAweDM4NDdjMDAwLAorICAgIDB4Mzg0
N2UwMDAsCisgICAgMHgzODQ4MDAwMCwKKyAgICAweDM4NDgyMDAwLAorICAgIDB4Mzg0ODQwMDAs
CisgICAgMHgzODQ4NjAwMCwKKyAgICAweDM4NDg4MDAwLAorICAgIDB4Mzg0OGEwMDAsCisgICAg
MHgzODQ4YzAwMCwKKyAgICAweDM4NDhlMDAwLAorICAgIDB4Mzg0OTAwMDAsCisgICAgMHgzODQ5
MjAwMCwKKyAgICAweDM4NDk0MDAwLAorICAgIDB4Mzg0OTYwMDAsCisgICAgMHgzODQ5ODAwMCwK
KyAgICAweDM4NDlhMDAwLAorICAgIDB4Mzg0OWMwMDAsCisgICAgMHgzODQ5ZTAwMCwKKyAgICAw
eDM4NGEwMDAwLAorICAgIDB4Mzg0YTIwMDAsCisgICAgMHgzODRhNDAwMCwKKyAgICAweDM4NGE2
MDAwLAorICAgIDB4Mzg0YTgwMDAsCisgICAgMHgzODRhYTAwMCwKKyAgICAweDM4NGFjMDAwLAor
ICAgIDB4Mzg0YWUwMDAsCisgICAgMHgzODRiMDAwMCwKKyAgICAweDM4NGIyMDAwLAorICAgIDB4
Mzg0YjQwMDAsCisgICAgMHgzODRiNjAwMCwKKyAgICAweDM4NGI4MDAwLAorICAgIDB4Mzg0YmEw
MDAsCisgICAgMHgzODRiYzAwMCwKKyAgICAweDM4NGJlMDAwLAorICAgIDB4Mzg0YzAwMDAsCisg
ICAgMHgzODRjMjAwMCwKKyAgICAweDM4NGM0MDAwLAorICAgIDB4Mzg0YzYwMDAsCisgICAgMHgz
ODRjODAwMCwKKyAgICAweDM4NGNhMDAwLAorICAgIDB4Mzg0Y2MwMDAsCisgICAgMHgzODRjZTAw
MCwKKyAgICAweDM4NGQwMDAwLAorICAgIDB4Mzg0ZDIwMDAsCisgICAgMHgzODRkNDAwMCwKKyAg
ICAweDM4NGQ2MDAwLAorICAgIDB4Mzg0ZDgwMDAsCisgICAgMHgzODRkYTAwMCwKKyAgICAweDM4
NGRjMDAwLAorICAgIDB4Mzg0ZGUwMDAsCisgICAgMHgzODRlMDAwMCwKKyAgICAweDM4NGUyMDAw
LAorICAgIDB4Mzg0ZTQwMDAsCisgICAgMHgzODRlNjAwMCwKKyAgICAweDM4NGU4MDAwLAorICAg
IDB4Mzg0ZWEwMDAsCisgICAgMHgzODRlYzAwMCwKKyAgICAweDM4NGVlMDAwLAorICAgIDB4Mzg0
ZjAwMDAsCisgICAgMHgzODRmMjAwMCwKKyAgICAweDM4NGY0MDAwLAorICAgIDB4Mzg0ZjYwMDAs
CisgICAgMHgzODRmODAwMCwKKyAgICAweDM4NGZhMDAwLAorICAgIDB4Mzg0ZmMwMDAsCisgICAg
MHgzODRmZTAwMCwKKyAgICAweDM4NTAwMDAwLAorICAgIDB4Mzg1MDIwMDAsCisgICAgMHgzODUw
NDAwMCwKKyAgICAweDM4NTA2MDAwLAorICAgIDB4Mzg1MDgwMDAsCisgICAgMHgzODUwYTAwMCwK
KyAgICAweDM4NTBjMDAwLAorICAgIDB4Mzg1MGUwMDAsCisgICAgMHgzODUxMDAwMCwKKyAgICAw
eDM4NTEyMDAwLAorICAgIDB4Mzg1MTQwMDAsCisgICAgMHgzODUxNjAwMCwKKyAgICAweDM4NTE4
MDAwLAorICAgIDB4Mzg1MWEwMDAsCisgICAgMHgzODUxYzAwMCwKKyAgICAweDM4NTFlMDAwLAor
ICAgIDB4Mzg1MjAwMDAsCisgICAgMHgzODUyMjAwMCwKKyAgICAweDM4NTI0MDAwLAorICAgIDB4
Mzg1MjYwMDAsCisgICAgMHgzODUyODAwMCwKKyAgICAweDM4NTJhMDAwLAorICAgIDB4Mzg1MmMw
MDAsCisgICAgMHgzODUyZTAwMCwKKyAgICAweDM4NTMwMDAwLAorICAgIDB4Mzg1MzIwMDAsCisg
ICAgMHgzODUzNDAwMCwKKyAgICAweDM4NTM2MDAwLAorICAgIDB4Mzg1MzgwMDAsCisgICAgMHgz
ODUzYTAwMCwKKyAgICAweDM4NTNjMDAwLAorICAgIDB4Mzg1M2UwMDAsCisgICAgMHgzODU0MDAw
MCwKKyAgICAweDM4NTQyMDAwLAorICAgIDB4Mzg1NDQwMDAsCisgICAgMHgzODU0NjAwMCwKKyAg
ICAweDM4NTQ4MDAwLAorICAgIDB4Mzg1NGEwMDAsCisgICAgMHgzODU0YzAwMCwKKyAgICAweDM4
NTRlMDAwLAorICAgIDB4Mzg1NTAwMDAsCisgICAgMHgzODU1MjAwMCwKKyAgICAweDM4NTU0MDAw
LAorICAgIDB4Mzg1NTYwMDAsCisgICAgMHgzODU1ODAwMCwKKyAgICAweDM4NTVhMDAwLAorICAg
IDB4Mzg1NWMwMDAsCisgICAgMHgzODU1ZTAwMCwKKyAgICAweDM4NTYwMDAwLAorICAgIDB4Mzg1
NjIwMDAsCisgICAgMHgzODU2NDAwMCwKKyAgICAweDM4NTY2MDAwLAorICAgIDB4Mzg1NjgwMDAs
CisgICAgMHgzODU2YTAwMCwKKyAgICAweDM4NTZjMDAwLAorICAgIDB4Mzg1NmUwMDAsCisgICAg
MHgzODU3MDAwMCwKKyAgICAweDM4NTcyMDAwLAorICAgIDB4Mzg1NzQwMDAsCisgICAgMHgzODU3
NjAwMCwKKyAgICAweDM4NTc4MDAwLAorICAgIDB4Mzg1N2EwMDAsCisgICAgMHgzODU3YzAwMCwK
KyAgICAweDM4NTdlMDAwLAorICAgIDB4Mzg1ODAwMDAsCisgICAgMHgzODU4MjAwMCwKKyAgICAw
eDM4NTg0MDAwLAorICAgIDB4Mzg1ODYwMDAsCisgICAgMHgzODU4ODAwMCwKKyAgICAweDM4NThh
MDAwLAorICAgIDB4Mzg1OGMwMDAsCisgICAgMHgzODU4ZTAwMCwKKyAgICAweDM4NTkwMDAwLAor
ICAgIDB4Mzg1OTIwMDAsCisgICAgMHgzODU5NDAwMCwKKyAgICAweDM4NTk2MDAwLAorICAgIDB4
Mzg1OTgwMDAsCisgICAgMHgzODU5YTAwMCwKKyAgICAweDM4NTljMDAwLAorICAgIDB4Mzg1OWUw
MDAsCisgICAgMHgzODVhMDAwMCwKKyAgICAweDM4NWEyMDAwLAorICAgIDB4Mzg1YTQwMDAsCisg
ICAgMHgzODVhNjAwMCwKKyAgICAweDM4NWE4MDAwLAorICAgIDB4Mzg1YWEwMDAsCisgICAgMHgz
ODVhYzAwMCwKKyAgICAweDM4NWFlMDAwLAorICAgIDB4Mzg1YjAwMDAsCisgICAgMHgzODViMjAw
MCwKKyAgICAweDM4NWI0MDAwLAorICAgIDB4Mzg1YjYwMDAsCisgICAgMHgzODViODAwMCwKKyAg
ICAweDM4NWJhMDAwLAorICAgIDB4Mzg1YmMwMDAsCisgICAgMHgzODViZTAwMCwKKyAgICAweDM4
NWMwMDAwLAorICAgIDB4Mzg1YzIwMDAsCisgICAgMHgzODVjNDAwMCwKKyAgICAweDM4NWM2MDAw
LAorICAgIDB4Mzg1YzgwMDAsCisgICAgMHgzODVjYTAwMCwKKyAgICAweDM4NWNjMDAwLAorICAg
IDB4Mzg1Y2UwMDAsCisgICAgMHgzODVkMDAwMCwKKyAgICAweDM4NWQyMDAwLAorICAgIDB4Mzg1
ZDQwMDAsCisgICAgMHgzODVkNjAwMCwKKyAgICAweDM4NWQ4MDAwLAorICAgIDB4Mzg1ZGEwMDAs
CisgICAgMHgzODVkYzAwMCwKKyAgICAweDM4NWRlMDAwLAorICAgIDB4Mzg1ZTAwMDAsCisgICAg
MHgzODVlMjAwMCwKKyAgICAweDM4NWU0MDAwLAorICAgIDB4Mzg1ZTYwMDAsCisgICAgMHgzODVl
ODAwMCwKKyAgICAweDM4NWVhMDAwLAorICAgIDB4Mzg1ZWMwMDAsCisgICAgMHgzODVlZTAwMCwK
KyAgICAweDM4NWYwMDAwLAorICAgIDB4Mzg1ZjIwMDAsCisgICAgMHgzODVmNDAwMCwKKyAgICAw
eDM4NWY2MDAwLAorICAgIDB4Mzg1ZjgwMDAsCisgICAgMHgzODVmYTAwMCwKKyAgICAweDM4NWZj
MDAwLAorICAgIDB4Mzg1ZmUwMDAsCisgICAgMHgzODYwMDAwMCwKKyAgICAweDM4NjAyMDAwLAor
ICAgIDB4Mzg2MDQwMDAsCisgICAgMHgzODYwNjAwMCwKKyAgICAweDM4NjA4MDAwLAorICAgIDB4
Mzg2MGEwMDAsCisgICAgMHgzODYwYzAwMCwKKyAgICAweDM4NjBlMDAwLAorICAgIDB4Mzg2MTAw
MDAsCisgICAgMHgzODYxMjAwMCwKKyAgICAweDM4NjE0MDAwLAorICAgIDB4Mzg2MTYwMDAsCisg
ICAgMHgzODYxODAwMCwKKyAgICAweDM4NjFhMDAwLAorICAgIDB4Mzg2MWMwMDAsCisgICAgMHgz
ODYxZTAwMCwKKyAgICAweDM4NjIwMDAwLAorICAgIDB4Mzg2MjIwMDAsCisgICAgMHgzODYyNDAw
MCwKKyAgICAweDM4NjI2MDAwLAorICAgIDB4Mzg2MjgwMDAsCisgICAgMHgzODYyYTAwMCwKKyAg
ICAweDM4NjJjMDAwLAorICAgIDB4Mzg2MmUwMDAsCisgICAgMHgzODYzMDAwMCwKKyAgICAweDM4
NjMyMDAwLAorICAgIDB4Mzg2MzQwMDAsCisgICAgMHgzODYzNjAwMCwKKyAgICAweDM4NjM4MDAw
LAorICAgIDB4Mzg2M2EwMDAsCisgICAgMHgzODYzYzAwMCwKKyAgICAweDM4NjNlMDAwLAorICAg
IDB4Mzg2NDAwMDAsCisgICAgMHgzODY0MjAwMCwKKyAgICAweDM4NjQ0MDAwLAorICAgIDB4Mzg2
NDYwMDAsCisgICAgMHgzODY0ODAwMCwKKyAgICAweDM4NjRhMDAwLAorICAgIDB4Mzg2NGMwMDAs
CisgICAgMHgzODY0ZTAwMCwKKyAgICAweDM4NjUwMDAwLAorICAgIDB4Mzg2NTIwMDAsCisgICAg
MHgzODY1NDAwMCwKKyAgICAweDM4NjU2MDAwLAorICAgIDB4Mzg2NTgwMDAsCisgICAgMHgzODY1
YTAwMCwKKyAgICAweDM4NjVjMDAwLAorICAgIDB4Mzg2NWUwMDAsCisgICAgMHgzODY2MDAwMCwK
KyAgICAweDM4NjYyMDAwLAorICAgIDB4Mzg2NjQwMDAsCisgICAgMHgzODY2NjAwMCwKKyAgICAw
eDM4NjY4MDAwLAorICAgIDB4Mzg2NmEwMDAsCisgICAgMHgzODY2YzAwMCwKKyAgICAweDM4NjZl
MDAwLAorICAgIDB4Mzg2NzAwMDAsCisgICAgMHgzODY3MjAwMCwKKyAgICAweDM4Njc0MDAwLAor
ICAgIDB4Mzg2NzYwMDAsCisgICAgMHgzODY3ODAwMCwKKyAgICAweDM4NjdhMDAwLAorICAgIDB4
Mzg2N2MwMDAsCisgICAgMHgzODY3ZTAwMCwKKyAgICAweDM4NjgwMDAwLAorICAgIDB4Mzg2ODIw
MDAsCisgICAgMHgzODY4NDAwMCwKKyAgICAweDM4Njg2MDAwLAorICAgIDB4Mzg2ODgwMDAsCisg
ICAgMHgzODY4YTAwMCwKKyAgICAweDM4NjhjMDAwLAorICAgIDB4Mzg2OGUwMDAsCisgICAgMHgz
ODY5MDAwMCwKKyAgICAweDM4NjkyMDAwLAorICAgIDB4Mzg2OTQwMDAsCisgICAgMHgzODY5NjAw
MCwKKyAgICAweDM4Njk4MDAwLAorICAgIDB4Mzg2OWEwMDAsCisgICAgMHgzODY5YzAwMCwKKyAg
ICAweDM4NjllMDAwLAorICAgIDB4Mzg2YTAwMDAsCisgICAgMHgzODZhMjAwMCwKKyAgICAweDM4
NmE0MDAwLAorICAgIDB4Mzg2YTYwMDAsCisgICAgMHgzODZhODAwMCwKKyAgICAweDM4NmFhMDAw
LAorICAgIDB4Mzg2YWMwMDAsCisgICAgMHgzODZhZTAwMCwKKyAgICAweDM4NmIwMDAwLAorICAg
IDB4Mzg2YjIwMDAsCisgICAgMHgzODZiNDAwMCwKKyAgICAweDM4NmI2MDAwLAorICAgIDB4Mzg2
YjgwMDAsCisgICAgMHgzODZiYTAwMCwKKyAgICAweDM4NmJjMDAwLAorICAgIDB4Mzg2YmUwMDAs
CisgICAgMHgzODZjMDAwMCwKKyAgICAweDM4NmMyMDAwLAorICAgIDB4Mzg2YzQwMDAsCisgICAg
MHgzODZjNjAwMCwKKyAgICAweDM4NmM4MDAwLAorICAgIDB4Mzg2Y2EwMDAsCisgICAgMHgzODZj
YzAwMCwKKyAgICAweDM4NmNlMDAwLAorICAgIDB4Mzg2ZDAwMDAsCisgICAgMHgzODZkMjAwMCwK
KyAgICAweDM4NmQ0MDAwLAorICAgIDB4Mzg2ZDYwMDAsCisgICAgMHgzODZkODAwMCwKKyAgICAw
eDM4NmRhMDAwLAorICAgIDB4Mzg2ZGMwMDAsCisgICAgMHgzODZkZTAwMCwKKyAgICAweDM4NmUw
MDAwLAorICAgIDB4Mzg2ZTIwMDAsCisgICAgMHgzODZlNDAwMCwKKyAgICAweDM4NmU2MDAwLAor
ICAgIDB4Mzg2ZTgwMDAsCisgICAgMHgzODZlYTAwMCwKKyAgICAweDM4NmVjMDAwLAorICAgIDB4
Mzg2ZWUwMDAsCisgICAgMHgzODZmMDAwMCwKKyAgICAweDM4NmYyMDAwLAorICAgIDB4Mzg2ZjQw
MDAsCisgICAgMHgzODZmNjAwMCwKKyAgICAweDM4NmY4MDAwLAorICAgIDB4Mzg2ZmEwMDAsCisg
ICAgMHgzODZmYzAwMCwKKyAgICAweDM4NmZlMDAwLAorICAgIDB4Mzg3MDAwMDAsCisgICAgMHgz
ODcwMjAwMCwKKyAgICAweDM4NzA0MDAwLAorICAgIDB4Mzg3MDYwMDAsCisgICAgMHgzODcwODAw
MCwKKyAgICAweDM4NzBhMDAwLAorICAgIDB4Mzg3MGMwMDAsCisgICAgMHgzODcwZTAwMCwKKyAg
ICAweDM4NzEwMDAwLAorICAgIDB4Mzg3MTIwMDAsCisgICAgMHgzODcxNDAwMCwKKyAgICAweDM4
NzE2MDAwLAorICAgIDB4Mzg3MTgwMDAsCisgICAgMHgzODcxYTAwMCwKKyAgICAweDM4NzFjMDAw
LAorICAgIDB4Mzg3MWUwMDAsCisgICAgMHgzODcyMDAwMCwKKyAgICAweDM4NzIyMDAwLAorICAg
IDB4Mzg3MjQwMDAsCisgICAgMHgzODcyNjAwMCwKKyAgICAweDM4NzI4MDAwLAorICAgIDB4Mzg3
MmEwMDAsCisgICAgMHgzODcyYzAwMCwKKyAgICAweDM4NzJlMDAwLAorICAgIDB4Mzg3MzAwMDAs
CisgICAgMHgzODczMjAwMCwKKyAgICAweDM4NzM0MDAwLAorICAgIDB4Mzg3MzYwMDAsCisgICAg
MHgzODczODAwMCwKKyAgICAweDM4NzNhMDAwLAorICAgIDB4Mzg3M2MwMDAsCisgICAgMHgzODcz
ZTAwMCwKKyAgICAweDM4NzQwMDAwLAorICAgIDB4Mzg3NDIwMDAsCisgICAgMHgzODc0NDAwMCwK
KyAgICAweDM4NzQ2MDAwLAorICAgIDB4Mzg3NDgwMDAsCisgICAgMHgzODc0YTAwMCwKKyAgICAw
eDM4NzRjMDAwLAorICAgIDB4Mzg3NGUwMDAsCisgICAgMHgzODc1MDAwMCwKKyAgICAweDM4NzUy
MDAwLAorICAgIDB4Mzg3NTQwMDAsCisgICAgMHgzODc1NjAwMCwKKyAgICAweDM4NzU4MDAwLAor
ICAgIDB4Mzg3NWEwMDAsCisgICAgMHgzODc1YzAwMCwKKyAgICAweDM4NzVlMDAwLAorICAgIDB4
Mzg3NjAwMDAsCisgICAgMHgzODc2MjAwMCwKKyAgICAweDM4NzY0MDAwLAorICAgIDB4Mzg3NjYw
MDAsCisgICAgMHgzODc2ODAwMCwKKyAgICAweDM4NzZhMDAwLAorICAgIDB4Mzg3NmMwMDAsCisg
ICAgMHgzODc2ZTAwMCwKKyAgICAweDM4NzcwMDAwLAorICAgIDB4Mzg3NzIwMDAsCisgICAgMHgz
ODc3NDAwMCwKKyAgICAweDM4Nzc2MDAwLAorICAgIDB4Mzg3NzgwMDAsCisgICAgMHgzODc3YTAw
MCwKKyAgICAweDM4NzdjMDAwLAorICAgIDB4Mzg3N2UwMDAsCisgICAgMHgzODc4MDAwMCwKKyAg
ICAweDM4NzgyMDAwLAorICAgIDB4Mzg3ODQwMDAsCisgICAgMHgzODc4NjAwMCwKKyAgICAweDM4
Nzg4MDAwLAorICAgIDB4Mzg3OGEwMDAsCisgICAgMHgzODc4YzAwMCwKKyAgICAweDM4NzhlMDAw
LAorICAgIDB4Mzg3OTAwMDAsCisgICAgMHgzODc5MjAwMCwKKyAgICAweDM4Nzk0MDAwLAorICAg
IDB4Mzg3OTYwMDAsCisgICAgMHgzODc5ODAwMCwKKyAgICAweDM4NzlhMDAwLAorICAgIDB4Mzg3
OWMwMDAsCisgICAgMHgzODc5ZTAwMCwKKyAgICAweDM4N2EwMDAwLAorICAgIDB4Mzg3YTIwMDAs
CisgICAgMHgzODdhNDAwMCwKKyAgICAweDM4N2E2MDAwLAorICAgIDB4Mzg3YTgwMDAsCisgICAg
MHgzODdhYTAwMCwKKyAgICAweDM4N2FjMDAwLAorICAgIDB4Mzg3YWUwMDAsCisgICAgMHgzODdi
MDAwMCwKKyAgICAweDM4N2IyMDAwLAorICAgIDB4Mzg3YjQwMDAsCisgICAgMHgzODdiNjAwMCwK
KyAgICAweDM4N2I4MDAwLAorICAgIDB4Mzg3YmEwMDAsCisgICAgMHgzODdiYzAwMCwKKyAgICAw
eDM4N2JlMDAwLAorICAgIDB4Mzg3YzAwMDAsCisgICAgMHgzODdjMjAwMCwKKyAgICAweDM4N2M0
MDAwLAorICAgIDB4Mzg3YzYwMDAsCisgICAgMHgzODdjODAwMCwKKyAgICAweDM4N2NhMDAwLAor
ICAgIDB4Mzg3Y2MwMDAsCisgICAgMHgzODdjZTAwMCwKKyAgICAweDM4N2QwMDAwLAorICAgIDB4
Mzg3ZDIwMDAsCisgICAgMHgzODdkNDAwMCwKKyAgICAweDM4N2Q2MDAwLAorICAgIDB4Mzg3ZDgw
MDAsCisgICAgMHgzODdkYTAwMCwKKyAgICAweDM4N2RjMDAwLAorICAgIDB4Mzg3ZGUwMDAsCisg
ICAgMHgzODdlMDAwMCwKKyAgICAweDM4N2UyMDAwLAorICAgIDB4Mzg3ZTQwMDAsCisgICAgMHgz
ODdlNjAwMCwKKyAgICAweDM4N2U4MDAwLAorICAgIDB4Mzg3ZWEwMDAsCisgICAgMHgzODdlYzAw
MCwKKyAgICAweDM4N2VlMDAwLAorICAgIDB4Mzg3ZjAwMDAsCisgICAgMHgzODdmMjAwMCwKKyAg
ICAweDM4N2Y0MDAwLAorICAgIDB4Mzg3ZjYwMDAsCisgICAgMHgzODdmODAwMCwKKyAgICAweDM4
N2ZhMDAwLAorICAgIDB4Mzg3ZmMwMDAsCisgICAgMHgzODdmZTAwMCwKK307CisKK2NvbnN0IHN0
YXRpYyB1bnNpZ25lZCBnX2V4cG9uZW50WzY0XSA9IHsKKyAgICAweDAwMDAwMDAwLAorICAgIDB4
MDA4MDAwMDAsCisgICAgMHgwMTAwMDAwMCwKKyAgICAweDAxODAwMDAwLAorICAgIDB4MDIwMDAw
MDAsCisgICAgMHgwMjgwMDAwMCwKKyAgICAweDAzMDAwMDAwLAorICAgIDB4MDM4MDAwMDAsCisg
ICAgMHgwNDAwMDAwMCwKKyAgICAweDA0ODAwMDAwLAorICAgIDB4MDUwMDAwMDAsCisgICAgMHgw
NTgwMDAwMCwKKyAgICAweDA2MDAwMDAwLAorICAgIDB4MDY4MDAwMDAsCisgICAgMHgwNzAwMDAw
MCwKKyAgICAweDA3ODAwMDAwLAorICAgIDB4MDgwMDAwMDAsCisgICAgMHgwODgwMDAwMCwKKyAg
ICAweDA5MDAwMDAwLAorICAgIDB4MDk4MDAwMDAsCisgICAgMHgwYTAwMDAwMCwKKyAgICAweDBh
ODAwMDAwLAorICAgIDB4MGIwMDAwMDAsCisgICAgMHgwYjgwMDAwMCwKKyAgICAweDBjMDAwMDAw
LAorICAgIDB4MGM4MDAwMDAsCisgICAgMHgwZDAwMDAwMCwKKyAgICAweDBkODAwMDAwLAorICAg
IDB4MGUwMDAwMDAsCisgICAgMHgwZTgwMDAwMCwKKyAgICAweDBmMDAwMDAwLAorICAgIDB4NDc4
MDAwMDAsCisgICAgMHg4MDAwMDAwMCwKKyAgICAweDgwODAwMDAwLAorICAgIDB4ODEwMDAwMDAs
CisgICAgMHg4MTgwMDAwMCwKKyAgICAweDgyMDAwMDAwLAorICAgIDB4ODI4MDAwMDAsCisgICAg
MHg4MzAwMDAwMCwKKyAgICAweDgzODAwMDAwLAorICAgIDB4ODQwMDAwMDAsCisgICAgMHg4NDgw
MDAwMCwKKyAgICAweDg1MDAwMDAwLAorICAgIDB4ODU4MDAwMDAsCisgICAgMHg4NjAwMDAwMCwK
KyAgICAweDg2ODAwMDAwLAorICAgIDB4ODcwMDAwMDAsCisgICAgMHg4NzgwMDAwMCwKKyAgICAw
eDg4MDAwMDAwLAorICAgIDB4ODg4MDAwMDAsCisgICAgMHg4OTAwMDAwMCwKKyAgICAweDg5ODAw
MDAwLAorICAgIDB4OGEwMDAwMDAsCisgICAgMHg4YTgwMDAwMCwKKyAgICAweDhiMDAwMDAwLAor
ICAgIDB4OGI4MDAwMDAsCisgICAgMHg4YzAwMDAwMCwKKyAgICAweDhjODAwMDAwLAorICAgIDB4
OGQwMDAwMDAsCisgICAgMHg4ZDgwMDAwMCwKKyAgICAweDhlMDAwMDAwLAorICAgIDB4OGU4MDAw
MDAsCisgICAgMHg4ZjAwMDAwMCwKKyAgICAweGM3ODAwMDAwLAorfTsKKworY29uc3Qgc3RhdGlj
IHVuc2lnbmVkIGdfb2Zmc2V0WzY0XSA9IHsKKyAgICAweDAwMDAwMDAwLAorICAgIDB4MDAwMDA0
MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisg
ICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgw
MDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQw
MCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAg
ICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAw
MDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAw
LAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAg
IDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAw
MDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAs
CisgICAgMHgwMDAwMDAwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAg
MHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAw
MDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwK
KyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAw
eDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAw
NDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAor
ICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4
MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0
MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisg
ICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorfTsKKworZmxvYXQgZmxvYXQxNlRvRmxv
YXQzMih1bnNpZ25lZCBzaG9ydCBoKQoreworICAgIHVuc2lnbmVkIGkzMiA9IGdfbWFudGlzc2Fb
Z19vZmZzZXRbaCA+PiAxMF0gKyAoaCAmIDB4M2ZmKV0gKyBnX2V4cG9uZW50W2ggPj4gMTBdOwor
ICAgIHJldHVybiAqKGZsb2F0KikgJmkzMjsKK30KK30KKwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GbG9hdDE2VG9GbG9hdDMyLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRmxvYXQxNlRvRmxvYXQzMi5w
eQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
RmxvYXQxNlRvRmxvYXQzMi5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OCBAQAorIyBDb3B5
cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIwor
CisjIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyBhIGZ1bmN0aW9uIHRoYXQgY29udmVydHMgMTYtYml0
IHByZWNpc2lvbiBmbG9hdGluZworIyBwb2ludCBudW1iZXJzIHRvIDMyLWJpdC4KKyMgSXQgaXMg
YmFzZWQgb24gZnRwOi8vZnRwLmZveC10b29sa2l0Lm9yZy9wdWIvZmFzdGhhbGZmbG9hdGNvbnZl
cnNpb24ucGRmLgorCitkZWYgY29udmVydE1hbnRpc3NhKGkpOgorICAgIGlmIGkgPT0gMDoKKyAg
ICAgICAgcmV0dXJuIDAKKyAgICBlbGlmIGkgPCAxMDI0OgorICAgICAgICBtID0gaSA8PCAxMwor
ICAgICAgICBlID0gMAorICAgICAgICB3aGlsZSBub3QgKG0gJiAweDAwODAwMDAwKToKKyAgICAg
ICAgICAgIGUgLT0gMHgwMDgwMDAwMAorICAgICAgICAgICAgbSA9IG0gPDwgMQorICAgICAgICBt
ICY9IH4weDAwODAwMDAwCisgICAgICAgIGUgKz0gMHgzODgwMDAwMAorICAgICAgICByZXR1cm4g
bSB8IGUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gMHgzODAwMDAwMCArICgoaSAtIDEwMjQp
IDw8IDEzKQorCitkZWYgY29udmVydEV4cG9uZW50KGkpOgorICAgIGlmIGkgPT0gMDoKKyAgICAg
ICAgcmV0dXJuIDAKKyAgICBlbGlmIGkgaW4gcmFuZ2UoMSwgMzEpOgorICAgICAgICByZXR1cm4g
aSA8PCAyMworICAgIGVsaWYgaSA9PSAzMToKKyAgICAgICAgcmV0dXJuIDB4NDc4MDAwMDAKKyAg
ICBlbGlmIGkgPT0gMzI6CisgICAgICAgIHJldHVybiAweDgwMDAwMDAwCisgICAgZWxpZiBpIGlu
IHJhbmdlKDMzLCA2Myk6CisgICAgICAgIHJldHVybiAweDgwMDAwMDAwICsgKChpIC0gMzIpIDw8
IDIzKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAweEM3ODAwMDAwCisKK2RlZiBjb252ZXJ0
T2Zmc2V0KGkpOgorICAgIGlmIGkgPT0gMCBvciBpID09IDMyOgorICAgICAgICByZXR1cm4gMAor
ICAgIGVsc2U6CisgICAgICAgIHJldHVybiAxMDI0CisKK3ByaW50ICIiIi8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuCisKK25hbWVzcGFjZSBn
bAoreworIiIiCisKK3ByaW50ICJjb25zdCBzdGF0aWMgdW5zaWduZWQgZ19tYW50aXNzYVsyMDQ4
XSA9IHsiCitmb3IgaSBpbiByYW5nZSgwLCAyMDQ4KToKKyAgICBwcmludCAiICAgICUjMDEweCwi
ICUgY29udmVydE1hbnRpc3NhKGkpCitwcmludCAifTtcbiIKKworcHJpbnQgImNvbnN0IHN0YXRp
YyB1bnNpZ25lZCBnX2V4cG9uZW50WzY0XSA9IHsiCitmb3IgaSBpbiByYW5nZSgwLCA2NCk6Cisg
ICAgcHJpbnQgIiAgICAlIzAxMHgsIiAlIGNvbnZlcnRFeHBvbmVudChpKQorcHJpbnQgIn07XG4i
CisKK3ByaW50ICJjb25zdCBzdGF0aWMgdW5zaWduZWQgZ19vZmZzZXRbNjRdID0geyIKK2ZvciBp
IGluIHJhbmdlKDAsIDY0KToKKyAgICBwcmludCAiICAgICUjMDEweCwiICUgY29udmVydE9mZnNl
dChpKQorcHJpbnQgIn07XG4iCisKK3ByaW50ICIiImZsb2F0IGZsb2F0MTZUb0Zsb2F0MzIodW5z
aWduZWQgc2hvcnQgaCkKK3sKKyAgICB1bnNpZ25lZCBpMzIgPSBnX21hbnRpc3NhW2dfb2Zmc2V0
W2ggPj4gMTBdICsgKGggJiAweDNmZildICsgZ19leHBvbmVudFtoID4+IDEwXTsKKyAgICByZXR1
cm4gKihmbG9hdCopICZpMzI7Cit9Cit9CisiIiIKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAzIEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQu
aCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEZyYW1lYnVmZmVyLmNwcDogSW1wbGVtZW50cyB0
aGUgZ2w6OkZyYW1lYnVmZmVyIGNsYXNzLiBJbXBsZW1lbnRzIEdMIGZyYW1lYnVmZmVyCisvLyBv
YmplY3RzIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0
aW9uIDQuNCBwYWdlIDEwNS4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oIgor
CisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0
aWVzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1RleHR1cmUuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKKworbmFtZXNwYWNlIGdsCit7CisK
K0ZyYW1lYnVmZmVyOjpGcmFtZWJ1ZmZlcihyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKQorICAgIDog
bVJlbmRlcmVyKHJlbmRlcmVyKQoreworICAgIGZvciAodW5zaWduZWQgaW50IGNvbG9yQXR0YWNo
bWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IElNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZF
UlM7IGNvbG9yQXR0YWNobWVudCsrKQorICAgIHsKKyAgICAgICAgbUNvbG9yYnVmZmVyVHlwZXNb
Y29sb3JBdHRhY2htZW50XSA9IEdMX05PTkU7CisgICAgICAgIG1EcmF3QnVmZmVyU3RhdGVzW2Nv
bG9yQXR0YWNobWVudF0gPSBHTF9OT05FOworICAgIH0KKyAgICBtRHJhd0J1ZmZlclN0YXRlc1sw
XSA9IEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVDsKKyAgICBtUmVhZEJ1ZmZlclN0YXRlID0gR0xf
Q09MT1JfQVRUQUNITUVOVDBfRVhUOworCisgICAgbURlcHRoYnVmZmVyVHlwZSA9IEdMX05PTkU7
CisgICAgbVN0ZW5jaWxidWZmZXJUeXBlID0gR0xfTk9ORTsKK30KKworRnJhbWVidWZmZXI6On5G
cmFtZWJ1ZmZlcigpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50ID0g
MDsgY29sb3JBdHRhY2htZW50IDwgSU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUzsgY29s
b3JBdHRhY2htZW50KyspCisgICAgeworICAgICAgICBtQ29sb3JidWZmZXJQb2ludGVyc1tjb2xv
ckF0dGFjaG1lbnRdLnNldChOVUxMKTsKKyAgICB9CisgICAgbURlcHRoYnVmZmVyUG9pbnRlci5z
ZXQoTlVMTCk7CisgICAgbVN0ZW5jaWxidWZmZXJQb2ludGVyLnNldChOVUxMKTsKK30KKworUmVu
ZGVyYnVmZmVyICpGcmFtZWJ1ZmZlcjo6bG9va3VwUmVuZGVyYnVmZmVyKEdMZW51bSB0eXBlLCBH
THVpbnQgaGFuZGxlKSBjb25zdAoreworICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dENvbnRleHQoKTsKKyAgICBSZW5kZXJidWZmZXIgKmJ1ZmZlciA9IE5VTEw7CisKKyAgICBpZiAo
dHlwZSA9PSBHTF9OT05FKQorICAgIHsKKyAgICAgICAgYnVmZmVyID0gTlVMTDsKKyAgICB9Cisg
ICAgZWxzZSBpZiAodHlwZSA9PSBHTF9SRU5ERVJCVUZGRVIpCisgICAgeworICAgICAgICBidWZm
ZXIgPSBjb250ZXh0LT5nZXRSZW5kZXJidWZmZXIoaGFuZGxlKTsKKyAgICB9CisgICAgZWxzZSBp
ZiAoSXNJbnRlcm5hbFRleHR1cmVUYXJnZXQodHlwZSkpCisgICAgeworICAgICAgICBidWZmZXIg
PSBjb250ZXh0LT5nZXRUZXh0dXJlKGhhbmRsZSktPmdldFJlbmRlcmJ1ZmZlcih0eXBlKTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEZyYW1lYnVmZmVyOjpzZXRDb2xvcmJ1ZmZlcih1
bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50LCBHTGVudW0gdHlwZSwgR0x1aW50IGNvbG9yYnVm
ZmVyKQoreworICAgIEFTU0VSVChjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9NQVhf
RFJBV19CVUZGRVJTKTsKKyAgICBtQ29sb3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdID0g
KGNvbG9yYnVmZmVyICE9IDApID8gdHlwZSA6IEdMX05PTkU7CisgICAgbUNvbG9yYnVmZmVyUG9p
bnRlcnNbY29sb3JBdHRhY2htZW50XS5zZXQobG9va3VwUmVuZGVyYnVmZmVyKHR5cGUsIGNvbG9y
YnVmZmVyKSk7Cit9CisKK3ZvaWQgRnJhbWVidWZmZXI6OnNldERlcHRoYnVmZmVyKEdMZW51bSB0
eXBlLCBHTHVpbnQgZGVwdGhidWZmZXIpCit7CisgICAgbURlcHRoYnVmZmVyVHlwZSA9IChkZXB0
aGJ1ZmZlciAhPSAwKSA/IHR5cGUgOiBHTF9OT05FOworICAgIG1EZXB0aGJ1ZmZlclBvaW50ZXIu
c2V0KGxvb2t1cFJlbmRlcmJ1ZmZlcih0eXBlLCBkZXB0aGJ1ZmZlcikpOworfQorCit2b2lkIEZy
YW1lYnVmZmVyOjpzZXRTdGVuY2lsYnVmZmVyKEdMZW51bSB0eXBlLCBHTHVpbnQgc3RlbmNpbGJ1
ZmZlcikKK3sKKyAgICBtU3RlbmNpbGJ1ZmZlclR5cGUgPSAoc3RlbmNpbGJ1ZmZlciAhPSAwKSA/
IHR5cGUgOiBHTF9OT05FOworICAgIG1TdGVuY2lsYnVmZmVyUG9pbnRlci5zZXQobG9va3VwUmVu
ZGVyYnVmZmVyKHR5cGUsIHN0ZW5jaWxidWZmZXIpKTsKK30KKwordm9pZCBGcmFtZWJ1ZmZlcjo6
ZGV0YWNoVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBj
b2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9NQVhf
RFJBV19CVUZGRVJTOyBjb2xvckF0dGFjaG1lbnQrKykKKyAgICB7CisgICAgICAgIGlmIChtQ29s
b3JidWZmZXJQb2ludGVyc1tjb2xvckF0dGFjaG1lbnRdLmlkKCkgPT0gdGV4dHVyZSAmJiBJc0lu
dGVybmFsVGV4dHVyZVRhcmdldChtQ29sb3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdKSkK
KyAgICAgICAgeworICAgICAgICAgICAgbUNvbG9yYnVmZmVyVHlwZXNbY29sb3JBdHRhY2htZW50
XSA9IEdMX05PTkU7CisgICAgICAgICAgICBtQ29sb3JidWZmZXJQb2ludGVyc1tjb2xvckF0dGFj
aG1lbnRdLnNldChOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtRGVwdGhidWZm
ZXJQb2ludGVyLmlkKCkgPT0gdGV4dHVyZSAmJiBJc0ludGVybmFsVGV4dHVyZVRhcmdldChtRGVw
dGhidWZmZXJUeXBlKSkKKyAgICB7CisgICAgICAgIG1EZXB0aGJ1ZmZlclR5cGUgPSBHTF9OT05F
OworICAgICAgICBtRGVwdGhidWZmZXJQb2ludGVyLnNldChOVUxMKTsKKyAgICB9CisKKyAgICBp
ZiAobVN0ZW5jaWxidWZmZXJQb2ludGVyLmlkKCkgPT0gdGV4dHVyZSAmJiBJc0ludGVybmFsVGV4
dHVyZVRhcmdldChtU3RlbmNpbGJ1ZmZlclR5cGUpKQorICAgIHsKKyAgICAgICAgbVN0ZW5jaWxi
dWZmZXJUeXBlID0gR0xfTk9ORTsKKyAgICAgICAgbVN0ZW5jaWxidWZmZXJQb2ludGVyLnNldChO
VUxMKTsKKyAgICB9Cit9CisKK3ZvaWQgRnJhbWVidWZmZXI6OmRldGFjaFJlbmRlcmJ1ZmZlcihH
THVpbnQgcmVuZGVyYnVmZmVyKQoreworICAgIGZvciAodW5zaWduZWQgaW50IGNvbG9yQXR0YWNo
bWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IElNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZF
UlM7IGNvbG9yQXR0YWNobWVudCsrKQorICAgIHsKKyAgICAgICAgaWYgKG1Db2xvcmJ1ZmZlclBv
aW50ZXJzW2NvbG9yQXR0YWNobWVudF0uaWQoKSA9PSByZW5kZXJidWZmZXIgJiYgbUNvbG9yYnVm
ZmVyVHlwZXNbY29sb3JBdHRhY2htZW50XSA9PSBHTF9SRU5ERVJCVUZGRVIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9yQXR0YWNobWVudF0gPSBHTF9OT05F
OworICAgICAgICAgICAgbUNvbG9yYnVmZmVyUG9pbnRlcnNbY29sb3JBdHRhY2htZW50XS5zZXQo
TlVMTCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobURlcHRoYnVmZmVyUG9pbnRlci5p
ZCgpID09IHJlbmRlcmJ1ZmZlciAmJiBtRGVwdGhidWZmZXJUeXBlID09IEdMX1JFTkRFUkJVRkZF
UikKKyAgICB7CisgICAgICAgIG1EZXB0aGJ1ZmZlclR5cGUgPSBHTF9OT05FOworICAgICAgICBt
RGVwdGhidWZmZXJQb2ludGVyLnNldChOVUxMKTsKKyAgICB9CisKKyAgICBpZiAobVN0ZW5jaWxi
dWZmZXJQb2ludGVyLmlkKCkgPT0gcmVuZGVyYnVmZmVyICYmIG1TdGVuY2lsYnVmZmVyVHlwZSA9
PSBHTF9SRU5ERVJCVUZGRVIpCisgICAgeworICAgICAgICBtU3RlbmNpbGJ1ZmZlclR5cGUgPSBH
TF9OT05FOworICAgICAgICBtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuc2V0KE5VTEwpOworICAgIH0K
K30KKwordW5zaWduZWQgaW50IEZyYW1lYnVmZmVyOjpnZXRSZW5kZXJUYXJnZXRTZXJpYWwodW5z
aWduZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29uc3QKK3sKKyAgICBBU1NFUlQoY29sb3JBdHRh
Y2htZW50IDwgSU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUyk7CisKKyAgICBSZW5kZXJi
dWZmZXIgKmNvbG9yYnVmZmVyID0gbUNvbG9yYnVmZmVyUG9pbnRlcnNbY29sb3JBdHRhY2htZW50
XS5nZXQoKTsKKworICAgIGlmIChjb2xvcmJ1ZmZlcikKKyAgICB7CisgICAgICAgIHJldHVybiBj
b2xvcmJ1ZmZlci0+Z2V0U2VyaWFsKCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3Vu
c2lnbmVkIGludCBGcmFtZWJ1ZmZlcjo6Z2V0RGVwdGhidWZmZXJTZXJpYWwoKSBjb25zdAorewor
ICAgIFJlbmRlcmJ1ZmZlciAqZGVwdGhidWZmZXIgPSBtRGVwdGhidWZmZXJQb2ludGVyLmdldCgp
OworCisgICAgaWYgKGRlcHRoYnVmZmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRlcHRoYnVm
ZmVyLT5nZXRTZXJpYWwoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQg
aW50IEZyYW1lYnVmZmVyOjpnZXRTdGVuY2lsYnVmZmVyU2VyaWFsKCkgY29uc3QKK3sKKyAgICBS
ZW5kZXJidWZmZXIgKnN0ZW5jaWxidWZmZXIgPSBtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuZ2V0KCk7
CisKKyAgICBpZiAoc3RlbmNpbGJ1ZmZlcikKKyAgICB7CisgICAgICAgIHJldHVybiBzdGVuY2ls
YnVmZmVyLT5nZXRTZXJpYWwoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworUmVuZGVy
YnVmZmVyICpGcmFtZWJ1ZmZlcjo6Z2V0Q29sb3JidWZmZXIodW5zaWduZWQgaW50IGNvbG9yQXR0
YWNobWVudCkgY29uc3QKK3sKKyAgICBBU1NFUlQoY29sb3JBdHRhY2htZW50IDwgSU1QTEVNRU5U
QVRJT05fTUFYX0RSQVdfQlVGRkVSUyk7CisgICAgcmV0dXJuIG1Db2xvcmJ1ZmZlclBvaW50ZXJz
W2NvbG9yQXR0YWNobWVudF0uZ2V0KCk7Cit9CisKK1JlbmRlcmJ1ZmZlciAqRnJhbWVidWZmZXI6
OmdldERlcHRoYnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbURlcHRoYnVmZmVyUG9pbnRl
ci5nZXQoKTsKK30KKworUmVuZGVyYnVmZmVyICpGcmFtZWJ1ZmZlcjo6Z2V0U3RlbmNpbGJ1ZmZl
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGVuY2lsYnVmZmVyUG9pbnRlci5nZXQoKTsKK30K
KworUmVuZGVyYnVmZmVyICpGcmFtZWJ1ZmZlcjo6Z2V0RGVwdGhPclN0ZW5jaWxidWZmZXIoKSBj
b25zdAoreworICAgIFJlbmRlcmJ1ZmZlciAqZGVwdGhzdGVuY2lsYnVmZmVyID0gbURlcHRoYnVm
ZmVyUG9pbnRlci5nZXQoKTsKKyAgICAKKyAgICBpZiAoIWRlcHRoc3RlbmNpbGJ1ZmZlcikKKyAg
ICB7CisgICAgICAgIGRlcHRoc3RlbmNpbGJ1ZmZlciA9IG1TdGVuY2lsYnVmZmVyUG9pbnRlci5n
ZXQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZGVwdGhzdGVuY2lsYnVmZmVyOworfQorCitSZW5k
ZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpnZXRSZWFkQ29sb3JidWZmZXIoKSBjb25zdAoreworICAg
IC8vIFdpbGwgcmVxdWlyZSBtb3JlIGxvZ2ljIGlmIGdsUmVhZEJ1ZmZlcnMgaXMgc3VwcG9ydGVk
CisgICAgcmV0dXJuIG1Db2xvcmJ1ZmZlclBvaW50ZXJzWzBdLmdldCgpOworfQorCitHTGVudW0g
RnJhbWVidWZmZXI6OmdldFJlYWRDb2xvcmJ1ZmZlclR5cGUoKSBjb25zdAoreworICAgIC8vIFdp
bGwgcmVxdWlyZSBtb3JlIGxvZ2ljIGlmIGdsUmVhZEJ1ZmZlcnMgaXMgc3VwcG9ydGVkCisgICAg
cmV0dXJuIG1Db2xvcmJ1ZmZlclR5cGVzWzBdOworfQorCitSZW5kZXJidWZmZXIgKkZyYW1lYnVm
ZmVyOjpnZXRGaXJzdENvbG9yYnVmZmVyKCkgY29uc3QKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGlu
dCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9N
QVhfRFJBV19CVUZGRVJTOyBjb2xvckF0dGFjaG1lbnQrKykKKyAgICB7CisgICAgICAgIGlmICht
Q29sb3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdICE9IEdMX05PTkUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBtQ29sb3JidWZmZXJQb2ludGVyc1tjb2xvckF0dGFjaG1lbnRd
LmdldCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK0dMZW51
bSBGcmFtZWJ1ZmZlcjo6Z2V0Q29sb3JidWZmZXJUeXBlKHVuc2lnbmVkIGludCBjb2xvckF0dGFj
aG1lbnQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGNvbG9yQXR0YWNobWVudCA8IElNUExFTUVOVEFU
SU9OX01BWF9EUkFXX0JVRkZFUlMpOworICAgIHJldHVybiBtQ29sb3JidWZmZXJUeXBlc1tjb2xv
ckF0dGFjaG1lbnRdOworfQorCitHTGVudW0gRnJhbWVidWZmZXI6OmdldERlcHRoYnVmZmVyVHlw
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EZXB0aGJ1ZmZlclR5cGU7Cit9CisKK0dMZW51bSBG
cmFtZWJ1ZmZlcjo6Z2V0U3RlbmNpbGJ1ZmZlclR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBt
U3RlbmNpbGJ1ZmZlclR5cGU7Cit9CisKK0dMdWludCBGcmFtZWJ1ZmZlcjo6Z2V0Q29sb3JidWZm
ZXJIYW5kbGUodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29uc3QKK3sKKyAgICBBU1NF
UlQoY29sb3JBdHRhY2htZW50IDwgSU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUyk7Cisg
ICAgcmV0dXJuIG1Db2xvcmJ1ZmZlclBvaW50ZXJzW2NvbG9yQXR0YWNobWVudF0uaWQoKTsKK30K
KworR0x1aW50IEZyYW1lYnVmZmVyOjpnZXREZXB0aGJ1ZmZlckhhbmRsZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1EZXB0aGJ1ZmZlclBvaW50ZXIuaWQoKTsKK30KKworR0x1aW50IEZyYW1lYnVm
ZmVyOjpnZXRTdGVuY2lsYnVmZmVySGFuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0ZW5j
aWxidWZmZXJQb2ludGVyLmlkKCk7Cit9CisKK0dMZW51bSBGcmFtZWJ1ZmZlcjo6Z2V0RHJhd0J1
ZmZlclN0YXRlKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1EcmF3QnVmZmVyU3RhdGVzW2NvbG9yQXR0YWNobWVudF07Cit9CisKK3ZvaWQgRnJhbWVi
dWZmZXI6OnNldERyYXdCdWZmZXJTdGF0ZSh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50LCBH
TGVudW0gZHJhd0J1ZmZlcikKK3sKKyAgICBtRHJhd0J1ZmZlclN0YXRlc1tjb2xvckF0dGFjaG1l
bnRdID0gZHJhd0J1ZmZlcjsKK30KKworYm9vbCBGcmFtZWJ1ZmZlcjo6aXNFbmFibGVkQ29sb3JB
dHRhY2htZW50KHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQpIGNvbnN0Cit7CisgICAgcmV0
dXJuIChtQ29sb3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdICE9IEdMX05PTkUgJiYgbURy
YXdCdWZmZXJTdGF0ZXNbY29sb3JBdHRhY2htZW50XSAhPSBHTF9OT05FKTsKK30KKworYm9vbCBG
cmFtZWJ1ZmZlcjo6aGFzRW5hYmxlZENvbG9yQXR0YWNobWVudCgpIGNvbnN0Cit7CisgICAgZm9y
ICh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgZ2w6
OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM7IGNvbG9yQXR0YWNobWVudCsrKQorICAg
IHsKKyAgICAgICAgaWYgKGlzRW5hYmxlZENvbG9yQXR0YWNobWVudChjb2xvckF0dGFjaG1lbnQp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGcmFtZWJ1ZmZlcjo6aGFzU3RlbmNpbCgp
IGNvbnN0Cit7CisgICAgaWYgKG1TdGVuY2lsYnVmZmVyVHlwZSAhPSBHTF9OT05FKQorICAgIHsK
KyAgICAgICAgY29uc3QgUmVuZGVyYnVmZmVyICpzdGVuY2lsYnVmZmVyT2JqZWN0ID0gZ2V0U3Rl
bmNpbGJ1ZmZlcigpOworCisgICAgICAgIGlmIChzdGVuY2lsYnVmZmVyT2JqZWN0KQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gc3RlbmNpbGJ1ZmZlck9iamVjdC0+Z2V0U3RlbmNpbFNp
emUoKSA+IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgRnJhbWVidWZmZXI6OnVzaW5nRXh0ZW5kZWREcmF3QnVmZmVycygpIGNvbnN0Cit7CisgICAg
Zm9yICh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50ID0gMTsgY29sb3JBdHRhY2htZW50IDwg
SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUzsgY29sb3JBdHRhY2htZW50KyspCisgICAg
eworICAgICAgICBpZiAoaXNFbmFibGVkQ29sb3JBdHRhY2htZW50KGNvbG9yQXR0YWNobWVudCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitHTGVudW0gRnJhbWVidWZmZXI6OmNvbXBsZXRlbmVz
cygpIGNvbnN0Cit7CisgICAgaW50IHdpZHRoID0gMDsKKyAgICBpbnQgaGVpZ2h0ID0gMDsKKyAg
ICBpbnQgY29sb3JidWZmZXJTaXplID0gMDsKKyAgICBpbnQgc2FtcGxlcyA9IC0xOworICAgIGJv
b2wgbWlzc2luZ0F0dGFjaG1lbnQgPSB0cnVlOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgY29s
b3JBdHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgSU1QTEVNRU5UQVRJT05fTUFYX0RS
QVdfQlVGRkVSUzsgY29sb3JBdHRhY2htZW50KyspCisgICAgeworICAgICAgICBpZiAobUNvbG9y
YnVmZmVyVHlwZXNbY29sb3JBdHRhY2htZW50XSAhPSBHTF9OT05FKQorICAgICAgICB7CisgICAg
ICAgICAgICBjb25zdCBSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVyID0gZ2V0Q29sb3JidWZmZXIo
Y29sb3JBdHRhY2htZW50KTsKKworICAgICAgICAgICAgaWYgKCFjb2xvcmJ1ZmZlcikKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVU
RV9BVFRBQ0hNRU5UOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY29sb3JidWZm
ZXItPmdldFdpZHRoKCkgPT0gMCB8fCBjb2xvcmJ1ZmZlci0+Z2V0SGVpZ2h0KCkgPT0gMCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01Q
TEVURV9BVFRBQ0hNRU5UOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobUNvbG9y
YnVmZmVyVHlwZXNbY29sb3JBdHRhY2htZW50XSA9PSBHTF9SRU5ERVJCVUZGRVIpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFnbDo6SXNDb2xvclJlbmRlcmFibGUoY29sb3Ji
dWZmZXItPmdldEludGVybmFsRm9ybWF0KCkpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChJ
c0ludGVybmFsVGV4dHVyZVRhcmdldChtQ29sb3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRd
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCA9
IGNvbG9yYnVmZmVyLT5nZXRJbnRlcm5hbEZvcm1hdCgpOworICAgICAgICAgICAgICAgIEdMZW51
bSBmb3JtYXQgPSBnbDo6RXh0cmFjdEZvcm1hdChpbnRlcm5hbGZvcm1hdCk7CisKKyAgICAgICAg
ICAgICAgICBpZiAoSXNDb21wcmVzc2VkKGZvcm1hdCkgfHwKKyAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0ID09IEdMX0FMUEhBIHx8CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9PSBHTF9M
VU1JTkFOQ0UgfHwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID09IEdMX0xVTUlOQU5DRV9B
TFBIQSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9G
UkFNRUJVRkZFUl9VTlNVUFBPUlRFRDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBib29sIGZpbHRlcmluZywgcmVuZGVyYWJsZTsKKworICAgICAgICAgICAgICAgIGlmICgo
Z2w6OklzRmxvYXQzMkZvcm1hdChpbnRlcm5hbGZvcm1hdCkgJiYgIW1SZW5kZXJlci0+Z2V0Rmxv
YXQzMlRleHR1cmVTdXBwb3J0KCZmaWx0ZXJpbmcsICZyZW5kZXJhYmxlKSkgfHwKKyAgICAgICAg
ICAgICAgICAgICAgKGdsOjpJc0Zsb2F0MTZGb3JtYXQoaW50ZXJuYWxmb3JtYXQpICYmICFtUmVu
ZGVyZXItPmdldEZsb2F0MTZUZXh0dXJlU3VwcG9ydCgmZmlsdGVyaW5nLCAmcmVuZGVyYWJsZSkp
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1F
QlVGRkVSX1VOU1VQUE9SVEVEOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGlmIChnbDo6SXNEZXB0aFRleHR1cmUoaW50ZXJuYWxmb3JtYXQpIHx8IGdsOjpJc1N0ZW5jaWxU
ZXh0dXJlKGludGVybmFsZm9ybWF0KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCFtaXNzaW5nQXR0YWNobWVudCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAvLyBhbGwgY29sb3IgYXR0YWNobWVudHMgbXVzdCBoYXZlIHRoZSBzYW1l
IHdpZHRoIGFuZCBoZWlnaHQKKyAgICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXItPmdldFdp
ZHRoKCkgIT0gd2lkdGggfHwgY29sb3JidWZmZXItPmdldEhlaWdodCgpICE9IGhlaWdodCkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX0RJTUVOU0lPTlM7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgLy8gQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUsIHdoaWNoIEVYVF9kcmF3X2J1
ZmZlcnMgcmVmZXJzIHRvLCByZXF1aXJlcyB0aGF0CisgICAgICAgICAgICAgICAgLy8gYWxsIGNv
bG9yIGF0dGFjaG1lbnRzIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIHNhbXBsZXMgZm9yIHRoZSBG
Qk8gdG8gYmUgY29tcGxldGUuCisgICAgICAgICAgICAgICAgaWYgKGNvbG9yYnVmZmVyLT5nZXRT
YW1wbGVzKCkgIT0gc2FtcGxlcykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0VYVDsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBhbGwgY29sb3IgYXR0YWNobWVu
dHMgYXR0YWNobWVudHMgbXVzdCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBiaXRwbGFuZXMKKyAg
ICAgICAgICAgICAgICBpZiAoZ2w6OkNvbXB1dGVQaXhlbFNpemUoY29sb3JidWZmZXItPmdldElu
dGVybmFsRm9ybWF0KCkpICE9IGNvbG9yYnVmZmVyU2l6ZSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRDsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBEM0QxMSBkb2VzIG5vdCBhbGxv
dyBmb3Igb3ZlcmxhcHBpbmcgUmVuZGVyVGFyZ2V0Vmlld3MsIHNvIGVuc3VyZSB1bmlxdWVuZXNz
CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgcHJldmlvdXNDb2xvckF0dGFjaG1l
bnQgPSAwOyBwcmV2aW91c0NvbG9yQXR0YWNobWVudCA8IGNvbG9yQXR0YWNobWVudDsgcHJldmlv
dXNDb2xvckF0dGFjaG1lbnQrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChtQ29sb3JidWZmZXJQb2ludGVyc1tjb2xvckF0dGFjaG1lbnRdLmdldCgpID09IG1D
b2xvcmJ1ZmZlclBvaW50ZXJzW3ByZXZpb3VzQ29sb3JBdHRhY2htZW50XS5nZXQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1F
QlVGRkVSX1VOU1VQUE9SVEVEOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHdpZHRoID0gY29sb3JidWZmZXItPmdldFdpZHRoKCk7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0ID0gY29sb3JidWZmZXItPmdldEhlaWdodCgpOworICAgICAgICAgICAgICAg
IHNhbXBsZXMgPSBjb2xvcmJ1ZmZlci0+Z2V0U2FtcGxlcygpOworICAgICAgICAgICAgICAgIGNv
bG9yYnVmZmVyU2l6ZSA9IGdsOjpDb21wdXRlUGl4ZWxTaXplKGNvbG9yYnVmZmVyLT5nZXRJbnRl
cm5hbEZvcm1hdCgpKTsKKyAgICAgICAgICAgICAgICBtaXNzaW5nQXR0YWNobWVudCA9IGZhbHNl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgUmVuZGVyYnVm
ZmVyICpkZXB0aGJ1ZmZlciA9IE5VTEw7CisgICAgY29uc3QgUmVuZGVyYnVmZmVyICpzdGVuY2ls
YnVmZmVyID0gTlVMTDsKKworICAgIGlmIChtRGVwdGhidWZmZXJUeXBlICE9IEdMX05PTkUpCisg
ICAgeworICAgICAgICBkZXB0aGJ1ZmZlciA9IGdldERlcHRoYnVmZmVyKCk7CisKKyAgICAgICAg
aWYgKCFkZXB0aGJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1F
QlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChk
ZXB0aGJ1ZmZlci0+Z2V0V2lkdGgoKSA9PSAwIHx8IGRlcHRoYnVmZmVyLT5nZXRIZWlnaHQoKSA9
PSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01Q
TEVURV9BVFRBQ0hNRU5UOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1EZXB0aGJ1ZmZlclR5
cGUgPT0gR0xfUkVOREVSQlVGRkVSKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWdsOjpJ
c0RlcHRoUmVuZGVyYWJsZShkZXB0aGJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKSkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExF
VEVfQVRUQUNITUVOVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlm
IChJc0ludGVybmFsVGV4dHVyZVRhcmdldChtRGVwdGhidWZmZXJUeXBlKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQgPSBkZXB0aGJ1ZmZlci0+Z2V0SW50ZXJu
YWxGb3JtYXQoKTsKKworICAgICAgICAgICAgLy8gZGVwdGggdGV4dHVyZSBhdHRhY2htZW50cyBy
ZXF1aXJlIE9FUy9BTkdMRV9kZXB0aF90ZXh0dXJlCisgICAgICAgICAgICBpZiAoIW1SZW5kZXJl
ci0+Z2V0RGVwdGhUZXh0dXJlU3VwcG9ydCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmICghZ2w6OklzRGVwdGhUZXh0dXJlKGludGVybmFsZm9y
bWF0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZG
RVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAg
IH0KKworICAgICAgICBpZiAobWlzc2luZ0F0dGFjaG1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHdpZHRoID0gZGVwdGhidWZmZXItPmdldFdpZHRoKCk7CisgICAgICAgICAgICBoZWlnaHQg
PSBkZXB0aGJ1ZmZlci0+Z2V0SGVpZ2h0KCk7CisgICAgICAgICAgICBzYW1wbGVzID0gZGVwdGhi
dWZmZXItPmdldFNhbXBsZXMoKTsKKyAgICAgICAgICAgIG1pc3NpbmdBdHRhY2htZW50ID0gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAod2lkdGggIT0gZGVwdGhidWZmZXItPmdl
dFdpZHRoKCkgfHwgaGVpZ2h0ICE9IGRlcHRoYnVmZmVyLT5nZXRIZWlnaHQoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9O
UzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzYW1wbGVzICE9IGRlcHRoYnVmZmVyLT5n
ZXRTYW1wbGVzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0FOR0xFOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKG1TdGVuY2lsYnVmZmVyVHlwZSAhPSBHTF9OT05FKQorICAgIHsKKyAgICAgICAgc3RlbmNp
bGJ1ZmZlciA9IGdldFN0ZW5jaWxidWZmZXIoKTsKKworICAgICAgICBpZiAoIXN0ZW5jaWxidWZm
ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RlbmNpbGJ1ZmZlci0+
Z2V0V2lkdGgoKSA9PSAwIHx8IHN0ZW5jaWxidWZmZXItPmdldEhlaWdodCgpID09IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFD
SE1FTlQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAobVN0ZW5jaWxidWZmZXJUeXBlID09IEdM
X1JFTkRFUkJVRkZFUikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFnbDo6SXNTdGVuY2ls
UmVuZGVyYWJsZShzdGVuY2lsYnVmZmVyLT5nZXRJbnRlcm5hbEZvcm1hdCgpKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9B
VFRBQ0hNRU5UOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKElz
SW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1TdGVuY2lsYnVmZmVyVHlwZSkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEdMaW50IGludGVybmFsZm9ybWF0ID0gc3RlbmNpbGJ1ZmZlci0+Z2V0SW50ZXJu
YWxGb3JtYXQoKTsKKworICAgICAgICAgICAgLy8gdGV4dHVyZSBzdGVuY2lsIGF0dGFjaG1lbnRz
IGNvbWUgYWxvbmcgYXMgcGFydAorICAgICAgICAgICAgLy8gb2YgT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsICsgT0VTL0FOR0xFX2RlcHRoX3RleHR1cmUKKyAgICAgICAgICAgIGlmICghbVJlbmRl
cmVyLT5nZXREZXB0aFRleHR1cmVTdXBwb3J0KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFnbDo6SXNTdGVuY2lsVGV4dHVyZShpbnRlcm5h
bGZvcm1hdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1F
QlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKG1pc3NpbmdBdHRhY2htZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICB3aWR0aCA9IHN0ZW5jaWxidWZmZXItPmdldFdpZHRoKCk7CisgICAgICAgICAgICBo
ZWlnaHQgPSBzdGVuY2lsYnVmZmVyLT5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIHNhbXBsZXMg
PSBzdGVuY2lsYnVmZmVyLT5nZXRTYW1wbGVzKCk7CisgICAgICAgICAgICBtaXNzaW5nQXR0YWNo
bWVudCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHdpZHRoICE9IHN0ZW5j
aWxidWZmZXItPmdldFdpZHRoKCkgfHwgaGVpZ2h0ICE9IHN0ZW5jaWxidWZmZXItPmdldEhlaWdo
dCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01Q
TEVURV9ESU1FTlNJT05TOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNhbXBsZXMgIT0g
c3RlbmNpbGJ1ZmZlci0+Z2V0U2FtcGxlcygpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBMRV9BTkdMRTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIGlmIHdlIGhhdmUgYm90aCBhIGRlcHRoIGFuZCBzdGVuY2lsIGJ1
ZmZlciwgdGhleSBtdXN0IHJlZmVyIHRvIHRoZSBzYW1lIG9iamVjdAorICAgIC8vIHNpbmNlIHdl
IG9ubHkgc3VwcG9ydCBwYWNrZWRfZGVwdGhfc3RlbmNpbCBhbmQgbm90IHNlcGFyYXRlIGRlcHRo
IGFuZCBzdGVuY2lsCisgICAgaWYgKGRlcHRoYnVmZmVyICYmIHN0ZW5jaWxidWZmZXIgJiYgKGRl
cHRoYnVmZmVyICE9IHN0ZW5jaWxidWZmZXIpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX0ZS
QU1FQlVGRkVSX1VOU1VQUE9SVEVEOworICAgIH0KKworICAgIC8vIHdlIG5lZWQgdG8gaGF2ZSBh
dCBsZWFzdCBvbmUgYXR0YWNobWVudCB0byBiZSBjb21wbGV0ZQorICAgIGlmIChtaXNzaW5nQXR0
YWNobWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRF
X01JU1NJTkdfQVRUQUNITUVOVDsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJf
Q09NUExFVEU7Cit9CisKK0RlZmF1bHRGcmFtZWJ1ZmZlcjo6RGVmYXVsdEZyYW1lYnVmZmVyKHJ4
OjpSZW5kZXJlciAqcmVuZGVyZXIsIENvbG9yYnVmZmVyICpjb2xvcmJ1ZmZlciwgRGVwdGhTdGVu
Y2lsYnVmZmVyICpkZXB0aFN0ZW5jaWwpCisgICAgOiBGcmFtZWJ1ZmZlcihyZW5kZXJlcikKK3sK
KyAgICBtQ29sb3JidWZmZXJQb2ludGVyc1swXS5zZXQobmV3IFJlbmRlcmJ1ZmZlcihtUmVuZGVy
ZXIsIDAsIGNvbG9yYnVmZmVyKSk7CisKKyAgICBSZW5kZXJidWZmZXIgKmRlcHRoU3RlbmNpbFJl
bmRlcmJ1ZmZlciA9IG5ldyBSZW5kZXJidWZmZXIobVJlbmRlcmVyLCAwLCBkZXB0aFN0ZW5jaWwp
OworICAgIG1EZXB0aGJ1ZmZlclBvaW50ZXIuc2V0KGRlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlcik7
CisgICAgbVN0ZW5jaWxidWZmZXJQb2ludGVyLnNldChkZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXIp
OworCisgICAgbUNvbG9yYnVmZmVyVHlwZXNbMF0gPSBHTF9SRU5ERVJCVUZGRVI7CisgICAgbURl
cHRoYnVmZmVyVHlwZSA9IChkZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXItPmdldERlcHRoU2l6ZSgp
ICE9IDApID8gR0xfUkVOREVSQlVGRkVSIDogR0xfTk9ORTsKKyAgICBtU3RlbmNpbGJ1ZmZlclR5
cGUgPSAoZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyLT5nZXRTdGVuY2lsU2l6ZSgpICE9IDApID8g
R0xfUkVOREVSQlVGRkVSIDogR0xfTk9ORTsKKworICAgIG1EcmF3QnVmZmVyU3RhdGVzWzBdID0g
R0xfQkFDSzsKKyAgICBtUmVhZEJ1ZmZlclN0YXRlID0gR0xfQkFDSzsKK30KKworaW50IEZyYW1l
YnVmZmVyOjpnZXRTYW1wbGVzKCkgY29uc3QKK3sKKyAgICBpZiAoY29tcGxldGVuZXNzKCkgPT0g
R0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgeworICAgICAgICAvLyBmb3IgYSBjb21wbGV0
ZSBmcmFtZWJ1ZmZlciwgYWxsIGF0dGFjaG1lbnRzIG11c3QgaGF2ZSB0aGUgc2FtZSBzYW1wbGUg
Y291bnQKKyAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHJldHVybiB0aGUgZmlyc3Qgbm9uemVybyBz
YW1wbGUgc2l6ZQorICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAw
OyBjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTOyBjb2xv
ckF0dGFjaG1lbnQrKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1Db2xvcmJ1ZmZlclR5
cGVzW2NvbG9yQXR0YWNobWVudF0gIT0gR0xfTk9ORSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2V0Q29sb3JidWZmZXIoY29sb3JBdHRhY2htZW50KS0+Z2V0U2FtcGxl
cygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9
CisKK0dMZW51bSBEZWZhdWx0RnJhbWVidWZmZXI6OmNvbXBsZXRlbmVzcygpIGNvbnN0Cit7Cisg
ICAgLy8gVGhlIGRlZmF1bHQgZnJhbWVidWZmZXIgKm11c3QqIGFsd2F5cyBiZSBjb21wbGV0ZSwg
dGhvdWdoIGl0IG1heSBub3QgYmUKKyAgICAvLyBzdWJqZWN0IHRvIHRoZSBzYW1lIHJ1bGVzIGFz
IGFwcGxpY2F0aW9uIEZCT3MuIGllLCBpdCBjb3VsZCBoYXZlIDB4MCBzaXplLgorICAgIHJldHVy
biBHTF9GUkFNRUJVRkZFUl9DT01QTEVURTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IEZyYW1lYnVmZmVyLmg6IERlZmluZXMgdGhlIGdsOjpGcmFtZWJ1ZmZlciBjbGFzcy4gSW1wbGVt
ZW50cyBHTCBmcmFtZWJ1ZmZlcgorLy8gb2JqZWN0cyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5
LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiA0LjQgcGFnZSAxMDUuCisKKyNpZm5kZWYgTElC
R0xFU1YyX0ZSQU1FQlVGRkVSX0hfCisjZGVmaW5lIExJQkdMRVNWMl9GUkFNRUJVRkZFUl9IXwor
CisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vUmVmQ291
bnRPYmplY3QuaCIKKyNpbmNsdWRlICJjb25zdGFudHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7Citj
bGFzcyBSZW5kZXJlcjsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBSZW5kZXJidWZmZXI7
CitjbGFzcyBDb2xvcmJ1ZmZlcjsKK2NsYXNzIERlcHRoYnVmZmVyOworY2xhc3MgU3RlbmNpbGJ1
ZmZlcjsKK2NsYXNzIERlcHRoU3RlbmNpbGJ1ZmZlcjsKKworY2xhc3MgRnJhbWVidWZmZXIKK3sK
KyAgcHVibGljOgorICAgIGV4cGxpY2l0IEZyYW1lYnVmZmVyKHJ4OjpSZW5kZXJlciAqcmVuZGVy
ZXIpOworCisgICAgdmlydHVhbCB+RnJhbWVidWZmZXIoKTsKKworICAgIHZvaWQgc2V0Q29sb3Ji
dWZmZXIodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCwgR0xlbnVtIHR5cGUsIEdMdWludCBj
b2xvcmJ1ZmZlcik7CisgICAgdm9pZCBzZXREZXB0aGJ1ZmZlcihHTGVudW0gdHlwZSwgR0x1aW50
IGRlcHRoYnVmZmVyKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxidWZmZXIoR0xlbnVtIHR5cGUsIEdM
dWludCBzdGVuY2lsYnVmZmVyKTsKKworICAgIHZvaWQgZGV0YWNoVGV4dHVyZShHTHVpbnQgdGV4
dHVyZSk7CisgICAgdm9pZCBkZXRhY2hSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcik7
CisKKyAgICB1bnNpZ25lZCBpbnQgZ2V0UmVuZGVyVGFyZ2V0U2VyaWFsKHVuc2lnbmVkIGludCBj
b2xvckF0dGFjaG1lbnQpIGNvbnN0OworICAgIHVuc2lnbmVkIGludCBnZXREZXB0aGJ1ZmZlclNl
cmlhbCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGludCBnZXRTdGVuY2lsYnVmZmVyU2VyaWFsKCkg
Y29uc3Q7CisKKyAgICBSZW5kZXJidWZmZXIgKmdldENvbG9yYnVmZmVyKHVuc2lnbmVkIGludCBj
b2xvckF0dGFjaG1lbnQpIGNvbnN0OworICAgIFJlbmRlcmJ1ZmZlciAqZ2V0RGVwdGhidWZmZXIo
KSBjb25zdDsKKyAgICBSZW5kZXJidWZmZXIgKmdldFN0ZW5jaWxidWZmZXIoKSBjb25zdDsKKyAg
ICBSZW5kZXJidWZmZXIgKmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKCkgY29uc3Q7CisgICAgUmVu
ZGVyYnVmZmVyICpnZXRSZWFkQ29sb3JidWZmZXIoKSBjb25zdDsKKyAgICBHTGVudW0gZ2V0UmVh
ZENvbG9yYnVmZmVyVHlwZSgpIGNvbnN0OworICAgIFJlbmRlcmJ1ZmZlciAqZ2V0Rmlyc3RDb2xv
cmJ1ZmZlcigpIGNvbnN0OworCisgICAgR0xlbnVtIGdldENvbG9yYnVmZmVyVHlwZSh1bnNpZ25l
ZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25zdDsKKyAgICBHTGVudW0gZ2V0RGVwdGhidWZmZXJU
eXBlKCkgY29uc3Q7CisgICAgR0xlbnVtIGdldFN0ZW5jaWxidWZmZXJUeXBlKCkgY29uc3Q7CisK
KyAgICBHTHVpbnQgZ2V0Q29sb3JidWZmZXJIYW5kbGUodW5zaWduZWQgaW50IGNvbG9yQXR0YWNo
bWVudCkgY29uc3Q7CisgICAgR0x1aW50IGdldERlcHRoYnVmZmVySGFuZGxlKCkgY29uc3Q7Cisg
ICAgR0x1aW50IGdldFN0ZW5jaWxidWZmZXJIYW5kbGUoKSBjb25zdDsKKworICAgIEdMZW51bSBn
ZXREcmF3QnVmZmVyU3RhdGUodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXREcmF3QnVmZmVyU3RhdGUodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCwg
R0xlbnVtIGRyYXdCdWZmZXIpOworCisgICAgYm9vbCBpc0VuYWJsZWRDb2xvckF0dGFjaG1lbnQo
dW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29uc3Q7CisgICAgYm9vbCBoYXNFbmFibGVk
Q29sb3JBdHRhY2htZW50KCkgY29uc3Q7CisgICAgYm9vbCBoYXNTdGVuY2lsKCkgY29uc3Q7Cisg
ICAgaW50IGdldFNhbXBsZXMoKSBjb25zdDsKKyAgICBib29sIHVzaW5nRXh0ZW5kZWREcmF3QnVm
ZmVycygpIGNvbnN0OworCisgICAgdmlydHVhbCBHTGVudW0gY29tcGxldGVuZXNzKCkgY29uc3Q7
CisKKyAgcHJvdGVjdGVkOgorICAgIEdMZW51bSBtQ29sb3JidWZmZXJUeXBlc1tJTVBMRU1FTlRB
VElPTl9NQVhfRFJBV19CVUZGRVJTXTsKKyAgICBCaW5kaW5nUG9pbnRlcjxSZW5kZXJidWZmZXI+
IG1Db2xvcmJ1ZmZlclBvaW50ZXJzW0lNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlNdOwor
ICAgIEdMZW51bSBtRHJhd0J1ZmZlclN0YXRlc1tJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZG
RVJTXTsKKyAgICBHTGVudW0gbVJlYWRCdWZmZXJTdGF0ZTsKKworICAgIEdMZW51bSBtRGVwdGhi
dWZmZXJUeXBlOworICAgIEJpbmRpbmdQb2ludGVyPFJlbmRlcmJ1ZmZlcj4gbURlcHRoYnVmZmVy
UG9pbnRlcjsKKworICAgIEdMZW51bSBtU3RlbmNpbGJ1ZmZlclR5cGU7CisgICAgQmluZGluZ1Bv
aW50ZXI8UmVuZGVyYnVmZmVyPiBtU3RlbmNpbGJ1ZmZlclBvaW50ZXI7CisKKyAgICByeDo6UmVu
ZGVyZXIgKm1SZW5kZXJlcjsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTihGcmFtZWJ1ZmZlcik7CisKKyAgICBSZW5kZXJidWZmZXIgKmxvb2t1cFJlbmRlcmJ1ZmZl
cihHTGVudW0gdHlwZSwgR0x1aW50IGhhbmRsZSkgY29uc3Q7Cit9OworCitjbGFzcyBEZWZhdWx0
RnJhbWVidWZmZXIgOiBwdWJsaWMgRnJhbWVidWZmZXIKK3sKKyAgcHVibGljOgorICAgIERlZmF1
bHRGcmFtZWJ1ZmZlcihyeDo6UmVuZGVyZXIgKlJlbmRlcmVyLCBDb2xvcmJ1ZmZlciAqY29sb3Ji
dWZmZXIsIERlcHRoU3RlbmNpbGJ1ZmZlciAqZGVwdGhTdGVuY2lsKTsKKworICAgIHZpcnR1YWwg
R0xlbnVtIGNvbXBsZXRlbmVzcygpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOKERlZmF1bHRGcmFtZWJ1ZmZlcik7Cit9OworCit9CisKKyNlbmRpZiAg
IC8vIExJQkdMRVNWMl9GUkFNRUJVRkZFUl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvSGFuZGxl
QWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorI2luY2x1ZGUgInBy
ZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBIYW5kbGVBbGxvY2F0b3IuY3Bw
OiBJbXBsZW1lbnRzIHRoZSBnbDo6SGFuZGxlQWxsb2NhdG9yIGNsYXNzLCB3aGljaCBpcyB1c2Vk
CisvLyB0byBhbGxvY2F0ZSBHTCBoYW5kbGVzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL0hhbmRs
ZUFsbG9jYXRvci5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKworbmFtZXNwYWNl
IGdsCit7CisKK0hhbmRsZUFsbG9jYXRvcjo6SGFuZGxlQWxsb2NhdG9yKCkgOiBtQmFzZVZhbHVl
KDEpLCBtTmV4dFZhbHVlKDEpCit7Cit9CisKK0hhbmRsZUFsbG9jYXRvcjo6fkhhbmRsZUFsbG9j
YXRvcigpCit7Cit9CisKK3ZvaWQgSGFuZGxlQWxsb2NhdG9yOjpzZXRCYXNlSGFuZGxlKEdMdWlu
dCB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobUJhc2VWYWx1ZSA9PSBtTmV4dFZhbHVlKTsKKyAgICBt
QmFzZVZhbHVlID0gdmFsdWU7CisgICAgbU5leHRWYWx1ZSA9IHZhbHVlOworfQorCitHTHVpbnQg
SGFuZGxlQWxsb2NhdG9yOjphbGxvY2F0ZSgpCit7CisgICAgaWYgKG1GcmVlVmFsdWVzLnNpemUo
KSkKKyAgICB7CisgICAgICAgIEdMdWludCBoYW5kbGUgPSBtRnJlZVZhbHVlcy5iYWNrKCk7Cisg
ICAgICAgIG1GcmVlVmFsdWVzLnBvcF9iYWNrKCk7CisgICAgICAgIHJldHVybiBoYW5kbGU7Cisg
ICAgfQorICAgIHJldHVybiBtTmV4dFZhbHVlKys7Cit9CisKK3ZvaWQgSGFuZGxlQWxsb2NhdG9y
OjpyZWxlYXNlKEdMdWludCBoYW5kbGUpCit7CisgICAgaWYgKGhhbmRsZSA9PSBtTmV4dFZhbHVl
IC0gMSkKKyAgICB7CisgICAgICAgIC8vIERvbid0IGRyb3AgYmVsb3cgYmFzZSB2YWx1ZQorICAg
ICAgICBpZihtTmV4dFZhbHVlID4gbUJhc2VWYWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAg
bU5leHRWYWx1ZS0tOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IC8vIE9ubHkgZnJlZSBoYW5kbGVzIHRoYXQgd2Ugb3duIC0gZG9uJ3QgZHJvcCBiZWxvdyB0aGUg
YmFzZSB2YWx1ZQorICAgICAgICBpZiAoaGFuZGxlID49IG1CYXNlVmFsdWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1GcmVlVmFsdWVzLnB1c2hfYmFjayhoYW5kbGUpOworICAgICAgICB9Cisg
ICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L0hhbmRsZUFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0hhbmRsZUFsbG9jYXRvci5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ1IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBIYW5kbGVBbGxv
Y2F0b3IuaDogRGVmaW5lcyB0aGUgZ2w6OkhhbmRsZUFsbG9jYXRvciBjbGFzcywgd2hpY2ggaXMg
dXNlZCB0bworLy8gYWxsb2NhdGUgR0wgaGFuZGxlcy4KKworI2lmbmRlZiBMSUJHTEVTVjJfSEFO
RExFQUxMT0NBVE9SX0hfCisjZGVmaW5lIExJQkdMRVNWMl9IQU5ETEVBTExPQ0FUT1JfSF8KKwor
I2RlZmluZSBHTF9BUElDQUxMCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisKKyNpbmNsdWRlIDx2
ZWN0b3I+CisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorCituYW1lc3BhY2UgZ2wK
K3sKKworY2xhc3MgSGFuZGxlQWxsb2NhdG9yCit7CisgIHB1YmxpYzoKKyAgICBIYW5kbGVBbGxv
Y2F0b3IoKTsKKyAgICB2aXJ0dWFsIH5IYW5kbGVBbGxvY2F0b3IoKTsKKworICAgIHZvaWQgc2V0
QmFzZUhhbmRsZShHTHVpbnQgdmFsdWUpOworCisgICAgR0x1aW50IGFsbG9jYXRlKCk7CisgICAg
dm9pZCByZWxlYXNlKEdMdWludCBoYW5kbGUpOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOKEhhbmRsZUFsbG9jYXRvcik7CisKKyAgICBHTHVpbnQgbUJhc2VWYWx1
ZTsKKyAgICBHTHVpbnQgbU5leHRWYWx1ZTsKKyAgICB0eXBlZGVmIHN0ZDo6dmVjdG9yPEdMdWlu
dD4gSGFuZGxlTGlzdDsKKyAgICBIYW5kbGVMaXN0IG1GcmVlVmFsdWVzOworfTsKKworfQorCisj
ZW5kaWYgICAvLyBMSUJHTEVTVjJfSEFORExFQUxMT0NBVE9SX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbS5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW0uY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyNSBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgi
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBQcm9ncmFtLmNwcDogSW1wbGVtZW50cyB0aGUgZ2w6
OlByb2dyYW0gY2xhc3MuIEltcGxlbWVudHMgR0wgcHJvZ3JhbSBvYmplY3RzCisvLyBhbmQgcmVs
YXRlZCBmdW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAyLjEwLjMgcGFn
ZSAyOC4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9Qcm9ncmFtLmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL1Byb2dyYW1CaW5hcnkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVzb3VyY2VNYW5hZ2Vy
LmgiCisKK25hbWVzcGFjZSBnbAoreworY29uc3QgY2hhciAqIGNvbnN0IGdfZmFrZXBhdGggPSAi
QzpcXGZha2VwYXRoIjsKKworQXR0cmlidXRlQmluZGluZ3M6OkF0dHJpYnV0ZUJpbmRpbmdzKCkK
K3sKK30KKworQXR0cmlidXRlQmluZGluZ3M6On5BdHRyaWJ1dGVCaW5kaW5ncygpCit7Cit9CisK
K0luZm9Mb2c6OkluZm9Mb2coKSA6IG1JbmZvTG9nKE5VTEwpCit7Cit9CisKK0luZm9Mb2c6On5J
bmZvTG9nKCkKK3sKKyAgICBkZWxldGVbXSBtSW5mb0xvZzsKK30KKworCitpbnQgSW5mb0xvZzo6
Z2V0TGVuZ3RoKCkgY29uc3QKK3sKKyAgICBpZiAoIW1JbmZvTG9nKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgcmV0dXJuIHN0cmxlbiht
SW5mb0xvZykgKyAxOworICAgIH0KK30KKwordm9pZCBJbmZvTG9nOjpnZXRMb2coR0xzaXplaSBi
dWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmluZm9Mb2cpCit7CisgICAgaW50IGluZGV4
ID0gMDsKKworICAgIGlmIChidWZTaXplID4gMCkKKyAgICB7CisgICAgICAgIGlmIChtSW5mb0xv
ZykKKyAgICAgICAgeworICAgICAgICAgICAgaW5kZXggPSBzdGQ6Om1pbihidWZTaXplIC0gMSwg
KGludClzdHJsZW4obUluZm9Mb2cpKTsKKyAgICAgICAgICAgIG1lbWNweShpbmZvTG9nLCBtSW5m
b0xvZywgaW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgaW5mb0xvZ1tpbmRleF0gPSAnXDAn
OworICAgIH0KKworICAgIGlmIChsZW5ndGgpCisgICAgeworICAgICAgICAqbGVuZ3RoID0gaW5k
ZXg7CisgICAgfQorfQorCisvLyBhcHBlbmQgYSBzYW50aXplZCBtZXNzYWdlIHRvIHRoZSBwcm9n
cmFtIGluZm8gbG9nLgorLy8gVGhlIEQzRCBjb21waWxlciBpbmNsdWRlcyBhIGZha2UgZmlsZSBw
YXRoIGluIHNvbWUgb2YgdGhlIHdhcm5pbmcgb3IgZXJyb3IgCisvLyBtZXNzYWdlcywgc28gbGV0
cyByZW1vdmUgYWxsIG9jY3VycmVuY2VzIG9mIHRoaXMgZmFrZSBmaWxlIHBhdGggZnJvbSB0aGUg
bG9nLgordm9pZCBJbmZvTG9nOjphcHBlbmRTYW5pdGl6ZWQoY29uc3QgY2hhciAqbWVzc2FnZSkK
K3sKKyAgICBzdGQ6OnN0cmluZyBtc2cobWVzc2FnZSk7CisKKyAgICBzaXplX3QgZm91bmQ7Cisg
ICAgZG8KKyAgICB7CisgICAgICAgIGZvdW5kID0gbXNnLmZpbmQoZ19mYWtlcGF0aCk7CisgICAg
ICAgIGlmIChmb3VuZCAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICAgICAgeworICAgICAgICAg
ICAgbXNnLmVyYXNlKGZvdW5kLCBzdHJsZW4oZ19mYWtlcGF0aCkpOworICAgICAgICB9CisgICAg
fQorICAgIHdoaWxlIChmb3VuZCAhPSBzdGQ6OnN0cmluZzo6bnBvcyk7CisKKyAgICBhcHBlbmQo
IiVzIiwgbXNnLmNfc3RyKCkpOworfQorCit2b2lkIEluZm9Mb2c6OmFwcGVuZChjb25zdCBjaGFy
ICpmb3JtYXQsIC4uLikKK3sKKyAgICBpZiAoIWZvcm1hdCkKKyAgICB7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBjaGFyIGluZm9bMTAyNF07CisKKyAgICB2YV9saXN0IHZhcmFyZzsK
KyAgICB2YV9zdGFydCh2YXJhcmcsIGZvcm1hdCk7CisgICAgdnNucHJpbnRmKGluZm8sIHNpemVv
ZihpbmZvKSwgZm9ybWF0LCB2YXJhcmcpOworICAgIHZhX2VuZCh2YXJhcmcpOworCisgICAgc2l6
ZV90IGluZm9MZW5ndGggPSBzdHJsZW4oaW5mbyk7CisKKyAgICBpZiAoIW1JbmZvTG9nKQorICAg
IHsKKyAgICAgICAgbUluZm9Mb2cgPSBuZXcgY2hhcltpbmZvTGVuZ3RoICsgMl07CisgICAgICAg
IHN0cmNweShtSW5mb0xvZywgaW5mbyk7CisgICAgICAgIHN0cmNweShtSW5mb0xvZyArIGluZm9M
ZW5ndGgsICJcbiIpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBzaXplX3QgbG9n
TGVuZ3RoID0gc3RybGVuKG1JbmZvTG9nKTsKKyAgICAgICAgY2hhciAqbmV3TG9nID0gbmV3IGNo
YXJbbG9nTGVuZ3RoICsgaW5mb0xlbmd0aCArIDJdOworICAgICAgICBzdHJjcHkobmV3TG9nLCBt
SW5mb0xvZyk7CisgICAgICAgIHN0cmNweShuZXdMb2cgKyBsb2dMZW5ndGgsIGluZm8pOworICAg
ICAgICBzdHJjcHkobmV3TG9nICsgbG9nTGVuZ3RoICsgaW5mb0xlbmd0aCwgIlxuIik7CisKKyAg
ICAgICAgZGVsZXRlW10gbUluZm9Mb2c7CisgICAgICAgIG1JbmZvTG9nID0gbmV3TG9nOworICAg
IH0KK30KKwordm9pZCBJbmZvTG9nOjpyZXNldCgpCit7CisgICAgaWYgKG1JbmZvTG9nKQorICAg
IHsKKyAgICAgICAgZGVsZXRlIFtdIG1JbmZvTG9nOworICAgICAgICBtSW5mb0xvZyA9IE5VTEw7
CisgICAgfQorfQorCitQcm9ncmFtOjpQcm9ncmFtKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIFJl
c291cmNlTWFuYWdlciAqbWFuYWdlciwgR0x1aW50IGhhbmRsZSkgOiBtUmVzb3VyY2VNYW5hZ2Vy
KG1hbmFnZXIpLCBtSGFuZGxlKGhhbmRsZSkKK3sKKyAgICBtRnJhZ21lbnRTaGFkZXIgPSBOVUxM
OworICAgIG1WZXJ0ZXhTaGFkZXIgPSBOVUxMOworICAgIG1Qcm9ncmFtQmluYXJ5LnNldChOVUxM
KTsKKyAgICBtRGVsZXRlU3RhdHVzID0gZmFsc2U7CisgICAgbUxpbmtlZCA9IGZhbHNlOworICAg
IG1SZWZDb3VudCA9IDA7CisgICAgbVJlbmRlcmVyID0gcmVuZGVyZXI7Cit9CisKK1Byb2dyYW06
On5Qcm9ncmFtKCkKK3sKKyAgICB1bmxpbmsodHJ1ZSk7CisKKyAgICBpZiAobVZlcnRleFNoYWRl
ciAhPSBOVUxMKQorICAgIHsKKyAgICAgICAgbVZlcnRleFNoYWRlci0+cmVsZWFzZSgpOworICAg
IH0KKworICAgIGlmIChtRnJhZ21lbnRTaGFkZXIgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIG1G
cmFnbWVudFNoYWRlci0+cmVsZWFzZSgpOworICAgIH0KK30KKworYm9vbCBQcm9ncmFtOjphdHRh
Y2hTaGFkZXIoU2hhZGVyICpzaGFkZXIpCit7CisgICAgaWYgKHNoYWRlci0+Z2V0VHlwZSgpID09
IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgeworICAgICAgICBpZiAobVZlcnRleFNoYWRlcikKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAg
bVZlcnRleFNoYWRlciA9IChWZXJ0ZXhTaGFkZXIqKXNoYWRlcjsKKyAgICAgICAgbVZlcnRleFNo
YWRlci0+YWRkUmVmKCk7CisgICAgfQorICAgIGVsc2UgaWYgKHNoYWRlci0+Z2V0VHlwZSgpID09
IEdMX0ZSQUdNRU5UX1NIQURFUikKKyAgICB7CisgICAgICAgIGlmIChtRnJhZ21lbnRTaGFkZXIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAg
ICAgIG1GcmFnbWVudFNoYWRlciA9IChGcmFnbWVudFNoYWRlciopc2hhZGVyOworICAgICAgICBt
RnJhZ21lbnRTaGFkZXItPmFkZFJlZigpOworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9ncmFtOjpkZXRhY2hTaGFkZXIoU2hh
ZGVyICpzaGFkZXIpCit7CisgICAgaWYgKHNoYWRlci0+Z2V0VHlwZSgpID09IEdMX1ZFUlRFWF9T
SEFERVIpCisgICAgeworICAgICAgICBpZiAobVZlcnRleFNoYWRlciAhPSBzaGFkZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIG1W
ZXJ0ZXhTaGFkZXItPnJlbGVhc2UoKTsKKyAgICAgICAgbVZlcnRleFNoYWRlciA9IE5VTEw7Cisg
ICAgfQorICAgIGVsc2UgaWYgKHNoYWRlci0+Z2V0VHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURF
UikKKyAgICB7CisgICAgICAgIGlmIChtRnJhZ21lbnRTaGFkZXIgIT0gc2hhZGVyKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBtRnJh
Z21lbnRTaGFkZXItPnJlbGVhc2UoKTsKKyAgICAgICAgbUZyYWdtZW50U2hhZGVyID0gTlVMTDsK
KyAgICB9CisgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2ludCBQcm9ncmFtOjpnZXRBdHRhY2hlZFNoYWRlcnNDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIChtVmVydGV4U2hhZGVyID8gMSA6IDApICsgKG1GcmFnbWVudFNoYWRlciA/IDEgOiAwKTsK
K30KKwordm9pZCBBdHRyaWJ1dGVCaW5kaW5nczo6YmluZEF0dHJpYnV0ZUxvY2F0aW9uKEdMdWlu
dCBpbmRleCwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBpZiAoaW5kZXggPCBNQVhfVkVSVEVY
X0FUVFJJQlMpCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9WRVJURVhf
QVRUUklCUzsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBtQXR0cmlidXRlQmluZGluZ1tp
XS5lcmFzZShuYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIG1BdHRyaWJ1dGVCaW5kaW5nW2lu
ZGV4XS5pbnNlcnQobmFtZSk7CisgICAgfQorfQorCit2b2lkIFByb2dyYW06OmJpbmRBdHRyaWJ1
dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgbUF0dHJp
YnV0ZUJpbmRpbmdzLmJpbmRBdHRyaWJ1dGVMb2NhdGlvbihpbmRleCwgbmFtZSk7Cit9CisKKy8v
IExpbmtzIHRoZSBITFNMIGNvZGUgb2YgdGhlIHZlcnRleCBhbmQgcGl4ZWwgc2hhZGVyIGJ5IG1h
dGNoaW5nIHVwIHRoZWlyIHZhcnlpbmdzLAorLy8gY29tcGlsaW5nIHRoZW0gaW50byBiaW5hcmll
cywgZGV0ZXJtaW5pbmcgdGhlIGF0dHJpYnV0ZSBtYXBwaW5ncywgYW5kIGNvbGxlY3RpbmcKKy8v
IGEgbGlzdCBvZiB1bmlmb3JtcworYm9vbCBQcm9ncmFtOjpsaW5rKCkKK3sKKyAgICB1bmxpbmso
ZmFsc2UpOworCisgICAgbUluZm9Mb2cucmVzZXQoKTsKKworICAgIG1Qcm9ncmFtQmluYXJ5LnNl
dChuZXcgUHJvZ3JhbUJpbmFyeShtUmVuZGVyZXIpKTsKKyAgICBtTGlua2VkID0gbVByb2dyYW1C
aW5hcnktPmxpbmsobUluZm9Mb2csIG1BdHRyaWJ1dGVCaW5kaW5ncywgbUZyYWdtZW50U2hhZGVy
LCBtVmVydGV4U2hhZGVyKTsKKworICAgIHJldHVybiBtTGlua2VkOworfQorCitpbnQgQXR0cmli
dXRlQmluZGluZ3M6OmdldEF0dHJpYnV0ZUJpbmRpbmcoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUp
IGNvbnN0Cit7CisgICAgZm9yIChpbnQgbG9jYXRpb24gPSAwOyBsb2NhdGlvbiA8IE1BWF9WRVJU
RVhfQVRUUklCUzsgbG9jYXRpb24rKykKKyAgICB7CisgICAgICAgIGlmIChtQXR0cmlidXRlQmlu
ZGluZ1tsb2NhdGlvbl0uZmluZChuYW1lKSAhPSBtQXR0cmlidXRlQmluZGluZ1tsb2NhdGlvbl0u
ZW5kKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKworLy8gUmV0dXJucyB0aGUgcHJvZ3JhbSBv
YmplY3QgdG8gYW4gdW5saW5rZWQgc3RhdGUsIGJlZm9yZSByZS1saW5raW5nLCBvciBhdCBkZXN0
cnVjdGlvbgordm9pZCBQcm9ncmFtOjp1bmxpbmsoYm9vbCBkZXN0cm95KQoreworICAgIGlmIChk
ZXN0cm95KSAgIC8vIE9iamVjdCBiZWluZyBkZXN0cnVjdGVkCisgICAgeworICAgICAgICBpZiAo
bUZyYWdtZW50U2hhZGVyKQorICAgICAgICB7CisgICAgICAgICAgICBtRnJhZ21lbnRTaGFkZXIt
PnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1GcmFnbWVudFNoYWRlciA9IE5VTEw7CisgICAgICAg
IH0KKworICAgICAgICBpZiAobVZlcnRleFNoYWRlcikKKyAgICAgICAgeworICAgICAgICAgICAg
bVZlcnRleFNoYWRlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgbVZlcnRleFNoYWRlciA9IE5V
TEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtUHJvZ3JhbUJpbmFyeS5zZXQoTlVMTCk7Cisg
ICAgbUxpbmtlZCA9IGZhbHNlOworfQorCitib29sIFByb2dyYW06OmlzTGlua2VkKCkKK3sKKyAg
ICByZXR1cm4gbUxpbmtlZDsKK30KKworUHJvZ3JhbUJpbmFyeSogUHJvZ3JhbTo6Z2V0UHJvZ3Jh
bUJpbmFyeSgpCit7CisgICAgcmV0dXJuIG1Qcm9ncmFtQmluYXJ5LmdldCgpOworfQorCitib29s
IFByb2dyYW06OnNldFByb2dyYW1CaW5hcnkoY29uc3Qgdm9pZCAqYmluYXJ5LCBHTHNpemVpIGxl
bmd0aCkKK3sKKyAgICB1bmxpbmsoZmFsc2UpOworCisgICAgbUluZm9Mb2cucmVzZXQoKTsKKwor
ICAgIG1Qcm9ncmFtQmluYXJ5LnNldChuZXcgUHJvZ3JhbUJpbmFyeShtUmVuZGVyZXIpKTsKKyAg
ICBtTGlua2VkID0gbVByb2dyYW1CaW5hcnktPmxvYWQobUluZm9Mb2csIGJpbmFyeSwgbGVuZ3Ro
KTsKKyAgICBpZiAoIW1MaW5rZWQpCisgICAgeworICAgICAgICBtUHJvZ3JhbUJpbmFyeS5zZXQo
TlVMTCk7CisgICAgfQorCisgICAgcmV0dXJuIG1MaW5rZWQ7Cit9CisKK3ZvaWQgUHJvZ3JhbTo6
cmVsZWFzZSgpCit7CisgICAgbVJlZkNvdW50LS07CisKKyAgICBpZiAobVJlZkNvdW50ID09IDAg
JiYgbURlbGV0ZVN0YXR1cykKKyAgICB7CisgICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPmRlbGV0
ZVByb2dyYW0obUhhbmRsZSk7CisgICAgfQorfQorCit2b2lkIFByb2dyYW06OmFkZFJlZigpCit7
CisgICAgbVJlZkNvdW50Kys7Cit9CisKK3Vuc2lnbmVkIGludCBQcm9ncmFtOjpnZXRSZWZDb3Vu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZWZDb3VudDsKK30KKworR0xpbnQgUHJvZ3JhbTo6
Z2V0UHJvZ3JhbUJpbmFyeUxlbmd0aCgpIGNvbnN0Cit7CisgICAgUHJvZ3JhbUJpbmFyeSAqcHJv
Z3JhbUJpbmFyeSA9IG1Qcm9ncmFtQmluYXJ5LmdldCgpOworICAgIGlmIChwcm9ncmFtQmluYXJ5
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb2dyYW1CaW5hcnktPmdldExlbmd0aCgpOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2ludCBQ
cm9ncmFtOjpnZXRJbmZvTG9nTGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluZm9Mb2cu
Z2V0TGVuZ3RoKCk7Cit9CisKK3ZvaWQgUHJvZ3JhbTo6Z2V0SW5mb0xvZyhHTHNpemVpIGJ1ZlNp
emUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZykKK3sKKyAgICByZXR1cm4gbUluZm9M
b2cuZ2V0TG9nKGJ1ZlNpemUsIGxlbmd0aCwgaW5mb0xvZyk7Cit9CisKK3ZvaWQgUHJvZ3JhbTo6
Z2V0QXR0YWNoZWRTaGFkZXJzKEdMc2l6ZWkgbWF4Q291bnQsIEdMc2l6ZWkgKmNvdW50LCBHTHVp
bnQgKnNoYWRlcnMpCit7CisgICAgaW50IHRvdGFsID0gMDsKKworICAgIGlmIChtVmVydGV4U2hh
ZGVyKQorICAgIHsKKyAgICAgICAgaWYgKHRvdGFsIDwgbWF4Q291bnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHNoYWRlcnNbdG90YWxdID0gbVZlcnRleFNoYWRlci0+Z2V0SGFuZGxlKCk7Cisg
ICAgICAgIH0KKworICAgICAgICB0b3RhbCsrOworICAgIH0KKworICAgIGlmIChtRnJhZ21lbnRT
aGFkZXIpCisgICAgeworICAgICAgICBpZiAodG90YWwgPCBtYXhDb3VudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgc2hhZGVyc1t0b3RhbF0gPSBtRnJhZ21lbnRTaGFkZXItPmdldEhhbmRsZSgp
OworICAgICAgICB9CisKKyAgICAgICAgdG90YWwrKzsKKyAgICB9CisKKyAgICBpZiAoY291bnQp
CisgICAgeworICAgICAgICAqY291bnQgPSB0b3RhbDsKKyAgICB9Cit9CisKK3ZvaWQgUHJvZ3Jh
bTo6Z2V0QWN0aXZlQXR0cmlidXRlKEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSkKK3sK
KyAgICBQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gZ2V0UHJvZ3JhbUJpbmFyeSgpOwor
ICAgIGlmIChwcm9ncmFtQmluYXJ5KQorICAgIHsKKyAgICAgICAgcHJvZ3JhbUJpbmFyeS0+Z2V0
QWN0aXZlQXR0cmlidXRlKGluZGV4LCBidWZzaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUp
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoYnVmc2l6ZSA+IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG5hbWVbMF0gPSAnXDAnOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBpZiAobGVuZ3RoKQorICAgICAgICB7CisgICAgICAgICAgICAqbGVuZ3RoID0gMDsK
KyAgICAgICAgfQorCisgICAgICAgICp0eXBlID0gR0xfTk9ORTsKKyAgICAgICAgKnNpemUgPSAx
OworICAgIH0KK30KKworR0xpbnQgUHJvZ3JhbTo6Z2V0QWN0aXZlQXR0cmlidXRlQ291bnQoKQor
eworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBnZXRQcm9ncmFtQmluYXJ5KCk7
CisgICAgaWYgKHByb2dyYW1CaW5hcnkpCisgICAgeworICAgICAgICByZXR1cm4gcHJvZ3JhbUJp
bmFyeS0+Z2V0QWN0aXZlQXR0cmlidXRlQ291bnQoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVB
dHRyaWJ1dGVNYXhMZW5ndGgoKQoreworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkg
PSBnZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgaWYgKHByb2dyYW1CaW5hcnkpCisgICAgeworICAg
ICAgICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0QWN0aXZlQXR0cmlidXRlTWF4TGVuZ3RoKCk7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwor
dm9pZCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtKEdMdWludCBpbmRleCwgR0xzaXplaSBidWZz
aXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAq
bmFtZSkKK3sKKyAgICBQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gZ2V0UHJvZ3JhbUJp
bmFyeSgpOworICAgIGlmIChwcm9ncmFtQmluYXJ5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBy
b2dyYW1CaW5hcnktPmdldEFjdGl2ZVVuaWZvcm0oaW5kZXgsIGJ1ZnNpemUsIGxlbmd0aCwgc2l6
ZSwgdHlwZSwgbmFtZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmIChidWZz
aXplID4gMCkKKyAgICAgICAgeworICAgICAgICAgICAgbmFtZVswXSA9ICdcMCc7CisgICAgICAg
IH0KKworICAgICAgICBpZiAobGVuZ3RoKQorICAgICAgICB7CisgICAgICAgICAgICAqbGVuZ3Ro
ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgICpzaXplID0gMDsKKyAgICAgICAgKnR5cGUgPSBH
TF9OT05FOworICAgIH0KK30KKworR0xpbnQgUHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9ybUNvdW50
KCkKK3sKKyAgICBQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gZ2V0UHJvZ3JhbUJpbmFy
eSgpOworICAgIGlmIChwcm9ncmFtQmluYXJ5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb2dy
YW1CaW5hcnktPmdldEFjdGl2ZVVuaWZvcm1Db3VudCgpOworICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK0dMaW50IFByb2dyYW06OmdldEFjdGl2
ZVVuaWZvcm1NYXhMZW5ndGgoKQoreworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkg
PSBnZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgaWYgKHByb2dyYW1CaW5hcnkpCisgICAgeworICAg
ICAgICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aCgpOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3Zv
aWQgUHJvZ3JhbTo6ZmxhZ0ZvckRlbGV0aW9uKCkKK3sKKyAgICBtRGVsZXRlU3RhdHVzID0gdHJ1
ZTsKK30KKworYm9vbCBQcm9ncmFtOjppc0ZsYWdnZWRGb3JEZWxldGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1EZWxldGVTdGF0dXM7Cit9CisKK3ZvaWQgUHJvZ3JhbTo6dmFsaWRhdGUoKQor
eworICAgIG1JbmZvTG9nLnJlc2V0KCk7CisKKyAgICBQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmlu
YXJ5ID0gZ2V0UHJvZ3JhbUJpbmFyeSgpOworICAgIGlmIChpc0xpbmtlZCgpICYmIHByb2dyYW1C
aW5hcnkpCisgICAgeworICAgICAgICBwcm9ncmFtQmluYXJ5LT52YWxpZGF0ZShtSW5mb0xvZyk7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1JbmZvTG9nLmFwcGVuZCgiUHJvZ3Jh
bSBoYXMgbm90IGJlZW4gc3VjY2Vzc2Z1bGx5IGxpbmtlZC4iKTsKKyAgICB9Cit9CisKK2Jvb2wg
UHJvZ3JhbTo6aXNWYWxpZGF0ZWQoKSBjb25zdAoreworICAgIFByb2dyYW1CaW5hcnkgKnByb2dy
YW1CaW5hcnkgPSBtUHJvZ3JhbUJpbmFyeS5nZXQoKTsKKyAgICBpZiAocHJvZ3JhbUJpbmFyeSkK
KyAgICB7CisgICAgICAgIHJldHVybiBwcm9ncmFtQmluYXJ5LT5pc1ZhbGlkYXRlZCgpOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCit9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dy
YW0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvUHJvZ3JhbS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzMCBAQAorLy8KKy8vIENvcHly
aWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gUHJvZ3JhbS5oOiBEZWZpbmVzIHRoZSBnbDo6UHJvZ3JhbSBjbGFzcy4gSW1w
bGVtZW50cyBHTCBwcm9ncmFtIG9iamVjdHMKKy8vIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHku
IFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDIuMTAuMyBwYWdlIDI4LgorCisjaWZuZGVmIExJ
QkdMRVNWMl9QUk9HUkFNX0hfCisjZGVmaW5lIExJQkdMRVNWMl9QUk9HUkFNX0hfCisKKyNpbmNs
dWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8c2V0PgorCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRp
bHMuaCIKKyNpbmNsdWRlICJjb21tb24vUmVmQ291bnRPYmplY3QuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvQ29uc3RhbnRzLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7Cit9
CisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgUmVzb3VyY2VNYW5hZ2VyOworY2xhc3MgRnJhZ21l
bnRTaGFkZXI7CitjbGFzcyBWZXJ0ZXhTaGFkZXI7CitjbGFzcyBQcm9ncmFtQmluYXJ5OworY2xh
c3MgU2hhZGVyOworCitleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IGdfZmFrZXBhdGg7CisKK2Ns
YXNzIEF0dHJpYnV0ZUJpbmRpbmdzCit7CisgIHB1YmxpYzoKKyAgICBBdHRyaWJ1dGVCaW5kaW5n
cygpOworICAgIH5BdHRyaWJ1dGVCaW5kaW5ncygpOworCisgICAgdm9pZCBiaW5kQXR0cmlidXRl
TG9jYXRpb24oR0x1aW50IGluZGV4LCBjb25zdCBjaGFyICpuYW1lKTsKKyAgICBpbnQgZ2V0QXR0
cmlidXRlQmluZGluZyhjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3Q7CisKKyAgcHJpdmF0
ZToKKyAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gbUF0dHJpYnV0ZUJpbmRpbmdbTUFYX1ZFUlRF
WF9BVFRSSUJTXTsKK307CisKK2NsYXNzIEluZm9Mb2cKK3sKKyAgcHVibGljOgorICAgIEluZm9M
b2coKTsKKyAgICB+SW5mb0xvZygpOworCisgICAgaW50IGdldExlbmd0aCgpIGNvbnN0OworICAg
IHZvaWQgZ2V0TG9nKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICppbmZv
TG9nKTsKKworICAgIHZvaWQgYXBwZW5kU2FuaXRpemVkKGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwor
ICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIgKmluZm8sIC4uLik7CisgICAgdm9pZCByZXNldCgp
OworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihJbmZvTG9nKTsKKyAg
ICBjaGFyICptSW5mb0xvZzsKK307CisKK2NsYXNzIFByb2dyYW0KK3sKKyAgcHVibGljOgorICAg
IFByb2dyYW0ocng6OlJlbmRlcmVyICpyZW5kZXJlciwgUmVzb3VyY2VNYW5hZ2VyICptYW5hZ2Vy
LCBHTHVpbnQgaGFuZGxlKTsKKworICAgIH5Qcm9ncmFtKCk7CisKKyAgICBib29sIGF0dGFjaFNo
YWRlcihTaGFkZXIgKnNoYWRlcik7CisgICAgYm9vbCBkZXRhY2hTaGFkZXIoU2hhZGVyICpzaGFk
ZXIpOworICAgIGludCBnZXRBdHRhY2hlZFNoYWRlcnNDb3VudCgpIGNvbnN0OworCisgICAgdm9p
ZCBiaW5kQXR0cmlidXRlTG9jYXRpb24oR0x1aW50IGluZGV4LCBjb25zdCBjaGFyICpuYW1lKTsK
KworICAgIGJvb2wgbGluaygpOworICAgIGJvb2wgaXNMaW5rZWQoKTsKKyAgICBib29sIHNldFBy
b2dyYW1CaW5hcnkoY29uc3Qgdm9pZCAqYmluYXJ5LCBHTHNpemVpIGxlbmd0aCk7CisgICAgUHJv
Z3JhbUJpbmFyeSAqZ2V0UHJvZ3JhbUJpbmFyeSgpOworCisgICAgaW50IGdldEluZm9Mb2dMZW5n
dGgoKSBjb25zdDsKKyAgICB2b2lkIGdldEluZm9Mb2coR0xzaXplaSBidWZTaXplLCBHTHNpemVp
ICpsZW5ndGgsIGNoYXIgKmluZm9Mb2cpOworICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKEdM
c2l6ZWkgbWF4Q291bnQsIEdMc2l6ZWkgKmNvdW50LCBHTHVpbnQgKnNoYWRlcnMpOworCisgICAg
dm9pZCBnZXRBY3RpdmVBdHRyaWJ1dGUoR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdM
c2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKTsK
KyAgICBHTGludCBnZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgpOworICAgIEdMaW50IGdldEFjdGl2
ZUF0dHJpYnV0ZU1heExlbmd0aCgpOworCisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtKEdMdWlu
dCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBH
TGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSk7CisgICAgR0xpbnQgZ2V0QWN0aXZlVW5pZm9ybUNv
dW50KCk7CisgICAgR0xpbnQgZ2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aCgpOworCisgICAgdm9p
ZCBhZGRSZWYoKTsKKyAgICB2b2lkIHJlbGVhc2UoKTsKKyAgICB1bnNpZ25lZCBpbnQgZ2V0UmVm
Q291bnQoKSBjb25zdDsKKyAgICB2b2lkIGZsYWdGb3JEZWxldGlvbigpOworICAgIGJvb2wgaXNG
bGFnZ2VkRm9yRGVsZXRpb24oKSBjb25zdDsKKworICAgIHZvaWQgdmFsaWRhdGUoKTsKKyAgICBi
b29sIGlzVmFsaWRhdGVkKCkgY29uc3Q7CisKKyAgICBHTGludCBnZXRQcm9ncmFtQmluYXJ5TGVu
Z3RoKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04o
UHJvZ3JhbSk7CisKKyAgICB2b2lkIHVubGluayhib29sIGRlc3Ryb3kgPSBmYWxzZSk7CisKKyAg
ICBGcmFnbWVudFNoYWRlciAqbUZyYWdtZW50U2hhZGVyOworICAgIFZlcnRleFNoYWRlciAqbVZl
cnRleFNoYWRlcjsKKworICAgIEF0dHJpYnV0ZUJpbmRpbmdzIG1BdHRyaWJ1dGVCaW5kaW5nczsK
KworICAgIEJpbmRpbmdQb2ludGVyPFByb2dyYW1CaW5hcnk+IG1Qcm9ncmFtQmluYXJ5OworICAg
IGJvb2wgbUxpbmtlZDsKKyAgICBib29sIG1EZWxldGVTdGF0dXM7ICAgLy8gRmxhZyB0byBpbmRp
Y2F0ZSB0aGF0IHRoZSBwcm9ncmFtIGNhbiBiZSBkZWxldGVkIHdoZW4gbm8gbG9uZ2VyIGluIHVz
ZQorCisgICAgdW5zaWduZWQgaW50IG1SZWZDb3VudDsKKworICAgIFJlc291cmNlTWFuYWdlciAq
bVJlc291cmNlTWFuYWdlcjsKKyAgICByeDo6UmVuZGVyZXIgKm1SZW5kZXJlcjsKKyAgICBjb25z
dCBHTHVpbnQgbUhhbmRsZTsKKworICAgIEluZm9Mb2cgbUluZm9Mb2c7Cit9OworfQorCisjZW5k
aWYgICAvLyBMSUJHTEVTVjJfUFJPR1JBTV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtQmlu
YXJ5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNjIwIEBACisjaW5jbHVkZSAicHJlY29t
cGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFByb2dyYW0uY3BwOiBJbXBsZW1lbnRz
IHRoZSBnbDo6UHJvZ3JhbSBjbGFzcy4gSW1wbGVtZW50cyBHTCBwcm9ncmFtIG9iamVjdHMKKy8v
IGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDIu
MTAuMyBwYWdlIDI4LgorCisjaW5jbHVkZSAibGliR0xFU3YyL0JpbmFyeVN0cmVhbS5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3Jl
bmRlcmVyL1NoYWRlckV4ZWN1dGFibGUuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgor
I2luY2x1ZGUgImNvbW1vbi92ZXJzaW9uLmgiCisjaW5jbHVkZSAidXRpbGl0aWVzLmgiCisKKyNp
bmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9TaGFkZXIuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRh
TWFuYWdlci5oIgorCisjdW5kZWYgbmVhcgorI3VuZGVmIGZhcgorCituYW1lc3BhY2UgZ2wKK3sK
K3N0ZDo6c3RyaW5nIHN0cihpbnQgaSkKK3sKKyAgICBjaGFyIGJ1ZmZlclsyMF07CisgICAgc25w
cmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiVkIiwgaSk7CisgICAgcmV0dXJuIGJ1ZmZl
cjsKK30KKworVW5pZm9ybUxvY2F0aW9uOjpVbmlmb3JtTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJp
bmcgJm5hbWUsIHVuc2lnbmVkIGludCBlbGVtZW50LCB1bnNpZ25lZCBpbnQgaW5kZXgpIAorICAg
IDogbmFtZShuYW1lKSwgZWxlbWVudChlbGVtZW50KSwgaW5kZXgoaW5kZXgpCit7Cit9CisKK3Vu
c2lnbmVkIGludCBQcm9ncmFtQmluYXJ5OjptQ3VycmVudFNlcmlhbCA9IDE7CisKK1Byb2dyYW1C
aW5hcnk6OlByb2dyYW1CaW5hcnkocng6OlJlbmRlcmVyICpyZW5kZXJlcikgOiBtUmVuZGVyZXIo
cmVuZGVyZXIpLCBSZWZDb3VudE9iamVjdCgwKSwgbVNlcmlhbChpc3N1ZVNlcmlhbCgpKQorewor
ICAgIG1QaXhlbEV4ZWN1dGFibGUgPSBOVUxMOworICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gTlVM
TDsKKyAgICBtR2VvbWV0cnlFeGVjdXRhYmxlID0gTlVMTDsKKworICAgIG1WYWxpZGF0ZWQgPSBm
YWxzZTsKKworICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBNQVhfVkVSVEVYX0FUVFJJ
QlM7IGluZGV4KyspCisgICAgeworICAgICAgICBtU2VtYW50aWNJbmRleFtpbmRleF0gPSAtMTsK
KyAgICB9CisKKyAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgTUFYX1RFWFRVUkVfSU1B
R0VfVU5JVFM7IGluZGV4KyspCisgICAgeworICAgICAgICBtU2FtcGxlcnNQU1tpbmRleF0uYWN0
aXZlID0gZmFsc2U7CisgICAgfQorCisgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IElN
UExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUzsgaW5kZXgrKykKKyAg
ICB7CisgICAgICAgIG1TYW1wbGVyc1ZTW2luZGV4XS5hY3RpdmUgPSBmYWxzZTsKKyAgICB9CisK
KyAgICBtVXNlZFZlcnRleFNhbXBsZXJSYW5nZSA9IDA7CisgICAgbVVzZWRQaXhlbFNhbXBsZXJS
YW5nZSA9IDA7CisgICAgbVVzZXNQb2ludFNpemUgPSBmYWxzZTsKK30KKworUHJvZ3JhbUJpbmFy
eTo6flByb2dyYW1CaW5hcnkoKQoreworICAgIGRlbGV0ZSBtUGl4ZWxFeGVjdXRhYmxlOworICAg
IG1QaXhlbEV4ZWN1dGFibGUgPSBOVUxMOworCisgICAgZGVsZXRlIG1WZXJ0ZXhFeGVjdXRhYmxl
OworICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gTlVMTDsKKworICAgIGRlbGV0ZSBtR2VvbWV0cnlF
eGVjdXRhYmxlOworICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgPSBOVUxMOworCisgICAgd2hpbGUg
KCFtVW5pZm9ybXMuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtVW5pZm9ybXMuYmFj
aygpOworICAgICAgICBtVW5pZm9ybXMucG9wX2JhY2soKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVk
IGludCBQcm9ncmFtQmluYXJ5OjpnZXRTZXJpYWwoKSBjb25zdAoreworICAgIHJldHVybiBtU2Vy
aWFsOworfQorCit1bnNpZ25lZCBpbnQgUHJvZ3JhbUJpbmFyeTo6aXNzdWVTZXJpYWwoKQorewor
ICAgIHJldHVybiBtQ3VycmVudFNlcmlhbCsrOworfQorCityeDo6U2hhZGVyRXhlY3V0YWJsZSAq
UHJvZ3JhbUJpbmFyeTo6Z2V0UGl4ZWxFeGVjdXRhYmxlKCkKK3sKKyAgICByZXR1cm4gbVBpeGVs
RXhlY3V0YWJsZTsKK30KKworcng6OlNoYWRlckV4ZWN1dGFibGUgKlByb2dyYW1CaW5hcnk6Omdl
dFZlcnRleEV4ZWN1dGFibGUoKQoreworICAgIHJldHVybiBtVmVydGV4RXhlY3V0YWJsZTsKK30K
Kworcng6OlNoYWRlckV4ZWN1dGFibGUgKlByb2dyYW1CaW5hcnk6OmdldEdlb21ldHJ5RXhlY3V0
YWJsZSgpCit7CisgICAgcmV0dXJuIG1HZW9tZXRyeUV4ZWN1dGFibGU7Cit9CisKK0dMdWludCBQ
cm9ncmFtQmluYXJ5OjpnZXRBdHRyaWJ1dGVMb2NhdGlvbihjb25zdCBjaGFyICpuYW1lKQorewor
ICAgIGlmIChuYW1lKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8
IE1BWF9WRVJURVhfQVRUUklCUzsgaW5kZXgrKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KG1MaW5rZWRBdHRyaWJ1dGVbaW5kZXhdLm5hbWUgPT0gc3RkOjpzdHJpbmcobmFtZSkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCitpbnQgUHJvZ3JhbUJpbmFy
eTo6Z2V0U2VtYW50aWNJbmRleChpbnQgYXR0cmlidXRlSW5kZXgpCit7CisgICAgQVNTRVJUKGF0
dHJpYnV0ZUluZGV4ID49IDAgJiYgYXR0cmlidXRlSW5kZXggPCBNQVhfVkVSVEVYX0FUVFJJQlMp
OworICAgIAorICAgIHJldHVybiBtU2VtYW50aWNJbmRleFthdHRyaWJ1dGVJbmRleF07Cit9CisK
Ky8vIFJldHVybnMgb25lIG1vcmUgdGhhbiB0aGUgaGlnaGVzdCBzYW1wbGVyIGluZGV4IHVzZWQu
CitHTGludCBQcm9ncmFtQmluYXJ5OjpnZXRVc2VkU2FtcGxlclJhbmdlKFNhbXBsZXJUeXBlIHR5
cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgIGNhc2UgU0FNUExFUl9QSVhF
TDoKKyAgICAgICAgcmV0dXJuIG1Vc2VkUGl4ZWxTYW1wbGVyUmFuZ2U7CisgICAgICBjYXNlIFNB
TVBMRVJfVkVSVEVYOgorICAgICAgICByZXR1cm4gbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2U7Cisg
ICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6dXNlc1BvaW50U2l6ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1Vc2VzUG9pbnRTaXplOworfQorCitib29sIFByb2dyYW1CaW5hcnk6OnVz
ZXNQb2ludFNwcml0ZUVtdWxhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Vc2VzUG9pbnRT
aXplICYmIG1SZW5kZXJlci0+Z2V0TWFqb3JTaGFkZXJNb2RlbCgpID49IDQ7Cit9CisKK2Jvb2wg
UHJvZ3JhbUJpbmFyeTo6dXNlc0dlb21ldHJ5U2hhZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
dXNlc1BvaW50U3ByaXRlRW11bGF0aW9uKCk7Cit9CisKKy8vIFJldHVybnMgdGhlIGluZGV4IG9m
IHRoZSB0ZXh0dXJlIGltYWdlIHVuaXQgKDAtMTkpIGNvcnJlc3BvbmRpbmcgdG8gYSBEaXJlY3Qz
RCA5IHNhbXBsZXIKKy8vIGluZGV4ICgwLTE1IGZvciB0aGUgcGl4ZWwgc2hhZGVyIGFuZCAwLTMg
Zm9yIHRoZSB2ZXJ0ZXggc2hhZGVyKS4KK0dMaW50IFByb2dyYW1CaW5hcnk6OmdldFNhbXBsZXJN
YXBwaW5nKFNhbXBsZXJUeXBlIHR5cGUsIHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXgpCit7Cisg
ICAgR0xpbnQgbG9naWNhbFRleHR1cmVVbml0ID0gLTE7CisKKyAgICBzd2l0Y2ggKHR5cGUpCisg
ICAgeworICAgICAgY2FzZSBTQU1QTEVSX1BJWEVMOgorICAgICAgICBBU1NFUlQoc2FtcGxlcklu
ZGV4IDwgc2l6ZW9mKG1TYW1wbGVyc1BTKS9zaXplb2YobVNhbXBsZXJzUFNbMF0pKTsKKworICAg
ICAgICBpZiAobVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS5hY3RpdmUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGxvZ2ljYWxUZXh0dXJlVW5pdCA9IG1TYW1wbGVyc1BTW3NhbXBsZXJJbmRleF0u
bG9naWNhbFRleHR1cmVVbml0OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBTQU1QTEVSX1ZFUlRFWDoKKyAgICAgICAgQVNTRVJUKHNhbXBsZXJJbmRleCA8IHNpemVvZiht
U2FtcGxlcnNWUykvc2l6ZW9mKG1TYW1wbGVyc1ZTWzBdKSk7CisKKyAgICAgICAgaWYgKG1TYW1w
bGVyc1ZTW3NhbXBsZXJJbmRleF0uYWN0aXZlKQorICAgICAgICB7CisgICAgICAgICAgICBsb2dp
Y2FsVGV4dHVyZVVuaXQgPSBtU2FtcGxlcnNWU1tzYW1wbGVySW5kZXhdLmxvZ2ljYWxUZXh0dXJl
VW5pdDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hB
QkxFKCk7CisgICAgfQorCisgICAgaWYgKGxvZ2ljYWxUZXh0dXJlVW5pdCA+PSAwICYmIGxvZ2lj
YWxUZXh0dXJlVW5pdCA8IChHTGludCltUmVuZGVyZXItPmdldE1heENvbWJpbmVkVGV4dHVyZUlt
YWdlVW5pdHMoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBsb2dpY2FsVGV4dHVyZVVuaXQ7Cisg
ICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCisvLyBSZXR1cm5zIHRoZSB0ZXh0dXJlIHR5cGUg
Zm9yIGEgZ2l2ZW4gRGlyZWN0M0QgOSBzYW1wbGVyIHR5cGUgYW5kCisvLyBpbmRleCAoMC0xNSBm
b3IgdGhlIHBpeGVsIHNoYWRlciBhbmQgMC0zIGZvciB0aGUgdmVydGV4IHNoYWRlcikuCitUZXh0
dXJlVHlwZSBQcm9ncmFtQmluYXJ5OjpnZXRTYW1wbGVyVGV4dHVyZVR5cGUoU2FtcGxlclR5cGUg
dHlwZSwgdW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisg
ICAgeworICAgICAgY2FzZSBTQU1QTEVSX1BJWEVMOgorICAgICAgICBBU1NFUlQoc2FtcGxlcklu
ZGV4IDwgc2l6ZW9mKG1TYW1wbGVyc1BTKS9zaXplb2YobVNhbXBsZXJzUFNbMF0pKTsKKyAgICAg
ICAgQVNTRVJUKG1TYW1wbGVyc1BTW3NhbXBsZXJJbmRleF0uYWN0aXZlKTsKKyAgICAgICAgcmV0
dXJuIG1TYW1wbGVyc1BTW3NhbXBsZXJJbmRleF0udGV4dHVyZVR5cGU7CisgICAgICBjYXNlIFNB
TVBMRVJfVkVSVEVYOgorICAgICAgICBBU1NFUlQoc2FtcGxlckluZGV4IDwgc2l6ZW9mKG1TYW1w
bGVyc1ZTKS9zaXplb2YobVNhbXBsZXJzVlNbMF0pKTsKKyAgICAgICAgQVNTRVJUKG1TYW1wbGVy
c1ZTW3NhbXBsZXJJbmRleF0uYWN0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1TYW1wbGVyc1ZTW3Nh
bXBsZXJJbmRleF0udGV4dHVyZVR5cGU7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwor
ICAgIH0KKworICAgIHJldHVybiBURVhUVVJFXzJEOworfQorCitHTGludCBQcm9ncmFtQmluYXJ5
OjpnZXRVbmlmb3JtTG9jYXRpb24oc3RkOjpzdHJpbmcgbmFtZSkKK3sKKyAgICB1bnNpZ25lZCBp
bnQgc3Vic2NyaXB0ID0gMDsKKworICAgIC8vIFN0cmlwIGFueSB0cmFpbGluZyBhcnJheSBvcGVy
YXRvciBhbmQgcmV0cmlldmUgdGhlIHN1YnNjcmlwdAorICAgIHNpemVfdCBvcGVuID0gbmFtZS5m
aW5kX2xhc3Rfb2YoJ1snKTsKKyAgICBzaXplX3QgY2xvc2UgPSBuYW1lLmZpbmRfbGFzdF9vZign
XScpOworICAgIGlmIChvcGVuICE9IHN0ZDo6c3RyaW5nOjpucG9zICYmIGNsb3NlID09IG5hbWUu
bGVuZ3RoKCkgLSAxKQorICAgIHsKKyAgICAgICAgc3Vic2NyaXB0ID0gYXRvaShuYW1lLnN1YnN0
cihvcGVuICsgMSkuY19zdHIoKSk7CisgICAgICAgIG5hbWUuZXJhc2Uob3Blbik7CisgICAgfQor
CisgICAgdW5zaWduZWQgaW50IG51bVVuaWZvcm1zID0gbVVuaWZvcm1JbmRleC5zaXplKCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpbnQgbG9jYXRpb24gPSAwOyBsb2NhdGlvbiA8IG51bVVuaWZvcm1z
OyBsb2NhdGlvbisrKQorICAgIHsKKyAgICAgICAgaWYgKG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25d
Lm5hbWUgPT0gbmFtZSAmJgorICAgICAgICAgICAgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxl
bWVudCA9PSBzdWJzY3JpcHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBsb2NhdGlv
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKworYm9vbCBQcm9ncmFt
QmluYXJ5OjpzZXRVbmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGZsb2F0KiB2KQoreworICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGlu
dCltVW5pZm9ybUluZGV4LnNpemUoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5k
ZXhbbG9jYXRpb25dLmluZGV4XTsKKyAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IHRydWU7CisK
KyAgICBpbnQgZWxlbWVudENvdW50ID0gdGFyZ2V0VW5pZm9ybS0+ZWxlbWVudENvdW50KCk7CisK
KyAgICBpZiAoZWxlbWVudENvdW50ID09IDEgJiYgY291bnQgPiAxKQorICAgICAgICByZXR1cm4g
ZmFsc2U7IC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5p
Zm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgorCisgICAgY291bnQgPSBzdGQ6Om1pbihlbGVt
ZW50Q291bnQgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsK
KworICAgIGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0ZMT0FUKQorICAgIHsKKyAgICAg
ICAgR0xmbG9hdCAqdGFyZ2V0ID0gKEdMZmxvYXQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5p
Zm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHRhcmdldFswXSA9IHZb
MF07CisgICAgICAgICAgICB0YXJnZXRbMV0gPSAwOworICAgICAgICAgICAgdGFyZ2V0WzJdID0g
MDsKKyAgICAgICAgICAgIHRhcmdldFszXSA9IDA7CisgICAgICAgICAgICB0YXJnZXQgKz0gNDsK
KyAgICAgICAgICAgIHYgKz0gMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh0YXJn
ZXRVbmlmb3JtLT50eXBlID09IEdMX0JPT0wpCisgICAgeworICAgICAgICBHTGludCAqYm9vbFBh
cmFtcyA9IChHTGludCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRp
b25dLmVsZW1lbnQgKiA0OworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkr
KykKKyAgICAgICAgeworICAgICAgICAgICAgYm9vbFBhcmFtc1swXSA9ICh2WzBdID09IDAuMGYp
ID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFtc1sxXSA9IEdMX0ZB
TFNFOworICAgICAgICAgICAgYm9vbFBhcmFtc1syXSA9IEdMX0ZBTFNFOworICAgICAgICAgICAg
Ym9vbFBhcmFtc1szXSA9IEdMX0ZBTFNFOworICAgICAgICAgICAgYm9vbFBhcmFtcyArPSA0Owor
ICAgICAgICAgICAgdiArPSAxOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGZsb2F0ICp2KQoreworICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRp
b24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21V
bmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKKyAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9
IHRydWU7CisKKyAgICBpbnQgZWxlbWVudENvdW50ID0gdGFyZ2V0VW5pZm9ybS0+ZWxlbWVudENv
dW50KCk7CisKKyAgICBpZiAoZWxlbWVudENvdW50ID09IDEgJiYgY291bnQgPiAxKQorICAgICAg
ICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24t
YXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgorCisgICAgY291bnQgPSBzdGQ6
Om1pbihlbGVtZW50Q291bnQgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQs
IGNvdW50KTsKKworICAgIGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0ZMT0FUX1ZFQzIp
CisgICAgeworICAgICAgICBHTGZsb2F0ICp0YXJnZXQgPSAoR0xmbG9hdCopdGFyZ2V0VW5pZm9y
bS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAg
dGFyZ2V0WzBdID0gdlswXTsKKyAgICAgICAgICAgIHRhcmdldFsxXSA9IHZbMV07CisgICAgICAg
ICAgICB0YXJnZXRbMl0gPSAwOworICAgICAgICAgICAgdGFyZ2V0WzNdID0gMDsKKyAgICAgICAg
ICAgIHRhcmdldCArPSA0OworICAgICAgICAgICAgdiArPSAyOworICAgICAgICB9CisgICAgfQor
ICAgIGVsc2UgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfQk9PTF9WRUMyKQorICAgIHsK
KyAgICAgICAgR0xpbnQgKmJvb2xQYXJhbXMgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEg
KyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2xQYXJh
bXNbMF0gPSAodlswXSA9PSAwLjBmKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAg
IGJvb2xQYXJhbXNbMV0gPSAodlsxXSA9PSAwLjBmKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAg
ICAgICAgICAgIGJvb2xQYXJhbXNbMl0gPSBHTF9GQUxTRTsKKyAgICAgICAgICAgIGJvb2xQYXJh
bXNbM10gPSBHTF9GQUxTRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXMgKz0gNDsKKyAgICAgICAg
ICAgIHYgKz0gMjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dy
YW1CaW5hcnk6OnNldFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMZmxvYXQgKnYpCit7CisgICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBsb2NhdGlvbiA+PSAo
aW50KW1Vbmlmb3JtSW5kZXguc2l6ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZvcm1J
bmRleFtsb2NhdGlvbl0uaW5kZXhdOworICAgIHRhcmdldFVuaWZvcm0tPmRpcnR5ID0gdHJ1ZTsK
KworICAgIGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVtZW50Q291bnQoKTsK
KworICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSAmJiBjb3VudCA+IDEpCisgICAgICAgIHJldHVy
biBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBhIG5vbi1hcnJheSB1
bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisKKyAgICBjb3VudCA9IHN0ZDo6bWluKGVs
ZW1lbnRDb3VudCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCwgY291bnQp
OworCisgICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfRkxPQVRfVkVDMykKKyAgICB7
CisgICAgICAgIEdMZmxvYXQgKnRhcmdldCA9IChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRh
ICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXRb
MF0gPSB2WzBdOworICAgICAgICAgICAgdGFyZ2V0WzFdID0gdlsxXTsKKyAgICAgICAgICAgIHRh
cmdldFsyXSA9IHZbMl07CisgICAgICAgICAgICB0YXJnZXRbM10gPSAwOworICAgICAgICAgICAg
dGFyZ2V0ICs9IDQ7CisgICAgICAgICAgICB2ICs9IDM7CisgICAgICAgIH0KKyAgICB9CisgICAg
ZWxzZSBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9CT09MX1ZFQzMpCisgICAgeworICAg
ICAgICBHTGludCAqYm9vbFBhcmFtcyA9IChHTGludCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1V
bmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgYm9vbFBhcmFtc1sw
XSA9ICh2WzBdID09IDAuMGYpID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9v
bFBhcmFtc1sxXSA9ICh2WzFdID09IDAuMGYpID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAg
ICAgICAgYm9vbFBhcmFtc1syXSA9ICh2WzJdID09IDAuMGYpID8gR0xfRkFMU0UgOiBHTF9UUlVF
OworICAgICAgICAgICAgYm9vbFBhcmFtc1szXSA9IEdMX0ZBTFNFOworICAgICAgICAgICAgYm9v
bFBhcmFtcyArPSA0OworICAgICAgICAgICAgdiArPSAzOworICAgICAgICB9CisgICAgfQorICAg
IGVsc2UgCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTRmdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKK3sKKyAgICBpZiAobG9jYXRp
b24gPCAwIHx8IGxvY2F0aW9uID49IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9y
bSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07CisgICAgdGFyZ2V0
VW5pZm9ybS0+ZGlydHkgPSB0cnVlOworCisgICAgaW50IGVsZW1lbnRDb3VudCA9IHRhcmdldFVu
aWZvcm0tPmVsZW1lbnRDb3VudCgpOworCisgICAgaWYgKGVsZW1lbnRDb3VudCA9PSAxICYmIGNv
dW50ID4gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFu
IGFycmF5IHRvIGEgbm9uLWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KKwor
ICAgIGNvdW50ID0gc3RkOjptaW4oZWxlbWVudENvdW50IC0gKGludCltVW5pZm9ybUluZGV4W2xv
Y2F0aW9uXS5lbGVtZW50LCBjb3VudCk7CisKKyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9
PSBHTF9GTE9BVF9WRUM0KQorICAgIHsKKyAgICAgICAgR0xmbG9hdCAqdGFyZ2V0ID0gKEdMZmxv
YXQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50
ICogNDsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAg
IHsKKyAgICAgICAgICAgIHRhcmdldFswXSA9IHZbMF07CisgICAgICAgICAgICB0YXJnZXRbMV0g
PSB2WzFdOworICAgICAgICAgICAgdGFyZ2V0WzJdID0gdlsyXTsKKyAgICAgICAgICAgIHRhcmdl
dFszXSA9IHZbM107CisgICAgICAgICAgICB0YXJnZXQgKz0gNDsKKyAgICAgICAgICAgIHYgKz0g
NDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09
IEdMX0JPT0xfVkVDNCkKKyAgICB7CisgICAgICAgIEdMaW50ICpib29sUGFyYW1zID0gKEdMaW50
Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAq
IDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7
CisgICAgICAgICAgICBib29sUGFyYW1zWzBdID0gKHZbMF0gPT0gMC4wZikgPyBHTF9GQUxTRSA6
IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzFdID0gKHZbMV0gPT0gMC4wZikgPyBH
TF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzJdID0gKHZbMl0gPT0g
MC4wZikgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzNdID0g
KHZbM10gPT0gMC4wZikgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFy
YW1zICs9IDQ7CisgICAgICAgICAgICB2ICs9IDQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxz
ZSAKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgaW50IHRhcmdldFdpZHRoLCBpbnQgdGFyZ2V0
SGVpZ2h0LCBpbnQgc3JjV2lkdGgsIGludCBzcmNIZWlnaHQ+Cit2b2lkIHRyYW5zcG9zZU1hdHJp
eChUICp0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIGludCBjb3B5V2lkdGgg
PSBzdGQ6Om1pbih0YXJnZXRXaWR0aCwgc3JjV2lkdGgpOworICAgIGludCBjb3B5SGVpZ2h0ID0g
c3RkOjptaW4odGFyZ2V0SGVpZ2h0LCBzcmNIZWlnaHQpOworCisgICAgZm9yIChpbnQgeCA9IDA7
IHggPCBjb3B5V2lkdGg7IHgrKykKKyAgICB7CisgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwg
Y29weUhlaWdodDsgeSsrKQorICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXRbeCAqIHRhcmdl
dFdpZHRoICsgeV0gPSAoVCl2YWx1ZVt5ICogc3JjV2lkdGggKyB4XTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAvLyBjbGVhciB1bmZpbGxlZCByaWdodCBzaWRlCisgICAgZm9yIChpbnQgeSA9IDA7
IHkgPCBjb3B5SGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBmb3IgKGludCB4ID0gc3JjV2lk
dGg7IHggPCB0YXJnZXRXaWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXRb
eSAqIHRhcmdldFdpZHRoICsgeF0gPSAoVCkwOworICAgICAgICB9CisgICAgfQorICAgIC8vIGNs
ZWFyIHVuZmlsbGVkIGJvdHRvbS4KKyAgICBmb3IgKGludCB5ID0gc3JjSGVpZ2h0OyB5IDwgdGFy
Z2V0SGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHRhcmdl
dFdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHRhcmdldFt5ICogdGFyZ2V0V2lk
dGggKyB4XSA9IChUKTA7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFy
eTo6c2V0VW5pZm9ybU1hdHJpeDJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBsb2NhdGlvbiA+
PSAoaW50KW1Vbmlmb3JtSW5kZXguc2l6ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZv
cm1JbmRleFtsb2NhdGlvbl0uaW5kZXhdOworICAgIHRhcmdldFVuaWZvcm0tPmRpcnR5ID0gdHJ1
ZTsKKworICAgIGlmICh0YXJnZXRVbmlmb3JtLT50eXBlICE9IEdMX0ZMT0FUX01BVDIpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaW50IGVsZW1lbnRDb3VudCA9
IHRhcmdldFVuaWZvcm0tPmVsZW1lbnRDb3VudCgpOworCisgICAgaWYgKGVsZW1lbnRDb3VudCA9
PSAxICYmIGNvdW50ID4gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRv
IHdyaXRlIGFuIGFycmF5IHRvIGEgbm9uLWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVS
QVRJT04KKworICAgIGNvdW50ID0gc3RkOjptaW4oZWxlbWVudENvdW50IC0gKGludCltVW5pZm9y
bUluZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBjb3VudCk7CisgICAgR0xmbG9hdCAqdGFyZ2V0ID0g
KEdMZmxvYXQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5l
bGVtZW50ICogODsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICB7
CisgICAgICAgIHRyYW5zcG9zZU1hdHJpeDxHTGZsb2F0LDQsMiwyLDI+KHRhcmdldCwgdmFsdWUp
OworICAgICAgICB0YXJnZXQgKz0gODsKKyAgICAgICAgdmFsdWUgKz0gNDsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtTWF0cml4
M2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkK
K3sKKyAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0aW9uID49IChpbnQpbVVuaWZvcm1JbmRl
eC5zaXplKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVW5p
Zm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5p
bmRleF07CisgICAgdGFyZ2V0VW5pZm9ybS0+ZGlydHkgPSB0cnVlOworCisgICAgaWYgKHRhcmdl
dFVuaWZvcm0tPnR5cGUgIT0gR0xfRkxPQVRfTUFUMykKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBpbnQgZWxlbWVudENvdW50ID0gdGFyZ2V0VW5pZm9ybS0+ZWxl
bWVudENvdW50KCk7CisKKyAgICBpZiAoZWxlbWVudENvdW50ID09IDEgJiYgY291bnQgPiAxKQor
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8g
YSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgorCisgICAgY291bnQg
PSBzdGQ6Om1pbihlbGVtZW50Q291bnQgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVs
ZW1lbnQsIGNvdW50KTsKKyAgICBHTGZsb2F0ICp0YXJnZXQgPSAoR0xmbG9hdCopdGFyZ2V0VW5p
Zm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiAxMjsKKworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIHRyYW5zcG9z
ZU1hdHJpeDxHTGZsb2F0LDQsMywzLDM+KHRhcmdldCwgdmFsdWUpOworICAgICAgICB0YXJnZXQg
Kz0gMTI7CisgICAgICAgIHZhbHVlICs9IDk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKKworYm9vbCBQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtTWF0cml4NGZ2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBpZiAobG9j
YXRpb24gPCAwIHx8IGxvY2F0aW9uID49IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5p
Zm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07CisgICAgdGFy
Z2V0VW5pZm9ybS0+ZGlydHkgPSB0cnVlOworCisgICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUg
IT0gR0xfRkxPQVRfTUFUNCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBpbnQgZWxlbWVudENvdW50ID0gdGFyZ2V0VW5pZm9ybS0+ZWxlbWVudENvdW50KCk7CisK
KyAgICBpZiAoZWxlbWVudENvdW50ID09IDEgJiYgY291bnQgPiAxKQorICAgICAgICByZXR1cm4g
ZmFsc2U7IC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5p
Zm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgorCisgICAgY291bnQgPSBzdGQ6Om1pbihlbGVt
ZW50Q291bnQgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsK
KyAgICBHTGZsb2F0ICp0YXJnZXQgPSAoR0xmbG9hdCopKHRhcmdldFVuaWZvcm0tPmRhdGEgKyBt
VW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogc2l6ZW9mKEdMZmxvYXQpICogMTYpOwor
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgdHJh
bnNwb3NlTWF0cml4PEdMZmxvYXQsNCw0LDQsND4odGFyZ2V0LCB2YWx1ZSk7CisgICAgICAgIHRh
cmdldCArPSAxNjsKKyAgICAgICAgdmFsdWUgKz0gMTY7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTFpdihHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCit7CisgICAgaWYgKGxvY2F0aW9uIDwg
MCB8fCBsb2NhdGlvbiA+PSAoaW50KW1Vbmlmb3JtSW5kZXguc2l6ZSgpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBt
VW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uaW5kZXhdOworICAgIHRhcmdldFVuaWZv
cm0tPmRpcnR5ID0gdHJ1ZTsKKworICAgIGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlmb3Jt
LT5lbGVtZW50Q291bnQoKTsKKworICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSAmJiBjb3VudCA+
IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJh
eSB0byBhIG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisKKyAgICBj
b3VudCA9IHN0ZDo6bWluKGVsZW1lbnRDb3VudCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlv
bl0uZWxlbWVudCwgY291bnQpOworCisgICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xf
SU5UIHx8CisgICAgICAgIHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfU0FNUExFUl8yRCB8fAor
ICAgICAgICB0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX1NBTVBMRVJfQ1VCRSkKKyAgICB7Cisg
ICAgICAgIEdMaW50ICp0YXJnZXQgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5p
Zm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHRhcmdldFswXSA9IHZb
MF07CisgICAgICAgICAgICB0YXJnZXRbMV0gPSAwOworICAgICAgICAgICAgdGFyZ2V0WzJdID0g
MDsKKyAgICAgICAgICAgIHRhcmdldFszXSA9IDA7CisgICAgICAgICAgICB0YXJnZXQgKz0gNDsK
KyAgICAgICAgICAgIHYgKz0gMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh0YXJn
ZXRVbmlmb3JtLT50eXBlID09IEdMX0JPT0wpCisgICAgeworICAgICAgICBHTGludCAqYm9vbFBh
cmFtcyA9IChHTGludCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRp
b25dLmVsZW1lbnQgKiA0OworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkr
KykKKyAgICAgICAgeworICAgICAgICAgICAgYm9vbFBhcmFtc1swXSA9ICh2WzBdID09IDApID8g
R0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFtc1sxXSA9IEdMX0ZBTFNF
OworICAgICAgICAgICAgYm9vbFBhcmFtc1syXSA9IEdMX0ZBTFNFOworICAgICAgICAgICAgYm9v
bFBhcmFtc1szXSA9IEdMX0ZBTFNFOworICAgICAgICAgICAgYm9vbFBhcmFtcyArPSA0OworICAg
ICAgICAgICAgdiArPSAxOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQ
cm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtMml2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGludCAqdikKK3sKKyAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0aW9uID49
IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9y
bUluZGV4W2xvY2F0aW9uXS5pbmRleF07CisgICAgdGFyZ2V0VW5pZm9ybS0+ZGlydHkgPSB0cnVl
OworCisgICAgaW50IGVsZW1lbnRDb3VudCA9IHRhcmdldFVuaWZvcm0tPmVsZW1lbnRDb3VudCgp
OworCisgICAgaWYgKGVsZW1lbnRDb3VudCA9PSAxICYmIGNvdW50ID4gMSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFycmF5IHRvIGEgbm9uLWFycmF5
IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KKworICAgIGNvdW50ID0gc3RkOjptaW4o
ZWxlbWVudENvdW50IC0gKGludCltVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBjb3Vu
dCk7CisKKyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9JTlRfVkVDMikKKyAgICB7
CisgICAgICAgIEdMaW50ICp0YXJnZXQgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBt
VW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHRhcmdldFswXSA9
IHZbMF07CisgICAgICAgICAgICB0YXJnZXRbMV0gPSB2WzFdOworICAgICAgICAgICAgdGFyZ2V0
WzJdID0gMDsKKyAgICAgICAgICAgIHRhcmdldFszXSA9IDA7CisgICAgICAgICAgICB0YXJnZXQg
Kz0gNDsKKyAgICAgICAgICAgIHYgKz0gMjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlm
ICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0JPT0xfVkVDMikKKyAgICB7CisgICAgICAgIEdM
aW50ICpib29sUGFyYW1zID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1J
bmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBib29sUGFyYW1zWzBdID0gKHZb
MF0gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzFd
ID0gKHZbMV0gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFy
YW1zWzJdID0gR0xfRkFMU0U7CisgICAgICAgICAgICBib29sUGFyYW1zWzNdID0gR0xfRkFMU0U7
CisgICAgICAgICAgICBib29sUGFyYW1zICs9IDQ7CisgICAgICAgICAgICB2ICs9IDI7CisgICAg
ICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZv
cm0zaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQorewor
ICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNp
emUoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBVbmlmb3Jt
ICp0YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4
XTsKKyAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IHRydWU7CisKKyAgICBpbnQgZWxlbWVudENv
dW50ID0gdGFyZ2V0VW5pZm9ybS0+ZWxlbWVudENvdW50KCk7CisKKyAgICBpZiAoZWxlbWVudENv
dW50ID09IDEgJiYgY291bnQgPiAxKQorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRp
bmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElE
X09QRVJBVElPTgorCisgICAgY291bnQgPSBzdGQ6Om1pbihlbGVtZW50Q291bnQgLSAoaW50KW1V
bmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsKKworICAgIGlmICh0YXJnZXRV
bmlmb3JtLT50eXBlID09IEdMX0lOVF9WRUMzKQorICAgIHsKKyAgICAgICAgR0xpbnQgKnRhcmdl
dCA9IChHTGludCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25d
LmVsZW1lbnQgKiA0OworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykK
KyAgICAgICAgeworICAgICAgICAgICAgdGFyZ2V0WzBdID0gdlswXTsKKyAgICAgICAgICAgIHRh
cmdldFsxXSA9IHZbMV07CisgICAgICAgICAgICB0YXJnZXRbMl0gPSB2WzJdOworICAgICAgICAg
ICAgdGFyZ2V0WzNdID0gMDsKKyAgICAgICAgICAgIHRhcmdldCArPSA0OworICAgICAgICAgICAg
diArPSAzOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHRhcmdldFVuaWZvcm0tPnR5
cGUgPT0gR0xfQk9PTF9WRUMzKQorICAgIHsKKyAgICAgICAgR0xpbnQgKmJvb2xQYXJhbXMgPSAo
R0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVt
ZW50ICogNDsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbMF0gPSAodlswXSA9PSAwKSA/IEdMX0ZBTFNF
IDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbMV0gPSAodlsxXSA9PSAwKSA/IEdM
X0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbMl0gPSAodlsyXSA9PSAw
KSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbM10gPSBHTF9G
QUxTRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXMgKz0gNDsKKyAgICAgICAgICAgIHYgKz0gMzsK
KyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6c2V0
VW5pZm9ybTRpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYp
Cit7CisgICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBsb2NhdGlvbiA+PSAoaW50KW1Vbmlmb3JtSW5k
ZXguc2l6ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFVu
aWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0u
aW5kZXhdOworICAgIHRhcmdldFVuaWZvcm0tPmRpcnR5ID0gdHJ1ZTsKKworICAgIGludCBlbGVt
ZW50Q291bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVtZW50Q291bnQoKTsKKworICAgIGlmIChlbGVt
ZW50Q291bnQgPT0gMSAmJiBjb3VudCA+IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0
ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBhIG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElO
VkFMSURfT1BFUkFUSU9OCisKKyAgICBjb3VudCA9IHN0ZDo6bWluKGVsZW1lbnRDb3VudCAtIChp
bnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCwgY291bnQpOworCisgICAgaWYgKHRh
cmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfSU5UX1ZFQzQpCisgICAgeworICAgICAgICBHTGludCAq
dGFyZ2V0ID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2Nh
dGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsg
aSsrKQorICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXRbMF0gPSB2WzBdOworICAgICAgICAg
ICAgdGFyZ2V0WzFdID0gdlsxXTsKKyAgICAgICAgICAgIHRhcmdldFsyXSA9IHZbMl07CisgICAg
ICAgICAgICB0YXJnZXRbM10gPSB2WzNdOworICAgICAgICAgICAgdGFyZ2V0ICs9IDQ7CisgICAg
ICAgICAgICB2ICs9IDQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAodGFyZ2V0VW5p
Zm9ybS0+dHlwZSA9PSBHTF9CT09MX1ZFQzQpCisgICAgeworICAgICAgICBHTGludCAqYm9vbFBh
cmFtcyA9IChHTGludCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRp
b25dLmVsZW1lbnQgKiA0OworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkr
KykKKyAgICAgICAgeworICAgICAgICAgICAgYm9vbFBhcmFtc1swXSA9ICh2WzBdID09IDApID8g
R0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFtc1sxXSA9ICh2WzFdID09
IDApID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFtc1syXSA9ICh2
WzJdID09IDApID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFtc1sz
XSA9ICh2WzNdID09IDApID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBh
cmFtcyArPSA0OworICAgICAgICAgICAgdiArPSA0OworICAgICAgICB9CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBQcm9ncmFtQmluYXJ5OjpnZXRVbmlmb3JtZnYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgKmJ1ZlNpemUsIEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBpZiAobG9jYXRpb24g
PCAwIHx8IGxvY2F0aW9uID49IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9
IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07CisKKyAgICAvLyBzaXpl
ZCBxdWVyaWVzIC0tIGVuc3VyZSB0aGUgcHJvdmlkZWQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaAor
ICAgIGlmIChidWZTaXplKQorICAgIHsKKyAgICAgICAgaW50IHJlcXVpcmVkQnl0ZXMgPSBVbmlm
b3JtRXh0ZXJuYWxTaXplKHRhcmdldFVuaWZvcm0tPnR5cGUpOworICAgICAgICBpZiAoKmJ1ZlNp
emUgPCByZXF1aXJlZEJ5dGVzKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzd2l0Y2ggKHRhcmdldFVuaWZvcm0tPnR5cGUpCisg
ICAgeworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOgorICAgICAgICB0cmFuc3Bvc2VNYXRyaXg8
R0xmbG9hdCwyLDIsNCwyPihwYXJhbXMsIChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsg
bVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDgpOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfRkxPQVRfTUFUMzoKKyAgICAgICAgdHJhbnNwb3NlTWF0cml4PEdMZmxvYXQs
MywzLDQsMz4ocGFyYW1zLCAoR0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3Jt
SW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiAxMik7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9GTE9BVF9NQVQ0OgorICAgICAgICB0cmFuc3Bvc2VNYXRyaXg8R0xmbG9hdCw0LDQsNCw0
PihwYXJhbXMsIChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFts
b2NhdGlvbl0uZWxlbWVudCAqIDE2KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0Ogor
ICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZSA9IFVuaWZvcm1Db21wb25l
bnRDb3VudCh0YXJnZXRVbmlmb3JtLT50eXBlKTsKKworICAgICAgICAgICAgc3dpdGNoIChVbmlm
b3JtQ29tcG9uZW50VHlwZSh0YXJnZXRVbmlmb3JtLT50eXBlKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9CT09MOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgKmJvb2xQYXJhbXMgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEg
KyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gKGJvb2xQYXJh
bXNbaV0gPT0gR0xfRkFMU0UpID8gMC4wZiA6IDEuMGY7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgbWVtY3B5KHBhcmFtcywgdGFyZ2V0VW5p
Zm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0ICogc2l6ZW9m
KEdMZmxvYXQpLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplICogc2l6ZW9mKEdMZmxvYXQp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9JTlQ6Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBHTGludCAqaW50UGFyYW1zID0g
KEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxl
bWVudCAqIDQ7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBzaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtc1tpXSA9IChmbG9hdClpbnRQYXJhbXNbaV07CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9ncmFtQmluYXJ5OjpnZXRV
bmlmb3JtaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgKmJ1ZlNpemUsIEdMaW50ICpwYXJhbXMp
Cit7CisgICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBsb2NhdGlvbiA+PSAoaW50KW1Vbmlmb3JtSW5k
ZXguc2l6ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFVu
aWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0u
aW5kZXhdOworCisgICAgLy8gc2l6ZWQgcXVlcmllcyAtLSBlbnN1cmUgdGhlIHByb3ZpZGVkIGJ1
ZmZlciBpcyBsYXJnZSBlbm91Z2gKKyAgICBpZiAoYnVmU2l6ZSkKKyAgICB7CisgICAgICAgIGlu
dCByZXF1aXJlZEJ5dGVzID0gVW5pZm9ybUV4dGVybmFsU2l6ZSh0YXJnZXRVbmlmb3JtLT50eXBl
KTsKKyAgICAgICAgaWYgKCpidWZTaXplIDwgcmVxdWlyZWRCeXRlcykKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgc3dpdGNoICh0
YXJnZXRVbmlmb3JtLT50eXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjoKKyAg
ICAgICAgdHJhbnNwb3NlTWF0cml4PEdMaW50LDIsMiw0LDI+KHBhcmFtcywgKEdMZmxvYXQqKXRh
cmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogOCk7
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOgorICAgICAgICB0cmFu
c3Bvc2VNYXRyaXg8R0xpbnQsMywzLDQsMz4ocGFyYW1zLCAoR0xmbG9hdCopdGFyZ2V0VW5pZm9y
bS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiAxMik7CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OgorICAgICAgICB0cmFuc3Bvc2VNYXRy
aXg8R0xpbnQsNCw0LDQsND4ocGFyYW1zLCAoR0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSAr
IG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiAxNik7CisgICAgICAgIGJyZWFrOwor
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW50IHNpemUg
PSBWYXJpYWJsZUNvbHVtbkNvdW50KHRhcmdldFVuaWZvcm0tPnR5cGUpOworCisgICAgICAgICAg
ICBzd2l0Y2ggKFVuaWZvcm1Db21wb25lbnRUeXBlKHRhcmdldFVuaWZvcm0tPnR5cGUpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0JPT0w6CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBHTGludCAqYm9vbFBhcmFtcyA9IChHTGludCopdGFyZ2V0
VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsr
KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNb
aV0gPSBib29sUGFyYW1zW2ldOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FU
OgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqZmxvYXRQ
YXJhbXMgPSAoR0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9j
YXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXNbaV0gPSAoR0xpbnQpZmxvYXRQYXJhbXNbaV07CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfSU5UOgorICAgICAgICAgICAgICAgIG1lbWNweShw
YXJhbXMsIHRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVt
ZW50ICogNCAqIHNpemVvZihHTGludCksCisgICAgICAgICAgICAgICAgICAgIHNpemUgKiBzaXpl
b2YoR0xpbnQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVs
dDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFByb2dyYW1CaW5hcnk6OmRpcnR5QWxsVW5pZm9ybXMo
KQoreworICAgIHVuc2lnbmVkIGludCBudW1Vbmlmb3JtcyA9IG1Vbmlmb3Jtcy5zaXplKCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaW5kZXggPSAwOyBpbmRleCA8IG51bVVuaWZvcm1zOyBpbmRl
eCsrKQorICAgIHsKKyAgICAgICAgbVVuaWZvcm1zW2luZGV4XS0+ZGlydHkgPSB0cnVlOworICAg
IH0KK30KKworLy8gQXBwbGllcyBhbGwgdGhlIHVuaWZvcm1zIHNldCBmb3IgdGhpcyBwcm9ncmFt
IG9iamVjdCB0byB0aGUgcmVuZGVyZXIKK3ZvaWQgUHJvZ3JhbUJpbmFyeTo6YXBwbHlVbmlmb3Jt
cygpCit7CisgICAgLy8gUmV0cmlldmUgc2FtcGxlciB1bmlmb3JtIHZhbHVlcworICAgIGZvciAo
c3RkOjp2ZWN0b3I8VW5pZm9ybSo+OjppdGVyYXRvciB1YiA9IG1Vbmlmb3Jtcy5iZWdpbigpLCB1
ZSA9IG1Vbmlmb3Jtcy5lbmQoKTsgdWIgIT0gdWU7ICsrdWIpCisgICAgeworICAgICAgICBVbmlm
b3JtICp0YXJnZXRVbmlmb3JtID0gKnViOworCisgICAgICAgIGlmICh0YXJnZXRVbmlmb3JtLT5k
aXJ0eSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0g
R0xfU0FNUExFUl8yRCB8fCAKKyAgICAgICAgICAgICAgICB0YXJnZXRVbmlmb3JtLT50eXBlID09
IEdMX1NBTVBMRVJfQ1VCRSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgY291
bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVtZW50Q291bnQoKTsKKyAgICAgICAgICAgICAgICBHTGlu
dCAoKnYpWzRdID0gKEdMaW50KCopWzRdKXRhcmdldFVuaWZvcm0tPmRhdGE7CisKKyAgICAgICAg
ICAgICAgICBpZiAodGFyZ2V0VW5pZm9ybS0+cHNSZWdpc3RlckluZGV4ID49IDApCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmlyc3RJbmRleCA9
IHRhcmdldFVuaWZvcm0tPnBzUmVnaXN0ZXJJbmRleDsKKworICAgICAgICAgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXggPSBmaXJzdElu
ZGV4ICsgaTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNhbXBsZXJJbmRleCA8IE1B
WF9URVhUVVJFX0lNQUdFX1VOSVRTKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtU2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLmFj
dGl2ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNhbXBsZXJzUFNbc2FtcGxlcklu
ZGV4XS5sb2dpY2FsVGV4dHVyZVVuaXQgPSB2W2ldWzBdOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgaWYgKHRhcmdldFVuaWZvcm0tPnZzUmVnaXN0ZXJJbmRleCA+PSAwKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZpcnN0SW5kZXgg
PSB0YXJnZXRVbmlmb3JtLT52c1JlZ2lzdGVySW5kZXg7CisKKyAgICAgICAgICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4ID0gZmlyc3RJ
bmRleCArIGk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzYW1wbGVySW5kZXggPCBJ
TVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMpCisgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1TYW1w
bGVyc1ZTW3NhbXBsZXJJbmRleF0uYWN0aXZlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtU2FtcGxlcnNWU1tzYW1wbGVySW5kZXhdLmxvZ2ljYWxUZXh0dXJlVW5pdCA9IHZbaV1bMF07
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtUmVu
ZGVyZXItPmFwcGx5VW5pZm9ybXModGhpcywgJm1Vbmlmb3Jtcyk7Cit9CisKKy8vIFBhY2tzIHZh
cnlpbmdzIGludG8gZ2VuZXJpYyB2YXJ5aW5nIHJlZ2lzdGVycywgdXNpbmcgdGhlIGFsZ29yaXRo
bSBmcm9tIFtPcGVuR0wgRVMgU2hhZGluZyBMYW5ndWFnZSAxLjAwIHJldi4gMTddIGFwcGVuZGl4
IEEgc2VjdGlvbiA3IHBhZ2UgMTExCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdXNlZCB2YXJ5
aW5nIHJlZ2lzdGVycywgb3IgLTEgaWYgdW5zdWNjZXNmdWwKK2ludCBQcm9ncmFtQmluYXJ5Ojpw
YWNrVmFyeWluZ3MoSW5mb0xvZyAmaW5mb0xvZywgY29uc3QgVmFyeWluZyAqcGFja2luZ1tdWzRd
LCBGcmFnbWVudFNoYWRlciAqZnJhZ21lbnRTaGFkZXIpCit7CisgICAgY29uc3QgaW50IG1heFZh
cnlpbmdWZWN0b3JzID0gbVJlbmRlcmVyLT5nZXRNYXhWYXJ5aW5nVmVjdG9ycygpOworCisgICAg
ZnJhZ21lbnRTaGFkZXItPnJlc2V0VmFyeWluZ3NSZWdpc3RlckFzc2lnbm1lbnQoKTsKKworICAg
IGZvciAoVmFyeWluZ0xpc3Q6Oml0ZXJhdG9yIHZhcnlpbmcgPSBmcmFnbWVudFNoYWRlci0+bVZh
cnlpbmdzLmJlZ2luKCk7IHZhcnlpbmcgIT0gZnJhZ21lbnRTaGFkZXItPm1WYXJ5aW5ncy5lbmQo
KTsgdmFyeWluZysrKQorICAgIHsKKyAgICAgICAgaW50IG4gPSBWYXJpYWJsZVJvd0NvdW50KHZh
cnlpbmctPnR5cGUpICogdmFyeWluZy0+c2l6ZTsKKyAgICAgICAgaW50IG0gPSBWYXJpYWJsZUNv
bHVtbkNvdW50KHZhcnlpbmctPnR5cGUpOworICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsK
KworICAgICAgICBpZiAobSA9PSAyIHx8IG0gPT0gMyB8fCBtID09IDQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZvciAoaW50IHIgPSAwOyByIDw9IG1heFZhcnlpbmdWZWN0b3JzIC0gbiAmJiAh
c3VjY2VzczsgcisrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJvb2wgYXZhaWxh
YmxlID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbiAmJiBh
dmFpbGFibGU7IHkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZv
ciAoaW50IHggPSAwOyB4IDwgbSAmJiBhdmFpbGFibGU7IHgrKykKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhY2tpbmdbciArIHldW3hdKQorICAg
ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWls
YWJsZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJs
ZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHZhcnlpbmctPnJlZyA9
IHI7CisgICAgICAgICAgICAgICAgICAgIHZhcnlpbmctPmNvbCA9IDA7CisKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBuOyB5KyspCisgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbTsgeCsrKQor
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
Y2tpbmdbciArIHldW3hdID0gJip2YXJ5aW5nOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRy
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
IXN1Y2Nlc3MgJiYgbSA9PSAyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAo
aW50IHIgPSBtYXhWYXJ5aW5nVmVjdG9ycyAtIG47IHIgPj0gMCAmJiAhc3VjY2Vzczsgci0tKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBhdmFpbGFibGUgPSB0
cnVlOworCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbiAmJiBhdmFp
bGFibGU7IHkrKykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIChpbnQgeCA9IDI7IHggPCA0ICYmIGF2YWlsYWJsZTsgeCsrKQorICAgICAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWNraW5nW3Ig
KyB5XVt4XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF2YWlsYWJsZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgIGlmIChhdmFpbGFibGUpCisgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcnlpbmctPnJlZyA9IHI7CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXJ5aW5nLT5jb2wgPSAyOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgKGludCB5ID0gMDsgeSA8IG47IHkrKykKKyAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMjsgeCA8IDQ7IHgr
KykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhY2tpbmdbciArIHldW3hdID0gJip2YXJ5aW5nOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAo
bSA9PSAxKQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgc3BhY2VbNF0gPSB7MH07CisKKyAg
ICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbWF4VmFyeWluZ1ZlY3RvcnM7IHkrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IDQ7IHgrKykK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNwYWNlW3hdICs9IHBhY2tp
bmdbeV1beF0gPyAwIDogMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGludCBjb2x1bW4gPSAwOworCisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IDQ7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc3BhY2VbeF0g
Pj0gbiAmJiBzcGFjZVt4XSA8IHNwYWNlW2NvbHVtbl0pCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBjb2x1bW4gPSB4OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKHNwYWNlW2NvbHVtbl0gPj0gbikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCByID0gMDsgciA8IG1heFZhcnlpbmdWZWN0b3Jz
OyByKyspCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXBhY2tp
bmdbcl1bY29sdW1uXSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyeWluZy0+cmVnID0gcjsKKworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChp
bnQgeSA9IHI7IHkgPCByICsgbjsgeSsrKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tpbmdbeV1bY29sdW1uXSA9ICYqdmFyeWluZzsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICB2YXJ5aW5nLT5jb2wgPSBjb2x1bW47CisKKyAgICAgICAgICAgICAgICBzdWNjZXNz
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIFVOUkVBQ0hB
QkxFKCk7CisKKyAgICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICB7CisgICAgICAgICAgICBp
bmZvTG9nLmFwcGVuZCgiQ291bGQgbm90IHBhY2sgdmFyeWluZyAlcyIsIHZhcnlpbmctPm5hbWUu
Y19zdHIoKSk7CisKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIHVzZWQgcmVnaXN0ZXJzCisgICAgaW50IHJlZ2lz
dGVycyA9IDA7CisKKyAgICBmb3IgKGludCByID0gMDsgciA8IG1heFZhcnlpbmdWZWN0b3JzOyBy
KyspCisgICAgeworICAgICAgICBpZiAocGFja2luZ1tyXVswXSB8fCBwYWNraW5nW3JdWzFdIHx8
IHBhY2tpbmdbcl1bMl0gfHwgcGFja2luZ1tyXVszXSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmVnaXN0ZXJzKys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmVnaXN0ZXJzOwor
fQorCitib29sIFByb2dyYW1CaW5hcnk6OmxpbmtWYXJ5aW5ncyhJbmZvTG9nICZpbmZvTG9nLCBp
bnQgcmVnaXN0ZXJzLCBjb25zdCBWYXJ5aW5nICpwYWNraW5nW11bNF0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyYgcGl4ZWxITFNMLCBzdGQ6OnN0cmluZyYg
dmVydGV4SExTTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYWdtZW50U2hh
ZGVyICpmcmFnbWVudFNoYWRlciwgVmVydGV4U2hhZGVyICp2ZXJ0ZXhTaGFkZXIpCit7CisgICAg
aWYgKHBpeGVsSExTTC5lbXB0eSgpIHx8IHZlcnRleEhMU0wuZW1wdHkoKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBib29sIHVzZXNNUlQgPSBmcmFnbWVudFNo
YWRlci0+bVVzZXNNdWx0aXBsZVJlbmRlclRhcmdldHM7CisgICAgYm9vbCB1c2VzRnJhZ0NvbG9y
ID0gZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0NvbG9yOworICAgIGJvb2wgdXNlc0ZyYWdEYXRh
ID0gZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0RhdGE7CisgICAgaWYgKHVzZXNGcmFnQ29sb3Ig
JiYgdXNlc0ZyYWdEYXRhKQorICAgIHsKKyAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkNhbm5vdCB1
c2UgYm90aCBnbF9GcmFnQ29sb3IgYW5kIGdsX0ZyYWdEYXRhIGluIHRoZSBzYW1lIGZyYWdtZW50
IHNoYWRlci4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFdyaXRl
IHRoZSBITFNMIGlucHV0L291dHB1dCBkZWNsYXJhdGlvbnMKKyAgICBjb25zdCBpbnQgc2hhZGVy
TW9kZWwgPSBtUmVuZGVyZXItPmdldE1ham9yU2hhZGVyTW9kZWwoKTsKKyAgICBjb25zdCBpbnQg
bWF4VmFyeWluZ1ZlY3RvcnMgPSBtUmVuZGVyZXItPmdldE1heFZhcnlpbmdWZWN0b3JzKCk7CisK
KyAgICBjb25zdCBpbnQgcmVnaXN0ZXJzTmVlZGVkID0gcmVnaXN0ZXJzICsgKGZyYWdtZW50U2hh
ZGVyLT5tVXNlc0ZyYWdDb29yZCA/IDEgOiAwKSArIChmcmFnbWVudFNoYWRlci0+bVVzZXNQb2lu
dENvb3JkID8gMSA6IDApOworCisgICAgLy8gVGhlIG91dHB1dCBjb2xvciBpcyBicm9hZGNhc3Qg
dG8gYWxsIGVuYWJsZWQgZHJhdyBidWZmZXJzIHdoZW4gd3JpdGluZyB0byBnbF9GcmFnQ29sb3Ig
CisgICAgY29uc3QgYm9vbCBicm9hZGNhc3QgPSBmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnQ29s
b3I7CisgICAgY29uc3QgdW5zaWduZWQgaW50IG51bVJlbmRlclRhcmdldHMgPSAoYnJvYWRjYXN0
IHx8IHVzZXNNUlQgPyBtUmVuZGVyZXItPmdldE1heFJlbmRlclRhcmdldHMoKSA6IDEpOworCisg
ICAgaWYgKHJlZ2lzdGVyc05lZWRlZCA+IG1heFZhcnlpbmdWZWN0b3JzKQorICAgIHsKKyAgICAg
ICAgaW5mb0xvZy5hcHBlbmQoIk5vIHZhcnlpbmcgcmVnaXN0ZXJzIGxlZnQgdG8gc3VwcG9ydCBn
bF9GcmFnQ29vcmQvZ2xfUG9pbnRDb29yZCIpOworCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICB2ZXJ0ZXhTaGFkZXItPnJlc2V0VmFyeWluZ3NSZWdpc3RlckFzc2lnbm1lbnQo
KTsKKworICAgIGZvciAoVmFyeWluZ0xpc3Q6Oml0ZXJhdG9yIGlucHV0ID0gZnJhZ21lbnRTaGFk
ZXItPm1WYXJ5aW5ncy5iZWdpbigpOyBpbnB1dCAhPSBmcmFnbWVudFNoYWRlci0+bVZhcnlpbmdz
LmVuZCgpOyBpbnB1dCsrKQorICAgIHsKKyAgICAgICAgYm9vbCBtYXRjaGVkID0gZmFsc2U7CisK
KyAgICAgICAgZm9yIChWYXJ5aW5nTGlzdDo6aXRlcmF0b3Igb3V0cHV0ID0gdmVydGV4U2hhZGVy
LT5tVmFyeWluZ3MuYmVnaW4oKTsgb3V0cHV0ICE9IHZlcnRleFNoYWRlci0+bVZhcnlpbmdzLmVu
ZCgpOyBvdXRwdXQrKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG91dHB1dC0+bmFtZSA9
PSBpbnB1dC0+bmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAob3V0cHV0
LT50eXBlICE9IGlucHV0LT50eXBlIHx8IG91dHB1dC0+c2l6ZSAhPSBpbnB1dC0+c2l6ZSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJUeXBl
IG9mIHZlcnRleCB2YXJ5aW5nICVzIGRvZXMgbm90IG1hdGNoIHRoYXQgb2YgdGhlIGZyYWdtZW50
IHZhcnlpbmciLCBvdXRwdXQtPm5hbWUuY19zdHIoKSk7CisKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG91dHB1
dC0+cmVnID0gaW5wdXQtPnJlZzsKKyAgICAgICAgICAgICAgICBvdXRwdXQtPmNvbCA9IGlucHV0
LT5jb2w7CisKKyAgICAgICAgICAgICAgICBtYXRjaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghbWF0Y2hl
ZCkKKyAgICAgICAgeworICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkZyYWdtZW50IHZhcnlp
bmcgJXMgZG9lcyBub3QgbWF0Y2ggYW55IHZlcnRleCB2YXJ5aW5nIiwgaW5wdXQtPm5hbWUuY19z
dHIoKSk7CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIG1Vc2VzUG9pbnRTaXplID0gdmVydGV4U2hhZGVyLT5tVXNlc1BvaW50U2l6ZTsKKyAgICBz
dGQ6OnN0cmluZyB2YXJ5aW5nU2VtYW50aWMgPSAobVVzZXNQb2ludFNpemUgJiYgc2hhZGVyTW9k
ZWwgPT0gMykgPyAiQ09MT1IiIDogIlRFWENPT1JEIjsKKyAgICBzdGQ6OnN0cmluZyB0YXJnZXRT
ZW1hbnRpYyA9IChzaGFkZXJNb2RlbCA+PSA0KSA/ICJTVl9UYXJnZXQiIDogIkNPTE9SIjsKKyAg
ICBzdGQ6OnN0cmluZyBwb3NpdGlvblNlbWFudGljID0gKHNoYWRlck1vZGVsID49IDQpID8gIlNW
X1Bvc2l0aW9uIiA6ICJQT1NJVElPTiI7CisgICAgc3RkOjpzdHJpbmcgZGVwdGhTZW1hbnRpYyA9
IChzaGFkZXJNb2RlbCA+PSA0KSA/ICJTVl9EZXB0aCIgOiAiREVQVEgiOworCisgICAgLy8gc3Bl
Y2lhbCB2YXJ5aW5ncyB0aGF0IHVzZSByZXNlcnZlZCByZWdpc3RlcnMKKyAgICBpbnQgcmVzZXJ2
ZWRSZWdpc3RlckluZGV4ID0gcmVnaXN0ZXJzOworICAgIHN0ZDo6c3RyaW5nIGZyYWdDb29yZFNl
bWFudGljOworICAgIHN0ZDo6c3RyaW5nIHBvaW50Q29vcmRTZW1hbnRpYzsKKworICAgIGlmIChm
cmFnbWVudFNoYWRlci0+bVVzZXNGcmFnQ29vcmQpCisgICAgeworICAgICAgICBmcmFnQ29vcmRT
ZW1hbnRpYyA9IHZhcnlpbmdTZW1hbnRpYyArIHN0cihyZXNlcnZlZFJlZ2lzdGVySW5kZXgrKyk7
CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc1BvaW50Q29vcmQpCisgICAg
eworICAgICAgICAvLyBTaGFkZXIgbW9kZWwgMyB1c2VzIGEgc3BlY2lhbCBURVhDT09SRCBzZW1h
bnRpYyBmb3IgcG9pbnQgc3ByaXRlIHRleGNvb3Jkcy4KKyAgICAgICAgLy8gSW4gRFgxMSB3ZSBj
b21wdXRlIHRoaXMgaW4gdGhlIEdTLgorICAgICAgICBpZiAoc2hhZGVyTW9kZWwgPT0gMykKKyAg
ICAgICAgeworICAgICAgICAgICAgcG9pbnRDb29yZFNlbWFudGljID0gIlRFWENPT1JEMCI7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc2hhZGVyTW9kZWwgPj0gNCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcG9pbnRDb29yZFNlbWFudGljID0gdmFyeWluZ1NlbWFudGljICsgc3RyKHJl
c2VydmVkUmVnaXN0ZXJJbmRleCsrKTsgCisgICAgICAgIH0KKyAgICB9CisKKyAgICB2ZXJ0ZXhI
TFNMICs9ICJzdHJ1Y3QgVlNfSU5QVVRcbiIKKyAgICAgICAgICAgICAgICAgICJ7XG4iOworCisg
ICAgaW50IHNlbWFudGljSW5kZXggPSAwOworICAgIGZvciAoQXR0cmlidXRlQXJyYXk6Oml0ZXJh
dG9yIGF0dHJpYnV0ZSA9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0cmli
dXRlICE9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQorICAg
IHsKKyAgICAgICAgc3dpdGNoIChhdHRyaWJ1dGUtPnR5cGUpCisgICAgICAgIHsKKyAgICAgICAg
ICBjYXNlIEdMX0ZMT0FUOiAgICAgIHZlcnRleEhMU0wgKz0gIiAgICBmbG9hdCAiOyAgICBicmVh
azsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6IHZlcnRleEhMU0wgKz0gIiAgICBmbG9h
dDIgIjsgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6IHZlcnRleEhMU0wg
Kz0gIiAgICBmbG9hdDMgIjsgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6
IHZlcnRleEhMU0wgKz0gIiAgICBmbG9hdDQgIjsgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdM
X0ZMT0FUX01BVDI6IHZlcnRleEhMU0wgKz0gIiAgICBmbG9hdDJ4MiAiOyBicmVhazsKKyAgICAg
ICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6IHZlcnRleEhMU0wgKz0gIiAgICBmbG9hdDN4MyAiOyBi
cmVhazsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6IHZlcnRleEhMU0wgKz0gIiAgICBm
bG9hdDR4NCAiOyBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OiAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZlcnRleEhMU0wgKz0gZGVjb3JhdGVBdHRyaWJ1dGUoYXR0cmli
dXRlLT5uYW1lKSArICIgOiBURVhDT09SRCIgKyBzdHIoc2VtYW50aWNJbmRleCkgKyAiO1xuIjsK
KworICAgICAgICBzZW1hbnRpY0luZGV4ICs9IFZhcmlhYmxlUm93Q291bnQoYXR0cmlidXRlLT50
eXBlKTsKKyAgICB9CisKKyAgICB2ZXJ0ZXhITFNMICs9ICJ9O1xuIgorICAgICAgICAgICAgICAg
ICAgIlxuIgorICAgICAgICAgICAgICAgICAgInN0cnVjdCBWU19PVVRQVVRcbiIKKyAgICAgICAg
ICAgICAgICAgICJ7XG4iOworCisgICAgaWYgKHNoYWRlck1vZGVsIDwgNCkKKyAgICB7CisgICAg
ICAgIHZlcnRleEhMU0wgKz0gIiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiAiICsgcG9zaXRpb25T
ZW1hbnRpYyArICI7XG4iOworICAgIH0KKworICAgIGZvciAoaW50IHIgPSAwOyByIDwgcmVnaXN0
ZXJzOyByKyspCisgICAgeworICAgICAgICBpbnQgcmVnaXN0ZXJTaXplID0gcGFja2luZ1tyXVsz
XSA/IDQgOiAocGFja2luZ1tyXVsyXSA/IDMgOiAocGFja2luZ1tyXVsxXSA/IDIgOiAxKSk7CisK
KyAgICAgICAgdmVydGV4SExTTCArPSAiICAgIGZsb2F0IiArIHN0cihyZWdpc3RlclNpemUpICsg
IiB2IiArIHN0cihyKSArICIgOiAiICsgdmFyeWluZ1NlbWFudGljICsgc3RyKHIpICsgIjtcbiI7
CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0ZyYWdDb29yZCkKKyAgICB7
CisgICAgICAgIHZlcnRleEhMU0wgKz0gIiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3JkIDogIiArIGZy
YWdDb29yZFNlbWFudGljICsgIjtcbiI7CisgICAgfQorCisgICAgaWYgKHZlcnRleFNoYWRlci0+
bVVzZXNQb2ludFNpemUgJiYgc2hhZGVyTW9kZWwgPj0gMykKKyAgICB7CisgICAgICAgIHZlcnRl
eEhMU0wgKz0gIiAgICBmbG9hdCBnbF9Qb2ludFNpemUgOiBQU0laRTtcbiI7CisgICAgfQorCisg
ICAgaWYgKHNoYWRlck1vZGVsID49IDQpCisgICAgeworICAgICAgICB2ZXJ0ZXhITFNMICs9ICIg
ICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogIiArIHBvc2l0aW9uU2VtYW50aWMgKyAiO1xuIjsKKyAg
ICB9CisKKyAgICB2ZXJ0ZXhITFNMICs9ICJ9O1xuIgorICAgICAgICAgICAgICAgICAgIlxuIgor
ICAgICAgICAgICAgICAgICAgIlZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KVxuIgorICAg
ICAgICAgICAgICAgICAgIntcbiI7CisKKyAgICBmb3IgKEF0dHJpYnV0ZUFycmF5OjppdGVyYXRv
ciBhdHRyaWJ1dGUgPSB2ZXJ0ZXhTaGFkZXItPm1BdHRyaWJ1dGVzLmJlZ2luKCk7IGF0dHJpYnV0
ZSAhPSB2ZXJ0ZXhTaGFkZXItPm1BdHRyaWJ1dGVzLmVuZCgpOyBhdHRyaWJ1dGUrKykKKyAgICB7
CisgICAgICAgIHZlcnRleEhMU0wgKz0gIiAgICAiICsgZGVjb3JhdGVBdHRyaWJ1dGUoYXR0cmli
dXRlLT5uYW1lKSArICIgPSAiOworCisgICAgICAgIGlmIChWYXJpYWJsZVJvd0NvdW50KGF0dHJp
YnV0ZS0+dHlwZSkgPiAxKSAgIC8vIE1hdHJpeAorICAgICAgICB7CisgICAgICAgICAgICB2ZXJ0
ZXhITFNMICs9ICJ0cmFuc3Bvc2UiOworICAgICAgICB9CisKKyAgICAgICAgdmVydGV4SExTTCAr
PSAiKGlucHV0LiIgKyBkZWNvcmF0ZUF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUpICsgIik7XG4i
OworICAgIH0KKworICAgIGlmIChzaGFkZXJNb2RlbCA+PSA0KQorICAgIHsKKyAgICAgICAgdmVy
dGV4SExTTCArPSAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBnbF9tYWluKCk7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAg
VlNfT1VUUFVUIG91dHB1dDtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIG91dHB1dC5n
bF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi
ICAgIG91dHB1dC5nbF9Qb3NpdGlvbi55ID0gLWdsX1Bvc2l0aW9uLnk7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgIiAgICBvdXRwdXQuZ2xfUG9zaXRpb24ueiA9IChnbF9Qb3NpdGlvbi56ICsg
Z2xfUG9zaXRpb24udykgKiAwLjU7XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBvdXRw
dXQuZ2xfUG9zaXRpb24udyA9IGdsX1Bvc2l0aW9uLnc7XG4iOworICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICB2ZXJ0ZXhITFNMICs9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAi
ICAgIGdsX21haW4oKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgIiAgICBWU19PVVRQVVQgb3V0cHV0O1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICIgICAgb3V0cHV0LmdsX1Bvc2l0aW9uLnggPSBnbF9Qb3NpdGlvbi54ICogZHhfVmlld0Fk
anVzdC56ICsgZHhfVmlld0FkanVzdC54ICogZ2xfUG9zaXRpb24udztcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAiICAgIG91dHB1dC5nbF9Qb3NpdGlvbi55ID0gLShnbF9Qb3NpdGlvbi55ICog
ZHhfVmlld0FkanVzdC53ICsgZHhfVmlld0FkanVzdC55ICogZ2xfUG9zaXRpb24udyk7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgIiAgICBvdXRwdXQuZ2xfUG9zaXRpb24ueiA9IChnbF9Qb3Np
dGlvbi56ICsgZ2xfUG9zaXRpb24udykgKiAwLjU7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
IiAgICBvdXRwdXQuZ2xfUG9zaXRpb24udyA9IGdsX1Bvc2l0aW9uLnc7XG4iOworICAgIH0KKwor
ICAgIGlmICh2ZXJ0ZXhTaGFkZXItPm1Vc2VzUG9pbnRTaXplICYmIHNoYWRlck1vZGVsID49IDMp
CisgICAgeworICAgICAgICB2ZXJ0ZXhITFNMICs9ICIgICAgb3V0cHV0LmdsX1BvaW50U2l6ZSA9
IGdsX1BvaW50U2l6ZTtcbiI7CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNl
c0ZyYWdDb29yZCkKKyAgICB7CisgICAgICAgIHZlcnRleEhMU0wgKz0gIiAgICBvdXRwdXQuZ2xf
RnJhZ0Nvb3JkID0gZ2xfUG9zaXRpb247XG4iOworICAgIH0KKworICAgIGZvciAoVmFyeWluZ0xp
c3Q6Oml0ZXJhdG9yIHZhcnlpbmcgPSB2ZXJ0ZXhTaGFkZXItPm1WYXJ5aW5ncy5iZWdpbigpOyB2
YXJ5aW5nICE9IHZlcnRleFNoYWRlci0+bVZhcnlpbmdzLmVuZCgpOyB2YXJ5aW5nKyspCisgICAg
eworICAgICAgICBpZiAodmFyeWluZy0+cmVnID49IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgdmFyeWluZy0+c2l6ZTsgaSsrKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGludCByb3dzID0gVmFyaWFibGVSb3dDb3VudCh2YXJ5aW5nLT50eXBl
KTsKKworICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcm93czsgaisrKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHIgPSB2YXJ5aW5nLT5yZWcg
KyBpICogcm93cyArIGo7CisgICAgICAgICAgICAgICAgICAgIHZlcnRleEhMU0wgKz0gIiAgICBv
dXRwdXQudiIgKyBzdHIocik7CisKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBzaGFyZWRSZWdp
c3RlciA9IGZhbHNlOyAgIC8vIFJlZ2lzdGVyIHVzZWQgYnkgbXVsdGlwbGUgdmFyeWluZ3MKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4
IDwgNDsgeCsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocGFja2luZ1tyXVt4XSAmJiBwYWNraW5nW3JdW3hdICE9IHBhY2tpbmdbcl1bMF0pCisg
ICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hh
cmVkUmVnaXN0ZXIgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYoc2hhcmVkUmVnaXN0ZXIpCisgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEhMU0wgKz0gIi4iOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IDQ7IHgrKykKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFja2luZ1tyXVt4
XSA9PSAmKnZhcnlpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goeCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogdmVy
dGV4SExTTCArPSAieCI7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgMTogdmVydGV4SExTTCArPSAieSI7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMjogdmVydGV4SExTTCArPSAieiI7IGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogdmVydGV4SExTTCArPSAidyI7IGJyZWFr
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgdmVydGV4SExTTCArPSAiID0gIiArIHZhcnlpbmct
Pm5hbWU7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAodmFy
eWluZy0+YXJyYXkpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHZlcnRleEhMU0wgKz0gIlsiICsgc3RyKGkpICsgIl0iOworICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJvd3MgPiAxKQorICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhITFNMICs9ICJbIiArIHN0cihq
KSArICJdIjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAgICAgdmVydGV4SExTTCArPSAiO1xuIjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2ZXJ0ZXhITFNMICs9ICJc
biIKKyAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIG91dHB1dDtcbiIKKyAgICAgICAgICAg
ICAgICAgICJ9XG4iOworCisgICAgcGl4ZWxITFNMICs9ICJzdHJ1Y3QgUFNfSU5QVVRcbiIKKyAg
ICAgICAgICAgICAgICAgIntcbiI7CisgICAgCisgICAgZm9yIChWYXJ5aW5nTGlzdDo6aXRlcmF0
b3IgdmFyeWluZyA9IGZyYWdtZW50U2hhZGVyLT5tVmFyeWluZ3MuYmVnaW4oKTsgdmFyeWluZyAh
PSBmcmFnbWVudFNoYWRlci0+bVZhcnlpbmdzLmVuZCgpOyB2YXJ5aW5nKyspCisgICAgeworICAg
ICAgICBpZiAodmFyeWluZy0+cmVnID49IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgdmFyeWluZy0+c2l6ZTsgaSsrKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGludCByb3dzID0gVmFyaWFibGVSb3dDb3VudCh2YXJ5aW5nLT50eXBlKTsKKyAg
ICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHJvd3M7IGorKykKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG4gPSBzdHIodmFyeWluZy0+
cmVnICsgaSAqIHJvd3MgKyBqKTsKKyAgICAgICAgICAgICAgICAgICAgcGl4ZWxITFNMICs9ICIg
ICAgZmxvYXQiICsgc3RyKFZhcmlhYmxlQ29sdW1uQ291bnQodmFyeWluZy0+dHlwZSkpICsgIiB2
IiArIG4gKyAiIDogIiArIHZhcnlpbmdTZW1hbnRpYyArIG4gKyAiO1xuIjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBVTlJFQUNIQUJM
RSgpOworICAgIH0KKworICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnQ29vcmQpCisg
ICAgeworICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3JkIDogIiAr
IGZyYWdDb29yZFNlbWFudGljICsgIjtcbiI7CisgICAgfQorICAgICAgICAKKyAgICBpZiAoZnJh
Z21lbnRTaGFkZXItPm1Vc2VzUG9pbnRDb29yZCAmJiBzaGFkZXJNb2RlbCA+PSAzKQorICAgIHsK
KyAgICAgICAgcGl4ZWxITFNMICs9ICIgICAgZmxvYXQyIGdsX1BvaW50Q29vcmQgOiAiICsgcG9p
bnRDb29yZFNlbWFudGljICsgIjtcbiI7CisgICAgfQorCisgICAgLy8gTXVzdCBjb25zdW1lIHRo
ZSBQU0laRSBlbGVtZW50IGlmIHRoZSBnZW9tZXRyeSBzaGFkZXIgaXMgbm90IGFjdGl2ZQorICAg
IC8vIFdlIHdvbid0IGtub3cgaWYgd2UgdXNlIGEgR1MgdW50aWwgd2UgZHJhdworICAgIGlmICh2
ZXJ0ZXhTaGFkZXItPm1Vc2VzUG9pbnRTaXplICYmIHNoYWRlck1vZGVsID49IDQpCisgICAgewor
ICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBmbG9hdCBnbF9Qb2ludFNpemUgOiBQU0laRTtcbiI7
CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0ZyYWdDb29yZCkKKyAgICB7
CisgICAgICAgIGlmIChzaGFkZXJNb2RlbCA+PSA0KQorICAgICAgICB7CisgICAgICAgICAgICBw
aXhlbEhMU0wgKz0gIiAgICBmbG9hdDQgZHhfVlBvcyA6IFNWX1Bvc2l0aW9uO1xuIjsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlIGlmIChzaGFkZXJNb2RlbCA+PSAzKQorICAgICAgICB7CisgICAg
ICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBmbG9hdDIgZHhfVlBvcyA6IFZQT1M7XG4iOworICAg
ICAgICB9CisgICAgfQorCisgICAgcGl4ZWxITFNMICs9ICJ9O1xuIgorICAgICAgICAgICAgICAg
ICAiXG4iCisgICAgICAgICAgICAgICAgICJzdHJ1Y3QgUFNfT1VUUFVUXG4iCisgICAgICAgICAg
ICAgICAgICJ7XG4iOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgcmVuZGVyVGFyZ2V0SW5kZXgg
PSAwOyByZW5kZXJUYXJnZXRJbmRleCA8IG51bVJlbmRlclRhcmdldHM7IHJlbmRlclRhcmdldElu
ZGV4KyspCisgICAgeworICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBmbG9hdDQgZ2xfQ29sb3Ii
ICsgc3RyKHJlbmRlclRhcmdldEluZGV4KSArICIgOiAiICsgdGFyZ2V0U2VtYW50aWMgKyBzdHIo
cmVuZGVyVGFyZ2V0SW5kZXgpICsgIjtcbiI7CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50U2hh
ZGVyLT5tVXNlc0ZyYWdEZXB0aCkKKyAgICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZs
b2F0IGdsX0RlcHRoIDogIiArIGRlcHRoU2VtYW50aWMgKyAiO1xuIjsKKyAgICB9CisKKyAgICBw
aXhlbEhMU0wgKz0gIn07XG4iCisgICAgICAgICAgICAgICAgICJcbiI7CisKKyAgICBpZiAoZnJh
Z21lbnRTaGFkZXItPm1Vc2VzRnJvbnRGYWNpbmcpCisgICAgeworICAgICAgICBpZiAoc2hhZGVy
TW9kZWwgPj0gNCkKKyAgICAgICAgeworICAgICAgICAgICAgcGl4ZWxITFNMICs9ICJQU19PVVRQ
VVQgbWFpbihQU19JTlBVVCBpbnB1dCwgYm9vbCBpc0Zyb250RmFjZSA6IFNWX0lzRnJvbnRGYWNl
KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcGl4ZWxITFNMICs9ICJQU19PVVRQVVQgbWFp
bihQU19JTlBVVCBpbnB1dCwgZmxvYXQgdkZhY2UgOiBWRkFDRSlcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAie1xuIjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBwaXhlbEhMU0wgKz0gIlBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0KVxuIgorICAg
ICAgICAgICAgICAgICAgICAgIntcbiI7CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50U2hhZGVy
LT5tVXNlc0ZyYWdDb29yZCkKKyAgICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0
IHJodyA9IDEuMCAvIGlucHV0LmdsX0ZyYWdDb29yZC53O1xuIjsKKyAgICAgICAgCisgICAgICAg
IGlmIChzaGFkZXJNb2RlbCA+PSA0KQorICAgICAgICB7CisgICAgICAgICAgICBwaXhlbEhMU0wg
Kz0gIiAgICBnbF9GcmFnQ29vcmQueCA9IGlucHV0LmR4X1ZQb3MueDtcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIGdsX0ZyYWdDb29yZC55ID0gaW5wdXQuZHhfVlBvcy55O1xuIjsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzaGFkZXJNb2RlbCA+PSAzKQorICAgICAgICB7
CisgICAgICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBnbF9GcmFnQ29vcmQueCA9IGlucHV0LmR4
X1ZQb3MueCArIDAuNTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGdsX0ZyYWdD
b29yZC55ID0gaW5wdXQuZHhfVlBvcy55ICsgMC41O1xuIjsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIGR4X1ZpZXdDb29yZHMgY29udGFpbnMgdGhl
IHZpZXdwb3J0IHdpZHRoLzIsIGhlaWdodC8yLCBjZW50ZXIueCBhbmQgY2VudGVyLnkuIFNlZSBS
ZW5kZXJlcjo6c2V0Vmlld3BvcnQoKQorICAgICAgICAgICAgcGl4ZWxITFNMICs9ICIgICAgZ2xf
RnJhZ0Nvb3JkLnggPSAoaW5wdXQuZ2xfRnJhZ0Nvb3JkLnggKiByaHcpICogZHhfVmlld0Nvb3Jk
cy54ICsgZHhfVmlld0Nvb3Jkcy56O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAg
Z2xfRnJhZ0Nvb3JkLnkgPSAoaW5wdXQuZ2xfRnJhZ0Nvb3JkLnkgKiByaHcpICogZHhfVmlld0Nv
b3Jkcy55ICsgZHhfVmlld0Nvb3Jkcy53O1xuIjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgcGl4ZWxITFNMICs9ICIgICAgZ2xfRnJhZ0Nvb3JkLnogPSAoaW5wdXQuZ2xfRnJhZ0Nvb3Jk
LnogKiByaHcpICogZHhfRGVwdGhGcm9udC54ICsgZHhfRGVwdGhGcm9udC55O1xuIgorICAgICAg
ICAgICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29vcmQudyA9IHJodztcbiI7CisgICAgfQorCisg
ICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc1BvaW50Q29vcmQgJiYgc2hhZGVyTW9kZWwgPj0g
MykKKyAgICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGdsX1BvaW50Q29vcmQueCA9IGlu
cHV0LmdsX1BvaW50Q29vcmQueDtcbiI7CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGdsX1Bv
aW50Q29vcmQueSA9IDEuMCAtIGlucHV0LmdsX1BvaW50Q29vcmQueTtcbiI7CisgICAgfQorCisg
ICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0Zyb250RmFjaW5nKQorICAgIHsKKyAgICAgICAg
aWYgKHNoYWRlck1vZGVsIDw9IDMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBpeGVsSExTTCAr
PSAiICAgIGdsX0Zyb250RmFjaW5nID0gKHZGYWNlICogZHhfRGVwdGhGcm9udC56ID49IDAuMCk7
XG4iOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcGl4
ZWxITFNMICs9ICIgICAgZ2xfRnJvbnRGYWNpbmcgPSBpc0Zyb250RmFjZTtcbiI7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBmb3IgKFZhcnlpbmdMaXN0OjppdGVyYXRvciB2YXJ5aW5nID0gZnJh
Z21lbnRTaGFkZXItPm1WYXJ5aW5ncy5iZWdpbigpOyB2YXJ5aW5nICE9IGZyYWdtZW50U2hhZGVy
LT5tVmFyeWluZ3MuZW5kKCk7IHZhcnlpbmcrKykKKyAgICB7CisgICAgICAgIGlmICh2YXJ5aW5n
LT5yZWcgPj0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2
YXJ5aW5nLT5zaXplOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50IHJv
d3MgPSBWYXJpYWJsZVJvd0NvdW50KHZhcnlpbmctPnR5cGUpOworICAgICAgICAgICAgICAgIGZv
ciAoaW50IGogPSAwOyBqIDwgcm93czsgaisrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmcgbiA9IHN0cih2YXJ5aW5nLT5yZWcgKyBpICogcm93cyAr
IGopOworICAgICAgICAgICAgICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICAiICsgdmFyeWluZy0+
bmFtZTsKKworICAgICAgICAgICAgICAgICAgICBpZiAodmFyeWluZy0+YXJyYXkpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsSExTTCArPSAiWyIg
KyBzdHIoaSkgKyAiXSI7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICBpZiAocm93cyA+IDEpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHBpeGVsSExTTCArPSAiWyIgKyBzdHIoaikgKyAiXSI7CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKFZhcmlhYmxlQ29sdW1uQ291
bnQodmFyeWluZy0+dHlwZSkpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIDE6IHBpeGVsSExTTCArPSAiID0gaW5wdXQudiIgKyBuICsgIi54O1xuIjsg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IHBpeGVsSExTTCArPSAiID0g
aW5wdXQudiIgKyBuICsgIi54eTtcbiI7ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICBj
YXNlIDM6IHBpeGVsSExTTCArPSAiID0gaW5wdXQudiIgKyBuICsgIi54eXo7XG4iOyBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IHBpeGVsSExTTCArPSAiID0gaW5wdXQudiIg
KyBuICsgIjtcbiI7ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAg
ICB9CisKKyAgICBwaXhlbEhMU0wgKz0gIlxuIgorICAgICAgICAgICAgICAgICAiICAgIGdsX21h
aW4oKTtcbiIKKyAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAiICAgIFBT
X09VVFBVVCBvdXRwdXQ7XG4iOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgcmVuZGVyVGFyZ2V0
SW5kZXggPSAwOyByZW5kZXJUYXJnZXRJbmRleCA8IG51bVJlbmRlclRhcmdldHM7IHJlbmRlclRh
cmdldEluZGV4KyspCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlQ29sb3JJbmRl
eCA9IGJyb2FkY2FzdCA/IDAgOiByZW5kZXJUYXJnZXRJbmRleDsKKworICAgICAgICBwaXhlbEhM
U0wgKz0gIiAgICBvdXRwdXQuZ2xfQ29sb3IiICsgc3RyKHJlbmRlclRhcmdldEluZGV4KSArICIg
PSBnbF9Db2xvclsiICsgc3RyKHNvdXJjZUNvbG9ySW5kZXgpICsgIl07XG4iOworICAgIH0KKwor
ICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnRGVwdGgpCisgICAgeworICAgICAgICBw
aXhlbEhMU0wgKz0gIiAgICBvdXRwdXQuZ2xfRGVwdGggPSBnbF9EZXB0aDtcbiI7CisgICAgfQor
CisgICAgcGl4ZWxITFNMICs9ICJcbiIKKyAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gb3V0
cHV0O1xuIgorICAgICAgICAgICAgICAgICAifVxuIjsKKworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFByb2dyYW1CaW5hcnk6OmxvYWQoSW5mb0xvZyAmaW5mb0xvZywgY29uc3Qgdm9pZCAq
YmluYXJ5LCBHTHNpemVpIGxlbmd0aCkKK3sKKyAgICBCaW5hcnlJbnB1dFN0cmVhbSBzdHJlYW0o
YmluYXJ5LCBsZW5ndGgpOworCisgICAgaW50IGZvcm1hdCA9IDA7CisgICAgc3RyZWFtLnJlYWQo
JmZvcm1hdCk7CisgICAgaWYgKGZvcm1hdCAhPSBHTF9QUk9HUkFNX0JJTkFSWV9BTkdMRSkKKyAg
ICB7CisgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJJbnZhbGlkIHByb2dyYW0gYmluYXJ5IGZvcm1h
dC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGludCB2ZXJzaW9uID0g
MDsKKyAgICBzdHJlYW0ucmVhZCgmdmVyc2lvbik7CisgICAgaWYgKHZlcnNpb24gIT0gVkVSU0lP
Tl9EV09SRCkKKyAgICB7CisgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJJbnZhbGlkIHByb2dyYW0g
YmluYXJ5IHZlcnNpb24uIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBp
bnQgY29tcGlsZUZsYWdzID0gMDsKKyAgICBzdHJlYW0ucmVhZCgmY29tcGlsZUZsYWdzKTsKKyAg
ICBpZiAoY29tcGlsZUZsYWdzICE9IEFOR0xFX0NPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMKQor
ICAgIHsKKyAgICAgICAgaW5mb0xvZy5hcHBlbmQoIk1pc21hdGNoZWQgY29tcGlsYXRpb24gZmxh
Z3MuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IE1BWF9WRVJURVhfQVRUUklCUzsgKytpKQorICAgIHsKKyAgICAgICAgc3RyZWFtLnJl
YWQoJm1MaW5rZWRBdHRyaWJ1dGVbaV0udHlwZSk7CisgICAgICAgIHN0ZDo6c3RyaW5nIG5hbWU7
CisgICAgICAgIHN0cmVhbS5yZWFkKCZuYW1lKTsKKyAgICAgICAgbUxpbmtlZEF0dHJpYnV0ZVtp
XS5uYW1lID0gbmFtZTsKKyAgICAgICAgc3RyZWFtLnJlYWQoJm1TZW1hbnRpY0luZGV4W2ldKTsK
KyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IE1BWF9URVhUVVJFX0lN
QUdFX1VOSVRTOyArK2kpCisgICAgeworICAgICAgICBzdHJlYW0ucmVhZCgmbVNhbXBsZXJzUFNb
aV0uYWN0aXZlKTsKKyAgICAgICAgc3RyZWFtLnJlYWQoJm1TYW1wbGVyc1BTW2ldLmxvZ2ljYWxU
ZXh0dXJlVW5pdCk7CisgICAgICAgIAorICAgICAgICBpbnQgdGV4dHVyZVR5cGU7CisgICAgICAg
IHN0cmVhbS5yZWFkKCZ0ZXh0dXJlVHlwZSk7CisgICAgICAgIG1TYW1wbGVyc1BTW2ldLnRleHR1
cmVUeXBlID0gKFRleHR1cmVUeXBlKSB0ZXh0dXJlVHlwZTsKKyAgICB9CisKKyAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IElNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9J
TUFHRV9VTklUUzsgKytpKQorICAgIHsKKyAgICAgICAgc3RyZWFtLnJlYWQoJm1TYW1wbGVyc1ZT
W2ldLmFjdGl2ZSk7CisgICAgICAgIHN0cmVhbS5yZWFkKCZtU2FtcGxlcnNWU1tpXS5sb2dpY2Fs
VGV4dHVyZVVuaXQpOworICAgICAgICAKKyAgICAgICAgaW50IHRleHR1cmVUeXBlOworICAgICAg
ICBzdHJlYW0ucmVhZCgmdGV4dHVyZVR5cGUpOworICAgICAgICBtU2FtcGxlcnNWU1tpXS50ZXh0
dXJlVHlwZSA9IChUZXh0dXJlVHlwZSkgdGV4dHVyZVR5cGU7CisgICAgfQorCisgICAgc3RyZWFt
LnJlYWQoJm1Vc2VkVmVydGV4U2FtcGxlclJhbmdlKTsKKyAgICBzdHJlYW0ucmVhZCgmbVVzZWRQ
aXhlbFNhbXBsZXJSYW5nZSk7CisgICAgc3RyZWFtLnJlYWQoJm1Vc2VzUG9pbnRTaXplKTsKKwor
ICAgIHNpemVfdCBzaXplOworICAgIHN0cmVhbS5yZWFkKCZzaXplKTsKKyAgICBpZiAoc3RyZWFt
LmVycm9yKCkpCisgICAgeworICAgICAgICBpbmZvTG9nLmFwcGVuZCgiSW52YWxpZCBwcm9ncmFt
IGJpbmFyeS4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1Vbmlmb3Jt
cy5yZXNpemUoc2l6ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCisgICAgeworICAgICAgICBHTGVudW0gdHlwZTsKKyAgICAgICAgR0xlbnVtIHByZWNpc2lv
bjsKKyAgICAgICAgc3RkOjpzdHJpbmcgbmFtZTsKKyAgICAgICAgdW5zaWduZWQgaW50IGFycmF5
U2l6ZTsKKworICAgICAgICBzdHJlYW0ucmVhZCgmdHlwZSk7CisgICAgICAgIHN0cmVhbS5yZWFk
KCZwcmVjaXNpb24pOworICAgICAgICBzdHJlYW0ucmVhZCgmbmFtZSk7CisgICAgICAgIHN0cmVh
bS5yZWFkKCZhcnJheVNpemUpOworCisgICAgICAgIG1Vbmlmb3Jtc1tpXSA9IG5ldyBVbmlmb3Jt
KHR5cGUsIHByZWNpc2lvbiwgbmFtZSwgYXJyYXlTaXplKTsKKyAgICAgICAgCisgICAgICAgIHN0
cmVhbS5yZWFkKCZtVW5pZm9ybXNbaV0tPnBzUmVnaXN0ZXJJbmRleCk7CisgICAgICAgIHN0cmVh
bS5yZWFkKCZtVW5pZm9ybXNbaV0tPnZzUmVnaXN0ZXJJbmRleCk7CisgICAgICAgIHN0cmVhbS5y
ZWFkKCZtVW5pZm9ybXNbaV0tPnJlZ2lzdGVyQ291bnQpOworICAgIH0KKworICAgIHN0cmVhbS5y
ZWFkKCZzaXplKTsKKyAgICBpZiAoc3RyZWFtLmVycm9yKCkpCisgICAgeworICAgICAgICBpbmZv
TG9nLmFwcGVuZCgiSW52YWxpZCBwcm9ncmFtIGJpbmFyeS4iKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIG1Vbmlmb3JtSW5kZXgucmVzaXplKHNpemUpOworICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgIHsKKyAgICAgICAgc3RyZWFt
LnJlYWQoJm1Vbmlmb3JtSW5kZXhbaV0ubmFtZSk7CisgICAgICAgIHN0cmVhbS5yZWFkKCZtVW5p
Zm9ybUluZGV4W2ldLmVsZW1lbnQpOworICAgICAgICBzdHJlYW0ucmVhZCgmbVVuaWZvcm1JbmRl
eFtpXS5pbmRleCk7CisgICAgfQorCisgICAgdW5zaWduZWQgaW50IHBpeGVsU2hhZGVyU2l6ZTsK
KyAgICBzdHJlYW0ucmVhZCgmcGl4ZWxTaGFkZXJTaXplKTsKKworICAgIHVuc2lnbmVkIGludCB2
ZXJ0ZXhTaGFkZXJTaXplOworICAgIHN0cmVhbS5yZWFkKCZ2ZXJ0ZXhTaGFkZXJTaXplKTsKKwor
ICAgIHVuc2lnbmVkIGludCBnZW9tZXRyeVNoYWRlclNpemU7CisgICAgc3RyZWFtLnJlYWQoJmdl
b21ldHJ5U2hhZGVyU2l6ZSk7CisKKyAgICBjb25zdCBjaGFyICpwdHIgPSAoY29uc3QgY2hhciop
IGJpbmFyeSArIHN0cmVhbS5vZmZzZXQoKTsKKworICAgIGNvbnN0IEdVSUQgKmJpbmFyeUlkZW50
aWZpZXIgPSAoY29uc3QgR1VJRCAqKSBwdHI7CisgICAgcHRyICs9IHNpemVvZihHVUlEKTsKKwor
ICAgIEdVSUQgaWRlbnRpZmllciA9IG1SZW5kZXJlci0+Z2V0QWRhcHRlcklkZW50aWZpZXIoKTsK
KyAgICBpZiAobWVtY21wKCZpZGVudGlmaWVyLCBiaW5hcnlJZGVudGlmaWVyLCBzaXplb2YoR1VJ
RCkpICE9IDApCisgICAgeworICAgICAgICBpbmZvTG9nLmFwcGVuZCgiSW52YWxpZCBwcm9ncmFt
IGJpbmFyeS4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IGNo
YXIgKnBpeGVsU2hhZGVyRnVuY3Rpb24gPSBwdHI7CisgICAgcHRyICs9IHBpeGVsU2hhZGVyU2l6
ZTsKKworICAgIGNvbnN0IGNoYXIgKnZlcnRleFNoYWRlckZ1bmN0aW9uID0gcHRyOworICAgIHB0
ciArPSB2ZXJ0ZXhTaGFkZXJTaXplOworCisgICAgY29uc3QgY2hhciAqZ2VvbWV0cnlTaGFkZXJG
dW5jdGlvbiA9IGdlb21ldHJ5U2hhZGVyU2l6ZSA+IDAgPyBwdHIgOiBOVUxMOworICAgIHB0ciAr
PSBnZW9tZXRyeVNoYWRlclNpemU7CisKKyAgICBtUGl4ZWxFeGVjdXRhYmxlID0gbVJlbmRlcmVy
LT5sb2FkRXhlY3V0YWJsZShyZWludGVycHJldF9jYXN0PGNvbnN0IERXT1JEKj4ocGl4ZWxTaGFk
ZXJGdW5jdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGl4ZWxTaGFkZXJTaXplLCByeDo6U0hBREVSX1BJWEVMKTsKKyAgICBpZiAoIW1QaXhl
bEV4ZWN1dGFibGUpCisgICAgeworICAgICAgICBpbmZvTG9nLmFwcGVuZCgiQ291bGQgbm90IGNy
ZWF0ZSBwaXhlbCBzaGFkZXIuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBtVmVydGV4RXhlY3V0YWJsZSA9IG1SZW5kZXJlci0+bG9hZEV4ZWN1dGFibGUocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBEV09SRCo+KHZlcnRleFNoYWRlckZ1bmN0aW9uKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyU2l6ZSwg
cng6OlNIQURFUl9WRVJURVgpOworICAgIGlmICghbVZlcnRleEV4ZWN1dGFibGUpCisgICAgewor
ICAgICAgICBpbmZvTG9nLmFwcGVuZCgiQ291bGQgbm90IGNyZWF0ZSB2ZXJ0ZXggc2hhZGVyLiIp
OworICAgICAgICBkZWxldGUgbVBpeGVsRXhlY3V0YWJsZTsKKyAgICAgICAgbVBpeGVsRXhlY3V0
YWJsZSA9IE5VTEw7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoZ2Vv
bWV0cnlTaGFkZXJGdW5jdGlvbiAhPSBOVUxMICYmIGdlb21ldHJ5U2hhZGVyU2l6ZSA+IDApCisg
ICAgeworICAgICAgICBtR2VvbWV0cnlFeGVjdXRhYmxlID0gbVJlbmRlcmVyLT5sb2FkRXhlY3V0
YWJsZShyZWludGVycHJldF9jYXN0PGNvbnN0IERXT1JEKj4oZ2VvbWV0cnlTaGFkZXJGdW5jdGlv
biksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdlb21ldHJ5U2hhZGVyU2l6ZSwgcng6OlNIQURFUl9HRU9NRVRSWSk7CisgICAgICAgIGlm
ICghbUdlb21ldHJ5RXhlY3V0YWJsZSkKKyAgICAgICAgeworICAgICAgICAgICAgaW5mb0xvZy5h
cHBlbmQoIkNvdWxkIG5vdCBjcmVhdGUgZ2VvbWV0cnkgc2hhZGVyLiIpOworICAgICAgICAgICAg
ZGVsZXRlIG1QaXhlbEV4ZWN1dGFibGU7CisgICAgICAgICAgICBtUGl4ZWxFeGVjdXRhYmxlID0g
TlVMTDsKKyAgICAgICAgICAgIGRlbGV0ZSBtVmVydGV4RXhlY3V0YWJsZTsKKyAgICAgICAgICAg
IG1WZXJ0ZXhFeGVjdXRhYmxlID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtR2VvbWV0cnlFeGVjdXRh
YmxlID0gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9ncmFt
QmluYXJ5OjpzYXZlKHZvaWQqIGJpbmFyeSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5n
dGgpCit7CisgICAgQmluYXJ5T3V0cHV0U3RyZWFtIHN0cmVhbTsKKworICAgIHN0cmVhbS53cml0
ZShHTF9QUk9HUkFNX0JJTkFSWV9BTkdMRSk7CisgICAgc3RyZWFtLndyaXRlKFZFUlNJT05fRFdP
UkQpOworICAgIHN0cmVhbS53cml0ZShBTkdMRV9DT01QSUxFX09QVElNSVpBVElPTl9MRVZFTCk7
CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IE1BWF9WRVJURVhfQVRUUklCUzsg
KytpKQorICAgIHsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1MaW5rZWRBdHRyaWJ1dGVbaV0udHlw
ZSk7CisgICAgICAgIHN0cmVhbS53cml0ZShtTGlua2VkQXR0cmlidXRlW2ldLm5hbWUpOworICAg
ICAgICBzdHJlYW0ud3JpdGUobVNlbWFudGljSW5kZXhbaV0pOworICAgIH0KKworICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7ICsraSkKKyAg
ICB7CisgICAgICAgIHN0cmVhbS53cml0ZShtU2FtcGxlcnNQU1tpXS5hY3RpdmUpOworICAgICAg
ICBzdHJlYW0ud3JpdGUobVNhbXBsZXJzUFNbaV0ubG9naWNhbFRleHR1cmVVbml0KTsKKyAgICAg
ICAgc3RyZWFtLndyaXRlKChpbnQpIG1TYW1wbGVyc1BTW2ldLnRleHR1cmVUeXBlKTsKKyAgICB9
CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IElNUExFTUVOVEFUSU9OX01BWF9W
RVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUzsgKytpKQorICAgIHsKKyAgICAgICAgc3RyZWFtLndy
aXRlKG1TYW1wbGVyc1ZTW2ldLmFjdGl2ZSk7CisgICAgICAgIHN0cmVhbS53cml0ZShtU2FtcGxl
cnNWU1tpXS5sb2dpY2FsVGV4dHVyZVVuaXQpOworICAgICAgICBzdHJlYW0ud3JpdGUoKGludCkg
bVNhbXBsZXJzVlNbaV0udGV4dHVyZVR5cGUpOworICAgIH0KKworICAgIHN0cmVhbS53cml0ZSht
VXNlZFZlcnRleFNhbXBsZXJSYW5nZSk7CisgICAgc3RyZWFtLndyaXRlKG1Vc2VkUGl4ZWxTYW1w
bGVyUmFuZ2UpOworICAgIHN0cmVhbS53cml0ZShtVXNlc1BvaW50U2l6ZSk7CisKKyAgICBzdHJl
YW0ud3JpdGUobVVuaWZvcm1zLnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBtVW5pZm9ybXMuc2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBzdHJlYW0ud3JpdGUo
bVVuaWZvcm1zW2ldLT50eXBlKTsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1Vbmlmb3Jtc1tpXS0+
cHJlY2lzaW9uKTsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1Vbmlmb3Jtc1tpXS0+bmFtZSk7Cisg
ICAgICAgIHN0cmVhbS53cml0ZShtVW5pZm9ybXNbaV0tPmFycmF5U2l6ZSk7CisKKyAgICAgICAg
c3RyZWFtLndyaXRlKG1Vbmlmb3Jtc1tpXS0+cHNSZWdpc3RlckluZGV4KTsKKyAgICAgICAgc3Ry
ZWFtLndyaXRlKG1Vbmlmb3Jtc1tpXS0+dnNSZWdpc3RlckluZGV4KTsKKyAgICAgICAgc3RyZWFt
LndyaXRlKG1Vbmlmb3Jtc1tpXS0+cmVnaXN0ZXJDb3VudCk7CisgICAgfQorCisgICAgc3RyZWFt
LndyaXRlKG1Vbmlmb3JtSW5kZXguc2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IG1Vbmlmb3JtSW5kZXguc2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBzdHJlYW0u
d3JpdGUobVVuaWZvcm1JbmRleFtpXS5uYW1lKTsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1Vbmlm
b3JtSW5kZXhbaV0uZWxlbWVudCk7CisgICAgICAgIHN0cmVhbS53cml0ZShtVW5pZm9ybUluZGV4
W2ldLmluZGV4KTsKKyAgICB9CisKKyAgICBVSU5UIHBpeGVsU2hhZGVyU2l6ZSA9IG1QaXhlbEV4
ZWN1dGFibGUtPmdldExlbmd0aCgpOworICAgIHN0cmVhbS53cml0ZShwaXhlbFNoYWRlclNpemUp
OworCisgICAgVUlOVCB2ZXJ0ZXhTaGFkZXJTaXplID0gbVZlcnRleEV4ZWN1dGFibGUtPmdldExl
bmd0aCgpOworICAgIHN0cmVhbS53cml0ZSh2ZXJ0ZXhTaGFkZXJTaXplKTsKKworICAgIFVJTlQg
Z2VvbWV0cnlTaGFkZXJTaXplID0gKG1HZW9tZXRyeUV4ZWN1dGFibGUgIT0gTlVMTCkgPyBtR2Vv
bWV0cnlFeGVjdXRhYmxlLT5nZXRMZW5ndGgoKSA6IDA7CisgICAgc3RyZWFtLndyaXRlKGdlb21l
dHJ5U2hhZGVyU2l6ZSk7CisKKyAgICBHVUlEIGlkZW50aWZpZXIgPSBtUmVuZGVyZXItPmdldEFk
YXB0ZXJJZGVudGlmaWVyKCk7CisKKyAgICBHTHNpemVpIHN0cmVhbUxlbmd0aCA9IHN0cmVhbS5s
ZW5ndGgoKTsKKyAgICBjb25zdCB2b2lkICpzdHJlYW1EYXRhID0gc3RyZWFtLmRhdGEoKTsKKwor
ICAgIEdMc2l6ZWkgdG90YWxMZW5ndGggPSBzdHJlYW1MZW5ndGggKyBzaXplb2YoR1VJRCkgKyBw
aXhlbFNoYWRlclNpemUgKyB2ZXJ0ZXhTaGFkZXJTaXplICsgZ2VvbWV0cnlTaGFkZXJTaXplOwor
ICAgIGlmICh0b3RhbExlbmd0aCA+IGJ1ZlNpemUpCisgICAgeworICAgICAgICBpZiAobGVuZ3Ro
KQorICAgICAgICB7CisgICAgICAgICAgICAqbGVuZ3RoID0gMDsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoYmluYXJ5KQorICAgIHsKKyAgICAg
ICAgY2hhciAqcHRyID0gKGNoYXIqKSBiaW5hcnk7CisKKyAgICAgICAgbWVtY3B5KHB0ciwgc3Ry
ZWFtRGF0YSwgc3RyZWFtTGVuZ3RoKTsKKyAgICAgICAgcHRyICs9IHN0cmVhbUxlbmd0aDsKKwor
ICAgICAgICBtZW1jcHkocHRyLCAmaWRlbnRpZmllciwgc2l6ZW9mKEdVSUQpKTsKKyAgICAgICAg
cHRyICs9IHNpemVvZihHVUlEKTsKKworICAgICAgICBtZW1jcHkocHRyLCBtUGl4ZWxFeGVjdXRh
YmxlLT5nZXRGdW5jdGlvbigpLCBwaXhlbFNoYWRlclNpemUpOworICAgICAgICBwdHIgKz0gcGl4
ZWxTaGFkZXJTaXplOworCisgICAgICAgIG1lbWNweShwdHIsIG1WZXJ0ZXhFeGVjdXRhYmxlLT5n
ZXRGdW5jdGlvbigpLCB2ZXJ0ZXhTaGFkZXJTaXplKTsKKyAgICAgICAgcHRyICs9IHZlcnRleFNo
YWRlclNpemU7CisKKyAgICAgICAgaWYgKG1HZW9tZXRyeUV4ZWN1dGFibGUgIT0gTlVMTCAmJiBn
ZW9tZXRyeVNoYWRlclNpemUgPiAwKQorICAgICAgICB7CisgICAgICAgICAgICBtZW1jcHkocHRy
LCBtR2VvbWV0cnlFeGVjdXRhYmxlLT5nZXRGdW5jdGlvbigpLCBnZW9tZXRyeVNoYWRlclNpemUp
OworICAgICAgICAgICAgcHRyICs9IGdlb21ldHJ5U2hhZGVyU2l6ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIEFTU0VSVChwdHIgLSB0b3RhbExlbmd0aCA9PSBiaW5hcnkpOworICAgIH0KKworICAg
IGlmIChsZW5ndGgpCisgICAgeworICAgICAgICAqbGVuZ3RoID0gdG90YWxMZW5ndGg7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0dMaW50IFByb2dyYW1CaW5hcnk6OmdldExlbmd0
aCgpCit7CisgICAgR0xpbnQgbGVuZ3RoOworICAgIGlmIChzYXZlKE5VTEwsIElOVF9NQVgsICZs
ZW5ndGgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitib29sIFByb2dyYW1CaW5hcnk6
OmxpbmsoSW5mb0xvZyAmaW5mb0xvZywgY29uc3QgQXR0cmlidXRlQmluZGluZ3MgJmF0dHJpYnV0
ZUJpbmRpbmdzLCBGcmFnbWVudFNoYWRlciAqZnJhZ21lbnRTaGFkZXIsIFZlcnRleFNoYWRlciAq
dmVydGV4U2hhZGVyKQoreworICAgIGlmICghZnJhZ21lbnRTaGFkZXIgfHwgIWZyYWdtZW50U2hh
ZGVyLT5pc0NvbXBpbGVkKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgaWYgKCF2ZXJ0ZXhTaGFkZXIgfHwgIXZlcnRleFNoYWRlci0+aXNDb21waWxlZCgpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIHBp
eGVsSExTTCA9IGZyYWdtZW50U2hhZGVyLT5nZXRITFNMKCk7CisgICAgc3RkOjpzdHJpbmcgdmVy
dGV4SExTTCA9IHZlcnRleFNoYWRlci0+Z2V0SExTTCgpOworCisgICAgLy8gTWFwIHRoZSB2YXJ5
aW5ncyB0byB0aGUgcmVnaXN0ZXIgZmlsZQorICAgIGNvbnN0IFZhcnlpbmcgKnBhY2tpbmdbSU1Q
TEVNRU5UQVRJT05fTUFYX1ZBUllJTkdfVkVDVE9SU11bNF0gPSB7TlVMTH07CisgICAgaW50IHJl
Z2lzdGVycyA9IHBhY2tWYXJ5aW5ncyhpbmZvTG9nLCBwYWNraW5nLCBmcmFnbWVudFNoYWRlcik7
CisKKyAgICBpZiAocmVnaXN0ZXJzIDwgMCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBpZiAoIWxpbmtWYXJ5aW5ncyhpbmZvTG9nLCByZWdpc3RlcnMsIHBhY2tp
bmcsIHBpeGVsSExTTCwgdmVydGV4SExTTCwgZnJhZ21lbnRTaGFkZXIsIHZlcnRleFNoYWRlcikp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCBzdWNjZXNz
ID0gdHJ1ZTsKKworICAgIGlmICghbGlua0F0dHJpYnV0ZXMoaW5mb0xvZywgYXR0cmlidXRlQmlu
ZGluZ3MsIGZyYWdtZW50U2hhZGVyLCB2ZXJ0ZXhTaGFkZXIpKQorICAgIHsKKyAgICAgICAgc3Vj
Y2VzcyA9IGZhbHNlOworICAgIH0KKworICAgIGlmICghbGlua1VuaWZvcm1zKGluZm9Mb2csIHZl
cnRleFNoYWRlci0+Z2V0VW5pZm9ybXMoKSwgZnJhZ21lbnRTaGFkZXItPmdldFVuaWZvcm1zKCkp
KQorICAgIHsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgIH0KKworICAgIC8vIHNwZWNp
YWwgY2FzZSBmb3IgZ2xfRGVwdGhSYW5nZSwgdGhlIG9ubHkgYnVpbHQtaW4gdW5pZm9ybSAoYWxz
byBhIHN0cnVjdCkKKyAgICBpZiAodmVydGV4U2hhZGVyLT5tVXNlc0RlcHRoUmFuZ2UgfHwgZnJh
Z21lbnRTaGFkZXItPm1Vc2VzRGVwdGhSYW5nZSkKKyAgICB7CisgICAgICAgIG1Vbmlmb3Jtcy5w
dXNoX2JhY2sobmV3IFVuaWZvcm0oR0xfRkxPQVQsIEdMX0hJR0hfRkxPQVQsICJnbF9EZXB0aFJh
bmdlLm5lYXIiLCAwKSk7CisgICAgICAgIG1Vbmlmb3Jtcy5wdXNoX2JhY2sobmV3IFVuaWZvcm0o
R0xfRkxPQVQsIEdMX0hJR0hfRkxPQVQsICJnbF9EZXB0aFJhbmdlLmZhciIsIDApKTsKKyAgICAg
ICAgbVVuaWZvcm1zLnB1c2hfYmFjayhuZXcgVW5pZm9ybShHTF9GTE9BVCwgR0xfSElHSF9GTE9B
VCwgImdsX0RlcHRoUmFuZ2UuZGlmZiIsIDApKTsKKyAgICB9CisKKyAgICBpZiAoc3VjY2VzcykK
KyAgICB7CisgICAgICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gbVJlbmRlcmVyLT5jb21waWxlVG9F
eGVjdXRhYmxlKGluZm9Mb2csIHZlcnRleEhMU0wuY19zdHIoKSwgcng6OlNIQURFUl9WRVJURVgp
OworICAgICAgICBtUGl4ZWxFeGVjdXRhYmxlID0gbVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRh
YmxlKGluZm9Mb2csIHBpeGVsSExTTC5jX3N0cigpLCByeDo6U0hBREVSX1BJWEVMKTsKKworICAg
ICAgICBpZiAodXNlc0dlb21ldHJ5U2hhZGVyKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
ZDo6c3RyaW5nIGdlb21ldHJ5SExTTCA9IGdlbmVyYXRlR2VvbWV0cnlTaGFkZXJITFNMKHJlZ2lz
dGVycywgcGFja2luZywgZnJhZ21lbnRTaGFkZXIsIHZlcnRleFNoYWRlcik7CisgICAgICAgICAg
ICBtR2VvbWV0cnlFeGVjdXRhYmxlID0gbVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxlKGlu
Zm9Mb2csIGdlb21ldHJ5SExTTC5jX3N0cigpLCByeDo6U0hBREVSX0dFT01FVFJZKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghbVZlcnRleEV4ZWN1dGFibGUgfHwgIW1QaXhlbEV4ZWN1dGFi
bGUgfHwgKHVzZXNHZW9tZXRyeVNoYWRlcigpICYmICFtR2VvbWV0cnlFeGVjdXRhYmxlKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkZhaWxlZCB0byBjcmVhdGUgRDNE
IHNoYWRlcnMuIik7CisgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisKKyAgICAgICAgICAg
IGRlbGV0ZSBtVmVydGV4RXhlY3V0YWJsZTsKKyAgICAgICAgICAgIG1WZXJ0ZXhFeGVjdXRhYmxl
ID0gTlVMTDsKKyAgICAgICAgICAgIGRlbGV0ZSBtUGl4ZWxFeGVjdXRhYmxlOworICAgICAgICAg
ICAgbVBpeGVsRXhlY3V0YWJsZSA9IE5VTEw7CisgICAgICAgICAgICBkZWxldGUgbUdlb21ldHJ5
RXhlY3V0YWJsZTsKKyAgICAgICAgICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgPSBOVUxMOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKKy8vIERldGVybWluZXMg
dGhlIG1hcHBpbmcgYmV0d2VlbiBHTCBhdHRyaWJ1dGVzIGFuZCBEaXJlY3QzRCA5IHZlcnRleCBz
dHJlYW0gdXNhZ2UgaW5kaWNlcworYm9vbCBQcm9ncmFtQmluYXJ5OjpsaW5rQXR0cmlidXRlcyhJ
bmZvTG9nICZpbmZvTG9nLCBjb25zdCBBdHRyaWJ1dGVCaW5kaW5ncyAmYXR0cmlidXRlQmluZGlu
Z3MsIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlciwgVmVydGV4U2hhZGVyICp2ZXJ0ZXhT
aGFkZXIpCit7CisgICAgdW5zaWduZWQgaW50IHVzZWRMb2NhdGlvbnMgPSAwOworCisgICAgLy8g
TGluayBhdHRyaWJ1dGVzIHRoYXQgaGF2ZSBhIGJpbmRpbmcgbG9jYXRpb24KKyAgICBmb3IgKEF0
dHJpYnV0ZUFycmF5OjppdGVyYXRvciBhdHRyaWJ1dGUgPSB2ZXJ0ZXhTaGFkZXItPm1BdHRyaWJ1
dGVzLmJlZ2luKCk7IGF0dHJpYnV0ZSAhPSB2ZXJ0ZXhTaGFkZXItPm1BdHRyaWJ1dGVzLmVuZCgp
OyBhdHRyaWJ1dGUrKykKKyAgICB7CisgICAgICAgIGludCBsb2NhdGlvbiA9IGF0dHJpYnV0ZUJp
bmRpbmdzLmdldEF0dHJpYnV0ZUJpbmRpbmcoYXR0cmlidXRlLT5uYW1lKTsKKworICAgICAgICBp
ZiAobG9jYXRpb24gIT0gLTEpICAgLy8gU2V0IGJ5IGdsQmluZEF0dHJpYkxvY2F0aW9uCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghbUxpbmtlZEF0dHJpYnV0ZVtsb2NhdGlvbl0ubmFtZS5l
bXB0eSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIE11bHRpcGxlIGFjdGl2
ZSBhdHRyaWJ1dGVzIGJvdW5kIHRvIHRoZSBzYW1lIGxvY2F0aW9uOyBub3QgYW4gZXJyb3IKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgbUxpbmtlZEF0dHJpYnV0ZVtsb2NhdGlvbl0gPSAq
YXR0cmlidXRlOworCisgICAgICAgICAgICBpbnQgcm93cyA9IFZhcmlhYmxlUm93Q291bnQoYXR0
cmlidXRlLT50eXBlKTsKKworICAgICAgICAgICAgaWYgKHJvd3MgKyBsb2NhdGlvbiA+IE1BWF9W
RVJURVhfQVRUUklCUykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbmZvTG9nLmFw
cGVuZCgiQWN0aXZlIGF0dHJpYnV0ZSAoJXMpIGF0IGxvY2F0aW9uICVkIGlzIHRvbyBiaWcgdG8g
Zml0IiwgYXR0cmlidXRlLT5uYW1lLmNfc3RyKCksIGxvY2F0aW9uKTsKKworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCByb3dzOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdXNl
ZExvY2F0aW9ucyB8PSAxIDw8IChsb2NhdGlvbiArIGkpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gTGluayBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3QgaGF2ZSBhIGJp
bmRpbmcgbG9jYXRpb24KKyAgICBmb3IgKEF0dHJpYnV0ZUFycmF5OjppdGVyYXRvciBhdHRyaWJ1
dGUgPSB2ZXJ0ZXhTaGFkZXItPm1BdHRyaWJ1dGVzLmJlZ2luKCk7IGF0dHJpYnV0ZSAhPSB2ZXJ0
ZXhTaGFkZXItPm1BdHRyaWJ1dGVzLmVuZCgpOyBhdHRyaWJ1dGUrKykKKyAgICB7CisgICAgICAg
IGludCBsb2NhdGlvbiA9IGF0dHJpYnV0ZUJpbmRpbmdzLmdldEF0dHJpYnV0ZUJpbmRpbmcoYXR0
cmlidXRlLT5uYW1lKTsKKworICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEpICAgLy8gTm90IHNl
dCBieSBnbEJpbmRBdHRyaWJMb2NhdGlvbgorICAgICAgICB7CisgICAgICAgICAgICBpbnQgcm93
cyA9IFZhcmlhYmxlUm93Q291bnQoYXR0cmlidXRlLT50eXBlKTsKKyAgICAgICAgICAgIGludCBh
dmFpbGFibGVJbmRleCA9IEFsbG9jYXRlRmlyc3RGcmVlQml0cygmdXNlZExvY2F0aW9ucywgcm93
cywgTUFYX1ZFUlRFWF9BVFRSSUJTKTsKKworICAgICAgICAgICAgaWYgKGF2YWlsYWJsZUluZGV4
ID09IC0xIHx8IGF2YWlsYWJsZUluZGV4ICsgcm93cyA+IE1BWF9WRVJURVhfQVRUUklCUykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiVG9vIG1hbnkgYWN0
aXZlIGF0dHJpYnV0ZXMgKCVzKSIsIGF0dHJpYnV0ZS0+bmFtZS5jX3N0cigpKTsKKworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsgICAvLyBGYWlsIHRvIGxpbmsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgbUxpbmtlZEF0dHJpYnV0ZVthdmFpbGFibGVJbmRleF0gPSAqYXR0cmli
dXRlOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChpbnQgYXR0cmlidXRlSW5kZXggPSAw
OyBhdHRyaWJ1dGVJbmRleCA8IE1BWF9WRVJURVhfQVRUUklCUzsgKQorICAgIHsKKyAgICAgICAg
aW50IGluZGV4ID0gdmVydGV4U2hhZGVyLT5nZXRTZW1hbnRpY0luZGV4KG1MaW5rZWRBdHRyaWJ1
dGVbYXR0cmlidXRlSW5kZXhdLm5hbWUpOworICAgICAgICBpbnQgcm93cyA9IHN0ZDo6bWF4KFZh
cmlhYmxlUm93Q291bnQobUxpbmtlZEF0dHJpYnV0ZVthdHRyaWJ1dGVJbmRleF0udHlwZSksIDEp
OworCisgICAgICAgIGZvciAoaW50IHIgPSAwOyByIDwgcm93czsgcisrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtU2VtYW50aWNJbmRleFthdHRyaWJ1dGVJbmRleCsrXSA9IGluZGV4Kys7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9ncmFtQmlu
YXJ5OjpsaW5rVW5pZm9ybXMoSW5mb0xvZyAmaW5mb0xvZywgY29uc3Qgc2g6OkFjdGl2ZVVuaWZv
cm1zICZ2ZXJ0ZXhVbmlmb3JtcywgY29uc3Qgc2g6OkFjdGl2ZVVuaWZvcm1zICZmcmFnbWVudFVu
aWZvcm1zKQoreworICAgIGZvciAoc2g6OkFjdGl2ZVVuaWZvcm1zOjpjb25zdF9pdGVyYXRvciB1
bmlmb3JtID0gdmVydGV4VW5pZm9ybXMuYmVnaW4oKTsgdW5pZm9ybSAhPSB2ZXJ0ZXhVbmlmb3Jt
cy5lbmQoKTsgdW5pZm9ybSsrKQorICAgIHsKKyAgICAgICAgaWYgKCFkZWZpbmVVbmlmb3JtKEdM
X1ZFUlRFWF9TSEFERVIsICp1bmlmb3JtLCBpbmZvTG9nKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChzaDo6QWN0aXZl
VW5pZm9ybXM6OmNvbnN0X2l0ZXJhdG9yIHVuaWZvcm0gPSBmcmFnbWVudFVuaWZvcm1zLmJlZ2lu
KCk7IHVuaWZvcm0gIT0gZnJhZ21lbnRVbmlmb3Jtcy5lbmQoKTsgdW5pZm9ybSsrKQorICAgIHsK
KyAgICAgICAgaWYgKCFkZWZpbmVVbmlmb3JtKEdMX0ZSQUdNRU5UX1NIQURFUiwgKnVuaWZvcm0s
IGluZm9Mb2cpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9ncmFtQmluYXJ5Ojpk
ZWZpbmVVbmlmb3JtKEdMZW51bSBzaGFkZXIsIGNvbnN0IHNoOjpVbmlmb3JtICZjb25zdGFudCwg
SW5mb0xvZyAmaW5mb0xvZykKK3sKKyAgICBpZiAoY29uc3RhbnQudHlwZSA9PSBHTF9TQU1QTEVS
XzJEIHx8CisgICAgICAgIGNvbnN0YW50LnR5cGUgPT0gR0xfU0FNUExFUl9DVUJFKQorICAgIHsK
KyAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCA9IGNvbnN0YW50LnJlZ2lzdGVySW5k
ZXg7CisgICAgICAgICAgICAKKyAgICAgICAgZG8KKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHNoYWRlciA9PSBHTF9WRVJURVhfU0hBREVSKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGlmIChzYW1wbGVySW5kZXggPCBtUmVuZGVyZXItPmdldE1heFZlcnRleFRleHR1cmVJbWFn
ZVVuaXRzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtU2FtcGxl
cnNWU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1T
YW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0udGV4dHVyZVR5cGUgPSAoY29uc3RhbnQudHlwZSA9PSBH
TF9TQU1QTEVSX0NVQkUpID8gVEVYVFVSRV9DVUJFIDogVEVYVFVSRV8yRDsKKyAgICAgICAgICAg
ICAgICAgICAgbVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5sb2dpY2FsVGV4dHVyZVVuaXQgPSAw
OworICAgICAgICAgICAgICAgICAgICBtVXNlZFZlcnRleFNhbXBsZXJSYW5nZSA9IHN0ZDo6bWF4
KHNhbXBsZXJJbmRleCArIDEsIG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIlZlcnRleCBzaGFkZXIgc2FtcGxlciBjb3VudCBl
eGNlZWRzIHRoZSBtYXhpbXVtIHZlcnRleCB0ZXh0dXJlIHVuaXRzICglZCkuIiwgbVJlbmRlcmVy
LT5nZXRNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgaWYgKHNoYWRlciA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKHNhbXBsZXJJbmRleCA8IE1BWF9URVhUVVJFX0lNQUdFX1VO
SVRTKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbVNhbXBsZXJzUFNb
c2FtcGxlckluZGV4XS5hY3RpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtU2FtcGxl
cnNQU1tzYW1wbGVySW5kZXhdLnRleHR1cmVUeXBlID0gKGNvbnN0YW50LnR5cGUgPT0gR0xfU0FN
UExFUl9DVUJFKSA/IFRFWFRVUkVfQ1VCRSA6IFRFWFRVUkVfMkQ7CisgICAgICAgICAgICAgICAg
ICAgIG1TYW1wbGVyc1BTW3NhbXBsZXJJbmRleF0ubG9naWNhbFRleHR1cmVVbml0ID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgbVVzZWRQaXhlbFNhbXBsZXJSYW5nZSA9IHN0ZDo6bWF4KHNhbXBs
ZXJJbmRleCArIDEsIG1Vc2VkUGl4ZWxTYW1wbGVyUmFuZ2UpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBpbmZvTG9nLmFwcGVuZCgiUGl4ZWwgc2hhZGVyIHNhbXBsZXIgY291bnQgZXhjZWVkcyBN
QVhfVEVYVFVSRV9JTUFHRV9VTklUUyAoJWQpLiIsIE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKworICAgICAgICAg
ICAgc2FtcGxlckluZGV4Kys7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKHNhbXBsZXJJbmRl
eCA8IGNvbnN0YW50LnJlZ2lzdGVySW5kZXggKyBjb25zdGFudC5hcnJheVNpemUpOworICAgIH0K
KworICAgIFVuaWZvcm0gKnVuaWZvcm0gPSBOVUxMOworICAgIEdMaW50IGxvY2F0aW9uID0gZ2V0
VW5pZm9ybUxvY2F0aW9uKGNvbnN0YW50Lm5hbWUpOworCisgICAgaWYgKGxvY2F0aW9uID49IDAp
ICAgLy8gUHJldmlvdXNseSBkZWZpbmVkLCB0eXBlIGFuZCBwcmVjaXNpb24gbXVzdCBtYXRjaAor
ICAgIHsKKyAgICAgICAgdW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9u
XS5pbmRleF07CisKKyAgICAgICAgaWYgKHVuaWZvcm0tPnR5cGUgIT0gY29uc3RhbnQudHlwZSkK
KyAgICAgICAgeworICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIlR5cGVzIGZvciB1bmlmb3Jt
ICVzIGRvIG5vdCBtYXRjaCBiZXR3ZWVuIHRoZSB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlciIs
IHVuaWZvcm0tPm5hbWUuY19zdHIoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAodW5pZm9ybS0+cHJlY2lzaW9uICE9IGNvbnN0YW50LnByZWNp
c2lvbikKKyAgICAgICAgeworICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIlByZWNpc2lvbnMg
Zm9yIHVuaWZvcm0gJXMgZG8gbm90IG1hdGNoIGJldHdlZW4gdGhlIHZlcnRleCBhbmQgZnJhZ21l
bnQgc2hhZGVyIiwgdW5pZm9ybS0+bmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICB1bmlmb3Jt
ID0gbmV3IFVuaWZvcm0oY29uc3RhbnQudHlwZSwgY29uc3RhbnQucHJlY2lzaW9uLCBjb25zdGFu
dC5uYW1lLCBjb25zdGFudC5hcnJheVNpemUpOworICAgIH0KKworICAgIGlmICghdW5pZm9ybSkK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc2hhZGVyID09
IEdMX0ZSQUdNRU5UX1NIQURFUikKKyAgICB7CisgICAgICAgIHVuaWZvcm0tPnBzUmVnaXN0ZXJJ
bmRleCA9IGNvbnN0YW50LnJlZ2lzdGVySW5kZXg7CisgICAgfQorICAgIGVsc2UgaWYgKHNoYWRl
ciA9PSBHTF9WRVJURVhfU0hBREVSKQorICAgIHsKKyAgICAgICAgdW5pZm9ybS0+dnNSZWdpc3Rl
ckluZGV4ID0gY29uc3RhbnQucmVnaXN0ZXJJbmRleDsKKyAgICB9CisgICAgZWxzZSBVTlJFQUNI
QUJMRSgpOworCisgICAgaWYgKGxvY2F0aW9uID49IDApCisgICAgeworICAgICAgICByZXR1cm4g
dW5pZm9ybS0+dHlwZSA9PSBjb25zdGFudC50eXBlOworICAgIH0KKworICAgIG1Vbmlmb3Jtcy5w
dXNoX2JhY2sodW5pZm9ybSk7CisgICAgdW5zaWduZWQgaW50IHVuaWZvcm1JbmRleCA9IG1Vbmlm
b3Jtcy5zaXplKCkgLSAxOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB1bmlm
b3JtLT5lbGVtZW50Q291bnQoKTsgaSsrKQorICAgIHsKKyAgICAgICAgbVVuaWZvcm1JbmRleC5w
dXNoX2JhY2soVW5pZm9ybUxvY2F0aW9uKGNvbnN0YW50Lm5hbWUsIGksIHVuaWZvcm1JbmRleCkp
OworICAgIH0KKworICAgIGlmIChzaGFkZXIgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICB7Cisg
ICAgICAgIGlmIChjb25zdGFudC5yZWdpc3RlckluZGV4ICsgdW5pZm9ybS0+cmVnaXN0ZXJDb3Vu
dCA+IG1SZW5kZXJlci0+Z2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpICsgbVJlbmRl
cmVyLT5nZXRNYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpKQorICAgICAgICB7CisgICAgICAgICAg
ICBpbmZvTG9nLmFwcGVuZCgiVmVydGV4IHNoYWRlciBhY3RpdmUgdW5pZm9ybXMgZXhjZWVkIEdM
X01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTICgldSkiLCBtUmVuZGVyZXItPmdldE1heFZlcnRl
eFVuaWZvcm1WZWN0b3JzKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfQorICAgIGVsc2UgaWYgKHNoYWRlciA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCisgICAg
eworICAgICAgICBpZiAoY29uc3RhbnQucmVnaXN0ZXJJbmRleCArIHVuaWZvcm0tPnJlZ2lzdGVy
Q291bnQgPiBtUmVuZGVyZXItPmdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpICsg
bVJlbmRlcmVyLT5nZXRNYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJGcmFnbWVudCBzaGFkZXIgYWN0aXZlIHVuaWZvcm1z
IGV4Y2VlZCBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTICgldSkiLCBtUmVuZGVyZXIt
PmdldE1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0ZDo6c3RyaW5nIFByb2dyYW1CaW5hcnk6OmdlbmVyYXRlR2VvbWV0
cnlTaGFkZXJITFNMKGludCByZWdpc3RlcnMsIGNvbnN0IFZhcnlpbmcgKnBhY2tpbmdbXVs0XSwg
RnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBWZXJ0ZXhTaGFkZXIgKnZlcnRleFNoYWRl
cikgY29uc3QKK3sKKyAgICAvLyBmb3Igbm93IHdlIG9ubHkgaGFuZGxlIHBvaW50IHNwcml0ZSBl
bXVsYXRpb24KKyAgICBBU1NFUlQodXNlc1BvaW50U3ByaXRlRW11bGF0aW9uKCkpOworICAgIHJl
dHVybiBnZW5lcmF0ZVBvaW50U3ByaXRlSExTTChyZWdpc3RlcnMsIHBhY2tpbmcsIGZyYWdtZW50
U2hhZGVyLCB2ZXJ0ZXhTaGFkZXIpOworfQorCitzdGQ6OnN0cmluZyBQcm9ncmFtQmluYXJ5Ojpn
ZW5lcmF0ZVBvaW50U3ByaXRlSExTTChpbnQgcmVnaXN0ZXJzLCBjb25zdCBWYXJ5aW5nICpwYWNr
aW5nW11bNF0sIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlciwgVmVydGV4U2hhZGVyICp2
ZXJ0ZXhTaGFkZXIpIGNvbnN0Cit7CisgICAgQVNTRVJUKHJlZ2lzdGVycyA+PSAwKTsKKyAgICBB
U1NFUlQodmVydGV4U2hhZGVyLT5tVXNlc1BvaW50U2l6ZSk7CisgICAgQVNTRVJUKG1SZW5kZXJl
ci0+Z2V0TWFqb3JTaGFkZXJNb2RlbCgpID49IDQpOworCisgICAgc3RkOjpzdHJpbmcgZ2VvbUhM
U0w7CisKKyAgICBzdGQ6OnN0cmluZyB2YXJ5aW5nU2VtYW50aWMgPSAiVEVYQ09PUkQiOworCisg
ICAgc3RkOjpzdHJpbmcgZnJhZ0Nvb3JkU2VtYW50aWM7CisgICAgc3RkOjpzdHJpbmcgcG9pbnRD
b29yZFNlbWFudGljOworCisgICAgaW50IHJlc2VydmVkUmVnaXN0ZXJJbmRleCA9IHJlZ2lzdGVy
czsKKworICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnQ29vcmQpCisgICAgeworICAg
ICAgICBmcmFnQ29vcmRTZW1hbnRpYyA9IHZhcnlpbmdTZW1hbnRpYyArIHN0cihyZXNlcnZlZFJl
Z2lzdGVySW5kZXgrKyk7CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc1Bv
aW50Q29vcmQpCisgICAgeworICAgICAgICBwb2ludENvb3JkU2VtYW50aWMgPSB2YXJ5aW5nU2Vt
YW50aWMgKyBzdHIocmVzZXJ2ZWRSZWdpc3RlckluZGV4KyspOworICAgIH0KKworICAgIGdlb21I
TFNMICs9ICJ1bmlmb3JtIGZsb2F0NCBkeF9WaWV3Q29vcmRzIDogcmVnaXN0ZXIoYzEpO1xuIgor
ICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAic3RydWN0IEdTX0lOUFVUXG4i
CisgICAgICAgICAgICAgICAgIntcbiI7CisKKyAgICBmb3IgKGludCByID0gMDsgciA8IHJlZ2lz
dGVyczsgcisrKQorICAgIHsKKyAgICAgICAgaW50IHJlZ2lzdGVyU2l6ZSA9IHBhY2tpbmdbcl1b
M10gPyA0IDogKHBhY2tpbmdbcl1bMl0gPyAzIDogKHBhY2tpbmdbcl1bMV0gPyAyIDogMSkpOwor
CisgICAgICAgIGdlb21ITFNMICs9ICIgICAgZmxvYXQiICsgc3RyKHJlZ2lzdGVyU2l6ZSkgKyAi
IHYiICsgc3RyKHIpICsgIiA6ICIgKyB2YXJ5aW5nU2VtYW50aWMgKyBzdHIocikgKyAiO1xuIjsK
KyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nvb3JkKQorICAgIHsK
KyAgICAgICAgZ2VvbUhMU0wgKz0gIiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3JkIDogIiArIGZyYWdD
b29yZFNlbWFudGljICsgIjtcbiI7CisgICAgfQorCisgICAgZ2VvbUhMU0wgKz0gIiAgICBmbG9h
dCBnbF9Qb2ludFNpemUgOiBQU0laRTtcbiIKKyAgICAgICAgICAgICAgICAiICAgIGZsb2F0NCBn
bF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uO1xuIgorICAgICAgICAgICAgICAgICJ9O1xuIgorICAg
ICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAic3RydWN0IEdTX09VVFBVVFxuIgor
ICAgICAgICAgICAgICAgICJ7XG4iOworCisgICAgZm9yIChpbnQgciA9IDA7IHIgPCByZWdpc3Rl
cnM7IHIrKykKKyAgICB7CisgICAgICAgIGludCByZWdpc3RlclNpemUgPSBwYWNraW5nW3JdWzNd
ID8gNCA6IChwYWNraW5nW3JdWzJdID8gMyA6IChwYWNraW5nW3JdWzFdID8gMiA6IDEpKTsKKwor
ICAgICAgICBnZW9tSExTTCArPSAiICAgIGZsb2F0IiArIHN0cihyZWdpc3RlclNpemUpICsgIiB2
IiArIHN0cihyKSArICIgOiAiICsgdmFyeWluZ1NlbWFudGljICsgc3RyKHIpICsgIjtcbiI7Cisg
ICAgfQorCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0ZyYWdDb29yZCkKKyAgICB7Cisg
ICAgICAgIGdlb21ITFNMICs9ICIgICAgZmxvYXQ0IGdsX0ZyYWdDb29yZCA6ICIgKyBmcmFnQ29v
cmRTZW1hbnRpYyArICI7XG4iOworICAgIH0KKworICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVz
ZXNQb2ludENvb3JkKQorICAgIHsKKyAgICAgICAgZ2VvbUhMU0wgKz0gIiAgICBmbG9hdDIgZ2xf
UG9pbnRDb29yZCA6ICIgKyBwb2ludENvb3JkU2VtYW50aWMgKyAiO1xuIjsKKyAgICB9CisKKyAg
ICBnZW9tSExTTCArPSAgICIgICAgZmxvYXQgZ2xfUG9pbnRTaXplIDogUFNJWkU7XG4iCisgICAg
ICAgICAgICAgICAgICAiICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uO1xuIgor
ICAgICAgICAgICAgICAgICAgIn07XG4iCisgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAg
ICAgICAgICAgICAic3RhdGljIGZsb2F0MiBwb2ludFNwcml0ZUNvcm5lcnNbXSA9IFxuIgorICAg
ICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyKCAwLjVm
LCAtMC41ZiksXG4iCisgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MiggMC41ZiwgIDAuNWYp
LFxuIgorICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIoLTAuNWYsIC0wLjVmKSxcbiIKKyAg
ICAgICAgICAgICAgICAgICIgICAgZmxvYXQyKC0wLjVmLCAgMC41ZilcbiIKKyAgICAgICAgICAg
ICAgICAgICJ9O1xuIgorICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAg
InN0YXRpYyBmbG9hdDIgcG9pbnRTcHJpdGVUZXhjb29yZHNbXSA9IFxuIgorICAgICAgICAgICAg
ICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyKDEuMGYsIDEuMGYpLFxu
IgorICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIoMS4wZiwgMC4wZiksXG4iCisgICAgICAg
ICAgICAgICAgICAiICAgIGZsb2F0MigwLjBmLCAxLjBmKSxcbiIKKyAgICAgICAgICAgICAgICAg
ICIgICAgZmxvYXQyKDAuMGYsIDAuMGYpXG4iCisgICAgICAgICAgICAgICAgICAifTtcbiIKKyAg
ICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQgbWlu
UG9pbnRTaXplID0gIiArIHN0cihBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0VfTUlOKSArICIuMGY7
XG4iCisgICAgICAgICAgICAgICAgICAic3RhdGljIGZsb2F0IG1heFBvaW50U2l6ZSA9ICIgKyBz
dHIobVJlbmRlcmVyLT5nZXRNYXhQb2ludFNpemUoKSkgKyAiLjBmO1xuIgorICAgICAgICAgICAg
ICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgIlttYXh2ZXJ0ZXhjb3VudCg0KV1cbiIKKyAg
ICAgICAgICAgICAgICAgICJ2b2lkIG1haW4ocG9pbnQgR1NfSU5QVVQgaW5wdXRbMV0sIGlub3V0
IFRyaWFuZ2xlU3RyZWFtPEdTX09VVFBVVD4gb3V0U3RyZWFtKVxuIgorICAgICAgICAgICAgICAg
ICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICIgICAgR1NfT1VUUFVUIG91dHB1dCA9IChHU19P
VVRQVVQpMDtcbiIKKyAgICAgICAgICAgICAgICAgICIgICAgb3V0cHV0LmdsX1BvaW50U2l6ZSA9
IGlucHV0WzBdLmdsX1BvaW50U2l6ZTtcbiI7CisKKyAgICBmb3IgKGludCByID0gMDsgciA8IHJl
Z2lzdGVyczsgcisrKQorICAgIHsKKyAgICAgICAgZ2VvbUhMU0wgKz0gIiAgICBvdXRwdXQudiIg
KyBzdHIocikgKyAiID0gaW5wdXRbMF0udiIgKyBzdHIocikgKyAiO1xuIjsKKyAgICB9CisKKyAg
ICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nvb3JkKQorICAgIHsKKyAgICAgICAgZ2Vv
bUhMU0wgKz0gIiAgICBvdXRwdXQuZ2xfRnJhZ0Nvb3JkID0gaW5wdXRbMF0uZ2xfRnJhZ0Nvb3Jk
O1xuIjsKKyAgICB9CisKKyAgICBnZW9tSExTTCArPSAiICAgIFxuIgorICAgICAgICAgICAgICAg
ICIgICAgZmxvYXQgZ2xfUG9pbnRTaXplID0gY2xhbXAoaW5wdXRbMF0uZ2xfUG9pbnRTaXplLCBt
aW5Qb2ludFNpemUsIG1heFBvaW50U2l6ZSk7XG4iCisgICAgICAgICAgICAgICAgIiAgICBmbG9h
dDQgZ2xfUG9zaXRpb24gPSBpbnB1dFswXS5nbF9Qb3NpdGlvbjtcbiIKKyAgICAgICAgICAgICAg
ICAiICAgIGZsb2F0MiB2aWV3cG9ydFNjYWxlID0gZmxvYXQyKDEuMGYgLyBkeF9WaWV3Q29vcmRz
LngsIDEuMGYgLyBkeF9WaWV3Q29vcmRzLnkpICogZ2xfUG9zaXRpb24udztcbiI7CisKKyAgICBm
b3IgKGludCBjb3JuZXIgPSAwOyBjb3JuZXIgPCA0OyBjb3JuZXIrKykKKyAgICB7CisgICAgICAg
IGdlb21ITFNMICs9ICIgICAgXG4iCisgICAgICAgICAgICAgICAgICAgICIgICAgb3V0cHV0Lmds
X1Bvc2l0aW9uID0gZ2xfUG9zaXRpb24gKyBmbG9hdDQocG9pbnRTcHJpdGVDb3JuZXJzWyIgKyBz
dHIoY29ybmVyKSArICJdICogdmlld3BvcnRTY2FsZSAqIGdsX1BvaW50U2l6ZSwgMC4wZiwgMC4w
Zik7XG4iOworCisgICAgICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNQb2ludENvb3JkKQor
ICAgICAgICB7CisgICAgICAgICAgICBnZW9tSExTTCArPSAiICAgIG91dHB1dC5nbF9Qb2ludENv
b3JkID0gcG9pbnRTcHJpdGVUZXhjb29yZHNbIiArIHN0cihjb3JuZXIpICsgIl07XG4iOworICAg
ICAgICB9CisKKyAgICAgICAgZ2VvbUhMU0wgKz0gIiAgICBvdXRTdHJlYW0uQXBwZW5kKG91dHB1
dCk7XG4iOworICAgIH0KKworICAgIGdlb21ITFNMICs9ICIgICAgXG4iCisgICAgICAgICAgICAg
ICAgIiAgICBvdXRTdHJlYW0uUmVzdGFydFN0cmlwKCk7XG4iCisgICAgICAgICAgICAgICAgIn1c
biI7CisKKyAgICByZXR1cm4gZ2VvbUhMU0w7Cit9CisKKy8vIFRoaXMgbWV0aG9kIG5lZWRzIHRv
IG1hdGNoIE91dHB1dEhMU0w6OmRlY29yYXRlCitzdGQ6OnN0cmluZyBQcm9ncmFtQmluYXJ5Ojpk
ZWNvcmF0ZUF0dHJpYnV0ZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkKK3sKKyAgICBpZiAobmFt
ZS5jb21wYXJlKDAsIDMsICJnbF8iKSAhPSAwICYmIG5hbWUuY29tcGFyZSgwLCAzLCAiZHhfIikg
IT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiAiXyIgKyBuYW1lOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gbmFtZTsKK30KKworYm9vbCBQcm9ncmFtQmluYXJ5Ojppc1ZhbGlkYXRlZCgpIGNv
bnN0IAoreworICAgIHJldHVybiBtVmFsaWRhdGVkOworfQorCit2b2lkIFByb2dyYW1CaW5hcnk6
OmdldEFjdGl2ZUF0dHJpYnV0ZShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXpl
aSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUpIGNvbnN0
Cit7CisgICAgLy8gU2tpcCBvdmVyIGluYWN0aXZlIGF0dHJpYnV0ZXMKKyAgICB1bnNpZ25lZCBp
bnQgYWN0aXZlQXR0cmlidXRlID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlOworICAg
IGZvciAoYXR0cmlidXRlID0gMDsgYXR0cmlidXRlIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBhdHRy
aWJ1dGUrKykKKyAgICB7CisgICAgICAgIGlmIChtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZV0u
bmFtZS5lbXB0eSgpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChhY3RpdmVBdHRyaWJ1dGUgPT0gaW5kZXgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgYWN0aXZlQXR0cmlidXRlKys7
CisgICAgfQorCisgICAgaWYgKGJ1ZnNpemUgPiAwKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hh
ciAqc3RyaW5nID0gbUxpbmtlZEF0dHJpYnV0ZVthdHRyaWJ1dGVdLm5hbWUuY19zdHIoKTsKKwor
ICAgICAgICBzdHJuY3B5KG5hbWUsIHN0cmluZywgYnVmc2l6ZSk7CisgICAgICAgIG5hbWVbYnVm
c2l6ZSAtIDFdID0gJ1wwJzsKKworICAgICAgICBpZiAobGVuZ3RoKQorICAgICAgICB7CisgICAg
ICAgICAgICAqbGVuZ3RoID0gc3RybGVuKG5hbWUpOworICAgICAgICB9CisgICAgfQorCisgICAg
KnNpemUgPSAxOyAgIC8vIEFsd2F5cyBhIHNpbmdsZSAndHlwZScgaW5zdGFuY2UKKworICAgICp0
eXBlID0gbUxpbmtlZEF0dHJpYnV0ZVthdHRyaWJ1dGVdLnR5cGU7Cit9CisKK0dMaW50IFByb2dy
YW1CaW5hcnk6OmdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCkgY29uc3QKK3sKKyAgICBpbnQgY291
bnQgPSAwOworCisgICAgZm9yIChpbnQgYXR0cmlidXRlSW5kZXggPSAwOyBhdHRyaWJ1dGVJbmRl
eCA8IE1BWF9WRVJURVhfQVRUUklCUzsgYXR0cmlidXRlSW5kZXgrKykKKyAgICB7CisgICAgICAg
IGlmICghbUxpbmtlZEF0dHJpYnV0ZVthdHRyaWJ1dGVJbmRleF0ubmFtZS5lbXB0eSgpKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb3VudCsrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIGNvdW50OworfQorCitHTGludCBQcm9ncmFtQmluYXJ5OjpnZXRBY3RpdmVBdHRyaWJ1dGVN
YXhMZW5ndGgoKSBjb25zdAoreworICAgIGludCBtYXhMZW5ndGggPSAwOworCisgICAgZm9yIChp
bnQgYXR0cmlidXRlSW5kZXggPSAwOyBhdHRyaWJ1dGVJbmRleCA8IE1BWF9WRVJURVhfQVRUUklC
UzsgYXR0cmlidXRlSW5kZXgrKykKKyAgICB7CisgICAgICAgIGlmICghbUxpbmtlZEF0dHJpYnV0
ZVthdHRyaWJ1dGVJbmRleF0ubmFtZS5lbXB0eSgpKQorICAgICAgICB7CisgICAgICAgICAgICBt
YXhMZW5ndGggPSBzdGQ6Om1heCgoaW50KShtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZUluZGV4
XS5uYW1lLmxlbmd0aCgpICsgMSksIG1heExlbmd0aCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gbWF4TGVuZ3RoOworfQorCit2b2lkIFByb2dyYW1CaW5hcnk6OmdldEFjdGl2ZVVu
aWZvcm0oR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xp
bnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKSBjb25zdAoreworICAgIEFTU0VS
VChpbmRleCA8IG1Vbmlmb3Jtcy5zaXplKCkpOyAgIC8vIGluZGV4IG11c3QgYmUgc21hbGxlciB0
aGFuIGdldEFjdGl2ZVVuaWZvcm1Db3VudCgpCisKKyAgICBpZiAoYnVmc2l6ZSA+IDApCisgICAg
eworICAgICAgICBzdGQ6OnN0cmluZyBzdHJpbmcgPSBtVW5pZm9ybXNbaW5kZXhdLT5uYW1lOwor
CisgICAgICAgIGlmIChtVW5pZm9ybXNbaW5kZXhdLT5pc0FycmF5KCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0cmluZyArPSAiWzBdIjsKKyAgICAgICAgfQorCisgICAgICAgIHN0cm5jcHko
bmFtZSwgc3RyaW5nLmNfc3RyKCksIGJ1ZnNpemUpOworICAgICAgICBuYW1lW2J1ZnNpemUgLSAx
XSA9ICdcMCc7CisKKyAgICAgICAgaWYgKGxlbmd0aCkKKyAgICAgICAgeworICAgICAgICAgICAg
Kmxlbmd0aCA9IHN0cmxlbihuYW1lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgICpzaXplID0g
bVVuaWZvcm1zW2luZGV4XS0+ZWxlbWVudENvdW50KCk7CisKKyAgICAqdHlwZSA9IG1Vbmlmb3Jt
c1tpbmRleF0tPnR5cGU7Cit9CisKK0dMaW50IFByb2dyYW1CaW5hcnk6OmdldEFjdGl2ZVVuaWZv
cm1Db3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Vbmlmb3Jtcy5zaXplKCk7Cit9CisKK0dM
aW50IFByb2dyYW1CaW5hcnk6OmdldEFjdGl2ZVVuaWZvcm1NYXhMZW5ndGgoKSBjb25zdAorewor
ICAgIGludCBtYXhMZW5ndGggPSAwOworCisgICAgdW5zaWduZWQgaW50IG51bVVuaWZvcm1zID0g
bVVuaWZvcm1zLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCB1bmlmb3JtSW5kZXggPSAw
OyB1bmlmb3JtSW5kZXggPCBudW1Vbmlmb3JtczsgdW5pZm9ybUluZGV4KyspCisgICAgeworICAg
ICAgICBpZiAoIW1Vbmlmb3Jtc1t1bmlmb3JtSW5kZXhdLT5uYW1lLmVtcHR5KCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGludCBsZW5ndGggPSAoaW50KShtVW5pZm9ybXNbdW5pZm9ybUluZGV4
XS0+bmFtZS5sZW5ndGgoKSArIDEpOworICAgICAgICAgICAgaWYgKG1Vbmlmb3Jtc1t1bmlmb3Jt
SW5kZXhdLT5pc0FycmF5KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbGVuZ3Ro
ICs9IDM7ICAvLyBDb3VudGluZyBpbiAiWzBdIi4KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IG1heExlbmd0aCA9IHN0ZDo6bWF4KGxlbmd0aCwgbWF4TGVuZ3RoKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiBtYXhMZW5ndGg7Cit9CisKK3ZvaWQgUHJvZ3JhbUJpbmFyeTo6dmFs
aWRhdGUoSW5mb0xvZyAmaW5mb0xvZykKK3sKKyAgICBhcHBseVVuaWZvcm1zKCk7CisgICAgaWYg
KCF2YWxpZGF0ZVNhbXBsZXJzKCZpbmZvTG9nKSkKKyAgICB7CisgICAgICAgIG1WYWxpZGF0ZWQg
PSBmYWxzZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbVZhbGlkYXRlZCA9IHRy
dWU7CisgICAgfQorfQorCitib29sIFByb2dyYW1CaW5hcnk6OnZhbGlkYXRlU2FtcGxlcnMoSW5m
b0xvZyAqaW5mb0xvZykKK3sKKyAgICAvLyBpZiBhbnkgdHdvIGFjdGl2ZSBzYW1wbGVycyBpbiBh
IHByb2dyYW0gYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYnV0IHJlZmVyIHRvIHRoZSBzYW1lCisg
ICAgLy8gdGV4dHVyZSBpbWFnZSB1bml0LCBhbmQgdGhpcyBpcyB0aGUgY3VycmVudCBwcm9ncmFt
LCB0aGVuIFZhbGlkYXRlUHJvZ3JhbSB3aWxsIGZhaWwsIGFuZAorICAgIC8vIERyYXdBcnJheXMg
YW5kIERyYXdFbGVtZW50cyB3aWxsIGlzc3VlIHRoZSBJTlZBTElEX09QRVJBVElPTiBlcnJvci4K
KworICAgIGNvbnN0IHVuc2lnbmVkIGludCBtYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0g
bVJlbmRlcmVyLT5nZXRNYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCk7CisgICAgVGV4dHVy
ZVR5cGUgdGV4dHVyZVVuaXRUeXBlW0lNUExFTUVOVEFUSU9OX01BWF9DT01CSU5FRF9URVhUVVJF
X0lNQUdFX1VOSVRTXTsKKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgSU1QTEVN
RU5UQVRJT05fTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFM7ICsraSkKKyAgICB7Cisg
ICAgICAgIHRleHR1cmVVbml0VHlwZVtpXSA9IFRFWFRVUkVfVU5LTk9XTjsKKyAgICB9CisKKyAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG1Vc2VkUGl4ZWxTYW1wbGVyUmFuZ2U7ICsr
aSkKKyAgICB7CisgICAgICAgIGlmIChtU2FtcGxlcnNQU1tpXS5hY3RpdmUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGludCB1bml0ID0gbVNhbXBsZXJzUFNbaV0ubG9naWNhbFRl
eHR1cmVVbml0OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodW5pdCA+PSBtYXhDb21i
aW5lZFRleHR1cmVJbWFnZVVuaXRzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
IChpbmZvTG9nKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW5mb0xv
Zy0+YXBwZW5kKCJTYW1wbGVyIHVuaWZvcm0gKCVkKSBleGNlZWRzIElNUExFTUVOVEFUSU9OX01B
WF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTICglZCkiLCB1bml0LCBtYXhDb21iaW5lZFRl
eHR1cmVJbWFnZVVuaXRzKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlVW5p
dFR5cGVbdW5pdF0gIT0gVEVYVFVSRV9VTktOT1dOKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGlmIChtU2FtcGxlcnNQU1tpXS50ZXh0dXJlVHlwZSAhPSB0ZXh0dXJlVW5pdFR5cGVb
dW5pdF0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoaW5mb0xv
ZykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb0xv
Zy0+YXBwZW5kKCJTYW1wbGVycyBvZiBjb25mbGljdGluZyB0eXBlcyByZWZlciB0byB0aGUgc2Ft
ZSB0ZXh0dXJlIGltYWdlIHVuaXQgKCVkKS4iLCB1bml0KTsKKyAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgdGV4dHVyZVVuaXRUeXBlW3VuaXRdID0gbVNhbXBsZXJzUFNbaV0udGV4dHVyZVR5
cGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlOyArK2kpCisgICAgeworICAg
ICAgICBpZiAobVNhbXBsZXJzVlNbaV0uYWN0aXZlKQorICAgICAgICB7CisgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgdW5pdCA9IG1TYW1wbGVyc1ZTW2ldLmxvZ2ljYWxUZXh0dXJlVW5pdDsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHVuaXQgPj0gbWF4Q29tYmluZWRUZXh0dXJlSW1h
Z2VVbml0cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5mb0xvZykKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGluZm9Mb2ctPmFwcGVuZCgiU2Ft
cGxlciB1bmlmb3JtICglZCkgZXhjZWVkcyBJTVBMRU1FTlRBVElPTl9NQVhfQ09NQklORURfVEVY
VFVSRV9JTUFHRV9VTklUUyAoJWQpIiwgdW5pdCwgbWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0
cyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGV4dHVyZVVuaXRUeXBlW3VuaXRdICE9
IFRFWFRVUkVfVU5LTk9XTikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAobVNh
bXBsZXJzVlNbaV0udGV4dHVyZVR5cGUgIT0gdGV4dHVyZVVuaXRUeXBlW3VuaXRdKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZm9Mb2cpCisgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9Mb2ctPmFwcGVuZCgiU2Ft
cGxlcnMgb2YgY29uZmxpY3RpbmcgdHlwZXMgcmVmZXIgdG8gdGhlIHNhbWUgdGV4dHVyZSBpbWFn
ZSB1bml0ICglZCkuIiwgdW5pdCk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRleHR1
cmVVbml0VHlwZVt1bml0XSA9IG1TYW1wbGVyc1ZTW2ldLnRleHR1cmVUeXBlOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1Byb2dyYW1C
aW5hcnk6OlNhbXBsZXI6OlNhbXBsZXIoKSA6IGFjdGl2ZShmYWxzZSksIGxvZ2ljYWxUZXh0dXJl
VW5pdCgwKSwgdGV4dHVyZVR5cGUoVEVYVFVSRV8yRCkKK3sKK30KKworc3RydWN0IEF0dHJpYnV0
ZVNvcnRlcgoreworICAgIEF0dHJpYnV0ZVNvcnRlcihjb25zdCBpbnQgKCZzZW1hbnRpY0luZGlj
ZXMpW01BWF9WRVJURVhfQVRUUklCU10pCisgICAgICAgIDogb3JpZ2luYWxJbmRpY2VzKHNlbWFu
dGljSW5kaWNlcykKKyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRF
WF9BVFRSSUJTOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGluZGljZXNbaV0gPSBpOwor
ICAgICAgICB9CisKKyAgICAgICAgc3RkOjpzb3J0KCZpbmRpY2VzWzBdLCAmaW5kaWNlc1tNQVhf
VkVSVEVYX0FUVFJJQlNdLCAqdGhpcyk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcigpKGlu
dCBhLCBpbnQgYikKKyAgICB7CisgICAgICAgIHJldHVybiBvcmlnaW5hbEluZGljZXNbYV0gPT0g
LTEgPyBmYWxzZSA6IG9yaWdpbmFsSW5kaWNlc1thXSA8IG9yaWdpbmFsSW5kaWNlc1tiXTsKKyAg
ICB9CisKKyAgICBpbnQgaW5kaWNlc1tNQVhfVkVSVEVYX0FUVFJJQlNdOworICAgIGNvbnN0IGlu
dCAoJm9yaWdpbmFsSW5kaWNlcylbTUFYX1ZFUlRFWF9BVFRSSUJTXTsKK307CisKK3ZvaWQgUHJv
Z3JhbUJpbmFyeTo6c29ydEF0dHJpYnV0ZXNCeUxheW91dChyeDo6VHJhbnNsYXRlZEF0dHJpYnV0
ZSBhdHRyaWJ1dGVzW01BWF9WRVJURVhfQVRUUklCU10sIGludCBzb3J0ZWRTZW1hbnRpY0luZGlj
ZXNbTUFYX1ZFUlRFWF9BVFRSSUJTXSkgY29uc3QKK3sKKyAgICBBdHRyaWJ1dGVTb3J0ZXIgc29y
dGVyKG1TZW1hbnRpY0luZGV4KTsKKworICAgIGludCBvbGRJbmRpY2VzW01BWF9WRVJURVhfQVRU
UklCU107CisgICAgcng6OlRyYW5zbGF0ZWRBdHRyaWJ1dGUgb2xkVHJhbnNsYXRlZEF0dHJpYnV0
ZXNbTUFYX1ZFUlRFWF9BVFRSSUJTXTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1ZF
UlRFWF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBvbGRJbmRpY2VzW2ldID0gbVNlbWFu
dGljSW5kZXhbaV07CisgICAgICAgIG9sZFRyYW5zbGF0ZWRBdHRyaWJ1dGVzW2ldID0gYXR0cmli
dXRlc1tpXTsKKyAgICB9CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9WRVJURVhfQVRU
UklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgaW50IG9sZEluZGV4ID0gc29ydGVyLmluZGljZXNb
aV07CisgICAgICAgIHNvcnRlZFNlbWFudGljSW5kaWNlc1tpXSA9IG9sZEluZGljZXNbb2xkSW5k
ZXhdOworICAgICAgICBhdHRyaWJ1dGVzW2ldID0gb2xkVHJhbnNsYXRlZEF0dHJpYnV0ZXNbb2xk
SW5kZXhdOworICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5LmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNzQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFByb2dy
YW0uaDogRGVmaW5lcyB0aGUgZ2w6OlByb2dyYW0gY2xhc3MuIEltcGxlbWVudHMgR0wgcHJvZ3Jh
bSBvYmplY3RzCisvLyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4y
NF0gc2VjdGlvbiAyLjEwLjMgcGFnZSAyOC4KKworI2lmbmRlZiBMSUJHTEVTVjJfUFJPR1JBTV9C
SU5BUllfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1BST0dSQU1fQklOQVJZX0hfCisKKyNkZWZpbmUg
R0xfQVBJQ0FMTAorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorI2luY2x1ZGUgPEdMRVMyL2dsMmV4
dC5oPgorCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUg
ImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgorI2luY2x1ZGUgImFuZ2xldHlwZXMuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvbWF0aHV0aWwuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvVW5pZm9ybS5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9TaGFkZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvQ29u
c3RhbnRzLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgU2hhZGVyRXhlY3V0YWJsZTsKK2Ns
YXNzIFJlbmRlcmVyOworc3RydWN0IFRyYW5zbGF0ZWRBdHRyaWJ1dGU7Cit9CisKK25hbWVzcGFj
ZSBnbAoreworY2xhc3MgRnJhZ21lbnRTaGFkZXI7CitjbGFzcyBWZXJ0ZXhTaGFkZXI7CitjbGFz
cyBJbmZvTG9nOworY2xhc3MgQXR0cmlidXRlQmluZGluZ3M7CitzdHJ1Y3QgVmFyeWluZzsKKwor
Ly8gU3RydWN0IHVzZWQgZm9yIGNvcnJlbGF0aW5nIHVuaWZvcm1zL2VsZW1lbnRzIG9mIHVuaWZv
cm0gYXJyYXlzIHRvIGhhbmRsZXMKK3N0cnVjdCBVbmlmb3JtTG9jYXRpb24KK3sKKyAgICBVbmlm
b3JtTG9jYXRpb24oKQorICAgIHsKKyAgICB9CisKKyAgICBVbmlmb3JtTG9jYXRpb24oY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUsIHVuc2lnbmVkIGludCBlbGVtZW50LCB1bnNpZ25lZCBpbnQgaW5k
ZXgpOworCisgICAgc3RkOjpzdHJpbmcgbmFtZTsKKyAgICB1bnNpZ25lZCBpbnQgZWxlbWVudDsK
KyAgICB1bnNpZ25lZCBpbnQgaW5kZXg7Cit9OworCisvLyBUaGlzIGlzIHRoZSByZXN1bHQgb2Yg
bGlua2luZyBhIHByb2dyYW0uIEl0IGlzIHRoZSBzdGF0ZSB0aGF0IHdvdWxkIGJlIHBhc3NlZCB0
byBQcm9ncmFtQmluYXJ5LgorY2xhc3MgUHJvZ3JhbUJpbmFyeSA6IHB1YmxpYyBSZWZDb3VudE9i
amVjdAoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgUHJvZ3JhbUJpbmFyeShyeDo6UmVuZGVy
ZXIgKnJlbmRlcmVyKTsKKyAgICB+UHJvZ3JhbUJpbmFyeSgpOworCisgICAgcng6OlNoYWRlckV4
ZWN1dGFibGUgKmdldFBpeGVsRXhlY3V0YWJsZSgpOworICAgIHJ4OjpTaGFkZXJFeGVjdXRhYmxl
ICpnZXRWZXJ0ZXhFeGVjdXRhYmxlKCk7CisgICAgcng6OlNoYWRlckV4ZWN1dGFibGUgKmdldEdl
b21ldHJ5RXhlY3V0YWJsZSgpOworCisgICAgR0x1aW50IGdldEF0dHJpYnV0ZUxvY2F0aW9uKGNv
bnN0IGNoYXIgKm5hbWUpOworICAgIGludCBnZXRTZW1hbnRpY0luZGV4KGludCBhdHRyaWJ1dGVJ
bmRleCk7CisKKyAgICBHTGludCBnZXRTYW1wbGVyTWFwcGluZyhTYW1wbGVyVHlwZSB0eXBlLCB1
bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4KTsKKyAgICBUZXh0dXJlVHlwZSBnZXRTYW1wbGVyVGV4
dHVyZVR5cGUoU2FtcGxlclR5cGUgdHlwZSwgdW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCk7Cisg
ICAgR0xpbnQgZ2V0VXNlZFNhbXBsZXJSYW5nZShTYW1wbGVyVHlwZSB0eXBlKTsKKyAgICBib29s
IHVzZXNQb2ludFNpemUoKSBjb25zdDsKKyAgICBib29sIHVzZXNQb2ludFNwcml0ZUVtdWxhdGlv
bigpIGNvbnN0OworICAgIGJvb2wgdXNlc0dlb21ldHJ5U2hhZGVyKCkgY29uc3Q7CisKKyAgICBH
TGludCBnZXRVbmlmb3JtTG9jYXRpb24oc3RkOjpzdHJpbmcgbmFtZSk7CisgICAgYm9vbCBzZXRV
bmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2
KTsKKyAgICBib29sIHNldFVuaWZvcm0yZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMZmxvYXQgKnYpOworICAgIGJvb2wgc2V0VW5pZm9ybTNmdihHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7CisgICAgYm9vbCBzZXRVbmlmb3Jt
NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsKKyAg
ICBib29sIHNldFVuaWZvcm1NYXRyaXgyZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKKyAgICBib29sIHNldFVuaWZvcm1NYXRyaXgzZnYoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKKyAgICBi
b29sIHNldFVuaWZvcm1NYXRyaXg0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKTsKKyAgICBib29sIHNldFVuaWZvcm0xaXYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKKyAgICBib29sIHNldFVuaWZvcm0y
aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKKyAgICBi
b29sIHNldFVuaWZvcm0zaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
aW50ICp2KTsKKyAgICBib29sIHNldFVuaWZvcm00aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMaW50ICp2KTsKKworICAgIGJvb2wgZ2V0VW5pZm9ybWZ2KEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpICpidWZTaXplLCBHTGZsb2F0ICpwYXJhbXMpOworICAgIGJvb2wgZ2V0
VW5pZm9ybWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpICpidWZTaXplLCBHTGludCAqcGFyYW1z
KTsKKworICAgIHZvaWQgZGlydHlBbGxVbmlmb3JtcygpOworICAgIHZvaWQgYXBwbHlVbmlmb3Jt
cygpOworCisgICAgYm9vbCBsb2FkKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IHZvaWQgKmJpbmFy
eSwgR0xzaXplaSBsZW5ndGgpOworICAgIGJvb2wgc2F2ZSh2b2lkKiBiaW5hcnksIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoKTsKKyAgICBHTGludCBnZXRMZW5ndGgoKTsKKworICAg
IGJvb2wgbGluayhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBBdHRyaWJ1dGVCaW5kaW5ncyAmYXR0
cmlidXRlQmluZGluZ3MsIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlciwgVmVydGV4U2hh
ZGVyICp2ZXJ0ZXhTaGFkZXIpOworICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKEdMc2l6ZWkg
bWF4Q291bnQsIEdMc2l6ZWkgKmNvdW50LCBHTHVpbnQgKnNoYWRlcnMpOworCisgICAgdm9pZCBn
ZXRBY3RpdmVBdHRyaWJ1dGUoR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKSBjb25zdDsK
KyAgICBHTGludCBnZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgpIGNvbnN0OworICAgIEdMaW50IGdl
dEFjdGl2ZUF0dHJpYnV0ZU1heExlbmd0aCgpIGNvbnN0OworCisgICAgdm9pZCBnZXRBY3RpdmVV
bmlmb3JtKEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgsIEdM
aW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSkgY29uc3Q7CisgICAgR0xpbnQg
Z2V0QWN0aXZlVW5pZm9ybUNvdW50KCkgY29uc3Q7CisgICAgR0xpbnQgZ2V0QWN0aXZlVW5pZm9y
bU1heExlbmd0aCgpIGNvbnN0OworCisgICAgdm9pZCB2YWxpZGF0ZShJbmZvTG9nICZpbmZvTG9n
KTsKKyAgICBib29sIHZhbGlkYXRlU2FtcGxlcnMoSW5mb0xvZyAqaW5mb0xvZyk7CisgICAgYm9v
bCBpc1ZhbGlkYXRlZCgpIGNvbnN0OworCisgICAgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNv
bnN0OworCisgICAgdm9pZCBzb3J0QXR0cmlidXRlc0J5TGF5b3V0KHJ4OjpUcmFuc2xhdGVkQXR0
cmlidXRlIGF0dHJpYnV0ZXNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU10sIGludCBzb3J0ZWRTZW1h
bnRpY0luZGljZXNbTUFYX1ZFUlRFWF9BVFRSSUJTXSkgY29uc3Q7CisKKyAgICBzdGF0aWMgc3Rk
OjpzdHJpbmcgZGVjb3JhdGVBdHRyaWJ1dGUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpOyAgICAv
LyBQcmVwZW5kIGFuIHVuZGVyc2NvcmUKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihQcm9ncmFtQmluYXJ5KTsKKworICAgIGludCBwYWNrVmFyeWluZ3MoSW5mb0xv
ZyAmaW5mb0xvZywgY29uc3QgVmFyeWluZyAqcGFja2luZ1tdWzRdLCBGcmFnbWVudFNoYWRlciAq
ZnJhZ21lbnRTaGFkZXIpOworICAgIGJvb2wgbGlua1ZhcnlpbmdzKEluZm9Mb2cgJmluZm9Mb2cs
IGludCByZWdpc3RlcnMsIGNvbnN0IFZhcnlpbmcgKnBhY2tpbmdbXVs0XSwKKyAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZyYgcGl4ZWxITFNMLCBzdGQ6OnN0cmluZyYgdmVydGV4SExT
TCwKKyAgICAgICAgICAgICAgICAgICAgICBGcmFnbWVudFNoYWRlciAqZnJhZ21lbnRTaGFkZXIs
IFZlcnRleFNoYWRlciAqdmVydGV4U2hhZGVyKTsKKworICAgIGJvb2wgbGlua0F0dHJpYnV0ZXMo
SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgQXR0cmlidXRlQmluZGluZ3MgJmF0dHJpYnV0ZUJpbmRp
bmdzLCBGcmFnbWVudFNoYWRlciAqZnJhZ21lbnRTaGFkZXIsIFZlcnRleFNoYWRlciAqdmVydGV4
U2hhZGVyKTsKKworICAgIGJvb2wgbGlua1VuaWZvcm1zKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0
IHNoOjpBY3RpdmVVbmlmb3JtcyAmdmVydGV4VW5pZm9ybXMsIGNvbnN0IHNoOjpBY3RpdmVVbmlm
b3JtcyAmZnJhZ21lbnRVbmlmb3Jtcyk7CisgICAgYm9vbCBkZWZpbmVVbmlmb3JtKEdMZW51bSBz
aGFkZXIsIGNvbnN0IHNoOjpVbmlmb3JtICZjb25zdGFudCwgSW5mb0xvZyAmaW5mb0xvZyk7Cisg
ICAgCisgICAgc3RkOjpzdHJpbmcgZ2VuZXJhdGVHZW9tZXRyeVNoYWRlckhMU0woaW50IHJlZ2lz
dGVycywgY29uc3QgVmFyeWluZyAqcGFja2luZ1tdWzRdLCBGcmFnbWVudFNoYWRlciAqZnJhZ21l
bnRTaGFkZXIsIFZlcnRleFNoYWRlciAqdmVydGV4U2hhZGVyKSBjb25zdDsKKyAgICBzdGQ6OnN0
cmluZyBnZW5lcmF0ZVBvaW50U3ByaXRlSExTTChpbnQgcmVnaXN0ZXJzLCBjb25zdCBWYXJ5aW5n
ICpwYWNraW5nW11bNF0sIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlciwgVmVydGV4U2hh
ZGVyICp2ZXJ0ZXhTaGFkZXIpIGNvbnN0OworCisgICAgcng6OlJlbmRlcmVyICpjb25zdCBtUmVu
ZGVyZXI7CisKKyAgICByeDo6U2hhZGVyRXhlY3V0YWJsZSAqbVBpeGVsRXhlY3V0YWJsZTsKKyAg
ICByeDo6U2hhZGVyRXhlY3V0YWJsZSAqbVZlcnRleEV4ZWN1dGFibGU7CisgICAgcng6OlNoYWRl
ckV4ZWN1dGFibGUgKm1HZW9tZXRyeUV4ZWN1dGFibGU7CisKKyAgICBBdHRyaWJ1dGUgbUxpbmtl
ZEF0dHJpYnV0ZVtNQVhfVkVSVEVYX0FUVFJJQlNdOworICAgIGludCBtU2VtYW50aWNJbmRleFtN
QVhfVkVSVEVYX0FUVFJJQlNdOworCisgICAgc3RydWN0IFNhbXBsZXIKKyAgICB7CisgICAgICAg
IFNhbXBsZXIoKTsKKworICAgICAgICBib29sIGFjdGl2ZTsKKyAgICAgICAgR0xpbnQgbG9naWNh
bFRleHR1cmVVbml0OworICAgICAgICBUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZTsKKyAgICB9Owor
CisgICAgU2FtcGxlciBtU2FtcGxlcnNQU1tNQVhfVEVYVFVSRV9JTUFHRV9VTklUU107CisgICAg
U2FtcGxlciBtU2FtcGxlcnNWU1tJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1B
R0VfVU5JVFNdOworICAgIEdMdWludCBtVXNlZFZlcnRleFNhbXBsZXJSYW5nZTsKKyAgICBHTHVp
bnQgbVVzZWRQaXhlbFNhbXBsZXJSYW5nZTsKKyAgICBib29sIG1Vc2VzUG9pbnRTaXplOworCisg
ICAgVW5pZm9ybUFycmF5IG1Vbmlmb3JtczsKKyAgICB0eXBlZGVmIHN0ZDo6dmVjdG9yPFVuaWZv
cm1Mb2NhdGlvbj4gVW5pZm9ybUluZGV4OworICAgIFVuaWZvcm1JbmRleCBtVW5pZm9ybUluZGV4
OworCisgICAgYm9vbCBtVmFsaWRhdGVkOworCisgICAgY29uc3QgdW5zaWduZWQgaW50IG1TZXJp
YWw7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IGlzc3VlU2VyaWFsKCk7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGludCBtQ3VycmVudFNlcmlhbDsKK307Cit9CisKKyNlbmRpZiAgIC8vIExJQkdM
RVNWMl9QUk9HUkFNX0JJTkFSWV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9RdWVyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9RdWVyeS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1F1ZXJ5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUXVl
cnkuY3BwOiBJbXBsZW1lbnRzIHRoZSBnbDo6UXVlcnkgY2xhc3MKKworI2luY2x1ZGUgImxpYkdM
RVN2Mi9RdWVyeS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeUltcGwuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaCIKKworbmFtZXNwYWNlIGds
Cit7CisKK1F1ZXJ5OjpRdWVyeShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTGVudW0gdHlwZSwg
R0x1aW50IGlkKSA6IFJlZkNvdW50T2JqZWN0KGlkKQoreyAKKyAgICBtUXVlcnkgPSByZW5kZXJl
ci0+Y3JlYXRlUXVlcnkodHlwZSk7Cit9CisKK1F1ZXJ5Ojp+UXVlcnkoKQoreworICAgIGRlbGV0
ZSBtUXVlcnk7Cit9CisKK3ZvaWQgUXVlcnk6OmJlZ2luKCkKK3sKKyAgICBtUXVlcnktPmJlZ2lu
KCk7Cit9CisKK3ZvaWQgUXVlcnk6OmVuZCgpCit7CisgICAgbVF1ZXJ5LT5lbmQoKTsKK30KKwor
R0x1aW50IFF1ZXJ5OjpnZXRSZXN1bHQoKQoreworICAgIHJldHVybiBtUXVlcnktPmdldFJlc3Vs
dCgpOworfQorCitHTGJvb2xlYW4gUXVlcnk6OmlzUmVzdWx0QXZhaWxhYmxlKCkKK3sKKyAgICBy
ZXR1cm4gbVF1ZXJ5LT5pc1Jlc3VsdEF2YWlsYWJsZSgpOworfQorCitHTGVudW0gUXVlcnk6Omdl
dFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBtUXVlcnktPmdldFR5cGUoKTsKK30KKworfQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9RdWVyeS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUXVlcnkuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUXVl
cnkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFF1
ZXJ5Lmg6IERlZmluZXMgdGhlIGdsOjpRdWVyeSBjbGFzcworCisjaWZuZGVmIExJQkdMRVNWMl9R
VUVSWV9IXworI2RlZmluZSBMSUJHTEVTVjJfUVVFUllfSF8KKworI2RlZmluZSBHTF9BUElDQUxM
CisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5o
IgorI2luY2x1ZGUgImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgorCituYW1lc3BhY2UgcngKK3sK
K2NsYXNzIFJlbmRlcmVyOworY2xhc3MgUXVlcnlJbXBsOworfQorCituYW1lc3BhY2UgZ2wKK3sK
KworY2xhc3MgUXVlcnkgOiBwdWJsaWMgUmVmQ291bnRPYmplY3QKK3sKKyAgcHVibGljOgorICAg
IFF1ZXJ5KHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIEdMZW51bSB0eXBlLCBHTHVpbnQgaWQpOwor
ICAgIHZpcnR1YWwgflF1ZXJ5KCk7CisKKyAgICB2b2lkIGJlZ2luKCk7CisgICAgdm9pZCBlbmQo
KTsKKworICAgIEdMdWludCBnZXRSZXN1bHQoKTsKKyAgICBHTGJvb2xlYW4gaXNSZXN1bHRBdmFp
bGFibGUoKTsKKworICAgIEdMZW51bSBnZXRUeXBlKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUXVlcnkpOworCisgICAgcng6OlF1ZXJ5SW1wbCAq
bVF1ZXJ5OworfTsKKworfQorCisjZW5kaWYgICAvLyBMSUJHTEVTVjJfUVVFUllfSF8KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRl
cmJ1ZmZlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDg1IEBA
CisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFJlbmRl
cmJ1ZmZlci5jcHA6IHRoZSBnbDo6UmVuZGVyYnVmZmVyIGNsYXNzIGFuZCBpdHMgZGVyaXZlZCBj
bGFzc2VzCisvLyBDb2xvcmJ1ZmZlciwgRGVwdGhidWZmZXIgYW5kIFN0ZW5jaWxidWZmZXIuIElt
cGxlbWVudHMgR0wgcmVuZGVyYnVmZmVyCisvLyBvYmplY3RzIGFuZCByZWxhdGVkIGZ1bmN0aW9u
YWxpdHkuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDQuNC4zIHBhZ2UgMTA4LgorCisjaW5j
bHVkZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJUYXJnZXQuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL3V0aWxpdGllcy5oIgorCituYW1lc3BhY2UgZ2wKK3sKK3Vuc2lnbmVkIGludCBSZW5kZXJi
dWZmZXJTdG9yYWdlOjptQ3VycmVudFNlcmlhbCA9IDE7CisKK1JlbmRlcmJ1ZmZlckludGVyZmFj
ZTo6UmVuZGVyYnVmZmVySW50ZXJmYWNlKCkKK3sKK30KKworLy8gVGhlIGRlZmF1bHQgY2FzZSBm
b3IgY2xhc3NlcyBpbmhlcml0ZWQgZnJvbSBSZW5kZXJidWZmZXJJbnRlcmZhY2UgaXMgbm90IHRv
CisvLyBuZWVkIHRvIGRvIGFueXRoaW5nIHVwb24gdGhlIHJlZmVyZW5jZSBjb3VudCB0byB0aGUg
cGFyZW50IFJlbmRlcmJ1ZmZlciBpbmNyZW1lbnRpbmcKKy8vIG9yIGRlY3JlbWVudGluZy4gCit2
b2lkIFJlbmRlcmJ1ZmZlckludGVyZmFjZTo6YWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVy
ICpwcm94eSkKK3sKK30KKwordm9pZCBSZW5kZXJidWZmZXJJbnRlcmZhY2U6OnJlbGVhc2VQcm94
eShjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KQoreworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVy
SW50ZXJmYWNlOjpnZXRSZWRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2w6OkdldFJlZFNp
emUoZ2V0QWN0dWFsRm9ybWF0KCkpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVySW50ZXJmYWNl
OjpnZXRHcmVlblNpemUoKSBjb25zdAoreworICAgIHJldHVybiBnbDo6R2V0R3JlZW5TaXplKGdl
dEFjdHVhbEZvcm1hdCgpKTsKK30KKworR0x1aW50IFJlbmRlcmJ1ZmZlckludGVyZmFjZTo6Z2V0
Qmx1ZVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBnbDo6R2V0Qmx1ZVNpemUoZ2V0QWN0dWFs
Rm9ybWF0KCkpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVySW50ZXJmYWNlOjpnZXRBbHBoYVNp
emUoKSBjb25zdAoreworICAgIHJldHVybiBnbDo6R2V0QWxwaGFTaXplKGdldEFjdHVhbEZvcm1h
dCgpKTsKK30KKworR0x1aW50IFJlbmRlcmJ1ZmZlckludGVyZmFjZTo6Z2V0RGVwdGhTaXplKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZ2w6OkdldERlcHRoU2l6ZShnZXRBY3R1YWxGb3JtYXQoKSk7
Cit9CisKK0dMdWludCBSZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldFN0ZW5jaWxTaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZ2w6OkdldFN0ZW5jaWxTaXplKGdldEFjdHVhbEZvcm1hdCgpKTsK
K30KKworLy8vLy8gUmVuZGVyYnVmZmVyVGV4dHVyZTJEIEltcGxlbWVudGF0aW9uIC8vLy8vLy8v
CisKK1JlbmRlcmJ1ZmZlclRleHR1cmUyRDo6UmVuZGVyYnVmZmVyVGV4dHVyZTJEKFRleHR1cmUy
RCAqdGV4dHVyZSwgR0xlbnVtIHRhcmdldCkgOiBtVGFyZ2V0KHRhcmdldCkKK3sKKyAgICBtVGV4
dHVyZTJELnNldCh0ZXh0dXJlKTsKK30KKworUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjp+UmVuZGVy
YnVmZmVyVGV4dHVyZTJEKCkKK3sKKyAgICBtVGV4dHVyZTJELnNldChOVUxMKTsKK30KKworLy8g
VGV4dHVyZXMgbmVlZCB0byBtYWludGFpbiB0aGVpciBvd24gcmVmZXJlbmNlIGNvdW50IGZvciBy
ZWZlcmVuY2VzIHZpYQorLy8gUmVuZGVyYnVmZmVycyBhY3RpbmcgYXMgcHJveGllcy4gSGVyZSwg
d2Ugbm90aWZ5IHRoZSB0ZXh0dXJlIG9mIGEgcmVmZXJlbmNlLgordm9pZCBSZW5kZXJidWZmZXJU
ZXh0dXJlMkQ6OmFkZFByb3h5UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCit7CisgICAg
bVRleHR1cmUyRC0+YWRkUHJveHlSZWYocHJveHkpOworfQorCit2b2lkIFJlbmRlcmJ1ZmZlclRl
eHR1cmUyRDo6cmVsZWFzZVByb3h5KGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCit7CisgICAg
bVRleHR1cmUyRC0+cmVsZWFzZVByb3h5KHByb3h5KTsKK30KKworcng6OlJlbmRlclRhcmdldCAq
UmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRSZW5kZXJUYXJnZXQoKQoreworICAgIHJldHVybiBt
VGV4dHVyZTJELT5nZXRSZW5kZXJUYXJnZXQobVRhcmdldCk7Cit9CisKK3J4OjpSZW5kZXJUYXJn
ZXQgKlJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6Z2V0RGVwdGhTdGVuY2lsKCkKK3sKKyAgICByZXR1
cm4gbVRleHR1cmUyRC0+Z2V0RGVwdGhTdGVuY2lsKG1UYXJnZXQpOworfQorCitHTHNpemVpIFJl
bmRlcmJ1ZmZlclRleHR1cmUyRDo6Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4
dHVyZTJELT5nZXRXaWR0aCgwKTsKK30KKworR0xzaXplaSBSZW5kZXJidWZmZXJUZXh0dXJlMkQ6
OmdldEhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlMkQtPmdldEhlaWdodCgw
KTsKK30KKworR0xlbnVtIFJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6Z2V0SW50ZXJuYWxGb3JtYXQo
KSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZTJELT5nZXRJbnRlcm5hbEZvcm1hdCgwKTsK
K30KKworR0xlbnVtIFJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6Z2V0QWN0dWFsRm9ybWF0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmUyRC0+Z2V0QWN0dWFsRm9ybWF0KDApOworfQorCitH
THNpemVpIFJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6Z2V0U2FtcGxlcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldFNl
cmlhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlMkQtPmdldFJlbmRlclRhcmdldFNl
cmlhbChtVGFyZ2V0KTsKK30KKworLy8vLy8gUmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXAgSW1w
bGVtZW50YXRpb24gLy8vLy8vLy8KKworUmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6OlJlbmRl
cmJ1ZmZlclRleHR1cmVDdWJlTWFwKFRleHR1cmVDdWJlTWFwICp0ZXh0dXJlLCBHTGVudW0gdGFy
Z2V0KSA6IG1UYXJnZXQodGFyZ2V0KQoreworICAgIG1UZXh0dXJlQ3ViZU1hcC5zZXQodGV4dHVy
ZSk7Cit9CisKK1JlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjp+UmVuZGVyYnVmZmVyVGV4dHVy
ZUN1YmVNYXAoKQoreworICAgIG1UZXh0dXJlQ3ViZU1hcC5zZXQoTlVMTCk7Cit9CisKKy8vIFRl
eHR1cmVzIG5lZWQgdG8gbWFpbnRhaW4gdGhlaXIgb3duIHJlZmVyZW5jZSBjb3VudCBmb3IgcmVm
ZXJlbmNlcyB2aWEKKy8vIFJlbmRlcmJ1ZmZlcnMgYWN0aW5nIGFzIHByb3hpZXMuIEhlcmUsIHdl
IG5vdGlmeSB0aGUgdGV4dHVyZSBvZiBhIHJlZmVyZW5jZS4KK3ZvaWQgUmVuZGVyYnVmZmVyVGV4
dHVyZUN1YmVNYXA6OmFkZFByb3h5UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCit7Cisg
ICAgbVRleHR1cmVDdWJlTWFwLT5hZGRQcm94eVJlZihwcm94eSk7Cit9CisKK3ZvaWQgUmVuZGVy
YnVmZmVyVGV4dHVyZUN1YmVNYXA6OnJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZmZXIgKnBy
b3h5KQoreworICAgIG1UZXh0dXJlQ3ViZU1hcC0+cmVsZWFzZVByb3h5KHByb3h5KTsKK30KKwor
cng6OlJlbmRlclRhcmdldCAqUmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6OmdldFJlbmRlclRh
cmdldCgpCit7CisgICAgcmV0dXJuIG1UZXh0dXJlQ3ViZU1hcC0+Z2V0UmVuZGVyVGFyZ2V0KG1U
YXJnZXQpOworfQorCityeDo6UmVuZGVyVGFyZ2V0ICpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1h
cDo6Z2V0RGVwdGhTdGVuY2lsKCkKK3sKKyAgICByZXR1cm4gTlVMTDsKK30KKworR0xzaXplaSBS
ZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVy
biBtVGV4dHVyZUN1YmVNYXAtPmdldFdpZHRoKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVf
WCwgMCk7Cit9CisKK0dMc2l6ZWkgUmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6OmdldEhlaWdo
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlQ3ViZU1hcC0+Z2V0SGVpZ2h0KEdMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgMCk7Cit9CisKK0dMZW51bSBSZW5kZXJidWZmZXJU
ZXh0dXJlQ3ViZU1hcDo6Z2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBt
VGV4dHVyZUN1YmVNYXAtPmdldEludGVybmFsRm9ybWF0KEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWCwgMCk7Cit9CisKK0dMZW51bSBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6Z2V0
QWN0dWFsRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmVDdWJlTWFwLT5nZXRB
Y3R1YWxGb3JtYXQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwKTsKK30KKworR0xz
aXplaSBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6Z2V0U2FtcGxlcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1h
cDo6Z2V0U2VyaWFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmVDdWJlTWFwLT5nZXRS
ZW5kZXJUYXJnZXRTZXJpYWwobVRhcmdldCk7Cit9CisKKy8vLy8vLyBSZW5kZXJidWZmZXIgSW1w
bGVtZW50YXRpb24gLy8vLy8vCisKK1JlbmRlcmJ1ZmZlcjo6UmVuZGVyYnVmZmVyKHJ4OjpSZW5k
ZXJlciAqcmVuZGVyZXIsIEdMdWludCBpZCwgUmVuZGVyYnVmZmVySW50ZXJmYWNlICppbnN0YW5j
ZSkgOiBSZWZDb3VudE9iamVjdChpZCkKK3sKKyAgICBBU1NFUlQoaW5zdGFuY2UgIT0gTlVMTCk7
CisgICAgbUluc3RhbmNlID0gaW5zdGFuY2U7Cit9CisKK1JlbmRlcmJ1ZmZlcjo6flJlbmRlcmJ1
ZmZlcigpCit7CisgICAgZGVsZXRlIG1JbnN0YW5jZTsKK30KKworLy8gVGhlIFJlbmRlcmJ1ZmZl
ckludGVyZmFjZSBjb250YWluZWQgaW4gdGhpcyBSZW5kZXJidWZmZXIgbWF5IG5lZWQgdG8gbWFp
bnRhaW4KKy8vIGl0cyBvd24gcmVmZXJlbmNlIGNvdW50LCBzbyB3ZSBwYXNzIGl0IG9uIGhlcmUu
Cit2b2lkIFJlbmRlcmJ1ZmZlcjo6YWRkUmVmKCkgY29uc3QKK3sKKyAgICBtSW5zdGFuY2UtPmFk
ZFByb3h5UmVmKHRoaXMpOworCisgICAgUmVmQ291bnRPYmplY3Q6OmFkZFJlZigpOworfQorCit2
b2lkIFJlbmRlcmJ1ZmZlcjo6cmVsZWFzZSgpIGNvbnN0Cit7CisgICAgbUluc3RhbmNlLT5yZWxl
YXNlUHJveHkodGhpcyk7CisKKyAgICBSZWZDb3VudE9iamVjdDo6cmVsZWFzZSgpOworfQorCity
eDo6UmVuZGVyVGFyZ2V0ICpSZW5kZXJidWZmZXI6OmdldFJlbmRlclRhcmdldCgpCit7CisgICAg
cmV0dXJuIG1JbnN0YW5jZS0+Z2V0UmVuZGVyVGFyZ2V0KCk7Cit9CisKK3J4OjpSZW5kZXJUYXJn
ZXQgKlJlbmRlcmJ1ZmZlcjo6Z2V0RGVwdGhTdGVuY2lsKCkKK3sKKyAgICByZXR1cm4gbUluc3Rh
bmNlLT5nZXREZXB0aFN0ZW5jaWwoKTsKK30KKworR0xzaXplaSBSZW5kZXJidWZmZXI6OmdldFdp
ZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRXaWR0aCgpOworfQorCitH
THNpemVpIFJlbmRlcmJ1ZmZlcjo6Z2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUlu
c3RhbmNlLT5nZXRIZWlnaHQoKTsKK30KKworR0xlbnVtIFJlbmRlcmJ1ZmZlcjo6Z2V0SW50ZXJu
YWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBtSW5zdGFuY2UtPmdldEludGVybmFsRm9y
bWF0KCk7Cit9CisKK0dMZW51bSBSZW5kZXJidWZmZXI6OmdldEFjdHVhbEZvcm1hdCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0QWN0dWFsRm9ybWF0KCk7Cit9CisKK0dMdWlu
dCBSZW5kZXJidWZmZXI6OmdldFJlZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtSW5zdGFu
Y2UtPmdldFJlZFNpemUoKTsKK30KKworR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0R3JlZW5TaXpl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRHcmVlblNpemUoKTsKK30KKwor
R0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0Qmx1ZVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBt
SW5zdGFuY2UtPmdldEJsdWVTaXplKCk7Cit9CisKK0dMdWludCBSZW5kZXJidWZmZXI6OmdldEFs
cGhhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0QWxwaGFTaXplKCk7
Cit9CisKK0dMdWludCBSZW5kZXJidWZmZXI6OmdldERlcHRoU2l6ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1JbnN0YW5jZS0+Z2V0RGVwdGhTaXplKCk7Cit9CisKK0dMdWludCBSZW5kZXJidWZm
ZXI6OmdldFN0ZW5jaWxTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRT
dGVuY2lsU2l6ZSgpOworfQorCitHTHNpemVpIFJlbmRlcmJ1ZmZlcjo6Z2V0U2FtcGxlcygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0U2FtcGxlcygpOworfQorCit1bnNpZ25l
ZCBpbnQgUmVuZGVyYnVmZmVyOjpnZXRTZXJpYWwoKSBjb25zdAoreworICAgIHJldHVybiBtSW5z
dGFuY2UtPmdldFNlcmlhbCgpOworfQorCit2b2lkIFJlbmRlcmJ1ZmZlcjo6c2V0U3RvcmFnZShS
ZW5kZXJidWZmZXJTdG9yYWdlICpuZXdTdG9yYWdlKQoreworICAgIEFTU0VSVChuZXdTdG9yYWdl
ICE9IE5VTEwpOworCisgICAgZGVsZXRlIG1JbnN0YW5jZTsKKyAgICBtSW5zdGFuY2UgPSBuZXdT
dG9yYWdlOworfQorCitSZW5kZXJidWZmZXJTdG9yYWdlOjpSZW5kZXJidWZmZXJTdG9yYWdlKCkg
OiBtU2VyaWFsKGlzc3VlU2VyaWFsKCkpCit7CisgICAgbVdpZHRoID0gMDsKKyAgICBtSGVpZ2h0
ID0gMDsKKyAgICBtSW50ZXJuYWxGb3JtYXQgPSBHTF9SR0JBNDsKKyAgICBtQWN0dWFsRm9ybWF0
ID0gR0xfUkdCQThfT0VTOworICAgIG1TYW1wbGVzID0gMDsKK30KKworUmVuZGVyYnVmZmVyU3Rv
cmFnZTo6flJlbmRlcmJ1ZmZlclN0b3JhZ2UoKQoreworfQorCityeDo6UmVuZGVyVGFyZ2V0ICpS
ZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRSZW5kZXJUYXJnZXQoKQoreworICAgIHJldHVybiBOVUxM
OworfQorCityeDo6UmVuZGVyVGFyZ2V0ICpSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXREZXB0aFN0
ZW5jaWwoKQoreworICAgIHJldHVybiBOVUxMOworfQorCitHTHNpemVpIFJlbmRlcmJ1ZmZlclN0
b3JhZ2U6OmdldFdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVdpZHRoOworfQorCitHTHNp
emVpIFJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldEhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1IZWlnaHQ7Cit9CisKK0dMZW51bSBSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRJbnRlcm5hbEZv
cm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbnRlcm5hbEZvcm1hdDsKK30KKworR0xlbnVt
IFJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldEFjdHVhbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1BY3R1YWxGb3JtYXQ7Cit9CisKK0dMc2l6ZWkgUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0
U2FtcGxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TYW1wbGVzOworfQorCit1bnNpZ25lZCBp
bnQgUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0U2VyaWFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bVNlcmlhbDsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmJ1ZmZlclN0b3JhZ2U6Omlzc3VlU2Vy
aWFsKCkKK3sKKyAgICByZXR1cm4gbUN1cnJlbnRTZXJpYWwrKzsKK30KKwordW5zaWduZWQgaW50
IFJlbmRlcmJ1ZmZlclN0b3JhZ2U6Omlzc3VlQ3ViZVNlcmlhbHMoKQoreworICAgIHVuc2lnbmVk
IGludCBmaXJzdFNlcmlhbCA9IG1DdXJyZW50U2VyaWFsOworICAgIG1DdXJyZW50U2VyaWFsICs9
IDY7CisgICAgcmV0dXJuIGZpcnN0U2VyaWFsOworfQorCitDb2xvcmJ1ZmZlcjo6Q29sb3JidWZm
ZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgcng6OlN3YXBDaGFpbiAqc3dhcENoYWluKQorewor
ICAgIG1SZW5kZXJUYXJnZXQgPSByZW5kZXJlci0+Y3JlYXRlUmVuZGVyVGFyZ2V0KHN3YXBDaGFp
biwgZmFsc2UpOyAKKworICAgIGlmIChtUmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgbVdp
ZHRoID0gbVJlbmRlclRhcmdldC0+Z2V0V2lkdGgoKTsKKyAgICAgICAgbUhlaWdodCA9IG1SZW5k
ZXJUYXJnZXQtPmdldEhlaWdodCgpOworICAgICAgICBtSW50ZXJuYWxGb3JtYXQgPSBtUmVuZGVy
VGFyZ2V0LT5nZXRJbnRlcm5hbEZvcm1hdCgpOworICAgICAgICBtQWN0dWFsRm9ybWF0ID0gbVJl
bmRlclRhcmdldC0+Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAgICAgIG1TYW1wbGVzID0gbVJlbmRl
clRhcmdldC0+Z2V0U2FtcGxlcygpOworICAgIH0KK30KKworQ29sb3JidWZmZXI6OkNvbG9yYnVm
ZmVyKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCwgR0xlbnVt
IGZvcm1hdCwgR0xzaXplaSBzYW1wbGVzKSA6IG1SZW5kZXJUYXJnZXQoTlVMTCkKK3sKKyAgICBt
UmVuZGVyVGFyZ2V0ID0gcmVuZGVyZXItPmNyZWF0ZVJlbmRlclRhcmdldCh3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHNhbXBsZXMsIGZhbHNlKTsKKworICAgIGlmIChtUmVuZGVyVGFyZ2V0KQorICAg
IHsKKyAgICAgICAgbVdpZHRoID0gd2lkdGg7CisgICAgICAgIG1IZWlnaHQgPSBoZWlnaHQ7Cisg
ICAgICAgIG1JbnRlcm5hbEZvcm1hdCA9IGZvcm1hdDsKKyAgICAgICAgbUFjdHVhbEZvcm1hdCA9
IG1SZW5kZXJUYXJnZXQtPmdldEFjdHVhbEZvcm1hdCgpOworICAgICAgICBtU2FtcGxlcyA9IG1S
ZW5kZXJUYXJnZXQtPmdldFNhbXBsZXMoKTsKKyAgICB9Cit9CisKK0NvbG9yYnVmZmVyOjp+Q29s
b3JidWZmZXIoKQoreworICAgIGlmIChtUmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgZGVs
ZXRlIG1SZW5kZXJUYXJnZXQ7CisgICAgfQorfQorCityeDo6UmVuZGVyVGFyZ2V0ICpDb2xvcmJ1
ZmZlcjo6Z2V0UmVuZGVyVGFyZ2V0KCkKK3sKKyAgICBpZiAobVJlbmRlclRhcmdldCkKKyAgICB7
CisgICAgICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0OworICAgIH0KKworICAgIHJldHVybiBOVUxM
OworfQorCitEZXB0aFN0ZW5jaWxidWZmZXI6OkRlcHRoU3RlbmNpbGJ1ZmZlcihyeDo6UmVuZGVy
ZXIgKnJlbmRlcmVyLCByeDo6U3dhcENoYWluICpzd2FwQ2hhaW4pCit7CisgICAgbURlcHRoU3Rl
bmNpbCA9IHJlbmRlcmVyLT5jcmVhdGVSZW5kZXJUYXJnZXQoc3dhcENoYWluLCB0cnVlKTsKKyAg
ICBpZiAobURlcHRoU3RlbmNpbCkKKyAgICB7CisgICAgICAgIG1XaWR0aCA9IG1EZXB0aFN0ZW5j
aWwtPmdldFdpZHRoKCk7CisgICAgICAgIG1IZWlnaHQgPSBtRGVwdGhTdGVuY2lsLT5nZXRIZWln
aHQoKTsKKyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gbURlcHRoU3RlbmNpbC0+Z2V0SW50ZXJu
YWxGb3JtYXQoKTsKKyAgICAgICAgbVNhbXBsZXMgPSBtRGVwdGhTdGVuY2lsLT5nZXRTYW1wbGVz
KCk7CisgICAgICAgIG1BY3R1YWxGb3JtYXQgPSBtRGVwdGhTdGVuY2lsLT5nZXRBY3R1YWxGb3Jt
YXQoKTsKKyAgICB9Cit9CisKK0RlcHRoU3RlbmNpbGJ1ZmZlcjo6RGVwdGhTdGVuY2lsYnVmZmVy
KHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCwgR0xzaXplaSBz
YW1wbGVzKQoreworCisgICAgbURlcHRoU3RlbmNpbCA9IHJlbmRlcmVyLT5jcmVhdGVSZW5kZXJU
YXJnZXQod2lkdGgsIGhlaWdodCwgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMsIHNhbXBsZXMsIHRy
dWUpOworCisgICAgbVdpZHRoID0gbURlcHRoU3RlbmNpbC0+Z2V0V2lkdGgoKTsKKyAgICBtSGVp
Z2h0ID0gbURlcHRoU3RlbmNpbC0+Z2V0SGVpZ2h0KCk7CisgICAgbUludGVybmFsRm9ybWF0ID0g
R0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM7CisgICAgbUFjdHVhbEZvcm1hdCA9IG1EZXB0aFN0ZW5j
aWwtPmdldEFjdHVhbEZvcm1hdCgpOworICAgIG1TYW1wbGVzID0gbURlcHRoU3RlbmNpbC0+Z2V0
U2FtcGxlcygpOworfQorCitEZXB0aFN0ZW5jaWxidWZmZXI6On5EZXB0aFN0ZW5jaWxidWZmZXIo
KQoreworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgZGVsZXRlIG1EZXB0
aFN0ZW5jaWw7CisgICAgfQorfQorCityeDo6UmVuZGVyVGFyZ2V0ICpEZXB0aFN0ZW5jaWxidWZm
ZXI6OmdldERlcHRoU3RlbmNpbCgpCit7CisgICAgaWYgKG1EZXB0aFN0ZW5jaWwpCisgICAgewor
ICAgICAgICByZXR1cm4gbURlcHRoU3RlbmNpbDsKKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsK
K30KKworRGVwdGhidWZmZXI6OkRlcHRoYnVmZmVyKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIGlu
dCB3aWR0aCwgaW50IGhlaWdodCwgR0xzaXplaSBzYW1wbGVzKSA6IERlcHRoU3RlbmNpbGJ1ZmZl
cihyZW5kZXJlciwgd2lkdGgsIGhlaWdodCwgc2FtcGxlcykKK3sKKyAgICBpZiAobURlcHRoU3Rl
bmNpbCkKKyAgICB7CisgICAgICAgIG1JbnRlcm5hbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDE2OyAgIC8vIElmIHRoZSByZW5kZXJidWZmZXIgcGFyYW1ldGVycyBhcmUgcXVlcmllZCwgdGhl
IGNhbGxpbmcgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gd2lsbCBleHBlY3Qgb25lIG9mIHRoZSB2YWxpZCByZW5kZXJidWZmZXIg
Zm9ybWF0cyBmb3IgdXNlIGluIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UKKyAgICB9Cit9CisKK0RlcHRo
YnVmZmVyOjp+RGVwdGhidWZmZXIoKQoreworfQorCitTdGVuY2lsYnVmZmVyOjpTdGVuY2lsYnVm
ZmVyKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCwgR0xzaXpl
aSBzYW1wbGVzKSA6IERlcHRoU3RlbmNpbGJ1ZmZlcihyZW5kZXJlciwgd2lkdGgsIGhlaWdodCwg
c2FtcGxlcykKK3sKKyAgICBpZiAobURlcHRoU3RlbmNpbCkKKyAgICB7CisgICAgICAgIG1JbnRl
cm5hbEZvcm1hdCA9IEdMX1NURU5DSUxfSU5ERVg4OyAgIC8vIElmIHRoZSByZW5kZXJidWZmZXIg
cGFyYW1ldGVycyBhcmUgcXVlcmllZCwgdGhlIGNhbGxpbmcgZnVuY3Rpb24KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBleHBlY3Qgb25lIG9m
IHRoZSB2YWxpZCByZW5kZXJidWZmZXIgZm9ybWF0cyBmb3IgdXNlIGluIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnbFJlbmRlcmJ1ZmZlclN0b3Jh
Z2UKKyAgICB9Cit9CisKK1N0ZW5jaWxidWZmZXI6On5TdGVuY2lsYnVmZmVyKCkKK3sKK30KKwor
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZm
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L1JlbmRlcmJ1ZmZlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNjEg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFJlbmRlcmJ1ZmZlci5oOiBEZWZpbmVzIHRoZSB3
cmFwcGVyIGNsYXNzIGdsOjpSZW5kZXJidWZmZXIsIGFzIHdlbGwgYXMgdGhlCisvLyBjbGFzcyBo
aWVyYXJjaHkgdXNlZCB0byBzdG9yZSBpdHMgY29udGVudHM6IFJlbmRlcmJ1ZmZlclN0b3JhZ2Us
IENvbG9yYnVmZmVyLAorLy8gRGVwdGhTdGVuY2lsYnVmZmVyLCBEZXB0aGJ1ZmZlciBhbmQgU3Rl
bmNpbGJ1ZmZlci4gSW1wbGVtZW50cyBHTCByZW5kZXJidWZmZXIKKy8vIG9iamVjdHMgYW5kIHJl
bGF0ZWQgZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gNC40LjMgcGFn
ZSAxMDguCisKKyNpZm5kZWYgTElCR0xFU1YyX1JFTkRFUkJVRkZFUl9IXworI2RlZmluZSBMSUJH
TEVTVjJfUkVOREVSQlVGRkVSX0hfCisKKyNkZWZpbmUgR0xfQVBJQ0FMTAorI2luY2x1ZGUgPEdM
RVMyL2dsMi5oPgorCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJj
b21tb24vUmVmQ291bnRPYmplY3QuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJl
cjsKK2NsYXNzIFN3YXBDaGFpbjsKK2NsYXNzIFJlbmRlclRhcmdldDsKK30KKworbmFtZXNwYWNl
IGdsCit7CitjbGFzcyBUZXh0dXJlMkQ7CitjbGFzcyBUZXh0dXJlQ3ViZU1hcDsKK2NsYXNzIFJl
bmRlcmJ1ZmZlcjsKK2NsYXNzIENvbG9yYnVmZmVyOworY2xhc3MgRGVwdGhTdGVuY2lsYnVmZmVy
OworCitjbGFzcyBSZW5kZXJidWZmZXJJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIFJlbmRl
cmJ1ZmZlckludGVyZmFjZSgpOworCisgICAgdmlydHVhbCB+UmVuZGVyYnVmZmVySW50ZXJmYWNl
KCkge307CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVy
ICpwcm94eSk7CisgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZm
ZXIgKnByb3h5KTsKKworICAgIHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFy
Z2V0KCkgPSAwOworICAgIHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0RGVwdGhTdGVuY2ls
KCkgPSAwOworCisgICAgdmlydHVhbCBHTHNpemVpIGdldFdpZHRoKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgR0xzaXplaSBnZXRIZWlnaHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBHTGVu
dW0gZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBHTGVudW0gZ2V0
QWN0dWFsRm9ybWF0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgR0xzaXplaSBnZXRTYW1wbGVz
KCkgY29uc3QgPSAwOworCisgICAgR0x1aW50IGdldFJlZFNpemUoKSBjb25zdDsKKyAgICBHTHVp
bnQgZ2V0R3JlZW5TaXplKCkgY29uc3Q7CisgICAgR0x1aW50IGdldEJsdWVTaXplKCkgY29uc3Q7
CisgICAgR0x1aW50IGdldEFscGhhU2l6ZSgpIGNvbnN0OworICAgIEdMdWludCBnZXREZXB0aFNp
emUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0U3RlbmNpbFNpemUoKSBjb25zdDsKKworICAgIHZp
cnR1YWwgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0ID0gMDsKKworICBwcml2YXRlOgor
ICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJidWZmZXJJbnRlcmZhY2UpOworfTsK
KworY2xhc3MgUmVuZGVyYnVmZmVyVGV4dHVyZTJEIDogcHVibGljIFJlbmRlcmJ1ZmZlckludGVy
ZmFjZQoreworICBwdWJsaWM6CisgICAgUmVuZGVyYnVmZmVyVGV4dHVyZTJEKFRleHR1cmUyRCAq
dGV4dHVyZSwgR0xlbnVtIHRhcmdldCk7CisKKyAgICB2aXJ0dWFsIH5SZW5kZXJidWZmZXJUZXh0
dXJlMkQoKTsKKworICAgIHZvaWQgYWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94
eSk7CisgICAgdm9pZCByZWxlYXNlUHJveHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7CisK
KyAgICByeDo6UmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoKTsKKyAgICByeDo6UmVuZGVy
VGFyZ2V0ICpnZXREZXB0aFN0ZW5jaWwoKTsKKworICAgIHZpcnR1YWwgR0xzaXplaSBnZXRXaWR0
aCgpIGNvbnN0OworICAgIHZpcnR1YWwgR0xzaXplaSBnZXRIZWlnaHQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIEdMZW51bSBnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0OworICAgIHZpcnR1YWwgR0xl
bnVtIGdldEFjdHVhbEZvcm1hdCgpIGNvbnN0OworICAgIHZpcnR1YWwgR0xzaXplaSBnZXRTYW1w
bGVzKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25z
dDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJidWZm
ZXJUZXh0dXJlMkQpOworCisgICAgQmluZGluZ1BvaW50ZXIgPFRleHR1cmUyRD4gbVRleHR1cmUy
RDsKKyAgICBHTGVudW0gbVRhcmdldDsKK307CisKK2NsYXNzIFJlbmRlcmJ1ZmZlclRleHR1cmVD
dWJlTWFwIDogcHVibGljIFJlbmRlcmJ1ZmZlckludGVyZmFjZQoreworICBwdWJsaWM6CisgICAg
UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXAoVGV4dHVyZUN1YmVNYXAgKnRleHR1cmUsIEdMZW51
bSB0YXJnZXQpOworCisgICAgdmlydHVhbCB+UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXAoKTsK
KworICAgIHZvaWQgYWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7CisgICAg
dm9pZCByZWxlYXNlUHJveHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7CisKKyAgICByeDo6
UmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoKTsKKyAgICByeDo6UmVuZGVyVGFyZ2V0ICpn
ZXREZXB0aFN0ZW5jaWwoKTsKKworICAgIHZpcnR1YWwgR0xzaXplaSBnZXRXaWR0aCgpIGNvbnN0
OworICAgIHZpcnR1YWwgR0xzaXplaSBnZXRIZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEdM
ZW51bSBnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0OworICAgIHZpcnR1YWwgR0xlbnVtIGdldEFj
dHVhbEZvcm1hdCgpIGNvbnN0OworICAgIHZpcnR1YWwgR0xzaXplaSBnZXRTYW1wbGVzKCkgY29u
c3Q7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKKworICBw
cml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJidWZmZXJUZXh0dXJl
Q3ViZU1hcCk7CisKKyAgICBCaW5kaW5nUG9pbnRlciA8VGV4dHVyZUN1YmVNYXA+IG1UZXh0dXJl
Q3ViZU1hcDsKKyAgICBHTGVudW0gbVRhcmdldDsKK307CisKKy8vIEEgY2xhc3MgZGVyaXZlZCBm
cm9tIFJlbmRlcmJ1ZmZlclN0b3JhZ2UgaXMgY3JlYXRlZCB3aGVuZXZlciBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2UKKy8vIGlzIGNhbGxlZC4gVGhlIHNwZWNpZmljIGNvbmNyZXRlIHR5cGUgZGVwZW5k
cyBvbiB3aGV0aGVyIHRoZSBpbnRlcm5hbCBmb3JtYXQgaXMKKy8vIGNvbG91ciBkZXB0aCwgc3Rl
bmNpbCBvciBwYWNrZWQgZGVwdGgvc3RlbmNpbC4KK2NsYXNzIFJlbmRlcmJ1ZmZlclN0b3JhZ2Ug
OiBwdWJsaWMgUmVuZGVyYnVmZmVySW50ZXJmYWNlCit7CisgIHB1YmxpYzoKKyAgICBSZW5kZXJi
dWZmZXJTdG9yYWdlKCk7CisKKyAgICB2aXJ0dWFsIH5SZW5kZXJidWZmZXJTdG9yYWdlKCkgPSAw
OworCisgICAgdmlydHVhbCByeDo6UmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoKTsKKyAg
ICB2aXJ0dWFsIHJ4OjpSZW5kZXJUYXJnZXQgKmdldERlcHRoU3RlbmNpbCgpOworCisgICAgdmly
dHVhbCBHTHNpemVpIGdldFdpZHRoKCkgY29uc3Q7CisgICAgdmlydHVhbCBHTHNpemVpIGdldEhl
aWdodCgpIGNvbnN0OworICAgIHZpcnR1YWwgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29u
c3Q7CisgICAgdmlydHVhbCBHTGVudW0gZ2V0QWN0dWFsRm9ybWF0KCkgY29uc3Q7CisgICAgdmly
dHVhbCBHTHNpemVpIGdldFNhbXBsZXMoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQg
aW50IGdldFNlcmlhbCgpIGNvbnN0OworCisgICAgc3RhdGljIHVuc2lnbmVkIGludCBpc3N1ZVNl
cmlhbCgpOworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXNzdWVDdWJlU2VyaWFscygpOworCisg
IHByb3RlY3RlZDoKKyAgICBHTHNpemVpIG1XaWR0aDsKKyAgICBHTHNpemVpIG1IZWlnaHQ7Cisg
ICAgR0xlbnVtIG1JbnRlcm5hbEZvcm1hdDsKKyAgICBHTGVudW0gbUFjdHVhbEZvcm1hdDsKKyAg
ICBHTHNpemVpIG1TYW1wbGVzOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOKFJlbmRlcmJ1ZmZlclN0b3JhZ2UpOworCisgICAgY29uc3QgdW5zaWduZWQgaW50IG1T
ZXJpYWw7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IG1DdXJyZW50U2VyaWFsOworfTsKKwor
Ly8gUmVuZGVyYnVmZmVyIGltcGxlbWVudHMgdGhlIEdMIHJlbmRlcmJ1ZmZlciBvYmplY3QuCisv
LyBJdCdzIG9ubHkgYSBwcm94eSBmb3IgYSBSZW5kZXJidWZmZXJJbnRlcmZhY2UgaW5zdGFuY2U7
IHRoZSBpbnRlcm5hbCBvYmplY3QKKy8vIGNhbiBjaGFuZ2Ugd2hlbmV2ZXIgZ2xSZW5kZXJidWZm
ZXJTdG9yYWdlIGlzIGNhbGxlZC4KK2NsYXNzIFJlbmRlcmJ1ZmZlciA6IHB1YmxpYyBSZWZDb3Vu
dE9iamVjdAoreworICBwdWJsaWM6CisgICAgUmVuZGVyYnVmZmVyKHJ4OjpSZW5kZXJlciAqcmVu
ZGVyZXIsIEdMdWludCBpZCwgUmVuZGVyYnVmZmVySW50ZXJmYWNlICpzdG9yYWdlKTsKKworICAg
IHZpcnR1YWwgflJlbmRlcmJ1ZmZlcigpOworCisgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGZyb20g
UmVmQ291bnRPYmplY3QgYXJlIG92ZXJsb2FkZWQgaGVyZSBiZWNhdXNlCisgICAgLy8gVGV4dHVy
ZXMgbmVlZCB0byBtYWludGFpbiB0aGVpciBvd24gY291bnQgb2YgcmVmZXJlbmNlcyB0byB0aGVt
IHZpYQorICAgIC8vIFJlbmRlcmJ1ZmZlcnMvUmVuZGVyYnVmZmVyVGV4dHVyZXMuIFRoZXNlIGZ1
bmN0aW9ucyBpbnZva2UgdGhvc2UKKyAgICAvLyByZWZlcmVuY2UgY291bnRpbmcgZnVuY3Rpb25z
IG9uIHRoZSBSZW5kZXJidWZmZXJJbnRlcmZhY2UuCisgICAgdm9pZCBhZGRSZWYoKSBjb25zdDsK
KyAgICB2b2lkIHJlbGVhc2UoKSBjb25zdDsKKworICAgIHJ4OjpSZW5kZXJUYXJnZXQgKmdldFJl
bmRlclRhcmdldCgpOworICAgIHJ4OjpSZW5kZXJUYXJnZXQgKmdldERlcHRoU3RlbmNpbCgpOwor
CisgICAgR0xzaXplaSBnZXRXaWR0aCgpIGNvbnN0OworICAgIEdMc2l6ZWkgZ2V0SGVpZ2h0KCkg
Y29uc3Q7CisgICAgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3Q7CisgICAgR0xlbnVt
IGdldEFjdHVhbEZvcm1hdCgpIGNvbnN0OworICAgIEdMdWludCBnZXRSZWRTaXplKCkgY29uc3Q7
CisgICAgR0x1aW50IGdldEdyZWVuU2l6ZSgpIGNvbnN0OworICAgIEdMdWludCBnZXRCbHVlU2l6
ZSgpIGNvbnN0OworICAgIEdMdWludCBnZXRBbHBoYVNpemUoKSBjb25zdDsKKyAgICBHTHVpbnQg
Z2V0RGVwdGhTaXplKCkgY29uc3Q7CisgICAgR0x1aW50IGdldFN0ZW5jaWxTaXplKCkgY29uc3Q7
CisgICAgR0xzaXplaSBnZXRTYW1wbGVzKCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCBpbnQgZ2V0
U2VyaWFsKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldFN0b3JhZ2UoUmVuZGVyYnVmZmVyU3RvcmFn
ZSAqbmV3U3RvcmFnZSk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oUmVuZGVyYnVmZmVyKTsKKworICAgIFJlbmRlcmJ1ZmZlckludGVyZmFjZSAqbUluc3RhbmNl
OworfTsKKworY2xhc3MgQ29sb3JidWZmZXIgOiBwdWJsaWMgUmVuZGVyYnVmZmVyU3RvcmFnZQor
eworICBwdWJsaWM6CisgICAgQ29sb3JidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgcng6
OlN3YXBDaGFpbiAqc3dhcENoYWluKTsKKyAgICBDb2xvcmJ1ZmZlcihyeDo6UmVuZGVyZXIgKnJl
bmRlcmVyLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xz
aXplaSBzYW1wbGVzKTsKKworICAgIHZpcnR1YWwgfkNvbG9yYnVmZmVyKCk7CisKKyAgICB2aXJ0
dWFsIHJ4OjpSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldCgpOworCisgIHByaXZhdGU6Cisg
ICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKENvbG9yYnVmZmVyKTsKKworICAgIHJ4OjpSZW5k
ZXJUYXJnZXQgKm1SZW5kZXJUYXJnZXQ7Cit9OworCitjbGFzcyBEZXB0aFN0ZW5jaWxidWZmZXIg
OiBwdWJsaWMgUmVuZGVyYnVmZmVyU3RvcmFnZQoreworICBwdWJsaWM6CisgICAgRGVwdGhTdGVu
Y2lsYnVmZmVyKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIHJ4OjpTd2FwQ2hhaW4gKnN3YXBDaGFp
bik7CisgICAgRGVwdGhTdGVuY2lsYnVmZmVyKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIHNhbXBsZXMpOworCisgICAgfkRlcHRo
U3RlbmNpbGJ1ZmZlcigpOworCisgICAgdmlydHVhbCByeDo6UmVuZGVyVGFyZ2V0ICpnZXREZXB0
aFN0ZW5jaWwoKTsKKworICBwcm90ZWN0ZWQ6CisgICAgcng6OlJlbmRlclRhcmdldCAgKm1EZXB0
aFN0ZW5jaWw7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oRGVw
dGhTdGVuY2lsYnVmZmVyKTsKK307CisKK2NsYXNzIERlcHRoYnVmZmVyIDogcHVibGljIERlcHRo
U3RlbmNpbGJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgRGVwdGhidWZmZXIocng6OlJlbmRlcmVy
ICpyZW5kZXJlciwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgc2FtcGxl
cyk7CisKKyAgICB2aXJ0dWFsIH5EZXB0aGJ1ZmZlcigpOworCisgIHByaXZhdGU6CisgICAgRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKERlcHRoYnVmZmVyKTsKK307CisKK2NsYXNzIFN0ZW5jaWxi
dWZmZXIgOiBwdWJsaWMgRGVwdGhTdGVuY2lsYnVmZmVyCit7CisgIHB1YmxpYzoKKyAgICBTdGVu
Y2lsYnVmZmVyKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBHTHNpemVpIHNhbXBsZXMpOworCisgICAgdmlydHVhbCB+U3RlbmNpbGJ1ZmZlcigp
OworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFN0ZW5jaWxidWZm
ZXIpOworfTsKK30KKworI2VuZGlmICAgLy8gTElCR0xFU1YyX1JFTkRFUkJVRkZFUl9IXwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
UmVzb3VyY2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvUmVzb3VyY2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzMjIgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gUmVzb3VyY2VNYW5hZ2VyLmNwcDogSW1wbGVtZW50cyB0aGUgZ2w6OlJlc291cmNlTWFu
YWdlciBjbGFzcywgd2hpY2ggdHJhY2tzIGFuZCAKKy8vIHJldHJpZXZlcyBvYmplY3RzIHdoaWNo
IG1heSBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgQ29udGV4dHMuCisKKyNpbmNsdWRlICJsaWJHTEVT
djIvUmVzb3VyY2VNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvQnVmZmVyLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW0uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVy
YnVmZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1NoYWRlci5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi9UZXh0dXJlLmgiCisKK25hbWVzcGFjZSBnbAoreworUmVzb3VyY2VNYW5hZ2VyOjpSZXNv
dXJjZU1hbmFnZXIocng6OlJlbmRlcmVyICpyZW5kZXJlcikKK3sKKyAgICBtUmVmQ291bnQgPSAx
OworICAgIG1SZW5kZXJlciA9IHJlbmRlcmVyOworfQorCitSZXNvdXJjZU1hbmFnZXI6On5SZXNv
dXJjZU1hbmFnZXIoKQoreworICAgIHdoaWxlICghbUJ1ZmZlck1hcC5lbXB0eSgpKQorICAgIHsK
KyAgICAgICAgZGVsZXRlQnVmZmVyKG1CdWZmZXJNYXAuYmVnaW4oKS0+Zmlyc3QpOworICAgIH0K
KworICAgIHdoaWxlICghbVByb2dyYW1NYXAuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGRlbGV0
ZVByb2dyYW0obVByb2dyYW1NYXAuYmVnaW4oKS0+Zmlyc3QpOworICAgIH0KKworICAgIHdoaWxl
ICghbVNoYWRlck1hcC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlU2hhZGVyKG1TaGFk
ZXJNYXAuYmVnaW4oKS0+Zmlyc3QpOworICAgIH0KKworICAgIHdoaWxlICghbVJlbmRlcmJ1ZmZl
ck1hcC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlUmVuZGVyYnVmZmVyKG1SZW5kZXJi
dWZmZXJNYXAuYmVnaW4oKS0+Zmlyc3QpOworICAgIH0KKworICAgIHdoaWxlICghbVRleHR1cmVN
YXAuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGRlbGV0ZVRleHR1cmUobVRleHR1cmVNYXAuYmVn
aW4oKS0+Zmlyc3QpOworICAgIH0KK30KKwordm9pZCBSZXNvdXJjZU1hbmFnZXI6OmFkZFJlZigp
Cit7CisgICAgbVJlZkNvdW50Kys7Cit9CisKK3ZvaWQgUmVzb3VyY2VNYW5hZ2VyOjpyZWxlYXNl
KCkKK3sKKyAgICBpZiAoLS1tUmVmQ291bnQgPT0gMCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0
aGlzOworICAgIH0KK30KKworLy8gUmV0dXJucyBhbiB1bnVzZWQgYnVmZmVyIG5hbWUKK0dMdWlu
dCBSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZUJ1ZmZlcigpCit7CisgICAgR0x1aW50IGhhbmRsZSA9
IG1CdWZmZXJIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKKworICAgIG1CdWZmZXJNYXBbaGFu
ZGxlXSA9IE5VTEw7CisKKyAgICByZXR1cm4gaGFuZGxlOworfQorCisvLyBSZXR1cm5zIGFuIHVu
dXNlZCBzaGFkZXIvcHJvZ3JhbSBuYW1lCitHTHVpbnQgUmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVT
aGFkZXIoR0xlbnVtIHR5cGUpCit7CisgICAgR0x1aW50IGhhbmRsZSA9IG1Qcm9ncmFtU2hhZGVy
SGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7CisKKyAgICBpZiAodHlwZSA9PSBHTF9WRVJURVhf
U0hBREVSKQorICAgIHsKKyAgICAgICAgbVNoYWRlck1hcFtoYW5kbGVdID0gbmV3IFZlcnRleFNo
YWRlcih0aGlzLCBtUmVuZGVyZXIsIGhhbmRsZSk7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUg
PT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAgbVNoYWRlck1hcFtoYW5kbGVd
ID0gbmV3IEZyYWdtZW50U2hhZGVyKHRoaXMsIG1SZW5kZXJlciwgaGFuZGxlKTsKKyAgICB9Cisg
ICAgZWxzZSBVTlJFQUNIQUJMRSgpOworCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKworLy8gUmV0
dXJucyBhbiB1bnVzZWQgcHJvZ3JhbS9zaGFkZXIgbmFtZQorR0x1aW50IFJlc291cmNlTWFuYWdl
cjo6Y3JlYXRlUHJvZ3JhbSgpCit7CisgICAgR0x1aW50IGhhbmRsZSA9IG1Qcm9ncmFtU2hhZGVy
SGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7CisKKyAgICBtUHJvZ3JhbU1hcFtoYW5kbGVdID0g
bmV3IFByb2dyYW0obVJlbmRlcmVyLCB0aGlzLCBoYW5kbGUpOworCisgICAgcmV0dXJuIGhhbmRs
ZTsKK30KKworLy8gUmV0dXJucyBhbiB1bnVzZWQgdGV4dHVyZSBuYW1lCitHTHVpbnQgUmVzb3Vy
Y2VNYW5hZ2VyOjpjcmVhdGVUZXh0dXJlKCkKK3sKKyAgICBHTHVpbnQgaGFuZGxlID0gbVRleHR1
cmVIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKKworICAgIG1UZXh0dXJlTWFwW2hhbmRsZV0g
PSBOVUxMOworCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKworLy8gUmV0dXJucyBhbiB1bnVzZWQg
cmVuZGVyYnVmZmVyIG5hbWUKK0dMdWludCBSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVJlbmRlcmJ1
ZmZlcigpCit7CisgICAgR0x1aW50IGhhbmRsZSA9IG1SZW5kZXJidWZmZXJIYW5kbGVBbGxvY2F0
b3IuYWxsb2NhdGUoKTsKKworICAgIG1SZW5kZXJidWZmZXJNYXBbaGFuZGxlXSA9IE5VTEw7CisK
KyAgICByZXR1cm4gaGFuZGxlOworfQorCit2b2lkIFJlc291cmNlTWFuYWdlcjo6ZGVsZXRlQnVm
ZmVyKEdMdWludCBidWZmZXIpCit7CisgICAgQnVmZmVyTWFwOjppdGVyYXRvciBidWZmZXJPYmpl
Y3QgPSBtQnVmZmVyTWFwLmZpbmQoYnVmZmVyKTsKKworICAgIGlmIChidWZmZXJPYmplY3QgIT0g
bUJ1ZmZlck1hcC5lbmQoKSkKKyAgICB7CisgICAgICAgIG1CdWZmZXJIYW5kbGVBbGxvY2F0b3Iu
cmVsZWFzZShidWZmZXJPYmplY3QtPmZpcnN0KTsKKyAgICAgICAgaWYgKGJ1ZmZlck9iamVjdC0+
c2Vjb25kKSBidWZmZXJPYmplY3QtPnNlY29uZC0+cmVsZWFzZSgpOworICAgICAgICBtQnVmZmVy
TWFwLmVyYXNlKGJ1ZmZlck9iamVjdCk7CisgICAgfQorfQorCit2b2lkIFJlc291cmNlTWFuYWdl
cjo6ZGVsZXRlU2hhZGVyKEdMdWludCBzaGFkZXIpCit7CisgICAgU2hhZGVyTWFwOjppdGVyYXRv
ciBzaGFkZXJPYmplY3QgPSBtU2hhZGVyTWFwLmZpbmQoc2hhZGVyKTsKKworICAgIGlmIChzaGFk
ZXJPYmplY3QgIT0gbVNoYWRlck1hcC5lbmQoKSkKKyAgICB7CisgICAgICAgIGlmIChzaGFkZXJP
YmplY3QtPnNlY29uZC0+Z2V0UmVmQ291bnQoKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAg
ICBtUHJvZ3JhbVNoYWRlckhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKHNoYWRlck9iamVjdC0+Zmly
c3QpOworICAgICAgICAgICAgZGVsZXRlIHNoYWRlck9iamVjdC0+c2Vjb25kOworICAgICAgICAg
ICAgbVNoYWRlck1hcC5lcmFzZShzaGFkZXJPYmplY3QpOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgc2hhZGVyT2JqZWN0LT5zZWNvbmQtPmZsYWdGb3JE
ZWxldGlvbigpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFJlc291cmNlTWFuYWdlcjo6
ZGVsZXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKK3sKKyAgICBQcm9ncmFtTWFwOjppdGVyYXRv
ciBwcm9ncmFtT2JqZWN0ID0gbVByb2dyYW1NYXAuZmluZChwcm9ncmFtKTsKKworICAgIGlmIChw
cm9ncmFtT2JqZWN0ICE9IG1Qcm9ncmFtTWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgaWYgKHBy
b2dyYW1PYmplY3QtPnNlY29uZC0+Z2V0UmVmQ291bnQoKSA9PSAwKQorICAgICAgICB7CisgICAg
ICAgICAgICBtUHJvZ3JhbVNoYWRlckhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKHByb2dyYW1PYmpl
Y3QtPmZpcnN0KTsKKyAgICAgICAgICAgIGRlbGV0ZSBwcm9ncmFtT2JqZWN0LT5zZWNvbmQ7Cisg
ICAgICAgICAgICBtUHJvZ3JhbU1hcC5lcmFzZShwcm9ncmFtT2JqZWN0KTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlCisgICAgICAgIHsgCisgICAgICAgICAgICBwcm9ncmFtT2JqZWN0LT5zZWNv
bmQtPmZsYWdGb3JEZWxldGlvbigpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFJlc291
cmNlTWFuYWdlcjo6ZGVsZXRlVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKK3sKKyAgICBUZXh0dXJl
TWFwOjppdGVyYXRvciB0ZXh0dXJlT2JqZWN0ID0gbVRleHR1cmVNYXAuZmluZCh0ZXh0dXJlKTsK
KworICAgIGlmICh0ZXh0dXJlT2JqZWN0ICE9IG1UZXh0dXJlTWFwLmVuZCgpKQorICAgIHsKKyAg
ICAgICAgbVRleHR1cmVIYW5kbGVBbGxvY2F0b3IucmVsZWFzZSh0ZXh0dXJlT2JqZWN0LT5maXJz
dCk7CisgICAgICAgIGlmICh0ZXh0dXJlT2JqZWN0LT5zZWNvbmQpIHRleHR1cmVPYmplY3QtPnNl
Y29uZC0+cmVsZWFzZSgpOworICAgICAgICBtVGV4dHVyZU1hcC5lcmFzZSh0ZXh0dXJlT2JqZWN0
KTsKKyAgICB9Cit9CisKK3ZvaWQgUmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVSZW5kZXJidWZmZXIo
R0x1aW50IHJlbmRlcmJ1ZmZlcikKK3sKKyAgICBSZW5kZXJidWZmZXJNYXA6Oml0ZXJhdG9yIHJl
bmRlcmJ1ZmZlck9iamVjdCA9IG1SZW5kZXJidWZmZXJNYXAuZmluZChyZW5kZXJidWZmZXIpOwor
CisgICAgaWYgKHJlbmRlcmJ1ZmZlck9iamVjdCAhPSBtUmVuZGVyYnVmZmVyTWFwLmVuZCgpKQor
ICAgIHsKKyAgICAgICAgbVJlbmRlcmJ1ZmZlckhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKHJlbmRl
cmJ1ZmZlck9iamVjdC0+Zmlyc3QpOworICAgICAgICBpZiAocmVuZGVyYnVmZmVyT2JqZWN0LT5z
ZWNvbmQpIHJlbmRlcmJ1ZmZlck9iamVjdC0+c2Vjb25kLT5yZWxlYXNlKCk7CisgICAgICAgIG1S
ZW5kZXJidWZmZXJNYXAuZXJhc2UocmVuZGVyYnVmZmVyT2JqZWN0KTsKKyAgICB9Cit9CisKK0J1
ZmZlciAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRCdWZmZXIodW5zaWduZWQgaW50IGhhbmRsZSkKK3sK
KyAgICBCdWZmZXJNYXA6Oml0ZXJhdG9yIGJ1ZmZlciA9IG1CdWZmZXJNYXAuZmluZChoYW5kbGUp
OworCisgICAgaWYgKGJ1ZmZlciA9PSBtQnVmZmVyTWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBidWZm
ZXItPnNlY29uZDsKKyAgICB9Cit9CisKK1NoYWRlciAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRTaGFk
ZXIodW5zaWduZWQgaW50IGhhbmRsZSkKK3sKKyAgICBTaGFkZXJNYXA6Oml0ZXJhdG9yIHNoYWRl
ciA9IG1TaGFkZXJNYXAuZmluZChoYW5kbGUpOworCisgICAgaWYgKHNoYWRlciA9PSBtU2hhZGVy
TWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIHJldHVybiBzaGFkZXItPnNlY29uZDsKKyAgICB9Cit9CisKK1RleHR1
cmUgKlJlc291cmNlTWFuYWdlcjo6Z2V0VGV4dHVyZSh1bnNpZ25lZCBpbnQgaGFuZGxlKQorewor
ICAgIGlmIChoYW5kbGUgPT0gMCkgcmV0dXJuIE5VTEw7CisKKyAgICBUZXh0dXJlTWFwOjppdGVy
YXRvciB0ZXh0dXJlID0gbVRleHR1cmVNYXAuZmluZChoYW5kbGUpOworCisgICAgaWYgKHRleHR1
cmUgPT0gbVRleHR1cmVNYXAuZW5kKCkpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRleHR1cmUtPnNlY29uZDsKKyAg
ICB9Cit9CisKK1Byb2dyYW0gKlJlc291cmNlTWFuYWdlcjo6Z2V0UHJvZ3JhbSh1bnNpZ25lZCBp
bnQgaGFuZGxlKQoreworICAgIFByb2dyYW1NYXA6Oml0ZXJhdG9yIHByb2dyYW0gPSBtUHJvZ3Jh
bU1hcC5maW5kKGhhbmRsZSk7CisKKyAgICBpZiAocHJvZ3JhbSA9PSBtUHJvZ3JhbU1hcC5lbmQo
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICByZXR1cm4gcHJvZ3JhbS0+c2Vjb25kOworICAgIH0KK30KKworUmVuZGVyYnVmZmVy
ICpSZXNvdXJjZU1hbmFnZXI6OmdldFJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBpbnQgaGFuZGxlKQor
eworICAgIFJlbmRlcmJ1ZmZlck1hcDo6aXRlcmF0b3IgcmVuZGVyYnVmZmVyID0gbVJlbmRlcmJ1
ZmZlck1hcC5maW5kKGhhbmRsZSk7CisKKyAgICBpZiAocmVuZGVyYnVmZmVyID09IG1SZW5kZXJi
dWZmZXJNYXAuZW5kKCkpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmJ1ZmZlci0+c2Vjb25kOworICAgIH0K
K30KKwordm9pZCBSZXNvdXJjZU1hbmFnZXI6OnNldFJlbmRlcmJ1ZmZlcihHTHVpbnQgaGFuZGxl
LCBSZW5kZXJidWZmZXIgKmJ1ZmZlcikKK3sKKyAgICBtUmVuZGVyYnVmZmVyTWFwW2hhbmRsZV0g
PSBidWZmZXI7Cit9CisKK3ZvaWQgUmVzb3VyY2VNYW5hZ2VyOjpjaGVja0J1ZmZlckFsbG9jYXRp
b24odW5zaWduZWQgaW50IGJ1ZmZlcikKK3sKKyAgICBpZiAoYnVmZmVyICE9IDAgJiYgIWdldEJ1
ZmZlcihidWZmZXIpKQorICAgIHsKKyAgICAgICAgQnVmZmVyICpidWZmZXJPYmplY3QgPSBuZXcg
QnVmZmVyKG1SZW5kZXJlciwgYnVmZmVyKTsKKyAgICAgICAgbUJ1ZmZlck1hcFtidWZmZXJdID0g
YnVmZmVyT2JqZWN0OworICAgICAgICBidWZmZXJPYmplY3QtPmFkZFJlZigpOworICAgIH0KK30K
Kwordm9pZCBSZXNvdXJjZU1hbmFnZXI6OmNoZWNrVGV4dHVyZUFsbG9jYXRpb24oR0x1aW50IHRl
eHR1cmUsIFRleHR1cmVUeXBlIHR5cGUpCit7CisgICAgaWYgKCFnZXRUZXh0dXJlKHRleHR1cmUp
ICYmIHRleHR1cmUgIT0gMCkKKyAgICB7CisgICAgICAgIFRleHR1cmUgKnRleHR1cmVPYmplY3Q7
CisKKyAgICAgICAgaWYgKHR5cGUgPT0gVEVYVFVSRV8yRCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdGV4dHVyZU9iamVjdCA9IG5ldyBUZXh0dXJlMkQobVJlbmRlcmVyLCB0ZXh0dXJlKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIGlmICh0eXBlID09IFRFWFRVUkVfQ1VCRSkKKyAgICAgICAg
eworICAgICAgICAgICAgdGV4dHVyZU9iamVjdCA9IG5ldyBUZXh0dXJlQ3ViZU1hcChtUmVuZGVy
ZXIsIHRleHR1cmUpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIG1UZXh0dXJlTWFwW3RleHR1cmVdID0gdGV4dHVyZU9iamVjdDsKKyAgICAgICAgdGV4
dHVyZU9iamVjdC0+YWRkUmVmKCk7CisgICAgfQorfQorCit2b2lkIFJlc291cmNlTWFuYWdlcjo6
Y2hlY2tSZW5kZXJidWZmZXJBbGxvY2F0aW9uKEdMdWludCByZW5kZXJidWZmZXIpCit7CisgICAg
aWYgKHJlbmRlcmJ1ZmZlciAhPSAwICYmICFnZXRSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKSkK
KyAgICB7CisgICAgICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyT2JqZWN0ID0gbmV3IFJl
bmRlcmJ1ZmZlcihtUmVuZGVyZXIsIHJlbmRlcmJ1ZmZlciwgbmV3IENvbG9yYnVmZmVyKG1SZW5k
ZXJlciwgMCwgMCwgR0xfUkdCQTQsIDApKTsKKyAgICAgICAgbVJlbmRlcmJ1ZmZlck1hcFtyZW5k
ZXJidWZmZXJdID0gcmVuZGVyYnVmZmVyT2JqZWN0OworICAgICAgICByZW5kZXJidWZmZXJPYmpl
Y3QtPmFkZFJlZigpOworICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Jlc291cmNlTWFuYWdlci5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1h
bmFnZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDggQEAKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKy8vIFJlc291cmNlTWFuYWdlci5oIDogRGVmaW5lcyB0aGUgUmVzb3VyY2VNYW5hZ2VyIGNs
YXNzLCB3aGljaCB0cmFja3Mgb2JqZWN0cworLy8gc2hhcmVkIGJ5IG11bHRpcGxlIEdMIGNvbnRl
eHRzLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRVNPVVJDRU1BTkFHRVJfSF8KKyNkZWZpbmUgTElC
R0xFU1YyX1JFU09VUkNFTUFOQUdFUl9IXworCisjZGVmaW5lIEdMX0FQSUNBTEwKKyNpbmNsdWRl
IDxHTEVTMi9nbDIuaD4KKworI2lmZGVmIF9NU0NfVkVSCisjaW5jbHVkZSA8aGFzaF9tYXA+Cisj
ZWxzZQorI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CisjZW5kaWYKKworI2luY2x1ZGUgImNvbW1v
bi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL2FuZ2xldHlwZXMuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmgiCisKK25hbWVzcGFjZSByeAoreworY2xh
c3MgUmVuZGVyZXI7Cit9CisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgQnVmZmVyOworY2xhc3Mg
U2hhZGVyOworY2xhc3MgUHJvZ3JhbTsKK2NsYXNzIFRleHR1cmU7CitjbGFzcyBSZW5kZXJidWZm
ZXI7CisKK2NsYXNzIFJlc291cmNlTWFuYWdlcgoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQg
UmVzb3VyY2VNYW5hZ2VyKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIpOworICAgIH5SZXNvdXJjZU1h
bmFnZXIoKTsKKworICAgIHZvaWQgYWRkUmVmKCk7CisgICAgdm9pZCByZWxlYXNlKCk7CisKKyAg
ICBHTHVpbnQgY3JlYXRlQnVmZmVyKCk7CisgICAgR0x1aW50IGNyZWF0ZVNoYWRlcihHTGVudW0g
dHlwZSk7CisgICAgR0x1aW50IGNyZWF0ZVByb2dyYW0oKTsKKyAgICBHTHVpbnQgY3JlYXRlVGV4
dHVyZSgpOworICAgIEdMdWludCBjcmVhdGVSZW5kZXJidWZmZXIoKTsKKworICAgIHZvaWQgZGVs
ZXRlQnVmZmVyKEdMdWludCBidWZmZXIpOworICAgIHZvaWQgZGVsZXRlU2hhZGVyKEdMdWludCBz
aGFkZXIpOworICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSk7CisgICAgdm9p
ZCBkZWxldGVUZXh0dXJlKEdMdWludCB0ZXh0dXJlKTsKKyAgICB2b2lkIGRlbGV0ZVJlbmRlcmJ1
ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVyKTsKKworICAgIEJ1ZmZlciAqZ2V0QnVmZmVyKEdMdWlu
dCBoYW5kbGUpOworICAgIFNoYWRlciAqZ2V0U2hhZGVyKEdMdWludCBoYW5kbGUpOworICAgIFBy
b2dyYW0gKmdldFByb2dyYW0oR0x1aW50IGhhbmRsZSk7CisgICAgVGV4dHVyZSAqZ2V0VGV4dHVy
ZShHTHVpbnQgaGFuZGxlKTsKKyAgICBSZW5kZXJidWZmZXIgKmdldFJlbmRlcmJ1ZmZlcihHTHVp
bnQgaGFuZGxlKTsKKyAgICAKKyAgICB2b2lkIHNldFJlbmRlcmJ1ZmZlcihHTHVpbnQgaGFuZGxl
LCBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlcik7CisKKyAgICB2b2lkIGNoZWNrQnVmZmVyQWxs
b2NhdGlvbih1bnNpZ25lZCBpbnQgYnVmZmVyKTsKKyAgICB2b2lkIGNoZWNrVGV4dHVyZUFsbG9j
YXRpb24oR0x1aW50IHRleHR1cmUsIFRleHR1cmVUeXBlIHR5cGUpOworICAgIHZvaWQgY2hlY2tS
ZW5kZXJidWZmZXJBbGxvY2F0aW9uKEdMdWludCByZW5kZXJidWZmZXIpOworCisgIHByaXZhdGU6
CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlc291cmNlTWFuYWdlcik7CisKKyAgICBz
dGQ6OnNpemVfdCBtUmVmQ291bnQ7CisgICAgcng6OlJlbmRlcmVyICptUmVuZGVyZXI7CisKKyNp
Zm5kZWYgSEFTSF9NQVAKKyMgaWZkZWYgX01TQ19WRVIKKyMgIGRlZmluZSBIQVNIX01BUCBzdGRl
eHQ6Omhhc2hfbWFwCisjIGVsc2UKKyMgIGRlZmluZSBIQVNIX01BUCBzdGQ6OnVub3JkZXJlZF9t
YXAKKyMgZW5kaWYKKyNlbmRpZgorCisgICAgdHlwZWRlZiBIQVNIX01BUDxHTHVpbnQsIEJ1ZmZl
cio+IEJ1ZmZlck1hcDsKKyAgICBCdWZmZXJNYXAgbUJ1ZmZlck1hcDsKKyAgICBIYW5kbGVBbGxv
Y2F0b3IgbUJ1ZmZlckhhbmRsZUFsbG9jYXRvcjsKKworICAgIHR5cGVkZWYgSEFTSF9NQVA8R0x1
aW50LCBTaGFkZXIqPiBTaGFkZXJNYXA7CisgICAgU2hhZGVyTWFwIG1TaGFkZXJNYXA7CisKKyAg
ICB0eXBlZGVmIEhBU0hfTUFQPEdMdWludCwgUHJvZ3JhbSo+IFByb2dyYW1NYXA7CisgICAgUHJv
Z3JhbU1hcCBtUHJvZ3JhbU1hcDsKKyAgICBIYW5kbGVBbGxvY2F0b3IgbVByb2dyYW1TaGFkZXJI
YW5kbGVBbGxvY2F0b3I7CisKKyAgICB0eXBlZGVmIEhBU0hfTUFQPEdMdWludCwgVGV4dHVyZSo+
IFRleHR1cmVNYXA7CisgICAgVGV4dHVyZU1hcCBtVGV4dHVyZU1hcDsKKyAgICBIYW5kbGVBbGxv
Y2F0b3IgbVRleHR1cmVIYW5kbGVBbGxvY2F0b3I7CisKKyAgICB0eXBlZGVmIEhBU0hfTUFQPEdM
dWludCwgUmVuZGVyYnVmZmVyKj4gUmVuZGVyYnVmZmVyTWFwOworICAgIFJlbmRlcmJ1ZmZlck1h
cCBtUmVuZGVyYnVmZmVyTWFwOworICAgIEhhbmRsZUFsbG9jYXRvciBtUmVuZGVyYnVmZmVySGFu
ZGxlQWxsb2NhdG9yOworfTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFU09VUkNFTUFO
QUdFUl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9TaGFk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvU2hhZGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvU2hhZGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MjIgQEAKKyNp
bmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU2hhZGVyLmNw
cDogSW1wbGVtZW50cyB0aGUgZ2w6OlNoYWRlciBjbGFzcyBhbmQgaXRzICBkZXJpdmVkIGNsYXNz
ZXMKKy8vIFZlcnRleFNoYWRlciBhbmQgRnJhZ21lbnRTaGFkZXIuIEltcGxlbWVudHMgR0wgc2hh
ZGVyIG9iamVjdHMgYW5kIHJlbGF0ZWQKKy8vIGZ1bmN0aW9uYWxpdHkuIFtPcGVuR0wgRVMgMi4w
LjI0XSBzZWN0aW9uIDIuMTAgcGFnZSAyNCBhbmQgc2VjdGlvbiAzLjggcGFnZSA4NC4KKworI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9TaGFkZXIuaCIKKworI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFu
Zy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvQ29uc3RhbnRzLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL1Jlc291cmNlTWFuYWdlci5oIgorCituYW1lc3BhY2UgZ2wK
K3sKK3ZvaWQgKlNoYWRlcjo6bUZyYWdtZW50Q29tcGlsZXIgPSBOVUxMOwordm9pZCAqU2hhZGVy
OjptVmVydGV4Q29tcGlsZXIgPSBOVUxMOworCitTaGFkZXI6OlNoYWRlcihSZXNvdXJjZU1hbmFn
ZXIgKm1hbmFnZXIsIGNvbnN0IHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIEdMdWludCBoYW5kbGUp
CisgICAgOiBtSGFuZGxlKGhhbmRsZSksIG1SZW5kZXJlcihyZW5kZXJlciksIG1SZXNvdXJjZU1h
bmFnZXIobWFuYWdlcikKK3sKKyAgICBtU291cmNlID0gTlVMTDsKKyAgICBtSGxzbCA9IE5VTEw7
CisgICAgbUluZm9Mb2cgPSBOVUxMOworCisgICAgdW5jb21waWxlKCk7CisgICAgaW5pdGlhbGl6
ZUNvbXBpbGVyKCk7CisKKyAgICBtUmVmQ291bnQgPSAwOworICAgIG1EZWxldGVTdGF0dXMgPSBm
YWxzZTsKK30KKworU2hhZGVyOjp+U2hhZGVyKCkKK3sKKyAgICBkZWxldGVbXSBtU291cmNlOwor
ICAgIGRlbGV0ZVtdIG1IbHNsOworICAgIGRlbGV0ZVtdIG1JbmZvTG9nOworfQorCitHTHVpbnQg
U2hhZGVyOjpnZXRIYW5kbGUoKSBjb25zdAoreworICAgIHJldHVybiBtSGFuZGxlOworfQorCit2
b2lkIFNoYWRlcjo6c2V0U291cmNlKEdMc2l6ZWkgY291bnQsIGNvbnN0IGNoYXIgKipzdHJpbmcs
IGNvbnN0IEdMaW50ICpsZW5ndGgpCit7CisgICAgZGVsZXRlW10gbVNvdXJjZTsKKyAgICBpbnQg
dG90YWxMZW5ndGggPSAwOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQor
ICAgIHsKKyAgICAgICAgaWYgKGxlbmd0aCAmJiBsZW5ndGhbaV0gPj0gMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdG90YWxMZW5ndGggKz0gbGVuZ3RoW2ldOworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgdG90YWxMZW5ndGggKz0gKGludClzdHJsZW4o
c3RyaW5nW2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1Tb3VyY2UgPSBuZXcgY2hhclt0
b3RhbExlbmd0aCArIDFdOworICAgIGNoYXIgKmNvZGUgPSBtU291cmNlOworCisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgaW50IHN0cmluZ0xlbmd0
aDsKKworICAgICAgICBpZiAobGVuZ3RoICYmIGxlbmd0aFtpXSA+PSAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICBzdHJpbmdMZW5ndGggPSBsZW5ndGhbaV07CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBzdHJpbmdMZW5ndGggPSAoaW50KXN0cmxlbihz
dHJpbmdbaV0pOworICAgICAgICB9CisKKyAgICAgICAgc3RybmNweShjb2RlLCBzdHJpbmdbaV0s
IHN0cmluZ0xlbmd0aCk7CisgICAgICAgIGNvZGUgKz0gc3RyaW5nTGVuZ3RoOworICAgIH0KKwor
ICAgIG1Tb3VyY2VbdG90YWxMZW5ndGhdID0gJ1wwJzsKK30KKworaW50IFNoYWRlcjo6Z2V0SW5m
b0xvZ0xlbmd0aCgpIGNvbnN0Cit7CisgICAgaWYgKCFtSW5mb0xvZykKKyAgICB7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgIHJldHVybiBzdHJsZW4o
bUluZm9Mb2cpICsgMTsKKyAgICB9Cit9CisKK3ZvaWQgU2hhZGVyOjpnZXRJbmZvTG9nKEdMc2l6
ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICppbmZvTG9nKQoreworICAgIGludCBp
bmRleCA9IDA7CisKKyAgICBpZiAoYnVmU2l6ZSA+IDApCisgICAgeworICAgICAgICBpZiAobUlu
Zm9Mb2cpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluZGV4ID0gc3RkOjptaW4oYnVmU2l6ZSAt
IDEsIChpbnQpc3RybGVuKG1JbmZvTG9nKSk7CisgICAgICAgICAgICBtZW1jcHkoaW5mb0xvZywg
bUluZm9Mb2csIGluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIGluZm9Mb2dbaW5kZXhdID0g
J1wwJzsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoKQorICAgIHsKKyAgICAgICAgKmxlbmd0aCA9
IGluZGV4OworICAgIH0KK30KKworaW50IFNoYWRlcjo6Z2V0U291cmNlTGVuZ3RoKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1Tb3VyY2UpCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICByZXR1cm4gc3RybGVuKG1Tb3VyY2UpICsgMTsKKyAgICB9
Cit9CisKK2ludCBTaGFkZXI6OmdldFRyYW5zbGF0ZWRTb3VyY2VMZW5ndGgoKSBjb25zdAorewor
ICAgIGlmICghbUhsc2wpCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICByZXR1cm4gc3RybGVuKG1IbHNsKSArIDE7CisgICAgfQorfQorCit2
b2lkIFNoYWRlcjo6Z2V0U291cmNlSW1wbChjaGFyICpzb3VyY2UsIEdMc2l6ZWkgYnVmU2l6ZSwg
R0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpCit7CisgICAgaW50IGluZGV4ID0gMDsKKwor
ICAgIGlmIChidWZTaXplID4gMCkKKyAgICB7CisgICAgICAgIGlmIChzb3VyY2UpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGluZGV4ID0gc3RkOjptaW4oYnVmU2l6ZSAtIDEsIChpbnQpc3RybGVu
KHNvdXJjZSkpOworICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc291cmNlLCBpbmRleCk7Cisg
ICAgICAgIH0KKworICAgICAgICBidWZmZXJbaW5kZXhdID0gJ1wwJzsKKyAgICB9CisKKyAgICBp
ZiAobGVuZ3RoKQorICAgIHsKKyAgICAgICAgKmxlbmd0aCA9IGluZGV4OworICAgIH0KK30KKwor
dm9pZCBTaGFkZXI6OmdldFNvdXJjZShHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwg
Y2hhciAqYnVmZmVyKQoreworICAgIGdldFNvdXJjZUltcGwobVNvdXJjZSwgYnVmU2l6ZSwgbGVu
Z3RoLCBidWZmZXIpOworfQorCit2b2lkIFNoYWRlcjo6Z2V0VHJhbnNsYXRlZFNvdXJjZShHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqYnVmZmVyKQoreworICAgIGdldFNv
dXJjZUltcGwobUhsc2wsIGJ1ZlNpemUsIGxlbmd0aCwgYnVmZmVyKTsKK30KKworY29uc3Qgc2g6
OkFjdGl2ZVVuaWZvcm1zICZTaGFkZXI6OmdldFVuaWZvcm1zKCkKK3sKKyAgICByZXR1cm4gbUFj
dGl2ZVVuaWZvcm1zOworfQorCitib29sIFNoYWRlcjo6aXNDb21waWxlZCgpCit7CisgICAgcmV0
dXJuIG1IbHNsICE9IE5VTEw7Cit9CisKK2NvbnN0IGNoYXIgKlNoYWRlcjo6Z2V0SExTTCgpCit7
CisgICAgcmV0dXJuIG1IbHNsOworfQorCit2b2lkIFNoYWRlcjo6YWRkUmVmKCkKK3sKKyAgICBt
UmVmQ291bnQrKzsKK30KKwordm9pZCBTaGFkZXI6OnJlbGVhc2UoKQoreworICAgIG1SZWZDb3Vu
dC0tOworCisgICAgaWYgKG1SZWZDb3VudCA9PSAwICYmIG1EZWxldGVTdGF0dXMpCisgICAgewor
ICAgICAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVTaGFkZXIobUhhbmRsZSk7CisgICAgfQor
fQorCit1bnNpZ25lZCBpbnQgU2hhZGVyOjpnZXRSZWZDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1SZWZDb3VudDsKK30KKworYm9vbCBTaGFkZXI6OmlzRmxhZ2dlZEZvckRlbGV0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbURlbGV0ZVN0YXR1czsKK30KKwordm9pZCBTaGFkZXI6OmZs
YWdGb3JEZWxldGlvbigpCit7CisgICAgbURlbGV0ZVN0YXR1cyA9IHRydWU7Cit9CisKKy8vIFBl
cmZvcm0gYSBvbmUtdGltZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgc2hhZGVyIGNvbXBpbGVyIChv
ciBhZnRlciBiZWluZyBkZXN0cnVjdGVkIGJ5IHJlbGVhc2VDb21waWxlcikKK3ZvaWQgU2hhZGVy
Ojppbml0aWFsaXplQ29tcGlsZXIoKQoreworICAgIGlmICghbUZyYWdtZW50Q29tcGlsZXIpCisg
ICAgeworICAgICAgICBpbnQgcmVzdWx0ID0gU2hJbml0aWFsaXplKCk7CisKKyAgICAgICAgaWYg
KHJlc3VsdCkKKyAgICAgICAgeworICAgICAgICAgICAgU2hTaGFkZXJPdXRwdXQgaGxzbFZlcnNp
b24gPSAobVJlbmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVsKCkgPj0gNCkgPyBTSF9ITFNMMTFf
T1VUUFVUIDogU0hfSExTTDlfT1VUUFVUOworCisgICAgICAgICAgICBTaEJ1aWx0SW5SZXNvdXJj
ZXMgcmVzb3VyY2VzOworICAgICAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3Vy
Y2VzKTsKKworICAgICAgICAgICAgcmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMgPSBNQVhfVkVS
VEVYX0FUVFJJQlM7CisgICAgICAgICAgICByZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3Rv
cnMgPSBtUmVuZGVyZXItPmdldE1heFZlcnRleFVuaWZvcm1WZWN0b3JzKCk7CisgICAgICAgICAg
ICByZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMgPSBtUmVuZGVyZXItPmdldE1heFZhcnlpbmdW
ZWN0b3JzKCk7CisgICAgICAgICAgICByZXNvdXJjZXMuTWF4VmVydGV4VGV4dHVyZUltYWdlVW5p
dHMgPSBtUmVuZGVyZXItPmdldE1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKCk7CisgICAgICAg
ICAgICByZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9IG1SZW5kZXJlci0+
Z2V0TWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpOworICAgICAgICAgICAgcmVzb3VyY2Vz
Lk1heFRleHR1cmVJbWFnZVVuaXRzID0gTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7CisgICAgICAg
ICAgICByZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyA9IG1SZW5kZXJlci0+Z2V0
TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpOworICAgICAgICAgICAgcmVzb3VyY2VzLk1heERy
YXdCdWZmZXJzID0gbVJlbmRlcmVyLT5nZXRNYXhSZW5kZXJUYXJnZXRzKCk7CisgICAgICAgICAg
ICByZXNvdXJjZXMuT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzID0gbVJlbmRlcmVyLT5nZXREZXJp
dmF0aXZlSW5zdHJ1Y3Rpb25TdXBwb3J0KCk7CisgICAgICAgICAgICByZXNvdXJjZXMuRVhUX2Ry
YXdfYnVmZmVycyA9IG1SZW5kZXJlci0+Z2V0TWF4UmVuZGVyVGFyZ2V0cygpID4gMTsKKyAgICAg
ICAgICAgIC8vIHJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsID0gbVJlbmRlcmVyLT5n
ZXRTaGFyZUhhbmRsZVN1cHBvcnQoKSA/IDEgOiAwOyAvLyBUT0RPOiBjb21tZW50ZWQgb3V0IHVu
dGlsIHRoZSBleHRlbnNpb24gaXMgYWN0dWFsbHkgc3VwcG9ydGVkLgorICAgICAgICAgICAgcmVz
b3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA9IDE7ICAgLy8gU2hhZGVyIE1vZGVsIDIrIGFs
d2F5cyBzdXBwb3J0cyBGUDI0IChzMTZlNykgd2hpY2ggY29ycmVzcG9uZHMgdG8gaGlnaHAKKyAg
ICAgICAgICAgIHJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCA9IDE7IC8vIFNoYWRlciBNb2RlbCAy
KyBhbHdheXMgc3VwcG9ydHMgZXhwbGljaXQgZGVwdGggb3V0cHV0CisKKyAgICAgICAgICAgIG1G
cmFnbWVudENvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihTSF9GUkFHTUVOVF9TSEFERVIs
IFNIX0dMRVMyX1NQRUMsIGhsc2xWZXJzaW9uLCAmcmVzb3VyY2VzKTsKKyAgICAgICAgICAgIG1W
ZXJ0ZXhDb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoU0hfVkVSVEVYX1NIQURFUiwgU0hf
R0xFUzJfU1BFQywgaGxzbFZlcnNpb24sICZyZXNvdXJjZXMpOworICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIFNoYWRlcjo6cmVsZWFzZUNvbXBpbGVyKCkKK3sKKyAgICBTaERlc3RydWN0KG1G
cmFnbWVudENvbXBpbGVyKTsKKyAgICBTaERlc3RydWN0KG1WZXJ0ZXhDb21waWxlcik7CisKKyAg
ICBtRnJhZ21lbnRDb21waWxlciA9IE5VTEw7CisgICAgbVZlcnRleENvbXBpbGVyID0gTlVMTDsK
KworICAgIFNoRmluYWxpemUoKTsKK30KKwordm9pZCBTaGFkZXI6OnBhcnNlVmFyeWluZ3MoKQor
eworICAgIGlmIChtSGxzbCkKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIgKmlucHV0ID0gc3Ry
c3RyKG1IbHNsLCAiLy8gVmFyeWluZ3MiKSArIDEyOworCisgICAgICAgIHdoaWxlKHRydWUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNoYXIgdmFyeWluZ1R5cGVbMjU2XTsKKyAgICAgICAgICAg
IGNoYXIgdmFyeWluZ05hbWVbMjU2XTsKKworICAgICAgICAgICAgaW50IG1hdGNoZXMgPSBzc2Nh
bmYoaW5wdXQsICJzdGF0aWMgJTI1NXMgJTI1NXMiLCB2YXJ5aW5nVHlwZSwgdmFyeWluZ05hbWUp
OworCisgICAgICAgICAgICBpZiAobWF0Y2hlcyAhPSAyKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjaGFyICphcnJh
eSA9IHN0cnN0cih2YXJ5aW5nTmFtZSwgIlsiKTsKKyAgICAgICAgICAgIGludCBzaXplID0gMTsK
KworICAgICAgICAgICAgaWYgKGFycmF5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHNpemUgPSBhdG9pKGFycmF5ICsgMSk7CisgICAgICAgICAgICAgICAgKmFycmF5ID0gJ1wwJzsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbVZhcnlpbmdzLnB1c2hfYmFjayhWYXJ5aW5n
KHBhcnNlVHlwZSh2YXJ5aW5nVHlwZSksIHZhcnlpbmdOYW1lLCBzaXplLCBhcnJheSAhPSBOVUxM
KSk7CisKKyAgICAgICAgICAgIGlucHV0ID0gc3Ryc3RyKGlucHV0LCAiOyIpICsgMjsKKyAgICAg
ICAgfQorCisgICAgICAgIG1Vc2VzTXVsdGlwbGVSZW5kZXJUYXJnZXRzID0gc3Ryc3RyKG1IbHNs
LCAiR0xfVVNFU19NUlQiKSAhPSBOVUxMOworICAgICAgICBtVXNlc0ZyYWdDb2xvciA9IHN0cnN0
cihtSGxzbCwgIkdMX1VTRVNfRlJBR19DT0xPUiIpICE9IE5VTEw7CisgICAgICAgIG1Vc2VzRnJh
Z0RhdGEgPSBzdHJzdHIobUhsc2wsICJHTF9VU0VTX0ZSQUdfREFUQSIpICE9IE5VTEw7CisgICAg
ICAgIG1Vc2VzRnJhZ0Nvb3JkID0gc3Ryc3RyKG1IbHNsLCAiR0xfVVNFU19GUkFHX0NPT1JEIikg
IT0gTlVMTDsKKyAgICAgICAgbVVzZXNGcm9udEZhY2luZyA9IHN0cnN0cihtSGxzbCwgIkdMX1VT
RVNfRlJPTlRfRkFDSU5HIikgIT0gTlVMTDsKKyAgICAgICAgbVVzZXNQb2ludFNpemUgPSBzdHJz
dHIobUhsc2wsICJHTF9VU0VTX1BPSU5UX1NJWkUiKSAhPSBOVUxMOworICAgICAgICBtVXNlc1Bv
aW50Q29vcmQgPSBzdHJzdHIobUhsc2wsICJHTF9VU0VTX1BPSU5UX0NPT1JEIikgIT0gTlVMTDsK
KyAgICAgICAgbVVzZXNEZXB0aFJhbmdlID0gc3Ryc3RyKG1IbHNsLCAiR0xfVVNFU19ERVBUSF9S
QU5HRSIpICE9IE5VTEw7CisgICAgICAgIG1Vc2VzRnJhZ0RlcHRoID0gc3Ryc3RyKG1IbHNsLCAi
R0xfVVNFU19GUkFHX0RFUFRIIikgIT0gTlVMTDsKKyAgICB9Cit9CisKK3ZvaWQgU2hhZGVyOjpy
ZXNldFZhcnlpbmdzUmVnaXN0ZXJBc3NpZ25tZW50KCkKK3sKKyAgICBmb3IgKFZhcnlpbmdMaXN0
OjppdGVyYXRvciB2YXIgPSBtVmFyeWluZ3MuYmVnaW4oKTsgdmFyICE9IG1WYXJ5aW5ncy5lbmQo
KTsgdmFyKyspCisgICAgeworICAgICAgICB2YXItPnJlZyA9IC0xOworICAgICAgICB2YXItPmNv
bCA9IC0xOworICAgIH0KK30KKworLy8gaW5pdGlhbGl6ZS9jbGVhbiB1cCBwcmV2aW91cyBzdGF0
ZQordm9pZCBTaGFkZXI6OnVuY29tcGlsZSgpCit7CisgICAgLy8gc2V0IGJ5IGNvbXBpbGVUb0hM
U0wKKyAgICBkZWxldGVbXSBtSGxzbDsKKyAgICBtSGxzbCA9IE5VTEw7CisgICAgZGVsZXRlW10g
bUluZm9Mb2c7CisgICAgbUluZm9Mb2cgPSBOVUxMOworCisgICAgLy8gc2V0IGJ5IHBhcnNlVmFy
eWluZ3MKKyAgICBtVmFyeWluZ3MuY2xlYXIoKTsKKworICAgIG1Vc2VzTXVsdGlwbGVSZW5kZXJU
YXJnZXRzID0gZmFsc2U7CisgICAgbVVzZXNGcmFnQ29sb3IgPSBmYWxzZTsKKyAgICBtVXNlc0Zy
YWdEYXRhID0gZmFsc2U7CisgICAgbVVzZXNGcmFnQ29vcmQgPSBmYWxzZTsKKyAgICBtVXNlc0Zy
b250RmFjaW5nID0gZmFsc2U7CisgICAgbVVzZXNQb2ludFNpemUgPSBmYWxzZTsKKyAgICBtVXNl
c1BvaW50Q29vcmQgPSBmYWxzZTsKKyAgICBtVXNlc0RlcHRoUmFuZ2UgPSBmYWxzZTsKKyAgICBt
VXNlc0ZyYWdEZXB0aCA9IGZhbHNlOworCisgICAgbUFjdGl2ZVVuaWZvcm1zLmNsZWFyKCk7Cit9
CisKK3ZvaWQgU2hhZGVyOjpjb21waWxlVG9ITFNMKHZvaWQgKmNvbXBpbGVyKQoreworICAgIC8v
IGVuc3VyZSB3ZSBkb24ndCBwYXNzIGEgTlVMTCBzb3VyY2UgdG8gdGhlIGNvbXBpbGVyCisgICAg
Y29uc3QgY2hhciAqc291cmNlID0gIlwwIjsKKyAgICBpZiAobVNvdXJjZSkKKyAgICB7CisgICAg
ICAgIHNvdXJjZSA9IG1Tb3VyY2U7CisgICAgfQorCisgICAgLy8gZW5zdXJlIHRoZSBjb21waWxl
ciBpcyBsb2FkZWQKKyAgICBpbml0aWFsaXplQ29tcGlsZXIoKTsKKworICAgIGludCBjb21waWxl
T3B0aW9ucyA9IFNIX09CSkVDVF9DT0RFOworICAgIHN0ZDo6c3RyaW5nIHNvdXJjZVBhdGg7Cisg
ICAgaWYgKHBlcmZBY3RpdmUoKSkKKyAgICB7CisgICAgICAgIHNvdXJjZVBhdGggPSBnZXRUZW1w
UGF0aCgpOworICAgICAgICB3cml0ZUZpbGUoc291cmNlUGF0aC5jX3N0cigpLCBzb3VyY2UsIHN0
cmxlbihzb3VyY2UpKTsKKyAgICAgICAgY29tcGlsZU9wdGlvbnMgfD0gU0hfTElORV9ESVJFQ1RJ
VkVTOworICAgIH0KKworICAgIGludCByZXN1bHQ7CisgICAgaWYgKHNvdXJjZVBhdGguZW1wdHko
KSkKKyAgICB7CisgICAgICAgIHJlc3VsdCA9IFNoQ29tcGlsZShjb21waWxlciwgJnNvdXJjZSwg
MSwgY29tcGlsZU9wdGlvbnMpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjb25z
dCBjaGFyKiBzb3VyY2VTdHJpbmdzWzJdID0KKyAgICAgICAgeworICAgICAgICAgICAgc291cmNl
UGF0aC5jX3N0cigpLAorICAgICAgICAgICAgc291cmNlCisgICAgICAgIH07CisKKyAgICAgICAg
cmVzdWx0ID0gU2hDb21waWxlKGNvbXBpbGVyLCBzb3VyY2VTdHJpbmdzLCAyLCBjb21waWxlT3B0
aW9ucyB8IFNIX1NPVVJDRV9QQVRIKTsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0KQorICAgIHsK
KyAgICAgICAgc2l6ZV90IG9iakNvZGVMZW4gPSAwOworICAgICAgICBTaEdldEluZm8oY29tcGls
ZXIsIFNIX09CSkVDVF9DT0RFX0xFTkdUSCwgJm9iakNvZGVMZW4pOworICAgICAgICBtSGxzbCA9
IG5ldyBjaGFyW29iakNvZGVMZW5dOworICAgICAgICBTaEdldE9iamVjdENvZGUoY29tcGlsZXIs
IG1IbHNsKTsKKworICAgICAgICB2b2lkICphY3RpdmVVbmlmb3JtczsKKyAgICAgICAgU2hHZXRJ
bmZvUG9pbnRlcihjb21waWxlciwgU0hfQUNUSVZFX1VOSUZPUk1TX0FSUkFZLCAmYWN0aXZlVW5p
Zm9ybXMpOworICAgICAgICBtQWN0aXZlVW5pZm9ybXMgPSAqKHNoOjpBY3RpdmVVbmlmb3Jtcyop
YWN0aXZlVW5pZm9ybXM7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHNpemVfdCBp
bmZvTG9nTGVuID0gMDsKKyAgICAgICAgU2hHZXRJbmZvKGNvbXBpbGVyLCBTSF9JTkZPX0xPR19M
RU5HVEgsICZpbmZvTG9nTGVuKTsKKyAgICAgICAgbUluZm9Mb2cgPSBuZXcgY2hhcltpbmZvTG9n
TGVuXTsKKyAgICAgICAgU2hHZXRJbmZvTG9nKGNvbXBpbGVyLCBtSW5mb0xvZyk7CisKKyAgICAg
ICAgVFJBQ0UoIlxuJXMiLCBtSW5mb0xvZyk7CisgICAgfQorfQorCitHTGVudW0gU2hhZGVyOjpw
YXJzZVR5cGUoY29uc3Qgc3RkOjpzdHJpbmcgJnR5cGUpCit7CisgICAgaWYgKHR5cGUgPT0gImZs
b2F0IikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GTE9BVDsKKyAgICB9CisgICAgZWxzZSBp
ZiAodHlwZSA9PSAiZmxvYXQyIikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GTE9BVF9WRUMy
OworICAgIH0KKyAgICBlbHNlIGlmICh0eXBlID09ICJmbG9hdDMiKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEdMX0ZMT0FUX1ZFQzM7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUgPT0gImZsb2F0
NCIpCisgICAgeworICAgICAgICByZXR1cm4gR0xfRkxPQVRfVkVDNDsKKyAgICB9CisgICAgZWxz
ZSBpZiAodHlwZSA9PSAiZmxvYXQyeDIiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX0ZMT0FU
X01BVDI7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUgPT0gImZsb2F0M3gzIikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBHTF9GTE9BVF9NQVQzOworICAgIH0KKyAgICBlbHNlIGlmICh0eXBlID09
ICJmbG9hdDR4NCIpCisgICAgeworICAgICAgICByZXR1cm4gR0xfRkxPQVRfTUFUNDsKKyAgICB9
CisgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworCisgICAgcmV0dXJuIEdMX05PTkU7Cit9CisKKy8v
IHRydWUgaWYgdmFyeWluZyB4IGhhcyBhIGhpZ2hlciBwcmlvcml0eSBpbiBwYWNraW5nIHRoYW4g
eQorYm9vbCBTaGFkZXI6OmNvbXBhcmVWYXJ5aW5nKGNvbnN0IFZhcnlpbmcgJngsIGNvbnN0IFZh
cnlpbmcgJnkpCit7CisgICAgaWYoeC50eXBlID09IHkudHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB4LnNpemUgPiB5LnNpemU7CisgICAgfQorCisgICAgc3dpdGNoICh4LnR5cGUpCisgICAg
eworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OiByZXR1cm4gdHJ1ZTsKKyAgICAgIGNhc2UgR0xf
RkxPQVRfTUFUMjoKKyAgICAgICAgc3dpdGNoKHkudHlwZSkKKyAgICAgICAgeworICAgICAgICAg
IGNhc2UgR0xfRkxPQVRfTUFUNDogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxP
QVRfTUFUMjogcmV0dXJuIHRydWU7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0OiByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6IHJldHVybiB0cnVlOworICAg
ICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMzogcmV0dXJuIHRydWU7CisgICAgICAgICAgY2FzZSBH
TF9GTE9BVF9WRUMyOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUOiAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6CisgICAgICAgIHN3
aXRjaCh5LnR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6IHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6IHJldHVybiBmYWxzZTsK
KyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6IHJldHVybiB0cnVlOworICAgICAgICAgIGNh
c2UgR0xfRkxPQVRfTUFUMzogcmV0dXJuIHRydWU7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9W
RUMzOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6IHJldHVybiB0
cnVlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfRkxPQVRfTUFUMzoKKyAgICAgICAgc3dpdGNoKHkudHlwZSkKKyAgICAgICAg
eworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNDogcmV0dXJuIGZhbHNlOworICAgICAgICAg
IGNhc2UgR0xfRkxPQVRfTUFUMjogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxP
QVRfVkVDNDogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzogcmV0
dXJuIHRydWU7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMzOiByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6IHJldHVybiB0cnVlOworICAgICAgICAgIGNhc2Ug
R0xfRkxPQVQ6ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVD
MzoKKyAgICAgICAgc3dpdGNoKHkudHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xf
RkxPQVRfTUFUNDogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjog
cmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDogcmV0dXJuIGZhbHNl
OworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzogcmV0dXJuIGZhbHNlOworICAgICAgICAg
IGNhc2UgR0xfRkxPQVRfVkVDMzogcmV0dXJuIHRydWU7CisgICAgICAgICAgY2FzZSBHTF9GTE9B
VF9WRUMyOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUOiAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6CisgICAgICAgIHN3aXRjaCh5
LnR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6IHJldHVybiBm
YWxzZTsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6IHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6IHJldHVybiBmYWxzZTsKKyAgICAgICAgICBjYXNlIEdM
X0ZMT0FUX01BVDM6IHJldHVybiBmYWxzZTsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6IHJldHVybiB0cnVl
OworICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgR0xfRkxPQVQ6IHJldHVybiBmYWxzZTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxF
KCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitWZXJ0ZXhTaGFkZXI6OlZlcnRl
eFNoYWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsIGNvbnN0IHJ4OjpSZW5kZXJlciAqcmVu
ZGVyZXIsIEdMdWludCBoYW5kbGUpCisgICAgOiBTaGFkZXIobWFuYWdlciwgcmVuZGVyZXIsIGhh
bmRsZSkKK3sKK30KKworVmVydGV4U2hhZGVyOjp+VmVydGV4U2hhZGVyKCkKK3sKK30KKworR0xl
bnVtIFZlcnRleFNoYWRlcjo6Z2V0VHlwZSgpCit7CisgICAgcmV0dXJuIEdMX1ZFUlRFWF9TSEFE
RVI7Cit9CisKK3ZvaWQgVmVydGV4U2hhZGVyOjp1bmNvbXBpbGUoKQoreworICAgIFNoYWRlcjo6
dW5jb21waWxlKCk7CisKKyAgICAvLyBzZXQgYnkgUGFyc2VBdHRyaWJ1dGVzCisgICAgbUF0dHJp
YnV0ZXMuY2xlYXIoKTsKK30KKwordm9pZCBWZXJ0ZXhTaGFkZXI6OmNvbXBpbGUoKQoreworICAg
IHVuY29tcGlsZSgpOworCisgICAgY29tcGlsZVRvSExTTChtVmVydGV4Q29tcGlsZXIpOworICAg
IHBhcnNlQXR0cmlidXRlcygpOworICAgIHBhcnNlVmFyeWluZ3MoKTsKK30KKworaW50IFZlcnRl
eFNoYWRlcjo6Z2V0U2VtYW50aWNJbmRleChjb25zdCBzdGQ6OnN0cmluZyAmYXR0cmlidXRlTmFt
ZSkKK3sKKyAgICBpZiAoIWF0dHJpYnV0ZU5hbWUuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGlu
dCBzZW1hbnRpY0luZGV4ID0gMDsKKyAgICAgICAgZm9yIChBdHRyaWJ1dGVBcnJheTo6aXRlcmF0
b3IgYXR0cmlidXRlID0gbUF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0cmlidXRlICE9IG1BdHRyaWJ1
dGVzLmVuZCgpOyBhdHRyaWJ1dGUrKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGF0dHJp
YnV0ZS0+bmFtZSA9PSBhdHRyaWJ1dGVOYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBzZW1hbnRpY0luZGV4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBz
ZW1hbnRpY0luZGV4ICs9IFZhcmlhYmxlUm93Q291bnQoYXR0cmlidXRlLT50eXBlKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKwordm9pZCBWZXJ0ZXhTaGFkZXI6OnBh
cnNlQXR0cmlidXRlcygpCit7CisgICAgY29uc3QgY2hhciAqaGxzbCA9IGdldEhMU0woKTsKKyAg
ICBpZiAoaGxzbCkKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIgKmlucHV0ID0gc3Ryc3RyKGhs
c2wsICIvLyBBdHRyaWJ1dGVzIikgKyAxNDsKKworICAgICAgICB3aGlsZSh0cnVlKQorICAgICAg
ICB7CisgICAgICAgICAgICBjaGFyIGF0dHJpYnV0ZVR5cGVbMjU2XTsKKyAgICAgICAgICAgIGNo
YXIgYXR0cmlidXRlTmFtZVsyNTZdOworCisgICAgICAgICAgICBpbnQgbWF0Y2hlcyA9IHNzY2Fu
ZihpbnB1dCwgInN0YXRpYyAlMjU1cyBfJTI1NXMiLCBhdHRyaWJ1dGVUeXBlLCBhdHRyaWJ1dGVO
YW1lKTsKKworICAgICAgICAgICAgaWYgKG1hdGNoZXMgIT0gMikKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbUF0dHJp
YnV0ZXMucHVzaF9iYWNrKEF0dHJpYnV0ZShwYXJzZVR5cGUoYXR0cmlidXRlVHlwZSksIGF0dHJp
YnV0ZU5hbWUpKTsKKworICAgICAgICAgICAgaW5wdXQgPSBzdHJzdHIoaW5wdXQsICI7IikgKyAy
OworICAgICAgICB9CisgICAgfQorfQorCitGcmFnbWVudFNoYWRlcjo6RnJhZ21lbnRTaGFkZXIo
UmVzb3VyY2VNYW5hZ2VyICptYW5hZ2VyLCBjb25zdCByeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBH
THVpbnQgaGFuZGxlKQorICAgIDogU2hhZGVyKG1hbmFnZXIsIHJlbmRlcmVyLCBoYW5kbGUpCit7
Cit9CisKK0ZyYWdtZW50U2hhZGVyOjp+RnJhZ21lbnRTaGFkZXIoKQoreworfQorCitHTGVudW0g
RnJhZ21lbnRTaGFkZXI6OmdldFR5cGUoKQoreworICAgIHJldHVybiBHTF9GUkFHTUVOVF9TSEFE
RVI7Cit9CisKK3ZvaWQgRnJhZ21lbnRTaGFkZXI6OmNvbXBpbGUoKQoreworICAgIHVuY29tcGls
ZSgpOworCisgICAgY29tcGlsZVRvSExTTChtRnJhZ21lbnRDb21waWxlcik7CisgICAgcGFyc2VW
YXJ5aW5ncygpOworICAgIG1WYXJ5aW5ncy5zb3J0KGNvbXBhcmVWYXJ5aW5nKTsKK30KK30KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvU2hhZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9TaGFkZXIuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvU2hh
ZGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTg0IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBTaGFkZXIuaDogRGVmaW5lcyB0aGUgYWJzdHJhY3QgZ2w6OlNoYWRlciBjbGFzcyBhbmQg
aXRzIGNvbmNyZXRlIGRlcml2ZWQKKy8vIGNsYXNzZXMgVmVydGV4U2hhZGVyIGFuZCBGcmFnbWVu
dFNoYWRlci4gSW1wbGVtZW50cyBHTCBzaGFkZXIgb2JqZWN0cyBhbmQKKy8vIHJlbGF0ZWQgZnVu
Y3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMi4xMCBwYWdlIDI0IGFuZCBz
ZWN0aW9uCisvLyAzLjggcGFnZSA4NC4KKworI2lmbmRlZiBMSUJHTEVTVjJfU0hBREVSX0hfCisj
ZGVmaW5lIExJQkdMRVNWMl9TSEFERVJfSF8KKworI2RlZmluZSBHTF9BUElDQUxMCisjaW5jbHVk
ZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPGxpc3Q+CisjaW5j
bHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiY29tcGlsZXIvVW5pZm9ybS5oIgorI2luY2x1ZGUg
ImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7
Cit9CisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgUmVzb3VyY2VNYW5hZ2VyOworCitzdHJ1Y3Qg
VmFyeWluZworeworICAgIFZhcnlpbmcoR0xlbnVtIHR5cGUsIGNvbnN0IHN0ZDo6c3RyaW5nICZu
YW1lLCBpbnQgc2l6ZSwgYm9vbCBhcnJheSkKKyAgICAgICAgOiB0eXBlKHR5cGUpLCBuYW1lKG5h
bWUpLCBzaXplKHNpemUpLCBhcnJheShhcnJheSksIHJlZygtMSksIGNvbCgtMSkKKyAgICB7Cisg
ICAgfQorCisgICAgR0xlbnVtIHR5cGU7CisgICAgc3RkOjpzdHJpbmcgbmFtZTsKKyAgICBpbnQg
c2l6ZTsgICAvLyBOdW1iZXIgb2YgJ3R5cGUnIGVsZW1lbnRzCisgICAgYm9vbCBhcnJheTsKKwor
ICAgIGludCByZWc7ICAgIC8vIEZpcnN0IHZhcnlpbmcgcmVnaXN0ZXIsIGFzc2lnbmVkIGR1cmlu
ZyBsaW5rCisgICAgaW50IGNvbDsgICAgLy8gRmlyc3QgcmVnaXN0ZXIgZWxlbWVudCwgYXNzaWdu
ZWQgZHVyaW5nIGxpbmsKK307CisKK3R5cGVkZWYgc3RkOjpsaXN0PFZhcnlpbmc+IFZhcnlpbmdM
aXN0OworCitjbGFzcyBTaGFkZXIKK3sKKyAgICBmcmllbmQgY2xhc3MgUHJvZ3JhbUJpbmFyeTsK
KworICBwdWJsaWM6CisgICAgU2hhZGVyKFJlc291cmNlTWFuYWdlciAqbWFuYWdlciwgY29uc3Qg
cng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGhhbmRsZSk7CisKKyAgICB2aXJ0dWFsIH5T
aGFkZXIoKTsKKworICAgIHZpcnR1YWwgR0xlbnVtIGdldFR5cGUoKSA9IDA7CisgICAgR0x1aW50
IGdldEhhbmRsZSgpIGNvbnN0OworCisgICAgdm9pZCBkZWxldGVTb3VyY2UoKTsKKyAgICB2b2lk
IHNldFNvdXJjZShHTHNpemVpIGNvdW50LCBjb25zdCBjaGFyICoqc3RyaW5nLCBjb25zdCBHTGlu
dCAqbGVuZ3RoKTsKKyAgICBpbnQgZ2V0SW5mb0xvZ0xlbmd0aCgpIGNvbnN0OworICAgIHZvaWQg
Z2V0SW5mb0xvZyhHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xv
Zyk7CisgICAgaW50IGdldFNvdXJjZUxlbmd0aCgpIGNvbnN0OworICAgIHZvaWQgZ2V0U291cmNl
KEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpOworICAgIGlu
dCBnZXRUcmFuc2xhdGVkU291cmNlTGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCBnZXRUcmFuc2xh
dGVkU291cmNlKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIp
OworICAgIGNvbnN0IHNoOjpBY3RpdmVVbmlmb3JtcyAmZ2V0VW5pZm9ybXMoKTsKKworICAgIHZp
cnR1YWwgdm9pZCBjb21waWxlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmNvbXBpbGUoKTsK
KyAgICBib29sIGlzQ29tcGlsZWQoKTsKKyAgICBjb25zdCBjaGFyICpnZXRITFNMKCk7CisKKyAg
ICB2b2lkIGFkZFJlZigpOworICAgIHZvaWQgcmVsZWFzZSgpOworICAgIHVuc2lnbmVkIGludCBn
ZXRSZWZDb3VudCgpIGNvbnN0OworICAgIGJvb2wgaXNGbGFnZ2VkRm9yRGVsZXRpb24oKSBjb25z
dDsKKyAgICB2b2lkIGZsYWdGb3JEZWxldGlvbigpOworCisgICAgc3RhdGljIHZvaWQgcmVsZWFz
ZUNvbXBpbGVyKCk7CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgcGFyc2VWYXJ5aW5ncygpOwor
ICAgIHZvaWQgcmVzZXRWYXJ5aW5nc1JlZ2lzdGVyQXNzaWdubWVudCgpOworCisgICAgdm9pZCBj
b21waWxlVG9ITFNMKHZvaWQgKmNvbXBpbGVyKTsKKworICAgIHZvaWQgZ2V0U291cmNlSW1wbChj
aGFyICpzb3VyY2UsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZm
ZXIpOworCisgICAgc3RhdGljIEdMZW51bSBwYXJzZVR5cGUoY29uc3Qgc3RkOjpzdHJpbmcgJnR5
cGUpOworICAgIHN0YXRpYyBib29sIGNvbXBhcmVWYXJ5aW5nKGNvbnN0IFZhcnlpbmcgJngsIGNv
bnN0IFZhcnlpbmcgJnkpOworCisgICAgY29uc3Qgcng6OlJlbmRlcmVyICpjb25zdCBtUmVuZGVy
ZXI7CisKKyAgICBWYXJ5aW5nTGlzdCBtVmFyeWluZ3M7CisKKyAgICBib29sIG1Vc2VzTXVsdGlw
bGVSZW5kZXJUYXJnZXRzOworICAgIGJvb2wgbVVzZXNGcmFnQ29sb3I7CisgICAgYm9vbCBtVXNl
c0ZyYWdEYXRhOworICAgIGJvb2wgbVVzZXNGcmFnQ29vcmQ7CisgICAgYm9vbCBtVXNlc0Zyb250
RmFjaW5nOworICAgIGJvb2wgbVVzZXNQb2ludFNpemU7CisgICAgYm9vbCBtVXNlc1BvaW50Q29v
cmQ7CisgICAgYm9vbCBtVXNlc0RlcHRoUmFuZ2U7CisgICAgYm9vbCBtVXNlc0ZyYWdEZXB0aDsK
KworICAgIHN0YXRpYyB2b2lkICptRnJhZ21lbnRDb21waWxlcjsKKyAgICBzdGF0aWMgdm9pZCAq
bVZlcnRleENvbXBpbGVyOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOKFNoYWRlcik7CisKKyAgICB2b2lkIGluaXRpYWxpemVDb21waWxlcigpOworCisgICAgY29u
c3QgR0x1aW50IG1IYW5kbGU7CisgICAgdW5zaWduZWQgaW50IG1SZWZDb3VudDsgICAgIC8vIE51
bWJlciBvZiBwcm9ncmFtIG9iamVjdHMgdGhpcyBzaGFkZXIgaXMgYXR0YWNoZWQgdG8KKyAgICBi
b29sIG1EZWxldGVTdGF0dXM7ICAgICAgICAgLy8gRmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBz
aGFkZXIgY2FuIGJlIGRlbGV0ZWQgd2hlbiBubyBsb25nZXIgaW4gdXNlCisKKyAgICBjaGFyICpt
U291cmNlOworICAgIGNoYXIgKm1IbHNsOworICAgIGNoYXIgKm1JbmZvTG9nOworICAgIHNoOjpB
Y3RpdmVVbmlmb3JtcyBtQWN0aXZlVW5pZm9ybXM7CisKKyAgICBSZXNvdXJjZU1hbmFnZXIgKm1S
ZXNvdXJjZU1hbmFnZXI7Cit9OworCitzdHJ1Y3QgQXR0cmlidXRlCit7CisgICAgQXR0cmlidXRl
KCkgOiB0eXBlKEdMX05PTkUpLCBuYW1lKCIiKQorICAgIHsKKyAgICB9CisKKyAgICBBdHRyaWJ1
dGUoR0xlbnVtIHR5cGUsIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSA6IHR5cGUodHlwZSksIG5h
bWUobmFtZSkKKyAgICB7CisgICAgfQorCisgICAgR0xlbnVtIHR5cGU7CisgICAgc3RkOjpzdHJp
bmcgbmFtZTsKK307CisKK3R5cGVkZWYgc3RkOjp2ZWN0b3I8QXR0cmlidXRlPiBBdHRyaWJ1dGVB
cnJheTsKKworY2xhc3MgVmVydGV4U2hhZGVyIDogcHVibGljIFNoYWRlcgoreworICAgIGZyaWVu
ZCBjbGFzcyBQcm9ncmFtQmluYXJ5OworCisgIHB1YmxpYzoKKyAgICBWZXJ0ZXhTaGFkZXIoUmVz
b3VyY2VNYW5hZ2VyICptYW5hZ2VyLCBjb25zdCByeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHVp
bnQgaGFuZGxlKTsKKworICAgIH5WZXJ0ZXhTaGFkZXIoKTsKKworICAgIHZpcnR1YWwgR0xlbnVt
IGdldFR5cGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZSgpOworICAgIHZpcnR1YWwgdm9p
ZCB1bmNvbXBpbGUoKTsKKyAgICBpbnQgZ2V0U2VtYW50aWNJbmRleChjb25zdCBzdGQ6OnN0cmlu
ZyAmYXR0cmlidXRlTmFtZSk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9B
U1NJR04oVmVydGV4U2hhZGVyKTsKKworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGVzKCk7CisKKyAg
ICBBdHRyaWJ1dGVBcnJheSBtQXR0cmlidXRlczsKK307CisKK2NsYXNzIEZyYWdtZW50U2hhZGVy
IDogcHVibGljIFNoYWRlcgoreworICBwdWJsaWM6CisgICAgRnJhZ21lbnRTaGFkZXIoUmVzb3Vy
Y2VNYW5hZ2VyICptYW5hZ2VyLGNvbnN0IHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIEdMdWludCBo
YW5kbGUpOworCisgICAgfkZyYWdtZW50U2hhZGVyKCk7CisKKyAgICB2aXJ0dWFsIEdMZW51bSBn
ZXRUeXBlKCk7CisgICAgdmlydHVhbCB2b2lkIGNvbXBpbGUoKTsKKworICBwcml2YXRlOgorICAg
IERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihGcmFnbWVudFNoYWRlcik7Cit9OworfQorCisjZW5k
aWYgICAvLyBMSUJHTEVTVjJfU0hBREVSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL1RleHR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1RleHR1cmUuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE0OTUgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gVGV4dHVyZS5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpUZXh0dXJlIGNs
YXNzIGFuZCBpdHMgZGVyaXZlZCBjbGFzc2VzCisvLyBUZXh0dXJlMkQgYW5kIFRleHR1cmVDdWJl
TWFwLiBJbXBsZW1lbnRzIEdMIHRleHR1cmUgb2JqZWN0cyBhbmQgcmVsYXRlZAorLy8gZnVuY3Rp
b25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMy43IHBhZ2UgNjMuCisKKyNpbmNs
dWRlICJsaWJHTEVTdjIvVGV4dHVyZS5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvbWF0aHV0aWwuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvdXRp
bGl0aWVzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L0ltYWdlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlLmgiCisjaW5jbHVkZSAibGli
RUdML1N1cmZhY2UuaCIKKworbmFtZXNwYWNlIGdsCit7CisKK1RleHR1cmU6OlRleHR1cmUocng6
OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGlkKSA6IFJlZkNvdW50T2JqZWN0KGlkKQorewor
ICAgIG1SZW5kZXJlciA9IHJlbmRlcmVyOworCisgICAgbVNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIg
PSBHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVI7CisgICAgbVNhbXBsZXJTdGF0ZS5tYWdGaWx0ZXIg
PSBHTF9MSU5FQVI7CisgICAgbVNhbXBsZXJTdGF0ZS53cmFwUyA9IEdMX1JFUEVBVDsKKyAgICBt
U2FtcGxlclN0YXRlLndyYXBUID0gR0xfUkVQRUFUOworICAgIG1TYW1wbGVyU3RhdGUubWF4QW5p
c290cm9weSA9IDEuMGY7CisgICAgbVNhbXBsZXJTdGF0ZS5sb2RPZmZzZXQgPSAwOworICAgIG1V
c2FnZSA9IEdMX05PTkU7CisgICAgCisgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKKworICAgIG1J
bW11dGFibGUgPSBmYWxzZTsKK30KKworVGV4dHVyZTo6flRleHR1cmUoKQoreworfQorCisvLyBS
ZXR1cm5zIHRydWUgb24gc3VjY2Vzc2Z1bCBmaWx0ZXIgc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVt
IHBhcmFtZXRlcikKK2Jvb2wgVGV4dHVyZTo6c2V0TWluRmlsdGVyKEdMZW51bSBmaWx0ZXIpCit7
CisgICAgc3dpdGNoIChmaWx0ZXIpCisgICAgeworICAgICAgY2FzZSBHTF9ORUFSRVNUOgorICAg
ICAgY2FzZSBHTF9MSU5FQVI6CisgICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1Q6
CisgICAgICBjYXNlIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVDoKKyAgICAgIGNhc2UgR0xfTkVB
UkVTVF9NSVBNQVBfTElORUFSOgorICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUjoK
KyAgICAgICAgbVNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIgPSBmaWx0ZXI7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
KworLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3NmdWwgZmlsdGVyIHN0YXRlIHVwZGF0ZSAodmFs
aWQgZW51bSBwYXJhbWV0ZXIpCitib29sIFRleHR1cmU6OnNldE1hZ0ZpbHRlcihHTGVudW0gZmls
dGVyKQoreworICAgIHN3aXRjaCAoZmlsdGVyKQorICAgIHsKKyAgICAgIGNhc2UgR0xfTkVBUkVT
VDoKKyAgICAgIGNhc2UgR0xfTElORUFSOgorICAgICAgICBtU2FtcGxlclN0YXRlLm1hZ0ZpbHRl
ciA9IGZpbHRlcjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCisvLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzc2Z1
bCB3cmFwIHN0YXRlIHVwZGF0ZSAodmFsaWQgZW51bSBwYXJhbWV0ZXIpCitib29sIFRleHR1cmU6
OnNldFdyYXBTKEdMZW51bSB3cmFwKQoreworICAgIHN3aXRjaCAod3JhcCkKKyAgICB7CisgICAg
ICBjYXNlIEdMX1JFUEVBVDoKKyAgICAgIGNhc2UgR0xfQ0xBTVBfVE9fRURHRToKKyAgICAgIGNh
c2UgR0xfTUlSUk9SRURfUkVQRUFUOgorICAgICAgICBtU2FtcGxlclN0YXRlLndyYXBTID0gd3Jh
cDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfQorCisvLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzc2Z1bCB3cmFwIHN0
YXRlIHVwZGF0ZSAodmFsaWQgZW51bSBwYXJhbWV0ZXIpCitib29sIFRleHR1cmU6OnNldFdyYXBU
KEdMZW51bSB3cmFwKQoreworICAgIHN3aXRjaCAod3JhcCkKKyAgICB7CisgICAgICBjYXNlIEdM
X1JFUEVBVDoKKyAgICAgIGNhc2UgR0xfQ0xBTVBfVE9fRURHRToKKyAgICAgIGNhc2UgR0xfTUlS
Uk9SRURfUkVQRUFUOgorICAgICAgICBtU2FtcGxlclN0YXRlLndyYXBUID0gd3JhcDsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCisvLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzc2Z1bCBtYXggYW5pc290cm9weSB1
cGRhdGUgKHZhbGlkIGFuaXNvdHJvcHkgdmFsdWUpCitib29sIFRleHR1cmU6OnNldE1heEFuaXNv
dHJvcHkoZmxvYXQgdGV4dHVyZU1heEFuaXNvdHJvcHksIGZsb2F0IGNvbnRleHRNYXhBbmlzb3Ry
b3B5KQoreworICAgIHRleHR1cmVNYXhBbmlzb3Ryb3B5ID0gc3RkOjptaW4odGV4dHVyZU1heEFu
aXNvdHJvcHksIGNvbnRleHRNYXhBbmlzb3Ryb3B5KTsKKyAgICBpZiAodGV4dHVyZU1heEFuaXNv
dHJvcHkgPCAxLjBmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IG1TYW1wbGVyU3RhdGUubWF4QW5pc290cm9weSA9IHRleHR1cmVNYXhBbmlzb3Ryb3B5OworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzZnVsIHVzYWdl
IHN0YXRlIHVwZGF0ZSAodmFsaWQgZW51bSBwYXJhbWV0ZXIpCitib29sIFRleHR1cmU6OnNldFVz
YWdlKEdMZW51bSB1c2FnZSkKK3sKKyAgICBzd2l0Y2ggKHVzYWdlKQorICAgIHsKKyAgICAgIGNh
c2UgR0xfTk9ORToKKyAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRToK
KyAgICAgICAgbVVzYWdlID0gdXNhZ2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworR0xlbnVtIFRleHR1cmU6
OmdldE1pbkZpbHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TYW1wbGVyU3RhdGUubWluRmls
dGVyOworfQorCitHTGVudW0gVGV4dHVyZTo6Z2V0TWFnRmlsdGVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbVNhbXBsZXJTdGF0ZS5tYWdGaWx0ZXI7Cit9CisKK0dMZW51bSBUZXh0dXJlOjpnZXRX
cmFwUygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TYW1wbGVyU3RhdGUud3JhcFM7Cit9CisKK0dM
ZW51bSBUZXh0dXJlOjpnZXRXcmFwVCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TYW1wbGVyU3Rh
dGUud3JhcFQ7Cit9CisKK2Zsb2F0IFRleHR1cmU6OmdldE1heEFuaXNvdHJvcHkoKSBjb25zdAor
eworICAgIHJldHVybiBtU2FtcGxlclN0YXRlLm1heEFuaXNvdHJvcHk7Cit9CisKK2ludCBUZXh0
dXJlOjpnZXRMb2RPZmZzZXQoKQoreworICAgIHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZSAq
dGV4dHVyZSA9IGdldFN0b3JhZ2UoZmFsc2UpOworICAgIHJldHVybiB0ZXh0dXJlID8gdGV4dHVy
ZS0+Z2V0TG9kT2Zmc2V0KCkgOiAwOworfQorCit2b2lkIFRleHR1cmU6OmdldFNhbXBsZXJTdGF0
ZShTYW1wbGVyU3RhdGUgKnNhbXBsZXIpCit7CisgICAgKnNhbXBsZXIgPSBtU2FtcGxlclN0YXRl
OworICAgIHNhbXBsZXItPmxvZE9mZnNldCA9IGdldExvZE9mZnNldCgpOworfQorCitHTGVudW0g
VGV4dHVyZTo6Z2V0VXNhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBtVXNhZ2U7Cit9CisKK2Jv
b2wgVGV4dHVyZTo6aXNNaXBtYXBGaWx0ZXJlZCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtU2Ft
cGxlclN0YXRlLm1pbkZpbHRlcikKKyAgICB7CisgICAgICBjYXNlIEdMX05FQVJFU1Q6CisgICAg
ICBjYXNlIEdMX0xJTkVBUjoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgY2FzZSBHTF9O
RUFSRVNUX01JUE1BUF9ORUFSRVNUOgorICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX05FQVJF
U1Q6CisgICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUjoKKyAgICAgIGNhc2UgR0xf
TElORUFSX01JUE1BUF9MSU5FQVI6CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgZGVmYXVs
dDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordm9p
ZCBUZXh0dXJlOjpzZXRJbWFnZShHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBp
eGVscywgcng6OkltYWdlICppbWFnZSkKK3sKKyAgICBpZiAocGl4ZWxzICE9IE5VTEwpCisgICAg
eworICAgICAgICBpbWFnZS0+bG9hZERhdGEoMCwgMCwgaW1hZ2UtPmdldFdpZHRoKCksIGltYWdl
LT5nZXRIZWlnaHQoKSwgdW5wYWNrQWxpZ25tZW50LCBwaXhlbHMpOworICAgICAgICBtRGlydHlJ
bWFnZXMgPSB0cnVlOworICAgIH0KK30KKwordm9pZCBUZXh0dXJlOjpzZXRDb21wcmVzc2VkSW1h
Z2UoR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscywgcng6OkltYWdlICppbWFn
ZSkKK3sKKyAgICBpZiAocGl4ZWxzICE9IE5VTEwpCisgICAgeworICAgICAgICBpbWFnZS0+bG9h
ZENvbXByZXNzZWREYXRhKDAsIDAsIGltYWdlLT5nZXRXaWR0aCgpLCBpbWFnZS0+Z2V0SGVpZ2h0
KCksIHBpeGVscyk7CisgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CisgICAgfQorfQorCiti
b29sIFRleHR1cmU6OnN1YkltYWdlKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xp
bnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMsIHJ4OjpJbWFnZSAqaW1hZ2Up
Cit7CisgICAgaWYgKHBpeGVscyAhPSBOVUxMKQorICAgIHsKKyAgICAgICAgaW1hZ2UtPmxvYWRE
YXRhKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIHVucGFja0FsaWdubWVudCwgcGl4
ZWxzKTsKKyAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBUZXh0dXJlOjpzdWJJbWFnZUNvbXByZXNzZWQoR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBm
b3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMsIHJ4OjpJbWFnZSAq
aW1hZ2UpCit7CisgICAgaWYgKHBpeGVscyAhPSBOVUxMKQorICAgIHsKKyAgICAgICAgaW1hZ2Ut
PmxvYWRDb21wcmVzc2VkRGF0YSh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBwaXhl
bHMpOworICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworICAgIH0KKworICAgIHJldHVybiB0
cnVlOworfQorCityeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UgKlRleHR1cmU6OmdldE5hdGl2
ZVRleHR1cmUoKQoreworICAgIC8vIGVuc3VyZSB0aGUgdW5kZXJseWluZyB0ZXh0dXJlIGlzIGNy
ZWF0ZWQKKworICAgIHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZSAqc3RvcmFnZSA9IGdldFN0
b3JhZ2UoZmFsc2UpOworICAgIGlmIChzdG9yYWdlKQorICAgIHsKKyAgICAgICAgdXBkYXRlVGV4
dHVyZSgpOworICAgIH0KKworICAgIHJldHVybiBzdG9yYWdlOworfQorCitib29sIFRleHR1cmU6
Omhhc0RpcnR5SW1hZ2VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbURpcnR5SW1hZ2VzOworfQor
Cit2b2lkIFRleHR1cmU6OnJlc2V0RGlydHkoKQoreworICAgIG1EaXJ0eUltYWdlcyA9IGZhbHNl
OworfQorCit1bnNpZ25lZCBpbnQgVGV4dHVyZTo6Z2V0VGV4dHVyZVNlcmlhbCgpCit7CisgICAg
cng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlICp0ZXh0dXJlID0gZ2V0U3RvcmFnZShmYWxzZSk7
CisgICAgcmV0dXJuIHRleHR1cmUgPyB0ZXh0dXJlLT5nZXRUZXh0dXJlU2VyaWFsKCkgOiAwOwor
fQorCit1bnNpZ25lZCBpbnQgVGV4dHVyZTo6Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51bSB0
YXJnZXQpCit7CisgICAgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlICp0ZXh0dXJlID0gZ2V0
U3RvcmFnZSh0cnVlKTsKKyAgICByZXR1cm4gdGV4dHVyZSA/IHRleHR1cmUtPmdldFJlbmRlclRh
cmdldFNlcmlhbCh0YXJnZXQpIDogMDsKK30KKworYm9vbCBUZXh0dXJlOjppc0ltbXV0YWJsZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbW11dGFibGU7Cit9CisKK0dMaW50IFRleHR1cmU6OmNy
ZWF0aW9uTGV2ZWxzKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSBjb25zdAoreworICAg
IGlmICgoaXNQb3cyKHdpZHRoKSAmJiBpc1BvdzIoaGVpZ2h0KSkgfHwgbVJlbmRlcmVyLT5nZXRO
b25Qb3dlcjJUZXh0dXJlU3VwcG9ydCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7ICAgLy8g
TWF4aW11bSBudW1iZXIgb2YgbGV2ZWxzCisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IC8vIE9wZW5HTCBFUyAyLjAgd2l0aG91dCBHTF9PRVNfdGV4dHVyZV9ucG90IGRvZXMgbm90IHBl
cm1pdCBOUE9UIG1pcG1hcHMuCisgICAgICAgIHJldHVybiAxOworICAgIH0KK30KKworR0xpbnQg
VGV4dHVyZTo6Y3JlYXRpb25MZXZlbHMoR0xzaXplaSBzaXplKSBjb25zdAoreworICAgIHJldHVy
biBjcmVhdGlvbkxldmVscyhzaXplLCBzaXplKTsKK30KKworVGV4dHVyZTJEOjpUZXh0dXJlMkQo
cng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGlkKSA6IFRleHR1cmUocmVuZGVyZXIsIGlk
KQoreworICAgIG1UZXhTdG9yYWdlID0gTlVMTDsKKyAgICBtU3VyZmFjZSA9IE5VTEw7CisgICAg
bUNvbG9yYnVmZmVyUHJveHkgPSBOVUxMOworICAgIG1Qcm94eVJlZnMgPSAwOworCisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7ICsraSkK
KyAgICB7CisgICAgICAgIG1JbWFnZUFycmF5W2ldID0gcmVuZGVyZXItPmNyZWF0ZUltYWdlKCk7
CisgICAgfQorfQorCitUZXh0dXJlMkQ6On5UZXh0dXJlMkQoKQoreworICAgIG1Db2xvcmJ1ZmZl
clByb3h5ID0gTlVMTDsKKworICAgIGRlbGV0ZSBtVGV4U3RvcmFnZTsKKyAgICBtVGV4U3RvcmFn
ZSA9IE5VTEw7CisgICAgCisgICAgaWYgKG1TdXJmYWNlKQorICAgIHsKKyAgICAgICAgbVN1cmZh
Y2UtPnNldEJvdW5kVGV4dHVyZShOVUxMKTsKKyAgICAgICAgbVN1cmZhY2UgPSBOVUxMOworICAg
IH0KKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVf
TEVWRUxTOyArK2kpCisgICAgeworICAgICAgICBkZWxldGUgbUltYWdlQXJyYXlbaV07CisgICAg
fQorfQorCisvLyBXZSBuZWVkIHRvIG1haW50YWluIGEgY291bnQgb2YgcmVmZXJlbmNlcyB0byBy
ZW5kZXJidWZmZXJzIGFjdGluZyBhcyAKKy8vIHByb3hpZXMgZm9yIHRoaXMgdGV4dHVyZSwgc28g
dGhhdCB3ZSBkbyBub3QgYXR0ZW1wdCB0byB1c2UgYSBwb2ludGVyIAorLy8gdG8gYSByZW5kZXJi
dWZmZXIgcHJveHkgd2hpY2ggaGFzIGJlZW4gZGVsZXRlZC4KK3ZvaWQgVGV4dHVyZTJEOjphZGRQ
cm94eVJlZihjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KQoreworICAgIG1Qcm94eVJlZnMrKzsK
K30KKwordm9pZCBUZXh0dXJlMkQ6OnJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZmZXIgKnBy
b3h5KQoreworICAgIGlmIChtUHJveHlSZWZzID4gMCkKKyAgICAgICAgbVByb3h5UmVmcy0tOwor
CisgICAgaWYgKG1Qcm94eVJlZnMgPT0gMCkKKyAgICAgICAgbUNvbG9yYnVmZmVyUHJveHkgPSBO
VUxMOworfQorCitHTGVudW0gVGV4dHVyZTJEOjpnZXRUYXJnZXQoKSBjb25zdAoreworICAgIHJl
dHVybiBHTF9URVhUVVJFXzJEOworfQorCitHTHNpemVpIFRleHR1cmUyRDo6Z2V0V2lkdGgoR0xp
bnQgbGV2ZWwpIGNvbnN0Cit7CisgICAgaWYgKGxldmVsIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RF
WFRVUkVfTEVWRUxTKQorICAgICAgICByZXR1cm4gbUltYWdlQXJyYXlbbGV2ZWxdLT5nZXRXaWR0
aCgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK0dMc2l6ZWkgVGV4dHVyZTJE
OjpnZXRIZWlnaHQoR0xpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAgaWYgKGxldmVsIDwgSU1QTEVN
RU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQorICAgICAgICByZXR1cm4gbUltYWdlQXJyYXlb
bGV2ZWxdLT5nZXRIZWlnaHQoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAwOworfQorCitH
TGVudW0gVGV4dHVyZTJEOjpnZXRJbnRlcm5hbEZvcm1hdChHTGludCBsZXZlbCkgY29uc3QKK3sK
KyAgICBpZiAobGV2ZWwgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCisgICAg
ICAgIHJldHVybiBtSW1hZ2VBcnJheVtsZXZlbF0tPmdldEludGVybmFsRm9ybWF0KCk7CisgICAg
ZWxzZQorICAgICAgICByZXR1cm4gR0xfTk9ORTsKK30KKworR0xlbnVtIFRleHR1cmUyRDo6Z2V0
QWN0dWFsRm9ybWF0KEdMaW50IGxldmVsKSBjb25zdAoreworICAgIGlmIChsZXZlbCA8IElNUExF
TUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykKKyAgICAgICAgcmV0dXJuIG1JbWFnZUFycmF5
W2xldmVsXS0+Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRDNE
Rk1UX1VOS05PV047Cit9CisKK3ZvaWQgVGV4dHVyZTJEOjpyZWRlZmluZUltYWdlKEdMaW50IGxl
dmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
Cit7CisgICAgcmVsZWFzZVRleEltYWdlKCk7CisKKyAgICAvLyBJZiB0aGVyZSBjdXJyZW50bHkg
aXMgYSBjb3JyZXNwb25kaW5nIHN0b3JhZ2UgdGV4dHVyZSBpbWFnZSwgaXQgaGFzIHRoZXNlIHBh
cmFtZXRlcnMKKyAgICBjb25zdCBpbnQgc3RvcmFnZVdpZHRoID0gc3RkOjptYXgoMSwgbUltYWdl
QXJyYXlbMF0tPmdldFdpZHRoKCkgPj4gbGV2ZWwpOworICAgIGNvbnN0IGludCBzdG9yYWdlSGVp
Z2h0ID0gc3RkOjptYXgoMSwgbUltYWdlQXJyYXlbMF0tPmdldEhlaWdodCgpID4+IGxldmVsKTsK
KyAgICBjb25zdCBpbnQgc3RvcmFnZUZvcm1hdCA9IG1JbWFnZUFycmF5WzBdLT5nZXRJbnRlcm5h
bEZvcm1hdCgpOworCisgICAgbUltYWdlQXJyYXlbbGV2ZWxdLT5yZWRlZmluZShtUmVuZGVyZXIs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBmYWxzZSk7CisKKyAgICBpZiAobVRleFN0
b3JhZ2UpCisgICAgeworICAgICAgICBjb25zdCBpbnQgc3RvcmFnZUxldmVscyA9IG1UZXhTdG9y
YWdlLT5sZXZlbENvdW50KCk7CisgICAgICAgIAorICAgICAgICBpZiAoKGxldmVsID49IHN0b3Jh
Z2VMZXZlbHMgJiYgc3RvcmFnZUxldmVscyAhPSAwKSB8fAorICAgICAgICAgICAgd2lkdGggIT0g
c3RvcmFnZVdpZHRoIHx8CisgICAgICAgICAgICBoZWlnaHQgIT0gc3RvcmFnZUhlaWdodCB8fAor
ICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQgIT0gc3RvcmFnZUZvcm1hdCkgICAvLyBEaXNjYXJk
IG1pc21hdGNoZWQgc3RvcmFnZQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ldLT5tYXJrRGlydHkoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZGVsZXRlIG1UZXhTdG9yYWdlOworICAgICAgICAgICAg
bVRleFN0b3JhZ2UgPSBOVUxMOworICAgICAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBUZXh0dXJlMkQ6OnNldEltYWdlKEdMaW50IGxldmVs
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIEdM
aW50IGludGVybmFsZm9ybWF0ID0gQ29udmVydFNpemVkSW50ZXJuYWxGb3JtYXQoZm9ybWF0LCB0
eXBlKTsKKyAgICByZWRlZmluZUltYWdlKGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCk7CisKKyAgICBUZXh0dXJlOjpzZXRJbWFnZSh1bnBhY2tBbGlnbm1lbnQsIHBpeGVscywg
bUltYWdlQXJyYXlbbGV2ZWxdKTsKK30KKwordm9pZCBUZXh0dXJlMkQ6OmJpbmRUZXhJbWFnZShl
Z2w6OlN1cmZhY2UgKnN1cmZhY2UpCit7CisgICAgcmVsZWFzZVRleEltYWdlKCk7CisKKyAgICBH
TGludCBpbnRlcm5hbGZvcm1hdCA9IHN1cmZhY2UtPmdldEZvcm1hdCgpOworCisgICAgbUltYWdl
QXJyYXlbMF0tPnJlZGVmaW5lKG1SZW5kZXJlciwgaW50ZXJuYWxmb3JtYXQsIHN1cmZhY2UtPmdl
dFdpZHRoKCksIHN1cmZhY2UtPmdldEhlaWdodCgpLCB0cnVlKTsKKworICAgIGRlbGV0ZSBtVGV4
U3RvcmFnZTsKKyAgICBtVGV4U3RvcmFnZSA9IG5ldyByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZh
Y2UyRChtUmVuZGVyZXIsIHN1cmZhY2UtPmdldFN3YXBDaGFpbigpKTsKKworICAgIG1EaXJ0eUlt
YWdlcyA9IHRydWU7CisgICAgbVN1cmZhY2UgPSBzdXJmYWNlOworICAgIG1TdXJmYWNlLT5zZXRC
b3VuZFRleHR1cmUodGhpcyk7Cit9CisKK3ZvaWQgVGV4dHVyZTJEOjpyZWxlYXNlVGV4SW1hZ2Uo
KQoreworICAgIGlmIChtU3VyZmFjZSkKKyAgICB7CisgICAgICAgIG1TdXJmYWNlLT5zZXRCb3Vu
ZFRleHR1cmUoTlVMTCk7CisgICAgICAgIG1TdXJmYWNlID0gTlVMTDsKKworICAgICAgICBpZiAo
bVRleFN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSBtVGV4U3RvcmFnZTsK
KyAgICAgICAgICAgIG1UZXhTdG9yYWdlID0gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBpKysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1JbWFnZUFycmF5W2ldLT5yZWRlZmluZShtUmVuZGVy
ZXIsIEdMX05PTkUsIDAsIDAsIHRydWUpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRl
eHR1cmUyRDo6c2V0Q29tcHJlc3NlZEltYWdlKEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZv
aWQgKnBpeGVscykKK3sKKyAgICAvLyBjb21wcmVzc2VkIGZvcm1hdHMgZG9uJ3QgaGF2ZSBzZXBh
cmF0ZSBzaXplZCBpbnRlcm5hbCBmb3JtYXRzLS0gd2UgY2FuIGp1c3QgdXNlIHRoZSBjb21wcmVz
c2VkIGZvcm1hdCBkaXJlY3RseQorICAgIHJlZGVmaW5lSW1hZ2UobGV2ZWwsIGZvcm1hdCwgd2lk
dGgsIGhlaWdodCk7CisKKyAgICBUZXh0dXJlOjpzZXRDb21wcmVzc2VkSW1hZ2UoaW1hZ2VTaXpl
LCBwaXhlbHMsIG1JbWFnZUFycmF5W2xldmVsXSk7Cit9CisKK3ZvaWQgVGV4dHVyZTJEOjpjb21t
aXRSZWN0KEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBpZiAobGV2ZWwgPCBsZXZlbENvdW50KCkp
CisgICAgeworICAgICAgICByeDo6SW1hZ2UgKmltYWdlID0gbUltYWdlQXJyYXlbbGV2ZWxdOwor
ICAgICAgICBpZiAoaW1hZ2UtPnVwZGF0ZVN1cmZhY2UobVRleFN0b3JhZ2UsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgeworICAgICAgICAgICAgaW1h
Z2UtPm1hcmtDbGVhbigpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRleHR1cmUyRDo6
c3ViSW1hZ2UoR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xp
bnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpCit7CisgICAgaWYgKFRleHR1
cmU6OnN1YkltYWdlKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgdW5wYWNrQWxpZ25tZW50LCBwaXhlbHMsIG1JbWFnZUFycmF5W2xldmVsXSkpCisgICAgewor
ICAgICAgICBjb21taXRSZWN0KGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZTJEOjpzdWJJbWFnZUNvbXByZXNzZWQoR0xpbnQg
bGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAq
cGl4ZWxzKQoreworICAgIGlmIChUZXh0dXJlOjpzdWJJbWFnZUNvbXByZXNzZWQoeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIHBpeGVscywgbUltYWdl
QXJyYXlbbGV2ZWxdKSkKKyAgICB7CisgICAgICAgIGNvbW1pdFJlY3QobGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KK30KKwordm9pZCBUZXh0dXJlMkQ6OmNv
cHlJbWFnZShHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEZyYW1lYnVmZmVyICpzb3VyY2UpCit7CisgICAg
R0xpbnQgaW50ZXJuYWxmb3JtYXQgPSBDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQs
IEdMX1VOU0lHTkVEX0JZVEUpOworICAgIHJlZGVmaW5lSW1hZ2UobGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIGlmICghbUltYWdlQXJyYXlbbGV2ZWxdLT5pc1Jl
bmRlcmFibGVGb3JtYXQoKSkKKyAgICB7CisgICAgICAgIG1JbWFnZUFycmF5W2xldmVsXS0+Y29w
eSgwLCAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2UpOworICAgICAgICBtRGlydHlJbWFn
ZXMgPSB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoIW1UZXhTdG9y
YWdlIHx8ICFtVGV4U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQoKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIG1JbWFnZUFycmF5W2xldmVsXS0+bWFya0NsZWFuKCk7CisKKyAgICAgICAgaWYgKHdpZHRo
ICE9IDAgJiYgaGVpZ2h0ICE9IDAgJiYgbGV2ZWwgPCBsZXZlbENvdW50KCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGdsOjpSZWN0YW5nbGUgc291cmNlUmVjdDsKKyAgICAgICAgICAgIHNvdXJj
ZVJlY3QueCA9IHg7CisgICAgICAgICAgICBzb3VyY2VSZWN0LndpZHRoID0gd2lkdGg7CisgICAg
ICAgICAgICBzb3VyY2VSZWN0LnkgPSB5OworICAgICAgICAgICAgc291cmNlUmVjdC5oZWlnaHQg
PSBoZWlnaHQ7CisKKyAgICAgICAgICAgIG1SZW5kZXJlci0+Y29weUltYWdlKHNvdXJjZSwgc291
cmNlUmVjdCwgZm9ybWF0LCAwLCAwLCBtVGV4U3RvcmFnZSwgbGV2ZWwpOworICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIFRleHR1cmUyRDo6Y29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4LCBHTGludCB5
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgRnJhbWVidWZmZXIgKnNvdXJjZSkKK3sK
KyAgICBpZiAoeG9mZnNldCArIHdpZHRoID4gbUltYWdlQXJyYXlbbGV2ZWxdLT5nZXRXaWR0aCgp
IHx8IHlvZmZzZXQgKyBoZWlnaHQgPiBtSW1hZ2VBcnJheVtsZXZlbF0tPmdldEhlaWdodCgpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICB9
CisKKyAgICBpZiAoIW1JbWFnZUFycmF5W2xldmVsXS0+aXNSZW5kZXJhYmxlRm9ybWF0KCkgfHwg
KCFtVGV4U3RvcmFnZSAmJiAhaXNTYW1wbGVyQ29tcGxldGUoKSkpCisgICAgeworICAgICAgICBt
SW1hZ2VBcnJheVtsZXZlbF0tPmNvcHkoeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhl
aWdodCwgc291cmNlKTsKKyAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgaWYgKCFtVGV4U3RvcmFnZSB8fCAhbVRleFN0b3JhZ2UtPmlz
UmVuZGVyVGFyZ2V0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnZlcnRUb1JlbmRlclRh
cmdldCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1cGRhdGVUZXh0dXJlKCk7CisK
KyAgICAgICAgaWYgKGxldmVsIDwgbGV2ZWxDb3VudCgpKQorICAgICAgICB7CisgICAgICAgICAg
ICBnbDo6UmVjdGFuZ2xlIHNvdXJjZVJlY3Q7CisgICAgICAgICAgICBzb3VyY2VSZWN0LnggPSB4
OworICAgICAgICAgICAgc291cmNlUmVjdC53aWR0aCA9IHdpZHRoOworICAgICAgICAgICAgc291
cmNlUmVjdC55ID0geTsKKyAgICAgICAgICAgIHNvdXJjZVJlY3QuaGVpZ2h0ID0gaGVpZ2h0Owor
CisgICAgICAgICAgICBtUmVuZGVyZXItPmNvcHlJbWFnZShzb3VyY2UsIHNvdXJjZVJlY3QsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkV4dHJhY3RGb3JtYXQobUltYWdl
QXJyYXlbMF0tPmdldEludGVybmFsRm9ybWF0KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeG9mZnNldCwgeW9mZnNldCwgbVRleFN0b3JhZ2UsIGxldmVsKTsKKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCBUZXh0dXJlMkQ6OnN0b3JhZ2UoR0xzaXplaSBsZXZlbHMsIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7Cisg
ICAgZGVsZXRlIG1UZXhTdG9yYWdlOworICAgIG1UZXhTdG9yYWdlID0gbmV3IHJ4OjpUZXh0dXJl
U3RvcmFnZUludGVyZmFjZTJEKG1SZW5kZXJlciwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgbVVz
YWdlLCBmYWxzZSwgd2lkdGgsIGhlaWdodCk7CisgICAgbUltbXV0YWJsZSA9IHRydWU7CisKKyAg
ICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQorICAgIHsKKyAg
ICAgICAgbUltYWdlQXJyYXlbbGV2ZWxdLT5yZWRlZmluZShtUmVuZGVyZXIsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCB0cnVlKTsKKyAgICAgICAgd2lkdGggPSBzdGQ6Om1heCgxLCB3
aWR0aCA+PiAxKTsKKyAgICAgICAgaGVpZ2h0ID0gc3RkOjptYXgoMSwgaGVpZ2h0ID4+IDEpOwor
ICAgIH0KKworICAgIGZvciAoaW50IGxldmVsID0gbGV2ZWxzOyBsZXZlbCA8IElNUExFTUVOVEFU
SU9OX01BWF9URVhUVVJFX0xFVkVMUzsgbGV2ZWwrKykKKyAgICB7CisgICAgICAgIG1JbWFnZUFy
cmF5W2xldmVsXS0+cmVkZWZpbmUobVJlbmRlcmVyLCBHTF9OT05FLCAwLCAwLCB0cnVlKTsKKyAg
ICB9CisKKyAgICBpZiAobVRleFN0b3JhZ2UtPmlzTWFuYWdlZCgpKQorICAgIHsKKyAgICAgICAg
aW50IGxldmVscyA9IGxldmVsQ291bnQoKTsKKworICAgICAgICBmb3IgKGludCBsZXZlbCA9IDA7
IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQorICAgICAgICB7CisgICAgICAgICAgICBtSW1hZ2VB
cnJheVtsZXZlbF0tPnNldE1hbmFnZWRTdXJmYWNlKG1UZXhTdG9yYWdlLCBsZXZlbCk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKKy8vIFRlc3RzIGZvciAyRCB0ZXh0dXJlIHNhbXBsaW5nIGNvbXBs
ZXRlbmVzcy4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMy44LjIgcGFnZSA4NS4KK2Jvb2wg
VGV4dHVyZTJEOjppc1NhbXBsZXJDb21wbGV0ZSgpIGNvbnN0Cit7CisgICAgR0xzaXplaSB3aWR0
aCA9IG1JbWFnZUFycmF5WzBdLT5nZXRXaWR0aCgpOworICAgIEdMc2l6ZWkgaGVpZ2h0ID0gbUlt
YWdlQXJyYXlbMF0tPmdldEhlaWdodCgpOworCisgICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0
IDw9IDApCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCBt
aXBtYXBwaW5nID0gaXNNaXBtYXBGaWx0ZXJlZCgpOworICAgIGJvb2wgZmlsdGVyaW5nLCByZW5k
ZXJhYmxlOworCisgICAgaWYgKChJc0Zsb2F0MzJGb3JtYXQoZ2V0SW50ZXJuYWxGb3JtYXQoMCkp
ICYmICFtUmVuZGVyZXItPmdldEZsb2F0MzJUZXh0dXJlU3VwcG9ydCgmZmlsdGVyaW5nLCAmcmVu
ZGVyYWJsZSkpIHx8CisgICAgICAgIChJc0Zsb2F0MTZGb3JtYXQoZ2V0SW50ZXJuYWxGb3JtYXQo
MCkpICYmICFtUmVuZGVyZXItPmdldEZsb2F0MTZUZXh0dXJlU3VwcG9ydCgmZmlsdGVyaW5nLCAm
cmVuZGVyYWJsZSkpKQorICAgIHsKKyAgICAgICAgaWYgKG1TYW1wbGVyU3RhdGUubWFnRmlsdGVy
ICE9IEdMX05FQVJFU1QgfHwKKyAgICAgICAgICAgIChtU2FtcGxlclN0YXRlLm1pbkZpbHRlciAh
PSBHTF9ORUFSRVNUICYmIG1TYW1wbGVyU3RhdGUubWluRmlsdGVyICE9IEdMX05FQVJFU1RfTUlQ
TUFQX05FQVJFU1QpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBib29sIG5wb3RTdXBwb3J0ID0gbVJlbmRlcmVyLT5nZXROb25Q
b3dlcjJUZXh0dXJlU3VwcG9ydCgpOworCisgICAgaWYgKCFucG90U3VwcG9ydCkKKyAgICB7Cisg
ICAgICAgIGlmICgobVNhbXBsZXJTdGF0ZS53cmFwUyAhPSBHTF9DTEFNUF9UT19FREdFICYmICFp
c1BvdzIod2lkdGgpKSB8fAorICAgICAgICAgICAgKG1TYW1wbGVyU3RhdGUud3JhcFQgIT0gR0xf
Q0xBTVBfVE9fRURHRSAmJiAhaXNQb3cyKGhlaWdodCkpKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobWlwbWFwcGluZykK
KyAgICB7CisgICAgICAgIGlmICghbnBvdFN1cHBvcnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICghaXNQb3cyKHdpZHRoKSB8fCAhaXNQb3cyKGhlaWdodCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgaWYgKCFpc01pcG1hcENvbXBsZXRlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
CisvLyBUZXN0cyBmb3IgMkQgdGV4dHVyZSAobWlwbWFwKSBjb21wbGV0ZW5lc3MuIFtPcGVuR0wg
RVMgMi4wLjI0XSBzZWN0aW9uIDMuNy4xMCBwYWdlIDgxLgorYm9vbCBUZXh0dXJlMkQ6OmlzTWlw
bWFwQ29tcGxldGUoKSBjb25zdAoreworICAgIGlmIChpc0ltbXV0YWJsZSgpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgR0xzaXplaSB3aWR0aCA9IG1JbWFnZUFy
cmF5WzBdLT5nZXRXaWR0aCgpOworICAgIEdMc2l6ZWkgaGVpZ2h0ID0gbUltYWdlQXJyYXlbMF0t
PmdldEhlaWdodCgpOworCisgICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDApCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaW50IHEgPSBsb2cyKHN0ZDo6
bWF4KHdpZHRoLCBoZWlnaHQpKTsKKworICAgIGZvciAoaW50IGxldmVsID0gMTsgbGV2ZWwgPD0g
cTsgbGV2ZWwrKykKKyAgICB7CisgICAgICAgIGlmIChtSW1hZ2VBcnJheVtsZXZlbF0tPmdldElu
dGVybmFsRm9ybWF0KCkgIT0gbUltYWdlQXJyYXlbMF0tPmdldEludGVybmFsRm9ybWF0KCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChtSW1hZ2VBcnJheVtsZXZlbF0tPmdldFdpZHRoKCkgIT0gc3RkOjptYXgoMSwgd2lkdGgg
Pj4gbGV2ZWwpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKworICAgICAgICBpZiAobUltYWdlQXJyYXlbbGV2ZWxdLT5nZXRIZWlnaHQoKSAhPSBzdGQ6
Om1heCgxLCBoZWlnaHQgPj4gbGV2ZWwpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBU
ZXh0dXJlMkQ6OmlzQ29tcHJlc3NlZChHTGludCBsZXZlbCkgY29uc3QKK3sKKyAgICByZXR1cm4g
SXNDb21wcmVzc2VkKGdldEludGVybmFsRm9ybWF0KGxldmVsKSk7Cit9CisKK2Jvb2wgVGV4dHVy
ZTJEOjppc0RlcHRoKEdMaW50IGxldmVsKSBjb25zdAoreworICAgIHJldHVybiBJc0RlcHRoVGV4
dHVyZShnZXRJbnRlcm5hbEZvcm1hdChsZXZlbCkpOworfQorCisvLyBDb25zdHJ1Y3RzIGEgbmF0
aXZlIHRleHR1cmUgcmVzb3VyY2UgZnJvbSB0aGUgdGV4dHVyZSBpbWFnZXMKK3ZvaWQgVGV4dHVy
ZTJEOjpjcmVhdGVUZXh0dXJlKCkKK3sKKyAgICBHTHNpemVpIHdpZHRoID0gbUltYWdlQXJyYXlb
MF0tPmdldFdpZHRoKCk7CisgICAgR0xzaXplaSBoZWlnaHQgPSBtSW1hZ2VBcnJheVswXS0+Z2V0
SGVpZ2h0KCk7CisKKyAgICBpZiAoISh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkpCisgICAgICAg
IHJldHVybjsgLy8gZG8gbm90IGF0dGVtcHQgdG8gY3JlYXRlIG5hdGl2ZSB0ZXh0dXJlcyBmb3Ig
bm9uZXhpc3RhbnQgZGF0YQorCisgICAgR0xpbnQgbGV2ZWxzID0gY3JlYXRpb25MZXZlbHMod2lk
dGgsIGhlaWdodCk7CisgICAgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gbUltYWdlQXJyYXlbMF0t
PmdldEludGVybmFsRm9ybWF0KCk7CisKKyAgICBkZWxldGUgbVRleFN0b3JhZ2U7CisgICAgbVRl
eFN0b3JhZ2UgPSBuZXcgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQobVJlbmRlcmVyLCBs
ZXZlbHMsIGludGVybmFsZm9ybWF0LCBtVXNhZ2UsIGZhbHNlLCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICAKKyAgICBpZiAobVRleFN0b3JhZ2UtPmlzTWFuYWdlZCgpKQorICAgIHsKKyAgICAgICAgaW50
IGxldmVscyA9IGxldmVsQ291bnQoKTsKKworICAgICAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxl
dmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQorICAgICAgICB7CisgICAgICAgICAgICBtSW1hZ2VBcnJh
eVtsZXZlbF0tPnNldE1hbmFnZWRTdXJmYWNlKG1UZXhTdG9yYWdlLCBsZXZlbCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworfQorCit2b2lkIFRleHR1cmUy
RDo6dXBkYXRlVGV4dHVyZSgpCit7CisgICAgYm9vbCBtaXBtYXBwaW5nID0gKGlzTWlwbWFwRmls
dGVyZWQoKSAmJiBpc01pcG1hcENvbXBsZXRlKCkpOworCisgICAgaW50IGxldmVscyA9IChtaXBt
YXBwaW5nID8gbGV2ZWxDb3VudCgpIDogMSk7CisKKyAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxl
dmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAgcng6OkltYWdlICppbWFnZSA9
IG1JbWFnZUFycmF5W2xldmVsXTsKKworICAgICAgICBpZiAoaW1hZ2UtPmlzRGlydHkoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgY29tbWl0UmVjdChsZXZlbCwgMCwgMCwgbUltYWdlQXJyYXlb
bGV2ZWxdLT5nZXRXaWR0aCgpLCBtSW1hZ2VBcnJheVtsZXZlbF0tPmdldEhlaWdodCgpKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBUZXh0dXJlMkQ6OmNvbnZlcnRUb1JlbmRlclRhcmdl
dCgpCit7CisgICAgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKm5ld1RleFN0b3JhZ2Ug
PSBOVUxMOworCisgICAgaWYgKG1JbWFnZUFycmF5WzBdLT5nZXRXaWR0aCgpICE9IDAgJiYgbUlt
YWdlQXJyYXlbMF0tPmdldEhlaWdodCgpICE9IDApCisgICAgeworICAgICAgICBHTHNpemVpIHdp
ZHRoID0gbUltYWdlQXJyYXlbMF0tPmdldFdpZHRoKCk7CisgICAgICAgIEdMc2l6ZWkgaGVpZ2h0
ID0gbUltYWdlQXJyYXlbMF0tPmdldEhlaWdodCgpOworICAgICAgICBHTGludCBsZXZlbHMgPSBt
VGV4U3RvcmFnZSAhPSBOVUxMID8gbVRleFN0b3JhZ2UtPmxldmVsQ291bnQoKSA6IGNyZWF0aW9u
TGV2ZWxzKHdpZHRoLCBoZWlnaHQpOworICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSBt
SW1hZ2VBcnJheVswXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKKworICAgICAgICBuZXdUZXhTdG9y
YWdlID0gbmV3IHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEKG1SZW5kZXJlciwgbGV2ZWxz
LCBpbnRlcm5hbGZvcm1hdCwgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRSwgdHJ1ZSwg
d2lkdGgsIGhlaWdodCk7CisKKyAgICAgICAgaWYgKG1UZXhTdG9yYWdlICE9IE5VTEwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghbVJlbmRlcmVyLT5jb3B5VG9SZW5kZXJUYXJnZXQobmV3
VGV4U3RvcmFnZSwgbVRleFN0b3JhZ2UpKQorICAgICAgICAgICAgeyAgIAorICAgICAgICAgICAg
ICAgIGRlbGV0ZSBuZXdUZXhTdG9yYWdlOworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBkZWxldGUgbVRleFN0b3JhZ2U7CisgICAgbVRleFN0b3JhZ2UgPSBuZXdUZXhTdG9yYWdl
OworCisgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKK30KKwordm9pZCBUZXh0dXJlMkQ6OmdlbmVy
YXRlTWlwbWFwcygpCit7CisgICAgaWYgKCFtUmVuZGVyZXItPmdldE5vblBvd2VyMlRleHR1cmVT
dXBwb3J0KCkpCisgICAgeworICAgICAgICBpZiAoIWlzUG93MihtSW1hZ2VBcnJheVswXS0+Z2V0
V2lkdGgoKSkgfHwgIWlzUG93MihtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCkpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFB1cmdlIGFycmF5IGxldmVscyAxIHRocm91Z2gg
cSBhbmQgcmVzZXQgdGhlbSB0byByZXByZXNlbnQgdGhlIGdlbmVyYXRlZCBtaXBtYXAgbGV2ZWxz
LgorICAgIHVuc2lnbmVkIGludCBxID0gbG9nMihzdGQ6Om1heChtSW1hZ2VBcnJheVswXS0+Z2V0
V2lkdGgoKSwgbUltYWdlQXJyYXlbMF0tPmdldEhlaWdodCgpKSk7CisgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKQorICAgIHsKKyAgICAgICAgcmVkZWZpbmVJbWFnZShp
LCBtSW1hZ2VBcnJheVswXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1heChtSW1hZ2VBcnJheVswXS0+Z2V0V2lkdGgoKSA+PiBpLCAxKSwKKyAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6Om1heChtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCkgPj4g
aSwgMSkpOworICAgIH0KKworICAgIGlmIChtVGV4U3RvcmFnZSAmJiBtVGV4U3RvcmFnZS0+aXNS
ZW5kZXJUYXJnZXQoKSkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBp
IDw9IHE7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgbVRleFN0b3JhZ2UtPmdlbmVyYXRl
TWlwbWFwKGkpOworCisgICAgICAgICAgICBtSW1hZ2VBcnJheVtpXS0+bWFya0NsZWFuKCk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDE7IGkgPD0gcTsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBtUmVuZGVyZXIt
PmdlbmVyYXRlTWlwbWFwKG1JbWFnZUFycmF5W2ldLCBtSW1hZ2VBcnJheVtpIC0gMV0pOworICAg
ICAgICB9CisgICAgfQorfQorCitSZW5kZXJidWZmZXIgKlRleHR1cmUyRDo6Z2V0UmVuZGVyYnVm
ZmVyKEdMZW51bSB0YXJnZXQpCit7CisgICAgaWYgKHRhcmdldCAhPSBHTF9URVhUVVJFXzJEKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgKFJl
bmRlcmJ1ZmZlciAqKU5VTEwpOworICAgIH0KKworICAgIGlmIChtQ29sb3JidWZmZXJQcm94eSA9
PSBOVUxMKQorICAgIHsKKyAgICAgICAgbUNvbG9yYnVmZmVyUHJveHkgPSBuZXcgUmVuZGVyYnVm
ZmVyKG1SZW5kZXJlciwgaWQoKSwgbmV3IFJlbmRlcmJ1ZmZlclRleHR1cmUyRCh0aGlzLCB0YXJn
ZXQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbUNvbG9yYnVmZmVyUHJveHk7Cit9CisKK3J4OjpS
ZW5kZXJUYXJnZXQgKlRleHR1cmUyRDo6Z2V0UmVuZGVyVGFyZ2V0KEdMZW51bSB0YXJnZXQpCit7
CisgICAgQVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEKTsKKworICAgIC8vIGVuc3VyZSB0
aGUgdW5kZXJseWluZyB0ZXh0dXJlIGlzIGNyZWF0ZWQKKyAgICBpZiAoZ2V0U3RvcmFnZSh0cnVl
KSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdXBk
YXRlVGV4dHVyZSgpOworICAgIAorICAgIC8vIGVuc3VyZSB0aGlzIGlzIE5PVCBhIGRlcHRoIHRl
eHR1cmUKKyAgICBpZiAoaXNEZXB0aCgwKSkKKyAgICB7CisgICAgICAgIHJldHVybiBOVUxMOwor
ICAgIH0KKworICAgIHJldHVybiBtVGV4U3RvcmFnZS0+Z2V0UmVuZGVyVGFyZ2V0KCk7Cit9CisK
K3J4OjpSZW5kZXJUYXJnZXQgKlRleHR1cmUyRDo6Z2V0RGVwdGhTdGVuY2lsKEdMZW51bSB0YXJn
ZXQpCit7CisgICAgQVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEKTsKKworICAgIC8vIGVu
c3VyZSB0aGUgdW5kZXJseWluZyB0ZXh0dXJlIGlzIGNyZWF0ZWQKKyAgICBpZiAoZ2V0U3RvcmFn
ZSh0cnVlKSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisg
ICAgdXBkYXRlVGV4dHVyZSgpOworCisgICAgLy8gZW5zdXJlIHRoaXMgaXMgYWN0dWFsbHkgYSBk
ZXB0aCB0ZXh0dXJlCisgICAgaWYgKCFpc0RlcHRoKDApKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgfQorICAgIHJldHVybiBtVGV4U3RvcmFnZS0+Z2V0UmVuZGVyVGFyZ2V0KCk7
Cit9CisKK2ludCBUZXh0dXJlMkQ6OmxldmVsQ291bnQoKQoreworICAgIHJldHVybiBtVGV4U3Rv
cmFnZSA/IG1UZXhTdG9yYWdlLT5sZXZlbENvdW50KCkgOiAwOworfQorCityeDo6VGV4dHVyZVN0
b3JhZ2VJbnRlcmZhY2UgKlRleHR1cmUyRDo6Z2V0U3RvcmFnZShib29sIHJlbmRlclRhcmdldCkK
K3sKKyAgICBpZiAoIW1UZXhTdG9yYWdlIHx8IChyZW5kZXJUYXJnZXQgJiYgIW1UZXhTdG9yYWdl
LT5pc1JlbmRlclRhcmdldCgpKSkKKyAgICB7CisgICAgICAgIGlmIChyZW5kZXJUYXJnZXQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnZlcnRUb1JlbmRlclRhcmdldCgpOworICAgICAgICB9
CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgY3JlYXRlVGV4dHVyZSgpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG1UZXhTdG9yYWdlOworfQorCitUZXh0dXJl
Q3ViZU1hcDo6VGV4dHVyZUN1YmVNYXAocng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGlk
KSA6IFRleHR1cmUocmVuZGVyZXIsIGlkKQoreworICAgIG1UZXhTdG9yYWdlID0gTlVMTDsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDY7IGkrKykKKyAgICB7CisgICAgICAgIG1GYWNlUHJveGll
c1tpXSA9IE5VTEw7CisgICAgICAgIG1GYWNlUHJveHlSZWZzW2ldID0gMDsKKworICAgICAgICBm
b3IgKGludCBqID0gMDsgaiA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgKytq
KQorICAgICAgICB7CisgICAgICAgICAgICBtSW1hZ2VBcnJheVtpXVtqXSA9IHJlbmRlcmVyLT5j
cmVhdGVJbWFnZSgpOworICAgICAgICB9CisgICAgfQorfQorCitUZXh0dXJlQ3ViZU1hcDo6flRl
eHR1cmVDdWJlTWFwKCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDY7IGkrKykKKyAgICB7
CisgICAgICAgIG1GYWNlUHJveGllc1tpXSA9IE5VTEw7CisKKyAgICAgICAgZm9yIChpbnQgaiA9
IDA7IGogPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7ICsraikKKyAgICAgICAg
eworICAgICAgICAgICAgZGVsZXRlIG1JbWFnZUFycmF5W2ldW2pdOworICAgICAgICB9CisgICAg
fQorCisgICAgZGVsZXRlIG1UZXhTdG9yYWdlOworICAgIG1UZXhTdG9yYWdlID0gTlVMTDsKK30K
KworLy8gV2UgbmVlZCB0byBtYWludGFpbiBhIGNvdW50IG9mIHJlZmVyZW5jZXMgdG8gcmVuZGVy
YnVmZmVycyBhY3RpbmcgYXMgCisvLyBwcm94aWVzIGZvciB0aGlzIHRleHR1cmUsIHNvIHRoYXQg
dGhlIHRleHR1cmUgaXMgbm90IGRlbGV0ZWQgd2hpbGUgCisvLyBwcm94eSByZWZlcmVuY2VzIHN0
aWxsIGV4aXN0LiBJZiB0aGUgcmVmZXJlbmNlIGNvdW50IGRyb3BzIHRvIHplcm8sCisvLyB3ZSBz
ZXQgb3VyIHByb3h5IHBvaW50ZXIgTlVMTCwgc28gdGhhdCBhIG5ldyBhdHRlbXB0IGF0IHJlZmVy
ZW5jaW5nCisvLyB3aWxsIGNhdXNlIHJlY3JlYXRpb24uCit2b2lkIFRleHR1cmVDdWJlTWFwOjph
ZGRQcm94eVJlZihjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KQoreworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgNjsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKG1GYWNlUHJveGllc1tpXSA9PSBw
cm94eSkKKyAgICAgICAgICAgIG1GYWNlUHJveHlSZWZzW2ldKys7CisgICAgfQorfQorCit2b2lk
IFRleHR1cmVDdWJlTWFwOjpyZWxlYXNlUHJveHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSkK
K3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDY7IGkrKykKKyAgICB7CisgICAgICAgIGlmICht
RmFjZVByb3hpZXNbaV0gPT0gcHJveHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtRmFj
ZVByb3h5UmVmc1tpXSA+IDApCisgICAgICAgICAgICAgICAgbUZhY2VQcm94eVJlZnNbaV0tLTsK
KworICAgICAgICAgICAgaWYgKG1GYWNlUHJveHlSZWZzW2ldID09IDApCisgICAgICAgICAgICAg
ICAgbUZhY2VQcm94aWVzW2ldID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KK30KKworR0xlbnVt
IFRleHR1cmVDdWJlTWFwOjpnZXRUYXJnZXQoKSBjb25zdAoreworICAgIHJldHVybiBHTF9URVhU
VVJFX0NVQkVfTUFQOworfQorCitHTHNpemVpIFRleHR1cmVDdWJlTWFwOjpnZXRXaWR0aChHTGVu
dW0gdGFyZ2V0LCBHTGludCBsZXZlbCkgY29uc3QKK3sKKyAgICBpZiAobGV2ZWwgPCBJTVBMRU1F
TlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCisgICAgICAgIHJldHVybiBtSW1hZ2VBcnJheVtm
YWNlSW5kZXgodGFyZ2V0KV1bbGV2ZWxdLT5nZXRXaWR0aCgpOworICAgIGVsc2UKKyAgICAgICAg
cmV0dXJuIDA7Cit9CisKK0dMc2l6ZWkgVGV4dHVyZUN1YmVNYXA6OmdldEhlaWdodChHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCkgY29uc3QKK3sKKyAgICBpZiAobGV2ZWwgPCBJTVBMRU1FTlRB
VElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCisgICAgICAgIHJldHVybiBtSW1hZ2VBcnJheVtmYWNl
SW5kZXgodGFyZ2V0KV1bbGV2ZWxdLT5nZXRIZWlnaHQoKTsKKyAgICBlbHNlCisgICAgICAgIHJl
dHVybiAwOworfQorCitHTGVudW0gVGV4dHVyZUN1YmVNYXA6OmdldEludGVybmFsRm9ybWF0KEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdAoreworICAgIGlmIChsZXZlbCA8IElNUExF
TUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykKKyAgICAgICAgcmV0dXJuIG1JbWFnZUFycmF5
W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZlbF0tPmdldEludGVybmFsRm9ybWF0KCk7CisgICAgZWxz
ZQorICAgICAgICByZXR1cm4gR0xfTk9ORTsKK30KKworR0xlbnVtIFRleHR1cmVDdWJlTWFwOjpn
ZXRBY3R1YWxGb3JtYXQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAg
aWYgKGxldmVsIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQorICAgICAgICBy
ZXR1cm4gbUltYWdlQXJyYXlbZmFjZUluZGV4KHRhcmdldCldW2xldmVsXS0+Z2V0QWN0dWFsRm9y
bWF0KCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRDNERk1UX1VOS05PV047Cit9CisKK3Zv
aWQgVGV4dHVyZUN1YmVNYXA6OnNldEltYWdlUG9zWChHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBh
Y2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscykKK3sKKyAgICBzZXRJbWFnZSgwLCBsZXZl
bCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscyk7
Cit9CisKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OnNldEltYWdlTmVnWChHTGludCBsZXZlbCwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBH
TGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscykKK3sKKyAgICBzZXRJbWFn
ZSgxLCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCB1bnBhY2tBbGlnbm1lbnQs
IHBpeGVscyk7Cit9CisKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OnNldEltYWdlUG9zWShHTGludCBs
ZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscykKK3sKKyAg
ICBzZXRJbWFnZSgyLCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCB1bnBhY2tB
bGlnbm1lbnQsIHBpeGVscyk7Cit9CisKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OnNldEltYWdlTmVn
WShHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVs
cykKK3sKKyAgICBzZXRJbWFnZSgzLCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscyk7Cit9CisKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OnNl
dEltYWdlUG9zWihHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZv
aWQgKnBpeGVscykKK3sKKyAgICBzZXRJbWFnZSg0LCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscyk7Cit9CisKK3ZvaWQgVGV4dHVyZUN1
YmVNYXA6OnNldEltYWdlTmVnWihHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQs
IGNvbnN0IHZvaWQgKnBpeGVscykKK3sKKyAgICBzZXRJbWFnZSg1LCBsZXZlbCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscyk7Cit9CisKK3ZvaWQg
VGV4dHVyZUN1YmVNYXA6OnNldENvbXByZXNzZWRJbWFnZShHTGVudW0gZmFjZSwgR0xpbnQgbGV2
ZWwsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVp
IGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIC8vIGNvbXByZXNzZWQgZm9y
bWF0cyBkb24ndCBoYXZlIHNlcGFyYXRlIHNpemVkIGludGVybmFsIGZvcm1hdHMtLSB3ZSBjYW4g
anVzdCB1c2UgdGhlIGNvbXByZXNzZWQgZm9ybWF0IGRpcmVjdGx5CisgICAgcmVkZWZpbmVJbWFn
ZShmYWNlSW5kZXgoZmFjZSksIGxldmVsLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworCisgICAg
VGV4dHVyZTo6c2V0Q29tcHJlc3NlZEltYWdlKGltYWdlU2l6ZSwgcGl4ZWxzLCBtSW1hZ2VBcnJh
eVtmYWNlSW5kZXgoZmFjZSldW2xldmVsXSk7Cit9CisKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OmNv
bW1pdFJlY3QoaW50IGZhY2UsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBpZiAobGV2ZWwgPCBs
ZXZlbENvdW50KCkpCisgICAgeworICAgICAgICByeDo6SW1hZ2UgKmltYWdlID0gbUltYWdlQXJy
YXlbZmFjZV1bbGV2ZWxdOworICAgICAgICBpZiAoaW1hZ2UtPnVwZGF0ZVN1cmZhY2UobVRleFN0
b3JhZ2UsIGZhY2UsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0KSkKKyAg
ICAgICAgICAgIGltYWdlLT5tYXJrQ2xlYW4oKTsKKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZUN1
YmVNYXA6OnN1YkltYWdlKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZv
cm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4
ZWxzKQoreworICAgIGlmIChUZXh0dXJlOjpzdWJJbWFnZSh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzLCBtSW1hZ2VB
cnJheVtmYWNlSW5kZXgodGFyZ2V0KV1bbGV2ZWxdKSkKKyAgICB7CisgICAgICAgIGNvbW1pdFJl
Y3QoZmFjZUluZGV4KHRhcmdldCksIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OnN1YkltYWdlQ29tcHJlc3Nl
ZChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNl
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkg
aW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit7CisgICAgaWYgKFRleHR1cmU6OnN1Yklt
YWdlQ29tcHJlc3NlZCh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGlt
YWdlU2l6ZSwgcGl4ZWxzLCBtSW1hZ2VBcnJheVtmYWNlSW5kZXgodGFyZ2V0KV1bbGV2ZWxdKSkK
KyAgICB7CisgICAgICAgIGNvbW1pdFJlY3QoZmFjZUluZGV4KHRhcmdldCksIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9Cit9CisKKy8vIFRlc3RzIGZvciBj
dWJlIG1hcCBzYW1wbGluZyBjb21wbGV0ZW5lc3MuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9u
IDMuOC4yIHBhZ2UgODYuCitib29sIFRleHR1cmVDdWJlTWFwOjppc1NhbXBsZXJDb21wbGV0ZSgp
IGNvbnN0Cit7CisgICAgaW50IHNpemUgPSBtSW1hZ2VBcnJheVswXVswXS0+Z2V0V2lkdGgoKTsK
KworICAgIGJvb2wgbWlwbWFwcGluZyA9IGlzTWlwbWFwRmlsdGVyZWQoKTsKKyAgICBib29sIGZp
bHRlcmluZywgcmVuZGVyYWJsZTsKKworICAgIGlmICgoZ2w6OkV4dHJhY3RUeXBlKGdldEludGVy
bmFsRm9ybWF0KEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgMCkpID09IEdMX0ZMT0FU
ICYmICFtUmVuZGVyZXItPmdldEZsb2F0MzJUZXh0dXJlU3VwcG9ydCgmZmlsdGVyaW5nLCAmcmVu
ZGVyYWJsZSkpIHx8CisgICAgICAgIChnbDo6RXh0cmFjdFR5cGUoZ2V0SW50ZXJuYWxGb3JtYXQo
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwKSA9PSBHTF9IQUxGX0ZMT0FUX09FUykg
JiYgIW1SZW5kZXJlci0+Z2V0RmxvYXQxNlRleHR1cmVTdXBwb3J0KCZmaWx0ZXJpbmcsICZyZW5k
ZXJhYmxlKSkpCisgICAgeworICAgICAgICBpZiAobVNhbXBsZXJTdGF0ZS5tYWdGaWx0ZXIgIT0g
R0xfTkVBUkVTVCB8fAorICAgICAgICAgICAgKG1TYW1wbGVyU3RhdGUubWluRmlsdGVyICE9IEdM
X05FQVJFU1QgJiYgbVNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIgIT0gR0xfTkVBUkVTVF9NSVBNQVBf
TkVBUkVTVCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmICghaXNQb3cyKHNpemUpICYmICFtUmVuZGVyZXItPmdldE5vblBv
d2VyMlRleHR1cmVTdXBwb3J0KCkpCisgICAgeworICAgICAgICBpZiAobVNhbXBsZXJTdGF0ZS53
cmFwUyAhPSBHTF9DTEFNUF9UT19FREdFIHx8IG1TYW1wbGVyU3RhdGUud3JhcFQgIT0gR0xfQ0xB
TVBfVE9fRURHRSB8fCBtaXBtYXBwaW5nKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1pcG1hcHBpbmcpCisgICAgewor
ICAgICAgICBpZiAoIWlzQ3ViZUNvbXBsZXRlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBp
ZiAoIWlzTWlwbWFwQ3ViZUNvbXBsZXRlKCkpICAgLy8gQWxzbyB0ZXN0cyBmb3IgaXNDdWJlQ29t
cGxldGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gVGVzdHMgZm9yIGN1YmUgdGV4dHVy
ZSBjb21wbGV0ZW5lc3MuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDMuNy4xMCBwYWdlIDgx
LgorYm9vbCBUZXh0dXJlQ3ViZU1hcDo6aXNDdWJlQ29tcGxldGUoKSBjb25zdAoreworICAgIGlm
IChtSW1hZ2VBcnJheVswXVswXS0+Z2V0V2lkdGgoKSA8PSAwIHx8IG1JbWFnZUFycmF5WzBdWzBd
LT5nZXRIZWlnaHQoKSAhPSBtSW1hZ2VBcnJheVswXVswXS0+Z2V0V2lkdGgoKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBmYWNl
ID0gMTsgZmFjZSA8IDY7IGZhY2UrKykKKyAgICB7CisgICAgICAgIGlmIChtSW1hZ2VBcnJheVtm
YWNlXVswXS0+Z2V0V2lkdGgoKSAhPSBtSW1hZ2VBcnJheVswXVswXS0+Z2V0V2lkdGgoKSB8fAor
ICAgICAgICAgICAgbUltYWdlQXJyYXlbZmFjZV1bMF0tPmdldFdpZHRoKCkgIT0gbUltYWdlQXJy
YXlbMF1bMF0tPmdldEhlaWdodCgpIHx8CisgICAgICAgICAgICBtSW1hZ2VBcnJheVtmYWNlXVsw
XS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSAhPSBtSW1hZ2VBcnJheVswXVswXS0+Z2V0SW50ZXJuYWxG
b3JtYXQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVGV4dHVyZUN1YmVNYXA6Omlz
TWlwbWFwQ3ViZUNvbXBsZXRlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNJbW11dGFibGUoKSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmICghaXNDdWJlQ29tcGxl
dGUoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBHTHNpemVp
IHNpemUgPSBtSW1hZ2VBcnJheVswXVswXS0+Z2V0V2lkdGgoKTsKKworICAgIGludCBxID0gbG9n
MihzaXplKTsKKworICAgIGZvciAoaW50IGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQorICAg
IHsKKyAgICAgICAgZm9yIChpbnQgbGV2ZWwgPSAxOyBsZXZlbCA8PSBxOyBsZXZlbCsrKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAobUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdLT5nZXRJbnRl
cm5hbEZvcm1hdCgpICE9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKG1JbWFnZUFycmF5W2ZhY2VdW2xldmVsXS0+Z2V0V2lkdGgo
KSAhPSBzdGQ6Om1heCgxLCBzaXplID4+IGxldmVsKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBUZXh0dXJlQ3ViZU1hcDo6aXNDb21wcmVzc2Vk
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdAoreworICAgIHJldHVybiBJc0NvbXBy
ZXNzZWQoZ2V0SW50ZXJuYWxGb3JtYXQodGFyZ2V0LCBsZXZlbCkpOworfQorCisvLyBDb25zdHJ1
Y3RzIGEgbmF0aXZlIHRleHR1cmUgcmVzb3VyY2UgZnJvbSB0aGUgdGV4dHVyZSBpbWFnZXMsIG9y
IHJldHVybnMgYW4gZXhpc3Rpbmcgb25lCit2b2lkIFRleHR1cmVDdWJlTWFwOjpjcmVhdGVUZXh0
dXJlKCkKK3sKKyAgICBHTHNpemVpIHNpemUgPSBtSW1hZ2VBcnJheVswXVswXS0+Z2V0V2lkdGgo
KTsKKworICAgIGlmICghKHNpemUgPiAwKSkKKyAgICAgICAgcmV0dXJuOyAvLyBkbyBub3QgYXR0
ZW1wdCB0byBjcmVhdGUgbmF0aXZlIHRleHR1cmVzIGZvciBub25leGlzdGFudCBkYXRhCisKKyAg
ICBHTGludCBsZXZlbHMgPSBjcmVhdGlvbkxldmVscyhzaXplKTsKKyAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQgPSBtSW1hZ2VBcnJheVswXVswXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKKworICAg
IGRlbGV0ZSBtVGV4U3RvcmFnZTsKKyAgICBtVGV4U3RvcmFnZSA9IG5ldyByeDo6VGV4dHVyZVN0
b3JhZ2VJbnRlcmZhY2VDdWJlKG1SZW5kZXJlciwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgbVVz
YWdlLCBmYWxzZSwgc2l6ZSk7CisKKyAgICBpZiAobVRleFN0b3JhZ2UtPmlzTWFuYWdlZCgpKQor
ICAgIHsKKyAgICAgICAgaW50IGxldmVscyA9IGxldmVsQ291bnQoKTsKKworICAgICAgICBmb3Ig
KGludCBmYWNlID0gMDsgZmFjZSA8IDY7IGZhY2UrKykKKyAgICAgICAgeworICAgICAgICAgICAg
Zm9yIChpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsgbGV2ZWwrKykKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0tPnNldE1hbmFnZWRT
dXJmYWNlKG1UZXhTdG9yYWdlLCBmYWNlLCBsZXZlbCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworfQorCit2b2lkIFRleHR1cmVD
dWJlTWFwOjp1cGRhdGVUZXh0dXJlKCkKK3sKKyAgICBib29sIG1pcG1hcHBpbmcgPSBpc01pcG1h
cEZpbHRlcmVkKCkgJiYgaXNNaXBtYXBDdWJlQ29tcGxldGUoKTsKKworICAgIGZvciAoaW50IGZh
Y2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQorICAgIHsKKyAgICAgICAgaW50IGxldmVscyA9ICht
aXBtYXBwaW5nID8gbGV2ZWxDb3VudCgpIDogMSk7CisKKyAgICAgICAgZm9yIChpbnQgbGV2ZWwg
PSAwOyBsZXZlbCA8IGxldmVsczsgbGV2ZWwrKykKKyAgICAgICAgeworICAgICAgICAgICAgcng6
OkltYWdlICppbWFnZSA9IG1JbWFnZUFycmF5W2ZhY2VdW2xldmVsXTsKKworICAgICAgICAgICAg
aWYgKGltYWdlLT5pc0RpcnR5KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29t
bWl0UmVjdChmYWNlLCBsZXZlbCwgMCwgMCwgaW1hZ2UtPmdldFdpZHRoKCksIGltYWdlLT5nZXRI
ZWlnaHQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVGV4
dHVyZUN1YmVNYXA6OmNvbnZlcnRUb1JlbmRlclRhcmdldCgpCit7CisgICAgcng6OlRleHR1cmVT
dG9yYWdlSW50ZXJmYWNlQ3ViZSAqbmV3VGV4U3RvcmFnZSA9IE5VTEw7CisKKyAgICBpZiAobUlt
YWdlQXJyYXlbMF1bMF0tPmdldFdpZHRoKCkgIT0gMCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkg
c2l6ZSA9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgpOworICAgICAgICBHTGludCBsZXZl
bHMgPSBtVGV4U3RvcmFnZSAhPSBOVUxMID8gbVRleFN0b3JhZ2UtPmxldmVsQ291bnQoKSA6IGNy
ZWF0aW9uTGV2ZWxzKHNpemUpOworICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSBtSW1h
Z2VBcnJheVswXVswXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKKworICAgICAgICBuZXdUZXhTdG9y
YWdlID0gbmV3IHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUobVJlbmRlcmVyLCBsZXZl
bHMsIGludGVybmFsZm9ybWF0LCBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFLCB0cnVl
LCBzaXplKTsKKworICAgICAgICBpZiAobVRleFN0b3JhZ2UgIT0gTlVMTCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKCFtUmVuZGVyZXItPmNvcHlUb1JlbmRlclRhcmdldChuZXdUZXhTdG9y
YWdlLCBtVGV4U3RvcmFnZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVsZXRl
IG5ld1RleFN0b3JhZ2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGRlbGV0
ZSBtVGV4U3RvcmFnZTsKKyAgICBtVGV4U3RvcmFnZSA9IG5ld1RleFN0b3JhZ2U7CisKKyAgICBt
RGlydHlJbWFnZXMgPSB0cnVlOworfQorCit2b2lkIFRleHR1cmVDdWJlTWFwOjpzZXRJbWFnZShp
bnQgZmFjZUluZGV4LCBHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0
IHZvaWQgKnBpeGVscykKK3sKKyAgICBHTGludCBpbnRlcm5hbGZvcm1hdCA9IENvbnZlcnRTaXpl
ZEludGVybmFsRm9ybWF0KGZvcm1hdCwgdHlwZSk7CisgICAgcmVkZWZpbmVJbWFnZShmYWNlSW5k
ZXgsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisKKyAgICBUZXh0dXJl
OjpzZXRJbWFnZSh1bnBhY2tBbGlnbm1lbnQsIHBpeGVscywgbUltYWdlQXJyYXlbZmFjZUluZGV4
XVtsZXZlbF0pOworfQorCit1bnNpZ25lZCBpbnQgVGV4dHVyZUN1YmVNYXA6OmZhY2VJbmRleChH
TGVudW0gZmFjZSkKK3sKKyAgICBNRVRBX0FTU0VSVChHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1ggLSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggPT0gMSk7CisgICAgTUVUQV9B
U1NFUlQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZIC0gR0xfVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9YID09IDIpOworICAgIE1FVEFfQVNTRVJUKEdMX1RFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWSAtIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCA9PSAzKTsKKyAgICBN
RVRBX0FTU0VSVChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ogLSBHTF9URVhUVVJFX0NV
QkVfTUFQX1BPU0lUSVZFX1ggPT0gNCk7CisgICAgTUVUQV9BU1NFUlQoR0xfVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9aIC0gR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YID09IDUpOwor
CisgICAgcmV0dXJuIGZhY2UgLSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g7Cit9CisK
K3ZvaWQgVGV4dHVyZUN1YmVNYXA6OnJlZGVmaW5lSW1hZ2UoaW50IGZhY2UsIEdMaW50IGxldmVs
LCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7
CisgICAgLy8gSWYgdGhlcmUgY3VycmVudGx5IGlzIGEgY29ycmVzcG9uZGluZyBzdG9yYWdlIHRl
eHR1cmUgaW1hZ2UsIGl0IGhhcyB0aGVzZSBwYXJhbWV0ZXJzCisgICAgY29uc3QgaW50IHN0b3Jh
Z2VXaWR0aCA9IHN0ZDo6bWF4KDEsIG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgpID4+IGxl
dmVsKTsKKyAgICBjb25zdCBpbnQgc3RvcmFnZUhlaWdodCA9IHN0ZDo6bWF4KDEsIG1JbWFnZUFy
cmF5WzBdWzBdLT5nZXRIZWlnaHQoKSA+PiBsZXZlbCk7CisgICAgY29uc3QgaW50IHN0b3JhZ2VG
b3JtYXQgPSBtSW1hZ2VBcnJheVswXVswXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKKworICAgIG1J
bWFnZUFycmF5W2ZhY2VdW2xldmVsXS0+cmVkZWZpbmUobVJlbmRlcmVyLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZmFsc2UpOworCisgICAgaWYgKG1UZXhTdG9yYWdlKQorICAgIHsK
KyAgICAgICAgY29uc3QgaW50IHN0b3JhZ2VMZXZlbHMgPSBtVGV4U3RvcmFnZS0+bGV2ZWxDb3Vu
dCgpOworICAgICAgICAKKyAgICAgICAgaWYgKChsZXZlbCA+PSBzdG9yYWdlTGV2ZWxzICYmIHN0
b3JhZ2VMZXZlbHMgIT0gMCkgfHwKKyAgICAgICAgICAgIHdpZHRoICE9IHN0b3JhZ2VXaWR0aCB8
fAorICAgICAgICAgICAgaGVpZ2h0ICE9IHN0b3JhZ2VIZWlnaHQgfHwKKyAgICAgICAgICAgIGlu
dGVybmFsZm9ybWF0ICE9IHN0b3JhZ2VGb3JtYXQpICAgLy8gRGlzY2FyZCBtaXNtYXRjaGVkIHN0
b3JhZ2UKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBJTVBMRU1F
TlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKGludCBmID0gMDsgZiA8IDY7IGYrKykKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZdW2ldLT5tYXJrRGlydHkoKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlbGV0ZSBtVGV4U3Rv
cmFnZTsKKyAgICAgICAgICAgIG1UZXhTdG9yYWdlID0gTlVMTDsKKworICAgICAgICAgICAgbURp
cnR5SW1hZ2VzID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBUZXh0dXJlQ3Vi
ZU1hcDo6Y29weUltYWdlKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0
LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgRnJhbWVi
dWZmZXIgKnNvdXJjZSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgZmFjZWluZGV4ID0gZmFjZUluZGV4
KHRhcmdldCk7CisgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQgPSBnbDo6Q29udmVydFNpemVkSW50
ZXJuYWxGb3JtYXQoZm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFKTsKKyAgICByZWRlZmluZUltYWdl
KGZhY2VpbmRleCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKworICAg
IGlmICghbUltYWdlQXJyYXlbZmFjZWluZGV4XVtsZXZlbF0tPmlzUmVuZGVyYWJsZUZvcm1hdCgp
KQorICAgIHsKKyAgICAgICAgbUltYWdlQXJyYXlbZmFjZWluZGV4XVtsZXZlbF0tPmNvcHkoMCwg
MCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgc291cmNlKTsKKyAgICAgICAgbURpcnR5SW1hZ2VzID0g
dHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKCFtVGV4U3RvcmFnZSB8
fCAhbVRleFN0b3JhZ2UtPmlzUmVuZGVyVGFyZ2V0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnZlcnRUb1JlbmRlclRhcmdldCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBt
SW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS0+bWFya0NsZWFuKCk7CisKKyAgICAgICAgQVNT
RVJUKHdpZHRoID09IGhlaWdodCk7CisKKyAgICAgICAgaWYgKHdpZHRoID4gMCAmJiBsZXZlbCA8
IGxldmVsQ291bnQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlJlY3RhbmdsZSBzb3Vy
Y2VSZWN0OworICAgICAgICAgICAgc291cmNlUmVjdC54ID0geDsKKyAgICAgICAgICAgIHNvdXJj
ZVJlY3Qud2lkdGggPSB3aWR0aDsKKyAgICAgICAgICAgIHNvdXJjZVJlY3QueSA9IHk7CisgICAg
ICAgICAgICBzb3VyY2VSZWN0LmhlaWdodCA9IGhlaWdodDsKKworICAgICAgICAgICAgbVJlbmRl
cmVyLT5jb3B5SW1hZ2Uoc291cmNlLCBzb3VyY2VSZWN0LCBmb3JtYXQsIDAsIDAsIG1UZXhTdG9y
YWdlLCB0YXJnZXQsIGxldmVsKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBUZXh0dXJl
Q3ViZU1hcDo6Y29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgRnJhbWVidWZmZXIgKnNvdXJjZSkKK3sKKyAgICBHTHNpemVpIHNpemUg
PSBtSW1hZ2VBcnJheVtmYWNlSW5kZXgodGFyZ2V0KV1bbGV2ZWxdLT5nZXRXaWR0aCgpOworCisg
ICAgaWYgKHhvZmZzZXQgKyB3aWR0aCA+IHNpemUgfHwgeW9mZnNldCArIGhlaWdodCA+IHNpemUp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
IH0KKworICAgIHVuc2lnbmVkIGludCBmYWNlaW5kZXggPSBmYWNlSW5kZXgodGFyZ2V0KTsKKwor
ICAgIGlmICghbUltYWdlQXJyYXlbZmFjZWluZGV4XVtsZXZlbF0tPmlzUmVuZGVyYWJsZUZvcm1h
dCgpIHx8ICghbVRleFN0b3JhZ2UgJiYgIWlzU2FtcGxlckNvbXBsZXRlKCkpKQorICAgIHsKKyAg
ICAgICAgbUltYWdlQXJyYXlbZmFjZWluZGV4XVtsZXZlbF0tPmNvcHkoMCwgMCwgeCwgeSwgd2lk
dGgsIGhlaWdodCwgc291cmNlKTsKKyAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKCFtVGV4U3RvcmFnZSB8fCAhbVRleFN0b3Jh
Z2UtPmlzUmVuZGVyVGFyZ2V0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnZlcnRUb1Jl
bmRlclRhcmdldCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1cGRhdGVUZXh0dXJl
KCk7CisKKyAgICAgICAgaWYgKGxldmVsIDwgbGV2ZWxDb3VudCgpKQorICAgICAgICB7CisgICAg
ICAgICAgICBnbDo6UmVjdGFuZ2xlIHNvdXJjZVJlY3Q7CisgICAgICAgICAgICBzb3VyY2VSZWN0
LnggPSB4OworICAgICAgICAgICAgc291cmNlUmVjdC53aWR0aCA9IHdpZHRoOworICAgICAgICAg
ICAgc291cmNlUmVjdC55ID0geTsKKyAgICAgICAgICAgIHNvdXJjZVJlY3QuaGVpZ2h0ID0gaGVp
Z2h0OworCisgICAgICAgICAgICBtUmVuZGVyZXItPmNvcHlJbWFnZShzb3VyY2UsIHNvdXJjZVJl
Y3QsIGdsOjpFeHRyYWN0Rm9ybWF0KG1JbWFnZUFycmF5WzBdWzBdLT5nZXRJbnRlcm5hbEZvcm1h
dCgpKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b2Zmc2V0LCB5b2Zmc2V0
LCBtVGV4U3RvcmFnZSwgdGFyZ2V0LCBsZXZlbCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgVGV4dHVyZUN1YmVNYXA6OnN0b3JhZ2UoR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0xzaXplaSBzaXplKQoreworICAgIGRlbGV0ZSBtVGV4U3RvcmFnZTsKKyAgICBt
VGV4U3RvcmFnZSA9IG5ldyByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlKG1SZW5kZXJl
ciwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgbVVzYWdlLCBmYWxzZSwgc2l6ZSk7CisgICAgbUlt
bXV0YWJsZSA9IHRydWU7CisKKyAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxz
OyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgZmFjZSA9IDA7IGZhY2UgPCA2OyBm
YWNlKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZhY2VdW2xldmVsXS0+
cmVkZWZpbmUobVJlbmRlcmVyLCBpbnRlcm5hbGZvcm1hdCwgc2l6ZSwgc2l6ZSwgdHJ1ZSk7Cisg
ICAgICAgICAgICBzaXplID0gc3RkOjptYXgoMSwgc2l6ZSA+PiAxKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGZvciAoaW50IGxldmVsID0gbGV2ZWxzOyBsZXZlbCA8IElNUExFTUVOVEFUSU9O
X01BWF9URVhUVVJFX0xFVkVMUzsgbGV2ZWwrKykKKyAgICB7CisgICAgICAgIGZvciAoaW50IGZh
Y2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQorICAgICAgICB7CisgICAgICAgICAgICBtSW1hZ2VB
cnJheVtmYWNlXVtsZXZlbF0tPnJlZGVmaW5lKG1SZW5kZXJlciwgR0xfTk9ORSwgMCwgMCwgdHJ1
ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobVRleFN0b3JhZ2UtPmlzTWFuYWdlZCgp
KQorICAgIHsKKyAgICAgICAgaW50IGxldmVscyA9IGxldmVsQ291bnQoKTsKKworICAgICAgICBm
b3IgKGludCBmYWNlID0gMDsgZmFjZSA8IDY7IGZhY2UrKykKKyAgICAgICAgeworICAgICAgICAg
ICAgZm9yIChpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsgbGV2ZWwrKykKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0tPnNldE1hbmFn
ZWRTdXJmYWNlKG1UZXhTdG9yYWdlLCBmYWNlLCBsZXZlbCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OmdlbmVyYXRlTWlwbWFwcygp
Cit7CisgICAgaWYgKCFpc0N1YmVDb21wbGV0ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisgICAgaWYgKCFtUmVuZGVy
ZXItPmdldE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KCkpCisgICAgeworICAgICAgICBpZiAoIWlz
UG93MihtSW1hZ2VBcnJheVswXVswXS0+Z2V0V2lkdGgoKSkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gUHVyZ2UgYXJyYXkgbGV2ZWxzIDEgdGhyb3VnaCBxIGFuZCByZXNldCB0
aGVtIHRvIHJlcHJlc2VudCB0aGUgZ2VuZXJhdGVkIG1pcG1hcCBsZXZlbHMuCisgICAgdW5zaWdu
ZWQgaW50IHEgPSBsb2cyKG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgpKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGludCBmID0gMDsgZiA8IDY7IGYrKykKKyAgICB7CisgICAgICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAxOyBpIDw9IHE7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgcmVk
ZWZpbmVJbWFnZShmLCBpLCBtSW1hZ2VBcnJheVtmXVswXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXgobUltYWdlQXJyYXlbZl1bMF0tPmdl
dFdpZHRoKCkgPj4gaSwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KG1J
bWFnZUFycmF5W2ZdWzBdLT5nZXRXaWR0aCgpID4+IGksIDEpKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmIChtVGV4U3RvcmFnZSAmJiBtVGV4U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQoKSkK
KyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGYgPSAwOyBmIDwgNjsgZisrKQorICAg
ICAgICB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8PSBxOyBpKysp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbVRleFN0b3JhZ2UtPmdlbmVyYXRlTWlw
bWFwKGYsIGkpOworCisgICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbZl1baV0tPm1hcmtDbGVh
bigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaW50IGYgPSAwOyBmIDwgNjsgZisrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8PSBxOyBpKyspCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgbVJlbmRlcmVyLT5nZW5lcmF0ZU1pcG1hcChtSW1hZ2VB
cnJheVtmXVtpXSwgbUltYWdlQXJyYXlbZl1baSAtIDFdKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK30KKworUmVuZGVyYnVmZmVyICpUZXh0dXJlQ3ViZU1hcDo6Z2V0UmVuZGVy
YnVmZmVyKEdMZW51bSB0YXJnZXQpCit7CisgICAgaWYgKCFJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0
KHRhcmdldCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAoUmVuZGVyYnVmZmVyICopTlVMTCk7CisgICAgfQorCisgICAgdW5zaWduZWQgaW50
IGZhY2UgPSBmYWNlSW5kZXgodGFyZ2V0KTsKKworICAgIGlmIChtRmFjZVByb3hpZXNbZmFjZV0g
PT0gTlVMTCkKKyAgICB7CisgICAgICAgIG1GYWNlUHJveGllc1tmYWNlXSA9IG5ldyBSZW5kZXJi
dWZmZXIobVJlbmRlcmVyLCBpZCgpLCBuZXcgUmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXAodGhp
cywgdGFyZ2V0KSk7CisgICAgfQorCisgICAgcmV0dXJuIG1GYWNlUHJveGllc1tmYWNlXTsKK30K
Kworcng6OlJlbmRlclRhcmdldCAqVGV4dHVyZUN1YmVNYXA6OmdldFJlbmRlclRhcmdldChHTGVu
dW0gdGFyZ2V0KQoreworICAgIEFTU0VSVChJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkp
OworCisgICAgLy8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHRleHR1cmUgaXMgY3JlYXRlZAorICAg
IGlmIChnZXRTdG9yYWdlKHRydWUpID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICB9CisKKyAgICB1cGRhdGVUZXh0dXJlKCk7CisgICAgCisgICAgcmV0dXJuIG1UZXhT
dG9yYWdlLT5nZXRSZW5kZXJUYXJnZXQodGFyZ2V0KTsKK30KKworaW50IFRleHR1cmVDdWJlTWFw
OjpsZXZlbENvdW50KCkKK3sKKyAgICByZXR1cm4gbVRleFN0b3JhZ2UgPyBtVGV4U3RvcmFnZS0+
bGV2ZWxDb3VudCgpIC0gZ2V0TG9kT2Zmc2V0KCkgOiAwOworfQorCityeDo6VGV4dHVyZVN0b3Jh
Z2VJbnRlcmZhY2UgKlRleHR1cmVDdWJlTWFwOjpnZXRTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0
KQoreworICAgIGlmICghbVRleFN0b3JhZ2UgfHwgKHJlbmRlclRhcmdldCAmJiAhbVRleFN0b3Jh
Z2UtPmlzUmVuZGVyVGFyZ2V0KCkpKQorICAgIHsKKyAgICAgICAgaWYgKHJlbmRlclRhcmdldCkK
KyAgICAgICAgeworICAgICAgICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBjcmVhdGVUZXh0dXJlKCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbVRleFN0b3JhZ2U7Cit9CisKK30KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9U
ZXh0dXJlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjc1IEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyBUZXh0dXJlLmg6IERlZmluZXMgdGhlIGFic3RyYWN0IGdsOjpUZXh0dXJlIGNsYXNz
IGFuZCBpdHMgY29uY3JldGUgZGVyaXZlZAorLy8gY2xhc3NlcyBUZXh0dXJlMkQgYW5kIFRleHR1
cmVDdWJlTWFwLiBJbXBsZW1lbnRzIEdMIHRleHR1cmUgb2JqZWN0cyBhbmQKKy8vIHJlbGF0ZWQg
ZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMy43IHBhZ2UgNjMuCisK
KyNpZm5kZWYgTElCR0xFU1YyX1RFWFRVUkVfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1RFWFRVUkVf
SF8KKworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2RlZmluZSBHTF9BUElDQUxMCisjaW5jbHVkZSA8
R0xFUzIvZ2wyLmg+CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJjb21t
b24vUmVmQ291bnRPYmplY3QuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvYW5nbGV0eXBlcy5oIgor
CituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBTdXJmYWNlOworfQorCituYW1lc3BhY2UgcngKK3sK
K2NsYXNzIFJlbmRlcmVyOworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U7CitjbGFzcyBU
ZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEOworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VD
dWJlOworY2xhc3MgUmVuZGVyVGFyZ2V0OworY2xhc3MgSW1hZ2U7Cit9CisKK25hbWVzcGFjZSBn
bAoreworY2xhc3MgRnJhbWVidWZmZXI7CitjbGFzcyBSZW5kZXJidWZmZXI7CisKK2VudW0KK3sK
KyAgICAvLyBUaGVzZSBhcmUgdGhlIG1heGltdW1zIHRoZSBpbXBsZW1lbnRhdGlvbiBjYW4gc3Vw
cG9ydAorICAgIC8vIFRoZSBhY3R1YWwgR0wgY2FwcyBhcmUgbGltaXRlZCBieSB0aGUgZGV2aWNl
IGNhcHMKKyAgICAvLyBhbmQgc2hvdWxkIGJlIHF1ZXJpZWQgZnJvbSB0aGUgQ29udGV4dAorICAg
IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX1NJWkUgPSAxNjM4NCwKKyAgICBJTVBMRU1FTlRB
VElPTl9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFID0gMTYzODQsCisKKyAgICBJTVBMRU1FTlRB
VElPTl9NQVhfVEVYVFVSRV9MRVZFTFMgPSAxNSAgIC8vIDErbG9nMiBvZiBNQVhfVEVYVFVSRV9T
SVpFCit9OworCitjbGFzcyBUZXh0dXJlIDogcHVibGljIFJlZkNvdW50T2JqZWN0Cit7CisgIHB1
YmxpYzoKKyAgICBUZXh0dXJlKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIEdMdWludCBpZCk7CisK
KyAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUHJveHlSZWYo
Y29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWxlYXNl
UHJveHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSkgPSAwOworCisgICAgdmlydHVhbCBHTGVu
dW0gZ2V0VGFyZ2V0KCkgY29uc3QgPSAwOworCisgICAgYm9vbCBzZXRNaW5GaWx0ZXIoR0xlbnVt
IGZpbHRlcik7CisgICAgYm9vbCBzZXRNYWdGaWx0ZXIoR0xlbnVtIGZpbHRlcik7CisgICAgYm9v
bCBzZXRXcmFwUyhHTGVudW0gd3JhcCk7CisgICAgYm9vbCBzZXRXcmFwVChHTGVudW0gd3JhcCk7
CisgICAgYm9vbCBzZXRNYXhBbmlzb3Ryb3B5KGZsb2F0IHRleHR1cmVNYXhBbmlzb3Ryb3B5LCBm
bG9hdCBjb250ZXh0TWF4QW5pc290cm9weSk7CisgICAgYm9vbCBzZXRVc2FnZShHTGVudW0gdXNh
Z2UpOworCisgICAgR0xlbnVtIGdldE1pbkZpbHRlcigpIGNvbnN0OworICAgIEdMZW51bSBnZXRN
YWdGaWx0ZXIoKSBjb25zdDsKKyAgICBHTGVudW0gZ2V0V3JhcFMoKSBjb25zdDsKKyAgICBHTGVu
dW0gZ2V0V3JhcFQoKSBjb25zdDsKKyAgICBmbG9hdCBnZXRNYXhBbmlzb3Ryb3B5KCkgY29uc3Q7
CisgICAgaW50IGdldExvZE9mZnNldCgpOworICAgIHZvaWQgZ2V0U2FtcGxlclN0YXRlKFNhbXBs
ZXJTdGF0ZSAqc2FtcGxlcik7CisgICAgR0xlbnVtIGdldFVzYWdlKCkgY29uc3Q7CisgICAgYm9v
bCBpc01pcG1hcEZpbHRlcmVkKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNTYW1wbGVy
Q29tcGxldGUoKSBjb25zdCA9IDA7CisKKyAgICByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2Ug
KmdldE5hdGl2ZVRleHR1cmUoKTsKKyAgICB2aXJ0dWFsIFJlbmRlcmJ1ZmZlciAqZ2V0UmVuZGVy
YnVmZmVyKEdMZW51bSB0YXJnZXQpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1p
cG1hcHMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xp
bnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEZyYW1lYnVmZmVyICpzb3VyY2Up
ID0gMDsKKworICAgIGJvb2wgaGFzRGlydHlQYXJhbWV0ZXJzKCkgY29uc3Q7CisgICAgYm9vbCBo
YXNEaXJ0eUltYWdlcygpIGNvbnN0OworICAgIHZvaWQgcmVzZXREaXJ0eSgpOworICAgIHVuc2ln
bmVkIGludCBnZXRUZXh0dXJlU2VyaWFsKCk7CisgICAgdW5zaWduZWQgaW50IGdldFJlbmRlclRh
cmdldFNlcmlhbChHTGVudW0gdGFyZ2V0KTsKKworICAgIGJvb2wgaXNJbW11dGFibGUoKSBjb25z
dDsKKworICAgIHN0YXRpYyBjb25zdCBHTHVpbnQgSU5DT01QTEVURV9URVhUVVJFX0lEID0gc3Rh
dGljX2Nhc3Q8R0x1aW50PigtMSk7ICAgLy8gRXZlcnkgdGV4dHVyZSB0YWtlcyBhbiBpZCBhdCBj
cmVhdGlvbiB0aW1lLiBUaGUgdmFsdWUgaXMgYXJiaXRyYXJ5IGJlY2F1c2UgaXQgaXMgbmV2ZXIg
cmVnaXN0ZXJlZCB3aXRoIHRoZSByZXNvdXJjZSBtYW5hZ2VyLgorCisgIHByb3RlY3RlZDoKKyAg
ICB2b2lkIHNldEltYWdlKEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxz
LCByeDo6SW1hZ2UgKmltYWdlKTsKKyAgICBib29sIHN1YkltYWdlKEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMs
IHJ4OjpJbWFnZSAqaW1hZ2UpOworICAgIHZvaWQgc2V0Q29tcHJlc3NlZEltYWdlKEdMc2l6ZWkg
aW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMsIHJ4OjpJbWFnZSAqaW1hZ2UpOworICAgIGJv
b2wgc3ViSW1hZ2VDb21wcmVzc2VkKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6
ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzLCByeDo6SW1hZ2UgKmltYWdlKTsKKworICAgIEdMaW50IGNy
ZWF0aW9uTGV2ZWxzKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSBjb25zdDsKKyAgICBH
TGludCBjcmVhdGlvbkxldmVscyhHTHNpemVpIHNpemUpIGNvbnN0OworCisgICAgdmlydHVhbCB2
b2lkIGNyZWF0ZVRleHR1cmUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmUo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb1JlbmRlclRhcmdldCgpID0gMDsKKyAg
ICB2aXJ0dWFsIHJ4OjpSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChHTGVudW0gdGFyZ2V0
KSA9IDA7CisKKyAgICB2aXJ0dWFsIGludCBsZXZlbENvdW50KCkgPSAwOworCisgICAgcng6OlJl
bmRlcmVyICptUmVuZGVyZXI7CisKKyAgICBTYW1wbGVyU3RhdGUgbVNhbXBsZXJTdGF0ZTsKKyAg
ICBHTGVudW0gbVVzYWdlOworCisgICAgYm9vbCBtRGlydHlJbWFnZXM7CisKKyAgICBib29sIG1J
bW11dGFibGU7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4
dHVyZSk7CisKKyAgICB2aXJ0dWFsIHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZSAqZ2V0U3Rv
cmFnZShib29sIHJlbmRlclRhcmdldCkgPSAwOworfTsKKworY2xhc3MgVGV4dHVyZTJEIDogcHVi
bGljIFRleHR1cmUKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmUyRChyeDo6UmVuZGVyZXIgKnJl
bmRlcmVyLCBHTHVpbnQgaWQpOworCisgICAgflRleHR1cmUyRCgpOworCisgICAgdm9pZCBhZGRQ
cm94eVJlZihjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KTsKKyAgICB2b2lkIHJlbGVhc2VQcm94
eShjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KTsKKworICAgIHZpcnR1YWwgR0xlbnVtIGdldFRh
cmdldCgpIGNvbnN0OworCisgICAgR0xzaXplaSBnZXRXaWR0aChHTGludCBsZXZlbCkgY29uc3Q7
CisgICAgR0xzaXplaSBnZXRIZWlnaHQoR0xpbnQgbGV2ZWwpIGNvbnN0OworICAgIEdMZW51bSBn
ZXRJbnRlcm5hbEZvcm1hdChHTGludCBsZXZlbCkgY29uc3Q7CisgICAgR0xlbnVtIGdldEFjdHVh
bEZvcm1hdChHTGludCBsZXZlbCkgY29uc3Q7CisgICAgYm9vbCBpc0NvbXByZXNzZWQoR0xpbnQg
bGV2ZWwpIGNvbnN0OworICAgIGJvb2wgaXNEZXB0aChHTGludCBsZXZlbCkgY29uc3Q7CisKKyAg
ICB2b2lkIHNldEltYWdlKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29u
c3Qgdm9pZCAqcGl4ZWxzKTsKKyAgICB2b2lkIHNldENvbXByZXNzZWRJbWFnZShHTGludCBsZXZl
bCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkg
aW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpOworICAgIHZvaWQgc3ViSW1hZ2UoR0xpbnQg
bGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25t
ZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOworICAgIHZvaWQgc3ViSW1hZ2VDb21wcmVzc2VkKEdM
aW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZv
aWQgKnBpeGVscyk7CisgICAgdm9pZCBjb3B5SW1hZ2UoR0xpbnQgbGV2ZWwsIEdMZW51bSBmb3Jt
YXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFt
ZWJ1ZmZlciAqc291cmNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVN1YkltYWdlKEdMZW51bSB0
YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgRnJhbWVidWZmZXIgKnNv
dXJjZSk7CisgICAgdm9pZCBzdG9yYWdlKEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKworICAgIHZpcnR1YWwgYm9v
bCBpc1NhbXBsZXJDb21wbGV0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBiaW5kVGV4SW1h
Z2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVRleElt
YWdlKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVNaXBtYXBzKCk7CisKKyAgICB2aXJ0
dWFsIFJlbmRlcmJ1ZmZlciAqZ2V0UmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQpOworCisgIHBy
b3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgUmVuZGVyYnVmZmVyVGV4dHVyZTJEOworICAgIHZp
cnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KEdMZW51bSB0YXJnZXQpOwor
ICAgIHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0RGVwdGhTdGVuY2lsKEdMZW51bSB0YXJn
ZXQpOworICAgIHZpcnR1YWwgaW50IGxldmVsQ291bnQoKTsKKworICBwcml2YXRlOgorICAgIERJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUZXh0dXJlMkQpOworCisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVRleHR1cmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZSgpOworICAgIHZp
cnR1YWwgdm9pZCBjb252ZXJ0VG9SZW5kZXJUYXJnZXQoKTsKKyAgICB2aXJ0dWFsIHJ4OjpUZXh0
dXJlU3RvcmFnZUludGVyZmFjZSAqZ2V0U3RvcmFnZShib29sIHJlbmRlclRhcmdldCk7CisKKyAg
ICBib29sIGlzTWlwbWFwQ29tcGxldGUoKSBjb25zdDsKKworICAgIHZvaWQgcmVkZWZpbmVJbWFn
ZShHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KTsKKyAgICB2b2lkIGNvbW1pdFJlY3QoR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKworICAg
IHJ4OjpJbWFnZSAqbUltYWdlQXJyYXlbSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxT
XTsKKworICAgIHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICptVGV4U3RvcmFnZTsKKyAg
ICBlZ2w6OlN1cmZhY2UgKm1TdXJmYWNlOworCisgICAgLy8gQSBzcGVjaWZpYyBpbnRlcm5hbCBy
ZWZlcmVuY2UgY291bnQgaXMga2VwdCBmb3IgY29sb3JidWZmZXIgcHJveHkgcmVmZXJlbmNlcywK
KyAgICAvLyBiZWNhdXNlLCBhcyB0aGUgcmVuZGVyYnVmZmVyIGFjdGluZyBhcyBwcm94eSB3aWxs
IG1haW50YWluIGEgYmluZGluZyBwb2ludGVyCisgICAgLy8gYmFjayB0byB0aGlzIHRleHR1cmUs
IHRoZXJlIHdvdWxkIGJlIGEgY2lyY3VsYXIgcmVmZXJlbmNlIGlmIHdlIHVzZWQgYSBiaW5kaW5n
CisgICAgLy8gcG9pbnRlciBoZXJlLiBUaGlzIHJlZmVyZW5jZSBjb3VudCB3aWxsIGNhdXNlIHRo
ZSBwb2ludGVyIHRvIGJlIHNldCB0byBOVUxMIGlmCisgICAgLy8gdGhlIGNvdW50IGRyb3BzIHRv
IHplcm8sIGJ1dCB3aWxsIG5vdCBjYXVzZSBkZWxldGlvbiBvZiB0aGUgUmVuZGVyYnVmZmVyLgor
ICAgIFJlbmRlcmJ1ZmZlciAqbUNvbG9yYnVmZmVyUHJveHk7CisgICAgdW5zaWduZWQgaW50IG1Q
cm94eVJlZnM7Cit9OworCitjbGFzcyBUZXh0dXJlQ3ViZU1hcCA6IHB1YmxpYyBUZXh0dXJlCit7
CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlQ3ViZU1hcChyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBH
THVpbnQgaWQpOworCisgICAgflRleHR1cmVDdWJlTWFwKCk7CisKKyAgICB2b2lkIGFkZFByb3h5
UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpOworICAgIHZvaWQgcmVsZWFzZVByb3h5KGNv
bnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpOworCisgICAgdmlydHVhbCBHTGVudW0gZ2V0VGFyZ2V0
KCkgY29uc3Q7CisgICAgCisgICAgR0xzaXplaSBnZXRXaWR0aChHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCkgY29uc3Q7CisgICAgR0xzaXplaSBnZXRIZWlnaHQoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwpIGNvbnN0OworICAgIEdMZW51bSBnZXRJbnRlcm5hbEZvcm1hdChHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCkgY29uc3Q7CisgICAgR0xlbnVtIGdldEFjdHVhbEZvcm1hdChHTGVu
dW0gdGFyZ2V0LCBHTGludCBsZXZlbCkgY29uc3Q7CisgICAgYm9vbCBpc0NvbXByZXNzZWQoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpIGNvbnN0OworCisgICAgdm9pZCBzZXRJbWFnZVBvc1go
R0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMp
OworICAgIHZvaWQgc2V0SW1hZ2VOZWdYKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdu
bWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKKyAgICB2b2lkIHNldEltYWdlUG9zWShHTGludCBs
ZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7CisgICAg
dm9pZCBzZXRJbWFnZU5lZ1koR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBj
b25zdCB2b2lkICpwaXhlbHMpOworICAgIHZvaWQgc2V0SW1hZ2VQb3NaKEdMaW50IGxldmVsLCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs
IEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKKyAgICB2b2lkIHNl
dEltYWdlTmVnWihHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZv
aWQgKnBpeGVscyk7CisKKyAgICB2b2lkIHNldENvbXByZXNzZWRJbWFnZShHTGVudW0gZmFjZSwg
R0xpbnQgbGV2ZWwsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKKworICAgIHZvaWQgc3Vi
SW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOworICAg
IHZvaWQgc3ViSW1hZ2VDb21wcmVzc2VkKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwg
R0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscyk7Cisg
ICAgdm9pZCBjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBmb3Jt
YXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFt
ZWJ1ZmZlciAqc291cmNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVN1YkltYWdlKEdMZW51bSB0
YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgRnJhbWVidWZmZXIgKnNv
dXJjZSk7CisgICAgdm9pZCBzdG9yYWdlKEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdMc2l6ZWkgc2l6ZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNTYW1wbGVyQ29tcGxl
dGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcHMoKTsKKworICAg
IHZpcnR1YWwgUmVuZGVyYnVmZmVyICpnZXRSZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdldCk7CisK
KyAgICBzdGF0aWMgdW5zaWduZWQgaW50IGZhY2VJbmRleChHTGVudW0gZmFjZSk7CisKKyAgcHJv
dGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDsKKyAg
ICB2aXJ0dWFsIHJ4OjpSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChHTGVudW0gdGFyZ2V0
KTsKKyAgICB2aXJ0dWFsIGludCBsZXZlbENvdW50KCk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNB
TExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZUN1YmVNYXApOworCisgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZVRleHR1cmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZSgpOworICAg
IHZpcnR1YWwgdm9pZCBjb252ZXJ0VG9SZW5kZXJUYXJnZXQoKTsKKyAgICB2aXJ0dWFsIHJ4OjpU
ZXh0dXJlU3RvcmFnZUludGVyZmFjZSAqZ2V0U3RvcmFnZShib29sIHJlbmRlclRhcmdldCk7CisK
KyAgICBib29sIGlzQ3ViZUNvbXBsZXRlKCkgY29uc3Q7CisgICAgYm9vbCBpc01pcG1hcEN1YmVD
b21wbGV0ZSgpIGNvbnN0OworCisgICAgdm9pZCBzZXRJbWFnZShpbnQgZmFjZUluZGV4LCBHTGlu
dCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7Cisg
ICAgdm9pZCBjb21taXRSZWN0KGludCBmYWNlSW5kZXgsIEdMaW50IGxldmVsLCBHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisgICAg
dm9pZCByZWRlZmluZUltYWdlKGludCBmYWNlSW5kZXgsIEdMaW50IGxldmVsLCBHTGludCBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworCisgICAgcng6Oklt
YWdlICptSW1hZ2VBcnJheVs2XVtJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFNdOwor
CisgICAgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSAqbVRleFN0b3JhZ2U7CisKKyAg
ICAvLyBBIHNwZWNpZmljIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBpcyBrZXB0IGZvciBjb2xv
cmJ1ZmZlciBwcm94eSByZWZlcmVuY2VzLAorICAgIC8vIGJlY2F1c2UsIGFzIHRoZSByZW5kZXJi
dWZmZXIgYWN0aW5nIGFzIHByb3h5IHdpbGwgbWFpbnRhaW4gYSBiaW5kaW5nIHBvaW50ZXIKKyAg
ICAvLyBiYWNrIHRvIHRoaXMgdGV4dHVyZSwgdGhlcmUgd291bGQgYmUgYSBjaXJjdWxhciByZWZl
cmVuY2UgaWYgd2UgdXNlZCBhIGJpbmRpbmcKKyAgICAvLyBwb2ludGVyIGhlcmUuIFRoaXMgcmVm
ZXJlbmNlIGNvdW50IHdpbGwgY2F1c2UgdGhlIHBvaW50ZXIgdG8gYmUgc2V0IHRvIE5VTEwgaWYK
KyAgICAvLyB0aGUgY291bnQgZHJvcHMgdG8gemVybywgYnV0IHdpbGwgbm90IGNhdXNlIGRlbGV0
aW9uIG9mIHRoZSBSZW5kZXJidWZmZXIuCisgICAgUmVuZGVyYnVmZmVyICptRmFjZVByb3hpZXNb
Nl07CisgICAgdW5zaWduZWQgaW50ICptRmFjZVByb3h5UmVmc1s2XTsKK307Cit9CisKKyNlbmRp
ZiAgIC8vIExJQkdMRVNWMl9URVhUVVJFX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL1VuaWZvcm0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVW5pZm9ybS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1VuaWZvcm0uY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQzIEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vDQorLy8gQ29w
eXJpZ2h0IChjKSAyMDEwLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4NCisvLw0KKw0KKyNpbmNsdWRlICJsaWJHTEVTdjIvVW5pZm9ybS5oIg0KKw0KKyNpbmNs
dWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiDQorDQorbmFtZXNwYWNlIGdsDQorew0KKw0KK1Vu
aWZvcm06OlVuaWZvcm0oR0xlbnVtIHR5cGUsIEdMZW51bSBwcmVjaXNpb24sIGNvbnN0IHN0ZDo6
c3RyaW5nICZuYW1lLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplKQ0KKyAgICA6IHR5cGUodHlwZSks
IHByZWNpc2lvbihwcmVjaXNpb24pLCBuYW1lKG5hbWUpLCBhcnJheVNpemUoYXJyYXlTaXplKQ0K
K3sNCisgICAgaW50IGJ5dGVzID0gZ2w6OlVuaWZvcm1JbnRlcm5hbFNpemUodHlwZSkgKiBlbGVt
ZW50Q291bnQoKTsNCisgICAgZGF0YSA9IG5ldyB1bnNpZ25lZCBjaGFyW2J5dGVzXTsNCisgICAg
bWVtc2V0KGRhdGEsIDAsIGJ5dGVzKTsNCisgICAgZGlydHkgPSB0cnVlOw0KKw0KKyAgICBwc1Jl
Z2lzdGVySW5kZXggPSAtMTsNCisgICAgdnNSZWdpc3RlckluZGV4ID0gLTE7DQorICAgIHJlZ2lz
dGVyQ291bnQgPSBWYXJpYWJsZVJvd0NvdW50KHR5cGUpICogZWxlbWVudENvdW50KCk7DQorfQ0K
Kw0KK1VuaWZvcm06On5Vbmlmb3JtKCkNCit7DQorICAgIGRlbGV0ZVtdIGRhdGE7DQorfQ0KKw0K
K2Jvb2wgVW5pZm9ybTo6aXNBcnJheSgpIGNvbnN0DQorew0KKyAgICByZXR1cm4gYXJyYXlTaXpl
ID4gMDsNCit9DQorDQordW5zaWduZWQgaW50IFVuaWZvcm06OmVsZW1lbnRDb3VudCgpIGNvbnN0
DQorew0KKyAgICByZXR1cm4gYXJyYXlTaXplID4gMCA/IGFycmF5U2l6ZSA6IDE7DQorfQ0KKw0K
K30NCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1VuaWZvcm0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Vu
aWZvcm0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvVW5pZm9ybS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisvLw0KKy8vIENv
cHlyaWdodCAoYykgMjAxMC0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuDQorLy8NCisNCisjaWZuZGVmIExJQkdMRVNWMl9VTklGT1JNX0hfDQorI2RlZmluZSBM
SUJHTEVTVjJfVU5JRk9STV9IXw0KKw0KKyNpbmNsdWRlIDxzdHJpbmc+DQorI2luY2x1ZGUgPHZl
Y3Rvcj4NCisNCisjZGVmaW5lIEdMX0FQSUNBTEwNCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+DQor
DQorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIg0KKw0KK25hbWVzcGFjZSBnbA0KK3sNCisNCisv
LyBIZWxwZXIgc3RydWN0IHJlcHJlc2VudGluZyBhIHNpbmdsZSBzaGFkZXIgdW5pZm9ybQ0KK3N0
cnVjdCBVbmlmb3JtDQorew0KKyAgICBVbmlmb3JtKEdMZW51bSB0eXBlLCBHTGVudW0gcHJlY2lz
aW9uLCBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgdW5zaWduZWQgaW50IGFycmF5U2l6ZSk7DQor
DQorICAgIH5Vbmlmb3JtKCk7DQorDQorICAgIGJvb2wgaXNBcnJheSgpIGNvbnN0Ow0KKyAgICB1
bnNpZ25lZCBpbnQgZWxlbWVudENvdW50KCkgY29uc3Q7DQorDQorICAgIGNvbnN0IEdMZW51bSB0
eXBlOw0KKyAgICBjb25zdCBHTGVudW0gcHJlY2lzaW9uOw0KKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBuYW1lOw0KKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplOw0KKw0KKyAgICB1bnNp
Z25lZCBjaGFyICpkYXRhOw0KKyAgICBib29sIGRpcnR5Ow0KKw0KKyAgICBpbnQgcHNSZWdpc3Rl
ckluZGV4Ow0KKyAgICBpbnQgdnNSZWdpc3RlckluZGV4Ow0KKyAgICB1bnNpZ25lZCBpbnQgcmVn
aXN0ZXJDb3VudDsNCit9Ow0KKw0KK3R5cGVkZWYgc3RkOjp2ZWN0b3I8VW5pZm9ybSo+IFVuaWZv
cm1BcnJheTsNCisNCit9DQorDQorI2VuZGlmICAgLy8gTElCR0xFU1YyX1VOSUZPUk1fSF8NCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2FuZ2xldHlwZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2FuZ2xl
dHlwZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvYW5nbGV0eXBlcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyOSBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gYW5nbGV0eXBlcy5oIDogRGVmaW5lcyBhIHZhcmlldHkgb2Ygc3Ry
dWN0dXJlcyBhbmQgZW51bSB0eXBlcyB0aGF0IGFyZSB1c2VkIHRocm91Z2hvdXQgbGliR0xFU3Yy
CisKKyNpZm5kZWYgTElCR0xFU1YyX0FOR0xFVFlQRVNfSF8KKyNkZWZpbmUgTElCR0xFU1YyX0FO
R0xFVFlQRVNfSF8KKworbmFtZXNwYWNlIGdsCit7CisKK2VudW0gVGV4dHVyZVR5cGUKK3sKKyAg
ICBURVhUVVJFXzJELAorICAgIFRFWFRVUkVfQ1VCRSwKKworICAgIFRFWFRVUkVfVFlQRV9DT1VO
VCwKKyAgICBURVhUVVJFX1VOS05PV04KK307CisKK2VudW0gU2FtcGxlclR5cGUKK3sKKyAgICBT
QU1QTEVSX1BJWEVMLAorICAgIFNBTVBMRVJfVkVSVEVYCit9OworCitzdHJ1Y3QgQ29sb3IKK3sK
KyAgICBmbG9hdCByZWQ7CisgICAgZmxvYXQgZ3JlZW47CisgICAgZmxvYXQgYmx1ZTsKKyAgICBm
bG9hdCBhbHBoYTsKK307CisKK3N0cnVjdCBSZWN0YW5nbGUKK3sKKyAgICBpbnQgeDsKKyAgICBp
bnQgeTsKKyAgICBpbnQgd2lkdGg7CisgICAgaW50IGhlaWdodDsKK307CisKK3N0cnVjdCBSYXN0
ZXJpemVyU3RhdGUKK3sKKyAgICBib29sIGN1bGxGYWNlOworICAgIEdMZW51bSBjdWxsTW9kZTsK
KyAgICBHTGVudW0gZnJvbnRGYWNlOworCisgICAgYm9vbCBwb2x5Z29uT2Zmc2V0RmlsbDsKKyAg
ICBHTGZsb2F0IHBvbHlnb25PZmZzZXRGYWN0b3I7CisgICAgR0xmbG9hdCBwb2x5Z29uT2Zmc2V0
VW5pdHM7CisKKyAgICBib29sIHBvaW50RHJhd01vZGU7CisgICAgYm9vbCBtdWx0aVNhbXBsZTsK
K307CisKK3N0cnVjdCBCbGVuZFN0YXRlCit7CisgICAgYm9vbCBibGVuZDsKKyAgICBHTGVudW0g
c291cmNlQmxlbmRSR0I7CisgICAgR0xlbnVtIGRlc3RCbGVuZFJHQjsKKyAgICBHTGVudW0gc291
cmNlQmxlbmRBbHBoYTsKKyAgICBHTGVudW0gZGVzdEJsZW5kQWxwaGE7CisgICAgR0xlbnVtIGJs
ZW5kRXF1YXRpb25SR0I7CisgICAgR0xlbnVtIGJsZW5kRXF1YXRpb25BbHBoYTsKKworICAgIGJv
b2wgY29sb3JNYXNrUmVkOworICAgIGJvb2wgY29sb3JNYXNrR3JlZW47CisgICAgYm9vbCBjb2xv
ck1hc2tCbHVlOworICAgIGJvb2wgY29sb3JNYXNrQWxwaGE7CisKKyAgICBib29sIHNhbXBsZUFs
cGhhVG9Db3ZlcmFnZTsKKworICAgIGJvb2wgZGl0aGVyOworfTsKKworc3RydWN0IERlcHRoU3Rl
bmNpbFN0YXRlCit7CisgICAgYm9vbCBkZXB0aFRlc3Q7CisgICAgR0xlbnVtIGRlcHRoRnVuYzsK
KyAgICBib29sIGRlcHRoTWFzazsKKworICAgIGJvb2wgc3RlbmNpbFRlc3Q7CisgICAgR0xlbnVt
IHN0ZW5jaWxGdW5jOworICAgIEdMdWludCBzdGVuY2lsTWFzazsKKyAgICBHTGVudW0gc3RlbmNp
bEZhaWw7CisgICAgR0xlbnVtIHN0ZW5jaWxQYXNzRGVwdGhGYWlsOworICAgIEdMZW51bSBzdGVu
Y2lsUGFzc0RlcHRoUGFzczsKKyAgICBHTHVpbnQgc3RlbmNpbFdyaXRlbWFzazsKKyAgICBHTGVu
dW0gc3RlbmNpbEJhY2tGdW5jOworICAgIEdMdWludCBzdGVuY2lsQmFja01hc2s7CisgICAgR0xl
bnVtIHN0ZW5jaWxCYWNrRmFpbDsKKyAgICBHTGVudW0gc3RlbmNpbEJhY2tQYXNzRGVwdGhGYWls
OworICAgIEdMZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3M7CisgICAgR0x1aW50IHN0ZW5j
aWxCYWNrV3JpdGVtYXNrOworfTsKKworc3RydWN0IFNhbXBsZXJTdGF0ZQoreworICAgIEdMZW51
bSBtaW5GaWx0ZXI7CisgICAgR0xlbnVtIG1hZ0ZpbHRlcjsKKyAgICBHTGVudW0gd3JhcFM7Cisg
ICAgR0xlbnVtIHdyYXBUOworICAgIGZsb2F0IG1heEFuaXNvdHJvcHk7CisgICAgaW50IGxvZE9m
ZnNldDsKK307CisKK3N0cnVjdCBDbGVhclBhcmFtZXRlcnMKK3sKKyAgICBHTGJpdGZpZWxkIG1h
c2s7CisKKyAgICBDb2xvciBjb2xvckNsZWFyVmFsdWU7CisgICAgYm9vbCBjb2xvck1hc2tSZWQ7
CisgICAgYm9vbCBjb2xvck1hc2tHcmVlbjsKKyAgICBib29sIGNvbG9yTWFza0JsdWU7CisgICAg
Ym9vbCBjb2xvck1hc2tBbHBoYTsKKworICAgIGZsb2F0IGRlcHRoQ2xlYXJWYWx1ZTsKKworICAg
IEdMaW50IHN0ZW5jaWxDbGVhclZhbHVlOworICAgIEdMdWludCBzdGVuY2lsV3JpdGVNYXNrOwor
fTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX0FOR0xFVFlQRVNfSF8KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvY29uc3RhbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9jb25zdGFudHMuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvY29uc3Rh
bnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBD
b250YW50cy5oOiBEZWZpbmVzIHNvbWUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgYW5kIGdsIGNv
bnN0YW50cworCisjaWZuZGVmIExJQkdMRVNWMl9DT05TVEFOVFNfSF8KKyNkZWZpbmUgTElCR0xF
U1YyX0NPTlNUQU5UU19IXworCituYW1lc3BhY2UgZ2wKK3sKKworZW51bQoreworICAgIE1BWF9W
RVJURVhfQVRUUklCUyA9IDE2LAorICAgIE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTID0gMTYsCisK
KyAgICAvLyBJbXBsZW1lbnRhdGlvbiB1cHBlciBsaW1pdHMsIHJlYWwgbWF4aW11bXMgZGVwZW5k
IG9uIHRoZSBoYXJkd2FyZQorICAgIElNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9J
TUFHRV9VTklUUyA9IDE2LAorICAgIElNUExFTUVOVEFUSU9OX01BWF9DT01CSU5FRF9URVhUVVJF
X0lNQUdFX1VOSVRTID0gTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMgKyBJTVBMRU1FTlRBVElPTl9N
QVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICAgIAorCisgICAgSU1QTEVNRU5UQVRJT05f
TUFYX1ZBUllJTkdfVkVDVE9SUyA9IDMyLAorICAgIElNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JV
RkZFUlMgPSA4Cit9OworCitjb25zdCBmbG9hdCBBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VfTUlO
ID0gMS4wZjsKK2NvbnN0IGZsb2F0IEFMSUFTRURfTElORV9XSURUSF9SQU5HRV9NQVggPSAxLjBm
OworY29uc3QgZmxvYXQgQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFX01JTiA9IDEuMGY7CisKK30K
KworI2VuZGlmIC8vIExJQkdMRVNWMl9DT05TVEFOVFNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzEwNiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVk
LmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBsaWJHTEVTdjIuY3BwOiBJbXBsZW1lbnRzIHRo
ZSBleHBvcnRlZCBPcGVuR0wgRVMgMi4wIGZ1bmN0aW9ucy4KKworI2luY2x1ZGUgImNvbW1vbi92
ZXJzaW9uLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvQnVmZmVyLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL0ZlbmNlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0ZyYW1lYnVmZmVyLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9Qcm9ncmFtLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvVGV4dHVyZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9RdWVyeS5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9Db250ZXh0LmgiCisKK2Jvb2wgdmFsaWRJbWFnZVNpemUoR0xp
bnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIGlmIChsZXZl
bCA8IDAgfHwgd2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgaWYgKGdsOjpnZXRDb250ZXh0KCkgJiYgZ2w6OmdldENvbnRl
eHQoKS0+c3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlKCkpCisgICAgeworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBpZiAobGV2ZWwgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIGlmIChnbDo6aXNQb3cyKHdpZHRoKSAmJiBnbDo6aXNQb3cy
KGhlaWdodCkpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKKy8vIFZlcmlmeSB0aGF0IGZvcm1hdC90eXBlIGFyZSBvbmUgb2YgdGhl
IGNvbWJpbmF0aW9ucyBmcm9tIHRhYmxlIDMuNC4KK2Jvb2wgY2hlY2tUZXh0dXJlRm9ybWF0VHlw
ZShHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSkKK3sKKyAgICAvLyB2YWxpZGF0ZSA8Zm9ybWF0
PiBieSBpdHNlbGYgKHVzZWQgYXMgc2Vjb25kYXJ5IGtleSBiZWxvdykKKyAgICBzd2l0Y2ggKGZv
cm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICBjYXNlIEdMX0JHUkFfRVhU
OgorICAgICAgY2FzZSBHTF9SR0I6CisgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0U6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKKyAgICAgIGNhc2Ug
R0xfREVQVEhfQ09NUE9ORU5UOgorICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKKyAg
ICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfRU5VTSwgZmFsc2UpOworICAgIH0KKworICAgIC8vIGludmFsaWQgPHR5cGU+IC0+
IHNldHMgSU5WQUxJRF9FTlVNCisgICAgLy8gaW52YWxpZCA8Zm9ybWF0Pis8dHlwZT4gY29tYmlu
YXRpb24gLT4gc2V0cyBJTlZBTElEX09QRVJBVElPTgorICAgIHN3aXRjaCAodHlwZSkKKyAgICB7
CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgIHN3aXRjaCAoZm9ybWF0KQor
ICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgICAgIGNhc2UgR0xfQkdS
QV9FWFQ6CisgICAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgY2FzZSBHTF9BTFBIQToK
KyAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5D
RV9BTFBIQToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7
CisgICAgICAgIH0KKworICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgIGNhc2UgR0xfSEFMRl9G
TE9BVF9PRVM6CisgICAgICAgIHN3aXRjaCAoZm9ybWF0KQorICAgICAgICB7CisgICAgICAgICAg
Y2FzZSBHTF9SR0JBOgorICAgICAgICAgIGNhc2UgR0xfUkdCOgorICAgICAgICAgIGNhc2UgR0xf
QUxQSEE6CisgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6CisgICAgICAgICAgY2FzZSBHTF9M
VU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
ZmFsc2UpOworICAgICAgICB9CisKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRf
NDoKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMToKKyAgICAgICAgc3dpdGNo
IChmb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgZmFsc2UpOworICAgICAgICB9CisKKyAgICAg
IGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82XzU6CisgICAgICAgIHN3aXRjaCAoZm9ybWF0KQor
ICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgZmFsc2UpOworICAgICAgICB9CisKKyAgICAgIGNhc2UgR0xfVU5T
SUdORURfU0hPUlQ6CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgc3dpdGNo
IChmb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDoK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgICAg
IH0KKworICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMjRfOF9PRVM6CisgICAgICAgIHN3aXRj
aCAoZm9ybWF0KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09F
UzoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAg
ICAgIH0KKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX0VOVU0sIGZhbHNlKTsKKyAgICB9Cit9CisKK2Jvb2wgdmFsaWRhdGVTdWJJbWFnZVBhcmFt
czJEKGJvb2wgY29tcHJlc3NlZCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBH
TGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJlKQoreworICAgIGlmICghdGV4dHVy
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
IGZhbHNlKTsKKyAgICB9CisKKyAgICBpZiAoY29tcHJlc3NlZCAhPSB0ZXh0dXJlLT5pc0NvbXBy
ZXNzZWQobGV2ZWwpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgZmFsc2UpOworICAgIH0KKworICAgIGlmIChmb3JtYXQgIT0gR0xfTk9ORSkK
KyAgICB7CisgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9IGdsOjpDb252ZXJ0U2l6ZWRJ
bnRlcm5hbEZvcm1hdChmb3JtYXQsIHR5cGUpOworICAgICAgICBpZiAoaW50ZXJuYWxmb3JtYXQg
IT0gdGV4dHVyZS0+Z2V0SW50ZXJuYWxGb3JtYXQobGV2ZWwpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoY29tcHJlc3NlZCkKKyAgICB7CisgICAgICAgIGlmICgo
d2lkdGggJSA0ICE9IDAgJiYgd2lkdGggIT0gdGV4dHVyZS0+Z2V0V2lkdGgoMCkpIHx8CisgICAg
ICAgICAgICAoaGVpZ2h0ICUgNCAhPSAwICYmIGhlaWdodCAhPSB0ZXh0dXJlLT5nZXRIZWlnaHQo
MCkpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoeG9mZnNldCAr
IHdpZHRoID4gdGV4dHVyZS0+Z2V0V2lkdGgobGV2ZWwpIHx8CisgICAgICAgIHlvZmZzZXQgKyBo
ZWlnaHQgPiB0ZXh0dXJlLT5nZXRIZWlnaHQobGV2ZWwpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgdmFsaWRhdGVTdWJJbWFnZVBhcmFtc0N1YmUoYm9vbCBjb21wcmVz
c2VkLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZUN1YmVNYXAgKnRleHR1cmUpCit7CisgICAgaWYg
KCF0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgZmFsc2UpOworICAgIH0KKworICAgIGlmIChjb21wcmVzc2VkICE9IHRleHR1cmUt
PmlzQ29tcHJlc3NlZCh0YXJnZXQsIGxldmVsKSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGZhbHNlKTsKKyAgICB9CisKKyAgICBpZiAoZm9y
bWF0ICE9IEdMX05PTkUpCisgICAgeworICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSBn
bDo6Q29udmVydFNpemVkSW50ZXJuYWxGb3JtYXQoZm9ybWF0LCB0eXBlKTsKKyAgICAgICAgaWYg
KGludGVybmFsZm9ybWF0ICE9IHRleHR1cmUtPmdldEludGVybmFsRm9ybWF0KHRhcmdldCwgbGV2
ZWwpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY29tcHJlc3Nl
ZCkKKyAgICB7CisgICAgICAgIGlmICgod2lkdGggJSA0ICE9IDAgJiYgd2lkdGggIT0gdGV4dHVy
ZS0+Z2V0V2lkdGgodGFyZ2V0LCAwKSkgfHwKKyAgICAgICAgICAgIChoZWlnaHQgJSA0ICE9IDAg
JiYgaGVpZ2h0ICE9IHRleHR1cmUtPmdldEhlaWdodCh0YXJnZXQsIDApKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgZmFsc2Up
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHhvZmZzZXQgKyB3aWR0aCA+IHRleHR1cmUt
PmdldFdpZHRoKHRhcmdldCwgbGV2ZWwpIHx8CisgICAgICAgIHlvZmZzZXQgKyBoZWlnaHQgPiB0
ZXh0dXJlLT5nZXRIZWlnaHQodGFyZ2V0LCBsZXZlbCkpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGZhbHNlKTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworLy8gY2hlY2sgZm9yIGNvbWJpbmF0aW9ucyBvZiBmb3JtYXQgYW5kIHR5cGUg
dGhhdCBhcmUgdmFsaWQgZm9yIFJlYWRQaXhlbHMKK2Jvb2wgdmFsaWRSZWFkRm9ybWF0VHlwZShH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7
CisgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgewor
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAgICAgICBzd2l0Y2ggKHR5
cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JFVl9FWFQ6CisgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFQ6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZXh0ZXJuICJDIgoreworCit2b2lkIF9fc3Rk
Y2FsbCBnbEFjdGl2ZVRleHR1cmUoR0xlbnVtIHRleHR1cmUpCit7CisgICAgRVZFTlQoIihHTGVu
dW0gdGV4dHVyZSA9IDB4JVgpIiwgdGV4dHVyZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAg
ICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlIDwgR0xf
VEVYVFVSRTAgfHwgdGV4dHVyZSA+IEdMX1RFWFRVUkUwICsgY29udGV4dC0+Z2V0TWF4aW11bUNv
bWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKSAtIDEpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjb250ZXh0LT5zZXRBY3RpdmVTYW1wbGVyKHRleHR1cmUgLSBHTF9URVhU
VVJFMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9
CisKK3ZvaWQgX19zdGRjYWxsIGdsQXR0YWNoU2hhZGVyKEdMdWludCBwcm9ncmFtLCBHTHVpbnQg
c2hhZGVyKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0x1aW50IHNoYWRl
ciA9ICVkKSIsIHByb2dyYW0sIHNoYWRlcik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFt
T2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgICAgIGdsOjpT
aGFkZXIgKnNoYWRlck9iamVjdCA9IGNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpOworCisgICAg
ICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmdldFNoYWRlcihwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFM
VUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KCFzaGFkZXJPYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmdldFByb2dyYW0oc2hhZGVyKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2Jq
ZWN0LT5hdHRhY2hTaGFkZXIoc2hhZGVyT2JqZWN0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAg
eworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30K
Kwordm9pZCBfX3N0ZGNhbGwgZ2xCZWdpblF1ZXJ5RVhUKEdMZW51bSB0YXJnZXQsIEdMdWludCBp
ZCkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHVpbnQgJWQpIiwgdGFy
Z2V0LCBpZCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAg
ICAgICB7CisgICAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhUOiAKKyAgICAg
ICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhUOgorICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OiAKKyAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlk
ID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgY29udGV4dC0+YmVnaW5RdWVyeSh0YXJnZXQsIGlkKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0
ZGNhbGwgZ2xCaW5kQXR0cmliTG9jYXRpb24oR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwg
Y29uc3QgR0xjaGFyKiBuYW1lKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwg
R0x1aW50IGluZGV4ID0gJWQsIGNvbnN0IEdMY2hhciogbmFtZSA9IDB4JTAuOHApIiwgcHJvZ3Jh
bSwgaW5kZXgsIG5hbWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoaW5kZXggPj0g
Z2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNv
bnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0
ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9n
cmFtT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5n
ZXRTaGFkZXIocHJvZ3JhbSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzdHJuY21wKG5hbWUsICJn
bF8iLCAzKSA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBwcm9ncmFtT2JqZWN0LT5iaW5kQXR0cmlidXRlTG9jYXRpb24oaW5kZXgsIG5hbWUpOworICAg
ICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9f
c3RkY2FsbCBnbEJpbmRCdWZmZXIoR0xlbnVtIHRhcmdldCwgR0x1aW50IGJ1ZmZlcikKK3sKKyAg
ICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHVpbnQgYnVmZmVyID0gJWQpIiwgdGFy
Z2V0LCBidWZmZXIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVI6CisgICAgICAgICAgICAgICAgY29udGV4
dC0+YmluZEFycmF5QnVmZmVyKGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgICAg
IGNvbnRleHQtPmJpbmRFbGVtZW50QXJyYXlCdWZmZXIoYnVmZmVyKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBn
bEJpbmRGcmFtZWJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgZnJhbWVidWZmZXIpCit7Cisg
ICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0x1aW50IGZyYW1lYnVmZmVyID0gJWQp
IiwgdGFyZ2V0LCBmcmFtZWJ1ZmZlcik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmICh0
YXJnZXQgIT0gR0xfRlJBTUVCVUZGRVIgJiYgdGFyZ2V0ICE9IEdMX0RSQVdfRlJBTUVCVUZGRVJf
QU5HTEUgJiYgdGFyZ2V0ICE9IEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
fQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0
YXJnZXQgPT0gR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSB8fCB0YXJnZXQgPT0gR0xfRlJBTUVC
VUZGRVIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+YmluZFJlYWRG
cmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSB8fCB0YXJn
ZXQgPT0gR0xfRlJBTUVCVUZGRVIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+YmluZERyYXdGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsQmluZFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcmVuZGVy
YnVmZmVyKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMdWludCByZW5k
ZXJidWZmZXIgPSAlZCkiLCB0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CisKKyAgICB0cnkKKyAgICB7
CisgICAgICAgIGlmICh0YXJnZXQgIT0gR0xfUkVOREVSQlVGRkVSKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKwor
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwor
CisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5i
aW5kUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQmluZFRleHR1cmUo
R0xlbnVtIHRhcmdldCwgR0x1aW50IHRleHR1cmUpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFy
Z2V0ID0gMHglWCwgR0x1aW50IHRleHR1cmUgPSAlZCkiLCB0YXJnZXQsIHRleHR1cmUpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZU9iamVjdCA9IGNvbnRleHQtPmdldFRleHR1cmUodGV4
dHVyZSk7CisKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlT2JqZWN0ICYmIHRleHR1cmVPYmplY3Qt
PmdldFRhcmdldCgpICE9IHRhcmdldCAmJiB0ZXh0dXJlICE9IDApCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+YmluZFRleHR1cmUyRCh0ZXh0dXJlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUDoKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5iaW5kVGV4dHVyZUN1YmVNYXAodGV4dHVyZSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xCbGVu
ZENvbG9yKEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xh
bXBmIGFscGhhKQoreworICAgIEVWRU5UKCIoR0xjbGFtcGYgcmVkID0gJWYsIEdMY2xhbXBmIGdy
ZWVuID0gJWYsIEdMY2xhbXBmIGJsdWUgPSAlZiwgR0xjbGFtcGYgYWxwaGEgPSAlZikiLAorICAg
ICAgICAgIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgZ2w6OkNvbnRleHQqIGNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+c2V0Qmxl
bmRDb2xvcihnbDo6Y2xhbXAwMShyZWQpLCBnbDo6Y2xhbXAwMShncmVlbiksIGdsOjpjbGFtcDAx
KGJsdWUpLCBnbDo6Y2xhbXAwMShhbHBoYSkpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEJsZW5kRXF1YXRpb24o
R0xlbnVtIG1vZGUpCit7CisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZSwgbW9kZSk7
Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKEdMZW51bSBtb2Rl
UkdCLCBHTGVudW0gbW9kZUFscGhhKQoreworICAgIEVWRU5UKCIoR0xlbnVtIG1vZGVSR0IgPSAw
eCVYLCBHTGVudW0gbW9kZUFscGhhID0gMHglWCkiLCBtb2RlUkdCLCBtb2RlQWxwaGEpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKG1vZGVSR0IpCisgICAgICAgIHsKKyAgICAg
ICAgICBjYXNlIEdMX0ZVTkNfQUREOgorICAgICAgICAgIGNhc2UgR0xfRlVOQ19TVUJUUkFDVDoK
KyAgICAgICAgICBjYXNlIEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVDoKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKG1vZGVBbHBoYSkK
KyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfRlVOQ19BREQ6CisgICAgICAgICAgY2FzZSBH
TF9GVU5DX1NVQlRSQUNUOgorICAgICAgICAgIGNhc2UgR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNU
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldEJsZW5kRXF1
YXRpb24obW9kZVJHQiwgbW9kZUFscGhhKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xCbGVuZEZ1bmMoR0xlbnVt
IHNmYWN0b3IsIEdMZW51bSBkZmFjdG9yKQoreworICAgIGdsQmxlbmRGdW5jU2VwYXJhdGUoc2Zh
Y3RvciwgZGZhY3Rvciwgc2ZhY3RvciwgZGZhY3Rvcik7Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
QmxlbmRGdW5jU2VwYXJhdGUoR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNy
Y0FscGhhLCBHTGVudW0gZHN0QWxwaGEpCit7CisgICAgRVZFTlQoIihHTGVudW0gc3JjUkdCID0g
MHglWCwgR0xlbnVtIGRzdFJHQiA9IDB4JVgsIEdMZW51bSBzcmNBbHBoYSA9IDB4JVgsIEdMZW51
bSBkc3RBbHBoYSA9IDB4JVgpIiwKKyAgICAgICAgICBzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEs
IGRzdEFscGhhKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgc3dpdGNoIChzcmNSR0IpCisg
ICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1pFUk86CisgICAgICAgICAgY2FzZSBHTF9PTkU6
CisgICAgICAgICAgY2FzZSBHTF9TUkNfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlO
VVNfU1JDX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfRFNUX0NPTE9SOgorICAgICAgICAgIGNh
c2UgR0xfT05FX01JTlVTX0RTVF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQToK
KyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQUxQSEE6CisgICAgICAgICAgY2FzZSBH
TF9EU1RfQUxQSEE6CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNUX0FMUEhBOgorICAg
ICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlO
VVNfQ09OU1RBTlRfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9BTFBIQToKKyAg
ICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQToKKyAgICAgICAgICBjYXNl
IEdMX1NSQ19BTFBIQV9TQVRVUkFURToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7Cisg
ICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKGRzdFJHQikKKyAgICAgICAgeworICAgICAgICAg
IGNhc2UgR0xfWkVSTzoKKyAgICAgICAgICBjYXNlIEdMX09ORToKKyAgICAgICAgICBjYXNlIEdM
X1NSQ19DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQ09MT1I6CisgICAg
ICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNU
X0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xf
T05FX01JTlVTX1NSQ19BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX0RTVF9BTFBIQToKKyAgICAg
ICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQUxQSEE6CisgICAgICAgICAgY2FzZSBHTF9DT05T
VEFOVF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUjoK
KyAgICAgICAgICBjYXNlIEdMX0NPTlNUQU5UX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfT05F
X01JTlVTX0NPTlNUQU5UX0FMUEhBOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoc3JjQWxwaGEpCisgICAgICAgIHsKKyAgICAgICAg
ICBjYXNlIEdMX1pFUk86CisgICAgICAgICAgY2FzZSBHTF9PTkU6CisgICAgICAgICAgY2FzZSBH
TF9TUkNfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0NPTE9SOgorICAg
ICAgICAgIGNhc2UgR0xfRFNUX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RT
VF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQToKKyAgICAgICAgICBjYXNlIEdM
X09ORV9NSU5VU19TUkNfQUxQSEE6CisgICAgICAgICAgY2FzZSBHTF9EU1RfQUxQSEE6CisgICAg
ICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNUX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfQ09O
U1RBTlRfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6
CisgICAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX09O
RV9NSU5VU19DT05TVEFOVF9BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQV9TQVRV
UkFURToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAg
ICBzd2l0Y2ggKGRzdEFscGhhKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9aRVJPOgor
ICAgICAgICAgIGNhc2UgR0xfT05FOgorICAgICAgICAgIGNhc2UgR0xfU1JDX0NPTE9SOgorICAg
ICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX0RT
VF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQ09MT1I6CisgICAgICAg
ICAgY2FzZSBHTF9TUkNfQUxQSEE6CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0FM
UEhBOgorICAgICAgICAgIGNhc2UgR0xfRFNUX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfT05F
X01JTlVTX0RTVF9BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX0NPTlNUQU5UX0NPTE9SOgorICAg
ICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOgorICAgICAgICAgIGNhc2Ug
R0xfQ09OU1RBTlRfQUxQSEE6CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRf
QUxQSEE6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAg
ICAgYm9vbCBjb25zdGFudENvbG9yVXNlZCA9IChzcmNSR0IgPT0gR0xfQ09OU1RBTlRfQ09MT1Ig
fHwgc3JjUkdCID09IEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUiB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRzdFJHQiA9PSBHTF9DT05TVEFOVF9DT0xPUiB8fCBkc3RS
R0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SKTsKKworICAgICAgICBib29sIGNvbnN0
YW50QWxwaGFVc2VkID0gKHNyY1JHQiA9PSBHTF9DT05TVEFOVF9BTFBIQSB8fCBzcmNSR0IgPT0g
R0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZHN0UkdCID09IEdMX0NPTlNUQU5UX0FMUEhBIHx8IGRzdFJHQiA9PSBHTF9PTkVf
TUlOVVNfQ09OU1RBTlRfQUxQSEEpOworCisgICAgICAgIGlmIChjb25zdGFudENvbG9yVXNlZCAm
JiBjb25zdGFudEFscGhhVXNlZCkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJTaW11bHRh
bmVvdXMgdXNlIG9mIEdMX0NPTlNUQU5UX0FMUEhBL0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBI
QSBhbmQgR0xfQ09OU1RBTlRfQ09MT1IvR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SIGludmFs
aWQgdW5kZXIgV2ViR0wiKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgY29udGV4dC0+c2V0QmxlbmRGYWN0b3JzKHNyY1JHQiwgZHN0UkdC
LCBzcmNBbHBoYSwgZHN0QWxwaGEpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEJ1ZmZlckRhdGEoR0xlbnVtIHRh
cmdldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZvaWQqIGRhdGEsIEdMZW51bSB1c2FnZSkK
K3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHNpemVpcHRyIHNpemUgPSAl
ZCwgY29uc3QgR0x2b2lkKiBkYXRhID0gMHglMC44cCwgR0xlbnVtIHVzYWdlID0gJWQpIiwKKyAg
ICAgICAgICB0YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgaWYgKHNpemUgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoICh1c2Fn
ZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfU1RSRUFNX0RSQVc6CisgICAgICAgICAg
Y2FzZSBHTF9TVEFUSUNfRFJBVzoKKyAgICAgICAgICBjYXNlIEdMX0RZTkFNSUNfRFJBVzoKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6QnVmZmVyICpidWZmZXI7CisKKyAg
ICAgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBj
YXNlIEdMX0FSUkFZX0JVRkZFUjoKKyAgICAgICAgICAgICAgICBidWZmZXIgPSBjb250ZXh0LT5n
ZXRBcnJheUJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGNv
bnRleHQtPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFidWZm
ZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJ1ZmZlci0+
YnVmZmVyRGF0YShkYXRhLCBzaXplLCB1c2FnZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQnVmZmVyU3ViRGF0
YShHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qg
R0x2b2lkKiBkYXRhKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50
cHRyIG9mZnNldCA9ICVkLCBHTHNpemVpcHRyIHNpemUgPSAlZCwgY29uc3QgR0x2b2lkKiBkYXRh
ID0gMHglMC44cCkiLAorICAgICAgICAgIHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHNpemUgPCAwIHx8IG9mZnNldCA8IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBnbDo6QnVmZmVyICpidWZmZXI7CisKKyAgICAgICAgICAgIHN3aXRj
aCAodGFyZ2V0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0FSUkFZX0JV
RkZFUjoKKyAgICAgICAgICAgICAgICBidWZmZXIgPSBjb250ZXh0LT5nZXRBcnJheUJ1ZmZlcigp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0VMRU1FTlRf
QVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQtPmdldEVsZW1l
bnRBcnJheUJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVN
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgoc2l6ZV90KXNpemUgKyBvZmZz
ZXQgPiBidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBidWZmZXItPmJ1ZmZlclN1YkRhdGEoZGF0YSwgc2l6ZSwgb2Zmc2V0KTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKworR0xlbnVtIF9fc3Rk
Y2FsbCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xlbnVtIHRhcmdldCkKK3sKKyAgICBFVkVO
VCgiKEdMZW51bSB0YXJnZXQgPSAweCVYKSIsIHRhcmdldCk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGlmICh0YXJnZXQgIT0gR0xfRlJBTUVCVUZGRVIgJiYgdGFyZ2V0ICE9IEdMX0RSQVdf
RlJBTUVCVUZGRVJfQU5HTEUgJiYgdGFyZ2V0ICE9IEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVN
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBOVUxMOworICAgICAgICAg
ICAgaWYgKHRhcmdldCA9PSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0UmVhZEZyYW1lYnVm
ZmVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXREcmF3RnJhbWVidWZmZXIo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGZyYW1lYnVmZmVyLT5jb21w
bGV0ZW5lc3MoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIDApOwor
ICAgIH0KKworICAgIHJldHVybiAwOworfQorCit2b2lkIF9fc3RkY2FsbCBnbENsZWFyKEdMYml0
ZmllbGQgbWFzaykKK3sKKyAgICBFVkVOVCgiKEdMYml0ZmllbGQgbWFzayA9ICVYKSIsIG1hc2sp
OworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb250ZXh0LT5jbGVhcihtYXNrKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xDbGVhckNvbG9y
KEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFs
cGhhKQoreworICAgIEVWRU5UKCIoR0xjbGFtcGYgcmVkID0gJWYsIEdMY2xhbXBmIGdyZWVuID0g
JWYsIEdMY2xhbXBmIGJsdWUgPSAlZiwgR0xjbGFtcGYgYWxwaGEgPSAlZikiLAorICAgICAgICAg
IHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBp
ZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+c2V0Q2xlYXJDb2xv
cihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQ2xlYXJEZXB0aGYoR0xj
bGFtcGYgZGVwdGgpCit7CisgICAgRVZFTlQoIihHTGNsYW1wZiBkZXB0aCA9ICVmKSIsIGRlcHRo
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgY29udGV4dC0+c2V0Q2xlYXJEZXB0aChkZXB0aCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
Q2xlYXJTdGVuY2lsKEdMaW50IHMpCit7CisgICAgRVZFTlQoIihHTGludCBzID0gJWQpIiwgcyk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnNldENsZWFyU3RlbmNpbChzKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xDb2xv
ck1hc2soR0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJvb2xlYW4gYmx1ZSwgR0xi
b29sZWFuIGFscGhhKQoreworICAgIEVWRU5UKCIoR0xib29sZWFuIHJlZCA9ICVkLCBHTGJvb2xl
YW4gZ3JlZW4gPSAlZCwgR0xib29sZWFuIGJsdWUgPSAlZCwgR0xib29sZWFuIGFscGhhID0gJWQp
IiwKKyAgICAgICAgICByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisKKyAgICB0cnkKKyAgICB7
CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7
CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQt
PnNldENvbG9yTWFzayhyZWQgPT0gR0xfVFJVRSwgZ3JlZW4gPT0gR0xfVFJVRSwgYmx1ZSA9PSBH
TF9UUlVFLCBhbHBoYSA9PSBHTF9UUlVFKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xDb21waWxlU2hhZGVyKEdM
dWludCBzaGFkZXIpCit7CisgICAgRVZFTlQoIihHTHVpbnQgc2hhZGVyID0gJWQpIiwgc2hhZGVy
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZ2w6OlNoYWRlciAqc2hhZGVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U2hhZGVy
KHNoYWRlcik7CisKKyAgICAgICAgICAgIGlmICghc2hhZGVyT2JqZWN0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRQcm9ncmFtKHNoYWRlcikpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHNoYWRlck9iamVjdC0+Y29tcGlsZSgpOworICAgICAgICB9CisgICAgfQor
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbENvbXBy
ZXNzZWRUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwg
Y29uc3QgR0x2b2lkKiBkYXRhKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgs
IEdMaW50IGxldmVsID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9IDB4JVgsIEdMc2l6ZWkg
d2lkdGggPSAlZCwgIiAKKyAgICAgICAgICAiR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xpbnQgYm9y
ZGVyID0gJWQsIEdMc2l6ZWkgaW1hZ2VTaXplID0gJWQsIGNvbnN0IEdMdm9pZCogZGF0YSA9IDB4
JTAuOHApIiwKKyAgICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEpOworCisgICAgdHJ5CisgICAgeworICAg
ICAgICBpZiAoIXZhbGlkSW1hZ2VTaXplKGxldmVsLCB3aWR0aCwgaGVpZ2h0KSB8fCBib3JkZXIg
IT0gMCB8fCBpbWFnZVNpemUgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChp
bnRlcm5hbGZvcm1hdCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhUOgorICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19B
TkdMRToKKyAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KGJvcmRlciAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3aWR0aCAhPSAx
ICYmIHdpZHRoICE9IDIgJiYgd2lkdGggJSA0ICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGhlaWdodCAhPSAxICYmIGhlaWdodCAhPSAyICYmIGhlaWdodCAlIDQgIT0gMCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAobGV2ZWwgPiBjb250ZXh0LT5nZXRNYXhpbXVtVGV4dHVyZUxldmVsKCkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAg
ICAgICAgICAgICBpZiAod2lkdGggPiAoY29udGV4dC0+Z2V0TWF4aW11bVRleHR1cmVEaW1lbnNp
b24oKSA+PiBsZXZlbCkgfHwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID4gKGNvbnRleHQt
PmdldE1heGltdW1UZXh0dXJlRGltZW5zaW9uKCkgPj4gbGV2ZWwpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgorICAgICAgICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDoKKyAgICAgICAgICAgICAgY2FzZSBH
TF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgorICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWjoKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1o6CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoICE9IGhlaWdodCkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg
KHdpZHRoID4gKGNvbnRleHQtPmdldE1heGltdW1DdWJlVGV4dHVyZURpbWVuc2lvbigpID4+IGxl
dmVsKSB8fAorICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPiAoY29udGV4dC0+Z2V0TWF4aW11
bUN1YmVUZXh0dXJlRGltZW5zaW9uKCkgPj4gbGV2ZWwpKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0p
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KSB7
CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICAg
ICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUMVRleHR1cmVzKCkpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfRU5VTSk7IC8vIGluIHRoaXMgY2FzZSwgaXQncyBhcyB0aG91Z2ggdGhlIGludGVybmFsIGZv
cm1hdCBzd2l0Y2ggZmFpbGVkCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5H
TEU6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0RYVDNUZXh0dXJlcygp
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX0VOVU0pOyAvLyBpbiB0aGlzIGNhc2UsIGl0J3MgYXMgdGhvdWdoIHRoZSBp
bnRlcm5hbCBmb3JtYXQgc3dpdGNoIGZhaWxlZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQ1X0FOR0xFOgorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQ1
VGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsgLy8gaW4gdGhpcyBjYXNlLCBpdCdzIGFzIHRo
b3VnaCB0aGUgaW50ZXJuYWwgZm9ybWF0IHN3aXRjaCBmYWlsZWQKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpbWFnZVNpemUgIT0gZ2w6
OkNvbXB1dGVDb21wcmVzc2VkU2l6ZSh3aWR0aCwgaGVpZ2h0LCBpbnRlcm5hbGZvcm1hdCkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9U
RVhUVVJFXzJEKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlMkQg
KnRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlMkQoKTsKKworICAgICAgICAgICAgICAgIGlm
ICghdGV4dHVyZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5pc0ltbXV0YWJsZSgpKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGV4dHVyZS0+
c2V0Q29tcHJlc3NlZEltYWdlKGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
aW1hZ2VTaXplLCBkYXRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZUN1YmVNYXAgKnRleHR1cmUgPSBj
b250ZXh0LT5nZXRUZXh0dXJlQ3ViZU1hcCgpOworCisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0
dXJlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgaWYgKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRhcmdldCkK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWDoKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9YOgorICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1k6CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWToKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9aOgorICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1o6CisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnNldENvbXByZXNzZWRJ
bWFnZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgaW1hZ2VT
aXplLCBkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7
CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQor
Cit2b2lkIF9fc3RkY2FsbCBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSkK
K3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGludCBsZXZlbCA9ICVkLCBH
TGludCB4b2Zmc2V0ID0gJWQsIEdMaW50IHlvZmZzZXQgPSAlZCwgIgorICAgICAgICAgICJHTHNp
emVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMZW51bSBmb3JtYXQgPSAweCVY
LCAiCisgICAgICAgICAgIkdMc2l6ZWkgaW1hZ2VTaXplID0gJWQsIGNvbnN0IEdMdm9pZCogZGF0
YSA9IDB4JTAuOHApIiwKKyAgICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSk7CisKKyAgICB0cnkKKyAg
ICB7CisgICAgICAgIGlmICghZ2w6OklzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KHRhcmdldCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICh4b2Zmc2V0IDwgMCB8fCB5b2Zmc2V0IDwgMCB8fCAh
dmFsaWRJbWFnZVNpemUobGV2ZWwsIHdpZHRoLCBoZWlnaHQpIHx8IGltYWdlU2l6ZSA8IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICAgICAgeworICAgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDAgfHwgZGF0
YSA9PSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwor
CisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobGV2ZWwg
PiBjb250ZXh0LT5nZXRNYXhpbXVtVGV4dHVyZUxldmVsKCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgICAgICAgIGlmICghY29u
dGV4dC0+c3VwcG9ydHNEWFQxVGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsgLy8gaW4gdGhp
cyBjYXNlLCBpdCdzIGFzIHRob3VnaCB0aGUgaW50ZXJuYWwgZm9ybWF0IHN3aXRjaCBmYWlsZWQK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAgICAgICAgICAg
ICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUM1RleHR1cmVzKCkpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7
IC8vIGluIHRoaXMgY2FzZSwgaXQncyBhcyB0aG91Z2ggdGhlIGludGVybmFsIGZvcm1hdCBzd2l0
Y2ggZmFpbGVkCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAg
ICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0RYVDVUZXh0dXJlcygpKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX0VOVU0pOyAvLyBpbiB0aGlzIGNhc2UsIGl0J3MgYXMgdGhvdWdoIHRoZSBpbnRlcm5hbCBm
b3JtYXQgc3dpdGNoIGZhaWxlZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKGltYWdlU2l6ZSAhPSBnbDo6Q29tcHV0ZUNvbXByZXNzZWRT
aXplKHdpZHRoLCBoZWlnaHQsIGZvcm1hdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKHhvZmZzZXQgJSA0ICE9IDAgfHwgeW9mZnNldCAlIDQgIT0gMCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsgLy8gd2Ugd2FpdCB0byBjaGVjayB0aGUgb2Zmc2V0cyB1bnRpbCB0aGlzIHBv
aW50LCBiZWNhdXNlIHRoZSBtdWx0aXBsZS1vZi1mb3VyIHJlc3RyaWN0aW9uCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9lcyBub3QgZXhp
c3QgdW5sZXNzIERYVCB0ZXh0dXJlcyBhcmUgc3VwcG9ydGVkLgorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUyRCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1
cmUyRCgpOworICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0ZVN1YkltYWdlUGFyYW1zMkQodHJ1
ZSwgd2lkdGgsIGhlaWdodCwgeG9mZnNldCwgeW9mZnNldCwgbGV2ZWwsIGZvcm1hdCwgR0xfTk9O
RSwgdGV4dHVyZSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB0ZXh0
dXJlLT5zdWJJbWFnZUNvbXByZXNzZWQobGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChnbDo6SXNDdWJlbWFwVGV4dHVyZVRhcmdl
dCh0YXJnZXQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ3Vi
ZU1hcCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmVDdWJlTWFwKCk7CisgICAgICAgICAg
ICAgICAgaWYgKHZhbGlkYXRlU3ViSW1hZ2VQYXJhbXNDdWJlKHRydWUsIHdpZHRoLCBoZWlnaHQs
IHhvZmZzZXQsIHlvZmZzZXQsIHRhcmdldCwgbGV2ZWwsIGZvcm1hdCwgR0xfTk9ORSwgdGV4dHVy
ZSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zdWJJ
bWFnZUNvbXByZXNzZWQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbENvcHlUZXhJbWFn
ZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3Jk
ZXIpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAl
ZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gMHglWCwgIgorICAgICAgICAgICJHTGludCB4ID0g
JWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVk
LCBHTGludCBib3JkZXIgPSAlZCkiLAorICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBpZiAoIXZhbGlkSW1hZ2VTaXplKGxldmVsLCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChib3JkZXIgIT0gMCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAg
ICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChsZXZlbCA+IGNv
bnRleHQtPmdldE1heGltdW1UZXh0dXJlTGV2ZWwoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgorICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IChj
b250ZXh0LT5nZXRNYXhpbXVtVGV4dHVyZURpbWVuc2lvbigpID4+IGxldmVsKSB8fAorICAgICAg
ICAgICAgICAgICAgICBoZWlnaHQgPiAoY29udGV4dC0+Z2V0TWF4aW11bVRleHR1cmVEaW1lbnNp
b24oKSA+PiBsZXZlbCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1g6CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9O
RUdBVElWRV9YOgorICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWToKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6
CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgorICAg
ICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKKyAgICAgICAg
ICAgICAgICBpZiAod2lkdGggIT0gaGVpZ2h0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPiAoY29udGV4dC0+Z2V0TWF4
aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKCkgPj4gbGV2ZWwpIHx8CisgICAgICAgICAgICAgICAg
ICAgIGhlaWdodCA+IChjb250ZXh0LT5nZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNpb24oKSA+
PiBsZXZlbCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRSZWFkRnJh
bWVidWZmZXIoKTsKKworICAgICAgICAgICAgaWYgKGZyYW1lYnVmZmVyLT5jb21wbGV0ZW5lc3Mo
KSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1
ZmZlckhhbmRsZSgpICE9IDAgJiYgZnJhbWVidWZmZXItPmdldFNhbXBsZXMoKSAhPSAwKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnbDo6UmVuZGVyYnVmZmVy
ICpzb3VyY2UgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7CisgICAgICAgICAg
ICBHTGVudW0gY29sb3JidWZmZXJGb3JtYXQgPSBzb3VyY2UtPmdldEludGVybmFsRm9ybWF0KCk7
CisKKyAgICAgICAgICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSB0YWJsZSAzLjkKKyAgICAgICAg
ICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
IGNhc2UgR0xfQUxQSEE6CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9
IEdMX0FMUEhBOF9FWFQgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQg
IT0gR0xfUkdCQTQgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0g
R0xfUkdCNV9BMSAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBH
TF9CR1JBOF9FWFQgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0g
R0xfUkdCQThfT0VTKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToK
KyAgICAgICAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX1JHQjU2NSAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZl
ckZvcm1hdCAhPSBHTF9SR0I4X09FUyAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZl
ckZvcm1hdCAhPSBHTF9SR0JBNCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SR0I1X0ExICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9y
bWF0ICE9IEdMX0JHUkE4X0VYVCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SR0JBOF9PRVMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfTFVN
SU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICAg
ICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCisgICAgICAgICAgICAgICAg
ICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKKyAgICAgICAgICAgICAgICAg
ICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfQkdSQThfRVhUICYmCisgICAgICAgICAgICAgICAg
ICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUykKKyAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAg
ICAgICBpZiAoY29udGV4dC0+c3VwcG9ydHNEWFQxVGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6CisgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRFhUM1RleHR1cmVzKCkpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xF
OgorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdXBwb3J0c0RYVDVUZXh0dXJlcygpKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UOgorICAgICAg
ICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2OgorICAgICAgICAgICAgICBjYXNlIEdM
X0RFUFRIX0NPTVBPTkVOVDMyX09FUzoKKyAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVO
Q0lMX09FUzoKKyAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzoKKyAg
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdXBwb3J0c0RlcHRoVGV4dHVyZXMoKSkKKyAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGFyZ2V0
ID09IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2w6OlRl
eHR1cmUyRCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgpOworCisgICAgICAgICAg
ICAgICAgaWYgKCF0ZXh0dXJlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0
ZXh0dXJlLT5jb3B5SW1hZ2UobGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBmcmFtZWJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChn
bDo6SXNDdWJlbWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1hcCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1
cmVDdWJlTWFwKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAodGV4
dHVyZS0+aXNJbW11dGFibGUoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIHRleHR1cmUtPmNvcHlJbWFnZSh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZnJhbWVidWZmZXIpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworICAgICAgICB9Cisg
ICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBn
bENvcHlUZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGludCBs
ZXZlbCA9ICVkLCBHTGludCB4b2Zmc2V0ID0gJWQsIEdMaW50IHlvZmZzZXQgPSAlZCwgIgorICAg
ICAgICAgICJHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBH
THNpemVpIGhlaWdodCA9ICVkKSIsCisgICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAg
IGlmICghZ2w6OklzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KHRhcmdldCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChsZXZlbCA8IDAgfHwgeG9mZnNldCA8IDAgfHwgeW9mZnNldCA8IDAgfHwg
d2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3Rk
OjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB4b2Zmc2V0IDwgd2lkdGggfHwgc3Rk
OjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB5b2Zmc2V0IDwgaGVpZ2h0KQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNv
bnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChsZXZlbCA+IGNvbnRleHQtPmdldE1h
eGltdW1UZXh0dXJlTGV2ZWwoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0UmVhZEZyYW1l
YnVmZmVyKCk7CisKKyAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlci0+Y29tcGxldGVuZXNzKCkg
IT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRSZWFkRnJhbWVidWZm
ZXJIYW5kbGUoKSAhPSAwICYmIGZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKCkgIT0gMCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZlciAq
c291cmNlID0gZnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpOworICAgICAgICAgICAg
R0xlbnVtIGNvbG9yYnVmZmVyRm9ybWF0ID0gc291cmNlLT5nZXRJbnRlcm5hbEZvcm1hdCgpOwor
ICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPSBOVUxMOworICAgICAgICAgICAgR0xl
bnVtIHRleHR1cmVGb3JtYXQgPSBHTF9SR0JBOworCisgICAgICAgICAgICBpZiAodGFyZ2V0ID09
IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2w6OlRleHR1
cmUyRCAqdGV4MmQgPSBjb250ZXh0LT5nZXRUZXh0dXJlMkQoKTsKKworICAgICAgICAgICAgICAg
IGlmICghdmFsaWRhdGVTdWJJbWFnZVBhcmFtczJEKGZhbHNlLCB3aWR0aCwgaGVpZ2h0LCB4b2Zm
c2V0LCB5b2Zmc2V0LCBsZXZlbCwgR0xfTk9ORSwgR0xfTk9ORSwgdGV4MmQpKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBlcnJvciBhbHJlYWR5IHJl
Z2lzdGVyZWQgYnkgdmFsaWRhdGVTdWJJbWFnZVBhcmFtcworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB0ZXh0dXJlRm9ybWF0ID0gZ2w6OkV4dHJhY3RGb3JtYXQodGV4MmQtPmdl
dEludGVybmFsRm9ybWF0KGxldmVsKSk7CisgICAgICAgICAgICAgICAgdGV4dHVyZSA9IHRleDJk
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZ2w6OklzQ3ViZW1hcFRleHR1
cmVUYXJnZXQodGFyZ2V0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6VGV4
dHVyZUN1YmVNYXAgKnRleGN1YmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ3ViZU1hcCgpOworCisg
ICAgICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZVN1YkltYWdlUGFyYW1zQ3ViZShmYWxzZSwgd2lk
dGgsIGhlaWdodCwgeG9mZnNldCwgeW9mZnNldCwgdGFyZ2V0LCBsZXZlbCwgR0xfTk9ORSwgR0xf
Tk9ORSwgdGV4Y3ViZSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47IC8vIGVycm9yIGFscmVhZHkgcmVnaXN0ZXJlZCBieSB2YWxpZGF0ZVN1YkltYWdlUGFy
YW1zCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRleHR1cmVGb3JtYXQgPSBn
bDo6RXh0cmFjdEZvcm1hdCh0ZXhjdWJlLT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVs
KSk7CisgICAgICAgICAgICAgICAgdGV4dHVyZSA9IHRleGN1YmU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICAgICAgICAgIC8vIFtPcGVuR0wg
RVMgMi4wLjI0XSB0YWJsZSAzLjkKKyAgICAgICAgICAgIHN3aXRjaCAodGV4dHVyZUZvcm1hdCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgICAg
ICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfQUxQSEE4X0VYVCAmJgorICAgICAgICAg
ICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBNCAmJgorICAgICAgICAgICAg
ICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCisgICAgICAgICAgICAg
ICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUykKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6CisgICAgICAgICAgICAgIGNhc2UgR0xfUkdCOgor
ICAgICAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1NjUgJiYKKyAg
ICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCOF9PRVMgJiYKKyAg
ICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYKKyAgICAg
ICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgorICAgICAg
ICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgICBj
YXNlIEdMX1JHQkE6CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdM
X1JHQkE0ICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JH
QjVfQTEgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdC
QThfT0VTKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1Mz
VENfRFhUMV9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUMV9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
M19BTkdMRToKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1
X0FOR0xFOgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDoKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGV4dHVyZS0+Y29weVN1YkltYWdlKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZyYW1lYnVm
ZmVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAg
ICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQor
fQorCitHTHVpbnQgX19zdGRjYWxsIGdsQ3JlYXRlUHJvZ3JhbSh2b2lkKQoreworICAgIEVWRU5U
KCIoKSIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgICAg
ICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgMCk7CisgICAgfQorCisgICAgcmV0dXJu
IDA7Cit9CisKK0dMdWludCBfX3N0ZGNhbGwgZ2xDcmVhdGVTaGFkZXIoR0xlbnVtIHR5cGUpCit7
CisgICAgRVZFTlQoIihHTGVudW0gdHlwZSA9IDB4JVgpIiwgdHlwZSk7CisKKyAgICB0cnkKKyAg
ICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRj
aCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9GUkFHTUVOVF9T
SEFERVI6CisgICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX1NIQURFUjoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY29udGV4dC0+Y3JlYXRlU2hhZGVyKHR5cGUpOworICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVN
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJh
ZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlksIDApOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCit2b2lkIF9fc3RkY2FsbCBnbEN1
bGxGYWNlKEdMZW51bSBtb2RlKQoreworICAgIEVWRU5UKCIoR0xlbnVtIG1vZGUgPSAweCVYKSIs
IG1vZGUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKG1vZGUpCisgICAgICAg
IHsKKyAgICAgICAgICBjYXNlIEdMX0ZST05UOgorICAgICAgICAgIGNhc2UgR0xfQkFDSzoKKyAg
ICAgICAgICBjYXNlIEdMX0ZST05UX0FORF9CQUNLOgorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnNldEN1bGxNb2RlKG1vZGUpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRj
YWxsIGdsRGVsZXRlQnVmZmVycyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCogYnVmZmVycykKK3sK
KyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQqIGJ1ZmZlcnMgPSAweCUw
LjhwKSIsIG4sIGJ1ZmZlcnMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAobiA8IDAp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRO
b25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5kZWxldGVCdWZmZXIoYnVmZmVyc1tpXSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisK
K3ZvaWQgX19zdGRjYWxsIGdsRGVsZXRlRmVuY2VzTlYoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQq
IGZlbmNlcykKK3sKKyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQqIGZl
bmNlcyA9IDB4JTAuOHApIiwgbiwgZmVuY2VzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAg
aWYgKG4gPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlRmVuY2UoZmVuY2VzW2ldKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
IH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoR0xzaXplaSBuLCBj
b25zdCBHTHVpbnQqIGZyYW1lYnVmZmVycykKK3sKKyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVk
LCBjb25zdCBHTHVpbnQqIGZyYW1lYnVmZmVycyA9IDB4JTAuOHApIiwgbiwgZnJhbWVidWZmZXJz
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisK
KyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsK
KworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGZy
YW1lYnVmZmVyc1tpXSAhPSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIoZnJhbWVidWZmZXJzW2ldKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRGVsZXRlUHJvZ3JhbShHTHVp
bnQgcHJvZ3JhbSkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQpIiwgcHJvZ3Jh
bSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChwcm9ncmFtID09IDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9n
cmFtKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZihjb250ZXh0LT5nZXRTaGFk
ZXIocHJvZ3JhbSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVByb2dyYW0ocHJv
Z3JhbSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9
CisKK3ZvaWQgX19zdGRjYWxsIGdsRGVsZXRlUXVlcmllc0VYVChHTHNpemVpIG4sIGNvbnN0IEdM
dWludCAqaWRzKQoreworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAq
aWRzID0gMHglMC44cCkiLCBuLCBpZHMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAo
biA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGds
OjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7
CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5kZWxldGVRdWVyeShpZHNbaV0pOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7
CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQor
Cit2b2lkIF9fc3RkY2FsbCBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoR0xzaXplaSBuLCBjb25zdCBH
THVpbnQqIHJlbmRlcmJ1ZmZlcnMpCit7CisgICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgY29u
c3QgR0x1aW50KiByZW5kZXJidWZmZXJzID0gMHglMC44cCkiLCBuLCByZW5kZXJidWZmZXJzKTsK
KworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKwor
ICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
ZGVsZXRlUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcnNbaV0pOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9f
c3RkY2FsbCBnbERlbGV0ZVNoYWRlcihHTHVpbnQgc2hhZGVyKQoreworICAgIEVWRU5UKCIoR0x1
aW50IHNoYWRlciA9ICVkKSIsIHNoYWRlcik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlm
IChzaGFkZXIgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFj
b250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZihjb250ZXh0LT5nZXRQcm9ncmFtKHNoYWRlcikpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnRl
eHQtPmRlbGV0ZVNoYWRlcihzaGFkZXIpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbERlbGV0ZVRleHR1cmVzKEdM
c2l6ZWkgbiwgY29uc3QgR0x1aW50KiB0ZXh0dXJlcykKK3sKKyAgICBFVkVOVCgiKEdMc2l6ZWkg
biA9ICVkLCBjb25zdCBHTHVpbnQqIHRleHR1cmVzID0gMHglMC44cCkiLCBuLCB0ZXh0dXJlcyk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh0ZXh0
dXJlc1tpXSAhPSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlc1tpXSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
KyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAg
fQorfQorCit2b2lkIF9fc3RkY2FsbCBnbERlcHRoRnVuYyhHTGVudW0gZnVuYykKK3sKKyAgICBF
VkVOVCgiKEdMZW51bSBmdW5jID0gMHglWCkiLCBmdW5jKTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChmdW5jKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9ORVZFUjoK
KyAgICAgICAgICBjYXNlIEdMX0FMV0FZUzoKKyAgICAgICAgICBjYXNlIEdMX0xFU1M6CisgICAg
ICAgICAgY2FzZSBHTF9MRVFVQUw6CisgICAgICAgICAgY2FzZSBHTF9FUVVBTDoKKyAgICAgICAg
ICBjYXNlIEdMX0dSRUFURVI6CisgICAgICAgICAgY2FzZSBHTF9HRVFVQUw6CisgICAgICAgICAg
Y2FzZSBHTF9OT1RFUVVBTDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAg
IH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250
ZXh0LT5zZXREZXB0aEZ1bmMoZnVuYyk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRGVwdGhNYXNrKEdMYm9vbGVh
biBmbGFnKQoreworICAgIEVWRU5UKCIoR0xib29sZWFuIGZsYWcgPSAlZCkiLCBmbGFnKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9u
TG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgY29udGV4dC0+c2V0RGVwdGhNYXNrKGZsYWcgIT0gR0xfRkFMU0UpOworICAgICAgICB9
CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2Fs
bCBnbERlcHRoUmFuZ2VmKEdMY2xhbXBmIHpOZWFyLCBHTGNsYW1wZiB6RmFyKQoreworICAgIEVW
RU5UKCIoR0xjbGFtcGYgek5lYXIgPSAlZiwgR0xjbGFtcGYgekZhciA9ICVmKSIsIHpOZWFyLCB6
RmFyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgY29udGV4dC0+c2V0RGVwdGhSYW5nZSh6TmVhciwgekZhcik7CisgICAg
ICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19z
dGRjYWxsIGdsRGV0YWNoU2hhZGVyKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKQorewor
ICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0x1aW50IHNoYWRlciA9ICVkKSIsIHBy
b2dyYW0sIHNoYWRlcik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQp
CisgICAgICAgIHsKKworICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBj
b250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICAgICAgZ2w6OlNoYWRlciAqc2hh
ZGVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U2hhZGVyKHNoYWRlcik7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBnbDo6U2hhZGVyICpzaGFkZXJCeVByb2dyYW1IYW5kbGU7CisgICAgICAgICAgICAgICAg
c2hhZGVyQnlQcm9ncmFtSGFuZGxlID0gY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pOworICAg
ICAgICAgICAgICAgIGlmICghc2hhZGVyQnlQcm9ncmFtSGFuZGxlKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoIXNoYWRlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6
UHJvZ3JhbSAqcHJvZ3JhbUJ5U2hhZGVySGFuZGxlID0gY29udGV4dC0+Z2V0UHJvZ3JhbShzaGFk
ZXIpOworICAgICAgICAgICAgICAgIGlmICghcHJvZ3JhbUJ5U2hhZGVySGFuZGxlKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QtPmRldGFjaFNoYWRlcihzaGFkZXJPYmplY3Qp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbERpc2FibGUoR0xl
bnVtIGNhcCkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSBjYXAgPSAweCVYKSIsIGNhcCk7CisKKyAg
ICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAoY2FwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0NV
TExfRkFDRTogICAgICAgICAgICAgICAgY29udGV4dC0+c2V0Q3VsbEZhY2UoZmFsc2UpOyAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZTRVRfRklM
TDogICAgICBjb250ZXh0LT5zZXRQb2x5Z29uT2Zmc2V0RmlsbChmYWxzZSk7ICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0U6IGNvbnRleHQt
PnNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZShmYWxzZSk7IGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIEdMX1NBTVBMRV9DT1ZFUkFHRTogICAgICAgICAgY29udGV4dC0+c2V0U2FtcGxlQ292ZXJh
Z2UoZmFsc2UpOyAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfU0NJU1NPUl9U
RVNUOiAgICAgICAgICAgICBjb250ZXh0LT5zZXRTY2lzc29yVGVzdChmYWxzZSk7ICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX1RFU1Q6ICAgICAgICAgICAg
IGNvbnRleHQtPnNldFN0ZW5jaWxUZXN0KGZhbHNlKTsgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6ICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RGVw
dGhUZXN0KGZhbHNlKTsgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xf
QkxFTkQ6ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRCbGVuZChmYWxzZSk7ICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9ESVRIRVI6ICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnNldERpdGhlcihmYWxzZSk7ICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkoR0x1aW50IGluZGV4KQoreworICAgIEVWRU5UKCIoR0x1aW50IGlu
ZGV4ID0gJWQpIiwgaW5kZXgpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoaW5kZXgg
Pj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYg
KGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldEVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KGluZGV4LCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRHJhd0FycmF5cyhHTGVu
dW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCit7CisgICAgRVZFTlQoIihHTGVu
dW0gbW9kZSA9IDB4JVgsIEdMaW50IGZpcnN0ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCkiLCBt
b2RlLCBmaXJzdCwgY291bnQpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoY291bnQg
PCAwIHx8IGZpcnN0IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmlyc3Qs
IGNvdW50LCAwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
IH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0xlbnVt
IG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHByaW1jb3VudCkKK3sK
KyAgICBFVkVOVCgiKEdMZW51bSBtb2RlID0gMHglWCwgR0xpbnQgZmlyc3QgPSAlZCwgR0xzaXpl
aSBjb3VudCA9ICVkLCBHTHNpemVpIHByaW1jb3VudCA9ICVkKSIsIG1vZGUsIGZpcnN0LCBjb3Vu
dCwgcHJpbWNvdW50KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50IDwgMCB8
fCBmaXJzdCA8IDAgfHwgcHJpbWNvdW50IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChwcmltY291bnQgPiAwKQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgICAgICBpZiAoY29udGV4
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3QXJyYXlzKG1v
ZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwg
Z2xEcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBj
b25zdCBHTHZvaWQqIGluZGljZXMpCit7CisgICAgRVZFTlQoIihHTGVudW0gbW9kZSA9IDB4JVgs
IEdMc2l6ZWkgY291bnQgPSAlZCwgR0xlbnVtIHR5cGUgPSAweCVYLCBjb25zdCBHTHZvaWQqIGlu
ZGljZXMgPSAweCUwLjhwKSIsCisgICAgICAgICAgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMp
OworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoY291bnQgPCAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9
CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNo
ICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6CisgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAg
ICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHMzMmJpdEluZGljZXMoKSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9F
TlVNKTsgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBjb250
ZXh0LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIDApOworICAgICAg
ICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdMZW51bSBtb2RlLCBHTHNpemVpIGNv
dW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBHTHNpemVpIHByaW1jb3Vu
dCkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSBtb2RlID0gMHglWCwgR0xzaXplaSBjb3VudCA9ICVk
LCBHTGVudW0gdHlwZSA9IDB4JVgsIGNvbnN0IEdMdm9pZCogaW5kaWNlcyA9IDB4JTAuOHAsIEdM
c2l6ZWkgcHJpbWNvdW50ID0gJWQpIiwKKyAgICAgICAgICBtb2RlLCBjb3VudCwgdHlwZSwgaW5k
aWNlcywgcHJpbWNvdW50KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50IDwg
MCB8fCBwcmltY291bnQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHByaW1jb3Vu
dCA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAgICAgICAg
ICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzMzJiaXRJbmRpY2VzKCkpCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsgICAgCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUs
IGNvdW50LCB0eXBlLCBpbmRpY2VzLCBwcmltY291bnQpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbEVuYWJsZShHTGVudW0gY2FwKQoreworICAgIEVWRU5UKCIoR0xlbnVtIGNhcCA9IDB4
JVgpIiwgY2FwKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChjYXApCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgIGNhc2UgR0xfQ1VMTF9GQUNFOiAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRDdWxs
RmFjZSh0cnVlKTsgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1BP
TFlHT05fT0ZGU0VUX0ZJTEw6ICAgICAgY29udGV4dC0+c2V0UG9seWdvbk9mZnNldEZpbGwodHJ1
ZSk7ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TQU1QTEVfQUxQSEFfVE9fQ09W
RVJBR0U6IGNvbnRleHQtPnNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZSh0cnVlKTsgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFOiAgICAgICAgICBjb250ZXh0LT5z
ZXRTYW1wbGVDb3ZlcmFnZSh0cnVlKTsgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IEdMX1NDSVNTT1JfVEVTVDogICAgICAgICAgICAgY29udGV4dC0+c2V0U2Npc3NvclRlc3QodHJ1
ZSk7ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX1RFU1Q6
ICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0ZW5jaWxUZXN0KHRydWUpOyAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfVEVTVDogICAgICAgICAgICAgICBjb250
ZXh0LT5zZXREZXB0aFRlc3QodHJ1ZSk7ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIEdMX0JMRU5EOiAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0QmxlbmQodHJ1
ZSk7ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9ESVRIRVI6
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldERpdGhlcih0cnVlKTsgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBn
bEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdMdWludCBpbmRleCkKK3sKKyAgICBFVkVOVCgiKEdM
dWludCBpbmRleCA9ICVkKSIsIGluZGV4KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYg
KGluZGV4ID49IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAg
ICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRFbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRW5kUXVlcnlF
WFQoR0xlbnVtIHRhcmdldCkKK3sKKyAgICBFVkVOVCgiR0xlbnVtIHRhcmdldCA9IDB4JVgpIiwg
dGFyZ2V0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAg
ICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQ6IAorICAgICAg
ICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQ6CisgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6IAorICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5lbmRRdWVyeSh0YXJnZXQp
OworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2
b2lkIF9fc3RkY2FsbCBnbEZpbmlzaEZlbmNlTlYoR0x1aW50IGZlbmNlKQoreworICAgIEVWRU5U
KCIoR0x1aW50IGZlbmNlID0gJWQpIiwgZmVuY2UpOworCisgICAgdHJ5CisgICAgeworICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAg
ICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6RmVuY2UqIGZlbmNl
T2JqZWN0ID0gY29udGV4dC0+Z2V0RmVuY2UoZmVuY2UpOworCisgICAgICAgICAgICBpZiAoZmVu
Y2VPYmplY3QgPT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZmVuY2VPYmplY3QtPmZpbmlzaEZlbmNlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRmluaXNoKHZv
aWQpCit7CisgICAgRVZFTlQoIigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYg
KGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnN5bmModHJ1ZSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsRmx1c2godm9pZCkKK3sKKyAgICBFVkVOVCgiKCkiKTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRl
eHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29u
dGV4dC0+c3luYyhmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSByZW5kZXJidWZmZXJ0YXJn
ZXQsIEdMdWludCByZW5kZXJidWZmZXIpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0g
MHglWCwgR0xlbnVtIGF0dGFjaG1lbnQgPSAweCVYLCBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0
ID0gMHglWCwgIgorICAgICAgICAgICJHTHVpbnQgcmVuZGVyYnVmZmVyID0gJWQpIiwgdGFyZ2V0
LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIGlmICgodGFyZ2V0ICE9IEdMX0ZSQU1FQlVGRkVSICYmIHRhcmdl
dCAhPSBHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFICYmIHRhcmdldCAhPSBHTF9SRUFEX0ZSQU1F
QlVGRkVSX0FOR0xFKQorICAgICAgICAgICAgfHwgKHJlbmRlcmJ1ZmZlcnRhcmdldCAhPSBHTF9S
RU5ERVJCVUZGRVIgJiYgcmVuZGVyYnVmZmVyICE9IDApKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAg
ICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6RnJhbWVidWZmZXIg
KmZyYW1lYnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgIEdMdWludCBmcmFtZWJ1ZmZlckhhbmRs
ZSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0ID09IEdMX1JFQURfRlJBTUVCVUZGRVJfQU5H
TEUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBjb250ZXh0
LT5nZXRSZWFkRnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlckhhbmRs
ZSA9IGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1ZmZlckhhbmRsZSgpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZyYW1lYnVm
ZmVyID0gY29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICAgICAgZnJh
bWVidWZmZXJIYW5kbGUgPSBjb250ZXh0LT5nZXREcmF3RnJhbWVidWZmZXJIYW5kbGUoKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFmcmFtZWJ1ZmZlciB8fCAoZnJhbWVidWZm
ZXJIYW5kbGUgPT0gMCAmJiByZW5kZXJidWZmZXIgIT0gMCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdHRhY2htZW50ID49IEdMX0NPTE9SX0FUVEFD
SE1FTlQwX0VYVCAmJiBhdHRhY2htZW50IDw9IEdMX0NPTE9SX0FUVEFDSE1FTlQxNV9FWFQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IGNvbG9yQXR0
YWNobWVudCA9IChhdHRhY2htZW50IC0gR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUKTsKKworICAg
ICAgICAgICAgICAgIGlmIChjb2xvckF0dGFjaG1lbnQgPj0gY29udGV4dC0+Z2V0TWF4aW11bVJl
bmRlclRhcmdldHMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgZnJhbWVidWZmZXItPnNldENvbG9yYnVmZmVyKGNvbG9yQXR0YWNobWVu
dCwgR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoYXR0YWNo
bWVudCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRI
X0FUVEFDSE1FTlQ6CisgICAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyLT5zZXREZXB0aGJ1
ZmZlcihHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQ6Cisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyLT5zZXRTdGVuY2lsYnVmZmVyKEdMX1JFTkRF
UkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lk
IF9fc3RkY2FsbCBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMZW51bSB0YXJnZXQsIEdMZW51bSBh
dHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwp
Cit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIGF0dGFjaG1lbnQg
PSAweCVYLCBHTGVudW0gdGV4dGFyZ2V0ID0gMHglWCwgIgorICAgICAgICAgICJHTHVpbnQgdGV4
dHVyZSA9ICVkLCBHTGludCBsZXZlbCA9ICVkKSIsIHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFy
Z2V0LCB0ZXh0dXJlLCBsZXZlbCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmICh0YXJn
ZXQgIT0gR0xfRlJBTUVCVUZGRVIgJiYgdGFyZ2V0ICE9IEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5H
TEUgJiYgdGFyZ2V0ICE9IEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQor
CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7
CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChhdHRh
Y2htZW50ID49IEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCAmJiBhdHRhY2htZW50IDw9IEdMX0NP
TE9SX0FUVEFDSE1FTlQxNV9FWFQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29u
c3QgdW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCA9IChhdHRhY2htZW50IC0gR0xfQ09MT1Jf
QVRUQUNITUVOVDBfRVhUKTsKKworICAgICAgICAgICAgICAgIGlmIChjb2xvckF0dGFjaG1lbnQg
Pj0gY29udGV4dC0+Z2V0TWF4aW11bVJlbmRlclRhcmdldHMoKSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoYXR0YWNobWVudCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1FTlQ6Cisg
ICAgICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGV4dHVyZSA9PSAwKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHRleHRhcmdldCA9IEdMX05PTkU7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Z2w6OlRleHR1cmUgKnRleCA9IGNvbnRleHQtPmdldFRleHR1cmUodGV4dHVyZSk7CisKKyAgICAg
ICAgICAgICAgICBpZiAodGV4ID09IE5VTEwpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRleHRhcmdldCkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXgtPmdldFRh
cmdldCgpICE9IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICBnbDo6VGV4dHVyZTJEICp0ZXgyZCA9IHN0YXRpY19jYXN0PGdsOjpUZXh0dXJlMkQgKj4odGV4
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXgyZC0+aXNDb21wcmVzc2VkKDApKQor
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1g6CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ
VkVfWDoKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9ZOgorICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZF
X1k6CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVf
WjoKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9a
OgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4
LT5nZXRUYXJnZXQoKSAhPSBHTF9URVhUVVJFX0NVQkVfTUFQKQorICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDdWJlTWFwICp0ZXhjdWJlID0gc3RhdGljX2Nhc3Q8
Z2w6OlRleHR1cmVDdWJlTWFwICo+KHRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dGV4Y3ViZS0+aXNDb21wcmVzc2VkKHRleHRhcmdldCwgbGV2ZWwpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGlmIChsZXZlbCAhPSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIg
PSBOVUxMOworICAgICAgICAgICAgR0x1aW50IGZyYW1lYnVmZmVySGFuZGxlID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXQgPT0gR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFJlYWRGcmFt
ZWJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVySGFuZGxlID0gY29udGV4dC0+
Z2V0UmVhZEZyYW1lYnVmZmVySGFuZGxlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBjb250ZXh0
LT5nZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlckhhbmRs
ZSA9IGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZlckhhbmRsZSgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoZnJhbWVidWZmZXJIYW5kbGUgPT0gMCB8fCAhZnJhbWVidWZmZXIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhdHRhY2ht
ZW50ID49IEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCAmJiBhdHRhY2htZW50IDw9IEdMX0NPTE9S
X0FUVEFDSE1FTlQxNV9FWFQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3Qg
dW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCA9IChhdHRhY2htZW50IC0gR0xfQ09MT1JfQVRU
QUNITUVOVDBfRVhUKTsKKworICAgICAgICAgICAgICAgIGlmIChjb2xvckF0dGFjaG1lbnQgPj0g
Y29udGV4dC0+Z2V0TWF4aW11bVJlbmRlclRhcmdldHMoKSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZnJhbWVidWZmZXItPnNldENvbG9y
YnVmZmVyKGNvbG9yQXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0
Y2ggKGF0dGFjaG1lbnQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9ERVBUSF9BVFRBQ0hNRU5UOiAgIGZyYW1lYnVmZmVyLT5zZXREZXB0aGJ1ZmZlcih0ZXh0
YXJnZXQsIHRleHR1cmUpOyAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9TVEVO
Q0lMX0FUVEFDSE1FTlQ6IGZyYW1lYnVmZmVyLT5zZXRTdGVuY2lsYnVmZmVyKHRleHRhcmdldCwg
dGV4dHVyZSk7IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0
ZGNhbGwgZ2xGcm9udEZhY2UoR0xlbnVtIG1vZGUpCit7CisgICAgRVZFTlQoIihHTGVudW0gbW9k
ZSA9IDB4JVgpIiwgbW9kZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobW9k
ZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfQ1c6CisgICAgICAgICAgY2FzZSBHTF9D
Q1c6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RnJv
bnRGYWNlKG1vZGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2VuQnVmZmVycyhHTHNpemVpIG4s
IEdMdWludCogYnVmZmVycykKK3sKKyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQq
IGJ1ZmZlcnMgPSAweCUwLjhwKSIsIG4sIGJ1ZmZlcnMpOworCisgICAgdHJ5CisgICAgeworICAg
ICAgICBpZiAobiA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBidWZmZXJzW2ldID0gY29udGV4dC0+Y3JlYXRlQnVm
ZmVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2VuZXJhdGVNaXBtYXAoR0xlbnVt
IHRhcmdldCkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYKSIsIHRhcmdldCk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfMkQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBnbDo6VGV4dHVyZTJEICp0ZXgyZCA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgpOworCisgICAg
ICAgICAgICAgICAgICAgIGlmICh0ZXgyZC0+aXNDb21wcmVzc2VkKDApKQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBpZiAodGV4MmQtPmlzRGVwdGgoMCkpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgdGV4MmQtPmdl
bmVyYXRlTWlwbWFwcygpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDdWJlTWFwICp0ZXhj
dWJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKKworICAgICAgICAgICAgICAgICAg
ICBpZiAodGV4Y3ViZS0+aXNDb21wcmVzc2VkKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVf
WCwgMCkpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgdGV4Y3ViZS0+Z2VuZXJhdGVNaXBtYXBzKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZW5GZW5jZXNOVihHTHNpemVp
IG4sIEdMdWludCogZmVuY2VzKQoreworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIEdMdWlu
dCogZmVuY2VzID0gMHglMC44cCkiLCBuLCBmZW5jZXMpOworCisgICAgdHJ5CisgICAgeworICAg
ICAgICBpZiAobiA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBmZW5jZXNbaV0gPSBjb250ZXh0LT5jcmVhdGVGZW5j
ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdlbkZyYW1lYnVmZmVycyhHTHNpemVp
IG4sIEdMdWludCogZnJhbWVidWZmZXJzKQoreworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQs
IEdMdWludCogZnJhbWVidWZmZXJzID0gMHglMC44cCkiLCBuLCBmcmFtZWJ1ZmZlcnMpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBpZiAobiA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAg
ICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG47IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlcnNb
aV0gPSBjb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbEdlblF1ZXJpZXNFWFQoR0xzaXplaSBuLCBHTHVpbnQqIGlkcykKK3sKKyAgICBFVkVO
VCgiKEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQqIGlkcyA9IDB4JTAuOHApIiwgbiwgaWRzKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBuOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWRzW2ldID0gY29u
dGV4dC0+Y3JlYXRlUXVlcnkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZW5SZW5k
ZXJidWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50KiByZW5kZXJidWZmZXJzKQoreworICAgIEVWRU5U
KCIoR0xzaXplaSBuID0gJWQsIEdMdWludCogcmVuZGVyYnVmZmVycyA9IDB4JTAuOHApIiwgbiwg
cmVuZGVyYnVmZmVycyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChuIDwgMCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsK
KyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJlbmRlcmJ1ZmZlcnNbaV0gPSBjb250ZXh0LT5jcmVhdGVSZW5kZXJidWZmZXIoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxv
YyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwor
ICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZW5UZXh0dXJlcyhHTHNpemVpIG4sIEdMdWlu
dCogdGV4dHVyZXMpCit7CisgICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgR0x1aW50KiB0ZXh0
dXJlcyA9ICAweCUwLjhwKSIsIG4sIHRleHR1cmVzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgaWYgKG4gPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdGV4dHVyZXNbaV0gPSBjb250ZXh0LT5jcmVhdGVUZXh0
dXJlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0QWN0aXZlQXR0cmliKEdMdWlu
dCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUpCit7CisgICAgRVZFTlQo
IihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTHVpbnQgaW5kZXggPSAlZCwgR0xzaXplaSBidWZzaXpl
ID0gJWQsIEdMc2l6ZWkgKmxlbmd0aCA9IDB4JTAuOHAsICIKKyAgICAgICAgICAiR0xpbnQgKnNp
emUgPSAweCUwLjhwLCBHTGVudW0gKnR5cGUgPSAlMC44cCwgR0xjaGFyICpuYW1lID0gJTAuOHAp
IiwKKyAgICAgICAgICBwcm9ncmFtLCBpbmRleCwgYnVmc2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBl
LCBuYW1lKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGJ1ZnNpemUgPCAwKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwor
ICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dy
YW0pOworCisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlcihwcm9ncmFtKSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKGluZGV4ID49IChHTHVpbnQpcHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlQXR0
cmlidXRlQ291bnQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBw
cm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVBdHRyaWJ1dGUoaW5kZXgsIGJ1ZnNpemUsIGxlbmd0aCwg
c2l6ZSwgdHlwZSwgbmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0QWN0aXZlVW5pZm9ybShHTHVpbnQg
cHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwg
R0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1lKQoreworICAgIEVWRU5UKCIo
R0x1aW50IHByb2dyYW0gPSAlZCwgR0x1aW50IGluZGV4ID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9
ICVkLCAiCisgICAgICAgICAgIkdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsIEdMaW50KiBzaXpl
ID0gMHglMC44cCwgR0xlbnVtKiB0eXBlID0gMHglMC44cCwgR0xjaGFyKiBuYW1lID0gMHglMC44
cCkiLAorICAgICAgICAgIHByb2dyYW0sIGluZGV4LCBidWZzaXplLCBsZW5ndGgsIHNpemUsIHR5
cGUsIG5hbWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoYnVmc2l6ZSA8IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJv
Z3JhbSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoaW5kZXggPj0gKEdMdWludClwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVV
bmlmb3JtQ291bnQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBw
cm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVVbmlmb3JtKGluZGV4LCBidWZzaXplLCBsZW5ndGgsIHNp
emUsIHR5cGUsIG5hbWUpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldEF0dGFjaGVkU2hhZGVycyhHTHVpbnQg
cHJvZ3JhbSwgR0xzaXplaSBtYXhjb3VudCwgR0xzaXplaSogY291bnQsIEdMdWludCogc2hhZGVy
cykKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMc2l6ZWkgbWF4Y291bnQg
PSAlZCwgR0xzaXplaSogY291bnQgPSAweCUwLjhwLCBHTHVpbnQqIHNoYWRlcnMgPSAweCUwLjhw
KSIsCisgICAgICAgICAgcHJvZ3JhbSwgbWF4Y291bnQsIGNvdW50LCBzaGFkZXJzKTsKKworICAg
IHRyeQorICAgIHsKKyAgICAgICAgaWYgKG1heGNvdW50IDwgMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFt
ICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAg
ICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwcm9ncmFtT2JqZWN0LT5nZXRBdHRhY2hlZFNoYWRlcnMobWF4Y291bnQsIGNvdW50LCBzaGFk
ZXJzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAg
eworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30K
KworaW50IF9fc3RkY2FsbCBnbEdldEF0dHJpYkxvY2F0aW9uKEdMdWludCBwcm9ncmFtLCBjb25z
dCBHTGNoYXIqIG5hbWUpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBjb25z
dCBHTGNoYXIqIG5hbWUgPSAlcykiLCBwcm9ncmFtLCBuYW1lKTsKKworICAgIHRyeQorICAgIHsK
KyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsK
KworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworCisgICAgICAgICAgICBnbDo6UHJv
Z3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisKKyAg
ICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgLTEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfVkFMVUUsIC0xKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gcHJvZ3JhbU9iamVjdC0+
Z2V0UHJvZ3JhbUJpbmFyeSgpOworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0LT5pc0xp
bmtlZCgpIHx8ICFwcm9ncmFtQmluYXJ5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIC0xKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgcmV0dXJuIHByb2dyYW1CaW5hcnktPmdldEF0dHJpYnV0ZUxvY2F0
aW9uKG5hbWUpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
KyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgLTEpOwor
ICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRCb29sZWFu
dihHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiogcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0xlbnVt
IHBuYW1lID0gMHglWCwgR0xib29sZWFuKiBwYXJhbXMgPSAweCUwLjhwKSIsICBwbmFtZSwgcGFy
YW1zKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKCEoY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUsIHBhcmFtcykp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEdMZW51bSBuYXRpdmVUeXBlOworICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSAwOworICAgICAgICAgICAgICAg
IGlmICghY29udGV4dC0+Z2V0UXVlcnlQYXJhbWV0ZXJJbmZvKHBuYW1lLCAmbmF0aXZlVHlwZSwg
Jm51bVBhcmFtcykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsKKworICAgICAgICAgICAgICAgIGlmIChudW1QYXJhbXMgPT0gMCkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBpdCBpcyBrbm93biB0aGF0IHRoZSBwbmFtZSBpcyB2
YWxpZCwgYnV0IHRoZXJlIGFyZSBubyBwYXJhbWV0ZXJzIHRvIHJldHVybgorCisgICAgICAgICAg
ICAgICAgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfRkxPQVQpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0ICpmbG9hdFBhcmFtcyA9IE5VTEw7CisgICAgICAgICAg
ICAgICAgICAgIGZsb2F0UGFyYW1zID0gbmV3IEdMZmxvYXRbbnVtUGFyYW1zXTsKKworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIGZsb2F0UGFyYW1zKTsKKwor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVBhcmFt
czsgKytpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZmxvYXRQYXJhbXNbaV0gPT0gMC4wZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXNbaV0gPSBHTF9GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbaV0gPSBHTF9UUlVFOworICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFtdIGZsb2F0UGFyYW1zOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChuYXRpdmVUeXBlID09
IEdMX0lOVCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEdMaW50ICpp
bnRQYXJhbXMgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBpbnRQYXJhbXMgPSBuZXcgR0xp
bnRbbnVtUGFyYW1zXTsKKworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2Vy
dihwbmFtZSwgaW50UGFyYW1zKTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IG51bVBhcmFtczsgKytpKQorICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW50UGFyYW1zW2ldID09IDApCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gR0xfRkFMU0U7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gR0xf
VFJVRTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGRlbGV0
ZSBbXSBpbnRQYXJhbXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbEdldEJ1ZmZlclBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
R0xpbnQqIHBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVu
dW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLCB0YXJnZXQsIHBuYW1l
LCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICBnbDo6QnVmZmVyICpidWZmZXI7CisKKyAgICAgICAgICAgIHN3
aXRjaCAodGFyZ2V0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0FSUkFZ
X0JVRkZFUjoKKyAgICAgICAgICAgICAgICBidWZmZXIgPSBjb250ZXh0LT5nZXRBcnJheUJ1ZmZl
cigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0VMRU1F
TlRfQVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQtPmdldEVs
ZW1lbnRBcnJheUJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBkZWZhdWx0OiByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIC8vIEEgbnVsbCBidWZmZXIgbWVhbnMgdGhhdCAiMCIgaXMgYm91bmQgdG8gdGhlIHJl
cXVlc3RlZCBidWZmZXIgdGFyZ2V0CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRj
aCAocG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfQlVGRkVSX1VT
QUdFOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSBidWZmZXItPnVzYWdlKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQlVGRkVSX1NJWkU6CisgICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IGJ1ZmZlci0+c2l6ZSgpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
RU5VTSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK0dMZW51bSBfX3N0ZGNhbGwgZ2xHZXRFcnJvcih2b2lkKQorewor
ICAgIEVWRU5UKCIoKSIpOworCisgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Q29u
dGV4dCgpOworCisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gY29udGV4
dC0+Z2V0RXJyb3IoKTsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfTk9fRVJST1I7Cit9CisKK3Zv
aWQgX19zdGRjYWxsIGdsR2V0RmVuY2Vpdk5WKEdMdWludCBmZW5jZSwgR0xlbnVtIHBuYW1lLCBH
TGludCAqcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0x1aW50IGZlbmNlID0gJWQsIEdMZW51bSBw
bmFtZSA9IDB4JVgsIEdMaW50ICpwYXJhbXMgPSAweCUwLjhwKSIsIGZlbmNlLCBwbmFtZSwgcGFy
YW1zKTsKKworICAgIHRyeQorICAgIHsKKyAgICAKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZ2w6OkZlbmNlICpmZW5jZU9iamVjdCA9IGNvbnRleHQtPmdl
dEZlbmNlKGZlbmNlKTsKKworICAgICAgICAgICAgaWYgKGZlbmNlT2JqZWN0ID09IE5VTEwpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZlbmNlT2JqZWN0LT5n
ZXRGZW5jZWl2KHBuYW1lLCBwYXJhbXMpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldEZsb2F0dihHTGVudW0g
cG5hbWUsIEdMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSBwbmFtZSA9IDB4
JVgsIEdMZmxvYXQqIHBhcmFtcyA9IDB4JTAuOHApIiwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICghKGNvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgcGFyYW1zKSkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgR0xlbnVtIG5hdGl2ZVR5cGU7CisgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IG51bVBhcmFtcyA9IDA7CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5n
ZXRRdWVyeVBhcmFtZXRlckluZm8ocG5hbWUsICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworCisg
ICAgICAgICAgICAgICAgaWYgKG51bVBhcmFtcyA9PSAwKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47IC8vIGl0IGlzIGtub3duIHRoYXQgdGhlIHBuYW1lIGlzIHZhbGlkLCBidXQgdGhhdCB0
aGVyZSBhcmUgbm8gcGFyYW1ldGVycyB0byByZXR1cm4uCisKKyAgICAgICAgICAgICAgICBpZiAo
bmF0aXZlVHlwZSA9PSBHTF9CT09MKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuICpib29sUGFyYW1zID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAg
Ym9vbFBhcmFtcyA9IG5ldyBHTGJvb2xlYW5bbnVtUGFyYW1zXTsKKworICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgYm9vbFBhcmFtcyk7CisKKyAgICAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvb2xQ
YXJhbXNbaV0gPT0gR0xfRkFMU0UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
W2ldID0gMC4wZjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbXNbaV0gPSAxLjBmOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFtdIGJvb2xQYXJhbXM7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfSU5UKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgR0xpbnQgKmludFBhcmFtcyA9IE5V
TEw7CisgICAgICAgICAgICAgICAgICAgIGludFBhcmFtcyA9IG5ldyBHTGludFtudW1QYXJhbXNd
OworCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCBpbnRQ
YXJhbXMpOworCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgbnVtUGFyYW1zOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtc1tpXSA9IChHTGZsb2F0KWludFBhcmFtc1tpXTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBbXSBpbnRQYXJhbXM7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50
LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFy
Z2V0ID0gMHglWCwgR0xlbnVtIGF0dGFjaG1lbnQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVY
LCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICAgIHRhcmdldCwgYXR0YWNobWVu
dCwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gR0xfRlJBTUVCVUZGRVIg
JiYgdGFyZ2V0ICE9IEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUgJiYgdGFyZ2V0ICE9IEdMX1JF
QURfRlJBTUVCVUZGRVJfQU5HTEUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXQgPT0gR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZihjb250ZXh0LT5nZXRSZWFkRnJhbWVidWZmZXJIYW5kbGUoKSA9PSAw
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRSZWFkRnJhbWVidWZmZXIoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZlckhhbmRsZSgpID09IDApCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmcmFt
ZWJ1ZmZlciA9IGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudFR5cGU7CisgICAgICAgICAgICBHTHVpbnQg
YXR0YWNobWVudEhhbmRsZTsKKworICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQgPj0gR0xfQ09M
T1JfQVRUQUNITUVOVDBfRVhUICYmIGF0dGFjaG1lbnQgPD0gR0xfQ09MT1JfQVRUQUNITUVOVDE1
X0VYVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
Y29sb3JBdHRhY2htZW50ID0gKGF0dGFjaG1lbnQgLSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQp
OworCisgICAgICAgICAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudCA+PSBjb250ZXh0LT5nZXRN
YXhpbXVtUmVuZGVyVGFyZ2V0cygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRUeXBlID0gZnJhbWVidWZmZXItPmdldENv
bG9yYnVmZmVyVHlwZShjb2xvckF0dGFjaG1lbnQpOworICAgICAgICAgICAgICAgIGF0dGFjaG1l
bnRIYW5kbGUgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXJIYW5kbGUoY29sb3JBdHRhY2ht
ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgICAg
ICAgICBhdHRhY2htZW50VHlwZSA9IGZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1ZmZlclR5cGUoKTsK
KyAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudEhhbmRsZSA9IGZyYW1lYnVmZmVyLT5nZXRE
ZXB0aGJ1ZmZlckhhbmRsZSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgICAgICAg
ICBhdHRhY2htZW50VHlwZSA9IGZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyVHlwZSgpOwor
ICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50SGFuZGxlID0gZnJhbWVidWZmZXItPmdldFN0
ZW5jaWxidWZmZXJIYW5kbGUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBHTGVudW0gYXR0
YWNobWVudE9iamVjdFR5cGU7ICAgLy8gVHlwZSBjYXRlZ29yeQorICAgICAgICAgICAgaWYgKGF0
dGFjaG1lbnRUeXBlID09IEdMX05PTkUgfHwgYXR0YWNobWVudFR5cGUgPT0gR0xfUkVOREVSQlVG
RkVSKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRPYmplY3RUeXBl
ID0gYXR0YWNobWVudFR5cGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChn
bDo6SXNJbnRlcm5hbFRleHR1cmVUYXJnZXQoYXR0YWNobWVudFR5cGUpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRPYmplY3RUeXBlID0gR0xfVEVYVFVSRTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFOgorICAgICAg
ICAgICAgICAgICpwYXJhbXMgPSBhdHRhY2htZW50T2JqZWN0VHlwZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9OQU1FOgorICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50T2JqZWN0VHlwZSA9PSBH
TF9SRU5ERVJCVUZGRVIgfHwgYXR0YWNobWVudE9iamVjdFR5cGUgPT0gR0xfVEVYVFVSRSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBhdHRhY2htZW50
SGFuZGxlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDoK
KyAgICAgICAgICAgICAgICBpZiAoYXR0YWNobWVudE9iamVjdFR5cGUgPT0gR0xfVEVYVFVSRSkK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSAwOyAvLyBG
cmFtZWJ1ZmZlclRleHR1cmUyRCB3aWxsIG5vdCBhbGxvdyBsZXZlbCB0byBiZSBzZXQgdG8gYW55
dGhpbmcgZWxzZSBpbiBHTCBFUyAyLjAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X1RFWFRVUkVfQ1VCRV9NQVBfRkFDRToKKyAgICAgICAgICAgICAgICBpZiAoYXR0YWNobWVudE9i
amVjdFR5cGUgPT0gR0xfVEVYVFVSRSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChnbDo6SXNDdWJlbWFwVGV4dHVyZVRhcmdldChhdHRhY2htZW50VHlwZSkpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBh
dHRhY2htZW50VHlwZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpw
YXJhbXMgPSAwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCitHTGVu
dW0gX19zdGRjYWxsIGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCh2b2lkKQoreworICAgIEVW
RU5UKCIoKSIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXRDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5nZXRSZXNldFN0YXR1cygpOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIEdMX05PX0VSUk9SOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJh
ZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICB9
Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0SW50ZWdlcnYoR0xlbnVtIHBuYW1lLCBHTGludCog
cGFyYW1zKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQqIHBhcmFt
cyA9IDB4JTAuOHApIiwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAg
ICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghKGNvbnRleHQtPmdl
dEludGVnZXJ2KHBuYW1lLCBwYXJhbXMpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBHTGVudW0gbmF0aXZlVHlwZTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUGFy
YW1zID0gMDsKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldFF1ZXJ5UGFyYW1ldGVy
SW5mbyhwbmFtZSwgJm5hdGl2ZVR5cGUsICZudW1QYXJhbXMpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisKKyAgICAgICAgICAgICAgICBp
ZiAobnVtUGFyYW1zID09IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gaXQgaXMg
a25vd24gdGhhdCBwbmFtZSBpcyB2YWxpZCwgYnV0IHRoZXJlIGFyZSBubyBwYXJhbWV0ZXJzIHRv
IHJldHVybgorCisgICAgICAgICAgICAgICAgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfQk9PTCkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiAqYm9vbFBhcmFt
cyA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGJvb2xQYXJhbXMgPSBuZXcgR0xib29sZWFu
W251bVBhcmFtc107CisKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0Qm9vbGVhbnYo
cG5hbWUsIGJvb2xQYXJhbXMpOworCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgbnVtUGFyYW1zOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChib29sUGFyYW1zW2ldID09IEdMX0ZBTFNFKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IDA7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gMTsK
KyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBbXSBi
b29sUGFyYW1zOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChu
YXRpdmVUeXBlID09IEdMX0ZMT0FUKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCAqZmxvYXRQYXJhbXMgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBm
bG9hdFBhcmFtcyA9IG5ldyBHTGZsb2F0W251bVBhcmFtc107CisKKyAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCBmbG9hdFBhcmFtcyk7CisKKyAgICAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBuYW1lID09
IEdMX0RFUFRIX1JBTkdFIHx8IHBuYW1lID09IEdMX0NPTE9SX0NMRUFSX1ZBTFVFIHx8IHBuYW1l
ID09IEdMX0RFUFRIX0NMRUFSX1ZBTFVFIHx8IHBuYW1lID09IEdMX0JMRU5EX0NPTE9SKQorICAg
ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFt
c1tpXSA9IChHTGludCkoKChHTGZsb2F0KSgweEZGRkZGRkZGKSAqIGZsb2F0UGFyYW1zW2ldIC0g
MS4wZikgLyAyLjBmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbaV0gPSAo
R0xpbnQpKGZsb2F0UGFyYW1zW2ldID4gMC4wZiA/IGZsb29yKGZsb2F0UGFyYW1zW2ldICsgMC41
KSA6IGNlaWwoZmxvYXRQYXJhbXNbaV0gLSAwLjUpKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBbXSBmbG9hdFBhcmFtczsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0UHJvZ3JhbWl2KEdMdWludCBw
cm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTHVp
bnQgcHJvZ3JhbSA9ICVkLCBHTGVudW0gcG5hbWUgPSAlZCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAu
OHApIiwgcHJvZ3JhbSwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAg
ICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9n
cmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAg
aWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xf
REVMRVRFX1NUQVRVUzoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+
aXNGbGFnZ2VkRm9yRGVsZXRpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgIGNhc2UgR0xfTElOS19TVEFUVVM6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHBy
b2dyYW1PYmplY3QtPmlzTGlua2VkKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICBjYXNlIEdMX1ZBTElEQVRFX1NUQVRVUzoKKyAgICAgICAgICAgICAgICAqcGFyYW1z
ID0gcHJvZ3JhbU9iamVjdC0+aXNWYWxpZGF0ZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgIGNhc2UgR0xfSU5GT19MT0dfTEVOR1RIOgorICAgICAgICAgICAgICAg
ICpwYXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5nZXRJbmZvTG9nTGVuZ3RoKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlIEdMX0FUVEFDSEVEX1NIQURFUlM6Cisg
ICAgICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdldEF0dGFjaGVkU2hhZGVy
c0NvdW50KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlIEdM
X0FDVElWRV9BVFRSSUJVVEVTOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtT2Jq
ZWN0LT5nZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEg6CisgICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZUF0dHJpYnV0ZU1h
eExlbmd0aCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgY2FzZSBH
TF9BQ1RJVkVfVU5JRk9STVM6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmpl
Y3QtPmdldEFjdGl2ZVVuaWZvcm1Db3VudCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIOgorICAgICAgICAg
ICAgICAgICpwYXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVVbmlmb3JtTWF4TGVuZ3Ro
KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlIEdMX1BST0dS
QU1fQklOQVJZX0xFTkdUSF9PRVM6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1P
YmplY3QtPmdldFByb2dyYW1CaW5hcnlMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAg
IGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldFByb2dy
YW1JbmZvTG9nKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0
aCwgR0xjaGFyKiBpbmZvbG9nKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwg
R0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxlbmd0aCA9IDB4JTAuOHAsIEdMY2hhciog
aW5mb2xvZyA9IDB4JTAuOHApIiwKKyAgICAgICAgICBwcm9ncmFtLCBidWZzaXplLCBsZW5ndGgs
IGluZm9sb2cpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoYnVmc2l6ZSA8IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJv
Z3JhbSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBwcm9ncmFtT2JqZWN0LT5nZXRJbmZvTG9nKGJ1ZnNp
emUsIGxlbmd0aCwgaW5mb2xvZyk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0UXVlcnlpdkVYVChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoIkdMZW51
bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCAqcGFyYW1zID0gMHgl
MC44cCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgICAg
ICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1FV
RVJZX0VYVDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAg
ICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisg
ICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBwYXJhbXNbMF0gPSBj
b250ZXh0LT5nZXRBY3RpdmVRdWVyeSh0YXJnZXQpOworICAgICAgICB9CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldFF1ZXJ5T2Jq
ZWN0dWl2RVhUKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcykKK3sKKyAg
ICBFVkVOVCgiKEdMdWludCBpZCA9ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHVpbnQgKnBh
cmFtcyA9IDB4JTAuOHApIiwgaWQsIHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9RVUVS
WV9SRVNVTFRfRVhUOgorICAgICAgICAgIGNhc2UgR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9F
WFQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpRdWVyeSAqcXVlcnlPYmpl
Y3QgPSBjb250ZXh0LT5nZXRRdWVyeShpZCwgZmFsc2UsIEdMX05PTkUpOworCisgICAgICAgICAg
ICBpZiAoIXF1ZXJ5T2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoY29udGV4dC0+Z2V0QWN0aXZlUXVlcnkocXVlcnlPYmplY3QtPmdldFR5cGUo
KSkgPT0gaWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3
aXRjaChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9RVUVSWV9S
RVNVTFRfRVhUOgorICAgICAgICAgICAgICAgIHBhcmFtc1swXSA9IHF1ZXJ5T2JqZWN0LT5nZXRS
ZXN1bHQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9R
VUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVDoKKyAgICAgICAgICAgICAgICBwYXJhbXNbMF0gPSBx
dWVyeU9iamVjdC0+aXNSZXN1bHRBdmFpbGFibGUoKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlQoZmFsc2UpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9j
JikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Cisg
ICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKK3sKKyAgICBFVkVOVCgi
KEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1z
ID0gMHglMC44cCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwor
CisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGFyZ2V0
ICE9IEdMX1JFTkRFUkJVRkZFUikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5nZXRSZW5kZXJidWZmZXJIYW5kbGUoKSA9PSAwKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnbDo6UmVuZGVyYnVmZmVyICpyZW5k
ZXJidWZmZXIgPSBjb250ZXh0LT5nZXRSZW5kZXJidWZmZXIoY29udGV4dC0+Z2V0UmVuZGVyYnVm
ZmVySGFuZGxlKCkpOworCisgICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9XSURUSDogICAgICAgICAgICpw
YXJhbXMgPSByZW5kZXJidWZmZXItPmdldFdpZHRoKCk7ICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9IRUlHSFQ6ICAgICAgICAgICpwYXJhbXMgPSBy
ZW5kZXJidWZmZXItPmdldEhlaWdodCgpOyAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIEdMX1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQ6ICpwYXJhbXMgPSByZW5kZXJidWZm
ZXItPmdldEludGVybmFsRm9ybWF0KCk7IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1JF
TkRFUkJVRkZFUl9SRURfU0laRTogICAgICAgICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldFJl
ZFNpemUoKTsgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZF
Ul9HUkVFTl9TSVpFOiAgICAgICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldEdyZWVuU2l6ZSgp
OyAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9CTFVFX1NJ
WkU6ICAgICAgICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldEJsdWVTaXplKCk7ICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFOiAgICAg
ICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldEFscGhhU2l6ZSgpOyAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9ERVBUSF9TSVpFOiAgICAgICpwYXJhbXMg
PSByZW5kZXJidWZmZXItPmdldERlcHRoU2l6ZSgpOyAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkU6ICAgICpwYXJhbXMgPSByZW5kZXJi
dWZmZXItPmdldFN0ZW5jaWxTaXplKCk7ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdM
X1JFTkRFUkJVRkZFUl9TQU1QTEVTX0FOR0xFOgorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0
LT5nZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgIT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldFNhbXBsZXMoKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5V
TSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0U2hhZGVyaXYoR0x1aW50IHNoYWRl
ciwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0x1aW50IHNo
YWRlciA9ICVkLCBHTGVudW0gcG5hbWUgPSAlZCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwg
c2hhZGVyLCBwbmFtZSwgcGFyYW1zKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAo
Y29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlNoYWRlciAqc2hhZGVyT2JqZWN0
ID0gY29udGV4dC0+Z2V0U2hhZGVyKHNoYWRlcik7CisKKyAgICAgICAgICAgIGlmICghc2hhZGVy
T2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAo
cG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfU0hBREVSX1RZUEU6
CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHNoYWRlck9iamVjdC0+Z2V0VHlwZSgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9ERUxFVEVfU1RBVFVT
OgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSBzaGFkZXJPYmplY3QtPmlzRmxhZ2dlZEZvckRl
bGV0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlIEdM
X0NPTVBJTEVfU1RBVFVTOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSBzaGFkZXJPYmplY3Qt
PmlzQ29tcGlsZWQoKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgIGNhc2UgR0xfSU5GT19MT0dfTEVOR1RIOgorICAgICAgICAgICAg
ICAgICpwYXJhbXMgPSBzaGFkZXJPYmplY3QtPmdldEluZm9Mb2dMZW5ndGgoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgR0xfU0hBREVSX1NPVVJDRV9MRU5H
VEg6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHNoYWRlck9iamVjdC0+Z2V0U291cmNlTGVu
Z3RoKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlIEdMX1RS
QU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEU6CisgICAgICAgICAgICAgICAgKnBh
cmFtcyA9IHNoYWRlck9iamVjdC0+Z2V0VHJhbnNsYXRlZFNvdXJjZUxlbmd0aCgpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19z
dGRjYWxsIGdsR2V0U2hhZGVySW5mb0xvZyhHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUs
IEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBpbmZvbG9nKQoreworICAgIEVWRU5UKCIoR0x1aW50
IHNoYWRlciA9ICVkLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gMHgl
MC44cCwgR0xjaGFyKiBpbmZvbG9nID0gMHglMC44cCkiLAorICAgICAgICAgIHNoYWRlciwgYnVm
c2l6ZSwgbGVuZ3RoLCBpbmZvbG9nKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGJ1
ZnNpemUgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZ2w6OlNoYWRlciAqc2hhZGVyT2JqZWN0ID0gY29udGV4dC0+Z2V0
U2hhZGVyKHNoYWRlcik7CisKKyAgICAgICAgICAgIGlmICghc2hhZGVyT2JqZWN0KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNoYWRlck9iamVjdC0+Z2V0SW5mb0xv
ZyhidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldFNoYWRlclByZWNp
c2lvbkZvcm1hdChHTGVudW0gc2hhZGVydHlwZSwgR0xlbnVtIHByZWNpc2lvbnR5cGUsIEdMaW50
KiByYW5nZSwgR0xpbnQqIHByZWNpc2lvbikKK3sKKyAgICBFVkVOVCgiKEdMZW51bSBzaGFkZXJ0
eXBlID0gMHglWCwgR0xlbnVtIHByZWNpc2lvbnR5cGUgPSAweCVYLCBHTGludCogcmFuZ2UgPSAw
eCUwLjhwLCBHTGludCogcHJlY2lzaW9uID0gMHglMC44cCkiLAorICAgICAgICAgIHNoYWRlcnR5
cGUsIHByZWNpc2lvbnR5cGUsIHJhbmdlLCBwcmVjaXNpb24pOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBzd2l0Y2ggKHNoYWRlcnR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdM
X1ZFUlRFWF9TSEFERVI6CisgICAgICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChw
cmVjaXNpb250eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9MT1dfRkxPQVQ6Cisg
ICAgICAgICAgY2FzZSBHTF9NRURJVU1fRkxPQVQ6CisgICAgICAgICAgY2FzZSBHTF9ISUdIX0ZM
T0FUOgorICAgICAgICAgICAgLy8gQXNzdW1lIElFRUUgNzU0IHByZWNpc2lvbgorICAgICAgICAg
ICAgcmFuZ2VbMF0gPSAxMjc7CisgICAgICAgICAgICByYW5nZVsxXSA9IDEyNzsKKyAgICAgICAg
ICAgICpwcmVjaXNpb24gPSAyMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2Ug
R0xfTE9XX0lOVDoKKyAgICAgICAgICBjYXNlIEdMX01FRElVTV9JTlQ6CisgICAgICAgICAgY2Fz
ZSBHTF9ISUdIX0lOVDoKKyAgICAgICAgICAgIC8vIFNvbWUgKG1vc3QpIGhhcmR3YXJlIG9ubHkg
c3VwcG9ydHMgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBudW1iZXJzLAorICAgICAg
ICAgICAgLy8gd2hpY2ggY2FuIGFjY3VyYXRlbHkgcmVwcmVzZW50IGludGVnZXJzIHVwIHRvICsv
LTE2Nzc3MjE2CisgICAgICAgICAgICByYW5nZVswXSA9IDI0OworICAgICAgICAgICAgcmFuZ2Vb
MV0gPSAyNDsKKyAgICAgICAgICAgICpwcmVjaXNpb24gPSAwOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
IH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRTaGFkZXJTb3VyY2UoR0x1aW50IHNoYWRlciwg
R0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMY2hhciogc291cmNlKQoreworICAg
IEVWRU5UKCIoR0x1aW50IHNoYWRlciA9ICVkLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXpl
aSogbGVuZ3RoID0gMHglMC44cCwgR0xjaGFyKiBzb3VyY2UgPSAweCUwLjhwKSIsCisgICAgICAg
ICAgc2hhZGVyLCBidWZzaXplLCBsZW5ndGgsIHNvdXJjZSk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGlmIChidWZzaXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNv
bnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpTaGFkZXIgKnNoYWRlck9iamVjdCA9
IGNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpOworCisgICAgICAgICAgICBpZiAoIXNoYWRlck9i
amVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hhZGVy
T2JqZWN0LT5nZXRTb3VyY2UoYnVmc2l6ZSwgbGVuZ3RoLCBzb3VyY2UpOworICAgICAgICB9Cisg
ICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBn
bEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1
ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBzb3VyY2UpCit7CisgICAgRVZFTlQoIihH
THVpbnQgc2hhZGVyID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGgg
PSAweCUwLjhwLCBHTGNoYXIqIHNvdXJjZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBzaGFkZXIs
IGJ1ZnNpemUsIGxlbmd0aCwgc291cmNlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYg
KGJ1ZnNpemUgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZ2w6OlNoYWRlciAqc2hhZGVyT2JqZWN0ID0gY29udGV4dC0+
Z2V0U2hhZGVyKHNoYWRlcik7CisKKyAgICAgICAgICAgIGlmICghc2hhZGVyT2JqZWN0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaGFkZXJPYmplY3QtPmdl
dFRyYW5zbGF0ZWRTb3VyY2UoYnVmc2l6ZSwgbGVuZ3RoLCBzb3VyY2UpOworICAgICAgICB9Cisg
ICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCitjb25zdCBHTHVieXRlKiBf
X3N0ZGNhbGwgZ2xHZXRTdHJpbmcoR0xlbnVtIG5hbWUpCit7CisgICAgRVZFTlQoIihHTGVudW0g
bmFtZSA9IDB4JVgpIiwgbmFtZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgc3dpdGNo
IChuYW1lKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9WRU5ET1I6CisgICAgICAgICAg
ICByZXR1cm4gKEdMdWJ5dGUqKSJHb29nbGUgSW5jLiI7CisgICAgICAgICAgY2FzZSBHTF9SRU5E
RVJFUjoKKyAgICAgICAgICAgIHJldHVybiAoR0x1Ynl0ZSopKChjb250ZXh0ICE9IE5VTEwpID8g
Y29udGV4dC0+Z2V0UmVuZGVyZXJTdHJpbmcoKSA6ICJBTkdMRSIpOworICAgICAgICAgIGNhc2Ug
R0xfVkVSU0lPTjoKKyAgICAgICAgICAgIHJldHVybiAoR0x1Ynl0ZSopIk9wZW5HTCBFUyAyLjAg
KEFOR0xFICIgVkVSU0lPTl9TVFJJTkcgIikiOworICAgICAgICAgIGNhc2UgR0xfU0hBRElOR19M
QU5HVUFHRV9WRVJTSU9OOgorICAgICAgICAgICAgcmV0dXJuIChHTHVieXRlKikiT3BlbkdMIEVT
IEdMU0wgRVMgMS4wMCAoQU5HTEUgIiBWRVJTSU9OX1NUUklORyAiKSI7CisgICAgICAgICAgY2Fz
ZSBHTF9FWFRFTlNJT05TOgorICAgICAgICAgICAgcmV0dXJuIChHTHVieXRlKikoKGNvbnRleHQg
IT0gTlVMTCkgPyBjb250ZXh0LT5nZXRFeHRlbnNpb25TdHJpbmcoKSA6ICIiKTsKKyAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0s
IChHTHVieXRlKilOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlks
IChHTHVieXRlKilOVUxMKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0VGV4UGFy
YW1ldGVyZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0KiBwYXJhbXMpCit7
CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwg
R0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZTsKKworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAg
ICAgICAgICAgICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUDoKKyAg
ICAgICAgICAgICAgICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAo
R0xmbG9hdCl0ZXh0dXJlLT5nZXRNYWdGaWx0ZXIoKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6CisgICAgICAgICAgICAg
ICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldE1pbkZpbHRlcigpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOgorICAg
ICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5nZXRXcmFwUygpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9U
OgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5nZXRXcmFwVCgp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
SU1NVVRBQkxFX0ZPUk1BVF9FWFQ6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0
KSh0ZXh0dXJlLT5pc0ltbXV0YWJsZSgpID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1VTQUdFX0FOR0xF
OgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5nZXRVc2FnZSgp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
TUFYX0FOSVNPVFJPUFlfRVhUOgorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9y
dHNUZXh0dXJlRmlsdGVyQW5pc290cm9weSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0
TWF4QW5pc290cm9weSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVN
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRUZXhQYXJhbWV0ZXJpdihHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTGVu
dW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQqIHBhcmFtcyA9IDB4
JTAuOHApIiwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRl
eHR1cmU7CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAgICAgICAgICAgICAgdGV4dHVyZSA9
IGNvbnRleHQtPmdldFRleHR1cmUyRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVA6CisgICAgICAgICAgICAgICAgdGV4dHVy
ZSA9IGNvbnRleHQtPmdldFRleHR1cmVDdWJlTWFwKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2gg
KHBuYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUjoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+Z2V0TWFnRmlsdGVy
KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9NSU5fRklMVEVSOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRNaW5G
aWx0ZXIoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX1dSQVBfUzoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+Z2V0V3Jh
cFMoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhU
VVJFX1dSQVBfVDoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+Z2V0V3JhcFQo
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJF
X0lNTVVUQUJMRV9GT1JNQVRfRVhUOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJl
LT5pc0ltbXV0YWJsZSgpID8gR0xfVFJVRSA6IEdMX0ZBTFNFOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfVVNBR0VfQU5HTEU6CisgICAgICAg
ICAgICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdldFVzYWdlKCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6
CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlz
b3Ryb3B5KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICpwYXJhbXMgPSAoR0xpbnQpdGV4dHVyZS0+Z2V0TWF4QW5pc290cm9weSgpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBf
X3N0ZGNhbGwgZ2xHZXRuVW5pZm9ybWZ2RVhUKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlv
biwgR0xzaXplaSBidWZTaXplLCBHTGZsb2F0KiBwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTHVp
bnQgcHJvZ3JhbSA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGJ1ZlNpemUgPSAl
ZCwgR0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLAorICAgICAgICAgIHByb2dyYW0sIGxvY2F0
aW9uLCBidWZTaXplLCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoYnVm
U2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAocHJvZ3JhbSA9PSAwKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+
Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0IHx8
ICFwcm9ncmFtT2JqZWN0LT5pc0xpbmtlZCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IHByb2dy
YW1PYmplY3QtPmdldFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJp
bmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFw
cm9ncmFtQmluYXJ5LT5nZXRVbmlmb3JtZnYobG9jYXRpb24sICZidWZTaXplLCBwYXJhbXMpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldFVuaWZvcm1mdihH
THVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBF
VkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMZmxvYXQq
IHBhcmFtcyA9IDB4JTAuOHApIiwgcHJvZ3JhbSwgbG9jYXRpb24sIHBhcmFtcyk7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChwcm9ncmFtID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dy
YW0pOworCisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QgfHwgIXByb2dyYW1PYmplY3Qt
PmlzTGlua2VkKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gcHJvZ3JhbU9iamVjdC0+Z2V0UHJv
Z3JhbUJpbmFyeSgpOworICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnktPmdl
dFVuaWZvcm1mdihsb2NhdGlvbiwgTlVMTCwgcGFyYW1zKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0K
K30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRuVW5pZm9ybWl2RVhUKEdMdWludCBwcm9ncmFtLCBH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGludCogcGFyYW1zKQoreworICAgIEVW
RU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBi
dWZTaXplID0gJWQsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIAorICAgICAgICAgIHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgICAg
ICBpZiAoYnVmU2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocHJvZ3JhbSA9PSAwKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0g
Y29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFt
T2JqZWN0IHx8ICFwcm9ncmFtT2JqZWN0LT5pc0xpbmtlZCgpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFy
eSA9IHByb2dyYW1PYmplY3QtPmdldFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICgh
cHJvZ3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5nZXRVbmlmb3JtaXYobG9jYXRpb24sICZidWZTaXplLCBw
YXJhbXMpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldFVu
aWZvcm1pdihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50KiBwYXJhbXMpCit7
CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBH
TGludCogcGFyYW1zID0gMHglMC44cCkiLCBwcm9ncmFtLCBsb2NhdGlvbiwgcGFyYW1zKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9u
TG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHByb2dyYW0gPT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0o
cHJvZ3JhbSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCB8fCAhcHJvZ3JhbU9i
amVjdC0+aXNMaW5rZWQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBwcm9ncmFtT2JqZWN0LT5n
ZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFy
eS0+Z2V0VW5pZm9ybWl2KGxvY2F0aW9uLCBOVUxMLCBwYXJhbXMpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9j
JikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Cisg
ICAgfQorfQorCitpbnQgX19zdGRjYWxsIGdsR2V0VW5pZm9ybUxvY2F0aW9uKEdMdWludCBwcm9n
cmFtLCBjb25zdCBHTGNoYXIqIG5hbWUpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9
ICVkLCBjb25zdCBHTGNoYXIqIG5hbWUgPSAweCUwLjhwKSIsIHByb2dyYW0sIG5hbWUpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChzdHJzdHIobmFtZSwgImdsXyIpID09IG5hbWUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3Jh
bU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgICAgIGlm
ICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY29u
dGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgLTEpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUsIC0x
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpQ
cm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gcHJvZ3JhbU9iamVjdC0+Z2V0UHJvZ3JhbUJp
bmFyeSgpOworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0LT5pc0xpbmtlZCgpIHx8ICFw
cm9ncmFtQmluYXJ5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIC0xKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHByb2dyYW1CaW5hcnktPmdldFVuaWZvcm1Mb2NhdGlvbihuYW1lKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIC0xKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gLTE7Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0VmVydGV4QXR0cmliZnYoR0x1aW50
IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdM
dWludCBpbmRleCA9ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGZsb2F0KiBwYXJhbXMgPSAw
eCUwLjhwKSIsIGluZGV4LCBwbmFtZSwgcGFyYW1zKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGluZGV4ID49IGds
OjpNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliU3RhdGUgPSBjb250ZXh0LT5n
ZXRWZXJ0ZXhBdHRyaWJTdGF0ZShpbmRleCk7CisKKyAgICAgICAgICAgIHN3aXRjaCAocG5hbWUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJB
WV9FTkFCTEVEOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCkoYXR0cmliU3Rh
dGUubUFycmF5RW5hYmxlZCA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFOgor
ICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdClhdHRyaWJTdGF0ZS5tU2l6ZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklC
X0FSUkFZX1NUUklERToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpYXR0cmli
U3RhdGUubVN0cmlkZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEU6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9
IChHTGZsb2F0KWF0dHJpYlN0YXRlLm1UeXBlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRDoKKyAgICAg
ICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpKGF0dHJpYlN0YXRlLm1Ob3JtYWxpemVkID8g
R0xfVFJVRSA6IEdMX0ZBTFNFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICAg
ICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdClhdHRyaWJTdGF0ZS5tQm91bmRCdWZmZXIuaWQoKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1ZF
UlRFWF9BVFRSSUI6CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBwYXJhbXNbaV0gPSBhdHRy
aWJTdGF0ZS5tQ3VycmVudFZhbHVlW2ldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0RJ
VklTT1JfQU5HTEU6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KWF0dHJpYlN0
YXRlLm1EaXZpc29yOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZh
dWx0OiByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsR2V0VmVydGV4QXR0cmliaXYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUs
IEdMaW50KiBwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwgR0xlbnVt
IHBuYW1lID0gMHglWCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwgaW5kZXgsIHBuYW1lLCBw
YXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4QXR0
cmlidXRlICZhdHRyaWJTdGF0ZSA9IGNvbnRleHQtPmdldFZlcnRleEF0dHJpYlN0YXRlKGluZGV4
KTsKKworICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQ6CisgICAgICAgICAgICAg
ICAgKnBhcmFtcyA9IChhdHRyaWJTdGF0ZS5tQXJyYXlFbmFibGVkID8gR0xfVFJVRSA6IEdMX0ZB
TFNFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9WRVJU
RVhfQVRUUklCX0FSUkFZX1NJWkU6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dHJpYlN0
YXRlLm1TaXplOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdM
X1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSBh
dHRyaWJTdGF0ZS5tU3RyaWRlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRToKKyAgICAgICAgICAgICAgICAqcGFy
YW1zID0gYXR0cmliU3RhdGUubVR5cGU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEOgorICAgICAgICAg
ICAgICAgICpwYXJhbXMgPSAoYXR0cmliU3RhdGUubU5vcm1hbGl6ZWQgPyBHTF9UUlVFIDogR0xf
RkFMU0UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1ZF
UlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkc6CisgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IGF0dHJpYlN0YXRlLm1Cb3VuZEJ1ZmZlci5pZCgpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIEdMX0NVUlJFTlRfVkVSVEVYX0FUVFJJQjoKKyAgICAgICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIGZsb2F0IGN1cnJlbnRWYWx1ZSA9IGF0dHJpYlN0YXRlLm1DdXJy
ZW50VmFsdWVbaV07CisgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IChHTGludCkoY3Vy
cmVudFZhbHVlID4gMC4wZiA/IGZsb29yKGN1cnJlbnRWYWx1ZSArIDAuNWYpIDogY2VpbChjdXJy
ZW50VmFsdWUgLSAwLjVmKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUl9B
TkdMRToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gKEdMaW50KWF0dHJpYlN0YXRlLm1EaXZp
c29yOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxs
IGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdM
dm9pZCoqIHBvaW50ZXIpCit7CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwgR0xlbnVt
IHBuYW1lID0gMHglWCwgR0x2b2lkKiogcG9pbnRlciA9IDB4JTAuOHApIiwgaW5kZXgsIHBuYW1l
LCBwb2ludGVyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKGluZGV4ID49IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHBuYW1lICE9IEdM
X1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICpwb2ludGVyID0gY29uc3RfY2FzdDxHTHZvaWQqPihjb250ZXh0LT5nZXRW
ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsSGludChHTGVudW0gdGFy
Z2V0LCBHTGVudW0gbW9kZSkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBH
TGVudW0gbW9kZSA9IDB4JVgpIiwgdGFyZ2V0LCBtb2RlKTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChtb2RlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9GQVNURVNU
OgorICAgICAgICAgIGNhc2UgR0xfTklDRVNUOgorICAgICAgICAgIGNhc2UgR0xfRE9OVF9DQVJF
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsgCisgICAgICAgIH0KKworICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworICAgICAgICBz
d2l0Y2ggKHRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfR0VORVJBVEVfTUlQ
TUFQX0hJTlQ6CisgICAgICAgICAgICBpZiAoY29udGV4dCkgY29udGV4dC0+c2V0R2VuZXJhdGVN
aXBtYXBIaW50KG1vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9G
UkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzoKKyAgICAgICAgICAgIGlmIChjb250
ZXh0KSBjb250ZXh0LT5zZXRGcmFnbWVudFNoYWRlckRlcml2YXRpdmVIaW50KG1vZGUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOworICAgIH0KK30KKworR0xib29sZWFuIF9fc3RkY2FsbCBnbElzQnVmZmVyKEdM
dWludCBidWZmZXIpCit7CisgICAgRVZFTlQoIihHTHVpbnQgYnVmZmVyID0gJWQpIiwgYnVmZmVy
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCAmJiBidWZmZXIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlck9iamVjdCA9IGNvbnRleHQt
PmdldEJ1ZmZlcihidWZmZXIpOworCisgICAgICAgICAgICBpZiAoYnVmZmVyT2JqZWN0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9UUlVFOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgR0xfRkFMU0UpOworICAg
IH0KKworICAgIHJldHVybiBHTF9GQUxTRTsKK30KKworR0xib29sZWFuIF9fc3RkY2FsbCBnbElz
RW5hYmxlZChHTGVudW0gY2FwKQoreworICAgIEVWRU5UKCIoR0xlbnVtIGNhcCA9IDB4JVgpIiwg
Y2FwKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgc3dpdGNoIChjYXApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
IGNhc2UgR0xfQ1VMTF9GQUNFOiAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC0+aXNDdWxs
RmFjZUVuYWJsZWQoKTsKKyAgICAgICAgICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9GSUxM
OiAgICAgIHJldHVybiBjb250ZXh0LT5pc1BvbHlnb25PZmZzZXRGaWxsRW5hYmxlZCgpOworICAg
ICAgICAgICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRTogcmV0dXJuIGNvbnRl
eHQtPmlzU2FtcGxlQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCgpOworICAgICAgICAgICAgICBjYXNl
IEdMX1NBTVBMRV9DT1ZFUkFHRTogICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmlzU2FtcGxlQ292
ZXJhZ2VFbmFibGVkKCk7CisgICAgICAgICAgICAgIGNhc2UgR0xfU0NJU1NPUl9URVNUOiAgICAg
ICAgICAgICByZXR1cm4gY29udGV4dC0+aXNTY2lzc29yVGVzdEVuYWJsZWQoKTsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9TVEVOQ0lMX1RFU1Q6ICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5p
c1N0ZW5jaWxUZXN0RW5hYmxlZCgpOworICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6
ICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmlzRGVwdGhUZXN0RW5hYmxlZCgpOworICAg
ICAgICAgICAgICBjYXNlIEdMX0JMRU5EOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRl
eHQtPmlzQmxlbmRFbmFibGVkKCk7CisgICAgICAgICAgICAgIGNhc2UgR0xfRElUSEVSOiAgICAg
ICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC0+aXNEaXRoZXJFbmFibGVkKCk7CisgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX0VOVU0sIGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K0dMYm9vbGVhbiBfX3N0ZGNhbGwgZ2xJc0ZlbmNlTlYoR0x1aW50IGZlbmNlKQoreworICAgIEVW
RU5UKCIoR0x1aW50IGZlbmNlID0gJWQpIiwgZmVuY2UpOworCisgICAgdHJ5CisgICAgeworICAg
ICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisg
ICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6RmVuY2UgKmZl
bmNlT2JqZWN0ID0gY29udGV4dC0+Z2V0RmVuY2UoZmVuY2UpOworCisgICAgICAgICAgICBpZiAo
ZmVuY2VPYmplY3QgPT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gR0xfRkFMU0U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBmZW5jZU9i
amVjdC0+aXNGZW5jZSgpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwg
R0xfRkFMU0UpOworICAgIH0KKworICAgIHJldHVybiBHTF9GQUxTRTsKK30KKworR0xib29sZWFu
IF9fc3RkY2FsbCBnbElzRnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKQoreworICAgIEVW
RU5UKCIoR0x1aW50IGZyYW1lYnVmZmVyID0gJWQpIiwgZnJhbWVidWZmZXIpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0ICYmIGZyYW1lYnVmZmVyKQorICAgICAgICB7
CisgICAgICAgICAgICBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0gY29udGV4
dC0+Z2V0RnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOworCisgICAgICAgICAgICBpZiAoZnJhbWVi
dWZmZXJPYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1RS
VUU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
LCBHTF9GQUxTRSk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX0ZBTFNFOworfQorCitHTGJvb2xl
YW4gX19zdGRjYWxsIGdsSXNQcm9ncmFtKEdMdWludCBwcm9ncmFtKQoreworICAgIEVWRU5UKCIo
R0x1aW50IHByb2dyYW0gPSAlZCkiLCBwcm9ncmFtKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCAmJiBwcm9ncmFtKQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6
UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisK
KyAgICAgICAgICAgIGlmIChwcm9ncmFtT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9UUlVFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSwgR0xfRkFMU0UpOworICAgIH0KKworICAgIHJldHVybiBHTF9G
QUxTRTsKK30KKworR0xib29sZWFuIF9fc3RkY2FsbCBnbElzUXVlcnlFWFQoR0x1aW50IGlkKQor
eworICAgIEVWRU5UKCIoR0x1aW50IGlkID0gJWQpIiwgaWQpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBpZiAoaWQgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEdMX0ZB
TFNFOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0
Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZ2w6OlF1ZXJ5ICpxdWVyeU9iamVjdCA9IGNvbnRleHQtPmdldFF1ZXJ5KGlkLCBm
YWxzZSwgR0xfTk9ORSk7CisKKyAgICAgICAgICAgIGlmIChxdWVyeU9iamVjdCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfVFJVRTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIEdMX0ZBTFNFKTsKKyAgICB9CisK
KyAgICByZXR1cm4gR0xfRkFMU0U7Cit9CisKK0dMYm9vbGVhbiBfX3N0ZGNhbGwgZ2xJc1JlbmRl
cmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVyKQoreworICAgIEVWRU5UKCIoR0x1aW50IHJlbmRl
cmJ1ZmZlciA9ICVkKSIsIHJlbmRlcmJ1ZmZlcik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAg
ICAgaWYgKGNvbnRleHQgJiYgcmVuZGVyYnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICBn
bDo6UmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXJPYmplY3QgPSBjb250ZXh0LT5nZXRSZW5kZXJi
dWZmZXIocmVuZGVyYnVmZmVyKTsKKworICAgICAgICAgICAgaWYgKHJlbmRlcmJ1ZmZlck9iamVj
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfVFJVRTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIEdMX0ZBTFNF
KTsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfRkFMU0U7Cit9CisKK0dMYm9vbGVhbiBfX3N0ZGNh
bGwgZ2xJc1NoYWRlcihHTHVpbnQgc2hhZGVyKQoreworICAgIEVWRU5UKCIoR0x1aW50IHNoYWRl
ciA9ICVkKSIsIHNoYWRlcik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQgJiYgc2hhZGVyKQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6U2hhZGVyICpzaGFkZXJP
YmplY3QgPSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKworICAgICAgICAgICAgaWYgKHNo
YWRlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfVFJV
RTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlks
IEdMX0ZBTFNFKTsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfRkFMU0U7Cit9CisKK0dMYm9vbGVh
biBfX3N0ZGNhbGwgZ2xJc1RleHR1cmUoR0x1aW50IHRleHR1cmUpCit7CisgICAgRVZFTlQoIihH
THVpbnQgdGV4dHVyZSA9ICVkKSIsIHRleHR1cmUpOworCisgICAgdHJ5CisgICAgeworICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAg
ICAgIGlmIChjb250ZXh0ICYmIHRleHR1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpU
ZXh0dXJlICp0ZXh0dXJlT2JqZWN0ID0gY29udGV4dC0+Z2V0VGV4dHVyZSh0ZXh0dXJlKTsKKwor
ICAgICAgICAgICAgaWYgKHRleHR1cmVPYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEdMX1RSVUU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9PVVRfT0ZfTUVNT1JZLCBHTF9GQUxTRSk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX0ZB
TFNFOworfQorCit2b2lkIF9fc3RkY2FsbCBnbExpbmVXaWR0aChHTGZsb2F0IHdpZHRoKQorewor
ICAgIEVWRU5UKCIoR0xmbG9hdCB3aWR0aCA9ICVmKSIsIHdpZHRoKTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgaWYgKHdpZHRoIDw9IDAuMGYpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAg
IGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRMaW5lV2lk
dGgod2lkdGgpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
KyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAg
fQorfQorCit2b2lkIF9fc3RkY2FsbCBnbExpbmtQcm9ncmFtKEdMdWludCBwcm9ncmFtKQorewor
ICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCkiLCBwcm9ncmFtKTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRl
eHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6
OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOwor
CisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlcihwcm9ncmFtKSkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgY29udGV4dC0+bGlua1Byb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsUGl4ZWxTdG9y
ZWkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSBwbmFt
ZSA9IDB4JVgsIEdMaW50IHBhcmFtID0gJWQpIiwgcG5hbWUsIHBhcmFtKTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRl
eHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgc3dp
dGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9VTlBBQ0tf
QUxJR05NRU5UOgorICAgICAgICAgICAgICAgIGlmIChwYXJhbSAhPSAxICYmIHBhcmFtICE9IDIg
JiYgcGFyYW0gIT0gNCAmJiBwYXJhbSAhPSA4KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRVbnBhY2tBbGlnbm1lbnQo
cGFyYW0pOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgIGNhc2UgR0xf
UEFDS19BTElHTk1FTlQ6CisgICAgICAgICAgICAgICAgaWYgKHBhcmFtICE9IDEgJiYgcGFyYW0g
IT0gMiAmJiBwYXJhbSAhPSA0ICYmIHBhcmFtICE9IDgpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFBhY2tBbGlnbm1l
bnQocGFyYW0pOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgIGNhc2Ug
R0xfUEFDS19SRVZFUlNFX1JPV19PUkRFUl9BTkdMRToKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5zZXRQYWNrUmV2ZXJzZVJvd09yZGVyKHBhcmFtICE9IDApOworICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFBv
bHlnb25PZmZzZXQoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpCit7CisgICAgRVZFTlQo
IihHTGZsb2F0IGZhY3RvciA9ICVmLCBHTGZsb2F0IHVuaXRzID0gJWYpIiwgZmFjdG9yLCB1bml0
cyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvbnRleHQtPnNldFBvbHlnb25PZmZzZXRQYXJhbXMoZmFjdG9yLCB1bml0
cyk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisK
K3ZvaWQgX19zdGRjYWxsIGdsUmVhZG5QaXhlbHNFWFQoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqZGF0YSkKK3sKKyAgICBFVkVOVCgiKEdMaW50
IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0
ID0gJWQsICIKKyAgICAgICAgICAiR0xlbnVtIGZvcm1hdCA9IDB4JVgsIEdMZW51bSB0eXBlID0g
MHglWCwgR0xzaXplaSBidWZTaXplID0gMHglZCwgR0x2b2lkICpkYXRhID0gMHglMC44cCkiLAor
ICAgICAgICAgIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgZGF0
YSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwg
MCB8fCBidWZTaXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEdMZW51bSBjdXJyZW50Rm9ybWF0LCBjdXJyZW50VHlw
ZTsKKyAgICAKKyAgICAgICAgICAgIC8vIEZhaWx1cmUgaW4gZ2V0Q3VycmVudFJlYWRGb3JtYXRU
eXBlIGluZGljYXRlcyB0aGF0IG5vIGNvbG9yIGF0dGFjaG1lbnQgaXMgY3VycmVudGx5IGJvdW5k
LAorICAgICAgICAgICAgLy8gYW5kIGF0dGVtcHRpbmcgdG8gcmVhZCBiYWNrIGlmIHRoYXQncyB0
aGUgY2FzZSBpcyBhbiBlcnJvci4gVGhlIGVycm9yIHdpbGwgYmUgcmVnaXN0ZXJlZAorICAgICAg
ICAgICAgLy8gYnkgZ2V0Q3VycmVudFJlYWRGb3JtYXQuCisgICAgICAgICAgICBpZiAoIWNvbnRl
eHQtPmdldEN1cnJlbnRSZWFkRm9ybWF0VHlwZSgmY3VycmVudEZvcm1hdCwgJmN1cnJlbnRUeXBl
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmICghKGN1cnJlbnRG
b3JtYXQgPT0gZm9ybWF0ICYmIGN1cnJlbnRUeXBlID09IHR5cGUpICYmICF2YWxpZFJlYWRGb3Jt
YXRUeXBlKGZvcm1hdCwgdHlwZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGNvbnRleHQtPnJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCAmYnVmU2l6ZSwgZGF0YSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsUmVhZFBpeGVscyhHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkKiBwaXhlbHMp
Cit7CisgICAgRVZFTlQoIihHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0
aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCAiCisgICAgICAgICAgIkdMZW51bSBmb3JtYXQg
PSAweCVYLCBHTGVudW0gdHlwZSA9IDB4JVgsIEdMdm9pZCogcGl4ZWxzID0gMHglMC44cCkiLAor
ICAgICAgICAgIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgIHBpeGVscyk7CisK
KyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsK
KyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEdMZW51bSBjdXJyZW50Rm9ybWF0LCBjdXJyZW50VHlwZTsKKyAgICAKKyAgICAgICAgICAg
IC8vIEZhaWx1cmUgaW4gZ2V0Q3VycmVudFJlYWRGb3JtYXRUeXBlIGluZGljYXRlcyB0aGF0IG5v
IGNvbG9yIGF0dGFjaG1lbnQgaXMgY3VycmVudGx5IGJvdW5kLAorICAgICAgICAgICAgLy8gYW5k
IGF0dGVtcHRpbmcgdG8gcmVhZCBiYWNrIGlmIHRoYXQncyB0aGUgY2FzZSBpcyBhbiBlcnJvci4g
VGhlIGVycm9yIHdpbGwgYmUgcmVnaXN0ZXJlZAorICAgICAgICAgICAgLy8gYnkgZ2V0Q3VycmVu
dFJlYWRGb3JtYXQuCisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEN1cnJlbnRSZWFkRm9y
bWF0VHlwZSgmY3VycmVudEZvcm1hdCwgJmN1cnJlbnRUeXBlKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgIGlmICghKGN1cnJlbnRGb3JtYXQgPT0gZm9ybWF0ICYmIGN1
cnJlbnRUeXBlID09IHR5cGUpICYmICF2YWxpZFJlYWRGb3JtYXRUeXBlKGZvcm1hdCwgdHlwZSkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnRleHQtPnJl
YWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBOVUxMLCBwaXhlbHMp
OworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2
b2lkIF9fc3RkY2FsbCBnbFJlbGVhc2VTaGFkZXJDb21waWxlcih2b2lkKQoreworICAgIEVWRU5U
KCIoKSIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6U2hhZGVyOjpyZWxlYXNlQ29t
cGlsZXIoKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0xlbnVtIHRh
cmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgs
IEdMc2l6ZWkgc2FtcGxlcyA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAweCVYLCBHTHNp
emVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQpIiwKKyAgICAgICAgICB0YXJnZXQs
IHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdM
X1JFTkRFUkJVRkZFUjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIWdsOjpJc0NvbG9yUmVuZGVyYWJsZShpbnRlcm5hbGZvcm1hdCkgJiYg
IWdsOjpJc0RlcHRoUmVuZGVyYWJsZShpbnRlcm5hbGZvcm1hdCkgJiYgIWdsOjpJc1N0ZW5jaWxS
ZW5kZXJhYmxlKGludGVybmFsZm9ybWF0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdp
ZHRoIDwgMCB8fCBoZWlnaHQgPCAwIHx8IHNhbXBsZXMgPCAwKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKwor
ICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpZHRoID4g
Y29udGV4dC0+Z2V0TWF4aW11bVJlbmRlcmJ1ZmZlckRpbWVuc2lvbigpIHx8IAorICAgICAgICAg
ICAgICAgIGhlaWdodCA+IGNvbnRleHQtPmdldE1heGltdW1SZW5kZXJidWZmZXJEaW1lbnNpb24o
KSB8fAorICAgICAgICAgICAgICAgIHNhbXBsZXMgPiBjb250ZXh0LT5nZXRNYXhTdXBwb3J0ZWRT
YW1wbGVzKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgR0x1aW50
IGhhbmRsZSA9IGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlckhhbmRsZSgpOworICAgICAgICAgICAg
aWYgKGhhbmRsZSA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2OgorICAgICAgICAgICAgICBjYXNlIEdMX1JHQkE0
OgorICAgICAgICAgICAgICBjYXNlIEdMX1JHQjVfQTE6CisgICAgICAgICAgICAgIGNhc2UgR0xf
UkdCNTY1OgorICAgICAgICAgICAgICBjYXNlIEdMX1JHQjhfT0VTOgorICAgICAgICAgICAgICBj
YXNlIEdMX1JHQkE4X09FUzoKKyAgICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoK
KyAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzoKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5zZXRSZW5kZXJidWZmZXJTdG9yYWdlKHdpZHRoLCBoZWlnaHQsIGludGVy
bmFsZm9ybWF0LCBzYW1wbGVzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
RU5VTSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShH
TGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KQoreworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUo
dGFyZ2V0LCAwLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQgX19z
dGRjYWxsIGdsU2FtcGxlQ292ZXJhZ2UoR0xjbGFtcGYgdmFsdWUsIEdMYm9vbGVhbiBpbnZlcnQp
Cit7CisgICAgRVZFTlQoIihHTGNsYW1wZiB2YWx1ZSA9ICVmLCBHTGJvb2xlYW4gaW52ZXJ0ID0g
JWQpIiwgdmFsdWUsIGludmVydCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250
ZXh0KiBjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNv
bnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFNhbXBsZUNvdmVyYWdl
UGFyYW1zKGdsOjpjbGFtcDAxKHZhbHVlKSwgaW52ZXJ0ID09IEdMX1RSVUUpOworICAgICAgICB9
CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2Fs
bCBnbFNldEZlbmNlTlYoR0x1aW50IGZlbmNlLCBHTGVudW0gY29uZGl0aW9uKQoreworICAgIEVW
RU5UKCIoR0x1aW50IGZlbmNlID0gJWQsIEdMZW51bSBjb25kaXRpb24gPSAweCVYKSIsIGZlbmNl
LCBjb25kaXRpb24pOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoY29uZGl0aW9uICE9
IEdMX0FMTF9DT01QTEVURURfTlYpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpGZW5jZSAqZmVuY2VPYmplY3QgPSBjb250
ZXh0LT5nZXRGZW5jZShmZW5jZSk7CisKKyAgICAgICAgICAgIGlmIChmZW5jZU9iamVjdCA9PSBO
VUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmZW5jZU9i
amVjdC0+c2V0RmVuY2UoY29uZGl0aW9uKTsgICAgCisgICAgICAgIH0KKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsU2Npc3NvcihHTGlu
dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBFVkVO
VCgiKEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6
ZWkgaGVpZ2h0ID0gJWQpIiwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisKKyAgICB0cnkKKyAgICB7
CisgICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGdsOjpDb250ZXh0KiBjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnNl
dFNjaXNzb3JQYXJhbXMoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsU2hhZGVy
QmluYXJ5KEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiBzaGFkZXJzLCBHTGVudW0gYmluYXJ5Zm9y
bWF0LCBjb25zdCBHTHZvaWQqIGJpbmFyeSwgR0xzaXplaSBsZW5ndGgpCit7CisgICAgRVZFTlQo
IihHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1aW50KiBzaGFkZXJzID0gMHglMC44cCwgR0xlbnVt
IGJpbmFyeWZvcm1hdCA9IDB4JVgsICIKKyAgICAgICAgICAiY29uc3QgR0x2b2lkKiBiaW5hcnkg
PSAweCUwLjhwLCBHTHNpemVpIGxlbmd0aCA9ICVkKSIsCisgICAgICAgICAgbiwgc2hhZGVycywg
YmluYXJ5Zm9ybWF0LCBiaW5hcnksIGxlbmd0aCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAg
IC8vIE5vIGJpbmFyeSBzaGFkZXIgZm9ybWF0cyBhcmUgc3VwcG9ydGVkLgorICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFNoYWRlclNvdXJjZShHTHVpbnQgc2hh
ZGVyLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGNoYXIqKiBzdHJpbmcsIGNvbnN0IEdMaW50KiBs
ZW5ndGgpCit7CisgICAgRVZFTlQoIihHTHVpbnQgc2hhZGVyID0gJWQsIEdMc2l6ZWkgY291bnQg
PSAlZCwgY29uc3QgR0xjaGFyKiogc3RyaW5nID0gMHglMC44cCwgY29uc3QgR0xpbnQqIGxlbmd0
aCA9IDB4JTAuOHApIiwKKyAgICAgICAgICBzaGFkZXIsIGNvdW50LCBzdHJpbmcsIGxlbmd0aCk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA8IDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0K
KworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgp
OworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6U2hh
ZGVyICpzaGFkZXJPYmplY3QgPSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKworICAgICAg
ICAgICAgaWYgKCFzaGFkZXJPYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmdldFByb2dyYW0oc2hhZGVyKSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hhZGVy
T2JqZWN0LT5zZXRTb3VyY2UoY291bnQsIHN0cmluZywgbGVuZ3RoKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xT
dGVuY2lsRnVuYyhHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKK3sKKyAgICBn
bFN0ZW5jaWxGdW5jU2VwYXJhdGUoR0xfRlJPTlRfQU5EX0JBQ0ssIGZ1bmMsIHJlZiwgbWFzayk7
Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZShHTGVudW0gZmFjZSwg
R0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spCit7CisgICAgRVZFTlQoIihHTGVu
dW0gZmFjZSA9IDB4JVgsIEdMZW51bSBmdW5jID0gMHglWCwgR0xpbnQgcmVmID0gJWQsIEdMdWlu
dCBtYXNrID0gJWQpIiwgZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKKworICAgIHRyeQorICAgIHsK
KyAgICAgICAgc3dpdGNoIChmYWNlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9GUk9O
VDoKKyAgICAgICAgICBjYXNlIEdMX0JBQ0s6CisgICAgICAgICAgY2FzZSBHTF9GUk9OVF9BTkRf
QkFDSzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAg
ICBzd2l0Y2ggKGZ1bmMpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX05FVkVSOgorICAg
ICAgICAgIGNhc2UgR0xfQUxXQVlTOgorICAgICAgICAgIGNhc2UgR0xfTEVTUzoKKyAgICAgICAg
ICBjYXNlIEdMX0xFUVVBTDoKKyAgICAgICAgICBjYXNlIEdMX0VRVUFMOgorICAgICAgICAgIGNh
c2UgR0xfR0VRVUFMOgorICAgICAgICAgIGNhc2UgR0xfR1JFQVRFUjoKKyAgICAgICAgICBjYXNl
IEdMX05PVEVRVUFMOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQor
CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7
CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChmYWNl
ID09IEdMX0ZST05UIHx8IGZhY2UgPT0gR0xfRlJPTlRfQU5EX0JBQ0spCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3RlbmNpbFBhcmFtcyhmdW5jLCByZWYsIG1h
c2spOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZmFjZSA9PSBHTF9CQUNLIHx8
IGZhY2UgPT0gR0xfRlJPTlRfQU5EX0JBQ0spCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+c2V0U3RlbmNpbEJhY2tQYXJhbXMoZnVuYywgcmVmLCBtYXNrKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0K
K30KKwordm9pZCBfX3N0ZGNhbGwgZ2xTdGVuY2lsTWFzayhHTHVpbnQgbWFzaykKK3sKKyAgICBn
bFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlRfQU5EX0JBQ0ssIG1hc2spOworfQorCit2b2lk
IF9fc3RkY2FsbCBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xlbnVtIGZhY2UsIEdMdWludCBtYXNr
KQoreworICAgIEVWRU5UKCIoR0xlbnVtIGZhY2UgPSAweCVYLCBHTHVpbnQgbWFzayA9ICVkKSIs
IGZhY2UsIG1hc2spOworCisgICAgdHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKGZhY2UpCisg
ICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0ZST05UOgorICAgICAgICAgIGNhc2UgR0xfQkFD
SzoKKyAgICAgICAgICBjYXNlIEdMX0ZST05UX0FORF9CQUNLOgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChmYWNlID09IEdMX0ZST05UIHx8IGZhY2UgPT0gR0xfRlJPTlRf
QU5EX0JBQ0spCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Rl
bmNpbFdyaXRlbWFzayhtYXNrKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZh
Y2UgPT0gR0xfQkFDSyB8fCBmYWNlID09IEdMX0ZST05UX0FORF9CQUNLKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0ZW5jaWxCYWNrV3JpdGVtYXNrKG1hc2sp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFN0ZW5jaWxPcChHTGVudW0gZmFpbCwgR0xl
bnVtIHpmYWlsLCBHTGVudW0genBhc3MpCit7CisgICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZShHTF9G
Uk9OVF9BTkRfQkFDSywgZmFpbCwgemZhaWwsIHpwYXNzKTsKK30KKwordm9pZCBfX3N0ZGNhbGwg
Z2xTdGVuY2lsT3BTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFp
bCwgR0xlbnVtIHpwYXNzKQoreworICAgIEVWRU5UKCIoR0xlbnVtIGZhY2UgPSAweCVYLCBHTGVu
dW0gZmFpbCA9IDB4JVgsIEdMZW51bSB6ZmFpbCA9IDB4JVgsIEdMZW51bSB6cGFzID0gMHglWHMp
IiwKKyAgICAgICAgICBmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworCisgICAgdHJ5CisgICAg
eworICAgICAgICBzd2l0Y2ggKGZhY2UpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0ZS
T05UOgorICAgICAgICAgIGNhc2UgR0xfQkFDSzoKKyAgICAgICAgICBjYXNlIEdMX0ZST05UX0FO
RF9CQUNLOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHN3aXRjaCAoZmFpbCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfWkVSTzoKKyAg
ICAgICAgICBjYXNlIEdMX0tFRVA6CisgICAgICAgICAgY2FzZSBHTF9SRVBMQUNFOgorICAgICAg
ICAgIGNhc2UgR0xfSU5DUjoKKyAgICAgICAgICBjYXNlIEdMX0RFQ1I6CisgICAgICAgICAgY2Fz
ZSBHTF9JTlZFUlQ6CisgICAgICAgICAgY2FzZSBHTF9JTkNSX1dSQVA6CisgICAgICAgICAgY2Fz
ZSBHTF9ERUNSX1dSQVA6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9
CisKKyAgICAgICAgc3dpdGNoICh6ZmFpbCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xf
WkVSTzoKKyAgICAgICAgICBjYXNlIEdMX0tFRVA6CisgICAgICAgICAgY2FzZSBHTF9SRVBMQUNF
OgorICAgICAgICAgIGNhc2UgR0xfSU5DUjoKKyAgICAgICAgICBjYXNlIEdMX0RFQ1I6CisgICAg
ICAgICAgY2FzZSBHTF9JTlZFUlQ6CisgICAgICAgICAgY2FzZSBHTF9JTkNSX1dSQVA6CisgICAg
ICAgICAgY2FzZSBHTF9ERUNSX1dSQVA6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOwor
ICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoICh6cGFzcykKKyAgICAgICAgeworICAgICAgICAg
IGNhc2UgR0xfWkVSTzoKKyAgICAgICAgICBjYXNlIEdMX0tFRVA6CisgICAgICAgICAgY2FzZSBH
TF9SRVBMQUNFOgorICAgICAgICAgIGNhc2UgR0xfSU5DUjoKKyAgICAgICAgICBjYXNlIEdMX0RF
Q1I6CisgICAgICAgICAgY2FzZSBHTF9JTlZFUlQ6CisgICAgICAgICAgY2FzZSBHTF9JTkNSX1dS
QVA6CisgICAgICAgICAgY2FzZSBHTF9ERUNSX1dSQVA6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKGZhY2UgPT0gR0xfRlJPTlQgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRf
QkFDSykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdGVuY2ls
T3BlcmF0aW9ucyhmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoZmFjZSA9PSBHTF9CQUNLIHx8IGZhY2UgPT0gR0xfRlJPTlRfQU5EX0JBQ0spCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3RlbmNpbEJhY2tPcGVy
YXRpb25zKGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK0dMYm9vbGVhbiBfX3N0ZGNh
bGwgZ2xUZXN0RmVuY2VOVihHTHVpbnQgZmVuY2UpCit7CisgICAgRVZFTlQoIihHTHVpbnQgZmVu
Y2UgPSAlZCkiLCBmZW5jZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpGZW5jZSAqZmVuY2VPYmplY3QgPSBjb250
ZXh0LT5nZXRGZW5jZShmZW5jZSk7CisKKyAgICAgICAgICAgIGlmIChmZW5jZU9iamVjdCA9PSBO
VUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sIEdMX1RSVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gZmVuY2VPYmplY3QtPnRlc3RGZW5jZSgpOworICAgICAgICB9CisgICAgfQorICAg
IGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIEdMX1RSVUU7Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQg
aW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9
IDB4JVgsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IGludGVybmFsZm9ybWF0ID0gJWQsIEdMc2l6
ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgIgorICAgICAgICAgICJHTGludCBi
b3JkZXIgPSAlZCwgR0xlbnVtIGZvcm1hdCA9IDB4JVgsIEdMZW51bSB0eXBlID0gMHglWCwgY29u
c3QgR0x2b2lkKiBwaXhlbHMgPSAgMHglMC44cCkiLAorICAgICAgICAgIHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKCF2YWxpZEltYWdlU2l6ZShsZXZl
bCwgd2lkdGgsIGhlaWdodCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW50ZXJuYWxm
b3JtYXQgIT0gR0xpbnQoZm9ybWF0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAgICAgICAvLyB2
YWxpZGF0ZSA8dHlwZT4gYnkgaXRzZWxmICh1c2VkIGFzIHNlY29uZGFyeSBrZXkgYmVsb3cpCisg
ICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfQllURToKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgorICAgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDoKKyAgICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX1NIT1JUXzVfNV81XzE6CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoK
KyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX0lOVF8yNF84X09FUzoKKyAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgorICAg
ICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gdmFsaWRhdGUgPGZvcm1hdD4gKyA8dHlwZT4gY29tYmluYXRp
b25zCisgICAgICAgIC8vIC0gaW52YWxpZCA8Zm9ybWF0PiAtPiBzZXRzIElOVkFMSURfRU5VTQor
ICAgICAgICAvLyAtIGludmFsaWQgPGZvcm1hdD4rPHR5cGU+IGNvbWJpbmF0aW9uIC0+IHNldHMg
SU5WQUxJRF9PUEVSQVRJT04KKyAgICAgICAgc3dpdGNoIChmb3JtYXQpCisgICAgICAgIHsKKyAg
ICAgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOgorICAg
ICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgc3dpdGNoICh0eXBl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9G
TE9BVF9PRVM6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1JH
QjoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVE
X1NIT1JUXzVfNl81OgorICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAg
ICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9TSE9SVF81XzVfNV8xOgorICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAg
ICAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgICAgIHN3aXRjaCAodHlw
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhUOiAgLy8gZXJyb3IgY2FzZXMgZm9yIGNvbXByZXNzZWQgdGV4dHVyZXMg
YXJlIGhhbmRsZWQgYmVsb3cKKyAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhUOgorICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19B
TkdMRToKKyAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6
CisgICAgICAgICAgICBicmVhazsgCisgICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6
CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
SU5UOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9ERVBUSF9T
VEVOQ0lMX09FUzoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMjRfOF9PRVM6CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJvcmRlciAh
PSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKGxldmVsID4gY29udGV4dC0+Z2V0TWF4aW11bVRleHR1cmVMZXZlbCgp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAg
ICAgICAgICAgICAgaWYgKHdpZHRoID4gKGNvbnRleHQtPmdldE1heGltdW1UZXh0dXJlRGltZW5z
aW9uKCkgPj4gbGV2ZWwpIHx8CisgICAgICAgICAgICAgICAgICAgIGhlaWdodCA+IChjb250ZXh0
LT5nZXRNYXhpbXVtVGV4dHVyZURpbWVuc2lvbigpID4+IGxldmVsKSkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDoKKyAgICAgICAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6CisgICAgICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZOgorICAgICAgICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJF
X0NVQkVfTUFQX1BPU0lUSVZFX1o6CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9aOgorICAgICAgICAgICAgICAgIGlmICh3aWR0aCAhPSBoZWlnaHQpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlm
ICh3aWR0aCA+IChjb250ZXh0LT5nZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNpb24oKSA+PiBs
ZXZlbCkgfHwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID4gKGNvbnRleHQtPmdldE1heGlt
dW1DdWJlVGV4dHVyZURpbWVuc2lvbigpID4+IGxldmVsKSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVN
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAg
ICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgICAg
ICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5zdXBwb3J0c0RYVDFUZXh0dXJlcygpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAg
ICAgICAgICAgICBpZiAoY29udGV4dC0+c3VwcG9ydHNEWFQzVGV4dHVyZXMoKSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6
CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6CisgICAgICAg
ICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9PRVM6CisgICAgICAgICAgICAgICAgaWYgKCFj
b250ZXh0LT5zdXBwb3J0c0RlcHRoVGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT0gR0xfVEVYVFVSRV8y
RCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAvLyBPRVNfZGVwdGhfdGV4dHVyZSBzdXBwb3J0cyBsb2FkaW5nIGRlcHRoIGRhdGEgYW5k
IG11bHRpcGxlIGxldmVscywKKyAgICAgICAgICAgICAgICAvLyBidXQgQU5HTEVfZGVwdGhfdGV4
dHVyZSBkb2VzIG5vdAorICAgICAgICAgICAgICAgIGlmIChwaXhlbHMgIT0gTlVMTCB8fCBsZXZl
bCAhPSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodHlwZSA9PSBHTF9GTE9B
VCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRz
RmxvYXQzMlRleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBHTF9IQUxGX0ZMT0FU
X09FUykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBv
cnRzRmxvYXQxNlRleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVf
MkQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUyRCAqdGV4dHVy
ZSA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgpOworCisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0
dXJlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgaWYgKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRJbWFn
ZShsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tB
bGlnbm1lbnQoKSwgcGl4ZWxzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZUN1YmVNYXAgKnRleHR1cmUg
PSBjb250ZXh0LT5nZXRUZXh0dXJlQ3ViZU1hcCgpOworCisgICAgICAgICAgICAgICAgaWYgKCF0
ZXh0dXJlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRhcmdl
dCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWDoKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0SW1h
Z2VQb3NYKGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGNvbnRleHQtPmdldFVu
cGFja0FsaWdubWVudCgpLCBwaXhlbHMpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgorICAg
ICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRJbWFnZU5lZ1gobGV2ZWwsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgY29udGV4dC0+Z2V0VW5wYWNrQWxpZ25tZW50KCksIHBpeGVscyk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6CisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUt
PnNldEltYWdlUG9zWShsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0
LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
WToKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0SW1hZ2VOZWdZKGxldmVsLCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGNvbnRleHQtPmdldFVucGFja0FsaWdubWVudCgpLCBw
aXhlbHMpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgorICAgICAgICAgICAgICAgICAgICB0
ZXh0dXJlLT5zZXRJbWFnZVBvc1oobGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
Y29udGV4dC0+Z2V0VW5wYWNrQWxpZ25tZW50KCksIHBpeGVscyk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05F
R0FUSVZFX1o6CisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnNldEltYWdlTmVnWihsZXZl
bCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1l
bnQoKSwgcGl4ZWxzKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAg
eworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30K
Kwordm9pZCBfX3N0ZGNhbGwgZ2xUZXhQYXJhbWV0ZXJmKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVY
LCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCBwYXJhbSA9ICVmKSIsIHRhcmdldCwgcG5hbWUs
IHBhcmFtKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmU7CisKKyAgICAgICAgICAgIHN3
aXRjaCAodGFyZ2V0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfMkQ6CisgICAgICAgICAgICAgICAgdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVA6CisgICAgICAgICAgICAgICAgdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmVD
dWJlTWFwKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOgorICAgICAgICAgICAgICAgIGlm
ICghdGV4dHVyZS0+c2V0V3JhcFMoKEdMZW51bSlwYXJhbSkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfV1JBUF9UOgorICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZS0+c2V0
V3JhcFQoKEdMZW51bSlwYXJhbSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUjoKKyAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUtPnNldE1pbkZpbHRlcigo
R0xlbnVtKXBhcmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQUdfRklM
VEVSOgorICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZS0+c2V0TWFnRmlsdGVyKChHTGVudW0p
cGFyYW0pKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1VTQUdFX0FOR0xFOgor
ICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZS0+c2V0VXNhZ2UoKEdMZW51bSlwYXJhbSkpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOgorICAg
ICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9w
eSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBpZiAoIXRleHR1cmUtPnNldE1heEFuaXNvdHJvcHkoKGZsb2F0KXBhcmFtLCBjb250ZXh0LT5n
ZXRUZXh0dXJlTWF4QW5pc290cm9weSgpKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0K
K30KKwordm9pZCBfX3N0ZGNhbGwgZ2xUZXhQYXJhbWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBnbFRleFBhcmFtZXRlcmYo
dGFyZ2V0LCBwbmFtZSwgKEdMZmxvYXQpKnBhcmFtcyk7Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
VGV4UGFyYW1ldGVyaShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQor
eworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgs
IEdMaW50IHBhcmFtID0gJWQpIiwgdGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6
VGV4dHVyZSAqdGV4dHVyZTsKKworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAg
ICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUDoKKyAgICAgICAgICAg
ICAgICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9XUkFQX1M6CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5zZXRXcmFwUygo
R0xlbnVtKXBhcmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1Q6
CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5zZXRXcmFwVCgoR0xlbnVtKXBhcmFtKSkK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOgorICAgICAgICAg
ICAgICAgIGlmICghdGV4dHVyZS0+c2V0TWluRmlsdGVyKChHTGVudW0pcGFyYW0pKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6CisgICAgICAgICAgICAgICAg
aWYgKCF0ZXh0dXJlLT5zZXRNYWdGaWx0ZXIoKEdMZW51bSlwYXJhbSkpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5V
TSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfVVNBR0VfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKCF0
ZXh0dXJlLT5zZXRVc2FnZSgoR0xlbnVtKXBhcmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6CisgICAgICAgICAgICAgICAgaWYgKCFjb250
ZXh0LT5zdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5KCkpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZS0+c2V0TWF4
QW5pc290cm9weSgoZmxvYXQpcGFyYW0sIGNvbnRleHQtPmdldFRleHR1cmVNYXhBbmlzb3Ryb3B5
KCkpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBn
bFRleFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQq
IHBhcmFtcykKK3sKKyAgICBnbFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgKnBhcmFtcyk7
Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVGV4U3RvcmFnZTJERVhUKEdMZW51bSB0YXJnZXQsIEdM
c2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMc2l6ZWkg
bGV2ZWxzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9IDB4JVgsIEdMc2l6ZWkgd2lkdGgg
PSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCkiLAorICAgICAgICAgICB0YXJnZXQsIGxldmVscywg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworCisgICAgdHJ5CisgICAgeworICAgICAg
ICBpZiAodGFyZ2V0ICE9IEdMX1RFWFRVUkVfMkQgJiYgdGFyZ2V0ICE9IEdMX1RFWFRVUkVfQ1VC
RV9NQVApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3aWR0aCA8IDEgfHwgaGVpZ2h0IDwg
MSB8fCBsZXZlbHMgPCAxKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRhcmdldCA9PSBH
TF9URVhUVVJFX0NVQkVfTUFQICYmIHdpZHRoICE9IGhlaWdodCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChsZXZlbHMgIT0gMSAmJiBsZXZlbHMgIT0gZ2w6OmxvZzIoc3RkOjptYXgod2lk
dGgsIGhlaWdodCkpICsgMSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAgICAgICBHTGVudW0gZm9y
bWF0ID0gZ2w6OkV4dHJhY3RGb3JtYXQoaW50ZXJuYWxmb3JtYXQpOworICAgICAgICBHTGVudW0g
dHlwZSA9IGdsOjpFeHRyYWN0VHlwZShpbnRlcm5hbGZvcm1hdCk7CisKKyAgICAgICAgaWYgKGZv
cm1hdCA9PSBHTF9OT05FIHx8IHR5cGUgPT0gR0xfTk9ORSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAg
ICAgICAgICAgICBpZiAod2lkdGggPiBjb250ZXh0LT5nZXRNYXhpbXVtVGV4dHVyZURpbWVuc2lv
bigpIHx8CisgICAgICAgICAgICAgICAgICAgIGhlaWdodCA+IGNvbnRleHQtPmdldE1heGltdW1U
ZXh0dXJlRGltZW5zaW9uKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NV
QkVfTUFQOgorICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGNvbnRleHQtPmdldE1heGltdW1D
dWJlVGV4dHVyZURpbWVuc2lvbigpIHx8CisgICAgICAgICAgICAgICAgICAgIGhlaWdodCA+IGNv
bnRleHQtPmdldE1heGltdW1DdWJlVGV4dHVyZURpbWVuc2lvbigpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobGV2ZWxzICE9IDEgJiYg
IWNvbnRleHQtPnN1cHBvcnRzTm9uUG93ZXIyVGV4dHVyZSgpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmICghZ2w6OmlzUG93Mih3aWR0aCkgfHwgIWdsOjppc1BvdzIoaGVpZ2h0
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAg
ICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAg
ICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQxVGV4dHVyZXMoKSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAg
ICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUM1RleHR1cmVzKCkpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAg
ICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0RYVDVUZXh0dXJlcygpKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9S
R0IzMkZfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX0FMUEhBMzJGX0VYVDoKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX0xV
TUlOQU5DRV9BTFBIQTMyRl9FWFQ6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBw
b3J0c0Zsb2F0MzJUZXh0dXJlcygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBMTZG
X0VYVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9SR0IxNkZfRVhUOgorICAgICAgICAgICAgICBj
YXNlIEdMX0FMUEhBMTZGX0VYVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UxNkZf
RVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQ6CisgICAg
ICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0Zsb2F0MTZUZXh0dXJlcygpKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQxNjoKKyAgICAgICAgICAgICAg
Y2FzZSBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVM6CisgICAgICAgICAgICAgIGNhc2UgR0xfREVQ
VEgyNF9TVEVOQ0lMOF9PRVM6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0
c0RlcHRoVGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9URVhUVVJFXzJEKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIEFOR0xFX2Rl
cHRoX3RleHR1cmUgb25seSBzdXBwb3J0cyAxLWxldmVsIHRleHR1cmVzCisgICAgICAgICAgICAg
ICAgaWYgKGxldmVscyAhPSAxKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGFy
Z2V0ID09IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2w6
OlRleHR1cmUyRCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgpOworCisgICAgICAg
ICAgICAgICAgaWYgKCF0ZXh0dXJlIHx8IHRleHR1cmUtPmlkKCkgPT0gMCkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICh0ZXh0
dXJlLT5pc0ltbXV0YWJsZSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgdGV4dHVyZS0+c3RvcmFnZShsZXZlbHMsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
aWYgKHRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1hcCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1
cmVDdWJlTWFwKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUgfHwgdGV4dHVyZS0+
aWQoKSA9PSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgaWYgKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXh0dXJlLT5z
dG9yYWdlKGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xUZXhTdWJJbWFnZTJE
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMp
Cit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwg
R0xpbnQgeG9mZnNldCA9ICVkLCBHTGludCB5b2Zmc2V0ID0gJWQsICIKKyAgICAgICAgICAiR0xz
aXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTGVudW0gZm9ybWF0ID0gMHgl
WCwgR0xlbnVtIHR5cGUgPSAweCVYLCAiCisgICAgICAgICAgImNvbnN0IEdMdm9pZCogcGl4ZWxz
ID0gMHglMC44cCkiLAorICAgICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisKKyAgICB0cnkKKyAgICB7
CisgICAgICAgIGlmICghZ2w6OklzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KHRhcmdldCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChsZXZlbCA8IDAgfHwgeG9mZnNldCA8IDAgfHwgeW9mZnNl
dCA8IDAgfHwgd2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB4b2Zmc2V0IDwgd2lk
dGggfHwgc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB5b2Zmc2V0IDwgaGVp
Z2h0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFjaGVja1RleHR1cmVGb3JtYXRUeXBl
KGZvcm1hdCwgdHlwZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsgLy8gZXJyb3Ig
aXMgc2V0IGJ5IGhlbHBlciBmdW5jdGlvbgorICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29u
dGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGxldmVsID4gY29udGV4dC0+Z2V0TWF4
aW11bVRleHR1cmVMZXZlbCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmIChmb3JtYXQgPT0gR0xfRkxPQVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0Zsb2F0MzJUZXh0dXJlcygpKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VO
VU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
aWYgKGZvcm1hdCA9PSBHTF9IQUxGX0ZMT0FUX09FUykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRmxvYXQxNlRleHR1cmVzKCkpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSBpZiAoZ2w6OklzRGVwdGhUZXh0dXJlKGZvcm1hdCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0RlcHRoVGV4dHVyZXMoKSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHRhcmdl
dCAhPSBHTF9URVhUVVJFXzJEKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIC8vIE9FU19kZXB0aF90ZXh0dXJlIHN1cHBvcnRzIGxvYWRp
bmcgZGVwdGggZGF0YSwgYnV0IEFOR0xFX2RlcHRoX3RleHR1cmUgZG9lcyBub3QKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDAgfHwgcGl4
ZWxzID09IE5VTEwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUyRCAqdGV4dHVyZSA9IGNv
bnRleHQtPmdldFRleHR1cmUyRCgpOworICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0ZVN1Yklt
YWdlUGFyYW1zMkQoZmFsc2UsIHdpZHRoLCBoZWlnaHQsIHhvZmZzZXQsIHlvZmZzZXQsIGxldmVs
LCBmb3JtYXQsIHR5cGUsIHRleHR1cmUpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGV4dHVyZS0+c3ViSW1hZ2UobGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgY29udGV4dC0+Z2V0VW5wYWNrQWxpZ25tZW50KCksIHBp
eGVscyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZSBpZiAoZ2w6OklzQ3ViZW1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZUN1YmVNYXAgKnRleHR1cmUgPSBjb250ZXh0LT5n
ZXRUZXh0dXJlQ3ViZU1hcCgpOworICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0ZVN1YkltYWdl
UGFyYW1zQ3ViZShmYWxzZSwgd2lkdGgsIGhlaWdodCwgeG9mZnNldCwgeW9mZnNldCwgdGFyZ2V0
LCBsZXZlbCwgZm9ybWF0LCB0eXBlLCB0ZXh0dXJlKSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHRleHR1cmUtPnN1YkltYWdlKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgY29udGV4dC0+Z2V0VW5wYWNr
QWxpZ25tZW50KCksIHBpeGVscyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTFmKEdMaW50IGxvY2F0
aW9uLCBHTGZsb2F0IHgpCit7CisgICAgZ2xVbmlmb3JtMWZ2KGxvY2F0aW9uLCAxLCAmeCk7Cit9
CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTFmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xmbG9hdCogdikKK3sKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9uID0g
JWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xmbG9hdCogdiA9IDB4JTAuOHApIiwgbG9j
YXRpb24sIGNvdW50LCB2KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50IDwg
MCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsb2NhdGlvbiA9PSAtMSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5h
cnkgPSBjb250ZXh0LT5nZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpOworICAgICAgICAgICAgaWYg
KCFwcm9ncmFtQmluYXJ5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoIXByb2dyYW1CaW5hcnktPnNldFVuaWZvcm0xZnYobG9jYXRpb24sIGNvdW50LCB2
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMWko
R0xpbnQgbG9jYXRpb24sIEdMaW50IHgpCit7CisgICAgZ2xVbmlmb3JtMWl2KGxvY2F0aW9uLCAx
LCAmeCk7Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTFpdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpCit7CisgICAgRVZFTlQoIihHTGludCBsb2Nh
dGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMaW50KiB2ID0gMHglMC44cCki
LCBsb2NhdGlvbiwgY291bnQsIHYpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoY291
bnQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxvY2F0aW9uID09IC0xKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3Jh
bUJpbmFyeSA9IGNvbnRleHQtPmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAg
ICBpZiAoIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeS0+c2V0VW5pZm9ybTFpdihsb2NhdGlvbiwgY291
bnQsIHYpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFVuaWZv
cm0yZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCit7CisgICAgR0xmbG9h
dCB4eVsyXSA9IHt4LCB5fTsKKworICAgIGdsVW5pZm9ybTJmdihsb2NhdGlvbiwgMSwgKEdMZmxv
YXQqKSZ4eSk7Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTJmdihHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCogdikKK3sKKyAgICBFVkVOVCgiKEdMaW50
IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xmbG9hdCogdiA9IDB4
JTAuOHApIiwgbG9jYXRpb24sIGNvdW50LCB2KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAg
aWYgKGNvdW50IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGxvY2F0
aW9uID09IC0xKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwor
CisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6UHJvZ3Jh
bUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGNvbnRleHQtPmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5
KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeS0+c2V0VW5pZm9ybTJm
dihsb2NhdGlvbiwgY291bnQsIHYpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9f
c3RkY2FsbCBnbFVuaWZvcm0yaShHTGludCBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSkKK3sK
KyAgICBHTGludCB4eVs0XSA9IHt4LCB5fTsKKworICAgIGdsVW5pZm9ybTJpdihsb2NhdGlvbiwg
MSwgKEdMaW50KikmeHkpOworfQorCit2b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm0yaXYoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KQoreworICAgIEVWRU5UKCIo
R0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGludCogdiA9
IDB4JTAuOHApIiwgbG9jYXRpb24sIGNvdW50LCB2KTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgaWYgKGNvdW50IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsb2NhdGlvbiA9
PSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5h
cnkgKnByb2dyYW1CaW5hcnkgPSBjb250ZXh0LT5nZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpOwor
ICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnktPnNldFVuaWZvcm0yaXYobG9j
YXRpb24sIGNvdW50LCB2KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNh
bGwgZ2xVbmlmb3JtM2YoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZs
b2F0IHopCit7CisgICAgR0xmbG9hdCB4eXpbM10gPSB7eCwgeSwgen07CisKKyAgICBnbFVuaWZv
cm0zZnYobG9jYXRpb24sIDEsIChHTGZsb2F0KikmeHl6KTsKK30KKwordm9pZCBfX3N0ZGNhbGwg
Z2xVbmlmb3JtM2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0
KiB2KQoreworICAgIEVWRU5UKCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9
ICVkLCBjb25zdCBHTGZsb2F0KiB2ID0gMHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOwor
CisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoY291bnQgPCAwKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGxvY2F0aW9uID09IC0xKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRO
b25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGNvbnRleHQtPmdldEN1
cnJlbnRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJp
bmFyeS0+c2V0VW5pZm9ybTNmdihsb2NhdGlvbiwgY291bnQsIHYpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9j
JikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Cisg
ICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm0zaShHTGludCBsb2NhdGlvbiwgR0xp
bnQgeCwgR0xpbnQgeSwgR0xpbnQgeikKK3sKKyAgICBHTGludCB4eXpbM10gPSB7eCwgeSwgen07
CisKKyAgICBnbFVuaWZvcm0zaXYobG9jYXRpb24sIDEsIChHTGludCopJnh5eik7Cit9CisKK3Zv
aWQgX19zdGRjYWxsIGdsVW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xpbnQqIHYpCit7CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNp
emVpIGNvdW50ID0gJWQsIGNvbnN0IEdMaW50KiB2ID0gMHglMC44cCkiLCBsb2NhdGlvbiwgY291
bnQsIHYpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoY291bnQgPCAwKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGxvY2F0aW9uID09IC0xKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGNvbnRl
eHQtPmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1C
aW5hcnkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgh
cHJvZ3JhbUJpbmFyeS0+c2V0VW5pZm9ybTNpdihsb2NhdGlvbiwgY291bnQsIHYpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm00ZihHTGludCBsb2Nh
dGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KQoreworICAg
IEdMZmxvYXQgeHl6d1s0XSA9IHt4LCB5LCB6LCB3fTsKKworICAgIGdsVW5pZm9ybTRmdihsb2Nh
dGlvbiwgMSwgKEdMZmxvYXQqKSZ4eXp3KTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3Jt
NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KQorewor
ICAgIEVWRU5UKCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25z
dCBHTGZsb2F0KiB2ID0gMHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBpZiAoY291bnQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGxvY2F0aW9uID09IC0xKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBn
bDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGNvbnRleHQtPmdldEN1cnJlbnRQcm9n
cmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeS0+c2V0
VW5pZm9ybTRmdihsb2NhdGlvbiwgY291bnQsIHYpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7
CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQor
Cit2b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm00aShHTGludCBsb2NhdGlvbiwgR0xpbnQgeCwgR0xp
bnQgeSwgR0xpbnQgeiwgR0xpbnQgdykKK3sKKyAgICBHTGludCB4eXp3WzRdID0ge3gsIHksIHos
IHd9OworCisgICAgZ2xVbmlmb3JtNGl2KGxvY2F0aW9uLCAxLCAoR0xpbnQqKSZ4eXp3KTsKK30K
Kwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGludCogdikKK3sKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9uID0gJWQs
IEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQqIHYgPSAweCUwLjhwKSIsIGxvY2F0aW9u
LCBjb3VudCwgdik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA8IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0g
Y29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJv
Z3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtNGl2KGxvY2F0aW9uLCBjb3VudCwgdikpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybU1hdHJpeDJm
dihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0xmbG9hdCogdmFsdWUpCit7CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBH
THNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UgPSAlZCwgY29uc3QgR0xmbG9h
dCogdmFsdWUgPSAweCUwLjhwKSIsCisgICAgICAgICAgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bv
c2UsIHZhbHVlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50IDwgMCB8fCB0
cmFuc3Bvc2UgIT0gR0xfRkFMU0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9jYXRp
b24gPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFt
QmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnko
KTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtTWF0
cml4MmZ2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7
CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQor
Cit2b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKQorewor
ICAgIEVWRU5UKCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJv
b2xlYW4gdHJhbnNwb3NlID0gJWQsIGNvbnN0IEdMZmxvYXQqIHZhbHVlID0gMHglMC44cCkiLAor
ICAgICAgICAgIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisKKyAgICB0cnkK
KyAgICB7CisgICAgICAgIGlmIChjb3VudCA8IDAgfHwgdHJhbnNwb3NlICE9IEdMX0ZBTFNFKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxvY2F0aW9uID09IC0xKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9
IGNvbnRleHQtPmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXBy
b2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmICghcHJvZ3JhbUJpbmFyeS0+c2V0VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgY291bnQs
IHZhbHVlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlm
b3JtTWF0cml4NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHTGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICVkLCBj
b25zdCBHTGZsb2F0KiB2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoY291
bnQgPCAwIHx8IHRyYW5zcG9zZSAhPSBHTF9GQUxTRSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChsb2NhdGlvbiA9PSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
Z2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBjb250ZXh0LT5nZXRDdXJyZW50UHJv
Z3JhbUJpbmFyeSgpOworICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnktPnNl
dFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
KyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVXNlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkK
K3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQpIiwgcHJvZ3JhbSk7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFt
KTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0ICYmIHByb2dyYW0gIT0gMCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dy
YW0pKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAocHJvZ3JhbSAhPSAwICYmICFwcm9ncmFtT2JqZWN0
LT5pc0xpbmtlZCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBjb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0pOworICAgICAgICB9CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFZhbGlkYXRlUHJv
Z3JhbShHTHVpbnQgcHJvZ3JhbSkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQp
IiwgcHJvZ3JhbSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4
dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIo
cHJvZ3JhbSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHByb2dyYW1PYmplY3QtPnZhbGlkYXRlKCk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsVmVydGV4QXR0cmliMWYoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgpCit7Cisg
ICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwgR0xmbG9hdCB4ID0gJWYpIiwgaW5kZXgsIHgp
OworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhf
QVRUUklCUykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEdMZmxvYXQgdmFsc1s0XSA9IHsgeCwgMCwgMCwgMSB9OworICAgICAg
ICAgICAgY29udGV4dC0+c2V0VmVydGV4QXR0cmliKGluZGV4LCB2YWxzKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwg
Z2xWZXJ0ZXhBdHRyaWIxZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMpCit7
CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwgY29uc3QgR0xmbG9hdCogdmFsdWVzID0g
MHglMC44cCkiLCBpbmRleCwgdmFsdWVzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYg
KGluZGV4ID49IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAg
ICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBHTGZsb2F0IHZhbHNbNF0g
PSB7IHZhbHVlc1swXSwgMCwgMCwgMSB9OworICAgICAgICAgICAgY29udGV4dC0+c2V0VmVydGV4
QXR0cmliKGluZGV4LCB2YWxzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJh
ZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWIyZihHTHVpbnQg
aW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KQoreworICAgIEVWRU5UKCIoR0x1aW50IGluZGV4
ID0gJWQsIEdMZmxvYXQgeCA9ICVmLCBHTGZsb2F0IHkgPSAlZikiLCBpbmRleCwgeCwgeSk7CisK
KyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRS
SUJTKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgR0xmbG9hdCB2YWxzWzRdID0geyB4LCB5LCAwLCAxIH07CisgICAgICAgICAg
ICBjb250ZXh0LT5zZXRWZXJ0ZXhBdHRyaWIoaW5kZXgsIHZhbHMpOworICAgICAgICB9CisgICAg
fQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFZl
cnRleEF0dHJpYjJmdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcykKK3sKKyAg
ICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMgPSAweCUw
LjhwKSIsIGluZGV4LCB2YWx1ZXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoaW5k
ZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMZmxvYXQgdmFsc1s0XSA9IHsg
dmFsdWVzWzBdLCB2YWx1ZXNbMV0sIDAsIDEgfTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFZl
cnRleEF0dHJpYihpbmRleCwgdmFscyk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVmVydGV4QXR0cmliM2YoR0x1
aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQoreworICAgIEVWRU5U
KCIoR0x1aW50IGluZGV4ID0gJWQsIEdMZmxvYXQgeCA9ICVmLCBHTGZsb2F0IHkgPSAlZiwgR0xm
bG9hdCB6ID0gJWYpIiwgaW5kZXgsIHgsIHksIHopOworCisgICAgdHJ5CisgICAgeworICAgICAg
ICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMZmxvYXQgdmFs
c1s0XSA9IHsgeCwgeSwgeiwgMSB9OworICAgICAgICAgICAgY29udGV4dC0+c2V0VmVydGV4QXR0
cmliKGluZGV4LCB2YWxzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWIzZnYoR0x1aW50IGlu
ZGV4LCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMpCit7CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXgg
PSAlZCwgY29uc3QgR0xmbG9hdCogdmFsdWVzID0gMHglMC44cCkiLCBpbmRleCwgdmFsdWVzKTsK
KworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4ID49IGdsOjpNQVhfVkVSVEVYX0FU
VFJJQlMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGds
OjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7
CisgICAgICAgICAgICBHTGZsb2F0IHZhbHNbNF0gPSB7IHZhbHVlc1swXSwgdmFsdWVzWzFdLCB2
YWx1ZXNbMl0sIDEgfTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFZlcnRleEF0dHJpYihpbmRl
eCwgdmFscyk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9
Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVmVydGV4QXR0cmliNGYoR0x1aW50IGluZGV4LCBHTGZs
b2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpCit7CisgICAgRVZFTlQoIihH
THVpbnQgaW5kZXggPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQgeSA9ICVmLCBHTGZsb2F0
IHogPSAlZiwgR0xmbG9hdCB3ID0gJWYpIiwgaW5kZXgsIHgsIHksIHosIHcpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsK
KyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEdMZmxvYXQgdmFsc1s0XSA9IHsgeCwgeSwgeiwgdyB9OworICAgICAgICAgICAgY29udGV4
dC0+c2V0VmVydGV4QXR0cmliKGluZGV4LCB2YWxzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRy
aWI0ZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMpCit7CisgICAgRVZFTlQo
IihHTHVpbnQgaW5kZXggPSAlZCwgY29uc3QgR0xmbG9hdCogdmFsdWVzID0gMHglMC44cCkiLCBp
bmRleCwgdmFsdWVzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4ID49IGds
OjpNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRWZXJ0ZXhBdHRyaWIoaW5k
ZXgsIHZhbHVlcyk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2Mm
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAg
ICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdMdWlu
dCBpbmRleCwgR0x1aW50IGRpdmlzb3IpCit7CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAl
ZCwgR0x1aW50IGRpdmlzb3IgPSAlZCkiLCBpbmRleCwgZGl2aXNvcik7CisKKyAgICB0cnkKKyAg
ICB7CisgICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
Y29udGV4dC0+c2V0VmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgICAg
IH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRj
YWxsIGdsVmVydGV4QXR0cmliUG9pbnRlcihHTHVpbnQgaW5kZXgsIEdMaW50IHNpemUsIEdMZW51
bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9p
ZCogcHRyKQoreworICAgIEVWRU5UKCIoR0x1aW50IGluZGV4ID0gJWQsIEdMaW50IHNpemUgPSAl
ZCwgR0xlbnVtIHR5cGUgPSAweCVYLCAiCisgICAgICAgICAgIkdMYm9vbGVhbiBub3JtYWxpemVk
ID0gJWQsIEdMc2l6ZWkgc3RyaWRlID0gJWQsIGNvbnN0IEdMdm9pZCogcHRyID0gMHglMC44cCki
LAorICAgICAgICAgIGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHB0cik7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9B
VFRSSUJTKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNpemUgPCAxIHx8IHNpemUgPiA0
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFM
VUUpOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAg
ICAgICAgY2FzZSBHTF9CWVRFOgorICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAg
ICAgICAgICBjYXNlIEdMX1NIT1JUOgorICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6
CisgICAgICAgICAgY2FzZSBHTF9GSVhFRDoKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdHJp
ZGUgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgY29udGV4dC0+c2V0VmVydGV4QXR0cmliU3RhdGUoaW5kZXgsIGNvbnRl
eHQtPmdldEFycmF5QnVmZmVyKCksIHNpemUsIHR5cGUsIChub3JtYWxpemVkID09IEdMX1RSVUUp
LCBzdHJpZGUsIHB0cik7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
KyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVmlld3BvcnQoR0xpbnQgeCwgR0xpbnQgeSwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgRVZFTlQoIihHTGludCB4ID0g
JWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVk
KSIsIHgsIHksIHdpZHRoLCBoZWlnaHQpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAo
d2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRWaWV3cG9ydFBhcmFt
cyh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xCbGl0RnJhbWVidWZmZXJBTkdM
RShHTGludCBzcmNYMCwgR0xpbnQgc3JjWTAsIEdMaW50IHNyY1gxLCBHTGludCBzcmNZMSwgR0xp
bnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RYMSwgR0xpbnQgZHN0WTEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywgR0xlbnVtIGZp
bHRlcikKK3sKKyAgICBFVkVOVCgiKEdMaW50IHNyY1gwID0gJWQsIEdMaW50IHNyY1kwID0gJWQs
IEdMaW50IHNyY1gxID0gJWQsIEdMaW50IHNyY1kxID0gJWQsICIKKyAgICAgICAgICAiR0xpbnQg
ZHN0WDAgPSAlZCwgR0xpbnQgZHN0WTAgPSAlZCwgR0xpbnQgZHN0WDEgPSAlZCwgR0xpbnQgZHN0
WTEgPSAlZCwgIgorICAgICAgICAgICJHTGJpdGZpZWxkIG1hc2sgPSAweCVYLCBHTGVudW0gZmls
dGVyID0gMHglWCkiLAorICAgICAgICAgIHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1gxLCBkc3RY
MCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKKworICAgIHRyeQorICAgIHsK
KyAgICAgICAgc3dpdGNoIChmaWx0ZXIpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX05F
QVJFU1Q6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKChtYXNrICYgfihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJf
QklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCkpICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoc3JjWDEgLSBzcmNYMCAhPSBkc3RYMSAtIGRzdFgwIHx8IHNyY1kxIC0gc3JjWTAgIT0g
ZHN0WTEgLSBkc3RZMCkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJTY2FsaW5nIGFuZCBm
bGlwcGluZyBpbiBCbGl0RnJhbWVidWZmZXJBTkdMRSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgaW1w
bGVtZW50YXRpb24iKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1ZmZlckhhbmRsZSgpID09
IGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZlckhhbmRsZSgpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIEVSUigiQmxpdHMgd2l0aCB0aGUgc2FtZSBzb3VyY2UgYW5kIGRlc3RpbmF0
aW9uIGZyYW1lYnVmZmVyIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb24u
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnRleHQtPmJsaXRGcmFtZWJ1ZmZl
cihzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEs
IG1hc2spOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAg
ICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQor
fQorCit2b2lkIF9fc3RkY2FsbCBnbFRleEltYWdlM0RPRVMoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMc2l6ZWkgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
Ym9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMp
Cit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwg
R0xlbnVtIGludGVybmFsZm9ybWF0ID0gMHglWCwgIgorICAgICAgICAgICJHTHNpemVpIHdpZHRo
ID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMc2l6ZWkgZGVwdGggPSAlZCwgR0xpbnQgYm9y
ZGVyID0gJWQsICIKKyAgICAgICAgICAiR0xlbnVtIGZvcm1hdCA9IDB4JVgsIEdMZW51bSB0eXBl
ID0gMHgleCwgY29uc3QgR0x2b2lkKiBwaXhlbHMgPSAweCUwLjhwKSIsCisgICAgICAgICAgdGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
KyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAg
fQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldFByb2dyYW1CaW5hcnlPRVMoR0x1aW50IHByb2dy
YW0sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gKmJpbmFyeUZvcm1hdCwgdm9pZCAqYmluYXJ5KQor
eworICAgIEVWRU5UKCIoR0xlbnVtIHByb2dyYW0gPSAweCVYLCBidWZTaXplID0gJWQsIGxlbmd0
aCA9IDB4JTAuOHAsIGJpbmFyeUZvcm1hdCA9IDB4JTAuOHAsIGJpbmFyeSA9IDB4JTAuOHApIiwK
KyAgICAgICAgICBwcm9ncmFtLCBidWZTaXplLCBsZW5ndGgsIGJpbmFyeUZvcm1hdCwgYmluYXJ5
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9n
cmFtKHByb2dyYW0pOworCisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QgfHwgIXByb2dy
YW1PYmplY3QtPmlzTGlua2VkKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gcHJvZ3JhbU9iamVj
dC0+Z2V0UHJvZ3JhbUJpbmFyeSgpOworCisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3Jh
bUJpbmFyeS0+c2F2ZShiaW5hcnksIGJ1ZlNpemUsIGxlbmd0aCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICpiaW5hcnlGb3JtYXQgPSBHTF9QUk9HUkFNX0JJ
TkFSWV9BTkdMRTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
IH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xQcm9ncmFtQmluYXJ5T0VTKEdMdWludCBwcm9ncmFt
LCBHTGVudW0gYmluYXJ5Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKmJpbmFyeSwgR0xpbnQgbGVuZ3RoKQoreworICAgIEVWRU5UKCIoR0xlbnVt
IHByb2dyYW0gPSAweCVYLCBiaW5hcnlGb3JtYXQgPSAweCV4LCBiaW5hcnkgPSAweCUwLjhwLCBs
ZW5ndGggPSAlZCkiLAorICAgICAgICAgIHByb2dyYW0sIGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBs
ZW5ndGgpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoYmluYXJ5Rm9ybWF0ICE9IEdMX1BST0dSQU1fQklOQVJZX0FO
R0xFKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2w6OlByb2dyYW0g
KnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAg
ICAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGNvbnRleHQtPnNldFByb2dyYW1CaW5hcnkocHJvZ3JhbSwgYmluYXJ5LCBs
ZW5ndGgpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAg
ICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQor
fQorCit2b2lkIF9fc3RkY2FsbCBnbERyYXdCdWZmZXJzRVhUKEdMc2l6ZWkgbiwgY29uc3QgR0xl
bnVtICpidWZzKQoreworICAgIEVWRU5UKCIoR0xlbnVtIG4gPSAlZCwgYnVmcyA9IDB4JTAuOHAp
IiwgbiwgYnVmcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChuIDwgMCB8fCAodW5zaWduZWQgaW50KW4gPiBjb250
ZXh0LT5nZXRNYXhpbXVtUmVuZGVyVGFyZ2V0cygpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXREcmF3RnJhbWVidWZmZXJIYW5kbGUoKSA9
PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChuICE9IDEpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAo
YnVmc1swXSAhPSBHTF9OT05FICYmIGJ1ZnNbMF0gIT0gR0xfQkFDSykKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBjb2xvckF0dGFjaG1l
bnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBuOyBjb2xvckF0dGFjaG1lbnQrKykKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSBhdHRhY2htZW50ID0g
R0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUICsgY29sb3JBdHRhY2htZW50OworICAgICAgICAgICAg
ICAgICAgICBpZiAoYnVmc1tjb2xvckF0dGFjaG1lbnRdICE9IEdMX05PTkUgJiYgYnVmc1tjb2xv
ckF0dGFjaG1lbnRdICE9IGF0dGFjaG1lbnQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+
Z2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGNvbG9yQXR0YWNo
bWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IG47IGNvbG9yQXR0YWNobWVudCsrKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyLT5zZXREcmF3QnVmZmVyU3RhdGUo
Y29sb3JBdHRhY2htZW50LCBidWZzW2NvbG9yQXR0YWNobWVudF0pOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmb3IgKGludCBjb2xvckF0dGFjaG1lbnQgPSBuOyBjb2xvckF0dGFjaG1l
bnQgPCAoaW50KWNvbnRleHQtPmdldE1heGltdW1SZW5kZXJUYXJnZXRzKCk7IGNvbG9yQXR0YWNo
bWVudCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyLT5zZXRE
cmF3QnVmZmVyU3RhdGUoY29sb3JBdHRhY2htZW50LCBHTF9OT05FKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaCAoc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK19f
ZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUgX19zdGRjYWxsIGdsR2V0UHJv
Y0FkZHJlc3MoY29uc3QgY2hhciAqcHJvY25hbWUpCit7CisgICAgc3RydWN0IEV4dGVuc2lvbgor
ICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICAgICAgX19lZ2xNdXN0Q2FzdFRv
UHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSBhZGRyZXNzOworICAgIH07CisKKyAgICBzdGF0aWMg
Y29uc3QgRXh0ZW5zaW9uIGdsRXh0ZW5zaW9uc1tdID0KKyAgICB7CisgICAgICAgIHsiZ2xUZXhJ
bWFnZTNET0VTIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xU
ZXhJbWFnZTNET0VTfSwKKyAgICAgICAgeyJnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFIiwgKF9fZWds
TXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xCbGl0RnJhbWVidWZmZXJBTkdM
RX0sCisgICAgICAgIHsiZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSIsIChf
X2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsUmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEV9LAorICAgICAgICB7ImdsRGVsZXRlRmVuY2VzTlYiLCAoX19l
Z2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbERlbGV0ZUZlbmNlc05WfSwK
KyAgICAgICAgeyJnbEdlbkZlbmNlc05WIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9u
UG9pbnRlclR5cGUpZ2xHZW5GZW5jZXNOVn0sCisgICAgICAgIHsiZ2xJc0ZlbmNlTlYiLCAoX19l
Z2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbElzRmVuY2VOVn0sCisgICAg
ICAgIHsiZ2xUZXN0RmVuY2VOViIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50
ZXJUeXBlKWdsVGVzdEZlbmNlTlZ9LAorICAgICAgICB7ImdsR2V0RmVuY2Vpdk5WIiwgKF9fZWds
TXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xHZXRGZW5jZWl2TlZ9LAorICAg
ICAgICB7ImdsRmluaXNoRmVuY2VOViIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBv
aW50ZXJUeXBlKWdsRmluaXNoRmVuY2VOVn0sCisgICAgICAgIHsiZ2xTZXRGZW5jZU5WIiwgKF9f
ZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xTZXRGZW5jZU5WfSwKKyAg
ICAgICAgeyJnbEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSIsIChfX2VnbE11c3RDYXN0
VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFO
R0xFfSwKKyAgICAgICAgeyJnbFRleFN0b3JhZ2UyREVYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9w
ZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsVGV4U3RvcmFnZTJERVhUfSwKKyAgICAgICAgeyJnbEdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Q
b2ludGVyVHlwZSlnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFR9LAorICAgICAgICB7ImdsUmVh
ZG5QaXhlbHNFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSln
bFJlYWRuUGl4ZWxzRVhUfSwKKyAgICAgICAgeyJnbEdldG5Vbmlmb3JtZnZFWFQiLCAoX19lZ2xN
dXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEdldG5Vbmlmb3JtZnZFWFR9LAor
ICAgICAgICB7ImdsR2V0blVuaWZvcm1pdkVYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5j
dGlvblBvaW50ZXJUeXBlKWdsR2V0blVuaWZvcm1pdkVYVH0sCisgICAgICAgIHsiZ2xHZW5RdWVy
aWVzRVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xHZW5R
dWVyaWVzRVhUfSwKKyAgICAgICAgeyJnbERlbGV0ZVF1ZXJpZXNFWFQiLCAoX19lZ2xNdXN0Q2Fz
dFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbERlbGV0ZVF1ZXJpZXNFWFR9LAorICAgICAg
ICB7ImdsSXNRdWVyeUVYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJU
eXBlKWdsSXNRdWVyeUVYVH0sCisgICAgICAgIHsiZ2xCZWdpblF1ZXJ5RVhUIiwgKF9fZWdsTXVz
dENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xCZWdpblF1ZXJ5RVhUfSwKKyAgICAg
ICAgeyJnbEVuZFF1ZXJ5RVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRl
clR5cGUpZ2xFbmRRdWVyeUVYVH0sCisgICAgICAgIHsiZ2xHZXRRdWVyeWl2RVhUIiwgKF9fZWds
TXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xHZXRRdWVyeWl2RVhUfSwKKyAg
ICAgICAgeyJnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1
bmN0aW9uUG9pbnRlclR5cGUpZ2xHZXRRdWVyeU9iamVjdHVpdkVYVH0sCisgICAgICAgIHsiZ2xE
cmF3QnVmZmVyc0VYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBl
KWdsRHJhd0J1ZmZlcnNFWFR9LAorICAgICAgICB7ImdsVmVydGV4QXR0cmliRGl2aXNvckFOR0xF
IiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xWZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEV9LAorICAgICAgICB7ImdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIiwg
KF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEV9LAorICAgICAgICB7ImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiLCAo
X19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbERyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFfSwKKyAgICAgICAgeyJnbEdldFByb2dyYW1CaW5hcnlPRVMiLCAoX19lZ2xN
dXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEdldFByb2dyYW1CaW5hcnlPRVN9
LAorICAgICAgICB7ImdsUHJvZ3JhbUJpbmFyeU9FUyIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJG
dW5jdGlvblBvaW50ZXJUeXBlKWdsUHJvZ3JhbUJpbmFyeU9FU30sICAgIH07CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGludCBleHQgPSAwOyBleHQgPCBBcnJheVNpemUoZ2xFeHRlbnNpb25zKTsgZXh0
KyspCisgICAgeworICAgICAgICBpZiAoc3RyY21wKHByb2NuYW1lLCBnbEV4dGVuc2lvbnNbZXh0
XS5uYW1lKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKF9fZWdsTXVzdENh
c3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xFeHRlbnNpb25zW2V4dF0uYWRkcmVzczsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorCisvLyBOb24tcHVibGlj
IGZ1bmN0aW9ucyB1c2VkIGJ5IEVHTAorCitib29sIF9fc3RkY2FsbCBnbEJpbmRUZXhJbWFnZShl
Z2w6OlN1cmZhY2UgKnN1cmZhY2UpCit7CisgICAgRVZFTlQoIihlZ2w6OlN1cmZhY2UqIHN1cmZh
Y2UgPSAweCUwLjhwKSIsCisgICAgICAgICAgc3VyZmFjZSk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpUZXh0dXJl
MkQgKnRleHR1cmVPYmplY3QgPSBjb250ZXh0LT5nZXRUZXh0dXJlMkQoKTsKKworICAgICAgICAg
ICAgaWYgKHRleHR1cmVPYmplY3QtPmlzSW1tdXRhYmxlKCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAodGV4dHVyZU9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXh0dXJl
T2JqZWN0LT5iaW5kVGV4SW1hZ2Uoc3VyZmFjZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvbGliR0xFU3YyLmRlZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWYJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWYJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTg1IEBACitMSUJSQVJZIGxpYkdMRVN2MgorRVhQT1JUUworICAgIGdsQWN0aXZlVGV4
dHVyZSAgICAgICAgICAgICAgICAgQDEKKyAgICBnbEF0dGFjaFNoYWRlciAgICAgICAgICAgICAg
ICAgIEAyCisgICAgZ2xCaW5kQXR0cmliTG9jYXRpb24gICAgICAgICAgICBAMworICAgIGdsQmlu
ZEJ1ZmZlciAgICAgICAgICAgICAgICAgICAgQDQKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlciAgICAg
ICAgICAgICAgIEA1CisgICAgZ2xCaW5kUmVuZGVyYnVmZmVyICAgICAgICAgICAgICBANgorICAg
IGdsQmluZFRleHR1cmUgICAgICAgICAgICAgICAgICAgQDcKKyAgICBnbEJsZW5kQ29sb3IgICAg
ICAgICAgICAgICAgICAgIEA4CisgICAgZ2xCbGVuZEVxdWF0aW9uICAgICAgICAgICAgICAgICBA
OQorICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlICAgICAgICAgQDEwCisgICAgZ2xCbGVuZEZ1
bmMgICAgICAgICAgICAgICAgICAgICBAMTEKKyAgICBnbEJsZW5kRnVuY1NlcGFyYXRlICAgICAg
ICAgICAgIEAxMgorICAgIGdsQnVmZmVyRGF0YSAgICAgICAgICAgICAgICAgICAgQDEzCisgICAg
Z2xCdWZmZXJTdWJEYXRhICAgICAgICAgICAgICAgICBAMTQKKyAgICBnbENoZWNrRnJhbWVidWZm
ZXJTdGF0dXMgICAgICAgIEAxNQorICAgIGdsQ2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAg
QDE2CisgICAgZ2xDbGVhckNvbG9yICAgICAgICAgICAgICAgICAgICBAMTcKKyAgICBnbENsZWFy
RGVwdGhmICAgICAgICAgICAgICAgICAgIEAxOAorICAgIGdsQ2xlYXJTdGVuY2lsICAgICAgICAg
ICAgICAgICAgQDE5CisgICAgZ2xDb2xvck1hc2sgICAgICAgICAgICAgICAgICAgICBAMjAKKyAg
ICBnbENvbXBpbGVTaGFkZXIgICAgICAgICAgICAgICAgIEAyMQorICAgIGdsQ29tcHJlc3NlZFRl
eEltYWdlMkQgICAgICAgICAgQDIyCisgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCAgICAg
ICBAMjMKKyAgICBnbENvcHlUZXhJbWFnZTJEICAgICAgICAgICAgICAgIEAyNAorICAgIGdsQ29w
eVRleFN1YkltYWdlMkQgICAgICAgICAgICAgQDI1CisgICAgZ2xDcmVhdGVQcm9ncmFtICAgICAg
ICAgICAgICAgICBAMjYKKyAgICBnbENyZWF0ZVNoYWRlciAgICAgICAgICAgICAgICAgIEAyNwor
ICAgIGdsQ3VsbEZhY2UgICAgICAgICAgICAgICAgICAgICAgQDI4CisgICAgZ2xEZWxldGVCdWZm
ZXJzICAgICAgICAgICAgICAgICBAMjkKKyAgICBnbERlbGV0ZUZyYW1lYnVmZmVycyAgICAgICAg
ICAgIEAzMAorICAgIGdsRGVsZXRlUHJvZ3JhbSAgICAgICAgICAgICAgICAgQDMyCisgICAgZ2xE
ZWxldGVSZW5kZXJidWZmZXJzICAgICAgICAgICBAMzMKKyAgICBnbERlbGV0ZVNoYWRlciAgICAg
ICAgICAgICAgICAgIEAzNAorICAgIGdsRGVsZXRlVGV4dHVyZXMgICAgICAgICAgICAgICAgQDMx
CisgICAgZ2xEZXB0aEZ1bmMgICAgICAgICAgICAgICAgICAgICBAMzYKKyAgICBnbERlcHRoTWFz
ayAgICAgICAgICAgICAgICAgICAgIEAzNworICAgIGdsRGVwdGhSYW5nZWYgICAgICAgICAgICAg
ICAgICAgQDM4CisgICAgZ2xEZXRhY2hTaGFkZXIgICAgICAgICAgICAgICAgICBAMzUKKyAgICBn
bERpc2FibGUgICAgICAgICAgICAgICAgICAgICAgIEAzOQorICAgIGdsRGlzYWJsZVZlcnRleEF0
dHJpYkFycmF5ICAgICAgQDQwCisgICAgZ2xEcmF3QXJyYXlzICAgICAgICAgICAgICAgICAgICBA
NDEKKyAgICBnbERyYXdFbGVtZW50cyAgICAgICAgICAgICAgICAgIEA0MgorICAgIGdsRW5hYmxl
ICAgICAgICAgICAgICAgICAgICAgICAgQDQzCisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eSAgICAgICBANDQKKyAgICBnbEZpbmlzaCAgICAgICAgICAgICAgICAgICAgICAgIEA0NQorICAg
IGdsRmx1c2ggICAgICAgICAgICAgICAgICAgICAgICAgQDQ2CisgICAgZ2xGcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlciAgICAgICBANDcKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEICAgICAgICAg
IEA0OAorICAgIGdsRnJvbnRGYWNlICAgICAgICAgICAgICAgICAgICAgQDQ5CisgICAgZ2xHZW5C
dWZmZXJzICAgICAgICAgICAgICAgICAgICBANTAKKyAgICBnbEdlbkZyYW1lYnVmZmVycyAgICAg
ICAgICAgICAgIEA1MgorICAgIGdsR2VuUmVuZGVyYnVmZmVycyAgICAgICAgICAgICAgQDUzCisg
ICAgZ2xHZW5UZXh0dXJlcyAgICAgICAgICAgICAgICAgICBANTQKKyAgICBnbEdlbmVyYXRlTWlw
bWFwICAgICAgICAgICAgICAgIEA1MQorICAgIGdsR2V0QWN0aXZlQXR0cmliICAgICAgICAgICAg
ICAgQDU1CisgICAgZ2xHZXRBY3RpdmVVbmlmb3JtICAgICAgICAgICAgICBANTYKKyAgICBnbEdl
dEF0dGFjaGVkU2hhZGVycyAgICAgICAgICAgIEA1NworICAgIGdsR2V0QXR0cmliTG9jYXRpb24g
ICAgICAgICAgICAgQDU4CisgICAgZ2xHZXRCb29sZWFudiAgICAgICAgICAgICAgICAgICBANTkK
KyAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2ICAgICAgICAgIEA2MAorICAgIGdsR2V0RXJyb3Ig
ICAgICAgICAgICAgICAgICAgICAgQDYxCisgICAgZ2xHZXRGbG9hdHYgICAgICAgICAgICAgICAg
ICAgICBANjIKKyAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2ICAgQDYz
CisgICAgZ2xHZXRJbnRlZ2VydiAgICAgICAgICAgICAgICAgICBANjQKKyAgICBnbEdldFByb2dy
YW1JbmZvTG9nICAgICAgICAgICAgIEA2NgorICAgIGdsR2V0UHJvZ3JhbWl2ICAgICAgICAgICAg
ICAgICAgQDY1CisgICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiAgICBANjcKKyAgICBn
bEdldFNoYWRlckluZm9Mb2cgICAgICAgICAgICAgIEA2OQorICAgIGdsR2V0U2hhZGVyUHJlY2lz
aW9uRm9ybWF0ICAgICAgQDcwCisgICAgZ2xHZXRTaGFkZXJTb3VyY2UgICAgICAgICAgICAgICBA
NzEKKyAgICBnbEdldFNoYWRlcml2ICAgICAgICAgICAgICAgICAgIEA2OAorICAgIGdsR2V0U3Ry
aW5nICAgICAgICAgICAgICAgICAgICAgQDcyCisgICAgZ2xHZXRUZXhQYXJhbWV0ZXJmdiAgICAg
ICAgICAgICBANzMKKyAgICBnbEdldFRleFBhcmFtZXRlcml2ICAgICAgICAgICAgIEA3NAorICAg
IGdsR2V0VW5pZm9ybUxvY2F0aW9uICAgICAgICAgICAgQDc3CisgICAgZ2xHZXRVbmlmb3JtZnYg
ICAgICAgICAgICAgICAgICBANzUKKyAgICBnbEdldFVuaWZvcm1pdiAgICAgICAgICAgICAgICAg
IEA3NgorICAgIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYgICAgICAgQDgwCisgICAgZ2xHZXRW
ZXJ0ZXhBdHRyaWJmdiAgICAgICAgICAgICBANzgKKyAgICBnbEdldFZlcnRleEF0dHJpYml2ICAg
ICAgICAgICAgIEA3OQorICAgIGdsSGludCAgICAgICAgICAgICAgICAgICAgICAgICAgQDgxCisg
ICAgZ2xJc0J1ZmZlciAgICAgICAgICAgICAgICAgICAgICBAODIKKyAgICBnbElzRW5hYmxlZCAg
ICAgICAgICAgICAgICAgICAgIEA4MworICAgIGdsSXNGcmFtZWJ1ZmZlciAgICAgICAgICAgICAg
ICAgQDg0CisgICAgZ2xJc1Byb2dyYW0gICAgICAgICAgICAgICAgICAgICBAODUKKyAgICBnbElz
UmVuZGVyYnVmZmVyICAgICAgICAgICAgICAgIEA4NgorICAgIGdsSXNTaGFkZXIgICAgICAgICAg
ICAgICAgICAgICAgQDg3CisgICAgZ2xJc1RleHR1cmUgICAgICAgICAgICAgICAgICAgICBAODgK
KyAgICBnbExpbmVXaWR0aCAgICAgICAgICAgICAgICAgICAgIEA4OQorICAgIGdsTGlua1Byb2dy
YW0gICAgICAgICAgICAgICAgICAgQDkwCisgICAgZ2xQaXhlbFN0b3JlaSAgICAgICAgICAgICAg
ICAgICBAOTEKKyAgICBnbFBvbHlnb25PZmZzZXQgICAgICAgICAgICAgICAgIEA5MgorICAgIGds
UmVhZFBpeGVscyAgICAgICAgICAgICAgICAgICAgQDkzCisgICAgZ2xSZWxlYXNlU2hhZGVyQ29t
cGlsZXIgICAgICAgICBAOTQKKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UgICAgICAgICAgIEA5
NQorICAgIGdsU2FtcGxlQ292ZXJhZ2UgICAgICAgICAgICAgICAgQDk2CisgICAgZ2xTY2lzc29y
ICAgICAgICAgICAgICAgICAgICAgICBAOTcKKyAgICBnbFNoYWRlckJpbmFyeSAgICAgICAgICAg
ICAgICAgIEA5OAorICAgIGdsU2hhZGVyU291cmNlICAgICAgICAgICAgICAgICAgQDk5CisgICAg
Z2xTdGVuY2lsRnVuYyAgICAgICAgICAgICAgICAgICBAMTAwCisgICAgZ2xTdGVuY2lsRnVuY1Nl
cGFyYXRlICAgICAgICAgICBAMTAxCisgICAgZ2xTdGVuY2lsTWFzayAgICAgICAgICAgICAgICAg
ICBAMTAyCisgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlICAgICAgICAgICBAMTAzCisgICAgZ2xT
dGVuY2lsT3AgICAgICAgICAgICAgICAgICAgICBAMTA0CisgICAgZ2xTdGVuY2lsT3BTZXBhcmF0
ZSAgICAgICAgICAgICBAMTA1CisgICAgZ2xUZXhJbWFnZTJEICAgICAgICAgICAgICAgICAgICBA
MTA2CisgICAgZ2xUZXhQYXJhbWV0ZXJmICAgICAgICAgICAgICAgICBAMTA3CisgICAgZ2xUZXhQ
YXJhbWV0ZXJmdiAgICAgICAgICAgICAgICBAMTA4CisgICAgZ2xUZXhQYXJhbWV0ZXJpICAgICAg
ICAgICAgICAgICBAMTA5CisgICAgZ2xUZXhQYXJhbWV0ZXJpdiAgICAgICAgICAgICAgICBAMTEw
CisgICAgZ2xUZXhTdWJJbWFnZTJEICAgICAgICAgICAgICAgICBAMTExCisgICAgZ2xVbmlmb3Jt
MWYgICAgICAgICAgICAgICAgICAgICBAMTEyCisgICAgZ2xVbmlmb3JtMWZ2ICAgICAgICAgICAg
ICAgICAgICBAMTEzCisgICAgZ2xVbmlmb3JtMWkgICAgICAgICAgICAgICAgICAgICBAMTE0Cisg
ICAgZ2xVbmlmb3JtMWl2ICAgICAgICAgICAgICAgICAgICBAMTE1CisgICAgZ2xVbmlmb3JtMmYg
ICAgICAgICAgICAgICAgICAgICBAMTE2CisgICAgZ2xVbmlmb3JtMmZ2ICAgICAgICAgICAgICAg
ICAgICBAMTE3CisgICAgZ2xVbmlmb3JtMmkgICAgICAgICAgICAgICAgICAgICBAMTE4CisgICAg
Z2xVbmlmb3JtMml2ICAgICAgICAgICAgICAgICAgICBAMTE5CisgICAgZ2xVbmlmb3JtM2YgICAg
ICAgICAgICAgICAgICAgICBAMTIwCisgICAgZ2xVbmlmb3JtM2Z2ICAgICAgICAgICAgICAgICAg
ICBAMTIxCisgICAgZ2xVbmlmb3JtM2kgICAgICAgICAgICAgICAgICAgICBAMTIyCisgICAgZ2xV
bmlmb3JtM2l2ICAgICAgICAgICAgICAgICAgICBAMTIzCisgICAgZ2xVbmlmb3JtNGYgICAgICAg
ICAgICAgICAgICAgICBAMTI0CisgICAgZ2xVbmlmb3JtNGZ2ICAgICAgICAgICAgICAgICAgICBA
MTI1CisgICAgZ2xVbmlmb3JtNGkgICAgICAgICAgICAgICAgICAgICBAMTI2CisgICAgZ2xVbmlm
b3JtNGl2ICAgICAgICAgICAgICAgICAgICBAMTI3CisgICAgZ2xVbmlmb3JtTWF0cml4MmZ2ICAg
ICAgICAgICAgICBAMTI4CisgICAgZ2xVbmlmb3JtTWF0cml4M2Z2ICAgICAgICAgICAgICBAMTI5
CisgICAgZ2xVbmlmb3JtTWF0cml4NGZ2ICAgICAgICAgICAgICBAMTMwCisgICAgZ2xVc2VQcm9n
cmFtICAgICAgICAgICAgICAgICAgICBAMTMxCisgICAgZ2xWYWxpZGF0ZVByb2dyYW0gICAgICAg
ICAgICAgICBAMTMyCisgICAgZ2xWZXJ0ZXhBdHRyaWIxZiAgICAgICAgICAgICAgICBAMTMzCisg
ICAgZ2xWZXJ0ZXhBdHRyaWIxZnYgICAgICAgICAgICAgICBAMTM0CisgICAgZ2xWZXJ0ZXhBdHRy
aWIyZiAgICAgICAgICAgICAgICBAMTM1CisgICAgZ2xWZXJ0ZXhBdHRyaWIyZnYgICAgICAgICAg
ICAgICBAMTM2CisgICAgZ2xWZXJ0ZXhBdHRyaWIzZiAgICAgICAgICAgICAgICBAMTM3CisgICAg
Z2xWZXJ0ZXhBdHRyaWIzZnYgICAgICAgICAgICAgICBAMTM4CisgICAgZ2xWZXJ0ZXhBdHRyaWI0
ZiAgICAgICAgICAgICAgICBAMTM5CisgICAgZ2xWZXJ0ZXhBdHRyaWI0ZnYgICAgICAgICAgICAg
ICBAMTQwCisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyICAgICAgICAgICBAMTQxCisgICAgZ2xW
aWV3cG9ydCAgICAgICAgICAgICAgICAgICAgICBAMTQyCisKKyAgICA7IEV4dGVuc2lvbnMKKyAg
ICBnbFRleEltYWdlM0RPRVMgICAgICAgICAgICAgICAgIEAxNDMKKyAgICBnbEJsaXRGcmFtZWJ1
ZmZlckFOR0xFICAgICAgICAgIEAxNDkKKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUFOR0xFIEAxNTAKKyAgICBnbERlbGV0ZUZlbmNlc05WICAgICAgICAgICAgICAgIEAxNTEK
KyAgICBnbEZpbmlzaEZlbmNlTlYgICAgICAgICAgICAgICAgIEAxNTIKKyAgICBnbEdlbkZlbmNl
c05WICAgICAgICAgICAgICAgICAgIEAxNTMKKyAgICBnbEdldEZlbmNlaXZOViAgICAgICAgICAg
ICAgICAgIEAxNTQKKyAgICBnbElzRmVuY2VOViAgICAgICAgICAgICAgICAgICAgIEAxNTUKKyAg
ICBnbFNldEZlbmNlTlYgICAgICAgICAgICAgICAgICAgIEAxNTYKKyAgICBnbFRlc3RGZW5jZU5W
ICAgICAgICAgICAgICAgICAgIEAxNTcKKyAgICBnbEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRSBAMTU5CisgICAgZ2xUZXhTdG9yYWdlMkRFWFQgICAgICAgICAgICAgICBAMTYwCisgICAg
Z2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUICAgICBAMTYxCisgICAgZ2xSZWFkblBpeGVsc0VY
VCAgICAgICAgICAgICAgICBAMTYyCisgICAgZ2xHZXRuVW5pZm9ybWZ2RVhUICAgICAgICAgICAg
ICBAMTYzCisgICAgZ2xHZXRuVW5pZm9ybWl2RVhUICAgICAgICAgICAgICBAMTY0CisgICAgZ2xH
ZW5RdWVyaWVzRVhUICAgICAgICAgICAgICAgICBAMTY1CisgICAgZ2xEZWxldGVRdWVyaWVzRVhU
ICAgICAgICAgICAgICBAMTY2CisgICAgZ2xJc1F1ZXJ5RVhUICAgICAgICAgICAgICAgICAgICBA
MTY3CisgICAgZ2xCZWdpblF1ZXJ5RVhUICAgICAgICAgICAgICAgICBAMTY4CisgICAgZ2xFbmRR
dWVyeUVYVCAgICAgICAgICAgICAgICAgICBAMTY5CisgICAgZ2xHZXRRdWVyeWl2RVhUICAgICAg
ICAgICAgICAgICBAMTcwCisgICAgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVCAgICAgICAgICBAMTcx
CisgICAgZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUgICAgICBAMTcyCisgICAgZ2xEcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUgICAgICBAMTczCisgICAgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRSAgICBAMTc0CisgICAgZ2xQcm9ncmFtQmluYXJ5T0VTICAgICAgICAgICAgICBAMTc1Cisg
ICAgZ2xHZXRQcm9ncmFtQmluYXJ5T0VTICAgICAgICAgICBAMTc2CisgICAgZ2xEcmF3QnVmZmVy
c0VYVCAgICAgICAgICAgICAgICBAMTc5CisKKyAgICA7IEVHTCBkZXBlbmRlbmNpZXMKKyAgICBn
bENyZWF0ZUNvbnRleHQgICAgICAgICAgICAgICAgIEAxNDQgTk9OQU1FCisgICAgZ2xEZXN0cm95
Q29udGV4dCAgICAgICAgICAgICAgICBAMTQ1IE5PTkFNRQorICAgIGdsTWFrZUN1cnJlbnQgICAg
ICAgICAgICAgICAgICAgQDE0NiBOT05BTUUKKyAgICBnbEdldEN1cnJlbnRDb250ZXh0ICAgICAg
ICAgICAgIEAxNDcgTk9OQU1FCisgICAgZ2xHZXRQcm9jQWRkcmVzcyAgICAgICAgICAgICAgICBA
MTQ4IE5PTkFNRQorICAgIGdsQmluZFRleEltYWdlICAgICAgICAgICAgICAgICAgQDE1OCBOT05B
TUUKKyAgICBnbENyZWF0ZVJlbmRlcmVyICAgICAgICAgICAgICAgIEAxNzcgTk9OQU1FCisgICAg
Z2xEZXN0cm95UmVuZGVyZXIgICAgICAgICAgICAgICBAMTc4IE5PTkFNRQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvbGliR0xFU3YyLnJjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvbGliR0xFU3YyLnJjCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIucmMJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTAyIEBACisvLyBNaWNyb3NvZnQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgcmVzb3VyY2Ugc2Ny
aXB0LgorLy8KKyNpbmNsdWRlICJyZXNvdXJjZS5oIgorCisjZGVmaW5lIEFQU1RVRElPX1JFQURP
TkxZX1NZTUJPTFMKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gR2VuZXJhdGVkIGZyb20g
dGhlIFRFWFRJTkNMVURFIDIgcmVzb3VyY2UuCisvLworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNp
bmNsdWRlICIuLi9jb21tb24vdmVyc2lvbi5oIgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworI3Vu
ZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8v
IEVuZ2xpc2ggKFUuUy4pIHJlc291cmNlcworCisjaWYgIWRlZmluZWQoQUZYX1JFU09VUkNFX0RM
TCkgfHwgZGVmaW5lZChBRlhfVEFSR19FTlUpCisjaWZkZWYgX1dJTjMyCitMQU5HVUFHRSBMQU5H
X0VOR0xJU0gsIFNVQkxBTkdfRU5HTElTSF9VUworI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikKKyNl
bmRpZiAvL19XSU4zMgorCisjaWZkZWYgQVBTVFVESU9fSU5WT0tFRAorLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KKy8vCisvLyBURVhUSU5DTFVERQorLy8KKworMSBURVhUSU5DTFVERSAKK0JFR0lOCisg
ICAgInJlc291cmNlLmhcMCIKK0VORAorCisyIFRFWFRJTkNMVURFIAorQkVHSU4KKyAgICAiI2lu
Y2x1ZGUgIiJhZnhyZXMuaCIiXHJcbiIKKyAgICAiI2luY2x1ZGUgIiIuLi9jb21tb24vdmVyc2lv
bi5oIiJcMCIKK0VORAorCiszIFRFWFRJTkNMVURFIAorQkVHSU4KKyAgICAiXHJcbiIKKyAgICAi
XDAiCitFTkQKKworI2VuZGlmICAgIC8vIEFQU1RVRElPX0lOVk9LRUQKKworCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLworLy8KKy8vIFZlcnNpb24KKy8vCisKK1ZTX1ZFUlNJT05fSU5GTyBWRVJTSU9O
SU5GTworIEZJTEVWRVJTSU9OIE1BSk9SX1ZFUlNJT04sTUlOT1JfVkVSU0lPTixCVUlMRF9WRVJT
SU9OLEJVSUxEX1JFVklTSU9OCisgUFJPRFVDVFZFUlNJT04gTUFKT1JfVkVSU0lPTixNSU5PUl9W
RVJTSU9OLEJVSUxEX1ZFUlNJT04sQlVJTERfUkVWSVNJT04KKyBGSUxFRkxBR1NNQVNLIDB4MTdM
CisjaWZkZWYgX0RFQlVHCisgRklMRUZMQUdTIDB4MUwKKyNlbHNlCisgRklMRUZMQUdTIDB4MEwK
KyNlbmRpZgorIEZJTEVPUyAweDRMCisgRklMRVRZUEUgMHgyTAorIEZJTEVTVUJUWVBFIDB4MEwK
K0JFR0lOCisgICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIEJM
T0NLICIwNDA5MDRiMCIKKyAgICAgICAgQkVHSU4KKyAgICAgICAgICAgIFZBTFVFICJGaWxlRGVz
Y3JpcHRpb24iLCAiQU5HTEUgbGliR0xFU3YyIER5bmFtaWMgTGluayBMaWJyYXJ5IgorICAgICAg
ICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgVkVSU0lPTl9TVFJJTkcKKyAgICAgICAgICAgIFZB
TFVFICJJbnRlcm5hbE5hbWUiLCAibGliR0xFU3YyIgorICAgICAgICAgICAgVkFMVUUgIkxlZ2Fs
Q29weXJpZ2h0IiwgIkNvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiIKKyAgICAgICAgICAg
IFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgImxpYkdMRVN2Mi5kbGwiCisgICAgICAgICAgICBW
QUxVRSAiUHJpdmF0ZUJ1aWxkIiwgVkVSU0lPTl9TVFJJTkcKKyAgICAgICAgICAgIFZBTFVFICJQ
cm9kdWN0TmFtZSIsICJBTkdMRSBsaWJHTEVTdjIgRHluYW1pYyBMaW5rIExpYnJhcnkiCisgICAg
ICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBWRVJTSU9OX1NUUklORworICAgICAgICBF
TkQKKyAgICBFTkQKKyAgICBCTE9DSyAiVmFyRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAg
VkFMVUUgIlRyYW5zbGF0aW9uIiwgMHg0MDksIDEyMDAKKyAgICBFTkQKK0VORAorCisjZW5kaWYg
ICAgLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisK
KworI2lmbmRlZiBBUFNUVURJT19JTlZPS0VECisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8v
IEdlbmVyYXRlZCBmcm9tIHRoZSBURVhUSU5DTFVERSAzIHJlc291cmNlLgorLy8KKworCisvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLworI2VuZGlmICAgIC8vIG5vdCBBUFNUVURJT19JTlZPS0VECkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGli
R0xFU3YyLnZjeHByb2oJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQy
MyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8UHJvamVj
dCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDov
L3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVt
R3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+DQorICAgIDxQcm9qZWN0Q29uZmln
dXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVi
dWc8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisg
ICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IkRlYnVnfHg2NCI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3Vy
YXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENv
bmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNl
fFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0K
KyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3Vy
YXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+
DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8
UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisg
IDwvSXRlbUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KKyAgICA8
UHJvamVjdEd1aWQ+e0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH08L1Byb2pl
Y3RHdWlkPg0KKyAgICA8Um9vdE5hbWVzcGFjZT5saWJHTEVTdjI8L1Jvb3ROYW1lc3BhY2U+DQor
ICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisg
IDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQu
cHJvcHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQor
ICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQ
cm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwv
UHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+
DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisg
ICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4N
CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVBy
b2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Q
cm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQor
ICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0
eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5D
cHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4N
CisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBw
RGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFi
ZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3Rz
KCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIg
TGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJ
bXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBv
cnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQorICAgIDxJ
bXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51
c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIg
Lz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3Jv
cyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4w
LjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25E
aXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChDb25maWd1cmF0
aW9uKVw8L0ludERpcj4NCisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVu
dGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091
dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj4kKENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0KKyAgICA8
TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4k
KFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAg
IDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj4kKFBsYXRmb3JtKVwkKENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0KKyAgICA8TGlu
a0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KKyAgICA8T3V0RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFNvbHV0
aW9uRGlyKSQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxMaW5rSW5j
cmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxJbmNsdWRlUGF0aCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChJ
bmNsdWRlUGF0aCk8L0luY2x1ZGVQYXRoPg0KKyAgICA8TGlicmFyeVBhdGggQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTGlicmFyeVBh
dGgpPC9MaWJyYXJ5UGF0aD4NCisgICAgPEluY2x1ZGVQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChJbmNsdWRlUGF0aCk8L0luY2x1
ZGVQYXRoPg0KKyAgICA8TGlicmFyeVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQor
ICAgIDxJbmNsdWRlUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+JChJbmNsdWRlUGF0aCk8L0luY2x1ZGVQYXRoPg0KKyAgICA8SW5j
bHVkZVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+JChJbmNsdWRlUGF0aCk8L0luY2x1ZGVQYXRoPg0KKyAgICA8TGlicmFyeVBh
dGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgICAgPExpYnJhcnlQYXRoIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQo
TGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9u
PkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+JChQcm9qZWN0RGlyKTskKFByb2plY3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4uLy4u
L2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RF
QlVHO19XSU5ET1dTO19VU1JETEw7TElCR0xFU1YyX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQ
UkVDQVRFO05PTUlOTUFYOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+
DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRp
bWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVu
dGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRI
ZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAg
ICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAg
IDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlv
bkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7
NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNh
YmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXJGaWxlPnByZWNv
bXBpbGVkLmg8L1ByZWNvbXBpbGVkSGVhZGVyRmlsZT4NCisgICAgICA8QWRkaXRpb25hbE9wdGlv
bnM+JChFeHRlcm5hbENvbXBpbGVyT3B0aW9ucykgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0
aW9uYWxPcHRpb25zPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFk
ZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7ZHhndWlkLmxpYjslKEFkZGl0aW9uYWxEZXBl
bmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxNb2R1bGVEZWZpbml0
aW9uRmlsZT5saWJHTEVTdjIuZGVmPC9Nb2R1bGVEZWZpbml0aW9uRmlsZT4NCisgICAgICA8R2Vu
ZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisg
ICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4ZWN1dGlv
blByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8
VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQor
ICAgIDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIg
IiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXRE
aXIpbGliR0xFU3YyLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9u
KVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxs
aWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwv
UG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmlu
aXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPk1h
eFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkFu
eVN1aXRhYmxlPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4NCisgICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpOyQoUHJvamVjdERpcikvLi47ICQoUHJvamVj
dERpcikvLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5BTkdMRV9ESVNBQkxFX1RSQUNFO1dJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO0xJQkdM
RVNWMl9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDtfU0VDVVJFX1ND
TD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4N
CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+DQor
ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAg
PFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5n
QXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAg
ICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7
NDUxMjs0NzAyOzQ3MTg7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZp
Y1dhcm5pbmdzPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlckZpbGU+cHJlY29tcGlsZWQuaDwv
UHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4kKEV4dGVy
bmFsQ29tcGlsZXJPcHRpb25zKSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlv
bnM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERl
cGVuZGVuY2llcz5kM2Q5LmxpYjtkeGd1aWQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8
L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJp
ZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+DQorICAgICAgPE1vZHVsZURlZmlu
aXRpb25GaWxlPmxpYkdMRVN2Mi5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KKyAgICAgIDxH
ZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0K
KyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KKyAgICAgIDxPcHRpbWl6ZVJl
ZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxFbmFibGVDT01EQVRG
b2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPERhdGFFeGVjdXRpb25Q
cmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRh
cmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAg
ICA8UG9zdEJ1aWxkRXZlbnQ+DQorICAgICAgPENvbW1hbmQ+JTQwZWNobyBvbg0KK21rZGlyICIk
KFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGly
KWxpYkdMRVN2Mi5kbGwiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilc
Ig0KK2NvcHkgIiQoT3V0RGlyKWxpYkdMRVN2Mi5saWIiICIkKFByb2plY3REaXIpLi5cLi5cbGli
XCQoQ29uZmlndXJhdGlvbilcIg0KKyU0MGVjaG8gb2ZmDQorPC9Db21tYW5kPg0KKyAgICA8L1Bv
c3RCdWlsZEV2ZW50Pg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0
aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFy
Z2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8
T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9p
bmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJV
RztfV0lORE9XUztfVVNSRExMO0xJQkdMRVNWMl9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RFUFJF
Q0FURTtOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0K
KyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1l
Q2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRp
bWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVh
ZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAg
PERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1
MTI7NDcwMjs0NzE4OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNX
YXJuaW5ncz4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8
L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1
ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXJGaWxlPnBy
ZWNvbXBpbGVkLmg8L1ByZWNvbXBpbGVkSGVhZGVyRmlsZT4NCisgICAgICA8QWRkaXRpb25hbE9w
dGlvbnM+JChFeHRlcm5hbENvbXBpbGVyT3B0aW9ucykgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0Fk
ZGl0aW9uYWxPcHRpb25zPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAg
PEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7ZHhndWlkLmxpYjslKEFkZGl0aW9uYWxE
ZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxNb2R1bGVEZWZp
bml0aW9uRmlsZT5saWJHTEVTdjIuZGVmPC9Nb2R1bGVEZWZpbml0aW9uRmlsZT4NCisgICAgICA8
R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4N
CisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4ZWN1
dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAg
ICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+
DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtk
aXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChP
dXREaXIpbGliR0xFU3YyLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0
aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmxpYiIgIiQoUHJvamVjdERpcikuLlwu
LlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAg
IDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5Y
NjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQor
ICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxp
bmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+
DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS8uLjsg
JChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRl
ZmluaXRpb25zPldJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO0xJQkdMRVNWMl9FWFBPUlRT
O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVu
dGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZl
bD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+
NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ3MTg7JShEaXNhYmxlU3Bl
Y2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxEZWJ1Z0lu
Zm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4N
CisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0K
KyAgICAgIDxQcmVjb21waWxlZEhlYWRlckZpbGU+cHJlY29tcGlsZWQuaDwvUHJlY29tcGlsZWRI
ZWFkZXJGaWxlPg0KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4kKEV4dGVybmFsQ29tcGlsZXJP
cHRpb25zKSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5k
M2Q5LmxpYjtkeGd1aWQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxE
ZXBlbmRlbmNpZXM+DQorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0ln
bm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+DQorICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPmxp
YkdMRVN2Mi5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KKyAgICAgIDxHZW5lcmF0ZURlYnVn
SW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KKyAgICAgIDxTdWJT
eXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1
ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8
L0VuYWJsZUNPTURBVEZvbGRpbmc+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0K
KyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+
TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgICA8UG9zdEJ1aWxk
RXZlbnQ+DQorICAgICAgPENvbW1hbmQ+JTQwZWNobyBvbg0KK21rZGlyICIkKFByb2plY3REaXIp
Li5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxpYkdMRVN2Mi5k
bGwiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQo
T3V0RGlyKWxpYkdMRVN2Mi5saWIiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJh
dGlvbilcIg0KKyU0MGVjaG8gb2ZmDQorPC9Db21tYW5kPg0KKyAgICA8L1Bvc3RCdWlsZEV2ZW50
Pg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxtdXJtdXJoYXNoXE11cm11ckhhc2gzLmNwcCI+
DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+
DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRl
cj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+
DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkJ1ZmZlci5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29udGV4dC5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cY29tbW9uXGRlYnVnLmNwcCI+DQorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGls
ZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj5Ob3RVc2luZzwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkZlbmNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJGbG9hdDE2VG9GbG9hdDMyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJGcmFtZWJ1ZmZlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSGFuZGxlQWxs
b2NhdG9yLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJsaWJHTEVTdjIuY3BwIiAv
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im1haW4uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9InByZWNvbXBpbGVkLmNwcCI+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5D
cmVhdGU8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5D
cmVhdGU8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkNyZWF0
ZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5DcmVhdGU8
L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJQcm9ncmFtLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQcm9ncmFt
QmluYXJ5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJRdWVyeS5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY29tbW9uXFJlZkNvdW50T2JqZWN0LmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJSZW5kZXJidWZmZXIuY3BwIiAvPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEJsaXQuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9InJlbmRlcmVyXEZlbmNlMTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
InJlbmRlcmVyXEZlbmNlOS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVy
ZXJcQnVmZmVyU3RvcmFnZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVy
ZXJcQnVmZmVyU3RvcmFnZTExLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5k
ZXJlclxCdWZmZXJTdG9yYWdlOS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVu
ZGVyZXJcSW1hZ2UuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXElt
YWdlOS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZm
ZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVy
MTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVy
OS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhEYXRhTWFu
YWdlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2VTU0Uy
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZTExLmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbnB1dExheW91dENhY2hlLmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTExLmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTkuY3BwIiAvPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlcjExLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJyZW5kZXJlclxyZW5kZXJlcjExX3V0aWxzLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlcjkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyOV91dGlscy5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0MTEuY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclRhcmdldDkuY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclN0YXRlQ2FjaGUuY3BwIiAvPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGUxMS5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTkuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjExLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxTd2FwQ2hhaW45LmNwcCIgLz4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJlU3RvcmFnZS5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2UxMS5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2U5LmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXIuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjExLmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXI5LmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhEYXRhTWFuYWdlci5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4RGVjbGFyYXRpb25D
YWNoZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUmVzb3VyY2VNYW5hZ2VyLmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTaGFkZXIuY3BwIiAvPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IlRleHR1cmUuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IlVuaWZvcm0uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InV0aWxpdGllcy5jcHAi
IC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cY29tbW9uXGRlYnVnLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Y29tbW9uXHN5c3RlbS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHRoaXJkX3Bh
cnR5XG11cm11cmhhc2hcTXVybXVySGFzaDMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJhbmdsZXR5cGVzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQmluYXJ5U3RyZWFt
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQnVmZmVyLmgiIC8+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iY29uc3RhbnRzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Q29udGV4dC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkZlbmNlLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iRnJhbWVidWZmZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wyZXh0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cLi5caW5jbHVkZVxHTEVTMlxnbDJwbGF0Zm9ybS5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IkhhbmRsZUFsbG9jYXRvci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Im1haW4uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJtYXRodXRpbC5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InByZWNvbXBpbGVkLmgiIC8+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iUHJvZ3JhbS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlBy
b2dyYW1CaW5hcnkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJRdWVyeS5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblxSZWZDb3VudE9iamVjdC5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlbmRlcmJ1ZmZlci5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXEJsaXQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJyZW5kZXJlclxGZW5jZTExLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVy
ZXJcRmVuY2U5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2VJ
bXBsLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3RvcmFn
ZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2Ux
MS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2U5
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcZ2VuZXJhdGVtaXAuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZS5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlMTEuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZTkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJyZW5kZXJlclxJbmRleEJ1ZmZlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJl
bmRlcmVyXEluZGV4QnVmZmVyMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxJbmRleEJ1ZmZlcjkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxJbmRleERhdGFNYW5hZ2VyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVy
ZXJcSW5wdXRMYXlvdXRDYWNoZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRl
cmVyXFF1ZXJ5MTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVy
eUltcGwuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTkuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlci5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyMTEuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxyZW5kZXJlcjExX3V0aWxzLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXI5LmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXI5X3V0aWxzLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0MTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQ5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0icmVuZGVyZXJcUmVuZGVyU3RhdGVDYWNoZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXFNoYWRlckNhY2hlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGUxMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGU5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxjbGVhcjExdnMuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNsZWFybXVsdGlw
bGUxMXBzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xj
b21waWxlZFxjbGVhcnNpbmdsZTExcHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJy
ZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNvbXBvbmVudG1hc2twcy5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcZmxpcHl2cy5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcbHVtaW5h
bmNlcHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNv
bXBpbGVkXHBhc3N0aHJvdWdoMTF2cy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJl
bmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2hsdW0xMXBzLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaGx1
bWFscGhhMTFwcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRl
cnNcY29tcGlsZWRccGFzc3Rocm91Z2hwcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2hyZ2IxMXBzLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3Vn
aHJnYmExMXBzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVy
c1xjb21waWxlZFxzdGFuZGFyZHZzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVu
ZGVyZXJcU3dhcENoYWluLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
U3dhcENoYWluMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTd2Fw
Q2hhaW45LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0
b3JhZ2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJlU3Rv
cmFnZTExLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0
b3JhZ2U5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVm
ZmVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVy
MTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXI5
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcdmVydGV4Y29udmVyc2lv
bi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleERhdGFNYW5h
Z2VyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4RGVjbGFy
YXRpb25DYWNoZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlc291cmNlLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVzb3VyY2VNYW5hZ2VyLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iU2hhZGVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
VGV4dHVyZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuaWZvcm0uaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJ1dGlsaXRpZXMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxjb21tb25cdmVyc2lvbi5oIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRl
bUdyb3VwPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJsaWJHTEVTdjIuZGVmIiAvPg0KKyAgICA8Tm9u
ZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXEJsaXQucHMiIC8+DQorICAgIDxOb25lIEluY2x1
ZGU9InJlbmRlcmVyXHNoYWRlcnNcQmxpdC52cyIgLz4NCisgICAgPE5vbmUgSW5jbHVkZT0icmVu
ZGVyZXJcc2hhZGVyc1xDbGVhcjExLmhsc2wiIC8+DQorICAgIDxOb25lIEluY2x1ZGU9InJlbmRl
cmVyXHNoYWRlcnNcZ2VuZXJhdGVfc2hhZGVycy5iYXQiIC8+DQorICAgIDxOb25lIEluY2x1ZGU9
InJlbmRlcmVyXHNoYWRlcnNcUGFzc3Rocm91Z2gxMS5obHNsIiAvPg0KKyAgPC9JdGVtR3JvdXA+
DQorICA8SXRlbUdyb3VwPg0KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9ImxpYkdMRVN2
Mi5yYyIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPFByb2plY3RS
ZWZlcmVuY2UgSW5jbHVkZT0iLi5cY29tcGlsZXJccHJlcHJvY2Vzc29yXHByZXByb2Nlc3Nvci52
Y3hwcm9qIj4NCisgICAgICA8UHJvamVjdD57ZmJlMzJkZjMtMGZiMC00ZjJmLWE0MjQtMmMyMWJk
N2JjMzI1fTwvUHJvamVjdD4NCisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPg0KKyAgICA8UHJvamVj
dFJlZmVyZW5jZSBJbmNsdWRlPSIuLlxjb21waWxlclx0cmFuc2xhdG9yX2NvbW1vbi52Y3hwcm9q
Ij4NCisgICAgICA8UHJvamVjdD57NWIzYTZkYjgtMWU3ZS00MGQ3LTkyYjktZGE4YWFlNjE5ZmFk
fTwvUHJvamVjdD4NCisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPg0KKyAgICA8UHJvamVjdFJlZmVy
ZW5jZSBJbmNsdWRlPSIuLlxjb21waWxlclx0cmFuc2xhdG9yX2hsc2wudmN4cHJvaiI+DQorICAg
ICAgPFByb2plY3Q+ezU2MjBmMGU0LTZjNDMtNDliYy1hMTc4LWI4MDRlMWEwYzNhN308L1Byb2pl
Y3Q+DQorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRw
dXRBc3NlbWJseT4NCisgICAgICA8UHJpdmF0ZT50cnVlPC9Qcml2YXRlPg0KKyAgICAgIDxDb3B5
TG9jYWxTYXRlbGxpdGVBc3NlbWJsaWVzPmZhbHNlPC9Db3B5TG9jYWxTYXRlbGxpdGVBc3NlbWJs
aWVzPg0KKyAgICAgIDxMaW5rTGlicmFyeURlcGVuZGVuY2llcz50cnVlPC9MaW5rTGlicmFyeURl
cGVuZGVuY2llcz4NCisgICAgICA8VXNlTGlicmFyeURlcGVuZGVuY3lJbnB1dHM+dHJ1ZTwvVXNl
TGlicmFyeURlcGVuZGVuY3lJbnB1dHM+DQorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4NCisgIDwv
SXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29m
dC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0
cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdM
RVN2Mi52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIudmN4cHJv
ai5maWx0ZXJzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwOSBAQAor77u/PD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIg
eG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAw
MyI+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+
DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJE
NzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7
Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+DQorICAgIDwvRmls
dGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+DQorICAgICAgPFVuaXF1
ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1
ZUlkZW50aWZpZXI+DQorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNk
PC9FeHRlbnNpb25zPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJUaGly
ZCBQYXJ0eSI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2RjMWRhYzQwLTM1NjMtNDFiZS05
ZTJkLWMyNTg4ZDg2NzBmYn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAg
ICA8RmlsdGVyIEluY2x1ZGU9IlRoaXJkIFBhcnR5XE11cm11ckhhc2giPg0KKyAgICAgIDxVbmlx
dWVJZGVudGlmaWVyPntiMDAwNWQyZi05YjRhLTQ2NTktYTI3MC0xMzg4MTExNzRmNzN9PC9Vbmlx
dWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFk
ZXIgRmlsZXNcUmVuZGVyZXIiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns1NjJlNDY5ZC0x
YWJiLTQ0YmMtYjdmYS01NWVlZmJmNzVhY2N9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0Zp
bHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJTaGFkZXJzIj4NCisgICAgICA8VW5pcXVlSWRl
bnRpZmllcj57NmRjMDMwNmYtNjM5Ni00ZTgwLTllZjktMDliNThhYTUzYzRkfTwvVW5pcXVlSWRl
bnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU2hhZGVyc1xD
b21waWxlZCI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezYzMzI3MDViLTE5OTktNDI5Mi1h
MzhiLWRkNDczMjk3MzRhYX08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAg
ICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlc1xSZW5kZXJlciI+DQorICAgICAgPFVuaXF1
ZUlkZW50aWZpZXI+ezkzYTc2OTY0LTc3YTMtNGIyMC1hNmY1LWUxNGU3NjJkNGUxNH08L1VuaXF1
ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRl
ciBGaWxlc1xSZW5kZXJlcjkiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnszODc3ZjM1ZS04
NDVjLTRlOTUtYjlhNS1jN2Q4YjlmMzA3YzV9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0Zp
bHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXNcUmVuZGVyZXIxMSI+DQor
ICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezJkNzBmZDYwLTZkZWEtNDg5Zi1hYzA5LTE2ODkwZDMy
NTY2OX08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIElu
Y2x1ZGU9IlNvdXJjZSBGaWxlc1xSZW5kZXJlcjkiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVy
Pns2MGUxNGYwNC0yY2YyLTRhMDctYjNlZi03YzY4YTgyYmEyZDl9PC9VbmlxdWVJZGVudGlmaWVy
Pg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXNcUmVu
ZGVyZXIxMSI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezcyZGI2MWQzLWUwODEtNGI1OC1i
YzYzLWEwNGE4YTcwNTg1Zn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAg
PC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkJ1
ZmZlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkNvbnRleHQuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25cZGVidWcuY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJGZW5jZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkZsb2F0MTZU
b0Zsb2F0MzIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJGcmFtZWJ1ZmZlci5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkhhbmRsZUFsbG9jYXRvci5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9ImxpYkdMRVN2Mi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNl
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Im1haW4uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQcm9ncmFtLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUHJvZ3JhbUJpbmFyeS5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IlF1ZXJ5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY29t
bW9uXFJlZkNvdW50T2JqZWN0LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUmVuZGVy
YnVmZmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUmVzb3VyY2VNYW5hZ2VyLmNw
cCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBp
bGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2hhZGVyLmNwcCI+DQorICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iVGV4dHVyZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InV0aWxp
dGllcy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3Jh
Z2UuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5k
ZXJlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRoaXJkX3Bh
cnR5XG11cm11cmhhc2hcTXVybXVySGFzaDMuY3BwIj4NCisgICAgICA8RmlsdGVyPlRoaXJkIFBh
cnR5XE11cm11ckhhc2g8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhEYXRhTWFuYWdlci5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleERhdGFNYW5hZ2VyLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2UuY3BwIj4NCisg
ICAgICA8RmlsdGVyPlJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlU1NFMi5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlci5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVW5pZm9ybS5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2UuY3BwIj4NCisgICAgICA8Rmls
dGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdlMTEuY3BwIj4NCisg
ICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xD
b21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEZlbmNlMTEuY3BwIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlMTEuY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVm
ZmVyMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVy
XFF1ZXJ5MTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9G
aWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRl
cmVyXFJlbmRlcmVyMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJl
cjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
InJlbmRlcmVyXHJlbmRlcmVyMTFfdXRpbHMuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBG
aWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclRhcmdldDExLmNwcCI+DQorICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVjdXRhYmxlMTEuY3BwIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjEx
LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0
dXJlU3RvcmFnZTExLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXIx
MTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJy
ZW5kZXJlclxWZXJ0ZXhCdWZmZXIxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
XFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3RvcmFnZTkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2U5LmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlOS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleEJ1ZmZlcjkuY3BwIj4NCisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUXVlcnk5LmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyOS5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxyZW5kZXJlcjlfdXRpbHMu
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVy
VGFyZ2V0OS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmls
dGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJl
clxTaGFkZXJFeGVjdXRhYmxlOS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJl
bmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJyZW5kZXJlclxTd2FwQ2hhaW45LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9InJlbmRlcmVyXFRleHR1cmVTdG9yYWdlOS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXI5LmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEJsaXQuY3BwIj4NCisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5wdXRMYXlvdXRDYWNoZS5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyU3Rh
dGVDYWNoZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVy
ZXJcVmVydGV4RGVjbGFyYXRpb25DYWNoZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJwcmVjb21waWxlZC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdy
b3VwPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkJpbmFyeVN0cmVhbS5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJCdWZmZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQ29u
dGV4dC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJGZW5jZS5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJGcmFtZWJ1ZmZlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlwuLlxpbmNsdWRlXEdMRVMyXGdsMi5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwu
LlxpbmNsdWRlXEdMRVMyXGdsMmV4dC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwu
LlxpbmNsdWRlXEdMRVMyXGdsMnBsYXRmb3JtLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IkhhbmRsZUFsbG9jYXRvci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJtYWluLmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Im1hdGh1dGlsLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IlByb2dyYW0uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUHJvZ3JhbUJpbmFy
eS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJRdWVyeS5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxjb21tb25cUmVmQ291bnRPYmplY3QuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iUmVuZGVyYnVmZmVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlc291
cmNlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlc291cmNlTWFuYWdlci5oIj4NCisg
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTaGFkZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iVGV4dHVyZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJ1dGlsaXRpZXMuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXHZlcnNpb24uaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iYW5nbGV0eXBlcy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx0aGlyZF9wYXJ0eVxtdXJtdXJoYXNoXE11cm11ckhhc2gzLmgiPg0KKyAgICAgIDxGaWx0ZXI+
VGhpcmQgUGFydHlcTXVybXVySGFzaDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJVbmlmb3JtLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2gxMXZzLmgiPg0KKyAgICAgIDxG
aWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXHBhc3N0aHJvdWdo
cHMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29t
cGlsZWRcc3RhbmRhcmR2cy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVy
ZXJcc2hhZGVyc1xjb21waWxlZFxjb21wb25lbnRtYXNrcHMuaCI+DQorICAgICAgPEZpbHRlcj5T
aGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcZmxpcHl2cy5oIj4NCisgICAg
ICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxsdW1pbmFu
Y2Vwcy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xj
b21waWxlZFxwYXNzdGhyb3VnaHJnYmExMXBzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xD
b21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXHBhc3N0aHJvdWdocmdiMTFwcy5oIj4NCisg
ICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNz
dGhyb3VnaGx1bTExcHMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaCI+DQorICAgICAgPEZp
bHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcY2xlYXIxMXZzLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVk
XGNsZWFybXVsdGlwbGUxMXBzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNsZWFyc2luZ2xlMTFwcy5oIj4NCisgICAgICA8RmlsdGVy
PlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXHN5c3RlbS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxjb21tb25cZGVidWcuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVy
ZXJcQnVmZmVyU3RvcmFnZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJl
cjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJy
ZW5kZXJlclxGZW5jZUltcGwuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVy
ZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVuZGVyZXJcZ2VuZXJhdGVtaXAuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVu
ZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcSW1hZ2UuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVy
ZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVuZGVyZXJcSW5kZXhCdWZmZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVu
ZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcSW5kZXhEYXRhTWFuYWdlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeUltcGwuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGUuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU3dhcENoYWluLmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFRleHR1cmVTdG9yYWdlLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlci5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclx2ZXJ0ZXhjb252ZXJz
aW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQor
ICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRl
eERhdGFNYW5hZ2VyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRl
cmVyXEJ1ZmZlclN0b3JhZ2UxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5k
ZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyMTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmls
ZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXIxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclRhcmdldDExLmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTExLmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU3dhcENoYWluMTEu
aCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJl
U3RvcmFnZTExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVy
ZXJcVmVydGV4QnVmZmVyMTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVy
ZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJyZW5kZXJlclxCdWZmZXJTdG9yYWdlOS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
c1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcRmVuY2U5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
XFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxJbWFnZTkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNc
UmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyOS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcUXVlcnk5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlcjkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyOV91dGlscy5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0OS5oIj4NCisgICAgICA8
RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTkuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjku
aCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFRleHR1cmVT
dG9yYWdlOS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
VmVydGV4QnVmZmVyOS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVu
ZGVyZXJcRmVuY2UxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjEx
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJl
bmRlcmVyXEltYWdlMTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIx
MTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJy
ZW5kZXJlclxyZW5kZXJlcjExX3V0aWxzLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
XFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcRmVuY2U5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
XFJlbmRlcmVyXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzXFJlbmRlcmVyXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcQmxpdC5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyQ2FjaGUuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXElucHV0TGF5b3V0Q2FjaGUuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJTdGF0
ZUNhY2hlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
VmVydGV4RGVjbGFyYXRpb25DYWNoZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xS
ZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iY29uc3RhbnRzLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InByZWNvbXBpbGVk
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Tm9uZSBJbmNsdWRl
PSJyZW5kZXJlclxzaGFkZXJzXEJsaXQucHMiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyczwvRmls
dGVyPg0KKyAgICA8L05vbmU+DQorICAgIDxOb25lIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNc
QmxpdC52cyI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzPC9GaWx0ZXI+DQorICAgIDwvTm9uZT4N
CisgICAgPE5vbmUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xnZW5lcmF0ZV9zaGFkZXJzLmJh
dCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzPC9GaWx0ZXI+DQorICAgIDwvTm9uZT4NCisgICAg
PE5vbmUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xQYXNzdGhyb3VnaDExLmhsc2wiPg0KKyAg
ICAgIDxGaWx0ZXI+U2hhZGVyczwvRmlsdGVyPg0KKyAgICA8L05vbmU+DQorICAgIDxOb25lIElu
Y2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcQ2xlYXIxMS5obHNsIj4NCisgICAgICA8RmlsdGVyPlNo
YWRlcnM8L0ZpbHRlcj4NCisgICAgPC9Ob25lPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJsaWJHTEVT
djIuZGVmIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8UmVzb3Vy
Y2VDb21waWxlIEluY2x1ZGU9ImxpYkdMRVN2Mi5yYyIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKzwv
UHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL21haW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL21haW4uY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE1NSBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisvLyBtYWluLmNwcDogRExMIGVudHJ5IHBvaW50IGFuZCBtYW5hZ2VtZW50IG9m
IHRocmVhZC1sb2NhbCBkYXRhLgorCisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKworI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9Db250ZXh0LmgiCisKK3N0YXRpYyBEV09SRCBjdXJyZW50VExTID0g
VExTX09VVF9PRl9JTkRFWEVTOworCitleHRlcm4gIkMiIEJPT0wgV0lOQVBJIERsbE1haW4oSElO
U1RBTkNFIGluc3RhbmNlLCBEV09SRCByZWFzb24sIExQVk9JRCByZXNlcnZlZCkKK3sKKyAgICBz
d2l0Y2ggKHJlYXNvbikKKyAgICB7CisgICAgICBjYXNlIERMTF9QUk9DRVNTX0FUVEFDSDoKKyAg
ICAgICAgeworICAgICAgICAgICAgY3VycmVudFRMUyA9IFRsc0FsbG9jKCk7CisKKyAgICAgICAg
ICAgIGlmIChjdXJyZW50VExTID09IFRMU19PVVRfT0ZfSU5ERVhFUykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgLy8gRmFsbCB0aHJvdWdodCB0byBpbml0aWFsaXplIGluZGV4CisgICAgICBjYXNl
IERMTF9USFJFQURfQVRUQUNIOgorICAgICAgICB7CisgICAgICAgICAgICBnbDo6Q3VycmVudCAq
Y3VycmVudCA9IChnbDo6Q3VycmVudCopTG9jYWxBbGxvYyhMUFRSLCBzaXplb2YoZ2w6OkN1cnJl
bnQpKTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgVGxzU2V0VmFsdWUoY3VycmVudFRMUywgY3VycmVudCk7CisKKyAgICAgICAgICAg
ICAgICBjdXJyZW50LT5jb250ZXh0ID0gTlVMTDsKKyAgICAgICAgICAgICAgICBjdXJyZW50LT5k
aXNwbGF5ID0gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgRExMX1RIUkVBRF9ERVRBQ0g6CisgICAgICAgIHsKKyAgICAgICAgICAgIHZv
aWQgKmN1cnJlbnQgPSBUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKKworICAgICAgICAgICAgaWYg
KGN1cnJlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTG9jYWxGcmVlKChITE9D
QUwpY3VycmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIERMTF9QUk9DRVNTX0RFVEFDSDoKKyAgICAgICAgeworICAgICAgICAgICAgdm9p
ZCAqY3VycmVudCA9IFRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgICAgICAgICBpZiAo
Y3VycmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMb2NhbEZyZWUoKEhMT0NB
TCljdXJyZW50KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgVGxzRnJlZShjdXJyZW50
VExTKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCituYW1lc3BhY2UgZ2wKK3sK
K3ZvaWQgbWFrZUN1cnJlbnQoQ29udGV4dCAqY29udGV4dCwgZWdsOjpEaXNwbGF5ICpkaXNwbGF5
LCBlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCit7CisgICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJy
ZW50KilUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKKworICAgIGN1cnJlbnQtPmNvbnRleHQgPSBj
b250ZXh0OworICAgIGN1cnJlbnQtPmRpc3BsYXkgPSBkaXNwbGF5OworCisgICAgaWYgKGNvbnRl
eHQgJiYgZGlzcGxheSAmJiBzdXJmYWNlKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+bWFrZUN1
cnJlbnQoc3VyZmFjZSk7CisgICAgfQorfQorCitDb250ZXh0ICpnZXRDb250ZXh0KCkKK3sKKyAg
ICBDdXJyZW50ICpjdXJyZW50ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOwor
CisgICAgcmV0dXJuIGN1cnJlbnQtPmNvbnRleHQ7Cit9CisKK0NvbnRleHQgKmdldE5vbkxvc3RD
b250ZXh0KCkKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gZ2V0Q29udGV4dCgpOworICAgIAor
ICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPmlzQ29udGV4dExv
c3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dDsKKyAgICAgICAgfQorICAgIH0KKyAg
ICByZXR1cm4gTlVMTDsKK30KKworZWdsOjpEaXNwbGF5ICpnZXREaXNwbGF5KCkKK3sKKyAgICBD
dXJyZW50ICpjdXJyZW50ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisg
ICAgcmV0dXJuIGN1cnJlbnQtPmRpc3BsYXk7Cit9CisKKy8vIFJlY29yZHMgYW4gZXJyb3IgY29k
ZQordm9pZCBlcnJvcihHTGVudW0gZXJyb3JDb2RlKQoreworICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2xHZXRDdXJyZW50Q29udGV4dCgpOworCisgICAgaWYgKGNvbnRleHQpCisgICAgewor
ICAgICAgICBzd2l0Y2ggKGVycm9yQ29kZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xf
SU5WQUxJRF9FTlVNOgorICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkSW52YWxpZEVudW0oKTsK
KyAgICAgICAgICAgIFRSQUNFKCJcdCEgRXJyb3IgZ2VuZXJhdGVkOiBpbnZhbGlkIGVudW1cbiIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9JTlZBTElEX1ZBTFVFOgor
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkSW52YWxpZFZhbHVlKCk7CisgICAgICAgICAgICBU
UkFDRSgiXHQhIEVycm9yIGdlbmVyYXRlZDogaW52YWxpZCB2YWx1ZVxuIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0lOVkFMSURfT1BFUkFUSU9OOgorICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkSW52YWxpZE9wZXJhdGlvbigpOworICAgICAgICAgICAgVFJBQ0Uo
Ilx0ISBFcnJvciBnZW5lcmF0ZWQ6IGludmFsaWQgb3BlcmF0aW9uXG4iKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfT1VUX09GX01FTU9SWToKKyAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZE91dE9mTWVtb3J5KCk7CisgICAgICAgICAgICBUUkFDRSgiXHQhIEVycm9y
IGdlbmVyYXRlZDogb3V0IG9mIG1lbW9yeVxuIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICBjYXNlIEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OOgorICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkSW52YWxpZEZyYW1lYnVmZmVyT3BlcmF0aW9uKCk7CisgICAgICAgICAg
ICBUUkFDRSgiXHQhIEVycm9yIGdlbmVyYXRlZDogaW52YWxpZCBmcmFtZWJ1ZmZlciBvcGVyYXRp
b25cbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworfQorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL21haW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL21haW4uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBtYWluLmg6IE1hbmFnZW1lbnQgb2Yg
dGhyZWFkLWxvY2FsIGRhdGEuCisKKyNpZm5kZWYgTElCR0xFU1YyX01BSU5fSF8KKyNkZWZpbmUg
TElCR0xFU1YyX01BSU5fSF8KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUg
ImNvbW1vbi9zeXN0ZW0uaCIKKworbmFtZXNwYWNlIGVnbAoreworY2xhc3MgRGlzcGxheTsKK2Ns
YXNzIFN1cmZhY2U7Cit9CisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgQ29udGV4dDsKKyAgICAK
K3N0cnVjdCBDdXJyZW50Cit7CisgICAgQ29udGV4dCAqY29udGV4dDsKKyAgICBlZ2w6OkRpc3Bs
YXkgKmRpc3BsYXk7Cit9OworCit2b2lkIG1ha2VDdXJyZW50KENvbnRleHQgKmNvbnRleHQsIGVn
bDo6RGlzcGxheSAqZGlzcGxheSwgZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKKworQ29udGV4dCAq
Z2V0Q29udGV4dCgpOworQ29udGV4dCAqZ2V0Tm9uTG9zdENvbnRleHQoKTsKK2VnbDo6RGlzcGxh
eSAqZ2V0RGlzcGxheSgpOworCit2b2lkIGVycm9yKEdMZW51bSBlcnJvckNvZGUpOworCit0ZW1w
bGF0ZTxjbGFzcyBUPgorY29uc3QgVCAmZXJyb3IoR0xlbnVtIGVycm9yQ29kZSwgY29uc3QgVCAm
cmV0dXJuVmFsdWUpCit7CisgICAgZXJyb3IoZXJyb3JDb2RlKTsKKworICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKK30KKworfQorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOworfQor
CitleHRlcm4gIkMiCit7CisvLyBFeHBvcnRlZCBmdW5jdGlvbnMgZm9yIHVzZSBieSBFR0wKK2ds
OjpDb250ZXh0ICpnbENyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4
dCwgcng6OlJlbmRlcmVyICpyZW5kZXJlciwgYm9vbCBub3RpZnlSZXNldHMsIGJvb2wgcm9idXN0
QWNjZXNzKTsKK3ZvaWQgZ2xEZXN0cm95Q29udGV4dChnbDo6Q29udGV4dCAqY29udGV4dCk7Cit2
b2lkIGdsTWFrZUN1cnJlbnQoZ2w6OkNvbnRleHQgKmNvbnRleHQsIGVnbDo6RGlzcGxheSAqZGlz
cGxheSwgZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKK2dsOjpDb250ZXh0ICpnbEdldEN1cnJlbnRD
b250ZXh0KCk7CityeDo6UmVuZGVyZXIgKmdsQ3JlYXRlUmVuZGVyZXIoZWdsOjpEaXNwbGF5ICpk
aXNwbGF5LCBIREMgaERjLCBFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5SWQpOwordm9pZCBn
bERlc3Ryb3lSZW5kZXJlcihyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKTsKKworX19lZ2xNdXN0Q2Fz
dFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSBfX3N0ZGNhbGwgZ2xHZXRQcm9jQWRkcmVzcyhj
b25zdCBjaGFyICpwcm9jbmFtZSk7Citib29sIF9fc3RkY2FsbCBnbEJpbmRUZXhJbWFnZShlZ2w6
OlN1cmZhY2UgKnN1cmZhY2UpOworfQorCisjZW5kaWYgICAvLyBMSUJHTEVTVjJfTUFJTl9IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9tYXRodXRpbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWF0aHV0
aWwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvbWF0aHV0aWwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjEgQEAKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIG1hdGh1dGlsLmg6IE1hdGggYW5kIGJpdCBtYW5pcHVsYXRpb24gZnVuY3Rp
b25zLgorCisjaWZuZGVmIExJQkdMRVNWMl9NQVRIVVRJTF9IXworI2RlZmluZSBMSUJHTEVTVjJf
TUFUSFVUSUxfSF8KKworI2luY2x1ZGUgPGludHJpbi5oPgorCisjaW5jbHVkZSAiY29tbW9uL3N5
c3RlbS5oIgorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgZ2wKK3sKK3N0
cnVjdCBWZWN0b3I0Cit7CisgICAgVmVjdG9yNCgpIHt9CisgICAgVmVjdG9yNChmbG9hdCB4LCBm
bG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KSA6IHgoeCksIHkoeSksIHooeiksIHcodykge30KKwor
ICAgIGZsb2F0IHg7CisgICAgZmxvYXQgeTsKKyAgICBmbG9hdCB6OworICAgIGZsb2F0IHc7Cit9
OworCitpbmxpbmUgYm9vbCBpc1BvdzIoaW50IHgpCit7CisgICAgcmV0dXJuICh4ICYgKHggLSAx
KSkgPT0gMCAmJiAoeCAhPSAwKTsKK30KKworaW5saW5lIGludCBsb2cyKGludCB4KQoreworICAg
IGludCByID0gMDsKKyAgICB3aGlsZSAoKHggPj4gcikgPiAxKSByKys7CisgICAgcmV0dXJuIHI7
Cit9CisKK2lubGluZSB1bnNpZ25lZCBpbnQgY2VpbFBvdzIodW5zaWduZWQgaW50IHgpCit7Cisg
ICAgaWYgKHggIT0gMCkgeC0tOworICAgIHggfD0geCA+PiAxOworICAgIHggfD0geCA+PiAyOwor
ICAgIHggfD0geCA+PiA0OworICAgIHggfD0geCA+PiA4OworICAgIHggfD0geCA+PiAxNjsKKyAg
ICB4Kys7CisKKyAgICByZXR1cm4geDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgTUlOLCB0eXBlbmFtZSBNQVg+CitpbmxpbmUgVCBjbGFtcChUIHgsIE1JTiBtaW4sIE1BWCBt
YXgpCit7CisgICAgLy8gU2luY2UgTmFOcyBmYWlsIGFsbCBjb21wYXJpc29uIHRlc3RzLCBhIE5h
TiB2YWx1ZSB3aWxsIGRlZmF1bHQgdG8gbWluCisgICAgcmV0dXJuIHggPiBtaW4gPyAoeCA+IG1h
eCA/IG1heCA6IHgpIDogbWluOworfQorCitpbmxpbmUgZmxvYXQgY2xhbXAwMShmbG9hdCB4KQor
eworICAgIHJldHVybiBjbGFtcCh4LCAwLjBmLCAxLjBmKTsKK30KKwordGVtcGxhdGU8Y29uc3Qg
aW50IG4+CitpbmxpbmUgdW5zaWduZWQgaW50IHVub3JtKGZsb2F0IHgpCit7CisgICAgY29uc3Qg
dW5zaWduZWQgaW50IG1heCA9IDB4RkZGRkZGRkYgPj4gKDMyIC0gbik7CisKKyAgICBpZiAoeCA+
IDEpCisgICAgeworICAgICAgICByZXR1cm4gbWF4OworICAgIH0KKyAgICBlbHNlIGlmICh4IDwg
MCkKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICByZXR1cm4gKHVuc2lnbmVkIGludCkobWF4ICogeCArIDAuNWYpOworICAgIH0KK30KKwor
aW5saW5lIGJvb2wgc3VwcG9ydHNTU0UyKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBjaGVja2VkID0g
ZmFsc2U7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHMgPSBmYWxzZTsKKworICAgIGlmIChjaGVj
a2VkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN1cHBvcnRzOworICAgIH0KKworICAgIGludCBp
bmZvWzRdOworICAgIF9fY3B1aWQoaW5mbywgMCk7CisgICAgCisgICAgaWYgKGluZm9bMF0gPj0g
MSkKKyAgICB7CisgICAgICAgIF9fY3B1aWQoaW5mbywgMSk7CisKKyAgICAgICAgc3VwcG9ydHMg
PSAoaW5mb1szXSA+PiAyNikgJiAxOworICAgIH0KKworICAgIGNoZWNrZWQgPSB0cnVlOworCisg
ICAgcmV0dXJuIHN1cHBvcnRzOworfQorCitpbmxpbmUgdW5zaWduZWQgc2hvcnQgZmxvYXQzMlRv
RmxvYXQxNihmbG9hdCBmcDMyKQoreworICAgIHVuc2lnbmVkIGludCBmcDMyaSA9ICh1bnNpZ25l
ZCBpbnQmKWZwMzI7CisgICAgdW5zaWduZWQgaW50IHNpZ24gPSAoZnAzMmkgJiAweDgwMDAwMDAw
KSA+PiAxNjsKKyAgICB1bnNpZ25lZCBpbnQgYWJzID0gZnAzMmkgJiAweDdGRkZGRkZGOworCisg
ICAgaWYoYWJzID4gMHg0N0ZGRUZGRikgICAvLyBJbmZpbml0eQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHNpZ24gfCAweDdGRkY7CisgICAgfQorICAgIGVsc2UgaWYoYWJzIDwgMHgzODgwMDAwMCkg
ICAvLyBEZW5vcm1hbAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IG1hbnRpc3NhID0gKGFi
cyAmIDB4MDA3RkZGRkYpIHwgMHgwMDgwMDAwMDsgICAKKyAgICAgICAgaW50IGUgPSAxMTMgLSAo
YWJzID4+IDIzKTsKKworICAgICAgICBpZihlIDwgMjQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGFicyA9IG1hbnRpc3NhID4+IGU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7
CisgICAgICAgICAgICBhYnMgPSAwOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHNpZ24g
fCAoYWJzICsgMHgwMDAwMEZGRiArICgoYWJzID4+IDEzKSAmIDEpKSA+PiAxMzsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNpZ24gfCAoYWJzICsgMHhDODAwMDAwMCAr
IDB4MDAwMDBGRkYgKyAoKGFicyA+PiAxMykgJiAxKSkgPj4gMTM7CisgICAgfQorfQorCitmbG9h
dCBmbG9hdDE2VG9GbG9hdDMyKHVuc2lnbmVkIHNob3J0IGgpOworCit9CisKK25hbWVzcGFjZSBy
eAoreworCitzdHJ1Y3QgUmFuZ2UKK3sKKyAgICBSYW5nZSgpIHt9CisgICAgUmFuZ2UoaW50IGxv
LCBpbnQgaGkpIDogc3RhcnQobG8pLCBlbmQoaGkpIHsgQVNTRVJUKGxvIDw9IGhpKTsgfQorCisg
ICAgaW50IHN0YXJ0OworICAgIGludCBlbmQ7Cit9OworCit9CisKKyNlbmRpZiAgIC8vIExJQkdM
RVNWMl9NQVRIVVRJTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9wcmVjb21waWxlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9wcmVjb21waWxlZC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gcHJlY29tcGlsZWQuY3BwOiBQ
cmVjb21waWxlZCBoZWFkZXIgc291cmNlIGZpbGUgZm9yIGxpYkdMRVN2Mi4KKworI2luY2x1ZGUg
InByZWNvbXBpbGVkLmgiCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3ByZWNvbXBpbGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9wcmVjb21waWxlZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9wcmVjb21waWxlZC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQyIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gcHJlY29tcGlsZWQuaDogUHJlY29tcGls
ZWQgaGVhZGVyIGZpbGUgZm9yIGxpYkdMRVN2Mi4KKworI2RlZmluZSBHTF9BUElDQUxMCisjaW5j
bHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisKKyNkZWZpbmUg
RUdMQVBJCisjaW5jbHVkZSA8RUdML2VnbC5oPgorCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5j
bHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxmbG9hdC5oPgorI2luY2x1ZGUgPGludHJpbi5oPgor
I2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIu
aD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8
YWxnb3JpdGhtPiAvLyBmb3Igc3RkOjptaW4gYW5kIHN0ZDo6bWF4CisjaW5jbHVkZSA8bGltaXRz
PgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzZXQ+CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyNpbmNsdWRlIDx2ZWN0
b3I+CisKKyNpbmNsdWRlIDxkM2Q5Lmg+CisjaW5jbHVkZSA8RDNEMTEuaD4KKyNpbmNsdWRlIDxk
eGdpLmg+CisjaW5jbHVkZSA8RDNEY29tcGlsZXIuaD4KKworI2lmZGVmIF9NU0NfVkVSCisjaW5j
bHVkZSA8aGFzaF9tYXA+CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3Jlc291cmNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jlc291cmNlLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTQgQEAKKy8ve3tOT19ERVBFTkRFTkNJRVN9fQorLy8gTWljcm9zb2Z0IFZpc3VhbCBD
KysgZ2VuZXJhdGVkIGluY2x1ZGUgZmlsZS4KKy8vIFVzZWQgYnkgbGliR0xFU3YyLnJjCisKKy8v
IE5leHQgZGVmYXVsdCB2YWx1ZXMgZm9yIG5ldyBvYmplY3RzCisvLyAKKyNpZmRlZiBBUFNUVURJ
T19JTlZPS0VECisjaWZuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKKyNkZWZpbmUgX0FQ
U19ORVhUX1JFU09VUkNFX1ZBTFVFICAgICAgICAxMDEKKyNkZWZpbmUgX0FQU19ORVhUX0NPTU1B
TkRfVkFMVUUgICAgICAgICA0MDAwMQorI2RlZmluZSBfQVBTX05FWFRfQ09OVFJPTF9WQUxVRSAg
ICAgICAgIDEwMDEKKyNkZWZpbmUgX0FQU19ORVhUX1NZTUVEX1ZBTFVFICAgICAgICAgICAxMDEK
KyNlbmRpZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3V0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDc0NiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyB1dGlsaXRpZXMuY3BwOiBDb252ZXJzaW9uIGZ1bmN0aW9ucyBhbmQgb3RoZXIgdXRp
bGl0eSByb3V0aW5lcy4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvbWF0aHV0aWwuaCIKKworbmFtZXNwYWNlIGdsCit7CisKK2ludCBVbmlm
b3JtQ29tcG9uZW50Q291bnQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAg
IHsKKyAgICAgIGNhc2UgR0xfQk9PTDoKKyAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICBjYXNl
IEdMX0lOVDoKKyAgICAgIGNhc2UgR0xfU0FNUExFUl8yRDoKKyAgICAgIGNhc2UgR0xfU0FNUExF
Ul9DVUJFOgorICAgICAgICAgIHJldHVybiAxOworICAgICAgY2FzZSBHTF9CT09MX1ZFQzI6Cisg
ICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6CisgICAgICBjYXNlIEdMX0lOVF9WRUMyOgorICAgICAg
ICAgIHJldHVybiAyOworICAgICAgY2FzZSBHTF9JTlRfVkVDMzoKKyAgICAgIGNhc2UgR0xfRkxP
QVRfVkVDMzoKKyAgICAgIGNhc2UgR0xfQk9PTF9WRUMzOgorICAgICAgICAgIHJldHVybiAzOwor
ICAgICAgY2FzZSBHTF9CT09MX1ZFQzQ6CisgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6CisgICAg
ICBjYXNlIEdMX0lOVF9WRUM0OgorICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOgorICAgICAgICAg
IHJldHVybiA0OworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOgorICAgICAgICAgIHJldHVybiA5
OworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OgorICAgICAgICAgIHJldHVybiAxNjsKKyAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
MDsKK30KKworR0xlbnVtIFVuaWZvcm1Db21wb25lbnRUeXBlKEdMZW51bSB0eXBlKQoreworICAg
IHN3aXRjaCh0eXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfQk9PTDoKKyAgICAgIGNhc2UgR0xf
Qk9PTF9WRUMyOgorICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6CisgICAgICBjYXNlIEdMX0JPT0xf
VkVDNDoKKyAgICAgICAgICByZXR1cm4gR0xfQk9PTDsKKyAgICAgIGNhc2UgR0xfRkxPQVQ6Cisg
ICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6CisgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6CisgICAg
ICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6CisgICAgICBj
YXNlIEdMX0ZMT0FUX01BVDM6CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgICAg
cmV0dXJuIEdMX0ZMT0FUOworICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICBjYXNlIEdMX1NBTVBM
RVJfMkQ6CisgICAgICBjYXNlIEdMX1NBTVBMRVJfQ1VCRToKKyAgICAgIGNhc2UgR0xfSU5UX1ZF
QzI6CisgICAgICBjYXNlIEdMX0lOVF9WRUMzOgorICAgICAgY2FzZSBHTF9JTlRfVkVDNDoKKyAg
ICAgICAgICByZXR1cm4gR0xfSU5UOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBHTF9OT05FOworfQorCitzaXplX3QgVW5pZm9y
bUNvbXBvbmVudFNpemUoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoKHR5cGUpCisgICAgewor
ICAgICAgY2FzZSBHTF9CT09MOiAgcmV0dXJuIHNpemVvZihHTGludCk7CisgICAgICBjYXNlIEdM
X0ZMT0FUOiByZXR1cm4gc2l6ZW9mKEdMZmxvYXQpOworICAgICAgY2FzZSBHTF9JTlQ6ICAgcmV0
dXJuIHNpemVvZihHTGludCk7CisgICAgICBkZWZhdWx0OiAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzaXplX3QgVW5pZm9ybUludGVybmFsU2l6ZShH
TGVudW0gdHlwZSkKK3sKKyAgICAvLyBFeHBhbmRlZCB0byA0LWVsZW1lbnQgdmVjdG9ycworICAg
IHJldHVybiBVbmlmb3JtQ29tcG9uZW50U2l6ZShVbmlmb3JtQ29tcG9uZW50VHlwZSh0eXBlKSkg
KiBWYXJpYWJsZVJvd0NvdW50KHR5cGUpICogNDsKK30KKworc2l6ZV90IFVuaWZvcm1FeHRlcm5h
bFNpemUoR0xlbnVtIHR5cGUpCit7CisgICAgcmV0dXJuIFVuaWZvcm1Db21wb25lbnRTaXplKFVu
aWZvcm1Db21wb25lbnRUeXBlKHR5cGUpKSAqIFVuaWZvcm1Db21wb25lbnRDb3VudCh0eXBlKTsK
K30KKworaW50IFZhcmlhYmxlUm93Q291bnQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0
eXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfTk9ORToKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
ICBjYXNlIEdMX0JPT0w6CisgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgY2FzZSBHTF9JTlQ6
CisgICAgICBjYXNlIEdMX0JPT0xfVkVDMjoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKKyAg
ICAgIGNhc2UgR0xfSU5UX1ZFQzI6CisgICAgICBjYXNlIEdMX0lOVF9WRUMzOgorICAgICAgY2Fz
ZSBHTF9GTE9BVF9WRUMzOgorICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6CisgICAgICBjYXNlIEdM
X0JPT0xfVkVDNDoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKKyAgICAgIGNhc2UgR0xfSU5U
X1ZFQzQ6CisgICAgICBjYXNlIEdMX1NBTVBMRVJfMkQ6CisgICAgICBjYXNlIEdMX1NBTVBMRVJf
Q1VCRToKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6CisgICAg
ICAgIHJldHVybiAyOworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOgorICAgICAgICByZXR1cm4g
MzsKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNDoKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgICBk
ZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiAwOwor
fQorCitpbnQgVmFyaWFibGVDb2x1bW5Db3VudChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgICByZXR1cm4gMDsKKyAg
ICAgIGNhc2UgR0xfQk9PTDoKKyAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICBjYXNlIEdMX0lO
VDoKKyAgICAgIGNhc2UgR0xfU0FNUExFUl8yRDoKKyAgICAgIGNhc2UgR0xfU0FNUExFUl9DVUJF
OgorICAgICAgICByZXR1cm4gMTsKKyAgICAgIGNhc2UgR0xfQk9PTF9WRUMyOgorICAgICAgY2Fz
ZSBHTF9GTE9BVF9WRUMyOgorICAgICAgY2FzZSBHTF9JTlRfVkVDMjoKKyAgICAgIGNhc2UgR0xf
RkxPQVRfTUFUMjoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX0lOVF9WRUMzOgor
ICAgICAgY2FzZSBHTF9GTE9BVF9WRUMzOgorICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6CisgICAg
ICBjYXNlIEdMX0ZMT0FUX01BVDM6CisgICAgICAgIHJldHVybiAzOworICAgICAgY2FzZSBHTF9C
T09MX1ZFQzQ6CisgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6CisgICAgICBjYXNlIEdMX0lOVF9W
RUM0OgorICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OgorICAgICAgICByZXR1cm4gNDsKKyAgICAg
IGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7
Cit9CisKK2ludCBBbGxvY2F0ZUZpcnN0RnJlZUJpdHModW5zaWduZWQgaW50ICpiaXRzLCB1bnNp
Z25lZCBpbnQgYWxsb2NhdGlvblNpemUsIHVuc2lnbmVkIGludCBiaXRzU2l6ZSkKK3sKKyAgICBB
U1NFUlQoYWxsb2NhdGlvblNpemUgPD0gYml0c1NpemUpOworCisgICAgdW5zaWduZWQgaW50IG1h
c2sgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpID4+IChzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46OmRpZ2l0cyAtIGFsbG9jYXRpb25TaXplKTsKKwor
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgYml0c1NpemUgLSBhbGxvY2F0aW9uU2l6
ZSArIDE7IGkrKykKKyAgICB7CisgICAgICAgIGlmICgoKmJpdHMgJiBtYXNrKSA9PSAwKQorICAg
ICAgICB7CisgICAgICAgICAgICAqYml0cyB8PSBtYXNrOworICAgICAgICAgICAgcmV0dXJuIGk7
CisgICAgICAgIH0KKworICAgICAgICBtYXNrIDw8PSAxOworICAgIH0KKworICAgIHJldHVybiAt
MTsKK30KKworR0xzaXplaSBDb21wdXRlUGl0Y2goR0xzaXplaSB3aWR0aCwgR0xpbnQgaW50ZXJu
YWxmb3JtYXQsIEdMaW50IGFsaWdubWVudCkKK3sKKyAgICBBU1NFUlQoYWxpZ25tZW50ID4gMCAm
JiBpc1BvdzIoYWxpZ25tZW50KSk7CisKKyAgICBHTHNpemVpIHJhd1BpdGNoID0gQ29tcHV0ZVBp
eGVsU2l6ZShpbnRlcm5hbGZvcm1hdCkgKiB3aWR0aDsKKyAgICByZXR1cm4gKHJhd1BpdGNoICsg
YWxpZ25tZW50IC0gMSkgJiB+KGFsaWdubWVudCAtIDEpOworfQorCitHTHNpemVpIENvbXB1dGVD
b21wcmVzc2VkUGl0Y2goR0xzaXplaSB3aWR0aCwgR0xlbnVtIGludGVybmFsZm9ybWF0KQorewor
ICAgIHJldHVybiBDb21wdXRlQ29tcHJlc3NlZFNpemUod2lkdGgsIDEsIGludGVybmFsZm9ybWF0
KTsKK30KKworR0xzaXplaSBDb21wdXRlQ29tcHJlc3NlZFNpemUoR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGludGVy
bmFsZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQx
X0VYVDoKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAg
ICAgIHJldHVybiA4ICogKCh3aWR0aCArIDMpIC8gNCkgKiAoKGhlaWdodCArIDMpIC8gNCk7Cisg
ICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6CisgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgIHJldHVybiAxNiAq
ICgod2lkdGggKyAzKSAvIDQpICogKChoZWlnaHQgKyAzKSAvIDQpOworICAgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitib29sIElzQ29tcHJlc3NlZChHTGVudW0g
Zm9ybWF0KQoreworICAgIGlmKGZvcm1hdCA9PSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUIHx8CisgICAgICAgZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
IHx8CisgICAgICAgZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUg
fHwKKyAgICAgICBmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIElzRGVwdGhUZXh0dXJlKEdMZW51
bSBmb3JtYXQpCit7CisgICAgaWYgKGZvcm1hdCA9PSBHTF9ERVBUSF9DT01QT05FTlQgfHwKKyAg
ICAgICAgZm9ybWF0ID09IEdMX0RFUFRIX1NURU5DSUxfT0VTIHx8CisgICAgICAgIGZvcm1hdCA9
PSBHTF9ERVBUSF9DT01QT05FTlQxNiB8fAorICAgICAgICBmb3JtYXQgPT0gR0xfREVQVEhfQ09N
UE9ORU5UMzJfT0VTIHx8CisgICAgICAgIGZvcm1hdCA9PSBHTF9ERVBUSDI0X1NURU5DSUw4X09F
UykKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBJc1N0ZW5jaWxUZXh0dXJlKEdMZW51bSBmb3JtYXQpCit7CisgICAgaWYg
KGZvcm1hdCA9PSBHTF9ERVBUSF9TVEVOQ0lMX09FUyB8fAorICAgICAgICBmb3JtYXQgPT0gR0xf
REVQVEgyNF9TVEVOQ0lMOF9PRVMpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWFrZVZhbGlkU2l6ZShib29sIGlzSW1h
Z2UsIGJvb2wgaXNDb21wcmVzc2VkLCBHTHNpemVpICpyZXF1ZXN0V2lkdGgsIEdMc2l6ZWkgKnJl
cXVlc3RIZWlnaHQsIGludCAqbGV2ZWxPZmZzZXQpCit7CisgICAgaW50IHVwc2FtcGxlQ291bnQg
PSAwOworCisgICAgaWYgKGlzQ29tcHJlc3NlZCkKKyAgICB7CisgICAgICAgIC8vIERvbid0IGV4
cGFuZCB0aGUgc2l6ZSBvZiBmdWxsIHRleHR1cmVzIHRoYXQgYXJlIGF0IGxlYXN0IDR4NAorICAg
ICAgICAvLyBhbHJlYWR5LgorICAgICAgICBpZiAoaXNJbWFnZSB8fCAqcmVxdWVzdFdpZHRoIDwg
NCB8fCAqcmVxdWVzdEhlaWdodCA8IDQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdoaWxlICgq
cmVxdWVzdFdpZHRoICUgNCAhPSAwIHx8ICpyZXF1ZXN0SGVpZ2h0ICUgNCAhPSAwKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICpyZXF1ZXN0V2lkdGggPDw9IDE7CisgICAgICAgICAg
ICAgICAgKnJlcXVlc3RIZWlnaHQgPDw9IDE7CisgICAgICAgICAgICAgICAgdXBzYW1wbGVDb3Vu
dCsrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgICpsZXZlbE9mZnNldCA9
IHVwc2FtcGxlQ291bnQ7Cit9CisKKy8vIFJldHVybnMgdGhlIHNpemUsIGluIGJ5dGVzLCBvZiBh
IHNpbmdsZSB0ZXhlbCBpbiBhbiBJbWFnZQoraW50IENvbXB1dGVQaXhlbFNpemUoR0xpbnQgaW50
ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICB7CisgICAg
ICBjYXNlIEdMX0FMUEhBOF9FWFQ6ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9m
KHVuc2lnbmVkIGNoYXIpOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0VYVDogICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNpemVvZih1bnNpZ25lZCBjaGFyKTsKKyAgICAgIGNhc2UgR0xfQUxQ
SEEzMkZfRVhUOiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2YoZmxvYXQpOworICAg
ICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOiAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVv
ZihmbG9hdCk7CisgICAgICBjYXNlIEdMX0FMUEhBMTZGX0VYVDogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KTsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNF
MTZGX0VYVDogICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgc2hvcnQpOwor
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQ6ICAgICAgICAgICAgcmV0dXJuIHNp
emVvZih1bnNpZ25lZCBjaGFyKSAqIDI7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMy
Rl9FWFQ6ICAgICAgICAgICByZXR1cm4gc2l6ZW9mKGZsb2F0KSAqIDI7CisgICAgICBjYXNlIEdM
X0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQ6ICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVk
IHNob3J0KSAqIDI7CisgICAgICBjYXNlIEdMX1JHQjhfT0VTOiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogMzsKKyAgICAgIGNhc2UgR0xfUkdC
NTY1OiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgc2hv
cnQpOworICAgICAgY2FzZSBHTF9SR0IzMkZfRVhUOiAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHNpemVvZihmbG9hdCkgKiAzOworICAgICAgY2FzZSBHTF9SR0IxNkZfRVhUOiAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1bnNpZ25lZCBzaG9ydCkgKiAzOworICAgICAg
Y2FzZSBHTF9SR0JBOF9PRVM6ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1
bnNpZ25lZCBjaGFyKSAqIDQ7CisgICAgICBjYXNlIEdMX1JHQkE0OiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KTsKKyAgICAgIGNhc2UgR0xf
UkdCNV9BMTogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQg
c2hvcnQpOworICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDogICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHNpemVvZihmbG9hdCkgKiA0OworICAgICAgY2FzZSBHTF9SR0JBMTZGX0VYVDogICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1bnNpZ25lZCBzaG9ydCkgKiA0OworICAg
ICAgY2FzZSBHTF9CR1JBOF9FWFQ6ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVv
Zih1bnNpZ25lZCBjaGFyKSAqIDQ7CisgICAgICBjYXNlIEdMX0JHUkE0X0FOR0xFWDogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KTsKKyAgICAgIGNhc2Ug
R0xfQkdSNV9BMV9BTkdMRVg6ICAgICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWdu
ZWQgc2hvcnQpOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gMDsKK30KKworYm9vbCBJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0KEdMZW51bSB0YXJnZXQp
Cit7CisgICAgcmV0dXJuICh0YXJnZXQgPj0gR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Y
ICYmIHRhcmdldCA8PSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1opOworfQorCitib29s
IElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KEdMZW51bSB0YXJnZXQpCit7CisgICAgcmV0dXJuIHRh
cmdldCA9PSBHTF9URVhUVVJFXzJEIHx8IElzQ3ViZW1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KTsK
K30KKworR0xpbnQgQ29udmVydFNpemVkSW50ZXJuYWxGb3JtYXQoR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9B
TFBIQToKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9CWVRFOiAgICByZXR1cm4gR0xfQUxQSEE4X0VYVDsKKyAgICAgICAgICBjYXNl
IEdMX0ZMT0FUOiAgICAgICAgICAgIHJldHVybiBHTF9BTFBIQTMyRl9FWFQ7CisgICAgICAgICAg
Y2FzZSBHTF9IQUxGX0ZMT0FUX09FUzogICByZXR1cm4gR0xfQUxQSEExNkZfRVhUOworICAgICAg
ICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6CisgICAgICAgIHN3aXRj
aCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURTogICAg
cmV0dXJuIEdMX0xVTUlOQU5DRThfRVhUOworICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAg
ICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRTMyRl9FWFQ7CisgICAgICAgICAgY2FzZSBHTF9IQUxG
X0ZMT0FUX09FUzogICByZXR1cm4gR0xfTFVNSU5BTkNFMTZGX0VYVDsKKyAgICAgICAgICBkZWZh
dWx0OiAgICAgICAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICBzd2l0Y2gg
KHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6ICAgIHJl
dHVybiBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQ7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVDog
ICAgICAgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVDsKKyAgICAgICAgICBj
YXNlIEdMX0hBTEZfRkxPQVRfT0VTOiAgIHJldHVybiBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhU
OworICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgIHN3
aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURTog
ICAgICAgICAgICByZXR1cm4gR0xfUkdCOF9PRVM7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9TSE9SVF81XzZfNTogICAgIHJldHVybiBHTF9SR0I1NjU7CisgICAgICAgICAgY2FzZSBHTF9G
TE9BVDogICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0IzMkZfRVhUOworICAgICAgICAg
IGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6ICAgICAgICAgICByZXR1cm4gR0xfUkdCMTZGX0VYVDsK
KyAgICAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0JBOgorICAg
ICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVE
X0JZVEU6ICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkE4X09FUzsKKyAgICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX1NIT1JUXzRfNF80XzQ6ICAgcmV0dXJuIEdMX1JHQkE0OworICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMTogICByZXR1cm4gR0xfUkdCNV9BMTsKKyAgICAg
ICAgICBjYXNlIEdMX0ZMT0FUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkEzMkZf
RVhUOworICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6ICAgICAgICAgICByZXR1cm4g
R0xfUkdCQTE2Rl9FWFQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OiAg
ICAgICAgICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgc3dpdGNoICh0eXBl
KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX0JHUkE4X0VYVDsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVE
X1NIT1JUXzRfNF80XzRfUkVWX0VYVDogICByZXR1cm4gR0xfQkdSQTRfQU5HTEVYOworICAgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhUOiAgIHJldHVybiBHTF9C
R1I1X0ExX0FOR0xFWDsKKyAgICAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQ1X0FOR0xFOgorICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgY2FzZSBHTF9ERVBU
SF9DT01QT05FTlQ6CisgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6ICAgICAgICAgICByZXR1cm4gR0xfREVQVEhfQ09NUE9O
RU5UMTY7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6ICAgICAgICAgICAgIHJldHVy
biBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVM7CisgICAgICAgICAgZGVmYXVsdDogICAgICAgICAg
ICAgICAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9PRVM6CisgICAgICAgIHN3aXRjaCAodHlw
ZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzI0XzhfT0VTOiAg
ICByZXR1cm4gR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM7CisgICAgICAgICAgZGVmYXVsdDogICAg
ICAgICAgICAgICAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gR0xfTk9ORTsKK30KKworR0xlbnVtIEV4dHJhY3RGb3JtYXQoR0xlbnVt
IGludGVybmFsZm9ybWF0KQoreworICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAgewor
ICAgICAgY2FzZSBHTF9SR0I1NjU6ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xf
UkdCOworICAgICAgY2FzZSBHTF9SR0JBNDogICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR0xfUkdCQTsKKyAgICAgIGNhc2UgR0xfUkdCNV9BMTogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdMX1JHQkE7CisgICAgICBjYXNlIEdMX1JHQjhfT0VTOiAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHTF9SR0I7CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzogICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0JBOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4
X0FMUEhBOF9FWFQ6ICAgICAgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFX0FMUEhBOworICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0U4X0VYVDogICAgICAgICAgICAgICAgICByZXR1cm4gR0xfTFVNSU5B
TkNFOworICAgICAgY2FzZSBHTF9BTFBIQThfRVhUOiAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR0xfQUxQSEE7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6
ICAgIHJldHVybiBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOworICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDogICByZXR1cm4gR0xfQ09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQ7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDNfQU5HTEU6IHJldHVybiBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOworICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOiByZXR1cm4gR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRTsKKyAgICAgIGNhc2UgR0xfUkdCQTMyRl9FWFQ6
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkE7CisgICAgICBjYXNlIEdMX1JHQjMy
Rl9FWFQ6ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0I7CisgICAgICBjYXNlIEdM
X0FMUEhBMzJGX0VYVDogICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9BTFBIQTsKKyAgICAg
IGNhc2UgR0xfTFVNSU5BTkNFMzJGX0VYVDogICAgICAgICAgICAgICAgcmV0dXJuIEdMX0xVTUlO
QU5DRTsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVDogICAgICAgICAgcmV0
dXJuIEdMX0xVTUlOQU5DRV9BTFBIQTsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6ICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkE7CisgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0I7CisgICAgICBjYXNlIEdMX0FMUEhB
MTZGX0VYVDogICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9BTFBIQTsKKyAgICAgIGNhc2Ug
R0xfTFVNSU5BTkNFMTZGX0VYVDogICAgICAgICAgICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRTsK
KyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDogICAgICAgICAgcmV0dXJuIEdM
X0xVTUlOQU5DRV9BTFBIQTsKKyAgICAgIGNhc2UgR0xfQkdSQThfRVhUOiAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX0JHUkFfRVhUOworICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05F
TlQxNjogICAgICAgICAgICAgICByZXR1cm4gR0xfREVQVEhfQ09NUE9ORU5UOworICAgICAgY2Fz
ZSBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVM6ICAgICAgICAgICByZXR1cm4gR0xfREVQVEhfQ09N
UE9ORU5UOworICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzogICAgICAgICAgICBy
ZXR1cm4gR0xfREVQVEhfU1RFTkNJTF9PRVM7CisgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9OT05FOyAgIC8vIFVuc3VwcG9ydGVkCisgICAg
fQorfQorCitHTGVudW0gRXh0cmFjdFR5cGUoR0xlbnVtIGludGVybmFsZm9ybWF0KQoreworICAg
IHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9SR0I1NjU6ICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfU0hPUlRfNV82XzU7Cisg
ICAgICBjYXNlIEdMX1JHQkE0OiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9V
TlNJR05FRF9TSE9SVF80XzRfNF80OworICAgICAgY2FzZSBHTF9SR0I1X0ExOiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMTsKKyAgICAgIGNh
c2UgR0xfUkdCOF9PRVM6ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVE
X0JZVEU7CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzogICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBHTF9VTlNJR05FRF9CWVRFOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9F
WFQ6ICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfQllURTsKKyAgICAgIGNhc2UgR0xfTFVN
SU5BTkNFOF9FWFQ6ICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0JZVEU7Cisg
ICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9V
TlNJR05FRF9CWVRFOworICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhU
OiAgICByZXR1cm4gR0xfVU5TSUdORURfQllURTsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQ6ICAgcmV0dXJuIEdMX1VOU0lHTkVEX0JZVEU7CisgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6IHJldHVybiBHTF9VTlNJR05FRF9C
WVRFOworICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOiByZXR1
cm4gR0xfVU5TSUdORURfQllURTsKKyAgICAgIGNhc2UgR0xfUkdCQTMyRl9FWFQ6ICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOworICAgICAgY2FzZSBHTF9SR0IzMkZfRVhUOiAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRkxPQVQ7CisgICAgICBjYXNlIEdMX0FMUEhB
MzJGX0VYVDogICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9GTE9BVDsKKyAgICAgIGNhc2Ug
R0xfTFVNSU5BTkNFMzJGX0VYVDogICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOworICAg
ICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUOiAgICAgICAgICByZXR1cm4gR0xfRkxP
QVQ7CisgICAgICBjYXNlIEdMX1JHQkExNkZfRVhUOiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBHTF9IQUxGX0ZMT0FUX09FUzsKKyAgICAgIGNhc2UgR0xfUkdCMTZGX0VYVDogICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdMX0hBTEZfRkxPQVRfT0VTOworICAgICAgY2FzZSBHTF9BTFBI
QTE2Rl9FWFQ6ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfSEFMRl9GTE9BVF9PRVM7Cisg
ICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6ICAgICAgICAgICAgICAgIHJldHVybiBHTF9I
QUxGX0ZMT0FUX09FUzsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDogICAg
ICAgICAgcmV0dXJuIEdMX0hBTEZfRkxPQVRfT0VTOworICAgICAgY2FzZSBHTF9CR1JBOF9FWFQ6
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfQllURTsKKyAgICAgIGNh
c2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6ICAgICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVE
X1NIT1JUOworICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVM6ICAgICAgICAgICBy
ZXR1cm4gR0xfVU5TSUdORURfSU5UOworICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09F
UzogICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfSU5UXzI0XzhfT0VTOworICAgICAgZGVm
YXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfTk9ORTsgICAv
LyBVbnN1cHBvcnRlZAorICAgIH0KK30KKworYm9vbCBJc0NvbG9yUmVuZGVyYWJsZShHTGVudW0g
aW50ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICB7Cisg
ICAgICBjYXNlIEdMX1JHQkE0OgorICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgY2FzZSBH
TF9SR0I1NjU6CisgICAgICBjYXNlIEdMX1JHQjhfT0VTOgorICAgICAgY2FzZSBHTF9SR0JBOF9P
RVM6CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQx
NjoKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9JTkRFWDg6CisgICAgICBjYXNlIEdMX0RFUFRIMjRf
U1RFTkNJTDhfT0VTOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICBjYXNlIEdMX0JHUkE4
X0VYVDoKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSXNE
ZXB0aFJlbmRlcmFibGUoR0xlbnVtIGludGVybmFsZm9ybWF0KQoreworICAgIHN3aXRjaCAoaW50
ZXJuYWxmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQxNjoKKyAg
ICAgIGNhc2UgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM6CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAg
ICBjYXNlIEdMX1JHQjVfQTE6CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2UgR0xf
UkdCOF9PRVM6CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KKworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJc1N0ZW5jaWxSZW5kZXJhYmxlKEdMZW51bSBpbnRl
cm5hbGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQorICAgIHsKKyAgICAg
IGNhc2UgR0xfU1RFTkNJTF9JTkRFWDg6CisgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhf
T0VTOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICBj
YXNlIEdMX1JHQjVfQTE6CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2UgR0xfUkdC
OF9PRVM6CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzoKKyAgICAgIGNhc2UgR0xfREVQVEhfQ09N
UE9ORU5UMTY6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
SXNGbG9hdDMyRm9ybWF0KEdMaW50IGludGVybmFsZm9ybWF0KQoreworICAgIHN3aXRjaCAoaW50
ZXJuYWxmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoKKyAgICAgIGNh
c2UgR0xfUkdCMzJGX0VYVDoKKyAgICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhUOgorICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgorICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZf
RVhUOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgSXNGbG9hdDE2Rm9ybWF0KEdMaW50IGludGVybmFs
Zm9ybWF0KQoreworICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAgeworICAgICAgY2Fz
ZSBHTF9SR0JBMTZGX0VYVDoKKyAgICAgIGNhc2UgR0xfUkdCMTZGX0VYVDoKKyAgICAgIGNhc2Ug
R0xfQUxQSEExNkZfRVhUOgorICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UxNkZfRVhUOgorICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3Vuc2lnbmVk
IGludCBHZXRBbHBoYVNpemUoR0xlbnVtIGNvbG9yRm9ybWF0KQoreworICAgIHN3aXRjaCAoY29s
b3JGb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9SR0JBMTZGX0VYVDoKKyAgICAgICAgcmV0
dXJuIDE2OworICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoKKyAgICAgICAgcmV0dXJuIDMyOwor
ICAgICAgY2FzZSBHTF9SR0JBNDoKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgICBjYXNlIEdMX1JH
QkE4X09FUzoKKyAgICAgIGNhc2UgR0xfQkdSQThfRVhUOgorICAgICAgICByZXR1cm4gODsKKyAg
ICAgIGNhc2UgR0xfUkdCNV9BMToKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICBjYXNlIEdMX1JH
QjhfT0VTOgorICAgICAgY2FzZSBHTF9SR0I1NjU6CisgICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6
CisgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6CisgICAgICAgIHJldHVybiAwOworICAgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgR2V0UmVk
U2l6ZShHTGVudW0gY29sb3JGb3JtYXQpCit7CisgICAgc3dpdGNoIChjb2xvckZvcm1hdCkKKyAg
ICB7CisgICAgICBjYXNlIEdMX1JHQkExNkZfRVhUOgorICAgICAgY2FzZSBHTF9SR0IxNkZfRVhU
OgorICAgICAgICByZXR1cm4gMTY7CisgICAgICBjYXNlIEdMX1JHQkEzMkZfRVhUOgorICAgICAg
Y2FzZSBHTF9SR0IzMkZfRVhUOgorICAgICAgICByZXR1cm4gMzI7CisgICAgICBjYXNlIEdMX1JH
QkE0OgorICAgICAgICByZXR1cm4gNDsKKyAgICAgIGNhc2UgR0xfUkdCQThfT0VTOgorICAgICAg
Y2FzZSBHTF9CR1JBOF9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjhfT0VTOgorICAgICAgICByZXR1
cm4gODsKKyAgICAgIGNhc2UgR0xfUkdCNV9BMToKKyAgICAgIGNhc2UgR0xfUkdCNTY1OgorICAg
ICAgICByZXR1cm4gNTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0K
K30KKwordW5zaWduZWQgaW50IEdldEdyZWVuU2l6ZShHTGVudW0gY29sb3JGb3JtYXQpCit7Cisg
ICAgc3dpdGNoIChjb2xvckZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQkExNkZfRVhU
OgorICAgICAgY2FzZSBHTF9SR0IxNkZfRVhUOgorICAgICAgICByZXR1cm4gMTY7CisgICAgICBj
YXNlIEdMX1JHQkEzMkZfRVhUOgorICAgICAgY2FzZSBHTF9SR0IzMkZfRVhUOgorICAgICAgICBy
ZXR1cm4gMzI7CisgICAgICBjYXNlIEdMX1JHQkE0OgorICAgICAgICByZXR1cm4gNDsKKyAgICAg
IGNhc2UgR0xfUkdCQThfT0VTOgorICAgICAgY2FzZSBHTF9CR1JBOF9FWFQ6CisgICAgICBjYXNl
IEdMX1JHQjhfT0VTOgorICAgICAgICByZXR1cm4gODsKKyAgICAgIGNhc2UgR0xfUkdCNV9BMToK
KyAgICAgICAgcmV0dXJuIDU7CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgICAgcmV0dXJu
IDY7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3Vuc2ln
bmVkIGludCBHZXRCbHVlU2l6ZShHTGVudW0gY29sb3JGb3JtYXQpCit7CisgICAgc3dpdGNoIChj
b2xvckZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQkExNkZfRVhUOgorICAgICAgY2Fz
ZSBHTF9SR0IxNkZfRVhUOgorICAgICAgICByZXR1cm4gMTY7CisgICAgICBjYXNlIEdMX1JHQkEz
MkZfRVhUOgorICAgICAgY2FzZSBHTF9SR0IzMkZfRVhUOgorICAgICAgICByZXR1cm4gMzI7Cisg
ICAgICBjYXNlIEdMX1JHQkE0OgorICAgICAgICByZXR1cm4gNDsKKyAgICAgIGNhc2UgR0xfUkdC
QThfT0VTOgorICAgICAgY2FzZSBHTF9CR1JBOF9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjhfT0VT
OgorICAgICAgICByZXR1cm4gODsKKyAgICAgIGNhc2UgR0xfUkdCNV9BMToKKyAgICAgIGNhc2Ug
R0xfUkdCNTY1OgorICAgICAgICByZXR1cm4gNTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KK30KKwordW5zaWduZWQgaW50IEdldERlcHRoU2l6ZShHTGVudW0gZGVw
dGhGb3JtYXQpCit7CisgICAgc3dpdGNoIChkZXB0aEZvcm1hdCkKKyAgICB7CisgICAgICBjYXNl
IEdMX0RFUFRIX0NPTVBPTkVOVDE2OiAgICAgICAgcmV0dXJuIDE2OworICAgICAgY2FzZSBHTF9E
RVBUSF9DT01QT05FTlQzMl9PRVM6ICAgIHJldHVybiAzMjsKKyAgICAgIGNhc2UgR0xfREVQVEgy
NF9TVEVOQ0lMOF9PRVM6ICAgICByZXR1cm4gMjQ7CisgICAgICBkZWZhdWx0OiAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgR2V0U3Rl
bmNpbFNpemUoR0xlbnVtIHN0ZW5jaWxGb3JtYXQpCit7CisgICAgc3dpdGNoIChzdGVuY2lsRm9y
bWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM6ICAgICByZXR1
cm4gODsKKyAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICB9Cit9CisKK2Jvb2wgSXNUcmlhbmdsZU1vZGUoR0xlbnVtIGRyYXdNb2RlKQoreworICAg
IHN3aXRjaCAoZHJhd01vZGUpCisgICAgeworICAgICAgY2FzZSBHTF9UUklBTkdMRVM6CisgICAg
ICBjYXNlIEdMX1RSSUFOR0xFX0ZBTjoKKyAgICAgIGNhc2UgR0xfVFJJQU5HTEVfU1RSSVA6Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgY2FzZSBHTF9QT0lOVFM6CisgICAgICBjYXNlIEdM
X0xJTkVTOgorICAgICAgY2FzZSBHTF9MSU5FX0xPT1A6CisgICAgICBjYXNlIEdMX0xJTkVfU1RS
SVA6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit9CisKK3N0ZDo6c3RyaW5nIGdldFRl
bXBQYXRoKCkKK3sKKyAgICBjaGFyIHBhdGhbTUFYX1BBVEhdOworICAgIERXT1JEIHBhdGhMZW4g
PSBHZXRUZW1wUGF0aEEoc2l6ZW9mKHBhdGgpIC8gc2l6ZW9mKHBhdGhbMF0pLCBwYXRoKTsKKyAg
ICBpZiAocGF0aExlbiA9PSAwKQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CisgICAgfQorCisgICAgVUlOVCB1bmlxdWUgPSBHZXRU
ZW1wRmlsZU5hbWVBKHBhdGgsICJzaCIsIDAsIHBhdGgpOworICAgIGlmICh1bmlxdWUgPT0gMCkK
KyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmlu
ZygpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcGF0aDsKK30KKwordm9pZCB3cml0ZUZpbGUo
Y29uc3QgY2hhciogcGF0aCwgY29uc3Qgdm9pZCogY29udGVudCwgc2l6ZV90IHNpemUpCit7Cisg
ICAgRklMRSogZmlsZSA9IGZvcGVuKHBhdGgsICJ3Iik7CisgICAgaWYgKCFmaWxlKQorICAgIHsK
KyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZ3
cml0ZShjb250ZW50LCBzaXplb2YoY2hhciksIHNpemUsIGZpbGUpOworICAgIGZjbG9zZShmaWxl
KTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvdXRpbGl0
aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi91dGlsaXRpZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvdXRpbGl0aWVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIHV0aWxpdGllcy5oOiBDb252ZXJzaW9uIGZ1bmN0aW9ucyBh
bmQgb3RoZXIgdXRpbGl0eSByb3V0aW5lcy4KKworI2lmbmRlZiBMSUJHTEVTVjJfVVRJTElUSUVT
X0gKKyNkZWZpbmUgTElCR0xFU1YyX1VUSUxJVElFU19ICisKKyNkZWZpbmUgR0xfQVBJQ0FMTAor
I2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorI2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgorCisjaW5j
bHVkZSA8c3RyaW5nPgorCituYW1lc3BhY2UgZ2wKK3sKKworc3RydWN0IENvbG9yOworCitpbnQg
VW5pZm9ybUNvbXBvbmVudENvdW50KEdMZW51bSB0eXBlKTsKK0dMZW51bSBVbmlmb3JtQ29tcG9u
ZW50VHlwZShHTGVudW0gdHlwZSk7CitzaXplX3QgVW5pZm9ybUludGVybmFsU2l6ZShHTGVudW0g
dHlwZSk7CitzaXplX3QgVW5pZm9ybUV4dGVybmFsU2l6ZShHTGVudW0gdHlwZSk7CitpbnQgVmFy
aWFibGVSb3dDb3VudChHTGVudW0gdHlwZSk7CitpbnQgVmFyaWFibGVDb2x1bW5Db3VudChHTGVu
dW0gdHlwZSk7CisKK2ludCBBbGxvY2F0ZUZpcnN0RnJlZUJpdHModW5zaWduZWQgaW50ICpiaXRz
LCB1bnNpZ25lZCBpbnQgYWxsb2NhdGlvblNpemUsIHVuc2lnbmVkIGludCBiaXRzU2l6ZSk7CisK
K3ZvaWQgTWFrZVZhbGlkU2l6ZShib29sIGlzSW1hZ2UsIGJvb2wgaXNDb21wcmVzc2VkLCBHTHNp
emVpICpyZXF1ZXN0V2lkdGgsIEdMc2l6ZWkgKnJlcXVlc3RIZWlnaHQsIGludCAqbGV2ZWxPZmZz
ZXQpOworaW50IENvbXB1dGVQaXhlbFNpemUoR0xpbnQgaW50ZXJuYWxmb3JtYXQpOworR0xzaXpl
aSBDb21wdXRlUGl0Y2goR0xzaXplaSB3aWR0aCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMaW50
IGFsaWdubWVudCk7CitHTHNpemVpIENvbXB1dGVDb21wcmVzc2VkUGl0Y2goR0xzaXplaSB3aWR0
aCwgR0xlbnVtIGZvcm1hdCk7CitHTHNpemVpIENvbXB1dGVDb21wcmVzc2VkU2l6ZShHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCk7Citib29sIElzQ29tcHJlc3Nl
ZChHTGVudW0gZm9ybWF0KTsKK2Jvb2wgSXNEZXB0aFRleHR1cmUoR0xlbnVtIGZvcm1hdCk7Citi
b29sIElzU3RlbmNpbFRleHR1cmUoR0xlbnVtIGZvcm1hdCk7Citib29sIElzQ3ViZW1hcFRleHR1
cmVUYXJnZXQoR0xlbnVtIHRhcmdldCk7Citib29sIElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KEdM
ZW51bSB0YXJnZXQpOworR0xpbnQgQ29udmVydFNpemVkSW50ZXJuYWxGb3JtYXQoR0xlbnVtIGZv
cm1hdCwgR0xlbnVtIHR5cGUpOworR0xlbnVtIEV4dHJhY3RGb3JtYXQoR0xlbnVtIGludGVybmFs
Zm9ybWF0KTsKK0dMZW51bSBFeHRyYWN0VHlwZShHTGVudW0gaW50ZXJuYWxmb3JtYXQpOworCiti
b29sIElzQ29sb3JSZW5kZXJhYmxlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCk7Citib29sIElzRGVw
dGhSZW5kZXJhYmxlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCk7Citib29sIElzU3RlbmNpbFJlbmRl
cmFibGUoR0xlbnVtIGludGVybmFsZm9ybWF0KTsKKworYm9vbCBJc0Zsb2F0MzJGb3JtYXQoR0xp
bnQgaW50ZXJuYWxmb3JtYXQpOworYm9vbCBJc0Zsb2F0MTZGb3JtYXQoR0xpbnQgaW50ZXJuYWxm
b3JtYXQpOworCitHTHVpbnQgR2V0QWxwaGFTaXplKEdMZW51bSBjb2xvckZvcm1hdCk7CitHTHVp
bnQgR2V0UmVkU2l6ZShHTGVudW0gY29sb3JGb3JtYXQpOworR0x1aW50IEdldEdyZWVuU2l6ZShH
TGVudW0gY29sb3JGb3JtYXQpOworR0x1aW50IEdldEJsdWVTaXplKEdMZW51bSBjb2xvckZvcm1h
dCk7CitHTHVpbnQgR2V0RGVwdGhTaXplKEdMZW51bSBkZXB0aEZvcm1hdCk7CitHTHVpbnQgR2V0
U3RlbmNpbFNpemUoR0xlbnVtIHN0ZW5jaWxGb3JtYXQpOworYm9vbCBJc1RyaWFuZ2xlTW9kZShH
TGVudW0gZHJhd01vZGUpOworCit9CisKK3N0ZDo6c3RyaW5nIGdldFRlbXBQYXRoKCk7Cit2b2lk
IHdyaXRlRmlsZShjb25zdCBjaGFyKiBwYXRoLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6
ZSk7CisKKyNlbmRpZiAgLy8gTElCR0xFU1YyX1VUSUxJVElFU19ICkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQmxpdC5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL0JsaXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5NSBAQAorI2luY2x1
ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBCbGl0LmNwcDogU3Vy
ZmFjZSBjb3B5IHV0aWxpdHkgY2xhc3MuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
QmxpdC5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRl
cmVyL1RleHR1cmVTdG9yYWdlOS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5k
ZXJUYXJnZXQ5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9S
ZW5kZXJidWZmZXIuaCIKKworbmFtZXNwYWNlCit7CisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvc3RhbmRhcmR2cy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9y
ZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2ZsaXB5dnMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHBzLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNlcHMuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNrcHMuaCIK
KworY29uc3QgQllURSogY29uc3QgZ19zaGFkZXJDb2RlW10gPQoreworICAgIGdfdnMyMF9zdGFu
ZGFyZHZzLAorICAgIGdfdnMyMF9mbGlweXZzLAorICAgIGdfcHMyMF9wYXNzdGhyb3VnaHBzLAor
ICAgIGdfcHMyMF9sdW1pbmFuY2VwcywKKyAgICBnX3BzMjBfY29tcG9uZW50bWFza3BzCit9Owor
Citjb25zdCBzaXplX3QgZ19zaGFkZXJTaXplW10gPQoreworICAgIHNpemVvZihnX3ZzMjBfc3Rh
bmRhcmR2cyksCisgICAgc2l6ZW9mKGdfdnMyMF9mbGlweXZzKSwKKyAgICBzaXplb2YoZ19wczIw
X3Bhc3N0aHJvdWdocHMpLAorICAgIHNpemVvZihnX3BzMjBfbHVtaW5hbmNlcHMpLAorICAgIHNp
emVvZihnX3BzMjBfY29tcG9uZW50bWFza3BzKQorfTsKK30KKworbmFtZXNwYWNlIHJ4Cit7CitC
bGl0OjpCbGl0KHJ4OjpSZW5kZXJlcjkgKnJlbmRlcmVyKQorICA6IG1SZW5kZXJlcihyZW5kZXJl
ciksIG1RdWFkVmVydGV4QnVmZmVyKE5VTEwpLCBtUXVhZFZlcnRleERlY2xhcmF0aW9uKE5VTEwp
LCBtU2F2ZWRTdGF0ZUJsb2NrKE5VTEwpLCBtU2F2ZWRSZW5kZXJUYXJnZXQoTlVMTCksIG1TYXZl
ZERlcHRoU3RlbmNpbChOVUxMKQoreworICAgIGluaXRHZW9tZXRyeSgpOworICAgIG1lbXNldCht
Q29tcGlsZWRTaGFkZXJzLCAwLCBzaXplb2YobUNvbXBpbGVkU2hhZGVycykpOworfQorCitCbGl0
Ojp+QmxpdCgpCit7CisgICAgaWYgKG1TYXZlZFN0YXRlQmxvY2spIG1TYXZlZFN0YXRlQmxvY2st
PlJlbGVhc2UoKTsKKyAgICBpZiAobVF1YWRWZXJ0ZXhCdWZmZXIpIG1RdWFkVmVydGV4QnVmZmVy
LT5SZWxlYXNlKCk7CisgICAgaWYgKG1RdWFkVmVydGV4RGVjbGFyYXRpb24pIG1RdWFkVmVydGV4
RGVjbGFyYXRpb24tPlJlbGVhc2UoKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgU0hBREVS
X0NPVU5UOyBpKyspCisgICAgeworICAgICAgICBpZiAobUNvbXBpbGVkU2hhZGVyc1tpXSkKKyAg
ICAgICAgeworICAgICAgICAgICAgbUNvbXBpbGVkU2hhZGVyc1tpXS0+UmVsZWFzZSgpOworICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIEJsaXQ6OmluaXRHZW9tZXRyeSgpCit7CisgICAgc3Rh
dGljIGNvbnN0IGZsb2F0IHF1YWRbXSA9CisgICAgeworICAgICAgICAtMSwgLTEsCisgICAgICAg
IC0xLCAgMSwKKyAgICAgICAgIDEsIC0xLAorICAgICAgICAgMSwgIDEKKyAgICB9OworCisgICAg
SURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAg
IEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVWZXJ0ZXhCdWZmZXIoc2l6ZW9mKHF1YWQp
LCBEM0RVU0FHRV9XUklURU9OTFksIDAsIEQzRFBPT0xfREVGQVVMVCwgJm1RdWFkVmVydGV4QnVm
ZmVyLCBOVUxMKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIEFT
U0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VU
T0ZNRU1PUlkpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwor
ICAgIH0KKworICAgIHZvaWQgKmxvY2tQdHIgPSBOVUxMOworICAgIHJlc3VsdCA9IG1RdWFkVmVy
dGV4QnVmZmVyLT5Mb2NrKDAsIDAsICZsb2NrUHRyLCAwKTsKKworICAgIGlmIChGQUlMRUQocmVz
dWx0KSB8fCBsb2NrUHRyID09IE5VTEwpCisgICAgeworICAgICAgICBBU1NFUlQocmVzdWx0ID09
IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9CisKKyAgICBt
ZW1jcHkobG9ja1B0ciwgcXVhZCwgc2l6ZW9mKHF1YWQpKTsKKyAgICBtUXVhZFZlcnRleEJ1ZmZl
ci0+VW5sb2NrKCk7CisKKyAgICBzdGF0aWMgY29uc3QgRDNEVkVSVEVYRUxFTUVOVDkgZWxlbWVu
dHNbXSA9CisgICAgeworICAgICAgICB7IDAsIDAsIEQzRERFQ0xUWVBFX0ZMT0FUMiwgRDNEREVD
TE1FVEhPRF9ERUZBVUxULCBEM0RERUNMVVNBR0VfUE9TSVRJT04sIDAgfSwKKyAgICAgICAgRDNE
REVDTF9FTkQoKQorICAgIH07CisKKyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVZlcnRleERl
Y2xhcmF0aW9uKGVsZW1lbnRzLCAmbVF1YWRWZXJ0ZXhEZWNsYXJhdGlvbik7CisKKyAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9P
VVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDxj
bGFzcyBEM0RTaGFkZXJUeXBlPgorYm9vbCBCbGl0OjpzZXRTaGFkZXIoU2hhZGVySWQgc291cmNl
LCBjb25zdCBjaGFyICpwcm9maWxlLAorICAgICAgICAgICAgICAgICAgICAgRDNEU2hhZGVyVHlw
ZSAqKHJ4OjpSZW5kZXJlcjk6OipjcmVhdGVTaGFkZXIpKGNvbnN0IERXT1JEICosIHNpemVfdCBs
ZW5ndGgpLAorICAgICAgICAgICAgICAgICAgICAgSFJFU1VMVCAoV0lOQVBJIElEaXJlY3QzRERl
dmljZTk6OipzZXRTaGFkZXIpKEQzRFNoYWRlclR5cGUqKSkKK3sKKyAgICBJRGlyZWN0M0REZXZp
Y2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgRDNEU2hhZGVyVHlw
ZSAqc2hhZGVyOworCisgICAgaWYgKG1Db21waWxlZFNoYWRlcnNbc291cmNlXSAhPSBOVUxMKQor
ICAgIHsKKyAgICAgICAgc2hhZGVyID0gc3RhdGljX2Nhc3Q8RDNEU2hhZGVyVHlwZSo+KG1Db21w
aWxlZFNoYWRlcnNbc291cmNlXSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGNv
bnN0IEJZVEUqIHNoYWRlckNvZGUgPSBnX3NoYWRlckNvZGVbc291cmNlXTsKKyAgICAgICAgc2l6
ZV90IHNoYWRlclNpemUgPSBnX3NoYWRlclNpemVbc291cmNlXTsKKworICAgICAgICBzaGFkZXIg
PSAobVJlbmRlcmVyLT4qY3JlYXRlU2hhZGVyKShyZWludGVycHJldF9jYXN0PGNvbnN0IERXT1JE
Kj4oc2hhZGVyQ29kZSksIHNoYWRlclNpemUpOworICAgICAgICBpZiAoIXNoYWRlcikKKyAgICAg
ICAgeworICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gY3JlYXRlIHNoYWRlciBmb3IgYmxpdCBv
cGVyYXRpb24iKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAg
ICAgIG1Db21waWxlZFNoYWRlcnNbc291cmNlXSA9IHNoYWRlcjsKKyAgICB9CisKKyAgICBIUkVT
VUxUIGhyID0gKGRldmljZS0+KnNldFNoYWRlcikoc2hhZGVyKTsKKworICAgIGlmIChGQUlMRUQo
aHIpKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gc2V0IHNoYWRlciBmb3IgYmxpdCBv
cGVyYXRpb24iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIEJsaXQ6OnNldFZlcnRleFNoYWRlcihTaGFkZXJJZCBzaGFkZXIpCit7
CisgICAgcmV0dXJuIHNldFNoYWRlcjxJRGlyZWN0M0RWZXJ0ZXhTaGFkZXI5PihzaGFkZXIsICJ2
c18yXzAiLCAmcng6OlJlbmRlcmVyOTo6Y3JlYXRlVmVydGV4U2hhZGVyLCAmSURpcmVjdDNERGV2
aWNlOTo6U2V0VmVydGV4U2hhZGVyKTsKK30KKworYm9vbCBCbGl0OjpzZXRQaXhlbFNoYWRlcihT
aGFkZXJJZCBzaGFkZXIpCit7CisgICAgcmV0dXJuIHNldFNoYWRlcjxJRGlyZWN0M0RQaXhlbFNo
YWRlcjk+KHNoYWRlciwgInBzXzJfMCIsICZyeDo6UmVuZGVyZXI5OjpjcmVhdGVQaXhlbFNoYWRl
ciwgJklEaXJlY3QzRERldmljZTk6OlNldFBpeGVsU2hhZGVyKTsKK30KKworUkVDVCBCbGl0Ojpn
ZXRTdXJmYWNlUmVjdChJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSkgY29uc3QKK3sKKyAgICBE
M0RTVVJGQUNFX0RFU0MgZGVzYzsKKyAgICBzdXJmYWNlLT5HZXREZXNjKCZkZXNjKTsKKworICAg
IFJFQ1QgcmVjdDsKKyAgICByZWN0LmxlZnQgPSAwOworICAgIHJlY3QudG9wID0gMDsKKyAgICBy
ZWN0LnJpZ2h0ID0gZGVzYy5XaWR0aDsKKyAgICByZWN0LmJvdHRvbSA9IGRlc2MuSGVpZ2h0Owor
CisgICAgcmV0dXJuIHJlY3Q7Cit9CisKK2Jvb2wgQmxpdDo6Ym94RmlsdGVyKElEaXJlY3QzRFN1
cmZhY2U5ICpzb3VyY2UsIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0KQoreworICAgIElEaXJlY3Qz
RFRleHR1cmU5ICp0ZXh0dXJlID0gY29weVN1cmZhY2VUb1RleHR1cmUoc291cmNlLCBnZXRTdXJm
YWNlUmVjdChzb3VyY2UpKTsKKyAgICBpZiAoIXRleHR1cmUpCisgICAgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRl
cmVyLT5nZXREZXZpY2UoKTsKKworICAgIHNhdmVTdGF0ZSgpOworCisgICAgZGV2aWNlLT5TZXRU
ZXh0dXJlKDAsIHRleHR1cmUpOworICAgIGRldmljZS0+U2V0UmVuZGVyVGFyZ2V0KDAsIGRlc3Qp
OworCisgICAgc2V0VmVydGV4U2hhZGVyKFNIQURFUl9WU19TVEFOREFSRCk7CisgICAgc2V0UGl4
ZWxTaGFkZXIoU0hBREVSX1BTX1BBU1NUSFJPVUdIKTsKKworICAgIHNldENvbW1vbkJsaXRTdGF0
ZSgpOworICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfTUlORklMVEVSLCBE
M0RURVhGX0xJTkVBUik7CisgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNEU0FNUF9N
QUdGSUxURVIsIEQzRFRFWEZfTElORUFSKTsKKworICAgIHNldFZpZXdwb3J0KGdldFN1cmZhY2VS
ZWN0KGRlc3QpLCAwLCAwKTsKKworICAgIHJlbmRlcigpOworCisgICAgdGV4dHVyZS0+UmVsZWFz
ZSgpOworCisgICAgcmVzdG9yZVN0YXRlKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBCbGl0Ojpjb3B5KGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IFJFQ1QgJnNv
dXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0
LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpzdG9yYWdlLCBHTGludCBsZXZlbCkKK3sKKyAg
ICBSZW5kZXJUYXJnZXQ5ICpyZW5kZXJUYXJnZXQgPSBOVUxMOworICAgIElEaXJlY3QzRFN1cmZh
Y2U5ICpzb3VyY2UgPSBOVUxMOworICAgIGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVyID0g
ZnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyKDApOworCisgICAgaWYgKGNvbG9yYnVmZmVyKQor
ICAgIHsKKyAgICAgICAgcmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0OTo6bWFrZVJlbmRlclRh
cmdldDkoY29sb3JidWZmZXItPmdldFJlbmRlclRhcmdldCgpKTsKKyAgICB9CisgICAgCisgICAg
aWYgKHJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHJlbmRlclRhcmdldC0+
Z2V0U3VyZmFjZSgpOworICAgIH0KKworICAgIGlmICghc291cmNlKQorICAgIHsKKyAgICAgICAg
RVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIHJlbmRlciB0YXJnZXQuIik7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIFRl
eHR1cmVTdG9yYWdlOV8yRCAqc3RvcmFnZTkgPSBUZXh0dXJlU3RvcmFnZTlfMkQ6Om1ha2VUZXh0
dXJlU3RvcmFnZTlfMkQoc3RvcmFnZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgIElEaXJl
Y3QzRFN1cmZhY2U5ICpkZXN0U3VyZmFjZSA9IHN0b3JhZ2U5LT5nZXRTdXJmYWNlTGV2ZWwobGV2
ZWwsIHRydWUpOworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgIAorICAgIGlmIChk
ZXN0U3VyZmFjZSkKKyAgICB7CisgICAgICAgIHJlc3VsdCA9IGNvcHkoc291cmNlLCBzb3VyY2VS
ZWN0LCBkZXN0Rm9ybWF0LCB4b2Zmc2V0LCB5b2Zmc2V0LCBkZXN0U3VyZmFjZSk7CisgICAgICAg
IGRlc3RTdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgfQorCisgICAgc291cmNlLT5SZWxlYXNlKCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBCbGl0Ojpjb3B5KGdsOjpGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIsIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0
LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1
YmUgKnN0b3JhZ2UsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKQoreworICAgIFJlbmRlclRh
cmdldDkgKnJlbmRlclRhcmdldCA9IE5VTEw7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJj
ZSA9IE5VTEw7CisgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqY29sb3JidWZmZXIgPSBmcmFtZWJ1ZmZl
ci0+Z2V0Q29sb3JidWZmZXIoMCk7CisKKyAgICBpZiAoY29sb3JidWZmZXIpCisgICAgeworICAg
ICAgICByZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQ5OjptYWtlUmVuZGVyVGFyZ2V0OShjb2xv
cmJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAgIH0KKyAgICAKKyAgICBpZiAocmVuZGVy
VGFyZ2V0KQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVuZGVyVGFyZ2V0LT5nZXRTdXJmYWNl
KCk7CisgICAgfQorCisgICAgaWYgKCFzb3VyY2UpCisgICAgeworICAgICAgICBFUlIoIkZhaWxl
ZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRhcmdldC4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgVGV4dHVyZVN0b3Jh
Z2U5X0N1YmUgKnN0b3JhZ2U5ID0gVGV4dHVyZVN0b3JhZ2U5X0N1YmU6Om1ha2VUZXh0dXJlU3Rv
cmFnZTlfQ3ViZShzdG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7CisgICAgSURpcmVjdDNE
U3VyZmFjZTkgKmRlc3RTdXJmYWNlID0gc3RvcmFnZTktPmdldEN1YmVNYXBTdXJmYWNlKHRhcmdl
dCwgbGV2ZWwsIHRydWUpOworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisKKyAgICBpZiAoZGVz
dFN1cmZhY2UpCisgICAgeworICAgICAgICByZXN1bHQgPSBjb3B5KHNvdXJjZSwgc291cmNlUmVj
dCwgZGVzdEZvcm1hdCwgeG9mZnNldCwgeW9mZnNldCwgZGVzdFN1cmZhY2UpOworICAgICAgICBk
ZXN0U3VyZmFjZS0+UmVsZWFzZSgpOworICAgIH0KKworICAgIHNvdXJjZS0+UmVsZWFzZSgpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgQmxpdDo6Y29weShJRGlyZWN0M0RTdXJmYWNl
OSAqc291cmNlLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpCit7Cisg
ICAgaWYgKCFkZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAg
ICBEM0RTVVJGQUNFX0RFU0Mgc291cmNlRGVzYzsKKyAgICBEM0RTVVJGQUNFX0RFU0MgZGVzdERl
c2M7CisgICAgc291cmNlLT5HZXREZXNjKCZzb3VyY2VEZXNjKTsKKyAgICBkZXN0LT5HZXREZXNj
KCZkZXN0RGVzYyk7CisKKyAgICBpZiAoc291cmNlRGVzYy5Gb3JtYXQgPT0gZGVzdERlc2MuRm9y
bWF0ICYmIGRlc3REZXNjLlVzYWdlICYgRDNEVVNBR0VfUkVOREVSVEFSR0VUICYmCisgICAgICAg
IGQzZDlfZ2w6OklzRm9ybWF0Q2hhbm5lbEVxdWl2YWxlbnQoZGVzdERlc2MuRm9ybWF0LCBkZXN0
Rm9ybWF0KSkgICAvLyBDYW4gdXNlIFN0cmV0Y2hSZWN0CisgICAgeworICAgICAgICBSRUNUIGRl
c3RSZWN0ID0ge3hvZmZzZXQsIHlvZmZzZXQsIHhvZmZzZXQgKyAoc291cmNlUmVjdC5yaWdodCAt
IHNvdXJjZVJlY3QubGVmdCksIHlvZmZzZXQgKyAoc291cmNlUmVjdC5ib3R0b20gLSBzb3VyY2VS
ZWN0LnRvcCl9OworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+U3RyZXRjaFJlY3Qo
c291cmNlLCAmc291cmNlUmVjdCwgZGVzdCwgJmRlc3RSZWN0LCBEM0RURVhGX1BPSU5UKTsKKwor
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZN
RU1PUlkpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBm
YWxzZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZvcm1hdENvbnZlcnQoc291cmNlLCBzb3VyY2VSZWN0LCBkZXN0Rm9ybWF0LCB4b2Zmc2V0LCB5
b2Zmc2V0LCBkZXN0KTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQmxpdDo6
Zm9ybWF0Q29udmVydChJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlLCBjb25zdCBSRUNUICZzb3Vy
Y2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwg
SURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpCit7CisgICAgSURpcmVjdDNEVGV4dHVyZTkgKnRleHR1
cmUgPSBjb3B5U3VyZmFjZVRvVGV4dHVyZShzb3VyY2UsIHNvdXJjZVJlY3QpOworICAgIGlmICgh
dGV4dHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBJRGly
ZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgc2F2
ZVN0YXRlKCk7CisKKyAgICBkZXZpY2UtPlNldFRleHR1cmUoMCwgdGV4dHVyZSk7CisgICAgZGV2
aWNlLT5TZXRSZW5kZXJUYXJnZXQoMCwgZGVzdCk7CisKKyAgICBzZXRWaWV3cG9ydChzb3VyY2VS
ZWN0LCB4b2Zmc2V0LCB5b2Zmc2V0KTsKKworICAgIHNldENvbW1vbkJsaXRTdGF0ZSgpOworICAg
IGlmIChzZXRGb3JtYXRDb252ZXJ0U2hhZGVycyhkZXN0Rm9ybWF0KSkKKyAgICB7CisgICAgICAg
IHJlbmRlcigpOworICAgIH0KKworICAgIHRleHR1cmUtPlJlbGVhc2UoKTsKKworICAgIHJlc3Rv
cmVTdGF0ZSgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQmxpdDo6c2V0Rm9ybWF0
Q29udmVydFNoYWRlcnMoR0xlbnVtIGRlc3RGb3JtYXQpCit7CisgICAgYm9vbCBva2F5ID0gc2V0
VmVydGV4U2hhZGVyKFNIQURFUl9WU19TVEFOREFSRCk7CisKKyAgICBzd2l0Y2ggKGRlc3RGb3Jt
YXQpCisgICAgeworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgIGNhc2UgR0xf
UkdCQToKKyAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjoKKyAgICAg
IGNhc2UgR0xfQUxQSEE6CisgICAgICAgIG9rYXkgPSBva2F5ICYmIHNldFBpeGVsU2hhZGVyKFNI
QURFUl9QU19DT01QT05FTlRNQVNLKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgR0xf
TFVNSU5BTkNFOgorICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgIG9rYXkg
PSBva2F5ICYmIHNldFBpeGVsU2hhZGVyKFNIQURFUl9QU19MVU1JTkFOQ0UpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBpZiAoIW9rYXkpCisgICAgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgZW51bSB7IFggPSAwLCBZID0gMSwgWiA9IDIsIFcgPSAzIH07CisK
KyAgICAvLyBUaGUgbWVhbmluZyBvZiB0aGlzIGNvbnN0YW50IGRlcGVuZHMgb24gdGhlIHNoYWRl
ciB0aGF0IHdhcyBzZWxlY3RlZC4KKyAgICAvLyBTZWUgdGhlIHNoYWRlciBhc3NlbWJseSBjb2Rl
IGFib3ZlIGZvciBkZXRhaWxzLgorICAgIGZsb2F0IHBzQ29uc3QwWzRdID0geyAwLCAwLCAwLCAw
IH07CisKKyAgICBzd2l0Y2ggKGRlc3RGb3JtYXQpCisgICAgeworICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKKyAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6
CisgICAgICAgIHBzQ29uc3QwW1hdID0gMTsKKyAgICAgICAgcHNDb25zdDBbWl0gPSAxOworICAg
ICAgICBicmVhazsKKworICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgIHBzQ29uc3QwW1hdID0g
MTsKKyAgICAgICAgcHNDb25zdDBbV10gPSAxOworICAgICAgICBicmVhazsKKworICAgICAgY2Fz
ZSBHTF9BTFBIQToKKyAgICAgICAgcHNDb25zdDBbWl0gPSAxOworICAgICAgICBicmVhazsKKwor
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6CisgICAgICAgIHBzQ29uc3QwW1ldID0gMTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICBwc0Nv
bnN0MFtYXSA9IDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIG1SZW5kZXJlci0+Z2V0
RGV2aWNlKCktPlNldFBpeGVsU2hhZGVyQ29uc3RhbnRGKDAsIHBzQ29uc3QwLCAxKTsKKworICAg
IHJldHVybiB0cnVlOworfQorCitJRGlyZWN0M0RUZXh0dXJlOSAqQmxpdDo6Y29weVN1cmZhY2VU
b1RleHR1cmUoSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UsIGNvbnN0IFJFQ1QgJnNvdXJjZVJl
Y3QpCit7CisgICAgaWYgKCFzdXJmYWNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7Cisg
ICAgfQorCisgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZp
Y2UoKTsKKworICAgIEQzRFNVUkZBQ0VfREVTQyBzb3VyY2VEZXNjOworICAgIHN1cmZhY2UtPkdl
dERlc2MoJnNvdXJjZURlc2MpOworCisgICAgLy8gQ29weSB0aGUgcmVuZGVyIHRhcmdldCBpbnRv
IGEgdGV4dHVyZQorICAgIElEaXJlY3QzRFRleHR1cmU5ICp0ZXh0dXJlOworICAgIEhSRVNVTFQg
cmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlKHNvdXJjZVJlY3QucmlnaHQgLSBzb3VyY2VS
ZWN0LmxlZnQsIHNvdXJjZVJlY3QuYm90dG9tIC0gc291cmNlUmVjdC50b3AsIDEsIEQzRFVTQUdF
X1JFTkRFUlRBUkdFVCwgc291cmNlRGVzYy5Gb3JtYXQsIEQzRFBPT0xfREVGQVVMVCwgJnRleHR1
cmUsIE5VTEwpOworCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRP
Rk1FTU9SWSk7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgKElE
aXJlY3QzRFRleHR1cmU5KilOVUxMKTsKKyAgICB9CisKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAq
dGV4dHVyZVN1cmZhY2U7CisgICAgcmVzdWx0ID0gdGV4dHVyZS0+R2V0U3VyZmFjZUxldmVsKDAs
ICZ0ZXh0dXJlU3VyZmFjZSk7CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAg
ICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9
PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgdGV4dHVyZS0+UmVsZWFzZSgpOworICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIChJRGlyZWN0M0RUZXh0dXJlOSopTlVM
TCk7CisgICAgfQorCisgICAgbVJlbmRlcmVyLT5lbmRTY2VuZSgpOworICAgIHJlc3VsdCA9IGRl
dmljZS0+U3RyZXRjaFJlY3Qoc3VyZmFjZSwgJnNvdXJjZVJlY3QsIHRleHR1cmVTdXJmYWNlLCBO
VUxMLCBEM0RURVhGX05PTkUpOworCisgICAgdGV4dHVyZVN1cmZhY2UtPlJlbGVhc2UoKTsKKwor
ICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIEFTU0VSVChyZXN1bHQgPT0g
RDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOworICAg
ICAgICB0ZXh0dXJlLT5SZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSwgKElEaXJlY3QzRFRleHR1cmU5KilOVUxMKTsKKyAgICB9CisKKyAgICByZXR1
cm4gdGV4dHVyZTsKK30KKwordm9pZCBCbGl0OjpzZXRWaWV3cG9ydChjb25zdCBSRUNUICZzb3Vy
Y2VSZWN0LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0KQoreworICAgIElEaXJlY3QzRERl
dmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICBEM0RWSUVXUE9S
VDkgdnA7CisgICAgdnAuWCAgICAgID0geG9mZnNldDsKKyAgICB2cC5ZICAgICAgPSB5b2Zmc2V0
OworICAgIHZwLldpZHRoICA9IHNvdXJjZVJlY3QucmlnaHQgLSBzb3VyY2VSZWN0LmxlZnQ7Cisg
ICAgdnAuSGVpZ2h0ID0gc291cmNlUmVjdC5ib3R0b20gLSBzb3VyY2VSZWN0LnRvcDsKKyAgICB2
cC5NaW5aICAgPSAwLjBmOworICAgIHZwLk1heFogICA9IDEuMGY7CisgICAgZGV2aWNlLT5TZXRW
aWV3cG9ydCgmdnApOworCisgICAgZmxvYXQgaGFsZlBpeGVsQWRqdXN0WzRdID0geyAtMS4wZi92
cC5XaWR0aCwgMS4wZi92cC5IZWlnaHQsIDAsIDAgfTsKKyAgICBkZXZpY2UtPlNldFZlcnRleFNo
YWRlckNvbnN0YW50RigwLCBoYWxmUGl4ZWxBZGp1c3QsIDEpOworfQorCit2b2lkIEJsaXQ6OnNl
dENvbW1vbkJsaXRTdGF0ZSgpCit7CisgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJl
bmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIGRldmljZS0+U2V0RGVwdGhTdGVuY2lsU3VyZmFj
ZShOVUxMKTsKKworICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfRklMTE1PREUsIEQz
REZJTExfU09MSUQpOworICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFURVNU
RU5BQkxFLCBGQUxTRSk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJM
RU5ERU5BQkxFLCBGQUxTRSk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DVUxM
TU9ERSwgRDNEQ1VMTF9OT05FKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NM
SVBQTEFORUVOQUJMRSwgMCk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DT0xP
UldSSVRFRU5BQkxFLCBEM0RDT0xPUldSSVRFRU5BQkxFX0FMUEhBIHwgRDNEQ09MT1JXUklURUVO
QUJMRV9CTFVFIHwgRDNEQ09MT1JXUklURUVOQUJMRV9HUkVFTiB8IEQzRENPTE9SV1JJVEVFTkFC
TEVfUkVEKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NSR0JXUklURUVOQUJM
RSwgRkFMU0UpOworICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0NJU1NPUlRFU1RF
TkFCTEUsIEZBTFNFKTsKKworICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBf
TUFHRklMVEVSLCBEM0RURVhGX1BPSU5UKTsKKyAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZSgw
LCBEM0RTQU1QX01JTkZJTFRFUiwgRDNEVEVYRl9QT0lOVCk7CisgICAgZGV2aWNlLT5TZXRTYW1w
bGVyU3RhdGUoMCwgRDNEU0FNUF9TUkdCVEVYVFVSRSwgRkFMU0UpOworICAgIGRldmljZS0+U2V0
U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfQUREUkVTU1UsIEQzRFRBRERSRVNTX0NMQU1QKTsKKyAg
ICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZSgwLCBEM0RTQU1QX0FERFJFU1NWLCBEM0RUQUREUkVT
U19DTEFNUCk7CisKKyAgICBSRUNUIHNjaXNzb3JSZWN0ID0gezB9OyAgIC8vIFNjaXNzb3Jpbmcg
aXMgZGlzYWJsZWQgZm9yIGZsaXBwaW5nLCBidXQgd2UgbmVlZCB0aGlzIHRvIGNhcHR1cmUgYW5k
IHJlc3RvcmUgdGhlIG9sZCByZWN0YW5nbGUKKyAgICBkZXZpY2UtPlNldFNjaXNzb3JSZWN0KCZz
Y2lzc29yUmVjdCk7CisKKyAgICBmb3IoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRU
UklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgZGV2aWNlLT5TZXRTdHJlYW1Tb3VyY2VGcmVxKGks
IDEpOworICAgIH0KK30KKwordm9pZCBCbGl0OjpyZW5kZXIoKQoreworICAgIElEaXJlY3QzRERl
dmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICBIUkVTVUxUIGhy
ID0gZGV2aWNlLT5TZXRTdHJlYW1Tb3VyY2UoMCwgbVF1YWRWZXJ0ZXhCdWZmZXIsIDAsIDIgKiBz
aXplb2YoZmxvYXQpKTsKKyAgICBociA9IGRldmljZS0+U2V0VmVydGV4RGVjbGFyYXRpb24obVF1
YWRWZXJ0ZXhEZWNsYXJhdGlvbik7CisKKyAgICBtUmVuZGVyZXItPnN0YXJ0U2NlbmUoKTsKKyAg
ICBociA9IGRldmljZS0+RHJhd1ByaW1pdGl2ZShEM0RQVF9UUklBTkdMRVNUUklQLCAwLCAyKTsK
K30KKwordm9pZCBCbGl0OjpzYXZlU3RhdGUoKQoreworICAgIElEaXJlY3QzRERldmljZTkgKmRl
dmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICBIUkVTVUxUIGhyOworCisgICAg
ZGV2aWNlLT5HZXREZXB0aFN0ZW5jaWxTdXJmYWNlKCZtU2F2ZWREZXB0aFN0ZW5jaWwpOworICAg
IGRldmljZS0+R2V0UmVuZGVyVGFyZ2V0KDAsICZtU2F2ZWRSZW5kZXJUYXJnZXQpOworCisgICAg
aWYgKG1TYXZlZFN0YXRlQmxvY2sgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIGhyID0gZGV2aWNl
LT5CZWdpblN0YXRlQmxvY2soKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikgfHwgaHIg
PT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgaHIgPT0gRV9PVVRPRk1FTU9SWSk7CisKKyAg
ICAgICAgc2V0Q29tbW9uQmxpdFN0YXRlKCk7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGZsb2F0
IGR1bW15Q29uc3RbNF0gPSB7IDAsIDAsIDAsIDAgfTsKKworICAgICAgICBkZXZpY2UtPlNldFZl
cnRleFNoYWRlcihOVUxMKTsKKyAgICAgICAgZGV2aWNlLT5TZXRWZXJ0ZXhTaGFkZXJDb25zdGFu
dEYoMCwgZHVtbXlDb25zdCwgMSk7CisgICAgICAgIGRldmljZS0+U2V0UGl4ZWxTaGFkZXIoTlVM
TCk7CisgICAgICAgIGRldmljZS0+U2V0UGl4ZWxTaGFkZXJDb25zdGFudEYoMCwgZHVtbXlDb25z
dCwgMSk7CisKKyAgICAgICAgRDNEVklFV1BPUlQ5IGR1bW15VnA7CisgICAgICAgIGR1bW15VnAu
WCA9IDA7CisgICAgICAgIGR1bW15VnAuWSA9IDA7CisgICAgICAgIGR1bW15VnAuV2lkdGggPSAx
OworICAgICAgICBkdW1teVZwLkhlaWdodCA9IDE7CisgICAgICAgIGR1bW15VnAuTWluWiA9IDA7
CisgICAgICAgIGR1bW15VnAuTWF4WiA9IDE7CisKKyAgICAgICAgZGV2aWNlLT5TZXRWaWV3cG9y
dCgmZHVtbXlWcCk7CisKKyAgICAgICAgZGV2aWNlLT5TZXRUZXh0dXJlKDAsIE5VTEwpOworCisg
ICAgICAgIGRldmljZS0+U2V0U3RyZWFtU291cmNlKDAsIG1RdWFkVmVydGV4QnVmZmVyLCAwLCAw
KTsKKworICAgICAgICBkZXZpY2UtPlNldFZlcnRleERlY2xhcmF0aW9uKG1RdWFkVmVydGV4RGVj
bGFyYXRpb24pOworCisgICAgICAgIGhyID0gZGV2aWNlLT5FbmRTdGF0ZUJsb2NrKCZtU2F2ZWRT
dGF0ZUJsb2NrKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikgfHwgaHIgPT0gRDNERVJS
X09VVE9GVklERU9NRU1PUlkgfHwgaHIgPT0gRV9PVVRPRk1FTU9SWSk7CisgICAgfQorCisgICAg
QVNTRVJUKG1TYXZlZFN0YXRlQmxvY2sgIT0gTlVMTCk7CisKKyAgICBpZiAobVNhdmVkU3RhdGVC
bG9jayAhPSBOVUxMKQorICAgIHsKKyAgICAgICAgaHIgPSBtU2F2ZWRTdGF0ZUJsb2NrLT5DYXB0
dXJlKCk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKKyAgICB9Cit9CisKK3ZvaWQg
QmxpdDo6cmVzdG9yZVN0YXRlKCkKK3sKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBt
UmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgZGV2aWNlLT5TZXREZXB0aFN0ZW5jaWxTdXJm
YWNlKG1TYXZlZERlcHRoU3RlbmNpbCk7CisgICAgaWYgKG1TYXZlZERlcHRoU3RlbmNpbCAhPSBO
VUxMKQorICAgIHsKKyAgICAgICAgbVNhdmVkRGVwdGhTdGVuY2lsLT5SZWxlYXNlKCk7CisgICAg
ICAgIG1TYXZlZERlcHRoU3RlbmNpbCA9IE5VTEw7CisgICAgfQorCisgICAgZGV2aWNlLT5TZXRS
ZW5kZXJUYXJnZXQoMCwgbVNhdmVkUmVuZGVyVGFyZ2V0KTsKKyAgICBpZiAobVNhdmVkUmVuZGVy
VGFyZ2V0ICE9IE5VTEwpCisgICAgeworICAgICAgICBtU2F2ZWRSZW5kZXJUYXJnZXQtPlJlbGVh
c2UoKTsKKyAgICAgICAgbVNhdmVkUmVuZGVyVGFyZ2V0ID0gTlVMTDsKKyAgICB9CisKKyAgICBB
U1NFUlQobVNhdmVkU3RhdGVCbG9jayAhPSBOVUxMKTsKKworICAgIGlmIChtU2F2ZWRTdGF0ZUJs
b2NrICE9IE5VTEwpCisgICAgeworICAgICAgICBtU2F2ZWRTdGF0ZUJsb2NrLT5BcHBseSgpOwor
ICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9CbGl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CbGl0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw5NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gQmxpdC5jcHA6IFN1cmZh
Y2UgY29weSB1dGlsaXR5IGNsYXNzLgorCisjaWZuZGVmIExJQkdMRVNWMl9CTElUX0hfCisjZGVm
aW5lIExJQkdMRVNWMl9CTElUX0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgor
CituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIEZyYW1lYnVmZmVyOworfQorCituYW1lc3BhY2UgcngK
K3sKK2NsYXNzIFJlbmRlcmVyOTsKK2NsYXNzIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ7Citj
bGFzcyBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmU7CisKK2NsYXNzIEJsaXQKK3sKKyAgcHVi
bGljOgorICAgIGV4cGxpY2l0IEJsaXQoUmVuZGVyZXI5ICpyZW5kZXJlcik7CisgICAgfkJsaXQo
KTsKKworICAgIC8vIENvcHkgZnJvbSBzb3VyY2Ugc3VyZmFjZSB0byBkZXN0IHN1cmZhY2UuCisg
ICAgLy8gc291cmNlUmVjdCwgeG9mZnNldCwgeW9mZnNldCBhcmUgaW4gRDNEIGNvb3JkaW5hdGVz
ICgwLDAgaW4gdXBwZXItbGVmdCkKKyAgICBib29sIGNvcHkoZ2w6OkZyYW1lYnVmZmVyICpmcmFt
ZWJ1ZmZlciwgY29uc3QgUkVDVCAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsIEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3Jh
Z2UsIEdMaW50IGxldmVsKTsKKyAgICBib29sIGNvcHkoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1
ZmZlciwgY29uc3QgUkVDVCAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsIEdMaW50IHhv
ZmZzZXQsIEdMaW50IHlvZmZzZXQsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSAqc3RvcmFn
ZSwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpOworCisgICAgLy8gQ29weSBmcm9tIHNvdXJj
ZSBzdXJmYWNlIHRvIGRlc3Qgc3VyZmFjZS4KKyAgICAvLyBzb3VyY2VSZWN0LCB4b2Zmc2V0LCB5
b2Zmc2V0IGFyZSBpbiBEM0QgY29vcmRpbmF0ZXMgKDAsMCBpbiB1cHBlci1sZWZ0KQorICAgIC8v
IHNvdXJjZSBpcyBpbnRlcnByZXRlZCBhcyBSR0JBIGFuZCBkZXN0Rm9ybWF0IHNwZWNpZmllcyB0
aGUgZGVzaXJlZCByZXN1bHQgZm9ybWF0LiBGb3IgZXhhbXBsZSwgaWYgZGVzdEZvcm1hdCA9IEdM
X1JHQiwgdGhlIGFscGhhIGNoYW5uZWwgd2lsbCBiZSBmb3JjZWQgdG8gMC4KKyAgICBib29sIGZv
cm1hdENvbnZlcnQoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgY29uc3QgUkVDVCAmc291cmNl
UmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIElE
aXJlY3QzRFN1cmZhY2U5ICpkZXN0KTsKKworICAgIC8vIDJ4MiBib3ggZmlsdGVyIHNhbXBsZSBm
cm9tIHNvdXJjZSB0byBkZXN0LgorICAgIC8vIFJlcXVpcmVzIHRoYXQgc291cmNlIGlzIFJHQihB
KSBhbmQgZGVzdCBoYXMgdGhlIHNhbWUgZm9ybWF0IGFzIHNvdXJjZS4KKyAgICBib29sIGJveEZp
bHRlcihJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlLCBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCk7
CisKKyAgcHJpdmF0ZToKKyAgICByeDo6UmVuZGVyZXI5ICptUmVuZGVyZXI7CisKKyAgICBJRGly
ZWN0M0RWZXJ0ZXhCdWZmZXI5ICptUXVhZFZlcnRleEJ1ZmZlcjsKKyAgICBJRGlyZWN0M0RWZXJ0
ZXhEZWNsYXJhdGlvbjkgKm1RdWFkVmVydGV4RGVjbGFyYXRpb247CisKKyAgICB2b2lkIGluaXRH
ZW9tZXRyeSgpOworCisgICAgYm9vbCBzZXRGb3JtYXRDb252ZXJ0U2hhZGVycyhHTGVudW0gZGVz
dEZvcm1hdCk7CisKKyAgICBib29sIGNvcHkoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgY29u
c3QgUkVDVCAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0KTsKKyAgICBJRGlyZWN0M0RUZXh0
dXJlOSAqY29weVN1cmZhY2VUb1RleHR1cmUoSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UsIGNv
bnN0IFJFQ1QgJnNvdXJjZVJlY3QpOworICAgIHZvaWQgc2V0Vmlld3BvcnQoY29uc3QgUkVDVCAm
c291cmNlUmVjdCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCk7CisgICAgdm9pZCBzZXRD
b21tb25CbGl0U3RhdGUoKTsKKyAgICBSRUNUIGdldFN1cmZhY2VSZWN0KElEaXJlY3QzRFN1cmZh
Y2U5ICpzdXJmYWNlKSBjb25zdDsKKworICAgIC8vIFRoaXMgZW51bSBpcyB1c2VkIHRvIGluZGV4
IG1Db21waWxlZFNoYWRlcnMgYW5kIG1TaGFkZXJTb3VyY2UuCisgICAgZW51bSBTaGFkZXJJZAor
ICAgIHsKKyAgICAgICAgU0hBREVSX1ZTX1NUQU5EQVJELAorICAgICAgICBTSEFERVJfVlNfRkxJ
UFksCisgICAgICAgIFNIQURFUl9QU19QQVNTVEhST1VHSCwKKyAgICAgICAgU0hBREVSX1BTX0xV
TUlOQU5DRSwKKyAgICAgICAgU0hBREVSX1BTX0NPTVBPTkVOVE1BU0ssCisgICAgICAgIFNIQURF
Ul9DT1VOVAorICAgIH07CisKKyAgICAvLyBUaGlzIGFjdHVhbGx5IGNvbnRhaW5zIElEaXJlY3Qz
RFZlcnRleFNoYWRlcjkgb3IgSURpcmVjdDNEUGl4ZWxTaGFkZXI5IGNhc3RlZCB0byBJVW5rbm93
bi4KKyAgICBJVW5rbm93biAqbUNvbXBpbGVkU2hhZGVyc1tTSEFERVJfQ09VTlRdOworCisgICAg
dGVtcGxhdGUgPGNsYXNzIEQzRFNoYWRlclR5cGU+CisgICAgYm9vbCBzZXRTaGFkZXIoU2hhZGVy
SWQgc291cmNlLCBjb25zdCBjaGFyICpwcm9maWxlLAorICAgICAgICAgICAgICAgICAgIEQzRFNo
YWRlclR5cGUgKihSZW5kZXJlcjk6OipjcmVhdGVTaGFkZXIpKGNvbnN0IERXT1JEICosIHNpemVf
dCBsZW5ndGgpLAorICAgICAgICAgICAgICAgICAgIEhSRVNVTFQgKFdJTkFQSSBJRGlyZWN0M0RE
ZXZpY2U5Ojoqc2V0U2hhZGVyKShEM0RTaGFkZXJUeXBlKikpOworCisgICAgYm9vbCBzZXRWZXJ0
ZXhTaGFkZXIoU2hhZGVySWQgc2hhZGVyKTsKKyAgICBib29sIHNldFBpeGVsU2hhZGVyKFNoYWRl
cklkIHNoYWRlcik7CisgICAgdm9pZCByZW5kZXIoKTsKKworICAgIHZvaWQgc2F2ZVN0YXRlKCk7
CisgICAgdm9pZCByZXN0b3JlU3RhdGUoKTsKKyAgICBJRGlyZWN0M0RTdGF0ZUJsb2NrOSAqbVNh
dmVkU3RhdGVCbG9jazsKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqbVNhdmVkUmVuZGVyVGFyZ2V0
OworICAgIElEaXJlY3QzRFN1cmZhY2U5ICptU2F2ZWREZXB0aFN0ZW5jaWw7CisKKyAgICBESVNB
TExPV19DT1BZX0FORF9BU1NJR04oQmxpdCk7Cit9OworfQorCisjZW5kaWYgICAvLyBMSUJHTEVT
VjJfQkxJVF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L0J1ZmZlclN0b3JhZ2U5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OCBAQAorI2luY2x1
ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gQnVmZmVyU3RvcmFnZTkuY3Bw
IERlZmluZXMgdGhlIEJ1ZmZlclN0b3JhZ2U5IGNsYXNzLgorCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2U5LmgiCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisK
K25hbWVzcGFjZSByeAoreworCitCdWZmZXJTdG9yYWdlOTo6QnVmZmVyU3RvcmFnZTkoKQorewor
ICAgIG1NZW1vcnkgPSBOVUxMOworICAgIG1BbGxvY2F0ZWRTaXplID0gMDsKKyAgICBtU2l6ZSA9
IDA7Cit9CisKK0J1ZmZlclN0b3JhZ2U5Ojp+QnVmZmVyU3RvcmFnZTkoKQoreworICAgIGRlbGV0
ZVtdIG1NZW1vcnk7Cit9CisKK0J1ZmZlclN0b3JhZ2U5ICpCdWZmZXJTdG9yYWdlOTo6bWFrZUJ1
ZmZlclN0b3JhZ2U5KEJ1ZmZlclN0b3JhZ2UgKmJ1ZmZlclN0b3JhZ2UpCit7CisgICAgQVNTRVJU
KEhBU19EWU5BTUlDX1RZUEUoQnVmZmVyU3RvcmFnZTkqLCBidWZmZXJTdG9yYWdlKSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEJ1ZmZlclN0b3JhZ2U5Kj4oYnVmZmVyU3RvcmFnZSk7Cit9CisK
K3ZvaWQgKkJ1ZmZlclN0b3JhZ2U5OjpnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gbU1lbW9yeTsK
K30KKwordm9pZCBCdWZmZXJTdG9yYWdlOTo6c2V0RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNp
Z25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICBpZiAoIW1NZW1vcnkg
fHwgb2Zmc2V0ICsgc2l6ZSA+IG1BbGxvY2F0ZWRTaXplKQorICAgIHsKKyAgICAgICAgdW5zaWdu
ZWQgaW50IG5ld0FsbG9jYXRlZFNpemUgPSBvZmZzZXQgKyBzaXplOworICAgICAgICB2b2lkICpu
ZXdNZW1vcnkgPSBuZXcgY2hhcltuZXdBbGxvY2F0ZWRTaXplXTsKKworICAgICAgICBpZiAob2Zm
c2V0ID4gMCAmJiBtTWVtb3J5ICYmIG1BbGxvY2F0ZWRTaXplID4gMCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbWVtY3B5KG5ld01lbW9yeSwgbU1lbW9yeSwgc3RkOjptaW4ob2Zmc2V0LCBtQWxs
b2NhdGVkU2l6ZSkpOworICAgICAgICB9CisKKyAgICAgICAgZGVsZXRlW10gbU1lbW9yeTsKKyAg
ICAgICAgbU1lbW9yeSA9IG5ld01lbW9yeTsKKyAgICAgICAgbUFsbG9jYXRlZFNpemUgPSBuZXdB
bGxvY2F0ZWRTaXplOworICAgIH0KKworICAgIG1TaXplID0gc3RkOjptYXgobVNpemUsIG9mZnNl
dCArIHNpemUpOworICAgIGlmIChkYXRhKQorICAgIHsKKyAgICAgICAgbWVtY3B5KHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KG1NZW1vcnkpICsgb2Zmc2V0LCBkYXRhLCBzaXplKTsKKyAgICB9Cit9
CisKK3ZvaWQgQnVmZmVyU3RvcmFnZTk6OmNsZWFyKCkKK3sKKyAgICBtU2l6ZSA9IDA7Cit9CisK
K3Vuc2lnbmVkIGludCBCdWZmZXJTdG9yYWdlOTo6Z2V0U2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1TaXplOworfQorCitib29sIEJ1ZmZlclN0b3JhZ2U5OjpzdXBwb3J0c0RpcmVjdEJpbmRp
bmcoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvQnVmZmVyU3RvcmFnZTkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTkuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0MiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJ1ZmZlclN0b3JhZ2U5LmggRGVm
aW5lcyB0aGUgQnVmZmVyU3RvcmFnZTkgY2xhc3MuCisKKyNpZm5kZWYgTElCR0xFU1YyX1JFTkRF
UkVSX0JVRkZFUlNUT1JBR0U5X0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9CVUZGRVJT
VE9SQUdFOV9IXworCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2Uu
aCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEJ1ZmZlclN0b3JhZ2U5IDogcHVibGljIEJ1
ZmZlclN0b3JhZ2UKK3sKKyAgcHVibGljOgorICAgIEJ1ZmZlclN0b3JhZ2U5KCk7CisgICAgdmly
dHVhbCB+QnVmZmVyU3RvcmFnZTkoKTsKKworICAgIHN0YXRpYyBCdWZmZXJTdG9yYWdlOSAqbWFr
ZUJ1ZmZlclN0b3JhZ2U5KEJ1ZmZlclN0b3JhZ2UgKmJ1ZmZlclN0b3JhZ2UpOworCisgICAgdmly
dHVhbCB2b2lkICpnZXREYXRhKCk7CisgICAgdmlydHVhbCB2b2lkIHNldERhdGEoY29uc3Qgdm9p
ZCogZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGludCBvZmZzZXQpOworICAgIHZp
cnR1YWwgdm9pZCBjbGVhcigpOworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNpemUoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEaXJlY3RCaW5kaW5nKCkgY29uc3Q7CisK
KyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oQnVmZmVyU3RvcmFnZTkp
OworCisgICAgdm9pZCAqbU1lbW9yeTsKKyAgICB1bnNpZ25lZCBpbnQgbUFsbG9jYXRlZFNpemU7
CisKKyAgICB1bnNpZ25lZCBpbnQgbVNpemU7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVT
VjJfUkVOREVSRVJfQlVGRkVSU1RPUkFHRTlfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZl
clN0b3JhZ2UxMS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2UxMS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzU4IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBCdWZmZXJTdG9yYWdlMTEuY3BwIERlZmluZXMgdGhlIEJ1ZmZlclN0b3JhZ2UxMSBjbGFz
cy4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEuaCIKKyNp
bmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9S
ZW5kZXJlcjExLmgiCisKK25hbWVzcGFjZSByeAoreworCitCdWZmZXJTdG9yYWdlMTE6OkJ1ZmZl
clN0b3JhZ2UxMShSZW5kZXJlcjExICpyZW5kZXJlcikKK3sKKyAgICBtUmVuZGVyZXIgPSByZW5k
ZXJlcjsKKworICAgIG1TdGFnaW5nQnVmZmVyID0gTlVMTDsKKyAgICBtU3RhZ2luZ0J1ZmZlclNp
emUgPSAwOworCisgICAgbUJ1ZmZlciA9IE5VTEw7CisgICAgbUJ1ZmZlclNpemUgPSAwOworCisg
ICAgbVNpemUgPSAwOworCisgICAgbVJlc29sdmVkRGF0YSA9IE5VTEw7CisgICAgbVJlc29sdmVk
RGF0YVNpemUgPSAwOworICAgIG1SZXNvbHZlZERhdGFWYWxpZCA9IGZhbHNlOworCisgICAgbVJl
YWRVc2FnZUNvdW50ID0gMDsKKyAgICBtV3JpdGVVc2FnZUNvdW50ID0gMDsKK30KKworQnVmZmVy
U3RvcmFnZTExOjp+QnVmZmVyU3RvcmFnZTExKCkKK3sKKyAgICBpZiAobVN0YWdpbmdCdWZmZXIp
CisgICAgeworICAgICAgICBtU3RhZ2luZ0J1ZmZlci0+UmVsZWFzZSgpOworICAgICAgICBtU3Rh
Z2luZ0J1ZmZlciA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1CdWZmZXIpCisgICAgeworICAg
ICAgICBtQnVmZmVyLT5SZWxlYXNlKCk7CisgICAgICAgIG1CdWZmZXIgPSBOVUxMOworICAgIH0K
KworICAgIGlmIChtUmVzb2x2ZWREYXRhKQorICAgIHsKKyAgICAgICAgZnJlZShtUmVzb2x2ZWRE
YXRhKTsKKyAgICAgICAgbVJlc29sdmVkRGF0YSA9IE5VTEw7CisgICAgfQorfQorCitCdWZmZXJT
dG9yYWdlMTEgKkJ1ZmZlclN0b3JhZ2UxMTo6bWFrZUJ1ZmZlclN0b3JhZ2UxMShCdWZmZXJTdG9y
YWdlICpidWZmZXJTdG9yYWdlKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKEJ1ZmZl
clN0b3JhZ2UxMSosIGJ1ZmZlclN0b3JhZ2UpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QnVm
ZmVyU3RvcmFnZTExKj4oYnVmZmVyU3RvcmFnZSk7Cit9CisKK3ZvaWQgKkJ1ZmZlclN0b3JhZ2Ux
MTo6Z2V0RGF0YSgpCit7CisgICAgaWYgKCFtUmVzb2x2ZWREYXRhVmFsaWQpCisgICAgeworICAg
ICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAg
ICAgIElEM0QxMURldmljZUNvbnRleHQgKmNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNv
bnRleHQoKTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQ7CisKKyAgICAgICAgaWYgKCFtU3RhZ2lu
Z0J1ZmZlciB8fCBtU3RhZ2luZ0J1ZmZlclNpemUgPCBtQnVmZmVyU2l6ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKG1TdGFnaW5nQnVmZmVyKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIG1TdGFnaW5nQnVmZmVyLT5SZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgbVN0YWdp
bmdCdWZmZXIgPSBOVUxMOworICAgICAgICAgICAgICAgIG1TdGFnaW5nQnVmZmVyU2l6ZSA9IDA7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEQzRDExX0JVRkZFUl9ERVNDIGJ1ZmZlckRl
c2M7CisgICAgICAgICAgICBidWZmZXJEZXNjLkJ5dGVXaWR0aCA9IG1TaXplOworICAgICAgICAg
ICAgYnVmZmVyRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX1NUQUdJTkc7CisgICAgICAgICAgICBi
dWZmZXJEZXNjLkJpbmRGbGFncyA9IDA7CisgICAgICAgICAgICBidWZmZXJEZXNjLkNQVUFjY2Vz
c0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VTU19SRUFEIHwgRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsK
KyAgICAgICAgICAgIGJ1ZmZlckRlc2MuTWlzY0ZsYWdzID0gMDsKKyAgICAgICAgICAgIGJ1ZmZl
ckRlc2MuU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IGRl
dmljZS0+Q3JlYXRlQnVmZmVyKCZidWZmZXJEZXNjLCBOVUxMLCAmbVN0YWdpbmdCdWZmZXIpOwor
ICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgKHZvaWQqKU5VTEwpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtU3RhZ2luZ0J1ZmZlclNpemUgPSBidWZmZXJE
ZXNjLkJ5dGVXaWR0aDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbVJlc29sdmVkRGF0YSB8
fCBtUmVzb2x2ZWREYXRhU2l6ZSA8IG1CdWZmZXJTaXplKQorICAgICAgICB7CisgICAgICAgICAg
ICBmcmVlKG1SZXNvbHZlZERhdGEpOworICAgICAgICAgICAgbVJlc29sdmVkRGF0YSA9IG1hbGxv
YyhtU2l6ZSk7CisgICAgICAgICAgICBtUmVzb2x2ZWREYXRhU2l6ZSA9IG1TaXplOworICAgICAg
ICB9CisKKyAgICAgICAgRDNEMTFfQk9YIHNyY0JveDsKKyAgICAgICAgc3JjQm94LmxlZnQgPSAw
OworICAgICAgICBzcmNCb3gucmlnaHQgPSBtU2l6ZTsKKyAgICAgICAgc3JjQm94LnRvcCA9IDA7
CisgICAgICAgIHNyY0JveC5ib3R0b20gPSAxOworICAgICAgICBzcmNCb3guZnJvbnQgPSAwOwor
ICAgICAgICBzcmNCb3guYmFjayA9IDE7CisKKyAgICAgICAgY29udGV4dC0+Q29weVN1YnJlc291
cmNlUmVnaW9uKG1TdGFnaW5nQnVmZmVyLCAwLCAwLCAwLCAwLCBtQnVmZmVyLCAwLCAmc3JjQm94
KTsKKworICAgICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7Cisg
ICAgICAgIHJlc3VsdCA9IGNvbnRleHQtPk1hcChtU3RhZ2luZ0J1ZmZlciwgMCwgRDNEMTFfTUFQ
X1JFQUQsIDAsICZtYXBwZWRSZXNvdXJjZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
LCAodm9pZCopTlVMTCk7CisgICAgICAgIH0KKworICAgICAgICBtZW1jcHkobVJlc29sdmVkRGF0
YSwgbWFwcGVkUmVzb3VyY2UucERhdGEsIG1TaXplKTsKKworICAgICAgICBjb250ZXh0LT5Vbm1h
cChtU3RhZ2luZ0J1ZmZlciwgMCk7CisKKyAgICAgICAgbVJlc29sdmVkRGF0YVZhbGlkID0gdHJ1
ZTsKKyAgICB9CisKKyAgICBtUmVhZFVzYWdlQ291bnQgPSAwOworCisgICAgcmV0dXJuIG1SZXNv
bHZlZERhdGE7Cit9CisKK3ZvaWQgQnVmZmVyU3RvcmFnZTExOjpzZXREYXRhKGNvbnN0IHZvaWQq
IGRhdGEsIHVuc2lnbmVkIGludCBzaXplLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworICAgIElE
M0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKyAgICBJRDNEMTFE
ZXZpY2VDb250ZXh0ICpjb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7Cisg
ICAgSFJFU1VMVCByZXN1bHQ7CisKKyAgICB1bnNpZ25lZCBpbnQgcmVxdWlyZWRCdWZmZXJTaXpl
ID0gc2l6ZSArIG9mZnNldDsKKyAgICB1bnNpZ25lZCBpbnQgcmVxdWlyZWRTdGFnaW5nU2l6ZSA9
IHNpemU7CisgICAgYm9vbCBkaXJlY3RJbml0aWFsaXphdGlvbiA9IG9mZnNldCA9PSAwICYmICgh
bUJ1ZmZlciB8fCBtQnVmZmVyU2l6ZSA8IHNpemUgKyBvZmZzZXQpOworCisgICAgaWYgKCFkaXJl
Y3RJbml0aWFsaXphdGlvbikKKyAgICB7CisgICAgICAgIGlmICghbVN0YWdpbmdCdWZmZXIgfHwg
bVN0YWdpbmdCdWZmZXJTaXplIDwgcmVxdWlyZWRTdGFnaW5nU2l6ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKG1TdGFnaW5nQnVmZmVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG1TdGFnaW5nQnVmZmVyLT5SZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgbVN0YWdpbmdC
dWZmZXIgPSBOVUxMOworICAgICAgICAgICAgICAgIG1TdGFnaW5nQnVmZmVyU2l6ZSA9IDA7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEQzRDExX0JVRkZFUl9ERVNDIGJ1ZmZlckRlc2M7
CisgICAgICAgICAgICBidWZmZXJEZXNjLkJ5dGVXaWR0aCA9IHNpemU7CisgICAgICAgICAgICBi
dWZmZXJEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfU1RBR0lORzsKKyAgICAgICAgICAgIGJ1ZmZl
ckRlc2MuQmluZEZsYWdzID0gMDsKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MuQ1BVQWNjZXNzRmxh
Z3MgPSBEM0QxMV9DUFVfQUNDRVNTX1JFQUQgfCBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOworICAg
ICAgICAgICAgYnVmZmVyRGVzYy5NaXNjRmxhZ3MgPSAwOworICAgICAgICAgICAgYnVmZmVyRGVz
Yy5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0gMDsKKworICAgICAgICAgICAgaWYgKGRhdGEpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgRDNEMTFfU1VCUkVTT1VSQ0VfREFUQSBpbml0aWFs
RGF0YTsKKyAgICAgICAgICAgICAgICBpbml0aWFsRGF0YS5wU3lzTWVtID0gZGF0YTsKKyAgICAg
ICAgICAgICAgICBpbml0aWFsRGF0YS5TeXNNZW1QaXRjaCA9IHNpemU7CisgICAgICAgICAgICAg
ICAgaW5pdGlhbERhdGEuU3lzTWVtU2xpY2VQaXRjaCA9IDA7CisKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmYnVmZmVyRGVzYywgJmluaXRpYWxEYXRhLCAm
bVN0YWdpbmdCdWZmZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZi
dWZmZXJEZXNjLCBOVUxMLCAmbVN0YWdpbmdCdWZmZXIpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgbVN0YWdpbmdCdWZmZXJTaXplID0gc2l6ZTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIGlmIChkYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBEM0QxMV9NQVBQRURfU1VC
UkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7CisgICAgICAgICAgICByZXN1bHQgPSBjb250ZXh0LT5N
YXAobVN0YWdpbmdCdWZmZXIsIDAsIEQzRDExX01BUF9XUklURSwgMCwgJm1hcHBlZFJlc291cmNl
KTsKKyAgICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBtZW1jcHkobWFwcGVkUmVzb3VyY2UucERhdGEsIGRhdGEsIHNp
emUpOworCisgICAgICAgICAgICBjb250ZXh0LT5Vbm1hcChtU3RhZ2luZ0J1ZmZlciwgMCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1CdWZmZXIgfHwgbUJ1ZmZlclNpemUgPCBzaXpl
ICsgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgYnVmZmVyRGVzYzsK
KyAgICAgICAgYnVmZmVyRGVzYy5CeXRlV2lkdGggPSByZXF1aXJlZEJ1ZmZlclNpemU7CisgICAg
ICAgIGJ1ZmZlckRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOworICAgICAgICBidWZm
ZXJEZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfVkVSVEVYX0JVRkZFUiB8IEQzRDExX0JJTkRf
SU5ERVhfQlVGRkVSOworICAgICAgICBidWZmZXJEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gMDsKKyAg
ICAgICAgYnVmZmVyRGVzYy5NaXNjRmxhZ3MgPSAwOworICAgICAgICBidWZmZXJEZXNjLlN0cnVj
dHVyZUJ5dGVTdHJpZGUgPSAwOworCisgICAgICAgIGlmIChkaXJlY3RJbml0aWFsaXphdGlvbikK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gU2luY2UgdGhlIGRhdGEgd2lsbCBmaWxsIHRoZSBl
bnRpcmUgYnVmZmVyIChiZWluZyBsYXJnZXIgdGhhbiB0aGUgaW5pdGlhbCBzaXplIGFuZCBoYXZp
bmcKKyAgICAgICAgICAgIC8vIG5vIG9mZnNldCksIHRoZSBidWZmZXIgY2FuIGJlIGluaXRpYWxp
emVkIHdpdGggdGhlIGRhdGEgc28gbm8gc3RhZ2luZyBidWZmZXIgaXMgcmVxdWlyZWQKKworICAg
ICAgICAgICAgLy8gTm8gbG9uZ2VyIG5lZWQgdGhlIG9sZCBidWZmZXIKKyAgICAgICAgICAgIGlm
IChtQnVmZmVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1CdWZmZXItPlJlbGVh
c2UoKTsKKyAgICAgICAgICAgICAgICBtQnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgICAgICBt
QnVmZmVyU2l6ZSA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkYXRhKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEQzRDExX1NVQlJFU09VUkNFX0RBVEEgaW5p
dGlhbERhdGE7CisgICAgICAgICAgICAgICAgaW5pdGlhbERhdGEucFN5c01lbSA9IGRhdGE7Cisg
ICAgICAgICAgICAgICAgaW5pdGlhbERhdGEuU3lzTWVtUGl0Y2ggPSBzaXplOworICAgICAgICAg
ICAgICAgIGluaXRpYWxEYXRhLlN5c01lbVNsaWNlUGl0Y2ggPSAwOworCisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVCdWZmZXIoJmJ1ZmZlckRlc2MsICZpbml0aWFsRGF0
YSwgJm1CdWZmZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZidWZm
ZXJEZXNjLCBOVUxMLCAmbUJ1ZmZlcik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UgaWYgKG1CdWZmZXIgJiYgb2Zmc2V0ID4gMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgLy8gSWYgb2Zmc2V0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCB0aGUgYnVmZmVyIGlz
IG5vbi1udWxsLCBuZWVkIHRvIHByZXNlcnZlIHRoZSBkYXRhIGZyb20KKyAgICAgICAgICAgIC8v
IHRoZSBvbGQgYnVmZmVyIHVwIHRvIG9mZnNldAorICAgICAgICAgICAgSUQzRDExQnVmZmVyICpu
ZXdCdWZmZXIgPSBOVUxMOworCisgICAgICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUJ1
ZmZlcigmYnVmZmVyRGVzYywgTlVMTCwgJm5ld0J1ZmZlcik7CisgICAgICAgICAgICBpZiAoRkFJ
TEVEKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRDNE
MTFfQk9YIHNyY0JveDsKKyAgICAgICAgICAgIHNyY0JveC5sZWZ0ID0gMDsKKyAgICAgICAgICAg
IHNyY0JveC5yaWdodCA9IHN0ZDo6bWluKG9mZnNldCwgbUJ1ZmZlclNpemUpOworICAgICAgICAg
ICAgc3JjQm94LnRvcCA9IDA7CisgICAgICAgICAgICBzcmNCb3guYm90dG9tID0gMTsKKyAgICAg
ICAgICAgIHNyY0JveC5mcm9udCA9IDA7CisgICAgICAgICAgICBzcmNCb3guYmFjayA9IDE7CisK
KyAgICAgICAgICAgIGNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihuZXdCdWZmZXIsIDAs
IDAsIDAsIDAsIG1CdWZmZXIsIDAsICZzcmNCb3gpOworCisgICAgICAgICAgICBtQnVmZmVyLT5S
ZWxlYXNlKCk7CisgICAgICAgICAgICBtQnVmZmVyID0gbmV3QnVmZmVyOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgLy8gU2ltcGxlIGNhc2UsIG5vdGhp
bmcgbmVlZHMgdG8gYmUgY29waWVkIGZyb20gdGhlIG9sZCBidWZmZXIgdG8gdGhlIG5ldyBvbmUs
IGp1c3QgY3JlYXRlCisgICAgICAgICAgICAvLyBhIG5ldyBidWZmZXIKKworICAgICAgICAgICAg
Ly8gTm8gbG9uZ2VyIG5lZWQgdGhlIG9sZCBidWZmZXIKKyAgICAgICAgICAgIGlmIChtQnVmZmVy
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1CdWZmZXItPlJlbGVhc2UoKTsKKyAg
ICAgICAgICAgICAgICBtQnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgICAgICBtQnVmZmVyU2l6
ZSA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBidWZm
ZXIgZm9yIGRhdGEgc3RvcmFnZQorICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVC
dWZmZXIoJmJ1ZmZlckRlc2MsIE5VTEwsICZtQnVmZmVyKTsKKyAgICAgICAgICAgIGlmIChGQUlM
RUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgdXBkYXRlU2VyaWFsKCk7CisgICAgICAgIG1CdWZmZXJTaXplID0gYnVmZmVyRGVzYy5CeXRl
V2lkdGg7CisgICAgfQorCisgICAgaWYgKCFkaXJlY3RJbml0aWFsaXphdGlvbikKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtU3RhZ2luZ0J1ZmZlciAmJiBtU3RhZ2luZ0J1ZmZlclNpemUgPj0gcmVx
dWlyZWRTdGFnaW5nU2l6ZSk7CisKKyAgICAgICAgLy8gRGF0YSBpcyBhbHJlYWR5IHB1dCBpbnRv
IHRoZSBzdGFnaW5nIGJ1ZmZlciwgY29weSBpdCBvdmVyIHRvIHRoZSBkYXRhIGJ1ZmZlcgorICAg
ICAgICBEM0QxMV9CT1ggc3JjQm94OworICAgICAgICBzcmNCb3gubGVmdCA9IDA7CisgICAgICAg
IHNyY0JveC5yaWdodCA9IHNpemU7CisgICAgICAgIHNyY0JveC50b3AgPSAwOworICAgICAgICBz
cmNCb3guYm90dG9tID0gMTsKKyAgICAgICAgc3JjQm94LmZyb250ID0gMDsKKyAgICAgICAgc3Jj
Qm94LmJhY2sgPSAxOworCisgICAgICAgIGNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbiht
QnVmZmVyLCAwLCBvZmZzZXQsIDAsIDAsIG1TdGFnaW5nQnVmZmVyLCAwLCAmc3JjQm94KTsKKyAg
ICB9CisKKyAgICBtU2l6ZSA9IHN0ZDo6bWF4KG1TaXplLCBvZmZzZXQgKyBzaXplKTsKKworICAg
IG1Xcml0ZVVzYWdlQ291bnQgPSAwOworCisgICAgbVJlc29sdmVkRGF0YVZhbGlkID0gZmFsc2U7
Cit9CisKK3ZvaWQgQnVmZmVyU3RvcmFnZTExOjpjbGVhcigpCit7CisgICAgbVJlc29sdmVkRGF0
YVZhbGlkID0gZmFsc2U7CisgICAgbVNpemUgPSAwOworfQorCit1bnNpZ25lZCBpbnQgQnVmZmVy
U3RvcmFnZTExOjpnZXRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNpemU7Cit9CisKK2Jv
b2wgQnVmZmVyU3RvcmFnZTExOjpzdXBwb3J0c0RpcmVjdEJpbmRpbmcoKSBjb25zdAoreworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIEJ1ZmZlclN0b3JhZ2UxMTo6bWFya0J1ZmZlclVzYWdl
KCkKK3sKKyAgICBtUmVhZFVzYWdlQ291bnQrKzsKKyAgICBtV3JpdGVVc2FnZUNvdW50Kys7CisK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHVzYWdlTGltaXQgPSA1OworCisgICAgaWYg
KG1SZWFkVXNhZ2VDb3VudCA+IHVzYWdlTGltaXQgJiYgbVJlc29sdmVkRGF0YSkKKyAgICB7Cisg
ICAgICAgIGZyZWUobVJlc29sdmVkRGF0YSk7CisgICAgICAgIG1SZXNvbHZlZERhdGEgPSBOVUxM
OworICAgICAgICBtUmVzb2x2ZWREYXRhU2l6ZSA9IDA7CisgICAgICAgIG1SZXNvbHZlZERhdGFW
YWxpZCA9IGZhbHNlOworICAgIH0KKworICAgIGlmIChtUmVhZFVzYWdlQ291bnQgPiB1c2FnZUxp
bWl0ICYmIG1Xcml0ZVVzYWdlQ291bnQgPiB1c2FnZUxpbWl0ICYmIG1TdGFnaW5nQnVmZmVyKQor
ICAgIHsKKyAgICAgICAgbVN0YWdpbmdCdWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAgbVN0YWdp
bmdCdWZmZXIgPSBOVUxMOworICAgICAgICBtU3RhZ2luZ0J1ZmZlclNpemUgPSAwOworICAgIH0K
K30KKworSUQzRDExQnVmZmVyICpCdWZmZXJTdG9yYWdlMTE6OmdldEJ1ZmZlcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1CdWZmZXI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJT
dG9yYWdlMTEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBCdWZmZXJTdG9yYWdlMTEuaCBEZWZpbmVzIHRo
ZSBCdWZmZXJTdG9yYWdlMTEgY2xhc3MuCisKKyNpZm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX0JV
RkZFUlNUT1JBR0UxMV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJfQlVGRkVSU1RPUkFH
RTExX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZS5oIgor
CituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyMTE7CisKK2NsYXNzIEJ1ZmZlclN0b3Jh
Z2UxMSA6IHB1YmxpYyBCdWZmZXJTdG9yYWdlCit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBC
dWZmZXJTdG9yYWdlMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIpOworICAgIHZpcnR1YWwgfkJ1ZmZl
clN0b3JhZ2UxMSgpOworCisgICAgc3RhdGljIEJ1ZmZlclN0b3JhZ2UxMSAqbWFrZUJ1ZmZlclN0
b3JhZ2UxMShCdWZmZXJTdG9yYWdlICpidWZmZXJTdG9yYWdlKTsKKworICAgIHZpcnR1YWwgdm9p
ZCAqZ2V0RGF0YSgpOworICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKGNvbnN0IHZvaWQqIGRhdGEs
IHVuc2lnbmVkIGludCBzaXplLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KTsKKyAgICB2aXJ0dWFsIHZv
aWQgY2xlYXIoKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRTaXplKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzRGlyZWN0QmluZGluZygpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBtYXJrQnVmZmVyVXNhZ2UoKTsKKworICAgIElEM0QxMUJ1ZmZlciAqZ2V0QnVmZmVy
KCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBSZW5kZXJlcjExICptUmVuZGVyZXI7CisKKyAg
ICBJRDNEMTFCdWZmZXIgKm1TdGFnaW5nQnVmZmVyOworICAgIHVuc2lnbmVkIGludCBtU3RhZ2lu
Z0J1ZmZlclNpemU7CisKKyAgICBJRDNEMTFCdWZmZXIgKm1CdWZmZXI7CisgICAgdW5zaWduZWQg
aW50IG1CdWZmZXJTaXplOworCisgICAgdW5zaWduZWQgaW50IG1TaXplOworCisgICAgdm9pZCAq
bVJlc29sdmVkRGF0YTsKKyAgICB1bnNpZ25lZCBpbnQgbVJlc29sdmVkRGF0YVNpemU7CisgICAg
Ym9vbCBtUmVzb2x2ZWREYXRhVmFsaWQ7CisKKyAgICB1bnNpZ25lZCBpbnQgbVJlYWRVc2FnZUNv
dW50OworICAgIHVuc2lnbmVkIGludCBtV3JpdGVVc2FnZUNvdW50OworfTsKKworfQorCisjZW5k
aWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0JVRkZFUlNUT1JBR0UxMV9IXwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL0J1ZmZlclN0b3JhZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0MCBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gQnVmZmVyU3RvcmFnZS5jcHAgRGVmaW5lcyB0aGUgYWJzdHJhY3QgQnVmZmVy
U3RvcmFnZSBjbGFzcy4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9y
YWdlLmgiCisKK25hbWVzcGFjZSByeAoreworCit1bnNpZ25lZCBpbnQgQnVmZmVyU3RvcmFnZTo6
bU5leHRTZXJpYWwgPSAxOworCitCdWZmZXJTdG9yYWdlOjpCdWZmZXJTdG9yYWdlKCkKK3sKKyAg
ICB1cGRhdGVTZXJpYWwoKTsKK30KKworQnVmZmVyU3RvcmFnZTo6fkJ1ZmZlclN0b3JhZ2UoKQor
eworfQorCit1bnNpZ25lZCBpbnQgQnVmZmVyU3RvcmFnZTo6Z2V0U2VyaWFsKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbVNlcmlhbDsKK30KKwordm9pZCBCdWZmZXJTdG9yYWdlOjp1cGRhdGVTZXJp
YWwoKQoreworICAgIG1TZXJpYWwgPSBtTmV4dFNlcmlhbCsrOworfQorCit2b2lkIEJ1ZmZlclN0
b3JhZ2U6Om1hcmtCdWZmZXJVc2FnZSgpCit7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQnVm
ZmVyU3RvcmFnZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBCdWZmZXJTdG9yYWdlLmggRGVmaW5lcyB0aGUg
YWJzdHJhY3QgQnVmZmVyU3RvcmFnZSBjbGFzcy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVS
RVJfQlVGRkVSU1RPUkFHRV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJfQlVGRkVSU1RP
UkFHRV9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4
Cit7CisKK2NsYXNzIEJ1ZmZlclN0b3JhZ2UKK3sKKyAgcHVibGljOgorICAgIEJ1ZmZlclN0b3Jh
Z2UoKTsKKyAgICB2aXJ0dWFsIH5CdWZmZXJTdG9yYWdlKCk7CisKKyAgICAvLyBUaGUgZGF0YSBy
ZXR1cm5lZCBpcyBvbmx5IGd1YXJhbnRlZWQgdmFsaWQgdW50aWwgbmV4dCBub24tY29uc3QgbWV0
aG9kLgorICAgIHZpcnR1YWwgdm9pZCAqZ2V0RGF0YSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50
IG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpID0gMDsKKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIGludCBnZXRTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0RpcmVjdEJpbmRpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1hcmtCdWZm
ZXJVc2FnZSgpOworICAgIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKKworICBwcm90
ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVTZXJpYWwoKTsKKworICBwcml2YXRlOgorICAgIERJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTihCdWZmZXJTdG9yYWdlKTsKKworICAgIHVuc2lnbmVkIGludCBt
U2VyaWFsOworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgbU5leHRTZXJpYWw7Cit9OworCit9CisK
KyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfQlVGRkVSU1RPUkFHRV9IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvRmVuY2U5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2U5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MzUgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAx
MyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEZlbmNl
OS5jcHA6IERlZmluZXMgdGhlIHJ4OjpGZW5jZTkgY2xhc3MuCisKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvRmVuY2U5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgorCituYW1lc3BhY2UgcngKK3sKKworRmVuY2U5
OjpGZW5jZTkocng6OlJlbmRlcmVyOSAqcmVuZGVyZXIpCit7CisgICAgbVJlbmRlcmVyID0gcmVu
ZGVyZXI7CisgICAgbVF1ZXJ5ID0gTlVMTDsKK30KKworRmVuY2U5Ojp+RmVuY2U5KCkKK3sKKyAg
ICBpZiAobVF1ZXJ5KQorICAgIHsKKyAgICAgICAgbVJlbmRlcmVyLT5mcmVlRXZlbnRRdWVyeSht
UXVlcnkpOworICAgICAgICBtUXVlcnkgPSBOVUxMOworICAgIH0KK30KKworR0xib29sZWFuIEZl
bmNlOTo6aXNGZW5jZSgpCit7CisgICAgLy8gR0xfTlZfZmVuY2Ugc3BlYzoKKyAgICAvLyBBIG5h
bWUgcmV0dXJuZWQgYnkgR2VuRmVuY2VzTlYsIGJ1dCBub3QgeWV0IHNldCB2aWEgU2V0RmVuY2VO
ViwgaXMgbm90IHRoZSBuYW1lIG9mIGFuIGV4aXN0aW5nIGZlbmNlLgorICAgIHJldHVybiBtUXVl
cnkgIT0gTlVMTDsKK30KKwordm9pZCBGZW5jZTk6OnNldEZlbmNlKEdMZW51bSBjb25kaXRpb24p
Cit7CisgICAgaWYgKCFtUXVlcnkpCisgICAgeworICAgICAgICBtUXVlcnkgPSBtUmVuZGVyZXIt
PmFsbG9jYXRlRXZlbnRRdWVyeSgpOworICAgICAgICBpZiAoIW1RdWVyeSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIEhSRVNVTFQgcmVzdWx0ID0gbVF1ZXJ5LT5Jc3N1ZShEM0RJU1NVRV9F
TkQpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICBzZXRDb25kaXRpb24o
Y29uZGl0aW9uKTsKKyAgICBzZXRTdGF0dXMoR0xfRkFMU0UpOworfQorCitHTGJvb2xlYW4gRmVu
Y2U5Ojp0ZXN0RmVuY2UoKQoreworICAgIGlmIChtUXVlcnkgPT0gTlVMTCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIEdMX1RSVUUpOworICAg
IH0KKworICAgIEhSRVNVTFQgcmVzdWx0ID0gbVF1ZXJ5LT5HZXREYXRhKE5VTEwsIDAsIEQzREdF
VERBVEFfRkxVU0gpOworCisgICAgaWYgKGQzZDk6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkp
CisgICAgeworICAgICAgICBtUmVuZGVyZXItPm5vdGlmeURldmljZUxvc3QoKTsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBHTF9UUlVFKTsKKyAgICB9CisKKyAg
ICBBU1NFUlQocmVzdWx0ID09IFNfT0sgfHwgcmVzdWx0ID09IFNfRkFMU0UpOworICAgIHNldFN0
YXR1cyhyZXN1bHQgPT0gU19PSyk7CisgICAgcmV0dXJuIGdldFN0YXR1cygpOworfQorCit2b2lk
IEZlbmNlOTo6ZmluaXNoRmVuY2UoKQoreworICAgIGlmIChtUXVlcnkgPT0gTlVMTCkKKyAgICB7
CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0K
KworICAgIHdoaWxlICghdGVzdEZlbmNlKCkpCisgICAgeworICAgICAgICBTbGVlcCgwKTsKKyAg
ICB9Cit9CisKK3ZvaWQgRmVuY2U5OjpnZXRGZW5jZWl2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBh
cmFtcykKK3sKKyAgICBpZiAobVF1ZXJ5ID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHBu
YW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9GRU5DRV9TVEFUVVNfTlY6CisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIEdMX05WX2ZlbmNlIHNwZWM6CisgICAgICAgICAgICAvLyBPbmNlIHRo
ZSBzdGF0dXMgb2YgYSBmZW5jZSBoYXMgYmVlbiBmaW5pc2hlZCAodmlhIEZpbmlzaEZlbmNlTlYp
IG9yIHRlc3RlZCBhbmQgdGhlIHJldHVybmVkIHN0YXR1cyBpcyBUUlVFICh2aWEgZWl0aGVyIFRl
c3RGZW5jZU5WCisgICAgICAgICAgICAvLyBvciBHZXRGZW5jZWl2TlYgcXVlcnlpbmcgdGhlIEZF
TkNFX1NUQVRVU19OViksIHRoZSBzdGF0dXMgcmVtYWlucyBUUlVFIHVudGlsIHRoZSBuZXh0IFNl
dEZlbmNlTlYgb2YgdGhlIGZlbmNlLgorICAgICAgICAgICAgaWYgKGdldFN0YXR1cygpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHBhcmFtc1swXSA9IEdMX1RSVUU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBIUkVTVUxUIHJlc3VsdCA9IG1RdWVyeS0+R2V0RGF0YShOVUxMLCAwLCAwKTsKKworICAgICAg
ICAgICAgaWYgKGQzZDk6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcGFyYW1zWzBdID0gR0xfVFJVRTsKKyAgICAgICAgICAgICAgICBt
UmVuZGVyZXItPm5vdGlmeURldmljZUxvc3QoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBB
U1NFUlQocmVzdWx0ID09IFNfT0sgfHwgcmVzdWx0ID09IFNfRkFMU0UpOworICAgICAgICAgICAg
c2V0U3RhdHVzKHJlc3VsdCA9PSBTX09LKTsKKyAgICAgICAgICAgIHBhcmFtc1swXSA9IGdldFN0
YXR1cygpOworCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdM
X0ZFTkNFX0NPTkRJVElPTl9OVjoKKyAgICAgICAgICAgIHBhcmFtc1swXSA9IGdldENvbmRpdGlv
bigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvRmVuY2U5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2U5LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBGZW5jZTkuaDogRGVmaW5l
cyB0aGUgcng6OkZlbmNlOSBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHJ4OjpGZW5jZUltcGwuCisK
KyNpZm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX0ZFTkNFOV9IXworI2RlZmluZSBMSUJHTEVTVjJf
UkVOREVSRVJfRkVOQ0U5X0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvRmVuY2VJ
bXBsLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI5OworCitjbGFzcyBGZW5j
ZTkgOiBwdWJsaWMgRmVuY2VJbXBsCit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBGZW5jZTko
cng6OlJlbmRlcmVyOSAqcmVuZGVyZXIpOworICAgIHZpcnR1YWwgfkZlbmNlOSgpOworCisgICAg
R0xib29sZWFuIGlzRmVuY2UoKTsKKyAgICB2b2lkIHNldEZlbmNlKEdMZW51bSBjb25kaXRpb24p
OworICAgIEdMYm9vbGVhbiB0ZXN0RmVuY2UoKTsKKyAgICB2b2lkIGZpbmlzaEZlbmNlKCk7Cisg
ICAgdm9pZCBnZXRGZW5jZWl2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CisKKyAgcHJp
dmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oRmVuY2U5KTsKKworICAgIHJ4OjpS
ZW5kZXJlcjkgKm1SZW5kZXJlcjsKKyAgICBJRGlyZWN0M0RRdWVyeTkgKm1RdWVyeTsKK307CisK
K30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9GRU5DRTlfSF8KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2UxMS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9GZW5jZTExLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2UxMS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTM0IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBGZW5j
ZTExLmNwcDogRGVmaW5lcyB0aGUgcng6OkZlbmNlMTEgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyBy
eDo6RmVuY2VJbXBsLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlMTEuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9SZW5kZXJlcjExLmgiCisKK25hbWVzcGFjZSByeAoreworCitGZW5jZTExOjpGZW5jZTExKHJ4
OjpSZW5kZXJlcjExICpyZW5kZXJlcikKK3sKKyAgICBtUmVuZGVyZXIgPSByZW5kZXJlcjsKKyAg
ICBtUXVlcnkgPSBOVUxMOworfQorCitGZW5jZTExOjp+RmVuY2UxMSgpCit7CisgICAgaWYgKG1R
dWVyeSkKKyAgICB7CisgICAgICAgIG1RdWVyeS0+UmVsZWFzZSgpOworICAgICAgICBtUXVlcnkg
PSBOVUxMOworICAgIH0KK30KKworR0xib29sZWFuIEZlbmNlMTE6OmlzRmVuY2UoKQoreworICAg
IC8vIEdMX05WX2ZlbmNlIHNwZWM6CisgICAgLy8gQSBuYW1lIHJldHVybmVkIGJ5IEdlbkZlbmNl
c05WLCBidXQgbm90IHlldCBzZXQgdmlhIFNldEZlbmNlTlYsIGlzIG5vdCB0aGUgbmFtZSBvZiBh
biBleGlzdGluZyBmZW5jZS4KKyAgICByZXR1cm4gbVF1ZXJ5ICE9IE5VTEw7Cit9CisKK3ZvaWQg
RmVuY2UxMTo6c2V0RmVuY2UoR0xlbnVtIGNvbmRpdGlvbikKK3sKKyAgICBpZiAoIW1RdWVyeSkK
KyAgICB7CisgICAgICAgIEQzRDExX1FVRVJZX0RFU0MgcXVlcnlEZXNjOworICAgICAgICBxdWVy
eURlc2MuUXVlcnkgPSBEM0QxMV9RVUVSWV9FVkVOVDsKKyAgICAgICAgcXVlcnlEZXNjLk1pc2NG
bGFncyA9IDA7CisKKyAgICAgICAgaWYgKEZBSUxFRChtUmVuZGVyZXItPmdldERldmljZSgpLT5D
cmVhdGVRdWVyeSgmcXVlcnlEZXNjLCAmbVF1ZXJ5KSkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKS0+RW5kKG1RdWVyeSk7CisKKyAgICBz
ZXRDb25kaXRpb24oY29uZGl0aW9uKTsKKyAgICBzZXRTdGF0dXMoR0xfRkFMU0UpOworfQorCitH
TGJvb2xlYW4gRmVuY2UxMTo6dGVzdEZlbmNlKCkKK3sKKyAgICBpZiAobVF1ZXJ5ID09IE5VTEwp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBH
TF9UUlVFKTsKKyAgICB9CisKKyAgICBIUkVTVUxUIHJlc3VsdCA9IG1SZW5kZXJlci0+Z2V0RGV2
aWNlQ29udGV4dCgpLT5HZXREYXRhKG1RdWVyeSwgTlVMTCwgMCwgMCk7CisKKyAgICBpZiAobVJl
bmRlcmVyLT5pc0RldmljZUxvc3QoKSkKKyAgICB7CisgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCBHTF9UUlVFKTsKKyAgICB9CisKKyAgICBBU1NFUlQocmVzdWx0ID09
IFNfT0sgfHwgcmVzdWx0ID09IFNfRkFMU0UpOworICAgIHNldFN0YXR1cyhyZXN1bHQgPT0gU19P
Syk7CisgICAgcmV0dXJuIGdldFN0YXR1cygpOworfQorCit2b2lkIEZlbmNlMTE6OmZpbmlzaEZl
bmNlKCkKK3sKKyAgICBpZiAobVF1ZXJ5ID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICB3aGlsZSAoIXRl
c3RGZW5jZSgpKQorICAgIHsKKyAgICAgICAgU2xlZXAoMCk7CisgICAgfQorfQorCit2b2lkIEZl
bmNlMTE6OmdldEZlbmNlaXYoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIGlm
IChtUXVlcnkgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAg
ICAgY2FzZSBHTF9GRU5DRV9TVEFUVVNfTlY6CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEdM
X05WX2ZlbmNlIHNwZWM6CisgICAgICAgICAgICAvLyBPbmNlIHRoZSBzdGF0dXMgb2YgYSBmZW5j
ZSBoYXMgYmVlbiBmaW5pc2hlZCAodmlhIEZpbmlzaEZlbmNlTlYpIG9yIHRlc3RlZCBhbmQgdGhl
IHJldHVybmVkIHN0YXR1cyBpcyBUUlVFICh2aWEgZWl0aGVyIFRlc3RGZW5jZU5WCisgICAgICAg
ICAgICAvLyBvciBHZXRGZW5jZWl2TlYgcXVlcnlpbmcgdGhlIEZFTkNFX1NUQVRVU19OViksIHRo
ZSBzdGF0dXMgcmVtYWlucyBUUlVFIHVudGlsIHRoZSBuZXh0IFNldEZlbmNlTlYgb2YgdGhlIGZl
bmNlLgorICAgICAgICAgICAgaWYgKGdldFN0YXR1cygpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHBhcmFtc1swXSA9IEdMX1RSVUU7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1SZW5kZXJlci0+
Z2V0RGV2aWNlQ29udGV4dCgpLT5HZXREYXRhKG1RdWVyeSwgTlVMTCwgMCwgRDNEMTFfQVNZTkNf
R0VUREFUQV9ET05PVEZMVVNIKTsKKworICAgICAgICAgICAgaWYgKG1SZW5kZXJlci0+aXNEZXZp
Y2VMb3N0KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcGFyYW1zWzBdID0gR0xf
VFJVRTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IFNfT0sgfHwg
cmVzdWx0ID09IFNfRkFMU0UpOworICAgICAgICAgICAgc2V0U3RhdHVzKHJlc3VsdCA9PSBTX09L
KTsKKyAgICAgICAgICAgIHBhcmFtc1swXSA9IGdldFN0YXR1cygpOworCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgY2FzZSBHTF9GRU5DRV9DT05ESVRJT05fTlY6CisgICAg
ICAgIHBhcmFtc1swXSA9IGdldENvbmRpdGlvbigpOworICAgICAgICBicmVhazsKKyAgICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlMTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlMTEuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVu
Y2UxMS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
RmVuY2UxMS5oOiBEZWZpbmVzIHRoZSByeDo6RmVuY2UxMSBjbGFzcyB3aGljaCBpbXBsZW1lbnRz
IHJ4OjpGZW5jZUltcGwuCisKKyNpZm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX0ZlbmNlMTFfSF8K
KyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX0ZlbmNlMTFfSF8KKworI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9GZW5jZUltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5k
ZXJlcjExOworCitjbGFzcyBGZW5jZTExIDogcHVibGljIEZlbmNlSW1wbAoreworICBwdWJsaWM6
CisgICAgZXhwbGljaXQgRmVuY2UxMShyeDo6UmVuZGVyZXIxMSAqcmVuZGVyZXIpOworICAgIHZp
cnR1YWwgfkZlbmNlMTEoKTsKKworICAgIEdMYm9vbGVhbiBpc0ZlbmNlKCk7CisgICAgdm9pZCBz
ZXRGZW5jZShHTGVudW0gY29uZGl0aW9uKTsKKyAgICBHTGJvb2xlYW4gdGVzdEZlbmNlKCk7Cisg
ICAgdm9pZCBmaW5pc2hGZW5jZSgpOworICAgIHZvaWQgZ2V0RmVuY2VpdihHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMpOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOKEZlbmNlMTEpOworCisgICAgcng6OlJlbmRlcmVyMTEgKm1SZW5kZXJlcjsKKyAgICBJRDNE
MTFRdWVyeSAqbVF1ZXJ5OworfTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVS
X0ZFTkNFMTFfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvRmVuY2VJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZUltcGwuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2VJbXBsLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBGZW5jZUlt
cGwuaDogRGVmaW5lcyB0aGUgcng6OkZlbmNlSW1wbCBjbGFzcy4KKworI2lmbmRlZiBMSUJHTEVT
VjJfUkVOREVSRVJfRkVOQ0VJTVBMX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9GRU5D
RUlNUExfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSBy
eAoreworCitjbGFzcyBGZW5jZUltcGwKK3sKKyAgcHVibGljOgorICAgIEZlbmNlSW1wbCgpIDog
bVN0YXR1cyhHTF9GQUxTRSksIG1Db25kaXRpb24oR0xfTk9ORSkgeyB9OworICAgIHZpcnR1YWwg
fkZlbmNlSW1wbCgpIHsgfTsKKworICAgIHZpcnR1YWwgR0xib29sZWFuIGlzRmVuY2UoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldEZlbmNlKEdMZW51bSBjb25kaXRpb24pID0gMDsKKyAgICB2
aXJ0dWFsIEdMYm9vbGVhbiB0ZXN0RmVuY2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpbmlz
aEZlbmNlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRGZW5jZWl2KEdMZW51bSBwbmFtZSwg
R0xpbnQgKnBhcmFtcykgPSAwOworCisgIHByb3RlY3RlZDoKKyAgICB2b2lkIHNldFN0YXR1cyhH
TGJvb2xlYW4gc3RhdHVzKSB7IG1TdGF0dXMgPSBzdGF0dXM7IH0KKyAgICBHTGJvb2xlYW4gZ2V0
U3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbVN0YXR1czsgfQorCisgICAgdm9pZCBzZXRDb25kaXRp
b24oR0x1aW50IGNvbmRpdGlvbikgeyBtQ29uZGl0aW9uID0gY29uZGl0aW9uOyB9CisgICAgR0x1
aW50IGdldENvbmRpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1Db25kaXRpb247IH0KKworICBwcml2
YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihGZW5jZUltcGwpOworCisgICAgR0xi
b29sZWFuIG1TdGF0dXM7CisgICAgR0xlbnVtIG1Db25kaXRpb247Cit9OworCit9CisKKyNlbmRp
ZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfRkVOQ0VJTVBMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlOS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTku
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9JbWFnZTkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDczMiBAQAorI2lu
Y2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbWFnZTkuY3Bw
OiBJbXBsZW1lbnRzIHRoZSByeDo6SW1hZ2U5IGNsYXNzLCB3aGljaCBhY3RzIGFzIHRoZSBpbnRl
cmZhY2UgdG8KKy8vIHRoZSBhY3R1YWwgdW5kZXJseWluZyBzdXJmYWNlcyBvZiBhIFRleHR1cmUu
CisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2U5LmgiCisKKyNpbmNsdWRlICJs
aWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyZXI5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRh
cmdldDkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5Lmgi
CisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL2dlbmVyYXRlbWlwLmgiCisKK25hbWVzcGFjZSByeAor
eworCitJbWFnZTk6OkltYWdlOSgpCit7CisgICAgbVN1cmZhY2UgPSBOVUxMOworICAgIG1SZW5k
ZXJlciA9IE5VTEw7CisKKyAgICBtRDNEUG9vbCA9IEQzRFBPT0xfU1lTVEVNTUVNOworICAgIG1E
M0RGb3JtYXQgPSBEM0RGTVRfVU5LTk9XTjsKK30KKworSW1hZ2U5Ojp+SW1hZ2U5KCkKK3sKKyAg
ICBpZiAobVN1cmZhY2UpCisgICAgeworICAgICAgICBtU3VyZmFjZS0+UmVsZWFzZSgpOworICAg
IH0KK30KKwordm9pZCBJbWFnZTk6OmdlbmVyYXRlTWlwKElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0
U3VyZmFjZSwgSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZVN1cmZhY2UpCit7CisgICAgRDNEU1VS
RkFDRV9ERVNDIGRlc3REZXNjOworICAgIEhSRVNVTFQgcmVzdWx0ID0gZGVzdFN1cmZhY2UtPkdl
dERlc2MoJmRlc3REZXNjKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAg
RDNEU1VSRkFDRV9ERVNDIHNvdXJjZURlc2M7CisgICAgcmVzdWx0ID0gc291cmNlU3VyZmFjZS0+
R2V0RGVzYygmc291cmNlRGVzYyk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKwor
ICAgIEFTU0VSVChzb3VyY2VEZXNjLkZvcm1hdCA9PSBkZXN0RGVzYy5Gb3JtYXQpOworICAgIEFT
U0VSVChzb3VyY2VEZXNjLldpZHRoID09IDEgfHwgc291cmNlRGVzYy5XaWR0aCAvIDIgPT0gZGVz
dERlc2MuV2lkdGgpOworICAgIEFTU0VSVChzb3VyY2VEZXNjLkhlaWdodCA9PSAxIHx8IHNvdXJj
ZURlc2MuSGVpZ2h0IC8gMiA9PSBkZXN0RGVzYy5IZWlnaHQpOworCisgICAgRDNETE9DS0VEX1JF
Q1Qgc291cmNlTG9ja2VkID0gezB9OworICAgIHJlc3VsdCA9IHNvdXJjZVN1cmZhY2UtPkxvY2tS
ZWN0KCZzb3VyY2VMb2NrZWQsIE5VTEwsIEQzRExPQ0tfUkVBRE9OTFkpOworICAgIEFTU0VSVChT
VUNDRUVERUQocmVzdWx0KSk7CisKKyAgICBEM0RMT0NLRURfUkVDVCBkZXN0TG9ja2VkID0gezB9
OworICAgIHJlc3VsdCA9IGRlc3RTdXJmYWNlLT5Mb2NrUmVjdCgmZGVzdExvY2tlZCwgTlVMTCwg
MCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKnNvdXJjZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
Pihzb3VyY2VMb2NrZWQucEJpdHMpOworICAgIHVuc2lnbmVkIGNoYXIgKmRlc3REYXRhID0gcmVp
bnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGVzdExvY2tlZC5wQml0cyk7CisKKyAgICBp
ZiAoc291cmNlRGF0YSAmJiBkZXN0RGF0YSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoc291cmNl
RGVzYy5Gb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEQzREZNVF9MODoKKyAgICAg
ICAgICAgIEdlbmVyYXRlTWlwPEw4Pihzb3VyY2VEZXNjLldpZHRoLCBzb3VyY2VEZXNjLkhlaWdo
dCwgc291cmNlRGF0YSwgc291cmNlTG9ja2VkLlBpdGNoLCBkZXN0RGF0YSwgZGVzdExvY2tlZC5Q
aXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEQzREZNVF9BOEw4Ogor
ICAgICAgICAgICAgR2VuZXJhdGVNaXA8QThMOD4oc291cmNlRGVzYy5XaWR0aCwgc291cmNlRGVz
Yy5IZWlnaHQsIHNvdXJjZURhdGEsIHNvdXJjZUxvY2tlZC5QaXRjaCwgZGVzdERhdGEsIGRlc3RM
b2NrZWQuUGl0Y2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBEM0RGTVRf
QThSOEc4Qjg6CisgICAgICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6CisgICAgICAgICAgICBH
ZW5lcmF0ZU1pcDxBOFI4RzhCOD4oc291cmNlRGVzYy5XaWR0aCwgc291cmNlRGVzYy5IZWlnaHQs
IHNvdXJjZURhdGEsIHNvdXJjZUxvY2tlZC5QaXRjaCwgZGVzdERhdGEsIGRlc3RMb2NrZWQuUGl0
Y2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBEM0RGTVRfQTE2QjE2RzE2
UjE2RjoKKyAgICAgICAgICAgIEdlbmVyYXRlTWlwPEExNkIxNkcxNlIxNkY+KHNvdXJjZURlc2Mu
V2lkdGgsIHNvdXJjZURlc2MuSGVpZ2h0LCBzb3VyY2VEYXRhLCBzb3VyY2VMb2NrZWQuUGl0Y2gs
IGRlc3REYXRhLCBkZXN0TG9ja2VkLlBpdGNoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgIGNhc2UgRDNERk1UX0EzMkIzMkczMlIzMkY6CisgICAgICAgICAgICBHZW5lcmF0ZU1pcDxB
MzJCMzJHMzJSMzJGPihzb3VyY2VEZXNjLldpZHRoLCBzb3VyY2VEZXNjLkhlaWdodCwgc291cmNl
RGF0YSwgc291cmNlTG9ja2VkLlBpdGNoLCBkZXN0RGF0YSwgZGVzdExvY2tlZC5QaXRjaCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVzdFN1
cmZhY2UtPlVubG9ja1JlY3QoKTsKKyAgICAgICAgc291cmNlU3VyZmFjZS0+VW5sb2NrUmVjdCgp
OworICAgIH0KK30KKworSW1hZ2U5ICpJbWFnZTk6Om1ha2VJbWFnZTkoSW1hZ2UgKmltZykKK3sK
KyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShyeDo6SW1hZ2U5KiwgaW1nKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHJ4OjpJbWFnZTkqPihpbWcpOworfQorCit2b2lkIEltYWdlOTo6Z2Vu
ZXJhdGVNaXBtYXAoSW1hZ2U5ICpkZXN0LCBJbWFnZTkgKnNvdXJjZSkKK3sKKyAgICBJRGlyZWN0
M0RTdXJmYWNlOSAqc291cmNlU3VyZmFjZSA9IHNvdXJjZS0+Z2V0U3VyZmFjZSgpOworICAgIGlm
IChzb3VyY2VTdXJmYWNlID09IE5VTEwpCisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdFN1cmZhY2UgPSBkZXN0
LT5nZXRTdXJmYWNlKCk7CisgICAgZ2VuZXJhdGVNaXAoZGVzdFN1cmZhY2UsIHNvdXJjZVN1cmZh
Y2UpOworCisgICAgZGVzdC0+bWFya0RpcnR5KCk7Cit9CisKK3ZvaWQgSW1hZ2U5Ojpjb3B5TG9j
a2FibGVTdXJmYWNlcyhJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCwgSURpcmVjdDNEU3VyZmFjZTkg
KnNvdXJjZSkKK3sKKyAgICBEM0RMT0NLRURfUkVDVCBzb3VyY2VMb2NrID0gezB9OworICAgIEQz
RExPQ0tFRF9SRUNUIGRlc3RMb2NrID0gezB9OworICAgIAorICAgIHNvdXJjZS0+TG9ja1JlY3Qo
JnNvdXJjZUxvY2ssIE5VTEwsIDApOworICAgIGRlc3QtPkxvY2tSZWN0KCZkZXN0TG9jaywgTlVM
TCwgMCk7CisgICAgCisgICAgaWYgKHNvdXJjZUxvY2sucEJpdHMgJiYgZGVzdExvY2sucEJpdHMp
CisgICAgeworICAgICAgICBEM0RTVVJGQUNFX0RFU0MgZGVzYzsKKyAgICAgICAgc291cmNlLT5H
ZXREZXNjKCZkZXNjKTsKKworICAgICAgICBpbnQgcm93cyA9IGQzZDk6OklzQ29tcHJlc3NlZEZv
cm1hdChkZXNjLkZvcm1hdCkgPyBkZXNjLkhlaWdodCAvIDQgOiBkZXNjLkhlaWdodDsKKyAgICAg
ICAgaW50IGJ5dGVzID0gZDNkOTo6Q29tcHV0ZVJvd1NpemUoZGVzYy5Gb3JtYXQsIGRlc2MuV2lk
dGgpOworICAgICAgICBBU1NFUlQoYnl0ZXMgPD0gc291cmNlTG9jay5QaXRjaCAmJiBieXRlcyA8
PSBkZXN0TG9jay5QaXRjaCk7CisKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHJvd3M7IGkr
KykKKyAgICAgICAgeworICAgICAgICAgICAgbWVtY3B5KChjaGFyKilkZXN0TG9jay5wQml0cyAr
IGRlc3RMb2NrLlBpdGNoICogaSwgKGNoYXIqKXNvdXJjZUxvY2sucEJpdHMgKyBzb3VyY2VMb2Nr
LlBpdGNoICogaSwgYnl0ZXMpOworICAgICAgICB9CisKKyAgICAgICAgc291cmNlLT5VbmxvY2tS
ZWN0KCk7CisgICAgICAgIGRlc3QtPlVubG9ja1JlY3QoKTsKKyAgICB9CisgICAgZWxzZSBVTlJF
QUNIQUJMRSgpOworfQorCitib29sIEltYWdlOTo6cmVkZWZpbmUocng6OlJlbmRlcmVyICpyZW5k
ZXJlciwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LCBib29sIGZvcmNlUmVsZWFzZSkKK3sKKyAgICBpZiAobVdpZHRoICE9IHdpZHRoIHx8CisgICAg
ICAgIG1IZWlnaHQgIT0gaGVpZ2h0IHx8CisgICAgICAgIG1JbnRlcm5hbEZvcm1hdCAhPSBpbnRl
cm5hbGZvcm1hdCB8fAorICAgICAgICBmb3JjZVJlbGVhc2UpCisgICAgeworICAgICAgICBtUmVu
ZGVyZXIgPSBSZW5kZXJlcjk6Om1ha2VSZW5kZXJlcjkocmVuZGVyZXIpOworCisgICAgICAgIG1X
aWR0aCA9IHdpZHRoOworICAgICAgICBtSGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBtSW50ZXJu
YWxGb3JtYXQgPSBpbnRlcm5hbGZvcm1hdDsKKyAgICAgICAgLy8gY29tcHV0ZSB0aGUgZDNkIGZv
cm1hdCB0aGF0IHdpbGwgYmUgdXNlZAorICAgICAgICBtRDNERm9ybWF0ID0gbVJlbmRlcmVyLT5D
b252ZXJ0VGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0KTsKKyAgICAgICAgbUFj
dHVhbEZvcm1hdCA9IGQzZDlfZ2w6OkdldEVxdWl2YWxlbnRGb3JtYXQobUQzREZvcm1hdCk7CisK
KyAgICAgICAgaWYgKG1TdXJmYWNlKQorICAgICAgICB7CisgICAgICAgICAgICBtU3VyZmFjZS0+
UmVsZWFzZSgpOworICAgICAgICAgICAgbVN1cmZhY2UgPSBOVUxMOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IEltYWdlOTo6Y3JlYXRlU3VyZmFjZSgpCit7CisgICAgaWYobVN1cmZhY2UpCisgICAgeworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgSURpcmVjdDNEVGV4dHVyZTkgKm5ld1RleHR1cmUg
PSBOVUxMOworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpuZXdTdXJmYWNlID0gTlVMTDsKKyAgICBj
b25zdCBEM0RQT09MIHBvb2xUb1VzZSA9IEQzRFBPT0xfU1lTVEVNTUVNOworICAgIGNvbnN0IEQz
REZPUk1BVCBkM2RGb3JtYXQgPSBnZXREM0RGb3JtYXQoKTsKKyAgICBBU1NFUlQoZDNkRm9ybWF0
ICE9IEQzREZNVF9JTlRaKTsgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlIGZvciBkZXB0aCB0
ZXh0dXJlcworCisgICAgaWYgKG1XaWR0aCAhPSAwICYmIG1IZWlnaHQgIT0gMCkKKyAgICB7Cisg
ICAgICAgIGludCBsZXZlbFRvRmV0Y2ggPSAwOworICAgICAgICBHTHNpemVpIHJlcXVlc3RXaWR0
aCA9IG1XaWR0aDsKKyAgICAgICAgR0xzaXplaSByZXF1ZXN0SGVpZ2h0ID0gbUhlaWdodDsKKyAg
ICAgICAgZ2w6Ok1ha2VWYWxpZFNpemUodHJ1ZSwgZ2w6OklzQ29tcHJlc3NlZChtSW50ZXJuYWxG
b3JtYXQpLCAmcmVxdWVzdFdpZHRoLCAmcmVxdWVzdEhlaWdodCwgJmxldmVsVG9GZXRjaCk7CisK
KyAgICAgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2Uo
KTsKKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZShyZXF1
ZXN0V2lkdGgsIHJlcXVlc3RIZWlnaHQsIGxldmVsVG9GZXRjaCArIDEsIDAsIGQzZEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb29s
VG9Vc2UsICZuZXdUZXh0dXJlLCBOVUxMKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklE
RU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOworICAgICAgICAgICAgRVJSKCJD
cmVhdGluZyBpbWFnZSBzdXJmYWNlIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIH0KKworICAgICAgICBuZXdUZXh0dXJl
LT5HZXRTdXJmYWNlTGV2ZWwobGV2ZWxUb0ZldGNoLCAmbmV3U3VyZmFjZSk7CisgICAgICAgIG5l
d1RleHR1cmUtPlJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBtU3VyZmFjZSA9IG5ld1N1cmZhY2U7
CisgICAgbURpcnR5ID0gZmFsc2U7CisgICAgbUQzRFBvb2wgPSBwb29sVG9Vc2U7Cit9CisKK0hS
RVNVTFQgSW1hZ2U5Ojpsb2NrKEQzRExPQ0tFRF9SRUNUICpsb2NrZWRSZWN0LCBjb25zdCBSRUNU
ICpyZWN0KQoreworICAgIGNyZWF0ZVN1cmZhY2UoKTsKKworICAgIEhSRVNVTFQgcmVzdWx0ID0g
RDNERVJSX0lOVkFMSURDQUxMOworCisgICAgaWYgKG1TdXJmYWNlKQorICAgIHsKKyAgICAgICAg
cmVzdWx0ID0gbVN1cmZhY2UtPkxvY2tSZWN0KGxvY2tlZFJlY3QsIHJlY3QsIDApOworICAgICAg
ICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgICAgIG1EaXJ0eSA9IHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBJbWFnZTk6OnVubG9jaygpCit7
CisgICAgaWYgKG1TdXJmYWNlKQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtU3Vy
ZmFjZS0+VW5sb2NrUmVjdCgpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwor
ICAgIH0KK30KKworYm9vbCBJbWFnZTk6OmlzUmVuZGVyYWJsZUZvcm1hdCgpIGNvbnN0Cit7ICAg
IAorICAgIHJldHVybiBUZXh0dXJlU3RvcmFnZTk6OklzVGV4dHVyZUZvcm1hdFJlbmRlcmFibGUo
Z2V0RDNERm9ybWF0KCkpOworfQorCitEM0RGT1JNQVQgSW1hZ2U5OjpnZXREM0RGb3JtYXQoKSBj
b25zdAoreworICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIGlmIHRoZSBpbWFnZSBoYXNu
J3QgYmVlbiByZWRlZmluZWQgZmlyc3QKKyAgICAvLyB3aGljaCB3b3VsZCBiZSBhIGJ1ZyBieSB0
aGUgY2FsbGVyCisgICAgQVNTRVJUKG1EM0RGb3JtYXQgIT0gRDNERk1UX1VOS05PV04pOworCisg
ICAgcmV0dXJuIG1EM0RGb3JtYXQ7Cit9CisKK0lEaXJlY3QzRFN1cmZhY2U5ICpJbWFnZTk6Omdl
dFN1cmZhY2UoKQoreworICAgIGNyZWF0ZVN1cmZhY2UoKTsKKworICAgIHJldHVybiBtU3VyZmFj
ZTsKK30KKwordm9pZCBJbWFnZTk6OnNldE1hbmFnZWRTdXJmYWNlKFRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlMkQgKnN0b3JhZ2UsIGludCBsZXZlbCkKK3sKKyAgICBUZXh0dXJlU3RvcmFnZTlfMkQg
KnN0b3JhZ2U5ID0gVGV4dHVyZVN0b3JhZ2U5XzJEOjptYWtlVGV4dHVyZVN0b3JhZ2U5XzJEKHN0
b3JhZ2UtPmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsKKyAgICBzZXRNYW5hZ2VkU3VyZmFjZShzdG9y
YWdlOS0+Z2V0U3VyZmFjZUxldmVsKGxldmVsLCBmYWxzZSkpOworfQorCit2b2lkIEltYWdlOTo6
c2V0TWFuYWdlZFN1cmZhY2UoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBp
bnQgZmFjZSwgaW50IGxldmVsKQoreworICAgIFRleHR1cmVTdG9yYWdlOV9DdWJlICpzdG9yYWdl
OSA9IFRleHR1cmVTdG9yYWdlOV9DdWJlOjptYWtlVGV4dHVyZVN0b3JhZ2U5X0N1YmUoc3RvcmFn
ZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgIHNldE1hbmFnZWRTdXJmYWNlKHN0b3JhZ2U5
LT5nZXRDdWJlTWFwU3VyZmFjZShHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmYWNl
LCBsZXZlbCwgZmFsc2UpKTsKK30KKwordm9pZCBJbWFnZTk6OnNldE1hbmFnZWRTdXJmYWNlKElE
aXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlKQoreworICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOwor
ICAgIHN1cmZhY2UtPkdldERlc2MoJmRlc2MpOworICAgIEFTU0VSVChkZXNjLlBvb2wgPT0gRDNE
UE9PTF9NQU5BR0VEKTsKKworICAgIGlmICgoR0xzaXplaSlkZXNjLldpZHRoID09IG1XaWR0aCAm
JiAoR0xzaXplaSlkZXNjLkhlaWdodCA9PSBtSGVpZ2h0KQorICAgIHsKKyAgICAgICAgaWYgKG1T
dXJmYWNlKQorICAgICAgICB7CisgICAgICAgICAgICBjb3B5TG9ja2FibGVTdXJmYWNlcyhzdXJm
YWNlLCBtU3VyZmFjZSk7CisgICAgICAgICAgICBtU3VyZmFjZS0+UmVsZWFzZSgpOworICAgICAg
ICB9CisKKyAgICAgICAgbVN1cmZhY2UgPSBzdXJmYWNlOworICAgICAgICBtRDNEUG9vbCA9IGRl
c2MuUG9vbDsKKyAgICB9Cit9CisKK2Jvb2wgSW1hZ2U5Ojp1cGRhdGVTdXJmYWNlKFRleHR1cmVT
dG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgQVNTRVJU
KGdldFN1cmZhY2UoKSAhPSBOVUxMKTsKKyAgICBUZXh0dXJlU3RvcmFnZTlfMkQgKnN0b3JhZ2U5
ID0gVGV4dHVyZVN0b3JhZ2U5XzJEOjptYWtlVGV4dHVyZVN0b3JhZ2U5XzJEKHN0b3JhZ2UtPmdl
dFN0b3JhZ2VJbnN0YW5jZSgpKTsKKyAgICByZXR1cm4gdXBkYXRlU3VyZmFjZShzdG9yYWdlOS0+
Z2V0U3VyZmFjZUxldmVsKGxldmVsLCB0cnVlKSwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCk7Cit9CisKK2Jvb2wgSW1hZ2U5Ojp1cGRhdGVTdXJmYWNlKFRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlQ3ViZSAqc3RvcmFnZSwgaW50IGZhY2UsIGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgQVNT
RVJUKGdldFN1cmZhY2UoKSAhPSBOVUxMKTsKKyAgICBUZXh0dXJlU3RvcmFnZTlfQ3ViZSAqc3Rv
cmFnZTkgPSBUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6bWFrZVRleHR1cmVTdG9yYWdlOV9DdWJlKHN0
b3JhZ2UtPmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsKKyAgICByZXR1cm4gdXBkYXRlU3VyZmFjZShz
dG9yYWdlOS0+Z2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Y
ICsgZmFjZSwgbGV2ZWwsIHRydWUpLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0KTsK
K30KKworYm9vbCBJbWFnZTk6OnVwZGF0ZVN1cmZhY2UoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3RT
dXJmYWNlLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCkKK3sKKyAgICBpZiAoIWRlc3RTdXJmYWNlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlU3VyZmFjZSA9IGdldFN1cmZhY2Uo
KTsKKworICAgIGlmIChzb3VyY2VTdXJmYWNlICYmIHNvdXJjZVN1cmZhY2UgIT0gZGVzdFN1cmZh
Y2UpCisgICAgeworICAgICAgICBSRUNUIHJlY3Q7CisgICAgICAgIHJlY3QubGVmdCA9IHhvZmZz
ZXQ7CisgICAgICAgIHJlY3QudG9wID0geW9mZnNldDsKKyAgICAgICAgcmVjdC5yaWdodCA9IHhv
ZmZzZXQgKyB3aWR0aDsKKyAgICAgICAgcmVjdC5ib3R0b20gPSB5b2Zmc2V0ICsgaGVpZ2h0Owor
CisgICAgICAgIFBPSU5UIHBvaW50ID0ge3JlY3QubGVmdCwgcmVjdC50b3B9OworCisgICAgICAg
IElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAg
ICAgICAgaWYgKG1EM0RQb29sID09IEQzRFBPT0xfTUFOQUdFRCkKKyAgICAgICAgeworICAgICAg
ICAgICAgRDNEU1VSRkFDRV9ERVNDIGRlc2M7CisgICAgICAgICAgICBzb3VyY2VTdXJmYWNlLT5H
ZXREZXNjKCZkZXNjKTsKKworICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmYgPSAw
OworICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZU9mZnNjcmVlblBs
YWluU3VyZmFjZShkZXNjLldpZHRoLCBkZXNjLkhlaWdodCwgZGVzYy5Gb3JtYXQsIEQzRFBPT0xf
U1lTVEVNTUVNLCAmc3VyZiwgTlVMTCk7CisKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQocmVz
dWx0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb3B5TG9ja2FibGVTdXJmYWNl
cyhzdXJmLCBzb3VyY2VTdXJmYWNlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBkZXZpY2Ut
PlVwZGF0ZVN1cmZhY2Uoc3VyZiwgJnJlY3QsIGRlc3RTdXJmYWNlLCAmcG9pbnQpOworICAgICAg
ICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgICAgICAgICAgICAgc3Vy
Zi0+UmVsZWFzZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgLy8gVXBkYXRlU3VyZmFjZTogc291cmNlIG11c3QgYmUgU1lT
VEVNTUVNLCBkZXN0IG11c3QgYmUgREVGQVVMVCBwb29scyAKKyAgICAgICAgICAgIEhSRVNVTFQg
cmVzdWx0ID0gZGV2aWNlLT5VcGRhdGVTdXJmYWNlKHNvdXJjZVN1cmZhY2UsICZyZWN0LCBkZXN0
U3VyZmFjZSwgJnBvaW50KTsKKyAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkZXN0U3VyZmFjZS0+UmVsZWFzZSgpOworICAgIHJl
dHVybiB0cnVlOworfQorCisvLyBTdG9yZSB0aGUgcGl4ZWwgcmVjdGFuZ2xlIGRlc2lnbmF0ZWQg
YnkgeG9mZnNldCx5b2Zmc2V0LHdpZHRoLGhlaWdodCB3aXRoIHBpeGVscyBzdG9yZWQgYXMgZm9y
bWF0L3R5cGUgYXQgaW5wdXQKKy8vIGludG8gdGhlIHRhcmdldCBwaXhlbCByZWN0YW5nbGUuCit2
b2lkIEltYWdlOTo6bG9hZERhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdW5w
YWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICppbnB1dCkKK3sKKyAgICBSRUNUIGxvY2tSZWN0ID0K
KyAgICB7CisgICAgICAgIHhvZmZzZXQsIHlvZmZzZXQsCisgICAgICAgIHhvZmZzZXQgKyB3aWR0
aCwgeW9mZnNldCArIGhlaWdodAorICAgIH07CisKKyAgICBEM0RMT0NLRURfUkVDVCBsb2NrZWQ7
CisgICAgSFJFU1VMVCByZXN1bHQgPSBsb2NrKCZsb2NrZWQsICZsb2NrUmVjdCk7CisgICAgaWYg
KEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAg
R0xzaXplaSBpbnB1dFBpdGNoID0gZ2w6OkNvbXB1dGVQaXRjaCh3aWR0aCwgbUludGVybmFsRm9y
bWF0LCB1bnBhY2tBbGlnbm1lbnQpOworCisgICAgc3dpdGNoIChtSW50ZXJuYWxGb3JtYXQpCisg
ICAgeworICAgICAgY2FzZSBHTF9BTFBIQThfRVhUOgorICAgICAgICBpZiAoZ2w6OnN1cHBvcnRz
U1NFMigpKQorICAgICAgICB7CisgICAgICAgICAgICBsb2FkQWxwaGFEYXRhVG9CR1JBU1NFMih3
aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJp
dHMpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbG9h
ZEFscGhhRGF0YVRvQkdSQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2Vk
LlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0U4X0VYVDoKKyAgICAgICAgbG9hZEx1bWluYW5jZURhdGFUb05hdGl2
ZU9yQkdSQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBs
b2NrZWQucEJpdHMsIGdldEQzREZvcm1hdCgpID09IEQzREZNVF9MOCk7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9BTFBIQTMyRl9FWFQ6CisgICAgICAgIGxvYWRBbHBoYUZsb2F0RGF0
YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBs
b2NrZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMzJG
X0VYVDoKKyAgICAgICAgbG9hZEx1bWluYW5jZUZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0
LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOgorICAgICAgICBsb2FkQWxwaGFI
YWxmRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2Nr
ZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9M
VU1JTkFOQ0UxNkZfRVhUOgorICAgICAgICBsb2FkTHVtaW5hbmNlSGFsZkZsb2F0RGF0YVRvUkdC
QSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQu
cEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOF9BTFBIQThf
RVhUOgorICAgICAgICBsb2FkTHVtaW5hbmNlQWxwaGFEYXRhVG9OYXRpdmVPckJHUkEod2lkdGgs
IGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzLCBn
ZXREM0RGb3JtYXQoKSA9PSBEM0RGTVRfQThMOCk7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUOgorICAgICAgICBsb2FkTHVtaW5hbmNlQWxwaGFG
bG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5Q
aXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xVTUlO
QU5DRV9BTFBIQTE2Rl9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VBbHBoYUhhbGZGbG9hdERh
dGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwg
bG9ja2VkLnBCaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjhfT0VTOgor
ICAgICAgICBsb2FkUkdCVUJ5dGVEYXRhVG9CR1JYKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gs
IGlucHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9SR0I1NjU6CisgICAgICAgIGxvYWRSR0I1NjVEYXRhVG9CR1JBKHdpZHRoLCBo
ZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0JBOF9PRVM6CisgICAgICAgIGlmIChnbDo6
c3VwcG9ydHNTU0UyKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRSR0JBVUJ5dGVEYXRh
VG9CR1JBU1NFMih3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNo
LCBsb2NrZWQucEJpdHMpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgbG9hZFJHQkFVQnl0ZURhdGFUb0JHUkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRj
aCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICAgIGxvYWRSR0JBNDQ0NERhdGFU
b0JHUkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9j
a2VkLnBCaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjVfQTE6CisgICAg
ICAgIGxvYWRSR0JBNTU1MURhdGFUb0JHUkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5w
dXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgICAgbG9hZEJHUkFEYXRhVG9CR1JBKHdpZHRoLCBoZWln
aHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7CisgICAg
ICAgIGJyZWFrOworICAgICAgLy8gZmxvYXQgdGV4dHVyZXMgYXJlIGNvbnZlcnRlZCB0byBSR0JB
LCBub3QgQkdSQSwgYXMgdGhleSdyZSBzdG9yZWQgdGhhdCB3YXkgaW4gRDNECisgICAgICBjYXNl
IEdMX1JHQjMyRl9FWFQ6CisgICAgICAgIGxvYWRSR0JGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhl
aWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6CisgICAgICAgIGxvYWRSR0JI
YWxmRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2Nr
ZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9S
R0JBMzJGX0VYVDoKKyAgICAgICAgbG9hZFJHQkFGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdo
dCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQkExNkZfRVhUOgorICAgICAgICBsb2FkUkdCQUhh
bGZGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tl
ZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBV
TlJFQUNIQUJMRSgpOyAKKyAgICB9CisKKyAgICB1bmxvY2soKTsKK30KKwordm9pZCBJbWFnZTk6
OmxvYWRDb21wcmVzc2VkRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqaW5wdXQpCit7CisgICAgQVNTRVJUKHhvZmZzZXQgJSA0ID09IDApOworICAg
IEFTU0VSVCh5b2Zmc2V0ICUgNCA9PSAwKTsKKworICAgIFJFQ1QgbG9ja1JlY3QgPSB7CisgICAg
ICAgIHhvZmZzZXQsIHlvZmZzZXQsCisgICAgICAgIHhvZmZzZXQgKyB3aWR0aCwgeW9mZnNldCAr
IGhlaWdodAorICAgIH07CisKKyAgICBEM0RMT0NLRURfUkVDVCBsb2NrZWQ7CisgICAgSFJFU1VM
VCByZXN1bHQgPSBsb2NrKCZsb2NrZWQsICZsb2NrUmVjdCk7CisgICAgaWYgKEZBSUxFRChyZXN1
bHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMc2l6ZWkgaW5wdXRT
aXplID0gZ2w6OkNvbXB1dGVDb21wcmVzc2VkU2l6ZSh3aWR0aCwgaGVpZ2h0LCBtSW50ZXJuYWxG
b3JtYXQpOworICAgIEdMc2l6ZWkgaW5wdXRQaXRjaCA9IGdsOjpDb21wdXRlQ29tcHJlc3NlZFBp
dGNoKHdpZHRoLCBtSW50ZXJuYWxGb3JtYXQpOworICAgIGludCByb3dzID0gaW5wdXRTaXplIC8g
aW5wdXRQaXRjaDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7ICsraSkKKyAgICB7Cisg
ICAgICAgIG1lbWNweSgodm9pZCopKChCWVRFKilsb2NrZWQucEJpdHMgKyBpICogbG9ja2VkLlBp
dGNoKSwgKHZvaWQqKSgoQllURSopaW5wdXQgKyBpICogaW5wdXRQaXRjaCksIGlucHV0UGl0Y2gp
OworICAgIH0KKworICAgIHVubG9jaygpOworfQorCisvLyBUaGlzIGltcGxlbWVudHMgZ2xDb3B5
VGV4W1N1Yl1JbWFnZTJEIGZvciBub24tcmVuZGVyYWJsZSBpbnRlcm5hbCB0ZXh0dXJlIGZvcm1h
dHMgYW5kIGluY29tcGxldGUgdGV4dHVyZXMKK3ZvaWQgSW1hZ2U5Ojpjb3B5KEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkKK3sKKyAgICBSZW5kZXJUYXJnZXQ5
ICpyZW5kZXJUYXJnZXQgPSBOVUxMOworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlID0g
TlVMTDsKKyAgICBnbDo6UmVuZGVyYnVmZmVyICpjb2xvcmJ1ZmZlciA9IHNvdXJjZS0+Z2V0Q29s
b3JidWZmZXIoMCk7CisKKyAgICBpZiAoY29sb3JidWZmZXIpCisgICAgeworICAgICAgICByZW5k
ZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQ5OjptYWtlUmVuZGVyVGFyZ2V0OShjb2xvcmJ1ZmZlci0+
Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAgIH0KKyAgICAKKyAgICBpZiAocmVuZGVyVGFyZ2V0KQor
ICAgIHsKKyAgICAgICAgc3VyZmFjZSA9IHJlbmRlclRhcmdldC0+Z2V0U3VyZmFjZSgpOworICAg
IH0KKworICAgIGlmICghc3VyZmFjZSkKKyAgICB7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJl
dHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0LiIpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9
IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqcmVuZGVy
VGFyZ2V0RGF0YSA9IE5VTEw7CisgICAgRDNEU1VSRkFDRV9ERVNDIGRlc2NyaXB0aW9uOworICAg
IHN1cmZhY2UtPkdldERlc2MoJmRlc2NyaXB0aW9uKTsKKyAgICAKKyAgICBIUkVTVUxUIHJlc3Vs
dCA9IGRldmljZS0+Q3JlYXRlT2Zmc2NyZWVuUGxhaW5TdXJmYWNlKGRlc2NyaXB0aW9uLldpZHRo
LCBkZXNjcmlwdGlvbi5IZWlnaHQsIGRlc2NyaXB0aW9uLkZvcm1hdCwgRDNEUE9PTF9TWVNURU1N
RU0sICZyZW5kZXJUYXJnZXREYXRhLCBOVUxMKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
KyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBtYXRjaGluZyBkZXN0aW5hdGlv
biBzdXJmYWNlLiIpOworICAgICAgICBzdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgcmVzdWx0ID0gZGV2
aWNlLT5HZXRSZW5kZXJUYXJnZXREYXRhKHN1cmZhY2UsIHJlbmRlclRhcmdldERhdGEpOworCisg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJHZXRSZW5kZXJUYXJn
ZXREYXRhIHVuZXhwZWN0ZWRseSBmYWlsZWQuIik7CisgICAgICAgIHJlbmRlclRhcmdldERhdGEt
PlJlbGVhc2UoKTsKKyAgICAgICAgc3VyZmFjZS0+UmVsZWFzZSgpOworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIFJFQ1Qgc291cmNlUmVj
dCA9IHt4LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHR9OworICAgIFJFQ1QgZGVzdFJlY3QgPSB7
eG9mZnNldCwgeW9mZnNldCwgeG9mZnNldCArIHdpZHRoLCB5b2Zmc2V0ICsgaGVpZ2h0fTsKKwor
ICAgIEQzRExPQ0tFRF9SRUNUIHNvdXJjZUxvY2sgPSB7MH07CisgICAgcmVzdWx0ID0gcmVuZGVy
VGFyZ2V0RGF0YS0+TG9ja1JlY3QoJnNvdXJjZUxvY2ssICZzb3VyY2VSZWN0LCAwKTsKKworICAg
IGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIGxvY2sg
dGhlIHNvdXJjZSBzdXJmYWNlIChyZWN0YW5nbGUgbWlnaHQgYmUgaW52YWxpZCkuIik7CisgICAg
ICAgIHJlbmRlclRhcmdldERhdGEtPlJlbGVhc2UoKTsKKyAgICAgICAgc3VyZmFjZS0+UmVsZWFz
ZSgpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0K
KworICAgIEQzRExPQ0tFRF9SRUNUIGRlc3RMb2NrID0gezB9OworICAgIHJlc3VsdCA9IGxvY2so
JmRlc3RMb2NrLCAmZGVzdFJlY3QpOworICAgIAorICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAg
ICB7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIGxvY2sgdGhlIGRlc3RpbmF0aW9uIHN1cmZhY2Ug
KHJlY3RhbmdsZSBtaWdodCBiZSBpbnZhbGlkKS4iKTsKKyAgICAgICAgcmVuZGVyVGFyZ2V0RGF0
YS0+VW5sb2NrUmVjdCgpOworICAgICAgICByZW5kZXJUYXJnZXREYXRhLT5SZWxlYXNlKCk7Cisg
ICAgICAgIHN1cmZhY2UtPlJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICB9CisKKyAgICBpZiAoZGVzdExvY2sucEJpdHMgJiYgc291cmNl
TG9jay5wQml0cykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9ICh1bnNp
Z25lZCBjaGFyKilzb3VyY2VMb2NrLnBCaXRzOworICAgICAgICB1bnNpZ25lZCBjaGFyICpkZXN0
ID0gKHVuc2lnbmVkIGNoYXIqKWRlc3RMb2NrLnBCaXRzOworCisgICAgICAgIHN3aXRjaCAoZGVz
Y3JpcHRpb24uRm9ybWF0KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4
Qjg6CisgICAgICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6CisgICAgICAgICAgICBzd2l0Y2go
Z2V0RDNERm9ybWF0KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgRDNERk1U
X1g4UjhHOEI4OgorICAgICAgICAgICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKKyAgICAgICAg
ICAgICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoZGVzdCwgc291cmNlLCA0ICogd2lkdGgpOwor
CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOworICAgICAg
ICAgICAgICAgICAgICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfTDg6Cisg
ICAgICAgICAgICAgICAgZm9yKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4
KyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rb
eF0gPSBzb3VyY2VbeCAqIDQgKyAyXTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOworICAgICAgICAgICAgICAg
ICAgICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfQThMODoKKyAgICAgICAg
ICAgICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt4ICogMiAr
IDBdID0gc291cmNlW3ggKiA0ICsgMl07CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3gg
KiAyICsgMV0gPSBzb3VyY2VbeCAqIDQgKyAzXTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOworICAgICAgICAg
ICAgICAgICAgICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgY2FzZSBEM0RGTVRfUjVHNkI1OgorICAgICAgICAgICAgc3dpdGNoKGdldEQzREZv
cm1hdCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9YOFI4RzhC
ODoKKyAgICAgICAgICAgICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHggPSAwOyB4IDwgd2lk
dGg7IHgrKykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgc2hvcnQgcmdiID0gKCh1bnNpZ25lZCBzaG9ydCopc291cmNlKVt4XTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcmVkID0gKHJnYiAmIDB4RjgwMCkgPj4g
ODsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZ3JlZW4gPSAocmdiICYg
MHgwN0UwKSA+PiAzOworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBibHVl
ID0gKHJnYiAmIDB4MDAxRikgPDwgMzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbeCAr
IDBdID0gYmx1ZSB8IChibHVlID4+IDUpOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt4
ICsgMV0gPSBncmVlbiB8IChncmVlbiA+PiA2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
c3RbeCArIDJdID0gcmVkIHwgKHJlZCA+PiA1KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
c3RbeCArIDNdID0gMHhGRjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgICAgICBk
ZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfTDg6CisgICAgICAgICAgICAgICAg
Zm9yKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgZm9yKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcmVkID0g
c291cmNlW3ggKiAyICsgMV0gJiAweEY4OworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt4
XSA9IHJlZCB8IChyZWQgPj4gNSk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICBzb3VyY2UgKz0gc291cmNlTG9jay5QaXRjaDsKKyAgICAgICAgICAgICAgICAg
ICAgZGVzdCArPSBkZXN0TG9jay5QaXRjaDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
IGNhc2UgRDNERk1UX0ExUjVHNUI1OgorICAgICAgICAgICAgc3dpdGNoKGdldEQzREZvcm1hdCgp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKKyAg
ICAgICAgICAgICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgr
KykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgYXJnYiA9ICgodW5zaWduZWQgc2hvcnQqKXNvdXJjZSlbeF07CisgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHJlZCA9IChhcmdiICYgMHg3QzAwKSA+PiA3Owor
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBncmVlbiA9IChhcmdiICYgMHgw
M0UwKSA+PiAyOworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBibHVlID0g
KGFyZ2IgJiAweDAwMUYpIDw8IDM7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3ggKyAw
XSA9IGJsdWUgfCAoYmx1ZSA+PiA1KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbeCAr
IDFdID0gZ3JlZW4gfCAoZ3JlZW4gPj4gNSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0
W3ggKyAyXSA9IHJlZCB8IChyZWQgPj4gNSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0
W3ggKyAzXSA9IDB4RkY7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICBzb3VyY2UgKz0gc291cmNlTG9jay5QaXRjaDsKKyAgICAgICAgICAgICAgICAgICAgZGVz
dCArPSBkZXN0TG9jay5QaXRjaDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRDNERk1UX0E4UjhHOEI4OgorICAgICAgICAgICAg
ICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBh
cmdiID0gKCh1bnNpZ25lZCBzaG9ydCopc291cmNlKVt4XTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgcmVkID0gKGFyZ2IgJiAweDdDMDApID4+IDc7CisgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGdyZWVuID0gKGFyZ2IgJiAweDAzRTApID4+IDI7
CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGJsdWUgPSAoYXJnYiAmIDB4
MDAxRikgPDwgMzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYWxwaGEg
PSAoc2lnbmVkIHNob3J0KWFyZ2IgPj4gMTU7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0
W3ggKyAwXSA9IGJsdWUgfCAoYmx1ZSA+PiA1KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
c3RbeCArIDFdID0gZ3JlZW4gfCAoZ3JlZW4gPj4gNSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBkZXN0W3ggKyAyXSA9IHJlZCB8IChyZWQgPj4gNSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBkZXN0W3ggKyAzXSA9IGFscGhhOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7CisgICAgICAgICAgICAgICAg
ICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9MODoKKyAgICAgICAgICAg
ICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBy
ZWQgPSBzb3VyY2VbeCAqIDIgKyAxXSAmIDB4N0M7CisgICAgICAgICAgICAgICAgICAgICAgICBk
ZXN0W3hdID0gKHJlZCA8PCAxKSB8IChyZWQgPj4gNCk7CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gc291cmNlTG9jay5QaXRjaDsKKyAgICAg
ICAgICAgICAgICAgICAgZGVzdCArPSBkZXN0TG9jay5QaXRjaDsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRDNERk1UX0E4TDg6
CisgICAgICAgICAgICAgICAgZm9yKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yKGludCB4ID0gMDsgeCA8IHdpZHRo
OyB4KyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgcmVkID0gc291cmNlW3ggKiAyICsgMV0gJiAweDdDOworICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzdFt4ICogMiArIDBdID0gKHJlZCA8PCAxKSB8IChyZWQgPj4gNCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3ggKiAyICsgMV0gPSAoc2lnbmVkIGNoYXIpc291
cmNlW3ggKiAyICsgMV0gPj4gNzsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgICAg
ICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB1bmxvY2soKTsKKyAgICByZW5kZXJUYXJnZXREYXRhLT5VbmxvY2tSZWN0KCk7CisKKyAg
ICByZW5kZXJUYXJnZXREYXRhLT5SZWxlYXNlKCk7CisgICAgc3VyZmFjZS0+UmVsZWFzZSgpOwor
CisgICAgbURpcnR5ID0gdHJ1ZTsKK30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1h
Z2U5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9JbWFnZTkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2U5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEltYWdlOS5oOiBEZWZpbmVzIHRoZSBy
eDo6SW1hZ2U5IGNsYXNzLCB3aGljaCBhY3RzIGFzIHRoZSBpbnRlcmZhY2UgdG8KKy8vIHRoZSBh
Y3R1YWwgdW5kZXJseWluZyBzdXJmYWNlcyBvZiBhIFRleHR1cmUuCisKKyNpZm5kZWYgTElCR0xF
U1YyX1JFTkRFUkVSX0lNQUdFOV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJfSU1BR0U5
X0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UuaCIKKyNpbmNsdWRlICJj
b21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBGcmFtZWJ1ZmZlcjsKK30K
KworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKK2NsYXNzIFJlbmRlcmVyOTsKK2Ns
YXNzIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ7CitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVy
ZmFjZUN1YmU7CisKK2NsYXNzIEltYWdlOSA6IHB1YmxpYyBJbWFnZQoreworICBwdWJsaWM6Cisg
ICAgSW1hZ2U5KCk7CisgICAgfkltYWdlOSgpOworCisgICAgc3RhdGljIEltYWdlOSAqbWFrZUlt
YWdlOShJbWFnZSAqaW1nKTsKKworICAgIHN0YXRpYyB2b2lkIGdlbmVyYXRlTWlwbWFwKEltYWdl
OSAqZGVzdCwgSW1hZ2U5ICpzb3VyY2UpOworICAgIHN0YXRpYyB2b2lkIGdlbmVyYXRlTWlwKElE
aXJlY3QzRFN1cmZhY2U5ICpkZXN0U3VyZmFjZSwgSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZVN1
cmZhY2UpOworICAgIHN0YXRpYyB2b2lkIGNvcHlMb2NrYWJsZVN1cmZhY2VzKElEaXJlY3QzRFN1
cmZhY2U5ICpkZXN0LCBJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlKTsKKworICAgIHZpcnR1YWwg
Ym9vbCByZWRlZmluZShSZW5kZXJlciAqcmVuZGVyZXIsIEdMaW50IGludGVybmFsZm9ybWF0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgYm9vbCBmb3JjZVJlbGVhc2UpOworCisgICAg
dmlydHVhbCBib29sIGlzUmVuZGVyYWJsZUZvcm1hdCgpIGNvbnN0OworICAgIEQzREZPUk1BVCBn
ZXREM0RGb3JtYXQoKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0RpcnR5KCkgY29uc3Qg
e3JldHVybiBtU3VyZmFjZSAmJiBtRGlydHk7fQorICAgIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRT
dXJmYWNlKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWFuYWdlZFN1cmZhY2UoVGV4dHVyZVN0
b3JhZ2VJbnRlcmZhY2UyRCAqc3RvcmFnZSwgaW50IGxldmVsKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0TWFuYWdlZFN1cmZhY2UoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBp
bnQgZmFjZSwgaW50IGxldmVsKTsKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlU3VyZmFjZShUZXh0
dXJlU3RvcmFnZUludGVyZmFjZTJEICpzdG9yYWdlLCBpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKyAgICB2aXJ0
dWFsIGJvb2wgdXBkYXRlU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKnN0b3Jh
Z2UsIGludCBmYWNlLCBpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKworICAgIHZpcnR1YWwgdm9pZCBsb2FkRGF0
YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9p
ZCAqaW5wdXQpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkQ29tcHJlc3NlZERhdGEoR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbnB1dCk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgY29weShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgZ2w6OkZyYW1lYnVmZmVy
ICpzb3VyY2UpOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKElt
YWdlOSk7CisKKyAgICB2b2lkIGNyZWF0ZVN1cmZhY2UoKTsKKyAgICB2b2lkIHNldE1hbmFnZWRT
dXJmYWNlKElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlKTsKKyAgICBib29sIHVwZGF0ZVN1cmZh
Y2UoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKworICAgIEhSRVNVTFQgbG9jayhEM0RM
T0NLRURfUkVDVCAqbG9ja2VkUmVjdCwgY29uc3QgUkVDVCAqcmVjdCk7CisgICAgdm9pZCB1bmxv
Y2soKTsKKyAgICAKKyAgICBSZW5kZXJlcjkgKm1SZW5kZXJlcjsKKworICAgIEQzRFBPT0wgbUQz
RFBvb2w7ICAgLy8gY2FuIG9ubHkgYmUgRDNEUE9PTF9TWVNURU1NRU0gb3IgRDNEUE9PTF9NQU5B
R0VEIHNpbmNlIGl0IG5lZWRzIHRvIGJlIGxvY2thYmxlLgorICAgIEQzREZPUk1BVCBtRDNERm9y
bWF0OworCisgICAgSURpcmVjdDNEU3VyZmFjZTkgKm1TdXJmYWNlOworfTsKK30KKworI2VuZGlm
ICAgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0lNQUdFOV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTExLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9JbWFnZTExLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NTcgQEAKKyNp
bmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEltYWdlMTEuaDogSW1w
bGVtZW50cyB0aGUgcng6OkltYWdlMTEgY2xhc3MsIHdoaWNoIGFjdHMgYXMgdGhlIGludGVyZmFj
ZSB0bworLy8gdGhlIGFjdHVhbCB1bmRlcmx5aW5nIHJlc291cmNlcyBvZiBhIFRleHR1cmUKKwor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
VGV4dHVyZVN0b3JhZ2UxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2
Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL2dlbmVyYXRlbWlwLmgiCisKK25hbWVzcGFjZSByeAoreworCitJbWFnZTExOjpJ
bWFnZTExKCkKK3sKKyAgICBtU3RhZ2luZ1RleHR1cmUgPSBOVUxMOworICAgIG1SZW5kZXJlciA9
IE5VTEw7CisgICAgbURYR0lGb3JtYXQgPSBEWEdJX0ZPUk1BVF9VTktOT1dOOworfQorCitJbWFn
ZTExOjp+SW1hZ2UxMSgpCit7CisgICAgaWYgKG1TdGFnaW5nVGV4dHVyZSkKKyAgICB7CisgICAg
ICAgIG1TdGFnaW5nVGV4dHVyZS0+UmVsZWFzZSgpOworICAgIH0KK30KKworSW1hZ2UxMSAqSW1h
Z2UxMTo6bWFrZUltYWdlMTEoSW1hZ2UgKmltZykKK3sKKyAgICBBU1NFUlQoSEFTX0RZTkFNSUNf
VFlQRShyeDo6SW1hZ2UxMSosIGltZykpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxyeDo6SW1h
Z2UxMSo+KGltZyk7Cit9CisKK3ZvaWQgSW1hZ2UxMTo6Z2VuZXJhdGVNaXBtYXAoSW1hZ2UxMSAq
ZGVzdCwgSW1hZ2UxMSAqc3JjKQoreworICAgIEFTU0VSVChzcmMtPmdldERYR0lGb3JtYXQoKSA9
PSBkZXN0LT5nZXREWEdJRm9ybWF0KCkpOworICAgIEFTU0VSVChzcmMtPmdldFdpZHRoKCkgPT0g
MSB8fCBzcmMtPmdldFdpZHRoKCkgLyAyID09IGRlc3QtPmdldFdpZHRoKCkpOworICAgIEFTU0VS
VChzcmMtPmdldEhlaWdodCgpID09IDEgfHwgc3JjLT5nZXRIZWlnaHQoKSAvIDIgPT0gZGVzdC0+
Z2V0SGVpZ2h0KCkpOworCisgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIGRlc3RNYXBwZWQs
IHNyY01hcHBlZDsKKyAgICBkZXN0LT5tYXAoJmRlc3RNYXBwZWQpOworICAgIHNyYy0+bWFwKCZz
cmNNYXBwZWQpOworCisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlRGF0YSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHNyY01hcHBlZC5wRGF0YSk7CisgICAg
dW5zaWduZWQgY2hhciAqZGVzdERhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIq
PihkZXN0TWFwcGVkLnBEYXRhKTsKKworICAgIGlmIChzb3VyY2VEYXRhICYmIGRlc3REYXRhKQor
ICAgIHsKKyAgICAgICAgc3dpdGNoIChzcmMtPmdldERYR0lGb3JtYXQoKSkKKyAgICAgICAgewor
ICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk06CisgICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STToKKyAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4
RzhCOEE4PihzcmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCksIHNvdXJjZURhdGEsIHNy
Y01hcHBlZC5Sb3dQaXRjaCwgZGVzdERhdGEsIGRlc3RNYXBwZWQuUm93UGl0Y2gpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOF9VTk9STToKKyAgICAg
ICAgICAgIEdlbmVyYXRlTWlwPEE4PihzcmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCks
IHNvdXJjZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRjaCwgZGVzdERhdGEsIGRlc3RNYXBwZWQuUm93
UGl0Y2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
OF9VTk9STToKKyAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4PihzcmMtPmdldFdpZHRoKCksIHNy
Yy0+Z2V0SGVpZ2h0KCksIHNvdXJjZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRjaCwgZGVzdERhdGEs
IGRlc3RNYXBwZWQuUm93UGl0Y2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQ6CisgICAgICAgICAgICBHZW5lcmF0ZU1p
cDxBMzJCMzJHMzJSMzJGPihzcmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCksIHNvdXJj
ZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRjaCwgZGVzdERhdGEsIGRlc3RNYXBwZWQuUm93UGl0Y2gp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJfRkxPQVQ6CisgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJCMzJGPihzcmMtPmdldFdp
ZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCksIHNvdXJjZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRjaCwg
ZGVzdERhdGEsIGRlc3RNYXBwZWQuUm93UGl0Y2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6CisgICAgICAgICAgICBH
ZW5lcmF0ZU1pcDxBMTZCMTZHMTZSMTZGPihzcmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0
KCksIHNvdXJjZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRjaCwgZGVzdERhdGEsIGRlc3RNYXBwZWQu
Um93UGl0Y2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SOEc4X1VOT1JNOgorICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOD4oc3JjLT5nZXRXaWR0
aCgpLCBzcmMtPmdldEhlaWdodCgpLCBzb3VyY2VEYXRhLCBzcmNNYXBwZWQuUm93UGl0Y2gsIGRl
c3REYXRhLCBkZXN0TWFwcGVkLlJvd1BpdGNoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X0ZMT0FUOgorICAgICAgICAgICAgR2VuZXJhdGVNaXA8
UjE2Rj4oc3JjLT5nZXRXaWR0aCgpLCBzcmMtPmdldEhlaWdodCgpLCBzb3VyY2VEYXRhLCBzcmNN
YXBwZWQuUm93UGl0Y2gsIGRlc3REYXRhLCBkZXN0TWFwcGVkLlJvd1BpdGNoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FUOgorICAg
ICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2Rj4oc3JjLT5nZXRXaWR0aCgpLCBzcmMtPmdldEhl
aWdodCgpLCBzb3VyY2VEYXRhLCBzcmNNYXBwZWQuUm93UGl0Y2gsIGRlc3REYXRhLCBkZXN0TWFw
cGVkLlJvd1BpdGNoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjMyX0ZMT0FUOgorICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRj4oc3JjLT5nZXRX
aWR0aCgpLCBzcmMtPmdldEhlaWdodCgpLCBzb3VyY2VEYXRhLCBzcmNNYXBwZWQuUm93UGl0Y2gs
IGRlc3REYXRhLCBkZXN0TWFwcGVkLlJvd1BpdGNoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FUOgorICAgICAgICAgICAgR2VuZXJh
dGVNaXA8UjMyRzMyRj4oc3JjLT5nZXRXaWR0aCgpLCBzcmMtPmdldEhlaWdodCgpLCBzb3VyY2VE
YXRhLCBzcmNNYXBwZWQuUm93UGl0Y2gsIGRlc3REYXRhLCBkZXN0TWFwcGVkLlJvd1BpdGNoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZXN0
LT51bm1hcCgpOworICAgICAgICBzcmMtPnVubWFwKCk7CisgICAgfQorCisgICAgZGVzdC0+bWFy
a0RpcnR5KCk7Cit9CisKK2Jvb2wgSW1hZ2UxMTo6aXNEaXJ0eSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIChtU3RhZ2luZ1RleHR1cmUgJiYgbURpcnR5KTsKK30KKworYm9vbCBJbWFnZTExOjp1cGRh
dGVTdXJmYWNlKFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIGludCBsZXZlbCwg
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQpCit7CisgICAgVGV4dHVyZVN0b3JhZ2UxMV8yRCAqc3RvcmFnZTExID0gVGV4dHVyZVN0b3Jh
Z2UxMV8yRDo6bWFrZVRleHR1cmVTdG9yYWdlMTFfMkQoc3RvcmFnZS0+Z2V0U3RvcmFnZUluc3Rh
bmNlKCkpOworICAgIHJldHVybiBzdG9yYWdlMTEtPnVwZGF0ZVN1YnJlc291cmNlTGV2ZWwoZ2V0
U3RhZ2luZ1RleHR1cmUoKSwgZ2V0U3RhZ2luZ1N1YnJlc291cmNlKCksIGxldmVsLCAwLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0KTsKK30KKworYm9vbCBJbWFnZTExOjp1cGRhdGVT
dXJmYWNlKFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSAqc3RvcmFnZSwgaW50IGZhY2UsIGlu
dCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQpCit7CisgICAgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlICpzdG9yYWdlMTEgPSBU
ZXh0dXJlU3RvcmFnZTExX0N1YmU6Om1ha2VUZXh0dXJlU3RvcmFnZTExX0N1YmUoc3RvcmFnZS0+
Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgIHJldHVybiBzdG9yYWdlMTEtPnVwZGF0ZVN1YnJl
c291cmNlTGV2ZWwoZ2V0U3RhZ2luZ1RleHR1cmUoKSwgZ2V0U3RhZ2luZ1N1YnJlc291cmNlKCks
IGxldmVsLCBmYWNlLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0KTsKK30KKworYm9v
bCBJbWFnZTExOjpyZWRlZmluZShSZW5kZXJlciAqcmVuZGVyZXIsIEdMaW50IGludGVybmFsZm9y
bWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgYm9vbCBmb3JjZVJlbGVhc2UpCit7
CisgICAgaWYgKG1XaWR0aCAhPSB3aWR0aCB8fAorICAgICAgICBtSGVpZ2h0ICE9IGhlaWdodCB8
fAorICAgICAgICBtSW50ZXJuYWxGb3JtYXQgIT0gaW50ZXJuYWxmb3JtYXQgfHwKKyAgICAgICAg
Zm9yY2VSZWxlYXNlKQorICAgIHsKKyAgICAgICAgbVJlbmRlcmVyID0gUmVuZGVyZXIxMTo6bWFr
ZVJlbmRlcmVyMTEocmVuZGVyZXIpOworCisgICAgICAgIG1XaWR0aCA9IHdpZHRoOworICAgICAg
ICBtSGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBtSW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbGZv
cm1hdDsKKyAgICAgICAgLy8gY29tcHV0ZSB0aGUgZDNkIGZvcm1hdCB0aGF0IHdpbGwgYmUgdXNl
ZAorICAgICAgICBtRFhHSUZvcm1hdCA9IGdsX2QzZDExOjpDb252ZXJ0VGV4dHVyZUZvcm1hdChp
bnRlcm5hbGZvcm1hdCk7CisgICAgICAgIG1BY3R1YWxGb3JtYXQgPSBkM2QxMV9nbDo6Q29udmVy
dFRleHR1cmVJbnRlcm5hbEZvcm1hdChtRFhHSUZvcm1hdCk7CisKKyAgICAgICAgaWYgKG1TdGFn
aW5nVGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgbVN0YWdpbmdUZXh0dXJlLT5SZWxl
YXNlKCk7CisgICAgICAgICAgICBtU3RhZ2luZ1RleHR1cmUgPSBOVUxMOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgSW1hZ2UxMTo6aXNSZW5kZXJhYmxlRm9ybWF0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gVGV4dHVyZVN0b3JhZ2UxMTo6SXNUZXh0dXJlRm9ybWF0UmVuZGVyYWJsZShtRFhHSUZv
cm1hdCk7Cit9CisKK0RYR0lfRk9STUFUIEltYWdlMTE6OmdldERYR0lGb3JtYXQoKSBjb25zdAor
eworICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIGlmIHRoZSBpbWFnZSBoYXNuJ3QgYmVl
biByZWRlZmluZWQgZmlyc3QKKyAgICAvLyB3aGljaCB3b3VsZCBiZSBhIGJ1ZyBieSB0aGUgY2Fs
bGVyCisgICAgQVNTRVJUKG1EWEdJRm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pOworCisg
ICAgcmV0dXJuIG1EWEdJRm9ybWF0OworfQorCisvLyBTdG9yZSB0aGUgcGl4ZWwgcmVjdGFuZ2xl
IGRlc2lnbmF0ZWQgYnkgeG9mZnNldCx5b2Zmc2V0LHdpZHRoLGhlaWdodCB3aXRoIHBpeGVscyBz
dG9yZWQgYXMgZm9ybWF0L3R5cGUgYXQgaW5wdXQKKy8vIGludG8gdGhlIHRhcmdldCBwaXhlbCBy
ZWN0YW5nbGUuCit2b2lkIEltYWdlMTE6OmxvYWREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKmlucHV0KQoreworICAgIEQz
RDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRJbWFnZTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9
IG1hcCgmbWFwcGVkSW1hZ2UpOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAg
ICAgIEVSUigiQ291bGQgbm90IG1hcCBpbWFnZSBmb3IgbG9hZGluZy4iKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBHTHNpemVpIGlucHV0UGl0Y2ggPSBnbDo6Q29tcHV0ZVBp
dGNoKHdpZHRoLCBtSW50ZXJuYWxGb3JtYXQsIHVucGFja0FsaWdubWVudCk7CisgICAgc2l6ZV90
IHBpeGVsU2l6ZSA9IGQzZDExOjpDb21wdXRlUGl4ZWxTaXplQml0cyhtRFhHSUZvcm1hdCkgLyA4
OworICAgIHZvaWQqIG9mZnNldE1hcHBlZERhdGEgPSAodm9pZCopKChCWVRFICopbWFwcGVkSW1h
Z2UucERhdGEgKyAoeW9mZnNldCAqIG1hcHBlZEltYWdlLlJvd1BpdGNoICsgeG9mZnNldCAqIHBp
eGVsU2l6ZSkpOworCisgICAgc3dpdGNoIChtSW50ZXJuYWxGb3JtYXQpCisgICAgeworICAgICAg
Y2FzZSBHTF9BTFBIQThfRVhUOgorICAgICAgICBsb2FkQWxwaGFEYXRhVG9OYXRpdmUod2lkdGgs
IGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRN
YXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhU
OgorICAgICAgICBsb2FkTHVtaW5hbmNlRGF0YVRvTmF0aXZlT3JCR1JBKHdpZHRoLCBoZWlnaHQs
IGlucHV0UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0
YSwgZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhUOgor
ICAgICAgICBsb2FkQWxwaGFGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRj
aCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTMyRl9FWFQ6CisgICAgICAgIGxvYWRM
dW1pbmFuY2VGbG9hdERhdGFUb1JHQih3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwg
bWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOgorICAgICAgICBsb2FkQWxwaGFIYWxmRmxvYXRE
YXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5S
b3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0UxNkZfRVhUOgorICAgICAgICBsb2FkTHVtaW5hbmNlSGFsZkZsb2F0RGF0YVRv
UkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0
Y2gsIG9mZnNldE1hcHBlZERhdGEpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTFVN
SU5BTkNFOF9BTFBIQThfRVhUOgorICAgICAgICBsb2FkTHVtaW5hbmNlQWxwaGFEYXRhVG9OYXRp
dmVPckJHUkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJv
d1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhLCBmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUOgorICAgICAgICBsb2FkTHVtaW5hbmNlQWxw
aGFGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBl
ZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VB
bHBoYUhhbGZGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQs
IG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX1JHQjhfT0VTOgorICAgICAgICBsb2FkUkdCVUJ5dGVEYXRhVG9SR0JB
KHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwg
b2Zmc2V0TWFwcGVkRGF0YSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0I1NjU6
CisgICAgICAgIGxvYWRSR0I1NjVEYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gs
IGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9SR0JBOF9PRVM6CisgICAgICAgIGxvYWRSR0JBVUJ5dGVE
YXRhVG9OYXRpdmUod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdl
LlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX1JHQkE0OgorICAgICAgICBsb2FkUkdCQTQ0NDREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQs
IGlucHV0UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0
YSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgICBsb2Fk
UkdCQTU1NTFEYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBtYXBw
ZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9CR1JBOF9FWFQ6CisgICAgICAgIGxvYWRCR1JBRGF0YVRvQkdSQSh3aWR0aCwg
aGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1h
cHBlZERhdGEpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCMzJGX0VYVDoKKyAg
ICAgICAgbG9hZFJHQkZsb2F0RGF0YVRvTmF0aXZlKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gs
IGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9SR0IxNkZfRVhUOgorICAgICAgICBsb2FkUkdCSGFsZkZs
b2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1h
Z2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOworICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfUkdCQTMyRl9FWFQ6CisgICAgICAgIGxvYWRSR0JBRmxvYXREYXRhVG9SR0JBKHdpZHRo
LCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0
TWFwcGVkRGF0YSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0JBMTZGX0VYVDoK
KyAgICAgICAgbG9hZFJHQkFIYWxmRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0
UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7Cisg
ICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgCisgICAgfQorCisg
ICAgdW5tYXAoKTsKK30KKwordm9pZCBJbWFnZTExOjpsb2FkQ29tcHJlc3NlZERhdGEoR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmlucHV0KQoreworICAg
IEFTU0VSVCh4b2Zmc2V0ICUgNCA9PSAwKTsKKyAgICBBU1NFUlQoeW9mZnNldCAlIDQgPT0gMCk7
CisKKyAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkSW1hZ2U7CisgICAgSFJFU1VM
VCByZXN1bHQgPSBtYXAoJm1hcHBlZEltYWdlKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisg
ICAgeworICAgICAgICBFUlIoIkNvdWxkIG5vdCBtYXAgaW1hZ2UgZm9yIGxvYWRpbmcuIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBTaXplIGNvbXB1dGF0aW9uIGFzc3VtZXMg
YSA0eDQgYmxvY2sgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdAorICAgIHNpemVfdCBibG9ja1Np
emUgPSBkM2QxMTo6Q29tcHV0ZUJsb2NrU2l6ZUJpdHMobURYR0lGb3JtYXQpIC8gODsKKyAgICB2
b2lkKiBvZmZzZXRNYXBwZWREYXRhID0gKHZvaWQqKSgoQllURSAqKW1hcHBlZEltYWdlLnBEYXRh
ICsgKCh5b2Zmc2V0IC8gNCkgKiBtYXBwZWRJbWFnZS5Sb3dQaXRjaCArICh4b2Zmc2V0IC8gNCkg
KiBibG9ja1NpemUpKTsKKworICAgIEdMc2l6ZWkgaW5wdXRTaXplID0gZ2w6OkNvbXB1dGVDb21w
cmVzc2VkU2l6ZSh3aWR0aCwgaGVpZ2h0LCBtSW50ZXJuYWxGb3JtYXQpOworICAgIEdMc2l6ZWkg
aW5wdXRQaXRjaCA9IGdsOjpDb21wdXRlQ29tcHJlc3NlZFBpdGNoKHdpZHRoLCBtSW50ZXJuYWxG
b3JtYXQpOworICAgIGludCByb3dzID0gaW5wdXRTaXplIC8gaW5wdXRQaXRjaDsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHJvd3M7ICsraSkKKyAgICB7CisgICAgICAgIG1lbWNweSgodm9pZCop
KChCWVRFKilvZmZzZXRNYXBwZWREYXRhICsgaSAqIG1hcHBlZEltYWdlLlJvd1BpdGNoKSwgKHZv
aWQqKSgoQllURSopaW5wdXQgKyBpICogaW5wdXRQaXRjaCksIGlucHV0UGl0Y2gpOworICAgIH0K
KworICAgIHVubWFwKCk7Cit9CisKK3ZvaWQgSW1hZ2UxMTo6Y29weShHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpCit7CisgICAgZ2w6OlJlbmRlcmJ1ZmZlciAq
Y29sb3JidWZmZXIgPSBzb3VyY2UtPmdldFJlYWRDb2xvcmJ1ZmZlcigpOworCisgICAgaWYgKGNv
bG9yYnVmZmVyICYmIGNvbG9yYnVmZmVyLT5nZXRBY3R1YWxGb3JtYXQoKSA9PSAoR0x1aW50KW1B
Y3R1YWxGb3JtYXQpCisgICAgeworICAgICAgICAvLyBObyBjb252ZXJzaW9uIG5lZWRlZC0tIHVz
ZSBjb3B5YmFjayBmYXN0cGF0aAorICAgICAgICBJRDNEMTFUZXh0dXJlMkQgKmNvbG9yQnVmZmVy
VGV4dHVyZSA9IE5VTEw7CisgICAgICAgIHVuc2lnbmVkIGludCBzdWJyZXNvdXJjZUluZGV4ID0g
MDsKKworICAgICAgICBpZiAobVJlbmRlcmVyLT5nZXRSZW5kZXJUYXJnZXRSZXNvdXJjZShjb2xv
cmJ1ZmZlciwgJnN1YnJlc291cmNlSW5kZXgsICZjb2xvckJ1ZmZlclRleHR1cmUpKQorICAgICAg
ICB7CisgICAgICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyB0ZXh0dXJlRGVzYzsKKyAgICAg
ICAgICAgIGNvbG9yQnVmZmVyVGV4dHVyZS0+R2V0RGVzYygmdGV4dHVyZURlc2MpOworCisgICAg
ICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7Cisg
ICAgICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVy
LT5nZXREZXZpY2VDb250ZXh0KCk7CisKKyAgICAgICAgICAgIElEM0QxMVRleHR1cmUyRCogc3Jj
VGV4ID0gTlVMTDsKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlRGVzYy5TYW1wbGVEZXNjLkNvdW50
ID4gMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVT
QyByZXNvbHZlRGVzYzsKKyAgICAgICAgICAgICAgICByZXNvbHZlRGVzYy5XaWR0aCA9IHRleHR1
cmVEZXNjLldpZHRoOworICAgICAgICAgICAgICAgIHJlc29sdmVEZXNjLkhlaWdodCA9IHRleHR1
cmVEZXNjLkhlaWdodDsKKyAgICAgICAgICAgICAgICByZXNvbHZlRGVzYy5NaXBMZXZlbHMgPSAx
OworICAgICAgICAgICAgICAgIHJlc29sdmVEZXNjLkFycmF5U2l6ZSA9IDE7CisgICAgICAgICAg
ICAgICAgcmVzb2x2ZURlc2MuRm9ybWF0ID0gdGV4dHVyZURlc2MuRm9ybWF0OworICAgICAgICAg
ICAgICAgIHJlc29sdmVEZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICAgICAgICAg
IHJlc29sdmVEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZURlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOworICAgICAgICAgICAgICAgIHJl
c29sdmVEZXNjLkJpbmRGbGFncyA9IDA7CisgICAgICAgICAgICAgICAgcmVzb2x2ZURlc2MuQ1BV
QWNjZXNzRmxhZ3MgPSAwOworICAgICAgICAgICAgICAgIHJlc29sdmVEZXNjLk1pc2NGbGFncyA9
IDA7CisKKyAgICAgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4
dHVyZTJEKCZyZXNvbHZlRGVzYywgTlVMTCwgJnNyY1RleCk7CisgICAgICAgICAgICAgICAgaWYg
KEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
RVJSKCJGYWlsZWQgdG8gY3JlYXRlIHJlc29sdmUgdGV4dHVyZSBmb3IgSW1hZ2UxMTo6Y29weSwg
SFJFU1VMVDogMHglWC4iLCByZXN1bHQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZGV2aWNlQ29udGV4dC0+UmVzb2x2
ZVN1YnJlc291cmNlKHNyY1RleCwgMCwgY29sb3JCdWZmZXJUZXh0dXJlLCBzdWJyZXNvdXJjZUlu
ZGV4LCB0ZXh0dXJlRGVzYy5Gb3JtYXQpOworICAgICAgICAgICAgICAgIHN1YnJlc291cmNlSW5k
ZXggPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHNyY1RleCA9IGNvbG9yQnVmZmVyVGV4dHVyZTsKKyAgICAgICAgICAg
ICAgICBzcmNUZXgtPkFkZFJlZigpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBEM0Qx
MV9CT1ggc3JjQm94OworICAgICAgICAgICAgc3JjQm94LmxlZnQgPSB4OworICAgICAgICAgICAg
c3JjQm94LnJpZ2h0ID0geCArIHdpZHRoOworICAgICAgICAgICAgc3JjQm94LnRvcCA9IHk7Cisg
ICAgICAgICAgICBzcmNCb3guYm90dG9tID0geSArIGhlaWdodDsKKyAgICAgICAgICAgIHNyY0Jv
eC5mcm9udCA9IDA7CisgICAgICAgICAgICBzcmNCb3guYmFjayA9IDE7CisKKyAgICAgICAgICAg
IGRldmljZUNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihtU3RhZ2luZ1RleHR1cmUsIDAs
IHhvZmZzZXQsIHlvZmZzZXQsIDAsIHNyY1RleCwgc3VicmVzb3VyY2VJbmRleCwgJnNyY0JveCk7
CisKKyAgICAgICAgICAgIHNyY1RleC0+UmVsZWFzZSgpOworICAgICAgICAgICAgY29sb3JCdWZm
ZXJUZXh0dXJlLT5SZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgLy8gVGhpcyBmb3JtYXQgcmVxdWlyZXMgY29udmVyc2lvbiwgc28gd2UgbXVzdCBj
b3B5IHRoZSB0ZXh0dXJlIHRvIHN0YWdpbmcgYW5kIG1hbnVhbGx5IGNvbnZlcnQgdmlhIHJlYWRQ
aXhlbHMKKyAgICAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZEltYWdlOworICAg
ICAgICBIUkVTVUxUIHJlc3VsdCA9IG1hcCgmbWFwcGVkSW1hZ2UpOworICAgICAgICAgICAgCisg
ICAgICAgIC8vIGRldGVybWluZSB0aGUgb2Zmc2V0IGNvb3JkaW5hdGUgaW50byB0aGUgZGVzdGlu
YXRpb24gYnVmZmVyCisgICAgICAgIEdMc2l6ZWkgcm93T2Zmc2V0ID0gZ2w6OkNvbXB1dGVQaXhl
bFNpemUobUFjdHVhbEZvcm1hdCkgKiB4b2Zmc2V0OworICAgICAgICB2b2lkICpkYXRhT2Zmc2V0
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1hcHBlZEltYWdlLnBEYXRhKSArIG1hcHBl
ZEltYWdlLlJvd1BpdGNoICogeW9mZnNldCArIHJvd09mZnNldDsKKworICAgICAgICBtUmVuZGVy
ZXItPnJlYWRQaXhlbHMoc291cmNlLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBnbDo6RXh0cmFjdEZv
cm1hdChtSW50ZXJuYWxGb3JtYXQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
OjpFeHRyYWN0VHlwZShtSW50ZXJuYWxGb3JtYXQpLCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgZmFs
c2UsIDQsIGRhdGFPZmZzZXQpOworCisgICAgICAgIHVubWFwKCk7CisgICAgfQorfQorCitJRDNE
MTFUZXh0dXJlMkQgKkltYWdlMTE6OmdldFN0YWdpbmdUZXh0dXJlKCkKK3sKKyAgICBjcmVhdGVT
dGFnaW5nVGV4dHVyZSgpOworCisgICAgcmV0dXJuIG1TdGFnaW5nVGV4dHVyZTsKK30KKwordW5z
aWduZWQgaW50IEltYWdlMTE6OmdldFN0YWdpbmdTdWJyZXNvdXJjZSgpCit7CisgICAgY3JlYXRl
U3RhZ2luZ1RleHR1cmUoKTsKKworICAgIHJldHVybiBtU3RhZ2luZ1N1YnJlc291cmNlOworfQor
Cit2b2lkIEltYWdlMTE6OmNyZWF0ZVN0YWdpbmdUZXh0dXJlKCkKK3sKKyAgICBpZiAobVN0YWdp
bmdUZXh0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIElEM0QxMVRl
eHR1cmUyRCAqbmV3VGV4dHVyZSA9IE5VTEw7CisgICAgaW50IGxvZE9mZnNldCA9IDE7CisgICAg
Y29uc3QgRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCA9IGdldERYR0lGb3JtYXQoKTsKKyAgICBBU1NF
UlQoIWQzZDExOjpJc0RlcHRoU3RlbmNpbEZvcm1hdChkeGdpRm9ybWF0KSk7IC8vIFdlIHNob3Vs
ZCBuZXZlciBnZXQgaGVyZSBmb3IgZGVwdGggdGV4dHVyZXMKKworICAgIGlmIChtV2lkdGggIT0g
MCAmJiBtSGVpZ2h0ICE9IDApCisgICAgeworICAgICAgICBHTHNpemVpIHdpZHRoID0gbVdpZHRo
OworICAgICAgICBHTHNpemVpIGhlaWdodCA9IG1IZWlnaHQ7CisKKyAgICAgICAgLy8gYWRqdXN0
IHNpemUgaWYgbmVlZGVkIGZvciBjb21wcmVzc2VkIHRleHR1cmVzCisgICAgICAgIGdsOjpNYWtl
VmFsaWRTaXplKGZhbHNlLCBkM2QxMTo6SXNDb21wcmVzc2VkKGR4Z2lGb3JtYXQpLCAmd2lkdGgs
ICZoZWlnaHQsICZsb2RPZmZzZXQpOworICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1S
ZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVz
YzsKKyAgICAgICAgZGVzYy5XaWR0aCA9IHdpZHRoOworICAgICAgICBkZXNjLkhlaWdodCA9IGhl
aWdodDsKKyAgICAgICAgZGVzYy5NaXBMZXZlbHMgPSBsb2RPZmZzZXQgKyAxOworICAgICAgICBk
ZXNjLkFycmF5U2l6ZSA9IDE7CisgICAgICAgIGRlc2MuRm9ybWF0ID0gZHhnaUZvcm1hdDsKKyAg
ICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKKyAgICAgICAgZGVzYy5TYW1wbGVEZXNj
LlF1YWxpdHkgPSAwOworICAgICAgICBkZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfU1RBR0lORzsK
KyAgICAgICAgZGVzYy5CaW5kRmxhZ3MgPSAwOworICAgICAgICBkZXNjLkNQVUFjY2Vzc0ZsYWdz
ID0gRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsKKyAgICAgICAgZGVzYy5NaXNjRmxhZ3MgPSAwOwor
CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlc2Ms
IE5VTEwsICZuZXdUZXh0dXJlKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7CisgICAg
ICAgICAgICBFUlIoIkNyZWF0aW5nIGltYWdlIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBt
U3RhZ2luZ1RleHR1cmUgPSBuZXdUZXh0dXJlOworICAgIG1TdGFnaW5nU3VicmVzb3VyY2UgPSBE
M0QxMUNhbGNTdWJyZXNvdXJjZShsb2RPZmZzZXQsIDAsIGxvZE9mZnNldCArIDEpOworICAgIG1E
aXJ0eSA9IGZhbHNlOworfQorCitIUkVTVUxUIEltYWdlMTE6Om1hcChEM0QxMV9NQVBQRURfU1VC
UkVTT1VSQ0UgKm1hcCkKK3sKKyAgICBjcmVhdGVTdGFnaW5nVGV4dHVyZSgpOworCisgICAgSFJF
U1VMVCByZXN1bHQgPSBFX0ZBSUw7CisKKyAgICBpZiAobVN0YWdpbmdUZXh0dXJlKQorICAgIHsK
KyAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqZGV2aWNlQ29udGV4dCA9IG1SZW5kZXJlci0+
Z2V0RGV2aWNlQ29udGV4dCgpOworICAgICAgICByZXN1bHQgPSBkZXZpY2VDb250ZXh0LT5NYXAo
bVN0YWdpbmdUZXh0dXJlLCBtU3RhZ2luZ1N1YnJlc291cmNlLCBEM0QxMV9NQVBfV1JJVEUsIDAs
IG1hcCk7CisKKyAgICAgICAgLy8gdGhpcyBjYW4gZmFpbCBpZiB0aGUgZGV2aWNlIGlzIHJlbW92
ZWQgKGZyb20gVERSKQorICAgICAgICBpZiAoZDNkMTE6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3Vs
dCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNlTG9zdCgp
OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAg
ICB7CisgICAgICAgICAgICBtRGlydHkgPSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBJbWFnZTExOjp1bm1hcCgpCit7CisgICAgaWYgKG1T
dGFnaW5nVGV4dHVyZSkKKyAgICB7CisgICAgICAgIElEM0QxMURldmljZUNvbnRleHQgKmRldmlj
ZUNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKKyAgICAgICAgZGV2aWNl
Q29udGV4dC0+VW5tYXAobVN0YWdpbmdUZXh0dXJlLCBtU3RhZ2luZ1N1YnJlc291cmNlKTsKKyAg
ICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvSW1hZ2UxMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UxMS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTExLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbWFnZTExLmg6IERl
ZmluZXMgdGhlIHJ4OjpJbWFnZTExIGNsYXNzLCB3aGljaCBhY3RzIGFzIHRoZSBpbnRlcmZhY2Ug
dG8KKy8vIHRoZSBhY3R1YWwgdW5kZXJseWluZyByZXNvdXJjZXMgb2YgYSBUZXh0dXJlCisKKyNp
Zm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX0lNQUdFMTFfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JF
TkRFUkVSX0lNQUdFMTFfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5o
IgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSBnbAoreworY2xhc3Mg
RnJhbWVidWZmZXI7Cit9CisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFz
cyBSZW5kZXJlcjExOworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDsKK2NsYXNzIFRl
eHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTsKKworY2xhc3MgSW1hZ2UxMSA6IHB1YmxpYyBJbWFn
ZQoreworICBwdWJsaWM6CisgICAgSW1hZ2UxMSgpOworICAgIHZpcnR1YWwgfkltYWdlMTEoKTsK
KworICAgIHN0YXRpYyBJbWFnZTExICptYWtlSW1hZ2UxMShJbWFnZSAqaW1nKTsKKworICAgIHN0
YXRpYyB2b2lkIGdlbmVyYXRlTWlwbWFwKEltYWdlMTEgKmRlc3QsIEltYWdlMTEgKnNyYyk7CisK
KyAgICB2aXJ0dWFsIGJvb2wgaXNEaXJ0eSgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIHVw
ZGF0ZVN1cmZhY2UoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc3RvcmFnZSwgaW50IGxldmVs
LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCk7CisgICAgdmlydHVhbCBib29sIHVwZGF0ZVN1cmZhY2UoVGV4dHVyZVN0b3JhZ2VJbnRl
cmZhY2VDdWJlICpzdG9yYWdlLCBpbnQgZmFjZSwgaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisKKyAgICB2aXJ0
dWFsIGJvb2wgcmVkZWZpbmUoUmVuZGVyZXIgKnJlbmRlcmVyLCBHTGludCBpbnRlcm5hbGZvcm1h
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIGJvb2wgZm9yY2VSZWxlYXNlKTsKKwor
ICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlcmFibGVGb3JtYXQoKSBjb25zdDsKKyAgICBEWEdJX0ZP
Uk1BVCBnZXREWEdJRm9ybWF0KCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGxvYWRE
YXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2
b2lkICppbnB1dCk7CisgICAgdmlydHVhbCB2b2lkIGxvYWRDb21wcmVzc2VkRGF0YShHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmlucHV0KTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBjb3B5KEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50
IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBnbDo6RnJhbWVidWZm
ZXIgKnNvdXJjZSk7CisKKyAgcHJvdGVjdGVkOgorICAgIEhSRVNVTFQgbWFwKEQzRDExX01BUFBF
RF9TVUJSRVNPVVJDRSAqbWFwKTsKKyAgICB2b2lkIHVubWFwKCk7CisKKyAgcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oSW1hZ2UxMSk7CisKKyAgICBJRDNEMTFUZXh0dXJl
MkQgKmdldFN0YWdpbmdUZXh0dXJlKCk7CisgICAgdW5zaWduZWQgaW50IGdldFN0YWdpbmdTdWJy
ZXNvdXJjZSgpOworICAgIHZvaWQgY3JlYXRlU3RhZ2luZ1RleHR1cmUoKTsKKworICAgIFJlbmRl
cmVyMTEgKm1SZW5kZXJlcjsKKworICAgIERYR0lfRk9STUFUIG1EWEdJRm9ybWF0OworICAgIElE
M0QxMVRleHR1cmUyRCAqbVN0YWdpbmdUZXh0dXJlOworICAgIHVuc2lnbmVkIGludCBtU3RhZ2lu
Z1N1YnJlc291cmNlOworfTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0lN
QUdFMTFfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTQ4IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKy8vIEltYWdlLmg6IEltcGxlbWVudHMgdGhlIHJ4OjpJbWFnZSBjbGFzcywg
YW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgdGhlIAorLy8gcmVuZGVyZXItc3BlY2lmaWMgY2xh
c3NlcyB3aGljaCB3aWxsIGRlZmluZSB0aGUgaW50ZXJmYWNlIHRvIHRoZSB1bmRlcmx5aW5nCisv
LyBzdXJmYWNlcyBvciByZXNvdXJjZXMuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
SW1hZ2UuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0ltYWdlOjpJbWFnZSgpCit7CisgICAgbVdp
ZHRoID0gMDsgCisgICAgbUhlaWdodCA9IDA7CisgICAgbUludGVybmFsRm9ybWF0ID0gR0xfTk9O
RTsKKyAgICBtQWN0dWFsRm9ybWF0ID0gR0xfTk9ORTsKK30KKwordm9pZCBJbWFnZTo6bG9hZEFs
cGhhRGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBz
aXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBj
aGFyICpzb3VyY2UgPSBOVUxMOworICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOworICAg
IAorICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBz
b3VyY2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlu
cHV0UGl0Y2g7CisgICAgICAgIGRlc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0
cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0
aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSAwOworICAg
ICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gMDsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAy
XSA9IDA7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBzb3VyY2VbeF07CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRBbHBoYURhdGFUb05hdGl2ZShHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwg
dm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9IE5VTEw7
CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0gMDsg
eSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoOworICAgICAgICBkZXN0
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2g7
CisgICAgICAgIG1lbWNweShkZXN0LCBzb3VyY2UsIHdpZHRoKTsKKyAgICB9Cit9CisKK3ZvaWQg
SW1hZ2U6OmxvYWRBbHBoYUZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRj
aCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQor
eworICAgIGNvbnN0IGZsb2F0ICpzb3VyY2UgPSBOVUxMOworICAgIGZsb2F0ICpkZXN0ID0gTlVM
TDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAg
ICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oc3RhdGljX2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKKyAgICAgICAgZGVz
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4o
b3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
d2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gMDsK
KyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IDA7CisgICAgICAgICAgICBkZXN0WzQgKiB4
ICsgMl0gPSAwOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gc291cmNlW3hdOworICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkQWxwaGFIYWxmRmxvYXREYXRhVG9S
R0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNp
emVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0ICpzb3VyY2UgPSBOVUxMOworICAgIHVuc2lnbmVkIHNob3J0ICpkZXN0ID0gTlVMTDsKKwor
ICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBzb3Vy
Y2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oc3RhdGljX2Nhc3Q8
Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKKyAgICAgICAg
ZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgc2hvcnQqPihzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7CisgICAgICAgIGZvciAoaW50
IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGVzdFs0ICog
eCArIDBdID0gMDsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IDA7CisgICAgICAgICAg
ICBkZXN0WzQgKiB4ICsgMl0gPSAwOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gc291
cmNlW3hdOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkTHVtaW5hbmNl
RGF0YVRvTmF0aXZlT3JCR1JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29u
c3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0LCBib29sIG5h
dGl2ZSkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzb3VyY2UgPSBOVUxMOworICAgIHVu
c2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWln
aHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaDsKKyAgICAgICAgZGVzdCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoOworCisgICAg
ICAgIGlmICghbmF0aXZlKSAgIC8vIEJHUkE4IGRlc3RpbmF0aW9uIGZvcm1hdAorICAgICAgICB7
CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlW3hdOworICAgICAg
ICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgICAgICBk
ZXN0WzQgKiB4ICsgMl0gPSBzb3VyY2VbeF07CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCAr
IDNdID0gMHhGRjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlICAgLy8g
TDggZGVzdGluYXRpb24gZm9ybWF0CisgICAgICAgIHsKKyAgICAgICAgICAgIG1lbWNweShkZXN0
LCBzb3VyY2UsIHdpZHRoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9h
ZEx1bWluYW5jZUZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gs
IGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sK
KyAgICBjb25zdCBmbG9hdCAqc291cmNlID0gTlVMTDsKKyAgICBmbG9hdCAqZGVzdCA9IE5VTEw7
CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAg
c291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHN0YXRpY19jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRlc3Qg
PSByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91
dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdp
ZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHNvdXJj
ZVt4XTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4XTsKKyAgICAgICAg
ICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAzXSA9IDEuMGY7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRMdW1p
bmFuY2VGbG9hdERhdGFUb1JHQihHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qg
dm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNv
bnN0IGZsb2F0ICpzb3VyY2UgPSBOVUxMOworICAgIGZsb2F0ICpkZXN0ID0gTlVMTDsKKworICAg
IGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2Ug
PSByZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKKyAgICAgICAgZGVzdCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSAr
IHkgKiBvdXRwdXRQaXRjaCk7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgr
KykKKyAgICAgICAgeworICAgICAgICAgICAgZGVzdFszICogeCArIDBdID0gc291cmNlW3hdOwor
ICAgICAgICAgICAgZGVzdFszICogeCArIDFdID0gc291cmNlW3hdOworICAgICAgICAgICAgZGVz
dFszICogeCArIDJdID0gc291cmNlW3hdOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIElt
YWdlOjpsb2FkTHVtaW5hbmNlSGFsZkZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2
b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKnNvdXJjZSA9IE5VTEw7
CisgICAgdW5zaWduZWQgc2hvcnQgKmRlc3QgPSBOVUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7
IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0gcmVpbnRlcnByZXRf
Y2FzdDx1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQp
ICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsg
eCsrKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3VyY2VbeF07
CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbeF07CisgICAgICAgICAgICBk
ZXN0WzQgKiB4ICsgMl0gPSBzb3VyY2VbeF07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10g
PSAweDNDMDA7IC8vIFNFRUVFRU1NTU1NTU1NTU0sIFMgPSAwLCBFID0gMTUsIE0gPSAwOiAxNmJp
dCBmbHB0IHJlcHJlc2VudGF0aW9uIG9mIDEKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJ
bWFnZTo6bG9hZEx1bWluYW5jZUFscGhhRGF0YVRvTmF0aXZlT3JCR1JBKEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1
dFBpdGNoLCB2b2lkICpvdXRwdXQsIGJvb2wgbmF0aXZlKQoreworICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CisK
KyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291
cmNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1
dFBpdGNoOworICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1
dCkgKyB5ICogb3V0cHV0UGl0Y2g7CisgICAgICAgIAorICAgICAgICBpZiAoIW5hdGl2ZSkgICAv
LyBCR1JBOCBkZXN0aW5hdGlvbiBmb3JtYXQKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChp
bnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGRlc3RbNCAqIHggKyAwXSA9IHNvdXJjZVsyKngrMF07CisgICAgICAgICAgICAgICAgZGVzdFs0
ICogeCArIDFdID0gc291cmNlWzIqeCswXTsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsg
Ml0gPSBzb3VyY2VbMip4KzBdOworICAgICAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHNv
dXJjZVsyKngrMV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCwgc291cmNlLCB3aWR0aCAqIDIpOworICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkTHVtaW5hbmNlQWxwaGFGbG9hdERh
dGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQg
KmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCBm
bG9hdCAqc291cmNlID0gTlVMTDsKKyAgICBmbG9hdCAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3Ig
KGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNo
YXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRlc3QgPSByZWludGVycHJl
dF9jYXN0PGZsb2F0Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICog
b3V0cHV0UGl0Y2gpOworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHNvdXJjZVsyKngrMF07Cisg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbMip4KzBdOworICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDJdID0gc291cmNlWzIqeCswXTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAzXSA9IHNvdXJjZVsyKngrMV07CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6
OmxvYWRMdW1pbmFuY2VBbHBoYUhhbGZGbG9hdERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBp
dGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKnNvdXJjZSA9
IE5VTEw7CisgICAgdW5zaWduZWQgc2hvcnQgKmRlc3QgPSBOVUxMOworCisgICAgZm9yIChpbnQg
eSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0gcmVpbnRl
cnByZXRfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihv
dXRwdXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3
aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3Vy
Y2VbMip4KzBdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNlWzIqeCswXTsK
KyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVsyKngrMF07CisgICAgICAgICAg
ICBkZXN0WzQgKiB4ICsgM10gPSBzb3VyY2VbMip4KzFdOworICAgICAgICB9CisgICAgfQorfQor
Cit2b2lkIEltYWdlOjpsb2FkUkdCVUJ5dGVEYXRhVG9CR1JYKEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQ
aXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0
KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWdu
ZWQgY2hhciAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsg
eSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoOworICAgICAgICBkZXN0ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2g7CisgICAgICAgIGZv
ciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGVz
dFs0ICogeCArIDBdID0gc291cmNlW3ggKiAzICsgMl07CisgICAgICAgICAgICBkZXN0WzQgKiB4
ICsgMV0gPSBzb3VyY2VbeCAqIDMgKyAxXTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9
IHNvdXJjZVt4ICogMyArIDBdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gMHhGRjsK
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9hZFJHQlVCeXRlRGF0YVRvUkdC
QShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0
cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzb3Vy
Y2UgPSBOVUxMOworICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOworCisgICAgZm9yIChp
bnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHN0YXRp
Y19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaDsKKyAg
ICAgICAgZGVzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsgeSAqIG91
dHB1dFBpdGNoOworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHNvdXJjZVt4ICogMyArIDBdOwor
ICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNlW3ggKiAzICsgMV07CisgICAgICAg
ICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzb3VyY2VbeCAqIDMgKyAyXTsKKyAgICAgICAgICAgIGRl
c3RbNCAqIHggKyAzXSA9IDB4RkY7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6
OmxvYWRSR0I1NjVEYXRhVG9CR1JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQg
KmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBjaGFyICpkZXN0ID0g
TlVMTDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAg
ICAgICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oc3Rh
dGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsK
KyAgICAgICAgZGVzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsgeSAq
IG91dHB1dFBpdGNoOworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHJnYmEgPSBzb3VyY2VbeF07Cisg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSAoKHJnYmEgJiAweDAwMUYpIDw8IDMpIHwgKChy
Z2JhICYgMHgwMDFGKSA+PiAyKTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9ICgocmdi
YSAmIDB4MDdFMCkgPj4gMykgfCAoKHJnYmEgJiAweDA3RTApID4+IDkpOworICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDJdID0gKChyZ2JhICYgMHhGODAwKSA+PiA4KSB8ICgocmdiYSAmIDB4Rjgw
MCkgPj4gMTMpOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gMHhGRjsKKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9hZFJHQjU2NURhdGFUb1JHQkEoR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9p
ZCAqb3V0cHV0KQoreworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOwor
ICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkg
PCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdW5zaWduZWQgc2hvcnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4o
aW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2g7CisgICAgICAgIGZvciAoaW50
IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQg
c2hvcnQgcmdiYSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9ICgo
cmdiYSAmIDB4RjgwMCkgPj4gOCkgfCAoKHJnYmEgJiAweEY4MDApID4+IDEzKTsKKyAgICAgICAg
ICAgIGRlc3RbNCAqIHggKyAxXSA9ICgocmdiYSAmIDB4MDdFMCkgPj4gMykgfCAoKHJnYmEgJiAw
eDA3RTApID4+IDkpOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gKChyZ2JhICYgMHgw
MDFGKSA8PCAzKSB8ICgocmdiYSAmIDB4MDAxRikgPj4gMik7CisgICAgICAgICAgICBkZXN0WzQg
KiB4ICsgM10gPSAweEZGOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2Fk
UkdCRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAq
aW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0IGZs
b2F0ICpzb3VyY2UgPSBOVUxMOworICAgIGZsb2F0ICpkZXN0ID0gTlVMTDsKKworICAgIGZvciAo
aW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKKyAgICAgICAgZGVzdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8ZmxvYXQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBv
dXRwdXRQaXRjaCk7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlW3ggKiAzICsgMF07
CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbeCAqIDMgKyAxXTsKKyAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4ICogMyArIDJdOworICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDNdID0gMS4wZjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbWFn
ZTo6bG9hZFJHQkZsb2F0RGF0YVRvTmF0aXZlKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBj
b25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7Cisg
ICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9IE5VTEw7CisgICAgZmxvYXQgKmRlc3QgPSBOVUxMOwor
CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNv
dXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0g
cmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRw
dXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lk
dGggKiAxMik7CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdCSGFsZkZsb2F0RGF0YVRv
UkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6
ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgc2hvcnQgKmRlc3QgPSBOVUxMOworCisg
ICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJj
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihzdGF0aWNfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBk
ZXN0ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgZm9yIChpbnQg
eCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0WzQgKiB4
ICsgMF0gPSBzb3VyY2VbeCAqIDMgKyAwXTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9
IHNvdXJjZVt4ICogMyArIDFdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc291cmNl
W3ggKiAzICsgMl07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAweDNDMDA7IC8vIFNF
RUVFRU1NTU1NTU1NTU0sIFMgPSAwLCBFID0gMTUsIE0gPSAwOiAxNmJpdCBmbHB0IHJlcHJlc2Vu
dGF0aW9uIG9mIDEKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9hZFJHQkFV
Qnl0ZURhdGFUb0JHUkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5w
dXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0IHVuc2ln
bmVkIGludCAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBpbnQgKmRlc3QgPSBOVUxMOwor
ICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBzb3Vy
Y2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGludCo+KHN0YXRpY19jYXN0PGNv
bnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRl
c3QgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGludCo+KHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKworICAgICAgICBmb3IgKGludCB4
ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCByZ2JhID0gc291cmNlW3hdOworICAgICAgICAgICAgZGVzdFt4XSA9IChfcm90bChyZ2JhLCAx
NikgJiAweDAwZmYwMGZmKSB8IChyZ2JhICYgMHhmZjAwZmYwMCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRSR0JBVUJ5dGVEYXRhVG9OYXRpdmUoR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2
b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgaW50ICpzb3VyY2UgPSBOVUxMOwor
ICAgIHVuc2lnbmVkIGludCAqZGVzdCA9IE5VTEw7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBo
ZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgaW50Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0
KSArIHkgKiBpbnB1dFBpdGNoKTsKKyAgICAgICAgZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5z
aWduZWQgaW50Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0
cHV0UGl0Y2gpOworCisgICAgICAgIG1lbWNweShkZXN0LCBzb3VyY2UsIHdpZHRoICogNCk7Cisg
ICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdCQTQ0NDREYXRhVG9CR1JBKEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9p
ZCAqb3V0cHV0KQoreworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOwor
ICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkg
PCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdW5zaWduZWQgc2hvcnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4o
aW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2g7CisgICAgICAgIGZvciAoaW50
IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQg
c2hvcnQgcmdiYSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9ICgo
cmdiYSAmIDB4MDBGMCkgPDwgMCkgfCAoKHJnYmEgJiAweDAwRjApID4+IDQpOworICAgICAgICAg
ICAgZGVzdFs0ICogeCArIDFdID0gKChyZ2JhICYgMHgwRjAwKSA+PiA0KSB8ICgocmdiYSAmIDB4
MEYwMCkgPj4gOCk7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSAoKHJnYmEgJiAweEYw
MDApID4+IDgpIHwgKChyZ2JhICYgMHhGMDAwKSA+PiAxMik7CisgICAgICAgICAgICBkZXN0WzQg
KiB4ICsgM10gPSAoKHJnYmEgJiAweDAwMEYpIDw8IDQpIHwgKChyZ2JhICYgMHgwMDBGKSA+PiAw
KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9hZFJHQkE0NDQ0RGF0YVRv
UkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qg
b3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCAq
c291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gTlVMTDsKKworICAgIGZv
ciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKKyAgICAgICAgZGVzdCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoOwor
ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIHNob3J0IHJnYmEgPSBzb3VyY2VbeF07CisgICAgICAgICAgICBkZXN0
WzQgKiB4ICsgMF0gPSAoKHJnYmEgJiAweEYwMDApID4+IDgpIHwgKChyZ2JhICYgMHhGMDAwKSA+
PiAxMik7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSAoKHJnYmEgJiAweDBGMDApID4+
IDQpIHwgKChyZ2JhICYgMHgwRjAwKSA+PiA4KTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAy
XSA9ICgocmdiYSAmIDB4MDBGMCkgPDwgMCkgfCAoKHJnYmEgJiAweDAwRjApID4+IDQpOworICAg
ICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gKChyZ2JhICYgMHgwMDBGKSA8PCA0KSB8ICgocmdi
YSAmIDB4MDAwRikgPj4gMCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6Omxv
YWRSR0JBNTU1MURhdGFUb0JHUkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lk
ICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9
IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAg
ICAgICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0
YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7
CisgICAgICAgIGRlc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkg
KiBvdXRwdXRQaXRjaDsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQor
ICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCByZ2JhID0gc291cmNlW3hdOwor
ICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gKChyZ2JhICYgMHgwMDNFKSA8PCAyKSB8ICgo
cmdiYSAmIDB4MDAzRSkgPj4gMyk7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSAoKHJn
YmEgJiAweDA3QzApID4+IDMpIHwgKChyZ2JhICYgMHgwN0MwKSA+PiA4KTsKKyAgICAgICAgICAg
IGRlc3RbNCAqIHggKyAyXSA9ICgocmdiYSAmIDB4RjgwMCkgPj4gOCkgfCAoKHJnYmEgJiAweEY4
MDApID4+IDEzKTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IChyZ2JhICYgMHgwMDAx
KSA/IDB4RkYgOiAwOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdC
QTU1NTFEYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5w
dXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOworICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxM
OworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAg
IHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihzdGF0aWNf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAg
ICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0
cHV0UGl0Y2g7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAg
ICAgeworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcmdiYSA9IHNvdXJjZVt4XTsKKyAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAwXSA9ICgocmdiYSAmIDB4RjgwMCkgPj4gOCkgfCAoKHJnYmEg
JiAweEY4MDApID4+IDEzKTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9ICgocmdiYSAm
IDB4MDdDMCkgPj4gMykgfCAoKHJnYmEgJiAweDA3QzApID4+IDgpOworICAgICAgICAgICAgZGVz
dFs0ICogeCArIDJdID0gKChyZ2JhICYgMHgwMDNFKSA8PCAyKSB8ICgocmdiYSAmIDB4MDAzRSkg
Pj4gMyk7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAocmdiYSAmIDB4MDAwMSkgPyAw
eEZGIDogMDsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9hZFJHQkFGbG9h
dERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQs
IHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0IGZsb2F0ICpz
b3VyY2UgPSBOVUxMOworICAgIGZsb2F0ICpkZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkg
PSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IGZsb2F0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlu
cHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKKyAgICAgICAgZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
ZmxvYXQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQ
aXRjaCk7CisgICAgICAgIG1lbWNweShkZXN0LCBzb3VyY2UsIHdpZHRoICogMTYpOworICAgIH0K
K30KKwordm9pZCBJbWFnZTo6bG9hZFJHQkFIYWxmRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNo
LCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlID0gTlVM
TDsKKyAgICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkgPSAw
OyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSBzdGF0aWNfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2g7CisgICAgICAgIGRl
c3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRj
aDsKKyAgICAgICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lkdGggKiA4KTsKKyAgICB9Cit9CisK
K3ZvaWQgSW1hZ2U6OmxvYWRCR1JBRGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29u
c3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAq
ZGVzdCA9IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAg
IHsKKyAgICAgICAgc291cmNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlu
cHV0KSArIHkgKiBpbnB1dFBpdGNoOworICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2g7CisgICAgICAgIG1lbWNweShkZXN0
LCBzb3VyY2UsIHdpZHRoKjQpOworICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvSW1hZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzEgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIEltYWdlLmg6IERlZmluZXMgdGhlIHJ4OjpJbWFnZSBjbGFzcywgYW4gYWJzdHJh
Y3QgYmFzZSBjbGFzcyBmb3IgdGhlIAorLy8gcmVuZGVyZXItc3BlY2lmaWMgY2xhc3NlcyB3aGlj
aCB3aWxsIGRlZmluZSB0aGUgaW50ZXJmYWNlIHRvIHRoZSB1bmRlcmx5aW5nCisvLyBzdXJmYWNl
cyBvciByZXNvdXJjZXMuCisKKyNpZm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX0lNQUdFX0hfCisj
ZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9JTUFHRV9IXworCisjaW5jbHVkZSAiY29tbW9uL2Rl
YnVnLmgiCisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgRnJhbWVidWZmZXI7Cit9CisKK25hbWVz
cGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVyZmFj
ZTJEOworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlOworCitjbGFzcyBJbWFnZQor
eworICBwdWJsaWM6CisgICAgSW1hZ2UoKTsKKyAgICB2aXJ0dWFsIH5JbWFnZSgpIHt9OworCisg
ICAgR0xzaXplaSBnZXRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1XaWR0aDsgfQorICAgIEdMc2l6
ZWkgZ2V0SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbUhlaWdodDsgfQorICAgIEdMZW51bSBnZXRJ
bnRlcm5hbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1JbnRlcm5hbEZvcm1hdDsgfQorICAgIEdM
ZW51bSBnZXRBY3R1YWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtQWN0dWFsRm9ybWF0OyB9CisK
KyAgICB2b2lkIG1hcmtEaXJ0eSgpIHttRGlydHkgPSB0cnVlO30KKyAgICB2b2lkIG1hcmtDbGVh
bigpIHttRGlydHkgPSBmYWxzZTt9CisgICAgdmlydHVhbCBib29sIGlzRGlydHkoKSBjb25zdCA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWFuYWdlZFN1cmZhY2UoVGV4dHVyZVN0b3JhZ2VJ
bnRlcmZhY2UyRCAqc3RvcmFnZSwgaW50IGxldmVsKSB7fTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TWFuYWdlZFN1cmZhY2UoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBpbnQg
ZmFjZSwgaW50IGxldmVsKSB7fTsKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlU3VyZmFjZShUZXh0
dXJlU3RvcmFnZUludGVyZmFjZTJEICpzdG9yYWdlLCBpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSA9IDA7CisgICAg
dmlydHVhbCBib29sIHVwZGF0ZVN1cmZhY2UoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpz
dG9yYWdlLCBpbnQgZmFjZSwgaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkgPSAwOworCisgICAgdmlydHVhbCBib29s
IHJlZGVmaW5lKFJlbmRlcmVyICpyZW5kZXJlciwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBib29sIGZvcmNlUmVsZWFzZSkgPSAwOworCisgICAg
dmlydHVhbCBib29sIGlzUmVuZGVyYWJsZUZvcm1hdCgpIGNvbnN0ID0gMDsKKyAgICAKKyAgICB2
aXJ0dWFsIHZvaWQgbG9hZERhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICBHTGludCB1bnBhY2tB
bGlnbm1lbnQsIGNvbnN0IHZvaWQgKmlucHV0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxvYWRD
b21wcmVzc2VkRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKmlucHV0KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgY29weShHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpID0gMDsKKworICAgIHN0YXRpYyB2
b2lkIGxvYWRBbHBoYURhdGFUb0JHUkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qg
dm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0
aWMgdm9pZCBsb2FkQWxwaGFEYXRhVG9OYXRpdmUoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNo
LCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOwor
ICAgIHN0YXRpYyB2b2lkIGxvYWRBbHBoYURhdGFUb0JHUkFTU0UyKEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lk
ICpvdXRwdXQpOworICAgIHN0YXRpYyB2b2lkIGxvYWRBbHBoYUZsb2F0RGF0YVRvUkdCQShHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0
cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEFscGhhSGFsZkZs
b2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2
b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0YXRp
YyB2b2lkIGxvYWRMdW1pbmFuY2VEYXRhVG9OYXRpdmVPckJHUkEoR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQg
Km91dHB1dCwgYm9vbCBuYXRpdmUpOworICAgIHN0YXRpYyB2b2lkIGxvYWRMdW1pbmFuY2VGbG9h
dERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9p
ZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMg
dm9pZCBsb2FkTHVtaW5hbmNlRmxvYXREYXRhVG9SR0IoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
bnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpv
dXRwdXQpOworICAgIHN0YXRpYyB2b2lkIGxvYWRMdW1pbmFuY2VIYWxmRmxvYXREYXRhVG9SR0JB
KEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1
dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0YXRpYyB2b2lkIGxv
YWRMdW1pbmFuY2VBbHBoYURhdGFUb05hdGl2ZU9yQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lk
ICpvdXRwdXQsIGJvb2wgbmF0aXZlKTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkTHVtaW5hbmNlQWxw
aGFGbG9hdERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNo
LCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOwor
ICAgIHN0YXRpYyB2b2lkIGxvYWRMdW1pbmFuY2VBbHBoYUhhbGZGbG9hdERhdGFUb1JHQkEoR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5w
dXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBs
b2FkUkdCVUJ5dGVEYXRhVG9CR1JYKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0
IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3Rh
dGljIHZvaWQgbG9hZFJHQlVCeXRlRGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBp
dGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQp
OworICAgIHN0YXRpYyB2b2lkIGxvYWRSR0I1NjVEYXRhVG9CR1JBKEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
bnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpv
dXRwdXQpOworICAgIHN0YXRpYyB2b2lkIGxvYWRSR0I1NjVEYXRhVG9SR0JBKEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2
b2lkICpvdXRwdXQpOworICAgIHN0YXRpYyB2b2lkIGxvYWRSR0JGbG9hdERhdGFUb1JHQkEoR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRw
dXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkUkdCRmxvYXREYXRh
VG9OYXRpdmUoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1
dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0YXRpYyB2b2lkIGxv
YWRSR0JIYWxmRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNo
LCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOwor
ICAgIHN0YXRpYyB2b2lkIGxvYWRSR0JBVUJ5dGVEYXRhVG9CR1JBU1NFMihHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0
Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQkFVQnl0ZURhdGFUb0JH
UkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXpl
X3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQkFV
Qnl0ZURhdGFUb05hdGl2ZShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2
b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0YXRp
YyB2b2lkIGxvYWRSR0JBNDQ0NERhdGFUb0JHUkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRj
aCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsK
KyAgICBzdGF0aWMgdm9pZCBsb2FkUkdCQTQ0NDREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQg
Km91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQkE1NTUxRGF0YVRvQkdSQShHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBp
dGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0YXRpYyB2b2lkIGxvYWRSR0JBNTU1MURhdGFUb1JH
QkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVf
dCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkUkdCQUZs
b2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAq
aW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9p
ZCBsb2FkUkdCQUhhbGZGbG9hdERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1
dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRw
dXQpOworICAgIHN0YXRpYyB2b2lkIGxvYWRCR1JBRGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlu
cHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91
dHB1dCk7CisKKyAgcHJvdGVjdGVkOgorICAgIEdMc2l6ZWkgbVdpZHRoOworICAgIEdMc2l6ZWkg
bUhlaWdodDsKKyAgICBHTGludCBtSW50ZXJuYWxGb3JtYXQ7CisgICAgR0xlbnVtIG1BY3R1YWxG
b3JtYXQ7CisKKyAgICBib29sIG1EaXJ0eTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTihJbWFnZSk7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVO
REVSRVJfSU1BR0VfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvSW1hZ2VTU0UyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlU1NFMi5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdl
U1NFMi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAwIEBACisjaW5jbHVkZSAicHJlY29t
cGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEltYWdlU1NFMi5jcHA6IEltcGxlbWVu
dHMgU1NFMi1iYXNlZCBmdW5jdGlvbnMgb2Ygcng6OkltYWdlIGNsYXNzLiBJdCdzCisvLyBpbiBh
IHNlcGFyYXRlZCBmaWxlIGZvciBHQ0MsIHdoaWNoIGNhbiBlbmFibGUgU1NFIHVzYWdlIG9ubHkg
cGVyLWZpbGUsCisvLyBub3QgZm9yIGNvZGUgYmxvY2tzIHRoYXQgdXNlIFNTRTIgZXhwbGljaXRs
eS4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL0ltYWdlLmgiCisKK25hbWVzcGFjZSByeAoreworCit2b2lkIEltYWdlOjpsb2Fk
UkdCQVVCeXRlRGF0YVRvQkdSQVNTRTIoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNv
bnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAg
ICBjb25zdCB1bnNpZ25lZCBpbnQgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgaW50ICpk
ZXN0ID0gTlVMTDsKKyAgICBfX20xMjhpIGJyTWFzayA9IF9tbV9zZXQxX2VwaTMyKDB4MDBmZjAw
ZmYpOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAg
ICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgaW50Kj4oc3RhdGlj
X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKKyAg
ICAgICAgZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4oc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworICAgICAgICBpbnQg
eCA9IDA7CisKKyAgICAgICAgLy8gTWFrZSBvdXRwdXQgd3JpdGVzIGFsaWduZWQKKyAgICAgICAg
Zm9yICh4ID0gMDsgKChyZWludGVycHJldF9jYXN0PGludHB0cl90PigmZGVzdFt4XSkgJiAxNSkg
IT0gMCkgJiYgeCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGludCByZ2JhID0gc291cmNlW3hdOworICAgICAgICAgICAgZGVzdFt4XSA9IChfcm90bChyZ2Jh
LCAxNikgJiAweDAwZmYwMGZmKSB8IChyZ2JhICYgMHhmZjAwZmYwMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmb3IgKDsgeCArIDMgPCB3aWR0aDsgeCArPSA0KQorICAgICAgICB7CisgICAgICAg
ICAgICBfX20xMjhpIHNvdXJjZURhdGEgPSBfbW1fbG9hZHVfc2kxMjgocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBfX20xMjhpKj4oJnNvdXJjZVt4XSkpOworICAgICAgICAgICAgLy8gTWFzayBvdXQg
ZyBhbmQgYSwgd2hpY2ggZG9uJ3QgY2hhbmdlCisgICAgICAgICAgICBfX20xMjhpIGdhQ29tcG9u
ZW50cyA9IF9tbV9hbmRub3Rfc2kxMjgoYnJNYXNrLCBzb3VyY2VEYXRhKTsKKyAgICAgICAgICAg
IC8vIE1hc2sgb3V0IGIgYW5kIHIKKyAgICAgICAgICAgIF9fbTEyOGkgYnJDb21wb25lbnRzID0g
X21tX2FuZF9zaTEyOChzb3VyY2VEYXRhLCBick1hc2spOworICAgICAgICAgICAgLy8gU3dhcCBi
IGFuZCByCisgICAgICAgICAgICBfX20xMjhpIGJyU3dhcHBlZCA9IF9tbV9zaHVmZmxlaGlfZXBp
MTYoX21tX3NodWZmbGVsb19lcGkxNihickNvbXBvbmVudHMsIF9NTV9TSFVGRkxFKDIsIDMsIDAs
IDEpKSwgX01NX1NIVUZGTEUoMiwgMywgMCwgMSkpOworICAgICAgICAgICAgX19tMTI4aSByZXN1
bHQgPSBfbW1fb3Jfc2kxMjgoZ2FDb21wb25lbnRzLCBiclN3YXBwZWQpOworICAgICAgICAgICAg
X21tX3N0b3JlX3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KCZkZXN0W3hdKSwgcmVz
dWx0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFBlcmZvcm0gbGVmdG92ZXIgd3JpdGVzCisg
ICAgICAgIGZvciAoOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgdW5z
aWduZWQgaW50IHJnYmEgPSBzb3VyY2VbeF07CisgICAgICAgICAgICBkZXN0W3hdID0gKF9yb3Rs
KHJnYmEsIDE2KSAmIDB4MDBmZjAwZmYpIHwgKHJnYmEgJiAweGZmMDBmZjAwKTsKKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9hZEFscGhhRGF0YVRvQkdSQVNTRTIoR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRj
aCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9IE5V
TEw7CisgICAgdW5zaWduZWQgaW50ICpkZXN0ID0gTlVMTDsKKyAgICBfX20xMjhpIHplcm9XaWRl
ID0gX21tX3NldHplcm9fc2kxMjgoKTsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0
OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2g7CisgICAgICAgIGRlc3QgPSByZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkIGludCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRw
dXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKworICAgICAgICBpbnQgeDsKKyAgICAgICAgLy8gTWFr
ZSBvdXRwdXQgd3JpdGVzIGFsaWduZWQKKyAgICAgICAgZm9yICh4ID0gMDsgKChyZWludGVycHJl
dF9jYXN0PGludHB0cl90PigmZGVzdFt4XSkgJiAweEYpICE9IDAgJiYgeCA8IHdpZHRoKTsgeCsr
KQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0W3hdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50Pihzb3VyY2VbeF0pIDw8IDI0OworICAgICAgICB9CisKKyAgICAgICAgZm9yICg7IHggKyA3
IDwgd2lkdGg7IHggKz0gOCkKKyAgICAgICAgeworICAgICAgICAgICAgX19tMTI4aSBzb3VyY2VE
YXRhID0gX21tX2xvYWRsX2VwaTY0KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgX19tMTI4aSo+KCZz
b3VyY2VbeF0pKTsKKyAgICAgICAgICAgIC8vIEludGVybGVhdmUgZWFjaCBieXRlIHRvIDE2Yml0
LCBtYWtlIHRoZSBsb3dlciBieXRlIHRvIHplcm8KKyAgICAgICAgICAgIHNvdXJjZURhdGEgPSBf
bW1fdW5wYWNrbG9fZXBpOCh6ZXJvV2lkZSwgc291cmNlRGF0YSk7CisgICAgICAgICAgICAvLyBJ
bnRlcmxlYXZlIGVhY2ggMTZiaXQgdG8gMzJiaXQsIG1ha2UgdGhlIGxvd2VyIDE2Yml0IHRvIHpl
cm8KKyAgICAgICAgICAgIF9fbTEyOGkgbG8gPSBfbW1fdW5wYWNrbG9fZXBpMTYoemVyb1dpZGUs
IHNvdXJjZURhdGEpOworICAgICAgICAgICAgX19tMTI4aSBoaSA9IF9tbV91bnBhY2toaV9lcGkx
Nih6ZXJvV2lkZSwgc291cmNlRGF0YSk7CisKKyAgICAgICAgICAgIF9tbV9zdG9yZV9zaTEyOChy
ZWludGVycHJldF9jYXN0PF9fbTEyOGkqPigmZGVzdFt4XSksIGxvKTsKKyAgICAgICAgICAgIF9t
bV9zdG9yZV9zaTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkqPigmZGVzdFt4ICsgNF0pLCBo
aSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBIYW5kbGUgdGhlIHJlbWFpbmRlcgorICAgICAg
ICBmb3IgKDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbeF0g
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNvdXJjZVt4XSkgPDwgMjQ7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvSW5kZXhCdWZmZXI5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyOS5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L0luZGV4QnVmZmVyOS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjA3IEBACisjaW5jbHVk
ZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEluZGV4ZmZlcjkuY3Bw
OiBEZWZpbmVzIHRoZSBEM0Q5IEluZGV4QnVmZmVyIGltcGxlbWVudGF0aW9uLgorCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyOS5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9SZW5kZXJlcjkuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0luZGV4QnVmZmVy
OTo6SW5kZXhCdWZmZXI5KFJlbmRlcmVyOSAqY29uc3QgcmVuZGVyZXIpIDogbVJlbmRlcmVyKHJl
bmRlcmVyKQoreworICAgIG1JbmRleEJ1ZmZlciA9IE5VTEw7CisgICAgbUJ1ZmZlclNpemUgPSAw
OworICAgIG1JbmRleFR5cGUgPSAwOworICAgIG1EeW5hbWljID0gZmFsc2U7Cit9CisKK0luZGV4
QnVmZmVyOTo6fkluZGV4QnVmZmVyOSgpCit7CisgICAgaWYgKG1JbmRleEJ1ZmZlcikKKyAgICB7
CisgICAgICAgIG1JbmRleEJ1ZmZlci0+UmVsZWFzZSgpOworICAgICAgICBtSW5kZXhCdWZmZXIg
PSBOVUxMOworICAgIH0KK30KKworYm9vbCBJbmRleEJ1ZmZlcjk6OmluaXRpYWxpemUodW5zaWdu
ZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUsIGJvb2wgZHluYW1pYykKK3sKKyAg
ICBpZiAobUluZGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgbUluZGV4QnVmZmVyLT5SZWxlYXNl
KCk7CisgICAgICAgIG1JbmRleEJ1ZmZlciA9IE5VTEw7CisgICAgfQorCisgICAgdXBkYXRlU2Vy
aWFsKCk7CisKKyAgICBpZiAoYnVmZmVyU2l6ZSA+IDApCisgICAgeworICAgICAgICBEM0RGT1JN
QVQgZm9ybWF0OworICAgICAgICBpZiAoaW5kZXhUeXBlID09IEdMX1VOU0lHTkVEX1NIT1JUIHx8
IGluZGV4VHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFKQorICAgICAgICB7CisgICAgICAgICAgICBm
b3JtYXQgPSBEM0RGTVRfSU5ERVgxNjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChpbmRl
eFR5cGUgPT0gR0xfVU5TSUdORURfSU5UKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobVJl
bmRlcmVyLT5nZXQzMkJpdEluZGV4U3VwcG9ydCgpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGZvcm1hdCA9IEQzREZNVF9JTkRFWDMyOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVSUigiQXR0ZW1wdGVkIHRv
IGNyZWF0ZSBhIDMyLWJpdCBpbmRleCBidWZmZXIgYnV0IHJlbmRlcmVyIGRvZXMgbm90IHN1cHBv
cnQgMzItYml0IGluZGljZXMuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg
ICAgRVJSKCJJbnZhbGlkIGluZGV4IHR5cGUgJXUuIiwgaW5kZXhUeXBlKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIERXT1JEIHVzYWdlRmxhZ3MgPSBE
M0RVU0FHRV9XUklURU9OTFk7CisgICAgICAgIGlmIChkeW5hbWljKQorICAgICAgICB7CisgICAg
ICAgICAgICB1c2FnZUZsYWdzIHw9IEQzRFVTQUdFX0RZTkFNSUM7CisgICAgICAgIH0KKworICAg
ICAgICBIUkVTVUxUIHJlc3VsdCA9IG1SZW5kZXJlci0+Y3JlYXRlSW5kZXhCdWZmZXIoYnVmZmVy
U2l6ZSwgdXNhZ2VGbGFncywgZm9ybWF0LCAmbUluZGV4QnVmZmVyKTsKKyAgICAgICAgaWYgKEZB
SUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBjcmVh
dGUgYW4gaW5kZXggYnVmZmVyIG9mIHNpemUgJXUsIHJlc3VsdDogMHglMDh4LiIsIG1CdWZmZXJT
aXplLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorCisgICAgbUJ1ZmZlclNpemUgPSBidWZmZXJTaXplOworICAgIG1JbmRleFR5cGUgPSBpbmRl
eFR5cGU7CisgICAgbUR5bmFtaWMgPSBkeW5hbWljOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K0luZGV4QnVmZmVyOSAqSW5kZXhCdWZmZXI5OjptYWtlSW5kZXhCdWZmZXI5KEluZGV4QnVmZmVy
ICppbmRleEJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShJbmRleEJ1ZmZl
cjkqLCBpbmRleEJ1ZmZlcikpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbmRleEJ1ZmZlcjkq
PihpbmRleEJ1ZmZlcik7Cit9CisKK2Jvb2wgSW5kZXhCdWZmZXI5OjptYXBCdWZmZXIodW5zaWdu
ZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IHNpemUsIHZvaWQqKiBvdXRNYXBwZWRNZW1vcnkp
Cit7CisgICAgaWYgKG1JbmRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIERXT1JEIGxvY2tGbGFn
cyA9IG1EeW5hbWljID8gRDNETE9DS19OT09WRVJXUklURSA6IDA7CisKKyAgICAgICAgdm9pZCAq
bWFwUHRyID0gTlVMTDsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtSW5kZXhCdWZmZXItPkxv
Y2sob2Zmc2V0LCBzaXplLCAmbWFwUHRyLCBsb2NrRmxhZ3MpOworICAgICAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiSW5kZXggYnVmZmVyIGxvY2sg
ZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgICpvdXRNYXBwZWRNZW1vcnkgPSBtYXBQdHI7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBFUlIo
IkluZGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9Cit9CisKK2Jvb2wgSW5kZXhCdWZmZXI5Ojp1bm1hcEJ1ZmZlcigpCit7CisgICAgaWYg
KG1JbmRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbUluZGV4QnVm
ZmVyLT5VbmxvY2soKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBFUlIoIkluZGV4IGJ1ZmZlciB1bmxvY2sgZmFpbGVkIHdpdGggZXJyb3IgMHgl
MDh4IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBFUlIo
IkluZGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9Cit9CisKK0dMZW51bSBJbmRleEJ1ZmZlcjk6OmdldEluZGV4VHlwZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1JbmRleFR5cGU7Cit9CisKK3Vuc2lnbmVkIGludCBJbmRleEJ1ZmZlcjk6
OmdldEJ1ZmZlclNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtQnVmZmVyU2l6ZTsKK30KKwor
Ym9vbCBJbmRleEJ1ZmZlcjk6OnNldFNpemUodW5zaWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51
bSBpbmRleFR5cGUpCit7CisgICAgaWYgKGJ1ZmZlclNpemUgPiBtQnVmZmVyU2l6ZSB8fCBpbmRl
eFR5cGUgIT0gbUluZGV4VHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBpbml0aWFsaXplKGJ1
ZmZlclNpemUsIGluZGV4VHlwZSwgbUR5bmFtaWMpOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9CisKK2Jvb2wgSW5kZXhCdWZmZXI5OjpkaXNj
YXJkKCkKK3sKKyAgICBpZiAobUluZGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgdm9pZCAqZHVt
bXk7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0OworCisgICAgICAgIHJlc3VsdCA9IG1JbmRleEJ1
ZmZlci0+TG9jaygwLCAxLCAmZHVtbXksIEQzRExPQ0tfRElTQ0FSRCk7CisgICAgICAgIGlmIChG
QUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJEaXNjYXJkIGxvY2sg
ZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IG1JbmRleEJ1ZmZlci0+VW5sb2Nr
KCk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAg
RVJSKCJEaXNjYXJkIHVubG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEVSUigiSW5kZXggYnVmZmVyIG5v
dCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworRDNE
Rk9STUFUIEluZGV4QnVmZmVyOTo6Z2V0SW5kZXhGb3JtYXQoKSBjb25zdAoreworICAgIHN3aXRj
aCAobUluZGV4VHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6ICAgIHJl
dHVybiBEM0RGTVRfSU5ERVgxNjsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6ICAgcmV0
dXJuIEQzREZNVF9JTkRFWDE2OworICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6ICAgICByZXR1
cm4gRDNERk1UX0lOREVYMzI7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgIHJldHVy
biBEM0RGTVRfVU5LTk9XTjsKKyAgICB9Cit9CisKK0lEaXJlY3QzREluZGV4QnVmZmVyOSAqIElu
ZGV4QnVmZmVyOTo6Z2V0QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluZGV4QnVmZmVy
OworfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lu
ZGV4QnVmZmVyOS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW5kZXhmZmVyOS5oOiBEZWZpbmVzIHRo
ZSBEM0Q5IEluZGV4QnVmZmVyIGltcGxlbWVudGF0aW9uLgorCisjaWZuZGVmIExJQkdMRVNWMl9S
RU5ERVJFUl9JTkRFWEJVRkZFUjlfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX0lOREVY
QlVGRkVSOV9IXworCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmgi
CisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI5OworCitjbGFzcyBJbmRleEJ1ZmZl
cjkgOiBwdWJsaWMgSW5kZXhCdWZmZXIKK3sKKyAgcHVibGljOgorICAgIGV4cGxpY2l0IEluZGV4
QnVmZmVyOShSZW5kZXJlcjkgKmNvbnN0IHJlbmRlcmVyKTsKKyAgICB2aXJ0dWFsIH5JbmRleEJ1
ZmZlcjkoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKHVuc2lnbmVkIGludCBidWZm
ZXJTaXplLCBHTGVudW0gaW5kZXhUeXBlLCBib29sIGR5bmFtaWMpOworCisgICAgc3RhdGljIElu
ZGV4QnVmZmVyOSAqbWFrZUluZGV4QnVmZmVyOShJbmRleEJ1ZmZlciAqaW5kZXhCdWZmZXIpOwor
CisgICAgdmlydHVhbCBib29sIG1hcEJ1ZmZlcih1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25l
ZCBpbnQgc2l6ZSwgdm9pZCoqIG91dE1hcHBlZE1lbW9yeSk7CisgICAgdmlydHVhbCBib29sIHVu
bWFwQnVmZmVyKCk7CisKKyAgICB2aXJ0dWFsIEdMZW51bSBnZXRJbmRleFR5cGUoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRCdWZmZXJTaXplKCkgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIHNldFNpemUodW5zaWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5
cGUpOworCisgICAgdmlydHVhbCBib29sIGRpc2NhcmQoKTsKKworICAgIEQzREZPUk1BVCBnZXRJ
bmRleEZvcm1hdCgpIGNvbnN0OworICAgIElEaXJlY3QzREluZGV4QnVmZmVyOSAqZ2V0QnVmZmVy
KCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oSW5k
ZXhCdWZmZXI5KTsKKworICAgIHJ4OjpSZW5kZXJlcjkgKmNvbnN0IG1SZW5kZXJlcjsKKworICAg
IElEaXJlY3QzREluZGV4QnVmZmVyOSAqbUluZGV4QnVmZmVyOworICAgIHVuc2lnbmVkIGludCBt
QnVmZmVyU2l6ZTsKKyAgICBHTGVudW0gbUluZGV4VHlwZTsKKyAgICBib29sIG1EeW5hbWljOwor
fTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0lOREVYQlVGRkVSOV9IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRl
eEJ1ZmZlcjExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjEx
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODIgQEAKKyNpbmNsdWRlICJwcmVjb21waWxl
ZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEluZGV4QnVmZmVyMTEuY3BwOiBEZWZpbmVzIHRoZSBE
M0QxMSBJbmRleEJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9y
ZW5kZXJlci9JbmRleEJ1ZmZlcjExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlcmVyMTEuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0luZGV4QnVmZmVyMTE6OkluZGV4QnVm
ZmVyMTEoUmVuZGVyZXIxMSAqY29uc3QgcmVuZGVyZXIpIDogbVJlbmRlcmVyKHJlbmRlcmVyKQor
eworICAgIG1CdWZmZXIgPSBOVUxMOworICAgIG1CdWZmZXJTaXplID0gMDsKKyAgICBtRHluYW1p
Y1VzYWdlID0gZmFsc2U7Cit9CisKK0luZGV4QnVmZmVyMTE6On5JbmRleEJ1ZmZlcjExKCkKK3sK
KyAgICBpZiAobUJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1CdWZmZXItPlJlbGVhc2UoKTsKKyAg
ICAgICAgbUJ1ZmZlciA9IE5VTEw7CisgICAgfQorfQorCitib29sIEluZGV4QnVmZmVyMTE6Omlu
aXRpYWxpemUodW5zaWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUsIGJvb2wg
ZHluYW1pYykKK3sKKyAgICBpZiAobUJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1CdWZmZXItPlJl
bGVhc2UoKTsKKyAgICAgICAgbUJ1ZmZlciA9IE5VTEw7CisgICAgfQorCisgICAgdXBkYXRlU2Vy
aWFsKCk7CisKKyAgICBpZiAoYnVmZmVyU2l6ZSA+IDApCisgICAgeworICAgICAgICBJRDNEMTFE
ZXZpY2UqIGR4RGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgICAgICBEM0Qx
MV9CVUZGRVJfREVTQyBidWZmZXJEZXNjOworICAgICAgICBidWZmZXJEZXNjLkJ5dGVXaWR0aCA9
IGJ1ZmZlclNpemU7CisgICAgICAgIGJ1ZmZlckRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9EWU5B
TUlDOworICAgICAgICBidWZmZXJEZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfSU5ERVhfQlVG
RkVSOworICAgICAgICBidWZmZXJEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VT
U19XUklURTsKKyAgICAgICAgYnVmZmVyRGVzYy5NaXNjRmxhZ3MgPSAwOworICAgICAgICBidWZm
ZXJEZXNjLlN0cnVjdHVyZUJ5dGVTdHJpZGUgPSAwOworCisgICAgICAgIEhSRVNVTFQgcmVzdWx0
ID0gZHhEZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmYnVmZmVyRGVzYywgTlVMTCwgJm1CdWZmZXIpOwor
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1CdWZmZXJTaXplID0gYnVmZmVyU2l6
ZTsKKyAgICBtSW5kZXhUeXBlID0gaW5kZXhUeXBlOworICAgIG1EeW5hbWljVXNhZ2UgPSBkeW5h
bWljOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0luZGV4QnVmZmVyMTEgKkluZGV4QnVmZmVy
MTE6Om1ha2VJbmRleEJ1ZmZlcjExKEluZGV4QnVmZmVyICppbmRleEJ1ZmZlcikKK3sKKyAgICBB
U1NFUlQoSEFTX0RZTkFNSUNfVFlQRShJbmRleEJ1ZmZlcjExKiwgaW5kZXhCdWZmZXIpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5kZXhCdWZmZXIxMSo+KGluZGV4QnVmZmVyKTsKK30KKwor
Ym9vbCBJbmRleEJ1ZmZlcjExOjptYXBCdWZmZXIodW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWdu
ZWQgaW50IHNpemUsIHZvaWQqKiBvdXRNYXBwZWRNZW1vcnkpCit7CisgICAgaWYgKG1CdWZmZXIp
CisgICAgeworICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA+IG1CdWZmZXJTaXplKQorICAgICAg
ICB7CisgICAgICAgICAgICBFUlIoIkluZGV4IGJ1ZmZlciBtYXAgcmFuZ2UgaXMgbm90IGluc2lk
ZSB0aGUgYnVmZmVyLiIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisK
KyAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqZHhDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXRE
ZXZpY2VDb250ZXh0KCk7CisKKyAgICAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBl
ZFJlc291cmNlOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGR4Q29udGV4dC0+TWFwKG1CdWZm
ZXIsIDAsIEQzRDExX01BUF9XUklURV9OT19PVkVSV1JJVEUsIDAsICZtYXBwZWRSZXNvdXJjZSk7
CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJS
KCJJbmRleCBidWZmZXIgbWFwIGZhaWxlZCB3aXRoIGVycm9yIDB4JTA4eCIsIHJlc3VsdCk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAqb3V0TWFwcGVk
TWVtb3J5ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFwcGVkUmVzb3VyY2UucERhdGEpICsg
b2Zmc2V0OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgRVJSKCJJbmRleCBidWZmZXIgbm90IGluaXRpYWxpemVkLiIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIEluZGV4QnVmZmVyMTE6OnVubWFwQnVmZmVyKCkK
K3sKKyAgICBpZiAobUJ1ZmZlcikKKyAgICB7CisgICAgICAgIElEM0QxMURldmljZUNvbnRleHQg
KmR4Q29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOworICAgICAgICBkeENv
bnRleHQtPlVubWFwKG1CdWZmZXIsIDApOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgRVJSKCJJbmRleCBidWZmZXIgbm90IGluaXRpYWxpemVk
LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitHTGVudW0gSW5kZXhCdWZm
ZXIxMTo6Z2V0SW5kZXhUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluZGV4VHlwZTsKK30K
KwordW5zaWduZWQgaW50IEluZGV4QnVmZmVyMTE6OmdldEJ1ZmZlclNpemUoKSBjb25zdAorewor
ICAgIHJldHVybiBtQnVmZmVyU2l6ZTsKK30KKworYm9vbCBJbmRleEJ1ZmZlcjExOjpzZXRTaXpl
KHVuc2lnbmVkIGludCBidWZmZXJTaXplLCBHTGVudW0gaW5kZXhUeXBlKQoreworICAgIGlmIChi
dWZmZXJTaXplID4gbUJ1ZmZlclNpemUgfHwgaW5kZXhUeXBlICE9IG1JbmRleFR5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gaW5pdGlhbGl6ZShidWZmZXJTaXplLCBpbmRleFR5cGUsIG1EeW5h
bWljVXNhZ2UpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9Cit9CisKK2Jvb2wgSW5kZXhCdWZmZXIxMTo6ZGlzY2FyZCgpCit7CisgICAgaWYgKG1C
dWZmZXIpCisgICAgeworICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkeENvbnRleHQgPSBt
UmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKKworICAgICAgICBEM0QxMV9NQVBQRURfU1VC
UkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZHhDb250
ZXh0LT5NYXAobUJ1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXBwZWRS
ZXNvdXJjZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAg
ICAgICAgRVJSKCJJbmRleCBidWZmZXIgbWFwIGZhaWxlZCB3aXRoIGVycm9yIDB4JTA4eCIsIHJl
c3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBk
eENvbnRleHQtPlVubWFwKG1CdWZmZXIsIDApOworCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBFUlIoIkluZGV4IGJ1ZmZlciBub3QgaW5pdGlh
bGl6ZWQuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK0RYR0lfRk9STUFU
IEluZGV4QnVmZmVyMTE6OmdldEluZGV4Rm9ybWF0KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1J
bmRleFR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAgICByZXR1cm4g
RFhHSV9GT1JNQVRfUjE2X1VJTlQ7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOiAgIHJl
dHVybiBEWEdJX0ZPUk1BVF9SMTZfVUlOVDsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOiAg
ICAgcmV0dXJuIERYR0lfRk9STUFUX1IzMl9VSU5UOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFC
TEUoKTsgICByZXR1cm4gRFhHSV9GT1JNQVRfVU5LTk9XTjsKKyAgICB9Cit9CisKK0lEM0QxMUJ1
ZmZlciAqSW5kZXhCdWZmZXIxMTo6Z2V0QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUJ1
ZmZlcjsKK30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXIxMS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvSW5kZXhCdWZmZXIxMS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjExLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbmRleEJ1ZmZlcjExLmg6IERlZmlu
ZXMgdGhlIEQzRDExIEluZGV4QnVmZmVyIGltcGxlbWVudGF0aW9uLgorCisjaWZuZGVmIExJQkdM
RVNWMl9SRU5ERVJFUl9JTkRFWEJVRkZFUjExX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJF
Ul9JTkRFWEJVRkZFUjExX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhC
dWZmZXIuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjExOworCitjbGFzcyBJ
bmRleEJ1ZmZlcjExIDogcHVibGljIEluZGV4QnVmZmVyCit7CisgIHB1YmxpYzoKKyAgICBleHBs
aWNpdCBJbmRleEJ1ZmZlcjExKFJlbmRlcmVyMTEgKmNvbnN0IHJlbmRlcmVyKTsKKyAgICB2aXJ0
dWFsIH5JbmRleEJ1ZmZlcjExKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZSh1bnNp
Z25lZCBpbnQgYnVmZmVyU2l6ZSwgR0xlbnVtIGluZGV4VHlwZSwgYm9vbCBkeW5hbWljKTsKKwor
ICAgIHN0YXRpYyBJbmRleEJ1ZmZlcjExICptYWtlSW5kZXhCdWZmZXIxMShJbmRleEJ1ZmZlciAq
aW5kZXhCdWZmZXIpOworCisgICAgdmlydHVhbCBib29sIG1hcEJ1ZmZlcih1bnNpZ25lZCBpbnQg
b2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSwgdm9pZCoqIG91dE1hcHBlZE1lbW9yeSk7CisgICAg
dmlydHVhbCBib29sIHVubWFwQnVmZmVyKCk7CisKKyAgICB2aXJ0dWFsIEdMZW51bSBnZXRJbmRl
eFR5cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRCdWZmZXJTaXplKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIHNldFNpemUodW5zaWduZWQgaW50IGJ1ZmZlclNpemUs
IEdMZW51bSBpbmRleFR5cGUpOworCisgICAgdmlydHVhbCBib29sIGRpc2NhcmQoKTsKKworICAg
IERYR0lfRk9STUFUIGdldEluZGV4Rm9ybWF0KCkgY29uc3Q7CisgICAgSUQzRDExQnVmZmVyICpn
ZXRCdWZmZXIoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTihJbmRleEJ1ZmZlcjExKTsKKworICAgIHJ4OjpSZW5kZXJlcjExICpjb25zdCBtUmVuZGVy
ZXI7CisKKyAgICBJRDNEMTFCdWZmZXIgKm1CdWZmZXI7CisgICAgdW5zaWduZWQgaW50IG1CdWZm
ZXJTaXplOworICAgIEdMZW51bSBtSW5kZXhUeXBlOworICAgIGJvb2wgbUR5bmFtaWNVc2FnZTsK
K307CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9JTkRFWEJVRkZFUjExX0hf
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZl
ci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMDMg
QEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW5k
ZXhCdWZmZXIuY3BwOiBEZWZpbmVzIHRoZSBhYnN0cmFjdCBJbmRleEJ1ZmZlciBjbGFzcyBhbmQg
SW5kZXhCdWZmZXJJbnRlcmZhY2UKKy8vIGNsYXNzIHdpdGggZGVyaXZhdGlvbnMsIGNsYXNzZXMg
dGhhdCBwZXJmb3JtIGdyYXBoaWNzIEFQSSBhZ25vc3RpYyBpbmRleCBidWZmZXIgb3BlcmF0aW9u
cy4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oIgorCituYW1lc3BhY2UgcngKK3sKKwor
dW5zaWduZWQgaW50IEluZGV4QnVmZmVyOjptTmV4dFNlcmlhbCA9IDE7CisKK0luZGV4QnVmZmVy
OjpJbmRleEJ1ZmZlcigpCit7CisgICAgdXBkYXRlU2VyaWFsKCk7Cit9CisKK0luZGV4QnVmZmVy
Ojp+SW5kZXhCdWZmZXIoKQoreworfQorCit1bnNpZ25lZCBpbnQgSW5kZXhCdWZmZXI6OmdldFNl
cmlhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TZXJpYWw7Cit9CisKK3ZvaWQgSW5kZXhCdWZm
ZXI6OnVwZGF0ZVNlcmlhbCgpCit7CisgICAgbVNlcmlhbCA9IG1OZXh0U2VyaWFsKys7Cit9CisK
KworSW5kZXhCdWZmZXJJbnRlcmZhY2U6OkluZGV4QnVmZmVySW50ZXJmYWNlKFJlbmRlcmVyICpy
ZW5kZXJlciwgYm9vbCBkeW5hbWljKSA6IG1SZW5kZXJlcihyZW5kZXJlcikKK3sKKyAgICBtSW5k
ZXhCdWZmZXIgPSByZW5kZXJlci0+Y3JlYXRlSW5kZXhCdWZmZXIoKTsKKworICAgIG1EeW5hbWlj
ID0gZHluYW1pYzsKKyAgICBtV3JpdGVQb3NpdGlvbiA9IDA7Cit9CisKK0luZGV4QnVmZmVySW50
ZXJmYWNlOjp+SW5kZXhCdWZmZXJJbnRlcmZhY2UoKQoreworICAgIGlmIChtSW5kZXhCdWZmZXIp
CisgICAgeworICAgICAgICBkZWxldGUgbUluZGV4QnVmZmVyOworICAgIH0KK30KKworR0xlbnVt
IEluZGV4QnVmZmVySW50ZXJmYWNlOjpnZXRJbmRleFR5cGUoKSBjb25zdAoreworICAgIHJldHVy
biBtSW5kZXhCdWZmZXItPmdldEluZGV4VHlwZSgpOworfQorCit1bnNpZ25lZCBpbnQgSW5kZXhC
dWZmZXJJbnRlcmZhY2U6OmdldEJ1ZmZlclNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtSW5k
ZXhCdWZmZXItPmdldEJ1ZmZlclNpemUoKTsKK30KKwordW5zaWduZWQgaW50IEluZGV4QnVmZmVy
SW50ZXJmYWNlOjpnZXRTZXJpYWwoKSBjb25zdAoreworICAgIHJldHVybiBtSW5kZXhCdWZmZXIt
PmdldFNlcmlhbCgpOworfQorCitpbnQgSW5kZXhCdWZmZXJJbnRlcmZhY2U6Om1hcEJ1ZmZlcih1
bnNpZ25lZCBpbnQgc2l6ZSwgdm9pZCoqIG91dE1hcHBlZE1lbW9yeSkKK3sKKyAgICBpZiAoIW1J
bmRleEJ1ZmZlci0+bWFwQnVmZmVyKG1Xcml0ZVBvc2l0aW9uLCBzaXplLCBvdXRNYXBwZWRNZW1v
cnkpKQorICAgIHsKKyAgICAgICAgKm91dE1hcHBlZE1lbW9yeSA9IE5VTEw7CisgICAgICAgIHJl
dHVybiAtMTsKKyAgICB9CisKKyAgICBpbnQgb2xkV3JpdGVQb3MgPSBzdGF0aWNfY2FzdDxpbnQ+
KG1Xcml0ZVBvc2l0aW9uKTsKKyAgICBtV3JpdGVQb3NpdGlvbiArPSBzaXplOworCisgICAgcmV0
dXJuIG9sZFdyaXRlUG9zOworfQorCitib29sIEluZGV4QnVmZmVySW50ZXJmYWNlOjp1bm1hcEJ1
ZmZlcigpCit7CisgICAgcmV0dXJuIG1JbmRleEJ1ZmZlci0+dW5tYXBCdWZmZXIoKTsKK30KKwor
SW5kZXhCdWZmZXIgKiBJbmRleEJ1ZmZlckludGVyZmFjZTo6Z2V0SW5kZXhCdWZmZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtSW5kZXhCdWZmZXI7Cit9CisKK3Vuc2lnbmVkIGludCBJbmRleEJ1
ZmZlckludGVyZmFjZTo6Z2V0V3JpdGVQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1X
cml0ZVBvc2l0aW9uOworfQorCit2b2lkIEluZGV4QnVmZmVySW50ZXJmYWNlOjpzZXRXcml0ZVBv
c2l0aW9uKHVuc2lnbmVkIGludCB3cml0ZVBvc2l0aW9uKQoreworICAgIG1Xcml0ZVBvc2l0aW9u
ID0gd3JpdGVQb3NpdGlvbjsKK30KKworYm9vbCBJbmRleEJ1ZmZlckludGVyZmFjZTo6ZGlzY2Fy
ZCgpCit7CisgICAgcmV0dXJuIG1JbmRleEJ1ZmZlci0+ZGlzY2FyZCgpOworfQorCitib29sIElu
ZGV4QnVmZmVySW50ZXJmYWNlOjpzZXRCdWZmZXJTaXplKHVuc2lnbmVkIGludCBidWZmZXJTaXpl
LCBHTGVudW0gaW5kZXhUeXBlKQoreworICAgIGlmIChtSW5kZXhCdWZmZXItPmdldEJ1ZmZlclNp
emUoKSA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1JbmRleEJ1ZmZlci0+aW5pdGlhbGl6
ZShidWZmZXJTaXplLCBpbmRleFR5cGUsIG1EeW5hbWljKTsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1JbmRleEJ1ZmZlci0+c2V0U2l6ZShidWZmZXJTaXplLCBpbmRl
eFR5cGUpOworICAgIH0KK30KKworU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2U6OlN0cmVh
bWluZ0luZGV4QnVmZmVySW50ZXJmYWNlKFJlbmRlcmVyICpyZW5kZXJlcikgOiBJbmRleEJ1ZmZl
ckludGVyZmFjZShyZW5kZXJlciwgdHJ1ZSkKK3sKK30KKworU3RyZWFtaW5nSW5kZXhCdWZmZXJJ
bnRlcmZhY2U6On5TdHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZSgpCit7Cit9CisKK2Jvb2wg
U3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2VydmVCdWZmZXJTcGFjZSh1bnNpZ25l
ZCBpbnQgc2l6ZSwgR0xlbnVtIGluZGV4VHlwZSkKK3sKKyAgICBib29sIHJlc3VsdCA9IHRydWU7
CisgICAgdW5zaWduZWQgaW50IGN1ckJ1ZmZlclNpemUgPSBnZXRCdWZmZXJTaXplKCk7CisgICAg
dW5zaWduZWQgaW50IHdyaXRlUG9zID0gZ2V0V3JpdGVQb3NpdGlvbigpOworICAgIGlmIChzaXpl
ID4gY3VyQnVmZmVyU2l6ZSkKKyAgICB7CisgICAgICAgIHJlc3VsdCA9IHNldEJ1ZmZlclNpemUo
c3RkOjptYXgoc2l6ZSwgMiAqIGN1ckJ1ZmZlclNpemUpLCBpbmRleFR5cGUpOworICAgICAgICBz
ZXRXcml0ZVBvc2l0aW9uKDApOworICAgIH0KKyAgICBlbHNlIGlmICh3cml0ZVBvcyArIHNpemUg
PiBjdXJCdWZmZXJTaXplIHx8IHdyaXRlUG9zICsgc2l6ZSA8IHdyaXRlUG9zKQorICAgIHsKKyAg
ICAgICAgaWYgKCFkaXNjYXJkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICBzZXRXcml0ZVBvc2l0aW9uKDApOworICAgIH0KKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKKworU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6OlN0YXRp
Y0luZGV4QnVmZmVySW50ZXJmYWNlKFJlbmRlcmVyICpyZW5kZXJlcikgOiBJbmRleEJ1ZmZlcklu
dGVyZmFjZShyZW5kZXJlciwgZmFsc2UpCit7Cit9CisKK1N0YXRpY0luZGV4QnVmZmVySW50ZXJm
YWNlOjp+U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UoKQoreworfQorCitib29sIFN0YXRpY0lu
ZGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZlQnVmZmVyU3BhY2UodW5zaWduZWQgaW50IHNpemUs
IEdMZW51bSBpbmRleFR5cGUpCit7CisgICAgdW5zaWduZWQgaW50IGN1clNpemUgPSBnZXRCdWZm
ZXJTaXplKCk7CisgICAgaWYgKGN1clNpemUgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBz
ZXRCdWZmZXJTaXplKHNpemUsIGluZGV4VHlwZSk7CisgICAgfQorICAgIGVsc2UgaWYgKGN1clNp
emUgPj0gc2l6ZSAmJiBpbmRleFR5cGUgPT0gZ2V0SW5kZXhUeXBlKCkpCisgICAgeworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgRVJSKCJTdGF0
aWMgaW5kZXggYnVmZmVycyBjYW4ndCBiZSByZXNpemVkIik7CisgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBTdGF0
aWNJbmRleEJ1ZmZlckludGVyZmFjZTo6bG9va3VwUmFuZ2UoaW50cHRyX3Qgb2Zmc2V0LCBHTHNp
emVpIGNvdW50LCB1bnNpZ25lZCBpbnQgKm1pbkluZGV4LCB1bnNpZ25lZCBpbnQgKm1heEluZGV4
KQoreworICAgIEluZGV4UmFuZ2UgcmFuZ2UgPSB7b2Zmc2V0LCBjb3VudH07CisKKyAgICBzdGQ6
Om1hcDxJbmRleFJhbmdlLCBJbmRleFJlc3VsdD46Oml0ZXJhdG9yIHJlcyA9IG1DYWNoZS5maW5k
KHJhbmdlKTsKKworICAgIGlmIChyZXMgPT0gbUNhY2hlLmVuZCgpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIC0xOworICAgIH0KKworICAgICptaW5JbmRleCA9IHJlcy0+c2Vjb25kLm1pbkluZGV4
OworICAgICptYXhJbmRleCA9IHJlcy0+c2Vjb25kLm1heEluZGV4OworICAgIHJldHVybiByZXMt
PnNlY29uZC5zdHJlYW1PZmZzZXQ7Cit9CisKK3ZvaWQgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZh
Y2U6OmFkZFJhbmdlKGludHB0cl90IG9mZnNldCwgR0xzaXplaSBjb3VudCwgdW5zaWduZWQgaW50
IG1pbkluZGV4LCB1bnNpZ25lZCBpbnQgbWF4SW5kZXgsIHVuc2lnbmVkIGludCBzdHJlYW1PZmZz
ZXQpCit7CisgICAgSW5kZXhSYW5nZSBpbmRleFJhbmdlID0ge29mZnNldCwgY291bnR9OworICAg
IEluZGV4UmVzdWx0IGluZGV4UmVzdWx0ID0ge21pbkluZGV4LCBtYXhJbmRleCwgc3RyZWFtT2Zm
c2V0fTsKKyAgICBtQ2FjaGVbaW5kZXhSYW5nZV0gPSBpbmRleFJlc3VsdDsKK30KKworfQorCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4
QnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEzNyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW5kZXhCdWZm
ZXIuaDogRGVmaW5lcyB0aGUgYWJzdHJhY3QgSW5kZXhCdWZmZXIgY2xhc3MgYW5kIEluZGV4QnVm
ZmVySW50ZXJmYWNlCisvLyBjbGFzcyB3aXRoIGRlcml2YXRpb25zLCBjbGFzc2VzIHRoYXQgcGVy
Zm9ybSBncmFwaGljcyBBUEkgYWdub3N0aWMgaW5kZXggYnVmZmVyIG9wZXJhdGlvbnMuCisKKyNp
Zm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX0lOREVYQlVGRkVSX0hfCisjZGVmaW5lIExJQkdMRVNW
Ml9SRU5ERVJFUl9JTkRFWEJVRkZFUl9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMu
aCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKKworY2xhc3MgSW5kZXhCdWZm
ZXIKK3sKKyAgcHVibGljOgorICAgIEluZGV4QnVmZmVyKCk7CisgICAgdmlydHVhbCB+SW5kZXhC
dWZmZXIoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKHVuc2lnbmVkIGludCBidWZm
ZXJTaXplLCBHTGVudW0gaW5kZXhUeXBlLCBib29sIGR5bmFtaWMpID0gMDsKKworICAgIHZpcnR1
YWwgYm9vbCBtYXBCdWZmZXIodW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IHNpemUs
IHZvaWQqKiBvdXRNYXBwZWRNZW1vcnkpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdW5tYXBCdWZm
ZXIoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgZGlzY2FyZCgpID0gMDsKKworICAgIHZpcnR1
YWwgR0xlbnVtIGdldEluZGV4VHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IGludCBnZXRCdWZmZXJTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRTaXpl
KHVuc2lnbmVkIGludCBidWZmZXJTaXplLCBHTGVudW0gaW5kZXhUeXBlKSA9IDA7CisKKyAgICB1
bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQg
dXBkYXRlU2VyaWFsKCk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oSW5kZXhCdWZmZXIpOworCisgICAgdW5zaWduZWQgaW50IG1TZXJpYWw7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGludCBtTmV4dFNlcmlhbDsKK307CisKK2NsYXNzIEluZGV4QnVmZmVySW50ZXJm
YWNlCit7CisgIHB1YmxpYzoKKyAgICBJbmRleEJ1ZmZlckludGVyZmFjZShSZW5kZXJlciAqcmVu
ZGVyZXIsIGJvb2wgZHluYW1pYyk7CisgICAgdmlydHVhbCB+SW5kZXhCdWZmZXJJbnRlcmZhY2Uo
KTsKKworICAgIHZpcnR1YWwgYm9vbCByZXNlcnZlQnVmZmVyU3BhY2UodW5zaWduZWQgaW50IHNp
emUsIEdMZW51bSBpbmRleFR5cGUpID0gMDsKKworICAgIEdMZW51bSBnZXRJbmRleFR5cGUoKSBj
b25zdDsKKyAgICB1bnNpZ25lZCBpbnQgZ2V0QnVmZmVyU2l6ZSgpIGNvbnN0OworCisgICAgdW5z
aWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0OworCisgICAgaW50IG1hcEJ1ZmZlcih1bnNpZ25l
ZCBpbnQgc2l6ZSwgdm9pZCoqIG91dE1hcHBlZE1lbW9yeSk7CisgICAgYm9vbCB1bm1hcEJ1ZmZl
cigpOworCisgICAgSW5kZXhCdWZmZXIgKmdldEluZGV4QnVmZmVyKCkgY29uc3Q7CisKKyAgcHJv
dGVjdGVkOgorICAgIHVuc2lnbmVkIGludCBnZXRXcml0ZVBvc2l0aW9uKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRXcml0ZVBvc2l0aW9uKHVuc2lnbmVkIGludCB3cml0ZVBvc2l0aW9uKTsKKworICAg
IGJvb2wgZGlzY2FyZCgpOworCisgICAgYm9vbCBzZXRCdWZmZXJTaXplKHVuc2lnbmVkIGludCBi
dWZmZXJTaXplLCBHTGVudW0gaW5kZXhUeXBlKTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTihJbmRleEJ1ZmZlckludGVyZmFjZSk7CisKKyAgICByeDo6UmVuZGVy
ZXIgKmNvbnN0IG1SZW5kZXJlcjsKKworICAgIEluZGV4QnVmZmVyKiBtSW5kZXhCdWZmZXI7CisK
KyAgICB1bnNpZ25lZCBpbnQgbVdyaXRlUG9zaXRpb247CisgICAgYm9vbCBtRHluYW1pYzsKK307
CisKK2NsYXNzIFN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlIDogcHVibGljIEluZGV4QnVm
ZmVySW50ZXJmYWNlCit7CisgIHB1YmxpYzoKKyAgICBTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVy
ZmFjZShSZW5kZXJlciAqcmVuZGVyZXIpOworICAgIH5TdHJlYW1pbmdJbmRleEJ1ZmZlckludGVy
ZmFjZSgpOworCisgICAgdmlydHVhbCBib29sIHJlc2VydmVCdWZmZXJTcGFjZSh1bnNpZ25lZCBp
bnQgc2l6ZSwgR0xlbnVtIGluZGV4VHlwZSk7Cit9OworCitjbGFzcyBTdGF0aWNJbmRleEJ1ZmZl
ckludGVyZmFjZSA6IHB1YmxpYyBJbmRleEJ1ZmZlckludGVyZmFjZQoreworICBwdWJsaWM6Cisg
ICAgZXhwbGljaXQgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UoUmVuZGVyZXIgKnJlbmRlcmVy
KTsKKyAgICB+U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UoKTsKKworICAgIHZpcnR1YWwgYm9v
bCByZXNlcnZlQnVmZmVyU3BhY2UodW5zaWduZWQgaW50IHNpemUsIEdMZW51bSBpbmRleFR5cGUp
OworCisgICAgdW5zaWduZWQgaW50IGxvb2t1cFJhbmdlKGludHB0cl90IG9mZnNldCwgR0xzaXpl
aSBjb3VudCwgdW5zaWduZWQgaW50ICptaW5JbmRleCwgdW5zaWduZWQgaW50ICptYXhJbmRleCk7
ICAgLy8gUmV0dXJucyB0aGUgb2Zmc2V0IGludG8gdGhlIGluZGV4IGJ1ZmZlciwgb3IgLTEgaWYg
bm90IGZvdW5kCisgICAgdm9pZCBhZGRSYW5nZShpbnRwdHJfdCBvZmZzZXQsIEdMc2l6ZWkgY291
bnQsIHVuc2lnbmVkIGludCBtaW5JbmRleCwgdW5zaWduZWQgaW50IG1heEluZGV4LCB1bnNpZ25l
ZCBpbnQgc3RyZWFtT2Zmc2V0KTsKKworICBwcml2YXRlOgorICAgIHN0cnVjdCBJbmRleFJhbmdl
CisgICAgeworICAgICAgICBpbnRwdHJfdCBvZmZzZXQ7CisgICAgICAgIEdMc2l6ZWkgY291bnQ7
CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgSW5kZXhSYW5nZSYgcmhzKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAob2Zmc2V0ICE9IHJocy5vZmZzZXQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldCA8IHJocy5vZmZzZXQ7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoY291bnQgIT0gcmhzLmNvdW50KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBjb3VudCA8IHJocy5jb3VudDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH07CisKKyAg
ICBzdHJ1Y3QgSW5kZXhSZXN1bHQKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBtaW5JbmRl
eDsKKyAgICAgICAgdW5zaWduZWQgaW50IG1heEluZGV4OworICAgICAgICB1bnNpZ25lZCBpbnQg
c3RyZWFtT2Zmc2V0OworICAgIH07CisKKyAgICBzdGQ6Om1hcDxJbmRleFJhbmdlLCBJbmRleFJl
c3VsdD4gbUNhY2hlOworfTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0lO
REVYQlVGRkVSX0hfClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMTYgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworLy8gSW5kZXhEYXRhTWFuYWdlci5jcHA6IERlZmluZXMgdGhl
IEluZGV4RGF0YU1hbmFnZXIsIGEgY2xhc3MgdGhhdAorLy8gcnVucyB0aGUgQnVmZmVyIHRyYW5z
bGF0aW9uIHByb2Nlc3MgZm9yIGluZGV4IGJ1ZmZlcnMuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9CdWZmZXJTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvQnVmZmVyLmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL21haW4uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW5k
ZXhCdWZmZXIuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0luZGV4RGF0YU1hbmFnZXI6OkluZGV4
RGF0YU1hbmFnZXIoUmVuZGVyZXIgKnJlbmRlcmVyKSA6IG1SZW5kZXJlcihyZW5kZXJlcikKK3sK
KyAgICBtU3RyZWFtaW5nQnVmZmVyU2hvcnQgPSBuZXcgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRl
cmZhY2UobVJlbmRlcmVyKTsKKyAgICBpZiAoIW1TdHJlYW1pbmdCdWZmZXJTaG9ydC0+cmVzZXJ2
ZUJ1ZmZlclNwYWNlKElOSVRJQUxfSU5ERVhfQlVGRkVSX1NJWkUsIEdMX1VOU0lHTkVEX1NIT1JU
KSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtU3RyZWFtaW5nQnVmZmVyU2hvcnQ7CisgICAgICAg
IG1TdHJlYW1pbmdCdWZmZXJTaG9ydCA9IE5VTEw7CisgICAgfQorCisgICAgbVN0cmVhbWluZ0J1
ZmZlckludCA9IG5ldyBTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZShtUmVuZGVyZXIpOwor
ICAgIGlmICghbVN0cmVhbWluZ0J1ZmZlckludC0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKElOSVRJQUxf
SU5ERVhfQlVGRkVSX1NJWkUsIEdMX1VOU0lHTkVEX0lOVCkpCisgICAgeworICAgICAgICBkZWxl
dGUgbVN0cmVhbWluZ0J1ZmZlckludDsKKyAgICAgICAgbVN0cmVhbWluZ0J1ZmZlckludCA9IE5V
TEw7CisgICAgfQorCisgICAgaWYgKCFtU3RyZWFtaW5nQnVmZmVyU2hvcnQpCisgICAgeworICAg
ICAgICAvLyBNYWtlIHN1cmUgYm90aCBidWZmZXJzIGFyZSBkZWxldGVkLgorICAgICAgICBkZWxl
dGUgbVN0cmVhbWluZ0J1ZmZlckludDsKKyAgICAgICAgbVN0cmVhbWluZ0J1ZmZlckludCA9IE5V
TEw7CisKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gYWxsb2NhdGUgdGhlIHN0cmVhbWluZyBpbmRl
eCBidWZmZXIocykuIik7CisgICAgfQorCisgICAgbUNvdW50aW5nQnVmZmVyID0gTlVMTDsKK30K
KworSW5kZXhEYXRhTWFuYWdlcjo6fkluZGV4RGF0YU1hbmFnZXIoKQoreworICAgIGRlbGV0ZSBt
U3RyZWFtaW5nQnVmZmVyU2hvcnQ7CisgICAgZGVsZXRlIG1TdHJlYW1pbmdCdWZmZXJJbnQ7Cisg
ICAgZGVsZXRlIG1Db3VudGluZ0J1ZmZlcjsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBpbmRl
eFR5cGVTaXplKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX0lOVDogICByZXR1cm4gc2l6ZW9mKEdMdWludCk7CisgICAgICBj
YXNlIEdMX1VOU0lHTkVEX1NIT1JUOiByZXR1cm4gc2l6ZW9mKEdMdXNob3J0KTsKKyAgICAgIGNh
c2UgR0xfVU5TSUdORURfQllURTogIHJldHVybiBzaXplb2YoR0x1Ynl0ZSk7CisgICAgICBkZWZh
dWx0OiBVTlJFQUNIQUJMRSgpOyByZXR1cm4gc2l6ZW9mKEdMdXNob3J0KTsKKyAgICB9Cit9CisK
K3N0YXRpYyB2b2lkIGNvbnZlcnRJbmRpY2VzKEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbnB1
dCwgR0xzaXplaSBjb3VudCwgdm9pZCAqb3V0cHV0KQoreworICAgIGlmICh0eXBlID09IEdMX1VO
U0lHTkVEX0JZVEUpCisgICAgeworICAgICAgICBjb25zdCBHTHVieXRlICppbiA9IHN0YXRpY19j
YXN0PGNvbnN0IEdMdWJ5dGUqPihpbnB1dCk7CisgICAgICAgIEdMdXNob3J0ICpvdXQgPSBzdGF0
aWNfY2FzdDxHTHVzaG9ydCo+KG91dHB1dCk7CisKKyAgICAgICAgZm9yIChHTHNpemVpIGkgPSAw
OyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgb3V0W2ldID0gaW5baV07
CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSBHTF9VTlNJR05FRF9JTlQp
CisgICAgeworICAgICAgICBtZW1jcHkob3V0cHV0LCBpbnB1dCwgY291bnQgKiBzaXplb2YoR0x1
aW50KSk7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUgPT0gR0xfVU5TSUdORURfU0hPUlQpCisg
ICAgeworICAgICAgICBtZW1jcHkob3V0cHV0LCBpbnB1dCwgY291bnQgKiBzaXplb2YoR0x1c2hv
cnQpKTsKKyAgICB9CisgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgSW5kZXhUeXBlPgorc3RhdGljIHZvaWQgY29tcHV0ZVJhbmdlKGNvbnN0IEluZGV4VHlwZSAq
aW5kaWNlcywgR0xzaXplaSBjb3VudCwgR0x1aW50ICptaW5JbmRleCwgR0x1aW50ICptYXhJbmRl
eCkKK3sKKyAgICAqbWluSW5kZXggPSBpbmRpY2VzWzBdOworICAgICptYXhJbmRleCA9IGluZGlj
ZXNbMF07CisKKyAgICBmb3IgKEdMc2l6ZWkgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgIHsK
KyAgICAgICAgaWYgKCptaW5JbmRleCA+IGluZGljZXNbaV0pICptaW5JbmRleCA9IGluZGljZXNb
aV07CisgICAgICAgIGlmICgqbWF4SW5kZXggPCBpbmRpY2VzW2ldKSAqbWF4SW5kZXggPSBpbmRp
Y2VzW2ldOworICAgIH0KK30KKworc3RhdGljIHZvaWQgY29tcHV0ZVJhbmdlKEdMZW51bSB0eXBl
LCBjb25zdCBHTHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgY291bnQsIEdMdWludCAqbWluSW5kZXgs
IEdMdWludCAqbWF4SW5kZXgpCit7CisgICAgaWYgKHR5cGUgPT0gR0xfVU5TSUdORURfQllURSkK
KyAgICB7CisgICAgICAgIGNvbXB1dGVSYW5nZShzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4o
aW5kaWNlcyksIGNvdW50LCBtaW5JbmRleCwgbWF4SW5kZXgpOworICAgIH0KKyAgICBlbHNlIGlm
ICh0eXBlID09IEdMX1VOU0lHTkVEX0lOVCkKKyAgICB7CisgICAgICAgIGNvbXB1dGVSYW5nZShz
dGF0aWNfY2FzdDxjb25zdCBHTHVpbnQqPihpbmRpY2VzKSwgY291bnQsIG1pbkluZGV4LCBtYXhJ
bmRleCk7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUgPT0gR0xfVU5TSUdORURfU0hPUlQpCisg
ICAgeworICAgICAgICBjb21wdXRlUmFuZ2Uoc3RhdGljX2Nhc3Q8Y29uc3QgR0x1c2hvcnQqPihp
bmRpY2VzKSwgY291bnQsIG1pbkluZGV4LCBtYXhJbmRleCk7CisgICAgfQorICAgIGVsc2UgVU5S
RUFDSEFCTEUoKTsKK30KKworR0xlbnVtIEluZGV4RGF0YU1hbmFnZXI6OnByZXBhcmVJbmRleERh
dGEoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgY291bnQsIGdsOjpCdWZmZXIgKmJ1ZmZlciwgY29uc3Qg
R0x2b2lkICppbmRpY2VzLCBUcmFuc2xhdGVkSW5kZXhEYXRhICp0cmFuc2xhdGVkKQoreworICAg
IGlmICghbVN0cmVhbWluZ0J1ZmZlclNob3J0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX09V
VF9PRl9NRU1PUlk7CisgICAgfQorCisgICAgR0xlbnVtIGRlc3RpbmF0aW9uSW5kZXhUeXBlID0g
KHR5cGUgPT0gR0xfVU5TSUdORURfSU5UKSA/IEdMX1VOU0lHTkVEX0lOVCA6IEdMX1VOU0lHTkVE
X1NIT1JUOworICAgIGludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KGluZGljZXMpOworICAgIGJvb2wgYWxpZ25lZE9mZnNldCA9IGZhbHNlOworCisgICAgQnVmZmVy
U3RvcmFnZSAqc3RvcmFnZSA9IE5VTEw7CisKKyAgICBpZiAoYnVmZmVyICE9IE5VTEwpCisgICAg
eworICAgICAgICBzdG9yYWdlID0gYnVmZmVyLT5nZXRTdG9yYWdlKCk7CisKKyAgICAgICAgc3dp
dGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAg
YWxpZ25lZE9mZnNldCA9IChvZmZzZXQgJSBzaXplb2YoR0x1Ynl0ZSkgPT0gMCk7ICBicmVhazsK
KyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOiBhbGlnbmVkT2Zmc2V0ID0gKG9mZnNl
dCAlIHNpemVvZihHTHVzaG9ydCkgPT0gMCk7IGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfSU5UOiAgIGFsaWduZWRPZmZzZXQgPSAob2Zmc2V0ICUgc2l6ZW9mKEdMdWludCkgPT0g
MCk7ICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgYWxpZ25lZE9m
ZnNldCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGluZGV4VHlwZVNpemUodHlw
ZSkgKiBjb3VudCArIG9mZnNldCA+IHN0b3JhZ2UtPmdldFNpemUoKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfT1BFUkFUSU9OOworICAgICAgICB9CisKKyAgICAg
ICAgaW5kaWNlcyA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihzdG9yYWdlLT5nZXREYXRh
KCkpICsgb2Zmc2V0OworICAgIH0KKworICAgIFN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNl
ICpzdHJlYW1pbmdCdWZmZXIgPSAodHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpID8gbVN0cmVhbWlu
Z0J1ZmZlckludCA6IG1TdHJlYW1pbmdCdWZmZXJTaG9ydDsKKworICAgIFN0YXRpY0luZGV4QnVm
ZmVySW50ZXJmYWNlICpzdGF0aWNCdWZmZXIgPSBidWZmZXIgPyBidWZmZXItPmdldFN0YXRpY0lu
ZGV4QnVmZmVyKCkgOiBOVUxMOworICAgIEluZGV4QnVmZmVySW50ZXJmYWNlICppbmRleEJ1ZmZl
ciA9IHN0cmVhbWluZ0J1ZmZlcjsKKyAgICBib29sIGRpcmVjdFN0b3JhZ2UgPSBhbGlnbmVkT2Zm
c2V0ICYmIHN0b3JhZ2UgJiYgc3RvcmFnZS0+c3VwcG9ydHNEaXJlY3RCaW5kaW5nKCkgJiYKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbkluZGV4VHlwZSA9PSB0eXBlOworICAg
IFVJTlQgc3RyZWFtT2Zmc2V0ID0gMDsKKworICAgIGlmIChkaXJlY3RTdG9yYWdlKQorICAgIHsK
KyAgICAgICAgaW5kZXhCdWZmZXIgPSBzdHJlYW1pbmdCdWZmZXI7CisgICAgICAgIHN0cmVhbU9m
ZnNldCA9IG9mZnNldDsKKyAgICAgICAgc3RvcmFnZS0+bWFya0J1ZmZlclVzYWdlKCk7CisgICAg
ICAgIGNvbXB1dGVSYW5nZSh0eXBlLCBpbmRpY2VzLCBjb3VudCwgJnRyYW5zbGF0ZWQtPm1pbklu
ZGV4LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOworICAgIH0KKyAgICBlbHNlIGlmIChzdGF0aWNC
dWZmZXIgJiYgc3RhdGljQnVmZmVyLT5nZXRCdWZmZXJTaXplKCkgIT0gMCAmJiBzdGF0aWNCdWZm
ZXItPmdldEluZGV4VHlwZSgpID09IHR5cGUgJiYgYWxpZ25lZE9mZnNldCkKKyAgICB7CisgICAg
ICAgIGluZGV4QnVmZmVyID0gc3RhdGljQnVmZmVyOworICAgICAgICBzdHJlYW1PZmZzZXQgPSBz
dGF0aWNCdWZmZXItPmxvb2t1cFJhbmdlKG9mZnNldCwgY291bnQsICZ0cmFuc2xhdGVkLT5taW5J
bmRleCwgJnRyYW5zbGF0ZWQtPm1heEluZGV4KTsKKworICAgICAgICBpZiAoc3RyZWFtT2Zmc2V0
ID09IC0xKQorICAgICAgICB7CisgICAgICAgICAgICBzdHJlYW1PZmZzZXQgPSAob2Zmc2V0IC8g
aW5kZXhUeXBlU2l6ZSh0eXBlKSkgKiBpbmRleFR5cGVTaXplKGRlc3RpbmF0aW9uSW5kZXhUeXBl
KTsKKyAgICAgICAgICAgIGNvbXB1dGVSYW5nZSh0eXBlLCBpbmRpY2VzLCBjb3VudCwgJnRyYW5z
bGF0ZWQtPm1pbkluZGV4LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOworICAgICAgICAgICAgc3Rh
dGljQnVmZmVyLT5hZGRSYW5nZShvZmZzZXQsIGNvdW50LCB0cmFuc2xhdGVkLT5taW5JbmRleCwg
dHJhbnNsYXRlZC0+bWF4SW5kZXgsIHN0cmVhbU9mZnNldCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgaW50IGNvbnZlcnRDb3VudCA9IGNvdW50OworCisgICAg
ICAgIGlmIChzdGF0aWNCdWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChzdGF0aWNC
dWZmZXItPmdldEJ1ZmZlclNpemUoKSA9PSAwICYmIGFsaWduZWRPZmZzZXQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaW5kZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXI7CisgICAgICAg
ICAgICAgICAgY29udmVydENvdW50ID0gc3RvcmFnZS0+Z2V0U2l6ZSgpIC8gaW5kZXhUeXBlU2l6
ZSh0eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBidWZmZXItPmludmFsaWRhdGVTdGF0aWNEYXRhKCk7CisgICAgICAg
ICAgICAgICAgc3RhdGljQnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGlmICghaW5kZXhCdWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigi
Tm8gdmFsaWQgaW5kZXggYnVmZmVyLiIpOworICAgICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURf
T1BFUkFUSU9OOworICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgaW50IGJ1ZmZlclNpemVS
ZXF1aXJlZCA9IGNvbnZlcnRDb3VudCAqIGluZGV4VHlwZVNpemUoZGVzdGluYXRpb25JbmRleFR5
cGUpOworICAgICAgICBpbmRleEJ1ZmZlci0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKGJ1ZmZlclNpemVS
ZXF1aXJlZCwgdHlwZSk7CisKKyAgICAgICAgdm9pZCogb3V0cHV0ID0gTlVMTDsKKyAgICAgICAg
c3RyZWFtT2Zmc2V0ID0gaW5kZXhCdWZmZXItPm1hcEJ1ZmZlcihidWZmZXJTaXplUmVxdWlyZWQs
ICZvdXRwdXQpOworICAgICAgICBpZiAoc3RyZWFtT2Zmc2V0ID09IC0xIHx8IG91dHB1dCA9PSBO
VUxMKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBtYXAgaW5kZXggYnVm
ZmVyLiIpOworICAgICAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlk7CisgICAgICAgIH0K
KworICAgICAgICBjb252ZXJ0SW5kaWNlcyh0eXBlLCBzdGF0aWNCdWZmZXIgPyBzdG9yYWdlLT5n
ZXREYXRhKCkgOiBpbmRpY2VzLCBjb252ZXJ0Q291bnQsIG91dHB1dCk7CisKKyAgICAgICAgaWYg
KCFpbmRleEJ1ZmZlci0+dW5tYXBCdWZmZXIoKSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJS
KCJGYWlsZWQgdG8gdW5tYXAgaW5kZXggYnVmZmVyLiIpOworICAgICAgICAgICAgcmV0dXJuIEdM
X09VVF9PRl9NRU1PUlk7CisgICAgICAgIH0KKworICAgICAgICBjb21wdXRlUmFuZ2UodHlwZSwg
aW5kaWNlcywgY291bnQsICZ0cmFuc2xhdGVkLT5taW5JbmRleCwgJnRyYW5zbGF0ZWQtPm1heElu
ZGV4KTsKKworICAgICAgICBpZiAoc3RhdGljQnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAg
ICBzdHJlYW1PZmZzZXQgPSAob2Zmc2V0IC8gaW5kZXhUeXBlU2l6ZSh0eXBlKSkgKiBpbmRleFR5
cGVTaXplKGRlc3RpbmF0aW9uSW5kZXhUeXBlKTsKKyAgICAgICAgICAgIHN0YXRpY0J1ZmZlci0+
YWRkUmFuZ2Uob2Zmc2V0LCBjb3VudCwgdHJhbnNsYXRlZC0+bWluSW5kZXgsIHRyYW5zbGF0ZWQt
Pm1heEluZGV4LCBzdHJlYW1PZmZzZXQpOworICAgICAgICB9CisgICAgfQorCisgICAgdHJhbnNs
YXRlZC0+c3RvcmFnZSA9IGRpcmVjdFN0b3JhZ2UgPyBzdG9yYWdlIDogTlVMTDsKKyAgICB0cmFu
c2xhdGVkLT5pbmRleEJ1ZmZlciA9IGluZGV4QnVmZmVyLT5nZXRJbmRleEJ1ZmZlcigpOworICAg
IHRyYW5zbGF0ZWQtPnNlcmlhbCA9IGRpcmVjdFN0b3JhZ2UgPyBzdG9yYWdlLT5nZXRTZXJpYWwo
KSA6IGluZGV4QnVmZmVyLT5nZXRTZXJpYWwoKTsKKyAgICB0cmFuc2xhdGVkLT5zdGFydEluZGV4
ID0gc3RyZWFtT2Zmc2V0IC8gaW5kZXhUeXBlU2l6ZShkZXN0aW5hdGlvbkluZGV4VHlwZSk7Cisg
ICAgdHJhbnNsYXRlZC0+c3RhcnRPZmZzZXQgPSBzdHJlYW1PZmZzZXQ7CisKKyAgICBpZiAoYnVm
ZmVyKQorICAgIHsKKyAgICAgICAgYnVmZmVyLT5wcm9tb3RlU3RhdGljVXNhZ2UoY291bnQgKiBp
bmRleFR5cGVTaXplKHR5cGUpKTsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfTk9fRVJST1I7Cit9
CisKK1N0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlICpJbmRleERhdGFNYW5hZ2VyOjpnZXRDb3Vu
dGluZ0luZGljZXMoR0xzaXplaSBjb3VudCkKK3sKKyAgICBpZiAoY291bnQgPD0gNjU1MzYpICAg
Ly8gMTYtYml0IGluZGljZXMKKyAgICB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBzcGFj
ZU5lZWRlZCA9IGNvdW50ICogc2l6ZW9mKHVuc2lnbmVkIHNob3J0KTsKKworICAgICAgICBpZiAo
IW1Db3VudGluZ0J1ZmZlciB8fCBtQ291bnRpbmdCdWZmZXItPmdldEJ1ZmZlclNpemUoKSA8IHNw
YWNlTmVlZGVkKQorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGUgbUNvdW50aW5nQnVmZmVy
OworICAgICAgICAgICAgbUNvdW50aW5nQnVmZmVyID0gbmV3IFN0YXRpY0luZGV4QnVmZmVySW50
ZXJmYWNlKG1SZW5kZXJlcik7CisgICAgICAgICAgICBtQ291bnRpbmdCdWZmZXItPnJlc2VydmVC
dWZmZXJTcGFjZShzcGFjZU5lZWRlZCwgR0xfVU5TSUdORURfU0hPUlQpOworCisgICAgICAgICAg
ICB2b2lkKiBtYXBwZWRNZW1vcnkgPSBOVUxMOworICAgICAgICAgICAgaWYgKG1Db3VudGluZ0J1
ZmZlci0+bWFwQnVmZmVyKHNwYWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5KSA9PSAtMSB8fCBtYXBw
ZWRNZW1vcnkgPT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFUlIoIkZh
aWxlZCB0byBtYXAgY291bnRpbmcgYnVmZmVyLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBO
VUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAqZGF0YSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgc2hvcnQqPihtYXBwZWRNZW1vcnkpOworICAgICAg
ICAgICAgZm9yKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZGF0YVtpXSA9IGk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICghbUNvdW50aW5nQnVmZmVyLT51bm1hcEJ1ZmZlcigpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIEVSUigiRmFpbGVkIHRvIHVubWFwIGNvdW50aW5nIGJ1ZmZlci4iKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICBlbHNlIGlmIChtU3RyZWFtaW5nQnVmZmVySW50KSAgIC8vIDMyLWJpdCBpbmRpY2VzIHN1
cHBvcnRlZAorICAgIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IHNwYWNlTmVlZGVkID0g
Y291bnQgKiBzaXplb2YodW5zaWduZWQgaW50KTsKKworICAgICAgICBpZiAoIW1Db3VudGluZ0J1
ZmZlciB8fCBtQ291bnRpbmdCdWZmZXItPmdldEJ1ZmZlclNpemUoKSA8IHNwYWNlTmVlZGVkKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWxldGUgbUNvdW50aW5nQnVmZmVyOworICAgICAgICAg
ICAgbUNvdW50aW5nQnVmZmVyID0gbmV3IFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlKG1SZW5k
ZXJlcik7CisgICAgICAgICAgICBtQ291bnRpbmdCdWZmZXItPnJlc2VydmVCdWZmZXJTcGFjZShz
cGFjZU5lZWRlZCwgR0xfVU5TSUdORURfSU5UKTsKKworICAgICAgICAgICAgdm9pZCogbWFwcGVk
TWVtb3J5ID0gTlVMTDsKKyAgICAgICAgICAgIGlmIChtQ291bnRpbmdCdWZmZXItPm1hcEJ1ZmZl
cihzcGFjZU5lZWRlZCwgJm1hcHBlZE1lbW9yeSkgPT0gLTEgfHwgbWFwcGVkTWVtb3J5ID09IE5V
TEwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gbWFwIGNv
dW50aW5nIGJ1ZmZlci4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdW5zaWduZWQgaW50ICpkYXRhID0gcmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCBpbnQqPihtYXBwZWRNZW1vcnkpOworICAgICAgICAgICAgZm9yKGludCBpID0g
MDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGF0YVtp
XSA9IGk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbUNvdW50aW5nQnVmZmVy
LT51bm1hcEJ1ZmZlcigpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVSUigiRmFp
bGVkIHRvIHVubWFwIGNvdW50aW5nIGJ1ZmZlci4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbUNvdW50aW5nQnVmZmVy
OworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
SW5kZXhEYXRhTWFuYWdlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisvLyBJbmRleERhdGFNYW5hZ2VyLmg6IERlZmluZXMgdGhlIEluZGV4RGF0
YU1hbmFnZXIsIGEgY2xhc3MgdGhhdAorLy8gcnVucyB0aGUgQnVmZmVyIHRyYW5zbGF0aW9uIHBy
b2Nlc3MgZm9yIGluZGV4IGJ1ZmZlcnMuCisKKyNpZm5kZWYgTElCR0xFU1YyX0lOREVYREFUQU1B
TkFHRVJfSF8KKyNkZWZpbmUgTElCR0xFU1YyX0lOREVYREFUQU1BTkFHRVJfSF8KKworI2luY2x1
ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZQoreworICAgIGVudW0geyBJTklU
SUFMX0lOREVYX0JVRkZFUl9TSVpFID0gNDA5NiAqIHNpemVvZihHTHVpbnQpIH07Cit9CisKK25h
bWVzcGFjZSBnbAoreworY2xhc3MgQnVmZmVyOworfQorCituYW1lc3BhY2UgcngKK3sKK2NsYXNz
IFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlOworY2xhc3MgU3RyZWFtaW5nSW5kZXhCdWZmZXJJ
bnRlcmZhY2U7CitjbGFzcyBJbmRleEJ1ZmZlcjsKK2NsYXNzIEJ1ZmZlclN0b3JhZ2U7CitjbGFz
cyBSZW5kZXJlcjsKKworc3RydWN0IFRyYW5zbGF0ZWRJbmRleERhdGEKK3sKKyAgICB1bnNpZ25l
ZCBpbnQgbWluSW5kZXg7CisgICAgdW5zaWduZWQgaW50IG1heEluZGV4OworICAgIHVuc2lnbmVk
IGludCBzdGFydEluZGV4OworICAgIHVuc2lnbmVkIGludCBzdGFydE9mZnNldDsgICAvLyBJbiBi
eXRlcworCisgICAgSW5kZXhCdWZmZXIgKmluZGV4QnVmZmVyOworICAgIEJ1ZmZlclN0b3JhZ2Ug
KnN0b3JhZ2U7CisgICAgdW5zaWduZWQgaW50IHNlcmlhbDsKK307CisKK2NsYXNzIEluZGV4RGF0
YU1hbmFnZXIKK3sKKyAgcHVibGljOgorICAgIGV4cGxpY2l0IEluZGV4RGF0YU1hbmFnZXIoUmVu
ZGVyZXIgKnJlbmRlcmVyKTsKKyAgICB2aXJ0dWFsIH5JbmRleERhdGFNYW5hZ2VyKCk7CisKKyAg
ICBHTGVudW0gcHJlcGFyZUluZGV4RGF0YShHTGVudW0gdHlwZSwgR0xzaXplaSBjb3VudCwgZ2w6
OkJ1ZmZlciAqYXJyYXlFbGVtZW50QnVmZmVyLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIFRyYW5z
bGF0ZWRJbmRleERhdGEgKnRyYW5zbGF0ZWQpOworICAgIFN0YXRpY0luZGV4QnVmZmVySW50ZXJm
YWNlICpnZXRDb3VudGluZ0luZGljZXMoR0xzaXplaSBjb3VudCk7CisKKyAgcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oSW5kZXhEYXRhTWFuYWdlcik7CisKKyAgICBSZW5k
ZXJlciAqY29uc3QgbVJlbmRlcmVyOworCisgICAgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZh
Y2UgKm1TdHJlYW1pbmdCdWZmZXJTaG9ydDsKKyAgICBTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVy
ZmFjZSAqbVN0cmVhbWluZ0J1ZmZlckludDsKKyAgICBTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFj
ZSAqbUNvdW50aW5nQnVmZmVyOworfTsKKworfQorCisjZW5kaWYgICAvLyBMSUJHTEVTVjJfSU5E
RVhEQVRBTUFOQUdFUl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9JbnB1dExheW91dENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9JbnB1dExheW91dENhY2hlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NjYgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAx
MiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIElucHV0
TGF5b3V0Q2FjaGUuY3BwOiBEZWZpbmVzIElucHV0TGF5b3V0Q2FjaGUsIGEgY2xhc3MgdGhhdCBi
dWlsZHMgYW5kIGNhY2hlcworLy8gRDNEMTEgaW5wdXQgbGF5b3V0cy4KKworI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9JbnB1dExheW91dENhY2hlLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L0J1ZmZlclN0b3JhZ2UxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJF
eGVjdXRhYmxlMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9Db250ZXh0LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L1ZlcnRleERhdGFNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9tdXJtdXJoYXNo
L011cm11ckhhc2gzLmgiCisKK25hbWVzcGFjZSByeAoreworCitjb25zdCB1bnNpZ25lZCBpbnQg
SW5wdXRMYXlvdXRDYWNoZTo6a01heElucHV0TGF5b3V0cyA9IDEwMjQ7CisKK0lucHV0TGF5b3V0
Q2FjaGU6OklucHV0TGF5b3V0Q2FjaGUoKSA6IG1JbnB1dExheW91dE1hcChrTWF4SW5wdXRMYXlv
dXRzLCBoYXNoSW5wdXRMYXlvdXQsIGNvbXBhcmVJbnB1dExheW91dHMpCit7CisgICAgbUNvdW50
ZXIgPSAwOworICAgIG1EZXZpY2UgPSBOVUxMOworICAgIG1EZXZpY2VDb250ZXh0ID0gTlVMTDsK
K30KKworSW5wdXRMYXlvdXRDYWNoZTo6fklucHV0TGF5b3V0Q2FjaGUoKQoreworICAgIGNsZWFy
KCk7Cit9CisKK3ZvaWQgSW5wdXRMYXlvdXRDYWNoZTo6aW5pdGlhbGl6ZShJRDNEMTFEZXZpY2Ug
KmRldmljZSwgSUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4dCkKK3sKKyAgICBjbGVhcigpOwor
ICAgIG1EZXZpY2UgPSBkZXZpY2U7CisgICAgbURldmljZUNvbnRleHQgPSBjb250ZXh0OworfQor
Cit2b2lkIElucHV0TGF5b3V0Q2FjaGU6OmNsZWFyKCkKK3sKKyAgICBmb3IgKElucHV0TGF5b3V0
TWFwOjppdGVyYXRvciBpID0gbUlucHV0TGF5b3V0TWFwLmJlZ2luKCk7IGkgIT0gbUlucHV0TGF5
b3V0TWFwLmVuZCgpOyBpKyspCisgICAgeworICAgICAgICBpLT5zZWNvbmQuaW5wdXRMYXlvdXQt
PlJlbGVhc2UoKTsKKyAgICB9CisgICAgbUlucHV0TGF5b3V0TWFwLmNsZWFyKCk7Cit9CisKK0dM
ZW51bSBJbnB1dExheW91dENhY2hlOjphcHBseVZlcnRleEJ1ZmZlcnMoVHJhbnNsYXRlZEF0dHJp
YnV0ZSBhdHRyaWJ1dGVzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJp
bmFyeSkKK3sKKyAgICBpbnQgc29ydGVkU2VtYW50aWNJbmRpY2VzW2dsOjpNQVhfVkVSVEVYX0FU
VFJJQlNdOworICAgIHByb2dyYW1CaW5hcnktPnNvcnRBdHRyaWJ1dGVzQnlMYXlvdXQoYXR0cmli
dXRlcywgc29ydGVkU2VtYW50aWNJbmRpY2VzKTsKKworICAgIGlmICghbURldmljZSB8fCAhbURl
dmljZUNvbnRleHQpCisgICAgeworICAgICAgICBFUlIoIklucHV0TGF5b3V0Q2FjaGUgaXMgbm90
IGluaXRpYWxpemVkLiIpOworICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9PUEVSQVRJT047Cisg
ICAgfQorCisgICAgSW5wdXRMYXlvdXRLZXkgaWxLZXkgPSB7IDAgfTsKKworICAgIElEM0QxMUJ1
ZmZlciAqdmVydGV4QnVmZmVyc1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSA9IHsgTlVMTCB9Owor
ICAgIFVJTlQgdmVydGV4U3RyaWRlc1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSA9IHsgMCB9Owor
ICAgIFVJTlQgdmVydGV4T2Zmc2V0c1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSA9IHsgMCB9Owor
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNlbWFudGljTmFtZSA9ICJURVhDT09SRCI7CisKKyAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkr
KykKKyAgICB7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzW2ldLmFjdGl2ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgVmVydGV4QnVmZmVyMTEgKnZlcnRleEJ1ZmZlciA9IFZlcnRleEJ1ZmZlcjEx
OjptYWtlVmVydGV4QnVmZmVyMTEoYXR0cmlidXRlc1tpXS52ZXJ0ZXhCdWZmZXIpOworICAgICAg
ICAgICAgQnVmZmVyU3RvcmFnZTExICpidWZmZXJTdG9yYWdlID0gYXR0cmlidXRlc1tpXS5zdG9y
YWdlID8gQnVmZmVyU3RvcmFnZTExOjptYWtlQnVmZmVyU3RvcmFnZTExKGF0dHJpYnV0ZXNbaV0u
c3RvcmFnZSkgOiBOVUxMOworCisgICAgICAgICAgICBEM0QxMV9JTlBVVF9DTEFTU0lGSUNBVElP
TiBpbnB1dENsYXNzID0gYXR0cmlidXRlc1tpXS5kaXZpc29yID4gMCA/IEQzRDExX0lOUFVUX1BF
Ul9JTlNUQU5DRV9EQVRBIDogRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRBOworCisgICAgICAg
ICAgICAvLyBSZWNvcmQgdGhlIHR5cGUgb2YgdGhlIGFzc29jaWF0ZWQgdmVydGV4IHNoYWRlciB2
ZWN0b3IgaW4gb3VyIGtleQorICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHByZXZlbnQgbWlzbWF0
Y2hlZCB2ZXJ0ZXggc2hhZGVycyBmcm9tIHVzaW5nIHRoZSBzYW1lIGlucHV0IGxheW91dAorICAg
ICAgICAgICAgR0xpbnQgYXR0cmlidXRlU2l6ZTsKKyAgICAgICAgICAgIHByb2dyYW1CaW5hcnkt
PmdldEFjdGl2ZUF0dHJpYnV0ZShpbEtleS5lbGVtZW50Q291bnQsIDAsIE5VTEwsICZhdHRyaWJ1
dGVTaXplLCAmaWxLZXkuZ2xzbEVsZW1lbnRUeXBlW2lsS2V5LmVsZW1lbnRDb3VudF0sIE5VTEwp
OworCisgICAgICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLlNlbWFu
dGljTmFtZSA9IHNlbWFudGljTmFtZTsKKyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5
LmVsZW1lbnRDb3VudF0uU2VtYW50aWNJbmRleCA9IHNvcnRlZFNlbWFudGljSW5kaWNlc1tpXTsK
KyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0uRm9ybWF0ID0g
YXR0cmlidXRlc1tpXS5hdHRyaWJ1dGUtPm1BcnJheUVuYWJsZWQgPyB2ZXJ0ZXhCdWZmZXItPmdl
dERYR0lGb3JtYXQoKmF0dHJpYnV0ZXNbaV0uYXR0cmlidXRlKSA6IERYR0lfRk9STUFUX1IzMkcz
MkIzMkEzMl9GTE9BVDsKKyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRD
b3VudF0uSW5wdXRTbG90ID0gaTsKKyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVs
ZW1lbnRDb3VudF0uQWxpZ25lZEJ5dGVPZmZzZXQgPSAwOworICAgICAgICAgICAgaWxLZXkuZWxl
bWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5JbnB1dFNsb3RDbGFzcyA9IGlucHV0Q2xhc3M7Cisg
ICAgICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLkluc3RhbmNlRGF0
YVN0ZXBSYXRlID0gYXR0cmlidXRlc1tpXS5kaXZpc29yOworICAgICAgICAgICAgaWxLZXkuZWxl
bWVudENvdW50Kys7CisKKyAgICAgICAgICAgIHZlcnRleEJ1ZmZlcnNbaV0gPSBidWZmZXJTdG9y
YWdlID8gYnVmZmVyU3RvcmFnZS0+Z2V0QnVmZmVyKCkgOiB2ZXJ0ZXhCdWZmZXItPmdldEJ1ZmZl
cigpOworICAgICAgICAgICAgdmVydGV4U3RyaWRlc1tpXSA9IGF0dHJpYnV0ZXNbaV0uc3RyaWRl
OworICAgICAgICAgICAgdmVydGV4T2Zmc2V0c1tpXSA9IGF0dHJpYnV0ZXNbaV0ub2Zmc2V0Owor
ICAgICAgICB9CisgICAgfQorCisgICAgSUQzRDExSW5wdXRMYXlvdXQgKmlucHV0TGF5b3V0ID0g
TlVMTDsKKworICAgIElucHV0TGF5b3V0TWFwOjppdGVyYXRvciBpID0gbUlucHV0TGF5b3V0TWFw
LmZpbmQoaWxLZXkpOworICAgIGlmIChpICE9IG1JbnB1dExheW91dE1hcC5lbmQoKSkKKyAgICB7
CisgICAgICAgIGlucHV0TGF5b3V0ID0gaS0+c2Vjb25kLmlucHV0TGF5b3V0OworICAgICAgICBp
LT5zZWNvbmQubGFzdFVzZWRUaW1lID0gbUNvdW50ZXIrKzsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgU2hhZGVyRXhlY3V0YWJsZTExICpzaGFkZXIgPSBTaGFkZXJFeGVjdXRhYmxl
MTE6Om1ha2VTaGFkZXJFeGVjdXRhYmxlMTEocHJvZ3JhbUJpbmFyeS0+Z2V0VmVydGV4RXhlY3V0
YWJsZSgpKTsKKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZUlucHV0
TGF5b3V0KGlsS2V5LmVsZW1lbnRzLCBpbEtleS5lbGVtZW50Q291bnQsIHNoYWRlci0+Z2V0RnVu
Y3Rpb24oKSwgc2hhZGVyLT5nZXRMZW5ndGgoKSwgJmlucHV0TGF5b3V0KTsKKyAgICAgICAgaWYg
KEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBj
cmF0ZSBpbnB1dCBsYXlvdXQsIHJlc3VsdDogMHglMDh4IiwgcmVzdWx0KTsKKyAgICAgICAgICAg
IHJldHVybiBHTF9JTlZBTElEX09QRVJBVElPTjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICht
SW5wdXRMYXlvdXRNYXAuc2l6ZSgpID49IGtNYXhJbnB1dExheW91dHMpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFRSQUNFKCJPdmVyZmxvd2VkIHRoZSBsaW1pdCBvZiAldSBpbnB1dCBsYXlvdXRz
LCByZW1vdmluZyB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCAiCisgICAgICAgICAgICAgICAgICAi
dG8gbWFrZSByb29tLiIsIGtNYXhJbnB1dExheW91dHMpOworCisgICAgICAgICAgICBJbnB1dExh
eW91dE1hcDo6aXRlcmF0b3IgbGVhc3RSZWNlbnRseVVzZWQgPSBtSW5wdXRMYXlvdXRNYXAuYmVn
aW4oKTsKKyAgICAgICAgICAgIGZvciAoSW5wdXRMYXlvdXRNYXA6Oml0ZXJhdG9yIGkgPSBtSW5w
dXRMYXlvdXRNYXAuYmVnaW4oKTsgaSAhPSBtSW5wdXRMYXlvdXRNYXAuZW5kKCk7IGkrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoaS0+c2Vjb25kLmxhc3RVc2VkVGltZSA8
IGxlYXN0UmVjZW50bHlVc2VkLT5zZWNvbmQubGFzdFVzZWRUaW1lKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgbGVhc3RSZWNlbnRseVVzZWQgPSBpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlYXN0UmVjZW50bHlVc2VkLT5z
ZWNvbmQuaW5wdXRMYXlvdXQtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1JbnB1dExheW91dE1h
cC5lcmFzZShsZWFzdFJlY2VudGx5VXNlZCk7CisgICAgICAgIH0KKworICAgICAgICBJbnB1dExh
eW91dENvdW50ZXJQYWlyIGlucHV0Q291bnRlclBhaXI7CisgICAgICAgIGlucHV0Q291bnRlclBh
aXIuaW5wdXRMYXlvdXQgPSBpbnB1dExheW91dDsKKyAgICAgICAgaW5wdXRDb3VudGVyUGFpci5s
YXN0VXNlZFRpbWUgPSBtQ291bnRlcisrOworCisgICAgICAgIG1JbnB1dExheW91dE1hcC5pbnNl
cnQoc3RkOjptYWtlX3BhaXIoaWxLZXksIGlucHV0Q291bnRlclBhaXIpKTsKKyAgICB9CisKKyAg
ICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbnB1dExheW91dChpbnB1dExheW91dCk7CisgICAgbURl
dmljZUNvbnRleHQtPklBU2V0VmVydGV4QnVmZmVycygwLCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJT
LCB2ZXJ0ZXhCdWZmZXJzLCB2ZXJ0ZXhTdHJpZGVzLCB2ZXJ0ZXhPZmZzZXRzKTsKKworICAgIHJl
dHVybiBHTF9OT19FUlJPUjsKK30KKworc3RkOjpzaXplX3QgSW5wdXRMYXlvdXRDYWNoZTo6aGFz
aElucHV0TGF5b3V0KGNvbnN0IElucHV0TGF5b3V0S2V5ICZpbnB1dExheW91dCkKK3sKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHNlZWQgPSAweERFQURCRUVGOworCisgICAgc3RkOjpz
aXplX3QgaGFzaCA9IDA7CisgICAgTXVybXVySGFzaDNfeDg2XzMyKCZpbnB1dExheW91dCwgc2l6
ZW9mKElucHV0TGF5b3V0S2V5KSwgc2VlZCwgJmhhc2gpOworICAgIHJldHVybiBoYXNoOworfQor
Citib29sIElucHV0TGF5b3V0Q2FjaGU6OmNvbXBhcmVJbnB1dExheW91dHMoY29uc3QgSW5wdXRM
YXlvdXRLZXkgJmEsIGNvbnN0IElucHV0TGF5b3V0S2V5ICZiKQoreworICAgIHJldHVybiBtZW1j
bXAoJmEsICZiLCBzaXplb2YoSW5wdXRMYXlvdXRLZXkpKSA9PSAwOworfQorCit9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0
Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEy
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW5wdXRM
YXlvdXRDYWNoZS5oOiBEZWZpbmVzIElucHV0TGF5b3V0Q2FjaGUsIGEgY2xhc3MgdGhhdCBidWls
ZHMgYW5kIGNhY2hlcworLy8gRDNEMTEgaW5wdXQgbGF5b3V0cy4KKworI2lmbmRlZiBMSUJHTEVT
VjJfUkVOREVSRVJfSU5QVVRMQVlPVVRDQUNIRV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVS
RVJfSU5QVVRMQVlPVVRDQUNIRV9IXworCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnN0YW50cy5o
IgorI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSBnbAoreworY2xh
c3MgUHJvZ3JhbUJpbmFyeTsKK30KKworbmFtZXNwYWNlIHJ4Cit7CitzdHJ1Y3QgVHJhbnNsYXRl
ZEF0dHJpYnV0ZTsKKworY2xhc3MgSW5wdXRMYXlvdXRDYWNoZQoreworICBwdWJsaWM6CisgICAg
SW5wdXRMYXlvdXRDYWNoZSgpOworICAgIHZpcnR1YWwgfklucHV0TGF5b3V0Q2FjaGUoKTsKKwor
ICAgIHZvaWQgaW5pdGlhbGl6ZShJRDNEMTFEZXZpY2UgKmRldmljZSwgSUQzRDExRGV2aWNlQ29u
dGV4dCAqY29udGV4dCk7CisgICAgdm9pZCBjbGVhcigpOworCisgICAgR0xlbnVtIGFwcGx5VmVy
dGV4QnVmZmVycyhUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNbZ2w6Ok1BWF9WRVJURVhf
QVRUUklCU10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFy
eSAqcHJvZ3JhbUJpbmFyeSk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9B
U1NJR04oSW5wdXRMYXlvdXRDYWNoZSk7CisKKyAgICBzdHJ1Y3QgSW5wdXRMYXlvdXRLZXkKKyAg
ICB7CisgICAgICAgIHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQ7CisgICAgICAgIEQzRDExX0lO
UFVUX0VMRU1FTlRfREVTQyBlbGVtZW50c1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsKKyAgICAg
ICAgR0xlbnVtIGdsc2xFbGVtZW50VHlwZVtnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsKKyAgICB9
OworCisgICAgc3RydWN0IElucHV0TGF5b3V0Q291bnRlclBhaXIKKyAgICB7CisgICAgICAgIElE
M0QxMUlucHV0TGF5b3V0ICppbnB1dExheW91dDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25n
IGxhc3RVc2VkVGltZTsKKyAgICB9OworCisgICAgc3RhdGljIHN0ZDo6c2l6ZV90IGhhc2hJbnB1
dExheW91dChjb25zdCBJbnB1dExheW91dEtleSAmaW5wdXRMYXlvdXQpOworICAgIHN0YXRpYyBi
b29sIGNvbXBhcmVJbnB1dExheW91dHMoY29uc3QgSW5wdXRMYXlvdXRLZXkgJmEsIGNvbnN0IElu
cHV0TGF5b3V0S2V5ICZiKTsKKworICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgKCpJbnB1dExheW91
dEhhc2hGdW5jdGlvbikoY29uc3QgSW5wdXRMYXlvdXRLZXkgJik7CisgICAgdHlwZWRlZiBib29s
ICgqSW5wdXRMYXlvdXRFcXVhbGl0eUZ1bmN0aW9uKShjb25zdCBJbnB1dExheW91dEtleSAmLCBj
b25zdCBJbnB1dExheW91dEtleSAmKTsKKyAgICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxJ
bnB1dExheW91dEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dExheW91
dENvdW50ZXJQYWlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0TGF5b3V0
SGFzaEZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0TGF5b3V0
RXF1YWxpdHlGdW5jdGlvbj4gSW5wdXRMYXlvdXRNYXA7CisgICAgSW5wdXRMYXlvdXRNYXAgbUlu
cHV0TGF5b3V0TWFwOworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBrTWF4SW5wdXRM
YXlvdXRzOworCisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1Db3VudGVyOworCisgICAgSUQzRDEx
RGV2aWNlICptRGV2aWNlOworICAgIElEM0QxMURldmljZUNvbnRleHQgKm1EZXZpY2VDb250ZXh0
OworfTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0lOUFVUTEFZT1VUQ0FD
SEVfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvUXVlcnk5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5OS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5OS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTI1IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBRdWVyeTkuY3BwOiBEZWZpbmVzIHRoZSByeDo6UXVlcnk5IGNsYXNzIHdoaWNo
IGltcGxlbWVudHMgcng6OlF1ZXJ5SW1wbC4KKworCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRl
cmVyL1F1ZXJ5OS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyOV91dGlscy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9y
ZW5kZXJlci9SZW5kZXJlcjkuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1F1ZXJ5OTo6UXVlcnk5
KHJ4OjpSZW5kZXJlcjkgKnJlbmRlcmVyLCBHTGVudW0gdHlwZSkgOiBRdWVyeUltcGwodHlwZSkK
K3sKKyAgICBtUmVuZGVyZXIgPSByZW5kZXJlcjsKKyAgICBtUXVlcnkgPSBOVUxMOworfQorCitR
dWVyeTk6On5RdWVyeTkoKQoreworICAgIGlmIChtUXVlcnkpCisgICAgeworICAgICAgICBtUXVl
cnktPlJlbGVhc2UoKTsKKyAgICAgICAgbVF1ZXJ5ID0gTlVMTDsKKyAgICB9Cit9CisKK3ZvaWQg
UXVlcnk5OjpiZWdpbigpCit7CisgICAgaWYgKG1RdWVyeSA9PSBOVUxMKQorICAgIHsKKyAgICAg
ICAgaWYgKEZBSUxFRChtUmVuZGVyZXItPmdldERldmljZSgpLT5DcmVhdGVRdWVyeShEM0RRVUVS
WVRZUEVfT0NDTFVTSU9OLCAmbVF1ZXJ5KSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBI
UkVTVUxUIHJlc3VsdCA9IG1RdWVyeS0+SXNzdWUoRDNESVNTVUVfQkVHSU4pOworICAgIEFTU0VS
VChTVUNDRUVERUQocmVzdWx0KSk7Cit9CisKK3ZvaWQgUXVlcnk5OjplbmQoKQoreworICAgIGlm
IChtUXVlcnkgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAgIEhSRVNVTFQgcmVzdWx0ID0gbVF1ZXJ5LT5J
c3N1ZShEM0RJU1NVRV9FTkQpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAg
ICBtU3RhdHVzID0gR0xfRkFMU0U7CisgICAgbVJlc3VsdCA9IEdMX0ZBTFNFOworfQorCitHTHVp
bnQgUXVlcnk5OjpnZXRSZXN1bHQoKQoreworICAgIGlmIChtUXVlcnkgIT0gTlVMTCkKKyAgICB7
CisgICAgICAgIHdoaWxlICghdGVzdFF1ZXJ5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNs
ZWVwKDApOworICAgICAgICAgICAgLy8gZXhwbGljaXRseSBjaGVjayBmb3IgZGV2aWNlIGxvc3MK
KyAgICAgICAgICAgIC8vIHNvbWUgZHJpdmVycyBzZWVtIHRvIHJldHVybiBTX0ZBTFNFIGV2ZW4g
aWYgdGhlIGRldmljZSBpcyBsb3N0CisgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIEQzREVSUl9E
RVZJQ0VMT1NUIGxpa2UgdGhleSBzaG91bGQKKyAgICAgICAgICAgIGlmIChtUmVuZGVyZXItPnRl
c3REZXZpY2VMb3N0KHRydWUpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gbVJlc3VsdDsKK30KKworR0xib29sZWFuIFF1ZXJ5OTo6
aXNSZXN1bHRBdmFpbGFibGUoKQoreworICAgIGlmIChtUXVlcnkgIT0gTlVMTCkKKyAgICB7Cisg
ICAgICAgIHRlc3RRdWVyeSgpOworICAgIH0KKworICAgIHJldHVybiBtU3RhdHVzOworfQorCitH
TGJvb2xlYW4gUXVlcnk5Ojp0ZXN0UXVlcnkoKQoreworICAgIGlmIChtUXVlcnkgIT0gTlVMTCAm
JiBtU3RhdHVzICE9IEdMX1RSVUUpCisgICAgeworICAgICAgICBEV09SRCBudW1QaXhlbHMgPSAw
OworCisgICAgICAgIEhSRVNVTFQgaHJlcyA9IG1RdWVyeS0+R2V0RGF0YSgmbnVtUGl4ZWxzLCBz
aXplb2YoRFdPUkQpLCBEM0RHRVREQVRBX0ZMVVNIKTsKKyAgICAgICAgaWYgKGhyZXMgPT0gU19P
SykKKyAgICAgICAgeworICAgICAgICAgICAgbVN0YXR1cyA9ICBHTF9UUlVFOworCisgICAgICAg
ICAgICBzd2l0Y2ggKGdldFR5cGUoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX0FOWV9T
QU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhUOgorICAgICAgICAgICAgICAgIG1SZXN1bHQg
PSAobnVtUGl4ZWxzID4gMCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUKGZh
bHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChkM2Q5Ojpp
c0RldmljZUxvc3RFcnJvcihocmVzKSkKKyAgICAgICAgeworICAgICAgICAgICAgbVJlbmRlcmVy
LT5ub3RpZnlEZXZpY2VMb3N0KCk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlksIEdMX1RSVUUpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1TdGF0
dXM7CisgICAgfQorCisgICAgcmV0dXJuIEdMX1RSVUU7IC8vIHByZXZlbnQgYmxvY2tpbmcgd2hl
biBxdWVyeSBpcyBudWxsCit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnk5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTkuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnk5
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBRdWVy
eTkuaDogRGVmaW5lcyB0aGUgcng6OlF1ZXJ5OSBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHJ4OjpR
dWVyeUltcGwuCisKKyNpZm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX1FVRVJZOV9IXworI2RlZmlu
ZSBMSUJHTEVTVjJfUkVOREVSRVJfUVVFUlk5X0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvUXVlcnlJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI5Owor
CitjbGFzcyBRdWVyeTkgOiBwdWJsaWMgUXVlcnlJbXBsCit7CisgIHB1YmxpYzoKKyAgICBRdWVy
eTkocng6OlJlbmRlcmVyOSAqcmVuZGVyZXIsIEdMZW51bSB0eXBlKTsKKyAgICB2aXJ0dWFsIH5R
dWVyeTkoKTsKKworICAgIHZvaWQgYmVnaW4oKTsKKyAgICB2b2lkIGVuZCgpOworICAgIEdMdWlu
dCBnZXRSZXN1bHQoKTsKKyAgICBHTGJvb2xlYW4gaXNSZXN1bHRBdmFpbGFibGUoKTsKKworICBw
cml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihRdWVyeTkpOworCisgICAgR0xi
b29sZWFuIHRlc3RRdWVyeSgpOworCisgICAgcng6OlJlbmRlcmVyOSAqbVJlbmRlcmVyOworICAg
IElEaXJlY3QzRFF1ZXJ5OSAqbVF1ZXJ5OworfTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1Yy
X1JFTkRFUkVSX1FVRVJZOV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5MTEuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVy
eTExLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjIgQEAKKyNpbmNsdWRlICJwcmVjb21w
aWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFF1ZXJ5MTEuY3BwOiBEZWZpbmVzIHRoZSByeDo6
UXVlcnkxMSBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHJ4OjpRdWVyeUltcGwuCisKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvUXVlcnkxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJlcjExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKworbmFtZXNw
YWNlIHJ4Cit7CisKK1F1ZXJ5MTE6OlF1ZXJ5MTEocng6OlJlbmRlcmVyMTEgKnJlbmRlcmVyLCBH
TGVudW0gdHlwZSkgOiBRdWVyeUltcGwodHlwZSkKK3sKKyAgICBtUmVuZGVyZXIgPSByZW5kZXJl
cjsKKyAgICBtUXVlcnkgPSBOVUxMOworfQorCitRdWVyeTExOjp+UXVlcnkxMSgpCit7CisgICAg
aWYgKG1RdWVyeSkKKyAgICB7CisgICAgICAgIG1RdWVyeS0+UmVsZWFzZSgpOworICAgICAgICBt
UXVlcnkgPSBOVUxMOworICAgIH0KK30KKwordm9pZCBRdWVyeTExOjpiZWdpbigpCit7CisgICAg
aWYgKG1RdWVyeSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgRDNEMTFfUVVFUllfREVTQyBxdWVy
eURlc2M7CisgICAgICAgIHF1ZXJ5RGVzYy5RdWVyeSA9IEQzRDExX1FVRVJZX09DQ0xVU0lPTjsK
KyAgICAgICAgcXVlcnlEZXNjLk1pc2NGbGFncyA9IDA7CisKKyAgICAgICAgaWYgKEZBSUxFRCht
UmVuZGVyZXItPmdldERldmljZSgpLT5DcmVhdGVRdWVyeSgmcXVlcnlEZXNjLCAmbVF1ZXJ5KSkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQo
KS0+QmVnaW4obVF1ZXJ5KTsKK30KKwordm9pZCBRdWVyeTExOjplbmQoKQoreworICAgIGlmICht
UXVlcnkgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgIH0KKworICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgp
LT5FbmQobVF1ZXJ5KTsKKworICAgIG1TdGF0dXMgPSBHTF9GQUxTRTsKKyAgICBtUmVzdWx0ID0g
R0xfRkFMU0U7Cit9CisKK0dMdWludCBRdWVyeTExOjpnZXRSZXN1bHQoKQoreworICAgIGlmICht
UXVlcnkgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIHdoaWxlICghdGVzdFF1ZXJ5KCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIFNsZWVwKDApOworICAgICAgICAgICAgLy8gZXhwbGljaXRseSBj
aGVjayBmb3IgZGV2aWNlIGxvc3MsIHNvbWUgZHJpdmVycyBzZWVtIHRvIHJldHVybiBTX0ZBTFNF
CisgICAgICAgICAgICAvLyBpZiB0aGUgZGV2aWNlIGlzIGxvc3QKKyAgICAgICAgICAgIGlmICht
UmVuZGVyZXItPnRlc3REZXZpY2VMb3N0KHRydWUpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgMCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbVJlc3VsdDsKK30KKworR0xib29s
ZWFuIFF1ZXJ5MTE6OmlzUmVzdWx0QXZhaWxhYmxlKCkKK3sKKyAgICBpZiAobVF1ZXJ5ICE9IE5V
TEwpCisgICAgeworICAgICAgICB0ZXN0UXVlcnkoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbVN0
YXR1czsKK30KKworR0xib29sZWFuIFF1ZXJ5MTE6OnRlc3RRdWVyeSgpCit7CisgICAgaWYgKG1R
dWVyeSAhPSBOVUxMICYmIG1TdGF0dXMgIT0gR0xfVFJVRSkKKyAgICB7CisgICAgICAgIFVJTlQ2
NCBudW1QaXhlbHMgPSAwOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1SZW5kZXJlci0+Z2V0
RGV2aWNlQ29udGV4dCgpLT5HZXREYXRhKG1RdWVyeSwgJm51bVBpeGVscywgc2l6ZW9mKFVJTlQ2
NCksIDApOworICAgICAgICBpZiAocmVzdWx0ID09IFNfT0spCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1TdGF0dXMgPSBHTF9UUlVFOworCisgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURf
RVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJ
VkVfRVhUOgorICAgICAgICAgICAgICAgIG1SZXN1bHQgPSAobnVtUGl4ZWxzID4gMCkgPyBHTF9U
UlVFIDogR0xfRkFMU0U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBlbHNlIGlmIChtUmVuZGVyZXItPnRlc3REZXZpY2VMb3N0KHRydWUp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlksIEdMX1RSVUUpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1TdGF0dXM7CisgICAg
fQorCisgICAgcmV0dXJuIEdMX1RSVUU7IC8vIHByZXZlbnQgYmxvY2tpbmcgd2hlbiBxdWVyeSBp
cyBudWxsCit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvUXVlcnkxMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnkxMS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBRdWVyeTExLmg6
IERlZmluZXMgdGhlIHJ4OjpRdWVyeTExIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgcng6OlF1ZXJ5
SW1wbC4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfUVVFUlkxMV9IXworI2RlZmluZSBM
SUJHTEVTVjJfUkVOREVSRVJfUVVFUlkxMV9IXworCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRl
cmVyL1F1ZXJ5SW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyMTE7CisK
K2NsYXNzIFF1ZXJ5MTEgOiBwdWJsaWMgUXVlcnlJbXBsCit7CisgIHB1YmxpYzoKKyAgICBRdWVy
eTExKHJ4OjpSZW5kZXJlcjExICpyZW5kZXJlciwgR0xlbnVtIHR5cGUpOworICAgIHZpcnR1YWwg
flF1ZXJ5MTEoKTsKKworICAgIHZvaWQgYmVnaW4oKTsKKyAgICB2b2lkIGVuZCgpOworICAgIEdM
dWludCBnZXRSZXN1bHQoKTsKKyAgICBHTGJvb2xlYW4gaXNSZXN1bHRBdmFpbGFibGUoKTsKKwor
ICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihRdWVyeTExKTsKKworICAg
IEdMYm9vbGVhbiB0ZXN0UXVlcnkoKTsKKworICAgIHJ4OjpSZW5kZXJlcjExICptUmVuZGVyZXI7
CisgICAgSUQzRDExUXVlcnkgKm1RdWVyeTsKK307CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNW
Ml9SRU5ERVJFUl9RVUVSWTExX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnlJbXBsLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1F1
ZXJ5SW1wbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gUXVlcnlJbXBsLmg6IERlZmluZXMgdGhlIGFic3RyYWN0IHJ4OjpRdWVyeUltcGwgY2xhc3Mu
CisKKyNpZm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX1FVRVJZSU1QTF9IXworI2RlZmluZSBMSUJH
TEVTVjJfUkVOREVSRVJfUVVFUllJTVBMX0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGls
cy5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgUXVlcnlJbXBsCit7CisgIHB1YmxpYzoK
KyAgICBleHBsaWNpdCBRdWVyeUltcGwoR0xlbnVtIHR5cGUpIDogbVR5cGUodHlwZSksIG1TdGF0
dXMoR0xfRkFMU0UpLCBtUmVzdWx0KDApIHsgfQorICAgIHZpcnR1YWwgflF1ZXJ5SW1wbCgpIHsg
fQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmQo
KSA9IDA7CisgICAgdmlydHVhbCBHTHVpbnQgZ2V0UmVzdWx0KCkgPSAwOworICAgIHZpcnR1YWwg
R0xib29sZWFuIGlzUmVzdWx0QXZhaWxhYmxlKCkgPSAwOworCisgICAgR0xlbnVtIGdldFR5cGUo
KSBjb25zdCB7IHJldHVybiBtVHlwZTsgfQorCisgIHByb3RlY3RlZDoKKyAgICBHTHVpbnQgbVJl
c3VsdDsKKyAgICBHTGJvb2xlYW4gbVN0YXR1czsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTihRdWVyeUltcGwpOworCisgICAgR0xlbnVtIG1UeXBlOworfTsKKwor
fQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1FVRVJZSU1QTF9IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJTdGF0ZUNh
Y2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL1JlbmRlclN0YXRlQ2FjaGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJTdGF0ZUNhY2hl
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MDYgQEAKKyNpbmNsdWRlICJwcmVjb21waWxl
ZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVyU3RhdGVDYWNoZS5jcHA6IERlZmlu
ZXMgcng6OlJlbmRlclN0YXRlQ2FjaGUsIGEgY2FjaGUgb2YgRGlyZWN0M0QgcmVuZGVyCisvLyBz
dGF0ZSBvYmplY3RzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclN0YXRl
Q2FjaGUuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXIxMV91dGlscy5o
IgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvbXVy
bXVyaGFzaC9NdXJtdXJIYXNoMy5oIgorCituYW1lc3BhY2UgcngKK3sKKworLy8gTVNETidzIGRv
Y3VtZW50YXRpb24gb2YgSUQzRDExRGV2aWNlOjpDcmVhdGVCbGVuZFN0YXRlLCBJRDNEMTFEZXZp
Y2U6OkNyZWF0ZVJhc3Rlcml6ZXJTdGF0ZSwKKy8vIElEM0QxMURldmljZTo6Q3JlYXRlRGVwdGhT
dGVuY2lsU3RhdGUgYW5kIElEM0QxMURldmljZTo6Q3JlYXRlU2FtcGxlclN0YXRlIGNsYWltcyB0
aGUgbWF4aW11bQorLy8gbnVtYmVyIG9mIHVuaXF1ZSBzdGF0ZXMgb2YgZWFjaCB0eXBlIGFuIGFw
cGxpY2F0aW9uIGNhbiBjcmVhdGUgaXMgNDA5NgorY29uc3QgdW5zaWduZWQgaW50IFJlbmRlclN0
YXRlQ2FjaGU6OmtNYXhCbGVuZFN0YXRlcyA9IDQwOTY7Citjb25zdCB1bnNpZ25lZCBpbnQgUmVu
ZGVyU3RhdGVDYWNoZTo6a01heFJhc3Rlcml6ZXJTdGF0ZXMgPSA0MDk2OworY29uc3QgdW5zaWdu
ZWQgaW50IFJlbmRlclN0YXRlQ2FjaGU6OmtNYXhEZXB0aFN0ZW5jaWxTdGF0ZXMgPSA0MDk2Owor
Y29uc3QgdW5zaWduZWQgaW50IFJlbmRlclN0YXRlQ2FjaGU6OmtNYXhTYW1wbGVyU3RhdGVzID0g
NDA5NjsKKworUmVuZGVyU3RhdGVDYWNoZTo6UmVuZGVyU3RhdGVDYWNoZSgpIDogbURldmljZShO
VUxMKSwgbUNvdW50ZXIoMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtQmxlbmRTdGF0ZUNhY2hlKGtNYXhCbGVuZFN0YXRlcywgaGFzaEJsZW5kU3RhdGUsIGNvbXBh
cmVCbGVuZFN0YXRlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
UmFzdGVyaXplclN0YXRlQ2FjaGUoa01heFJhc3Rlcml6ZXJTdGF0ZXMsIGhhc2hSYXN0ZXJpemVy
U3RhdGUsIGNvbXBhcmVSYXN0ZXJpemVyU3RhdGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZUNhY2hlKGtNYXhEZXB0aFN0ZW5jaWxT
dGF0ZXMsIGhhc2hEZXB0aFN0ZW5jaWxTdGF0ZSwgY29tcGFyZURlcHRoU3RlbmNpbFN0YXRlcyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2FtcGxlclN0YXRlQ2Fj
aGUoa01heFNhbXBsZXJTdGF0ZXMsIGhhc2hTYW1wbGVyU3RhdGUsIGNvbXBhcmVTYW1wbGVyU3Rh
dGVzKQoreworfQorCitSZW5kZXJTdGF0ZUNhY2hlOjp+UmVuZGVyU3RhdGVDYWNoZSgpCit7Cisg
ICAgY2xlYXIoKTsKK30KKwordm9pZCBSZW5kZXJTdGF0ZUNhY2hlOjppbml0aWFsaXplKElEM0Qx
MURldmljZSAqZGV2aWNlKQoreworICAgIGNsZWFyKCk7CisgICAgbURldmljZSA9IGRldmljZTsK
K30KKwordm9pZCBSZW5kZXJTdGF0ZUNhY2hlOjpjbGVhcigpCit7CisgICAgZm9yIChCbGVuZFN0
YXRlTWFwOjppdGVyYXRvciBpID0gbUJsZW5kU3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1CbGVu
ZFN0YXRlQ2FjaGUuZW5kKCk7IGkrKykKKyAgICB7CisgICAgICAgIGktPnNlY29uZC5maXJzdC0+
UmVsZWFzZSgpOworICAgIH0KKyAgICBtQmxlbmRTdGF0ZUNhY2hlLmNsZWFyKCk7CisKKyAgICBm
b3IgKFJhc3Rlcml6ZXJTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9IG1SYXN0ZXJpemVyU3RhdGVDYWNo
ZS5iZWdpbigpOyBpICE9IG1SYXN0ZXJpemVyU3RhdGVDYWNoZS5lbmQoKTsgaSsrKQorICAgIHsK
KyAgICAgICAgaS0+c2Vjb25kLmZpcnN0LT5SZWxlYXNlKCk7CisgICAgfQorICAgIG1SYXN0ZXJp
emVyU3RhdGVDYWNoZS5jbGVhcigpOworCisgICAgZm9yIChEZXB0aFN0ZW5jaWxTdGF0ZU1hcDo6
aXRlcmF0b3IgaSA9IG1EZXB0aFN0ZW5jaWxTdGF0ZUNhY2hlLmJlZ2luKCk7IGkgIT0gbURlcHRo
U3RlbmNpbFN0YXRlQ2FjaGUuZW5kKCk7IGkrKykKKyAgICB7CisgICAgICAgIGktPnNlY29uZC5m
aXJzdC0+UmVsZWFzZSgpOworICAgIH0KKyAgICBtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5jbGVh
cigpOworCisgICAgZm9yIChTYW1wbGVyU3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBtU2FtcGxlclN0
YXRlQ2FjaGUuYmVnaW4oKTsgaSAhPSBtU2FtcGxlclN0YXRlQ2FjaGUuZW5kKCk7IGkrKykKKyAg
ICB7CisgICAgICAgIGktPnNlY29uZC5maXJzdC0+UmVsZWFzZSgpOworICAgIH0KKyAgICBtU2Ft
cGxlclN0YXRlQ2FjaGUuY2xlYXIoKTsKK30KKworc3RkOjpzaXplX3QgUmVuZGVyU3RhdGVDYWNo
ZTo6aGFzaEJsZW5kU3RhdGUoY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUpCit7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBzZWVkID0gMHhBQkNERUY5ODsKKworICAgIHN0
ZDo6c2l6ZV90IGhhc2ggPSAwOworICAgIE11cm11ckhhc2gzX3g4Nl8zMigmYmxlbmRTdGF0ZSwg
c2l6ZW9mKGdsOjpCbGVuZFN0YXRlKSwgc2VlZCwgJmhhc2gpOworICAgIHJldHVybiBoYXNoOwor
fQorCitib29sIFJlbmRlclN0YXRlQ2FjaGU6OmNvbXBhcmVCbGVuZFN0YXRlcyhjb25zdCBnbDo6
QmxlbmRTdGF0ZSAmYSwgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmIpCit7CisgICAgcmV0dXJuIG1l
bWNtcCgmYSwgJmIsIHNpemVvZihnbDo6QmxlbmRTdGF0ZSkpID09IDA7Cit9CisKK0lEM0QxMUJs
ZW5kU3RhdGUgKlJlbmRlclN0YXRlQ2FjaGU6OmdldEJsZW5kU3RhdGUoY29uc3QgZ2w6OkJsZW5k
U3RhdGUgJmJsZW5kU3RhdGUpCit7CisgICAgaWYgKCFtRGV2aWNlKQorICAgIHsKKyAgICAgICAg
RVJSKCJSZW5kZXJTdGF0ZUNhY2hlIGlzIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0
dXJuIE5VTEw7CisgICAgfQorCisgICAgQmxlbmRTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9IG1CbGVu
ZFN0YXRlQ2FjaGUuZmluZChibGVuZFN0YXRlKTsKKyAgICBpZiAoaSAhPSBtQmxlbmRTdGF0ZUNh
Y2hlLmVuZCgpKQorICAgIHsKKyAgICAgICAgQmxlbmRTdGF0ZUNvdW50ZXJQYWlyICZzdGF0ZSA9
IGktPnNlY29uZDsKKyAgICAgICAgc3RhdGUuc2Vjb25kID0gbUNvdW50ZXIrKzsKKyAgICAgICAg
cmV0dXJuIHN0YXRlLmZpcnN0OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAo
bUJsZW5kU3RhdGVDYWNoZS5zaXplKCkgPj0ga01heEJsZW5kU3RhdGVzKQorICAgICAgICB7Cisg
ICAgICAgICAgICBUUkFDRSgiT3ZlcmZsb3dlZCB0aGUgbGltaXQgb2YgJXUgYmxlbmQgc3RhdGVz
LCByZW1vdmluZyB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCAiCisgICAgICAgICAgICAgICAgICAi
dG8gbWFrZSByb29tLiIsIGtNYXhCbGVuZFN0YXRlcyk7CisKKyAgICAgICAgICAgIEJsZW5kU3Rh
dGVNYXA6Oml0ZXJhdG9yIGxlYXN0UmVjZW50bHlVc2VkID0gbUJsZW5kU3RhdGVDYWNoZS5iZWdp
bigpOworICAgICAgICAgICAgZm9yIChCbGVuZFN0YXRlTWFwOjppdGVyYXRvciBpID0gbUJsZW5k
U3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1CbGVuZFN0YXRlQ2FjaGUuZW5kKCk7IGkrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoaS0+c2Vjb25kLnNlY29uZCA8IGxlYXN0
UmVjZW50bHlVc2VkLT5zZWNvbmQuc2Vjb25kKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgbGVhc3RSZWNlbnRseVVzZWQgPSBpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlYXN0UmVjZW50bHlVc2VkLT5zZWNvbmQuZmlyc3Qt
PlJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1CbGVuZFN0YXRlQ2FjaGUuZXJhc2UobGVhc3RSZWNl
bnRseVVzZWQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGJsZW5kIHN0
YXRlIGFuZCBpbnNlcnQgaXQgaW50byB0aGUgY2FjaGUKKyAgICAgICAgRDNEMTFfQkxFTkRfREVT
QyBibGVuZERlc2MgPSB7IDAgfTsKKyAgICAgICAgYmxlbmREZXNjLkFscGhhVG9Db3ZlcmFnZUVu
YWJsZSA9IGJsZW5kU3RhdGUuc2FtcGxlQWxwaGFUb0NvdmVyYWdlOworICAgICAgICBibGVuZERl
c2MuSW5kZXBlbmRlbnRCbGVuZEVuYWJsZSA9IEZBTFNFOworCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgRDNEMTFfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQ7
IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9CTEVORF9E
RVNDICZydEJsZW5kID0gYmxlbmREZXNjLlJlbmRlclRhcmdldFtpXTsKKworICAgICAgICAgICAg
cnRCbGVuZC5CbGVuZEVuYWJsZSA9IGJsZW5kU3RhdGUuYmxlbmQ7CisgICAgICAgICAgICBpZiAo
YmxlbmRTdGF0ZS5ibGVuZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBydEJsZW5k
LlNyY0JsZW5kID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5zb3VyY2VC
bGVuZFJHQiwgZmFsc2UpOworICAgICAgICAgICAgICAgIHJ0QmxlbmQuRGVzdEJsZW5kID0gZ2xf
ZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IsIGZhbHNlKTsK
KyAgICAgICAgICAgICAgICBydEJsZW5kLkJsZW5kT3AgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5k
T3AoYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uUkdCKTsKKworICAgICAgICAgICAgICAgIHJ0Qmxl
bmQuU3JjQmxlbmRBbHBoYSA9IGdsX2QzZDExOjpDb252ZXJ0QmxlbmRGdW5jKGJsZW5kU3RhdGUu
c291cmNlQmxlbmRBbHBoYSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgcnRCbGVuZC5EZXN0Qmxl
bmRBbHBoYSA9IGdsX2QzZDExOjpDb252ZXJ0QmxlbmRGdW5jKGJsZW5kU3RhdGUuZGVzdEJsZW5k
QWxwaGEsIHRydWUpOworICAgICAgICAgICAgICAgIHJ0QmxlbmQuQmxlbmRPcEFscGhhID0gZ2xf
ZDNkMTE6OkNvbnZlcnRCbGVuZE9wKGJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvbkFscGhhKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcnRCbGVuZC5SZW5kZXJUYXJnZXRXcml0ZU1hc2sg
PSBnbF9kM2QxMTo6Q29udmVydENvbG9yTWFzayhibGVuZFN0YXRlLmNvbG9yTWFza1JlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmxlbmRTdGF0ZS5jb2xvck1hc2tHcmVlbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxl
bmRTdGF0ZS5jb2xvck1hc2tCbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFz
a0FscGhhKTsKKyAgICAgICAgfQorCisgICAgICAgIElEM0QxMUJsZW5kU3RhdGUgKmR4MTFCbGVu
ZFN0YXRlID0gTlVMTDsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVC
bGVuZFN0YXRlKCZibGVuZERlc2MsICZkeDExQmxlbmRTdGF0ZSk7CisgICAgICAgIGlmIChGQUlM
RUQocmVzdWx0KSB8fCAhZHgxMUJsZW5kU3RhdGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVS
UigiVW5hYmxlIHRvIGNyZWF0ZSBhIElEM0QxMUJsZW5kU3RhdGUsIEhSRVNVTFQ6IDB4JVguIiwg
cmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAg
bUJsZW5kU3RhdGVDYWNoZS5pbnNlcnQoc3RkOjptYWtlX3BhaXIoYmxlbmRTdGF0ZSwgc3RkOjpt
YWtlX3BhaXIoZHgxMUJsZW5kU3RhdGUsIG1Db3VudGVyKyspKSk7CisKKyAgICAgICAgcmV0dXJu
IGR4MTFCbGVuZFN0YXRlOworICAgIH0KK30KKworc3RkOjpzaXplX3QgUmVuZGVyU3RhdGVDYWNo
ZTo6aGFzaFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBSYXN0ZXJpemVyU3RhdGVLZXkgJnJhc3RlclN0
YXRlKQoreworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgc2VlZCA9IDB4QUJDREVGOTg7
CisKKyAgICBzdGQ6OnNpemVfdCBoYXNoID0gMDsKKyAgICBNdXJtdXJIYXNoM194ODZfMzIoJnJh
c3RlclN0YXRlLCBzaXplb2YoUmFzdGVyaXplclN0YXRlS2V5KSwgc2VlZCwgJmhhc2gpOworICAg
IHJldHVybiBoYXNoOworfQorCitib29sIFJlbmRlclN0YXRlQ2FjaGU6OmNvbXBhcmVSYXN0ZXJp
emVyU3RhdGVzKGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAmYSwgY29uc3QgUmFzdGVyaXplclN0
YXRlS2V5ICZiKQoreworICAgIHJldHVybiBtZW1jbXAoJmEsICZiLCBzaXplb2YoUmFzdGVyaXpl
clN0YXRlS2V5KSkgPT0gMDsKK30KKworSUQzRDExUmFzdGVyaXplclN0YXRlICpSZW5kZXJTdGF0
ZUNhY2hlOjpnZXRSYXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSAmcmFz
dGVyU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHNjaXNzb3JFbmFibGVkLCB1bnNpZ25lZCBpbnQgZGVwdGhTaXpl
KQoreworICAgIGlmICghbURldmljZSkKKyAgICB7CisgICAgICAgIEVSUigiUmVuZGVyU3RhdGVD
YWNoZSBpcyBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0K
KworICAgIFJhc3Rlcml6ZXJTdGF0ZUtleSBrZXk7CisgICAga2V5LnJhc3Rlcml6ZXJTdGF0ZSA9
IHJhc3RlclN0YXRlOworICAgIGtleS5zY2lzc29yRW5hYmxlZCA9IHNjaXNzb3JFbmFibGVkOwor
ICAgIGtleS5kZXB0aFNpemUgPSBkZXB0aFNpemU7CisKKyAgICBSYXN0ZXJpemVyU3RhdGVNYXA6
Oml0ZXJhdG9yIGkgPSBtUmFzdGVyaXplclN0YXRlQ2FjaGUuZmluZChrZXkpOworICAgIGlmIChp
ICE9IG1SYXN0ZXJpemVyU3RhdGVDYWNoZS5lbmQoKSkKKyAgICB7CisgICAgICAgIFJhc3Rlcml6
ZXJTdGF0ZUNvdW50ZXJQYWlyICZzdGF0ZSA9IGktPnNlY29uZDsKKyAgICAgICAgc3RhdGUuc2Vj
b25kID0gbUNvdW50ZXIrKzsKKyAgICAgICAgcmV0dXJuIHN0YXRlLmZpcnN0OworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBpZiAobVJhc3Rlcml6ZXJTdGF0ZUNhY2hlLnNpemUoKSA+
PSBrTWF4UmFzdGVyaXplclN0YXRlcykKKyAgICAgICAgeworICAgICAgICAgICAgVFJBQ0UoIk92
ZXJmbG93ZWQgdGhlIGxpbWl0IG9mICV1IHJhc3Rlcml6ZXIgc3RhdGVzLCByZW1vdmluZyB0aGUg
bGVhc3QgcmVjZW50bHkgdXNlZCAiCisgICAgICAgICAgICAgICAgICAidG8gbWFrZSByb29tLiIs
IGtNYXhSYXN0ZXJpemVyU3RhdGVzKTsKKworICAgICAgICAgICAgUmFzdGVyaXplclN0YXRlTWFw
OjppdGVyYXRvciBsZWFzdFJlY2VudGx5VXNlZCA9IG1SYXN0ZXJpemVyU3RhdGVDYWNoZS5iZWdp
bigpOworICAgICAgICAgICAgZm9yIChSYXN0ZXJpemVyU3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBt
UmFzdGVyaXplclN0YXRlQ2FjaGUuYmVnaW4oKTsgaSAhPSBtUmFzdGVyaXplclN0YXRlQ2FjaGUu
ZW5kKCk7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoaS0+c2Vjb25k
LnNlY29uZCA8IGxlYXN0UmVjZW50bHlVc2VkLT5zZWNvbmQuc2Vjb25kKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbGVhc3RSZWNlbnRseVVzZWQgPSBpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlYXN0UmVjZW50bHlVc2Vk
LT5zZWNvbmQuZmlyc3QtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1SYXN0ZXJpemVyU3RhdGVD
YWNoZS5lcmFzZShsZWFzdFJlY2VudGx5VXNlZCk7CisgICAgICAgIH0KKworICAgICAgICBEM0Qx
MV9DVUxMX01PREUgY3VsbE1vZGUgPSBnbF9kM2QxMTo6Q29udmVydEN1bGxNb2RlKHJhc3RlclN0
YXRlLmN1bGxGYWNlLCByYXN0ZXJTdGF0ZS5jdWxsTW9kZSk7CisKKyAgICAgICAgLy8gRGlzYWJs
ZSBjdWxsaW5nIGlmIGRyYXdpbmcgcG9pbnRzCisgICAgICAgIGlmIChyYXN0ZXJTdGF0ZS5wb2lu
dERyYXdNb2RlKQorICAgICAgICB7CisgICAgICAgICAgICBjdWxsTW9kZSA9IEQzRDExX0NVTExf
Tk9ORTsKKyAgICAgICAgfQorCisgICAgICAgIEQzRDExX1JBU1RFUklaRVJfREVTQyByYXN0ZXJE
ZXNjOworICAgICAgICByYXN0ZXJEZXNjLkZpbGxNb2RlID0gRDNEMTFfRklMTF9TT0xJRDsKKyAg
ICAgICAgcmFzdGVyRGVzYy5DdWxsTW9kZSA9IGN1bGxNb2RlOworICAgICAgICByYXN0ZXJEZXNj
LkZyb250Q291bnRlckNsb2Nrd2lzZSA9IChyYXN0ZXJTdGF0ZS5mcm9udEZhY2UgPT0gR0xfQ0NX
KSA/IEZBTFNFOiBUUlVFOworICAgICAgICByYXN0ZXJEZXNjLkRlcHRoQmlhcyA9IGxkZXhwKHJh
c3RlclN0YXRlLnBvbHlnb25PZmZzZXRVbml0cywgLXN0YXRpY19jYXN0PGludD4oZGVwdGhTaXpl
KSk7CisgICAgICAgIHJhc3RlckRlc2MuRGVwdGhCaWFzQ2xhbXAgPSAwLjBmOyAvLyBNU0ROIGRv
Y3VtZW50YXRpb24gb2YgRGVwdGhCaWFzQ2xhbXAgaW1wbGllcyBhIHZhbHVlIG9mIHplcm8gd2ls
bCBwcmVmb3JtIG5vIGNsYW1waW5nLCBtdXN0IGJlIHRlc3RlZCB0aG91Z2guCisgICAgICAgIHJh
c3RlckRlc2MuU2xvcGVTY2FsZWREZXB0aEJpYXMgPSByYXN0ZXJTdGF0ZS5wb2x5Z29uT2Zmc2V0
RmFjdG9yOworICAgICAgICByYXN0ZXJEZXNjLkRlcHRoQ2xpcEVuYWJsZSA9IFRSVUU7CisgICAg
ICAgIHJhc3RlckRlc2MuU2Npc3NvckVuYWJsZSA9IHNjaXNzb3JFbmFibGVkID8gVFJVRSA6IEZB
TFNFOworICAgICAgICByYXN0ZXJEZXNjLk11bHRpc2FtcGxlRW5hYmxlID0gcmFzdGVyU3RhdGUu
bXVsdGlTYW1wbGU7CisgICAgICAgIHJhc3RlckRlc2MuQW50aWFsaWFzZWRMaW5lRW5hYmxlID0g
RkFMU0U7CisKKyAgICAgICAgSUQzRDExUmFzdGVyaXplclN0YXRlICpkeDExUmFzdGVyaXplclN0
YXRlID0gTlVMTDsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVSYXN0
ZXJpemVyU3RhdGUoJnJhc3RlckRlc2MsICZkeDExUmFzdGVyaXplclN0YXRlKTsKKyAgICAgICAg
aWYgKEZBSUxFRChyZXN1bHQpIHx8ICFkeDExUmFzdGVyaXplclN0YXRlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBFUlIoIlVuYWJsZSB0byBjcmVhdGUgYSBJRDNEMTFSYXN0ZXJpemVyU3RhdGUs
IEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAg
ICAgICB9CisKKyAgICAgICAgbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlLmluc2VydChzdGQ6Om1ha2Vf
cGFpcihrZXksIHN0ZDo6bWFrZV9wYWlyKGR4MTFSYXN0ZXJpemVyU3RhdGUsIG1Db3VudGVyKysp
KSk7CisKKyAgICAgICAgcmV0dXJuIGR4MTFSYXN0ZXJpemVyU3RhdGU7CisgICAgfQorfQorCitz
dGQ6OnNpemVfdCBSZW5kZXJTdGF0ZUNhY2hlOjpoYXNoRGVwdGhTdGVuY2lsU3RhdGUoY29uc3Qg
Z2w6OkRlcHRoU3RlbmNpbFN0YXRlICZkc1N0YXRlKQoreworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBpbnQgc2VlZCA9IDB4QUJDREVGOTg7CisKKyAgICBzdGQ6OnNpemVfdCBoYXNoID0gMDsK
KyAgICBNdXJtdXJIYXNoM194ODZfMzIoJmRzU3RhdGUsIHNpemVvZihnbDo6RGVwdGhTdGVuY2ls
U3RhdGUpLCBzZWVkLCAmaGFzaCk7CisgICAgcmV0dXJuIGhhc2g7Cit9CisKK2Jvb2wgUmVuZGVy
U3RhdGVDYWNoZTo6Y29tcGFyZURlcHRoU3RlbmNpbFN0YXRlcyhjb25zdCBnbDo6RGVwdGhTdGVu
Y2lsU3RhdGUgJmEsIGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmYikKK3sKKyAgICByZXR1
cm4gbWVtY21wKCZhLCAmYiwgc2l6ZW9mKGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSkpID09IDA7Cit9
CisKK0lEM0QxMURlcHRoU3RlbmNpbFN0YXRlICpSZW5kZXJTdGF0ZUNhY2hlOjpnZXREZXB0aFN0
ZW5jaWxTdGF0ZShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmRzU3RhdGUpCit7CisgICAg
aWYgKCFtRGV2aWNlKQorICAgIHsKKyAgICAgICAgRVJSKCJSZW5kZXJTdGF0ZUNhY2hlIGlzIG5v
dCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgRGVw
dGhTdGVuY2lsU3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5m
aW5kKGRzU3RhdGUpOworICAgIGlmIChpICE9IG1EZXB0aFN0ZW5jaWxTdGF0ZUNhY2hlLmVuZCgp
KQorICAgIHsKKyAgICAgICAgRGVwdGhTdGVuY2lsU3RhdGVDb3VudGVyUGFpciAmc3RhdGUgPSBp
LT5zZWNvbmQ7CisgICAgICAgIHN0YXRlLnNlY29uZCA9IG1Db3VudGVyKys7CisgICAgICAgIHJl
dHVybiBzdGF0ZS5maXJzdDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKG1E
ZXB0aFN0ZW5jaWxTdGF0ZUNhY2hlLnNpemUoKSA+PSBrTWF4RGVwdGhTdGVuY2lsU3RhdGVzKQor
ICAgICAgICB7CisgICAgICAgICAgICBUUkFDRSgiT3ZlcmZsb3dlZCB0aGUgbGltaXQgb2YgJXUg
ZGVwdGggc3RlbmNpbCBzdGF0ZXMsIHJlbW92aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkICIK
KyAgICAgICAgICAgICAgICAgICJ0byBtYWtlIHJvb20uIiwga01heERlcHRoU3RlbmNpbFN0YXRl
cyk7CisKKyAgICAgICAgICAgIERlcHRoU3RlbmNpbFN0YXRlTWFwOjppdGVyYXRvciBsZWFzdFJl
Y2VudGx5VXNlZCA9IG1EZXB0aFN0ZW5jaWxTdGF0ZUNhY2hlLmJlZ2luKCk7CisgICAgICAgICAg
ICBmb3IgKERlcHRoU3RlbmNpbFN0YXRlTWFwOjppdGVyYXRvciBpID0gbURlcHRoU3RlbmNpbFN0
YXRlQ2FjaGUuYmVnaW4oKTsgaSAhPSBtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5lbmQoKTsgaSsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpLT5zZWNvbmQuc2Vjb25kIDwg
bGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5zZWNvbmQpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNlZCA9IGk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5m
aXJzdC0+UmVsZWFzZSgpOworICAgICAgICAgICAgbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUuZXJh
c2UobGVhc3RSZWNlbnRseVVzZWQpOworICAgICAgICB9CisKKyAgICAgICAgRDNEMTFfREVQVEhf
U1RFTkNJTF9ERVNDIGRzRGVzYyA9IHsgMCB9OworICAgICAgICBkc0Rlc2MuRGVwdGhFbmFibGUg
PSBkc1N0YXRlLmRlcHRoVGVzdCA/IFRSVUUgOiBGQUxTRTsKKyAgICAgICAgZHNEZXNjLkRlcHRo
V3JpdGVNYXNrID0gZ2xfZDNkMTE6OkNvbnZlcnREZXB0aE1hc2soZHNTdGF0ZS5kZXB0aE1hc2sp
OworICAgICAgICBkc0Rlc2MuRGVwdGhGdW5jID0gZ2xfZDNkMTE6OkNvbnZlcnRDb21wYXJpc29u
KGRzU3RhdGUuZGVwdGhGdW5jKTsKKyAgICAgICAgZHNEZXNjLlN0ZW5jaWxFbmFibGUgPSBkc1N0
YXRlLnN0ZW5jaWxUZXN0ID8gVFJVRSA6IEZBTFNFOworICAgICAgICBkc0Rlc2MuU3RlbmNpbFJl
YWRNYXNrID0gZ2xfZDNkMTE6OkNvbnZlcnRTdGVuY2lsTWFzayhkc1N0YXRlLnN0ZW5jaWxNYXNr
KTsKKyAgICAgICAgZHNEZXNjLlN0ZW5jaWxXcml0ZU1hc2sgPSBnbF9kM2QxMTo6Q29udmVydFN0
ZW5jaWxNYXNrKGRzU3RhdGUuc3RlbmNpbFdyaXRlbWFzayk7CisgICAgICAgIGRzRGVzYy5Gcm9u
dEZhY2UuU3RlbmNpbEZhaWxPcCA9IGdsX2QzZDExOjpDb252ZXJ0U3RlbmNpbE9wKGRzU3RhdGUu
c3RlbmNpbEZhaWwpOworICAgICAgICBkc0Rlc2MuRnJvbnRGYWNlLlN0ZW5jaWxEZXB0aEZhaWxP
cCA9IGdsX2QzZDExOjpDb252ZXJ0U3RlbmNpbE9wKGRzU3RhdGUuc3RlbmNpbFBhc3NEZXB0aEZh
aWwpOworICAgICAgICBkc0Rlc2MuRnJvbnRGYWNlLlN0ZW5jaWxQYXNzT3AgPSBnbF9kM2QxMTo6
Q29udmVydFN0ZW5jaWxPcChkc1N0YXRlLnN0ZW5jaWxQYXNzRGVwdGhQYXNzKTsKKyAgICAgICAg
ZHNEZXNjLkZyb250RmFjZS5TdGVuY2lsRnVuYyA9IGdsX2QzZDExOjpDb252ZXJ0Q29tcGFyaXNv
bihkc1N0YXRlLnN0ZW5jaWxGdW5jKTsKKyAgICAgICAgZHNEZXNjLkJhY2tGYWNlLlN0ZW5jaWxG
YWlsT3AgPSBnbF9kM2QxMTo6Q29udmVydFN0ZW5jaWxPcChkc1N0YXRlLnN0ZW5jaWxCYWNrRmFp
bCk7CisgICAgICAgIGRzRGVzYy5CYWNrRmFjZS5TdGVuY2lsRGVwdGhGYWlsT3AgPSBnbF9kM2Qx
MTo6Q29udmVydFN0ZW5jaWxPcChkc1N0YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRoRmFpbCk7Cisg
ICAgICAgIGRzRGVzYy5CYWNrRmFjZS5TdGVuY2lsUGFzc09wID0gZ2xfZDNkMTE6OkNvbnZlcnRT
dGVuY2lsT3AoZHNTdGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MpOworICAgICAgICBkc0Rl
c2MuQmFja0ZhY2UuU3RlbmNpbEZ1bmMgPSBnbF9kM2QxMTo6Q29udmVydENvbXBhcmlzb24oZHNT
dGF0ZS5zdGVuY2lsQmFja0Z1bmMpOworCisgICAgICAgIElEM0QxMURlcHRoU3RlbmNpbFN0YXRl
ICpkeDExRGVwdGhTdGVuY2lsU3RhdGUgPSBOVUxMOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9
IG1EZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFN0YXRlKCZkc0Rlc2MsICZkeDExRGVwdGhTdGVu
Y2lsU3RhdGUpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkgfHwgIWR4MTFEZXB0aFN0ZW5j
aWxTdGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJVbmFibGUgdG8gY3JlYXRlIGEg
SUQzRDExRGVwdGhTdGVuY2lsU3RhdGUsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAg
ICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgbURlcHRoU3RlbmNpbFN0
YXRlQ2FjaGUuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGRzU3RhdGUsIHN0ZDo6bWFrZV9wYWlyKGR4
MTFEZXB0aFN0ZW5jaWxTdGF0ZSwgbUNvdW50ZXIrKykpKTsKKworICAgICAgICByZXR1cm4gZHgx
MURlcHRoU3RlbmNpbFN0YXRlOworICAgIH0KK30KKworc3RkOjpzaXplX3QgUmVuZGVyU3RhdGVD
YWNoZTo6aGFzaFNhbXBsZXJTdGF0ZShjb25zdCBnbDo6U2FtcGxlclN0YXRlICZzYW1wbGVyU3Rh
dGUpCit7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBzZWVkID0gMHhBQkNERUY5ODsK
KworICAgIHN0ZDo6c2l6ZV90IGhhc2ggPSAwOworICAgIE11cm11ckhhc2gzX3g4Nl8zMigmc2Ft
cGxlclN0YXRlLCBzaXplb2YoZ2w6OlNhbXBsZXJTdGF0ZSksIHNlZWQsICZoYXNoKTsKKyAgICBy
ZXR1cm4gaGFzaDsKK30KKworYm9vbCBSZW5kZXJTdGF0ZUNhY2hlOjpjb21wYXJlU2FtcGxlclN0
YXRlcyhjb25zdCBnbDo6U2FtcGxlclN0YXRlICZhLCBjb25zdCBnbDo6U2FtcGxlclN0YXRlICZi
KQoreworICAgIHJldHVybiBtZW1jbXAoJmEsICZiLCBzaXplb2YoZ2w6OlNhbXBsZXJTdGF0ZSkp
ID09IDA7Cit9CisKK0lEM0QxMVNhbXBsZXJTdGF0ZSAqUmVuZGVyU3RhdGVDYWNoZTo6Z2V0U2Ft
cGxlclN0YXRlKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSkKK3sKKyAgICBp
ZiAoIW1EZXZpY2UpCisgICAgeworICAgICAgICBFUlIoIlJlbmRlclN0YXRlQ2FjaGUgaXMgbm90
IGluaXRpYWxpemVkLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBTYW1w
bGVyU3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBtU2FtcGxlclN0YXRlQ2FjaGUuZmluZChzYW1wbGVy
U3RhdGUpOworICAgIGlmIChpICE9IG1TYW1wbGVyU3RhdGVDYWNoZS5lbmQoKSkKKyAgICB7Cisg
ICAgICAgIFNhbXBsZXJTdGF0ZUNvdW50ZXJQYWlyICZzdGF0ZSA9IGktPnNlY29uZDsKKyAgICAg
ICAgc3RhdGUuc2Vjb25kID0gbUNvdW50ZXIrKzsKKyAgICAgICAgcmV0dXJuIHN0YXRlLmZpcnN0
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAobVNhbXBsZXJTdGF0ZUNhY2hl
LnNpemUoKSA+PSBrTWF4U2FtcGxlclN0YXRlcykKKyAgICAgICAgeworICAgICAgICAgICAgVFJB
Q0UoIk92ZXJmbG93ZWQgdGhlIGxpbWl0IG9mICV1IHNhbXBsZXIgc3RhdGVzLCByZW1vdmluZyB0
aGUgbGVhc3QgcmVjZW50bHkgdXNlZCAiCisgICAgICAgICAgICAgICAgICAidG8gbWFrZSByb29t
LiIsIGtNYXhTYW1wbGVyU3RhdGVzKTsKKworICAgICAgICAgICAgU2FtcGxlclN0YXRlTWFwOjpp
dGVyYXRvciBsZWFzdFJlY2VudGx5VXNlZCA9IG1TYW1wbGVyU3RhdGVDYWNoZS5iZWdpbigpOwor
ICAgICAgICAgICAgZm9yIChTYW1wbGVyU3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBtU2FtcGxlclN0
YXRlQ2FjaGUuYmVnaW4oKTsgaSAhPSBtU2FtcGxlclN0YXRlQ2FjaGUuZW5kKCk7IGkrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoaS0+c2Vjb25kLnNlY29uZCA8IGxlYXN0
UmVjZW50bHlVc2VkLT5zZWNvbmQuc2Vjb25kKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgbGVhc3RSZWNlbnRseVVzZWQgPSBpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlYXN0UmVjZW50bHlVc2VkLT5zZWNvbmQuZmlyc3Qt
PlJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1TYW1wbGVyU3RhdGVDYWNoZS5lcmFzZShsZWFzdFJl
Y2VudGx5VXNlZCk7CisgICAgICAgIH0KKworICAgICAgICBEM0QxMV9TQU1QTEVSX0RFU0Mgc2Ft
cGxlckRlc2M7CisgICAgICAgIHNhbXBsZXJEZXNjLkZpbHRlciA9IGdsX2QzZDExOjpDb252ZXJ0
RmlsdGVyKHNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIsIHNhbXBsZXJTdGF0ZS5tYWdGaWx0ZXIsIHNh
bXBsZXJTdGF0ZS5tYXhBbmlzb3Ryb3B5KTsKKyAgICAgICAgc2FtcGxlckRlc2MuQWRkcmVzc1Ug
PSBnbF9kM2QxMTo6Q29udmVydFRleHR1cmVXcmFwKHNhbXBsZXJTdGF0ZS53cmFwUyk7CisgICAg
ICAgIHNhbXBsZXJEZXNjLkFkZHJlc3NWID0gZ2xfZDNkMTE6OkNvbnZlcnRUZXh0dXJlV3JhcChz
YW1wbGVyU3RhdGUud3JhcFQpOworICAgICAgICBzYW1wbGVyRGVzYy5BZGRyZXNzVyA9IEQzRDEx
X1RFWFRVUkVfQUREUkVTU19DTEFNUDsKKyAgICAgICAgc2FtcGxlckRlc2MuTWlwTE9EQmlhcyA9
IHN0YXRpY19jYXN0PGZsb2F0PihzYW1wbGVyU3RhdGUubG9kT2Zmc2V0KTsKKyAgICAgICAgc2Ft
cGxlckRlc2MuTWF4QW5pc290cm9weSA9IHNhbXBsZXJTdGF0ZS5tYXhBbmlzb3Ryb3B5OworICAg
ICAgICBzYW1wbGVyRGVzYy5Db21wYXJpc29uRnVuYyA9IEQzRDExX0NPTVBBUklTT05fTkVWRVI7
CisgICAgICAgIHNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzBdID0gMC4wZjsKKyAgICAgICAgc2Ft
cGxlckRlc2MuQm9yZGVyQ29sb3JbMV0gPSAwLjBmOworICAgICAgICBzYW1wbGVyRGVzYy5Cb3Jk
ZXJDb2xvclsyXSA9IDAuMGY7CisgICAgICAgIHNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzNdID0g
MC4wZjsKKyAgICAgICAgc2FtcGxlckRlc2MuTWluTE9EID0gZ2xfZDNkMTE6OkNvbnZlcnRNaW5M
T0Qoc2FtcGxlclN0YXRlLm1pbkZpbHRlciwgc2FtcGxlclN0YXRlLmxvZE9mZnNldCk7CisgICAg
ICAgIHNhbXBsZXJEZXNjLk1heExPRCA9IGdsX2QzZDExOjpDb252ZXJ0TWF4TE9EKHNhbXBsZXJT
dGF0ZS5taW5GaWx0ZXIsIHNhbXBsZXJTdGF0ZS5sb2RPZmZzZXQpOworCisgICAgICAgIElEM0Qx
MVNhbXBsZXJTdGF0ZSAqZHgxMVNhbXBsZXJTdGF0ZSA9IE5VTEw7CisgICAgICAgIEhSRVNVTFQg
cmVzdWx0ID0gbURldmljZS0+Q3JlYXRlU2FtcGxlclN0YXRlKCZzYW1wbGVyRGVzYywgJmR4MTFT
YW1wbGVyU3RhdGUpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkgfHwgIWR4MTFTYW1wbGVy
U3RhdGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiVW5hYmxlIHRvIGNyZWF0ZSBhIElE
M0QxMURlcHRoU3RlbmNpbFN0YXRlLCBIUkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIG1TYW1wbGVyU3RhdGVDYWNo
ZS5pbnNlcnQoc3RkOjptYWtlX3BhaXIoc2FtcGxlclN0YXRlLCBzdGQ6Om1ha2VfcGFpcihkeDEx
U2FtcGxlclN0YXRlLCBtQ291bnRlcisrKSkpOworCisgICAgICAgIHJldHVybiBkeDExU2FtcGxl
clN0YXRlOworICAgIH0KK30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyU3Rh
dGVDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvUmVuZGVyU3RhdGVDYWNoZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJTdGF0ZUNhY2hl
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAxIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDEyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisv
LyBSZW5kZXJTdGF0ZUNhY2hlLmg6IERlZmluZXMgcng6OlJlbmRlclN0YXRlQ2FjaGUsIGEgY2Fj
aGUgb2YgRGlyZWN0M0QgcmVuZGVyCisvLyBzdGF0ZSBvYmplY3RzLgorCisjaWZuZGVmIExJQkdM
RVNWMl9SRU5ERVJFUl9SRU5ERVJTVEFURUNBQ0hFX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5E
RVJFUl9SRU5ERVJTVEFURUNBQ0hFX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvYW5nbGV0eXBl
cy5oIgorI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSByeAorewor
CitjbGFzcyBSZW5kZXJTdGF0ZUNhY2hlCit7CisgIHB1YmxpYzoKKyAgICBSZW5kZXJTdGF0ZUNh
Y2hlKCk7CisgICAgdmlydHVhbCB+UmVuZGVyU3RhdGVDYWNoZSgpOworCisgICAgdm9pZCBpbml0
aWFsaXplKElEM0QxMURldmljZSAqZGV2aWNlKTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICAv
LyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHRoZSByZXR1cm5lZCBibGVuZCBzdGF0ZSwgUmVsZWFz
ZSgpIG11c3QgYmUgY2FsbGVkLgorICAgIElEM0QxMUJsZW5kU3RhdGUgKmdldEJsZW5kU3RhdGUo
Y29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUpOworICAgIElEM0QxMVJhc3Rlcml6ZXJT
dGF0ZSAqZ2V0UmFzdGVyaXplclN0YXRlKGNvbnN0IGdsOjpSYXN0ZXJpemVyU3RhdGUgJnJhc3Rl
clN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgc2Npc3NvckVuYWJsZWQsIHVuc2lnbmVkIGludCBkZXB0aFNpemUpOworICAgIElEM0QxMURl
cHRoU3RlbmNpbFN0YXRlICpnZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBnbDo6RGVwdGhTdGVu
Y2lsU3RhdGUgJmRzU3RhdGUpOworICAgIElEM0QxMVNhbXBsZXJTdGF0ZSAqZ2V0U2FtcGxlclN0
YXRlKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSk7CisKKyAgcHJpdmF0ZToK
KyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVuZGVyU3RhdGVDYWNoZSk7CisKKyAgICB1
bnNpZ25lZCBsb25nIGxvbmcgbUNvdW50ZXI7CisKKyAgICAvLyBCbGVuZCBzdGF0ZSBjYWNoZQor
ICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBoYXNoQmxlbmRTdGF0ZShjb25zdCBnbDo6QmxlbmRTdGF0
ZSAmYmxlbmRTdGF0ZSk7CisgICAgc3RhdGljIGJvb2wgY29tcGFyZUJsZW5kU3RhdGVzKGNvbnN0
IGdsOjpCbGVuZFN0YXRlICZhLCBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYik7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGludCBrTWF4QmxlbmRTdGF0ZXM7CisKKyAgICB0eXBlZGVmIHN0ZDo6
c2l6ZV90ICgqQmxlbmRTdGF0ZUhhc2hGdW5jdGlvbikoY29uc3QgZ2w6OkJsZW5kU3RhdGUgJik7
CisgICAgdHlwZWRlZiBib29sICgqQmxlbmRTdGF0ZUVxdWFsaXR5RnVuY3Rpb24pKGNvbnN0IGds
OjpCbGVuZFN0YXRlICYsIGNvbnN0IGdsOjpCbGVuZFN0YXRlICYpOworICAgIHR5cGVkZWYgc3Rk
OjpwYWlyPElEM0QxMUJsZW5kU3RhdGUqLCB1bnNpZ25lZCBsb25nIGxvbmc+IEJsZW5kU3RhdGVD
b3VudGVyUGFpcjsKKyAgICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxnbDo6QmxlbmRTdGF0
ZSwgQmxlbmRTdGF0ZUNvdW50ZXJQYWlyLCBCbGVuZFN0YXRlSGFzaEZ1bmN0aW9uLCBCbGVuZFN0
YXRlRXF1YWxpdHlGdW5jdGlvbj4gQmxlbmRTdGF0ZU1hcDsKKyAgICBCbGVuZFN0YXRlTWFwIG1C
bGVuZFN0YXRlQ2FjaGU7CisKKyAgICAvLyBSYXN0ZXJpemVyIHN0YXRlIGNhY2hlCisgICAgc3Ry
dWN0IFJhc3Rlcml6ZXJTdGF0ZUtleQorICAgIHsKKyAgICAgICAgZ2w6OlJhc3Rlcml6ZXJTdGF0
ZSByYXN0ZXJpemVyU3RhdGU7CisgICAgICAgIGJvb2wgc2Npc3NvckVuYWJsZWQ7CisgICAgICAg
IHVuc2lnbmVkIGludCBkZXB0aFNpemU7CisgICAgfTsKKyAgICBzdGF0aWMgc3RkOjpzaXplX3Qg
aGFzaFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBSYXN0ZXJpemVyU3RhdGVLZXkgJnJhc3RlclN0YXRl
KTsKKyAgICBzdGF0aWMgYm9vbCBjb21wYXJlUmFzdGVyaXplclN0YXRlcyhjb25zdCBSYXN0ZXJp
emVyU3RhdGVLZXkgJmEsIGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAmYik7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGludCBrTWF4UmFzdGVyaXplclN0YXRlczsKKworICAgIHR5cGVkZWYg
c3RkOjpzaXplX3QgKCpSYXN0ZXJpemVyU3RhdGVIYXNoRnVuY3Rpb24pKGNvbnN0IFJhc3Rlcml6
ZXJTdGF0ZUtleSAmKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpSYXN0ZXJpemVyU3RhdGVFcXVhbGl0
eUZ1bmN0aW9uKShjb25zdCBSYXN0ZXJpemVyU3RhdGVLZXkgJiwgY29uc3QgUmFzdGVyaXplclN0
YXRlS2V5ICYpOworICAgIHR5cGVkZWYgc3RkOjpwYWlyPElEM0QxMVJhc3Rlcml6ZXJTdGF0ZSos
IHVuc2lnbmVkIGxvbmcgbG9uZz4gUmFzdGVyaXplclN0YXRlQ291bnRlclBhaXI7CisgICAgdHlw
ZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8UmFzdGVyaXplclN0YXRlS2V5LCBSYXN0ZXJpemVyU3Rh
dGVDb3VudGVyUGFpciwgUmFzdGVyaXplclN0YXRlSGFzaEZ1bmN0aW9uLCBSYXN0ZXJpemVyU3Rh
dGVFcXVhbGl0eUZ1bmN0aW9uPiBSYXN0ZXJpemVyU3RhdGVNYXA7CisgICAgUmFzdGVyaXplclN0
YXRlTWFwIG1SYXN0ZXJpemVyU3RhdGVDYWNoZTsKKworICAgIC8vIERlcHRoIHN0ZW5jaWwgc3Rh
dGUgY2FjaGUKKyAgICBzdGF0aWMgc3RkOjpzaXplX3QgaGFzaERlcHRoU3RlbmNpbFN0YXRlKGNv
bnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZHNTdGF0ZSk7CisgICAgc3RhdGljIGJvb2wgY29t
cGFyZURlcHRoU3RlbmNpbFN0YXRlcyhjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmEsIGNv
bnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmYik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGludCBrTWF4RGVwdGhTdGVuY2lsU3RhdGVzOworCisgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAo
KkRlcHRoU3RlbmNpbFN0YXRlSGFzaEZ1bmN0aW9uKShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3Rh
dGUgJik7CisgICAgdHlwZWRlZiBib29sICgqRGVwdGhTdGVuY2lsU3RhdGVFcXVhbGl0eUZ1bmN0
aW9uKShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJiwgY29uc3QgZ2w6OkRlcHRoU3RlbmNp
bFN0YXRlICYpOworICAgIHR5cGVkZWYgc3RkOjpwYWlyPElEM0QxMURlcHRoU3RlbmNpbFN0YXRl
KiwgdW5zaWduZWQgbG9uZyBsb25nPiBEZXB0aFN0ZW5jaWxTdGF0ZUNvdW50ZXJQYWlyOworICAg
IHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEZXB0aFN0ZW5jaWxTdGF0ZUNvdW50ZXJQYWlyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHRoU3RlbmNpbFN0YXRlSGFzaEZ1bmN0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHRoU3RlbmNpbFN0YXRlRXF1
YWxpdHlGdW5jdGlvbj4gRGVwdGhTdGVuY2lsU3RhdGVNYXA7CisgICAgRGVwdGhTdGVuY2lsU3Rh
dGVNYXAgbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGU7CisKKyAgICAvLyBTYW1wbGUgc3RhdGUgY2Fj
aGUKKyAgICBzdGF0aWMgc3RkOjpzaXplX3QgaGFzaFNhbXBsZXJTdGF0ZShjb25zdCBnbDo6U2Ft
cGxlclN0YXRlICZzYW1wbGVyU3RhdGUpOworICAgIHN0YXRpYyBib29sIGNvbXBhcmVTYW1wbGVy
U3RhdGVzKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJmEsIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUg
JmIpOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQga01heFNhbXBsZXJTdGF0ZXM7CisK
KyAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICgqU2FtcGxlclN0YXRlSGFzaEZ1bmN0aW9uKShjb25z
dCBnbDo6U2FtcGxlclN0YXRlICYpOworICAgIHR5cGVkZWYgYm9vbCAoKlNhbXBsZXJTdGF0ZUVx
dWFsaXR5RnVuY3Rpb24pKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJiwgY29uc3QgZ2w6OlNhbXBs
ZXJTdGF0ZSAmKTsKKyAgICB0eXBlZGVmIHN0ZDo6cGFpcjxJRDNEMTFTYW1wbGVyU3RhdGUqLCB1
bnNpZ25lZCBsb25nIGxvbmc+IFNhbXBsZXJTdGF0ZUNvdW50ZXJQYWlyOworICAgIHR5cGVkZWYg
c3RkOjp1bm9yZGVyZWRfbWFwPGdsOjpTYW1wbGVyU3RhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2FtcGxlclN0YXRlQ291bnRlclBhaXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2FtcGxlclN0YXRlSGFzaEZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNhbXBsZXJTdGF0ZUVxdWFsaXR5RnVuY3Rpb24+IFNhbXBsZXJTdGF0ZU1h
cDsKKyAgICBTYW1wbGVyU3RhdGVNYXAgbVNhbXBsZXJTdGF0ZUNhY2hlOworCisgICAgSUQzRDEx
RGV2aWNlICptRGV2aWNlOworfTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVS
X1JFTkRFUlNUQVRFQ0FDSEVfSF8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdl
dDkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0OS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDkuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMyBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gUmVuZGVyVGFyZ2V0OS5jcHA6IEltcGxlbWVudHMgYSBEM0Q5LXNw
ZWNpZmljIHdyYXBwZXIgZm9yIElEaXJlY3QzRFN1cmZhY2U5CisvLyBwb2ludGVycyByZXRhaW5l
ZCBieSByZW5kZXJidWZmZXJzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRl
clRhcmdldDkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmgiCisK
KyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL21haW4uaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1JlbmRlclRhcmdldDk6
OlJlbmRlclRhcmdldDkoUmVuZGVyZXIgKnJlbmRlcmVyLCBJRGlyZWN0M0RTdXJmYWNlOSAqc3Vy
ZmFjZSkKK3sKKyAgICBtUmVuZGVyZXIgPSBSZW5kZXJlcjk6Om1ha2VSZW5kZXJlcjkocmVuZGVy
ZXIpOworICAgIG1SZW5kZXJUYXJnZXQgPSBzdXJmYWNlOworCisgICAgaWYgKG1SZW5kZXJUYXJn
ZXQpCisgICAgeworICAgICAgICBEM0RTVVJGQUNFX0RFU0MgZGVzY3JpcHRpb247CisgICAgICAg
IG1SZW5kZXJUYXJnZXQtPkdldERlc2MoJmRlc2NyaXB0aW9uKTsKKworICAgICAgICBtV2lkdGgg
PSBkZXNjcmlwdGlvbi5XaWR0aDsKKyAgICAgICAgbUhlaWdodCA9IGRlc2NyaXB0aW9uLkhlaWdo
dDsKKyAgICAgICAgCisgICAgICAgIG1JbnRlcm5hbEZvcm1hdCA9IGQzZDlfZ2w6OkdldEVxdWl2
YWxlbnRGb3JtYXQoZGVzY3JpcHRpb24uRm9ybWF0KTsKKyAgICAgICAgbUFjdHVhbEZvcm1hdCA9
IGQzZDlfZ2w6OkdldEVxdWl2YWxlbnRGb3JtYXQoZGVzY3JpcHRpb24uRm9ybWF0KTsKKyAgICAg
ICAgbVNhbXBsZXMgPSBkM2Q5X2dsOjpHZXRTYW1wbGVzRnJvbU11bHRpc2FtcGxlVHlwZShkZXNj
cmlwdGlvbi5NdWx0aVNhbXBsZVR5cGUpOworICAgIH0KK30KKworUmVuZGVyVGFyZ2V0OTo6UmVu
ZGVyVGFyZ2V0OShSZW5kZXJlciAqcmVuZGVyZXIsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMpCit7CisgICAgbVJlbmRlcmVyID0g
UmVuZGVyZXI5OjptYWtlUmVuZGVyZXI5KHJlbmRlcmVyKTsKKyAgICBtUmVuZGVyVGFyZ2V0ID0g
TlVMTDsKKworICAgIEQzREZPUk1BVCByZXF1ZXN0ZWRGb3JtYXQgPSBnbF9kM2Q5OjpDb252ZXJ0
UmVuZGVyYnVmZmVyRm9ybWF0KGZvcm1hdCk7CisgICAgaW50IHN1cHBvcnRlZFNhbXBsZXMgPSBt
UmVuZGVyZXItPmdldE5lYXJlc3RTdXBwb3J0ZWRTYW1wbGVzKHJlcXVlc3RlZEZvcm1hdCwgc2Ft
cGxlcyk7CisKKyAgICBpZiAoc3VwcG9ydGVkU2FtcGxlcyA9PSAtMSkKKyAgICB7CisgICAgICAg
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgSFJFU1VMVCByZXN1bHQgPSBEM0RFUlJfSU5WQUxJRENBTEw7CisgICAgCisgICAgaWYg
KHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKQorICAgIHsKKyAgICAgICAgaWYgKHJlcXVlc3RlZEZv
cm1hdCA9PSBEM0RGTVRfRDI0UzgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1S
ZW5kZXJlci0+Z2V0RGV2aWNlKCktPkNyZWF0ZURlcHRoU3RlbmNpbFN1cmZhY2Uod2lkdGgsIGhl
aWdodCwgcmVxdWVzdGVkRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kM2Q5OjpHZXRNdWx0aXNh
bXBsZVR5cGVGcm9tU2FtcGxlcyhzdXBwb3J0ZWRTYW1wbGVzKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
RkFMU0UsICZtUmVuZGVyVGFyZ2V0LCBOVUxMKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCktPkNy
ZWF0ZVJlbmRlclRhcmdldCh3aWR0aCwgaGVpZ2h0LCByZXF1ZXN0ZWRGb3JtYXQsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsX2QzZDk6OkdldE11bHRpc2FtcGxlVHlwZUZyb21TYW1wbGVzKHN1cHBvcnRlZFNhbXBsZXMp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsIEZBTFNFLCAmbVJlbmRlclRhcmdldCwgTlVMTCk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9
PSBFX09VVE9GTUVNT1JZKQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgfQorCisgICAgbVdpZHRoID0gd2lkdGg7
CisgICAgbUhlaWdodCA9IGhlaWdodDsKKyAgICBtSW50ZXJuYWxGb3JtYXQgPSBmb3JtYXQ7Cisg
ICAgbVNhbXBsZXMgPSBzdXBwb3J0ZWRTYW1wbGVzOworICAgIG1BY3R1YWxGb3JtYXQgPSBkM2Q5
X2dsOjpHZXRFcXVpdmFsZW50Rm9ybWF0KHJlcXVlc3RlZEZvcm1hdCk7Cit9CisKK1JlbmRlclRh
cmdldDk6On5SZW5kZXJUYXJnZXQ5KCkKK3sKKyAgICBpZiAobVJlbmRlclRhcmdldCkKKyAgICB7
CisgICAgICAgIG1SZW5kZXJUYXJnZXQtPlJlbGVhc2UoKTsKKyAgICB9Cit9CisKK1JlbmRlclRh
cmdldDkgKlJlbmRlclRhcmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5KFJlbmRlclRhcmdldCAqdGFy
Z2V0KQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpSZW5kZXJUYXJnZXQ5Kiwg
dGFyZ2V0KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHJ4OjpSZW5kZXJUYXJnZXQ5Kj4odGFy
Z2V0KTsKK30KKworSURpcmVjdDNEU3VyZmFjZTkgKlJlbmRlclRhcmdldDk6OmdldFN1cmZhY2Uo
KQoreworICAgIC8vIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgcmVsZWFzaW5nIHRoZSByZXR1
cm5lZCBzdXJmYWNlIHJlZmVyZW5jZS4KKyAgICBpZiAobVJlbmRlclRhcmdldCkKKyAgICB7Cisg
ICAgICAgIG1SZW5kZXJUYXJnZXQtPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtUmVu
ZGVyVGFyZ2V0OworfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQ5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9SZW5kZXJUYXJnZXQ5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDkuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0MCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFJlbmRlclRhcmdldDkuaDog
RGVmaW5lcyBhIEQzRDktc3BlY2lmaWMgd3JhcHBlciBmb3IgSURpcmVjdDNEU3VyZmFjZTkgcG9p
bnRlcnMKKy8vIHJldGFpbmVkIGJ5IFJlbmRlcmJ1ZmZlcnMuCisKKyNpZm5kZWYgTElCR0xFU1Yy
X1JFTkRFUkVSX1JFTkRFUlRBUkdFVDlfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1JF
TkRFUlRBUkdFVDlfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJn
ZXQuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKK2NsYXNzIFJlbmRlcmVy
OTsKKworY2xhc3MgUmVuZGVyVGFyZ2V0OSA6IHB1YmxpYyBSZW5kZXJUYXJnZXQKK3sKKyAgcHVi
bGljOgorICAgIFJlbmRlclRhcmdldDkoUmVuZGVyZXIgKnJlbmRlcmVyLCBJRGlyZWN0M0RTdXJm
YWNlOSAqc3VyZmFjZSk7CisgICAgUmVuZGVyVGFyZ2V0OShSZW5kZXJlciAqcmVuZGVyZXIsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBs
ZXMpOworICAgIHZpcnR1YWwgflJlbmRlclRhcmdldDkoKTsKKworICAgIHN0YXRpYyBSZW5kZXJU
YXJnZXQ5ICptYWtlUmVuZGVyVGFyZ2V0OShSZW5kZXJUYXJnZXQgKnJlbmRlclRhcmdldCk7Cisg
ICAgSURpcmVjdDNEU3VyZmFjZTkgKmdldFN1cmZhY2UoKTsKKworICBwcml2YXRlOgorICAgIERJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJUYXJnZXQ5KTsKKworICAgIElEaXJlY3QzRFN1
cmZhY2U5ICptUmVuZGVyVGFyZ2V0OworCisgICAgUmVuZGVyZXI5ICptUmVuZGVyZXI7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfUkVOREVSVEFSR0VUOV9IXwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJU
YXJnZXQxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDEx
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNzggQEAKKyNpbmNsdWRlICJwcmVjb21waWxl
ZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFJlbmRlclRhcmdldDExLmNwcDogSW1wbGVtZW50cyBh
IERYMTEtc3BlY2lmaWMgd3JhcHBlciBmb3IgSUQzRDExVmlldyBwb2ludGVycworLy8gcmV0YWlu
ZWQgYnkgUmVuZGVyYnVmZmVycy4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5k
ZXJUYXJnZXQxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmgi
CisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXIxMV91dGlscy5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisKK25hbWVzcGFjZSByeAoreworCitzdGF0aWMgdW5z
aWduZWQgaW50IGdldFJUVlN1YnJlc291cmNlSW5kZXgoSUQzRDExVGV4dHVyZTJEICp0ZXh0dXJl
LCBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICp2aWV3KQoreworICAgIEQzRDExX1JFTkRFUl9UQVJH
RVRfVklFV19ERVNDIHJ0dkRlc2M7CisgICAgdmlldy0+R2V0RGVzYygmcnR2RGVzYyk7CisKKyAg
ICBEM0QxMV9URVhUVVJFMkRfREVTQyB0ZXhEZXNjOworICAgIHRleHR1cmUtPkdldERlc2MoJnRl
eERlc2MpOworCisgICAgdW5zaWduZWQgaW50IG1pcFNsaWNlID0gMDsKKyAgICB1bnNpZ25lZCBp
bnQgYXJyYXlTbGljZSA9IDA7CisgICAgdW5zaWduZWQgaW50IG1pcExldmVscyA9IHRleERlc2Mu
TWlwTGV2ZWxzOworCisgICAgc3dpdGNoIChydHZEZXNjLlZpZXdEaW1lbnNpb24pCisgICAgewor
ICAgICAgY2FzZSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUxRDoKKyAgICAgICAgbWlwU2xp
Y2UgPSBydHZEZXNjLlRleHR1cmUxRC5NaXBTbGljZTsKKyAgICAgICAgYXJyYXlTbGljZSA9IDA7
CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVS
RTFEQVJSQVk6CisgICAgICAgIG1pcFNsaWNlID0gcnR2RGVzYy5UZXh0dXJlMURBcnJheS5NaXBT
bGljZTsKKyAgICAgICAgYXJyYXlTbGljZSA9IHJ0dkRlc2MuVGV4dHVyZTFEQXJyYXkuRmlyc3RB
cnJheVNsaWNlOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBEM0QxMV9SVFZfRElNRU5T
SU9OX1RFWFRVUkUyRDoKKyAgICAgICAgbWlwU2xpY2UgPSBydHZEZXNjLlRleHR1cmUyRC5NaXBT
bGljZTsKKyAgICAgICAgYXJyYXlTbGljZSA9IDA7CisgICAgICAgIGJyZWFrOworCisgICAgICBj
YXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEQVJSQVk6CisgICAgICAgIG1pcFNsaWNl
ID0gcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5NaXBTbGljZTsKKyAgICAgICAgYXJyYXlTbGljZSA9
IHJ0dkRlc2MuVGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNsaWNlOworICAgICAgICBicmVhazsK
KworICAgICAgY2FzZSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyRE1TOgorICAgICAgICBt
aXBTbGljZSA9IDA7CisgICAgICAgIGFycmF5U2xpY2UgPSAwOworICAgICAgICBicmVhazsKKwor
ICAgICAgY2FzZSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyRE1TQVJSQVk6CisgICAgICAg
IG1pcFNsaWNlID0gMDsKKyAgICAgICAgYXJyYXlTbGljZSA9IHJ0dkRlc2MuVGV4dHVyZTJETVNB
cnJheS5GaXJzdEFycmF5U2xpY2U7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEQzRDEx
X1JUVl9ESU1FTlNJT05fVEVYVFVSRTNEOgorICAgICAgICBtaXBTbGljZSA9IHJ0dkRlc2MuVGV4
dHVyZTNELk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNlID0gMDsKKyAgICAgICAgYnJlYWs7
CisKKyAgICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9VTktOT1dOOgorICAgICAgY2FzZSBE
M0QxMV9SVFZfRElNRU5TSU9OX0JVRkZFUjoKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
ICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIEQzRDExQ2FsY1N1YnJlc291cmNlKG1p
cFNsaWNlLCBhcnJheVNsaWNlLCBtaXBMZXZlbHMpOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50
IGdldERTVlN1YnJlc291cmNlSW5kZXgoSUQzRDExVGV4dHVyZTJEICp0ZXh0dXJlLCBJRDNEMTFE
ZXB0aFN0ZW5jaWxWaWV3ICp2aWV3KQoreworICAgIEQzRDExX0RFUFRIX1NURU5DSUxfVklFV19E
RVNDIGRzdkRlc2M7CisgICAgdmlldy0+R2V0RGVzYygmZHN2RGVzYyk7CisKKyAgICBEM0QxMV9U
RVhUVVJFMkRfREVTQyB0ZXhEZXNjOworICAgIHRleHR1cmUtPkdldERlc2MoJnRleERlc2MpOwor
CisgICAgdW5zaWduZWQgaW50IG1pcFNsaWNlID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgYXJyYXlT
bGljZSA9IDA7CisgICAgdW5zaWduZWQgaW50IG1pcExldmVscyA9IHRleERlc2MuTWlwTGV2ZWxz
OworCisgICAgc3dpdGNoIChkc3ZEZXNjLlZpZXdEaW1lbnNpb24pCisgICAgeworICAgICAgY2Fz
ZSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUxRDoKKyAgICAgICAgbWlwU2xpY2UgPSBkc3ZE
ZXNjLlRleHR1cmUxRC5NaXBTbGljZTsKKyAgICAgICAgYXJyYXlTbGljZSA9IDA7CisgICAgICAg
IGJyZWFrOworCisgICAgICBjYXNlIEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTFEQVJSQVk6
CisgICAgICAgIG1pcFNsaWNlID0gZHN2RGVzYy5UZXh0dXJlMURBcnJheS5NaXBTbGljZTsKKyAg
ICAgICAgYXJyYXlTbGljZSA9IGRzdkRlc2MuVGV4dHVyZTFEQXJyYXkuRmlyc3RBcnJheVNsaWNl
OworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRV
UkUyRDoKKyAgICAgICAgbWlwU2xpY2UgPSBkc3ZEZXNjLlRleHR1cmUyRC5NaXBTbGljZTsKKyAg
ICAgICAgYXJyYXlTbGljZSA9IDA7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEQzRDEx
X0RTVl9ESU1FTlNJT05fVEVYVFVSRTJEQVJSQVk6CisgICAgICAgIG1pcFNsaWNlID0gZHN2RGVz
Yy5UZXh0dXJlMkRBcnJheS5NaXBTbGljZTsKKyAgICAgICAgYXJyYXlTbGljZSA9IGRzdkRlc2Mu
VGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNsaWNlOworICAgICAgICBicmVhazsKKworICAgICAg
Y2FzZSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyRE1TOgorICAgICAgICBtaXBTbGljZSA9
IDA7CisgICAgICAgIGFycmF5U2xpY2UgPSAwOworICAgICAgICBicmVhazsKKworICAgICAgY2Fz
ZSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyRE1TQVJSQVk6CisgICAgICAgIG1pcFNsaWNl
ID0gMDsKKyAgICAgICAgYXJyYXlTbGljZSA9IGRzdkRlc2MuVGV4dHVyZTJETVNBcnJheS5GaXJz
dEFycmF5U2xpY2U7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEQzRDExX1JUVl9ESU1F
TlNJT05fVU5LTk9XTjoKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICBicmVhazsK
KworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgcmV0dXJuIEQzRDExQ2FsY1N1YnJlc291cmNlKG1pcFNsaWNlLCBhcnJh
eVNsaWNlLCBtaXBMZXZlbHMpOworfQorCitSZW5kZXJUYXJnZXQxMTo6UmVuZGVyVGFyZ2V0MTEo
UmVuZGVyZXIgKnJlbmRlcmVyLCBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHYsIElEM0QxMVRl
eHR1cmUyRCAqdGV4LCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgbVJlbmRlcmVyID0gUmVuZGVyZXIxMTo6bWFrZVJl
bmRlcmVyMTEocmVuZGVyZXIpOworICAgIG1UZXh0dXJlID0gdGV4OworICAgIG1SZW5kZXJUYXJn
ZXQgPSBydHY7CisgICAgbURlcHRoU3RlbmNpbCA9IE5VTEw7CisgICAgbVNoYWRlclJlc291cmNl
ID0gc3J2OworICAgIG1TdWJyZXNvdXJjZUluZGV4ID0gMDsKKworICAgIGlmIChtUmVuZGVyVGFy
Z2V0ICYmIG1UZXh0dXJlKQorICAgIHsKKyAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVX
X0RFU0MgZGVzYzsKKyAgICAgICAgbVJlbmRlclRhcmdldC0+R2V0RGVzYygmZGVzYyk7CisKKyAg
ICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgdGV4RGVzYzsKKyAgICAgICAgbVRleHR1cmUtPkdl
dERlc2MoJnRleERlc2MpOworCisgICAgICAgIG1TdWJyZXNvdXJjZUluZGV4ID0gZ2V0UlRWU3Vi
cmVzb3VyY2VJbmRleChtVGV4dHVyZSwgbVJlbmRlclRhcmdldCk7CisgICAgICAgIG1XaWR0aCA9
IHdpZHRoOworICAgICAgICBtSGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBtU2FtcGxlcyA9ICh0
ZXhEZXNjLlNhbXBsZURlc2MuQ291bnQgPiAxKSA/IHRleERlc2MuU2FtcGxlRGVzYy5Db3VudCA6
IDA7CisKKyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gZDNkMTFfZ2w6OkNvbnZlcnRUZXh0dXJl
SW50ZXJuYWxGb3JtYXQoZGVzYy5Gb3JtYXQpOworICAgICAgICBtQWN0dWFsRm9ybWF0ID0gZDNk
MTFfZ2w6OkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoZGVzYy5Gb3JtYXQpOworICAgIH0K
K30KKworUmVuZGVyVGFyZ2V0MTE6OlJlbmRlclRhcmdldDExKFJlbmRlcmVyICpyZW5kZXJlciwg
SUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZHN2LCBJRDNEMTFUZXh0dXJlMkQgKnRleCwgSUQzRDEx
U2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQor
eworICAgIG1SZW5kZXJlciA9IFJlbmRlcmVyMTE6Om1ha2VSZW5kZXJlcjExKHJlbmRlcmVyKTsK
KyAgICBtVGV4dHVyZSA9IHRleDsKKyAgICBtUmVuZGVyVGFyZ2V0ID0gTlVMTDsKKyAgICBtRGVw
dGhTdGVuY2lsID0gZHN2OworICAgIG1TaGFkZXJSZXNvdXJjZSA9IHNydjsKKyAgICBtU3VicmVz
b3VyY2VJbmRleCA9IDA7CisKKyAgICBpZiAobURlcHRoU3RlbmNpbCAmJiBtVGV4dHVyZSkKKyAg
ICB7CisgICAgICAgIEQzRDExX0RFUFRIX1NURU5DSUxfVklFV19ERVNDIGRlc2M7CisgICAgICAg
IG1EZXB0aFN0ZW5jaWwtPkdldERlc2MoJmRlc2MpOworCisgICAgICAgIEQzRDExX1RFWFRVUkUy
RF9ERVNDIHRleERlc2M7CisgICAgICAgIG1UZXh0dXJlLT5HZXREZXNjKCZ0ZXhEZXNjKTsKKwor
ICAgICAgICBtU3VicmVzb3VyY2VJbmRleCA9IGdldERTVlN1YnJlc291cmNlSW5kZXgobVRleHR1
cmUsIG1EZXB0aFN0ZW5jaWwpOworICAgICAgICBtV2lkdGggPSB3aWR0aDsKKyAgICAgICAgbUhl
aWdodCA9IGhlaWdodDsKKyAgICAgICAgbVNhbXBsZXMgPSAodGV4RGVzYy5TYW1wbGVEZXNjLkNv
dW50ID4gMSkgPyB0ZXhEZXNjLlNhbXBsZURlc2MuQ291bnQgOiAwOworCisgICAgICAgIG1JbnRl
cm5hbEZvcm1hdCA9IGQzZDExX2dsOjpDb252ZXJ0VGV4dHVyZUludGVybmFsRm9ybWF0KGRlc2Mu
Rm9ybWF0KTsKKyAgICAgICAgbUFjdHVhbEZvcm1hdCA9IGQzZDExX2dsOjpDb252ZXJ0VGV4dHVy
ZUludGVybmFsRm9ybWF0KGRlc2MuRm9ybWF0KTsKKyAgICB9Cit9CisKK1JlbmRlclRhcmdldDEx
OjpSZW5kZXJUYXJnZXQxMShSZW5kZXJlciAqcmVuZGVyZXIsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMsIGJvb2wgZGVwdGgpCit7
CisgICAgbVJlbmRlcmVyID0gUmVuZGVyZXIxMTo6bWFrZVJlbmRlcmVyMTEocmVuZGVyZXIpOwor
ICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICBtUmVuZGVyVGFyZ2V0ID0gTlVMTDsKKyAgICBtRGVw
dGhTdGVuY2lsID0gTlVMTDsKKyAgICBtU2hhZGVyUmVzb3VyY2UgPSBOVUxMOworCisgICAgRFhH
SV9GT1JNQVQgcmVxdWVzdGVkRm9ybWF0ID0gZ2xfZDNkMTE6OkNvbnZlcnRSZW5kZXJidWZmZXJG
b3JtYXQoZm9ybWF0KTsKKworICAgIGludCBzdXBwb3J0ZWRTYW1wbGVzID0gbVJlbmRlcmVyLT5n
ZXROZWFyZXN0U3VwcG9ydGVkU2FtcGxlcyhyZXF1ZXN0ZWRGb3JtYXQsIHNhbXBsZXMpOworICAg
IGlmIChzdXBwb3J0ZWRTYW1wbGVzIDwgMCkKKyAgICB7CisgICAgICAgIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh3aWR0aCA+
IDAgJiYgaGVpZ2h0ID4gMCkKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSB0ZXh0dXJlIHJlc291
cmNlCisgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIGRlc2M7CisgICAgICAgIGRlc2MuV2lk
dGggPSB3aWR0aDsgCisgICAgICAgIGRlc2MuSGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBkZXNj
Lk1pcExldmVscyA9IDE7CisgICAgICAgIGRlc2MuQXJyYXlTaXplID0gMTsKKyAgICAgICAgZGVz
Yy5Gb3JtYXQgPSByZXF1ZXN0ZWRGb3JtYXQ7CisgICAgICAgIGRlc2MuU2FtcGxlRGVzYy5Db3Vu
dCA9IChzdXBwb3J0ZWRTYW1wbGVzID09IDApID8gMSA6IHN1cHBvcnRlZFNhbXBsZXM7CisgICAg
ICAgIGRlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKKyAgICAgICAgZGVzYy5Vc2FnZSA9IEQz
RDExX1VTQUdFX0RFRkFVTFQ7CisgICAgICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSAwOworICAg
ICAgICBkZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgIGRlc2MuQmluZEZsYWdzID0gKGRlcHRo
ID8gRDNEMTFfQklORF9ERVBUSF9TVEVOQ0lMIDogKEQzRDExX0JJTkRfUkVOREVSX1RBUkdFVCB8
IEQzRDExX0JJTkRfU0hBREVSX1JFU09VUkNFKSk7CisKKyAgICAgICAgSUQzRDExRGV2aWNlICpk
ZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9
IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZkZXNjLCBOVUxMLCAmbVRleHR1cmUpOworCisgICAg
ICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAgICAgICAgeworICAgICAgICAgICAg
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgaWYgKGRl
cHRoKQorICAgICAgICB7CisgICAgICAgICAgICBEM0QxMV9ERVBUSF9TVEVOQ0lMX1ZJRVdfREVT
QyBkc3ZEZXNjOworICAgICAgICAgICAgZHN2RGVzYy5Gb3JtYXQgPSByZXF1ZXN0ZWRGb3JtYXQ7
CisgICAgICAgICAgICBkc3ZEZXNjLlZpZXdEaW1lbnNpb24gPSAoc3VwcG9ydGVkU2FtcGxlcyA9
PSAwKSA/IEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJEIDogRDNEMTFfRFNWX0RJTUVOU0lP
Tl9URVhUVVJFMkRNUzsKKyAgICAgICAgICAgIGRzdkRlc2MuVGV4dHVyZTJELk1pcFNsaWNlID0g
MDsKKyAgICAgICAgICAgIGRzdkRlc2MuRmxhZ3MgPSAwOworICAgICAgICAgICAgcmVzdWx0ID0g
ZGV2aWNlLT5DcmVhdGVEZXB0aFN0ZW5jaWxWaWV3KG1UZXh0dXJlLCAmZHN2RGVzYywgJm1EZXB0
aFN0ZW5jaWwpOworCisgICAgICAgICAgICBpZiAocmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbVRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAg
ICAgICAgICAgICBtVGV4dHVyZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEQzRDExX1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7CisgICAgICAgICAg
ICBydHZEZXNjLkZvcm1hdCA9IHJlcXVlc3RlZEZvcm1hdDsKKyAgICAgICAgICAgIHJ0dkRlc2Mu
Vmlld0RpbWVuc2lvbiA9IChzdXBwb3J0ZWRTYW1wbGVzID09IDApID8gRDNEMTFfUlRWX0RJTUVO
U0lPTl9URVhUVVJFMkQgOiBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyRE1TOworICAgICAg
ICAgICAgcnR2RGVzYy5UZXh0dXJlMkQuTWlwU2xpY2UgPSAwOworICAgICAgICAgICAgcmVzdWx0
ID0gZGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJnZXRWaWV3KG1UZXh0dXJlLCAmcnR2RGVzYywgJm1S
ZW5kZXJUYXJnZXQpOworCisgICAgICAgICAgICBpZiAocmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbVRleHR1cmUtPlJlbGVhc2UoKTsKKyAg
ICAgICAgICAgICAgICBtVGV4dHVyZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgICAg
IEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc3J2RGVzYzsKKyAgICAgICAgICAgIHNy
dkRlc2MuRm9ybWF0ID0gcmVxdWVzdGVkRm9ybWF0OworICAgICAgICAgICAgc3J2RGVzYy5WaWV3
RGltZW5zaW9uID0gKHN1cHBvcnRlZFNhbXBsZXMgPT0gMCkgPyBEM0QxMV9TUlZfRElNRU5TSU9O
X1RFWFRVUkUyRCA6IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJETVM7CisgICAgICAgICAg
ICBzcnZEZXNjLlRleHR1cmUyRC5Nb3N0RGV0YWlsZWRNaXAgPSAwOworICAgICAgICAgICAgc3J2
RGVzYy5UZXh0dXJlMkQuTWlwTGV2ZWxzID0gMTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRldmlj
ZS0+Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KG1UZXh0dXJlLCAmc3J2RGVzYywgJm1TaGFkZXJS
ZXNvdXJjZSk7CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOworICAgICAg
ICAgICAgICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICAgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0
LT5SZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgbVJlbmRlclRhcmdldCA9IE5VTEw7CisgICAg
ICAgICAgICAgICAgZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVz
dWx0KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtV2lkdGggPSB3aWR0aDsKKyAgICBtSGVp
Z2h0ID0gaGVpZ2h0OworICAgIG1JbnRlcm5hbEZvcm1hdCA9IGZvcm1hdDsKKyAgICBtU2FtcGxl
cyA9IHN1cHBvcnRlZFNhbXBsZXM7CisgICAgbUFjdHVhbEZvcm1hdCA9IGQzZDExX2dsOjpDb252
ZXJ0VGV4dHVyZUludGVybmFsRm9ybWF0KHJlcXVlc3RlZEZvcm1hdCk7CisgICAgbVN1YnJlc291
cmNlSW5kZXggPSBEM0QxMUNhbGNTdWJyZXNvdXJjZSgwLCAwLCAxKTsKK30KKworUmVuZGVyVGFy
Z2V0MTE6On5SZW5kZXJUYXJnZXQxMSgpCit7CisgICAgaWYgKG1UZXh0dXJlKQorICAgIHsKKyAg
ICAgICAgbVRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbVRleHR1cmUgPSBOVUxMOworICAg
IH0KKworICAgIGlmIChtUmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgbVJlbmRlclRhcmdl
dC0+UmVsZWFzZSgpOworICAgICAgICBtUmVuZGVyVGFyZ2V0ID0gTlVMTDsKKyAgICB9CisKKyAg
ICBpZiAobURlcHRoU3RlbmNpbCkKKyAgICB7CisgICAgICAgIG1EZXB0aFN0ZW5jaWwtPlJlbGVh
c2UoKTsKKyAgICAgICAgbURlcHRoU3RlbmNpbCA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1T
aGFkZXJSZXNvdXJjZSkKKyAgICB7CisgICAgICAgIG1TaGFkZXJSZXNvdXJjZS0+UmVsZWFzZSgp
OworICAgICAgICBtU2hhZGVyUmVzb3VyY2UgPSBOVUxMOworICAgIH0KK30KKworUmVuZGVyVGFy
Z2V0MTEgKlJlbmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEoUmVuZGVyVGFyZ2V0ICp0
YXJnZXQpCit7CisgICAgQVNTRVJUKEhBU19EWU5BTUlDX1RZUEUocng6OlJlbmRlclRhcmdldDEx
KiwgdGFyZ2V0KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHJ4OjpSZW5kZXJUYXJnZXQxMSo+
KHRhcmdldCk7Cit9CisKK0lEM0QxMVRleHR1cmUyRCAqUmVuZGVyVGFyZ2V0MTE6OmdldFRleHR1
cmUoKSBjb25zdAoreworICAgIGlmIChtVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1UZXh0dXJl
LT5BZGRSZWYoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbVRleHR1cmU7Cit9CisKKy8vIEFkZHMg
cmVmZXJlbmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVhc2UKK0lEM0QxMVJlbmRlclRhcmdldFZp
ZXcgKlJlbmRlclRhcmdldDExOjpnZXRSZW5kZXJUYXJnZXRWaWV3KCkgY29uc3QKK3sKKyAgICBp
ZiAobVJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIG1SZW5kZXJUYXJnZXQtPkFkZFJlZigp
OworICAgIH0KKworICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0OworfQorCisvLyBBZGRzIHJlZmVy
ZW5jZSwgY2FsbGVyIG11c3QgY2FsbCBSZWxlYXNlCitJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpS
ZW5kZXJUYXJnZXQxMTo6Z2V0RGVwdGhTdGVuY2lsVmlldygpIGNvbnN0Cit7CisgICAgaWYgKG1E
ZXB0aFN0ZW5jaWwpCisgICAgeworICAgICAgICBtRGVwdGhTdGVuY2lsLT5BZGRSZWYoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbURlcHRoU3RlbmNpbDsKK30KKworLy8gQWRkcyByZWZlcmVuY2Us
IGNhbGxlciBtdXN0IGNhbGwgUmVsZWFzZQorSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpSZW5k
ZXJUYXJnZXQxMTo6Z2V0U2hhZGVyUmVzb3VyY2VWaWV3KCkgY29uc3QKK3sKKyAgICBpZiAobVNo
YWRlclJlc291cmNlKQorICAgIHsKKyAgICAgICAgbVNoYWRlclJlc291cmNlLT5BZGRSZWYoKTsK
KyAgICB9CisKKyAgICByZXR1cm4gbVNoYWRlclJlc291cmNlOworfQorCit1bnNpZ25lZCBpbnQg
UmVuZGVyVGFyZ2V0MTE6OmdldFN1YnJlc291cmNlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVy
biBtU3VicmVzb3VyY2VJbmRleDsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFy
Z2V0MTEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0MTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
OCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFJlbmRlclRhcmdldDExLmg6IERlZmluZXMgYSBEWDEx
LXNwZWNpZmljIHdyYXBwZXIgZm9yIElEM0QxMVZpZXcgcG9pbnRlcnMKKy8vIHJldGFpbmVkIGJ5
IFJlbmRlcmJ1ZmZlcnMuCisKKyNpZm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUlRBUkdF
VDExX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJUQVJHRVQxMV9IXworCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldC5oIgorCituYW1lc3BhY2Ug
cngKK3sKK2NsYXNzIFJlbmRlcmVyOworY2xhc3MgUmVuZGVyZXIxMTsKKworY2xhc3MgUmVuZGVy
VGFyZ2V0MTEgOiBwdWJsaWMgUmVuZGVyVGFyZ2V0Cit7CisgIHB1YmxpYzoKKyAgICBSZW5kZXJU
YXJnZXQxMShSZW5kZXJlciAqcmVuZGVyZXIsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnJ0diwg
SUQzRDExVGV4dHVyZTJEICp0ZXgsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisgICAgUmVuZGVyVGFyZ2V0MTEoUmVuZGVyZXIg
KnJlbmRlcmVyLCBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkc3YsIElEM0QxMVRleHR1cmUyRCAq
dGV4LCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQpOworICAgIFJlbmRlclRhcmdldDExKFJlbmRlcmVyICpyZW5kZXJlciwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywg
Ym9vbCBkZXB0aCk7CisgICAgdmlydHVhbCB+UmVuZGVyVGFyZ2V0MTEoKTsKKworICAgIHN0YXRp
YyBSZW5kZXJUYXJnZXQxMSAqbWFrZVJlbmRlclRhcmdldDExKFJlbmRlclRhcmdldCAqcmVuZGVy
VGFyZ2V0KTsKKworICAgIC8vIEFkZHMgcmVmZXJlbmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVh
c2UKKyAgICBJRDNEMTFUZXh0dXJlMkQgKmdldFRleHR1cmUoKSBjb25zdDsKKworICAgIC8vIEFk
ZHMgcmVmZXJlbmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVhc2UKKyAgICBJRDNEMTFSZW5kZXJU
YXJnZXRWaWV3ICpnZXRSZW5kZXJUYXJnZXRWaWV3KCkgY29uc3Q7CisKKyAgICAvLyBBZGRzIHJl
ZmVyZW5jZSwgY2FsbGVyIG11c3QgY2FsbCBSZWxlYXNlCisgICAgSUQzRDExRGVwdGhTdGVuY2ls
VmlldyAqZ2V0RGVwdGhTdGVuY2lsVmlldygpIGNvbnN0OworCisgICAgLy8gQWRkcyByZWZlcmVu
Y2UsIGNhbGxlciBtdXN0IGNhbGwgUmVsZWFzZQorICAgIElEM0QxMVNoYWRlclJlc291cmNlVmll
dyAqZ2V0U2hhZGVyUmVzb3VyY2VWaWV3KCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCBpbnQgZ2V0
U3VicmVzb3VyY2VJbmRleCgpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOKFJlbmRlclRhcmdldDExKTsKKworICAgIHVuc2lnbmVkIGludCBtU3VicmVz
b3VyY2VJbmRleDsKKyAgICBJRDNEMTFUZXh0dXJlMkQgKm1UZXh0dXJlOworICAgIElEM0QxMVJl
bmRlclRhcmdldFZpZXcgKm1SZW5kZXJUYXJnZXQ7CisgICAgSUQzRDExRGVwdGhTdGVuY2lsVmll
dyAqbURlcHRoU3RlbmNpbDsKKyAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKm1TaGFkZXJS
ZXNvdXJjZTsKKworICAgIFJlbmRlcmVyMTEgKm1SZW5kZXJlcjsKK307CisKK30KKworI2VuZGlm
IExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJUQVJHRVQxMV9IXwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyVGFyZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFy
Z2V0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBS
ZW5kZXJUYXJnZXQuaDogRGVmaW5lcyBhbiBhYnN0cmFjdCB3cmFwcGVyIGNsYXNzIHRvIG1hbmFn
ZSBJRGlyZWN0M0RTdXJmYWNlOQorLy8gYW5kIElEM0QxMVZpZXcgb2JqZWN0cyBiZWxvbmdpbmcg
dG8gcmVuZGVyYnVmZmVycy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfUkVOREVSVEFS
R0VUX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJUQVJHRVRfSF8KKworI2lu
Y2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVu
ZGVyVGFyZ2V0Cit7CisgIHB1YmxpYzoKKyAgICBSZW5kZXJUYXJnZXQoKQorICAgIHsKKyAgICAg
ICAgbVdpZHRoID0gMDsKKyAgICAgICAgbUhlaWdodCA9IDA7CisgICAgICAgIG1JbnRlcm5hbEZv
cm1hdCA9IEdMX05PTkU7CisgICAgICAgIG1BY3R1YWxGb3JtYXQgPSBHTF9OT05FOworICAgICAg
ICBtU2FtcGxlcyA9IDA7CisgICAgfQorCisgICAgdmlydHVhbCB+UmVuZGVyVGFyZ2V0KCkge307
CisKKyAgICBHTHNpemVpIGdldFdpZHRoKCkgeyByZXR1cm4gbVdpZHRoOyB9CisgICAgR0xzaXpl
aSBnZXRIZWlnaHQoKSB7IHJldHVybiBtSGVpZ2h0OyB9CisgICAgR0xlbnVtIGdldEludGVybmFs
Rm9ybWF0KCkgeyByZXR1cm4gbUludGVybmFsRm9ybWF0OyB9CisgICAgR0xlbnVtIGdldEFjdHVh
bEZvcm1hdCgpIHsgcmV0dXJuIG1BY3R1YWxGb3JtYXQ7IH0KKyAgICBHTHNpemVpIGdldFNhbXBs
ZXMoKSB7IHJldHVybiBtU2FtcGxlczsgfQorICAgIAorICAgIHN0cnVjdCBEZXNjIHsKKyAgICAg
ICAgR0xzaXplaSB3aWR0aDsKKyAgICAgICAgR0xzaXplaSBoZWlnaHQ7CisgICAgICAgIEdMZW51
bSAgZm9ybWF0OworICAgIH07CisKKyAgcHJvdGVjdGVkOgorICAgIEdMc2l6ZWkgbVdpZHRoOwor
ICAgIEdMc2l6ZWkgbUhlaWdodDsKKyAgICBHTGVudW0gbUludGVybmFsRm9ybWF0OworICAgIEdM
ZW51bSBtQWN0dWFsRm9ybWF0OworICAgIEdMc2l6ZWkgbVNhbXBsZXM7CisKKyAgcHJpdmF0ZToK
KyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVuZGVyVGFyZ2V0KTsKK307CisKK30KKwor
I2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJUQVJHRVRfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRl
cmVyOS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIx
NiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEy
LTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBS
ZW5kZXJlcjkuY3BwOiBJbXBsZW1lbnRzIGEgYmFjay1lbmQgc3BlY2lmaWMgY2xhc3MgZm9yIHRo
ZSBEM0Q5IHJlbmRlcmVyLgorCisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvQnVmZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1RleHR1cmUuaCIKKyNp
bmNsdWRlICJsaWJHTEVTdjIvRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVu
ZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvcmVuZGVyZXI5X3V0aWxzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1NoYWRl
ckV4ZWN1dGFibGU5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjku
aCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlOS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9y
ZW5kZXJlci9CbGl0LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdl
dDkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyOS5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjkuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvUXVlcnk5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlOS5oIgor
CisjaW5jbHVkZSAibGliRUdML0Rpc3BsYXkuaCIKKworLy8gQ2FuIGFsc28gYmUgZW5hYmxlZCBi
eSBkZWZpbmluZyBGT1JDRV9SRUZfUkFTVCBpbiB0aGUgcHJvamVjdCdzIHByZWRlZmluZWQgbWFj
cm9zCisjZGVmaW5lIFJFRl9SQVNUIDAKKworLy8gVGhlICJEZWJ1ZyBUaGlzIFBpeGVsLi4uIiBm
ZWF0dXJlIGluIFBJWCBvZnRlbiBmYWlscyB3aGVuIHVzaW5nIHRoZQorLy8gRDNEOUV4IGludGVy
ZmFjZXMuICBJbiBvcmRlciB0byBnZXQgZGVidWcgcGl4ZWwgdG8gd29yayBvbiBhIFZpc3RhL1dp
biA3CisvLyBtYWNoaW5lLCBkZWZpbmUgIkFOR0xFX0VOQUJMRV9EM0Q5RVg9MCIgaW4geW91ciBw
cm9qZWN0IGZpbGUuCisjaWYgIWRlZmluZWQoQU5HTEVfRU5BQkxFX0QzRDlFWCkKKy8vIEVuYWJs
ZXMgdXNlIG9mIHRoZSBJRGlyZWN0M0Q5RXggaW50ZXJmYWNlLCB3aGVuIGF2YWlsYWJsZQorI2Rl
ZmluZSBBTkdMRV9FTkFCTEVfRDNEOUVYIDEKKyNlbmRpZiAvLyAhZGVmaW5lZChBTkdMRV9FTkFC
TEVfRDNEOUVYKQorCituYW1lc3BhY2UgcngKK3sKK3N0YXRpYyBjb25zdCBEM0RGT1JNQVQgUmVu
ZGVyVGFyZ2V0Rm9ybWF0c1tdID0KKyAgICB7CisgICAgICAgIEQzREZNVF9BMVI1RzVCNSwKKyAg
ICAvLyAgRDNERk1UX0EyUjEwRzEwQjEwLCAgIC8vIFRoZSBjb2xvcl9yYW1wIGNvbmZvcm1hbmNl
IHRlc3QgdXNlcyBSZWFkUGl4ZWxzIHdpdGggVU5TSUdORURfQllURSBjYXVzaW5nIGl0IHRvIHRo
aW5rIHRoYXQgcmVuZGVyaW5nIHNraXBwZWQgYSBjb2xvdXIgdmFsdWUuCisgICAgICAgIEQzREZN
VF9BOFI4RzhCOCwKKyAgICAgICAgRDNERk1UX1I1RzZCNSwKKyAgICAvLyAgRDNERk1UX1gxUjVH
NUI1LCAgICAgIC8vIEhhcyBubyBjb21wYXRpYmxlIE9wZW5HTCBFUyByZW5kZXJidWZmZXIgZm9y
bWF0CisgICAgICAgIEQzREZNVF9YOFI4RzhCOAorICAgIH07CisKK3N0YXRpYyBjb25zdCBEM0RG
T1JNQVQgRGVwdGhTdGVuY2lsRm9ybWF0c1tdID0KKyAgICB7CisgICAgICAgIEQzREZNVF9VTktO
T1dOLAorICAgIC8vICBEM0RGTVRfRDE2X0xPQ0tBQkxFLAorICAgICAgICBEM0RGTVRfRDMyLAor
ICAgIC8vICBEM0RGTVRfRDE1UzEsCisgICAgICAgIEQzREZNVF9EMjRTOCwKKyAgICAgICAgRDNE
Rk1UX0QyNFg4LAorICAgIC8vICBEM0RGTVRfRDI0WDRTNCwKKyAgICAgICAgRDNERk1UX0QxNiwK
KyAgICAvLyAgRDNERk1UX0QzMkZfTE9DS0FCTEUsCisgICAgLy8gIEQzREZNVF9EMjRGUzgKKyAg
ICB9OworCitlbnVtCit7CisgICAgTUFYX1ZFUlRFWF9DT05TVEFOVF9WRUNUT1JTX0QzRDkgPSAy
NTYsCisgICAgTUFYX1BJWEVMX0NPTlNUQU5UX1ZFQ1RPUlNfU00yID0gMzIsCisgICAgTUFYX1BJ
WEVMX0NPTlNUQU5UX1ZFQ1RPUlNfU00zID0gMjI0LAorICAgIE1BWF9WQVJZSU5HX1ZFQ1RPUlNf
U00yID0gOCwKKyAgICBNQVhfVkFSWUlOR19WRUNUT1JTX1NNMyA9IDEwLAorCisgICAgTUFYX1RF
WFRVUkVfSU1BR0VfVU5JVFNfVlRGX1NNMyA9IDQKK307CisKK1JlbmRlcmVyOTo6UmVuZGVyZXI5
KGVnbDo6RGlzcGxheSAqZGlzcGxheSwgSERDIGhEYywgYm9vbCBzb2Z0d2FyZURldmljZSkgOiBS
ZW5kZXJlcihkaXNwbGF5KSwgbURjKGhEYyksIG1Tb2Z0d2FyZURldmljZShzb2Z0d2FyZURldmlj
ZSkKK3sKKyAgICBtRDNkOU1vZHVsZSA9IE5VTEw7CisKKyAgICBtRDNkOSA9IE5VTEw7CisgICAg
bUQzZDlFeCA9IE5VTEw7CisgICAgbURldmljZSA9IE5VTEw7CisgICAgbURldmljZUV4ID0gTlVM
TDsKKyAgICBtRGV2aWNlV2luZG93ID0gTlVMTDsKKyAgICBtQmxpdCA9IE5VTEw7CisKKyAgICBt
QWRhcHRlciA9IEQzREFEQVBURVJfREVGQVVMVDsKKworICAgICNpZiBSRUZfUkFTVCA9PSAxIHx8
IGRlZmluZWQoRk9SQ0VfUkVGX1JBU1QpCisgICAgICAgIG1EZXZpY2VUeXBlID0gRDNEREVWVFlQ
RV9SRUY7CisgICAgI2Vsc2UKKyAgICAgICAgbURldmljZVR5cGUgPSBEM0RERVZUWVBFX0hBTDsK
KyAgICAjZW5kaWYKKworICAgIG1EZXZpY2VMb3N0ID0gZmFsc2U7CisKKyAgICBtTWF4U3VwcG9y
dGVkU2FtcGxlcyA9IDA7CisKKyAgICBtTWFza2VkQ2xlYXJTYXZlZFN0YXRlID0gTlVMTDsKKwor
ICAgIG1WZXJ0ZXhEYXRhTWFuYWdlciA9IE5VTEw7CisgICAgbUluZGV4RGF0YU1hbmFnZXIgPSBO
VUxMOworICAgIG1MaW5lTG9vcElCID0gTlVMTDsKKworICAgIG1NYXhOdWxsQ29sb3JidWZmZXJM
UlUgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTlVNX05VTExfQ09MT1JCVUZGRVJfQ0FD
SEVfRU5UUklFUzsgaSsrKQorICAgIHsKKyAgICAgICAgbU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ld
LmxydUNvdW50ID0gMDsKKyAgICAgICAgbU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ldLndpZHRoID0g
MDsKKyAgICAgICAgbU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ldLmhlaWdodCA9IDA7CisgICAgICAg
IG1OdWxsQ29sb3JidWZmZXJDYWNoZVtpXS5idWZmZXIgPSBOVUxMOworICAgIH0KK30KKworUmVu
ZGVyZXI5Ojp+UmVuZGVyZXI5KCkKK3sKKyAgICByZWxlYXNlRGV2aWNlUmVzb3VyY2VzKCk7CisK
KyAgICBpZiAobURldmljZSkKKyAgICB7CisgICAgICAgIC8vIElmIHRoZSBkZXZpY2UgaXMgbG9z
dCwgcmVzZXQgaXQgZmlyc3QgdG8gcHJldmVudCBsZWF2aW5nIHRoZSBkcml2ZXIgaW4gYW4gdW5z
dGFibGUgc3RhdGUKKyAgICAgICAgaWYgKHRlc3REZXZpY2VMb3N0KGZhbHNlKSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmVzZXREZXZpY2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1EZXZp
Y2UtPlJlbGVhc2UoKTsKKyAgICAgICAgbURldmljZSA9IE5VTEw7CisgICAgfQorCisgICAgaWYg
KG1EZXZpY2VFeCkKKyAgICB7CisgICAgICAgIG1EZXZpY2VFeC0+UmVsZWFzZSgpOworICAgICAg
ICBtRGV2aWNlRXggPSBOVUxMOworICAgIH0KKworICAgIGlmIChtRDNkOSkKKyAgICB7CisgICAg
ICAgIG1EM2Q5LT5SZWxlYXNlKCk7CisgICAgICAgIG1EM2Q5ID0gTlVMTDsKKyAgICB9CisKKyAg
ICBpZiAobURldmljZVdpbmRvdykKKyAgICB7CisgICAgICAgIERlc3Ryb3lXaW5kb3cobURldmlj
ZVdpbmRvdyk7CisgICAgICAgIG1EZXZpY2VXaW5kb3cgPSBOVUxMOworICAgIH0KKworICAgIGlm
IChtRDNkOUV4KQorICAgIHsKKyAgICAgICAgbUQzZDlFeC0+UmVsZWFzZSgpOworICAgICAgICBt
RDNkOUV4ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobUQzZDlNb2R1bGUpCisgICAgeworICAg
ICAgICBtRDNkOU1vZHVsZSA9IE5VTEw7CisgICAgfQorCisgICAgd2hpbGUgKCFtTXVsdGlTYW1w
bGVTdXBwb3J0LmVtcHR5KCkpCisgICAgeworICAgICAgICBkZWxldGUgW10gbU11bHRpU2FtcGxl
U3VwcG9ydC5iZWdpbigpLT5zZWNvbmQ7CisgICAgICAgIG1NdWx0aVNhbXBsZVN1cHBvcnQuZXJh
c2UobU11bHRpU2FtcGxlU3VwcG9ydC5iZWdpbigpKTsKKyAgICB9Cit9CisKK1JlbmRlcmVyOSAq
UmVuZGVyZXI5OjptYWtlUmVuZGVyZXI5KFJlbmRlcmVyICpyZW5kZXJlcikKK3sKKyAgICBBU1NF
UlQoSEFTX0RZTkFNSUNfVFlQRShyeDo6UmVuZGVyZXI5KiwgcmVuZGVyZXIpKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8cng6OlJlbmRlcmVyOSo+KHJlbmRlcmVyKTsKK30KKworRUdMaW50IFJl
bmRlcmVyOTo6aW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKCFpbml0aWFsaXplQ29tcGlsZXIoKSkK
KyAgICB7CisgICAgICAgIHJldHVybiBFR0xfTk9UX0lOSVRJQUxJWkVEOworICAgIH0KKworICAg
IGlmIChtU29mdHdhcmVEZXZpY2UpCisgICAgeworICAgICAgICBtRDNkOU1vZHVsZSA9IEdldE1v
ZHVsZUhhbmRsZShURVhUKCJzd2lmdHNoYWRlcl9kM2Q5LmRsbCIpKTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgbUQzZDlNb2R1bGUgPSBHZXRNb2R1bGVIYW5kbGUoVEVYVCgiZDNk
OS5kbGwiKSk7CisgICAgfQorCisgICAgaWYgKG1EM2Q5TW9kdWxlID09IE5VTEwpCisgICAgewor
ICAgICAgICBFUlIoIk5vIEQzRDkgbW9kdWxlIGZvdW5kIC0gYWJvcnRpbmchXG4iKTsKKyAgICAg
ICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAgfQorCisgICAgdHlwZWRlZiBIUkVT
VUxUIChXSU5BUEkgKkRpcmVjdDNEQ3JlYXRlOUV4RnVuYykoVUlOVCwgSURpcmVjdDNEOUV4Kiop
OworICAgIERpcmVjdDNEQ3JlYXRlOUV4RnVuYyBEaXJlY3QzRENyZWF0ZTlFeFB0ciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8RGlyZWN0M0RDcmVhdGU5RXhGdW5jPihHZXRQcm9jQWRkcmVzcyhtRDNkOU1v
ZHVsZSwgIkRpcmVjdDNEQ3JlYXRlOUV4IikpOworCisgICAgLy8gVXNlIERpcmVjdDNEOUV4IGlm
IGF2YWlsYWJsZS4gQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGlzIHZlcnNpb24gaXMgbGVzcworICAg
IC8vIGluY2xpbmVkIHRvIHJlcG9ydCBhIGxvc3QgY29udGV4dCwgZm9yIGV4YW1wbGUgd2hlbiB0
aGUgdXNlciBzd2l0Y2hlcworICAgIC8vIGRlc2t0b3AuIERpcmVjdDNEOUV4IGlzIGF2YWlsYWJs
ZSBpbiBXaW5kb3dzIFZpc3RhIGFuZCBsYXRlciBpZiBzdWl0YWJsZSBkcml2ZXJzIGFyZSBhdmFp
bGFibGUuCisgICAgaWYgKEFOR0xFX0VOQUJMRV9EM0Q5RVggJiYgRGlyZWN0M0RDcmVhdGU5RXhQ
dHIgJiYgU1VDQ0VFREVEKERpcmVjdDNEQ3JlYXRlOUV4UHRyKEQzRF9TREtfVkVSU0lPTiwgJm1E
M2Q5RXgpKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtRDNkOUV4KTsKKyAgICAgICAgbUQzZDlF
eC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lEaXJlY3QzRDksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
PigmbUQzZDkpKTsKKyAgICAgICAgQVNTRVJUKG1EM2Q5KTsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgbUQzZDkgPSBEaXJlY3QzRENyZWF0ZTkoRDNEX1NES19WRVJTSU9OKTsKKyAg
ICB9CisKKyAgICBpZiAoIW1EM2Q5KQorICAgIHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgY3Jl
YXRlIEQzRDkgZGV2aWNlIC0gYWJvcnRpbmchXG4iKTsKKyAgICAgICAgcmV0dXJuIEVHTF9OT1Rf
SU5JVElBTElaRUQ7CisgICAgfQorCisgICAgaWYgKG1EYyAhPSBOVUxMKQorICAgIHsKKyAgICAv
LyAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FOiBEZXRlcm1pbmUgd2hpY2ggYWRhcHRlciBp
bmRleCB0aGUgZGV2aWNlIGNvbnRleHQgY29ycmVzcG9uZHMgdG8KKyAgICB9CisKKyAgICBIUkVT
VUxUIHJlc3VsdDsKKworICAgIC8vIEdpdmUgdXAgb24gZ2V0dGluZyBkZXZpY2UgY2FwcyBhZnRl
ciBhYm91dCBvbmUgc2Vjb25kLgorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkKKyAg
ICB7CisgICAgICAgIHJlc3VsdCA9IG1EM2Q5LT5HZXREZXZpY2VDYXBzKG1BZGFwdGVyLCBtRGV2
aWNlVHlwZSwgJm1EZXZpY2VDYXBzKTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQor
ICAgICAgICB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlm
IChyZXN1bHQgPT0gRDNERVJSX05PVEFWQUlMQUJMRSkKKyAgICAgICAgeworICAgICAgICAgICAg
U2xlZXAoMTAwKTsgICAvLyBHaXZlIHRoZSBkcml2ZXIgc29tZSB0aW1lIHRvIGluaXRpYWxpemUv
cmVjb3ZlcgorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKEZBSUxFRChyZXN1bHQpKSAgIC8v
IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZLCBFX09VVE9GTUVNT1JZLCBEM0RFUlJfSU5WQUxJRERF
VklDRSwgb3IgYW5vdGhlciBlcnJvciB3ZSBjYW4ndCByZWNvdmVyIGZyb20KKyAgICAgICAgewor
ICAgICAgICAgICAgRVJSKCJmYWlsZWQgdG8gZ2V0IGRldmljZSBjYXBzICgweCV4KVxuIiwgcmVz
dWx0KTsKKyAgICAgICAgICAgIHJldHVybiBFR0xfTk9UX0lOSVRJQUxJWkVEOworICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKG1EZXZpY2VDYXBzLlBpeGVsU2hhZGVyVmVyc2lvbiA8IEQzRFBT
X1ZFUlNJT04oMiwgMCkpCisgICAgeworICAgICAgICBFUlIoIlJlbmRlcmVyIGRvZXMgbm90IHN1
cHBvcnQgUFMgMi4wLiBhYm9ydGluZyFcbiIpOworICAgICAgICByZXR1cm4gRUdMX05PVF9JTklU
SUFMSVpFRDsKKyAgICB9CisKKyAgICAvLyBXaGVuIERpcmVjdFg5IGlzIHJ1bm5pbmcgd2l0aCBh
biBvbGRlciBEaXJlY3RYOCBkcml2ZXIsIGEgU3RyZXRjaFJlY3QgZnJvbSBhIHJlZ3VsYXIgdGV4
dHVyZSB0byBhIHJlbmRlciB0YXJnZXQgdGV4dHVyZSBpcyBub3Qgc3VwcG9ydGVkLgorICAgIC8v
IFRoaXMgaXMgcmVxdWlyZWQgYnkgVGV4dHVyZTJEOjpjb252ZXJ0VG9SZW5kZXJUYXJnZXQuCisg
ICAgaWYgKChtRGV2aWNlQ2Fwcy5EZXZDYXBzMiAmIEQzRERFVkNBUFMyX0NBTl9TVFJFVENIUkVD
VF9GUk9NX1RFWFRVUkVTKSA9PSAwKQorICAgIHsKKyAgICAgICAgRVJSKCJSZW5kZXJlciBkb2Vz
IG5vdCBzdXBwb3J0IHN0cmV0Y3RyZWN0IGZyb20gdGV4dHVyZXMhXG4iKTsKKyAgICAgICAgcmV0
dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAgfQorCisgICAgbUQzZDktPkdldEFkYXB0ZXJJ
ZGVudGlmaWVyKG1BZGFwdGVyLCAwLCAmbUFkYXB0ZXJJZGVudGlmaWVyKTsKKworICAgIC8vIEFU
SSBjYXJkcyBvbiBYUCBoYXZlIHByb2JsZW1zIHdpdGggbm9uLXBvd2VyLW9mLXR3byB0ZXh0dXJl
cy4KKyAgICBtU3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlcyA9ICEobURldmljZUNhcHMuVGV4dHVy
ZUNhcHMgJiBEM0RQVEVYVFVSRUNBUFNfUE9XMikgJiYKKyAgICAgICAgIShtRGV2aWNlQ2Fwcy5U
ZXh0dXJlQ2FwcyAmIEQzRFBURVhUVVJFQ0FQU19DVUJFTUFQX1BPVzIpICYmCisgICAgICAgICEo
bURldmljZUNhcHMuVGV4dHVyZUNhcHMgJiBEM0RQVEVYVFVSRUNBUFNfTk9OUE9XMkNPTkRJVElP
TkFMKSAmJgorICAgICAgICAhKGdldENvbXBhcmFibGVPU1ZlcnNpb24oKSA8IHZlcnNpb25XaW5k
b3dzVmlzdGEgJiYgbUFkYXB0ZXJJZGVudGlmaWVyLlZlbmRvcklkID09IFZFTkRPUl9JRF9BTUQp
OworCisgICAgLy8gTXVzdCBzdXBwb3J0IGEgbWluaW11bSBvZiAyOjEgYW5pc290cm9weSBmb3Ig
bWF4IGFuaXNvdHJvcHkgdG8gYmUgY29uc2lkZXJlZCBzdXBwb3J0ZWQsIHBlciB0aGUgc3BlYwor
ICAgIG1TdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5ID0gKChtRGV2aWNlQ2Fwcy5SYXN0
ZXJDYXBzICYgRDNEUFJBU1RFUkNBUFNfQU5JU09UUk9QWSkgJiYgKG1EZXZpY2VDYXBzLk1heEFu
aXNvdHJvcHkgPj0gMikpOworCisgICAgbU1pblN3YXBJbnRlcnZhbCA9IDQ7CisgICAgbU1heFN3
YXBJbnRlcnZhbCA9IDA7CisKKyAgICBpZiAobURldmljZUNhcHMuUHJlc2VudGF0aW9uSW50ZXJ2
YWxzICYgRDNEUFJFU0VOVF9JTlRFUlZBTF9JTU1FRElBVEUpCisgICAgeworICAgICAgICBtTWlu
U3dhcEludGVydmFsID0gc3RkOjptaW4obU1pblN3YXBJbnRlcnZhbCwgMCk7CisgICAgICAgIG1N
YXhTd2FwSW50ZXJ2YWwgPSBzdGQ6Om1heChtTWF4U3dhcEludGVydmFsLCAwKTsKKyAgICB9Cisg
ICAgaWYgKG1EZXZpY2VDYXBzLlByZXNlbnRhdGlvbkludGVydmFscyAmIEQzRFBSRVNFTlRfSU5U
RVJWQUxfT05FKQorICAgIHsKKyAgICAgICAgbU1pblN3YXBJbnRlcnZhbCA9IHN0ZDo6bWluKG1N
aW5Td2FwSW50ZXJ2YWwsIDEpOworICAgICAgICBtTWF4U3dhcEludGVydmFsID0gc3RkOjptYXgo
bU1heFN3YXBJbnRlcnZhbCwgMSk7CisgICAgfQorICAgIGlmIChtRGV2aWNlQ2Fwcy5QcmVzZW50
YXRpb25JbnRlcnZhbHMgJiBEM0RQUkVTRU5UX0lOVEVSVkFMX1RXTykKKyAgICB7CisgICAgICAg
IG1NaW5Td2FwSW50ZXJ2YWwgPSBzdGQ6Om1pbihtTWluU3dhcEludGVydmFsLCAyKTsKKyAgICAg
ICAgbU1heFN3YXBJbnRlcnZhbCA9IHN0ZDo6bWF4KG1NYXhTd2FwSW50ZXJ2YWwsIDIpOworICAg
IH0KKyAgICBpZiAobURldmljZUNhcHMuUHJlc2VudGF0aW9uSW50ZXJ2YWxzICYgRDNEUFJFU0VO
VF9JTlRFUlZBTF9USFJFRSkKKyAgICB7CisgICAgICAgIG1NaW5Td2FwSW50ZXJ2YWwgPSBzdGQ6
Om1pbihtTWluU3dhcEludGVydmFsLCAzKTsKKyAgICAgICAgbU1heFN3YXBJbnRlcnZhbCA9IHN0
ZDo6bWF4KG1NYXhTd2FwSW50ZXJ2YWwsIDMpOworICAgIH0KKyAgICBpZiAobURldmljZUNhcHMu
UHJlc2VudGF0aW9uSW50ZXJ2YWxzICYgRDNEUFJFU0VOVF9JTlRFUlZBTF9GT1VSKQorICAgIHsK
KyAgICAgICAgbU1pblN3YXBJbnRlcnZhbCA9IHN0ZDo6bWluKG1NaW5Td2FwSW50ZXJ2YWwsIDQp
OworICAgICAgICBtTWF4U3dhcEludGVydmFsID0gc3RkOjptYXgobU1heFN3YXBJbnRlcnZhbCwg
NCk7CisgICAgfQorCisgICAgaW50IG1heCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBBcnJheVNpemUoUmVuZGVyVGFyZ2V0Rm9ybWF0cyk7ICsraSkKKyAgICB7CisgICAg
ICAgIGJvb2wgKm11bHRpc2FtcGxlQXJyYXkgPSBuZXcgYm9vbFtEM0RNVUxUSVNBTVBMRV8xNl9T
QU1QTEVTICsgMV07CisgICAgICAgIGdldE11bHRpU2FtcGxlU3VwcG9ydChSZW5kZXJUYXJnZXRG
b3JtYXRzW2ldLCBtdWx0aXNhbXBsZUFycmF5KTsKKyAgICAgICAgbU11bHRpU2FtcGxlU3VwcG9y
dFtSZW5kZXJUYXJnZXRGb3JtYXRzW2ldXSA9IG11bHRpc2FtcGxlQXJyYXk7CisKKyAgICAgICAg
Zm9yIChpbnQgaiA9IEQzRE1VTFRJU0FNUExFXzE2X1NBTVBMRVM7IGogPj0gMDsgLS1qKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAobXVsdGlzYW1wbGVBcnJheVtqXSAmJiBqICE9IEQzRE1V
TFRJU0FNUExFX05PTk1BU0tBQkxFICYmIGogPiBtYXgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgbWF4ID0gajsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKERlcHRoU3RlbmNpbEZvcm1h
dHMpOyArK2kpCisgICAgeworICAgICAgICBpZiAoRGVwdGhTdGVuY2lsRm9ybWF0c1tpXSA9PSBE
M0RGTVRfVU5LTk9XTikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGJvb2wgKm11
bHRpc2FtcGxlQXJyYXkgPSBuZXcgYm9vbFtEM0RNVUxUSVNBTVBMRV8xNl9TQU1QTEVTICsgMV07
CisgICAgICAgIGdldE11bHRpU2FtcGxlU3VwcG9ydChEZXB0aFN0ZW5jaWxGb3JtYXRzW2ldLCBt
dWx0aXNhbXBsZUFycmF5KTsKKyAgICAgICAgbU11bHRpU2FtcGxlU3VwcG9ydFtEZXB0aFN0ZW5j
aWxGb3JtYXRzW2ldXSA9IG11bHRpc2FtcGxlQXJyYXk7CisKKyAgICAgICAgZm9yIChpbnQgaiA9
IEQzRE1VTFRJU0FNUExFXzE2X1NBTVBMRVM7IGogPj0gMDsgLS1qKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAobXVsdGlzYW1wbGVBcnJheVtqXSAmJiBqICE9IEQzRE1VTFRJU0FNUExFX05P
Tk1BU0tBQkxFICYmIGogPiBtYXgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWF4
ID0gajsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIG1NYXhTdXBwb3J0
ZWRTYW1wbGVzID0gbWF4OworCisgICAgc3RhdGljIGNvbnN0IFRDSEFSIHdpbmRvd05hbWVbXSA9
IFRFWFQoIkFuZ2xlSGlkZGVuV2luZG93Iik7CisgICAgc3RhdGljIGNvbnN0IFRDSEFSIGNsYXNz
TmFtZVtdID0gVEVYVCgiU1RBVElDIik7CisKKyAgICBtRGV2aWNlV2luZG93ID0gQ3JlYXRlV2lu
ZG93RXgoV1NfRVhfTk9BQ1RJVkFURSwgY2xhc3NOYW1lLCB3aW5kb3dOYW1lLCBXU19ESVNBQkxF
RCB8IFdTX1BPUFVQLCAwLCAwLCAxLCAxLCBIV05EX01FU1NBR0UsIE5VTEwsIEdldE1vZHVsZUhh
bmRsZShOVUxMKSwgTlVMTCk7CisKKyAgICBEM0RQUkVTRU5UX1BBUkFNRVRFUlMgcHJlc2VudFBh
cmFtZXRlcnMgPSBnZXREZWZhdWx0UHJlc2VudFBhcmFtZXRlcnMoKTsKKyAgICBEV09SRCBiZWhh
dmlvckZsYWdzID0gRDNEQ1JFQVRFX0ZQVV9QUkVTRVJWRSB8IEQzRENSRUFURV9OT1dJTkRPV0NI
QU5HRVM7CisKKyAgICByZXN1bHQgPSBtRDNkOS0+Q3JlYXRlRGV2aWNlKG1BZGFwdGVyLCBtRGV2
aWNlVHlwZSwgbURldmljZVdpbmRvdywgYmVoYXZpb3JGbGFncyB8IEQzRENSRUFURV9IQVJEV0FS
RV9WRVJURVhQUk9DRVNTSU5HIHwgRDNEQ1JFQVRFX1BVUkVERVZJQ0UsICZwcmVzZW50UGFyYW1l
dGVycywgJm1EZXZpY2UpOworICAgIGlmIChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1P
UlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkgfHwgcmVzdWx0ID09IEQzREVSUl9ERVZJQ0VM
T1NUKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVHTF9CQURfQUxMT0M7CisgICAgfQorCisgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gbUQzZDktPkNyZWF0
ZURldmljZShtQWRhcHRlciwgbURldmljZVR5cGUsIG1EZXZpY2VXaW5kb3csIGJlaGF2aW9yRmxh
Z3MgfCBEM0RDUkVBVEVfU09GVFdBUkVfVkVSVEVYUFJPQ0VTU0lORywgJnByZXNlbnRQYXJhbWV0
ZXJzLCAmbURldmljZSk7CisKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8
IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZIHx8IHJlc3VsdCA9PSBEM0RFUlJfTk9UQVZBSUxBQkxF
IHx8IHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTE9TVCk7CisgICAgICAgICAgICByZXR1cm4gRUdM
X0JBRF9BTExPQzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtRDNkOUV4KQorICAgIHsK
KyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+UXVlcnlJbnRlcmZhY2UoSUlEX0lEaXJlY3QzRERl
dmljZTlFeCwgKHZvaWQqKikgJm1EZXZpY2VFeCk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQo
cmVzdWx0KSk7CisgICAgfQorCisgICAgbVZlcnRleFNoYWRlckNhY2hlLmluaXRpYWxpemUobURl
dmljZSk7CisgICAgbVBpeGVsU2hhZGVyQ2FjaGUuaW5pdGlhbGl6ZShtRGV2aWNlKTsKKworICAg
IC8vIENoZWNrIG9jY2x1c2lvbiBxdWVyeSBzdXBwb3J0CisgICAgSURpcmVjdDNEUXVlcnk5ICpv
Y2NsdXNpb25RdWVyeSA9IE5VTEw7CisgICAgaWYgKFNVQ0NFRURFRChtRGV2aWNlLT5DcmVhdGVR
dWVyeShEM0RRVUVSWVRZUEVfT0NDTFVTSU9OLCAmb2NjbHVzaW9uUXVlcnkpKSAmJiBvY2NsdXNp
b25RdWVyeSkKKyAgICB7CisgICAgICAgIG9jY2x1c2lvblF1ZXJ5LT5SZWxlYXNlKCk7CisgICAg
ICAgIG1PY2NsdXNpb25RdWVyeVN1cHBvcnQgPSB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICBtT2NjbHVzaW9uUXVlcnlTdXBwb3J0ID0gZmFsc2U7CisgICAgfQorCisgICAg
Ly8gQ2hlY2sgZXZlbnQgcXVlcnkgc3VwcG9ydAorICAgIElEaXJlY3QzRFF1ZXJ5OSAqZXZlbnRR
dWVyeSA9IE5VTEw7CisgICAgaWYgKFNVQ0NFRURFRChtRGV2aWNlLT5DcmVhdGVRdWVyeShEM0RR
VUVSWVRZUEVfRVZFTlQsICZldmVudFF1ZXJ5KSkgJiYgZXZlbnRRdWVyeSkKKyAgICB7CisgICAg
ICAgIGV2ZW50UXVlcnktPlJlbGVhc2UoKTsKKyAgICAgICAgbUV2ZW50UXVlcnlTdXBwb3J0ID0g
dHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbUV2ZW50UXVlcnlTdXBwb3J0
ID0gZmFsc2U7CisgICAgfQorCisgICAgRDNERElTUExBWU1PREUgY3VycmVudERpc3BsYXlNb2Rl
OworICAgIG1EM2Q5LT5HZXRBZGFwdGVyRGlzcGxheU1vZGUobUFkYXB0ZXIsICZjdXJyZW50RGlz
cGxheU1vZGUpOworCisgICAgLy8gQ2hlY2sgdmVydGV4IHRleHR1cmUgc3VwcG9ydAorICAgIC8v
IE9ubHkgRGlyZWN0M0QgMTAgcmVhZHkgZGV2aWNlcyBzdXBwb3J0IGFsbCB0aGUgbmVjZXNzYXJ5
IHZlcnRleCB0ZXh0dXJlIGZvcm1hdHMuCisgICAgLy8gV2UgdGVzdCB0aGlzIHVzaW5nIEQzRDkg
YnkgY2hlY2tpbmcgc3VwcG9ydCBmb3IgdGhlIFIxNkYgZm9ybWF0LgorICAgIG1WZXJ0ZXhUZXh0
dXJlU3VwcG9ydCA9IG1EZXZpY2VDYXBzLlBpeGVsU2hhZGVyVmVyc2lvbiA+PSBEM0RQU19WRVJT
SU9OKDMsIDApICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VDQ0VFREVEKG1EM2Q5
LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5
TW9kZS5Gb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEM0RVU0FHRV9RVUVSWV9WRVJURVhURVhUVVJFLCBEM0RSVFlQ
RV9URVhUVVJFLCBEM0RGTVRfUjE2RikpOworCisgICAgLy8gQ2hlY2sgZGVwdGggdGV4dHVyZSBz
dXBwb3J0CisgICAgLy8gd2UgdXNlIElOVFogZm9yIGRlcHRoIHRleHR1cmVzIGluIERpcmVjdDNE
OQorICAgIC8vIHdlIGFsc28gd2FudCBOVUxMIHRleHR1cmUgc3VwcG9ydCB0byBlbnN1cmUgdGhl
IHdlIGNhbiBtYWtlIGRlcHRoLW9ubHkgRkJPcworICAgIC8vIHNlZSBodHRwOi8vYXJhcy1wLmlu
Zm8vdGV4dHMvRDNEOUdQVUhhY2tzLmh0bWwKKyAgICBtRGVwdGhUZXh0dXJlU3VwcG9ydCA9IFNV
Q0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBj
dXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RVU0FHRV9ERVBUSFNURU5DSUwsIEQz
RFJUWVBFX1RFWFRVUkUsIEQzREZNVF9JTlRaKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VU
eXBlLCBjdXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RVU0FHRV9SRU5ERVJUQVJH
RVQsIEQzRFJUWVBFX1NVUkZBQ0UsIEQzREZNVF9OVUxMKSk7CisKKyAgICAvLyBDaGVjayAzMiBi
aXQgZmxvYXRpbmcgcG9pbnQgdGV4dHVyZSBzdXBwb3J0CisgICAgbUZsb2F0MzJGaWx0ZXJTdXBw
b3J0ID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmlj
ZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIEQzRFVTQUdFX1FVRVJZX0ZJTFRFUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEQzRFJUWVBFX1RFWFRVUkUsIEQzREZNVF9BMzJCMzJHMzJSMzJGKSkgJiYKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0
KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgRDNEVVNB
R0VfUVVFUllfRklMVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRDNEUlRZUEVfQ1VCRVRFWFRVUkUsIEQzREZNVF9BMzJC
MzJHMzJSMzJGKSk7CisKKyAgICBtRmxvYXQzMlJlbmRlclN1cHBvcnQgPSBTVUNDRUVERUQobUQz
ZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3Bs
YXlNb2RlLkZvcm1hdCwgRDNEVVNBR0VfUkVOREVSVEFSR0VULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEUlRZUEVfVEVY
VFVSRSwgRDNERk1UX0EzMkIzMkczMlIzMkYpKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VU
eXBlLCBjdXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9SRU5ERVJUQVJHRVQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEM0RSVFlQRV9DVUJFVEVYVFVSRSwgRDNERk1UX0EzMkIzMkczMlIzMkYpKTsKKworICAg
IGlmICghbUZsb2F0MzJGaWx0ZXJTdXBwb3J0ICYmICFtRmxvYXQzMlJlbmRlclN1cHBvcnQpCisg
ICAgeworICAgICAgICBtRmxvYXQzMlRleHR1cmVTdXBwb3J0ID0gU1VDQ0VFREVEKG1EM2Q5LT5D
aGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9k
ZS5Gb3JtYXQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFJUWVBFX1RFWFRVUkUsIEQzREZNVF9BMzJCMzJH
MzJSMzJGKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVQ0NFRURFRCht
RDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBjdXJyZW50RGlz
cGxheU1vZGUuRm9ybWF0LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RSVFlQRV9DVUJFVEVYVFVSRSwgRDNE
Rk1UX0EzMkIzMkczMlIzMkYpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbUZs
b2F0MzJUZXh0dXJlU3VwcG9ydCA9IHRydWU7CisgICAgfQorCisgICAgLy8gQ2hlY2sgMTYgYml0
IGZsb2F0aW5nIHBvaW50IHRleHR1cmUgc3VwcG9ydAorICAgIG1GbG9hdDE2RmlsdGVyU3VwcG9y
dCA9IFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VU
eXBlLCBjdXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9RVUVSWV9GSUxURVIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEM0RSVFlQRV9URVhUVVJFLCBEM0RGTVRfQTE2QjE2RzE2UjE2RikpICYmCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdCht
QWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIEQzRFVTQUdF
X1FVRVJZX0ZJTFRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEQzRFJUWVBFX0NVQkVURVhUVVJFLCBEM0RGTVRfQTE2QjE2
RzE2UjE2RikpOworCisgICAgbUZsb2F0MTZSZW5kZXJTdXBwb3J0ID0gU1VDQ0VFREVEKG1EM2Q5
LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5
TW9kZS5Gb3JtYXQsIEQzRFVTQUdFX1JFTkRFUlRBUkdFVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFJUWVBFX1RFWFRV
UkUsIEQzREZNVF9BMTZCMTZHMTZSMTZGKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlw
ZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgRDNEVVNBR0VfUkVOREVSVEFSR0VULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRDNEUlRZUEVfQ1VCRVRFWFRVUkUsIEQzREZNVF9BMTZCMTZHMTZSMTZGKSk7CisKKyAgICBp
ZiAoIW1GbG9hdDE2RmlsdGVyU3VwcG9ydCAmJiAhbUZsb2F0MTZSZW5kZXJTdXBwb3J0KQorICAg
IHsKKyAgICAgICAgbUZsb2F0MTZUZXh0dXJlU3VwcG9ydCA9IFNVQ0NFRURFRChtRDNkOS0+Q2hl
Y2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBjdXJyZW50RGlzcGxheU1vZGUu
Rm9ybWF0LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEM0RSVFlQRV9URVhUVVJFLCBEM0RGTVRfQTE2QjE2RzE2
UjE2RikpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVUNDRUVERUQobUQz
ZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3Bs
YXlNb2RlLkZvcm1hdCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEUlRZUEVfQ1VCRVRFWFRVUkUsIEQzREZN
VF9BMTZCMTZHMTZSMTZGKSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1GbG9h
dDE2VGV4dHVyZVN1cHBvcnQgPSB0cnVlOworICAgIH0KKworICAgIC8vIENoZWNrIERYVCB0ZXh0
dXJlIHN1cHBvcnQKKyAgICBtRFhUMVRleHR1cmVTdXBwb3J0ID0gU1VDQ0VFREVEKG1EM2Q5LT5D
aGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9k
ZS5Gb3JtYXQsIDAsIEQzRFJUWVBFX1RFWFRVUkUsIEQzREZNVF9EWFQxKSk7CisgICAgbURYVDNU
ZXh0dXJlU3VwcG9ydCA9IFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0
ZXIsIG1EZXZpY2VUeXBlLCBjdXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCAwLCBEM0RSVFlQRV9U
RVhUVVJFLCBEM0RGTVRfRFhUMykpOworICAgIG1EWFQ1VGV4dHVyZVN1cHBvcnQgPSBTVUNDRUVE
RUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVu
dERpc3BsYXlNb2RlLkZvcm1hdCwgMCwgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0RYVDUpKTsK
KworICAgIC8vIENoZWNrIGx1bWluYW5jZVthbHBoYV0gdGV4dHVyZSBzdXBwb3J0CisgICAgbUx1
bWluYW5jZVRleHR1cmVTdXBwb3J0ID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1h
dChtQWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIDAsIEQz
RFJUWVBFX1RFWFRVUkUsIEQzREZNVF9MOCkpOworICAgIG1MdW1pbmFuY2VBbHBoYVRleHR1cmVT
dXBwb3J0ID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURl
dmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIDAsIEQzRFJUWVBFX1RFWFRVUkUs
IEQzREZNVF9BOEw4KSk7CisKKyAgICBpbml0aWFsaXplRGV2aWNlKCk7CisKKyAgICByZXR1cm4g
RUdMX1NVQ0NFU1M7Cit9CisKKy8vIGRvIGFueSBvbmUtdGltZSBkZXZpY2UgaW5pdGlhbGl6YXRp
b24KKy8vIE5PVEU6IHRoaXMgaXMgYWxzbyBuZWVkZWQgYWZ0ZXIgYSBkZXZpY2UgbG9zdC9yZXNl
dAorLy8gdG8gcmVzZXQgdGhlIHNjZW5lIHN0YXR1cyBhbmQgZW5zdXJlIHRoZSBkZWZhdWx0IHN0
YXRlcyBhcmUgcmVzZXQuCit2b2lkIFJlbmRlcmVyOTo6aW5pdGlhbGl6ZURldmljZSgpCit7Cisg
ICAgLy8gUGVybWFuZW50IG5vbi1kZWZhdWx0IHN0YXRlcworICAgIG1EZXZpY2UtPlNldFJlbmRl
clN0YXRlKEQzRFJTX1BPSU5UU1BSSVRFRU5BQkxFLCBUUlVFKTsKKyAgICBtRGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShEM0RSU19MQVNUUElYRUwsIEZBTFNFKTsKKworICAgIGlmIChtRGV2aWNlQ2Fw
cy5QaXhlbFNoYWRlclZlcnNpb24gPj0gRDNEUFNfVkVSU0lPTigzLCAwKSkKKyAgICB7CisgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1BPSU5UU0laRV9NQVgsIChEV09SRCYp
bURldmljZUNhcHMuTWF4UG9pbnRTaXplKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfUE9JTlRTSVpFX01BWCwgMHgzRjgwMDAw
MCk7ICAgLy8gMS4wZgorICAgIH0KKworICAgIG1hcmtBbGxTdGF0ZURpcnR5KCk7CisKKyAgICBt
U2NlbmVTdGFydGVkID0gZmFsc2U7CisKKyAgICBBU1NFUlQoIW1CbGl0ICYmICFtVmVydGV4RGF0
YU1hbmFnZXIgJiYgIW1JbmRleERhdGFNYW5hZ2VyKTsKKyAgICBtQmxpdCA9IG5ldyBCbGl0KHRo
aXMpOworICAgIG1WZXJ0ZXhEYXRhTWFuYWdlciA9IG5ldyByeDo6VmVydGV4RGF0YU1hbmFnZXIo
dGhpcyk7CisgICAgbUluZGV4RGF0YU1hbmFnZXIgPSBuZXcgcng6OkluZGV4RGF0YU1hbmFnZXIo
dGhpcyk7Cit9CisKK0QzRFBSRVNFTlRfUEFSQU1FVEVSUyBSZW5kZXJlcjk6OmdldERlZmF1bHRQ
cmVzZW50UGFyYW1ldGVycygpCit7CisgICAgRDNEUFJFU0VOVF9QQVJBTUVURVJTIHByZXNlbnRQ
YXJhbWV0ZXJzID0gezB9OworCisgICAgLy8gVGhlIGRlZmF1bHQgc3dhcCBjaGFpbiBpcyBuZXZl
ciBhY3R1YWxseSB1c2VkLiBTdXJmYWNlIHdpbGwgY3JlYXRlIGEgbmV3IHN3YXAgY2hhaW4gd2l0
aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMuCisgICAgcHJlc2VudFBhcmFtZXRlcnMuQXV0b0RlcHRo
U3RlbmNpbEZvcm1hdCA9IEQzREZNVF9VTktOT1dOOworICAgIHByZXNlbnRQYXJhbWV0ZXJzLkJh
Y2tCdWZmZXJDb3VudCA9IDE7CisgICAgcHJlc2VudFBhcmFtZXRlcnMuQmFja0J1ZmZlckZvcm1h
dCA9IEQzREZNVF9VTktOT1dOOworICAgIHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZmZXJXaWR0
aCA9IDE7CisgICAgcHJlc2VudFBhcmFtZXRlcnMuQmFja0J1ZmZlckhlaWdodCA9IDE7CisgICAg
cHJlc2VudFBhcmFtZXRlcnMuRW5hYmxlQXV0b0RlcHRoU3RlbmNpbCA9IEZBTFNFOworICAgIHBy
ZXNlbnRQYXJhbWV0ZXJzLkZsYWdzID0gMDsKKyAgICBwcmVzZW50UGFyYW1ldGVycy5oRGV2aWNl
V2luZG93ID0gbURldmljZVdpbmRvdzsKKyAgICBwcmVzZW50UGFyYW1ldGVycy5NdWx0aVNhbXBs
ZVF1YWxpdHkgPSAwOworICAgIHByZXNlbnRQYXJhbWV0ZXJzLk11bHRpU2FtcGxlVHlwZSA9IEQz
RE1VTFRJU0FNUExFX05PTkU7CisgICAgcHJlc2VudFBhcmFtZXRlcnMuUHJlc2VudGF0aW9uSW50
ZXJ2YWwgPSBEM0RQUkVTRU5UX0lOVEVSVkFMX0RFRkFVTFQ7CisgICAgcHJlc2VudFBhcmFtZXRl
cnMuU3dhcEVmZmVjdCA9IEQzRFNXQVBFRkZFQ1RfRElTQ0FSRDsKKyAgICBwcmVzZW50UGFyYW1l
dGVycy5XaW5kb3dlZCA9IFRSVUU7CisKKyAgICByZXR1cm4gcHJlc2VudFBhcmFtZXRlcnM7Cit9
CisKK2ludCBSZW5kZXJlcjk6OmdlbmVyYXRlQ29uZmlncyhDb25maWdEZXNjICoqY29uZmlnRGVz
Y0xpc3QpCit7CisgICAgRDNERElTUExBWU1PREUgY3VycmVudERpc3BsYXlNb2RlOworICAgIG1E
M2Q5LT5HZXRBZGFwdGVyRGlzcGxheU1vZGUobUFkYXB0ZXIsICZjdXJyZW50RGlzcGxheU1vZGUp
OworCisgICAgdW5zaWduZWQgaW50IG51bVJlbmRlckZvcm1hdHMgPSBBcnJheVNpemUoUmVuZGVy
VGFyZ2V0Rm9ybWF0cyk7CisgICAgdW5zaWduZWQgaW50IG51bURlcHRoRm9ybWF0cyA9IEFycmF5
U2l6ZShEZXB0aFN0ZW5jaWxGb3JtYXRzKTsKKyAgICAoKmNvbmZpZ0Rlc2NMaXN0KSA9IG5ldyBD
b25maWdEZXNjW251bVJlbmRlckZvcm1hdHMgKiBudW1EZXB0aEZvcm1hdHNdOworICAgIGludCBu
dW1Db25maWdzID0gMDsKKworICAgIGZvciAodW5zaWduZWQgaW50IGZvcm1hdEluZGV4ID0gMDsg
Zm9ybWF0SW5kZXggPCBudW1SZW5kZXJGb3JtYXRzOyBmb3JtYXRJbmRleCsrKQorICAgIHsKKyAg
ICAgICAgRDNERk9STUFUIHJlbmRlclRhcmdldEZvcm1hdCA9IFJlbmRlclRhcmdldEZvcm1hdHNb
Zm9ybWF0SW5kZXhdOworCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbUQzZDktPkNoZWNrRGV2
aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1h
dCwgRDNEVVNBR0VfUkVOREVSVEFSR0VULCBEM0RSVFlQRV9TVVJGQUNFLCByZW5kZXJUYXJnZXRG
b3JtYXQpOworCisgICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKKyAgICAgICAgeworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZGVwdGhTdGVuY2lsSW5kZXggPSAwOyBkZXB0aFN0
ZW5jaWxJbmRleCA8IG51bURlcHRoRm9ybWF0czsgZGVwdGhTdGVuY2lsSW5kZXgrKykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBEM0RGT1JNQVQgZGVwdGhTdGVuY2lsRm9ybWF0ID0g
RGVwdGhTdGVuY2lsRm9ybWF0c1tkZXB0aFN0ZW5jaWxJbmRleF07CisgICAgICAgICAgICAgICAg
SFJFU1VMVCByZXN1bHQgPSBEM0RfT0s7CisKKyAgICAgICAgICAgICAgICBpZihkZXB0aFN0ZW5j
aWxGb3JtYXQgIT0gRDNERk1UX1VOS05PV04pCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1E
ZXZpY2VUeXBlLCBjdXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9ERVBUSFNURU5D
SUwsIEQzRFJUWVBFX1NVUkZBQ0UsIGRlcHRoU3RlbmNpbEZvcm1hdCk7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYoZGVwdGhTdGVuY2lsRm9ybWF0ICE9IEQz
REZNVF9VTktOT1dOKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgPSBtRDNkOS0+Q2hlY2tEZXB0aFN0ZW5jaWxNYXRjaChtQWRhcHRlciwgbURl
dmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIHJlbmRlclRhcmdldEZvcm1hdCwg
ZGVwdGhTdGVuY2lsRm9ybWF0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnRGVzYyBuZXdDb25maWc7CisgICAgICAgICAg
ICAgICAgICAgICAgICBuZXdDb25maWcucmVuZGVyVGFyZ2V0Rm9ybWF0ID0gZDNkOV9nbDo6Q29u
dmVydEJhY2tCdWZmZXJGb3JtYXQocmVuZGVyVGFyZ2V0Rm9ybWF0KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG5ld0NvbmZpZy5kZXB0aFN0ZW5jaWxGb3JtYXQgPSBkM2Q5X2dsOjpDb252ZXJ0
RGVwdGhTdGVuY2lsRm9ybWF0KGRlcHRoU3RlbmNpbEZvcm1hdCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXdDb25maWcubXVsdGlTYW1wbGUgPSAwOyAvLyBGSVhNRTogZW51bWVyYXRlIG11
bHRpLXNhbXBsaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb25maWcuZmFzdENvbmZp
ZyA9IChjdXJyZW50RGlzcGxheU1vZGUuRm9ybWF0ID09IHJlbmRlclRhcmdldEZvcm1hdCk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICgqY29uZmlnRGVzY0xpc3QpW251bUNvbmZpZ3MrK10g
PSBuZXdDb25maWc7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbnVtQ29uZmlnczsK
K30KKwordm9pZCBSZW5kZXJlcjk6OmRlbGV0ZUNvbmZpZ3MoQ29uZmlnRGVzYyAqY29uZmlnRGVz
Y0xpc3QpCit7CisgICAgZGVsZXRlIFtdIChjb25maWdEZXNjTGlzdCk7Cit9CisKK3ZvaWQgUmVu
ZGVyZXI5OjpzdGFydFNjZW5lKCkKK3sKKyAgICBpZiAoIW1TY2VuZVN0YXJ0ZWQpCisgICAgewor
ICAgICAgICBsb25nIHJlc3VsdCA9IG1EZXZpY2UtPkJlZ2luU2NlbmUoKTsKKyAgICAgICAgaWYg
KFNVQ0NFRURFRChyZXN1bHQpKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIGRlZmVuc2l2ZSBj
aGVja2luZyBhZ2FpbnN0IHRoZSBkZXZpY2UgYmVpbmcKKyAgICAgICAgICAgIC8vIGxvc3QgYXQg
dW5leHBlY3RlZCB0aW1lcy4KKyAgICAgICAgICAgIG1TY2VuZVN0YXJ0ZWQgPSB0cnVlOworICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIFJlbmRlcmVyOTo6ZW5kU2NlbmUoKQoreworICAgIGlm
IChtU2NlbmVTdGFydGVkKQorICAgIHsKKyAgICAgICAgLy8gRW5kU2NlbmUgY2FuIGZhaWwgaWYg
dGhlIGRldmljZSB3YXMgbG9zdCwgZm9yIGV4YW1wbGUgZHVlCisgICAgICAgIC8vIHRvIGEgVERS
IGR1cmluZyBhIGRyYXcgY2FsbC4KKyAgICAgICAgbURldmljZS0+RW5kU2NlbmUoKTsKKyAgICAg
ICAgbVNjZW5lU3RhcnRlZCA9IGZhbHNlOworICAgIH0KK30KKwordm9pZCBSZW5kZXJlcjk6OnN5
bmMoYm9vbCBibG9jaykKK3sKKyAgICBIUkVTVUxUIHJlc3VsdDsKKworICAgIElEaXJlY3QzRFF1
ZXJ5OSogcXVlcnkgPSBhbGxvY2F0ZUV2ZW50UXVlcnkoKTsKKyAgICBpZiAoIXF1ZXJ5KQorICAg
IHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJlc3VsdCA9IHF1ZXJ5LT5Jc3N1ZShE
M0RJU1NVRV9FTkQpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICBkbwor
ICAgIHsKKyAgICAgICAgcmVzdWx0ID0gcXVlcnktPkdldERhdGEoTlVMTCwgMCwgRDNER0VUREFU
QV9GTFVTSCk7CisKKyAgICAgICAgaWYoYmxvY2sgJiYgcmVzdWx0ID09IFNfRkFMU0UpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIC8vIEtlZXAgcG9sbGluZywgYnV0IGFsbG93IG90aGVyIHRocmVh
ZHMgdG8gZG8gc29tZXRoaW5nIHVzZWZ1bCBmaXJzdAorICAgICAgICAgICAgU2xlZXAoMCk7Cisg
ICAgICAgICAgICAvLyBleHBsaWNpdGx5IGNoZWNrIGZvciBkZXZpY2UgbG9zcworICAgICAgICAg
ICAgLy8gc29tZSBkcml2ZXJzIHNlZW0gdG8gcmV0dXJuIFNfRkFMU0UgZXZlbiBpZiB0aGUgZGV2
aWNlIGlzIGxvc3QKKyAgICAgICAgICAgIC8vIGluc3RlYWQgb2YgRDNERVJSX0RFVklDRUxPU1Qg
bGlrZSB0aGV5IHNob3VsZAorICAgICAgICAgICAgaWYgKHRlc3REZXZpY2VMb3N0KGZhbHNlKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBEM0RFUlJfREVWSUNFTE9T
VDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB3aGlsZShibG9jayAmJiBy
ZXN1bHQgPT0gU19GQUxTRSk7CisKKyAgICBmcmVlRXZlbnRRdWVyeShxdWVyeSk7CisKKyAgICBp
ZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAgICB7CisgICAgICAgIG5vdGlm
eURldmljZUxvc3QoKTsKKyAgICB9Cit9CisKK1N3YXBDaGFpbiAqUmVuZGVyZXI5OjpjcmVhdGVT
d2FwQ2hhaW4oSFdORCB3aW5kb3csIEhBTkRMRSBzaGFyZUhhbmRsZSwgR0xlbnVtIGJhY2tCdWZm
ZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCkKK3sKKyAgICByZXR1cm4gbmV3IHJ4
OjpTd2FwQ2hhaW45KHRoaXMsIHdpbmRvdywgc2hhcmVIYW5kbGUsIGJhY2tCdWZmZXJGb3JtYXQs
IGRlcHRoQnVmZmVyRm9ybWF0KTsKK30KKworSURpcmVjdDNEUXVlcnk5KiBSZW5kZXJlcjk6OmFs
bG9jYXRlRXZlbnRRdWVyeSgpCit7CisgICAgSURpcmVjdDNEUXVlcnk5ICpxdWVyeSA9IE5VTEw7
CisKKyAgICBpZiAobUV2ZW50UXVlcnlQb29sLmVtcHR5KCkpCisgICAgeworICAgICAgICBIUkVT
VUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9FVkVOVCwgJnF1
ZXJ5KTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgcXVlcnkgPSBtRXZlbnRRdWVyeVBvb2wuYmFjaygpOworICAgICAg
ICBtRXZlbnRRdWVyeVBvb2wucG9wX2JhY2soKTsKKyAgICB9CisKKyAgICByZXR1cm4gcXVlcnk7
Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjpmcmVlRXZlbnRRdWVyeShJRGlyZWN0M0RRdWVyeTkqIHF1
ZXJ5KQoreworICAgIGlmIChtRXZlbnRRdWVyeVBvb2wuc2l6ZSgpID4gMTAwMCkKKyAgICB7Cisg
ICAgICAgIHF1ZXJ5LT5SZWxlYXNlKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IG1FdmVudFF1ZXJ5UG9vbC5wdXNoX2JhY2socXVlcnkpOworICAgIH0KK30KKworSURpcmVjdDNE
VmVydGV4U2hhZGVyOSAqUmVuZGVyZXI5OjpjcmVhdGVWZXJ0ZXhTaGFkZXIoY29uc3QgRFdPUkQg
KmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoKQoreworICAgIHJldHVybiBtVmVydGV4U2hhZGVyQ2Fj
aGUuY3JlYXRlKGZ1bmN0aW9uLCBsZW5ndGgpOworfQorCitJRGlyZWN0M0RQaXhlbFNoYWRlcjkg
KlJlbmRlcmVyOTo6Y3JlYXRlUGl4ZWxTaGFkZXIoY29uc3QgRFdPUkQgKmZ1bmN0aW9uLCBzaXpl
X3QgbGVuZ3RoKQoreworICAgIHJldHVybiBtUGl4ZWxTaGFkZXJDYWNoZS5jcmVhdGUoZnVuY3Rp
b24sIGxlbmd0aCk7Cit9CisKK0hSRVNVTFQgUmVuZGVyZXI5OjpjcmVhdGVWZXJ0ZXhCdWZmZXIo
VUlOVCBMZW5ndGgsIERXT1JEIFVzYWdlLCBJRGlyZWN0M0RWZXJ0ZXhCdWZmZXI5ICoqcHBWZXJ0
ZXhCdWZmZXIpCit7CisgICAgRDNEUE9PTCBQb29sID0gZ2V0QnVmZmVyUG9vbChVc2FnZSk7Cisg
ICAgcmV0dXJuIG1EZXZpY2UtPkNyZWF0ZVZlcnRleEJ1ZmZlcihMZW5ndGgsIFVzYWdlLCAwLCBQ
b29sLCBwcFZlcnRleEJ1ZmZlciwgTlVMTCk7Cit9CisKK1ZlcnRleEJ1ZmZlciAqUmVuZGVyZXI5
OjpjcmVhdGVWZXJ0ZXhCdWZmZXIoKQoreworICAgIHJldHVybiBuZXcgVmVydGV4QnVmZmVyOSh0
aGlzKTsKK30KKworSFJFU1VMVCBSZW5kZXJlcjk6OmNyZWF0ZUluZGV4QnVmZmVyKFVJTlQgTGVu
Z3RoLCBEV09SRCBVc2FnZSwgRDNERk9STUFUIEZvcm1hdCwgSURpcmVjdDNESW5kZXhCdWZmZXI5
ICoqcHBJbmRleEJ1ZmZlcikKK3sKKyAgICBEM0RQT09MIFBvb2wgPSBnZXRCdWZmZXJQb29sKFVz
YWdlKTsKKyAgICByZXR1cm4gbURldmljZS0+Q3JlYXRlSW5kZXhCdWZmZXIoTGVuZ3RoLCBVc2Fn
ZSwgRm9ybWF0LCBQb29sLCBwcEluZGV4QnVmZmVyLCBOVUxMKTsKK30KKworSW5kZXhCdWZmZXIg
KlJlbmRlcmVyOTo6Y3JlYXRlSW5kZXhCdWZmZXIoKQoreworICAgIHJldHVybiBuZXcgSW5kZXhC
dWZmZXI5KHRoaXMpOworfQorCitCdWZmZXJTdG9yYWdlICpSZW5kZXJlcjk6OmNyZWF0ZUJ1ZmZl
clN0b3JhZ2UoKQoreworICAgIHJldHVybiBuZXcgQnVmZmVyU3RvcmFnZTkoKTsKK30KKworUXVl
cnlJbXBsICpSZW5kZXJlcjk6OmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKQoreworICAgIHJldHVy
biBuZXcgUXVlcnk5KHRoaXMsIHR5cGUpOworfQorCitGZW5jZUltcGwgKlJlbmRlcmVyOTo6Y3Jl
YXRlRmVuY2UoKQoreworICAgIHJldHVybiBuZXcgRmVuY2U5KHRoaXMpOworfQorCit2b2lkIFJl
bmRlcmVyOTo6c2V0U2FtcGxlclN0YXRlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5kZXgs
IGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSkKK3sKKyAgICBib29sICpmb3Jj
ZVNldFNhbXBsZXJzID0gKHR5cGUgPT0gZ2w6OlNBTVBMRVJfUElYRUwpID8gbUZvcmNlU2V0UGl4
ZWxTYW1wbGVyU3RhdGVzIDogbUZvcmNlU2V0VmVydGV4U2FtcGxlclN0YXRlczsKKyAgICBnbDo6
U2FtcGxlclN0YXRlICphcHBsaWVkU2FtcGxlcnMgPSAodHlwZSA9PSBnbDo6U0FNUExFUl9QSVhF
TCkgPyBtQ3VyUGl4ZWxTYW1wbGVyU3RhdGVzOiBtQ3VyVmVydGV4U2FtcGxlclN0YXRlczsKKwor
ICAgIGlmIChmb3JjZVNldFNhbXBsZXJzW2luZGV4XSB8fCBtZW1jbXAoJnNhbXBsZXJTdGF0ZSwg
JmFwcGxpZWRTYW1wbGVyc1tpbmRleF0sIHNpemVvZihnbDo6U2FtcGxlclN0YXRlKSkgIT0gMCkK
KyAgICB7CisgICAgICAgIGludCBkM2RTYW1wbGVyT2Zmc2V0ID0gKHR5cGUgPT0gZ2w6OlNBTVBM
RVJfUElYRUwpID8gMCA6IEQzRFZFUlRFWFRFWFRVUkVTQU1QTEVSMDsKKyAgICAgICAgaW50IGQz
ZFNhbXBsZXIgPSBpbmRleCArIGQzZFNhbXBsZXJPZmZzZXQ7CisKKyAgICAgICAgbURldmljZS0+
U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQzRFNBTVBfQUREUkVTU1UsIGdsX2QzZDk6OkNv
bnZlcnRUZXh0dXJlV3JhcChzYW1wbGVyU3RhdGUud3JhcFMpKTsKKyAgICAgICAgbURldmljZS0+
U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQzRFNBTVBfQUREUkVTU1YsIGdsX2QzZDk6OkNv
bnZlcnRUZXh0dXJlV3JhcChzYW1wbGVyU3RhdGUud3JhcFQpKTsKKworICAgICAgICBtRGV2aWNl
LT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9NQUdGSUxURVIsIGdsX2QzZDk6
OkNvbnZlcnRNYWdGaWx0ZXIoc2FtcGxlclN0YXRlLm1hZ0ZpbHRlciwgc2FtcGxlclN0YXRlLm1h
eEFuaXNvdHJvcHkpKTsKKyAgICAgICAgRDNEVEVYVFVSRUZJTFRFUlRZUEUgZDNkTWluRmlsdGVy
LCBkM2RNaXBGaWx0ZXI7CisgICAgICAgIGdsX2QzZDk6OkNvbnZlcnRNaW5GaWx0ZXIoc2FtcGxl
clN0YXRlLm1pbkZpbHRlciwgJmQzZE1pbkZpbHRlciwgJmQzZE1pcEZpbHRlciwgc2FtcGxlclN0
YXRlLm1heEFuaXNvdHJvcHkpOworICAgICAgICBtRGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNk
U2FtcGxlciwgRDNEU0FNUF9NSU5GSUxURVIsIGQzZE1pbkZpbHRlcik7CisgICAgICAgIG1EZXZp
Y2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01JUEZJTFRFUiwgZDNkTWlw
RmlsdGVyKTsKKyAgICAgICAgbURldmljZS0+U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQz
RFNBTVBfTUFYTUlQTEVWRUwsIHNhbXBsZXJTdGF0ZS5sb2RPZmZzZXQpOworICAgICAgICBpZiAo
bVN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1EZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01BWEFOSVNPVFJP
UFksIChEV09SRClzYW1wbGVyU3RhdGUubWF4QW5pc290cm9weSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBmb3JjZVNldFNhbXBsZXJzW2luZGV4XSA9IGZhbHNlOworICAgIGFwcGxpZWRTYW1w
bGVyc1tpbmRleF0gPSBzYW1wbGVyU3RhdGU7Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjpzZXRUZXh0
dXJlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5kZXgsIGdsOjpUZXh0dXJlICp0ZXh0dXJl
KQoreworICAgIGludCBkM2RTYW1wbGVyT2Zmc2V0ID0gKHR5cGUgPT0gZ2w6OlNBTVBMRVJfUElY
RUwpID8gMCA6IEQzRFZFUlRFWFRFWFRVUkVTQU1QTEVSMDsKKyAgICBpbnQgZDNkU2FtcGxlciA9
IGluZGV4ICsgZDNkU2FtcGxlck9mZnNldDsKKyAgICBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKmQz
ZFRleHR1cmUgPSBOVUxMOworICAgIHVuc2lnbmVkIGludCBzZXJpYWwgPSAwOworICAgIGJvb2wg
Zm9yY2VTZXRUZXh0dXJlID0gZmFsc2U7CisKKyAgICB1bnNpZ25lZCBpbnQgKmFwcGxpZWRTZXJp
YWxzID0gKHR5cGUgPT0gZ2w6OlNBTVBMRVJfUElYRUwpID8gbUN1clBpeGVsVGV4dHVyZVNlcmlh
bHMgOiBtQ3VyVmVydGV4VGV4dHVyZVNlcmlhbHM7CisKKyAgICBpZiAodGV4dHVyZSkKKyAgICB7
CisgICAgICAgIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlICp0ZXhTdG9yYWdlID0gdGV4dHVyZS0+
Z2V0TmF0aXZlVGV4dHVyZSgpOworICAgICAgICBpZiAodGV4U3RvcmFnZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2U5ICpzdG9yYWdlOSA9IFRleHR1cmVTdG9yYWdlOTo6
bWFrZVRleHR1cmVTdG9yYWdlOSh0ZXhTdG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7Cisg
ICAgICAgICAgICBkM2RUZXh0dXJlID0gc3RvcmFnZTktPmdldEJhc2VUZXh0dXJlKCk7CisgICAg
ICAgIH0KKyAgICAgICAgLy8gSWYgd2UgZ2V0IE5VTEwgYmFjayBmcm9tIGdldEJhc2VUZXh0dXJl
IGhlcmUsIHNvbWV0aGluZyB3ZW50IHdyb25nCisgICAgICAgIC8vIGluIHRoZSB0ZXh0dXJlIGNs
YXNzIGFuZCB3ZSdyZSB1bmV4cGVjdGVkbHkgbWlzc2luZyB0aGUgZDNkIHRleHR1cmUKKyAgICAg
ICAgQVNTRVJUKGQzZFRleHR1cmUgIT0gTlVMTCk7CisKKyAgICAgICAgc2VyaWFsID0gdGV4dHVy
ZS0+Z2V0VGV4dHVyZVNlcmlhbCgpOworICAgICAgICBmb3JjZVNldFRleHR1cmUgPSB0ZXh0dXJl
LT5oYXNEaXJ0eUltYWdlcygpOworICAgIH0KKworICAgIGlmIChmb3JjZVNldFRleHR1cmUgfHwg
YXBwbGllZFNlcmlhbHNbaW5kZXhdICE9IHNlcmlhbCkKKyAgICB7CisgICAgICAgIG1EZXZpY2Ut
PlNldFRleHR1cmUoZDNkU2FtcGxlciwgZDNkVGV4dHVyZSk7CisgICAgfQorCisgICAgYXBwbGll
ZFNlcmlhbHNbaW5kZXhdID0gc2VyaWFsOworfQorCit2b2lkIFJlbmRlcmVyOTo6c2V0UmFzdGVy
aXplclN0YXRlKGNvbnN0IGdsOjpSYXN0ZXJpemVyU3RhdGUgJnJhc3RlclN0YXRlKQoreworICAg
IGJvb2wgcmFzdGVyU3RhdGVDaGFuZ2VkID0gbUZvcmNlU2V0UmFzdGVyU3RhdGUgfHwgbWVtY21w
KCZyYXN0ZXJTdGF0ZSwgJm1DdXJSYXN0ZXJTdGF0ZSwgc2l6ZW9mKGdsOjpSYXN0ZXJpemVyU3Rh
dGUpKSAhPSAwOworCisgICAgaWYgKHJhc3RlclN0YXRlQ2hhbmdlZCkKKyAgICB7CisgICAgICAg
IC8vIFNldCB0aGUgY3VsbCBtb2RlCisgICAgICAgIGlmIChyYXN0ZXJTdGF0ZS5jdWxsRmFjZSkK
KyAgICAgICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ1VM
TE1PREUsIGdsX2QzZDk6OkNvbnZlcnRDdWxsTW9kZShyYXN0ZXJTdGF0ZS5jdWxsTW9kZSwgcmFz
dGVyU3RhdGUuZnJvbnRGYWNlKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7
CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DVUxMTU9ERSwgRDNE
Q1VMTF9OT05FKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyYXN0ZXJTdGF0ZS5wb2x5Z29u
T2Zmc2V0RmlsbCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1DdXJEZXB0aFNpemUgPiAw
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRl
KEQzRFJTX1NMT1BFU0NBTEVERVBUSEJJQVMsICooRFdPUkQqKSZyYXN0ZXJTdGF0ZS5wb2x5Z29u
T2Zmc2V0RmFjdG9yKTsKKworICAgICAgICAgICAgICAgIGZsb2F0IGRlcHRoQmlhcyA9IGxkZXhw
KHJhc3RlclN0YXRlLnBvbHlnb25PZmZzZXRVbml0cywgLXN0YXRpY19jYXN0PGludD4obUN1ckRl
cHRoU2l6ZSkpOworICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJT
X0RFUFRIQklBUywgKihEV09SRCopJmRlcHRoQmlhcyk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19TTE9QRVNDQUxFREVQVEhCSUFTLCAwKTsKKyAgICAgICAgICAgIG1EZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0RFUFRIQklBUywgMCk7CisgICAgICAgIH0KKworICAg
ICAgICBtQ3VyUmFzdGVyU3RhdGUgPSByYXN0ZXJTdGF0ZTsKKyAgICB9CisKKyAgICBtRm9yY2VT
ZXRSYXN0ZXJTdGF0ZSA9IGZhbHNlOworfQorCit2b2lkIFJlbmRlcmVyOTo6c2V0QmxlbmRTdGF0
ZShjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSwgY29uc3QgZ2w6OkNvbG9yICZibGVu
ZENvbG9yLCB1bnNpZ25lZCBpbnQgc2FtcGxlTWFzaykKK3sKKyAgICBib29sIGJsZW5kU3RhdGVD
aGFuZ2VkID0gbUZvcmNlU2V0QmxlbmRTdGF0ZSB8fCBtZW1jbXAoJmJsZW5kU3RhdGUsICZtQ3Vy
QmxlbmRTdGF0ZSwgc2l6ZW9mKGdsOjpCbGVuZFN0YXRlKSkgIT0gMDsKKyAgICBib29sIGJsZW5k
Q29sb3JDaGFuZ2VkID0gbUZvcmNlU2V0QmxlbmRTdGF0ZSB8fCBtZW1jbXAoJmJsZW5kQ29sb3Is
ICZtQ3VyQmxlbmRDb2xvciwgc2l6ZW9mKGdsOjpDb2xvcikpICE9IDA7CisgICAgYm9vbCBzYW1w
bGVNYXNrQ2hhbmdlZCA9IG1Gb3JjZVNldEJsZW5kU3RhdGUgfHwgc2FtcGxlTWFzayAhPSBtQ3Vy
U2FtcGxlTWFzazsKKworICAgIGlmIChibGVuZFN0YXRlQ2hhbmdlZCB8fCBibGVuZENvbG9yQ2hh
bmdlZCkKKyAgICB7CisgICAgICAgIGlmIChibGVuZFN0YXRlLmJsZW5kKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxF
LCBUUlVFKTsKKworICAgICAgICAgICAgaWYgKGJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0IgIT0g
R0xfQ09OU1RBTlRfQUxQSEEgJiYgYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJHQiAhPSBHTF9PTkVf
TUlOVVNfQ09OU1RBTlRfQUxQSEEgJiYKKyAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmRlc3RC
bGVuZFJHQiAhPSBHTF9DT05TVEFOVF9BTFBIQSAmJiBibGVuZFN0YXRlLmRlc3RCbGVuZFJHQiAh
PSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQkxFTkRGQUNUT1IsIGdsX2QzZDk6
OkNvbnZlcnRDb2xvcihibGVuZENvbG9yKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfQkxFTkRGQUNUT1IsIEQzRENPTE9SX1JHQkEoZ2w6OnVub3JtPDg+KGJsZW5kQ29s
b3IuYWxwaGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjp1bm9ybTw4PihibGVuZENvbG9yLmFscGhh
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oYmxlbmRDb2xvci5hbHBoYSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OnVub3JtPDg+KGJsZW5kQ29sb3IuYWxwaGEpKSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NSQ0JMRU5E
LCBnbF9kM2Q5OjpDb252ZXJ0QmxlbmRGdW5jKGJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0IpKTsK
KyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0RFU1RCTEVORCwgZ2xf
ZDNkOTo6Q29udmVydEJsZW5kRnVuYyhibGVuZFN0YXRlLmRlc3RCbGVuZFJHQikpOworICAgICAg
ICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQkxFTkRPUCwgZ2xfZDNkOTo6Q29u
dmVydEJsZW5kT3AoYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uUkdCKSk7CisKKyAgICAgICAgICAg
IGlmIChibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICE9IGJsZW5kU3RhdGUuc291cmNlQmxlbmRB
bHBoYSB8fAorICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCICE9IGJsZW5k
U3RhdGUuZGVzdEJsZW5kQWxwaGEgfHwKKyAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmJsZW5k
RXF1YXRpb25SR0IgIT0gYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0VQQVJB
VEVBTFBIQUJMRU5ERU5BQkxFLCBUUlVFKTsKKworICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNl
dFJlbmRlclN0YXRlKEQzRFJTX1NSQ0JMRU5EQUxQSEEsIGdsX2QzZDk6OkNvbnZlcnRCbGVuZEZ1
bmMoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZEFscGhhKSk7CisgICAgICAgICAgICAgICAgbURldmlj
ZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVTVEJMRU5EQUxQSEEsIGdsX2QzZDk6OkNvbnZlcnRC
bGVuZEZ1bmMoYmxlbmRTdGF0ZS5kZXN0QmxlbmRBbHBoYSkpOworICAgICAgICAgICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0JMRU5ET1BBTFBIQSwgZ2xfZDNkOTo6Q29udmVy
dEJsZW5kT3AoYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TRVBBUkFURUFMUEhBQkxFTkRFTkFCTEUsIEZBTFNFKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0FMUEhBQkxFTkRFTkFCTEUsIEZB
TFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChibGVuZFN0YXRlLnNhbXBsZUFscGhhVG9D
b3ZlcmFnZSkKKyAgICAgICAgeworICAgICAgICAgICAgRklYTUUoIlNhbXBsZSBhbHBoYSB0byBj
b3ZlcmFnZSBpcyB1bmltcGxlbWVudGVkLiIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0
IHRoZSBjb2xvciBtYXNrCisgICAgICAgIGJvb2wgemVyb0NvbG9yTWFza0FsbG93ZWQgPSBnZXRB
ZGFwdGVyVmVuZG9yKCkgIT0gVkVORE9SX0lEX0FNRDsKKyAgICAgICAgLy8gQXBwYXJlbnRseSBz
b21lIEFUSSBjYXJkcyBoYXZlIGEgYnVnIHdoZXJlIGEgZHJhdyB3aXRoIGEgemVybyBjb2xvcgor
ICAgICAgICAvLyB3cml0ZSBtYXNrIGNhbiBjYXVzZSBsYXRlciBkcmF3cyB0byBoYXZlIGluY29y
cmVjdCByZXN1bHRzLiBJbnN0ZWFkLAorICAgICAgICAvLyBzZXQgYSBub256ZXJvIGNvbG9yIHdy
aXRlIG1hc2sgYnV0IG1vZGlmeSB0aGUgYmxlbmQgc3RhdGUgc28gdGhhdCBubworICAgICAgICAv
LyBkcmF3aW5nIGlzIGRvbmUuCisgICAgICAgIC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9h
bmdsZXByb2plY3QvaXNzdWVzL2RldGFpbD9pZD0xNjkKKworICAgICAgICBEV09SRCBjb2xvck1h
c2sgPSBnbF9kM2Q5OjpDb252ZXJ0Q29sb3JNYXNrKGJsZW5kU3RhdGUuY29sb3JNYXNrUmVkLCBi
bGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUuY29sb3JNYXNrQmx1ZSwgYmxlbmRTdGF0
ZS5jb2xvck1hc2tBbHBoYSk7CisgICAgICAgIGlmIChjb2xvck1hc2sgPT0gMCAmJiAhemVyb0Nv
bG9yTWFza0FsbG93ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEVuYWJsZSBncmVlbiBj
aGFubmVsLCBidXQgc2V0IGJsZW5kaW5nIHNvIG5vdGhpbmcgd2lsbCBiZSBkcmF3bi4KKyAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NPTE9SV1JJVEVFTkFCTEUsIEQz
RENPTE9SV1JJVEVFTkFCTEVfR1JFRU4pOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfQUxQSEFCTEVOREVOQUJMRSwgVFJVRSk7CisKKyAgICAgICAgICAgIG1EZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NSQ0JMRU5ELCBEM0RCTEVORF9aRVJPKTsKKyAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0RFU1RCTEVORCwgRDNEQkxFTkRf
T05FKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0JMRU5ET1As
IEQzREJMRU5ET1BfQUREKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NPTE9SV1JJVEVFTkFCTEUs
IGNvbG9yTWFzayk7CisgICAgICAgIH0KKworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShEM0RSU19ESVRIRVJFTkFCTEUsIGJsZW5kU3RhdGUuZGl0aGVyID8gVFJVRSA6IEZBTFNFKTsK
KworICAgICAgICBtQ3VyQmxlbmRTdGF0ZSA9IGJsZW5kU3RhdGU7CisgICAgICAgIG1DdXJCbGVu
ZENvbG9yID0gYmxlbmRDb2xvcjsKKyAgICB9CisKKyAgICBpZiAoc2FtcGxlTWFza0NoYW5nZWQp
CisgICAgeworICAgICAgICAvLyBTZXQgdGhlIG11bHRpc2FtcGxlIG1hc2sKKyAgICAgICAgbURl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfTVVMVElTQU1QTEVBTlRJQUxJQVMsIFRSVUUpOwor
ICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19NVUxUSVNBTVBMRU1BU0ssIHN0
YXRpY19jYXN0PERXT1JEPihzYW1wbGVNYXNrKSk7CisKKyAgICAgICAgbUN1clNhbXBsZU1hc2sg
PSBzYW1wbGVNYXNrOworICAgIH0KKworICAgIG1Gb3JjZVNldEJsZW5kU3RhdGUgPSBmYWxzZTsK
K30KKwordm9pZCBSZW5kZXJlcjk6OnNldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0
aFN0ZW5jaWxTdGF0ZSAmZGVwdGhTdGVuY2lsU3RhdGUsIGludCBzdGVuY2lsUmVmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGVuY2lsQmFja1JlZiwgYm9vbCBm
cm9udEZhY2VDQ1cpCit7CisgICAgYm9vbCBkZXB0aFN0ZW5jaWxTdGF0ZUNoYW5nZWQgPSBtRm9y
Y2VTZXREZXB0aFN0ZW5jaWxTdGF0ZSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVtY21wKCZkZXB0aFN0ZW5jaWxTdGF0ZSwgJm1DdXJEZXB0aFN0ZW5jaWxTdGF0ZSwg
c2l6ZW9mKGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSkpICE9IDA7CisgICAgYm9vbCBzdGVuY2lsUmVm
Q2hhbmdlZCA9IG1Gb3JjZVNldERlcHRoU3RlbmNpbFN0YXRlIHx8IHN0ZW5jaWxSZWYgIT0gbUN1
clN0ZW5jaWxSZWYgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlbmNpbEJhY2tS
ZWYgIT0gbUN1clN0ZW5jaWxCYWNrUmVmOworICAgIGJvb2wgZnJvbnRGYWNlQ0NXQ2hhbmdlZCA9
IG1Gb3JjZVNldERlcHRoU3RlbmNpbFN0YXRlIHx8IGZyb250RmFjZUNDVyAhPSBtQ3VyRnJvbnRG
YWNlQ0NXOworCisgICAgaWYgKGRlcHRoU3RlbmNpbFN0YXRlQ2hhbmdlZCkKKyAgICB7CisgICAg
ICAgIGlmIChkZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aFRlc3QpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pFTkFCTEUsIEQzRFpCX1RSVUUpOwor
ICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkZVTkMsIGdsX2QzZDk6
OkNvbnZlcnRDb21wYXJpc29uKGRlcHRoU3RlbmNpbFN0YXRlLmRlcHRoRnVuYykpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfWkVOQUJMRSwgRDNEWkJfRkFMU0UpOworICAgICAgICB9CisKKyAgICAg
ICAgbUN1ckRlcHRoU3RlbmNpbFN0YXRlID0gZGVwdGhTdGVuY2lsU3RhdGU7CisgICAgfQorCisg
ICAgaWYgKGRlcHRoU3RlbmNpbFN0YXRlQ2hhbmdlZCB8fCBzdGVuY2lsUmVmQ2hhbmdlZCB8fCBm
cm9udEZhY2VDQ1dDaGFuZ2VkKQorICAgIHsKKyAgICAgICAgaWYgKGRlcHRoU3RlbmNpbFN0YXRl
LnN0ZW5jaWxUZXN0ICYmIG1DdXJTdGVuY2lsU2l6ZSA+IDApCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxFTkFCTEUsIFRSVUUpOwor
ICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfVFdPU0lERURTVEVOQ0lM
TU9ERSwgVFJVRSk7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBVbnN1cHBvcnRlZCBieSBEM0Q5
CisgICAgICAgICAgICBjb25zdCBEM0RSRU5ERVJTVEFURVRZUEUgRDNEUlNfQ0NXX1NURU5DSUxS
RUYgPSBEM0RSU19TVEVOQ0lMUkVGOworICAgICAgICAgICAgY29uc3QgRDNEUkVOREVSU1RBVEVU
WVBFIEQzRFJTX0NDV19TVEVOQ0lMTUFTSyA9IEQzRFJTX1NURU5DSUxNQVNLOworICAgICAgICAg
ICAgY29uc3QgRDNEUkVOREVSU1RBVEVUWVBFIEQzRFJTX0NDV19TVEVOQ0lMV1JJVEVNQVNLID0g
RDNEUlNfU1RFTkNJTFdSSVRFTUFTSzsKKyAgICAgICAgICAgIGlmIChkZXB0aFN0ZW5jaWxTdGF0
ZS5zdGVuY2lsV3JpdGVtYXNrICE9IGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrV3JpdGVt
YXNrIHx8CisgICAgICAgICAgICAgICAgc3RlbmNpbFJlZiAhPSBzdGVuY2lsQmFja1JlZiB8fAor
ICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxNYXNrICE9IGRlcHRoU3Rl
bmNpbFN0YXRlLnN0ZW5jaWxCYWNrTWFzaykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBFUlIoIlNlcGFyYXRlIGZyb250L2JhY2sgc3RlbmNpbCB3cml0ZW1hc2tzLCByZWZlcmVuY2Ug
dmFsdWVzLCBvciBzdGVuY2lsIG1hc2sgdmFsdWVzIGFyZSBpbnZhbGlkIHVuZGVyIFdlYkdMLiIp
OworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBnZXQgdGhlIG1heGltdW0gc2l6ZSBv
ZiB0aGUgc3RlbmNpbCByZWYKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXhTdGVuY2lsID0g
KDEgPDwgbUN1clN0ZW5jaWxTaXplKSAtIDE7CisKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJl
bmRlclN0YXRlKGZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxXUklURU1BU0sgOiBEM0RSU19D
Q1dfU1RFTkNJTFdSSVRFTUFTSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxXcml0ZW1hc2spOworICAgICAgICAgICAgbURldmlj
ZS0+U2V0UmVuZGVyU3RhdGUoZnJvbnRGYWNlQ0NXID8gRDNEUlNfU1RFTkNJTEZVTkMgOiBEM0RS
U19DQ1dfU1RFTkNJTEZVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bF9kM2Q5OjpDb252ZXJ0Q29tcGFyaXNvbihkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsRnVuYykp
OworCisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShmcm9udEZhY2VDQ1cgPyBE
M0RSU19TVEVOQ0lMUkVGIDogRDNEUlNfQ0NXX1NURU5DSUxSRUYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoc3RlbmNpbFJlZiA8IChpbnQpbWF4U3RlbmNpbCkgPyBzdGVu
Y2lsUmVmIDogbWF4U3RlbmNpbCk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMTUFTSyA6IEQzRFJTX0NDV19TVEVOQ0lMTUFT
SywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbFN0YXRl
LnN0ZW5jaWxNYXNrKTsKKworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoZnJv
bnRGYWNlQ0NXID8gRDNEUlNfU1RFTkNJTEZBSUwgOiBEM0RSU19DQ1dfU1RFTkNJTEZBSUwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kM2Q5OjpDb252ZXJ0U3RlbmNp
bE9wKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxGYWlsKSk7CisgICAgICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMWkZBSUwgOiBEM0RS
U19DQ1dfU1RFTkNJTFpGQUlMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2xfZDNkOTo6Q29udmVydFN0ZW5jaWxPcChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsUGFzc0Rl
cHRoRmFpbCkpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoZnJvbnRGYWNl
Q0NXID8gRDNEUlNfU1RFTkNJTFBBU1MgOiBEM0RSU19DQ1dfU1RFTkNJTFBBU1MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kM2Q5OjpDb252ZXJ0U3RlbmNpbE9wKGRl
cHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxQYXNzRGVwdGhQYXNzKSk7CisKKyAgICAgICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKCFmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMV1JJVEVN
QVNLIDogRDNEUlNfQ0NXX1NURU5DSUxXUklURU1BU0ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja1dyaXRlbWFzayk7Cisg
ICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZSghZnJvbnRGYWNlQ0NXID8gRDNEUlNf
U1RFTkNJTEZVTkMgOiBEM0RSU19DQ1dfU1RFTkNJTEZVTkMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbF9kM2Q5OjpDb252ZXJ0Q29tcGFyaXNvbihkZXB0aFN0ZW5jaWxT
dGF0ZS5zdGVuY2lsQmFja0Z1bmMpKTsKKworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUoIWZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxSRUYgOiBEM0RSU19DQ1dfU1RFTkNJ
TFJFRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGVuY2lsQmFja1Jl
ZiA8IChpbnQpbWF4U3RlbmNpbCkgPyBzdGVuY2lsQmFja1JlZiA6IG1heFN0ZW5jaWwpOworICAg
ICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoIWZyb250RmFjZUNDVyA/IEQzRFJTX1NU
RU5DSUxNQVNLIDogRDNEUlNfQ0NXX1NURU5DSUxNQVNLLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tNYXNrKTsKKworICAg
ICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoIWZyb250RmFjZUNDVyA/IEQzRFJTX1NU
RU5DSUxGQUlMIDogRDNEUlNfQ0NXX1NURU5DSUxGQUlMLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2xfZDNkOTo6Q29udmVydFN0ZW5jaWxPcChkZXB0aFN0ZW5jaWxTdGF0
ZS5zdGVuY2lsQmFja0ZhaWwpKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRl
KCFmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMWkZBSUwgOiBEM0RSU19DQ1dfU1RFTkNJTFpG
QUlMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfZDNkOTo6Q29udmVy
dFN0ZW5jaWxPcChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwpKTsK
KyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKCFmcm9udEZhY2VDQ1cgPyBEM0RS
U19TVEVOQ0lMUEFTUyA6IEQzRFJTX0NDV19TVEVOQ0lMUEFTUywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkNvbnZlcnRTdGVuY2lsT3AoZGVwdGhTdGVuY2ls
U3RhdGUuc3RlbmNpbEJhY2tQYXNzRGVwdGhQYXNzKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19T
VEVOQ0lMRU5BQkxFLCBGQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBtRGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShEM0RSU19aV1JJVEVFTkFCTEUsIGRlcHRoU3RlbmNpbFN0YXRlLmRlcHRoTWFz
ayA/IFRSVUUgOiBGQUxTRSk7CisKKyAgICAgICAgbUN1clN0ZW5jaWxSZWYgPSBzdGVuY2lsUmVm
OworICAgICAgICBtQ3VyU3RlbmNpbEJhY2tSZWYgPSBzdGVuY2lsQmFja1JlZjsKKyAgICAgICAg
bUN1ckZyb250RmFjZUNDVyA9IGZyb250RmFjZUNDVzsKKyAgICB9CisKKyAgICBtRm9yY2VTZXRE
ZXB0aFN0ZW5jaWxTdGF0ZSA9IGZhbHNlOworfQorCit2b2lkIFJlbmRlcmVyOTo6c2V0U2Npc3Nv
clJlY3RhbmdsZShjb25zdCBnbDo6UmVjdGFuZ2xlICZzY2lzc29yLCBib29sIGVuYWJsZWQpCit7
CisgICAgYm9vbCBzY2lzc29yQ2hhbmdlZCA9IG1Gb3JjZVNldFNjaXNzb3IgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVtY21wKCZzY2lzc29yLCAmbUN1clNjaXNzb3IsIHNpemVvZihn
bDo6UmVjdGFuZ2xlKSkgIT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVk
ICE9IG1TY2lzc29yRW5hYmxlZDsKKworICAgIGlmIChzY2lzc29yQ2hhbmdlZCkKKyAgICB7Cisg
ICAgICAgIGlmIChlbmFibGVkKQorICAgICAgICB7CisgICAgICAgICAgICBSRUNUIHJlY3Q7Cisg
ICAgICAgICAgICByZWN0LmxlZnQgPSBnbDo6Y2xhbXAoc2Npc3Nvci54LCAwLCBzdGF0aWNfY2Fz
dDxpbnQ+KG1SZW5kZXJUYXJnZXREZXNjLndpZHRoKSk7CisgICAgICAgICAgICByZWN0LnRvcCA9
IGdsOjpjbGFtcChzY2lzc29yLnksIDAsIHN0YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldERl
c2MuaGVpZ2h0KSk7CisgICAgICAgICAgICByZWN0LnJpZ2h0ID0gZ2w6OmNsYW1wKHNjaXNzb3Iu
eCArIHNjaXNzb3Iud2lkdGgsIDAsIHN0YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldERlc2Mu
d2lkdGgpKTsKKyAgICAgICAgICAgIHJlY3QuYm90dG9tID0gZ2w6OmNsYW1wKHNjaXNzb3IueSAr
IHNjaXNzb3IuaGVpZ2h0LCAwLCBzdGF0aWNfY2FzdDxpbnQ+KG1SZW5kZXJUYXJnZXREZXNjLmhl
aWdodCkpOworICAgICAgICAgICAgbURldmljZS0+U2V0U2Npc3NvclJlY3QoJnJlY3QpOworICAg
ICAgICB9CisKKyAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0NJU1NPUlRF
U1RFTkFCTEUsIGVuYWJsZWQgPyBUUlVFIDogRkFMU0UpOworCisgICAgICAgIG1TY2lzc29yRW5h
YmxlZCA9IGVuYWJsZWQ7CisgICAgICAgIG1DdXJTY2lzc29yID0gc2Npc3NvcjsKKyAgICB9CisK
KyAgICBtRm9yY2VTZXRTY2lzc29yID0gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyZXI5OjpzZXRW
aWV3cG9ydChjb25zdCBnbDo6UmVjdGFuZ2xlICZ2aWV3cG9ydCwgZmxvYXQgek5lYXIsIGZsb2F0
IHpGYXIsIEdMZW51bSBkcmF3TW9kZSwgR0xlbnVtIGZyb250RmFjZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlnbm9yZVZpZXdwb3J0KQoreworICAgIGdsOjpSZWN0YW5nbGUg
YWN0dWFsVmlld3BvcnQgPSB2aWV3cG9ydDsKKyAgICBmbG9hdCBhY3R1YWxaTmVhciA9IGdsOjpj
bGFtcDAxKHpOZWFyKTsKKyAgICBmbG9hdCBhY3R1YWxaRmFyID0gZ2w6OmNsYW1wMDEoekZhcik7
CisgICAgaWYgKGlnbm9yZVZpZXdwb3J0KQorICAgIHsKKyAgICAgICAgYWN0dWFsVmlld3BvcnQu
eCA9IDA7CisgICAgICAgIGFjdHVhbFZpZXdwb3J0LnkgPSAwOworICAgICAgICBhY3R1YWxWaWV3
cG9ydC53aWR0aCA9IG1SZW5kZXJUYXJnZXREZXNjLndpZHRoOworICAgICAgICBhY3R1YWxWaWV3
cG9ydC5oZWlnaHQgPSBtUmVuZGVyVGFyZ2V0RGVzYy5oZWlnaHQ7CisgICAgICAgIGFjdHVhbFpO
ZWFyID0gMC4wZjsKKyAgICAgICAgYWN0dWFsWkZhciA9IDEuMGY7CisgICAgfQorCisgICAgRDNE
VklFV1BPUlQ5IGR4Vmlld3BvcnQ7CisgICAgZHhWaWV3cG9ydC5YID0gZ2w6OmNsYW1wKGFjdHVh
bFZpZXdwb3J0LngsIDAsIHN0YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldERlc2Mud2lkdGgp
KTsKKyAgICBkeFZpZXdwb3J0LlkgPSBnbDo6Y2xhbXAoYWN0dWFsVmlld3BvcnQueSwgMCwgc3Rh
dGljX2Nhc3Q8aW50PihtUmVuZGVyVGFyZ2V0RGVzYy5oZWlnaHQpKTsKKyAgICBkeFZpZXdwb3J0
LldpZHRoID0gZ2w6OmNsYW1wKGFjdHVhbFZpZXdwb3J0LndpZHRoLCAwLCBzdGF0aWNfY2FzdDxp
bnQ+KG1SZW5kZXJUYXJnZXREZXNjLndpZHRoKSAtIHN0YXRpY19jYXN0PGludD4oZHhWaWV3cG9y
dC5YKSk7CisgICAgZHhWaWV3cG9ydC5IZWlnaHQgPSBnbDo6Y2xhbXAoYWN0dWFsVmlld3BvcnQu
aGVpZ2h0LCAwLCBzdGF0aWNfY2FzdDxpbnQ+KG1SZW5kZXJUYXJnZXREZXNjLmhlaWdodCkgLSBz
dGF0aWNfY2FzdDxpbnQ+KGR4Vmlld3BvcnQuWSkpOworICAgIGR4Vmlld3BvcnQuTWluWiA9IGFj
dHVhbFpOZWFyOworICAgIGR4Vmlld3BvcnQuTWF4WiA9IGFjdHVhbFpGYXI7CisKKyAgICBpZiAo
ZHhWaWV3cG9ydC5XaWR0aCA8PSAwIHx8IGR4Vmlld3BvcnQuSGVpZ2h0IDw9IDApCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7ICAgLy8gTm90aGluZyB0byByZW5kZXIKKyAgICB9CisKKyAg
ICBib29sIHZpZXdwb3J0Q2hhbmdlZCA9IG1Gb3JjZVNldFZpZXdwb3J0IHx8IG1lbWNtcCgmYWN0
dWFsVmlld3BvcnQsICZtQ3VyVmlld3BvcnQsIHNpemVvZihnbDo6UmVjdGFuZ2xlKSkgIT0gMCB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsWk5lYXIgIT0gbUN1ck5lYXIgfHwg
YWN0dWFsWkZhciAhPSBtQ3VyRmFyOworICAgIGlmICh2aWV3cG9ydENoYW5nZWQpCisgICAgewor
ICAgICAgICBtRGV2aWNlLT5TZXRWaWV3cG9ydCgmZHhWaWV3cG9ydCk7CisKKyAgICAgICAgbUN1
clZpZXdwb3J0ID0gYWN0dWFsVmlld3BvcnQ7CisgICAgICAgIG1DdXJOZWFyID0gYWN0dWFsWk5l
YXI7CisgICAgICAgIG1DdXJGYXIgPSBhY3R1YWxaRmFyOworCisgICAgICAgIGR4X1ZlcnRleENv
bnN0YW50cyB2YyA9IHswfTsKKyAgICAgICAgZHhfUGl4ZWxDb25zdGFudHMgcGMgPSB7MH07CisK
KyAgICAgICAgdmMudmlld0FkanVzdFswXSA9IChmbG9hdCkoKGFjdHVhbFZpZXdwb3J0LndpZHRo
IC0gKGludClkeFZpZXdwb3J0LldpZHRoKSArIDIgKiAoYWN0dWFsVmlld3BvcnQueCAtIChpbnQp
ZHhWaWV3cG9ydC5YKSAtIDEpIC8gZHhWaWV3cG9ydC5XaWR0aDsKKyAgICAgICAgdmMudmlld0Fk
anVzdFsxXSA9IChmbG9hdCkoKGFjdHVhbFZpZXdwb3J0LmhlaWdodCAtIChpbnQpZHhWaWV3cG9y
dC5IZWlnaHQpICsgMiAqIChhY3R1YWxWaWV3cG9ydC55IC0gKGludClkeFZpZXdwb3J0LlkpIC0g
MSkgLyBkeFZpZXdwb3J0LkhlaWdodDsKKyAgICAgICAgdmMudmlld0FkanVzdFsyXSA9IChmbG9h
dClhY3R1YWxWaWV3cG9ydC53aWR0aCAvIGR4Vmlld3BvcnQuV2lkdGg7CisgICAgICAgIHZjLnZp
ZXdBZGp1c3RbM10gPSAoZmxvYXQpYWN0dWFsVmlld3BvcnQuaGVpZ2h0IC8gZHhWaWV3cG9ydC5I
ZWlnaHQ7CisKKyAgICAgICAgcGMudmlld0Nvb3Jkc1swXSA9IGFjdHVhbFZpZXdwb3J0LndpZHRo
ICAqIDAuNWY7CisgICAgICAgIHBjLnZpZXdDb29yZHNbMV0gPSBhY3R1YWxWaWV3cG9ydC5oZWln
aHQgKiAwLjVmOworICAgICAgICBwYy52aWV3Q29vcmRzWzJdID0gYWN0dWFsVmlld3BvcnQueCAr
IChhY3R1YWxWaWV3cG9ydC53aWR0aCAgKiAwLjVmKTsKKyAgICAgICAgcGMudmlld0Nvb3Jkc1sz
XSA9IGFjdHVhbFZpZXdwb3J0LnkgKyAoYWN0dWFsVmlld3BvcnQuaGVpZ2h0ICogMC41Zik7CisK
KyAgICAgICAgcGMuZGVwdGhGcm9udFswXSA9IChhY3R1YWxaRmFyIC0gYWN0dWFsWk5lYXIpICog
MC41ZjsKKyAgICAgICAgcGMuZGVwdGhGcm9udFsxXSA9IChhY3R1YWxaTmVhciArIGFjdHVhbFpG
YXIpICogMC41ZjsKKyAgICAgICAgcGMuZGVwdGhGcm9udFsyXSA9ICFnbDo6SXNUcmlhbmdsZU1v
ZGUoZHJhd01vZGUpID8gMC4wZiA6IChmcm9udEZhY2UgPT0gR0xfQ0NXID8gMS4wZiA6IC0xLjBm
KTs7CisKKyAgICAgICAgdmMuZGVwdGhSYW5nZVswXSA9IGFjdHVhbFpOZWFyOworICAgICAgICB2
Yy5kZXB0aFJhbmdlWzFdID0gYWN0dWFsWkZhcjsKKyAgICAgICAgdmMuZGVwdGhSYW5nZVsyXSA9
IGFjdHVhbFpGYXIgLSBhY3R1YWxaTmVhcjsKKworICAgICAgICBwYy5kZXB0aFJhbmdlWzBdID0g
YWN0dWFsWk5lYXI7CisgICAgICAgIHBjLmRlcHRoUmFuZ2VbMV0gPSBhY3R1YWxaRmFyOworICAg
ICAgICBwYy5kZXB0aFJhbmdlWzJdID0gYWN0dWFsWkZhciAtIGFjdHVhbFpOZWFyOworCisgICAg
ICAgIGlmIChtZW1jbXAoJnZjLCAmbVZlcnRleENvbnN0YW50cywgc2l6ZW9mKGR4X1ZlcnRleENv
bnN0YW50cykpICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIG1WZXJ0ZXhDb25zdGFudHMg
PSB2YzsKKyAgICAgICAgICAgIG1EeFVuaWZvcm1zRGlydHkgPSB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKG1lbWNtcCgmcGMsICZtUGl4ZWxDb25zdGFudHMsIHNpemVvZihkeF9QaXhl
bENvbnN0YW50cykpICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIG1QaXhlbENvbnN0YW50
cyA9IHBjOworICAgICAgICAgICAgbUR4VW5pZm9ybXNEaXJ0eSA9IHRydWU7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBtRm9yY2VTZXRWaWV3cG9ydCA9IGZhbHNlOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFJlbmRlcmVyOTo6YXBwbHlQcmltaXRpdmVUeXBlKEdMZW51bSBtb2RlLCBH
THNpemVpIGNvdW50KQoreworICAgIHN3aXRjaCAobW9kZSkKKyAgICB7CisgICAgICBjYXNlIEdM
X1BPSU5UUzoKKyAgICAgICAgbVByaW1pdGl2ZVR5cGUgPSBEM0RQVF9QT0lOVExJU1Q7CisgICAg
ICAgIG1QcmltaXRpdmVDb3VudCA9IGNvdW50OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfTElORVM6CisgICAgICAgIG1QcmltaXRpdmVUeXBlID0gRDNEUFRfTElORUxJU1Q7CisgICAg
ICAgIG1QcmltaXRpdmVDb3VudCA9IGNvdW50IC8gMjsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX0xJTkVfTE9PUDoKKyAgICAgICAgbVByaW1pdGl2ZVR5cGUgPSBEM0RQVF9MSU5FU1RS
SVA7CisgICAgICAgIG1QcmltaXRpdmVDb3VudCA9IGNvdW50IC0gMTsgICAvLyBEM0QgZG9lc24n
dCBzdXBwb3J0IGxpbmUgbG9vcHMsIHNvIHdlIGRyYXcgdGhlIGxhc3QgbGluZSBzZXBhcmF0ZWx5
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MSU5FX1NUUklQOgorICAgICAgICBtUHJp
bWl0aXZlVHlwZSA9IEQzRFBUX0xJTkVTVFJJUDsKKyAgICAgICAgbVByaW1pdGl2ZUNvdW50ID0g
Y291bnQgLSAxOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVFJJQU5HTEVTOgorICAg
ICAgICBtUHJpbWl0aXZlVHlwZSA9IEQzRFBUX1RSSUFOR0xFTElTVDsKKyAgICAgICAgbVByaW1p
dGl2ZUNvdW50ID0gY291bnQgLyAzOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVFJJ
QU5HTEVfU1RSSVA6CisgICAgICAgIG1QcmltaXRpdmVUeXBlID0gRDNEUFRfVFJJQU5HTEVTVFJJ
UDsKKyAgICAgICAgbVByaW1pdGl2ZUNvdW50ID0gY291bnQgLSAyOworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfVFJJQU5HTEVfRkFOOgorICAgICAgICBtUHJpbWl0aXZlVHlwZSA9IEQz
RFBUX1RSSUFOR0xFRkFOOworICAgICAgICBtUHJpbWl0aXZlQ291bnQgPSBjb3VudCAtIDI7Cisg
ICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX0VOVU0sIGZhbHNlKTsKKyAgICB9CisKKyAgICByZXR1cm4gbVByaW1pdGl2ZUNv
dW50ID4gMDsKK30KKworCitnbDo6UmVuZGVyYnVmZmVyICpSZW5kZXJlcjk6OmdldE51bGxDb2xv
cmJ1ZmZlcihnbDo6UmVuZGVyYnVmZmVyICpkZXB0aGJ1ZmZlcikKK3sKKyAgICBpZiAoIWRlcHRo
YnVmZmVyKQorICAgIHsKKyAgICAgICAgRVJSKCJVbmV4cGVjdGVkIG51bGwgZGVwdGhidWZmZXIg
Zm9yIGRlcHRoLW9ubHkgRkJPLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAg
ICBHTHNpemVpIHdpZHRoICA9IGRlcHRoYnVmZmVyLT5nZXRXaWR0aCgpOworICAgIEdMc2l6ZWkg
aGVpZ2h0ID0gZGVwdGhidWZmZXItPmdldEhlaWdodCgpOworCisgICAgLy8gc2VhcmNoIGNhY2hl
ZCBudWxsY29sb3JidWZmZXJzCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fTlVMTF9DT0xP
UkJVRkZFUl9DQUNIRV9FTlRSSUVTOyBpKyspCisgICAgeworICAgICAgICBpZiAobU51bGxDb2xv
cmJ1ZmZlckNhY2hlW2ldLmJ1ZmZlciAhPSBOVUxMICYmCisgICAgICAgICAgICBtTnVsbENvbG9y
YnVmZmVyQ2FjaGVbaV0ud2lkdGggPT0gd2lkdGggJiYKKyAgICAgICAgICAgIG1OdWxsQ29sb3Ji
dWZmZXJDYWNoZVtpXS5oZWlnaHQgPT0gaGVpZ2h0KQorICAgICAgICB7CisgICAgICAgICAgICBt
TnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0ubHJ1Q291bnQgPSArK21NYXhOdWxsQ29sb3JidWZmZXJM
UlU7CisgICAgICAgICAgICByZXR1cm4gbU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ldLmJ1ZmZlcjsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGdsOjpSZW5kZXJidWZmZXIgKm51bGxidWZmZXIgPSBu
ZXcgZ2w6OlJlbmRlcmJ1ZmZlcih0aGlzLCAwLCBuZXcgZ2w6OkNvbG9yYnVmZmVyKHRoaXMsIHdp
ZHRoLCBoZWlnaHQsIEdMX05PTkUsIDApKTsKKworICAgIC8vIGFkZCBudWxsYnVmZmVyIHRvIHRo
ZSBjYWNoZQorICAgIE51bGxDb2xvcmJ1ZmZlckNhY2hlRW50cnkgKm9sZGVzdCA9ICZtTnVsbENv
bG9yYnVmZmVyQ2FjaGVbMF07CisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBOVU1fTlVMTF9DT0xP
UkJVRkZFUl9DQUNIRV9FTlRSSUVTOyBpKyspCisgICAgeworICAgICAgICBpZiAobU51bGxDb2xv
cmJ1ZmZlckNhY2hlW2ldLmxydUNvdW50IDwgb2xkZXN0LT5scnVDb3VudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgb2xkZXN0ID0gJm1OdWxsQ29sb3JidWZmZXJDYWNoZVtpXTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGRlbGV0ZSBvbGRlc3QtPmJ1ZmZlcjsKKyAgICBvbGRlc3QtPmJ1ZmZl
ciA9IG51bGxidWZmZXI7CisgICAgb2xkZXN0LT5scnVDb3VudCA9ICsrbU1heE51bGxDb2xvcmJ1
ZmZlckxSVTsKKyAgICBvbGRlc3QtPndpZHRoID0gd2lkdGg7CisgICAgb2xkZXN0LT5oZWlnaHQg
PSBoZWlnaHQ7CisKKyAgICByZXR1cm4gbnVsbGJ1ZmZlcjsKK30KKworYm9vbCBSZW5kZXJlcjk6
OmFwcGx5UmVuZGVyVGFyZ2V0KGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpCit7CisgICAg
Ly8gaWYgdGhlcmUgaXMgbm8gY29sb3IgYXR0YWNobWVudCB3ZSBtdXN0IHN5bnRoZXNpemUgYSBO
VUxMIGNvbG9yYXR0YWNobWVudAorICAgIC8vIHRvIGtlZXAgdGhlIEQzRCBydW50aW1lIGhhcHB5
LiAgVGhpcyBzaG91bGQgb25seSBiZSBwb3NzaWJsZSBpZiBkZXB0aCB0ZXh0dXJpbmcuCisgICAg
Z2w6OlJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyT2JqZWN0ID0gTlVMTDsKKyAgICBpZiAoZnJh
bWVidWZmZXItPmdldENvbG9yYnVmZmVyVHlwZSgwKSAhPSBHTF9OT05FKQorICAgIHsKKyAgICAg
ICAgcmVuZGVyYnVmZmVyT2JqZWN0ID0gZnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyKDApOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZW5kZXJidWZmZXJPYmplY3QgPSBnZXRO
dWxsQ29sb3JidWZmZXIoZnJhbWVidWZmZXItPmdldERlcHRoYnVmZmVyKCkpOworICAgIH0KKyAg
ICBpZiAoIXJlbmRlcmJ1ZmZlck9iamVjdCkKKyAgICB7CisgICAgICAgIEVSUigidW5hYmxlIHRv
IGxvY2F0ZSByZW5kZXJidWZmZXIgZm9yIEZCTy4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGJvb2wgcmVuZGVyVGFyZ2V0Q2hhbmdlZCA9IGZhbHNlOworICAgIHVuc2ln
bmVkIGludCByZW5kZXJUYXJnZXRTZXJpYWwgPSByZW5kZXJidWZmZXJPYmplY3QtPmdldFNlcmlh
bCgpOworICAgIGlmIChyZW5kZXJUYXJnZXRTZXJpYWwgIT0gbUFwcGxpZWRSZW5kZXJUYXJnZXRT
ZXJpYWwpCisgICAgeworICAgICAgICAvLyBBcHBseSB0aGUgcmVuZGVyIHRhcmdldCBvbiB0aGUg
ZGV2aWNlCisgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpyZW5kZXJUYXJnZXRTdXJmYWNlID0g
TlVMTDsKKworICAgICAgICBSZW5kZXJUYXJnZXQgKnJlbmRlclRhcmdldCA9IHJlbmRlcmJ1ZmZl
ck9iamVjdC0+Z2V0UmVuZGVyVGFyZ2V0KCk7CisgICAgICAgIGlmIChyZW5kZXJUYXJnZXQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJlbmRlclRhcmdldFN1cmZhY2UgPSBSZW5kZXJUYXJnZXQ5
OjptYWtlUmVuZGVyVGFyZ2V0OShyZW5kZXJUYXJnZXQpLT5nZXRTdXJmYWNlKCk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoIXJlbmRlclRhcmdldFN1cmZhY2UpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEVSUigicmVuZGVyIHRhcmdldCBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8vIENvbnRleHQgbXVzdCBiZSBsb3N0CisgICAg
ICAgIH0KKworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJUYXJnZXQoMCwgcmVuZGVyVGFyZ2V0
U3VyZmFjZSk7CisgICAgICAgIHJlbmRlclRhcmdldFN1cmZhY2UtPlJlbGVhc2UoKTsKKworICAg
ICAgICBtQXBwbGllZFJlbmRlclRhcmdldFNlcmlhbCA9IHJlbmRlclRhcmdldFNlcmlhbDsKKyAg
ICAgICAgcmVuZGVyVGFyZ2V0Q2hhbmdlZCA9IHRydWU7CisgICAgfQorCisgICAgZ2w6OlJlbmRl
cmJ1ZmZlciAqZGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICB1bnNpZ25lZCBpbnQgZGVwdGhidWZm
ZXJTZXJpYWwgPSAwOworICAgIHVuc2lnbmVkIGludCBzdGVuY2lsYnVmZmVyU2VyaWFsID0gMDsK
KyAgICBpZiAoZnJhbWVidWZmZXItPmdldERlcHRoYnVmZmVyVHlwZSgpICE9IEdMX05PTkUpCisg
ICAgeworICAgICAgICBkZXB0aFN0ZW5jaWwgPSBmcmFtZWJ1ZmZlci0+Z2V0RGVwdGhidWZmZXIo
KTsKKyAgICAgICAgaWYgKCFkZXB0aFN0ZW5jaWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVS
UigiRGVwdGggc3RlbmNpbCBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgZGVwdGhidWZmZXJTZXJpYWwg
PSBkZXB0aFN0ZW5jaWwtPmdldFNlcmlhbCgpOworICAgIH0KKyAgICBlbHNlIGlmIChmcmFtZWJ1
ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlclR5cGUoKSAhPSBHTF9OT05FKQorICAgIHsKKyAgICAgICAg
ZGVwdGhTdGVuY2lsID0gZnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXIoKTsKKyAgICAgICAg
aWYgKCFkZXB0aFN0ZW5jaWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRGVwdGggc3Rl
bmNpbCBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisKKyAgICAgICAgc3RlbmNpbGJ1ZmZlclNlcmlhbCA9IGRlcHRoU3Rl
bmNpbC0+Z2V0U2VyaWFsKCk7CisgICAgfQorCisgICAgaWYgKGRlcHRoYnVmZmVyU2VyaWFsICE9
IG1BcHBsaWVkRGVwdGhidWZmZXJTZXJpYWwgfHwKKyAgICAgICAgc3RlbmNpbGJ1ZmZlclNlcmlh
bCAhPSBtQXBwbGllZFN0ZW5jaWxidWZmZXJTZXJpYWwgfHwKKyAgICAgICAgIW1EZXB0aFN0ZW5j
aWxJbml0aWFsaXplZCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBkZXB0aFNpemUgPSAw
OworICAgICAgICB1bnNpZ25lZCBpbnQgc3RlbmNpbFNpemUgPSAwOworCisgICAgICAgIC8vIEFw
cGx5IHRoZSBkZXB0aCBzdGVuY2lsIG9uIHRoZSBkZXZpY2UKKyAgICAgICAgaWYgKGRlcHRoU3Rl
bmNpbCkKKyAgICAgICAgeworICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKmRlcHRoU3Rl
bmNpbFN1cmZhY2UgPSBOVUxMOworICAgICAgICAgICAgUmVuZGVyVGFyZ2V0ICpkZXB0aFN0ZW5j
aWxSZW5kZXJUYXJnZXQgPSBkZXB0aFN0ZW5jaWwtPmdldERlcHRoU3RlbmNpbCgpOworCisgICAg
ICAgICAgICBpZiAoZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGRlcHRoU3RlbmNpbFN1cmZhY2UgPSBSZW5kZXJUYXJnZXQ5OjptYWtlUmVu
ZGVyVGFyZ2V0OShkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQpLT5nZXRTdXJmYWNlKCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghZGVwdGhTdGVuY2lsU3VyZmFjZSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBFUlIoImRlcHRoIHN0ZW5jaWwgcG9pbnRlciB1bmV4
cGVjdGVkbHkgbnVsbC4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgLy8gQ29u
dGV4dCBtdXN0IGJlIGxvc3QKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbURldmljZS0+
U2V0RGVwdGhTdGVuY2lsU3VyZmFjZShkZXB0aFN0ZW5jaWxTdXJmYWNlKTsKKyAgICAgICAgICAg
IGRlcHRoU3RlbmNpbFN1cmZhY2UtPlJlbGVhc2UoKTsKKworICAgICAgICAgICAgZGVwdGhTaXpl
ID0gZGVwdGhTdGVuY2lsLT5nZXREZXB0aFNpemUoKTsKKyAgICAgICAgICAgIHN0ZW5jaWxTaXpl
ID0gZGVwdGhTdGVuY2lsLT5nZXRTdGVuY2lsU2l6ZSgpOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0RGVwdGhTdGVuY2lsU3VyZmFj
ZShOVUxMKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbURlcHRoU3RlbmNpbEluaXRpYWxp
emVkIHx8IGRlcHRoU2l6ZSAhPSBtQ3VyRGVwdGhTaXplKQorICAgICAgICB7CisgICAgICAgICAg
ICBtQ3VyRGVwdGhTaXplID0gZGVwdGhTaXplOworICAgICAgICAgICAgbUZvcmNlU2V0UmFzdGVy
U3RhdGUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtRGVwdGhTdGVuY2lsSW5p
dGlhbGl6ZWQgfHwgc3RlbmNpbFNpemUgIT0gbUN1clN0ZW5jaWxTaXplKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtQ3VyU3RlbmNpbFNpemUgPSBzdGVuY2lsU2l6ZTsKKyAgICAgICAgICAgIG1G
b3JjZVNldERlcHRoU3RlbmNpbFN0YXRlID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1B
cHBsaWVkRGVwdGhidWZmZXJTZXJpYWwgPSBkZXB0aGJ1ZmZlclNlcmlhbDsKKyAgICAgICAgbUFw
cGxpZWRTdGVuY2lsYnVmZmVyU2VyaWFsID0gc3RlbmNpbGJ1ZmZlclNlcmlhbDsKKyAgICAgICAg
bURlcHRoU3RlbmNpbEluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAocmVuZGVy
VGFyZ2V0Q2hhbmdlZCB8fCAhbVJlbmRlclRhcmdldERlc2NJbml0aWFsaXplZCkKKyAgICB7Cisg
ICAgICAgIG1Gb3JjZVNldFNjaXNzb3IgPSB0cnVlOworICAgICAgICBtRm9yY2VTZXRWaWV3cG9y
dCA9IHRydWU7CisKKyAgICAgICAgbVJlbmRlclRhcmdldERlc2Mud2lkdGggPSByZW5kZXJidWZm
ZXJPYmplY3QtPmdldFdpZHRoKCk7CisgICAgICAgIG1SZW5kZXJUYXJnZXREZXNjLmhlaWdodCA9
IHJlbmRlcmJ1ZmZlck9iamVjdC0+Z2V0SGVpZ2h0KCk7CisgICAgICAgIG1SZW5kZXJUYXJnZXRE
ZXNjLmZvcm1hdCA9IHJlbmRlcmJ1ZmZlck9iamVjdC0+Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAg
ICAgIG1SZW5kZXJUYXJnZXREZXNjSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCitHTGVudW0gUmVuZGVyZXI5OjphcHBseVZlcnRleEJ1ZmZlcihnbDo6
UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSwgZ2w6OlZlcnRleEF0dHJpYnV0ZSB2ZXJ0ZXhB
dHRyaWJ1dGVzW10sIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNl
cykKK3sKKyAgICBUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNbZ2w6Ok1BWF9WRVJURVhf
QVRUUklCU107CisgICAgR0xlbnVtIGVyciA9IG1WZXJ0ZXhEYXRhTWFuYWdlci0+cHJlcGFyZVZl
cnRleERhdGEodmVydGV4QXR0cmlidXRlcywgcHJvZ3JhbUJpbmFyeSwgZmlyc3QsIGNvdW50LCBh
dHRyaWJ1dGVzLCBpbnN0YW5jZXMpOworICAgIGlmIChlcnIgIT0gR0xfTk9fRVJST1IpCisgICAg
eworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbVZlcnRleERl
Y2xhcmF0aW9uQ2FjaGUuYXBwbHlEZWNsYXJhdGlvbihtRGV2aWNlLCBhdHRyaWJ1dGVzLCBwcm9n
cmFtQmluYXJ5LCBpbnN0YW5jZXMsICZtUmVwZWF0RHJhdyk7Cit9CisKKy8vIEFwcGxpZXMgdGhl
IGluZGljZXMgYW5kIGVsZW1lbnQgYXJyYXkgYmluZGluZ3MgdG8gdGhlIERpcmVjdDNEIDkgZGV2
aWNlCitHTGVudW0gUmVuZGVyZXI5OjphcHBseUluZGV4QnVmZmVyKGNvbnN0IEdMdm9pZCAqaW5k
aWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyLCBHTHNpemVpIGNvdW50LCBHTGVu
dW0gbW9kZSwgR0xlbnVtIHR5cGUsIFRyYW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbykKK3sK
KyAgICBHTGVudW0gZXJyID0gbUluZGV4RGF0YU1hbmFnZXItPnByZXBhcmVJbmRleERhdGEodHlw
ZSwgY291bnQsIGVsZW1lbnRBcnJheUJ1ZmZlciwgaW5kaWNlcywgaW5kZXhJbmZvKTsKKworICAg
IGlmIChlcnIgPT0gR0xfTk9fRVJST1IpCisgICAgeworICAgICAgICAvLyBEaXJlY3RseSBiaW5k
aW5nIHRoZSBzdG9yYWdlIGJ1ZmZlciBpcyBub3Qgc3VwcG9ydGVkIGZvciBkM2Q5CisgICAgICAg
IEFTU0VSVChpbmRleEluZm8tPnN0b3JhZ2UgPT0gTlVMTCk7CisKKyAgICAgICAgaWYgKGluZGV4
SW5mby0+c2VyaWFsICE9IG1BcHBsaWVkSUJTZXJpYWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEluZGV4QnVmZmVyOSogaW5kZXhCdWZmZXIgPSBJbmRleEJ1ZmZlcjk6Om1ha2VJbmRleEJ1ZmZl
cjkoaW5kZXhJbmZvLT5pbmRleEJ1ZmZlcik7CisKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldElu
ZGljZXMoaW5kZXhCdWZmZXItPmdldEJ1ZmZlcigpKTsKKyAgICAgICAgICAgIG1BcHBsaWVkSUJT
ZXJpYWwgPSBpbmRleEluZm8tPnNlcmlhbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBlcnI7Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjpkcmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTHNp
emVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcykKK3sKKyAgICBzdGFydFNjZW5lKCk7CisgICAg
ICAgIAorICAgIGlmIChtb2RlID09IEdMX0xJTkVfTE9PUCkKKyAgICB7CisgICAgICAgIGRyYXdM
aW5lTG9vcChjb3VudCwgR0xfTk9ORSwgTlVMTCwgMCwgTlVMTCk7CisgICAgfQorICAgIGVsc2Ug
aWYgKGluc3RhbmNlcyA+IDApCisgICAgeworICAgICAgICBTdGF0aWNJbmRleEJ1ZmZlckludGVy
ZmFjZSAqY291bnRpbmdJQiA9IG1JbmRleERhdGFNYW5hZ2VyLT5nZXRDb3VudGluZ0luZGljZXMo
Y291bnQpOworICAgICAgICBpZiAoY291bnRpbmdJQikKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKG1BcHBsaWVkSUJTZXJpYWwgIT0gY291bnRpbmdJQi0+Z2V0U2VyaWFsKCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgSW5kZXhCdWZmZXI5ICppbmRleEJ1ZmZlciA9IEluZGV4
QnVmZmVyOTo6bWFrZUluZGV4QnVmZmVyOShjb3VudGluZ0lCLT5nZXRJbmRleEJ1ZmZlcigpKTsK
KworICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNldEluZGljZXMoaW5kZXhCdWZmZXItPmdldEJ1
ZmZlcigpKTsKKyAgICAgICAgICAgICAgICBtQXBwbGllZElCU2VyaWFsID0gY291bnRpbmdJQi0+
Z2V0U2VyaWFsKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbVJlcGVhdERyYXc7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBt
RGV2aWNlLT5EcmF3SW5kZXhlZFByaW1pdGl2ZShtUHJpbWl0aXZlVHlwZSwgMCwgMCwgY291bnQs
IDAsIG1QcmltaXRpdmVDb3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgYSBjb3Vu
dGluZyBpbmRleCBidWZmZXIgZm9yIGdsRHJhd0FycmF5c0luc3RhbmNlZC4iKTsKKyAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgZWxzZSAgIC8vIFJlZ3VsYXIgY2FzZQorICAgIHsKKyAgICAgICAgbURldmljZS0+RHJh
d1ByaW1pdGl2ZShtUHJpbWl0aXZlVHlwZSwgMCwgbVByaW1pdGl2ZUNvdW50KTsKKyAgICB9Cit9
CisKK3ZvaWQgUmVuZGVyZXI5OjpkcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291
bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGdsOjpCdWZmZXIgKmVsZW1l
bnRBcnJheUJ1ZmZlciwgY29uc3QgVHJhbnNsYXRlZEluZGV4RGF0YSAmaW5kZXhJbmZvLCBHTHNp
emVpIC8qaW5zdGFuY2VzKi8pCit7CisgICAgc3RhcnRTY2VuZSgpOworCisgICAgaWYgKG1vZGUg
PT0gR0xfUE9JTlRTKQorICAgIHsKKyAgICAgICAgZHJhd0luZGV4ZWRQb2ludHMoY291bnQsIHR5
cGUsIGluZGljZXMsIGVsZW1lbnRBcnJheUJ1ZmZlcik7CisgICAgfQorICAgIGVsc2UgaWYgKG1v
ZGUgPT0gR0xfTElORV9MT09QKQorICAgIHsKKyAgICAgICAgZHJhd0xpbmVMb29wKGNvdW50LCB0
eXBlLCBpbmRpY2VzLCBpbmRleEluZm8ubWluSW5kZXgsIGVsZW1lbnRBcnJheUJ1ZmZlcik7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbVJlcGVh
dERyYXc7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgR0xzaXplaSB2ZXJ0ZXhDb3VudCA9
IGluZGV4SW5mby5tYXhJbmRleCAtIGluZGV4SW5mby5taW5JbmRleCArIDE7CisgICAgICAgICAg
ICBtRGV2aWNlLT5EcmF3SW5kZXhlZFByaW1pdGl2ZShtUHJpbWl0aXZlVHlwZSwgLShJTlQpaW5k
ZXhJbmZvLm1pbkluZGV4LCBpbmRleEluZm8ubWluSW5kZXgsIHZlcnRleENvdW50LCBpbmRleElu
Zm8uc3RhcnRJbmRleCwgbVByaW1pdGl2ZUNvdW50KTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBSZW5kZXJlcjk6OmRyYXdMaW5lTG9vcChHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwg
Y29uc3QgR0x2b2lkICppbmRpY2VzLCBpbnQgbWluSW5kZXgsIGdsOjpCdWZmZXIgKmVsZW1lbnRB
cnJheUJ1ZmZlcikKK3sKKyAgICAvLyBHZXQgdGhlIHJhdyBpbmRpY2VzIGZvciBhbiBpbmRleGVk
IGRyYXcKKyAgICBpZiAodHlwZSAhPSBHTF9OT05FICYmIGVsZW1lbnRBcnJheUJ1ZmZlcikKKyAg
ICB7CisgICAgICAgIGdsOjpCdWZmZXIgKmluZGV4QnVmZmVyID0gZWxlbWVudEFycmF5QnVmZmVy
OworICAgICAgICBCdWZmZXJTdG9yYWdlICpzdG9yYWdlID0gaW5kZXhCdWZmZXItPmdldFN0b3Jh
Z2UoKTsKKyAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4oaW5kaWNlcyk7CisgICAgICAgIGluZGljZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRl
Kj4oc3RvcmFnZS0+Z2V0RGF0YSgpKSArIG9mZnNldDsKKyAgICB9CisKKyAgICBVSU5UIHN0YXJ0
SW5kZXggPSAwOworCisgICAgaWYgKGdldDMyQml0SW5kZXhTdXBwb3J0KCkpCisgICAgeworICAg
ICAgICBpZiAoIW1MaW5lTG9vcElCKQorICAgICAgICB7CisgICAgICAgICAgICBtTGluZUxvb3BJ
QiA9IG5ldyBTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZSh0aGlzKTsKKyAgICAgICAgICAg
IGlmICghbUxpbmVMb29wSUItPnJlc2VydmVCdWZmZXJTcGFjZShJTklUSUFMX0lOREVYX0JVRkZF
Ul9TSVpFLCBHTF9VTlNJR05FRF9JTlQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGRlbGV0ZSBtTGluZUxvb3BJQjsKKyAgICAgICAgICAgICAgICBtTGluZUxvb3BJQiA9IE5VTEw7
CisKKyAgICAgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgYSAzMi1iaXQgbG9vcGlu
ZyBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9PUC4iKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQgKyAxKSA+IChz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpIC8gc2l6ZW9mKHVuc2lnbmVk
IGludCkpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgYSAz
Mi1iaXQgbG9vcGluZyBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9PUCwgdG9vIG1hbnkgaW5k
aWNlcyByZXF1aXJlZC4iKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgc3BhY2VO
ZWVkZWQgPSAoY291bnQgKyAxKSAqIHNpemVvZih1bnNpZ25lZCBpbnQpOworICAgICAgICBpZiAo
IW1MaW5lTG9vcElCLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lHTkVE
X0lOVCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiQ291bGQgbm90IHJlc2VydmUgZW5v
dWdoIHNwYWNlIGluIGxvb3BpbmcgaW5kZXggYnVmZmVyIGZvciBHTF9MSU5FX0xPT1AuIik7Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCogbWFwcGVkTWVtb3J5ID0gTlVMTDsKKyAgICAgICAgaW50IG9mZnNl
dCA9IG1MaW5lTG9vcElCLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnkpOwor
ICAgICAgICBpZiAob2Zmc2V0ID09IC0xIHx8IG1hcHBlZE1lbW9yeSA9PSBOVUxMKQorICAgICAg
ICB7CisgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBtYXAgaW5kZXggYnVmZmVyIGZvciBHTF9M
SU5FX0xPT1AuIik7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhcnRJbmRleCA9IHN0YXRpY19jYXN0PFVJTlQ+
KG9mZnNldCkgLyA0OworICAgICAgICB1bnNpZ25lZCBpbnQgKmRhdGEgPSByZWludGVycHJldF9j
YXN0PHVuc2lnbmVkIGludCo+KG1hcHBlZE1lbW9yeSk7CisKKyAgICAgICAgc3dpdGNoICh0eXBl
KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9OT05FOiAgIC8vIE5vbi1pbmRleGVkIGRy
YXcKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBkYXRhW2ldID0gaTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGRhdGFbY291bnRdID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291
bnQ7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkYXRhW2ldID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KGluZGljZXMpW2ldOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZGF0YVtjb3VudF0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5kaWNlcylb
MF07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JU
OgorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVzaG9y
dCo+KGluZGljZXMpW2ldOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGF0YVtjb3VudF0g
PSBzdGF0aWNfY2FzdDxjb25zdCBHTHVzaG9ydCo+KGluZGljZXMpWzBdOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWludCo+KGluZGljZXMpW2ldOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZGF0YVtjb3VudF0gPSBzdGF0aWNfY2FzdDxjb25zdCBH
THVpbnQqPihpbmRpY2VzKVswXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1
bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1MaW5lTG9vcElC
LT51bm1hcEJ1ZmZlcigpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCB1
bm1hcCBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9PUC4iKTsKKyAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgaWYgKCFtTGluZUxvb3BJQikKKyAgICAgICAgeworICAgICAgICAg
ICAgbUxpbmVMb29wSUIgPSBuZXcgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2UodGhpcyk7
CisgICAgICAgICAgICBpZiAoIW1MaW5lTG9vcElCLT5yZXNlcnZlQnVmZmVyU3BhY2UoSU5JVElB
TF9JTkRFWF9CVUZGRVJfU0laRSwgR0xfVU5TSUdORURfU0hPUlQpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGRlbGV0ZSBtTGluZUxvb3BJQjsKKyAgICAgICAgICAgICAgICBtTGlu
ZUxvb3BJQiA9IE5VTEw7CisKKyAgICAgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUg
YSAxNi1iaXQgbG9vcGluZyBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9PUC4iKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
Y291bnQgKyAxKSA+IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIHNob3J0Pjo6bWF4KCkg
LyBzaXplb2YodW5zaWduZWQgc2hvcnQpKSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJD
b3VsZCBub3QgY3JlYXRlIGEgMTYtYml0IGxvb3BpbmcgaW5kZXggYnVmZmVyIGZvciBHTF9MSU5F
X0xPT1AsIHRvbyBtYW55IGluZGljZXMgcmVxdWlyZWQuIik7CisgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3Qg
aW50IHNwYWNlTmVlZGVkID0gKGNvdW50ICsgMSkgKiBzaXplb2YodW5zaWduZWQgc2hvcnQpOwor
ICAgICAgICBpZiAoIW1MaW5lTG9vcElCLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQs
IEdMX1VOU0lHTkVEX1NIT1JUKSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJDb3VsZCBu
b3QgcmVzZXJ2ZSBlbm91Z2ggc3BhY2UgaW4gbG9vcGluZyBpbmRleCBidWZmZXIgZm9yIEdMX0xJ
TkVfTE9PUC4iKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkKiBtYXBwZWRNZW1vcnkgPSBOVUxMOworICAg
ICAgICBpbnQgb2Zmc2V0ID0gbUxpbmVMb29wSUItPm1hcEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1h
cHBlZE1lbW9yeSk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gLTEgfHwgbWFwcGVkTWVtb3J5ID09
IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiQ291bGQgbm90IG1hcCBpbmRleCBi
dWZmZXIgZm9yIEdMX0xJTkVfTE9PUC4iKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIH0KKworICAgICAgICBzdGFydEluZGV4ID0gc3Rh
dGljX2Nhc3Q8VUlOVD4ob2Zmc2V0KSAvIDI7CisgICAgICAgIHVuc2lnbmVkIHNob3J0ICpkYXRh
ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KG1hcHBlZE1lbW9yeSk7CisKKyAg
ICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9OT05FOiAg
IC8vIE5vbi1pbmRleGVkIGRyYXcKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291
bnQ7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkYXRhW2ldID0gaTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGRhdGFbY291bnRdID0gMDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KGluZGljZXMpW2ldOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZGF0YVtjb3VudF0gPSBzdGF0aWNfY2FzdDxjb25zdCBH
THVieXRlKj4oaW5kaWNlcylbMF07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNf
Y2FzdDxjb25zdCBHTHVzaG9ydCo+KGluZGljZXMpW2ldOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZGF0YVtjb3VudF0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVzaG9ydCo+KGluZGljZXMp
WzBdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6
CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWludCo+
KGluZGljZXMpW2ldOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGF0YVtjb3VudF0gPSBz
dGF0aWNfY2FzdDxjb25zdCBHTHVpbnQqPihpbmRpY2VzKVswXTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIW1MaW5lTG9vcElCLT51bm1hcEJ1ZmZlcigpKQorICAgICAgICB7CisgICAgICAgICAg
ICBFUlIoIkNvdWxkIG5vdCB1bm1hcCBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9PUC4iKTsK
KyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAobUFwcGxpZWRJQlNlcmlhbCAhPSBtTGluZUxvb3BJQi0+Z2V0
U2VyaWFsKCkpCisgICAgeworICAgICAgICBJbmRleEJ1ZmZlcjkgKmluZGV4QnVmZmVyID0gSW5k
ZXhCdWZmZXI5OjptYWtlSW5kZXhCdWZmZXI5KG1MaW5lTG9vcElCLT5nZXRJbmRleEJ1ZmZlcigp
KTsKKworICAgICAgICBtRGV2aWNlLT5TZXRJbmRpY2VzKGluZGV4QnVmZmVyLT5nZXRCdWZmZXIo
KSk7CisgICAgICAgIG1BcHBsaWVkSUJTZXJpYWwgPSBtTGluZUxvb3BJQi0+Z2V0U2VyaWFsKCk7
CisgICAgfQorCisgICAgbURldmljZS0+RHJhd0luZGV4ZWRQcmltaXRpdmUoRDNEUFRfTElORVNU
UklQLCAtbWluSW5kZXgsIG1pbkluZGV4LCBjb3VudCwgc3RhcnRJbmRleCwgY291bnQpOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0YXRpYyB2b2lkIGRyYXdQb2ludHMoSURpcmVjdDNE
RGV2aWNlOSogZGV2aWNlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZvaWQgKmluZGljZXMpCit7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgdW5z
aWduZWQgaW50IGluZGV4VmFsdWUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHN0YXRpY19j
YXN0PGNvbnN0IFQqPihpbmRpY2VzKVtpXSk7CisgICAgICAgIGRldmljZS0+RHJhd1ByaW1pdGl2
ZShEM0RQVF9QT0lOVExJU1QsIGluZGV4VmFsdWUsIDEpOworICAgIH0KK30KKwordm9pZCBSZW5k
ZXJlcjk6OmRyYXdJbmRleGVkUG9pbnRzKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25z
dCBHTHZvaWQgKmluZGljZXMsIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlcikKK3sKKyAg
ICAvLyBEcmF3aW5nIGluZGV4IHBvaW50IGxpc3RzIGlzIHVuc3VwcG9ydGVkIGluIGQzZDksIGZh
bGwgYmFjayB0byBhIHJlZ3VsYXIgRHJhd1ByaW1pdGl2ZSBjYWxsCisgICAgLy8gZm9yIGVhY2gg
aW5kaXZpZHVhbCBwb2ludC4gVGhpcyBjYWxsIGlzIG5vdCBleHBlY3RlZCB0byBoYXBwZW4gb2Z0
ZW4uCisKKyAgICBpZiAoZWxlbWVudEFycmF5QnVmZmVyKQorICAgIHsKKyAgICAgICAgQnVmZmVy
U3RvcmFnZSAqc3RvcmFnZSA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+Z2V0U3RvcmFnZSgpOworICAg
ICAgICBpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PGludHB0cl90PihpbmRpY2Vz
KTsKKyAgICAgICAgaW5kaWNlcyA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihzdG9yYWdl
LT5nZXREYXRhKCkpICsgb2Zmc2V0OworICAgIH0KKworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURTogIGRyYXdQb2ludHM8R0x1Ynl0ZT4obURl
dmljZSwgY291bnQsIGluZGljZXMpOyAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
U0hPUlQ6IGRyYXdQb2ludHM8R0x1c2hvcnQ+KG1EZXZpY2UsIGNvdW50LCBpbmRpY2VzKTsgYnJl
YWs7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOiAgIGRyYXdQb2ludHM8R0x1aW50Piht
RGV2aWNlLCBjb3VudCwgaW5kaWNlcyk7ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6IFVOUkVB
Q0hBQkxFKCk7CisgICAgfQorfQorCit2b2lkIFJlbmRlcmVyOTo6YXBwbHlTaGFkZXJzKGdsOjpQ
cm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5KQoreworICAgIHVuc2lnbmVkIGludCBwcm9ncmFt
QmluYXJ5U2VyaWFsID0gcHJvZ3JhbUJpbmFyeS0+Z2V0U2VyaWFsKCk7CisgICAgaWYgKHByb2dy
YW1CaW5hcnlTZXJpYWwgIT0gbUFwcGxpZWRQcm9ncmFtQmluYXJ5U2VyaWFsKQorICAgIHsKKyAg
ICAgICAgU2hhZGVyRXhlY3V0YWJsZSAqdmVydGV4RXhlID0gcHJvZ3JhbUJpbmFyeS0+Z2V0VmVy
dGV4RXhlY3V0YWJsZSgpOworICAgICAgICBTaGFkZXJFeGVjdXRhYmxlICpwaXhlbEV4ZSA9IHBy
b2dyYW1CaW5hcnktPmdldFBpeGVsRXhlY3V0YWJsZSgpOworCisgICAgICAgIElEaXJlY3QzRFZl
cnRleFNoYWRlcjkgKnZlcnRleFNoYWRlciA9IE5VTEw7CisgICAgICAgIGlmICh2ZXJ0ZXhFeGUp
IHZlcnRleFNoYWRlciA9IFNoYWRlckV4ZWN1dGFibGU5OjptYWtlU2hhZGVyRXhlY3V0YWJsZTko
dmVydGV4RXhlKS0+Z2V0VmVydGV4U2hhZGVyKCk7CisKKyAgICAgICAgSURpcmVjdDNEUGl4ZWxT
aGFkZXI5ICpwaXhlbFNoYWRlciA9IE5VTEw7CisgICAgICAgIGlmIChwaXhlbEV4ZSkgcGl4ZWxT
aGFkZXIgPSBTaGFkZXJFeGVjdXRhYmxlOTo6bWFrZVNoYWRlckV4ZWN1dGFibGU5KHBpeGVsRXhl
KS0+Z2V0UGl4ZWxTaGFkZXIoKTsKKworICAgICAgICBtRGV2aWNlLT5TZXRQaXhlbFNoYWRlcihw
aXhlbFNoYWRlcik7CisgICAgICAgIG1EZXZpY2UtPlNldFZlcnRleFNoYWRlcih2ZXJ0ZXhTaGFk
ZXIpOworICAgICAgICBwcm9ncmFtQmluYXJ5LT5kaXJ0eUFsbFVuaWZvcm1zKCk7CisgICAgICAg
IG1EeFVuaWZvcm1zRGlydHkgPSB0cnVlOworCisgICAgICAgIG1BcHBsaWVkUHJvZ3JhbUJpbmFy
eVNlcmlhbCA9IHByb2dyYW1CaW5hcnlTZXJpYWw7CisgICAgfQorfQorCit2b2lkIFJlbmRlcmVy
OTo6YXBwbHlVbmlmb3JtcyhnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSwgZ2w6OlVu
aWZvcm1BcnJheSAqdW5pZm9ybUFycmF5KQoreworICAgIGZvciAoc3RkOjp2ZWN0b3I8Z2w6OlVu
aWZvcm0qPjo6Y29uc3RfaXRlcmF0b3IgdWIgPSB1bmlmb3JtQXJyYXktPmJlZ2luKCksIHVlID0g
dW5pZm9ybUFycmF5LT5lbmQoKTsgdWIgIT0gdWU7ICsrdWIpCisgICAgeworICAgICAgICBnbDo6
VW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9ICp1YjsKKworICAgICAgICBpZiAodGFyZ2V0VW5pZm9y
bS0+ZGlydHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMZmxvYXQgKmYgPSAoR0xmbG9hdCop
dGFyZ2V0VW5pZm9ybS0+ZGF0YTsKKyAgICAgICAgICAgIEdMaW50ICppID0gKEdMaW50Kil0YXJn
ZXRVbmlmb3JtLT5kYXRhOworCisgICAgICAgICAgICBzd2l0Y2ggKHRhcmdldFVuaWZvcm0tPnR5
cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfU0FNUExFUl8yRDoKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9TQU1QTEVSX0NVQkU6CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgR0xfQk9PTDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9CT09M
X1ZFQzI6CisgICAgICAgICAgICAgIGNhc2UgR0xfQk9PTF9WRUMzOgorICAgICAgICAgICAgICBj
YXNlIEdMX0JPT0xfVkVDNDoKKyAgICAgICAgICAgICAgICBhcHBseVVuaWZvcm1uYnYodGFyZ2V0
VW5pZm9ybSwgaSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfRkxPQVQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKKyAgICAgICAgICAg
ICAgY2FzZSBHTF9GTE9BVF9WRUMzOgorICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6
CisgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjoKKyAgICAgICAgICAgICAgY2FzZSBH
TF9GTE9BVF9NQVQzOgorICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAg
ICAgICAgICAgYXBwbHlVbmlmb3JtbmZ2KHRhcmdldFVuaWZvcm0sIGYpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9JTlRfVkVDMjoKKyAgICAgICAgICAgICAgY2FzZSBHTF9JTlRfVkVDMzoKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9JTlRfVkVDNDoKKyAgICAgICAgICAgICAgICBhcHBseVVuaWZvcm1uaXYo
dGFyZ2V0VW5pZm9ybSwgaSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdGFyZ2V0VW5pZm9ybS0+ZGlydHkgPSBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIERyaXZlciB1bmlmb3JtcworICAgIGlmIChtRHhVbmlmb3Jtc0RpcnR5
KQorICAgIHsKKyAgICAgICAgbURldmljZS0+U2V0VmVydGV4U2hhZGVyQ29uc3RhbnRGKDAsIChm
bG9hdCopJm1WZXJ0ZXhDb25zdGFudHMsIHNpemVvZihkeF9WZXJ0ZXhDb25zdGFudHMpIC8gc2l6
ZW9mKGZsb2F0WzRdKSk7CisgICAgICAgIG1EZXZpY2UtPlNldFBpeGVsU2hhZGVyQ29uc3RhbnRG
KDAsIChmbG9hdCopJm1QaXhlbENvbnN0YW50cywgc2l6ZW9mKGR4X1BpeGVsQ29uc3RhbnRzKSAv
IHNpemVvZihmbG9hdFs0XSkpOworICAgICAgICBtRHhVbmlmb3Jtc0RpcnR5ID0gZmFsc2U7Cisg
ICAgfQorfQorCit2b2lkIFJlbmRlcmVyOTo6YXBwbHlVbmlmb3JtbmZ2KGdsOjpVbmlmb3JtICp0
YXJnZXRVbmlmb3JtLCBjb25zdCBHTGZsb2F0ICp2KQoreworICAgIGlmICh0YXJnZXRVbmlmb3Jt
LT5wc1JlZ2lzdGVySW5kZXggPj0gMCkKKyAgICB7CisgICAgICAgIG1EZXZpY2UtPlNldFBpeGVs
U2hhZGVyQ29uc3RhbnRGKHRhcmdldFVuaWZvcm0tPnBzUmVnaXN0ZXJJbmRleCwgdiwgdGFyZ2V0
VW5pZm9ybS0+cmVnaXN0ZXJDb3VudCk7CisgICAgfQorCisgICAgaWYgKHRhcmdldFVuaWZvcm0t
PnZzUmVnaXN0ZXJJbmRleCA+PSAwKQorICAgIHsKKyAgICAgICAgbURldmljZS0+U2V0VmVydGV4
U2hhZGVyQ29uc3RhbnRGKHRhcmdldFVuaWZvcm0tPnZzUmVnaXN0ZXJJbmRleCwgdiwgdGFyZ2V0
VW5pZm9ybS0+cmVnaXN0ZXJDb3VudCk7CisgICAgfQorfQorCit2b2lkIFJlbmRlcmVyOTo6YXBw
bHlVbmlmb3Jtbml2KGdsOjpVbmlmb3JtICp0YXJnZXRVbmlmb3JtLCBjb25zdCBHTGludCAqdikK
K3sKKyAgICBBU1NFUlQodGFyZ2V0VW5pZm9ybS0+cmVnaXN0ZXJDb3VudCA8PSBNQVhfVkVSVEVY
X0NPTlNUQU5UX1ZFQ1RPUlNfRDNEOSk7CisgICAgR0xmbG9hdCB2ZWN0b3JbTUFYX1ZFUlRFWF9D
T05TVEFOVF9WRUNUT1JTX0QzRDldWzRdOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCB0YXJnZXRVbmlmb3JtLT5yZWdpc3RlckNvdW50OyBpKyspCisgICAgeworICAgICAgICB2
ZWN0b3JbaV1bMF0gPSAoR0xmbG9hdCl2WzQgKiBpICsgMF07CisgICAgICAgIHZlY3RvcltpXVsx
XSA9IChHTGZsb2F0KXZbNCAqIGkgKyAxXTsKKyAgICAgICAgdmVjdG9yW2ldWzJdID0gKEdMZmxv
YXQpdls0ICogaSArIDJdOworICAgICAgICB2ZWN0b3JbaV1bM10gPSAoR0xmbG9hdCl2WzQgKiBp
ICsgM107CisgICAgfQorCisgICAgYXBwbHlVbmlmb3JtbmZ2KHRhcmdldFVuaWZvcm0sIChHTGZs
b2F0Kil2ZWN0b3IpOworfQorCit2b2lkIFJlbmRlcmVyOTo6YXBwbHlVbmlmb3JtbmJ2KGdsOjpV
bmlmb3JtICp0YXJnZXRVbmlmb3JtLCBjb25zdCBHTGludCAqdikKK3sKKyAgICBBU1NFUlQodGFy
Z2V0VW5pZm9ybS0+cmVnaXN0ZXJDb3VudCA8PSBNQVhfVkVSVEVYX0NPTlNUQU5UX1ZFQ1RPUlNf
RDNEOSk7CisgICAgR0xmbG9hdCB2ZWN0b3JbTUFYX1ZFUlRFWF9DT05TVEFOVF9WRUNUT1JTX0Qz
RDldWzRdOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB0YXJnZXRVbmlmb3Jt
LT5yZWdpc3RlckNvdW50OyBpKyspCisgICAgeworICAgICAgICB2ZWN0b3JbaV1bMF0gPSAodls0
ICogaSArIDBdID09IEdMX0ZBTFNFKSA/IDAuMGYgOiAxLjBmOworICAgICAgICB2ZWN0b3JbaV1b
MV0gPSAodls0ICogaSArIDFdID09IEdMX0ZBTFNFKSA/IDAuMGYgOiAxLjBmOworICAgICAgICB2
ZWN0b3JbaV1bMl0gPSAodls0ICogaSArIDJdID09IEdMX0ZBTFNFKSA/IDAuMGYgOiAxLjBmOwor
ICAgICAgICB2ZWN0b3JbaV1bM10gPSAodls0ICogaSArIDNdID09IEdMX0ZBTFNFKSA/IDAuMGYg
OiAxLjBmOworICAgIH0KKworICAgIGFwcGx5VW5pZm9ybW5mdih0YXJnZXRVbmlmb3JtLCAoR0xm
bG9hdCopdmVjdG9yKTsKK30KKwordm9pZCBSZW5kZXJlcjk6OmNsZWFyKGNvbnN0IGdsOjpDbGVh
clBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lQnVmZmVyKQor
eworICAgIEQzRENPTE9SIGNvbG9yID0gRDNEQ09MT1JfQVJHQihnbDo6dW5vcm08OD4oY2xlYXJQ
YXJhbXMuY29sb3JDbGVhclZhbHVlLmFscGhhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2w6OnVub3JtPDg+KGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZS5yZWQpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oY2xlYXJQYXJh
bXMuY29sb3JDbGVhclZhbHVlLmdyZWVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2w6OnVub3JtPDg+KGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZS5ibHVlKSk7Cisg
ICAgZmxvYXQgZGVwdGggPSBnbDo6Y2xhbXAwMShjbGVhclBhcmFtcy5kZXB0aENsZWFyVmFsdWUp
OworICAgIGludCBzdGVuY2lsID0gY2xlYXJQYXJhbXMuc3RlbmNpbENsZWFyVmFsdWUgJiAweDAw
MDAwMEZGOworCisgICAgdW5zaWduZWQgaW50IHN0ZW5jaWxVbm1hc2tlZCA9IDB4MDsKKyAgICBp
ZiAoKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpICYmIGZyYW1lQnVm
ZmVyLT5oYXNTdGVuY2lsKCkpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgc3RlbmNpbFNp
emUgPSBnbDo6R2V0U3RlbmNpbFNpemUoZnJhbWVCdWZmZXItPmdldFN0ZW5jaWxidWZmZXIoKS0+
Z2V0QWN0dWFsRm9ybWF0KCkpOworICAgICAgICBzdGVuY2lsVW5tYXNrZWQgPSAoMHgxIDw8IHN0
ZW5jaWxTaXplKSAtIDE7CisgICAgfQorCisgICAgYm9vbCBhbHBoYVVubWFza2VkID0gKGdsOjpH
ZXRBbHBoYVNpemUobVJlbmRlclRhcmdldERlc2MuZm9ybWF0KSA9PSAwKSB8fCBjbGVhclBhcmFt
cy5jb2xvck1hc2tBbHBoYTsKKworICAgIGNvbnN0IGJvb2wgbmVlZE1hc2tlZFN0ZW5jaWxDbGVh
ciA9IChjbGVhclBhcmFtcy5tYXNrICYgR0xfU1RFTkNJTF9CVUZGRVJfQklUKSAmJgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGVhclBhcmFtcy5zdGVuY2lsV3Jp
dGVNYXNrICYgc3RlbmNpbFVubWFza2VkKSAhPSBzdGVuY2lsVW5tYXNrZWQ7CisgICAgY29uc3Qg
Ym9vbCBuZWVkTWFza2VkQ29sb3JDbGVhciA9IChjbGVhclBhcmFtcy5tYXNrICYgR0xfQ09MT1Jf
QlVGRkVSX0JJVCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIShj
bGVhclBhcmFtcy5jb2xvck1hc2tSZWQgJiYgY2xlYXJQYXJhbXMuY29sb3JNYXNrR3JlZW4gJiYK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xv
ck1hc2tCbHVlICYmIGFscGhhVW5tYXNrZWQpOworCisgICAgaWYgKG5lZWRNYXNrZWRDb2xvckNs
ZWFyIHx8IG5lZWRNYXNrZWRTdGVuY2lsQ2xlYXIpCisgICAgeworICAgICAgICAvLyBTdGF0ZSB3
aGljaCBpcyBhbHRlcmVkIGluIGFsbCBwYXRocyBmcm9tIHRoaXMgcG9pbnQgdG8gdGhlIGNsZWFy
IGNhbGwgaXMgc2F2ZWQuCisgICAgICAgIC8vIFN0YXRlIHdoaWNoIGlzIGFsdGVyZWQgaW4gb25s
eSBzb21lIHBhdGhzIHdpbGwgYmUgZmxhZ2dlZCBkaXJ0eSBpbiB0aGUgY2FzZSB0aGF0CisgICAg
ICAgIC8vICB0aGF0IHBhdGggaXMgdGFrZW4uCisgICAgICAgIEhSRVNVTFQgaHI7CisgICAgICAg
IGlmIChtTWFza2VkQ2xlYXJTYXZlZFN0YXRlID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGhyID0gbURldmljZS0+QmVnaW5TdGF0ZUJsb2NrKCk7CisgICAgICAgICAgICBBU1NFUlQo
U1VDQ0VFREVEKGhyKSB8fCBociA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBociA9PSBF
X09VVE9GTUVNT1JZKTsKKworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfWldSSVRFRU5BQkxFLCBGQUxTRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShEM0RSU19aRlVOQywgRDNEQ01QX0FMV0FZUyk7CisgICAgICAgICAgICBtRGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19aRU5BQkxFLCBGQUxTRSk7CisgICAgICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DVUxMTU9ERSwgRDNEQ1VMTF9OT05FKTsKKyAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0ZJTExNT0RFLCBEM0RGSUxMX1NPTElE
KTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0FMUEhBVEVTVEVO
QUJMRSwgRkFMU0UpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNf
QUxQSEFCTEVOREVOQUJMRSwgRkFMU0UpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfQ0xJUFBMQU5FRU5BQkxFLCAwKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNl
dFJlbmRlclN0YXRlKEQzRFJTX0NPTE9SV1JJVEVFTkFCTEUsIDApOworICAgICAgICAgICAgbURl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTEVOQUJMRSwgRkFMU0UpOworICAgICAg
ICAgICAgbURldmljZS0+U2V0UGl4ZWxTaGFkZXIoTlVMTCk7CisgICAgICAgICAgICBtRGV2aWNl
LT5TZXRWZXJ0ZXhTaGFkZXIoTlVMTCk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRGVkYoRDNE
RlZGX1hZWlJIVyB8IEQzREZWRl9ESUZGVVNFKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFN0
cmVhbVNvdXJjZSgwLCBOVUxMLCAwLCAwKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRl
clN0YXRlKEQzRFJTX1NFUEFSQVRFQUxQSEFCTEVOREVOQUJMRSwgVFJVRSk7CisgICAgICAgICAg
ICBtRGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQ09MT1JPUCwgRDNEVE9Q
X1NFTEVDVEFSRzEpOworICAgICAgICAgICAgbURldmljZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUo
MCwgRDNEVFNTX0NPTE9SQVJHMSwgRDNEVEFfVEZBQ1RPUik7CisgICAgICAgICAgICBtRGV2aWNl
LT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQUxQSEFPUCwgRDNEVE9QX1NFTEVDVEFS
RzEpOworICAgICAgICAgICAgbURldmljZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNT
X0FMUEhBQVJHMSwgRDNEVEFfVEZBQ1RPUik7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19URVhUVVJFRkFDVE9SLCBjb2xvcik7CisgICAgICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShEM0RSU19NVUxUSVNBTVBMRU1BU0ssIDB4RkZGRkZGRkYpOworCisg
ICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNldFN0cmVhbVNvdXJj
ZUZyZXEoaSwgMSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGhyID0gbURldmljZS0+
RW5kU3RhdGVCbG9jaygmbU1hc2tlZENsZWFyU2F2ZWRTdGF0ZSk7CisgICAgICAgICAgICBBU1NF
UlQoU1VDQ0VFREVEKGhyKSB8fCBociA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBociA9
PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChtTWFza2VkQ2xl
YXJTYXZlZFN0YXRlICE9IE5VTEwpOworCisgICAgICAgIGlmIChtTWFza2VkQ2xlYXJTYXZlZFN0
YXRlICE9IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGhyID0gbU1hc2tlZENsZWFyU2F2
ZWRTdGF0ZS0+Q2FwdHVyZSgpOworICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOwor
ICAgICAgICB9CisKKyAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWldSSVRF
RU5BQkxFLCBGQUxTRSk7CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pG
VU5DLCBEM0RDTVBfQUxXQVlTKTsKKyAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfWkVOQUJMRSwgRkFMU0UpOworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RS
U19DVUxMTU9ERSwgRDNEQ1VMTF9OT05FKTsKKyAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfRklMTE1PREUsIEQzREZJTExfU09MSUQpOworICAgICAgICBtRGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShEM0RSU19BTFBIQVRFU1RFTkFCTEUsIEZBTFNFKTsKKyAgICAgICAgbURldmlj
ZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFCTEVOREVOQUJMRSwgRkFMU0UpOworICAgICAg
ICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DTElQUExBTkVFTkFCTEUsIDApOworCisg
ICAgICAgIGlmIChjbGVhclBhcmFtcy5tYXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJVCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklU
RUVOQUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkNv
bnZlcnRDb2xvck1hc2soY2xlYXJQYXJhbXMuY29sb3JNYXNrUmVkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFt
cy5jb2xvck1hc2tHcmVlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2xlYXJQYXJhbXMuY29sb3JNYXNrQWxwaGEpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NPTE9S
V1JJVEVFTkFCTEUsIDApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0ZW5jaWxVbm1hc2tl
ZCAhPSAweDAgJiYgKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpKQor
ICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVO
Q0lMRU5BQkxFLCBUUlVFKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQz
RFJTX1RXT1NJREVEU1RFTkNJTE1PREUsIEZBTFNFKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNl
dFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxGVU5DLCBEM0RDTVBfQUxXQVlTKTsKKyAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxSRUYsIHN0ZW5jaWwpOwor
ICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTFdSSVRFTUFT
SywgY2xlYXJQYXJhbXMuc3RlbmNpbFdyaXRlTWFzayk7CisgICAgICAgICAgICBtRGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMRkFJTCwgRDNEU1RFTkNJTE9QX1JFUExBQ0UpOwor
ICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTFpGQUlMLCBE
M0RTVEVOQ0lMT1BfUkVQTEFDRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShEM0RSU19TVEVOQ0lMUEFTUywgRDNEU1RFTkNJTE9QX1JFUExBQ0UpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfU1RFTkNJTEVOQUJMRSwgRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgbURl
dmljZS0+U2V0UGl4ZWxTaGFkZXIoTlVMTCk7CisgICAgICAgIG1EZXZpY2UtPlNldFZlcnRleFNo
YWRlcihOVUxMKTsKKyAgICAgICAgbURldmljZS0+U2V0RlZGKEQzREZWRl9YWVpSSFcpOworICAg
ICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TRVBBUkFURUFMUEhBQkxFTkRFTkFC
TEUsIFRSVUUpOworICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RU
U1NfQ09MT1JPUCwgRDNEVE9QX1NFTEVDVEFSRzEpOworICAgICAgICBtRGV2aWNlLT5TZXRUZXh0
dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQ09MT1JBUkcxLCBEM0RUQV9URkFDVE9SKTsKKyAgICAg
ICAgbURldmljZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNTX0FMUEhBT1AsIEQzRFRP
UF9TRUxFQ1RBUkcxKTsKKyAgICAgICAgbURldmljZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUoMCwg
RDNEVFNTX0FMUEhBQVJHMSwgRDNEVEFfVEZBQ1RPUik7CisgICAgICAgIG1EZXZpY2UtPlNldFJl
bmRlclN0YXRlKEQzRFJTX1RFWFRVUkVGQUNUT1IsIGNvbG9yKTsKKyAgICAgICAgbURldmljZS0+
U2V0UmVuZGVyU3RhdGUoRDNEUlNfTVVMVElTQU1QTEVNQVNLLCAweEZGRkZGRkZGKTsKKworICAg
ICAgICBmb3IoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAg
ICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRTdHJlYW1Tb3VyY2VGcmVxKGksIDEpOwor
ICAgICAgICB9CisKKyAgICAgICAgZmxvYXQgcXVhZFs0XVs0XTsgICAvLyBBIHF1YWRyaWxhdGVy
YWwgY292ZXJpbmcgdGhlIHRhcmdldCwgYWxpZ25lZCB0byBtYXRjaCB0aGUgZWRnZXMKKyAgICAg
ICAgcXVhZFswXVswXSA9IC0wLjVmOworICAgICAgICBxdWFkWzBdWzFdID0gbVJlbmRlclRhcmdl
dERlc2MuaGVpZ2h0IC0gMC41ZjsKKyAgICAgICAgcXVhZFswXVsyXSA9IDAuMGY7CisgICAgICAg
IHF1YWRbMF1bM10gPSAxLjBmOworCisgICAgICAgIHF1YWRbMV1bMF0gPSBtUmVuZGVyVGFyZ2V0
RGVzYy53aWR0aCAtIDAuNWY7CisgICAgICAgIHF1YWRbMV1bMV0gPSBtUmVuZGVyVGFyZ2V0RGVz
Yy5oZWlnaHQgLSAwLjVmOworICAgICAgICBxdWFkWzFdWzJdID0gMC4wZjsKKyAgICAgICAgcXVh
ZFsxXVszXSA9IDEuMGY7CisKKyAgICAgICAgcXVhZFsyXVswXSA9IC0wLjVmOworICAgICAgICBx
dWFkWzJdWzFdID0gLTAuNWY7CisgICAgICAgIHF1YWRbMl1bMl0gPSAwLjBmOworICAgICAgICBx
dWFkWzJdWzNdID0gMS4wZjsKKworICAgICAgICBxdWFkWzNdWzBdID0gbVJlbmRlclRhcmdldERl
c2Mud2lkdGggLSAwLjVmOworICAgICAgICBxdWFkWzNdWzFdID0gLTAuNWY7CisgICAgICAgIHF1
YWRbM11bMl0gPSAwLjBmOworICAgICAgICBxdWFkWzNdWzNdID0gMS4wZjsKKworICAgICAgICBz
dGFydFNjZW5lKCk7CisgICAgICAgIG1EZXZpY2UtPkRyYXdQcmltaXRpdmVVUChEM0RQVF9UUklB
TkdMRVNUUklQLCAyLCBxdWFkLCBzaXplb2YoZmxvYXRbNF0pKTsKKworICAgICAgICBpZiAoY2xl
YXJQYXJhbXMubWFzayAmIEdMX0RFUFRIX0JVRkZFUl9CSVQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pFTkFCTEUsIFRSVUUpOworICAgICAg
ICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWldSSVRFRU5BQkxFLCBUUlVFKTsK
KyAgICAgICAgICAgIG1EZXZpY2UtPkNsZWFyKDAsIE5VTEwsIEQzRENMRUFSX1pCVUZGRVIsIGNv
bG9yLCBkZXB0aCwgc3RlbmNpbCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobU1hc2tlZENs
ZWFyU2F2ZWRTdGF0ZSAhPSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAgICBtTWFza2VkQ2xl
YXJTYXZlZFN0YXRlLT5BcHBseSgpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGNs
ZWFyUGFyYW1zLm1hc2spCisgICAgeworICAgICAgICBEV09SRCBkeENsZWFyRmxhZ3MgPSAwOwor
ICAgICAgICBpZiAoY2xlYXJQYXJhbXMubWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGR4Q2xlYXJGbGFncyB8PSBEM0RDTEVBUl9UQVJHRVQ7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9ERVBUSF9CVUZGRVJfQklU
KQorICAgICAgICB7CisgICAgICAgICAgICBkeENsZWFyRmxhZ3MgfD0gRDNEQ0xFQVJfWkJVRkZF
UjsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2xlYXJQYXJhbXMubWFzayAmIEdMX1NURU5DSUxf
QlVGRkVSX0JJVCkKKyAgICAgICAgeworICAgICAgICAgICAgZHhDbGVhckZsYWdzIHw9IEQzRENM
RUFSX1NURU5DSUw7CisgICAgICAgIH0KKworICAgICAgICBtRGV2aWNlLT5DbGVhcigwLCBOVUxM
LCBkeENsZWFyRmxhZ3MsIGNvbG9yLCBkZXB0aCwgc3RlbmNpbCk7CisgICAgfQorfQorCit2b2lk
IFJlbmRlcmVyOTo6bWFya0FsbFN0YXRlRGlydHkoKQoreworICAgIG1BcHBsaWVkUmVuZGVyVGFy
Z2V0U2VyaWFsID0gMDsKKyAgICBtQXBwbGllZERlcHRoYnVmZmVyU2VyaWFsID0gMDsKKyAgICBt
QXBwbGllZFN0ZW5jaWxidWZmZXJTZXJpYWwgPSAwOworICAgIG1EZXB0aFN0ZW5jaWxJbml0aWFs
aXplZCA9IGZhbHNlOworICAgIG1SZW5kZXJUYXJnZXREZXNjSW5pdGlhbGl6ZWQgPSBmYWxzZTsK
KworICAgIG1Gb3JjZVNldERlcHRoU3RlbmNpbFN0YXRlID0gdHJ1ZTsKKyAgICBtRm9yY2VTZXRS
YXN0ZXJTdGF0ZSA9IHRydWU7CisgICAgbUZvcmNlU2V0U2Npc3NvciA9IHRydWU7CisgICAgbUZv
cmNlU2V0Vmlld3BvcnQgPSB0cnVlOworICAgIG1Gb3JjZVNldEJsZW5kU3RhdGUgPSB0cnVlOwor
CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFY
X1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOyBpKyspCisgICAgeworICAgICAgICBtRm9yY2VT
ZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzW2ldID0gdHJ1ZTsKKyAgICAgICAgbUN1clZlcnRleFRleHR1
cmVTZXJpYWxzW2ldID0gMDsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7IGkrKykKKyAgICB7CisgICAgICAgIG1Gb3Jj
ZVNldFBpeGVsU2FtcGxlclN0YXRlc1tpXSA9IHRydWU7CisgICAgICAgIG1DdXJQaXhlbFRleHR1
cmVTZXJpYWxzW2ldID0gMDsKKyAgICB9CisKKyAgICBtQXBwbGllZElCU2VyaWFsID0gMDsKKyAg
ICBtQXBwbGllZFByb2dyYW1CaW5hcnlTZXJpYWwgPSAwOworICAgIG1EeFVuaWZvcm1zRGlydHkg
PSB0cnVlOworCisgICAgbVZlcnRleERlY2xhcmF0aW9uQ2FjaGUubWFya1N0YXRlRGlydHkoKTsK
K30KKwordm9pZCBSZW5kZXJlcjk6OnJlbGVhc2VEZXZpY2VSZXNvdXJjZXMoKQoreworICAgIHdo
aWxlICghbUV2ZW50UXVlcnlQb29sLmVtcHR5KCkpCisgICAgeworICAgICAgICBtRXZlbnRRdWVy
eVBvb2wuYmFjaygpLT5SZWxlYXNlKCk7CisgICAgICAgIG1FdmVudFF1ZXJ5UG9vbC5wb3BfYmFj
aygpOworICAgIH0KKworICAgIGlmIChtTWFza2VkQ2xlYXJTYXZlZFN0YXRlKQorICAgIHsKKyAg
ICAgICAgbU1hc2tlZENsZWFyU2F2ZWRTdGF0ZS0+UmVsZWFzZSgpOworICAgICAgICBtTWFza2Vk
Q2xlYXJTYXZlZFN0YXRlID0gTlVMTDsKKyAgICB9CisKKyAgICBtVmVydGV4U2hhZGVyQ2FjaGUu
Y2xlYXIoKTsKKyAgICBtUGl4ZWxTaGFkZXJDYWNoZS5jbGVhcigpOworCisgICAgZGVsZXRlIG1C
bGl0OworICAgIG1CbGl0ID0gTlVMTDsKKworICAgIGRlbGV0ZSBtVmVydGV4RGF0YU1hbmFnZXI7
CisgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gTlVMTDsKKworICAgIGRlbGV0ZSBtSW5kZXhEYXRh
TWFuYWdlcjsKKyAgICBtSW5kZXhEYXRhTWFuYWdlciA9IE5VTEw7CisKKyAgICBkZWxldGUgbUxp
bmVMb29wSUI7CisgICAgbUxpbmVMb29wSUIgPSBOVUxMOworCisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBOVU1fTlVMTF9DT0xPUkJVRkZFUl9DQUNIRV9FTlRSSUVTOyBpKyspCisgICAgeworICAg
ICAgICBkZWxldGUgbU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ldLmJ1ZmZlcjsKKyAgICAgICAgbU51
bGxDb2xvcmJ1ZmZlckNhY2hlW2ldLmJ1ZmZlciA9IE5VTEw7CisgICAgfQorCit9CisKKwordm9p
ZCBSZW5kZXJlcjk6Om5vdGlmeURldmljZUxvc3QoKQoreworICAgIG1EZXZpY2VMb3N0ID0gdHJ1
ZTsKKyAgICBtRGlzcGxheS0+bm90aWZ5RGV2aWNlTG9zdCgpOworfQorCitib29sIFJlbmRlcmVy
OTo6aXNEZXZpY2VMb3N0KCkKK3sKKyAgICByZXR1cm4gbURldmljZUxvc3Q7Cit9CisKKy8vIHNl
dCBub3RpZnkgdG8gdHJ1ZSB0byBicm9hZGNhc3QgYSBtZXNzYWdlIHRvIGFsbCBjb250ZXh0cyBv
ZiB0aGUgZGV2aWNlIGxvc3MKK2Jvb2wgUmVuZGVyZXI5Ojp0ZXN0RGV2aWNlTG9zdChib29sIG5v
dGlmeSkKK3sKKyAgICBIUkVTVUxUIHN0YXR1cyA9IFNfT0s7CisKKyAgICBpZiAobURldmljZUV4
KQorICAgIHsKKyAgICAgICAgc3RhdHVzID0gbURldmljZUV4LT5DaGVja0RldmljZVN0YXRlKE5V
TEwpOworICAgIH0KKyAgICBlbHNlIGlmIChtRGV2aWNlKQorICAgIHsKKyAgICAgICAgc3RhdHVz
ID0gbURldmljZS0+VGVzdENvb3BlcmF0aXZlTGV2ZWwoKTsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgLy8gTm8gZGV2aWNlIHlldCwgc28gbm8gcmVzZXQgcmVxdWlyZWQKKyAgICB9
CisKKyAgICBib29sIGlzTG9zdCA9IEZBSUxFRChzdGF0dXMpIHx8IGQzZDk6OmlzRGV2aWNlTG9z
dEVycm9yKHN0YXR1cyk7CisKKyAgICBpZiAoaXNMb3N0KQorICAgIHsKKyAgICAgICAgLy8gZW5z
dXJlIHdlIG5vdGUgdGhlIGRldmljZSBsb3NzIC0tCisgICAgICAgIC8vIHdlJ2xsIHByb2JhYmx5
IGdldCB0aGlzIGRvbmUgYWdhaW4gYnkgbm90aWZ5RGV2aWNlTG9zdAorICAgICAgICAvLyBidXQg
YmVzdCB0byByZW1lbWJlciBpdCEKKyAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IHdhbnQg
dG8gY2xlYXIgdGhlIGRldmljZSBsb3NzIHN0YXR1cyBoZXJlCisgICAgICAgIC8vIC0tIHRoaXMg
bmVlZHMgdG8gYmUgZG9uZSBieSByZXNldERldmljZQorICAgICAgICBtRGV2aWNlTG9zdCA9IHRy
dWU7CisgICAgICAgIGlmIChub3RpZnkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG5vdGlmeURl
dmljZUxvc3QoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBpc0xvc3Q7Cit9CisK
K2Jvb2wgUmVuZGVyZXI5Ojp0ZXN0RGV2aWNlUmVzZXR0YWJsZSgpCit7CisgICAgSFJFU1VMVCBz
dGF0dXMgPSBEM0RfT0s7CisKKyAgICBpZiAobURldmljZUV4KQorICAgIHsKKyAgICAgICAgc3Rh
dHVzID0gbURldmljZUV4LT5DaGVja0RldmljZVN0YXRlKE5VTEwpOworICAgIH0KKyAgICBlbHNl
IGlmIChtRGV2aWNlKQorICAgIHsKKyAgICAgICAgc3RhdHVzID0gbURldmljZS0+VGVzdENvb3Bl
cmF0aXZlTGV2ZWwoKTsKKyAgICB9CisKKyAgICAvLyBPbiBEM0Q5RXgsIERFVklDRUxPU1QgcmVw
cmVzZW50cyBhIGh1bmcgZGV2aWNlIHRoYXQgbmVlZHMgdG8gYmUgcmVzdGFydGVkCisgICAgLy8g
REVWSUNFUkVNT1ZFRCBpbmRpY2F0ZXMgdGhlIGRldmljZSBoYXMgYmVlbiBzdG9wcGVkIGFuZCBt
dXN0IGJlIHJlY3JlYXRlZAorICAgIHN3aXRjaCAoc3RhdHVzKQorICAgIHsKKyAgICAgIGNhc2Ug
RDNERVJSX0RFVklDRU5PVFJFU0VUOgorICAgICAgY2FzZSBEM0RFUlJfREVWSUNFSFVORzoKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICBjYXNlIEQzREVSUl9ERVZJQ0VMT1NUOgorICAgICAg
ICByZXR1cm4gKG1EZXZpY2VFeCAhPSBOVUxMKTsKKyAgICAgIGNhc2UgRDNERVJSX0RFVklDRVJF
TU9WRUQ6CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBS
ZW5kZXJlcjk6OnJlc2V0RGV2aWNlKCkKK3sKKyAgICByZWxlYXNlRGV2aWNlUmVzb3VyY2VzKCk7
CisKKyAgICBEM0RQUkVTRU5UX1BBUkFNRVRFUlMgcHJlc2VudFBhcmFtZXRlcnMgPSBnZXREZWZh
dWx0UHJlc2VudFBhcmFtZXRlcnMoKTsKKworICAgIEhSRVNVTFQgcmVzdWx0ID0gRDNEX09LOwor
ICAgIGJvb2wgbG9zdCA9IHRlc3REZXZpY2VMb3N0KGZhbHNlKTsKKyAgICBpbnQgYXR0ZW1wdHMg
PSAzOworCisgICAgd2hpbGUgKGxvc3QgJiYgYXR0ZW1wdHMgPiAwKQorICAgIHsKKyAgICAgICAg
aWYgKG1EZXZpY2VFeCkKKyAgICAgICAgeworICAgICAgICAgICAgU2xlZXAoNTAwKTsgICAvLyBH
aXZlIHRoZSBncmFwaGljcyBkcml2ZXIgc29tZSBDUFUgdGltZQorICAgICAgICAgICAgcmVzdWx0
ID0gbURldmljZUV4LT5SZXNldEV4KCZwcmVzZW50UGFyYW1ldGVycywgTlVMTCk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNl
LT5UZXN0Q29vcGVyYXRpdmVMZXZlbCgpOworICAgICAgICAgICAgd2hpbGUgKHJlc3VsdCA9PSBE
M0RFUlJfREVWSUNFTE9TVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBTbGVlcCgx
MDApOyAgIC8vIEdpdmUgdGhlIGdyYXBoaWNzIGRyaXZlciBzb21lIENQVSB0aW1lCisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+VGVzdENvb3BlcmF0aXZlTGV2ZWwoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTk9UUkVT
RVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+UmVz
ZXQoJnByZXNlbnRQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGxvc3QgPSB0ZXN0RGV2aWNlTG9zdChmYWxzZSk7CisgICAgICAgIGF0dGVtcHRzIC0tOwor
ICAgIH0KKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIEVSUigiUmVz
ZXQvUmVzZXRFeCBmYWlsZWQgbXVsdGlwbGUgdGltZXM6IDB4JTA4WCIsIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyByZXNldCBkZXZpY2UgZGVmYXVsdHMK
KyAgICBpbml0aWFsaXplRGV2aWNlKCk7CisgICAgbURldmljZUxvc3QgPSBmYWxzZTsKKworICAg
IHJldHVybiB0cnVlOworfQorCitEV09SRCBSZW5kZXJlcjk6OmdldEFkYXB0ZXJWZW5kb3IoKSBj
b25zdAoreworICAgIHJldHVybiBtQWRhcHRlcklkZW50aWZpZXIuVmVuZG9ySWQ7Cit9CisKK3N0
ZDo6c3RyaW5nIFJlbmRlcmVyOTo6Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0Cit7Cisg
ICAgc3RkOjpvc3RyaW5nc3RyZWFtIHJlbmRlcmVyU3RyaW5nOworCisgICAgcmVuZGVyZXJTdHJp
bmcgPDwgbUFkYXB0ZXJJZGVudGlmaWVyLkRlc2NyaXB0aW9uOworICAgIGlmIChnZXRTaGFyZUhh
bmRsZVN1cHBvcnQoKSkKKyAgICB7CisgICAgICAgIHJlbmRlcmVyU3RyaW5nIDw8ICIgRGlyZWN0
M0Q5RXgiOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZW5kZXJlclN0cmluZyA8
PCAiIERpcmVjdDNEOSI7CisgICAgfQorCisgICAgcmVuZGVyZXJTdHJpbmcgPDwgIiB2c18iIDw8
IEQzRFNIQURFUl9WRVJTSU9OX01BSk9SKG1EZXZpY2VDYXBzLlZlcnRleFNoYWRlclZlcnNpb24p
IDw8ICJfIiA8PCBEM0RTSEFERVJfVkVSU0lPTl9NSU5PUihtRGV2aWNlQ2Fwcy5WZXJ0ZXhTaGFk
ZXJWZXJzaW9uKTsKKyAgICByZW5kZXJlclN0cmluZyA8PCAiIHBzXyIgPDwgRDNEU0hBREVSX1ZF
UlNJT05fTUFKT1IobURldmljZUNhcHMuUGl4ZWxTaGFkZXJWZXJzaW9uKSA8PCAiXyIgPDwgRDNE
U0hBREVSX1ZFUlNJT05fTUlOT1IobURldmljZUNhcHMuUGl4ZWxTaGFkZXJWZXJzaW9uKTsKKwor
ICAgIHJldHVybiByZW5kZXJlclN0cmluZy5zdHIoKTsKK30KKworR1VJRCBSZW5kZXJlcjk6Omdl
dEFkYXB0ZXJJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUFkYXB0ZXJJZGVudGlm
aWVyLkRldmljZUlkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjpnZXRNdWx0aVNhbXBs
ZVN1cHBvcnQoRDNERk9STUFUIGZvcm1hdCwgYm9vbCAqbXVsdGlTYW1wbGVBcnJheSkKK3sKKyAg
ICBmb3IgKGludCBtdWx0aVNhbXBsZUluZGV4ID0gMDsgbXVsdGlTYW1wbGVJbmRleCA8PSBEM0RN
VUxUSVNBTVBMRV8xNl9TQU1QTEVTOyBtdWx0aVNhbXBsZUluZGV4KyspCisgICAgeworICAgICAg
ICBIUkVTVUxUIHJlc3VsdCA9IG1EM2Q5LT5DaGVja0RldmljZU11bHRpU2FtcGxlVHlwZShtQWRh
cHRlciwgbURldmljZVR5cGUsIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwgKEQzRE1VTFRJU0FNUExFX1RZUEUp
bXVsdGlTYW1wbGVJbmRleCwgTlVMTCk7CisKKyAgICAgICAgbXVsdGlTYW1wbGVBcnJheVttdWx0
aVNhbXBsZUluZGV4XSA9IFNVQ0NFRURFRChyZXN1bHQpOworICAgIH0KK30KKworYm9vbCBSZW5k
ZXJlcjk6OmdldEJHUkFUZXh0dXJlU3VwcG9ydCgpIGNvbnN0Cit7CisgICAgLy8gRGlyZWN0WCA5
IGFsd2F5cyBzdXBwb3J0cyBCR1JBCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUmVuZGVy
ZXI5OjpnZXREWFQxVGV4dHVyZVN1cHBvcnQoKQoreworICAgIHJldHVybiBtRFhUMVRleHR1cmVT
dXBwb3J0OworfQorCitib29sIFJlbmRlcmVyOTo6Z2V0RFhUM1RleHR1cmVTdXBwb3J0KCkKK3sK
KyAgICByZXR1cm4gbURYVDNUZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJlcjk6Omdl
dERYVDVUZXh0dXJlU3VwcG9ydCgpCit7CisgICAgcmV0dXJuIG1EWFQ1VGV4dHVyZVN1cHBvcnQ7
Cit9CisKK2Jvb2wgUmVuZGVyZXI5OjpnZXREZXB0aFRleHR1cmVTdXBwb3J0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbURlcHRoVGV4dHVyZVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXI5Ojpn
ZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5nLCBib29sICpyZW5kZXJhYmxl
KQoreworICAgICpmaWx0ZXJpbmcgPSBtRmxvYXQzMkZpbHRlclN1cHBvcnQ7CisgICAgKnJlbmRl
cmFibGUgPSBtRmxvYXQzMlJlbmRlclN1cHBvcnQ7CisgICAgcmV0dXJuIG1GbG9hdDMyVGV4dHVy
ZVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXI5OjpnZXRGbG9hdDE2VGV4dHVyZVN1cHBvcnQo
Ym9vbCAqZmlsdGVyaW5nLCBib29sICpyZW5kZXJhYmxlKQoreworICAgICpmaWx0ZXJpbmcgPSBt
RmxvYXQxNkZpbHRlclN1cHBvcnQ7CisgICAgKnJlbmRlcmFibGUgPSBtRmxvYXQxNlJlbmRlclN1
cHBvcnQ7CisgICAgcmV0dXJuIG1GbG9hdDE2VGV4dHVyZVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVu
ZGVyZXI5OjpnZXRMdW1pbmFuY2VUZXh0dXJlU3VwcG9ydCgpCit7CisgICAgcmV0dXJuIG1MdW1p
bmFuY2VUZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJlcjk6OmdldEx1bWluYW5jZUFs
cGhhVGV4dHVyZVN1cHBvcnQoKQoreworICAgIHJldHVybiBtTHVtaW5hbmNlQWxwaGFUZXh0dXJl
U3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJlcjk6OmdldFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5
U3VwcG9ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlz
b3Ryb3B5OworfQorCitmbG9hdCBSZW5kZXJlcjk6OmdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KCkg
Y29uc3QKK3sKKyAgICBpZiAobVN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHkpCisgICAg
eworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1EZXZpY2VDYXBzLk1heEFuaXNv
dHJvcHkpOworICAgIH0KKyAgICByZXR1cm4gMS4wZjsKK30KKworYm9vbCBSZW5kZXJlcjk6Omdl
dEV2ZW50UXVlcnlTdXBwb3J0KCkKK3sKKyAgICByZXR1cm4gbUV2ZW50UXVlcnlTdXBwb3J0Owor
fQorCit1bnNpZ25lZCBpbnQgUmVuZGVyZXI5OjpnZXRNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0
cygpIGNvbnN0Cit7CisgICAgTUVUQV9BU1NFUlQoTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRG
X1NNMyA8PSBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRT
KTsKKyAgICByZXR1cm4gbVZlcnRleFRleHR1cmVTdXBwb3J0ID8gTUFYX1RFWFRVUkVfSU1BR0Vf
VU5JVFNfVlRGX1NNMyA6IDA7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldE1heENv
bWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKSBjb25zdAoreworICAgIHJldHVybiBnbDo6TUFYX1RF
WFRVUkVfSU1BR0VfVU5JVFMgKyBnZXRNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpOworfQor
Cit1bnNpZ25lZCBpbnQgUmVuZGVyZXI5OjpnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3Jz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gMjsgICAvLyBkeF9WaWV3QWRqdXN0IGFuZCBkeF9EZXB0
aFJhbmdlLgorfQorCit1bnNpZ25lZCBpbnQgUmVuZGVyZXI5OjpnZXRSZXNlcnZlZEZyYWdtZW50
VW5pZm9ybVZlY3RvcnMoKSBjb25zdAoreworICAgIHJldHVybiAzOyAgIC8vIGR4X1ZpZXdDb29y
ZHMsIGR4X0RlcHRoRnJvbnQgYW5kIGR4X0RlcHRoUmFuZ2UuCit9CisKK3Vuc2lnbmVkIGludCBS
ZW5kZXJlcjk6OmdldE1heFZlcnRleFVuaWZvcm1WZWN0b3JzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gTUFYX1ZFUlRFWF9DT05TVEFOVF9WRUNUT1JTX0QzRDkgLSBnZXRSZXNlcnZlZFZlcnRleFVu
aWZvcm1WZWN0b3JzKCk7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldE1heEZyYWdt
ZW50VW5pZm9ybVZlY3RvcnMoKSBjb25zdAoreworICAgIGNvbnN0IGludCBtYXhQaXhlbENvbnN0
YW50VmVjdG9ycyA9IChnZXRNYWpvclNoYWRlck1vZGVsKCkgPj0gMykgPyBNQVhfUElYRUxfQ09O
U1RBTlRfVkVDVE9SU19TTTMgOiBNQVhfUElYRUxfQ09OU1RBTlRfVkVDVE9SU19TTTI7CisKKyAg
ICByZXR1cm4gbWF4UGl4ZWxDb25zdGFudFZlY3RvcnMgLSBnZXRSZXNlcnZlZEZyYWdtZW50VW5p
Zm9ybVZlY3RvcnMoKTsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyOTo6Z2V0TWF4VmFyeWlu
Z1ZlY3RvcnMoKSBjb25zdAoreworICAgIHJldHVybiAoZ2V0TWFqb3JTaGFkZXJNb2RlbCgpID49
IDMpID8gTUFYX1ZBUllJTkdfVkVDVE9SU19TTTMgOiBNQVhfVkFSWUlOR19WRUNUT1JTX1NNMjsK
K30KKworYm9vbCBSZW5kZXJlcjk6OmdldE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVN1cHBvcnRzTm9uUG93ZXIyVGV4dHVyZXM7Cit9CisKK2Jvb2wgUmVu
ZGVyZXI5OjpnZXRPY2NsdXNpb25RdWVyeVN1cHBvcnQoKSBjb25zdAoreworICAgIHJldHVybiBt
T2NjbHVzaW9uUXVlcnlTdXBwb3J0OworfQorCitib29sIFJlbmRlcmVyOTo6Z2V0SW5zdGFuY2lu
Z1N1cHBvcnQoKSBjb25zdAoreworICAgIHJldHVybiBtRGV2aWNlQ2Fwcy5QaXhlbFNoYWRlclZl
cnNpb24gPj0gRDNEUFNfVkVSU0lPTigzLCAwKTsKK30KKworYm9vbCBSZW5kZXJlcjk6OmdldFNo
YXJlSGFuZGxlU3VwcG9ydCgpIGNvbnN0Cit7CisgICAgLy8gUElYIGRvZXNuJ3Qgc2VlbSB0byBz
dXBwb3J0IHVzaW5nIHNoYXJlIGhhbmRsZXMsIHNvIGRpc2FibGUgdGhlbS4KKyAgICByZXR1cm4g
KG1EM2Q5RXggIT0gTlVMTCkgJiYgIWdsOjpwZXJmQWN0aXZlKCk7Cit9CisKK2Jvb2wgUmVuZGVy
ZXI5OjpnZXREZXJpdmF0aXZlSW5zdHJ1Y3Rpb25TdXBwb3J0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gKG1EZXZpY2VDYXBzLlBTMjBDYXBzLkNhcHMgJiBEM0RQUzIwQ0FQU19HUkFESUVOVElOU1RS
VUNUSU9OUykgIT0gMDsKK30KKworYm9vbCBSZW5kZXJlcjk6OmdldFBvc3RTdWJCdWZmZXJTdXBw
b3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW50IFJlbmRlcmVyOTo6Z2V0
TWFqb3JTaGFkZXJNb2RlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEQzRFNIQURFUl9WRVJTSU9O
X01BSk9SKG1EZXZpY2VDYXBzLlBpeGVsU2hhZGVyVmVyc2lvbik7Cit9CisKK2Zsb2F0IFJlbmRl
cmVyOTo6Z2V0TWF4UG9pbnRTaXplKCkgY29uc3QKK3sKKyAgICAvLyBQb2ludCBzaXplIGNsYW1w
ZWQgYXQgMS4wZiBmb3IgU00yCisgICAgcmV0dXJuIGdldE1ham9yU2hhZGVyTW9kZWwoKSA9PSAz
ID8gbURldmljZUNhcHMuTWF4UG9pbnRTaXplIDogMS4wZjsKK30KKworaW50IFJlbmRlcmVyOTo6
Z2V0TWF4Vmlld3BvcnREaW1lbnNpb24oKSBjb25zdAoreworICAgIGludCBtYXhUZXh0dXJlRGlt
ZW5zaW9uID0gc3RkOjptaW4oc3RkOjptaW4oZ2V0TWF4VGV4dHVyZVdpZHRoKCksIGdldE1heFRl
eHR1cmVIZWlnaHQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
aW50KWdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9TSVpFKTsKKyAgICByZXR1cm4gbWF4
VGV4dHVyZURpbWVuc2lvbjsKK30KKworaW50IFJlbmRlcmVyOTo6Z2V0TWF4VGV4dHVyZVdpZHRo
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gKGludCltRGV2aWNlQ2Fwcy5NYXhUZXh0dXJlV2lkdGg7
Cit9CisKK2ludCBSZW5kZXJlcjk6OmdldE1heFRleHR1cmVIZWlnaHQoKSBjb25zdAoreworICAg
IHJldHVybiAoaW50KW1EZXZpY2VDYXBzLk1heFRleHR1cmVIZWlnaHQ7Cit9CisKK2Jvb2wgUmVu
ZGVyZXI5OjpnZXQzMkJpdEluZGV4U3VwcG9ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EZXZp
Y2VDYXBzLk1heFZlcnRleEluZGV4ID49ICgxIDw8IDE2KTsKK30KKworRFdPUkQgUmVuZGVyZXI5
OjpnZXRDYXBzRGVjbFR5cGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbURldmljZUNhcHMuRGVj
bFR5cGVzOworfQorCitpbnQgUmVuZGVyZXI5OjpnZXRNaW5Td2FwSW50ZXJ2YWwoKSBjb25zdAor
eworICAgIHJldHVybiBtTWluU3dhcEludGVydmFsOworfQorCitpbnQgUmVuZGVyZXI5OjpnZXRN
YXhTd2FwSW50ZXJ2YWwoKSBjb25zdAoreworICAgIHJldHVybiBtTWF4U3dhcEludGVydmFsOwor
fQorCitpbnQgUmVuZGVyZXI5OjpnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbU1heFN1cHBvcnRlZFNhbXBsZXM7Cit9CisKK2ludCBSZW5kZXJlcjk6OmdldE5l
YXJlc3RTdXBwb3J0ZWRTYW1wbGVzKEQzREZPUk1BVCBmb3JtYXQsIGludCByZXF1ZXN0ZWQpIGNv
bnN0Cit7CisgICAgaWYgKHJlcXVlc3RlZCA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJl
cXVlc3RlZDsKKyAgICB9CisKKyAgICBzdGQ6Om1hcDxEM0RGT1JNQVQsIGJvb2wgKj46OmNvbnN0
X2l0ZXJhdG9yIGl0ciA9IG1NdWx0aVNhbXBsZVN1cHBvcnQuZmluZChmb3JtYXQpOworICAgIGlm
IChpdHIgPT0gbU11bHRpU2FtcGxlU3VwcG9ydC5lbmQoKSkKKyAgICB7CisgICAgICAgIGlmIChm
b3JtYXQgPT0gRDNERk1UX1VOS05PV04pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIC0xOworICAgIH0KKworICAgIGZvciAoaW50IGkgPSByZXF1ZXN0ZWQ7IGkgPD0gRDNE
TVVMVElTQU1QTEVfMTZfU0FNUExFUzsgKytpKQorICAgIHsKKyAgICAgICAgaWYgKGl0ci0+c2Vj
b25kW2ldICYmIGkgIT0gRDNETVVMVElTQU1QTEVfTk9OTUFTS0FCTEUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOwor
fQorCit1bnNpZ25lZCBpbnQgUmVuZGVyZXI5OjpnZXRNYXhSZW5kZXJUYXJnZXRzKCkgY29uc3QK
K3sKKyAgICAvLyB3ZSBkbyBub3Qgc3VwcG9ydCBNUlQgaW4gZDNkOQorICAgIHJldHVybiAxOwor
fQorCitEM0RGT1JNQVQgUmVuZGVyZXI5OjpDb252ZXJ0VGV4dHVyZUludGVybmFsRm9ybWF0KEdM
aW50IGludGVybmFsZm9ybWF0KQoreworICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAg
eworICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQxNjoKKyAgICAgIGNhc2UgR0xfREVQVEhf
Q09NUE9ORU5UMzJfT0VTOgorICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzoKKyAg
ICAgICAgcmV0dXJuIEQzREZNVF9JTlRaOworICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDFfRVhUOgorICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VDoKKyAgICAgICAgcmV0dXJuIEQzREZNVF9EWFQxOworICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICByZXR1cm4gRDNERk1UX0RYVDM7CisgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgIHJldHVy
biBEM0RGTVRfRFhUNTsKKyAgICAgIGNhc2UgR0xfUkdCQTMyRl9FWFQ6CisgICAgICBjYXNlIEdM
X1JHQjMyRl9FWFQ6CisgICAgICBjYXNlIEdMX0FMUEhBMzJGX0VYVDoKKyAgICAgIGNhc2UgR0xf
TFVNSU5BTkNFMzJGX0VYVDoKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVDoK
KyAgICAgICAgcmV0dXJuIEQzREZNVF9BMzJCMzJHMzJSMzJGOworICAgICAgY2FzZSBHTF9SR0JB
MTZGX0VYVDoKKyAgICAgIGNhc2UgR0xfUkdCMTZGX0VYVDoKKyAgICAgIGNhc2UgR0xfQUxQSEEx
NkZfRVhUOgorICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UxNkZfRVhUOgorICAgICAgY2FzZSBHTF9M
VU1JTkFOQ0VfQUxQSEExNkZfRVhUOgorICAgICAgICByZXR1cm4gRDNERk1UX0ExNkIxNkcxNlIx
NkY7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhUOgorICAgICAgICBpZiAoZ2V0THVtaW5h
bmNlVGV4dHVyZVN1cHBvcnQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEQzREZN
VF9MODsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNF
OF9BTFBIQThfRVhUOgorICAgICAgICBpZiAoZ2V0THVtaW5hbmNlQWxwaGFUZXh0dXJlU3VwcG9y
dCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRDNERk1UX0E4TDg7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjhfT0VTOgorICAgICAgY2FzZSBH
TF9SR0I1NjU6CisgICAgICAgIHJldHVybiBEM0RGTVRfWDhSOEc4Qjg7CisgICAgfQorCisgICAg
cmV0dXJuIEQzREZNVF9BOFI4RzhCODsKK30KKworYm9vbCBSZW5kZXJlcjk6OmNvcHlUb1JlbmRl
clRhcmdldChUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpkZXN0LCBUZXh0dXJlU3RvcmFnZUlu
dGVyZmFjZTJEICpzb3VyY2UpCit7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKworICAgIGlm
IChzb3VyY2UgJiYgZGVzdCkKKyAgICB7CisgICAgICAgIFRleHR1cmVTdG9yYWdlOV8yRCAqc291
cmNlOSA9IFRleHR1cmVTdG9yYWdlOV8yRDo6bWFrZVRleHR1cmVTdG9yYWdlOV8yRChzb3VyY2Ut
PmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsKKyAgICAgICAgVGV4dHVyZVN0b3JhZ2U5XzJEICpkZXN0
OSA9IFRleHR1cmVTdG9yYWdlOV8yRDo6bWFrZVRleHR1cmVTdG9yYWdlOV8yRChkZXN0LT5nZXRT
dG9yYWdlSW5zdGFuY2UoKSk7CisKKyAgICAgICAgaW50IGxldmVscyA9IHNvdXJjZTktPmxldmVs
Q291bnQoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZXZlbHM7ICsraSkKKyAgICAg
ICAgeworICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnNyY1N1cmYgPSBzb3VyY2U5LT5n
ZXRTdXJmYWNlTGV2ZWwoaSwgZmFsc2UpOworICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkg
KmRzdFN1cmYgPSBkZXN0OS0+Z2V0U3VyZmFjZUxldmVsKGksIGZhbHNlKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgcmVzdWx0ID0gY29weVRvUmVuZGVyVGFyZ2V0KGRzdFN1cmYsIHNyY1N1
cmYsIHNvdXJjZTktPmlzTWFuYWdlZCgpKTsKKworICAgICAgICAgICAgaWYgKHNyY1N1cmYpIHNy
Y1N1cmYtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgIGlmIChkc3RTdXJmKSBkc3RTdXJmLT5SZWxl
YXNlKCk7CisKKyAgICAgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jv
b2wgUmVuZGVyZXI5Ojpjb3B5VG9SZW5kZXJUYXJnZXQoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VD
dWJlICpkZXN0LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKnNvdXJjZSkKK3sKKyAgICBi
b29sIHJlc3VsdCA9IGZhbHNlOworCisgICAgaWYgKHNvdXJjZSAmJiBkZXN0KQorICAgIHsKKyAg
ICAgICAgVGV4dHVyZVN0b3JhZ2U5X0N1YmUgKnNvdXJjZTkgPSBUZXh0dXJlU3RvcmFnZTlfQ3Vi
ZTo6bWFrZVRleHR1cmVTdG9yYWdlOV9DdWJlKHNvdXJjZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkp
OworICAgICAgICBUZXh0dXJlU3RvcmFnZTlfQ3ViZSAqZGVzdDkgPSBUZXh0dXJlU3RvcmFnZTlf
Q3ViZTo6bWFrZVRleHR1cmVTdG9yYWdlOV9DdWJlKGRlc3QtPmdldFN0b3JhZ2VJbnN0YW5jZSgp
KTsKKyAgICAgICAgaW50IGxldmVscyA9IHNvdXJjZTktPmxldmVsQ291bnQoKTsKKyAgICAgICAg
Zm9yIChpbnQgZiA9IDA7IGYgPCA2OyBmKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbGV2ZWxzOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgSURpcmVjdDNEU3VyZmFjZTkgKnNyY1N1cmYgPSBzb3VyY2U5LT5nZXRDdWJlTWFwU3VyZmFj
ZShHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmLCBpLCBmYWxzZSk7CisgICAgICAg
ICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKmRzdFN1cmYgPSBkZXN0OS0+Z2V0Q3ViZU1hcFN1
cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgZiwgaSwgdHJ1ZSk7CisKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBjb3B5VG9SZW5kZXJUYXJnZXQoZHN0U3VyZiwgc3JjU3Vy
Ziwgc291cmNlOS0+aXNNYW5hZ2VkKCkpOworCisgICAgICAgICAgICAgICAgaWYgKHNyY1N1cmYp
IHNyY1N1cmYtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBpZiAoZHN0U3VyZikgZHN0U3Vy
Zi0+UmVsZWFzZSgpOworCisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0QzRFBPT0wgUmVuZGVyZXI5OjpnZXRCdWZmZXJQ
b29sKERXT1JEIHVzYWdlKSBjb25zdAoreworICAgIGlmIChtRDNkOUV4ICE9IE5VTEwpCisgICAg
eworICAgICAgICByZXR1cm4gRDNEUE9PTF9ERUZBVUxUOworICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICBpZiAoISh1c2FnZSAmIEQzRFVTQUdFX0RZTkFNSUMpKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gRDNEUE9PTF9NQU5BR0VEOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIEQzRFBPT0xfREVGQVVMVDsKK30KKworYm9vbCBSZW5kZXJlcjk6OmNvcHlJbWFn
ZShnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3Vy
Y2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc3Rv
cmFnZSwgR0xpbnQgbGV2ZWwpCit7CisgICAgUkVDVCByZWN0OworICAgIHJlY3QubGVmdCA9IHNv
dXJjZVJlY3QueDsKKyAgICByZWN0LnRvcCA9IHNvdXJjZVJlY3QueTsKKyAgICByZWN0LnJpZ2h0
ID0gc291cmNlUmVjdC54ICsgc291cmNlUmVjdC53aWR0aDsKKyAgICByZWN0LmJvdHRvbSA9IHNv
dXJjZVJlY3QueSArIHNvdXJjZVJlY3QuaGVpZ2h0OworCisgICAgcmV0dXJuIG1CbGl0LT5jb3B5
KGZyYW1lYnVmZmVyLCByZWN0LCBkZXN0Rm9ybWF0LCB4b2Zmc2V0LCB5b2Zmc2V0LCBzdG9yYWdl
LCBsZXZlbCk7Cit9CisKK2Jvb2wgUmVuZGVyZXI5Ojpjb3B5SW1hZ2UoZ2w6OkZyYW1lYnVmZmVy
ICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwgR0xlbnVtIGRl
c3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50
IHlvZmZzZXQsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSAqc3RvcmFnZSwgR0xlbnVtIHRh
cmdldCwgR0xpbnQgbGV2ZWwpCit7CisgICAgUkVDVCByZWN0OworICAgIHJlY3QubGVmdCA9IHNv
dXJjZVJlY3QueDsKKyAgICByZWN0LnRvcCA9IHNvdXJjZVJlY3QueTsKKyAgICByZWN0LnJpZ2h0
ID0gc291cmNlUmVjdC54ICsgc291cmNlUmVjdC53aWR0aDsKKyAgICByZWN0LmJvdHRvbSA9IHNv
dXJjZVJlY3QueSArIHNvdXJjZVJlY3QuaGVpZ2h0OworCisgICAgcmV0dXJuIG1CbGl0LT5jb3B5
KGZyYW1lYnVmZmVyLCByZWN0LCBkZXN0Rm9ybWF0LCB4b2Zmc2V0LCB5b2Zmc2V0LCBzdG9yYWdl
LCB0YXJnZXQsIGxldmVsKTsKK30KKworYm9vbCBSZW5kZXJlcjk6OmJsaXRSZWN0KGdsOjpGcmFt
ZWJ1ZmZlciAqcmVhZEZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZyZWFkUmVjdCwg
Z2w6OkZyYW1lYnVmZmVyICpkcmF3RnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRy
YXdSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxpdFJlbmRlclRhcmdldCwg
Ym9vbCBibGl0RGVwdGhTdGVuY2lsKQoreworICAgIGVuZFNjZW5lKCk7CisKKyAgICBpZiAoYmxp
dFJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKnJlYWRCdWZm
ZXIgPSByZWFkRnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyKDApOworICAgICAgICBnbDo6UmVu
ZGVyYnVmZmVyICpkcmF3QnVmZmVyID0gZHJhd0ZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcigw
KTsKKyAgICAgICAgUmVuZGVyVGFyZ2V0OSAqcmVhZFJlbmRlclRhcmdldCA9IE5VTEw7CisgICAg
ICAgIFJlbmRlclRhcmdldDkgKmRyYXdSZW5kZXJUYXJnZXQgPSBOVUxMOworICAgICAgICBJRGly
ZWN0M0RTdXJmYWNlOSogcmVhZFN1cmZhY2UgPSBOVUxMOworICAgICAgICBJRGlyZWN0M0RTdXJm
YWNlOSogZHJhd1N1cmZhY2UgPSBOVUxMOworCisgICAgICAgIGlmIChyZWFkQnVmZmVyKQorICAg
ICAgICB7CisgICAgICAgICAgICByZWFkUmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0OTo6bWFr
ZVJlbmRlclRhcmdldDkocmVhZEJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAgICAgICB9
CisgICAgICAgIGlmIChkcmF3QnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICBkcmF3UmVu
ZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0OTo6bWFrZVJlbmRlclRhcmdldDkoZHJhd0J1ZmZlci0+
Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlYWRSZW5kZXJU
YXJnZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlYWRTdXJmYWNlID0gcmVhZFJlbmRlclRh
cmdldC0+Z2V0U3VyZmFjZSgpOworICAgICAgICB9CisgICAgICAgIGlmIChkcmF3UmVuZGVyVGFy
Z2V0KQorICAgICAgICB7CisgICAgICAgICAgICBkcmF3U3VyZmFjZSA9IGRyYXdSZW5kZXJUYXJn
ZXQtPmdldFN1cmZhY2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghcmVhZFN1cmZhY2Ug
fHwgIWRyYXdTdXJmYWNlKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBy
ZXRyaWV2ZSB0aGUgcmVuZGVyIHRhcmdldC4iKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgUkVDVCBz
cmNSZWN0OworICAgICAgICBzcmNSZWN0LmxlZnQgPSByZWFkUmVjdC54OworICAgICAgICBzcmNS
ZWN0LnJpZ2h0ID0gcmVhZFJlY3QueCArIHJlYWRSZWN0LndpZHRoOworICAgICAgICBzcmNSZWN0
LnRvcCA9IHJlYWRSZWN0Lnk7CisgICAgICAgIHNyY1JlY3QuYm90dG9tID0gcmVhZFJlY3QueSAr
IHJlYWRSZWN0LmhlaWdodDsKKworICAgICAgICBSRUNUIGRzdFJlY3Q7CisgICAgICAgIGRzdFJl
Y3QubGVmdCA9IGRyYXdSZWN0Lng7CisgICAgICAgIGRzdFJlY3QucmlnaHQgPSBkcmF3UmVjdC54
ICsgZHJhd1JlY3Qud2lkdGg7CisgICAgICAgIGRzdFJlY3QudG9wID0gZHJhd1JlY3QueTsKKyAg
ICAgICAgZHN0UmVjdC5ib3R0b20gPSBkcmF3UmVjdC55ICsgZHJhd1JlY3QuaGVpZ2h0OworCisg
ICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+U3RyZXRjaFJlY3QocmVhZFN1cmZhY2Us
ICZzcmNSZWN0LCBkcmF3U3VyZmFjZSwgJmRzdFJlY3QsIEQzRFRFWEZfTk9ORSk7CisKKyAgICAg
ICAgcmVhZFN1cmZhY2UtPlJlbGVhc2UoKTsKKyAgICAgICAgZHJhd1N1cmZhY2UtPlJlbGVhc2Uo
KTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEVSUigiQmxpdEZyYW1lYnVmZmVyQU5HTEUgZmFpbGVkOiBTdHJldGNoUmVjdCByZXR1cm5lZCAl
eC4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKGJsaXREZXB0aFN0ZW5jaWwpCisgICAgeworICAgICAgICBnbDo6UmVuZGVy
YnVmZmVyICpyZWFkQnVmZmVyID0gcmVhZEZyYW1lYnVmZmVyLT5nZXREZXB0aE9yU3RlbmNpbGJ1
ZmZlcigpOworICAgICAgICBnbDo6UmVuZGVyYnVmZmVyICpkcmF3QnVmZmVyID0gZHJhd0ZyYW1l
YnVmZmVyLT5nZXREZXB0aE9yU3RlbmNpbGJ1ZmZlcigpOworICAgICAgICBSZW5kZXJUYXJnZXQ5
ICpyZWFkRGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICAgICAgUmVuZGVyVGFyZ2V0OSAqZHJhd0Rl
cHRoU3RlbmNpbCA9IE5VTEw7CisgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5KiByZWFkU3VyZmFj
ZSA9IE5VTEw7CisgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5KiBkcmF3U3VyZmFjZSA9IE5VTEw7
CisKKyAgICAgICAgaWYgKHJlYWRCdWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlYWRE
ZXB0aFN0ZW5jaWwgPSBSZW5kZXJUYXJnZXQ5OjptYWtlUmVuZGVyVGFyZ2V0OShyZWFkQnVmZmVy
LT5nZXREZXB0aFN0ZW5jaWwoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRyYXdCdWZmZXIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRyYXdEZXB0aFN0ZW5jaWwgPSBSZW5kZXJUYXJnZXQ5
OjptYWtlUmVuZGVyVGFyZ2V0OShkcmF3QnVmZmVyLT5nZXREZXB0aFN0ZW5jaWwoKSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAocmVhZERlcHRoU3RlbmNpbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmVhZFN1cmZhY2UgPSByZWFkRGVwdGhTdGVuY2lsLT5nZXRTdXJmYWNlKCk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGRyYXdEZXB0aFN0ZW5jaWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRyYXdTdXJmYWNlID0gZHJhd0RlcHRoU3RlbmNpbC0+Z2V0U3VyZmFjZSgpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCFyZWFkU3VyZmFjZSB8fCAhZHJhd1N1cmZhY2UpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0
LiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxz
ZSk7CisgICAgICAgIH0KKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPlN0cmV0
Y2hSZWN0KHJlYWRTdXJmYWNlLCBOVUxMLCBkcmF3U3VyZmFjZSwgTlVMTCwgRDNEVEVYRl9OT05F
KTsKKworICAgICAgICByZWFkU3VyZmFjZS0+UmVsZWFzZSgpOworICAgICAgICBkcmF3U3VyZmFj
ZS0+UmVsZWFzZSgpOworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgewor
ICAgICAgICAgICAgRVJSKCJCbGl0RnJhbWVidWZmZXJBTkdMRSBmYWlsZWQ6IFN0cmV0Y2hSZWN0
IHJldHVybmVkICV4LiIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZW5kZXJlcjk6OnJl
YWRQaXhlbHMoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgR0xpbnQgeCwgR0xpbnQgeSwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgb3V0cHV0UGl0Y2gsIGJvb2wg
cGFja1JldmVyc2VSb3dPcmRlciwgR0xpbnQgcGFja0FsaWdubWVudCwgdm9pZCogcGl4ZWxzKQor
eworICAgIFJlbmRlclRhcmdldDkgKnJlbmRlclRhcmdldCA9IE5VTEw7CisgICAgSURpcmVjdDNE
U3VyZmFjZTkgKnN1cmZhY2UgPSBOVUxMOworICAgIGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVm
ZmVyID0gZnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyKDApOworCisgICAgaWYgKGNvbG9yYnVm
ZmVyKQorICAgIHsKKyAgICAgICAgcmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0OTo6bWFrZVJl
bmRlclRhcmdldDkoY29sb3JidWZmZXItPmdldFJlbmRlclRhcmdldCgpKTsKKyAgICB9CisgICAg
CisgICAgaWYgKHJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIHN1cmZhY2UgPSByZW5kZXJU
YXJnZXQtPmdldFN1cmZhY2UoKTsKKyAgICB9CisKKyAgICBpZiAoIXN1cmZhY2UpCisgICAgewor
ICAgICAgICAvLyBjb250ZXh0IG11c3QgYmUgbG9zdAorICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgRDNEU1VSRkFDRV9ERVNDIGRlc2M7CisgICAgc3VyZmFjZS0+R2V0RGVzYygmZGVzYyk7
CisKKyAgICBpZiAoZGVzYy5NdWx0aVNhbXBsZVR5cGUgIT0gRDNETVVMVElTQU1QTEVfTk9ORSkK
KyAgICB7CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRTogUmVxdWlyZXMgcmVz
b2x2ZSB1c2luZyBTdHJldGNoUmVjdCBpbnRvIG5vbi1tdWx0aXNhbXBsZWQgcmVuZGVyIHRhcmdl
dAorICAgICAgICBzdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgSFJFU1VMVCByZXN1bHQ7CisgICAgSURp
cmVjdDNEU3VyZmFjZTkgKnN5c3RlbVN1cmZhY2UgPSBOVUxMOworICAgIGJvb2wgZGlyZWN0VG9Q
aXhlbHMgPSAhcGFja1JldmVyc2VSb3dPcmRlciAmJiBwYWNrQWxpZ25tZW50IDw9IDQgJiYgZ2V0
U2hhcmVIYW5kbGVTdXBwb3J0KCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9PSAw
ICYmIHkgPT0gMCAmJiBVSU5UKHdpZHRoKSA9PSBkZXNjLldpZHRoICYmIFVJTlQoaGVpZ2h0KSA9
PSBkZXNjLkhlaWdodCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjLkZvcm1hdCA9
PSBEM0RGTVRfQThSOEc4QjggJiYgZm9ybWF0ID09IEdMX0JHUkFfRVhUICYmIHR5cGUgPT0gR0xf
VU5TSUdORURfQllURTsKKyAgICBpZiAoZGlyZWN0VG9QaXhlbHMpCisgICAgeworICAgICAgICAv
LyBVc2UgdGhlIHBpeGVscyBwdHIgYXMgYSBzaGFyZWQgaGFuZGxlIHRvIHdyaXRlIGRpcmVjdGx5
IGludG8gY2xpZW50J3MgbWVtb3J5CisgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZU9m
ZnNjcmVlblBsYWluU3VyZmFjZShkZXNjLldpZHRoLCBkZXNjLkhlaWdodCwgZGVzYy5Gb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
M0RQT09MX1NZU1RFTU1FTSwgJnN5c3RlbVN1cmZhY2UsICZwaXhlbHMpOworICAgICAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRyeSBhZ2FpbiB3aXRo
b3V0IHRoZSBzaGFyZWQgaGFuZGxlCisgICAgICAgICAgICBkaXJlY3RUb1BpeGVscyA9IGZhbHNl
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFkaXJlY3RUb1BpeGVscykKKyAgICB7Cisg
ICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZU9mZnNjcmVlblBsYWluU3VyZmFjZShkZXNj
LldpZHRoLCBkZXNjLkhlaWdodCwgZGVzYy5Gb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RQT09MX1NZU1RFTU1FTSwgJnN5c3Rl
bVN1cmZhY2UsIE5VTEwpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwg
cmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOworICAgICAgICAgICAgc3VyZmFjZS0+UmVsZWFzZSgp
OworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJlc3VsdCA9IG1EZXZpY2UtPkdldFJlbmRlclRhcmdldERhdGEo
c3VyZmFjZSwgc3lzdGVtU3VyZmFjZSk7CisgICAgc3VyZmFjZS0+UmVsZWFzZSgpOworICAgIHN1
cmZhY2UgPSBOVUxMOworCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAg
c3lzdGVtU3VyZmFjZS0+UmVsZWFzZSgpOworCisgICAgICAgIC8vIEl0IHR1cm5zIG91dCB0aGF0
IEQzRCB3aWxsIHNvbWV0aW1lcyBwcm9kdWNlIG1vcmUgZXJyb3IKKyAgICAgICAgLy8gY29kZXMg
dGhhbiB0aG9zZSBkb2N1bWVudGVkLgorICAgICAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJy
b3IocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgbm90aWZ5RGV2aWNlTG9zdCgpOwor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgIH0KKworICAgIGlmIChkaXJlY3RU
b1BpeGVscykKKyAgICB7CisgICAgICAgIHN5c3RlbVN1cmZhY2UtPlJlbGVhc2UoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFJFQ1QgcmVjdDsKKyAgICByZWN0LmxlZnQgPSBnbDo6
Y2xhbXAoeCwgMEwsIHN0YXRpY19jYXN0PExPTkc+KGRlc2MuV2lkdGgpKTsKKyAgICByZWN0LnRv
cCA9IGdsOjpjbGFtcCh5LCAwTCwgc3RhdGljX2Nhc3Q8TE9ORz4oZGVzYy5IZWlnaHQpKTsKKyAg
ICByZWN0LnJpZ2h0ID0gZ2w6OmNsYW1wKHggKyB3aWR0aCwgMEwsIHN0YXRpY19jYXN0PExPTkc+
KGRlc2MuV2lkdGgpKTsKKyAgICByZWN0LmJvdHRvbSA9IGdsOjpjbGFtcCh5ICsgaGVpZ2h0LCAw
TCwgc3RhdGljX2Nhc3Q8TE9ORz4oZGVzYy5IZWlnaHQpKTsKKworICAgIEQzRExPQ0tFRF9SRUNU
IGxvY2s7CisgICAgcmVzdWx0ID0gc3lzdGVtU3VyZmFjZS0+TG9ja1JlY3QoJmxvY2ssICZyZWN0
LCBEM0RMT0NLX1JFQURPTkxZKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7Cisg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHN5c3RlbVN1cmZhY2UtPlJlbGVhc2UoKTsK
KworICAgICAgICByZXR1cm47ICAgLy8gTm8gc2Vuc2libGUgZXJyb3IgdG8gZ2VuZXJhdGUKKyAg
ICB9CisKKyAgICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gKHVuc2lnbmVkIGNoYXIqKXBpeGVsczsK
KyAgICB1bnNpZ25lZCBzaG9ydCAqZGVzdDE2ID0gKHVuc2lnbmVkIHNob3J0KilwaXhlbHM7CisK
KyAgICB1bnNpZ25lZCBjaGFyICpzb3VyY2U7CisgICAgaW50IGlucHV0UGl0Y2g7CisgICAgaWYg
KHBhY2tSZXZlcnNlUm93T3JkZXIpCisgICAgeworICAgICAgICBzb3VyY2UgPSAoKHVuc2lnbmVk
IGNoYXIqKWxvY2sucEJpdHMpICsgbG9jay5QaXRjaCAqIChyZWN0LmJvdHRvbSAtIHJlY3QudG9w
IC0gMSk7CisgICAgICAgIGlucHV0UGl0Y2ggPSAtbG9jay5QaXRjaDsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgc291cmNlID0gKHVuc2lnbmVkIGNoYXIqKWxvY2sucEJpdHM7Cisg
ICAgICAgIGlucHV0UGl0Y2ggPSBsb2NrLlBpdGNoOworICAgIH0KKworICAgIHVuc2lnbmVkIGlu
dCBmYXN0UGl4ZWxTaXplID0gMDsKKworICAgIGlmIChkZXNjLkZvcm1hdCA9PSBEM0RGTVRfQThS
OEc4QjggJiYKKyAgICAgICAgZm9ybWF0ID09IEdMX0JHUkFfRVhUICYmCisgICAgICAgIHR5cGUg
PT0gR0xfVU5TSUdORURfQllURSkKKyAgICB7CisgICAgICAgIGZhc3RQaXhlbFNpemUgPSA0Owor
ICAgIH0KKyAgICBlbHNlIGlmICgoZGVzYy5Gb3JtYXQgPT0gRDNERk1UX0E0UjRHNEI0ICYmCisg
ICAgICAgICAgICAgZm9ybWF0ID09IEdMX0JHUkFfRVhUICYmCisgICAgICAgICAgICAgdHlwZSA9
PSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JFVl9FWFQpIHx8CisgICAgICAgICAgICAgKGRl
c2MuRm9ybWF0ID09IEQzREZNVF9BMVI1RzVCNSAmJgorICAgICAgICAgICAgIGZvcm1hdCA9PSBH
TF9CR1JBX0VYVCAmJgorICAgICAgICAgICAgIHR5cGUgPT0gR0xfVU5TSUdORURfU0hPUlRfMV81
XzVfNV9SRVZfRVhUKSkKKyAgICB7CisgICAgICAgIGZhc3RQaXhlbFNpemUgPSAyOworICAgIH0K
KyAgICBlbHNlIGlmIChkZXNjLkZvcm1hdCA9PSBEM0RGTVRfQTE2QjE2RzE2UjE2RiAmJgorICAg
ICAgICAgICAgIGZvcm1hdCA9PSBHTF9SR0JBICYmCisgICAgICAgICAgICAgdHlwZSA9PSBHTF9I
QUxGX0ZMT0FUX09FUykKKyAgICB7CisgICAgICAgIGZhc3RQaXhlbFNpemUgPSA4OworICAgIH0K
KyAgICBlbHNlIGlmIChkZXNjLkZvcm1hdCA9PSBEM0RGTVRfQTMyQjMyRzMyUjMyRiAmJgorICAg
ICAgICAgICAgIGZvcm1hdCA9PSBHTF9SR0JBICYmCisgICAgICAgICAgICAgdHlwZSA9PSBHTF9G
TE9BVCkKKyAgICB7CisgICAgICAgIGZhc3RQaXhlbFNpemUgPSAxNjsKKyAgICB9CisKKyAgICBm
b3IgKGludCBqID0gMDsgaiA8IHJlY3QuYm90dG9tIC0gcmVjdC50b3A7IGorKykKKyAgICB7Cisg
ICAgICAgIGlmIChmYXN0UGl4ZWxTaXplICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8v
IEZhc3QgcGF0aCBmb3IgZm9ybWF0cyB3aGljaCByZXF1aXJlIG5vIHRyYW5zbGF0aW9uOgorICAg
ICAgICAgICAgLy8gRDNERk1UX0E4UjhHOEI4IHRvIEJHUkEvVU5TSUdORURfQllURQorICAgICAg
ICAgICAgLy8gRDNERk1UX0E0UjRHNEI0IHRvIEJHUkEvVU5TSUdORURfU0hPUlRfNF80XzRfNF9S
RVZfRVhUCisgICAgICAgICAgICAvLyBEM0RGTVRfQTFSNUc1QjUgdG8gQkdSQS9VTlNJR05FRF9T
SE9SVF8xXzVfNV81X1JFVl9FWFQKKyAgICAgICAgICAgIC8vIEQzREZNVF9BMTZCMTZHMTZSMTZG
IHRvIFJHQkEvSEFMRl9GTE9BVF9PRVMKKyAgICAgICAgICAgIC8vIEQzREZNVF9BMzJCMzJHMzJS
MzJGIHRvIFJHQkEvRkxPQVQKKyAgICAgICAgICAgIC8vIAorICAgICAgICAgICAgLy8gTm90ZSB0
aGF0IGJ1ZmZlcnMgd2l0aCBubyBhbHBoYSBnbyB0aHJvdWdoIHRoZSBzbG93IHBhdGggYmVsb3cu
CisgICAgICAgICAgICBtZW1jcHkoZGVzdCArIGogKiBvdXRwdXRQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICBzb3VyY2UgKyBqICogaW5wdXRQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAocmVj
dC5yaWdodCAtIHJlY3QubGVmdCkgKiBmYXN0UGl4ZWxTaXplKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGRlc2MuRm9ybWF0ID09IEQzREZNVF9B
OFI4RzhCOCAmJgorICAgICAgICAgICAgICAgICBmb3JtYXQgPT0gR0xfUkdCQSAmJgorICAgICAg
ICAgICAgICAgICB0eXBlID09IEdMX1VOU0lHTkVEX0JZVEUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIEZhc3QgcGF0aCBmb3Igc3dhcHBpbmcgcmVkIHdpdGggYmx1ZQorICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCByZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0OyBpKyspCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFyZ2IgPSAqKHVuc2lnbmVkIGlu
dCopKHNvdXJjZSArIDQgKiBpICsgaiAqIGlucHV0UGl0Y2gpOworICAgICAgICAgICAgICAgICoo
dW5zaWduZWQgaW50KikoZGVzdCArIDQgKiBpICsgaiAqIG91dHB1dFBpdGNoKSA9CisgICAgICAg
ICAgICAgICAgICAgIChhcmdiICYgMHhGRjAwRkYwMCkgfCAgICAgICAvLyBLZWVwIGFscGhhIGFu
ZCBncmVlbgorICAgICAgICAgICAgICAgICAgICAoYXJnYiAmIDB4MDBGRjAwMDApID4+IDE2IHwg
Ly8gTW92ZSByZWQgdG8gYmx1ZQorICAgICAgICAgICAgICAgICAgICAoYXJnYiAmIDB4MDAwMDAw
RkYpIDw8IDE2OyAgLy8gTW92ZSBibHVlIHRvIHJlZAorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJl
Y3QucmlnaHQgLSByZWN0LmxlZnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQg
cjsKKyAgICAgICAgICAgIGZsb2F0IGc7CisgICAgICAgICAgICBmbG9hdCBiOworICAgICAgICAg
ICAgZmxvYXQgYTsKKworICAgICAgICAgICAgc3dpdGNoIChkZXNjLkZvcm1hdCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfUjVHNkI1OgorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcmdiID0gKih1bnNpZ25lZCBz
aG9ydCopKHNvdXJjZSArIDIgKiBpICsgaiAqIGlucHV0UGl0Y2gpOworCisgICAgICAgICAgICAg
ICAgICAgIGEgPSAxLjBmOworICAgICAgICAgICAgICAgICAgICBiID0gKHJnYiAmIDB4MDAxRikg
KiAoMS4wZiAvIDB4MDAxRik7CisgICAgICAgICAgICAgICAgICAgIGcgPSAocmdiICYgMHgwN0Uw
KSAqICgxLjBmIC8gMHgwN0UwKTsKKyAgICAgICAgICAgICAgICAgICAgciA9IChyZ2IgJiAweEY4
MDApICogKDEuMGYgLyAweEY4MDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfQTFSNUc1QjU6CisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBhcmdiID0gKih1bnNp
Z25lZCBzaG9ydCopKHNvdXJjZSArIDIgKiBpICsgaiAqIGlucHV0UGl0Y2gpOworCisgICAgICAg
ICAgICAgICAgICAgIGEgPSAoYXJnYiAmIDB4ODAwMCkgPyAxLjBmIDogMC4wZjsKKyAgICAgICAg
ICAgICAgICAgICAgYiA9IChhcmdiICYgMHgwMDFGKSAqICgxLjBmIC8gMHgwMDFGKTsKKyAgICAg
ICAgICAgICAgICAgICAgZyA9IChhcmdiICYgMHgwM0UwKSAqICgxLjBmIC8gMHgwM0UwKTsKKyAg
ICAgICAgICAgICAgICAgICAgciA9IChhcmdiICYgMHg3QzAwKSAqICgxLjBmIC8gMHg3QzAwKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgRDNERk1UX0E4UjhHOEI4OgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGFyZ2IgPSAqKHVuc2lnbmVkIGludCopKHNvdXJjZSArIDQgKiBp
ICsgaiAqIGlucHV0UGl0Y2gpOworCisgICAgICAgICAgICAgICAgICAgIGEgPSAoYXJnYiAmIDB4
RkYwMDAwMDApICogKDEuMGYgLyAweEZGMDAwMDAwKTsKKyAgICAgICAgICAgICAgICAgICAgYiA9
IChhcmdiICYgMHgwMDAwMDBGRikgKiAoMS4wZiAvIDB4MDAwMDAwRkYpOworICAgICAgICAgICAg
ICAgICAgICBnID0gKGFyZ2IgJiAweDAwMDBGRjAwKSAqICgxLjBmIC8gMHgwMDAwRkYwMCk7Cisg
ICAgICAgICAgICAgICAgICAgIHIgPSAoYXJnYiAmIDB4MDBGRjAwMDApICogKDEuMGYgLyAweDAw
RkYwMDAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OgorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHhyZ2IgPSAqKHVuc2lnbmVkIGludCopKHNvdXJj
ZSArIDQgKiBpICsgaiAqIGlucHV0UGl0Y2gpOworCisgICAgICAgICAgICAgICAgICAgIGEgPSAx
LjBmOworICAgICAgICAgICAgICAgICAgICBiID0gKHhyZ2IgJiAweDAwMDAwMEZGKSAqICgxLjBm
IC8gMHgwMDAwMDBGRik7CisgICAgICAgICAgICAgICAgICAgIGcgPSAoeHJnYiAmIDB4MDAwMEZG
MDApICogKDEuMGYgLyAweDAwMDBGRjAwKTsKKyAgICAgICAgICAgICAgICAgICAgciA9ICh4cmdi
ICYgMHgwMEZGMDAwMCkgKiAoMS4wZiAvIDB4MDBGRjAwMDApOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfQTJSMTBH
MTBCMTA6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgYXJnYiA9ICoodW5zaWduZWQgaW50Kikoc291cmNlICsgNCAqIGkgKyBqICogaW5wdXRQaXRj
aCk7CisKKyAgICAgICAgICAgICAgICAgICAgYSA9IChhcmdiICYgMHhDMDAwMDAwMCkgKiAoMS4w
ZiAvIDB4QzAwMDAwMDApOworICAgICAgICAgICAgICAgICAgICBiID0gKGFyZ2IgJiAweDAwMDAw
M0ZGKSAqICgxLjBmIC8gMHgwMDAwMDNGRik7CisgICAgICAgICAgICAgICAgICAgIGcgPSAoYXJn
YiAmIDB4MDAwRkZDMDApICogKDEuMGYgLyAweDAwMEZGQzAwKTsKKyAgICAgICAgICAgICAgICAg
ICAgciA9IChhcmdiICYgMHgzRkYwMDAwMCkgKiAoMS4wZiAvIDB4M0ZGMDAwMDApOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBE
M0RGTVRfQTMyQjMyRzMyUjMyRjoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIGZsb2F0IGZvcm1hdHMgaW4gRDNEIGFyZSBzdG9yZWQgcmdiYSwgcmF0aGVyIHRoYW4g
dGhlIG90aGVyIHdheSByb3VuZAorICAgICAgICAgICAgICAgICAgICByID0gKigoZmxvYXQqKShz
b3VyY2UgKyAxNiAqIGkgKyBqICogaW5wdXRQaXRjaCkgKyAwKTsKKyAgICAgICAgICAgICAgICAg
ICAgZyA9ICooKGZsb2F0Kikoc291cmNlICsgMTYgKiBpICsgaiAqIGlucHV0UGl0Y2gpICsgMSk7
CisgICAgICAgICAgICAgICAgICAgIGIgPSAqKChmbG9hdCopKHNvdXJjZSArIDE2ICogaSArIGog
KiBpbnB1dFBpdGNoKSArIDIpOworICAgICAgICAgICAgICAgICAgICBhID0gKigoZmxvYXQqKShz
b3VyY2UgKyAxNiAqIGkgKyBqICogaW5wdXRQaXRjaCkgKyAzKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRDNERk1UX0ExNkIx
NkcxNlIxNkY6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBmbG9h
dCBmb3JtYXRzIGluIEQzRCBhcmUgc3RvcmVkIHJnYmEsIHJhdGhlciB0aGFuIHRoZSBvdGhlciB3
YXkgcm91bmQKKyAgICAgICAgICAgICAgICAgICAgciA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKCoo
KHVuc2lnbmVkIHNob3J0Kikoc291cmNlICsgOCAqIGkgKyBqICogaW5wdXRQaXRjaCkgKyAwKSk7
CisgICAgICAgICAgICAgICAgICAgIGcgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMigqKCh1bnNpZ25l
ZCBzaG9ydCopKHNvdXJjZSArIDggKiBpICsgaiAqIGlucHV0UGl0Y2gpICsgMSkpOworICAgICAg
ICAgICAgICAgICAgICBiID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoKigodW5zaWduZWQgc2hvcnQq
KShzb3VyY2UgKyA4ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgYSA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKCooKHVuc2lnbmVkIHNob3J0Kikoc291cmNl
ICsgOCAqIGkgKyBqICogaW5wdXRQaXRjaCkgKyAzKSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorICAgICAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBH
TF9SR0JBOgorICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAg
ICAgICAgIGRlc3RbNCAqIGkgKyBqICogb3V0cHV0UGl0Y2ggKyAwXSA9ICh1bnNpZ25lZCBjaGFy
KSgyNTUgKiByICsgMC41Zik7CisgICAgICAgICAgICAgICAgICAgIGRlc3RbNCAqIGkgKyBqICog
b3V0cHV0UGl0Y2ggKyAxXSA9ICh1bnNpZ25lZCBjaGFyKSgyNTUgKiBnICsgMC41Zik7CisgICAg
ICAgICAgICAgICAgICAgIGRlc3RbNCAqIGkgKyBqICogb3V0cHV0UGl0Y2ggKyAyXSA9ICh1bnNp
Z25lZCBjaGFyKSgyNTUgKiBiICsgMC41Zik7CisgICAgICAgICAgICAgICAgICAgIGRlc3RbNCAq
IGkgKyBqICogb3V0cHV0UGl0Y2ggKyAzXSA9ICh1bnNpZ25lZCBjaGFyKSgyNTUgKiBhICsgMC41
Zik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgZGVmYXVs
dDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6CisgICAgICAgICAgICAgICAgc3dp
dGNoICh0eXBlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICAgICAgZGVzdFs0ICogaSArIGogKiBvdXRw
dXRQaXRjaCArIDBdID0gKHVuc2lnbmVkIGNoYXIpKDI1NSAqIGIgKyAwLjVmKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGVzdFs0ICogaSArIGogKiBvdXRwdXRQaXRjaCArIDFdID0gKHVuc2lnbmVk
IGNoYXIpKDI1NSAqIGcgKyAwLjVmKTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFs0ICogaSAr
IGogKiBvdXRwdXRQaXRjaCArIDJdID0gKHVuc2lnbmVkIGNoYXIpKDI1NSAqIHIgKyAwLjVmKTsK
KyAgICAgICAgICAgICAgICAgICAgZGVzdFs0ICogaSArIGogKiBvdXRwdXRQaXRjaCArIDNdID0g
KHVuc2lnbmVkIGNoYXIpKDI1NSAqIGEgKyAwLjVmKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVW
X0VYVDoKKyAgICAgICAgICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBkZXNrdG9wIEdM
IHNwZWMgaW4gdGhlICJUcmFuc2ZlciBvZiBQaXhlbCBSZWN0YW5nbGVzIiBzZWN0aW9uCisgICAg
ICAgICAgICAgICAgICAgIC8vIHRoaXMgdHlwZSBpcyBwYWNrZWQgYXMgZm9sbG93czoKKyAgICAg
ICAgICAgICAgICAgICAgLy8gICAxNSAgIDE0ICAgMTMgICAxMiAgIDExICAgMTAgICAgOSAgICA4
ICAgIDcgICAgNiAgICA1ICAgIDQgICAgMyAgICAyICAgIDEgICAgMAorICAgICAgICAgICAgICAg
ICAgICAvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgLy8g
fCAgICAgICA0dGggICAgICAgICB8ICAgICAgICAzcmQgICAgICAgICB8ICAgICAgICAybmQgICAg
ICAgIHwgICAxc3QgY29tcG9uZW50ICAgfAorICAgICAgICAgICAgICAgICAgICAvLyAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2Yg
QkdSQV9FWFQsIEIgaXMgdGhlIGZpcnN0IGNvbXBvbmVudCwgRyB0aGUgc2Vjb25kLCBhbmQgc28g
Zm9ydGguCisgICAgICAgICAgICAgICAgICAgIGRlc3QxNltpICsgaiAqIG91dHB1dFBpdGNoIC8g
c2l6ZW9mKHVuc2lnbmVkIHNob3J0KV0gPQorICAgICAgICAgICAgICAgICAgICAgICAgKCh1bnNp
Z25lZCBzaG9ydCkoMTUgKiBhICsgMC41ZikgPDwgMTIpfAorICAgICAgICAgICAgICAgICAgICAg
ICAgKCh1bnNpZ25lZCBzaG9ydCkoMTUgKiByICsgMC41ZikgPDwgOCkgfAorICAgICAgICAgICAg
ICAgICAgICAgICAgKCh1bnNpZ25lZCBzaG9ydCkoMTUgKiBnICsgMC41ZikgPDwgNCkgfAorICAg
ICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBzaG9ydCkoMTUgKiBiICsgMC41ZikgPDwg
MCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFQ6CisgICAgICAgICAgICAgICAgICAgIC8v
IEFjY29yZGluZyB0byB0aGUgZGVza3RvcCBHTCBzcGVjIGluIHRoZSAiVHJhbnNmZXIgb2YgUGl4
ZWwgUmVjdGFuZ2xlcyIgc2VjdGlvbgorICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHR5cGUg
aXMgcGFja2VkIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIC8vICAgMTUgICAxNCAg
IDEzICAgMTIgICAxMSAgIDEwICAgIDkgICAgOCAgICA3ICAgIDYgICAgNSAgICA0ICAgIDMgICAg
MiAgICAxICAgIDAKKyAgICAgICAgICAgICAgICAgICAgLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisgICAgICAgICAgICAgICAgICAgIC8vIHwgNHRoIHwgICAgICAgICAgM3JkICAgICAgICAg
ICB8ICAgICAgICAgICAybmQgICAgICAgICAgfCAgICAgIDFzdCBjb21wb25lbnQgICAgIHwKKyAg
ICAgICAgICAgICAgICAgICAgLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg
ICAgICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIEJHUkFfRVhULCBCIGlzIHRoZSBmaXJzdCBjb21w
b25lbnQsIEcgdGhlIHNlY29uZCwgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICBk
ZXN0MTZbaSArIGogKiBvdXRwdXRQaXRjaCAvIHNpemVvZih1bnNpZ25lZCBzaG9ydCldID0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgc2hvcnQpKCAgICAgYSArIDAuNWYpIDw8
IDE1KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgzMSAqIHIg
KyAwLjVmKSA8PCAxMCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBzaG9y
dCkoMzEgKiBnICsgMC41ZikgPDwgNSkgfAorICAgICAgICAgICAgICAgICAgICAgICAgKCh1bnNp
Z25lZCBzaG9ydCkoMzEgKiBiICsgMC41ZikgPDwgMCk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xf
UkdCOgorICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgorICAgICAgICAg
ICAgICAgICAgICBkZXN0MTZbaSArIGogKiBvdXRwdXRQaXRjaCAvIHNpemVvZih1bnNpZ25lZCBz
aG9ydCldID0gCisgICAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgzMSAq
IGIgKyAwLjVmKSA8PCAwKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIHNo
b3J0KSg2MyAqIGcgKyAwLjVmKSA8PCA1KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAoKHVu
c2lnbmVkIHNob3J0KSgzMSAqIHIgKyAwLjVmKSA8PCAxMSk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAg
ICAgICAgICAgICAgICBkZXN0WzMgKiBpICsgaiAqIG91dHB1dFBpdGNoICsgMF0gPSAodW5zaWdu
ZWQgY2hhcikoMjU1ICogciArIDAuNWYpOworICAgICAgICAgICAgICAgICAgICBkZXN0WzMgKiBp
ICsgaiAqIG91dHB1dFBpdGNoICsgMV0gPSAodW5zaWduZWQgY2hhcikoMjU1ICogZyArIDAuNWYp
OworICAgICAgICAgICAgICAgICAgICBkZXN0WzMgKiBpICsgaiAqIG91dHB1dFBpdGNoICsgMl0g
PSAodW5zaWduZWQgY2hhcikoMjU1ICogYiArIDAuNWYpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
c3lzdGVtU3VyZmFjZS0+VW5sb2NrUmVjdCgpOworCisgICAgc3lzdGVtU3VyZmFjZS0+UmVsZWFz
ZSgpOworfQorCitSZW5kZXJUYXJnZXQgKlJlbmRlcmVyOTo6Y3JlYXRlUmVuZGVyVGFyZ2V0KFN3
YXBDaGFpbiAqc3dhcENoYWluLCBib29sIGRlcHRoKQoreworICAgIFN3YXBDaGFpbjkgKnN3YXBD
aGFpbjkgPSBTd2FwQ2hhaW45OjptYWtlU3dhcENoYWluOShzd2FwQ2hhaW4pOworICAgIElEaXJl
Y3QzRFN1cmZhY2U5ICpzdXJmYWNlID0gTlVMTDsKKyAgICBpZiAoZGVwdGgpCisgICAgeworICAg
ICAgICBzdXJmYWNlID0gc3dhcENoYWluOS0+Z2V0RGVwdGhTdGVuY2lsKCk7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIHN1cmZhY2UgPSBzd2FwQ2hhaW45LT5nZXRSZW5kZXJUYXJn
ZXQoKTsKKyAgICB9CisKKyAgICBSZW5kZXJUYXJnZXQ5ICpyZW5kZXJUYXJnZXQgPSBuZXcgUmVu
ZGVyVGFyZ2V0OSh0aGlzLCBzdXJmYWNlKTsKKworICAgIHJldHVybiByZW5kZXJUYXJnZXQ7Cit9
CisKK1JlbmRlclRhcmdldCAqUmVuZGVyZXI5OjpjcmVhdGVSZW5kZXJUYXJnZXQoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMsIGJvb2wgZGVwdGgp
Cit7CisgICAgUmVuZGVyVGFyZ2V0OSAqcmVuZGVyVGFyZ2V0ID0gbmV3IFJlbmRlclRhcmdldDko
dGhpcywgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBzYW1wbGVzKTsKKyAgICByZXR1cm4gcmVuZGVy
VGFyZ2V0OworfQorCitTaGFkZXJFeGVjdXRhYmxlICpSZW5kZXJlcjk6OmxvYWRFeGVjdXRhYmxl
KGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCByeDo6U2hhZGVyVHlwZSB0eXBl
KQoreworICAgIFNoYWRlckV4ZWN1dGFibGU5ICpleGVjdXRhYmxlID0gTlVMTDsKKworICAgIHN3
aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIHJ4OjpTSEFERVJfVkVSVEVYOgorICAgICAg
ICB7CisgICAgICAgICAgICBJRGlyZWN0M0RWZXJ0ZXhTaGFkZXI5ICp2c2hhZGVyID0gY3JlYXRl
VmVydGV4U2hhZGVyKChEV09SRCopZnVuY3Rpb24sIGxlbmd0aCk7CisgICAgICAgICAgICBpZiAo
dnNoYWRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gbmV3
IFNoYWRlckV4ZWN1dGFibGU5KGZ1bmN0aW9uLCBsZW5ndGgsIHZzaGFkZXIpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSByeDo6U0hBREVSX1BJ
WEVMOgorICAgICAgICB7CisgICAgICAgICAgICBJRGlyZWN0M0RQaXhlbFNoYWRlcjkgKnBzaGFk
ZXIgPSBjcmVhdGVQaXhlbFNoYWRlcigoRFdPUkQqKWZ1bmN0aW9uLCBsZW5ndGgpOworICAgICAg
ICAgICAgaWYgKHBzaGFkZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXhlY3V0
YWJsZSA9IG5ldyBTaGFkZXJFeGVjdXRhYmxlOShmdW5jdGlvbiwgbGVuZ3RoLCBwc2hhZGVyKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6
CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJl
dHVybiBleGVjdXRhYmxlOworfQorCitTaGFkZXJFeGVjdXRhYmxlICpSZW5kZXJlcjk6OmNvbXBp
bGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGNoYXIgKnNoYWRlckhM
U0wsIHJ4OjpTaGFkZXJUeXBlIHR5cGUpCit7CisgICAgY29uc3QgY2hhciAqcHJvZmlsZSA9IE5V
TEw7CisKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgY2FzZSByeDo6U0hBREVSX1ZF
UlRFWDoKKyAgICAgICAgcHJvZmlsZSA9IGdldE1ham9yU2hhZGVyTW9kZWwoKSA+PSAzID8gInZz
XzNfMCIgOiAidnNfMl8wIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIHJ4OjpTSEFERVJf
UElYRUw6CisgICAgICAgIHByb2ZpbGUgPSBnZXRNYWpvclNoYWRlck1vZGVsKCkgPj0gMyA/ICJw
c18zXzAiIDogInBzXzJfMCI7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgSUQz
REJsb2IgKmJpbmFyeSA9IChJRDNEQmxvYiopY29tcGlsZVRvQmluYXJ5KGluZm9Mb2csIHNoYWRl
ckhMU0wsIHByb2ZpbGUsIEFOR0xFX0NPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMLCB0cnVlKTsK
KyAgICBpZiAoIWJpbmFyeSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBTaGFkZXJFeGVj
dXRhYmxlICpleGVjdXRhYmxlID0gbG9hZEV4ZWN1dGFibGUoYmluYXJ5LT5HZXRCdWZmZXJQb2lu
dGVyKCksIGJpbmFyeS0+R2V0QnVmZmVyU2l6ZSgpLCB0eXBlKTsKKyAgICBiaW5hcnktPlJlbGVh
c2UoKTsKKworICAgIHJldHVybiBleGVjdXRhYmxlOworfQorCitib29sIFJlbmRlcmVyOTo6Ym94
RmlsdGVyKElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0
KQoreworICAgIHJldHVybiBtQmxpdC0+Ym94RmlsdGVyKHNvdXJjZSwgZGVzdCk7Cit9CisKK0Qz
RFBPT0wgUmVuZGVyZXI5OjpnZXRUZXh0dXJlUG9vbChEV09SRCB1c2FnZSkgY29uc3QKK3sKKyAg
ICBpZiAobUQzZDlFeCAhPSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEQzRFBPT0xfREVG
QVVMVDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKCEodXNhZ2UgJiAoRDNE
VVNBR0VfREVQVEhTVEVOQ0lMIHwgRDNEVVNBR0VfUkVOREVSVEFSR0VUKSkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBEM0RQT09MX01BTkFHRUQ7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gRDNEUE9PTF9ERUZBVUxUOworfQorCitib29sIFJlbmRlcmVyOTo6Y29weVRv
UmVuZGVyVGFyZ2V0KElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0LCBJRGlyZWN0M0RTdXJmYWNlOSAq
c291cmNlLCBib29sIGZyb21NYW5hZ2VkKQoreworICAgIGlmIChzb3VyY2UgJiYgZGVzdCkKKyAg
ICB7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gRDNERVJSX09VVE9GVklERU9NRU1PUlk7CisK
KyAgICAgICAgaWYgKGZyb21NYW5hZ2VkKQorICAgICAgICB7CisgICAgICAgICAgICBEM0RTVVJG
QUNFX0RFU0MgZGVzYzsKKyAgICAgICAgICAgIHNvdXJjZS0+R2V0RGVzYygmZGVzYyk7CisKKyAg
ICAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmID0gMDsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1EZXZpY2UtPkNyZWF0ZU9mZnNjcmVlblBsYWluU3VyZmFjZShkZXNjLldpZHRoLCBkZXNj
LkhlaWdodCwgZGVzYy5Gb3JtYXQsIEQzRFBPT0xfU1lTVEVNTUVNLCAmc3VyZiwgTlVMTCk7CisK
KyAgICAgICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBJbWFnZTk6OmNvcHlMb2NrYWJsZVN1cmZhY2VzKHN1cmYsIHNvdXJjZSk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+VXBkYXRlU3VyZmFjZShzdXJmLCBOVUxM
LCBkZXN0LCBOVUxMKTsKKyAgICAgICAgICAgICAgICBzdXJmLT5SZWxlYXNlKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBl
bmRTY2VuZSgpOworICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+U3RyZXRjaFJlY3Qoc291
cmNlLCBOVUxMLCBkZXN0LCBOVUxMLCBEM0RURVhGX05PTkUpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmVz
dWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZ
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCitJbWFnZSAqUmVuZGVyZXI5OjpjcmVhdGVJbWFnZSgpCit7CisgICAg
cmV0dXJuIG5ldyBJbWFnZTkoKTsKK30KKwordm9pZCBSZW5kZXJlcjk6OmdlbmVyYXRlTWlwbWFw
KEltYWdlICpkZXN0LCBJbWFnZSAqc3JjKQoreworICAgIEltYWdlOSAqc3JjOSA9IEltYWdlOTo6
bWFrZUltYWdlOShzcmMpOworICAgIEltYWdlOSAqZHN0OSA9IEltYWdlOTo6bWFrZUltYWdlOShk
ZXN0KTsKKyAgICBJbWFnZTk6OmdlbmVyYXRlTWlwbWFwKGRzdDksIHNyYzkpOworfQorCitUZXh0
dXJlU3RvcmFnZSAqUmVuZGVyZXI5OjpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKFN3YXBDaGFpbiAq
c3dhcENoYWluKQoreworICAgIFN3YXBDaGFpbjkgKnN3YXBDaGFpbjkgPSBTd2FwQ2hhaW45Ojpt
YWtlU3dhcENoYWluOShzd2FwQ2hhaW4pOworICAgIHJldHVybiBuZXcgVGV4dHVyZVN0b3JhZ2U5
XzJEKHRoaXMsIHN3YXBDaGFpbjkpOworfQorCitUZXh0dXJlU3RvcmFnZSAqUmVuZGVyZXI5Ojpj
cmVhdGVUZXh0dXJlU3RvcmFnZTJEKGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQpCit7CisgICAgcmV0dXJuIG5ldyBUZXh0dXJlU3RvcmFnZTlfMkQodGhpcywgbGV2
ZWxzLCBpbnRlcm5hbGZvcm1hdCwgdXNhZ2UsIGZvcmNlUmVuZGVyYWJsZSwgd2lkdGgsIGhlaWdo
dCk7Cit9CisKK1RleHR1cmVTdG9yYWdlICpSZW5kZXJlcjk6OmNyZWF0ZVRleHR1cmVTdG9yYWdl
Q3ViZShpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2FnZSwgYm9v
bCBmb3JjZVJlbmRlcmFibGUsIGludCBzaXplKQoreworICAgIHJldHVybiBuZXcgVGV4dHVyZVN0
b3JhZ2U5X0N1YmUodGhpcywgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgdXNhZ2UsIGZvcmNlUmVu
ZGVyYWJsZSwgc2l6ZSk7Cit9CisKK2Jvb2wgUmVuZGVyZXI5OjpnZXRMVUlEKExVSUQgKmFkYXB0
ZXJMdWlkKSBjb25zdAoreworICAgIGFkYXB0ZXJMdWlkLT5IaWdoUGFydCA9IDA7CisgICAgYWRh
cHRlckx1aWQtPkxvd1BhcnQgPSAwOworCisgICAgaWYgKG1EM2Q5RXgpCisgICAgeworICAgICAg
ICBtRDNkOUV4LT5HZXRBZGFwdGVyTFVJRChtQWRhcHRlciwgYWRhcHRlckx1aWQpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9SZW5kZXJlcjkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzQ5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBSZW5kZXJlcjkuaDogRGVmaW5l
cyBhIGJhY2stZW5kIHNwZWNpZmljIGNsYXNzIGZvciB0aGUgRDNEOSByZW5kZXJlci4KKworI2lm
bmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfUkVOREVSRVI5X0hfCisjZGVmaW5lIExJQkdMRVNWMl9S
RU5ERVJFUl9SRU5ERVJFUjlfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL21hdGh1dGlsLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRl
cmVyL1NoYWRlckNhY2hlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERl
Y2xhcmF0aW9uQ2FjaGUuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIu
aCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0LmgiCisKK25hbWVz
cGFjZSBnbAoreworY2xhc3MgUmVuZGVyYnVmZmVyOworfQorCituYW1lc3BhY2UgcngKK3sKK2Ns
YXNzIFZlcnRleERhdGFNYW5hZ2VyOworY2xhc3MgSW5kZXhEYXRhTWFuYWdlcjsKK2NsYXNzIFN0
cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlOworc3RydWN0IFRyYW5zbGF0ZWRBdHRyaWJ1dGU7
CisKK2NsYXNzIFJlbmRlcmVyOSA6IHB1YmxpYyBSZW5kZXJlcgoreworICBwdWJsaWM6CisgICAg
UmVuZGVyZXI5KGVnbDo6RGlzcGxheSAqZGlzcGxheSwgSERDIGhEYywgYm9vbCBzb2Z0d2FyZURl
dmljZSk7CisgICAgdmlydHVhbCB+UmVuZGVyZXI5KCk7CisKKyAgICBzdGF0aWMgUmVuZGVyZXI5
ICptYWtlUmVuZGVyZXI5KFJlbmRlcmVyICpyZW5kZXJlcik7CisKKyAgICB2aXJ0dWFsIEVHTGlu
dCBpbml0aWFsaXplKCk7CisgICAgdmlydHVhbCBib29sIHJlc2V0RGV2aWNlKCk7CisKKyAgICB2
aXJ0dWFsIGludCBnZW5lcmF0ZUNvbmZpZ3MoQ29uZmlnRGVzYyAqKmNvbmZpZ0Rlc2NMaXN0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29uZmlncyhDb25maWdEZXNjICpjb25maWdEZXNjTGlz
dCk7CisKKyAgICB2b2lkIHN0YXJ0U2NlbmUoKTsKKyAgICB2b2lkIGVuZFNjZW5lKCk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc3luYyhib29sIGJsb2NrKTsKKworICAgIHZpcnR1YWwgU3dhcENoYWlu
ICpjcmVhdGVTd2FwQ2hhaW4oSFdORCB3aW5kb3csIEhBTkRMRSBzaGFyZUhhbmRsZSwgR0xlbnVt
IGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCk7CisKKyAgICBJRGly
ZWN0M0RRdWVyeTkqIGFsbG9jYXRlRXZlbnRRdWVyeSgpOworICAgIHZvaWQgZnJlZUV2ZW50UXVl
cnkoSURpcmVjdDNEUXVlcnk5KiBxdWVyeSk7CisKKyAgICAvLyByZXNvdXJjZSBjcmVhdGlvbgor
ICAgIElEaXJlY3QzRFZlcnRleFNoYWRlcjkgKmNyZWF0ZVZlcnRleFNoYWRlcihjb25zdCBEV09S
RCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgpOworICAgIElEaXJlY3QzRFBpeGVsU2hhZGVyOSAq
Y3JlYXRlUGl4ZWxTaGFkZXIoY29uc3QgRFdPUkQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoKTsK
KyAgICBIUkVTVUxUIGNyZWF0ZVZlcnRleEJ1ZmZlcihVSU5UIExlbmd0aCwgRFdPUkQgVXNhZ2Us
IElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKipwcFZlcnRleEJ1ZmZlcik7CisgICAgSFJFU1VMVCBj
cmVhdGVJbmRleEJ1ZmZlcihVSU5UIExlbmd0aCwgRFdPUkQgVXNhZ2UsIEQzREZPUk1BVCBGb3Jt
YXQsIElEaXJlY3QzREluZGV4QnVmZmVyOSAqKnBwSW5kZXhCdWZmZXIpOworI2lmIDAKKyAgICB2
b2lkICpjcmVhdGVUZXh0dXJlMkQoKTsKKyAgICB2b2lkICpjcmVhdGVUZXh0dXJlQ3ViZSgpOwor
ICAgIHZvaWQgKmNyZWF0ZVF1ZXJ5KCk7CisgICAgdm9pZCAqY3JlYXRlSW5kZXhCdWZmZXIoKTsK
KyAgICB2b2lkICpjcmVhdGVWZXJ0ZXhidWZmZXIoKTsKKworICAgIC8vIHN0YXRlIHNldHVwCisg
ICAgdm9pZCBhcHBseVNoYWRlcnMoKTsKKyAgICB2b2lkIGFwcGx5Q29uc3RhbnRzKCk7CisjZW5k
aWYKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2FtcGxlclN0YXRlKGdsOjpTYW1wbGVyVHlwZSB0eXBl
LCBpbnQgaW5kZXgsIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXIpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRUZXh0dXJlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5kZXgsIGdsOjpU
ZXh0dXJlICp0ZXh0dXJlKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRSYXN0ZXJpemVyU3RhdGUo
Y29uc3QgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSAmcmFzdGVyU3RhdGUpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRCbGVuZFN0YXRlKGNvbnN0IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0YXRlLCBjb25zdCBn
bDo6Q29sb3IgJmJsZW5kQ29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IHNhbXBsZU1hc2spOworICAgIHZpcnR1YWwgdm9pZCBzZXREZXB0aFN0ZW5jaWxT
dGF0ZShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmRlcHRoU3RlbmNpbFN0YXRlLCBpbnQg
c3RlbmNpbFJlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0
ZW5jaWxCYWNrUmVmLCBib29sIGZyb250RmFjZUNDVyk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2Npc3NvclJlY3RhbmdsZShjb25zdCBnbDo6UmVjdGFuZ2xlICZzY2lzc29yLCBib29sIGVuYWJs
ZWQpOworICAgIHZpcnR1YWwgYm9vbCBzZXRWaWV3cG9ydChjb25zdCBnbDo6UmVjdGFuZ2xlICZ2
aWV3cG9ydCwgZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIsIEdMZW51bSBkcmF3TW9kZSwgR0xlbnVt
IGZyb250RmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmVWaWV3
cG9ydCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHlSZW5kZXJUYXJnZXQoZ2w6OkZyYW1lYnVm
ZmVyICpmcmFtZUJ1ZmZlcik7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5U2hhZGVycyhnbDo6UHJv
Z3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSk7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5VW5pZm9y
bXMoZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnksIGdsOjpVbmlmb3JtQXJyYXkgKnVu
aWZvcm1BcnJheSk7CisgICAgdmlydHVhbCBib29sIGFwcGx5UHJpbWl0aXZlVHlwZShHTGVudW0g
cHJpbWl0aXZlVHlwZSwgR0xzaXplaSBlbGVtZW50Q291bnQpOworICAgIHZpcnR1YWwgR0xlbnVt
IGFwcGx5VmVydGV4QnVmZmVyKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5LCBnbDo6
VmVydGV4QXR0cmlidXRlIHZlcnRleEF0dHJpYnV0ZXNbXSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkg
Y291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKTsKKyAgICB2aXJ0dWFsIEdMZW51bSBhcHBseUluZGV4
QnVmZmVyKGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVm
ZmVyLCBHTHNpemVpIGNvdW50LCBHTGVudW0gbW9kZSwgR0xlbnVtIHR5cGUsIFRyYW5zbGF0ZWRJ
bmRleERhdGEgKmluZGV4SW5mbyk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0FycmF5cyhHTGVu
dW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBl
LCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlciwg
Y29uc3QgVHJhbnNsYXRlZEluZGV4RGF0YSAmaW5kZXhJbmZvLCBHTHNpemVpIGluc3RhbmNlcyk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoY29uc3QgZ2w6OkNsZWFyUGFyYW1ldGVycyAmY2xl
YXJQYXJhbXMsIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVCdWZmZXIpOworCisgICAgdmlydHVhbCB2
b2lkIG1hcmtBbGxTdGF0ZURpcnR5KCk7CisKKyAgICAvLyBsb3N0IGRldmljZQorICAgIHZvaWQg
bm90aWZ5RGV2aWNlTG9zdCgpOworICAgIHZpcnR1YWwgYm9vbCBpc0RldmljZUxvc3QoKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgdGVzdERldmljZUxvc3QoYm9vbCBub3RpZnkpOworICAgIHZpcnR1YWwg
Ym9vbCB0ZXN0RGV2aWNlUmVzZXR0YWJsZSgpOworCisgICAgLy8gUmVuZGVyZXIgY2FwYWJpbGl0
aWVzCisgICAgSURpcmVjdDNERGV2aWNlOSAqZ2V0RGV2aWNlKCkgeyByZXR1cm4gbURldmljZTsg
fQorICAgIHZpcnR1YWwgRFdPUkQgZ2V0QWRhcHRlclZlbmRvcigpIGNvbnN0OworICAgIHZpcnR1
YWwgc3RkOjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0OworICAgIHZpcnR1
YWwgR1VJRCBnZXRBZGFwdGVySWRlbnRpZmllcigpIGNvbnN0OworCisgICAgdmlydHVhbCBib29s
IGdldEJHUkFUZXh0dXJlU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXREWFQx
VGV4dHVyZVN1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RFhUM1RleHR1cmVTdXBwb3J0
KCk7CisgICAgdmlydHVhbCBib29sIGdldERYVDVUZXh0dXJlU3VwcG9ydCgpOworICAgIHZpcnR1
YWwgYm9vbCBnZXRFdmVudFF1ZXJ5U3VwcG9ydCgpOworICAgIHZpcnR1YWwgYm9vbCBnZXRGbG9h
dDMyVGV4dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5nLCBib29sICpyZW5kZXJhYmxlKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0RmxvYXQxNlRleHR1cmVTdXBwb3J0KGJvb2wgKmZpbHRlcmluZywg
Ym9vbCAqcmVuZGVyYWJsZSk7CisgICAgdmlydHVhbCBib29sIGdldEx1bWluYW5jZVRleHR1cmVT
dXBwb3J0KCk7CisgICAgdmlydHVhbCBib29sIGdldEx1bWluYW5jZUFscGhhVGV4dHVyZVN1cHBv
cnQoKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VV
bml0cygpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldE1heENvbWJpbmVkVGV4
dHVyZUltYWdlVW5pdHMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZXNl
cnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBp
bnQgZ2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1WZWN0b3JzKCkgY29uc3Q7CisgICAgdmlydHVh
bCB1bnNpZ25lZCBpbnQgZ2V0TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKCkgY29uc3Q7
CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4VmFyeWluZ1ZlY3RvcnMoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0RGVwdGhUZXh0dXJlU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBnZXRPY2NsdXNpb25RdWVyeVN1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0SW5zdGFuY2luZ1N1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0VGV4
dHVyZUZpbHRlckFuaXNvdHJvcHlTdXBwb3J0KCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCBn
ZXRUZXh0dXJlTWF4QW5pc290cm9weSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRTaGFy
ZUhhbmRsZVN1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RGVyaXZhdGl2ZUlu
c3RydWN0aW9uU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRQb3N0U3ViQnVm
ZmVyU3VwcG9ydCgpIGNvbnN0OworCisgICAgdmlydHVhbCBpbnQgZ2V0TWFqb3JTaGFkZXJNb2Rl
bCgpIGNvbnN0OworICAgIHZpcnR1YWwgZmxvYXQgZ2V0TWF4UG9pbnRTaXplKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBpbnQgZ2V0TWF4Vmlld3BvcnREaW1lbnNpb24oKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGludCBnZXRNYXhUZXh0dXJlV2lkdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBnZXRN
YXhUZXh0dXJlSGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldDMyQml0SW5kZXhT
dXBwb3J0KCkgY29uc3Q7CisgICAgRFdPUkQgZ2V0Q2Fwc0RlY2xUeXBlcygpIGNvbnN0OworICAg
IHZpcnR1YWwgaW50IGdldE1pblN3YXBJbnRlcnZhbCgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50
IGdldE1heFN3YXBJbnRlcnZhbCgpIGNvbnN0OworCisgICAgdmlydHVhbCBHTHNpemVpIGdldE1h
eFN1cHBvcnRlZFNhbXBsZXMoKSBjb25zdDsKKyAgICBpbnQgZ2V0TmVhcmVzdFN1cHBvcnRlZFNh
bXBsZXMoRDNERk9STUFUIGZvcm1hdCwgaW50IHJlcXVlc3RlZCkgY29uc3Q7CisgICAgCisgICAg
dmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4UmVuZGVyVGFyZ2V0cygpIGNvbnN0OworCisgICAg
RDNERk9STUFUIENvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoR0xpbnQgaW50ZXJuYWxmb3Jt
YXQpOworCisgICAgLy8gUGl4ZWwgb3BlcmF0aW9ucworICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9S
ZW5kZXJUYXJnZXQoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqZGVzdCwgVGV4dHVyZVN0b3Jh
Z2VJbnRlcmZhY2UyRCAqc291cmNlKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29weVRvUmVuZGVyVGFy
Z2V0KFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSAqZGVzdCwgVGV4dHVyZVN0b3JhZ2VJbnRl
cmZhY2VDdWJlICpzb3VyY2UpOworCisgICAgdmlydHVhbCBib29sIGNvcHlJbWFnZShnbDo6RnJh
bWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBH
TGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIEdM
aW50IGxldmVsKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29weUltYWdlKGdsOjpGcmFtZWJ1ZmZlciAq
ZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0
Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgYmxpdFJlY3QoZ2w6OkZyYW1l
YnVmZmVyICpyZWFkVGFyZ2V0LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZyZWFkUmVjdCwgZ2w6OkZy
YW1lYnVmZmVyICpkcmF3VGFyZ2V0LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZkcmF3UmVjdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBibGl0UmVuZGVyVGFyZ2V0LCBib29sIGJsaXRE
ZXB0aFN0ZW5jaWwpOworICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzKGdsOjpGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIG91dHB1dFBpdGNoLCBib29sIHBhY2tSZXZlcnNlUm93T3JkZXIsIEdM
aW50IHBhY2tBbGlnbm1lbnQsIHZvaWQqIHBpeGVscyk7CisKKyAgICAvLyBSZW5kZXJUYXJnZXQg
Y3JlYXRpb24KKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAqY3JlYXRlUmVuZGVyVGFyZ2V0KFN3
YXBDaGFpbiAqc3dhcENoYWluLCBib29sIGRlcHRoKTsKKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdl
dCAqY3JlYXRlUmVuZGVyVGFyZ2V0KGludCB3aWR0aCwgaW50IGhlaWdodCwgR0xlbnVtIGZvcm1h
dCwgR0xzaXplaSBzYW1wbGVzLCBib29sIGRlcHRoKTsKKworICAgIC8vIFNoYWRlciBvcGVyYXRp
b25zCisgICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxlICpsb2FkRXhlY3V0YWJsZShjb25zdCB2
b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCwgcng6OlNoYWRlclR5cGUgdHlwZSk7CisgICAg
dmlydHVhbCBTaGFkZXJFeGVjdXRhYmxlICpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9n
ICZpbmZvTG9nLCBjb25zdCBjaGFyICpzaGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0eXBlKTsK
KworICAgIC8vIEltYWdlIG9wZXJhdGlvbnMKKyAgICB2aXJ0dWFsIEltYWdlICpjcmVhdGVJbWFn
ZSgpOworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcChJbWFnZSAqZGVzdCwgSW1hZ2Ug
KnNvdXJjZSk7CisgICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3Jh
Z2UyRChTd2FwQ2hhaW4gKnN3YXBDaGFpbik7CisgICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAq
Y3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMZW51bSB1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KTsKKyAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3Rv
cmFnZUN1YmUoaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gdXNhZ2Us
IGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBpbnQgc2l6ZSk7CisKKyAgICAvLyBCdWZmZXIgY3JlYXRp
b24KKyAgICB2aXJ0dWFsIFZlcnRleEJ1ZmZlciAqY3JlYXRlVmVydGV4QnVmZmVyKCk7CisgICAg
dmlydHVhbCBJbmRleEJ1ZmZlciAqY3JlYXRlSW5kZXhCdWZmZXIoKTsKKyAgICB2aXJ0dWFsIEJ1
ZmZlclN0b3JhZ2UgKmNyZWF0ZUJ1ZmZlclN0b3JhZ2UoKTsKKworICAgIC8vIFF1ZXJ5IGFuZCBG
ZW5jZSBjcmVhdGlvbgorICAgIHZpcnR1YWwgUXVlcnlJbXBsICpjcmVhdGVRdWVyeShHTGVudW0g
dHlwZSk7CisgICAgdmlydHVhbCBGZW5jZUltcGwgKmNyZWF0ZUZlbmNlKCk7CisKKyAgICAvLyBE
M0Q5LXJlbmRlcmVyIHNwZWNpZmljIG1ldGhvZHMKKyAgICBib29sIGJveEZpbHRlcihJRGlyZWN0
M0RTdXJmYWNlOSAqc291cmNlLCBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCk7CisKKyAgICBEM0RQ
T09MIGdldFRleHR1cmVQb29sKERXT1JEIHVzYWdlKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9v
bCBnZXRMVUlEKExVSUQgKmFkYXB0ZXJMdWlkKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIERJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJlcjkpOworCisgICAgdm9pZCBhcHBseVVuaWZv
cm1uZnYoZ2w6OlVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNvbnN0IEdMZmxvYXQgKnYpOworICAg
IHZvaWQgYXBwbHlVbmlmb3Jtbml2KGdsOjpVbmlmb3JtICp0YXJnZXRVbmlmb3JtLCBjb25zdCBH
TGludCAqdik7CisgICAgdm9pZCBhcHBseVVuaWZvcm1uYnYoZ2w6OlVuaWZvcm0gKnRhcmdldFVu
aWZvcm0sIGNvbnN0IEdMaW50ICp2KTsKKworICAgIHZvaWQgZHJhd0xpbmVMb29wKEdMc2l6ZWkg
Y291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGludCBtaW5JbmRleCwg
Z2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyKTsKKyAgICB2b2lkIGRyYXdJbmRleGVkUG9p
bnRzKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGds
OjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlcik7CisKKyAgICB2b2lkIGdldE11bHRpU2FtcGxl
U3VwcG9ydChEM0RGT1JNQVQgZm9ybWF0LCBib29sICptdWx0aVNhbXBsZUFycmF5KTsKKyAgICBi
b29sIGNvcHlUb1JlbmRlclRhcmdldChJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCwgSURpcmVjdDNE
U3VyZmFjZTkgKnNvdXJjZSwgYm9vbCBmcm9tTWFuYWdlZCk7CisgICAgZ2w6OlJlbmRlcmJ1ZmZl
ciAqZ2V0TnVsbENvbG9yYnVmZmVyKGdsOjpSZW5kZXJidWZmZXIgKmRlcHRoYnVmZmVyKTsKKwor
ICAgIEQzRFBPT0wgZ2V0QnVmZmVyUG9vbChEV09SRCB1c2FnZSkgY29uc3Q7CisKKyAgICBITU9E
VUxFIG1EM2Q5TW9kdWxlOworICAgIEhEQyBtRGM7CisKKyAgICB2b2lkIGluaXRpYWxpemVEZXZp
Y2UoKTsKKyAgICBEM0RQUkVTRU5UX1BBUkFNRVRFUlMgZ2V0RGVmYXVsdFByZXNlbnRQYXJhbWV0
ZXJzKCk7CisgICAgdm9pZCByZWxlYXNlRGV2aWNlUmVzb3VyY2VzKCk7CisKKyAgICBVSU5UIG1B
ZGFwdGVyOworICAgIEQzRERFVlRZUEUgbURldmljZVR5cGU7CisgICAgYm9vbCBtU29mdHdhcmVE
ZXZpY2U7ICAgLy8gRklYTUU6IERlcHJlY2F0ZQorICAgIElEaXJlY3QzRDkgKm1EM2Q5OyAgLy8g
QWx3YXlzIHZhbGlkIGFmdGVyIHN1Y2Nlc3NmdWwgaW5pdGlhbGl6YXRpb24uCisgICAgSURpcmVj
dDNEOUV4ICptRDNkOUV4OyAgLy8gTWlnaHQgYmUgbnVsbCBpZiBEM0Q5RXggaXMgbm90IHN1cHBv
cnRlZC4KKyAgICBJRGlyZWN0M0REZXZpY2U5ICptRGV2aWNlOworICAgIElEaXJlY3QzRERldmlj
ZTlFeCAqbURldmljZUV4OyAgLy8gTWlnaHQgYmUgbnVsbCBpZiBEM0Q5RXggaXMgbm90IHN1cHBv
cnRlZC4KKworICAgIEJsaXQgKm1CbGl0OworCisgICAgSFdORCBtRGV2aWNlV2luZG93OworCisg
ICAgYm9vbCBtRGV2aWNlTG9zdDsKKyAgICBEM0RDQVBTOSBtRGV2aWNlQ2FwczsKKyAgICBEM0RB
REFQVEVSX0lERU5USUZJRVI5IG1BZGFwdGVySWRlbnRpZmllcjsKKworICAgIEQzRFBSSU1JVElW
RVRZUEUgbVByaW1pdGl2ZVR5cGU7CisgICAgaW50IG1QcmltaXRpdmVDb3VudDsKKyAgICBHTHNp
emVpIG1SZXBlYXREcmF3OworCisgICAgYm9vbCBtU2NlbmVTdGFydGVkOworICAgIGJvb2wgbVN1
cHBvcnRzTm9uUG93ZXIyVGV4dHVyZXM7CisgICAgYm9vbCBtU3VwcG9ydHNUZXh0dXJlRmlsdGVy
QW5pc290cm9weTsKKyAgICBpbnQgbU1pblN3YXBJbnRlcnZhbDsKKyAgICBpbnQgbU1heFN3YXBJ
bnRlcnZhbDsKKworICAgIGJvb2wgbU9jY2x1c2lvblF1ZXJ5U3VwcG9ydDsKKyAgICBib29sIG1F
dmVudFF1ZXJ5U3VwcG9ydDsKKyAgICBib29sIG1WZXJ0ZXhUZXh0dXJlU3VwcG9ydDsKKworICAg
IGJvb2wgbURlcHRoVGV4dHVyZVN1cHBvcnQ7CisKKyAgICBib29sIG1GbG9hdDMyVGV4dHVyZVN1
cHBvcnQ7CisgICAgYm9vbCBtRmxvYXQzMkZpbHRlclN1cHBvcnQ7CisgICAgYm9vbCBtRmxvYXQz
MlJlbmRlclN1cHBvcnQ7CisKKyAgICBib29sIG1GbG9hdDE2VGV4dHVyZVN1cHBvcnQ7CisgICAg
Ym9vbCBtRmxvYXQxNkZpbHRlclN1cHBvcnQ7CisgICAgYm9vbCBtRmxvYXQxNlJlbmRlclN1cHBv
cnQ7CisKKyAgICBib29sIG1EWFQxVGV4dHVyZVN1cHBvcnQ7CisgICAgYm9vbCBtRFhUM1RleHR1
cmVTdXBwb3J0OworICAgIGJvb2wgbURYVDVUZXh0dXJlU3VwcG9ydDsKKworICAgIGJvb2wgbUx1
bWluYW5jZVRleHR1cmVTdXBwb3J0OworICAgIGJvb2wgbUx1bWluYW5jZUFscGhhVGV4dHVyZVN1
cHBvcnQ7CisKKyAgICBzdGQ6Om1hcDxEM0RGT1JNQVQsIGJvb2wgKj4gbU11bHRpU2FtcGxlU3Vw
cG9ydDsKKyAgICBHTHNpemVpIG1NYXhTdXBwb3J0ZWRTYW1wbGVzOworCisgICAgLy8gY3VycmVu
dCByZW5kZXIgdGFyZ2V0IHN0YXRlcworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZFJlbmRlclRh
cmdldFNlcmlhbDsKKyAgICB1bnNpZ25lZCBpbnQgbUFwcGxpZWREZXB0aGJ1ZmZlclNlcmlhbDsK
KyAgICB1bnNpZ25lZCBpbnQgbUFwcGxpZWRTdGVuY2lsYnVmZmVyU2VyaWFsOworICAgIGJvb2wg
bURlcHRoU3RlbmNpbEluaXRpYWxpemVkOworICAgIGJvb2wgbVJlbmRlclRhcmdldERlc2NJbml0
aWFsaXplZDsKKyAgICByeDo6UmVuZGVyVGFyZ2V0OjpEZXNjIG1SZW5kZXJUYXJnZXREZXNjOwor
ICAgIHVuc2lnbmVkIGludCBtQ3VyU3RlbmNpbFNpemU7CisgICAgdW5zaWduZWQgaW50IG1DdXJE
ZXB0aFNpemU7CisKKyAgICBJRGlyZWN0M0RTdGF0ZUJsb2NrOSAqbU1hc2tlZENsZWFyU2F2ZWRT
dGF0ZTsKKworICAgIC8vIHByZXZpb3VzbHkgc2V0IHJlbmRlciBzdGF0ZXMKKyAgICBib29sIG1G
b3JjZVNldERlcHRoU3RlbmNpbFN0YXRlOworICAgIGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSBtQ3Vy
RGVwdGhTdGVuY2lsU3RhdGU7CisgICAgaW50IG1DdXJTdGVuY2lsUmVmOworICAgIGludCBtQ3Vy
U3RlbmNpbEJhY2tSZWY7CisgICAgYm9vbCBtQ3VyRnJvbnRGYWNlQ0NXOworCisgICAgYm9vbCBt
Rm9yY2VTZXRSYXN0ZXJTdGF0ZTsKKyAgICBnbDo6UmFzdGVyaXplclN0YXRlIG1DdXJSYXN0ZXJT
dGF0ZTsKKworICAgIGJvb2wgbUZvcmNlU2V0U2Npc3NvcjsKKyAgICBnbDo6UmVjdGFuZ2xlIG1D
dXJTY2lzc29yOworICAgIGJvb2wgbVNjaXNzb3JFbmFibGVkOworCisgICAgYm9vbCBtRm9yY2VT
ZXRWaWV3cG9ydDsKKyAgICBnbDo6UmVjdGFuZ2xlIG1DdXJWaWV3cG9ydDsKKyAgICBmbG9hdCBt
Q3VyTmVhcjsKKyAgICBmbG9hdCBtQ3VyRmFyOworCisgICAgYm9vbCBtRm9yY2VTZXRCbGVuZFN0
YXRlOworICAgIGdsOjpCbGVuZFN0YXRlIG1DdXJCbGVuZFN0YXRlOworICAgIGdsOjpDb2xvciBt
Q3VyQmxlbmRDb2xvcjsKKyAgICBHTHVpbnQgbUN1clNhbXBsZU1hc2s7CisKKyAgICAvLyBDdXJy
ZW50bHkgYXBwbGllZCBzYW1wbGVyIHN0YXRlcworICAgIGJvb2wgbUZvcmNlU2V0VmVydGV4U2Ft
cGxlclN0YXRlc1tnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VO
SVRTXTsKKyAgICBnbDo6U2FtcGxlclN0YXRlIG1DdXJWZXJ0ZXhTYW1wbGVyU3RhdGVzW2dsOjpJ
TVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworCisgICAgYm9v
bCBtRm9yY2VTZXRQaXhlbFNhbXBsZXJTdGF0ZXNbZ2w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRT
XTsKKyAgICBnbDo6U2FtcGxlclN0YXRlIG1DdXJQaXhlbFNhbXBsZXJTdGF0ZXNbZ2w6Ok1BWF9U
RVhUVVJFX0lNQUdFX1VOSVRTXTsKKworICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIHRleHR1cmVz
CisgICAgdW5zaWduZWQgaW50IG1DdXJWZXJ0ZXhUZXh0dXJlU2VyaWFsc1tnbDo6SU1QTEVNRU5U
QVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTXTsKKyAgICB1bnNpZ25lZCBpbnQg
bUN1clBpeGVsVGV4dHVyZVNlcmlhbHNbZ2w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTXTsKKwor
ICAgIHVuc2lnbmVkIGludCBtQXBwbGllZElCU2VyaWFsOworICAgIHVuc2lnbmVkIGludCBtQXBw
bGllZFByb2dyYW1CaW5hcnlTZXJpYWw7CisgICAgCisgICAgcng6OmR4X1ZlcnRleENvbnN0YW50
cyBtVmVydGV4Q29uc3RhbnRzOworICAgIHJ4OjpkeF9QaXhlbENvbnN0YW50cyBtUGl4ZWxDb25z
dGFudHM7CisgICAgYm9vbCBtRHhVbmlmb3Jtc0RpcnR5OworCisgICAgLy8gQSBwb29sIG9mIGV2
ZW50IHF1ZXJpZXMgdGhhdCBhcmUgY3VycmVudGx5IHVudXNlZC4KKyAgICBzdGQ6OnZlY3RvcjxJ
RGlyZWN0M0RRdWVyeTkqPiBtRXZlbnRRdWVyeVBvb2w7CisgICAgVmVydGV4U2hhZGVyQ2FjaGUg
bVZlcnRleFNoYWRlckNhY2hlOworICAgIFBpeGVsU2hhZGVyQ2FjaGUgbVBpeGVsU2hhZGVyQ2Fj
aGU7CisKKyAgICBWZXJ0ZXhEYXRhTWFuYWdlciAqbVZlcnRleERhdGFNYW5hZ2VyOworICAgIFZl
cnRleERlY2xhcmF0aW9uQ2FjaGUgbVZlcnRleERlY2xhcmF0aW9uQ2FjaGU7CisKKyAgICBJbmRl
eERhdGFNYW5hZ2VyICptSW5kZXhEYXRhTWFuYWdlcjsKKyAgICBTdHJlYW1pbmdJbmRleEJ1ZmZl
ckludGVyZmFjZSAqbUxpbmVMb29wSUI7CisKKyAgICBlbnVtIHsgTlVNX05VTExfQ09MT1JCVUZG
RVJfQ0FDSEVfRU5UUklFUyA9IDEyIH07CisgICAgc3RydWN0IE51bGxDb2xvcmJ1ZmZlckNhY2hl
RW50cnkKKyAgICB7CisgICAgICAgIFVJTlQgbHJ1Q291bnQ7CisgICAgICAgIGludCB3aWR0aDsK
KyAgICAgICAgaW50IGhlaWdodDsKKyAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqYnVmZmVyOwor
ICAgIH0gbU51bGxDb2xvcmJ1ZmZlckNhY2hlW05VTV9OVUxMX0NPTE9SQlVGRkVSX0NBQ0hFX0VO
VFJJRVNdOworICAgIFVJTlQgbU1heE51bGxDb2xvcmJ1ZmZlckxSVTsKKworfTsKKworfQorI2Vu
ZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUjlfSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIxMS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9S
ZW5kZXJlcjExLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIxMS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzUyNyBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDEyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBSZW5kZXJlcjExLmNwcDogSW1wbGVtZW50cyBhIGJhY2stZW5kIHNwZWNpZmljIGNsYXNz
IGZvciB0aGUgRDNEMTEgcmVuZGVyZXIuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvQnVm
ZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIKKyNpbmNsdWRlICJs
aWJHTEVTdjIvRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVyQnVmZmVy
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0MTEuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvcmVuZGVyZXIxMV91dGlscy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5k
ZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
U3dhcENoYWluMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UxMS5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjExLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2UxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9WZXJ0ZXhEYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRl
eERhdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9y
YWdlMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUXVlcnkxMS5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTExLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaDExdnMuaCIKKyNpbmNsdWRlICJs
aWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmExMXBzLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91
Z2hyZ2IxMXBzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGls
ZWQvcGFzc3Rocm91Z2hsdW0xMXBzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3No
YWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaCIKKworI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyMTF2cy5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyc2luZ2xlMTFwcy5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFybXVsdGlw
bGUxMXBzLmgiCisKKyNpbmNsdWRlICJsaWJFR0wvRGlzcGxheS5oIgorCisjaWZkZWYgX0RFQlVH
CisvLyB0aGlzIGZsYWcgZW5hYmxlcyBzdXBwcmVzc2luZyBzb21lIHNwdXJpb3VzIHdhcm5pbmdz
IHRoYXQgcG9wIHVwIGluIGNlcnRhaW4gV2ViR0wgc2FtcGxlcworLy8gYW5kIGNvbmZvcm1hbmNl
IHRlc3RzLiB0byBlbmFibGUgYWxsIHdhcm5pbmdzLCByZW1vdmUgdGhpcyBkZWZpbmUuCisjZGVm
aW5lIEFOR0xFX1NVUFBSRVNTX0QzRDExX0hBWkFSRF9XQVJOSU5HUyAxCisjZW5kaWYKKworbmFt
ZXNwYWNlIHJ4Cit7CitzdGF0aWMgY29uc3QgRFhHSV9GT1JNQVQgUmVuZGVyVGFyZ2V0Rm9ybWF0
c1tdID0KKyAgICB7CisgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STQorICAgIH07CisKK3N0YXRpYyBjb25zdCBEWEdJ
X0ZPUk1BVCBEZXB0aFN0ZW5jaWxGb3JtYXRzW10gPQorICAgIHsKKyAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCisgICAg
ICAgIERYR0lfRk9STUFUX0QxNl9VTk9STQorICAgIH07CisKK2VudW0KK3sKKyAgICBNQVhfVEVY
VFVSRV9JTUFHRV9VTklUU19WVEZfU000ID0gMTYKK307CisKK1JlbmRlcmVyMTE6OlJlbmRlcmVy
MTEoZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBIREMgaERjKSA6IFJlbmRlcmVyKGRpc3BsYXkpLCBt
RGMoaERjKQoreworICAgIG1WZXJ0ZXhEYXRhTWFuYWdlciA9IE5VTEw7CisgICAgbUluZGV4RGF0
YU1hbmFnZXIgPSBOVUxMOworCisgICAgbUxpbmVMb29wSUIgPSBOVUxMOworICAgIG1Ucmlhbmds
ZUZhbklCID0gTlVMTDsKKworICAgIG1Db3B5UmVzb3VyY2VzSW5pdGlhbGl6ZWQgPSBmYWxzZTsK
KyAgICBtQ29weVZCID0gTlVMTDsKKyAgICBtQ29weVNhbXBsZXIgPSBOVUxMOworICAgIG1Db3B5
SUwgPSBOVUxMOworICAgIG1Db3B5VlMgPSBOVUxMOworICAgIG1Db3B5UkdCQVBTID0gTlVMTDsK
KyAgICBtQ29weVJHQlBTID0gTlVMTDsKKyAgICBtQ29weUx1bVBTID0gTlVMTDsKKyAgICBtQ29w
eUx1bUFscGhhUFMgPSBOVUxMOworCisgICAgbUNsZWFyUmVzb3VyY2VzSW5pdGlhbGl6ZWQgPSBm
YWxzZTsKKyAgICBtQ2xlYXJWQiA9IE5VTEw7CisgICAgbUNsZWFySUwgPSBOVUxMOworICAgIG1D
bGVhclZTID0gTlVMTDsKKyAgICBtQ2xlYXJTaW5nbGVQUyA9IE5VTEw7CisgICAgbUNsZWFyTXVs
dGlwbGVQUyA9IE5VTEw7CisgICAgbUNsZWFyU2Npc3NvclJTID0gTlVMTDsKKyAgICBtQ2xlYXJO
b1NjaXNzb3JSUyA9IE5VTEw7CisKKyAgICBtU3luY1F1ZXJ5ID0gTlVMTDsKKworICAgIG1EM2Qx
MU1vZHVsZSA9IE5VTEw7CisgICAgbUR4Z2lNb2R1bGUgPSBOVUxMOworCisgICAgbURldmljZUxv
c3QgPSBmYWxzZTsKKworICAgIG1NYXhTdXBwb3J0ZWRTYW1wbGVzID0gMDsKKworICAgIG1EZXZp
Y2UgPSBOVUxMOworICAgIG1EZXZpY2VDb250ZXh0ID0gTlVMTDsKKyAgICBtRHhnaUFkYXB0ZXIg
PSBOVUxMOworICAgIG1EeGdpRmFjdG9yeSA9IE5VTEw7CisKKyAgICBtRHJpdmVyQ29uc3RhbnRC
dWZmZXJWUyA9IE5VTEw7CisgICAgbURyaXZlckNvbnN0YW50QnVmZmVyUFMgPSBOVUxMOworCisg
ICAgbUJHUkFUZXh0dXJlU3VwcG9ydCA9IGZhbHNlOworCisgICAgbUlzR2VvbWV0cnlTaGFkZXJB
Y3RpdmUgPSBmYWxzZTsKK30KKworUmVuZGVyZXIxMTo6flJlbmRlcmVyMTEoKQoreworICAgIHJl
bGVhc2UoKTsKK30KKworUmVuZGVyZXIxMSAqUmVuZGVyZXIxMTo6bWFrZVJlbmRlcmVyMTEoUmVu
ZGVyZXIgKnJlbmRlcmVyKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpSZW5k
ZXJlcjExKiwgcmVuZGVyZXIpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cng6OlJlbmRlcmVy
MTEqPihyZW5kZXJlcik7Cit9CisKKyNpZm5kZWYgX19kM2QxMV8xX2hfXworI2RlZmluZSBEM0Qx
MV9NRVNTQUdFX0lEX0RFVklDRV9EUkFXX1JFTkRFUlRBUkdFVFZJRVdfTk9UX1NFVCAoKEQzRDEx
X01FU1NBR0VfSUQpMzE0NjA4MSkKKyNlbmRpZgorCitFR0xpbnQgUmVuZGVyZXIxMTo6aW5pdGlh
bGl6ZSgpCit7CisgICAgaWYgKCFpbml0aWFsaXplQ29tcGlsZXIoKSkKKyAgICB7CisgICAgICAg
IHJldHVybiBFR0xfTk9UX0lOSVRJQUxJWkVEOworICAgIH0KKworICAgIG1EeGdpTW9kdWxlID0g
TG9hZExpYnJhcnkoVEVYVCgiZHhnaS5kbGwiKSk7CisgICAgbUQzZDExTW9kdWxlID0gTG9hZExp
YnJhcnkoVEVYVCgiZDNkMTEuZGxsIikpOworCisgICAgaWYgKG1EM2QxMU1vZHVsZSA9PSBOVUxM
IHx8IG1EeGdpTW9kdWxlID09IE5VTEwpCisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5vdCBs
b2FkIEQzRDExIG9yIERYR0kgbGlicmFyeSAtIGFib3J0aW5nIVxuIik7CisgICAgICAgIHJldHVy
biBFR0xfTk9UX0lOSVRJQUxJWkVEOworICAgIH0KKworICAgIC8vIGNyZWF0ZSB0aGUgRDNEMTEg
ZGV2aWNlCisgICAgQVNTRVJUKG1EZXZpY2UgPT0gTlVMTCk7CisgICAgUEZOX0QzRDExX0NSRUFU
RV9ERVZJQ0UgRDNEMTFDcmVhdGVEZXZpY2UgPSAoUEZOX0QzRDExX0NSRUFURV9ERVZJQ0UpR2V0
UHJvY0FkZHJlc3MobUQzZDExTW9kdWxlLCAiRDNEMTFDcmVhdGVEZXZpY2UiKTsKKworICAgIGlm
IChEM0QxMUNyZWF0ZURldmljZSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgRVJSKCJDb3VsZCBu
b3QgcmV0cmlldmUgRDNEMTFDcmVhdGVEZXZpY2UgYWRkcmVzcyAtIGFib3J0aW5nIVxuIik7Cisg
ICAgICAgIHJldHVybiBFR0xfTk9UX0lOSVRJQUxJWkVEOworICAgIH0KKworICAgIEQzRF9GRUFU
VVJFX0xFVkVMIGZlYXR1cmVMZXZlbHNbXSA9CisgICAgeworICAgICAgICBEM0RfRkVBVFVSRV9M
RVZFTF8xMV8wLAorICAgICAgICBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xLAorICAgICAgICBEM0Rf
RkVBVFVSRV9MRVZFTF8xMF8wLAorICAgIH07CisKKyAgICBIUkVTVUxUIHJlc3VsdCA9IFNfT0s7
CisKKyNpZmRlZiBfREVCVUcKKyAgICByZXN1bHQgPSBEM0QxMUNyZWF0ZURldmljZShOVUxMLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRF9EUklWRVJfVFlQRV9IQVJEV0FSRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEQzRDExX0NSRUFURV9ERVZJQ0VfREVCVUcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmVhdHVyZUxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBcnJheVNpemUoZmVhdHVyZUxldmVscyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRDNEMTFfU0RLX1ZFUlNJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jm1EZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1GZWF0dXJlTGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1EZXZpY2VDb250ZXh0KTsKKworICAg
IGlmICghbURldmljZSB8fCBGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIEVSUigiRmFp
bGVkIGNyZWF0aW5nIERlYnVnIEQzRDExIGRldmljZSAtIGZhbGxpbmcgYmFjayB0byByZWxlYXNl
IHJ1bnRpbWUuXG4iKTsKKyAgICB9CisKKyAgICBpZiAoIW1EZXZpY2UgfHwgRkFJTEVEKHJlc3Vs
dCkpCisjZW5kaWYKKyAgICB7CisgICAgICAgIHJlc3VsdCA9IEQzRDExQ3JlYXRlRGV2aWNlKE5V
TEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRF9EUklWRVJfVFlQRV9I
QVJEV0FSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmVhdHVyZUxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQXJyYXlTaXplKGZlYXR1cmVMZXZlbHMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEM0QxMV9TREtfVkVSU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJm1EZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZt
RmVhdHVyZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbURldmlj
ZUNvbnRleHQpOworCisgICAgICAgIGlmICghbURldmljZSB8fCBGQUlMRUQocmVzdWx0KSkKKyAg
ICAgICAgeworICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIEQzRDExIGRldmljZSAt
IGFib3J0aW5nIVxuIik7CisgICAgICAgICAgICByZXR1cm4gRUdMX05PVF9JTklUSUFMSVpFRDsg
ICAvLyBDbGVhbnVwIGRvbmUgYnkgZGVzdHJ1Y3RvciB0aHJvdWdoIGdsRGVzdHJveVJlbmRlcmVy
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBJRFhHSURldmljZSAqZHhnaURldmljZSA9IE5VTEw7
CisgICAgcmVzdWx0ID0gbURldmljZS0+UXVlcnlJbnRlcmZhY2UoX191dWlkb2YoSURYR0lEZXZp
Y2UpLCAodm9pZCoqKSZkeGdpRGV2aWNlKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAg
ICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IHF1ZXJ5IERYR0kgZGV2aWNlIC0gYWJvcnRpbmch
XG4iKTsKKyAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAgfQorCisgICAg
cmVzdWx0ID0gZHhnaURldmljZS0+R2V0UGFyZW50KF9fdXVpZG9mKElEWEdJQWRhcHRlciksICh2
b2lkKiopJm1EeGdpQWRhcHRlcik7CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgewor
ICAgICAgICBFUlIoIkNvdWxkIG5vdCByZXRyaWV2ZSBEWEdJIGFkYXB0ZXIgLSBhYm9ydGluZyFc
biIpOworICAgICAgICByZXR1cm4gRUdMX05PVF9JTklUSUFMSVpFRDsKKyAgICB9CisKKyAgICBk
eGdpRGV2aWNlLT5SZWxlYXNlKCk7CisKKyAgICBtRHhnaUFkYXB0ZXItPkdldERlc2MoJm1BZGFw
dGVyRGVzY3JpcHRpb24pOworICAgIG1lbXNldChtRGVzY3JpcHRpb24sIDAsIHNpemVvZihtRGVz
Y3JpcHRpb24pKTsKKyAgICB3Y3N0b21icyhtRGVzY3JpcHRpb24sIG1BZGFwdGVyRGVzY3JpcHRp
b24uRGVzY3JpcHRpb24sIHNpemVvZihtRGVzY3JpcHRpb24pIC0gMSk7CisKKyAgICByZXN1bHQg
PSBtRHhnaUFkYXB0ZXItPkdldFBhcmVudChfX3V1aWRvZihJRFhHSUZhY3RvcnkpLCAodm9pZCoq
KSZtRHhnaUZhY3RvcnkpOworCisgICAgaWYgKCFtRHhnaUZhY3RvcnkgfHwgRkFJTEVEKHJlc3Vs
dCkpCisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgRFhHSSBmYWN0b3J5IC0g
YWJvcnRpbmchXG4iKTsKKyAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAg
fQorCisgICAgLy8gRGlzYWJsZSBzb21lIHNwdXJpb3VzIEQzRDExIGRlYnVnIHdhcm5pbmdzIHRv
IHByZXZlbnQgdGhlbSBmcm9tIGZsb29kaW5nIHRoZSBvdXRwdXQgbG9nCisjaWYgZGVmaW5lZChB
TkdMRV9TVVBQUkVTU19EM0QxMV9IQVpBUkRfV0FSTklOR1MpICYmIGRlZmluZWQoX0RFQlVHKQor
ICAgIElEM0QxMUluZm9RdWV1ZSAqaW5mb1F1ZXVlOworICAgIHJlc3VsdCA9IG1EZXZpY2UtPlF1
ZXJ5SW50ZXJmYWNlKF9fdXVpZG9mKElEM0QxMUluZm9RdWV1ZSksICAodm9pZCAqKikmaW5mb1F1
ZXVlKTsKKworICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIEQzRDEx
X01FU1NBR0VfSUQgaGlkZU1lc3NhZ2VzW10gPQorICAgICAgICB7CisgICAgICAgICAgICBEM0Qx
MV9NRVNTQUdFX0lEX0RFVklDRV9PTVNFVFJFTkRFUlRBUkdFVFNfSEFaQVJELAorICAgICAgICAg
ICAgRDNEMTFfTUVTU0FHRV9JRF9ERVZJQ0VfUFNTRVRTSEFERVJSRVNPVVJDRVNfSEFaQVJELAor
ICAgICAgICAgICAgRDNEMTFfTUVTU0FHRV9JRF9ERVZJQ0VfRFJBV19SRU5ERVJUQVJHRVRWSUVX
X05PVF9TRVQKKyAgICAgICAgfTsKKworICAgICAgICBEM0QxMV9JTkZPX1FVRVVFX0ZJTFRFUiBm
aWx0ZXIgPSB7MH07CisgICAgICAgIGZpbHRlci5EZW55TGlzdC5OdW1JRHMgPSBBcnJheVNpemUo
aGlkZU1lc3NhZ2VzKTsKKyAgICAgICAgZmlsdGVyLkRlbnlMaXN0LnBJRExpc3QgPSBoaWRlTWVz
c2FnZXM7CisKKyAgICAgICAgaW5mb1F1ZXVlLT5BZGRTdG9yYWdlRmlsdGVyRW50cmllcygmZmls
dGVyKTsKKworICAgICAgICBpbmZvUXVldWUtPlJlbGVhc2UoKTsKKyAgICB9CisjZW5kaWYKKwor
ICAgIHVuc2lnbmVkIGludCBtYXhTdXBwb3J0ZWRTYW1wbGVzID0gMDsKKyAgICB1bnNpZ25lZCBp
bnQgcnRGb3JtYXRDb3VudCA9IEFycmF5U2l6ZShSZW5kZXJUYXJnZXRGb3JtYXRzKTsKKyAgICB1
bnNpZ25lZCBpbnQgZHNGb3JtYXRDb3VudCA9IEFycmF5U2l6ZShEZXB0aFN0ZW5jaWxGb3JtYXRz
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHJ0Rm9ybWF0Q291bnQgKyBkc0Zv
cm1hdENvdW50OyArK2kpCisgICAgeworICAgICAgICBEWEdJX0ZPUk1BVCBmb3JtYXQgPSAoaSA8
IHJ0Rm9ybWF0Q291bnQpID8gUmVuZGVyVGFyZ2V0Rm9ybWF0c1tpXSA6IERlcHRoU3RlbmNpbEZv
cm1hdHNbaSAtIHJ0Rm9ybWF0Q291bnRdOworICAgICAgICBpZiAoZm9ybWF0ICE9IERYR0lfRk9S
TUFUX1VOS05PV04pCisgICAgICAgIHsKKyAgICAgICAgICAgIFVJTlQgZm9ybWF0U3VwcG9ydDsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNoZWNrRm9ybWF0U3VwcG9ydChmb3JtYXQs
ICZmb3JtYXRTdXBwb3J0KTsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSAmJiAo
Zm9ybWF0U3VwcG9ydCAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX01VTFRJU0FNUExFX1JFTkRFUlRB
UkdFVCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTXVsdGlzYW1wbGVTdXBwb3J0
SW5mbyBzdXBwb3J0SW5mbzsKKworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGog
PSAxOyBqIDw9IEQzRDExX01BWF9NVUxUSVNBTVBMRV9TQU1QTEVfQ09VTlQ7IGorKykKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNoZWNr
TXVsdGlzYW1wbGVRdWFsaXR5TGV2ZWxzKGZvcm1hdCwgaiwgJnN1cHBvcnRJbmZvLnF1YWxpdHlM
ZXZlbHNbaiAtIDFdKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQp
ICYmIHN1cHBvcnRJbmZvLnF1YWxpdHlMZXZlbHNbaiAtIDFdID4gMCkKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgbWF4U3VwcG9ydGVkU2FtcGxlcyA9IHN0
ZDo6bWF4KGosIG1heFN1cHBvcnRlZFNhbXBsZXMpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgc3VwcG9ydEluZm8ucXVhbGl0eUxldmVsc1tqIC0gMV0gPSAwOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
bU11bHRpc2FtcGxlU3VwcG9ydE1hcC5pbnNlcnQoc3RkOjptYWtlX3BhaXIoZm9ybWF0LCBzdXBw
b3J0SW5mbykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIG1NYXhTdXBw
b3J0ZWRTYW1wbGVzID0gbWF4U3VwcG9ydGVkU2FtcGxlczsKKworICAgIGluaXRpYWxpemVEZXZp
Y2UoKTsKKworICAgIC8vIEJHUkEgdGV4dHVyZSBzdXBwb3J0IGlzIG9wdGlvbmFsIGluIGZlYXR1
cmUgbGV2ZWxzIDEwIGFuZCAxMF8xCisgICAgVUlOVCBmb3JtYXRTdXBwb3J0OworICAgIHJlc3Vs
dCA9IG1EZXZpY2UtPkNoZWNrRm9ybWF0U3VwcG9ydChEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9S
TSwgJmZvcm1hdFN1cHBvcnQpOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAg
ICAgIEVSUigiRXJyb3IgY2hlY2tpbmcgQkdSQSBmb3JtYXQgc3VwcG9ydDogMHglMDhYIiwgcmVz
dWx0KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IGZsYWdzID0g
KEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RFWFRVUkUyRCB8IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1JF
TkRFUl9UQVJHRVQpOworICAgICAgICBtQkdSQVRleHR1cmVTdXBwb3J0ID0gKGZvcm1hdFN1cHBv
cnQgJiBmbGFncykgPT0gZmxhZ3M7CisgICAgfQorCisgICAgLy8gQ2hlY2sgZmxvYXRpbmcgcG9p
bnQgdGV4dHVyZSBzdXBwb3J0CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCByZXF1aXJl
ZFRleHR1cmVGbGFncyA9IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RFWFRVUkUyRCB8IEQzRDExX0ZP
Uk1BVF9TVVBQT1JUX1RFWFRVUkVDVUJFOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQg
cmVxdWlyZWRSZW5kZXJhYmxlRmxhZ3MgPSBEM0QxMV9GT1JNQVRfU1VQUE9SVF9SRU5ERVJfVEFS
R0VUOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcmVxdWlyZWRGaWx0ZXJGbGFncyA9
IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1NIQURFUl9TQU1QTEU7CisKKyAgICBEWEdJX0ZPUk1BVCBm
bG9hdDE2Rm9ybWF0c1tdID0KKyAgICB7CisgICAgICAgIERYR0lfRk9STUFUX1IxNl9GTE9BVCwK
KyAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FULAorICAgICAgICBEWEdJX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfRkxPQVQsCisgICAgfTsKKworICAgIERYR0lfRk9STUFUIGZsb2F0MzJGb3Jt
YXRzW10gPQorICAgIHsKKyAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAorICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsCisgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMl9G
TE9BVCwKKyAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgIH07CisK
KyAgICBtRmxvYXQxNlRleHR1cmVTdXBwb3J0ID0gdHJ1ZTsKKyAgICBtRmxvYXQxNkZpbHRlclN1
cHBvcnQgPSB0cnVlOworICAgIG1GbG9hdDE2UmVuZGVyU3VwcG9ydCA9IHRydWU7CisgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBBcnJheVNpemUoZmxvYXQxNkZvcm1hdHMpOyBpKysp
CisgICAgeworICAgICAgICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNoZWNrRm9ybWF0U3VwcG9y
dChmbG9hdDE2Rm9ybWF0c1tpXSwgJmZvcm1hdFN1cHBvcnQpKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgbUZsb2F0MTZUZXh0dXJlU3VwcG9ydCA9IG1GbG9hdDE2VGV4dHVyZVN1cHBvcnQgJiYg
KGZvcm1hdFN1cHBvcnQgJiByZXF1aXJlZFRleHR1cmVGbGFncykgPT0gcmVxdWlyZWRUZXh0dXJl
RmxhZ3M7CisgICAgICAgICAgICBtRmxvYXQxNkZpbHRlclN1cHBvcnQgPSBtRmxvYXQxNkZpbHRl
clN1cHBvcnQgJiYgKGZvcm1hdFN1cHBvcnQgJiByZXF1aXJlZEZpbHRlckZsYWdzKSA9PSByZXF1
aXJlZEZpbHRlckZsYWdzOworICAgICAgICAgICAgbUZsb2F0MTZSZW5kZXJTdXBwb3J0ID0gbUZs
b2F0MTZSZW5kZXJTdXBwb3J0ICYmIChmb3JtYXRTdXBwb3J0ICYgcmVxdWlyZWRSZW5kZXJhYmxl
RmxhZ3MpID09IHJlcXVpcmVkUmVuZGVyYWJsZUZsYWdzOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgbUZsb2F0MTZUZXh0dXJlU3VwcG9ydCA9IGZhbHNl
OworICAgICAgICAgICAgbUZsb2F0MTZSZW5kZXJTdXBwb3J0ID0gZmFsc2U7CisgICAgICAgICAg
ICBtRmxvYXQxNkZpbHRlclN1cHBvcnQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IG1GbG9hdDMyVGV4dHVyZVN1cHBvcnQgPSB0cnVlOworICAgIG1GbG9hdDMyRmlsdGVyU3VwcG9y
dCA9IHRydWU7CisgICAgbUZsb2F0MzJSZW5kZXJTdXBwb3J0ID0gdHJ1ZTsKKyAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IEFycmF5U2l6ZShmbG9hdDMyRm9ybWF0cyk7IGkrKykKKyAg
ICB7CisgICAgICAgIGlmIChTVUNDRUVERUQobURldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KGZs
b2F0MzJGb3JtYXRzW2ldLCAmZm9ybWF0U3VwcG9ydCkpKQorICAgICAgICB7CisgICAgICAgICAg
ICBtRmxvYXQzMlRleHR1cmVTdXBwb3J0ID0gbUZsb2F0MzJUZXh0dXJlU3VwcG9ydCAmJiAoZm9y
bWF0U3VwcG9ydCAmIHJlcXVpcmVkVGV4dHVyZUZsYWdzKSA9PSByZXF1aXJlZFRleHR1cmVGbGFn
czsKKyAgICAgICAgICAgIG1GbG9hdDMyRmlsdGVyU3VwcG9ydCA9IG1GbG9hdDMyRmlsdGVyU3Vw
cG9ydCAmJiAoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkRmlsdGVyRmxhZ3MpID09IHJlcXVpcmVk
RmlsdGVyRmxhZ3M7CisgICAgICAgICAgICBtRmxvYXQzMlJlbmRlclN1cHBvcnQgPSBtRmxvYXQz
MlJlbmRlclN1cHBvcnQgJiYgKGZvcm1hdFN1cHBvcnQgJiByZXF1aXJlZFJlbmRlcmFibGVGbGFn
cykgPT0gcmVxdWlyZWRSZW5kZXJhYmxlRmxhZ3M7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor
ICAgICAgICB7CisgICAgICAgICAgICBtRmxvYXQzMlRleHR1cmVTdXBwb3J0ID0gZmFsc2U7Cisg
ICAgICAgICAgICBtRmxvYXQzMkZpbHRlclN1cHBvcnQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1G
bG9hdDMyUmVuZGVyU3VwcG9ydCA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgLy8g
Q2hlY2sgY29tcHJlc3NlZCB0ZXh0dXJlIHN1cHBvcnQKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQg
cmVxdWlyZWRDb21wcmVzc2VkVGV4dHVyZUZsYWdzID0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVY
VFVSRTJEOworCisgICAgaWYgKFNVQ0NFRURFRChtRGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQo
RFhHSV9GT1JNQVRfQkMxX1VOT1JNLCAmZm9ybWF0U3VwcG9ydCkpKQorICAgIHsKKyAgICAgICAg
bURYVDFUZXh0dXJlU3VwcG9ydCA9IChmb3JtYXRTdXBwb3J0ICYgcmVxdWlyZWRDb21wcmVzc2Vk
VGV4dHVyZUZsYWdzKSA9PSByZXF1aXJlZENvbXByZXNzZWRUZXh0dXJlRmxhZ3M7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1EWFQxVGV4dHVyZVN1cHBvcnQgPSBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNoZWNrRm9ybWF0U3VwcG9ydChEWEdJ
X0ZPUk1BVF9CQzNfVU5PUk0sICZmb3JtYXRTdXBwb3J0KSkpCisgICAgeworICAgICAgICBtRFhU
M1RleHR1cmVTdXBwb3J0ID0gKGZvcm1hdFN1cHBvcnQgJiByZXF1aXJlZENvbXByZXNzZWRUZXh0
dXJlRmxhZ3MpID09IHJlcXVpcmVkQ29tcHJlc3NlZFRleHR1cmVGbGFnczsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgbURYVDNUZXh0dXJlU3VwcG9ydCA9IGZhbHNlOworICAgIH0K
KworICAgIGlmIChTVUNDRUVERUQobURldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KERYR0lfRk9S
TUFUX0JDNV9VTk9STSwgJmZvcm1hdFN1cHBvcnQpKSkKKyAgICB7CisgICAgICAgIG1EWFQ1VGV4
dHVyZVN1cHBvcnQgPSAoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkQ29tcHJlc3NlZFRleHR1cmVG
bGFncykgPT0gcmVxdWlyZWRDb21wcmVzc2VkVGV4dHVyZUZsYWdzOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBtRFhUNVRleHR1cmVTdXBwb3J0ID0gZmFsc2U7CisgICAgfQorCisg
ICAgLy8gQ2hlY2sgZGVwdGggdGV4dHVyZSBzdXBwb3J0CisgICAgRFhHSV9GT1JNQVQgZGVwdGhU
ZXh0dXJlRm9ybWF0c1tdID0KKyAgICB7CisgICAgICAgIERYR0lfRk9STUFUX0QxNl9VTk9STSwK
KyAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCisgICAgfTsKKworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcmVxdWlyZWREZXB0aFRleHR1cmVGbGFncyA9IEQzRDEx
X0ZPUk1BVF9TVVBQT1JUX0RFUFRIX1NURU5DSUwgfAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RF
WFRVUkUyRDsKKworICAgIG1EZXB0aFRleHR1cmVTdXBwb3J0ID0gdHJ1ZTsKKyAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IEFycmF5U2l6ZShkZXB0aFRleHR1cmVGb3JtYXRzKTsgaSsr
KQorICAgIHsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChtRGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBv
cnQoZGVwdGhUZXh0dXJlRm9ybWF0c1tpXSwgJmZvcm1hdFN1cHBvcnQpKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgbURlcHRoVGV4dHVyZVN1cHBvcnQgPSBtRGVwdGhUZXh0dXJlU3VwcG9ydCAm
JiAoKGZvcm1hdFN1cHBvcnQgJiByZXF1aXJlZERlcHRoVGV4dHVyZUZsYWdzKSA9PSByZXF1aXJl
ZERlcHRoVGV4dHVyZUZsYWdzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1EZXB0aFRleHR1cmVTdXBwb3J0ID0gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gRUdMX1NVQ0NFU1M7Cit9CisKKy8vIGRvIGFueSBvbmUtdGltZSBk
ZXZpY2UgaW5pdGlhbGl6YXRpb24KKy8vIE5PVEU6IHRoaXMgaXMgYWxzbyBuZWVkZWQgYWZ0ZXIg
YSBkZXZpY2UgbG9zdC9yZXNldAorLy8gdG8gcmVzZXQgdGhlIHNjZW5lIHN0YXR1cyBhbmQgZW5z
dXJlIHRoZSBkZWZhdWx0IHN0YXRlcyBhcmUgcmVzZXQuCit2b2lkIFJlbmRlcmVyMTE6OmluaXRp
YWxpemVEZXZpY2UoKQoreworICAgIG1TdGF0ZUNhY2hlLmluaXRpYWxpemUobURldmljZSk7Cisg
ICAgbUlucHV0TGF5b3V0Q2FjaGUuaW5pdGlhbGl6ZShtRGV2aWNlLCBtRGV2aWNlQ29udGV4dCk7
CisKKyAgICBBU1NFUlQoIW1WZXJ0ZXhEYXRhTWFuYWdlciAmJiAhbUluZGV4RGF0YU1hbmFnZXIp
OworICAgIG1WZXJ0ZXhEYXRhTWFuYWdlciA9IG5ldyBWZXJ0ZXhEYXRhTWFuYWdlcih0aGlzKTsK
KyAgICBtSW5kZXhEYXRhTWFuYWdlciA9IG5ldyBJbmRleERhdGFNYW5hZ2VyKHRoaXMpOworCisg
ICAgbWFya0FsbFN0YXRlRGlydHkoKTsKK30KKworaW50IFJlbmRlcmVyMTE6OmdlbmVyYXRlQ29u
ZmlncyhDb25maWdEZXNjICoqY29uZmlnRGVzY0xpc3QpCit7CisgICAgdW5zaWduZWQgaW50IG51
bVJlbmRlckZvcm1hdHMgPSBBcnJheVNpemUoUmVuZGVyVGFyZ2V0Rm9ybWF0cyk7CisgICAgdW5z
aWduZWQgaW50IG51bURlcHRoRm9ybWF0cyA9IEFycmF5U2l6ZShEZXB0aFN0ZW5jaWxGb3JtYXRz
KTsKKyAgICAoKmNvbmZpZ0Rlc2NMaXN0KSA9IG5ldyBDb25maWdEZXNjW251bVJlbmRlckZvcm1h
dHMgKiBudW1EZXB0aEZvcm1hdHNdOworICAgIGludCBudW1Db25maWdzID0gMDsKKyAgICAKKyAg
ICBmb3IgKHVuc2lnbmVkIGludCBmb3JtYXRJbmRleCA9IDA7IGZvcm1hdEluZGV4IDwgbnVtUmVu
ZGVyRm9ybWF0czsgZm9ybWF0SW5kZXgrKykKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGRlcHRoU3RlbmNpbEluZGV4ID0gMDsgZGVwdGhTdGVuY2lsSW5kZXggPCBudW1EZXB0aEZv
cm1hdHM7IGRlcHRoU3RlbmNpbEluZGV4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIERYR0lf
Rk9STUFUIHJlbmRlclRhcmdldEZvcm1hdCA9IFJlbmRlclRhcmdldEZvcm1hdHNbZm9ybWF0SW5k
ZXhdOworCisgICAgICAgICAgICBVSU5UIGZvcm1hdFN1cHBvcnQgPSAwOworICAgICAgICAgICAg
SFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQocmVuZGVyVGFyZ2V0
Rm9ybWF0LCAmZm9ybWF0U3VwcG9ydCk7CisKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQocmVz
dWx0KSAmJiAoZm9ybWF0U3VwcG9ydCAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1JFTkRFUl9UQVJH
RVQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIGRlcHRoU3Rl
bmNpbEZvcm1hdCA9IERlcHRoU3RlbmNpbEZvcm1hdHNbZGVwdGhTdGVuY2lsSW5kZXhdOworCisg
ICAgICAgICAgICAgICAgYm9vbCBkZXB0aFN0ZW5jaWxGb3JtYXRPSyA9IHRydWU7CisKKyAgICAg
ICAgICAgICAgICBpZiAoZGVwdGhTdGVuY2lsRm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04p
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBVSU5UIGZvcm1hdFN1cHBv
cnQgPSAwOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DaGVja0Zvcm1h
dFN1cHBvcnQoZGVwdGhTdGVuY2lsRm9ybWF0LCAmZm9ybWF0U3VwcG9ydCk7CisgICAgICAgICAg
ICAgICAgICAgIGRlcHRoU3RlbmNpbEZvcm1hdE9LID0gU1VDQ0VFREVEKHJlc3VsdCkgJiYgKGZv
cm1hdFN1cHBvcnQgJiBEM0QxMV9GT1JNQVRfU1VQUE9SVF9ERVBUSF9TVEVOQ0lMKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZGVwdGhTdGVuY2lsRm9ybWF0T0sp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBDb25maWdEZXNjIG5ld0Nv
bmZpZzsKKyAgICAgICAgICAgICAgICAgICAgbmV3Q29uZmlnLnJlbmRlclRhcmdldEZvcm1hdCA9
IGQzZDExX2dsOjpDb252ZXJ0QmFja0J1ZmZlckZvcm1hdChyZW5kZXJUYXJnZXRGb3JtYXQpOwor
ICAgICAgICAgICAgICAgICAgICBuZXdDb25maWcuZGVwdGhTdGVuY2lsRm9ybWF0ID0gZDNkMTFf
Z2w6OkNvbnZlcnREZXB0aFN0ZW5jaWxGb3JtYXQoZGVwdGhTdGVuY2lsRm9ybWF0KTsKKyAgICAg
ICAgICAgICAgICAgICAgbmV3Q29uZmlnLm11bHRpU2FtcGxlID0gMDsgICAgIC8vIEZJWE1FOiBl
bnVtZXJhdGUgbXVsdGktc2FtcGxpbmcKKyAgICAgICAgICAgICAgICAgICAgbmV3Q29uZmlnLmZh
c3RDb25maWcgPSB0cnVlOyAgIC8vIEFzc3VtZSBhbGwgRFgxMSBmb3JtYXQgY29udmVyc2lvbnMg
dG8gYmUgZmFzdAorCisgICAgICAgICAgICAgICAgICAgICgqY29uZmlnRGVzY0xpc3QpW251bUNv
bmZpZ3MrK10gPSBuZXdDb25maWc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG51bUNvbmZpZ3M7Cit9CisKK3ZvaWQgUmVu
ZGVyZXIxMTo6ZGVsZXRlQ29uZmlncyhDb25maWdEZXNjICpjb25maWdEZXNjTGlzdCkKK3sKKyAg
ICBkZWxldGUgW10gKGNvbmZpZ0Rlc2NMaXN0KTsKK30KKwordm9pZCBSZW5kZXJlcjExOjpzeW5j
KGJvb2wgYmxvY2spCit7CisgICAgaWYgKGJsb2NrKQorICAgIHsKKyAgICAgICAgSFJFU1VMVCBy
ZXN1bHQ7CisKKyAgICAgICAgaWYgKCFtU3luY1F1ZXJ5KQorICAgICAgICB7CisgICAgICAgICAg
ICBEM0QxMV9RVUVSWV9ERVNDIHF1ZXJ5RGVzYzsKKyAgICAgICAgICAgIHF1ZXJ5RGVzYy5RdWVy
eSA9IEQzRDExX1FVRVJZX0VWRU5UOworICAgICAgICAgICAgcXVlcnlEZXNjLk1pc2NGbGFncyA9
IDA7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVF1ZXJ5KCZxdWVyeURl
c2MsICZtU3luY1F1ZXJ5KTsKKyAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7
CisgICAgICAgIH0KKworICAgICAgICBtRGV2aWNlQ29udGV4dC0+RW5kKG1TeW5jUXVlcnkpOwor
ICAgICAgICBtRGV2aWNlQ29udGV4dC0+Rmx1c2goKTsKKworICAgICAgICBkbworICAgICAgICB7
CisgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNlQ29udGV4dC0+R2V0RGF0YShtU3luY1F1ZXJ5
LCBOVUxMLCAwLCBEM0QxMV9BU1lOQ19HRVREQVRBX0RPTk9URkxVU0gpOworCisgICAgICAgICAg
ICAvLyBLZWVwIHBvbGxpbmcsIGJ1dCBhbGxvdyBvdGhlciB0aHJlYWRzIHRvIGRvIHNvbWV0aGlu
ZyB1c2VmdWwgZmlyc3QKKyAgICAgICAgICAgIFNsZWVwKDApOworCisgICAgICAgICAgICBpZiAo
dGVzdERldmljZUxvc3QodHJ1ZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHdoaWxlIChyZXN1bHQgPT0g
U19GQUxTRSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1EZXZpY2VDb250ZXh0
LT5GbHVzaCgpOworICAgIH0KK30KKworU3dhcENoYWluICpSZW5kZXJlcjExOjpjcmVhdGVTd2Fw
Q2hhaW4oSFdORCB3aW5kb3csIEhBTkRMRSBzaGFyZUhhbmRsZSwgR0xlbnVtIGJhY2tCdWZmZXJG
b3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCkKK3sKKyAgICByZXR1cm4gbmV3IHJ4OjpT
d2FwQ2hhaW4xMSh0aGlzLCB3aW5kb3csIHNoYXJlSGFuZGxlLCBiYWNrQnVmZmVyRm9ybWF0LCBk
ZXB0aEJ1ZmZlckZvcm1hdCk7Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6c2V0U2FtcGxlclN0YXRl
KGdsOjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5kZXgsIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUg
JnNhbXBsZXJTdGF0ZSkKK3sKKyAgICBpZiAodHlwZSA9PSBnbDo6U0FNUExFUl9QSVhFTCkKKyAg
ICB7CisgICAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gZ2w6Ok1BWF9URVhUVVJFX0lN
QUdFX1VOSVRTKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIlBpeGVsIHNoYWRlciBzYW1w
bGVyIGluZGV4ICVpIGlzIG5vdCB2YWxpZC4iLCBpbmRleCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBpZiAobUZvcmNlU2V0UGl4ZWxTYW1wbGVyU3RhdGVzW2lu
ZGV4XSB8fCBtZW1jbXAoJnNhbXBsZXJTdGF0ZSwgJm1DdXJQaXhlbFNhbXBsZXJTdGF0ZXNbaW5k
ZXhdLCBzaXplb2YoZ2w6OlNhbXBsZXJTdGF0ZSkpICE9IDApCisgICAgICAgIHsKKyAgICAgICAg
ICAgIElEM0QxMVNhbXBsZXJTdGF0ZSAqZHhTYW1wbGVyU3RhdGUgPSBtU3RhdGVDYWNoZS5nZXRT
YW1wbGVyU3RhdGUoc2FtcGxlclN0YXRlKTsKKworICAgICAgICAgICAgaWYgKCFkeFNhbXBsZXJT
dGF0ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFUlIoIk5VTEwgc2FtcGxlciBz
dGF0ZSByZXR1cm5lZCBieSBSZW5kZXJTdGF0ZUNhY2hlOjpnZXRTYW1wbGVyU3RhdGUsIHNldHRp
bmcgdGhlIGRlZmF1bHQiCisgICAgICAgICAgICAgICAgICAgICJzYW1wbGVyIHN0YXRlIGZvciBw
aXhlbCBzaGFkZXJzIGF0IHNsb3QgJWkuIiwgaW5kZXgpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBtRGV2aWNlQ29udGV4dC0+UFNTZXRTYW1wbGVycyhpbmRleCwgMSwgJmR4U2FtcGxl
clN0YXRlKTsKKworICAgICAgICAgICAgbUN1clBpeGVsU2FtcGxlclN0YXRlc1tpbmRleF0gPSBz
YW1wbGVyU3RhdGU7CisgICAgICAgIH0KKworICAgICAgICBtRm9yY2VTZXRQaXhlbFNhbXBsZXJT
dGF0ZXNbaW5kZXhdID0gZmFsc2U7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUgPT0gZ2w6OlNB
TVBMRVJfVkVSVEVYKQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSAo
aW50KWdldE1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEVSUigiVmVydGV4IHNoYWRlciBzYW1wbGVyIGluZGV4ICVpIGlzIG5vdCB2YWxpZC4iLCBp
bmRleCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobUZv
cmNlU2V0VmVydGV4U2FtcGxlclN0YXRlc1tpbmRleF0gfHwgbWVtY21wKCZzYW1wbGVyU3RhdGUs
ICZtQ3VyVmVydGV4U2FtcGxlclN0YXRlc1tpbmRleF0sIHNpemVvZihnbDo6U2FtcGxlclN0YXRl
KSkgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgSUQzRDExU2FtcGxlclN0YXRlICpkeFNh
bXBsZXJTdGF0ZSA9IG1TdGF0ZUNhY2hlLmdldFNhbXBsZXJTdGF0ZShzYW1wbGVyU3RhdGUpOwor
CisgICAgICAgICAgICBpZiAoIWR4U2FtcGxlclN0YXRlKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIEVSUigiTlVMTCBzYW1wbGVyIHN0YXRlIHJldHVybmVkIGJ5IFJlbmRlclN0YXRl
Q2FjaGU6OmdldFNhbXBsZXJTdGF0ZSwgc2V0dGluZyB0aGUgZGVmYXVsdCIKKyAgICAgICAgICAg
ICAgICAgICAgInNhbXBsZXIgc3RhdGUgZm9yIHZlcnRleCBzaGFkZXJzIGF0IHNsb3QgJWkuIiwg
aW5kZXgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+VlNT
ZXRTYW1wbGVycyhpbmRleCwgMSwgJmR4U2FtcGxlclN0YXRlKTsKKworICAgICAgICAgICAgbUN1
clZlcnRleFNhbXBsZXJTdGF0ZXNbaW5kZXhdID0gc2FtcGxlclN0YXRlOworICAgICAgICB9CisK
KyAgICAgICAgbUZvcmNlU2V0VmVydGV4U2FtcGxlclN0YXRlc1tpbmRleF0gPSBmYWxzZTsKKyAg
ICB9CisgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworfQorCit2b2lkIFJlbmRlcmVyMTE6OnNldFRl
eHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1
cmUpCit7CisgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICp0ZXh0dXJlU1JWID0gTlVMTDsK
KyAgICB1bnNpZ25lZCBpbnQgc2VyaWFsID0gMDsKKyAgICBib29sIGZvcmNlU2V0VGV4dHVyZSA9
IGZhbHNlOworCisgICAgaWYgKHRleHR1cmUpCisgICAgeworICAgICAgICBUZXh0dXJlU3RvcmFn
ZUludGVyZmFjZSAqdGV4U3RvcmFnZSA9IHRleHR1cmUtPmdldE5hdGl2ZVRleHR1cmUoKTsKKyAg
ICAgICAgaWYgKHRleFN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRleHR1cmVTdG9y
YWdlMTEgKnN0b3JhZ2UxMSA9IFRleHR1cmVTdG9yYWdlMTE6Om1ha2VUZXh0dXJlU3RvcmFnZTEx
KHRleFN0b3JhZ2UtPmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsKKyAgICAgICAgICAgIHRleHR1cmVT
UlYgPSBzdG9yYWdlMTEtPmdldFNSVigpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgd2Ug
Z2V0IE5VTEwgYmFjayBmcm9tIGdldFNSViBoZXJlLCBzb21ldGhpbmcgd2VudCB3cm9uZyBpbiB0
aGUgdGV4dHVyZSBjbGFzcyBhbmQgd2UncmUgdW5leHBlY3RlZGx5CisgICAgICAgIC8vIG1pc3Np
bmcgdGhlIHNoYWRlciByZXNvdXJjZSB2aWV3CisgICAgICAgIEFTU0VSVCh0ZXh0dXJlU1JWICE9
IE5VTEwpOworCisgICAgICAgIHNlcmlhbCA9IHRleHR1cmUtPmdldFRleHR1cmVTZXJpYWwoKTsK
KyAgICAgICAgZm9yY2VTZXRUZXh0dXJlID0gdGV4dHVyZS0+aGFzRGlydHlJbWFnZXMoKTsKKyAg
ICB9CisKKyAgICBpZiAodHlwZSA9PSBnbDo6U0FNUExFUl9QSVhFTCkKKyAgICB7CisgICAgICAg
IGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gZ2w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTKQor
ICAgICAgICB7CisgICAgICAgICAgICBFUlIoIlBpeGVsIHNoYWRlciBzYW1wbGVyIGluZGV4ICVp
IGlzIG5vdCB2YWxpZC4iLCBpbmRleCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAoZm9yY2VTZXRUZXh0dXJlIHx8IG1DdXJQaXhlbFRleHR1cmVTZXJpYWxz
W2luZGV4XSAhPSBzZXJpYWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0
LT5QU1NldFNoYWRlclJlc291cmNlcyhpbmRleCwgMSwgJnRleHR1cmVTUlYpOworICAgICAgICB9
CisKKyAgICAgICAgbUN1clBpeGVsVGV4dHVyZVNlcmlhbHNbaW5kZXhdID0gc2VyaWFsOworICAg
IH0KKyAgICBlbHNlIGlmICh0eXBlID09IGdsOjpTQU1QTEVSX1ZFUlRFWCkKKyAgICB7CisgICAg
ICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gKGludClnZXRNYXhWZXJ0ZXhUZXh0dXJlSW1h
Z2VVbml0cygpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIlZlcnRleCBzaGFkZXIgc2Ft
cGxlciBpbmRleCAlaSBpcyBub3QgdmFsaWQuIiwgaW5kZXgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZvcmNlU2V0VGV4dHVyZSB8fCBtQ3VyVmVydGV4
VGV4dHVyZVNlcmlhbHNbaW5kZXhdICE9IHNlcmlhbCkKKyAgICAgICAgeworICAgICAgICAgICAg
bURldmljZUNvbnRleHQtPlZTU2V0U2hhZGVyUmVzb3VyY2VzKGluZGV4LCAxLCAmdGV4dHVyZVNS
Vik7CisgICAgICAgIH0KKworICAgICAgICBtQ3VyVmVydGV4VGV4dHVyZVNlcmlhbHNbaW5kZXhd
ID0gc2VyaWFsOworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Cit9CisKK3ZvaWQgUmVu
ZGVyZXIxMTo6c2V0UmFzdGVyaXplclN0YXRlKGNvbnN0IGdsOjpSYXN0ZXJpemVyU3RhdGUgJnJh
c3RlclN0YXRlKQoreworICAgIGlmIChtRm9yY2VTZXRSYXN0ZXJTdGF0ZSB8fCBtZW1jbXAoJnJh
c3RlclN0YXRlLCAmbUN1clJhc3RlclN0YXRlLCBzaXplb2YoZ2w6OlJhc3Rlcml6ZXJTdGF0ZSkp
ICE9IDApCisgICAgeworICAgICAgICBJRDNEMTFSYXN0ZXJpemVyU3RhdGUgKmR4UmFzdGVyU3Rh
dGUgPSBtU3RhdGVDYWNoZS5nZXRSYXN0ZXJpemVyU3RhdGUocmFzdGVyU3RhdGUsIG1TY2lzc29y
RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1DdXJEZXB0aFNpemUpOworICAgICAgICBp
ZiAoIWR4UmFzdGVyU3RhdGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiTlVMTCByYXN0
ZXJpemVyIHN0YXRlIHJldHVybmVkIGJ5IFJlbmRlclN0YXRlQ2FjaGU6OmdldFJhc3Rlcml6ZXJT
dGF0ZSwgc2V0dGluZyB0aGUgZGVmYXVsdCIKKyAgICAgICAgICAgICAgICAicmFzdGVyaXplciBz
dGF0ZS4iKTsKKyAgICAgICAgfQorCisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5SU1NldFN0YXRl
KGR4UmFzdGVyU3RhdGUpOworCisgICAgICAgIG1DdXJSYXN0ZXJTdGF0ZSA9IHJhc3RlclN0YXRl
OworICAgIH0KKworICAgIG1Gb3JjZVNldFJhc3RlclN0YXRlID0gZmFsc2U7Cit9CisKK3ZvaWQg
UmVuZGVyZXIxMTo6c2V0QmxlbmRTdGF0ZShjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0
ZSwgY29uc3QgZ2w6OkNvbG9yICZibGVuZENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVNYXNrKQoreworICAgIGlmIChtRm9yY2VTZXRCbGVu
ZFN0YXRlIHx8CisgICAgICAgIG1lbWNtcCgmYmxlbmRTdGF0ZSwgJm1DdXJCbGVuZFN0YXRlLCBz
aXplb2YoZ2w6OkJsZW5kU3RhdGUpKSAhPSAwIHx8CisgICAgICAgIG1lbWNtcCgmYmxlbmRDb2xv
ciwgJm1DdXJCbGVuZENvbG9yLCBzaXplb2YoZ2w6OkNvbG9yKSkgIT0gMCB8fAorICAgICAgICBz
YW1wbGVNYXNrICE9IG1DdXJTYW1wbGVNYXNrKQorICAgIHsKKyAgICAgICAgSUQzRDExQmxlbmRT
dGF0ZSAqZHhCbGVuZFN0YXRlID0gbVN0YXRlQ2FjaGUuZ2V0QmxlbmRTdGF0ZShibGVuZFN0YXRl
KTsKKyAgICAgICAgaWYgKCFkeEJsZW5kU3RhdGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVS
UigiTlVMTCBibGVuZCBzdGF0ZSByZXR1cm5lZCBieSBSZW5kZXJTdGF0ZUNhY2hlOjpnZXRCbGVu
ZFN0YXRlLCBzZXR0aW5nIHRoZSBkZWZhdWx0ICIKKyAgICAgICAgICAgICAgICAiYmxlbmQgc3Rh
dGUuIik7CisgICAgICAgIH0KKworICAgICAgICBmbG9hdCBibGVuZENvbG9yc1s0XSA9IHswLjBm
fTsKKyAgICAgICAgaWYgKGJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0IgIT0gR0xfQ09OU1RBTlRf
QUxQSEEgJiYgYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJHQiAhPSBHTF9PTkVfTUlOVVNfQ09OU1RB
TlRfQUxQSEEgJiYKKyAgICAgICAgICAgIGJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCICE9IEdMX0NP
TlNUQU5UX0FMUEhBICYmIGJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCICE9IEdMX09ORV9NSU5VU19D
T05TVEFOVF9BTFBIQSkKKyAgICAgICAgeworICAgICAgICAgICAgYmxlbmRDb2xvcnNbMF0gPSBi
bGVuZENvbG9yLnJlZDsKKyAgICAgICAgICAgIGJsZW5kQ29sb3JzWzFdID0gYmxlbmRDb2xvci5n
cmVlbjsKKyAgICAgICAgICAgIGJsZW5kQ29sb3JzWzJdID0gYmxlbmRDb2xvci5ibHVlOworICAg
ICAgICAgICAgYmxlbmRDb2xvcnNbM10gPSBibGVuZENvbG9yLmFscGhhOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgYmxlbmRDb2xvcnNbMF0gPSBibGVu
ZENvbG9yLmFscGhhOworICAgICAgICAgICAgYmxlbmRDb2xvcnNbMV0gPSBibGVuZENvbG9yLmFs
cGhhOworICAgICAgICAgICAgYmxlbmRDb2xvcnNbMl0gPSBibGVuZENvbG9yLmFscGhhOworICAg
ICAgICAgICAgYmxlbmRDb2xvcnNbM10gPSBibGVuZENvbG9yLmFscGhhOworICAgICAgICB9CisK
KyAgICAgICAgbURldmljZUNvbnRleHQtPk9NU2V0QmxlbmRTdGF0ZShkeEJsZW5kU3RhdGUsIGJs
ZW5kQ29sb3JzLCBzYW1wbGVNYXNrKTsKKworICAgICAgICBtQ3VyQmxlbmRTdGF0ZSA9IGJsZW5k
U3RhdGU7CisgICAgICAgIG1DdXJCbGVuZENvbG9yID0gYmxlbmRDb2xvcjsKKyAgICAgICAgbUN1
clNhbXBsZU1hc2sgPSBzYW1wbGVNYXNrOworICAgIH0KKworICAgIG1Gb3JjZVNldEJsZW5kU3Rh
dGUgPSBmYWxzZTsKK30KKwordm9pZCBSZW5kZXJlcjExOjpzZXREZXB0aFN0ZW5jaWxTdGF0ZShj
b25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmRlcHRoU3RlbmNpbFN0YXRlLCBpbnQgc3RlbmNp
bFJlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0ZW5jaWxC
YWNrUmVmLCBib29sIGZyb250RmFjZUNDVykKK3sKKyAgICBpZiAobUZvcmNlU2V0RGVwdGhTdGVu
Y2lsU3RhdGUgfHwKKyAgICAgICAgbWVtY21wKCZkZXB0aFN0ZW5jaWxTdGF0ZSwgJm1DdXJEZXB0
aFN0ZW5jaWxTdGF0ZSwgc2l6ZW9mKGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSkpICE9IDAgfHwKKyAg
ICAgICAgc3RlbmNpbFJlZiAhPSBtQ3VyU3RlbmNpbFJlZiB8fCBzdGVuY2lsQmFja1JlZiAhPSBt
Q3VyU3RlbmNpbEJhY2tSZWYpCisgICAgeworICAgICAgICBpZiAoZGVwdGhTdGVuY2lsU3RhdGUu
c3RlbmNpbFdyaXRlbWFzayAhPSBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja1dyaXRlbWFz
ayB8fAorICAgICAgICAgICAgc3RlbmNpbFJlZiAhPSBzdGVuY2lsQmFja1JlZiB8fAorICAgICAg
ICAgICAgZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbE1hc2sgIT0gZGVwdGhTdGVuY2lsU3RhdGUu
c3RlbmNpbEJhY2tNYXNrKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIlNlcGFyYXRlIGZy
b250L2JhY2sgc3RlbmNpbCB3cml0ZW1hc2tzLCByZWZlcmVuY2UgdmFsdWVzLCBvciBzdGVuY2ls
IG1hc2sgdmFsdWVzIGFyZSAiCisgICAgICAgICAgICAgICAgImludmFsaWQgdW5kZXIgV2ViR0wu
Iik7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICAgICAgfQorCisgICAgICAgIElEM0QxMURlcHRoU3RlbmNpbFN0YXRlICpkeERlcHRoU3Rl
bmNpbFN0YXRlID0gbVN0YXRlQ2FjaGUuZ2V0RGVwdGhTdGVuY2lsU3RhdGUoZGVwdGhTdGVuY2ls
U3RhdGUpOworICAgICAgICBpZiAoIWR4RGVwdGhTdGVuY2lsU3RhdGUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEVSUigiTlVMTCBkZXB0aCBzdGVuY2lsIHN0YXRlIHJldHVybmVkIGJ5IFJlbmRl
clN0YXRlQ2FjaGU6OmdldERlcHRoU3RlbmNpbFN0YXRlLCAiCisgICAgICAgICAgICAgICAgInNl
dHRpbmcgdGhlIGRlZmF1bHQgZGVwdGggc3RlbmNpbCBzdGF0ZS4iKTsKKyAgICAgICAgfQorCisg
ICAgICAgIG1EZXZpY2VDb250ZXh0LT5PTVNldERlcHRoU3RlbmNpbFN0YXRlKGR4RGVwdGhTdGVu
Y2lsU3RhdGUsIHN0YXRpY19jYXN0PFVJTlQ+KHN0ZW5jaWxSZWYpKTsKKworICAgICAgICBtQ3Vy
RGVwdGhTdGVuY2lsU3RhdGUgPSBkZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICAgICAgbUN1clN0ZW5j
aWxSZWYgPSBzdGVuY2lsUmVmOworICAgICAgICBtQ3VyU3RlbmNpbEJhY2tSZWYgPSBzdGVuY2ls
QmFja1JlZjsKKyAgICB9CisKKyAgICBtRm9yY2VTZXREZXB0aFN0ZW5jaWxTdGF0ZSA9IGZhbHNl
OworfQorCit2b2lkIFJlbmRlcmVyMTE6OnNldFNjaXNzb3JSZWN0YW5nbGUoY29uc3QgZ2w6OlJl
Y3RhbmdsZSAmc2Npc3NvciwgYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtRm9yY2VTZXRTY2lz
c29yIHx8IG1lbWNtcCgmc2Npc3NvciwgJm1DdXJTY2lzc29yLCBzaXplb2YoZ2w6OlJlY3Rhbmds
ZSkpICE9IDAgfHwKKyAgICAgICAgZW5hYmxlZCAhPSBtU2Npc3NvckVuYWJsZWQpCisgICAgewor
ICAgICAgICBpZiAoZW5hYmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAgRDNEMTFfUkVDVCBy
ZWN0OworICAgICAgICAgICAgcmVjdC5sZWZ0ID0gc3RkOjptYXgoMCwgc2Npc3Nvci54KTsKKyAg
ICAgICAgICAgIHJlY3QudG9wID0gc3RkOjptYXgoMCwgc2Npc3Nvci55KTsKKyAgICAgICAgICAg
IHJlY3QucmlnaHQgPSBzY2lzc29yLnggKyBzdGQ6Om1heCgwLCBzY2lzc29yLndpZHRoKTsKKyAg
ICAgICAgICAgIHJlY3QuYm90dG9tID0gc2Npc3Nvci55ICsgc3RkOjptYXgoMCwgc2Npc3Nvci5o
ZWlnaHQpOworCisgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+UlNTZXRTY2lzc29yUmVjdHMo
MSwgJnJlY3QpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVuYWJsZWQgIT0gbVNjaXNzb3JF
bmFibGVkKQorICAgICAgICB7CisgICAgICAgICAgICBtRm9yY2VTZXRSYXN0ZXJTdGF0ZSA9IHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICBtQ3VyU2Npc3NvciA9IHNjaXNzb3I7CisgICAgICAg
IG1TY2lzc29yRW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgfQorCisgICAgbUZvcmNlU2V0U2Npc3Nv
ciA9IGZhbHNlOworfQorCitib29sIFJlbmRlcmVyMTE6OnNldFZpZXdwb3J0KGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJnZpZXdwb3J0LCBmbG9hdCB6TmVhciwgZmxvYXQgekZhciwgR0xlbnVtIGRyYXdN
b2RlLCBHTGVudW0gZnJvbnRGYWNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpZ25vcmVWaWV3cG9ydCkKK3sKKyAgICBnbDo6UmVjdGFuZ2xlIGFjdHVhbFZpZXdwb3J0ID0g
dmlld3BvcnQ7CisgICAgZmxvYXQgYWN0dWFsWk5lYXIgPSBnbDo6Y2xhbXAwMSh6TmVhcik7Cisg
ICAgZmxvYXQgYWN0dWFsWkZhciA9IGdsOjpjbGFtcDAxKHpGYXIpOworICAgIGlmIChpZ25vcmVW
aWV3cG9ydCkKKyAgICB7CisgICAgICAgIGFjdHVhbFZpZXdwb3J0LnggPSAwOworICAgICAgICBh
Y3R1YWxWaWV3cG9ydC55ID0gMDsKKyAgICAgICAgYWN0dWFsVmlld3BvcnQud2lkdGggPSBtUmVu
ZGVyVGFyZ2V0RGVzYy53aWR0aDsKKyAgICAgICAgYWN0dWFsVmlld3BvcnQuaGVpZ2h0ID0gbVJl
bmRlclRhcmdldERlc2MuaGVpZ2h0OworICAgICAgICBhY3R1YWxaTmVhciA9IDAuMGY7CisgICAg
ICAgIGFjdHVhbFpGYXIgPSAxLjBmOworICAgIH0KKworICAgIC8vIEdldCBEM0Qgdmlld3BvcnQg
Ym91bmRzLCB3aGljaCBkZXBlbmRzIG9uIHRoZSBmZWF0dXJlIGxldmVsCisgICAgY29uc3QgUmFu
Z2UmIHZpZXdwb3J0Qm91bmRzID0gZ2V0Vmlld3BvcnRCb3VuZHMoKTsKKworICAgIC8vIENsYW1w
IHdpZHRoIGFuZCBoZWlnaHQgZmlyc3QgdG8gdGhlIGdsIG1heGltdW0sIHRoZW4gY2xhbXAgZnVy
dGhlciBpZiB3ZSBleHRlbmQgcGFzdCB0aGUgRDNEIG1heGltdW0gYm91bmRzCisgICAgRDNEMTFf
VklFV1BPUlQgZHhWaWV3cG9ydDsKKyAgICBkeFZpZXdwb3J0LlRvcExlZnRYID0gZ2w6OmNsYW1w
KGFjdHVhbFZpZXdwb3J0LngsIHZpZXdwb3J0Qm91bmRzLnN0YXJ0LCB2aWV3cG9ydEJvdW5kcy5l
bmQpOworICAgIGR4Vmlld3BvcnQuVG9wTGVmdFkgPSBnbDo6Y2xhbXAoYWN0dWFsVmlld3BvcnQu
eSwgdmlld3BvcnRCb3VuZHMuc3RhcnQsIHZpZXdwb3J0Qm91bmRzLmVuZCk7CisgICAgZHhWaWV3
cG9ydC5XaWR0aCA9IGdsOjpjbGFtcChhY3R1YWxWaWV3cG9ydC53aWR0aCwgMCwgZ2V0TWF4Vmll
d3BvcnREaW1lbnNpb24oKSk7CisgICAgZHhWaWV3cG9ydC5IZWlnaHQgPSBnbDo6Y2xhbXAoYWN0
dWFsVmlld3BvcnQuaGVpZ2h0LCAwLCBnZXRNYXhWaWV3cG9ydERpbWVuc2lvbigpKTsKKyAgICBk
eFZpZXdwb3J0LldpZHRoID0gc3RkOjptaW4oKGludClkeFZpZXdwb3J0LldpZHRoLCB2aWV3cG9y
dEJvdW5kcy5lbmQgLSBzdGF0aWNfY2FzdDxpbnQ+KGR4Vmlld3BvcnQuVG9wTGVmdFgpKTsKKyAg
ICBkeFZpZXdwb3J0LkhlaWdodCA9IHN0ZDo6bWluKChpbnQpZHhWaWV3cG9ydC5IZWlnaHQsIHZp
ZXdwb3J0Qm91bmRzLmVuZCAtIHN0YXRpY19jYXN0PGludD4oZHhWaWV3cG9ydC5Ub3BMZWZ0WSkp
OworICAgIGR4Vmlld3BvcnQuTWluRGVwdGggPSBhY3R1YWxaTmVhcjsKKyAgICBkeFZpZXdwb3J0
Lk1heERlcHRoID0gYWN0dWFsWkZhcjsKKworICAgIGlmIChkeFZpZXdwb3J0LldpZHRoIDw9IDAg
fHwgZHhWaWV3cG9ydC5IZWlnaHQgPD0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsg
ICAvLyBOb3RoaW5nIHRvIHJlbmRlcgorICAgIH0KKworICAgIGJvb2wgdmlld3BvcnRDaGFuZ2Vk
ID0gbUZvcmNlU2V0Vmlld3BvcnQgfHwgbWVtY21wKCZhY3R1YWxWaWV3cG9ydCwgJm1DdXJWaWV3
cG9ydCwgc2l6ZW9mKGdsOjpSZWN0YW5nbGUpKSAhPSAwIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhY3R1YWxaTmVhciAhPSBtQ3VyTmVhciB8fCBhY3R1YWxaRmFyICE9IG1DdXJGYXI7
CisKKyAgICBpZiAodmlld3BvcnRDaGFuZ2VkKQorICAgIHsKKyAgICAgICAgbURldmljZUNvbnRl
eHQtPlJTU2V0Vmlld3BvcnRzKDEsICZkeFZpZXdwb3J0KTsKKworICAgICAgICBtQ3VyVmlld3Bv
cnQgPSBhY3R1YWxWaWV3cG9ydDsKKyAgICAgICAgbUN1ck5lYXIgPSBhY3R1YWxaTmVhcjsKKyAg
ICAgICAgbUN1ckZhciA9IGFjdHVhbFpGYXI7CisKKyAgICAgICAgbVBpeGVsQ29uc3RhbnRzLnZp
ZXdDb29yZHNbMF0gPSBhY3R1YWxWaWV3cG9ydC53aWR0aCAgKiAwLjVmOworICAgICAgICBtUGl4
ZWxDb25zdGFudHMudmlld0Nvb3Jkc1sxXSA9IGFjdHVhbFZpZXdwb3J0LmhlaWdodCAqIDAuNWY7
CisgICAgICAgIG1QaXhlbENvbnN0YW50cy52aWV3Q29vcmRzWzJdID0gYWN0dWFsVmlld3BvcnQu
eCArIChhY3R1YWxWaWV3cG9ydC53aWR0aCAgKiAwLjVmKTsKKyAgICAgICAgbVBpeGVsQ29uc3Rh
bnRzLnZpZXdDb29yZHNbM10gPSBhY3R1YWxWaWV3cG9ydC55ICsgKGFjdHVhbFZpZXdwb3J0Lmhl
aWdodCAqIDAuNWYpOworCisgICAgICAgIG1QaXhlbENvbnN0YW50cy5kZXB0aEZyb250WzBdID0g
KGFjdHVhbFpGYXIgLSBhY3R1YWxaTmVhcikgKiAwLjVmOworICAgICAgICBtUGl4ZWxDb25zdGFu
dHMuZGVwdGhGcm9udFsxXSA9IChhY3R1YWxaTmVhciArIGFjdHVhbFpGYXIpICogMC41ZjsKKwor
ICAgICAgICBtVmVydGV4Q29uc3RhbnRzLmRlcHRoUmFuZ2VbMF0gPSBhY3R1YWxaTmVhcjsKKyAg
ICAgICAgbVZlcnRleENvbnN0YW50cy5kZXB0aFJhbmdlWzFdID0gYWN0dWFsWkZhcjsKKyAgICAg
ICAgbVZlcnRleENvbnN0YW50cy5kZXB0aFJhbmdlWzJdID0gYWN0dWFsWkZhciAtIGFjdHVhbFpO
ZWFyOworCisgICAgICAgIG1QaXhlbENvbnN0YW50cy5kZXB0aFJhbmdlWzBdID0gYWN0dWFsWk5l
YXI7CisgICAgICAgIG1QaXhlbENvbnN0YW50cy5kZXB0aFJhbmdlWzFdID0gYWN0dWFsWkZhcjsK
KyAgICAgICAgbVBpeGVsQ29uc3RhbnRzLmRlcHRoUmFuZ2VbMl0gPSBhY3R1YWxaRmFyIC0gYWN0
dWFsWk5lYXI7CisgICAgfQorCisgICAgbUZvcmNlU2V0Vmlld3BvcnQgPSBmYWxzZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBSZW5kZXJlcjExOjphcHBseVByaW1pdGl2ZVR5cGUoR0xl
bnVtIG1vZGUsIEdMc2l6ZWkgY291bnQpCit7CisgICAgRDNEMTFfUFJJTUlUSVZFX1RPUE9MT0dZ
IHByaW1pdGl2ZVRvcG9sb2d5ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9VTkRFRklORUQ7CisK
KyAgICBzd2l0Y2ggKG1vZGUpCisgICAgeworICAgICAgY2FzZSBHTF9QT0lOVFM6ICAgICAgICAg
cHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0QxMV9QUklNSVRJVkVfVE9QT0xPR1lfUE9JTlRMSVNUOyAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9MSU5FUzogICAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3kg
PSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX0xJTkVMSVNUOyAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9MSU5FX0xPT1A6ICAgICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RP
UE9MT0dZX0xJTkVTVFJJUDsgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MSU5FX1NUUklQOiAg
ICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX0xJTkVTVFJJUDsg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9UUklBTkdMRVM6ICAgICAgcHJpbWl0aXZlVG9wb2xv
Z3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xFTElTVDsgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9UUklBTkdMRV9TVFJJUDogcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZF
X1RPUE9MT0dZX1RSSUFOR0xFU1RSSVA7IGJyZWFrOworICAgICAgICAgIC8vIGVtdWxhdGUgZmFu
cyB2aWEgcmV3cml0aW5nIGluZGV4IGJ1ZmZlcgorICAgICAgY2FzZSBHTF9UUklBTkdMRV9GQU46
ICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xFTElT
VDsgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX0VOVU0sIGZhbHNlKTsKKyAgICB9CisKKyAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRQ
cmltaXRpdmVUb3BvbG9neShwcmltaXRpdmVUb3BvbG9neSk7CisKKyAgICByZXR1cm4gY291bnQg
PiAwOworfQorCitib29sIFJlbmRlcmVyMTE6OmFwcGx5UmVuZGVyVGFyZ2V0KGdsOjpGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXIpCit7CisgICAgLy8gR2V0IHRoZSBjb2xvciByZW5kZXIgYnVmZmVy
IGFuZCBzZXJpYWwKKyAgICAvLyBBbHNvIGV4dHJhY3QgdGhlIHJlbmRlciB0YXJnZXQgZGltZW5z
aW9ucyBhbmQgdmlldworICAgIHVuc2lnbmVkIGludCByZW5kZXJUYXJnZXRXaWR0aCA9IDA7Cisg
ICAgdW5zaWduZWQgaW50IHJlbmRlclRhcmdldEhlaWdodCA9IDA7CisgICAgR0xlbnVtIHJlbmRl
clRhcmdldEZvcm1hdCA9IDA7CisgICAgdW5zaWduZWQgaW50IHJlbmRlclRhcmdldFNlcmlhbHNb
Z2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlNdID0gezB9OworICAgIElEM0QxMVJl
bmRlclRhcmdldFZpZXcqIGZyYW1lYnVmZmVyUlRWc1tnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RS
QVdfQlVGRkVSU10gPSB7TlVMTH07CisgICAgYm9vbCBtaXNzaW5nQ29sb3JSZW5kZXJUYXJnZXQg
PSB0cnVlOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50ID0gMDsgY29s
b3JBdHRhY2htZW50IDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM7IGNvbG9y
QXR0YWNobWVudCsrKQorICAgIHsKKyAgICAgICAgY29uc3QgR0xlbnVtIGRyYXdCdWZmZXJTdGF0
ZSA9IGZyYW1lYnVmZmVyLT5nZXREcmF3QnVmZmVyU3RhdGUoY29sb3JBdHRhY2htZW50KTsKKwor
ICAgICAgICBpZiAoZnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyVHlwZShjb2xvckF0dGFjaG1l
bnQpICE9IEdMX05PTkUgJiYgZHJhd0J1ZmZlclN0YXRlICE9IEdMX05PTkUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIHRoZSBkcmF3IGJ1ZmZlciBtdXN0IGJlIGVpdGhlciAibm9uZSIsICJi
YWNrIiBmb3IgdGhlIGRlZmF1bHQgYnVmZmVyIG9yIHRoZSBzYW1lIGluZGV4IGFzIHRoaXMgY29s
b3IgKGluIG9yZGVyKQorICAgICAgICAgICAgQVNTRVJUKGRyYXdCdWZmZXJTdGF0ZSA9PSBHTF9C
QUNLIHx8IGRyYXdCdWZmZXJTdGF0ZSA9PSAoR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUICsgY29s
b3JBdHRhY2htZW50KSk7CisKKyAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVm
ZmVyID0gZnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyKGNvbG9yQXR0YWNobWVudCk7CisKKyAg
ICAgICAgICAgIGlmICghY29sb3JidWZmZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgRVJSKCJyZW5kZXIgdGFyZ2V0IHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBjaGVjayBmb3IgemVyby1zaXplZCBkZWZhdWx0IGZyYW1lYnVmZmVyLCB3aGljaCBpcyBhIHNw
ZWNpYWwgY2FzZS4KKyAgICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBkbyBub3Qgd2lzaCB0
byBtb2RpZnkgYW55IHN0YXRlIGFuZCBqdXN0IHNpbGVudGx5IHJldHVybiBmYWxzZS4KKyAgICAg
ICAgICAgIC8vIHRoaXMgd2lsbCBub3QgcmVwb3J0IGFueSBnbCBlcnJvciBidXQgd2lsbCBjYXVz
ZSB0aGUgY2FsbGluZyBtZXRob2QgdG8gcmV0dXJuLgorICAgICAgICAgICAgaWYgKGNvbG9yYnVm
ZmVyLT5nZXRXaWR0aCgpID09IDAgfHwgY29sb3JidWZmZXItPmdldEhlaWdodCgpID09IDApCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZW5kZXJUYXJnZXRTZXJpYWxzW2NvbG9yQXR0YWNobWVudF0gPSBj
b2xvcmJ1ZmZlci0+Z2V0U2VyaWFsKCk7CisKKyAgICAgICAgICAgIC8vIEV4dHJhY3QgdGhlIHJl
bmRlciB0YXJnZXQgZGltZW5zaW9ucyBhbmQgdmlldworICAgICAgICAgICAgUmVuZGVyVGFyZ2V0
MTEgKnJlbmRlclRhcmdldCA9IFJlbmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEoY29s
b3JidWZmZXItPmdldFJlbmRlclRhcmdldCgpKTsKKyAgICAgICAgICAgIGlmICghcmVuZGVyVGFy
Z2V0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVSUigicmVuZGVyIHRhcmdldCBw
b2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnJhbWVidWZmZXJSVFZzW2NvbG9yQXR0
YWNobWVudF0gPSByZW5kZXJUYXJnZXQtPmdldFJlbmRlclRhcmdldFZpZXcoKTsKKyAgICAgICAg
ICAgIGlmICghZnJhbWVidWZmZXJSVFZzW2NvbG9yQXR0YWNobWVudF0pCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgRVJSKCJyZW5kZXIgdGFyZ2V0IHZpZXcgcG9pbnRlciB1bmV4cGVj
dGVkbHkgbnVsbC4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChtaXNzaW5nQ29sb3JSZW5kZXJUYXJnZXQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmVuZGVyVGFyZ2V0V2lkdGggPSBjb2xvcmJ1ZmZlci0+
Z2V0V2lkdGgoKTsKKyAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXRIZWlnaHQgPSBjb2xvcmJ1
ZmZlci0+Z2V0SGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgcmVuZGVyVGFyZ2V0Rm9ybWF0ID0g
Y29sb3JidWZmZXItPmdldEFjdHVhbEZvcm1hdCgpOworICAgICAgICAgICAgICAgIG1pc3NpbmdD
b2xvclJlbmRlclRhcmdldCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgLy8gR2V0IHRoZSBkZXB0aCBzdGVuY2lsIHJlbmRlciBidWZmZXIgYW5kIHNlcmlh
bHMKKyAgICBnbDo6UmVuZGVyYnVmZmVyICpkZXB0aFN0ZW5jaWwgPSBOVUxMOworICAgIHVuc2ln
bmVkIGludCBkZXB0aGJ1ZmZlclNlcmlhbCA9IDA7CisgICAgdW5zaWduZWQgaW50IHN0ZW5jaWxi
dWZmZXJTZXJpYWwgPSAwOworICAgIGlmIChmcmFtZWJ1ZmZlci0+Z2V0RGVwdGhidWZmZXJUeXBl
KCkgIT0gR0xfTk9ORSkKKyAgICB7CisgICAgICAgIGRlcHRoU3RlbmNpbCA9IGZyYW1lYnVmZmVy
LT5nZXREZXB0aGJ1ZmZlcigpOworICAgICAgICBpZiAoIWRlcHRoU3RlbmNpbCkKKyAgICAgICAg
eworICAgICAgICAgICAgRVJSKCJEZXB0aCBzdGVuY2lsIHBvaW50ZXIgdW5leHBlY3RlZGx5IG51
bGwuIik7CisgICAgICAgICAgICBTYWZlUmVsZWFzZShmcmFtZWJ1ZmZlclJUVnMpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgZGVwdGhidWZmZXJTZXJp
YWwgPSBkZXB0aFN0ZW5jaWwtPmdldFNlcmlhbCgpOworICAgIH0KKyAgICBlbHNlIGlmIChmcmFt
ZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlclR5cGUoKSAhPSBHTF9OT05FKQorICAgIHsKKyAgICAg
ICAgZGVwdGhTdGVuY2lsID0gZnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXIoKTsKKyAgICAg
ICAgaWYgKCFkZXB0aFN0ZW5jaWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRGVwdGgg
c3RlbmNpbCBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOworICAgICAgICAgICAgU2FmZVJl
bGVhc2UoZnJhbWVidWZmZXJSVFZzKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorCisgICAgICAgIHN0ZW5jaWxidWZmZXJTZXJpYWwgPSBkZXB0aFN0ZW5jaWwtPmdldFNl
cmlhbCgpOworICAgIH0KKworICAgIC8vIEV4dHJhY3QgdGhlIGRlcHRoIHN0ZW5jaWwgc2l6ZXMg
YW5kIHZpZXcKKyAgICB1bnNpZ25lZCBpbnQgZGVwdGhTaXplID0gMDsKKyAgICB1bnNpZ25lZCBp
bnQgc3RlbmNpbFNpemUgPSAwOworICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcqIGZyYW1lYnVm
ZmVyRFNWID0gTlVMTDsKKyAgICBpZiAoZGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgUmVu
ZGVyVGFyZ2V0MTEgKmRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCA9IFJlbmRlclRhcmdldDExOjpt
YWtlUmVuZGVyVGFyZ2V0MTEoZGVwdGhTdGVuY2lsLT5nZXREZXB0aFN0ZW5jaWwoKSk7CisgICAg
ICAgIGlmICghZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAg
ICBFUlIoInJlbmRlciB0YXJnZXQgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iKTsKKyAgICAg
ICAgICAgIFNhZmVSZWxlYXNlKGZyYW1lYnVmZmVyUlRWcyk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBmcmFtZWJ1ZmZlckRTViA9IGRlcHRoU3RlbmNp
bFJlbmRlclRhcmdldC0+Z2V0RGVwdGhTdGVuY2lsVmlldygpOworICAgICAgICBpZiAoIWZyYW1l
YnVmZmVyRFNWKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoImRlcHRoIHN0ZW5jaWwgdmll
dyBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOworICAgICAgICAgICAgU2FmZVJlbGVhc2Uo
ZnJhbWVidWZmZXJSVFZzKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHJlbmRlciBidWZmZXIsIHRoZSB3aWR0aCwgaGVp
Z2h0IGFuZCBmb3JtYXQgdmFsdWVzIGNvbWUgZnJvbQorICAgICAgICAvLyB0aGUgZGVwdGggc3Rl
bmNpbAorICAgICAgICBpZiAobWlzc2luZ0NvbG9yUmVuZGVyVGFyZ2V0KQorICAgICAgICB7Cisg
ICAgICAgICAgICByZW5kZXJUYXJnZXRXaWR0aCA9IGRlcHRoU3RlbmNpbC0+Z2V0V2lkdGgoKTsK
KyAgICAgICAgICAgIHJlbmRlclRhcmdldEhlaWdodCA9IGRlcHRoU3RlbmNpbC0+Z2V0SGVpZ2h0
KCk7CisgICAgICAgICAgICByZW5kZXJUYXJnZXRGb3JtYXQgPSBkZXB0aFN0ZW5jaWwtPmdldEFj
dHVhbEZvcm1hdCgpOworICAgICAgICB9CisKKyAgICAgICAgZGVwdGhTaXplID0gZGVwdGhTdGVu
Y2lsLT5nZXREZXB0aFNpemUoKTsKKyAgICAgICAgc3RlbmNpbFNpemUgPSBkZXB0aFN0ZW5jaWwt
PmdldFN0ZW5jaWxTaXplKCk7CisgICAgfQorCisgICAgLy8gQXBwbHkgdGhlIHJlbmRlciB0YXJn
ZXQgYW5kIGRlcHRoIHN0ZW5jaWwKKyAgICBpZiAoIW1SZW5kZXJUYXJnZXREZXNjSW5pdGlhbGl6
ZWQgfHwgIW1EZXB0aFN0ZW5jaWxJbml0aWFsaXplZCB8fAorICAgICAgICBtZW1jbXAocmVuZGVy
VGFyZ2V0U2VyaWFscywgbUFwcGxpZWRSZW5kZXJUYXJnZXRTZXJpYWxzLCBzaXplb2YocmVuZGVy
VGFyZ2V0U2VyaWFscykpICE9IDAgfHwKKyAgICAgICAgZGVwdGhidWZmZXJTZXJpYWwgIT0gbUFw
cGxpZWREZXB0aGJ1ZmZlclNlcmlhbCB8fAorICAgICAgICBzdGVuY2lsYnVmZmVyU2VyaWFsICE9
IG1BcHBsaWVkU3RlbmNpbGJ1ZmZlclNlcmlhbCkKKyAgICB7CisgICAgICAgIG1EZXZpY2VDb250
ZXh0LT5PTVNldFJlbmRlclRhcmdldHMoZ2V0TWF4UmVuZGVyVGFyZ2V0cygpLCBmcmFtZWJ1ZmZl
clJUVnMsIGZyYW1lYnVmZmVyRFNWKTsKKworICAgICAgICBtUmVuZGVyVGFyZ2V0RGVzYy53aWR0
aCA9IHJlbmRlclRhcmdldFdpZHRoOworICAgICAgICBtUmVuZGVyVGFyZ2V0RGVzYy5oZWlnaHQg
PSByZW5kZXJUYXJnZXRIZWlnaHQ7CisgICAgICAgIG1SZW5kZXJUYXJnZXREZXNjLmZvcm1hdCA9
IHJlbmRlclRhcmdldEZvcm1hdDsKKyAgICAgICAgbUZvcmNlU2V0Vmlld3BvcnQgPSB0cnVlOwor
ICAgICAgICBtRm9yY2VTZXRTY2lzc29yID0gdHJ1ZTsKKworICAgICAgICBpZiAoIW1EZXB0aFN0
ZW5jaWxJbml0aWFsaXplZCB8fCBkZXB0aFNpemUgIT0gbUN1ckRlcHRoU2l6ZSkKKyAgICAgICAg
eworICAgICAgICAgICAgbUN1ckRlcHRoU2l6ZSA9IGRlcHRoU2l6ZTsKKyAgICAgICAgICAgIG1G
b3JjZVNldFJhc3RlclN0YXRlID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1DdXJTdGVu
Y2lsU2l6ZSA9IHN0ZW5jaWxTaXplOworCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IHJ0SW5k
ZXggPSAwOyBydEluZGV4IDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM7IHJ0
SW5kZXgrKykKKyAgICAgICAgeworICAgICAgICAgICAgbUFwcGxpZWRSZW5kZXJUYXJnZXRTZXJp
YWxzW3J0SW5kZXhdID0gcmVuZGVyVGFyZ2V0U2VyaWFsc1tydEluZGV4XTsKKyAgICAgICAgfQor
ICAgICAgICBtQXBwbGllZERlcHRoYnVmZmVyU2VyaWFsID0gZGVwdGhidWZmZXJTZXJpYWw7Cisg
ICAgICAgIG1BcHBsaWVkU3RlbmNpbGJ1ZmZlclNlcmlhbCA9IHN0ZW5jaWxidWZmZXJTZXJpYWw7
CisgICAgICAgIG1SZW5kZXJUYXJnZXREZXNjSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBt
RGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KKworICAgIFNhZmVSZWxlYXNl
KGZyYW1lYnVmZmVyUlRWcyk7CisgICAgU2FmZVJlbGVhc2UoZnJhbWVidWZmZXJEU1YpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK0dMZW51bSBSZW5kZXJlcjExOjphcHBseVZlcnRleEJ1ZmZl
cihnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSwgZ2w6OlZlcnRleEF0dHJpYnV0ZSB2
ZXJ0ZXhBdHRyaWJ1dGVzW10sIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGlu
c3RhbmNlcykKK3sKKyAgICBUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNbZ2w6Ok1BWF9W
RVJURVhfQVRUUklCU107CisgICAgR0xlbnVtIGVyciA9IG1WZXJ0ZXhEYXRhTWFuYWdlci0+cHJl
cGFyZVZlcnRleERhdGEodmVydGV4QXR0cmlidXRlcywgcHJvZ3JhbUJpbmFyeSwgZmlyc3QsIGNv
dW50LCBhdHRyaWJ1dGVzLCBpbnN0YW5jZXMpOworICAgIGlmIChlcnIgIT0gR0xfTk9fRVJST1Ip
CisgICAgeworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKworICAgIHJldHVybiBtSW5wdXRM
YXlvdXRDYWNoZS5hcHBseVZlcnRleEJ1ZmZlcnMoYXR0cmlidXRlcywgcHJvZ3JhbUJpbmFyeSk7
Cit9CisKK0dMZW51bSBSZW5kZXJlcjExOjphcHBseUluZGV4QnVmZmVyKGNvbnN0IEdMdm9pZCAq
aW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyLCBHTHNpemVpIGNvdW50LCBH
TGVudW0gbW9kZSwgR0xlbnVtIHR5cGUsIFRyYW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbykK
K3sKKyAgICBHTGVudW0gZXJyID0gbUluZGV4RGF0YU1hbmFnZXItPnByZXBhcmVJbmRleERhdGEo
dHlwZSwgY291bnQsIGVsZW1lbnRBcnJheUJ1ZmZlciwgaW5kaWNlcywgaW5kZXhJbmZvKTsKKwor
ICAgIGlmIChlcnIgPT0gR0xfTk9fRVJST1IpCisgICAgeworICAgICAgICBpZiAoaW5kZXhJbmZv
LT5zdG9yYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaW5kZXhJbmZvLT5zZXJpYWwg
IT0gbUFwcGxpZWRTdG9yYWdlSUJTZXJpYWwgfHwgaW5kZXhJbmZvLT5zdGFydE9mZnNldCAhPSBt
QXBwbGllZElCT2Zmc2V0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEJ1ZmZlclN0
b3JhZ2UxMSAqc3RvcmFnZSA9IEJ1ZmZlclN0b3JhZ2UxMTo6bWFrZUJ1ZmZlclN0b3JhZ2UxMShp
bmRleEluZm8tPnN0b3JhZ2UpOworICAgICAgICAgICAgICAgIEluZGV4QnVmZmVyMTEqIGluZGV4
QnVmZmVyID0gSW5kZXhCdWZmZXIxMTo6bWFrZUluZGV4QnVmZmVyMTEoaW5kZXhJbmZvLT5pbmRl
eEJ1ZmZlcik7CisKKyAgICAgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbmRleEJ1
ZmZlcihzdG9yYWdlLT5nZXRCdWZmZXIoKSwgaW5kZXhCdWZmZXItPmdldEluZGV4Rm9ybWF0KCks
IGluZGV4SW5mby0+c3RhcnRPZmZzZXQpOworCisgICAgICAgICAgICAgICAgbUFwcGxpZWRJQlNl
cmlhbCA9IDA7CisgICAgICAgICAgICAgICAgbUFwcGxpZWRTdG9yYWdlSUJTZXJpYWwgPSBzdG9y
YWdlLT5nZXRTZXJpYWwoKTsKKyAgICAgICAgICAgICAgICBtQXBwbGllZElCT2Zmc2V0ID0gaW5k
ZXhJbmZvLT5zdGFydE9mZnNldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBl
bHNlIGlmIChpbmRleEluZm8tPnNlcmlhbCAhPSBtQXBwbGllZElCU2VyaWFsIHx8IGluZGV4SW5m
by0+c3RhcnRPZmZzZXQgIT0gbUFwcGxpZWRJQk9mZnNldCkKKyAgICAgICAgeworICAgICAgICAg
ICAgSW5kZXhCdWZmZXIxMSogaW5kZXhCdWZmZXIgPSBJbmRleEJ1ZmZlcjExOjptYWtlSW5kZXhC
dWZmZXIxMShpbmRleEluZm8tPmluZGV4QnVmZmVyKTsKKworICAgICAgICAgICAgbURldmljZUNv
bnRleHQtPklBU2V0SW5kZXhCdWZmZXIoaW5kZXhCdWZmZXItPmdldEJ1ZmZlcigpLCBpbmRleEJ1
ZmZlci0+Z2V0SW5kZXhGb3JtYXQoKSwgaW5kZXhJbmZvLT5zdGFydE9mZnNldCk7CisKKyAgICAg
ICAgICAgIG1BcHBsaWVkSUJTZXJpYWwgPSBpbmRleEluZm8tPnNlcmlhbDsKKyAgICAgICAgICAg
IG1BcHBsaWVkU3RvcmFnZUlCU2VyaWFsID0gMDsKKyAgICAgICAgICAgIG1BcHBsaWVkSUJPZmZz
ZXQgPSBpbmRleEluZm8tPnN0YXJ0T2Zmc2V0OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIGVycjsKK30KKwordm9pZCBSZW5kZXJlcjExOjpkcmF3QXJyYXlzKEdMZW51bSBtb2RlLCBH
THNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcykKK3sKKyAgICBpZiAobW9kZSA9PSBHTF9M
SU5FX0xPT1ApCisgICAgeworICAgICAgICBkcmF3TGluZUxvb3AoY291bnQsIEdMX05PTkUsIE5V
TEwsIDAsIE5VTEwpOworICAgIH0KKyAgICBlbHNlIGlmIChtb2RlID09IEdMX1RSSUFOR0xFX0ZB
TikKKyAgICB7CisgICAgICAgIGRyYXdUcmlhbmdsZUZhbihjb3VudCwgR0xfTk9ORSwgTlVMTCwg
MCwgTlVMTCwgaW5zdGFuY2VzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoaW5zdGFuY2VzID4gMCkK
KyAgICB7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3SW5zdGFuY2VkKGNvdW50LCBpbnN0
YW5jZXMsIDAsIDApOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtRGV2aWNlQ29u
dGV4dC0+RHJhdyhjb3VudCwgMCk7CisgICAgfQorfQorCit2b2lkIFJlbmRlcmVyMTE6OmRyYXdF
bGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdM
dm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyLCBjb25zdCBUcmFu
c2xhdGVkSW5kZXhEYXRhICZpbmRleEluZm8sIEdMc2l6ZWkgaW5zdGFuY2VzKQoreworICAgIGlm
IChtb2RlID09IEdMX0xJTkVfTE9PUCkKKyAgICB7CisgICAgICAgIGRyYXdMaW5lTG9vcChjb3Vu
dCwgdHlwZSwgaW5kaWNlcywgaW5kZXhJbmZvLm1pbkluZGV4LCBlbGVtZW50QXJyYXlCdWZmZXIp
OworICAgIH0KKyAgICBlbHNlIGlmIChtb2RlID09IEdMX1RSSUFOR0xFX0ZBTikKKyAgICB7Cisg
ICAgICAgIGRyYXdUcmlhbmdsZUZhbihjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5kZXhJbmZvLm1p
bkluZGV4LCBlbGVtZW50QXJyYXlCdWZmZXIsIGluc3RhbmNlcyk7CisgICAgfQorICAgIGVsc2Ug
aWYgKGluc3RhbmNlcyA+IDApCisgICAgeworICAgICAgICBtRGV2aWNlQ29udGV4dC0+RHJhd0lu
ZGV4ZWRJbnN0YW5jZWQoY291bnQsIGluc3RhbmNlcywgMCwgLXN0YXRpY19jYXN0PGludD4oaW5k
ZXhJbmZvLm1pbkluZGV4KSwgMCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1E
ZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhlZChjb3VudCwgMCwgLXN0YXRpY19jYXN0PGludD4oaW5k
ZXhJbmZvLm1pbkluZGV4KSk7CisgICAgfQorfQorCit2b2lkIFJlbmRlcmVyMTE6OmRyYXdMaW5l
TG9vcChHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBp
bnQgbWluSW5kZXgsIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlcikKK3sKKyAgICAvLyBH
ZXQgdGhlIHJhdyBpbmRpY2VzIGZvciBhbiBpbmRleGVkIGRyYXcKKyAgICBpZiAodHlwZSAhPSBH
TF9OT05FICYmIGVsZW1lbnRBcnJheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGdsOjpCdWZmZXIg
KmluZGV4QnVmZmVyID0gZWxlbWVudEFycmF5QnVmZmVyOworICAgICAgICBCdWZmZXJTdG9yYWdl
ICpzdG9yYWdlID0gaW5kZXhCdWZmZXItPmdldFN0b3JhZ2UoKTsKKyAgICAgICAgaW50cHRyX3Qg
b2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5kaWNlcyk7CisgICAgICAgIGlu
ZGljZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oc3RvcmFnZS0+Z2V0RGF0YSgpKSAr
IG9mZnNldDsKKyAgICB9CisKKyAgICBpZiAoIW1MaW5lTG9vcElCKQorICAgIHsKKyAgICAgICAg
bUxpbmVMb29wSUIgPSBuZXcgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2UodGhpcyk7Cisg
ICAgICAgIGlmICghbUxpbmVMb29wSUItPnJlc2VydmVCdWZmZXJTcGFjZShJTklUSUFMX0lOREVY
X0JVRkZFUl9TSVpFLCBHTF9VTlNJR05FRF9JTlQpKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWxldGUgbUxpbmVMb29wSUI7CisgICAgICAgICAgICBtTGluZUxvb3BJQiA9IE5VTEw7CisKKyAg
ICAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBhIDMyLWJpdCBsb29waW5nIGluZGV4IGJ1
ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KGNvdW50ICsgMSkgPiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZCBpbnQ+OjptYXgoKSAvIHNpemVvZih1bnNpZ25lZCBpbnQpKSkKKyAgICB7CisgICAgICAgIEVS
UigiQ291bGQgbm90IGNyZWF0ZSBhIDMyLWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xf
TElORV9MT09QLCB0b28gbWFueSBpbmRpY2VzIHJlcXVpcmVkLiIpOworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIGNvbnN0IHVuc2lnbmVk
IGludCBzcGFjZU5lZWRlZCA9IChjb3VudCArIDEpICogc2l6ZW9mKHVuc2lnbmVkIGludCk7Cisg
ICAgaWYgKCFtTGluZUxvb3BJQi0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKHNwYWNlTmVlZGVkLCBHTF9V
TlNJR05FRF9JTlQpKQorICAgIHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgcmVzZXJ2ZSBlbm91
Z2ggc3BhY2UgaW4gbG9vcGluZyBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9PUC4iKTsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9CisKKyAgICB2
b2lkKiBtYXBwZWRNZW1vcnkgPSBOVUxMOworICAgIGludCBvZmZzZXQgPSBtTGluZUxvb3BJQi0+
bWFwQnVmZmVyKHNwYWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5KTsKKyAgICBpZiAob2Zmc2V0ID09
IC0xIHx8IG1hcHBlZE1lbW9yeSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgRVJSKCJDb3VsZCBu
b3QgbWFwIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIHVuc2lnbmVkIGludCAq
ZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4obWFwcGVkTWVtb3J5KTsKKyAg
ICB1bnNpZ25lZCBpbnQgaW5kZXhCdWZmZXJPZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KG9mZnNldCk7CisKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9O
T05FOiAgIC8vIE5vbi1pbmRleGVkIGRyYXcKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBkYXRhW2ldID0gaTsKKyAgICAgICAg
fQorICAgICAgICBkYXRhW2NvdW50XSA9IDA7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9VTlNJR05FRF9CWVRFOgorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVi
eXRlKj4oaW5kaWNlcylbaV07CisgICAgICAgIH0KKyAgICAgICAgZGF0YVtjb3VudF0gPSBzdGF0
aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5kaWNlcylbMF07CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8
Y29uc3QgR0x1c2hvcnQqPihpbmRpY2VzKVtpXTsKKyAgICAgICAgfQorICAgICAgICBkYXRhW2Nv
dW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNlcylbMF07CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGF0YVtpXSA9IHN0
YXRpY19jYXN0PGNvbnN0IEdMdWludCo+KGluZGljZXMpW2ldOworICAgICAgICB9CisgICAgICAg
IGRhdGFbY291bnRdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNlcylbMF07Cisg
ICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAg
ICBpZiAoIW1MaW5lTG9vcElCLT51bm1hcEJ1ZmZlcigpKQorICAgIHsKKyAgICAgICAgRVJSKCJD
b3VsZCBub3QgdW5tYXAgaW5kZXggYnVmZmVyIGZvciBHTF9MSU5FX0xPT1AuIik7CisgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgaWYgKG1B
cHBsaWVkSUJTZXJpYWwgIT0gbUxpbmVMb29wSUItPmdldFNlcmlhbCgpIHx8IG1BcHBsaWVkSUJP
ZmZzZXQgIT0gaW5kZXhCdWZmZXJPZmZzZXQpCisgICAgeworICAgICAgICBJbmRleEJ1ZmZlcjEx
ICppbmRleEJ1ZmZlciA9IEluZGV4QnVmZmVyMTE6Om1ha2VJbmRleEJ1ZmZlcjExKG1MaW5lTG9v
cElCLT5nZXRJbmRleEJ1ZmZlcigpKTsKKworICAgICAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJ
bmRleEJ1ZmZlcihpbmRleEJ1ZmZlci0+Z2V0QnVmZmVyKCksIGluZGV4QnVmZmVyLT5nZXRJbmRl
eEZvcm1hdCgpLCBpbmRleEJ1ZmZlck9mZnNldCk7CisgICAgICAgIG1BcHBsaWVkSUJTZXJpYWwg
PSBtTGluZUxvb3BJQi0+Z2V0U2VyaWFsKCk7CisgICAgICAgIG1BcHBsaWVkU3RvcmFnZUlCU2Vy
aWFsID0gMDsKKyAgICAgICAgbUFwcGxpZWRJQk9mZnNldCA9IGluZGV4QnVmZmVyT2Zmc2V0Owor
ICAgIH0KKworICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhlZChjb3VudCArIDEsIDAsIC1t
aW5JbmRleCk7Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6ZHJhd1RyaWFuZ2xlRmFuKEdMc2l6ZWkg
Y291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGludCBtaW5JbmRleCwg
Z2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyLCBpbnQgaW5zdGFuY2VzKQoreworICAgIC8v
IEdldCB0aGUgcmF3IGluZGljZXMgZm9yIGFuIGluZGV4ZWQgZHJhdworICAgIGlmICh0eXBlICE9
IEdMX05PTkUgJiYgZWxlbWVudEFycmF5QnVmZmVyKQorICAgIHsKKyAgICAgICAgZ2w6OkJ1ZmZl
ciAqaW5kZXhCdWZmZXIgPSBlbGVtZW50QXJyYXlCdWZmZXI7CisgICAgICAgIEJ1ZmZlclN0b3Jh
Z2UgKnN0b3JhZ2UgPSBpbmRleEJ1ZmZlci0+Z2V0U3RvcmFnZSgpOworICAgICAgICBpbnRwdHJf
dCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PGludHB0cl90PihpbmRpY2VzKTsKKyAgICAgICAg
aW5kaWNlcyA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihzdG9yYWdlLT5nZXREYXRhKCkp
ICsgb2Zmc2V0OworICAgIH0KKworICAgIGlmICghbVRyaWFuZ2xlRmFuSUIpCisgICAgeworICAg
ICAgICBtVHJpYW5nbGVGYW5JQiA9IG5ldyBTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZSh0
aGlzKTsKKyAgICAgICAgaWYgKCFtVHJpYW5nbGVGYW5JQi0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKElO
SVRJQUxfSU5ERVhfQlVGRkVSX1NJWkUsIEdMX1VOU0lHTkVEX0lOVCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlbGV0ZSBtVHJpYW5nbGVGYW5JQjsKKyAgICAgICAgICAgIG1UcmlhbmdsZUZh
bklCID0gTlVMTDsKKworICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGEgc2NyYXRj
aCBpbmRleCBidWZmZXIgZm9yIEdMX1RSSUFOR0xFX0ZBTi4iKTsKKyAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBj
b25zdCB1bnNpZ25lZCBpbnQgbnVtVHJpcyA9IGNvdW50IC0gMjsKKworICAgIGlmIChudW1Ucmlz
ICogMyA+IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpIC8gc2l6ZW9m
KHVuc2lnbmVkIGludCkpKQorICAgIHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGEg
c2NyYXRjaCBpbmRleCBidWZmZXIgZm9yIEdMX1RSSUFOR0xFX0ZBTiwgdG9vIG1hbnkgaW5kaWNl
cyByZXF1aXJlZC4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9CisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgc3BhY2VOZWVkZWQgPSAobnVtVHJp
cyAqIDMpICogc2l6ZW9mKHVuc2lnbmVkIGludCk7CisgICAgaWYgKCFtVHJpYW5nbGVGYW5JQi0+
cmVzZXJ2ZUJ1ZmZlclNwYWNlKHNwYWNlTmVlZGVkLCBHTF9VTlNJR05FRF9JTlQpKQorICAgIHsK
KyAgICAgICAgRVJSKCJDb3VsZCBub3QgcmVzZXJ2ZSBlbm91Z2ggc3BhY2UgaW4gc2NyYXRjaCBp
bmRleCBidWZmZXIgZm9yIEdMX1RSSUFOR0xFX0ZBTi4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9CisKKyAgICB2b2lkKiBtYXBwZWRNZW1vcnkg
PSBOVUxMOworICAgIGludCBvZmZzZXQgPSBtVHJpYW5nbGVGYW5JQi0+bWFwQnVmZmVyKHNwYWNl
TmVlZGVkLCAmbWFwcGVkTWVtb3J5KTsKKyAgICBpZiAob2Zmc2V0ID09IC0xIHx8IG1hcHBlZE1l
bW9yeSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgbWFwIHNjcmF0Y2gg
aW5kZXggYnVmZmVyIGZvciBHTF9UUklBTkdMRV9GQU4uIik7CisgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgdW5zaWduZWQgaW50ICpkYXRh
ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihtYXBwZWRNZW1vcnkpOworICAgIHVu
c2lnbmVkIGludCBpbmRleEJ1ZmZlck9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
b2Zmc2V0KTsKKworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX05PTkU6
ICAgLy8gTm9uLWluZGV4ZWQgZHJhdworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IG51bVRyaXM7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGF0YVtpKjMgKyAwXSA9
IDA7CisgICAgICAgICAgICBkYXRhW2kqMyArIDFdID0gaSArIDE7CisgICAgICAgICAgICBkYXRh
W2kqMyArIDJdID0gaSArIDI7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
bnVtVHJpczsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBkYXRhW2kqMyArIDBdID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KGluZGljZXMpWzBdOworICAgICAgICAgICAgZGF0YVtp
KjMgKyAxXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihpbmRpY2VzKVtpICsgMV07Cisg
ICAgICAgICAgICBkYXRhW2kqMyArIDJdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KGlu
ZGljZXMpW2kgKyAyXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
VU5TSUdORURfU0hPUlQ6CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVt
VHJpczsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBkYXRhW2kqMyArIDBdID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgR0x1c2hvcnQqPihpbmRpY2VzKVswXTsKKyAgICAgICAgICAgIGRhdGFbaSoz
ICsgMV0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVzaG9ydCo+KGluZGljZXMpW2kgKyAxXTsKKyAg
ICAgICAgICAgIGRhdGFbaSozICsgMl0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVzaG9ydCo+KGlu
ZGljZXMpW2kgKyAyXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
VU5TSUdORURfSU5UOgorICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVRy
aXM7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGF0YVtpKjMgKyAwXSA9IHN0YXRpY19j
YXN0PGNvbnN0IEdMdWludCo+KGluZGljZXMpWzBdOworICAgICAgICAgICAgZGF0YVtpKjMgKyAx
XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWludCo+KGluZGljZXMpW2kgKyAxXTsKKyAgICAgICAg
ICAgIGRhdGFbaSozICsgMl0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVpbnQqPihpbmRpY2VzKVtp
ICsgMl07CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNI
QUJMRSgpOworICAgIH0KKworICAgIGlmICghbVRyaWFuZ2xlRmFuSUItPnVubWFwQnVmZmVyKCkp
CisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5vdCB1bm1hcCBzY3JhdGNoIGluZGV4IGJ1ZmZl
ciBmb3IgR0xfVFJJQU5HTEVfRkFOLiIpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIGlmIChtQXBwbGllZElCU2VyaWFsICE9IG1Ucmlh
bmdsZUZhbklCLT5nZXRTZXJpYWwoKSB8fCBtQXBwbGllZElCT2Zmc2V0ICE9IGluZGV4QnVmZmVy
T2Zmc2V0KQorICAgIHsKKyAgICAgICAgSW5kZXhCdWZmZXIxMSAqaW5kZXhCdWZmZXIgPSBJbmRl
eEJ1ZmZlcjExOjptYWtlSW5kZXhCdWZmZXIxMShtVHJpYW5nbGVGYW5JQi0+Z2V0SW5kZXhCdWZm
ZXIoKSk7CisKKyAgICAgICAgbURldmljZUNvbnRleHQtPklBU2V0SW5kZXhCdWZmZXIoaW5kZXhC
dWZmZXItPmdldEJ1ZmZlcigpLCBpbmRleEJ1ZmZlci0+Z2V0SW5kZXhGb3JtYXQoKSwgaW5kZXhC
dWZmZXJPZmZzZXQpOworICAgICAgICBtQXBwbGllZElCU2VyaWFsID0gbVRyaWFuZ2xlRmFuSUIt
PmdldFNlcmlhbCgpOworICAgICAgICBtQXBwbGllZFN0b3JhZ2VJQlNlcmlhbCA9IDA7CisgICAg
ICAgIG1BcHBsaWVkSUJPZmZzZXQgPSBpbmRleEJ1ZmZlck9mZnNldDsKKyAgICB9CisKKyAgICBp
ZiAoaW5zdGFuY2VzID4gMCkKKyAgICB7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3SW5k
ZXhlZEluc3RhbmNlZChudW1UcmlzICogMywgaW5zdGFuY2VzLCAwLCAtbWluSW5kZXgsIDApOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtRGV2aWNlQ29udGV4dC0+RHJhd0luZGV4
ZWQobnVtVHJpcyAqIDMsIDAsIC1taW5JbmRleCk7CisgICAgfQorfQorCit2b2lkIFJlbmRlcmVy
MTE6OmFwcGx5U2hhZGVycyhnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSkKK3sKKyAg
ICB1bnNpZ25lZCBpbnQgcHJvZ3JhbUJpbmFyeVNlcmlhbCA9IHByb2dyYW1CaW5hcnktPmdldFNl
cmlhbCgpOworICAgIGNvbnN0IGJvb2wgdXBkYXRlUHJvZ3JhbVN0YXRlID0gKHByb2dyYW1CaW5h
cnlTZXJpYWwgIT0gbUFwcGxpZWRQcm9ncmFtQmluYXJ5U2VyaWFsKTsKKworICAgIGlmICh1cGRh
dGVQcm9ncmFtU3RhdGUpCisgICAgeworICAgICAgICBTaGFkZXJFeGVjdXRhYmxlICp2ZXJ0ZXhF
eGUgPSBwcm9ncmFtQmluYXJ5LT5nZXRWZXJ0ZXhFeGVjdXRhYmxlKCk7CisgICAgICAgIFNoYWRl
ckV4ZWN1dGFibGUgKnBpeGVsRXhlID0gcHJvZ3JhbUJpbmFyeS0+Z2V0UGl4ZWxFeGVjdXRhYmxl
KCk7CisKKyAgICAgICAgSUQzRDExVmVydGV4U2hhZGVyICp2ZXJ0ZXhTaGFkZXIgPSBOVUxMOwor
ICAgICAgICBpZiAodmVydGV4RXhlKSB2ZXJ0ZXhTaGFkZXIgPSBTaGFkZXJFeGVjdXRhYmxlMTE6
Om1ha2VTaGFkZXJFeGVjdXRhYmxlMTEodmVydGV4RXhlKS0+Z2V0VmVydGV4U2hhZGVyKCk7CisK
KyAgICAgICAgSUQzRDExUGl4ZWxTaGFkZXIgKnBpeGVsU2hhZGVyID0gTlVMTDsKKyAgICAgICAg
aWYgKHBpeGVsRXhlKSBwaXhlbFNoYWRlciA9IFNoYWRlckV4ZWN1dGFibGUxMTo6bWFrZVNoYWRl
ckV4ZWN1dGFibGUxMShwaXhlbEV4ZSktPmdldFBpeGVsU2hhZGVyKCk7CisKKyAgICAgICAgbURl
dmljZUNvbnRleHQtPlBTU2V0U2hhZGVyKHBpeGVsU2hhZGVyLCBOVUxMLCAwKTsKKyAgICAgICAg
bURldmljZUNvbnRleHQtPlZTU2V0U2hhZGVyKHZlcnRleFNoYWRlciwgTlVMTCwgMCk7CisKKyAg
ICAgICAgcHJvZ3JhbUJpbmFyeS0+ZGlydHlBbGxVbmlmb3JtcygpOworCisgICAgICAgIG1BcHBs
aWVkUHJvZ3JhbUJpbmFyeVNlcmlhbCA9IHByb2dyYW1CaW5hcnlTZXJpYWw7CisgICAgfQorCisg
ICAgLy8gT25seSB1c2UgdGhlIGdlb21ldHJ5IHNoYWRlciBjdXJyZW50bHkgZm9yIHBvaW50IHNw
cml0ZSBkcmF3aW5nCisgICAgY29uc3QgYm9vbCB1c2VzR2VvbWV0cnlTaGFkZXIgPSAocHJvZ3Jh
bUJpbmFyeS0+dXNlc0dlb21ldHJ5U2hhZGVyKCkgJiYgbUN1clJhc3RlclN0YXRlLnBvaW50RHJh
d01vZGUpOworCisgICAgaWYgKHVwZGF0ZVByb2dyYW1TdGF0ZSB8fCB1c2VzR2VvbWV0cnlTaGFk
ZXIgIT0gbUlzR2VvbWV0cnlTaGFkZXJBY3RpdmUpCisgICAgeworICAgICAgICBpZiAodXNlc0dl
b21ldHJ5U2hhZGVyKQorICAgICAgICB7CisgICAgICAgICAgICBTaGFkZXJFeGVjdXRhYmxlICpn
ZW9tZXRyeUV4ZSA9IHByb2dyYW1CaW5hcnktPmdldEdlb21ldHJ5RXhlY3V0YWJsZSgpOworICAg
ICAgICAgICAgSUQzRDExR2VvbWV0cnlTaGFkZXIgKmdlb21ldHJ5U2hhZGVyID0gU2hhZGVyRXhl
Y3V0YWJsZTExOjptYWtlU2hhZGVyRXhlY3V0YWJsZTExKGdlb21ldHJ5RXhlKS0+Z2V0R2VvbWV0
cnlTaGFkZXIoKTsKKyAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5HU1NldFNoYWRlcihnZW9t
ZXRyeVNoYWRlciwgTlVMTCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7
CisgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+R1NTZXRTaGFkZXIoTlVMTCwgTlVMTCwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBtSXNHZW9tZXRyeVNoYWRlckFjdGl2ZSA9IHVzZXNHZW9t
ZXRyeVNoYWRlcjsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6YXBwbHlVbmlmb3Jtcyhn
bDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSwgZ2w6OlVuaWZvcm1BcnJheSAqdW5pZm9y
bUFycmF5KQoreworICAgIFNoYWRlckV4ZWN1dGFibGUxMSAqdmVydGV4RXhlY3V0YWJsZSA9IFNo
YWRlckV4ZWN1dGFibGUxMTo6bWFrZVNoYWRlckV4ZWN1dGFibGUxMShwcm9ncmFtQmluYXJ5LT5n
ZXRWZXJ0ZXhFeGVjdXRhYmxlKCkpOworICAgIFNoYWRlckV4ZWN1dGFibGUxMSAqcGl4ZWxFeGVj
dXRhYmxlID0gU2hhZGVyRXhlY3V0YWJsZTExOjptYWtlU2hhZGVyRXhlY3V0YWJsZTExKHByb2dy
YW1CaW5hcnktPmdldFBpeGVsRXhlY3V0YWJsZSgpKTsKKworICAgIHVuc2lnbmVkIGludCB0b3Rh
bFJlZ2lzdGVyQ291bnRWUyA9IDA7CisgICAgdW5zaWduZWQgaW50IHRvdGFsUmVnaXN0ZXJDb3Vu
dFBTID0gMDsKKworICAgIGJvb2wgdmVydGV4VW5pZm9ybXNEaXJ0eSA9IGZhbHNlOworICAgIGJv
b2wgcGl4ZWxVbmlmb3Jtc0RpcnR5ID0gZmFsc2U7CisKKyAgICBmb3IgKGdsOjpVbmlmb3JtQXJy
YXk6OmNvbnN0X2l0ZXJhdG9yIHVuaWZvcm1faXRlcmF0b3IgPSB1bmlmb3JtQXJyYXktPmJlZ2lu
KCk7IHVuaWZvcm1faXRlcmF0b3IgIT0gdW5pZm9ybUFycmF5LT5lbmQoKTsgdW5pZm9ybV9pdGVy
YXRvcisrKQorICAgIHsKKyAgICAgICAgY29uc3QgZ2w6OlVuaWZvcm0gKnVuaWZvcm0gPSAqdW5p
Zm9ybV9pdGVyYXRvcjsKKworICAgICAgICBpZiAodW5pZm9ybS0+dnNSZWdpc3RlckluZGV4ID49
IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHRvdGFsUmVnaXN0ZXJDb3VudFZTICs9IHVuaWZv
cm0tPnJlZ2lzdGVyQ291bnQ7CisgICAgICAgICAgICB2ZXJ0ZXhVbmlmb3Jtc0RpcnR5ID0gdmVy
dGV4VW5pZm9ybXNEaXJ0eSB8fCB1bmlmb3JtLT5kaXJ0eTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICh1bmlmb3JtLT5wc1JlZ2lzdGVySW5kZXggPj0gMCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdG90YWxSZWdpc3RlckNvdW50UFMgKz0gdW5pZm9ybS0+cmVnaXN0ZXJDb3VudDsKKyAgICAg
ICAgICAgIHBpeGVsVW5pZm9ybXNEaXJ0eSA9IHBpeGVsVW5pZm9ybXNEaXJ0eSB8fCB1bmlmb3Jt
LT5kaXJ0eTsKKyAgICAgICAgfQorICAgIH0KKworICAgIElEM0QxMUJ1ZmZlciAqdmVydGV4Q29u
c3RhbnRCdWZmZXIgPSB2ZXJ0ZXhFeGVjdXRhYmxlLT5nZXRDb25zdGFudEJ1ZmZlcihtRGV2aWNl
LCB0b3RhbFJlZ2lzdGVyQ291bnRWUyk7CisgICAgSUQzRDExQnVmZmVyICpwaXhlbENvbnN0YW50
QnVmZmVyID0gcGl4ZWxFeGVjdXRhYmxlLT5nZXRDb25zdGFudEJ1ZmZlcihtRGV2aWNlLCB0b3Rh
bFJlZ2lzdGVyQ291bnRQUyk7CisKKyAgICBmbG9hdCAoKm1hcFZTKVs0XSA9IE5VTEw7CisgICAg
ZmxvYXQgKCptYXBQUylbNF0gPSBOVUxMOworCisgICAgaWYgKHRvdGFsUmVnaXN0ZXJDb3VudFZT
ID4gMCAmJiB2ZXJ0ZXhVbmlmb3Jtc0RpcnR5KQorICAgIHsKKyAgICAgICAgRDNEMTFfTUFQUEVE
X1NVQlJFU09VUkNFIG1hcCA9IHswfTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNl
Q29udGV4dC0+TWFwKHZlcnRleENvbnN0YW50QnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElT
Q0FSRCwgMCwgJm1hcCk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAg
ICAgIG1hcFZTID0gKGZsb2F0KCopWzRdKW1hcC5wRGF0YTsKKyAgICB9CisKKyAgICBpZiAodG90
YWxSZWdpc3RlckNvdW50UFMgPiAwICYmIHBpeGVsVW5pZm9ybXNEaXJ0eSkKKyAgICB7CisgICAg
ICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXAgPSB7MH07CisgICAgICAgIEhSRVNVTFQg
cmVzdWx0ID0gbURldmljZUNvbnRleHQtPk1hcChwaXhlbENvbnN0YW50QnVmZmVyLCAwLCBEM0Qx
MV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwgJm1hcCk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQo
cmVzdWx0KSk7CisgICAgICAgIG1hcFBTID0gKGZsb2F0KCopWzRdKW1hcC5wRGF0YTsKKyAgICB9
CisKKyAgICBmb3IgKGdsOjpVbmlmb3JtQXJyYXk6Oml0ZXJhdG9yIHVuaWZvcm1faXRlcmF0b3Ig
PSB1bmlmb3JtQXJyYXktPmJlZ2luKCk7IHVuaWZvcm1faXRlcmF0b3IgIT0gdW5pZm9ybUFycmF5
LT5lbmQoKTsgdW5pZm9ybV9pdGVyYXRvcisrKQorICAgIHsKKyAgICAgICAgZ2w6OlVuaWZvcm0g
KnVuaWZvcm0gPSAqdW5pZm9ybV9pdGVyYXRvcjsKKworICAgICAgICBpZiAodW5pZm9ybS0+dHlw
ZSAhPSAgR0xfU0FNUExFUl8yRCAmJiB1bmlmb3JtLT50eXBlICE9IEdMX1NBTVBMRVJfQ1VCRSkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHVuaWZvcm0tPnZzUmVnaXN0ZXJJbmRleCA+PSAw
ICYmIG1hcFZTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1lbWNweShtYXBWUyAr
IHVuaWZvcm0tPnZzUmVnaXN0ZXJJbmRleCwgdW5pZm9ybS0+ZGF0YSwgdW5pZm9ybS0+cmVnaXN0
ZXJDb3VudCAqIHNpemVvZihmbG9hdFs0XSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAodW5pZm9ybS0+cHNSZWdpc3RlckluZGV4ID49IDAgJiYgbWFwUFMpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgbWVtY3B5KG1hcFBTICsgdW5pZm9ybS0+cHNSZWdpc3Rlcklu
ZGV4LCB1bmlmb3JtLT5kYXRhLCB1bmlmb3JtLT5yZWdpc3RlckNvdW50ICogc2l6ZW9mKGZsb2F0
WzRdKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB1bmlmb3JtLT5kaXJ0
eSA9IGZhbHNlOworICAgIH0KKworICAgIGlmIChtYXBWUykKKyAgICB7CisgICAgICAgIG1EZXZp
Y2VDb250ZXh0LT5Vbm1hcCh2ZXJ0ZXhDb25zdGFudEJ1ZmZlciwgMCk7CisgICAgfQorCisgICAg
aWYgKG1hcFBTKQorICAgIHsKKyAgICAgICAgbURldmljZUNvbnRleHQtPlVubWFwKHBpeGVsQ29u
c3RhbnRCdWZmZXIsIDApOworICAgIH0KKyAgICAKKyAgICBtRGV2aWNlQ29udGV4dC0+VlNTZXRD
b25zdGFudEJ1ZmZlcnMoMCwgMSwgJnZlcnRleENvbnN0YW50QnVmZmVyKTsKKyAgICBtRGV2aWNl
Q29udGV4dC0+UFNTZXRDb25zdGFudEJ1ZmZlcnMoMCwgMSwgJnBpeGVsQ29uc3RhbnRCdWZmZXIp
OworCisgICAgLy8gRHJpdmVyIHVuaWZvcm1zCisgICAgaWYgKCFtRHJpdmVyQ29uc3RhbnRCdWZm
ZXJWUykKKyAgICB7CisgICAgICAgIEQzRDExX0JVRkZFUl9ERVNDIGNvbnN0YW50QnVmZmVyRGVz
Y3JpcHRpb24gPSB7MH07CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uQnl0ZVdp
ZHRoID0gc2l6ZW9mKGR4X1ZlcnRleENvbnN0YW50cyk7CisgICAgICAgIGNvbnN0YW50QnVmZmVy
RGVzY3JpcHRpb24uVXNhZ2UgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOworICAgICAgICBjb25zdGFu
dEJ1ZmZlckRlc2NyaXB0aW9uLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfQ09OU1RBTlRfQlVGRkVS
OworICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLkNQVUFjY2Vzc0ZsYWdzID0gMDsK
KyAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5NaXNjRmxhZ3MgPSAwOworICAgICAg
ICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLlN0cnVjdHVyZUJ5dGVTdHJpZGUgPSAwOworCisg
ICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlQnVmZmVyKCZjb25zdGFudEJ1
ZmZlckRlc2NyaXB0aW9uLCBOVUxMLCAmbURyaXZlckNvbnN0YW50QnVmZmVyVlMpOworICAgICAg
ICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5W
U1NldENvbnN0YW50QnVmZmVycygxLCAxLCAmbURyaXZlckNvbnN0YW50QnVmZmVyVlMpOworICAg
IH0KKworICAgIGlmICghbURyaXZlckNvbnN0YW50QnVmZmVyUFMpCisgICAgeworICAgICAgICBE
M0QxMV9CVUZGRVJfREVTQyBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uID0gezB9OworICAgICAg
ICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLkJ5dGVXaWR0aCA9IHNpemVvZihkeF9QaXhlbENv
bnN0YW50cyk7CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uVXNhZ2UgPSBEM0Qx
MV9VU0FHRV9ERUZBVUxUOworICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLkJpbmRG
bGFncyA9IEQzRDExX0JJTkRfQ09OU1RBTlRfQlVGRkVSOworICAgICAgICBjb25zdGFudEJ1ZmZl
ckRlc2NyaXB0aW9uLkNQVUFjY2Vzc0ZsYWdzID0gMDsKKyAgICAgICAgY29uc3RhbnRCdWZmZXJE
ZXNjcmlwdGlvbi5NaXNjRmxhZ3MgPSAwOworICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0
aW9uLlN0cnVjdHVyZUJ5dGVTdHJpZGUgPSAwOworCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0g
bURldmljZS0+Q3JlYXRlQnVmZmVyKCZjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLCBOVUxMLCAm
bURyaXZlckNvbnN0YW50QnVmZmVyUFMpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3Vs
dCkpOworCisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldENvbnN0YW50QnVmZmVycygxLCAx
LCAmbURyaXZlckNvbnN0YW50QnVmZmVyUFMpOworICAgIH0KKworICAgIGlmIChtZW1jbXAoJm1W
ZXJ0ZXhDb25zdGFudHMsICZtQXBwbGllZFZlcnRleENvbnN0YW50cywgc2l6ZW9mKGR4X1ZlcnRl
eENvbnN0YW50cykpICE9IDApCisgICAgeworICAgICAgICBtRGV2aWNlQ29udGV4dC0+VXBkYXRl
U3VicmVzb3VyY2UobURyaXZlckNvbnN0YW50QnVmZmVyVlMsIDAsIE5VTEwsICZtVmVydGV4Q29u
c3RhbnRzLCAxNiwgMCk7CisgICAgICAgIG1lbWNweSgmbUFwcGxpZWRWZXJ0ZXhDb25zdGFudHMs
ICZtVmVydGV4Q29uc3RhbnRzLCBzaXplb2YoZHhfVmVydGV4Q29uc3RhbnRzKSk7CisgICAgfQor
CisgICAgaWYgKG1lbWNtcCgmbVBpeGVsQ29uc3RhbnRzLCAmbUFwcGxpZWRQaXhlbENvbnN0YW50
cywgc2l6ZW9mKGR4X1BpeGVsQ29uc3RhbnRzKSkgIT0gMCkKKyAgICB7CisgICAgICAgIG1EZXZp
Y2VDb250ZXh0LT5VcGRhdGVTdWJyZXNvdXJjZShtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUywgMCwg
TlVMTCwgJm1QaXhlbENvbnN0YW50cywgMTYsIDApOworICAgICAgICBtZW1jcHkoJm1BcHBsaWVk
UGl4ZWxDb25zdGFudHMsICZtUGl4ZWxDb25zdGFudHMsIHNpemVvZihkeF9QaXhlbENvbnN0YW50
cykpOworICAgIH0KKworICAgIC8vIG5lZWRlZCBmb3IgdGhlIHBvaW50IHNwcml0ZSBnZW9tZXRy
eSBzaGFkZXIKKyAgICBtRGV2aWNlQ29udGV4dC0+R1NTZXRDb25zdGFudEJ1ZmZlcnMoMCwgMSwg
Jm1Ecml2ZXJDb25zdGFudEJ1ZmZlclBTKTsKK30KKwordm9pZCBSZW5kZXJlcjExOjpjbGVhcihj
b25zdCBnbDo6Q2xlYXJQYXJhbWV0ZXJzICZjbGVhclBhcmFtcywgZ2w6OkZyYW1lYnVmZmVyICpm
cmFtZUJ1ZmZlcikKK3sKKyAgICAgYm9vbCBhbHBoYVVubWFza2VkID0gKGdsOjpHZXRBbHBoYVNp
emUobVJlbmRlclRhcmdldERlc2MuZm9ybWF0KSA9PSAwKSB8fCBjbGVhclBhcmFtcy5jb2xvck1h
c2tBbHBoYTsKKyAgICAgYm9vbCBuZWVkTWFza2VkQ29sb3JDbGVhciA9IChjbGVhclBhcmFtcy5t
YXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJVCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICEoY2xlYXJQYXJhbXMuY29sb3JNYXNrUmVkICYmIGNsZWFyUGFyYW1zLmNvbG9yTWFz
a0dyZWVuICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1z
LmNvbG9yTWFza0JsdWUgJiYgYWxwaGFVbm1hc2tlZCk7CisKKyAgICAgdW5zaWduZWQgaW50IHN0
ZW5jaWxVbm1hc2tlZCA9IDB4MDsKKyAgICAgaWYgKGZyYW1lQnVmZmVyLT5oYXNTdGVuY2lsKCkp
CisgICAgIHsKKyAgICAgICAgIHVuc2lnbmVkIGludCBzdGVuY2lsU2l6ZSA9IGdsOjpHZXRTdGVu
Y2lsU2l6ZShmcmFtZUJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlcigpLT5nZXRBY3R1YWxGb3JtYXQo
KSk7CisgICAgICAgICBzdGVuY2lsVW5tYXNrZWQgPSAoMHgxIDw8IHN0ZW5jaWxTaXplKSAtIDE7
CisgICAgIH0KKyAgICAgYm9vbCBuZWVkTWFza2VkU3RlbmNpbENsZWFyID0gKGNsZWFyUGFyYW1z
Lm1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpICYmCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChjbGVhclBhcmFtcy5zdGVuY2lsV3JpdGVNYXNrICYgc3RlbmNpbFVubWFz
a2VkKSAhPSBzdGVuY2lsVW5tYXNrZWQ7CisKKyAgICAgYm9vbCBuZWVkU2Npc3NvcmVkQ2xlYXIg
PSBtU2Npc3NvckVuYWJsZWQgJiYgKG1DdXJTY2lzc29yLnggPiAwIHx8IG1DdXJTY2lzc29yLnkg
PiAwIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtQ3VyU2Npc3Nvci54ICsgbUN1clNjaXNzb3Iud2lkdGggPCBtUmVuZGVyVGFyZ2V0RGVzYy53
aWR0aCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbUN1clNjaXNzb3IueSArIG1DdXJTY2lzc29yLmhlaWdodCA8IG1SZW5kZXJUYXJnZXREZXNj
LmhlaWdodCk7CisKKyAgICAgaWYgKG5lZWRNYXNrZWRDb2xvckNsZWFyIHx8IG5lZWRNYXNrZWRT
dGVuY2lsQ2xlYXIgfHwgbmVlZFNjaXNzb3JlZENsZWFyKQorICAgICB7CisgICAgICAgICBtYXNr
ZWRDbGVhcihjbGVhclBhcmFtcywgZnJhbWVCdWZmZXItPnVzaW5nRXh0ZW5kZWREcmF3QnVmZmVy
cygpKTsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKyAgICAgICAgIGlmIChjbGVhclBhcmFt
cy5tYXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJVCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBn
bDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUzsgY29sb3JBdHRhY2htZW50KyspCisg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBpZiAoZnJhbWVCdWZmZXItPmlzRW5hYmxl
ZENvbG9yQXR0YWNobWVudChjb2xvckF0dGFjaG1lbnQpKQorICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICBnbDo6UmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXJPYmplY3Qg
PSBmcmFtZUJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoY29sb3JBdHRhY2htZW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgIGlmIChyZW5kZXJidWZmZXJPYmplY3QpCisgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0
ID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShyZW5kZXJidWZmZXJPYmplY3Qt
PmdldFJlbmRlclRhcmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVuZGVy
VGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVSUigicmVuZGVyIHRhcmdldCBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAq
ZnJhbWVidWZmZXJSVFYgPSByZW5kZXJUYXJnZXQtPmdldFJlbmRlclRhcmdldFZpZXcoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghZnJhbWVidWZmZXJSVFYpCisgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVJSKCJyZW5kZXIgdGFy
Z2V0IHZpZXcgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGNsZWFyVmFsdWVzWzRdID0geyBjbGVhclBhcmFt
cy5jb2xvckNsZWFyVmFsdWUucmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZS5ncmVlbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGVhclBhcmFtcy5jb2xvckNsZWFyVmFsdWUuYmx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvckNsZWFyVmFs
dWUuYWxwaGEgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5DbGVh
clJlbmRlclRhcmdldFZpZXcoZnJhbWVidWZmZXJSVFYsIGNsZWFyVmFsdWVzKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXJSVFYtPlJlbGVhc2UoKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGlmIChjbGVhclBhcmFtcy5tYXNrICYgR0xfREVQVEhfQlVGRkVSX0JJVCB8fCBj
bGVhclBhcmFtcy5tYXNrICYgR0xfU1RFTkNJTF9CVUZGRVJfQklUKQorICAgICAgICB7CisgICAg
ICAgICAgICBnbDo6UmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXJPYmplY3QgPSBmcmFtZUJ1ZmZl
ci0+Z2V0RGVwdGhPclN0ZW5jaWxidWZmZXIoKTsKKyAgICAgICAgICAgIGlmIChyZW5kZXJidWZm
ZXJPYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUmVuZGVyVGFyZ2V0MTEg
KnJlbmRlclRhcmdldCA9IFJlbmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEocmVuZGVy
YnVmZmVyT2JqZWN0LT5nZXREZXB0aFN0ZW5jaWwoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFy
ZW5kZXJUYXJnZXQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBFUlIo
InJlbmRlciB0YXJnZXQgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIElE
M0QxMURlcHRoU3RlbmNpbFZpZXcgKmZyYW1lYnVmZmVyRFNWID0gcmVuZGVyVGFyZ2V0LT5nZXRE
ZXB0aFN0ZW5jaWxWaWV3KCk7CisgICAgICAgICAgICAgICAgaWYgKCFmcmFtZWJ1ZmZlckRTVikK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEVSUigiZGVwdGggc3RlbmNp
bCB2aWV3IHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBVSU5UIGNsZWFy
RmxhZ3MgPSAwOworICAgICAgICAgICAgICAgIGlmIChjbGVhclBhcmFtcy5tYXNrICYgR0xfREVQ
VEhfQlVGRkVSX0JJVCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNs
ZWFyRmxhZ3MgfD0gRDNEMTFfQ0xFQVJfREVQVEg7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGlmIChjbGVhclBhcmFtcy5tYXNrICYgR0xfU1RFTkNJTF9CVUZGRVJfQklUKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJGbGFncyB8PSBEM0Qx
MV9DTEVBUl9TVEVOQ0lMOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZs
b2F0IGRlcHRoQ2xlYXIgPSBnbDo6Y2xhbXAwMShjbGVhclBhcmFtcy5kZXB0aENsZWFyVmFsdWUp
OworICAgICAgICAgICAgICAgIFVJTlQ4IHN0ZW5jaWxDbGVhciA9IGNsZWFyUGFyYW1zLnN0ZW5j
aWxDbGVhclZhbHVlICYgMHgwMDAwMDBGRjsKKworICAgICAgICAgICAgICAgIG1EZXZpY2VDb250
ZXh0LT5DbGVhckRlcHRoU3RlbmNpbFZpZXcoZnJhbWVidWZmZXJEU1YsIGNsZWFyRmxhZ3MsIGRl
cHRoQ2xlYXIsIHN0ZW5jaWxDbGVhcik7CisKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlckRT
Vi0+UmVsZWFzZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IFJlbmRlcmVyMTE6Om1hc2tlZENsZWFyKGNvbnN0IGdsOjpDbGVhclBhcmFtZXRlcnMgJmNsZWFy
UGFyYW1zLCBib29sIHVzaW5nRXh0ZW5kZWREcmF3QnVmZmVycykKK3sKKyAgICBIUkVTVUxUIHJl
c3VsdDsKKworICAgIGlmICghbUNsZWFyUmVzb3VyY2VzSW5pdGlhbGl6ZWQpCisgICAgeworICAg
ICAgICBBU1NFUlQoIW1DbGVhclZCICYmICFtQ2xlYXJWUyAmJiAhbUNsZWFyU2luZ2xlUFMgJiYg
IW1DbGVhck11bHRpcGxlUFMgJiYgIW1DbGVhclNjaXNzb3JSUyAmJiAhbUNsZWFyTm9TY2lzc29y
UlMpOworCisgICAgICAgIEQzRDExX0JVRkZFUl9ERVNDIHZiRGVzYzsKKyAgICAgICAgdmJEZXNj
LkJ5dGVXaWR0aCA9IHNpemVvZihkM2QxMTo6UG9zaXRpb25EZXB0aENvbG9yVmVydGV4KSAqIDQ7
CisgICAgICAgIHZiRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RZTkFNSUM7CisgICAgICAgIHZi
RGVzYy5CaW5kRmxhZ3MgPSBEM0QxMV9CSU5EX1ZFUlRFWF9CVUZGRVI7CisgICAgICAgIHZiRGVz
Yy5DUFVBY2Nlc3NGbGFncyA9IEQzRDExX0NQVV9BQ0NFU1NfV1JJVEU7CisgICAgICAgIHZiRGVz
Yy5NaXNjRmxhZ3MgPSAwOworICAgICAgICB2YkRlc2MuU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7
CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlQnVmZmVyKCZ2YkRlc2MsIE5VTEws
ICZtQ2xlYXJWQik7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgICAg
IGQzZDExOjpTZXREZWJ1Z05hbWUobUNsZWFyVkIsICJSZW5kZXJlcjExIG1hc2tlZCBjbGVhciB2
ZXJ0ZXggYnVmZmVyIik7CisKKyAgICAgICAgRDNEMTFfSU5QVVRfRUxFTUVOVF9ERVNDIHF1YWRM
YXlvdXRbXSA9CisgICAgICAgIHsKKyAgICAgICAgICAgIHsgIlBPU0lUSU9OIiwgMCwgRFhHSV9G
T1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAgICAwLCAgMCwgRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9E
QVRBLCAwIH0sCisgICAgICAgICAgICB7ICJDT0xPUiIsICAgIDAsIERYR0lfRk9STUFUX1IzMkcz
MkIzMkEzMl9GTE9BVCwgMCwgMTIsIEQzRDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMCB9LAor
ICAgICAgICB9OworCisgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZUlucHV0TGF5b3V0
KHF1YWRMYXlvdXQsIDIsIGdfVlNfQ2xlYXIsIHNpemVvZihnX1ZTX0NsZWFyKSwgJm1DbGVhcklM
KTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNl
dERlYnVnTmFtZShtQ2xlYXJJTCwgIlJlbmRlcmVyMTEgbWFza2VkIGNsZWFyIGlucHV0IGxheW91
dCIpOworCisgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVZlcnRleFNoYWRlcihnX1ZT
X0NsZWFyLCBzaXplb2YoZ19WU19DbGVhciksIE5VTEwsICZtQ2xlYXJWUyk7CisgICAgICAgIEFT
U0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUNs
ZWFyVlMsICJSZW5kZXJlcjExIG1hc2tlZCBjbGVhciB2ZXJ0ZXggc2hhZGVyIik7CisKKyAgICAg
ICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUGl4ZWxTaGFkZXIoZ19QU19DbGVhclNpbmdsZSwg
c2l6ZW9mKGdfUFNfQ2xlYXJTaW5nbGUpLCBOVUxMLCAmbUNsZWFyU2luZ2xlUFMpOworICAgICAg
ICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1l
KG1DbGVhclNpbmdsZVBTLCAiUmVuZGVyZXIxMSBtYXNrZWQgY2xlYXIgcGl4ZWwgc2hhZGVyICgx
IFJUKSIpOworCisgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVBpeGVsU2hhZGVyKGdf
UFNfQ2xlYXJNdWx0aXBsZSwgc2l6ZW9mKGdfUFNfQ2xlYXJNdWx0aXBsZSksIE5VTEwsICZtQ2xl
YXJNdWx0aXBsZVBTKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAg
ICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ2xlYXJNdWx0aXBsZVBTLCAiUmVuZGVyZXIxMSBtYXNr
ZWQgY2xlYXIgcGl4ZWwgc2hhZGVyIChNUlQpIik7CisKKyAgICAgICAgRDNEMTFfUkFTVEVSSVpF
Ul9ERVNDIHJzU2Npc3NvckRlc2M7CisgICAgICAgIHJzU2Npc3NvckRlc2MuRmlsbE1vZGUgPSBE
M0QxMV9GSUxMX1NPTElEOworICAgICAgICByc1NjaXNzb3JEZXNjLkN1bGxNb2RlID0gRDNEMTFf
Q1VMTF9OT05FOworICAgICAgICByc1NjaXNzb3JEZXNjLkZyb250Q291bnRlckNsb2Nrd2lzZSA9
IEZBTFNFOworICAgICAgICByc1NjaXNzb3JEZXNjLkRlcHRoQmlhcyA9IDA7CisgICAgICAgIHJz
U2Npc3NvckRlc2MuRGVwdGhCaWFzQ2xhbXAgPSAwLjBmOworICAgICAgICByc1NjaXNzb3JEZXNj
LlNsb3BlU2NhbGVkRGVwdGhCaWFzID0gMC4wZjsKKyAgICAgICAgcnNTY2lzc29yRGVzYy5EZXB0
aENsaXBFbmFibGUgPSBGQUxTRTsKKyAgICAgICAgcnNTY2lzc29yRGVzYy5TY2lzc29yRW5hYmxl
ID0gVFJVRTsKKyAgICAgICAgcnNTY2lzc29yRGVzYy5NdWx0aXNhbXBsZUVuYWJsZSA9IEZBTFNF
OworICAgICAgICByc1NjaXNzb3JEZXNjLkFudGlhbGlhc2VkTGluZUVuYWJsZSA9IEZBTFNFOwor
CisgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVJhc3Rlcml6ZXJTdGF0ZSgmcnNTY2lz
c29yRGVzYywgJm1DbGVhclNjaXNzb3JSUyk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVz
dWx0KSk7CisgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUNsZWFyU2Npc3NvclJTLCAiUmVu
ZGVyZXIxMSBtYXNrZWQgY2xlYXIgc2Npc3NvciByYXN0ZXJpemVyIHN0YXRlIik7CisKKyAgICAg
ICAgRDNEMTFfUkFTVEVSSVpFUl9ERVNDIHJzTm9TY2lzc29yRGVzYzsKKyAgICAgICAgcnNOb1Nj
aXNzb3JEZXNjLkZpbGxNb2RlID0gRDNEMTFfRklMTF9TT0xJRDsKKyAgICAgICAgcnNOb1NjaXNz
b3JEZXNjLkN1bGxNb2RlID0gRDNEMTFfQ1VMTF9OT05FOworICAgICAgICByc05vU2Npc3NvckRl
c2MuRnJvbnRDb3VudGVyQ2xvY2t3aXNlID0gRkFMU0U7CisgICAgICAgIHJzTm9TY2lzc29yRGVz
Yy5EZXB0aEJpYXMgPSAwOworICAgICAgICByc05vU2Npc3NvckRlc2MuRGVwdGhCaWFzQ2xhbXAg
PSAwLjBmOworICAgICAgICByc05vU2Npc3NvckRlc2MuU2xvcGVTY2FsZWREZXB0aEJpYXMgPSAw
LjBmOworICAgICAgICByc05vU2Npc3NvckRlc2MuRGVwdGhDbGlwRW5hYmxlID0gRkFMU0U7Cisg
ICAgICAgIHJzTm9TY2lzc29yRGVzYy5TY2lzc29yRW5hYmxlID0gRkFMU0U7CisgICAgICAgIHJz
Tm9TY2lzc29yRGVzYy5NdWx0aXNhbXBsZUVuYWJsZSA9IEZBTFNFOworICAgICAgICByc05vU2Np
c3NvckRlc2MuQW50aWFsaWFzZWRMaW5lRW5hYmxlID0gRkFMU0U7CisKKyAgICAgICAgcmVzdWx0
ID0gbURldmljZS0+Q3JlYXRlUmFzdGVyaXplclN0YXRlKCZyc05vU2Npc3NvckRlc2MsICZtQ2xl
YXJOb1NjaXNzb3JSUyk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAg
ICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUNsZWFyTm9TY2lzc29yUlMsICJSZW5kZXJlcjExIG1h
c2tlZCBjbGVhciBubyBzY2lzc29yIHJhc3Rlcml6ZXIgc3RhdGUiKTsKKworICAgICAgICBtQ2xl
YXJSZXNvdXJjZXNJbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisgICAgLy8gUHJlcGFyZSB0
aGUgZGVwdGggc3RlbmNpbCBzdGF0ZSB0byB3cml0ZSBkZXB0aCB2YWx1ZXMgaWYgdGhlIGRlcHRo
IHNob3VsZCBiZSBjbGVhcmVkCisgICAgLy8gYW5kIHN0ZW5jaWwgdmFsdWVzIGlmIHRoZSBzdGVu
Y2lsIHNob3VsZCBiZSBjbGVhcmVkCisgICAgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlIGdsRFNTdGF0
ZTsKKyAgICBnbERTU3RhdGUuZGVwdGhUZXN0ID0gKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9ERVBU
SF9CVUZGRVJfQklUKSAhPSAwOworICAgIGdsRFNTdGF0ZS5kZXB0aEZ1bmMgPSBHTF9BTFdBWVM7
CisgICAgZ2xEU1N0YXRlLmRlcHRoTWFzayA9IChjbGVhclBhcmFtcy5tYXNrICYgR0xfREVQVEhf
QlVGRkVSX0JJVCkgIT0gMDsKKyAgICBnbERTU3RhdGUuc3RlbmNpbFRlc3QgPSAoY2xlYXJQYXJh
bXMubWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkgIT0gMDsKKyAgICBnbERTU3RhdGUuc3Rl
bmNpbEZ1bmMgPSBHTF9BTFdBWVM7CisgICAgZ2xEU1N0YXRlLnN0ZW5jaWxNYXNrID0gMDsKKyAg
ICBnbERTU3RhdGUuc3RlbmNpbEZhaWwgPSBHTF9SRVBMQUNFOworICAgIGdsRFNTdGF0ZS5zdGVu
Y2lsUGFzc0RlcHRoRmFpbCA9IEdMX1JFUExBQ0U7CisgICAgZ2xEU1N0YXRlLnN0ZW5jaWxQYXNz
RGVwdGhQYXNzID0gR0xfUkVQTEFDRTsKKyAgICBnbERTU3RhdGUuc3RlbmNpbFdyaXRlbWFzayA9
IGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1hc2s7CisgICAgZ2xEU1N0YXRlLnN0ZW5jaWxCYWNr
RnVuYyA9IEdMX0FMV0FZUzsKKyAgICBnbERTU3RhdGUuc3RlbmNpbEJhY2tNYXNrID0gMDsKKyAg
ICBnbERTU3RhdGUuc3RlbmNpbEJhY2tGYWlsID0gR0xfUkVQTEFDRTsKKyAgICBnbERTU3RhdGUu
c3RlbmNpbEJhY2tQYXNzRGVwdGhGYWlsID0gR0xfUkVQTEFDRTsKKyAgICBnbERTU3RhdGUuc3Rl
bmNpbEJhY2tQYXNzRGVwdGhQYXNzID0gR0xfUkVQTEFDRTsKKyAgICBnbERTU3RhdGUuc3RlbmNp
bEJhY2tXcml0ZW1hc2sgPSBjbGVhclBhcmFtcy5zdGVuY2lsV3JpdGVNYXNrOworCisgICAgaW50
IHN0ZW5jaWxDbGVhciA9IGNsZWFyUGFyYW1zLnN0ZW5jaWxDbGVhclZhbHVlICYgMHgwMDAwMDBG
RjsKKworICAgIElEM0QxMURlcHRoU3RlbmNpbFN0YXRlICpkc1N0YXRlID0gbVN0YXRlQ2FjaGUu
Z2V0RGVwdGhTdGVuY2lsU3RhdGUoZ2xEU1N0YXRlKTsKKworICAgIC8vIFByZXBhcmUgdGhlIGJs
ZW5kIHN0YXRlIHRvIHVzZSBhIHdyaXRlIG1hc2sgaWYgdGhlIGNvbG9yIGJ1ZmZlciBzaG91bGQg
YmUgY2xlYXJlZAorICAgIGdsOjpCbGVuZFN0YXRlIGdsQmxlbmRTdGF0ZTsKKyAgICBnbEJsZW5k
U3RhdGUuYmxlbmQgPSBmYWxzZTsKKyAgICBnbEJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0IgPSBH
TF9PTkU7CisgICAgZ2xCbGVuZFN0YXRlLmRlc3RCbGVuZFJHQiA9IEdMX1pFUk87CisgICAgZ2xC
bGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEgPSBHTF9PTkU7CisgICAgZ2xCbGVuZFN0YXRlLmRl
c3RCbGVuZEFscGhhID0gR0xfWkVSTzsKKyAgICBnbEJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvblJH
QiA9IEdMX0ZVTkNfQUREOworICAgIGdsQmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEgPSBH
TF9GVU5DX0FERDsKKyAgICBnbEJsZW5kU3RhdGUuY29sb3JNYXNrUmVkID0gKGNsZWFyUGFyYW1z
Lm1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKSA/IGNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCA6
IGZhbHNlOworICAgIGdsQmxlbmRTdGF0ZS5jb2xvck1hc2tHcmVlbiA9IChjbGVhclBhcmFtcy5t
YXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJVCkgPyBjbGVhclBhcmFtcy5jb2xvck1hc2tHcmVlbiA6
IGZhbHNlOworICAgIGdsQmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlID0gKGNsZWFyUGFyYW1zLm1h
c2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKSA/IGNsZWFyUGFyYW1zLmNvbG9yTWFza0JsdWUgOiBm
YWxzZTsKKyAgICBnbEJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEgPSAoY2xlYXJQYXJhbXMubWFz
ayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpID8gY2xlYXJQYXJhbXMuY29sb3JNYXNrQWxwaGEgOiBm
YWxzZTsKKyAgICBnbEJsZW5kU3RhdGUuc2FtcGxlQWxwaGFUb0NvdmVyYWdlID0gZmFsc2U7Cisg
ICAgZ2xCbGVuZFN0YXRlLmRpdGhlciA9IGZhbHNlOworCisgICAgc3RhdGljIGNvbnN0IGZsb2F0
IGJsZW5kRmFjdG9yc1s0XSA9IHsgMS4wZiwgMS4wZiwgMS4wZiwgMS4wZiB9OworICAgIHN0YXRp
YyBjb25zdCBVSU5UIHNhbXBsZU1hc2sgPSAweEZGRkZGRkZGOworCisgICAgSUQzRDExQmxlbmRT
dGF0ZSAqYmxlbmRTdGF0ZSA9IG1TdGF0ZUNhY2hlLmdldEJsZW5kU3RhdGUoZ2xCbGVuZFN0YXRl
KTsKKworICAgIC8vIFNldCB0aGUgdmVydGljZXMKKyAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VS
Q0UgbWFwcGVkUmVzb3VyY2U7CisgICAgcmVzdWx0ID0gbURldmljZUNvbnRleHQtPk1hcChtQ2xl
YXJWQiwgMCwgRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXBwZWRSZXNvdXJjZSk7Cisg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gbWFw
IG1hc2tlZCBjbGVhciB2ZXJ0ZXggYnVmZmVyLCBIUkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkM2QxMTo6UG9zaXRpb25EZXB0aENvbG9yVmVy
dGV4ICp2ZXJ0aWNlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZDNkMTE6OlBvc2l0aW9uRGVwdGhDb2xv
clZlcnRleCo+KG1hcHBlZFJlc291cmNlLnBEYXRhKTsKKworICAgIGZsb2F0IGRlcHRoQ2xlYXIg
PSBnbDo6Y2xhbXAwMShjbGVhclBhcmFtcy5kZXB0aENsZWFyVmFsdWUpOworICAgIGQzZDExOjpT
ZXRQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXgoJnZlcnRpY2VzWzBdLCAtMS4wZiwgIDEuMGYsIGRl
cHRoQ2xlYXIsIGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZSk7CisgICAgZDNkMTE6OlNldFBv
c2l0aW9uRGVwdGhDb2xvclZlcnRleCgmdmVydGljZXNbMV0sIC0xLjBmLCAtMS4wZiwgZGVwdGhD
bGVhciwgY2xlYXJQYXJhbXMuY29sb3JDbGVhclZhbHVlKTsKKyAgICBkM2QxMTo6U2V0UG9zaXRp
b25EZXB0aENvbG9yVmVydGV4KCZ2ZXJ0aWNlc1syXSwgIDEuMGYsICAxLjBmLCBkZXB0aENsZWFy
LCBjbGVhclBhcmFtcy5jb2xvckNsZWFyVmFsdWUpOworICAgIGQzZDExOjpTZXRQb3NpdGlvbkRl
cHRoQ29sb3JWZXJ0ZXgoJnZlcnRpY2VzWzNdLCAgMS4wZiwgLTEuMGYsIGRlcHRoQ2xlYXIsIGNs
ZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZSk7CisKKyAgICBtRGV2aWNlQ29udGV4dC0+VW5tYXAo
bUNsZWFyVkIsIDApOworCisgICAgLy8gQXBwbHkgc3RhdGUKKyAgICBtRGV2aWNlQ29udGV4dC0+
T01TZXRCbGVuZFN0YXRlKGJsZW5kU3RhdGUsIGJsZW5kRmFjdG9ycywgc2FtcGxlTWFzayk7Cisg
ICAgbURldmljZUNvbnRleHQtPk9NU2V0RGVwdGhTdGVuY2lsU3RhdGUoZHNTdGF0ZSwgc3RlbmNp
bENsZWFyKTsKKyAgICBtRGV2aWNlQ29udGV4dC0+UlNTZXRTdGF0ZShtU2Npc3NvckVuYWJsZWQg
PyBtQ2xlYXJTY2lzc29yUlMgOiBtQ2xlYXJOb1NjaXNzb3JSUyk7CisKKyAgICAvLyBBcHBseSBz
aGFkZXJzCisgICAgSUQzRDExUGl4ZWxTaGFkZXIgKnBpeGVsU2hhZGVyID0gdXNpbmdFeHRlbmRl
ZERyYXdCdWZmZXJzID8gbUNsZWFyTXVsdGlwbGVQUyA6IG1DbGVhclNpbmdsZVBTOworCisgICAg
bURldmljZUNvbnRleHQtPklBU2V0SW5wdXRMYXlvdXQobUNsZWFySUwpOworICAgIG1EZXZpY2VD
b250ZXh0LT5WU1NldFNoYWRlcihtQ2xlYXJWUywgTlVMTCwgMCk7CisgICAgbURldmljZUNvbnRl
eHQtPlBTU2V0U2hhZGVyKHBpeGVsU2hhZGVyLCBOVUxMLCAwKTsKKyAgICBtRGV2aWNlQ29udGV4
dC0+R1NTZXRTaGFkZXIoTlVMTCwgTlVMTCwgMCk7CisKKyAgICAvLyBBcHBseSB2ZXJ0ZXggYnVm
ZmVyCisgICAgc3RhdGljIFVJTlQgc3RyaWRlID0gc2l6ZW9mKGQzZDExOjpQb3NpdGlvbkRlcHRo
Q29sb3JWZXJ0ZXgpOworICAgIHN0YXRpYyBVSU5UIHN0YXJ0SWR4ID0gMDsKKyAgICBtRGV2aWNl
Q29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIDEsICZtQ2xlYXJWQiwgJnN0cmlkZSwgJnN0
YXJ0SWR4KTsKKyAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRQcmltaXRpdmVUb3BvbG9neShEM0Rf
UFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xFU1RSSVApOworCisgICAgLy8gRHJhdyB0aGUgY2xl
YXIgcXVhZAorICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3KDQsIDApOworCisgICAgLy8gQ2xlYW4g
dXAKKyAgICBtYXJrQWxsU3RhdGVEaXJ0eSgpOworfQorCit2b2lkIFJlbmRlcmVyMTE6Om1hcmtB
bGxTdGF0ZURpcnR5KCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBydEluZGV4ID0gMDsgcnRJ
bmRleCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTOyBydEluZGV4KyspCisg
ICAgeworICAgICAgICBtQXBwbGllZFJlbmRlclRhcmdldFNlcmlhbHNbcnRJbmRleF0gPSAwOwor
ICAgIH0KKyAgICBtQXBwbGllZERlcHRoYnVmZmVyU2VyaWFsID0gMDsKKyAgICBtQXBwbGllZFN0
ZW5jaWxidWZmZXJTZXJpYWwgPSAwOworICAgIG1EZXB0aFN0ZW5jaWxJbml0aWFsaXplZCA9IGZh
bHNlOworICAgIG1SZW5kZXJUYXJnZXREZXNjSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9J
TUFHRV9VTklUUzsgaSsrKQorICAgIHsKKyAgICAgICAgbUZvcmNlU2V0VmVydGV4U2FtcGxlclN0
YXRlc1tpXSA9IHRydWU7CisgICAgICAgIG1DdXJWZXJ0ZXhUZXh0dXJlU2VyaWFsc1tpXSA9IDA7
CisgICAgfQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9URVhUVVJFX0lNQUdFX1VO
SVRTOyBpKyspCisgICAgeworICAgICAgICBtRm9yY2VTZXRQaXhlbFNhbXBsZXJTdGF0ZXNbaV0g
PSB0cnVlOworICAgICAgICBtQ3VyUGl4ZWxUZXh0dXJlU2VyaWFsc1tpXSA9IDA7CisgICAgfQor
CisgICAgbUZvcmNlU2V0QmxlbmRTdGF0ZSA9IHRydWU7CisgICAgbUZvcmNlU2V0UmFzdGVyU3Rh
dGUgPSB0cnVlOworICAgIG1Gb3JjZVNldERlcHRoU3RlbmNpbFN0YXRlID0gdHJ1ZTsKKyAgICBt
Rm9yY2VTZXRTY2lzc29yID0gdHJ1ZTsKKyAgICBtRm9yY2VTZXRWaWV3cG9ydCA9IHRydWU7CisK
KyAgICBtQXBwbGllZElCU2VyaWFsID0gMDsKKyAgICBtQXBwbGllZFN0b3JhZ2VJQlNlcmlhbCA9
IDA7CisgICAgbUFwcGxpZWRJQk9mZnNldCA9IDA7CisKKyAgICBtQXBwbGllZFByb2dyYW1CaW5h
cnlTZXJpYWwgPSAwOworICAgIG1lbXNldCgmbUFwcGxpZWRWZXJ0ZXhDb25zdGFudHMsIDAsIHNp
emVvZihkeF9WZXJ0ZXhDb25zdGFudHMpKTsKKyAgICBtZW1zZXQoJm1BcHBsaWVkUGl4ZWxDb25z
dGFudHMsIDAsIHNpemVvZihkeF9QaXhlbENvbnN0YW50cykpOworfQorCit2b2lkIFJlbmRlcmVy
MTE6OnJlbGVhc2VEZXZpY2VSZXNvdXJjZXMoKQoreworICAgIG1TdGF0ZUNhY2hlLmNsZWFyKCk7
CisgICAgbUlucHV0TGF5b3V0Q2FjaGUuY2xlYXIoKTsKKworICAgIGRlbGV0ZSBtVmVydGV4RGF0
YU1hbmFnZXI7CisgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gTlVMTDsKKworICAgIGRlbGV0ZSBt
SW5kZXhEYXRhTWFuYWdlcjsKKyAgICBtSW5kZXhEYXRhTWFuYWdlciA9IE5VTEw7CisKKyAgICBk
ZWxldGUgbUxpbmVMb29wSUI7CisgICAgbUxpbmVMb29wSUIgPSBOVUxMOworCisgICAgZGVsZXRl
IG1UcmlhbmdsZUZhbklCOworICAgIG1UcmlhbmdsZUZhbklCID0gTlVMTDsKKworICAgIFNhZmVS
ZWxlYXNlKG1Db3B5VkIpOworICAgIFNhZmVSZWxlYXNlKG1Db3B5U2FtcGxlcik7CisgICAgU2Fm
ZVJlbGVhc2UobUNvcHlJTCk7CisgICAgU2FmZVJlbGVhc2UobUNvcHlJTCk7CisgICAgU2FmZVJl
bGVhc2UobUNvcHlWUyk7CisgICAgU2FmZVJlbGVhc2UobUNvcHlSR0JBUFMpOworICAgIFNhZmVS
ZWxlYXNlKG1Db3B5UkdCUFMpOworICAgIFNhZmVSZWxlYXNlKG1Db3B5THVtUFMpOworICAgIFNh
ZmVSZWxlYXNlKG1Db3B5THVtQWxwaGFQUyk7CisKKyAgICBtQ29weVJlc291cmNlc0luaXRpYWxp
emVkID0gZmFsc2U7CisKKyAgICBTYWZlUmVsZWFzZShtQ2xlYXJWQik7CisgICAgU2FmZVJlbGVh
c2UobUNsZWFySUwpOworICAgIFNhZmVSZWxlYXNlKG1DbGVhclZTKTsKKyAgICBTYWZlUmVsZWFz
ZShtQ2xlYXJTaW5nbGVQUyk7CisgICAgU2FmZVJlbGVhc2UobUNsZWFyTXVsdGlwbGVQUyk7Cisg
ICAgU2FmZVJlbGVhc2UobUNsZWFyU2Npc3NvclJTKTsKKyAgICBTYWZlUmVsZWFzZShtQ2xlYXJO
b1NjaXNzb3JSUyk7CisKKyAgICBtQ2xlYXJSZXNvdXJjZXNJbml0aWFsaXplZCA9IGZhbHNlOwor
CisgICAgU2FmZVJlbGVhc2UobURyaXZlckNvbnN0YW50QnVmZmVyVlMpOworICAgIFNhZmVSZWxl
YXNlKG1Ecml2ZXJDb25zdGFudEJ1ZmZlclBTKTsKKyAgICBTYWZlUmVsZWFzZShtU3luY1F1ZXJ5
KTsKK30KKwordm9pZCBSZW5kZXJlcjExOjpub3RpZnlEZXZpY2VMb3N0KCkKK3sKKyAgICBtRGV2
aWNlTG9zdCA9IHRydWU7CisgICAgbURpc3BsYXktPm5vdGlmeURldmljZUxvc3QoKTsKK30KKwor
Ym9vbCBSZW5kZXJlcjExOjppc0RldmljZUxvc3QoKQoreworICAgIHJldHVybiBtRGV2aWNlTG9z
dDsKK30KKworLy8gc2V0IG5vdGlmeSB0byB0cnVlIHRvIGJyb2FkY2FzdCBhIG1lc3NhZ2UgdG8g
YWxsIGNvbnRleHRzIG9mIHRoZSBkZXZpY2UgbG9zcworYm9vbCBSZW5kZXJlcjExOjp0ZXN0RGV2
aWNlTG9zdChib29sIG5vdGlmeSkKK3sKKyAgICBib29sIGlzTG9zdCA9IGZhbHNlOworCisgICAg
Ly8gR2V0UmVtb3ZlZFJlYXNvbiBpcyB1c2VkIHRvIHRlc3QgaWYgdGhlIGRldmljZSBpcyByZW1v
dmVkCisgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5HZXREZXZpY2VSZW1vdmVkUmVhc29u
KCk7CisgICAgaXNMb3N0ID0gZDNkMTE6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCk7CisKKyAg
ICBpZiAoaXNMb3N0KQorICAgIHsKKyAgICAgICAgLy8gTG9nIGVycm9yIGlmIHRoaXMgaXMgYSBu
ZXcgZGV2aWNlIGxvc3QgZXZlbnQKKyAgICAgICAgaWYgKG1EZXZpY2VMb3N0ID09IGZhbHNlKQor
ICAgICAgICB7CisgICAgICAgICAgICBFUlIoIlRoZSBEM0QxMSBkZXZpY2Ugd2FzIHJlbW92ZWQ6
IDB4JTA4WCIsIHJlc3VsdCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBlbnN1cmUgd2Ugbm90
ZSB0aGUgZGV2aWNlIGxvc3MgLS0KKyAgICAgICAgLy8gd2UnbGwgcHJvYmFibHkgZ2V0IHRoaXMg
ZG9uZSBhZ2FpbiBieSBub3RpZnlEZXZpY2VMb3N0CisgICAgICAgIC8vIGJ1dCBiZXN0IHRvIHJl
bWVtYmVyIGl0IQorICAgICAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBjbGVhciB0
aGUgZGV2aWNlIGxvc3Mgc3RhdHVzIGhlcmUKKyAgICAgICAgLy8gLS0gdGhpcyBuZWVkcyB0byBi
ZSBkb25lIGJ5IHJlc2V0RGV2aWNlCisgICAgICAgIG1EZXZpY2VMb3N0ID0gdHJ1ZTsKKyAgICAg
ICAgaWYgKG5vdGlmeSkKKyAgICAgICAgeworICAgICAgICAgICAgbm90aWZ5RGV2aWNlTG9zdCgp
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGlzTG9zdDsKK30KKworYm9vbCBSZW5k
ZXJlcjExOjp0ZXN0RGV2aWNlUmVzZXR0YWJsZSgpCit7CisgICAgLy8gZGV0ZXJtaW5lIGlmIHRo
ZSBkZXZpY2UgaXMgcmVzZXR0YWJsZSBieSBjcmVhdGluZyBhIGR1bW15IGRldmljZQorICAgIFBG
Tl9EM0QxMV9DUkVBVEVfREVWSUNFIEQzRDExQ3JlYXRlRGV2aWNlID0gKFBGTl9EM0QxMV9DUkVB
VEVfREVWSUNFKUdldFByb2NBZGRyZXNzKG1EM2QxMU1vZHVsZSwgIkQzRDExQ3JlYXRlRGV2aWNl
Iik7CisKKyAgICBpZiAoRDNEMTFDcmVhdGVEZXZpY2UgPT0gTlVMTCkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2
ZWxzW10gPQorICAgIHsKKyAgICAgICAgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMCwKKyAgICAgICAg
RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMSwKKyAgICAgICAgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMCwK
KyAgICB9OworCisgICAgSUQzRDExRGV2aWNlKiBkdW1teURldmljZTsKKyAgICBEM0RfRkVBVFVS
RV9MRVZFTCBkdW1teUZlYXR1cmVMZXZlbDsKKyAgICBJRDNEMTFEZXZpY2VDb250ZXh0KiBkdW1t
eUNvbnRleHQ7CisKKyAgICBIUkVTVUxUIHJlc3VsdCA9IEQzRDExQ3JlYXRlRGV2aWNlKE5VTEws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RfRFJJVkVSX1RZUEVf
SEFSRFdBUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2lmIGRlZmluZWQoX0RFQlVH
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfQ1JFQVRFX0RF
VklDRV9ERUJVRywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmZWF0dXJlTGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQXJyYXlTaXplKGZlYXR1cmVMZXZlbHMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfU0RLX1ZFUlNJT04sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmZHVtbXlEZXZpY2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmZHVtbXlGZWF0dXJlTGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmZHVtbXlDb250ZXh0KTsKKworICAgIGlmICghbURl
dmljZSB8fCBGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBkdW1teUNvbnRleHQtPlJlbGVhc2UoKTsKKyAgICBkdW1teURldmljZS0+UmVs
ZWFzZSgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6cmVsZWFz
ZSgpCit7CisgICAgcmVsZWFzZURldmljZVJlc291cmNlcygpOworCisgICAgaWYgKG1EeGdpRmFj
dG9yeSkKKyAgICB7CisgICAgICAgIG1EeGdpRmFjdG9yeS0+UmVsZWFzZSgpOworICAgICAgICBt
RHhnaUZhY3RvcnkgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtRHhnaUFkYXB0ZXIpCisgICAg
eworICAgICAgICBtRHhnaUFkYXB0ZXItPlJlbGVhc2UoKTsKKyAgICAgICAgbUR4Z2lBZGFwdGVy
ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobURldmljZUNvbnRleHQpCisgICAgeworICAgICAg
ICBtRGV2aWNlQ29udGV4dC0+Q2xlYXJTdGF0ZSgpOworICAgICAgICBtRGV2aWNlQ29udGV4dC0+
Rmx1c2goKTsKKyAgICAgICAgbURldmljZUNvbnRleHQtPlJlbGVhc2UoKTsKKyAgICAgICAgbURl
dmljZUNvbnRleHQgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtRGV2aWNlKQorICAgIHsKKyAg
ICAgICAgbURldmljZS0+UmVsZWFzZSgpOworICAgICAgICBtRGV2aWNlID0gTlVMTDsKKyAgICB9
CisKKyAgICBpZiAobUQzZDExTW9kdWxlKQorICAgIHsKKyAgICAgICAgRnJlZUxpYnJhcnkobUQz
ZDExTW9kdWxlKTsKKyAgICAgICAgbUQzZDExTW9kdWxlID0gTlVMTDsKKyAgICB9CisKKyAgICBp
ZiAobUR4Z2lNb2R1bGUpCisgICAgeworICAgICAgICBGcmVlTGlicmFyeShtRHhnaU1vZHVsZSk7
CisgICAgICAgIG1EeGdpTW9kdWxlID0gTlVMTDsKKyAgICB9Cit9CisKK2Jvb2wgUmVuZGVyZXIx
MTo6cmVzZXREZXZpY2UoKQoreworICAgIC8vIHJlY3JlYXRlIGV2ZXJ5dGhpbmcKKyAgICByZWxl
YXNlKCk7CisgICAgRUdMaW50IHJlc3VsdCA9IGluaXRpYWxpemUoKTsKKworICAgIGlmIChyZXN1
bHQgIT0gRUdMX1NVQ0NFU1MpCisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5vdCByZWluaXRp
YWxpemUgRDNEMTEgZGV2aWNlOiAlMDhYIiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIG1EZXZpY2VMb3N0ID0gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworRFdPUkQgUmVuZGVyZXIxMTo6Z2V0QWRhcHRlclZlbmRvcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1BZGFwdGVyRGVzY3JpcHRpb24uVmVuZG9ySWQ7Cit9CisKK3N0ZDo6c3RyaW5nIFJl
bmRlcmVyMTE6OmdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHN0ZDo6b3N0
cmluZ3N0cmVhbSByZW5kZXJlclN0cmluZzsKKworICAgIHJlbmRlcmVyU3RyaW5nIDw8IG1EZXNj
cmlwdGlvbjsKKyAgICByZW5kZXJlclN0cmluZyA8PCAiIERpcmVjdDNEMTEiOworCisgICAgcmVu
ZGVyZXJTdHJpbmcgPDwgIiB2c18iIDw8IGdldE1ham9yU2hhZGVyTW9kZWwoKSA8PCAiXyIgPDwg
Z2V0TWlub3JTaGFkZXJNb2RlbCgpOworICAgIHJlbmRlcmVyU3RyaW5nIDw8ICIgcHNfIiA8PCBn
ZXRNYWpvclNoYWRlck1vZGVsKCkgPDwgIl8iIDw8IGdldE1pbm9yU2hhZGVyTW9kZWwoKTsKKwor
ICAgIHJldHVybiByZW5kZXJlclN0cmluZy5zdHIoKTsKK30KKworR1VJRCBSZW5kZXJlcjExOjpn
ZXRBZGFwdGVySWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgLy8gVXNlIHRoZSBhZGFwdGVyIExV
SUQgYXMgb3VyIGFkYXB0ZXIgSUQKKyAgICAvLyBUaGlzIG51bWJlciBpcyBsb2NhbCB0byBhIG1h
Y2hpbmUgaXMgb25seSBndWFyYW50ZWVkIHRvIGJlIHVuaXF1ZSBiZXR3ZWVuIHJlc3RhcnRzCisg
ICAgTUVUQV9BU1NFUlQoc2l6ZW9mKExVSUQpIDw9IHNpemVvZihHVUlEKSk7CisgICAgR1VJRCBh
ZGFwdGVySWQgPSB7MH07CisgICAgbWVtY3B5KCZhZGFwdGVySWQsICZtQWRhcHRlckRlc2NyaXB0
aW9uLkFkYXB0ZXJMdWlkLCBzaXplb2YoTFVJRCkpOworICAgIHJldHVybiBhZGFwdGVySWQ7Cit9
CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0QkdSQVRleHR1cmVTdXBwb3J0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbUJHUkFUZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRE
WFQxVGV4dHVyZVN1cHBvcnQoKQoreworICAgIHJldHVybiBtRFhUMVRleHR1cmVTdXBwb3J0Owor
fQorCitib29sIFJlbmRlcmVyMTE6OmdldERYVDNUZXh0dXJlU3VwcG9ydCgpCit7CisgICAgcmV0
dXJuIG1EWFQzVGV4dHVyZVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0RFhUNVRl
eHR1cmVTdXBwb3J0KCkKK3sKKyAgICByZXR1cm4gbURYVDVUZXh0dXJlU3VwcG9ydDsKK30KKwor
Ym9vbCBSZW5kZXJlcjExOjpnZXREZXB0aFRleHR1cmVTdXBwb3J0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbURlcHRoVGV4dHVyZVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0Rmxv
YXQzMlRleHR1cmVTdXBwb3J0KGJvb2wgKmZpbHRlcmluZywgYm9vbCAqcmVuZGVyYWJsZSkKK3sK
KyAgICAqcmVuZGVyYWJsZSA9IG1GbG9hdDMyUmVuZGVyU3VwcG9ydDsKKyAgICAqZmlsdGVyaW5n
ID0gbUZsb2F0MzJGaWx0ZXJTdXBwb3J0OworICAgIHJldHVybiBtRmxvYXQzMlRleHR1cmVTdXBw
b3J0OworfQorCitib29sIFJlbmRlcmVyMTE6OmdldEZsb2F0MTZUZXh0dXJlU3VwcG9ydChib29s
ICpmaWx0ZXJpbmcsIGJvb2wgKnJlbmRlcmFibGUpCit7CisgICAgKnJlbmRlcmFibGUgPSBtRmxv
YXQxNlJlbmRlclN1cHBvcnQ7CisgICAgKmZpbHRlcmluZyA9IG1GbG9hdDE2RmlsdGVyU3VwcG9y
dDsKKyAgICByZXR1cm4gbUZsb2F0MTZUZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJl
cjExOjpnZXRMdW1pbmFuY2VUZXh0dXJlU3VwcG9ydCgpCit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIFJlbmRlcmVyMTE6OmdldEx1bWluYW5jZUFscGhhVGV4dHVyZVN1cHBvcnQoKQor
eworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRUZXh0dXJlRmls
dGVyQW5pc290cm9weVN1cHBvcnQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCitm
bG9hdCBSZW5kZXJlcjExOjpnZXRUZXh0dXJlTWF4QW5pc290cm9weSgpIGNvbnN0Cit7CisgICAg
c3dpdGNoIChtRmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTFfMDoKKyAgICAgICAgcmV0dXJuIEQzRDExX01BWF9NQVhBTklTT1RST1BZOworICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMF8wOgorICAgICAgICByZXR1cm4gRDNEMTBfTUFYX01BWEFOSVNPVFJPUFk7CisgICAgICBk
ZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2Jv
b2wgUmVuZGVyZXIxMTo6Z2V0RXZlbnRRdWVyeVN1cHBvcnQoKQoreworICAgIHJldHVybiB0cnVl
OworfQorCitSYW5nZSBSZW5kZXJlcjExOjpnZXRWaWV3cG9ydEJvdW5kcygpIGNvbnN0Cit7Cisg
ICAgc3dpdGNoIChtRmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTFfMDoKKyAgICAgICAgcmV0dXJuIFJhbmdlKEQzRDExX1ZJRVdQT1JUX0JPVU5EU19N
SU4sIEQzRDExX1ZJRVdQT1JUX0JPVU5EU19NQVgpOworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMF8xOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICBy
ZXR1cm4gUmFuZ2UoRDNEMTBfVklFV1BPUlRfQk9VTkRTX01JTiwgRDNEMTBfVklFV1BPUlRfQk9V
TkRTX01BWCk7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4g
UmFuZ2UoMCwgMCk7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgUmVuZGVyZXIxMTo6Z2V0TWF4
VmVydGV4VGV4dHVyZUltYWdlVW5pdHMoKSBjb25zdAoreworICAgIE1FVEFfQVNTRVJUKE1BWF9U
RVhUVVJFX0lNQUdFX1VOSVRTX1ZURl9TTTQgPD0gZ2w6OklNUExFTUVOVEFUSU9OX01BWF9WRVJU
RVhfVEVYVFVSRV9JTUFHRV9VTklUUyk7CisgICAgc3dpdGNoIChtRmVhdHVyZUxldmVsKQorICAg
IHsKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTBfMToKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAg
ICAgICAgcmV0dXJuIE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTX1ZURl9TTTQ7CisgICAgICBkZWZh
dWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3Vuc2ln
bmVkIGludCBSZW5kZXJlcjExOjpnZXRNYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZ2w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTICsgZ2V0TWF4VmVy
dGV4VGV4dHVyZUltYWdlVW5pdHMoKTsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyMTE6Omdl
dFJlc2VydmVkVmVydGV4VW5pZm9ybVZlY3RvcnMoKSBjb25zdAoreworICAgIHJldHVybiAwOyAg
IC8vIERyaXZlciB1bmlmb3JtcyBhcmUgc3RvcmVkIGluIGEgc2VwYXJhdGUgY29uc3RhbnQgYnVm
ZmVyCit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjExOjpnZXRSZXNlcnZlZEZyYWdtZW50VW5p
Zm9ybVZlY3RvcnMoKSBjb25zdAoreworICAgIHJldHVybiAwOyAgIC8vIERyaXZlciB1bmlmb3Jt
cyBhcmUgc3RvcmVkIGluIGEgc2VwYXJhdGUgY29uc3RhbnQgYnVmZmVyCit9CisKK3Vuc2lnbmVk
IGludCBSZW5kZXJlcjExOjpnZXRNYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpIGNvbnN0Cit7Cisg
ICAgTUVUQV9BU1NFUlQoTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlNfRDNEMTEgPD0gRDNEMTBf
UkVRX0NPTlNUQU5UX0JVRkZFUl9FTEVNRU5UX0NPVU5UKTsKKyAgICBBU1NFUlQobUZlYXR1cmVM
ZXZlbCA+PSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wKTsKKyAgICByZXR1cm4gTUFYX1ZFUlRFWF9V
TklGT1JNX1ZFQ1RPUlNfRDNEMTE7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjExOjpnZXRN
YXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKCkgY29uc3QKK3sKKyAgICBNRVRBX0FTU0VSVChNQVhf
RlJBR01FTlRfVU5JRk9STV9WRUNUT1JTX0QzRDExIDw9IEQzRDEwX1JFUV9DT05TVEFOVF9CVUZG
RVJfRUxFTUVOVF9DT1VOVCk7CisgICAgQVNTRVJUKG1GZWF0dXJlTGV2ZWwgPj0gRDNEX0ZFQVRV
UkVfTEVWRUxfMTBfMCk7CisgICAgcmV0dXJuIE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNf
RDNEMTE7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjExOjpnZXRNYXhWYXJ5aW5nVmVjdG9y
cygpIGNvbnN0Cit7CisgICAgTUVUQV9BU1NFUlQoZ2w6OklNUExFTUVOVEFUSU9OX01BWF9WQVJZ
SU5HX1ZFQ1RPUlMgPT0gRDNEMTFfVlNfT1VUUFVUX1JFR0lTVEVSX0NPVU5UKTsKKyAgICBzd2l0
Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8x
MV8wOgorICAgICAgICByZXR1cm4gRDNEMTFfVlNfT1VUUFVUX1JFR0lTVEVSX0NPVU5UOworICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMF8wOgorICAgICAgICByZXR1cm4gRDNEMTBfVlNfT1VUUFVUX1JFR0lTVEVSX0NPVU5U
OworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorfQorCitib29sIFJlbmRlcmVyMTE6OmdldE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KCkgY29u
c3QKK3sKKyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgor
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0T2NjbHVzaW9uUXVlcnlTdXBwb3J0KCkgY29u
c3QKK3sKKyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgor
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0SW5zdGFuY2luZ1N1cHBvcnQoKSBjb25zdAor
eworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzExXzA6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRTaGFyZUhhbmRsZVN1cHBvcnQoKSBjb25zdAorewor
ICAgIC8vIFdlIG9ubHkgY3VycmVudGx5IHN1cHBvcnQgc2hhcmUgaGFuZGxlcyB3aXRoIEJHUkEg
c3VyZmFjZXMsIGJlY2F1c2UKKyAgICAvLyBjaHJvbWUgbmVlZHMgQkdSQS4gT25jZSBjaHJvbWUg
Zml4ZXMgdGhpcywgd2Ugc2hvdWxkIGFsd2F5cyBzdXBwb3J0IHRoZW0uCisgICAgLy8gUElYIGRv
ZXNuJ3Qgc2VlbSB0byBzdXBwb3J0IHVzaW5nIHNoYXJlIGhhbmRsZXMsIHNvIGRpc2FibGUgdGhl
bS4KKyAgICByZXR1cm4gZ2V0QkdSQVRleHR1cmVTdXBwb3J0KCkgJiYgIWdsOjpwZXJmQWN0aXZl
KCk7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0RGVyaXZhdGl2ZUluc3RydWN0aW9uU3VwcG9y
dCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtRmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTBfMToKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCitib29sIFJlbmRlcmVyMTE6OmdldFBvc3RTdWJCdWZmZXJTdXBwb3J0
KCkgY29uc3QKK3sKKyAgICAvLyBEM0QxMSBkb2VzIG5vdCBzdXBwb3J0IHByZXNlbnQgd2l0aCBk
aXJ0eSByZWN0YW5nbGVzIHVudGlsIEQzRDExLjEgYW5kIERYR0kgMS4yLgorICAgIHJldHVybiBm
YWxzZTsKK30KKworaW50IFJlbmRlcmVyMTE6OmdldE1ham9yU2hhZGVyTW9kZWwoKSBjb25zdAor
eworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzExXzA6IHJldHVybiBEM0QxMV9TSEFERVJfTUFKT1JfVkVSU0lPTjsgICAvLyA1
CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6IHJldHVybiBEM0QxMF8xX1NIQURF
Ul9NQUpPUl9WRVJTSU9OOyAvLyA0CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6
IHJldHVybiBEM0QxMF9TSEFERVJfTUFKT1JfVkVSU0lPTjsgICAvLyA0CisgICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVybiAwOworICAgIH0KK30KKworaW50IFJlbmRlcmVy
MTE6OmdldE1pbm9yU2hhZGVyTW9kZWwoKSBjb25zdAoreworICAgIHN3aXRjaCAobUZlYXR1cmVM
ZXZlbCkKKyAgICB7CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6IHJldHVybiBE
M0QxMV9TSEFERVJfTUlOT1JfVkVSU0lPTjsgICAvLyAwCisgICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzEwXzE6IHJldHVybiBEM0QxMF8xX1NIQURFUl9NSU5PUl9WRVJTSU9OOyAvLyAxCisg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiBEM0QxMF9TSEFERVJfTUlO
T1JfVkVSU0lPTjsgICAvLyAwCisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJl
dHVybiAwOworICAgIH0KK30KKworZmxvYXQgUmVuZGVyZXIxMTo6Z2V0TWF4UG9pbnRTaXplKCkg
Y29uc3QKK3sKKyAgICAvLyBjaG9vc2UgYSByZWFzb25hYmxlIG1heGltdW0uIHdlIGVuZm9yY2Ug
dGhpcyBpbiB0aGUgc2hhZGVyLgorICAgIC8vIChuYjogb24gYSBSYWRlb24gMjYwMHh0LCBEWDkg
cmVwb3J0cyBhIDI1NiBtYXggcG9pbnQgc2l6ZSkKKyAgICByZXR1cm4gMTAyNC4wZjsKK30KKwor
aW50IFJlbmRlcmVyMTE6OmdldE1heFZpZXdwb3J0RGltZW5zaW9uKCkgY29uc3QKK3sKKyAgICAv
LyBNYXhpbXVtIHZpZXdwb3J0IHNpemUgbXVzdCBiZSBhdCBsZWFzdCBhcyBsYXJnZSBhcyB0aGUg
bGFyZ2VzdCByZW5kZXIgYnVmZmVyIChvciBsYXJnZXIpLgorICAgIC8vIEluIG91ciBjYXNlIHJl
dHVybiB0aGUgbWF4aW11bSB0ZXh0dXJlIHNpemUsIHdoaWNoIGlzIHRoZSBtYXhpbXVtIHJlbmRl
ciBidWZmZXIgc2l6ZS4KKyAgICBNRVRBX0FTU0VSVChEM0QxMV9SRVFfVEVYVFVSRTJEX1VfT1Jf
Vl9ESU1FTlNJT04gKiAyIC0gMSA8PSBEM0QxMV9WSUVXUE9SVF9CT1VORFNfTUFYKTsKKyAgICBN
RVRBX0FTU0VSVChEM0QxMF9SRVFfVEVYVFVSRTJEX1VfT1JfVl9ESU1FTlNJT04gKiAyIC0gMSA8
PSBEM0QxMF9WSUVXUE9SVF9CT1VORFNfTUFYKTsKKworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZl
bCkKKyAgICB7CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6IAorICAgICAgICBy
ZXR1cm4gRDNEMTFfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOyAgIC8vIDE2Mzg0Cisg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzEwXzA6IAorICAgICAgICByZXR1cm4gRDNEMTBfUkVRX1RFWFRVUkUyRF9VX09SX1Zf
RElNRU5TSU9OOyAgIC8vIDgxOTIKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAg
CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworaW50IFJlbmRlcmVyMTE6OmdldE1heFRl
eHR1cmVXaWR0aCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtRmVhdHVyZUxldmVsKQorICAgIHsK
KyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuIEQzRDExX1JFUV9URVhU
VVJFMkRfVV9PUl9WX0RJTUVOU0lPTjsgICAvLyAxNjM4NAorICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF8xMF8xOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4g
RDNEMTBfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOyAgIC8vIDgxOTIKKyAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitpbnQgUmVu
ZGVyZXIxMTo6Z2V0TWF4VGV4dHVyZUhlaWdodCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtRmVh
dHVyZUxldmVsKQorICAgIHsKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0
dXJuIEQzRDExX1JFUV9URVhUVVJFMkRfVV9PUl9WX0RJTUVOU0lPTjsgICAvLyAxNjM4NAorICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMF8wOiByZXR1cm4gRDNEMTBfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOyAg
IC8vIDgxOTIKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorfQorCitib29sIFJlbmRlcmVyMTE6OmdldDMyQml0SW5kZXhTdXBwb3J0KCkgY29uc3QK
K3sKKyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMV8wOiAKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIEQzRDEwX1JFUV9EUkFXSU5E
RVhFRF9JTkRFWF9DT1VOVF8yX1RPX0VYUCA+PSAzMjsgICAvLyB0cnVlCisgICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2ludCBSZW5k
ZXJlcjExOjpnZXRNaW5Td2FwSW50ZXJ2YWwoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQor
CitpbnQgUmVuZGVyZXIxMTo6Z2V0TWF4U3dhcEludGVydmFsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gNDsKK30KKworaW50IFJlbmRlcmVyMTE6OmdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSBjb25z
dAoreworICAgIHJldHVybiBtTWF4U3VwcG9ydGVkU2FtcGxlczsKK30KKworaW50IFJlbmRlcmVy
MTE6OmdldE5lYXJlc3RTdXBwb3J0ZWRTYW1wbGVzKERYR0lfRk9STUFUIGZvcm1hdCwgdW5zaWdu
ZWQgaW50IHJlcXVlc3RlZCkgY29uc3QKK3sKKyAgICBpZiAocmVxdWVzdGVkID09IDApCisgICAg
eworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBNdWx0aXNhbXBsZVN1cHBvcnRNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtTXVsdGlzYW1wbGVTdXBwb3J0TWFwLmZpbmQoZm9ybWF0
KTsKKyAgICBpZiAoaXRlciAhPSBtTXVsdGlzYW1wbGVTdXBwb3J0TWFwLmVuZCgpKQorICAgIHsK
KyAgICAgICAgY29uc3QgTXVsdGlzYW1wbGVTdXBwb3J0SW5mbyYgaW5mbyA9IGl0ZXItPnNlY29u
ZDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IHJlcXVlc3RlZCAtIDE7IGkgPCBEM0Qx
MV9NQVhfTVVMVElTQU1QTEVfU0FNUExFX0NPVU5UOyBpKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChpbmZvLnF1YWxpdHlMZXZlbHNbaV0gPiAwKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBpICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiAtMTsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyMTE6OmdldE1heFJl
bmRlclRhcmdldHMoKSBjb25zdAoreworICAgIE1FVEFfQVNTRVJUKEQzRDExX1NJTVVMVEFORU9V
U19SRU5ERVJfVEFSR0VUX0NPVU5UIDw9IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZG
RVJTKTsKKyAgICBNRVRBX0FTU0VSVChEM0QxMF9TSU1VTFRBTkVPVVNfUkVOREVSX1RBUkdFVF9D
T1VOVCA8PSBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUyk7CisKKyAgICBzd2l0
Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8x
MV8wOgorICAgICAgICByZXR1cm4gRDNEMTFfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09V
TlQ7ICAvLyA4CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgIHJldHVybiBEM0QxMF9TSU1VTFRBTkVP
VVNfUkVOREVSX1RBUkdFVF9DT1VOVDsgIC8vIDgKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KK30KKworYm9vbCBSZW5kZXJl
cjExOjpjb3B5VG9SZW5kZXJUYXJnZXQoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqZGVzdCwg
VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc291cmNlKQoreworICAgIGlmIChzb3VyY2UgJiYg
ZGVzdCkKKyAgICB7CisgICAgICAgIFRleHR1cmVTdG9yYWdlMTFfMkQgKnNvdXJjZTExID0gVGV4
dHVyZVN0b3JhZ2UxMV8yRDo6bWFrZVRleHR1cmVTdG9yYWdlMTFfMkQoc291cmNlLT5nZXRTdG9y
YWdlSW5zdGFuY2UoKSk7CisgICAgICAgIFRleHR1cmVTdG9yYWdlMTFfMkQgKmRlc3QxMSA9IFRl
eHR1cmVTdG9yYWdlMTFfMkQ6Om1ha2VUZXh0dXJlU3RvcmFnZTExXzJEKGRlc3QtPmdldFN0b3Jh
Z2VJbnN0YW5jZSgpKTsKKworICAgICAgICBtRGV2aWNlQ29udGV4dC0+Q29weVJlc291cmNlKGRl
c3QxMS0+Z2V0QmFzZVRleHR1cmUoKSwgc291cmNlMTEtPmdldEJhc2VUZXh0dXJlKCkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
UmVuZGVyZXIxMTo6Y29weVRvUmVuZGVyVGFyZ2V0KFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3Vi
ZSAqZGVzdCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzb3VyY2UpCit7CisgICAgaWYg
KHNvdXJjZSAmJiBkZXN0KQorICAgIHsKKyAgICAgICAgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlICpz
b3VyY2UxMSA9IFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6bWFrZVRleHR1cmVTdG9yYWdlMTFfQ3Vi
ZShzb3VyY2UtPmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsKKyAgICAgICAgVGV4dHVyZVN0b3JhZ2Ux
MV9DdWJlICpkZXN0MTEgPSBUZXh0dXJlU3RvcmFnZTExX0N1YmU6Om1ha2VUZXh0dXJlU3RvcmFn
ZTExX0N1YmUoZGVzdC0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworCisgICAgICAgIG1EZXZpY2VD
b250ZXh0LT5Db3B5UmVzb3VyY2UoZGVzdDExLT5nZXRCYXNlVGV4dHVyZSgpLCBzb3VyY2UxMS0+
Z2V0QmFzZVRleHR1cmUoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJlcjExOjpjb3B5SW1hZ2UoZ2w6OkZyYW1lYnVm
ZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwgR0xlbnVt
IGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpzdG9yYWdlLCBHTGludCBs
ZXZlbCkKK3sKKyAgICBnbDo6UmVuZGVyYnVmZmVyICpjb2xvcmJ1ZmZlciA9IGZyYW1lYnVmZmVy
LT5nZXRSZWFkQ29sb3JidWZmZXIoKTsKKyAgICBpZiAoIWNvbG9yYnVmZmVyKQorICAgIHsKKyAg
ICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIGNvbG9yIGJ1ZmZlciBmcm9tIHRoZSBm
cmFtZSBidWZmZXIuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSwgZmFsc2UpOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDExICpzb3VyY2VSZW5kZXJUYXJn
ZXQgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKGNvbG9yYnVmZmVyLT5nZXRS
ZW5kZXJUYXJnZXQoKSk7CisgICAgaWYgKCFzb3VyY2VSZW5kZXJUYXJnZXQpCisgICAgeworICAg
ICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRhcmdldCBmcm9tIHRoZSBm
cmFtZSBidWZmZXIuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSwgZmFsc2UpOworICAgIH0KKworICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291cmNl
ID0gc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRTaGFkZXJSZXNvdXJjZVZpZXcoKTsKKyAgICBpZiAo
IXNvdXJjZSkKKyAgICB7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5k
ZXIgdGFyZ2V0IHZpZXcgZnJvbSB0aGUgcmVuZGVyIHRhcmdldC4iKTsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgVGV4dHVy
ZVN0b3JhZ2UxMV8yRCAqc3RvcmFnZTExID0gVGV4dHVyZVN0b3JhZ2UxMV8yRDo6bWFrZVRleHR1
cmVTdG9yYWdlMTFfMkQoc3RvcmFnZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgIGlmICgh
c3RvcmFnZTExKQorICAgIHsKKyAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIEVS
UigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSB0ZXh0dXJlIHN0b3JhZ2UgZnJvbSB0aGUgZGVzdGlu
YXRpb24uIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFs
c2UpOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDExICpkZXN0UmVuZGVyVGFyZ2V0ID0gUmVu
ZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShzdG9yYWdlMTEtPmdldFJlbmRlclRhcmdl
dChsZXZlbCkpOworICAgIGlmICghZGVzdFJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIHNv
dXJjZS0+UmVsZWFzZSgpOworICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgcmVu
ZGVyIHRhcmdldCBmcm9tIHRoZSBkZXN0aW5hdGlvbiBzdG9yYWdlLiIpOworICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICB9CisKKyAgICBJRDNE
MTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0ID0gZGVzdFJlbmRlclRhcmdldC0+Z2V0UmVuZGVyVGFy
Z2V0VmlldygpOworICAgIGlmICghZGVzdCkKKyAgICB7CisgICAgICAgIHNvdXJjZS0+UmVsZWFz
ZSgpOworICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRhcmdldCB2
aWV3IGZyb20gdGhlIGRlc3RpbmF0aW9uIHJlbmRlciB0YXJnZXQuIik7CisgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIGdsOjpS
ZWN0YW5nbGUgZGVzdFJlY3Q7CisgICAgZGVzdFJlY3QueCA9IHhvZmZzZXQ7CisgICAgZGVzdFJl
Y3QueSA9IHlvZmZzZXQ7CisgICAgZGVzdFJlY3Qud2lkdGggPSBzb3VyY2VSZWN0LndpZHRoOwor
ICAgIGRlc3RSZWN0LmhlaWdodCA9IHNvdXJjZVJlY3QuaGVpZ2h0OworCisgICAgYm9vbCByZXQg
PSBjb3B5VGV4dHVyZShzb3VyY2UsIHNvdXJjZVJlY3QsIHNvdXJjZVJlbmRlclRhcmdldC0+Z2V0
V2lkdGgoKSwgc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlc3QsIGRlc3RSZWN0LCBkZXN0UmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgp
LCBkZXN0UmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwgZGVzdEZvcm1hdCk7CisKKyAgICBzb3Vy
Y2UtPlJlbGVhc2UoKTsKKyAgICBkZXN0LT5SZWxlYXNlKCk7CisKKyAgICByZXR1cm4gcmV0Owor
fQorCitib29sIFJlbmRlcmVyMTE6OmNvcHlJbWFnZShnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVm
ZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
IFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSAqc3RvcmFnZSwgR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwpCit7CisgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqY29sb3JidWZmZXIgPSBmcmFtZWJ1
ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7CisgICAgaWYgKCFjb2xvcmJ1ZmZlcikKKyAgICB7
CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSBjb2xvciBidWZmZXIgZnJvbSB0
aGUgZnJhbWUgYnVmZmVyLiIpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlksIGZhbHNlKTsKKyAgICB9CisKKyAgICBSZW5kZXJUYXJnZXQxMSAqc291cmNlUmVuZGVy
VGFyZ2V0ID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShjb2xvcmJ1ZmZlci0+
Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAgIGlmICghc291cmNlUmVuZGVyVGFyZ2V0KQorICAgIHsK
KyAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIHJlbmRlciB0YXJnZXQgZnJvbSB0
aGUgZnJhbWUgYnVmZmVyLiIpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlksIGZhbHNlKTsKKyAgICB9CisKKyAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNv
dXJjZSA9IHNvdXJjZVJlbmRlclRhcmdldC0+Z2V0U2hhZGVyUmVzb3VyY2VWaWV3KCk7CisgICAg
aWYgKCFzb3VyY2UpCisgICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUg
cmVuZGVyIHRhcmdldCB2aWV3IGZyb20gdGhlIHJlbmRlciB0YXJnZXQuIik7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIFRl
eHR1cmVTdG9yYWdlMTFfQ3ViZSAqc3RvcmFnZTExID0gVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpt
YWtlVGV4dHVyZVN0b3JhZ2UxMV9DdWJlKHN0b3JhZ2UtPmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsK
KyAgICBpZiAoIXN0b3JhZ2UxMSkKKyAgICB7CisgICAgICAgIHNvdXJjZS0+UmVsZWFzZSgpOwor
ICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgdGV4dHVyZSBzdG9yYWdlIGZyb20g
dGhlIGRlc3RpbmF0aW9uLiIpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlksIGZhbHNlKTsKKyAgICB9CisKKyAgICBSZW5kZXJUYXJnZXQxMSAqZGVzdFJlbmRlclRh
cmdldCA9IFJlbmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEoc3RvcmFnZTExLT5nZXRS
ZW5kZXJUYXJnZXQodGFyZ2V0LCBsZXZlbCkpOworICAgIGlmICghZGVzdFJlbmRlclRhcmdldCkK
KyAgICB7CisgICAgICAgIHNvdXJjZS0+UmVsZWFzZSgpOworICAgICAgICBFUlIoIkZhaWxlZCB0
byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRhcmdldCBmcm9tIHRoZSBkZXN0aW5hdGlvbiBzdG9yYWdl
LiIpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsK
KyAgICB9CisKKyAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0ID0gZGVzdFJlbmRlclRh
cmdldC0+Z2V0UmVuZGVyVGFyZ2V0VmlldygpOworICAgIGlmICghZGVzdCkKKyAgICB7CisgICAg
ICAgIHNvdXJjZS0+UmVsZWFzZSgpOworICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0
aGUgcmVuZGVyIHRhcmdldCB2aWV3IGZyb20gdGhlIGRlc3RpbmF0aW9uIHJlbmRlciB0YXJnZXQu
Iik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOwor
ICAgIH0KKworICAgIGdsOjpSZWN0YW5nbGUgZGVzdFJlY3Q7CisgICAgZGVzdFJlY3QueCA9IHhv
ZmZzZXQ7CisgICAgZGVzdFJlY3QueSA9IHlvZmZzZXQ7CisgICAgZGVzdFJlY3Qud2lkdGggPSBz
b3VyY2VSZWN0LndpZHRoOworICAgIGRlc3RSZWN0LmhlaWdodCA9IHNvdXJjZVJlY3QuaGVpZ2h0
OworCisgICAgYm9vbCByZXQgPSBjb3B5VGV4dHVyZShzb3VyY2UsIHNvdXJjZVJlY3QsIHNvdXJj
ZVJlbmRlclRhcmdldC0+Z2V0V2lkdGgoKSwgc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QsIGRlc3RSZWN0LCBkZXN0UmVuZGVy
VGFyZ2V0LT5nZXRXaWR0aCgpLCBkZXN0UmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwgZGVzdEZv
cm1hdCk7CisKKyAgICBzb3VyY2UtPlJlbGVhc2UoKTsKKyAgICBkZXN0LT5SZWxlYXNlKCk7CisK
KyAgICByZXR1cm4gcmV0OworfQorCitib29sIFJlbmRlcmVyMTE6OmNvcHlUZXh0dXJlKElEM0Qx
MVNoYWRlclJlc291cmNlVmlldyAqc291cmNlLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VB
cmVhLCB1bnNpZ25lZCBpbnQgc291cmNlV2lkdGgsIHVuc2lnbmVkIGludCBzb3VyY2VIZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRl
c3QsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLCB1bnNpZ25lZCBpbnQgZGVzdFdpZHRo
LCB1bnNpZ25lZCBpbnQgZGVzdEhlaWdodCwgR0xlbnVtIGRlc3RGb3JtYXQpCit7CisgICAgSFJF
U1VMVCByZXN1bHQ7CisKKyAgICBpZiAoIW1Db3B5UmVzb3VyY2VzSW5pdGlhbGl6ZWQpCisgICAg
eworICAgICAgICBBU1NFUlQoIW1Db3B5VkIgJiYgIW1Db3B5U2FtcGxlciAmJiAhbUNvcHlJTCAm
JiAhbUNvcHlWUyAmJiAhbUNvcHlSR0JBUFMgJiYgIW1Db3B5UkdCUFMgJiYgIW1Db3B5THVtUFMg
JiYgIW1Db3B5THVtQWxwaGFQUyk7CisKKyAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgdmJEZXNj
OworICAgICAgICB2YkRlc2MuQnl0ZVdpZHRoID0gc2l6ZW9mKGQzZDExOjpQb3NpdGlvblRleENv
b3JkVmVydGV4KSAqIDQ7CisgICAgICAgIHZiRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RZTkFN
SUM7CisgICAgICAgIHZiRGVzYy5CaW5kRmxhZ3MgPSBEM0QxMV9CSU5EX1ZFUlRFWF9CVUZGRVI7
CisgICAgICAgIHZiRGVzYy5DUFVBY2Nlc3NGbGFncyA9IEQzRDExX0NQVV9BQ0NFU1NfV1JJVEU7
CisgICAgICAgIHZiRGVzYy5NaXNjRmxhZ3MgPSAwOworICAgICAgICB2YkRlc2MuU3RydWN0dXJl
Qnl0ZVN0cmlkZSA9IDA7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlQnVmZmVy
KCZ2YkRlc2MsIE5VTEwsICZtQ29weVZCKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1
bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ29weVZCLCAiUmVuZGVyZXIxMSBj
b3B5IHRleHR1cmUgdmVydGV4IGJ1ZmZlciIpOworCisgICAgICAgIEQzRDExX1NBTVBMRVJfREVT
QyBzYW1wbGVyRGVzYzsKKyAgICAgICAgc2FtcGxlckRlc2MuRmlsdGVyID0gRDNEMTFfRklMVEVS
X01JTl9NQUdfTUlQX0xJTkVBUjsKKyAgICAgICAgc2FtcGxlckRlc2MuQWRkcmVzc1UgPSBEM0Qx
MV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7CisgICAgICAgIHNhbXBsZXJEZXNjLkFkZHJlc3NWID0g
RDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgICAgICBzYW1wbGVyRGVzYy5BZGRyZXNz
VyA9IEQzRDExX1RFWFRVUkVfQUREUkVTU19DTEFNUDsKKyAgICAgICAgc2FtcGxlckRlc2MuTWlw
TE9EQmlhcyA9IDAuMGY7CisgICAgICAgIHNhbXBsZXJEZXNjLk1heEFuaXNvdHJvcHkgPSAwOwor
ICAgICAgICBzYW1wbGVyRGVzYy5Db21wYXJpc29uRnVuYyA9IEQzRDExX0NPTVBBUklTT05fTkVW
RVI7CisgICAgICAgIHNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzBdID0gMC4wZjsKKyAgICAgICAg
c2FtcGxlckRlc2MuQm9yZGVyQ29sb3JbMV0gPSAwLjBmOworICAgICAgICBzYW1wbGVyRGVzYy5C
b3JkZXJDb2xvclsyXSA9IDAuMGY7CisgICAgICAgIHNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzNd
ID0gMC4wZjsKKyAgICAgICAgc2FtcGxlckRlc2MuTWluTE9EID0gMC4wZjsKKyAgICAgICAgc2Ft
cGxlckRlc2MuTWF4TE9EID0gMC4wZjsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVh
dGVTYW1wbGVyU3RhdGUoJnNhbXBsZXJEZXNjLCAmbUNvcHlTYW1wbGVyKTsKKyAgICAgICAgQVNT
RVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ29w
eVNhbXBsZXIsICJSZW5kZXJlcjExIGNvcHkgc2FtcGxlciIpOworCisgICAgICAgIEQzRDExX0lO
UFVUX0VMRU1FTlRfREVTQyBxdWFkTGF5b3V0W10gPQorICAgICAgICB7CisgICAgICAgICAgICB7
ICJQT1NJVElPTiIsIDAsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgMCwgMCwgRDNEMTFfSU5Q
VVRfUEVSX1ZFUlRFWF9EQVRBLCAwIH0sCisgICAgICAgICAgICB7ICJURVhDT09SRCIsIDAsIERY
R0lfRk9STUFUX1IzMkczMl9GTE9BVCwgMCwgOCwgRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRB
LCAwIH0sCisgICAgICAgIH07CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlSW5w
dXRMYXlvdXQocXVhZExheW91dCwgMiwgZ19WU19QYXNzdGhyb3VnaCwgc2l6ZW9mKGdfVlNfUGFz
c3Rocm91Z2gpLCAmbUNvcHlJTCk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7
CisgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUNvcHlJTCwgIlJlbmRlcmVyMTEgY29weSB0
ZXh0dXJlIGlucHV0IGxheW91dCIpOworCisgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0
ZVZlcnRleFNoYWRlcihnX1ZTX1Bhc3N0aHJvdWdoLCBzaXplb2YoZ19WU19QYXNzdGhyb3VnaCks
IE5VTEwsICZtQ29weVZTKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAg
ICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ29weVZTLCAiUmVuZGVyZXIxMSBjb3B5IHRleHR1
cmUgdmVydGV4IHNoYWRlciIpOworCisgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVBp
eGVsU2hhZGVyKGdfUFNfUGFzc3Rocm91Z2hSR0JBLCBzaXplb2YoZ19QU19QYXNzdGhyb3VnaFJH
QkEpLCBOVUxMLCAmbUNvcHlSR0JBUFMpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3Vs
dCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1Db3B5UkdCQVBTLCAiUmVuZGVyZXIx
MSBjb3B5IHRleHR1cmUgUkdCQSBwaXhlbCBzaGFkZXIiKTsKKworICAgICAgICByZXN1bHQgPSBt
RGV2aWNlLT5DcmVhdGVQaXhlbFNoYWRlcihnX1BTX1Bhc3N0aHJvdWdoUkdCLCBzaXplb2YoZ19Q
U19QYXNzdGhyb3VnaFJHQiksIE5VTEwsICZtQ29weVJHQlBTKTsKKyAgICAgICAgQVNTRVJUKFNV
Q0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ29weVJHQlBT
LCAiUmVuZGVyZXIxMSBjb3B5IHRleHR1cmUgUkdCIHBpeGVsIHNoYWRlciIpOworCisgICAgICAg
IHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVBpeGVsU2hhZGVyKGdfUFNfUGFzc3Rocm91Z2hMdW0s
IHNpemVvZihnX1BTX1Bhc3N0aHJvdWdoTHVtKSwgTlVMTCwgJm1Db3B5THVtUFMpOworICAgICAg
ICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1l
KG1Db3B5THVtUFMsICJSZW5kZXJlcjExIGNvcHkgdGV4dHVyZSBsdW1pbmFuY2UgcGl4ZWwgc2hh
ZGVyIik7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUGl4ZWxTaGFkZXIoZ19Q
U19QYXNzdGhyb3VnaEx1bUFscGhhLCBzaXplb2YoZ19QU19QYXNzdGhyb3VnaEx1bUFscGhhKSwg
TlVMTCwgJm1Db3B5THVtQWxwaGFQUyk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0
KSk7CisgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUNvcHlMdW1BbHBoYVBTLCAiUmVuZGVy
ZXIxMSBjb3B5IHRleHR1cmUgbHVtaW5hbmNlIGFscGhhIHBpeGVsIHNoYWRlciIpOworCisgICAg
ICAgIG1Db3B5UmVzb3VyY2VzSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KKworICAgIC8vIFZl
cmlmeSB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmVhIHNpemVzCisgICAgaWYgKHNvdXJj
ZUFyZWEueCA8IDAgfHwgc291cmNlQXJlYS54ICsgc291cmNlQXJlYS53aWR0aCA+IHN0YXRpY19j
YXN0PGludD4oc291cmNlV2lkdGgpIHx8CisgICAgICAgIHNvdXJjZUFyZWEueSA8IDAgfHwgc291
cmNlQXJlYS55ICsgc291cmNlQXJlYS5oZWlnaHQgPiBzdGF0aWNfY2FzdDxpbnQ+KHNvdXJjZUhl
aWdodCkgfHwKKyAgICAgICAgZGVzdEFyZWEueCA8IDAgfHwgZGVzdEFyZWEueCArIGRlc3RBcmVh
LndpZHRoID4gc3RhdGljX2Nhc3Q8aW50PihkZXN0V2lkdGgpIHx8CisgICAgICAgIGRlc3RBcmVh
LnkgPCAwIHx8IGRlc3RBcmVhLnkgKyBkZXN0QXJlYS5oZWlnaHQgPiBzdGF0aWNfY2FzdDxpbnQ+
KGRlc3RIZWlnaHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X1ZBTFVFLCBmYWxzZSk7CisgICAgfQorCisgICAgLy8gU2V0IHZlcnRpY2VzCisgICAgRDNEMTFf
TUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZFJlc291cmNlOworICAgIHJlc3VsdCA9IG1EZXZpY2VD
b250ZXh0LT5NYXAobUNvcHlWQiwgMCwgRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXBw
ZWRSZXNvdXJjZSk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJS
KCJGYWlsZWQgdG8gbWFwIHZlcnRleCBidWZmZXIgZm9yIHRleHR1cmUgY29weSwgSFJFU1VMVDog
MHglWC4iLCByZXN1bHQpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlksIGZhbHNlKTsKKyAgICB9CisKKyAgICBkM2QxMTo6UG9zaXRpb25UZXhDb29yZFZlcnRleCAq
dmVydGljZXMgPSBzdGF0aWNfY2FzdDxkM2QxMTo6UG9zaXRpb25UZXhDb29yZFZlcnRleCo+KG1h
cHBlZFJlc291cmNlLnBEYXRhKTsKKworICAgIC8vIENyZWF0ZSBhIHF1YWQgaW4gaG9tb2dlbmVv
dXMgY29vcmRpbmF0ZXMKKyAgICBmbG9hdCB4MSA9IChkZXN0QXJlYS54IC8gZmxvYXQoZGVzdFdp
ZHRoKSkgKiAyLjBmIC0gMS4wZjsKKyAgICBmbG9hdCB5MSA9ICgoZGVzdEhlaWdodCAtIGRlc3RB
cmVhLnkgLSBkZXN0QXJlYS5oZWlnaHQpIC8gZmxvYXQoZGVzdEhlaWdodCkpICogMi4wZiAtIDEu
MGY7CisgICAgZmxvYXQgeDIgPSAoKGRlc3RBcmVhLnggKyBkZXN0QXJlYS53aWR0aCkgLyBmbG9h
dChkZXN0V2lkdGgpKSAqIDIuMGYgLSAxLjBmOworICAgIGZsb2F0IHkyID0gKChkZXN0SGVpZ2h0
IC0gZGVzdEFyZWEueSkgLyBmbG9hdChkZXN0SGVpZ2h0KSkgKiAyLjBmIC0gMS4wZjsKKworICAg
IGZsb2F0IHUxID0gc291cmNlQXJlYS54IC8gZmxvYXQoc291cmNlV2lkdGgpOworICAgIGZsb2F0
IHYxID0gc291cmNlQXJlYS55IC8gZmxvYXQoc291cmNlSGVpZ2h0KTsKKyAgICBmbG9hdCB1MiA9
IChzb3VyY2VBcmVhLnggKyBzb3VyY2VBcmVhLndpZHRoKSAvIGZsb2F0KHNvdXJjZVdpZHRoKTsK
KyAgICBmbG9hdCB2MiA9IChzb3VyY2VBcmVhLnkgKyBzb3VyY2VBcmVhLmhlaWdodCkgLyBmbG9h
dChzb3VyY2VIZWlnaHQpOworCisgICAgZDNkMTE6OlNldFBvc2l0aW9uVGV4Q29vcmRWZXJ0ZXgo
JnZlcnRpY2VzWzBdLCB4MSwgeTEsIHUxLCB2Mik7CisgICAgZDNkMTE6OlNldFBvc2l0aW9uVGV4
Q29vcmRWZXJ0ZXgoJnZlcnRpY2VzWzFdLCB4MSwgeTIsIHUxLCB2MSk7CisgICAgZDNkMTE6OlNl
dFBvc2l0aW9uVGV4Q29vcmRWZXJ0ZXgoJnZlcnRpY2VzWzJdLCB4MiwgeTEsIHUyLCB2Mik7Cisg
ICAgZDNkMTE6OlNldFBvc2l0aW9uVGV4Q29vcmRWZXJ0ZXgoJnZlcnRpY2VzWzNdLCB4MiwgeTIs
IHUyLCB2MSk7CisKKyAgICBtRGV2aWNlQ29udGV4dC0+VW5tYXAobUNvcHlWQiwgMCk7CisKKyAg
ICBzdGF0aWMgVUlOVCBzdHJpZGUgPSBzaXplb2YoZDNkMTE6OlBvc2l0aW9uVGV4Q29vcmRWZXJ0
ZXgpOworICAgIHN0YXRpYyBVSU5UIHN0YXJ0SWR4ID0gMDsKKyAgICBtRGV2aWNlQ29udGV4dC0+
SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIDEsICZtQ29weVZCLCAmc3RyaWRlLCAmc3RhcnRJZHgpOwor
CisgICAgLy8gQXBwbHkgc3RhdGUKKyAgICBtRGV2aWNlQ29udGV4dC0+T01TZXRCbGVuZFN0YXRl
KE5VTEwsIE5VTEwsIDB4RkZGRkZGRik7CisgICAgbURldmljZUNvbnRleHQtPk9NU2V0RGVwdGhT
dGVuY2lsU3RhdGUoTlVMTCwgMHhGRkZGRkZGRik7CisgICAgbURldmljZUNvbnRleHQtPlJTU2V0
U3RhdGUoTlVMTCk7CisKKyAgICAvLyBBcHBseSBzaGFkZXJzCisgICAgbURldmljZUNvbnRleHQt
PklBU2V0SW5wdXRMYXlvdXQobUNvcHlJTCk7CisgICAgbURldmljZUNvbnRleHQtPklBU2V0UHJp
bWl0aXZlVG9wb2xvZ3koRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRVNUUklQKTsKKyAg
ICBtRGV2aWNlQ29udGV4dC0+VlNTZXRTaGFkZXIobUNvcHlWUywgTlVMTCwgMCk7CisKKyAgICBJ
RDNEMTFQaXhlbFNoYWRlciAqcHMgPSBOVUxMOworICAgIHN3aXRjaChkZXN0Rm9ybWF0KQorICAg
IHsKKyAgICAgIGNhc2UgR0xfUkdCQTogICAgICAgICAgICBwcyA9IG1Db3B5UkdCQVBTOyAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjogICAgICAgICAgICAgcHMgPSBtQ29weVJHQlBTOyAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTFBIQTogICAgICAgICAgIHBzID0gbUNvcHlSR0JB
UFM7ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6ICAgICAgICBwcyA9IG1Db3B5
UkdCQVBTOyAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTogICAgICAgcHMgPSBt
Q29weUx1bVBTOyAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6IHBz
ID0gbUNvcHlMdW1BbHBoYVBTOyBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7
ICBwcyA9IE5VTEw7ICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbURldmljZUNvbnRl
eHQtPlBTU2V0U2hhZGVyKHBzLCBOVUxMLCAwKTsKKyAgICBtRGV2aWNlQ29udGV4dC0+R1NTZXRT
aGFkZXIoTlVMTCwgTlVMTCwgMCk7CisKKyAgICAvLyBVbnNldCB0aGUgY3VycmVudGx5IGJvdW5k
IHNoYWRlciByZXNvdXJjZSB0byBhdm9pZCBjb25mbGljdHMKKyAgICBzdGF0aWMgSUQzRDExU2hh
ZGVyUmVzb3VyY2VWaWV3ICpjb25zdCBudWxsU1JWID0gTlVMTDsKKyAgICBtRGV2aWNlQ29udGV4
dC0+UFNTZXRTaGFkZXJSZXNvdXJjZXMoMCwgMSwgJm51bGxTUlYpOworCisgICAgLy8gQXBwbHkg
cmVuZGVyIHRhcmdldAorICAgIHNldE9uZVRpbWVSZW5kZXJUYXJnZXQoZGVzdCk7CisKKyAgICAv
LyBTZXQgdGhlIHZpZXdwb3J0CisgICAgRDNEMTFfVklFV1BPUlQgdmlld3BvcnQ7CisgICAgdmll
d3BvcnQuVG9wTGVmdFggPSAwOworICAgIHZpZXdwb3J0LlRvcExlZnRZID0gMDsKKyAgICB2aWV3
cG9ydC5XaWR0aCA9IGRlc3RXaWR0aDsKKyAgICB2aWV3cG9ydC5IZWlnaHQgPSBkZXN0SGVpZ2h0
OworICAgIHZpZXdwb3J0Lk1pbkRlcHRoID0gMC4wZjsKKyAgICB2aWV3cG9ydC5NYXhEZXB0aCA9
IDEuMGY7CisgICAgbURldmljZUNvbnRleHQtPlJTU2V0Vmlld3BvcnRzKDEsICZ2aWV3cG9ydCk7
CisKKyAgICAvLyBBcHBseSB0ZXh0dXJlcworICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldFNoYWRl
clJlc291cmNlcygwLCAxLCAmc291cmNlKTsKKyAgICBtRGV2aWNlQ29udGV4dC0+UFNTZXRTYW1w
bGVycygwLCAxLCAmbUNvcHlTYW1wbGVyKTsKKworICAgIC8vIERyYXcgdGhlIHF1YWQKKyAgICBt
RGV2aWNlQ29udGV4dC0+RHJhdyg0LCAwKTsKKworICAgIC8vIFVuYmluZCB0ZXh0dXJlcyBhbmQg
cmVuZGVyIHRhcmdldHMgYW5kIHZlcnRleCBidWZmZXIKKyAgICBtRGV2aWNlQ29udGV4dC0+UFNT
ZXRTaGFkZXJSZXNvdXJjZXMoMCwgMSwgJm51bGxTUlYpOworCisgICAgdW5hcHBseVJlbmRlclRh
cmdldHMoKTsKKworICAgIFVJTlQgemVybyA9IDA7CisgICAgSUQzRDExQnVmZmVyICpjb25zdCBu
dWxsQnVmZmVyID0gTlVMTDsKKyAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJz
KDAsIDEsICZudWxsQnVmZmVyLCAmemVybywgJnplcm8pOworCisgICAgbWFya0FsbFN0YXRlRGly
dHkoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbmRlcmVyMTE6OnVuYXBwbHlS
ZW5kZXJUYXJnZXRzKCkKK3sKKyAgICBzZXRPbmVUaW1lUmVuZGVyVGFyZ2V0KE5VTEwpOworfQor
Cit2b2lkIFJlbmRlcmVyMTE6OnNldE9uZVRpbWVSZW5kZXJUYXJnZXQoSUQzRDExUmVuZGVyVGFy
Z2V0VmlldyAqcmVuZGVyVGFyZ2V0VmlldykKK3sKKyAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3
ICpydHZBcnJheVtnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSU10gPSB7TlVMTH07
CisKKyAgICBydHZBcnJheVswXSA9IHJlbmRlclRhcmdldFZpZXc7CisKKyAgICBtRGV2aWNlQ29u
dGV4dC0+T01TZXRSZW5kZXJUYXJnZXRzKGdldE1heFJlbmRlclRhcmdldHMoKSwgcnR2QXJyYXks
IE5VTEwpOworCisgICAgLy8gRG8gbm90IHByZXNlcnZlIHRoZSBzZXJpYWwgZm9yIHRoaXMgb25l
LXRpbWUtdXNlIHJlbmRlciB0YXJnZXQKKyAgICBmb3IgKHVuc2lnbmVkIGludCBydEluZGV4ID0g
MDsgcnRJbmRleCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTOyBydEluZGV4
KyspCisgICAgeworICAgICAgICBtQXBwbGllZFJlbmRlclRhcmdldFNlcmlhbHNbcnRJbmRleF0g
PSAwOworICAgIH0KK30KKworUmVuZGVyVGFyZ2V0ICpSZW5kZXJlcjExOjpjcmVhdGVSZW5kZXJU
YXJnZXQoU3dhcENoYWluICpzd2FwQ2hhaW4sIGJvb2wgZGVwdGgpCit7CisgICAgU3dhcENoYWlu
MTEgKnN3YXBDaGFpbjExID0gU3dhcENoYWluMTE6Om1ha2VTd2FwQ2hhaW4xMShzd2FwQ2hhaW4p
OworICAgIFJlbmRlclRhcmdldDExICpyZW5kZXJUYXJnZXQgPSBOVUxMOworCisgICAgaWYgKGRl
cHRoKQorICAgIHsKKyAgICAgICAgLy8gTm90ZTogZGVwdGggc3RlbmNpbCBtYXkgYmUgTlVMTCBm
b3IgMCBzaXplZCBzdXJmYWNlcworICAgICAgICByZW5kZXJUYXJnZXQgPSBuZXcgUmVuZGVyVGFy
Z2V0MTEodGhpcywgc3dhcENoYWluMTEtPmdldERlcHRoU3RlbmNpbCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dhcENoYWluMTEtPmdldERlcHRoU3RlbmNp
bFRleHR1cmUoKSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN3YXBDaGFpbjExLT5nZXRXaWR0aCgpLCBzd2FwQ2hhaW4xMS0+Z2V0SGVpZ2h0KCkpOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBOb3RlOiByZW5kZXIgdGFyZ2V0IG1h
eSBiZSBOVUxMIGZvciAwIHNpemVkIHN1cmZhY2VzCisgICAgICAgIHJlbmRlclRhcmdldCA9IG5l
dyBSZW5kZXJUYXJnZXQxMSh0aGlzLCBzd2FwQ2hhaW4xMS0+Z2V0UmVuZGVyVGFyZ2V0KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwQ2hhaW4xMS0+Z2V0
T2Zmc2NyZWVuVGV4dHVyZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3dhcENoYWluMTEtPmdldFJlbmRlclRhcmdldFNoYWRlclJlc291cmNlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwQ2hhaW4xMS0+Z2V0V2lk
dGgoKSwgc3dhcENoYWluMTEtPmdldEhlaWdodCgpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlbmRl
clRhcmdldDsKK30KKworUmVuZGVyVGFyZ2V0ICpSZW5kZXJlcjExOjpjcmVhdGVSZW5kZXJUYXJn
ZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMs
IGJvb2wgZGVwdGgpCit7CisgICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldCA9IG5ldyBS
ZW5kZXJUYXJnZXQxMSh0aGlzLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHNhbXBsZXMsIGRlcHRo
KTsKKyAgICByZXR1cm4gcmVuZGVyVGFyZ2V0OworfQorCitTaGFkZXJFeGVjdXRhYmxlICpSZW5k
ZXJlcjExOjpsb2FkRXhlY3V0YWJsZShjb25zdCB2b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0
aCwgcng6OlNoYWRlclR5cGUgdHlwZSkKK3sKKyAgICBTaGFkZXJFeGVjdXRhYmxlMTEgKmV4ZWN1
dGFibGUgPSBOVUxMOworCisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgIGNhc2Ugcng6
OlNIQURFUl9WRVJURVg6CisgICAgICAgIHsKKyAgICAgICAgICAgIElEM0QxMVZlcnRleFNoYWRl
ciAqdnNoYWRlciA9IE5VTEw7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2Ut
PkNyZWF0ZVZlcnRleFNoYWRlcihmdW5jdGlvbiwgbGVuZ3RoLCBOVUxMLCAmdnNoYWRlcik7Cisg
ICAgICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgICAgICAgICBpZiAo
dnNoYWRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gbmV3
IFNoYWRlckV4ZWN1dGFibGUxMShmdW5jdGlvbiwgbGVuZ3RoLCB2c2hhZGVyKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ugcng6OlNIQURFUl9Q
SVhFTDoKKyAgICAgICAgeworICAgICAgICAgICAgSUQzRDExUGl4ZWxTaGFkZXIgKnBzaGFkZXIg
PSBOVUxMOworICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVQaXhl
bFNoYWRlcihmdW5jdGlvbiwgbGVuZ3RoLCBOVUxMLCAmcHNoYWRlcik7CisgICAgICAgICAgICBB
U1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgICAgICAgICBpZiAocHNoYWRlcikKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gbmV3IFNoYWRlckV4ZWN1
dGFibGUxMShmdW5jdGlvbiwgbGVuZ3RoLCBwc2hhZGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ugcng6OlNIQURFUl9HRU9NRVRSWToKKyAg
ICAgICAgeworICAgICAgICAgICAgSUQzRDExR2VvbWV0cnlTaGFkZXIgKmdzaGFkZXIgPSBOVUxM
OworICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVHZW9tZXRyeVNo
YWRlcihmdW5jdGlvbiwgbGVuZ3RoLCBOVUxMLCAmZ3NoYWRlcik7CisgICAgICAgICAgICBBU1NF
UlQoU1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgICAgICAgICBpZiAoZ3NoYWRlcikKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gbmV3IFNoYWRlckV4ZWN1dGFi
bGUxMShmdW5jdGlvbiwgbGVuZ3RoLCBnc2hhZGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBleGVjdXRhYmxlOworfQorCitT
aGFkZXJFeGVjdXRhYmxlICpSZW5kZXJlcjExOjpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZv
TG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpzaGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0eXBl
KQoreworICAgIGNvbnN0IGNoYXIgKnByb2ZpbGUgPSBOVUxMOworCisgICAgc3dpdGNoICh0eXBl
KQorICAgIHsKKyAgICAgIGNhc2Ugcng6OlNIQURFUl9WRVJURVg6CisgICAgICAgIHByb2ZpbGUg
PSAidnNfNF8wIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIHJ4OjpTSEFERVJfUElYRUw6
CisgICAgICAgIHByb2ZpbGUgPSAicHNfNF8wIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IHJ4OjpTSEFERVJfR0VPTUVUUlk6CisgICAgICAgIHByb2ZpbGUgPSAiZ3NfNF8wIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBJRDNEQmxvYiAqYmluYXJ5ID0gKElEM0RCbG9i
Kiljb21waWxlVG9CaW5hcnkoaW5mb0xvZywgc2hhZGVySExTTCwgcHJvZmlsZSwgRDNEQ09NUElM
RV9PUFRJTUlaQVRJT05fTEVWRUwwLCBmYWxzZSk7CisgICAgaWYgKCFiaW5hcnkpCisgICAgICAg
IHJldHVybiBOVUxMOworCisgICAgU2hhZGVyRXhlY3V0YWJsZSAqZXhlY3V0YWJsZSA9IGxvYWRF
eGVjdXRhYmxlKChEV09SRCAqKWJpbmFyeS0+R2V0QnVmZmVyUG9pbnRlcigpLCBiaW5hcnktPkdl
dEJ1ZmZlclNpemUoKSwgdHlwZSk7CisgICAgYmluYXJ5LT5SZWxlYXNlKCk7CisKKyAgICByZXR1
cm4gZXhlY3V0YWJsZTsKK30KKworVmVydGV4QnVmZmVyICpSZW5kZXJlcjExOjpjcmVhdGVWZXJ0
ZXhCdWZmZXIoKQoreworICAgIHJldHVybiBuZXcgVmVydGV4QnVmZmVyMTEodGhpcyk7Cit9CisK
K0luZGV4QnVmZmVyICpSZW5kZXJlcjExOjpjcmVhdGVJbmRleEJ1ZmZlcigpCit7CisgICAgcmV0
dXJuIG5ldyBJbmRleEJ1ZmZlcjExKHRoaXMpOworfQorCitCdWZmZXJTdG9yYWdlICpSZW5kZXJl
cjExOjpjcmVhdGVCdWZmZXJTdG9yYWdlKCkKK3sKKyAgICByZXR1cm4gbmV3IEJ1ZmZlclN0b3Jh
Z2UxMSh0aGlzKTsKK30KKworUXVlcnlJbXBsICpSZW5kZXJlcjExOjpjcmVhdGVRdWVyeShHTGVu
dW0gdHlwZSkKK3sKKyAgICByZXR1cm4gbmV3IFF1ZXJ5MTEodGhpcywgdHlwZSk7Cit9CisKK0Zl
bmNlSW1wbCAqUmVuZGVyZXIxMTo6Y3JlYXRlRmVuY2UoKQoreworICAgIHJldHVybiBuZXcgRmVu
Y2UxMSh0aGlzKTsKK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRSZW5kZXJUYXJnZXRSZXNvdXJj
ZShnbDo6UmVuZGVyYnVmZmVyICpjb2xvcmJ1ZmZlciwgdW5zaWduZWQgaW50ICpzdWJyZXNvdXJj
ZUluZGV4LCBJRDNEMTFUZXh0dXJlMkQgKipyZXNvdXJjZSkKK3sKKyAgICBBU1NFUlQoY29sb3Ji
dWZmZXIgIT0gTlVMTCk7CisKKyAgICBSZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0gUmVu
ZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShjb2xvcmJ1ZmZlci0+Z2V0UmVuZGVyVGFy
Z2V0KCkpOworICAgIGlmIChyZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICAqc3VicmVzb3Vy
Y2VJbmRleCA9IHJlbmRlclRhcmdldC0+Z2V0U3VicmVzb3VyY2VJbmRleCgpOworCisgICAgICAg
IElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmNvbG9yQnVmZmVyUlRWID0gcmVuZGVyVGFyZ2V0LT5n
ZXRSZW5kZXJUYXJnZXRWaWV3KCk7CisgICAgICAgIGlmIChjb2xvckJ1ZmZlclJUVikKKyAgICAg
ICAgeworICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKnRleHR1cmVSZXNvdXJjZSA9IE5VTEw7
CisgICAgICAgICAgICBjb2xvckJ1ZmZlclJUVi0+R2V0UmVzb3VyY2UoJnRleHR1cmVSZXNvdXJj
ZSk7CisgICAgICAgICAgICBjb2xvckJ1ZmZlclJUVi0+UmVsZWFzZSgpOworCisgICAgICAgICAg
ICBpZiAodGV4dHVyZVJlc291cmNlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEhS
RVNVTFQgcmVzdWx0ID0gdGV4dHVyZVJlc291cmNlLT5RdWVyeUludGVyZmFjZShJSURfSUQzRDEx
VGV4dHVyZTJELCAodm9pZCoqKXJlc291cmNlKTsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlUmVz
b3VyY2UtPlJlbGVhc2UoKTsKKworICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBleHRyYWN0IHRoZSBJRDNEMTFU
ZXh0dXJlMkQgZnJvbSB0aGUgcmVuZGVyIHRhcmdldCByZXNvdXJjZSwgIgorICAgICAgICAgICAg
ICAgICAgICAgICAgIkhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgUmVuZGVyZXIxMTo6YmxpdFJlY3QoZ2w6OkZyYW1lYnVmZmVyICpyZWFkVGFyZ2V0
LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZyZWFkUmVjdCwgZ2w6OkZyYW1lYnVmZmVyICpkcmF3VGFy
Z2V0LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZkcmF3UmVjdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBibGl0UmVuZGVyVGFyZ2V0LCBib29sIGJsaXREZXB0aFN0ZW5jaWwpCit7Cisg
ICAgaWYgKGJsaXRSZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICBnbDo6UmVuZGVyYnVmZmVy
ICpyZWFkQnVmZmVyID0gcmVhZFRhcmdldC0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7CisKKyAgICAg
ICAgaWYgKCFyZWFkQnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkZhaWxlZCB0
byByZXRyaWV2ZSB0aGUgcmVhZCBidWZmZXIgZnJvbSB0aGUgcmVhZCBmcmFtZWJ1ZmZlci4iKTsK
KyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOwor
ICAgICAgICB9CisKKyAgICAgICAgUmVuZGVyVGFyZ2V0ICpyZWFkUmVuZGVyVGFyZ2V0ID0gcmVh
ZEJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQg
Y29sb3JBdHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgZ2w6OklNUExFTUVOVEFUSU9O
X01BWF9EUkFXX0JVRkZFUlM7IGNvbG9yQXR0YWNobWVudCsrKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoZHJhd1RhcmdldC0+aXNFbmFibGVkQ29sb3JBdHRhY2htZW50KGNvbG9yQXR0YWNo
bWVudCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZlciAq
ZHJhd0J1ZmZlciA9IGRyYXdUYXJnZXQtPmdldENvbG9yYnVmZmVyKGNvbG9yQXR0YWNobWVudCk7
CisKKyAgICAgICAgICAgICAgICBpZiAoIWRyYXdCdWZmZXIpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgZHJhdyBidWZm
ZXIgZnJvbSB0aGUgZHJhdyBmcmFtZWJ1ZmZlci4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgUmVuZGVyVGFyZ2V0ICpkcmF3UmVuZGVyVGFyZ2V0ID0gZHJh
d0J1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWJsaXRS
ZW5kZXJidWZmZXJSZWN0KHJlYWRSZWN0LCBkcmF3UmVjdCwgcmVhZFJlbmRlclRhcmdldCwgZHJh
d1JlbmRlclRhcmdldCwgZmFsc2UpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmIChibGl0RGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAg
ICAgZ2w6OlJlbmRlcmJ1ZmZlciAqcmVhZEJ1ZmZlciA9IHJlYWRUYXJnZXQtPmdldERlcHRoT3JT
dGVuY2lsYnVmZmVyKCk7CisgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKmRyYXdCdWZmZXIgPSBk
cmF3VGFyZ2V0LT5nZXREZXB0aE9yU3RlbmNpbGJ1ZmZlcigpOworCisgICAgICAgIGlmICghcmVh
ZEJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUg
dGhlIHJlYWQgZGVwdGgtc3RlbmNpbCBidWZmZXIgZnJvbSB0aGUgcmVhZCBmcmFtZWJ1ZmZlci4i
KTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2Up
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFkcmF3QnVmZmVyKQorICAgICAgICB7CisgICAg
ICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgZHJhdyBkZXB0aC1zdGVuY2lsIGJ1
ZmZlciBmcm9tIHRoZSBkcmF3IGZyYW1lYnVmZmVyLiIpOworICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBS
ZW5kZXJUYXJnZXQgKnJlYWRSZW5kZXJUYXJnZXQgPSByZWFkQnVmZmVyLT5nZXREZXB0aFN0ZW5j
aWwoKTsKKyAgICAgICAgUmVuZGVyVGFyZ2V0ICpkcmF3UmVuZGVyVGFyZ2V0ID0gZHJhd0J1ZmZl
ci0+Z2V0RGVwdGhTdGVuY2lsKCk7CisKKyAgICAgICAgaWYgKCFibGl0UmVuZGVyYnVmZmVyUmVj
dChyZWFkUmVjdCwgZHJhd1JlY3QsIHJlYWRSZW5kZXJUYXJnZXQsIGRyYXdSZW5kZXJUYXJnZXQs
IHRydWUpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZW5kZXJlcjExOjpyZWFkUGl4
ZWxzKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG91dHB1dFBpdGNoLCBib29sIHBhY2tS
ZXZlcnNlUm93T3JkZXIsIEdMaW50IHBhY2tBbGlnbm1lbnQsIHZvaWQqIHBpeGVscykKK3sKKyAg
ICBJRDNEMTFUZXh0dXJlMkQgKmNvbG9yQnVmZmVyVGV4dHVyZSA9IE5VTEw7CisgICAgdW5zaWdu
ZWQgaW50IHN1YnJlc291cmNlSW5kZXggPSAwOworCisgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqY29s
b3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7CisKKyAgICBpZiAo
Y29sb3JidWZmZXIgJiYgZ2V0UmVuZGVyVGFyZ2V0UmVzb3VyY2UoY29sb3JidWZmZXIsICZzdWJy
ZXNvdXJjZUluZGV4LCAmY29sb3JCdWZmZXJUZXh0dXJlKSkKKyAgICB7CisgICAgICAgIGdsOjpS
ZWN0YW5nbGUgYXJlYTsKKyAgICAgICAgYXJlYS54ID0geDsKKyAgICAgICAgYXJlYS55ID0geTsK
KyAgICAgICAgYXJlYS53aWR0aCA9IHdpZHRoOworICAgICAgICBhcmVhLmhlaWdodCA9IGhlaWdo
dDsKKworICAgICAgICByZWFkVGV4dHVyZURhdGEoY29sb3JCdWZmZXJUZXh0dXJlLCBzdWJyZXNv
dXJjZUluZGV4LCBhcmVhLCBmb3JtYXQsIHR5cGUsIG91dHB1dFBpdGNoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgcGFja1JldmVyc2VSb3dPcmRlciwgcGFja0FsaWdubWVudCwgcGl4ZWxzKTsK
KworICAgICAgICBjb2xvckJ1ZmZlclRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgY29sb3JC
dWZmZXJUZXh0dXJlID0gTlVMTDsKKyAgICB9Cit9CisKK0ltYWdlICpSZW5kZXJlcjExOjpjcmVh
dGVJbWFnZSgpCit7CisgICAgcmV0dXJuIG5ldyBJbWFnZTExKCk7Cit9CisKK3ZvaWQgUmVuZGVy
ZXIxMTo6Z2VuZXJhdGVNaXBtYXAoSW1hZ2UgKmRlc3QsIEltYWdlICpzcmMpCit7CisgICAgSW1h
Z2UxMSAqZGVzdDExID0gSW1hZ2UxMTo6bWFrZUltYWdlMTEoZGVzdCk7CisgICAgSW1hZ2UxMSAq
c3JjMTEgPSBJbWFnZTExOjptYWtlSW1hZ2UxMShzcmMpOworICAgIEltYWdlMTE6OmdlbmVyYXRl
TWlwbWFwKGRlc3QxMSwgc3JjMTEpOworfQorCitUZXh0dXJlU3RvcmFnZSAqUmVuZGVyZXIxMTo6
Y3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChTd2FwQ2hhaW4gKnN3YXBDaGFpbikKK3sKKyAgICBTd2Fw
Q2hhaW4xMSAqc3dhcENoYWluMTEgPSBTd2FwQ2hhaW4xMTo6bWFrZVN3YXBDaGFpbjExKHN3YXBD
aGFpbik7CisgICAgcmV0dXJuIG5ldyBUZXh0dXJlU3RvcmFnZTExXzJEKHRoaXMsIHN3YXBDaGFp
bjExKTsKK30KKworVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyMTE6OmNyZWF0ZVRleHR1cmVTdG9y
YWdlMkQoaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gdXNhZ2UsIGJv
b2wgZm9yY2VSZW5kZXJhYmxlLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAg
ICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlMTFfMkQodGhpcywgbGV2ZWxzLCBpbnRlcm5hbGZv
cm1hdCwgdXNhZ2UsIGZvcmNlUmVuZGVyYWJsZSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK1RleHR1
cmVTdG9yYWdlICpSZW5kZXJlcjExOjpjcmVhdGVUZXh0dXJlU3RvcmFnZUN1YmUoaW50IGxldmVs
cywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJh
YmxlLCBpbnQgc2l6ZSkKK3sKKyAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlMTFfQ3ViZSh0
aGlzLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxlLCBzaXpl
KTsKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2V0RmFzdFBpeGVsQ29weVNpemUo
RFhHSV9GT1JNQVQgc291cmNlRm9ybWF0LCBHTGVudW0gZGVzdEZvcm1hdCwgR0xlbnVtIGRlc3RU
eXBlKQoreworICAgIGlmIChzb3VyY2VGb3JtYXQgPT0gRFhHSV9GT1JNQVRfQThfVU5PUk0gJiYK
KyAgICAgICAgZGVzdEZvcm1hdCAgID09IEdMX0FMUEhBICYmCisgICAgICAgIGRlc3RUeXBlICAg
ICA9PSBHTF9VTlNJR05FRF9CWVRFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQor
ICAgIGVsc2UgaWYgKHNvdXJjZUZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSAm
JgorICAgICAgICAgICAgIGRlc3RGb3JtYXQgICA9PSBHTF9SR0JBICYmCisgICAgICAgICAgICAg
ZGVzdFR5cGUgICAgID09IEdMX1VOU0lHTkVEX0JZVEUpCisgICAgeworICAgICAgICByZXR1cm4g
NDsKKyAgICB9CisgICAgZWxzZSBpZiAoc291cmNlRm9ybWF0ID09IERYR0lfRk9STUFUX0I4RzhS
OEE4X1VOT1JNICYmCisgICAgICAgICAgICAgZGVzdEZvcm1hdCAgID09IEdMX0JHUkFfRVhUICYm
CisgICAgICAgICAgICAgZGVzdFR5cGUgICAgID09IEdMX1VOU0lHTkVEX0JZVEUpCisgICAgewor
ICAgICAgICByZXR1cm4gNDsKKyAgICB9CisgICAgZWxzZSBpZiAoc291cmNlRm9ybWF0ID09IERY
R0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCAmJgorICAgICAgICAgICAgIGRlc3RGb3JtYXQg
ICA9PSBHTF9SR0JBICYmCisgICAgICAgICAgICAgZGVzdFR5cGUgICAgID09IEdMX0hBTEZfRkxP
QVRfT0VTKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDg7CisgICAgfQorICAgIGVsc2UgaWYgKHNv
dXJjZUZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQgJiYKKyAgICAgICAgICAg
ICBkZXN0Rm9ybWF0ICAgPT0gR0xfUkdCICYmCisgICAgICAgICAgICAgZGVzdFR5cGUgICAgID09
IEdMX0ZMT0FUKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDEyOworICAgIH0KKyAgICBlbHNlIGlm
IChzb3VyY2VGb3JtYXQgPT0gRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUICYmCisgICAg
ICAgICAgICAgZGVzdEZvcm1hdCAgID09IEdMX1JHQkEgJiYKKyAgICAgICAgICAgICBkZXN0VHlw
ZSAgICAgPT0gR0xfRkxPQVQpCisgICAgeworICAgICAgICByZXR1cm4gMTY7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIGlubGlu
ZSB2b2lkIHJlYWRQaXhlbENvbG9yKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIERYR0lfRk9S
TUFUIGZvcm1hdCwgdW5zaWduZWQgaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IHksIGludCBpbnB1dFBpdGNoLCBnbDo6Q29sb3IgKm91dENvbG9y
KQoreworICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCByZ2Jh
ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgaW50Kj4oZGF0YSArIDQgKiB4ICsg
eSAqIGlucHV0UGl0Y2gpOworICAgICAgICAgICAgb3V0Q29sb3ItPnJlZCA9ICAgKHJnYmEgJiAw
eDAwMDAwMEZGKSAqICgxLjBmIC8gMHgwMDAwMDBGRik7CisgICAgICAgICAgICBvdXRDb2xvci0+
Z3JlZW4gPSAocmdiYSAmIDB4MDAwMEZGMDApICogKDEuMGYgLyAweDAwMDBGRjAwKTsKKyAgICAg
ICAgICAgIG91dENvbG9yLT5ibHVlID0gIChyZ2JhICYgMHgwMEZGMDAwMCkgKiAoMS4wZiAvIDB4
MDBGRjAwMDApOworICAgICAgICAgICAgb3V0Q29sb3ItPmFscGhhID0gKHJnYmEgJiAweEZGMDAw
MDAwKSAqICgxLjBmIC8gMHhGRjAwMDAwMCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQThfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAg
IG91dENvbG9yLT5yZWQgPSAgIDAuMGY7CisgICAgICAgICAgICBvdXRDb2xvci0+Z3JlZW4gPSAw
LjBmOworICAgICAgICAgICAgb3V0Q29sb3ItPmJsdWUgPSAgMC4wZjsKKyAgICAgICAgICAgIG91
dENvbG9yLT5hbHBoYSA9ICooZGF0YSArIHggKyB5ICogaW5wdXRQaXRjaCkgLyAyNTUuMGY7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyQTMyX0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBvdXRDb2xvci0+cmVkID0gICAq
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhICsgMTYgKiB4ICsgeSAqIGlucHV0
UGl0Y2gpICsgMCk7CisgICAgICAgICAgICBvdXRDb2xvci0+Z3JlZW4gPSAqKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhICsgMTYgKiB4ICsgeSAqIGlucHV0UGl0Y2gpICsgMSk7
CisgICAgICAgICAgICBvdXRDb2xvci0+Ymx1ZSA9ICAqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
ZmxvYXQqPihkYXRhICsgMTYgKiB4ICsgeSAqIGlucHV0UGl0Y2gpICsgMik7CisgICAgICAgICAg
ICBvdXRDb2xvci0+YWxwaGEgPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRh
ICsgMTYgKiB4ICsgeSAqIGlucHV0UGl0Y2gpICsgMyk7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FUOgorICAgICAgICB7
CisgICAgICAgICAgICBvdXRDb2xvci0+cmVkID0gICAqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
ZmxvYXQqPihkYXRhICsgMTIgKiB4ICsgeSAqIGlucHV0UGl0Y2gpICsgMCk7CisgICAgICAgICAg
ICBvdXRDb2xvci0+Z3JlZW4gPSAqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRh
ICsgMTIgKiB4ICsgeSAqIGlucHV0UGl0Y2gpICsgMSk7CisgICAgICAgICAgICBvdXRDb2xvci0+
Ymx1ZSA9ICAqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhICsgMTIgKiB4ICsg
eSAqIGlucHV0UGl0Y2gpICsgMik7CisgICAgICAgICAgICBvdXRDb2xvci0+YWxwaGEgPSAxLjBm
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIERYR0lfRk9STUFUX1Ix
NkcxNkIxNkExNl9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgb3V0Q29sb3ItPnJlZCA9
ICAgZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoKihyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVk
IHNob3J0Kj4oZGF0YSArIDggKiB4ICsgeSAqIGlucHV0UGl0Y2gpICsgMCkpOworICAgICAgICAg
ICAgb3V0Q29sb3ItPmdyZWVuID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoKihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oZGF0YSArIDggKiB4ICsgeSAqIGlucHV0UGl0Y2gp
ICsgMSkpOworICAgICAgICAgICAgb3V0Q29sb3ItPmJsdWUgPSAgZ2w6OmZsb2F0MTZUb0Zsb2F0
MzIoKihyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oZGF0YSArIDggKiB4
ICsgeSAqIGlucHV0UGl0Y2gpICsgMikpOworICAgICAgICAgICAgb3V0Q29sb3ItPmFscGhhID0g
Z2w6OmZsb2F0MTZUb0Zsb2F0MzIoKihyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNo
b3J0Kj4oZGF0YSArIDggKiB4ICsgeSAqIGlucHV0UGl0Y2gpICsgMykpOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOgor
ICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmdyYSA9ICpyZWludGVycHJldF9j
YXN0PGNvbnN0IHVuc2lnbmVkIGludCo+KGRhdGEgKyA0ICogeCArIHkgKiBpbnB1dFBpdGNoKTsK
KyAgICAgICAgICAgIG91dENvbG9yLT5yZWQgPSAgIChiZ3JhICYgMHgwMEZGMDAwMCkgKiAoMS4w
ZiAvIDB4MDBGRjAwMDApOworICAgICAgICAgICAgb3V0Q29sb3ItPmJsdWUgPSAgKGJncmEgJiAw
eDAwMDAwMEZGKSAqICgxLjBmIC8gMHgwMDAwMDBGRik7CisgICAgICAgICAgICBvdXRDb2xvci0+
Z3JlZW4gPSAoYmdyYSAmIDB4MDAwMEZGMDApICogKDEuMGYgLyAweDAwMDBGRjAwKTsKKyAgICAg
ICAgICAgIG91dENvbG9yLT5hbHBoYSA9IChiZ3JhICYgMHhGRjAwMDAwMCkgKiAoMS4wZiAvIDB4
RkYwMDAwMDApOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIERYR0lf
Rk9STUFUX1I4X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBvdXRDb2xvci0+cmVkID0g
ICAqKGRhdGEgKyB4ICsgeSAqIGlucHV0UGl0Y2gpIC8gMjU1LjBmOworICAgICAgICAgICAgb3V0
Q29sb3ItPmdyZWVuID0gMC4wZjsKKyAgICAgICAgICAgIG91dENvbG9yLT5ibHVlID0gIDAuMGY7
CisgICAgICAgICAgICBvdXRDb2xvci0+YWxwaGEgPSAxLjBmOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworCisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVU5PUk06CisgICAgICAgIHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHJnID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgc2hvcnQqPihkYXRhICsgMiAqIHggKyB5ICogaW5wdXRQaXRjaCk7CisKKyAgICAg
ICAgICAgIG91dENvbG9yLT5yZWQgPSAgIChyZyAmIDB4RkYwMCkgKiAoMS4wZiAvIDB4RkYwMCk7
CisgICAgICAgICAgICBvdXRDb2xvci0+Z3JlZW4gPSAocmcgJiAweDAwRkYpICogKDEuMGYgLyAw
eDAwRkYpOworICAgICAgICAgICAgb3V0Q29sb3ItPmJsdWUgPSAgMC4wZjsKKyAgICAgICAgICAg
IG91dENvbG9yLT5hbHBoYSA9IDEuMGY7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBv
dXRDb2xvci0+cmVkID0gICBnbDo6ZmxvYXQxNlRvRmxvYXQzMigqcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBzaG9ydCo+KGRhdGEgKyAyICogeCArIHkgKiBpbnB1dFBpdGNoKSk7Cisg
ICAgICAgICAgICBvdXRDb2xvci0+Z3JlZW4gPSAwLjBmOworICAgICAgICAgICAgb3V0Q29sb3It
PmJsdWUgPSAgMC4wZjsKKyAgICAgICAgICAgIG91dENvbG9yLT5hbHBoYSA9IDEuMGY7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X0ZM
T0FUOgorICAgICAgICB7CisgICAgICAgICAgICBvdXRDb2xvci0+cmVkID0gICBnbDo6ZmxvYXQx
NlRvRmxvYXQzMigqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihkYXRh
ICsgNCAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAwKSk7CisgICAgICAgICAgICBvdXRDb2xvci0+
Z3JlZW4gPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMigqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5z
aWduZWQgc2hvcnQqPihkYXRhICsgNCAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAxKSk7CisgICAg
ICAgICAgICBvdXRDb2xvci0+Ymx1ZSA9ICAwLjBmOworICAgICAgICAgICAgb3V0Q29sb3ItPmFs
cGhhID0gMS4wZjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoK
KyAgICAgICAgRVJSKCJSZWFkUGl4ZWxDb2xvciBub3QgaW1wbGVtZW50ZWQgZm9yIERYR0kgZm9y
bWF0ICV1LiIsIGZvcm1hdCk7CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgd3JpdGVQaXhlbENvbG9yKGNvbnN0
IGdsOjpDb2xvciAmY29sb3IsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCB1bnNpZ25lZCBp
bnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHks
IGludCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0RGF0YSkKK3sKKyAgICB1bnNpZ25lZCBjaGFyKiBi
eXRlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dERhdGEpOworICAg
IHVuc2lnbmVkIHNob3J0KiBzaG9ydERhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHNo
b3J0Kj4ob3V0RGF0YSk7CisKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNl
IEdMX1JHQkE6CisgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIGJ5dGVEYXRhWzQgKiB4ICsgeSAqIG91
dHB1dFBpdGNoICsgMF0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigyNTUgKiBjb2xvci5y
ZWQgICArIDAuNWYpOworICAgICAgICAgICAgYnl0ZURhdGFbNCAqIHggKyB5ICogb3V0cHV0UGl0
Y2ggKyAxXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNvbG9yLmdyZWVuICsg
MC41Zik7CisgICAgICAgICAgICBieXRlRGF0YVs0ICogeCArIHkgKiBvdXRwdXRQaXRjaCArIDJd
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMjU1ICogY29sb3IuYmx1ZSAgKyAwLjVmKTsK
KyAgICAgICAgICAgIGJ5dGVEYXRhWzQgKiB4ICsgeSAqIG91dHB1dFBpdGNoICsgM10gPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigyNTUgKiBjb2xvci5hbHBoYSArIDAuNWYpOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgRVJSKCJXcml0
ZVBpeGVsQ29sb3Igbm90IGltcGxlbWVudGVkIGZvciBmb3JtYXQgR0xfUkdCQSBhbmQgdHlwZSAw
eCVYLiIsIHR5cGUpOworICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgR0xfQkdSQV9F
WFQ6CisgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfQllURToKKyAgICAgICAgICAgIGJ5dGVEYXRhWzQgKiB4ICsgeSAqIG91dHB1dFBp
dGNoICsgMF0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigyNTUgKiBjb2xvci5ibHVlICAr
IDAuNWYpOworICAgICAgICAgICAgYnl0ZURhdGFbNCAqIHggKyB5ICogb3V0cHV0UGl0Y2ggKyAx
XSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNvbG9yLmdyZWVuICsgMC41Zik7
CisgICAgICAgICAgICBieXRlRGF0YVs0ICogeCArIHkgKiBvdXRwdXRQaXRjaCArIDJdID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMjU1ICogY29sb3IucmVkICAgKyAwLjVmKTsKKyAgICAg
ICAgICAgIGJ5dGVEYXRhWzQgKiB4ICsgeSAqIG91dHB1dFBpdGNoICsgM10gPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPigyNTUgKiBjb2xvci5hbHBoYSArIDAuNWYpOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VY
VDoKKyAgICAgICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgZGVza3RvcCBHTCBzcGVjIGluIHRo
ZSAiVHJhbnNmZXIgb2YgUGl4ZWwgUmVjdGFuZ2xlcyIgc2VjdGlvbgorICAgICAgICAgICAgLy8g
dGhpcyB0eXBlIGlzIHBhY2tlZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgLy8gICAxNSAgIDE0
ICAgMTMgICAxMiAgIDExICAgMTAgICAgOSAgICA4ICAgIDcgICAgNiAgICA1ICAgIDQgICAgMyAg
ICAyICAgIDEgICAgMAorICAgICAgICAgICAgLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg
ICAgICAgICAgICAvLyB8ICAgICAgIDR0aCAgICAgICAgIHwgICAgICAgIDNyZCAgICAgICAgIHwg
ICAgICAgIDJuZCAgICAgICAgfCAgIDFzdCBjb21wb25lbnQgICB8CisgICAgICAgICAgICAvLyAg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIC8vIGluIHRoZSBjYXNlIG9mIEJH
UkFfRVhULCBCIGlzIHRoZSBmaXJzdCBjb21wb25lbnQsIEcgdGhlIHNlY29uZCwgYW5kIHNvIGZv
cnRoLgorICAgICAgICAgICAgc2hvcnREYXRhW3ggKyB5ICogb3V0cHV0UGl0Y2ggLyBzaXplb2Yo
dW5zaWduZWQgc2hvcnQpXSA9CisgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVk
IHNob3J0PigxNSAqIGNvbG9yLmFscGhhICsgMC41ZikgPDwgMTIpIHwKKyAgICAgICAgICAgICAg
ICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDE1ICogY29sb3IucmVkICAgKyAwLjVmKSA8
PCAgOCkgfAorICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oMTUg
KiBjb2xvci5ncmVlbiArIDAuNWYpIDw8ICA0KSB8CisgICAgICAgICAgICAgICAgKHN0YXRpY19j
YXN0PHVuc2lnbmVkIHNob3J0PigxNSAqIGNvbG9yLmJsdWUgICsgMC41ZikgPDwgIDApOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81
XzVfUkVWX0VYVDoKKyAgICAgICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgZGVza3RvcCBHTCBz
cGVjIGluIHRoZSAiVHJhbnNmZXIgb2YgUGl4ZWwgUmVjdGFuZ2xlcyIgc2VjdGlvbgorICAgICAg
ICAgICAgLy8gdGhpcyB0eXBlIGlzIHBhY2tlZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgLy8g
ICAxNSAgIDE0ICAgMTMgICAxMiAgIDExICAgMTAgICAgOSAgICA4ICAgIDcgICAgNiAgICA1ICAg
IDQgICAgMyAgICAyICAgIDEgICAgMAorICAgICAgICAgICAgLy8gIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisgICAgICAgICAgICAvLyB8IDR0aCB8ICAgICAgICAgIDNyZCAgICAgICAgICAgfCAg
ICAgICAgICAgMm5kICAgICAgICAgIHwgICAgICAxc3QgY29tcG9uZW50ICAgICB8CisgICAgICAg
ICAgICAvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIC8vIGluIHRoZSBj
YXNlIG9mIEJHUkFfRVhULCBCIGlzIHRoZSBmaXJzdCBjb21wb25lbnQsIEcgdGhlIHNlY29uZCwg
YW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgc2hvcnREYXRhW3ggKyB5ICogb3V0cHV0UGl0Y2gg
LyBzaXplb2YodW5zaWduZWQgc2hvcnQpXSA9CisgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0
PHVuc2lnbmVkIHNob3J0PiggICAgIGNvbG9yLmFscGhhICsgMC41ZikgPDwgMTUpIHwKKyAgICAg
ICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDMxICogY29sb3IucmVkICAg
KyAwLjVmKSA8PCAxMCkgfAorICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBz
aG9ydD4oMzEgKiBjb2xvci5ncmVlbiArIDAuNWYpIDw8ICA1KSB8CisgICAgICAgICAgICAgICAg
KHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PigzMSAqIGNvbG9yLmJsdWUgICsgMC41ZikgPDwg
IDApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgRVJSKCJXcml0ZVBpeGVsQ29sb3Igbm90IGltcGxlbWVudGVkIGZvciBmb3JtYXQgR0xfQkdS
QV9FWFQgYW5kIHR5cGUgMHglWC4iLCB0eXBlKTsKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAg
ICBjYXNlIEdMX1JHQjoKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNToKKyAgICAgICAgICAgIHNob3J0RGF0YVt4
ICsgeSAqIG91dHB1dFBpdGNoIC8gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KV0gPQorICAgICAgICAg
ICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oMzEgKiBjb2xvci5ibHVlICArIDAu
NWYpIDw8ICAwKSB8CisgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0
Pig2MyAqIGNvbG9yLmdyZWVuICsgMC41ZikgPDwgIDUpIHwKKyAgICAgICAgICAgICAgICAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDMxICogY29sb3IucmVkICAgKyAwLjVmKSA8PCAxMSk7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToK
KyAgICAgICAgICAgIGJ5dGVEYXRhWzMgKiB4ICsgeSAqIG91dHB1dFBpdGNoICsgMF0gPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigyNTUgKiBjb2xvci5yZWQgKyAgIDAuNWYpOworICAgICAg
ICAgICAgYnl0ZURhdGFbMyAqIHggKyB5ICogb3V0cHV0UGl0Y2ggKyAxXSA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNvbG9yLmdyZWVuICsgMC41Zik7CisgICAgICAgICAgICBi
eXRlRGF0YVszICogeCArIHkgKiBvdXRwdXRQaXRjaCArIDJdID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4oMjU1ICogY29sb3IuYmx1ZSArICAwLjVmKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEVSUigiV3JpdGVQaXhlbENvbG9yIG5v
dCBpbXBsZW1lbnRlZCBmb3IgZm9ybWF0IEdMX1JHQiBhbmQgdHlwZSAweCVYLiIsIHR5cGUpOwor
ICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIEVSUigiV3JpdGVQ
aXhlbENvbG9yIG5vdCBpbXBsZW1lbnRlZCBmb3IgZm9ybWF0IDB4JVguIiwgZm9ybWF0KTsKKyAg
ICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQg
UmVuZGVyZXIxMTo6cmVhZFRleHR1cmVEYXRhKElEM0QxMVRleHR1cmUyRCAqdGV4dHVyZSwgdW5z
aWduZWQgaW50IHN1YlJlc291cmNlLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdM
c2l6ZWkgb3V0cHV0UGl0Y2gsIGJvb2wgcGFja1JldmVyc2VSb3dPcmRlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHBhY2tBbGlnbm1lbnQsIHZvaWQgKnBpeGVscykK
K3sKKyAgICBEM0QxMV9URVhUVVJFMkRfREVTQyB0ZXh0dXJlRGVzYzsKKyAgICB0ZXh0dXJlLT5H
ZXREZXNjKCZ0ZXh0dXJlRGVzYyk7CisKKyAgICBEM0QxMV9URVhUVVJFMkRfREVTQyBzdGFnaW5n
RGVzYzsKKyAgICBzdGFnaW5nRGVzYy5XaWR0aCA9IGFyZWEud2lkdGg7CisgICAgc3RhZ2luZ0Rl
c2MuSGVpZ2h0ID0gYXJlYS5oZWlnaHQ7CisgICAgc3RhZ2luZ0Rlc2MuTWlwTGV2ZWxzID0gMTsK
KyAgICBzdGFnaW5nRGVzYy5BcnJheVNpemUgPSAxOworICAgIHN0YWdpbmdEZXNjLkZvcm1hdCA9
IHRleHR1cmVEZXNjLkZvcm1hdDsKKyAgICBzdGFnaW5nRGVzYy5TYW1wbGVEZXNjLkNvdW50ID0g
MTsKKyAgICBzdGFnaW5nRGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgIHN0YWdpbmdE
ZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfU1RBR0lORzsKKyAgICBzdGFnaW5nRGVzYy5CaW5kRmxh
Z3MgPSAwOworICAgIHN0YWdpbmdEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VT
U19SRUFEOworICAgIHN0YWdpbmdEZXNjLk1pc2NGbGFncyA9IDA7CisKKyAgICBJRDNEMTFUZXh0
dXJlMkQqIHN0YWdpbmdUZXggPSBOVUxMOworICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+
Q3JlYXRlVGV4dHVyZTJEKCZzdGFnaW5nRGVzYywgTlVMTCwgJnN0YWdpbmdUZXgpOworICAgIGlm
IChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIGNyZWF0ZSBz
dGFnaW5nIHRleHR1cmUgZm9yIHJlYWRQaXhlbHMsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIElEM0QxMVRleHR1cmUyRCogc3JjVGV4ID0g
TlVMTDsKKyAgICBpZiAodGV4dHVyZURlc2MuU2FtcGxlRGVzYy5Db3VudCA+IDEpCisgICAgewor
ICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyByZXNvbHZlRGVzYzsKKyAgICAgICAgcmVzb2x2
ZURlc2MuV2lkdGggPSB0ZXh0dXJlRGVzYy5XaWR0aDsKKyAgICAgICAgcmVzb2x2ZURlc2MuSGVp
Z2h0ID0gdGV4dHVyZURlc2MuSGVpZ2h0OworICAgICAgICByZXNvbHZlRGVzYy5NaXBMZXZlbHMg
PSAxOworICAgICAgICByZXNvbHZlRGVzYy5BcnJheVNpemUgPSAxOworICAgICAgICByZXNvbHZl
RGVzYy5Gb3JtYXQgPSB0ZXh0dXJlRGVzYy5Gb3JtYXQ7CisgICAgICAgIHJlc29sdmVEZXNjLlNh
bXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICByZXNvbHZlRGVzYy5TYW1wbGVEZXNjLlF1YWxp
dHkgPSAwOworICAgICAgICByZXNvbHZlRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7
CisgICAgICAgIHJlc29sdmVEZXNjLkJpbmRGbGFncyA9IDA7CisgICAgICAgIHJlc29sdmVEZXNj
LkNQVUFjY2Vzc0ZsYWdzID0gMDsKKyAgICAgICAgcmVzb2x2ZURlc2MuTWlzY0ZsYWdzID0gMDsK
KworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnJlc29sdmVEZXNj
LCBOVUxMLCAmc3JjVGV4KTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7
CisgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBjcmVhdGUgcmVzb2x2ZSB0ZXh0dXJlIGZvciBy
ZWFkUGl4ZWxzLCBIUkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICBzdGFnaW5n
VGV4LT5SZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBtRGV2aWNlQ29udGV4dC0+UmVzb2x2ZVN1YnJlc291cmNlKHNyY1RleCwgMCwgdGV4dHVyZSwg
c3ViUmVzb3VyY2UsIHRleHR1cmVEZXNjLkZvcm1hdCk7CisgICAgICAgIHN1YlJlc291cmNlID0g
MDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc3JjVGV4ID0gdGV4dHVyZTsKKyAg
ICAgICAgc3JjVGV4LT5BZGRSZWYoKTsKKyAgICB9CisKKyAgICBEM0QxMV9CT1ggc3JjQm94Owor
ICAgIHNyY0JveC5sZWZ0ID0gYXJlYS54OworICAgIHNyY0JveC5yaWdodCA9IGFyZWEueCArIGFy
ZWEud2lkdGg7CisgICAgc3JjQm94LnRvcCA9IGFyZWEueTsKKyAgICBzcmNCb3guYm90dG9tID0g
YXJlYS55ICsgYXJlYS5oZWlnaHQ7CisgICAgc3JjQm94LmZyb250ID0gMDsKKyAgICBzcmNCb3gu
YmFjayA9IDE7CisKKyAgICBtRGV2aWNlQ29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKHN0
YWdpbmdUZXgsIDAsIDAsIDAsIDAsIHNyY1RleCwgc3ViUmVzb3VyY2UsICZzcmNCb3gpOworCisg
ICAgc3JjVGV4LT5SZWxlYXNlKCk7CisgICAgc3JjVGV4ID0gTlVMTDsKKworICAgIEQzRDExX01B
UFBFRF9TVUJSRVNPVVJDRSBtYXBwaW5nOworICAgIG1EZXZpY2VDb250ZXh0LT5NYXAoc3RhZ2lu
Z1RleCwgMCwgRDNEMTFfTUFQX1JFQUQsIDAsICZtYXBwaW5nKTsKKworICAgIHVuc2lnbmVkIGNo
YXIgKnNvdXJjZTsKKyAgICBpbnQgaW5wdXRQaXRjaDsKKyAgICBpZiAocGFja1JldmVyc2VSb3dP
cmRlcikKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIq
PihtYXBwaW5nLnBEYXRhKSArIG1hcHBpbmcuUm93UGl0Y2ggKiAoYXJlYS5oZWlnaHQgLSAxKTsK
KyAgICAgICAgaW5wdXRQaXRjaCA9IC1zdGF0aWNfY2FzdDxpbnQ+KG1hcHBpbmcuUm93UGl0Y2gp
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBzb3VyY2UgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4obWFwcGluZy5wRGF0YSk7CisgICAgICAgIGlucHV0UGl0Y2ggPSBzdGF0
aWNfY2FzdDxpbnQ+KG1hcHBpbmcuUm93UGl0Y2gpOworICAgIH0KKworICAgIHVuc2lnbmVkIGlu
dCBmYXN0UGl4ZWxTaXplID0gZ2V0RmFzdFBpeGVsQ29weVNpemUodGV4dHVyZURlc2MuRm9ybWF0
LCBmb3JtYXQsIHR5cGUpOworICAgIGlmIChmYXN0UGl4ZWxTaXplICE9IDApCisgICAgeworICAg
ICAgICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHBp
eGVscyk7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgYXJlYS5oZWlnaHQ7IGorKykKKyAg
ICAgICAgeworICAgICAgICAgICAgbWVtY3B5KGRlc3QgKyBqICogb3V0cHV0UGl0Y2gsIHNvdXJj
ZSArIGogKiBpbnB1dFBpdGNoLCBhcmVhLndpZHRoICogZmFzdFBpeGVsU2l6ZSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgZWxzZSBpZiAodGV4dHVyZURlc2MuRm9ybWF0ID09IERYR0lfRk9STUFU
X0I4RzhSOEE4X1VOT1JNICYmCisgICAgICAgICAgICAgZm9ybWF0ID09IEdMX1JHQkEgJiYKKyAg
ICAgICAgICAgICB0eXBlID09IEdMX1VOU0lHTkVEX0JZVEUpCisgICAgeworICAgICAgICAvLyBG
YXN0IHBhdGggZm9yIHN3YXBwaW5nIHJlZCB3aXRoIGJsdWUKKyAgICAgICAgdW5zaWduZWQgY2hh
ciAqZGVzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihwaXhlbHMpOworCisgICAgICAg
IGZvciAoaW50IGogPSAwOyBqIDwgYXJlYS5oZWlnaHQ7IGorKykKKyAgICAgICAgeworICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmVhLndpZHRoOyBpKyspCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFyZ2IgPSAqKHVuc2lnbmVkIGludCopKHNv
dXJjZSArIDQgKiBpICsgaiAqIGlucHV0UGl0Y2gpOworICAgICAgICAgICAgICAgICoodW5zaWdu
ZWQgaW50KikoZGVzdCArIDQgKiBpICsgaiAqIG91dHB1dFBpdGNoKSA9CisgICAgICAgICAgICAg
ICAgICAgIChhcmdiICYgMHhGRjAwRkYwMCkgfCAgICAgICAvLyBLZWVwIGFscGhhIGFuZCBncmVl
bgorICAgICAgICAgICAgICAgICAgICAoYXJnYiAmIDB4MDBGRjAwMDApID4+IDE2IHwgLy8gTW92
ZSByZWQgdG8gYmx1ZQorICAgICAgICAgICAgICAgICAgICAoYXJnYiAmIDB4MDAwMDAwRkYpIDw8
IDE2OyAgLy8gTW92ZSBibHVlIHRvIHJlZAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGdsOjpDb2xvciBwaXhlbENvbG9yOworICAgICAg
ICBmb3IgKGludCBqID0gMDsgaiA8IGFyZWEuaGVpZ2h0OyBqKyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJlYS53aWR0aDsgaSsrKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJlYWRQaXhlbENvbG9yKHNvdXJjZSwgdGV4dHVyZURlc2MuRm9y
bWF0LCBpLCBqLCBpbnB1dFBpdGNoLCAmcGl4ZWxDb2xvcik7CisgICAgICAgICAgICAgICAgd3Jp
dGVQaXhlbENvbG9yKHBpeGVsQ29sb3IsIGZvcm1hdCwgdHlwZSwgaSwgaiwgb3V0cHV0UGl0Y2gs
IHBpeGVscyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtRGV2aWNl
Q29udGV4dC0+VW5tYXAoc3RhZ2luZ1RleCwgMCk7CisKKyAgICBzdGFnaW5nVGV4LT5SZWxlYXNl
KCk7CisgICAgc3RhZ2luZ1RleCA9IE5VTEw7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6YmxpdFJl
bmRlcmJ1ZmZlclJlY3QoY29uc3QgZ2w6OlJlY3RhbmdsZSAmcmVhZFJlY3QsIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJmRyYXdSZWN0LCBSZW5kZXJUYXJnZXQgKnJlYWRSZW5kZXJUYXJnZXQsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXQgKmRyYXdSZW5k
ZXJUYXJnZXQsIGJvb2wgd2hvbGVCdWZmZXJDb3B5KQoreworICAgIEFTU0VSVChyZWFkUmVjdC53
aWR0aCA9PSBkcmF3UmVjdC53aWR0aCAmJiByZWFkUmVjdC5oZWlnaHQgPT0gZHJhd1JlY3QuaGVp
Z2h0KTsKKworICAgIFJlbmRlclRhcmdldDExICpyZWFkUmVuZGVyVGFyZ2V0MTEgPSBSZW5kZXJU
YXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKHJlYWRSZW5kZXJUYXJnZXQpOworICAgIGlmICgh
cmVhZFJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZl
IHRoZSByZWFkIHJlbmRlciB0YXJnZXQgZnJvbSB0aGUgcmVhZCBmcmFtZWJ1ZmZlci4iKTsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQor
CisgICAgSUQzRDExVGV4dHVyZTJEICpyZWFkVGV4dHVyZSA9IE5VTEw7CisgICAgdW5zaWduZWQg
aW50IHJlYWRTdWJyZXNvdXJjZSA9IDA7CisgICAgaWYgKHJlYWRSZW5kZXJUYXJnZXQtPmdldFNh
bXBsZXMoKSA+IDApCisgICAgeworICAgICAgICBJRDNEMTFUZXh0dXJlMkQgKnVucmVzb2x2ZWRU
ZXh0dXJlID0gcmVhZFJlbmRlclRhcmdldDExLT5nZXRUZXh0dXJlKCk7CisKKyAgICAgICAgcmVh
ZFRleHR1cmUgPSByZXNvbHZlTXVsdGlzYW1wbGVkVGV4dHVyZSh1bnJlc29sdmVkVGV4dHVyZSwg
cmVhZFJlbmRlclRhcmdldDExLT5nZXRTdWJyZXNvdXJjZUluZGV4KCkpOworICAgICAgICByZWFk
U3VicmVzb3VyY2UgPSAwOworCisgICAgICAgIHVucmVzb2x2ZWRUZXh0dXJlLT5SZWxlYXNlKCk7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJlYWRUZXh0dXJlID0gcmVhZFJlbmRl
clRhcmdldDExLT5nZXRUZXh0dXJlKCk7CisgICAgICAgIHJlYWRTdWJyZXNvdXJjZSA9IHJlYWRS
ZW5kZXJUYXJnZXQxMS0+Z2V0U3VicmVzb3VyY2VJbmRleCgpOworICAgIH0KKworICAgIGlmICgh
cmVhZFRleHR1cmUpCisgICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUg
cmVhZCByZW5kZXIgdGFyZ2V0IHZpZXcgZnJvbSB0aGUgcmVhZCByZW5kZXIgdGFyZ2V0LiIpOwor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICB9
CisKKyAgICBSZW5kZXJUYXJnZXQxMSAqZHJhd1JlbmRlclRhcmdldDExID0gUmVuZGVyVGFyZ2V0
MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShkcmF3UmVuZGVyVGFyZ2V0KTsKKyAgICBpZiAoIWRyYXdS
ZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICByZWFkVGV4dHVyZS0+UmVsZWFzZSgpOworICAg
ICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgZHJhdyByZW5kZXIgdGFyZ2V0IGZyb20g
dGhlIGRyYXcgZnJhbWVidWZmZXIuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIElEM0QxMVRleHR1cmUyRCAqZHJhd1Rl
eHR1cmUgPSBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdldFRleHR1cmUoKTsKKyAgICB1bnNpZ25lZCBp
bnQgZHJhd1N1YnJlc291cmNlID0gZHJhd1JlbmRlclRhcmdldDExLT5nZXRTdWJyZXNvdXJjZUlu
ZGV4KCk7CisKKyAgICBEM0QxMV9CT1ggcmVhZEJveDsKKyAgICByZWFkQm94LmxlZnQgPSByZWFk
UmVjdC54OworICAgIHJlYWRCb3gucmlnaHQgPSByZWFkUmVjdC54ICsgcmVhZFJlY3Qud2lkdGg7
CisgICAgcmVhZEJveC50b3AgPSByZWFkUmVjdC55OworICAgIHJlYWRCb3guYm90dG9tID0gcmVh
ZFJlY3QueSArIHJlYWRSZWN0LmhlaWdodDsKKyAgICByZWFkQm94LmZyb250ID0gMDsKKyAgICBy
ZWFkQm94LmJhY2sgPSAxOworCisgICAgLy8gRDNEMTEgbmVlZHMgZGVwdGgtc3RlbmNpbCBDb3B5
U3VicmVzb3VyY2VSZWdpb25zIHRvIGhhdmUgYSBOVUxMIHBTcmNCb3gKKyAgICAvLyBXZSBhbHNv
IHJlcXVpcmUgY29tcGxldGUgZnJhbWVidWZmZXIgY29waWVzIGZvciBkZXB0aC1zdGVuY2lsIGJs
aXQuCisgICAgRDNEMTFfQk9YICpwU3JjQm94ID0gd2hvbGVCdWZmZXJDb3B5ID8gTlVMTCA6ICZy
ZWFkQm94OworCisgICAgbURldmljZUNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihkcmF3
VGV4dHVyZSwgZHJhd1N1YnJlc291cmNlLCBkcmF3UmVjdC54LCBkcmF3UmVjdC55LCAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFRleHR1cmUsIHJlYWRT
dWJyZXNvdXJjZSwgcFNyY0JveCk7CisKKyAgICByZWFkVGV4dHVyZS0+UmVsZWFzZSgpOworICAg
IGRyYXdUZXh0dXJlLT5SZWxlYXNlKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSUQzRDEx
VGV4dHVyZTJEICpSZW5kZXJlcjExOjpyZXNvbHZlTXVsdGlzYW1wbGVkVGV4dHVyZShJRDNEMTFU
ZXh0dXJlMkQgKnNvdXJjZSwgdW5zaWduZWQgaW50IHN1YnJlc291cmNlKQoreworICAgIEQzRDEx
X1RFWFRVUkUyRF9ERVNDIHRleHR1cmVEZXNjOworICAgIHNvdXJjZS0+R2V0RGVzYygmdGV4dHVy
ZURlc2MpOworCisgICAgaWYgKHRleHR1cmVEZXNjLlNhbXBsZURlc2MuQ291bnQgPiAxKQorICAg
IHsKKyAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgcmVzb2x2ZURlc2M7CisgICAgICAgIHJl
c29sdmVEZXNjLldpZHRoID0gdGV4dHVyZURlc2MuV2lkdGg7CisgICAgICAgIHJlc29sdmVEZXNj
LkhlaWdodCA9IHRleHR1cmVEZXNjLkhlaWdodDsKKyAgICAgICAgcmVzb2x2ZURlc2MuTWlwTGV2
ZWxzID0gMTsKKyAgICAgICAgcmVzb2x2ZURlc2MuQXJyYXlTaXplID0gMTsKKyAgICAgICAgcmVz
b2x2ZURlc2MuRm9ybWF0ID0gdGV4dHVyZURlc2MuRm9ybWF0OworICAgICAgICByZXNvbHZlRGVz
Yy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKKyAgICAgICAgcmVzb2x2ZURlc2MuU2FtcGxlRGVzYy5R
dWFsaXR5ID0gMDsKKyAgICAgICAgcmVzb2x2ZURlc2MuVXNhZ2UgPSB0ZXh0dXJlRGVzYy5Vc2Fn
ZTsKKyAgICAgICAgcmVzb2x2ZURlc2MuQmluZEZsYWdzID0gdGV4dHVyZURlc2MuQmluZEZsYWdz
OworICAgICAgICByZXNvbHZlRGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7CisgICAgICAgIHJlc29s
dmVEZXNjLk1pc2NGbGFncyA9IDA7CisKKyAgICAgICAgSUQzRDExVGV4dHVyZTJEICpyZXNvbHZl
VGV4dHVyZSA9IE5VTEw7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRl
VGV4dHVyZTJEKCZyZXNvbHZlRGVzYywgTlVMTCwgJnJlc29sdmVUZXh0dXJlKTsKKyAgICAgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkZhaWxlZCB0
byBjcmVhdGUgYSBtdWx0aXNhbXBsZSByZXNvbHZlIHRleHR1cmUsIEhSRVNVTFQ6IDB4JVguIiwg
cmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAg
bURldmljZUNvbnRleHQtPlJlc29sdmVTdWJyZXNvdXJjZShyZXNvbHZlVGV4dHVyZSwgMCwgc291
cmNlLCBzdWJyZXNvdXJjZSwgdGV4dHVyZURlc2MuRm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIHJl
c29sdmVUZXh0dXJlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBzb3VyY2UtPkFk
ZFJlZigpOworICAgICAgICByZXR1cm4gc291cmNlOworICAgIH0KK30KKworYm9vbCBSZW5kZXJl
cjExOjpnZXRMVUlEKExVSUQgKmFkYXB0ZXJMdWlkKSBjb25zdAoreworICAgIGFkYXB0ZXJMdWlk
LT5IaWdoUGFydCA9IDA7CisgICAgYWRhcHRlckx1aWQtPkxvd1BhcnQgPSAwOworCisgICAgaWYg
KCFtRHhnaUFkYXB0ZXIpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgRFhHSV9BREFQVEVSX0RFU0MgYWRhcHRlckRlc2M7CisgICAgaWYgKEZBSUxFRChtRHhnaUFk
YXB0ZXItPkdldERlc2MoJmFkYXB0ZXJEZXNjKSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgKmFkYXB0ZXJMdWlkID0gYWRhcHRlckRlc2MuQWRhcHRlckx1aWQ7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIxMS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIxMS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJlcjExLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUxIEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisvLyBSZW5kZXJlcjExLmg6IERlZmluZXMgYSBiYWNrLWVuZCBzcGVjaWZp
YyBjbGFzcyBmb3IgdGhlIEQzRDExIHJlbmRlcmVyLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5E
RVJFUl9SRU5ERVJFUjExX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUjEx
X0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9hbmdsZXR5cGVzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL21hdGh1dGlsLmgiCisKKyNpbmNs
dWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvUmVuZGVyU3RhdGVDYWNoZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9JbnB1dExheW91dENhY2hlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRl
clRhcmdldC5oIgorCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIFJlbmRlcmJ1ZmZlcjsKK30KKwor
bmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFZlcnRleERhdGFNYW5hZ2VyOworY2xhc3MgSW5kZXhE
YXRhTWFuYWdlcjsKK2NsYXNzIFN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlOworCitlbnVt
Cit7CisgICAgTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlNfRDNEMTEgPSAxMDI0LAorICAgIE1B
WF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNfRDNEMTEgPSAxMDI0Cit9OworCitjbGFzcyBSZW5k
ZXJlcjExIDogcHVibGljIFJlbmRlcmVyCit7CisgIHB1YmxpYzoKKyAgICBSZW5kZXJlcjExKGVn
bDo6RGlzcGxheSAqZGlzcGxheSwgSERDIGhEYyk7CisgICAgdmlydHVhbCB+UmVuZGVyZXIxMSgp
OworCisgICAgc3RhdGljIFJlbmRlcmVyMTEgKm1ha2VSZW5kZXJlcjExKFJlbmRlcmVyICpyZW5k
ZXJlcik7CisKKyAgICB2aXJ0dWFsIEVHTGludCBpbml0aWFsaXplKCk7CisgICAgdmlydHVhbCBi
b29sIHJlc2V0RGV2aWNlKCk7CisKKyAgICB2aXJ0dWFsIGludCBnZW5lcmF0ZUNvbmZpZ3MoQ29u
ZmlnRGVzYyAqKmNvbmZpZ0Rlc2NMaXN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29uZmln
cyhDb25maWdEZXNjICpjb25maWdEZXNjTGlzdCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3luYyhi
b29sIGJsb2NrKTsKKworICAgIHZpcnR1YWwgU3dhcENoYWluICpjcmVhdGVTd2FwQ2hhaW4oSFdO
RCB3aW5kb3csIEhBTkRMRSBzaGFyZUhhbmRsZSwgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdM
ZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2FtcGxlclN0
YXRlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5kZXgsIGNvbnN0IGdsOjpTYW1wbGVyU3Rh
dGUgJnNhbXBsZXIpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0dXJlKGdsOjpTYW1wbGVyVHlw
ZSB0eXBlLCBpbnQgaW5kZXgsIGdsOjpUZXh0dXJlICp0ZXh0dXJlKTsKKworICAgIHZpcnR1YWwg
dm9pZCBzZXRSYXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSAmcmFzdGVy
U3RhdGUpOworICAgIHZpcnR1YWwgdm9pZCBzZXRCbGVuZFN0YXRlKGNvbnN0IGdsOjpCbGVuZFN0
YXRlICZibGVuZFN0YXRlLCBjb25zdCBnbDo6Q29sb3IgJmJsZW5kQ29sb3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZU1hc2spOworICAgIHZpcnR1
YWwgdm9pZCBzZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUg
JmRlcHRoU3RlbmNpbFN0YXRlLCBpbnQgc3RlbmNpbFJlZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHN0ZW5jaWxCYWNrUmVmLCBib29sIGZyb250RmFjZUNDVyk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Npc3NvclJlY3RhbmdsZShjb25zdCBnbDo6UmVjdGFu
Z2xlICZzY2lzc29yLCBib29sIGVuYWJsZWQpOworICAgIHZpcnR1YWwgYm9vbCBzZXRWaWV3cG9y
dChjb25zdCBnbDo6UmVjdGFuZ2xlICZ2aWV3cG9ydCwgZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIs
IEdMZW51bSBkcmF3TW9kZSwgR0xlbnVtIGZyb250RmFjZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpZ25vcmVWaWV3cG9ydCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHlQ
cmltaXRpdmVUeXBlKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50KTsKKyAgICB2aXJ0dWFsIGJv
b2wgYXBwbHlSZW5kZXJUYXJnZXQoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZUJ1ZmZlcik7CisgICAg
dmlydHVhbCB2b2lkIGFwcGx5U2hhZGVycyhnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFy
eSk7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5VW5pZm9ybXMoZ2w6OlByb2dyYW1CaW5hcnkgKnBy
b2dyYW1CaW5hcnksIGdsOjpVbmlmb3JtQXJyYXkgKnVuaWZvcm1BcnJheSk7CisgICAgdmlydHVh
bCBHTGVudW0gYXBwbHlWZXJ0ZXhCdWZmZXIoZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5h
cnksIGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgdmVydGV4QXR0cmlidXRlc1tdLCBHTGludCBmaXJzdCwg
R0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworICAgIHZpcnR1YWwgR0xlbnVtIGFw
cGx5SW5kZXhCdWZmZXIoY29uc3QgR0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICplbGVtZW50
QXJyYXlCdWZmZXIsIEdMc2l6ZWkgY291bnQsIEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgVHJh
bnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZvKTsKKworICAgIHZpcnR1YWwgdm9pZCBkcmF3QXJy
YXlzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcyk7CisgICAg
dmlydHVhbCB2b2lkIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xl
bnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5
QnVmZmVyLCBjb25zdCBUcmFuc2xhdGVkSW5kZXhEYXRhICZpbmRleEluZm8sIEdMc2l6ZWkgaW5z
dGFuY2VzKTsKKworICAgIHZpcnR1YWwgdm9pZCBjbGVhcihjb25zdCBnbDo6Q2xlYXJQYXJhbWV0
ZXJzICZjbGVhclBhcmFtcywgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZUJ1ZmZlcik7CisKKyAgICB2
aXJ0dWFsIHZvaWQgbWFya0FsbFN0YXRlRGlydHkoKTsKKworICAgIC8vIGxvc3QgZGV2aWNlCisg
ICAgdm9pZCBub3RpZnlEZXZpY2VMb3N0KCk7CisgICAgdmlydHVhbCBib29sIGlzRGV2aWNlTG9z
dCgpOworICAgIHZpcnR1YWwgYm9vbCB0ZXN0RGV2aWNlTG9zdChib29sIG5vdGlmeSk7CisgICAg
dmlydHVhbCBib29sIHRlc3REZXZpY2VSZXNldHRhYmxlKCk7CisKKyAgICAvLyBSZW5kZXJlciBj
YXBhYmlsaXRpZXMKKyAgICB2aXJ0dWFsIERXT1JEIGdldEFkYXB0ZXJWZW5kb3IoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIGdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdDsK
KyAgICB2aXJ0dWFsIEdVSUQgZ2V0QWRhcHRlcklkZW50aWZpZXIoKSBjb25zdDsKKworICAgIHZp
cnR1YWwgYm9vbCBnZXRCR1JBVGV4dHVyZVN1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0RFhUMVRleHR1cmVTdXBwb3J0KCk7CisgICAgdmlydHVhbCBib29sIGdldERYVDNUZXh0
dXJlU3VwcG9ydCgpOworICAgIHZpcnR1YWwgYm9vbCBnZXREWFQ1VGV4dHVyZVN1cHBvcnQoKTsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXZlbnRRdWVyeVN1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0RmxvYXQzMlRleHR1cmVTdXBwb3J0KGJvb2wgKmZpbHRlcmluZywgYm9vbCAqcmVuZGVy
YWJsZSk7CisgICAgdmlydHVhbCBib29sIGdldEZsb2F0MTZUZXh0dXJlU3VwcG9ydChib29sICpm
aWx0ZXJpbmcsIGJvb2wgKnJlbmRlcmFibGUpOworICAgIHZpcnR1YWwgYm9vbCBnZXRMdW1pbmFu
Y2VUZXh0dXJlU3VwcG9ydCgpOworICAgIHZpcnR1YWwgYm9vbCBnZXRMdW1pbmFuY2VBbHBoYVRl
eHR1cmVTdXBwb3J0KCk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4VmVydGV4VGV4
dHVyZUltYWdlVW5pdHMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhD
b21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBp
bnQgZ2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpIGNvbnN0OworICAgIHZpcnR1YWwg
dW5zaWduZWQgaW50IGdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldE1heFZlcnRleFVuaWZvcm1WZWN0b3JzKCkgY29u
c3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9y
cygpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldE1heFZhcnlpbmdWZWN0b3Jz
KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldERlcHRoVGV4dHVyZVN1cHBvcnQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0T2NjbHVzaW9uUXVlcnlTdXBwb3J0KCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGdldEluc3RhbmNpbmdTdXBwb3J0KCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGdldFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5U3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1
YWwgZmxvYXQgZ2V0VGV4dHVyZU1heEFuaXNvdHJvcHkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0U2hhcmVIYW5kbGVTdXBwb3J0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldERl
cml2YXRpdmVJbnN0cnVjdGlvblN1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
UG9zdFN1YkJ1ZmZlclN1cHBvcnQoKSBjb25zdDsKKworICAgIHZpcnR1YWwgaW50IGdldE1ham9y
U2hhZGVyTW9kZWwoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGZsb2F0IGdldE1heFBvaW50U2l6ZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgaW50IGdldE1heFZpZXdwb3J0RGltZW5zaW9uKCkgY29uc3Q7
CisgICAgdmlydHVhbCBpbnQgZ2V0TWF4VGV4dHVyZVdpZHRoKCkgY29uc3Q7CisgICAgdmlydHVh
bCBpbnQgZ2V0TWF4VGV4dHVyZUhlaWdodCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXQz
MkJpdEluZGV4U3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IGdldE1pblN3YXBJbnRl
cnZhbCgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IGdldE1heFN3YXBJbnRlcnZhbCgpIGNvbnN0
OworCisgICAgdmlydHVhbCBHTHNpemVpIGdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSBjb25zdDsK
KyAgICBpbnQgZ2V0TmVhcmVzdFN1cHBvcnRlZFNhbXBsZXMoRFhHSV9GT1JNQVQgZm9ybWF0LCB1
bnNpZ25lZCBpbnQgcmVxdWVzdGVkKSBjb25zdDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50
IGdldE1heFJlbmRlclRhcmdldHMoKSBjb25zdDsKKworICAgIC8vIFBpeGVsIG9wZXJhdGlvbnMK
KyAgICB2aXJ0dWFsIGJvb2wgY29weVRvUmVuZGVyVGFyZ2V0KFRleHR1cmVTdG9yYWdlSW50ZXJm
YWNlMkQgKmRlc3QsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnNvdXJjZSk7CisgICAgdmly
dHVhbCBib29sIGNvcHlUb1JlbmRlclRhcmdldChUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUg
KmRlc3QsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSAqc291cmNlKTsKKworICAgIHZpcnR1
YWwgYm9vbCBjb3B5SW1hZ2UoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBUZXh0dXJlU3RvcmFn
ZUludGVyZmFjZTJEICpzdG9yYWdlLCBHTGludCBsZXZlbCk7CisgICAgdmlydHVhbCBib29sIGNv
cHlJbWFnZShnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xl
ICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
Q3ViZSAqc3RvcmFnZSwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpOworCisgICAgYm9vbCBj
b3B5VGV4dHVyZShJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwgY29uc3QgZ2w6OlJl
Y3RhbmdsZSAmc291cmNlQXJlYSwgdW5zaWduZWQgaW50IHNvdXJjZVdpZHRoLCB1bnNpZ25lZCBp
bnQgc291cmNlSGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0
VmlldyAqZGVzdCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEsIHVuc2lnbmVkIGludCBk
ZXN0V2lkdGgsIHVuc2lnbmVkIGludCBkZXN0SGVpZ2h0LCBHTGVudW0gZGVzdEZvcm1hdCk7CisK
KyAgICB2aXJ0dWFsIGJvb2wgYmxpdFJlY3QoZ2w6OkZyYW1lYnVmZmVyICpyZWFkVGFyZ2V0LCBj
b25zdCBnbDo6UmVjdGFuZ2xlICZyZWFkUmVjdCwgZ2w6OkZyYW1lYnVmZmVyICpkcmF3VGFyZ2V0
LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZkcmF3UmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBibGl0UmVuZGVyVGFyZ2V0LCBib29sIGJsaXREZXB0aFN0ZW5jaWwpOworICAgIHZp
cnR1YWwgdm9pZCByZWFkUGl4ZWxzKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIEdMaW50
IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG91dHB1
dFBpdGNoLCBib29sIHBhY2tSZXZlcnNlUm93T3JkZXIsIEdMaW50IHBhY2tBbGlnbm1lbnQsIHZv
aWQqIHBpeGVscyk7CisKKyAgICAvLyBSZW5kZXJUYXJnZXQgY3JlYXRpb24KKyAgICB2aXJ0dWFs
IFJlbmRlclRhcmdldCAqY3JlYXRlUmVuZGVyVGFyZ2V0KFN3YXBDaGFpbiAqc3dhcENoYWluLCBi
b29sIGRlcHRoKTsKKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAqY3JlYXRlUmVuZGVyVGFyZ2V0
KGludCB3aWR0aCwgaW50IGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBzYW1wbGVzLCBi
b29sIGRlcHRoKTsKKworICAgIC8vIFNoYWRlciBvcGVyYXRpb25zCisgICAgdmlydHVhbCBTaGFk
ZXJFeGVjdXRhYmxlICpsb2FkRXhlY3V0YWJsZShjb25zdCB2b2lkICpmdW5jdGlvbiwgc2l6ZV90
IGxlbmd0aCwgcng6OlNoYWRlclR5cGUgdHlwZSk7CisgICAgdmlydHVhbCBTaGFkZXJFeGVjdXRh
YmxlICpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBjaGFy
ICpzaGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0eXBlKTsKKworICAgIC8vIEltYWdlIG9wZXJh
dGlvbnMKKyAgICB2aXJ0dWFsIEltYWdlICpjcmVhdGVJbWFnZSgpOworICAgIHZpcnR1YWwgdm9p
ZCBnZW5lcmF0ZU1pcG1hcChJbWFnZSAqZGVzdCwgSW1hZ2UgKnNvdXJjZSk7CisgICAgdmlydHVh
bCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChTd2FwQ2hhaW4gKnN3YXBD
aGFpbik7CisgICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2Uy
RChpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2FnZSwgYm9vbCBm
b3JjZVJlbmRlcmFibGUsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKyAgICB2aXJ0
dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZUN1YmUoaW50IGxldmVscywg
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxl
LCBpbnQgc2l6ZSk7CisKKyAgICAvLyBCdWZmZXIgY3JlYXRpb24KKyAgICB2aXJ0dWFsIFZlcnRl
eEJ1ZmZlciAqY3JlYXRlVmVydGV4QnVmZmVyKCk7CisgICAgdmlydHVhbCBJbmRleEJ1ZmZlciAq
Y3JlYXRlSW5kZXhCdWZmZXIoKTsKKyAgICB2aXJ0dWFsIEJ1ZmZlclN0b3JhZ2UgKmNyZWF0ZUJ1
ZmZlclN0b3JhZ2UoKTsKKworICAgIC8vIFF1ZXJ5IGFuZCBGZW5jZSBjcmVhdGlvbgorICAgIHZp
cnR1YWwgUXVlcnlJbXBsICpjcmVhdGVRdWVyeShHTGVudW0gdHlwZSk7CisgICAgdmlydHVhbCBG
ZW5jZUltcGwgKmNyZWF0ZUZlbmNlKCk7CisKKyAgICAvLyBEM0QxMS1yZW5kZXJlciBzcGVjaWZp
YyBtZXRob2RzCisgICAgSUQzRDExRGV2aWNlICpnZXREZXZpY2UoKSB7IHJldHVybiBtRGV2aWNl
OyB9CisgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqZ2V0RGV2aWNlQ29udGV4dCgpIHsgcmV0dXJu
IG1EZXZpY2VDb250ZXh0OyB9OworICAgIElEWEdJRmFjdG9yeSAqZ2V0RHhnaUZhY3RvcnkoKSB7
IHJldHVybiBtRHhnaUZhY3Rvcnk7IH07CisKKyAgICBib29sIGdldFJlbmRlclRhcmdldFJlc291
cmNlKGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVyLCB1bnNpZ25lZCBpbnQgKnN1YnJlc291
cmNlSW5kZXgsIElEM0QxMVRleHR1cmUyRCAqKnJlc291cmNlKTsKKyAgICB2b2lkIHVuYXBwbHlS
ZW5kZXJUYXJnZXRzKCk7CisgICAgdm9pZCBzZXRPbmVUaW1lUmVuZGVyVGFyZ2V0KElEM0QxMVJl
bmRlclRhcmdldFZpZXcgKnJlbmRlclRhcmdldFZpZXcpOworCisgICAgdmlydHVhbCBib29sIGdl
dExVSUQoTFVJRCAqYWRhcHRlckx1aWQpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlcmVyMTEpOworCisgICAgdm9pZCBkcmF3TGluZUxvb3Ao
R0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgaW50IG1p
bkluZGV4LCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIpOworICAgIHZvaWQgZHJhd1Ry
aWFuZ2xlRmFuKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGlj
ZXMsIGludCBtaW5JbmRleCwgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyLCBpbnQgaW5z
dGFuY2VzKTsKKworICAgIHZvaWQgcmVhZFRleHR1cmVEYXRhKElEM0QxMVRleHR1cmUyRCAqdGV4
dHVyZSwgdW5zaWduZWQgaW50IHN1YlJlc291cmNlLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVh
LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBH
THNpemVpIG91dHB1dFBpdGNoLCBib29sIHBhY2tSZXZlcnNlUm93T3JkZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgcGFja0FsaWdubWVudCwgdm9pZCAqcGl4ZWxzKTsKKworICAg
IHZvaWQgbWFza2VkQ2xlYXIoY29uc3QgZ2w6OkNsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMs
IGJvb2wgdXNpbmdFeHRlbmRlZERyYXdCdWZmZXJzKTsKKyAgICByeDo6UmFuZ2UgZ2V0Vmlld3Bv
cnRCb3VuZHMoKSBjb25zdDsKKworICAgIGJvb2wgYmxpdFJlbmRlcmJ1ZmZlclJlY3QoY29uc3Qg
Z2w6OlJlY3RhbmdsZSAmcmVhZFJlY3QsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRyYXdSZWN0LCBS
ZW5kZXJUYXJnZXQgKnJlYWRSZW5kZXJUYXJnZXQsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyVGFyZ2V0ICpkcmF3UmVuZGVyVGFyZ2V0LCBib29sIHdob2xlQnVmZmVyQ29w
eSk7CisgICAgSUQzRDExVGV4dHVyZTJEICpyZXNvbHZlTXVsdGlzYW1wbGVkVGV4dHVyZShJRDNE
MTFUZXh0dXJlMkQgKnNvdXJjZSwgdW5zaWduZWQgaW50IHN1YnJlc291cmNlKTsKKworICAgIEhN
T0RVTEUgbUQzZDExTW9kdWxlOworICAgIEhNT0RVTEUgbUR4Z2lNb2R1bGU7CisgICAgSERDIG1E
YzsKKworICAgIGJvb2wgbURldmljZUxvc3Q7CisKKyAgICB2b2lkIGluaXRpYWxpemVEZXZpY2Uo
KTsKKyAgICB2b2lkIHJlbGVhc2VEZXZpY2VSZXNvdXJjZXMoKTsKKyAgICBpbnQgZ2V0TWlub3JT
aGFkZXJNb2RlbCgpIGNvbnN0OworICAgIHZvaWQgcmVsZWFzZSgpOworCisgICAgUmVuZGVyU3Rh
dGVDYWNoZSBtU3RhdGVDYWNoZTsKKworICAgIC8vIFN1cHBvcnQgZmxhZ3MKKyAgICBib29sIG1G
bG9hdDE2VGV4dHVyZVN1cHBvcnQ7CisgICAgYm9vbCBtRmxvYXQxNkZpbHRlclN1cHBvcnQ7Cisg
ICAgYm9vbCBtRmxvYXQxNlJlbmRlclN1cHBvcnQ7CisKKyAgICBib29sIG1GbG9hdDMyVGV4dHVy
ZVN1cHBvcnQ7CisgICAgYm9vbCBtRmxvYXQzMkZpbHRlclN1cHBvcnQ7CisgICAgYm9vbCBtRmxv
YXQzMlJlbmRlclN1cHBvcnQ7CisKKyAgICBib29sIG1EWFQxVGV4dHVyZVN1cHBvcnQ7CisgICAg
Ym9vbCBtRFhUM1RleHR1cmVTdXBwb3J0OworICAgIGJvb2wgbURYVDVUZXh0dXJlU3VwcG9ydDsK
KworICAgIGJvb2wgbURlcHRoVGV4dHVyZVN1cHBvcnQ7CisKKyAgICAvLyBNdWx0aXNhbXBsZSBm
b3JtYXQgc3VwcG9ydAorICAgIHN0cnVjdCBNdWx0aXNhbXBsZVN1cHBvcnRJbmZvCisgICAgewor
ICAgICAgICB1bnNpZ25lZCBpbnQgcXVhbGl0eUxldmVsc1tEM0QxMV9NQVhfTVVMVElTQU1QTEVf
U0FNUExFX0NPVU5UXTsKKyAgICB9OworCisgICAgdHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8
RFhHSV9GT1JNQVQsIE11bHRpc2FtcGxlU3VwcG9ydEluZm8+IE11bHRpc2FtcGxlU3VwcG9ydE1h
cDsKKyAgICBNdWx0aXNhbXBsZVN1cHBvcnRNYXAgbU11bHRpc2FtcGxlU3VwcG9ydE1hcDsKKwor
ICAgIHVuc2lnbmVkIGludCBtTWF4U3VwcG9ydGVkU2FtcGxlczsKKworICAgIC8vIGN1cnJlbnQg
cmVuZGVyIHRhcmdldCBzdGF0ZXMKKyAgICB1bnNpZ25lZCBpbnQgbUFwcGxpZWRSZW5kZXJUYXJn
ZXRTZXJpYWxzW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTXTsKKyAgICB1bnNp
Z25lZCBpbnQgbUFwcGxpZWREZXB0aGJ1ZmZlclNlcmlhbDsKKyAgICB1bnNpZ25lZCBpbnQgbUFw
cGxpZWRTdGVuY2lsYnVmZmVyU2VyaWFsOworICAgIGJvb2wgbURlcHRoU3RlbmNpbEluaXRpYWxp
emVkOworICAgIGJvb2wgbVJlbmRlclRhcmdldERlc2NJbml0aWFsaXplZDsKKyAgICByeDo6UmVu
ZGVyVGFyZ2V0OjpEZXNjIG1SZW5kZXJUYXJnZXREZXNjOworICAgIHVuc2lnbmVkIGludCBtQ3Vy
RGVwdGhTaXplOworICAgIHVuc2lnbmVkIGludCBtQ3VyU3RlbmNpbFNpemU7CisKKyAgICAvLyBD
dXJyZW50bHkgYXBwbGllZCBzYW1wbGVyIHN0YXRlcworICAgIGJvb2wgbUZvcmNlU2V0VmVydGV4
U2FtcGxlclN0YXRlc1tnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdF
X1VOSVRTXTsKKyAgICBnbDo6U2FtcGxlclN0YXRlIG1DdXJWZXJ0ZXhTYW1wbGVyU3RhdGVzW2ds
OjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworCisgICAg
Ym9vbCBtRm9yY2VTZXRQaXhlbFNhbXBsZXJTdGF0ZXNbZ2w6Ok1BWF9URVhUVVJFX0lNQUdFX1VO
SVRTXTsKKyAgICBnbDo6U2FtcGxlclN0YXRlIG1DdXJQaXhlbFNhbXBsZXJTdGF0ZXNbZ2w6Ok1B
WF9URVhUVVJFX0lNQUdFX1VOSVRTXTsKKworICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIHRleHR1
cmVzCisgICAgdW5zaWduZWQgaW50IG1DdXJWZXJ0ZXhUZXh0dXJlU2VyaWFsc1tnbDo6SU1QTEVN
RU5UQVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTXTsKKyAgICB1bnNpZ25lZCBp
bnQgbUN1clBpeGVsVGV4dHVyZVNlcmlhbHNbZ2w6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRTXTsK
KworICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIGJsZW5kIHN0YXRlCisgICAgYm9vbCBtRm9yY2VT
ZXRCbGVuZFN0YXRlOworICAgIGdsOjpCbGVuZFN0YXRlIG1DdXJCbGVuZFN0YXRlOworICAgIGds
OjpDb2xvciBtQ3VyQmxlbmRDb2xvcjsKKyAgICB1bnNpZ25lZCBpbnQgbUN1clNhbXBsZU1hc2s7
CisKKyAgICAvLyBDdXJyZW50bHkgYXBwbGllZCByYXN0ZXJpemVyIHN0YXRlCisgICAgYm9vbCBt
Rm9yY2VTZXRSYXN0ZXJTdGF0ZTsKKyAgICBnbDo6UmFzdGVyaXplclN0YXRlIG1DdXJSYXN0ZXJT
dGF0ZTsKKworICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIGRlcHRoIHN0ZW5jaWwgc3RhdGUKKyAg
ICBib29sIG1Gb3JjZVNldERlcHRoU3RlbmNpbFN0YXRlOworICAgIGdsOjpEZXB0aFN0ZW5jaWxT
dGF0ZSBtQ3VyRGVwdGhTdGVuY2lsU3RhdGU7CisgICAgaW50IG1DdXJTdGVuY2lsUmVmOworICAg
IGludCBtQ3VyU3RlbmNpbEJhY2tSZWY7CisKKyAgICAvLyBDdXJyZW50bHkgYXBwbGllZCBzY2lz
c29yIHJlY3RhbmdsZQorICAgIGJvb2wgbUZvcmNlU2V0U2Npc3NvcjsKKyAgICBib29sIG1TY2lz
c29yRW5hYmxlZDsKKyAgICBnbDo6UmVjdGFuZ2xlIG1DdXJTY2lzc29yOworCisgICAgLy8gQ3Vy
cmVudGx5IGFwcGxpZWQgdmlld3BvcnQKKyAgICBib29sIG1Gb3JjZVNldFZpZXdwb3J0OworICAg
IGdsOjpSZWN0YW5nbGUgbUN1clZpZXdwb3J0OworICAgIGZsb2F0IG1DdXJOZWFyOworICAgIGZs
b2F0IG1DdXJGYXI7CisKKyAgICB1bnNpZ25lZCBpbnQgbUFwcGxpZWRJQlNlcmlhbDsKKyAgICB1
bnNpZ25lZCBpbnQgbUFwcGxpZWRTdG9yYWdlSUJTZXJpYWw7CisgICAgdW5zaWduZWQgaW50IG1B
cHBsaWVkSUJPZmZzZXQ7CisKKyAgICB1bnNpZ25lZCBpbnQgbUFwcGxpZWRQcm9ncmFtQmluYXJ5
U2VyaWFsOworICAgIGJvb2wgbUlzR2VvbWV0cnlTaGFkZXJBY3RpdmU7CisKKyAgICBkeF9WZXJ0
ZXhDb25zdGFudHMgbVZlcnRleENvbnN0YW50czsKKyAgICBkeF9WZXJ0ZXhDb25zdGFudHMgbUFw
cGxpZWRWZXJ0ZXhDb25zdGFudHM7CisgICAgSUQzRDExQnVmZmVyICptRHJpdmVyQ29uc3RhbnRC
dWZmZXJWUzsKKworICAgIGR4X1BpeGVsQ29uc3RhbnRzIG1QaXhlbENvbnN0YW50czsKKyAgICBk
eF9QaXhlbENvbnN0YW50cyBtQXBwbGllZFBpeGVsQ29uc3RhbnRzOworICAgIElEM0QxMUJ1ZmZl
ciAqbURyaXZlckNvbnN0YW50QnVmZmVyUFM7CisKKyAgICAvLyBWZXJ0ZXgsIGluZGV4IGFuZCBp
bnB1dCBsYXlvdXRzCisgICAgVmVydGV4RGF0YU1hbmFnZXIgKm1WZXJ0ZXhEYXRhTWFuYWdlcjsK
KyAgICBJbmRleERhdGFNYW5hZ2VyICptSW5kZXhEYXRhTWFuYWdlcjsKKyAgICBJbnB1dExheW91
dENhY2hlIG1JbnB1dExheW91dENhY2hlOworCisgICAgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRl
cmZhY2UgKm1MaW5lTG9vcElCOworICAgIFN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlICpt
VHJpYW5nbGVGYW5JQjsKKworICAgIC8vIFRleHR1cmUgY29weSByZXNvdXJjZXMKKyAgICBib29s
IG1Db3B5UmVzb3VyY2VzSW5pdGlhbGl6ZWQ7CisgICAgSUQzRDExQnVmZmVyICptQ29weVZCOwor
ICAgIElEM0QxMVNhbXBsZXJTdGF0ZSAqbUNvcHlTYW1wbGVyOworICAgIElEM0QxMUlucHV0TGF5
b3V0ICptQ29weUlMOworICAgIElEM0QxMVZlcnRleFNoYWRlciAqbUNvcHlWUzsKKyAgICBJRDNE
MTFQaXhlbFNoYWRlciAqbUNvcHlSR0JBUFM7CisgICAgSUQzRDExUGl4ZWxTaGFkZXIgKm1Db3B5
UkdCUFM7CisgICAgSUQzRDExUGl4ZWxTaGFkZXIgKm1Db3B5THVtUFM7CisgICAgSUQzRDExUGl4
ZWxTaGFkZXIgKm1Db3B5THVtQWxwaGFQUzsKKworICAgIC8vIE1hc2tlZCBjbGVhciByZXNvdXJj
ZXMKKyAgICBib29sIG1DbGVhclJlc291cmNlc0luaXRpYWxpemVkOworICAgIElEM0QxMUJ1ZmZl
ciAqbUNsZWFyVkI7CisgICAgSUQzRDExSW5wdXRMYXlvdXQgKm1DbGVhcklMOworICAgIElEM0Qx
MVZlcnRleFNoYWRlciAqbUNsZWFyVlM7CisgICAgSUQzRDExUGl4ZWxTaGFkZXIgKm1DbGVhclNp
bmdsZVBTOworICAgIElEM0QxMVBpeGVsU2hhZGVyICptQ2xlYXJNdWx0aXBsZVBTOworICAgIElE
M0QxMVJhc3Rlcml6ZXJTdGF0ZSAqbUNsZWFyU2Npc3NvclJTOworICAgIElEM0QxMVJhc3Rlcml6
ZXJTdGF0ZSAqbUNsZWFyTm9TY2lzc29yUlM7CisKKyAgICAvLyBTeW5jIHF1ZXJ5CisgICAgSUQz
RDExUXVlcnkgKm1TeW5jUXVlcnk7CisKKyAgICBJRDNEMTFEZXZpY2UgKm1EZXZpY2U7CisgICAg
RDNEX0ZFQVRVUkVfTEVWRUwgbUZlYXR1cmVMZXZlbDsKKyAgICBJRDNEMTFEZXZpY2VDb250ZXh0
ICptRGV2aWNlQ29udGV4dDsKKyAgICBJRFhHSUFkYXB0ZXIgKm1EeGdpQWRhcHRlcjsKKyAgICBE
WEdJX0FEQVBURVJfREVTQyBtQWRhcHRlckRlc2NyaXB0aW9uOworICAgIGNoYXIgbURlc2NyaXB0
aW9uWzEyOF07CisgICAgSURYR0lGYWN0b3J5ICptRHhnaUZhY3Rvcnk7CisKKyAgICAvLyBDYWNo
ZWQgZGV2aWNlIGNhcHMKKyAgICBib29sIG1CR1JBVGV4dHVyZVN1cHBvcnQ7Cit9OworCit9Cisj
ZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUkVSMTFfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjIwIEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IFJlbmRlcmVyLmNwcDogSW1wbGVtZW50cyBFR0wgZGVwZW5kZW5jaWVzIGZvciBjcmVhdGluZyBh
bmQgZGVzdHJveWluZyBSZW5kZXJlciBpbnN0YW5jZXMuCisKKyNpbmNsdWRlIDxFR0wvZWdsZXh0
Lmg+CisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJv
Z3JhbS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvUmVuZGVyZXIxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIK
KworI2lmICFkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0QxMSkKKy8vIEVuYWJsZXMgdXNlIG9mIHRo
ZSBEaXJlY3QzRCAxMSBBUEkgZm9yIGEgZGVmYXVsdCBkaXNwbGF5LCB3aGVuIGF2YWlsYWJsZQor
I2RlZmluZSBBTkdMRV9FTkFCTEVfRDNEMTEgMAorI2VuZGlmCisKK25hbWVzcGFjZSByeAorewor
CitSZW5kZXJlcjo6UmVuZGVyZXIoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSA6IG1EaXNwbGF5KGRp
c3BsYXkpCit7CisgICAgbUQzZENvbXBpbGVyTW9kdWxlID0gTlVMTDsKKyAgICBtRDNEQ29tcGls
ZUZ1bmMgPSBOVUxMOworfQorCitSZW5kZXJlcjo6flJlbmRlcmVyKCkKK3sKKyAgICBpZiAobUQz
ZENvbXBpbGVyTW9kdWxlKQorICAgIHsKKyAgICAgICAgRnJlZUxpYnJhcnkobUQzZENvbXBpbGVy
TW9kdWxlKTsKKyAgICAgICAgbUQzZENvbXBpbGVyTW9kdWxlID0gTlVMTDsKKyAgICB9Cit9CisK
K2Jvb2wgUmVuZGVyZXI6OmluaXRpYWxpemVDb21waWxlcigpCit7CisjaWYgZGVmaW5lZChBTkdM
RV9QUkVMT0FERURfRDNEQ09NUElMRVJfTU9EVUxFX05BTUVTKQorICAgIC8vIEZpbmQgYSBEM0RD
b21waWxlciBtb2R1bGUgdGhhdCBoYWQgYWxyZWFkeSBiZWVuIGxvYWRlZCBiYXNlZCBvbiBhIHBy
ZWRlZmluZWQgbGlzdCBvZiB2ZXJzaW9ucy4KKyAgICBzdGF0aWMgVENIQVIqIGQzZENvbXBpbGVy
TmFtZXNbXSA9IEFOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVM7CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFycmF5U2l6ZShkM2RDb21waWxlck5hbWVzKTsgKytp
KQorICAgIHsKKyAgICAgICAgaWYgKEdldE1vZHVsZUhhbmRsZUV4KDAsIGQzZENvbXBpbGVyTmFt
ZXNbaV0sICZtRDNkQ29tcGlsZXJNb2R1bGUpKQorICAgICAgICB7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgLy8gTG9hZCB0aGUgdmVyc2lvbiBvZiB0
aGUgRDNEQ29tcGlsZXIgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgRGlyZWN0M0QgdmVyc2lvbiBB
TkdMRSB3YXMgYnVpbHQgd2l0aC4KKyAgICBtRDNkQ29tcGlsZXJNb2R1bGUgPSBMb2FkTGlicmFy
eShEM0RDT01QSUxFUl9ETEwpOworI2VuZGlmICAvLyBBTkdMRV9QUkVMT0FERURfRDNEQ09NUElM
RVJfTU9EVUxFX05BTUVTCisKKyAgICBpZiAoIW1EM2RDb21waWxlck1vZHVsZSkKKyAgICB7Cisg
ICAgICAgIEVSUigiTm8gRDNEIGNvbXBpbGVyIG1vZHVsZSBmb3VuZCAtIGFib3J0aW5nIVxuIik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtRDNEQ29tcGlsZUZ1bmMgPSBy
ZWludGVycHJldF9jYXN0PHBDb21waWxlRnVuYz4oR2V0UHJvY0FkZHJlc3MobUQzZENvbXBpbGVy
TW9kdWxlLCAiRDNEQ29tcGlsZSIpKTsKKyAgICBBU1NFUlQobUQzRENvbXBpbGVGdW5jKTsKKwor
ICAgIHJldHVybiBtRDNEQ29tcGlsZUZ1bmMgIT0gTlVMTDsKK30KKworLy8gQ29tcGlsZXMgSExT
TCBjb2RlIGludG8gZXhlY3V0YWJsZSBiaW5hcmllcworU2hhZGVyQmxvYiAqUmVuZGVyZXI6OmNv
bXBpbGVUb0JpbmFyeShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgY2hhciAqaGxzbCwgY29u
c3QgY2hhciAqcHJvZmlsZSwgVUlOVCBvcHRpbWl6YXRpb25GbGFncywgYm9vbCBhbHRlcm5hdGVG
bGFncykKK3sKKyAgICBpZiAoIWhsc2wpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9CisKKyAgICBIUkVTVUxUIHJlc3VsdCA9IFNfT0s7CisgICAgVUlOVCBmbGFncyA9IDA7Cisg
ICAgc3RkOjpzdHJpbmcgc291cmNlVGV4dDsKKyAgICBpZiAoZ2w6OnBlcmZBY3RpdmUoKSkKKyAg
ICB7CisgICAgICAgIGZsYWdzIHw9IEQzRENPTVBJTEVfREVCVUc7CisKKyNpZmRlZiBOREVCVUcK
KyAgICAgICAgZmxhZ3MgfD0gb3B0aW1pemF0aW9uRmxhZ3M7CisjZWxzZQorICAgICAgICBmbGFn
cyB8PSBEM0RDT01QSUxFX1NLSVBfT1BUSU1JWkFUSU9OOworI2VuZGlmCisKKyAgICAgICAgc3Rk
OjpzdHJpbmcgc291cmNlUGF0aCA9IGdldFRlbXBQYXRoKCk7CisgICAgICAgIHNvdXJjZVRleHQg
PSBzdGQ6OnN0cmluZygiI2xpbmUgMiBcIiIpICsgc291cmNlUGF0aCArIHN0ZDo6c3RyaW5nKCJc
IlxuXG4iKSArIHN0ZDo6c3RyaW5nKGhsc2wpOworICAgICAgICB3cml0ZUZpbGUoc291cmNlUGF0
aC5jX3N0cigpLCBzb3VyY2VUZXh0LmNfc3RyKCksIHNvdXJjZVRleHQuc2l6ZSgpKTsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZmxhZ3MgfD0gb3B0aW1pemF0aW9uRmxhZ3M7Cisg
ICAgICAgIHNvdXJjZVRleHQgPSBobHNsOworICAgIH0KKworICAgIC8vIFNvbWV0aW1lcyBEM0RD
b21waWxlIHdpbGwgZmFpbCB3aXRoIHRoZSBkZWZhdWx0IGNvbXBpbGF0aW9uIGZsYWdzIGZvciBj
b21wbGljYXRlZCBzaGFkZXJzIHdoZW4gaXQgd291bGQgb3RoZXJ3aXNlIHBhc3Mgd2l0aCBhbHRl
cm5hdGl2ZSBvcHRpb25zLgorICAgIC8vIFRyeSB0aGUgZGVmYXVsdCBmbGFncyBmaXJzdCBhbmQg
aWYgY29tcGlsYXRpb24gZmFpbHMsIHRyeSBzb21lIGFsdGVybmF0aXZlcy4KKyAgICBjb25zdCBz
dGF0aWMgVUlOVCBleHRyYUZsYWdzW10gPQorICAgIHsKKyAgICAgICAgMCwKKyAgICAgICAgRDNE
Q09NUElMRV9BVk9JRF9GTE9XX0NPTlRST0wsCisgICAgICAgIEQzRENPTVBJTEVfUFJFRkVSX0ZM
T1dfQ09OVFJPTAorICAgIH07CisKKyAgICBjb25zdCBzdGF0aWMgY2hhciAqIGNvbnN0IGV4dHJh
RmxhZ05hbWVzW10gPQorICAgIHsKKyAgICAgICAgImRlZmF1bHQiLAorICAgICAgICAiYXZvaWQg
ZmxvdyBjb250cm9sIiwKKyAgICAgICAgInByZWZlciBmbG93IGNvbnRyb2wiCisgICAgfTsKKwor
ICAgIGludCBhdHRlbXB0cyA9IGFsdGVybmF0ZUZsYWdzID8gQXJyYXlTaXplKGV4dHJhRmxhZ3Mp
IDogMTsKKyAgICBwRDNEQ29tcGlsZSBjb21waWxlRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cEQz
RENvbXBpbGU+KG1EM0RDb21waWxlRnVuYyk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRl
bXB0czsgKytpKQorICAgIHsKKyAgICAgICAgSUQzREJsb2IgKmVycm9yTWVzc2FnZSA9IE5VTEw7
CisgICAgICAgIElEM0RCbG9iICpiaW5hcnkgPSBOVUxMOworCisgICAgICAgIHJlc3VsdCA9IGNv
bXBpbGVGdW5jKGhsc2wsIHN0cmxlbihobHNsKSwgZ2w6OmdfZmFrZXBhdGgsIE5VTEwsIE5VTEws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYWluIiwgcHJvZmlsZSwgZmxhZ3MgfCBl
eHRyYUZsYWdzW2ldLCAwLCAmYmluYXJ5LCAmZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgaWYgKGVy
cm9yTWVzc2FnZSkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZSA9
IChjb25zdCBjaGFyKillcnJvck1lc3NhZ2UtPkdldEJ1ZmZlclBvaW50ZXIoKTsKKworICAgICAg
ICAgICAgaW5mb0xvZy5hcHBlbmRTYW5pdGl6ZWQobWVzc2FnZSk7CisgICAgICAgICAgICBUUkFD
RSgiXG4lcyIsIGhsc2wpOworICAgICAgICAgICAgVFJBQ0UoIlxuJXMiLCBtZXNzYWdlKTsKKwor
ICAgICAgICAgICAgZXJyb3JNZXNzYWdlLT5SZWxlYXNlKCk7CisgICAgICAgICAgICBlcnJvck1l
c3NhZ2UgPSBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKFNoYWRlckJsb2IqKWJpbmFyeTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQg
PT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCAoU2hhZGVyQmxvYiopIE5VTEwpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpbmZvTG9nLmFwcGVuZCgiV2FybmluZzogRDNEIHNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQg
d2l0aCAiKTsKKyAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKGV4dHJhRmxhZ05hbWVzW2ldKTsK
KyAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCIgZmxhZ3MuIik7CisgICAgICAgICAgICBpZiAo
aSArIDEgPCBhdHRlbXB0cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbmZvTG9n
LmFwcGVuZCgiIFJldHJ5aW5nIHdpdGggIik7CisgICAgICAgICAgICAgICAgaW5mb0xvZy5hcHBl
bmQoZXh0cmFGbGFnTmFtZXNbaSArIDFdKTsKKyAgICAgICAgICAgICAgICBpbmZvTG9nLmFwcGVu
ZCgiLlxuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
TlVMTDsKK30KKworfQorCitleHRlcm4gIkMiCit7CisKK3J4OjpSZW5kZXJlciAqZ2xDcmVhdGVS
ZW5kZXJlcihlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIEhEQyBoRGMsIEVHTE5hdGl2ZURpc3BsYXlU
eXBlIGRpc3BsYXlJZCkKK3sKKyAgICByeDo6UmVuZGVyZXIgKnJlbmRlcmVyID0gTlVMTDsKKyAg
ICBFR0xpbnQgc3RhdHVzID0gRUdMX0JBRF9BTExPQzsKKyAgICAKKyAgICBpZiAoQU5HTEVfRU5B
QkxFX0QzRDExIHx8CisgICAgICAgIGRpc3BsYXlJZCA9PSBFR0xfRDNEMTFfRUxTRV9EM0Q5X0RJ
U1BMQVlfQU5HTEUgfHwKKyAgICAgICAgZGlzcGxheUlkID09IEVHTF9EM0QxMV9PTkxZX0RJU1BM
QVlfQU5HTEUpCisgICAgeworICAgICAgICByZW5kZXJlciA9IG5ldyByeDo6UmVuZGVyZXIxMShk
aXNwbGF5LCBoRGMpOworICAgIAorICAgICAgICBpZiAocmVuZGVyZXIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXR1cyA9IHJlbmRlcmVyLT5pbml0aWFsaXplKCk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoc3RhdHVzID09IEVHTF9TVUNDRVNTKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gcmVuZGVyZXI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZGlzcGxheUlk
ID09IEVHTF9EM0QxMV9PTkxZX0RJU1BMQVlfQU5HTEUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmFpbGVkIHRvIGNyZWF0ZSBh
IEQzRDExIHJlbmRlcmVyLCB0cnkgY3JlYXRpbmcgYSBEM0Q5IHJlbmRlcmVyCisgICAgICAgIGRl
bGV0ZSByZW5kZXJlcjsKKyAgICB9CisKKyAgICBib29sIHNvZnR3YXJlRGV2aWNlID0gKGRpc3Bs
YXlJZCA9PSBFR0xfU09GVFdBUkVfRElTUExBWV9BTkdMRSk7CisgICAgcmVuZGVyZXIgPSBuZXcg
cng6OlJlbmRlcmVyOShkaXNwbGF5LCBoRGMsIHNvZnR3YXJlRGV2aWNlKTsKKyAgICAKKyAgICBp
ZiAocmVuZGVyZXIpCisgICAgeworICAgICAgICBzdGF0dXMgPSByZW5kZXJlci0+aW5pdGlhbGl6
ZSgpOworICAgIH0KKworICAgIGlmIChzdGF0dXMgPT0gRUdMX1NVQ0NFU1MpCisgICAgeworICAg
ICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3Zv
aWQgZ2xEZXN0cm95UmVuZGVyZXIocng6OlJlbmRlcmVyICpyZW5kZXJlcikKK3sKKyAgICBkZWxl
dGUgcmVuZGVyZXI7Cit9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI0NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVyZXIuaDogRGVmaW5lcyBhIGJh
Y2stZW5kIHNwZWNpZmljIGNsYXNzIHRoYXQgaGlkZXMgdGhlIGRldGFpbHMgb2YgdGhlCisvLyBp
bXBsZW1lbnRhdGlvbi1zcGVjaWZpYyByZW5kZXJlci4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVO
REVSRVJfUkVOREVSRVJfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUkVSX0hf
CisKKyNpbmNsdWRlICJsaWJHTEVTdjIvVW5pZm9ybS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9h
bmdsZXR5cGVzLmgiCisKKyNpZiAhZGVmaW5lZChBTkdMRV9DT01QSUxFX09QVElNSVpBVElPTl9M
RVZFTCkKKyNkZWZpbmUgQU5HTEVfQ09NUElMRV9PUFRJTUlaQVRJT05fTEVWRUwgRDNEQ09NUElM
RV9PUFRJTUlaQVRJT05fTEVWRUwzCisjZW5kaWYKKworY29uc3QgaW50IHZlcnNpb25XaW5kb3dz
VmlzdGEgPSBNQUtFV09SRCgweDAwLCAweDA2KTsKK2NvbnN0IGludCB2ZXJzaW9uV2luZG93czcg
PSBNQUtFV09SRCgweDAxLCAweDA2KTsKKworLy8gUmV0dXJuIHRoZSB2ZXJzaW9uIG9mIHRoZSBv
cGVyYXRpbmcgc3lzdGVtIGluIGEgZm9ybWF0IHN1aXRhYmxlIGZvciBvcmRlcmluZworLy8gY29t
cGFyaXNvbi4KK2lubGluZSBpbnQgZ2V0Q29tcGFyYWJsZU9TVmVyc2lvbigpCit7CisgICAgRFdP
UkQgdmVyc2lvbiA9IEdldFZlcnNpb24oKTsKKyAgICBpbnQgbWFqb3JWZXJzaW9uID0gTE9CWVRF
KExPV09SRCh2ZXJzaW9uKSk7CisgICAgaW50IG1pbm9yVmVyc2lvbiA9IEhJQllURShMT1dPUkQo
dmVyc2lvbikpOworICAgIHJldHVybiBNQUtFV09SRChtaW5vclZlcnNpb24sIG1ham9yVmVyc2lv
bik7Cit9CisKK25hbWVzcGFjZSBlZ2wKK3sKK2NsYXNzIERpc3BsYXk7Cit9CisKK25hbWVzcGFj
ZSBnbAoreworY2xhc3MgSW5mb0xvZzsKK2NsYXNzIFByb2dyYW1CaW5hcnk7CitjbGFzcyBWZXJ0
ZXhBdHRyaWJ1dGU7CitjbGFzcyBCdWZmZXI7CitjbGFzcyBUZXh0dXJlOworY2xhc3MgRnJhbWVi
dWZmZXI7Cit9CisKK25hbWVzcGFjZSByeAoreworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZh
Y2UyRDsKK2NsYXNzIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTsKK2NsYXNzIFZlcnRleEJ1
ZmZlcjsKK2NsYXNzIEluZGV4QnVmZmVyOworY2xhc3MgUXVlcnlJbXBsOworY2xhc3MgRmVuY2VJ
bXBsOworY2xhc3MgQnVmZmVyU3RvcmFnZTsKK2NsYXNzIEJsaXQ7CitzdHJ1Y3QgVHJhbnNsYXRl
ZEluZGV4RGF0YTsKK2NsYXNzIFNoYWRlckV4ZWN1dGFibGU7CitjbGFzcyBTd2FwQ2hhaW47Citj
bGFzcyBSZW5kZXJUYXJnZXQ7CitjbGFzcyBJbWFnZTsKK2NsYXNzIFRleHR1cmVTdG9yYWdlOwor
Cit0eXBlZGVmIHZvaWQgKiBTaGFkZXJCbG9iOwordHlwZWRlZiB2b2lkICgqcENvbXBpbGVGdW5j
KSgpOworCitzdHJ1Y3QgQ29uZmlnRGVzYworeworICAgIEdMZW51bSAgcmVuZGVyVGFyZ2V0Rm9y
bWF0OworICAgIEdMZW51bSAgZGVwdGhTdGVuY2lsRm9ybWF0OworICAgIEdMaW50ICAgbXVsdGlT
YW1wbGU7CisgICAgYm9vbCAgICBmYXN0Q29uZmlnOworfTsKKworc3RydWN0IGR4X1ZlcnRleENv
bnN0YW50cworeworICAgIGZsb2F0IGRlcHRoUmFuZ2VbNF07CisgICAgZmxvYXQgdmlld0FkanVz
dFs0XTsKK307CisKK3N0cnVjdCBkeF9QaXhlbENvbnN0YW50cworeworICAgIGZsb2F0IGRlcHRo
UmFuZ2VbNF07CisgICAgZmxvYXQgdmlld0Nvb3Jkc1s0XTsKKyAgICBmbG9hdCBkZXB0aEZyb250
WzRdOworfTsKKworZW51bSBTaGFkZXJUeXBlCit7CisgICAgU0hBREVSX1ZFUlRFWCwKKyAgICBT
SEFERVJfUElYRUwsCisgICAgU0hBREVSX0dFT01FVFJZCit9OworCitjbGFzcyBSZW5kZXJlcgor
eworICBwdWJsaWM6CisgICAgZXhwbGljaXQgUmVuZGVyZXIoZWdsOjpEaXNwbGF5ICpkaXNwbGF5
KTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJlcigpOworCisgICAgdmlydHVhbCBFR0xpbnQgaW5pdGlh
bGl6ZSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVzZXREZXZpY2UoKSA9IDA7CisKKyAgICB2
aXJ0dWFsIGludCBnZW5lcmF0ZUNvbmZpZ3MoQ29uZmlnRGVzYyAqKmNvbmZpZ0Rlc2NMaXN0KSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvbmZpZ3MoQ29uZmlnRGVzYyAqY29uZmlnRGVz
Y0xpc3QpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzeW5jKGJvb2wgYmxvY2spID0gMDsKKwor
ICAgIHZpcnR1YWwgU3dhcENoYWluICpjcmVhdGVTd2FwQ2hhaW4oSFdORCB3aW5kb3csIEhBTkRM
RSBzaGFyZUhhbmRsZSwgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZl
ckZvcm1hdCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFNhbXBsZXJTdGF0ZShnbDo6U2Ft
cGxlclR5cGUgdHlwZSwgaW50IGluZGV4LCBjb25zdCBnbDo6U2FtcGxlclN0YXRlICZzYW1wbGVy
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRleHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUs
IGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBzZXRSYXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSAmcmFzdGVyU3Rh
dGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmxlbmRTdGF0ZShjb25zdCBnbDo6QmxlbmRT
dGF0ZSAmYmxlbmRTdGF0ZSwgY29uc3QgZ2w6OkNvbG9yICZibGVuZENvbG9yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVNYXNrKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxT
dGF0ZSAmZGVwdGhTdGVuY2lsU3RhdGUsIGludCBzdGVuY2lsUmVmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RlbmNpbEJhY2tSZWYsIGJvb2wgZnJvbnRGYWNl
Q0NXKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Npc3NvclJlY3RhbmdsZShjb25zdCBn
bDo6UmVjdGFuZ2xlICZzY2lzc29yLCBib29sIGVuYWJsZWQpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgc2V0Vmlld3BvcnQoY29uc3QgZ2w6OlJlY3RhbmdsZSAmdmlld3BvcnQsIGZsb2F0IHpOZWFy
LCBmbG9hdCB6RmFyLCBHTGVudW0gZHJhd01vZGUsIEdMZW51bSBmcm9udEZhY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlVmlld3BvcnQpID0gMDsKKworICAgIHZp
cnR1YWwgYm9vbCBhcHBseVJlbmRlclRhcmdldChnbDo6RnJhbWVidWZmZXIgKmZyYW1lQnVmZmVy
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5U2hhZGVycyhnbDo6UHJvZ3JhbUJpbmFyeSAq
cHJvZ3JhbUJpbmFyeSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcHBseVVuaWZvcm1zKGdsOjpQ
cm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5LCBnbDo6VW5pZm9ybUFycmF5ICp1bmlmb3JtQXJy
YXkpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHlQcmltaXRpdmVUeXBlKEdMZW51bSBwcmlt
aXRpdmVUeXBlLCBHTHNpemVpIGVsZW1lbnRDb3VudCkgPSAwOworICAgIHZpcnR1YWwgR0xlbnVt
IGFwcGx5VmVydGV4QnVmZmVyKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5LCBnbDo6
VmVydGV4QXR0cmlidXRlIHZlcnRleEF0dHJpYnV0ZXNbXSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkg
Y291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKSA9IDA7CisgICAgdmlydHVhbCBHTGVudW0gYXBwbHlJ
bmRleEJ1ZmZlcihjb25zdCBHTHZvaWQgKmluZGljZXMsIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJh
eUJ1ZmZlciwgR0xzaXplaSBjb3VudCwgR0xlbnVtIG1vZGUsIEdMZW51bSB0eXBlLCBUcmFuc2xh
dGVkSW5kZXhEYXRhICppbmRleEluZm8pID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBkcmF3QXJy
YXlzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQs
IEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGdsOjpCdWZmZXIgKmVsZW1lbnRB
cnJheUJ1ZmZlciwgY29uc3QgVHJhbnNsYXRlZEluZGV4RGF0YSAmaW5kZXhJbmZvLCBHTHNpemVp
IGluc3RhbmNlcykgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyKGNvbnN0IGdsOjpDbGVh
clBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lQnVmZmVyKSA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0FsbFN0YXRlRGlydHkoKSA9IDA7CisKKyAgICAv
LyBsb3N0IGRldmljZQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlEZXZpY2VMb3N0KCkgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0RldmljZUxvc3QoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHRl
c3REZXZpY2VMb3N0KGJvb2wgbm90aWZ5KSA9IDA7CisgICAgdmlydHVhbCBib29sIHRlc3REZXZp
Y2VSZXNldHRhYmxlKCkgPSAwOworCisgICAgLy8gUmVuZGVyZXIgY2FwYWJpbGl0aWVzCisgICAg
dmlydHVhbCBEV09SRCBnZXRBZGFwdGVyVmVuZG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
c3RkOjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIEdVSUQgZ2V0QWRhcHRlcklkZW50aWZpZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0QkdSQVRleHR1cmVTdXBwb3J0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBnZXREWFQxVGV4dHVyZVN1cHBvcnQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGdldERYVDNU
ZXh0dXJlU3VwcG9ydCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RFhUNVRleHR1cmVTdXBw
b3J0KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRFdmVudFF1ZXJ5U3VwcG9ydCgpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0RmxvYXQzMlRleHR1cmVTdXBwb3J0KGJvb2wgKmZpbHRlcmlu
ZywgYm9vbCAqcmVuZGVyYWJsZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRGbG9hdDE2VGV4
dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5nLCBib29sICpyZW5kZXJhYmxlKSA9IDA7CisgICAg
dmlydHVhbCBib29sIGdldEx1bWluYW5jZVRleHR1cmVTdXBwb3J0KCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBnZXRMdW1pbmFuY2VBbHBoYVRleHR1cmVTdXBwb3J0KCkgPSAwOworICAgIGJvb2wg
Z2V0VmVydGV4VGV4dHVyZVN1cHBvcnQoKSBjb25zdCB7IHJldHVybiBnZXRNYXhWZXJ0ZXhUZXh0
dXJlSW1hZ2VVbml0cygpID4gMDsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldE1heFZl
cnRleFRleHR1cmVJbWFnZVVuaXRzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQg
aW50IGdldE1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9y
bVZlY3RvcnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4VmVy
dGV4VW5pZm9ybVZlY3RvcnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQg
Z2V0TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVu
c2lnbmVkIGludCBnZXRNYXhWYXJ5aW5nVmVjdG9ycygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGdldERlcHRoVGV4dHVyZVN1cHBvcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0SW5zdGFuY2luZ1N1cHBvcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGdl
dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5U3VwcG9ydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGZsb2F0IGdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBnZXRTaGFyZUhhbmRsZVN1cHBvcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGdldERlcml2YXRpdmVJbnN0cnVjdGlvblN1cHBvcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGdldFBvc3RTdWJCdWZmZXJTdXBwb3J0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCBpbnQgZ2V0TWFqb3JTaGFkZXJNb2RlbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0
IGdldE1heFBvaW50U2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBnZXRNYXhWaWV3
cG9ydERpbWVuc2lvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBnZXRNYXhUZXh0dXJl
V2lkdGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgZ2V0TWF4VGV4dHVyZUhlaWdodCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0MzJCaXRJbmRleFN1cHBvcnQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBpbnQgZ2V0TWluU3dhcEludGVydmFsKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgaW50IGdldE1heFN3YXBJbnRlcnZhbCgpIGNvbnN0ID0gMDsKKworICAgIHZp
cnR1YWwgR0xzaXplaSBnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgY29uc3QgPSAwOworCisgICAg
dmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4UmVuZGVyVGFyZ2V0cygpIGNvbnN0ID0gMDsKKwor
ICAgIC8vIFBpeGVsIG9wZXJhdGlvbnMKKyAgICB2aXJ0dWFsIGJvb2wgY29weVRvUmVuZGVyVGFy
Z2V0KFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKmRlc3QsIFRleHR1cmVTdG9yYWdlSW50ZXJm
YWNlMkQgKnNvdXJjZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9SZW5kZXJUYXJnZXQo
VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpkZXN0LCBUZXh0dXJlU3RvcmFnZUludGVyZmFj
ZUN1YmUgKnNvdXJjZSkgPSAwOworCisgICAgdmlydHVhbCBib29sIGNvcHlJbWFnZShnbDo6RnJh
bWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBH
TGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIEdM
aW50IGxldmVsKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNvcHlJbWFnZShnbDo6RnJhbWVidWZm
ZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBHTGVudW0g
ZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSAqc3RvcmFnZSwgR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBibGl0UmVjdChn
bDo6RnJhbWVidWZmZXIgKnJlYWRUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlYWRSZWN0
LCBnbDo6RnJhbWVidWZmZXIgKmRyYXdUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRyYXdS
ZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQsIGJv
b2wgYmxpdERlcHRoU3RlbmNpbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkUGl4ZWxzKGds
OjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG91dHB1dFBpdGNoLCBib29sIHBhY2tSZXZlcnNl
Um93T3JkZXIsIEdMaW50IHBhY2tBbGlnbm1lbnQsIHZvaWQqIHBpeGVscykgPSAwOworCisgICAg
Ly8gUmVuZGVyVGFyZ2V0IGNyZWF0aW9uCisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmNyZWF0
ZVJlbmRlclRhcmdldChTd2FwQ2hhaW4gKnN3YXBDaGFpbiwgYm9vbCBkZXB0aCkgPSAwOworICAg
IHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpjcmVhdGVSZW5kZXJUYXJnZXQoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMsIGJvb2wgZGVwdGgpID0gMDsK
KworICAgIC8vIFNoYWRlciBvcGVyYXRpb25zCisgICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxl
ICpsb2FkRXhlY3V0YWJsZShjb25zdCB2b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCwgcng6
OlNoYWRlclR5cGUgdHlwZSkgPSAwOworICAgIHZpcnR1YWwgU2hhZGVyRXhlY3V0YWJsZSAqY29t
cGlsZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgY2hhciAqc2hhZGVy
SExTTCwgcng6OlNoYWRlclR5cGUgdHlwZSkgPSAwOworCisgICAgLy8gSW1hZ2Ugb3BlcmF0aW9u
cworICAgIHZpcnR1YWwgSW1hZ2UgKmNyZWF0ZUltYWdlKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBnZW5lcmF0ZU1pcG1hcChJbWFnZSAqZGVzdCwgSW1hZ2UgKnNvdXJjZSkgPSAwOworICAgIHZp
cnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoU3dhcENoYWluICpz
d2FwQ2hhaW4pID0gMDsKKyAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJl
U3RvcmFnZTJEKGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdl
LCBib29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpID0g
MDsKKyAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZUN1YmUo
aW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gdXNhZ2UsIGJvb2wgZm9y
Y2VSZW5kZXJhYmxlLCBpbnQgc2l6ZSkgPSAwOworCisgICAgLy8gQnVmZmVyIGNyZWF0aW9uCisg
ICAgdmlydHVhbCBWZXJ0ZXhCdWZmZXIgKmNyZWF0ZVZlcnRleEJ1ZmZlcigpID0gMDsKKyAgICB2
aXJ0dWFsIEluZGV4QnVmZmVyICpjcmVhdGVJbmRleEJ1ZmZlcigpID0gMDsKKyAgICB2aXJ0dWFs
IEJ1ZmZlclN0b3JhZ2UgKmNyZWF0ZUJ1ZmZlclN0b3JhZ2UoKSA9IDA7CisKKyAgICAvLyBRdWVy
eSBhbmQgRmVuY2UgY3JlYXRpb24KKyAgICB2aXJ0dWFsIFF1ZXJ5SW1wbCAqY3JlYXRlUXVlcnko
R0xlbnVtIHR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIEZlbmNlSW1wbCAqY3JlYXRlRmVuY2UoKSA9
IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TFVJRChMVUlEICphZGFwdGVyTHVpZCkgY29uc3Qg
PSAwOworCisgIHByb3RlY3RlZDoKKyAgICBib29sIGluaXRpYWxpemVDb21waWxlcigpOworICAg
IFNoYWRlckJsb2IgKmNvbXBpbGVUb0JpbmFyeShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3Qg
Y2hhciAqaGxzbCwgY29uc3QgY2hhciAqcHJvZmlsZSwgVUlOVCBvcHRpbWl6YXRpb25GbGFncywg
Ym9vbCBhbHRlcm5hdGVGbGFncyk7CisKKyAgICBlZ2w6OkRpc3BsYXkgKm1EaXNwbGF5OworCisg
IHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlcmVyKTsKKworICAg
IEhNT0RVTEUgbUQzZENvbXBpbGVyTW9kdWxlOworICAgIHBDb21waWxlRnVuYyBtRDNEQ29tcGls
ZUZ1bmM7Cit9OworCit9CisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUkVSX0hf
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1No
YWRlckNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJDYWNoZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJDYWNoZS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDExMCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFNoYWRlckNhY2hl
OiBEZWZpbmVzIHJ4OjpTaGFkZXJDYWNoZSwgYSBjYWNoZSBvZiBEaXJlY3QzRCBzaGFkZXIgb2Jq
ZWN0cworLy8ga2V5ZWQgYnkgdGhlaXIgYnl0ZSBjb2RlLgorCisjaWZuZGVmIExJQkdMRVNWMl9S
RU5ERVJFUl9TSEFERVJfQ0FDSEVfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1NIQURF
Ul9DQUNIRV9IXworCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSByeAor
ewordGVtcGxhdGUgPHR5cGVuYW1lIFNoYWRlck9iamVjdD4KK2NsYXNzIFNoYWRlckNhY2hlCit7
CisgIHB1YmxpYzoKKyAgICBTaGFkZXJDYWNoZSgpIDogbURldmljZShOVUxMKQorICAgIHsKKyAg
ICB9CisKKyAgICB+U2hhZGVyQ2FjaGUoKQorICAgIHsKKyAgICAgICAgLy8gQ2FsbCBjbGVhciB3
aGlsZSB0aGUgZGV2aWNlIGlzIHN0aWxsIHZhbGlkLgorICAgICAgICBBU1NFUlQobU1hcC5lbXB0
eSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGluaXRpYWxpemUoSURpcmVjdDNERGV2aWNlOSogZGV2
aWNlKQorICAgIHsKKyAgICAgICAgbURldmljZSA9IGRldmljZTsKKyAgICB9CisKKyAgICBTaGFk
ZXJPYmplY3QgKmNyZWF0ZShjb25zdCBEV09SRCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgpCisg
ICAgeworICAgICAgICBzdGQ6OnN0cmluZyBrZXkocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZnVuY3Rpb24pLCBsZW5ndGgpOworICAgICAgICB0eXBlbmFtZSBNYXA6Oml0ZXJhdG9yIGl0
ID0gbU1hcC5maW5kKGtleSk7CisgICAgICAgIGlmIChpdCAhPSBtTWFwLmVuZCgpKQorICAgICAg
ICB7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5BZGRSZWYoKTsKKyAgICAgICAgICAgIHJldHVy
biBpdC0+c2Vjb25kOworICAgICAgICB9CisKKyAgICAgICAgU2hhZGVyT2JqZWN0ICpzaGFkZXI7
CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gY3JlYXRlU2hhZGVyKGZ1bmN0aW9uLCAmc2hhZGVy
KTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJhbmRvbSBldmljdGlvbiBwb2xp
Y3kuCisgICAgICAgIGlmIChtTWFwLnNpemUoKSA+PSBrTWF4TWFwU2l6ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgbU1hcC5iZWdpbigpLT5zZWNvbmQtPlJlbGVhc2UoKTsKKyAgICAgICAgICAg
IG1NYXAuZXJhc2UobU1hcC5iZWdpbigpKTsKKyAgICAgICAgfQorCisgICAgICAgIHNoYWRlci0+
QWRkUmVmKCk7CisgICAgICAgIG1NYXBba2V5XSA9IHNoYWRlcjsKKworICAgICAgICByZXR1cm4g
c2hhZGVyOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgZm9yICh0
eXBlbmFtZSBNYXA6Oml0ZXJhdG9yIGl0ID0gbU1hcC5iZWdpbigpOyBpdCAhPSBtTWFwLmVuZCgp
OyArK2l0KQorICAgICAgICB7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5SZWxlYXNlKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBtTWFwLmNsZWFyKCk7CisgICAgfQorCisgIHByaXZhdGU6Cisg
ICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNoYWRlckNhY2hlKTsKKworICAgIGNvbnN0IHN0
YXRpYyBzaXplX3Qga01heE1hcFNpemUgPSAxMDA7CisKKyAgICBIUkVTVUxUIGNyZWF0ZVNoYWRl
cihjb25zdCBEV09SRCAqZnVuY3Rpb24sIElEaXJlY3QzRFZlcnRleFNoYWRlcjkgKipzaGFkZXIp
CisgICAgeworICAgICAgICByZXR1cm4gbURldmljZS0+Q3JlYXRlVmVydGV4U2hhZGVyKGZ1bmN0
aW9uLCBzaGFkZXIpOworICAgIH0KKworICAgIEhSRVNVTFQgY3JlYXRlU2hhZGVyKGNvbnN0IERX
T1JEICpmdW5jdGlvbiwgSURpcmVjdDNEUGl4ZWxTaGFkZXI5ICoqc2hhZGVyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1EZXZpY2UtPkNyZWF0ZVBpeGVsU2hhZGVyKGZ1bmN0aW9uLCBzaGFkZXIp
OworICAgIH0KKworI2lmbmRlZiBIQVNIX01BUAorIyBpZmRlZiBfTVNDX1ZFUgorIyAgZGVmaW5l
IEhBU0hfTUFQIHN0ZGV4dDo6aGFzaF9tYXAKKyMgZWxzZQorIyAgZGVmaW5lIEhBU0hfTUFQIHN0
ZDo6dW5vcmRlcmVkX21hcAorIyBlbmRpZgorI2VuZGlmCisKKyAgICB0eXBlZGVmIEhBU0hfTUFQ
PHN0ZDo6c3RyaW5nLCBTaGFkZXJPYmplY3QqPiBNYXA7CisgICAgTWFwIG1NYXA7CisKKyAgICBJ
RGlyZWN0M0REZXZpY2U5ICptRGV2aWNlOworfTsKKwordHlwZWRlZiBTaGFkZXJDYWNoZTxJRGly
ZWN0M0RWZXJ0ZXhTaGFkZXI5PiBWZXJ0ZXhTaGFkZXJDYWNoZTsKK3R5cGVkZWYgU2hhZGVyQ2Fj
aGU8SURpcmVjdDNEUGl4ZWxTaGFkZXI5PiBQaXhlbFNoYWRlckNhY2hlOworCit9CisKKyNlbmRp
ZiAgIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9TSEFERVJfQ0FDSEVfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlOS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5o
IgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU2hhZGVyRXhlY3V0YWJsZTkuY3BwOiBJbXBsZW1l
bnRzIGEgRDNEOS1zcGVjaWZpYyBjbGFzcyB0byBjb250YWluIHNoYWRlcgorLy8gZXhlY3V0YWJs
ZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L1NoYWRlckV4ZWN1dGFibGU5LmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFt
ZXNwYWNlIHJ4Cit7CisKK1NoYWRlckV4ZWN1dGFibGU5OjpTaGFkZXJFeGVjdXRhYmxlOShjb25z
dCB2b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCwgSURpcmVjdDNEUGl4ZWxTaGFkZXI5ICpl
eGVjdXRhYmxlKQorICAgIDogU2hhZGVyRXhlY3V0YWJsZShmdW5jdGlvbiwgbGVuZ3RoKQorewor
ICAgIG1QaXhlbEV4ZWN1dGFibGUgPSBleGVjdXRhYmxlOworICAgIG1WZXJ0ZXhFeGVjdXRhYmxl
ID0gTlVMTDsKK30KKworU2hhZGVyRXhlY3V0YWJsZTk6OlNoYWRlckV4ZWN1dGFibGU5KGNvbnN0
IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCBJRGlyZWN0M0RWZXJ0ZXhTaGFkZXI5ICpl
eGVjdXRhYmxlKQorICAgIDogU2hhZGVyRXhlY3V0YWJsZShmdW5jdGlvbiwgbGVuZ3RoKQorewor
ICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gZXhlY3V0YWJsZTsKKyAgICBtUGl4ZWxFeGVjdXRhYmxl
ID0gTlVMTDsKK30KKworU2hhZGVyRXhlY3V0YWJsZTk6On5TaGFkZXJFeGVjdXRhYmxlOSgpCit7
CisgICAgaWYgKG1WZXJ0ZXhFeGVjdXRhYmxlKQorICAgIHsKKyAgICAgICAgbVZlcnRleEV4ZWN1
dGFibGUtPlJlbGVhc2UoKTsKKyAgICB9CisgICAgaWYgKG1QaXhlbEV4ZWN1dGFibGUpCisgICAg
eworICAgICAgICBtUGl4ZWxFeGVjdXRhYmxlLT5SZWxlYXNlKCk7CisgICAgfQorfQorCitTaGFk
ZXJFeGVjdXRhYmxlOSAqU2hhZGVyRXhlY3V0YWJsZTk6Om1ha2VTaGFkZXJFeGVjdXRhYmxlOShT
aGFkZXJFeGVjdXRhYmxlICpleGVjdXRhYmxlKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19U
WVBFKFNoYWRlckV4ZWN1dGFibGU5KiwgZXhlY3V0YWJsZSkpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxTaGFkZXJFeGVjdXRhYmxlOSo+KGV4ZWN1dGFibGUpOworfQorCitJRGlyZWN0M0RWZXJ0
ZXhTaGFkZXI5ICpTaGFkZXJFeGVjdXRhYmxlOTo6Z2V0VmVydGV4U2hhZGVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbVZlcnRleEV4ZWN1dGFibGU7Cit9CisKK0lEaXJlY3QzRFBpeGVsU2hhZGVy
OSAqU2hhZGVyRXhlY3V0YWJsZTk6OmdldFBpeGVsU2hhZGVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVBpeGVsRXhlY3V0YWJsZTsKK30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hh
ZGVyRXhlY3V0YWJsZTkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGU5LmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4
ZWN1dGFibGU5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIFNoYWRlckV4ZWN1dGFibGU5Lmg6IERlZmluZXMgYSBEM0Q5LXNwZWNpZmljIGNs
YXNzIHRvIGNvbnRhaW4gc2hhZGVyCisvLyBleGVjdXRhYmxlIGltcGxlbWVudGF0aW9uIGRldGFp
bHMuCisKKyNpZm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX1NIQURFUkVYRUNVVEFCTEU5X0hfCisj
ZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9TSEFERVJFWEVDVVRBQkxFOV9IXworCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUuaCIKKworbmFtZXNwYWNlIHJ4
Cit7CisKK2NsYXNzIFNoYWRlckV4ZWN1dGFibGU5IDogcHVibGljIFNoYWRlckV4ZWN1dGFibGUK
K3sKKyAgcHVibGljOgorICAgIFNoYWRlckV4ZWN1dGFibGU5KGNvbnN0IHZvaWQgKmZ1bmN0aW9u
LCBzaXplX3QgbGVuZ3RoLCBJRGlyZWN0M0RQaXhlbFNoYWRlcjkgKmV4ZWN1dGFibGUpOworICAg
IFNoYWRlckV4ZWN1dGFibGU5KGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCBJ
RGlyZWN0M0RWZXJ0ZXhTaGFkZXI5ICpleGVjdXRhYmxlKTsKKyAgICB2aXJ0dWFsIH5TaGFkZXJF
eGVjdXRhYmxlOSgpOworCisgICAgc3RhdGljIFNoYWRlckV4ZWN1dGFibGU5ICptYWtlU2hhZGVy
RXhlY3V0YWJsZTkoU2hhZGVyRXhlY3V0YWJsZSAqZXhlY3V0YWJsZSk7CisKKyAgICBJRGlyZWN0
M0RQaXhlbFNoYWRlcjkgKmdldFBpeGVsU2hhZGVyKCkgY29uc3Q7CisgICAgSURpcmVjdDNEVmVy
dGV4U2hhZGVyOSAqZ2V0VmVydGV4U2hhZGVyKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBE
SVNBTExPV19DT1BZX0FORF9BU1NJR04oU2hhZGVyRXhlY3V0YWJsZTkpOworCisgICAgSURpcmVj
dDNEUGl4ZWxTaGFkZXI5ICptUGl4ZWxFeGVjdXRhYmxlOworICAgIElEaXJlY3QzRFZlcnRleFNo
YWRlcjkgKm1WZXJ0ZXhFeGVjdXRhYmxlOworfTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1Yy
X1JFTkRFUkVSX1NIQURFUkVYRUNVVEFCTEU5X0hfClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9T
aGFkZXJFeGVjdXRhYmxlMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTExLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
U2hhZGVyRXhlY3V0YWJsZTExLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDkgQEAKKyNp
bmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMi0yMDEzIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU2hhZGVyRXhl
Y3V0YWJsZTExLmNwcDogSW1wbGVtZW50cyBhIEQzRDExLXNwZWNpZmljIGNsYXNzIHRvIGNvbnRh
aW4gc2hhZGVyCisvLyBleGVjdXRhYmxlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisKKyNpbmNs
dWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTExLmgiCisKKyNpbmNsdWRl
ICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1NoYWRlckV4ZWN1dGFibGUx
MTo6U2hhZGVyRXhlY3V0YWJsZTExKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3Ro
LCBJRDNEMTFQaXhlbFNoYWRlciAqZXhlY3V0YWJsZSkKKyAgICA6IFNoYWRlckV4ZWN1dGFibGUo
ZnVuY3Rpb24sIGxlbmd0aCkKK3sKKyAgICBtUGl4ZWxFeGVjdXRhYmxlID0gZXhlY3V0YWJsZTsK
KyAgICBtVmVydGV4RXhlY3V0YWJsZSA9IE5VTEw7CisgICAgbUdlb21ldHJ5RXhlY3V0YWJsZSA9
IE5VTEw7CisKKyAgICBtQ29uc3RhbnRCdWZmZXIgPSBOVUxMOworfQorCitTaGFkZXJFeGVjdXRh
YmxlMTE6OlNoYWRlckV4ZWN1dGFibGUxMShjb25zdCB2b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxl
bmd0aCwgSUQzRDExVmVydGV4U2hhZGVyICpleGVjdXRhYmxlKQorICAgIDogU2hhZGVyRXhlY3V0
YWJsZShmdW5jdGlvbiwgbGVuZ3RoKQoreworICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gZXhlY3V0
YWJsZTsKKyAgICBtUGl4ZWxFeGVjdXRhYmxlID0gTlVMTDsKKyAgICBtR2VvbWV0cnlFeGVjdXRh
YmxlID0gTlVMTDsKKworICAgIG1Db25zdGFudEJ1ZmZlciA9IE5VTEw7Cit9CisKK1NoYWRlckV4
ZWN1dGFibGUxMTo6U2hhZGVyRXhlY3V0YWJsZTExKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXpl
X3QgbGVuZ3RoLCBJRDNEMTFHZW9tZXRyeVNoYWRlciAqZXhlY3V0YWJsZSkKKyAgICA6IFNoYWRl
ckV4ZWN1dGFibGUoZnVuY3Rpb24sIGxlbmd0aCkKK3sKKyAgICBtR2VvbWV0cnlFeGVjdXRhYmxl
ID0gZXhlY3V0YWJsZTsKKyAgICBtVmVydGV4RXhlY3V0YWJsZSA9IE5VTEw7CisgICAgbVBpeGVs
RXhlY3V0YWJsZSA9IE5VTEw7CisKKyAgICBtQ29uc3RhbnRCdWZmZXIgPSBOVUxMOworfQorCitT
aGFkZXJFeGVjdXRhYmxlMTE6On5TaGFkZXJFeGVjdXRhYmxlMTEoKQoreworICAgIGlmIChtVmVy
dGV4RXhlY3V0YWJsZSkKKyAgICB7CisgICAgICAgIG1WZXJ0ZXhFeGVjdXRhYmxlLT5SZWxlYXNl
KCk7CisgICAgfQorICAgIGlmIChtUGl4ZWxFeGVjdXRhYmxlKQorICAgIHsKKyAgICAgICAgbVBp
eGVsRXhlY3V0YWJsZS0+UmVsZWFzZSgpOworICAgIH0KKyAgICBpZiAobUdlb21ldHJ5RXhlY3V0
YWJsZSkKKyAgICB7CisgICAgICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUtPlJlbGVhc2UoKTsKKyAg
ICB9CisgICAgCisgICAgaWYgKG1Db25zdGFudEJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1Db25z
dGFudEJ1ZmZlci0+UmVsZWFzZSgpOworICAgIH0KK30KKworU2hhZGVyRXhlY3V0YWJsZTExICpT
aGFkZXJFeGVjdXRhYmxlMTE6Om1ha2VTaGFkZXJFeGVjdXRhYmxlMTEoU2hhZGVyRXhlY3V0YWJs
ZSAqZXhlY3V0YWJsZSkKK3sKKyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShTaGFkZXJFeGVj
dXRhYmxlMTEqLCBleGVjdXRhYmxlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYWRlckV4
ZWN1dGFibGUxMSo+KGV4ZWN1dGFibGUpOworfQorCitJRDNEMTFWZXJ0ZXhTaGFkZXIgKlNoYWRl
ckV4ZWN1dGFibGUxMTo6Z2V0VmVydGV4U2hhZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVZl
cnRleEV4ZWN1dGFibGU7Cit9CisKK0lEM0QxMVBpeGVsU2hhZGVyICpTaGFkZXJFeGVjdXRhYmxl
MTE6OmdldFBpeGVsU2hhZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVBpeGVsRXhlY3V0YWJs
ZTsKK30KKworSUQzRDExR2VvbWV0cnlTaGFkZXIgKlNoYWRlckV4ZWN1dGFibGUxMTo6Z2V0R2Vv
bWV0cnlTaGFkZXIoKSBjb25zdAoreworICAgIHJldHVybiBtR2VvbWV0cnlFeGVjdXRhYmxlOwor
fQorCitJRDNEMTFCdWZmZXIgKlNoYWRlckV4ZWN1dGFibGUxMTo6Z2V0Q29uc3RhbnRCdWZmZXIo
SUQzRDExRGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGludCByZWdpc3RlckNvdW50KQoreworICAg
IGlmICghbUNvbnN0YW50QnVmZmVyICYmIHJlZ2lzdGVyQ291bnQgPiAwKQorICAgIHsKKyAgICAg
ICAgRDNEMTFfQlVGRkVSX0RFU0MgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbiA9IHswfTsKKyAg
ICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5CeXRlV2lkdGggPSByZWdpc3RlckNvdW50
ICogc2l6ZW9mKGZsb2F0WzRdKTsKKyAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5V
c2FnZSA9IEQzRDExX1VTQUdFX0RZTkFNSUM7CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3Jp
cHRpb24uQmluZEZsYWdzID0gRDNEMTFfQklORF9DT05TVEFOVF9CVUZGRVI7CisgICAgICAgIGNv
bnN0YW50QnVmZmVyRGVzY3JpcHRpb24uQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNT
X1dSSVRFOworICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLk1pc2NGbGFncyA9IDA7
CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uU3RydWN0dXJlQnl0ZVN0cmlkZSA9
IDA7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmY29u
c3RhbnRCdWZmZXJEZXNjcmlwdGlvbiwgTlVMTCwgJm1Db25zdGFudEJ1ZmZlcik7CisgICAgICAg
IEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgfQorCisgICAgcmV0dXJuIG1Db25zdGFu
dEJ1ZmZlcjsKK30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJs
ZTExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTEx
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IFNoYWRlckV4ZWN1dGFibGUxMS5oOiBEZWZpbmVzIGEgRDNEMTEtc3BlY2lmaWMgY2xhc3MgdG8g
Y29udGFpbiBzaGFkZXIKKy8vIGV4ZWN1dGFibGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KKwor
I2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VUQUJMRTExX0hfCisjZGVmaW5l
IExJQkdMRVNWMl9SRU5ERVJFUl9TSEFERVJFWEVDVVRBQkxFMTFfSF8KKworI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlLmgiCisKK25hbWVzcGFjZSByeAorewor
CitjbGFzcyBTaGFkZXJFeGVjdXRhYmxlMTEgOiBwdWJsaWMgU2hhZGVyRXhlY3V0YWJsZQorewor
ICBwdWJsaWM6CisgICAgU2hhZGVyRXhlY3V0YWJsZTExKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBz
aXplX3QgbGVuZ3RoLCBJRDNEMTFQaXhlbFNoYWRlciAqZXhlY3V0YWJsZSk7CisgICAgU2hhZGVy
RXhlY3V0YWJsZTExKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCBJRDNEMTFW
ZXJ0ZXhTaGFkZXIgKmV4ZWN1dGFibGUpOworICAgIFNoYWRlckV4ZWN1dGFibGUxMShjb25zdCB2
b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCwgSUQzRDExR2VvbWV0cnlTaGFkZXIgKmV4ZWN1
dGFibGUpOworCisgICAgdmlydHVhbCB+U2hhZGVyRXhlY3V0YWJsZTExKCk7CisKKyAgICBzdGF0
aWMgU2hhZGVyRXhlY3V0YWJsZTExICptYWtlU2hhZGVyRXhlY3V0YWJsZTExKFNoYWRlckV4ZWN1
dGFibGUgKmV4ZWN1dGFibGUpOworCisgICAgSUQzRDExUGl4ZWxTaGFkZXIgKmdldFBpeGVsU2hh
ZGVyKCkgY29uc3Q7CisgICAgSUQzRDExVmVydGV4U2hhZGVyICpnZXRWZXJ0ZXhTaGFkZXIoKSBj
b25zdDsKKyAgICBJRDNEMTFHZW9tZXRyeVNoYWRlciAqZ2V0R2VvbWV0cnlTaGFkZXIoKSBjb25z
dDsKKworICAgIElEM0QxMUJ1ZmZlciAqZ2V0Q29uc3RhbnRCdWZmZXIoSUQzRDExRGV2aWNlICpk
ZXZpY2UsIHVuc2lnbmVkIGludCByZWdpc3RlckNvdW50KTsKKworICBwcml2YXRlOgorICAgIERJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTaGFkZXJFeGVjdXRhYmxlMTEpOworCisgICAgSUQzRDEx
UGl4ZWxTaGFkZXIgKm1QaXhlbEV4ZWN1dGFibGU7CisgICAgSUQzRDExVmVydGV4U2hhZGVyICpt
VmVydGV4RXhlY3V0YWJsZTsKKyAgICBJRDNEMTFHZW9tZXRyeVNoYWRlciAqbUdlb21ldHJ5RXhl
Y3V0YWJsZTsKKworICAgIElEM0QxMUJ1ZmZlciAqbUNvbnN0YW50QnVmZmVyOworfTsKKworfQor
CisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1NIQURFUkVYRUNVVEFCTEUxMV9IXwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJF
eGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFi
bGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFNo
YWRlckV4ZWN1dGFibGUuaDogRGVmaW5lcyBhIHJlbmRlcmVyLWFnbm9zdGljIGNsYXNzIHRvIGNv
bnRhaW4gc2hhZGVyCisvLyBleGVjdXRhYmxlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisKKyNp
Zm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX1NIQURFUkVYRUNVVEFCTEVfSF8KKyNkZWZpbmUgTElC
R0xFU1YyX1JFTkRFUkVSX1NIQURFUkVYRUNVVEFCTEVfSF8KKworI2luY2x1ZGUgImNvbW1vbi9h
bmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBTaGFkZXJFeGVjdXRhYmxl
Cit7CisgIHB1YmxpYzoKKyAgICBTaGFkZXJFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9u
LCBzaXplX3QgbGVuZ3RoKSA6IG1MZW5ndGgobGVuZ3RoKQorICAgIHsKKyAgICAgICAgbUZ1bmN0
aW9uID0gbmV3IGNoYXJbbGVuZ3RoXTsKKyAgICAgICAgbWVtY3B5KG1GdW5jdGlvbiwgZnVuY3Rp
b24sIGxlbmd0aCk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgflNoYWRlckV4ZWN1dGFibGUo
KQorICAgIHsKKyAgICAgICAgZGVsZXRlW10gbUZ1bmN0aW9uOworICAgIH0KKworICAgIHZvaWQg
KmdldEZ1bmN0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtRnVuY3Rpb247Cisg
ICAgfQorCisgICAgc2l6ZV90IGdldExlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbUxlbmd0aDsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9B
U1NJR04oU2hhZGVyRXhlY3V0YWJsZSk7CisKKyAgICB2b2lkICptRnVuY3Rpb247CisgICAgY29u
c3Qgc2l6ZV90IG1MZW5ndGg7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVS
RVJfU0hBREVSRVhFQ1VUQUJMRTlfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW45LmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvU3dhcENoYWluOS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDM0IEBACisjaW5j
bHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN3YXBDaGFpbjku
Y3BwOiBJbXBsZW1lbnRzIGEgYmFjay1lbmQgc3BlY2lmaWMgY2xhc3MgZm9yIHRoZSBEM0Q5IHN3
YXAgY2hhaW4uCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmgiCisKK25hbWVzcGFjZSByeAoreworCitT
d2FwQ2hhaW45OjpTd2FwQ2hhaW45KFJlbmRlcmVyOSAqcmVuZGVyZXIsIEhXTkQgd2luZG93LCBI
QU5ETEUgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiYWNrQnVm
ZmVyRm9ybWF0LCBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQpCisgICAgOiBtUmVuZGVyZXIocmVu
ZGVyZXIpLCBTd2FwQ2hhaW4od2luZG93LCBzaGFyZUhhbmRsZSwgYmFja0J1ZmZlckZvcm1hdCwg
ZGVwdGhCdWZmZXJGb3JtYXQpCit7CisgICAgbVN3YXBDaGFpbiA9IE5VTEw7CisgICAgbUJhY2tC
dWZmZXIgPSBOVUxMOworICAgIG1EZXB0aFN0ZW5jaWwgPSBOVUxMOworICAgIG1SZW5kZXJUYXJn
ZXQgPSBOVUxMOworICAgIG1PZmZzY3JlZW5UZXh0dXJlID0gTlVMTDsKKyAgICBtV2lkdGggPSAt
MTsKKyAgICBtSGVpZ2h0ID0gLTE7CisgICAgbVN3YXBJbnRlcnZhbCA9IC0xOworfQorCitTd2Fw
Q2hhaW45Ojp+U3dhcENoYWluOSgpCit7CisgICAgcmVsZWFzZSgpOworfQorCit2b2lkIFN3YXBD
aGFpbjk6OnJlbGVhc2UoKQoreworICAgIGlmIChtU3dhcENoYWluKQorICAgIHsKKyAgICAgICAg
bVN3YXBDaGFpbi0+UmVsZWFzZSgpOworICAgICAgICBtU3dhcENoYWluID0gTlVMTDsKKyAgICB9
CisKKyAgICBpZiAobUJhY2tCdWZmZXIpCisgICAgeworICAgICAgICBtQmFja0J1ZmZlci0+UmVs
ZWFzZSgpOworICAgICAgICBtQmFja0J1ZmZlciA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1E
ZXB0aFN0ZW5jaWwpCisgICAgeworICAgICAgICBtRGVwdGhTdGVuY2lsLT5SZWxlYXNlKCk7Cisg
ICAgICAgIG1EZXB0aFN0ZW5jaWwgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtUmVuZGVyVGFy
Z2V0KQorICAgIHsKKyAgICAgICAgbVJlbmRlclRhcmdldC0+UmVsZWFzZSgpOworICAgICAgICBt
UmVuZGVyVGFyZ2V0ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobU9mZnNjcmVlblRleHR1cmUp
CisgICAgeworICAgICAgICBtT2Zmc2NyZWVuVGV4dHVyZS0+UmVsZWFzZSgpOworICAgICAgICBt
T2Zmc2NyZWVuVGV4dHVyZSA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1XaW5kb3cpCisgICAg
ICAgIG1TaGFyZUhhbmRsZSA9IE5VTEw7Cit9CisKK3N0YXRpYyBEV09SRCBjb252ZXJ0SW50ZXJ2
YWwoRUdMaW50IGludGVydmFsKQoreworICAgIHN3aXRjaChpbnRlcnZhbCkKKyAgICB7CisgICAg
ICBjYXNlIDA6IHJldHVybiBEM0RQUkVTRU5UX0lOVEVSVkFMX0lNTUVESUFURTsKKyAgICAgIGNh
c2UgMTogcmV0dXJuIEQzRFBSRVNFTlRfSU5URVJWQUxfT05FOworICAgICAgY2FzZSAyOiByZXR1
cm4gRDNEUFJFU0VOVF9JTlRFUlZBTF9UV087CisgICAgICBjYXNlIDM6IHJldHVybiBEM0RQUkVT
RU5UX0lOVEVSVkFMX1RIUkVFOworICAgICAgY2FzZSA0OiByZXR1cm4gRDNEUFJFU0VOVF9JTlRF
UlZBTF9GT1VSOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gRDNEUFJFU0VOVF9JTlRFUlZBTF9ERUZBVUxUOworfQorCitFR0xpbnQgU3dhcENoYWlu
OTo6cmVzaXplKGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmVySGVpZ2h0KQorewor
ICAgIC8vIEQzRDkgZG9lcyBub3Qgc3VwcG9ydCByZXNpemluZyBzd2FwIGNoYWlucyB3aXRob3V0
IHJlY3JlYXRpbmcgdGhlbQorICAgIHJldHVybiByZXNldChiYWNrYnVmZmVyV2lkdGgsIGJhY2ti
dWZmZXJIZWlnaHQsIG1Td2FwSW50ZXJ2YWwpOworfQorCitFR0xpbnQgU3dhcENoYWluOTo6cmVz
ZXQoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQsIEVHTGludCBzd2Fw
SW50ZXJ2YWwpCit7CisgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5n
ZXREZXZpY2UoKTsKKworICAgIGlmIChkZXZpY2UgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBFR0xfQkFEX0FDQ0VTUzsKKyAgICB9CisKKyAgICAvLyBFdmljdCBhbGwgbm9uLXJlbmRl
ciB0YXJnZXQgdGV4dHVyZXMgdG8gc3lzdGVtIG1lbW9yeSBhbmQgcmVsZWFzZSBhbGwgcmVzb3Vy
Y2VzCisgICAgLy8gYmVmb3JlIHJlYWxsb2NhdGluZyB0aGVtIHRvIGZyZWUgdXAgYXMgbXVjaCB2
aWRlbyBtZW1vcnkgYXMgcG9zc2libGUuCisgICAgZGV2aWNlLT5FdmljdE1hbmFnZWRSZXNvdXJj
ZXMoKTsKKworICAgIEhSRVNVTFQgcmVzdWx0OworCisgICAgLy8gUmVsZWFzZSBzcGVjaWZpYyBy
ZXNvdXJjZXMgdG8gZnJlZSB1cCBtZW1vcnkgZm9yIHRoZSBuZXcgcmVuZGVyIHRhcmdldCwgd2hp
bGUgdGhlCisgICAgLy8gb2xkIHJlbmRlciB0YXJnZXQgc3RpbGwgZXhpc3RzIGZvciB0aGUgcHVy
cG9zZSBvZiBwcmVzZXJ2aW5nIGl0cyBjb250ZW50cy4KKyAgICBpZiAobVN3YXBDaGFpbikKKyAg
ICB7CisgICAgICAgIG1Td2FwQ2hhaW4tPlJlbGVhc2UoKTsKKyAgICAgICAgbVN3YXBDaGFpbiA9
IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1CYWNrQnVmZmVyKQorICAgIHsKKyAgICAgICAgbUJh
Y2tCdWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAgbUJhY2tCdWZmZXIgPSBOVUxMOworICAgIH0K
KworICAgIGlmIChtT2Zmc2NyZWVuVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5U
ZXh0dXJlLT5SZWxlYXNlKCk7CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlID0gTlVMTDsKKyAg
ICB9CisKKyAgICBpZiAobURlcHRoU3RlbmNpbCkKKyAgICB7CisgICAgICAgIG1EZXB0aFN0ZW5j
aWwtPlJlbGVhc2UoKTsKKyAgICAgICAgbURlcHRoU3RlbmNpbCA9IE5VTEw7CisgICAgfQorCisg
ICAgSEFORExFICpwU2hhcmVIYW5kbGUgPSBOVUxMOworICAgIGlmICghbVdpbmRvdyAmJiBtUmVu
ZGVyZXItPmdldFNoYXJlSGFuZGxlU3VwcG9ydCgpKQorICAgIHsKKyAgICAgICAgcFNoYXJlSGFu
ZGxlID0gJm1TaGFyZUhhbmRsZTsKKyAgICB9CisKKyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0
ZVRleHR1cmUoYmFja2J1ZmZlcldpZHRoLCBiYWNrYnVmZmVySGVpZ2h0LCAxLCBEM0RVU0FHRV9S
RU5ERVJUQVJHRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6
OkNvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQobUJhY2tCdWZmZXJGb3JtYXQpLCBEM0RQT09MX0RF
RkFVTFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtT2Zmc2NyZWVuVGV4
dHVyZSwgcFNoYXJlSGFuZGxlKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAg
ICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgb2Zmc2NyZWVuIHRleHR1cmU6ICUwOGxYIiwgcmVz
dWx0KTsKKyAgICAgICAgcmVsZWFzZSgpOworCisgICAgICAgIGlmIChkM2Q5Ojppc0RldmljZUxv
c3RFcnJvcihyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0NPTlRF
WFRfTE9TVDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICB9CisgICAgfQorCisgICAgSURpcmVjdDNE
U3VyZmFjZTkgKm9sZFJlbmRlclRhcmdldCA9IG1SZW5kZXJUYXJnZXQ7CisKKyAgICByZXN1bHQg
PSBtT2Zmc2NyZWVuVGV4dHVyZS0+R2V0U3VyZmFjZUxldmVsKDAsICZtUmVuZGVyVGFyZ2V0KTsK
KyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgaWYgKG9sZFJlbmRlclRhcmdl
dCkKKyAgICB7CisgICAgICAgIFJFQ1QgcmVjdCA9CisgICAgICAgIHsKKyAgICAgICAgICAgIDAs
IDAsCisgICAgICAgICAgICBtV2lkdGgsIG1IZWlnaHQKKyAgICAgICAgfTsKKworICAgICAgICBp
ZiAocmVjdC5yaWdodCA+IHN0YXRpY19jYXN0PExPTkc+KGJhY2tidWZmZXJXaWR0aCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJlY3QucmlnaHQgPSBiYWNrYnVmZmVyV2lkdGg7CisgICAgICAg
IH0KKworICAgICAgICBpZiAocmVjdC5ib3R0b20gPiBzdGF0aWNfY2FzdDxMT05HPihiYWNrYnVm
ZmVySGVpZ2h0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBiYWNrYnVm
ZmVySGVpZ2h0OworICAgICAgICB9CisKKyAgICAgICAgbVJlbmRlcmVyLT5lbmRTY2VuZSgpOwor
CisgICAgICAgIHJlc3VsdCA9IGRldmljZS0+U3RyZXRjaFJlY3Qob2xkUmVuZGVyVGFyZ2V0LCAm
cmVjdCwgbVJlbmRlclRhcmdldCwgJnJlY3QsIEQzRFRFWEZfTk9ORSk7CisgICAgICAgIEFTU0VS
VChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgb2xkUmVuZGVyVGFyZ2V0LT5SZWxlYXNl
KCk7CisgICAgfQorCisgICAgaWYgKG1XaW5kb3cpCisgICAgeworICAgICAgICBEM0RQUkVTRU5U
X1BBUkFNRVRFUlMgcHJlc2VudFBhcmFtZXRlcnMgPSB7MH07CisgICAgICAgIHByZXNlbnRQYXJh
bWV0ZXJzLkF1dG9EZXB0aFN0ZW5jaWxGb3JtYXQgPSBnbF9kM2Q5OjpDb252ZXJ0UmVuZGVyYnVm
ZmVyRm9ybWF0KG1EZXB0aEJ1ZmZlckZvcm1hdCk7CisgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJz
LkJhY2tCdWZmZXJDb3VudCA9IDE7CisgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZm
ZXJGb3JtYXQgPSBnbF9kM2Q5OjpDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KG1CYWNrQnVmZmVy
Rm9ybWF0KTsKKyAgICAgICAgcHJlc2VudFBhcmFtZXRlcnMuRW5hYmxlQXV0b0RlcHRoU3RlbmNp
bCA9IEZBTFNFOworICAgICAgICBwcmVzZW50UGFyYW1ldGVycy5GbGFncyA9IDA7CisgICAgICAg
IHByZXNlbnRQYXJhbWV0ZXJzLmhEZXZpY2VXaW5kb3cgPSBtV2luZG93OworICAgICAgICBwcmVz
ZW50UGFyYW1ldGVycy5NdWx0aVNhbXBsZVF1YWxpdHkgPSAwOyAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBVbmltcGxlbWVudGVkCisgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLk11bHRpU2Ft
cGxlVHlwZSA9IEQzRE1VTFRJU0FNUExFX05PTkU7ICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQK
KyAgICAgICAgcHJlc2VudFBhcmFtZXRlcnMuUHJlc2VudGF0aW9uSW50ZXJ2YWwgPSBjb252ZXJ0
SW50ZXJ2YWwoc3dhcEludGVydmFsKTsKKyAgICAgICAgcHJlc2VudFBhcmFtZXRlcnMuU3dhcEVm
ZmVjdCA9IEQzRFNXQVBFRkZFQ1RfRElTQ0FSRDsKKyAgICAgICAgcHJlc2VudFBhcmFtZXRlcnMu
V2luZG93ZWQgPSBUUlVFOworICAgICAgICBwcmVzZW50UGFyYW1ldGVycy5CYWNrQnVmZmVyV2lk
dGggPSBiYWNrYnVmZmVyV2lkdGg7CisgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZm
ZXJIZWlnaHQgPSBiYWNrYnVmZmVySGVpZ2h0OworCisgICAgICAgIC8vIGh0dHA6Ly9jcmJ1Zy5j
b20vMTQwMjM5CisgICAgICAgIC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTQzNDM0CisgICAgICAgIC8v
CisgICAgICAgIC8vIFNvbWUgQU1EL0ludGVsIHN3aXRjaGFibGUgc3lzdGVtcyAvIGRyaXZlcnMg
YXBwZWFyIHRvIHJvdW5kIHN3YXAgY2hhaW4gc3VyZmFjZXMgdG8gYSBtdWx0aXBsZSBvZiA2NCBw
aXhlbHMgaW4gd2lkdGgKKyAgICAgICAgLy8gd2hlbiB1c2luZyB0aGUgaW50ZWdyYXRlZCBJbnRl
bC4gVGhpcyByb3VuZHMgdGhlIHdpZHRoIHVwIHJhdGhlciB0aGFuIGRvd24uCisgICAgICAgIC8v
CisgICAgICAgIC8vIFNvbWUgbm9uLXN3aXRjaGFibGUgQU1EIEdQVXMgLyBkcml2ZXJzIGRvIG5v
dCByZXNwZWN0IHRoZSBzb3VyY2UgcmVjdGFuZ2xlIHRvIFByZXNlbnQuIFRoZXJlZm9yZSwgd2hl
biB0aGUgdmVuZG9yIElECisgICAgICAgIC8vIGlzIG5vdCBJbnRlbCwgdGhlIGJhY2sgYnVmZmVy
IHdpZHRoIG11c3QgYmUgZXhhY3RseSB0aGUgc2FtZSB3aWR0aCBhcyB0aGUgd2luZG93IG9yIGhv
cml6b250YWwgc2NhbGluZyB3aWxsIG9jY3VyLgorICAgICAgICBpZiAobVJlbmRlcmVyLT5nZXRB
ZGFwdGVyVmVuZG9yKCkgPT0gVkVORE9SX0lEX0lOVEVMKQorICAgICAgICB7CisgICAgICAgICAg
ICBwcmVzZW50UGFyYW1ldGVycy5CYWNrQnVmZmVyV2lkdGggPSAocHJlc2VudFBhcmFtZXRlcnMu
QmFja0J1ZmZlcldpZHRoICsgNjMpIC8gNjQgKiA2NDsKKyAgICAgICAgfQorCisgICAgICAgIHJl
c3VsdCA9IGRldmljZS0+Q3JlYXRlQWRkaXRpb25hbFN3YXBDaGFpbigmcHJlc2VudFBhcmFtZXRl
cnMsICZtU3dhcENoYWluKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkg
fHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkgfHwgcmVzdWx0ID09IEQzREVSUl9JTlZBTElEQ0FM
TCB8fCByZXN1bHQgPT0gRDNERVJSX0RFVklDRUxPU1QpOworCisgICAgICAgICAgICBFUlIoIkNv
dWxkIG5vdCBjcmVhdGUgYWRkaXRpb25hbCBzd2FwIGNoYWlucyBvciBvZmZzY3JlZW4gc3VyZmFj
ZXM6ICUwOGxYIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlbGVhc2UoKTsKKworICAgICAgICAg
ICAgaWYgKGQzZDk6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9DT05URVhUX0xPU1Q7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVH
TF9CQURfQUxMT0M7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQg
PSBtU3dhcENoYWluLT5HZXRCYWNrQnVmZmVyKDAsIEQzREJBQ0tCVUZGRVJfVFlQRV9NT05PLCAm
bUJhY2tCdWZmZXIpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAg
ICBJbnZhbGlkYXRlUmVjdChtV2luZG93LCBOVUxMLCBGQUxTRSk7CisgICAgfQorCisgICAgaWYg
KG1EZXB0aEJ1ZmZlckZvcm1hdCAhPSBHTF9OT05FKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0g
ZGV2aWNlLT5DcmVhdGVEZXB0aFN0ZW5jaWxTdXJmYWNlKGJhY2tidWZmZXJXaWR0aCwgYmFja2J1
ZmZlckhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsX2QzZDk6OkNvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQobURlcHRoQnVmZmVyRm9y
bWF0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEQzRE1VTFRJU0FNUExFX05PTkUsIDAsIEZBTFNFLCAmbURlcHRoU3RlbmNpbCwgTlVMTCk7CisK
KyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NF
UlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9G
TUVNT1JZIHx8IHJlc3VsdCA9PSBEM0RFUlJfSU5WQUxJRENBTEwpOworCisgICAgICAgICAgICBF
UlIoIkNvdWxkIG5vdCBjcmVhdGUgZGVwdGhzdGVuY2lsIHN1cmZhY2UgZm9yIG5ldyBzd2FwIGNo
YWluOiAweCUwOFgiLCByZXN1bHQpOworICAgICAgICAgICAgcmVsZWFzZSgpOworCisgICAgICAg
ICAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gRUdMX0NPTlRFWFRfTE9TVDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
RUdMX0JBRF9BTExPQzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIG1X
aWR0aCA9IGJhY2tidWZmZXJXaWR0aDsKKyAgICBtSGVpZ2h0ID0gYmFja2J1ZmZlckhlaWdodDsK
KyAgICBtU3dhcEludGVydmFsID0gc3dhcEludGVydmFsOworCisgICAgcmV0dXJuIEVHTF9TVUND
RVNTOworfQorCisvLyBwYXJhbWV0ZXJzIHNob3VsZCBiZSB2YWxpZGF0ZWQvY2xhbXBlZCBieSBj
YWxsZXIKK0VHTGludCBTd2FwQ2hhaW45Ojpzd2FwUmVjdChFR0xpbnQgeCwgRUdMaW50IHksIEVH
TGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkKK3sKKyAgICBpZiAoIW1Td2FwQ2hhaW4pCisgICAg
eworICAgICAgICByZXR1cm4gRUdMX1NVQ0NFU1M7CisgICAgfQorCisgICAgSURpcmVjdDNERGV2
aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIC8vIERpc2FibGUg
YWxsIHBpcGVsaW5lIG9wZXJhdGlvbnMKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJT
X1pFTkFCTEUsIEQzRFpCX0ZBTFNFKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJT
X0ZJTExNT0RFLCBEM0RGSUxMX1NPTElEKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQz
RFJTX0FMUEhBVEVTVEVOQUJMRSwgRkFMU0UpOworICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUo
RDNEUlNfQUxQSEFCTEVOREVOQUJMRSwgRkFMU0UpOworICAgIGRldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfQ1VMTE1PREUsIEQzRENVTExfTk9ORSk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShEM0RSU19TVEVOQ0lMRU5BQkxFLCBGQUxTRSk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShEM0RSU19DTElQUExBTkVFTkFCTEUsIDApOworICAgIGRldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfQ09MT1JXUklURUVOQUJMRSwgRDNEQ09MT1JXUklURUVOQUJMRV9BTFBIQSB8IEQz
RENPTE9SV1JJVEVFTkFCTEVfQkxVRSB8IEQzRENPTE9SV1JJVEVFTkFCTEVfR1JFRU4gfCBEM0RD
T0xPUldSSVRFRU5BQkxFX1JFRCk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19T
UkdCV1JJVEVFTkFCTEUsIEZBTFNFKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJT
X1NDSVNTT1JURVNURU5BQkxFLCBGQUxTRSk7CisgICAgZGV2aWNlLT5TZXRQaXhlbFNoYWRlcihO
VUxMKTsKKyAgICBkZXZpY2UtPlNldFZlcnRleFNoYWRlcihOVUxMKTsKKworICAgIGRldmljZS0+
U2V0UmVuZGVyVGFyZ2V0KDAsIG1CYWNrQnVmZmVyKTsKKyAgICBkZXZpY2UtPlNldERlcHRoU3Rl
bmNpbFN1cmZhY2UoTlVMTCk7CisKKyAgICBkZXZpY2UtPlNldFRleHR1cmUoMCwgbU9mZnNjcmVl
blRleHR1cmUpOworICAgIGRldmljZS0+U2V0VGV4dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNTX0NP
TE9ST1AsIEQzRFRPUF9TRUxFQ1RBUkcxKTsKKyAgICBkZXZpY2UtPlNldFRleHR1cmVTdGFnZVN0
YXRlKDAsIEQzRFRTU19DT0xPUkFSRzEsIEQzRFRBX1RFWFRVUkUpOworICAgIGRldmljZS0+U2V0
VGV4dHVyZVN0YWdlU3RhdGUoMSwgRDNEVFNTX0NPTE9ST1AsIEQzRFRPUF9ESVNBQkxFKTsKKyAg
ICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZSgwLCBEM0RTQU1QX01BR0ZJTFRFUiwgRDNEVEVYRl9Q
T0lOVCk7CisgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNEU0FNUF9NSU5GSUxURVIs
IEQzRFRFWEZfUE9JTlQpOworICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBf
QUREUkVTU1UsIEQzRFRBRERSRVNTX0NMQU1QKTsKKyAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0
ZSgwLCBEM0RTQU1QX0FERFJFU1NWLCBEM0RUQUREUkVTU19DTEFNUCk7CisgICAgZGV2aWNlLT5T
ZXRGVkYoRDNERlZGX1hZWlJIVyB8IEQzREZWRl9URVgxKTsKKworICAgIEQzRFZJRVdQT1JUOSB2
aWV3cG9ydCA9IHswLCAwLCBtV2lkdGgsIG1IZWlnaHQsIDAuMGYsIDEuMGZ9OworICAgIGRldmlj
ZS0+U2V0Vmlld3BvcnQoJnZpZXdwb3J0KTsKKworICAgIGZsb2F0IHgxID0geCAtIDAuNWY7Cisg
ICAgZmxvYXQgeTEgPSAobUhlaWdodCAtIHkgLSBoZWlnaHQpIC0gMC41ZjsKKyAgICBmbG9hdCB4
MiA9ICh4ICsgd2lkdGgpIC0gMC41ZjsKKyAgICBmbG9hdCB5MiA9IChtSGVpZ2h0IC0geSkgLSAw
LjVmOworCisgICAgZmxvYXQgdTEgPSB4IC8gZmxvYXQobVdpZHRoKTsKKyAgICBmbG9hdCB2MSA9
IHkgLyBmbG9hdChtSGVpZ2h0KTsKKyAgICBmbG9hdCB1MiA9ICh4ICsgd2lkdGgpIC8gZmxvYXQo
bVdpZHRoKTsKKyAgICBmbG9hdCB2MiA9ICh5ICsgaGVpZ2h0KSAvIGZsb2F0KG1IZWlnaHQpOwor
CisgICAgZmxvYXQgcXVhZFs0XVs2XSA9IHt7eDEsIHkxLCAwLjBmLCAxLjBmLCB1MSwgdjJ9LAor
ICAgICAgICAgICAgICAgICAgICAgICAge3gyLCB5MSwgMC4wZiwgMS4wZiwgdTIsIHYyfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHt4MiwgeTIsIDAuMGYsIDEuMGYsIHUyLCB2MX0sCisgICAg
ICAgICAgICAgICAgICAgICAgICB7eDEsIHkyLCAwLjBmLCAxLjBmLCB1MSwgdjF9fTsgICAvLyB4
LCB5LCB6LCByaHcsIHUsIHYKKworICAgIG1SZW5kZXJlci0+c3RhcnRTY2VuZSgpOworICAgIGRl
dmljZS0+RHJhd1ByaW1pdGl2ZVVQKEQzRFBUX1RSSUFOR0xFRkFOLCAyLCBxdWFkLCA2ICogc2l6
ZW9mKGZsb2F0KSk7CisgICAgbVJlbmRlcmVyLT5lbmRTY2VuZSgpOworCisgICAgZGV2aWNlLT5T
ZXRUZXh0dXJlKDAsIE5VTEwpOworCisgICAgUkVDVCByZWN0ID0KKyAgICB7CisgICAgICAgIHgs
IG1IZWlnaHQgLSB5IC0gaGVpZ2h0LAorICAgICAgICB4ICsgd2lkdGgsIG1IZWlnaHQgLSB5Cisg
ICAgfTsKKworICAgIEhSRVNVTFQgcmVzdWx0ID0gbVN3YXBDaGFpbi0+UHJlc2VudCgmcmVjdCwg
JnJlY3QsIE5VTEwsIE5VTEwsIDApOworCisgICAgbVJlbmRlcmVyLT5tYXJrQWxsU3RhdGVEaXJ0
eSgpOworCisgICAgaWYgKGQzZDk6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCisgICAgewor
ICAgICAgICByZXR1cm4gRUdMX0NPTlRFWFRfTE9TVDsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0
ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZIHx8
IHJlc3VsdCA9PSBEM0RFUlJfRFJJVkVSSU5URVJOQUxFUlJPUikKKyAgICB7CisgICAgICAgIHJl
dHVybiBFR0xfQkFEX0FMTE9DOworICAgIH0KKworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0
KSk7CisKKyAgICByZXR1cm4gRUdMX1NVQ0NFU1M7Cit9CisKKy8vIEluY3JlbWVudHMgcmVmY291
bnQgb24gc3VyZmFjZS4KKy8vIGNhbGxlciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJuZWQgc3Vy
ZmFjZQorSURpcmVjdDNEU3VyZmFjZTkgKlN3YXBDaGFpbjk6OmdldFJlbmRlclRhcmdldCgpCit7
CisgICAgaWYgKG1SZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICBtUmVuZGVyVGFyZ2V0LT5B
ZGRSZWYoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbVJlbmRlclRhcmdldDsKK30KKworLy8gSW5j
cmVtZW50cyByZWZjb3VudCBvbiBzdXJmYWNlLgorLy8gY2FsbGVyIG11c3QgUmVsZWFzZSgpIHRo
ZSByZXR1cm5lZCBzdXJmYWNlCitJRGlyZWN0M0RTdXJmYWNlOSAqU3dhcENoYWluOTo6Z2V0RGVw
dGhTdGVuY2lsKCkKK3sKKyAgICBpZiAobURlcHRoU3RlbmNpbCkKKyAgICB7CisgICAgICAgIG1E
ZXB0aFN0ZW5jaWwtPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtRGVwdGhTdGVuY2ls
OworfQorCisvLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHRleHR1cmUuCisvLyBjYWxsZXIgbXVz
dCBSZWxlYXNlKCkgdGhlIHJldHVybmVkIHRleHR1cmUKK0lEaXJlY3QzRFRleHR1cmU5ICpTd2Fw
Q2hhaW45OjpnZXRPZmZzY3JlZW5UZXh0dXJlKCkKK3sKKyAgICBpZiAobU9mZnNjcmVlblRleHR1
cmUpCisgICAgeworICAgICAgICBtT2Zmc2NyZWVuVGV4dHVyZS0+QWRkUmVmKCk7CisgICAgfQor
CisgICAgcmV0dXJuIG1PZmZzY3JlZW5UZXh0dXJlOworfQorCitTd2FwQ2hhaW45ICpTd2FwQ2hh
aW45OjptYWtlU3dhcENoYWluOShTd2FwQ2hhaW4gKnN3YXBDaGFpbikKK3sKKyAgICBBU1NFUlQo
SEFTX0RZTkFNSUNfVFlQRShyeDo6U3dhcENoYWluOSosIHN3YXBDaGFpbikpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxyeDo6U3dhcENoYWluOSo+KHN3YXBDaGFpbik7Cit9CisKK3ZvaWQgU3dh
cENoYWluOTo6cmVjcmVhdGUoKQoreworICAgIGlmICghbVN3YXBDaGFpbikKKyAgICB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVu
ZGVyZXItPmdldERldmljZSgpOworICAgIGlmIChkZXZpY2UgPT0gTlVMTCkKKyAgICB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBEM0RQUkVTRU5UX1BBUkFNRVRFUlMgcHJlc2VudFBh
cmFtZXRlcnM7CisgICAgSFJFU1VMVCByZXN1bHQgPSBtU3dhcENoYWluLT5HZXRQcmVzZW50UGFy
YW1ldGVycygmcHJlc2VudFBhcmFtZXRlcnMpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0
KSk7CisKKyAgICBJRGlyZWN0M0RTd2FwQ2hhaW45KiBuZXdTd2FwQ2hhaW4gPSBOVUxMOworICAg
IHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQWRkaXRpb25hbFN3YXBDaGFpbigmcHJlc2VudFBhcmFt
ZXRlcnMsICZuZXdTd2FwQ2hhaW4pOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtU3dhcENoYWluLT5SZWxlYXNlKCk7CisgICAg
bVN3YXBDaGFpbiA9IG5ld1N3YXBDaGFpbjsKKworICAgIG1CYWNrQnVmZmVyLT5SZWxlYXNlKCk7
CisgICAgcmVzdWx0ID0gbVN3YXBDaGFpbi0+R2V0QmFja0J1ZmZlcigwLCBEM0RCQUNLQlVGRkVS
X1RZUEVfTU9OTywgJm1CYWNrQnVmZmVyKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkp
OworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1N3YXBDaGFpbjkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjkuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEy
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU3dhcENo
YWluOS5oOiBEZWZpbmVzIGEgYmFjay1lbmQgc3BlY2lmaWMgY2xhc3MgZm9yIHRoZSBEM0Q5IHN3
YXAgY2hhaW4uCisKKyNpZm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX1NXQVBDSEFJTjlfSF8KKyNk
ZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1NXQVBDSEFJTjlfSF8KKworI2luY2x1ZGUgImNvbW1v
bi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5o
IgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOTsKKworY2xhc3MgU3dhcENoYWlu
OSA6IHB1YmxpYyBTd2FwQ2hhaW4KK3sKKyAgcHVibGljOgorICAgIFN3YXBDaGFpbjkoUmVuZGVy
ZXI5ICpyZW5kZXJlciwgSFdORCB3aW5kb3csIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAgICAgICAg
ICAgICAgIEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0LCBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQp
OworICAgIHZpcnR1YWwgflN3YXBDaGFpbjkoKTsKKworICAgIEVHTGludCByZXNpemUoRUdMaW50
IGJhY2tidWZmZXJXaWR0aCwgRUdMaW50IGJhY2tidWZmZXJIZWlnaHQpOworICAgIHZpcnR1YWwg
RUdMaW50IHJlc2V0KEVHTGludCBiYWNrYnVmZmVyV2lkdGgsIEVHTGludCBiYWNrYnVmZmVySGVp
Z2h0LCBFR0xpbnQgc3dhcEludGVydmFsKTsKKyAgICB2aXJ0dWFsIEVHTGludCBzd2FwUmVjdChF
R0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCk7CisgICAgdmly
dHVhbCB2b2lkIHJlY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIElEaXJlY3QzRFN1cmZhY2U5ICpn
ZXRSZW5kZXJUYXJnZXQoKTsKKyAgICB2aXJ0dWFsIElEaXJlY3QzRFN1cmZhY2U5ICpnZXREZXB0
aFN0ZW5jaWwoKTsKKyAgICB2aXJ0dWFsIElEaXJlY3QzRFRleHR1cmU5ICpnZXRPZmZzY3JlZW5U
ZXh0dXJlKCk7CisKKyAgICBzdGF0aWMgU3dhcENoYWluOSAqbWFrZVN3YXBDaGFpbjkoU3dhcENo
YWluICpzd2FwQ2hhaW4pOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOKFN3YXBDaGFpbjkpOworCisgICAgdm9pZCByZWxlYXNlKCk7CisKKyAgICBSZW5kZXJlcjkg
Km1SZW5kZXJlcjsKKyAgICBFR0xpbnQgbUhlaWdodDsKKyAgICBFR0xpbnQgbVdpZHRoOworICAg
IEVHTGludCBtU3dhcEludGVydmFsOworCisgICAgSURpcmVjdDNEU3dhcENoYWluOSAqbVN3YXBD
aGFpbjsKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqbUJhY2tCdWZmZXI7CisgICAgSURpcmVjdDNE
U3VyZmFjZTkgKm1SZW5kZXJUYXJnZXQ7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKm1EZXB0aFN0
ZW5jaWw7CisgICAgSURpcmVjdDNEVGV4dHVyZTkqIG1PZmZzY3JlZW5UZXh0dXJlOworfTsKKwor
fQorI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9TV0FQQ0hBSU45X0hfCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjExLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1N3YXBDaGFpbjExLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluMTEuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDc2NyBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisvLyBTd2FwQ2hhaW4xMS5jcHA6IEltcGxlbWVudHMgYSBiYWNrLWVuZCBzcGVj
aWZpYyBjbGFzcyBmb3IgdGhlIEQzRDExIHN3YXAgY2hhaW4uCisKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvU3dhcENoYWluMTEuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9yZW5kZXJlcjExX3V0aWxzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRl
cmVyMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9w
YXNzdGhyb3VnaDExdnMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9j
b21waWxlZC9wYXNzdGhyb3VnaHJnYmExMXBzLmgiCisKK25hbWVzcGFjZSByeAoreworCitTd2Fw
Q2hhaW4xMTo6U3dhcENoYWluMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIEhXTkQgd2luZG93LCBI
QU5ETEUgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJhY2tC
dWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCkKKyAgICA6IG1SZW5kZXJlcihy
ZW5kZXJlciksIFN3YXBDaGFpbih3aW5kb3csIHNoYXJlSGFuZGxlLCBiYWNrQnVmZmVyRm9ybWF0
LCBkZXB0aEJ1ZmZlckZvcm1hdCkKK3sKKyAgICBtU3dhcENoYWluID0gTlVMTDsKKyAgICBtQmFj
a0J1ZmZlclRleHR1cmUgPSBOVUxMOworICAgIG1CYWNrQnVmZmVyUlRWaWV3ID0gTlVMTDsKKyAg
ICBtT2Zmc2NyZWVuVGV4dHVyZSA9IE5VTEw7CisgICAgbU9mZnNjcmVlblJUVmlldyA9IE5VTEw7
CisgICAgbU9mZnNjcmVlblNSVmlldyA9IE5VTEw7CisgICAgbURlcHRoU3RlbmNpbFRleHR1cmUg
PSBOVUxMOworICAgIG1EZXB0aFN0ZW5jaWxEU1ZpZXcgPSBOVUxMOworICAgIG1RdWFkVkIgPSBO
VUxMOworICAgIG1QYXNzVGhyb3VnaFNhbXBsZXIgPSBOVUxMOworICAgIG1QYXNzVGhyb3VnaElM
ID0gTlVMTDsKKyAgICBtUGFzc1Rocm91Z2hWUyA9IE5VTEw7CisgICAgbVBhc3NUaHJvdWdoUFMg
PSBOVUxMOworICAgIG1XaWR0aCA9IC0xOworICAgIG1IZWlnaHQgPSAtMTsKKyAgICBtU3dhcElu
dGVydmFsID0gMDsKKyAgICBtQXBwQ3JlYXRlZFNoYXJlSGFuZGxlID0gbVNoYXJlSGFuZGxlICE9
IE5VTEw7CisgICAgbVBhc3NUaHJvdWdoUmVzb3VyY2VzSW5pdCA9IGZhbHNlOworfQorCitTd2Fw
Q2hhaW4xMTo6flN3YXBDaGFpbjExKCkKK3sKKyAgICByZWxlYXNlKCk7Cit9CisKK3ZvaWQgU3dh
cENoYWluMTE6OnJlbGVhc2UoKQoreworICAgIGlmIChtU3dhcENoYWluKQorICAgIHsKKyAgICAg
ICAgbVN3YXBDaGFpbi0+UmVsZWFzZSgpOworICAgICAgICBtU3dhcENoYWluID0gTlVMTDsKKyAg
ICB9CisKKyAgICBpZiAobUJhY2tCdWZmZXJUZXh0dXJlKQorICAgIHsKKyAgICAgICAgbUJhY2tC
dWZmZXJUZXh0dXJlLT5SZWxlYXNlKCk7CisgICAgICAgIG1CYWNrQnVmZmVyVGV4dHVyZSA9IE5V
TEw7CisgICAgfQorCisgICAgaWYgKG1CYWNrQnVmZmVyUlRWaWV3KQorICAgIHsKKyAgICAgICAg
bUJhY2tCdWZmZXJSVFZpZXctPlJlbGVhc2UoKTsKKyAgICAgICAgbUJhY2tCdWZmZXJSVFZpZXcg
PSBOVUxMOworICAgIH0KKworICAgIGlmIChtT2Zmc2NyZWVuVGV4dHVyZSkKKyAgICB7CisgICAg
ICAgIG1PZmZzY3JlZW5UZXh0dXJlLT5SZWxlYXNlKCk7CisgICAgICAgIG1PZmZzY3JlZW5UZXh0
dXJlID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobU9mZnNjcmVlblJUVmlldykKKyAgICB7Cisg
ICAgICAgIG1PZmZzY3JlZW5SVFZpZXctPlJlbGVhc2UoKTsKKyAgICAgICAgbU9mZnNjcmVlblJU
VmlldyA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1PZmZzY3JlZW5TUlZpZXcpCisgICAgewor
ICAgICAgICBtT2Zmc2NyZWVuU1JWaWV3LT5SZWxlYXNlKCk7CisgICAgICAgIG1PZmZzY3JlZW5T
UlZpZXcgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtRGVwdGhTdGVuY2lsVGV4dHVyZSkKKyAg
ICB7CisgICAgICAgIG1EZXB0aFN0ZW5jaWxUZXh0dXJlLT5SZWxlYXNlKCk7CisgICAgICAgIG1E
ZXB0aFN0ZW5jaWxUZXh0dXJlID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobURlcHRoU3RlbmNp
bERTVmlldykKKyAgICB7CisgICAgICAgIG1EZXB0aFN0ZW5jaWxEU1ZpZXctPlJlbGVhc2UoKTsK
KyAgICAgICAgbURlcHRoU3RlbmNpbERTVmlldyA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1R
dWFkVkIpCisgICAgeworICAgICAgICBtUXVhZFZCLT5SZWxlYXNlKCk7CisgICAgICAgIG1RdWFk
VkIgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtUGFzc1Rocm91Z2hTYW1wbGVyKQorICAgIHsK
KyAgICAgICAgbVBhc3NUaHJvdWdoU2FtcGxlci0+UmVsZWFzZSgpOworICAgICAgICBtUGFzc1Ro
cm91Z2hTYW1wbGVyID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobVBhc3NUaHJvdWdoSUwpCisg
ICAgeworICAgICAgICBtUGFzc1Rocm91Z2hJTC0+UmVsZWFzZSgpOworICAgICAgICBtUGFzc1Ro
cm91Z2hJTCA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1QYXNzVGhyb3VnaFZTKQorICAgIHsK
KyAgICAgICAgbVBhc3NUaHJvdWdoVlMtPlJlbGVhc2UoKTsKKyAgICAgICAgbVBhc3NUaHJvdWdo
VlMgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtUGFzc1Rocm91Z2hQUykKKyAgICB7CisgICAg
ICAgIG1QYXNzVGhyb3VnaFBTLT5SZWxlYXNlKCk7CisgICAgICAgIG1QYXNzVGhyb3VnaFBTID0g
TlVMTDsKKyAgICB9CisKKyAgICBpZiAoIW1BcHBDcmVhdGVkU2hhcmVIYW5kbGUpCisgICAgewor
ICAgICAgICBtU2hhcmVIYW5kbGUgPSBOVUxMOworICAgIH0KK30KKwordm9pZCBTd2FwQ2hhaW4x
MTo6cmVsZWFzZU9mZnNjcmVlblRleHR1cmUoKQoreworICAgIGlmIChtT2Zmc2NyZWVuVGV4dHVy
ZSkKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlLT5SZWxlYXNlKCk7CisgICAgICAg
IG1PZmZzY3JlZW5UZXh0dXJlID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobU9mZnNjcmVlblJU
VmlldykKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5SVFZpZXctPlJlbGVhc2UoKTsKKyAgICAg
ICAgbU9mZnNjcmVlblJUVmlldyA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1PZmZzY3JlZW5T
UlZpZXcpCisgICAgeworICAgICAgICBtT2Zmc2NyZWVuU1JWaWV3LT5SZWxlYXNlKCk7CisgICAg
ICAgIG1PZmZzY3JlZW5TUlZpZXcgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtRGVwdGhTdGVu
Y2lsVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1EZXB0aFN0ZW5jaWxUZXh0dXJlLT5SZWxlYXNl
KCk7CisgICAgICAgIG1EZXB0aFN0ZW5jaWxUZXh0dXJlID0gTlVMTDsKKyAgICB9CisKKyAgICBp
ZiAobURlcHRoU3RlbmNpbERTVmlldykKKyAgICB7CisgICAgICAgIG1EZXB0aFN0ZW5jaWxEU1Zp
ZXctPlJlbGVhc2UoKTsKKyAgICAgICAgbURlcHRoU3RlbmNpbERTVmlldyA9IE5VTEw7CisgICAg
fQorfQorCitFR0xpbnQgU3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVuVGV4dHVyZShpbnQgYmFj
a2J1ZmZlcldpZHRoLCBpbnQgYmFja2J1ZmZlckhlaWdodCkKK3sKKyAgICBJRDNEMTFEZXZpY2Ug
KmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICBBU1NFUlQoZGV2aWNlICE9
IE5VTEwpOworCisgICAgLy8gRDNEMTEgZG9lcyBub3QgYWxsb3cgemVybyBzaXplIHRleHR1cmVz
CisgICAgQVNTRVJUKGJhY2tidWZmZXJXaWR0aCA+PSAxKTsKKyAgICBBU1NFUlQoYmFja2J1ZmZl
ckhlaWdodCA+PSAxKTsKKworICAgIC8vIFByZXNlcnZlIHRoZSByZW5kZXIgdGFyZ2V0IGNvbnRl
bnQKKyAgICBJRDNEMTFUZXh0dXJlMkQgKnByZXZpb3VzT2Zmc2NyZWVuVGV4dHVyZSA9IG1PZmZz
Y3JlZW5UZXh0dXJlOworICAgIGlmIChwcmV2aW91c09mZnNjcmVlblRleHR1cmUpCisgICAgewor
ICAgICAgICBwcmV2aW91c09mZnNjcmVlblRleHR1cmUtPkFkZFJlZigpOworICAgIH0KKyAgICBj
b25zdCBpbnQgcHJldmlvdXNXaWR0aCA9IG1XaWR0aDsKKyAgICBjb25zdCBpbnQgcHJldmlvdXNI
ZWlnaHQgPSBtSGVpZ2h0OworCisgICAgcmVsZWFzZU9mZnNjcmVlblRleHR1cmUoKTsKKworICAg
IC8vIElmIHRoZSBhcHAgcGFzc2VkIGluIGEgc2hhcmUgaGFuZGxlLCBvcGVuIHRoZSByZXNvdXJj
ZQorICAgIC8vIFNlZSBFR0xfQU5HTEVfZDNkX3NoYXJlX2hhbmRsZV9jbGllbnRfYnVmZmVyCisg
ICAgaWYgKG1BcHBDcmVhdGVkU2hhcmVIYW5kbGUpCisgICAgeworICAgICAgICBJRDNEMTFSZXNv
dXJjZSAqdGVtcFJlc291cmNlMTE7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5P
cGVuU2hhcmVkUmVzb3VyY2UobVNoYXJlSGFuZGxlLCBfX3V1aWRvZihJRDNEMTFSZXNvdXJjZSks
ICh2b2lkKiopJnRlbXBSZXNvdXJjZTExKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIG9wZW4gdGhlIHN3YXAgY2hh
aW4gcGJ1ZmZlciBzaGFyZSBoYW5kbGU6ICUwOGxYIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJl
bGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBFR0xfQkFEX1BBUkFNRVRFUjsKKyAgICAgICAg
fQorCisgICAgICAgIHJlc3VsdCA9IHRlbXBSZXNvdXJjZTExLT5RdWVyeUludGVyZmFjZShfX3V1
aWRvZihJRDNEMTFUZXh0dXJlMkQpLCAodm9pZCoqKSZtT2Zmc2NyZWVuVGV4dHVyZSk7CisgICAg
ICAgIHRlbXBSZXNvdXJjZTExLT5SZWxlYXNlKCk7CisKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1
bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBxdWVyeSB0ZXh0dXJl
MmQgaW50ZXJmYWNlIGluIHBidWZmZXIgc2hhcmUgaGFuZGxlOiAlMDhsWCIsIHJlc3VsdCk7Cisg
ICAgICAgICAgICByZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gRUdMX0JBRF9QQVJBTUVU
RVI7CisgICAgICAgIH0KKworICAgICAgICAvLyBWYWxpZGF0ZSBvZmZzY3JlZW4gdGV4dHVyZSBw
YXJhbWV0ZXJzCisgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIG9mZnNjcmVlblRleHR1cmVE
ZXNjID0gezB9OworICAgICAgICBtT2Zmc2NyZWVuVGV4dHVyZS0+R2V0RGVzYygmb2Zmc2NyZWVu
VGV4dHVyZURlc2MpOworCisgICAgICAgIGlmIChvZmZzY3JlZW5UZXh0dXJlRGVzYy5XaWR0aCAh
PSAoVUlOVCliYWNrYnVmZmVyV2lkdGgKKyAgICAgICAgICAgIHx8IG9mZnNjcmVlblRleHR1cmVE
ZXNjLkhlaWdodCAhPSAoVUlOVCliYWNrYnVmZmVySGVpZ2h0CisgICAgICAgICAgICB8fCBvZmZz
Y3JlZW5UZXh0dXJlRGVzYy5Gb3JtYXQgIT0gZ2xfZDNkMTE6OkNvbnZlcnRSZW5kZXJidWZmZXJG
b3JtYXQobUJhY2tCdWZmZXJGb3JtYXQpCisgICAgICAgICAgICB8fCBvZmZzY3JlZW5UZXh0dXJl
RGVzYy5NaXBMZXZlbHMgIT0gMQorICAgICAgICAgICAgfHwgb2Zmc2NyZWVuVGV4dHVyZURlc2Mu
QXJyYXlTaXplICE9IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiSW52YWxpZCB0ZXh0
dXJlIHBhcmFtZXRlcnMgaW4gdGhlIHNoYXJlZCBvZmZzY3JlZW4gdGV4dHVyZSBwYnVmZmVyIik7
CisgICAgICAgICAgICByZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gRUdMX0JBRF9QQVJB
TUVURVI7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgY29uc3Qg
Ym9vbCB1c2VTaGFyZWRSZXNvdXJjZSA9ICFtV2luZG93ICYmIG1SZW5kZXJlci0+Z2V0U2hhcmVI
YW5kbGVTdXBwb3J0KCk7CisKKyAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0Mgb2Zmc2NyZWVu
VGV4dHVyZURlc2MgPSB7MH07CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLldpZHRoID0g
YmFja2J1ZmZlcldpZHRoOworICAgICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5IZWlnaHQgPSBi
YWNrYnVmZmVySGVpZ2h0OworICAgICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5Gb3JtYXQgPSBn
bF9kM2QxMTo6Q29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChtQmFja0J1ZmZlckZvcm1hdCk7Cisg
ICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLk1pcExldmVscyA9IDE7CisgICAgICAgIG9mZnNj
cmVlblRleHR1cmVEZXNjLkFycmF5U2l6ZSA9IDE7CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVE
ZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5T
YW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5Vc2Fn
ZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLkJp
bmRGbGFncyA9IEQzRDExX0JJTkRfUkVOREVSX1RBUkdFVCB8IEQzRDExX0JJTkRfU0hBREVSX1JF
U09VUkNFOworICAgICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7
CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLk1pc2NGbGFncyA9IHVzZVNoYXJlZFJlc291
cmNlID8gRDNEMTFfUkVTT1VSQ0VfTUlTQ19TSEFSRUQgOiAwOworCisgICAgICAgIEhSRVNVTFQg
cmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJm9mZnNjcmVlblRleHR1cmVEZXNjLCBO
VUxMLCAmbU9mZnNjcmVlblRleHR1cmUpOworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
KyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIG9mZnNjcmVlbiB0
ZXh0dXJlOiAlMDhsWCIsIHJlc3VsdCk7CisgICAgICAgICAgICByZWxlYXNlKCk7CisKKyAgICAg
ICAgICAgIGlmIChkM2QxMTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRUdMX0NPTlRFWFRfTE9TVDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gRUdMX0JBRF9BTExPQzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGQz
ZDExOjpTZXREZWJ1Z05hbWUobU9mZnNjcmVlblRleHR1cmUsICJPZmZzY3JlZW4gdGV4dHVyZSIp
OworCisgICAgICAgIC8vIEVHTF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hh
bmRsZSByZXF1aXJlcyB0aGF0IHdlIHN0b3JlIGEgc2hhcmUgaGFuZGxlIGZvciB0aGUgY2xpZW50
CisgICAgICAgIGlmICh1c2VTaGFyZWRSZXNvdXJjZSkKKyAgICAgICAgeworICAgICAgICAgICAg
SURYR0lSZXNvdXJjZSAqb2Zmc2NyZWVuVGV4dHVyZVJlc291cmNlID0gTlVMTDsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IG1PZmZzY3JlZW5UZXh0dXJlLT5RdWVyeUludGVyZmFjZShfX3V1aWRvZihJ
RFhHSVJlc291cmNlKSwgKHZvaWQqKikmb2Zmc2NyZWVuVGV4dHVyZVJlc291cmNlKTsKKworICAg
ICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIG5vIHNoYXJlIGhhbmRsZSBvbiBmYWlsdXJlCisgICAg
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgRVJSKCJDb3VsZCBub3QgcXVlcnkgb2Zmc2NyZWVuIHRleHR1cmUgcmVzb3VyY2U6ICUwOGxY
IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBvZmZzY3JlZW5UZXh0dXJlUmVzb3VyY2UtPkdl
dFNoYXJlZEhhbmRsZSgmbVNoYXJlSGFuZGxlKTsKKworICAgICAgICAgICAgICAgIGlmIChGQUlM
RUQocmVzdWx0KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1TaGFy
ZUhhbmRsZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGdldCBv
ZmZzY3JlZW4gdGV4dHVyZSBzaGFyZWQgaGFuZGxlOiAlMDhsWCIsIHJlc3VsdCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgICAgICAKKyAg
ICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlUmVuZGVyVGFyZ2V0VmlldyhtT2Zmc2Ny
ZWVuVGV4dHVyZSwgTlVMTCwgJm1PZmZzY3JlZW5SVFZpZXcpOworCisgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKyAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1PZmZzY3JlZW5SVFZpZXcs
ICJPZmZzY3JlZW4gcmVuZGVyIHRhcmdldCIpOworCisgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVh
dGVTaGFkZXJSZXNvdXJjZVZpZXcobU9mZnNjcmVlblRleHR1cmUsIE5VTEwsICZtT2Zmc2NyZWVu
U1JWaWV3KTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGQzZDExOjpTZXRE
ZWJ1Z05hbWUobU9mZnNjcmVlblNSVmlldywgIk9mZnNjcmVlbiBzaGFkZXIgcmVzb3VyY2UiKTsK
KworICAgIGlmIChtRGVwdGhCdWZmZXJGb3JtYXQgIT0gR0xfTk9ORSkKKyAgICB7CisgICAgICAg
IEQzRDExX1RFWFRVUkUyRF9ERVNDIGRlcHRoU3RlbmNpbERlc2MgPSB7MH07CisgICAgICAgIGRl
cHRoU3RlbmNpbERlc2MuV2lkdGggPSBiYWNrYnVmZmVyV2lkdGg7CisgICAgICAgIGRlcHRoU3Rl
bmNpbERlc2MuSGVpZ2h0ID0gYmFja2J1ZmZlckhlaWdodDsKKyAgICAgICAgZGVwdGhTdGVuY2ls
RGVzYy5Gb3JtYXQgPSBnbF9kM2QxMTo6Q29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChtRGVwdGhC
dWZmZXJGb3JtYXQpOworICAgICAgICBkZXB0aFN0ZW5jaWxEZXNjLk1pcExldmVscyA9IDE7Cisg
ICAgICAgIGRlcHRoU3RlbmNpbERlc2MuQXJyYXlTaXplID0gMTsKKyAgICAgICAgZGVwdGhTdGVu
Y2lsRGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKKyAgICAgICAgZGVwdGhTdGVuY2lsRGVzYy5T
YW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAgICBkZXB0aFN0ZW5jaWxEZXNjLlVzYWdlID0g
RDNEMTFfVVNBR0VfREVGQVVMVDsKKyAgICAgICAgZGVwdGhTdGVuY2lsRGVzYy5CaW5kRmxhZ3Mg
PSBEM0QxMV9CSU5EX0RFUFRIX1NURU5DSUw7CisgICAgICAgIGRlcHRoU3RlbmNpbERlc2MuQ1BV
QWNjZXNzRmxhZ3MgPSAwOworICAgICAgICBkZXB0aFN0ZW5jaWxEZXNjLk1pc2NGbGFncyA9IDA7
CisKKyAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlcHRoU3RlbmNp
bERlc2MsIE5VTEwsICZtRGVwdGhTdGVuY2lsVGV4dHVyZSk7CisgICAgICAgIGlmIChGQUlMRUQo
cmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGRl
cHRoc3RlbmNpbCBzdXJmYWNlIGZvciBuZXcgc3dhcCBjaGFpbjogMHglMDhYIiwgcmVzdWx0KTsK
KyAgICAgICAgICAgIHJlbGVhc2UoKTsKKworICAgICAgICAgICAgaWYgKGQzZDExOjppc0Rldmlj
ZUxvc3RFcnJvcihyZXN1bHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBFR0xfQ09OVEVYVF9MT1NUOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobURlcHRoU3Rl
bmNpbFRleHR1cmUsICJEZXB0aCBzdGVuY2lsIHRleHR1cmUiKTsKKworICAgICAgICByZXN1bHQg
PSBkZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFZpZXcobURlcHRoU3RlbmNpbFRleHR1cmUsIE5V
TEwsICZtRGVwdGhTdGVuY2lsRFNWaWV3KTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1
bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtRGVwdGhTdGVuY2lsRFNWaWV3LCAi
RGVwdGggc3RlbmNpbCB2aWV3Iik7CisgICAgfQorCisgICAgbVdpZHRoID0gYmFja2J1ZmZlcldp
ZHRoOworICAgIG1IZWlnaHQgPSBiYWNrYnVmZmVySGVpZ2h0OworCisgICAgaWYgKHByZXZpb3Vz
T2Zmc2NyZWVuVGV4dHVyZSAhPSBOVUxMKQorICAgIHsKKyAgICAgICAgRDNEMTFfQk9YIHNvdXJj
ZUJveCA9IHswfTsKKyAgICAgICAgc291cmNlQm94LmxlZnQgPSAwOworICAgICAgICBzb3VyY2VC
b3gucmlnaHQgPSBzdGQ6Om1pbihwcmV2aW91c1dpZHRoLCBtV2lkdGgpOworICAgICAgICBzb3Vy
Y2VCb3gudG9wID0gc3RkOjptYXgocHJldmlvdXNIZWlnaHQgLSBtSGVpZ2h0LCAwKTsKKyAgICAg
ICAgc291cmNlQm94LmJvdHRvbSA9IHByZXZpb3VzSGVpZ2h0OworICAgICAgICBzb3VyY2VCb3gu
ZnJvbnQgPSAwOworICAgICAgICBzb3VyY2VCb3guYmFjayA9IDE7CisKKyAgICAgICAgSUQzRDEx
RGV2aWNlQ29udGV4dCAqZGV2aWNlQ29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4
dCgpOworICAgICAgICBjb25zdCBpbnQgeW9mZnNldCA9IHN0ZDo6bWF4KG1IZWlnaHQgLSBwcmV2
aW91c0hlaWdodCwgMCk7CisgICAgICAgIGRldmljZUNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJl
Z2lvbihtT2Zmc2NyZWVuVGV4dHVyZSwgMCwgMCwgeW9mZnNldCwgMCwgcHJldmlvdXNPZmZzY3Jl
ZW5UZXh0dXJlLCAwLCAmc291cmNlQm94KTsKKworICAgICAgICBwcmV2aW91c09mZnNjcmVlblRl
eHR1cmUtPlJlbGVhc2UoKTsKKworICAgICAgICBpZiAobVN3YXBDaGFpbikKKyAgICAgICAgewor
ICAgICAgICAgICAgc3dhcFJlY3QoMCwgMCwgbVdpZHRoLCBtSGVpZ2h0KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKK30KKworRUdMaW50IFN3YXBDaGFpbjEx
OjpyZXNpemUoRUdMaW50IGJhY2tidWZmZXJXaWR0aCwgRUdMaW50IGJhY2tidWZmZXJIZWlnaHQp
Cit7CisgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwor
CisgICAgaWYgKGRldmljZSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVHTF9CQURf
QUNDRVNTOworICAgIH0KKworICAgIC8vIENhbiBvbmx5IGNhbGwgcmVzaXplIGlmIHdlIGhhdmUg
YWxyZWFkeSBjcmVhdGVkIG91ciBzd2FwIGJ1ZmZlciBhbmQgcmVzb3VyY2VzCisgICAgQVNTRVJU
KG1Td2FwQ2hhaW4gJiYgbUJhY2tCdWZmZXJUZXh0dXJlICYmIG1CYWNrQnVmZmVyUlRWaWV3KTsK
KworICAgIGlmIChtQmFja0J1ZmZlclRleHR1cmUpCisgICAgeworICAgICAgICBtQmFja0J1ZmZl
clRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbUJhY2tCdWZmZXJUZXh0dXJlID0gTlVMTDsK
KyAgICB9CisKKyAgICBpZiAobUJhY2tCdWZmZXJSVFZpZXcpCisgICAgeworICAgICAgICBtQmFj
a0J1ZmZlclJUVmlldy0+UmVsZWFzZSgpOworICAgICAgICBtQmFja0J1ZmZlclJUVmlldyA9IE5V
TEw7CisgICAgfQorCisgICAgLy8gUmVzaXplIHN3YXAgY2hhaW4KKyAgICBEWEdJX0ZPUk1BVCBi
YWNrYnVmZmVyRFhHSUZvcm1hdCA9IGdsX2QzZDExOjpDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0
KG1CYWNrQnVmZmVyRm9ybWF0KTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IG1Td2FwQ2hhaW4tPlJl
c2l6ZUJ1ZmZlcnMoMiwgYmFja2J1ZmZlcldpZHRoLCBiYWNrYnVmZmVySGVpZ2h0LCBiYWNrYnVm
ZmVyRFhHSUZvcm1hdCwgMCk7CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAg
ICAgICBFUlIoIkVycm9yIHJlc2l6aW5nIHN3YXAgY2hhaW4gYnVmZmVyczogMHglMDhYIiwgcmVz
dWx0KTsKKyAgICAgICAgcmVsZWFzZSgpOworCisgICAgICAgIGlmIChkM2QxMTo6aXNEZXZpY2VM
b3N0RXJyb3IocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9DT05U
RVhUX0xPU1Q7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gRUdMX0JBRF9BTExPQzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlc3VsdCA9
IG1Td2FwQ2hhaW4tPkdldEJ1ZmZlcigwLCBfX3V1aWRvZihJRDNEMTFUZXh0dXJlMkQpLCAoTFBW
T0lEKikmbUJhY2tCdWZmZXJUZXh0dXJlKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkp
OworICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIGQzZDExOjpTZXRE
ZWJ1Z05hbWUobUJhY2tCdWZmZXJUZXh0dXJlLCAiQmFjayBidWZmZXIgdGV4dHVyZSIpOworICAg
IH0KKworICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlUmVuZGVyVGFyZ2V0VmlldyhtQmFja0J1
ZmZlclRleHR1cmUsIE5VTEwsICZtQmFja0J1ZmZlclJUVmlldyk7CisgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKyAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCisgICAgeworICAgICAg
ICBkM2QxMTo6U2V0RGVidWdOYW1lKG1CYWNrQnVmZmVyUlRWaWV3LCAiQmFjayBidWZmZXIgcmVu
ZGVyIHRhcmdldCIpOworICAgIH0KKworICAgIHJldHVybiByZXNldE9mZnNjcmVlblRleHR1cmUo
YmFja2J1ZmZlcldpZHRoLCBiYWNrYnVmZmVySGVpZ2h0KTsKK30KKworRUdMaW50IFN3YXBDaGFp
bjExOjpyZXNldChpbnQgYmFja2J1ZmZlcldpZHRoLCBpbnQgYmFja2J1ZmZlckhlaWdodCwgRUdM
aW50IHN3YXBJbnRlcnZhbCkKK3sKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJl
ci0+Z2V0RGV2aWNlKCk7CisKKyAgICBpZiAoZGV2aWNlID09IE5VTEwpCisgICAgeworICAgICAg
ICByZXR1cm4gRUdMX0JBRF9BQ0NFU1M7CisgICAgfQorCisgICAgLy8gUmVsZWFzZSBzcGVjaWZp
YyByZXNvdXJjZXMgdG8gZnJlZSB1cCBtZW1vcnkgZm9yIHRoZSBuZXcgcmVuZGVyIHRhcmdldCwg
d2hpbGUgdGhlCisgICAgLy8gb2xkIHJlbmRlciB0YXJnZXQgc3RpbGwgZXhpc3RzIGZvciB0aGUg
cHVycG9zZSBvZiBwcmVzZXJ2aW5nIGl0cyBjb250ZW50cy4KKyAgICBpZiAobVN3YXBDaGFpbikK
KyAgICB7CisgICAgICAgIG1Td2FwQ2hhaW4tPlJlbGVhc2UoKTsKKyAgICAgICAgbVN3YXBDaGFp
biA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1CYWNrQnVmZmVyVGV4dHVyZSkKKyAgICB7Cisg
ICAgICAgIG1CYWNrQnVmZmVyVGV4dHVyZS0+UmVsZWFzZSgpOworICAgICAgICBtQmFja0J1ZmZl
clRleHR1cmUgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtQmFja0J1ZmZlclJUVmlldykKKyAg
ICB7CisgICAgICAgIG1CYWNrQnVmZmVyUlRWaWV3LT5SZWxlYXNlKCk7CisgICAgICAgIG1CYWNr
QnVmZmVyUlRWaWV3ID0gTlVMTDsKKyAgICB9CisKKyAgICBtU3dhcEludGVydmFsID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50Pihzd2FwSW50ZXJ2YWwpOworICAgIGlmIChtU3dhcEludGVydmFs
ID4gNCkKKyAgICB7CisgICAgICAgIC8vIElEWEdJU3dhcENoYWluOjpQcmVzZW50IGRvY3VtZW50
YXRpb24gc3RhdGVzIHRoYXQgdmFsaWQgc3luYyBpbnRlcnZhbHMgYXJlIGluIHRoZSBbMCw0XSBy
YW5nZQorICAgICAgICByZXR1cm4gRUdMX0JBRF9QQVJBTUVURVI7CisgICAgfQorCisgICAgLy8g
RUdMIGFsbG93cyBjcmVhdGluZyBhIHN1cmZhY2Ugd2l0aCAweDAgZGltZW5zaW9uLCBob3dldmVy
LCBEWEdJIGRvZXMgbm90IGxpa2UgMHgwIHN3YXBjaGFpbnMKKyAgICBpZiAoYmFja2J1ZmZlcldp
ZHRoIDwgMSB8fCBiYWNrYnVmZmVySGVpZ2h0IDwgMSkKKyAgICB7CisgICAgICAgIHJlbGVhc2VP
ZmZzY3JlZW5UZXh0dXJlKCk7CisgICAgICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKKyAgICB9CisK
KyAgICBpZiAobVdpbmRvdykKKyAgICB7CisgICAgICAgIC8vIFdlIGNhbm5vdCBjcmVhdGUgYSBz
d2FwIGNoYWluIGZvciBhbiBIV05EIHRoYXQgaXMgb3duZWQgYnkgYSBkaWZmZXJlbnQgcHJvY2Vz
cworICAgICAgICBEV09SRCBjdXJyZW50UHJvY2Vzc0lkID0gR2V0Q3VycmVudFByb2Nlc3NJZCgp
OworICAgICAgICBEV09SRCB3bmRQcm9jZXNzSWQ7CisgICAgICAgIEdldFdpbmRvd1RocmVhZFBy
b2Nlc3NJZChtV2luZG93LCAmd25kUHJvY2Vzc0lkKTsKKworICAgICAgICBpZiAoY3VycmVudFBy
b2Nlc3NJZCAhPSB3bmRQcm9jZXNzSWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiQ291
bGQgbm90IGNyZWF0ZSBzd2FwIGNoYWluLCB3aW5kb3cgb3duZWQgYnkgZGlmZmVyZW50IHByb2Nl
c3MiKTsKKyAgICAgICAgICAgIHJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBFR0xfQkFE
X05BVElWRV9XSU5ET1c7CisgICAgICAgIH0KKworICAgICAgICBJRFhHSUZhY3RvcnkgKmZhY3Rv
cnkgPSBtUmVuZGVyZXItPmdldER4Z2lGYWN0b3J5KCk7CisKKyAgICAgICAgRFhHSV9TV0FQX0NI
QUlOX0RFU0Mgc3dhcENoYWluRGVzYyA9IHswfTsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZm
ZXJDb3VudCA9IDI7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5Gb3JtYXQgPSBn
bF9kM2QxMTo6Q29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChtQmFja0J1ZmZlckZvcm1hdCk7Cisg
ICAgICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5XaWR0aCA9IGJhY2tidWZmZXJXaWR0aDsK
KyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLkhlaWdodCA9IGJhY2tidWZmZXJIZWln
aHQ7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5TY2FsaW5nID0gRFhHSV9NT0RF
X1NDQUxJTkdfVU5TUEVDSUZJRUQ7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5T
Y2FubGluZU9yZGVyaW5nID0gRFhHSV9NT0RFX1NDQU5MSU5FX09SREVSX1VOU1BFQ0lGSUVEOwor
ICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckRlc2MuUmVmcmVzaFJhdGUuTnVtZXJhdG9yID0g
MDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLlJlZnJlc2hSYXRlLkRlbm9taW5h
dG9yID0gMTsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJVc2FnZSA9IERYR0lfVVNBR0Vf
UkVOREVSX1RBUkdFVF9PVVRQVVQ7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuRmxhZ3MgPSAwOwor
ICAgICAgICBzd2FwQ2hhaW5EZXNjLk91dHB1dFdpbmRvdyA9IG1XaW5kb3c7CisgICAgICAgIHN3
YXBDaGFpbkRlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7CisgICAgICAgIHN3YXBDaGFpbkRlc2Mu
U2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5XaW5kb3dlZCA9
IFRSVUU7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBmYWN0b3J5LT5DcmVhdGVTd2FwQ2hh
aW4oZGV2aWNlLCAmc3dhcENoYWluRGVzYywgJm1Td2FwQ2hhaW4pOworCisgICAgICAgIGlmIChG
QUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3Jl
YXRlIGFkZGl0aW9uYWwgc3dhcCBjaGFpbnMgb3Igb2Zmc2NyZWVuIHN1cmZhY2VzOiAlMDhsWCIs
IHJlc3VsdCk7CisgICAgICAgICAgICByZWxlYXNlKCk7CisKKyAgICAgICAgICAgIGlmIChkM2Qx
MTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gRUdMX0NPTlRFWFRfTE9TVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRUdMX0JBRF9BTExP
QzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IG1Td2FwQ2hh
aW4tPkdldEJ1ZmZlcigwLCBfX3V1aWRvZihJRDNEMTFUZXh0dXJlMkQpLCAoTFBWT0lEKikmbUJh
Y2tCdWZmZXJUZXh0dXJlKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAg
ICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQmFja0J1ZmZlclRleHR1cmUsICJCYWNrIGJ1ZmZl
ciB0ZXh0dXJlIik7CisKKyAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJn
ZXRWaWV3KG1CYWNrQnVmZmVyVGV4dHVyZSwgTlVMTCwgJm1CYWNrQnVmZmVyUlRWaWV3KTsKKyAg
ICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVn
TmFtZShtQmFja0J1ZmZlclJUVmlldywgIkJhY2sgYnVmZmVyIHJlbmRlciB0YXJnZXQiKTsKKyAg
ICB9CisKKyAgICAvLyBJZiB3ZSBhcmUgcmVzaXppbmcgdGhlIHN3YXAgY2hhaW4sIHdlIGRvbid0
IHdpc2ggdG8gcmVjcmVhdGUgYWxsIHRoZSBzdGF0aWMgcmVzb3VyY2VzCisgICAgaWYgKCFtUGFz
c1Rocm91Z2hSZXNvdXJjZXNJbml0KQorICAgIHsKKyAgICAgICAgbVBhc3NUaHJvdWdoUmVzb3Vy
Y2VzSW5pdCA9IHRydWU7CisgICAgICAgIGluaXRQYXNzVGhyb3VnaFJlc291cmNlcygpOworICAg
IH0KKworICAgIHJldHVybiByZXNldE9mZnNjcmVlblRleHR1cmUoYmFja2J1ZmZlcldpZHRoLCBi
YWNrYnVmZmVySGVpZ2h0KTsKK30KKwordm9pZCBTd2FwQ2hhaW4xMTo6aW5pdFBhc3NUaHJvdWdo
UmVzb3VyY2VzKCkKK3sKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0
RGV2aWNlKCk7CisKKyAgICBBU1NFUlQoZGV2aWNlICE9IE5VTEwpOworCisgICAgLy8gTWFrZSBz
dXJlIG91ciByZXNvdXJjZXMgYXJlIGFsbCBub3QgYWxsb2NhdGVkLCB3aGVuIHdlIGNyZWF0ZQor
ICAgIEFTU0VSVChtUXVhZFZCID09IE5VTEwgJiYgbVBhc3NUaHJvdWdoU2FtcGxlciA9PSBOVUxM
KTsKKyAgICBBU1NFUlQobVBhc3NUaHJvdWdoSUwgPT0gTlVMTCAmJiBtUGFzc1Rocm91Z2hWUyA9
PSBOVUxMICYmIG1QYXNzVGhyb3VnaFBTID09IE5VTEwpOworCisgICAgRDNEMTFfQlVGRkVSX0RF
U0MgdmJEZXNjOworICAgIHZiRGVzYy5CeXRlV2lkdGggPSBzaXplb2YoZDNkMTE6OlBvc2l0aW9u
VGV4Q29vcmRWZXJ0ZXgpICogNDsKKyAgICB2YkRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9EWU5B
TUlDOworICAgIHZiRGVzYy5CaW5kRmxhZ3MgPSBEM0QxMV9CSU5EX1ZFUlRFWF9CVUZGRVI7Cisg
ICAgdmJEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsKKyAgICB2
YkRlc2MuTWlzY0ZsYWdzID0gMDsKKyAgICB2YkRlc2MuU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7
CisKKyAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZ2YkRlc2MsIE5V
TEwsICZtUXVhZFZCKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGQzZDEx
OjpTZXREZWJ1Z05hbWUobVF1YWRWQiwgIlN3YXAgY2hhaW4gcXVhZCB2ZXJ0ZXggYnVmZmVyIik7
CisKKyAgICBEM0QxMV9TQU1QTEVSX0RFU0Mgc2FtcGxlckRlc2M7CisgICAgc2FtcGxlckRlc2Mu
RmlsdGVyID0gRDNEMTFfRklMVEVSX01JTl9NQUdfTUlQX1BPSU5UOworICAgIHNhbXBsZXJEZXNj
LkFkZHJlc3NVID0gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgIHNhbXBsZXJEZXNj
LkFkZHJlc3NWID0gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgIHNhbXBsZXJEZXNj
LkFkZHJlc3NXID0gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgIHNhbXBsZXJEZXNj
Lk1pcExPREJpYXMgPSAwLjBmOworICAgIHNhbXBsZXJEZXNjLk1heEFuaXNvdHJvcHkgPSAwOwor
ICAgIHNhbXBsZXJEZXNjLkNvbXBhcmlzb25GdW5jID0gRDNEMTFfQ09NUEFSSVNPTl9ORVZFUjsK
KyAgICBzYW1wbGVyRGVzYy5Cb3JkZXJDb2xvclswXSA9IDAuMGY7CisgICAgc2FtcGxlckRlc2Mu
Qm9yZGVyQ29sb3JbMV0gPSAwLjBmOworICAgIHNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzJdID0g
MC4wZjsKKyAgICBzYW1wbGVyRGVzYy5Cb3JkZXJDb2xvclszXSA9IDAuMGY7CisgICAgc2FtcGxl
ckRlc2MuTWluTE9EID0gMDsKKyAgICBzYW1wbGVyRGVzYy5NYXhMT0QgPSBEM0QxMV9GTE9BVDMy
X01BWDsKKworICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlU2FtcGxlclN0YXRlKCZzYW1wbGVy
RGVzYywgJm1QYXNzVGhyb3VnaFNhbXBsZXIpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0
KSk7CisgICAgZDNkMTE6OlNldERlYnVnTmFtZShtUGFzc1Rocm91Z2hTYW1wbGVyLCAiU3dhcCBj
aGFpbiBwYXNzIHRocm91Z2ggc2FtcGxlciIpOworCisgICAgRDNEMTFfSU5QVVRfRUxFTUVOVF9E
RVNDIHF1YWRMYXlvdXRbXSA9CisgICAgeworICAgICAgICB7ICJQT1NJVElPTiIsIDAsIERYR0lf
Rk9STUFUX1IzMkczMl9GTE9BVCwgMCwgMCwgRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRBLCAw
IH0sCisgICAgICAgIHsgIlRFWENPT1JEIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAw
LCA4LCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEsIDAgfSwKKyAgICB9OworCisgICAgcmVz
dWx0ID0gZGV2aWNlLT5DcmVhdGVJbnB1dExheW91dChxdWFkTGF5b3V0LCAyLCBnX1ZTX1Bhc3N0
aHJvdWdoLCBzaXplb2YoZ19WU19QYXNzdGhyb3VnaCksICZtUGFzc1Rocm91Z2hJTCk7CisgICAg
QVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1QYXNz
VGhyb3VnaElMLCAiU3dhcCBjaGFpbiBwYXNzIHRocm91Z2ggbGF5b3V0Iik7CisKKyAgICByZXN1
bHQgPSBkZXZpY2UtPkNyZWF0ZVZlcnRleFNoYWRlcihnX1ZTX1Bhc3N0aHJvdWdoLCBzaXplb2Yo
Z19WU19QYXNzdGhyb3VnaCksIE5VTEwsICZtUGFzc1Rocm91Z2hWUyk7CisgICAgQVNTRVJUKFNV
Q0NFRURFRChyZXN1bHQpKTsKKyAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1QYXNzVGhyb3VnaFZT
LCAiU3dhcCBjaGFpbiBwYXNzIHRocm91Z2ggdmVydGV4IHNoYWRlciIpOworCisgICAgcmVzdWx0
ID0gZGV2aWNlLT5DcmVhdGVQaXhlbFNoYWRlcihnX1BTX1Bhc3N0aHJvdWdoUkdCQSwgc2l6ZW9m
KGdfUFNfUGFzc3Rocm91Z2hSR0JBKSwgTlVMTCwgJm1QYXNzVGhyb3VnaFBTKTsKKyAgICBBU1NF
UlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVBhc3NUaHJv
dWdoUFMsICJTd2FwIGNoYWluIHBhc3MgdGhyb3VnaCBwaXhlbCBzaGFkZXIiKTsKK30KKworLy8g
cGFyYW1ldGVycyBzaG91bGQgYmUgdmFsaWRhdGVkL2NsYW1wZWQgYnkgY2FsbGVyCitFR0xpbnQg
U3dhcENoYWluMTE6OnN3YXBSZWN0KEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBF
R0xpbnQgaGVpZ2h0KQoreworICAgIGlmICghbVN3YXBDaGFpbikKKyAgICB7CisgICAgICAgIHJl
dHVybiBFR0xfU1VDQ0VTUzsKKyAgICB9CisKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1S
ZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqZGV2aWNlQ29u
dGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOworCisgICAgLy8gU2V0IHZlcnRp
Y2VzCisgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZFJlc291cmNlOworICAgIEhS
RVNVTFQgcmVzdWx0ID0gZGV2aWNlQ29udGV4dC0+TWFwKG1RdWFkVkIsIDAsIEQzRDExX01BUF9X
UklURV9ESVNDQVJELCAwLCAmbWFwcGVkUmVzb3VyY2UpOworICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBFR0xfQkFEX0FDQ0VTUzsKKyAgICB9CisKKyAgICBk
M2QxMTo6UG9zaXRpb25UZXhDb29yZFZlcnRleCAqdmVydGljZXMgPSBzdGF0aWNfY2FzdDxkM2Qx
MTo6UG9zaXRpb25UZXhDb29yZFZlcnRleCo+KG1hcHBlZFJlc291cmNlLnBEYXRhKTsKKworICAg
IC8vIENyZWF0ZSBhIHF1YWQgaW4gaG9tb2dlbmVvdXMgY29vcmRpbmF0ZXMKKyAgICBmbG9hdCB4
MSA9ICh4IC8gZmxvYXQobVdpZHRoKSkgKiAyLjBmIC0gMS4wZjsKKyAgICBmbG9hdCB5MSA9ICh5
IC8gZmxvYXQobUhlaWdodCkpICogMi4wZiAtIDEuMGY7CisgICAgZmxvYXQgeDIgPSAoKHggKyB3
aWR0aCkgLyBmbG9hdChtV2lkdGgpKSAqIDIuMGYgLSAxLjBmOworICAgIGZsb2F0IHkyID0gKCh5
ICsgaGVpZ2h0KSAvIGZsb2F0KG1IZWlnaHQpKSAqIDIuMGYgLSAxLjBmOworCisgICAgZmxvYXQg
dTEgPSB4IC8gZmxvYXQobVdpZHRoKTsKKyAgICBmbG9hdCB2MSA9IHkgLyBmbG9hdChtSGVpZ2h0
KTsKKyAgICBmbG9hdCB1MiA9ICh4ICsgd2lkdGgpIC8gZmxvYXQobVdpZHRoKTsKKyAgICBmbG9h
dCB2MiA9ICh5ICsgaGVpZ2h0KSAvIGZsb2F0KG1IZWlnaHQpOworCisgICAgZDNkMTE6OlNldFBv
c2l0aW9uVGV4Q29vcmRWZXJ0ZXgoJnZlcnRpY2VzWzBdLCB4MSwgeTEsIHUxLCB2MSk7CisgICAg
ZDNkMTE6OlNldFBvc2l0aW9uVGV4Q29vcmRWZXJ0ZXgoJnZlcnRpY2VzWzFdLCB4MSwgeTIsIHUx
LCB2Mik7CisgICAgZDNkMTE6OlNldFBvc2l0aW9uVGV4Q29vcmRWZXJ0ZXgoJnZlcnRpY2VzWzJd
LCB4MiwgeTEsIHUyLCB2MSk7CisgICAgZDNkMTE6OlNldFBvc2l0aW9uVGV4Q29vcmRWZXJ0ZXgo
JnZlcnRpY2VzWzNdLCB4MiwgeTIsIHUyLCB2Mik7CisKKyAgICBkZXZpY2VDb250ZXh0LT5Vbm1h
cChtUXVhZFZCLCAwKTsKKworICAgIHN0YXRpYyBVSU5UIHN0cmlkZSA9IHNpemVvZihkM2QxMTo6
UG9zaXRpb25UZXhDb29yZFZlcnRleCk7CisgICAgc3RhdGljIFVJTlQgc3RhcnRJZHggPSAwOwor
ICAgIGRldmljZUNvbnRleHQtPklBU2V0VmVydGV4QnVmZmVycygwLCAxLCAmbVF1YWRWQiwgJnN0
cmlkZSwgJnN0YXJ0SWR4KTsKKworICAgIC8vIEFwcGx5IHN0YXRlCisgICAgZGV2aWNlQ29udGV4
dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShOVUxMLCAweEZGRkZGRkZGKTsKKworICAgIHN0YXRp
YyBjb25zdCBmbG9hdCBibGVuZEZhY3Rvcls0XSA9IHsgMS4wZiwgMS4wZiwgMS4wZiwgMS4wZiB9
OworICAgIGRldmljZUNvbnRleHQtPk9NU2V0QmxlbmRTdGF0ZShOVUxMLCBibGVuZEZhY3Rvciwg
MHhGRkZGRkZGKTsKKworICAgIGRldmljZUNvbnRleHQtPlJTU2V0U3RhdGUoTlVMTCk7CisKKyAg
ICAvLyBBcHBseSBzaGFkZXJzCisgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRJbnB1dExheW91dCht
UGFzc1Rocm91Z2hJTCk7CisgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRQcmltaXRpdmVUb3BvbG9n
eShEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xFU1RSSVApOworICAgIGRldmljZUNvbnRl
eHQtPlZTU2V0U2hhZGVyKG1QYXNzVGhyb3VnaFZTLCBOVUxMLCAwKTsKKyAgICBkZXZpY2VDb250
ZXh0LT5QU1NldFNoYWRlcihtUGFzc1Rocm91Z2hQUywgTlVMTCwgMCk7CisgICAgZGV2aWNlQ29u
dGV4dC0+R1NTZXRTaGFkZXIoTlVMTCwgTlVMTCwgMCk7CisKKyAgICAvLyBBcHBseSByZW5kZXIg
dGFyZ2V0cworICAgIG1SZW5kZXJlci0+c2V0T25lVGltZVJlbmRlclRhcmdldChtQmFja0J1ZmZl
clJUVmlldyk7CisKKyAgICAvLyBTZXQgdGhlIHZpZXdwb3J0CisgICAgRDNEMTFfVklFV1BPUlQg
dmlld3BvcnQ7CisgICAgdmlld3BvcnQuVG9wTGVmdFggPSAwOworICAgIHZpZXdwb3J0LlRvcExl
ZnRZID0gMDsKKyAgICB2aWV3cG9ydC5XaWR0aCA9IG1XaWR0aDsKKyAgICB2aWV3cG9ydC5IZWln
aHQgPSBtSGVpZ2h0OworICAgIHZpZXdwb3J0Lk1pbkRlcHRoID0gMC4wZjsKKyAgICB2aWV3cG9y
dC5NYXhEZXB0aCA9IDEuMGY7CisgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRWaWV3cG9ydHMoMSwg
JnZpZXdwb3J0KTsKKworICAgIC8vIEFwcGx5IHRleHR1cmVzCisgICAgZGV2aWNlQ29udGV4dC0+
UFNTZXRTaGFkZXJSZXNvdXJjZXMoMCwgMSwgJm1PZmZzY3JlZW5TUlZpZXcpOworICAgIGRldmlj
ZUNvbnRleHQtPlBTU2V0U2FtcGxlcnMoMCwgMSwgJm1QYXNzVGhyb3VnaFNhbXBsZXIpOworCisg
ICAgLy8gRHJhdworICAgIGRldmljZUNvbnRleHQtPkRyYXcoNCwgMCk7CisgICAgcmVzdWx0ID0g
bVN3YXBDaGFpbi0+UHJlc2VudChtU3dhcEludGVydmFsLCAwKTsKKworICAgIGlmIChyZXN1bHQg
PT0gRFhHSV9FUlJPUl9ERVZJQ0VfUkVNT1ZFRCkKKyAgICB7CisgICAgICAgIEhSRVNVTFQgcmVt
b3ZlZFJlYXNvbiA9IGRldmljZS0+R2V0RGV2aWNlUmVtb3ZlZFJlYXNvbigpOworICAgICAgICBF
UlIoIlByZXNlbnQgZmFpbGVkOiB0aGUgRDNEMTEgZGV2aWNlIHdhcyByZW1vdmVkOiAweCUwOFgi
LCByZW1vdmVkUmVhc29uKTsKKyAgICAgICAgcmV0dXJuIEVHTF9DT05URVhUX0xPU1Q7CisgICAg
fQorICAgIGVsc2UgaWYgKHJlc3VsdCA9PSBEWEdJX0VSUk9SX0RFVklDRV9SRVNFVCkKKyAgICB7
CisgICAgICAgIEVSUigiUHJlc2VudCBmYWlsZWQ6IHRoZSBEM0QxMSBkZXZpY2Ugd2FzIHJlc2V0
IGZyb20gYSBiYWQgY29tbWFuZC4iKTsKKyAgICAgICAgcmV0dXJuIEVHTF9DT05URVhUX0xPU1Q7
CisgICAgfQorICAgIGVsc2UgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJS
KCJQcmVzZW50IGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgMHglMDhYIiwgcmVzdWx0KTsKKyAgICB9
CisKKyAgICAvLyBVbmJpbmQKKyAgICBzdGF0aWMgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpj
b25zdCBudWxsU1JWID0gTlVMTDsKKyAgICBkZXZpY2VDb250ZXh0LT5QU1NldFNoYWRlclJlc291
cmNlcygwLCAxLCAmbnVsbFNSVik7CisKKyAgICBtUmVuZGVyZXItPnVuYXBwbHlSZW5kZXJUYXJn
ZXRzKCk7CisgICAgbVJlbmRlcmVyLT5tYXJrQWxsU3RhdGVEaXJ0eSgpOworCisgICAgcmV0dXJu
IEVHTF9TVUNDRVNTOworfQorCisvLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHRleHR1cmUuCisv
LyBjYWxsZXIgbXVzdCBSZWxlYXNlKCkgdGhlIHJldHVybmVkIHRleHR1cmUKK0lEM0QxMVRleHR1
cmUyRCAqU3dhcENoYWluMTE6OmdldE9mZnNjcmVlblRleHR1cmUoKQoreworICAgIGlmIChtT2Zm
c2NyZWVuVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlLT5BZGRSZWYo
KTsKKyAgICB9CisKKyAgICByZXR1cm4gbU9mZnNjcmVlblRleHR1cmU7Cit9CisKKy8vIEluY3Jl
bWVudHMgcmVmY291bnQgb24gdmlldy4KKy8vIGNhbGxlciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0
dXJuZWQgdmlldworSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqU3dhcENoYWluMTE6OmdldFJlbmRl
clRhcmdldCgpCit7CisgICAgaWYgKG1PZmZzY3JlZW5SVFZpZXcpCisgICAgeworICAgICAgICBt
T2Zmc2NyZWVuUlRWaWV3LT5BZGRSZWYoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbU9mZnNjcmVl
blJUVmlldzsKK30KKworLy8gSW5jcmVtZW50cyByZWZjb3VudCBvbiB2aWV3LgorLy8gY2FsbGVy
IG11c3QgUmVsZWFzZSgpIHRoZSByZXR1cm5lZCB2aWV3CitJRDNEMTFTaGFkZXJSZXNvdXJjZVZp
ZXcgKlN3YXBDaGFpbjExOjpnZXRSZW5kZXJUYXJnZXRTaGFkZXJSZXNvdXJjZSgpCit7CisgICAg
aWYgKG1PZmZzY3JlZW5TUlZpZXcpCisgICAgeworICAgICAgICBtT2Zmc2NyZWVuU1JWaWV3LT5B
ZGRSZWYoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbU9mZnNjcmVlblNSVmlldzsKK30KKworLy8g
SW5jcmVtZW50cyByZWZjb3VudCBvbiB2aWV3LgorLy8gY2FsbGVyIG11c3QgUmVsZWFzZSgpIHRo
ZSByZXR1cm5lZCB2aWV3CitJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpTd2FwQ2hhaW4xMTo6Z2V0
RGVwdGhTdGVuY2lsKCkKK3sKKyAgICBpZiAobURlcHRoU3RlbmNpbERTVmlldykKKyAgICB7Cisg
ICAgICAgIG1EZXB0aFN0ZW5jaWxEU1ZpZXctPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVy
biBtRGVwdGhTdGVuY2lsRFNWaWV3OworfQorCitJRDNEMTFUZXh0dXJlMkQgKlN3YXBDaGFpbjEx
OjpnZXREZXB0aFN0ZW5jaWxUZXh0dXJlKCkKK3sKKyAgICBpZiAobURlcHRoU3RlbmNpbFRleHR1
cmUpCisgICAgeworICAgICAgICBtRGVwdGhTdGVuY2lsVGV4dHVyZS0+QWRkUmVmKCk7CisgICAg
fQorCisgICAgcmV0dXJuIG1EZXB0aFN0ZW5jaWxUZXh0dXJlOworfQorCitTd2FwQ2hhaW4xMSAq
U3dhcENoYWluMTE6Om1ha2VTd2FwQ2hhaW4xMShTd2FwQ2hhaW4gKnN3YXBDaGFpbikKK3sKKyAg
ICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShyeDo6U3dhcENoYWluMTEqLCBzd2FwQ2hhaW4pKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cng6OlN3YXBDaGFpbjExKj4oc3dhcENoYWluKTsKK30K
Kwordm9pZCBTd2FwQ2hhaW4xMTo6cmVjcmVhdGUoKQoreworICAgIC8vIHBvc3NpYmx5IHNob3Vs
ZCB1c2UgdGhpcyBtZXRob2QgaW5zdGVhZCBvZiByZXNldAorfQorCit9CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjExLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9Td2FwQ2hhaW4xMS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDc4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU3dhcENoYWluMTEuaDogRGVmaW5lcyBhIGJh
Y2stZW5kIHNwZWNpZmljIGNsYXNzIGZvciB0aGUgRDNEMTEgc3dhcCBjaGFpbi4KKworI2lmbmRl
ZiBMSUJHTEVTVjJfUkVOREVSRVJfU1dBUENIQUlOMTFfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JF
TkRFUkVSX1NXQVBDSEFJTjExX0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4uaCIKKworbmFtZXNwYWNlIHJ4
Cit7CitjbGFzcyBSZW5kZXJlcjExOworCitjbGFzcyBTd2FwQ2hhaW4xMSA6IHB1YmxpYyBTd2Fw
Q2hhaW4KK3sKKyAgcHVibGljOgorICAgIFN3YXBDaGFpbjExKFJlbmRlcmVyMTEgKnJlbmRlcmVy
LCBIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgIEdMZW51
bSBiYWNrQnVmZmVyRm9ybWF0LCBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQpOworICAgIHZpcnR1
YWwgflN3YXBDaGFpbjExKCk7CisKKyAgICBFR0xpbnQgcmVzaXplKEVHTGludCBiYWNrYnVmZmVy
V2lkdGgsIEVHTGludCBiYWNrYnVmZmVySGVpZ2h0KTsKKyAgICB2aXJ0dWFsIEVHTGludCByZXNl
dChFR0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1ZmZlckhlaWdodCwgRUdMaW50
IHN3YXBJbnRlcnZhbCk7CisgICAgdmlydHVhbCBFR0xpbnQgc3dhcFJlY3QoRUdMaW50IHgsIEVH
TGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNyZWF0ZSgpOworCisgICAgdmlydHVhbCBJRDNEMTFUZXh0dXJlMkQgKmdldE9mZnNjcmVlblRl
eHR1cmUoKTsKKyAgICB2aXJ0dWFsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmdldFJlbmRlclRh
cmdldCgpOworICAgIHZpcnR1YWwgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpnZXRSZW5kZXJU
YXJnZXRTaGFkZXJSZXNvdXJjZSgpOworCisgICAgdmlydHVhbCBJRDNEMTFUZXh0dXJlMkQgKmdl
dERlcHRoU3RlbmNpbFRleHR1cmUoKTsKKyAgICB2aXJ0dWFsIElEM0QxMURlcHRoU3RlbmNpbFZp
ZXcgKmdldERlcHRoU3RlbmNpbCgpOworCisgICAgRUdMaW50IGdldFdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbVdpZHRoOyB9CisgICAgRUdMaW50IGdldEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1I
ZWlnaHQ7IH0KKworICAgIHN0YXRpYyBTd2FwQ2hhaW4xMSAqbWFrZVN3YXBDaGFpbjExKFN3YXBD
aGFpbiAqc3dhcENoYWluKTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTihTd2FwQ2hhaW4xMSk7CisKKyAgICB2b2lkIHJlbGVhc2UoKTsKKyAgICB2b2lkIGluaXRQ
YXNzVGhyb3VnaFJlc291cmNlcygpOworICAgIHZvaWQgcmVsZWFzZU9mZnNjcmVlblRleHR1cmUo
KTsKKyAgICBFR0xpbnQgcmVzZXRPZmZzY3JlZW5UZXh0dXJlKGludCBiYWNrYnVmZmVyV2lkdGgs
IGludCBiYWNrYnVmZmVySGVpZ2h0KTsKKworICAgIFJlbmRlcmVyMTEgKm1SZW5kZXJlcjsKKyAg
ICBFR0xpbnQgbUhlaWdodDsKKyAgICBFR0xpbnQgbVdpZHRoOworICAgIGJvb2wgbUFwcENyZWF0
ZWRTaGFyZUhhbmRsZTsKKyAgICB1bnNpZ25lZCBpbnQgbVN3YXBJbnRlcnZhbDsKKyAgICBib29s
IG1QYXNzVGhyb3VnaFJlc291cmNlc0luaXQ7CisKKyAgICBJRFhHSVN3YXBDaGFpbiAqbVN3YXBD
aGFpbjsKKworICAgIElEM0QxMVRleHR1cmUyRCAqbUJhY2tCdWZmZXJUZXh0dXJlOworICAgIElE
M0QxMVJlbmRlclRhcmdldFZpZXcgKm1CYWNrQnVmZmVyUlRWaWV3OworCisgICAgSUQzRDExVGV4
dHVyZTJEICptT2Zmc2NyZWVuVGV4dHVyZTsKKyAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpt
T2Zmc2NyZWVuUlRWaWV3OworICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqbU9mZnNjcmVl
blNSVmlldzsKKworICAgIElEM0QxMVRleHR1cmUyRCAqbURlcHRoU3RlbmNpbFRleHR1cmU7Cisg
ICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqbURlcHRoU3RlbmNpbERTVmlldzsKKworICAgIElE
M0QxMUJ1ZmZlciAqbVF1YWRWQjsKKyAgICBJRDNEMTFTYW1wbGVyU3RhdGUgKm1QYXNzVGhyb3Vn
aFNhbXBsZXI7CisgICAgSUQzRDExSW5wdXRMYXlvdXQgKm1QYXNzVGhyb3VnaElMOworICAgIElE
M0QxMVZlcnRleFNoYWRlciAqbVBhc3NUaHJvdWdoVlM7CisgICAgSUQzRDExUGl4ZWxTaGFkZXIg
Km1QYXNzVGhyb3VnaFBTOworfTsKKworfQorI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9T
V0FQQ0hBSU4xMV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9Td2FwQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4u
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAx
MiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN3YXBD
aGFpbi5oOiBEZWZpbmVzIGEgYmFjay1lbmQgc3BlY2lmaWMgY2xhc3MgdGhhdCBoaWRlcyB0aGUg
ZGV0YWlscyBvZiB0aGUKKy8vIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIHN3YXBjaGFpbi4KKwor
I2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfU1dBUENIQUlOX0hfCisjZGVmaW5lIExJQkdMRVNW
Ml9SRU5ERVJFUl9TV0FQQ0hBSU5fSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgi
CisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBTd2FwQ2hhaW4KK3sKKyAgcHVibGljOgorICAg
IFN3YXBDaGFpbihIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBHTGVudW0gYmFja0J1
ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KQorICAgICAgICA6IG1XaW5kb3co
d2luZG93KSwgbVNoYXJlSGFuZGxlKHNoYXJlSGFuZGxlKSwgbUJhY2tCdWZmZXJGb3JtYXQoYmFj
a0J1ZmZlckZvcm1hdCksIG1EZXB0aEJ1ZmZlckZvcm1hdChkZXB0aEJ1ZmZlckZvcm1hdCkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB+U3dhcENoYWluKCkge307CisKKyAgICB2aXJ0dWFs
IEVHTGludCByZXNpemUoRUdMaW50IGJhY2tidWZmZXJXaWR0aCwgRUdMaW50IGJhY2tidWZmZXJT
aXplKSA9IDA7CisgICAgdmlydHVhbCBFR0xpbnQgcmVzZXQoRUdMaW50IGJhY2tidWZmZXJXaWR0
aCwgRUdMaW50IGJhY2tidWZmZXJIZWlnaHQsIEVHTGludCBzd2FwSW50ZXJ2YWwpID0gMDsKKyAg
ICB2aXJ0dWFsIEVHTGludCBzd2FwUmVjdChFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0
aCwgRUdMaW50IGhlaWdodCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZSgpID0gMDsK
KworICAgIHZpcnR1YWwgSEFORExFIGdldFNoYXJlSGFuZGxlKCkge3JldHVybiBtU2hhcmVIYW5k
bGU7fTsKKworICBwcm90ZWN0ZWQ6CisgICAgY29uc3QgSFdORCBtV2luZG93OyAgICAgICAgICAg
IC8vIFdpbmRvdyB0aGF0IHRoZSBzdXJmYWNlIGlzIGNyZWF0ZWQgZm9yLgorICAgIGNvbnN0IEdM
ZW51bSBtQmFja0J1ZmZlckZvcm1hdDsKKyAgICBjb25zdCBHTGVudW0gbURlcHRoQnVmZmVyRm9y
bWF0OworCisgICAgSEFORExFIG1TaGFyZUhhbmRsZTsKK307CisKK30KKyNlbmRpZiAvLyBMSUJH
TEVTVjJfUkVOREVSRVJfU1dBUENIQUlOX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlOS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJl
U3RvcmFnZTkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTkuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMyOCBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gVGV4dHVyZVN0b3JhZ2U5LmNwcDogSW1wbGVtZW50cyB0aGUgYWJzdHJhY3Qgcng6OlRleHR1
cmVTdG9yYWdlOSBjbGFzcyBhbmQgaXRzIGNvbmNyZXRlIGRlcml2ZWQKKy8vIGNsYXNzZXMgVGV4
dHVyZVN0b3JhZ2U5XzJEIGFuZCBUZXh0dXJlU3RvcmFnZTlfQ3ViZSwgd2hpY2ggYWN0IGFzIHRo
ZSBpbnRlcmZhY2UgdG8gdGhlCisvLyBEM0Q5IHRleHR1cmUuCisKKyNpbmNsdWRlICJsaWJHTEVT
djIvbWFpbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuaCIKKyNp
bmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmgiCisjaW5jbHVkZSAi
bGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyVGFyZ2V0OS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5k
ZXJlcjlfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvVGV4dHVyZS5oIgorCituYW1lc3Bh
Y2UgcngKK3sKK1RleHR1cmVTdG9yYWdlOTo6VGV4dHVyZVN0b3JhZ2U5KFJlbmRlcmVyICpyZW5k
ZXJlciwgRFdPUkQgdXNhZ2UpCisgICAgOiBtTG9kT2Zmc2V0KDApLAorICAgICAgbVJlbmRlcmVy
KFJlbmRlcmVyOTo6bWFrZVJlbmRlcmVyOShyZW5kZXJlcikpLAorICAgICAgbUQzRFVzYWdlKHVz
YWdlKSwKKyAgICAgIG1EM0RQb29sKG1SZW5kZXJlci0+Z2V0VGV4dHVyZVBvb2wodXNhZ2UpKQor
eworfQorCitUZXh0dXJlU3RvcmFnZTk6On5UZXh0dXJlU3RvcmFnZTkoKQoreworfQorCitUZXh0
dXJlU3RvcmFnZTkgKlRleHR1cmVTdG9yYWdlOTo6bWFrZVRleHR1cmVTdG9yYWdlOShUZXh0dXJl
U3RvcmFnZSAqc3RvcmFnZSkKK3sKKyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShUZXh0dXJl
U3RvcmFnZTkqLCBzdG9yYWdlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHR1cmVTdG9y
YWdlOSo+KHN0b3JhZ2UpOworfQorCitEV09SRCBUZXh0dXJlU3RvcmFnZTk6OkdldFRleHR1cmVV
c2FnZShEM0RGT1JNQVQgZDNkZm10LCBHTGVudW0gZ2x1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFi
bGUpCit7CisgICAgRFdPUkQgZDNkdXNhZ2UgPSAwOworCisgICAgaWYgKGQzZGZtdCA9PSBEM0RG
TVRfSU5UWikKKyAgICB7CisgICAgICAgIGQzZHVzYWdlIHw9IEQzRFVTQUdFX0RFUFRIU1RFTkNJ
TDsKKyAgICB9CisgICAgZWxzZSBpZihmb3JjZVJlbmRlcmFibGUgfHwgKFRleHR1cmVTdG9yYWdl
OTo6SXNUZXh0dXJlRm9ybWF0UmVuZGVyYWJsZShkM2RmbXQpICYmIChnbHVzYWdlID09IEdMX0ZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfQU5HTEUpKSkKKyAgICB7CisgICAgICAgIGQzZHVzYWdlIHw9
IEQzRFVTQUdFX1JFTkRFUlRBUkdFVDsKKyAgICB9CisgICAgcmV0dXJuIGQzZHVzYWdlOworfQor
Citib29sIFRleHR1cmVTdG9yYWdlOTo6SXNUZXh0dXJlRm9ybWF0UmVuZGVyYWJsZShEM0RGT1JN
QVQgZm9ybWF0KQoreworICAgIGlmIChmb3JtYXQgPT0gRDNERk1UX0lOVFopCisgICAgeworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgc3dpdGNoKGZvcm1hdCkKKyAgICB7CisgICAg
ICBjYXNlIEQzREZNVF9MODoKKyAgICAgIGNhc2UgRDNERk1UX0E4TDg6CisgICAgICBjYXNlIEQz
REZNVF9EWFQxOgorICAgICAgY2FzZSBEM0RGTVRfRFhUMzoKKyAgICAgIGNhc2UgRDNERk1UX0RY
VDU6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIGNhc2UgRDNERk1UX0E4UjhHOEI4Ogor
ICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6CisgICAgICBjYXNlIEQzREZNVF9BMTZCMTZHMTZS
MTZGOgorICAgICAgY2FzZSBEM0RGTVRfQTMyQjMyRzMyUjMyRjoKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBUZXh0dXJlU3RvcmFnZTk6OmlzUmVuZGVyVGFyZ2V0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1EM0RVc2FnZSAmIChEM0RVU0FHRV9SRU5ERVJUQVJH
RVQgfCBEM0RVU0FHRV9ERVBUSFNURU5DSUwpKSAhPSAwOworfQorCitib29sIFRleHR1cmVTdG9y
YWdlOTo6aXNNYW5hZ2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1EM0RQb29sID09IEQzRFBP
T0xfTUFOQUdFRCk7Cit9CisKK0QzRFBPT0wgVGV4dHVyZVN0b3JhZ2U5OjpnZXRQb29sKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbUQzRFBvb2w7Cit9CisKK0RXT1JEIFRleHR1cmVTdG9yYWdlOTo6
Z2V0VXNhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBtRDNEVXNhZ2U7Cit9CisKK2ludCBUZXh0
dXJlU3RvcmFnZTk6OmdldExvZE9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Mb2RPZmZz
ZXQ7Cit9CisKK2ludCBUZXh0dXJlU3RvcmFnZTk6OmxldmVsQ291bnQoKQoreworICAgIHJldHVy
biBnZXRCYXNlVGV4dHVyZSgpID8gZ2V0QmFzZVRleHR1cmUoKS0+R2V0TGV2ZWxDb3VudCgpIC0g
Z2V0TG9kT2Zmc2V0KCkgOiAwOworfQorCitUZXh0dXJlU3RvcmFnZTlfMkQ6OlRleHR1cmVTdG9y
YWdlOV8yRChSZW5kZXJlciAqcmVuZGVyZXIsIFN3YXBDaGFpbjkgKnN3YXBjaGFpbikgOiBUZXh0
dXJlU3RvcmFnZTkocmVuZGVyZXIsIEQzRFVTQUdFX1JFTkRFUlRBUkdFVCkKK3sKKyAgICBJRGly
ZWN0M0RUZXh0dXJlOSAqc3VyZmFjZVRleHR1cmUgPSBzd2FwY2hhaW4tPmdldE9mZnNjcmVlblRl
eHR1cmUoKTsKKyAgICBtVGV4dHVyZSA9IHN1cmZhY2VUZXh0dXJlOworICAgIG1SZW5kZXJUYXJn
ZXQgPSBOVUxMOworCisgICAgaW5pdGlhbGl6ZVJlbmRlclRhcmdldCgpOworfQorCitUZXh0dXJl
U3RvcmFnZTlfMkQ6OlRleHR1cmVTdG9yYWdlOV8yRChSZW5kZXJlciAqcmVuZGVyZXIsIGludCBs
ZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVu
ZGVyYWJsZSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCisgICAgOiBUZXh0dXJlU3Rv
cmFnZTkocmVuZGVyZXIsIEdldFRleHR1cmVVc2FnZShSZW5kZXJlcjk6Om1ha2VSZW5kZXJlcjko
cmVuZGVyZXIpLT5Db252ZXJ0VGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0KSwg
dXNhZ2UsIGZvcmNlUmVuZGVyYWJsZSkpCit7CisgICAgbVRleHR1cmUgPSBOVUxMOworICAgIG1S
ZW5kZXJUYXJnZXQgPSBOVUxMOworICAgIC8vIGlmIHRoZSB3aWR0aCBvciBoZWlnaHQgaXMgbm90
IHBvc2l0aXZlIHRoaXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gaW5jb21wbGV0ZSB0ZXh0dXJl
CisgICAgLy8gd2UgaGFuZGxlIHRoYXQgaGVyZSBieSBza2lwcGluZyB0aGUgZDNkIHRleHR1cmUg
Y3JlYXRpb24KKyAgICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApCisgICAgeworICAgICAg
ICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworICAg
ICAgICBnbDo6TWFrZVZhbGlkU2l6ZShmYWxzZSwgZ2w6OklzQ29tcHJlc3NlZChpbnRlcm5hbGZv
cm1hdCksICZ3aWR0aCwgJmhlaWdodCwgJm1Mb2RPZmZzZXQpOworICAgICAgICBIUkVTVUxUIHJl
c3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZSh3aWR0aCwgaGVpZ2h0LCBsZXZlbHMgPyBsZXZl
bHMgKyBtTG9kT2Zmc2V0IDogMCwgZ2V0VXNhZ2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVJlbmRlcmVyLT5Db252ZXJ0VGV4dHVyZUludGVybmFs
Rm9ybWF0KGludGVybmFsZm9ybWF0KSwgZ2V0UG9vbCgpLCAmbVRleHR1cmUsIE5VTEwpOworCisg
ICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1F
TU9SWSk7CisgICAgICAgICAgICBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpbml0aWFsaXplUmVuZGVyVGFyZ2V0KCk7Cit9CisKK1RleHR1cmVT
dG9yYWdlOV8yRDo6flRleHR1cmVTdG9yYWdlOV8yRCgpCit7CisgICAgaWYgKG1UZXh0dXJlKQor
ICAgIHsKKyAgICAgICAgbVRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBkZWxldGUg
bVJlbmRlclRhcmdldDsKK30KKworVGV4dHVyZVN0b3JhZ2U5XzJEICpUZXh0dXJlU3RvcmFnZTlf
MkQ6Om1ha2VUZXh0dXJlU3RvcmFnZTlfMkQoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UpCit7Cisg
ICAgQVNTRVJUKEhBU19EWU5BTUlDX1RZUEUoVGV4dHVyZVN0b3JhZ2U5XzJEKiwgc3RvcmFnZSkp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0dXJlU3RvcmFnZTlfMkQqPihzdG9yYWdlKTsK
K30KKworLy8gSW5jcmVtZW50cyByZWZjb3VudCBvbiBzdXJmYWNlLgorLy8gY2FsbGVyIG11c3Qg
UmVsZWFzZSgpIHRoZSByZXR1cm5lZCBzdXJmYWNlCitJRGlyZWN0M0RTdXJmYWNlOSAqVGV4dHVy
ZVN0b3JhZ2U5XzJEOjpnZXRTdXJmYWNlTGV2ZWwoaW50IGxldmVsLCBib29sIGRpcnR5KQorewor
ICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlID0gTlVMTDsKKworICAgIGlmIChtVGV4dHVy
ZSkKKyAgICB7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVRleHR1cmUtPkdldFN1cmZhY2VM
ZXZlbChsZXZlbCArIG1Mb2RPZmZzZXQsICZzdXJmYWNlKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKworICAgICAgICAvLyBXaXRoIG1hbmFnZWQgdGV4dHVyZXMgdGhlIGRy
aXZlciBuZWVkcyB0byBiZSBpbmZvcm1lZCBvZiB1cGRhdGVzIHRvIHRoZSBsb3dlciBtaXBtYXAg
bGV2ZWxzCisgICAgICAgIGlmIChsZXZlbCArIG1Mb2RPZmZzZXQgIT0gMCAmJiBpc01hbmFnZWQo
KSAmJiBkaXJ0eSkKKyAgICAgICAgeworICAgICAgICAgICAgbVRleHR1cmUtPkFkZERpcnR5UmVj
dChOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzdXJmYWNlOworfQorCitS
ZW5kZXJUYXJnZXQgKlRleHR1cmVTdG9yYWdlOV8yRDo6Z2V0UmVuZGVyVGFyZ2V0KCkKK3sKKyAg
ICByZXR1cm4gbVJlbmRlclRhcmdldDsKK30KKwordm9pZCBUZXh0dXJlU3RvcmFnZTlfMkQ6Omdl
bmVyYXRlTWlwbWFwKGludCBsZXZlbCkKK3sKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqdXBwZXIg
PSBnZXRTdXJmYWNlTGV2ZWwobGV2ZWwgLSAxLCBmYWxzZSk7CisgICAgSURpcmVjdDNEU3VyZmFj
ZTkgKmxvd2VyID0gZ2V0U3VyZmFjZUxldmVsKGxldmVsLCB0cnVlKTsKKworICAgIGlmICh1cHBl
ciAhPSBOVUxMICYmIGxvd2VyICE9IE5VTEwpCisgICAgeworICAgICAgICBtUmVuZGVyZXItPmJv
eEZpbHRlcih1cHBlciwgbG93ZXIpOworICAgIH0KKworICAgIGlmICh1cHBlciAhPSBOVUxMKSB1
cHBlci0+UmVsZWFzZSgpOworICAgIGlmIChsb3dlciAhPSBOVUxMKSBsb3dlci0+UmVsZWFzZSgp
OworfQorCitJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKlRleHR1cmVTdG9yYWdlOV8yRDo6Z2V0QmFz
ZVRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZTsKK30KKwordm9pZCBUZXh0
dXJlU3RvcmFnZTlfMkQ6OmluaXRpYWxpemVSZW5kZXJUYXJnZXQoKQoreworICAgIEFTU0VSVCht
UmVuZGVyVGFyZ2V0ID09IE5VTEwpOworCisgICAgaWYgKG1UZXh0dXJlICE9IE5VTEwgJiYgaXNS
ZW5kZXJUYXJnZXQoKSkKKyAgICB7CisgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNl
ID0gZ2V0U3VyZmFjZUxldmVsKDAsIGZhbHNlKTsKKworICAgICAgICBtUmVuZGVyVGFyZ2V0ID0g
bmV3IFJlbmRlclRhcmdldDkobVJlbmRlcmVyLCBzdXJmYWNlKTsKKyAgICB9Cit9CisKK1RleHR1
cmVTdG9yYWdlOV9DdWJlOjpUZXh0dXJlU3RvcmFnZTlfQ3ViZShSZW5kZXJlciAqcmVuZGVyZXIs
IGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBib29sIGZv
cmNlUmVuZGVyYWJsZSwgaW50IHNpemUpCisgICAgOiBUZXh0dXJlU3RvcmFnZTkocmVuZGVyZXIs
IEdldFRleHR1cmVVc2FnZShSZW5kZXJlcjk6Om1ha2VSZW5kZXJlcjkocmVuZGVyZXIpLT5Db252
ZXJ0VGV4dHVyZUludGVybmFsRm9ybWF0KGludGVybmFsZm9ybWF0KSwgdXNhZ2UsIGZvcmNlUmVu
ZGVyYWJsZSkpCit7CisgICAgbVRleHR1cmUgPSBOVUxMOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgNjsgKytpKQorICAgIHsKKyAgICAgICAgbVJlbmRlclRhcmdldFtpXSA9IE5VTEw7CisgICAg
fQorCisgICAgLy8gaWYgdGhlIHNpemUgaXMgbm90IHBvc2l0aXZlIHRoaXMgc2hvdWxkIGJlIHRy
ZWF0ZWQgYXMgYW4gaW5jb21wbGV0ZSB0ZXh0dXJlCisgICAgLy8gd2UgaGFuZGxlIHRoYXQgaGVy
ZSBieSBza2lwcGluZyB0aGUgZDNkIHRleHR1cmUgY3JlYXRpb24KKyAgICBpZiAoc2l6ZSA+IDAp
CisgICAgeworICAgICAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdl
dERldmljZSgpOworICAgICAgICBpbnQgaGVpZ2h0ID0gc2l6ZTsKKyAgICAgICAgZ2w6Ok1ha2VW
YWxpZFNpemUoZmFsc2UsIGdsOjpJc0NvbXByZXNzZWQoaW50ZXJuYWxmb3JtYXQpLCAmc2l6ZSwg
JmhlaWdodCwgJm1Mb2RPZmZzZXQpOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+
Q3JlYXRlQ3ViZVRleHR1cmUoc2l6ZSwgbGV2ZWxzID8gbGV2ZWxzICsgbUxvZE9mZnNldCA6IDAs
IGdldFVzYWdlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtUmVuZGVyZXItPkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxm
b3JtYXQpLCBnZXRQb29sKCksICZtVGV4dHVyZSwgTlVMTCk7CisKKyAgICAgICAgaWYgKEZBSUxF
RChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVS
Ul9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAg
ICAgIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGluaXRpYWxpemVSZW5kZXJUYXJnZXQoKTsKK30KKworVGV4dHVyZVN0b3JhZ2U5X0N1YmU6On5U
ZXh0dXJlU3RvcmFnZTlfQ3ViZSgpCit7CisgICAgaWYgKG1UZXh0dXJlKQorICAgIHsKKyAgICAg
ICAgbVRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IDY7ICsraSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtUmVuZGVyVGFyZ2V0W2ldOworICAgIH0K
K30KKworVGV4dHVyZVN0b3JhZ2U5X0N1YmUgKlRleHR1cmVTdG9yYWdlOV9DdWJlOjptYWtlVGV4
dHVyZVN0b3JhZ2U5X0N1YmUoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UpCit7CisgICAgQVNTRVJU
KEhBU19EWU5BTUlDX1RZUEUoVGV4dHVyZVN0b3JhZ2U5X0N1YmUqLCBzdG9yYWdlKSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFRleHR1cmVTdG9yYWdlOV9DdWJlKj4oc3RvcmFnZSk7Cit9CisK
Ky8vIEluY3JlbWVudHMgcmVmY291bnQgb24gc3VyZmFjZS4KKy8vIGNhbGxlciBtdXN0IFJlbGVh
c2UoKSB0aGUgcmV0dXJuZWQgc3VyZmFjZQorSURpcmVjdDNEU3VyZmFjZTkgKlRleHR1cmVTdG9y
YWdlOV9DdWJlOjpnZXRDdWJlTWFwU3VyZmFjZShHTGVudW0gZmFjZVRhcmdldCwgaW50IGxldmVs
LCBib29sIGRpcnR5KQoreworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlID0gTlVMTDsK
KworICAgIGlmIChtVGV4dHVyZSkKKyAgICB7CisgICAgICAgIEQzRENVQkVNQVBfRkFDRVMgZmFj
ZSA9IGdsX2QzZDk6OkNvbnZlcnRDdWJlRmFjZShmYWNlVGFyZ2V0KTsKKyAgICAgICAgSFJFU1VM
VCByZXN1bHQgPSBtVGV4dHVyZS0+R2V0Q3ViZU1hcFN1cmZhY2UoZmFjZSwgbGV2ZWwgKyBtTG9k
T2Zmc2V0LCAmc3VyZmFjZSk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisK
KyAgICAgICAgLy8gV2l0aCBtYW5hZ2VkIHRleHR1cmVzIHRoZSBkcml2ZXIgbmVlZHMgdG8gYmUg
aW5mb3JtZWQgb2YgdXBkYXRlcyB0byB0aGUgbG93ZXIgbWlwbWFwIGxldmVscworICAgICAgICBp
ZiAobGV2ZWwgIT0gMCAmJiBpc01hbmFnZWQoKSAmJiBkaXJ0eSkKKyAgICAgICAgeworICAgICAg
ICAgICAgbVRleHR1cmUtPkFkZERpcnR5UmVjdChmYWNlLCBOVUxMKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiBzdXJmYWNlOworfQorCitSZW5kZXJUYXJnZXQgKlRleHR1cmVTdG9y
YWdlOV9DdWJlOjpnZXRSZW5kZXJUYXJnZXQoR0xlbnVtIGZhY2VUYXJnZXQpCit7CisgICAgcmV0
dXJuIG1SZW5kZXJUYXJnZXRbZ2w6OlRleHR1cmVDdWJlTWFwOjpmYWNlSW5kZXgoZmFjZVRhcmdl
dCldOworfQorCit2b2lkIFRleHR1cmVTdG9yYWdlOV9DdWJlOjpnZW5lcmF0ZU1pcG1hcChpbnQg
ZmFjZSwgaW50IGxldmVsKQoreworICAgIElEaXJlY3QzRFN1cmZhY2U5ICp1cHBlciA9IGdldEN1
YmVNYXBTdXJmYWNlKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGZhY2UsIGxldmVs
IC0gMSwgZmFsc2UpOworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpsb3dlciA9IGdldEN1YmVNYXBT
dXJmYWNlKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGZhY2UsIGxldmVsLCB0cnVl
KTsKKworICAgIGlmICh1cHBlciAhPSBOVUxMICYmIGxvd2VyICE9IE5VTEwpCisgICAgeworICAg
ICAgICBtUmVuZGVyZXItPmJveEZpbHRlcih1cHBlciwgbG93ZXIpOworICAgIH0KKworICAgIGlm
ICh1cHBlciAhPSBOVUxMKSB1cHBlci0+UmVsZWFzZSgpOworICAgIGlmIChsb3dlciAhPSBOVUxM
KSBsb3dlci0+UmVsZWFzZSgpOworfQorCitJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKlRleHR1cmVT
dG9yYWdlOV9DdWJlOjpnZXRCYXNlVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0
dXJlOworfQorCit2b2lkIFRleHR1cmVTdG9yYWdlOV9DdWJlOjppbml0aWFsaXplUmVuZGVyVGFy
Z2V0KCkKK3sKKyAgICBpZiAobVRleHR1cmUgIT0gTlVMTCAmJiBpc1JlbmRlclRhcmdldCgpKQor
ICAgIHsKKyAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UgPSBOVUxMOworCisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQobVJlbmRlclRhcmdldFtpXSA9PSBOVUxMKTsKKworICAgICAgICAgICAgc3VyZmFjZSA9
IGdldEN1YmVNYXBTdXJmYWNlKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGksIDAs
IGZhbHNlKTsKKworICAgICAgICAgICAgbVJlbmRlclRhcmdldFtpXSA9IG5ldyBSZW5kZXJUYXJn
ZXQ5KG1SZW5kZXJlciwgc3VyZmFjZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK30KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlOS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlOS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOSBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIFRleHR1cmVTdG9yYWdlOS5oOiBEZWZpbmVzIHRoZSBhYnN0
cmFjdCByeDo6VGV4dHVyZVN0b3JhZ2U5IGNsYXNzIGFuZCBpdHMgY29uY3JldGUgZGVyaXZlZAor
Ly8gY2xhc3NlcyBUZXh0dXJlU3RvcmFnZTlfMkQgYW5kIFRleHR1cmVTdG9yYWdlOV9DdWJlLCB3
aGljaCBhY3QgYXMgdGhlIGludGVyZmFjZSB0byB0aGUKKy8vIEQzRDkgdGV4dHVyZS4KKworI2lm
bmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfVEVYVFVSRVNUT1JBR0U5X0hfCisjZGVmaW5lIExJQkdM
RVNWMl9SRU5ERVJFUl9URVhUVVJFU1RPUkFHRTlfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9y
ZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5oIgorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCitu
YW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOTsKK2NsYXNzIFN3YXBDaGFpbjk7CitjbGFz
cyBSZW5kZXJUYXJnZXQ7CitjbGFzcyBSZW5kZXJUYXJnZXQ5OworY2xhc3MgQmxpdDsKKworY2xh
c3MgVGV4dHVyZVN0b3JhZ2U5IDogcHVibGljIFRleHR1cmVTdG9yYWdlCit7CisgIHB1YmxpYzoK
KyAgICBUZXh0dXJlU3RvcmFnZTkoUmVuZGVyZXIgKnJlbmRlcmVyLCBEV09SRCB1c2FnZSk7Cisg
ICAgdmlydHVhbCB+VGV4dHVyZVN0b3JhZ2U5KCk7CisKKyAgICBzdGF0aWMgVGV4dHVyZVN0b3Jh
Z2U5ICptYWtlVGV4dHVyZVN0b3JhZ2U5KFRleHR1cmVTdG9yYWdlICpzdG9yYWdlKTsKKworICAg
IHN0YXRpYyBEV09SRCBHZXRUZXh0dXJlVXNhZ2UoRDNERk9STUFUIGQzZGZtdCwgR0xlbnVtIGds
dXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlKTsKKyAgICBzdGF0aWMgYm9vbCBJc1RleHR1cmVG
b3JtYXRSZW5kZXJhYmxlKEQzREZPUk1BVCBmb3JtYXQpOworCisgICAgRDNEUE9PTCBnZXRQb29s
KCkgY29uc3Q7CisgICAgRFdPUkQgZ2V0VXNhZ2UoKSBjb25zdDsKKworICAgIHZpcnR1YWwgSURp
cmVjdDNEQmFzZVRleHR1cmU5ICpnZXRCYXNlVGV4dHVyZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KCkgeyByZXR1cm4gTlVMTDsgfQorICAg
IHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoR0xlbnVtIGZhY2VUYXJnZXQp
IHsgcmV0dXJuIE5VTEw7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVNaXBtYXAoaW50IGxl
dmVsKSB7fTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVNaXBtYXAoaW50IGZhY2UsIGludCBs
ZXZlbCkge307CisKKyAgICB2aXJ0dWFsIGludCBnZXRMb2RPZmZzZXQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNSZW5kZXJUYXJnZXQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNN
YW5hZ2VkKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgbGV2ZWxDb3VudCgpOworCisgIHByb3Rl
Y3RlZDoKKyAgICBpbnQgbUxvZE9mZnNldDsKKyAgICBSZW5kZXJlcjkgKm1SZW5kZXJlcjsKKwor
ICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUZXh0dXJlU3RvcmFnZTkp
OworCisgICAgY29uc3QgRFdPUkQgbUQzRFVzYWdlOworICAgIGNvbnN0IEQzRFBPT0wgbUQzRFBv
b2w7Cit9OworCitjbGFzcyBUZXh0dXJlU3RvcmFnZTlfMkQgOiBwdWJsaWMgVGV4dHVyZVN0b3Jh
Z2U5Cit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZTlfMkQoUmVuZGVyZXIgKnJlbmRl
cmVyLCBTd2FwQ2hhaW45ICpzd2FwY2hhaW4pOworICAgIFRleHR1cmVTdG9yYWdlOV8yRChSZW5k
ZXJlciAqcmVuZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVt
IHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQpOworICAgIHZpcnR1YWwgflRleHR1cmVTdG9yYWdlOV8yRCgpOworCisgICAgc3RhdGljIFRl
eHR1cmVTdG9yYWdlOV8yRCAqbWFrZVRleHR1cmVTdG9yYWdlOV8yRChUZXh0dXJlU3RvcmFnZSAq
c3RvcmFnZSk7CisKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0U3VyZmFjZUxldmVsKGludCBs
ZXZlbCwgYm9vbCBkaXJ0eSk7CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRh
cmdldCgpOworICAgIHZpcnR1YWwgSURpcmVjdDNEQmFzZVRleHR1cmU5ICpnZXRCYXNlVGV4dHVy
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcChpbnQgbGV2ZWwpOwor
CisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmVTdG9yYWdl
OV8yRCk7CisKKyAgICB2b2lkIGluaXRpYWxpemVSZW5kZXJUYXJnZXQoKTsKKworICAgIElEaXJl
Y3QzRFRleHR1cmU5ICptVGV4dHVyZTsKKyAgICBSZW5kZXJUYXJnZXQ5ICptUmVuZGVyVGFyZ2V0
OworfTsKKworY2xhc3MgVGV4dHVyZVN0b3JhZ2U5X0N1YmUgOiBwdWJsaWMgVGV4dHVyZVN0b3Jh
Z2U5Cit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZTlfQ3ViZShSZW5kZXJlciAqcmVu
ZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBi
b29sIGZvcmNlUmVuZGVyYWJsZSwgaW50IHNpemUpOworICAgIHZpcnR1YWwgflRleHR1cmVTdG9y
YWdlOV9DdWJlKCk7CisKKyAgICBzdGF0aWMgVGV4dHVyZVN0b3JhZ2U5X0N1YmUgKm1ha2VUZXh0
dXJlU3RvcmFnZTlfQ3ViZShUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSk7CisKKyAgICBJRGlyZWN0
M0RTdXJmYWNlOSAqZ2V0Q3ViZU1hcFN1cmZhY2UoR0xlbnVtIGZhY2VUYXJnZXQsIGludCBsZXZl
bCwgYm9vbCBkaXJ0eSk7CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdl
dChHTGVudW0gZmFjZVRhcmdldCk7CisgICAgdmlydHVhbCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkg
KmdldEJhc2VUZXh0dXJlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFw
KGludCBmYWNlLCBpbnQgbGV2ZWwpOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOKFRleHR1cmVTdG9yYWdlOV9DdWJlKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZVJl
bmRlclRhcmdldCgpOworCisgICAgSURpcmVjdDNEQ3ViZVRleHR1cmU5ICptVGV4dHVyZTsKKyAg
ICBSZW5kZXJUYXJnZXQ5ICptUmVuZGVyVGFyZ2V0WzZdOworfTsKKworfQorCisjZW5kaWYgLy8g
TElCR0xFU1YyX1JFTkRFUkVSX1RFWFRVUkVTVE9SQUdFOV9IXworCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlMTEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvVGV4dHVyZVN0b3JhZ2UxMS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlMTEuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3NiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gVGV4dHVyZVN0b3JhZ2UxMS5jcHA6IEltcGxlbWVudHMgdGhlIGFi
c3RyYWN0IHJ4OjpUZXh0dXJlU3RvcmFnZTExIGNsYXNzIGFuZCBpdHMgY29uY3JldGUgZGVyaXZl
ZAorLy8gY2xhc3NlcyBUZXh0dXJlU3RvcmFnZTExXzJEIGFuZCBUZXh0dXJlU3RvcmFnZTExX0N1
YmUsIHdoaWNoIGFjdCBhcyB0aGUgaW50ZXJmYWNlIHRvIHRoZSBEM0QxMSB0ZXh0dXJlLgorCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlMTEuaCIKKworI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlclRhcmdldDExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L1N3YXBDaGFpbjExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFf
dXRpbHMuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJs
aWJHTEVTdjIvbWFpbi5oIgorCituYW1lc3BhY2UgcngKK3sKKworVGV4dHVyZVN0b3JhZ2UxMTo6
VGV4dHVyZVN0b3JhZ2UxMShSZW5kZXJlciAqcmVuZGVyZXIsIFVJTlQgYmluZEZsYWdzKQorICAg
IDogbUJpbmRGbGFncyhiaW5kRmxhZ3MpLAorICAgICAgbUxvZE9mZnNldCgwKSwKKyAgICAgIG1N
aXBMZXZlbHMoMCksCisgICAgICBtVGV4dHVyZShOVUxMKSwKKyAgICAgIG1UZXh0dXJlRm9ybWF0
KERYR0lfRk9STUFUX1VOS05PV04pLAorICAgICAgbVNoYWRlclJlc291cmNlRm9ybWF0KERYR0lf
Rk9STUFUX1VOS05PV04pLAorICAgICAgbVJlbmRlclRhcmdldEZvcm1hdChEWEdJX0ZPUk1BVF9V
TktOT1dOKSwKKyAgICAgIG1EZXB0aFN0ZW5jaWxGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiks
CisgICAgICBtU1JWKE5VTEwpLAorICAgICAgbVRleHR1cmVXaWR0aCgwKSwKKyAgICAgIG1UZXh0
dXJlSGVpZ2h0KDApCit7CisgICAgbVJlbmRlcmVyID0gUmVuZGVyZXIxMTo6bWFrZVJlbmRlcmVy
MTEocmVuZGVyZXIpOworfQorCitUZXh0dXJlU3RvcmFnZTExOjp+VGV4dHVyZVN0b3JhZ2UxMSgp
Cit7Cit9CisKK1RleHR1cmVTdG9yYWdlMTEgKlRleHR1cmVTdG9yYWdlMTE6Om1ha2VUZXh0dXJl
U3RvcmFnZTExKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlKQoreworICAgIEFTU0VSVChIQVNfRFlO
QU1JQ19UWVBFKFRleHR1cmVTdG9yYWdlMTEqLCBzdG9yYWdlKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFRleHR1cmVTdG9yYWdlMTEqPihzdG9yYWdlKTsKK30KKworRFdPUkQgVGV4dHVyZVN0
b3JhZ2UxMTo6R2V0VGV4dHVyZUJpbmRGbGFncyhEWEdJX0ZPUk1BVCBmb3JtYXQsIEdMZW51bSBn
bHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSkKK3sKKyAgICBVSU5UIGJpbmRGbGFncyA9IEQz
RDExX0JJTkRfU0hBREVSX1JFU09VUkNFOworICAgIAorICAgIGlmIChkM2QxMTo6SXNEZXB0aFN0
ZW5jaWxGb3JtYXQoZm9ybWF0KSkKKyAgICB7CisgICAgICAgIGJpbmRGbGFncyB8PSBEM0QxMV9C
SU5EX0RFUFRIX1NURU5DSUw7CisgICAgfQorICAgIGVsc2UgaWYoZm9yY2VSZW5kZXJhYmxlIHx8
IChUZXh0dXJlU3RvcmFnZTExOjpJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKGZvcm1hdCkgJiYg
KGdsdXNhZ2UgPT0gR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRSkpKQorICAgIHsKKyAg
ICAgICAgYmluZEZsYWdzIHw9IEQzRDExX0JJTkRfUkVOREVSX1RBUkdFVDsKKyAgICB9CisgICAg
cmV0dXJuIGJpbmRGbGFnczsKK30KKworYm9vbCBUZXh0dXJlU3RvcmFnZTExOjpJc1RleHR1cmVG
b3JtYXRSZW5kZXJhYmxlKERYR0lfRk9STUFUIGZvcm1hdCkKK3sKKyAgICBzd2l0Y2goZm9ybWF0
KQorICAgIHsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk06CisgICAgICBj
YXNlIERYR0lfRk9STUFUX0E4X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJBMzJfRkxPQVQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVDoKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUOgorICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9COEc4UjhBOF9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVU5PUk06
CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IxNl9GTE9BVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FUOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNOgorICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk06IAorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzNfVU5PUk06CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK1VJTlQg
VGV4dHVyZVN0b3JhZ2UxMTo6Z2V0QmluZEZsYWdzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUJp
bmRGbGFnczsKK30KKworSUQzRDExVGV4dHVyZTJEICpUZXh0dXJlU3RvcmFnZTExOjpnZXRCYXNl
VGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlOworfQorCitpbnQgVGV4dHVy
ZVN0b3JhZ2UxMTo6Z2V0TG9kT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUxvZE9mZnNl
dDsKK30KKworYm9vbCBUZXh0dXJlU3RvcmFnZTExOjppc1JlbmRlclRhcmdldCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIChtQmluZEZsYWdzICYgKEQzRDExX0JJTkRfUkVOREVSX1RBUkdFVCB8IEQz
RDExX0JJTkRfREVQVEhfU1RFTkNJTCkpICE9IDA7Cit9CisgICAgCitib29sIFRleHR1cmVTdG9y
YWdlMTE6OmlzTWFuYWdlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbnQg
VGV4dHVyZVN0b3JhZ2UxMTo6bGV2ZWxDb3VudCgpCit7CisgICAgaW50IGxldmVscyA9IDA7Cisg
ICAgaWYgKGdldEJhc2VUZXh0dXJlKCkpCisgICAgeworICAgICAgICBsZXZlbHMgPSBtTWlwTGV2
ZWxzIC0gZ2V0TG9kT2Zmc2V0KCk7CisgICAgfQorICAgIHJldHVybiBsZXZlbHM7Cit9CisKK1VJ
TlQgVGV4dHVyZVN0b3JhZ2UxMTo6Z2V0U3VicmVzb3VyY2VJbmRleChpbnQgbGV2ZWwsIGludCBm
YWNlSW5kZXgpCit7CisgICAgVUlOVCBpbmRleCA9IDA7CisgICAgaWYgKGdldEJhc2VUZXh0dXJl
KCkpCisgICAgeworICAgICAgICBpbmRleCA9IEQzRDExQ2FsY1N1YnJlc291cmNlKGxldmVsLCBm
YWNlSW5kZXgsIG1NaXBMZXZlbHMpOworICAgIH0KKyAgICByZXR1cm4gaW5kZXg7Cit9CisKK2Jv
b2wgVGV4dHVyZVN0b3JhZ2UxMTo6dXBkYXRlU3VicmVzb3VyY2VMZXZlbChJRDNEMTFUZXh0dXJl
MkQgKnNyY1RleHR1cmUsIHVuc2lnbmVkIGludCBzb3VyY2VTdWJyZXNvdXJjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwsIGludCBmYWNl
LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQorewor
ICAgIGlmIChzcmNUZXh0dXJlKQorICAgIHsKKyAgICAgICAgLy8gUm91bmQgdXAgdGhlIHdpZHRo
IGFuZCBoZWlnaHQgdG8gdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgZGltZW5zaW9uIGFsaWdubWVu
dAorICAgICAgICB1bnNpZ25lZCBpbnQgZGltZW5zaW9uQWxpZ25tZW50ID0gZDNkMTE6OkdldFRl
eHR1cmVGb3JtYXREaW1lbnNpb25BbGlnbm1lbnQobVRleHR1cmVGb3JtYXQpOworICAgICAgICB3
aWR0aCA9IHdpZHRoICsgZGltZW5zaW9uQWxpZ25tZW50IC0gMSAtICh3aWR0aCAtIDEpICUgZGlt
ZW5zaW9uQWxpZ25tZW50OworICAgICAgICBoZWlnaHQgPSBoZWlnaHQgKyBkaW1lbnNpb25BbGln
bm1lbnQgLSAxIC0gKGhlaWdodCAtIDEpICUgZGltZW5zaW9uQWxpZ25tZW50OworCisgICAgICAg
IEQzRDExX0JPWCBzcmNCb3g7CisgICAgICAgIHNyY0JveC5sZWZ0ID0geG9mZnNldDsKKyAgICAg
ICAgc3JjQm94LnRvcCA9IHlvZmZzZXQ7CisgICAgICAgIHNyY0JveC5yaWdodCA9IHhvZmZzZXQg
KyB3aWR0aDsKKyAgICAgICAgc3JjQm94LmJvdHRvbSA9IHlvZmZzZXQgKyBoZWlnaHQ7CisgICAg
ICAgIHNyY0JveC5mcm9udCA9IDA7CisgICAgICAgIHNyY0JveC5iYWNrID0gMTsKKworICAgICAg
ICBJRDNEMTFEZXZpY2VDb250ZXh0ICpjb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250
ZXh0KCk7CisgICAgICAgIAorICAgICAgICBBU1NFUlQoZ2V0QmFzZVRleHR1cmUoKSk7CisgICAg
ICAgIGNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihnZXRCYXNlVGV4dHVyZSgpLCBnZXRT
dWJyZXNvdXJjZUluZGV4KGxldmVsICsgbUxvZE9mZnNldCwgZmFjZSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB4b2Zmc2V0LCB5b2Zmc2V0LCAwLCBzcmNUZXh0dXJl
LCBzb3VyY2VTdWJyZXNvdXJjZSwgJnNyY0JveCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBUZXh0dXJlU3RvcmFnZTExOjpnZW5l
cmF0ZU1pcG1hcExheWVyKFJlbmRlclRhcmdldDExICpzb3VyY2UsIFJlbmRlclRhcmdldDExICpk
ZXN0KQoreworICAgIGlmIChzb3VyY2UgJiYgZGVzdCkKKyAgICB7CisgICAgICAgIElEM0QxMVNo
YWRlclJlc291cmNlVmlldyAqc291cmNlU1JWID0gc291cmNlLT5nZXRTaGFkZXJSZXNvdXJjZVZp
ZXcoKTsKKyAgICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqZGVzdFJUViA9IGRlc3QtPmdl
dFJlbmRlclRhcmdldFZpZXcoKTsKKworICAgICAgICBpZiAoc291cmNlU1JWICYmIGRlc3RSVFYp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpSZWN0YW5nbGUgc291cmNlQXJlYTsKKyAgICAg
ICAgICAgIHNvdXJjZUFyZWEueCA9IDA7CisgICAgICAgICAgICBzb3VyY2VBcmVhLnkgPSAwOwor
ICAgICAgICAgICAgc291cmNlQXJlYS53aWR0aCA9IHNvdXJjZS0+Z2V0V2lkdGgoKTsKKyAgICAg
ICAgICAgIHNvdXJjZUFyZWEuaGVpZ2h0ID0gc291cmNlLT5nZXRIZWlnaHQoKTsKKworICAgICAg
ICAgICAgZ2w6OlJlY3RhbmdsZSBkZXN0QXJlYTsKKyAgICAgICAgICAgIGRlc3RBcmVhLnggPSAw
OworICAgICAgICAgICAgZGVzdEFyZWEueSA9IDA7CisgICAgICAgICAgICBkZXN0QXJlYS53aWR0
aCA9IGRlc3QtPmdldFdpZHRoKCk7CisgICAgICAgICAgICBkZXN0QXJlYS5oZWlnaHQgPSBkZXN0
LT5nZXRIZWlnaHQoKTsKKworICAgICAgICAgICAgbVJlbmRlcmVyLT5jb3B5VGV4dHVyZShzb3Vy
Y2VTUlYsIHNvdXJjZUFyZWEsIHNvdXJjZS0+Z2V0V2lkdGgoKSwgc291cmNlLT5nZXRIZWlnaHQo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJUViwgZGVzdEFyZWEs
IGRlc3QtPmdldFdpZHRoKCksIGRlc3QtPmdldEhlaWdodCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzb3Vy
Y2VTUlYpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNvdXJjZVNSVi0+UmVsZWFzZSgpOworICAg
ICAgICB9CisgICAgICAgIGlmIChkZXN0UlRWKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0
UlRWLT5SZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1RleHR1cmVTdG9yYWdlMTFf
MkQ6OlRleHR1cmVTdG9yYWdlMTFfMkQoUmVuZGVyZXIgKnJlbmRlcmVyLCBTd2FwQ2hhaW4xMSAq
c3dhcGNoYWluKQorICAgIDogVGV4dHVyZVN0b3JhZ2UxMShyZW5kZXJlciwgRDNEMTFfQklORF9S
RU5ERVJfVEFSR0VUIHwgRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0UpCit7CisgICAgbVRleHR1
cmUgPSBzd2FwY2hhaW4tPmdldE9mZnNjcmVlblRleHR1cmUoKTsKKyAgICBtU1JWID0gc3dhcGNo
YWluLT5nZXRSZW5kZXJUYXJnZXRTaGFkZXJSZXNvdXJjZSgpOworCisgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBp
KyspCisgICAgeworICAgICAgICBtUmVuZGVyVGFyZ2V0W2ldID0gTlVMTDsKKyAgICB9CisKKyAg
ICBEM0QxMV9URVhUVVJFMkRfREVTQyB0ZXhEZXNjOworICAgIG1UZXh0dXJlLT5HZXREZXNjKCZ0
ZXhEZXNjKTsKKyAgICBtTWlwTGV2ZWxzID0gdGV4RGVzYy5NaXBMZXZlbHM7CisgICAgbVRleHR1
cmVGb3JtYXQgPSB0ZXhEZXNjLkZvcm1hdDsKKyAgICBtVGV4dHVyZVdpZHRoID0gdGV4RGVzYy5X
aWR0aDsKKyAgICBtVGV4dHVyZUhlaWdodCA9IHRleERlc2MuSGVpZ2h0OworCisgICAgRDNEMTFf
U0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZEZXNjOworICAgIG1TUlYtPkdldERlc2MoJnNy
dkRlc2MpOworICAgIG1TaGFkZXJSZXNvdXJjZUZvcm1hdCA9IHNydkRlc2MuRm9ybWF0OworCisg
ICAgSUQzRDExUmVuZGVyVGFyZ2V0Vmlldyogb2Zmc2NyZWVuUlRWID0gc3dhcGNoYWluLT5nZXRS
ZW5kZXJUYXJnZXQoKTsKKyAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNj
OworICAgIG9mZnNjcmVlblJUVi0+R2V0RGVzYygmcnR2RGVzYyk7CisgICAgbVJlbmRlclRhcmdl
dEZvcm1hdCA9IHJ0dkRlc2MuRm9ybWF0OworICAgIG9mZnNjcmVlblJUVi0+UmVsZWFzZSgpOwor
CisgICAgbURlcHRoU3RlbmNpbEZvcm1hdCA9IERYR0lfRk9STUFUX1VOS05PV047Cit9CisKK1Rl
eHR1cmVTdG9yYWdlMTFfMkQ6OlRleHR1cmVTdG9yYWdlMTFfMkQoUmVuZGVyZXIgKnJlbmRlcmVy
LCBpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2FnZSwgYm9vbCBm
b3JjZVJlbmRlcmFibGUsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQorICAgIDogVGV4
dHVyZVN0b3JhZ2UxMShyZW5kZXJlciwgR2V0VGV4dHVyZUJpbmRGbGFncyhnbF9kM2QxMTo6Q29u
dmVydFRleHR1cmVGb3JtYXQoaW50ZXJuYWxmb3JtYXQpLCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxl
KSkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpJTVBMRU1FTlRBVElP
Tl9NQVhfVEVYVFVSRV9MRVZFTFM7IGkrKykKKyAgICB7CisgICAgICAgIG1SZW5kZXJUYXJnZXRb
aV0gPSBOVUxMOworICAgIH0KKworICAgIERYR0lfRk9STUFUIGNvbnZlcnRlZEZvcm1hdCA9IGds
X2QzZDExOjpDb252ZXJ0VGV4dHVyZUZvcm1hdChpbnRlcm5hbGZvcm1hdCk7CisgICAgaWYgKGQz
ZDExOjpJc0RlcHRoU3RlbmNpbEZvcm1hdChjb252ZXJ0ZWRGb3JtYXQpKQorICAgIHsKKyAgICAg
ICAgbVRleHR1cmVGb3JtYXQgPSBkM2QxMTo6R2V0RGVwdGhUZXh0dXJlRm9ybWF0KGNvbnZlcnRl
ZEZvcm1hdCk7CisgICAgICAgIG1TaGFkZXJSZXNvdXJjZUZvcm1hdCA9IGQzZDExOjpHZXREZXB0
aFNoYWRlclJlc291cmNlRm9ybWF0KGNvbnZlcnRlZEZvcm1hdCk7CisgICAgICAgIG1EZXB0aFN0
ZW5jaWxGb3JtYXQgPSBjb252ZXJ0ZWRGb3JtYXQ7CisgICAgICAgIG1SZW5kZXJUYXJnZXRGb3Jt
YXQgPSBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBtVGV4dHVyZUZvcm1hdCA9IGNvbnZlcnRlZEZvcm1hdDsKKyAgICAgICAgbVNoYWRlclJlc291
cmNlRm9ybWF0ID0gY29udmVydGVkRm9ybWF0OworICAgICAgICBtRGVwdGhTdGVuY2lsRm9ybWF0
ID0gRFhHSV9GT1JNQVRfVU5LTk9XTjsKKyAgICAgICAgbVJlbmRlclRhcmdldEZvcm1hdCA9IGNv
bnZlcnRlZEZvcm1hdDsKKyAgICB9CisKKyAgICAvLyBpZiB0aGUgd2lkdGggb3IgaGVpZ2h0IGlz
IG5vdCBwb3NpdGl2ZSB0aGlzIHNob3VsZCBiZSB0cmVhdGVkIGFzIGFuIGluY29tcGxldGUgdGV4
dHVyZQorICAgIC8vIHdlIGhhbmRsZSB0aGF0IGhlcmUgYnkgc2tpcHBpbmcgdGhlIGQzZCB0ZXh0
dXJlIGNyZWF0aW9uCisgICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKQorICAgIHsKKyAg
ICAgICAgLy8gYWRqdXN0IHNpemUgaWYgbmVlZGVkIGZvciBjb21wcmVzc2VkIHRleHR1cmVzCisg
ICAgICAgIGdsOjpNYWtlVmFsaWRTaXplKGZhbHNlLCBnbDo6SXNDb21wcmVzc2VkKGludGVybmFs
Zm9ybWF0KSwgJndpZHRoLCAmaGVpZ2h0LCAmbUxvZE9mZnNldCk7CisKKyAgICAgICAgSUQzRDEx
RGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgICAgIEQzRDEx
X1RFWFRVUkUyRF9ERVNDIGRlc2M7CisgICAgICAgIGRlc2MuV2lkdGggPSB3aWR0aDsgICAgICAv
LyBDb21wcmVzc2VkIHRleHR1cmUgc2l6ZSBjb25zdHJhaW50cz8KKyAgICAgICAgZGVzYy5IZWln
aHQgPSBoZWlnaHQ7CisgICAgICAgIGRlc2MuTWlwTGV2ZWxzID0gKGxldmVscyA+IDApID8gbGV2
ZWxzICsgbUxvZE9mZnNldCA6IDA7CisgICAgICAgIGRlc2MuQXJyYXlTaXplID0gMTsKKyAgICAg
ICAgZGVzYy5Gb3JtYXQgPSBtVGV4dHVyZUZvcm1hdDsKKyAgICAgICAgZGVzYy5TYW1wbGVEZXNj
LkNvdW50ID0gMTsKKyAgICAgICAgZGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAg
ICBkZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKKyAgICAgICAgZGVzYy5CaW5kRmxh
Z3MgPSBnZXRCaW5kRmxhZ3MoKTsKKyAgICAgICAgZGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7Cisg
ICAgICAgIGRlc2MuTWlzY0ZsYWdzID0gMDsKKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRl
dmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZkZXNjLCBOVUxMLCAmbVRleHR1cmUpOworCisgICAgICAg
IC8vIHRoaXMgY2FuIGhhcHBlbiBmcm9tIHdpbmRvd3MgVERSCisgICAgICAgIGlmIChkM2QxMTo6
aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgbVJlbmRl
cmVyLT5ub3RpZnlEZXZpY2VMb3N0KCk7CisgICAgICAgICAgICBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoRkFJTEVEKHJlc3VsdCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7Cisg
ICAgICAgICAgICBFUlIoIkNyZWF0aW5nIGltYWdlIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1UZXh0dXJlLT5HZXREZXNjKCZkZXNjKTsKKyAgICAgICAgICAg
IG1NaXBMZXZlbHMgPSBkZXNjLk1pcExldmVsczsKKyAgICAgICAgICAgIG1UZXh0dXJlV2lkdGgg
PSBkZXNjLldpZHRoOworICAgICAgICAgICAgbVRleHR1cmVIZWlnaHQgPSBkZXNjLkhlaWdodDsK
KyAgICAgICAgfQorICAgIH0KK30KKworVGV4dHVyZVN0b3JhZ2UxMV8yRDo6flRleHR1cmVTdG9y
YWdlMTFfMkQoKQoreworICAgIGlmIChtVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1UZXh0dXJl
LT5SZWxlYXNlKCk7CisgICAgICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAo
bVNSVikKKyAgICB7CisgICAgICAgIG1TUlYtPlJlbGVhc2UoKTsKKyAgICAgICAgbVNSViA9IE5V
TEw7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBnbDo6SU1QTEVN
RU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBpKyspCisgICAgeworICAgICAgICBkZWxldGUg
bVJlbmRlclRhcmdldFtpXTsKKyAgICAgICAgbVJlbmRlclRhcmdldFtpXSA9IE5VTEw7CisgICAg
fQorfQorCitUZXh0dXJlU3RvcmFnZTExXzJEICpUZXh0dXJlU3RvcmFnZTExXzJEOjptYWtlVGV4
dHVyZVN0b3JhZ2UxMV8yRChUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSkKK3sKKyAgICBBU1NFUlQo
SEFTX0RZTkFNSUNfVFlQRShUZXh0dXJlU3RvcmFnZTExXzJEKiwgc3RvcmFnZSkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUZXh0dXJlU3RvcmFnZTExXzJEKj4oc3RvcmFnZSk7Cit9CisKK1Jl
bmRlclRhcmdldCAqVGV4dHVyZVN0b3JhZ2UxMV8yRDo6Z2V0UmVuZGVyVGFyZ2V0KGludCBsZXZl
bCkKK3sKKyAgICBpZiAobGV2ZWwgPj0gMCAmJiBsZXZlbCA8IHN0YXRpY19jYXN0PGludD4obU1p
cExldmVscykpCisgICAgeworICAgICAgICBpZiAoIW1SZW5kZXJUYXJnZXRbbGV2ZWxdKQorICAg
ICAgICB7CisgICAgICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0
RGV2aWNlKCk7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdDsKKworICAgICAgICAgICAgRDNE
MTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZEZXNjOworICAgICAgICAgICAgc3J2RGVz
Yy5Gb3JtYXQgPSBtU2hhZGVyUmVzb3VyY2VGb3JtYXQ7CisgICAgICAgICAgICBzcnZEZXNjLlZp
ZXdEaW1lbnNpb24gPSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyRDsKKyAgICAgICAgICAg
IHNydkRlc2MuVGV4dHVyZTJELk1vc3REZXRhaWxlZE1pcCA9IGxldmVsOworICAgICAgICAgICAg
c3J2RGVzYy5UZXh0dXJlMkQuTWlwTGV2ZWxzID0gMTsKKworICAgICAgICAgICAgSUQzRDExU2hh
ZGVyUmVzb3VyY2VWaWV3ICpzcnY7CisgICAgICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0
ZVNoYWRlclJlc291cmNlVmlldyhtVGV4dHVyZSwgJnNydkRlc2MsICZzcnYpOworCisgICAgICAg
ICAgICBpZiAocmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBzdGF0aWNfY2FzdDxS
ZW5kZXJUYXJnZXQqPihOVUxMKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQo
U1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgICAgICAgICBpZiAobVJlbmRlclRhcmdldEZvcm1h
dCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEQzRDExX1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7CisgICAgICAgICAgICAgICAg
cnR2RGVzYy5Gb3JtYXQgPSBtUmVuZGVyVGFyZ2V0Rm9ybWF0OworICAgICAgICAgICAgICAgIHJ0
dkRlc2MuVmlld0RpbWVuc2lvbiA9IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEOworICAg
ICAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJELk1pcFNsaWNlID0gbGV2ZWw7CisKKyAgICAg
ICAgICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHY7CisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJnZXRWaWV3KG1UZXh0dXJlLCAmcnR2RGVz
YywgJnJ0dik7CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzcnYtPlJlbGVhc2UoKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBz
dGF0aWNfY2FzdDxSZW5kZXJUYXJnZXQqPihOVUxMKSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgICAgICAg
ICAvLyBSZW5kZXJUYXJnZXQxMSBleHBlY3RzIHRvIGJlIHRoZSBvd25lciBvZiB0aGUgcmVzb3Vy
Y2VzIGl0IGlzIGdpdmVuIGJ1dCBUZXh0dXJlU3RvcmFnZTExCisgICAgICAgICAgICAgICAgLy8g
YWxzbyBuZWVkcyB0byBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlLgorICAgICAgICAg
ICAgICAgIG1UZXh0dXJlLT5BZGRSZWYoKTsKKworICAgICAgICAgICAgICAgIG1SZW5kZXJUYXJn
ZXRbbGV2ZWxdID0gbmV3IFJlbmRlclRhcmdldDExKG1SZW5kZXJlciwgcnR2LCBtVGV4dHVyZSwg
c3J2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWF4KG1UZXh0dXJlV2lkdGggPj4gbGV2ZWwsIDFVKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1heCht
VGV4dHVyZUhlaWdodCA+PiBsZXZlbCwgMVUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UgaWYgKG1EZXB0aFN0ZW5jaWxGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBEM0QxMV9ERVBUSF9TVEVOQ0lMX1ZJRVdfREVT
QyBkc3ZEZXNjOworICAgICAgICAgICAgICAgIGRzdkRlc2MuRm9ybWF0ID0gbURlcHRoU3RlbmNp
bEZvcm1hdDsKKyAgICAgICAgICAgICAgICBkc3ZEZXNjLlZpZXdEaW1lbnNpb24gPSBEM0QxMV9E
U1ZfRElNRU5TSU9OX1RFWFRVUkUyRDsKKyAgICAgICAgICAgICAgICBkc3ZEZXNjLlRleHR1cmUy
RC5NaXBTbGljZSA9IGxldmVsOworICAgICAgICAgICAgICAgIGRzdkRlc2MuRmxhZ3MgPSAwOwor
CisgICAgICAgICAgICAgICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZHN2OworICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlRGVwdGhTdGVuY2lsVmlldyhtVGV4dHVyZSwg
JmRzdkRlc2MsICZkc3YpOworCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFX09VVE9G
TUVNT1JZKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3J2LT5SZWxl
YXNlKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSwgc3RhdGljX2Nhc3Q8UmVuZGVyVGFyZ2V0Kj4oTlVMTCkpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgICAg
ICAgICAgICAgLy8gUmVuZGVyVGFyZ2V0MTEgZXhwZWN0cyB0byBiZSB0aGUgb3duZXIgb2YgdGhl
IHJlc291cmNlcyBpdCBpcyBnaXZlbiBidXQgVGV4dHVyZVN0b3JhZ2UxMQorICAgICAgICAgICAg
ICAgIC8vIGFsc28gbmVlZHMgdG8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgdGV4dHVyZS4KKyAg
ICAgICAgICAgICAgICBtVGV4dHVyZS0+QWRkUmVmKCk7CisKKyAgICAgICAgICAgICAgICBtUmVu
ZGVyVGFyZ2V0W2xldmVsXSA9IG5ldyBSZW5kZXJUYXJnZXQxMShtUmVuZGVyZXIsIGRzdiwgbVRl
eHR1cmUsIHNydiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6Om1heChtVGV4dHVyZVdpZHRoID4+IGxldmVsLCAxVSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjptYXgobVRleHR1cmVIZWlnaHQgPj4gbGV2ZWwsIDFVKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBtUmVuZGVyVGFy
Z2V0W2xldmVsXTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7
CisgICAgfQorfQorCitJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKlRleHR1cmVTdG9yYWdlMTFf
MkQ6OmdldFNSVigpCit7CisgICAgaWYgKCFtU1JWKQorICAgIHsKKyAgICAgICAgSUQzRDExRGV2
aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgICAgIEQzRDExX1NI
QURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc3J2RGVzYzsKKyAgICAgICAgc3J2RGVzYy5Gb3JtYXQg
PSBtU2hhZGVyUmVzb3VyY2VGb3JtYXQ7CisgICAgICAgIHNydkRlc2MuVmlld0RpbWVuc2lvbiA9
IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJEOworICAgICAgICBzcnZEZXNjLlRleHR1cmUy
RC5NaXBMZXZlbHMgPSAobU1pcExldmVscyA9PSAwID8gLTEgOiBtTWlwTGV2ZWxzKTsKKyAgICAg
ICAgc3J2RGVzYy5UZXh0dXJlMkQuTW9zdERldGFpbGVkTWlwID0gMDsKKworICAgICAgICBIUkVT
VUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KG1UZXh0dXJlLCAm
c3J2RGVzYywgJm1TUlYpOworCisgICAgICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
LCBzdGF0aWNfY2FzdDxJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcqPihOVUxMKSk7CisgICAgICAg
IH0KKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICB9CisKKyAgICByZXR1
cm4gbVNSVjsKK30KKwordm9pZCBUZXh0dXJlU3RvcmFnZTExXzJEOjpnZW5lcmF0ZU1pcG1hcChp
bnQgbGV2ZWwpCit7CisgICAgUmVuZGVyVGFyZ2V0MTEgKnNvdXJjZSA9IFJlbmRlclRhcmdldDEx
OjptYWtlUmVuZGVyVGFyZ2V0MTEoZ2V0UmVuZGVyVGFyZ2V0KGxldmVsIC0gMSkpOworICAgIFJl
bmRlclRhcmdldDExICpkZXN0ID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShn
ZXRSZW5kZXJUYXJnZXQobGV2ZWwpKTsKKworICAgIGdlbmVyYXRlTWlwbWFwTGF5ZXIoc291cmNl
LCBkZXN0KTsKK30KKworVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpUZXh0dXJlU3RvcmFnZTExX0N1
YmUoUmVuZGVyZXIgKnJlbmRlcmVyLCBpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMZW51bSB1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIGludCBzaXplKQorICAgIDogVGV4
dHVyZVN0b3JhZ2UxMShyZW5kZXJlciwgR2V0VGV4dHVyZUJpbmRGbGFncyhnbF9kM2QxMTo6Q29u
dmVydFRleHR1cmVGb3JtYXQoaW50ZXJuYWxmb3JtYXQpLCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxl
KSkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IDY7IGkrKykKKyAgICB7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgZ2w6OklNUExFTUVOVEFUSU9OX01B
WF9URVhUVVJFX0xFVkVMUzsgaisrKQorICAgICAgICB7CisgICAgICAgICAgICBtUmVuZGVyVGFy
Z2V0W2ldW2pdID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIERYR0lfRk9STUFUIGNv
bnZlcnRlZEZvcm1hdCA9IGdsX2QzZDExOjpDb252ZXJ0VGV4dHVyZUZvcm1hdChpbnRlcm5hbGZv
cm1hdCk7CisgICAgaWYgKGQzZDExOjpJc0RlcHRoU3RlbmNpbEZvcm1hdChjb252ZXJ0ZWRGb3Jt
YXQpKQorICAgIHsKKyAgICAgICAgbVRleHR1cmVGb3JtYXQgPSBkM2QxMTo6R2V0RGVwdGhUZXh0
dXJlRm9ybWF0KGNvbnZlcnRlZEZvcm1hdCk7CisgICAgICAgIG1TaGFkZXJSZXNvdXJjZUZvcm1h
dCA9IGQzZDExOjpHZXREZXB0aFNoYWRlclJlc291cmNlRm9ybWF0KGNvbnZlcnRlZEZvcm1hdCk7
CisgICAgICAgIG1EZXB0aFN0ZW5jaWxGb3JtYXQgPSBjb252ZXJ0ZWRGb3JtYXQ7CisgICAgICAg
IG1SZW5kZXJUYXJnZXRGb3JtYXQgPSBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICBtVGV4dHVyZUZvcm1hdCA9IGNvbnZlcnRlZEZvcm1hdDsKKyAg
ICAgICAgbVNoYWRlclJlc291cmNlRm9ybWF0ID0gY29udmVydGVkRm9ybWF0OworICAgICAgICBt
RGVwdGhTdGVuY2lsRm9ybWF0ID0gRFhHSV9GT1JNQVRfVU5LTk9XTjsKKyAgICAgICAgbVJlbmRl
clRhcmdldEZvcm1hdCA9IGNvbnZlcnRlZEZvcm1hdDsKKyAgICB9CisKKyAgICAvLyBpZiB0aGUg
c2l6ZSBpcyBub3QgcG9zaXRpdmUgdGhpcyBzaG91bGQgYmUgdHJlYXRlZCBhcyBhbiBpbmNvbXBs
ZXRlIHRleHR1cmUKKyAgICAvLyB3ZSBoYW5kbGUgdGhhdCBoZXJlIGJ5IHNraXBwaW5nIHRoZSBk
M2QgdGV4dHVyZSBjcmVhdGlvbgorICAgIGlmIChzaXplID4gMCkKKyAgICB7CisgICAgICAgIC8v
IGFkanVzdCBzaXplIGlmIG5lZWRlZCBmb3IgY29tcHJlc3NlZCB0ZXh0dXJlcworICAgICAgICBp
bnQgaGVpZ2h0ID0gc2l6ZTsKKyAgICAgICAgZ2w6Ok1ha2VWYWxpZFNpemUoZmFsc2UsIGdsOjpJ
c0NvbXByZXNzZWQoaW50ZXJuYWxmb3JtYXQpLCAmc2l6ZSwgJmhlaWdodCwgJm1Mb2RPZmZzZXQp
OworCisgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2Uo
KTsKKworICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyBkZXNjOworICAgICAgICBkZXNjLldp
ZHRoID0gc2l6ZTsKKyAgICAgICAgZGVzYy5IZWlnaHQgPSBzaXplOworICAgICAgICBkZXNjLk1p
cExldmVscyA9IChsZXZlbHMgPiAwKSA/IGxldmVscyArIG1Mb2RPZmZzZXQgOiAwOworICAgICAg
ICBkZXNjLkFycmF5U2l6ZSA9IDY7CisgICAgICAgIGRlc2MuRm9ybWF0ID0gbVRleHR1cmVGb3Jt
YXQ7CisgICAgICAgIGRlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7CisgICAgICAgIGRlc2MuU2Ft
cGxlRGVzYy5RdWFsaXR5ID0gMDsKKyAgICAgICAgZGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RF
RkFVTFQ7CisgICAgICAgIGRlc2MuQmluZEZsYWdzID0gZ2V0QmluZEZsYWdzKCk7CisgICAgICAg
IGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSAwOworICAgICAgICBkZXNjLk1pc2NGbGFncyA9IEQzRDEx
X1JFU09VUkNFX01JU0NfVEVYVFVSRUNVQkU7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBk
ZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmZGVzYywgTlVMTCwgJm1UZXh0dXJlKTsKKworICAgICAg
ICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1
bHQgPT0gRV9PVVRPRk1FTU9SWSk7CisgICAgICAgICAgICBFUlIoIkNyZWF0aW5nIGltYWdlIGZh
aWxlZC4iKTsKKyAgICAgICAgICAgIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1UZXh0dXJlLT5HZXRE
ZXNjKCZkZXNjKTsKKyAgICAgICAgICAgIG1NaXBMZXZlbHMgPSBkZXNjLk1pcExldmVsczsKKyAg
ICAgICAgICAgIG1UZXh0dXJlV2lkdGggPSBkZXNjLldpZHRoOworICAgICAgICAgICAgbVRleHR1
cmVIZWlnaHQgPSBkZXNjLkhlaWdodDsKKyAgICAgICAgfQorICAgIH0KK30KKworVGV4dHVyZVN0
b3JhZ2UxMV9DdWJlOjp+VGV4dHVyZVN0b3JhZ2UxMV9DdWJlKCkKK3sKKyAgICBpZiAobVRleHR1
cmUpCisgICAgeworICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOworICAgICAgICBtVGV4dHVy
ZSA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1TUlYpCisgICAgeworICAgICAgICBtU1JWLT5S
ZWxlYXNlKCk7CisgICAgICAgIG1TUlYgPSBOVUxMOworICAgIH0KKworICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgNjsgaSsrKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaiA9IDA7IGogPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBqKysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSBtUmVuZGVyVGFyZ2V0W2ldW2pdOworICAg
ICAgICAgICAgbVJlbmRlclRhcmdldFtpXVtqXSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK1RleHR1cmVTdG9yYWdlMTFfQ3ViZSAqVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjptYWtlVGV4
dHVyZVN0b3JhZ2UxMV9DdWJlKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlKQoreworICAgIEFTU0VS
VChIQVNfRFlOQU1JQ19UWVBFKFRleHR1cmVTdG9yYWdlMTFfQ3ViZSosIHN0b3JhZ2UpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dHVyZVN0b3JhZ2UxMV9DdWJlKj4oc3RvcmFnZSk7Cit9
CisKK1JlbmRlclRhcmdldCAqVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpnZXRSZW5kZXJUYXJnZXQo
R0xlbnVtIGZhY2VUYXJnZXQsIGludCBsZXZlbCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgZmFjZUlk
eCA9IGdsOjpUZXh0dXJlQ3ViZU1hcDo6ZmFjZUluZGV4KGZhY2VUYXJnZXQpOworICAgIGlmIChs
ZXZlbCA+PSAwICYmIGxldmVsIDwgc3RhdGljX2Nhc3Q8aW50PihtTWlwTGV2ZWxzKSkKKyAgICB7
CisgICAgICAgIGlmICghbVJlbmRlclRhcmdldFtmYWNlSWR4XVtsZXZlbF0pCisgICAgICAgIHsK
KyAgICAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2Uo
KTsKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0OworCisgICAgICAgICAgICBEM0QxMV9TSEFE
RVJfUkVTT1VSQ0VfVklFV19ERVNDIHNydkRlc2M7CisgICAgICAgICAgICBzcnZEZXNjLkZvcm1h
dCA9IG1TaGFkZXJSZXNvdXJjZUZvcm1hdDsKKyAgICAgICAgICAgIHNydkRlc2MuVmlld0RpbWVu
c2lvbiA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRUNVQkU7CisgICAgICAgICAgICBzcnZE
ZXNjLlRleHR1cmUyREFycmF5Lk1vc3REZXRhaWxlZE1pcCA9IGxldmVsOworICAgICAgICAgICAg
c3J2RGVzYy5UZXh0dXJlMkRBcnJheS5NaXBMZXZlbHMgPSAxOworICAgICAgICAgICAgc3J2RGVz
Yy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSBmYWNlSWR4OworICAgICAgICAgICAg
c3J2RGVzYy5UZXh0dXJlMkRBcnJheS5BcnJheVNpemUgPSAxOworCisgICAgICAgICAgICBJRDNE
MTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydjsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRldmljZS0+
Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KG1UZXh0dXJlLCAmc3J2RGVzYywgJnNydik7CisKKyAg
ICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIHN0YXRpY19j
YXN0PFJlbmRlclRhcmdldCo+KE5VTEwpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFT
U0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgICAgIGlmIChtUmVuZGVyVGFyZ2V0
Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKKyAgICAgICAgICAg
ICAgICBydHZEZXNjLkZvcm1hdCA9IG1SZW5kZXJUYXJnZXRGb3JtYXQ7CisgICAgICAgICAgICAg
ICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRB
UlJBWTsKKyAgICAgICAgICAgICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlID0g
bGV2ZWw7CisgICAgICAgICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5
U2xpY2UgPSBmYWNlSWR4OworICAgICAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJEQXJyYXku
QXJyYXlTaXplID0gMTsKKworICAgICAgICAgICAgICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcg
KnJ0djsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdl
dFZpZXcobVRleHR1cmUsICZydHZEZXNjLCAmcnR2KTsKKworICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHNydi0+UmVsZWFzZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlksIHN0YXRpY19jYXN0PFJlbmRlclRhcmdldCo+KE5VTEwpKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1
bHQpKTsKKworICAgICAgICAgICAgICAgIC8vIFJlbmRlclRhcmdldDExIGV4cGVjdHMgdG8gYmUg
dGhlIG93bmVyIG9mIHRoZSByZXNvdXJjZXMgaXQgaXMgZ2l2ZW4gYnV0IFRleHR1cmVTdG9yYWdl
MTEKKyAgICAgICAgICAgICAgICAvLyBhbHNvIG5lZWRzIHRvIGtlZXAgYSByZWZlcmVuY2UgdG8g
dGhlIHRleHR1cmUuCisgICAgICAgICAgICAgICAgbVRleHR1cmUtPkFkZFJlZigpOworCisgICAg
ICAgICAgICAgICAgbVJlbmRlclRhcmdldFtmYWNlSWR4XVtsZXZlbF0gPSBuZXcgUmVuZGVyVGFy
Z2V0MTEobVJlbmRlcmVyLCBydHYsIG1UZXh0dXJlLCBzcnYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXgo
bVRleHR1cmVXaWR0aCA+PiBsZXZlbCwgMVUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KG1UZXh0dXJl
SGVpZ2h0ID4+IGxldmVsLCAxVSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBp
ZiAobURlcHRoU3RlbmNpbEZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEQzRDExX0RFUFRIX1NURU5DSUxfVklFV19ERVNDIGRzdkRl
c2M7CisgICAgICAgICAgICAgICAgZHN2RGVzYy5Gb3JtYXQgPSBtUmVuZGVyVGFyZ2V0Rm9ybWF0
OworICAgICAgICAgICAgICAgIGRzdkRlc2MuVmlld0RpbWVuc2lvbiA9IEQzRDExX0RTVl9ESU1F
TlNJT05fVEVYVFVSRTJEQVJSQVk7CisgICAgICAgICAgICAgICAgZHN2RGVzYy5UZXh0dXJlMkRB
cnJheS5NaXBTbGljZSA9IGxldmVsOworICAgICAgICAgICAgICAgIGRzdkRlc2MuVGV4dHVyZTJE
QXJyYXkuRmlyc3RBcnJheVNsaWNlID0gZmFjZUlkeDsKKyAgICAgICAgICAgICAgICBkc3ZEZXNj
LlRleHR1cmUyREFycmF5LkFycmF5U2l6ZSA9IDE7CisKKyAgICAgICAgICAgICAgICBJRDNEMTFE
ZXB0aFN0ZW5jaWxWaWV3ICpkc3Y7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5D
cmVhdGVEZXB0aFN0ZW5jaWxWaWV3KG1UZXh0dXJlLCAmZHN2RGVzYywgJmRzdik7CisKKyAgICAg
ICAgICAgICAgICBpZiAocmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzcnYtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBzdGF0aWNfY2FzdDxSZW5kZXJU
YXJnZXQqPihOVUxMKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEFTU0VS
VChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgICAgICAgICAvLyBSZW5kZXJUYXJnZXQx
MSBleHBlY3RzIHRvIGJlIHRoZSBvd25lciBvZiB0aGUgcmVzb3VyY2VzIGl0IGlzIGdpdmVuIGJ1
dCBUZXh0dXJlU3RvcmFnZTExCisgICAgICAgICAgICAgICAgLy8gYWxzbyBuZWVkcyB0byBrZWVw
IGEgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlLgorICAgICAgICAgICAgICAgIG1UZXh0dXJlLT5B
ZGRSZWYoKTsKKworICAgICAgICAgICAgICAgIG1SZW5kZXJUYXJnZXRbZmFjZUlkeF1bbGV2ZWxd
ID0gbmV3IFJlbmRlclRhcmdldDExKG1SZW5kZXJlciwgZHN2LCBtVGV4dHVyZSwgc3J2LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWF4KG1UZXh0dXJlV2lkdGggPj4gbGV2ZWwsIDFVKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Om1heChtVGV4dHVyZUhlaWdodCA+PiBsZXZlbCwgMVUpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1SZW5kZXJU
YXJnZXRbZmFjZUlkeF1bbGV2ZWxdOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK0lEM0QxMVNoYWRlclJlc291cmNlVmlldyAqVGV4dHVy
ZVN0b3JhZ2UxMV9DdWJlOjpnZXRTUlYoKQoreworICAgIGlmICghbVNSVikKKyAgICB7CisgICAg
ICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAg
ICAgICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHNydkRlc2M7CisgICAgICAgIHNy
dkRlc2MuRm9ybWF0ID0gbVNoYWRlclJlc291cmNlRm9ybWF0OworICAgICAgICBzcnZEZXNjLlZp
ZXdEaW1lbnNpb24gPSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkVDVUJFOworICAgICAgICBz
cnZEZXNjLlRleHR1cmVDdWJlLk1pcExldmVscyA9IChtTWlwTGV2ZWxzID09IDAgPyAtMSA6IG1N
aXBMZXZlbHMpOworICAgICAgICBzcnZEZXNjLlRleHR1cmVDdWJlLk1vc3REZXRhaWxlZE1pcCA9
IDA7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVNoYWRlclJlc291
cmNlVmlldyhtVGV4dHVyZSwgJnNydkRlc2MsICZtU1JWKTsKKworICAgICAgICBpZiAocmVzdWx0
ID09IEVfT1VUT0ZNRU1PUlkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSwgc3RhdGljX2Nhc3Q8SUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3
Kj4oTlVMTCkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7
CisgICAgfQorCisgICAgcmV0dXJuIG1TUlY7Cit9CisKK3ZvaWQgVGV4dHVyZVN0b3JhZ2UxMV9D
dWJlOjpnZW5lcmF0ZU1pcG1hcChpbnQgZmFjZSwgaW50IGxldmVsKQoreworICAgIFJlbmRlclRh
cmdldDExICpzb3VyY2UgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKGdldFJl
bmRlclRhcmdldChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmYWNlLCBsZXZlbCAt
IDEpKTsKKyAgICBSZW5kZXJUYXJnZXQxMSAqZGVzdCA9IFJlbmRlclRhcmdldDExOjptYWtlUmVu
ZGVyVGFyZ2V0MTEoZ2V0UmVuZGVyVGFyZ2V0KEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVf
WCArIGZhY2UsIGxldmVsKSk7CisKKyAgICBnZW5lcmF0ZU1pcG1hcExheWVyKHNvdXJjZSwgZGVz
dCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UxMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UxMS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9UZXh0dXJlU3RvcmFnZTExLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIwIEBACisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gVGV4dHVyZVN0b3JhZ2UxMS5oOiBEZWZpbmVzIHRoZSBhYnN0cmFjdCBy
eDo6VGV4dHVyZVN0b3JhZ2UxMSBjbGFzcyBhbmQgaXRzIGNvbmNyZXRlIGRlcml2ZWQKKy8vIGNs
YXNzZXMgVGV4dHVyZVN0b3JhZ2UxMV8yRCBhbmQgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlLCB3aGlj
aCBhY3QgYXMgdGhlIGludGVyZmFjZSB0byB0aGUgRDNEMTEgdGV4dHVyZS4KKworI2lmbmRlZiBM
SUJHTEVTVjJfUkVOREVSRVJfVEVYVFVSRVNUT1JBR0UxMV9IXworI2RlZmluZSBMSUJHTEVTVjJf
UkVOREVSRVJfVEVYVFVSRVNUT1JBR0UxMV9IXworCisjaW5jbHVkZSAibGliR0xFU3YyL1RleHR1
cmUuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UuaCIKKwor
bmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJUYXJnZXQ7CitjbGFzcyBSZW5kZXJUYXJnZXQx
MTsKK2NsYXNzIFJlbmRlcmVyOworY2xhc3MgUmVuZGVyZXIxMTsKK2NsYXNzIFN3YXBDaGFpbjEx
OworCitjbGFzcyBUZXh0dXJlU3RvcmFnZTExIDogcHVibGljIFRleHR1cmVTdG9yYWdlCit7Cisg
IHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZTExKFJlbmRlcmVyICpyZW5kZXJlciwgVUlOVCBi
aW5kRmxhZ3MpOworICAgIHZpcnR1YWwgflRleHR1cmVTdG9yYWdlMTEoKTsKKworICAgIHN0YXRp
YyBUZXh0dXJlU3RvcmFnZTExICptYWtlVGV4dHVyZVN0b3JhZ2UxMShUZXh0dXJlU3RvcmFnZSAq
c3RvcmFnZSk7CisKKyAgICBzdGF0aWMgRFdPUkQgR2V0VGV4dHVyZUJpbmRGbGFncyhEWEdJX0ZP
Uk1BVCBkM2RmbXQsIEdMZW51bSBnbHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSk7CisgICAg
c3RhdGljIGJvb2wgSXNUZXh0dXJlRm9ybWF0UmVuZGVyYWJsZShEWEdJX0ZPUk1BVCBmb3JtYXQp
OworCisgICAgVUlOVCBnZXRCaW5kRmxhZ3MoKSBjb25zdDsKKworICAgIHZpcnR1YWwgSUQzRDEx
VGV4dHVyZTJEICpnZXRCYXNlVGV4dHVyZSgpIGNvbnN0OworICAgIHZpcnR1YWwgSUQzRDExU2hh
ZGVyUmVzb3VyY2VWaWV3ICpnZXRTUlYoKSA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQg
KmdldFJlbmRlclRhcmdldCgpIHsgcmV0dXJuIGdldFJlbmRlclRhcmdldCgwKTsgfQorICAgIHZp
cnR1YWwgUmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoaW50IGxldmVsKSB7IHJldHVybiBO
VUxMOyB9CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChHTGVudW0g
ZmFjZVRhcmdldCkgeyByZXR1cm4gZ2V0UmVuZGVyVGFyZ2V0KGZhY2VUYXJnZXQsIDApOyB9Cisg
ICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChHTGVudW0gZmFjZVRhcmdl
dCwgaW50IGxldmVsKSB7IHJldHVybiBOVUxMOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJh
dGVNaXBtYXAoaW50IGxldmVsKSB7fTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVNaXBtYXAo
aW50IGZhY2UsIGludCBsZXZlbCkge307CisKKyAgICB2aXJ0dWFsIGludCBnZXRMb2RPZmZzZXQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJUYXJnZXQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNNYW5hZ2VkKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgbGV2ZWxDb3Vu
dCgpOworICAgIFVJTlQgZ2V0U3VicmVzb3VyY2VJbmRleChpbnQgbGV2ZWwsIGludCBmYWNlVGFy
Z2V0KTsKKworICAgIGJvb2wgdXBkYXRlU3VicmVzb3VyY2VMZXZlbChJRDNEMTFUZXh0dXJlMkQg
KnRleHR1cmUsIHVuc2lnbmVkIGludCBzb3VyY2VTdWJyZXNvdXJjZSwgaW50IGxldmVsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmFjZVRhcmdldCwgR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworCisgIHBy
b3RlY3RlZDoKKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFwTGF5ZXIoUmVuZGVyVGFyZ2V0MTEgKnNv
dXJjZSwgUmVuZGVyVGFyZ2V0MTEgKmRlc3QpOworCisgICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVy
OworICAgIGludCBtTG9kT2Zmc2V0OworICAgIHVuc2lnbmVkIGludCBtTWlwTGV2ZWxzOworCisg
ICAgSUQzRDExVGV4dHVyZTJEICptVGV4dHVyZTsKKyAgICBEWEdJX0ZPUk1BVCBtVGV4dHVyZUZv
cm1hdDsKKyAgICBEWEdJX0ZPUk1BVCBtU2hhZGVyUmVzb3VyY2VGb3JtYXQ7CisgICAgRFhHSV9G
T1JNQVQgbVJlbmRlclRhcmdldEZvcm1hdDsKKyAgICBEWEdJX0ZPUk1BVCBtRGVwdGhTdGVuY2ls
Rm9ybWF0OworICAgIHVuc2lnbmVkIGludCBtVGV4dHVyZVdpZHRoOworICAgIHVuc2lnbmVkIGlu
dCBtVGV4dHVyZUhlaWdodDsKKworICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqbVNSVjsK
KworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUZXh0dXJlU3RvcmFn
ZTExKTsKKworICAgIGNvbnN0IFVJTlQgbUJpbmRGbGFnczsKK307CisKK2NsYXNzIFRleHR1cmVT
dG9yYWdlMTFfMkQgOiBwdWJsaWMgVGV4dHVyZVN0b3JhZ2UxMQoreworICBwdWJsaWM6CisgICAg
VGV4dHVyZVN0b3JhZ2UxMV8yRChSZW5kZXJlciAqcmVuZGVyZXIsIFN3YXBDaGFpbjExICpzd2Fw
Y2hhaW4pOworICAgIFRleHR1cmVTdG9yYWdlMTFfMkQoUmVuZGVyZXIgKnJlbmRlcmVyLCBpbnQg
bGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2FnZSwgYm9vbCBmb3JjZVJl
bmRlcmFibGUsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKyAgICB2aXJ0dWFsIH5U
ZXh0dXJlU3RvcmFnZTExXzJEKCk7CisKKyAgICBzdGF0aWMgVGV4dHVyZVN0b3JhZ2UxMV8yRCAq
bWFrZVRleHR1cmVTdG9yYWdlMTFfMkQoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UpOworCisgICAg
dmlydHVhbCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmdldFNSVigpOworICAgIHZpcnR1YWwg
UmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoaW50IGxldmVsKTsKKworICAgIHZpcnR1YWwg
dm9pZCBnZW5lcmF0ZU1pcG1hcChpbnQgbGV2ZWwpOworCisgIHByaXZhdGU6CisgICAgRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmVTdG9yYWdlMTFfMkQpOworCisgICAgUmVuZGVyVGFy
Z2V0MTEgKm1SZW5kZXJUYXJnZXRbZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVM
U107Cit9OworCitjbGFzcyBUZXh0dXJlU3RvcmFnZTExX0N1YmUgOiBwdWJsaWMgVGV4dHVyZVN0
b3JhZ2UxMQoreworICBwdWJsaWM6CisgICAgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlKFJlbmRlcmVy
ICpyZW5kZXJlciwgaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gdXNh
Z2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBpbnQgc2l6ZSk7CisgICAgdmlydHVhbCB+VGV4dHVy
ZVN0b3JhZ2UxMV9DdWJlKCk7CisKKyAgICBzdGF0aWMgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlICpt
YWtlVGV4dHVyZVN0b3JhZ2UxMV9DdWJlKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlKTsKKworICAg
IHZpcnR1YWwgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpnZXRTUlYoKTsKKyAgICB2aXJ0dWFs
IFJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KEdMZW51bSBmYWNlVGFyZ2V0LCBpbnQgbGV2
ZWwpOworCisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwKGludCBmYWNlLCBpbnQgbGV2
ZWwpOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmVT
dG9yYWdlMTFfQ3ViZSk7CisKKyAgICBSZW5kZXJUYXJnZXQxMSAqbVJlbmRlclRhcmdldFs2XVtn
bDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTXTsKK307CisKK30KKworI2VuZGlm
IC8vIExJQkdMRVNWMl9SRU5ERVJFUl9URVhUVVJFU1RPUkFHRTExX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1RleHR1cmVTdG9yYWdlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDEyMiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisvLyBUZXh0dXJlU3RvcmFnZS5jcHA6IEltcGxlbWVudHMgdGhlIGFi
c3RyYWN0IHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZSBjbGFzcyBhbmQgaXRzIGNvbmNyZXRl
IGRlcml2ZWQKKy8vIGNsYXNzZXMgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCBhbmQgVGV4dHVy
ZVN0b3JhZ2VJbnRlcmZhY2VDdWJlLCB3aGljaCBhY3QgYXMgdGhlIGludGVyZmFjZSB0byB0aGUK
Ky8vIEdQVS1zaWRlIHRleHR1cmUuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVGV4
dHVyZVN0b3JhZ2UuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L1RleHR1cmUuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngK
K3sKK3Vuc2lnbmVkIGludCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6bUN1cnJlbnRUZXh0dXJl
U2VyaWFsID0gMTsKKworVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OlRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlKCkKKyAgICA6IG1UZXh0dXJlU2VyaWFsKGlzc3VlVGV4dHVyZVNlcmlhbCgpKSwKKyAg
ICAgIG1JbnN0YW5jZShOVUxMKQoreworfQorCitUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6flRl
eHR1cmVTdG9yYWdlSW50ZXJmYWNlKCkKK3sKKyAgICBkZWxldGUgbUluc3RhbmNlOworfQorCiti
b29sIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlOjppc1JlbmRlclRhcmdldCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1JbnN0YW5jZS0+aXNSZW5kZXJUYXJnZXQoKTsKK30KKworCitib29sIFRleHR1
cmVTdG9yYWdlSW50ZXJmYWNlOjppc01hbmFnZWQoKSBjb25zdAoreworICAgIHJldHVybiBtSW5z
dGFuY2UtPmlzTWFuYWdlZCgpOworfQorCit1bnNpZ25lZCBpbnQgVGV4dHVyZVN0b3JhZ2VJbnRl
cmZhY2U6OmdldFRleHR1cmVTZXJpYWwoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZVNl
cmlhbDsKK30KKwordW5zaWduZWQgaW50IFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlOjppc3N1ZVRl
eHR1cmVTZXJpYWwoKQoreworICAgIHJldHVybiBtQ3VycmVudFRleHR1cmVTZXJpYWwrKzsKK30K
KworaW50IFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlOjpnZXRMb2RPZmZzZXQoKSBjb25zdAorewor
ICAgIHJldHVybiBtSW5zdGFuY2UtPmdldExvZE9mZnNldCgpOworfQorCisKK2ludCBUZXh0dXJl
U3RvcmFnZUludGVyZmFjZTo6bGV2ZWxDb3VudCgpCit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+
bGV2ZWxDb3VudCgpOworfQorCitUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEOjpUZXh0dXJlU3Rv
cmFnZUludGVyZmFjZTJEKFJlbmRlcmVyICpyZW5kZXJlciwgU3dhcENoYWluICpzd2FwY2hhaW4p
IAorICAgIDogbVJlbmRlclRhcmdldFNlcmlhbChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNz
dWVTZXJpYWwoKSkKK3sKKyAgICBtSW5zdGFuY2UgPSByZW5kZXJlci0+Y3JlYXRlVGV4dHVyZVN0
b3JhZ2UyRChzd2FwY2hhaW4pOworfQorCitUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEOjpUZXh0
dXJlU3RvcmFnZUludGVyZmFjZTJEKFJlbmRlcmVyICpyZW5kZXJlciwgaW50IGxldmVscywgR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKKyAgICA6IG1SZW5kZXJUYXJnZXRTZXJpYWwo
Z2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6Omlzc3VlU2VyaWFsKCkpCit7CisgICAgbUluc3RhbmNl
ID0gcmVuZGVyZXItPmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQobGV2ZWxzLCBpbnRlcm5hbGZvcm1h
dCwgdXNhZ2UsIGZvcmNlUmVuZGVyYWJsZSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK1RleHR1cmVT
dG9yYWdlSW50ZXJmYWNlMkQ6On5UZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEKCkKK3sKK30KKwor
UmVuZGVyVGFyZ2V0ICpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEOjpnZXRSZW5kZXJUYXJnZXQo
KSBjb25zdAoreworICAgIHJldHVybiBtSW5zdGFuY2UtPmdldFJlbmRlclRhcmdldCgpOworfQor
Cit2b2lkIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ6OmdlbmVyYXRlTWlwbWFwKGludCBsZXZl
bCkKK3sKKyAgICBtSW5zdGFuY2UtPmdlbmVyYXRlTWlwbWFwKGxldmVsKTsKK30KKwordW5zaWdu
ZWQgaW50IFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ6OmdldFJlbmRlclRhcmdldFNlcmlhbChH
TGVudW0gdGFyZ2V0KSBjb25zdAoreworICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0U2VyaWFsOwor
fQorCitUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmU6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
Q3ViZShSZW5kZXJlciAqcmVuZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgaW50IHNpemUpCisgICAgOiBt
Rmlyc3RSZW5kZXJUYXJnZXRTZXJpYWwoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6Omlzc3VlQ3Vi
ZVNlcmlhbHMoKSkKK3sKKyAgICBtSW5zdGFuY2UgPSByZW5kZXJlci0+Y3JlYXRlVGV4dHVyZVN0
b3JhZ2VDdWJlKGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHVzYWdlLCBmb3JjZVJlbmRlcmFibGUs
IHNpemUpOworfQorCitUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmU6On5UZXh0dXJlU3RvcmFn
ZUludGVyZmFjZUN1YmUoKQoreworfQorCitSZW5kZXJUYXJnZXQgKlRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlQ3ViZTo6Z2V0UmVuZGVyVGFyZ2V0KEdMZW51bSBmYWNlVGFyZ2V0KSBjb25zdAorewor
ICAgIHJldHVybiBtSW5zdGFuY2UtPmdldFJlbmRlclRhcmdldChmYWNlVGFyZ2V0KTsKK30KKwor
dm9pZCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmU6OmdlbmVyYXRlTWlwbWFwKGludCBmYWNl
LCBpbnQgbGV2ZWwpCit7CisgICAgbUluc3RhbmNlLT5nZW5lcmF0ZU1pcG1hcChmYWNlLCBsZXZl
bCk7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmU6OmdldFJl
bmRlclRhcmdldFNlcmlhbChHTGVudW0gdGFyZ2V0KSBjb25zdAoreworICAgIHJldHVybiBtRmly
c3RSZW5kZXJUYXJnZXRTZXJpYWwgKyBnbDo6VGV4dHVyZUN1YmVNYXA6OmZhY2VJbmRleCh0YXJn
ZXQpOworfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvVGV4dHVyZVN0b3JhZ2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMTAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFRleHR1cmVTdG9yYWdl
Lmg6IERlZmluZXMgdGhlIGFic3RyYWN0IHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZSBjbGFz
cyBhbmQgaXRzIGNvbmNyZXRlIGRlcml2ZWQKKy8vIGNsYXNzZXMgVGV4dHVyZVN0b3JhZ2VJbnRl
cmZhY2UyRCBhbmQgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlLCB3aGljaCBhY3QgYXMgdGhl
IGludGVyZmFjZSB0byB0aGUKKy8vIEdQVS1zaWRlIHRleHR1cmUuCisKKyNpZm5kZWYgTElCR0xF
U1YyX1JFTkRFUkVSX1RFWFRVUkVTVE9SQUdFX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJF
Ul9URVhUVVJFU1RPUkFHRV9IXworCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVz
cGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBTd2FwQ2hhaW47CitjbGFzcyBSZW5k
ZXJUYXJnZXQ7CitjbGFzcyBCbGl0OworCitjbGFzcyBUZXh0dXJlU3RvcmFnZQoreworICBwdWJs
aWM6CisgICAgVGV4dHVyZVN0b3JhZ2UoKSB7fTsKKyAgICB2aXJ0dWFsIH5UZXh0dXJlU3RvcmFn
ZSgpIHt9OworCisgICAgdmlydHVhbCBpbnQgZ2V0TG9kT2Zmc2V0KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1JlbmRlclRhcmdldCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNNYW5hZ2VkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGxldmVsQ291bnQoKSA9
IDA7CisKKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KCkgPSAwOwor
ICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoR0xlbnVtIGZhY2VUYXJn
ZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVNaXBtYXAoaW50IGxldmVsKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwKGludCBmYWNlLCBpbnQgbGV2ZWwpID0g
MDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUZXh0dXJlU3Rv
cmFnZSk7CisKK307CisKK2NsYXNzIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlCit7CisgIHB1Ymxp
YzoKKyAgICBUZXh0dXJlU3RvcmFnZUludGVyZmFjZSgpOworICAgIHZpcnR1YWwgflRleHR1cmVT
dG9yYWdlSW50ZXJmYWNlKCk7CisKKyAgICBUZXh0dXJlU3RvcmFnZSAqZ2V0U3RvcmFnZUluc3Rh
bmNlKCkgeyByZXR1cm4gbUluc3RhbmNlOyB9CisKKyAgICB1bnNpZ25lZCBpbnQgZ2V0VGV4dHVy
ZVNlcmlhbCgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlbmRlclRhcmdl
dFNlcmlhbChHTGVudW0gdGFyZ2V0KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGludCBnZXRM
b2RPZmZzZXQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJUYXJnZXQoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYW5hZ2VkKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQg
bGV2ZWxDb3VudCgpOworCisgIHByb3RlY3RlZDoKKyAgICBUZXh0dXJlU3RvcmFnZSAqbUluc3Rh
bmNlOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmVT
dG9yYWdlSW50ZXJmYWNlKTsKKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBtVGV4dHVyZVNlcmlh
bDsKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IGlzc3VlVGV4dHVyZVNlcmlhbCgpOworCisgICAg
c3RhdGljIHVuc2lnbmVkIGludCBtQ3VycmVudFRleHR1cmVTZXJpYWw7Cit9OworCitjbGFzcyBU
ZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEIDogcHVibGljIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
Cit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEKFJlbmRlcmVyICpy
ZW5kZXJlciwgU3dhcENoYWluICpzd2FwY2hhaW4pOworICAgIFRleHR1cmVTdG9yYWdlSW50ZXJm
YWNlMkQoUmVuZGVyZXIgKnJlbmRlcmVyLCBpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMZW51bSB1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0KTsKKyAgICB2aXJ0dWFsIH5UZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEKCk7
CisKKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFwKGludCBsZXZlbCk7CisgICAgUmVuZGVyVGFyZ2V0
ICpnZXRSZW5kZXJUYXJnZXQoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdl
dFJlbmRlclRhcmdldFNlcmlhbChHTGVudW0gdGFyZ2V0KSBjb25zdDsKKworICBwcml2YXRlOgor
ICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEKTsK
KworICAgIGNvbnN0IHVuc2lnbmVkIGludCBtUmVuZGVyVGFyZ2V0U2VyaWFsOworfTsKKworY2xh
c3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlIDogcHVibGljIFRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlCit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUoUmVu
ZGVyZXIgKnJlbmRlcmVyLCBpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51
bSB1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIGludCBzaXplKTsKKyAgICB2aXJ0dWFsIH5U
ZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUoKTsKKworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAo
aW50IGZhY2UsIGludCBsZXZlbCk7CisgICAgUmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQo
R0xlbnVtIGZhY2VUYXJnZXQpIGNvbnN0OworCisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0
UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0OworCisgIHByaXZhdGU6Cisg
ICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSk7
CisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgbUZpcnN0UmVuZGVyVGFyZ2V0U2VyaWFsOworfTsK
KworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1RFWFRVUkVTVE9SQUdFX0hfCisK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVy
dGV4QnVmZmVyOS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVy
OS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDg2IEBACisjaW5jbHVkZSAicHJlY29tcGls
ZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFZlcnRleEJ1ZmZlcjkuY3BwOiBEZWZpbmVz
IHRoZSBEM0Q5IFZlcnRleEJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KKworI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRl
cmVyL3ZlcnRleGNvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvQnVm
ZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9Db250ZXh0LmgiCisjaW5jbHVkZSAi
bGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL0J1
ZmZlci5oIgorCituYW1lc3BhY2UgcngKK3sKKworYm9vbCBWZXJ0ZXhCdWZmZXI5OjptVHJhbnNs
YXRpb25zSW5pdGlhbGl6ZWQgPSBmYWxzZTsKK1ZlcnRleEJ1ZmZlcjk6OkZvcm1hdENvbnZlcnRl
ciBWZXJ0ZXhCdWZmZXI5OjptRm9ybWF0Q29udmVydGVyc1tOVU1fR0xfVkVSVEVYX0FUVFJJQl9U
WVBFU11bMl1bNF07CisKK1ZlcnRleEJ1ZmZlcjk6OlZlcnRleEJ1ZmZlcjkocng6OlJlbmRlcmVy
OSAqY29uc3QgcmVuZGVyZXIpIDogbVJlbmRlcmVyKHJlbmRlcmVyKQoreworICAgIG1WZXJ0ZXhC
dWZmZXIgPSBOVUxMOworICAgIG1CdWZmZXJTaXplID0gMDsKKyAgICBtRHluYW1pY1VzYWdlID0g
ZmFsc2U7CisKKyAgICBpZiAoIW1UcmFuc2xhdGlvbnNJbml0aWFsaXplZCkKKyAgICB7CisgICAg
ICAgIGluaXRpYWxpemVUcmFuc2xhdGlvbnMocmVuZGVyZXItPmdldENhcHNEZWNsVHlwZXMoKSk7
CisgICAgICAgIG1UcmFuc2xhdGlvbnNJbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorfQorCitW
ZXJ0ZXhCdWZmZXI5Ojp+VmVydGV4QnVmZmVyOSgpCit7CisgICAgaWYgKG1WZXJ0ZXhCdWZmZXIp
CisgICAgeworICAgICAgICBtVmVydGV4QnVmZmVyLT5SZWxlYXNlKCk7CisgICAgICAgIG1WZXJ0
ZXhCdWZmZXIgPSBOVUxMOworICAgIH0KK30KKworYm9vbCBWZXJ0ZXhCdWZmZXI5Ojppbml0aWFs
aXplKHVuc2lnbmVkIGludCBzaXplLCBib29sIGR5bmFtaWNVc2FnZSkKK3sKKyAgICBpZiAobVZl
cnRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1WZXJ0ZXhCdWZmZXItPlJlbGVhc2UoKTsKKyAg
ICAgICAgbVZlcnRleEJ1ZmZlciA9IE5VTEw7CisgICAgfQorCisgICAgdXBkYXRlU2VyaWFsKCk7
CisKKyAgICBpZiAoc2l6ZSA+IDApCisgICAgeworICAgICAgICBEV09SRCBmbGFncyA9IEQzRFVT
QUdFX1dSSVRFT05MWTsKKyAgICAgICAgaWYgKGR5bmFtaWNVc2FnZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgZmxhZ3MgfD0gRDNEVVNBR0VfRFlOQU1JQzsKKyAgICAgICAgfQorCisgICAgICAg
IEhSRVNVTFQgcmVzdWx0ID0gbVJlbmRlcmVyLT5jcmVhdGVWZXJ0ZXhCdWZmZXIoc2l6ZSwgZmxh
Z3MsICZtVmVydGV4QnVmZmVyKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEVSUigiT3V0IG9mIG1lbW9yeSBhbGxvY2F0aW5nIGEgdmVydGV4
IGJ1ZmZlciBvZiBzaXplICVsdS4iLCBzaXplKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIG1CdWZmZXJTaXplID0gc2l6ZTsKKyAgICBtRHluYW1p
Y1VzYWdlID0gZHluYW1pY1VzYWdlOworICAgIHJldHVybiB0cnVlOworfQorCitWZXJ0ZXhCdWZm
ZXI5ICpWZXJ0ZXhCdWZmZXI5OjptYWtlVmVydGV4QnVmZmVyOShWZXJ0ZXhCdWZmZXIgKnZlcnRl
eEJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShWZXJ0ZXhCdWZmZXI5Kiwg
dmVydGV4QnVmZmVyKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFZlcnRleEJ1ZmZlcjkqPih2
ZXJ0ZXhCdWZmZXIpOworfQorCitib29sIFZlcnRleEJ1ZmZlcjk6OnN0b3JlVmVydGV4QXR0cmli
dXRlcyhjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMaW50IHN0YXJ0LCBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBpbnN0YW5jZXMsIHVuc2lnbmVkIGludCBvZmZzZXQpCit7CisgICAgaWYgKG1WZXJ0
ZXhCdWZmZXIpCisgICAgeworICAgICAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBhdHRyaWIubUJv
dW5kQnVmZmVyLmdldCgpOworCisgICAgICAgIGludCBpbnB1dFN0cmlkZSA9IGF0dHJpYi5zdHJp
ZGUoKTsKKyAgICAgICAgaW50IGVsZW1lbnRTaXplID0gYXR0cmliLnR5cGVTaXplKCk7CisgICAg
ICAgIGNvbnN0IEZvcm1hdENvbnZlcnRlciAmY29udmVydGVyID0gZm9ybWF0Q29udmVydGVyKGF0
dHJpYik7CisKKyAgICAgICAgRFdPUkQgbG9ja0ZsYWdzID0gbUR5bmFtaWNVc2FnZSA/IEQzRExP
Q0tfTk9PVkVSV1JJVEUgOiAwOworCisgICAgICAgIHZvaWQgKm1hcFB0ciA9IE5VTEw7CisgICAg
ICAgIEhSRVNVTFQgcmVzdWx0ID0gbVZlcnRleEJ1ZmZlci0+TG9jayhvZmZzZXQsIHNwYWNlUmVx
dWlyZWQoYXR0cmliLCBjb3VudCwgaW5zdGFuY2VzKSwgJm1hcFB0ciwgbG9ja0ZsYWdzKTsKKwor
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigi
TG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgY2hhciAqaW5wdXQgPSBOVUxM
OworICAgICAgICBpZiAoYnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICBCdWZmZXJTdG9y
YWdlICpzdG9yYWdlID0gYnVmZmVyLT5nZXRTdG9yYWdlKCk7CisgICAgICAgICAgICBpbnB1dCA9
IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzdG9yYWdlLT5nZXREYXRhKCkpICsgc3RhdGljX2Nh
c3Q8aW50PihhdHRyaWIubU9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICBpbnB1dCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhdHRyaWIu
bVBvaW50ZXIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGluc3RhbmNlcyA9PSAwIHx8IGF0
dHJpYi5tRGl2aXNvciA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBpbnB1dCArPSBpbnB1
dFN0cmlkZSAqIHN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbnZlcnRlci5pZGVu
dGl0eSAmJiBpbnB1dFN0cmlkZSA9PSBlbGVtZW50U2l6ZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgbWVtY3B5KG1hcFB0ciwgaW5wdXQsIGNvdW50ICogaW5wdXRTdHJpZGUpOworICAgICAgICB9
CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgY29udmVydGVyLmNvbnZlcnRB
cnJheShpbnB1dCwgaW5wdXRTdHJpZGUsIGNvdW50LCBtYXBQdHIpOworICAgICAgICB9CisKKyAg
ICAgICAgbVZlcnRleEJ1ZmZlci0+VW5sb2NrKCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEVSUigiVmVydGV4IGJ1ZmZlciBub3QgaW5p
dGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgVmVy
dGV4QnVmZmVyOTo6c3RvcmVSYXdEYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGludCBz
aXplLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworICAgIGlmIChtVmVydGV4QnVmZmVyKQorICAg
IHsKKyAgICAgICAgRFdPUkQgbG9ja0ZsYWdzID0gbUR5bmFtaWNVc2FnZSA/IEQzRExPQ0tfTk9P
VkVSV1JJVEUgOiAwOworCisgICAgICAgIHZvaWQgKm1hcFB0ciA9IE5VTEw7CisgICAgICAgIEhS
RVNVTFQgcmVzdWx0ID0gbVZlcnRleEJ1ZmZlci0+TG9jayhvZmZzZXQsIHNpemUsICZtYXBQdHIs
IGxvY2tGbGFncyk7CisKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBFUlIoIkxvY2sgZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0KTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIG1lbWNweSht
YXBQdHIsIGRhdGEsIHNpemUpOworCisgICAgICAgIG1WZXJ0ZXhCdWZmZXItPlVubG9jaygpOwor
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBF
UlIoIlZlcnRleCBidWZmZXIgbm90IGluaXRpYWxpemVkLiIpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyOTo6Z2V0U3BhY2VSZXF1
aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkgY291bnQsIEdM
c2l6ZWkgaW5zdGFuY2VzKSBjb25zdAoreworICAgIHJldHVybiBzcGFjZVJlcXVpcmVkKGF0dHJp
YiwgY291bnQsIGluc3RhbmNlcyk7Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVyOTo6cmVxdWlyZXND
b252ZXJzaW9uKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3QKK3sKKyAg
ICByZXR1cm4gZm9ybWF0Q29udmVydGVyKGF0dHJpYikuaWRlbnRpdHk7Cit9CisKK3Vuc2lnbmVk
IGludCBWZXJ0ZXhCdWZmZXI5OjpnZXRWZXJ0ZXhTaXplKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1
dGUgJmF0dHJpYikgY29uc3QKK3sKKyAgICByZXR1cm4gc3BhY2VSZXF1aXJlZChhdHRyaWIsIDEs
IDApOworfQorCitEM0RERUNMVFlQRSBWZXJ0ZXhCdWZmZXI5OjpnZXREZWNsVHlwZShjb25zdCBn
bDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZvcm1hdENv
bnZlcnRlcihhdHRyaWIpLmQzZERlY2xUeXBlOworfQorCit1bnNpZ25lZCBpbnQgVmVydGV4QnVm
ZmVyOTo6Z2V0QnVmZmVyU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1CdWZmZXJTaXplOwor
fQorCitib29sIFZlcnRleEJ1ZmZlcjk6OnNldEJ1ZmZlclNpemUodW5zaWduZWQgaW50IHNpemUp
Cit7CisgICAgaWYgKHNpemUgPiBtQnVmZmVyU2l6ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBp
bml0aWFsaXplKHNpemUsIG1EeW5hbWljVXNhZ2UpOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVyOTo6ZGlz
Y2FyZCgpCit7CisgICAgaWYgKG1WZXJ0ZXhCdWZmZXIpCisgICAgeworICAgICAgICB2b2lkICpk
dW1teTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQ7CisKKyAgICAgICAgcmVzdWx0ID0gbVZlcnRl
eEJ1ZmZlci0+TG9jaygwLCAxLCAmZHVtbXksIEQzRExPQ0tfRElTQ0FSRCk7CisgICAgICAgIGlm
IChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJEaXNjYXJkIGxv
Y2sgZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IG1WZXJ0ZXhCdWZmZXItPlVu
bG9jaygpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEVSUigiRGlzY2FyZCB1bmxvY2sgZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBFUlIoIlZlcnRleCBidWZm
ZXIgbm90IGluaXRpYWxpemVkLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
CitJRGlyZWN0M0RWZXJ0ZXhCdWZmZXI5ICogVmVydGV4QnVmZmVyOTo6Z2V0QnVmZmVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbVZlcnRleEJ1ZmZlcjsKK30KKworLy8gTWFwcGluZyBmcm9tIE9w
ZW5HTC1FUyB2ZXJ0ZXggYXR0cmliIHR5cGUgdG8gRDNEIGRlY2wgdHlwZToKKy8vCisvLyBCWVRF
ICAgICAgICAgICAgICAgICBTSE9SVCAoQ2FzdCkKKy8vIEJZVEUtbm9ybSAgICAgICAgICAgIEZM
T0FUIChOb3JtYWxpemUpIChjYW4ndCBiZSBleGFjdGx5IHJlcHJlc2VudGVkIGFzIFNIT1JULW5v
cm0pCisvLyBVTlNJR05FRF9CWVRFICAgICAgICBVQllURTQgKElkZW50aXR5KSBvciBTSE9SVCAo
Q2FzdCkKKy8vIFVOU0lHTkVEX0JZVEUtbm9ybSAgIFVCWVRFNE4gKElkZW50aXR5KSBvciBGTE9B
VCAoTm9ybWFsaXplKQorLy8gU0hPUlQgICAgICAgICAgICAgICAgU0hPUlQgKElkZW50aXR5KQor
Ly8gU0hPUlQtbm9ybSAgICAgICAgICAgU0hPUlQtbm9ybSAoSWRlbnRpdHkpIG9yIEZMT0FUIChO
b3JtYWxpemUpCisvLyBVTlNJR05FRF9TSE9SVCAgICAgICBGTE9BVCAoQ2FzdCkKKy8vIFVOU0lH
TkVEX1NIT1JULW5vcm0gIFVTSE9SVC1ub3JtIChJZGVudGl0eSkgb3IgRkxPQVQgKE5vcm1hbGl6
ZSkKKy8vIEZJWEVEIChub3QgaW4gV2ViR0wpIEZMT0FUIChGaXhlZFRvRmxvYXQpCisvLyBGTE9B
VCAgICAgICAgICAgICAgICBGTE9BVCAoSWRlbnRpdHkpCisKKy8vIEdMVG9DVHlwZSBtYXBzIGZy
b20gR0wgdHlwZSAoYXMgR0xlbnVtKSB0byB0aGUgQyB0eXBlZGVmLgordGVtcGxhdGUgPEdMZW51
bSBHTFR5cGU+IHN0cnVjdCBHTFRvQ1R5cGUgeyB9OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgR0xU
b0NUeXBlPEdMX0JZVEU+ICAgICAgICAgICB7IHR5cGVkZWYgR0xieXRlIHR5cGU7ICAgICAgfTsK
K3RlbXBsYXRlIDw+IHN0cnVjdCBHTFRvQ1R5cGU8R0xfVU5TSUdORURfQllURT4gIHsgdHlwZWRl
ZiBHTHVieXRlIHR5cGU7ICAgICB9OwordGVtcGxhdGUgPD4gc3RydWN0IEdMVG9DVHlwZTxHTF9T
SE9SVD4gICAgICAgICAgeyB0eXBlZGVmIEdMc2hvcnQgdHlwZTsgICAgIH07Cit0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgR0xUb0NUeXBlPEdMX1VOU0lHTkVEX1NIT1JUPiB7IHR5cGVkZWYgR0x1c2hvcnQg
dHlwZTsgICAgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBHTFRvQ1R5cGU8R0xfRklYRUQ+ICAgICAg
ICAgIHsgdHlwZWRlZiBHTHVpbnQgdHlwZTsgICAgICB9OwordGVtcGxhdGUgPD4gc3RydWN0IEdM
VG9DVHlwZTxHTF9GTE9BVD4gICAgICAgICAgeyB0eXBlZGVmIEdMZmxvYXQgdHlwZTsgICAgIH07
CisKKy8vIFRoaXMgZGlmZmVycyBmcm9tIEQzRERFQ0xUWVBFIGluIHRoYXQgaXQgaXMgdW5zaXpl
ZC4gKFNpemUgZXhwYW5zaW9uIGlzIGFwcGxpZWQgbGFzdC4pCitlbnVtIEQzRFZlcnRleFR5cGUK
K3sKKyAgICBEM0RWVF9GTE9BVCwKKyAgICBEM0RWVF9TSE9SVCwKKyAgICBEM0RWVF9TSE9SVF9O
T1JNLAorICAgIEQzRFZUX1VCWVRFLAorICAgIEQzRFZUX1VCWVRFX05PUk0sCisgICAgRDNEVlRf
VVNIT1JUX05PUk0KK307CisKKy8vIEQzRFRvQ1R5cGUgbWFwcyBmcm9tIEQzRCB2ZXJ0ZXggdHlw
ZSAoYXMgZW51bSBEM0RWZXJ0ZXhUeXBlKSB0byB0aGUgY29ycmVzcG9uZGluZyBDIHR5cGUuCit0
ZW1wbGF0ZSA8dW5zaWduZWQgaW50IEQzRFR5cGU+IHN0cnVjdCBEM0RUb0NUeXBlIHsgfTsKKwor
dGVtcGxhdGUgPD4gc3RydWN0IEQzRFRvQ1R5cGU8RDNEVlRfRkxPQVQ+IHsgdHlwZWRlZiBmbG9h
dCB0eXBlOyB9OwordGVtcGxhdGUgPD4gc3RydWN0IEQzRFRvQ1R5cGU8RDNEVlRfU0hPUlQ+IHsg
dHlwZWRlZiBzaG9ydCB0eXBlOyB9OwordGVtcGxhdGUgPD4gc3RydWN0IEQzRFRvQ1R5cGU8RDNE
VlRfU0hPUlRfTk9STT4geyB0eXBlZGVmIHNob3J0IHR5cGU7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgRDNEVG9DVHlwZTxEM0RWVF9VQllURT4geyB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdHlwZTsg
fTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBEM0RUb0NUeXBlPEQzRFZUX1VCWVRFX05PUk0+IHsgdHlw
ZWRlZiB1bnNpZ25lZCBjaGFyIHR5cGU7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNEVG9DVHlw
ZTxEM0RWVF9VU0hPUlRfTk9STT4geyB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHR5cGU7IH07CisK
Ky8vIEVuY29kZSB0aGUgdHlwZS9zaXplIGNvbWJpbmF0aW9ucyB0aGF0IEQzRCBwZXJtaXRzLiBG
b3IgZWFjaCB0eXBlL3NpemUgaXQgZXhwYW5kcyB0byBhIHdpZGVuZXIgdGhhdCB3aWxsIHByb3Zp
ZGUgdGhlIGFwcHJvcHJpYXRlIGZpbmFsIHNpemUuCit0ZW1wbGF0ZSA8dW5zaWduZWQgaW50IHR5
cGUsIGludCBzaXplPiBzdHJ1Y3QgV2lkZW5SdWxlIHsgfTsKKwordGVtcGxhdGUgPGludCBzaXpl
PiBzdHJ1Y3QgV2lkZW5SdWxlPEQzRFZUX0ZMT0FULCBzaXplPiAgICAgICAgICA6IE5vV2lkZW48
c2l6ZT4geyB9OwordGVtcGxhdGUgPGludCBzaXplPiBzdHJ1Y3QgV2lkZW5SdWxlPEQzRFZUX1NI
T1JULCBzaXplPiAgICAgICAgICA6IFdpZGVuVG9FdmVuPHNpemU+IHsgfTsKK3RlbXBsYXRlIDxp
bnQgc2l6ZT4gc3RydWN0IFdpZGVuUnVsZTxEM0RWVF9TSE9SVF9OT1JNLCBzaXplPiAgICAgOiBX
aWRlblRvRXZlbjxzaXplPiB7IH07Cit0ZW1wbGF0ZSA8aW50IHNpemU+IHN0cnVjdCBXaWRlblJ1
bGU8RDNEVlRfVUJZVEUsIHNpemU+ICAgICAgICAgIDogV2lkZW5Ub0ZvdXI8c2l6ZT4geyB9Owor
dGVtcGxhdGUgPGludCBzaXplPiBzdHJ1Y3QgV2lkZW5SdWxlPEQzRFZUX1VCWVRFX05PUk0sIHNp
emU+ICAgICA6IFdpZGVuVG9Gb3VyPHNpemU+IHsgfTsKK3RlbXBsYXRlIDxpbnQgc2l6ZT4gc3Ry
dWN0IFdpZGVuUnVsZTxEM0RWVF9VU0hPUlRfTk9STSwgc2l6ZT4gICAgOiBXaWRlblRvRXZlbjxz
aXplPiB7IH07CisKKy8vIFZlcnRleFR5cGVGbGFncyBlbmNvZGVzIHRoZSBEM0RDQVBTOTo6RGVj
bFR5cGUgZmxhZyBhbmQgdmVydGV4IGRlY2xhcmF0aW9uIGZsYWcgZm9yIGVhY2ggRDNEIHZlcnRl
eCB0eXBlICYgc2l6ZSBjb21iaW5hdGlvbi4KK3RlbXBsYXRlIDx1bnNpZ25lZCBpbnQgZDNkdHlw
ZSwgaW50IHNpemU+IHN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3MgeyB9OworCit0ZW1wbGF0ZSA8dW5z
aWduZWQgaW50IF9jYXBmbGFnLCB1bnNpZ25lZCBpbnQgX2RlY2xmbGFnPgorc3RydWN0IFZlcnRl
eFR5cGVGbGFnc0hlbHBlcgoreworICAgIGVudW0geyBjYXBmbGFnID0gX2NhcGZsYWcgfTsKKyAg
ICBlbnVtIHsgZGVjbGZsYWcgPSBfZGVjbGZsYWcgfTsKK307CisKK3RlbXBsYXRlIDw+IHN0cnVj
dCBWZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRfRkxPQVQsIDE+IDogVmVydGV4VHlwZUZsYWdzSGVscGVy
PDAsIEQzRERFQ0xUWVBFX0ZMT0FUMT4geyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5
cGVGbGFnczxEM0RWVF9GTE9BVCwgMj4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxwZXI8MCwgRDNEREVD
TFRZUEVfRkxPQVQyPiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQz
RFZUX0ZMT0FULCAzPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjwwLCBEM0RERUNMVFlQRV9GTE9B
VDM+IHsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRfRkxPQVQs
IDQ+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPDAsIEQzRERFQ0xUWVBFX0ZMT0FUND4geyB9Owor
dGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9TSE9SVCwgMj4gOiBWZXJ0
ZXhUeXBlRmxhZ3NIZWxwZXI8MCwgRDNEREVDTFRZUEVfU0hPUlQyPiB7IH07Cit0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX1NIT1JULCA0PiA6IFZlcnRleFR5cGVGbGFn
c0hlbHBlcjwwLCBEM0RERUNMVFlQRV9TSE9SVDQ+IHsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBW
ZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRfU0hPUlRfTk9STSwgMj4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxw
ZXI8RDNERFRDQVBTX1NIT1JUMk4sIEQzRERFQ0xUWVBFX1NIT1JUMk4+IHsgfTsKK3RlbXBsYXRl
IDw+IHN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRfU0hPUlRfTk9STSwgND4gOiBWZXJ0ZXhU
eXBlRmxhZ3NIZWxwZXI8RDNERFRDQVBTX1NIT1JUNE4sIEQzRERFQ0xUWVBFX1NIT1JUNE4+IHsg
fTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRfVUJZVEUsIDQ+IDog
VmVydGV4VHlwZUZsYWdzSGVscGVyPEQzRERUQ0FQU19VQllURTQsIEQzRERFQ0xUWVBFX1VCWVRF
ND4geyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9VQllURV9O
T1JNLCA0PiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjxEM0REVENBUFNfVUJZVEU0TiwgRDNEREVD
TFRZUEVfVUJZVEU0Tj4geyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxE
M0RWVF9VU0hPUlRfTk9STSwgMj4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxwZXI8RDNERFRDQVBTX1VT
SE9SVDJOLCBEM0RERUNMVFlQRV9VU0hPUlQyTj4geyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFZl
cnRleFR5cGVGbGFnczxEM0RWVF9VU0hPUlRfTk9STSwgND4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxw
ZXI8RDNERFRDQVBTX1VTSE9SVDROLCBEM0RERUNMVFlQRV9VU0hPUlQ0Tj4geyB9OworCisKKy8v
IFZlcnRleFR5cGVNYXBwaW5nIG1hcHMgR0wgdHlwZSAmIG5vcm1hbGl6ZWQgZmxhZyB0byBwcmVm
ZXJyZWQgYW5kIGZhbGxiYWNrIEQzRCB2ZXJ0ZXggdHlwZXMgKGFzIEQzRFZlcnRleFR5cGUgZW51
bXMpLgordGVtcGxhdGUgPEdMZW51bSBHTHR5cGUsIGJvb2wgbm9ybWFsaXplZD4gc3RydWN0IFZl
cnRleFR5cGVNYXBwaW5nIHsgfTsKKwordGVtcGxhdGUgPEQzRFZlcnRleFR5cGUgUHJlZmVycmVk
LCBEM0RWZXJ0ZXhUeXBlIEZhbGxiYWNrID0gUHJlZmVycmVkPgorc3RydWN0IFZlcnRleFR5cGVN
YXBwaW5nQmFzZQoreworICAgIGVudW0geyBwcmVmZXJyZWQgPSBQcmVmZXJyZWQgfTsKKyAgICBl
bnVtIHsgZmFsbGJhY2sgPSBGYWxsYmFjayB9OworfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IFZl
cnRleFR5cGVNYXBwaW5nPEdMX0JZVEUsIGZhbHNlPiAgICAgICAgICAgICAgICAgICAgICAgIDog
VmVydGV4VHlwZU1hcHBpbmdCYXNlPEQzRFZUX1NIT1JUPiB7IH07ICAgICAgICAgICAgICAgICAg
ICAgICAvLyBDYXN0Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfQllU
RSwgdHJ1ZT4gICAgICAgICAgICAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8
RDNEVlRfRkxPQVQ+IHsgfTsgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZQordGVt
cGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVNYXBwaW5nPEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNl
PiAgICAgICAgICAgICAgIDogVmVydGV4VHlwZU1hcHBpbmdCYXNlPEQzRFZUX1VCWVRFLCBEM0RW
VF9GTE9BVD4geyB9OyAgICAgICAgICAvLyBJZGVudGl0eSwgQ2FzdAordGVtcGxhdGUgPD4gc3Ry
dWN0IFZlcnRleFR5cGVNYXBwaW5nPEdMX1VOU0lHTkVEX0JZVEUsIHRydWU+ICAgICAgICAgICAg
ICAgIDogVmVydGV4VHlwZU1hcHBpbmdCYXNlPEQzRFZUX1VCWVRFX05PUk0sIEQzRFZUX0ZMT0FU
PiB7IH07ICAgICAvLyBJZGVudGl0eSwgTm9ybWFsaXplCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVy
dGV4VHlwZU1hcHBpbmc8R0xfU0hPUlQsIGZhbHNlPiAgICAgICAgICAgICAgICAgICAgICAgOiBW
ZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfU0hPUlQ+IHsgfTsgICAgICAgICAgICAgICAgICAg
ICAgIC8vIElkZW50aXR5Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xf
U0hPUlQsIHRydWU+ICAgICAgICAgICAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jh
c2U8RDNEVlRfU0hPUlRfTk9STSwgRDNEVlRfRkxPQVQ+IHsgfTsgICAgIC8vIENhc3QsIE5vcm1h
bGl6ZQordGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVNYXBwaW5nPEdMX1VOU0lHTkVEX1NI
T1JULCBmYWxzZT4gICAgICAgICAgICAgIDogVmVydGV4VHlwZU1hcHBpbmdCYXNlPEQzRFZUX0ZM
T0FUPiB7IH07ICAgICAgICAgICAgICAgICAgICAgICAvLyBDYXN0Cit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfVU5TSUdORURfU0hPUlQsIHRydWU+ICAgICAgICAgICAg
ICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfVVNIT1JUX05PUk0sIEQzRFZUX0ZMT0FU
PiB7IH07ICAgIC8vIENhc3QsIE5vcm1hbGl6ZQordGVtcGxhdGUgPGJvb2wgbm9ybWFsaXplZD4g
c3RydWN0IFZlcnRleFR5cGVNYXBwaW5nPEdMX0ZJWEVELCBub3JtYWxpemVkPiAgIDogVmVydGV4
VHlwZU1hcHBpbmdCYXNlPEQzRFZUX0ZMT0FUPiB7IH07ICAgICAgICAgICAgICAgICAgICAgICAv
LyBGaXhlZFRvRmxvYXQKK3RlbXBsYXRlIDxib29sIG5vcm1hbGl6ZWQ+IHN0cnVjdCBWZXJ0ZXhU
eXBlTWFwcGluZzxHTF9GTE9BVCwgbm9ybWFsaXplZD4gICA6IFZlcnRleFR5cGVNYXBwaW5nQmFz
ZTxEM0RWVF9GTE9BVD4geyB9OyAgICAgICAgICAgICAgICAgICAgICAgLy8gSWRlbnRpdHkKKwor
CisvLyBHaXZlbiBhIEdMIHR5cGUgJiBub3JtIGZsYWcgYW5kIGEgRDNEIHR5cGUsIENvbnZlcnNp
b25SdWxlIHByb3ZpZGVzIHRoZSB0eXBlIGNvbnZlcnNpb24gcnVsZSAoQ2FzdCwgTm9ybWFsaXpl
LCBJZGVudGl0eSwgRml4ZWRUb0Zsb2F0KS4KKy8vIFRoZSBjb252ZXJzaW9uIHJ1bGVzIHRoZW1z
ZWx2ZXMgYXJlIGRlZmluZWQgaW4gdmVydGV4Y29udmVyc2lvbi5oLgorCisvLyBBbG1vc3QgYWxs
IGNhc2VzIGFyZSBjb3ZlcmVkIGJ5IENhc3QgKGluY2x1ZGluZyB0aG9zZSB0aGF0IGFyZSBhY3R1
YWxseSBJZGVudGl0eSBzaW5jZSBDYXN0PFQsVD4ga25vd3MgaXQncyBhbiBpZGVudGl0eSBtYXBw
aW5nKS4KK3RlbXBsYXRlIDxHTGVudW0gZnJvbVR5cGUsIGJvb2wgbm9ybWFsaXplZCwgdW5zaWdu
ZWQgaW50IHRvVHlwZT4KK3N0cnVjdCBDb252ZXJzaW9uUnVsZSA6IENhc3Q8dHlwZW5hbWUgR0xU
b0NUeXBlPGZyb21UeXBlPjo6dHlwZSwgdHlwZW5hbWUgRDNEVG9DVHlwZTx0b1R5cGU+Ojp0eXBl
PiB7IH07CisKKy8vIEFsbCBjb252ZXJzaW9ucyBmcm9tIG5vcm1hbGl6ZWQgdHlwZXMgdG8gZmxv
YXQgdXNlIHRoZSBOb3JtYWxpemUgb3BlcmF0b3IuCit0ZW1wbGF0ZSA8R0xlbnVtIGZyb21UeXBl
PiBzdHJ1Y3QgQ29udmVyc2lvblJ1bGU8ZnJvbVR5cGUsIHRydWUsIEQzRFZUX0ZMT0FUPiA6IE5v
cm1hbGl6ZTx0eXBlbmFtZSBHTFRvQ1R5cGU8ZnJvbVR5cGU+Ojp0eXBlPiB7IH07CisKKy8vIFVz
ZSBhIGZ1bGwgc3BlY2lhbGl6YXRpb24gZm9yIHRoaXMgc28gdGhhdCBpdCBwcmVmZXJlbnRpYWxs
eSBtYXRjaGVzIGFoZWFkIG9mIHRoZSBnZW5lcmljIG5vcm1hbGl6ZS10by1mbG9hdCBydWxlcy4K
K3RlbXBsYXRlIDw+IHN0cnVjdCBDb252ZXJzaW9uUnVsZTxHTF9GSVhFRCwgdHJ1ZSwgRDNEVlRf
RkxPQVQ+ICA6IEZpeGVkVG9GbG9hdDxHTGludCwgMTY+IHsgfTsKK3RlbXBsYXRlIDw+IHN0cnVj
dCBDb252ZXJzaW9uUnVsZTxHTF9GSVhFRCwgZmFsc2UsIEQzRFZUX0ZMT0FUPiA6IEZpeGVkVG9G
bG9hdDxHTGludCwgMTY+IHsgfTsKKworLy8gQSAyLXN0YWdlIGNvbnN0cnVjdGlvbiBpcyB1c2Vk
IGZvciBEZWZhdWx0VmVydGV4VmFsdWVzIGJlY2F1c2UgZmxvYXQgbXVzdCB1c2UgU2ltcGxlRGVm
YXVsdFZhbHVlcyAoaS5lLiAwLzEpCisvLyB3aGV0aGVyIGl0IGlzIG5vcm1hbGl6ZWQgb3Igbm90
LgordGVtcGxhdGUgPGNsYXNzIFQsIGJvb2wgbm9ybWFsaXplZD4gc3RydWN0IERlZmF1bHRWZXJ0
ZXhWYWx1ZXNTdGFnZTIgeyB9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IERlZmF1bHRW
ZXJ0ZXhWYWx1ZXNTdGFnZTI8VCwgdHJ1ZT4gIDogTm9ybWFsaXplZERlZmF1bHRWYWx1ZXM8VD4g
eyB9OwordGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBEZWZhdWx0VmVydGV4VmFsdWVzU3RhZ2Uy
PFQsIGZhbHNlPiA6IFNpbXBsZURlZmF1bHRWYWx1ZXM8VD4geyB9OworCisvLyBXb3JrIG91dCB0
aGUgZGVmYXVsdCB2YWx1ZSBydWxlIGZvciBhIEQzRCB0eXBlIChleHByZXNzZWQgYXMgdGhlIEMg
dHlwZSkgYW5kCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgYm9vbCBub3JtYWxpemVkPiBzdHJ1Y3QgRGVm
YXVsdFZlcnRleFZhbHVlcyA6IERlZmF1bHRWZXJ0ZXhWYWx1ZXNTdGFnZTI8VCwgbm9ybWFsaXpl
ZD4geyB9OwordGVtcGxhdGUgPGJvb2wgbm9ybWFsaXplZD4gc3RydWN0IERlZmF1bHRWZXJ0ZXhW
YWx1ZXM8ZmxvYXQsIG5vcm1hbGl6ZWQ+IDogU2ltcGxlRGVmYXVsdFZhbHVlczxmbG9hdD4geyB9
OworCisvLyBQb2xpY3kgcnVsZXMgZm9yIHVzZSB3aXRoIENvbnZlcnRlciwgdG8gY2hvb3NlIHdo
ZXRoZXIgdG8gdXNlIHRoZSBwcmVmZXJyZWQgb3IgZmFsbGJhY2sgY29udmVyc2lvbi4KKy8vIFRo
ZSBmYWxsYmFjayBjb252ZXJzaW9uIHByb2R1Y2VzIGFuIG91dHB1dCB0aGF0IGFsbCBEM0Q5IGRl
dmljZXMgbXVzdCBzdXBwb3J0LgordGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBVc2VQcmVmZXJy
ZWQgeyBlbnVtIHsgdHlwZSA9IFQ6OnByZWZlcnJlZCB9OyB9OwordGVtcGxhdGUgPGNsYXNzIFQ+
IHN0cnVjdCBVc2VGYWxsYmFjayB7IGVudW0geyB0eXBlID0gVDo6ZmFsbGJhY2sgfTsgfTsKKwor
Ly8gQ29udmVydGVyIHRpZXMgaXQgYWxsIHRvZ2V0aGVyLiBHaXZlbiBhbiBPcGVuR0wgdHlwZS9u
b3JtL3NpemUgYW5kIGNob2ljZSBvZiBwcmVmZXJyZWQvZmFsbGJhY2sgY29udmVyc2lvbiwKKy8v
IGl0IHByb3ZpZGVzIGFsbCB0aGUgbWVtYmVycyBvZiB0aGUgYXBwcm9wcmlhdGUgVmVydGV4RGF0
YUNvbnZlcnRlciwgdGhlIEQzRENBUFM5OjpEZWNsVHlwZXMgZmxhZyBpbiBjYXAgZmxhZworLy8g
YW5kIHRoZSBEM0RERUNMVFlQRSBtZW1iZXIgbmVlZGVkIGZvciB0aGUgdmVydGV4IGRlY2xhcmF0
aW9uIGluIGRlY2xmbGFnLgordGVtcGxhdGUgPEdMZW51bSBmcm9tVHlwZSwgYm9vbCBub3JtYWxp
emVkLCBpbnQgc2l6ZSwgdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIFByZWZlcmVuY2VSdWxlPgor
c3RydWN0IENvbnZlcnRlcgorICAgIDogVmVydGV4RGF0YUNvbnZlcnRlcjx0eXBlbmFtZSBHTFRv
Q1R5cGU8ZnJvbVR5cGU+Ojp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBXaWRlblJ1
bGU8UHJlZmVyZW5jZVJ1bGU8IFZlcnRleFR5cGVNYXBwaW5nPGZyb21UeXBlLCBub3JtYWxpemVk
PiA+Ojp0eXBlLCBzaXplPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvblJ1
bGU8ZnJvbVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
cm1hbGl6ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWZl
cmVuY2VSdWxlPCBWZXJ0ZXhUeXBlTWFwcGluZzxmcm9tVHlwZSwgbm9ybWFsaXplZD4gPjo6dHlw
ZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRWZXJ0ZXhWYWx1ZXM8dHlwZW5h
bWUgRDNEVG9DVHlwZTxQcmVmZXJlbmNlUnVsZTwgVmVydGV4VHlwZU1hcHBpbmc8ZnJvbVR5cGUs
IG5vcm1hbGl6ZWQ+ID46OnR5cGU+Ojp0eXBlLCBub3JtYWxpemVkID4gPgoreworcHJpdmF0ZToK
KyAgICBlbnVtIHsgZDNkdHlwZSA9IFByZWZlcmVuY2VSdWxlPCBWZXJ0ZXhUeXBlTWFwcGluZzxm
cm9tVHlwZSwgbm9ybWFsaXplZD4gPjo6dHlwZSB9OworICAgIGVudW0geyBkM2RzaXplID0gV2lk
ZW5SdWxlPGQzZHR5cGUsIHNpemU+OjpmaW5hbFdpZHRoIH07CisKK3B1YmxpYzoKKyAgICBlbnVt
IHsgY2FwZmxhZyA9IFZlcnRleFR5cGVGbGFnczxkM2R0eXBlLCBkM2RzaXplPjo6Y2FwZmxhZyB9
OworICAgIGVudW0geyBkZWNsZmxhZyA9IFZlcnRleFR5cGVGbGFnczxkM2R0eXBlLCBkM2RzaXpl
Pjo6ZGVjbGZsYWcgfTsKK307CisKKy8vIEluaXRpYWxpemUgYSBUcmFuc2xhdGlvbkluZm8KKyNk
ZWZpbmUgVFJBTlNMQVRJT04odHlwZSwgbm9ybSwgc2l6ZSwgcHJlZmVycmVkKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgQ29udmVydGVyPHR5cGUsIG5vcm0sIHNpemUsIHByZWZlcnJlZD46OmlkZW50aXR5
LCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQ29udmVydGVyPHR5cGUsIG5v
cm0sIHNpemUsIHByZWZlcnJlZD46OmZpbmFsU2l6ZSwgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgQ29udmVydGVyPHR5cGUsIG5vcm0sIHNpemUsIHByZWZlcnJlZD46OmNvbnZl
cnRBcnJheSwgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhdGljX2Nhc3Q8RDNE
REVDTFRZUEU+KENvbnZlcnRlcjx0eXBlLCBub3JtLCBzaXplLCBwcmVmZXJyZWQ+OjpkZWNsZmxh
ZykgIFwKKyAgICB9CisKKyNkZWZpbmUgVFJBTlNMQVRJT05fRk9SX1RZUEVfTk9STV9TSVpFKHR5
cGUsIG5vcm0sIHNpemUpICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQ29udmVydGVyPHR5cGUsIG5vcm0s
IHNpemUsIFVzZVByZWZlcnJlZD46OmNhcGZsYWcsIFwKKyAgICAgICAgVFJBTlNMQVRJT04odHlw
ZSwgbm9ybSwgc2l6ZSwgVXNlUHJlZmVycmVkKSwgICAgICAgIFwKKyAgICAgICAgVFJBTlNMQVRJ
T04odHlwZSwgbm9ybSwgc2l6ZSwgVXNlRmFsbGJhY2spICAgICAgICAgIFwKKyAgICB9CisKKyNk
ZWZpbmUgVFJBTlNMQVRJT05TX0ZPUl9UWVBFKHR5cGUpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgeyBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlw
ZSwgZmFsc2UsIDEpLCBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgZmFsc2Us
IDIpLCBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgZmFsc2UsIDMpLCBUUkFO
U0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgZmFsc2UsIDQpIH0sIFwKKyAgICAgICAg
eyBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgdHJ1ZSwgMSksIFRSQU5TTEFU
SU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCB0cnVlLCAyKSwgVFJBTlNMQVRJT05fRk9SX1RZ
UEVfTk9STV9TSVpFKHR5cGUsIHRydWUsIDMpLCBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJ
WkUodHlwZSwgdHJ1ZSwgNCkgfSwgICAgIFwKKyAgICB9CisKKyNkZWZpbmUgVFJBTlNMQVRJT05T
X0ZPUl9UWVBFX05PX05PUk0odHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgeyBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgZmFsc2UsIDEpLCBUUkFO
U0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgZmFsc2UsIDIpLCBUUkFOU0xBVElPTl9G
T1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgZmFsc2UsIDMpLCBUUkFOU0xBVElPTl9GT1JfVFlQRV9O
T1JNX1NJWkUodHlwZSwgZmFsc2UsIDQpIH0sIFwKKyAgICAgICAgeyBUUkFOU0xBVElPTl9GT1Jf
VFlQRV9OT1JNX1NJWkUodHlwZSwgZmFsc2UsIDEpLCBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JN
X1NJWkUodHlwZSwgZmFsc2UsIDIpLCBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlw
ZSwgZmFsc2UsIDMpLCBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgZmFsc2Us
IDQpIH0sIFwKKyAgICB9CisKK2NvbnN0IFZlcnRleEJ1ZmZlcjk6OlRyYW5zbGF0aW9uRGVzY3Jp
cHRpb24gVmVydGV4QnVmZmVyOTo6bVBvc3NpYmxlVHJhbnNsYXRpb25zW05VTV9HTF9WRVJURVhf
QVRUUklCX1RZUEVTXVsyXVs0XSA9IC8vIFtHTCB0eXBlcyBhcyBlbnVtZXJhdGVkIGJ5IHR5cGVJ
bmRleCgpXVtub3JtYWxpemVkXVtzaXplLTFdCit7CisgICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBF
KEdMX0JZVEUpLAorICAgIFRSQU5TTEFUSU9OU19GT1JfVFlQRShHTF9VTlNJR05FRF9CWVRFKSwK
KyAgICBUUkFOU0xBVElPTlNfRk9SX1RZUEUoR0xfU0hPUlQpLAorICAgIFRSQU5TTEFUSU9OU19G
T1JfVFlQRShHTF9VTlNJR05FRF9TSE9SVCksCisgICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBFX05P
X05PUk0oR0xfRklYRUQpLAorICAgIFRSQU5TTEFUSU9OU19GT1JfVFlQRV9OT19OT1JNKEdMX0ZM
T0FUKQorfTsKKwordm9pZCBWZXJ0ZXhCdWZmZXI5Ojppbml0aWFsaXplVHJhbnNsYXRpb25zKERX
T1JEIGRlY2xUeXBlcykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IE5VTV9H
TF9WRVJURVhfQVRUUklCX1RZUEVTOyBpKyspCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBqID0gMDsgaiA8IDI7IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgayA9IDA7IGsgPCA0OyBrKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKG1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tpXVtqXVtrXS5jYXBzRmxhZyA9PSAwIHx8IChk
ZWNsVHlwZXMgJiBtUG9zc2libGVUcmFuc2xhdGlvbnNbaV1bal1ba10uY2Fwc0ZsYWcpICE9IDAp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRm9ybWF0Q29udmVydGVy
c1tpXVtqXVtrXSA9IG1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tpXVtqXVtrXS5wcmVmZXJyZWRDb252
ZXJzaW9uOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRm9ybWF0Q29udmVydGVyc1tpXVtqXVtr
XSA9IG1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tpXVtqXVtrXS5mYWxsYmFja0NvbnZlcnNpb247Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit1
bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyOTo6dHlwZUluZGV4KEdMZW51bSB0eXBlKQoreworICAg
IHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0JZVEU6IHJldHVybiAwOworICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiByZXR1cm4gMTsKKyAgICAgIGNhc2UgR0xfU0hPUlQ6
IHJldHVybiAyOworICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDogcmV0dXJuIDM7CisgICAg
ICBjYXNlIEdMX0ZJWEVEOiByZXR1cm4gNDsKKyAgICAgIGNhc2UgR0xfRkxPQVQ6IHJldHVybiA1
OworCisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyByZXR1cm4gNTsKKyAgICB9Cit9CisK
K2NvbnN0IFZlcnRleEJ1ZmZlcjk6OkZvcm1hdENvbnZlcnRlciAmVmVydGV4QnVmZmVyOTo6Zm9y
bWF0Q29udmVydGVyKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSkKK3sKKyAg
ICByZXR1cm4gbUZvcm1hdENvbnZlcnRlcnNbdHlwZUluZGV4KGF0dHJpYnV0ZS5tVHlwZSldW2F0
dHJpYnV0ZS5tTm9ybWFsaXplZF1bYXR0cmlidXRlLm1TaXplIC0gMV07Cit9CisKK3Vuc2lnbmVk
IGludCBWZXJ0ZXhCdWZmZXI5OjpzcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1
dGUgJmF0dHJpYiwgc3RkOjpzaXplX3QgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKQoreworICAg
IHVuc2lnbmVkIGludCBlbGVtZW50U2l6ZSA9IGZvcm1hdENvbnZlcnRlcihhdHRyaWIpLm91dHB1
dEVsZW1lbnRTaXplOworCisgICAgaWYgKGluc3RhbmNlcyA9PSAwIHx8IGF0dHJpYi5tRGl2aXNv
ciA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRTaXplICogY291bnQ7CisgICAg
fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBlbGVtZW50U2l6ZSAqICgoaW5zdGFu
Y2VzICsgYXR0cmliLm1EaXZpc29yIC0gMSkgLyBhdHRyaWIubURpdmlzb3IpOworICAgIH0KK30K
KworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9WZXJ0ZXhCdWZmZXI5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZl
cjkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gVmVydGV4QnVmZmVyOS5oOiBEZWZpbmVzIHRoZSBEM0Q5IFZlcnRleEJ1ZmZlciBpbXBsZW1l
bnRhdGlvbi4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfVkVSVEVYQlVGRkVSOV9IXwor
I2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJfVkVSVEVYQlVGRkVSOV9IXworCisjaW5jbHVkZSAi
bGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5oIgorCituYW1lc3BhY2UgcngKK3sKK2Ns
YXNzIFJlbmRlcmVyOTsKKworY2xhc3MgVmVydGV4QnVmZmVyOSA6IHB1YmxpYyBWZXJ0ZXhCdWZm
ZXIKK3sKKyAgcHVibGljOgorICAgIGV4cGxpY2l0IFZlcnRleEJ1ZmZlcjkocng6OlJlbmRlcmVy
OSAqY29uc3QgcmVuZGVyZXIpOworICAgIHZpcnR1YWwgflZlcnRleEJ1ZmZlcjkoKTsKKworICAg
IHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKHVuc2lnbmVkIGludCBzaXplLCBib29sIGR5bmFtaWNV
c2FnZSk7CisKKyAgICBzdGF0aWMgVmVydGV4QnVmZmVyOSAqbWFrZVZlcnRleEJ1ZmZlcjkoVmVy
dGV4QnVmZmVyICp2ZXJ0ZXhCdWZmZXIpOworCisgICAgdmlydHVhbCBib29sIHN0b3JlVmVydGV4
QXR0cmlidXRlcyhjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMaW50IHN0YXJ0
LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQpOworICAgIHZpcnR1YWwgYm9v
bCBzdG9yZVJhd0RhdGEoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIHVuc2ln
bmVkIGludCBvZmZzZXQpOworCisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0U3BhY2VSZXF1
aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkgY291bnQsIEdM
c2l6ZWkgaW5zdGFuY2VzKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0NvbnZl
cnNpb24oY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdDsKKworICAgIHVu
c2lnbmVkIGludCBnZXRWZXJ0ZXhTaXplKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJp
YikgY29uc3Q7CisgICAgRDNEREVDTFRZUEUgZ2V0RGVjbFR5cGUoY29uc3QgZ2w6OlZlcnRleEF0
dHJpYnV0ZSAmYXR0cmliKSBjb25zdDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldEJ1
ZmZlclNpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0QnVmZmVyU2l6ZSh1bnNpZ25l
ZCBpbnQgc2l6ZSk7CisgICAgdmlydHVhbCBib29sIGRpc2NhcmQoKTsKKworICAgIElEaXJlY3Qz
RFZlcnRleEJ1ZmZlcjkgKmdldEJ1ZmZlcigpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKFZlcnRleEJ1ZmZlcjkpOworCisgICAgcng6OlJlbmRlcmVy
OSAqY29uc3QgbVJlbmRlcmVyOworCisgICAgSURpcmVjdDNEVmVydGV4QnVmZmVyOSAqbVZlcnRl
eEJ1ZmZlcjsKKyAgICB1bnNpZ25lZCBpbnQgbUJ1ZmZlclNpemU7CisgICAgYm9vbCBtRHluYW1p
Y1VzYWdlOworCisgICAgLy8gQXR0cmlidXRlIGZvcm1hdCBjb252ZXJzaW9uCisgICAgZW51bSB7
IE5VTV9HTF9WRVJURVhfQVRUUklCX1RZUEVTID0gNiB9OworCisgICAgc3RydWN0IEZvcm1hdENv
bnZlcnRlcgorICAgIHsKKyAgICAgICAgYm9vbCBpZGVudGl0eTsKKyAgICAgICAgc3RkOjpzaXpl
X3Qgb3V0cHV0RWxlbWVudFNpemU7CisgICAgICAgIHZvaWQgKCpjb252ZXJ0QXJyYXkpKGNvbnN0
IHZvaWQgKmluLCBzdGQ6OnNpemVfdCBzdHJpZGUsIHN0ZDo6c2l6ZV90IG4sIHZvaWQgKm91dCk7
CisgICAgICAgIEQzRERFQ0xUWVBFIGQzZERlY2xUeXBlOworICAgIH07CisKKyAgICBzdGF0aWMg
Ym9vbCBtVHJhbnNsYXRpb25zSW5pdGlhbGl6ZWQ7CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVRyYW5zbGF0aW9ucyhEV09SRCBkZWNsVHlwZXMpOworCisgICAgLy8gW0dMIHR5cGVzIGFzIGVu
dW1lcmF0ZWQgYnkgdHlwZUluZGV4KCldW25vcm1hbGl6ZWRdW3NpemUgLSAxXQorICAgIHN0YXRp
YyBGb3JtYXRDb252ZXJ0ZXIgbUZvcm1hdENvbnZlcnRlcnNbTlVNX0dMX1ZFUlRFWF9BVFRSSUJf
VFlQRVNdWzJdWzRdOworCisgICAgc3RydWN0IFRyYW5zbGF0aW9uRGVzY3JpcHRpb24KKyAgICB7
CisgICAgICAgIERXT1JEIGNhcHNGbGFnOworICAgICAgICBGb3JtYXRDb252ZXJ0ZXIgcHJlZmVy
cmVkQ29udmVyc2lvbjsKKyAgICAgICAgRm9ybWF0Q29udmVydGVyIGZhbGxiYWNrQ29udmVyc2lv
bjsKKyAgICB9OworCisgICAgLy8gVGhpcyB0YWJsZSBpcyB1c2VkIHRvIGdlbmVyYXRlIG1Gb3Jt
YXRDb252ZXJ0ZXJzLgorICAgIC8vIFtHTCB0eXBlcyBhcyBlbnVtZXJhdGVkIGJ5IHR5cGVJbmRl
eCgpXVtub3JtYWxpemVkXVtzaXplIC0gMV0KKyAgICBzdGF0aWMgY29uc3QgVHJhbnNsYXRpb25E
ZXNjcmlwdGlvbiBtUG9zc2libGVUcmFuc2xhdGlvbnNbTlVNX0dMX1ZFUlRFWF9BVFRSSUJfVFlQ
RVNdWzJdWzRdOworCisgICAgc3RhdGljIHVuc2lnbmVkIGludCB0eXBlSW5kZXgoR0xlbnVtIHR5
cGUpOworICAgIHN0YXRpYyBjb25zdCBGb3JtYXRDb252ZXJ0ZXIgJmZvcm1hdENvbnZlcnRlcihj
b25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUpOworCisgICAgc3RhdGljIHVuc2ln
bmVkIGludCBzcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwg
c3RkOjpzaXplX3QgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKTsKK307CisKK30KKworI2VuZGlm
IC8vIExJQkdMRVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVI5X0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjExLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL1ZlcnRleEJ1ZmZlcjExLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQxOCBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gVmVydGV4QnVmZmVyMTEuY3BwOiBEZWZpbmVzIHRoZSBEM0QxMSBWZXJ0ZXhC
dWZmZXIgaW1wbGVtZW50YXRpb24uCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVmVy
dGV4QnVmZmVyMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFn
ZS5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL0J1ZmZlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9SZW5kZXJlcjExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIK
KworbmFtZXNwYWNlIHJ4Cit7CisKK1ZlcnRleEJ1ZmZlcjExOjpWZXJ0ZXhCdWZmZXIxMShyeDo6
UmVuZGVyZXIxMSAqY29uc3QgcmVuZGVyZXIpIDogbVJlbmRlcmVyKHJlbmRlcmVyKQoreworICAg
IG1CdWZmZXIgPSBOVUxMOworICAgIG1CdWZmZXJTaXplID0gMDsKKyAgICBtRHluYW1pY1VzYWdl
ID0gZmFsc2U7Cit9CisKK1ZlcnRleEJ1ZmZlcjExOjp+VmVydGV4QnVmZmVyMTEoKQoreworICAg
IGlmIChtQnVmZmVyKQorICAgIHsKKyAgICAgICAgbUJ1ZmZlci0+UmVsZWFzZSgpOworICAgICAg
ICBtQnVmZmVyID0gTlVMTDsKKyAgICB9Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVyMTE6OmluaXRp
YWxpemUodW5zaWduZWQgaW50IHNpemUsIGJvb2wgZHluYW1pY1VzYWdlKQoreworICAgIGlmICht
QnVmZmVyKQorICAgIHsKKyAgICAgICAgbUJ1ZmZlci0+UmVsZWFzZSgpOworICAgICAgICBtQnVm
ZmVyID0gTlVMTDsKKyAgICB9CisKKyAgICB1cGRhdGVTZXJpYWwoKTsKKworICAgIGlmIChzaXpl
ID4gMCkKKyAgICB7CisgICAgICAgIElEM0QxMURldmljZSogZHhEZXZpY2UgPSBtUmVuZGVyZXIt
PmdldERldmljZSgpOworCisgICAgICAgIEQzRDExX0JVRkZFUl9ERVNDIGJ1ZmZlckRlc2M7Cisg
ICAgICAgIGJ1ZmZlckRlc2MuQnl0ZVdpZHRoID0gc2l6ZTsKKyAgICAgICAgYnVmZmVyRGVzYy5V
c2FnZSA9IEQzRDExX1VTQUdFX0RZTkFNSUM7CisgICAgICAgIGJ1ZmZlckRlc2MuQmluZEZsYWdz
ID0gRDNEMTFfQklORF9WRVJURVhfQlVGRkVSOworICAgICAgICBidWZmZXJEZXNjLkNQVUFjY2Vz
c0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsKKyAgICAgICAgYnVmZmVyRGVzYy5NaXNj
RmxhZ3MgPSAwOworICAgICAgICBidWZmZXJEZXNjLlN0cnVjdHVyZUJ5dGVTdHJpZGUgPSAwOwor
CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZHhEZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmYnVmZmVy
RGVzYywgTlVMTCwgJm1CdWZmZXIpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IG1CdWZmZXJTaXplID0gc2l6ZTsKKyAgICBtRHluYW1pY1VzYWdlID0gZHluYW1pY1VzYWdlOwor
ICAgIHJldHVybiB0cnVlOworfQorCitWZXJ0ZXhCdWZmZXIxMSAqVmVydGV4QnVmZmVyMTE6Om1h
a2VWZXJ0ZXhCdWZmZXIxMShWZXJ0ZXhCdWZmZXIgKnZldGV4QnVmZmVyKQoreworICAgIEFTU0VS
VChIQVNfRFlOQU1JQ19UWVBFKFZlcnRleEJ1ZmZlcjExKiwgdmV0ZXhCdWZmZXIpKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VmVydGV4QnVmZmVyMTEqPih2ZXRleEJ1ZmZlcik7Cit9CisKK2Jv
b2wgVmVydGV4QnVmZmVyMTE6OnN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVydGV4
QXR0cmlidXRlICZhdHRyaWIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLCB1bnNp
Z25lZCBpbnQgb2Zmc2V0KQoreworICAgIGlmIChtQnVmZmVyKQorICAgIHsKKyAgICAgICAgZ2w6
OkJ1ZmZlciAqYnVmZmVyID0gYXR0cmliLm1Cb3VuZEJ1ZmZlci5nZXQoKTsKKworICAgICAgICBp
bnQgaW5wdXRTdHJpZGUgPSBhdHRyaWIuc3RyaWRlKCk7CisgICAgICAgIGNvbnN0IFZlcnRleENv
bnZlcnRlciAmY29udmVydGVyID0gZ2V0VmVydGV4Q29udmVyc2lvbihhdHRyaWIpOworCisgICAg
ICAgIElEM0QxMURldmljZUNvbnRleHQgKmR4Q29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNl
Q29udGV4dCgpOworCisgICAgICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNv
dXJjZTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkeENvbnRleHQtPk1hcChtQnVmZmVyLCAw
LCBEM0QxMV9NQVBfV1JJVEVfTk9fT1ZFUldSSVRFLCAwLCAmbWFwcGVkUmVzb3VyY2UpOworICAg
ICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiVmVy
dGV4IGJ1ZmZlciBtYXAgZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0KTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGNoYXIqIG91dHB1dCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1hcHBlZFJlc291cmNlLnBEYXRhKSArIG9mZnNldDsK
KworICAgICAgICBjb25zdCBjaGFyICppbnB1dCA9IE5VTEw7CisgICAgICAgIGlmIChidWZmZXIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEJ1ZmZlclN0b3JhZ2UgKnN0b3JhZ2UgPSBidWZmZXIt
PmdldFN0b3JhZ2UoKTsKKyAgICAgICAgICAgIGlucHV0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KHN0b3JhZ2UtPmdldERhdGEoKSkgKyBzdGF0aWNfY2FzdDxpbnQ+KGF0dHJpYi5tT2Zmc2V0
KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlucHV0
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGF0dHJpYi5tUG9pbnRlcik7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmliLm1EaXZpc29yID09IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlucHV0ICs9IGlucHV0U3RyaWRlICogc3RhcnQ7CisgICAg
ICAgIH0KKworICAgICAgICBjb252ZXJ0ZXIuY29udmVyc2lvbkZ1bmMoaW5wdXQsIGlucHV0U3Ry
aWRlLCBjb3VudCwgb3V0cHV0KTsKKworICAgICAgICBkeENvbnRleHQtPlVubWFwKG1CdWZmZXIs
IDApOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBFUlIoIlZlcnRleCBidWZmZXIgbm90IGluaXRpYWxpemVkLiIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIFZlcnRleEJ1ZmZlcjExOjpzdG9yZVJhd0RhdGEo
Y29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGludCBvZmZzZXQp
Cit7CisgICAgaWYgKG1CdWZmZXIpCisgICAgeworICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0
ICpkeENvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKKworICAgICAgICBE
M0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7CisgICAgICAgIEhSRVNVTFQg
cmVzdWx0ID0gZHhDb250ZXh0LT5NYXAobUJ1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRFX05PX09W
RVJXUklURSwgMCwgJm1hcHBlZFJlc291cmNlKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIlZlcnRleCBidWZmZXIgbWFwIGZhaWxlZCB3
aXRoIGVycm9yIDB4JTA4eCIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKworICAgICAgICBjaGFyKiBidWZmZXJEYXRhID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KG1hcHBlZFJlc291cmNlLnBEYXRhKTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlckRhdGEgKyBvZmZz
ZXQsIGRhdGEsIHNpemUpOworCisgICAgICAgIGR4Q29udGV4dC0+VW5tYXAobUJ1ZmZlciwgMCk7
CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IEVSUigiVmVydGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXIxMTo6Z2V0U3BhY2VS
ZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkgY291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBp
bnN0YW5jZXMpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgaW50IGVsZW1lbnRTaXplID0gZ2V0VmVy
dGV4Q29udmVyc2lvbihhdHRyaWIpLm91dHB1dEVsZW1lbnRTaXplOworCisgICAgaWYgKGluc3Rh
bmNlcyA9PSAwIHx8IGF0dHJpYi5tRGl2aXNvciA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGVsZW1lbnRTaXplICogY291bnQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJl
dHVybiBlbGVtZW50U2l6ZSAqICgoaW5zdGFuY2VzICsgYXR0cmliLm1EaXZpc29yIC0gMSkgLyBh
dHRyaWIubURpdmlzb3IpOworICAgIH0KK30KKworYm9vbCBWZXJ0ZXhCdWZmZXIxMTo6cmVxdWly
ZXNDb252ZXJzaW9uKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3QKK3sK
KyAgICByZXR1cm4gIWdldFZlcnRleENvbnZlcnNpb24oYXR0cmliKS5pZGVudGl0eTsKK30KKwor
dW5zaWduZWQgaW50IFZlcnRleEJ1ZmZlcjExOjpnZXRCdWZmZXJTaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbUJ1ZmZlclNpemU7Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVyMTE6OnNldEJ1ZmZl
clNpemUodW5zaWduZWQgaW50IHNpemUpCit7CisgICAgaWYgKHNpemUgPiBtQnVmZmVyU2l6ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBpbml0aWFsaXplKHNpemUsIG1EeW5hbWljVXNhZ2UpOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9CisK
K2Jvb2wgVmVydGV4QnVmZmVyMTE6OmRpc2NhcmQoKQoreworICAgIGlmIChtQnVmZmVyKQorICAg
IHsKKyAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqZHhDb250ZXh0ID0gbVJlbmRlcmVyLT5n
ZXREZXZpY2VDb250ZXh0KCk7CisKKyAgICAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1h
cHBlZFJlc291cmNlOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGR4Q29udGV4dC0+TWFwKG1C
dWZmZXIsIDAsIEQzRDExX01BUF9XUklURV9ESVNDQVJELCAwLCAmbWFwcGVkUmVzb3VyY2UpOwor
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigi
VmVydGV4IGJ1ZmZlciBtYXAgZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0KTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGR4Q29udGV4dC0+
VW5tYXAobUJ1ZmZlciwgMCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIEVSUigiVmVydGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBWZXJ0ZXhC
dWZmZXIxMTo6Z2V0VmVydGV4U2l6ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGdldFZlcnRleENvbnZlcnNpb24oYXR0cmliKS5vdXRwdXRF
bGVtZW50U2l6ZTsKK30KKworRFhHSV9GT1JNQVQgVmVydGV4QnVmZmVyMTE6OmdldERYR0lGb3Jt
YXQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdAoreworICAgIHJldHVy
biBnZXRWZXJ0ZXhDb252ZXJzaW9uKGF0dHJpYikuZHhnaUZvcm1hdDsKK30KKworSUQzRDExQnVm
ZmVyICpWZXJ0ZXhCdWZmZXIxMTo6Z2V0QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUJ1
ZmZlcjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHVuc2lnbmVkIGludCBjb21wb25lbnRD
b3VudCwgYm9vbCB3aWRlbiwgYm9vbCBub3JtYWxpemVkPgorc3RhdGljIHZvaWQgY29weVZlcnRl
eERhdGEoY29uc3Qgdm9pZCAqaW5wdXQsIHVuc2lnbmVkIGludCBzdHJpZGUsIHVuc2lnbmVkIGlu
dCBjb3VudCwgdm9pZCAqb3V0cHV0KQoreworICAgIHVuc2lnbmVkIGludCBhdHRyaWJTaXplID0g
c2l6ZW9mKFQpICogY29tcG9uZW50Q291bnQ7CisKKyAgICBpZiAoYXR0cmliU2l6ZSA9PSBzdHJp
ZGUgJiYgIXdpZGVuKQorICAgIHsKKyAgICAgICAgbWVtY3B5KG91dHB1dCwgaW5wdXQsIGNvdW50
ICogYXR0cmliU2l6ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHVuc2lnbmVk
IGludCBvdXRwdXRTdHJpZGUgPSB3aWRlbiA/IDQgOiBjb21wb25lbnRDb3VudDsKKyAgICAgICAg
VCBkZWZhdWx0VmFsID0gbm9ybWFsaXplZCA/IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgp
IDogVCgxKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvdW50OyBp
KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFQgKm9mZnNldElucHV0ID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBUKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaW5wdXQp
ICsgaSAqIHN0cmlkZSk7CisgICAgICAgICAgICBUICpvZmZzZXRPdXRwdXQgPSByZWludGVycHJl
dF9jYXN0PFQqPihvdXRwdXQpICsgaSAqIG91dHB1dFN0cmlkZTsKKworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCBjb21wb25lbnRDb3VudDsgaisrKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIG9mZnNldE91dHB1dFtqXSA9IG9mZnNldElucHV0W2pdOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2lkZW4pCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgb2Zmc2V0T3V0cHV0WzNdID0gZGVmYXVsdFZhbDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGUgPHVuc2lnbmVkIGludCBjb21wb25l
bnRDb3VudD4KK3N0YXRpYyB2b2lkIGNvcHlGaXhlZFZlcnRleERhdGEoY29uc3Qgdm9pZCogaW5w
dXQsIHVuc2lnbmVkIGludCBzdHJpZGUsIHVuc2lnbmVkIGludCBjb3VudCwgdm9pZCogb3V0cHV0
KQoreworICAgIHN0YXRpYyBjb25zdCBmbG9hdCBkaXZpc29yID0gMS4wZiAvICgxIDw8IDE2KTsK
KworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICB7Cisg
ICAgICAgIGNvbnN0IEdMZml4ZWQqIG9mZnNldElucHV0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBHTGZpeGVkKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaW5wdXQpICsgc3RyaWRl
ICogaSk7CisgICAgICAgIGZsb2F0KiBvZmZzZXRPdXRwdXQgPSByZWludGVycHJldF9jYXN0PGZs
b2F0Kj4ob3V0cHV0KSArIGkgKiBjb21wb25lbnRDb3VudDsKKworICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBqID0gMDsgaiA8IGNvbXBvbmVudENvdW50OyBqKyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG9mZnNldE91dHB1dFtqXSA9IHN0YXRpY19jYXN0PGZsb2F0PihvZmZzZXRJbnB1dFtq
XSkgKiBkaXZpc29yOworICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdW5zaWduZWQgaW50IGNvbXBvbmVudENvdW50LCBib29sIG5vcm1hbGl6ZWQ+CitzdGF0aWMg
dm9pZCBjb3B5VG9GbG9hdFZlcnRleERhdGEoY29uc3Qgdm9pZCogaW5wdXQsIHVuc2lnbmVkIGlu
dCBzdHJpZGUsIHVuc2lnbmVkIGludCBjb3VudCwgdm9pZCogb3V0cHV0KQoreworICAgIHR5cGVk
ZWYgc3RkOjpudW1lcmljX2xpbWl0czxUPiBOTDsKKworICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIGNvbnN0IFQgKm9mZnNldElucHV0
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oaW5wdXQpICsgc3RyaWRlICogaSk7CisgICAgICAgIGZsb2F0ICpvZmZzZXRPdXRwdXQgPSBy
ZWludGVycHJldF9jYXN0PGZsb2F0Kj4ob3V0cHV0KSArIGkgKiBjb21wb25lbnRDb3VudDsKKwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8IGNvbXBvbmVudENvdW50OyBqKysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChub3JtYWxpemVkKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGlmIChOTDo6aXNfc2lnbmVkKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgZGl2aXNvciA9IDEuMGYgLyAoMiAqIHN0YXRp
Y19jYXN0PGZsb2F0PihOTDo6bWF4KCkpICsgMSk7CisgICAgICAgICAgICAgICAgICAgIG9mZnNl
dE91dHB1dFtqXSA9ICgyICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KG9mZnNldElucHV0W2pdKSArIDEp
ICogZGl2aXNvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0T3V0cHV0W2pdID0gIHN0
YXRpY19jYXN0PGZsb2F0PihvZmZzZXRJbnB1dFtqXSkgLyBOTDo6bWF4KCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIG9mZnNldE91dHB1dFtqXSA9ICBzdGF0aWNfY2FzdDxmbG9hdD4ob2Zm
c2V0SW5wdXRbal0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitjb25z
dCBWZXJ0ZXhCdWZmZXIxMTo6VmVydGV4Q29udmVydGVyIFZlcnRleEJ1ZmZlcjExOjptUG9zc2li
bGVUcmFuc2xhdGlvbnNbTlVNX0dMX1ZFUlRFWF9BVFRSSUJfVFlQRVNdWzJdWzRdID0KK3sKKyAg
ICB7IC8vIEdMX0JZVEUKKyAgICAgICAgeyAvLyB1bm5vcm1hbGl6ZWQKKyAgICAgICAgICAgIHsg
JmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTGJ5dGUsIDEsIGZhbHNlPiwgZmFsc2UsIERYR0lfRk9S
TUFUX1IzMl9GTE9BVCwgNCB9LAorICAgICAgICAgICAgeyAmY29weVRvRmxvYXRWZXJ0ZXhEYXRh
PEdMYnl0ZSwgMiwgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCA4IH0s
CisgICAgICAgICAgICB7ICZjb3B5VG9GbG9hdFZlcnRleERhdGE8R0xieXRlLCAzLCBmYWxzZT4s
IGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsIDEyIH0sCisgICAgICAgICAgICB7
ICZjb3B5VG9GbG9hdFZlcnRleERhdGE8R0xieXRlLCA0LCBmYWxzZT4sIGZhbHNlLCBEWEdJX0ZP
Uk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsIDE2IH0sCisgICAgICAgIH0sCisgICAgICAgIHsgLy8g
bm9ybWFsaXplZAorICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8R0xieXRlLCAxLCBmYWxz
ZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9STUFUX1I4X1NOT1JNLCAxIH0sCisgICAgICAgICAgICB7
ICZjb3B5VmVydGV4RGF0YTxHTGJ5dGUsIDIsIGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhHSV9GT1JN
QVRfUjhHOF9TTk9STSwgMiB9LAorICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8R0xieXRl
LCAzLCB0cnVlLCB0cnVlPiwgZmFsc2UsIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLCA0IH0s
CisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxHTGJ5dGUsIDQsIGZhbHNlLCB0cnVlPiwg
dHJ1ZSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0sIDQgfSwKKyAgICAgICAgfSwKKyAgICB9
LAorICAgIHsgLy8gR0xfVU5TSUdORURfQllURQorICAgICAgICB7IC8vIHVubm9ybWFsaXplZAor
ICAgICAgICAgICAgeyAmY29weVRvRmxvYXRWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDEsIGZhbHNlPiwg
ZmFsc2UsIERYR0lfRk9STUFUX1IzMl9GTE9BVCwgNCB9LAorICAgICAgICAgICAgeyAmY29weVRv
RmxvYXRWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDIsIGZhbHNlPiwgZmFsc2UsIERYR0lfRk9STUFUX1Iz
MkczMl9GTE9BVCwgOCB9LAorICAgICAgICAgICAgeyAmY29weVRvRmxvYXRWZXJ0ZXhEYXRhPEdM
dWJ5dGUsIDMsIGZhbHNlPiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgMTIg
fSwKKyAgICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTHVieXRlLCA0LCBmYWxz
ZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsIDE2IH0sCisgICAgICAg
IH0sCisgICAgICAgIHsgLy8gbm9ybWFsaXplZAorICAgICAgICAgICAgeyAmY29weVZlcnRleERh
dGE8R0x1Ynl0ZSwgMSwgZmFsc2UsIHRydWU+LCB0cnVlLCBEWEdJX0ZPUk1BVF9SOF9VTk9STSwg
MSB9LAorICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8R0x1Ynl0ZSwgMiwgZmFsc2UsIHRy
dWU+LCB0cnVlLCBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNLCAyIH0sCisgICAgICAgICAgICB7ICZj
b3B5VmVydGV4RGF0YTxHTHVieXRlLCAzLCB0cnVlLCB0cnVlPiwgZmFsc2UsIERYR0lfRk9STUFU
X1I4RzhCOEE4X1VOT1JNLCA0IH0sCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxHTHVi
eXRlLCA0LCBmYWxzZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLCA0
IH0sCisgICAgICAgIH0sCisgICAgfSwKKyAgICB7IC8vIEdMX1NIT1JUCisgICAgICAgIHsgLy8g
dW5ub3JtYWxpemVkCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9hdFZlcnRleERhdGE8R0xzaG9y
dCwgMSwgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCA0IH0sCisgICAgICAg
ICAgICB7ICZjb3B5VG9GbG9hdFZlcnRleERhdGE8R0xzaG9ydCwgMiwgZmFsc2U+LCBmYWxzZSwg
RFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCA4IH0sCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9h
dFZlcnRleERhdGE8R0xzaG9ydCwgMywgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyX0ZMT0FULCAxMiB9LAorICAgICAgICAgICAgeyAmY29weVRvRmxvYXRWZXJ0ZXhEYXRhPEdM
c2hvcnQsIDQsIGZhbHNlPiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwg
MTYgfSwKKyAgICAgICAgfSwKKyAgICAgICAgeyAvLyBub3JtYWxpemVkCisgICAgICAgICAgICB7
ICZjb3B5VmVydGV4RGF0YTxHTHNob3J0LCAxLCBmYWxzZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9S
TUFUX1IxNl9TTk9STSwgMiB9LAorICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8R0xzaG9y
dCwgMiwgZmFsc2UsIHRydWU+LCB0cnVlLCBEWEdJX0ZPUk1BVF9SMTZHMTZfU05PUk0sIDQgfSwK
KyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMc2hvcnQsIDMsIHRydWUsIHRydWU+LCBm
YWxzZSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNLCA4IH0sCisgICAgICAgICAgICB7
ICZjb3B5VmVydGV4RGF0YTxHTHNob3J0LCA0LCBmYWxzZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9S
TUFUX1IxNkcxNkIxNkExNl9TTk9STSwgOCB9LAorICAgICAgICB9LAorICAgIH0sCisgICAgeyAv
LyBHTF9VTlNJR05FRF9TSE9SVAorICAgICAgICB7IC8vIHVubm9ybWFsaXplZAorICAgICAgICAg
ICAgeyAmY29weVRvRmxvYXRWZXJ0ZXhEYXRhPEdMdXNob3J0LCAxLCBmYWxzZT4sIGZhbHNlLCBE
WEdJX0ZPUk1BVF9SMzJfRkxPQVQsIDQgfSwKKyAgICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVy
dGV4RGF0YTxHTHVzaG9ydCwgMiwgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZM
T0FULCA4IH0sCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9hdFZlcnRleERhdGE8R0x1c2hvcnQs
IDMsIGZhbHNlPiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgMTIgfSwKKyAg
ICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTHVzaG9ydCwgNCwgZmFsc2U+LCBm
YWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAxNiB9LAorICAgICAgICB9LAor
ICAgICAgICB7IC8vIG5vcm1hbGl6ZWQKKyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdM
dXNob3J0LCAxLCBmYWxzZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9STUFUX1IxNl9VTk9STSwgMiB9
LAorICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8R0x1c2hvcnQsIDIsIGZhbHNlLCB0cnVl
PiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNLCA0IH0sCisgICAgICAgICAgICB7ICZj
b3B5VmVydGV4RGF0YTxHTHVzaG9ydCwgMywgdHJ1ZSwgdHJ1ZT4sIGZhbHNlLCBEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfVU5PUk0sIDggfSwKKyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRh
PEdMdXNob3J0LCA0LCBmYWxzZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9VTk9STSwgOCB9LAorICAgICAgICB9LAorICAgIH0sCisgICAgeyAvLyBHTF9GSVhFRAorICAg
ICAgICB7IC8vIHVubm9ybWFsaXplZAorICAgICAgICAgICAgeyAmY29weUZpeGVkVmVydGV4RGF0
YTwxPiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMl9GTE9BVCwgNCB9LAorICAgICAgICAgICAgeyAm
Y29weUZpeGVkVmVydGV4RGF0YTwyPiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwg
OCB9LAorICAgICAgICAgICAgeyAmY29weUZpeGVkVmVydGV4RGF0YTwzPiwgZmFsc2UsIERYR0lf
Rk9STUFUX1IzMkczMkIzMl9GTE9BVCwgMTIgfSwKKyAgICAgICAgICAgIHsgJmNvcHlGaXhlZFZl
cnRleERhdGE8ND4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsIDE2IH0s
CisgICAgICAgIH0sCisgICAgICAgIHsgLy8gbm9ybWFsaXplZAorICAgICAgICAgICAgeyAmY29w
eUZpeGVkVmVydGV4RGF0YTwxPiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMl9GTE9BVCwgNCB9LAor
ICAgICAgICAgICAgeyAmY29weUZpeGVkVmVydGV4RGF0YTwyPiwgZmFsc2UsIERYR0lfRk9STUFU
X1IzMkczMl9GTE9BVCwgOCB9LAorICAgICAgICAgICAgeyAmY29weUZpeGVkVmVydGV4RGF0YTwz
PiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgMTIgfSwKKyAgICAgICAgICAg
IHsgJmNvcHlGaXhlZFZlcnRleERhdGE8ND4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJB
MzJfRkxPQVQsIDE2IH0sCisgICAgICAgIH0sCisgICAgfSwKKyAgICB7IC8vIEdMX0ZMT0FUCisg
ICAgICAgIHsgLy8gdW5ub3JtYWxpemVkCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxH
TGZsb2F0LCAxLCBmYWxzZSwgZmFsc2U+LCB0cnVlLCBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsIDQg
fSwKKyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMZmxvYXQsIDIsIGZhbHNlLCBmYWxz
ZT4sIHRydWUsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgOCB9LAorICAgICAgICAgICAgeyAm
Y29weVZlcnRleERhdGE8R0xmbG9hdCwgMywgZmFsc2UsIGZhbHNlPiwgdHJ1ZSwgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyX0ZMT0FULCAxMiB9LAorICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8
R0xmbG9hdCwgNCwgZmFsc2UsIGZhbHNlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMy
X0ZMT0FULCAxNiB9LAorICAgICAgICB9LAorICAgICAgICB7IC8vIG5vcm1hbGl6ZWQKKyAgICAg
ICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMZmxvYXQsIDEsIGZhbHNlLCBmYWxzZT4sIHRydWUs
IERYR0lfRk9STUFUX1IzMl9GTE9BVCwgNCB9LAorICAgICAgICAgICAgeyAmY29weVZlcnRleERh
dGE8R0xmbG9hdCwgMiwgZmFsc2UsIGZhbHNlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZM
T0FULCA4IH0sCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxHTGZsb2F0LCAzLCBmYWxz
ZSwgZmFsc2U+LCB0cnVlLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsIDEyIH0sCisgICAg
ICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxHTGZsb2F0LCA0LCBmYWxzZSwgZmFsc2U+LCB0cnVl
LCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsIDE2IH0sCisgICAgICAgIH0sCisgICAg
fSwKK307CisKK2NvbnN0IFZlcnRleEJ1ZmZlcjExOjpWZXJ0ZXhDb252ZXJ0ZXIgJlZlcnRleEJ1
ZmZlcjExOjpnZXRWZXJ0ZXhDb252ZXJzaW9uKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0
dHJpYnV0ZSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgdHlwZUluZGV4ID0gMDsKKyAgICBzd2l0Y2gg
KGF0dHJpYnV0ZS5tVHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0JZVEU6ICAgICAgICAgICAg
IHR5cGVJbmRleCA9IDA7IGJyZWFrOworICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAgICB0
eXBlSW5kZXggPSAxOyBicmVhazsKKyAgICAgIGNhc2UgR0xfU0hPUlQ6ICAgICAgICAgICAgdHlw
ZUluZGV4ID0gMjsgYnJlYWs7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOiAgIHR5cGVJ
bmRleCA9IDM7IGJyZWFrOworICAgICAgY2FzZSBHTF9GSVhFRDogICAgICAgICAgICB0eXBlSW5k
ZXggPSA0OyBicmVhazsKKyAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgICAgICAgdHlwZUluZGV4
ID0gNTsgYnJlYWs7CisgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7IGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBtUG9zc2libGVUcmFuc2xhdGlvbnNbdHlw
ZUluZGV4XVthdHRyaWJ1dGUubU5vcm1hbGl6ZWQgPyAxIDogMF1bYXR0cmlidXRlLm1TaXplIC0g
MV07Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjExLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Zl
cnRleEJ1ZmZlcjExLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyBWZXJ0ZXhCdWZmZXIxMS5oOiBEZWZpbmVzIHRoZSBEM0QxMSBWZXJ0ZXhCdWZmZXIg
aW1wbGVtZW50YXRpb24uCisKKyNpZm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX1ZFUlRFWEJVRkZF
UjExX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVIxMV9IXworCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5oIgorCituYW1lc3BhY2Ug
cngKK3sKK2NsYXNzIFJlbmRlcmVyMTE7CisKK2NsYXNzIFZlcnRleEJ1ZmZlcjExIDogcHVibGlj
IFZlcnRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgVmVydGV4QnVmZmVyMTEo
cng6OlJlbmRlcmVyMTEgKmNvbnN0IHJlbmRlcmVyKTsKKyAgICB2aXJ0dWFsIH5WZXJ0ZXhCdWZm
ZXIxMSgpOworCisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUodW5zaWduZWQgaW50IHNpemUs
IGJvb2wgZHluYW1pY1VzYWdlKTsKKworICAgIHN0YXRpYyBWZXJ0ZXhCdWZmZXIxMSAqbWFrZVZl
cnRleEJ1ZmZlcjExKFZlcnRleEJ1ZmZlciAqdmV0ZXhCdWZmZXIpOworCisgICAgdmlydHVhbCBi
b29sIHN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRy
aWIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQpOworICAgIHZp
cnR1YWwgYm9vbCBzdG9yZVJhd0RhdGEoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgaW50IHNp
emUsIHVuc2lnbmVkIGludCBvZmZzZXQpOworCisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0
U3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkg
Y291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCByZXF1
aXJlc0NvbnZlcnNpb24oY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdDsK
KworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldEJ1ZmZlclNpemUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgc2V0QnVmZmVyU2l6ZSh1bnNpZ25lZCBpbnQgc2l6ZSk7CisgICAgdmlydHVh
bCBib29sIGRpc2NhcmQoKTsKKworICAgIHVuc2lnbmVkIGludCBnZXRWZXJ0ZXhTaXplKGNvbnN0
IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3Q7CisgICAgRFhHSV9GT1JNQVQgZ2V0
RFhHSUZvcm1hdChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0OworCisg
ICAgSUQzRDExQnVmZmVyICpnZXRCdWZmZXIoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIERJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihWZXJ0ZXhCdWZmZXIxMSk7CisKKyAgICByeDo6UmVuZGVy
ZXIxMSAqY29uc3QgbVJlbmRlcmVyOworCisgICAgSUQzRDExQnVmZmVyICptQnVmZmVyOworICAg
IHVuc2lnbmVkIGludCBtQnVmZmVyU2l6ZTsKKyAgICBib29sIG1EeW5hbWljVXNhZ2U7CisKKyAg
ICB0eXBlZGVmIHZvaWQgKCpWZXJ0ZXhDb252ZXJzaW9uRnVuY3Rpb24pKGNvbnN0IHZvaWQgKiwg
dW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHZvaWQgKik7CisgICAgc3RydWN0IFZlcnRleENv
bnZlcnRlcgorICAgIHsKKyAgICAgICAgVmVydGV4Q29udmVyc2lvbkZ1bmN0aW9uIGNvbnZlcnNp
b25GdW5jOworICAgICAgICBib29sIGlkZW50aXR5OworICAgICAgICBEWEdJX0ZPUk1BVCBkeGdp
Rm9ybWF0OworICAgICAgICB1bnNpZ25lZCBpbnQgb3V0cHV0RWxlbWVudFNpemU7CisgICAgfTsK
KworICAgIGVudW0geyBOVU1fR0xfVkVSVEVYX0FUVFJJQl9UWVBFUyA9IDYgfTsKKworICAgIC8v
IFRoaXMgdGFibGUgaXMgdXNlZCB0byBnZW5lcmF0ZSBtQXR0cmlidXRlVHlwZXMuCisgICAgc3Rh
dGljIGNvbnN0IFZlcnRleENvbnZlcnRlciBtUG9zc2libGVUcmFuc2xhdGlvbnNbTlVNX0dMX1ZF
UlRFWF9BVFRSSUJfVFlQRVNdWzJdWzRdOyAvLyBbR0wgdHlwZXMgYXMgZW51bWVyYXRlZCBieSB0
eXBlSW5kZXgoKV1bbm9ybWFsaXplZF1bc2l6ZSAtIDFdCisKKyAgICBzdGF0aWMgY29uc3QgVmVy
dGV4Q29udmVydGVyICZnZXRWZXJ0ZXhDb252ZXJzaW9uKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1
dGUgJmF0dHJpYnV0ZSk7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJf
VkVSVEVYQlVGRkVSMTFfSF8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9WZXJ0ZXhCdWZmZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI0NSBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisvLyBWZXJ0ZXhCdWZmZXIuY3BwOiBEZWZpbmVzIHRoZSBhYnN0cmFjdCBW
ZXJ0ZXhCdWZmZXIgY2xhc3MgYW5kIFZlcnRleEJ1ZmZlckludGVyZmFjZQorLy8gY2xhc3Mgd2l0
aCBkZXJpdmF0aW9ucywgY2xhc3NlcyB0aGF0IHBlcmZvcm0gZ3JhcGhpY3MgQVBJIGFnbm9zdGlj
IHZlcnRleCBidWZmZXIgb3BlcmF0aW9ucy4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9WZXJ0ZXhCdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIu
aCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvQ29udGV4dC5oIgorCituYW1lc3BhY2UgcngKK3sKKwor
dW5zaWduZWQgaW50IFZlcnRleEJ1ZmZlcjo6bU5leHRTZXJpYWwgPSAxOworCitWZXJ0ZXhCdWZm
ZXI6OlZlcnRleEJ1ZmZlcigpCit7CisgICAgdXBkYXRlU2VyaWFsKCk7Cit9CisKK1ZlcnRleEJ1
ZmZlcjo6flZlcnRleEJ1ZmZlcigpCit7Cit9CisKK3ZvaWQgVmVydGV4QnVmZmVyOjp1cGRhdGVT
ZXJpYWwoKQoreworICAgIG1TZXJpYWwgPSBtTmV4dFNlcmlhbCsrOworfQorCit1bnNpZ25lZCBp
bnQgVmVydGV4QnVmZmVyOjpnZXRTZXJpYWwoKSBjb25zdAoreworICAgIHJldHVybiBtU2VyaWFs
OworfQorCitWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OlZlcnRleEJ1ZmZlckludGVyZmFjZShyeDo6
UmVuZGVyZXIgKnJlbmRlcmVyLCBib29sIGR5bmFtaWMpIDogbVJlbmRlcmVyKHJlbmRlcmVyKQor
eworICAgIG1EeW5hbWljID0gZHluYW1pYzsKKyAgICBtV3JpdGVQb3NpdGlvbiA9IDA7CisgICAg
bVJlc2VydmVkU3BhY2UgPSAwOworCisgICAgbVZlcnRleEJ1ZmZlciA9IHJlbmRlcmVyLT5jcmVh
dGVWZXJ0ZXhCdWZmZXIoKTsKK30KKworVmVydGV4QnVmZmVySW50ZXJmYWNlOjp+VmVydGV4QnVm
ZmVySW50ZXJmYWNlKCkKK3sKKyAgICBkZWxldGUgbVZlcnRleEJ1ZmZlcjsKK30KKwordW5zaWdu
ZWQgaW50IFZlcnRleEJ1ZmZlckludGVyZmFjZTo6Z2V0U2VyaWFsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbVZlcnRleEJ1ZmZlci0+Z2V0U2VyaWFsKCk7Cit9CisKK3Vuc2lnbmVkIGludCBWZXJ0
ZXhCdWZmZXJJbnRlcmZhY2U6OmdldEJ1ZmZlclNpemUoKSBjb25zdAoreworICAgIHJldHVybiBt
VmVydGV4QnVmZmVyLT5nZXRCdWZmZXJTaXplKCk7Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVySW50
ZXJmYWNlOjpzZXRCdWZmZXJTaXplKHVuc2lnbmVkIGludCBzaXplKQoreworICAgIGlmIChtVmVy
dGV4QnVmZmVyLT5nZXRCdWZmZXJTaXplKCkgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
VmVydGV4QnVmZmVyLT5pbml0aWFsaXplKHNpemUsIG1EeW5hbWljKTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1WZXJ0ZXhCdWZmZXItPnNldEJ1ZmZlclNpemUoc2l6
ZSk7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVySW50ZXJmYWNlOjpnZXRX
cml0ZVBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVdyaXRlUG9zaXRpb247Cit9CisK
K3ZvaWQgVmVydGV4QnVmZmVySW50ZXJmYWNlOjpzZXRXcml0ZVBvc2l0aW9uKHVuc2lnbmVkIGlu
dCB3cml0ZVBvc2l0aW9uKQoreworICAgIG1Xcml0ZVBvc2l0aW9uID0gd3JpdGVQb3NpdGlvbjsK
K30KKworYm9vbCBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OmRpc2NhcmQoKQoreworICAgIHJldHVy
biBtVmVydGV4QnVmZmVyLT5kaXNjYXJkKCk7Cit9CisKK2ludCBWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2U6OnN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRy
aWIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcykKK3sKKyAg
ICBpZiAoIXJlc2VydmVTcGFjZShtUmVzZXJ2ZWRTcGFjZSkpCisgICAgeworICAgICAgICByZXR1
cm4gLTE7CisgICAgfQorICAgIG1SZXNlcnZlZFNwYWNlID0gMDsKKworICAgIGlmICghbVZlcnRl
eEJ1ZmZlci0+c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGF0dHJpYiwgc3RhcnQsIGNvdW50LCBpbnN0
YW5jZXMsIG1Xcml0ZVBvc2l0aW9uKSkKKyAgICB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9
CisKKyAgICBpbnQgb2xkV3JpdGVQb3MgPSBzdGF0aWNfY2FzdDxpbnQ+KG1Xcml0ZVBvc2l0aW9u
KTsKKyAgICBtV3JpdGVQb3NpdGlvbiArPSBtVmVydGV4QnVmZmVyLT5nZXRTcGFjZVJlcXVpcmVk
KGF0dHJpYiwgY291bnQsIGluc3RhbmNlcyk7CisKKyAgICByZXR1cm4gb2xkV3JpdGVQb3M7Cit9
CisKK2ludCBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBk
YXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSkKK3sKKyAgICBpZiAoIXJlc2VydmVTcGFjZShtUmVzZXJ2
ZWRTcGFjZSkpCisgICAgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIG1SZXNlcnZl
ZFNwYWNlID0gMDsKKworICAgIGlmICghbVZlcnRleEJ1ZmZlci0+c3RvcmVSYXdEYXRhKGRhdGEs
IHNpemUsIG1Xcml0ZVBvc2l0aW9uKSkKKyAgICB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9
CisKKyAgICBpbnQgb2xkV3JpdGVQb3MgPSBzdGF0aWNfY2FzdDxpbnQ+KG1Xcml0ZVBvc2l0aW9u
KTsKKyAgICBtV3JpdGVQb3NpdGlvbiArPSBzaXplOworCisgICAgcmV0dXJuIG9sZFdyaXRlUG9z
OworfQorCitib29sIFZlcnRleEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2ZVZlcnRleFNwYWNlKGNv
bnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgR0xzaXplaSBjb3VudCwgR0xzaXpl
aSBpbnN0YW5jZXMpCit7CisgICAgdW5zaWduZWQgaW50IHJlcXVpcmVkU3BhY2UgPSBtVmVydGV4
QnVmZmVyLT5nZXRTcGFjZVJlcXVpcmVkKGF0dHJpYnV0ZSwgY291bnQsIGluc3RhbmNlcyk7CisK
KyAgICAvLyBQcm90ZWN0IGFnYWluc3QgaW50ZWdlciBvdmVyZmxvdworICAgIGlmIChtUmVzZXJ2
ZWRTcGFjZSArIHJlcXVpcmVkU3BhY2UgPCBtUmVzZXJ2ZWRTcGFjZSkKKyAgICB7CisgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbVJlc2VydmVkU3BhY2UgKz0gcmVxdWlyZWRT
cGFjZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6
OnJlc2VydmVSYXdEYXRhU3BhY2UodW5zaWduZWQgaW50IHNpemUpCit7CisgICAgLy8gUHJvdGVj
dCBhZ2FpbnN0IGludGVnZXIgb3ZlcmZsb3cKKyAgICBpZiAobVJlc2VydmVkU3BhY2UgKyBzaXpl
IDwgbVJlc2VydmVkU3BhY2UpCisgICAgeworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIG1SZXNlcnZlZFNwYWNlICs9IHNpemU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1Zl
cnRleEJ1ZmZlciogVmVydGV4QnVmZmVySW50ZXJmYWNlOjpnZXRWZXJ0ZXhCdWZmZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtVmVydGV4QnVmZmVyOworfQorCisKK1N0cmVhbWluZ1ZlcnRleEJ1
ZmZlckludGVyZmFjZTo6U3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlKHJ4OjpSZW5kZXJl
ciAqcmVuZGVyZXIsIHN0ZDo6c2l6ZV90IGluaXRpYWxTaXplKSA6IFZlcnRleEJ1ZmZlckludGVy
ZmFjZShyZW5kZXJlciwgdHJ1ZSkKK3sKKyAgICBzZXRCdWZmZXJTaXplKGluaXRpYWxTaXplKTsK
K30KKworU3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlOjp+U3RyZWFtaW5nVmVydGV4QnVm
ZmVySW50ZXJmYWNlKCkKK3sKK30KKworYm9vbCBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2U6OnJlc2VydmVTcGFjZSh1bnNpZ25lZCBpbnQgc2l6ZSkKK3sKKyAgICBib29sIHJlc3VsdCA9
IHRydWU7CisgICAgdW5zaWduZWQgaW50IGN1ckJ1ZmZlclNpemUgPSBnZXRCdWZmZXJTaXplKCk7
CisgICAgaWYgKHNpemUgPiBjdXJCdWZmZXJTaXplKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0g
c2V0QnVmZmVyU2l6ZShzdGQ6Om1heChzaXplLCAzICogY3VyQnVmZmVyU2l6ZSAvIDIpKTsKKyAg
ICAgICAgc2V0V3JpdGVQb3NpdGlvbigwKTsKKyAgICB9CisgICAgZWxzZSBpZiAoZ2V0V3JpdGVQ
b3NpdGlvbigpICsgc2l6ZSA+IGN1ckJ1ZmZlclNpemUpCisgICAgeworICAgICAgICBpZiAoIWRp
c2NhcmQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIHNldFdyaXRlUG9zaXRpb24oMCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjpTdGF0aWNWZXJ0ZXhCdWZmZXJJ
bnRlcmZhY2Uocng6OlJlbmRlcmVyICpyZW5kZXJlcikgOiBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2Uo
cmVuZGVyZXIsIGZhbHNlKQoreworfQorCitTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6On5T
dGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoKQoreworfQorCitpbnQgU3RhdGljVmVydGV4QnVm
ZmVySW50ZXJmYWNlOjpsb29rdXBBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAm
YXR0cmlidXRlKQoreworICAgIGZvciAodW5zaWduZWQgaW50IGVsZW1lbnQgPSAwOyBlbGVtZW50
IDwgbUNhY2hlLnNpemUoKTsgZWxlbWVudCsrKQorICAgIHsKKyAgICAgICAgaWYgKG1DYWNoZVtl
bGVtZW50XS50eXBlID09IGF0dHJpYnV0ZS5tVHlwZSAmJgorICAgICAgICAgICAgbUNhY2hlW2Vs
ZW1lbnRdLnNpemUgPT0gYXR0cmlidXRlLm1TaXplICYmCisgICAgICAgICAgICBtQ2FjaGVbZWxl
bWVudF0uc3RyaWRlID09IGF0dHJpYnV0ZS5zdHJpZGUoKSAmJgorICAgICAgICAgICAgbUNhY2hl
W2VsZW1lbnRdLm5vcm1hbGl6ZWQgPT0gYXR0cmlidXRlLm1Ob3JtYWxpemVkKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAobUNhY2hlW2VsZW1lbnRdLmF0dHJpYnV0ZU9mZnNldCA9PSBhdHRy
aWJ1dGUubU9mZnNldCAlIGF0dHJpYnV0ZS5zdHJpZGUoKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbUNhY2hlW2VsZW1lbnRdLnN0cmVhbU9mZnNldDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKworYm9vbCBTdGF0
aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2VydmVTcGFjZSh1bnNpZ25lZCBpbnQgc2l6ZSkK
K3sKKyAgICB1bnNpZ25lZCBpbnQgY3VyU2l6ZSA9IGdldEJ1ZmZlclNpemUoKTsKKyAgICBpZiAo
Y3VyU2l6ZSA9PSAwKQorICAgIHsKKyAgICAgICAgc2V0QnVmZmVyU2l6ZShzaXplKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UgaWYgKGN1clNpemUgPj0gc2l6ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBVTlJFQUNIQUJMRSgpOyAgIC8vIFN0YXRpYyB2ZXJ0ZXggYnVmZmVycyBjYW4ndCBiZSByZXNp
emVkCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2ludCBTdGF0aWNWZXJ0ZXhC
dWZmZXJJbnRlcmZhY2U6OnN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVydGV4QXR0
cmlidXRlICZhdHRyaWIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3Rh
bmNlcykKK3sKKyAgICBpbnQgYXR0cmlidXRlT2Zmc2V0ID0gYXR0cmliLm1PZmZzZXQgJSBhdHRy
aWIuc3RyaWRlKCk7CisgICAgVmVydGV4RWxlbWVudCBlbGVtZW50ID0geyBhdHRyaWIubVR5cGUs
IGF0dHJpYi5tU2l6ZSwgYXR0cmliLnN0cmlkZSgpLCBhdHRyaWIubU5vcm1hbGl6ZWQsIGF0dHJp
YnV0ZU9mZnNldCwgZ2V0V3JpdGVQb3NpdGlvbigpIH07CisgICAgbUNhY2hlLnB1c2hfYmFjayhl
bGVtZW50KTsKKworICAgIHJldHVybiBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnN0b3JlVmVydGV4
QXR0cmlidXRlcyhhdHRyaWIsIHN0YXJ0LCBjb3VudCwgaW5zdGFuY2VzKTsKK30KKworfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhC
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMzggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFZlcnRleEJ1
ZmZlci5oOiBEZWZpbmVzIHRoZSBhYnN0cmFjdCBWZXJ0ZXhCdWZmZXIgY2xhc3MgYW5kIFZlcnRl
eEJ1ZmZlckludGVyZmFjZQorLy8gY2xhc3Mgd2l0aCBkZXJpdmF0aW9ucywgY2xhc3NlcyB0aGF0
IHBlcmZvcm0gZ3JhcGhpY3MgQVBJIGFnbm9zdGljIHZlcnRleCBidWZmZXIgb3BlcmF0aW9ucy4K
KworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfVkVSVEVYQlVGRkVSX0hfCisjZGVmaW5lIExJ
QkdMRVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVJfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmds
ZXV0aWxzLmgiCisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgVmVydGV4QXR0cmlidXRlOworfQor
CituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOworCitjbGFzcyBWZXJ0ZXhCdWZmZXIK
K3sKKyAgcHVibGljOgorICAgIFZlcnRleEJ1ZmZlcigpOworICAgIHZpcnR1YWwgflZlcnRleEJ1
ZmZlcigpOworCisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUodW5zaWduZWQgaW50IHNpemUs
IGJvb2wgZHluYW1pY1VzYWdlKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3RvcmVWZXJ0ZXhB
dHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQs
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGluc3RhbmNlcywgdW5zaWduZWQgaW50IG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBzdG9yZVJhd0RhdGEoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIHVu
c2lnbmVkIGludCBvZmZzZXQpID0gMDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNw
YWNlUmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTHNpemVpIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBp
bnN0YW5jZXMpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0NvbnZlcnNp
b24oY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRCdWZmZXJTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBzZXRCdWZmZXJTaXplKHVuc2lnbmVkIGludCBzaXplKSA9IDA7CisgICAgdmlydHVh
bCBib29sIGRpc2NhcmQoKSA9IDA7CisKKyAgICB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29u
c3Q7CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlU2VyaWFsKCk7CisKKyAgcHJpdmF0
ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVmVydGV4QnVmZmVyKTsKKworICAgIHVu
c2lnbmVkIGludCBtU2VyaWFsOworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgbU5leHRTZXJpYWw7
Cit9OworCitjbGFzcyBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIFZl
cnRleEJ1ZmZlckludGVyZmFjZShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBib29sIGR5bmFtaWMp
OworICAgIHZpcnR1YWwgflZlcnRleEJ1ZmZlckludGVyZmFjZSgpOworCisgICAgYm9vbCByZXNl
cnZlVmVydGV4U3BhY2UoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBHTHNp
emVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcyk7CisgICAgYm9vbCByZXNlcnZlUmF3RGF0YVNw
YWNlKHVuc2lnbmVkIGludCBzaXplKTsKKworICAgIHVuc2lnbmVkIGludCBnZXRCdWZmZXJTaXpl
KCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CisKKyAgICB2
aXJ0dWFsIGludCBzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0
ZSAmYXR0cmliLCBHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMp
OworICAgIHZpcnR1YWwgaW50IHN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25l
ZCBpbnQgc2l6ZSk7CisKKyAgICBWZXJ0ZXhCdWZmZXIqIGdldFZlcnRleEJ1ZmZlcigpIGNvbnN0
OworCisgIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIGJvb2wgcmVzZXJ2ZVNwYWNlKHVuc2lnbmVk
IGludCBzaXplKSA9IDA7CisKKyAgICB1bnNpZ25lZCBpbnQgZ2V0V3JpdGVQb3NpdGlvbigpIGNv
bnN0OworICAgIHZvaWQgc2V0V3JpdGVQb3NpdGlvbih1bnNpZ25lZCBpbnQgd3JpdGVQb3NpdGlv
bik7CisKKyAgICBib29sIGRpc2NhcmQoKTsKKworICAgIGJvb2wgc2V0QnVmZmVyU2l6ZSh1bnNp
Z25lZCBpbnQgc2l6ZSk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oVmVydGV4QnVmZmVySW50ZXJmYWNlKTsKKworICAgIHJ4OjpSZW5kZXJlciAqY29uc3QgbVJl
bmRlcmVyOworCisgICAgVmVydGV4QnVmZmVyKiBtVmVydGV4QnVmZmVyOworCisgICAgdW5zaWdu
ZWQgaW50IG1Xcml0ZVBvc2l0aW9uOworICAgIHVuc2lnbmVkIGludCBtUmVzZXJ2ZWRTcGFjZTsK
KyAgICBib29sIG1EeW5hbWljOworfTsKKworY2xhc3MgU3RyZWFtaW5nVmVydGV4QnVmZmVySW50
ZXJmYWNlIDogcHVibGljIFZlcnRleEJ1ZmZlckludGVyZmFjZQoreworICBwdWJsaWM6CisgICAg
U3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIHN0
ZDo6c2l6ZV90IGluaXRpYWxTaXplKTsKKyAgICB+U3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJm
YWNlKCk7CisKKyAgcHJvdGVjdGVkOgorICAgIGJvb2wgcmVzZXJ2ZVNwYWNlKHVuc2lnbmVkIGlu
dCBzaXplKTsKK307CisKK2NsYXNzIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSA6IHB1Ymxp
YyBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIGV4cGxpY2l0IFN0YXRp
Y1ZlcnRleEJ1ZmZlckludGVyZmFjZShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKTsKKyAgICB+U3Rh
dGljVmVydGV4QnVmZmVySW50ZXJmYWNlKCk7CisKKyAgICBpbnQgc3RvcmVWZXJ0ZXhBdHRyaWJ1
dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6
ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKTsKKworICAgIC8vIFJldHVybnMgdGhlIG9mZnNl
dCBpbnRvIHRoZSB2ZXJ0ZXggYnVmZmVyLCBvciAtMSBpZiBub3QgZm91bmQKKyAgICBpbnQgbG9v
a3VwQXR0cmlidXRlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSk7CisKKyAg
cHJvdGVjdGVkOgorICAgIGJvb2wgcmVzZXJ2ZVNwYWNlKHVuc2lnbmVkIGludCBzaXplKTsKKwor
ICBwcml2YXRlOgorICAgIHN0cnVjdCBWZXJ0ZXhFbGVtZW50CisgICAgeworICAgICAgICBHTGVu
dW0gdHlwZTsKKyAgICAgICAgR0xpbnQgc2l6ZTsKKyAgICAgICAgR0xzaXplaSBzdHJpZGU7Cisg
ICAgICAgIGJvb2wgbm9ybWFsaXplZDsKKyAgICAgICAgaW50IGF0dHJpYnV0ZU9mZnNldDsKKwor
ICAgICAgICB1bnNpZ25lZCBpbnQgc3RyZWFtT2Zmc2V0OworICAgIH07CisKKyAgICBzdGQ6OnZl
Y3RvcjxWZXJ0ZXhFbGVtZW50PiBtQ2FjaGU7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVT
VjJfUkVOREVSRVJfVkVSVEVYQlVGRkVSX0hfClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0
ZXhEYXRhTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRl
eERhdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNjcgQEAKKyNpbmNsdWRl
ICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVmVydGV4RGF0YU1hbmFn
ZXIuaDogRGVmaW5lcyB0aGUgVmVydGV4RGF0YU1hbmFnZXIsIGEgY2xhc3MgdGhhdAorLy8gcnVu
cyB0aGUgQnVmZmVyIHRyYW5zbGF0aW9uIHByb2Nlc3MuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvQnVmZmVyU3RvcmFnZS5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL0J1ZmZlci5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmgiCisK
K25hbWVzcGFjZQoreworICAgIGVudW0geyBJTklUSUFMX1NUUkVBTV9CVUZGRVJfU0laRSA9IDEw
MjQqMTAyNCB9OworICAgIC8vIFRoaXMgaGFzIHRvIGJlIGF0IGxlYXN0IDRrIG9yIGVsc2UgaXQg
ZmFpbHMgb24gQVRJIGNhcmRzLgorICAgIGVudW0geyBDT05TVEFOVF9WRVJURVhfQlVGRkVSX1NJ
WkUgPSA0MDk2IH07Cit9CisKK25hbWVzcGFjZSByeAoreworCitzdGF0aWMgaW50IGVsZW1lbnRz
SW5CdWZmZXIoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBpbnQgc2l6ZSkK
K3sKKyAgICBpbnQgc3RyaWRlID0gYXR0cmlidXRlLnN0cmlkZSgpOworICAgIHJldHVybiAoc2l6
ZSAtIGF0dHJpYnV0ZS5tT2Zmc2V0ICUgc3RyaWRlICsgKHN0cmlkZSAtIGF0dHJpYnV0ZS50eXBl
U2l6ZSgpKSkgLyBzdHJpZGU7Cit9CisKK1ZlcnRleERhdGFNYW5hZ2VyOjpWZXJ0ZXhEYXRhTWFu
YWdlcihSZW5kZXJlciAqcmVuZGVyZXIpIDogbVJlbmRlcmVyKHJlbmRlcmVyKQoreworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAg
ICAgICAgbUN1cnJlbnRWYWx1ZVtpXVswXSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpx
dWlldF9OYU4oKTsKKyAgICAgICAgbUN1cnJlbnRWYWx1ZVtpXVsxXSA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKKyAgICAgICAgbUN1cnJlbnRWYWx1ZVtpXVsyXSA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKKyAgICAgICAgbUN1cnJl
bnRWYWx1ZVtpXVszXSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsK
KyAgICAgICAgbUN1cnJlbnRWYWx1ZUJ1ZmZlcltpXSA9IE5VTEw7CisgICAgICAgIG1DdXJyZW50
VmFsdWVPZmZzZXRzW2ldID0gMDsKKyAgICB9CisKKyAgICBtU3RyZWFtaW5nQnVmZmVyID0gbmV3
IFN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZShyZW5kZXJlciwgSU5JVElBTF9TVFJFQU1f
QlVGRkVSX1NJWkUpOworCisgICAgaWYgKCFtU3RyZWFtaW5nQnVmZmVyKQorICAgIHsKKyAgICAg
ICAgRVJSKCJGYWlsZWQgdG8gYWxsb2NhdGUgdGhlIHN0cmVhbWluZyB2ZXJ0ZXggYnVmZmVyLiIp
OworICAgIH0KK30KKworVmVydGV4RGF0YU1hbmFnZXI6On5WZXJ0ZXhEYXRhTWFuYWdlcigpCit7
CisgICAgZGVsZXRlIG1TdHJlYW1pbmdCdWZmZXI7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtQ3Vy
cmVudFZhbHVlQnVmZmVyW2ldOworICAgIH0KK30KKworc3RhdGljIGJvb2wgZGlyZWN0U3RvcmFn
ZVBvc3NpYmxlKFZlcnRleEJ1ZmZlckludGVyZmFjZSogdmIsIGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJ1dGUmIGF0dHJpYikKK3sKKyAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBhdHRyaWIubUJvdW5k
QnVmZmVyLmdldCgpOworICAgIEJ1ZmZlclN0b3JhZ2UgKnN0b3JhZ2UgPSBidWZmZXIgPyBidWZm
ZXItPmdldFN0b3JhZ2UoKSA6IE5VTEw7CisKKyAgICBjb25zdCBib29sIGlzQWxpZ25lZCA9IChh
dHRyaWIuc3RyaWRlKCkgJSA0ID09IDApICYmIChhdHRyaWIubU9mZnNldCAlIDQgPT0gMCk7CisK
KyAgICByZXR1cm4gc3RvcmFnZSAmJiBzdG9yYWdlLT5zdXBwb3J0c0RpcmVjdEJpbmRpbmcoKSAm
JiAhdmItPmdldFZlcnRleEJ1ZmZlcigpLT5yZXF1aXJlc0NvbnZlcnNpb24oYXR0cmliKSAmJiBp
c0FsaWduZWQ7Cit9CisKK0dMZW51bSBWZXJ0ZXhEYXRhTWFuYWdlcjo6cHJlcGFyZVZlcnRleERh
dGEoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSBhdHRyaWJzW10sIGdsOjpQcm9ncmFtQmluYXJ5
ICpwcm9ncmFtQmluYXJ5LCBHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgVHJhbnNsYXRlZEF0
dHJpYnV0ZSAqdHJhbnNsYXRlZCwgR0xzaXplaSBpbnN0YW5jZXMpCit7CisgICAgaWYgKCFtU3Ry
ZWFtaW5nQnVmZmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlk7Cisg
ICAgfQorCisgICAgZm9yIChpbnQgYXR0cmlidXRlSW5kZXggPSAwOyBhdHRyaWJ1dGVJbmRleCA8
IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGF0dHJpYnV0ZUluZGV4KyspCisgICAgeworICAgICAg
ICB0cmFuc2xhdGVkW2F0dHJpYnV0ZUluZGV4XS5hY3RpdmUgPSAocHJvZ3JhbUJpbmFyeS0+Z2V0
U2VtYW50aWNJbmRleChhdHRyaWJ1dGVJbmRleCkgIT0gLTEpOworICAgIH0KKworICAgIC8vIElu
dmFsaWRhdGUgc3RhdGljIGJ1ZmZlcnMgdGhhdCBkb24ndCBjb250YWluIG1hdGNoaW5nIGF0dHJp
YnV0ZXMKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkr
KykKKyAgICB7CisgICAgICAgIGlmICh0cmFuc2xhdGVkW2ldLmFjdGl2ZSAmJiBhdHRyaWJzW2ld
Lm1BcnJheUVuYWJsZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZl
ciA9IGF0dHJpYnNbaV0ubUJvdW5kQnVmZmVyLmdldCgpOworICAgICAgICAgICAgU3RhdGljVmVy
dGV4QnVmZmVySW50ZXJmYWNlICpzdGF0aWNCdWZmZXIgPSBidWZmZXIgPyBidWZmZXItPmdldFN0
YXRpY1ZlcnRleEJ1ZmZlcigpIDogTlVMTDsKKworICAgICAgICAgICAgaWYgKHN0YXRpY0J1ZmZl
ciAmJiBzdGF0aWNCdWZmZXItPmdldEJ1ZmZlclNpemUoKSA+IDAgJiYgc3RhdGljQnVmZmVyLT5s
b29rdXBBdHRyaWJ1dGUoYXR0cmlic1tpXSkgPT0gLTEgJiYKKyAgICAgICAgICAgICAgICAhZGly
ZWN0U3RvcmFnZVBvc3NpYmxlKHN0YXRpY0J1ZmZlciwgYXR0cmlic1tpXSkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5pbnZhbGlkYXRlU3RhdGljRGF0YSgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gUmVzZXJ2ZSB0aGUgcmVxdWly
ZWQgc3BhY2UgaW4gdGhlIGJ1ZmZlcnMKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGdsOjpNQVhf
VkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7CisgICAgICAgIGlmICh0cmFuc2xhdGVkW2ldLmFj
dGl2ZSAmJiBhdHRyaWJzW2ldLm1BcnJheUVuYWJsZWQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYnNbaV0ubUJvdW5kQnVmZmVyLmdldCgpOworICAg
ICAgICAgICAgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlICpzdGF0aWNCdWZmZXIgPSBidWZm
ZXIgPyBidWZmZXItPmdldFN0YXRpY1ZlcnRleEJ1ZmZlcigpIDogTlVMTDsKKyAgICAgICAgICAg
IFZlcnRleEJ1ZmZlckludGVyZmFjZSAqdmVydGV4QnVmZmVyID0gc3RhdGljQnVmZmVyID8gc3Rh
dGljQnVmZmVyIDogc3RhdGljX2Nhc3Q8VmVydGV4QnVmZmVySW50ZXJmYWNlKj4obVN0cmVhbWlu
Z0J1ZmZlcik7CisKKyAgICAgICAgICAgIGlmICghZGlyZWN0U3RvcmFnZVBvc3NpYmxlKHZlcnRl
eEJ1ZmZlciwgYXR0cmlic1tpXSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYg
KHN0YXRpY0J1ZmZlcikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChzdGF0aWNCdWZmZXItPmdldEJ1ZmZlclNpemUoKSA9PSAwKQorICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdG90YWxDb3VudCA9IGVsZW1lbnRzSW5C
dWZmZXIoYXR0cmlic1tpXSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFzdGF0aWNCdWZmZXItPnJlc2VydmVWZXJ0ZXhTcGFjZShhdHRyaWJzW2ldLCB0b3Rh
bENvdW50LCAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAo
IW1TdHJlYW1pbmdCdWZmZXItPnJlc2VydmVWZXJ0ZXhTcGFjZShhdHRyaWJzW2ldLCBjb3VudCwg
aW5zdGFuY2VzKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBQ
ZXJmb3JtIHRoZSB2ZXJ0ZXggZGF0YSB0cmFuc2xhdGlvbnMKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7CisgICAgICAgIGlmICh0cmFu
c2xhdGVkW2ldLmFjdGl2ZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGF0dHJpYnNbaV0u
bUFycmF5RW5hYmxlZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6QnVmZmVy
ICpidWZmZXIgPSBhdHRyaWJzW2ldLm1Cb3VuZEJ1ZmZlci5nZXQoKTsKKworICAgICAgICAgICAg
ICAgIGlmICghYnVmZmVyICYmIGF0dHJpYnNbaV0ubVBvaW50ZXIgPT0gTlVMTCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gYXBwbGljYXRpb24g
ZXJyb3IgdGhhdCB3b3VsZCBub3JtYWxseSByZXN1bHQgaW4gYSBjcmFzaCwgYnV0IHdlIGNhdGNo
IGl0IGFuZCByZXR1cm4gYW4gZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgRVJSKCJBbiBlbmFi
bGVkIHZlcnRleCBhcnJheSBoYXMgbm8gYnVmZmVyIGFuZCBubyBwb2ludGVyLiIpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlICpzdGF0
aWNCdWZmZXIgPSBidWZmZXIgPyBidWZmZXItPmdldFN0YXRpY1ZlcnRleEJ1ZmZlcigpIDogTlVM
TDsKKyAgICAgICAgICAgICAgICBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKnZlcnRleEJ1ZmZlciA9
IHN0YXRpY0J1ZmZlciA/IHN0YXRpY0J1ZmZlciA6IHN0YXRpY19jYXN0PFZlcnRleEJ1ZmZlcklu
dGVyZmFjZSo+KG1TdHJlYW1pbmdCdWZmZXIpOworCisgICAgICAgICAgICAgICAgQnVmZmVyU3Rv
cmFnZSAqc3RvcmFnZSA9IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0U3RvcmFnZSgpIDogTlVMTDsKKyAg
ICAgICAgICAgICAgICBib29sIGRpcmVjdFN0b3JhZ2UgPSBkaXJlY3RTdG9yYWdlUG9zc2libGUo
dmVydGV4QnVmZmVyLCBhdHRyaWJzW2ldKTsKKworICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90
IHN0cmVhbU9mZnNldCA9IC0xOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvdXRwdXRF
bGVtZW50U2l6ZSA9IDA7CisKKyAgICAgICAgICAgICAgICBpZiAoZGlyZWN0U3RvcmFnZSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dEVsZW1lbnRTaXplID0g
YXR0cmlic1tpXS5zdHJpZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0g
YXR0cmlic1tpXS5tT2Zmc2V0ICsgb3V0cHV0RWxlbWVudFNpemUgKiBzdGFydDsKKyAgICAgICAg
ICAgICAgICAgICAgc3RvcmFnZS0+bWFya0J1ZmZlclVzYWdlKCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRpY0J1ZmZlcikKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9IHN0YXRpY0J1ZmZlci0+bG9v
a3VwQXR0cmlidXRlKGF0dHJpYnNbaV0pOworICAgICAgICAgICAgICAgICAgICBvdXRwdXRFbGVt
ZW50U2l6ZSA9IHN0YXRpY0J1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCktPmdldFNwYWNlUmVxdWly
ZWQoYXR0cmlic1tpXSwgMSwgMCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmVhbU9m
ZnNldCA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gQ29udmVydCB0aGUgZW50aXJlIGJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHRvdGFsQ291bnQgPSBlbGVtZW50c0luQnVmZmVyKGF0dHJpYnNbaV0sIHN0b3JhZ2UtPmdl
dFNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRJbmRleCA9IGF0dHJp
YnNbaV0ubU9mZnNldCAvIGF0dHJpYnNbaV0uc3RyaWRlKCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmVhbU9mZnNldCA9IHN0YXRpY0J1ZmZlci0+c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVz
KGF0dHJpYnNbaV0sIC1zdGFydEluZGV4LCB0b3RhbENvdW50LCAwKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJlYW1PZmZzZXQgIT0gLTEpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbU9mZnNl
dCArPSAoYXR0cmlic1tpXS5tT2Zmc2V0IC8gYXR0cmlic1tpXS5zdHJpZGUoKSkgKiBvdXRwdXRF
bGVtZW50U2l6ZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlcyA9PSAw
IHx8IGF0dHJpYnNbaV0ubURpdmlzb3IgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQgKz0gc3RhcnQgKiBvdXRw
dXRFbGVtZW50U2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBvdXRwdXRFbGVtZW50U2l6ZSA9IG1TdHJl
YW1pbmdCdWZmZXItPmdldFZlcnRleEJ1ZmZlcigpLT5nZXRTcGFjZVJlcXVpcmVkKGF0dHJpYnNb
aV0sIDEsIDApOworICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQgPSBtU3RyZWFtaW5n
QnVmZmVyLT5zdG9yZVZlcnRleEF0dHJpYnV0ZXMoYXR0cmlic1tpXSwgc3RhcnQsIGNvdW50LCBp
bnN0YW5jZXMpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChzdHJl
YW1PZmZzZXQgPT0gLTEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICB0cmFuc2xhdGVkW2ldLnN0b3JhZ2UgPSBkaXJlY3RTdG9yYWdlID8gc3RvcmFnZSA6IE5V
TEw7CisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS52ZXJ0ZXhCdWZmZXIgPSB2ZXJ0ZXhC
dWZmZXItPmdldFZlcnRleEJ1ZmZlcigpOworICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0u
c2VyaWFsID0gZGlyZWN0U3RvcmFnZSA/IHN0b3JhZ2UtPmdldFNlcmlhbCgpIDogdmVydGV4QnVm
ZmVyLT5nZXRTZXJpYWwoKTsKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLmRpdmlzb3Ig
PSBhdHRyaWJzW2ldLm1EaXZpc29yOworCisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5h
dHRyaWJ1dGUgPSAmYXR0cmlic1tpXTsKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnN0
cmlkZSA9IG91dHB1dEVsZW1lbnRTaXplOworICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0u
b2Zmc2V0ID0gc3RyZWFtT2Zmc2V0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghbUN1cnJlbnRWYWx1ZUJ1ZmZlcltp
XSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1DdXJyZW50VmFsdWVC
dWZmZXJbaV0gPSBuZXcgU3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlKG1SZW5kZXJlciwg
Q09OU1RBTlRfVkVSVEVYX0JVRkZFUl9TSVpFKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKmJ1ZmZlciA9IG1DdXJy
ZW50VmFsdWVCdWZmZXJbaV07CisKKyAgICAgICAgICAgICAgICBpZiAobUN1cnJlbnRWYWx1ZVtp
XVswXSAhPSBhdHRyaWJzW2ldLm1DdXJyZW50VmFsdWVbMF0gfHwKKyAgICAgICAgICAgICAgICAg
ICAgbUN1cnJlbnRWYWx1ZVtpXVsxXSAhPSBhdHRyaWJzW2ldLm1DdXJyZW50VmFsdWVbMV0gfHwK
KyAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRWYWx1ZVtpXVsyXSAhPSBhdHRyaWJzW2ldLm1D
dXJyZW50VmFsdWVbMl0gfHwKKyAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRWYWx1ZVtpXVsz
XSAhPSBhdHRyaWJzW2ldLm1DdXJyZW50VmFsdWVbM10pCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmVxdWlyZWRTcGFjZSA9IHNpemVvZihmbG9h
dCkgKiA0OworICAgICAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+cmVzZXJ2ZVJhd0RhdGFT
cGFjZShyZXF1aXJlZFNwYWNlKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgaW50IHN0cmVhbU9mZnNldCA9IGJ1ZmZlci0+c3RvcmVS
YXdEYXRhKGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZSwgcmVxdWlyZWRTcGFjZSk7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChzdHJlYW1PZmZzZXQgPT0gLTEpCisgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRWYWx1ZU9m
ZnNldHNbaV0gPSBzdHJlYW1PZmZzZXQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgdHJhbnNsYXRlZFtpXS5zdG9yYWdlID0gTlVMTDsKKyAgICAgICAgICAgICAgICB0cmFu
c2xhdGVkW2ldLnZlcnRleEJ1ZmZlciA9IG1DdXJyZW50VmFsdWVCdWZmZXJbaV0tPmdldFZlcnRl
eEJ1ZmZlcigpOworICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0uc2VyaWFsID0gbUN1cnJl
bnRWYWx1ZUJ1ZmZlcltpXS0+Z2V0U2VyaWFsKCk7CisgICAgICAgICAgICAgICAgdHJhbnNsYXRl
ZFtpXS5kaXZpc29yID0gMDsKKworICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0uYXR0cmli
dXRlID0gJmF0dHJpYnNbaV07CisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5zdHJpZGUg
PSAwOworICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0ub2Zmc2V0ID0gbUN1cnJlbnRWYWx1
ZU9mZnNldHNbaV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7CisgICAg
ICAgIGlmICh0cmFuc2xhdGVkW2ldLmFjdGl2ZSAmJiBhdHRyaWJzW2ldLm1BcnJheUVuYWJsZWQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYnNbaV0u
bUJvdW5kQnVmZmVyLmdldCgpOworCisgICAgICAgICAgICBpZiAoYnVmZmVyKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGJ1ZmZlci0+cHJvbW90ZVN0YXRpY1VzYWdlKGNvdW50ICog
YXR0cmlic1tpXS50eXBlU2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBHTF9OT19FUlJPUjsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
VmVydGV4RGF0YU1hbmFnZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVmVydGV4RGF0YU1h
bmFnZXIuaDogRGVmaW5lcyB0aGUgVmVydGV4RGF0YU1hbmFnZXIsIGEgY2xhc3MgdGhhdAorLy8g
cnVucyB0aGUgQnVmZmVyIHRyYW5zbGF0aW9uIHByb2Nlc3MuCisKKyNpZm5kZWYgTElCR0xFU1Yy
X1JFTkRFUkVSX1ZFUlRFWERBVEFNQU5BR0VSX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJF
Ul9WRVJURVhEQVRBTUFOQUdFUl9IXworCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnN0YW50cy5o
IgorI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSBnbAoreworY2xh
c3MgVmVydGV4QXR0cmlidXRlOworY2xhc3MgUHJvZ3JhbUJpbmFyeTsKK30KKworbmFtZXNwYWNl
IHJ4Cit7CitjbGFzcyBCdWZmZXJTdG9yYWdlOworY2xhc3MgU3RyZWFtaW5nVmVydGV4QnVmZmVy
SW50ZXJmYWNlOworY2xhc3MgVmVydGV4QnVmZmVyOworY2xhc3MgUmVuZGVyZXI7CisKK3N0cnVj
dCBUcmFuc2xhdGVkQXR0cmlidXRlCit7CisgICAgYm9vbCBhY3RpdmU7CisKKyAgICBjb25zdCBn
bDo6VmVydGV4QXR0cmlidXRlICphdHRyaWJ1dGU7CisgICAgVUlOVCBvZmZzZXQ7CisgICAgVUlO
VCBzdHJpZGU7ICAgLy8gMCBtZWFucyBub3QgdG8gYWR2YW5jZSB0aGUgcmVhZCBwb2ludGVyIGF0
IGFsbAorCisgICAgVmVydGV4QnVmZmVyICp2ZXJ0ZXhCdWZmZXI7CisgICAgQnVmZmVyU3RvcmFn
ZSAqc3RvcmFnZTsKKyAgICB1bnNpZ25lZCBpbnQgc2VyaWFsOworICAgIHVuc2lnbmVkIGludCBk
aXZpc29yOworfTsKKworY2xhc3MgVmVydGV4RGF0YU1hbmFnZXIKK3sKKyAgcHVibGljOgorICAg
IFZlcnRleERhdGFNYW5hZ2VyKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIpOworICAgIHZpcnR1YWwg
flZlcnRleERhdGFNYW5hZ2VyKCk7CisKKyAgICBHTGVudW0gcHJlcGFyZVZlcnRleERhdGEoY29u
c3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSBhdHRyaWJzW10sIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9n
cmFtQmluYXJ5LCBHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgVHJhbnNsYXRlZEF0dHJpYnV0
ZSAqb3V0QXR0cmlicywgR0xzaXplaSBpbnN0YW5jZXMpOworCisgIHByaXZhdGU6CisgICAgRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKFZlcnRleERhdGFNYW5hZ2VyKTsKKworICAgIHJ4OjpSZW5k
ZXJlciAqY29uc3QgbVJlbmRlcmVyOworCisgICAgU3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJm
YWNlICptU3RyZWFtaW5nQnVmZmVyOworCisgICAgZmxvYXQgbUN1cnJlbnRWYWx1ZVtnbDo6TUFY
X1ZFUlRFWF9BVFRSSUJTXVs0XTsKKyAgICBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2Ug
Km1DdXJyZW50VmFsdWVCdWZmZXJbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU107CisgICAgc3RkOjpz
aXplX3QgbUN1cnJlbnRWYWx1ZU9mZnNldHNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU107Cit9Owor
Cit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9WRVJURVhEQVRBTUFOQUdFUl9I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9W
ZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMTcgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFZl
cnRleERlY2xhcmF0aW9uQ2FjaGUuY3BwOiBJbXBsZW1lbnRzIGEgaGVscGVyIGNsYXNzIHRvIGNv
bnN0cnVjdCBhbmQgY2FjaGUgdmVydGV4IGRlY2xhcmF0aW9ucy4KKworI2luY2x1ZGUgImxpYkdM
RVN2Mi9Qcm9ncmFtQmluYXJ5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKyNp
bmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyOS5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmgiCisKK25hbWVzcGFjZSBy
eAoreworCitWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlOjpWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlKCkg
OiBtTWF4THJ1KDApCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fVkVSVEVYX0RFQ0xf
Q0FDSEVfRU5UUklFUzsgaSsrKQorICAgIHsKKyAgICAgICAgbVZlcnRleERlY2xDYWNoZVtpXS52
ZXJ0ZXhEZWNsYXJhdGlvbiA9IE5VTEw7CisgICAgICAgIG1WZXJ0ZXhEZWNsQ2FjaGVbaV0ubHJ1
Q291bnQgPSAwOworICAgIH0KKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJU
RVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgbUFwcGxpZWRWQnNbaV0uc2VyaWFsID0g
MDsKKyAgICB9CisKKyAgICBtTGFzdFNldFZEZWNsID0gTlVMTDsKKyAgICBtSW5zdGFuY2luZ0Vu
YWJsZWQgPSB0cnVlOworfQorCitWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlOjp+VmVydGV4RGVjbGFy
YXRpb25DYWNoZSgpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fVkVSVEVYX0RFQ0xf
Q0FDSEVfRU5UUklFUzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKG1WZXJ0ZXhEZWNsQ2FjaGVb
aV0udmVydGV4RGVjbGFyYXRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIG1WZXJ0ZXhEZWNs
Q2FjaGVbaV0udmVydGV4RGVjbGFyYXRpb24tPlJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0K
K30KKworR0xlbnVtIFZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OmFwcGx5RGVjbGFyYXRpb24oSURp
cmVjdDNERGV2aWNlOSAqZGV2aWNlLCBUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNbXSwg
Z2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnksIEdMc2l6ZWkgaW5zdGFuY2VzLCBHTHNp
emVpICpyZXBlYXREcmF3KQoreworICAgICpyZXBlYXREcmF3ID0gMTsKKworICAgIGludCBpbmRl
eGVkQXR0cmlidXRlID0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsKKyAgICBpbnQgaW5zdGFuY2Vk
QXR0cmlidXRlID0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsKKworICAgIGlmIChpbnN0YW5jZXMg
PiAwKQorICAgIHsKKyAgICAgICAgLy8gRmluZCBhbiBpbmRleGVkIGF0dHJpYnV0ZSB0byBiZSBt
YXBwZWQgdG8gRDNEIHN0cmVhbSAwCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6Ok1B
WF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoYXR0cmli
dXRlc1tpXS5hY3RpdmUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4
ZWRBdHRyaWJ1dGUgPT0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUyAmJiBhdHRyaWJ1dGVzW2ldLmRp
dmlzb3IgPT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGluZGV4
ZWRBdHRyaWJ1dGUgPSBpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChpbnN0YW5jZWRBdHRyaWJ1dGUgPT0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUyAmJiBhdHRy
aWJ1dGVzW2ldLmRpdmlzb3IgIT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIGluc3RhbmNlZEF0dHJpYnV0ZSA9IGk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGlmIChpbmRleGVkQXR0cmlidXRlICE9IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMg
JiYgaW5zdGFuY2VkQXR0cmlidXRlICE9IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOyAgIC8vIEZvdW5kIGJvdGggYW4gaW5kZXhlZCBhbmQgaW5zdGFu
Y2VkIGF0dHJpYnV0ZQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGlu
ZGV4ZWRBdHRyaWJ1dGUgPT0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfT1BFUkFUSU9OOworICAgICAgICB9CisgICAgfQor
CisgICAgRDNEVkVSVEVYRUxFTUVOVDkgZWxlbWVudHNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCUyAr
IDFdOworICAgIEQzRFZFUlRFWEVMRU1FTlQ5ICplbGVtZW50ID0gJmVsZW1lbnRzWzBdOworCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAg
eworICAgICAgICBpZiAoYXR0cmlidXRlc1tpXS5hY3RpdmUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIERpcmVjdGx5IGJpbmRpbmcgdGhlIHN0b3JhZ2UgYnVmZmVyIGlzIG5vdCBzdXBwb3J0
ZWQgZm9yIGQzZDkKKyAgICAgICAgICAgIEFTU0VSVChhdHRyaWJ1dGVzW2ldLnN0b3JhZ2UgPT0g
TlVMTCk7CisKKyAgICAgICAgICAgIGludCBzdHJlYW0gPSBpOworCisgICAgICAgICAgICBpZiAo
aW5zdGFuY2VzID4gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBEdWUgdG8g
YSBidWcgb24gQVRJIGNhcmRzIHdlIGNhbid0IGVuYWJsZSBpbnN0YW5jaW5nIHdoZW4gbm9uZSBv
ZiB0aGUgYXR0cmlidXRlcyBhcmUgaW5zdGFuY2VkLgorICAgICAgICAgICAgICAgIGlmIChpbnN0
YW5jZWRBdHRyaWJ1dGUgPT0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICpyZXBlYXREcmF3ID0gaW5zdGFuY2VzOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoaSA9PSBpbmRleGVkQXR0cmlidXRlKQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0gPSAwOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGkgPT0gMCkKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtID0gaW5kZXhl
ZEF0dHJpYnV0ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
IFVJTlQgZnJlcXVlbmN5ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgICAgIGlmIChhdHRyaWJ1dGVzW2ldLmRpdmlzb3IgPT0gMCkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZnJlcXVlbmN5ID0gRDNEU1RSRUFNU09VUkNF
X0lOREVYRUREQVRBIHwgaW5zdGFuY2VzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZnJlcXVlbmN5ID0gRDNEU1RSRUFNU09VUkNFX0lOU1RBTkNFREFUQSB8IGF0dHJp
YnV0ZXNbaV0uZGl2aXNvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgZGV2aWNlLT5TZXRTdHJlYW1Tb3VyY2VGcmVxKHN0
cmVhbSwgZnJlcXVlbmN5KTsKKyAgICAgICAgICAgICAgICAgICAgbUluc3RhbmNpbmdFbmFibGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IFZlcnRleEJ1ZmZlcjkgKnZlcnRleEJ1ZmZlciA9IFZlcnRleEJ1ZmZlcjk6Om1ha2VWZXJ0ZXhC
dWZmZXI5KGF0dHJpYnV0ZXNbaV0udmVydGV4QnVmZmVyKTsKKworICAgICAgICAgICAgaWYgKG1B
cHBsaWVkVkJzW3N0cmVhbV0uc2VyaWFsICE9IGF0dHJpYnV0ZXNbaV0uc2VyaWFsIHx8CisgICAg
ICAgICAgICAgICAgbUFwcGxpZWRWQnNbc3RyZWFtXS5zdHJpZGUgIT0gYXR0cmlidXRlc1tpXS5z
dHJpZGUgfHwKKyAgICAgICAgICAgICAgICBtQXBwbGllZFZCc1tzdHJlYW1dLm9mZnNldCAhPSBh
dHRyaWJ1dGVzW2ldLm9mZnNldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXZp
Y2UtPlNldFN0cmVhbVNvdXJjZShzdHJlYW0sIHZlcnRleEJ1ZmZlci0+Z2V0QnVmZmVyKCksIGF0
dHJpYnV0ZXNbaV0ub2Zmc2V0LCBhdHRyaWJ1dGVzW2ldLnN0cmlkZSk7CisgICAgICAgICAgICAg
ICAgbUFwcGxpZWRWQnNbc3RyZWFtXS5zZXJpYWwgPSBhdHRyaWJ1dGVzW2ldLnNlcmlhbDsKKyAg
ICAgICAgICAgICAgICBtQXBwbGllZFZCc1tzdHJlYW1dLnN0cmlkZSA9IGF0dHJpYnV0ZXNbaV0u
c3RyaWRlOworICAgICAgICAgICAgICAgIG1BcHBsaWVkVkJzW3N0cmVhbV0ub2Zmc2V0ID0gYXR0
cmlidXRlc1tpXS5vZmZzZXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVsZW1lbnQt
PlN0cmVhbSA9IHN0cmVhbTsKKyAgICAgICAgICAgIGVsZW1lbnQtPk9mZnNldCA9IDA7CisgICAg
ICAgICAgICBlbGVtZW50LT5UeXBlID0gYXR0cmlidXRlc1tpXS5hdHRyaWJ1dGUtPm1BcnJheUVu
YWJsZWQgPyB2ZXJ0ZXhCdWZmZXItPmdldERlY2xUeXBlKCphdHRyaWJ1dGVzW2ldLmF0dHJpYnV0
ZSkgOiBEM0RERUNMVFlQRV9GTE9BVDQ7CisgICAgICAgICAgICBlbGVtZW50LT5NZXRob2QgPSBE
M0RERUNMTUVUSE9EX0RFRkFVTFQ7CisgICAgICAgICAgICBlbGVtZW50LT5Vc2FnZSA9IEQzRERF
Q0xVU0FHRV9URVhDT09SRDsKKyAgICAgICAgICAgIGVsZW1lbnQtPlVzYWdlSW5kZXggPSBwcm9n
cmFtQmluYXJ5LT5nZXRTZW1hbnRpY0luZGV4KGkpOworICAgICAgICAgICAgZWxlbWVudCsrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGluc3RhbmNlcyA9PSAwIHx8IGluc3RhbmNlZEF0
dHJpYnV0ZSA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgIHsKKyAgICAgICAgaWYgKG1J
bnN0YW5jaW5nRW5hYmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZGV2aWNlLT5TZXRTdHJlYW1Tb3VyY2VGcmVxKGksIDEpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBtSW5zdGFuY2luZ0VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBEM0RWRVJURVhFTEVNRU5UOSBlbmQgPSBEM0RERUNM
X0VORCgpOworICAgICooZWxlbWVudCsrKSA9IGVuZDsKKworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgTlVNX1ZFUlRFWF9ERUNMX0NBQ0hFX0VOVFJJRVM7IGkrKykKKyAgICB7CisgICAgICAgIFZl
cnRleERlY2xDYWNoZUVudHJ5ICplbnRyeSA9ICZtVmVydGV4RGVjbENhY2hlW2ldOworICAgICAg
ICBpZiAobWVtY21wKGVudHJ5LT5jYWNoZWRFbGVtZW50cywgZWxlbWVudHMsIChlbGVtZW50IC0g
ZWxlbWVudHMpICogc2l6ZW9mKEQzRFZFUlRFWEVMRU1FTlQ5KSkgPT0gMCAmJiBlbnRyeS0+dmVy
dGV4RGVjbGFyYXRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGVudHJ5LT5scnVDb3VudCA9
ICsrbU1heExydTsKKyAgICAgICAgICAgIGlmKGVudHJ5LT52ZXJ0ZXhEZWNsYXJhdGlvbiAhPSBt
TGFzdFNldFZEZWNsKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRldmljZS0+U2V0
VmVydGV4RGVjbGFyYXRpb24oZW50cnktPnZlcnRleERlY2xhcmF0aW9uKTsKKyAgICAgICAgICAg
ICAgICBtTGFzdFNldFZEZWNsID0gZW50cnktPnZlcnRleERlY2xhcmF0aW9uOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gR0xfTk9fRVJST1I7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBWZXJ0ZXhEZWNsQ2FjaGVFbnRyeSAqbGFzdENhY2hlID0gbVZlcnRleERlY2xDYWNo
ZTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTlVNX1ZFUlRFWF9ERUNMX0NBQ0hFX0VOVFJJ
RVM7IGkrKykKKyAgICB7CisgICAgICAgIGlmIChtVmVydGV4RGVjbENhY2hlW2ldLmxydUNvdW50
IDwgbGFzdENhY2hlLT5scnVDb3VudCkKKyAgICAgICAgeworICAgICAgICAgICAgbGFzdENhY2hl
ID0gJm1WZXJ0ZXhEZWNsQ2FjaGVbaV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobGFz
dENhY2hlLT52ZXJ0ZXhEZWNsYXJhdGlvbiAhPSBOVUxMKQorICAgIHsKKyAgICAgICAgbGFzdENh
Y2hlLT52ZXJ0ZXhEZWNsYXJhdGlvbi0+UmVsZWFzZSgpOworICAgICAgICBsYXN0Q2FjaGUtPnZl
cnRleERlY2xhcmF0aW9uID0gTlVMTDsKKyAgICAgICAgLy8gbUxhc3RTZXRWRGVjbCBpcyBzZXQg
dG8gdGhlIHJlcGxhY2VtZW50LCBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5CisgICAgICAgIC8v
IGFib3V0IGl0LgorICAgIH0KKworICAgIG1lbWNweShsYXN0Q2FjaGUtPmNhY2hlZEVsZW1lbnRz
LCBlbGVtZW50cywgKGVsZW1lbnQgLSBlbGVtZW50cykgKiBzaXplb2YoRDNEVkVSVEVYRUxFTUVO
VDkpKTsKKyAgICBkZXZpY2UtPkNyZWF0ZVZlcnRleERlY2xhcmF0aW9uKGVsZW1lbnRzLCAmbGFz
dENhY2hlLT52ZXJ0ZXhEZWNsYXJhdGlvbik7CisgICAgZGV2aWNlLT5TZXRWZXJ0ZXhEZWNsYXJh
dGlvbihsYXN0Q2FjaGUtPnZlcnRleERlY2xhcmF0aW9uKTsKKyAgICBtTGFzdFNldFZEZWNsID0g
bGFzdENhY2hlLT52ZXJ0ZXhEZWNsYXJhdGlvbjsKKyAgICBsYXN0Q2FjaGUtPmxydUNvdW50ID0g
KyttTWF4THJ1OworCisgICAgcmV0dXJuIEdMX05PX0VSUk9SOworfQorCit2b2lkIFZlcnRleERl
Y2xhcmF0aW9uQ2FjaGU6Om1hcmtTdGF0ZURpcnR5KCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7CisgICAgICAgIG1BcHBsaWVk
VkJzW2ldLnNlcmlhbCA9IDA7CisgICAgfQorCisgICAgbUxhc3RTZXRWRGVjbCA9IE5VTEw7Cisg
ICAgbUluc3RhbmNpbmdFbmFibGVkID0gdHJ1ZTsgICAvLyBGb3JjZXMgaXQgdG8gYmUgZGlzYWJs
ZWQgd2hlbiBub3QgdXNlZAorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRl
eERlY2xhcmF0aW9uQ2FjaGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGVjbGFyYXRpb25DYWNoZS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVmVydGV4RGVjbGFy
YXRpb25DYWNoZS5oOiBEZWZpbmVzIGEgaGVscGVyIGNsYXNzIHRvIGNvbnN0cnVjdCBhbmQgY2Fj
aGUgdmVydGV4IGRlY2xhcmF0aW9ucy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfVkVS
VEVYREVDTEFSQVRJT05DQUNIRV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJfVkVSVEVY
REVDTEFSQVRJT05DQUNIRV9IXworCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRl
eERhdGFNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgVmVydGV4RGF0YU1hbmFn
ZXI7Cit9CisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hl
Cit7CisgIHB1YmxpYzoKKyAgICBWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlKCk7CisgICAgflZlcnRl
eERlY2xhcmF0aW9uQ2FjaGUoKTsKKworICAgIEdMZW51bSBhcHBseURlY2xhcmF0aW9uKElEaXJl
Y3QzRERldmljZTkgKmRldmljZSwgVHJhbnNsYXRlZEF0dHJpYnV0ZSBhdHRyaWJ1dGVzW10sIGds
OjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5LCBHTHNpemVpIGluc3RhbmNlcywgR0xzaXpl
aSAqcmVwZWF0RHJhdyk7CisKKyAgICB2b2lkIG1hcmtTdGF0ZURpcnR5KCk7CisKKyAgcHJpdmF0
ZToKKyAgICBVSU5UIG1NYXhMcnU7CisKKyAgICBlbnVtIHsgTlVNX1ZFUlRFWF9ERUNMX0NBQ0hF
X0VOVFJJRVMgPSAzMiB9OworCisgICAgc3RydWN0IFZCRGF0YQorICAgIHsKKyAgICAgICAgdW5z
aWduZWQgaW50IHNlcmlhbDsKKyAgICAgICAgdW5zaWduZWQgaW50IHN0cmlkZTsKKyAgICAgICAg
dW5zaWduZWQgaW50IG9mZnNldDsKKyAgICB9OworCisgICAgVkJEYXRhIG1BcHBsaWVkVkJzW2ds
OjpNQVhfVkVSVEVYX0FUVFJJQlNdOworICAgIElEaXJlY3QzRFZlcnRleERlY2xhcmF0aW9uOSAq
bUxhc3RTZXRWRGVjbDsKKyAgICBib29sIG1JbnN0YW5jaW5nRW5hYmxlZDsKKworICAgIHN0cnVj
dCBWZXJ0ZXhEZWNsQ2FjaGVFbnRyeQorICAgIHsKKyAgICAgICAgRDNEVkVSVEVYRUxFTUVOVDkg
Y2FjaGVkRWxlbWVudHNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCUyArIDFdOworICAgICAgICBVSU5U
IGxydUNvdW50OworICAgICAgICBJRGlyZWN0M0RWZXJ0ZXhEZWNsYXJhdGlvbjkgKnZlcnRleERl
Y2xhcmF0aW9uOworICAgIH0gbVZlcnRleERlY2xDYWNoZVtOVU1fVkVSVEVYX0RFQ0xfQ0FDSEVf
RU5UUklFU107Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfVkVSVEVY
REVDTEFSQVRJT05DQUNIRV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9nZW5lcmF0ZW1pcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvZ2VuZXJhdGVtaXAuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
Z2VuZXJhdGVtaXAuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMDMgQEAKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIGdlbmVyYXRlbWlwLmg6IERlZmluZXMgdGhlIEdlbmVyYXRlTWlwIGZ1bmN0
aW9uLCB0ZW1wbGF0ZWQgb24gdGhlIGZvcm1hdAorLy8gdHlwZSBvZiB0aGUgaW1hZ2UgZm9yIHdo
aWNoIG1pcCBsZXZlbHMgYXJlIGJlaW5nIGdlbmVyYXRlZC4KKworI2lmbmRlZiBMSUJHTEVTVjJf
UkVOREVSRVJfR0VORVJBVEVNSVBfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX0dFTkVS
QVRFTUlQX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWF0aHV0aWwuaCIKKworbmFtZXNwYWNl
IHJ4Cit7CitzdHJ1Y3QgTDgKK3sKKyAgICB1bnNpZ25lZCBjaGFyIEw7CisKKyAgICBzdGF0aWMg
dm9pZCBhdmVyYWdlKEw4ICpkc3QsIGNvbnN0IEw4ICpzcmMxLCBjb25zdCBMOCAqc3JjMikKKyAg
ICB7CisgICAgICAgIGRzdC0+TCA9ICgoc3JjMS0+TCBeIHNyYzItPkwpID4+IDEpICsgKHNyYzEt
PkwgJiBzcmMyLT5MKTsKKyAgICB9Cit9OworCit0eXBlZGVmIEw4IFI4OyAvLyBSOCB0eXBlIGlz
IGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IGZvciBtaXAgcHVycG9zZXMKK3R5cGVkZWYgTDggQTg7
IC8vIEE4IHR5cGUgaXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIG1pcCBwdXJwb3Nlcwor
CitzdHJ1Y3QgQThMOAoreworICAgIHVuc2lnbmVkIGNoYXIgTDsKKyAgICB1bnNpZ25lZCBjaGFy
IEE7CisKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEE4TDggKmRzdCwgY29uc3QgQThMOCAqc3Jj
MSwgY29uc3QgQThMOCAqc3JjMikKKyAgICB7CisgICAgICAgICoodW5zaWduZWQgc2hvcnQqKWRz
dCA9ICgoKCoodW5zaWduZWQgc2hvcnQqKXNyYzEgXiAqKHVuc2lnbmVkIHNob3J0KilzcmMyKSAm
IDB4RkVGRSkgPj4gMSkgKyAoKih1bnNpZ25lZCBzaG9ydCopc3JjMSAmICoodW5zaWduZWQgc2hv
cnQqKXNyYzIpOworICAgIH0KK307CisKK3R5cGVkZWYgQThMOCBSOEc4OyAvLyBSOEc4IHR5cGUg
aXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIG1pcCBwdXJwb3NlcworCitzdHJ1Y3QgQThS
OEc4QjgKK3sKKyAgICB1bnNpZ25lZCBjaGFyIEI7CisgICAgdW5zaWduZWQgY2hhciBHOworICAg
IHVuc2lnbmVkIGNoYXIgUjsKKyAgICB1bnNpZ25lZCBjaGFyIEE7CisKKyAgICBzdGF0aWMgdm9p
ZCBhdmVyYWdlKEE4UjhHOEI4ICpkc3QsIGNvbnN0IEE4UjhHOEI4ICpzcmMxLCBjb25zdCBBOFI4
RzhCOCAqc3JjMikKKyAgICB7CisgICAgICAgICoodW5zaWduZWQgaW50Kilkc3QgPSAoKCgqKHVu
c2lnbmVkIGludCopc3JjMSBeICoodW5zaWduZWQgaW50KilzcmMyKSAmIDB4RkVGRUZFRkUpID4+
IDEpICsgKCoodW5zaWduZWQgaW50KilzcmMxICYgKih1bnNpZ25lZCBpbnQqKXNyYzIpOworICAg
IH0KK307CisKK3R5cGVkZWYgQThSOEc4QjggUjhHOEI4QTg7IC8vIFI4RzhCOEE4IHR5cGUgaXMg
ZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIG1pcCBwdXJwb3NlcworCitzdHJ1Y3QgQTE2QjE2
RzE2UjE2RgoreworICAgIHVuc2lnbmVkIHNob3J0IFI7CisgICAgdW5zaWduZWQgc2hvcnQgRzsK
KyAgICB1bnNpZ25lZCBzaG9ydCBCOworICAgIHVuc2lnbmVkIHNob3J0IEE7CisKKyAgICBzdGF0
aWMgdm9pZCBhdmVyYWdlKEExNkIxNkcxNlIxNkYgKmRzdCwgY29uc3QgQTE2QjE2RzE2UjE2RiAq
c3JjMSwgY29uc3QgQTE2QjE2RzE2UjE2RiAqc3JjMikKKyAgICB7CisgICAgICAgIGRzdC0+UiA9
IGdsOjpmbG9hdDMyVG9GbG9hdDE2KChnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMxLT5SKSArIGds
OjpmbG9hdDE2VG9GbG9hdDMyKHNyYzItPlIpKSAqIDAuNWYpOworICAgICAgICBkc3QtPkcgPSBn
bDo6ZmxvYXQzMlRvRmxvYXQxNigoZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjMS0+RykgKyBnbDo6
ZmxvYXQxNlRvRmxvYXQzMihzcmMyLT5HKSkgKiAwLjVmKTsKKyAgICAgICAgZHN0LT5CID0gZ2w6
OmZsb2F0MzJUb0Zsb2F0MTYoKGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYzEtPkIpICsgZ2w6OmZs
b2F0MTZUb0Zsb2F0MzIoc3JjMi0+QikpICogMC41Zik7CisgICAgICAgIGRzdC0+QSA9IGdsOjpm
bG9hdDMyVG9GbG9hdDE2KChnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMxLT5BKSArIGdsOjpmbG9h
dDE2VG9GbG9hdDMyKHNyYzItPkEpKSAqIDAuNWYpOworICAgIH0KK307CisKK3N0cnVjdCBSMTZG
Cit7CisgICAgdW5zaWduZWQgc2hvcnQgUjsKKworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjE2
RiAqZHN0LCBjb25zdCBSMTZGICpzcmMxLCBjb25zdCBSMTZGICpzcmMyKQorICAgIHsKKyAgICAg
ICAgZHN0LT5SID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoKGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNy
YzEtPlIpICsgZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjMi0+UikpICogMC41Zik7CisgICAgfQor
fTsKKworc3RydWN0IFIxNkcxNkYKK3sKKyAgICB1bnNpZ25lZCBzaG9ydCBSOworICAgIHVuc2ln
bmVkIHNob3J0IEc7CisKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIxNkcxNkYgKmRzdCwgY29u
c3QgUjE2RzE2RiAqc3JjMSwgY29uc3QgUjE2RzE2RiAqc3JjMikKKyAgICB7CisgICAgICAgIGRz
dC0+UiA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KChnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMxLT5S
KSArIGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYzItPlIpKSAqIDAuNWYpOworICAgICAgICBkc3Qt
PkcgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNigoZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjMS0+Rykg
KyBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMyLT5HKSkgKiAwLjVmKTsKKyAgICB9Cit9OworCitz
dHJ1Y3QgQTMyQjMyRzMyUjMyRgoreworICAgIGZsb2F0IFI7CisgICAgZmxvYXQgRzsKKyAgICBm
bG9hdCBCOworICAgIGZsb2F0IEE7CisKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEEzMkIzMkcz
MlIzMkYgKmRzdCwgY29uc3QgQTMyQjMyRzMyUjMyRiAqc3JjMSwgY29uc3QgQTMyQjMyRzMyUjMy
RiAqc3JjMikKKyAgICB7CisgICAgICAgIGRzdC0+UiA9IChzcmMxLT5SICsgc3JjMi0+UikgKiAw
LjVmOworICAgICAgICBkc3QtPkcgPSAoc3JjMS0+RyArIHNyYzItPkcpICogMC41ZjsKKyAgICAg
ICAgZHN0LT5CID0gKHNyYzEtPkIgKyBzcmMyLT5CKSAqIDAuNWY7CisgICAgICAgIGRzdC0+QSA9
IChzcmMxLT5BICsgc3JjMi0+QSkgKiAwLjVmOworICAgIH0KK307CisKK3N0cnVjdCBSMzJGCit7
CisgICAgZmxvYXQgUjsKKworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjMyRiAqZHN0LCBjb25z
dCBSMzJGICpzcmMxLCBjb25zdCBSMzJGICpzcmMyKQorICAgIHsKKyAgICAgICAgZHN0LT5SID0g
KHNyYzEtPlIgKyBzcmMyLT5SKSAqIDAuNWY7CisgICAgfQorfTsKKworc3RydWN0IFIzMkczMkYK
K3sKKyAgICBmbG9hdCBSOworICAgIGZsb2F0IEc7CisKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdl
KFIzMkczMkYgKmRzdCwgY29uc3QgUjMyRzMyRiAqc3JjMSwgY29uc3QgUjMyRzMyRiAqc3JjMikK
KyAgICB7CisgICAgICAgIGRzdC0+UiA9IChzcmMxLT5SICsgc3JjMi0+UikgKiAwLjVmOworICAg
ICAgICBkc3QtPkcgPSAoc3JjMS0+RyArIHNyYzItPkcpICogMC41ZjsKKyAgICB9Cit9OworCitz
dHJ1Y3QgUjMyRzMyQjMyRgoreworICAgIGZsb2F0IFI7CisgICAgZmxvYXQgRzsKKyAgICBmbG9h
dCBCOworCisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMzJHMzJCMzJGICpkc3QsIGNvbnN0IFIz
MkczMkIzMkYgKnNyYzEsIGNvbnN0IFIzMkczMkIzMkYgKnNyYzIpCisgICAgeworICAgICAgICBk
c3QtPlIgPSAoc3JjMS0+UiArIHNyYzItPlIpICogMC41ZjsKKyAgICAgICAgZHN0LT5HID0gKHNy
YzEtPkcgKyBzcmMyLT5HKSAqIDAuNWY7CisgICAgICAgIGRzdC0+QiA9IChzcmMxLT5CICsgc3Jj
Mi0+QikgKiAwLjVmOworICAgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGlj
IHZvaWQgR2VuZXJhdGVNaXAodW5zaWduZWQgaW50IHNvdXJjZVdpZHRoLCB1bnNpZ25lZCBpbnQg
c291cmNlSGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hh
ciAqc291cmNlRGF0YSwgaW50IHNvdXJjZVBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgY2hhciAqZGVzdERhdGEsIGludCBkZXN0UGl0Y2gpCit7CisgICAgdW5zaWduZWQg
aW50IG1pcFdpZHRoID0gc3RkOjptYXgoMVUsIHNvdXJjZVdpZHRoID4+IDEpOworICAgIHVuc2ln
bmVkIGludCBtaXBIZWlnaHQgPSBzdGQ6Om1heCgxVSwgc291cmNlSGVpZ2h0ID4+IDEpOworCisg
ICAgaWYgKHNvdXJjZUhlaWdodCA9PSAxKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNvdXJjZVdp
ZHRoICE9IDEpOworCisgICAgICAgIGNvbnN0IFQgKnNyYyA9IChjb25zdCBUKilzb3VyY2VEYXRh
OworICAgICAgICBUICpkc3QgPSAoVCopZGVzdERhdGE7CisKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgeCA9IDA7IHggPCBtaXBXaWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBU
OjphdmVyYWdlKCZkc3RbeF0sICZzcmNbeCAqIDJdLCAmc3JjW3ggKiAyICsgMV0pOworICAgICAg
ICB9CisgICAgfQorICAgIGVsc2UgaWYgKHNvdXJjZVdpZHRoID09IDEpCisgICAgeworICAgICAg
ICBBU1NFUlQoc291cmNlSGVpZ2h0ICE9IDEpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaW50
IHkgPSAwOyB5IDwgbWlwSGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0
IFQgKnNyYzAgPSAoY29uc3QgVCopKHNvdXJjZURhdGEgKyB5ICogMiAqIHNvdXJjZVBpdGNoKTsK
KyAgICAgICAgICAgIGNvbnN0IFQgKnNyYzEgPSAoY29uc3QgVCopKHNvdXJjZURhdGEgKyB5ICog
MiAqIHNvdXJjZVBpdGNoICsgc291cmNlUGl0Y2gpOworICAgICAgICAgICAgVCAqZHN0ID0gKFQq
KShkZXN0RGF0YSArIHkgKiBkZXN0UGl0Y2gpOworCisgICAgICAgICAgICBUOjphdmVyYWdlKGRz
dCwgc3JjMCwgc3JjMSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgeSA9IDA7IHkgPCBtaXBIZWlnaHQ7IHkrKykKKyAgICAgICAg
eworICAgICAgICAgICAgY29uc3QgVCAqc3JjMCA9IChjb25zdCBUKikoc291cmNlRGF0YSArIHkg
KiAyICogc291cmNlUGl0Y2gpOworICAgICAgICAgICAgY29uc3QgVCAqc3JjMSA9IChjb25zdCBU
Kikoc291cmNlRGF0YSArIHkgKiAyICogc291cmNlUGl0Y2ggKyBzb3VyY2VQaXRjaCk7CisgICAg
ICAgICAgICBUICpkc3QgPSAoVCopKGRlc3REYXRhICsgeSAqIGRlc3RQaXRjaCk7CisKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaW50IHggPSAwOyB4IDwgbWlwV2lkdGg7IHgrKykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBUIHRtcDA7CisgICAgICAgICAgICAgICAgVCB0bXAx
OworCisgICAgICAgICAgICAgICAgVDo6YXZlcmFnZSgmdG1wMCwgJnNyYzBbeCAqIDJdLCAmc3Jj
MFt4ICogMiArIDFdKTsKKyAgICAgICAgICAgICAgICBUOjphdmVyYWdlKCZ0bXAxLCAmc3JjMVt4
ICogMl0sICZzcmMxW3ggKiAyICsgMV0pOworICAgICAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoJmRz
dFt4XSwgJnRtcDAsICZ0bXAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
K30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9HRU5FUkFURU1JUF9IXwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlf
dXRpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxz
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MDAgQEAKKyNpbmNsdWRlICJwcmVjb21waWxl
ZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gcmVuZGVyZXI5X3V0aWxzLmNwcDogQ29udmVy
c2lvbiBmdW5jdGlvbnMgYW5kIG90aGVyIHV0aWxpdHkgcm91dGluZXMKKy8vIHNwZWNpZmljIHRv
IHRoZSBEM0Q5IHJlbmRlcmVyLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3JlbmRl
cmVyOV91dGlscy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9Db250ZXh0LmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFt
ZXNwYWNlIGdsX2QzZDkKK3sKKworRDNEQ01QRlVOQyBDb252ZXJ0Q29tcGFyaXNvbihHTGVudW0g
Y29tcGFyaXNvbikKK3sKKyAgICBEM0RDTVBGVU5DIGQzZENvbXAgPSBEM0RDTVBfQUxXQVlTOwor
ICAgIHN3aXRjaCAoY29tcGFyaXNvbikKKyAgICB7CisgICAgICBjYXNlIEdMX05FVkVSOiAgICBk
M2RDb21wID0gRDNEQ01QX05FVkVSOyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FMV0FZ
UzogICBkM2RDb21wID0gRDNEQ01QX0FMV0FZUzsgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X0xFU1M6ICAgICBkM2RDb21wID0gRDNEQ01QX0xFU1M7ICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX0xFUVVBTDogICBkM2RDb21wID0gRDNEQ01QX0xFU1NFUVVBTDsgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX0VRVUFMOiAgICBkM2RDb21wID0gRDNEQ01QX0VRVUFMOyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX0dSRUFURVI6ICBkM2RDb21wID0gRDNEQ01QX0dSRUFURVI7ICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0dFUVVBTDogICBkM2RDb21wID0gRDNEQ01QX0dSRUFU
RVJFUVVBTDsgYnJlYWs7CisgICAgICBjYXNlIEdMX05PVEVRVUFMOiBkM2RDb21wID0gRDNEQ01Q
X05PVEVRVUFMOyAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAg
IH0KKworICAgIHJldHVybiBkM2RDb21wOworfQorCitEM0RDT0xPUiBDb252ZXJ0Q29sb3IoZ2w6
OkNvbG9yIGNvbG9yKQoreworICAgIHJldHVybiBEM0RDT0xPUl9SR0JBKGdsOjp1bm9ybTw4Pihj
b2xvci5yZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjp1bm9ybTw4Pihjb2xvci5n
cmVlbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OnVub3JtPDg+KGNvbG9yLmJsdWUp
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjp1bm9ybTw4Pihjb2xvci5hbHBoYSkpOwor
fQorCitEM0RCTEVORCBDb252ZXJ0QmxlbmRGdW5jKEdMZW51bSBibGVuZCkKK3sKKyAgICBEM0RC
TEVORCBkM2RCbGVuZCA9IEQzREJMRU5EX1pFUk87CisKKyAgICBzd2l0Y2ggKGJsZW5kKQorICAg
IHsKKyAgICAgIGNhc2UgR0xfWkVSTzogICAgICAgICAgICAgICAgICAgICBkM2RCbGVuZCA9IEQz
REJMRU5EX1pFUk87ICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfT05FOiAgICAgICAg
ICAgICAgICAgICAgICBkM2RCbGVuZCA9IEQzREJMRU5EX09ORTsgICAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfU1JDX0NPTE9SOiAgICAgICAgICAgICAgICBkM2RCbGVuZCA9IEQzREJM
RU5EX1NSQ0NPTE9SOyAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19D
T0xPUjogICAgICBkM2RCbGVuZCA9IEQzREJMRU5EX0lOVlNSQ0NPTE9SOyAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfRFNUX0NPTE9SOiAgICAgICAgICAgICAgICBkM2RCbGVuZCA9IEQzREJMRU5E
X0RFU1RDT0xPUjsgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9DT0xP
UjogICAgICBkM2RCbGVuZCA9IEQzREJMRU5EX0lOVkRFU1RDT0xPUjsgICBicmVhazsKKyAgICAg
IGNhc2UgR0xfU1JDX0FMUEhBOiAgICAgICAgICAgICAgICBkM2RCbGVuZCA9IEQzREJMRU5EX1NS
Q0FMUEhBOyAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQTog
ICAgICBkM2RCbGVuZCA9IEQzREJMRU5EX0lOVlNSQ0FMUEhBOyAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfRFNUX0FMUEhBOiAgICAgICAgICAgICAgICBkM2RCbGVuZCA9IEQzREJMRU5EX0RFU1RB
TFBIQTsgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9BTFBIQTogICAg
ICBkM2RCbGVuZCA9IEQzREJMRU5EX0lOVkRFU1RBTFBIQTsgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfQ09OU1RBTlRfQ09MT1I6ICAgICAgICAgICBkM2RCbGVuZCA9IEQzREJMRU5EX0JMRU5ERkFD
VE9SOyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOiBk
M2RCbGVuZCA9IEQzREJMRU5EX0lOVkJMRU5ERkFDVE9SOyBicmVhazsKKyAgICAgIGNhc2UgR0xf
Q09OU1RBTlRfQUxQSEE6ICAgICAgICAgICBkM2RCbGVuZCA9IEQzREJMRU5EX0JMRU5ERkFDVE9S
OyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOiBkM2RC
bGVuZCA9IEQzREJMRU5EX0lOVkJMRU5ERkFDVE9SOyBicmVhazsKKyAgICAgIGNhc2UgR0xfU1JD
X0FMUEhBX1NBVFVSQVRFOiAgICAgICBkM2RCbGVuZCA9IEQzREJMRU5EX1NSQ0FMUEhBU0FUOyAg
ICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0
dXJuIGQzZEJsZW5kOworfQorCitEM0RCTEVORE9QIENvbnZlcnRCbGVuZE9wKEdMZW51bSBibGVu
ZE9wKQoreworICAgIEQzREJMRU5ET1AgZDNkQmxlbmRPcCA9IEQzREJMRU5ET1BfQUREOworCisg
ICAgc3dpdGNoIChibGVuZE9wKQorICAgIHsKKyAgICAgIGNhc2UgR0xfRlVOQ19BREQ6ICAgICAg
ICAgICAgICBkM2RCbGVuZE9wID0gRDNEQkxFTkRPUF9BREQ7ICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0ZVTkNfU1VCVFJBQ1Q6ICAgICAgICAgZDNkQmxlbmRPcCA9IEQzREJMRU5ET1Bf
U1VCVFJBQ1Q7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1Q6
IGQzZEJsZW5kT3AgPSBEM0RCTEVORE9QX1JFVlNVQlRSQUNUOyBicmVhazsKKyAgICAgIGRlZmF1
bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIGQzZEJsZW5kT3A7Cit9CisK
K0QzRFNURU5DSUxPUCBDb252ZXJ0U3RlbmNpbE9wKEdMZW51bSBzdGVuY2lsT3ApCit7CisgICAg
RDNEU1RFTkNJTE9QIGQzZFN0ZW5jaWxPcCA9IEQzRFNURU5DSUxPUF9LRUVQOworCisgICAgc3dp
dGNoIChzdGVuY2lsT3ApCisgICAgeworICAgICAgY2FzZSBHTF9aRVJPOiAgICAgIGQzZFN0ZW5j
aWxPcCA9IEQzRFNURU5DSUxPUF9aRVJPOyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfS0VFUDog
ICAgICBkM2RTdGVuY2lsT3AgPSBEM0RTVEVOQ0lMT1BfS0VFUDsgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1JFUExBQ0U6ICAgZDNkU3RlbmNpbE9wID0gRDNEU1RFTkNJTE9QX1JFUExBQ0U7IGJy
ZWFrOworICAgICAgY2FzZSBHTF9JTkNSOiAgICAgIGQzZFN0ZW5jaWxPcCA9IEQzRFNURU5DSUxP
UF9JTkNSU0FUOyBicmVhazsKKyAgICAgIGNhc2UgR0xfREVDUjogICAgICBkM2RTdGVuY2lsT3Ag
PSBEM0RTVEVOQ0lMT1BfREVDUlNBVDsgYnJlYWs7CisgICAgICBjYXNlIEdMX0lOVkVSVDogICAg
ZDNkU3RlbmNpbE9wID0gRDNEU1RFTkNJTE9QX0lOVkVSVDsgIGJyZWFrOworICAgICAgY2FzZSBH
TF9JTkNSX1dSQVA6IGQzZFN0ZW5jaWxPcCA9IEQzRFNURU5DSUxPUF9JTkNSOyAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfREVDUl9XUkFQOiBkM2RTdGVuY2lsT3AgPSBEM0RTVEVOQ0lMT1BfREVD
UjsgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAg
IHJldHVybiBkM2RTdGVuY2lsT3A7Cit9CisKK0QzRFRFWFRVUkVBRERSRVNTIENvbnZlcnRUZXh0
dXJlV3JhcChHTGVudW0gd3JhcCkKK3sKKyAgICBEM0RURVhUVVJFQUREUkVTUyBkM2RXcmFwID0g
RDNEVEFERFJFU1NfV1JBUDsKKworICAgIHN3aXRjaCAod3JhcCkKKyAgICB7CisgICAgICBjYXNl
IEdMX1JFUEVBVDogICAgICAgICAgICBkM2RXcmFwID0gRDNEVEFERFJFU1NfV1JBUDsgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfQ0xBTVBfVE9fRURHRTogICAgIGQzZFdyYXAgPSBEM0RUQUREUkVT
U19DTEFNUDsgIGJyZWFrOworICAgICAgY2FzZSBHTF9NSVJST1JFRF9SRVBFQVQ6ICAgZDNkV3Jh
cCA9IEQzRFRBRERSRVNTX01JUlJPUjsgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJM
RSgpOworICAgIH0KKworICAgIHJldHVybiBkM2RXcmFwOworfQorCitEM0RDVUxMIENvbnZlcnRD
dWxsTW9kZShHTGVudW0gY3VsbEZhY2UsIEdMZW51bSBmcm9udEZhY2UpCit7CisgICAgRDNEQ1VM
TCBjdWxsID0gRDNEQ1VMTF9DQ1c7CisgICAgc3dpdGNoIChjdWxsRmFjZSkKKyAgICB7CisgICAg
ICBjYXNlIEdMX0ZST05UOgorICAgICAgICBjdWxsID0gKGZyb250RmFjZSA9PSBHTF9DQ1cgPyBE
M0RDVUxMX0NXIDogRDNEQ1VMTF9DQ1cpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
QkFDSzoKKyAgICAgICAgY3VsbCA9IChmcm9udEZhY2UgPT0gR0xfQ0NXID8gRDNEQ1VMTF9DQ1cg
OiBEM0RDVUxMX0NXKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZST05UX0FORF9C
QUNLOgorICAgICAgICBjdWxsID0gRDNEQ1VMTF9OT05FOyAvLyBjdWxsaW5nIHdpbGwgYmUgaGFu
ZGxlZCBkdXJpbmcgZHJhdworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hB
QkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIGN1bGw7Cit9CisKK0QzRENVQkVNQVBfRkFDRVMg
Q29udmVydEN1YmVGYWNlKEdMZW51bSBjdWJlRmFjZSkKK3sKKyAgICBEM0RDVUJFTUFQX0ZBQ0VT
IGZhY2UgPSBEM0RDVUJFTUFQX0ZBQ0VfUE9TSVRJVkVfWDsKKworICAgIHN3aXRjaCAoY3ViZUZh
Y2UpCisgICAgeworICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6Cisg
ICAgICAgIGZhY2UgPSBEM0RDVUJFTUFQX0ZBQ0VfUE9TSVRJVkVfWDsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDoKKyAgICAgICAgZmFj
ZSA9IEQzRENVQkVNQVBfRkFDRV9ORUdBVElWRV9YOworICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZOgorICAgICAgICBmYWNlID0gRDNEQ1VC
RU1BUF9GQUNFX1BPU0lUSVZFX1k7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9URVhU
VVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6CisgICAgICAgIGZhY2UgPSBEM0RDVUJFTUFQX0ZBQ0Vf
TkVHQVRJVkVfWTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWjoKKyAgICAgICAgZmFjZSA9IEQzRENVQkVNQVBfRkFDRV9QT1NJVElWRV9a
OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9aOgorICAgICAgICBmYWNlID0gRDNEQ1VCRU1BUF9GQUNFX05FR0FUSVZFX1o7CisgICAgICAg
IGJyZWFrOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFjZTsKK30KKworRFdPUkQgQ29udmVydENvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVl
biwgYm9vbCBibHVlLCBib29sIGFscGhhKQoreworICAgIHJldHVybiAocmVkICAgPyBEM0RDT0xP
UldSSVRFRU5BQkxFX1JFRCAgIDogMCkgfAorICAgICAgICAgICAoZ3JlZW4gPyBEM0RDT0xPUldS
SVRFRU5BQkxFX0dSRUVOIDogMCkgfAorICAgICAgICAgICAoYmx1ZSAgPyBEM0RDT0xPUldSSVRF
RU5BQkxFX0JMVUUgIDogMCkgfAorICAgICAgICAgICAoYWxwaGEgPyBEM0RDT0xPUldSSVRFRU5B
QkxFX0FMUEhBIDogMCk7Cit9CisKK0QzRFRFWFRVUkVGSUxURVJUWVBFIENvbnZlcnRNYWdGaWx0
ZXIoR0xlbnVtIG1hZ0ZpbHRlciwgZmxvYXQgbWF4QW5pc290cm9weSkKK3sKKyAgICBpZiAobWF4
QW5pc290cm9weSA+IDEuMGYpCisgICAgeworICAgICAgICByZXR1cm4gRDNEVEVYRl9BTklTT1RS
T1BJQzsKKyAgICB9CisKKyAgICBEM0RURVhUVVJFRklMVEVSVFlQRSBkM2RNYWdGaWx0ZXIgPSBE
M0RURVhGX1BPSU5UOworICAgIHN3aXRjaCAobWFnRmlsdGVyKQorICAgIHsKKyAgICAgIGNhc2Ug
R0xfTkVBUkVTVDogZDNkTWFnRmlsdGVyID0gRDNEVEVYRl9QT0lOVDsgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9MSU5FQVI6ICBkM2RNYWdGaWx0ZXIgPSBEM0RURVhGX0xJTkVBUjsgYnJlYWs7Cisg
ICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBkM2RNYWdG
aWx0ZXI7Cit9CisKK3ZvaWQgQ29udmVydE1pbkZpbHRlcihHTGVudW0gbWluRmlsdGVyLCBEM0RU
RVhUVVJFRklMVEVSVFlQRSAqZDNkTWluRmlsdGVyLCBEM0RURVhUVVJFRklMVEVSVFlQRSAqZDNk
TWlwRmlsdGVyLCBmbG9hdCBtYXhBbmlzb3Ryb3B5KQoreworICAgIHN3aXRjaCAobWluRmlsdGVy
KQorICAgIHsKKyAgICAgIGNhc2UgR0xfTkVBUkVTVDoKKyAgICAgICAgKmQzZE1pbkZpbHRlciA9
IEQzRFRFWEZfUE9JTlQ7CisgICAgICAgICpkM2RNaXBGaWx0ZXIgPSBEM0RURVhGX05PTkU7Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MSU5FQVI6CisgICAgICAgICpkM2RNaW5GaWx0
ZXIgPSBEM0RURVhGX0xJTkVBUjsKKyAgICAgICAgKmQzZE1pcEZpbHRlciA9IEQzRFRFWEZfTk9O
RTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1Q6
CisgICAgICAgICpkM2RNaW5GaWx0ZXIgPSBEM0RURVhGX1BPSU5UOworICAgICAgICAqZDNkTWlw
RmlsdGVyID0gRDNEVEVYRl9QT0lOVDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJ
TkVBUl9NSVBNQVBfTkVBUkVTVDoKKyAgICAgICAgKmQzZE1pbkZpbHRlciA9IEQzRFRFWEZfTElO
RUFSOworICAgICAgICAqZDNkTWlwRmlsdGVyID0gRDNEVEVYRl9QT0lOVDsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUjoKKyAgICAgICAgKmQzZE1p
bkZpbHRlciA9IEQzRFRFWEZfUE9JTlQ7CisgICAgICAgICpkM2RNaXBGaWx0ZXIgPSBEM0RURVhG
X0xJTkVBUjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJTkVBUl9NSVBNQVBfTElO
RUFSOgorICAgICAgICAqZDNkTWluRmlsdGVyID0gRDNEVEVYRl9MSU5FQVI7CisgICAgICAgICpk
M2RNaXBGaWx0ZXIgPSBEM0RURVhGX0xJTkVBUjsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZh
dWx0OgorICAgICAgICAqZDNkTWluRmlsdGVyID0gRDNEVEVYRl9QT0lOVDsKKyAgICAgICAgKmQz
ZE1pcEZpbHRlciA9IEQzRFRFWEZfTk9ORTsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9
CisKKyAgICBpZiAobWF4QW5pc290cm9weSA+IDEuMGYpCisgICAgeworICAgICAgICAqZDNkTWlu
RmlsdGVyID0gRDNEVEVYRl9BTklTT1RST1BJQzsKKyAgICB9Cit9CisKK0QzREZPUk1BVCBDb252
ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KEdMZW51bSBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3Jt
YXQpCisgICAgeworICAgICAgY2FzZSBHTF9OT05FOiAgICAgICAgICAgICAgICAgcmV0dXJuIEQz
REZNVF9OVUxMOworICAgICAgY2FzZSBHTF9SR0JBNDoKKyAgICAgIGNhc2UgR0xfUkdCNV9BMToK
KyAgICAgIGNhc2UgR0xfUkdCQThfT0VTOiAgICAgICAgICAgIHJldHVybiBEM0RGTVRfQThSOEc4
Qjg7CisgICAgICBjYXNlIEdMX1JHQjU2NTogICAgICAgICAgICAgICByZXR1cm4gRDNERk1UX1I1
RzZCNTsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6ICAgICAgICAgICAgIHJldHVybiBEM0RGTVRf
WDhSOEc4Qjg7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2OgorICAgICAgY2FzZSBH
TF9TVEVOQ0lMX0lOREVYODogICAgICAgCisgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhf
T0VTOiByZXR1cm4gRDNERk1UX0QyNFM4OworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsg
ICAgICAgcmV0dXJuIEQzREZNVF9BOFI4RzhCODsKKyAgICB9Cit9CisKK0QzRE1VTFRJU0FNUExF
X1RZUEUgR2V0TXVsdGlzYW1wbGVUeXBlRnJvbVNhbXBsZXMoR0xzaXplaSBzYW1wbGVzKQorewor
ICAgIGlmIChzYW1wbGVzIDw9IDEpCisgICAgICAgIHJldHVybiBEM0RNVUxUSVNBTVBMRV9OT05F
OworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIChEM0RNVUxUSVNBTVBMRV9UWVBFKXNhbXBsZXM7
Cit9CisKK30KKworbmFtZXNwYWNlIGQzZDlfZ2wKK3sKKwordW5zaWduZWQgaW50IEdldFN0ZW5j
aWxTaXplKEQzREZPUk1BVCBzdGVuY2lsRm9ybWF0KQoreworICAgIGlmIChzdGVuY2lsRm9ybWF0
ID09IEQzREZNVF9JTlRaKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDg7CisgICAgfQorICAgIHN3
aXRjaChzdGVuY2lsRm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRDNERk1UX0QyNEZTODoKKyAg
ICAgIGNhc2UgRDNERk1UX0QyNFM4OgorICAgICAgICByZXR1cm4gODsKKyAgICAgIGNhc2UgRDNE
Rk1UX0QyNFg0UzQ6CisgICAgICAgIHJldHVybiA0OworICAgICAgY2FzZSBEM0RGTVRfRDE1UzE6
CisgICAgICAgIHJldHVybiAxOworICAgICAgY2FzZSBEM0RGTVRfRDE2X0xPQ0tBQkxFOgorICAg
ICAgY2FzZSBEM0RGTVRfRDMyOgorICAgICAgY2FzZSBEM0RGTVRfRDI0WDg6CisgICAgICBjYXNl
IEQzREZNVF9EMzJGX0xPQ0tBQkxFOgorICAgICAgY2FzZSBEM0RGTVRfRDE2OgorICAgICAgICBy
ZXR1cm4gMDsKKyAgICAvL2Nhc2UgRDNERk1UX0QzMl9MT0NLQUJMRTogIHJldHVybiAwOyAgIC8v
IERpcmVjdFggOUV4IG9ubHkKKyAgICAvL2Nhc2UgRDNERk1UX1M4X0xPQ0tBQkxFOiAgIHJldHVy
biA4OyAgIC8vIERpcmVjdFggOUV4IG9ubHkKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biAwOworICAgIH0KK30KKwordW5zaWduZWQgaW50IEdldEFscGhhU2l6ZShEM0RGT1JNQVQgY29s
b3JGb3JtYXQpCit7CisgICAgc3dpdGNoIChjb2xvckZvcm1hdCkKKyAgICB7CisgICAgICBjYXNl
IEQzREZNVF9BMTZCMTZHMTZSMTZGOgorICAgICAgICByZXR1cm4gMTY7CisgICAgICBjYXNlIEQz
REZNVF9BMzJCMzJHMzJSMzJGOgorICAgICAgICByZXR1cm4gMzI7CisgICAgICBjYXNlIEQzREZN
VF9BMlIxMEcxMEIxMDoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgICBjYXNlIEQzREZNVF9BOFI4
RzhCODoKKyAgICAgICAgcmV0dXJuIDg7CisgICAgICBjYXNlIEQzREZNVF9BMVI1RzVCNToKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKKyAgICAgIGNhc2Ug
RDNERk1UX1I1RzZCNToKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gMDsKKyAgICB9Cit9CisKK0dMc2l6ZWkgR2V0U2FtcGxlc0Zyb21NdWx0aXNhbXBs
ZVR5cGUoRDNETVVMVElTQU1QTEVfVFlQRSB0eXBlKQoreworICAgIGlmICh0eXBlID09IEQzRE1V
TFRJU0FNUExFX05PTk1BU0tBQkxFKQorICAgICAgICByZXR1cm4gMDsKKyAgICBlbHNlCisgICAg
ICAgIHJldHVybiB0eXBlOworfQorCitib29sIElzRm9ybWF0Q2hhbm5lbEVxdWl2YWxlbnQoRDNE
Rk9STUFUIGQzZGZvcm1hdCwgR0xlbnVtIGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGQzZGZvcm1h
dCkKKyAgICB7CisgICAgICBjYXNlIEQzREZNVF9MODoKKyAgICAgICAgcmV0dXJuIChmb3JtYXQg
PT0gR0xfTFVNSU5BTkNFKTsKKyAgICAgIGNhc2UgRDNERk1UX0E4TDg6CisgICAgICAgIHJldHVy
biAoZm9ybWF0ID09IEdMX0xVTUlOQU5DRV9BTFBIQSk7CisgICAgICBjYXNlIEQzREZNVF9EWFQx
OgorICAgICAgICByZXR1cm4gKGZvcm1hdCA9PSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVCB8fCBmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCk7CisgICAg
ICBjYXNlIEQzREZNVF9EWFQzOgorICAgICAgICByZXR1cm4gKGZvcm1hdCA9PSBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFKTsKKyAgICAgIGNhc2UgRDNERk1UX0RYVDU6CisgICAg
ICAgIHJldHVybiAoZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEUp
OworICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6CisgICAgICBjYXNlIEQzREZNVF9BMTZCMTZH
MTZSMTZGOgorICAgICAgY2FzZSBEM0RGTVRfQTMyQjMyRzMyUjMyRjoKKyAgICAgICAgcmV0dXJu
IChmb3JtYXQgPT0gR0xfUkdCQSB8fCBmb3JtYXQgPT0gR0xfQkdSQV9FWFQpOworICAgICAgY2Fz
ZSBEM0RGTVRfWDhSOEc4Qjg6CisgICAgICAgIHJldHVybiAoZm9ybWF0ID09IEdMX1JHQik7Cisg
ICAgICBkZWZhdWx0OgorICAgICAgICBpZiAoZDNkZm9ybWF0ID09IEQzREZNVF9JTlRaICYmIGds
OjpJc0RlcHRoVGV4dHVyZShmb3JtYXQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK0dMZW51bSBDb252ZXJ0QmFja0J1ZmZlckZv
cm1hdChEM0RGT1JNQVQgZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsKKyAg
ICAgIGNhc2UgRDNERk1UX0E0UjRHNEI0OiByZXR1cm4gR0xfUkdCQTQ7CisgICAgICBjYXNlIEQz
REZNVF9BOFI4RzhCODogcmV0dXJuIEdMX1JHQkE4X09FUzsKKyAgICAgIGNhc2UgRDNERk1UX0Ex
UjVHNUI1OiByZXR1cm4gR0xfUkdCNV9BMTsKKyAgICAgIGNhc2UgRDNERk1UX1I1RzZCNTogICBy
ZXR1cm4gR0xfUkdCNTY1OworICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6IHJldHVybiBHTF9S
R0I4X09FUzsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQor
CisgICAgcmV0dXJuIEdMX1JHQkE0OworfQorCitHTGVudW0gQ29udmVydERlcHRoU3RlbmNpbEZv
cm1hdChEM0RGT1JNQVQgZm9ybWF0KQoreworICAgIGlmIChmb3JtYXQgPT0gRDNERk1UX0lOVFop
CisgICAgeworICAgICAgICByZXR1cm4gR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM7CisgICAgfQor
ICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRDNERk1UX0QxNjoKKyAgICAg
IGNhc2UgRDNERk1UX0QyNFg4OgorICAgICAgICByZXR1cm4gR0xfREVQVEhfQ09NUE9ORU5UMTY7
CisgICAgICBjYXNlIEQzREZNVF9EMjRTODoKKyAgICAgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RF
TkNJTDhfT0VTOworICAgICAgY2FzZSBEM0RGTVRfVU5LTk9XTjoKKyAgICAgICAgcmV0dXJuIEdM
X05PTkU7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKwor
ICAgIHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKK30KKworR0xlbnVtIENvbnZlcnRS
ZW5kZXJUYXJnZXRGb3JtYXQoRDNERk9STUFUIGZvcm1hdCkKK3sKKyAgICBpZiAoZm9ybWF0ID09
IEQzREZNVF9JTlRaKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RFTkNJTDhf
T0VTOworICAgIH0KKyAgICAKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNl
IEQzREZNVF9BNFI0RzRCNDogcmV0dXJuIEdMX1JHQkE0OworICAgICAgY2FzZSBEM0RGTVRfQThS
OEc4Qjg6IHJldHVybiBHTF9SR0JBOF9PRVM7CisgICAgICBjYXNlIEQzREZNVF9BMVI1RzVCNTog
cmV0dXJuIEdMX1JHQjVfQTE7CisgICAgICBjYXNlIEQzREZNVF9SNUc2QjU6ICAgcmV0dXJuIEdM
X1JHQjU2NTsKKyAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OiByZXR1cm4gR0xfUkdCOF9PRVM7
CisgICAgICBjYXNlIEQzREZNVF9EMTY6CisgICAgICBjYXNlIEQzREZNVF9EMjRYODoKKyAgICAg
ICAgcmV0dXJuIEdMX0RFUFRIX0NPTVBPTkVOVDE2OworICAgICAgY2FzZSBEM0RGTVRfRDI0Uzg6
CisgICAgICAgIHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAgICAgIGNhc2UgRDNE
Rk1UX1VOS05PV046CisgICAgICAgIHJldHVybiBHTF9OT05FOworICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfUkdCQTQ7Cit9CisK
K0dMZW51bSBHZXRFcXVpdmFsZW50Rm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpCit7CisgICAgaWYg
KGZvcm1hdCA9PSBEM0RGTVRfSU5UWikKKyAgICAgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RFTkNJ
TDhfT0VTOworICAgIGlmIChmb3JtYXQgPT0gRDNERk1UX05VTEwpCisgICAgICAgIHJldHVybiBH
TF9OT05FOworCisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEM0RGTVRf
QTRSNEc0QjQ6ICAgICAgICAgICAgIHJldHVybiBHTF9SR0JBNDsKKyAgICAgIGNhc2UgRDNERk1U
X0E4UjhHOEI4OiAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQThfT0VTOworICAgICAgY2FzZSBE
M0RGTVRfQTFSNUc1QjU6ICAgICAgICAgICAgIHJldHVybiBHTF9SR0I1X0ExOworICAgICAgY2Fz
ZSBEM0RGTVRfUjVHNkI1OiAgICAgICAgICAgICAgIHJldHVybiBHTF9SR0I1NjU7CisgICAgICBj
YXNlIEQzREZNVF9YOFI4RzhCODogICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjhfT0VTOworICAg
ICAgY2FzZSBEM0RGTVRfRDE2OiAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9ERVBUSF9DT01Q
T05FTlQxNjsKKyAgICAgIGNhc2UgRDNERk1UX0QyNFM4OiAgICAgICAgICAgICAgICByZXR1cm4g
R0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM7CisgICAgICBjYXNlIEQzREZNVF9VTktOT1dOOiAgICAg
ICAgICAgICAgcmV0dXJuIEdMX05PTkU7CisgICAgICBjYXNlIEQzREZNVF9EWFQxOiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOworICAgICAg
Y2FzZSBEM0RGTVRfRFhUMzogICAgICAgICAgICAgICAgIHJldHVybiBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQzX0FOR0xFOworICAgICAgY2FzZSBEM0RGTVRfRFhUNTogICAgICAgICAgICAg
ICAgIHJldHVybiBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOworICAgICAgY2Fz
ZSBEM0RGTVRfQTMyQjMyRzMyUjMyRjogICAgICAgIHJldHVybiBHTF9SR0JBMzJGX0VYVDsKKyAg
ICAgIGNhc2UgRDNERk1UX0ExNkIxNkcxNlIxNkY6ICAgICAgICByZXR1cm4gR0xfUkdCQTE2Rl9F
WFQ7CisgICAgICBjYXNlIEQzREZNVF9MODogICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0xV
TUlOQU5DRThfRVhUOworICAgICAgY2FzZSBEM0RGTVRfQThMODogICAgICAgICAgICAgICAgIHJl
dHVybiBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQ7CisgICAgICBkZWZhdWx0OiAgICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIEdMX05PTkU7CisgICAgfQorfQorCit9
CisKK25hbWVzcGFjZSBkM2Q5Cit7CisKK2Jvb2wgSXNDb21wcmVzc2VkRm9ybWF0KEQzREZPUk1B
VCBzdXJmYWNlRm9ybWF0KQoreworICAgIHN3aXRjaChzdXJmYWNlRm9ybWF0KQorICAgIHsKKyAg
ICAgIGNhc2UgRDNERk1UX0RYVDE6CisgICAgICBjYXNlIEQzREZNVF9EWFQyOgorICAgICAgY2Fz
ZSBEM0RGTVRfRFhUMzoKKyAgICAgIGNhc2UgRDNERk1UX0RYVDQ6CisgICAgICBjYXNlIEQzREZN
VF9EWFQ1OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3NpemVfdCBDb21wdXRlUm93U2l6ZShEM0RGT1JNQVQg
Zm9ybWF0LCB1bnNpZ25lZCBpbnQgd2lkdGgpCit7CisgICAgaWYgKGZvcm1hdCA9PSBEM0RGTVRf
SU5UWikKKyAgICB7CisgICAgICAgIHJldHVybiA0ICogd2lkdGg7CisgICAgfQorICAgIHN3aXRj
aCAoZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRDNERk1UX0w4OgorICAgICAgICAgIHJldHVy
biAxICogd2lkdGg7CisgICAgICBjYXNlIEQzREZNVF9BOEw4OgorICAgICAgICAgIHJldHVybiAy
ICogd2lkdGg7CisgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKKyAgICAgIGNhc2UgRDNERk1U
X0E4UjhHOEI4OgorICAgICAgICByZXR1cm4gNCAqIHdpZHRoOworICAgICAgY2FzZSBEM0RGTVRf
QTE2QjE2RzE2UjE2RjoKKyAgICAgICAgcmV0dXJuIDggKiB3aWR0aDsKKyAgICAgIGNhc2UgRDNE
Rk1UX0EzMkIzMkczMlIzMkY6CisgICAgICAgIHJldHVybiAxNiAqIHdpZHRoOworICAgICAgY2Fz
ZSBEM0RGTVRfRFhUMToKKyAgICAgICAgcmV0dXJuIDggKiAoKHdpZHRoICsgMykgLyA0KTsKKyAg
ICAgIGNhc2UgRDNERk1UX0RYVDM6CisgICAgICBjYXNlIEQzREZNVF9EWFQ1OgorICAgICAgICBy
ZXR1cm4gMTYgKiAoKHdpZHRoICsgMykgLyA0KTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworfQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRp
bHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL3JlbmRlcmVyOV91dGlscy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEy
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gcmVuZGVy
ZXI5X3V0aWxzLmg6IENvbnZlcnNpb24gZnVuY3Rpb25zIGFuZCBvdGhlciB1dGlsaXR5IHJvdXRp
bmVzIAorLy8gc3BlY2lmaWMgdG8gdGhlIEQzRDkgcmVuZGVyZXIKKworI2lmbmRlZiBMSUJHTEVT
VjJfUkVOREVSRVJfUkVOREVSRVI5X1VUSUxTX0gKKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVS
X1JFTkRFUkVSOV9VVElMU19ICisKKyNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCisK
K2NvbnN0IEQzREZPUk1BVCBEM0RGTVRfSU5UWiA9ICgoRDNERk9STUFUKShNQUtFRk9VUkNDKCdJ
JywnTicsJ1QnLCdaJykpKTsKK2NvbnN0IEQzREZPUk1BVCBEM0RGTVRfTlVMTCA9ICgoRDNERk9S
TUFUKShNQUtFRk9VUkNDKCdOJywnVScsJ0wnLCdMJykpKTsKKworbmFtZXNwYWNlIGdsX2QzZDkK
K3sKKworRDNEQ01QRlVOQyBDb252ZXJ0Q29tcGFyaXNvbihHTGVudW0gY29tcGFyaXNvbik7CitE
M0RDT0xPUiBDb252ZXJ0Q29sb3IoZ2w6OkNvbG9yIGNvbG9yKTsKK0QzREJMRU5EIENvbnZlcnRC
bGVuZEZ1bmMoR0xlbnVtIGJsZW5kKTsKK0QzREJMRU5ET1AgQ29udmVydEJsZW5kT3AoR0xlbnVt
IGJsZW5kT3ApOworRDNEU1RFTkNJTE9QIENvbnZlcnRTdGVuY2lsT3AoR0xlbnVtIHN0ZW5jaWxP
cCk7CitEM0RURVhUVVJFQUREUkVTUyBDb252ZXJ0VGV4dHVyZVdyYXAoR0xlbnVtIHdyYXApOwor
RDNEQ1VMTCBDb252ZXJ0Q3VsbE1vZGUoR0xlbnVtIGN1bGxGYWNlLCBHTGVudW0gZnJvbnRGYWNl
KTsKK0QzRENVQkVNQVBfRkFDRVMgQ29udmVydEN1YmVGYWNlKEdMZW51bSBjdWJlRmFjZSk7CitE
V09SRCBDb252ZXJ0Q29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJv
b2wgYWxwaGEpOworRDNEVEVYVFVSRUZJTFRFUlRZUEUgQ29udmVydE1hZ0ZpbHRlcihHTGVudW0g
bWFnRmlsdGVyLCBmbG9hdCBtYXhBbmlzb3Ryb3B5KTsKK3ZvaWQgQ29udmVydE1pbkZpbHRlcihH
TGVudW0gbWluRmlsdGVyLCBEM0RURVhUVVJFRklMVEVSVFlQRSAqZDNkTWluRmlsdGVyLCBEM0RU
RVhUVVJFRklMVEVSVFlQRSAqZDNkTWlwRmlsdGVyLCBmbG9hdCBtYXhBbmlzb3Ryb3B5KTsKK0Qz
REZPUk1BVCBDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KEdMZW51bSBmb3JtYXQpOworRDNETVVM
VElTQU1QTEVfVFlQRSBHZXRNdWx0aXNhbXBsZVR5cGVGcm9tU2FtcGxlcyhHTHNpemVpIHNhbXBs
ZXMpOworCit9CisKK25hbWVzcGFjZSBkM2Q5X2dsCit7CisKK0dMdWludCBHZXRBbHBoYVNpemUo
RDNERk9STUFUIGNvbG9yRm9ybWF0KTsKK0dMdWludCBHZXRTdGVuY2lsU2l6ZShEM0RGT1JNQVQg
c3RlbmNpbEZvcm1hdCk7CisKK0dMc2l6ZWkgR2V0U2FtcGxlc0Zyb21NdWx0aXNhbXBsZVR5cGUo
RDNETVVMVElTQU1QTEVfVFlQRSB0eXBlKTsKKworYm9vbCBJc0Zvcm1hdENoYW5uZWxFcXVpdmFs
ZW50KEQzREZPUk1BVCBkM2Rmb3JtYXQsIEdMZW51bSBmb3JtYXQpOworR0xlbnVtIENvbnZlcnRC
YWNrQnVmZmVyRm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpOworR0xlbnVtIENvbnZlcnREZXB0aFN0
ZW5jaWxGb3JtYXQoRDNERk9STUFUIGZvcm1hdCk7CitHTGVudW0gQ29udmVydFJlbmRlclRhcmdl
dEZvcm1hdChEM0RGT1JNQVQgZm9ybWF0KTsKK0dMZW51bSBHZXRFcXVpdmFsZW50Rm9ybWF0KEQz
REZPUk1BVCBmb3JtYXQpOworCit9CisKK25hbWVzcGFjZSBkM2Q5Cit7Citib29sIElzQ29tcHJl
c3NlZEZvcm1hdChEM0RGT1JNQVQgZm9ybWF0KTsKK3NpemVfdCBDb21wdXRlUm93U2l6ZShEM0RG
T1JNQVQgZm9ybWF0LCB1bnNpZ25lZCBpbnQgd2lkdGgpOworCitpbmxpbmUgYm9vbCBpc0Rldmlj
ZUxvc3RFcnJvcihIUkVTVUxUIGVycm9yQ29kZSkKK3sKKyAgICBzd2l0Y2ggKGVycm9yQ29kZSkK
KyAgICB7CisgICAgICBjYXNlIEQzREVSUl9EUklWRVJJTlRFUk5BTEVSUk9SOgorICAgICAgY2Fz
ZSBEM0RFUlJfREVWSUNFTE9TVDoKKyAgICAgIGNhc2UgRDNERVJSX0RFVklDRUhVTkc6CisgICAg
ICBjYXNlIEQzREVSUl9ERVZJQ0VSRU1PVkVEOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK30KKworI2VuZGlm
IC8vIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUjlfVVRJTFNfSApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2ODggQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIHJlbmRlcmVyMTFfdXRpbHMuY3BwOiBDb252ZXJzaW9uIGZ1bmN0
aW9ucyBhbmQgb3RoZXIgdXRpbGl0eSByb3V0aW5lcworLy8gc3BlY2lmaWMgdG8gdGhlIEQzRDEx
IHJlbmRlcmVyLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRp
bHMuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgZ2xfZDNkMTEK
K3sKKworRDNEMTFfQkxFTkQgQ29udmVydEJsZW5kRnVuYyhHTGVudW0gZ2xCbGVuZCwgYm9vbCBp
c0FscGhhKQoreworICAgIEQzRDExX0JMRU5EIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfWkVSTzsK
KworICAgIHN3aXRjaCAoZ2xCbGVuZCkKKyAgICB7CisgICAgICBjYXNlIEdMX1pFUk86ICAgICAg
ICAgICAgICAgICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9aRVJPOyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfT05FOiAgICAgICAgICAgICAgICAgICAgICBkM2RCbGVu
ZCA9IEQzRDExX0JMRU5EX09ORTsgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9TUkNfQ09MT1I6ICAgICAgICAgICAgICAgIGQzZEJsZW5kID0gKGlzQWxwaGEgPyBEM0QxMV9C
TEVORF9TUkNfQUxQSEEgOiBEM0QxMV9CTEVORF9TUkNfQ09MT1IpOyAgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQ09MT1I6ICAgICAgZDNkQmxlbmQgPSAoaXNB
bHBoYSA/IEQzRDExX0JMRU5EX0lOVl9TUkNfQUxQSEEgOiBEM0QxMV9CTEVORF9JTlZfU1JDX0NP
TE9SKTsgICBicmVhazsKKyAgICAgIGNhc2UgR0xfRFNUX0NPTE9SOiAgICAgICAgICAgICAgICBk
M2RCbGVuZCA9IChpc0FscGhhID8gRDNEMTFfQkxFTkRfREVTVF9BTFBIQSA6IEQzRDExX0JMRU5E
X0RFU1RfQ09MT1IpOyAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNU
X0NPTE9SOiAgICAgIGQzZEJsZW5kID0gKGlzQWxwaGEgPyBEM0QxMV9CTEVORF9JTlZfREVTVF9B
TFBIQSA6IEQzRDExX0JMRU5EX0lOVl9ERVNUX0NPTE9SKTsgYnJlYWs7CisgICAgICBjYXNlIEdM
X1NSQ19BTFBIQTogICAgICAgICAgICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9TUkNfQUxQ
SEE7ICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQTog
ICAgICBkM2RCbGVuZCA9IEQzRDExX0JMRU5EX0lOVl9TUkNfQUxQSEE7ICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9EU1RfQUxQSEE6ICAgICAgICAgICAgICAgIGQzZEJsZW5kID0gRDNEMTFf
QkxFTkRfREVTVF9BTFBIQTsgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX09ORV9NSU5V
U19EU1RfQUxQSEE6ICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9JTlZfREVTVF9BTFBIQTsg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQ09MT1I6ICAgICAgICAgICBkM2RC
bGVuZCA9IEQzRDExX0JMRU5EX0JMRU5EX0ZBQ1RPUjsgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6IGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfSU5W
X0JMRU5EX0ZBQ1RPUjsgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0NPTlNUQU5UX0FMUEhBOiAg
ICAgICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9CTEVORF9GQUNUT1I7ICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOiBkM2RCbGVuZCA9IEQz
RDExX0JMRU5EX0lOVl9CTEVORF9GQUNUT1I7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TUkNf
QUxQSEFfU0FUVVJBVEU6ICAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfU1JDX0FMUEhBX1NB
VDsgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgIH0KKwor
ICAgIHJldHVybiBkM2RCbGVuZDsKK30KKworRDNEMTFfQkxFTkRfT1AgQ29udmVydEJsZW5kT3Ao
R0xlbnVtIGdsQmxlbmRPcCkKK3sKKyAgICBEM0QxMV9CTEVORF9PUCBkM2RCbGVuZE9wID0gRDNE
MTFfQkxFTkRfT1BfQUREOworCisgICAgc3dpdGNoIChnbEJsZW5kT3ApCisgICAgeworICAgICAg
Y2FzZSBHTF9GVU5DX0FERDogICAgICAgICAgICAgIGQzZEJsZW5kT3AgPSBEM0QxMV9CTEVORF9P
UF9BREQ7ICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfRlVOQ19TVUJUUkFDVDogICAg
ICAgICBkM2RCbGVuZE9wID0gRDNEMTFfQkxFTkRfT1BfU1VCVFJBQ1Q7ICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVDogZDNkQmxlbmRPcCA9IEQzRDExX0JM
RU5EX09QX1JFVl9TVUJUUkFDVDsgIGJyZWFrOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUo
KTsKKyAgICB9CisKKyAgICByZXR1cm4gZDNkQmxlbmRPcDsKK30KKworVUlOVDggQ29udmVydENv
bG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQorewor
ICAgIFVJTlQ4IG1hc2sgPSAwOworICAgIGlmIChyZWQpCisgICAgeworICAgICAgICBtYXNrIHw9
IEQzRDExX0NPTE9SX1dSSVRFX0VOQUJMRV9SRUQ7CisgICAgfQorICAgIGlmIChncmVlbikKKyAg
ICB7CisgICAgICAgIG1hc2sgfD0gRDNEMTFfQ09MT1JfV1JJVEVfRU5BQkxFX0dSRUVOOworICAg
IH0KKyAgICBpZiAoYmx1ZSkKKyAgICB7CisgICAgICAgIG1hc2sgfD0gRDNEMTFfQ09MT1JfV1JJ
VEVfRU5BQkxFX0JMVUU7CisgICAgfQorICAgIGlmIChhbHBoYSkKKyAgICB7CisgICAgICAgIG1h
c2sgfD0gRDNEMTFfQ09MT1JfV1JJVEVfRU5BQkxFX0FMUEhBOworICAgIH0KKyAgICByZXR1cm4g
bWFzazsKK30KKworRDNEMTFfQ1VMTF9NT0RFIENvbnZlcnRDdWxsTW9kZShib29sIGN1bGxFbmFi
bGVkLCBHTGVudW0gY3VsbE1vZGUpCit7CisgICAgRDNEMTFfQ1VMTF9NT0RFIGN1bGwgPSBEM0Qx
MV9DVUxMX05PTkU7CisKKyAgICBpZiAoY3VsbEVuYWJsZWQpCisgICAgeworICAgICAgICBzd2l0
Y2ggKGN1bGxNb2RlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9GUk9OVDogICAgICAg
ICAgICBjdWxsID0gRDNEMTFfQ1VMTF9GUk9OVDsgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBH
TF9CQUNLOiAgICAgICAgICAgICBjdWxsID0gRDNEMTFfQ1VMTF9CQUNLOyAgICAgYnJlYWs7Cisg
ICAgICAgICAgY2FzZSBHTF9GUk9OVF9BTkRfQkFDSzogICBjdWxsID0gRDNEMTFfQ1VMTF9OT05F
OyAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjdWxsID0gRDNEMTFfQ1VMTF9OT05F
OworICAgIH0KKworICAgIHJldHVybiBjdWxsOworfQorCitEM0QxMV9DT01QQVJJU09OX0ZVTkMg
Q29udmVydENvbXBhcmlzb24oR0xlbnVtIGNvbXBhcmlzb24pCit7CisgICAgRDNEMTFfQ09NUEFS
SVNPTl9GVU5DIGQzZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX05FVkVSOworICAgIHN3aXRjaCAo
Y29tcGFyaXNvbikKKyAgICB7CisgICAgICBjYXNlIEdMX05FVkVSOiAgICBkM2RDb21wID0gRDNE
MTFfQ09NUEFSSVNPTl9ORVZFUjsgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTFdB
WVM6ICAgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05fQUxXQVlTOyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfTEVTUzogICAgIGQzZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX0xFU1M7
ICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xFUVVBTDogICBkM2RDb21wID0gRDNE
MTFfQ09NUEFSSVNPTl9MRVNTX0VRVUFMOyAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9FUVVB
TDogICAgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05fRVFVQUw7ICAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfR1JFQVRFUjogIGQzZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX0dSRUFU
RVI7ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0dFUVVBTDogICBkM2RDb21wID0gRDNE
MTFfQ09NUEFSSVNPTl9HUkVBVEVSX0VRVUFMOyAgIGJyZWFrOworICAgICAgY2FzZSBHTF9OT1RF
UVVBTDogZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05fTk9UX0VRVUFMOyAgICAgICBicmVhazsK
KyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIGQzZENv
bXA7Cit9CisKK0QzRDExX0RFUFRIX1dSSVRFX01BU0sgQ29udmVydERlcHRoTWFzayhib29sIGRl
cHRoV3JpdGVFbmFibGVkKQoreworICAgIHJldHVybiBkZXB0aFdyaXRlRW5hYmxlZCA/IEQzRDEx
X0RFUFRIX1dSSVRFX01BU0tfQUxMIDogRDNEMTFfREVQVEhfV1JJVEVfTUFTS19aRVJPOworfQor
CitVSU5UOCBDb252ZXJ0U3RlbmNpbE1hc2soR0x1aW50IHN0ZW5jaWxtYXNrKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxVSU5UOD4oc3RlbmNpbG1hc2spOworfQorCitEM0QxMV9TVEVOQ0lM
X09QIENvbnZlcnRTdGVuY2lsT3AoR0xlbnVtIHN0ZW5jaWxPcCkKK3sKKyAgICBEM0QxMV9TVEVO
Q0lMX09QIGQzZFN0ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfS0VFUDsKKworICAgIHN3aXRj
aCAoc3RlbmNpbE9wKQorICAgIHsKKyAgICAgIGNhc2UgR0xfWkVSTzogICAgICBkM2RTdGVuY2ls
T3AgPSBEM0QxMV9TVEVOQ0lMX09QX1pFUk87ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0tF
RVA6ICAgICAgZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RFTkNJTF9PUF9LRUVQOyAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9SRVBMQUNFOiAgIGQzZFN0ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxf
T1BfUkVQTEFDRTsgICBicmVhazsKKyAgICAgIGNhc2UgR0xfSU5DUjogICAgICBkM2RTdGVuY2ls
T3AgPSBEM0QxMV9TVEVOQ0lMX09QX0lOQ1JfU0FUOyAgYnJlYWs7CisgICAgICBjYXNlIEdMX0RF
Q1I6ICAgICAgZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RFTkNJTF9PUF9ERUNSX1NBVDsgIGJyZWFr
OworICAgICAgY2FzZSBHTF9JTlZFUlQ6ICAgIGQzZFN0ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxf
T1BfSU5WRVJUOyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfSU5DUl9XUkFQOiBkM2RTdGVuY2ls
T3AgPSBEM0QxMV9TVEVOQ0lMX09QX0lOQ1I7ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0RF
Q1JfV1JBUDogZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RFTkNJTF9PUF9ERUNSOyAgICAgIGJyZWFr
OworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZDNk
U3RlbmNpbE9wOworfQorCitEM0QxMV9GSUxURVIgQ29udmVydEZpbHRlcihHTGVudW0gbWluRmls
dGVyLCBHTGVudW0gbWFnRmlsdGVyLCBmbG9hdCBtYXhBbmlzb3Ryb3B5KQoreworICAgIGlmICht
YXhBbmlzb3Ryb3B5ID4gMS4wZikKKyAgICB7CisgICAgICAgIHJldHVybiBEM0QxMV9FTkNPREVf
QU5JU09UUk9QSUNfRklMVEVSKGZhbHNlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgRDNEMTFfRklMVEVSX1RZUEUgZHhNaW4gPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsKKyAg
ICAgICAgRDNEMTFfRklMVEVSX1RZUEUgZHhNaXAgPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsK
KyAgICAgICAgc3dpdGNoIChtaW5GaWx0ZXIpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdM
X05FQVJFU1Q6ICAgICAgICAgICAgICAgIGR4TWluID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7
ICBkeE1pcCA9IEQzRDExX0ZJTFRFUl9UWVBFX1BPSU5UOyAgYnJlYWs7CisgICAgICAgICAgY2Fz
ZSBHTF9MSU5FQVI6ICAgICAgICAgICAgICAgICBkeE1pbiA9IEQzRDExX0ZJTFRFUl9UWVBFX0xJ
TkVBUjsgZHhNaXAgPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsgIGJyZWFrOworICAgICAgICAg
IGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVDogZHhNaW4gPSBEM0QxMV9GSUxURVJfVFlQ
RV9QT0lOVDsgIGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7ICBicmVhazsKKyAgICAg
ICAgICBjYXNlIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVDogIGR4TWluID0gRDNEMTFfRklMVEVS
X1RZUEVfTElORUFSOyBkeE1pcCA9IEQzRDExX0ZJTFRFUl9UWVBFX1BPSU5UOyAgYnJlYWs7Cisg
ICAgICAgICAgY2FzZSBHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVI6ICBkeE1pbiA9IEQzRDExX0ZJ
TFRFUl9UWVBFX1BPSU5UOyAgZHhNaXAgPSBEM0QxMV9GSUxURVJfVFlQRV9MSU5FQVI7IGJyZWFr
OworICAgICAgICAgIGNhc2UgR0xfTElORUFSX01JUE1BUF9MSU5FQVI6ICAgZHhNaW4gPSBEM0Qx
MV9GSUxURVJfVFlQRV9MSU5FQVI7IGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVfTElORUFSOyBi
cmVhazsKKyAgICAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgIH0KKworICAgICAgICBEM0QxMV9GSUxURVJfVFlQRSBkeE1hZyA9IEQz
RDExX0ZJTFRFUl9UWVBFX1BPSU5UOworICAgICAgICBzd2l0Y2ggKG1hZ0ZpbHRlcikKKyAgICAg
ICAgeworICAgICAgICAgIGNhc2UgR0xfTkVBUkVTVDogZHhNYWcgPSBEM0QxMV9GSUxURVJfVFlQ
RV9QT0lOVDsgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfTElORUFSOiAgZHhNYWcgPSBEM0Qx
MV9GSUxURVJfVFlQRV9MSU5FQVI7IGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBEM0QxMV9FTkNPREVf
QkFTSUNfRklMVEVSKGR4TWluLCBkeE1hZywgZHhNaXAsIGZhbHNlKTsKKyAgICB9Cit9CisKK0Qz
RDExX1RFWFRVUkVfQUREUkVTU19NT0RFIENvbnZlcnRUZXh0dXJlV3JhcChHTGVudW0gd3JhcCkK
K3sKKyAgICBzd2l0Y2ggKHdyYXApCisgICAgeworICAgICAgY2FzZSBHTF9SRVBFQVQ6ICAgICAg
ICAgIHJldHVybiBEM0QxMV9URVhUVVJFX0FERFJFU1NfV1JBUDsKKyAgICAgIGNhc2UgR0xfQ0xB
TVBfVE9fRURHRTogICByZXR1cm4gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgICAg
Y2FzZSBHTF9NSVJST1JFRF9SRVBFQVQ6IHJldHVybiBEM0QxMV9URVhUVVJFX0FERFJFU1NfTUlS
Uk9SOworICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
fQorCisgICAgcmV0dXJuIEQzRDExX1RFWFRVUkVfQUREUkVTU19XUkFQOworfQorCitGTE9BVCBD
b252ZXJ0TWluTE9EKEdMZW51bSBtaW5GaWx0ZXIsIHVuc2lnbmVkIGludCBsb2RPZmZzZXQpCit7
CisgICAgcmV0dXJuIChtaW5GaWx0ZXIgPT0gR0xfTkVBUkVTVCB8fCBtaW5GaWx0ZXIgPT0gR0xf
TElORUFSKSA/IHN0YXRpY19jYXN0PGZsb2F0Pihsb2RPZmZzZXQpIDogLUZMVF9NQVg7Cit9CisK
K0ZMT0FUIENvbnZlcnRNYXhMT0QoR0xlbnVtIG1pbkZpbHRlciwgdW5zaWduZWQgaW50IGxvZE9m
ZnNldCkKK3sKKyAgICByZXR1cm4gKG1pbkZpbHRlciA9PSBHTF9ORUFSRVNUIHx8IG1pbkZpbHRl
ciA9PSBHTF9MSU5FQVIpID8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGxvZE9mZnNldCkgOiBGTFRfTUFY
OworfQorCit9CisKK25hbWVzcGFjZSBkM2QxMV9nbAoreworCitHTGVudW0gQ29udmVydEJhY2tC
dWZmZXJGb3JtYXQoRFhHSV9GT1JNQVQgZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KQor
ICAgIHsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk06IHJldHVybiBHTF9S
R0JBOF9PRVM7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOiByZXR1cm4g
R0xfQkdSQThfRVhUOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gR0xfUkdCQThfT0VTOworfQorCitHTGVudW0gQ29udmVydERlcHRo
U3RlbmNpbEZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQp
CisgICAgeworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOiByZXR1cm4gR0xfTk9ORTsK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDE2X1VOT1JNOiByZXR1cm4gR0xfREVQVEhfQ09NUE9O
RU5UMTY7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UOiByZXR1cm4g
R0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKK30K
KworR0xlbnVtIENvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQoRFhHSV9GT1JNQVQgZm9ybWF0KQor
eworICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhH
OFI4QThfVU5PUk06CisgICAgICAgIHJldHVybiBHTF9CR1JBOF9FWFQ7CisgICAgICBjYXNlIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgorICAgICAgICByZXR1cm4gR0xfUkdCQThfT0VTOwor
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06CisgICAgICAgIHJldHVybiBHTF9ERVBU
SF9DT01QT05FTlQxNjsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6
CisgICAgICAgIHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAgICAgIGRlZmF1bHQ6
CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX1JHQkE4X09F
UzsKK30KKworR0xlbnVtIENvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoRFhHSV9GT1JNQVQg
Zm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk06CisgICAgICAgIHJldHVybiBHTF9SR0JBOF9PRVM7CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX0E4X1VOT1JNOgorICAgICAgICByZXR1cm4gR0xfQUxQSEE4X0VY
VDsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNOgorICAgICAgICByZXR1cm4gR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
Ml9VTk9STToKKyAgICAgICAgcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5H
TEU7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STToKKyAgICAgICAgcmV0dXJuIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU7CisgICAgICBjYXNlIERYR0lfRk9STUFU
X1IzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAgcmV0dXJuIEdMX1JHQkEzMkZfRVhUOworICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQ6CisgICAgICAgIHJldHVybiBHTF9S
R0IzMkZfRVhUOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6Cisg
ICAgICAgIHJldHVybiBHTF9SR0JBMTZGX0VYVDsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhH
OFI4QThfVU5PUk06CisgICAgICAgIHJldHVybiBHTF9CR1JBOF9FWFQ7CisgICAgICBjYXNlIERY
R0lfRk9STUFUX1I4X1VOT1JNOgorICAgICAgICByZXR1cm4gR0xfUjhfRVhUOworICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNOgorICAgICAgICByZXR1cm4gR0xfUkc4X0VYVDsKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X0ZMT0FUOgorICAgICAgICByZXR1cm4gR0xfUjE2Rl9F
WFQ7CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVDoKKyAgICAgICAgcmV0dXJu
IEdMX1JHMTZGX0VYVDsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDE2X1VOT1JNOgorICAgICAg
ICByZXR1cm4gR0xfREVQVEhfQ09NUE9ORU5UMTY7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0Qy
NF9VTk9STV9TOF9VSU5UOgorICAgICAgICByZXR1cm4gR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM7
CisgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046CisgICAgICAgIHJldHVybiBHTF9OT05F
OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gR0xfUkdCQThfT0VTOworfQorCit9CisKK25hbWVzcGFjZSBnbF9kM2QxMQoreworCitE
WEdJX0ZPUk1BVCBDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KEdMZW51bSBmb3JtYXQpCit7Cisg
ICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9SR0JBNDoKKyAgICAgIGNh
c2UgR0xfUkdCNV9BMToKKyAgICAgIGNhc2UgR0xfUkdCQThfT0VTOgorICAgICAgY2FzZSBHTF9S
R0I1NjU6CisgICAgICBjYXNlIEdMX1JHQjhfT0VTOgorICAgICAgICByZXR1cm4gRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk07CisgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgICAgcmV0
dXJuIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOworICAgICAgY2FzZSBHTF9ERVBUSF9DT01Q
T05FTlQxNjoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX0QxNl9VTk9STTsKKyAgICAgIGNh
c2UgR0xfU1RFTkNJTF9JTkRFWDg6CisgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VT
OgorICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ7CisgICAgICBk
ZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STTsKK30KKworRFhHSV9GT1JNQVQgQ29udmVydFRleHR1cmVG
b3JtYXQoR0xlbnVtIGludGVybmFsZm9ybWF0KQoreworICAgIHN3aXRjaCAoaW50ZXJuYWxmb3Jt
YXQpCisgICAgeworICAgICAgY2FzZSBHTF9SR0I1NjU6CisgICAgICBjYXNlIEdMX1JHQkE0Ogor
ICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgY2FzZSBHTF9SR0I4X09FUzoKKyAgICAgIGNh
c2UgR0xfUkdCQThfT0VTOgorICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0VYVDoKKyAgICAgIGNh
c2UgR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhUOgorICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk07CisgICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6CisgICAgICAgIHJldHVy
biBEWEdJX0ZPUk1BVF9BOF9VTk9STTsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNU
Q19EWFQxX0VYVDoKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6
CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9CQzFfVU5PUk07CisgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1B
VF9CQzJfVU5PUk07CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5H
TEU6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9CQzNfVU5PUk07CisgICAgICBjYXNlIEdM
X1JHQkEzMkZfRVhUOgorICAgICAgY2FzZSBHTF9BTFBIQTMyRl9FWFQ6CisgICAgICBjYXNlIEdM
X0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfRkxPQVQ7CisgICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6CisgICAgICBjYXNlIEdM
X0xVTUlOQU5DRTMyRl9FWFQ6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJf
RkxPQVQ7CisgICAgICBjYXNlIEdMX1JHQkExNkZfRVhUOgorICAgICAgY2FzZSBHTF9BTFBIQTE2
Rl9FWFQ6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQ6CisgICAgICBjYXNl
IEdMX1JHQjE2Rl9FWFQ6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6CisgICAgICAg
IHJldHVybiBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ7CisgICAgICBjYXNlIEdMX0JH
UkE4X0VYVDoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOworICAg
ICAgY2FzZSBHTF9SOF9FWFQ6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9SOF9VTk9STTsK
KyAgICAgIGNhc2UgR0xfUkc4X0VYVDoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1I4Rzhf
VU5PUk07CisgICAgICBjYXNlIEdMX1IxNkZfRVhUOgorICAgICAgICByZXR1cm4gRFhHSV9GT1JN
QVRfUjE2X0ZMT0FUOworICAgICAgY2FzZSBHTF9SRzE2Rl9FWFQ6CisgICAgICAgIHJldHVybiBE
WEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQ7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2
OgorICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfRDE2X1VOT1JNOworICAgICAgY2FzZSBHTF9E
RVBUSF9DT01QT05FTlQzMl9PRVM6CisgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VT
OgorICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ7CisgICAgICBj
YXNlIEdMX05PTkU6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk07Cit9CisKK30KKworbmFtZXNwYWNlIGQzZDExCit7CisK
K3ZvaWQgU2V0UG9zaXRpb25UZXhDb29yZFZlcnRleChQb3NpdGlvblRleENvb3JkVmVydGV4KiB2
ZXJ0ZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHUsIGZsb2F0IHYpCit7CisgICAgdmVydGV4
LT54ID0geDsKKyAgICB2ZXJ0ZXgtPnkgPSB5OworICAgIHZlcnRleC0+dSA9IHU7CisgICAgdmVy
dGV4LT52ID0gdjsKK30KKwordm9pZCBTZXRQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXgoUG9zaXRp
b25EZXB0aENvbG9yVmVydGV4KiB2ZXJ0ZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Q29sb3IgJmNvbG9yKQor
eworICAgIHZlcnRleC0+eCA9IHg7CisgICAgdmVydGV4LT55ID0geTsKKyAgICB2ZXJ0ZXgtPnog
PSB6OworICAgIHZlcnRleC0+ciA9IGNvbG9yLnJlZDsKKyAgICB2ZXJ0ZXgtPmcgPSBjb2xvci5n
cmVlbjsKKyAgICB2ZXJ0ZXgtPmIgPSBjb2xvci5ibHVlOworICAgIHZlcnRleC0+YSA9IGNvbG9y
LmFscGhhOworfQorCitzaXplX3QgQ29tcHV0ZVBpeGVsU2l6ZUJpdHMoRFhHSV9GT1JNQVQgZm9y
bWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjFfVU5PUk06CisgICAgICAgIHJldHVybiAxOworCisgICAgICBjYXNlIERYR0lfRk9STUFU
X0E4X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9TSU5UOgorICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SOF9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVFlQRUxFU1M6
CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1VJTlQ6CisgICAgICBjYXNlIERYR0lfRk9STUFU
X1I4X1VOT1JNOgorICAgICAgICByZXR1cm4gODsKKworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
NUc1UjVBMV9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNOgorICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX1Ix
Nl9GTE9BVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1NJTlQ6CisgICAgICBjYXNlIERY
R0lfRk9STUFUX1IxNl9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1RZUEVMRVNT
OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVUlOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjE2X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQ6CisgICAgICBj
YXNlIERYR0lfRk9STUFUX1I4RzhfU05PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4Rzhf
VFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVUlOVDoKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhHOF9VTk9STToKKyAgICAgICAgcmV0dXJuIDE2OworCisgICAgICBjYXNl
IERYR0lfRk9STUFUX0I4RzhSOFg4X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
OEc4UjhYOF9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVU5PUk1fU1JH
QjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6CisgICAgICBjYXNl
IERYR0lfRk9STUFUX0QzMl9GTE9BVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZMT0FU
X1M4WDI0X1VJTlQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0c4UjhfRzhCOF9VTk9STToKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwX1hSX0JJQVNfQTJfVU5PUk06CisgICAgICBj
YXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SMTBHMTBCMTBBMl9VSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBB
Ml9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FUOgorICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1Ix
NkcxNl9TSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfU05PUk06CisgICAgICBj
YXNlIERYR0lfRk9STUFUX1IxNkcxNl9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjE2RzE2X1VJTlQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9VTk9STToKKyAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMjRHOF9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX0ZMT0FU
OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfRkxPQVRfWDhYMjRfVFlQRUxFU1M6CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX1IzMl9TSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJf
VFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9VSU5UOgorICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SOEc4X0I4RzhfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhC
OEE4X1NJTlQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNOgorICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVUlOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk06
CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0I6CisgICAgICBjYXNl
IERYR0lfRk9STUFUX0I4RzhSOEE4X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
OEc4UjhBOF9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk1fU1JH
QjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQOgorICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9YMjRfVFlQRUxFU1NfRzhfVUlOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfWDMyX1RZUEVMRVNTX0c4WDI0X1VJTlQ6CisgICAgICAgIHJldHVybiAzMjsKKworICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IxNkcxNkIxNkExNl9TSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZB
MTZfU05PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9UWVBFTEVTUzoK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQ6CisgICAgICBjYXNlIERY
R0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMy
RzMyX0ZMT0FUOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVDoKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjMyRzMyX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MzJHMzJfVUlOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1M6Cisg
ICAgICAgIHJldHVybiA2NDsKKworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxP
QVQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9TSU5UOgorICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1Iz
MkczMkIzMl9VSU5UOgorICAgICAgICByZXR1cm4gOTY7CisKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJB
MzJfU0lOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1RZUEVMRVNTOgor
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVDoKKyAgICAgICAgcmV0dXJu
IDEyODsKKworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVFlQRUxFU1M6CisgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDMV9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JN
X1NSR0I6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9TTk9STToKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQkM0X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVU5PUk06
CisgICAgICAgIHJldHVybiA0OworCisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9UWVBFTEVT
UzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzJfVU5PUk1fU1JHQjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1RZUEVMRVNT
OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX0JDM19VTk9STV9TUkdCOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVfU05PUk06Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM1X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1NGMTY6CisgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDNkhfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
NkhfVUYxNjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1RZUEVMRVNTOgorICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19VTk9S
TV9TUkdCOgorICAgICAgICByZXR1cm4gODsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorfQorCitzaXplX3QgQ29tcHV0ZUJsb2NrU2l6ZUJpdHMoRFhHSV9GT1JN
QVQgZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQkMxX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk06
CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9VTk9STV9TUkdCOgorICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzRfU05PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9UWVBFTEVTUzoK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9CQzJfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9STToKKyAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQkMyX1VOT1JNX1NSR0I6CisgICAgICBjYXNlIERYR0lfRk9STUFU
X0JDM19UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNOgorICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkM1X1NOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVfVFlQRUxFU1M6CisgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDNV9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9T
RjE2OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1RZUEVMRVNTOgorICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CQzZIX1VGMTY6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19UWVBFTEVT
UzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzdfVU5PUk1fU1JHQjoKKyAgICAgICAgcmV0dXJuIENvbXB1dGVQaXhlbFNpemVCaXRz
KGZvcm1hdCkgKiAxNjsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworYm9vbCBJc0NvbXByZXNzZWQoRFhHSV9GT1JN
QVQgZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQkMxX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk06
CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9VTk9STV9TUkdCOgorICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzRfU05PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9UWVBFTEVTUzoK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9CQzJfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9STToKKyAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQkMyX1VOT1JNX1NSR0I6CisgICAgICBjYXNlIERYR0lfRk9STUFU
X0JDM19UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNOgorICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkM1X1NOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVfVFlQRUxFU1M6CisgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDNV9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9T
RjE2OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1RZUEVMRVNTOgorICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CQzZIX1VGMTY6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19UWVBFTEVT
UzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzdfVU5PUk1fU1JHQjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICBjYXNlIERY
R0lfRk9STUFUX1VOS05PV046CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9
CisKK3Vuc2lnbmVkIGludCBHZXRUZXh0dXJlRm9ybWF0RGltZW5zaW9uQWxpZ25tZW50KERYR0lf
Rk9STUFUIGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDMV9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VO
T1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk1fU1JHQjoKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQkM0X1NOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVFlQRUxF
U1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfQkMyX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk06Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9STV9TUkdCOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzNfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STToKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNX1NSR0I6CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX0JDNV9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1RZUEVMRVNTOgorICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
NkhfU0YxNjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9UWVBFTEVTUzoKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfQkM2SF9VRjE2OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVFlQ
RUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19VTk9STToKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQkM3X1VOT1JNX1NSR0I6CisgICAgICAgIHJldHVybiA0OworICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9VTktOT1dOOgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1
cm4gMTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAxOworICAgIH0KK30KKworYm9v
bCBJc0RlcHRoU3RlbmNpbEZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNo
IChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRf
VUlOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUOgorICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDE2X1VO
T1JNOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKK0RYR0lfRk9STUFUIEdldERlcHRoVGV4dHVyZUZvcm1hdChE
WEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVDogcmV0dXJuIERYR0lfRk9STUFU
X1IzMkc4WDI0X1RZUEVMRVNTOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMzJfRkxPQVQ6ICAg
ICAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1IzMl9UWVBFTEVTUzsKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6ICAgIHJldHVybiBEWEdJX0ZPUk1BVF9SMjRHOF9U
WVBFTEVTUzsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDE2X1VOT1JNOiAgICAgICAgICAgIHJl
dHVybiBEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1M7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJM
RSgpOyAgICAgICAgICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfVU5LTk9XTjsKKyAgICB9Cit9
CisKK0RYR0lfRk9STUFUIEdldERlcHRoU2hhZGVyUmVzb3VyY2VGb3JtYXQoRFhHSV9GT1JNQVQg
Zm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJTlQ6IHJldHVybiBEWEdJX0ZPUk1BVF9SMzJfRkxPQVRf
WDhYMjRfVFlQRUxFU1M7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QzMl9GTE9BVDogICAgICAg
ICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjMyX1VJTlQ7CisgICAgICBjYXNlIERYR0lfRk9STUFU
X0QyNF9VTk9STV9TOF9VSU5UOiAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZ
UEVMRVNTOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06ICAgICAgICAgICAgcmV0
dXJuIERYR0lfRk9STUFUX1IxNl9VTk9STTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7
ICAgICAgICAgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAgIH0KK30KKwor
SFJFU1VMVCBTZXREZWJ1Z05hbWUoSUQzRDExRGV2aWNlQ2hpbGQgKnJlc291cmNlLCBjb25zdCBj
aGFyICpuYW1lKQoreworI2lmIGRlZmluZWQoX0RFQlVHKQorICAgIHJldHVybiByZXNvdXJjZS0+
U2V0UHJpdmF0ZURhdGEoV0tQRElEX0QzRERlYnVnT2JqZWN0TmFtZSwgc3RybGVuKG5hbWUpLCBu
YW1lKTsKKyNlbHNlCisgICAgcmV0dXJuIFNfT0s7CisjZW5kaWYKK30KKworfQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0
aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIHJlbmRlcmVy
MTFfdXRpbHMuaDogQ29udmVyc2lvbiBmdW5jdGlvbnMgYW5kIG90aGVyIHV0aWxpdHkgcm91dGlu
ZXMKKy8vIHNwZWNpZmljIHRvIHRoZSBEM0QxMSByZW5kZXJlci4KKworI2lmbmRlZiBMSUJHTEVT
VjJfUkVOREVSRVJfUkVOREVSRVIxMV9VVElMU19ICisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJF
Ul9SRU5ERVJFUjExX1VUSUxTX0gKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9hbmdsZXR5cGVzLmgi
CisKK25hbWVzcGFjZSBnbF9kM2QxMQoreworCitEM0QxMV9CTEVORCBDb252ZXJ0QmxlbmRGdW5j
KEdMZW51bSBnbEJsZW5kLCBib29sIGlzQWxwaGEpOworRDNEMTFfQkxFTkRfT1AgQ29udmVydEJs
ZW5kT3AoR0xlbnVtIGdsQmxlbmRPcCk7CitVSU5UOCBDb252ZXJ0Q29sb3JNYXNrKGJvb2wgbWFz
a1JlZCwgYm9vbCBtYXNrR3JlZW4sIGJvb2wgbWFza0JsdWUsIGJvb2wgbWFza0FscGhhKTsKKwor
RDNEMTFfQ1VMTF9NT0RFIENvbnZlcnRDdWxsTW9kZShib29sIGN1bGxFbmFibGVkLCBHTGVudW0g
Y3VsbE1vZGUpOworCitEM0QxMV9DT01QQVJJU09OX0ZVTkMgQ29udmVydENvbXBhcmlzb24oR0xl
bnVtIGNvbXBhcmlzb24pOworRDNEMTFfREVQVEhfV1JJVEVfTUFTSyBDb252ZXJ0RGVwdGhNYXNr
KGJvb2wgZGVwdGhXcml0ZUVuYWJsZWQpOworVUlOVDggQ29udmVydFN0ZW5jaWxNYXNrKEdMdWlu
dCBzdGVuY2lsbWFzayk7CitEM0QxMV9TVEVOQ0lMX09QIENvbnZlcnRTdGVuY2lsT3AoR0xlbnVt
IHN0ZW5jaWxPcCk7CisKK0QzRDExX0ZJTFRFUiBDb252ZXJ0RmlsdGVyKEdMZW51bSBtaW5GaWx0
ZXIsIEdMZW51bSBtYWdGaWx0ZXIsIGZsb2F0IG1heEFuaXNvdHJvcHkpOworRDNEMTFfVEVYVFVS
RV9BRERSRVNTX01PREUgQ29udmVydFRleHR1cmVXcmFwKEdMZW51bSB3cmFwKTsKK0ZMT0FUIENv
bnZlcnRNaW5MT0QoR0xlbnVtIG1pbkZpbHRlciwgdW5zaWduZWQgaW50IGxvZE9mZnNldCk7CitG
TE9BVCBDb252ZXJ0TWF4TE9EKEdMZW51bSBtaW5GaWx0ZXIsIHVuc2lnbmVkIGludCBsb2RPZmZz
ZXQpOworCitEWEdJX0ZPUk1BVCBDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KEdMZW51bSBmb3Jt
YXQpOworRFhHSV9GT1JNQVQgQ29udmVydFRleHR1cmVGb3JtYXQoR0xlbnVtIGZvcm1hdCk7Cit9
CisKK25hbWVzcGFjZSBkM2QxMV9nbAoreworCitHTGVudW0gQ29udmVydEJhY2tCdWZmZXJGb3Jt
YXQoRFhHSV9GT1JNQVQgZm9ybWF0KTsKK0dMZW51bSBDb252ZXJ0RGVwdGhTdGVuY2lsRm9ybWF0
KERYR0lfRk9STUFUIGZvcm1hdCk7CitHTGVudW0gQ29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChE
WEdJX0ZPUk1BVCBmb3JtYXQpOworR0xlbnVtIENvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQo
RFhHSV9GT1JNQVQgZm9ybWF0KTsKKworfQorCituYW1lc3BhY2UgZDNkMTEKK3sKKworc3RydWN0
IFBvc2l0aW9uVGV4Q29vcmRWZXJ0ZXgKK3sKKyAgICBmbG9hdCB4LCB5OworICAgIGZsb2F0IHUs
IHY7Cit9Owordm9pZCBTZXRQb3NpdGlvblRleENvb3JkVmVydGV4KFBvc2l0aW9uVGV4Q29vcmRW
ZXJ0ZXgqIHZlcnRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgdSwgZmxvYXQgdik7CisKK3N0
cnVjdCBQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXgKK3sKKyAgICBmbG9hdCB4LCB5LCB6OworICAg
IGZsb2F0IHIsIGcsIGIsIGE7Cit9Owordm9pZCBTZXRQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXgo
UG9zaXRpb25EZXB0aENvbG9yVmVydGV4KiB2ZXJ0ZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Q29sb3IgJmNv
bG9yKTsKKworc2l6ZV90IENvbXB1dGVQaXhlbFNpemVCaXRzKERYR0lfRk9STUFUIGZvcm1hdCk7
CitzaXplX3QgQ29tcHV0ZUJsb2NrU2l6ZUJpdHMoRFhHSV9GT1JNQVQgZm9ybWF0KTsKKworYm9v
bCBJc0NvbXByZXNzZWQoRFhHSV9GT1JNQVQgZm9ybWF0KTsKK3Vuc2lnbmVkIGludCBHZXRUZXh0
dXJlRm9ybWF0RGltZW5zaW9uQWxpZ25tZW50KERYR0lfRk9STUFUIGZvcm1hdCk7CisKK2Jvb2wg
SXNEZXB0aFN0ZW5jaWxGb3JtYXQoRFhHSV9GT1JNQVQgZm9ybWF0KTsKK0RYR0lfRk9STUFUIEdl
dERlcHRoVGV4dHVyZUZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpOworRFhHSV9GT1JNQVQgR2V0
RGVwdGhTaGFkZXJSZXNvdXJjZUZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpOworCitIUkVTVUxU
IFNldERlYnVnTmFtZShJRDNEMTFEZXZpY2VDaGlsZCAqcmVzb3VyY2UsIGNvbnN0IGNoYXIgKm5h
bWUpOworCitpbmxpbmUgYm9vbCBpc0RldmljZUxvc3RFcnJvcihIUkVTVUxUIGVycm9yQ29kZSkK
K3sKKyAgICBzd2l0Y2ggKGVycm9yQ29kZSkKKyAgICB7CisgICAgICBjYXNlIERYR0lfRVJST1Jf
REVWSUNFX0hVTkc6CisgICAgICBjYXNlIERYR0lfRVJST1JfREVWSUNFX1JFTU9WRUQ6CisgICAg
ICBjYXNlIERYR0lfRVJST1JfREVWSUNFX1JFU0VUOgorICAgICAgY2FzZSBEWEdJX0VSUk9SX0RS
SVZFUl9JTlRFUk5BTF9FUlJPUjoKKyAgICAgIGNhc2UgRFhHSV9FUlJPUl9OT1RfQ1VSUkVOVExZ
X0FWQUlMQUJMRToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVO
REVSRVJfUkVOREVSRVIxMV9VVElMU19ICkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL3ZlcnRleGNvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3ZlcnRleGNvbnZl
cnNpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvdmVydGV4Y29udmVyc2lvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIwMyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gdmVydGV4Y29udmVyc2lvbi5oOiBBIGxp
YnJhcnkgb2YgdmVydGV4IGNvbnZlcnNpb24gY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1
aWxkCisvLyB0aGUgRm9ybWF0Q29udmVydGVyIG9iamVjdHMgdXNlZCBieSB0aGUgYnVmZmVyIGNv
bnZlcnNpb24gc3lzdGVtLgorCisjaWZuZGVmIExJQkdMRVNWMl9WRVJURVhDT05WRVJTSU9OX0hf
CisjZGVmaW5lIExJQkdMRVNWMl9WRVJURVhDT05WRVJTSU9OX0hfCisKK25hbWVzcGFjZSByeAor
eworCisvLyBDb252ZXJzaW9uIHR5cGVzOgorLy8gc3RhdGljIGNvbnN0IGJvb2wgaWRlbnRpdHk6
IHRydWUgaWYgdGhpcyBpcyBhbiBpZGVudGl0eSB0cmFuc2Zvcm0sIGZhbHNlIG90aGVyd2lzZQor
Ly8gc3RhdGljIFUgY29udmVydChUKTogY29udmVydCBhIHNpbmdsZSBlbGVtZW50IGZyb20gdGhl
IGlucHV0IHR5cGUgdG8gdGhlIG91dHB1dCB0eXBlCisvLyB0eXBlZGVmIC4uLiBPdXRwdXRUeXBl
OiB0aGUgdHlwZSBwcm9kdWNlZCBieSB0aGlzIGNvbnZlcnNpb24KKwordGVtcGxhdGUgPGNsYXNz
IFQ+CitzdHJ1Y3QgSWRlbnRpdHkKK3sKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpZGVudGl0eSA9
IHRydWU7CisKKyAgICB0eXBlZGVmIFQgT3V0cHV0VHlwZTsKKworICAgIHN0YXRpYyBUIGNvbnZl
cnQoVCB4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHg7CisgICAgfQorfTsKKwordGVtcGxhdGUg
PGNsYXNzIEZyb21ULCBjbGFzcyBUb1Q+CitzdHJ1Y3QgQ2FzdAoreworICAgIHN0YXRpYyBjb25z
dCBib29sIGlkZW50aXR5ID0gZmFsc2U7CisKKyAgICB0eXBlZGVmIFRvVCBPdXRwdXRUeXBlOwor
CisgICAgc3RhdGljIFRvVCBjb252ZXJ0KEZyb21UIHgpCisgICAgeworICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8VG9UPih4KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0
cnVjdCBDYXN0PFQsIFQ+Cit7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaWRlbnRpdHkgPSB0cnVl
OworCisgICAgdHlwZWRlZiBUIE91dHB1dFR5cGU7CisKKyAgICBzdGF0aWMgVCBjb252ZXJ0KFQg
eCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPih4KTsKKyAgICB9Cit9Owor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBOb3JtYWxpemUKK3sKKyAgICBzdGF0aWMgY29u
c3QgYm9vbCBpZGVudGl0eSA9IGZhbHNlOworCisgICAgdHlwZWRlZiBmbG9hdCBPdXRwdXRUeXBl
OworCisgICAgc3RhdGljIGZsb2F0IGNvbnZlcnQoVCB4KQorICAgIHsKKyAgICAgICAgdHlwZWRl
ZiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+IE5MOworICAgICAgICBmbG9hdCBmID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHgpOworCisgICAgICAgIGlmIChOTDo6aXNfc2lnbmVkKQorICAgICAgICB7Cisg
ICAgICAgICAgICAvLyBjb25zdCBmbG9hdCA9PiBWQzIwMDggY29tcHV0ZXMgaXQgYXQgY29tcGls
ZSB0aW1lCisgICAgICAgICAgICAvLyBzdGF0aWMgY29uc3QgZmxvYXQgPT4gVkMyMDA4IGNvbXB1
dGVzIGl0IHRoZSBmaXJzdCB0aW1lIHdlIGdldCBoZXJlLCBzdG9yZXMgaXQgdG8gbWVtb3J5IHdp
dGggc3RhdGljIGd1YXJkIGFuZCBhbGwgdGhhdC4KKyAgICAgICAgICAgIGNvbnN0IGZsb2F0IGRp
dmlzb3IgPSAxLjBmLygyKnN0YXRpY19jYXN0PGZsb2F0PihOTDo6bWF4KCkpKzEpOworICAgICAg
ICAgICAgcmV0dXJuICgyKmYrMSkqZGl2aXNvcjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmL05MOjptYXgoKTsKKyAgICAgICAgfQorICAg
IH0KK307CisKK3RlbXBsYXRlIDxjbGFzcyBGcm9tVHlwZSwgc3RkOjpzaXplX3QgU2NhbGVCaXRz
Pgorc3RydWN0IEZpeGVkVG9GbG9hdAoreworICAgIHN0YXRpYyBjb25zdCBib29sIGlkZW50aXR5
ID0gZmFsc2U7CisKKyAgICB0eXBlZGVmIGZsb2F0IE91dHB1dFR5cGU7CisKKyAgICBzdGF0aWMg
ZmxvYXQgY29udmVydChGcm9tVHlwZSB4KQorICAgIHsKKyAgICAgICAgY29uc3QgZmxvYXQgZGl2
aXNvciA9IDEuMGYgLyBzdGF0aWNfY2FzdDxmbG9hdD4oc3RhdGljX2Nhc3Q8RnJvbVR5cGU+KDEp
IDw8IFNjYWxlQml0cyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oeCkgKiBk
aXZpc29yOworICAgIH0KK307CisKKy8vIFdpZGVuIHR5cGVzOgorLy8gc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGludCBpbml0aWFsV2lkdGg6IG51bWJlciBvZiBjb21wb25lbnRzIGJlZm9yZSBjb252
ZXJzaW9uCisvLyBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGZpbmFsV2lkdGg6IG51bWJlciBv
ZiBjb21wb25lbnRzIGFmdGVyIGNvbnZlcnNpb24KKworLy8gRmxvYXQgaXMgc3VwcG9ydGVkIGF0
IGFueSBzaXplLgordGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+CitzdHJ1Y3QgTm9XaWRlbgorewor
ICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBpbml0aWFsV2lkdGggPSBOOworICAgIHN0YXRp
YyBjb25zdCBzdGQ6OnNpemVfdCBmaW5hbFdpZHRoID0gTjsKK307CisKKy8vIFNIT1JULCBub3Jt
LVNIT1JULCBub3JtLVVOU0lHTkVEX1NIT1JUIGFyZSBzdXBwb3J0ZWQgYnV0IG9ubHkgd2l0aCAy
IG9yIDQgY29tcG9uZW50cwordGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+CitzdHJ1Y3QgV2lkZW5U
b0V2ZW4KK3sKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjpzaXplX3QgaW5pdGlhbFdpZHRoID0gTjsK
KyAgICBzdGF0aWMgY29uc3Qgc3RkOjpzaXplX3QgZmluYWxXaWR0aCA9IE4rKE4mMSk7Cit9Owor
Cit0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KK3N0cnVjdCBXaWRlblRvRm91cgoreworICAgIHN0
YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBpbml0aWFsV2lkdGggPSBOOworICAgIHN0YXRpYyBjb25z
dCBzdGQ6OnNpemVfdCBmaW5hbFdpZHRoID0gNDsKK307CisKKy8vIE1vc3QgdHlwZXMgaGF2ZSAw
IGFuZCAxIHRoYXQgYXJlIGp1c3QgdGhhdC4KK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IFNp
bXBsZURlZmF1bHRWYWx1ZXMKK3sKKyAgICBzdGF0aWMgVCB6ZXJvKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VD4oMCk7IH0KKyAgICBzdGF0aWMgVCBvbmUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxU
PigxKTsgfQorfTsKKworLy8gQnV0IG5vcm1hbGlzZWQgdHlwZXMgb25seSBzdG9yZSBbMCwxXSBv
ciBbLTEsMV0gc28gMS4wIGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBtYXggdmFsdWUuCit0ZW1wbGF0
ZSA8Y2xhc3MgVD4KK3N0cnVjdCBOb3JtYWxpemVkRGVmYXVsdFZhbHVlcworeworICAgIHN0YXRp
YyBUIHplcm8oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxUPigwKTsgfQorICAgIHN0YXRpYyBUIG9u
ZSgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpOyB9Cit9OworCisvLyBD
b252ZXJ0ZXI6CisvLyBzdGF0aWMgY29uc3QgYm9vbCBpZGVudGl0eTogdHJ1ZSBpZiB0aGlzIGlz
IGFuIGlkZW50aXR5IHRyYW5zZm9ybSAod2l0aCBubyB3aWRlbmluZykKKy8vIHN0YXRpYyBjb25z
dCBzdGQ6OnNpemVfdCBmaW5hbFNpemU6IG51bWJlciBvZiBieXRlcyBwZXIgb3V0cHV0IHZlcnRl
eAorLy8gc3RhdGljIHZvaWQgY29udmVydEFycmF5KGNvbnN0IHZvaWQgKmluLCBzdGQ6OnNpemVf
dCBzdHJpZGUsIHN0ZDo6c2l6ZV90IG4sIHZvaWQgKm91dCk6IGNvbnZlcnQgYW4gYXJyYXkgb2Yg
dmVydGljZXMuIElucHV0IG1heSBiZSBzdHJpZGVkLCBidXQgb3V0cHV0IHdpbGwgYmUgdW5zdHJp
ZGVkLgorCit0ZW1wbGF0ZSA8Y2xhc3MgSW5ULCBjbGFzcyBXaWRlblJ1bGUsIGNsYXNzIENvbnZl
cnRlciwgY2xhc3MgRGVmYXVsdFZhbHVlUnVsZSA9IFNpbXBsZURlZmF1bHRWYWx1ZXM8SW5UPiA+
CitzdHJ1Y3QgVmVydGV4RGF0YUNvbnZlcnRlcgoreworICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29u
dmVydGVyOjpPdXRwdXRUeXBlIE91dHB1dFR5cGU7CisgICAgdHlwZWRlZiBJblQgSW5wdXRUeXBl
OworCisgICAgc3RhdGljIGNvbnN0IGJvb2wgaWRlbnRpdHkgPSAoV2lkZW5SdWxlOjppbml0aWFs
V2lkdGggPT0gV2lkZW5SdWxlOjpmaW5hbFdpZHRoKSAmJiBDb252ZXJ0ZXI6OmlkZW50aXR5Owor
ICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBmaW5hbFNpemUgPSBXaWRlblJ1bGU6OmZpbmFs
V2lkdGggKiBzaXplb2YoT3V0cHV0VHlwZSk7CisKKyAgICBzdGF0aWMgdm9pZCBjb252ZXJ0QXJy
YXkoY29uc3QgSW5wdXRUeXBlICppbiwgc3RkOjpzaXplX3Qgc3RyaWRlLCBzdGQ6OnNpemVfdCBu
LCBPdXRwdXRUeXBlICpvdXQpCisgICAgeworICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAw
OyBpIDwgbjsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBJbnB1dFR5cGUgKmVp
biA9IHBvaW50ZXJBZGRCeXRlcyhpbiwgaSAqIHN0cmlkZSk7CisKKyAgICAgICAgICAgIGNvcHlD
b21wb25lbnQob3V0LCBlaW4sIDAsIHN0YXRpY19jYXN0PE91dHB1dFR5cGU+KERlZmF1bHRWYWx1
ZVJ1bGU6Onplcm8oKSkpOworICAgICAgICAgICAgY29weUNvbXBvbmVudChvdXQsIGVpbiwgMSwg
c3RhdGljX2Nhc3Q8T3V0cHV0VHlwZT4oRGVmYXVsdFZhbHVlUnVsZTo6emVybygpKSk7CisgICAg
ICAgICAgICBjb3B5Q29tcG9uZW50KG91dCwgZWluLCAyLCBzdGF0aWNfY2FzdDxPdXRwdXRUeXBl
PihEZWZhdWx0VmFsdWVSdWxlOjp6ZXJvKCkpKTsKKyAgICAgICAgICAgIGNvcHlDb21wb25lbnQo
b3V0LCBlaW4sIDMsIHN0YXRpY19jYXN0PE91dHB1dFR5cGU+KERlZmF1bHRWYWx1ZVJ1bGU6Om9u
ZSgpKSk7CisKKyAgICAgICAgICAgIG91dCArPSBXaWRlblJ1bGU6OmZpbmFsV2lkdGg7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBjb252ZXJ0QXJyYXkoY29uc3Qgdm9pZCAq
aW4sIHN0ZDo6c2l6ZV90IHN0cmlkZSwgc3RkOjpzaXplX3Qgbiwgdm9pZCAqb3V0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGNvbnZlcnRBcnJheShzdGF0aWNfY2FzdDxjb25zdCBJbnB1dFR5cGUq
PihpbiksIHN0cmlkZSwgbiwgc3RhdGljX2Nhc3Q8T3V0cHV0VHlwZSo+KG91dCkpOworICAgIH0K
KworICBwcml2YXRlOgorICAgIC8vIEFkdmFuY2UgdGhlIGdpdmVuIHBvaW50ZXIgYnkgYSBudW1i
ZXIgb2YgYnl0ZXMgKG5vdCBwb2ludGVkLXRvIGVsZW1lbnRzKS4KKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVD4KKyAgICBzdGF0aWMgVCAqcG9pbnRlckFkZEJ5dGVzKFQgKmJhc2VQdHIsIHN0ZDo6c2l6
ZV90IG51bUJ5dGVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCAq
PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oYmFzZVB0cikgKyBudW1CeXRlcyk7CisgICAg
fQorCisgICAgc3RhdGljIHZvaWQgY29weUNvbXBvbmVudChPdXRwdXRUeXBlICpvdXQsIGNvbnN0
IElucHV0VHlwZSAqaW4sIHN0ZDo6c2l6ZV90IGVsZW1lbnRpbmRleCwgT3V0cHV0VHlwZSBkZWZh
dWx0dmFsdWUpCisgICAgeworICAgICAgICBpZiAoV2lkZW5SdWxlOjpmaW5hbFdpZHRoID4gZWxl
bWVudGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoV2lkZW5SdWxlOjppbml0aWFs
V2lkdGggPiBlbGVtZW50aW5kZXgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0
W2VsZW1lbnRpbmRleF0gPSBDb252ZXJ0ZXI6OmNvbnZlcnQoaW5bZWxlbWVudGluZGV4XSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgb3V0W2VsZW1lbnRpbmRleF0gPSBkZWZhdWx0dmFsdWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9Cit9OworCit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9WRVJURVhD
T05WRVJTSU9OX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL3NoYWRlcnMvQmxpdC5wcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvQmxpdC5wcwkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hh
ZGVycy9CbGl0LnBzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
Kworc2FtcGxlcjJEIHRleCA6IHMwOworCit1bmlmb3JtIGZsb2F0NCBtb2RlIDogYzA7CisKKy8v
IFBhc3N0aHJvdWdoIFBpeGVsIFNoYWRlcgorLy8gT3V0cHV0cyB0ZXh0dXJlIDAgc2FtcGxlZCBh
dCB0ZXhjb29yZCAwLgorZmxvYXQ0IHBhc3N0aHJvdWdocHMoZmxvYXQ0IHRleGNvb3JkIDogVEVY
Q09PUkQwKSA6IENPTE9SCit7CisJcmV0dXJuIHRleDJEKHRleCwgdGV4Y29vcmQueHkpOworfTsK
KworLy8gTHVtaW5hbmNlIENvbnZlcnNpb24gUGl4ZWwgU2hhZGVyCisvLyBPdXRwdXRzIHNhbXBs
ZSh0ZXgwLCB0YzApLnJycmEuCisvLyBGb3IgTEEgb3V0cHV0IChwYXNzIEEpIHNldCBDMC5YID0g
MSwgQzAuWSA9IDAuCisvLyBGb3IgTCBvdXRwdXQgKEEgPSAxKSBzZXQgQzAuWCA9IDAsIEMwLlkg
PSAxLgorZmxvYXQ0IGx1bWluYW5jZXBzKGZsb2F0NCB0ZXhjb29yZCA6IFRFWENPT1JEMCkgOiBD
T0xPUgoreworCWZsb2F0NCB0bXAgPSB0ZXgyRCh0ZXgsIHRleGNvb3JkLnh5KTsKKwl0bXAudyA9
IHRtcC53ICogbW9kZS54ICsgbW9kZS55OworCXJldHVybiB0bXAueHh4dzsKK307CisKKy8vIFJH
Qi9BIENvbXBvbmVudCBNYXNrIFBpeGVsIFNoYWRlcgorLy8gT3V0cHV0cyBzYW1wbGUodGV4MCwg
dGMwKSB3aXRoIG9wdGlvbnMgdG8gZm9yY2UgUkdCID0gMCBhbmQvb3IgQSA9IDEuCisvLyBUbyBm
b3JjZSBSR0IgPSAwLCBzZXQgQzAuWCA9IDAsIG90aGVyd2lzZSBDMC5YID0gMS4KKy8vIFRvIGZv
cmNlIEEgPSAxLCBzZXQgQzAuWiA9IDAsIEMwLlcgPSAxLCBvdGhlcndpc2UgQzAuWiA9IDEsIEMw
LlcgPSAwLgorZmxvYXQ0IGNvbXBvbmVudG1hc2twcyhmbG9hdDQgdGV4Y29vcmQgOiBURVhDT09S
RDApIDogQ09MT1IKK3sKKwlmbG9hdDQgdG1wID0gdGV4MkQodGV4LCB0ZXhjb29yZC54eSk7CisJ
dG1wLnh5eiA9IHRtcC54eXogKiBtb2RlLng7CisJdG1wLncgPSB0bXAudyAqIG1vZGUueiArIG1v
ZGUudzsKKwlyZXR1cm4gdG1wOworfTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9CbGl0LnZzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9CbGl0LnZz
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9zaGFkZXJzL0JsaXQudnMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCitzdHJ1Y3QgVlNfT1VUUFVUCit7CisgICAgZmxvYXQ0IHBvc2l0aW9uIDog
UE9TSVRJT047CisgICAgZmxvYXQ0IHRleGNvb3JkIDogVEVYQ09PUkQwOworfTsKKwordW5pZm9y
bSBmbG9hdDQgaGFsZlBpeGVsU2l6ZSA6IGMwOworCisvLyBTdGFuZGFyZCBWZXJ0ZXggU2hhZGVy
CisvLyBJbnB1dCAwIGlzIHRoZSBob21vZ2Vub3VzIHBvc2l0aW9uLgorLy8gT3V0cHV0cyB0aGUg
aG9tb2dlbm91cyBwb3NpdGlvbiBhcy1pcy4KKy8vIE91dHB1dHMgYSB0ZXggY29vcmQgd2l0aCAo
MCwwKSBpbiB0aGUgdXBwZXItbGVmdCBjb3JuZXIgb2YgdGhlIHNjcmVlbiBhbmQgKDEsMSkgaW4g
dGhlIGJvdHRvbSByaWdodC4KKy8vIEMwLlggbXVzdCBiZSBuZWdhdGl2ZSBoYWxmLXBpeGVsIHdp
ZHRoLCBDMC5ZIG11c3QgYmUgaGFsZi1waXhlbCBoZWlnaHQuIEMwLlpXIG11c3QgYmUgMC4KK1ZT
X09VVFBVVCBzdGFuZGFyZHZzKGluIGZsb2F0NCBwb3NpdGlvbiA6IFBPU0lUSU9OKQoreworICAg
IFZTX09VVFBVVCBPdXQ7CisKKyAgICBPdXQucG9zaXRpb24gPSBwb3NpdGlvbiArIGhhbGZQaXhl
bFNpemU7CisgICAgT3V0LnRleGNvb3JkID0gcG9zaXRpb24gKiBmbG9hdDQoMC41LCAtMC41LCAx
LjAsIDEuMCkgKyBmbG9hdDQoMC41LCAwLjUsIDAsIDApOworCisgICAgcmV0dXJuIE91dDsKK307
CisKKy8vIEZsaXAgWSBWZXJ0ZXggU2hhZGVyCisvLyBJbnB1dCAwIGlzIHRoZSBob21vZ2Vub3Vz
IHBvc2l0aW9uLgorLy8gT3V0cHV0cyB0aGUgaG9tb2dlbm91cyBwb3NpdGlvbiBhcy1pcy4KKy8v
IE91dHB1dHMgYSB0ZXggY29vcmQgd2l0aCAoMCwxKSBpbiB0aGUgdXBwZXItbGVmdCBjb3JuZXIg
b2YgdGhlIHNjcmVlbiBhbmQgKDEsMCkgaW4gdGhlIGJvdHRvbSByaWdodC4KKy8vIEMwLlhZIG11
c3QgYmUgdGhlIGhhbGYtcGl4ZWwgd2lkdGggYW5kIGhlaWdodC4gQzAuWlcgbXVzdCBiZSAwLgor
VlNfT1VUUFVUIGZsaXB5dnMoaW4gZmxvYXQ0IHBvc2l0aW9uIDogUE9TSVRJT04pCit7CisgICAg
VlNfT1VUUFVUIE91dDsKKworICAgIE91dC5wb3NpdGlvbiA9IHBvc2l0aW9uICsgaGFsZlBpeGVs
U2l6ZTsKKyAgICBPdXQudGV4Y29vcmQgPSBwb3NpdGlvbiAqIGZsb2F0NCgwLjUsIDAuNSwgMS4w
LCAxLjApICsgZmxvYXQ0KDAuNSwgMC41LCAwLCAwKTsKKworICAgIHJldHVybiBPdXQ7Cit9OwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFk
ZXJzL0NsZWFyMTEuaGxzbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvQ2xlYXIxMS5obHNsCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJz
L0NsZWFyMTEuaGxzbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAordm9pZCBWU19DbGVh
ciggaW4gZmxvYXQzICBpblBvc2l0aW9uIDogICAgUE9TSVRJT04sICBpbiBmbG9hdDQgIGluQ29s
b3IgOiBDT0xPUiwKKyAgICAgICAgICAgICAgb3V0IGZsb2F0NCBvdXRQb3NpdGlvbiA6IFNWX1BP
U0lUSU9OLCBvdXQgZmxvYXQ0IG91dENvbG9yIDogQ09MT1IpCit7CisgICAgb3V0UG9zaXRpb24g
PSBmbG9hdDQoaW5Qb3NpdGlvbiwgMS4wZik7CisgICAgb3V0Q29sb3IgPSBpbkNvbG9yOworfQor
CisvLyBBc3N1bWUgd2UgYXJlIGluIFNNNCssIHdoaWNoIGhhcyA4IGNvbG9yIG91dHB1dHMKK3N0
cnVjdCBQU19PdXRwdXRNdWx0aXBsZQoreworCWZsb2F0NCBjb2xvcjAgOiBTVl9UQVJHRVQwOwor
CWZsb2F0NCBjb2xvcjEgOiBTVl9UQVJHRVQxOworCWZsb2F0NCBjb2xvcjIgOiBTVl9UQVJHRVQy
OworCWZsb2F0NCBjb2xvcjMgOiBTVl9UQVJHRVQzOworCWZsb2F0NCBjb2xvcjQgOiBTVl9UQVJH
RVQ0OworCWZsb2F0NCBjb2xvcjUgOiBTVl9UQVJHRVQ1OworCWZsb2F0NCBjb2xvcjYgOiBTVl9U
QVJHRVQ2OworCWZsb2F0NCBjb2xvcjcgOiBTVl9UQVJHRVQ3OworfTsKKworUFNfT3V0cHV0TXVs
dGlwbGUgUFNfQ2xlYXJNdWx0aXBsZShpbiBmbG9hdDQgaW5Qb3NpdGlvbiA6IFNWX1BPU0lUSU9O
LCBpbiBmbG9hdDQgaW5Db2xvciA6IENPTE9SKQoreworCVBTX091dHB1dE11bHRpcGxlIG91dENv
bG9yOworCW91dENvbG9yLmNvbG9yMCA9IGluQ29sb3I7CisJb3V0Q29sb3IuY29sb3IxID0gaW5D
b2xvcjsKKwlvdXRDb2xvci5jb2xvcjIgPSBpbkNvbG9yOworCW91dENvbG9yLmNvbG9yMyA9IGlu
Q29sb3I7CisJb3V0Q29sb3IuY29sb3I0ID0gaW5Db2xvcjsKKwlvdXRDb2xvci5jb2xvcjUgPSBp
bkNvbG9yOworCW91dENvbG9yLmNvbG9yNiA9IGluQ29sb3I7CisJb3V0Q29sb3IuY29sb3I3ID0g
aW5Db2xvcjsKKwlyZXR1cm4gb3V0Q29sb3I7Cit9CisKK2Zsb2F0NCBQU19DbGVhclNpbmdsZShp
biBmbG9hdDQgaW5Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uLCBpbiBmbG9hdDQgaW5Db2xvciA6IENP
TE9SKSA6IFNWX1RhcmdldDAKK3sKKwlyZXR1cm4gaW5Db2xvcjsKK30KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9QYXNzdGhyb3Vn
aDExLmhsc2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9zaGFkZXJzL1Bhc3N0aHJvdWdoMTEuaGxzbAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9Q
YXNzdGhyb3VnaDExLmhsc2wJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKK1RleHR1cmUy
RCBUZXh0dXJlIDogcmVnaXN0ZXIodDApOworU2FtcGxlclN0YXRlIFNhbXBsZXIgOiByZWdpc3Rl
cihzMCk7CisKK3ZvaWQgVlNfUGFzc3Rocm91Z2goIGluIGZsb2F0MiAgaW5Qb3NpdGlvbiA6ICAg
IFBPU0lUSU9OLCAgaW4gZmxvYXQyICBpblRleENvb3JkIDogVEVYQ09PUkQwLAorICAgICAgICAg
ICAgICAgICAgICBvdXQgZmxvYXQ0IG91dFBvc2l0aW9uIDogU1ZfUE9TSVRJT04sIG91dCBmbG9h
dDIgb3V0VGV4Q29vcmQgOiBURVhDT09SRDApCit7CisgICAgb3V0UG9zaXRpb24gPSBmbG9hdDQo
aW5Qb3NpdGlvbiwgMC4wZiwgMS4wZik7CisgICAgb3V0VGV4Q29vcmQgPSBpblRleENvb3JkOwor
fQorCitmbG9hdDQgUFNfUGFzc3Rocm91Z2hSR0JBKGluIGZsb2F0NCBpblBvc2l0aW9uIDogU1Zf
UE9TSVRJT04sIGluIGZsb2F0MiBpblRleENvb3JkIDogVEVYQ09PUkQwKSA6IFNWX1RBUkdFVDAK
K3sKKyAgICByZXR1cm4gVGV4dHVyZS5TYW1wbGUoU2FtcGxlciwgaW5UZXhDb29yZCkucmdiYTsK
K30KKworZmxvYXQ0IFBTX1Bhc3N0aHJvdWdoUkdCKGluIGZsb2F0NCBpblBvc2l0aW9uIDogU1Zf
UE9TSVRJT04sIGluIGZsb2F0MiBpblRleENvb3JkIDogVEVYQ09PUkQwKSA6IFNWX1RBUkdFVDAK
K3sKKyAgICByZXR1cm4gZmxvYXQ0KFRleHR1cmUuU2FtcGxlKFNhbXBsZXIsIGluVGV4Q29vcmQp
LnJnYiwgMS4wZik7Cit9CisKK2Zsb2F0NCBQU19QYXNzdGhyb3VnaEx1bShpbiBmbG9hdDQgaW5Q
b3NpdGlvbiA6IFNWX1BPU0lUSU9OLCBpbiBmbG9hdDIgaW5UZXhDb29yZCA6IFRFWENPT1JEMCkg
OiBTVl9UQVJHRVQwCit7CisgICAgcmV0dXJuIGZsb2F0NChUZXh0dXJlLlNhbXBsZShTYW1wbGVy
LCBpblRleENvb3JkKS5ycnIsIDEuMGYpOworfQorCitmbG9hdDQgUFNfUGFzc3Rocm91Z2hMdW1B
bHBoYShpbiBmbG9hdDQgaW5Qb3NpdGlvbiA6IFNWX1BPU0lUSU9OLCBpbiBmbG9hdDIgaW5UZXhD
b29yZCA6IFRFWENPT1JEMCkgOiBTVl9UQVJHRVQwCit7CisgICAgcmV0dXJuIFRleHR1cmUuU2Ft
cGxlKFNhbXBsZXIsIGluVGV4Q29vcmQpLnJycmE7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5i
YXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9zaGFkZXJzL2dlbmVyYXRlX3NoYWRlcnMuYmF0CShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2dlbmVy
YXRlX3NoYWRlcnMuYmF0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACitARUNITyBPRkYN
CitSRU0NCitSRU0gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorUkVNIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCitSRU0gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4NCitSRU0NCisNCitQQVRIICVQQVRIJTslRFhTREtfRElSJVxVdGls
aXRpZXNcYmluXHg4Ng0KKw0KK2Z4YyAvRSBzdGFuZGFyZHZzIC9UIHZzXzJfMCAvRmggY29tcGls
ZWQvc3RhbmRhcmR2cy5oIEJsaXQudnMNCitmeGMgL0UgZmxpcHl2cyAvVCB2c18yXzAgL0ZoIGNv
bXBpbGVkL2ZsaXB5dnMuaCBCbGl0LnZzDQorZnhjIC9FIHBhc3N0aHJvdWdocHMgL1QgcHNfMl8w
IC9GaCBjb21waWxlZC9wYXNzdGhyb3VnaHBzLmggQmxpdC5wcw0KK2Z4YyAvRSBsdW1pbmFuY2Vw
cyAvVCBwc18yXzAgL0ZoIGNvbXBpbGVkL2x1bWluYW5jZXBzLmggQmxpdC5wcw0KK2Z4YyAvRSBj
b21wb25lbnRtYXNrcHMgL1QgcHNfMl8wIC9GaCBjb21waWxlZC9jb21wb25lbnRtYXNrcHMuaCBC
bGl0LnBzDQorDQorZnhjIC9FIFZTX1Bhc3N0aHJvdWdoIC9UIHZzXzRfMCAvRmggY29tcGlsZWQv
cGFzc3Rocm91Z2gxMXZzLmggUGFzc3Rocm91Z2gxMS5obHNsDQorZnhjIC9FIFBTX1Bhc3N0aHJv
dWdoUkdCQSAvVCBwc180XzAgL0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTExcHMuaCBQYXNz
dGhyb3VnaDExLmhsc2wNCitmeGMgL0UgUFNfUGFzc3Rocm91Z2hSR0IgL1QgcHNfNF8wIC9GaCBj
b21waWxlZC9wYXNzdGhyb3VnaHJnYjExcHMuaCBQYXNzdGhyb3VnaDExLmhsc2wNCitmeGMgL0Ug
UFNfUGFzc3Rocm91Z2hMdW0gL1QgcHNfNF8wIC9GaCBjb21waWxlZC9wYXNzdGhyb3VnaGx1bTEx
cHMuaCBQYXNzdGhyb3VnaDExLmhsc2wNCitmeGMgL0UgUFNfUGFzc3Rocm91Z2hMdW1BbHBoYSAv
VCBwc180XzAgL0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdobHVtYWxwaGExMXBzLmggUGFzc3Rocm91
Z2gxMS5obHNsDQorDQorZnhjIC9FIFZTX0NsZWFyIC9UIHZzXzRfMCAvRmggY29tcGlsZWQvY2xl
YXIxMXZzLmggQ2xlYXIxMS5obHNsDQorZnhjIC9FIFBTX0NsZWFyU2luZ2xlIC9UIHBzXzRfMCAv
RmggY29tcGlsZWQvY2xlYXJzaW5nbGUxMXBzLmggQ2xlYXIxMS5obHNsDQorZnhjIC9FIFBTX0Ns
ZWFyTXVsdGlwbGUgL1QgcHNfNF8wIC9GaCBjb21waWxlZC9jbGVhcm11bHRpcGxlMTFwcy5oIENs
ZWFyMTEuaGxzbA0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jbGVhcjExdnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGls
ZWQvY2xlYXIxMXZzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXIxMXZzLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTMzIEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1p
Y3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KKy8vDQorLy8N
CisvLyAgIGZ4YyAvRSBWU19DbGVhciAvVCB2c180XzAgL0ZoIGNvbXBpbGVkL2NsZWFyMTF2cy5o
IENsZWFyMTEuaGxzbA0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0K
Ky8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBG
b3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0t
LS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCisvLyBQT1NJVElPTiAgICAgICAgICAgICAgICAg
MCAgIHh5eiAgICAgICAgIDAgICAgIE5PTkUgIGZsb2F0ICAgeHl6IA0KKy8vIENPTE9SICAgICAg
ICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMSAgICAgTk9ORSAgZmxvYXQgICB4eXp3DQor
Ly8NCisvLw0KKy8vIE91dHB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAg
ICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0g
LS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAg
ICAgUE9TICBmbG9hdCAgIHh5encNCisvLyBDT0xPUiAgICAgICAgICAgICAgICAgICAgMCAgIHh5
encgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHl6dw0KKy8vDQordnNfNF8wDQorZGNsX2lu
cHV0IHYwLnh5eg0KK2RjbF9pbnB1dCB2MS54eXp3DQorZGNsX291dHB1dF9zaXYgbzAueHl6dywg
cG9zaXRpb24NCitkY2xfb3V0cHV0IG8xLnh5encNCittb3YgbzAueHl6LCB2MC54eXp4DQorbW92
IG8wLncsIGwoMS4wMDAwMDApDQorbW92IG8xLnh5encsIHYxLnh5encNCityZXQgDQorLy8gQXBw
cm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBC
WVRFIGdfVlNfQ2xlYXJbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDEwOSwgMTM4
LCANCisgICAgMTA1LCAgODMsICA4NiwgMTkwLCAgODMsIDEyNSwgDQorICAgICA3MiwgMTAyLCAx
OTQsIDEzNiwgIDQ2LCAgNjksIA0KKyAgICAgMTcsIDEyMSwgICAxLCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDQ4LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNDAsICAgMCwgICAwLCAgIDAsIDIyMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICA0OCwgICAxLCAgIDAsICAgMCwgDQorICAgIDE4MCwgICAxLCAgIDAsICAg
MCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgIDgwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU0
LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgIDc3
LCAxMDUsIA0KKyAgICAgOTksIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCANCisgICAgMTE2LCAg
MzIsICA0MCwgIDgyLCAgNDEsICAzMiwgDQorICAgICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCAg
ODMsIA0KKyAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCANCisgICAgIDY3LCAxMTEs
IDEwOSwgMTEyLCAxMDUsIDEwOCwgDQorICAgIDEwMSwgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTAs
IA0KKyAgICAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgIDQ2LCANCisgICAgIDUxLCAgNDksICA0
OSwgIDQ5LCAgIDAsIDE3MSwgDQorICAgIDE3MSwgMTcxLCAgNzMsICA4MywgIDcxLCAgNzgsIA0K
KyAgICAgNzIsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgOCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICA1NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDcsICAgNywgICAwLCAgIDAsIA0KKyAgICAg
NjUsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgIDE1LCAgMTUsICAgMCwgICAwLCANCisgICAgIDgwLCAgNzksICA4MywgIDczLCAgODQs
ICA3MywgDQorICAgICA3OSwgIDc4LCAgIDAsICA2NywgIDc5LCAgNzYsIA0KKyAgICAgNzksICA4
MiwgICAwLCAxNzEsICA3OSwgIDgzLCANCisgICAgIDcxLCAgNzgsICA3NiwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDU2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAxNSwgICAwLCANCisgICAgICAwLCAgIDAsICA2OCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODAsIA0KKyAgICAgNzksICA4MywgIDczLCAgODQs
ICA3MywgIDc5LCANCisgICAgIDc4LCAgIDAsICA2NywgIDc5LCAgNzYsICA3OSwgDQorICAgICA4
MiwgICAwLCAxNzEsIDE3MSwgIDgzLCAgNzIsIA0KKyAgICAgNjgsICA4MiwgMTI0LCAgIDAsICAg
MCwgICAwLCANCisgICAgIDY0LCAgIDAsICAgMSwgICAwLCAgMzEsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgOTUsICAgMCwgICAwLCAgIDMsIA0KKyAgICAxMTQsICAxNiwgIDE2LCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICA5NSwgICAwLCAgIDAsICAgMywgDQorICAgIDI0MiwgIDE2
LCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTAzLCAgIDAsICAgMCwgICA0
LCANCisgICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMDEsICAgMCwgICAwLCAgIDMsIDI0MiwgIDMyLCAN
CisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAs
ICAgNSwgMTE0LCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgIDcwLCAgMTgsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTQsICAg
MCwgICAwLCAgIDUsIA0KKyAgICAxMzAsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMSwgIDY0LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAxMjgsICA2Mywg
IDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAx
LCAgIDAsICAgMCwgICAwLCAgNzAsICAzMCwgDQorICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNjIsICAgMCwgICAwLCAgIDEsICA4MywgIDg0LCANCisgICAgIDY1LCAg
ODQsIDExNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFybXVsdGlwbGUxMXBzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2Nv
bXBpbGVkL2NsZWFybXVsdGlwbGUxMXBzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJt
dWx0aXBsZTExcHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTkgQEAKKyNpZiAwDQorLy8N
CisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5
Ljk1Mi4zMTExDQorLy8NCisvLw0KKy8vICAgZnhjIC9FIFBTX0NsZWFyTXVsdGlwbGUgL1QgcHNf
NF8wIC9GaCBjb21waWxlZC9jbGVhcm11bHRpcGxlMTFwcy5oDQorLy8gICAgQ2xlYXIxMS5obHNs
DQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAg
ICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQN
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0g
LS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAg
ICAgMCAgICAgIFBPUyAgZmxvYXQgICAgICAgDQorLy8gQ09MT1IgICAgICAgICAgICAgICAgICAg
IDAgICB4eXp3ICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5encNCisvLw0KKy8vDQorLy8g
T3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAg
TWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCisvLyBT
Vl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgIGZsb2F0
ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAxICAgeHl6dyAgICAgICAgMSAg
IFRBUkdFVCAgZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDIgICB4
eXp3ICAgICAgICAyICAgVEFSR0VUICBmbG9hdCAgIHh5encNCisvLyBTVl9UQVJHRVQgICAgICAg
ICAgICAgICAgMyAgIHh5encgICAgICAgIDMgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vIFNW
X1RBUkdFVCAgICAgICAgICAgICAgICA0ICAgeHl6dyAgICAgICAgNCAgIFRBUkdFVCAgZmxvYXQg
ICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDUgICB4eXp3ICAgICAgICA1ICAg
VEFSR0VUICBmbG9hdCAgIHh5encNCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgNiAgIHh5
encgICAgICAgIDYgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAg
ICAgICAgICA3ICAgeHl6dyAgICAgICAgNyAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQorLy8NCitw
c180XzANCitkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5encNCitkY2xfb3V0cHV0IG8wLnh5encN
CitkY2xfb3V0cHV0IG8xLnh5encNCitkY2xfb3V0cHV0IG8yLnh5encNCitkY2xfb3V0cHV0IG8z
Lnh5encNCitkY2xfb3V0cHV0IG80Lnh5encNCitkY2xfb3V0cHV0IG81Lnh5encNCitkY2xfb3V0
cHV0IG82Lnh5encNCitkY2xfb3V0cHV0IG83Lnh5encNCittb3YgbzAueHl6dywgdjEueHl6dw0K
K21vdiBvMS54eXp3LCB2MS54eXp3DQorbW92IG8yLnh5encsIHYxLnh5encNCittb3YgbzMueHl6
dywgdjEueHl6dw0KK21vdiBvNC54eXp3LCB2MS54eXp3DQorbW92IG81Lnh5encsIHYxLnh5encN
Cittb3YgbzYueHl6dywgdjEueHl6dw0KK21vdiBvNy54eXp3LCB2MS54eXp3DQorcmV0IA0KKy8v
IEFwcHJveGltYXRlbHkgOSBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29u
c3QgQllURSBnX1BTX0NsZWFyTXVsdGlwbGVbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAg
NjcsIDE0NiwgMjQ2LCANCisgICAgMjM2LCAyNDAsICA1MCwgIDQwLCAgODcsICA1NSwgDQorICAg
ICA3MywgMTQwLCAyNTEsIDIwMCwgICA4LCAgMjIsIA0KKyAgICAxNzMsIDExNywgICAxLCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDg4LCAgIDMsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAg
MCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNDAsICAgMCwgICAwLCAgIDAsIDIy
NCwgICAwLCANCisgICAgICAwLCAgIDAsIDE4OCwgICAxLCAgIDAsICAgMCwgDQorICAgIDIyMCwg
ICAyLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgIDgwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0
LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAg
IDAsICAgMCwgIDc3LCAxMDUsIA0KKyAgICAgOTksIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCAN
CisgICAgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgDQorICAgICA3MiwgIDc2LCAgODMs
ICA3NiwgIDMyLCAgODMsIA0KKyAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCANCisg
ICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgDQorICAgIDEwMSwgMTE0LCAgMzIsICA1
NywgIDQ2LCAgNTAsIA0KKyAgICAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgIDQ2LCANCisgICAg
IDUxLCAgNDksICA0OSwgIDQ5LCAgIDAsIDE3MSwgDQorICAgIDE3MSwgMTcxLCAgNzMsICA4Mywg
IDcxLCAgNzgsIA0KKyAgICAgNzYsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAw
LCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgNjgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDE1LCAgMTUsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYsICA5
NSwgIDgwLCAgNzksICA4MywgDQorICAgICA3MywgIDg0LCAgNzMsICA3OSwgIDc4LCAgIDAsIA0K
KyAgICAgNjcsICA3OSwgIDc2LCAgNzksICA4MiwgICAwLCANCisgICAgMTcxLCAxNzEsICA3OSwg
IDgzLCAgNzEsICA3OCwgDQorICAgIDIxMiwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgMjAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAg
IDAsICAgMCwgDQorICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDEs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAg
MCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgMjAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAw
LCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQor
ICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMCwgICAwLCAgIDAs
ICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MywgICAwLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAg
MCwgICAwLCANCisgICAgMjAwLCAgIDAsICAgMCwgICAwLCAgIDYsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgNiwg
ICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgIDIwMCwgICAw
LCAgIDAsICAgMCwgICA3LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDcsICAgMCwgDQorICAgICAgMCwgICAwLCAg
MTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODMsICA4NiwgIDk1LCAgODQsICA2NSwgIDgyLCAN
CisgICAgIDcxLCAgNjksICA4NCwgICAwLCAxNzEsIDE3MSwgDQorICAgICA4MywgIDcyLCAgNjgs
ICA4MiwgIDI0LCAgIDEsIA0KKyAgICAgIDAsICAgMCwgIDY0LCAgIDAsICAgMCwgICAwLCANCisg
ICAgIDcwLCAgIDAsICAgMCwgICAwLCAgOTgsICAxNiwgDQorICAgICAgMCwgICAzLCAyNDIsICAx
NiwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAg
ICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
MTAxLCAgIDAsIA0KKyAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAx
LCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2
LCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAg
IDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgMTAxLCAg
IDAsIA0KKyAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICA0LCAgIDAs
ICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAs
IA0KKyAgICAgIDUsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0
MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgNiwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0K
KyAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICA3LCAgIDAsICAgMCwg
ICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgIDMwLCANCisgICAgIDE2LCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNSwgMjQyLCAgMzIsIA0KKyAgICAg
MTYsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDcwLCAgMzAsICAxNiwgICAwLCAg
IDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDUsIA0KKyAgICAyNDIs
ICAzMiwgIDE2LCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgIDMwLCAgMTYs
ICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAg
NSwgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgNzAsICAz
MCwgDQorICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwg
ICAwLCAgIDUsIDI0MiwgIDMyLCANCisgICAgIDE2LCAgIDAsICAgNCwgICAwLCAgIDAsICAgMCwg
DQorICAgICA3MCwgIDMwLCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU0
LCAgIDAsICAgMCwgICA1LCANCisgICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDUsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgNzAsICAzMCwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAg
IDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDUsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAg
ICAgNiwgICAwLCAgIDAsICAgMCwgIDcwLCAgMzAsIA0KKyAgICAgMTYsICAgMCwgICAxLCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA1LCAyNDIsICAzMiwgDQorICAgICAx
NiwgICAwLCAgIDcsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAzMCwgIDE2LCAgIDAsICAg
MSwgICAwLCANCisgICAgICAwLCAgIDAsICA2MiwgICAwLCAgIDAsICAgMSwgDQorICAgICA4Mywg
IDg0LCAgNjUsICA4NCwgMTE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA5LCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDksICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICA4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW5nbGUxMXBzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9z
aGFkZXJzL2NvbXBpbGVkL2NsZWFyc2luZ2xlMTFwcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVk
L2NsZWFyc2luZ2xlMTFwcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMyBAQAorI2lmIDAN
CisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVy
IDkuMjkuOTUyLjMxMTENCisvLw0KKy8vDQorLy8gICBmeGMgL0UgUFNfQ2xlYXJTaW5nbGUgL1Qg
cHNfNF8wIC9GaCBjb21waWxlZC9jbGVhcnNpbmdsZTExcHMuaA0KKy8vICAgIENsZWFyMTEuaGxz
bA0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAg
ICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2Vk
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLSAtLS0tLS0NCisvLyBTVl9Qb3NpdGlvbiAgICAgICAgICAgICAgMCAgIHh5encgICAg
ICAgIDAgICAgICBQT1MgIGZsb2F0ICAgICAgIA0KKy8vIENPTE9SICAgICAgICAgICAgICAgICAg
ICAwICAgeHl6dyAgICAgICAgMSAgICAgTk9ORSAgZmxvYXQgICB4eXp3DQorLy8NCisvLw0KKy8v
IE91dHB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAg
IE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0gLS0tLS0tDQorLy8g
U1ZfVGFyZ2V0ICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICBmbG9h
dCAgIHh5encNCisvLw0KK3BzXzRfMA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHl6dw0KK2Rj
bF9vdXRwdXQgbzAueHl6dw0KK21vdiBvMC54eXp3LCB2MS54eXp3DQorcmV0IA0KKy8vIEFwcHJv
eGltYXRlbHkgMiBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllU
RSBnX1BTX0NsZWFyU2luZ2xlW10gPQ0KK3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAgMTEs
ICA0OSwgDQorICAgIDIyMCwgMTU3LCAgMzUsIDEwNiwgMTc1LCAxNjEsIA0KKyAgICAxODAsIDE3
OCwgMTQ3LCAxNTAsIDEzNCwgMTYyLCANCisgICAgMjIyLCAgNzksICAgMSwgICAwLCAgIDAsICAg
MCwgDQorICAgIDIwOCwgICAxLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDUyLCAgIDAsICAgMCwgICAwLCANCisgICAgMTQwLCAgIDAsICAgMCwgICAwLCAyMjQsICAgMCwg
DQorICAgICAgMCwgICAwLCAgMjAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgODQsICAgMSwgICAw
LCAgIDAsICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAsICA4MCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgDQorICAg
IDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAs
ICA3NywgMTA1LCANCisgICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgDQorICAgIDEx
NiwgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsIA0KKyAgICAgNzIsICA3NiwgIDgzLCAgNzYsICAz
MiwgIDgzLCANCisgICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgDQorICAgICA2Nywg
MTExLCAxMDksIDExMiwgMTA1LCAxMDgsIA0KKyAgICAxMDEsIDExNCwgIDMyLCAgNTcsICA0Niwg
IDUwLCANCisgICAgIDU3LCAgNDYsICA1NywgIDUzLCAgNTAsICA0NiwgDQorICAgICA1MSwgIDQ5
LCAgNDksICA0OSwgICAwLCAxNzEsIA0KKyAgICAxNzEsIDE3MSwgIDczLCAgODMsICA3MSwgIDc4
LCANCisgICAgIDc2LCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisg
ICAgIDY4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAg
ICAwLCAgIDAsICAxNSwgIDE1LCAgIDAsICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4MCwg
MTExLCAxMTUsIA0KKyAgICAxMDUsIDExNiwgMTA1LCAxMTEsIDExMCwgICAwLCANCisgICAgIDY3
LCAgNzksICA3NiwgIDc5LCAgODIsICAgMCwgDQorICAgIDE3MSwgMTcxLCAgNzksICA4MywgIDcx
LCAgNzgsIA0KKyAgICAgNDQsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAg
IDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQorICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgODMsICA4NiwgIDk1LCAgODQsICA5NywgMTE0LCANCisgICAgMTAzLCAxMDEsIDEx
NiwgICAwLCAxNzEsIDE3MSwgDQorICAgICA4MywgIDcyLCAgNjgsICA4MiwgIDU2LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgIDY0LCAgIDAsICAgMCwgICAwLCANCisgICAgIDE0LCAgIDAsICAgMCwg
ICAwLCAgOTgsICAxNiwgDQorICAgICAgMCwgICAzLCAyNDIsICAxNiwgIDE2LCAgIDAsIA0KKyAg
ICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0MiwgIDMy
LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAg
IDAsICAgNSwgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
NzAsICAzMCwgDQorICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjIs
ICAgMCwgICAwLCAgIDEsICA4MywgIDg0LCANCisgICAgIDY1LCAgODQsIDExNiwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMA0KK307DQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBp
bGVkL2NvbXBvbmVudG1hc2twcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNr
cHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNrcHMuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4MSBAQAorI2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3Nv
ZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTENCisvLw0KKy8vICAgZnhj
IC9FIGNvbXBvbmVudG1hc2twcyAvVCBwc18yXzAgL0ZoIGNvbXBpbGVkL2NvbXBvbmVudG1hc2tw
cy5oIEJsaXQucHMNCisvLw0KKy8vDQorLy8gUGFyYW1ldGVyczoNCisvLw0KKy8vICAgZmxvYXQ0
IG1vZGU7DQorLy8gICBzYW1wbGVyMkQgdGV4Ow0KKy8vDQorLy8NCisvLyBSZWdpc3RlcnM6DQor
Ly8NCisvLyAgIE5hbWUgICAgICAgICBSZWcgICBTaXplDQorLy8gICAtLS0tLS0tLS0tLS0gLS0t
LS0gLS0tLQ0KKy8vICAgbW9kZSAgICAgICAgIGMwICAgICAgIDENCisvLyAgIHRleCAgICAgICAg
ICBzMCAgICAgICAxDQorLy8NCisNCisgICAgcHNfMl8wDQorICAgIGRjbCB0MC54eQ0KKyAgICBk
Y2xfMmQgczANCisgICAgdGV4bGQgcjAsIHQwLCBzMA0KKyAgICBtdWwgcjEueHl6LCByMCwgYzAu
eA0KKyAgICBtYWQgcjEudywgcjAudywgYzAueiwgYzAudw0KKyAgICBtb3Ygb0MwLCByMQ0KKw0K
Ky8vIGFwcHJveGltYXRlbHkgNCBpbnN0cnVjdGlvbiBzbG90cyB1c2VkICgxIHRleHR1cmUsIDMg
YXJpdGhtZXRpYykNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfcHMyMF9jb21wb25lbnRtYXNr
cHNbXSA9DQorew0KKyAgICAgIDAsICAgMiwgMjU1LCAyNTUsIDI1NCwgMjU1LCANCisgICAgIDQz
LCAgIDAsICA2NywgIDg0LCAgNjUsICA2NiwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgMTE5
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NSwgMjU1LCANCisgICAgICAyLCAg
IDAsICAgMCwgICAwLCAgMjgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsIA0KKyAgICAxMTIsICAgMCwgICAwLCAgIDAsICA2OCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDc2LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDkyLCAgIDAsICAg
MCwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgOTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDEwOSwg
MTExLCAxMDAsIDEwMSwgDQorICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgICAxLCAgIDAsIA0KKyAg
ICAgIDMsICAgMCwgICAxLCAgIDAsICAgNCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAxMTYsIDEwMSwgMTIwLCAgIDAsIA0KKyAgICAg
IDQsICAgMCwgIDEyLCAgIDAsICAgMSwgICAwLCANCisgICAgICAxLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTEyLCAxMTUsIA0KKyAgICAgOTUs
ICA1MCwgIDk1LCAgNDgsICAgMCwgIDc3LCANCisgICAgMTA1LCAgOTksIDExNCwgMTExLCAxMTUs
IDExMSwgDQorICAgIDEwMiwgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsIA0KKyAgICAgMzIsICA3
MiwgIDc2LCAgODMsICA3NiwgIDMyLCANCisgICAgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIDEx
NCwgDQorICAgICAzMiwgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIA0KKyAgICAxMDgsIDEwMSwg
MTE0LCAgMzIsICA1NywgIDQ2LCANCisgICAgIDUwLCAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwg
DQorICAgICA0NiwgIDUxLCAgNDksICA0OSwgIDQ5LCAgIDAsIA0KKyAgICAgMzEsICAgMCwgICAw
LCAgIDIsICAgMCwgICAwLCANCisgICAgICAwLCAxMjgsICAgMCwgICAwLCAgIDMsIDE3NiwgDQor
ICAgICAzMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsIA0KKyAgICAgIDAsIDE0NCwgICAwLCAg
IDgsICAxNSwgMTYwLCANCisgICAgIDY2LCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgDQorICAg
ICAxNSwgMTI4LCAgIDAsICAgMCwgMjI4LCAxNzYsIA0KKyAgICAgIDAsICAgOCwgMjI4LCAxNjAs
ICAgNSwgICAwLCANCisgICAgICAwLCAgIDMsICAgMSwgICAwLCAgIDcsIDEyOCwgDQorICAgICAg
MCwgICAwLCAyMjgsIDEyOCwgICAwLCAgIDAsIA0KKyAgICAgIDAsIDE2MCwgICA0LCAgIDAsICAg
MCwgICA0LCANCisgICAgICAxLCAgIDAsICAgOCwgMTI4LCAgIDAsICAgMCwgDQorICAgIDI1NSwg
MTI4LCAgIDAsICAgMCwgMTcwLCAxNjAsIA0KKyAgICAgIDAsICAgMCwgMjU1LCAxNjAsICAgMSwg
ICAwLCANCisgICAgICAwLCAgIDIsICAgMCwgICA4LCAgMTUsIDEyOCwgDQorICAgICAgMSwgICAw
LCAyMjgsIDEyOCwgMjU1LCAyNTUsIA0KKyAgICAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVk
L2ZsaXB5dnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvZmxpcHl2cy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJz
L2NvbXBpbGVkL2ZsaXB5dnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorI2lmIDAN
CisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVy
IDkuMjkuOTUyLjMxMTENCisvLw0KKy8vICAgZnhjIC9FIGZsaXB5dnMgL1QgdnNfMl8wIC9GaCBj
b21waWxlZC9mbGlweXZzLmggQmxpdC52cw0KKy8vDQorLy8NCisvLyBQYXJhbWV0ZXJzOg0KKy8v
DQorLy8gICBmbG9hdDQgaGFsZlBpeGVsU2l6ZTsNCisvLw0KKy8vDQorLy8gUmVnaXN0ZXJzOg0K
Ky8vDQorLy8gICBOYW1lICAgICAgICAgIFJlZyAgIFNpemUNCisvLyAgIC0tLS0tLS0tLS0tLS0g
LS0tLS0gLS0tLQ0KKy8vICAgaGFsZlBpeGVsU2l6ZSBjMCAgICAgICAxDQorLy8NCisNCisgICAg
dnNfMl8wDQorICAgIGRlZiBjMSwgMC41LCAxLCAwLCAwDQorICAgIGRjbF9wb3NpdGlvbiB2MA0K
KyAgICBhZGQgb1BvcywgdjAsIGMwDQorICAgIG1hZCBvVDAsIHYwLCBjMS54eHl5LCBjMS54eHp6
DQorDQorLy8gYXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYN
CisNCitjb25zdCBCWVRFIGdfdnMyMF9mbGlweXZzW10gPQ0KK3sNCisgICAgICAwLCAgIDIsIDI1
NCwgMjU1LCAyNTQsIDI1NSwgDQorICAgICAzNSwgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIA0K
KyAgICAgMjgsICAgMCwgICAwLCAgIDAsICA4NywgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAyLCAyNTQsIDI1NSwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI4LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgIDgwLCAgIDAsICAgMCwgICAw
LCAgNDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDEsICAgMCwgICAwLCAgIDAsICA2NCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgIDEwNCwgIDk3LCAxMDgsIDEwMiwgIDgwLCAxMDUsIA0KKyAgICAxMjAs
IDEwMSwgMTA4LCAgODMsIDEwNSwgMTIyLCANCisgICAgMTAxLCAgIDAsIDE3MSwgMTcxLCAgIDEs
ICAgMCwgDQorICAgICAgMywgICAwLCAgIDEsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDEsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDExOCwgMTE1LCAgOTUsICA1
MCwgDQorICAgICA5NSwgIDQ4LCAgIDAsICA3NywgMTA1LCAgOTksIA0KKyAgICAxMTQsIDExMSwg
MTE1LCAxMTEsIDEwMiwgMTE2LCANCisgICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3Miwg
DQorICAgICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsIA0KKyAgICAgOTcsIDEwMCwgMTAx
LCAxMTQsICAzMiwgIDY3LCANCisgICAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgDQor
ICAgIDExNCwgIDMyLCAgNTcsICA0NiwgIDUwLCAgNTcsIA0KKyAgICAgNDYsICA1NywgIDUzLCAg
NTAsICA0NiwgIDUxLCANCisgICAgIDQ5LCAgNDksICA0OSwgICAwLCAgODEsICAgMCwgDQorICAg
ICAgMCwgICA1LCAgIDEsICAgMCwgIDE1LCAxNjAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgNjMs
ICAgMCwgICAwLCANCisgICAgMTI4LCAgNjMsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgIDMxLCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAwLCAgIDAsICAg
MCwgMTI4LCANCisgICAgICAwLCAgIDAsICAxNSwgMTQ0LCAgIDIsICAgMCwgDQorICAgICAgMCwg
ICAzLCAgIDAsICAgMCwgIDE1LCAxOTIsIA0KKyAgICAgIDAsICAgMCwgMjI4LCAxNDQsICAgMCwg
ICAwLCANCisgICAgMjI4LCAxNjAsICAgNCwgICAwLCAgIDAsICAgNCwgDQorICAgICAgMCwgICAw
LCAgMTUsIDIyNCwgICAwLCAgIDAsIA0KKyAgICAyMjgsIDE0NCwgICAxLCAgIDAsICA4MCwgMTYw
LCANCisgICAgICAxLCAgIDAsIDE2MCwgMTYwLCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAwDQor
fTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNlcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvbHVt
aW5hbmNlcHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDgwIEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jv
c29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KKy8vDQorLy8gICBm
eGMgL0UgbHVtaW5hbmNlcHMgL1QgcHNfMl8wIC9GaCBjb21waWxlZC9sdW1pbmFuY2Vwcy5oIEJs
aXQucHMNCisvLw0KKy8vDQorLy8gUGFyYW1ldGVyczoNCisvLw0KKy8vICAgZmxvYXQ0IG1vZGU7
DQorLy8gICBzYW1wbGVyMkQgdGV4Ow0KKy8vDQorLy8NCisvLyBSZWdpc3RlcnM6DQorLy8NCisv
LyAgIE5hbWUgICAgICAgICBSZWcgICBTaXplDQorLy8gICAtLS0tLS0tLS0tLS0gLS0tLS0gLS0t
LQ0KKy8vICAgbW9kZSAgICAgICAgIGMwICAgICAgIDENCisvLyAgIHRleCAgICAgICAgICBzMCAg
ICAgICAxDQorLy8NCisNCisgICAgcHNfMl8wDQorICAgIGRjbCB0MC54eQ0KKyAgICBkY2xfMmQg
czANCisgICAgdGV4bGQgcjAsIHQwLCBzMA0KKyAgICBtYWQgcjEudywgcjAudywgYzAueCwgYzAu
eQ0KKyAgICBtb3YgcjEueHl6LCByMC54DQorICAgIG1vdiBvQzAsIHIxDQorDQorLy8gYXBwcm94
aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4dHVyZSwgMyBhcml0aG1ldGlj
KQ0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19wczIwX2x1bWluYW5jZXBzW10gPQ0KK3sNCisg
ICAgICAwLCAgIDIsIDI1NSwgMjU1LCAyNTQsIDI1NSwgDQorICAgICA0MywgICAwLCAgNjcsICA4
NCwgIDY1LCAgNjYsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsIDExOSwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAyLCAyNTUsIDI1NSwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwg
IDI4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgMTEy
LCAgIDAsICAgMCwgICAwLCAgNjgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICA3NiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA5MiwgICAwLCAgIDAsICAgMCwgICAzLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDk2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAxMDksIDExMSwgMTAwLCAxMDEs
IA0KKyAgICAgIDAsIDE3MSwgMTcxLCAxNzEsICAgMSwgICAwLCANCisgICAgICAzLCAgIDAsICAg
MSwgICAwLCAgIDQsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgMTE2LCAxMDEsIDEyMCwgICAwLCANCisgICAgICA0LCAgIDAsICAxMiwg
ICAwLCAgIDEsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsIDExMiwgMTE1LCANCisgICAgIDk1LCAgNTAsICA5NSwgIDQ4
LCAgIDAsICA3NywgDQorICAgIDEwNSwgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIA0KKyAgICAx
MDIsIDExNiwgIDMyLCAgNDAsICA4MiwgIDQxLCANCisgICAgIDMyLCAgNzIsICA3NiwgIDgzLCAg
NzYsICAzMiwgDQorICAgICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsIA0KKyAgICAgMzIs
ICA2NywgMTExLCAxMDksIDExMiwgMTA1LCANCisgICAgMTA4LCAxMDEsIDExNCwgIDMyLCAgNTcs
ICA0NiwgDQorICAgICA1MCwgIDU3LCAgNDYsICA1NywgIDUzLCAgNTAsIA0KKyAgICAgNDYsICA1
MSwgIDQ5LCAgNDksICA0OSwgICAwLCANCisgICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDAsICAg
MCwgDQorICAgICAgMCwgMTI4LCAgIDAsICAgMCwgICAzLCAxNzYsIA0KKyAgICAgMzEsICAgMCwg
ICAwLCAgIDIsICAgMCwgICAwLCANCisgICAgICAwLCAxNDQsICAgMCwgICA4LCAgMTUsIDE2MCwg
DQorICAgICA2NiwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsIA0KKyAgICAgMTUsIDEyOCwgICAw
LCAgIDAsIDIyOCwgMTc2LCANCisgICAgICAwLCAgIDgsIDIyOCwgMTYwLCAgIDQsICAgMCwgDQor
ICAgICAgMCwgICA0LCAgIDEsICAgMCwgICA4LCAxMjgsIA0KKyAgICAgIDAsICAgMCwgMjU1LCAx
MjgsICAgMCwgICAwLCANCisgICAgICAwLCAxNjAsICAgMCwgICAwLCAgODUsIDE2MCwgDQorICAg
ICAgMSwgICAwLCAgIDAsICAgMiwgICAxLCAgIDAsIA0KKyAgICAgIDcsIDEyOCwgICAwLCAgIDAs
ICAgMCwgMTI4LCANCisgICAgICAxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgOCwgDQorICAgICAx
NSwgMTI4LCAgIDEsICAgMCwgMjI4LCAxMjgsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDANCit9
Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
c2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaDExdnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQv
cGFzc3Rocm91Z2gxMXZzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2gxMXZz
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM3IEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJh
dGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0K
Ky8vDQorLy8NCisvLyAgIGZ4YyAvRSBWU19QYXNzdGhyb3VnaCAvVCB2c180XzAgL0ZoIGNvbXBp
bGVkL3Bhc3N0aHJvdWdoMTF2cy5oDQorLy8gICAgUGFzc3Rocm91Z2gxMS5obHNsDQorLy8NCisv
Lw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAg
ICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0t
LS0tLQ0KKy8vIFBPU0lUSU9OICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMCAgICAg
Tk9ORSAgZmxvYXQgICB4eSAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAg
ICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNp
Z25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdp
c3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0t
LS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElP
TiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgIGZsb2F0ICAgeHl6dw0K
Ky8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAg
ZmxvYXQgICB4eSAgDQorLy8NCit2c180XzANCitkY2xfaW5wdXQgdjAueHkNCitkY2xfaW5wdXQg
djEueHkNCitkY2xfb3V0cHV0X3NpdiBvMC54eXp3LCBwb3NpdGlvbg0KK2RjbF9vdXRwdXQgbzEu
eHkNCittb3YgbzAueHksIHYwLnh5eHgNCittb3YgbzAuencsIGwoMCwwLDAsMS4wMDAwMDApDQor
bW92IG8xLnh5LCB2MS54eXh4DQorcmV0IA0KKy8vIEFwcHJveGltYXRlbHkgNCBpbnN0cnVjdGlv
biBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX1ZTX1Bhc3N0aHJvdWdoW10g
PQ0KK3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAxMTcsICA3NCwgDQorICAgICAzNCwgIDc5
LCAxNzQsIDIyNiwgMTcwLCAgNzQsIA0KKyAgICAxMTAsICAxNiwgMjM3LCAgMTQsICA2NywgMTg1
LCANCisgICAgMTE5LCAxNjcsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgICAyLCAg
IDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCAN
CisgICAgMTQwLCAgIDAsICAgMCwgICAwLCAyMjQsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTYs
ICAgMSwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMSwgICAwLCAgIDAsICA4MiwgIDY4LCANCisg
ICAgIDY5LCAgNzAsICA4MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
IDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgDQorICAgIDI1NCwgMjU1LCAgIDAsICAgMSwg
ICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICA3NywgMTA1LCANCisgICAgIDk5
LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgDQorICAgIDExNiwgIDMyLCAgNDAsICA4MiwgIDQx
LCAgMzIsIA0KKyAgICAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCANCisgICAgMTA0LCAg
OTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgDQorICAgICA2NywgMTExLCAxMDksIDExMiwgMTA1LCAx
MDgsIA0KKyAgICAxMDEsIDExNCwgIDMyLCAgNTcsICA0NiwgIDUwLCANCisgICAgIDU3LCAgNDYs
ICA1NywgIDUzLCAgNTAsICA0NiwgDQorICAgICA1MSwgIDQ5LCAgNDksICA0OSwgICAwLCAxNzEs
IA0KKyAgICAxNzEsIDE3MSwgIDczLCAgODMsICA3MSwgIDc4LCANCisgICAgIDc2LCAgIDAsICAg
MCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgNTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAzLCAgIDMsICAgMCwgICAwLCANCisgICAgIDY1LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDMsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAzLCAg
IDAsICAgMCwgDQorICAgICA4MCwgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsIA0KKyAgICAgNzks
ICA3OCwgICAwLCAgODQsICA2OSwgIDg4LCANCisgICAgIDY3LCAgNzksICA3OSwgIDgyLCAgNjgs
ICAgMCwgDQorICAgIDE3MSwgMTcxLCAgNzksICA4MywgIDcxLCAgNzgsIA0KKyAgICAgODAsICAg
MCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAg
MCwgDQorICAgICA1NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjgsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAg
MTIsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYsICA5NSwgIDgwLCAgNzksICA4MywgDQorICAg
ICA3MywgIDg0LCAgNzMsICA3OSwgIDc4LCAgIDAsIA0KKyAgICAgODQsICA2OSwgIDg4LCAgNjcs
ICA3OSwgIDc5LCANCisgICAgIDgyLCAgNjgsICAgMCwgMTcxLCAxNzEsIDE3MSwgDQorICAgICA4
MywgIDcyLCAgNjgsICA4MiwgMTM2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDY0LCAgIDAsICAg
MSwgICAwLCANCisgICAgIDM0LCAgIDAsICAgMCwgICAwLCAgOTUsICAgMCwgDQorICAgICAgMCwg
ICAzLCAgNTAsICAxNiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA5NSwg
ICAwLCANCisgICAgICAwLCAgIDMsICA1MCwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMSwgICAw
LCAgIDAsICAgMCwgMTAzLCAgIDAsIA0KKyAgICAgIDAsICAgNCwgMjQyLCAgMzIsICAxNiwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAx
MDEsICAgMCwgICAwLCAgIDMsIA0KKyAgICAgNTAsICAzMiwgIDE2LCAgIDAsICAgMSwgICAwLCAN
CisgICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNSwgDQorICAgICA1MCwgIDMyLCAgMTYs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAgMTYsICAxNiwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA4LCAxOTQsICAz
MiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgIDY0LCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsIDEyOCwgIDYzLCANCisgICAgIDU0
LCAgIDAsICAgMCwgICA1LCAgNTAsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNzAsICAxNiwgIDE2LCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAg
IDAsICA2MiwgICAwLCAgIDAsICAgMSwgDQorICAgICA4MywgIDg0LCAgNjUsICA4NCwgMTE2LCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwDQorfTsNCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW0xMXBzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bh
c3N0aHJvdWdobHVtMTFwcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVt
MTFwcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NSBAQAorI2lmIDANCisvLw0KKy8vIEdl
bmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMx
MTENCisvLw0KKy8vDQorLy8gICBmeGMgL0UgUFNfUGFzc3Rocm91Z2hMdW0gL1QgcHNfNF8wIC9G
aCBjb21waWxlZC9wYXNzdGhyb3VnaGx1bTExcHMuaA0KKy8vICAgIFBhc3N0aHJvdWdoMTEuaGxz
bA0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBCaW5kaW5nczoNCisvLw0KKy8vIE5hbWUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBF
bGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0t
LS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQ0KKy8vIFNhbXBsZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzYW1wbGVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQ0K
Ky8vIFRleHR1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICBmbG9hdDQgICAg
ICAgICAgMmQgICAgMCAgICAgICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVy
ZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBT
eXNWYWx1ZSBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0t
LS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAg
ICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgIGZsb2F0ICAgICAgIA0KKy8vIFRF
WENPT1JEICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgZmxvYXQg
ICB4eSAgDQorLy8NCisvLw0KKy8vIE91dHB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAg
ICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNl
ZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAg
ICAgICAwICAgVEFSR0VUICBmbG9hdCAgIHh5encNCisvLw0KK3BzXzRfMA0KK2RjbF9zYW1wbGVy
IHMwLCBtb2RlX2RlZmF1bHQNCitkY2xfcmVzb3VyY2VfdGV4dHVyZTJkIChmbG9hdCxmbG9hdCxm
bG9hdCxmbG9hdCkgdDANCitkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5DQorZGNsX291dHB1dCBv
MC54eXp3DQorZGNsX3RlbXBzIDENCitzYW1wbGUgcjAueHl6dywgdjEueHl4eCwgdDAueHl6dywg
czANCittb3YgbzAueHl6LCByMC54eHh4DQorbW92IG8wLncsIGwoMS4wMDAwMDApDQorcmV0IA0K
Ky8vIEFwcHJveGltYXRlbHkgNCBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQor
Y29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoTHVtW10gPQ0KK3sNCisgICAgIDY4LCAgODgsICA2
NiwgIDY3LCAgOTcsICA0MSwgDQorICAgICAzNywgMTU0LCAgIDAsIDE3NCwgMTM3LCAxNTcsIA0K
KyAgICAgNzYsIDIxOSwgMjMwLCAgMjYsIDIyNywgMTc0LCANCisgICAgMTg3LCAgNjYsICAgMSwg
ICAwLCAgIDAsICAgMCwgDQorICAgIDEyOCwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCisgICAgMjIwLCAgIDAsICAgMCwgICAw
LCAgNTIsICAgMSwgDQorICAgICAgMCwgICAwLCAxMDQsICAgMSwgICAwLCAgIDAsIA0KKyAgICAg
IDQsICAgMiwgICAwLCAgIDAsICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAsIDE2MCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgNCwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAxMDgsICAg
MCwgICAwLCAgIDAsICA5MiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMDAsICAgMCwgICAw
LCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgNCwgICAwLCAgIDAsICAgMCwgMjU1LCAyNTUsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMTMsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgODMsICA5NywgMTA5LCAxMTIsIA0KKyAgICAxMDgsIDEwMSwgMTE0LCAgIDAs
ICA4NCwgMTAxLCANCisgICAgMTIwLCAxMTYsIDExNywgMTE0LCAxMDEsICAgMCwgDQorICAgICA3
NywgMTA1LCAgOTksIDExNCwgMTExLCAxMTUsIA0KKyAgICAxMTEsIDEwMiwgMTE2LCAgMzIsICA0
MCwgIDgyLCANCisgICAgIDQxLCAgMzIsICA3MiwgIDc2LCAgODMsICA3NiwgDQorICAgICAzMiwg
IDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIA0KKyAgICAxMTQsICAzMiwgIDY3LCAxMTEsIDEwOSwg
MTEyLCANCisgICAgMTA1LCAxMDgsIDEwMSwgMTE0LCAgMzIsICA1NywgDQorICAgICA0NiwgIDUw
LCAgNTcsICA0NiwgIDU3LCAgNTMsIA0KKyAgICAgNTAsICA0NiwgIDUxLCAgNDksICA0OSwgIDQ5
LCANCisgICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgNzMsICA4MywgDQorICAgICA3MSwgIDc4LCAg
ODAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAN
CisgICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjgsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwg
ICAzLCAgIDMsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwgIDgwLCANCisgICAgIDc5
LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgDQorICAgICA3OCwgICAwLCAgODQsICA2OSwgIDg4
LCAgNjcsIA0KKyAgICAgNzksICA3OSwgIDgyLCAgNjgsICAgMCwgMTcxLCANCisgICAgMTcxLCAx
NzEsICA3OSwgIDgzLCAgNzEsICA3OCwgDQorICAgICA0NCwgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDMyLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAx
NSwgICAwLCAgIDAsICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4NCwgIDY1LCAgODIsIA0K
KyAgICAgNzEsICA2OSwgIDg0LCAgIDAsIDE3MSwgMTcxLCANCisgICAgIDgzLCAgNzIsICA2OCwg
IDgyLCAxNDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgMzcsICAgMCwgICAwLCAgIDAsICA5MCwgICAwLCANCisgICAgICAwLCAgIDMsICAgMCwgIDk2
LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDg4LCAgMjQsIA0KKyAgICAg
IDAsICAgNCwgICAwLCAxMTIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
ODUsICA4NSwgDQorICAgICAgMCwgICAwLCAgOTgsICAxNiwgICAwLCAgIDMsIA0KKyAgICAgNTAs
ICAxNiwgIDE2LCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsIDEwMSwgICAwLCAgIDAs
ICAgMywgDQorICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgMTA0LCAgIDAsICAgMCwgICAyLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgNjksICAg
MCwgDQorICAgICAgMCwgICA5LCAyNDIsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICA3MCwgIDE2LCANCisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
DQorICAgICA3MCwgMTI2LCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgOTYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQor
ICAgICAgMCwgICA1LCAxMTQsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgNiwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICA1NCwgICAwLCAgIDAsICAgNSwgMTMwLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgIDEy
OCwgIDYzLCAgNjIsICAgMCwgICAwLCAgIDEsIA0KKyAgICAgODMsICA4NCwgIDY1LCAgODQsIDEx
NiwgICAwLCANCisgICAgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMA0KK307
DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9z
aGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVtYWxwaGExMXBzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2Nv
bXBpbGVkL3Bhc3N0aHJvdWdobHVtYWxwaGExMXBzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQv
cGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTEgQEAK
KyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBD
b21waWxlciA5LjI5Ljk1Mi4zMTExDQorLy8NCisvLw0KKy8vICAgZnhjIC9FIFBTX1Bhc3N0aHJv
dWdoTHVtQWxwaGEgL1QgcHNfNF8wIC9GaA0KKy8vICAgIGNvbXBpbGVkL3Bhc3N0aHJvdWdobHVt
YWxwaGExMXBzLmggUGFzc3Rocm91Z2gxMS5obHNsDQorLy8NCisvLw0KKy8vIFJlc291cmNlIEJp
bmRpbmdzOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5
cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0t
LS0tDQorLy8gU2FtcGxlciAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXIgICAgICBO
QSAgICAgICAgICBOQSAgICAwICAgICAgICAxDQorLy8gVGV4dHVyZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAgICAgICAgICAyZCAgICAwICAgICAgICAxDQorLy8N
CisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAg
ICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0t
IC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAg
ICAgIFBPUyAgZmxvYXQgICAgICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4
eSAgICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0cHV0
IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBS
ZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0g
LS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCisvLyBTVl9UQVJH
RVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgIGZsb2F0ICAgeHl6
dw0KKy8vDQorcHNfNF8wDQorZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KK2RjbF9yZXNv
dXJjZV90ZXh0dXJlMmQgKGZsb2F0LGZsb2F0LGZsb2F0LGZsb2F0KSB0MA0KK2RjbF9pbnB1dF9w
cyBsaW5lYXIgdjEueHkNCitkY2xfb3V0cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMQ0KK3NhbXBs
ZSByMC54eXp3LCB2MS54eXh4LCB0MC54eXp3LCBzMA0KK21vdiBvMC54eXp3LCByMC54eHh3DQor
cmV0IA0KKy8vIEFwcHJveGltYXRlbHkgMyBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlm
DQorDQorY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoTHVtQWxwaGFbXSA9DQorew0KKyAgICAg
NjgsICA4OCwgIDY2LCAgNjcsIDE5NywgIDcyLCANCisgICAgMjUxLCAyMzYsICA1MywgMTA3LCAx
ODIsIDE0NiwgDQorICAgIDE5NiwgMjE5LCAxMzAsIDE4NywgMTQwLCAxNTksIA0KKyAgICAyMTEs
IDEyMywgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTA4LCAgIDIsICAgMCwgICAwLCAgIDUs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMjAsICAg
MCwgICAwLCAgIDAsICA1MiwgICAxLCANCisgICAgICAwLCAgIDAsIDEwNCwgICAxLCAgIDAsICAg
MCwgDQorICAgIDI0MCwgICAxLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwg
MTYwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAw
LCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQor
ICAgIDEwOCwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEw
MCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA1LCAgIDAsICAg
MCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwgICAwLCAyNTUsIDI1NSwgDQorICAgIDI1NSwg
MjU1LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAxMywg
ICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDk3LCAxMDksIDExMiwgDQorICAgIDEwOCwgMTAx
LCAxMTQsICAgMCwgIDg0LCAxMDEsIA0KKyAgICAxMjAsIDExNiwgMTE3LCAxMTQsIDEwMSwgICAw
LCANCisgICAgIDc3LCAxMDUsICA5OSwgMTE0LCAxMTEsIDExNSwgDQorICAgIDExMSwgMTAyLCAx
MTYsICAzMiwgIDQwLCAgODIsIA0KKyAgICAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LCAN
CisgICAgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIDEwMSwgDQorICAgIDExNCwgIDMyLCAgNjcs
IDExMSwgMTA5LCAxMTIsIA0KKyAgICAxMDUsIDEwOCwgMTAxLCAxMTQsICAzMiwgIDU3LCANCisg
ICAgIDQ2LCAgNTAsICA1NywgIDQ2LCAgNTcsICA1MywgDQorICAgICA1MCwgIDQ2LCAgNTEsICA0
OSwgIDQ5LCAgNDksIA0KKyAgICAgIDAsIDE3MSwgMTcxLCAxNzEsICA3MywgIDgzLCANCisgICAg
IDcxLCAgNzgsICA4MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwg
ICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwgICAwLCANCisgICAgICAwLCAg
IDAsICA2OCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAs
ICAgMCwgICAwLCAgIDMsICAgMywgDQorICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODAs
IA0KKyAgICAgNzksICA4MywgIDczLCAgODQsICA3MywgIDc5LCANCisgICAgIDc4LCAgIDAsICA4
NCwgIDY5LCAgODgsICA2NywgDQorICAgICA3OSwgIDc5LCAgODIsICA2OCwgICAwLCAxNzEsIA0K
KyAgICAxNzEsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCANCisgICAgIDQ0LCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYsICA5NSwgIDg0LCAg
NjUsICA4MiwgDQorICAgICA3MSwgIDY5LCAgODQsICAgMCwgMTcxLCAxNzEsIA0KKyAgICAgODMs
ICA3MiwgIDY4LCAgODIsIDEyOCwgICAwLCANCisgICAgICAwLCAgIDAsICA2NCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAzMiwgICAwLCAgIDAsICAgMCwgIDkwLCAgIDAsIA0KKyAgICAgIDAsICAg
MywgICAwLCAgOTYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgODgsICAy
NCwgDQorICAgICAgMCwgICA0LCAgIDAsIDExMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICA4NSwgIDg1LCANCisgICAgICAwLCAgIDAsICA5OCwgIDE2LCAgIDAsICAgMywg
DQorICAgICA1MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTAx
LCAgIDAsICAgMCwgICAzLCANCisgICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAxMDQsICAgMCwgICAwLCAgIDIsIA0KKyAgICAgIDEsICAgMCwgICAwLCAg
IDAsICA2OSwgICAwLCANCisgICAgICAwLCAgIDksIDI0MiwgICAwLCAgMTYsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgMTYsIA0KKyAgICAgMTYsICAgMCwgICAxLCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDcwLCAxMjYsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1
NCwgICAwLCANCisgICAgICAwLCAgIDUsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICA2LCAgMTIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgIDYyLCAgIDAsICAgMCwgICAxLCAgODMsICA4NCwgDQorICAgICA2NSwgIDg0
LCAxMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAN
Cit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHBzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVk
L3Bhc3N0aHJvdWdocHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHBzLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQg
YnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQorLy8N
CisvLyAgIGZ4YyAvRSBwYXNzdGhyb3VnaHBzIC9UIHBzXzJfMCAvRmggY29tcGlsZWQvcGFzc3Ro
cm91Z2hwcy5oIEJsaXQucHMNCisvLw0KKy8vDQorLy8gUGFyYW1ldGVyczoNCisvLw0KKy8vICAg
c2FtcGxlcjJEIHRleDsNCisvLw0KKy8vDQorLy8gUmVnaXN0ZXJzOg0KKy8vDQorLy8gICBOYW1l
ICAgICAgICAgUmVnICAgU2l6ZQ0KKy8vICAgLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0NCisvLyAg
IHRleCAgICAgICAgICBzMCAgICAgICAxDQorLy8NCisNCisgICAgcHNfMl8wDQorICAgIGRjbCB0
MC54eQ0KKyAgICBkY2xfMmQgczANCisgICAgdGV4bGQgcjAsIHQwLCBzMA0KKyAgICBtb3Ygb0Mw
LCByMA0KKw0KKy8vIGFwcHJveGltYXRlbHkgMiBpbnN0cnVjdGlvbiBzbG90cyB1c2VkICgxIHRl
eHR1cmUsIDEgYXJpdGhtZXRpYykNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfcHMyMF9wYXNz
dGhyb3VnaHBzW10gPQ0KK3sNCisgICAgICAwLCAgIDIsIDI1NSwgMjU1LCAyNTQsIDI1NSwgDQor
ICAgICAzMiwgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIA0KKyAgICAgMjgsICAgMCwgICAwLCAg
IDAsICA3NSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAyLCAyNTUsIDI1NSwgDQorICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgIDI4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDEs
ICAgMCwgICAwLCANCisgICAgIDY4LCAgIDAsICAgMCwgICAwLCAgNDgsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICA1
MiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgIDExNiwg
MTAxLCAxMjAsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgMTIsICAgMCwgICAxLCAgIDAsICAgMSwg
ICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAxMTIsIDExNSwgIDk1LCAgNTAsIA0KKyAgICAgOTUsICA0OCwgICAwLCAgNzcsIDEwNSwgIDk5
LCANCisgICAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDExNiwgDQorICAgICAzMiwgIDQwLCAg
ODIsICA0MSwgIDMyLCAgNzIsIA0KKyAgICAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgMTA0LCAN
CisgICAgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsICA2NywgDQorICAgIDExMSwgMTA5LCAxMTIs
IDEwNSwgMTA4LCAxMDEsIA0KKyAgICAxMTQsICAzMiwgIDU3LCAgNDYsICA1MCwgIDU3LCANCisg
ICAgIDQ2LCAgNTcsICA1MywgIDUwLCAgNDYsICA1MSwgDQorICAgICA0OSwgIDQ5LCAgNDksICAg
MCwgIDMxLCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgMTI4LCANCisgICAg
ICAwLCAgIDAsICAgMywgMTc2LCAgMzEsICAgMCwgDQorICAgICAgMCwgICAyLCAgIDAsICAgMCwg
ICAwLCAxNDQsIA0KKyAgICAgIDAsICAgOCwgIDE1LCAxNjAsICA2NiwgICAwLCANCisgICAgICAw
LCAgIDMsICAgMCwgICAwLCAgMTUsIDEyOCwgDQorICAgICAgMCwgICAwLCAyMjgsIDE3NiwgICAw
LCAgIDgsIA0KKyAgICAyMjgsIDE2MCwgICAxLCAgIDAsICAgMCwgICAyLCANCisgICAgICAwLCAg
IDgsICAxNSwgMTI4LCAgIDAsICAgMCwgDQorICAgIDIyOCwgMTI4LCAyNTUsIDI1NSwgICAwLCAg
IDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjExcHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMv
Y29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IxMXBzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFz
c3Rocm91Z2hyZ2IxMXBzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU1IEBACisjaWYgMA0K
Ky8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIg
OS4yOS45NTIuMzExMQ0KKy8vDQorLy8NCisvLyAgIGZ4YyAvRSBQU19QYXNzdGhyb3VnaFJHQiAv
VCBwc180XzAgL0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMTFwcy5oDQorLy8gICAgUGFzc3Ro
cm91Z2gxMS5obHNsDQorLy8NCisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdzOg0KKy8vDQorLy8g
TmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAg
IERpbSBTbG90IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQorLy8gU2FtcGxlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXIgICAgICBOQSAgICAgICAgICBOQSAgICAw
ICAgICAgICAxDQorLy8gVGV4dHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUg
IGZsb2F0NCAgICAgICAgICAyZCAgICAwICAgICAgICAxDQorLy8NCisvLw0KKy8vDQorLy8gSW5w
dXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNr
IFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BP
U0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgZmxvYXQgICAg
ICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBO
T05FICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0K
Ky8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBG
b3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0t
LS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAg
MCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vDQorcHNfNF8wDQor
ZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJlMmQgKGZs
b2F0LGZsb2F0LGZsb2F0LGZsb2F0KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHkNCitk
Y2xfb3V0cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMQ0KK3NhbXBsZSByMC54eXp3LCB2MS54eXh4
LCB0MC54eXp3LCBzMA0KK21vdiBvMC54eXosIHIwLnh5engNCittb3YgbzAudywgbCgxLjAwMDAw
MCkNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisj
ZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0JbXSA9DQorew0KKyAgICAg
NjgsICA4OCwgIDY2LCAgNjcsIDI1MywgIDQ1LCANCisgICAgIDEzLCAgMzQsIDEyNSwgMTk0LCAg
OTUsIDE0OSwgDQorICAgICAgMSwgIDk1LCAxOTQsIDI1MiwgMTE4LCAyMjgsIA0KKyAgICAxNzgs
IDIwMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTI4LCAgIDIsICAgMCwgICAwLCAgIDUs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMjAsICAg
MCwgICAwLCAgIDAsICA1MiwgICAxLCANCisgICAgICAwLCAgIDAsIDEwNCwgICAxLCAgIDAsICAg
MCwgDQorICAgICAgNCwgICAyLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwg
MTYwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAw
LCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQor
ICAgIDEwOCwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEw
MCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA1LCAgIDAsICAg
MCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwgICAwLCAyNTUsIDI1NSwgDQorICAgIDI1NSwg
MjU1LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAxMywg
ICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDk3LCAxMDksIDExMiwgDQorICAgIDEwOCwgMTAx
LCAxMTQsICAgMCwgIDg0LCAxMDEsIA0KKyAgICAxMjAsIDExNiwgMTE3LCAxMTQsIDEwMSwgICAw
LCANCisgICAgIDc3LCAxMDUsICA5OSwgMTE0LCAxMTEsIDExNSwgDQorICAgIDExMSwgMTAyLCAx
MTYsICAzMiwgIDQwLCAgODIsIA0KKyAgICAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LCAN
CisgICAgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIDEwMSwgDQorICAgIDExNCwgIDMyLCAgNjcs
IDExMSwgMTA5LCAxMTIsIA0KKyAgICAxMDUsIDEwOCwgMTAxLCAxMTQsICAzMiwgIDU3LCANCisg
ICAgIDQ2LCAgNTAsICA1NywgIDQ2LCAgNTcsICA1MywgDQorICAgICA1MCwgIDQ2LCAgNTEsICA0
OSwgIDQ5LCAgNDksIA0KKyAgICAgIDAsIDE3MSwgMTcxLCAxNzEsICA3MywgIDgzLCANCisgICAg
IDcxLCAgNzgsICA4MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwg
ICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwgICAwLCANCisgICAgICAwLCAg
IDAsICA2OCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAs
ICAgMCwgICAwLCAgIDMsICAgMywgDQorICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODAs
IA0KKyAgICAgNzksICA4MywgIDczLCAgODQsICA3MywgIDc5LCANCisgICAgIDc4LCAgIDAsICA4
NCwgIDY5LCAgODgsICA2NywgDQorICAgICA3OSwgIDc5LCAgODIsICA2OCwgICAwLCAxNzEsIA0K
KyAgICAxNzEsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCANCisgICAgIDQ0LCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYsICA5NSwgIDg0LCAg
NjUsICA4MiwgDQorICAgICA3MSwgIDY5LCAgODQsICAgMCwgMTcxLCAxNzEsIA0KKyAgICAgODMs
ICA3MiwgIDY4LCAgODIsIDE0OCwgICAwLCANCisgICAgICAwLCAgIDAsICA2NCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAzNywgICAwLCAgIDAsICAgMCwgIDkwLCAgIDAsIA0KKyAgICAgIDAsICAg
MywgICAwLCAgOTYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgODgsICAy
NCwgDQorICAgICAgMCwgICA0LCAgIDAsIDExMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICA4NSwgIDg1LCANCisgICAgICAwLCAgIDAsICA5OCwgIDE2LCAgIDAsICAgMywg
DQorICAgICA1MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTAx
LCAgIDAsICAgMCwgICAzLCANCisgICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAxMDQsICAgMCwgICAwLCAgIDIsIA0KKyAgICAgIDEsICAgMCwgICAwLCAg
IDAsICA2OSwgICAwLCANCisgICAgICAwLCAgIDksIDI0MiwgICAwLCAgMTYsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgMTYsIA0KKyAgICAgMTYsICAgMCwgICAxLCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDcwLCAxMjYsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1
NCwgICAwLCANCisgICAgICAwLCAgIDUsIDExNCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDcwLCAgIDIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMzAsICAzMiwgDQorICAgICAxNiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICA2NCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgMTI4LCAgNjMsICA2MiwgICAwLCAgIDAsICAgMSwgDQorICAgICA4MywgIDg0LCAg
NjUsICA4NCwgMTE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhMTFwcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hh
ZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmExMXBzLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGls
ZWQvcGFzc3Rocm91Z2hyZ2JhMTFwcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0NCBAQAor
I2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENv
bXBpbGVyIDkuMjkuOTUyLjMxMTENCisvLw0KKy8vDQorLy8gICBmeGMgL0UgUFNfUGFzc3Rocm91
Z2hSR0JBIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhMTFwcy5oDQorLy8g
ICAgUGFzc3Rocm91Z2gxMS5obHNsDQorLy8NCisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdzOg0K
Ky8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1h
dCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQorLy8g
U2FtcGxlciAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXIgICAgICBOQSAgICAgICAg
ICBOQSAgICAwICAgICAgICAxDQorLy8gVGV4dHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRleHR1cmUgIGZsb2F0NCAgICAgICAgICAyZCAgICAwICAgICAgICAxDQorLy8NCisvLw0KKy8v
DQorLy8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5k
ZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0K
Ky8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAg
ZmxvYXQgICAgICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAg
ICAxICAgICBOT05FICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVy
ZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBT
eXNWYWx1ZSBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0t
LS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCisvLyBTVl9UQVJHRVQgICAgICAg
ICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vDQor
cHNfNF8wDQorZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KK2RjbF9yZXNvdXJjZV90ZXh0
dXJlMmQgKGZsb2F0LGZsb2F0LGZsb2F0LGZsb2F0KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIg
djEueHkNCitkY2xfb3V0cHV0IG8wLnh5encNCitzYW1wbGUgbzAueHl6dywgdjEueHl4eCwgdDAu
eHl6dywgczANCityZXQgDQorLy8gQXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVz
ZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0JBW10gPQ0KK3sN
CisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAxNTIsICA4NiwgDQorICAgIDIyNSwgMTA3LCAxNTUs
ICA4MywgMjE2LCAgMTMsIA0KKyAgICAxNTQsIDIxMiwgMTQ0LCAgIDUsICA4MiwgIDc0LCANCisg
ICAgIDkwLCAgOTgsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA4MCwgICAyLCAgIDAsICAg
MCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCisgICAg
MjIwLCAgIDAsICAgMCwgICAwLCAgNTIsICAgMSwgDQorICAgICAgMCwgICAwLCAxMDQsICAgMSwg
ICAwLCAgIDAsIA0KKyAgICAyMTIsICAgMSwgICAwLCAgIDAsICA4MiwgIDY4LCANCisgICAgIDY5
LCAgNzAsIDE2MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgIDI4LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgNCwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAg
IDAsIA0KKyAgICAxMDgsICAgMCwgICAwLCAgIDAsICA5MiwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAxMDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgNSwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgMjU1LCAyNTUsIA0KKyAg
ICAyNTUsIDI1NSwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAw
LCAgMTMsICAgMCwgDQorICAgICAgMCwgICAwLCAgODMsICA5NywgMTA5LCAxMTIsIA0KKyAgICAx
MDgsIDEwMSwgMTE0LCAgIDAsICA4NCwgMTAxLCANCisgICAgMTIwLCAxMTYsIDExNywgMTE0LCAx
MDEsICAgMCwgDQorICAgICA3NywgMTA1LCAgOTksIDExNCwgMTExLCAxMTUsIA0KKyAgICAxMTEs
IDEwMiwgMTE2LCAgMzIsICA0MCwgIDgyLCANCisgICAgIDQxLCAgMzIsICA3MiwgIDc2LCAgODMs
ICA3NiwgDQorICAgICAzMiwgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIA0KKyAgICAxMTQsICAz
MiwgIDY3LCAxMTEsIDEwOSwgMTEyLCANCisgICAgMTA1LCAxMDgsIDEwMSwgMTE0LCAgMzIsICA1
NywgDQorICAgICA0NiwgIDUwLCAgNTcsICA0NiwgIDU3LCAgNTMsIA0KKyAgICAgNTAsICA0Niwg
IDUxLCAgNDksICA0OSwgIDQ5LCANCisgICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgNzMsICA4Mywg
DQorICAgICA3MSwgIDc4LCAgODAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAw
LCAgIDAsICAgOCwgICAwLCANCisgICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgNjgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDMsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5
NSwgIDgwLCANCisgICAgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgDQorICAgICA3OCwg
ICAwLCAgODQsICA2OSwgIDg4LCAgNjcsIA0KKyAgICAgNzksICA3OSwgIDgyLCAgNjgsICAgMCwg
MTcxLCANCisgICAgMTcxLCAxNzEsICA3OSwgIDgzLCAgNzEsICA3OCwgDQorICAgICA0NCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAw
LCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUs
ICA4NCwgIDY1LCAgODIsIA0KKyAgICAgNzEsICA2OSwgIDg0LCAgIDAsIDE3MSwgMTcxLCANCisg
ICAgIDgzLCAgNzIsICA2OCwgIDgyLCAxMDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjQsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgMjUsICAgMCwgICAwLCAgIDAsICA5MCwgICAwLCANCisgICAg
ICAwLCAgIDMsICAgMCwgIDk2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDg4LCAgMjQsIA0KKyAgICAgIDAsICAgNCwgICAwLCAxMTIsICAxNiwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgODUsICA4NSwgDQorICAgICAgMCwgICAwLCAgOTgsICAxNiwgICAw
LCAgIDMsIA0KKyAgICAgNTAsICAxNiwgIDE2LCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAg
IDAsIDEwMSwgICAwLCAgIDAsICAgMywgDQorICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDY5LCAgIDAsICAgMCwgICA5LCANCisgICAgMjQyLCAgMzIs
ICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAxNiwgIDE2LCAgIDAs
IA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICA3MCwgMTI2LCANCisgICAgIDE2LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgIDk2LCAgMTYsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgIDYyLCAgIDAsICAgMCwgICAxLCANCisgICAgIDgzLCAgODQsICA2NSwg
IDg0LCAxMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVk
L3N0YW5kYXJkdnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWlj
cm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQorLy8NCisvLyAg
IGZ4YyAvRSBzdGFuZGFyZHZzIC9UIHZzXzJfMCAvRmggY29tcGlsZWQvc3RhbmRhcmR2cy5oIEJs
aXQudnMNCisvLw0KKy8vDQorLy8gUGFyYW1ldGVyczoNCisvLw0KKy8vICAgZmxvYXQ0IGhhbGZQ
aXhlbFNpemU7DQorLy8NCisvLw0KKy8vIFJlZ2lzdGVyczoNCisvLw0KKy8vICAgTmFtZSAgICAg
ICAgICBSZWcgICBTaXplDQorLy8gICAtLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0NCisvLyAgIGhh
bGZQaXhlbFNpemUgYzAgICAgICAgMQ0KKy8vDQorDQorICAgIHZzXzJfMA0KKyAgICBkZWYgYzEs
IDAuNSwgLTAuNSwgMSwgMA0KKyAgICBkY2xfcG9zaXRpb24gdjANCisgICAgYWRkIG9Qb3MsIHYw
LCBjMA0KKyAgICBtYWQgb1QwLCB2MCwgYzEueHl6eiwgYzEueHh3dw0KKw0KKy8vIGFwcHJveGlt
YXRlbHkgMiBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBn
X3ZzMjBfc3RhbmRhcmR2c1tdID0NCit7DQorICAgICAgMCwgICAyLCAyNTQsIDI1NSwgMjU0LCAy
NTUsIA0KKyAgICAgMzUsICAgMCwgIDY3LCAgODQsICA2NSwgIDY2LCANCisgICAgIDI4LCAgIDAs
ICAgMCwgICAwLCAgODcsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU0LCAyNTUs
IA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAyOCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsICAgMCwgDQorICAgICA4MCwgICAwLCAgIDAsICAgMCwgIDQ4LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwg
ICAwLCAgNjQsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAxMDQsICA5NywgMTA4LCAxMDIsICA4MCwgMTA1LCANCisgICAgMTIwLCAxMDEsIDEwOCwgIDgz
LCAxMDUsIDEyMiwgDQorICAgIDEwMSwgICAwLCAxNzEsIDE3MSwgICAxLCAgIDAsIA0KKyAgICAg
IDMsICAgMCwgICAxLCAgIDAsICAgNCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAxMTgsIDExNSwgIDk1LCAgNTAsIA0KKyAgICAgOTUs
ICA0OCwgICAwLCAgNzcsIDEwNSwgIDk5LCANCisgICAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIs
IDExNiwgDQorICAgICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAgNzIsIA0KKyAgICAgNzYsICA4
MywgIDc2LCAgMzIsICA4MywgMTA0LCANCisgICAgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsICA2
NywgDQorICAgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIA0KKyAgICAxMTQsICAzMiwg
IDU3LCAgNDYsICA1MCwgIDU3LCANCisgICAgIDQ2LCAgNTcsICA1MywgIDUwLCAgNDYsICA1MSwg
DQorICAgICA0OSwgIDQ5LCAgNDksICAgMCwgIDgxLCAgIDAsIA0KKyAgICAgIDAsICAgNSwgICAx
LCAgIDAsICAxNSwgMTYwLCANCisgICAgICAwLCAgIDAsICAgMCwgIDYzLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgMTkxLCAgIDAsICAgMCwgMTI4LCAgNjMsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAzMSwgICAwLCANCisgICAgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIDEyOCwgDQorICAg
ICAgMCwgICAwLCAgMTUsIDE0NCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMywgICAwLCAgIDAs
ICAxNSwgMTkyLCANCisgICAgICAwLCAgIDAsIDIyOCwgMTQ0LCAgIDAsICAgMCwgDQorICAgIDIy
OCwgMTYwLCAgIDQsICAgMCwgICAwLCAgIDQsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAyMjQsICAg
MCwgICAwLCANCisgICAgMjI4LCAxNDQsICAgMSwgICAwLCAxNjQsIDE2MCwgDQorICAgICAgMSwg
ICAwLCAyNDAsIDE2MCwgMjU1LCAyNTUsIA0KKyAgICAgIDAsICAgMA0KK307DQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTElDRU5TRQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVy
bXVyaGFzaC9MSUNFTlNFCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTElDRU5TRQkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyIEBACisvLyBNdXJtdXJIYXNoMyB3YXMgd3JpdHRlbiBieSBBdXN0aW4gQXBwbGVieSwgYW5k
IGlzIHBsYWNlZCBpbiB0aGUgcHVibGljCisvLyBkb21haW4uIFRoZSBhdXRob3IgaGVyZWJ5IGRp
c2NsYWltcyBjb3B5cmlnaHQgdG8gdGhpcyBzb3VyY2UgY29kZS4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkv
bXVybXVyaGFzaC9NdXJtdXJIYXNoMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11
cmhhc2gvTXVybXVySGFzaDMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzNCBAQAorLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIE11cm11ckhhc2gzIHdhcyB3cml0dGVuIGJ5IEF1c3Rp
biBBcHBsZWJ5LCBhbmQgaXMgcGxhY2VkIGluIHRoZSBwdWJsaWMNCisvLyBkb21haW4uIFRoZSBh
dXRob3IgaGVyZWJ5IGRpc2NsYWltcyBjb3B5cmlnaHQgdG8gdGhpcyBzb3VyY2UgY29kZS4NCisN
CisvLyBOb3RlIC0gVGhlIHg4NiBhbmQgeDY0IHZlcnNpb25zIGRvIF9ub3RfIHByb2R1Y2UgdGhl
IHNhbWUgcmVzdWx0cywgYXMgdGhlDQorLy8gYWxnb3JpdGhtcyBhcmUgb3B0aW1pemVkIGZvciB0
aGVpciByZXNwZWN0aXZlIHBsYXRmb3Jtcy4gWW91IGNhbiBzdGlsbA0KKy8vIGNvbXBpbGUgYW5k
IHJ1biBhbnkgb2YgdGhlbSBvbiBhbnkgcGxhdGZvcm0sIGJ1dCB5b3VyIHBlcmZvcm1hbmNlIHdp
dGggdGhlDQorLy8gbm9uLW5hdGl2ZSB2ZXJzaW9uIHdpbGwgYmUgbGVzcyB0aGFuIG9wdGltYWwu
DQorDQorI2luY2x1ZGUgIk11cm11ckhhc2gzLmgiDQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KKy8vIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9ucyBhbmQgbWFjcm9zDQorDQorLy8gTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW8NCisNCisjaWYgZGVmaW5lZChfTVNDX1ZFUikNCisNCisjZGVm
aW5lIEZPUkNFX0lOTElORQlfX2ZvcmNlaW5saW5lDQorDQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0K
Kw0KKyNkZWZpbmUgUk9UTDMyKHgseSkJX3JvdGwoeCx5KQ0KKyNkZWZpbmUgUk9UTDY0KHgseSkJ
X3JvdGw2NCh4LHkpDQorDQorI2RlZmluZSBCSUdfQ09OU1RBTlQoeCkgKHgpDQorDQorLy8gT3Ro
ZXIgY29tcGlsZXJzDQorDQorI2Vsc2UJLy8gZGVmaW5lZChfTVNDX1ZFUikNCisNCisjZGVmaW5l
CUZPUkNFX0lOTElORSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkNCisNCitpbmxpbmUg
dWludDMyX3Qgcm90bDMyICggdWludDMyX3QgeCwgaW50OF90IHIgKQ0KK3sNCisgIHJldHVybiAo
eCA8PCByKSB8ICh4ID4+ICgzMiAtIHIpKTsNCit9DQorDQoraW5saW5lIHVpbnQ2NF90IHJvdGw2
NCAoIHVpbnQ2NF90IHgsIGludDhfdCByICkNCit7DQorICByZXR1cm4gKHggPDwgcikgfCAoeCA+
PiAoNjQgLSByKSk7DQorfQ0KKw0KKyNkZWZpbmUJUk9UTDMyKHgseSkJcm90bDMyKHgseSkNCisj
ZGVmaW5lIFJPVEw2NCh4LHkpCXJvdGw2NCh4LHkpDQorDQorI2RlZmluZSBCSUdfQ09OU1RBTlQo
eCkgKHgjI0xMVSkNCisNCisjZW5kaWYgLy8gIWRlZmluZWQoX01TQ19WRVIpDQorDQorLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEJsb2NrIHJlYWQgLSBpZiB5b3VyIHBsYXRmb3JtIG5lZWRz
IHRvIGRvIGVuZGlhbi1zd2FwcGluZyBvciBjYW4gb25seQ0KKy8vIGhhbmRsZSBhbGlnbmVkIHJl
YWRzLCBkbyB0aGUgY29udmVyc2lvbiBoZXJlDQorDQorRk9SQ0VfSU5MSU5FIHVpbnQzMl90IGdl
dGJsb2NrICggY29uc3QgdWludDMyX3QgKiBwLCBpbnQgaSApDQorew0KKyAgcmV0dXJuIHBbaV07
DQorfQ0KKw0KK0ZPUkNFX0lOTElORSB1aW50NjRfdCBnZXRibG9jayAoIGNvbnN0IHVpbnQ2NF90
ICogcCwgaW50IGkgKQ0KK3sNCisgIHJldHVybiBwW2ldOw0KK30NCisNCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQorLy8gRmluYWxpemF0aW9uIG1peCAtIGZvcmNlIGFsbCBiaXRzIG9mIGEgaGFz
aCBibG9jayB0byBhdmFsYW5jaGUNCisNCitGT1JDRV9JTkxJTkUgdWludDMyX3QgZm1peCAoIHVp
bnQzMl90IGggKQ0KK3sNCisgIGggXj0gaCA+PiAxNjsNCisgIGggKj0gMHg4NWViY2E2YjsNCisg
IGggXj0gaCA+PiAxMzsNCisgIGggKj0gMHhjMmIyYWUzNTsNCisgIGggXj0gaCA+PiAxNjsNCisN
CisgIHJldHVybiBoOw0KK30NCisNCisvLy0tLS0tLS0tLS0NCisNCitGT1JDRV9JTkxJTkUgdWlu
dDY0X3QgZm1peCAoIHVpbnQ2NF90IGsgKQ0KK3sNCisgIGsgXj0gayA+PiAzMzsNCisgIGsgKj0g
QklHX0NPTlNUQU5UKDB4ZmY1MWFmZDdlZDU1OGNjZCk7DQorICBrIF49IGsgPj4gMzM7DQorICBr
ICo9IEJJR19DT05TVEFOVCgweGM0Y2ViOWZlMWE4NWVjNTMpOw0KKyAgayBePSBrID4+IDMzOw0K
Kw0KKyAgcmV0dXJuIGs7DQorfQ0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCit2b2lk
IE11cm11ckhhc2gzX3g4Nl8zMiAoIGNvbnN0IHZvaWQgKiBrZXksIGludCBsZW4sDQorICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzZWVkLCB2b2lkICogb3V0ICkNCit7DQorICBj
b25zdCB1aW50OF90ICogZGF0YSA9IChjb25zdCB1aW50OF90KilrZXk7DQorICBjb25zdCBpbnQg
bmJsb2NrcyA9IGxlbiAvIDQ7DQorDQorICB1aW50MzJfdCBoMSA9IHNlZWQ7DQorDQorICBjb25z
dCB1aW50MzJfdCBjMSA9IDB4Y2M5ZTJkNTE7DQorICBjb25zdCB1aW50MzJfdCBjMiA9IDB4MWI4
NzM1OTM7DQorDQorICAvLy0tLS0tLS0tLS0NCisgIC8vIGJvZHkNCisNCisgIGNvbnN0IHVpbnQz
Ml90ICogYmxvY2tzID0gKGNvbnN0IHVpbnQzMl90ICopKGRhdGEgKyBuYmxvY2tzKjQpOw0KKw0K
KyAgZm9yKGludCBpID0gLW5ibG9ja3M7IGk7IGkrKykNCisgIHsNCisgICAgdWludDMyX3QgazEg
PSBnZXRibG9jayhibG9ja3MsaSk7DQorDQorICAgIGsxICo9IGMxOw0KKyAgICBrMSA9IFJPVEwz
MihrMSwxNSk7DQorICAgIGsxICo9IGMyOw0KKyAgICANCisgICAgaDEgXj0gazE7DQorICAgIGgx
ID0gUk9UTDMyKGgxLDEzKTsgDQorICAgIGgxID0gaDEqNSsweGU2NTQ2YjY0Ow0KKyAgfQ0KKw0K
KyAgLy8tLS0tLS0tLS0tDQorICAvLyB0YWlsDQorDQorICBjb25zdCB1aW50OF90ICogdGFpbCA9
IChjb25zdCB1aW50OF90KikoZGF0YSArIG5ibG9ja3MqNCk7DQorDQorICB1aW50MzJfdCBrMSA9
IDA7DQorDQorICBzd2l0Y2gobGVuICYgMykNCisgIHsNCisgIGNhc2UgMzogazEgXj0gdGFpbFsy
XSA8PCAxNjsNCisgIGNhc2UgMjogazEgXj0gdGFpbFsxXSA8PCA4Ow0KKyAgY2FzZSAxOiBrMSBe
PSB0YWlsWzBdOw0KKyAgICAgICAgICBrMSAqPSBjMTsgazEgPSBST1RMMzIoazEsMTUpOyBrMSAq
PSBjMjsgaDEgXj0gazE7DQorICB9Ow0KKw0KKyAgLy8tLS0tLS0tLS0tDQorICAvLyBmaW5hbGl6
YXRpb24NCisNCisgIGgxIF49IGxlbjsNCisNCisgIGgxID0gZm1peChoMSk7DQorDQorICAqKHVp
bnQzMl90KilvdXQgPSBoMTsNCit9IA0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCit2
b2lkIE11cm11ckhhc2gzX3g4Nl8xMjggKCBjb25zdCB2b2lkICoga2V5LCBjb25zdCBpbnQgbGVu
LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQg
KQ0KK3sNCisgIGNvbnN0IHVpbnQ4X3QgKiBkYXRhID0gKGNvbnN0IHVpbnQ4X3QqKWtleTsNCisg
IGNvbnN0IGludCBuYmxvY2tzID0gbGVuIC8gMTY7DQorDQorICB1aW50MzJfdCBoMSA9IHNlZWQ7
DQorICB1aW50MzJfdCBoMiA9IHNlZWQ7DQorICB1aW50MzJfdCBoMyA9IHNlZWQ7DQorICB1aW50
MzJfdCBoNCA9IHNlZWQ7DQorDQorICBjb25zdCB1aW50MzJfdCBjMSA9IDB4MjM5Yjk2MWI7IA0K
KyAgY29uc3QgdWludDMyX3QgYzIgPSAweGFiMGU5Nzg5Ow0KKyAgY29uc3QgdWludDMyX3QgYzMg
PSAweDM4YjM0YWU1OyANCisgIGNvbnN0IHVpbnQzMl90IGM0ID0gMHhhMWUzOGI5MzsNCisNCisg
IC8vLS0tLS0tLS0tLQ0KKyAgLy8gYm9keQ0KKw0KKyAgY29uc3QgdWludDMyX3QgKiBibG9ja3Mg
PSAoY29uc3QgdWludDMyX3QgKikoZGF0YSArIG5ibG9ja3MqMTYpOw0KKw0KKyAgZm9yKGludCBp
ID0gLW5ibG9ja3M7IGk7IGkrKykNCisgIHsNCisgICAgdWludDMyX3QgazEgPSBnZXRibG9jayhi
bG9ja3MsaSo0KzApOw0KKyAgICB1aW50MzJfdCBrMiA9IGdldGJsb2NrKGJsb2NrcyxpKjQrMSk7
DQorICAgIHVpbnQzMl90IGszID0gZ2V0YmxvY2soYmxvY2tzLGkqNCsyKTsNCisgICAgdWludDMy
X3QgazQgPSBnZXRibG9jayhibG9ja3MsaSo0KzMpOw0KKw0KKyAgICBrMSAqPSBjMTsgazEgID0g
Uk9UTDMyKGsxLDE1KTsgazEgKj0gYzI7IGgxIF49IGsxOw0KKw0KKyAgICBoMSA9IFJPVEwzMiho
MSwxOSk7IGgxICs9IGgyOyBoMSA9IGgxKjUrMHg1NjFjY2QxYjsNCisNCisgICAgazIgKj0gYzI7
IGsyICA9IFJPVEwzMihrMiwxNik7IGsyICo9IGMzOyBoMiBePSBrMjsNCisNCisgICAgaDIgPSBS
T1RMMzIoaDIsMTcpOyBoMiArPSBoMzsgaDIgPSBoMio1KzB4MGJjYWE3NDc7DQorDQorICAgIGsz
ICo9IGMzOyBrMyAgPSBST1RMMzIoazMsMTcpOyBrMyAqPSBjNDsgaDMgXj0gazM7DQorDQorICAg
IGgzID0gUk9UTDMyKGgzLDE1KTsgaDMgKz0gaDQ7IGgzID0gaDMqNSsweDk2Y2QxYzM1Ow0KKw0K
KyAgICBrNCAqPSBjNDsgazQgID0gUk9UTDMyKGs0LDE4KTsgazQgKj0gYzE7IGg0IF49IGs0Ow0K
Kw0KKyAgICBoNCA9IFJPVEwzMihoNCwxMyk7IGg0ICs9IGgxOyBoNCA9IGg0KjUrMHgzMmFjM2Ix
NzsNCisgIH0NCisNCisgIC8vLS0tLS0tLS0tLQ0KKyAgLy8gdGFpbA0KKw0KKyAgY29uc3QgdWlu
dDhfdCAqIHRhaWwgPSAoY29uc3QgdWludDhfdCopKGRhdGEgKyBuYmxvY2tzKjE2KTsNCisNCisg
IHVpbnQzMl90IGsxID0gMDsNCisgIHVpbnQzMl90IGsyID0gMDsNCisgIHVpbnQzMl90IGszID0g
MDsNCisgIHVpbnQzMl90IGs0ID0gMDsNCisNCisgIHN3aXRjaChsZW4gJiAxNSkNCisgIHsNCisg
IGNhc2UgMTU6IGs0IF49IHRhaWxbMTRdIDw8IDE2Ow0KKyAgY2FzZSAxNDogazQgXj0gdGFpbFsx
M10gPDwgODsNCisgIGNhc2UgMTM6IGs0IF49IHRhaWxbMTJdIDw8IDA7DQorICAgICAgICAgICBr
NCAqPSBjNDsgazQgID0gUk9UTDMyKGs0LDE4KTsgazQgKj0gYzE7IGg0IF49IGs0Ow0KKw0KKyAg
Y2FzZSAxMjogazMgXj0gdGFpbFsxMV0gPDwgMjQ7DQorICBjYXNlIDExOiBrMyBePSB0YWlsWzEw
XSA8PCAxNjsNCisgIGNhc2UgMTA6IGszIF49IHRhaWxbIDldIDw8IDg7DQorICBjYXNlICA5OiBr
MyBePSB0YWlsWyA4XSA8PCAwOw0KKyAgICAgICAgICAgazMgKj0gYzM7IGszICA9IFJPVEwzMihr
MywxNyk7IGszICo9IGM0OyBoMyBePSBrMzsNCisNCisgIGNhc2UgIDg6IGsyIF49IHRhaWxbIDdd
IDw8IDI0Ow0KKyAgY2FzZSAgNzogazIgXj0gdGFpbFsgNl0gPDwgMTY7DQorICBjYXNlICA2OiBr
MiBePSB0YWlsWyA1XSA8PCA4Ow0KKyAgY2FzZSAgNTogazIgXj0gdGFpbFsgNF0gPDwgMDsNCisg
ICAgICAgICAgIGsyICo9IGMyOyBrMiAgPSBST1RMMzIoazIsMTYpOyBrMiAqPSBjMzsgaDIgXj0g
azI7DQorDQorICBjYXNlICA0OiBrMSBePSB0YWlsWyAzXSA8PCAyNDsNCisgIGNhc2UgIDM6IGsx
IF49IHRhaWxbIDJdIDw8IDE2Ow0KKyAgY2FzZSAgMjogazEgXj0gdGFpbFsgMV0gPDwgODsNCisg
IGNhc2UgIDE6IGsxIF49IHRhaWxbIDBdIDw8IDA7DQorICAgICAgICAgICBrMSAqPSBjMTsgazEg
ID0gUk9UTDMyKGsxLDE1KTsgazEgKj0gYzI7IGgxIF49IGsxOw0KKyAgfTsNCisNCisgIC8vLS0t
LS0tLS0tLQ0KKyAgLy8gZmluYWxpemF0aW9uDQorDQorICBoMSBePSBsZW47IGgyIF49IGxlbjsg
aDMgXj0gbGVuOyBoNCBePSBsZW47DQorDQorICBoMSArPSBoMjsgaDEgKz0gaDM7IGgxICs9IGg0
Ow0KKyAgaDIgKz0gaDE7IGgzICs9IGgxOyBoNCArPSBoMTsNCisNCisgIGgxID0gZm1peChoMSk7
DQorICBoMiA9IGZtaXgoaDIpOw0KKyAgaDMgPSBmbWl4KGgzKTsNCisgIGg0ID0gZm1peChoNCk7
DQorDQorICBoMSArPSBoMjsgaDEgKz0gaDM7IGgxICs9IGg0Ow0KKyAgaDIgKz0gaDE7IGgzICs9
IGgxOyBoNCArPSBoMTsNCisNCisgICgodWludDMyX3QqKW91dClbMF0gPSBoMTsNCisgICgodWlu
dDMyX3QqKW91dClbMV0gPSBoMjsNCisgICgodWludDMyX3QqKW91dClbMl0gPSBoMzsNCisgICgo
dWludDMyX3QqKW91dClbM10gPSBoNDsNCit9DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
Kw0KK3ZvaWQgTXVybXVySGFzaDNfeDY0XzEyOCAoIGNvbnN0IHZvaWQgKiBrZXksIGNvbnN0IGlu
dCBsZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3Qgc2VlZCwg
dm9pZCAqIG91dCApDQorew0KKyAgY29uc3QgdWludDhfdCAqIGRhdGEgPSAoY29uc3QgdWludDhf
dCopa2V5Ow0KKyAgY29uc3QgaW50IG5ibG9ja3MgPSBsZW4gLyAxNjsNCisNCisgIHVpbnQ2NF90
IGgxID0gc2VlZDsNCisgIHVpbnQ2NF90IGgyID0gc2VlZDsNCisNCisgIGNvbnN0IHVpbnQ2NF90
IGMxID0gQklHX0NPTlNUQU5UKDB4ODdjMzdiOTExMTQyNTNkNSk7DQorICBjb25zdCB1aW50NjRf
dCBjMiA9IEJJR19DT05TVEFOVCgweDRjZjVhZDQzMjc0NTkzN2YpOw0KKw0KKyAgLy8tLS0tLS0t
LS0tDQorICAvLyBib2R5DQorDQorICBjb25zdCB1aW50NjRfdCAqIGJsb2NrcyA9IChjb25zdCB1
aW50NjRfdCAqKShkYXRhKTsNCisNCisgIGZvcihpbnQgaSA9IDA7IGkgPCBuYmxvY2tzOyBpKysp
DQorICB7DQorICAgIHVpbnQ2NF90IGsxID0gZ2V0YmxvY2soYmxvY2tzLGkqMiswKTsNCisgICAg
dWludDY0X3QgazIgPSBnZXRibG9jayhibG9ja3MsaSoyKzEpOw0KKw0KKyAgICBrMSAqPSBjMTsg
azEgID0gUk9UTDY0KGsxLDMxKTsgazEgKj0gYzI7IGgxIF49IGsxOw0KKw0KKyAgICBoMSA9IFJP
VEw2NChoMSwyNyk7IGgxICs9IGgyOyBoMSA9IGgxKjUrMHg1MmRjZTcyOTsNCisNCisgICAgazIg
Kj0gYzI7IGsyICA9IFJPVEw2NChrMiwzMyk7IGsyICo9IGMxOyBoMiBePSBrMjsNCisNCisgICAg
aDIgPSBST1RMNjQoaDIsMzEpOyBoMiArPSBoMTsgaDIgPSBoMio1KzB4Mzg0OTVhYjU7DQorICB9
DQorDQorICAvLy0tLS0tLS0tLS0NCisgIC8vIHRhaWwNCisNCisgIGNvbnN0IHVpbnQ4X3QgKiB0
YWlsID0gKGNvbnN0IHVpbnQ4X3QqKShkYXRhICsgbmJsb2NrcyoxNik7DQorDQorICB1aW50NjRf
dCBrMSA9IDA7DQorICB1aW50NjRfdCBrMiA9IDA7DQorDQorICBzd2l0Y2gobGVuICYgMTUpDQor
ICB7DQorICBjYXNlIDE1OiBrMiBePSB1aW50NjRfdCh0YWlsWzE0XSkgPDwgNDg7DQorICBjYXNl
IDE0OiBrMiBePSB1aW50NjRfdCh0YWlsWzEzXSkgPDwgNDA7DQorICBjYXNlIDEzOiBrMiBePSB1
aW50NjRfdCh0YWlsWzEyXSkgPDwgMzI7DQorICBjYXNlIDEyOiBrMiBePSB1aW50NjRfdCh0YWls
WzExXSkgPDwgMjQ7DQorICBjYXNlIDExOiBrMiBePSB1aW50NjRfdCh0YWlsWzEwXSkgPDwgMTY7
DQorICBjYXNlIDEwOiBrMiBePSB1aW50NjRfdCh0YWlsWyA5XSkgPDwgODsNCisgIGNhc2UgIDk6
IGsyIF49IHVpbnQ2NF90KHRhaWxbIDhdKSA8PCAwOw0KKyAgICAgICAgICAgazIgKj0gYzI7IGsy
ICA9IFJPVEw2NChrMiwzMyk7IGsyICo9IGMxOyBoMiBePSBrMjsNCisNCisgIGNhc2UgIDg6IGsx
IF49IHVpbnQ2NF90KHRhaWxbIDddKSA8PCA1NjsNCisgIGNhc2UgIDc6IGsxIF49IHVpbnQ2NF90
KHRhaWxbIDZdKSA8PCA0ODsNCisgIGNhc2UgIDY6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDVdKSA8
PCA0MDsNCisgIGNhc2UgIDU6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDRdKSA8PCAzMjsNCisgIGNh
c2UgIDQ6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDNdKSA8PCAyNDsNCisgIGNhc2UgIDM6IGsxIF49
IHVpbnQ2NF90KHRhaWxbIDJdKSA8PCAxNjsNCisgIGNhc2UgIDI6IGsxIF49IHVpbnQ2NF90KHRh
aWxbIDFdKSA8PCA4Ow0KKyAgY2FzZSAgMTogazEgXj0gdWludDY0X3QodGFpbFsgMF0pIDw8IDA7
DQorICAgICAgICAgICBrMSAqPSBjMTsgazEgID0gUk9UTDY0KGsxLDMxKTsgazEgKj0gYzI7IGgx
IF49IGsxOw0KKyAgfTsNCisNCisgIC8vLS0tLS0tLS0tLQ0KKyAgLy8gZmluYWxpemF0aW9uDQor
DQorICBoMSBePSBsZW47IGgyIF49IGxlbjsNCisNCisgIGgxICs9IGgyOw0KKyAgaDIgKz0gaDE7
DQorDQorICBoMSA9IGZtaXgoaDEpOw0KKyAgaDIgPSBmbWl4KGgyKTsNCisNCisgIGgxICs9IGgy
Ow0KKyAgaDIgKz0gaDE7DQorDQorICAoKHVpbnQ2NF90KilvdXQpWzBdID0gaDE7DQorICAoKHVp
bnQ2NF90KilvdXQpWzFdID0gaDI7DQorfQ0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9N
dXJtdXJIYXNoMy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNo
My5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQorLy8gTXVybXVySGFzaDMgd2FzIHdyaXR0ZW4gYnkgQXVzdGluIEFwcGxlYnksIGFuZCBpcyBw
bGFjZWQgaW4gdGhlIHB1YmxpYw0KKy8vIGRvbWFpbi4gVGhlIGF1dGhvciBoZXJlYnkgZGlzY2xh
aW1zIGNvcHlyaWdodCB0byB0aGlzIHNvdXJjZSBjb2RlLg0KKw0KKyNpZm5kZWYgX01VUk1VUkhB
U0gzX0hfDQorI2RlZmluZSBfTVVSTVVSSEFTSDNfSF8NCisNCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQorLy8gUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtYWNyb3MNCisNCisvLyBN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpbw0KKw0KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQ0KKw0KK3R5
cGVkZWYgdW5zaWduZWQgY2hhciB1aW50OF90Ow0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50
MzJfdDsNCit0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgdWludDY0X3Q7DQorDQorLy8gT3RoZXIg
Y29tcGlsZXJzDQorDQorI2Vsc2UJLy8gZGVmaW5lZChfTVNDX1ZFUikNCisNCisjaW5jbHVkZSA8
c3RkaW50Lmg+DQorDQorI2VuZGlmIC8vICFkZWZpbmVkKF9NU0NfVkVSKQ0KKw0KKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCisNCit2b2lkIE11cm11ckhhc2gzX3g4Nl8zMiAgKCBjb25zdCB2b2lk
ICoga2V5LCBpbnQgbGVuLCB1aW50MzJfdCBzZWVkLCB2b2lkICogb3V0ICk7DQorDQordm9pZCBN
dXJtdXJIYXNoM194ODZfMTI4ICggY29uc3Qgdm9pZCAqIGtleSwgaW50IGxlbiwgdWludDMyX3Qg
c2VlZCwgdm9pZCAqIG91dCApOw0KKw0KK3ZvaWQgTXVybXVySGFzaDNfeDY0XzEyOCAoIGNvbnN0
IHZvaWQgKiBrZXksIGludCBsZW4sIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQgKTsNCisNCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorI2VuZGlmIC8vIF9NVVJNVVJIQVNIM19IXwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzAwOCkK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEy
IEBACisyMDEzLTA3LTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFwcGxlLmNv
bT4KKworICAgICAgICBVcGRhdGVkIEFOR0xFIHRvIGxhdGVzdCBnaXQgY29tbWl0ICgwNDczNzNh
YTNlYjQwOGJlNjJiZTUyYWRlODQwZmE1ZjExZTcyMzM3KS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODU1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IFJlbmFtZWQgRGV0
ZWN0UmVjdXJzaW9uIHRvIERldGVjdENhbGxEZXB0aC4KKwogMjAxMy0wNy0yMiAgQmVuamFtaW4g
UG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRG8gbm90IGFsbG9jYXRl
IDIgQXRvbWljU3RyaW5nIGp1c3QgdG8gZG8gYSBjb21wYXJpc29uIGluIEhUTUxBbmNob3JFbGVt
ZW50OjpzZXRSZWwoKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE1Mjk3OSkK
KysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yODc5
LDggKzI4NzksOCBAQCBpZiAoV1RGX1VTRV8zRF9HUkFQSElDUykKICAgICAgICAgJHtUSElSRFBB
UlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxk
ZXIuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9kZXBn
cmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9
L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAK
KyAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxE
ZXB0aC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0Rl
dGVjdERpc2NvbnRpbnVpdHkuY3BwCi0gICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3Ny
Yy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9
L0FOR0xFL3NyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcAogICAgICAgICAke1RISVJEUEFS
VFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwCiAgICAgICAgICR7VEhJUkRQ
QVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmNwcAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207338</attachid>
            <date>2013-07-23 11:05:21 -0700</date>
            <delta_ts>2013-07-23 13:14:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118550-20130723110521.patch</filename>
            <type>text/plain</type>
            <size>2564707</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzAxMikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE5NTYgQEAKKzIwMTMtMDctMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgQU5HTEUgdG8gbGF0ZXN0IGdpdCBjb21taXQgKDA0
NzM3M2FhM2ViNDA4YmU2MmJlNTJhZGU4NDBmYTVmMTFlNzIzMzcpLgorICAgICAgICBBZGRlZCBt
aXNzaW5nIEFOR0xFIGZpbGVzIGV4Y2VwdCB1bnVzZWQgdGVzdHMsIGV4dGVuc2lvbnMsIHNhbXBs
ZXMsIGJ1aWxkLCBhbmQgLmdpdCBkaXJlY3Rvcmllcy4KKyAgICAgICAgUmFuIEJpc29uIGFmdGVy
IG1ha2luZyBzb21lIGNoYW5nZXMgdG8gZml4IGNvbXBpbGUgZXJyb3JzIChzZWUgYmVsb3cpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg1NTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFOR0xF
LnBsaXN0OiBVcGRhdGVkIGZyb20gc3ZuIHRvIGdpdC4KKyAgICAgICAgKiBBTkdMRS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBSZW5hbWVkIERldGVjdFJlY3Vyc2lvbiB0byBEZXRlY3RDYWxs
RGVwdGguCisgICAgICAgICogQVVUSE9SUzogQWRkZWQuCisgICAgICAgICogQ09OVFJJQlVUT1JT
OiBBZGRlZC4KKyAgICAgICAgKiBERVBTOiBBZGRlZC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bTogUmVuYW1lZCBEZXRlY3RSZWN1cnNpb24gdG8gRGV0ZWN0Q2FsbERlcHRoLgorICAgICAgICAq
IExJQ0VOU0U6IEFkZGVkLgorICAgICAgICAqIFJFQURNRS5jaHJvbWl1bTogQWRkZWQuCisgICAg
ICAgICogVGFyZ2V0LnByaTogUmVuYW1lZCBEZXRlY3RSZWN1cnNpb24gdG8gRGV0ZWN0Q2FsbERl
cHRoLgorICAgICAgICAqIGNvZGVyZXZpZXcuc2V0dGluZ3M6IEFkZGVkLgorICAgICAgICAqIGlu
Y2x1ZGUvRUdML2VnbGV4dC5oOgorICAgICAgICAqIGluY2x1ZGUvR0xFUzIvZ2wyZXh0Lmg6Cisg
ICAgICAgICogaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaDoKKyAgICAgICAgKiBzcmMvQU5H
TEUuc2xuOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYnVpbGRfYW5nbGUuZ3lwOiBBZGRlZC4KKyAg
ICAgICAgKiBzcmMvYnVpbGRfYW5nbGUuZ3lwaTogQWRkZWQuCisgICAgICAgICogc3JjL2NvbW1v
bi9SZWZDb3VudE9iamVjdC5jcHA6CisgICAgICAgICogc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmg6
CisgICAgICAgIChBcnJheVNpemUpOgorICAgICAgICAoU2FmZVJlbGVhc2UpOgorICAgICAgICAq
IHNyYy9jb21tb24vZGVidWcuY3BwOgorICAgICAgICAqIHNyYy9jb21tb24vZGVidWcuaDoKKyAg
ICAgICAgKiBzcmMvY29tbW9uL3N5c3RlbS5oOgorICAgICAgICAqIHNyYy9jb21tb24vdmVyc2lv
bi5oOgorICAgICAgICAqIHNyYy9jb21waWxlci82NGJpdC1sZXhlci1zYWZldHkucGF0Y2g6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9jb21waWxlci9CYXNlVHlwZXMuaDoKKyAgICAgICAgKGdldFF1
YWxpZmllclN0cmluZyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0NvZGVHZW5ITFNMLmNwcDoK
KyAgICAgICAgKENvbnN0cnVjdENvbXBpbGVyKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29t
bW9uLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcDoKKyAgICAgICAgKFRD
b21waWxlcjo6VENvbXBpbGVyKToKKyAgICAgICAgKFRDb21waWxlcjo6SW5pdCk6CisgICAgICAg
IChUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoVENvbXBpbGVyOjpJbml0QnVpbHRJblN5
bWJvbFRhYmxlKToKKyAgICAgICAgKFRDb21waWxlcjo6ZGV0ZWN0Q2FsbERlcHRoKToKKyAgICAg
ICAgKFRDb21waWxlcjo6bGltaXRFeHByZXNzaW9uQ29tcGxleGl0eSk6CisgICAgICAgIChUQ29t
cGlsZXI6OmdldFJlc291cmNlcyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0NvbnN0YW50VW5p
b24uaDoKKyAgICAgICAgKENvbnN0YW50VW5pb246OkNvbnN0YW50VW5pb24pOgorICAgICAgICAq
IHNyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwOiBBZGRlZC4KKyAgICAgICAgKERldGVj
dENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUpOgorICAgICAgICAoRGV0ZWN0
Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OmdldE5hbWUpOgorICAgICAgICAoRGV0ZWN0Q2FsbERl
cHRoOjpGdW5jdGlvbk5vZGU6OmFkZENhbGxlZSk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6
OkZ1bmN0aW9uTm9kZTo6ZGV0ZWN0Q2FsbERlcHRoKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0
aDo6RnVuY3Rpb25Ob2RlOjpyZXNldCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkRldGVj
dENhbGxEZXB0aCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6On5EZXRlY3RDYWxsRGVwdGgp
OgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChE
ZXRlY3RDYWxsRGVwdGg6OmNoZWNrRXhjZWVkc01heERlcHRoKToKKyAgICAgICAgKERldGVjdENh
bGxEZXB0aDo6cmVzZXRGdW5jdGlvbk5vZGVzKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6
ZGV0ZWN0Q2FsbERlcHRoRm9yRnVuY3Rpb24pOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpk
ZXRlY3RDYWxsRGVwdGgpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpmaW5kRnVuY3Rpb25C
eU5hbWUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguaDogQWRkZWQu
CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OmdldEluZm9TaW5rKToKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVy
L0RpYWdub3N0aWNzLmNwcDoKKyAgICAgICAgKFREaWFnbm9zdGljczo6d3JpdGVJbmZvKToKKyAg
ICAgICAgKiBzcmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHA6CisgICAgICAgIChGb3JMb29w
VW5yb2xsOjpldmFsdWF0ZUludENvbnN0YW50KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW5m
b1NpbmsuY3BwOgorICAgICAgICAoVEluZm9TaW5rQmFzZTo6cHJlZml4KToKKyAgICAgICAgKFRJ
bmZvU2lua0Jhc2U6OmxvY2F0aW9uKToKKyAgICAgICAgKFRJbmZvU2lua0Jhc2U6Om1lc3NhZ2Up
OgorICAgICAgICAqIHNyYy9jb21waWxlci9JbmZvU2luay5oOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9Jbml0aWFsaXplLmNwcDoKKyAgICAgICAgKEluc2VydEJ1aWx0SW5GdW5jdGlvbnMpOgor
ICAgICAgICAoSWRlbnRpZnlCdWlsdElucyk6CisgICAgICAgIChJbml0RXh0ZW5zaW9uQmVoYXZp
b3IpOgorICAgICAgICAqIHNyYy9jb21waWxlci9Jbml0aWFsaXplLmg6CisgICAgICAgICogc3Jj
L2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHA6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRT
eW1ib2wpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQmluYXJ5TWF0aCk6CisgICAgICAg
IChUSW50ZXJtZWRpYXRlOjphZGRBc3NpZ24pOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRk
SW5kZXgpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkVW5hcnlNYXRoKToKKyAgICAgICAg
KFRJbnRlcm1lZGlhdGU6OnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKToKKyAgICAgICAgKFRJbnRlcm1l
ZGlhdGU6OmFkZENvbnZlcnNpb24pOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6Z3Jvd0FnZ3Jl
Z2F0ZSk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjptYWtlQWdncmVnYXRlKToKKyAgICAgICAg
KFRJbnRlcm1lZGlhdGU6OmFkZFNlbGVjdGlvbik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjph
ZGRDb21tYSk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9uKToKKyAg
ICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZFN3aXp6bGUpOgorICAgICAgICAoVEludGVybWVkaWF0
ZTo6YWRkTG9vcCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2gpOgorICAgICAg
ICAoVEludGVybVVuYXJ5Ojpwcm9tb3RlKToKKyAgICAgICAgKFRJbnRlcm1CaW5hcnk6OnByb21v
dGUpOgorICAgICAgICAoQ29tcGFyZVN0cnVjdCk6CisgICAgICAgIChDb21wYXJlU3RydWN0dXJl
KToKKyAgICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkKTogQWRkZWQgaW1wbGllZCBz
dGF0aWNfY2FzdHMgdG8gZml4IGNvbXBpbGluZyBlcnJvcnMgb24gTWFjLgorICAgICAgICAoVElu
dGVybWVkaWF0ZTo6cHJvbW90ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9PdXRwdXRHTFNMLmNwcDoKKyAgICAgICAgKFRPdXRwdXRHTFNMOjp2aXNpdFN5bWJvbCk6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuaDoKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvT3V0cHV0R0xTTEJhc2UuY3BwOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNlOjp3cml0ZVZh
cmlhYmxlVHlwZSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OndyaXRlQ29uc3RhbnRVbmlv
bik6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKFRP
dXRwdXRHTFNMQmFzZTo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNl
OjpnZXRUeXBlTmFtZSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnN0cnVjdERlY2xhcmVk
KToKKyAgICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6ZGVjbGFyZVN0cnVjdCk6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091
dHB1dEhMU0wuY3BwOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6Ok91dHB1dEhMU0wpOgorICAg
ICAgICAoc2g6Ok91dHB1dEhMU0w6OmdldFVuaWZvcm1zKToKKyAgICAgICAgKHNoOjpPdXRwdXRI
TFNMOjpoZWFkZXIpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0U3ltYm9sKToKKyAg
ICAgICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdEJpbmFyeSk6CisgICAgICAgIChzaDo6T3V0cHV0
SExTTDo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0U2Vs
ZWN0aW9uKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp2aXNpdExvb3ApOgorICAgICAgICAo
c2g6Ok91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3ApOgorICAgICAgICAoc2g6Ok91dHB1
dEhMU0w6OmFyZ3VtZW50U3RyaW5nKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp0eXBlU3Ry
aW5nKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp0ZXh0dXJlU3RyaW5nKToKKyAgICAgICAg
KHNoOjpPdXRwdXRITFNMOjppbml0aWFsaXplcik6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6
YWRkQ29uc3RydWN0b3IpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OndyaXRlQ29uc3RhbnRV
bmlvbik6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6ZGVjb3JhdGVVbmlmb3JtKToKKyAgICAg
ICAgKHNoOjpPdXRwdXRITFNMOjpkZWNvcmF0ZUZpZWxkKToKKyAgICAgICAgKHNoOjpPdXRwdXRI
TFNMOjpyZWdpc3RlclN0cmluZyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6c2FtcGxlclJl
Z2lzdGVyKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjp1bmlmb3JtUmVnaXN0ZXIpOgorICAg
ICAgICAoc2g6Ok91dHB1dEhMU0w6OmRlY2xhcmVVbmlmb3JtKToKKyAgICAgICAgKHNoOjpPdXRw
dXRITFNMOjpnbFZhcmlhYmxlVHlwZSk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6Z2xWYXJp
YWJsZVByZWNpc2lvbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaDoKKyAg
ICAgICAgKiBzcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwOgorICAgICAgICAoVFBhcnNlQ29u
dGV4dDo6cGFyc2VWZWN0b3JGaWVsZHMpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cGFyc2VN
YXRyaXhGaWVsZHMpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6ZXJyb3IpOgorICAgICAgICAo
VFBhcnNlQ29udGV4dDo6d2FybmluZyk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojphc3NpZ25F
cnJvcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJyb3IpOgorICAgICAgICAo
VFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpw
cmVjaXNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9y
Q2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Z2xvYmFsRXJyb3JDaGVjayk6CisgICAg
ICAgIChUUGFyc2VDb250ZXh0OjpyZXNlcnZlZEVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6
OnZvaWRFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNr
KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKToKKyAgICAgICAg
KFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2spOgorICAgICAgICAoVFBh
cnNlQ29udGV4dDo6cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6Y29udGFpbnNTYW1wbGVyKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5
U2l6ZUVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YXJyYXlRdWFsaWZpZXJF
cnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2sp
OgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YXJyYXlFcnJvckNoZWNrKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29u
dGV4dDo6bm9uSW5pdEVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cGFyYW1F
cnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmV4dGVuc2lvbkVycm9yQ2hlY2sp
OgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6aXNFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAg
UmVwbGFjZWQgYXV0byB3aXRoIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBUQmVoYXZpb3I+Ojpjb25z
dF9pdGVyYXRvciB0byBmaXggUXQgYW5kIEVGTCBjb21waWxpbmcgZXJyb3JzLgorICAgICAgICAo
VFBhcnNlQ29udGV4dDo6ZmluZEZ1bmN0aW9uKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmV4
ZWN1dGVJbml0aWFsaXplcik6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RCdWlsdEluKToKKyAgICAgICAg
KFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdFN0cnVjdCk6CisgICAgICAgIChUUGFyc2VDb250ZXh0
OjphZGRDb25zdFZlY3Rvck5vZGUpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RN
YXRyaXhOb2RlKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0QXJyYXlOb2RlKToK
KyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0U3RydWN0KToKKyAgICAgICAgKFRQYXJz
ZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24pOgorICAgICAgICAoVFBhcnNlQ29udGV4
dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRk
SW5kZXhFeHByZXNzaW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaDoK
KyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OlRQYXJzZUNvbnRleHQpOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6cHJhZ21hKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcDoK
KyAgICAgICAgKFRQb29sQWxsb2NhdG9yOjphbGxvY2F0ZSk6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL1NoSGFuZGxlLmg6CisgICAgICAgIChUU2hIYW5kbGVCYXNlOjpnZXRBc1RyYW5zbGF0b3JI
TFNMKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHA6CisgICAgICAgIChT
aEluaXRCdWlsdEluUmVzb3VyY2VzKToKKyAgICAgICAgKFNoR2V0SW5mb1BvaW50ZXIpOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9TeW1ib2xUYWJsZS5jcHA6CisgICAgICAgIChUVHlwZTo6VFR5
cGUpOgorICAgICAgICAoVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUpOgorICAgICAgICAoVFR5cGU6
OmdldE9iamVjdFNpemUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6Y29udGFpbnNBcnJheXMpOgor
ICAgICAgICAoVFN0cnVjdHVyZTo6YnVpbGRNYW5nbGVkTmFtZSk6CisgICAgICAgIChUU3RydWN0
dXJlOjpjYWxjdWxhdGVPYmplY3RTaXplKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmNhbGN1bGF0
ZURlZXBlc3ROZXN0aW5nKToKKyAgICAgICAgKFRTeW1ib2xUYWJsZUxldmVsOjpyZWxhdGVUb0V4
dGVuc2lvbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmg6CisgICAgICAg
IChUU3ltYm9sOjpyZWxhdGVUb0V4dGVuc2lvbik6CisgICAgICAgIChUU3ltYm9sOjpnZXRFeHRl
bnNpb24pOgorICAgICAgICAoVFZhcmlhYmxlOjpUVmFyaWFibGUpOgorICAgICAgICAoVFZhcmlh
YmxlOjpzZXRRdWFsaWZpZXIpOgorICAgICAgICAoVFZhcmlhYmxlOjpzaGFyZUNvbnN0UG9pbnRl
cik6CisgICAgICAgIChUU3ltYm9sVGFibGVMZXZlbDo6aW5zZXJ0KToKKyAgICAgICAgKFRTeW1i
b2xUYWJsZTo6aW5zZXJ0Q29uc3RJbnQpOgorICAgICAgICAoVFN5bWJvbFRhYmxlOjppbnNlcnRC
dWlsdEluKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuY3BwOgorICAg
ICAgICAoVHJhbnNsYXRvckhMU0w6OlRyYW5zbGF0b3JITFNMKToKKyAgICAgICAgKFRyYW5zbGF0
b3JITFNMOjp0cmFuc2xhdGUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9UcmFuc2xhdG9ySExT
TC5oOgorICAgICAgICAoVHJhbnNsYXRvckhMU0w6OmdldEFzVHJhbnNsYXRvckhMU0wpOgorICAg
ICAgICAoVHJhbnNsYXRvckhMU0w6OmdldFVuaWZvcm1zKToKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvVHlwZXMuaDogUmVtb3ZlZCBlbnVtIGJpdCBmaWVsZHMgdG8gZml4IGdjYyBjb21waWxlciBl
cnJvcnMuCisgICAgICAgIChURmllbGQ6OlRGaWVsZCk6CisgICAgICAgIChURmllbGQ6OnR5cGUp
OgorICAgICAgICAoVEZpZWxkOjpuYW1lKToKKyAgICAgICAgKE5ld1Bvb2xURmllbGRMaXN0KToK
KyAgICAgICAgKFRTdHJ1Y3R1cmU6OlRTdHJ1Y3R1cmUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6
bmFtZSk6CisgICAgICAgIChUU3RydWN0dXJlOjpmaWVsZHMpOgorICAgICAgICAoVFN0cnVjdHVy
ZTo6bWFuZ2xlZE5hbWUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6b2JqZWN0U2l6ZSk6CisgICAg
ICAgIChUU3RydWN0dXJlOjpkZWVwZXN0TmVzdGluZyk6CisgICAgICAgIChUVHlwZTo6VFR5cGUp
OgorICAgICAgICAoVFR5cGU6OmVsZW1lbnRSZWdpc3RlckNvdW50KToKKyAgICAgICAgKFRUeXBl
Ojp0b3RhbFJlZ2lzdGVyQ291bnQpOgorICAgICAgICAoVFR5cGU6OmNsZWFyQXJyYXluZXNzKToK
KyAgICAgICAgKFRUeXBlOjpnZXRTdHJ1Y3QpOgorICAgICAgICAoVFR5cGU6OnNldFN0cnVjdCk6
CisgICAgICAgIChUVHlwZTo6Z2V0TWFuZ2xlZE5hbWUpOgorICAgICAgICAoVFR5cGU6OmdldERl
ZXBlc3RTdHJ1Y3ROZXN0aW5nKToKKyAgICAgICAgKFRUeXBlOjppc1N0cnVjdHVyZUNvbnRhaW5p
bmdBcnJheXMpOgorICAgICAgICAoVFB1YmxpY1R5cGU6OnNldEJhc2ljKToKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvVW5pZm9ybS5jcHA6IEFkZGVkLgorICAgICAgICAoc2g6OlVuaWZvcm06OlVu
aWZvcm0pOgorICAgICAgICAqIHNyYy9jb21waWxlci9Vbmlmb3JtLmg6IEFkZGVkLgorICAgICAg
ICAqIHNyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwOgorICAgICAgICAoZ2V0VXNlckRlZmlu
ZWRWYXJpYWJsZUluZm8pOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nLmw6CisgICAg
ICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmcueTogTW92ZWQgWVlMVFlQRSBkZWZpbml0aW9uIGlu
dG8gJXVuaW9uIHRvIHdvcmsgd2l0aCBCaXNvbiAyLjMuCisgICAgICAgICogc3JjL2NvbXBpbGVy
L2dsc2xhbmdfbGV4LmNwcDoKKyAgICAgICAgKHl5X2dldF9wcmV2aW91c19zdGF0ZSk6CisgICAg
ICAgICh5eV90cnlfTlVMX3RyYW5zKToKKyAgICAgICAgKHl5Z2V0X2xsb2MpOgorICAgICAgICAo
eXlzZXRfbGxvYyk6CisgICAgICAgIChzdHJpbmdfaW5wdXQpOgorICAgICAgICAoY2hlY2tfdHlw
ZSk6CisgICAgICAgIChyZXNlcnZlZF93b3JkKToKKyAgICAgICAgKGdsc2xhbmdfc2Nhbik6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcDoKKyAgICAgICAgKHl5ZXJyb3Ip
OgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oOgorICAgICAgICAqIHNyYy9j
b21waWxlci9pbnRlcm1PdXQuY3BwOgorICAgICAgICAoVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRV
bmFyeSk6CisgICAgICAgIChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAg
ICAgIChUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24pOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9pbnRlcm1lZGlhdGUuaDoKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpUSW50ZXJt
Tm9kZSk6CisgICAgICAgIChUSW50ZXJtTm9kZTo6flRJbnRlcm1Ob2RlKToKKyAgICAgICAgKFRJ
bnRlcm1Ob2RlOjpnZXRMaW5lKToKKyAgICAgICAgKFRJbnRlcm1Ob2RlOjpzZXRMaW5lKToKKyAg
ICAgICAgKFRJbnRlcm1Ob2RlOjpnZXRBc0xvb3BOb2RlKToKKyAgICAgICAgKFRJbnRlcm1UeXBl
ZDo6dG90YWxSZWdpc3RlckNvdW50KToKKyAgICAgICAgKFRJbnRlcm1UeXBlZDo6ZWxlbWVudFJl
Z2lzdGVyQ291bnQpOgorICAgICAgICAoVEludGVybVR5cGVkOjpnZXRBcnJheVNpemUpOgorICAg
ICAgICAoVEludGVybUNvbnN0YW50VW5pb246OmdldElDb25zdCk6CisgICAgICAgIChUSW50ZXJt
Q29uc3RhbnRVbmlvbjo6Z2V0RkNvbnN0KToKKyAgICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9u
OjpnZXRCQ29uc3QpOgorICAgICAgICAoVEludGVybUFnZ3JlZ2F0ZTo6VEludGVybUFnZ3JlZ2F0
ZSk6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpUSW50ZXJtVHJhdmVyc2VyKToKKyAgICAg
ICAgKFRJbnRlcm1UcmF2ZXJzZXI6OmdldE1heERlcHRoKToKKyAgICAgICAgKFRJbnRlcm1UcmF2
ZXJzZXI6OmluY3JlbWVudERlcHRoKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvbG9jYWxpbnRl
cm1lZGlhdGUuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHA6CisgICAg
ICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0U3ltYm9sKToKKyAgICAgICAgKFRDb25zdFRyYXZl
cnNlcjo6dmlzaXRCaW5hcnkpOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdFVuYXJ5
KToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAo
VENvbnN0VHJhdmVyc2VyOjp2aXNpdFNlbGVjdGlvbik6CisgICAgICAgIChUQ29uc3RUcmF2ZXJz
ZXI6OnZpc2l0Q29uc3RhbnRVbmlvbik6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0
TG9vcCk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QnJhbmNoKToKKyAgICAgICAg
KFRJbnRlcm1lZGlhdGU6OnBhcnNlQ29uc3RUcmVlKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yLzY0Yml0LXRva2VuaXplci1zYWZldHkucGF0Y2g6IEFkZGVkLgorICAgICAg
ICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKHl5
X2dldF9wcmV2aW91c19zdGF0ZSk6CisgICAgICAgICh5eV90cnlfTlVMX3RyYW5zKToKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5sOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHByb2o6IEFkZGVkLgorICAg
ICAgICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHByb2ouZmls
dGVyczogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL3RpbWluZy9SZXN0cmljdFZlcnRl
eFNoYWRlclRpbWluZy5jcHA6CisgICAgICAgIChSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZzo6
dmlzaXRTeW1ib2wpOgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yX2NvbW1vbi52
Y3hwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9jb21tb24u
dmN4cHJvai5maWx0ZXJzOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRv
cl9obHNsLnZjeHByb2o6IEFkZGVkLgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9y
X2hsc2wudmN4cHJvai5maWx0ZXJzOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliRUdML0NvbmZp
Zy5jcHA6IEFkZGVkLgorICAgICAgICAoZWdsOjpDb25maWc6OkNvbmZpZyk6CisgICAgICAgIChl
Z2w6OkNvbmZpZzo6Z2V0SGFuZGxlKToKKyAgICAgICAgKGVnbDo6U29ydENvbmZpZzo6U29ydENv
bmZpZyk6CisgICAgICAgIChlZ2w6OlNvcnRDb25maWc6OnNjYW5Gb3JXYW50ZWRDb21wb25lbnRz
KToKKyAgICAgICAgKGVnbDo6U29ydENvbmZpZzo6d2FudGVkQ29tcG9uZW50c1NpemUpOgorICAg
ICAgICAoZWdsOjpTb3J0Q29uZmlnOjpvcGVyYXRvcigpKToKKyAgICAgICAgKGVnbDo6Q29uZmln
U2V0OjpDb25maWdTZXQpOgorICAgICAgICAoZWdsOjpDb25maWdTZXQ6OmFkZCk6CisgICAgICAg
IChlZ2w6OkNvbmZpZ1NldDo6c2l6ZSk6CisgICAgICAgIChlZ2w6OkNvbmZpZ1NldDo6Z2V0Q29u
Zmlncyk6CisgICAgICAgIChlZ2w6OkNvbmZpZ1NldDo6Z2V0KToKKyAgICAgICAgKiBzcmMvbGli
RUdML0NvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliRUdML0Rpc3BsYXkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKGVnbDo6RGlzcGxheTo6Z2V0RGlzcGxheSk6CisgICAgICAgIChlZ2w6
OkRpc3BsYXk6OkRpc3BsYXkpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojp+RGlzcGxheSk6Cisg
ICAgICAgIChlZ2w6OkRpc3BsYXk6OmluaXRpYWxpemUpOgorICAgICAgICAoZWdsOjpEaXNwbGF5
Ojp0ZXJtaW5hdGUpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpnZXRDb25maWdzKToKKyAgICAg
ICAgKGVnbDo6RGlzcGxheTo6Z2V0Q29uZmlnQXR0cmliKToKKyAgICAgICAgKGVnbDo6RGlzcGxh
eTo6Y3JlYXRlV2luZG93U3VyZmFjZSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmNyZWF0ZU9m
ZnNjcmVlblN1cmZhY2UpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpjcmVhdGVDb250ZXh0KToK
KyAgICAgICAgKGVnbDo6RGlzcGxheTo6cmVzdG9yZUxvc3REZXZpY2UpOgorICAgICAgICAoZWds
OjpEaXNwbGF5OjpkZXN0cm95U3VyZmFjZSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmRlc3Ry
b3lDb250ZXh0KToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6bm90aWZ5RGV2aWNlTG9zdCk6Cisg
ICAgICAgIChlZ2w6OkRpc3BsYXk6OnJlY3JlYXRlU3dhcENoYWlucyk6CisgICAgICAgIChlZ2w6
OkRpc3BsYXk6OmlzSW5pdGlhbGl6ZWQpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojppc1ZhbGlk
Q29uZmlnKToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6aXNWYWxpZENvbnRleHQpOgorICAgICAg
ICAoZWdsOjpEaXNwbGF5Ojppc1ZhbGlkU3VyZmFjZSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6
Omhhc0V4aXN0aW5nV2luZG93U3VyZmFjZSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmluaXRF
eHRlbnNpb25TdHJpbmcpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpnZXRFeHRlbnNpb25TdHJp
bmcpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojppbml0VmVuZG9yU3RyaW5nKToKKyAgICAgICAg
KGVnbDo6RGlzcGxheTo6Z2V0VmVuZG9yU3RyaW5nKToKKyAgICAgICAgKiBzcmMvbGliRUdML0Rp
c3BsYXkuaDogQWRkZWQuCisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmdldFJlbmRlcmVyKToKKyAg
ICAgICAgKiBzcmMvbGliRUdML1N1cmZhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKGVnbDo6U3Vy
ZmFjZTo6U3VyZmFjZSk6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6On5TdXJmYWNlKToKKyAgICAg
ICAgKGVnbDo6U3VyZmFjZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OnJl
bGVhc2UpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpyZXNldFN3YXBDaGFpbik6CisgICAgICAg
IChlZ2w6OlN1cmZhY2U6OnJlc2l6ZVN3YXBDaGFpbik6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6
OnN3YXBSZWN0KToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6Z2V0V2luZG93SGFuZGxlKToKKyAg
ICAgICAgKGVnbDo6U3VyZmFjZVdpbmRvd1Byb2MpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpz
dWJjbGFzc1dpbmRvdyk6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OnVuc3ViY2xhc3NXaW5kb3cp
OgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpjaGVja0Zvck91dE9mRGF0ZVN3YXBDaGFpbik6Cisg
ICAgICAgIChlZ2w6OlN1cmZhY2U6OnN3YXApOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpwb3N0
U3ViQnVmZmVyKToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6Z2V0V2lkdGgpOgorICAgICAgICAo
ZWdsOjpTdXJmYWNlOjpnZXRIZWlnaHQpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjppc1Bvc3RT
dWJCdWZmZXJTdXBwb3J0ZWQpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpnZXRTd2FwQ2hhaW4p
OgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpzZXRTd2FwSW50ZXJ2YWwpOgorICAgICAgICAoZWds
OjpTdXJmYWNlOjpnZXRUZXh0dXJlRm9ybWF0KToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6Z2V0
VGV4dHVyZVRhcmdldCk6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OnNldEJvdW5kVGV4dHVyZSk6
CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OmdldEJvdW5kVGV4dHVyZSk6CisgICAgICAgIChlZ2w6
OlN1cmZhY2U6OmdldEZvcm1hdCk6CisgICAgICAgICogc3JjL2xpYkVHTC9TdXJmYWNlLmg6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9saWJFR0wvbGliRUdMLmNwcDogQWRkZWQuCisgICAgICAgICh2
YWxpZGF0ZURpc3BsYXkpOgorICAgICAgICAodmFsaWRhdGVDb25maWcpOgorICAgICAgICAodmFs
aWRhdGVDb250ZXh0KToKKyAgICAgICAgKHZhbGlkYXRlU3VyZmFjZSk6CisgICAgICAgICogc3Jj
L2xpYkVHTC9saWJFR0wuZGVmOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliRUdML2xpYkVHTC5y
YzogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkVHTC9saWJFR0wudmN4cHJvajogQWRkZWQuCisg
ICAgICAgICogc3JjL2xpYkVHTC9saWJFR0wudmN4cHJvai5maWx0ZXJzOiBBZGRlZC4KKyAgICAg
ICAgKiBzcmMvbGliRUdML21haW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKERsbE1haW4pOgorICAg
ICAgICAoZWdsOjpzZXRDdXJyZW50RXJyb3IpOgorICAgICAgICAoZWdsOjpnZXRDdXJyZW50RXJy
b3IpOgorICAgICAgICAoZWdsOjpzZXRDdXJyZW50QVBJKToKKyAgICAgICAgKGVnbDo6Z2V0Q3Vy
cmVudEFQSSk6CisgICAgICAgIChlZ2w6OnNldEN1cnJlbnREaXNwbGF5KToKKyAgICAgICAgKGVn
bDo6Z2V0Q3VycmVudERpc3BsYXkpOgorICAgICAgICAoZWdsOjpzZXRDdXJyZW50RHJhd1N1cmZh
Y2UpOgorICAgICAgICAoZWdsOjpnZXRDdXJyZW50RHJhd1N1cmZhY2UpOgorICAgICAgICAoZWds
OjpzZXRDdXJyZW50UmVhZFN1cmZhY2UpOgorICAgICAgICAoZWdsOjpnZXRDdXJyZW50UmVhZFN1
cmZhY2UpOgorICAgICAgICAoZWdsOjplcnJvcik6CisgICAgICAgICogc3JjL2xpYkVHTC9tYWlu
Lmg6IEFkZGVkLgorICAgICAgICAoZWdsOjplcnJvcik6CisgICAgICAgIChlZ2w6OnN1Y2Nlc3Mp
OgorICAgICAgICAqIHNyYy9saWJFR0wvcmVzb3VyY2UuaDogQWRkZWQuCisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9CaW5hcnlTdHJlYW0uaDogQWRkZWQuCisgICAgICAgIChnbDo6QmluYXJ5SW5w
dXRTdHJlYW06OkJpbmFyeUlucHV0U3RyZWFtKToKKyAgICAgICAgKGdsOjpCaW5hcnlJbnB1dFN0
cmVhbTo6cmVhZCk6CisgICAgICAgIChnbDo6QmluYXJ5SW5wdXRTdHJlYW06OnNraXApOgorICAg
ICAgICAoZ2w6OkJpbmFyeUlucHV0U3RyZWFtOjpvZmZzZXQpOgorICAgICAgICAoZ2w6OkJpbmFy
eUlucHV0U3RyZWFtOjplcnJvcik6CisgICAgICAgIChnbDo6QmluYXJ5SW5wdXRTdHJlYW06OmVu
ZE9mU3RyZWFtKToKKyAgICAgICAgKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW06OkJpbmFyeU91dHB1
dFN0cmVhbSk6CisgICAgICAgIChnbDo6QmluYXJ5T3V0cHV0U3RyZWFtOjp3cml0ZSk6CisgICAg
ICAgIChnbDo6QmluYXJ5T3V0cHV0U3RyZWFtOjpsZW5ndGgpOgorICAgICAgICAoZ2w6OkJpbmFy
eU91dHB1dFN0cmVhbTo6ZGF0YSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9CdWZmZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKGdsOjpCdWZmZXI6OkJ1ZmZlcik6CisgICAgICAgIChnbDo6QnVm
ZmVyOjp+QnVmZmVyKToKKyAgICAgICAgKGdsOjpCdWZmZXI6OmJ1ZmZlckRhdGEpOgorICAgICAg
ICAoZ2w6OkJ1ZmZlcjo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChnbDo6QnVmZmVyOjpnZXRT
dG9yYWdlKToKKyAgICAgICAgKGdsOjpCdWZmZXI6OnNpemUpOgorICAgICAgICAoZ2w6OkJ1ZmZl
cjo6dXNhZ2UpOgorICAgICAgICAoZ2w6OkJ1ZmZlcjo6Z2V0U3RhdGljVmVydGV4QnVmZmVyKToK
KyAgICAgICAgKGdsOjpCdWZmZXI6OmdldFN0YXRpY0luZGV4QnVmZmVyKToKKyAgICAgICAgKGds
OjpCdWZmZXI6OmludmFsaWRhdGVTdGF0aWNEYXRhKToKKyAgICAgICAgKGdsOjpCdWZmZXI6OnBy
b21vdGVTdGF0aWNVc2FnZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9CdWZmZXIuaDogQWRk
ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Db250ZXh0LmNwcDogQWRkZWQuCisgICAgICAg
IChnbDo6bWFrZVN0YXRpY1N0cmluZyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Q29udGV4dCk6
CisgICAgICAgIChnbDo6Q29udGV4dDo6fkNvbnRleHQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
Om1ha2VDdXJyZW50KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjptYXJrQ29udGV4dExvc3QpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzQ29udGV4dExvc3QpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OnNldENsZWFyQ29sb3IpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldENsZWFyRGVwdGgp
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldENsZWFyU3RlbmNpbCk6CisgICAgICAgIChnbDo6
Q29udGV4dDo6c2V0Q3VsbEZhY2UpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzQ3VsbEZhY2VF
bmFibGVkKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRDdWxsTW9kZSk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6c2V0RnJvbnRGYWNlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXREZXB0
aFRlc3QpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzRGVwdGhUZXN0RW5hYmxlZCk6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6c2V0RGVwdGhGdW5jKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpz
ZXREZXB0aFJhbmdlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRCbGVuZCk6CisgICAgICAg
IChnbDo6Q29udGV4dDo6aXNCbGVuZEVuYWJsZWQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNl
dEJsZW5kRmFjdG9ycyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0QmxlbmRDb2xvcik6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6c2V0QmxlbmRFcXVhdGlvbik6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6c2V0U3RlbmNpbFRlc3QpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzU3RlbmNpbFRl
c3RFbmFibGVkKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRTdGVuY2lsUGFyYW1zKToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpzZXRTdGVuY2lsQmFja1BhcmFtcyk6CisgICAgICAgIChnbDo6
Q29udGV4dDo6c2V0U3RlbmNpbFdyaXRlbWFzayk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0
U3RlbmNpbEJhY2tXcml0ZW1hc2spOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFN0ZW5jaWxP
cGVyYXRpb25zKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRTdGVuY2lsQmFja09wZXJhdGlv
bnMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFBvbHlnb25PZmZzZXRGaWxsKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0Ojppc1BvbHlnb25PZmZzZXRGaWxsRW5hYmxlZCk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6c2V0UG9seWdvbk9mZnNldFBhcmFtcyk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6c2V0U2FtcGxlQWxwaGFUb0NvdmVyYWdlKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc1Nh
bXBsZUFscGhhVG9Db3ZlcmFnZUVuYWJsZWQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFNh
bXBsZUNvdmVyYWdlKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc1NhbXBsZUNvdmVyYWdlRW5h
YmxlZCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0U2FtcGxlQ292ZXJhZ2VQYXJhbXMpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFNjaXNzb3JUZXN0KToKKyAgICAgICAgKGdsOjpDb250
ZXh0Ojppc1NjaXNzb3JUZXN0RW5hYmxlZCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0RGl0
aGVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc0RpdGhlckVuYWJsZWQpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OnNldExpbmVXaWR0aCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0R2Vu
ZXJhdGVNaXBtYXBIaW50KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRGcmFnbWVudFNoYWRl
ckRlcml2YXRpdmVIaW50KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRWaWV3cG9ydFBhcmFt
cyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0U2Npc3NvclBhcmFtcyk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6c2V0Q29sb3JNYXNrKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXREZXB0
aE1hc2spOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldEFjdGl2ZVNhbXBsZXIpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmdldFJlYWRGcmFtZWJ1ZmZlckhhbmRsZSk6CisgICAgICAgIChnbDo6
Q29udGV4dDo6Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKToKKyAgICAgICAgKGdsOjpDb250ZXh0
OjpnZXRSZW5kZXJidWZmZXJIYW5kbGUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEFycmF5
QnVmZmVySGFuZGxlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRBY3RpdmVRdWVyeSk6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6c2V0RW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmdldFZlcnRleEF0dHJpYlN0YXRlKToKKyAgICAgICAgKGdsOjpDb250
ZXh0OjpzZXRWZXJ0ZXhBdHRyaWJTdGF0ZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0VmVy
dGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0UGFja0FsaWdubWVu
dCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0UGFja0FsaWdubWVudCk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6c2V0VW5wYWNrQWxpZ25tZW50KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpn
ZXRVbnBhY2tBbGlnbm1lbnQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFBhY2tSZXZlcnNl
Um93T3JkZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFBhY2tSZXZlcnNlUm93T3JkZXIp
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Y3JlYXRlU2hhZGVy
KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKGdsOjpD
b250ZXh0OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmNyZWF0
ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpjcmVhdGVGZW5jZSk6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmRl
bGV0ZUJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6ZGVsZXRlU2hhZGVyKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpkZWxldGVQcm9ncmFtKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpk
ZWxldGVUZXh0dXJlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpkZWxldGVSZW5kZXJidWZmZXIp
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKGds
OjpDb250ZXh0OjpkZWxldGVGZW5jZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6ZGVsZXRlUXVl
cnkpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6Z2V0U2hhZGVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRQcm9ncmFtKToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpnZXRUZXh0dXJlKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpn
ZXRSZW5kZXJidWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFJlYWRGcmFtZWJ1ZmZl
cik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0RHJhd0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KGdsOjpDb250ZXh0OjpiaW5kQXJyYXlCdWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmJp
bmRFbGVtZW50QXJyYXlCdWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmJpbmRUZXh0dXJl
MkQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmJpbmRUZXh0dXJlQ3ViZU1hcCk6CisgICAgICAg
IChnbDo6Q29udGV4dDo6YmluZFJlYWRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4
dDo6YmluZERyYXdGcmFtZWJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6YmluZFJlbmRl
cmJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6bGlua1Byb2dyYW0pOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFByb2dy
YW1CaW5hcnkpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmJlZ2luUXVlcnkpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OmVuZFF1ZXJ5KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRGcmFtZWJ1
ZmZlclplcm8pOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFJlbmRlcmJ1ZmZlclN0b3JhZ2Up
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpD
b250ZXh0OjpnZXRGZW5jZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0UXVlcnkpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OmdldEFycmF5QnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0
OjpnZXRFbGVtZW50QXJyYXlCdWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEN1cnJl
bnRQcm9ncmFtQmluYXJ5KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRUZXh0dXJlMkQpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFRleHR1cmVDdWJlTWFwKToKKyAgICAgICAgKGdsOjpD
b250ZXh0OjpnZXRTYW1wbGVyVGV4dHVyZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0Qm9v
bGVhbnYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEZsb2F0dik6CisgICAgICAgIChnbDo6
Q29udGV4dDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFF1ZXJ5UGFy
YW1ldGVySW5mbyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6YXBwbHlSZW5kZXJUYXJnZXQpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OmFwcGx5U3RhdGUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmFwcGx5U2hhZGVycyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6YXBwbHlUZXh0dXJlcyk6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6cmVhZFBpeGVscyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6
Y2xlYXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmRyYXdBcnJheXMpOgorICAgICAgICAoZ2w6
OkNvbnRleHQ6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3luYyk6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6cmVjb3JkSW52YWxpZEVudW0pOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OnJlY29yZEludmFsaWRWYWx1ZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6cmVjb3Jk
SW52YWxpZE9wZXJhdGlvbik6CisgICAgICAgIChnbDo6Q29udGV4dDo6cmVjb3JkT3V0T2ZNZW1v
cnkpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnJlY29yZEludmFsaWRGcmFtZWJ1ZmZlck9wZXJh
dGlvbik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0RXJyb3IpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OmdldFJlc2V0U3RhdHVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc1Jlc2V0Tm90
aWZpY2F0aW9uRW5hYmxlZCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0TWFqb3JTaGFkZXJN
b2RlbCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0TWF4aW11bVBvaW50U2l6ZSk6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6Z2V0TWF4aW11bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldE1heFN1cHBvcnRlZFNhbXBsZXMpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OmdldE1heGltdW1SZW5kZXJUYXJnZXRzKToKKyAgICAgICAgKGdsOjpDb250
ZXh0OjpzdXBwb3J0c0V2ZW50UXVlcmllcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9y
dHNPY2NsdXNpb25RdWVyaWVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0JHUkFU
ZXh0dXJlcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNEWFQxVGV4dHVyZXMpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzRFhUM1RleHR1cmVzKToKKyAgICAgICAgKGds
OjpDb250ZXh0OjpzdXBwb3J0c0RYVDVUZXh0dXJlcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6
c3VwcG9ydHNGbG9hdDMyVGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRz
RmxvYXQzMkxpbmVhckZpbHRlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNGbG9h
dDMyUmVuZGVyYWJsZVRleHR1cmVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0Zs
b2F0MTZUZXh0dXJlcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNGbG9hdDE2TGlu
ZWFyRmlsdGVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0Zsb2F0MTZSZW5kZXJh
YmxlVGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldE1heGltdW1SZW5kZXJidWZm
ZXJEaW1lbnNpb24pOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldE1heGltdW1UZXh0dXJlRGlt
ZW5zaW9uKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1l
bnNpb24pOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldE1heGltdW1UZXh0dXJlTGV2ZWwpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzTHVtaW5hbmNlVGV4dHVyZXMpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzTHVtaW5hbmNlQWxwaGFUZXh0dXJlcyk6CisgICAgICAg
IChnbDo6Q29udGV4dDo6c3VwcG9ydHNEZXB0aFRleHR1cmVzKToKKyAgICAgICAgKGdsOjpDb250
ZXh0OjpzdXBwb3J0czMyYml0SW5kaWNlcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9y
dHNOb25Qb3dlcjJUZXh0dXJlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0luc3Rh
bmNpbmcpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNv
dHJvcHkpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KToK
KyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRDdXJyZW50UmVhZEZvcm1hdFR5cGUpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmRldGFjaEJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6ZGV0
YWNoVGV4dHVyZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6ZGV0YWNoRnJhbWVidWZmZXIpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OmRldGFjaFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChnbDo6
Q29udGV4dDo6Z2V0SW5jb21wbGV0ZVRleHR1cmUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNr
aXBEcmF3KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OnNldFZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OmluaXRFeHRlbnNpb25TdHJpbmcpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEV4
dGVuc2lvblN0cmluZyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6aW5pdFJlbmRlcmVyU3RyaW5n
KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRSZW5kZXJlclN0cmluZyk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6YmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0Nv
bnRleHQuaDogQWRkZWQuCisgICAgICAgIChnbDo6VmVydGV4QXR0cmlidXRlOjpWZXJ0ZXhBdHRy
aWJ1dGUpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYnV0ZTo6dHlwZVNpemUpOgorICAgICAg
ICAoZ2w6OlZlcnRleEF0dHJpYnV0ZTo6c3RyaWRlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3Yy
L0ZlbmNlLmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6RmVuY2U6OkZlbmNlKToKKyAgICAgICAg
KGdsOjpGZW5jZTo6fkZlbmNlKToKKyAgICAgICAgKGdsOjpGZW5jZTo6aXNGZW5jZSk6CisgICAg
ICAgIChnbDo6RmVuY2U6OnNldEZlbmNlKToKKyAgICAgICAgKGdsOjpGZW5jZTo6dGVzdEZlbmNl
KToKKyAgICAgICAgKGdsOjpGZW5jZTo6ZmluaXNoRmVuY2UpOgorICAgICAgICAoZ2w6OkZlbmNl
OjpnZXRGZW5jZWl2KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0ZlbmNlLmg6IEFkZGVkLgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvRmxvYXQxNlRvRmxvYXQzMi5jcHA6IEFkZGVkLgorICAg
ICAgICAoZ2w6OmZsb2F0MTZUb0Zsb2F0MzIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvRmxv
YXQxNlRvRmxvYXQzMi5weTogQWRkZWQuCisgICAgICAgIChjb252ZXJ0TWFudGlzc2EpOgorICAg
ICAgICAoY29udmVydEV4cG9uZW50KToKKyAgICAgICAgKGNvbnZlcnRPZmZzZXQpOgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdsOjpG
cmFtZWJ1ZmZlcjo6RnJhbWVidWZmZXIpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjp+RnJh
bWVidWZmZXIpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpsb29rdXBSZW5kZXJidWZmZXIp
OgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpzZXRDb2xvcmJ1ZmZlcik6CisgICAgICAgIChn
bDo6RnJhbWVidWZmZXI6OnNldERlcHRoYnVmZmVyKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZl
cjo6c2V0U3RlbmNpbGJ1ZmZlcik6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmRldGFjaFRl
eHR1cmUpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpkZXRhY2hSZW5kZXJidWZmZXIpOgor
ICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXRSZW5kZXJUYXJnZXRTZXJpYWwpOgorICAgICAg
ICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXREZXB0aGJ1ZmZlclNlcmlhbCk6CisgICAgICAgIChnbDo6
RnJhbWVidWZmZXI6OmdldFN0ZW5jaWxidWZmZXJTZXJpYWwpOgorICAgICAgICAoZ2w6OkZyYW1l
YnVmZmVyOjpnZXRDb2xvcmJ1ZmZlcik6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmdldERl
cHRoYnVmZmVyKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0U3RlbmNpbGJ1ZmZlcik6
CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKToKKyAg
ICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0UmVhZENvbG9yYnVmZmVyKToKKyAgICAgICAgKGds
OjpGcmFtZWJ1ZmZlcjo6Z2V0UmVhZENvbG9yYnVmZmVyVHlwZSk6CisgICAgICAgIChnbDo6RnJh
bWVidWZmZXI6OmdldEZpcnN0Q29sb3JidWZmZXIpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVy
OjpnZXRDb2xvcmJ1ZmZlclR5cGUpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXREZXB0
aGJ1ZmZlclR5cGUpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXRTdGVuY2lsYnVmZmVy
VHlwZSk6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmdldENvbG9yYnVmZmVySGFuZGxlKToK
KyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0RGVwdGhidWZmZXJIYW5kbGUpOgorICAgICAg
ICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXRTdGVuY2lsYnVmZmVySGFuZGxlKToKKyAgICAgICAgKGds
OjpGcmFtZWJ1ZmZlcjo6Z2V0RHJhd0J1ZmZlclN0YXRlKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1
ZmZlcjo6c2V0RHJhd0J1ZmZlclN0YXRlKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6aXNF
bmFibGVkQ29sb3JBdHRhY2htZW50KToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6aGFzRW5h
YmxlZENvbG9yQXR0YWNobWVudCk6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6Omhhc1N0ZW5j
aWwpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjp1c2luZ0V4dGVuZGVkRHJhd0J1ZmZlcnMp
OgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpjb21wbGV0ZW5lc3MpOgorICAgICAgICAoZ2w6
OkRlZmF1bHRGcmFtZWJ1ZmZlcjo6RGVmYXVsdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpG
cmFtZWJ1ZmZlcjo6Z2V0U2FtcGxlcyk6CisgICAgICAgIChnbDo6RGVmYXVsdEZyYW1lYnVmZmVy
Ojpjb21wbGV0ZW5lc3MpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIuaDog
QWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKGdsOjpIYW5kbGVBbGxvY2F0b3I6OkhhbmRsZUFsbG9jYXRvcik6CisgICAg
ICAgIChnbDo6SGFuZGxlQWxsb2NhdG9yOjp+SGFuZGxlQWxsb2NhdG9yKToKKyAgICAgICAgKGds
OjpIYW5kbGVBbGxvY2F0b3I6OnNldEJhc2VIYW5kbGUpOgorICAgICAgICAoZ2w6OkhhbmRsZUFs
bG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAoZ2w6OkhhbmRsZUFsbG9jYXRvcjo6cmVsZWFz
ZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuaDogQWRkZWQuCisg
ICAgICAgICogc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtLmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6
QXR0cmlidXRlQmluZGluZ3M6OkF0dHJpYnV0ZUJpbmRpbmdzKToKKyAgICAgICAgKGdsOjpBdHRy
aWJ1dGVCaW5kaW5nczo6fkF0dHJpYnV0ZUJpbmRpbmdzKToKKyAgICAgICAgKGdsOjpJbmZvTG9n
OjpJbmZvTG9nKToKKyAgICAgICAgKGdsOjpJbmZvTG9nOjp+SW5mb0xvZyk6CisgICAgICAgIChn
bDo6SW5mb0xvZzo6Z2V0TGVuZ3RoKToKKyAgICAgICAgKGdsOjpJbmZvTG9nOjpnZXRMb2cpOgor
ICAgICAgICAoZ2w6OkluZm9Mb2c6OmFwcGVuZFNhbml0aXplZCk6CisgICAgICAgIChnbDo6SW5m
b0xvZzo6YXBwZW5kKToKKyAgICAgICAgKGdsOjpJbmZvTG9nOjpyZXNldCk6CisgICAgICAgIChn
bDo6UHJvZ3JhbTo6UHJvZ3JhbSk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6flByb2dyYW0pOgor
ICAgICAgICAoZ2w6OlByb2dyYW06OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChnbDo6UHJvZ3Jh
bTo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRBdHRhY2hlZFNoYWRl
cnNDb3VudCk6CisgICAgICAgIChnbDo6QXR0cmlidXRlQmluZGluZ3M6OmJpbmRBdHRyaWJ1dGVM
b2NhdGlvbik6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6YmluZEF0dHJpYnV0ZUxvY2F0aW9uKToK
KyAgICAgICAgKGdsOjpQcm9ncmFtOjpsaW5rKToKKyAgICAgICAgKGdsOjpBdHRyaWJ1dGVCaW5k
aW5nczo6Z2V0QXR0cmlidXRlQmluZGluZyk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6dW5saW5r
KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjppc0xpbmtlZCk6CisgICAgICAgIChnbDo6UHJvZ3Jh
bTo6Z2V0UHJvZ3JhbUJpbmFyeSk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6c2V0UHJvZ3JhbUJp
bmFyeSk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6cmVsZWFzZSk6CisgICAgICAgIChnbDo6UHJv
Z3JhbTo6YWRkUmVmKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRSZWZDb3VudCk6CisgICAg
ICAgIChnbDo6UHJvZ3JhbTo6Z2V0UHJvZ3JhbUJpbmFyeUxlbmd0aCk6CisgICAgICAgIChnbDo6
UHJvZ3JhbTo6Z2V0SW5mb0xvZ0xlbmd0aCk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0SW5m
b0xvZyk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0QXR0YWNoZWRTaGFkZXJzKToKKyAgICAg
ICAgKGdsOjpQcm9ncmFtOjpnZXRBY3RpdmVBdHRyaWJ1dGUpOgorICAgICAgICAoZ2w6OlByb2dy
YW06OmdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRB
Y3RpdmVBdHRyaWJ1dGVNYXhMZW5ndGgpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldEFjdGl2
ZVVuaWZvcm0pOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm1Db3VudCk6
CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aCk6CisgICAg
ICAgIChnbDo6UHJvZ3JhbTo6ZmxhZ0ZvckRlbGV0aW9uKToKKyAgICAgICAgKGdsOjpQcm9ncmFt
Ojppc0ZsYWdnZWRGb3JEZWxldGlvbik6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6dmFsaWRhdGUp
OgorICAgICAgICAoZ2w6OlByb2dyYW06OmlzVmFsaWRhdGVkKToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL1Byb2dyYW0uaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Qcm9ncmFt
QmluYXJ5LmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6c3RyKToKKyAgICAgICAgKGdsOjpVbmlm
b3JtTG9jYXRpb246OlVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFy
eTo6UHJvZ3JhbUJpbmFyeSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6flByb2dyYW1C
aW5hcnkpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldFNlcmlhbCk6CisgICAgICAg
IChnbDo6UHJvZ3JhbUJpbmFyeTo6aXNzdWVTZXJpYWwpOgorICAgICAgICAoZ2w6OlByb2dyYW1C
aW5hcnk6OmdldFBpeGVsRXhlY3V0YWJsZSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6
Z2V0VmVydGV4RXhlY3V0YWJsZSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2V0R2Vv
bWV0cnlFeGVjdXRhYmxlKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRBdHRyaWJ1
dGVMb2NhdGlvbik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2V0U2VtYW50aWNJbmRl
eCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2V0VXNlZFNhbXBsZXJSYW5nZSk6Cisg
ICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6dXNlc1BvaW50U2l6ZSk6CisgICAgICAgIChnbDo6
UHJvZ3JhbUJpbmFyeTo6dXNlc1BvaW50U3ByaXRlRW11bGF0aW9uKToKKyAgICAgICAgKGdsOjpQ
cm9ncmFtQmluYXJ5Ojp1c2VzR2VvbWV0cnlTaGFkZXIpOgorICAgICAgICAoZ2w6OlByb2dyYW1C
aW5hcnk6OmdldFNhbXBsZXJNYXBwaW5nKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5Ojpn
ZXRTYW1wbGVyVGV4dHVyZVR5cGUpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldFVu
aWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTFm
dik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTJmdik6CisgICAgICAg
IChnbDo6UHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTNmdik6CisgICAgICAgIChnbDo6UHJvZ3Jh
bUJpbmFyeTo6c2V0VW5pZm9ybTRmdik6CisgICAgICAgIChnbDo6dHJhbnNwb3NlTWF0cml4KToK
KyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtTWF0cml4MmZ2KToKKyAgICAg
ICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKGds
OjpQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKGdsOjpQcm9n
cmFtQmluYXJ5OjpzZXRVbmlmb3JtMWl2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5Ojpz
ZXRVbmlmb3JtMml2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtM2l2
KToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtNGl2KToKKyAgICAgICAg
KGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW1C
aW5hcnk6OmdldFVuaWZvcm1pdik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6ZGlydHlB
bGxVbmlmb3Jtcyk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6YXBwbHlVbmlmb3Jtcyk6
CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6cGFja1ZhcnlpbmdzKToKKyAgICAgICAgKGds
OjpQcm9ncmFtQmluYXJ5OjpsaW5rVmFyeWluZ3MpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5h
cnk6OmxvYWQpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OnNhdmUpOgorICAgICAgICAo
Z2w6OlByb2dyYW1CaW5hcnk6OmdldExlbmd0aCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFy
eTo6bGluayk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6bGlua0F0dHJpYnV0ZXMpOgor
ICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmxpbmtVbmlmb3Jtcyk6CisgICAgICAgIChnbDo6
UHJvZ3JhbUJpbmFyeTo6ZGVmaW5lVW5pZm9ybSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFy
eTo6Z2VuZXJhdGVHZW9tZXRyeVNoYWRlckhMU0wpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5h
cnk6OmdlbmVyYXRlUG9pbnRTcHJpdGVITFNMKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5
OjpkZWNvcmF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6aXNWYWxp
ZGF0ZWQpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldEFjdGl2ZUF0dHJpYnV0ZSk6
CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2V0QWN0aXZlQXR0cmlidXRlQ291bnQpOgor
ICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldEFjdGl2ZUF0dHJpYnV0ZU1heExlbmd0aCk6
CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAg
IChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2V0QWN0aXZlVW5pZm9ybUNvdW50KToKKyAgICAgICAgKGds
OjpQcm9ncmFtQmluYXJ5OjpnZXRBY3RpdmVVbmlmb3JtTWF4TGVuZ3RoKToKKyAgICAgICAgKGds
OjpQcm9ncmFtQmluYXJ5Ojp2YWxpZGF0ZSk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6
dmFsaWRhdGVTYW1wbGVycyk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6U2FtcGxlcjo6
U2FtcGxlcik6CisgICAgICAgIChnbDo6QXR0cmlidXRlU29ydGVyOjpBdHRyaWJ1dGVTb3J0ZXIp
OgorICAgICAgICAoZ2w6OkF0dHJpYnV0ZVNvcnRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChn
bDo6UHJvZ3JhbUJpbmFyeTo6c29ydEF0dHJpYnV0ZXNCeUxheW91dCk6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5Lmg6IEFkZGVkLgorICAgICAgICAoZ2w6OlVuaWZvcm1M
b2NhdGlvbjo6VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1F1ZXJ5
LmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6UXVlcnk6OlF1ZXJ5KToKKyAgICAgICAgKGdsOjpR
dWVyeTo6flF1ZXJ5KToKKyAgICAgICAgKGdsOjpRdWVyeTo6YmVnaW4pOgorICAgICAgICAoZ2w6
OlF1ZXJ5OjplbmQpOgorICAgICAgICAoZ2w6OlF1ZXJ5OjpnZXRSZXN1bHQpOgorICAgICAgICAo
Z2w6OlF1ZXJ5Ojppc1Jlc3VsdEF2YWlsYWJsZSk6CisgICAgICAgIChnbDo6UXVlcnk6OmdldFR5
cGUpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUXVlcnkuaDogQWRkZWQuCisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdsOjpSZW5k
ZXJidWZmZXJJbnRlcmZhY2U6OlJlbmRlcmJ1ZmZlckludGVyZmFjZSk6CisgICAgICAgIChnbDo6
UmVuZGVyYnVmZmVySW50ZXJmYWNlOjphZGRQcm94eVJlZik6CisgICAgICAgIChnbDo6UmVuZGVy
YnVmZmVySW50ZXJmYWNlOjpyZWxlYXNlUHJveHkpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZl
ckludGVyZmFjZTo6Z2V0UmVkU2l6ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVySW50ZXJm
YWNlOjpnZXRHcmVlblNpemUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVyZmFjZTo6
Z2V0Qmx1ZVNpemUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVyZmFjZTo6Z2V0QWxw
aGFTaXplKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldERlcHRoU2l6
ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVySW50ZXJmYWNlOjpnZXRTdGVuY2lsU2l6ZSk6
CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpSZW5kZXJidWZmZXJUZXh0dXJl
MkQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6flJlbmRlcmJ1ZmZlclRl
eHR1cmUyRCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZTJEOjphZGRQcm94eVJl
Zik6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpyZWxlYXNlUHJveHkpOgor
ICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAg
ICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldERlcHRoU3RlbmNpbCk6CisgICAg
ICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRXaWR0aCk6CisgICAgICAgIChnbDo6
UmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRIZWlnaHQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1
ZmZlclRleHR1cmUyRDo6Z2V0SW50ZXJuYWxGb3JtYXQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1
ZmZlclRleHR1cmUyRDo6Z2V0QWN0dWFsRm9ybWF0KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZm
ZXJUZXh0dXJlMkQ6OmdldFNhbXBsZXMpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1
cmUyRDo6Z2V0U2VyaWFsKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1h
cDo6UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXApOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZl
clRleHR1cmVDdWJlTWFwOjp+UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXApOgorICAgICAgICAo
Z2w6OlJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjphZGRQcm94eVJlZik6CisgICAgICAgIChn
bDo6UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6OnJlbGVhc2VQcm94eSk6CisgICAgICAgIChn
bDo6UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAg
IChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6OmdldERlcHRoU3RlbmNpbCk6CisgICAg
ICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6OmdldFdpZHRoKToKKyAgICAgICAg
KGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6Z2V0SGVpZ2h0KToKKyAgICAgICAgKGds
OjpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6Z2V0SW50ZXJuYWxGb3JtYXQpOgorICAgICAg
ICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRBY3R1YWxGb3JtYXQpOgorICAg
ICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRTYW1wbGVzKToKKyAgICAg
ICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6Z2V0U2VyaWFsKToKKyAgICAgICAg
KGdsOjpSZW5kZXJidWZmZXI6OlJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChnbDo6UmVuZGVyYnVm
ZmVyOjp+UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmFkZFJlZik6
CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpyZWxlYXNlKToKKyAgICAgICAgKGdsOjpSZW5k
ZXJidWZmZXI6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpn
ZXREZXB0aFN0ZW5jaWwpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0V2lkdGgpOgor
ICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0SGVpZ2h0KToKKyAgICAgICAgKGdsOjpSZW5k
ZXJidWZmZXI6OmdldEludGVybmFsRm9ybWF0KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6
OmdldEFjdHVhbEZvcm1hdCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRSZWRTaXpl
KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldEdyZWVuU2l6ZSk6CisgICAgICAgIChn
bDo6UmVuZGVyYnVmZmVyOjpnZXRCbHVlU2l6ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVy
OjpnZXRBbHBoYVNpemUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0RGVwdGhTaXpl
KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldFN0ZW5jaWxTaXplKToKKyAgICAgICAg
KGdsOjpSZW5kZXJidWZmZXI6OmdldFNhbXBsZXMpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZl
cjo6Z2V0U2VyaWFsKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OnNldFN0b3JhZ2UpOgor
ICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OlJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgor
ICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6On5SZW5kZXJidWZmZXJTdG9yYWdlKToK
KyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRSZW5kZXJUYXJnZXQpOgorICAg
ICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldERlcHRoU3RlbmNpbCk6CisgICAgICAg
IChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0V2lkdGgpOgorICAgICAgICAoZ2w6OlJlbmRl
cmJ1ZmZlclN0b3JhZ2U6OmdldEhlaWdodCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyU3Rv
cmFnZTo6Z2V0SW50ZXJuYWxGb3JtYXQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3Jh
Z2U6OmdldEFjdHVhbEZvcm1hdCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6
Z2V0U2FtcGxlcyk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0U2VyaWFs
KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlOjppc3N1ZVNlcmlhbCk6CisgICAg
ICAgIChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNzdWVDdWJlU2VyaWFscyk6CisgICAgICAg
IChnbDo6Q29sb3JidWZmZXI6OkNvbG9yYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb2xvcmJ1ZmZl
cjo6fkNvbG9yYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb2xvcmJ1ZmZlcjo6Z2V0UmVuZGVyVGFy
Z2V0KToKKyAgICAgICAgKGdsOjpEZXB0aFN0ZW5jaWxidWZmZXI6OkRlcHRoU3RlbmNpbGJ1ZmZl
cik6CisgICAgICAgIChnbDo6RGVwdGhTdGVuY2lsYnVmZmVyOjp+RGVwdGhTdGVuY2lsYnVmZmVy
KToKKyAgICAgICAgKGdsOjpEZXB0aFN0ZW5jaWxidWZmZXI6OmdldERlcHRoU3RlbmNpbCk6Cisg
ICAgICAgIChnbDo6RGVwdGhidWZmZXI6OkRlcHRoYnVmZmVyKToKKyAgICAgICAgKGdsOjpEZXB0
aGJ1ZmZlcjo6fkRlcHRoYnVmZmVyKToKKyAgICAgICAgKGdsOjpTdGVuY2lsYnVmZmVyOjpTdGVu
Y2lsYnVmZmVyKToKKyAgICAgICAgKGdsOjpTdGVuY2lsYnVmZmVyOjp+U3RlbmNpbGJ1ZmZlcik6
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaDogQWRkZWQuCisgICAgICAg
IChnbDo6UmVuZGVyYnVmZmVySW50ZXJmYWNlOjp+UmVuZGVyYnVmZmVySW50ZXJmYWNlKToKKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL1Jlc291cmNlTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6UmVzb3VyY2VNYW5hZ2VyKToKKyAgICAgICAgKGdsOjpS
ZXNvdXJjZU1hbmFnZXI6On5SZXNvdXJjZU1hbmFnZXIpOgorICAgICAgICAoZ2w6OlJlc291cmNl
TWFuYWdlcjo6YWRkUmVmKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OnJlbGVhc2Up
OgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAg
KGdsOjpSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChnbDo6UmVzb3Vy
Y2VNYW5hZ2VyOjpjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6
OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6Y3JlYXRlUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZUJ1ZmZlcik6
CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVTaGFkZXIpOgorICAgICAgICAo
Z2w6OlJlc291cmNlTWFuYWdlcjo6ZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChnbDo6UmVzb3Vy
Y2VNYW5hZ2VyOjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6
OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpnZXRC
dWZmZXIpOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6Z2V0U2hhZGVyKToKKyAgICAg
ICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmdldFRleHR1cmUpOgorICAgICAgICAoZ2w6OlJlc291
cmNlTWFuYWdlcjo6Z2V0UHJvZ3JhbSk6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpn
ZXRSZW5kZXJidWZmZXIpOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6c2V0UmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmNoZWNrQnVmZmVyQWxsb2Nh
dGlvbik6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpjaGVja1RleHR1cmVBbGxvY2F0
aW9uKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmNoZWNrUmVuZGVyYnVmZmVyQWxs
b2NhdGlvbik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuaDogQWRk
ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9TaGFkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KGdsOjpTaGFkZXI6OlNoYWRlcik6CisgICAgICAgIChnbDo6U2hhZGVyOjp+U2hhZGVyKToKKyAg
ICAgICAgKGdsOjpTaGFkZXI6OmdldEhhbmRsZSk6CisgICAgICAgIChnbDo6U2hhZGVyOjpzZXRT
b3VyY2UpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6Z2V0SW5mb0xvZ0xlbmd0aCk6CisgICAgICAg
IChnbDo6U2hhZGVyOjpnZXRJbmZvTG9nKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmdldFNvdXJj
ZUxlbmd0aCk6CisgICAgICAgIChnbDo6U2hhZGVyOjpnZXRUcmFuc2xhdGVkU291cmNlTGVuZ3Ro
KToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmdldFNvdXJjZUltcGwpOgorICAgICAgICAoZ2w6OlNo
YWRlcjo6Z2V0U291cmNlKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmdldFRyYW5zbGF0ZWRTb3Vy
Y2UpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6Z2V0VW5pZm9ybXMpOgorICAgICAgICAoZ2w6OlNo
YWRlcjo6aXNDb21waWxlZCk6CisgICAgICAgIChnbDo6U2hhZGVyOjpnZXRITFNMKToKKyAgICAg
ICAgKGdsOjpTaGFkZXI6OmFkZFJlZik6CisgICAgICAgIChnbDo6U2hhZGVyOjpyZWxlYXNlKToK
KyAgICAgICAgKGdsOjpTaGFkZXI6OmdldFJlZkNvdW50KToKKyAgICAgICAgKGdsOjpTaGFkZXI6
OmlzRmxhZ2dlZEZvckRlbGV0aW9uKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmZsYWdGb3JEZWxl
dGlvbik6CisgICAgICAgIChnbDo6U2hhZGVyOjppbml0aWFsaXplQ29tcGlsZXIpOgorICAgICAg
ICAoZ2w6OlNoYWRlcjo6cmVsZWFzZUNvbXBpbGVyKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OnBh
cnNlVmFyeWluZ3MpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6cmVzZXRWYXJ5aW5nc1JlZ2lzdGVy
QXNzaWdubWVudCk6CisgICAgICAgIChnbDo6U2hhZGVyOjp1bmNvbXBpbGUpOgorICAgICAgICAo
Z2w6OlNoYWRlcjo6Y29tcGlsZVRvSExTTCk6CisgICAgICAgIChnbDo6U2hhZGVyOjpwYXJzZVR5
cGUpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6Y29tcGFyZVZhcnlpbmcpOgorICAgICAgICAoZ2w6
OlZlcnRleFNoYWRlcjo6VmVydGV4U2hhZGVyKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhTaGFkZXI6
On5WZXJ0ZXhTaGFkZXIpOgorICAgICAgICAoZ2w6OlZlcnRleFNoYWRlcjo6Z2V0VHlwZSk6Cisg
ICAgICAgIChnbDo6VmVydGV4U2hhZGVyOjp1bmNvbXBpbGUpOgorICAgICAgICAoZ2w6OlZlcnRl
eFNoYWRlcjo6Y29tcGlsZSk6CisgICAgICAgIChnbDo6VmVydGV4U2hhZGVyOjpnZXRTZW1hbnRp
Y0luZGV4KToKKyAgICAgICAgKGdsOjpWZXJ0ZXhTaGFkZXI6OnBhcnNlQXR0cmlidXRlcyk6Cisg
ICAgICAgIChnbDo6RnJhZ21lbnRTaGFkZXI6OkZyYWdtZW50U2hhZGVyKToKKyAgICAgICAgKGds
OjpGcmFnbWVudFNoYWRlcjo6fkZyYWdtZW50U2hhZGVyKToKKyAgICAgICAgKGdsOjpGcmFnbWVu
dFNoYWRlcjo6Z2V0VHlwZSk6CisgICAgICAgIChnbDo6RnJhZ21lbnRTaGFkZXI6OmNvbXBpbGUp
OgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvU2hhZGVyLmg6IEFkZGVkLgorICAgICAgICAoZ2w6
OlZhcnlpbmc6OlZhcnlpbmcpOgorICAgICAgICAoZ2w6OkF0dHJpYnV0ZTo6QXR0cmlidXRlKToK
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1RleHR1cmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKGds
OjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjp+VGV4dHVyZSk6Cisg
ICAgICAgIChnbDo6VGV4dHVyZTo6c2V0TWluRmlsdGVyKToKKyAgICAgICAgKGdsOjpUZXh0dXJl
OjpzZXRNYWdGaWx0ZXIpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OnNldFdyYXBTKToKKyAgICAg
ICAgKGdsOjpUZXh0dXJlOjpzZXRXcmFwVCk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6c2V0TWF4
QW5pc290cm9weSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6c2V0VXNhZ2UpOgorICAgICAgICAo
Z2w6OlRleHR1cmU6OmdldE1pbkZpbHRlcik6CisgICAgICAgIChnbDo6VGV4dHVyZTo6Z2V0TWFn
RmlsdGVyKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpnZXRXcmFwUyk6CisgICAgICAgIChnbDo6
VGV4dHVyZTo6Z2V0V3JhcFQpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmdldE1heEFuaXNvdHJv
cHkpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmdldExvZE9mZnNldCk6CisgICAgICAgIChnbDo6
VGV4dHVyZTo6Z2V0U2FtcGxlclN0YXRlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpnZXRVc2Fn
ZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6aXNNaXBtYXBGaWx0ZXJlZCk6CisgICAgICAgIChn
bDo6VGV4dHVyZTo6c2V0SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OnNldENvbXByZXNz
ZWRJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6c3ViSW1hZ2UpOgorICAgICAgICAoZ2w6
OlRleHR1cmU6OnN1YkltYWdlQ29tcHJlc3NlZCk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6Z2V0
TmF0aXZlVGV4dHVyZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6aGFzRGlydHlJbWFnZXMpOgor
ICAgICAgICAoZ2w6OlRleHR1cmU6OnJlc2V0RGlydHkpOgorICAgICAgICAoZ2w6OlRleHR1cmU6
OmdldFRleHR1cmVTZXJpYWwpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmdldFJlbmRlclRhcmdl
dFNlcmlhbCk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6aXNJbW11dGFibGUpOgorICAgICAgICAo
Z2w6OlRleHR1cmU6OmNyZWF0aW9uTGV2ZWxzKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OlRl
eHR1cmUyRCk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjp+VGV4dHVyZTJEKToKKyAgICAgICAg
KGdsOjpUZXh0dXJlMkQ6OmFkZFByb3h5UmVmKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnJl
bGVhc2VQcm94eSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpnZXRUYXJnZXQpOgorICAgICAg
ICAoZ2w6OlRleHR1cmUyRDo6Z2V0V2lkdGgpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Z2V0
SGVpZ2h0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdldEludGVybmFsRm9ybWF0KToKKyAg
ICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdldEFjdHVhbEZvcm1hdCk6CisgICAgICAgIChnbDo6VGV4
dHVyZTJEOjpyZWRlZmluZUltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnNldEltYWdl
KToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmJpbmRUZXhJbWFnZSk6CisgICAgICAgIChnbDo6
VGV4dHVyZTJEOjpyZWxlYXNlVGV4SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6c2V0
Q29tcHJlc3NlZEltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmNvbW1pdFJlY3QpOgor
ICAgICAgICAoZ2w6OlRleHR1cmUyRDo6c3ViSW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmUy
RDo6c3ViSW1hZ2VDb21wcmVzc2VkKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmNvcHlJbWFn
ZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpjb3B5U3ViSW1hZ2UpOgorICAgICAgICAoZ2w6
OlRleHR1cmUyRDo6c3RvcmFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjppc1NhbXBsZXJD
b21wbGV0ZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjppc01pcG1hcENvbXBsZXRlKToKKyAg
ICAgICAgKGdsOjpUZXh0dXJlMkQ6OmlzQ29tcHJlc3NlZCk6CisgICAgICAgIChnbDo6VGV4dHVy
ZTJEOjppc0RlcHRoKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmNyZWF0ZVRleHR1cmUpOgor
ICAgICAgICAoZ2w6OlRleHR1cmUyRDo6dXBkYXRlVGV4dHVyZSk6CisgICAgICAgIChnbDo6VGV4
dHVyZTJEOjpjb252ZXJ0VG9SZW5kZXJUYXJnZXQpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6
Z2VuZXJhdGVNaXBtYXBzKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdldFJlbmRlcmJ1ZmZl
cik6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAgICAo
Z2w6OlRleHR1cmUyRDo6Z2V0RGVwdGhTdGVuY2lsKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6
OmxldmVsQ291bnQpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Z2V0U3RvcmFnZSk6CisgICAg
ICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OlRleHR1cmVDdWJlTWFwKToKKyAgICAgICAgKGdsOjpU
ZXh0dXJlQ3ViZU1hcDo6flRleHR1cmVDdWJlTWFwKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3Vi
ZU1hcDo6YWRkUHJveHlSZWYpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpyZWxlYXNl
UHJveHkpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpnZXRUYXJnZXQpOgorICAgICAg
ICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpnZXRXaWR0aCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1
YmVNYXA6OmdldEhlaWdodCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmdldEludGVy
bmFsRm9ybWF0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Z2V0QWN0dWFsRm9ybWF0
KToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VQb3NYKToKKyAgICAgICAg
KGdsOjpUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWdYKToKKyAgICAgICAgKGdsOjpUZXh0dXJl
Q3ViZU1hcDo6c2V0SW1hZ2VQb3NZKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c2V0
SW1hZ2VOZWdZKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VQb3NaKToK
KyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWdaKToKKyAgICAgICAgKGds
OjpUZXh0dXJlQ3ViZU1hcDo6c2V0Q29tcHJlc3NlZEltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0
dXJlQ3ViZU1hcDo6Y29tbWl0UmVjdCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnN1
YkltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c3ViSW1hZ2VDb21wcmVzc2Vk
KToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6aXNTYW1wbGVyQ29tcGxldGUpOgorICAg
ICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjppc0N1YmVDb21wbGV0ZSk6CisgICAgICAgIChnbDo6
VGV4dHVyZUN1YmVNYXA6OmlzTWlwbWFwQ3ViZUNvbXBsZXRlKToKKyAgICAgICAgKGdsOjpUZXh0
dXJlQ3ViZU1hcDo6aXNDb21wcmVzc2VkKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6
Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnVwZGF0ZVRleHR1
cmUpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpjb252ZXJ0VG9SZW5kZXJUYXJnZXQp
OgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpzZXRJbWFnZSk6CisgICAgICAgIChnbDo6
VGV4dHVyZUN1YmVNYXA6OmZhY2VJbmRleCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6
OnJlZGVmaW5lSW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpjb3B5SW1hZ2Up
OgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpjb3B5U3ViSW1hZ2UpOgorICAgICAgICAo
Z2w6OlRleHR1cmVDdWJlTWFwOjpzdG9yYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1h
cDo6Z2VuZXJhdGVNaXBtYXBzKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Z2V0UmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Z2V0UmVuZGVyVGFyZ2V0
KToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6bGV2ZWxDb3VudCk6CisgICAgICAgIChn
bDo6VGV4dHVyZUN1YmVNYXA6OmdldFN0b3JhZ2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
VGV4dHVyZS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1VuaWZvcm0uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKGdsOjpVbmlmb3JtOjpVbmlmb3JtKToKKyAgICAgICAgKGdsOjpVbmlm
b3JtOjp+VW5pZm9ybSk6CisgICAgICAgIChnbDo6VW5pZm9ybTo6aXNBcnJheSk6CisgICAgICAg
IChnbDo6VW5pZm9ybTo6ZWxlbWVudENvdW50KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1Vu
aWZvcm0uaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9hbmdsZXR5cGVzLmg6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvY29uc3RhbnRzLmg6IEFkZGVkLgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvbGliR0xFU3YyLmNwcDogQWRkZWQuCisgICAgICAgICh2YWxpZElt
YWdlU2l6ZSk6CisgICAgICAgIChjaGVja1RleHR1cmVGb3JtYXRUeXBlKToKKyAgICAgICAgKHZh
bGlkYXRlU3ViSW1hZ2VQYXJhbXMyRCk6CisgICAgICAgICh2YWxpZGF0ZVN1YkltYWdlUGFyYW1z
Q3ViZSk6CisgICAgICAgICh2YWxpZFJlYWRGb3JtYXRUeXBlKToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL2xpYkdMRVN2Mi5kZWY6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvbGli
R0xFU3YyLnJjOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hw
cm9qOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qLmZp
bHRlcnM6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvbWFpbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoRGxsTWFpbik6CisgICAgICAgIChnbDo6bWFrZUN1cnJlbnQpOgorICAgICAgICAo
Z2w6OmdldENvbnRleHQpOgorICAgICAgICAoZ2w6OmdldE5vbkxvc3RDb250ZXh0KToKKyAgICAg
ICAgKGdsOjpnZXREaXNwbGF5KToKKyAgICAgICAgKGdsOjplcnJvcik6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9tYWluLmg6IEFkZGVkLgorICAgICAgICAoZ2w6OmVycm9yKToKKyAgICAgICAg
KiBzcmMvbGliR0xFU3YyL21hdGh1dGlsLmg6IEFkZGVkLgorICAgICAgICAoZ2w6OlZlY3RvcjQ6
OlZlY3RvcjQpOgorICAgICAgICAoZ2w6OmlzUG93Mik6CisgICAgICAgIChnbDo6bG9nMik6Cisg
ICAgICAgIChnbDo6Y2VpbFBvdzIpOgorICAgICAgICAoZ2w6OmNsYW1wKToKKyAgICAgICAgKGds
OjpjbGFtcDAxKToKKyAgICAgICAgKGdsOjp1bm9ybSk6CisgICAgICAgIChnbDo6c3VwcG9ydHNT
U0UyKToKKyAgICAgICAgKGdsOjpmbG9hdDMyVG9GbG9hdDE2KToKKyAgICAgICAgKHJ4OjpSYW5n
ZTo6UmFuZ2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcHJlY29tcGlsZWQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmg6IEFkZGVkLgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXI6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVT
djIvcmVuZGVyZXIvQmxpdC5jcHA6IEFkZGVkLgorICAgICAgICAocng6OkJsaXQ6OkJsaXQpOgor
ICAgICAgICAocng6OkJsaXQ6On5CbGl0KToKKyAgICAgICAgKHJ4OjpCbGl0Ojppbml0R2VvbWV0
cnkpOgorICAgICAgICAocng6OkJsaXQ6OnNldFNoYWRlcik6CisgICAgICAgIChyeDo6QmxpdDo6
c2V0VmVydGV4U2hhZGVyKToKKyAgICAgICAgKHJ4OjpCbGl0OjpzZXRQaXhlbFNoYWRlcik6Cisg
ICAgICAgIChyeDo6QmxpdDo6Z2V0U3VyZmFjZVJlY3QpOgorICAgICAgICAocng6OkJsaXQ6OmJv
eEZpbHRlcik6CisgICAgICAgIChyeDo6QmxpdDo6Y29weSk6CisgICAgICAgIChyeDo6QmxpdDo6
Zm9ybWF0Q29udmVydCk6CisgICAgICAgIChyeDo6QmxpdDo6c2V0Rm9ybWF0Q29udmVydFNoYWRl
cnMpOgorICAgICAgICAocng6OkJsaXQ6OmNvcHlTdXJmYWNlVG9UZXh0dXJlKToKKyAgICAgICAg
KHJ4OjpCbGl0OjpzZXRWaWV3cG9ydCk6CisgICAgICAgIChyeDo6QmxpdDo6c2V0Q29tbW9uQmxp
dFN0YXRlKToKKyAgICAgICAgKHJ4OjpCbGl0OjpyZW5kZXIpOgorICAgICAgICAocng6OkJsaXQ6
OnNhdmVTdGF0ZSk6CisgICAgICAgIChyeDo6QmxpdDo6cmVzdG9yZVN0YXRlKToKKyAgICAgICAg
KiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6
QnVmZmVyU3RvcmFnZTo6QnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFn
ZTo6fkJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2U6OmdldFNlcmlh
bCk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTo6dXBkYXRlU2VyaWFsKToKKyAgICAgICAg
KHJ4OjpCdWZmZXJTdG9yYWdlOjptYXJrQnVmZmVyVXNhZ2UpOgorICAgICAgICAqIHNyYy9saWJH
TEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2UxMS5jcHA6IEFkZGVkLgorICAgICAgICAocng6
OkJ1ZmZlclN0b3JhZ2UxMTo6QnVmZmVyU3RvcmFnZTExKToKKyAgICAgICAgKHJ4OjpCdWZmZXJT
dG9yYWdlMTE6On5CdWZmZXJTdG9yYWdlMTEpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2Ux
MTo6bWFrZUJ1ZmZlclN0b3JhZ2UxMSk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTExOjpn
ZXREYXRhKToKKyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlMTE6OnNldERhdGEpOgorICAgICAg
ICAocng6OkJ1ZmZlclN0b3JhZ2UxMTo6Y2xlYXIpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3Jh
Z2UxMTo6Z2V0U2l6ZSk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTExOjpzdXBwb3J0c0Rp
cmVjdEJpbmRpbmcpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2UxMTo6bWFya0J1ZmZlclVz
YWdlKToKKyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlMTE6OmdldEJ1ZmZlcik6CisgICAgICAg
ICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEuaDogQWRkZWQuCisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5jcHA6IEFkZGVkLgor
ICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2U5OjpCdWZmZXJTdG9yYWdlOSk6CisgICAgICAgIChy
eDo6QnVmZmVyU3RvcmFnZTk6On5CdWZmZXJTdG9yYWdlOSk6CisgICAgICAgIChyeDo6QnVmZmVy
U3RvcmFnZTk6Om1ha2VCdWZmZXJTdG9yYWdlOSk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFn
ZTk6OmdldERhdGEpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2U5OjpzZXREYXRhKToKKyAg
ICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlOTo6Y2xlYXIpOgorICAgICAgICAocng6OkJ1ZmZlclN0
b3JhZ2U5OjpnZXRTaXplKToKKyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlOTo6c3VwcG9ydHNE
aXJlY3RCaW5kaW5nKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0
b3JhZ2U5Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2Ux
MS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OkZlbmNlMTE6OkZlbmNlMTEpOgorICAgICAgICAo
cng6OkZlbmNlMTE6On5GZW5jZTExKToKKyAgICAgICAgKHJ4OjpGZW5jZTExOjppc0ZlbmNlKToK
KyAgICAgICAgKHJ4OjpGZW5jZTExOjpzZXRGZW5jZSk6CisgICAgICAgIChyeDo6RmVuY2UxMTo6
dGVzdEZlbmNlKToKKyAgICAgICAgKHJ4OjpGZW5jZTExOjpmaW5pc2hGZW5jZSk6CisgICAgICAg
IChyeDo6RmVuY2UxMTo6Z2V0RmVuY2Vpdik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9GZW5jZTExLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIv
RmVuY2U5LmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6RmVuY2U5OjpGZW5jZTkpOgorICAgICAg
ICAocng6OkZlbmNlOTo6fkZlbmNlOSk6CisgICAgICAgIChyeDo6RmVuY2U5Ojppc0ZlbmNlKToK
KyAgICAgICAgKHJ4OjpGZW5jZTk6OnNldEZlbmNlKToKKyAgICAgICAgKHJ4OjpGZW5jZTk6OnRl
c3RGZW5jZSk6CisgICAgICAgIChyeDo6RmVuY2U5OjpmaW5pc2hGZW5jZSk6CisgICAgICAgIChy
eDo6RmVuY2U5OjpnZXRGZW5jZWl2KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVy
L0ZlbmNlOS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNl
SW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpGZW5jZUltcGw6OkZlbmNlSW1wbCk6CisgICAg
ICAgIChyeDo6RmVuY2VJbXBsOjp+RmVuY2VJbXBsKToKKyAgICAgICAgKHJ4OjpGZW5jZUltcGw6
OnNldFN0YXR1cyk6CisgICAgICAgIChyeDo6RmVuY2VJbXBsOjpnZXRTdGF0dXMpOgorICAgICAg
ICAocng6OkZlbmNlSW1wbDo6c2V0Q29uZGl0aW9uKToKKyAgICAgICAgKHJ4OjpGZW5jZUltcGw6
OmdldENvbmRpdGlvbik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5j
cHA6IEFkZGVkLgorICAgICAgICAocng6OkltYWdlOjpJbWFnZSk6CisgICAgICAgIChyeDo6SW1h
Z2U6OmxvYWRBbHBoYURhdGFUb0JHUkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkQWxwaGFE
YXRhVG9OYXRpdmUpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkQWxwaGFGbG9hdERhdGFUb1JH
QkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkQWxwaGFIYWxmRmxvYXREYXRhVG9SR0JBKToK
KyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZEx1bWluYW5jZURhdGFUb05hdGl2ZU9yQkdSQSk6Cisg
ICAgICAgIChyeDo6SW1hZ2U6OmxvYWRMdW1pbmFuY2VGbG9hdERhdGFUb1JHQkEpOgorICAgICAg
ICAocng6OkltYWdlOjpsb2FkTHVtaW5hbmNlRmxvYXREYXRhVG9SR0IpOgorICAgICAgICAocng6
OkltYWdlOjpsb2FkTHVtaW5hbmNlSGFsZkZsb2F0RGF0YVRvUkdCQSk6CisgICAgICAgIChyeDo6
SW1hZ2U6OmxvYWRMdW1pbmFuY2VBbHBoYURhdGFUb05hdGl2ZU9yQkdSQSk6CisgICAgICAgIChy
eDo6SW1hZ2U6OmxvYWRMdW1pbmFuY2VBbHBoYUZsb2F0RGF0YVRvUkdCQSk6CisgICAgICAgIChy
eDo6SW1hZ2U6OmxvYWRMdW1pbmFuY2VBbHBoYUhhbGZGbG9hdERhdGFUb1JHQkEpOgorICAgICAg
ICAocng6OkltYWdlOjpsb2FkUkdCVUJ5dGVEYXRhVG9CR1JYKToKKyAgICAgICAgKHJ4OjpJbWFn
ZTo6bG9hZFJHQlVCeXRlRGF0YVRvUkdCQSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRSR0I1
NjVEYXRhVG9CR1JBKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQjU2NURhdGFUb1JHQkEp
OgorICAgICAgICAocng6OkltYWdlOjpsb2FkUkdCRmxvYXREYXRhVG9SR0JBKToKKyAgICAgICAg
KHJ4OjpJbWFnZTo6bG9hZFJHQkZsb2F0RGF0YVRvTmF0aXZlKToKKyAgICAgICAgKHJ4OjpJbWFn
ZTo6bG9hZFJHQkhhbGZGbG9hdERhdGFUb1JHQkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2Fk
UkdCQVVCeXRlRGF0YVRvQkdSQSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRSR0JBVUJ5dGVE
YXRhVG9OYXRpdmUpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkUkdCQTQ0NDREYXRhVG9CR1JB
KToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQkE0NDQ0RGF0YVRvUkdCQSk6CisgICAgICAg
IChyeDo6SW1hZ2U6OmxvYWRSR0JBNTU1MURhdGFUb0JHUkEpOgorICAgICAgICAocng6OkltYWdl
Ojpsb2FkUkdCQTU1NTFEYXRhVG9SR0JBKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQkFG
bG9hdERhdGFUb1JHQkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkUkdCQUhhbGZGbG9hdERh
dGFUb1JHQkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkQkdSQURhdGFUb0JHUkEpOgorICAg
ICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChy
eDo6SW1hZ2U6On5JbWFnZSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmdldFdpZHRoKToKKyAgICAg
ICAgKHJ4OjpJbWFnZTo6Z2V0SGVpZ2h0KToKKyAgICAgICAgKHJ4OjpJbWFnZTo6Z2V0SW50ZXJu
YWxGb3JtYXQpOgorICAgICAgICAocng6OkltYWdlOjpnZXRBY3R1YWxGb3JtYXQpOgorICAgICAg
ICAocng6OkltYWdlOjptYXJrRGlydHkpOgorICAgICAgICAocng6OkltYWdlOjptYXJrQ2xlYW4p
OgorICAgICAgICAocng6OkltYWdlOjpzZXRNYW5hZ2VkU3VyZmFjZSk6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTExLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6SW1h
Z2UxMTo6SW1hZ2UxMSk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6fkltYWdlMTEpOgorICAgICAg
ICAocng6OkltYWdlMTE6Om1ha2VJbWFnZTExKToKKyAgICAgICAgKHJ4OjpJbWFnZTExOjpnZW5l
cmF0ZU1pcG1hcCk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6aXNEaXJ0eSk6CisgICAgICAgIChy
eDo6SW1hZ2UxMTo6dXBkYXRlU3VyZmFjZSk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6cmVkZWZp
bmUpOgorICAgICAgICAocng6OkltYWdlMTE6OmlzUmVuZGVyYWJsZUZvcm1hdCk6CisgICAgICAg
IChyeDo6SW1hZ2UxMTo6Z2V0RFhHSUZvcm1hdCk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6bG9h
ZERhdGEpOgorICAgICAgICAocng6OkltYWdlMTE6OmxvYWRDb21wcmVzc2VkRGF0YSk6CisgICAg
ICAgIChyeDo6SW1hZ2UxMTo6Y29weSk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6Z2V0U3RhZ2lu
Z1RleHR1cmUpOgorICAgICAgICAocng6OkltYWdlMTE6OmdldFN0YWdpbmdTdWJyZXNvdXJjZSk6
CisgICAgICAgIChyeDo6SW1hZ2UxMTo6Y3JlYXRlU3RhZ2luZ1RleHR1cmUpOgorICAgICAgICAo
cng6OkltYWdlMTE6Om1hcCk6CisgICAgICAgIChyeDo6SW1hZ2UxMTo6dW5tYXApOgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UxMS5oOiBBZGRlZC4KKyAgICAgICAgKiBz
cmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlOS5jcHA6IEFkZGVkLgorICAgICAgICAocng6Oklt
YWdlOTo6SW1hZ2U5KToKKyAgICAgICAgKHJ4OjpJbWFnZTk6On5JbWFnZTkpOgorICAgICAgICAo
cng6OkltYWdlOTo6Z2VuZXJhdGVNaXApOgorICAgICAgICAocng6OkltYWdlOTo6bWFrZUltYWdl
OSk6CisgICAgICAgIChyeDo6SW1hZ2U5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChyeDo6
SW1hZ2U5Ojpjb3B5TG9ja2FibGVTdXJmYWNlcyk6CisgICAgICAgIChyeDo6SW1hZ2U5OjpyZWRl
ZmluZSk6CisgICAgICAgIChyeDo6SW1hZ2U5OjpjcmVhdGVTdXJmYWNlKToKKyAgICAgICAgKHJ4
OjpJbWFnZTk6OmxvY2spOgorICAgICAgICAocng6OkltYWdlOTo6dW5sb2NrKToKKyAgICAgICAg
KHJ4OjpJbWFnZTk6OmlzUmVuZGVyYWJsZUZvcm1hdCk6CisgICAgICAgIChyeDo6SW1hZ2U5Ojpn
ZXREM0RGb3JtYXQpOgorICAgICAgICAocng6OkltYWdlOTo6Z2V0U3VyZmFjZSk6CisgICAgICAg
IChyeDo6SW1hZ2U5OjpzZXRNYW5hZ2VkU3VyZmFjZSk6CisgICAgICAgIChyeDo6SW1hZ2U5Ojp1
cGRhdGVTdXJmYWNlKToKKyAgICAgICAgKHJ4OjpJbWFnZTk6OmxvYWREYXRhKToKKyAgICAgICAg
KHJ4OjpJbWFnZTk6OmxvYWRDb21wcmVzc2VkRGF0YSk6CisgICAgICAgIChyeDo6SW1hZ2U5Ojpj
b3B5KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlOS5oOiBBZGRlZC4K
KyAgICAgICAgKHJ4OjpJbWFnZTk6OmlzRGlydHkpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
cmVuZGVyZXIvSW1hZ2VTU0UyLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRS
R0JBVUJ5dGVEYXRhVG9CR1JBU1NFMik6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRBbHBoYURh
dGFUb0JHUkFTU0UyKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVm
ZmVyLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI6OkluZGV4QnVmZmVyKToK
KyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjo6fkluZGV4QnVmZmVyKToKKyAgICAgICAgKHJ4OjpJ
bmRleEJ1ZmZlcjo6Z2V0U2VyaWFsKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjo6dXBkYXRl
U2VyaWFsKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6SW5kZXhCdWZmZXJJ
bnRlcmZhY2UpOgorICAgICAgICAocng6OkluZGV4QnVmZmVySW50ZXJmYWNlOjp+SW5kZXhCdWZm
ZXJJbnRlcmZhY2UpOgorICAgICAgICAocng6OkluZGV4QnVmZmVySW50ZXJmYWNlOjpnZXRJbmRl
eFR5cGUpOgorICAgICAgICAocng6OkluZGV4QnVmZmVySW50ZXJmYWNlOjpnZXRCdWZmZXJTaXpl
KToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6Z2V0U2VyaWFsKToKKyAgICAg
ICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6bWFwQnVmZmVyKToKKyAgICAgICAgKHJ4OjpJ
bmRleEJ1ZmZlckludGVyZmFjZTo6dW5tYXBCdWZmZXIpOgorICAgICAgICAocng6OkluZGV4QnVm
ZmVySW50ZXJmYWNlOjpnZXRJbmRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXJJ
bnRlcmZhY2U6OmdldFdyaXRlUG9zaXRpb24pOgorICAgICAgICAocng6OkluZGV4QnVmZmVySW50
ZXJmYWNlOjpzZXRXcml0ZVBvc2l0aW9uKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlckludGVy
ZmFjZTo6ZGlzY2FyZCk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXJJbnRlcmZhY2U6OnNldEJ1
ZmZlclNpemUpOgorICAgICAgICAocng6OlN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlOjpT
dHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZSk6CisgICAgICAgIChyeDo6U3RyZWFtaW5nSW5k
ZXhCdWZmZXJJbnRlcmZhY2U6On5TdHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZSk6CisgICAg
ICAgIChyeDo6U3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2VydmVCdWZmZXJTcGFj
ZSk6CisgICAgICAgIChyeDo6U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6OlN0YXRpY0luZGV4
QnVmZmVySW50ZXJmYWNlKToKKyAgICAgICAgKHJ4OjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFj
ZTo6flN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlKToKKyAgICAgICAgKHJ4OjpTdGF0aWNJbmRl
eEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2ZUJ1ZmZlclNwYWNlKToKKyAgICAgICAgKHJ4OjpTdGF0
aWNJbmRleEJ1ZmZlckludGVyZmFjZTo6bG9va3VwUmFuZ2UpOgorICAgICAgICAocng6OlN0YXRp
Y0luZGV4QnVmZmVySW50ZXJmYWNlOjphZGRSYW5nZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5oOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpTdGF0aWNJbmRl
eEJ1ZmZlckludGVyZmFjZTo6SW5kZXhSYW5nZTo6b3BlcmF0b3I8KToKKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4
OjpJbmRleEJ1ZmZlcjExOjpJbmRleEJ1ZmZlcjExKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZl
cjExOjp+SW5kZXhCdWZmZXIxMSk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXIxMTo6aW5pdGlh
bGl6ZSk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXIxMTo6bWFrZUluZGV4QnVmZmVyMTEpOgor
ICAgICAgICAocng6OkluZGV4QnVmZmVyMTE6Om1hcEJ1ZmZlcik6CisgICAgICAgIChyeDo6SW5k
ZXhCdWZmZXIxMTo6dW5tYXBCdWZmZXIpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyMTE6Omdl
dEluZGV4VHlwZSk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXIxMTo6Z2V0QnVmZmVyU2l6ZSk6
CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXIxMTo6c2V0U2l6ZSk6CisgICAgICAgIChyeDo6SW5k
ZXhCdWZmZXIxMTo6ZGlzY2FyZCk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXIxMTo6Z2V0SW5k
ZXhGb3JtYXQpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyMTE6OmdldEJ1ZmZlcik6CisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjExLmg6IEFkZGVkLgorICAg
ICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXI5LmNwcDogQWRkZWQuCisg
ICAgICAgIChyeDo6SW5kZXhCdWZmZXI5OjpJbmRleEJ1ZmZlcjkpOgorICAgICAgICAocng6Oklu
ZGV4QnVmZmVyOTo6fkluZGV4QnVmZmVyOSk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI5Ojpp
bml0aWFsaXplKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjk6Om1ha2VJbmRleEJ1ZmZlcjkp
OgorICAgICAgICAocng6OkluZGV4QnVmZmVyOTo6bWFwQnVmZmVyKToKKyAgICAgICAgKHJ4OjpJ
bmRleEJ1ZmZlcjk6OnVubWFwQnVmZmVyKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjk6Omdl
dEluZGV4VHlwZSk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI5OjpnZXRCdWZmZXJTaXplKToK
KyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjk6OnNldFNpemUpOgorICAgICAgICAocng6OkluZGV4
QnVmZmVyOTo6ZGlzY2FyZCk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI5OjpnZXRJbmRleEZv
cm1hdCk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI5OjpnZXRCdWZmZXIpOgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXI5Lmg6IEFkZGVkLgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5jcHA6IEFkZGVkLgorICAg
ICAgICAocng6OkluZGV4RGF0YU1hbmFnZXI6OkluZGV4RGF0YU1hbmFnZXIpOgorICAgICAgICAo
cng6OkluZGV4RGF0YU1hbmFnZXI6On5JbmRleERhdGFNYW5hZ2VyKToKKyAgICAgICAgKHJ4Ojpp
bmRleFR5cGVTaXplKToKKyAgICAgICAgKHJ4Ojpjb252ZXJ0SW5kaWNlcyk6CisgICAgICAgIChy
eDo6Y29tcHV0ZVJhbmdlKToKKyAgICAgICAgKHJ4OjpJbmRleERhdGFNYW5hZ2VyOjpwcmVwYXJl
SW5kZXhEYXRhKToKKyAgICAgICAgKHJ4OjpJbmRleERhdGFNYW5hZ2VyOjpnZXRDb3VudGluZ0lu
ZGljZXMpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0
Q2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpJbnB1dExheW91dENhY2hlOjpJbnB1dExh
eW91dENhY2hlKToKKyAgICAgICAgKHJ4OjpJbnB1dExheW91dENhY2hlOjp+SW5wdXRMYXlvdXRD
YWNoZSk6CisgICAgICAgIChyeDo6SW5wdXRMYXlvdXRDYWNoZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChyeDo6SW5wdXRMYXlvdXRDYWNoZTo6Y2xlYXIpOgorICAgICAgICAocng6OklucHV0TGF5
b3V0Q2FjaGU6OmFwcGx5VmVydGV4QnVmZmVycyk6CisgICAgICAgIChyeDo6SW5wdXRMYXlvdXRD
YWNoZTo6aGFzaElucHV0TGF5b3V0KToKKyAgICAgICAgKHJ4OjpJbnB1dExheW91dENhY2hlOjpj
b21wYXJlSW5wdXRMYXlvdXRzKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lu
cHV0TGF5b3V0Q2FjaGUuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9RdWVyeTExLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6UXVlcnkxMTo6UXVlcnkxMSk6Cisg
ICAgICAgIChyeDo6UXVlcnkxMTo6flF1ZXJ5MTEpOgorICAgICAgICAocng6OlF1ZXJ5MTE6OmJl
Z2luKToKKyAgICAgICAgKHJ4OjpRdWVyeTExOjplbmQpOgorICAgICAgICAocng6OlF1ZXJ5MTE6
OmdldFJlc3VsdCk6CisgICAgICAgIChyeDo6UXVlcnkxMTo6aXNSZXN1bHRBdmFpbGFibGUpOgor
ICAgICAgICAocng6OlF1ZXJ5MTE6OnRlc3RRdWVyeSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9RdWVyeTExLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvUXVlcnk5LmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6UXVlcnk5OjpRdWVyeTkpOgor
ICAgICAgICAocng6OlF1ZXJ5OTo6flF1ZXJ5OSk6CisgICAgICAgIChyeDo6UXVlcnk5OjpiZWdp
bik6CisgICAgICAgIChyeDo6UXVlcnk5OjplbmQpOgorICAgICAgICAocng6OlF1ZXJ5OTo6Z2V0
UmVzdWx0KToKKyAgICAgICAgKHJ4OjpRdWVyeTk6OmlzUmVzdWx0QXZhaWxhYmxlKToKKyAgICAg
ICAgKHJ4OjpRdWVyeTk6OnRlc3RRdWVyeSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9RdWVyeTkuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9R
dWVyeUltcGwuaDogQWRkZWQuCisgICAgICAgIChyeDo6UXVlcnlJbXBsOjpRdWVyeUltcGwpOgor
ICAgICAgICAocng6OlF1ZXJ5SW1wbDo6flF1ZXJ5SW1wbCk6CisgICAgICAgIChyeDo6UXVlcnlJ
bXBsOjpnZXRUeXBlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclN0
YXRlQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpSZW5k
ZXJTdGF0ZUNhY2hlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjp+UmVuZGVyU3Rh
dGVDYWNoZSk6CisgICAgICAgIChyeDo6UmVuZGVyU3RhdGVDYWNoZTo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChyeDo6UmVuZGVyU3RhdGVDYWNoZTo6Y2xlYXIpOgorICAgICAgICAocng6OlJlbmRl
clN0YXRlQ2FjaGU6Omhhc2hCbGVuZFN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNh
Y2hlOjpjb21wYXJlQmxlbmRTdGF0ZXMpOgorICAgICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6
OmdldEJsZW5kU3RhdGUpOgorICAgICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6Omhhc2hSYXN0
ZXJpemVyU3RhdGUpOgorICAgICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6OmNvbXBhcmVSYXN0
ZXJpemVyU3RhdGVzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpnZXRSYXN0ZXJp
emVyU3RhdGUpOgorICAgICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6Omhhc2hEZXB0aFN0ZW5j
aWxTdGF0ZSk6CisgICAgICAgIChyeDo6UmVuZGVyU3RhdGVDYWNoZTo6Y29tcGFyZURlcHRoU3Rl
bmNpbFN0YXRlcyk6CisgICAgICAgIChyeDo6UmVuZGVyU3RhdGVDYWNoZTo6Z2V0RGVwdGhTdGVu
Y2lsU3RhdGUpOgorICAgICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6Omhhc2hTYW1wbGVyU3Rh
dGUpOgorICAgICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6OmNvbXBhcmVTYW1wbGVyU3RhdGVz
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpnZXRTYW1wbGVyU3RhdGUpOgorICAg
ICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyU3RhdGVDYWNoZS5oOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldC5oOiBBZGRlZC4K
KyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQ6OlJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6
UmVuZGVyVGFyZ2V0Ojp+UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQ6
OmdldFdpZHRoKToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQ6OmdldEhlaWdodCk6CisgICAg
ICAgIChyeDo6UmVuZGVyVGFyZ2V0OjpnZXRJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChyeDo6
UmVuZGVyVGFyZ2V0OjpnZXRBY3R1YWxGb3JtYXQpOgorICAgICAgICAocng6OlJlbmRlclRhcmdl
dDo6Z2V0U2FtcGxlcyk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJU
YXJnZXQxMS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OmdldFJUVlN1YnJlc291cmNlSW5kZXgp
OgorICAgICAgICAocng6OmdldERTVlN1YnJlc291cmNlSW5kZXgpOgorICAgICAgICAocng6OlJl
bmRlclRhcmdldDExOjpSZW5kZXJUYXJnZXQxMSk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0
MTE6On5SZW5kZXJUYXJnZXQxMSk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0MTE6Om1ha2VS
ZW5kZXJUYXJnZXQxMSk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0MTE6OmdldFRleHR1cmUp
OgorICAgICAgICAocng6OlJlbmRlclRhcmdldDExOjpnZXRSZW5kZXJUYXJnZXRWaWV3KToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQxMTo6Z2V0RGVwdGhTdGVuY2lsVmlldyk6CisgICAgICAg
IChyeDo6UmVuZGVyVGFyZ2V0MTE6OmdldFNoYWRlclJlc291cmNlVmlldyk6CisgICAgICAgIChy
eDo6UmVuZGVyVGFyZ2V0MTE6OmdldFN1YnJlc291cmNlSW5kZXgpOgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0MTEuaDogQWRkZWQuCisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQ5LmNwcDogQWRkZWQuCisgICAgICAgIChy
eDo6UmVuZGVyVGFyZ2V0OTo6UmVuZGVyVGFyZ2V0OSk6CisgICAgICAgIChyeDo6UmVuZGVyVGFy
Z2V0OTo6flJlbmRlclRhcmdldDkpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDk6Om1ha2VS
ZW5kZXJUYXJnZXQ5KToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQ5OjpnZXRTdXJmYWNlKToK
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDkuaDogQWRkZWQu
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5jcHA6IEFkZGVkLgor
ICAgICAgICAocng6OlJlbmRlcmVyOjpSZW5kZXJlcik6CisgICAgICAgIChyeDo6UmVuZGVyZXI6
On5SZW5kZXJlcik6CisgICAgICAgIChyeDo6UmVuZGVyZXI6OmluaXRpYWxpemVDb21waWxlcik6
CisgICAgICAgIChyeDo6UmVuZGVyZXI6OmNvbXBpbGVUb0JpbmFyeSk6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oOiBBZGRlZC4KKyAgICAgICAgKGdldENvbXBh
cmFibGVPU1ZlcnNpb24pOgorICAgICAgICAocng6OlJlbmRlcmVyOjpnZXRWZXJ0ZXhUZXh0dXJl
U3VwcG9ydCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmNw
cDogQWRkZWQuCisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6UmVuZGVyZXIxMSk6CisgICAgICAg
IChyeDo6UmVuZGVyZXIxMTo6flJlbmRlcmVyMTEpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6
Om1ha2VSZW5kZXJlcjExKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjppbml0aWFsaXplKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjppbml0aWFsaXplRGV2aWNlKToKKyAgICAgICAgKHJ4
OjpSZW5kZXJlcjExOjpnZW5lcmF0ZUNvbmZpZ3MpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6
OmRlbGV0ZUNvbmZpZ3MpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OnN5bmMpOgorICAgICAg
ICAocng6OlJlbmRlcmVyMTE6OmNyZWF0ZVN3YXBDaGFpbik6CisgICAgICAgIChyeDo6UmVuZGVy
ZXIxMTo6c2V0U2FtcGxlclN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpzZXRUZXh0
dXJlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpzZXRSYXN0ZXJpemVyU3RhdGUpOgorICAg
ICAgICAocng6OlJlbmRlcmVyMTE6OnNldEJsZW5kU3RhdGUpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OnNldERlcHRoU3RlbmNpbFN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpz
ZXRTY2lzc29yUmVjdGFuZ2xlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpzZXRWaWV3cG9y
dCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6YXBwbHlQcmltaXRpdmVUeXBlKToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjExOjphcHBseVJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXIxMTo6YXBwbHlWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmFw
cGx5SW5kZXhCdWZmZXIpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmRyYXdBcnJheXMpOgor
ICAgICAgICAocng6OlJlbmRlcmVyMTE6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXIxMTo6ZHJhd0xpbmVMb29wKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpkcmF3VHJp
YW5nbGVGYW4pOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmFwcGx5U2hhZGVycyk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXIxMTo6YXBwbHlVbmlmb3Jtcyk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXIxMTo6Y2xlYXIpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6Om1hc2tlZENsZWFyKToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJlcjExOjptYXJrQWxsU3RhdGVEaXJ0eSk6CisgICAgICAgIChyeDo6
UmVuZGVyZXIxMTo6cmVsZWFzZURldmljZVJlc291cmNlcyk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXIxMTo6bm90aWZ5RGV2aWNlTG9zdCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6aXNEZXZp
Y2VMb3N0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjp0ZXN0RGV2aWNlTG9zdCk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXIxMTo6dGVzdERldmljZVJlc2V0dGFibGUpOgorICAgICAgICAocng6
OlJlbmRlcmVyMTE6OnJlbGVhc2UpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OnJlc2V0RGV2
aWNlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRBZGFwdGVyVmVuZG9yKToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRSZW5kZXJlckRlc2NyaXB0aW9uKToKKyAgICAgICAgKHJ4
OjpSZW5kZXJlcjExOjpnZXRBZGFwdGVySWRlbnRpZmllcik6CisgICAgICAgIChyeDo6UmVuZGVy
ZXIxMTo6Z2V0QkdSQVRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpn
ZXREWFQxVGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldERYVDNU
ZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0RFhUNVRleHR1cmVT
dXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXREZXB0aFRleHR1cmVTdXBwb3J0
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQpOgor
ICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldEZsb2F0MTZUZXh0dXJlU3VwcG9ydCk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0THVtaW5hbmNlVGV4dHVyZVN1cHBvcnQpOgorICAgICAg
ICAocng6OlJlbmRlcmVyMTE6OmdldEx1bWluYW5jZUFscGhhVGV4dHVyZVN1cHBvcnQpOgorICAg
ICAgICAocng6OlJlbmRlcmVyMTE6OmdldFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5U3VwcG9ydCk6
CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0VGV4dHVyZU1heEFuaXNvdHJvcHkpOgorICAg
ICAgICAocng6OlJlbmRlcmVyMTE6OmdldEV2ZW50UXVlcnlTdXBwb3J0KToKKyAgICAgICAgKHJ4
OjpSZW5kZXJlcjExOjpnZXRWaWV3cG9ydEJvdW5kcyk6CisgICAgICAgIChyeDo6UmVuZGVyZXIx
MTo6Z2V0TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOgorICAgICAgICAocng6OlJlbmRlcmVy
MTE6OmdldE1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OmdldFJlc2VydmVkVmVydGV4VW5pZm9ybVZlY3RvcnMpOgorICAgICAgICAocng6OlJl
bmRlcmVyMTE6OmdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycyk6CisgICAgICAgIChy
eDo6UmVuZGVyZXIxMTo6Z2V0TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpOgorICAgICAgICAocng6
OlJlbmRlcmVyMTE6OmdldE1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMpOgorICAgICAgICAocng6
OlJlbmRlcmVyMTE6OmdldE1heFZhcnlpbmdWZWN0b3JzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjExOjpnZXROb25Qb3dlcjJUZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIx
MTo6Z2V0T2NjbHVzaW9uUXVlcnlTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpn
ZXRJbnN0YW5jaW5nU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0U2hhcmVI
YW5kbGVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXREZXJpdmF0aXZlSW5z
dHJ1Y3Rpb25TdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRQb3N0U3ViQnVm
ZmVyU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0TWFqb3JTaGFkZXJNb2Rl
bCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0TWlub3JTaGFkZXJNb2RlbCk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0TWF4UG9pbnRTaXplKToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjExOjpnZXRNYXhWaWV3cG9ydERpbWVuc2lvbik6CisgICAgICAgIChyeDo6UmVuZGVyZXIx
MTo6Z2V0TWF4VGV4dHVyZVdpZHRoKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRNYXhU
ZXh0dXJlSGVpZ2h0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXQzMkJpdEluZGV4U3Vw
cG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0TWluU3dhcEludGVydmFsKToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRNYXhTd2FwSW50ZXJ2YWwpOgorICAgICAgICAocng6
OlJlbmRlcmVyMTE6OmdldE1heFN1cHBvcnRlZFNhbXBsZXMpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OmdldE5lYXJlc3RTdXBwb3J0ZWRTYW1wbGVzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjExOjpnZXRNYXhSZW5kZXJUYXJnZXRzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjb3B5
VG9SZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmNvcHlJbWFnZSk6Cisg
ICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y29weVRleHR1cmUpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OnVuYXBwbHlSZW5kZXJUYXJnZXRzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpz
ZXRPbmVUaW1lUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjcmVhdGVS
ZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmxvYWRFeGVjdXRhYmxlKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjb21waWxlVG9FeGVjdXRhYmxlKToKKyAgICAgICAg
KHJ4OjpSZW5kZXJlcjExOjpjcmVhdGVWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OmNyZWF0ZUluZGV4QnVmZmVyKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjcmVh
dGVCdWZmZXJTdG9yYWdlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjcmVhdGVRdWVyeSk6
CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y3JlYXRlRmVuY2UpOgorICAgICAgICAocng6OlJl
bmRlcmVyMTE6OmdldFJlbmRlclRhcmdldFJlc291cmNlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjExOjpibGl0UmVjdCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6cmVhZFBpeGVscyk6Cisg
ICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjcmVhdGVU
ZXh0dXJlU3RvcmFnZTJEKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjcmVhdGVUZXh0dXJl
U3RvcmFnZUN1YmUpOgorICAgICAgICAocng6OmdldEZhc3RQaXhlbENvcHlTaXplKToKKyAgICAg
ICAgKHJ4OjpyZWFkUGl4ZWxDb2xvcik6CisgICAgICAgIChyeDo6d3JpdGVQaXhlbENvbG9yKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpyZWFkVGV4dHVyZURhdGEpOgorICAgICAgICAocng6
OlJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjExOjpyZXNvbHZlTXVsdGlzYW1wbGVkVGV4dHVyZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIx
MTo6Z2V0TFVJRCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjEx
Lmg6IEFkZGVkLgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldERldmljZSk6CisgICAgICAg
IChyeDo6UmVuZGVyZXIxMTo6Z2V0RGV2aWNlQ29udGV4dCk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXIxMTo6Z2V0RHhnaUZhY3RvcnkpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyZXI5LmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpSZW5kZXJlcjkp
OgorICAgICAgICAocng6OlJlbmRlcmVyOTo6flJlbmRlcmVyOSk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXI5OjptYWtlUmVuZGVyZXI5KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmluaXRpYWxp
emUpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6aW5pdGlhbGl6ZURldmljZSk6CisgICAgICAg
IChyeDo6UmVuZGVyZXI5OjpnZXREZWZhdWx0UHJlc2VudFBhcmFtZXRlcnMpOgorICAgICAgICAo
cng6OlJlbmRlcmVyOTo6Z2VuZXJhdGVDb25maWdzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6
OmRlbGV0ZUNvbmZpZ3MpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6c3RhcnRTY2VuZSk6Cisg
ICAgICAgIChyeDo6UmVuZGVyZXI5OjplbmRTY2VuZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5
OjpzeW5jKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmNyZWF0ZVN3YXBDaGFpbik6CisgICAg
ICAgIChyeDo6UmVuZGVyZXI5OjphbGxvY2F0ZUV2ZW50UXVlcnkpOgorICAgICAgICAocng6OlJl
bmRlcmVyOTo6ZnJlZUV2ZW50UXVlcnkpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Y3JlYXRl
VmVydGV4U2hhZGVyKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmNyZWF0ZVBpeGVsU2hhZGVy
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmNyZWF0ZVZlcnRleEJ1ZmZlcik6CisgICAgICAg
IChyeDo6UmVuZGVyZXI5OjpjcmVhdGVJbmRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6UmVuZGVy
ZXI5OjpjcmVhdGVCdWZmZXJTdG9yYWdlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmNyZWF0
ZVF1ZXJ5KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmNyZWF0ZUZlbmNlKToKKyAgICAgICAg
KHJ4OjpSZW5kZXJlcjk6OnNldFNhbXBsZXJTdGF0ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5
OjpzZXRUZXh0dXJlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OnNldFJhc3Rlcml6ZXJTdGF0
ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpzZXRCbGVuZFN0YXRlKToKKyAgICAgICAgKHJ4
OjpSZW5kZXJlcjk6OnNldERlcHRoU3RlbmNpbFN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjk6OnNldFNjaXNzb3JSZWN0YW5nbGUpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6c2V0Vmll
d3BvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6YXBwbHlQcmltaXRpdmVUeXBlKToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE51bGxDb2xvcmJ1ZmZlcik6CisgICAgICAgIChyeDo6
UmVuZGVyZXI5OjphcHBseVJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojph
cHBseVZlcnRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjphcHBseUluZGV4QnVm
ZmVyKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmRyYXdBcnJheXMpOgorICAgICAgICAocng6
OlJlbmRlcmVyOTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmRyYXdM
aW5lTG9vcCk6CisgICAgICAgIChyeDo6ZHJhd1BvaW50cyk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXI5OjpkcmF3SW5kZXhlZFBvaW50cyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjphcHBseVNo
YWRlcnMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6YXBwbHlVbmlmb3Jtcyk6CisgICAgICAg
IChyeDo6UmVuZGVyZXI5OjphcHBseVVuaWZvcm1uZnYpOgorICAgICAgICAocng6OlJlbmRlcmVy
OTo6YXBwbHlVbmlmb3Jtbml2KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmFwcGx5VW5pZm9y
bW5idik6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpjbGVhcik6CisgICAgICAgIChyeDo6UmVu
ZGVyZXI5OjptYXJrQWxsU3RhdGVEaXJ0eSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpyZWxl
YXNlRGV2aWNlUmVzb3VyY2VzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6Om5vdGlmeURldmlj
ZUxvc3QpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6aXNEZXZpY2VMb3N0KToKKyAgICAgICAg
KHJ4OjpSZW5kZXJlcjk6OnRlc3REZXZpY2VMb3N0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6
OnRlc3REZXZpY2VSZXNldHRhYmxlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OnJlc2V0RGV2
aWNlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldEFkYXB0ZXJWZW5kb3IpOgorICAgICAg
ICAocng6OlJlbmRlcmVyOTo6Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbik6CisgICAgICAgIChyeDo6
UmVuZGVyZXI5OjpnZXRBZGFwdGVySWRlbnRpZmllcik6CisgICAgICAgIChyeDo6UmVuZGVyZXI5
OjpnZXRNdWx0aVNhbXBsZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0QkdS
QVRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldERYVDFUZXh0dXJl
U3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXREWFQzVGV4dHVyZVN1cHBvcnQp
OgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0RFhUNVRleHR1cmVTdXBwb3J0KToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjk6OmdldERlcHRoVGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6
OlJlbmRlcmVyOTo6Z2V0RmxvYXQzMlRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjk6OmdldEZsb2F0MTZUZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5
OjpnZXRMdW1pbmFuY2VUZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpn
ZXRMdW1pbmFuY2VBbHBoYVRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6
OmdldFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5U3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXI5OjpnZXRUZXh0dXJlTWF4QW5pc290cm9weSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpn
ZXRFdmVudFF1ZXJ5U3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNYXhWZXJ0
ZXhUZXh0dXJlSW1hZ2VVbml0cyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNYXhDb21i
aW5lZFRleHR1cmVJbWFnZVVuaXRzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldFJlc2Vy
dmVkVmVydGV4VW5pZm9ybVZlY3RvcnMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0UmVz
ZXJ2ZWRGcmFnbWVudFVuaWZvcm1WZWN0b3JzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6Omdl
dE1heFZlcnRleFVuaWZvcm1WZWN0b3JzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1h
eEZyYWdtZW50VW5pZm9ybVZlY3RvcnMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0TWF4
VmFyeWluZ1ZlY3RvcnMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0Tm9uUG93ZXIyVGV4
dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0T2NjbHVzaW9uUXVlcnlT
dXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldEluc3RhbmNpbmdTdXBwb3J0KToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldFNoYXJlSGFuZGxlU3VwcG9ydCk6CisgICAgICAg
IChyeDo6UmVuZGVyZXI5OjpnZXREZXJpdmF0aXZlSW5zdHJ1Y3Rpb25TdXBwb3J0KToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjk6OmdldFBvc3RTdWJCdWZmZXJTdXBwb3J0KToKKyAgICAgICAgKHJ4
OjpSZW5kZXJlcjk6OmdldE1ham9yU2hhZGVyTW9kZWwpOgorICAgICAgICAocng6OlJlbmRlcmVy
OTo6Z2V0TWF4UG9pbnRTaXplKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1heFZpZXdw
b3J0RGltZW5zaW9uKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1heFRleHR1cmVXaWR0
aCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNYXhUZXh0dXJlSGVpZ2h0KToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjk6OmdldDMyQml0SW5kZXhTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpS
ZW5kZXJlcjk6OmdldENhcHNEZWNsVHlwZXMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0
TWluU3dhcEludGVydmFsKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1heFN3YXBJbnRl
cnZhbCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE5lYXJlc3RTdXBwb3J0ZWRTYW1wbGVzKToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1heFJlbmRlclRhcmdldHMpOgorICAgICAgICAocng6
OlJlbmRlcmVyOTo6Q29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChyeDo6
UmVuZGVyZXI5Ojpjb3B5VG9SZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6
Z2V0QnVmZmVyUG9vbCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpjb3B5SW1hZ2UpOgorICAg
ICAgICAocng6OlJlbmRlcmVyOTo6YmxpdFJlY3QpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6
cmVhZFBpeGVscyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpjcmVhdGVSZW5kZXJUYXJnZXQp
OgorICAgICAgICAocng6OlJlbmRlcmVyOTo6bG9hZEV4ZWN1dGFibGUpOgorICAgICAgICAocng6
OlJlbmRlcmVyOTo6Y29tcGlsZVRvRXhlY3V0YWJsZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5
Ojpib3hGaWx0ZXIpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0VGV4dHVyZVBvb2wpOgor
ICAgICAgICAocng6OlJlbmRlcmVyOTo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAocng6OlJlbmRl
cmVyOTo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Y3JlYXRlVGV4
dHVyZVN0b3JhZ2UyRCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpjcmVhdGVUZXh0dXJlU3Rv
cmFnZUN1YmUpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0TFVJRCk6CisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuaDogQWRkZWQuCisgICAgICAgIChyeDo6
UmVuZGVyZXI5OjpnZXREZXZpY2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIv
U2hhZGVyQ2FjaGUuaDogQWRkZWQuCisgICAgICAgIChyeDo6U2hhZGVyQ2FjaGU6OlNoYWRlckNh
Y2hlKToKKyAgICAgICAgKHJ4OjpTaGFkZXJDYWNoZTo6flNoYWRlckNhY2hlKToKKyAgICAgICAg
KHJ4OjpTaGFkZXJDYWNoZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChyeDo6U2hhZGVyQ2FjaGU6
OmNyZWF0ZSk6CisgICAgICAgIChyeDo6U2hhZGVyQ2FjaGU6OmNsZWFyKToKKyAgICAgICAgKHJ4
OjpTaGFkZXJDYWNoZTo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1NoYWRlckV4ZWN1dGFibGUuaDogQWRkZWQuCisgICAgICAgIChyeDo6U2hhZGVyRXhl
Y3V0YWJsZTo6U2hhZGVyRXhlY3V0YWJsZSk6CisgICAgICAgIChyeDo6U2hhZGVyRXhlY3V0YWJs
ZTo6flNoYWRlckV4ZWN1dGFibGUpOgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGU6Omdl
dEZ1bmN0aW9uKToKKyAgICAgICAgKHJ4OjpTaGFkZXJFeGVjdXRhYmxlOjpnZXRMZW5ndGgpOgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTExLmNwcDog
QWRkZWQuCisgICAgICAgIChyeDo6U2hhZGVyRXhlY3V0YWJsZTExOjpTaGFkZXJFeGVjdXRhYmxl
MTEpOgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGUxMTo6flNoYWRlckV4ZWN1dGFibGUx
MSk6CisgICAgICAgIChyeDo6U2hhZGVyRXhlY3V0YWJsZTExOjptYWtlU2hhZGVyRXhlY3V0YWJs
ZTExKToKKyAgICAgICAgKHJ4OjpTaGFkZXJFeGVjdXRhYmxlMTE6OmdldFZlcnRleFNoYWRlcik6
CisgICAgICAgIChyeDo6U2hhZGVyRXhlY3V0YWJsZTExOjpnZXRQaXhlbFNoYWRlcik6CisgICAg
ICAgIChyeDo6U2hhZGVyRXhlY3V0YWJsZTExOjpnZXRHZW9tZXRyeVNoYWRlcik6CisgICAgICAg
IChyeDo6U2hhZGVyRXhlY3V0YWJsZTExOjpnZXRDb25zdGFudEJ1ZmZlcik6CisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEuaDogQWRkZWQuCisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlOS5jcHA6IEFkZGVk
LgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGU5OjpTaGFkZXJFeGVjdXRhYmxlOSk6Cisg
ICAgICAgIChyeDo6U2hhZGVyRXhlY3V0YWJsZTk6On5TaGFkZXJFeGVjdXRhYmxlOSk6CisgICAg
ICAgIChyeDo6U2hhZGVyRXhlY3V0YWJsZTk6Om1ha2VTaGFkZXJFeGVjdXRhYmxlOSk6CisgICAg
ICAgIChyeDo6U2hhZGVyRXhlY3V0YWJsZTk6OmdldFZlcnRleFNoYWRlcik6CisgICAgICAgIChy
eDo6U2hhZGVyRXhlY3V0YWJsZTk6OmdldFBpeGVsU2hhZGVyKToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGU5Lmg6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluLmg6IEFkZGVkLgorICAgICAgICAocng6OlN3
YXBDaGFpbjo6U3dhcENoYWluKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW46On5Td2FwQ2hhaW4p
OgorICAgICAgICAocng6OlN3YXBDaGFpbjo6Z2V0U2hhcmVIYW5kbGUpOgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluMTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4
OjpTd2FwQ2hhaW4xMTo6U3dhcENoYWluMTEpOgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjp+
U3dhcENoYWluMTEpOgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjpyZWxlYXNlKToKKyAgICAg
ICAgKHJ4OjpTd2FwQ2hhaW4xMTo6cmVsZWFzZU9mZnNjcmVlblRleHR1cmUpOgorICAgICAgICAo
cng6OlN3YXBDaGFpbjExOjpyZXNldE9mZnNjcmVlblRleHR1cmUpOgorICAgICAgICAocng6OlN3
YXBDaGFpbjExOjpyZXNpemUpOgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjpyZXNldCk6Cisg
ICAgICAgIChyeDo6U3dhcENoYWluMTE6OmluaXRQYXNzVGhyb3VnaFJlc291cmNlcyk6CisgICAg
ICAgIChyeDo6U3dhcENoYWluMTE6OnN3YXBSZWN0KToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4x
MTo6Z2V0T2Zmc2NyZWVuVGV4dHVyZSk6CisgICAgICAgIChyeDo6U3dhcENoYWluMTE6OmdldFJl
bmRlclRhcmdldCk6CisgICAgICAgIChyeDo6U3dhcENoYWluMTE6OmdldFJlbmRlclRhcmdldFNo
YWRlclJlc291cmNlKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6Z2V0RGVwdGhTdGVuY2ls
KToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6Z2V0RGVwdGhTdGVuY2lsVGV4dHVyZSk6Cisg
ICAgICAgIChyeDo6U3dhcENoYWluMTE6Om1ha2VTd2FwQ2hhaW4xMSk6CisgICAgICAgIChyeDo6
U3dhcENoYWluMTE6OnJlY3JlYXRlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1N3YXBDaGFpbjExLmg6IEFkZGVkLgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjpnZXRXaWR0
aCk6CisgICAgICAgIChyeDo6U3dhcENoYWluMTE6OmdldEhlaWdodCk6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW45LmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6
U3dhcENoYWluOTo6U3dhcENoYWluOSk6CisgICAgICAgIChyeDo6U3dhcENoYWluOTo6flN3YXBD
aGFpbjkpOgorICAgICAgICAocng6OlN3YXBDaGFpbjk6OnJlbGVhc2UpOgorICAgICAgICAocng6
OmNvbnZlcnRJbnRlcnZhbCk6CisgICAgICAgIChyeDo6U3dhcENoYWluOTo6cmVzaXplKToKKyAg
ICAgICAgKHJ4OjpTd2FwQ2hhaW45OjpyZXNldCk6CisgICAgICAgIChyeDo6U3dhcENoYWluOTo6
c3dhcFJlY3QpOgorICAgICAgICAocng6OlN3YXBDaGFpbjk6OmdldFJlbmRlclRhcmdldCk6Cisg
ICAgICAgIChyeDo6U3dhcENoYWluOTo6Z2V0RGVwdGhTdGVuY2lsKToKKyAgICAgICAgKHJ4OjpT
d2FwQ2hhaW45OjpnZXRPZmZzY3JlZW5UZXh0dXJlKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW45
OjptYWtlU3dhcENoYWluOSk6CisgICAgICAgIChyeDo6U3dhcENoYWluOTo6cmVjcmVhdGUpOgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlLmNwcDogQWRkZWQu
CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OlRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6flRleHR1cmVT
dG9yYWdlSW50ZXJmYWNlKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6
aXNSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlOjpp
c01hbmFnZWQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlOjpnZXRUZXh0
dXJlU2VyaWFsKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6aXNzdWVU
ZXh0dXJlU2VyaWFsKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6Z2V0
TG9kT2Zmc2V0KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6bGV2ZWxD
b3VudCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDo6VGV4dHVyZVN0
b3JhZ2VJbnRlcmZhY2UyRCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2Uy
RDo6flRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9y
YWdlSW50ZXJmYWNlMkQ6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0
b3JhZ2VJbnRlcmZhY2UyRDo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAocng6OlRleHR1cmVT
dG9yYWdlSW50ZXJmYWNlMkQ6OmdldFJlbmRlclRhcmdldFNlcmlhbCk6CisgICAgICAgIChyeDo6
VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlOjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUp
OgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6flRleHR1cmVTdG9y
YWdlSW50ZXJmYWNlQ3ViZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VD
dWJlOjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJm
YWNlQ3ViZTo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlQ3ViZTo6Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKToKKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlLmg6IEFkZGVkLgorICAgICAgICAocng6OlRleHR1
cmVTdG9yYWdlOjpUZXh0dXJlU3RvcmFnZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U6
On5UZXh0dXJlU3RvcmFnZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6
OmdldFN0b3JhZ2VJbnN0YW5jZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9U
ZXh0dXJlU3RvcmFnZTExLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2Ux
MTo6VGV4dHVyZVN0b3JhZ2UxMSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2UxMTo6flRl
eHR1cmVTdG9yYWdlMTEpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6Om1ha2VUZXh0
dXJlU3RvcmFnZTExKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjpHZXRUZXh0dXJl
QmluZEZsYWdzKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjpJc1RleHR1cmVGb3Jt
YXRSZW5kZXJhYmxlKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjpnZXRCaW5kRmxh
Z3MpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6OmdldEJhc2VUZXh0dXJlKToKKyAg
ICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjpnZXRMb2RPZmZzZXQpOgorICAgICAgICAocng6
OlRleHR1cmVTdG9yYWdlMTE6OmlzUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4OjpUZXh0dXJl
U3RvcmFnZTExOjppc01hbmFnZWQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6Omxl
dmVsQ291bnQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6OmdldFN1YnJlc291cmNl
SW5kZXgpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6OnVwZGF0ZVN1YnJlc291cmNl
TGV2ZWwpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6OmdlbmVyYXRlTWlwbWFwTGF5
ZXIpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTFfMkQ6OlRleHR1cmVTdG9yYWdlMTFf
MkQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTFfMkQ6On5UZXh0dXJlU3RvcmFnZTEx
XzJEKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExXzJEOjptYWtlVGV4dHVyZVN0b3Jh
Z2UxMV8yRCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2UxMV8yRDo6Z2V0UmVuZGVyVGFy
Z2V0KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExXzJEOjpnZXRTUlYpOgorICAgICAg
ICAocng6OlRleHR1cmVTdG9yYWdlMTFfMkQ6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKHJ4
OjpUZXh0dXJlU3RvcmFnZTExX0N1YmU6OlRleHR1cmVTdG9yYWdlMTFfQ3ViZSk6CisgICAgICAg
IChyeDo6VGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjp+VGV4dHVyZVN0b3JhZ2UxMV9DdWJlKToKKyAg
ICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExX0N1YmU6Om1ha2VUZXh0dXJlU3RvcmFnZTExX0N1
YmUpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6Z2V0UmVuZGVyVGFyZ2V0
KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmdldFNSVik6CisgICAgICAg
IChyeDo6VGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmg6IEFkZGVkLgorICAgICAg
ICAocng6OlRleHR1cmVTdG9yYWdlMTE6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6
VGV4dHVyZVN0b3JhZ2UxMTo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAqIHNyYy9saWJHTEVT
djIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6VGV4
dHVyZVN0b3JhZ2U5OjpUZXh0dXJlU3RvcmFnZTkpOgorICAgICAgICAocng6OlRleHR1cmVTdG9y
YWdlOTo6flRleHR1cmVTdG9yYWdlOSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5Ojpt
YWtlVGV4dHVyZVN0b3JhZ2U5KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTk6OkdldFRl
eHR1cmVVc2FnZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5OjpJc1RleHR1cmVGb3Jt
YXRSZW5kZXJhYmxlKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTk6OmlzUmVuZGVyVGFy
Z2V0KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTk6OmlzTWFuYWdlZCk6CisgICAgICAg
IChyeDo6VGV4dHVyZVN0b3JhZ2U5OjpnZXRQb29sKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3Rv
cmFnZTk6OmdldFVzYWdlKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTk6OmdldExvZE9m
ZnNldCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5OjpsZXZlbENvdW50KToKKyAgICAg
ICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTlfMkQ6OlRleHR1cmVTdG9yYWdlOV8yRCk6CisgICAgICAg
IChyeDo6VGV4dHVyZVN0b3JhZ2U5XzJEOjp+VGV4dHVyZVN0b3JhZ2U5XzJEKToKKyAgICAgICAg
KHJ4OjpUZXh0dXJlU3RvcmFnZTlfMkQ6Om1ha2VUZXh0dXJlU3RvcmFnZTlfMkQpOgorICAgICAg
ICAocng6OlRleHR1cmVTdG9yYWdlOV8yRDo6Z2V0U3VyZmFjZUxldmVsKToKKyAgICAgICAgKHJ4
OjpUZXh0dXJlU3RvcmFnZTlfMkQ6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6VGV4
dHVyZVN0b3JhZ2U5XzJEOjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0
b3JhZ2U5XzJEOjpnZXRCYXNlVGV4dHVyZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5
XzJEOjppbml0aWFsaXplUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFn
ZTlfQ3ViZTo6VGV4dHVyZVN0b3JhZ2U5X0N1YmUpOgorICAgICAgICAocng6OlRleHR1cmVTdG9y
YWdlOV9DdWJlOjp+VGV4dHVyZVN0b3JhZ2U5X0N1YmUpOgorICAgICAgICAocng6OlRleHR1cmVT
dG9yYWdlOV9DdWJlOjptYWtlVGV4dHVyZVN0b3JhZ2U5X0N1YmUpOgorICAgICAgICAocng6OlRl
eHR1cmVTdG9yYWdlOV9DdWJlOjpnZXRDdWJlTWFwU3VyZmFjZSk6CisgICAgICAgIChyeDo6VGV4
dHVyZVN0b3JhZ2U5X0N1YmU6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6VGV4dHVy
ZVN0b3JhZ2U5X0N1YmU6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3Rv
cmFnZTlfQ3ViZTo6Z2V0QmFzZVRleHR1cmUpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdl
OV9DdWJlOjppbml0aWFsaXplUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlOS5oOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpUZXh0dXJl
U3RvcmFnZTk6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5
OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0
ZXhCdWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI6OlZlcnRleEJ1
ZmZlcik6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOjp+VmVydGV4QnVmZmVyKToKKyAgICAg
ICAgKHJ4OjpWZXJ0ZXhCdWZmZXI6OnVwZGF0ZVNlcmlhbCk6CisgICAgICAgIChyeDo6VmVydGV4
QnVmZmVyOjpnZXRTZXJpYWwpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6
VmVydGV4QnVmZmVySW50ZXJmYWNlKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2U6On5WZXJ0ZXhCdWZmZXJJbnRlcmZhY2UpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcklu
dGVyZmFjZTo6Z2V0U2VyaWFsKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6
OmdldEJ1ZmZlclNpemUpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6c2V0
QnVmZmVyU2l6ZSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVySW50ZXJmYWNlOjpnZXRXcml0
ZVBvc2l0aW9uKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnNldFdyaXRl
UG9zaXRpb24pOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6ZGlzY2FyZCk6
CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVySW50ZXJmYWNlOjpzdG9yZVZlcnRleEF0dHJpYnV0
ZXMpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVSYXdEYXRhKToK
KyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2VydmVWZXJ0ZXhTcGFjZSk6
CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZlUmF3RGF0YVNwYWNl
KToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OmdldFZlcnRleEJ1ZmZlcik6
CisgICAgICAgIChyeDo6U3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlOjpTdHJlYW1pbmdW
ZXJ0ZXhCdWZmZXJJbnRlcmZhY2UpOgorICAgICAgICAocng6OlN0cmVhbWluZ1ZlcnRleEJ1ZmZl
ckludGVyZmFjZTo6flN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZSk6CisgICAgICAgIChy
eDo6U3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZlU3BhY2UpOgorICAgICAg
ICAocng6OlN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6U3RhdGljVmVydGV4QnVmZmVySW50
ZXJmYWNlKToKKyAgICAgICAgKHJ4OjpTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6On5TdGF0
aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UpOgorICAgICAgICAocng6OlN0YXRpY1ZlcnRleEJ1ZmZl
ckludGVyZmFjZTo6bG9va3VwQXR0cmlidXRlKToKKyAgICAgICAgKHJ4OjpTdGF0aWNWZXJ0ZXhC
dWZmZXJJbnRlcmZhY2U6OnJlc2VydmVTcGFjZSk6CisgICAgICAgIChyeDo6U3RhdGljVmVydGV4
QnVmZmVySW50ZXJmYWNlOjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4
OjpWZXJ0ZXhCdWZmZXIxMTo6VmVydGV4QnVmZmVyMTEpOgorICAgICAgICAocng6OlZlcnRleEJ1
ZmZlcjExOjp+VmVydGV4QnVmZmVyMTEpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjExOjpp
bml0aWFsaXplKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6bWFrZVZlcnRleEJ1ZmZl
cjExKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVz
KToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6c3RvcmVSYXdEYXRhKToKKyAgICAgICAg
KHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6Z2V0U3BhY2VSZXF1aXJlZCk6CisgICAgICAgIChyeDo6VmVy
dGV4QnVmZmVyMTE6OnJlcXVpcmVzQ29udmVyc2lvbik6CisgICAgICAgIChyeDo6VmVydGV4QnVm
ZmVyMTE6OmdldEJ1ZmZlclNpemUpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjExOjpzZXRC
dWZmZXJTaXplKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6ZGlzY2FyZCk6CisgICAg
ICAgIChyeDo6VmVydGV4QnVmZmVyMTE6OmdldFZlcnRleFNpemUpOgorICAgICAgICAocng6OlZl
cnRleEJ1ZmZlcjExOjpnZXREWEdJRm9ybWF0KToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIx
MTo6Z2V0QnVmZmVyKToKKyAgICAgICAgKHJ4Ojpjb3B5VmVydGV4RGF0YSk6CisgICAgICAgIChy
eDo6Y29weUZpeGVkVmVydGV4RGF0YSk6CisgICAgICAgIChyeDo6Y29weVRvRmxvYXRWZXJ0ZXhE
YXRhKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6Z2V0VmVydGV4Q29udmVyc2lvbik6
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5OjpWZXJ0ZXhCdWZmZXI5KToKKyAgICAg
ICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5Ojp+VmVydGV4QnVmZmVyOSk6CisgICAgICAgIChyeDo6VmVy
dGV4QnVmZmVyOTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6bWFr
ZVZlcnRleEJ1ZmZlcjkpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6OnN0b3JlVmVydGV4
QXR0cmlidXRlcyk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6c3RvcmVSYXdEYXRhKToK
KyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5OjpnZXRTcGFjZVJlcXVpcmVkKToKKyAgICAgICAg
KHJ4OjpWZXJ0ZXhCdWZmZXI5OjpyZXF1aXJlc0NvbnZlcnNpb24pOgorICAgICAgICAocng6OlZl
cnRleEJ1ZmZlcjk6OmdldFZlcnRleFNpemUpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6
OmdldERlY2xUeXBlKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5OjpnZXRCdWZmZXJTaXpl
KToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5OjpzZXRCdWZmZXJTaXplKToKKyAgICAgICAg
KHJ4OjpWZXJ0ZXhCdWZmZXI5OjpkaXNjYXJkKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5
OjpnZXRCdWZmZXIpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6OmluaXRpYWxpemVUcmFu
c2xhdGlvbnMpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6OnR5cGVJbmRleCk6CisgICAg
ICAgIChyeDo6VmVydGV4QnVmZmVyOTo6Zm9ybWF0Q29udmVydGVyKToKKyAgICAgICAgKHJ4OjpW
ZXJ0ZXhCdWZmZXI5OjpzcGFjZVJlcXVpcmVkKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1ZlcnRleEJ1ZmZlcjkuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAocng6OmVsZW1l
bnRzSW5CdWZmZXIpOgorICAgICAgICAocng6OlZlcnRleERhdGFNYW5hZ2VyOjpWZXJ0ZXhEYXRh
TWFuYWdlcik6CisgICAgICAgIChyeDo6VmVydGV4RGF0YU1hbmFnZXI6On5WZXJ0ZXhEYXRhTWFu
YWdlcik6CisgICAgICAgIChyeDo6ZGlyZWN0U3RvcmFnZVBvc3NpYmxlKToKKyAgICAgICAgKHJ4
OjpWZXJ0ZXhEYXRhTWFuYWdlcjo6cHJlcGFyZVZlcnRleERhdGEpOgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmNwcDogQWRkZWQu
CisgICAgICAgIChyeDo6VmVydGV4RGVjbGFyYXRpb25DYWNoZTo6VmVydGV4RGVjbGFyYXRpb25D
YWNoZSk6CisgICAgICAgIChyeDo6VmVydGV4RGVjbGFyYXRpb25DYWNoZTo6flZlcnRleERlY2xh
cmF0aW9uQ2FjaGUpOgorICAgICAgICAocng6OlZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OmFwcGx5
RGVjbGFyYXRpb24pOgorICAgICAgICAocng6OlZlcnRleERlY2xhcmF0aW9uQ2FjaGU6Om1hcmtT
dGF0ZURpcnR5KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERlY2xh
cmF0aW9uQ2FjaGUuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9n
ZW5lcmF0ZW1pcC5oOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpMODo6YXZlcmFnZSk6CisgICAgICAg
IChyeDo6QThMODo6YXZlcmFnZSk6CisgICAgICAgIChyeDo6QThSOEc4Qjg6OmF2ZXJhZ2UpOgor
ICAgICAgICAocng6OkExNkIxNkcxNlIxNkY6OmF2ZXJhZ2UpOgorICAgICAgICAocng6OlIxNkY6
OmF2ZXJhZ2UpOgorICAgICAgICAocng6OlIxNkcxNkY6OmF2ZXJhZ2UpOgorICAgICAgICAocng6
OkEzMkIzMkczMlIzMkY6OmF2ZXJhZ2UpOgorICAgICAgICAocng6OlIzMkY6OmF2ZXJhZ2UpOgor
ICAgICAgICAocng6OlIzMkczMkY6OmF2ZXJhZ2UpOgorICAgICAgICAocng6OlIzMkczMkIzMkY6
OmF2ZXJhZ2UpOgorICAgICAgICAocng6OkdlbmVyYXRlTWlwKToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKGds
X2QzZDExOjpDb252ZXJ0QmxlbmRGdW5jKToKKyAgICAgICAgKGdsX2QzZDExOjpDb252ZXJ0Qmxl
bmRPcCk6CisgICAgICAgIChnbF9kM2QxMTo6Q29udmVydENvbG9yTWFzayk6CisgICAgICAgIChn
bF9kM2QxMTo6Q29udmVydEN1bGxNb2RlKToKKyAgICAgICAgKGdsX2QzZDExOjpDb252ZXJ0Q29t
cGFyaXNvbik6CisgICAgICAgIChnbF9kM2QxMTo6Q29udmVydERlcHRoTWFzayk6CisgICAgICAg
IChnbF9kM2QxMTo6Q29udmVydFN0ZW5jaWxNYXNrKToKKyAgICAgICAgKGdsX2QzZDExOjpDb252
ZXJ0U3RlbmNpbE9wKToKKyAgICAgICAgKGdsX2QzZDExOjpDb252ZXJ0RmlsdGVyKToKKyAgICAg
ICAgKGdsX2QzZDExOjpDb252ZXJ0VGV4dHVyZVdyYXApOgorICAgICAgICAoZ2xfZDNkMTE6OkNv
bnZlcnRNaW5MT0QpOgorICAgICAgICAoZ2xfZDNkMTE6OkNvbnZlcnRNYXhMT0QpOgorICAgICAg
ICAoZDNkMTFfZ2w6OkNvbnZlcnRCYWNrQnVmZmVyRm9ybWF0KToKKyAgICAgICAgKGQzZDExX2ds
OjpDb252ZXJ0RGVwdGhTdGVuY2lsRm9ybWF0KToKKyAgICAgICAgKGQzZDExX2dsOjpDb252ZXJ0
UmVuZGVyYnVmZmVyRm9ybWF0KToKKyAgICAgICAgKGQzZDExX2dsOjpDb252ZXJ0VGV4dHVyZUlu
dGVybmFsRm9ybWF0KToKKyAgICAgICAgKGdsX2QzZDExOjpDb252ZXJ0UmVuZGVyYnVmZmVyRm9y
bWF0KToKKyAgICAgICAgKGdsX2QzZDExOjpDb252ZXJ0VGV4dHVyZUZvcm1hdCk6CisgICAgICAg
IChkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCk6CisgICAgICAgIChkM2QxMTo6U2V0
UG9zaXRpb25EZXB0aENvbG9yVmVydGV4KToKKyAgICAgICAgKGQzZDExOjpDb21wdXRlUGl4ZWxT
aXplQml0cyk6CisgICAgICAgIChkM2QxMTo6Q29tcHV0ZUJsb2NrU2l6ZUJpdHMpOgorICAgICAg
ICAoZDNkMTE6OklzQ29tcHJlc3NlZCk6CisgICAgICAgIChkM2QxMTo6R2V0VGV4dHVyZUZvcm1h
dERpbWVuc2lvbkFsaWdubWVudCk6CisgICAgICAgIChkM2QxMTo6SXNEZXB0aFN0ZW5jaWxGb3Jt
YXQpOgorICAgICAgICAoZDNkMTE6OkdldERlcHRoVGV4dHVyZUZvcm1hdCk6CisgICAgICAgIChk
M2QxMTo6R2V0RGVwdGhTaGFkZXJSZXNvdXJjZUZvcm1hdCk6CisgICAgICAgIChkM2QxMTo6U2V0
RGVidWdOYW1lKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFf
dXRpbHMuaDogQWRkZWQuCisgICAgICAgIChkM2QxMTo6aXNEZXZpY2VMb3N0RXJyb3IpOgorICAg
ICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmNwcDogQWRkZWQu
CisgICAgICAgIChnbF9kM2Q5OjpDb252ZXJ0Q29tcGFyaXNvbik6CisgICAgICAgIChnbF9kM2Q5
OjpDb252ZXJ0Q29sb3IpOgorICAgICAgICAoZ2xfZDNkOTo6Q29udmVydEJsZW5kRnVuYyk6Cisg
ICAgICAgIChnbF9kM2Q5OjpDb252ZXJ0QmxlbmRPcCk6CisgICAgICAgIChnbF9kM2Q5OjpDb252
ZXJ0U3RlbmNpbE9wKToKKyAgICAgICAgKGdsX2QzZDk6OkNvbnZlcnRUZXh0dXJlV3JhcCk6Cisg
ICAgICAgIChnbF9kM2Q5OjpDb252ZXJ0Q3VsbE1vZGUpOgorICAgICAgICAoZ2xfZDNkOTo6Q29u
dmVydEN1YmVGYWNlKToKKyAgICAgICAgKGdsX2QzZDk6OkNvbnZlcnRDb2xvck1hc2spOgorICAg
ICAgICAoZ2xfZDNkOTo6Q29udmVydE1hZ0ZpbHRlcik6CisgICAgICAgIChnbF9kM2Q5OjpDb252
ZXJ0TWluRmlsdGVyKToKKyAgICAgICAgKGdsX2QzZDk6OkNvbnZlcnRSZW5kZXJidWZmZXJGb3Jt
YXQpOgorICAgICAgICAoZ2xfZDNkOTo6R2V0TXVsdGlzYW1wbGVUeXBlRnJvbVNhbXBsZXMpOgor
ICAgICAgICAoZDNkOV9nbDo6R2V0U3RlbmNpbFNpemUpOgorICAgICAgICAoZDNkOV9nbDo6R2V0
QWxwaGFTaXplKToKKyAgICAgICAgKGQzZDlfZ2w6OkdldFNhbXBsZXNGcm9tTXVsdGlzYW1wbGVU
eXBlKToKKyAgICAgICAgKGQzZDlfZ2w6OklzRm9ybWF0Q2hhbm5lbEVxdWl2YWxlbnQpOgorICAg
ICAgICAoZDNkOV9nbDo6Q29udmVydEJhY2tCdWZmZXJGb3JtYXQpOgorICAgICAgICAoZDNkOV9n
bDo6Q29udmVydERlcHRoU3RlbmNpbEZvcm1hdCk6CisgICAgICAgIChkM2Q5X2dsOjpDb252ZXJ0
UmVuZGVyVGFyZ2V0Rm9ybWF0KToKKyAgICAgICAgKGQzZDlfZ2w6OkdldEVxdWl2YWxlbnRGb3Jt
YXQpOgorICAgICAgICAoZDNkOTo6SXNDb21wcmVzc2VkRm9ybWF0KToKKyAgICAgICAgKGQzZDk6
OkNvbXB1dGVSb3dTaXplKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRl
cmVyOV91dGlscy5oOiBBZGRlZC4KKyAgICAgICAgKGQzZDk6OmlzRGV2aWNlTG9zdEVycm9yKToK
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnM6IEFkZGVkLgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9CbGl0LnBzOiBBZGRlZC4KKyAgICAg
ICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvQmxpdC52czogQWRkZWQuCisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL0NsZWFyMTEuaGxzbDogQWRkZWQu
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL1Bhc3N0aHJvdWdoMTEu
aGxzbDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2Nv
bXBpbGVkOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMv
Y29tcGlsZWQvY2xlYXIxMXZzLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvc2hhZGVycy9jb21waWxlZC9jbGVhcm11bHRpcGxlMTFwcy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW5nbGUx
MXBzLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9j
b21waWxlZC9jb21wb25lbnRtYXNrcHMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2ZsaXB5dnMuaDogQWRkZWQuCisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2x1bWluYW5jZXBzLmg6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9w
YXNzdGhyb3VnaDExdnMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVtMTFwcy5oOiBBZGRlZC4KKyAgICAgICAg
KiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1h
bHBoYTExcHMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFk
ZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocHMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMTFwcy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFz
c3Rocm91Z2hyZ2JhMTFwcy5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvc3RhbmRhcmR2cy5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5iYXQ6IEFkZGVkLgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvdmVydGV4Y29udmVyc2lvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKHJ4OjpJZGVudGl0eTo6Y29udmVydCk6CisgICAgICAgIChyeDo6Q2FzdDo6
Y29udmVydCk6CisgICAgICAgIChyeDo6Tm9ybWFsaXplOjpjb252ZXJ0KToKKyAgICAgICAgKHJ4
OjpGaXhlZFRvRmxvYXQ6OmNvbnZlcnQpOgorICAgICAgICAocng6OlNpbXBsZURlZmF1bHRWYWx1
ZXM6Onplcm8pOgorICAgICAgICAocng6OlNpbXBsZURlZmF1bHRWYWx1ZXM6Om9uZSk6CisgICAg
ICAgIChyeDo6Tm9ybWFsaXplZERlZmF1bHRWYWx1ZXM6Onplcm8pOgorICAgICAgICAocng6Ok5v
cm1hbGl6ZWREZWZhdWx0VmFsdWVzOjpvbmUpOgorICAgICAgICAocng6OlZlcnRleERhdGFDb252
ZXJ0ZXI6OmNvbnZlcnRBcnJheSk6CisgICAgICAgIChyeDo6VmVydGV4RGF0YUNvbnZlcnRlcjo6
cG9pbnRlckFkZEJ5dGVzKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhEYXRhQ29udmVydGVyOjpjb3B5
Q29tcG9uZW50KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3Jlc291cmNlLmg6IEFkZGVkLgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvdXRpbGl0aWVzLmNwcDogQWRkZWQuCisgICAgICAgIChn
bDo6VW5pZm9ybUNvbXBvbmVudENvdW50KToKKyAgICAgICAgKGdsOjpVbmlmb3JtQ29tcG9uZW50
VHlwZSk6CisgICAgICAgIChnbDo6VW5pZm9ybUNvbXBvbmVudFNpemUpOgorICAgICAgICAoZ2w6
OlVuaWZvcm1JbnRlcm5hbFNpemUpOgorICAgICAgICAoZ2w6OlVuaWZvcm1FeHRlcm5hbFNpemUp
OgorICAgICAgICAoZ2w6OlZhcmlhYmxlUm93Q291bnQpOgorICAgICAgICAoZ2w6OlZhcmlhYmxl
Q29sdW1uQ291bnQpOgorICAgICAgICAoZ2w6OkFsbG9jYXRlRmlyc3RGcmVlQml0cyk6CisgICAg
ICAgIChnbDo6Q29tcHV0ZVBpdGNoKToKKyAgICAgICAgKGdsOjpDb21wdXRlQ29tcHJlc3NlZFBp
dGNoKToKKyAgICAgICAgKGdsOjpDb21wdXRlQ29tcHJlc3NlZFNpemUpOgorICAgICAgICAoZ2w6
OklzQ29tcHJlc3NlZCk6CisgICAgICAgIChnbDo6SXNEZXB0aFRleHR1cmUpOgorICAgICAgICAo
Z2w6OklzU3RlbmNpbFRleHR1cmUpOgorICAgICAgICAoZ2w6Ok1ha2VWYWxpZFNpemUpOgorICAg
ICAgICAoZ2w6OkNvbXB1dGVQaXhlbFNpemUpOgorICAgICAgICAoZ2w6OklzQ3ViZW1hcFRleHR1
cmVUYXJnZXQpOgorICAgICAgICAoZ2w6OklzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KToKKyAgICAg
ICAgKGdsOjpDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChnbDo6RXh0cmFj
dEZvcm1hdCk6CisgICAgICAgIChnbDo6RXh0cmFjdFR5cGUpOgorICAgICAgICAoZ2w6OklzQ29s
b3JSZW5kZXJhYmxlKToKKyAgICAgICAgKGdsOjpJc0RlcHRoUmVuZGVyYWJsZSk6CisgICAgICAg
IChnbDo6SXNTdGVuY2lsUmVuZGVyYWJsZSk6CisgICAgICAgIChnbDo6SXNGbG9hdDMyRm9ybWF0
KToKKyAgICAgICAgKGdsOjpJc0Zsb2F0MTZGb3JtYXQpOgorICAgICAgICAoZ2w6OkdldEFscGhh
U2l6ZSk6CisgICAgICAgIChnbDo6R2V0UmVkU2l6ZSk6CisgICAgICAgIChnbDo6R2V0R3JlZW5T
aXplKToKKyAgICAgICAgKGdsOjpHZXRCbHVlU2l6ZSk6CisgICAgICAgIChnbDo6R2V0RGVwdGhT
aXplKToKKyAgICAgICAgKGdsOjpHZXRTdGVuY2lsU2l6ZSk6CisgICAgICAgIChnbDo6SXNUcmlh
bmdsZU1vZGUpOgorICAgICAgICAoZ2V0VGVtcFBhdGgpOgorICAgICAgICAod3JpdGVGaWxlKToK
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3V0aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBz
cmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaDogQWRkZWQuCisgICAgICAgICogc3JjL3RoaXJkX3Bh
cnR5L211cm11cmhhc2gvTElDRU5TRTogQWRkZWQuCisgICAgICAgICogc3JjL3RoaXJkX3BhcnR5
L211cm11cmhhc2gvTXVybXVySGFzaDMuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJvdGwzMik6Cisg
ICAgICAgIChyb3RsNjQpOgorICAgICAgICAoZ2V0YmxvY2spOgorICAgICAgICAoZm1peCk6Cisg
ICAgICAgIChNdXJtdXJIYXNoM194ODZfMzIpOgorICAgICAgICAoTXVybXVySGFzaDNfeDg2XzEy
OCk6CisgICAgICAgIChNdXJtdXJIYXNoM194NjRfMTI4KToKKyAgICAgICAgKiBzcmMvdGhpcmRf
cGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5oOiBBZGRlZC4KKwogMjAxMy0wNy0yMCAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlZCBBTkdMRSBpcyBs
ZWFraW5nIGxpa2UgYSBzaWV2ZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUu
cGxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUucGxpc3QJ
KHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw5ICsxMCw5IEBACiAJCTxrZXk+T3BlblNvdXJjZVdlYnNp
dGVVUkw8L2tleT4KIAkJPHN0cmluZz5odHRwOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9q
ZWN0Lzwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VTQ008L2tleT4KLQkJPHN0cmluZz5zdm4g
Y28gLXIxNjQxIGh0dHA6Ly9hbmdsZXByb2plY3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLzwv
c3RyaW5nPgorCQk8c3RyaW5nPmdpdCBjbG9uZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Fu
Z2xlcHJvamVjdC8gJiYgY2QgYW5nbGVwcm9qZWN0ICYmIGdpdCBjaGVja291dCAwNDczNzNhYTNl
YjQwOGJlNjJiZTUyYWRlODQwZmE1ZjExZTcyMzM3PC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJj
ZUltcG9ydERhdGU8L2tleT4KLQkJPHN0cmluZz4yMDEzLTAxLTA0PC9zdHJpbmc+CisJCTxzdHJp
bmc+MjAxMy0wNy0yMjwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VMaWNlbnNlPC9rZXk+CiAJ
CTxzdHJpbmc+QlNEPC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJjZUxpY2Vuc2VGaWxlPC9rZXk+
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BVVRIT1JTCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FVVEhPUlMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9BVVRIT1JTCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisjIFRo
aXMgaXMgdGhlIG9mZmljaWFsIGxpc3Qgb2YgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycworIyBm
b3IgY29weXJpZ2h0IHB1cnBvc2VzLgorIyBUaGlzIGZpbGUgaXMgZGlzdGluY3QgZnJvbSB0aGUg
Q09OVFJJQlVUT1JTIGZpbGVzLgorIyBTZWUgdGhlIGxhdHRlciBmb3IgYW4gZXhwbGFuYXRpb24u
CisKKyMgTmFtZXMgc2hvdWxkIGJlIGFkZGVkIHRvIHRoaXMgZmlsZSBhcworIwlOYW1lIG9yIE9y
Z2FuaXphdGlvbgorIyBFbWFpbCBhZGRyZXNzZXMgZm9yIGluZGl2aWR1YWxzIGFyZSB0cmFja2Vk
IGVsc2V3aGVyZSB0byBhdm9pZCBzcGFtLgorCitHb29nbGUgSW5jLgorVHJhbnNHYW1pbmcgSW5j
LgorM0RMYWJzIEluYy4gTHRkLgorCitBZG9iZSBTeXN0ZW1zIEluYy4KK0F1dG9kZXNrLCBJbmMu
CitDbG91ZCBQYXJ0eSwgSW5jLgorSW50ZWwgQ29ycG9yYXRpb24KK01vemlsbGEgQ29ycG9yYXRp
b24KK1R1cmJ1bGVuegorS2xhcsOkbHZkYWxlbnMgRGF0YWtvbnN1bHQgQUIKKworSmFjZWsgQ2Fi
YW4KK01hcmsgQ2FsbG93CitHaW5uIENoZW4KK0phbWVzIEhhdXh3ZWxsCitTYW0gSG9jZXZhcgor
UGllcnJlIExldmVpbGxlCitKb25hdGhhbiBMaXUKK0JveWluZyBMdQorQWl0b3IgTW9yZW5vCitZ
dXJpIE8nRG9ubmVsbAorSm9zaCBTb3JlZgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
Q09OVFJJQlVUT1JTCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NPTlRS
SUJVVE9SUwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NPTlRSSUJV
VE9SUwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAorIyBUaGlzIGlzIHRoZSBvZmZpY2lh
bCBsaXN0IG9mIHBlb3BsZSB3aG8gY2FuIGNvbnRyaWJ1dGUNCisjIChhbmQgd2hvIGhhdmUgY29u
dHJpYnV0ZWQpIGNvZGUgdG8gdGhlIEFOR0xFIHByb2plY3QNCisjIHJlcG9zaXRvcnkuDQorIyBU
aGUgQVVUSE9SUyBmaWxlIGxpc3RzIHRoZSBjb3B5cmlnaHQgaG9sZGVyczsgdGhpcyBmaWxlDQor
IyBsaXN0cyBwZW9wbGUuICBGb3IgZXhhbXBsZSwgR29vZ2xlIGVtcGxveWVlcyBhcmUgbGlzdGVk
IGhlcmUNCisjIGJ1dCBub3QgaW4gQVVUSE9SUywgYmVjYXVzZSBHb29nbGUgaG9sZHMgdGhlIGNv
cHlyaWdodC4NCisjDQorDQorVHJhbnNHYW1pbmcgSW5jLg0KKyBOaWNvbGFzIENhcGVucw0KKyBE
YW5pZWwgS29jaA0KKyBHZW9mZiBMYW5nDQorIEFuZHJldyBMZXd5Y2t5DQorIEphbWllIE1hZGls
bA0KKyBHYXZyaWVsIFN0YXRlDQorIFNoYW5ub24gV29vZHMNCisNCitHb29nbGUgSW5jLg0KKyBC
cmVudCBBdXN0aW4NCisgTWljaGFlbCBCYWkNCisgSm9obiBCYXVtYW4NCisgUGV0ZXIgQmV2ZXJs
b28NCisgU3RldmUgQmxvY2sNCisgUmFjaGVsIEJsdW0NCisgRXJpYyBCb3Jlbg0KKyBIZW5yeSBC
cmlkZ2UNCisgTmF0IER1Y2ENCisgUGV0ZXIgS2FzdGluZw0KKyBWYW5nZWxpcyBLb2trZXZpcw0K
KyBaaGVueWFvIE1vDQorIERhbmllbCBOaWNvYXJhDQorIEFsYXN0YWlyIFBhdHJpY2sNCisgQWxv
ayBQcml5YWRhcnNoaQ0KKyBLZW5uZXRoIFJ1c3NlbGwNCisgQnJpYW4gU2Fsb21vbg0KKyBHcmVn
ZyBUYXZhcmVzDQorIEplZmYgVGltYW51cw0KKyBCZW4gVmFuaWsNCisgQWRyaWVubmUgV2Fsa2Vy
DQorIHRoZXN0aWdAY2hyb21pdW0ub3JnDQorIEp1c3RpbiBTY2h1aA0KKw0KK0Fkb2JlIFN5c3Rl
bXMgSW5jLg0KKyBBbGV4YW5kcnUgQ2hpY3VsaXRhDQorIFN0ZXZlIE1pbm5zDQorIE1heCBWdWpv
dmljDQorDQorQXV0b2Rlc2ssIEluYy4NCisgUmFuZ2VyIEhhcmtlDQorDQorQ2xvdWQgUGFydHks
IEluYy4NCisgQ29ub3IgRGlja2luc29uDQorDQorSW50ZWwgQ29ycG9yYXRpb24NCisgSmluIFlh
bmcNCisgQW5keSBDaGVuDQorIEpvc2ggVHJpcGxldHQNCisNCitLbGFyw6RsdmRhbGVucyBEYXRh
a29uc3VsdCBBQg0KKyBNaWxpYW4gV29sZmYNCisNCitNb3ppbGxhIENvcnAuDQorIEVoc2FuIEFr
aGdhcmkNCisgSmVmZiBHaWxiZXJ0DQorIE1pa2UgSG9tbWV5DQorIEJlbm9pdCBKYWNvYg0KKyBN
YWtvdG8gS2F0bw0KKyBWbGFkaW1pciBWdWtpY2V2aWMNCisNCitUdXJidWxlbnoNCisgTWljaGFl
bCBCcmFpdGh3YWl0ZQ0KKw0KK1VscmlrIFBlcnNzb24gKGRkZWZyb3N0dCkNCitNYXJrIEJhbm5l
ciAoc3RhbmRhcmQ4bWJwKQ0KK0RhdmlkIEtpbHplcg0KKw0KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL0RFUFMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvREVQ
UwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0RFUFMJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTggQEAKK2RlcHMgPSB7CisgICJ0cnVuay90aGlyZF9wYXJ0eS9neXAi
OgorICAgICAgImh0dHA6Ly9neXAuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rQDE1NjQiLAorCisg
ICJ0cnVuay90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0IjoKKyAgICAgICJodHRwOi8vZ29vZ2xldGVz
dC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmtANTczIiwgI3JlbGVhc2UgMS42LjAKKworICAidHJ1
bmsvdGhpcmRfcGFydHkvZ29vZ2xlbW9jayI6CisgICAgICAiaHR0cDovL2dvb2dsZW1vY2suZ29v
Z2xlY29kZS5jb20vc3ZuL3RydW5rQDM4NyIsICNyZWxlYXNlIDEuNi4wCit9CisKK2hvb2tzID0g
WworICB7CisgICAgIyBBIGNoYW5nZSB0byBhIC5neXAsIC5neXBpLCBvciB0byBHWVAgaXRzZWxm
IHNob3VsZCBydW4gdGhlIGdlbmVyYXRvci4KKyAgICAicGF0dGVybiI6ICIuIiwKKyAgICAiYWN0
aW9uIjogWyJweXRob24iLCAidHJ1bmsvYnVpbGQvZ3lwX2FuZ2xlIl0sCisgIH0sCitdCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTUyOTc5KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTM5LDEwICszOSwxMCBAQCBsaWJBTkdMRV9sYV9TT1VSQ0VTID0gXAogCVNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQu
aCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVu
ZGVuY3lHcmFwaE91dHB1dC5jcHAgXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgXAorCVNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwIFwKKwlTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmggXAogCVNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNwcCBc
CiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVp
dHkuaCBcCi0JU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vy
c2lvbi5jcHAgXAotCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RS
ZWN1cnNpb24uaCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpYWdu
b3N0aWNzLmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RpYWdu
b3N0aWNzLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaXJlY3Rp
dmVIYW5kbGVyLmNwcCBcCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9MSUNFTlNFCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0xJQ0VOU0UJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9MSUNFTlNFCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMyIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiAKKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLworLy8gICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8K
Ky8vICAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIAorLy8gICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorLy8KKy8vICAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRyYW5zR2FtaW5nIEluYy4s
IEdvb2dsZSBJbmMuLCAzRExhYnMgSW5jLgorLy8gICAgIEx0ZC4sIG5vciB0aGUgbmFtZXMgb2Yg
dGhlaXIgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2UKKy8vICAgICBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMK
Ky8vICAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUworLy8gRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIENPUFlSSUdIVCBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKy8vIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsCisvLyBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisvLyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
CisvLyBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUKKy8vIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvUkVBRE1FLmNocm9taXVtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL1JFQURNRS5jaHJvbWl1bQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL1JFQURNRS5jaHJvbWl1bQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MCBAQAorTmFtZTogQU5HTEUKK1VSTDogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXBy
b2plY3QvCitWZXJzaW9uOiAyNDIyCitMaWNlbnNlOiBCU0QKK0xpY2Vuc2UgRmlsZTogTElDRU5T
RQorCitEZXNjcmlwdGlvbjoKK0FOR0xFIGlzIGEgY29uZm9ybWFudCBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgT3BlbkdMIEVTIDIuMAorc3BlY2lmaWNhdGlvbiB0aGF0IGlzIGhhcmR3YXJl4oCQYWNj
ZWxlcmF0ZWQgdmlhIERpcmVjdDNELgorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9U
YXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1RhcmdldC5w
cmkJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1RhcmdldC5w
cmkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDggQEAgSEVBREVSUyArPSBcCiAgICAgc3Jj
L2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oIFwKICAgICBzcmMvY29tcGlsZXIv
ZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIFwKICAgICBzcmMvY29tcGlsZXIvZGVw
Z3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggXAorICAgIHNyYy9jb21waWxlci9EZXRlY3RD
YWxsRGVwdGguaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuaCBcCi0g
ICAgc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oIFwKICAgICBzcmMvY29tcGlsZXIvRGlh
Z25vc3RpY3MuaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RpcmVjdGl2ZUhhbmRsZXIuaCBcCiAgICAg
c3JjL2NvbXBpbGVyL0V4dGVuc2lvbkJlaGF2aW9yLmggXApAQCAtOTIsOCArOTIsOCBAQCBTT1VS
Q0VTICs9IFwKICAgICBzcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRl
ci5jcHAgXAogICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQu
Y3BwIFwKICAgICBzcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoVHJhdmVyc2Uu
Y3BwIFwKKyAgICBzcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcCBcCiAgICAgc3JjL2Nv
bXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwIFwKLSAgICBzcmMvY29tcGlsZXIvRGV0ZWN0
UmVjdXJzaW9uLmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcCBcCiAgICAg
c3JjL2NvbXBpbGVyL0RpcmVjdGl2ZUhhbmRsZXIuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvRm9y
TG9vcFVucm9sbC5jcHAgXApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvY29kZXJldmll
dy5zZXR0aW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9jb2RlcmV2
aWV3LnNldHRpbmdzCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvY29k
ZXJldmlldy5zZXR0aW5ncwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACisjIFRoaXMgZmls
ZSBpcyB1c2VkIGJ5IGdjbCB0byBnZXQgcmVwb3NpdG9yeSBzcGVjaWZpYyBpbmZvcm1hdGlvbi4N
CitDT0RFX1JFVklFV19TRVJWRVI6IGNvZGVyZXZpZXcuYXBwc3BvdC5jb20NCitDQ19MSVNUOiBh
bmdsZXByb2plY3QtcmV2aWV3QGdvb2dsZWdyb3Vwcy5jb20NCitWSUVXX1ZDOiBodHRwOi8vY29k
ZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L3NvdXJjZS9kZXRhaWw/cj0NCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FO
R0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyLDggKzEy
LDggQEAKIAkJNDk5NTFDMDMxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzAyMTRCN0FB
QjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRzLmggKi87IH07CiAJCTQ5OTUxQzA5MTRCN0FBRDgw
MDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwNTE0QjdBQUQ3MDA2MEU5NkUgLyog
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovOyB9OwogCQk0OTk1MUMwQTE0QjdBQUQ4MDA2
MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA2MTRCN0FBRDgwMDYwRTk2RSAvKiBCdWls
dEluRnVuY3Rpb25FbXVsYXRvci5oICovOyB9OwotCQk0OTk1MUMwQjE0QjdBQUQ4MDA2MEU5NkUg
LyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24u
Y3BwICovOyB9OwotCQk0OTk1MUMwQzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMw
ODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmggKi87IH07CisJCTVDQjEzRkQ0
MTc5REIzRkQwMDFGODUxRCAvKiBEZXRlY3RDYWxsRGVwdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMTNGRDIxNzlEQjNGRDAwMUY4NTFEIC8q
IERldGVjdENhbGxEZXB0aC5jcHAgKi87IH07CisJCTVDQjEzRkQ1MTc5REIzRkQwMDFGODUxRCAv
KiBEZXRlY3RDYWxsRGVwdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDQjEzRkQzMTc5REIzRkQwMDFGODUxRCAvKiBEZXRlY3RDYWxsRGVwdGguaCAq
LzsgfTsKIAkJOTBEOUIxMDIxMkUxMURDQjAwMkQ0MjU1IC8qIENvbXBpbGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMEY5MTJFMTFEQ0Iw
MDJENDI1NSAvKiBDb21waWxlci5jcHAgKi87IH07CiAJCTkwRDlCMTAzMTJFMTFEQ0IwMDJENDI1
NSAvKiBFeHRlbnNpb25CZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTBEOUIwRkExMkUxMURDQjAwMkQ0MjU1IC8qIEV4dGVuc2lvbkJlaGF2
aW9yLmggKi87IH07CiAJCTkwRDlCMTA0MTJFMTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5nX2xleC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MEQ5QjBG
QjEyRTExRENCMDAyRDQyNTUgLyogZ2xzbGFuZ19sZXguY3BwICovOyB9OwpAQCAtMTQwLDggKzE0
MCw4IEBACiAJCTQ5OTUxQzAyMTRCN0FBQjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGxlbmd0aF9saW1pdHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5NTFDMDUxNEI3QUFENzAwNjBFOTZFIC8qIEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDk5NTFDMDYxNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2
RSAvKiBEZXRlY3RSZWN1cnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGV0ZWN0UmVjdXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDk5NTFDMDgxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEZXRlY3RSZWN1cnNpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNUNCMTNGRDIxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENhbGxEZXB0
aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXRlY3RDYWxsRGVw
dGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0IxM0ZEMzE3OURCM0ZEMDAx
Rjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERldGVjdENhbGxEZXB0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdD
NTlDNTEyMDhDNjhCMDAxQzg3M0UgLyogQU5HTEUueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gQU5HTEUueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVEN0M1OUM2MTIwOEM2OEIwMDFDODczRSAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVEN0M1OUM3MTIwOEM2OEIwMDFDODczRSAvKiBEZWJ1Z1JlbGVhc2UueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzk5LDggKzM5OSw4IEBACiAJCQkJRkIz
OUQyMjUxMjAwRjM1QTAwMDg4RTY5IC8qIENvbnN0YW50VW5pb24uaCAqLywKIAkJCQlGQjM5RDIy
NjEyMDBGMzVBMDAwODhFNjkgLyogZGVidWcuY3BwICovLAogCQkJCUZCMzlEMjI3MTIwMEYzNUEw
MDA4OEU2OSAvKiBkZWJ1Zy5oICovLAotCQkJCTQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBE
ZXRlY3RSZWN1cnNpb24uY3BwICovLAotCQkJCTQ5OTUxQzA4MTRCN0FBRDgwMDYwRTk2RSAvKiBE
ZXRlY3RSZWN1cnNpb24uaCAqLywKKwkJCQk1Q0IxM0ZEMzE3OURCM0ZEMDAxRjg1MUQgLyogRGV0
ZWN0Q2FsbERlcHRoLmggKi8sCisJCQkJNUNCMTNGRDIxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVj
dENhbGxEZXB0aC5jcHAgKi8sCiAJCQkJQTI2NTY3QjAxNTlDMjFCMTAwMzk4NTM5IC8qIERpYWdu
b3N0aWNzLmNwcCAqLywKIAkJCQlBMjY1NjdCMTE1OUMyMUIxMDAzOTg1MzkgLyogRGlhZ25vc3Rp
Y3MuaCAqLywKIAkJCQlBMjY1NjdCMjE1OUMyMUIxMDAzOTg1MzkgLyogRGlyZWN0aXZlSGFuZGxl
ci5jcHAgKi8sCkBAIC01MzAsNyArNTMwLDYgQEAKIAkJCQlBMjY1NjgzQTE1OUMyM0UxMDAzOTg1
MzkgLyogRGVwZW5kZW5jeUdyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1NjgzQzE1OUMy
M0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTI2NTY4M0UxNTlDMjNFMTAwMzk4NTM5IC8qIERlcGVuZGVuY3lHcmFwaE91dHB1dC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNDk5NTFDMEMxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vy
c2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY3QkMxNTlDMjFCMTAwMzk4NTM5IC8qIERp
YWdub3N0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhBRDE2OTc0REVEMDA2RkFBNUEg
LyogRGlhZ25vc3RpY3NCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1NjdCRTE1OUMyMUIx
MDAzOTg1MzkgLyogRGlyZWN0aXZlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC01NjksNiAr
NTY4LDcgQEAKIAkJCQk5MEQ5QjExODEyRTExREQ2MDAyRDQyNTUgLyogVmFyaWFibGVJbmZvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhDQTE2OTc0RTJBMDA2RkFBNUEgLyogVmFyaWFibGVQ
YWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkwRDlCMTFBMTJFMTFERDYwMDJENDI1NSAvKiBW
ZXJzaW9uR0xTTC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNCMTNGRDUxNzlEQjNGRDAwMUY4NTFE
IC8qIERldGVjdENhbGxEZXB0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC02MzUsNyArNjM1LDYgQEAK
IAkJCQlBMjY1NjgzQjE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1NjgzRDE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5k
ZW5jeUdyYXBoT3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2ODNGMTU5QzIzRTEw
MDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk0OTk1MUMwQjE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUEyNjU2N0JCMTU5QzIxQjEwMDM5ODUzOSAvKiBEaWFnbm9zdGljcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMjY0RjhBQzE2OTc0REVEMDA2RkFBNUEgLyogRGlhZ25vc3Rp
Y3NCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2N0JEMTU5QzIxQjEwMDM5ODUzOSAv
KiBEaXJlY3RpdmVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNjgxLDYgKzY4MCw3IEBA
CiAJCQkJOTBEOUIxMTcxMkUxMURENjAwMkQ0MjU1IC8qIFZhcmlhYmxlSW5mby5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBMjY0RjhDOTE2OTc0RTJBMDA2RkFBNUEgLyogVmFyaWFibGVQYWNrZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTBEOUIxMTkxMkUxMURENjAwMkQ0MjU1IC8qIFZlcnNp
b25HTFNMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQjEzRkQ0MTc5REIzRkQwMDFGODUxRCAv
KiBEZXRlY3RDYWxsRGVwdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xleHQuaAkocmV2aXNpb24gMTUyOTc5KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwNiw2ICszMDYsMTIgQEAgdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAg
UEZORUdMUQogI2RlZmluZSBFR0xfU09GVFdBUkVfRElTUExBWV9BTkdMRSAoKEVHTE5hdGl2ZURp
c3BsYXlUeXBlKS0xKQogI2VuZGlmCiAKKyNpZm5kZWYgRUdMX0FOR0xFX2RpcmVjdDNkX2Rpc3Bs
YXkKKyNkZWZpbmUgRUdMX0FOR0xFX2RpcmVjdDNkX2Rpc3BsYXkgMQorI2RlZmluZSBFR0xfRDNE
MTFfRUxTRV9EM0Q5X0RJU1BMQVlfQU5HTEUgKChFR0xOYXRpdmVEaXNwbGF5VHlwZSktMikKKyNk
ZWZpbmUgRUdMX0QzRDExX09OTFlfRElTUExBWV9BTkdMRSAoKEVHTE5hdGl2ZURpc3BsYXlUeXBl
KS0zKQorI2VuZGlmCisKICNpZm5kZWYgRUdMX0FOR0xFX3N1cmZhY2VfZDNkX3RleHR1cmVfMmRf
c2hhcmVfaGFuZGxlCiAjZGVmaW5lIEVHTF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3No
YXJlX2hhbmRsZSAxCiAjZGVmaW5lIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5H
TEUJMHgzMjAwCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2ds
MmV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xF
UzIvZ2wyZXh0LmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1Niw2ICs1NTYsNDQg
QEAgdHlwZWRlZiB2b2lkKiBHTGVnbEltYWdlT0VTOwogI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hN
RU5UMTVfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFRgogI2VuZGlmCiAK
Ky8qIEdMX0VYVF9kcmF3X2J1ZmZlcnMgKi8KKyNpZm5kZWYgR0xfRVhUX2RyYXdfYnVmZmVycwor
I2RlZmluZSBHTF9NQVhfRFJBV19CVUZGRVJTX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDg4MjQKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIwX0VYVCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI1CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMV9F
WFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyNgorI2RlZmluZSBH
TF9EUkFXX0JVRkZFUjJfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDg4MjcKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIzX0VYVCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4ODI4CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSNF9FWFQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyOQorI2RlZmluZSBHTF9EUkFXX0JV
RkZFUjVfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MkEKKyNk
ZWZpbmUgR0xfRFJBV19CVUZGRVI2X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4ODJCCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSN19FWFQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4ODgyQworI2RlZmluZSBHTF9EUkFXX0JVRkZFUjhfRVhU
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MkQKKyNkZWZpbmUgR0xf
RFJBV19CVUZGRVI5X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
ODJFCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTBfRVhUICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4ODgyRgorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjExX0VYVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MzAKKyNkZWZpbmUgR0xfRFJBV19CVUZG
RVIxMl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODMxCisjZGVm
aW5lIEdMX0RSQVdfQlVGRkVSMTNfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4ODgzMgorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjE0X0VYVCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDg4MzMKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxNV9FWFQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODM0CisjZGVmaW5lIEdMX0NP
TE9SX0FUVEFDSE1FTlQwX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENF
MAorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMV9FWFQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDhDRTEKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDJfRVhUICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0UyCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFD
SE1FTlQzX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFMworI2RlZmlu
ZSBHTF9DT0xPUl9BVFRBQ0hNRU5UNF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDhDRTQKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDVfRVhUICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4Q0U1CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ2X0VY
VCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFNgorI2RlZmluZSBHTF9DT0xP
Ul9BVFRBQ0hNRU5UN19FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRTcK
KyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDhfRVhUICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4Q0U4CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ5X0VYVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFOQorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hN
RU5UMTBfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRUEKKyNkZWZpbmUg
R0xfQ09MT1JfQVRUQUNITUVOVDExX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4Q0VCCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxMl9FWFQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4OENFQworI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTNfRVhU
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRUQKKyNkZWZpbmUgR0xfQ09MT1Jf
QVRUQUNITUVOVDE0X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VFCisj
ZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxNV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4OENFRgorI2RlZmluZSBHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDhDREYKKyNlbmRpZgorCiAvKiBHTF9OVl9mYm9fY29s
b3JfYXR0YWNobWVudHMgKi8KICNpZm5kZWYgR0xfTlZfZmJvX2NvbG9yX2F0dGFjaG1lbnRzCiAj
ZGVmaW5lIEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UU19OViAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4Q0RGCkBAIC0xMzMxLDYgKzEzNjksMTQgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsRHJhd0J1ZmZlcgogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFX
QlVGRkVSU05WUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKTsKICNlbmRpZgog
CisjaWZuZGVmIEdMX0VYVF9kcmF3X2J1ZmZlcnMKKyNkZWZpbmUgR0xfRVhUX2RyYXdfYnVmZmVy
cyAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsRHJhd0J1ZmZlcnNFWFQgKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKTsKKyNl
bmRpZgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFXQlVGRkVSU0VYVFBST0Mp
IChHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcyk7CisjZW5kaWYKKwogLyogR0xfTlZfZmJv
X2NvbG9yX2F0dGFjaG1lbnRzICovCiAjaWZuZGVmIEdMX05WX2Zib19jb2xvcl9hdHRhY2htZW50
cwogI2RlZmluZSBHTF9OVl9mYm9fY29sb3JfYXR0YWNobWVudHMgMQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCShy
ZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xB
TkcvU2hhZGVyTGFuZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENv
cHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC03OCw5ICs3OCwxMSBAQCB0eXBlZGVmIGVu
dW0gewogfSBTaFNoYWRlclNwZWM7CiAKIHR5cGVkZWYgZW51bSB7Ci0gIFNIX0VTU0xfT1VUUFVU
ID0gMHg4QjQ1LAotICBTSF9HTFNMX09VVFBVVCA9IDB4OEI0NiwKLSAgU0hfSExTTF9PVVRQVVQg
PSAweDhCNDcKKyAgU0hfRVNTTF9PVVRQVVQgICA9IDB4OEI0NSwKKyAgU0hfR0xTTF9PVVRQVVQg
ICA9IDB4OEI0NiwKKyAgU0hfSExTTF9PVVRQVVQgICA9IDB4OEI0NywKKyAgU0hfSExTTDlfT1VU
UFVUICA9IDB4OEI0NywKKyAgU0hfSExTTDExX09VVFBVVCA9IDB4OEI0OAogfSBTaFNoYWRlck91
dHB1dDsKIAogdHlwZWRlZiBlbnVtIHsKQEAgLTExNiw3ICsxMTgsOCBAQCB0eXBlZGVmIGVudW0g
ewogICBTSF9NQVBQRURfTkFNRV9NQVhfTEVOR1RIICAgICAgPSAgMHg2MDAwLAogICBTSF9OQU1F
X01BWF9MRU5HVEggICAgICAgICAgICAgPSAgMHg2MDAxLAogICBTSF9IQVNIRURfTkFNRV9NQVhf
TEVOR1RIICAgICAgPSAgMHg2MDAyLAotICBTSF9IQVNIRURfTkFNRVNfQ09VTlQgICAgICAgICAg
PSAgMHg2MDAzCisgIFNIX0hBU0hFRF9OQU1FU19DT1VOVCAgICAgICAgICA9ICAweDYwMDMsCisg
IFNIX0FDVElWRV9VTklGT1JNU19BUlJBWSAgICAgICA9ICAweDYwMDQKIH0gU2hTaGFkZXJJbmZv
OwogCiAvLyBDb21waWxlIG9wdGlvbnMuCkBAIC0xNTksNyArMTYyLDEzIEBAIHR5cGVkZWYgZW51
bSB7CiAgIC8vIHZlYzIzNCwgb3IgbWF0MjM0IHR5cGUuIFRoZSBTaEFycmF5SW5kZXhDbGFtcGlu
Z1N0cmF0ZWd5IGVudW0sCiAgIC8vIHNwZWNpZmllZCBpbiB0aGUgU2hCdWlsdEluUmVzb3VyY2Vz
IHdoZW4gY29uc3RydWN0aW5nIHRoZQogICAvLyBjb21waWxlciwgc2VsZWN0cyB0aGUgc3RyYXRl
Z3kgZm9yIHRoZSBjbGFtcGluZyBpbXBsZW1lbnRhdGlvbi4KLSAgU0hfQ0xBTVBfSU5ESVJFQ1Rf
QVJSQVlfQk9VTkRTID0gMHgxMDAwCisgIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUyA9
IDB4MTAwMCwKKworICAvLyBUaGlzIGZsYWcgbGltaXRzIHRoZSBjb21wbGV4aXR5IG9mIGFuIGV4
cHJlc3Npb24uCisgIFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSA9IDB4MjAwMCwKKwor
ICAvLyBUaGlzIGZsYWcgbGltaXRzIHRoZSBkZXB0aCBvZiB0aGUgY2FsbCBzdGFjay4KKyAgU0hf
TElNSVRfQ0FMTF9TVEFDS19ERVBUSCA9IDB4NDAwMCwKIH0gU2hDb21waWxlT3B0aW9uczsKIAog
Ly8gRGVmaW5lcyBhbHRlcm5hdGUgc3RyYXRlZ2llcyBmb3IgaW1wbGVtZW50aW5nIGFycmF5IGlu
ZGV4IGNsYW1waW5nLgpAQCAtMjA5LDYgKzIxOCw3IEBAIHR5cGVkZWYgc3RydWN0CiAgICAgaW50
IE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWw7CiAgICAgaW50IEFSQl90ZXh0dXJlX3JlY3RhbmdsZTsK
ICAgICBpbnQgRVhUX2RyYXdfYnVmZmVyczsKKyAgICBpbnQgRVhUX2ZyYWdfZGVwdGg7CiAKICAg
ICAvLyBTZXQgdG8gMSBpZiBoaWdocCBwcmVjaXNpb24gaXMgc3VwcG9ydGVkIGluIHRoZSBmcmFn
bWVudCBsYW5ndWFnZS4KICAgICAvLyBEZWZhdWx0IGlzIDAuCkBAIC0yMjIsNiArMjMyLDEyIEBA
IHR5cGVkZWYgc3RydWN0CiAgICAgLy8gU2VsZWN0cyBhIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIGlt
cGxlbWVudGluZyBhcnJheSBpbmRleCBjbGFtcGluZy4KICAgICAvLyBEZWZhdWx0IGlzIFNIX0NM
QU1QX1dJVEhfQ0xBTVBfSU5UUklOU0lDLgogICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRl
Z3kgQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3k7CisKKyAgICAvLyBUaGUgbWF4aW11bSBjb21w
bGV4aXR5IGFuIGV4cHJlc3Npb24gY2FuIGJlLgorICAgIGludCBNYXhFeHByZXNzaW9uQ29tcGxl
eGl0eTsKKworICAgIC8vIFRoZSBtYXhpbXVtIGRlcHRoIGEgY2FsbCBzdGFjayBjYW4gYmUuCisg
ICAgaW50IE1heENhbGxTdGFja0RlcHRoOwogfSBTaEJ1aWx0SW5SZXNvdXJjZXM7CiAKIC8vCkBA
IC0yNDgsNyArMjY0LDcgQEAgdHlwZWRlZiB2b2lkKiBTaEhhbmRsZTsKIC8vIHNwZWM6IFNwZWNp
ZmllcyB0aGUgbGFuZ3VhZ2Ugc3BlYyB0aGUgY29tcGlsZXIgbXVzdCBjb25mb3JtIHRvIC0KIC8v
ICAgICAgIFNIX0dMRVMyX1NQRUMgb3IgU0hfV0VCR0xfU1BFQy4KIC8vIG91dHB1dDogU3BlY2lm
aWVzIHRoZSBvdXRwdXQgY29kZSB0eXBlIC0gU0hfRVNTTF9PVVRQVVQsIFNIX0dMU0xfT1VUUFVU
LAotLy8gICAgICAgICBvciBTSF9ITFNMX09VVFBVVC4KKy8vICAgICAgICAgU0hfSExTTDlfT1VU
UFVUIG9yIFNIX0hMU0wxMV9PVVRQVVQuCiAvLyByZXNvdXJjZXM6IFNwZWNpZmllcyB0aGUgYnVp
bHQtaW4gcmVzb3VyY2VzLgogQ09NUElMRVJfRVhQT1JUIFNoSGFuZGxlIFNoQ29uc3RydWN0Q29t
cGlsZXIoCiAgICAgU2hTaGFkZXJUeXBlIHR5cGUsCkBAIC00MTEsNiArNDI3LDE4IEBAIENPTVBJ
TEVSX0VYUE9SVCB2b2lkIFNoR2V0TmFtZUhhc2hpbmdFbnQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIGhhc2hlZE5hbWUpOwogCisvLyBSZXR1cm5zIGEg
cGFyYW1ldGVyIGZyb20gYSBjb21waWxlZCBzaGFkZXIuCisvLyBQYXJhbWV0ZXJzOgorLy8gaGFu
ZGxlOiBTcGVjaWZpZXMgdGhlIGNvbXBpbGVyCisvLyBwbmFtZTogU3BlY2lmaWVzIHRoZSBwYXJh
bWV0ZXIgdG8gcXVlcnkuCisvLyBUaGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgYXJlIGRlZmluZWQ6
CisvLyBTSF9BQ1RJVkVfVU5JRk9STVNfQVJSQVk6IGFuIFNUTCB2ZWN0b3Igb2YgYWN0aXZlIHVu
aWZvcm1zLiBWYWxpZCBvbmx5IGZvcgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBITFNM
IG91dHB1dC4KKy8vIHBhcmFtczogUmVxdWVzdGVkIHBhcmFtZXRlcgorQ09NUElMRVJfRVhQT1JU
IHZvaWQgU2hHZXRJbmZvUG9pbnRlcihjb25zdCBTaEhhbmRsZSBoYW5kbGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVySW5mbyBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCoqIHBhcmFtcyk7CisKICNpZmRlZiBf
X2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
QU5HTEUuc2xuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9BTkdM
RS5zbG4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvQU5HTEUu
c2xuCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACivvu78NCitNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMS4wMA0KKyMgVmlzdWFsIEMr
KyBFeHByZXNzIDIwMTANCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5
MUJDOTQyfSIpID0gImxpYkVHTCIsICJsaWJFR0xcbGliRUdMLnZjeHByb2oiLCAie0U3NDZGQ0E5
LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4
QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibGliR0xFU3YyIiwgImxp
YkdMRVN2MlxsaWJHTEVTdjIudmN4cHJvaiIsICJ7QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0ItOTgx
RTZGNDQ4RTc4fSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04
RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0cmFuc2xhdG9yX2hsc2wiLCAiY29tcGlsZXJcdHJhbnNs
YXRvcl9obHNsLnZjeHByb2oiLCAiezU2MjBGMEU0LTZDNDMtNDlCQy1BMTc4LUI4MDRFMUEwQzNB
N30iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEw
QzkxQkM5NDJ9IikgPSAidHJhbnNsYXRvcl9jb21tb24iLCAiY29tcGlsZXJcdHJhbnNsYXRvcl9j
b21tb24udmN4cHJvaiIsICJ7NUIzQTZEQjgtMUU3RS00MEQ3LTkyQjktREE4QUFFNjE5RkFEfSIN
CitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFC
Qzk0Mn0iKSA9ICJwcmVwcm9jZXNzb3IiLCAiY29tcGlsZXJccHJlcHJvY2Vzc29yXHByZXByb2Nl
c3Nvci52Y3hwcm9qIiwgIntGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9Ig0K
K0VuZFByb2plY3QNCitHbG9iYWwNCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRp
b25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCisJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzIN
CisJCURlYnVnfHg2NCA9IERlYnVnfHg2NA0KKwkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2lu
MzINCisJCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4NjQNCisJRW5kR2xvYmFsU2VjdGlvbg0KKwlH
bG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlv
bg0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uRGVidWd8V2luMzIu
QWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtFNzQ2RkNBOS02NEMzLTQzM0UtODVFOC05QTVB
NjdBQjdFRDZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0U3NDZGQ0E5
LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVn
fHg2NA0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uRGVidWd8eDY0
LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtFNzQ2RkNBOS02NEMzLTQzM0UtODVFOC05QTVBNjdB
QjdFRDZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U3NDZG
Q0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0g
UmVsZWFzZXxXaW4zMg0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0u
UmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtFNzQ2RkNBOS02NEMzLTQz
M0UtODVFOC05QTVBNjdBQjdFRDZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0K
KwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uRGVidWd8V2luMzIuQWN0
aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFFNkY0
NDhFNzh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0I1ODcxQTdBLTk2
OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2
NA0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uRGVidWd8eDY0LkJ1
aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFFNkY0NDhF
Nzh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0I1ODcxQTdB
LTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVs
ZWFzZXxXaW4zMg0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uUmVs
ZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtCNTg3MUE3QS05NjhDLTQyRTMt
QTMzQi05ODFFNkY0NDhFNzh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJ
ezU2MjBGMEU0LTZDNDMtNDlCQy1BMTc4LUI4MDRFMUEwQzNBN30uRGVidWd8V2luMzIuQWN0aXZl
Q2ZnID0gRGVidWd8V2luMzINCisJCXs1NjIwRjBFNC02QzQzLTQ5QkMtQTE3OC1CODA0RTFBMEMz
QTd9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezU2MjBGMEU0LTZDNDMt
NDlCQy1BMTc4LUI4MDRFMUEwQzNBN30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0K
KwkJezU2MjBGMEU0LTZDNDMtNDlCQy1BMTc4LUI4MDRFMUEwQzNBN30uRGVidWd8eDY0LkJ1aWxk
LjAgPSBEZWJ1Z3x4NjQNCisJCXs1NjIwRjBFNC02QzQzLTQ5QkMtQTE3OC1CODA0RTFBMEMzQTd9
LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezU2MjBGMEU0LTZD
NDMtNDlCQy1BMTc4LUI4MDRFMUEwQzNBN30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFz
ZXxXaW4zMg0KKwkJezU2MjBGMEU0LTZDNDMtNDlCQy1BMTc4LUI4MDRFMUEwQzNBN30uUmVsZWFz
ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs1NjIwRjBFNC02QzQzLTQ5QkMtQTE3
OC1CODA0RTFBMEMzQTd9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezVC
M0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uRGVidWd8V2luMzIuQWN0aXZlQ2Zn
ID0gRGVidWd8V2luMzINCisJCXs1QjNBNkRCOC0xRTdFLTQwRDctOTJCOS1EQThBQUU2MTlGQUR9
LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezVCM0E2REI4LTFFN0UtNDBE
Ny05MkI5LURBOEFBRTYxOUZBRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJ
ezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uRGVidWd8eDY0LkJ1aWxkLjAg
PSBEZWJ1Z3x4NjQNCisJCXs1QjNBNkRCOC0xRTdFLTQwRDctOTJCOS1EQThBQUU2MTlGQUR9LlJl
bGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezVCM0E2REI4LTFFN0Ut
NDBENy05MkI5LURBOEFBRTYxOUZBRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxX
aW4zMg0KKwkJezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uUmVsZWFzZXx4
NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs1QjNBNkRCOC0xRTdFLTQwRDctOTJCOS1E
QThBQUU2MTlGQUR9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0ZCRTMy
REYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0g
RGVidWd8V2luMzINCisJCXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9LkRl
YnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0ZCRTMyREYzLTBGQjAtNEYyRi1B
NDI0LTJDMjFCRDdCQzMyNX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0ZC
RTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBE
ZWJ1Z3x4NjQNCisJCXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9LlJlbGVh
c2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0ZCRTMyREYzLTBGQjAtNEYy
Ri1BNDI0LTJDMjFCRDdCQzMyNX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4z
Mg0KKwkJe0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uUmVsZWFzZXx4NjQu
QWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIx
QkQ3QkMzMjV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwlFbmRHbG9iYWxT
ZWN0aW9uDQorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9u
DQorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCisJRW5kR2xvYmFsU2VjdGlvbg0KK0VuZEds
b2JhbA0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9idWlsZF9hbmdsZS5neXAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2J1aWxkX2FuZ2xlLmd5
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9idWlsZF9hbmds
ZS5neXAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEy
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAnaW5jbHVkZXMn
OiBbCisgICAgJ2J1aWxkX2FuZ2xlLmd5cGknLAorICBdLAorfQorCisjIExvY2FsIFZhcmlhYmxl
czoKKyMgdGFiLXdpZHRoOjIKKyMgaW5kZW50LXRhYnMtbW9kZTpuaWwKKyMgRW5kOgorIyB2aW06
IHNldCBleHBhbmR0YWIgdGFic3RvcD0yIHNoaWZ0d2lkdGg9MjoKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9idWlsZF9hbmdsZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9idWlsZF9hbmdsZS5neXBpCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2J1aWxkX2FuZ2xlLmd5cGkJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDIwIEBACisjIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3ZhcmlhYmxlcyc6IHsKKyAgICAnYW5nbGVfY29k
ZSc6IDEsCisgIH0sCisgICd0YXJnZXRfZGVmYXVsdHMnOiB7CisgICAgJ2RlZmluZXMnOiBbCisg
ICAgICAnQU5HTEVfRElTQUJMRV9UUkFDRScsCisgICAgICAnQU5HTEVfQ09NUElMRV9PUFRJTUla
QVRJT05fTEVWRUw9RDNEQ09NUElMRV9PUFRJTUlaQVRJT05fTEVWRUwxJywKKyAgICAgICdBTkdM
RV9QUkVMT0FERURfRDNEQ09NUElMRVJfTU9EVUxFX05BTUVTPXsgVEVYVCgiZDNkY29tcGlsZXJf
NDYuZGxsIiksIFRFWFQoImQzZGNvbXBpbGVyXzQzLmRsbCIpIH0nLAorICAgIF0sCisgIH0sCisg
ICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdwcmVwcm9jZXNzb3In
LAorICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAorICAgICAgJ2luY2x1ZGVfZGlycyc6
IFsKKyAgICAgIF0sCisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9EaWFnbm9zdGljc0Jhc2UuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3Iv
RGlyZWN0aXZlSGFuZGxlckJhc2UuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9EaXJlY3RpdmVIYW5kbGVyQmFzZS5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9EaXJlY3RpdmVQYXJzZXIuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9E
aXJlY3RpdmVQYXJzZXIuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVz
c2lvblBhcnNlci5jcHAnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Np
b25QYXJzZXIuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuY3BwJywK
KyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5oJywKKyAgICAgICAgJ2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9sZW5ndGhfbGltaXRzLmgnLAorICAgICAgICAnY29tcGlsZXIvcHJl
cHJvY2Vzc29yL0xleGVyLmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvTGV4
ZXIuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm8uY3BwJywKKyAgICAg
ICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyby5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9j
ZXNzb3IvTWFjcm9FeHBhbmRlci5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9u
dW1lcmljX2xleC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcF91dGlscy5o
JywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3BwJywKKyAg
ICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuaCcsCisgICAgICAgICdj
b21waWxlci9wcmVwcm9jZXNzb3IvU291cmNlTG9jYXRpb24uaCcsCisgICAgICAgICdjb21waWxl
ci9wcmVwcm9jZXNzb3IvVG9rZW4uY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9Ub2tlbi5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3Bw
JywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuaCcsCisgICAgICBd
LAorICAgICAgIyBUT0RPKGpzY2h1aCk6IGh0dHA6Ly9jcmJ1Zy5jb20vMTY3MTg3CisgICAgICAn
bXN2c19kaXNhYmxlZF93YXJuaW5ncyc6IFsKKyAgICAgICAgNDI2NywKKyAgICAgIF0sICAgICAg
CisgICAgfSwKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAndHJhbnNsYXRvcl9jb21tb24n
LAorICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAorICAgICAgJ2RlcGVuZGVuY2llcyc6
IFsncHJlcHJvY2Vzc29yJ10sCisgICAgICAnaW5jbHVkZV9kaXJzJzogWworICAgICAgICAnLics
CisgICAgICAgICcuLi9pbmNsdWRlJywKKyAgICAgIF0sCisgICAgICAnZGVmaW5lcyc6IFsKKyAg
ICAgICAgJ0NPTVBJTEVSX0lNUExFTUVOVEFUSU9OJywKKyAgICAgIF0sCisgICAgICAnc291cmNl
cyc6IFsKKyAgICAgICAgJ2NvbXBpbGVyL0Jhc2VUeXBlcy5oJywKKyAgICAgICAgJ2NvbXBpbGVy
L0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCcsCisgICAgICAgICdjb21waWxlci9CdWlsdElu
RnVuY3Rpb25FbXVsYXRvci5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0NvbW1vbi5oJywKKyAgICAg
ICAgJ2NvbXBpbGVyL0NvbXBpbGVyLmNwcCcsCisgICAgICAgICdjb21waWxlci9Db25zdGFudFVu
aW9uLmgnLAorICAgICAgICAnY29tcGlsZXIvZGVidWcuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVy
L2RlYnVnLmgnLAorICAgICAgICAnY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcCcsCisgICAg
ICAgICdjb21waWxlci9EZXRlY3RDYWxsRGVwdGguaCcsCisgICAgICAgICdjb21waWxlci9EaWFn
bm9zdGljcy5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcCcsCisgICAgICAg
ICdjb21waWxlci9EaXJlY3RpdmVIYW5kbGVyLmgnLAorICAgICAgICAnY29tcGlsZXIvRGlyZWN0
aXZlSGFuZGxlci5jcHAnLAorICAgICAgICAnY29tcGlsZXIvRXh0ZW5zaW9uQmVoYXZpb3IuaCcs
CisgICAgICAgICdjb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcCcsCisgICAgICAgICdjb21waWxl
ci9Gb3JMb29wVW5yb2xsLmgnLAorICAgICAgICAnY29tcGlsZXIvZ2xzbGFuZy5oJywKKyAgICAg
ICAgJ2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcCcsCisgICAgICAgICdjb21waWxlci9nbHNsYW5n
X3RhYi5jcHAnLAorICAgICAgICAnY29tcGlsZXIvZ2xzbGFuZ190YWIuaCcsCisgICAgICAgICdj
b21waWxlci9IYXNoTmFtZXMuaCcsCisgICAgICAgICdjb21waWxlci9JbmZvU2luay5jcHAnLAor
ICAgICAgICAnY29tcGlsZXIvSW5mb1NpbmsuaCcsCisgICAgICAgICdjb21waWxlci9Jbml0aWFs
aXplLmNwcCcsCisgICAgICAgICdjb21waWxlci9Jbml0aWFsaXplLmgnLAorICAgICAgICAnY29t
cGlsZXIvSW5pdGlhbGl6ZURsbC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvSW5pdGlhbGl6ZURs
bC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0luaXRpYWxpemVHbG9iYWxzLmgnLAorICAgICAgICAn
Y29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAnLAorICAgICAgICAnY29tcGlsZXIv
SW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0ludGVybWVkaWF0
ZS5jcHAnLAorICAgICAgICAnY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgnLAorICAgICAgICAnY29t
cGlsZXIvaW50ZXJtT3V0LmNwcCcsCisgICAgICAgICdjb21waWxlci9JbnRlcm1UcmF2ZXJzZS5j
cHAnLAorICAgICAgICAnY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaCcsCisgICAgICAgICdj
b21waWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHAnLAorICAgICAgICAnY29tcGlsZXIvTWFw
TG9uZ1ZhcmlhYmxlTmFtZXMuaCcsCisgICAgICAgICdjb21waWxlci9NTWFwLmgnLAorICAgICAg
ICAnY29tcGlsZXIvb3NpbmNsdWRlLmgnLAorICAgICAgICAnY29tcGlsZXIvcGFyc2VDb25zdC5j
cHAnLAorICAgICAgICAnY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwJywKKyAgICAgICAgJ2NvbXBp
bGVyL1BhcnNlSGVscGVyLmgnLAorICAgICAgICAnY29tcGlsZXIvUG9vbEFsbG9jLmNwcCcsCisg
ICAgICAgICdjb21waWxlci9Qb29sQWxsb2MuaCcsCisgICAgICAgICdjb21waWxlci9RdWFsaWZp
ZXJBbGl2ZS5jcHAnLAorICAgICAgICAnY29tcGlsZXIvUXVhbGlmaWVyQWxpdmUuaCcsCisgICAg
ICAgICdjb21waWxlci9SZW1vdmVUcmVlLmNwcCcsCisgICAgICAgICdjb21waWxlci9SZW1vdmVU
cmVlLmgnLAorICAgICAgICAnY29tcGlsZXIvUmVuYW1lRnVuY3Rpb24uaCcsCisgICAgICAgICdj
b21waWxlci9TaEhhbmRsZS5oJywKKyAgICAgICAgJ2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcCcs
CisgICAgICAgICdjb21waWxlci9TeW1ib2xUYWJsZS5oJywKKyAgICAgICAgJ2NvbXBpbGVyL1R5
cGVzLmgnLAorICAgICAgICAnY29tcGlsZXIvVW5pZm9ybS5jcHAnLAorICAgICAgICAnY29tcGls
ZXIvVW5pZm9ybS5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3V0aWwuY3BwJywKKyAgICAgICAgJ2Nv
bXBpbGVyL3V0aWwuaCcsCisgICAgICAgICdjb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNw
cCcsCisgICAgICAgICdjb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmgnLAorICAgICAgICAn
Y29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcCcsCisgICAgICAgICdjb21waWxlci9WYXJpYWJsZUlu
Zm8uaCcsCisgICAgICAgICdjb21waWxlci9WYXJpYWJsZVBhY2tlci5jcHAnLAorICAgICAgICAn
Y29tcGlsZXIvVmFyaWFibGVQYWNrZXIuaCcsCisgICAgICAgICMgRGVwZW5kZW5jeSBncmFwaAor
ICAgICAgICAnY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmNwcCcsCisgICAgICAg
ICdjb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguaCcsCisgICAgICAgICdjb21waWxl
ci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCcsCisgICAgICAgICdjb21waWxl
ci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmgnLAorICAgICAgICAnY29tcGlsZXIv
ZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCcsCisgICAgICAgICdjb21waWxlci9k
ZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuaCcsCisgICAgICAgICdjb21waWxlci9kZXBn
cmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAnLAorICAgICAgICAjIFRpbWluZyByZXN0
cmljdGlvbnMKKyAgICAgICAgJ2NvbXBpbGVyL3RpbWluZy9SZXN0cmljdEZyYWdtZW50U2hhZGVy
VGltaW5nLmNwcCcsCisgICAgICAgICdjb21waWxlci90aW1pbmcvUmVzdHJpY3RGcmFnbWVudFNo
YWRlclRpbWluZy5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3RpbWluZy9SZXN0cmljdFZlcnRleFNo
YWRlclRpbWluZy5jcHAnLAorICAgICAgICAnY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4
U2hhZGVyVGltaW5nLmgnLAorICAgICAgICAndGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3Vu
ZHNDbGFtcGVyLmNwcCcsCisgICAgICAgICd0aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5k
c0NsYW1wZXIuaCcsCisgICAgICBdLAorICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgIFsn
T1M9PSJ3aW4iJywgeworICAgICAgICAgICMgVE9ETyhqc2NodWgpOiBodHRwOi8vY3JidWcuY29t
LzE2NzE4NyBzaXplX3QgLT4gaW50CisgICAgICAgICAgJ21zdnNfZGlzYWJsZWRfd2FybmluZ3Mn
OiBbIDQyNjcgXSwKKyAgICAgICAgICAnc291cmNlcyc6IFsnY29tcGlsZXIvb3Nzb3VyY2Vfd2lu
LmNwcCddLAorICAgICAgICB9LCB7ICMgZWxzZTogcG9zaXgKKyAgICAgICAgICAnc291cmNlcyc6
IFsnY29tcGlsZXIvb3Nzb3VyY2VfcG9zaXguY3BwJ10sCisgICAgICAgIH1dLAorICAgICAgXSwK
KyAgICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICd0cmFuc2xhdG9yX2dsc2wnLAor
ICAgICAgJ3R5cGUnOiAnPChjb21wb25lbnQpJywKKyAgICAgICdkZXBlbmRlbmNpZXMnOiBbJ3Ry
YW5zbGF0b3JfY29tbW9uJ10sCisgICAgICAnaW5jbHVkZV9kaXJzJzogWworICAgICAgICAnLics
CisgICAgICAgICcuLi9pbmNsdWRlJywKKyAgICAgIF0sCisgICAgICAnZGVmaW5lcyc6IFsKKyAg
ICAgICAgJ0NPTVBJTEVSX0lNUExFTUVOVEFUSU9OJywKKyAgICAgIF0sCisgICAgICAnc291cmNl
cyc6IFsKKyAgICAgICAgJ2NvbXBpbGVyL0NvZGVHZW5HTFNMLmNwcCcsCisgICAgICAgICdjb21w
aWxlci9PdXRwdXRFU1NMLmNwcCcsCisgICAgICAgICdjb21waWxlci9PdXRwdXRFU1NMLmgnLCAg
ICAgICAgCisgICAgICAgICdjb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAnLAorICAgICAgICAn
Y29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuaCcsCisgICAgICAgICdjb21waWxlci9PdXRwdXRHTFNM
LmNwcCcsCisgICAgICAgICdjb21waWxlci9PdXRwdXRHTFNMLmgnLAorICAgICAgICAnY29tcGls
ZXIvU2hhZGVyTGFuZy5jcHAnLAorICAgICAgICAnY29tcGlsZXIvVHJhbnNsYXRvckVTU0wuY3Bw
JywKKyAgICAgICAgJ2NvbXBpbGVyL1RyYW5zbGF0b3JFU1NMLmgnLAorICAgICAgICAnY29tcGls
ZXIvVHJhbnNsYXRvckdMU0wuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1RyYW5zbGF0b3JHTFNM
LmgnLAorICAgICAgICAnY29tcGlsZXIvVmVyc2lvbkdMU0wuY3BwJywKKyAgICAgICAgJ2NvbXBp
bGVyL1ZlcnNpb25HTFNMLmgnLAorICAgICAgXSwKKyAgICAgICMgVE9ETyhqc2NodWgpOiBodHRw
Oi8vY3JidWcuY29tLzE2NzE4NyBzaXplX3QgLT4gaW50CisgICAgICAnbXN2c19kaXNhYmxlZF93
YXJuaW5ncyc6IFsgNDI2NyBdLAorICAgIH0sCisgIF0sCisgICdjb25kaXRpb25zJzogWworICAg
IFsnT1M9PSJ3aW4iJywgeworICAgICAgJ3RhcmdldHMnOiBbCisgICAgICAgIHsKKyAgICAgICAg
ICAndGFyZ2V0X25hbWUnOiAndHJhbnNsYXRvcl9obHNsJywKKyAgICAgICAgICAndHlwZSc6ICc8
KGNvbXBvbmVudCknLAorICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbJ3RyYW5zbGF0b3JfY29t
bW9uJ10sCisgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKKyAgICAgICAgICAgICcuJywKKyAg
ICAgICAgICAgICcuLi9pbmNsdWRlJywKKyAgICAgICAgICBdLAorICAgICAgICAgICdkZWZpbmVz
JzogWworICAgICAgICAgICAgJ0NPTVBJTEVSX0lNUExFTUVOVEFUSU9OJywKKyAgICAgICAgICBd
LAorICAgICAgICAgICdzb3VyY2VzJzogWworICAgICAgICAgICAgJ2NvbXBpbGVyL1NoYWRlckxh
bmcuY3BwJywKKyAgICAgICAgICAgICdjb21waWxlci9EZXRlY3REaXNjb250aW51aXR5LmNwcCcs
CisgICAgICAgICAgICAnY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oJywKKyAgICAgICAg
ICAgICdjb21waWxlci9Db2RlR2VuSExTTC5jcHAnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL091
dHB1dEhMU0wuY3BwJywKKyAgICAgICAgICAgICdjb21waWxlci9PdXRwdXRITFNMLmgnLAorICAg
ICAgICAgICAgJ2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmNwcCcsCisgICAgICAgICAgICAnY29t
cGlsZXIvVHJhbnNsYXRvckhMU0wuaCcsCisgICAgICAgICAgICAnY29tcGlsZXIvVW5mb2xkU2hv
cnRDaXJjdWl0LmNwcCcsCisgICAgICAgICAgICAnY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0
LmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL1NlYXJjaFN5bWJvbC5jcHAnLAorICAgICAgICAg
ICAgJ2NvbXBpbGVyL1NlYXJjaFN5bWJvbC5oJywKKyAgICAgICAgICBdLAorICAgICAgICAgICMg
VE9ETyhqc2NodWgpOiBodHRwOi8vY3JidWcuY29tLzE2NzE4NyBzaXplX3QgLT4gaW50CisgICAg
ICAgICAgJ21zdnNfZGlzYWJsZWRfd2FybmluZ3MnOiBbIDQyNjcgXSwKKyAgICAgICAgfSwKKyAg
ICAgICAgeworICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdsaWJHTEVTdjInLAorICAgICAgICAg
ICd0eXBlJzogJ3NoYXJlZF9saWJyYXJ5JywKKyAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWyd0
cmFuc2xhdG9yX2hsc2wnXSwKKyAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWworICAgICAgICAg
ICAgJy4nLAorICAgICAgICAgICAgJy4uL2luY2x1ZGUnLAorICAgICAgICAgICAgJ2xpYkdMRVN2
MicsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgICAgICd0
aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmgnLAorICAgICAgICAgICAgJ3RoaXJk
X3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuY3BwJywKKyAgICAgICAgICAgICdjb21tb24v
YW5nbGV1dGlscy5oJywKKyAgICAgICAgICAgICdjb21tb24vZGVidWcuY3BwJywKKyAgICAgICAg
ICAgICdjb21tb24vZGVidWcuaCcsCisgICAgICAgICAgICAnY29tbW9uL1JlZkNvdW50T2JqZWN0
LmNwcCcsCisgICAgICAgICAgICAnY29tbW9uL1JlZkNvdW50T2JqZWN0LmgnLAorICAgICAgICAg
ICAgJ2NvbW1vbi92ZXJzaW9uLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9wcmVjb21waWxl
ZC5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcHJlY29tcGlsZWQuY3BwJywKKyAgICAgICAg
ICAgICdsaWJHTEVTdjIvQmluYXJ5U3RyZWFtLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9C
dWZmZXIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvQnVmZmVyLmgnLAorICAgICAgICAg
ICAgJ2xpYkdMRVN2Mi9jb25zdGFudHMuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL0NvbnRl
eHQuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvQ29udGV4dC5oJywKKyAgICAgICAgICAg
ICdsaWJHTEVTdjIvYW5nbGV0eXBlcy5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvRmVuY2Uu
Y3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvRmVuY2UuaCcsCisgICAgICAgICAgICAnbGli
R0xFU3YyL0Zsb2F0MTZUb0Zsb2F0MzIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvRnJh
bWVidWZmZXIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvRnJhbWVidWZmZXIuaCcsCisg
ICAgICAgICAgICAnbGliR0xFU3YyL0hhbmRsZUFsbG9jYXRvci5jcHAnLAorICAgICAgICAgICAg
J2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL2xp
YkdMRVN2Mi5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVmJywKKyAg
ICAgICAgICAgICdsaWJHTEVTdjIvbGliR0xFU3YyLnJjJywKKyAgICAgICAgICAgICdsaWJHTEVT
djIvbWFpbi5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9tYWluLmgnLAorICAgICAgICAg
ICAgJ2xpYkdMRVN2Mi9tYXRodXRpbC5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvUHJvZ3Jh
bS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9Qcm9ncmFtLmgnLAorICAgICAgICAgICAg
J2xpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5LmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1By
b2dyYW1CaW5hcnkuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1F1ZXJ5LmgnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2Mi9RdWVyeS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9SZW5k
ZXJidWZmZXIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgnLAor
ICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9CbGl0LmNwcCcsCisgICAgICAgICAgICAn
bGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRl
cmVyL0J1ZmZlclN0b3JhZ2UuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0J1
ZmZlclN0b3JhZ2UuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVy
U3RvcmFnZTkuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3Rv
cmFnZTkuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2Ux
MS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEu
aCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlSW1wbC5oJywKKyAgICAg
ICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvRmVuY2U5LmNwcCcsCisgICAgICAgICAgICAnbGli
R0xFU3YyL3JlbmRlcmVyL0ZlbmNlOS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVy
ZXIvRmVuY2UxMS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTEx
LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9nZW5lcmF0ZW1pcC5oJywKKyAg
ICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UuY3BwJywKKyAgICAgICAgICAgICds
aWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRl
cmVyL0ltYWdlMTEuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2Ux
MS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2U5LmNwcCcsCisgICAg
ICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlOS5oJywKKyAgICAgICAgICAgICdsaWJH
TEVTdjIvcmVuZGVyZXIvSW1hZ2VTU0UyLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3Jl
bmRlcmVyL0luZGV4QnVmZmVyLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVy
L0luZGV4QnVmZmVyLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1
ZmZlcjkuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXI5
LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjExLmNwcCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuaCcsCisgICAg
ICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuY3BwJywKKyAgICAg
ICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5oJywKKyAgICAgICAg
ICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5jcHAnLAorICAgICAgICAg
ICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbnB1dExheW91dENhY2hlLmgnLAorICAgICAgICAgICAg
J2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeUltcGwuaCcsCisgICAgICAgICAgICAnbGliR0xFU3Yy
L3JlbmRlcmVyL1F1ZXJ5OS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9R
dWVyeTkuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5MTEuY3BwJywK
KyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvUXVlcnkxMS5oJywKKyAgICAgICAgICAg
ICdsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVT
djIvcmVuZGVyZXIvUmVuZGVyZXIuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVy
L1JlbmRlcmVyMTEuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVy
ZXIxMS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXIxMV91dGls
cy5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxz
LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuY3BwJywKKyAg
ICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmgnLAorICAgICAgICAgICAg
J2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuY3BwJywKKyAgICAgICAgICAgICds
aWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmgnLAorICAgICAgICAgICAgJ2xpYkdM
RVN2Mi9yZW5kZXJlci9SZW5kZXJTdGF0ZUNhY2hlLmNwcCcsCisgICAgICAgICAgICAnbGliR0xF
U3YyL3JlbmRlcmVyL1JlbmRlclN0YXRlQ2FjaGUuaCcsCisgICAgICAgICAgICAnbGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlclRhcmdldC5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVy
ZXIvUmVuZGVyVGFyZ2V0MTEuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlclRhcmdldDExLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRl
clRhcmdldDkuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdl
dDkuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyQ2FjaGUuaCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUuaCcsCisg
ICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGU5LmNwcCcsCisg
ICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGU5LmgnLAorICAg
ICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEuY3BwJywKKyAg
ICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTExLmgnLAorICAg
ICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4uaCcsCisgICAgICAgICAgICAn
bGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjkuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVT
djIvcmVuZGVyZXIvU3dhcENoYWluOS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVy
ZXIvU3dhcENoYWluMTEuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvU3dh
cENoYWluMTEuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9y
YWdlLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdl
LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmNw
cCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlMTEuaCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlOS5jcHAnLAor
ICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTkuaCcsCisgICAg
ICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5jcHAnLAorICAgICAgICAg
ICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIuaCcsCisgICAgICAgICAgICAnbGli
R0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVT
djIvcmVuZGVyZXIvVmVydGV4QnVmZmVyOS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVu
ZGVyZXIvVmVydGV4QnVmZmVyMTEuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVy
ZXIvVmVydGV4QnVmZmVyMTEuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL3Zl
cnRleGNvbnZlcnNpb24uaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRl
eERhdGFNYW5hZ2VyLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRl
eERhdGFNYW5hZ2VyLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhE
ZWNsYXJhdGlvbkNhY2hlLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1Zl
cnRleERlY2xhcmF0aW9uQ2FjaGUuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1Jlc291cmNl
TWFuYWdlci5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuaCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL1NoYWRlci5jcHAnLAorICAgICAgICAgICAgJ2xpYkdM
RVN2Mi9TaGFkZXIuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1RleHR1cmUuY3BwJywKKyAg
ICAgICAgICAgICdsaWJHTEVTdjIvVGV4dHVyZS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIv
VW5pZm9ybS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9Vbmlmb3JtLmgnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2Mi91dGlsaXRpZXMuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIv
dXRpbGl0aWVzLmgnLAorICAgICAgICAgIF0sCisgICAgICAgICAgIyBUT0RPKGpzY2h1aCk6IGh0
dHA6Ly9jcmJ1Zy5jb20vMTY3MTg3IHNpemVfdCAtPiBpbnQKKyAgICAgICAgICAnbXN2c19kaXNh
YmxlZF93YXJuaW5ncyc6IFsgNDI2NyBdLAorICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzogewor
ICAgICAgICAgICAgJ1ZDTGlua2VyVG9vbCc6IHsKKyAgICAgICAgICAgICAgJ0FkZGl0aW9uYWxE
ZXBlbmRlbmNpZXMnOiBbCisgICAgICAgICAgICAgICAgJ2QzZDkubGliJywKKyAgICAgICAgICAg
ICAgICAnZHhndWlkLmxpYicsCisgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICB9CisgICAg
ICAgICAgfSwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICd0YXJnZXRfbmFtZSc6
ICdsaWJFR0wnLAorICAgICAgICAgICd0eXBlJzogJ3NoYXJlZF9saWJyYXJ5JywKKyAgICAgICAg
ICAnZGVwZW5kZW5jaWVzJzogWydsaWJHTEVTdjInXSwKKyAgICAgICAgICAnaW5jbHVkZV9kaXJz
JzogWworICAgICAgICAgICAgJy4nLAorICAgICAgICAgICAgJy4uL2luY2x1ZGUnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2MicsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnc291cmNlcyc6IFsK
KyAgICAgICAgICAgICdjb21tb24vYW5nbGV1dGlscy5oJywKKyAgICAgICAgICAgICdjb21tb24v
ZGVidWcuY3BwJywKKyAgICAgICAgICAgICdjb21tb24vZGVidWcuaCcsCisgICAgICAgICAgICAn
Y29tbW9uL1JlZkNvdW50T2JqZWN0LmNwcCcsCisgICAgICAgICAgICAnY29tbW9uL1JlZkNvdW50
T2JqZWN0LmgnLAorICAgICAgICAgICAgJ2NvbW1vbi92ZXJzaW9uLmgnLAorICAgICAgICAgICAg
J2xpYkVHTC9Db25maWcuY3BwJywKKyAgICAgICAgICAgICdsaWJFR0wvQ29uZmlnLmgnLAorICAg
ICAgICAgICAgJ2xpYkVHTC9EaXNwbGF5LmNwcCcsCisgICAgICAgICAgICAnbGliRUdML0Rpc3Bs
YXkuaCcsCisgICAgICAgICAgICAnbGliRUdML2xpYkVHTC5jcHAnLAorICAgICAgICAgICAgJ2xp
YkVHTC9saWJFR0wuZGVmJywKKyAgICAgICAgICAgICdsaWJFR0wvbGliRUdMLnJjJywKKyAgICAg
ICAgICAgICdsaWJFR0wvbWFpbi5jcHAnLAorICAgICAgICAgICAgJ2xpYkVHTC9tYWluLmgnLAor
ICAgICAgICAgICAgJ2xpYkVHTC9TdXJmYWNlLmNwcCcsCisgICAgICAgICAgICAnbGliRUdML1N1
cmZhY2UuaCcsCisgICAgICAgICAgXSwKKyAgICAgICAgICAjIFRPRE8oanNjaHVoKTogaHR0cDov
L2NyYnVnLmNvbS8xNjcxODcgc2l6ZV90IC0+IGludAorICAgICAgICAgICdtc3ZzX2Rpc2FibGVk
X3dhcm5pbmdzJzogWyA0MjY3IF0sCisgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOiB7CisgICAg
ICAgICAgICAnVkNMaW5rZXJUb29sJzogeworICAgICAgICAgICAgICAnQWRkaXRpb25hbERlcGVu
ZGVuY2llcyc6IFsKKyAgICAgICAgICAgICAgICAnZDNkOS5saWInLAorICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgfQorICAgICAgICAgIH0sCisgICAgICAgIH0sCisgICAgICBdLAorICAg
IH1dLAorICBdLAorfQorCisjIExvY2FsIFZhcmlhYmxlczoKKyMgdGFiLXdpZHRoOjIKKyMgaW5k
ZW50LXRhYnMtbW9kZTpuaWwKKyMgRW5kOgorIyB2aW06IHNldCBleHBhbmR0YWIgdGFic3RvcD0y
IHNoaWZ0d2lkdGg9MjoKKyMgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21t
b24vUmVmQ291bnRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21tb24vUmVmQ291bnRPYmplY3QuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL1JlZkNvdW50T2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDQgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgogLy8K
IC8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaAkocmV2aXNpb24gMTUyOTc5
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTksMTIgKzksMzkgQEAKICNpZm5kZWYgQ09NTU9OX0FOR0xFVVRJTFNf
SF8KICNkZWZpbmUgQ09NTU9OX0FOR0xFVVRJTFNfSF8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgor
CiAvLyBBIG1hY3JvIHRvIGRpc2FsbG93IHRoZSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBvcGVyYXRv
cj0gZnVuY3Rpb25zCiAvLyBUaGlzIG11c3QgYmUgdXNlZCBpbiB0aGUgcHJpdmF0ZTogZGVjbGFy
YXRpb25zIGZvciBhIGNsYXNzCiAjZGVmaW5lIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUeXBl
TmFtZSkgXAogICBUeXBlTmFtZShjb25zdCBUeXBlTmFtZSYpOyAgICAgICAgICAgICAgIFwKICAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgVHlwZU5hbWUmKQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dW5zaWduZWQgaW50IE4+CitpbmxpbmUgdW5zaWduZWQgaW50IEFycmF5U2l6ZShUKCYpW05dKQor
eworICAgIHJldHVybiBOOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdW5zaWduZWQgaW50
IE4+Cit2b2lkIFNhZmVSZWxlYXNlKFQgKCZyZXNvdXJjZUJsb2NrKVtOXSkKK3sKKyAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IE47IGkrKykKKyAgICB7CisgICAgICAgIFNhZmVSZWxl
YXNlKHJlc291cmNlQmxvY2tbaV0pOworICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Cit2b2lkIFNhZmVSZWxlYXNlKFQmIHJlc291cmNlKQoreworICAgIGlmIChyZXNvdXJjZSkKKyAg
ICB7CisgICAgICAgIHJlc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIHJlc291cmNlID0gTlVM
TDsKKyAgICB9Cit9CisKICNpZiBkZWZpbmVkKF9NU0NfVkVSKQogI2RlZmluZSBzbnByaW50ZiBf
c25wcmludGYKICNlbmRpZgpAQCAtMjMsNCArNTAsNyBAQAogI2RlZmluZSBWRU5ET1JfSURfSU5U
RUwgMHg4MDg2CiAjZGVmaW5lIFZFTkRPUl9JRF9OVklESUEgMHgxMERFCiAKKyNkZWZpbmUgR0xf
QkdSQTRfQU5HTEVYIDB4NkFCQworI2RlZmluZSBHTF9CR1I1X0ExX0FOR0xFWCAweDZBQkQKKwog
I2VuZGlmIC8vIENPTU1PTl9BTkdMRVVUSUxTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcsMTAgKzcsNiBAQAogLy8gZGVidWcuY3BwOiBEZWJ1Z2dpbmcgdXRpbGl0aWVzLgogCiAjaW5j
bHVkZSAiY29tbW9uL2RlYnVnLmgiCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0
ZGFyZy5oPgotCiAjaW5jbHVkZSAiY29tbW9uL3N5c3RlbS5oIgogI2luY2x1ZGUgPGQzZDkuaD4K
IApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuaAkocmV2
aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSwxMyBAQCBuYW1lc3BhY2UgZ2wKICAgICAj
ZGVmaW5lIFVOUkVBQ0hBQkxFKCkgRVJSKCJcdCEgVW5yZWFjaGFibGUgcmVhY2hlZDogJXMoJWQp
XG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKQogI2VuZGlmCiAKKy8vIEEgbWFjcm8gdGhhdCBk
ZXRlcm1pbmVzIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHJ1bnRpbWUgdHlwZS4KKyNp
ZiAhZGVmaW5lZChOREVCVUcpICYmICghZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfQ1BQ
UlRUSSkpCisjZGVmaW5lIEhBU19EWU5BTUlDX1RZUEUodHlwZSwgb2JqKSAoZHluYW1pY19jYXN0
PHR5cGUgPihvYmopICE9IE5VTEwpCisjZWxzZQorI2RlZmluZSBIQVNfRFlOQU1JQ19UWVBFKHR5
cGUsIG9iaikgdHJ1ZQorI2VuZGlmCisKIC8vIEEgbWFjcm8gZnVuY3Rpb25pbmcgYXMgYSBjb21w
aWxlLXRpbWUgYXNzZXJ0IHRvIHZhbGlkYXRlIGNvbnN0YW50IGNvbmRpdGlvbnMKICNkZWZpbmUg
TUVUQV9BU1NFUlQoY29uZGl0aW9uKSB0eXBlZGVmIGludCBDT01QSUxFX1RJTUVfQVNTRVJUXyMj
X19MSU5FX19bc3RhdGljX2Nhc3Q8Ym9vbD4oY29uZGl0aW9uKT8xOi0xXQogCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtLmgJKHJldmlzaW9uIDE1Mjk3
OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0LDEwICsxNCw2IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KLSNpbmNsdWRlIDxkM2Q5Lmg+Ci0jaW5jbHVkZSA8RDNEY29tcGlsZXIuaD4KLSNpbmNsdWRl
IDxkM2Q5dHlwZXMuaD4KLSNpbmNsdWRlIDxtbXN5c3RlbS5oPgogCiAjaWYgZGVmaW5lZChtaW4p
CiAjdW5kZWYgbWluCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3Zl
cnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9u
L3ZlcnNpb24uaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbW1vbi92ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAjZGVm
aW5lIE1BSk9SX1ZFUlNJT04gMQotI2RlZmluZSBNSU5PUl9WRVJTSU9OIDAKKyNkZWZpbmUgTUlO
T1JfVkVSU0lPTiAyCiAjZGVmaW5lIEJVSUxEX1ZFUlNJT04gMAotI2RlZmluZSBCVUlMRF9SRVZJ
U0lPTiAxOTg3CisjZGVmaW5lIEJVSUxEX1JFVklTSU9OIDI0MjYKIAogI2RlZmluZSBTVFJJTkdJ
RlkoeCkgI3gKICNkZWZpbmUgTUFDUk9fU1RSSU5HSUZZKHgpIFNUUklOR0lGWSh4KQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyLzY0Yml0LWxleGVyLXNhZmV0eS5w
YXRjaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
NjRiaXQtbGV4ZXItc2FmZXR5LnBhdGNoCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyLzY0Yml0LWxleGVyLXNhZmV0eS5wYXRjaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNzcgQEAKKy0tLSBhL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAK
KysrKyBiL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAKK0BAIC02OCw2ICs2OCw3IEBAIHR5
cGVkZWYgaW50MTZfdCBmbGV4X2ludDE2X3Q7CisgdHlwZWRlZiB1aW50MTZfdCBmbGV4X3VpbnQx
Nl90OworIHR5cGVkZWYgaW50MzJfdCBmbGV4X2ludDMyX3Q7CisgdHlwZWRlZiB1aW50MzJfdCBm
bGV4X3VpbnQzMl90OworK3R5cGVkZWYgdWludDY0X3QgZmxleF91aW50NjRfdDsKKyAjZWxzZQor
IHR5cGVkZWYgc2lnbmVkIGNoYXIgZmxleF9pbnQ4X3Q7CisgdHlwZWRlZiBzaG9ydCBpbnQgZmxl
eF9pbnQxNl90OworQEAgLTE5MSw2ICsxOTIsMTEgQEAgdHlwZWRlZiB2b2lkKiB5eXNjYW5fdDsK
KyB0eXBlZGVmIHN0cnVjdCB5eV9idWZmZXJfc3RhdGUgKllZX0JVRkZFUl9TVEFURTsKKyAjZW5k
aWYKKyAKKysjaWZuZGVmIFlZX1RZUEVERUZfWVlfU0laRV9UCisrI2RlZmluZSBZWV9UWVBFREVG
X1lZX1NJWkVfVAorK3R5cGVkZWYgc2l6ZV90IHl5X3NpemVfdDsKKysjZW5kaWYKKysKKyAjZGVm
aW5lIEVPQl9BQ1RfQ09OVElOVUVfU0NBTiAwCisgI2RlZmluZSBFT0JfQUNUX0VORF9PRl9GSUxF
IDEKKyAjZGVmaW5lIEVPQl9BQ1RfTEFTVF9NQVRDSCAyCitAQCAtMjA0LDcgKzIxMCw3IEBAIHR5
cGVkZWYgc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSAqWVlfQlVGRkVSX1NUQVRFOworICAgICAgKi8K
KyAgICAgI2RlZmluZSAgWVlfTEVTU19MSU5FTk8obikgXAorICAgICAgICAgICAgIGRvIHsgXAor
LSAgICAgICAgICAgICAgICBpbnQgeXlsO1wKKysgICAgICAgICAgICAgICAgeXlfc2l6ZV90IHl5
bDtcCisgICAgICAgICAgICAgICAgIGZvciAoIHl5bCA9IG47IHl5bCA8IHl5bGVuZzsgKyt5eWwg
KVwKKyAgICAgICAgICAgICAgICAgICAgIGlmICggeXl0ZXh0W3l5bF0gPT0gJ1xuJyApXAorICAg
ICAgICAgICAgICAgICAgICAgICAgIC0teXlsaW5lbm87XAorQEAgLTIyNiwxMSArMjMyLDYgQEAg
dHlwZWRlZiBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlICpZWV9CVUZGRVJfU1RBVEU7CisgCisgI2Rl
ZmluZSB1bnB1dChjKSB5eXVucHV0KCBjLCB5eWctPnl5dGV4dF9wdHIgLCB5eXNjYW5uZXIgKQor
IAorLSNpZm5kZWYgWVlfVFlQRURFRl9ZWV9TSVpFX1QKKy0jZGVmaW5lIFlZX1RZUEVERUZfWVlf
U0laRV9UCistdHlwZWRlZiBzaXplX3QgeXlfc2l6ZV90OworLSNlbmRpZgorLQorICNpZm5kZWYg
WVlfU1RSVUNUX1lZX0JVRkZFUl9TVEFURQorICNkZWZpbmUgWVlfU1RSVUNUX1lZX0JVRkZFUl9T
VEFURQorIHN0cnVjdCB5eV9idWZmZXJfc3RhdGUKK0BAIC0yNDgsNyArMjQ5LDcgQEAgc3RydWN0
IHl5X2J1ZmZlcl9zdGF0ZQorIAkvKiBOdW1iZXIgb2YgY2hhcmFjdGVycyByZWFkIGludG8geXlf
Y2hfYnVmLCBub3QgaW5jbHVkaW5nIEVPQgorIAkgKiBjaGFyYWN0ZXJzLgorIAkgKi8KKy0JaW50
IHl5X25fY2hhcnM7CisrCXl5X3NpemVfdCB5eV9uX2NoYXJzOworIAorIAkvKiBXaGV0aGVyIHdl
ICJvd24iIHRoZSBidWZmZXIgLSBpLmUuLCB3ZSBrbm93IHdlIGNyZWF0ZWQgaXQsCisgCSAqIGFu
ZCBjYW4gcmVhbGxvYygpIGl0IHRvIGdyb3cgaXQsIGFuZCBzaG91bGQgZnJlZSgpIGl0IHRvCitA
QCAtMzI3LDcgKzMyOCw3IEBAIHN0YXRpYyB2b2lkIHl5X2luaXRfYnVmZmVyIChZWV9CVUZGRVJf
U1RBVEUgYixGSUxFICpmaWxlICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAKKyBZWV9CVUZGRVJf
U1RBVEUgeXlfc2Nhbl9idWZmZXIgKGNoYXIgKmJhc2UseXlfc2l6ZV90IHNpemUgLHl5c2Nhbl90
IHl5c2Nhbm5lciApOworIFlZX0JVRkZFUl9TVEFURSB5eV9zY2FuX3N0cmluZyAoeXljb25zdCBj
aGFyICp5eV9zdHIgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworLVlZX0JVRkZFUl9TVEFURSB5eV9z
Y2FuX2J5dGVzICh5eWNvbnN0IGNoYXIgKmJ5dGVzLGludCBsZW4gLHl5c2Nhbl90IHl5c2Nhbm5l
ciApOworK1lZX0JVRkZFUl9TVEFURSB5eV9zY2FuX2J5dGVzICh5eWNvbnN0IGNoYXIgKmJ5dGVz
LHl5X3NpemVfdCBsZW4gLHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorIHZvaWQgKnl5YWxsb2Mg
KHl5X3NpemVfdCAseXlzY2FuX3QgeXlzY2FubmVyICk7Cisgdm9pZCAqeXlyZWFsbG9jICh2b2lk
ICoseXlfc2l6ZV90ICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKK0BAIC0zNzgsNyArMzc5LDcgQEAg
c3RhdGljIHZvaWQgeXlfZmF0YWxfZXJyb3IgKHl5Y29uc3QgY2hhciBtc2dbXSAseXlzY2FuX3Qg
eXlzY2FubmVyICk7CisgICovCisgI2RlZmluZSBZWV9ET19CRUZPUkVfQUNUSU9OIFwKKyAJeXln
LT55eXRleHRfcHRyID0geXlfYnA7IFwKKy0JeXlsZW5nID0gKHNpemVfdCkgKHl5X2NwIC0geXlf
YnApOyBcCisrCXl5bGVuZyA9ICh5eV9zaXplX3QpICh5eV9jcCAtIHl5X2JwKTsgXAorIAl5eWct
Pnl5X2hvbGRfY2hhciA9ICp5eV9jcDsgXAorIAkqeXlfY3AgPSAnXDAnOyBcCisgCXl5Zy0+eXlf
Y19idWZfcCA9IHl5X2NwOworQEAgLTEwMzUsOCArMTAzNiw4IEBAIHN0cnVjdCB5eWd1dHNfdAor
ICAgICBzaXplX3QgeXlfYnVmZmVyX3N0YWNrX21heDsgLyoqPCBjYXBhY2l0eSBvZiBzdGFjay4g
Ki8KKyAgICAgWVlfQlVGRkVSX1NUQVRFICogeXlfYnVmZmVyX3N0YWNrOyAvKio8IFN0YWNrIGFz
IGFuIGFycmF5LiAqLworICAgICBjaGFyIHl5X2hvbGRfY2hhcjsKKy0gICAgaW50IHl5X25fY2hh
cnM7CistICAgIGludCB5eWxlbmdfcjsKKysgICAgeXlfc2l6ZV90IHl5X25fY2hhcnM7CisrICAg
IHl5X3NpemVfdCB5eWxlbmdfcjsKKyAgICAgY2hhciAqeXlfY19idWZfcDsKKyAgICAgaW50IHl5
X2luaXQ7CisgICAgIGludCB5eV9zdGFydDsKK0BAIC0xMDg5LDcgKzEwOTAsNyBAQCBGSUxFICp5
eWdldF9vdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorIHZvaWQgeXlzZXRfb3V0ICAoRklM
RSAqIG91dF9zdHIgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorLWludCB5eWdldF9sZW5nICh5
eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyt5eV9zaXplX3QgeXlnZXRfbGVuZyAoeXlzY2FuX3QgeXlz
Y2FubmVyICk7CisgCisgY2hhciAqeXlnZXRfdGV4dCAoeXlzY2FuX3QgeXlzY2FubmVyICk7Cisg
CitAQCAtMTE1OCw3ICsxMTU5LDcgQEAgc3RhdGljIGludCBpbnB1dCAoeXlzY2FuX3QgeXlzY2Fu
bmVyICk7CisgCWlmICggWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9pc19pbnRlcmFjdGl2
ZSApIFwKKyAJCXsgXAorIAkJaW50IGMgPSAnKic7IFwKKy0JCWludCBuOyBcCisrCQl5eV9zaXpl
X3QgbjsgXAorIAkJZm9yICggbiA9IDA7IG4gPCBtYXhfc2l6ZSAmJiBcCisgCQkJICAgICAoYyA9
IGdldGMoIHl5aW4gKSkgIT0gRU9GICYmIGMgIT0gJ1xuJzsgKytuICkgXAorIAkJCWJ1ZltuXSA9
IChjaGFyKSBjOyBcCitAQCAtMTMxNyw3ICsxMzE4LDcgQEAgeXlfZmluZF9hY3Rpb246CisgCisg
CQlpZiAoIHl5X2FjdCAhPSBZWV9FTkRfT0ZfQlVGRkVSICYmIHl5X3J1bGVfY2FuX21hdGNoX2Vv
bFt5eV9hY3RdICkKKyAJCQl7CistCQkJaW50IHl5bDsKKysJCQl5eV9zaXplX3QgeXlsOworIAkJ
CWZvciAoIHl5bCA9IDA7IHl5bCA8IHl5bGVuZzsgKyt5eWwgKQorIAkJCQlpZiAoIHl5dGV4dFt5
eWxdID09ICdcbicgKQorIAkJCQkJICAgCitAQCAtMjIwMyw3ICsyMjA0LDcgQEAgc3RhdGljIGlu
dCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAKKyAJZWxzZQorIAkJ
eworLQkJCWludCBudW1fdG9fcmVhZCA9CisrCQkJeXlfc2l6ZV90IG51bV90b19yZWFkID0KKyAJ
CQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2J1Zl9zaXplIC0gbnVtYmVyX3RvX21vdmUg
LSAxOworIAorIAkJd2hpbGUgKCBudW1fdG9fcmVhZCA8PSAwICkKK0BAIC0yMjE3LDcgKzIyMTgs
NyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQor
IAorIAkJCWlmICggYi0+eXlfaXNfb3VyX2J1ZmZlciApCisgCQkJCXsKKy0JCQkJaW50IG5ld19z
aXplID0gYi0+eXlfYnVmX3NpemUgKiAyOworKwkJCQl5eV9zaXplX3QgbmV3X3NpemUgPSBiLT55
eV9idWZfc2l6ZSAqIDI7CisgCisgCQkJCWlmICggbmV3X3NpemUgPD0gMCApCisgCQkJCQliLT55
eV9idWZfc2l6ZSArPSBiLT55eV9idWZfc2l6ZSAvIDg7CitAQCAtMjI0OCw3ICsyMjQ5LDcgQEAg
c3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAKKyAJ
CS8qIFJlYWQgaW4gbW9yZSBkYXRhLiAqLworIAkJWVlfSU5QVVQoICgmWVlfQ1VSUkVOVF9CVUZG
RVJfTFZBTFVFLT55eV9jaF9idWZbbnVtYmVyX3RvX21vdmVdKSwKKy0JCQl5eWctPnl5X25fY2hh
cnMsIChzaXplX3QpIG51bV90b19yZWFkICk7CisrCQkJeXlnLT55eV9uX2NoYXJzLCBudW1fdG9f
cmVhZCApOworIAorIAkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9uX2NoYXJzID0geXln
LT55eV9uX2NoYXJzOworIAkJfQorQEAgLTIzNzMsNyArMjM3NCw3IEBAIHN0YXRpYyBpbnQgeXlf
Z2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgCisgCQllbHNlCisgCQkJeyAv
KiBuZWVkIG1vcmUgaW5wdXQgKi8KKy0JCQlpbnQgb2Zmc2V0ID0geXlnLT55eV9jX2J1Zl9wIC0g
eXlnLT55eXRleHRfcHRyOworKwkJCXl5X3NpemVfdCBvZmZzZXQgPSB5eWctPnl5X2NfYnVmX3Ag
LSB5eWctPnl5dGV4dF9wdHI7CisgCQkJKyt5eWctPnl5X2NfYnVmX3A7CisgCisgCQkJc3dpdGNo
ICggeXlfZ2V0X25leHRfYnVmZmVyKCB5eXNjYW5uZXIgKSApCitAQCAtMjY2MCw3ICsyNjYxLDcg
QEAgdm9pZCB5eXBvcF9idWZmZXJfc3RhdGUgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAgKi8KKyBz
dGF0aWMgdm9pZCB5eWVuc3VyZV9idWZmZXJfc3RhY2sgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyB7
CistCWludCBudW1fdG9fYWxsb2M7CisrCXl5X3NpemVfdCBudW1fdG9fYWxsb2M7CisgICAgIHN0
cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKKyAKKyAJ
aWYgKCF5eWctPnl5X2J1ZmZlcl9zdGFjaykgeworQEAgLTI3NTgsMTIgKzI3NTksMTEgQEAgWVlf
QlVGRkVSX1NUQVRFIHl5X3NjYW5fc3RyaW5nICh5eWNvbnN0IGNoYXIgKiB5eXN0ciAsIHl5c2Nh
bl90IHl5c2Nhbm5lcikKKyAgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVjdC4K
KyAgKiBAcmV0dXJuIHRoZSBuZXdseSBhbGxvY2F0ZWQgYnVmZmVyIHN0YXRlIG9iamVjdC4KKyAg
Ki8KKy1ZWV9CVUZGRVJfU1RBVEUgeXlfc2Nhbl9ieXRlcyAgKHl5Y29uc3QgY2hhciAqIHl5Ynl0
ZXMsIGludCAgX3l5Ynl0ZXNfbGVuICwgeXlzY2FuX3QgeXlzY2FubmVyKQorK1lZX0JVRkZFUl9T
VEFURSB5eV9zY2FuX2J5dGVzICAoeXljb25zdCBjaGFyICogeXlieXRlcywgeXlfc2l6ZV90ICBf
eXlieXRlc19sZW4gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCisgeworIAlZWV9CVUZGRVJfU1RBVEUg
YjsKKyAJY2hhciAqYnVmOworLQl5eV9zaXplX3QgbjsKKy0JaW50IGk7CisrCXl5X3NpemVfdCBu
LCBpOworICAgICAKKyAJLyogR2V0IG1lbW9yeSBmb3IgZnVsbCBidWZmZXIsIGluY2x1ZGluZyBz
cGFjZSBmb3IgdHJhaWxpbmcgRU9CJ3MuICovCisgCW4gPSBfeXlieXRlc19sZW4gKyAyOworQEAg
LTI5MTMsNyArMjkxMyw3IEBAIEZJTEUgKnl5Z2V0X291dCAgKHl5c2Nhbl90IHl5c2Nhbm5lcikK
KyAvKiogR2V0IHRoZSBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4uCisgICogQHBhcmFtIHl5
c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCisgICovCistaW50IHl5Z2V0X2xlbmcgICh5eXNj
YW5fdCB5eXNjYW5uZXIpCisreXlfc2l6ZV90IHl5Z2V0X2xlbmcgICh5eXNjYW5fdCB5eXNjYW5u
ZXIpCisgeworICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5
eXNjYW5uZXI7CisgICAgIHJldHVybiB5eWxlbmc7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvQmFzZVR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCShyZXZpc2lvbiAxNTI5NzkpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQmFzZVR5cGVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkwLDEwICs5MCw2IEBAIGVudW0gVFF1YWxpZmllcgogICAgIEV2cUludmFy
aWFudFZhcnlpbmdPdXQsICAgIC8vIHZlcnRleCBzaGFkZXJzIG9ubHkgIHJlYWQvd3JpdGUKICAg
ICBFdnFVbmlmb3JtLCAgICAgICAvLyBSZWFkb25seSwgdmVydGV4IGFuZCBmcmFnbWVudAogCi0g
ICAgLy8gcGFjay91bnBhY2sgaW5wdXQgYW5kIG91dHB1dAotICAgIEV2cUlucHV0LAotICAgIEV2
cU91dHB1dCwKLQogICAgIC8vIHBhcmFtZXRlcnMKICAgICBFdnFJbiwKICAgICBFdnFPdXQsCkBA
IC0xMTIsNiArMTA4LDcgQEAgZW51bSBUUXVhbGlmaWVyCiAgICAgLy8gYnVpbHQtaW5zIHdyaXR0
ZW4gYnkgZnJhZ21lbnQgc2hhZGVyCiAgICAgRXZxRnJhZ0NvbG9yLAogICAgIEV2cUZyYWdEYXRh
LAorICAgIEV2cUZyYWdEZXB0aCwKIAogICAgIC8vIGVuZCBvZiBsaXN0CiAgICAgRXZxTGFzdApA
QCAtMTM3LDE0ICsxMzQsMTMgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGdldFF1YWxpZmllclN0cmlu
ZyhUUQogICAgIGNhc2UgRXZxSW46ICAgICAgICAgICAgIHJldHVybiAiaW4iOyAgICAgICAgICAg
ICBicmVhazsKICAgICBjYXNlIEV2cU91dDogICAgICAgICAgICByZXR1cm4gIm91dCI7ICAgICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFJbk91dDogICAgICAgICAgcmV0dXJuICJpbm91dCI7
ICAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxSW5wdXQ6ICAgICAgICAgIHJldHVybiAiaW5w
dXQiOyAgICAgICAgICBicmVhazsKLSAgICBjYXNlIEV2cU91dHB1dDogICAgICAgICByZXR1cm4g
Im91dHB1dCI7ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFQb3NpdGlvbjogICAgICAgcmV0
dXJuICJQb3NpdGlvbiI7ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxUG9pbnRTaXplOiAgICAg
IHJldHVybiAiUG9pbnRTaXplIjsgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb29yZDog
ICAgICByZXR1cm4gIkZyYWdDb29yZCI7ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFGcm9udEZh
Y2luZzogICAgcmV0dXJuICJGcm9udEZhY2luZyI7ICAgIGJyZWFrOwogICAgIGNhc2UgRXZxRnJh
Z0NvbG9yOiAgICAgIHJldHVybiAiRnJhZ0NvbG9yIjsgICAgICBicmVhazsKICAgICBjYXNlIEV2
cUZyYWdEYXRhOiAgICAgICByZXR1cm4gIkZyYWdEYXRhIjsgICAgICBicmVhazsKKyAgICBjYXNl
IEV2cUZyYWdEZXB0aDogICAgICByZXR1cm4gIkZyYWdEZXB0aCI7ICAgICBicmVhazsKICAgICBk
ZWZhdWx0OiAgICAgICAgICAgICAgICByZXR1cm4gInVua25vd24gcXVhbGlmaWVyIjsKICAgICB9
CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29kZUdlbkhM
U0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9Db2RlR2VuSExTTC5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuSExTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE0LDkg
KzE0LDExIEBACiBUQ29tcGlsZXIqIENvbnN0cnVjdENvbXBpbGVyKAogICAgIFNoU2hhZGVyVHlw
ZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KQogewotICBz
d2l0Y2ggKG91dHB1dCkgewotICAgIGNhc2UgU0hfSExTTF9PVVRQVVQ6Ci0gICAgICByZXR1cm4g
bmV3IFRyYW5zbGF0b3JITFNMKHR5cGUsIHNwZWMpOworICBzd2l0Y2ggKG91dHB1dCkKKyAgewor
ICAgIGNhc2UgU0hfSExTTDlfT1VUUFVUOgorICAgIGNhc2UgU0hfSExTTDExX09VVFBVVDoKKyAg
ICAgIHJldHVybiBuZXcgVHJhbnNsYXRvckhMU0wodHlwZSwgc3BlYywgb3V0cHV0KTsKICAgICBk
ZWZhdWx0OgogICAgICAgcmV0dXJuIE5VTEw7CiAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9Db21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tbW9uLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21tb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMTQsMjQgKzE0LDEyIEBACiAKICNpbmNsdWRlICJjb21waWxlci9Qb29sQWxsb2MuaCIK
IAotLy8gV2UgbmVlZCB0d28gcGllY2VzIG9mIGluZm9ybWF0aW9uIHRvIHJlcG9ydCBlcnJvcnMv
d2FybmluZ3MgLSBzdHJpbmcgYW5kCi0vLyBsaW5lIG51bWJlci4gV2UgZW5jb2RlIHRoZXNlIGlu
dG8gYSBzaW5nbGUgaW50IHNvIHRoYXQgaXQgY2FuIGJlIGVhc2lseQotLy8gaW5jcmVtZW50ZWQv
ZGVjcmVtZW50ZWQgYnkgbGV4ZXIuIFRoZSByaWdodCBTT1VSQ0VfTE9DX0xJTkVfU0laRSBiaXRz
IHN0b3JlCi0vLyBsaW5lIG51bWJlciB3aGlsZSB0aGUgcmVzdCBzdG9yZSB0aGUgc3RyaW5nIG51
bWJlci4gU2luY2UgdGhlIHNoYWRlcnMgYXJlCi0vLyB1c3VhbGx5IHNtYWxsLCB3ZSBzaG91bGQg
bm90IHJ1biBvdXQgb2YgbWVtb3J5LiBTT1VSQ0VfTE9DX0xJTkVfU0laRQotLy8gY2FuIGJlIGlu
Y3JlYXNlZCB0byBhbGxldmlhdGUgdGhpcyBpc3N1ZS4KLXR5cGVkZWYgaW50IFRTb3VyY2VMb2M7
Ci1jb25zdCB1bnNpZ25lZCBpbnQgU09VUkNFX0xPQ19MSU5FX1NJWkUgPSAxNjsgIC8vIGluIGJp
dHMuCi1jb25zdCB1bnNpZ25lZCBpbnQgU09VUkNFX0xPQ19MSU5FX01BU0sgPSAoMSA8PCBTT1VS
Q0VfTE9DX0xJTkVfU0laRSkgLSAxOwotCi1pbmxpbmUgVFNvdXJjZUxvYyBFbmNvZGVTb3VyY2VM
b2MoaW50IHN0cmluZywgaW50IGxpbmUpIHsKLSAgICByZXR1cm4gKHN0cmluZyA8PCBTT1VSQ0Vf
TE9DX0xJTkVfU0laRSkgfCAobGluZSAmIFNPVVJDRV9MT0NfTElORV9NQVNLKTsKLX0KLQotaW5s
aW5lIHZvaWQgRGVjb2RlU291cmNlTG9jKFRTb3VyY2VMb2MgbG9jLCBpbnQqIHN0cmluZywgaW50
KiBsaW5lKSB7Ci0gICAgaWYgKHN0cmluZykgKnN0cmluZyA9IGxvYyA+PiBTT1VSQ0VfTE9DX0xJ
TkVfU0laRTsKLSAgICBpZiAobGluZSkgKmxpbmUgPSBsb2MgJiBTT1VSQ0VfTE9DX0xJTkVfTUFT
SzsKLX0KK3N0cnVjdCBUU291cmNlTG9jIHsKKyAgICBpbnQgZmlyc3RfZmlsZTsKKyAgICBpbnQg
Zmlyc3RfbGluZTsKKyAgICBpbnQgbGFzdF9maWxlOworICAgIGludCBsYXN0X2xpbmU7Cit9Owog
CiAvLwogLy8gUHV0IFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUgaW4gYmFzZSBjbGFzc2VzIHRv
IG1ha2UgdGhlbSB1c2UgdGhpcyBzY2hlbWUuCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxlci5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTEgKzEsMTEgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCiAvLwogCiAjaW5jbHVkZSAiY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCIK
LSNpbmNsdWRlICJjb21waWxlci9EZXRlY3RSZWN1cnNpb24uaCIKKyNpbmNsdWRlICJjb21waWxl
ci9EZXRlY3RDYWxsRGVwdGguaCIKICNpbmNsdWRlICJjb21waWxlci9Gb3JMb29wVW5yb2xsLmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0lu
aXRpYWxpemVQYXJzZUNvbnRleHQuaCIKQEAgLTI3LDUxICsyNyw2IEBAIGJvb2wgaXNXZWJHTEJh
c2VkU3BlYyhTaFNoYWRlclNwZWMgc3BlYykKIH0KIAogbmFtZXNwYWNlIHsKLWJvb2wgSW5pdGlh
bGl6ZVN5bWJvbFRhYmxlKAotICAgIGNvbnN0IFRCdWlsdEluU3RyaW5ncyYgYnVpbHRJblN0cmlu
Z3MsCi0gICAgU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBjb25zdCBTaEJ1
aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcywKLSAgICBUSW5mb1NpbmsmIGluZm9TaW5rLCBUU3lt
Ym9sVGFibGUmIHN5bWJvbFRhYmxlKQotewotICAgIFRJbnRlcm1lZGlhdGUgaW50ZXJtZWRpYXRl
KGluZm9TaW5rKTsKLSAgICBURXh0ZW5zaW9uQmVoYXZpb3IgZXh0QmVoYXZpb3I7Ci0gICAgSW5p
dEV4dGVuc2lvbkJlaGF2aW9yKHJlc291cmNlcywgZXh0QmVoYXZpb3IpOwotICAgIC8vIFRoZSBi
dWlsdGlucyBkZWxpYmVyYXRlbHkgZG9uJ3Qgc3BlY2lmeSBwcmVjaXNpb25zIGZvciB0aGUgZnVu
Y3Rpb24KLSAgICAvLyBhcmd1bWVudHMgYW5kIHJldHVybiB0eXBlcy4gRm9yIHRoYXQgcmVhc29u
IHdlIGRvbid0IHRyeSB0byBjaGVjayB0aGVtLgotICAgIFRQYXJzZUNvbnRleHQgcGFyc2VDb250
ZXh0KHN5bWJvbFRhYmxlLCBleHRCZWhhdmlvciwgaW50ZXJtZWRpYXRlLCB0eXBlLCBzcGVjLCAw
LCBmYWxzZSwgTlVMTCwgaW5mb1NpbmspOwotICAgIHBhcnNlQ29udGV4dC5mcmFnbWVudFByZWNp
c2lvbkhpZ2ggPSByZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID09IDE7Ci0KLSAgICBH
bG9iYWxQYXJzZUNvbnRleHQgPSAmcGFyc2VDb250ZXh0OwotCi0gICAgYXNzZXJ0KHN5bWJvbFRh
YmxlLmlzRW1wdHkoKSk7ICAgICAgIAotICAgIC8vCi0gICAgLy8gUGFyc2UgdGhlIGJ1aWx0LWlu
cy4gIFRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIG9uY2UgcGVyCi0gICAgLy8gbGFuZ3VhZ2Ugc3lt
Ym9sIHRhYmxlLgotICAgIC8vCi0gICAgLy8gUHVzaCB0aGUgc3ltYm9sIHRhYmxlIHRvIGdpdmUg
aXQgYW4gaW5pdGlhbCBzY29wZS4gIFRoaXMKLSAgICAvLyBwdXNoIHNob3VsZCBub3QgaGF2ZSBh
IGNvcnJlc3BvbmRpbmcgcG9wLCBzbyB0aGF0IGJ1aWx0LWlucwotICAgIC8vIGFyZSBwcmVzZXJ2
ZWQsIGFuZCB0aGUgdGVzdCBmb3IgYW4gZW1wdHkgdGFibGUgZmFpbHMuCi0gICAgLy8KLSAgICBz
eW1ib2xUYWJsZS5wdXNoKCk7Ci0KLSAgICBmb3IgKFRCdWlsdEluU3RyaW5nczo6Y29uc3RfaXRl
cmF0b3IgaSA9IGJ1aWx0SW5TdHJpbmdzLmJlZ2luKCk7IGkgIT0gYnVpbHRJblN0cmluZ3MuZW5k
KCk7ICsraSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGJ1aWx0SW5TaGFkZXJzID0gaS0+
Y19zdHIoKTsKLSAgICAgICAgaW50IGJ1aWx0SW5MZW5ndGhzID0gc3RhdGljX2Nhc3Q8aW50Pihp
LT5zaXplKCkpOwotICAgICAgICBpZiAoYnVpbHRJbkxlbmd0aHMgPD0gMCkKLSAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICBpZiAoUGFQYXJzZVN0cmluZ3MoMSwgJmJ1aWx0SW5TaGFkZXJz
LCAmYnVpbHRJbkxlbmd0aHMsICZwYXJzZUNvbnRleHQpICE9IDApCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVuYWJs
ZSB0byBwYXJzZSBidWlsdC1pbnMiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIElkZW50aWZ5QnVpbHRJbnModHlwZSwgc3BlYywgcmVzb3VyY2Vz
LCBzeW1ib2xUYWJsZSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogY2xhc3MgVFNjb3BlZFBv
b2xBbGxvY2F0b3IgewogcHVibGljOgogICAgIFRTY29wZWRQb29sQWxsb2NhdG9yKFRQb29sQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIGJvb2wgcHVzaFBvcCkKQEAgLTEwMyw2ICs1OCw5IEBAIFRTaEhh
bmRsZUJhc2U6On5UU2hIYW5kbGVCYXNlKCkgewogVENvbXBpbGVyOjpUQ29tcGlsZXIoU2hTaGFk
ZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjKQogICAgIDogc2hhZGVyVHlwZSh0eXBlKSwK
ICAgICAgIHNoYWRlclNwZWMoc3BlYyksCisgICAgICBtYXhVbmlmb3JtVmVjdG9ycygwKSwKKyAg
ICAgIG1heEV4cHJlc3Npb25Db21wbGV4aXR5KDApLAorICAgICAgbWF4Q2FsbFN0YWNrRGVwdGgo
MCksCiAgICAgICBmcmFnbWVudFByZWNpc2lvbkhpZ2goZmFsc2UpLAogICAgICAgY2xhbXBpbmdT
dHJhdGVneShTSF9DTEFNUF9XSVRIX0NMQU1QX0lOVFJJTlNJQyksCiAgICAgICBidWlsdEluRnVu
Y3Rpb25FbXVsYXRvcih0eXBlKQpAQCAtMTIxLDYgKzc5LDggQEAgYm9vbCBUQ29tcGlsZXI6Oklu
aXQoY29uc3QgU2hCdWlsdEluUmVzbwogICAgIG1heFVuaWZvcm1WZWN0b3JzID0gKHNoYWRlclR5
cGUgPT0gU0hfVkVSVEVYX1NIQURFUikgPwogICAgICAgICByZXNvdXJjZXMuTWF4VmVydGV4VW5p
Zm9ybVZlY3RvcnMgOgogICAgICAgICByZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9y
czsKKyAgICBtYXhFeHByZXNzaW9uQ29tcGxleGl0eSA9IHJlc291cmNlcy5NYXhFeHByZXNzaW9u
Q29tcGxleGl0eTsKKyAgICBtYXhDYWxsU3RhY2tEZXB0aCA9IHJlc291cmNlcy5NYXhDYWxsU3Rh
Y2tEZXB0aDsKICAgICBUU2NvcGVkUG9vbEFsbG9jYXRvciBzY29wZWRBbGxvYygmYWxsb2NhdG9y
LCBmYWxzZSk7CiAKICAgICAvLyBHZW5lcmF0ZSBidWlsdC1pbiBzeW1ib2wgdGFibGUuCkBAIC0x
NzAsOCArMTMwLDEwIEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMK
ICAgICAvLyBXZSBwcmVzZXJ2ZSBzeW1ib2xzIGF0IHRoZSBidWlsdC1pbiBsZXZlbCBmcm9tIGNv
bXBpbGUtdG8tY29tcGlsZS4KICAgICAvLyBTdGFydCBwdXNoaW5nIHRoZSB1c2VyLWRlZmluZWQg
c3ltYm9scyBhdCBnbG9iYWwgbGV2ZWwuCiAgICAgc3ltYm9sVGFibGUucHVzaCgpOwotICAgIGlm
ICghc3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpKQotICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJXcm9uZyBzeW1ib2wgdGFibGUgbGV2ZWwiKTsK
KyAgICBpZiAoIXN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSkgeworICAgICAgICBpbmZvU2lu
ay5pbmZvLnByZWZpeChFUHJlZml4SW50ZXJuYWxFcnJvcik7CisgICAgICAgIGluZm9TaW5rLmlu
Zm8gPDwgIldyb25nIHN5bWJvbCB0YWJsZSBsZXZlbCI7CisgICAgfQogCiAgICAgLy8gUGFyc2Ug
c2hhZGVyLgogICAgIGJvb2wgc3VjY2VzcyA9CkBAIC0xODIsNyArMTQ0LDcgQEAgYm9vbCBUQ29t
cGlsZXI6OmNvbXBpbGUoY29uc3QgY2hhciogY29ucwogICAgICAgICBzdWNjZXNzID0gaW50ZXJt
ZWRpYXRlLnBvc3RQcm9jZXNzKHJvb3QpOwogCiAgICAgICAgIGlmIChzdWNjZXNzKQotICAgICAg
ICAgICAgc3VjY2VzcyA9IGRldGVjdFJlY3Vyc2lvbihyb290KTsKKyAgICAgICAgICAgIHN1Y2Nl
c3MgPSBkZXRlY3RDYWxsRGVwdGgocm9vdCwgaW5mb1NpbmssIChjb21waWxlT3B0aW9ucyAmIFNI
X0xJTUlUX0NBTExfU1RBQ0tfREVQVEgpICE9IDApOwogCiAgICAgICAgIGlmIChzdWNjZXNzICYm
IChjb21waWxlT3B0aW9ucyAmIFNIX1ZBTElEQVRFX0xPT1BfSU5ERVhJTkcpKQogICAgICAgICAg
ICAgc3VjY2VzcyA9IHZhbGlkYXRlTGltaXRhdGlvbnMocm9vdCk7CkBAIC0yMDUsNiArMTY3LDEw
IEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAgICAgaWYg
KHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfQ0xBTVBfSU5ESVJFQ1RfQVJSQVlfQk9V
TkRTKSkKICAgICAgICAgICAgIGFycmF5Qm91bmRzQ2xhbXBlci5NYXJrSW5kaXJlY3RBcnJheUJv
dW5kc0ZvckNsYW1waW5nKHJvb3QpOwogCisgICAgICAgIC8vIERpc2FsbG93IGV4cHJlc3Npb25z
IGRlZW1lZCB0b28gY29tcGxleC4KKyAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRp
b25zICYgU0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVYSVRZKSkKKyAgICAgICAgICAgIHN1Y2Nl
c3MgPSBsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5KHJvb3QpOworCiAgICAgICAgIC8vIENhbGwg
bWFwTG9uZ1ZhcmlhYmxlTmFtZXMoKSBiZWZvcmUgY29sbGVjdEF0dHJpYnNVbmlmb3JtcygpIHNv
IGluCiAgICAgICAgIC8vIGNvbGxlY3RBdHRyaWJzVW5pZm9ybXMoKSB3ZSBhbHJlYWR5IGhhdmUg
dGhlIG1hcHBlZCBzeW1ib2wgbmFtZXMgYW5kCiAgICAgICAgIC8vIHdlIGNvdWxkIGNvbXBvc2l0
ZSBtYXBwZWQgYW5kIG9yaWdpbmFsIHZhcmlhYmxlIG5hbWVzLgpAQCAtMjE3LDcgKzE4Myw4IEBA
IGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAgICAgICAgIGlm
IChjb21waWxlT3B0aW9ucyAmIFNIX0VORk9SQ0VfUEFDS0lOR19SRVNUUklDVElPTlMpIHsKICAg
ICAgICAgICAgICAgICBzdWNjZXNzID0gZW5mb3JjZVBhY2tpbmdSZXN0cmljdGlvbnMoKTsKICAg
ICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwgInRvbyBtYW55IHVuaWZvcm1zIik7CisgICAg
ICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ucHJlZml4KEVQcmVmaXhFcnJvcik7CisgICAg
ICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgInRvbyBtYW55IHVuaWZvcm1zIjsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIzOSwxMyArMjA2
LDQyIEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICByZXR1
cm4gc3VjY2VzczsKIH0KIAotYm9vbCBUQ29tcGlsZXI6OkluaXRCdWlsdEluU3ltYm9sVGFibGUo
Y29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCitib29sIFRDb21waWxlcjo6SW5p
dEJ1aWx0SW5TeW1ib2xUYWJsZShjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgJnJlc291cmNlcykK
IHsKLSAgICBUQnVpbHRJbnMgYnVpbHRJbnM7CisgICAgY29tcGlsZVJlc291cmNlcyA9IHJlc291
cmNlczsKKworICAgIGFzc2VydChzeW1ib2xUYWJsZS5pc0VtcHR5KCkpOworICAgIHN5bWJvbFRh
YmxlLnB1c2goKTsKIAotICAgIGJ1aWx0SW5zLmluaXRpYWxpemUoc2hhZGVyVHlwZSwgc2hhZGVy
U3BlYywgcmVzb3VyY2VzKTsKLSAgICByZXR1cm4gSW5pdGlhbGl6ZVN5bWJvbFRhYmxlKGJ1aWx0
SW5zLmdldEJ1aWx0SW5TdHJpbmdzKCksCi0gICAgICAgIHNoYWRlclR5cGUsIHNoYWRlclNwZWMs
IHJlc291cmNlcywgaW5mb1NpbmssIHN5bWJvbFRhYmxlKTsKKyAgICBUUHVibGljVHlwZSBpbnRl
Z2VyOworICAgIGludGVnZXIudHlwZSA9IEVidEludDsKKyAgICBpbnRlZ2VyLnNpemUgPSAxOwor
ICAgIGludGVnZXIubWF0cml4ID0gZmFsc2U7CisgICAgaW50ZWdlci5hcnJheSA9IGZhbHNlOwor
CisgICAgVFB1YmxpY1R5cGUgZmxvYXRpbmdQb2ludDsKKyAgICBmbG9hdGluZ1BvaW50LnR5cGUg
PSBFYnRGbG9hdDsKKyAgICBmbG9hdGluZ1BvaW50LnNpemUgPSAxOworICAgIGZsb2F0aW5nUG9p
bnQubWF0cml4ID0gZmFsc2U7CisgICAgZmxvYXRpbmdQb2ludC5hcnJheSA9IGZhbHNlOworCisg
ICAgc3dpdGNoKHNoYWRlclR5cGUpCisgICAgeworICAgICAgY2FzZSBTSF9GUkFHTUVOVF9TSEFE
RVI6CisgICAgICAgIHN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oaW50ZWdlciwgRWJw
TWVkaXVtKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNIX1ZFUlRFWF9TSEFERVI6Cisg
ICAgICAgIHN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oaW50ZWdlciwgRWJwSGlnaCk7
CisgICAgICAgIHN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oZmxvYXRpbmdQb2ludCwg
RWJwSGlnaCk7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlICYm
ICJMYW5ndWFnZSBub3Qgc3VwcG9ydGVkIik7CisgICAgfQorCisgICAgSW5zZXJ0QnVpbHRJbkZ1
bmN0aW9ucyhzaGFkZXJUeXBlLCBzaGFkZXJTcGVjLCByZXNvdXJjZXMsIHN5bWJvbFRhYmxlKTsK
KworICAgIElkZW50aWZ5QnVpbHRJbnMoc2hhZGVyVHlwZSwgc2hhZGVyU3BlYywgcmVzb3VyY2Vz
LCBzeW1ib2xUYWJsZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBUQ29tcGlsZXI6
OmNsZWFyUmVzdWx0cygpCkBAIC0yNjMsMTggKzI1OSwyNCBAQCB2b2lkIFRDb21waWxlcjo6Y2xl
YXJSZXN1bHRzKCkKICAgICBuYW1lTWFwLmNsZWFyKCk7CiB9CiAKLWJvb2wgVENvbXBpbGVyOjpk
ZXRlY3RSZWN1cnNpb24oVEludGVybU5vZGUqIHJvb3QpCitib29sIFRDb21waWxlcjo6ZGV0ZWN0
Q2FsbERlcHRoKFRJbnRlcm1Ob2RlKiByb290LCBUSW5mb1NpbmsmIGluZm9TaW5rLCBib29sIGxp
bWl0Q2FsbFN0YWNrRGVwdGgpCiB7Ci0gICAgRGV0ZWN0UmVjdXJzaW9uIGRldGVjdDsKKyAgICBE
ZXRlY3RDYWxsRGVwdGggZGV0ZWN0KGluZm9TaW5rLCBsaW1pdENhbGxTdGFja0RlcHRoLCBtYXhD
YWxsU3RhY2tEZXB0aCk7CiAgICAgcm9vdC0+dHJhdmVyc2UoJmRldGVjdCk7Ci0gICAgc3dpdGNo
IChkZXRlY3QuZGV0ZWN0UmVjdXJzaW9uKCkpIHsKLSAgICAgICAgY2FzZSBEZXRlY3RSZWN1cnNp
b246OmtFcnJvck5vbmU6CisgICAgc3dpdGNoIChkZXRlY3QuZGV0ZWN0Q2FsbERlcHRoKCkpIHsK
KyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvck5vbmU6CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBEZXRlY3RSZWN1cnNpb246OmtFcnJvck1pc3NpbmdN
YWluOgotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwgIk1p
c3NpbmcgbWFpbigpIik7CisgICAgICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JNaXNz
aW5nTWFpbjoKKyAgICAgICAgICAgIGluZm9TaW5rLmluZm8ucHJlZml4KEVQcmVmaXhFcnJvcik7
CisgICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJNaXNzaW5nIG1haW4oKSI7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjprRXJyb3JS
ZWN1cnNpb246CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3Ip
OworICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVj
dGVkIjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBEZXRlY3RSZWN1
cnNpb246OmtFcnJvclJlY3Vyc2lvbjoKLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2Fn
ZShFUHJlZml4RXJyb3IsICJGdW5jdGlvbiByZWN1cnNpb24gZGV0ZWN0ZWQiKTsKKyAgICAgICAg
Y2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvck1heERlcHRoRXhjZWVkZWQ6CisgICAgICAgICAg
ICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAgaW5mb1Np
bmsuaW5mbyA8PCAiRnVuY3Rpb24gY2FsbCBzdGFjayB0b28gZGVlcCI7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OwpAQCAtMzIwLDYgKzMyMiwyOCBAQCBib29sIFRDb21waWxlcjo6ZW5mb3JjZVRpbWluZ1Jlc3Ry
aWN0aW9uCiAgICAgfQogfQogCitib29sIFRDb21waWxlcjo6bGltaXRFeHByZXNzaW9uQ29tcGxl
eGl0eShUSW50ZXJtTm9kZSogcm9vdCkKK3sKKyAgICBUSW50ZXJtVHJhdmVyc2VyIHRyYXZlcnNl
cjsKKyAgICByb290LT50cmF2ZXJzZSgmdHJhdmVyc2VyKTsKKyAgICBURGVwZW5kZW5jeUdyYXBo
IGdyYXBoKHJvb3QpOworCisgICAgZm9yIChURnVuY3Rpb25DYWxsVmVjdG9yOjpjb25zdF9pdGVy
YXRvciBpdGVyID0gZ3JhcGguYmVnaW5Vc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbHMoKTsKKyAgICAg
ICAgIGl0ZXIgIT0gZ3JhcGguZW5kVXNlckRlZmluZWRGdW5jdGlvbkNhbGxzKCk7CisgICAgICAg
ICArK2l0ZXIpCisgICAgeworICAgICAgICBUR3JhcGhGdW5jdGlvbkNhbGwqIHNhbXBsZXJTeW1i
b2wgPSAqaXRlcjsKKyAgICAgICAgVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciBncmFwaFRyYXZl
cnNlcjsKKyAgICAgICAgc2FtcGxlclN5bWJvbC0+dHJhdmVyc2UoJmdyYXBoVHJhdmVyc2VyKTsK
KyAgICB9CisKKyAgICBpZiAodHJhdmVyc2VyLmdldE1heERlcHRoKCkgPiBtYXhFeHByZXNzaW9u
Q29tcGxleGl0eSkgeworICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJFeHByZXNzaW9uIHRvbyBj
b21wbGV4LiI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIGJvb2wgVENvbXBpbGVyOjplbmZvcmNlRnJhZ21lbnRTaGFkZXJUaW1pbmdSZXN0cmlj
dGlvbnMoY29uc3QgVERlcGVuZGVuY3lHcmFwaCYgZ3JhcGgpCiB7CiAgICAgUmVzdHJpY3RGcmFn
bWVudFNoYWRlclRpbWluZyByZXN0cmljdG9yKGluZm9TaW5rLmluZm8pOwpAQCAtMzYzLDYgKzM4
NywxMSBAQCBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIFRDb21waWxlcjo6Z2V0CiAgICAgcmV0
dXJuIGV4dGVuc2lvbkJlaGF2aW9yOwogfQogCitjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIFRD
b21waWxlcjo6Z2V0UmVzb3VyY2VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29tcGlsZVJlc291
cmNlczsKK30KKwogY29uc3QgQXJyYXlCb3VuZHNDbGFtcGVyJiBUQ29tcGlsZXI6OmdldEFycmF5
Qm91bmRzQ2xhbXBlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFycmF5Qm91bmRzQ2xhbXBlcjsK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db25zdGFudFVuaW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Nv
bnN0YW50VW5pb24uaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL0NvbnN0YW50VW5pb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTQsNiArMTQs
NyBAQCBwdWJsaWM6CiAgICAgQ29uc3RhbnRVbmlvbigpCiAgICAgewogICAgICAgICBpQ29uc3Qg
PSAwOworICAgICAgICB0eXBlID0gRWJ0Vm9pZDsKICAgICB9CiAKICAgICBQT09MX0FMTE9DQVRP
Ul9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpICAgICAgICAKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVw
dGguY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0RldGVjdENhbGxEZXB0aC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTg1IEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgi
CisjaW5jbHVkZSAiY29tcGlsZXIvSW5mb1NpbmsuaCIKKworRGV0ZWN0Q2FsbERlcHRoOjpGdW5j
dGlvbk5vZGU6OkZ1bmN0aW9uTm9kZShjb25zdCBUU3RyaW5nJiBmbmFtZSkKKyAgICA6IG5hbWUo
Zm5hbWUpLAorICAgICAgdmlzaXQoUHJlVmlzaXQpCit7Cit9CisKK2NvbnN0IFRTdHJpbmcmIERl
dGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpnZXROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbmFtZTsKK30KKwordm9pZCBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6YWRkQ2Fs
bGVlKAorICAgIERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlKiBjYWxsZWUpCit7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlm
IChjYWxsZWVzW2ldID09IGNhbGxlZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
Y2FsbGVlcy5wdXNoX2JhY2soY2FsbGVlKTsKK30KKworaW50IERldGVjdENhbGxEZXB0aDo6RnVu
Y3Rpb25Ob2RlOjpkZXRlY3RDYWxsRGVwdGgoRGV0ZWN0Q2FsbERlcHRoKiBkZXRlY3RDYWxsRGVw
dGgsIGludCBkZXB0aCkKK3sKKyAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOworICAgIEFT
U0VSVChkZXRlY3RDYWxsRGVwdGgpOworCisgICAgaW50IG1heERlcHRoID0gZGVwdGg7CisgICAg
dmlzaXQgPSBJblZpc2l0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXpl
KCk7ICsraSkgeworICAgICAgICBzd2l0Y2ggKGNhbGxlZXNbaV0tPnZpc2l0KSB7CisgICAgICAg
ICAgICBjYXNlIEluVmlzaXQ6CisgICAgICAgICAgICAgICAgLy8gY3ljbGUgZGV0ZWN0ZWQsIGku
ZS4sIHJlY3Vyc2lvbiBkZXRlY3RlZC4KKyAgICAgICAgICAgICAgICByZXR1cm4ga0luZmluaXRl
Q2FsbERlcHRoOworICAgICAgICAgICAgY2FzZSBQb3N0VmlzaXQ6CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIFByZVZpc2l0OiB7CisgICAgICAgICAgICAgICAgLy8g
Q2hlY2sgYmVmb3JlIHdlIHJlY3Vyc2Ugc28gd2UgZG9uJ3QgZ28gdG9vIGRlcHRoCisgICAgICAg
ICAgICAgICAgaWYgKGRldGVjdENhbGxEZXB0aC0+Y2hlY2tFeGNlZWRzTWF4RGVwdGgoZGVwdGgp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVwdGg7CisgICAgICAgICAgICAgICAgaW50
IGNhbGxEZXB0aCA9IGNhbGxlZXNbaV0tPmRldGVjdENhbGxEZXB0aChkZXRlY3RDYWxsRGVwdGgs
IGRlcHRoICsgMSk7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgYWZ0ZXIgd2UgcmVjdXJzZSBz
byB3ZSBjYW4gZXhpdCBpbW1lZGlhdGVseSBhbmQgcHJvdmlkZSBpbmZvLgorICAgICAgICAgICAg
ICAgIGlmIChkZXRlY3RDYWxsRGVwdGgtPmNoZWNrRXhjZWVkc01heERlcHRoKGNhbGxEZXB0aCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgZGV0ZWN0Q2FsbERlcHRoLT5nZXRJbmZvU2luaygpLmlu
Zm8gPDwgIjwtIiA8PCBjYWxsZWVzW2ldLT5nZXROYW1lKCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBjYWxsRGVwdGg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1h
eERlcHRoID0gc3RkOjptYXgoY2FsbERlcHRoLCBtYXhEZXB0aCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9CisgICAgdmlzaXQgPSBQb3N0VmlzaXQ7CisgICAgcmV0dXJuIG1heERlcHRoOworfQorCit2
b2lkIERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpyZXNldCgpCit7CisgICAgdmlzaXQg
PSBQcmVWaXNpdDsKK30KKworRGV0ZWN0Q2FsbERlcHRoOjpEZXRlY3RDYWxsRGVwdGgoVEluZm9T
aW5rJiBpbmZvU2luaywgYm9vbCBsaW1pdENhbGxTdGFja0RlcHRoLCBpbnQgbWF4Q2FsbFN0YWNr
RGVwdGgpCisgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSks
CisgICAgICBjdXJyZW50RnVuY3Rpb24oTlVMTCksCisgICAgICBpbmZvU2luayhpbmZvU2luayks
CisgICAgICBtYXhEZXB0aChsaW1pdENhbGxTdGFja0RlcHRoID8gbWF4Q2FsbFN0YWNrRGVwdGgg
OiBGdW5jdGlvbk5vZGU6OmtJbmZpbml0ZUNhbGxEZXB0aCkKK3sKK30KKworRGV0ZWN0Q2FsbERl
cHRoOjp+RGV0ZWN0Q2FsbERlcHRoKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1
bmN0aW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgZGVsZXRlIGZ1bmN0aW9uc1tpXTsKK30KKwor
Ym9vbCBEZXRlY3RDYWxsRGVwdGg6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJt
QWdncmVnYXRlKiBub2RlKQoreworICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAgICB7Cisg
ICAgICAgIGNhc2UgRU9wUHJvdG90eXBlOgorICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVjbGFy
YXRpb24uCisgICAgICAgICAgICAvLyBEb24ndCBhZGQgRnVuY3Rpb25Ob2RlIGhlcmUgYmVjYXVz
ZSBub2RlLT5nZXROYW1lKCkgaXMgdGhlCisgICAgICAgICAgICAvLyB1bm1hbmdsZWQgZnVuY3Rp
b24gbmFtZS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEZ1bmN0aW9uOiB7
CisgICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgorICAgICAgICAgICAgaWYgKHZp
c2l0ID09IFByZVZpc2l0KSB7CisgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uID0gZmlu
ZEZ1bmN0aW9uQnlOYW1lKG5vZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGN1
cnJlbnRGdW5jdGlvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5j
dGlvbiA9IG5ldyBGdW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb25zLnB1c2hfYmFjayhjdXJyZW50RnVuY3Rpb24pOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAodmlzaXQgPT0gUG9zdFZpc2l0KSB7CisgICAg
ICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uID0gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOiB7
CisgICAgICAgICAgICAvLyBGdW5jdGlvbiBjYWxsLgorICAgICAgICAgICAgaWYgKHZpc2l0ID09
IFByZVZpc2l0KSB7CisgICAgICAgICAgICAgICAgRnVuY3Rpb25Ob2RlKiBmdW5jID0gZmluZEZ1
bmN0aW9uQnlOYW1lKG5vZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKGZ1bmMg
PT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBmdW5jID0gbmV3IEZ1bmN0aW9uTm9kZShu
b2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMucHVzaF9iYWNr
KGZ1bmMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZ1
bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24tPmFkZENhbGxlZShm
dW5jKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgRGV0ZWN0Q2FsbERlcHRoOjpjaGVja0V4Y2VlZHNNYXhEZXB0aChpbnQgZGVw
dGgpCit7CisgICAgcmV0dXJuIGRlcHRoID49IG1heERlcHRoOworfQorCit2b2lkIERldGVjdENh
bGxEZXB0aDo6cmVzZXRGdW5jdGlvbk5vZGVzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZ1bmN0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBmdW5jdGlvbnNbaV0tPnJlc2V0
KCk7CisgICAgfQorfQorCitEZXRlY3RDYWxsRGVwdGg6OkVycm9yQ29kZSBEZXRlY3RDYWxsRGVw
dGg6OmRldGVjdENhbGxEZXB0aEZvckZ1bmN0aW9uKEZ1bmN0aW9uTm9kZSogZnVuYykKK3sKKyAg
ICBjdXJyZW50RnVuY3Rpb24gPSBOVUxMOworICAgIHJlc2V0RnVuY3Rpb25Ob2RlcygpOworCisg
ICAgaW50IG1heENhbGxEZXB0aCA9IGZ1bmMtPmRldGVjdENhbGxEZXB0aCh0aGlzLCAxKTsKKwor
ICAgIGlmIChtYXhDYWxsRGVwdGggPT0gRnVuY3Rpb25Ob2RlOjprSW5maW5pdGVDYWxsRGVwdGgp
CisgICAgICAgIHJldHVybiBrRXJyb3JSZWN1cnNpb247CisKKyAgICBpZiAobWF4Q2FsbERlcHRo
ID49IG1heERlcHRoKQorICAgICAgICByZXR1cm4ga0Vycm9yTWF4RGVwdGhFeGNlZWRlZDsKKwor
ICAgIHJldHVybiBrRXJyb3JOb25lOworfQorCitEZXRlY3RDYWxsRGVwdGg6OkVycm9yQ29kZSBE
ZXRlY3RDYWxsRGVwdGg6OmRldGVjdENhbGxEZXB0aCgpCit7CisgICAgaWYgKG1heERlcHRoICE9
IEZ1bmN0aW9uTm9kZTo6a0luZmluaXRlQ2FsbERlcHRoKSB7CisgICAgICAgIC8vIENoZWNrIGFs
bCBmdW5jdGlvbnMgYmVjYXVzZSB0aGUgZHJpdmVyIG1heSBmYWlsIG9uIHRoZW0KKyAgICAgICAg
Ly8gVE9ETzogQmVmb3JlIGRldGVjdGluZ1JlY3Vyc2lvbiwgc3RyaXAgdW51c2VkIGZ1bmN0aW9u
cy4KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIEVycm9yQ29kZSBlcnJvciA9IGRldGVjdENhbGxEZXB0aEZvckZ1bmN0
aW9uKGZ1bmN0aW9uc1tpXSk7CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0ga0Vycm9yTm9uZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgICBGdW5jdGlvbk5vZGUqIG1haW4gPSBmaW5kRnVuY3Rpb25CeU5hbWUoIm1haW4oIik7
CisgICAgICAgIGlmIChtYWluID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4ga0Vycm9yTWlz
c2luZ01haW47CisKKyAgICAgICAgcmV0dXJuIGRldGVjdENhbGxEZXB0aEZvckZ1bmN0aW9uKG1h
aW4pOworICAgIH0KKworICAgIHJldHVybiBrRXJyb3JOb25lOworfQorCitEZXRlY3RDYWxsRGVw
dGg6OkZ1bmN0aW9uTm9kZSogRGV0ZWN0Q2FsbERlcHRoOjpmaW5kRnVuY3Rpb25CeU5hbWUoCisg
ICAgY29uc3QgVFN0cmluZyYgbmFtZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1
bmN0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoZnVuY3Rpb25zW2ldLT5nZXROYW1l
KCkgPT0gbmFtZSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbnNbaV07CisgICAgfQorICAg
IHJldHVybiBOVUxMOworfQorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVmIENP
TVBJTEVSX0RFVEVDVF9SRUNVUlNJT05fSF8KKyNkZWZpbmUgQ09NUElMRVJfREVURUNUX1JFQ1VS
U0lPTl9IXworCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisKKyNpbmNsdWRlIDxs
aW1pdHMuaD4KKyNpbmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKKyNpbmNsdWRlICJj
b21waWxlci9WYXJpYWJsZUluZm8uaCIKKworY2xhc3MgVEluZm9TaW5rOworCisvLyBUcmF2ZXJz
ZXMgaW50ZXJtZWRpYXRlIHRyZWUgdG8gZGV0ZWN0IGZ1bmN0aW9uIHJlY3Vyc2lvbi4KK2NsYXNz
IERldGVjdENhbGxEZXB0aCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyIHsKK3B1YmxpYzoKKyAg
ICBlbnVtIEVycm9yQ29kZSB7CisgICAgICAgIGtFcnJvck1pc3NpbmdNYWluLAorICAgICAgICBr
RXJyb3JSZWN1cnNpb24sCisgICAgICAgIGtFcnJvck1heERlcHRoRXhjZWVkZWQsCisgICAgICAg
IGtFcnJvck5vbmUKKyAgICB9OworCisgICAgRGV0ZWN0Q2FsbERlcHRoKFRJbmZvU2luayYgaW5m
b1N5bmMsIGJvb2wgbGltaXRDYWxsU3RhY2tEZXB0aCwgaW50IG1heENhbGxTdGFja0RlcHRoKTsK
KyAgICB+RGV0ZWN0Q2FsbERlcHRoKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRBZ2dyZWdh
dGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqKTsKKworICAgIGJvb2wgY2hlY2tFeGNlZWRzTWF4
RGVwdGgoaW50IGRlcHRoKTsKKworICAgIEVycm9yQ29kZSBkZXRlY3RDYWxsRGVwdGgoKTsKKwor
cHJpdmF0ZToKKyAgICBjbGFzcyBGdW5jdGlvbk5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAg
c3RhdGljIGNvbnN0IGludCBrSW5maW5pdGVDYWxsRGVwdGggPSBJTlRfTUFYOworCisgICAgICAg
IEZ1bmN0aW9uTm9kZShjb25zdCBUU3RyaW5nJiBmbmFtZSk7CisKKyAgICAgICAgY29uc3QgVFN0
cmluZyYgZ2V0TmFtZSgpIGNvbnN0OworCisgICAgICAgIC8vIElmIGEgZnVuY3Rpb24gaXMgYWxy
ZWFkeSBpbiB0aGUgY2FsbGVlIGxpc3QsIHRoaXMgYmVjb21lcyBhIG5vLW9wLgorICAgICAgICB2
b2lkIGFkZENhbGxlZShGdW5jdGlvbk5vZGUqIGNhbGxlZSk7CisKKyAgICAgICAgLy8gUmV0dXJu
cyBrSW5pZmluaXR5Q2FsbERlcHRoIGlmIHJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxscyBhcmUgZGV0
ZWN0ZWQuCisgICAgICAgIGludCBkZXRlY3RDYWxsRGVwdGgoRGV0ZWN0Q2FsbERlcHRoKiBkZXRl
Y3RDYWxsRGVwdGgsIGludCBkZXB0aCk7CisKKyAgICAgICAgLy8gUmVzZXQgc3RhdGUuCisgICAg
ICAgIHZvaWQgcmVzZXQoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIC8vIG1hbmdsZWQgZnVu
Y3Rpb24gbmFtZSBpcyB1bmlxdWUuCisgICAgICAgIFRTdHJpbmcgbmFtZTsKKworICAgICAgICAv
LyBmdW5jdGlvbnMgdGhhdCBhcmUgZGlyZWN0bHkgY2FsbGVkIGJ5IHRoaXMgZnVuY3Rpb24uCisg
ICAgICAgIFRWZWN0b3I8RnVuY3Rpb25Ob2RlKj4gY2FsbGVlczsKKworICAgICAgICBWaXNpdCB2
aXNpdDsKKyAgICB9OworCisgICAgRXJyb3JDb2RlIGRldGVjdENhbGxEZXB0aEZvckZ1bmN0aW9u
KEZ1bmN0aW9uTm9kZSogZnVuYyk7CisgICAgRnVuY3Rpb25Ob2RlKiBmaW5kRnVuY3Rpb25CeU5h
bWUoY29uc3QgVFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCByZXNldEZ1bmN0aW9uTm9kZXMoKTsK
KworICAgIFRJbmZvU2luayYgZ2V0SW5mb1NpbmsoKSB7IHJldHVybiBpbmZvU2luazsgfQorCisg
ICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBmdW5jdGlvbnM7CisgICAgRnVuY3Rpb25Ob2RlKiBj
dXJyZW50RnVuY3Rpb247CisgICAgVEluZm9TaW5rJiBpbmZvU2luazsKKyAgICBpbnQgbWF4RGVw
dGg7CisKKyAgICBEZXRlY3RDYWxsRGVwdGgoY29uc3QgRGV0ZWN0Q2FsbERlcHRoJik7CisgICAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgRGV0ZWN0Q2FsbERlcHRoJik7Cit9OworCisjZW5kaWYgIC8v
IENPTVBJTEVSX0RFVEVDVF9SRUNVUlNJT05fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwCShyZXZp
c2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0
ZWN0UmVjdXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjUgKzAsMCBAQAotLy8KLS8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgotLy8KLQotI2luY2x1ZGUgImNvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oIgotCi1E
ZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6RnVuY3Rpb25Ob2RlKGNvbnN0IFRTdHJpbmcm
IGZuYW1lKQotICAgIDogbmFtZShmbmFtZSksCi0gICAgICB2aXNpdChQcmVWaXNpdCkKLXsKLX0K
LQotY29uc3QgVFN0cmluZyYgRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGU6OmdldE5hbWUo
KSBjb25zdAotewotICAgIHJldHVybiBuYW1lOwotfQotCi12b2lkIERldGVjdFJlY3Vyc2lvbjo6
RnVuY3Rpb25Ob2RlOjphZGRDYWxsZWUoCi0gICAgRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5v
ZGUqIGNhbGxlZSkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxlZXMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgaWYgKGNhbGxlZXNbaV0gPT0gY2FsbGVlKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBjYWxsZWVzLnB1c2hfYmFjayhjYWxsZWUpOwotfQotCi1ib29s
IERldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlOjpkZXRlY3RSZWN1cnNpb24oKQotewotICAg
IEFTU0VSVCh2aXNpdCA9PSBQcmVWaXNpdCk7Ci0gICAgdmlzaXQgPSBJblZpc2l0OwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsraSkgewotICAgICAgICBzd2l0
Y2ggKGNhbGxlZXNbaV0tPnZpc2l0KSB7Ci0gICAgICAgICAgICBjYXNlIEluVmlzaXQ6Ci0gICAg
ICAgICAgICAgICAgLy8gY3ljbGUgZGV0ZWN0ZWQsIGkuZS4sIHJlY3Vyc2lvbiBkZXRlY3RlZC4K
LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGNhc2UgUG9zdFZpc2l0
OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQcmVWaXNpdDogewot
ICAgICAgICAgICAgICAgIGJvb2wgcmVjdXJzaW9uID0gY2FsbGVlc1tpXS0+ZGV0ZWN0UmVjdXJz
aW9uKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdmlzaXQgPSBQb3N0Vmlz
aXQ7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1EZXRlY3RSZWN1cnNpb246OkRldGVjdFJlY3Vy
c2lvbigpCi0gICAgOiBjdXJyZW50RnVuY3Rpb24oTlVMTCkKLXsKLX0KLQotRGV0ZWN0UmVjdXJz
aW9uOjp+RGV0ZWN0UmVjdXJzaW9uKCkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1
bmN0aW9ucy5zaXplKCk7ICsraSkKLSAgICAgICAgZGVsZXRlIGZ1bmN0aW9uc1tpXTsKLX0KLQot
Ym9vbCBEZXRlY3RSZWN1cnNpb246OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJt
QWdncmVnYXRlKiBub2RlKQotewotICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKLSAgICB7Ci0g
ICAgICAgIGNhc2UgRU9wUHJvdG90eXBlOgotICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVjbGFy
YXRpb24uCi0gICAgICAgICAgICAvLyBEb24ndCBhZGQgRnVuY3Rpb25Ob2RlIGhlcmUgYmVjYXVz
ZSBub2RlLT5nZXROYW1lKCkgaXMgdGhlCi0gICAgICAgICAgICAvLyB1bm1hbmdsZWQgZnVuY3Rp
b24gbmFtZS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVPcEZ1bmN0aW9uOiB7
Ci0gICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgotICAgICAgICAgICAgaWYgKHZp
c2l0ID09IFByZVZpc2l0KSB7Ci0gICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uID0gZmlu
ZEZ1bmN0aW9uQnlOYW1lKG5vZGUtPmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGN1
cnJlbnRGdW5jdGlvbiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5j
dGlvbiA9IG5ldyBGdW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb25zLnB1c2hfYmFjayhjdXJyZW50RnVuY3Rpb24pOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOiB7Ci0gICAgICAgICAgICAvLyBGdW5jdGlvbiBjYWxs
LgotICAgICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KSB7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKGN1cnJlbnRGdW5jdGlvbiAhPSBOVUxMKTsKLSAgICAgICAgICAgICAgICBGdW5jdGlv
bk5vZGUqIGZ1bmMgPSBmaW5kRnVuY3Rpb25CeU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAg
ICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmMg
PSBuZXcgRnVuY3Rpb25Ob2RlKG5vZGUtPmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9ucy5wdXNoX2JhY2soZnVuYyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGN1cnJlbnRGdW5jdGlvbi0+YWRkQ2FsbGVlKGZ1bmMpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRGV0ZWN0UmVjdXJzaW9u
OjpFcnJvckNvZGUgRGV0ZWN0UmVjdXJzaW9uOjpkZXRlY3RSZWN1cnNpb24oKQotewotICAgIEZ1
bmN0aW9uTm9kZSogbWFpbiA9IGZpbmRGdW5jdGlvbkJ5TmFtZSgibWFpbigiKTsKLSAgICBpZiAo
bWFpbiA9PSBOVUxMKQotICAgICAgICByZXR1cm4ga0Vycm9yTWlzc2luZ01haW47Ci0gICAgaWYg
KG1haW4tPmRldGVjdFJlY3Vyc2lvbigpKQotICAgICAgICByZXR1cm4ga0Vycm9yUmVjdXJzaW9u
OwotICAgIHJldHVybiBrRXJyb3JOb25lOwotfQotCi1EZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9u
Tm9kZSogRGV0ZWN0UmVjdXJzaW9uOjpmaW5kRnVuY3Rpb25CeU5hbWUoCi0gICAgY29uc3QgVFN0
cmluZyYgbmFtZSkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9ucy5zaXpl
KCk7ICsraSkgewotICAgICAgICBpZiAoZnVuY3Rpb25zW2ldLT5nZXROYW1lKCkgPT0gbmFtZSkK
LSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbnNbaV07Ci0gICAgfQotICAgIHJldHVybiBOVUxM
OwotfQotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0
UmVjdXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNjAgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2lmbmRlZiBDT01QSUxF
Ul9ERVRFQ1RfUkVDVVJTSU9OX0hfCi0jZGVmaW5lIENPTVBJTEVSX0RFVEVDVF9SRUNVUlNJT05f
SF8KLQotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotCi0jaW5jbHVkZSAiY29tcGls
ZXIvaW50ZXJtZWRpYXRlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvVmFyaWFibGVJbmZvLmgiCi0K
LS8vIFRyYXZlcnNlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBkZXRlY3QgZnVuY3Rpb24gcmVjdXJz
aW9uLgotY2xhc3MgRGV0ZWN0UmVjdXJzaW9uIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIgewot
cHVibGljOgotICAgIGVudW0gRXJyb3JDb2RlIHsKLSAgICAgICAga0Vycm9yTWlzc2luZ01haW4s
Ci0gICAgICAgIGtFcnJvclJlY3Vyc2lvbiwKLSAgICAgICAga0Vycm9yTm9uZQotICAgIH07Ci0K
LSAgICBEZXRlY3RSZWN1cnNpb24oKTsKLSAgICB+RGV0ZWN0UmVjdXJzaW9uKCk7Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqKTsKLQot
ICAgIEVycm9yQ29kZSBkZXRlY3RSZWN1cnNpb24oKTsKLQotcHJpdmF0ZToKLSAgICBjbGFzcyBG
dW5jdGlvbk5vZGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25Ob2RlKGNvbnN0IFRT
dHJpbmcmIGZuYW1lKTsKLQotICAgICAgICBjb25zdCBUU3RyaW5nJiBnZXROYW1lKCkgY29uc3Q7
Ci0KLSAgICAgICAgLy8gSWYgYSBmdW5jdGlvbiBpcyBhbHJlYWR5IGluIHRoZSBjYWxsZWUgbGlz
dCwgdGhpcyBiZWNvbWVzIGEgbm8tb3AuCi0gICAgICAgIHZvaWQgYWRkQ2FsbGVlKEZ1bmN0aW9u
Tm9kZSogY2FsbGVlKTsKLQotICAgICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiByZWN1cnNpdmUgZnVu
Y3Rpb24gY2FsbHMgYXJlIGRldGVjdGVkLgotICAgICAgICBib29sIGRldGVjdFJlY3Vyc2lvbigp
OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgLy8gbWFuZ2xlZCBmdW5jdGlvbiBuYW1lIGlzIHVu
aXF1ZS4KLSAgICAgICAgVFN0cmluZyBuYW1lOwotCi0gICAgICAgIC8vIGZ1bmN0aW9ucyB0aGF0
IGFyZSBkaXJlY3RseSBjYWxsZWQgYnkgdGhpcyBmdW5jdGlvbi4KLSAgICAgICAgVFZlY3RvcjxG
dW5jdGlvbk5vZGUqPiBjYWxsZWVzOwotCi0gICAgICAgIFZpc2l0IHZpc2l0OwotICAgIH07Ci0K
LSAgICBGdW5jdGlvbk5vZGUqIGZpbmRGdW5jdGlvbkJ5TmFtZShjb25zdCBUU3RyaW5nJiBuYW1l
KTsKLQotICAgIFRWZWN0b3I8RnVuY3Rpb25Ob2RlKj4gZnVuY3Rpb25zOwotICAgIEZ1bmN0aW9u
Tm9kZSogY3VycmVudEZ1bmN0aW9uOwotfTsKLQotI2VuZGlmICAvLyBDT01QSUxFUl9ERVRFQ1Rf
UkVDVVJTSU9OX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
RGlhZ25vc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9EaWFnbm9zdGljcy5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGljcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBURGlhZ25vc3RpY3M6OndyaXRlSW5mbyhTZXZlcml0
eSBzZQogICAgIFRJbmZvU2lua0Jhc2UmIHNpbmsgPSBtSW5mb1NpbmsuaW5mbzsKICAgICAvKiBW
QysrIGZvcm1hdDogZmlsZShsaW5lbnVtKSA6IGVycm9yICM6ICd0b2tlbicgOiBleHRyYWluZm8g
Ki8KICAgICBzaW5rLnByZWZpeChwcmVmaXgpOwotICAgIHNpbmsubG9jYXRpb24oRW5jb2RlU291
cmNlTG9jKGxvYy5maWxlLCBsb2MubGluZSkpOworICAgIHNpbmsubG9jYXRpb24obG9jLmZpbGUs
IGxvYy5saW5lKTsKICAgICBzaW5rIDw8ICInIiA8PCB0b2tlbiA8PCAgIicgOiAiIDw8IHJlYXNv
biA8PCAiICIgPDwgZXh0cmEgPDwgIlxuIjsKIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcAkocmV2aXNp
b24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxv
b3BVbnJvbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHly
aWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0yMTAsNiArMjEwLDYgQEAgaW50IEZvckxvb3BV
bnJvbGw6OmdldExvb3BJbmNyZW1lbnQoVEludAogaW50IEZvckxvb3BVbnJvbGw6OmV2YWx1YXRl
SW50Q29uc3RhbnQoVEludGVybUNvbnN0YW50VW5pb24qIG5vZGUpCiB7CiAgICAgQVNTRVJUKChu
b2RlICE9IE5VTEwpICYmIChub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpICE9IE5VTEwpKTsK
LSAgICByZXR1cm4gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7Cisg
ICAgcmV0dXJuIG5vZGUtPmdldElDb25zdCgwKTsKIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwCShyZXZpc2lvbiAxNTI5
NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5m
b1NpbmsuaCIKIAotdm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoVFByZWZpeFR5cGUgbWVzc2Fn
ZSkgewotICAgIHN3aXRjaChtZXNzYWdlKSB7Cit2b2lkIFRJbmZvU2lua0Jhc2U6OnByZWZpeChU
UHJlZml4VHlwZSBwKSB7CisgICAgc3dpdGNoKHApIHsKICAgICAgICAgY2FzZSBFUHJlZml4Tm9u
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVQcmVmaXhXYXJuaW5nOgpAQCAt
MzEsMjkgKzMxLDI0IEBAIHZvaWQgVEluZm9TaW5rQmFzZTo6cHJlZml4KFRQcmVmaXhUeXBlIG0K
ICAgICB9CiB9CiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6bG9jYXRpb24oVFNvdXJjZUxvYyBsb2Mp
IHsKLSAgICBpbnQgc3RyaW5nID0gMCwgbGluZSA9IDA7Ci0gICAgRGVjb2RlU291cmNlTG9jKGxv
YywgJnN0cmluZywgJmxpbmUpOwotCit2b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9uKGludCBm
aWxlLCBpbnQgbGluZSkgewogICAgIFRQZXJzaXN0U3RyaW5nU3RyZWFtIHN0cmVhbTsKICAgICBp
ZiAobGluZSkKLSAgICAgICAgc3RyZWFtIDw8IHN0cmluZyA8PCAiOiIgPDwgbGluZTsKKyAgICAg
ICAgc3RyZWFtIDw8IGZpbGUgPDwgIjoiIDw8IGxpbmU7CiAgICAgZWxzZQotICAgICAgICBzdHJl
YW0gPDwgc3RyaW5nIDw8ICI6PyAiOworICAgICAgICBzdHJlYW0gPDwgZmlsZSA8PCAiOj8gIjsK
ICAgICBzdHJlYW0gPDwgIjogIjsKIAogICAgIHNpbmsuYXBwZW5kKHN0cmVhbS5zdHIoKSk7CiB9
CiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBtZXNzYWdlLCBjb25z
dCBjaGFyKiBzKSB7Ci0gICAgcHJlZml4KG1lc3NhZ2UpOwotICAgIHNpbmsuYXBwZW5kKHMpOwot
ICAgIHNpbmsuYXBwZW5kKCJcbiIpOwordm9pZCBUSW5mb1NpbmtCYXNlOjpsb2NhdGlvbihjb25z
dCBUU291cmNlTG9jJiBsb2MpIHsKKyAgICBsb2NhdGlvbihsb2MuZmlyc3RfZmlsZSwgbG9jLmZp
cnN0X2xpbmUpOwogfQogCi12b2lkIFRJbmZvU2lua0Jhc2U6Om1lc3NhZ2UoVFByZWZpeFR5cGUg
bWVzc2FnZSwgY29uc3QgY2hhciogcywgVFNvdXJjZUxvYyBsb2MpIHsKLSAgICBwcmVmaXgobWVz
c2FnZSk7Cit2b2lkIFRJbmZvU2lua0Jhc2U6Om1lc3NhZ2UoVFByZWZpeFR5cGUgcCwgY29uc3Qg
VFNvdXJjZUxvYyYgbG9jLCBjb25zdCBjaGFyKiBtKSB7CisgICAgcHJlZml4KHApOwogICAgIGxv
Y2F0aW9uKGxvYyk7Ci0gICAgc2luay5hcHBlbmQocyk7CisgICAgc2luay5hcHBlbmQobSk7CiAg
ICAgc2luay5hcHBlbmQoIlxuIik7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvSW5mb1NpbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmgJKHdvcmtpbmcgY29weSkK
QEAgLTk2LDEwICs5NiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVFBlcnNpc3RTdHJpbmcmIHN0
cigpIGNvbnN0IHsgcmV0dXJuIHNpbms7IH0KICAgICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0
IHsgcmV0dXJuIHNpbmsuY19zdHIoKTsgfQogCi0gICAgdm9pZCBwcmVmaXgoVFByZWZpeFR5cGUg
bWVzc2FnZSk7Ci0gICAgdm9pZCBsb2NhdGlvbihUU291cmNlTG9jIGxvYyk7Ci0gICAgdm9pZCBt
ZXNzYWdlKFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMpOwotICAgIHZvaWQgbWVz
c2FnZShUUHJlZml4VHlwZSBtZXNzYWdlLCBjb25zdCBjaGFyKiBzLCBUU291cmNlTG9jIGxvYyk7
CisgICAgdm9pZCBwcmVmaXgoVFByZWZpeFR5cGUgcCk7CisgICAgdm9pZCBsb2NhdGlvbihpbnQg
ZmlsZSwgaW50IGxpbmUpOworICAgIHZvaWQgbG9jYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbG9j
KTsKKyAgICB2b2lkIG1lc3NhZ2UoVFByZWZpeFR5cGUgcCwgY29uc3QgVFNvdXJjZUxvYyYgbG9j
LCBjb25zdCBjaGFyKiBtKTsKIAogcHJpdmF0ZToKICAgICBUUGVyc2lzdFN0cmluZyBzaW5rOwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0
aWFsaXplLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xNCw1MTMgKzE0LDQx
MyBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCiAKLS8vPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLy8KLS8vIFByb3RvdHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9ucyBzZWVu
IGJ5IGJvdGggdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJzLgotLy8KLS8vPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotc3RhdGljIFRTdHJpbmcgQnVpbHRJbkZ1bmN0aW9uc0NvbW1vbihjb25zdCBTaEJ1
aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcykKK3ZvaWQgSW5zZXJ0QnVpbHRJbkZ1bmN0aW9ucyhT
aFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0IFNoQnVpbHRJblJlc291
cmNlcyAmcmVzb3VyY2VzLCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlKQogewotICAgIFRTdHJp
bmcgczsKKyAgICBUVHlwZSAqZmxvYXQxID0gbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmlu
ZWQsIEV2cUdsb2JhbCwgMSk7CisgICAgVFR5cGUgKmZsb2F0MiA9IG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIpOworICAgIFRUeXBlICpmbG9hdDMgPSBuZXcg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzKTsKKyAgICBUVHlwZSAq
ZmxvYXQ0ID0gbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCk7
CisKKyAgICBUVHlwZSAqaW50MiA9IG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyKTsKKyAgICBUVHlwZSAqaW50MyA9IG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAzKTsKKyAgICBUVHlwZSAqaW50NCA9IG5ldyBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0KTsKIAogICAgIC8vCiAgICAgLy8gQW5nbGUgYW5k
IFRyaWdvbm9tZXRyaWMgRnVuY3Rpb25zLgogICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygi
ZmxvYXQgcmFkaWFucyhmbG9hdCBkZWdyZWVzKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMiAgcmFkaWFucyh2ZWMyICBkZWdyZWVzKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgcmFkaWFucyh2ZWMzICBkZWdyZWVzKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjNCAgcmFkaWFucyh2ZWM0ICBkZWdyZWVzKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJmbG9hdCBkZWdyZWVzKGZsb2F0IHJhZGlhbnMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMyICBkZWdyZWVzKHZlYzIgIHJhZGlhbnMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMzICBkZWdyZWVzKHZlYzMgIHJhZGlhbnMpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWM0ICBkZWdyZWVzKHZlYzQgIHJhZGlhbnMpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImZsb2F0IHNpbihmbG9hdCBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzIgIHNpbih2ZWMyICBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHNp
bih2ZWMzICBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHNpbih2ZWM0
ICBhbmdsZSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgY29zKGZsb2F0IGFu
Z2xlKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY29zKHZlYzIgIGFuZ2xlKTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgY29zKHZlYzMgIGFuZ2xlKTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgY29zKHZlYzQgIGFuZ2xlKTsiKSk7Ci0KLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJmbG9hdCB0YW4oZmxvYXQgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMyICB0YW4odmVjMiAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMzICB0YW4odmVjMyAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0ICB0YW4odmVjNCAgYW5nbGUpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0
IGFzaW4oZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGFzaW4odmVj
MiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGFzaW4odmVjMyAgeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGFzaW4odmVjNCAgeCk7IikpOwotCi0gICAg
cy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYWNvcyhmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMiAgYWNvcyh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgYWNvcyh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgYWNv
cyh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhdGFuKGZsb2F0
IHksIGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhdGFuKHZlYzIg
IHksIHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhdGFuKHZlYzMg
IHksIHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhdGFuKHZlYzQg
IHksIHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGF0YW4oZmxv
YXQgeV9vdmVyX3gpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhdGFuKHZlYzIg
IHlfb3Zlcl94KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgYXRhbih2ZWMzICB5
X292ZXJfeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGF0YW4odmVjNCAgeV9v
dmVyX3gpOyIpKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgInJhZGlh
bnMiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAicmFk
aWFucyIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJy
YWRpYW5zIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwg
InJhZGlhbnMiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDEsICJkZWdyZWVzIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MiwgImRlZ3JlZXMiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQzLCAiZGVncmVlcyIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDQsICJkZWdyZWVzIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQxLCAic2luIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0MiwgInNpbiIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDMsICJzaW4iLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQ0LCAic2luIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQxLCAiY29zIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MiwgImNvcyIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDMsICJjb3MiLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0
LCAiY29zIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQx
LCAidGFuIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0Miwg
InRhbiIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJ0
YW4iLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAidGFu
IiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiYXNp
biIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJhc2lu
IiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImFzaW4i
LCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiYXNpbiIs
IGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImFjb3Mi
LCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAiYWNvcyIs
IGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJhY29zIiwg
ZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImFjb3MiLCBm
bG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJhdGFuIiwg
ZmxvYXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAi
YXRhbiIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MywgImF0YW4iLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDQsICJhdGFuIiwgZmxvYXQ0LCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihmbG9hdDEsICJhdGFuIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0MiwgImF0YW4iLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQzLCAiYXRhbiIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDQsICJhdGFuIiwgZmxvYXQ0KTsKIAogICAgIC8vCiAgICAgLy8gRXhw
b25lbnRpYWwgRnVuY3Rpb25zLgogICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQg
cG93KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBw
b3codmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHBv
dyh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgcG93
KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGV4
cChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZXhwKHZlYzIgIHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBleHAodmVjMyAgeCk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGV4cCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJmbG9hdCBsb2coZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzIgIGxvZyh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbG9n
KHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBsb2codmVjNCAgeCk7
IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZXhwMihmbG9hdCB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZXhwMih2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMyAgZXhwMih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCAgZXhwMih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCBsb2cyKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBsb2cyKHZl
YzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBsb2cyKHZlYzMgIHgpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBsb2cyKHZlYzQgIHgpOyIpKTsKLQotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHNxcnQoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzIgIHNxcnQodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzMgIHNxcnQodmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHNx
cnQodmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgaW52ZXJzZXNx
cnQoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGludmVyc2VzcXJ0
KHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBpbnZlcnNlc3FydCh2
ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgaW52ZXJzZXNxcnQodmVj
NCAgeCk7IikpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAicG93Iiwg
ZmxvYXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAi
cG93IiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQzLCAicG93IiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQ0LCAicG93IiwgZmxvYXQ0LCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDEsICJleHAiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQyLCAiZXhwIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0MywgImV4cCIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDQsICJleHAiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDEsICJsb2ciLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQyLCAibG9nIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0MywgImxvZyIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDQsICJsb2ciLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDEsICJleHAyIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MiwgImV4cDIiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQzLCAiZXhwMiIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDQsICJleHAyIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQxLCAibG9nMiIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDIsICJsb2cyIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0
MywgImxvZzIiLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0
LCAibG9nMiIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0
MSwgInNxcnQiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQy
LCAic3FydCIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMs
ICJzcXJ0IiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwg
InNxcnQiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEs
ICJpbnZlcnNlc3FydCIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDIsICJpbnZlcnNlc3FydCIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDMsICJpbnZlcnNlc3FydCIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDQsICJpbnZlcnNlc3FydCIsIGZsb2F0NCk7CiAKICAgICAvLwogICAg
IC8vIENvbW1vbiBGdW5jdGlvbnMuCiAgICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCBhYnMoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGFicyh2ZWMy
ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgYWJzKHZlYzMgIHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhYnModmVjNCAgeCk7IikpOwotCi0gICAgcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgc2lnbihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMiAgc2lnbih2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgc2lnbih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc2lnbih2
ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBmbG9vcihmbG9hdCB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZmxvb3IodmVjMiAgeCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGZsb29yKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJ2ZWM0ICBmbG9vcih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJmbG9hdCBjZWlsKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMyICBjZWlsKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBjZWls
KHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBjZWlsKHZlYzQgIHgp
OyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGZyYWN0KGZsb2F0IHgpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBmcmFjdCh2ZWMyICB4KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMyAgZnJhY3QodmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzQgIGZyYWN0KHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImZsb2F0IG1vZChmbG9hdCB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMiAgbW9kKHZlYzIgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMzICBtb2QodmVjMyAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgIG1vZCh2ZWM0ICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MiAgbW9kKHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
ICBtb2QodmVjMyAgeCwgdmVjMyAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
IG1vZCh2ZWM0ICB4LCB2ZWM0ICB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9h
dCBtaW4oZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IG1pbih2ZWMyICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAg
bWluKHZlYzMgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBt
aW4odmVjNCAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1p
bih2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWlu
KHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaW4o
dmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbWF4
KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgo
dmVjMiAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1heCh2
ZWMzICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWF4KHZl
YzQgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBtYXgodmVj
MiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1heCh2ZWMz
ICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWF4KHZlYzQg
IHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGNsYW1wKGZs
b2F0IHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMiAgY2xhbXAodmVjMiAgeCwgZmxvYXQgbWluVmFsLCBmbG9hdCBtYXhWYWwpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBjbGFtcCh2ZWMzICB4LCBmbG9hdCBtaW5W
YWwsIGZsb2F0IG1heFZhbCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGNsYW1w
KHZlYzQgIHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjMiAgY2xhbXAodmVjMiAgeCwgdmVjMiAgbWluVmFsLCB2ZWMyICBtYXhWYWwp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBjbGFtcCh2ZWMzICB4LCB2ZWMzICBt
aW5WYWwsIHZlYzMgIG1heFZhbCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGNs
YW1wKHZlYzQgIHgsIHZlYzQgIG1pblZhbCwgdmVjNCAgbWF4VmFsKTsiKSk7Ci0KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJmbG9hdCBtaXgoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgYSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1peCh2ZWMyICB4LCB2ZWMyICB5LCBmbG9hdCBh
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWl4KHZlYzMgIHgsIHZlYzMgIHks
IGZsb2F0IGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwg
dmVjNCAgeSwgZmxvYXQgYSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1peCh2
ZWMyICB4LCB2ZWMyICB5LCB2ZWMyICBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgbWl4KHZlYzMgIHgsIHZlYzMgIHksIHZlYzMgIGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwgdmVjNCAgeSwgdmVjNCAgYSk7IikpOwotCi0gICAgcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgc3RlcChmbG9hdCBlZGdlLCBmbG9hdCB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMiAgc3RlcCh2ZWMyICBlZGdlLCB2ZWMyICB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc3RlcCh2ZWMzICBlZGdlLCB2ZWMzICB4KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc3RlcCh2ZWM0ICBlZGdlLCB2ZWM0ICB4KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc3RlcChmbG9hdCBlZGdlLCB2ZWMyICB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc3RlcChmbG9hdCBlZGdlLCB2ZWMz
ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc3RlcChmbG9hdCBlZGdlLCB2
ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBzbW9vdGhzdGVwKGZs
b2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzIgIHNtb290aHN0ZXAodmVjMiAgZWRnZTAsIHZlYzIgIGVkZ2UxLCB2ZWMyICB4KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc21vb3Roc3RlcCh2ZWMzICBlZGdlMCwg
dmVjMyAgZWRnZTEsIHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBz
bW9vdGhzdGVwKHZlYzQgIGVkZ2UwLCB2ZWM0ICBlZGdlMSwgdmVjNCAgeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIHNtb290aHN0ZXAoZmxvYXQgZWRnZTAsIGZsb2F0IGVkZ2Ux
LCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc21vb3Roc3RlcChm
bG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgdmVjNCAgeCk7
IikpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiYWJzIiwgZmxvYXQx
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImFicyIsIGZsb2F0Mik7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJhYnMiLCBmbG9hdDMpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiYWJzIiwgZmxvYXQ0KTsKKwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAic2lnbiIsIGZsb2F0MSk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJzaWduIiwgZmxvYXQyKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgInNpZ24iLCBmbG9hdDMpOworICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAic2lnbiIsIGZsb2F0NCk7CisKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImZsb29yIiwgZmxvYXQxKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImZsb29yIiwgZmxvYXQyKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImZsb29yIiwgZmxvYXQzKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImZsb29yIiwgZmxvYXQ0KTsKKwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiY2VpbCIsIGZsb2F0MSk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJjZWlsIiwgZmxvYXQyKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImNlaWwiLCBmbG9hdDMpOworICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiY2VpbCIsIGZsb2F0NCk7CisKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImZyYWN0IiwgZmxvYXQxKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImZyYWN0IiwgZmxvYXQyKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImZyYWN0IiwgZmxvYXQzKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImZyYWN0IiwgZmxvYXQ0KTsKKwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAibW9kIiwgZmxvYXQxLCBmbG9h
dDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAibW9kIiwgZmxvYXQy
LCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAibW9kIiwg
ZmxvYXQzLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAi
bW9kIiwgZmxvYXQ0LCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQyLCAibW9kIiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQzLCAibW9kIiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQ0LCAibW9kIiwgZmxvYXQ0LCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJtaW4iLCBmbG9hdDEsIGZsb2F0MSk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJtaW4iLCBmbG9hdDIsIGZsb2F0MSk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJtaW4iLCBmbG9hdDMsIGZsb2F0
MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJtaW4iLCBmbG9hdDQs
IGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJtaW4iLCBm
bG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJt
aW4iLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDQsICJtaW4iLCBmbG9hdDQsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0MSwgIm1heCIsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0MiwgIm1heCIsIGZsb2F0MiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgIm1heCIsIGZsb2F0MywgZmxvYXQxKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgIm1heCIsIGZsb2F0NCwgZmxvYXQxKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgIm1heCIsIGZsb2F0MiwgZmxvYXQy
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgIm1heCIsIGZsb2F0Mywg
ZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgIm1heCIsIGZs
b2F0NCwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAi
Y2xhbXAiLCBmbG9hdDEsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0MiwgImNsYW1wIiwgZmxvYXQyLCBmbG9hdDEsIGZsb2F0MSk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJjbGFtcCIsIGZsb2F0MywgZmxvYXQxLCBm
bG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiY2xhbXAiLCBm
bG9hdDQsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MiwgImNsYW1wIiwgZmxvYXQyLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihmbG9hdDMsICJjbGFtcCIsIGZsb2F0MywgZmxvYXQzLCBmbG9hdDMpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiY2xhbXAiLCBmbG9hdDQsIGZs
b2F0NCwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAi
bWl4IiwgZmxvYXQxLCBmbG9hdDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDIsICJtaXgiLCBmbG9hdDIsIGZsb2F0MiwgZmxvYXQxKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgIm1peCIsIGZsb2F0MywgZmxvYXQzLCBmbG9hdDEp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAibWl4IiwgZmxvYXQ0LCBm
bG9hdDQsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJt
aXgiLCBmbG9hdDIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0MywgIm1peCIsIGZsb2F0MywgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAibWl4IiwgZmxvYXQ0LCBmbG9hdDQsIGZsb2F0NCk7
CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgInN0ZXAiLCBmbG9hdDEs
IGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJzdGVwIiwg
ZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAi
c3RlcCIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0NCwgInN0ZXAiLCBmbG9hdDQsIGZsb2F0NCk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDIsICJzdGVwIiwgZmxvYXQxLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQzLCAic3RlcCIsIGZsb2F0MSwgZmxvYXQzKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInN0ZXAiLCBmbG9hdDEsIGZsb2F0NCk7CisKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgInNtb290aHN0ZXAiLCBmbG9hdDEs
IGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0Miwg
InNtb290aHN0ZXAiLCBmbG9hdDIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0MywgInNtb290aHN0ZXAiLCBmbG9hdDMsIGZsb2F0MywgZmxvYXQz
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInNtb290aHN0ZXAiLCBm
bG9hdDQsIGZsb2F0NCwgZmxvYXQ0KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MiwgInNtb290aHN0ZXAiLCBmbG9hdDEsIGZsb2F0MSwgZmxvYXQyKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgInNtb290aHN0ZXAiLCBmbG9hdDEsIGZsb2F0MSwg
ZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInNtb290aHN0
ZXAiLCBmbG9hdDEsIGZsb2F0MSwgZmxvYXQ0KTsKIAogICAgIC8vCiAgICAgLy8gR2VvbWV0cmlj
IEZ1bmN0aW9ucy4KICAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aChm
bG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKHZlYzIgIHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsZW5ndGgodmVjMyAgeCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkaXN0YW5jZShmbG9hdCBwMCwgZmxvYXQgcDEpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkaXN0YW5jZSh2ZWMyICBwMCwgdmVjMiAgcDEp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkaXN0YW5jZSh2ZWMzICBwMCwgdmVj
MyAgcDEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkaXN0YW5jZSh2ZWM0ICBw
MCwgdmVjNCAgcDEpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRvdChmbG9h
dCB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90KHZlYzIg
IHgsIHZlYzIgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkb3QodmVjMyAg
eCwgdmVjMyAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRvdCh2ZWM0ICB4
LCB2ZWM0ICB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzIGNyb3NzKHZlYzMg
eCwgdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbm9ybWFsaXplKGZs
b2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBub3JtYWxpemUodmVjMiAg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG5vcm1hbGl6ZSh2ZWMzICB4KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbm9ybWFsaXplKHZlYzQgIHgpOyIpKTsK
LQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGZhY2Vmb3J3YXJkKGZsb2F0IE4sIGZsb2F0
IEksIGZsb2F0IE5yZWYpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBmYWNlZm9y
d2FyZCh2ZWMyICBOLCB2ZWMyICBJLCB2ZWMyICBOcmVmKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMyAgZmFjZWZvcndhcmQodmVjMyAgTiwgdmVjMyAgSSwgdmVjMyAgTnJlZik7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGZhY2Vmb3J3YXJkKHZlYzQgIE4sIHZlYzQg
IEksIHZlYzQgIE5yZWYpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHJlZmxl
Y3QoZmxvYXQgSSwgZmxvYXQgTik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHJl
ZmxlY3QodmVjMiAgSSwgdmVjMiAgTik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMg
IHJlZmxlY3QodmVjMyAgSSwgdmVjMyAgTik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgIHJlZmxlY3QodmVjNCAgSSwgdmVjNCAgTik7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiZmxvYXQgcmVmcmFjdChmbG9hdCBJLCBmbG9hdCBOLCBmbG9hdCBldGEpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWMyICByZWZyYWN0KHZlYzIgIEksIHZlYzIgIE4sIGZsb2F0IGV0
YSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHJlZnJhY3QodmVjMyAgSSwgdmVj
MyAgTiwgZmxvYXQgZXRhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgcmVmcmFj
dCh2ZWM0ICBJLCB2ZWM0ICBOLCBmbG9hdCBldGEpOyIpKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0MSwgImxlbmd0aCIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDEsICJsZW5ndGgiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQxLCAibGVuZ3RoIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0MSwgImxlbmd0aCIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImRpc3RhbmNlIiwgZmxvYXQxLCBmbG9hdDEpOworICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZGlzdGFuY2UiLCBmbG9hdDIsIGZs
b2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJkaXN0YW5jZSIs
IGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwg
ImRpc3RhbmNlIiwgZmxvYXQ0LCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDEsICJkb3QiLCBmbG9hdDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDEsICJkb3QiLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJkb3QiLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJkb3QiLCBmbG9hdDQsIGZsb2F0NCk7CisK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImNyb3NzIiwgZmxvYXQzLCBm
bG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAibm9ybWFsaXpl
IiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgIm5vcm1h
bGl6ZSIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJu
b3JtYWxpemUiLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0
LCAibm9ybWFsaXplIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQxLCAiZmFjZWZvcndhcmQiLCBmbG9hdDEsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImZhY2Vmb3J3YXJkIiwgZmxvYXQyLCBmbG9h
dDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJmYWNl
Zm9yd2FyZCIsIGZsb2F0MywgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQ0LCAiZmFjZWZvcndhcmQiLCBmbG9hdDQsIGZsb2F0NCwgZmxvYXQ0KTsK
KworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAicmVmbGVjdCIsIGZsb2F0
MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgInJlZmxl
Y3QiLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDMsICJyZWZsZWN0IiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQ0LCAicmVmbGVjdCIsIGZsb2F0NCwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAicmVmcmFjdCIsIGZsb2F0MSwgZmxvYXQxLCBmbG9h
dDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAicmVmcmFjdCIsIGZs
b2F0MiwgZmxvYXQyLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQzLCAicmVmcmFjdCIsIGZsb2F0MywgZmxvYXQzLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAicmVmcmFjdCIsIGZsb2F0NCwgZmxvYXQ0LCBmbG9hdDEp
OworCisgICAgVFR5cGUgKm1hdDIgPSBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAyLCB0cnVlKTsKKyAgICBUVHlwZSAqbWF0MyA9IG5ldyBUVHlwZShFYnRGbG9h
dCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIHRydWUpOworICAgIFRUeXBlICptYXQ0ID0g
bmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgdHJ1ZSk7CiAK
ICAgICAvLwogICAgIC8vIE1hdHJpeCBGdW5jdGlvbnMuCiAgICAgLy8KLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJtYXQyIG1hdHJpeENvbXBNdWx0KG1hdDIgeCwgbWF0MiB5KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygibWF0MyBtYXRyaXhDb21wTXVsdChtYXQzIHgsIG1hdDMgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoIm1hdDQgbWF0cml4Q29tcE11bHQobWF0NCB4LCBtYXQ0IHkp
OyIpKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKG1hdDIsICJtYXRyaXhDb21wTXVs
dCIsIG1hdDIsIG1hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4obWF0MywgIm1h
dHJpeENvbXBNdWx0IiwgbWF0MywgbWF0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihtYXQ0LCAibWF0cml4Q29tcE11bHQiLCBtYXQ0LCBtYXQ0KTsKKworICAgIFRUeXBlICpib29s
MSA9IG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSk7CisgICAg
VFR5cGUgKmJvb2wyID0gbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
LCAyKTsKKyAgICBUVHlwZSAqYm9vbDMgPSBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFHbG9iYWwsIDMpOworICAgIFRUeXBlICpib29sNCA9IG5ldyBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCk7CiAKICAgICAvLwogICAgIC8vIFZlY3RvciByZWxh
dGlvbmFsIGZ1bmN0aW9ucy4KICAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGxl
c3NUaGFuKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMg
bGVzc1RoYW4odmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVj
NCBsZXNzVGhhbih2ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygi
YnZlYzIgbGVzc1RoYW4oaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJ2ZWMzIGxlc3NUaGFuKGl2ZWMzIHgsIGl2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJidmVjNCBsZXNzVGhhbihpdmVjNCB4LCBpdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbkVxdWFsKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbGVzc1RoYW5FcXVhbCh2ZWMzIHgsIHZlYzMgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NUaGFuRXF1YWwodmVjNCB4LCB2
ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGxlc3NUaGFuRXF1YWwo
aXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGxlc3NU
aGFuRXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWM0IGxlc3NUaGFuRXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQo
VFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW4odmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbih2ZWMzIHgsIHZlYzMgeSk7IikpOwotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFuKHZlYzQgeCwgdmVjNCB5KTsiKSk7
Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBncmVhdGVyVGhhbihpdmVjMiB4LCBpdmVj
MiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZ3JlYXRlclRoYW4oaXZlYzMg
eCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFu
KGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGdy
ZWF0ZXJUaGFuRXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJidmVjMyBncmVhdGVyVGhhbkVxdWFsKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVhbCh2ZWM0IHgsIHZlYzQgeSk7IikpOwot
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW5FcXVhbChpdmVjMiB4LCBp
dmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZ3JlYXRlclRoYW5FcXVh
bChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZ3Jl
YXRlclRoYW5FcXVhbChpdmVjNCB4LCBpdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJidmVjMiBlcXVhbCh2ZWMyIHgsIHZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJ2ZWMzIGVxdWFsKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiYnZlYzQgZXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJ2ZWMyIGVxdWFsKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJidmVjMyBlcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzQgZXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQo
VFN0cmluZygiYnZlYzIgZXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWMzIGVxdWFsKGJ2ZWMzIHgsIGJ2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJidmVjNCBlcXVhbChidmVjNCB4LCBidmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJidmVjMiBub3RFcXVhbCh2ZWMyIHgsIHZlYzIgeSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5vdEVxdWFsKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdEVxdWFsKGl2ZWMyIHgsIGl2ZWMyIHkpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBub3RFcXVhbChpdmVjMyB4LCBpdmVjMyB5
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1YWwoaXZlYzQgeCwgaXZl
YzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbm90RXF1YWwoYnZlYzIg
eCwgYnZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5vdEVxdWFsKGJ2
ZWMzIHgsIGJ2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBub3RFcXVh
bChidmVjNCB4LCBidmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJib29sIGFu
eShidmVjMiB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYm9vbCBhbnkoYnZlYzMgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYW55KGJ2ZWM0IHgpOyIpKTsKLQotICAg
IHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYWxsKGJ2ZWMyIHgpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJib29sIGFsbChidmVjMyB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYm9v
bCBhbGwoYnZlYzQgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbm90KGJ2
ZWMyIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBub3QoYnZlYzMgeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IG5vdChidmVjNCB4KTsiKSk7Ci0KLSAgICAv
LwotICAgIC8vIFRleHR1cmUgRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCB0ZXh0dXJlMkQoc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzIgY29vcmQpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlcjJEIHNhbXBsZXIs
IHZlYzMgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFBy
b2ooc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzQgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0IHRleHR1cmVDdWJlKHNhbXBsZXJDdWJlIHNhbXBsZXIsIHZlYzMgY29vcmQpOyIp
KTsKLQotICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCkgewotICAgICAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRChzYW1wbGVyRXh0ZXJuYWxPRVMgc2Ft
cGxlciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRl
eHR1cmUyRFByb2ooc2FtcGxlckV4dGVybmFsT0VTIHNhbXBsZXIsIHZlYzMgY29vcmQpOyIpKTsK
LSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXJFeHRl
cm5hbE9FUyBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7Ci0gICAgfQorICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oYm9vbDIsICJsZXNzVGhhbiIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wzLCAibGVzc1RoYW4iLCBmbG9hdDMsIGZsb2F0
Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwgImxlc3NUaGFuIiwgZmxv
YXQ0LCBmbG9hdDQpOwogCi0gICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUp
IHsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRSZWN0KHNhbXBsZXIy
RFJlY3Qgc2FtcGxlciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWM0IHRleHR1cmUyRFJlY3RQcm9qKHNhbXBsZXIyRFJlY3Qgc2FtcGxlciwgdmVjMyBjb29y
ZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFJlY3RQcm9q
KHNhbXBsZXIyRFJlY3Qgc2FtcGxlciwgdmVjNCBjb29yZCk7IikpOwotICAgIH0KKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAibGVzc1RoYW4iLCBpbnQyLCBpbnQyKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wzLCAibGVzc1RoYW4iLCBpbnQzLCBpbnQz
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAibGVzc1RoYW4iLCBpbnQ0
LCBpbnQ0KTsKIAotICAgIC8vCi0gICAgLy8gTm9pc2UgZnVuY3Rpb25zLgotICAgIC8vCi0gICAg
Ly9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lzZTEoZmxvYXQgeCk7IikpOwotICAgIC8vcy5h
cHBlbmQoVFN0cmluZygiZmxvYXQgbm9pc2UxKHZlYzIgIHgpOyIpKTsKLSAgICAvL3MuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IG5vaXNlMSh2ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBub2lzZTEodmVjNCAgeCk7IikpOwotCi0gICAgLy9zLmFwcGVuZChUU3RyaW5n
KCJ2ZWMyIG5vaXNlMihmbG9hdCB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMy
IG5vaXNlMih2ZWMyICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNl
Mih2ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNlMih2ZWM0
ICB4KTsiKSk7Ci0KLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKGZsb2F0IHgp
OyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKHZlYzIgIHgpOyIpKTsK
LSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKHZlYzMgIHgpOyIpKTsKLSAgICAv
L3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKHZlYzQgIHgpOyIpKTsKLQotICAgIC8vcy5h
cHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQoZmxvYXQgeCk7IikpOwotICAgIC8vcy5hcHBlbmQo
VFN0cmluZygidmVjNCBub2lzZTQodmVjMiAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCBub2lzZTQodmVjMyAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVj
NCBub2lzZTQodmVjNCAgeCk7IikpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9v
bDIsICJsZXNzVGhhbkVxdWFsIiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oYm9vbDMsICJsZXNzVGhhbkVxdWFsIiwgZmxvYXQzLCBmbG9hdDMpOworICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDQsICJsZXNzVGhhbkVxdWFsIiwgZmxvYXQ0
LCBmbG9hdDQpOwogCi0gICAgcmV0dXJuIHM7Ci19CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihib29sMiwgImxlc3NUaGFuRXF1YWwiLCBpbnQyLCBpbnQyKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGJvb2wzLCAibGVzc1RoYW5FcXVhbCIsIGludDMsIGludDMpOworICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDQsICJsZXNzVGhhbkVxdWFsIiwgaW50NCwg
aW50NCk7CiAKLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFByb3RvdHlwZXMgZm9yIGJ1
aWx0LWluIGZ1bmN0aW9ucyBzZWVuIGJ5IHZlcnRleCBzaGFkZXJzIG9ubHkuCi0vLwotLy89PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBCdWlsdEluRnVuY3Rpb25zVmVydGV4KGNv
bnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQotewotICAgIFRTdHJpbmcgczsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAiZ3JlYXRlclRoYW4iLCBmbG9hdDIs
IGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgImdyZWF0ZXJU
aGFuIiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9v
bDQsICJncmVhdGVyVGhhbiIsIGZsb2F0NCwgZmxvYXQ0KTsKIAotICAgIC8vCi0gICAgLy8gR2Vv
bWV0cmljIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBm
dHJhbnNmb3JtKCk7IikpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJn
cmVhdGVyVGhhbiIsIGludDIsIGludDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
Ym9vbDMsICJncmVhdGVyVGhhbiIsIGludDMsIGludDMpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oYm9vbDQsICJncmVhdGVyVGhhbiIsIGludDQsIGludDQpOwogCi0gICAgLy8KLSAg
ICAvLyBUZXh0dXJlIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgdGV4dHVyZTJETG9kKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMyIGNvb3JkLCBmbG9hdCBsb2Qp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2pMb2Qoc2FtcGxl
cjJEIHNhbXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0IGxvZCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVjNCBjb29y
ZCwgZmxvYXQgbG9kKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlQ3Vi
ZUxvZChzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBsb2QpOyIpKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAiZ3JlYXRlclRoYW5FcXVhbCIsIGZs
b2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wzLCAiZ3Jl
YXRlclRoYW5FcXVhbCIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGJvb2w0LCAiZ3JlYXRlclRoYW5FcXVhbCIsIGZsb2F0NCwgZmxvYXQ0KTsKIAotICAg
IHJldHVybiBzOwotfQorICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJncmVh
dGVyVGhhbkVxdWFsIiwgaW50MiwgaW50Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihib29sMywgImdyZWF0ZXJUaGFuRXF1YWwiLCBpbnQzLCBpbnQzKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAiZ3JlYXRlclRoYW5FcXVhbCIsIGludDQsIGludDQpOwog
Ci0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBQcm90b3R5cGVzIGZvciBidWlsdC1pbiBm
dW5jdGlvbnMgc2VlbiBieSBmcmFnbWVudCBzaGFkZXJzIG9ubHkuCi0vLwotLy89PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBCdWlsdEluRnVuY3Rpb25zRnJhZ21lbnQoY29uc3Qg
U2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCi17Ci0gICAgVFN0cmluZyBzOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJlcXVhbCIsIGZsb2F0MiwgZmxvYXQyKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wzLCAiZXF1YWwiLCBmbG9hdDMsIGZs
b2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwgImVxdWFsIiwgZmxv
YXQ0LCBmbG9hdDQpOwogCi0gICAgLy8KLSAgICAvLyBUZXh0dXJlIEZ1bmN0aW9ucy4KLSAgICAv
LwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEKHNhbXBsZXIyRCBzYW1wbGVy
LCB2ZWMyIGNvb3JkLCBmbG9hdCBiaWFzKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
NCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBiaWFz
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXIy
RCBzYW1wbGVyLCB2ZWM0IGNvb3JkLCBmbG9hdCBiaWFzKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjNCB0ZXh0dXJlQ3ViZShzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBm
bG9hdCBiaWFzKTsiKSk7Ci0KLSAgICBpZiAocmVzb3VyY2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcykgewotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkRmR4KGZsb2F0IHApOyIp
KTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZEZkeCh2ZWMyICBwKTsiKSk7Ci0g
ICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGRGZHgodmVjMyAgcCk7IikpOwotICAgICAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBkRmR4KHZlYzQgIHApOyIpKTsKLQotICAgICAgICBz
LmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkRmR5KGZsb2F0IHApOyIpKTsKLSAgICAgICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMiAgZEZkeSh2ZWMyICBwKTsiKSk7Ci0gICAgICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzMgIGRGZHkodmVjMyAgcCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWM0ICBkRmR5KHZlYzQgIHApOyIpKTsKLQotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJm
bG9hdCBmd2lkdGgoZmxvYXQgcCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMy
ICBmd2lkdGgodmVjMiAgcCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBm
d2lkdGgodmVjMyAgcCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBmd2lk
dGgodmVjNCAgcCk7IikpOwotICAgIH0KKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJv
b2wyLCAiZXF1YWwiLCBpbnQyLCBpbnQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGJvb2wzLCAiZXF1YWwiLCBpbnQzLCBpbnQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGJvb2w0LCAiZXF1YWwiLCBpbnQ0LCBpbnQ0KTsKIAotICAgIHJldHVybiBzOwotfQorICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJlcXVhbCIsIGJvb2wyLCBib29sMik7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgImVxdWFsIiwgYm9vbDMsIGJv
b2wzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAiZXF1YWwiLCBib29s
NCwgYm9vbDQpOwogCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBTdGFuZGFyZCB1bmlm
b3Jtcy4KLS8vCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLXN0YXRpYyBUU3RyaW5nIFN0YW5kYXJk
VW5pZm9ybXMoKQotewotICAgIFRTdHJpbmcgczsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGJvb2wyLCAibm90RXF1YWwiLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihib29sMywgIm5vdEVxdWFsIiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDQsICJub3RFcXVhbCIsIGZsb2F0NCwgZmxvYXQ0
KTsKIAotICAgIC8vCi0gICAgLy8gRGVwdGggcmFuZ2UgaW4gd2luZG93IGNvb3JkaW5hdGVzCi0g
ICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJzdHJ1Y3QgZ2xfRGVwdGhSYW5nZVBhcmFtZXRl
cnMgeyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCIgICAgaGlnaHAgZmxvYXQgbmVhcjsiKSk7
ICAgICAgICAvLyBuCi0gICAgcy5hcHBlbmQoVFN0cmluZygiICAgIGhpZ2hwIGZsb2F0IGZhcjsi
KSk7ICAgICAgICAgLy8gZgotICAgIHMuYXBwZW5kKFRTdHJpbmcoIiAgICBoaWdocCBmbG9hdCBk
aWZmOyIpKTsgICAgICAgIC8vIGYgLSBuCi0gICAgcy5hcHBlbmQoVFN0cmluZygifTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidW5pZm9ybSBnbF9EZXB0aFJhbmdlUGFyYW1ldGVycyBnbF9E
ZXB0aFJhbmdlOyIpKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAibm90
RXF1YWwiLCBpbnQyLCBpbnQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wz
LCAibm90RXF1YWwiLCBpbnQzLCBpbnQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGJvb2w0LCAibm90RXF1YWwiLCBpbnQ0LCBpbnQ0KTsKIAotICAgIHJldHVybiBzOwotfQorICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJub3RFcXVhbCIsIGJvb2wyLCBib29s
Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgIm5vdEVxdWFsIiwgYm9v
bDMsIGJvb2wzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAibm90RXF1
YWwiLCBib29sNCwgYm9vbDQpOwogCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBEZWZh
dWx0IHByZWNpc2lvbiBmb3IgdmVydGV4IHNoYWRlcnMuCi0vLwotLy89PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci1zdGF0aWMgVFN0cmluZyBEZWZhdWx0UHJlY2lzaW9uVmVydGV4KCkKLXsKLSAgICBUU3Ry
aW5nIHM7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMSwgImFueSIsIGJvb2wy
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wxLCAiYW55IiwgYm9vbDMpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDEsICJhbnkiLCBib29sNCk7CiAKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJwcmVjaXNpb24gaGlnaHAgaW50OyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7IikpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oYm9vbDEsICJhbGwiLCBib29sMik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihib29sMSwgImFsbCIsIGJvb2wzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGJvb2wxLCAiYWxsIiwgYm9vbDQpOwogCi0gICAgcmV0dXJuIHM7Ci19Ci0KLS8vPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLy8KLS8vIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmcmFnbWVudCBzaGFk
ZXJzLgotLy8KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotc3RhdGljIFRTdHJpbmcgRGVmYXVsdFBy
ZWNpc2lvbkZyYWdtZW50KCkKLXsKLSAgICBUU3RyaW5nIHM7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihib29sMiwgIm5vdCIsIGJvb2wyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGJvb2wzLCAibm90IiwgYm9vbDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oYm9vbDQsICJub3QiLCBib29sNCk7CiAKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJwcmVjaXNp
b24gbWVkaXVtcCBpbnQ7IikpOwotICAgIC8vIE5vIGRlZmF1bHQgcHJlY2lzaW9uIGZvciBmbG9h
dCBpbiBmcmFnbWVudCBzaGFkZXJzCisgICAgVFR5cGUgKnNhbXBsZXIyRCA9IG5ldyBUVHlwZShF
YnRTYW1wbGVyMkQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxKTsKKyAgICBUVHlwZSAqc2Ft
cGxlckN1YmUgPSBuZXcgVFR5cGUoRWJ0U2FtcGxlckN1YmUsIEVicFVuZGVmaW5lZCwgRXZxR2xv
YmFsLCAxKTsKIAotICAgIHJldHVybiBzOwotfQorICAgIC8vCisgICAgLy8gVGV4dHVyZSBGdW5j
dGlvbnMgZm9yIEdMU0wgRVMgMS4wCisgICAgLy8KKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0NCwgInRleHR1cmUyRCIsIHNhbXBsZXIyRCwgZmxvYXQyKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRFByb2oiLCBzYW1wbGVyMkQsIGZs
b2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0dXJlMkRQ
cm9qIiwgc2FtcGxlcjJELCBmbG9hdDQpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQ0LCAidGV4dHVyZUN1YmUiLCBzYW1wbGVyQ3ViZSwgZmxvYXQzKTsKIAotLy89PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0vLwotLy8gSW1wbGVtZW50YXRpb24gZGVwZW5kZW50IGJ1aWx0LWluIGNv
bnN0YW50cy4KLS8vCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLXN0YXRpYyBUU3RyaW5nIEJ1aWx0
SW5Db25zdGFudHMoU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAm
cmVzb3VyY2VzKQotewotICAgIFRTdHJpbmdTdHJlYW0gczsKKyAgICBpZiAocmVzb3VyY2VzLk9F
U19FR0xfaW1hZ2VfZXh0ZXJuYWwpCisgICAgeworICAgICAgICBUVHlwZSAqc2FtcGxlckV4dGVy
bmFsT0VTID0gbmV3IFRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUywgRWJwVW5kZWZpbmVkLCBF
dnFHbG9iYWwsIDEpOwogCi0gICAgcyA8PCAiY29uc3QgaW50IGdsX01heFZlcnRleEF0dHJpYnMg
PSAiIDw8IHJlc291cmNlcy5NYXhWZXJ0ZXhBdHRyaWJzIDw8ICI7IjsKLSAgICBzIDw8ICJjb25z
dCBpbnQgZ2xfTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgPSAiIDw8IHJlc291cmNlcy5NYXhWZXJ0
ZXhVbmlmb3JtVmVjdG9ycyA8PCAiOyI7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQ0LCAidGV4dHVyZTJEIiwgc2FtcGxlckV4dGVybmFsT0VTLCBmbG9hdDIpOworICAg
ICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRFByb2oiLCBz
YW1wbGVyRXh0ZXJuYWxPRVMsIGZsb2F0Myk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQ0LCAidGV4dHVyZTJEUHJvaiIsIHNhbXBsZXJFeHRlcm5hbE9FUywgZmxvYXQ0
KTsKKyAgICB9CiAKLSAgICBzIDw8ICJjb25zdCBpbnQgZ2xfTWF4VmFyeWluZ1ZlY3RvcnMgPSAi
IDw8IHJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyA8PCAiOyI7Ci0gICAgcyA8PCAiY29uc3Qg
aW50IGdsX01heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzID0gIiA8PCByZXNvdXJjZXMuTWF4VmVy
dGV4VGV4dHVyZUltYWdlVW5pdHMgPDwgIjsiOwotICAgIHMgPDwgImNvbnN0IGludCBnbF9NYXhD
b21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0gIiA8PCByZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0
dXJlSW1hZ2VVbml0cyA8PCAiOyI7Ci0gICAgcyA8PCAiY29uc3QgaW50IGdsX01heFRleHR1cmVJ
bWFnZVVuaXRzID0gIiA8PCByZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMgPDwgIjsiOwot
ICAgIHMgPDwgImNvbnN0IGludCBnbF9NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0gIiA8PCBy
ZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyA8PCAiOyI7CisgICAgaWYgKHJlc291
cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpCisgICAgeworICAgICAgICBUVHlwZSAqc2FtcGxl
cjJEUmVjdCA9IG5ldyBUVHlwZShFYnRTYW1wbGVyMkRSZWN0LCBFYnBVbmRlZmluZWQsIEV2cUds
b2JhbCwgMSk7CiAKLSAgICBpZiAoc3BlYyAhPSBTSF9DU1NfU0hBREVSU19TUEVDKQotICAgICAg
ICBzIDw8ICJjb25zdCBpbnQgZ2xfTWF4RHJhd0J1ZmZlcnMgPSAiIDw8IHJlc291cmNlcy5NYXhE
cmF3QnVmZmVycyA8PCAiOyI7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQ0LCAidGV4dHVyZTJEUmVjdCIsIHNhbXBsZXIyRFJlY3QsIGZsb2F0Mik7CisgICAgICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZTJEUmVjdFByb2oiLCBzYW1w
bGVyMkRSZWN0LCBmbG9hdDMpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0NCwgInRleHR1cmUyRFJlY3RQcm9qIiwgc2FtcGxlcjJEUmVjdCwgZmxvYXQ0KTsKKyAgICB9
CiAKLSAgICByZXR1cm4gcy5zdHIoKTsKLX0KKyAgICBpZiAodHlwZSA9PSBTSF9GUkFHTUVOVF9T
SEFERVIpCisgICAgeworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwg
InRleHR1cmUyRCIsIHNhbXBsZXIyRCwgZmxvYXQyLCBmbG9hdDEpOworICAgICAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRFByb2oiLCBzYW1wbGVyMkQsIGZs
b2F0MywgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQs
ICJ0ZXh0dXJlMkRQcm9qIiwgc2FtcGxlcjJELCBmbG9hdDQsIGZsb2F0MSk7CisgICAgICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZUN1YmUiLCBzYW1wbGVyQ3Vi
ZSwgZmxvYXQzLCBmbG9hdDEpOworCisgICAgICAgIGlmIChyZXNvdXJjZXMuT0VTX3N0YW5kYXJk
X2Rlcml2YXRpdmVzKQorICAgICAgICB7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0MSwgImRGZHgiLCBmbG9hdDEpOworICAgICAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihmbG9hdDIsICJkRmR4IiwgZmxvYXQyKTsKKyAgICAgICAgICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiZEZkeCIsIGZsb2F0Myk7CisgICAgICAgICAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImRGZHgiLCBmbG9hdDQpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwg
ImRGZHkiLCBmbG9hdDEpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDIsICJkRmR5IiwgZmxvYXQyKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQzLCAiZEZkeSIsIGZsb2F0Myk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0NCwgImRGZHkiLCBmbG9hdDQpOworCisgICAgICAgICAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImZ3aWR0aCIsIGZsb2F0MSk7CisgICAgICAg
ICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImZ3aWR0aCIsIGZsb2F0Mik7
CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImZ3aWR0aCIs
IGZsb2F0Myk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwg
ImZ3aWR0aCIsIGZsb2F0NCk7CisgICAgICAgIH0KKyAgICB9CiAKLXZvaWQgVEJ1aWx0SW5zOjpp
bml0aWFsaXplKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQot
ewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgU0hfRlJBR01FTlRfU0hBREVSOgotICAg
ICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soRGVmYXVsdFByZWNpc2lvbkZyYWdtZW50KCkp
OwotICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9uc0NvbW1v
bihyZXNvdXJjZXMpKTsKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1aWx0SW5G
dW5jdGlvbnNGcmFnbWVudChyZXNvdXJjZXMpKTsKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVz
aF9iYWNrKFN0YW5kYXJkVW5pZm9ybXMoKSk7Ci0gICAgICAgIGJyZWFrOworICAgIGlmKHR5cGUg
PT0gU0hfVkVSVEVYX1NIQURFUikKKyAgICB7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQ0LCAidGV4dHVyZTJETG9kIiwgc2FtcGxlcjJELCBmbG9hdDIsIGZsb2F0MSk7
CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZTJEUHJv
akxvZCIsIHNhbXBsZXIyRCwgZmxvYXQzLCBmbG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRFByb2pMb2QiLCBzYW1wbGVyMkQsIGZsb2F0
NCwgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0
ZXh0dXJlQ3ViZUxvZCIsIHNhbXBsZXJDdWJlLCBmbG9hdDMsIGZsb2F0MSk7CisgICAgfQogCi0g
ICAgY2FzZSBTSF9WRVJURVhfU0hBREVSOgotICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2Jh
Y2soRGVmYXVsdFByZWNpc2lvblZlcnRleCgpKTsKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVz
aF9iYWNrKEJ1aWx0SW5GdW5jdGlvbnNDb21tb24ocmVzb3VyY2VzKSk7Ci0gICAgICAgIGJ1aWx0
SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zVmVydGV4KHJlc291cmNlcykpOwot
ICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soU3RhbmRhcmRVbmlmb3JtcygpKTsKLSAg
ICAgICAgYnJlYWs7CisgICAgLy8KKyAgICAvLyBEZXB0aCByYW5nZSBpbiB3aW5kb3cgY29vcmRp
bmF0ZXMKKyAgICAvLworICAgIFRGaWVsZExpc3QgKmZpZWxkcyA9IE5ld1Bvb2xURmllbGRMaXN0
KCk7CisgICAgVEZpZWxkICpuZWFyID0gbmV3IFRGaWVsZChuZXcgVFR5cGUoRWJ0RmxvYXQsIEVi
cEhpZ2gsIEV2cUdsb2JhbCwgMSksIE5ld1Bvb2xUU3RyaW5nKCJuZWFyIikpOworICAgIFRGaWVs
ZCAqZmFyID0gbmV3IFRGaWVsZChuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUdsb2Jh
bCwgMSksIE5ld1Bvb2xUU3RyaW5nKCJmYXIiKSk7CisgICAgVEZpZWxkICpkaWZmID0gbmV3IFRG
aWVsZChuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUdsb2JhbCwgMSksIE5ld1Bvb2xU
U3RyaW5nKCJkaWZmIikpOworICAgIGZpZWxkcy0+cHVzaF9iYWNrKG5lYXIpOworICAgIGZpZWxk
cy0+cHVzaF9iYWNrKGZhcik7CisgICAgZmllbGRzLT5wdXNoX2JhY2soZGlmZik7CisgICAgVFN0
cnVjdHVyZSAqZGVwdGhSYW5nZVN0cnVjdCA9IG5ldyBUU3RydWN0dXJlKE5ld1Bvb2xUU3RyaW5n
KCJnbF9EZXB0aFJhbmdlUGFyYW1ldGVycyIpLCBmaWVsZHMpOworICAgIFRWYXJpYWJsZSAqZGVw
dGhSYW5nZVBhcmFtZXRlcnMgPSBuZXcgVFZhcmlhYmxlKCZkZXB0aFJhbmdlU3RydWN0LT5uYW1l
KCksIGRlcHRoUmFuZ2VTdHJ1Y3QsIHRydWUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydCgqZGVw
dGhSYW5nZVBhcmFtZXRlcnMpOworICAgIFRWYXJpYWJsZSAqZGVwdGhSYW5nZSA9IG5ldyBUVmFy
aWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0RlcHRoUmFuZ2UiKSwgVFR5cGUoZGVwdGhSYW5nZVN0
cnVjdCkpOworICAgIGRlcHRoUmFuZ2UtPnNldFF1YWxpZmllcihFdnFVbmlmb3JtKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnQoKmRlcHRoUmFuZ2UpOworCisgICAgLy8KKyAgICAvLyBJbXBsZW1l
bnRhdGlvbiBkZXBlbmRlbnQgYnVpbHQtaW4gY29uc3RhbnRzLgorICAgIC8vCisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0Q29uc3RJbnQoImdsX01heFZlcnRleEF0dHJpYnMiLCByZXNvdXJjZXMuTWF4
VmVydGV4QXR0cmlicyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoImdsX01heFZl
cnRleFVuaWZvcm1WZWN0b3JzIiwgcmVzb3VyY2VzLk1heFZlcnRleFVuaWZvcm1WZWN0b3JzKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludCgiZ2xfTWF4VmFyeWluZ1ZlY3RvcnMiLCBy
ZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydENvbnN0
SW50KCJnbF9NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyIsIHJlc291cmNlcy5NYXhWZXJ0ZXhU
ZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoImdsX01h
eENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMiLCByZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0dXJl
SW1hZ2VVbml0cyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoImdsX01heFRleHR1
cmVJbWFnZVVuaXRzIiwgcmVzb3VyY2VzLk1heFRleHR1cmVJbWFnZVVuaXRzKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRDb25zdEludCgiZ2xfTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyIsIHJl
c291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKTsKIAotICAgIGRlZmF1bHQ6IGFzc2Vy
dChmYWxzZSAmJiAiTGFuZ3VhZ2Ugbm90IHN1cHBvcnRlZCIpOworICAgIGlmIChzcGVjICE9IFNI
X0NTU19TSEFERVJTX1NQRUMpCisgICAgeworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25z
dEludCgiZ2xfTWF4RHJhd0J1ZmZlcnMiLCByZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMpOwogICAg
IH0KLQotICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluQ29uc3RhbnRzKHNwZWMs
IHJlc291cmNlcykpOwogfQogCiB2b2lkIElkZW50aWZ5QnVpbHRJbnMoU2hTaGFkZXJUeXBlIHR5
cGUsIFNoU2hhZGVyU3BlYyBzcGVjLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoQnVp
bHRJblJlc291cmNlcyYgcmVzb3VyY2VzLAotICAgICAgICAgICAgICAgICAgICAgIFRTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUpCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hCdWlsdElu
UmVzb3VyY2VzICZyZXNvdXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAgVFN5bWJvbFRhYmxl
ICZzeW1ib2xUYWJsZSkKIHsKICAgICAvLwogICAgIC8vIEZpcnN0LCBpbnNlcnQgc29tZSBzcGVj
aWFsIGJ1aWx0LWluIHZhcmlhYmxlcyB0aGF0IGFyZSBub3QgaW4gCkBAIC01MzksNiArNDM5LDEw
IEBAIHZvaWQgSWRlbnRpZnlCdWlsdElucyhTaFNoYWRlclR5cGUgdHlwZSwKICAgICAgICAgaWYg
KHNwZWMgIT0gU0hfQ1NTX1NIQURFUlNfU1BFQykgewogICAgICAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnQ29sb3IiKSwgICAg
ICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0NvbG9yLCAg
IDQpKSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3
UG9vbFRTdHJpbmcoImdsX0ZyYWdEYXRhW2dsX01heERyYXdCdWZmZXJzXSIpLCBUVHlwZShFYnRG
bG9hdCwgRWJwTWVkaXVtLCBFdnFGcmFnRGF0YSwgICAgNCkpKTsKKyAgICAgICAgICAgIGlmIChy
ZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGgpIHsKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS5p
bnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdEZXB0aEVYVCIpLCAg
ICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCByZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdo
ID8gRWJwSGlnaCA6IEVicE1lZGl1bSwgRXZxRnJhZ0RlcHRoLCAxKSkpOworICAgICAgICAgICAg
ICAgIHN5bWJvbFRhYmxlLnJlbGF0ZVRvRXh0ZW5zaW9uKCJnbF9GcmFnRGVwdGhFWFQiLCAiR0xf
RVhUX2ZyYWdfZGVwdGgiKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygi
Y3NzX01peENvbG9yIiksICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRp
dW0sIEV2cUdsb2JhbCwgICAgICA0KSkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJjc3NfQ29sb3JNYXRyaXgiKSwgICAgICAg
ICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxR2xvYmFsLCAgICAgIDQsIHRy
dWUpKSk7CkBAIC01NjAsOCArNDY0LDYgQEAgdm9pZCBJZGVudGlmeUJ1aWx0SW5zKFNoU2hhZGVy
VHlwZSB0eXBlLAogICAgIC8vIGV4cGVjdGVkIHRvIGJlIHJlc29sdmVkIHRocm91Z2ggYSBsaWJy
YXJ5IG9mIGZ1bmN0aW9ucywgdmVyc3VzIGFzCiAgICAgLy8gb3BlcmF0aW9ucy4KICAgICAvLwot
ICAgIHN5bWJvbFRhYmxlLnJlbGF0ZVRvT3BlcmF0b3IoIm5vdCIsICAgICAgICAgICAgICBFT3BW
ZWN0b3JMb2dpY2FsTm90KTsKLQogICAgIHN5bWJvbFRhYmxlLnJlbGF0ZVRvT3BlcmF0b3IoIm1h
dHJpeENvbXBNdWx0IiwgICBFT3BNdWwpOwogCiAgICAgc3ltYm9sVGFibGUucmVsYXRlVG9PcGVy
YXRvcigiZXF1YWwiLCAgICAgICAgICAgIEVPcFZlY3RvckVxdWFsKTsKQEAgLTYxMiw2ICs1MTQs
NyBAQCB2b2lkIElkZW50aWZ5QnVpbHRJbnMoU2hTaGFkZXJUeXBlIHR5cGUsCiAgICAgCiAgICAg
c3ltYm9sVGFibGUucmVsYXRlVG9PcGVyYXRvcigiYW55IiwgICAgICAgICAgRU9wQW55KTsKICAg
ICBzeW1ib2xUYWJsZS5yZWxhdGVUb09wZXJhdG9yKCJhbGwiLCAgICAgICAgICBFT3BBbGwpOwor
ICAgIHN5bWJvbFRhYmxlLnJlbGF0ZVRvT3BlcmF0b3IoIm5vdCIsICAgICAgICAgIEVPcFZlY3Rv
ckxvZ2ljYWxOb3QpOwogCiAgICAgLy8gTWFwIGxhbmd1YWdlLXNwZWNpZmljIG9wZXJhdG9ycy4K
ICAgICBzd2l0Y2godHlwZSkgewpAQCAtNjU2LDQgKzU1OSw2IEBAIHZvaWQgSW5pdEV4dGVuc2lv
bkJlaGF2aW9yKGNvbnN0IFNoQnVpbHQKICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX0FSQl90ZXh0
dXJlX3JlY3RhbmdsZSJdID0gRUJoVW5kZWZpbmVkOwogICAgIGlmIChyZXNvdXJjZXMuRVhUX2Ry
YXdfYnVmZmVycykKICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX0VYVF9kcmF3X2J1ZmZlcnMiXSA9
IEVCaFVuZGVmaW5lZDsKKyAgICBpZiAocmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoKQorICAgICAg
ICBleHRCZWhhdmlvclsiR0xfRVhUX2ZyYWdfZGVwdGgiXSA9IEVCaFVuZGVmaW5lZDsKIH0KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxp
emUuaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL0luaXRpYWxpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTEsMTkgKzExLDcgQEAKICNpbmNs
dWRlICJjb21waWxlci9TaEhhbmRsZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxl
LmgiCiAKLXR5cGVkZWYgVFZlY3RvcjxUU3RyaW5nPiBUQnVpbHRJblN0cmluZ3M7Ci0KLWNsYXNz
IFRCdWlsdElucyB7Ci1wdWJsaWM6Ci0gICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURShHbG9i
YWxQb29sQWxsb2NhdG9yKQotCi0gICAgdm9pZCBpbml0aWFsaXplKFNoU2hhZGVyVHlwZSB0eXBl
LCBTaFNoYWRlclNwZWMgc3BlYywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hCdWlsdElu
UmVzb3VyY2VzJiByZXNvdXJjZXMpOwotICAgIGNvbnN0IFRCdWlsdEluU3RyaW5ncyYgZ2V0QnVp
bHRJblN0cmluZ3MoKSB7IHJldHVybiBidWlsdEluU3RyaW5nczsgfQotCi1wcm90ZWN0ZWQ6Ci0g
ICAgVEJ1aWx0SW5TdHJpbmdzIGJ1aWx0SW5TdHJpbmdzOwotfTsKK3ZvaWQgSW5zZXJ0QnVpbHRJ
bkZ1bmN0aW9ucyhTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0IFNo
QnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzLCBUU3ltYm9sVGFibGUgJnRhYmxlKTsKIAogdm9p
ZCBJZGVudGlmeUJ1aWx0SW5zKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywK
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNl
cywKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlh
dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9JbnRlcm1lZGlhdGUuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTMx
LDcgKzEzMSw3IEBAIGNvbnN0IGNoYXIqIGdldE9wZXJhdG9yU3RyaW5nKFRPcGVyYXRvciAKIC8v
CiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8KLVRJbnRlcm1TeW1ib2wqIFRJbnRlcm1l
ZGlhdGU6OmFkZFN5bWJvbChpbnQgaWQsIGNvbnN0IFRTdHJpbmcmIG5hbWUsIGNvbnN0IFRUeXBl
JiB0eXBlLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtU3ltYm9sKiBUSW50ZXJtZWRpYXRlOjph
ZGRTeW1ib2woaW50IGlkLCBjb25zdCBUU3RyaW5nJiBuYW1lLCBjb25zdCBUVHlwZSYgdHlwZSwg
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJtU3ltYm9sKiBub2RlID0gbmV3
IFRJbnRlcm1TeW1ib2woaWQsIG5hbWUsIHR5cGUpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7
CkBAIC0xNDQsNyArMTQ0LDcgQEAgVEludGVybVN5bWJvbCogVEludGVybWVkaWF0ZTo6YWRkU3lt
Ym9sKAogLy8KIC8vIFJldHVybnMgdGhlIGFkZGVkIG5vZGUuCiAvLwotVEludGVybVR5cGVkKiBU
SW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBs
ZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jIGxpbmUsIFRTeW1ib2xUYWJsZSYg
c3ltYm9sVGFibGUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFyeU1hdGgo
VE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCiB7CiAgICAg
c3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIEVPcEVxdWFsOgpAQCAtMjAwLDggKzIwMCw2IEBA
IFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQmluYXJ5TWEKICAgICAvLyBvbmUgYW5k
IHByb21vdGUgaXQgdG8gdGhlIHJpZ2h0IHR5cGUuCiAgICAgLy8KICAgICBUSW50ZXJtQmluYXJ5
KiBub2RlID0gbmV3IFRJbnRlcm1CaW5hcnkob3ApOwotICAgIGlmIChsaW5lID09IDApCi0gICAg
ICAgIGxpbmUgPSByaWdodC0+Z2V0TGluZSgpOwogICAgIG5vZGUtPnNldExpbmUobGluZSk7CiAK
ICAgICBub2RlLT5zZXRMZWZ0KGxlZnQpOwpAQCAtMjMwLDE1ICsyMjgsMTMgQEAgVEludGVybVR5
cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYQogLy8KIC8vIFJldHVybnMgdGhlIGFkZGVk
IG5vZGUuCiAvLwotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRBc3NpZ24oVE9wZXJh
dG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIFRTb3VyY2VM
b2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKFRPcGVyYXRv
ciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25zdCBUU291
cmNlTG9jJiBsaW5lKQogewogICAgIC8vCiAgICAgLy8gTGlrZSBhZGRpbmcgYmluYXJ5IG1hdGgs
IGV4Y2VwdCB0aGUgY29udmVyc2lvbiBjYW4gb25seSBnbwogICAgIC8vIGZyb20gcmlnaHQgdG8g
bGVmdC4KICAgICAvLwogICAgIFRJbnRlcm1CaW5hcnkqIG5vZGUgPSBuZXcgVEludGVybUJpbmFy
eShvcCk7Ci0gICAgaWYgKGxpbmUgPT0gMCkKLSAgICAgICAgbGluZSA9IGxlZnQtPmdldExpbmUo
KTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAgVEludGVybVR5cGVkKiBjaGlsZCA9
IGFkZENvbnZlcnNpb24ob3AsIGxlZnQtPmdldFR5cGUoKSwgcmlnaHQpOwpAQCAtMjYwLDExICsy
NTYsOSBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEFzc2lnbihUCiAvLyBSZXR1
cm5zIHRoZSBhZGRlZCBub2RlLgogLy8gVGhlIGNhbGxlciBzaG91bGQgc2V0IHRoZSB0eXBlIG9m
IHRoZSByZXR1cm5lZCBub2RlLgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRk
SW5kZXgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5k
ZXgsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkSW5k
ZXgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCogaW5kZXgs
IGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybUJpbmFyeSogbm9kZSA9IG5l
dyBUSW50ZXJtQmluYXJ5KG9wKTsKLSAgICBpZiAobGluZSA9PSAwKQotICAgICAgICBsaW5lID0g
aW5kZXgtPmdldExpbmUoKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwogICAgIG5vZGUtPnNl
dExlZnQoYmFzZSk7CiAgICAgbm9kZS0+c2V0UmlnaHQoaW5kZXgpOwpAQCAtMjc5LDEzICsyNzMs
MTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRJbmRleChUTwogLy8KIC8vIFJl
dHVybnMgdGhlIGFkZGVkIG5vZGUuCiAvLwotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjph
ZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtTm9kZSogY2hpbGROb2RlLCBUU291cmNl
TG9jIGxpbmUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCitUSW50ZXJtVHlwZWQqIFRJbnRl
cm1lZGlhdGU6OmFkZFVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBjaGlsZE5v
ZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCiB7
CiAgICAgVEludGVybVVuYXJ5KiBub2RlOwogICAgIFRJbnRlcm1UeXBlZCogY2hpbGQgPSBjaGls
ZE5vZGUtPmdldEFzVHlwZWQoKTsKIAogICAgIGlmIChjaGlsZCA9PSAwKSB7Ci0gICAgICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJhZCB0eXBlIGluIEFk
ZFVuYXJ5TWF0aCIsIGxpbmUpOworICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsIGxpbmUsICJCYWQgdHlwZSBpbiBBZGRVbmFyeU1hdGgiKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0zNDgsOCArMzQyLDYgQEAgVEludGVybVR5cGVkKiBU
SW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdAogICAgIC8vIE1ha2UgYSBuZXcgbm9kZSBmb3IgdGhl
IG9wZXJhdG9yLgogICAgIC8vCiAgICAgbm9kZSA9IG5ldyBUSW50ZXJtVW5hcnkob3ApOwotICAg
IGlmIChsaW5lID09IDApCi0gICAgICAgIGxpbmUgPSBjaGlsZC0+Z2V0TGluZSgpOwogICAgIG5v
ZGUtPnNldExpbmUobGluZSk7CiAgICAgbm9kZS0+c2V0T3BlcmFuZChjaGlsZCk7CiAKQEAgLTM3
Niw3ICszNjgsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0CiAv
LyBSZXR1cm5zIGFuIGFnZ3JlZ2F0ZSBub2RlLCB3aGljaCBjb3VsZCBiZSB0aGUgb25lIHBhc3Nl
ZCBpbiBpZgogLy8gaXQgd2FzIGFscmVhZHkgYW4gYWdncmVnYXRlIGJ1dCBubyBvcGVyYXRvciB3
YXMgc2V0LgogLy8KLVRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3JlZ2F0
ZU9wZXJhdG9yKFRJbnRlcm1Ob2RlKiBub2RlLCBUT3BlcmF0b3Igb3AsIFRTb3VyY2VMb2MgbGlu
ZSkKK1RJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3JlZ2F0ZU9wZXJhdG9y
KFRJbnRlcm1Ob2RlKiBub2RlLCBUT3BlcmF0b3Igb3AsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUp
CiB7CiAgICAgVEludGVybUFnZ3JlZ2F0ZSogYWdnTm9kZTsKIApAQCAtMzkxLDggKzM4Myw2IEBA
IFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3IKICAgICAgICAgICAgIC8v
CiAgICAgICAgICAgICBhZ2dOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoKTsKICAgICAgICAg
ICAgIGFnZ05vZGUtPmdldFNlcXVlbmNlKCkucHVzaF9iYWNrKG5vZGUpOwotICAgICAgICAgICAg
aWYgKGxpbmUgPT0gMCkKLSAgICAgICAgICAgICAgICBsaW5lID0gbm9kZS0+Z2V0TGluZSgpOwog
ICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIGFnZ05vZGUgPSBuZXcgVEludGVybUFnZ3Jl
Z2F0ZSgpOwpAQCAtNDAxLDggKzM5MSw3IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlh
dGU6OnNldEFnZ3IKICAgICAvLyBTZXQgdGhlIG9wZXJhdG9yLgogICAgIC8vCiAgICAgYWdnTm9k
ZS0+c2V0T3Aob3ApOwotICAgIGlmIChsaW5lICE9IDApCi0gICAgICAgIGFnZ05vZGUtPnNldExp
bmUobGluZSk7CisgICAgYWdnTm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAgIHJldHVybiBhZ2dO
b2RlOwogfQpAQCAtNDkxLDcgKzQ4MCw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6
YWRkQ29udmVyc2kKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6ICAgbmV3T3AgPSBF
T3BDb252SW50VG9GbG9hdDsgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJv
b2w6ICBuZXdPcCA9IEVPcENvbnZCb29sVG9GbG9hdDsgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3Nh
Z2UoRVByZWZpeEludGVybmFsRXJyb3IsICJCYWQgcHJvbW90aW9uIG5vZGUiLCBub2RlLT5nZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJCYWQgcHJvbW90aW9uIG5vZGUi
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTUwMCw3ICs0ODksNyBAQCBUSW50ZXJtVHlwZWQq
IFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0
SW50OiAgIG5ld09wID0gRU9wQ29udkludFRvQm9vbDsgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRGbG9hdDogbmV3T3AgPSBFT3BDb252RmxvYXRUb0Jvb2w7IGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHByb21vdGlvbiBu
b2RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFk
IHByb21vdGlvbiBub2RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01MDksMTIgKzQ5OCwx
MiBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNpCiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0Qm9vbDogICBuZXdPcCA9IEVPcENvbnZCb29sVG9JbnQ7ICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDogIG5ld09wID0gRU9wQ29udkZs
b2F0VG9JbnQ7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCAiQmFkIHByb21vdGlvbiBub2RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9k
ZS0+Z2V0TGluZSgpLCAiQmFkIHByb21vdGlvbiBub2RlIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gdHlwZSIsIG5vZGUtPmdl
dExpbmUoKSk7CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJCYWQgcHJvbW90aW9uIHR5cGUiKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCkBAIC01MzQsNyArNTIzLDcgQEAg
VEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb252ZXJzaQogLy8gUmV0dXJucyB0aGUg
cmVzdWx0aW5nIGFnZ3JlZ2F0ZSwgdW5sZXNzIDAgd2FzIHBhc3NlZCBpbiBmb3IKIC8vIGJvdGgg
ZXhpc3Rpbmcgbm9kZXMuCiAvLwotVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6Z3Jv
d0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVmdCwgVEludGVybU5vZGUqIHJpZ2h0LCBUU291cmNl
TG9jIGxpbmUpCitUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpncm93QWdncmVnYXRl
KFRJbnRlcm1Ob2RlKiBsZWZ0LCBUSW50ZXJtTm9kZSogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUpCiB7CiAgICAgaWYgKGxlZnQgPT0gMCAmJiByaWdodCA9PSAwKQogICAgICAgICByZXR1
cm4gMDsKQEAgLTU1MSw4ICs1NDAsNyBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRl
Ojpncm93QWdnCiAgICAgaWYgKHJpZ2h0KQogICAgICAgICBhZ2dOb2RlLT5nZXRTZXF1ZW5jZSgp
LnB1c2hfYmFjayhyaWdodCk7CiAKLSAgICBpZiAobGluZSAhPSAwKQotICAgICAgICBhZ2dOb2Rl
LT5zZXRMaW5lKGxpbmUpOworICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CiAKICAgICByZXR1
cm4gYWdnTm9kZTsKIH0KQEAgLTU2MiwxOCArNTUwLDE0IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJ
bnRlcm1lZGlhdGU6Omdyb3dBZ2cKIC8vCiAvLyBSZXR1cm5zIGFuIGFnZ3JlZ2F0ZSwgdW5sZXNz
IDAgd2FzIHBhc3NlZCBpbiBmb3IgdGhlIGV4aXN0aW5nIG5vZGUuCiAvLwotVEludGVybUFnZ3Jl
Z2F0ZSogVEludGVybWVkaWF0ZTo6bWFrZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbm9kZSwgVFNv
dXJjZUxvYyBsaW5lKQorVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6bWFrZUFnZ3Jl
Z2F0ZShUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBp
ZiAobm9kZSA9PSAwKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFRJbnRlcm1BZ2dyZWdhdGUq
IGFnZ05vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZTsKICAgICBhZ2dOb2RlLT5nZXRTZXF1ZW5j
ZSgpLnB1c2hfYmFjayhub2RlKTsKLQotICAgIGlmIChsaW5lICE9IDApCi0gICAgICAgIGFnZ05v
ZGUtPnNldExpbmUobGluZSk7Ci0gICAgZWxzZQotICAgICAgICBhZ2dOb2RlLT5zZXRMaW5lKG5v
ZGUtPmdldExpbmUoKSk7CisgICAgYWdnTm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAgIHJldHVy
biBhZ2dOb2RlOwogfQpAQCAtNTg1LDcgKzU2OSw3IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRl
cm1lZGlhdGU6Om1ha2VBZ2cKIC8vCiAvLyBSZXR1cm5zIHRoZSBzZWxlY3Rpb24gbm9kZSBjcmVh
dGVkLgogLy8KLVRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24oVEludGVy
bVR5cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBhaXIgbm9kZVBhaXIsIFRTb3VyY2VMb2MgbGluZSkK
K1RJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBj
b25kLCBUSW50ZXJtTm9kZVBhaXIgbm9kZVBhaXIsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7
CiAgICAgLy8KICAgICAvLyBGb3IgY29tcGlsZSB0aW1lIGNvbnN0YW50IHNlbGVjdGlvbnMsIHBy
dW5lIHRoZSBjb2RlIGFuZApAQCAtNTkzLDcgKzU3Nyw3IEBAIFRJbnRlcm1Ob2RlKiBUSW50ZXJt
ZWRpYXRlOjphZGRTZWxlY3Rpb24KICAgICAvLwogCiAgICAgaWYgKGNvbmQtPmdldEFzVHlwZWQo
KSAmJiBjb25kLT5nZXRBc1R5cGVkKCktPmdldEFzQ29uc3RhbnRVbmlvbigpKSB7Ci0gICAgICAg
IGlmIChjb25kLT5nZXRBc1R5cGVkKCktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpLT5nZXRCQ29uc3QoKSA9PSB0cnVlKQorICAgICAgICBpZiAoY29uZC0+Z2V0
QXNDb25zdGFudFVuaW9uKCktPmdldEJDb25zdCgwKSA9PSB0cnVlKQogICAgICAgICAgICAgcmV0
dXJuIG5vZGVQYWlyLm5vZGUxID8gc2V0QWdncmVnYXRlT3BlcmF0b3Iobm9kZVBhaXIubm9kZTEs
IEVPcFNlcXVlbmNlLCBub2RlUGFpci5ub2RlMS0+Z2V0TGluZSgpKSA6IE5VTEw7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHJldHVybiBub2RlUGFpci5ub2RlMiA/IHNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKG5vZGVQYWlyLm5vZGUyLCBFT3BTZXF1ZW5jZSwgbm9kZVBhaXIubm9kZTItPmdldExp
bmUoKSkgOiBOVUxMOwpAQCAtNjA2LDcgKzU5MCw3IEBAIFRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRp
YXRlOjphZGRTZWxlY3Rpb24KIH0KIAogCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFk
ZENvbW1hKFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxv
YyBsaW5lKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb21tYShUSW50ZXJtVHlw
ZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7
CiAgICAgaWYgKGxlZnQtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCAmJiBy
aWdodC0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CiAgICAgICAgIHJl
dHVybiByaWdodDsKQEAgLTYyNiw3ICs2MTAsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlh
dGU6OmFkZENvbW1hKFRJCiAvLwogLy8gUmV0dXJucyB0aGUgc2VsZWN0aW9uIG5vZGUgY3JlYXRl
ZCwgb3IgMCBpZiBvbmUgY291bGQgbm90IGJlLgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVk
aWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiB0cnVl
QmxvY2ssIFRJbnRlcm1UeXBlZCogZmFsc2VCbG9jaywgVFNvdXJjZUxvYyBsaW5lKQorVEludGVy
bVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBU
SW50ZXJtVHlwZWQqIHRydWVCbG9jaywgVEludGVybVR5cGVkKiBmYWxzZUJsb2NrLCBjb25zdCBU
U291cmNlTG9jJiBsaW5lKQogewogICAgIC8vCiAgICAgLy8gR2V0IGNvbXBhdGlibGUgdHlwZXMu
CkBAIC02NDcsNyArNjMxLDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxl
Y3RpbwogICAgIC8vCiAKICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCkgJiYgdHJ1
ZUJsb2NrLT5nZXRBc0NvbnN0YW50VW5pb24oKSAmJiBmYWxzZUJsb2NrLT5nZXRBc0NvbnN0YW50
VW5pb24oKSkgewotICAgICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVu
aW9uQXJyYXlQb2ludGVyKCktPmdldEJDb25zdCgpKQorICAgICAgICBpZiAoY29uZC0+Z2V0QXND
b25zdGFudFVuaW9uKCktPmdldEJDb25zdCgwKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlQmxv
Y2s7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBmYWxzZUJsb2NrOwpAQCAtNjY5
LDcgKzY1Myw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW8KIC8v
IFJldHVybnMgdGhlIGNvbnN0YW50IHVuaW9uIG5vZGUgY3JlYXRlZC4KIC8vCiAKLVRJbnRlcm1D
b25zdGFudFVuaW9uKiBUSW50ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9uKENvbnN0YW50VW5p
b24qIHVuaW9uQXJyYXlQb2ludGVyLCBjb25zdCBUVHlwZSYgdCwgVFNvdXJjZUxvYyBsaW5lKQor
VEludGVybUNvbnN0YW50VW5pb24qIFRJbnRlcm1lZGlhdGU6OmFkZENvbnN0YW50VW5pb24oQ29u
c3RhbnRVbmlvbiogdW5pb25BcnJheVBvaW50ZXIsIGNvbnN0IFRUeXBlJiB0LCBjb25zdCBUU291
cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2RlID0gbmV3IFRJ
bnRlcm1Db25zdGFudFVuaW9uKHVuaW9uQXJyYXlQb2ludGVyLCB0KTsKICAgICBub2RlLT5zZXRM
aW5lKGxpbmUpOwpAQCAtNjc3LDcgKzY2MSw3IEBAIFRJbnRlcm1Db25zdGFudFVuaW9uKiBUSW50
ZXJtZWRpYXRlOjphZGQKICAgICByZXR1cm4gbm9kZTsKIH0KIAotVEludGVybVR5cGVkKiBUSW50
ZXJtZWRpYXRlOjphZGRTd2l6emxlKFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgVFNvdXJjZUxvYyBs
aW5lKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKFRWZWN0b3JGaWVs
ZHMmIGZpZWxkcywgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKIAogICAgIFRJbnRlcm1BZ2dy
ZWdhdGUqIG5vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CkBAIC03MDAs
NyArNjg0LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKAogLy8K
IC8vIENyZWF0ZSBsb29wIG5vZGVzLgogLy8KLVRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjph
ZGRMb29wKFRMb29wVHlwZSB0eXBlLCBUSW50ZXJtTm9kZSogaW5pdCwgVEludGVybVR5cGVkKiBj
b25kLCBUSW50ZXJtVHlwZWQqIGV4cHIsIFRJbnRlcm1Ob2RlKiBib2R5LCBUU291cmNlTG9jIGxp
bmUpCitUSW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkTG9vcChUTG9vcFR5cGUgdHlwZSwg
VEludGVybU5vZGUqIGluaXQsIFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVkKiBleHBy
LCBUSW50ZXJtTm9kZSogYm9keSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50
ZXJtTm9kZSogbm9kZSA9IG5ldyBUSW50ZXJtTG9vcCh0eXBlLCBpbml0LCBjb25kLCBleHByLCBi
b2R5KTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtNzExLDEyICs2OTUsMTIgQEAgVElu
dGVybU5vZGUqIFRJbnRlcm1lZGlhdGU6OmFkZExvb3AoVExvbwogLy8KIC8vIEFkZCBicmFuY2hl
cy4KIC8vCi1USW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9wZXJhdG9y
IGJyYW5jaE9wLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRl
OjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQog
ewogICAgIHJldHVybiBhZGRCcmFuY2goYnJhbmNoT3AsIDAsIGxpbmUpOwogfQogCi1USW50ZXJt
QnJhbmNoKiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBUSW50
ZXJtVHlwZWQqIGV4cHJlc3Npb24sIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1CcmFuY2gqIFRJ
bnRlcm1lZGlhdGU6OmFkZEJyYW5jaChUT3BlcmF0b3IgYnJhbmNoT3AsIFRJbnRlcm1UeXBlZCog
ZXhwcmVzc2lvbiwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJtQnJhbmNo
KiBub2RlID0gbmV3IFRJbnRlcm1CcmFuY2goYnJhbmNoT3AsIGV4cHJlc3Npb24pOwogICAgIG5v
ZGUtPnNldExpbmUobGluZSk7CkBAIC04NDYsNiArODMwLDcgQEAgYm9vbCBUSW50ZXJtVW5hcnk6
OnByb21vdGUoVEluZm9TaW5rJikKICAgICB9CiAKICAgICBzZXRUeXBlKG9wZXJhbmQtPmdldFR5
cGUoKSk7CisgICAgdHlwZS5zZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtODYwLDcgKzg0NSw3IEBAIGJvb2wgVEludGVybUJpbmFyeTo6cHJvbW90
ZShUSW5mb1NpbmsmIGkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIG9ubHkgaGFuZGxlcyBzY2Fs
YXJzLCB2ZWN0b3JzLCBhbmQgbWF0cmljZXMuCiAgICAgaWYgKGxlZnQtPmlzQXJyYXkoKSB8fCBy
aWdodC0+aXNBcnJheSgpKSB7Ci0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgIkludmFsaWQgb3BlcmF0aW9uIGZvciBhcnJheXMiLCBnZXRMaW5lKCkp
OworICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdl
dExpbmUoKSwgIkludmFsaWQgb3BlcmF0aW9uIGZvciBhcnJheXMiKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtOTY1LDcgKzk1MCw3IEBAIGJvb2wgVEludGVybUJpbmFyeTo6
cHJvbW90ZShUSW5mb1NpbmsmIGkKICAgICAgICAgICAgICAgICAgICAgc2V0VHlwZShUVHlwZShi
YXNpY1R5cGUsIGhpZ2hlclByZWNpc2lvbiwgRXZxVGVtcG9yYXJ5LCBzaXplLCBmYWxzZSkpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiTWlzc2luZyBlbHNl
cyIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJNaXNzaW5nIGVsc2VzIik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CkBAIC05OTQsNyArOTc5LDcgQEAgYm9vbCBUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKFRJbmZvU2lu
ayYgaQogICAgICAgICAgICAgICAgICAgICBzZXRUeXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVy
UHJlY2lzaW9uLCBFdnFUZW1wb3JhcnksIHNpemUsIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJNaXNzaW5nIGVsc2VzIiwgZ2V0TGluZSgpKTsK
KyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsIGdldExpbmUoKSwgIk1pc3NpbmcgZWxzZXMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwMzQsMjMgKzEw
MTksMjIgQEAgYm9vbCBUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKFRJbmZvU2luayYgaQogCiBib29s
IENvbXBhcmVTdHJ1Y3QoY29uc3QgVFR5cGUmIGxlZnROb2RlVHlwZSwgQ29uc3RhbnRVbmlvbiog
cmlnaHRVbmlvbkFycmF5LCBDb25zdGFudFVuaW9uKiBsZWZ0VW5pb25BcnJheSkKIHsKLSAgICBj
b25zdCBUVHlwZUxpc3QqIGZpZWxkcyA9IGxlZnROb2RlVHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICBj
b25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSBsZWZ0Tm9kZVR5cGUuZ2V0U3RydWN0KCktPmZpZWxk
cygpOwogCi0gICAgc2l6ZV90IHN0cnVjdFNpemUgPSBmaWVsZHMtPnNpemUoKTsKLSAgICBpbnQg
aW5kZXggPSAwOworICAgIHNpemVfdCBzdHJ1Y3RTaXplID0gZmllbGRzLnNpemUoKTsKKyAgICBz
aXplX3QgaW5kZXggPSAwOwogCiAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBzdHJ1Y3RTaXpl
OyBqKyspIHsKLSAgICAgICAgaW50IHNpemUgPSAoKmZpZWxkcylbal0udHlwZS0+Z2V0T2JqZWN0
U2l6ZSgpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAg
ICAgICAgaWYgKCgqZmllbGRzKVtqXS50eXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3Qp
IHsKLSAgICAgICAgICAgICAgICBpZiAoIUNvbXBhcmVTdHJ1Y3R1cmUoKigqZmllbGRzKVtqXS50
eXBlLCAmcmlnaHRVbmlvbkFycmF5W2luZGV4XSwgJmxlZnRVbmlvbkFycmF5W2luZGV4XSkpCisg
ICAgICAgIHNpemVfdCBzaXplID0gZmllbGRzW2pdLT50eXBlKCktPmdldE9iamVjdFNpemUoKTsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAg
IGlmIChmaWVsZHNbal0tPnR5cGUoKS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFDb21wYXJlU3RydWN0dXJlKCooZmllbGRzW2pdLT50eXBlKCkp
LCAmcmlnaHRVbmlvbkFycmF5W2luZGV4XSwgJmxlZnRVbmlvbkFycmF5W2luZGV4XSkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGxlZnRVbmlvbkFycmF5W2luZGV4XSAhPSByaWdodFVuaW9uQXJyYXlb
aW5kZXhdKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgaW5kZXgrKzsKICAgICAgICAgICAgIH0KLQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVy
biB0cnVlOwpAQCAtMTA2MiwxMCArMTA0NiwxMCBAQCBib29sIENvbXBhcmVTdHJ1Y3R1cmUoY29u
c3QgVFR5cGUmIGxlZnROCiAgICAgICAgIFRUeXBlIHR5cGVXaXRob3V0QXJyYXluZXNzID0gbGVm
dE5vZGVUeXBlOwogICAgICAgICB0eXBlV2l0aG91dEFycmF5bmVzcy5jbGVhckFycmF5bmVzcygp
OwogCi0gICAgICAgIGludCBhcnJheVNpemUgPSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlTaXplKCk7
CisgICAgICAgIHNpemVfdCBhcnJheVNpemUgPSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlTaXplKCk7
CiAKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkgewotICAgICAg
ICAgICAgaW50IG9mZnNldCA9IHR5cGVXaXRob3V0QXJyYXluZXNzLmdldE9iamVjdFNpemUoKSAq
IGk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpIHsKKyAg
ICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSB0eXBlV2l0aG91dEFycmF5bmVzcy5nZXRPYmplY3RT
aXplKCkgKiBpOwogICAgICAgICAgICAgaWYgKCFDb21wYXJlU3RydWN0KHR5cGVXaXRob3V0QXJy
YXluZXNzLCAmcmlnaHRVbmlvbkFycmF5W29mZnNldF0sICZsZWZ0VW5pb25BcnJheVtvZmZzZXRd
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEwODUsNyAr
MTA2OSw3IEBAIGJvb2wgQ29tcGFyZVN0cnVjdHVyZShjb25zdCBUVHlwZSYgbGVmdE4KIFRJbnRl
cm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQoVE9wZXJhdG9yIG9wLCBUSW50ZXJt
VHlwZWQqIGNvbnN0YW50Tm9kZSwgVEluZm9TaW5rJiBpbmZvU2luaykKIHsKICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gZ2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICBpbnQgb2Jq
ZWN0U2l6ZSA9IGdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90IG9iamVjdFNp
emUgPSBnZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogCiAgICAgaWYgKGNvbnN0YW50Tm9kZSkg
eyAgLy8gYmluYXJ5IG9wZXJhdGlvbnMKICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5v
ZGUgPSBjb25zdGFudE5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwpAQCAtMTA5NSwxMyArMTA3
OSwxMyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAg
IC8vIGZvciBhIGNhc2UgbGlrZSBmbG9hdCBmID0gMS4yICsgdmVjNCgyLDMsNCw1KTsKICAgICAg
ICAgaWYgKGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSA9PSAxICYmIG9i
amVjdFNpemUgPiAxKSB7CiAgICAgICAgICAgICByaWdodFVuaW9uQXJyYXkgPSBuZXcgQ29uc3Rh
bnRVbmlvbltvYmplY3RTaXplXTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2Jq
ZWN0U2l6ZTsgKytpKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RT
aXplOyArK2kpCiAgICAgICAgICAgICAgICAgcmlnaHRVbmlvbkFycmF5W2ldID0gKm5vZGUtPmdl
dFVuaW9uQXJyYXlQb2ludGVyKCk7CiAgICAgICAgICAgICByZXR1cm5UeXBlID0gZ2V0VHlwZSgp
OwogICAgICAgICB9IGVsc2UgaWYgKGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNp
emUoKSA+IDEgJiYgb2JqZWN0U2l6ZSA9PSAxKSB7CiAgICAgICAgICAgICAvLyBmb3IgYSBjYXNl
IGxpa2UgZmxvYXQgZiA9IHZlYzQoMiwzLDQsNSkgKyAxLjI7CiAgICAgICAgICAgICB1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0
U2l6ZSgpXTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29uc3RhbnROb2RlLT5n
ZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOyArK2kpCisgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsgKytpKQog
ICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlbaV0gPSAqZ2V0VW5pb25BcnJheVBvaW50ZXIoKTsK
ICAgICAgICAgICAgIHJldHVyblR5cGUgPSBub2RlLT5nZXRUeXBlKCk7CiAgICAgICAgICAgICBv
YmplY3RTaXplID0gY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwpAQCAt
MTExNSwxNCArMTA5OSwxNCBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpm
b2xkCiAgICAgICAgICAgICBjYXNlIEVPcEFkZDoKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RB
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsv
LyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29u
c3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gKyByaWdodFVuaW9uQXJyYXlbaV07CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFT3BT
dWI6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltv
YmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAg
ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAg
ICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQog
ICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ld
IC0gcmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTExMzIsMTMgKzExMTYsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29u
c3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoK
ICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVj
dFNpemVdOwogICAgICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAg
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gKiBy
aWdodFVuaW9uQXJyYXlbaV07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeDoKICAgICAgICAgICAg
ICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0IHx8IG5vZGUtPmdl
dEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5r
LmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50IEZvbGRpbmcgY2Fu
bm90IGJlIGRvbmUgZm9yIG1hdHJpeCBtdWx0aXBseSIsIGdldExpbmUoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0
TGluZSgpLCAiQ29uc3RhbnQgRm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgbWF0cml4IG11bHRp
cGx5Iik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKQEAgLTExNTcsMTEgKzExNDEs
MTEgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAg
ICAgY2FzZSBFT3BEaXY6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZD
Kys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXpl
OyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmpl
Y3RTaXplOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgogICAgICAgICAg
ICAgICAgIGlmIChyaWdodFVuaW9uQXJyYXlbaV0gPT0gMC4wZikgewotICAgICAgICAgICAgICAg
ICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsICJEaXZpZGUgYnkgemVy
byBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9sZGluZyIsIGdldExpbmUoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4V2FybmluZywgZ2V0TGluZSgp
LCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciKTsKICAgICAg
ICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KHVuaW9uQXJyYXlbaV0u
Z2V0RkNvbnN0KCkgPCAwID8gLUZMVF9NQVggOiBGTFRfTUFYKTsKICAgICAgICAgICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KHVu
aW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgLyByaWdodFVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkp
OwpAQCAtMTE2OSwxMyArMTE1MywxMyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVu
aW9uOjpmb2xkCiAKICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgogICAgICAgICAgICAgICAgIGlm
IChyaWdodFVuaW9uQXJyYXlbaV0gPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJp
bmcgY29uc3RhbnQgZm9sZGluZyIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4V2FybmluZywgZ2V0TGluZSgpLCAiRGl2aWRlIGJ5
IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciKTsKICAgICAgICAgICAgICAgICAg
ICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0KElOVF9NQVgpOwogICAgICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3Qo
dW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSAvIHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3Qo
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNv
bnN0YW50IGZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIFwiL1wiIiwgZ2V0TGluZSgpKTsKKyAg
ICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3Is
IGdldExpbmUoKSwgIkNvbnN0YW50IGZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIFwiL1wiIik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIH0KQEAgLTExODQsNyArMTE2OCw3IEBAIFRJbnRlcm1UeXBlZCog
VEludGVybUNvbnN0YW50VW5pb246OmZvbGQKIAogICAgICAgICAgICAgY2FzZSBFT3BNYXRyaXhU
aW1lc1ZlY3RvcjoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0QmFzaWNUeXBlKCkgIT0g
RWJ0RmxvYXQpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCAiQ29uc3RhbnQgRm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3Ig
bWF0cml4IHRpbWVzIHZlY3RvciIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiQ29u
c3RhbnQgRm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgbWF0cml4IHRpbWVzIHZlY3RvciIpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltnZXROb21pbmFsU2l6
ZSgpXTsKQEAgLTEyMDUsNyArMTE4OSw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50
VW5pb246OmZvbGQKIAogICAgICAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeDoKICAg
ICAgICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KSB7
Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIHZlY3RvciB0aW1l
cyBtYXRyaXgiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50IEZvbGRp
bmcgY2Fubm90IGJlIGRvbmUgZm9yIHZlY3RvciB0aW1lcyBtYXRyaXgiKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xMjIzLDcgKzEyMDcs
NyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAg
ICBjYXNlIEVPcExvZ2ljYWxBbmQ6IC8vIHRoaXMgY29kZSBpcyB3cml0dGVuIGZvciBwb3NzaWJs
ZSBmdXR1cmUgdXNlLCB3aWxsIG5vdCBnZXQgZXhlY3V0ZWQgY3VycmVudGx5CiAgICAgICAgICAg
ICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAg
ICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAg
ICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldICYmIHJpZ2h0VW5pb25B
cnJheVtpXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MjMxLDcgKzEyMTUsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xk
CiAgICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxPcjogLy8gdGhpcyBjb2RlIGlzIHdyaXR0ZW4g
Zm9yIHBvc3NpYmxlIGZ1dHVyZSB1c2UsIHdpbGwgbm90IGdldCBleGVjdXRlZCBjdXJyZW50bHkK
ICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVj
dFNpemVdOwogICAgICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAg
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gfHwg
cmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTEyMzksNyArMTIyMyw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50
VW5pb246OmZvbGQKICAgICAgICAgICAgIGNhc2UgRU9wTG9naWNhbFhvcjoKICAgICAgICAgICAg
ICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAg
ICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAgICAgICAg
Y2FzZSBFYnRCb29sOiB0ZW1wQ29uc3RBcnJheVtpXS5zZXRCQ29uc3QoKHVuaW9uQXJyYXlbaV0g
PT0gcmlnaHRVbmlvbkFycmF5W2ldKSA/IGZhbHNlIDogdHJ1ZSk7IGJyZWFrOwogICAgICAgICAg
ICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlICYmICJEZWZhdWx0IG1pc3NpbmciKTsKQEAgLTEyODUs
NyArMTI2OSw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFDb21wYXJlU3RydWN0dXJlKG5vZGUtPmdldFR5cGUoKSwg
bm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSwgdW5pb25BcnJheSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsr
KSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6
ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pb25BcnJheVtpXSAhPSBy
aWdodFVuaW9uQXJyYXlbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sTm9k
ZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgLy8gYnJl
YWsgb3V0IG9mIGZvciBsb29wCkBAIC0xMzExLDcgKzEyOTUsNyBAQCBUSW50ZXJtVHlwZWQqIFRJ
bnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICAgICAgICAgIGlmIChDb21wYXJl
U3RydWN0dXJlKG5vZGUtPmdldFR5cGUoKSwgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSwg
dW5pb25BcnJheSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVl
OwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodW5pb25BcnJheVtpXSA9PSByaWdodFVuaW9uQXJyYXlbaV0pIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOyAgLy8gYnJlYWsgb3V0IG9mIGZvciBsb29wCkBAIC0xMzMzLDcg
KzEzMTcsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRlbXBOb2RlOwogCiAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwg
IkludmFsaWQgb3BlcmF0b3IgZm9yIGNvbnN0YW50IGZvbGRpbmciLCBnZXRMaW5lKCkpOworICAg
ICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwg
Z2V0TGluZSgpLCAiSW52YWxpZCBvcGVyYXRvciBmb3IgY29uc3RhbnQgZm9sZGluZyIpOwogICAg
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIHRlbXBOb2RlID0gbmV3
IFRJbnRlcm1Db25zdGFudFVuaW9uKHRlbXBDb25zdEFycmF5LCByZXR1cm5UeXBlKTsKQEAgLTEz
NDYsMTQgKzEzMzAsMTQgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9s
ZAogICAgICAgICAvLwogICAgICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbmV3Tm9kZSA9IDA7
CiAgICAgICAgIENvbnN0YW50VW5pb24qIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5p
b25bb2JqZWN0U2l6ZV07Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsg
aSsrKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7
CiAgICAgICAgICAgICBzd2l0Y2gob3ApIHsKICAgICAgICAgICAgICAgICBjYXNlIEVPcE5lZ2F0
aXZlOgogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUo
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDogdGVtcENvbnN0QXJy
YXlbaV0uc2V0RkNvbnN0KC11bmlvbkFycmF5W2ldLmdldEZDb25zdCgpKTsgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDogICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJ
Q29uc3QoLXVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkpOyBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBm
b2xkZWQgaW50byBjb25zdGFudCIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5l
KCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzYxLDcgKzEzNDUsNyBAQCBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIEVidEJvb2w6ICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRCQ29uc3QoIXVuaW9uQXJyYXlbaV0u
Z2V0QkNvbnN0KCkpOyBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIs
IGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5t
ZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24g
bm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMzc3LDY1ICsxMzYxLDY0IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50
VW5pb246OmZvbGQKIAogVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjpwcm9tb3RlQ29uc3Rh
bnRVbmlvbihUQmFzaWNUeXBlIHByb21vdGVUbywgVEludGVybUNvbnN0YW50VW5pb24qIG5vZGUp
CiB7Ci0gICAgQ29uc3RhbnRVbmlvbiAqcmlnaHRVbmlvbkFycmF5ID0gbm9kZS0+Z2V0VW5pb25B
cnJheVBvaW50ZXIoKTsKLSAgICBpbnQgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RT
aXplKCk7CisgICAgc2l6ZV90IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgp
OwogCiAgICAgQ29uc3RhbnRVbmlvbiAqbGVmdFVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlv
bltzaXplXTsKIAotICAgIGZvciAoaW50IGk9MDsgaSA8IHNpemU7IGkrKykgeworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAKICAgICAgICAgc3dpdGNoIChwcm9tb3Rl
VG8pIHsKICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgc3dpdGNo
IChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5z
ZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJQ29uc3Qo
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0
KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50PihpKSkp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBj
YXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5z
ZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRCQ29uc3Qo
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0
KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRCQ29uc3Qoc3RhdGljX2Nhc3Q8Ym9vbD4oaSkp
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ld
ID0gcmlnaHRVbmlvbkFycmF5W2ldOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9u
QXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRGQ29uc3Qoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGkpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZv
U2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDYW5ub3QgcHJvbW90ZSIs
IG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkNhbm5vdCBw
cm9tb3RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEVidEludDoK
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkg
ewogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxlZnRVbmlvbkFycmF5W2ldID0gcmlnaHRVbmlvbkFycmF5W2ldOworICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4o
bm9kZS0+Z2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oaSkpKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAg
ICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0
PGludD4ocmlnaHRVbmlvbkFycmF5W2ldLmdldEJDb25zdCgpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihub2Rl
LT5nZXRCQ29uc3Qoc3RhdGljX2Nhc3Q8Ym9vbD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxp
bnQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4obm9kZS0+
Z2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0PihpKSkpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQ2Fu
bm90IHByb21vdGUiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5l
KCksICJDYW5ub3QgcHJvbW90ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBFYnRCb29sOgogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VHlwZSgpLmdl
dEJhc2ljVHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAg
ICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KHJpZ2h0VW5pb25B
cnJheVtpXS5nZXRJQ29uc3QoKSAhPSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRV
bmlvbkFycmF5W2ldLnNldEJDb25zdChub2RlLT5nZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50Pihp
KSkgIT0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJy
YXlbaV0gPSByaWdodFVuaW9uQXJyYXlbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0
VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0QkNvbnN0KHN0YXRpY19jYXN0PGJvb2w+
KGkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5
W2ldLnNldEJDb25zdChyaWdodFVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgIT0gMC4wZik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+
Z2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0PihpKSkgIT0gMC4wZik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgIkNhbm5vdCBwcm9tb3RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+
Z2V0TGluZSgpLCAiQ2Fubm90IHByb21vdGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEludGVybmFsRXJyb3IsICJJbmNvcnJlY3QgZGF0YSB0eXBlIGZvdW5kIiwgbm9kZS0+
Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZp
eEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkluY29ycmVjdCBkYXRhIHR5cGUgZm91
bmQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3Bw
CShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvT3V0cHV0R0xTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5LDMgKzE5LDE3IEBAIGJvb2wg
VE91dHB1dEdMU0w6OndyaXRlVmFyaWFibGVQcmVjaXNpb24KIHsKICAgICByZXR1cm4gZmFsc2U7
CiB9CisKK3ZvaWQgVE91dHB1dEdMU0w6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqIG5vZGUp
Cit7CisgICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gb2JqU2luaygpOworCisgICAgaWYgKG5vZGUt
PmdldFN5bWJvbCgpID09ICJnbF9GcmFnRGVwdGhFWFQiKQorICAgIHsKKyAgICAgICAgb3V0IDw8
ICJnbF9GcmFnRGVwdGgiOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBUT3V0cHV0
R0xTTEJhc2U6OnZpc2l0U3ltYm9sKG5vZGUpOworICAgIH0KK30KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuaAkocmV2aXNpb24g
MTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdM
U0wuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIGJvb2wgd3JpdGVWYXJpYWJsZVByZWNpc2lvbihUUHJlY2lzaW9uKTsK
KyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCogbm9kZSk7CiB9Owog
CiAjZW5kaWYgIC8vIENST1NTQ09NUElMRVJHTFNMX09VVFBVVEdMU0xfSF8KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xC
YXNlLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMjUgKzc5
LDkgQEAgdm9pZCBUT3V0cHV0R0xTTEJhc2U6OndyaXRlVmFyaWFibGVUeXBlKAogICAgIGlmICgo
cXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgJiYgKHF1YWxpZmllciAhPSBFdnFHbG9iYWwpKQog
ICAgICAgICBvdXQgPDwgdHlwZS5nZXRRdWFsaWZpZXJTdHJpbmcoKSA8PCAiICI7CiAgICAgLy8g
RGVjbGFyZSB0aGUgc3RydWN0IGlmIHdlIGhhdmUgbm90IGRvbmUgc28gYWxyZWFkeS4KLSAgICBp
ZiAoKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSAmJgotICAgICAgICAobURlY2xh
cmVkU3RydWN0cy5maW5kKHR5cGUuZ2V0VHlwZU5hbWUoKSkgPT0gbURlY2xhcmVkU3RydWN0cy5l
bmQoKSkpCisgICAgaWYgKCh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgJiYgIXN0
cnVjdERlY2xhcmVkKHR5cGUuZ2V0U3RydWN0KCkpKQogICAgIHsKLSAgICAgICAgb3V0IDw8ICJz
dHJ1Y3QgIiA8PCBoYXNoTmFtZSh0eXBlLmdldFR5cGVOYW1lKCkpIDw8ICJ7XG4iOwotICAgICAg
ICBjb25zdCBUVHlwZUxpc3QqIHN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7Ci0gICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUgIT0gTlVMTCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3Qg
VFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOwotICAgICAgICAgICAgQVNT
RVJUKGZpZWxkVHlwZSAhPSBOVUxMKTsKLSAgICAgICAgICAgIGlmICh3cml0ZVZhcmlhYmxlUHJl
Y2lzaW9uKGZpZWxkVHlwZS0+Z2V0UHJlY2lzaW9uKCkpKQotICAgICAgICAgICAgICAgIG91dCA8
PCAiICI7Ci0gICAgICAgICAgICBvdXQgPDwgZ2V0VHlwZU5hbWUoKmZpZWxkVHlwZSkgPDwgIiAi
IDw8IGhhc2hOYW1lKGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCkpOwotICAgICAgICAgICAgaWYg
KGZpZWxkVHlwZS0+aXNBcnJheSgpKQotICAgICAgICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNr
ZXRzKCpmaWVsZFR5cGUpOwotICAgICAgICAgICAgb3V0IDw8ICI7XG4iOwotICAgICAgICB9Ci0g
ICAgICAgIG91dCA8PCAifSI7Ci0gICAgICAgIG1EZWNsYXJlZFN0cnVjdHMuaW5zZXJ0KHR5cGUu
Z2V0VHlwZU5hbWUoKSk7CisgICAgICAgIGRlY2xhcmVTdHJ1Y3QodHlwZS5nZXRTdHJ1Y3QoKSk7
CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0xMzgsMjQgKzEyMiwyNSBAQCBjb25zdCBDb25z
dGFudFVuaW9uKiBUT3V0cHV0R0xTTEJhc2U6OndyCiAKICAgICBpZiAodHlwZS5nZXRCYXNpY1R5
cGUoKSA9PSBFYnRTdHJ1Y3QpCiAgICAgewotICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5n
ZXRUeXBlTmFtZSgpKSA8PCAiKCI7Ci0gICAgICAgIGNvbnN0IFRUeXBlTGlzdCogc3RydWN0dXJl
ID0gdHlwZS5nZXRTdHJ1Y3QoKTsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSBOVUxMKTsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsgKytpKQor
ICAgICAgICBjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOwor
ICAgICAgICBvdXQgPDwgaGFzaE5hbWUoc3RydWN0dXJlLT5uYW1lKCkpIDw8ICIoIjsKKworICAg
ICAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkKICAgICAgICAg
ewotICAgICAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50
eXBlOworICAgICAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9IGZpZWxkc1tpXS0+dHlw
ZSgpOwogICAgICAgICAgICAgQVNTRVJUKGZpZWxkVHlwZSAhPSBOVUxMKTsKICAgICAgICAgICAg
IHBDb25zdFVuaW9uID0gd3JpdGVDb25zdGFudFVuaW9uKCpmaWVsZFR5cGUsIHBDb25zdFVuaW9u
KTsKLSAgICAgICAgICAgIGlmIChpICE9IHN0cnVjdHVyZS0+c2l6ZSgpIC0gMSkgb3V0IDw8ICIs
ICI7CisgICAgICAgICAgICBpZiAoaSAhPSBmaWVsZHMuc2l6ZSgpIC0gMSkgb3V0IDw8ICIsICI7
CiAgICAgICAgIH0KICAgICAgICAgb3V0IDw8ICIpIjsKICAgICB9CiAgICAgZWxzZQogICAgIHsK
LSAgICAgICAgaW50IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6ZV90
IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKICAgICAgICAgYm9vbCB3cml0ZVR5cGUgPSBz
aXplID4gMTsKICAgICAgICAgaWYgKHdyaXRlVHlwZSkgb3V0IDw8IGdldFR5cGVOYW1lKHR5cGUp
IDw8ICIoIjsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2ksICsrcENvbnN0
VW5pb24pCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpLCArK3BDb25z
dFVuaW9uKQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKHBDb25zdFVuaW9uLT5nZXRU
eXBlKCkpCiAgICAgICAgICAgICB7CkBAIC0yNjAsMTIgKzI0NSwxOCBAQCBib29sIFRPdXRwdXRH
TFNMQmFzZTo6dmlzaXRCaW5hcnkoVmlzaXQgCiAgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RT
dHJ1Y3Q6CiAgICAgICAgICAgICBpZiAodmlzaXQgPT0gSW5WaXNpdCkKICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAvLyBIZXJlIHdlIGFyZSB3cml0aW5nIG91dCAiZm9vLmJhciIsIHdo
ZXJlICJmb28iIGlzIHN0cnVjdAorICAgICAgICAgICAgICAgIC8vIGFuZCAiYmFyIiBpcyBmaWVs
ZC4gSW4gQVNULCBpdCBpcyByZXByZXNlbnRlZCBhcyBhIGJpbmFyeQorICAgICAgICAgICAgICAg
IC8vIG5vZGUsIHdoZXJlIGxlZnQgY2hpbGQgcmVwcmVzZW50cyAiZm9vIiBhbmQgcmlnaHQgY2hp
bGQgImJhciIuCisgICAgICAgICAgICAgICAgLy8gVGhlIG5vZGUgaXRzZWxmIHJlcHJlc2VudHMg
Ii4iLiBUaGUgc3RydWN0IGZpZWxkICJiYXIiIGlzCisgICAgICAgICAgICAgICAgLy8gYWN0dWFs
bHkgc3RvcmVkIGFzIGFuIGluZGV4IGludG8gVFN0cnVjdHVyZTo6ZmllbGRzLgogICAgICAgICAg
ICAgICAgIG91dCA8PCAiLiI7Ci0gICAgICAgICAgICAgICAgLy8gVE9ETyhhbG9rcCk6IEFTU0VS
VAotICAgICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gbm9kZS0+Z2V0VHlwZSgpLmdl
dEZpZWxkTmFtZSgpOworICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOworICAgICAgICAgICAg
ICAgIGNvbnN0IFRJbnRlcm1Db25zdGFudFVuaW9uKiBpbmRleCA9IG5vZGUtPmdldFJpZ2h0KCkt
PmdldEFzQ29uc3RhbnRVbmlvbigpOworICAgICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmll
bGQgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOwogCi0gICAgICAg
ICAgICAgICAgY29uc3QgVFR5cGUmIHN0cnVjdFR5cGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5
cGUoKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1
Y3RUeXBlLmdldFR5cGVOYW1lKCkpKQorICAgICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1l
ID0gZmllbGQtPm5hbWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5k
QnVpbHRJbihzdHJ1Y3R1cmUtPm5hbWUoKSkpCiAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFt
ZSA9IGhhc2hOYW1lKGZpZWxkTmFtZSk7CiAKICAgICAgICAgICAgICAgICBvdXQgPDwgZmllbGRO
YW1lOwpAQCAtNTk2LDcgKzU4Nyw3IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3Jl
Z2F0ZShWaXMKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSYgdHlw
ZSA9IG5vZGUtPmdldFR5cGUoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRTdHJ1Y3QpOwotICAgICAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0
eXBlLmdldFR5cGVOYW1lKCkpIDw8ICIoIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwgaGFzaE5h
bWUodHlwZS5nZXRTdHJ1Y3QoKS0+bmFtZSgpKSA8PCAiKCI7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZpc2l0KQogICAgICAgICAgICAgewpAQCAtNzY1
LDcgKzc1Niw3IEBAIFRTdHJpbmcgVE91dHB1dEdMU0xCYXNlOjpnZXRUeXBlTmFtZShjb24KICAg
ICBlbHNlCiAgICAgewogICAgICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1
Y3QpCi0gICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRUeXBlTmFtZSgpKTsKKyAg
ICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0eXBlLmdldFN0cnVjdCgpLT5uYW1lKCkpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBvdXQgPDwgdHlwZS5nZXRCYXNpY1N0cmluZygpOwogICAg
IH0KQEAgLTc5OCwzICs3ODksMjkgQEAgVFN0cmluZyBUT3V0cHV0R0xTTEJhc2U6Omhhc2hGdW5j
dGlvbk5hbQogICAgICAgICByZXR1cm4gbmFtZTsKICAgICByZXR1cm4gaGFzaE5hbWUobmFtZSk7
CiB9CisKK2Jvb2wgVE91dHB1dEdMU0xCYXNlOjpzdHJ1Y3REZWNsYXJlZChjb25zdCBUU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EZWNsYXJlZFN0cnVjdHMuZmlu
ZChzdHJ1Y3R1cmUtPm5hbWUoKSkgIT0gbURlY2xhcmVkU3RydWN0cy5lbmQoKTsKK30KKwordm9p
ZCBUT3V0cHV0R0xTTEJhc2U6OmRlY2xhcmVTdHJ1Y3QoY29uc3QgVFN0cnVjdHVyZSogc3RydWN0
dXJlKQoreworICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IG9ialNpbmsoKTsKKworICAgIG91dCA8
PCAic3RydWN0ICIgPDwgaGFzaE5hbWUoc3RydWN0dXJlLT5uYW1lKCkpIDw8ICJ7XG4iOworICAg
IGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHN0cnVjdHVyZS0+ZmllbGRzKCk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBj
b25zdCBURmllbGQqIGZpZWxkID0gZmllbGRzW2ldOworICAgICAgICBpZiAod3JpdGVWYXJpYWJs
ZVByZWNpc2lvbihmaWVsZC0+dHlwZSgpLT5nZXRQcmVjaXNpb24oKSkpCisgICAgICAgICAgICBv
dXQgPDwgIiAiOworICAgICAgICBvdXQgPDwgZ2V0VHlwZU5hbWUoKmZpZWxkLT50eXBlKCkpIDw8
ICIgIiA8PCBoYXNoTmFtZShmaWVsZC0+bmFtZSgpKTsKKyAgICAgICAgaWYgKGZpZWxkLT50eXBl
KCktPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZC0+
dHlwZSgpKTsKKyAgICAgICAgb3V0IDw8ICI7XG4iOworICAgIH0KKyAgICBvdXQgPDwgIn0iOwor
CisgICAgbURlY2xhcmVkU3RydWN0cy5pbnNlcnQoc3RydWN0dXJlLT5uYW1lKCkpOworfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1
dEdMU0xCYXNlLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1
Miw5IEBAIHByb3RlY3RlZDoKICAgICBUU3RyaW5nIGhhc2hGdW5jdGlvbk5hbWUoY29uc3QgVFN0
cmluZyYgbWFuZ2xlZF9uYW1lKTsKIAogcHJpdmF0ZToKKyAgICBib29sIHN0cnVjdERlY2xhcmVk
KGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3Q7CisgICAgdm9pZCBkZWNsYXJlU3Ry
dWN0KGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7CisKICAgICBUSW5mb1NpbmtCYXNlJiBt
T2JqU2luazsKICAgICBib29sIG1EZWNsYXJpbmdWYXJpYWJsZXM7CiAKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAJKHJl
dmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9P
dXRwdXRITFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjcsNyArMjcsOCBAQCBUU3RyaW5nIHN0cihp
bnQgaSkKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1PdXRwdXRITFNMOjpPdXRwdXRITFNMKFRQ
YXJzZUNvbnRleHQgJmNvbnRleHQpIDogVEludGVybVRyYXZlcnNlcih0cnVlLCB0cnVlLCB0cnVl
KSwgbUNvbnRleHQoY29udGV4dCkKK091dHB1dEhMU0w6Ok91dHB1dEhMU0woVFBhcnNlQ29udGV4
dCAmY29udGV4dCwgY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsIFNoU2hhZGVy
T3V0cHV0IG91dHB1dFR5cGUpCisgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIHRydWUsIHRy
dWUpLCBtQ29udGV4dChjb250ZXh0KSwgbU91dHB1dFR5cGUob3V0cHV0VHlwZSkKIHsKICAgICBt
VW5mb2xkU2hvcnRDaXJjdWl0ID0gbmV3IFVuZm9sZFNob3J0Q2lyY3VpdChjb250ZXh0LCB0aGlz
KTsKICAgICBtSW5zaWRlRnVuY3Rpb24gPSBmYWxzZTsKQEAgLTQ3LDExICs0OCwxNCBAQCBPdXRw
dXRITFNMOjpPdXRwdXRITFNMKFRQYXJzZUNvbnRleHQgJmNvCiAgICAgbVVzZXNUZXh0dXJlMkRQ
cm9qTG9kMF9iaWFzID0gZmFsc2U7CiAgICAgbVVzZXNUZXh0dXJlQ3ViZUxvZDAgPSBmYWxzZTsK
ICAgICBtVXNlc1RleHR1cmVDdWJlTG9kMF9iaWFzID0gZmFsc2U7CisgICAgbVVzZXNGcmFnQ29s
b3IgPSBmYWxzZTsKKyAgICBtVXNlc0ZyYWdEYXRhID0gZmFsc2U7CiAgICAgbVVzZXNEZXB0aFJh
bmdlID0gZmFsc2U7CiAgICAgbVVzZXNGcmFnQ29vcmQgPSBmYWxzZTsKICAgICBtVXNlc1BvaW50
Q29vcmQgPSBmYWxzZTsKICAgICBtVXNlc0Zyb250RmFjaW5nID0gZmFsc2U7CiAgICAgbVVzZXNQ
b2ludFNpemUgPSBmYWxzZTsKKyAgICBtVXNlc0ZyYWdEZXB0aCA9IGZhbHNlOwogICAgIG1Vc2Vz
WG9yID0gZmFsc2U7CiAgICAgbVVzZXNNb2QxID0gZmFsc2U7CiAgICAgbVVzZXNNb2QydiA9IGZh
bHNlOwpAQCAtODEsNiArODUsOCBAQCBPdXRwdXRITFNMOjpPdXRwdXRITFNMKFRQYXJzZUNvbnRl
eHQgJmNvCiAgICAgbVVzZXNBdGFuMl8zID0gZmFsc2U7CiAgICAgbVVzZXNBdGFuMl80ID0gZmFs
c2U7CiAKKyAgICBtTnVtUmVuZGVyVGFyZ2V0cyA9IHJlc291cmNlcy5FWFRfZHJhd19idWZmZXJz
ID8gcmVzb3VyY2VzLk1heERyYXdCdWZmZXJzIDogMTsKKwogICAgIG1TY29wZURlcHRoID0gMDsK
IAogICAgIG1VbmlxdWVJbmRleCA9IDA7CkBAIC05MCw2ICs5NiwyNCBAQCBPdXRwdXRITFNMOjpP
dXRwdXRITFNMKFRQYXJzZUNvbnRleHQgJmNvCiAgICAgbUluc2lkZURpc2NvbnRpbnVvdXNMb29w
ID0gZmFsc2U7CiAKICAgICBtRXhjZXNzaXZlTG9vcEluZGV4ID0gTlVMTDsKKworICAgIGlmICht
T3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgeworICAgICAgICBpZiAobUNvbnRl
eHQuc2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1Vbmlmb3JtUmVnaXN0ZXIgPSAzOyAgIC8vIFJlc2VydmUgcmVnaXN0ZXJzIGZvciBkeF9E
ZXB0aFJhbmdlLCBkeF9WaWV3Q29vcmRzIGFuZCBkeF9EZXB0aEZyb250CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtVW5pZm9ybVJlZ2lzdGVyID0gMjsg
ICAvLyBSZXNlcnZlIHJlZ2lzdGVycyBmb3IgZHhfRGVwdGhSYW5nZSBhbmQgZHhfVmlld0FkanVz
dAorICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1Vbmlmb3JtUmVn
aXN0ZXIgPSAwOworICAgIH0KKworICAgIG1TYW1wbGVyUmVnaXN0ZXIgPSAwOwogfQogCiBPdXRw
dXRITFNMOjp+T3V0cHV0SExTTCgpCkBAIC0xMTMsNiArMTM3LDExIEBAIFRJbmZvU2lua0Jhc2Ug
Jk91dHB1dEhMU0w6OmdldEJvZHlTdHJlYW0KICAgICByZXR1cm4gbUJvZHk7CiB9CiAKK2NvbnN0
IEFjdGl2ZVVuaWZvcm1zICZPdXRwdXRITFNMOjpnZXRVbmlmb3JtcygpCit7CisgICAgcmV0dXJu
IG1BY3RpdmVVbmlmb3JtczsKK30KKwogaW50IE91dHB1dEhMU0w6OnZlY3RvclNpemUoY29uc3Qg
VFR5cGUgJnR5cGUpIGNvbnN0CiB7CiAgICAgaW50IGVsZW1lbnRTaXplID0gdHlwZS5pc01hdHJp
eCgpID8gdHlwZS5nZXROb21pbmFsU2l6ZSgpIDogMTsKQEAgLTEzNiw1OCArMTY1LDc2IEBAIHZv
aWQgT3V0cHV0SExTTDo6aGVhZGVyKCkKICAgICAgICAgb3V0IDw8ICpjb25zdHJ1Y3RvcjsKICAg
ICB9CiAKLSAgICBpZiAoc2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIpCisgICAgVFN0
cmluZyB1bmlmb3JtczsKKyAgICBUU3RyaW5nIHZhcnlpbmdzOworICAgIFRTdHJpbmcgYXR0cmli
dXRlczsKKworICAgIGZvciAoUmVmZXJlbmNlZFN5bWJvbHM6OmNvbnN0X2l0ZXJhdG9yIHVuaWZv
cm0gPSBtUmVmZXJlbmNlZFVuaWZvcm1zLmJlZ2luKCk7IHVuaWZvcm0gIT0gbVJlZmVyZW5jZWRV
bmlmb3Jtcy5lbmQoKTsgdW5pZm9ybSsrKQogICAgIHsKLSAgICAgICAgVFN0cmluZyB1bmlmb3Jt
czsKLSAgICAgICAgVFN0cmluZyB2YXJ5aW5nczsKKyAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUg
PSB1bmlmb3JtLT5zZWNvbmQtPmdldFR5cGUoKTsKKyAgICAgICAgY29uc3QgVFN0cmluZyAmbmFt
ZSA9IHVuaWZvcm0tPnNlY29uZC0+Z2V0U3ltYm9sKCk7CiAKLSAgICAgICAgVFN5bWJvbFRhYmxl
TGV2ZWwgKnN5bWJvbHMgPSBtQ29udGV4dC5zeW1ib2xUYWJsZS5nZXRHbG9iYWxMZXZlbCgpOwot
ICAgICAgICBpbnQgc2VtYW50aWNJbmRleCA9IDA7CisgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9
PSBTSF9ITFNMMTFfT1VUUFVUICYmIElzU2FtcGxlcih0eXBlLmdldEJhc2ljVHlwZSgpKSkgICAv
LyBBbHNvIGRlY2xhcmUgdGhlIHRleHR1cmUKKyAgICAgICAgeworICAgICAgICAgICAgaW50IGlu
ZGV4ID0gc2FtcGxlclJlZ2lzdGVyKG1SZWZlcmVuY2VkVW5pZm9ybXNbbmFtZV0pOwogCi0gICAg
ICAgIGZvciAoVFN5bWJvbFRhYmxlTGV2ZWw6OmNvbnN0X2l0ZXJhdG9yIG5hbWVkU3ltYm9sID0g
c3ltYm9scy0+YmVnaW4oKTsgbmFtZWRTeW1ib2wgIT0gc3ltYm9scy0+ZW5kKCk7IG5hbWVkU3lt
Ym9sKyspCisgICAgICAgICAgICB1bmlmb3JtcyArPSAidW5pZm9ybSBTYW1wbGVyU3RhdGUgc2Ft
cGxlcl8iICsgZGVjb3JhdGVVbmlmb3JtKG5hbWUsIHR5cGUpICsgYXJyYXlTdHJpbmcodHlwZSkg
KyAKKyAgICAgICAgICAgICAgICAgICAgICAgICIgOiByZWdpc3RlcihzIiArIHN0cihpbmRleCkg
KyAiKTtcbiI7CisKKyAgICAgICAgICAgIHVuaWZvcm1zICs9ICJ1bmlmb3JtICIgKyB0ZXh0dXJl
U3RyaW5nKHR5cGUpICsgIiB0ZXh0dXJlXyIgKyBkZWNvcmF0ZVVuaWZvcm0obmFtZSwgdHlwZSkg
KyBhcnJheVN0cmluZyh0eXBlKSArIAorICAgICAgICAgICAgICAgICAgICAgICAgIiA6IHJlZ2lz
dGVyKHQiICsgc3RyKGluZGV4KSArICIpO1xuIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRTeW1ib2wgKnN5bWJvbCA9ICgqbmFtZWRTeW1i
b2wpLnNlY29uZDsKLSAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJm5hbWUgPSBzeW1ib2wtPmdl
dE5hbWUoKTsKKyAgICAgICAgICAgIHVuaWZvcm1zICs9ICJ1bmlmb3JtICIgKyB0eXBlU3RyaW5n
KHR5cGUpICsgIiAiICsgZGVjb3JhdGVVbmlmb3JtKG5hbWUsIHR5cGUpICsgYXJyYXlTdHJpbmco
dHlwZSkgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICIgOiByZWdpc3RlcigiICsgcmVnaXN0
ZXJTdHJpbmcobVJlZmVyZW5jZWRVbmlmb3Jtc1tuYW1lXSkgKyAiKTtcbiI7CisgICAgICAgIH0K
KyAgICB9CiAKLSAgICAgICAgICAgIGlmIChzeW1ib2wtPmlzVmFyaWFibGUoKSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBUVmFyaWFibGUgKnZhcmlhYmxlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3ltYm9sKTsKLSAgICAgICAgICAgICAgICBjb25zdCBU
VHlwZSAmdHlwZSA9IHZhcmlhYmxlLT5nZXRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgVFF1YWxp
ZmllciBxdWFsaWZpZXIgPSB0eXBlLmdldFF1YWxpZmllcigpOworICAgIGZvciAoUmVmZXJlbmNl
ZFN5bWJvbHM6OmNvbnN0X2l0ZXJhdG9yIHZhcnlpbmcgPSBtUmVmZXJlbmNlZFZhcnlpbmdzLmJl
Z2luKCk7IHZhcnlpbmcgIT0gbVJlZmVyZW5jZWRWYXJ5aW5ncy5lbmQoKTsgdmFyeWluZysrKQor
ICAgIHsKKyAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgPSB2YXJ5aW5nLT5zZWNvbmQtPmdldFR5
cGUoKTsKKyAgICAgICAgY29uc3QgVFN0cmluZyAmbmFtZSA9IHZhcnlpbmctPnNlY29uZC0+Z2V0
U3ltYm9sKCk7CiAKLSAgICAgICAgICAgICAgICBpZiAocXVhbGlmaWVyID09IEV2cVVuaWZvcm0p
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAobVJlZmVyZW5jZWRV
bmlmb3Jtcy5maW5kKG5hbWUuY19zdHIoKSkgIT0gbVJlZmVyZW5jZWRVbmlmb3Jtcy5lbmQoKSkK
LSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybXMg
Kz0gInVuaWZvcm0gIiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBkZWNvcmF0ZVVuaWZvcm0o
bmFtZSwgdHlwZSkgKyBhcnJheVN0cmluZyh0eXBlKSArICI7XG4iOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHF1YWxp
ZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwgcXVhbGlmaWVyID09IEV2cUludmFyaWFudFZhcnlpbmdJ
bikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtUmVmZXJlbmNl
ZFZhcnlpbmdzLmZpbmQobmFtZS5jX3N0cigpKSAhPSBtUmVmZXJlbmNlZFZhcnlpbmdzLmVuZCgp
KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBQcm9n
cmFtIGxpbmtpbmcgZGVwZW5kcyBvbiB0aGlzIGV4YWN0IGZvcm1hdAotICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyeWluZ3MgKz0gInN0YXRpYyAiICsgdHlwZVN0cmluZyh0eXBlKSArICIgIiAr
IGRlY29yYXRlKG5hbWUpICsgYXJyYXlTdHJpbmcodHlwZSkgKyAiID0gIiArIGluaXRpYWxpemVy
KHR5cGUpICsgIjtcbiI7CisgICAgICAgIC8vIFByb2dyYW0gbGlua2luZyBkZXBlbmRzIG9uIHRo
aXMgZXhhY3QgZm9ybWF0CisgICAgICAgIHZhcnlpbmdzICs9ICJzdGF0aWMgIiArIHR5cGVTdHJp
bmcodHlwZSkgKyAiICIgKyBkZWNvcmF0ZShuYW1lKSArIGFycmF5U3RyaW5nKHR5cGUpICsgIiA9
ICIgKyBpbml0aWFsaXplcih0eXBlKSArICI7XG4iOworICAgIH0KIAotICAgICAgICAgICAgICAg
ICAgICAgICAgc2VtYW50aWNJbmRleCArPSB0eXBlLmlzQXJyYXkoKSA/IHR5cGUuZ2V0QXJyYXlT
aXplKCkgOiAxOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKHF1YWxpZmllciA9PSBFdnFHbG9iYWwgfHwgcXVhbGlmaWVy
ID09IEV2cVRlbXBvcmFyeSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIEdsb2JhbHMgYXJlIGRlY2xhcmVkIGFuZCBpbnRpYWxpemVkIGFzIGFuIGFnZ3JlZ2F0ZSBu
b2RlCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHF1YWxpZmll
ciA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IENvbnN0YW50cyBhcmUgcmVwZWF0ZWQgYXMgbGl0ZXJhbHMgd2hlcmUgdXNlZAotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KKyAgICBmb3IgKFJlZmVyZW5jZWRTeW1ib2xzOjpjb25zdF9pdGVyYXRv
ciBhdHRyaWJ1dGUgPSBtUmVmZXJlbmNlZEF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0cmlidXRlICE9
IG1SZWZlcmVuY2VkQXR0cmlidXRlcy5lbmQoKTsgYXR0cmlidXRlKyspCisgICAgeworICAgICAg
ICBjb25zdCBUVHlwZSAmdHlwZSA9IGF0dHJpYnV0ZS0+c2Vjb25kLT5nZXRUeXBlKCk7CisgICAg
ICAgIGNvbnN0IFRTdHJpbmcgJm5hbWUgPSBhdHRyaWJ1dGUtPnNlY29uZC0+Z2V0U3ltYm9sKCk7
CisKKyAgICAgICAgYXR0cmlidXRlcyArPSAic3RhdGljICIgKyB0eXBlU3RyaW5nKHR5cGUpICsg
IiAiICsgZGVjb3JhdGUobmFtZSkgKyBhcnJheVN0cmluZyh0eXBlKSArICIgPSAiICsgaW5pdGlh
bGl6ZXIodHlwZSkgKyAiO1xuIjsKKyAgICB9CisKKyAgICBpZiAoc2hhZGVyVHlwZSA9PSBTSF9G
UkFHTUVOVF9TSEFERVIpCisgICAgeworICAgICAgICBURXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBtQ29udGV4dC5leHRlbnNpb25CZWhhdmlvcigpLmZpbmQoIkdMX0VY
VF9kcmF3X2J1ZmZlcnMiKTsKKyAgICAgICAgY29uc3QgYm9vbCB1c2luZ01SVEV4dGVuc2lvbiA9
IChpdGVyICE9IG1Db250ZXh0LmV4dGVuc2lvbkJlaGF2aW9yKCkuZW5kKCkgJiYgKGl0ZXItPnNl
Y29uZCA9PSBFQmhFbmFibGUgfHwgaXRlci0+c2Vjb25kID09IEVCaFJlcXVpcmUpKTsKKworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBpbnQgbnVtQ29sb3JWYWx1ZXMgPSB1c2luZ01SVEV4dGVuc2lv
biA/IG1OdW1SZW5kZXJUYXJnZXRzIDogMTsKIAogICAgICAgICBvdXQgPDwgIi8vIFZhcnlpbmdz
XG4iOwogICAgICAgICBvdXQgPDwgIHZhcnlpbmdzOwogICAgICAgICBvdXQgPDwgIlxuIgotICAg
ICAgICAgICAgICAgInN0YXRpYyBmbG9hdDQgZ2xfQ29sb3JbMV0gPSB7ZmxvYXQ0KDAsIDAsIDAs
IDApfTtcbiI7CisgICAgICAgICAgICAgICAic3RhdGljIGZsb2F0NCBnbF9Db2xvclsiIDw8IG51
bUNvbG9yVmFsdWVzIDw8ICJdID1cbiIKKyAgICAgICAgICAgICAgICJ7XG4iOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bUNvbG9yVmFsdWVzOyBpKyspCisgICAgICAg
IHsKKyAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0NCgwLCAwLCAwLCAwKSI7CisgICAgICAg
ICAgICBpZiAoaSArIDEgIT0gbnVtQ29sb3JWYWx1ZXMpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgb3V0IDw8ICIsIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dCA8PCAi
XG4iOworICAgICAgICB9CisgICAgICAgIG91dCA8PCAifTtcbiI7CisKKyAgICAgICAgaWYgKG1V
c2VzRnJhZ0RlcHRoKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgInN0YXRpYyBmbG9h
dCBnbF9EZXB0aCA9IDAuMDtcbiI7CisgICAgICAgIH0KIAogICAgICAgICBpZiAobVVzZXNGcmFn
Q29vcmQpCiAgICAgICAgIHsKQEAgLTIwNiwyMDUgKzI1MywzNzkgQEAgdm9pZCBPdXRwdXRITFNM
OjpoZWFkZXIoKQogCiAgICAgICAgIG91dCA8PCAiXG4iOwogCi0gICAgICAgIGlmIChtVXNlc0Zy
YWdDb29yZCkKKyAgICAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkKICAgICAgICAgewotICAgICAg
ICAgICAgb3V0IDw8ICJ1bmlmb3JtIGZsb2F0NCBkeF9Db29yZDtcbiIKLSAgICAgICAgICAgICAg
ICAgICAidW5pZm9ybSBmbG9hdDIgZHhfRGVwdGg7XG4iOworICAgICAgICAgICAgb3V0IDw8ICJz
dHJ1Y3QgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnNcbiIKKyAgICAgICAgICAgICAgICAgICAie1xu
IgorICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgbmVhcjtcbiIKKyAgICAgICAgICAgICAg
ICAgICAiICAgIGZsb2F0IGZhcjtcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGRp
ZmY7XG4iCisgICAgICAgICAgICAgICAgICAgIn07XG4iCisgICAgICAgICAgICAgICAgICAgIlxu
IjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtVXNlc0Zyb250RmFjaW5nKQorICAgICAgICBp
ZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKICAgICAgICAgewotICAgICAgICAg
ICAgb3V0IDw8ICJ1bmlmb3JtIGJvb2wgZHhfUG9pbnRzT3JMaW5lcztcbiIKLSAgICAgICAgICAg
ICAgICAgICAidW5pZm9ybSBib29sIGR4X0Zyb250Q0NXO1xuIjsKKyAgICAgICAgICAgIG91dCA8
PCAiY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSlcbiIKKyAgICAgICAgICAg
ICAgICAgICAie1xuIjsKKworICAgICAgICAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDMgZHhfRGVwdGhSYW5n
ZSA6IHBhY2tvZmZzZXQoYzApO1xuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KG1Vc2VzRnJhZ0Nvb3JkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAi
ICAgIGZsb2F0NCBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMSk7XG4iOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAobVVzZXNGcmFnQ29vcmQgfHwgbVVzZXNGcm9udEZhY2lu
ZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDMgZHhf
RGVwdGhGcm9udCA6IHBhY2tvZmZzZXQoYzIpO1xuIjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgb3V0IDw8ICJ9O1xuIjsKICAgICAgICAgfQotICAgICAgICAKKyAgICAgICAgZWxzZQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIG91dCA8PCAidW5pZm9ybSBmbG9hdDMgZHhfRGVwdGhSYW5nZSA6
IHJlZ2lzdGVyKGMwKTsiOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobVVzZXNG
cmFnQ29vcmQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJ1bmlmb3Jt
IGZsb2F0NCBkeF9WaWV3Q29vcmRzIDogcmVnaXN0ZXIoYzEpO1xuIjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKG1Vc2VzRnJhZ0Nvb3JkIHx8IG1Vc2VzRnJvbnRGYWNpbmcpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJ1bmlmb3JtIGZsb2F0MyBkeF9E
ZXB0aEZyb250IDogcmVnaXN0ZXIoYzIpO1xuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CiAgICAgICAgIG91dCA8PCAiXG4iOworCisgICAgICAgIGlmIChtVXNlc0RlcHRoUmFuZ2UpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAic3RhdGljIGdsX0RlcHRoUmFuZ2VQYXJhbWV0
ZXJzIGdsX0RlcHRoUmFuZ2UgPSB7ZHhfRGVwdGhSYW5nZS54LCBkeF9EZXB0aFJhbmdlLnksIGR4
X0RlcHRoUmFuZ2Uuen07XG4iCisgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgfQor
ICAgICAgICAKICAgICAgICAgb3V0IDw8ICB1bmlmb3JtczsKICAgICAgICAgb3V0IDw8ICJcbiI7
CiAKICAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJEKQogICAgICAgICB7Ci0gICAgICAgICAgICBv
dXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkQoc2FtcGxlcjJEIHMsIGZsb2F0MiB0KVxuIgotICAg
ICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4
MkQocywgdCk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAg
ICAiXG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJl
MkQoc2FtcGxlcjJEIHMsIGZsb2F0MiB0KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRChzLCB0KTtcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hM
U0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9h
dDQgZ2xfdGV4dHVyZTJEKFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQyIHV2KVxu
IgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIHJldHVybiB0LlNhbXBsZShzLCB1dik7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobVVzZXNU
ZXh0dXJlMkRfYmlhcykKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xf
dGV4dHVyZTJEKHNhbXBsZXIyRCBzLCBmbG9hdDIgdCwgZmxvYXQgYmlhcylcbiIKLSAgICAgICAg
ICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEYmlh
cyhzLCBmbG9hdDQodC54LCB0LnksIDAsIGJpYXMpKTtcbiIKLSAgICAgICAgICAgICAgICAgICAi
fVxuIgotICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5
cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91
dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRChzYW1wbGVyMkQgcywgZmxvYXQyIHQsIGZsb2F0IGJp
YXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgcmV0dXJuIHRleDJEYmlhcyhzLCBmbG9hdDQodC54LCB0LnksIDAsIGJpYXMpKTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09
IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8
ICJmbG9hdDQgZ2xfdGV4dHVyZTJEKFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQy
IHV2LCBmbG9hdCBiaWFzKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUJpYXMocywgdXYsIGJpYXMpO1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAi
XG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJEUHJvaikKICAgICAgICAgewotICAg
ICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxv
YXQzIHQpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAi
ICAgIHJldHVybiB0ZXgyRHByb2oocywgZmxvYXQ0KHQueCwgdC55LCAwLCB0LnopKTtcbiIKLSAg
ICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAg
ICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZsb2F0NCB0
KVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICBy
ZXR1cm4gdGV4MkRwcm9qKHMsIHQpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAg
ICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9I
TFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9h
dDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxvYXQzIHQpXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRl
eDJEcHJvaihzLCBmbG9hdDQodC54LCB0LnksIDAsIHQueikpO1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxvYXQ0IHQp
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgcmV0dXJuIHRleDJEcHJvaihzLCB0KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
In1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihU
ZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MyB1dncpXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2Ft
cGxlKHMsIGZsb2F0Mih1dncueCAvIHV2dy56LCB1dncueSAvIHV2dy56KSk7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKFRleHR1cmUyRCB0LCBT
YW1wbGVyU3RhdGUgcywgZmxvYXQ0IHV2dylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGUocywgZmxvYXQy
KHV2dy54IC8gdXZ3LncsIHV2dy55IC8gdXZ3LncpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICht
VXNlc1RleHR1cmUyRFByb2pfYmlhcykKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJm
bG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxvYXQzIHQsIGZsb2F0IGJpYXMp
XG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJl
dHVybiB0ZXgyRGJpYXMocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8gdC56LCAwLCBiaWFzKSk7
XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iCi0g
ICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzLCBm
bG9hdDQgdCwgZmxvYXQgYmlhcylcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAg
ICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEYmlhcyhzLCBmbG9hdDQodC54IC8gdC53LCB0
LnkgLyB0LncsIDAsIGJpYXMpKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAg
ICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExT
TDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0
IGdsX3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZsb2F0MyB0LCBmbG9hdCBiaWFzKVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiB0ZXgyRGJpYXMocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8gdC56LCAwLCBiaWFz
KSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9q
KHNhbXBsZXIyRCBzLCBmbG9hdDQgdCwgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRiaWFz
KHMsIGZsb2F0NCh0LnggLyB0LncsIHQueSAvIHQudywgMCwgYmlhcykpO1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09V
VFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90
ZXh0dXJlMkRQcm9qKFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dywgZmxv
YXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVCaWFzKHMsIGZsb2F0Mih1dncueCAvIHV2dy56
LCB1dncueSAvIHV2dy56KSwgYmlhcyk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgImZs
b2F0NCBnbF90ZXh0dXJlMkRQcm9qKFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQ0
IHV2dywgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVCaWFzKHMsIGZsb2F0Mih1dncu
eCAvIHV2dy53LCB1dncueSAvIHV2dy53KSwgYmlhcyk7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bVVzZXNUZXh0dXJlQ3ViZSkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQg
Z2xfdGV4dHVyZUN1YmUoc2FtcGxlckNVQkUgcywgZmxvYXQzIHQpXG4iCi0gICAgICAgICAgICAg
ICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhDVUJFKHMsIHQp
O1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIjsK
KyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmUoc2Ft
cGxlckNVQkUgcywgZmxvYXQzIHQpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleENVQkUocywgdCk7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNM
MTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0
IGdsX3RleHR1cmVDdWJlKFRleHR1cmVDdWJlIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDMgdXZ3
KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIHJldHVybiB0LlNhbXBsZShzLCB1dncpO1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1V
c2VzVGV4dHVyZUN1YmVfYmlhcykKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9h
dDQgZ2xfdGV4dHVyZUN1YmUoc2FtcGxlckNVQkUgcywgZmxvYXQzIHQsIGZsb2F0IGJpYXMpXG4i
Ci0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVy
biB0ZXhDVUJFYmlhcyhzLCBmbG9hdDQodC54LCB0LnksIHQueiwgYmlhcykpO1xuIgotICAgICAg
ICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAg
IGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmUoc2FtcGxlckNVQkUgcywg
ZmxvYXQzIHQsIGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleENVQkViaWFzKHMsIGZsb2F0NCh0
LngsIHQueSwgdC56LCBiaWFzKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlKFRleHR1cmVDdWJl
IHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDMgdXZ3LCBmbG9hdCBiaWFzKVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0
LlNhbXBsZUJpYXMocywgdXZ3LCBiaWFzKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1c
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXNlICpM
b2QwIGludHJpbnNpY3MgYXJlIG5vdCBhdmFpbGFibGUgaW4gR0wgZnJhZ21lbnQgc2hhZGVycy4K
ICAgICAgICAgLy8gVGhleSBhcmUgdXNlZCB0byBzYW1wbGUgdXNpbmcgZGlzY29udGludW91cyB0
ZXh0dXJlIGNvb3JkaW5hdGVzLgogICAgICAgICBpZiAobVVzZXNUZXh0dXJlMkRMb2QwKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRMb2QwKHNhbXBs
ZXIyRCBzLCBmbG9hdDIgdClcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAg
ICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LngsIHQueSwgMCwgMCkp
O1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIjsK
KyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJETG9kMChz
YW1wbGVyMkQgcywgZmxvYXQyIHQpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0Lngs
IHQueSwgMCwgMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAo
bU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRMb2QwKFRleHR1cmUyRCB0LCBTYW1w
bGVyU3RhdGUgcywgZmxvYXQyIHV2KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUxldmVsKHMsIHV2LCAw
KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChtVXNlc1RleHR1cmUyRExvZDBfYmlhcykKICAgICAg
ICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJETG9kMChzYW1wbGVy
MkQgcywgZmxvYXQyIHQsIGZsb2F0IGJpYXMpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIK
LSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54LCB0
LnksIDAsIDApKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAg
ICAgICJcbiI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVU
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1
cmUyRExvZDAoc2FtcGxlcjJEIHMsIGZsb2F0MiB0LCBmbG9hdCBiaWFzKVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0
ZXgyRGxvZChzLCBmbG9hdDQodC54LCB0LnksIDAsIDApKTtcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJE
TG9kMChUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MiB1diwgZmxvYXQgYmlhcylc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCB1diwgMCk7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAobVVzZXNUZXh0dXJlMkRQcm9qTG9kMCkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8
ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZDAoc2FtcGxlcjJEIHMsIGZsb2F0MyB0KVxuIgot
ICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
dGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8gdC56LCAwLCAwKSk7XG4iCi0gICAg
ICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAg
ICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kKHNhbXBsZXIyRCBzLCBmbG9hdDQg
dClcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAg
cmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LncsIHQueSAvIHQudywgMCwgMCkpO1xu
IgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIjsKKyAg
ICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZDAo
c2FtcGxlcjJEIHMsIGZsb2F0MyB0KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54
IC8gdC56LCB0LnkgLyB0LnosIDAsIDApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1c
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAi
ZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHMsIGZsb2F0NCB0KVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJl
dHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC53LCB0LnkgLyB0LncsIDAsIDApKTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxu
IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNI
X0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJm
bG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZDAoVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBm
bG9hdDMgdXZ3KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUxldmVsKHMsIGZsb2F0Mih1dncueCAvIHV2
dy56LCB1dncueSAvIHV2dy56KSwgMCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgImZs
b2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kMChUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZs
b2F0NCB1dncpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgZmxvYXQyKHV2dy54IC8gdXZ3
LncsIHV2dy55IC8gdXZ3LncpLCAwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtVXNlc1RleHR1
cmUyRFByb2pMb2QwX2JpYXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0
IGdsX3RleHR1cmUyRFByb2pMb2QwX2JpYXMoc2FtcGxlcjJEIHMsIGZsb2F0MyB0LCBmbG9hdCBi
aWFzKVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAg
ICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8gdC56LCAwLCAwKSk7
XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iCi0g
ICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kX2JpYXMoc2FtcGxl
cjJEIHMsIGZsb2F0NCB0LCBmbG9hdCBiaWFzKVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4i
Ci0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAv
IHQudywgdC55IC8gdC53LCAwLCAwKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAg
ICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNI
X0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZs
b2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kMF9iaWFzKHNhbXBsZXIyRCBzLCBmbG9hdDMgdCwgZmxv
YXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8g
dC56LCAwLCAwKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0
dXJlMkRQcm9qTG9kX2JpYXMoc2FtcGxlcjJEIHMsIGZsb2F0NCB0LCBmbG9hdCBiaWFzKVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC53LCB0LnkgLyB0LncsIDAsIDApKTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09
IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8
ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZF9iaWFzKFRleHR1cmUyRCB0LCBTYW1wbGVyU3Rh
dGUgcywgZmxvYXQzIHV2dywgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChz
LCBmbG9hdDIodXZ3LnggLyB1dncueiwgdXZ3LnkgLyB1dncueiksIDApO1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZF9iaWFzKFRleHR1cmUy
RCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQ0IHV2dywgZmxvYXQgYmlhcylcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
dC5TYW1wbGVMZXZlbChzLCBmbG9hdDIodXZ3LnggLyB1dncudywgdXZ3LnkgLyB1dncudyksIDAp
O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZUN1YmVMb2QwKQogICAgICAgICB7
Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZUxvZDAoc2FtcGxlckNV
QkUgcywgZmxvYXQzIHQpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAg
ICAgICAgICAiICAgIHJldHVybiB0ZXhDVUJFbG9kKHMsIGZsb2F0NCh0LngsIHQueSwgdC56LCAw
KSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4i
OworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZUxv
ZDAoc2FtcGxlckNVQkUgcywgZmxvYXQzIHQpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleENVQkVsb2QocywgZmxv
YXQ0KHQueCwgdC55LCB0LnosIDApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmVMb2QwKFRleHR1
cmVDdWJlIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDMgdXZ3KVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBs
ZUxldmVsKHMsIHV2dywgMCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobVVzZXNUZXh0dXJlQ3Vi
ZUxvZDBfYmlhcykKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4
dHVyZUN1YmVMb2QwKHNhbXBsZXJDVUJFIHMsIGZsb2F0MyB0LCBmbG9hdCBiaWFzKVxuIgotICAg
ICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4
Q1VCRWxvZChzLCBmbG9hdDQodC54LCB0LnksIHQueiwgMCkpO1xuIgotICAgICAgICAgICAgICAg
ICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIGlmIChtT3V0
cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmVMb2QwKHNhbXBsZXJDVUJFIHMsIGZsb2F0
MyB0LCBmbG9hdCBiaWFzKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhDVUJFbG9kKHMsIGZsb2F0NCh0LngsIHQu
eSwgdC56LCAwKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICht
T3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlTG9kMChUZXh0dXJlQ3ViZSB0LCBT
YW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dywgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1w
bGVMZXZlbChzLCB1dncsIDApO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgICAvLyBWZXJ0ZXgg
c2hhZGVyCi0gICAgewotICAgICAgICBUU3RyaW5nIHVuaWZvcm1zOwotICAgICAgICBUU3RyaW5n
IGF0dHJpYnV0ZXM7Ci0gICAgICAgIFRTdHJpbmcgdmFyeWluZ3M7Ci0KLSAgICAgICAgVFN5bWJv
bFRhYmxlTGV2ZWwgKnN5bWJvbHMgPSBtQ29udGV4dC5zeW1ib2xUYWJsZS5nZXRHbG9iYWxMZXZl
bCgpOwogCi0gICAgICAgIGZvciAoVFN5bWJvbFRhYmxlTGV2ZWw6OmNvbnN0X2l0ZXJhdG9yIG5h
bWVkU3ltYm9sID0gc3ltYm9scy0+YmVnaW4oKTsgbmFtZWRTeW1ib2wgIT0gc3ltYm9scy0+ZW5k
KCk7IG5hbWVkU3ltYm9sKyspCisgICAgICAgIGlmICh1c2luZ01SVEV4dGVuc2lvbiAmJiBtTnVt
UmVuZGVyVGFyZ2V0cyA+IDEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRTeW1ib2wg
KnN5bWJvbCA9ICgqbmFtZWRTeW1ib2wpLnNlY29uZDsKLSAgICAgICAgICAgIGNvbnN0IFRTdHJp
bmcgJm5hbWUgPSBzeW1ib2wtPmdldE5hbWUoKTsKLQotICAgICAgICAgICAgaWYgKHN5bWJvbC0+
aXNWYXJpYWJsZSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0IFRWYXJp
YWJsZSAqdmFyaWFibGUgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOwot
ICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gdmFyaWFibGUtPmdldFR5cGUoKTsK
LSAgICAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9IHR5cGUuZ2V0UXVhbGlmaWVy
KCk7CisgICAgICAgICAgICBvdXQgPDwgIiNkZWZpbmUgR0xfVVNFU19NUlRcbiI7CisgICAgICAg
IH0KIAotICAgICAgICAgICAgICAgIGlmIChxdWFsaWZpZXIgPT0gRXZxVW5pZm9ybSkKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtUmVmZXJlbmNlZFVuaWZvcm1z
LmZpbmQobmFtZS5jX3N0cigpKSAhPSBtUmVmZXJlbmNlZFVuaWZvcm1zLmVuZCgpKQotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtcyArPSAidW5p
Zm9ybSAiICsgdHlwZVN0cmluZyh0eXBlKSArICIgIiArIGRlY29yYXRlVW5pZm9ybShuYW1lLCB0
eXBlKSArIGFycmF5U3RyaW5nKHR5cGUpICsgIjtcbiI7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVyID09
IEV2cUF0dHJpYnV0ZSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChtUmVmZXJlbmNlZEF0dHJpYnV0ZXMuZmluZChuYW1lLmNfc3RyKCkpICE9IG1SZWZlcmVuY2Vk
QXR0cmlidXRlcy5lbmQoKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlcyArPSAic3RhdGljICIgKyB0eXBlU3RyaW5nKHR5cGUpICsgIiAi
ICsgZGVjb3JhdGUobmFtZSkgKyBhcnJheVN0cmluZyh0eXBlKSArICIgPSAiICsgaW5pdGlhbGl6
ZXIodHlwZSkgKyAiO1xuIjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxVmFyeWluZ091dCB8
fCBxdWFsaWZpZXIgPT0gRXZxSW52YXJpYW50VmFyeWluZ091dCkKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtUmVmZXJlbmNlZFZhcnlpbmdzLmZpbmQobmFtZS5j
X3N0cigpKSAhPSBtUmVmZXJlbmNlZFZhcnlpbmdzLmVuZCgpKQotICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBQcm9ncmFtIGxpbmtpbmcgZGVwZW5kcyBv
biB0aGlzIGV4YWN0IGZvcm1hdAotICAgICAgICAgICAgICAgICAgICAgICAgdmFyeWluZ3MgKz0g
InN0YXRpYyAiICsgdHlwZVN0cmluZyh0eXBlKSArICIgIiArIGRlY29yYXRlKG5hbWUpICsgYXJy
YXlTdHJpbmcodHlwZSkgKyAiID0gIiArIGluaXRpYWxpemVyKHR5cGUpICsgIjtcbiI7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAocXVhbGlmaWVyID09IEV2cUdsb2JhbCB8fCBxdWFsaWZpZXIgPT0gRXZxVGVtcG9yYXJ5
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gR2xvYmFscyBhcmUg
ZGVjbGFyZWQgYW5kIGludGlhbGl6ZWQgYXMgYW4gYWdncmVnYXRlIG5vZGUKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVyID09IEV2cUNvbnN0KQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29uc3RhbnRzIGFyZSBy
ZXBlYXRlZCBhcyBsaXRlcmFscyB3aGVyZSB1c2VkCi0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYg
KG1Vc2VzRnJhZ0NvbG9yKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgIiNkZWZpbmUg
R0xfVVNFU19GUkFHX0NPTE9SXG4iOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKG1Vc2VzRnJh
Z0RhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiI2RlZmluZSBHTF9VU0VTX0ZS
QUdfREFUQVxuIjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlICAgLy8gVmVydGV4IHNoYWRl
cgorICAgIHsKICAgICAgICAgb3V0IDw8ICIvLyBBdHRyaWJ1dGVzXG4iOwogICAgICAgICBvdXQg
PDwgIGF0dHJpYnV0ZXM7CiAgICAgICAgIG91dCA8PCAiXG4iCkBAIC00MTgsNzQgKzYzOSwxOTQg
QEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoKQogICAgICAgICBvdXQgPDwgIlxuIgogICAgICAg
ICAgICAgICAgIi8vIFZhcnlpbmdzXG4iOwogICAgICAgICBvdXQgPDwgIHZhcnlpbmdzOwotICAg
ICAgICBvdXQgPDwgIlxuIgotICAgICAgICAgICAgICAgInVuaWZvcm0gZmxvYXQyIGR4X0hhbGZQ
aXhlbFNpemU7XG4iCi0gICAgICAgICAgICAgICAiXG4iOwotICAgICAgICBvdXQgPDwgIHVuaWZv
cm1zOwogICAgICAgICBvdXQgPDwgIlxuIjsKLSAgICAgICAgCi0gICAgICAgIGlmIChtVXNlc1Rl
eHR1cmUyRCkKKworICAgICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkQoc2FtcGxlcjJEIHMsIGZsb2F0MiB0
KVxuIgorICAgICAgICAgICAgb3V0IDw8ICJzdHJ1Y3QgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnNc
biIKICAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LngsIHQueSwgMCwgMCkpO1xuIgotICAgICAgICAgICAg
ICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBuZWFyO1xuIgorICAg
ICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZmFyO1xuIgorICAgICAgICAgICAgICAgICAgICIg
ICAgZmxvYXQgZGlmZjtcbiIKKyAgICAgICAgICAgICAgICAgICAifTtcbiIKICAgICAgICAgICAg
ICAgICAgICAiXG4iOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJETG9k
KQorICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKICAgICAgICAg
ewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJETG9kKHNhbXBsZXIyRCBz
LCBmbG9hdDIgdCwgZmxvYXQgbG9kKVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAg
ICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCwgdC55LCAw
LCBsb2QpKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgaWYgKG1V
c2VzRGVwdGhSYW5nZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImNi
dWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQzIGR4X0RlcHRo
UmFuZ2UgOiBwYWNrb2Zmc2V0KGMwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn07XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobVVzZXNEZXB0aFJhbmdl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAidW5pZm9ybSBmbG9hdDMg
ZHhfRGVwdGhSYW5nZSA6IHJlZ2lzdGVyKGMwKTtcbiI7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIG91dCA8PCAidW5pZm9ybSBmbG9hdDQgZHhfVmlld0FkanVzdCA6IHJlZ2lzdGVyKGMx
KTtcbiIKICAgICAgICAgICAgICAgICAgICAiXG4iOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KG1Vc2VzVGV4dHVyZTJEUHJvaikKKyAgICAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkKICAgICAg
ICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVy
MkQgcywgZmxvYXQzIHQpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAg
ICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC56LCB0LnkgLyB0
LnosIDAsIDApKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAg
ICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2Ft
cGxlcjJEIHMsIGZsb2F0NCB0KVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAg
ICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQudywgdC55
IC8gdC53LCAwLCAwKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAg
IG91dCA8PCAic3RhdGljIGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIGdsX0RlcHRoUmFuZ2UgPSB7
ZHhfRGVwdGhSYW5nZS54LCBkeF9EZXB0aFJhbmdlLnksIGR4X0RlcHRoUmFuZ2Uuen07XG4iCiAg
ICAgICAgICAgICAgICAgICAgIlxuIjsKICAgICAgICAgfQogCisgICAgICAgIG91dCA8PCB1bmlm
b3JtczsKKyAgICAgICAgb3V0IDw8ICJcbiI7CisgICAgICAgIAorICAgICAgICBpZiAobVVzZXNU
ZXh0dXJlMkQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9I
TFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9h
dDQgZ2xfdGV4dHVyZTJEKHNhbXBsZXIyRCBzLCBmbG9hdDIgdClcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRs
b2QocywgZmxvYXQ0KHQueCwgdC55LCAwLCAwKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRChUZXh0
dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MiB1dilcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVM
ZXZlbChzLCB1diwgMCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobVVzZXNUZXh0dXJlMkRMb2Qp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQ
VVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4
dHVyZTJETG9kKHNhbXBsZXIyRCBzLCBmbG9hdDIgdCwgZmxvYXQgbG9kKVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0
ZXgyRGxvZChzLCBmbG9hdDQodC54LCB0LnksIDAsIGxvZCkpO1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJl
MkRMb2QoVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDIgdXYsIGZsb2F0IGxvZClc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCB1diwgbG9kKTtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChtVXNlc1RleHR1cmUyRFByb2opCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtT3V0
cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxvYXQzIHQp
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LnosIHQueSAvIHQueiwgMCwg
MCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJv
aihzYW1wbGVyMkQgcywgZmxvYXQ0IHQpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0
LnggLyB0LncsIHQueSAvIHQudywgMCwgMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAi
fVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKFRl
eHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dylcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1w
bGVMZXZlbChzLCBmbG9hdDIodXZ3LnggLyB1dncueiwgdXZ3LnkgLyB1dncueiksIDApO1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihUZXh0dXJl
MkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0NCB1dncpXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2
ZWwocywgZmxvYXQyKHV2dy54IC8gdXZ3LncsIHV2dy55IC8gdXZ3LncpLCAwKTtcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQor
CiAgICAgICAgIGlmIChtVXNlc1RleHR1cmUyRFByb2pMb2QpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHMsIGZsb2F0
MyB0LCBmbG9hdCBsb2QpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAg
ICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC56LCB0LnkgLyB0
LnosIDAsIGxvZCkpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAg
ICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxv
ZChzYW1wbGVyMkQgcywgZmxvYXQ0IHQsIGZsb2F0IGxvZClcbiIKLSAgICAgICAgICAgICAgICAg
ICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0
NCh0LnggLyB0LncsIHQueSAvIHQudywgMCwgbG9kKSk7XG4iCi0gICAgICAgICAgICAgICAgICAg
In1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRU
eXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBv
dXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kKHNhbXBsZXIyRCBzLCBmbG9hdDMgdCwg
ZmxvYXQgbG9kKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC56LCB0Lnkg
LyB0LnosIDAsIGxvZCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xf
dGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgcywgZmxvYXQ0IHQsIGZsb2F0IGxvZClcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICBy
ZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQudywgdC55IC8gdC53LCAwLCBsb2QpKTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09
IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8
ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZs
b2F0MyB1dncsIGZsb2F0IGxvZClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCBmbG9hdDIo
dXZ3LnggLyB1dncueiwgdXZ3LnkgLyB1dncueiksIGxvZCk7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKFRleHR1cmUyRCB0LCBTYW1wbGVyU3Rh
dGUgcywgZmxvYXQ0IHV2dylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCBmbG9hdDIodXZ3
LnggLyB1dncudywgdXZ3LnkgLyB1dncudyksIGxvZCk7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bVVzZXNUZXh0dXJlQ3ViZSkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQg
Z2xfdGV4dHVyZUN1YmUoc2FtcGxlckNVQkUgcywgZmxvYXQzIHQpXG4iCi0gICAgICAgICAgICAg
ICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhDVUJFbG9kKHMs
IGZsb2F0NCh0LngsIHQueSwgdC56LCAwKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIK
LSAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09
IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwg
ImZsb2F0NCBnbF90ZXh0dXJlQ3ViZShzYW1wbGVyQ1VCRSBzLCBmbG9hdDMgdClcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1
cm4gdGV4Q1VCRWxvZChzLCBmbG9hdDQodC54LCB0LnksIHQueiwgMCkpO1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09V
VFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90
ZXh0dXJlQ3ViZShUZXh0dXJlQ3ViZSB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dylcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCB1dncsIDApO1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KG1Vc2VzVGV4dHVyZUN1YmVMb2QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiZmxv
YXQ0IGdsX3RleHR1cmVDdWJlTG9kKHNhbXBsZXJDVUJFIHMsIGZsb2F0MyB0LCBmbG9hdCBsb2Qp
XG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJl
dHVybiB0ZXhDVUJFbG9kKHMsIGZsb2F0NCh0LngsIHQueSwgdC56LCBsb2QpKTtcbiIKLSAgICAg
ICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAg
ICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlTG9kKHNhbXBsZXJDVUJF
IHMsIGZsb2F0MyB0LCBmbG9hdCBsb2QpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleENVQkVsb2QocywgZmxvYXQ0
KHQueCwgdC55LCB0LnosIGxvZCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZUxvZChUZXh0dXJl
Q3ViZSB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dywgZmxvYXQgbG9kKVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVy
biB0LlNhbXBsZUxldmVsKHMsIHV2dywgbG9kKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
In1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTA5LDE4
ICs4NTAsMTQgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoKQogICAgICAgICBvdXQgPDwgIiNk
ZWZpbmUgR0xfVVNFU19QT0lOVF9TSVpFXG4iOwogICAgIH0KIAorICAgIGlmIChtVXNlc0ZyYWdE
ZXB0aCkKKyAgICB7CisgICAgICAgIG91dCA8PCAiI2RlZmluZSBHTF9VU0VTX0ZSQUdfREVQVEhc
biI7CisgICAgfQorCiAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkKICAgICB7Ci0gICAgICAgIG91
dCA8PCAic3RydWN0IGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzXG4iCi0gICAgICAgICAgICAgICAi
e1xuIgotICAgICAgICAgICAgICAgIiAgICBmbG9hdCBuZWFyO1xuIgotICAgICAgICAgICAgICAg
IiAgICBmbG9hdCBmYXI7XG4iCi0gICAgICAgICAgICAgICAiICAgIGZsb2F0IGRpZmY7XG4iCi0g
ICAgICAgICAgICAgICAifTtcbiIKLSAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAg
ICJ1bmlmb3JtIGZsb2F0MyBkeF9EZXB0aFJhbmdlOyIKLSAgICAgICAgICAgICAgICJzdGF0aWMg
Z2xfRGVwdGhSYW5nZVBhcmFtZXRlcnMgZ2xfRGVwdGhSYW5nZSA9IHtkeF9EZXB0aFJhbmdlLngs
IGR4X0RlcHRoUmFuZ2UueSwgZHhfRGVwdGhSYW5nZS56fTtcbiIKLSAgICAgICAgICAgICAgICJc
biI7CisgICAgICAgIG91dCA8PCAiI2RlZmluZSBHTF9VU0VTX0RFUFRIX1JBTkdFXG4iOwogICAg
IH0KIAogICAgIGlmIChtVXNlc1hvcikKQEAgLTgxMywxMCArMTE1MCwxMiBAQCB2b2lkIE91dHB1
dEhMU0w6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1iCiAgICAgaWYgKG5hbWUgPT0gImdsX0ZyYWdD
b2xvciIpCiAgICAgewogICAgICAgICBvdXQgPDwgImdsX0NvbG9yWzBdIjsKKyAgICAgICAgbVVz
ZXNGcmFnQ29sb3IgPSB0cnVlOwogICAgIH0KICAgICBlbHNlIGlmIChuYW1lID09ICJnbF9GcmFn
RGF0YSIpCiAgICAgewogICAgICAgICBvdXQgPDwgImdsX0NvbG9yIjsKKyAgICAgICAgbVVzZXNG
cmFnRGF0YSA9IHRydWU7CiAgICAgfQogICAgIGVsc2UgaWYgKG5hbWUgPT0gImdsX0RlcHRoUmFu
Z2UiKQogICAgIHsKQEAgLTg0MywyMyArMTE4MiwyOCBAQCB2b2lkIE91dHB1dEhMU0w6OnZpc2l0
U3ltYm9sKFRJbnRlcm1TeW1iCiAgICAgICAgIG1Vc2VzUG9pbnRTaXplID0gdHJ1ZTsKICAgICAg
ICAgb3V0IDw8IG5hbWU7CiAgICAgfQorICAgIGVsc2UgaWYgKG5hbWUgPT0gImdsX0ZyYWdEZXB0
aEVYVCIpCisgICAgeworICAgICAgICBtVXNlc0ZyYWdEZXB0aCA9IHRydWU7CisgICAgICAgIG91
dCA8PCAiZ2xfRGVwdGgiOworICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgICBUUXVhbGlm
aWVyIHF1YWxpZmllciA9IG5vZGUtPmdldFF1YWxpZmllcigpOwogCiAgICAgICAgIGlmIChxdWFs
aWZpZXIgPT0gRXZxVW5pZm9ybSkKICAgICAgICAgewotICAgICAgICAgICAgbVJlZmVyZW5jZWRV
bmlmb3Jtcy5pbnNlcnQobmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIG1SZWZlcmVuY2VkVW5p
Zm9ybXNbbmFtZV0gPSBub2RlOwogICAgICAgICAgICAgb3V0IDw8IGRlY29yYXRlVW5pZm9ybShu
YW1lLCBub2RlLT5nZXRUeXBlKCkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHF1YWxp
ZmllciA9PSBFdnFBdHRyaWJ1dGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1SZWZlcmVuY2Vk
QXR0cmlidXRlcy5pbnNlcnQobmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIG1SZWZlcmVuY2Vk
QXR0cmlidXRlc1tuYW1lXSA9IG5vZGU7CiAgICAgICAgICAgICBvdXQgPDwgZGVjb3JhdGUobmFt
ZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVyID09IEV2cVZhcnlpbmdP
dXQgfHwgcXVhbGlmaWVyID09IEV2cUludmFyaWFudFZhcnlpbmdPdXQgfHwgcXVhbGlmaWVyID09
IEV2cVZhcnlpbmdJbiB8fCBxdWFsaWZpZXIgPT0gRXZxSW52YXJpYW50VmFyeWluZ0luKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBtUmVmZXJlbmNlZFZhcnlpbmdzLmluc2VydChuYW1lLmNfc3Ry
KCkpOworICAgICAgICAgICAgbVJlZmVyZW5jZWRWYXJ5aW5nc1tuYW1lXSA9IG5vZGU7CiAgICAg
ICAgICAgICBvdXQgPDwgZGVjb3JhdGUobmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpA
QCAtOTUyLDcgKzEyOTYsMTAgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShWaXNpdCB2
aXNpdAogICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKICAgICAgICAgaWYgKHZpc2l0
ID09IEluVmlzaXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0
ZUZpZWxkKG5vZGUtPmdldFR5cGUoKS5nZXRGaWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5n
ZXRUeXBlKCkpOworICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9k
ZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7CisgICAgICAgICAgICBjb25zdCBU
SW50ZXJtQ29uc3RhbnRVbmlvbiogaW5kZXggPSBub2RlLT5nZXRSaWdodCgpLT5nZXRBc0NvbnN0
YW50VW5pb24oKTsKKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQgPSBzdHJ1Y3R1cmUt
PmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOworICAgICAgICAgICAgb3V0IDw8ICIuIiAr
IGRlY29yYXRlRmllbGQoZmllbGQtPm5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkp
OwogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTk3NCw3ICsxMzIx
LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdAogCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50KQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaSA9IGVsZW1lbnQtPmdldFVuaW9uQXJyYXlQb2ludGVyKClb
MF0uZ2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaSA9IGVsZW1lbnQt
PmdldElDb25zdCgwKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgewpAQCAtMTAyMSwxOCArMTM2OCwxOCBAQCBib29sIE91dHB1
dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0CiAgICAgICAgICAgICAgICAgb3V0IDw8ICIh
KCI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlTGlzdCAqZmllbGRz
ID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7CisgICAgICAgICAgICBj
b25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRT
dHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZmllbGRzLT5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZmllbGRzLnNpemUoKTsgaSsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0
IFRUeXBlICpmaWVsZFR5cGUgPSAoKmZpZWxkcylbaV0udHlwZTsKKyAgICAgICAgICAgICAgICBj
b25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ldOwogCiAgICAgICAgICAgICAgICAgbm9kZS0+
Z2V0TGVmdCgpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIi4iICsg
ZGVjb3JhdGVGaWVsZChmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpLCBub2RlLT5nZXRMZWZ0KCkt
PmdldFR5cGUoKSkgKyAiID09ICI7CisgICAgICAgICAgICAgICAgb3V0IDw8ICIuIiArIGRlY29y
YXRlRmllbGQoZmllbGQtPm5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkpICsgIiA9
PSAiOwogICAgICAgICAgICAgICAgIG5vZGUtPmdldFJpZ2h0KCktPnRyYXZlcnNlKHRoaXMpOwot
ICAgICAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkVHlwZS0+Z2V0
RmllbGROYW1lKCksIG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgICAg
ICBvdXQgPDwgIi4iICsgZGVjb3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCBub2RlLT5nZXRMZWZ0
KCktPmdldFR5cGUoKSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoaSA8IGZpZWxkcy0+c2l6ZSgp
IC0gMSkKKyAgICAgICAgICAgICAgICBpZiAoaSA8IGZpZWxkcy5zaXplKCkgLSAxKQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgJiYgIjsKICAgICAgICAg
ICAgICAgICB9CkBAIC0xMjM4LDcgKzE1ODUsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdn
cmVnYXRlKFZpc2l0IHZpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtSW5zaWRlRnVuY3Rp
b24pCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShu
b2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9k
ZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAie1xuIjsK
IAogICAgICAgICAgICAgICAgIG1TY29wZURlcHRoKys7CkBAIC0xMjU1LDcgKzE2MDIsNyBAQCBi
b29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpCiAKICAgICAgICAgICAgIGZv
ciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBzaXQgPSBub2RlLT5nZXRTZXF1ZW5jZSgpLmJl
Z2luKCk7IHNpdCAhPSBub2RlLT5nZXRTZXF1ZW5jZSgpLmVuZCgpOyBzaXQrKykKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKCgqc2l0KS0+Z2V0TGlu
ZSgpKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKCgqc2l0KS0+Z2V0TGlu
ZSgpLmZpcnN0X2xpbmUpOwogCiAgICAgICAgICAgICAgICAgdHJhdmVyc2VTdGF0ZW1lbnRzKCpz
aXQpOwogCkBAIC0xMjY0LDcgKzE2MTEsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVn
YXRlKFZpc2l0IHZpCiAKICAgICAgICAgICAgIGlmIChtSW5zaWRlRnVuY3Rpb24pCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRFbmRM
aW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGlu
ZSgpLmxhc3RfbGluZSk7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICJ9XG4iOwogCiAgICAgICAg
ICAgICAgICAgbVNjb3BlRGVwdGgtLTsKQEAgLTEyNzcsMTMgKzE2MjQsMTIgQEAgYm9vbCBPdXRw
dXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICB7CiAgICAgICAgICAgICBU
SW50ZXJtU2VxdWVuY2UgJnNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKICAgICAgICAg
ICAgIFRJbnRlcm1UeXBlZCAqdmFyaWFibGUgPSBzZXF1ZW5jZVswXS0+Z2V0QXNUeXBlZCgpOwot
ICAgICAgICAgICAgYm9vbCB2aXNpdCA9IHRydWU7CiAKICAgICAgICAgICAgIGlmICh2YXJpYWJs
ZSAmJiAodmFyaWFibGUtPmdldFF1YWxpZmllcigpID09IEV2cVRlbXBvcmFyeSB8fCB2YXJpYWJs
ZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxR2xvYmFsKSkKICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICBpZiAodmFyaWFibGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSkKICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZENvbnN0cnVjdG9yKHZhcmlhYmxlLT5nZXRU
eXBlKCksIHNjb3BlZFN0cnVjdCh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFR5cGVOYW1lKCkpLCBO
VUxMKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RydWN0b3IodmFyaWFibGUtPmdldFR5
cGUoKSwgc2NvcGVkU3RydWN0KHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCktPm5hbWUo
KSksIE5VTEwpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghdmFy
aWFibGUtPmdldEFzU3ltYm9sTm9kZSgpIHx8IHZhcmlhYmxlLT5nZXRBc1N5bWJvbE5vZGUoKS0+
Z2V0U3ltYm9sKCkgIT0gIiIpICAgLy8gVmFyaWFibGUgZGVjbGFyYXRpb24KQEAgLTEzMTAsMTkg
KzE2NTYsMTEgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgqc2l0KS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2aXNpdCAm
JiB0aGlzLT5pblZpc2l0KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpzaXQgIT0gc2Vx
dWVuY2UuYmFjaygpKQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgqc2l0ICE9IHNlcXVlbmNlLmJhY2soKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0ID0g
dGhpcy0+dmlzaXRBZ2dyZWdhdGUoSW5WaXNpdCwgbm9kZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLCAiOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZpc2l0ICYmIHRoaXMtPnBvc3RWaXNpdCkKLSAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+dmlzaXRBZ2dyZWdhdGUoUG9z
dFZpc2l0LCBub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCkgJiYg
dmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKSA9PSAiIikgICAvLyBUeXBl
IChzdHJ1Y3QpIGRlY2xhcmF0aW9uCiAgICAgICAgICAgICAgICAgewpAQCAtMTMzMCw3ICsxNjY4
LDI0IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgCisgICAgICAgICAgICBlbHNlIGlmICh2YXJpYWJsZSAmJiAodmFy
aWFibGUtPmdldFF1YWxpZmllcigpID09IEV2cVZhcnlpbmdPdXQgfHwgdmFyaWFibGUtPmdldFF1
YWxpZmllcigpID09IEV2cUludmFyaWFudFZhcnlpbmdPdXQpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBzaXQgPSBzZXF1ZW5j
ZS5iZWdpbigpOyBzaXQgIT0gc2VxdWVuY2UuZW5kKCk7IHNpdCsrKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gKCpzaXQpLT5n
ZXRBc1N5bWJvbE5vZGUoKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBWZXJ0ZXggKG91
dHB1dCkgdmFyeWluZ3Mgd2hpY2ggYXJlIGRlY2xhcmVkIGJ1dCBub3Qgd3JpdHRlbiB0byBzaG91
bGQgc3RpbGwgYmUgZGVjbGFyZWQgdG8gYWxsb3cgc3VjY2Vzc2Z1bCBsaW5raW5nCisgICAgICAg
ICAgICAgICAgICAgICAgICBtUmVmZXJlbmNlZFZhcnlpbmdzW3N5bWJvbC0+Z2V0U3ltYm9sKCld
ID0gc3ltYm9sOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgKCpzaXQp
LT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIGVsc2UgaWYgKHZpc2l0ID09IEluVmlzaXQpCkBAIC0xNDAxLDcgKzE3NTYsNyBA
QCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpCiAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sLT5nZXRUeXBlKCkuZ2V0U3RydWN0
KCkpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZENv
bnN0cnVjdG9yKHN5bWJvbC0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3Qoc3ltYm9sLT5nZXRUeXBl
KCkuZ2V0VHlwZU5hbWUoKSksIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29u
c3RydWN0b3Ioc3ltYm9sLT5nZXRUeXBlKCksIHNjb3BlZFN0cnVjdChzeW1ib2wtPmdldFR5cGUo
KS5nZXRTdHJ1Y3QoKS0+bmFtZSgpKSwgTlVMTCk7CiAgICAgICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgICAgICBvdXQgPDwgYXJndW1lbnRTdHJpbmcoc3ltYm9sKTsKQEAgLTE0
NDEsMTUxICsxNzk2LDE2MyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0
IHZpCiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BGdW5jdGlvbkNhbGw6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBUU3RyaW5nIG5hbWUgPSBURnVuY3Rpb246OnVubWFuZ2xlTmFtZShub2Rl
LT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgIGJvb2wgbG9kMCA9IG1JbnNpZGVEaXNjb250
aW51b3VzTG9vcCB8fCBtT3V0cHV0TG9kMEZ1bmN0aW9uOworICAgICAgICAgICAgVFN0cmluZyBu
YW1lID0gVEZ1bmN0aW9uOjp1bm1hbmdsZU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAg
ICAgIGJvb2wgbG9kMCA9IG1JbnNpZGVEaXNjb250aW51b3VzTG9vcCB8fCBtT3V0cHV0TG9kMEZ1
bmN0aW9uOwogCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmlzVXNlckRlZmluZWQoKSkKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG91dCA8PCBkZWNvcmF0ZShuYW1l
KSA8PCAobG9kMCA/ICJMb2QwKCIgOiAiKCIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAobm9kZS0+aXNVc2VyRGVmaW5lZCgpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCBkZWNvcmF0ZShuYW1lKSA8PCAobG9k
MCA/ICJMb2QwKCIgOiAiKCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChuYW1lID09ICJ0ZXh0dXJlMkQiKQogICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gInRleHR1cmUy
RCIpCisgICAgICAgICAgICAgICAgICAgIGlmICghbG9kMCkKICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2QwKQorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDIpCiAgICAgICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNl
cXVlbmNlKCkuc2l6ZSgpID09IDIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRCA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1
cmUyRF9iaWFzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlMkQoIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtVXNlc1RleHR1cmUyRCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQogICAgICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRT
ZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRMb2QwID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2Vz
VGV4dHVyZTJETG9kMF9iaWFzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlMkRMb2QwKCI7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRfYmlhcyA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVB
Q0hBQkxFKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJE
KCI7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
bmFtZSA9PSAidGV4dHVyZTJEUHJvaiIpCisgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2QwKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDIp
CiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDIpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUy
RFByb2ogPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAz
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbVVzZXNUZXh0dXJlMkRQcm9qX2JpYXMgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hB
QkxFKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmUy
RFByb2ooIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRExvZDAg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVu
Y2UoKS5zaXplKCkgPT0gMykKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMikKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1Vc2VzVGV4dHVyZTJEUHJvakxvZDAgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5nZXRT
ZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRQcm9qTG9kMF9iaWFz
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlMkRQcm9qTG9kMCgiOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1Vc2VzVGV4dHVyZTJETG9kMF9iaWFzID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlMkRMb2QwKCI7CiAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9
PSAidGV4dHVyZUN1YmUiKQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChuYW1lID09ICJ0ZXh0dXJlMkRQcm9qIikKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghbG9kMCkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFsb2QwKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6
ZSgpID09IDIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmVDdWJlID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9k
ZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZUN1YmVfYmlh
cyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZUN1YmUoIjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtVXNlc1RleHR1cmUyRFByb2ogPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2Vx
dWVuY2UoKS5zaXplKCkgPT0gMikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZUN1YmVMb2QwID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2Vz
VGV4dHVyZUN1YmVMb2QwX2JpYXMgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmVDdWJlTG9kMCgiOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJEUHJval9iaWFzID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgVU5SRUFDSEFCTEUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90
ZXh0dXJlMkRQcm9qKCI7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVyZTJETG9kIikKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJEUHJvakxv
ZDAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1
cmUyRExvZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJl
MkRQcm9qTG9kMF9iaWFzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKIAotICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlMkRMb2QoIjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJEUHJvakxvZDAoIjsKICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlMkRQcm9qTG9k
IikKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAi
dGV4dHVyZUN1YmUiKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFsb2QwKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQorICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZUN1YmUg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUy
RFByb2pMb2QgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVy
ZUN1YmVfYmlhcyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJEUHJvakxvZCgiOworICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0IDw8ICJnbF90ZXh0dXJlQ3ViZSgiOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVDdWJlTG9kIikKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQorICAg
ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2Vz
VGV4dHVyZUN1YmVMb2QwID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09
IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbVVzZXNUZXh0dXJlQ3ViZUxvZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbVVzZXNUZXh0dXJlQ3ViZUxvZDBfYmlhcyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZUN1YmVMb2QoIjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZUN1YmVMb2QwKCI7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAobmFtZSA9PSAidGV4dHVyZTJETG9kIikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRExvZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZWxzZSBV
TlJFQUNIQUJMRSgpOworCisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJE
TG9kKCI7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUg
PT0gInRleHR1cmUyRFByb2pMb2QiKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJEUHJvakxvZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBV
TlJFQUNIQUJMRSgpOworCisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJE
UHJvakxvZCgiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChu
YW1lID09ICJ0ZXh0dXJlQ3ViZUxvZCIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlQ3ViZUxvZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBV
TlJFQUNIQUJMRSgpOworCisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZUN1
YmVMb2QoIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNI
QUJMRSgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAodmlzaXQgPT0gSW5W
aXNpdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKKworICAgICAgICAgICAgVEludGVybVNlcXVlbmNl
ICZhcmd1bWVudHMgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOworCisgICAgICAgICAgICBmb3IgKFRJ
bnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3IgYXJnID0gYXJndW1lbnRzLmJlZ2luKCk7IGFyZyAhPSBh
cmd1bWVudHMuZW5kKCk7IGFyZysrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91
dCA8PCAiKSI7CisgICAgICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9P
VVRQVVQgJiYgSXNTYW1wbGVyKCgqYXJnKS0+Z2V0QXNUeXBlZCgpLT5nZXRCYXNpY1R5cGUoKSkp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBvdXQgPDwgInRleHR1cmVf
IjsKKyAgICAgICAgICAgICAgICAgICAgKCphcmcpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAg
ICAgICAgICAgICAgb3V0IDw8ICIsIHNhbXBsZXJfIjsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAoKmFyZyktPnRyYXZlcnNlKHRoaXMpOworCisgICAgICAgICAgICAgICAg
aWYgKGFyZyA8IGFyZ3VtZW50cy5lbmQoKSAtIDEpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIG91dCA8PCAiKSI7CisKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wUGFyYW1ldGVyczog
ICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIigiLCAiLCAiLCAiKVxue1xuIik7ICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTY1MCw4ICsyMDE3LDggQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFn
Z3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAibWF0NCgiLCAi
LCAiLCAiKSIpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wQ29uc3RydWN0U3RydWN0
OgotICAgICAgICBhZGRDb25zdHJ1Y3Rvcihub2RlLT5nZXRUeXBlKCksIHNjb3BlZFN0cnVjdChu
b2RlLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSksICZub2RlLT5nZXRTZXF1ZW5jZSgpKTsKLSAg
ICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgc3RydWN0TG9va3VwKG5vZGUtPmdldFR5cGUoKS5n
ZXRUeXBlTmFtZSgpKSArICJfY3RvcigiLCAiLCAiLCAiKSIpOworICAgICAgICBhZGRDb25zdHJ1
Y3Rvcihub2RlLT5nZXRUeXBlKCksIHNjb3BlZFN0cnVjdChub2RlLT5nZXRUeXBlKCkuZ2V0U3Ry
dWN0KCktPm5hbWUoKSksICZub2RlLT5nZXRTZXF1ZW5jZSgpKTsKKyAgICAgICAgb3V0cHV0VHJp
cGxldCh2aXNpdCwgc3RydWN0TG9va3VwKG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+bmFt
ZSgpKSArICJfY3RvcigiLCAiLCAiLCAiKSIpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2Ug
RU9wTGVzc1RoYW46ICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIigiLCAiIDwgIiwgIiki
KTsgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbjogICAg
ICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgPiAiLCAiKSIpOyAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC0xNzQxLDcgKzIxMDgsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0U2VsZWN0
aW9uKFZpc2l0IHZpCiAKICAgICAgICAgb3V0IDw8ICIpXG4iOwogICAgICAgICAKLSAgICAgICAg
b3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5l
RGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8ICJ7
XG4iOwogCiAgICAgICAgIGlmIChub2RlLT5nZXRUcnVlQmxvY2soKSkKQEAgLTE3NDksMjAgKzIx
MTYsMjAgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdFNlbGVjdGlvbihWaXNpdCB2aQogICAgICAg
ICAgICAgdHJhdmVyc2VTdGF0ZW1lbnRzKG5vZGUtPmdldFRydWVCbG9jaygpKTsKICAgICAgICAg
fQogCi0gICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAg
ICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAg
ICAgIG91dCA8PCAiO1xufVxuIjsKIAogICAgICAgICBpZiAobm9kZS0+Z2V0RmFsc2VCbG9jaygp
KQogICAgICAgICB7CiAgICAgICAgICAgICBvdXQgPDwgImVsc2VcbiI7CiAKLSAgICAgICAgICAg
IG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5lKCkpOwor
ICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdl
dExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgICAgIG91dCA8PCAie1xuIjsKIAotICAgICAg
ICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUo
KSk7CisgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2so
KS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgdHJhdmVyc2VTdGF0ZW1lbnRz
KG5vZGUtPmdldEZhbHNlQmxvY2soKSk7CiAKLSAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3Rp
dmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgb3V0cHV0
TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKS5maXJzdF9saW5l
KTsKICAgICAgICAgICAgIG91dCA8PCAiO1xufVxuIjsKICAgICAgICAgfQogICAgIH0KQEAgLTE3
ODQsOSArMjE1MSwxMiBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwg
CiAgICAgICAgIG1JbnNpZGVEaXNjb250aW51b3VzTG9vcCA9IGNvbnRhaW5zTG9vcERpc2NvbnRp
bnVpdHkobm9kZSk7CiAgICAgfQogCi0gICAgaWYgKGhhbmRsZUV4Y2Vzc2l2ZUxvb3Aobm9kZSkp
CisgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGhhbmRsZUV4Y2Vzc2l2ZUxvb3Aobm9kZSkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG1Cb2R5OwpAQCAtMTc5NSw3ICsyMTY1LDcgQEAgYm9v
bCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIAogICAgIHsKICAgICAgICAgb3V0
IDw8ICJ7ZG9cbiI7CiAKLSAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5l
KCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9s
aW5lKTsKICAgICAgICAgb3V0IDw8ICJ7XG4iOwogICAgIH0KICAgICBlbHNlCkBAIC0xODIzLDcg
KzIxOTMsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwgCiAKICAg
ICAgICAgb3V0IDw8ICIpXG4iOwogICAgICAgICAKLSAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2
ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdl
dExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8ICJ7XG4iOwogICAgIH0KIApAQCAt
MTgzMiwxMiArMjIwMiwxMiBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2aXNp
dCwgCiAgICAgICAgIHRyYXZlcnNlU3RhdGVtZW50cyhub2RlLT5nZXRCb2R5KCkpOwogICAgIH0K
IAotICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICBvdXRwdXRM
aW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICBvdXQgPDwgIjt9
XG4iOwogCiAgICAgaWYgKG5vZGUtPmdldFR5cGUoKSA9PSBFTG9vcERvV2hpbGUpCiAgICAgewot
ICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENvbmRpdGlvbigpLT5nZXRMaW5l
KCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENvbmRpdGlvbigpLT5n
ZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAid2hpbGUoXG4iOwogCiAgICAg
ICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKQEAgLTE5NzcsNyArMjM0
Nyw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcChUSW4KICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50ICYm
IGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBzeW1ib2w7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCA9IGNvbnN0YW50LT5nZXRVbmlvbkFycmF5UG9p
bnRlcigpWzBdLmdldElDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRp
YWwgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTk5OSw3ICsyMzY5
LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgogICAgICAgICAg
ICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50ICYmIGNvbnN0YW50
LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICBjb21wYXJhdG9yID0gdGVzdC0+Z2V0T3AoKTsKLSAgICAgICAgICAgICAgICAgICAg
bGltaXQgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsK
KyAgICAgICAgICAgICAgICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDApOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjAyMCw3ICsyMzkw
LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0
SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVl
ID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KG9wKQogICAgICAgICAgICAgICAgICAgICB7CkBAIC0yMTA5LDcgKzI0NzksNyBAQCBib29sIE91
dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAgICAgb3V0IDw8
IGluY3JlbWVudDsKICAgICAgICAgICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkp
OworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZp
cnN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAie1xuIjsKIAogICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5nZXRCb2R5KCkpCkBAIC0yMTE3LDcgKzI0ODcsNyBAQCBib29sIE91dHB1
dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmdldEJvZHkoKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAg
ICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwog
ICAgICAgICAgICAgICAgIG91dCA8PCAiO31cbiI7CiAKICAgICAgICAgICAgICAgICBpZiAoIWZp
cnN0TG9vcEZyYWdtZW50KQpAQCAtMjE5Miw2ICsyNTYyLDEyIEBAIFRTdHJpbmcgT3V0cHV0SExT
TDo6YXJndW1lbnRTdHJpbmcoY29uc3QKICAgICAgICAgbmFtZSA9IGRlY29yYXRlKG5hbWUpOwog
ICAgIH0KIAorICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUICYmIElzU2Ft
cGxlcih0eXBlLmdldEJhc2ljVHlwZSgpKSkKKyAgICB7CisgICAgICAgcmV0dXJuIHF1YWxpZmll
clN0cmluZyhxdWFsaWZpZXIpICsgIiAiICsgdGV4dHVyZVN0cmluZyh0eXBlKSArICIgdGV4dHVy
ZV8iICsgbmFtZSArIGFycmF5U3RyaW5nKHR5cGUpICsgIiwgIiArCisgICAgICAgICAgICAgIHF1
YWxpZmllclN0cmluZyhxdWFsaWZpZXIpICsgIiBTYW1wbGVyU3RhdGUgc2FtcGxlcl8iICsgbmFt
ZSArIGFycmF5U3RyaW5nKHR5cGUpOworICAgIH0KKwogICAgIHJldHVybiBxdWFsaWZpZXJTdHJp
bmcocXVhbGlmaWVyKSArICIgIiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBuYW1lICsgYXJy
YXlTdHJpbmcodHlwZSk7CiB9CiAKQEAgLTIyMTMsMjIgKzI1ODksMjMgQEAgVFN0cmluZyBPdXRw
dXRITFNMOjp0eXBlU3RyaW5nKGNvbnN0IFRUeQogewogICAgIGlmICh0eXBlLmdldEJhc2ljVHlw
ZSgpID09IEVidFN0cnVjdCkKICAgICB7Ci0gICAgICAgIGlmICh0eXBlLmdldFR5cGVOYW1lKCkg
IT0gIiIpCisgICAgICAgIGNvbnN0IFRTdHJpbmcmIHR5cGVOYW1lID0gdHlwZS5nZXRTdHJ1Y3Qo
KS0+bmFtZSgpOworICAgICAgICBpZiAodHlwZU5hbWUgIT0gIiIpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdHJ1Y3RMb29rdXAodHlwZS5nZXRUeXBlTmFtZSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBzdHJ1Y3RMb29rdXAodHlwZU5hbWUpOwogICAgICAgICB9CiAgICAgICAgIGVs
c2UgICAvLyBOYW1lbGVzcyBzdHJ1Y3R1cmUsIGRlZmluZSBpbiBwbGFjZQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb25zdCBUVHlwZUxpc3QgJmZpZWxkcyA9ICp0eXBlLmdldFN0cnVjdCgpOwor
ICAgICAgICAgICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+
ZmllbGRzKCk7CiAKICAgICAgICAgICAgIFRTdHJpbmcgc3RyaW5nID0gInN0cnVjdFxuIgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIjsKIAogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJmZpZWxkID0gKmZpZWxkc1tpXS50eXBlOworICAg
ICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CiAKLSAgICAgICAg
ICAgICAgICBzdHJpbmcgKz0gIiAgICAiICsgdHlwZVN0cmluZyhmaWVsZCkgKyAiICIgKyBkZWNv
cmF0ZShmaWVsZC5nZXRGaWVsZE5hbWUoKSkgKyBhcnJheVN0cmluZyhmaWVsZCkgKyAiO1xuIjsK
KyAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAgICAiICsgdHlwZVN0cmluZygqZmllbGQtPnR5
cGUoKSkgKyAiICIgKyBkZWNvcmF0ZShmaWVsZC0+bmFtZSgpKSArIGFycmF5U3RyaW5nKCpmaWVs
ZC0+dHlwZSgpKSArICI7XG4iOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBzdHJpbmcg
Kz0gIn0gIjsKQEAgLTIyODYsMTAgKzI2NjMsMjggQEAgVFN0cmluZyBPdXRwdXRITFNMOjp0eXBl
U3RyaW5nKGNvbnN0IFRUeQogICAgICAgICB9CiAgICAgfQogCi0gICAgVU5JTVBMRU1FTlRFRCgp
OyAgIC8vIEZJWE1FCisgICAgVU5SRUFDSEFCTEUoKTsKICAgICByZXR1cm4gIjx1bmtub3duIHR5
cGU+IjsKIH0KIAorVFN0cmluZyBPdXRwdXRITFNMOjp0ZXh0dXJlU3RyaW5nKGNvbnN0IFRUeXBl
ICZ0eXBlKQoreworICAgIHN3aXRjaCAodHlwZS5nZXRCYXNpY1R5cGUoKSkKKyAgICB7CisgICAg
ICBjYXNlIEVidFNhbXBsZXIyRDoKKyAgICAgICAgcmV0dXJuICJUZXh0dXJlMkQiOworICAgICAg
Y2FzZSBFYnRTYW1wbGVyQ3ViZToKKyAgICAgICAgcmV0dXJuICJUZXh0dXJlQ3ViZSI7CisgICAg
ICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzoKKyAgICAgICAgcmV0dXJuICJUZXh0dXJlMkQi
OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICByZXR1cm4gIjx1bmtub3duIHRleHR1cmUgdHlwZT4iOworfQorCiBUU3RyaW5n
IE91dHB1dEhMU0w6OmFycmF5U3RyaW5nKGNvbnN0IFRUeXBlICZ0eXBlKQogewogICAgIGlmICgh
dHlwZS5pc0FycmF5KCkpCkBAIC0yMzA0LDExICsyNjk5LDEyIEBAIFRTdHJpbmcgT3V0cHV0SExT
TDo6aW5pdGlhbGl6ZXIoY29uc3QgVFQKIHsKICAgICBUU3RyaW5nIHN0cmluZzsKIAotICAgIGZv
ciAoaW50IGNvbXBvbmVudCA9IDA7IGNvbXBvbmVudCA8IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpOyBj
b21wb25lbnQrKykKKyAgICBzaXplX3Qgc2l6ZSA9IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpOworICAg
IGZvciAoc2l6ZV90IGNvbXBvbmVudCA9IDA7IGNvbXBvbmVudCA8IHNpemU7IGNvbXBvbmVudCsr
KQogICAgIHsKICAgICAgICAgc3RyaW5nICs9ICIwIjsKIAotICAgICAgICBpZiAoY29tcG9uZW50
IDwgdHlwZS5nZXRPYmplY3RTaXplKCkgLSAxKQorICAgICAgICBpZiAoY29tcG9uZW50ICsgMSA8
IHNpemUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHN0cmluZyArPSAiLCAiOwogICAgICAgICB9
CkBAIC0yMzQ3LDEzICsyNzQzLDEzIEBAIHZvaWQgT3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3Io
Y29uc3QgVFQKICAgICAgICAgc3RydWN0dXJlICs9ICJzdHJ1Y3QgIiArIGRlY29yYXRlKG5hbWUp
ICsgIlxuIgogICAgICAgICAgICAgICAgICAgICAgIntcbiI7CiAKLSAgICAgICAgY29uc3QgVFR5
cGVMaXN0ICZmaWVsZHMgPSAqdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgY29uc3QgVEZpZWxk
TGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnN0IFRUeXBlICZmaWVsZCA9ICpmaWVsZHNbaV0udHlwZTsKKyAgICAg
ICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CiAKLSAgICAgICAgICAgIHN0
cnVjdHVyZSArPSAiICAgICIgKyB0eXBlU3RyaW5nKGZpZWxkKSArICIgIiArIGRlY29yYXRlRmll
bGQoZmllbGQuZ2V0RmllbGROYW1lKCksIHR5cGUpICsgYXJyYXlTdHJpbmcoZmllbGQpICsgIjtc
biI7CisgICAgICAgICAgICBzdHJ1Y3R1cmUgKz0gIiAgICAiICsgdHlwZVN0cmluZygqZmllbGQt
PnR5cGUoKSkgKyAiICIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksIHR5cGUpICsgYXJy
YXlTdHJpbmcoKmZpZWxkLT50eXBlKCkpICsgIjtcbiI7CiAgICAgICAgIH0KIAogICAgICAgICBz
dHJ1Y3R1cmUgKz0gIn07XG4iOwpAQCAtMjM2NSw3ICsyNzYxLDcgQEAgdm9pZCBPdXRwdXRITFNM
OjphZGRDb25zdHJ1Y3Rvcihjb25zdCBUVAogCiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQogICAgICAgICB7Ci0gICAgICAgICAgICBjdG9y
UGFyYW1ldGVycy5wdXNoX2JhY2soKmZpZWxkc1tpXS50eXBlKTsKKyAgICAgICAgICAgIGN0b3JQ
YXJhbWV0ZXJzLnB1c2hfYmFjaygqZmllbGRzW2ldLT50eXBlKCkpOwogICAgICAgICB9CiAgICAg
fQogICAgIGVsc2UgaWYgKHBhcmFtZXRlcnMpCkBAIC0yNDU4LDI3ICsyODU0LDMwIEBAIHZvaWQg
T3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFQKICAgICB9CiAgICAgZWxzZQogICAg
IHsKLSAgICAgICAgaW50IHJlbWFpbmluZ0NvbXBvbmVudHMgPSBjdG9yVHlwZS5nZXRPYmplY3RT
aXplKCk7Ci0gICAgICAgIGludCBwYXJhbWV0ZXJJbmRleCA9IDA7CisgICAgICAgIHNpemVfdCBy
ZW1haW5pbmdDb21wb25lbnRzID0gY3RvclR5cGUuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICBz
aXplX3QgcGFyYW1ldGVySW5kZXggPSAwOwogCiAgICAgICAgIHdoaWxlIChyZW1haW5pbmdDb21w
b25lbnRzID4gMCkKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgVFR5cGUgJnBhcmFtZXRl
ciA9IGN0b3JQYXJhbWV0ZXJzW3BhcmFtZXRlckluZGV4XTsKLSAgICAgICAgICAgIGJvb2wgbW9y
ZVBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJJbmRleCA8IChpbnQpY3RvclBhcmFtZXRlcnMuc2l6ZSgp
IC0gMTsKKyAgICAgICAgICAgIGNvbnN0IHNpemVfdCBwYXJhbWV0ZXJTaXplID0gcGFyYW1ldGVy
LmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgICAgIGJvb2wgbW9yZVBhcmFtZXRlcnMgPSBwYXJh
bWV0ZXJJbmRleCArIDEgPCBjdG9yUGFyYW1ldGVycy5zaXplKCk7CiAKICAgICAgICAgICAgIGNv
bnN0cnVjdG9yICs9ICJ4IiArIHN0cihwYXJhbWV0ZXJJbmRleCk7CiAKICAgICAgICAgICAgIGlm
IChwYXJhbWV0ZXIuaXNTY2FsYXIoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBy
ZW1haW5pbmdDb21wb25lbnRzIC09IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHBhcmFtZXRlclNpemUgPD0gcmVtYWluaW5nQ29tcG9uZW50cyk7Cisg
ICAgICAgICAgICAgICAgcmVtYWluaW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXJTaXplOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAocGFyYW1ldGVyLmlzVmVjdG9yKCkpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZ0NvbXBvbmVudHMgPT0g
cGFyYW1ldGVyLmdldE9iamVjdFNpemUoKSB8fCBtb3JlUGFyYW1ldGVycykKKyAgICAgICAgICAg
ICAgICBpZiAocmVtYWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXJTaXplIHx8IG1vcmVQYXJh
bWV0ZXJzKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5n
Q29tcG9uZW50cyAtPSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQocGFyYW1ldGVyU2l6ZSA8PSByZW1haW5pbmdDb21wb25lbnRzKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVtYWluaW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXJTaXplOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChyZW1haW5pbmdDb21wb25l
bnRzIDwgcGFyYW1ldGVyLmdldE5vbWluYWxTaXplKCkpCisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAocmVtYWluaW5nQ29tcG9uZW50cyA8IHN0YXRpY19jYXN0PHNpemVfdD4ocGFyYW1ldGVyLmdl
dE5vbWluYWxTaXplKCkpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChyZW1haW5pbmdDb21wb25lbnRzKQogICAgICAgICAgICAgICAgICAgICB7CkBAIC0y
NDk1LDkgKzI4OTQsMTAgQEAgdm9pZCBPdXRwdXRITFNMOjphZGRDb25zdHJ1Y3Rvcihjb25zdCBU
VAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAocGFyYW1ldGVyLmlzTWF0cml4
KCkgfHwgcGFyYW1ldGVyLmdldFN0cnVjdCgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIEFTU0VSVChyZW1haW5pbmdDb21wb25lbnRzID09IHBhcmFtZXRlci5nZXRPYmplY3RTaXpl
KCkgfHwgbW9yZVBhcmFtZXRlcnMpOworICAgICAgICAgICAgICAgIEFTU0VSVChyZW1haW5pbmdD
b21wb25lbnRzID09IHBhcmFtZXRlclNpemUgfHwgbW9yZVBhcmFtZXRlcnMpOworICAgICAgICAg
ICAgICAgIEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJlbWFpbmluZ0NvbXBvbmVudHMpOwogICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFy
YW1ldGVyLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25l
bnRzIC09IHBhcmFtZXRlclNpemU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIFVO
UkVBQ0hBQkxFKCk7CiAKQEAgLTI1MzQsMTcgKzI5MzQsMTcgQEAgY29uc3QgQ29uc3RhbnRVbmlv
biAqT3V0cHV0SExTTDo6d3JpdGVDbwogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0g
RWJ0U3RydWN0KQogICAgIHsKLSAgICAgICAgb3V0IDw8IHN0cnVjdExvb2t1cCh0eXBlLmdldFR5
cGVOYW1lKCkpICsgIl9jdG9yKCI7CisgICAgICAgIG91dCA8PCBzdHJ1Y3RMb29rdXAodHlwZS5n
ZXRTdHJ1Y3QoKS0+bmFtZSgpKSArICJfY3RvcigiOwogICAgICAgICAKLSAgICAgICAgY29uc3Qg
VFR5cGVMaXN0ICpzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOworICAgICAgICBjb25zdCBU
RmllbGRMaXN0ICZmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKIAotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyBpKyspCisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb25zdCBUVHlwZSAqZmllbGRUeXBlID0gKCpzdHJ1Y3R1cmUpW2ldLnR5cGU7
CisgICAgICAgICAgICBjb25zdCBUVHlwZSAqZmllbGRUeXBlID0gZmllbGRzW2ldLT50eXBlKCk7
CiAKICAgICAgICAgICAgIGNvbnN0VW5pb24gPSB3cml0ZUNvbnN0YW50VW5pb24oKmZpZWxkVHlw
ZSwgY29uc3RVbmlvbik7CiAKLSAgICAgICAgICAgIGlmIChpICE9IHN0cnVjdHVyZS0+c2l6ZSgp
IC0gMSkKKyAgICAgICAgICAgIGlmIChpICE9IGZpZWxkcy5zaXplKCkgLSAxKQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIG91dCA8PCAiLCAiOwogICAgICAgICAgICAgfQpAQCAtMjU1
NCw3ICsyOTU0LDcgQEAgY29uc3QgQ29uc3RhbnRVbmlvbiAqT3V0cHV0SExTTDo6d3JpdGVDbwog
ICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBpbnQgc2l6ZSA9IHR5cGUuZ2V0T2JqZWN0
U2l6ZSgpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwogICAg
ICAgICBib29sIHdyaXRlVHlwZSA9IHNpemUgPiAxOwogICAgICAgICAKICAgICAgICAgaWYgKHdy
aXRlVHlwZSkKQEAgLTI1NjIsNyArMjk2Miw3IEBAIGNvbnN0IENvbnN0YW50VW5pb24gKk91dHB1
dEhMU0w6OndyaXRlQ28KICAgICAgICAgICAgIG91dCA8PCB0eXBlU3RyaW5nKHR5cGUpIDw8ICIo
IjsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrLCBj
b25zdFVuaW9uKyspCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrLCBj
b25zdFVuaW9uKyspCiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaCAoY29uc3RVbmlvbi0+
Z2V0VHlwZSgpKQogICAgICAgICAgICAgewpAQCAtMjY0MSwxMSArMzA0MSw3IEBAIFRTdHJpbmcg
T3V0cHV0SExTTDo6ZGVjb3JhdGUoY29uc3QgVFN0cmkKIAogVFN0cmluZyBPdXRwdXRITFNMOjpk
ZWNvcmF0ZVVuaWZvcm0oY29uc3QgVFN0cmluZyAmc3RyaW5nLCBjb25zdCBUVHlwZSAmdHlwZSkK
IHsKLSAgICBpZiAodHlwZS5pc0FycmF5KCkpCi0gICAgewotICAgICAgICByZXR1cm4gImFyXyIg
KyBzdHJpbmc7ICAgLy8gQWxsb3dzIGlkZW50aWZ5aW5nIGFycmF5cyBvZiBzaXplIDEKLSAgICB9
Ci0gICAgZWxzZSBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTYW1wbGVyRXh0ZXJuYWxP
RVMpCisgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U2FtcGxlckV4dGVybmFsT0VT
KQogICAgIHsKICAgICAgICAgcmV0dXJuICJleF8iICsgc3RyaW5nOwogICAgIH0KQEAgLTI2NTUs
MTEgKzMwNTEsMjAyIEBAIFRTdHJpbmcgT3V0cHV0SExTTDo6ZGVjb3JhdGVVbmlmb3JtKGNvbnMK
IAogVFN0cmluZyBPdXRwdXRITFNMOjpkZWNvcmF0ZUZpZWxkKGNvbnN0IFRTdHJpbmcgJnN0cmlu
ZywgY29uc3QgVFR5cGUgJnN0cnVjdHVyZSkKIHsKLSAgICBpZiAoc3RydWN0dXJlLmdldFR5cGVO
YW1lKCkuY29tcGFyZSgwLCAzLCAiZ2xfIikgIT0gMCkKKyAgICBpZiAoc3RydWN0dXJlLmdldFN0
cnVjdCgpLT5uYW1lKCkuY29tcGFyZSgwLCAzLCAiZ2xfIikgIT0gMCkKICAgICB7CiAgICAgICAg
IHJldHVybiBkZWNvcmF0ZShzdHJpbmcpOwogICAgIH0KIAogICAgIHJldHVybiBzdHJpbmc7CiB9
CisKK1RTdHJpbmcgT3V0cHV0SExTTDo6cmVnaXN0ZXJTdHJpbmcoVEludGVybVN5bWJvbCAqb3Bl
cmFuZCkKK3sKKyAgICBBU1NFUlQob3BlcmFuZC0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxVW5pZm9y
bSk7CisKKyAgICBpZiAoSXNTYW1wbGVyKG9wZXJhbmQtPmdldEJhc2ljVHlwZSgpKSkKKyAgICB7
CisgICAgICAgIHJldHVybiAicyIgKyBzdHIoc2FtcGxlclJlZ2lzdGVyKG9wZXJhbmQpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gImMiICsgc3RyKHVuaWZvcm1SZWdpc3RlcihvcGVyYW5kKSk7Cit9
CisKK2ludCBPdXRwdXRITFNMOjpzYW1wbGVyUmVnaXN0ZXIoVEludGVybVN5bWJvbCAqc2FtcGxl
cikKK3sKKyAgICBjb25zdCBUVHlwZSAmdHlwZSA9IHNhbXBsZXItPmdldFR5cGUoKTsKKyAgICBB
U1NFUlQoSXNTYW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKTsKKworICAgIGludCBpbmRleCA9
IG1TYW1wbGVyUmVnaXN0ZXI7CisgICAgbVNhbXBsZXJSZWdpc3RlciArPSBzYW1wbGVyLT50b3Rh
bFJlZ2lzdGVyQ291bnQoKTsKKworICAgIGRlY2xhcmVVbmlmb3JtKHR5cGUsIHNhbXBsZXItPmdl
dFN5bWJvbCgpLCBpbmRleCk7CisKKyAgICByZXR1cm4gaW5kZXg7Cit9CisKK2ludCBPdXRwdXRI
TFNMOjp1bmlmb3JtUmVnaXN0ZXIoVEludGVybVN5bWJvbCAqdW5pZm9ybSkKK3sKKyAgICBjb25z
dCBUVHlwZSAmdHlwZSA9IHVuaWZvcm0tPmdldFR5cGUoKTsKKyAgICBBU1NFUlQoIUlzU2FtcGxl
cih0eXBlLmdldEJhc2ljVHlwZSgpKSk7CisKKyAgICBpbnQgaW5kZXggPSBtVW5pZm9ybVJlZ2lz
dGVyOworICAgIG1Vbmlmb3JtUmVnaXN0ZXIgKz0gdW5pZm9ybS0+dG90YWxSZWdpc3RlckNvdW50
KCk7CisKKyAgICBkZWNsYXJlVW5pZm9ybSh0eXBlLCB1bmlmb3JtLT5nZXRTeW1ib2woKSwgaW5k
ZXgpOworCisgICAgcmV0dXJuIGluZGV4OworfQorCit2b2lkIE91dHB1dEhMU0w6OmRlY2xhcmVV
bmlmb3JtKGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBUU3RyaW5nICZuYW1lLCBpbnQgaW5kZXgp
Cit7CisgICAgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKworICAg
IGlmICghc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgbUFjdGl2ZVVuaWZvcm1zLnB1c2hfYmFj
ayhVbmlmb3JtKGdsVmFyaWFibGVUeXBlKHR5cGUpLCBnbFZhcmlhYmxlUHJlY2lzaW9uKHR5cGUp
LCBuYW1lLmNfc3RyKCksIHR5cGUuZ2V0QXJyYXlTaXplKCksIGluZGV4KSk7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IHN0cnVjdHVy
ZS0+ZmllbGRzKCk7CisKKyAgICAgICAgaWYgKHR5cGUuaXNBcnJheSgpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpbnQgZWxlbWVudEluZGV4ID0gaW5kZXg7CisKKyAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgdHlwZS5nZXRBcnJheVNpemUoKTsgaSsrKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZmllbGRzLnNpemUoKTsgaisr
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJmZp
ZWxkVHlwZSA9ICpmaWVsZHNbal0tPnR5cGUoKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN0cmluZyB1bmlmb3JtTmFtZSA9IG5hbWUgKyAiWyIgKyBzdHIoaSkgKyAiXS4iICsgZmllbGRz
W2pdLT5uYW1lKCk7CisgICAgICAgICAgICAgICAgICAgIGRlY2xhcmVVbmlmb3JtKGZpZWxkVHlw
ZSwgdW5pZm9ybU5hbWUsIGVsZW1lbnRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGVsZW1l
bnRJbmRleCArPSBmaWVsZFR5cGUudG90YWxSZWdpc3RlckNvdW50KCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgaW50IGZpZWxkSW5kZXggPSBpbmRleDsKKworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY29uc3QgVFR5cGUgJmZpZWxkVHlwZSA9ICpmaWVsZHNbaV0tPnR5cGUoKTsK
KyAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nIHVuaWZvcm1OYW1lID0gbmFtZSArICIuIiAr
IGZpZWxkc1tpXS0+bmFtZSgpOworICAgICAgICAgICAgICAgIGRlY2xhcmVVbmlmb3JtKGZpZWxk
VHlwZSwgdW5pZm9ybU5hbWUsIGZpZWxkSW5kZXgpOworICAgICAgICAgICAgICAgIGZpZWxkSW5k
ZXggKz0gZmllbGRUeXBlLnRvdGFsUmVnaXN0ZXJDb3VudCgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQorCitHTGVudW0gT3V0cHV0SExTTDo6Z2xWYXJpYWJsZVR5cGUoY29u
c3QgVFR5cGUgJnR5cGUpCit7CisgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0Rmxv
YXQpCisgICAgeworICAgICAgICBpZiAodHlwZS5pc1NjYWxhcigpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gR0xfRkxPQVQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAodHlw
ZS5pc1ZlY3RvcigpKQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2godHlwZS5nZXROb21p
bmFsU2l6ZSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBH
TF9GTE9BVF9WRUMyOworICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBHTF9GTE9BVF9WRUMz
OworICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBHTF9GTE9BVF9WRUM0OworICAgICAgICAg
ICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGVsc2UgaWYgKHR5cGUuaXNNYXRyaXgoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
c3dpdGNoKHR5cGUuZ2V0Tm9taW5hbFNpemUoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgY2FzZSAyOiByZXR1cm4gR0xfRkxPQVRfTUFUMjsKKyAgICAgICAgICAgICAgY2FzZSAzOiBy
ZXR1cm4gR0xfRkxPQVRfTUFUMzsKKyAgICAgICAgICAgICAgY2FzZSA0OiByZXR1cm4gR0xfRkxP
QVRfTUFUNDsKKyAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorICAg
IGVsc2UgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KQorICAgIHsKKyAgICAgICAg
aWYgKHR5cGUuaXNTY2FsYXIoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEdMX0lO
VDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh0eXBlLmlzVmVjdG9yKCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHN3aXRjaCh0eXBlLmdldE5vbWluYWxTaXplKCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIEdMX0lOVF9WRUMyOworICAgICAgICAg
ICAgICBjYXNlIDM6IHJldHVybiBHTF9JTlRfVkVDMzsKKyAgICAgICAgICAgICAgY2FzZSA0OiBy
ZXR1cm4gR0xfSU5UX1ZFQzQ7CisgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwor
ICAgIH0KKyAgICBlbHNlIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidEJvb2wpCisgICAg
eworICAgICAgICBpZiAodHlwZS5pc1NjYWxhcigpKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gR0xfQk9PTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh0eXBlLmlzVmVjdG9y
KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCh0eXBlLmdldE5vbWluYWxTaXplKCkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIEdMX0JPT0xfVkVD
MjsKKyAgICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gR0xfQk9PTF9WRUMzOworICAgICAgICAg
ICAgICBjYXNlIDQ6IHJldHVybiBHTF9CT09MX1ZFQzQ7CisgICAgICAgICAgICAgIGRlZmF1bHQ6
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBV
TlJFQUNIQUJMRSgpOworICAgIH0KKyAgICBlbHNlIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09
IEVidFNhbXBsZXIyRCkKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9TQU1QTEVSXzJEOworICAg
IH0KKyAgICBlbHNlIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFNhbXBsZXJDdWJlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX1NBTVBMRVJfQ1VCRTsKKyAgICB9CisgICAgZWxzZSBV
TlJFQUNIQUJMRSgpOworCisgICAgcmV0dXJuIEdMX05PTkU7Cit9CisKK0dMZW51bSBPdXRwdXRI
TFNMOjpnbFZhcmlhYmxlUHJlY2lzaW9uKGNvbnN0IFRUeXBlICZ0eXBlKQoreworICAgIGlmICh0
eXBlLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0
eXBlLmdldFByZWNpc2lvbigpKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBFYnBIaWdoOiAg
IHJldHVybiBHTF9ISUdIX0ZMT0FUOworICAgICAgICAgIGNhc2UgRWJwTWVkaXVtOiByZXR1cm4g
R0xfTUVESVVNX0ZMT0FUOworICAgICAgICAgIGNhc2UgRWJwTG93OiAgICByZXR1cm4gR0xfTE9X
X0ZMT0FUOworICAgICAgICAgIGNhc2UgRWJwVW5kZWZpbmVkOgorICAgICAgICAgICAgLy8gU2hv
dWxkIGJlIGRlZmluZWQgYXMgdGhlIGRlZmF1bHQgcHJlY2lzaW9uIGJ5IHRoZSBwYXJzZXIKKyAg
ICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQorICAgIGVs
c2UgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KQorICAgIHsKKyAgICAgICAgc3dp
dGNoICh0eXBlLmdldFByZWNpc2lvbigpKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBFYnBI
aWdoOiAgIHJldHVybiBHTF9ISUdIX0lOVDsKKyAgICAgICAgICBjYXNlIEVicE1lZGl1bTogcmV0
dXJuIEdMX01FRElVTV9JTlQ7CisgICAgICAgICAgY2FzZSBFYnBMb3c6ICAgIHJldHVybiBHTF9M
T1dfSU5UOworICAgICAgICAgIGNhc2UgRWJwVW5kZWZpbmVkOgorICAgICAgICAgICAgLy8gU2hv
dWxkIGJlIGRlZmluZWQgYXMgdGhlIGRlZmF1bHQgcHJlY2lzaW9uIGJ5IHRoZSBwYXJzZXIKKyAg
ICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gT3RoZXIgdHlwZXMgKGJvb2xlYW4sIHNhbXBsZXIpIGRvbid0IGhhdmUgYSBwcmVjaXNpb24K
KyAgICByZXR1cm4gR0xfTk9ORTsKK30KKwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5oCShyZXZpc2lvbiAxNTI5NzkpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEy
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KIC8vCkBAIC05LDkgKzksMTQgQEAKIAogI2luY2x1ZGUgPGxpc3Q+CiAjaW5jbHVkZSA8c2V0
PgorI2luY2x1ZGUgPG1hcD4KKworI2RlZmluZSBHTF9BUElDQUxMCisjaW5jbHVkZSA8R0xFUzIv
Z2wyLmg+CiAKICNpbmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKICNpbmNsdWRlICJj
b21waWxlci9QYXJzZUhlbHBlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1VuaWZvcm0uaCIKIAog
bmFtZXNwYWNlIHNoCiB7CkBAIC0yMCwxNCArMjUsMTYgQEAgY2xhc3MgVW5mb2xkU2hvcnRDaXJj
dWl0OwogY2xhc3MgT3V0cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7CiAgIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBPdXRwdXRITFNMKFRQYXJzZUNvbnRleHQgJmNvbnRleHQpOwor
ICAgIE91dHB1dEhMU0woVFBhcnNlQ29udGV4dCAmY29udGV4dCwgY29uc3QgU2hCdWlsdEluUmVz
b3VyY2VzJiByZXNvdXJjZXMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5cGUpOwogICAgIH5PdXRw
dXRITFNMKCk7CiAKICAgICB2b2lkIG91dHB1dCgpOwogCiAgICAgVEluZm9TaW5rQmFzZSAmZ2V0
Qm9keVN0cmVhbSgpOworICAgIGNvbnN0IEFjdGl2ZVVuaWZvcm1zICZnZXRVbmlmb3JtcygpOwog
CiAgICAgVFN0cmluZyB0eXBlU3RyaW5nKGNvbnN0IFRUeXBlICZ0eXBlKTsKKyAgICBUU3RyaW5n
IHRleHR1cmVTdHJpbmcoY29uc3QgVFR5cGUgJnR5cGUpOwogICAgIHN0YXRpYyBUU3RyaW5nIHF1
YWxpZmllclN0cmluZyhUUXVhbGlmaWVyIHF1YWxpZmllcik7CiAgICAgc3RhdGljIFRTdHJpbmcg
YXJyYXlTdHJpbmcoY29uc3QgVFR5cGUgJnR5cGUpOwogICAgIHN0YXRpYyBUU3RyaW5nIGluaXRp
YWxpemVyKGNvbnN0IFRUeXBlICZ0eXBlKTsKQEAgLTY0LDYgKzcxLDcgQEAgY2xhc3MgT3V0cHV0
SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVycwogICAgIFRTdHJpbmcgc3RydWN0TG9va3VwKGNv
bnN0IFRTdHJpbmcgJnR5cGVOYW1lKTsKIAogICAgIFRQYXJzZUNvbnRleHQgJm1Db250ZXh0Owor
ICAgIGNvbnN0IFNoU2hhZGVyT3V0cHV0IG1PdXRwdXRUeXBlOwogICAgIFVuZm9sZFNob3J0Q2ly
Y3VpdCAqbVVuZm9sZFNob3J0Q2lyY3VpdDsKICAgICBib29sIG1JbnNpZGVGdW5jdGlvbjsKIApA
QCAtNzIsOSArODAsMTAgQEAgY2xhc3MgT3V0cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVy
cwogICAgIFRJbmZvU2lua0Jhc2UgbUJvZHk7CiAgICAgVEluZm9TaW5rQmFzZSBtRm9vdGVyOwog
Ci0gICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1SZWZlcmVuY2VkVW5pZm9ybXM7Ci0gICAgc3Rk
OjpzZXQ8c3RkOjpzdHJpbmc+IG1SZWZlcmVuY2VkQXR0cmlidXRlczsKLSAgICBzdGQ6OnNldDxz
dGQ6OnN0cmluZz4gbVJlZmVyZW5jZWRWYXJ5aW5nczsKKyAgICB0eXBlZGVmIHN0ZDo6bWFwPFRT
dHJpbmcsIFRJbnRlcm1TeW1ib2wqPiBSZWZlcmVuY2VkU3ltYm9sczsKKyAgICBSZWZlcmVuY2Vk
U3ltYm9scyBtUmVmZXJlbmNlZFVuaWZvcm1zOworICAgIFJlZmVyZW5jZWRTeW1ib2xzIG1SZWZl
cmVuY2VkQXR0cmlidXRlczsKKyAgICBSZWZlcmVuY2VkU3ltYm9scyBtUmVmZXJlbmNlZFZhcnlp
bmdzOwogCiAgICAgLy8gUGFyYW1ldGVycyBkZXRlcm1pbmluZyB3aGF0IGdvZXMgaW4gdGhlIGhl
YWRlciBvdXRwdXQKICAgICBib29sIG1Vc2VzVGV4dHVyZTJEOwpAQCAtOTIsMTEgKzEwMSwxNCBA
QCBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAgICAgYm9vbCBtVXNl
c1RleHR1cmUyRFByb2pMb2QwX2JpYXM7CiAgICAgYm9vbCBtVXNlc1RleHR1cmVDdWJlTG9kMDsK
ICAgICBib29sIG1Vc2VzVGV4dHVyZUN1YmVMb2QwX2JpYXM7CisgICAgYm9vbCBtVXNlc0ZyYWdD
b2xvcjsKKyAgICBib29sIG1Vc2VzRnJhZ0RhdGE7CiAgICAgYm9vbCBtVXNlc0RlcHRoUmFuZ2U7
CiAgICAgYm9vbCBtVXNlc0ZyYWdDb29yZDsKICAgICBib29sIG1Vc2VzUG9pbnRDb29yZDsKICAg
ICBib29sIG1Vc2VzRnJvbnRGYWNpbmc7CiAgICAgYm9vbCBtVXNlc1BvaW50U2l6ZTsKKyAgICBi
b29sIG1Vc2VzRnJhZ0RlcHRoOwogICAgIGJvb2wgbVVzZXNYb3I7CiAgICAgYm9vbCBtVXNlc01v
ZDE7CiAgICAgYm9vbCBtVXNlc01vZDJ2OwpAQCAtMTI2LDYgKzEzOCw4IEBAIGNsYXNzIE91dHB1
dEhMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnMKICAgICBib29sIG1Vc2VzQXRhbjJfMzsKICAg
ICBib29sIG1Vc2VzQXRhbjJfNDsKIAorICAgIGludCBtTnVtUmVuZGVyVGFyZ2V0czsKKwogICAg
IHR5cGVkZWYgc3RkOjpzZXQ8VFN0cmluZz4gQ29uc3RydWN0b3JzOwogICAgIENvbnN0cnVjdG9y
cyBtQ29uc3RydWN0b3JzOwogCkBAIC0xNDYsNiArMTYwLDE4IEBAIGNsYXNzIE91dHB1dEhMU0wg
OiBwdWJsaWMgVEludGVybVRyYXZlcnMKICAgICBib29sIG1JbnNpZGVEaXNjb250aW51b3VzTG9v
cDsKIAogICAgIFRJbnRlcm1TeW1ib2wgKm1FeGNlc3NpdmVMb29wSW5kZXg7CisKKyAgICBpbnQg
bVVuaWZvcm1SZWdpc3RlcjsKKyAgICBpbnQgbVNhbXBsZXJSZWdpc3RlcjsKKworICAgIFRTdHJp
bmcgcmVnaXN0ZXJTdHJpbmcoVEludGVybVN5bWJvbCAqb3BlcmFuZCk7CisgICAgaW50IHNhbXBs
ZXJSZWdpc3RlcihUSW50ZXJtU3ltYm9sICpzYW1wbGVyKTsKKyAgICBpbnQgdW5pZm9ybVJlZ2lz
dGVyKFRJbnRlcm1TeW1ib2wgKnVuaWZvcm0pOworICAgIHZvaWQgZGVjbGFyZVVuaWZvcm0oY29u
c3QgVFR5cGUgJnR5cGUsIGNvbnN0IFRTdHJpbmcgJm5hbWUsIGludCBpbmRleCk7CisgICAgc3Rh
dGljIEdMZW51bSBnbFZhcmlhYmxlVHlwZShjb25zdCBUVHlwZSAmdHlwZSk7CisgICAgc3RhdGlj
IEdMZW51bSBnbFZhcmlhYmxlUHJlY2lzaW9uKGNvbnN0IFRUeXBlICZ0eXBlKTsKKworICAgIEFj
dGl2ZVVuaWZvcm1zIG1BY3RpdmVVbmlmb3JtczsKIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNwcAkocmV2
aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bh
cnNlSGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjIsNyArMjIsNyBAQAogLy8gTG9vayBhdCBh
ICcuJyBmaWVsZCBzZWxlY3RvciBzdHJpbmcgYW5kIGNoYW5nZSBpdCBpbnRvIG9mZnNldHMKIC8v
IGZvciBhIHZlY3Rvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRz
KGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCB2ZWNTaXplLCBUVmVjdG9yRmllbGRzJiBm
aWVsZHMsIGludCBsaW5lKQorYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJzZVZlY3RvckZpZWxkcyhj
b25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYgZmll
bGRzLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGZpZWxkcy5udW0gPSAoaW50KSBj
b21wU3RyaW5nLnNpemUoKTsKICAgICBpZiAoZmllbGRzLm51bSA+IDQpIHsKQEAgLTExNSw3ICsx
MTUsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKGNvCiAvLyBMb29r
IGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0cmluZyBhbmQgY2hhbmdlIGl0IGludG8gb2Zmc2V0
cwogLy8gZm9yIGEgbWF0cml4LgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VNYXRyaXhG
aWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IG1hdFNpemUsIFRNYXRyaXhGaWVs
ZHMmIGZpZWxkcywgaW50IGxpbmUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4Rmll
bGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCBtYXRTaXplLCBUTWF0cml4RmllbGRz
JiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgZmllbGRzLndob2xlUm93
ID0gZmFsc2U7CiAgICAgZmllbGRzLndob2xlQ29sID0gZmFsc2U7CkBAIC0xNzUsMjIgKzE3NSwy
NCBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnJlY292ZXIoKQogLy8KIC8vIFVzZWQgYnkgZmxleC9i
aXNvbiB0byBvdXRwdXQgYWxsIHN5bnRheCBhbmQgcGFyc2luZyBlcnJvcnMuCiAvLwotdm9pZCBU
UGFyc2VDb250ZXh0OjplcnJvcihUU291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29udGV4dDo6
ZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvKQogewogICAgIHBwOjpTb3VyY2VMb2NhdGlv
biBzcmNMb2M7Ci0gICAgRGVjb2RlU291cmNlTG9jKGxvYywgJnNyY0xvYy5maWxlLCAmc3JjTG9j
LmxpbmUpOworICAgIHNyY0xvYy5maWxlID0gbG9jLmZpcnN0X2ZpbGU7CisgICAgc3JjTG9jLmxp
bmUgPSBsb2MuZmlyc3RfbGluZTsKICAgICBkaWFnbm9zdGljcy53cml0ZUluZm8ocHA6OkRpYWdu
b3N0aWNzOjpFUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFzb24s
IHRva2VuLCBleHRyYUluZm8pOwogCiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6d2FybmluZyhU
U291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29udGV4dDo6d2FybmluZyhjb25zdCBUU291cmNl
TG9jJiBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVhc29u
LCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBleHRyYUluZm8pIHsKICAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwotICAgIERl
Y29kZVNvdXJjZUxvYyhsb2MsICZzcmNMb2MuZmlsZSwgJnNyY0xvYy5saW5lKTsKKyAgICBzcmNM
b2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOworICAgIHNyY0xvYy5saW5lID0gbG9jLmZpcnN0X2xp
bmU7CiAgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9zdGljczo6V0FSTklORywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFzb24sIHRva2VuLCBleHRyYUlu
Zm8pOwogfQpAQCAtMjAzLDcgKzIwNSw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dHJhY2UoY29u
c3QgY2hhciogc3QKIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBwbGFjZXMgYXNz
aWdubWVudHMgZG9uJ3Qgd29yay4KIC8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OmFzc2lnbkVycm9y
KGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQor
dm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBj
b25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAgIHN0ZDo6
c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgImNh
bm5vdCBjb252ZXJ0IGZyb20gJyIgPDwgcmlnaHQgPDwgIicgdG8gJyIgPDwgbGVmdCA8PCAiJyI7
CkBAIC0yMTQsNyArMjE2LDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcihpbnQg
bGluZQogLy8KIC8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxsIHBsYWNlcyB1bmFyeSBvcGVy
YXRpb25zIGRvbid0IHdvcmsuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0Ojp1bmFyeU9wRXJyb3Io
aW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpCit2b2lkIFRQYXJzZUNv
bnRleHQ6OnVuYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBv
cCwgVFN0cmluZyBvcGVyYW5kKQogewogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0
cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBvcCA8PCAi
JyBleGlzdHMgdGhhdCB0YWtlcyBhbiBvcGVyYW5kIG9mIHR5cGUgIiA8PCBvcGVyYW5kIApAQCAt
MjI2LDcgKzIyOCw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKGludCBsaW4K
IC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBiaW5hcnkgb3BlcmF0aW9ucyBkb24n
dCB3b3JrLgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihpbnQgbGluZSwg
Y29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCkKK3ZvaWQgVFBhcnNl
Q29udGV4dDo6YmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFy
KiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlv
biAnIiA8PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhIGxlZnQtaGFuZCBvcGVyYW5kIG9m
IHR5cGUgJyIgPDwgbGVmdCAKQEAgLTIzNSw3ICsyMzcsNyBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6
OmJpbmFyeU9wRXJyb3IoaW50IGxpCiAgICAgZXJyb3IobGluZSwgIiB3cm9uZyBvcGVyYW5kIHR5
cGVzICIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7IAogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6
OnByZWNpc2lvbkVycm9yQ2hlY2soaW50IGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFz
aWNUeXBlIHR5cGUpeworYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5
cGUpewogICAgIGlmICghY2hlY2tzUHJlY2lzaW9uRXJyb3JzKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgc3dpdGNoKCB0eXBlICl7CkBAIC0yNjMsNyArMjY1LDcgQEAgYm9vbCBUUGFyc2VD
b250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUg
d2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhp
bnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRlcm1UeXBlZCogbm9kZSkKK2Jvb2wgVFBhcnNl
Q29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBj
aGFyKiBvcCwgVEludGVybVR5cGVkKiBub2RlKQogewogICAgIFRJbnRlcm1TeW1ib2wqIHN5bU5v
ZGUgPSBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsKICAgICBUSW50ZXJtQmluYXJ5KiBiaW5hcnlO
b2RlID0gbm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7CkBAIC0yODYsNyArMjg4LDcgQEAgYm9vbCBU
UGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGludAogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBwID0gYWdnck5vZGUt
PmdldFNlcXVlbmNlKCkuYmVnaW4oKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHAgIT0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7IHArKykg
ewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSAoKnApLT5nZXRBc1R5cGVkKCktPmdl
dEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsK
KyAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gKCpwKS0+Z2V0QXNUeXBlZCgpLT5nZXRB
c0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgICAgICBvZmZz
ZXRbdmFsdWVdKys7ICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldFt2YWx1ZV0g
PiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFsdWUgb2Yg
c3dpenpsZSBjYW5ub3QgaGF2ZSBkdXBsaWNhdGUgY29tcG9uZW50cyIsIG9wKTsKQEAgLTMxNyw3
ICszMTksNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soaW50CiAgICAg
Y2FzZSBFdnFBdHRyaWJ1dGU6ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYW4gYXR0cmli
dXRlIjsgICBicmVhazsKICAgICBjYXNlIEV2cVVuaWZvcm06ICAgICAgICBtZXNzYWdlID0gImNh
bid0IG1vZGlmeSBhIHVuaWZvcm0iOyAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxVmFyeWluZ0lu
OiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGEgdmFyeWluZyI7ICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBFdnFJbnB1dDogICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYW4gaW5w
dXQiOyAgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb29yZDogICAgICBtZXNzYWdlID0g
ImNhbid0IG1vZGlmeSBnbF9GcmFnQ29vcmQiOyAgIGJyZWFrOwogICAgIGNhc2UgRXZxRnJvbnRG
YWNpbmc6ICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX0Zyb250RmFjaW5nIjsgYnJlYWs7
CiAgICAgY2FzZSBFdnFQb2ludENvb3JkOiAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xf
UG9pbnRDb29yZCI7ICBicmVhazsKQEAgLTQwOSw3ICs0MTAsNyBAQCBib29sIFRQYXJzZUNvbnRl
eHQ6OmludGVnZXJFcnJvckNoZWNrKFRJCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3YXMg
YW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpnbG9iYWxFcnJvckNoZWNrKGludCBs
aW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pCitib29sIFRQYXJzZUNvbnRleHQ6
Omdsb2JhbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgYm9vbCBnbG9iYWwsIGNv
bnN0IGNoYXIqIHRva2VuKQogewogICAgIGlmIChnbG9iYWwpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTQyOCw3ICs0MjksNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVycm9yQ2hl
Y2soaW50CiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1i
b29sIFRQYXJzZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0
cmluZyYgaWRlbnRpZmllcikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIpCiB7CiAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc2VydmVkRXJyTXNnID0gInJlc2VydmVkIGJ1aWx0LWlu
IG5hbWUiOwogICAgIGlmICghc3ltYm9sVGFibGUuYXRCdWlsdEluTGV2ZWwoKSkgewpAQCAtNDY2
LDcgKzQ2Nyw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNrKGkKIC8v
CiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGluIGNvbnN0cnVjdGlvbi4K
IC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQgbGluZSwg
VEludGVybU5vZGUqIG5vZGUsIFRGdW5jdGlvbiYgZnVuY3Rpb24sIFRPcGVyYXRvciBvcCwgVFR5
cGUqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogbm9kZSwgVEZ1bmN0aW9uJiBmdW5jdGlv
biwgVE9wZXJhdG9yIG9wLCBUVHlwZSogdHlwZSkKIHsKICAgICAqdHlwZSA9IGZ1bmN0aW9uLmdl
dFJldHVyblR5cGUoKTsKIApAQCAtNDg3LDcgKzQ4OCw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
Y29uc3RydWN0b3JFcnJvckNoZWMKICAgICAvLyBhZ2FpbiwgdGhlcmUgaXMgYW4gZXh0cmEgYXJn
dW1lbnQsIHNvICdvdmVyZnVsbCcgd2lsbCBiZWNvbWUgdHJ1ZS4KICAgICAvLwogCi0gICAgaW50
IHNpemUgPSAwOworICAgIHNpemVfdCBzaXplID0gMDsKICAgICBib29sIGNvbnN0VHlwZSA9IHRy
dWU7CiAgICAgYm9vbCBmdWxsID0gZmFsc2U7CiAgICAgYm9vbCBvdmVyRnVsbCA9IGZhbHNlOwpA
QCAtNTM0LDcgKzUzNSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JFcnJvckNo
ZWMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGlmIChvcCA9PSBFT3BD
b25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXkoKSAmJiBpbnQodHlwZS0+Z2V0U3RydWN0
KCktPnNpemUoKSkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSB7CisgICAgaWYgKG9wID09
IEVPcENvbnN0cnVjdFN0cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgpICYmIGludCh0eXBlLT5nZXRT
dHJ1Y3QoKS0+ZmllbGRzKCkuc2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkpIHsK
ICAgICAgICAgZXJyb3IobGluZSwgIk51bWJlciBvZiBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGRv
ZXMgbm90IG1hdGNoIHRoZSBudW1iZXIgb2Ygc3RydWN0dXJlIGZpZWxkcyIsICJjb25zdHJ1Y3Rv
ciIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC01NjgsNyArNTY5LDcgQEAgYm9v
bCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlYwogLy8KIC8vIHJldHVybnMgdHJ1
ZSBpbiBjYXNlIG9mIGFuIGVycm9yCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JD
aGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgVFB1YmxpY1R5
cGUmIHB1YlR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFRQdWJsaWNU
eXBlJiBwdWJUeXBlKQogewogICAgIGlmIChwdWJUeXBlLnR5cGUgPT0gRWJ0Vm9pZCkgewogICAg
ICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCBpZGVudGlmaWVy
LmNfc3RyKCkpOwpAQCAtNTgyLDcgKzU4Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6dm9pZEVy
cm9yQ2hlY2soaW50IGwKIC8vCiAvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBlcnJvcgog
Ly8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soaW50IGxpbmUsIGNvbnN0IFRJ
bnRlcm1UeXBlZCogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soY29u
c3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEludGVybVR5cGVkKiB0eXBlKQogewogICAgIGlm
ICh0eXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRCb29sIHx8IHR5cGUtPmlzQXJyYXkoKSB8fCB0
eXBlLT5pc01hdHJpeCgpIHx8IHR5cGUtPmlzVmVjdG9yKCkpIHsKICAgICAgICAgZXJyb3IobGlu
ZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3RlZCIsICIiKTsKQEAgLTU5Niw3ICs1OTcsNyBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGludCBsCiAvLwogLy8gcmV0dXJu
cyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xF
cnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpCitib29sIFRQYXJz
ZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQ
dWJsaWNUeXBlJiBwVHlwZSkKIHsKICAgICBpZiAocFR5cGUudHlwZSAhPSBFYnRCb29sIHx8IHBU
eXBlLmFycmF5IHx8IHBUeXBlLm1hdHJpeCB8fCAocFR5cGUuc2l6ZSA+IDEpKSB7CiAgICAgICAg
IGVycm9yKGxpbmUsICJib29sZWFuIGV4cHJlc3Npb24gZXhwZWN0ZWQiLCAiIik7CkBAIC02MDYs
NyArNjA3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhpbnQgbAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJyb3JDaGVj
ayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiByZWFzb24p
Citib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciogcmVhc29uKQogewog
ICAgIGlmIChwVHlwZS50eXBlID09IEVidFN0cnVjdCkgewogICAgICAgICBpZiAoY29udGFpbnNT
YW1wbGVyKCpwVHlwZS51c2VyRGVmKSkgewpAQCAtNjI1LDcgKzYyNiw3IEBAIGJvb2wgVFBhcnNl
Q29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2soaW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgVFBhcnNlQ29udGV4dDo6c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGluZSwgY29u
c3QgVFB1YmxpY1R5cGUmIHBUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0OjpzdHJ1Y3RRdWFsaWZp
ZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBw
VHlwZSkKIHsKICAgICBpZiAoKHBUeXBlLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwgcFR5
cGUucXVhbGlmaWVyID09IEV2cVZhcnlpbmdPdXQgfHwgcFR5cGUucXVhbGlmaWVyID09IEV2cUF0
dHJpYnV0ZSkgJiYKICAgICAgICAgcFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpIHsKQEAgLTY0MCw3
ICs2NDEsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9yCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJF
cnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgY29uc3QgVFR5cGUmIHR5
cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBjb25zdCBUVHlwZSYgdHlw
ZSkKIHsKICAgICBpZiAoKHF1YWxpZmllciA9PSBFdnFPdXQgfHwgcXVhbGlmaWVyID09IEV2cUlu
T3V0KSAmJiAKICAgICAgICAgICAgICB0eXBlLmdldEJhc2ljVHlwZSgpICE9IEVidFN0cnVjdCAm
JiBJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpIHsKQEAgLTY1Nyw5ICs2NTgsOSBAQCBi
b29sIFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxlcihUVHlwCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7Ci0gICAg
ICAgIFRUeXBlTGlzdCYgc3RydWN0dXJlID0gKnR5cGUuZ2V0U3RydWN0KCk7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3RydWN0dXJlLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpzdHJ1Y3R1cmVbaV0udHlwZSkpCisgICAgICAg
IGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkg
eworICAgICAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxlcigqZmllbGRzW2ldLT50eXBlKCkpKQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtNjcyLDcg
KzY3Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29udGFpbnNTYW1wbGVyKFRUeXAKIC8vCiAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29u
dGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVybVR5cGVkKiBleHByLCBp
bnQmIHNpemUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgVEludGVybVR5cGVkKiBleHByLCBpbnQmIHNpemUpCiB7CiAgICAg
VEludGVybUNvbnN0YW50VW5pb24qIGNvbnN0YW50ID0gZXhwci0+Z2V0QXNDb25zdGFudFVuaW9u
KCk7CiAgICAgaWYgKGNvbnN0YW50ID09IDAgfHwgY29uc3RhbnQtPmdldEJhc2ljVHlwZSgpICE9
IEVidEludCkgewpAQCAtNjgwLDcgKzY4MSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlT
aXplRXJyb3JDaGVjaygKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc2l6ZSA9
IGNvbnN0YW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAgICBzaXpl
ID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgIGlmIChzaXplIDw9IDApIHsKICAgICAg
ICAgZXJyb3IobGluZSwgImFycmF5IHNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIiLCAi
Iik7CkBAIC02OTYsNyArNjk3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNpemVFcnJv
ckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4KIC8vCi1i
b29sIFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGluZSwgVFB1
YmxpY1R5cGUgdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlRdWFsaWZpZXJFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCiB7CiAgICAgaWYg
KCh0eXBlLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpIHx8ICh0eXBlLnF1YWxpZmllciA9PSBF
dnFDb25zdCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBkZWNsYXJlIGFycmF5cyBv
ZiB0aGlzIHF1YWxpZmllciIsIFRUeXBlKHR5cGUpLmdldENvbXBsZXRlU3RyaW5nKCkuY19zdHIo
KSk7CkBAIC03MTEsNyArNzEyLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVF1YWxpZmll
ckVycm9yQwogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4KIC8vCi1i
b29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soaW50IGxpbmUsIFRQdWJsaWNU
eXBlIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKIHsKICAgICAvLwogICAgIC8vIENh
biB0aGUgdHlwZSBiZSBhbiBhcnJheT8KQEAgLTczMiw3ICs3MzMsNyBAQCBib29sIFRQYXJzZUNv
bnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJl
IHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayhp
bnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlhYmxl
KiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSB0eXBlLCBU
VmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICAvLwogICAgIC8vIERvbid0IGNoZWNrIGZvciBy
ZXNlcnZlZCB3b3JkIHVzZSB1bnRpbCBhZnRlciB3ZSBrbm93IGl0J3Mgbm90IGluIHRoZSBzeW1i
b2wgdGFibGUsCkBAIC03NzcsMTYgKzc3OCw2IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlF
cnJvckNoZWNrKGludCAKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAg
ICAgICAgVFR5cGUqIHQgPSB2YXJpYWJsZS0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKTsKLSAg
ICAgICAgd2hpbGUgKHQgIT0gMCkgewotICAgICAgICAgICAgaWYgKHQtPmdldE1heEFycmF5U2l6
ZSgpID4gdHlwZS5hcnJheVNpemUpIHsKLSAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAiaGln
aGVyIGluZGV4IHZhbHVlIGFscmVhZHkgdXNlZCBmb3IgdGhlIGFycmF5IiwgaWRlbnRpZmllci5j
X3N0cigpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHQtPnNldEFycmF5U2l6ZSh0eXBlLmFycmF5U2l6ZSk7Ci0gICAgICAgICAgICB0
ID0gdC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKTsKLSAgICAgICAgfQotCiAgICAgICAgIGlm
ICh0eXBlLmFycmF5U2l6ZSkKICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCkuc2V0QXJy
YXlTaXplKHR5cGUuYXJyYXlTaXplKTsKICAgICB9IApAQCAtNzk3LDU2ICs3ODgsMTIgQEAgYm9v
bCBUUGFyc2VDb250ZXh0OjphcnJheUVycm9yQ2hlY2soaW50IAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNldE1heFNpemUoVEludGVybVN5bWJvbCAq
bm9kZSwgVFR5cGUqIHR5cGUsIGludCBzaXplLCBib29sIHVwZGF0ZUZsYWcsIFRTb3VyY2VMb2Mg
bGluZSkKLXsKLSAgICBib29sIGJ1aWx0SW4gPSBmYWxzZTsKLSAgICBUU3ltYm9sKiBzeW1ib2wg
PSBzeW1ib2xUYWJsZS5maW5kKG5vZGUtPmdldFN5bWJvbCgpLCAmYnVpbHRJbik7Ci0gICAgaWYg
KHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICIgdW5kZWNsYXJlZCBpZGVudGlm
aWVyIiwgbm9kZS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4o
c3ltYm9sKTsKLQotICAgIHR5cGUtPnNldEFycmF5SW5mb3JtYXRpb25UeXBlKHZhcmlhYmxlLT5n
ZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpKTsKLSAgICB2YXJpYWJsZS0+dXBkYXRlQXJyYXlJbmZv
cm1hdGlvblR5cGUodHlwZSk7Ci0KLSAgICAvLyBzcGVjaWFsIGNhc2luZyB0byB0ZXN0IGluZGV4
IHZhbHVlIG9mIGdsX0ZyYWdEYXRhLiBJZiB0aGUgYWNjZXNzZWQgaW5kZXggaXMgPj0gZ2xfTWF4
RHJhd0J1ZmZlcnMKLSAgICAvLyBpdHMgYW4gZXJyb3IKLSAgICBpZiAobm9kZS0+Z2V0U3ltYm9s
KCkgPT0gImdsX0ZyYWdEYXRhIikgewotICAgICAgICBUU3ltYm9sKiBmcmFnRGF0YSA9IHN5bWJv
bFRhYmxlLmZpbmQoImdsX01heERyYXdCdWZmZXJzIiwgJmJ1aWx0SW4pOwotICAgICAgICBBU1NF
UlQoZnJhZ0RhdGEpOwotCi0gICAgICAgIGludCBmcmFnRGF0YVZhbHVlID0gc3RhdGljX2Nhc3Q8
VFZhcmlhYmxlKj4oZnJhZ0RhdGEpLT5nZXRDb25zdFBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsK
LSAgICAgICAgaWYgKGZyYWdEYXRhVmFsdWUgPD0gc2l6ZSkgewotICAgICAgICAgICAgZXJyb3Io
bGluZSwgIiIsICJbIiwgImdsX0ZyYWdEYXRhIGNhbiBvbmx5IGhhdmUgYSBtYXggYXJyYXkgc2l6
ZSBvZiB1cCB0byBnbF9NYXhEcmF3QnVmZmVycyIpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyB3ZSBkb250IHdhbnQgdG8gdXBkYXRlIHRoZSBt
YXhBcnJheVNpemUgd2hlbiB0aGlzIGZsYWcgaXMgbm90IHNldCwgd2UganVzdCB3YW50IHRvIGlu
Y2x1ZGUgdGhpcyAKLSAgICAvLyBub2RlIHR5cGUgaW4gdGhlIGNoYWluIG9mIG5vZGUgdHlwZXMg
c28gdGhhdCBpdHMgdXBkYXRlZCB3aGVuIGEgaGlnaGVyIG1heEFycmF5U2l6ZSBjb21lcyBpbi4K
LSAgICBpZiAoIXVwZGF0ZUZsYWcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNpemUr
KzsKLSAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldE1heEFycmF5U2l6ZShzaXplKTsKLSAgICB0
eXBlLT5zZXRNYXhBcnJheVNpemUoc2l6ZSk7Ci0gICAgVFR5cGUqIHR0ID0gdHlwZTsKLQotICAg
IHdoaWxlKHR0LT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpICE9IDApIHsKLSAgICAgICAgdHQg
PSB0dC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKTsKLSAgICAgICAgdHQtPnNldE1heEFycmF5
U2l6ZShzaXplKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIC8vCiAvLyBFbmZv
cmNlIG5vbi1pbml0aWFsaXplciB0eXBlL3F1YWxpZmllciBydWxlcy4KIC8vCiAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6bm9u
SW5pdENvbnN0RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1Ymxp
Y1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpCitib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRDb25z
dEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwg
VFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpCiB7CiAgICAgaWYgKHR5cGUucXVhbGlmaWVy
ID09IEV2cUNvbnN0KQogICAgIHsKQEAgLTg3OCw3ICs4MjUsNyBAQCBib29sIFRQYXJzZUNvbnRl
eHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdh
cyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNrKGlu
dCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSwgVFZhcmlhYmxl
KiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBlJiB0eXBl
LCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICBpZiAocmVzZXJ2ZWRFcnJvckNoZWNrKGxp
bmUsIGlkZW50aWZpZXIpKQogICAgICAgICByZWNvdmVyKCk7CkBAIC04OTgsNyArODQ1LDcgQEAg
Ym9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhpbgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJhbUVycm9yQ2hlY2soaW50IGxpbmUsIFRR
dWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVhbGlmaWVyLCBUVHlwZSogdHlw
ZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVhbGlmaWVyLCBU
VHlwZSogdHlwZSkKIHsgICAgCiAgICAgaWYgKHF1YWxpZmllciAhPSBFdnFDb25zdCAmJiBxdWFs
aWZpZXIgIT0gRXZxVGVtcG9yYXJ5KSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJxdWFsaWZpZXIg
bm90IGFsbG93ZWQgb24gZnVuY3Rpb24gcGFyYW1ldGVyIiwgZ2V0UXVhbGlmaWVyU3RyaW5nKHF1
YWxpZmllcikpOwpAQCAtOTE3LDcgKzg2NCw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1F
cnJvckNoZWNrKGludCAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4
dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgZXh0ZW5zaW9u
KQorYm9vbCBUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICBjb25zdCBURXh0ZW5z
aW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZpb3IoKTsKICAgICBURXh0
ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBleHRCZWhhdmlvci5maW5kKGV4
dGVuc2lvbi5jX3N0cigpKTsKQEAgLTk0NSwxOCArODkyLDE3IEBAIGJvb2wgVFBhcnNlQ29udGV4
dDo6c3VwcG9ydHNFeHRlbnNpb24oY28KICAgICByZXR1cm4gKGl0ZXIgIT0gZXh0YmVoYXZpb3Iu
ZW5kKCkpOwogfQogCi12b2lkIFRQYXJzZUNvbnRleHQ6OmhhbmRsZUV4dGVuc2lvbkRpcmVjdGl2
ZShpbnQgbGluZSwgY29uc3QgY2hhciogZXh0TmFtZSwgY29uc3QgY2hhciogYmVoYXZpb3IpCiti
b29sIFRQYXJzZUNvbnRleHQ6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBjaGFyKiBleHRlbnNp
b24pIGNvbnN0CiB7Ci0gICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYzsKLSAgICBEZWNvZGVTb3Vy
Y2VMb2MobGluZSwgJmxvYy5maWxlLCAmbG9jLmxpbmUpOwotICAgIGRpcmVjdGl2ZUhhbmRsZXIu
aGFuZGxlRXh0ZW5zaW9uKGxvYywgZXh0TmFtZSwgYmVoYXZpb3IpOwotfQorICAgIGNvbnN0IFRF
eHRlbnNpb25CZWhhdmlvciYgZXh0YmVoYXZpb3IgPSBleHRlbnNpb25CZWhhdmlvcigpOworICAg
IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBUQmVoYXZpb3I+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0g
ZXh0YmVoYXZpb3IuZmluZChleHRlbnNpb24pOwogCi12b2lkIFRQYXJzZUNvbnRleHQ6OmhhbmRs
ZVByYWdtYURpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciog
dmFsdWUpCi17Ci0gICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYzsKLSAgICBEZWNvZGVTb3VyY2VM
b2MobGluZSwgJmxvYy5maWxlLCAmbG9jLmxpbmUpOwotICAgIGRpcmVjdGl2ZUhhbmRsZXIuaGFu
ZGxlUHJhZ21hKGxvYywgbmFtZSwgdmFsdWUpOworICAgIGlmIChpdGVyID09IGV4dGJlaGF2aW9y
LmVuZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biAoaXRlci0+c2Vjb25kID09IEVCaEVuYWJsZSB8fCBpdGVyLT5zZWNvbmQgPT0gRUJoUmVxdWly
ZSk7CiB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtOTcwLDEyICs5MTYsMTMgQEAg
dm9pZCBUUGFyc2VDb250ZXh0OjpoYW5kbGVQcmFnbWFEaXJlY3RpdgogLy8KIC8vIFJldHVybiB0
aGUgZnVuY3Rpb24gc3ltYm9sIGlmIGZvdW5kLCBvdGhlcndpc2UgMC4KIC8vCi1jb25zdCBURnVu
Y3Rpb24qIFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0aW9uKiBj
YWxsLCBib29sICpidWlsdEluKQorY29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5k
RnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBib29sICpi
dWlsdEluKQogewogICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sg
d2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgogICAgIC8vIGhpZGRlbiBieSBhIHZh
cmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgorICAgIC8vIElmIGEgZnVuY3Rpb24gaXMg
Zm91bmQsIGNoZWNrIGZvciBvbmUgd2l0aCBhIG1hdGNoaW5nIGFyZ3VtZW50IGxpc3QuCiAgICAg
Y29uc3QgVFN5bWJvbCogc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZChjYWxsLT5nZXROYW1lKCks
IGJ1aWx0SW4pOwotICAgIGlmIChzeW1ib2wgPT0gMCkgeworICAgIGlmIChzeW1ib2wgPT0gMCB8
fCBzeW1ib2wtPmlzRnVuY3Rpb24oKSkgewogICAgICAgICBzeW1ib2wgPSBzeW1ib2xUYWJsZS5m
aW5kKGNhbGwtPmdldE1hbmdsZWROYW1lKCksIGJ1aWx0SW4pOwogICAgIH0KIApAQCAtOTk2LDcg
Kzk0Myw3IEBAIGNvbnN0IFRGdW5jdGlvbiogVFBhcnNlQ29udGV4dDo6ZmluZEZ1bmMKIC8vIElu
aXRpYWxpemVycyBzaG93IHVwIGluIHNldmVyYWwgcGxhY2VzIGluIHRoZSBncmFtbWFyLiAgSGF2
ZSBvbmUgc2V0IG9mCiAvLyBjb2RlIHRvIGhhbmRsZSB0aGVtIGhlcmUuCiAvLwotYm9vbCBUUGFy
c2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIoVFNvdXJjZUxvYyBsaW5lLCBUU3RyaW5nJiBp
ZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsIAorYm9vbCBUUGFyc2VDb250ZXh0OjpleGVj
dXRlSW5pdGlhbGl6ZXIoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmll
ciwgVFB1YmxpY1R5cGUmIHBUeXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1UeXBlZCogaW5pdGlhbGl6ZXIsIFRJbnRlcm1Ob2RlKiYgaW50ZXJtTm9k
ZSwgVFZhcmlhYmxlKiB2YXJpYWJsZSkKIHsKICAgICBUVHlwZSB0eXBlID0gVFR5cGUocFR5cGUp
OwpAQCAtMTA0OCwxMyArOTk1LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlh
bGl6ZXIoVAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgeyAKLSAgICAgICAgICAgIENvbnN0
YW50VW5pb24qIHVuaW9uQXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29uc3RQb2ludGVyKCk7Ci0KLSAg
ICAgICAgICAgIGlmICh0eXBlLmdldE9iamVjdFNpemUoKSA9PSAxICYmIHR5cGUuZ2V0QmFzaWNU
eXBlKCkgIT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgICAgICAgICAgKnVuaW9uQXJyYXkgPSAoaW5p
dGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpKVsw
XTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUtPnNoYXJl
Q29uc3RQb2ludGVyKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25B
cnJheVBvaW50ZXIoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB2YXJpYWJsZS0+c2hh
cmVDb25zdFBvaW50ZXIoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpKTsKICAgICAgICAgfSBlbHNlIGlmIChpbml0aWFsaXplci0+Z2V0QXNT
eW1ib2xOb2RlKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9IHN5bWJv
bFRhYmxlLmZpbmQoaW5pdGlhbGl6ZXItPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKSk7
CiAgICAgICAgICAgICBjb25zdCBUVmFyaWFibGUqIHRWYXIgPSBzdGF0aWNfY2FzdDxjb25zdCBU
VmFyaWFibGUqPihzeW1ib2wpOwpAQCAtMTEwOCwxNiArMTA0OSwxNiBAQCBib29sIFRQYXJzZUNv
bnRleHQ6OmFyZUFsbENoaWxkQ29uc3QoVEluCiAvLwogLy8gUmV0dXJucyAwIGZvciBhbiBlcnJv
ciBvciB0aGUgY29uc3RydWN0ZWQgbm9kZSAoYWdncmVnYXRlIG9yIHR5cGVkKSBmb3Igbm8gZXJy
b3IuCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdHJ1Y3RvcihUSW50
ZXJtTm9kZSogbm9kZSwgY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVEZ1bmN0aW9u
KiBmbkNhbGwsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRUeXBlKiB0eXBlLCBUT3Bl
cmF0b3Igb3AsIFRGdW5jdGlvbiogZm5DYWxsLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewog
ICAgIGlmIChub2RlID09IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgVEludGVybUFnZ3Jl
Z2F0ZSogYWdnck5vZGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOwogICAgIAotICAgIFRUeXBl
TGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyVHlwZXM7CisgICAgVEZpZWxkTGlzdDo6Y29uc3Rf
aXRlcmF0b3IgbWVtYmVyRmllbGRzOwogICAgIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3Qp
Ci0gICAgICAgIG1lbWJlclR5cGVzID0gdHlwZS0+Z2V0U3RydWN0KCktPmJlZ2luKCk7CisgICAg
ICAgIG1lbWJlckZpZWxkcyA9IHR5cGUtPmdldFN0cnVjdCgpLT5maWVsZHMoKS5iZWdpbigpOwog
ICAgIAogICAgIFRUeXBlIGVsZW1lbnRUeXBlID0gKnR5cGU7CiAgICAgaWYgKHR5cGUtPmlzQXJy
YXkoKSkKQEAgLTExMzksNyArMTA4MCw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKICAgICAgICAgICAgIG5l
d05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgJmVsZW1lbnRUeXBlLCAxLCBub2RlLT5nZXRM
aW5lKCksIGZhbHNlKTsKICAgICAgICAgZWxzZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0
KQotICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdChub2RlLCAoKm1lbWJlclR5
cGVzKS50eXBlLCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKKyAgICAgICAgICAgIG5ld05v
ZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgKCptZW1iZXJGaWVsZHMpLT50eXBlKCksIDEsIG5v
ZGUtPmdldExpbmUoKSwgZmFsc2UpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuZXdOb2Rl
ID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBvcCwgbm9kZSwgbm9kZS0+Z2V0TGluZSgpLCBmYWxz
ZSk7CiAKQEAgLTExNzAsNyArMTExMSw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKICAgICAgICAgICAgIG5l
d05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsICZlbGVtZW50VHlwZSwgcGFyYW1Db3VudCsxLCBu
b2RlLT5nZXRMaW5lKCksIHRydWUpOwogICAgICAgICBlbHNlIGlmIChvcCA9PSBFT3BDb25zdHJ1
Y3RTdHJ1Y3QpCi0gICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0U3RydWN0KCpwLCAobWVt
YmVyVHlwZXNbcGFyYW1Db3VudF0pLnR5cGUsIHBhcmFtQ291bnQrMSwgbm9kZS0+Z2V0TGluZSgp
LCB0cnVlKTsKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsIG1lbWJl
ckZpZWxkc1twYXJhbUNvdW50XS0+dHlwZSgpLCBwYXJhbUNvdW50KzEsIG5vZGUtPmdldExpbmUo
KSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RC
dWlsdEluKHR5cGUsIG9wLCAqcCwgbm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKICAgICAgICAgCkBA
IC0xMjE2LDcgKzExNTcsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmZvbGRDb25z
dENvCiAvLwogLy8gUmV0dXJucyAwIGZvciBhbiBlcnJvciBvciB0aGUgY29uc3RydWN0ZWQgbm9k
ZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0SW4oY29u
c3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIG5vZGUsIFRTb3VyY2VM
b2MgbGluZSwgYm9vbCBzdWJzZXQpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0
cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUq
IG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQogewogICAgIFRJbnRl
cm1UeXBlZCogbmV3Tm9kZTsKICAgICBUT3BlcmF0b3IgYmFzaWNPcDsKQEAgLTEyNzgsNyArMTIx
OSw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0QnUKIC8vCiAvLyBS
ZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9yIHRoZSBpbnB1dCBub2RlIGl0c2VsZiBpZiB0aGUgZXhw
ZWN0ZWQgYW5kIHRoZSBnaXZlbiBwYXJhbWV0ZXIgdHlwZXMgbWF0Y2guCiAvLwotVEludGVybVR5
cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QoVEludGVybU5vZGUqIG5vZGUsIFRU
eXBlKiB0eXBlLCBpbnQgcGFyYW1Db3VudCwgVFNvdXJjZUxvYyBsaW5lLCBib29sIHN1YnNldCkK
K1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0U3RydWN0KFRJbnRlcm1Ob2Rl
KiBub2RlLCBUVHlwZSogdHlwZSwgaW50IHBhcmFtQ291bnQsIGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUsIGJvb2wgc3Vic2V0KQogewogICAgIGlmICgqdHlwZSA9PSBub2RlLT5nZXRBc1R5cGVkKCkt
PmdldFR5cGUoKSkgewogICAgICAgICBpZiAoc3Vic2V0KQpAQCAtMTMwNSw3ICsxMjQ2LDcgQEAg
VEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdAogLy8gbm9kZSBvciBpdCBj
b3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRyZWUgcmVwcmVzZW50YXRpb24gb2YgYWNjZXNzaW5n
IGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVjdHVyZSBvciBjb2x1bW4gb2YgCiAvLyBhIGNvbnN0
YW50IG1hdHJpeC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVj
dG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIFRJbnRlcm1UeXBlZCogbm9kZSwgVFNvdXJj
ZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFZlY3Rvck5v
ZGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0eXBlZE5vZGU7CiAgICAgVEludGVy
bUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5p
b24oKTsKQEAgLTEzMTMsNyArMTI1NCw2IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5OwogICAgIGlmICh0ZW1w
Q29uc3RhbnROb2RlKSB7CiAgICAgICAgIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5n
ZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAgICAgICBBU1NFUlQodW5pb25BcnJheSk7CiAKICAg
ICAgICAgaWYgKCF1bmlvbkFycmF5KSB7CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKQEAgLTEz
MjgsNyArMTI2OCw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWMK
ICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bZmllbGRz
Lm51bV07CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpZWxkcy5udW07IGkrKykgewotICAg
ICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0gPj0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNp
emUoKSkgeworICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0gPj0gbm9kZS0+Z2V0VHlwZSgp
LmdldE5vbWluYWxTaXplKCkpIHsKICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJh
SW5mb1N0cmVhbTsKICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAidmVjdG9yIGZpZWxk
IHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgZmllbGRzLm9mZnNldHNbaV0gPDwgIiciOwog
ICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigp
OwpAQCAtMTM1MCw3ICsxMjkwLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRD
b25zdFZlYwogLy8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2Rl
IChtWzBdIHdoZXJlIG0gaXMgYSBjb25zdGFudCBtYXRyaXgpdGhhdCByZXByZXNlbnRzIGEgCiAv
LyBjb25zdGFudCBtYXRyaXggb3IgaXQgY291bGQgYmUgdGhlIHRyZWUgcmVwcmVzZW50YXRpb24g
b2YgdGhlIGNvbnN0YW50IG1hdHJpeCAocy5tMVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3Ry
dWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RNYXRyaXhO
b2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBUU291cmNlTG9jIGxpbmUpCitUSW50
ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZShpbnQgaW5kZXgsIFRJ
bnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJt
VHlwZWQqIHR5cGVkTm9kZTsKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENvbnN0YW50
Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwpAQCAtMTM4NSw3ICsxMzI1LDcgQEAg
VEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdE1hdAogLy8gdG8gdGhlIGZ1bmN0
aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChhWzBdIHdoZXJlIGEgaXMgYSBjb25z
dGFudCBhcnJheSl0aGF0IHJlcHJlc2VudHMgYSAKIC8vIGNvbnN0YW50IGFycmF5IG9yIGl0IGNv
dWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25zdGFudCBhcnJheSAocy5h
MVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCog
VFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQq
IG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRk
Q29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0eXBlZE5vZGU7CiAgICAgVEludGVy
bUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5p
b24oKTsKQEAgLTE0MDEsOSArMTM0MSw4IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
YWRkQ29uc3RBcnIKICAgICAgICAgaW5kZXggPSAwOwogICAgIH0KIAotICAgIGludCBhcnJheUVs
ZW1lbnRTaXplID0gYXJyYXlFbGVtZW50VHlwZS5nZXRPYmplY3RTaXplKCk7Ci0KICAgICBpZiAo
dGVtcENvbnN0YW50Tm9kZSkgeworICAgICAgICAgc2l6ZV90IGFycmF5RWxlbWVudFNpemUgPSBh
cnJheUVsZW1lbnRUeXBlLmdldE9iamVjdFNpemUoKTsKICAgICAgICAgIENvbnN0YW50VW5pb24q
IHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwog
ICAgICAgICAgdHlwZWROb2RlID0gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oJnVuaW9u
QXJyYXlbYXJyYXlFbGVtZW50U2l6ZSAqIGluZGV4XSwgdGVtcENvbnN0YW50Tm9kZS0+Z2V0VHlw
ZSgpLCBsaW5lKTsKICAgICB9IGVsc2UgewpAQCAtMTQyMiwyMiArMTM2MSwyMSBAQCBUSW50ZXJt
VHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0QXJyCiAvLyBJZiB0aGVyZSBpcyBhbiBlbWJl
ZGRlZC9uZXN0ZWQgc3RydWN0LCBpdCBhcHByb3ByaWF0ZWx5IGNhbGxzIGFkZENvbnN0U3RydWN0
TmVzdGVkIG9yIGFkZENvbnN0U3RydWN0RnJvbUFnZ3IKIC8vIGZ1bmN0aW9uIGFuZCByZXR1cm5z
IHRoZSBwYXJzZS10cmVlIHdpdGggdGhlIHZhbHVlcyBvZiB0aGUgZW1iZWRkZWQvbmVzdGVkIHN0
cnVjdC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0U3RydWN0KFRT
dHJpbmcmIGlkZW50aWZpZXIsIFRJbnRlcm1UeXBlZCogbm9kZSwgVFNvdXJjZUxvYyBsaW5lKQor
VEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdChUU3RyaW5nJiBpZGVu
dGlmaWVyLCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7Ci0g
ICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSBub2RlLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7
Ci0gICAgVEludGVybVR5cGVkICp0eXBlZE5vZGU7Ci0gICAgaW50IGluc3RhbmNlU2l6ZSA9IDA7
Ci0gICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAq
dGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAgIGNvbnN0
IFRGaWVsZExpc3QmIGZpZWxkcyA9IG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRz
KCk7CiAKLSAgICBmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgZmllbGRzLT5zaXplKCk7ICsraW5k
ZXgpIHsKLSAgICAgICAgaWYgKCgqZmllbGRzKVtpbmRleF0udHlwZS0+Z2V0RmllbGROYW1lKCkg
PT0gaWRlbnRpZmllcikgeworICAgIHNpemVfdCBpbnN0YW5jZVNpemUgPSAwOworICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZHMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAg
ICAgIGlmIChmaWVsZHNbaW5kZXhdLT5uYW1lKCkgPT0gaWRlbnRpZmllcikgewogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbnN0YW5jZVNpemUgKz0g
KCpmaWVsZHMpW2luZGV4XS50eXBlLT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICBpbnN0
YW5jZVNpemUgKz0gZmllbGRzW2luZGV4XS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZSA9IDA7CisgICAgVElu
dGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50
VW5pb24oKTsKICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgewogICAgICAgICAgQ29uc3RhbnRV
bmlvbiogY29uc3RBcnJheSA9IHRlbXBDb25zdGFudE5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVy
KCk7CiAKQEAgLTE0NTIsNyArMTM5MCw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6
YWRkQ29uc3RTdHIKICAgICByZXR1cm4gdHlwZWROb2RlOwogfQogCi1ib29sIFRQYXJzZUNvbnRl
eHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24oaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50
aWZpZXIpCitib29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24oY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKIHsKICAgICArK3N0
cnVjdE5lc3RpbmdMZXZlbDsKIApAQCAtMTQ3OCwyMSArMTQxNiwyMSBAQCBjb25zdCBpbnQga1dl
YkdMTWF4U3RydWN0TmVzdGluZyA9IDQ7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1ib29sIFRQYXJz
ZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKFRTb3VyY2VMb2MgbGluZSwgY29uc3Qg
VFR5cGUmIGZpZWxkVHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0TmVzdGluZ0Vycm9y
Q2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEZpZWxkJiBmaWVsZCkKIHsKICAg
ICBpZiAoIWlzV2ViR0xCYXNlZFNwZWMoc2hhZGVyU3BlYykpIHsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIGlmIChmaWVsZFR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3Ry
dWN0KSB7CisgICAgaWYgKGZpZWxkLnR5cGUoKS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0
KSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAvLyBXZSdyZSBhbHJlYWR5
IGluc2lkZSBhIHN0cnVjdHVyZSBkZWZpbml0aW9uIGF0IHRoaXMgcG9pbnQsIHNvIGFkZAogICAg
IC8vIG9uZSB0byB0aGUgZmllbGQncyBzdHJ1Y3QgbmVzdGluZy4KLSAgICBpZiAoMSArIGZpZWxk
VHlwZS5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykg
eworICAgIGlmICgxICsgZmllbGQudHlwZSgpLT5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpID4g
a1dlYkdMTWF4U3RydWN0TmVzdGluZykgewogICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRy
YUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0
cnVjdCB0eXBlICIgPDwgZmllbGRUeXBlLmdldFR5cGVOYW1lKCkgCisgICAgICAgIGV4dHJhSW5m
b1N0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGQubmFtZSgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGV4Y2VlZHMgbWF4aW11bSBzdHJ1Y3QgbmVzdGlu
ZyBvZiAiIDw8IGtXZWJHTE1heFN0cnVjdE5lc3Rpbmc7CiAgICAgICAgIHN0ZDo6c3RyaW5nIGV4
dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKICAgICAgICAgZXJyb3IobGluZSwgIiIs
ICIiLCBleHRyYUluZm8uY19zdHIoKSk7CkBAIC0xNTAzLDYgKzE0NDEsMTQwIEBAIGJvb2wgVFBh
cnNlQ29udGV4dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2gKIH0KIAogLy8KKy8vIFBhcnNlIGFuIGFy
cmF5IGluZGV4IGV4cHJlc3Npb24KKy8vCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFk
ZEluZGV4RXhwcmVzc2lvbihUSW50ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9uLCBjb25zdCBUU291
cmNlTG9jJiBsb2NhdGlvbiwgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24pCit7CisgICAg
VEludGVybVR5cGVkICppbmRleGVkRXhwcmVzc2lvbiA9IE5VTEw7CisKKyAgICBpZiAoIWJhc2VF
eHByZXNzaW9uLT5pc0FycmF5KCkgJiYgIWJhc2VFeHByZXNzaW9uLT5pc01hdHJpeCgpICYmICFi
YXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKKyAgICB7CisgICAgICAgIGlmIChiYXNlRXhwcmVz
c2lvbi0+Z2V0QXNTeW1ib2xOb2RlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKGxv
Y2F0aW9uLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZl
Y3RvciAiLCBiYXNlRXhwcmVzc2lvbi0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLmNf
c3RyKCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
ZXJyb3IobG9jYXRpb24sICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1hdHJp
eCwgb3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7CisgICAgICAgIH0KKyAgICAgICAgcmVjb3Zl
cigpOworICAgIH0KKworICAgIGlmIChpbmRleEV4cHJlc3Npb24tPmdldFF1YWxpZmllcigpID09
IEV2cUNvbnN0KQorICAgIHsKKyAgICAgICAgaW50IGluZGV4ID0gaW5kZXhFeHByZXNzaW9uLT5n
ZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOworICAgICAgICBpZiAoaW5kZXggPCAw
KQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBpbmZvU3RyZWFtOwor
ICAgICAgICAgICAgaW5mb1N0cmVhbSA8PCBpbmRleDsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5n
IGluZm8gPSBpbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICJu
ZWdhdGl2ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7CisgICAgICAgICAgICByZWNvdmVyKCk7Cisg
ICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJhc2VFeHByZXNz
aW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNBcnJheSgpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIGFycmF5cworICAgICAgICAg
ICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYWRkQ29uc3RBcnJheU5vZGUoaW5kZXgsIGJhc2VF
eHByZXNzaW9uLCBsb2NhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlm
IChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAgICAgICAgVFZl
Y3RvckZpZWxkcyBmaWVsZHM7CisgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7CisgICAg
ICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVlZCB0byBkbyBpdCB0
aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkKKyAgICAgICAg
ICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGFkZENvbnN0VmVjdG9yTm9kZShmaWVsZHMsIGJh
c2VFeHByZXNzaW9uLCBsb2NhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IGlmIChiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBtYXRyaWNlcworICAgICAgICAgICAgICAg
IGluZGV4ZWRFeHByZXNzaW9uID0gYWRkQ29uc3RNYXRyaXhOb2RlKGluZGV4LCBiYXNlRXhwcmVz
c2lvbiwgbG9jYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5pc0FycmF5KCkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IGJhc2VFeHByZXNzaW9u
LT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CisgICAgICAgICAg
ICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlICci
IDw8IGluZGV4IDw8ICInIjsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJ
bmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAgICAgICBlcnJvcihs
b2NhdGlvbiwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAg
ICByZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gYmFzZUV4cHJlc3Npb24t
PmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFG
cmFnRGF0YSAmJiBpbmRleCA+IDAgJiYgIWlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdf
YnVmZmVycyIpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3Io
bG9jYXRpb24sICIiLCAiWyIsICJhcnJheSBpbmRleGVzIGZvciBnbF9GcmFnRGF0YSBtdXN0IGJl
IHplcm8gd2hlbiBHTF9FWFRfZHJhd19idWZmZXJzIGlzIGRpc2FibGVkIik7CisgICAgICAgICAg
ICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAwOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKChiYXNl
RXhwcmVzc2lvbi0+aXNWZWN0b3IoKSB8fCBiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgoKSkgJiYg
YmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIDw9IGluZGV4KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0
cmVhbTsKKyAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxkIHNlbGVjdGlv
biBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAg
ICBlcnJvcihsb2NhdGlvbiwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICAg
ICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICBpbmRleCA9IGJhc2VFeHByZXNzaW9u
LT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSAtIDE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGluZGV4RXhwcmVzc2lvbi0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJy
YXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7CisgICAgICAgICAgICBpbmRleGVkRXhwcmVz
c2lvbiA9IGludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgYmFzZUV4cHJlc3Np
b24sIGluZGV4RXhwcmVzc2lvbiwgbG9jYXRpb24pOworICAgICAgICB9CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gaW50ZXJtZWRpYXRlLmFkZElu
ZGV4KEVPcEluZGV4SW5kaXJlY3QsIGJhc2VFeHByZXNzaW9uLCBpbmRleEV4cHJlc3Npb24sIGxv
Y2F0aW9uKTsKKyAgICB9CisKKyAgICBpZiAoaW5kZXhlZEV4cHJlc3Npb24gPT0gMCkKKyAgICB7
CisgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsx
XTsKKyAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOworICAgICAgICBpbmRleGVk
RXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCksIGxvY2F0aW9uKTsKKyAgICB9CisgICAg
ZWxzZSBpZiAoYmFzZUV4cHJlc3Npb24tPmlzQXJyYXkoKSkKKyAgICB7CisgICAgICAgIGNvbnN0
IFRUeXBlICZiYXNlVHlwZSA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCk7CisgICAgICAgIGlm
IChiYXNlVHlwZS5nZXRTdHJ1Y3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAgVFR5cGUgY29w
eU9mVHlwZShiYXNlVHlwZS5nZXRTdHJ1Y3QoKSk7CisgICAgICAgICAgICBpbmRleGVkRXhwcmVz
c2lvbi0+c2V0VHlwZShjb3B5T2ZUeXBlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKFRUeXBlKGJhc2VF
eHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFzZUV4cHJlc3Npb24tPmdldFByZWNpc2lvbigp
LCBFdnFUZW1wb3JhcnksIGJhc2VFeHByZXNzaW9uLT5nZXROb21pbmFsU2l6ZSgpLCBiYXNlRXhw
cmVzc2lvbi0+aXNNYXRyaXgoKSkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJhc2VFeHBy
ZXNzaW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFs
aWZpZXIoRXZxQ29uc3QpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGJhc2VFeHBy
ZXNzaW9uLT5pc01hdHJpeCgpKQorICAgIHsKKyAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIg
PSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ID8g
RXZxQ29uc3QgOiBFdnFUZW1wb3Jhcnk7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRU
eXBlKFRUeXBlKGJhc2VFeHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFzZUV4cHJlc3Npb24t
PmdldFByZWNpc2lvbigpLCBxdWFsaWZpZXIsIGJhc2VFeHByZXNzaW9uLT5nZXROb21pbmFsU2l6
ZSgpKSk7CisgICAgfQorICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5pc1ZlY3RvcigpKQor
ICAgIHsKKyAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBiYXNlRXhwcmVzc2lvbi0+Z2V0
VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ID8gRXZxQ29uc3QgOiBFdnFUZW1wb3Jh
cnk7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKFRUeXBlKGJhc2VFeHByZXNz
aW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFzZUV4cHJlc3Npb24tPmdldFByZWNpc2lvbigpLCBxdWFs
aWZpZXIpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaW5kZXhlZEV4cHJlc3Np
b24tPnNldFR5cGUoYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKSk7CisgICAgfQorCisgICAgcmV0
dXJuIGluZGV4ZWRFeHByZXNzaW9uOworfQorCisvLwogLy8gUGFyc2UgYW4gYXJyYXkgb2Ygc3Ry
aW5ncyB1c2luZyB5eXBhcnNlLgogLy8KIC8vIFJldHVybnMgMCBmb3Igc3VjY2Vzcy4KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBl
ci5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvUGFyc2VIZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMzMsMTAgKzMzLDggQEAgc3RydWN0
IFRQYXJzZUNvbnRleHQgewogICAgICAgICAgICAgY29tcGlsZU9wdGlvbnMob3B0aW9ucyksCiAg
ICAgICAgICAgICBzb3VyY2VQYXRoKHNvdXJjZVBhdGgpLAogICAgICAgICAgICAgdHJlZVJvb3Qo
MCksCi0gICAgICAgICAgICBsZXhBZnRlclR5cGUoZmFsc2UpLAogICAgICAgICAgICAgbG9vcE5l
c3RpbmdMZXZlbCgwKSwKICAgICAgICAgICAgIHN0cnVjdE5lc3RpbmdMZXZlbCgwKSwKLSAgICAg
ICAgICAgIGluVHlwZVBhcmVuKGZhbHNlKSwKICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvblR5
cGUoTlVMTCksCiAgICAgICAgICAgICBmdW5jdGlvblJldHVybnNWYWx1ZShmYWxzZSksCiAgICAg
ICAgICAgICBjaGVja3NQcmVjaXNpb25FcnJvcnMoY2hlY2tzUHJlY0Vycm9ycyksCkBAIC01MSwx
NiArNDksMTMgQEAgc3RydWN0IFRQYXJzZUNvbnRleHQgewogICAgIGludCBjb21waWxlT3B0aW9u
czsKICAgICBjb25zdCBjaGFyKiBzb3VyY2VQYXRoOyAgICAgIC8vIFBhdGggb2Ygc291cmNlIGZp
bGUgb3IgTlVMTC4KICAgICBUSW50ZXJtTm9kZSogdHJlZVJvb3Q7ICAgICAgIC8vIHJvb3Qgb2Yg
cGFyc2UgdHJlZSBiZWluZyBjcmVhdGVkCi0gICAgYm9vbCBsZXhBZnRlclR5cGU7ICAgICAgICAg
ICAvLyB0cnVlIGlmIHdlJ3ZlIHJlY29nbml6ZWQgYSB0eXBlLCBzbyBjYW4gb25seSBiZSBsb29r
aW5nIGZvciBhbiBpZGVudGlmaWVyCiAgICAgaW50IGxvb3BOZXN0aW5nTGV2ZWw7ICAgICAgICAv
LyAwIGlmIG91dHNpZGUgYWxsIGxvb3BzCiAgICAgaW50IHN0cnVjdE5lc3RpbmdMZXZlbDsgICAg
ICAvLyBpbmNyZW1lbnRlZCB3aGlsZSBwYXJzaW5nIGEgc3RydWN0IGRlY2xhcmF0aW9uCi0gICAg
Ym9vbCBpblR5cGVQYXJlbjsgICAgICAgICAgICAvLyB0cnVlIGlmIGluIHBhcmVudGhlc2VzLCBs
b29raW5nIG9ubHkgZm9yIGFuIGlkZW50aWZpZXIKICAgICBjb25zdCBUVHlwZSogY3VycmVudEZ1
bmN0aW9uVHlwZTsgIC8vIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gdGhhdCdzIGN1
cnJlbnRseSBiZWluZyBwYXJzZWQKICAgICBib29sIGZ1bmN0aW9uUmV0dXJuc1ZhbHVlOyAgIC8v
IHRydWUgaWYgYSBub24tdm9pZCBmdW5jdGlvbiBoYXMgYSByZXR1cm4KICAgICBib29sIGNoZWNr
c1ByZWNpc2lvbkVycm9yczsgIC8vIHRydWUgaWYgYW4gZXJyb3Igd2lsbCBiZSBnZW5lcmF0ZWQg
d2hlbiBhIHZhcmlhYmxlIGlzIGRlY2xhcmVkIHdpdGhvdXQgcHJlY2lzaW9uLCBleHBsaWNpdCBv
ciBpbXBsaWNpdC4KICAgICBib29sIGZyYWdtZW50UHJlY2lzaW9uSGlnaDsgIC8vIHRydWUgaWYg
aGlnaHAgcHJlY2lzaW9uIGlzIHN1cHBvcnRlZCBpbiB0aGUgZnJhZ21lbnQgbGFuZ3VhZ2UuCiAg
ICAgVFN0cmluZyBIYXNoRXJyTXNnOwotICAgIGJvb2wgQWZ0ZXJFT0Y7CiAgICAgVERpYWdub3N0
aWNzIGRpYWdub3N0aWNzOwogICAgIFREaXJlY3RpdmVIYW5kbGVyIGRpcmVjdGl2ZUhhbmRsZXI7
CiAgICAgcHA6OlByZXByb2Nlc3NvciBwcmVwcm9jZXNzb3I7CkBAIC02OCw3MSArNjMsNjkgQEAg
c3RydWN0IFRQYXJzZUNvbnRleHQgewogCiAgICAgaW50IG51bUVycm9ycygpIGNvbnN0IHsgcmV0
dXJuIGRpYWdub3N0aWNzLm51bUVycm9ycygpOyB9CiAgICAgVEluZm9TaW5rJiBpbmZvU2luaygp
IHsgcmV0dXJuIGRpYWdub3N0aWNzLmluZm9TaW5rKCk7IH0KLSAgICB2b2lkIGVycm9yKFRTb3Vy
Y2VMb2MgbG9jLCBjb25zdCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLAorICAgIHZv
aWQgZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLCBjb25zdCBjaGFyICpyZWFzb24sIGNvbnN0
IGNoYXIqIHRva2VuLAogICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvPSIiKTsK
LSAgICB2b2lkIHdhcm5pbmcoVFNvdXJjZUxvYyBsb2MsIGNvbnN0IGNoYXIqIHJlYXNvbiwgY29u
c3QgY2hhciogdG9rZW4sCisgICAgdm9pZCB3YXJuaW5nKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywg
Y29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZXh0cmFJbmZvPSIiKTsKICAgICB2b2lkIHRyYWNlKGNvbnN0IGNoYXIqIHN0
cik7CiAgICAgdm9pZCByZWNvdmVyKCk7CiAKLSAgICBib29sIHBhcnNlVmVjdG9yRmllbGRzKGNv
bnN0IFRTdHJpbmcmLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYsIGludCBsaW5lKTsKLSAg
ICBib29sIHBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgbWF0U2l6ZSwgVE1h
dHJpeEZpZWxkcyYsIGludCBsaW5lKTsKKyAgICBib29sIHBhcnNlVmVjdG9yRmllbGRzKGNvbnN0
IFRTdHJpbmcmLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYsIGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUpOworICAgIGJvb2wgcGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYsIGludCBt
YXRTaXplLCBUTWF0cml4RmllbGRzJiwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSk7CiAKLSAgICBi
b29sIHJlc2VydmVkRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmll
cik7Ci0gICAgdm9pZCBhc3NpZ25FcnJvcihpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJp
bmcgbGVmdCwgVFN0cmluZyByaWdodCk7Ci0gICAgdm9pZCB1bmFyeU9wRXJyb3IoaW50IGxpbmUs
IGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpOwotICAgIHZvaWQgYmluYXJ5T3BFcnJv
cihpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7
Ci0gICAgYm9vbCBwcmVjaXNpb25FcnJvckNoZWNrKGludCBsaW5lLCBUUHJlY2lzaW9uIHByZWNp
c2lvbiwgVEJhc2ljVHlwZSB0eXBlKTsKLSAgICBib29sIGxWYWx1ZUVycm9yQ2hlY2soaW50IGxp
bmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50ZXJtVHlwZWQqKTsKKyAgICBib29sIHJlc2VydmVkRXJy
b3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVy
KTsKKyAgICB2b2lkIGFzc2lnbkVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNo
YXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOworICAgIHZvaWQgdW5hcnlPcEVy
cm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJh
bmQpOworICAgIHZvaWQgYmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25z
dCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKKyAgICBib29sIHByZWNp
c2lvbkVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFByZWNpc2lvbiBwcmVjaXNp
b24sIFRCYXNpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBsVmFsdWVFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50ZXJtVHlwZWQqKTsKICAgICBib29s
IGNvbnN0RXJyb3JDaGVjayhUSW50ZXJtVHlwZWQqIG5vZGUpOwogICAgIGJvb2wgaW50ZWdlckVy
cm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBjaGFyKiB0b2tlbik7Ci0gICAgYm9v
bCBnbG9iYWxFcnJvckNoZWNrKGludCBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9r
ZW4pOwotICAgIGJvb2wgY29uc3RydWN0b3JFcnJvckNoZWNrKGludCBsaW5lLCBUSW50ZXJtTm9k
ZSosIFRGdW5jdGlvbiYsIFRPcGVyYXRvciwgVFR5cGUqKTsKLSAgICBib29sIGFycmF5U2l6ZUVy
cm9yQ2hlY2soaW50IGxpbmUsIFRJbnRlcm1UeXBlZCogZXhwciwgaW50JiBzaXplKTsKLSAgICBi
b29sIGFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7
Ci0gICAgYm9vbCBhcnJheVR5cGVFcnJvckNoZWNrKGludCBsaW5lLCBUUHVibGljVHlwZSB0eXBl
KTsKLSAgICBib29sIGFycmF5RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmll
ciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOwotICAgIGJvb2wgdm9p
ZEVycm9yQ2hlY2soaW50LCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFB1YmxpY1R5cGUmKTsKLSAg
ICBib29sIGJvb2xFcnJvckNoZWNrKGludCwgY29uc3QgVEludGVybVR5cGVkKik7Ci0gICAgYm9v
bCBib29sRXJyb3JDaGVjayhpbnQsIGNvbnN0IFRQdWJsaWNUeXBlJik7Ci0gICAgYm9vbCBzYW1w
bGVyRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBj
aGFyKiByZWFzb24pOwotICAgIGJvb2wgc3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGlu
ZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKTsKLSAgICBib29sIHBhcmFtZXRlclNhbXBsZXJF
cnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgY29uc3QgVFR5cGUmIHR5
cGUpOwotICAgIGJvb2wgbm9uSW5pdENvbnN0RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYg
aWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpOwotICAgIGJvb2wgbm9u
SW5pdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
JiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSk7Ci0gICAgYm9vbCBwYXJhbUVycm9yQ2hlY2so
aW50IGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVhbGlmaWVy
LCBUVHlwZSogdHlwZSk7Ci0gICAgYm9vbCBleHRlbnNpb25FcnJvckNoZWNrKGludCBsaW5lLCBj
b25zdCBUU3RyaW5nJik7CisgICAgYm9vbCBnbG9iYWxFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIGJvb2wgZ2xvYmFsLCBjb25zdCBjaGFyKiB0b2tlbik7CisgICAgYm9vbCBjb25z
dHJ1Y3RvckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybU5vZGUqLCBU
RnVuY3Rpb24mLCBUT3BlcmF0b3IsIFRUeXBlKik7CisgICAgYm9vbCBhcnJheVNpemVFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1UeXBlZCogZXhwciwgaW50JiBzaXpl
KTsKKyAgICBib29sIGFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBUUHVibGljVHlwZSB0eXBlKTsKKyAgICBib29sIGFycmF5VHlwZUVycm9yQ2hlY2soY29u
c3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBhcnJheUVy
cm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1
YmxpY1R5cGUgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOworICAgIGJvb2wgdm9pZEVycm9y
Q2hlY2soY29uc3QgVFNvdXJjZUxvYyYsIGNvbnN0IFRTdHJpbmcmLCBjb25zdCBUUHVibGljVHlw
ZSYpOworICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYsIGNvbnN0IFRJ
bnRlcm1UeXBlZCopOworICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYs
IGNvbnN0IFRQdWJsaWNUeXBlJik7CisgICAgYm9vbCBzYW1wbGVyRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUsIGNvbnN0IGNoYXIqIHJl
YXNvbik7CisgICAgYm9vbCBzdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSk7CisgICAgYm9vbCBwYXJhbWV0ZXJT
YW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxp
ZmllciwgY29uc3QgVFR5cGUmIHR5cGUpOworICAgIGJvb2wgbm9uSW5pdENvbnN0RXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlw
ZSYgdHlwZSwgYm9vbCBhcnJheSk7CisgICAgYm9vbCBub25Jbml0RXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSwg
VFZhcmlhYmxlKiYgdmFyaWFibGUpOworICAgIGJvb2wgcGFyYW1FcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVh
bGlmaWVyLCBUVHlwZSogdHlwZSk7CisgICAgYm9vbCBleHRlbnNpb25FcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmKTsKIAorICAgIGNvbnN0IFRQcmFnbWEm
IHByYWdtYSgpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGl2ZUhhbmRsZXIucHJhZ21hKCk7IH0KICAg
ICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dGVuc2lvbkJlaGF2aW9yKCkgY29uc3QgeyBy
ZXR1cm4gZGlyZWN0aXZlSGFuZGxlci5leHRlbnNpb25CZWhhdmlvcigpOyB9CiAgICAgYm9vbCBz
dXBwb3J0c0V4dGVuc2lvbihjb25zdCBjaGFyKiBleHRlbnNpb24pOwotICAgIHZvaWQgaGFuZGxl
RXh0ZW5zaW9uRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBleHROYW1lLCBjb25zdCBj
aGFyKiBiZWhhdmlvcik7Ci0KLSAgICBjb25zdCBUUHJhZ21hJiBwcmFnbWEoKSBjb25zdCB7IHJl
dHVybiBkaXJlY3RpdmVIYW5kbGVyLnByYWdtYSgpOyB9Ci0gICAgdm9pZCBoYW5kbGVQcmFnbWFE
aXJlY3RpdmUoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlKTsK
KyAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBjaGFyKiBleHRlbnNpb24pIGNvbnN0
OwogCiAgICAgYm9vbCBjb250YWluc1NhbXBsZXIoVFR5cGUmIHR5cGUpOwogICAgIGJvb2wgYXJl
QWxsQ2hpbGRDb25zdChUSW50ZXJtQWdncmVnYXRlKiBhZ2dyTm9kZSk7Ci0gICAgY29uc3QgVEZ1
bmN0aW9uKiBmaW5kRnVuY3Rpb24oaW50IGxpbmUsIFRGdW5jdGlvbiogcGZuQ2FsbCwgYm9vbCAq
YnVpbHRJbiA9IDApOwotICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxpemVyKFRTb3VyY2VMb2MgbGlu
ZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHBUeXBlLAorICAgIGNvbnN0IFRG
dW5jdGlvbiogZmluZEZ1bmN0aW9uKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRGdW5jdGlvbiog
cGZuQ2FsbCwgYm9vbCAqYnVpbHRJbiA9IDApOworICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxpemVy
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
JiBwVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluaXRp
YWxpemVyLCBUSW50ZXJtTm9kZSomIGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFyaWFibGUgPSAw
KTsKLSAgICBib29sIGFycmF5U2V0TWF4U2l6ZShUSW50ZXJtU3ltYm9sKiwgVFR5cGUqLCBpbnQs
IGJvb2wsIFRTb3VyY2VMb2MpOwogCi0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdHJ1Y3RvcihU
SW50ZXJtTm9kZSosIGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBURnVuY3Rpb24qLCBUU291cmNl
TG9jKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0cnVjdG9yKFRJbnRlcm1Ob2RlKiwgY29u
c3QgVFR5cGUqLCBUT3BlcmF0b3IsIFRGdW5jdGlvbiosIGNvbnN0IFRTb3VyY2VMb2MmKTsKICAg
ICBUSW50ZXJtVHlwZWQqIGZvbGRDb25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUqIGFn
Z3JOb2RlLCBjb25zdCBUVHlwZSYgdHlwZSk7Ci0gICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RT
dHJ1Y3QoVEludGVybU5vZGUqLCBUVHlwZSosIGludCwgVFNvdXJjZUxvYywgYm9vbCBzdWJzZXQp
OwotICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSosIFRPcGVy
YXRvciwgVEludGVybU5vZGUqLCBUU291cmNlTG9jLCBib29sIHN1YnNldCk7Ci0gICAgVEludGVy
bVR5cGVkKiBhZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBlZCos
IFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhOb2RlKGludCAs
IFRJbnRlcm1UeXBlZCosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RB
cnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSk7
Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJbnRlcm1UeXBl
ZCosIFRTb3VyY2VMb2MpOworICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0U3RydWN0KFRJbnRl
cm1Ob2RlKiwgVFR5cGUqLCBpbnQsIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7Cisg
ICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9y
LCBUSW50ZXJtTm9kZSosIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7CisgICAgVElu
dGVybVR5cGVkKiBhZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1UeXBl
ZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0TWF0cml4
Tm9kZShpbnQgLCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVy
bVR5cGVkKiBhZGRDb25zdEFycmF5Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwg
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSk7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVj
dChUU3RyaW5nJiAsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50
ZXJtVHlwZWQqIGFkZEluZGV4RXhwcmVzc2lvbihUSW50ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9u
LCBjb25zdCBUU291cmNlTG9jJiBsb2NhdGlvbiwgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Np
b24pOwogCiAgICAgLy8gUGVyZm9ybXMgYW4gZXJyb3IgY2hlY2sgZm9yIGVtYmVkZGVkIHN0cnVj
dCBkZWNsYXJhdGlvbnMuCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFuIGVycm9yIHdhcyByYWlz
ZWQgZHVlIHRvIHRoZSBkZWNsYXJhdGlvbiBvZgogICAgIC8vIHRoaXMgc3RydWN0LgotICAgIGJv
b2wgZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihUU291cmNlTG9jIGxpbmUsIGNvbnN0IFRTdHJpbmcm
IGlkZW50aWZpZXIpOworICAgIGJvb2wgZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihjb25zdCBUU291
cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsKICAgICB2b2lkIGV4aXRT
dHJ1Y3REZWNsYXJhdGlvbigpOwogCi0gICAgYm9vbCBzdHJ1Y3ROZXN0aW5nRXJyb3JDaGVjayhU
U291cmNlTG9jIGxpbmUsIGNvbnN0IFRUeXBlJiBmaWVsZFR5cGUpOworICAgIGJvb2wgc3RydWN0
TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEZpZWxkJiBm
aWVsZCk7CiB9OwogCiBpbnQgUGFQYXJzZVN0cmluZ3Moc2l6ZV90IGNvdW50LCBjb25zdCBjaGFy
KiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLApJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHAJKHJldmlzaW9u
IDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxs
b2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsMjQgKzIyOCwyNyBAQCB2b2lkIFRQb29sQWxs
b2NhdG9yOjpwb3BBbGwoKQogCiB2b2lkKiBUUG9vbEFsbG9jYXRvcjo6YWxsb2NhdGUoc2l6ZV90
IG51bUJ5dGVzKQogeworICAgIC8vCisgICAgLy8gSnVzdCBrZWVwIHNvbWUgaW50ZXJlc3Rpbmcg
c3RhdGlzdGljcy4KKyAgICAvLworICAgICsrbnVtQ2FsbHM7CisgICAgdG90YWxCeXRlcyArPSBu
dW1CeXRlczsKKwogICAgIC8vIElmIHdlIGFyZSB1c2luZyBndWFyZCBibG9ja3MsIGFsbCBhbGxv
Y2F0aW9ucyBhcmUgYnJhY2tldGVkIGJ5CiAgICAgLy8gdGhlbTogW2d1YXJkYmxvY2tdW2FsbG9j
YXRpb25dW2d1YXJkYmxvY2tdLiAgbnVtQnl0ZXMgaXMgaG93CiAgICAgLy8gbXVjaCBtZW1vcnkg
dGhlIGNhbGxlciBhc2tlZCBmb3IuICBhbGxvY2F0aW9uU2l6ZSBpcyB0aGUgdG90YWwKICAgICAv
LyBzaXplIGluY2x1ZGluZyBndWFyZCBibG9ja3MuICBJbiByZWxlYXNlIGJ1aWxkLAogICAgIC8v
IGd1YXJkQmxvY2tTaXplPTAgYW5kIHRoaXMgYWxsIGdldHMgb3B0aW1pemVkIGF3YXkuCiAgICAg
c2l6ZV90IGFsbG9jYXRpb25TaXplID0gVEFsbG9jYXRpb246OmFsbG9jYXRpb25TaXplKG51bUJ5
dGVzKTsKLSAgICAKLSAgICAvLwotICAgIC8vIEp1c3Qga2VlcCBzb21lIGludGVyZXN0aW5nIHN0
YXRpc3RpY3MuCi0gICAgLy8KLSAgICArK251bUNhbGxzOwotICAgIHRvdGFsQnl0ZXMgKz0gbnVt
Qnl0ZXM7CisgICAgLy8gRGV0ZWN0IGludGVnZXIgb3ZlcmZsb3cuCisgICAgaWYgKGFsbG9jYXRp
b25TaXplIDwgbnVtQnl0ZXMpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8KICAgICAvLyBE
byB0aGUgYWxsb2NhdGlvbiwgbW9zdCBsaWtlbHkgY2FzZSBmaXJzdCwgZm9yIGVmZmljaWVuY3ku
CiAgICAgLy8gVGhpcyBzdGVwIGNvdWxkIGJlIG1vdmVkIHRvIGJlIGlubGluZSBzb21ldGltZS4K
ICAgICAvLwotICAgIGlmIChjdXJyZW50UGFnZU9mZnNldCArIGFsbG9jYXRpb25TaXplIDw9IHBh
Z2VTaXplKSB7CisgICAgaWYgKGFsbG9jYXRpb25TaXplIDw9IHBhZ2VTaXplIC0gY3VycmVudFBh
Z2VPZmZzZXQpIHsKICAgICAgICAgLy8KICAgICAgICAgLy8gU2FmZSB0byBhbGxvY2F0ZSBmcm9t
IGN1cnJlbnRQYWdlT2Zmc2V0LgogICAgICAgICAvLwpAQCAtMjU2LDEyICsyNTksMTYgQEAgdm9p
ZCogVFBvb2xBbGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBudQogICAgICAgICByZXR1cm4gaW5p
dGlhbGl6ZUFsbG9jYXRpb24oaW5Vc2VMaXN0LCBtZW1vcnksIG51bUJ5dGVzKTsKICAgICB9CiAK
LSAgICBpZiAoYWxsb2NhdGlvblNpemUgKyBoZWFkZXJTa2lwID4gcGFnZVNpemUpIHsKKyAgICBp
ZiAoYWxsb2NhdGlvblNpemUgPiBwYWdlU2l6ZSAtIGhlYWRlclNraXApIHsKICAgICAgICAgLy8K
ICAgICAgICAgLy8gRG8gYSBtdWx0aS1wYWdlIGFsbG9jYXRpb24uICBEb24ndCBtaXggdGhlc2Ug
d2l0aCB0aGUgb3RoZXJzLgogICAgICAgICAvLyBUaGUgT1MgaXMgZWZmaWNpZW50IGFuZCBhbGxv
Y2F0aW5nIGFuZCBmcmVlLWluZyBtdWx0aXBsZSBwYWdlcy4KICAgICAgICAgLy8KICAgICAgICAg
c2l6ZV90IG51bUJ5dGVzVG9BbGxvYyA9IGFsbG9jYXRpb25TaXplICsgaGVhZGVyU2tpcDsKKyAg
ICAgICAgLy8gRGV0ZWN0IGludGVnZXIgb3ZlcmZsb3cuCisgICAgICAgIGlmIChudW1CeXRlc1Rv
QWxsb2MgPCBhbGxvY2F0aW9uU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiAwOworCiAgICAgICAg
IHRIZWFkZXIqIG1lbW9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dEhlYWRlcio+KDo6bmV3IGNoYXJb
bnVtQnl0ZXNUb0FsbG9jXSk7CiAgICAgICAgIGlmIChtZW1vcnkgPT0gMCkKICAgICAgICAgICAg
IHJldHVybiAwOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1No
SGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1NoSGFuZGxlLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiBjbGFzcyBMb25nTmFtZU1hcDsKIGNsYXNzIFRDb21waWxlcjsKIGNsYXNzIFREZXBlbmRl
bmN5R3JhcGg7CitjbGFzcyBUcmFuc2xhdG9ySExTTDsKIAogLy8KIC8vIEhlbHBlciBmdW5jdGlv
biB0byBpZGVudGlmeSBzcGVjcyB0aGF0IGFyZSBiYXNlZCBvbiB0aGUgV2ViR0wgc3BlYywKQEAg
LTQyLDYgKzQzLDcgQEAgcHVibGljOgogICAgIFRTaEhhbmRsZUJhc2UoKTsKICAgICB2aXJ0dWFs
IH5UU2hIYW5kbGVCYXNlKCk7CiAgICAgdmlydHVhbCBUQ29tcGlsZXIqIGdldEFzQ29tcGlsZXIo
KSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBUcmFuc2xhdG9ySExTTCogZ2V0QXNUcmFuc2xh
dG9ySExTTCgpIHsgcmV0dXJuIDA7IH0KIAogcHJvdGVjdGVkOgogICAgIC8vIE1lbW9yeSBhbGxv
Y2F0b3IuIEFsbG9jYXRlcyBhbmQgdHJhY2tzIG1lbW9yeSByZXF1aXJlZCBieSB0aGUgY29tcGls
ZXIuCkBAIC04MSw4ICs4Myw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIEluaXRCdWlsdEluU3lt
Ym9sVGFibGUoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpOwogICAgIC8vIENs
ZWFycyB0aGUgcmVzdWx0cyBmcm9tIHRoZSBwcmV2aW91cyBjb21waWxhdGlvbi4KICAgICB2b2lk
IGNsZWFyUmVzdWx0cygpOwotICAgIC8vIFJldHVybiB0cnVlIGlmIGZ1bmN0aW9uIHJlY3Vyc2lv
biBpcyBkZXRlY3RlZC4KLSAgICBib29sIGRldGVjdFJlY3Vyc2lvbihUSW50ZXJtTm9kZSogcm9v
dCk7CisgICAgLy8gUmV0dXJuIHRydWUgaWYgZnVuY3Rpb24gcmVjdXJzaW9uIGlzIGRldGVjdGVk
IG9yIGNhbGwgZGVwdGggZXhjZWVkZWQuCisgICAgYm9vbCBkZXRlY3RDYWxsRGVwdGgoVEludGVy
bU5vZGUqIHJvb3QsIFRJbmZvU2luayYgaW5mb1NpbmssIGJvb2wgbGltaXRDYWxsU3RhY2tEZXB0
aCk7CiAgICAgLy8gUmV3cml0ZXMgYSBzaGFkZXIncyBpbnRlcm1lZGlhdGUgdHJlZSBhY2NvcmRp
bmcgdG8gdGhlIENTUyBTaGFkZXJzIHNwZWMuCiAgICAgdm9pZCByZXdyaXRlQ1NTU2hhZGVyKFRJ
bnRlcm1Ob2RlKiByb290KTsKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHNoYWRl
ciBkb2VzIG5vdCBleGNlZWQgdGhlIG1pbmltdW0KQEAgLTEwNCw4ICsxMDYsMTIgQEAgcHJvdGVj
dGVkOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2hhZGVyIGRvZXMgbm90IHVzZSBzYW1w
bGVyIGRlcGVuZGVudCB2YWx1ZXMgdG8gYWZmZWN0IGNvbnRyb2wgCiAgICAgLy8gZmxvdyBvciBp
biBvcGVyYXRpb25zIHdob3NlIHRpbWUgY2FuIGRlcGVuZCBvbiB0aGUgaW5wdXQgdmFsdWVzLgog
ICAgIGJvb2wgZW5mb3JjZUZyYWdtZW50U2hhZGVyVGltaW5nUmVzdHJpY3Rpb25zKGNvbnN0IFRE
ZXBlbmRlbmN5R3JhcGgmIGdyYXBoKTsKKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgbWF4aW11
bSBleHByZXNzaW9uIGNvbXBsZXhpdHkgYmVsb3cgdGhlIGxpbWl0LgorICAgIGJvb2wgbGltaXRF
eHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8gR2V0IGJ1aWx0
LWluIGV4dGVuc2lvbnMgd2l0aCBkZWZhdWx0IGJlaGF2aW9yLgogICAgIGNvbnN0IFRFeHRlbnNp
b25CZWhhdmlvciYgZ2V0RXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdDsKKyAgICAvLyBHZXQgdGhl
IHJlc291cmNlcyBzZXQgYnkgSW5pdEJ1aWx0SW5TeW1ib2xUYWJsZQorICAgIGNvbnN0IFNoQnVp
bHRJblJlc291cmNlcyYgZ2V0UmVzb3VyY2VzKCkgY29uc3Q7CiAKICAgICBjb25zdCBBcnJheUJv
dW5kc0NsYW1wZXImIGdldEFycmF5Qm91bmRzQ2xhbXBlcigpIGNvbnN0OwogICAgIFNoQXJyYXlJ
bmRleENsYW1waW5nU3RyYXRlZ3kgZ2V0QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3koKSBjb25z
dDsKQEAgLTExNiw2ICsxMjIsMTAgQEAgcHJpdmF0ZToKICAgICBTaFNoYWRlclNwZWMgc2hhZGVy
U3BlYzsKIAogICAgIGludCBtYXhVbmlmb3JtVmVjdG9yczsKKyAgICBpbnQgbWF4RXhwcmVzc2lv
bkNvbXBsZXhpdHk7CisgICAgaW50IG1heENhbGxTdGFja0RlcHRoOworCisgICAgU2hCdWlsdElu
UmVzb3VyY2VzIGNvbXBpbGVSZXNvdXJjZXM7CiAKICAgICAvLyBCdWlsdC1pbiBzeW1ib2wgdGFi
bGUgZm9yIHRoZSBnaXZlbiBsYW5ndWFnZSwgc3BlYywgYW5kIHJlc291cmNlcy4KICAgICAvLyBJ
dCBpcyBwcmVzZXJ2ZWQgZnJvbSBjb21waWxlLXRvLWNvbXBpbGUuCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwCShyZXZp
c2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hh
ZGVyTGFuZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRlICJjb21w
aWxlci9Jbml0aWFsaXplRGxsLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL2xl
bmd0aF9saW1pdHMuaCIKICNpbmNsdWRlICJjb21waWxlci9TaEhhbmRsZS5oIgorI2luY2x1ZGUg
ImNvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmgiCiAKIC8vCiAvLyBUaGlzIGlzIHRoZSBwbGF0Zm9y
bSBpbmRlcGVuZGVudCBpbnRlcmZhY2UgYmV0d2VlbiBhbiBPR0wgZHJpdmVyCkBAIC0xMjYsNiAr
MTI3LDcgQEAgdm9pZCBTaEluaXRCdWlsdEluUmVzb3VyY2VzKFNoQnVpbHRJblJlcwogICAgIHJl
c291cmNlcy0+T0VTX0VHTF9pbWFnZV9leHRlcm5hbCA9IDA7CiAgICAgcmVzb3VyY2VzLT5BUkJf
dGV4dHVyZV9yZWN0YW5nbGUgPSAwOwogICAgIHJlc291cmNlcy0+RVhUX2RyYXdfYnVmZmVycyA9
IDA7CisgICAgcmVzb3VyY2VzLT5FWFRfZnJhZ19kZXB0aCA9IDA7CiAKICAgICAvLyBEaXNhYmxl
IGhpZ2hwIHByZWNpc2lvbiBpbiBmcmFnbWVudCBzaGFkZXIgYnkgZGVmYXVsdC4KICAgICByZXNv
dXJjZXMtPkZyYWdtZW50UHJlY2lzaW9uSGlnaCA9IDA7CkBAIC0zNTEsMyArMzUzLDIxIEBAIHZv
aWQgU2hHZXROYW1lSGFzaGluZ0VudHJ5KGNvbnN0IFNoSGFuZGwKICAgICAvLyBUbyBiZSBvbiB0
aGUgc2FmZSBzaWRlIGluIGNhc2UgdGhlIHNvdXJjZSBpcyBsb25nZXIgdGhhbiBleHBlY3RlZC4K
ICAgICBoYXNoZWROYW1lW2xlbiAtIDFdID0gJ1wwJzsKIH0KKwordm9pZCBTaEdldEluZm9Qb2lu
dGVyKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwgU2hTaGFkZXJJbmZvIHBuYW1lLCB2b2lkKiogcGFy
YW1zKQoreworICAgIGlmICghaGFuZGxlIHx8ICFwYXJhbXMpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFRTaEhhbmRsZUJhc2UqIGJhc2UgPSBzdGF0aWNfY2FzdDxUU2hIYW5kbGVCYXNlKj4oaGFu
ZGxlKTsKKyAgICBUcmFuc2xhdG9ySExTTCogdHJhbnNsYXRvciA9IGJhc2UtPmdldEFzVHJhbnNs
YXRvckhMU0woKTsKKyAgICBpZiAoIXRyYW5zbGF0b3IpIHJldHVybjsKKworICAgIHN3aXRjaChw
bmFtZSkKKyAgICB7CisgICAgY2FzZSBTSF9BQ1RJVkVfVU5JRk9STVNfQVJSQVk6CisgICAgICAg
ICpwYXJhbXMgPSAodm9pZCopJnRyYW5zbGF0b3ItPmdldFVuaWZvcm1zKCk7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorfQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3Bw
CShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvU3ltYm9sVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw0OCArMTcsMzQgQEAKIAog
I2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSAiY29t
bW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlIDxjbGltaXRzPgogCiBUVHlwZTo6VFR5cGUoY29u
c3QgVFB1YmxpY1R5cGUgJnApIDoKLSAgICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJlY2lzaW9u
KHAucHJlY2lzaW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUpLCBtYXRy
aXgocC5tYXRyaXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXplKSwKLSAg
ICAgICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCksIHN0cnVj
dHVyZSgwKSwgc3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxk
TmFtZSgwKSwgbWFuZ2xlZCgwKSwgdHlwZU5hbWUoMCkKKyAgICAgICAgICAgIHR5cGUocC50eXBl
KSwgcHJlY2lzaW9uKHAucHJlY2lzaW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShw
LnNpemUpLCBtYXRyaXgocC5tYXRyaXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJy
YXlTaXplKSwgc3RydWN0dXJlKDApCiB7Ci0gICAgaWYgKHAudXNlckRlZikgeworICAgIGlmIChw
LnVzZXJEZWYpCiAgICAgICAgIHN0cnVjdHVyZSA9IHAudXNlckRlZi0+Z2V0U3RydWN0KCk7Ci0g
ICAgICAgIHR5cGVOYW1lID0gTmV3UG9vbFRTdHJpbmcocC51c2VyRGVmLT5nZXRUeXBlTmFtZSgp
LmNfc3RyKCkpOwotICAgICAgICBjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsKLSAgICB9
CiB9CiAKIC8vCiAvLyBSZWN1cnNpdmVseSBnZW5lcmF0ZSBtYW5nbGVkIG5hbWVzLgogLy8KLXZv
aWQgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYgbWFuZ2xlZE5hbWUpCitUU3RyaW5n
IFRUeXBlOjpidWlsZE1hbmdsZWROYW1lKCkgY29uc3QKIHsKKyAgICBUU3RyaW5nIG1hbmdsZWRO
YW1lOwogICAgIGlmIChpc01hdHJpeCgpKQogICAgICAgICBtYW5nbGVkTmFtZSArPSAnbSc7CiAg
ICAgZWxzZSBpZiAoaXNWZWN0b3IoKSkKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ3YnOwogCiAg
ICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBFYnRGbG9hdDogICAgICAgICAgICAgIG1hbmds
ZWROYW1lICs9ICdmJzsgICAgICBicmVhazsKLSAgICBjYXNlIEVidEludDogICAgICAgICAgICAg
ICAgbWFuZ2xlZE5hbWUgKz0gJ2knOyAgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0Qm9vbDogICAg
ICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAnYic7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFYnRT
YW1wbGVyMkQ6ICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJzMiI7ICAgICBicmVhazsKLSAgICBj
YXNlIEVidFNhbXBsZXJDdWJlOiAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInNDIjsgICAgIGJyZWFr
OwotICAgIGNhc2UgRWJ0U3RydWN0OgotICAgICAgICBtYW5nbGVkTmFtZSArPSAic3RydWN0LSI7
Ci0gICAgICAgIGlmICh0eXBlTmFtZSkKLSAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICp0eXBl
TmFtZTsKLSAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
ICAgICAgICBtYW5nbGVkTmFtZSArPSAnLSc7Ci0gICAgICAgICAgICAgICAgKCpzdHJ1Y3R1cmUp
W2ldLnR5cGUtPmJ1aWxkTWFuZ2xlZE5hbWUobWFuZ2xlZE5hbWUpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRGbG9h
dDogICAgICAgbWFuZ2xlZE5hbWUgKz0gJ2YnOyAgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0SW50
OiAgICAgICAgIG1hbmdsZWROYW1lICs9ICdpJzsgICAgICBicmVhazsKKyAgICBjYXNlIEVidEJv
b2w6ICAgICAgICBtYW5nbGVkTmFtZSArPSAnYic7ICAgICAgYnJlYWs7CisgICAgY2FzZSBFYnRT
YW1wbGVyMkQ6ICAgbWFuZ2xlZE5hbWUgKz0gInMyIjsgICAgIGJyZWFrOworICAgIGNhc2UgRWJ0
U2FtcGxlckN1YmU6IG1hbmdsZWROYW1lICs9ICJzQyI7ICAgICBicmVhazsKKyAgICBjYXNlIEVi
dFN0cnVjdDogICAgICBtYW5nbGVkTmFtZSArPSBzdHJ1Y3R1cmUtPm1hbmdsZWROYW1lKCk7IGJy
ZWFrOworICAgIGRlZmF1bHQ6ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIG1hbmds
ZWROYW1lICs9IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIGdldE5vbWluYWxTaXplKCkpOwpAQCAt
NjksNTMgKzU1LDcyIEBAIHZvaWQgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYgbWEK
ICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gYnVmOwogICAgICAgICBtYW5nbGVkTmFtZSArPSAnXSc7
CiAgICAgfQorICAgIHJldHVybiBtYW5nbGVkTmFtZTsKIH0KIAotaW50IFRUeXBlOjpnZXRTdHJ1
Y3RTaXplKCkgY29uc3QKK3NpemVfdCBUVHlwZTo6Z2V0T2JqZWN0U2l6ZSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFnZXRTdHJ1Y3QoKSkgewotICAgICAgICBhc3NlcnQoZmFsc2UgJiYgIk5vdCBhIHN0
cnVjdCIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgc2l6ZV90IHRvdGFsU2l6ZSA9
IDA7CiAKLSAgICBpZiAoc3RydWN0dXJlU2l6ZSA9PSAwKQotICAgICAgICBmb3IgKFRUeXBlTGlz
dDo6Y29uc3RfaXRlcmF0b3IgdGwgPSBnZXRTdHJ1Y3QoKS0+YmVnaW4oKTsgdGwgIT0gZ2V0U3Ry
dWN0KCktPmVuZCgpOyB0bCsrKQotICAgICAgICAgICAgc3RydWN0dXJlU2l6ZSArPSAoKCp0bCku
dHlwZSktPmdldE9iamVjdFNpemUoKTsKKyAgICBpZiAoZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3Ry
dWN0KQorICAgICAgICB0b3RhbFNpemUgPSBzdHJ1Y3R1cmUtPm9iamVjdFNpemUoKTsKKyAgICBl
bHNlIGlmIChtYXRyaXgpCisgICAgICAgIHRvdGFsU2l6ZSA9IHNpemUgKiBzaXplOworICAgIGVs
c2UKKyAgICAgICAgdG90YWxTaXplID0gc2l6ZTsKKworICAgIGlmIChpc0FycmF5KCkpIHsKKyAg
ICAgICAgc2l6ZV90IGFycmF5U2l6ZSA9IGdldEFycmF5U2l6ZSgpOworICAgICAgICBpZiAoYXJy
YXlTaXplID4gSU5UX01BWCAvIHRvdGFsU2l6ZSkKKyAgICAgICAgICAgIHRvdGFsU2l6ZSA9IElO
VF9NQVg7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRvdGFsU2l6ZSAqPSBhcnJheVNpemU7
CisgICAgfQogCi0gICAgcmV0dXJuIHN0cnVjdHVyZVNpemU7CisgICAgcmV0dXJuIHRvdGFsU2l6
ZTsKIH0KIAotdm9pZCBUVHlwZTo6Y29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkKK2Jvb2wg
VFN0cnVjdHVyZTo6Y29udGFpbnNBcnJheXMoKSBjb25zdAogewotICAgIGlmICghZ2V0U3RydWN0
KCkpIHsKLSAgICAgICAgcmV0dXJuOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZpZWxk
cy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqbUZp
ZWxkcylbaV0tPnR5cGUoKTsKKyAgICAgICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJheSgpIHx8IGZp
ZWxkVHlwZS0+aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQogCi0gICAgaW50IG1heE5lc3Rp
bmcgPSAwOwotICAgIGZvciAoVFR5cGVMaXN0Ojpjb25zdF9pdGVyYXRvciB0bCA9IGdldFN0cnVj
dCgpLT5iZWdpbigpOyB0bCAhPSBnZXRTdHJ1Y3QoKS0+ZW5kKCk7ICsrdGwpIHsKLSAgICAgICAg
bWF4TmVzdGluZyA9IHN0ZDo6bWF4KG1heE5lc3RpbmcsICgoKnRsKS50eXBlKS0+Z2V0RGVlcGVz
dFN0cnVjdE5lc3RpbmcoKSk7CitUU3RyaW5nIFRTdHJ1Y3R1cmU6OmJ1aWxkTWFuZ2xlZE5hbWUo
KSBjb25zdAoreworICAgIFRTdHJpbmcgbWFuZ2xlZE5hbWUoInN0cnVjdC0iKTsKKyAgICBtYW5n
bGVkTmFtZSArPSAqbU5hbWU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5z
aXplKCk7ICsraSkgeworICAgICAgICBtYW5nbGVkTmFtZSArPSAnLSc7CisgICAgICAgIG1hbmds
ZWROYW1lICs9ICgqbUZpZWxkcylbaV0tPnR5cGUoKS0+Z2V0TWFuZ2xlZE5hbWUoKTsKICAgICB9
Ci0KLSAgICBkZWVwZXN0U3RydWN0TmVzdGluZyA9IDEgKyBtYXhOZXN0aW5nOworICAgIHJldHVy
biBtYW5nbGVkTmFtZTsKIH0KIAotYm9vbCBUVHlwZTo6aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJy
YXlzKCkgY29uc3QKK3NpemVfdCBUU3RydWN0dXJlOjpjYWxjdWxhdGVPYmplY3RTaXplKCkgY29u
c3QKIHsKLSAgICBpZiAoIXN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRz
LT5zaXplKCk7ICsraSkgeworICAgICAgICBzaXplX3QgZmllbGRTaXplID0gKCptRmllbGRzKVtp
XS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIGlmIChmaWVsZFNpemUgPiBJTlRf
TUFYIC0gc2l6ZSkKKyAgICAgICAgICAgIHNpemUgPSBJTlRfTUFYOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzaXplICs9IGZpZWxkU2l6ZTsKICAgICB9CisgICAgcmV0dXJuIHNpemU7Cit9
CiAKLSAgICBmb3IgKFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyID0gc3RydWN0dXJl
LT5iZWdpbigpOyBtZW1iZXIgIT0gc3RydWN0dXJlLT5lbmQoKTsgbWVtYmVyKyspCi0gICAgewot
ICAgICAgICBpZiAobWVtYmVyLT50eXBlLT5pc0FycmF5KCkgfHwKLSAgICAgICAgICAgIG1lbWJl
ci0+dHlwZS0+aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CitpbnQgVFN0cnVjdHVyZTo6Y2FsY3VsYXRl
RGVlcGVzdE5lc3RpbmcoKSBjb25zdAoreworICAgIGludCBtYXhOZXN0aW5nID0gMDsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1GaWVsZHMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIG1h
eE5lc3RpbmcgPSBzdGQ6Om1heChtYXhOZXN0aW5nLCAoKm1GaWVsZHMpW2ldLT50eXBlKCktPmdl
dERlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkpOwogICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gMSArIG1heE5lc3Rpbmc7CiB9CiAKIC8vCkBAIC0xOTYsODQgKzIwMSw4IEBAIHZv
aWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvT3BlcmF0b3IKIHZvaWQgVFN5bWJvbFRhYmxl
TGV2ZWw6OnJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFRTdHJpbmcm
IGV4dCkKIHsKICAgICBmb3IgKHRMZXZlbDo6aXRlcmF0b3IgaXQgPSBsZXZlbC5iZWdpbigpOyBp
dCAhPSBsZXZlbC5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoaXQtPnNlY29uZC0+aXNGdW5j
dGlvbigpKSB7Ci0gICAgICAgICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8
VEZ1bmN0aW9uKj4oaXQtPnNlY29uZCk7Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24tPmdldE5h
bWUoKSA9PSBuYW1lKQotICAgICAgICAgICAgICAgIGZ1bmN0aW9uLT5yZWxhdGVUb0V4dGVuc2lv
bihleHQpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1UU3ltYm9sOjpUU3ltYm9sKGNvbnN0IFRT
eW1ib2wmIGNvcHlPZikKLXsKLSAgICBuYW1lID0gTmV3UG9vbFRTdHJpbmcoY29weU9mLm5hbWUt
PmNfc3RyKCkpOwotICAgIHVuaXF1ZUlkID0gY29weU9mLnVuaXF1ZUlkOwotfQotCi1UVmFyaWFi
bGU6OlRWYXJpYWJsZShjb25zdCBUVmFyaWFibGUmIGNvcHlPZiwgVFN0cnVjdHVyZU1hcCYgcmVt
YXBwZXIpIDogVFN5bWJvbChjb3B5T2YpCi17Ci0gICAgdHlwZS5jb3B5VHlwZShjb3B5T2YudHlw
ZSwgcmVtYXBwZXIpOwotICAgIHVzZXJUeXBlID0gY29weU9mLnVzZXJUeXBlOwotICAgIC8vIGZv
ciBidWlsdEluIHN5bWJvbCB0YWJsZSBsZXZlbCwgdW5pb25BcnJheSBhbmQgYXJyYXlJbmZvcm1h
dGlvbiBwb2ludGVycyBzaG91bGQgYmUgTlVMTAotICAgIGFzc2VydChjb3B5T2YuYXJyYXlJbmZv
cm1hdGlvblR5cGUgPT0gMCk7Ci0gICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOwotCi0gICAg
aWYgKGNvcHlPZi51bmlvbkFycmF5KSB7Ci0gICAgICAgIGFzc2VydCghY29weU9mLnR5cGUuZ2V0
U3RydWN0KCkpOwotICAgICAgICBhc3NlcnQoY29weU9mLnR5cGUuZ2V0T2JqZWN0U2l6ZSgpID09
IDEpOwotICAgICAgICB1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAg
IHVuaW9uQXJyYXlbMF0gPSBjb3B5T2YudW5pb25BcnJheVswXTsKLSAgICB9IGVsc2UKLSAgICAg
ICAgdW5pb25BcnJheSA9IDA7Ci19Ci0KLVRWYXJpYWJsZSogVFZhcmlhYmxlOjpjbG9uZShUU3Ry
dWN0dXJlTWFwJiByZW1hcHBlcikKLXsKLSAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRW
YXJpYWJsZSgqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgcmV0dXJuIHZhcmlhYmxlOwotfQotCi1U
RnVuY3Rpb246OlRGdW5jdGlvbihjb25zdCBURnVuY3Rpb24mIGNvcHlPZiwgVFN0cnVjdHVyZU1h
cCYgcmVtYXBwZXIpIDogVFN5bWJvbChjb3B5T2YpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBjb3B5T2YucGFyYW1ldGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBUUGFy
YW1ldGVyIHBhcmFtOwotICAgICAgICBwYXJhbWV0ZXJzLnB1c2hfYmFjayhwYXJhbSk7Ci0gICAg
ICAgIHBhcmFtZXRlcnMuYmFjaygpLmNvcHlQYXJhbShjb3B5T2YucGFyYW1ldGVyc1tpXSwgcmVt
YXBwZXIpOwotICAgIH0KLQotICAgIHJldHVyblR5cGUuY29weVR5cGUoY29weU9mLnJldHVyblR5
cGUsIHJlbWFwcGVyKTsKLSAgICBtYW5nbGVkTmFtZSA9IGNvcHlPZi5tYW5nbGVkTmFtZTsKLSAg
ICBvcCA9IGNvcHlPZi5vcDsKLSAgICBkZWZpbmVkID0gY29weU9mLmRlZmluZWQ7Ci19Ci0KLVRG
dW5jdGlvbiogVEZ1bmN0aW9uOjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLXsKLSAg
ICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigqdGhpcywgcmVtYXBwZXIpOwot
Ci0gICAgcmV0dXJuIGZ1bmN0aW9uOwotfQotCi1UU3ltYm9sVGFibGVMZXZlbCogVFN5bWJvbFRh
YmxlTGV2ZWw6OmNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQotewotICAgIFRTeW1ib2xU
YWJsZUxldmVsICpzeW1UYWJsZUxldmVsID0gbmV3IFRTeW1ib2xUYWJsZUxldmVsKCk7Ci0gICAg
dExldmVsOjppdGVyYXRvciBpdGVyOwotICAgIGZvciAoaXRlciA9IGxldmVsLmJlZ2luKCk7IGl0
ZXIgIT0gbGV2ZWwuZW5kKCk7ICsraXRlcikgewotICAgICAgICBzeW1UYWJsZUxldmVsLT5pbnNl
cnQoKml0ZXItPnNlY29uZC0+Y2xvbmUocmVtYXBwZXIpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
c3ltVGFibGVMZXZlbDsKLX0KLQotdm9pZCBUU3ltYm9sVGFibGU6OmNvcHlUYWJsZShjb25zdCBU
U3ltYm9sVGFibGUmIGNvcHlPZikKLXsKLSAgICBUU3RydWN0dXJlTWFwIHJlbWFwcGVyOwotICAg
IHVuaXF1ZUlkID0gY29weU9mLnVuaXF1ZUlkOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgY29weU9mLnRhYmxlLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHRhYmxlLnB1c2hfYmFj
ayhjb3B5T2YudGFibGVbaV0tPmNsb25lKHJlbWFwcGVyKSk7Ci0gICAgfQotICAgIGZvciggdW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgY29weU9mLnByZWNpc2lvblN0YWNrLnNpemUoKTsgaSsrKSB7
Ci0gICAgICAgIHByZWNpc2lvblN0YWNrLnB1c2hfYmFjayggY29weU9mLnByZWNpc2lvblN0YWNr
W2ldICk7CisgICAgICAgIFRTeW1ib2wqIHN5bWJvbCA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGlm
IChzeW1ib2wtPmdldE5hbWUoKSA9PSBuYW1lKQorICAgICAgICAgICAgc3ltYm9sLT5yZWxhdGVU
b0V4dGVuc2lvbihleHQpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNTI5NzkpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCiAvLwpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKKyNpbmNs
dWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0luZm9TaW5rLmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCiAKQEAgLTQ5LDEzICs1MCwxNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZvaWQgc2V0VW5pcXVlSWQoaW50IGlkKSB7IHVuaXF1ZUlkID0gaWQ7IH0K
ICAgICBpbnQgZ2V0VW5pcXVlSWQoKSBjb25zdCB7IHJldHVybiB1bmlxdWVJZDsgfQotICAgIHZp
cnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0ID0gMDsJCi0gICAgVFN5
bWJvbChjb25zdCBUU3ltYm9sJik7Ci0gICAgdmlydHVhbCBUU3ltYm9sKiBjbG9uZShUU3RydWN0
dXJlTWFwJiByZW1hcHBlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAm
aW5mb1NpbmspIGNvbnN0ID0gMDsKKyAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRT
dHJpbmcmIGV4dCkgeyBleHRlbnNpb24gPSBleHQ7IH0KKyAgICBjb25zdCBUU3RyaW5nJiBnZXRF
eHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBleHRlbnNpb247IH0KKworcHJpdmF0ZToKKyAgICBE
SVNBTExPV19DT1BZX0FORF9BU1NJR04oVFN5bWJvbCk7CiAKLXByb3RlY3RlZDoKICAgICBjb25z
dCBUU3RyaW5nICpuYW1lOwogICAgIHVuc2lnbmVkIGludCB1bmlxdWVJZDsgICAgICAvLyBGb3Ig
cmVhbCBjb21wYXJpbmcgZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbgorICAgIFRTdHJpbmcgZXh0ZW5z
aW9uOwogfTsKIAogLy8KQEAgLTcwLDE1ICs3NCwxMyBAQCBwcm90ZWN0ZWQ6CiAvLwogY2xhc3Mg
VFZhcmlhYmxlIDogcHVibGljIFRTeW1ib2wgewogcHVibGljOgotICAgIFRWYXJpYWJsZShjb25z
dCBUU3RyaW5nICpuYW1lLCBjb25zdCBUVHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3lt
Ym9sKG5hbWUpLCB0eXBlKHQpLCB1c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCksIGFycmF5SW5m
b3JtYXRpb25UeXBlKDApIHsgfQorICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpuYW1lLCBj
b25zdCBUVHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUpLCB0eXBlKHQp
LCB1c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCkgeyB9CiAgICAgdmlydHVhbCB+VFZhcmlhYmxl
KCkgeyB9CiAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9ICAgIAogICAgIFRUeXBlJiBnZXRUeXBlKCkgeyByZXR1cm4gdHlwZTsgfSAgICAKICAgICBj
b25zdCBUVHlwZSYgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KICAgICBib29sIGlz
VXNlclR5cGUoKSBjb25zdCB7IHJldHVybiB1c2VyVHlwZTsgfQogICAgIHZvaWQgc2V0UXVhbGlm
aWVyKFRRdWFsaWZpZXIgcXVhbGlmaWVyKSB7IHR5cGUuc2V0UXVhbGlmaWVyKHF1YWxpZmllcik7
IH0KLSAgICB2b2lkIHVwZGF0ZUFycmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlICp0KSB7IGFycmF5
SW5mb3JtYXRpb25UeXBlID0gdDsgfQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9ybWF0aW9uVHlw
ZSgpIHsgcmV0dXJuIGFycmF5SW5mb3JtYXRpb25UeXBlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZHVtcChUSW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKIApAQCAtMTAwLDE2ICsxMDIsMTUgQEAg
cHVibGljOgogICAgICAgICBkZWxldGVbXSB1bmlvbkFycmF5OwogICAgICAgICB1bmlvbkFycmF5
ID0gY29uc3RBcnJheTsgIAogICAgIH0KLSAgICBUVmFyaWFibGUoY29uc3QgVFZhcmlhYmxlJiwg
VFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpOyAvLyBjb3B5IGNvbnN0cnVjdG9yCi0gICAgdmlydHVh
bCBUVmFyaWFibGUqIGNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKIAotcHJvdGVjdGVk
OgorcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFZhcmlhYmxlKTsKKwog
ICAgIFRUeXBlIHR5cGU7CiAgICAgYm9vbCB1c2VyVHlwZTsKICAgICAvLyB3ZSBhcmUgYXNzdW1p
bmcgdGhhdCBQb29sIEFsbG9jYXRvciB3aWxsIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgdG8g
dW5pb25BcnJheQogICAgIC8vIHdoZW4gdGhpcyBvYmplY3QgaXMgZGVzdHJveWVkCiAgICAgQ29u
c3RhbnRVbmlvbiAqdW5pb25BcnJheTsKLSAgICBUVHlwZSAqYXJyYXlJbmZvcm1hdGlvblR5cGU7
ICAvLyB0aGlzIGlzIHVzZWQgZm9yIHVwZGF0aW5nIG1heEFycmF5U2l6ZSBpbiBhbGwgdGhlIHJl
ZmVyZW5jZXMgdG8gYSBnaXZlbiBzeW1ib2wKIH07CiAKIC8vCkBAIC0xMTksMTEgKzEyMCw2IEBA
IHByb3RlY3RlZDoKIHN0cnVjdCBUUGFyYW1ldGVyIHsKICAgICBUU3RyaW5nICpuYW1lOwogICAg
IFRUeXBlKiB0eXBlOwotICAgIHZvaWQgY29weVBhcmFtKGNvbnN0IFRQYXJhbWV0ZXImIHBhcmFt
LCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIG5hbWUgPSBOZXdQb29s
VFN0cmluZyhwYXJhbS5uYW1lLT5jX3N0cigpKTsKLSAgICAgICAgdHlwZSA9IHBhcmFtLnR5cGUt
PmNsb25lKHJlbWFwcGVyKTsKLSAgICB9CiB9OwogCiAvLwpAQCAtMTYzLDkgKzE1OSw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbGF0ZVRvT3BlcmF0b3IoVE9wZXJhdG9yIG8pIHsgb3AgPSBvOyB9
CiAgICAgVE9wZXJhdG9yIGdldEJ1aWx0SW5PcCgpIGNvbnN0IHsgcmV0dXJuIG9wOyB9CiAKLSAg
ICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBleHRlbnNpb24g
PSBleHQ7IH0KLSAgICBjb25zdCBUU3RyaW5nJiBnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVy
biBleHRlbnNpb247IH0KLQogICAgIHZvaWQgc2V0RGVmaW5lZCgpIHsgZGVmaW5lZCA9IHRydWU7
IH0KICAgICBib29sIGlzRGVmaW5lZCgpIHsgcmV0dXJuIGRlZmluZWQ7IH0KIApAQCAtMTczLDE2
ICsxNjYsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IFRQYXJhbWV0ZXImIGdldFBhcmFtKHNpemVf
dCBpKSBjb25zdCB7IHJldHVybiBwYXJhbWV0ZXJzW2ldOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZHVtcChUSW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKLSAgICBURnVuY3Rpb24oY29uc3QgVEZ1
bmN0aW9uJiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpOwotICAgIHZpcnR1YWwgVEZ1bmN0aW9u
KiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcik7CiAKLXByb3RlY3RlZDoKK3ByaXZhdGU6
CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRGdW5jdGlvbik7CisKICAgICB0eXBlZGVm
IFRWZWN0b3I8VFBhcmFtZXRlcj4gVFBhcmFtTGlzdDsKICAgICBUUGFyYW1MaXN0IHBhcmFtZXRl
cnM7CiAgICAgVFR5cGUgcmV0dXJuVHlwZTsKICAgICBUU3RyaW5nIG1hbmdsZWROYW1lOwogICAg
IFRPcGVyYXRvciBvcDsKLSAgICBUU3RyaW5nIGV4dGVuc2lvbjsKICAgICBib29sIGRlZmluZWQ7
CiB9OwogCkBAIC0xOTgsMTcgKzE5MCwyMiBAQCBwdWJsaWM6CiAgICAgVFN5bWJvbFRhYmxlTGV2
ZWwoKSB7IH0KICAgICB+VFN5bWJvbFRhYmxlTGV2ZWwoKTsKIAotICAgIGJvb2wgaW5zZXJ0KFRT
eW1ib2wmIHN5bWJvbCkgCisgICAgYm9vbCBpbnNlcnQoY29uc3QgVFN0cmluZyAmbmFtZSwgVFN5
bWJvbCAmc3ltYm9sKQogICAgIHsKICAgICAgICAgLy8KICAgICAgICAgLy8gcmV0dXJuaW5nIHRy
dWUgbWVhbnMgc3ltYm9sIHdhcyBhZGRlZCB0byB0aGUgdGFibGUKICAgICAgICAgLy8KICAgICAg
ICAgdEluc2VydFJlc3VsdCByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdCA9IGxldmVsLmluc2VydCh0
TGV2ZWxQYWlyKHN5bWJvbC5nZXRNYW5nbGVkTmFtZSgpLCAmc3ltYm9sKSk7CisgICAgICAgIHJl
c3VsdCA9IGxldmVsLmluc2VydCh0TGV2ZWxQYWlyKG5hbWUsICZzeW1ib2wpKTsKIAogICAgICAg
ICByZXR1cm4gcmVzdWx0LnNlY29uZDsKICAgICB9CiAKKyAgICBib29sIGluc2VydChUU3ltYm9s
ICZzeW1ib2wpCisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KHN5bWJvbC5nZXRNYW5nbGVk
TmFtZSgpLCBzeW1ib2wpOworICAgIH0KKwogICAgIFRTeW1ib2wqIGZpbmQoY29uc3QgVFN0cmlu
ZyYgbmFtZSkgY29uc3QKICAgICB7CiAgICAgICAgIHRMZXZlbDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBsZXZlbC5maW5kKG5hbWUpOwpAQCAtMjMxLDcgKzIyOCw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlbGF0ZVRvT3BlcmF0b3IoY29uc3QgY2hhciogbmFtZSwgVE9wZXJhdG9yIG9wKTsKICAgICB2
b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFRTdHJpbmcmIGV4
dCk7CiAgICAgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0OwotICAgIFRTeW1i
b2xUYWJsZUxldmVsKiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcik7CiAKIHByb3RlY3Rl
ZDoKICAgICB0TGV2ZWwgbGV2ZWw7CkBAIC0yODIsNiArMjc4LDM1IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHRhYmxlW2N1cnJlbnRMZXZlbCgpXS0+aW5zZXJ0KHN5bWJvbCk7CiAgICAgfQog
CisgICAgYm9vbCBpbnNlcnRDb25zdEludChjb25zdCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCisg
ICAgeworICAgICAgICBUVmFyaWFibGUgKmNvbnN0YW50ID0gbmV3IFRWYXJpYWJsZShOZXdQb29s
VFN0cmluZyhuYW1lKSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0LCAxKSk7
CisgICAgICAgIGNvbnN0YW50LT5nZXRDb25zdFBvaW50ZXIoKS0+c2V0SUNvbnN0KHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIGluc2VydCgqY29uc3RhbnQpOworICAgIH0KKworICAgIGJvb2wgaW5z
ZXJ0QnVpbHRJbihUVHlwZSAqcnZhbHVlLCBjb25zdCBjaGFyICpuYW1lLCBUVHlwZSAqcHR5cGUx
LCBUVHlwZSAqcHR5cGUyID0gMCwgVFR5cGUgKnB0eXBlMyA9IDApCisgICAgeworICAgICAgICBU
RnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbihOZXdQb29sVFN0cmluZyhuYW1lKSwg
KnJ2YWx1ZSk7CisKKyAgICAgICAgVFBhcmFtZXRlciBwYXJhbTEgPSB7TlVMTCwgcHR5cGUxfTsK
KyAgICAgICAgZnVuY3Rpb24tPmFkZFBhcmFtZXRlcihwYXJhbTEpOworCisgICAgICAgIGlmKHB0
eXBlMikKKyAgICAgICAgeworICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTIgPSB7TlVMTCwg
cHR5cGUyfTsKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5hZGRQYXJhbWV0ZXIocGFyYW0yKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmKHB0eXBlMykKKyAgICAgICAgeworICAgICAgICAgICAgVFBh
cmFtZXRlciBwYXJhbTMgPSB7TlVMTCwgcHR5cGUzfTsKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5h
ZGRQYXJhbWV0ZXIocGFyYW0zKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBpbnNlcnQo
KmZ1bmN0aW9uKTsKKyAgICB9CisKICAgICBUU3ltYm9sKiBmaW5kKGNvbnN0IFRTdHJpbmcmIG5h
bWUsIGJvb2wqIGJ1aWx0SW4gPSAwLCBib29sICpzYW1lU2NvcGUgPSAwKSAKICAgICB7CiAgICAg
ICAgIGludCBsZXZlbCA9IGN1cnJlbnRMZXZlbCgpOwpAQCAtMzIxLDcgKzM0Niw2IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgaW50IGdldE1heFN5bWJvbElkKCkgeyByZXR1cm4gdW5pcXVlSWQ7IH0K
ICAgICB2b2lkIGR1bXAoVEluZm9TaW5rICZpbmZvU2luaykgY29uc3Q7Ci0gICAgdm9pZCBjb3B5
VGFibGUoY29uc3QgVFN5bWJvbFRhYmxlJiBjb3B5T2YpOwogCiAgICAgYm9vbCBzZXREZWZhdWx0
UHJlY2lzaW9uKCBjb25zdCBUUHVibGljVHlwZSYgdHlwZSwgVFByZWNpc2lvbiBwcmVjICl7CiAg
ICAgICAgIGlmIChJc1NhbXBsZXIodHlwZS50eXBlKSkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xhdG9ySExTTC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmNwcAkocmV2
aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Ry
YW5zbGF0b3JITFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtOSwxNSArOSwxNiBAQAogI2luY2x1ZGUg
ImNvbXBpbGVyL0luaXRpYWxpemVQYXJzZUNvbnRleHQuaCIKICNpbmNsdWRlICJjb21waWxlci9P
dXRwdXRITFNMLmgiCiAKLVRyYW5zbGF0b3JITFNMOjpUcmFuc2xhdG9ySExTTChTaFNoYWRlclR5
cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMpCi0gICAgOiBUQ29tcGlsZXIodHlwZSwgc3BlYykK
K1RyYW5zbGF0b3JITFNMOjpUcmFuc2xhdG9ySExTTChTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFk
ZXJTcGVjIHNwZWMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKKyAgICA6IFRDb21waWxlcih0eXBl
LCBzcGVjKSwgbU91dHB1dFR5cGUob3V0cHV0KQogewogfQogCiB2b2lkIFRyYW5zbGF0b3JITFNM
Ojp0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QpCiB7CiAgICAgVFBhcnNlQ29udGV4dCYgcGFy
c2VDb250ZXh0ID0gKkdldEdsb2JhbFBhcnNlQ29udGV4dCgpOwotICAgIHNoOjpPdXRwdXRITFNM
IG91dHB1dEhMU0wocGFyc2VDb250ZXh0KTsKKyAgICBzaDo6T3V0cHV0SExTTCBvdXRwdXRITFNM
KHBhcnNlQ29udGV4dCwgZ2V0UmVzb3VyY2VzKCksIG1PdXRwdXRUeXBlKTsKIAogICAgIG91dHB1
dEhMU0wub3V0cHV0KCk7CisgICAgbUFjdGl2ZVVuaWZvcm1zID0gb3V0cHV0SExTTC5nZXRVbmlm
b3JtcygpOwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Ry
YW5zbGF0b3JITFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xhdG9ySExTTC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQg
KGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8v
CkBAIC04LDEzICs4LDIwIEBACiAjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JITFNMX0hfCiAK
ICNpbmNsdWRlICJjb21waWxlci9TaEhhbmRsZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1VuaWZv
cm0uaCIKIAogY2xhc3MgVHJhbnNsYXRvckhMU0wgOiBwdWJsaWMgVENvbXBpbGVyIHsKIHB1Ymxp
YzoKLSAgICBUcmFuc2xhdG9ySExTTChTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNw
ZWMpOworICAgIFRyYW5zbGF0b3JITFNMKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMg
c3BlYywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KTsKKworICAgIHZpcnR1YWwgVHJhbnNsYXRvckhM
U0wgKmdldEFzVHJhbnNsYXRvckhMU0woKSB7IHJldHVybiB0aGlzOyB9CisgICAgY29uc3Qgc2g6
OkFjdGl2ZVVuaWZvcm1zICZnZXRVbmlmb3JtcygpIHsgcmV0dXJuIG1BY3RpdmVVbmlmb3Jtczsg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zbGF0ZShUSW50ZXJtTm9kZSog
cm9vdCk7CisKKyAgICBzaDo6QWN0aXZlVW5pZm9ybXMgbUFjdGl2ZVVuaWZvcm1zOworICAgIFNo
U2hhZGVyT3V0cHV0IG1PdXRwdXRUeXBlOwogfTsKIAogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFO
U0xBVE9SSExTTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1R5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1R5cGVzLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9UeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDMwICs3LDg1IEBACiAj
aWZuZGVmIF9UWVBFU19JTkNMVURFRAogI2RlZmluZSBfVFlQRVNfSU5DTFVERUQKIAorI2luY2x1
ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKICNpbmNsdWRlICJjb21waWxlci9CYXNlVHlwZXMu
aCIKICNpbmNsdWRlICJjb21waWxlci9Db21tb24uaCIKICNpbmNsdWRlICJjb21waWxlci9kZWJ1
Zy5oIgogCi1jbGFzcyBUVHlwZTsKIHN0cnVjdCBUUHVibGljVHlwZTsKK2NsYXNzIFRUeXBlOwog
Ci0vLwotLy8gTmVlZCB0byBoYXZlIGFzc29jaWF0aW9uIG9mIGxpbmUgbnVtYmVycyB0byB0eXBl
cyBpbiBhIGxpc3QgZm9yIGJ1aWxkaW5nIHN0cnVjdHMuCi0vLwotc3RydWN0IFRUeXBlTGluZSB7
Ci0gICAgVFR5cGUqIHR5cGU7Ci0gICAgaW50IGxpbmU7CitjbGFzcyBURmllbGQKK3sKK3B1Ymxp
YzoKKyAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpOwor
ICAgIFRGaWVsZChUVHlwZSogdHlwZSwgVFN0cmluZyogbmFtZSkgOiBtVHlwZSh0eXBlKSwgbU5h
bWUobmFtZSkge30KKworICAgIC8vIFRPRE8oYWxva3ApOiBXZSBzaG91bGQgb25seSByZXR1cm4g
Y29uc3QgdHlwZS4KKyAgICAvLyBGaXggaXQgYnkgdHdlYWtpbmcgZ3JhbW1hci4KKyAgICBUVHlw
ZSogdHlwZSgpIHsgcmV0dXJuIG1UeXBlOyB9CisgICAgY29uc3QgVFR5cGUqIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtVHlwZTsgfQorCisgICAgY29uc3QgVFN0cmluZyYgbmFtZSgpIGNvbnN0IHsg
cmV0dXJuICptTmFtZTsgfQorCitwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
TihURmllbGQpOworICAgIFRUeXBlKiBtVHlwZTsKKyAgICBUU3RyaW5nKiBtTmFtZTsKIH07Ci10
eXBlZGVmIFRWZWN0b3I8VFR5cGVMaW5lPiBUVHlwZUxpc3Q7CiAKLWlubGluZSBUVHlwZUxpc3Qq
IE5ld1Bvb2xUVHlwZUxpc3QoKQordHlwZWRlZiBUVmVjdG9yPFRGaWVsZCo+IFRGaWVsZExpc3Q7
CitpbmxpbmUgVEZpZWxkTGlzdCogTmV3UG9vbFRGaWVsZExpc3QoKQogewotICAgIHZvaWQqIG1l
bW9yeSA9IEdsb2JhbFBvb2xBbGxvY2F0b3IuYWxsb2NhdGUoc2l6ZW9mKFRUeXBlTGlzdCkpOwot
ICAgIHJldHVybiBuZXcobWVtb3J5KSBUVHlwZUxpc3Q7CisgICAgdm9pZCogbWVtb3J5ID0gR2xv
YmFsUG9vbEFsbG9jYXRvci5hbGxvY2F0ZShzaXplb2YoVEZpZWxkTGlzdCkpOworICAgIHJldHVy
biBuZXcobWVtb3J5KSBURmllbGRMaXN0OwogfQogCi10eXBlZGVmIFRNYXA8VFR5cGVMaXN0Kiwg
VFR5cGVMaXN0Kj4gVFN0cnVjdHVyZU1hcDsKLXR5cGVkZWYgVE1hcDxUVHlwZUxpc3QqLCBUVHlw
ZUxpc3QqPjo6aXRlcmF0b3IgVFN0cnVjdHVyZU1hcEl0ZXJhdG9yOworY2xhc3MgVFN0cnVjdHVy
ZQoreworcHVibGljOgorICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFs
bG9jYXRvcik7CisgICAgVFN0cnVjdHVyZShUU3RyaW5nKiBuYW1lLCBURmllbGRMaXN0KiBmaWVs
ZHMpCisgICAgICAgIDogbU5hbWUobmFtZSksCisgICAgICAgICAgbUZpZWxkcyhmaWVsZHMpLAor
ICAgICAgICAgIG1PYmplY3RTaXplKDApLAorICAgICAgICAgIG1EZWVwZXN0TmVzdGluZygwKSB7
CisgICAgfQorCisgICAgY29uc3QgVFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuICptTmFt
ZTsgfQorICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcygpIGNvbnN0IHsgcmV0dXJuICptRmll
bGRzOyB9CisKKyAgICBjb25zdCBUU3RyaW5nJiBtYW5nbGVkTmFtZSgpIGNvbnN0IHsKKyAgICAg
ICAgaWYgKG1NYW5nbGVkTmFtZS5lbXB0eSgpKQorICAgICAgICAgICAgbU1hbmdsZWROYW1lID0g
YnVpbGRNYW5nbGVkTmFtZSgpOworICAgICAgICByZXR1cm4gbU1hbmdsZWROYW1lOworICAgIH0K
KyAgICBzaXplX3Qgb2JqZWN0U2l6ZSgpIGNvbnN0IHsKKyAgICAgICAgaWYgKG1PYmplY3RTaXpl
ID09IDApCisgICAgICAgICAgICBtT2JqZWN0U2l6ZSA9IGNhbGN1bGF0ZU9iamVjdFNpemUoKTsK
KyAgICAgICAgcmV0dXJuIG1PYmplY3RTaXplOworICAgIH07CisgICAgaW50IGRlZXBlc3ROZXN0
aW5nKCkgY29uc3QgeworICAgICAgICBpZiAobURlZXBlc3ROZXN0aW5nID09IDApCisgICAgICAg
ICAgICBtRGVlcGVzdE5lc3RpbmcgPSBjYWxjdWxhdGVEZWVwZXN0TmVzdGluZygpOworICAgICAg
ICByZXR1cm4gbURlZXBlc3ROZXN0aW5nOworICAgIH0KKyAgICBib29sIGNvbnRhaW5zQXJyYXlz
KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRTdHJ1
Y3R1cmUpOworICAgIFRTdHJpbmcgYnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0OworICAgIHNpemVf
dCBjYWxjdWxhdGVPYmplY3RTaXplKCkgY29uc3Q7CisgICAgaW50IGNhbGN1bGF0ZURlZXBlc3RO
ZXN0aW5nKCkgY29uc3Q7CisKKyAgICBUU3RyaW5nKiBtTmFtZTsKKyAgICBURmllbGRMaXN0KiBt
RmllbGRzOworCisgICAgbXV0YWJsZSBUU3RyaW5nIG1NYW5nbGVkTmFtZTsKKyAgICBtdXRhYmxl
IHNpemVfdCBtT2JqZWN0U2l6ZTsKKyAgICBtdXRhYmxlIGludCBtRGVlcGVzdE5lc3Rpbmc7Cit9
OwogCiAvLwogLy8gQmFzZSBjbGFzcyBmb3IgdGhpbmdzIHRoYXQgaGF2ZSBhIHR5cGUuCkBAIC00
MSw2OSArOTYsMTMgQEAgcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xv
YmFsUG9vbEFsbG9jYXRvcikKICAgICBUVHlwZSgpIHt9CiAgICAgVFR5cGUoVEJhc2ljVHlwZSB0
LCBUUHJlY2lzaW9uIHAsIFRRdWFsaWZpZXIgcSA9IEV2cVRlbXBvcmFyeSwgaW50IHMgPSAxLCBi
b29sIG0gPSBmYWxzZSwgYm9vbCBhID0gZmFsc2UpIDoKLSAgICAgICAgICAgIHR5cGUodCksIHBy
ZWNpc2lvbihwKSwgcXVhbGlmaWVyKHEpLCBzaXplKHMpLCBtYXRyaXgobSksIGFycmF5KGEpLCBh
cnJheVNpemUoMCksCi0gICAgICAgICAgICBtYXhBcnJheVNpemUoMCksIGFycmF5SW5mb3JtYXRp
b25UeXBlKDApLCBzdHJ1Y3R1cmUoMCksIHN0cnVjdHVyZVNpemUoMCksIGRlZXBlc3RTdHJ1Y3RO
ZXN0aW5nKDApLCBmaWVsZE5hbWUoMCksIG1hbmdsZWQoMCksIHR5cGVOYW1lKDApCisgICAgICAg
ICAgICB0eXBlKHQpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihxKSwgc2l6ZShzKSwgbWF0cml4
KG0pLCBhcnJheShhKSwgYXJyYXlTaXplKDApLCBzdHJ1Y3R1cmUoMCkKICAgICB7CiAgICAgfQog
ICAgIGV4cGxpY2l0IFRUeXBlKGNvbnN0IFRQdWJsaWNUeXBlICZwKTsKLSAgICBUVHlwZShUVHlw
ZUxpc3QqIHVzZXJEZWYsIGNvbnN0IFRTdHJpbmcmIG4sIFRQcmVjaXNpb24gcCA9IEVicFVuZGVm
aW5lZCkgOgotICAgICAgICAgICAgdHlwZShFYnRTdHJ1Y3QpLCBwcmVjaXNpb24ocCksIHF1YWxp
ZmllcihFdnFUZW1wb3JhcnkpLCBzaXplKDEpLCBtYXRyaXgoZmFsc2UpLCBhcnJheShmYWxzZSks
IGFycmF5U2l6ZSgwKSwKLSAgICAgICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1h
dGlvblR5cGUoMCksIHN0cnVjdHVyZSh1c2VyRGVmKSwgc3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVz
dFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKQorICAgIFRUeXBlKFRT
dHJ1Y3R1cmUqIHVzZXJEZWYsIFRQcmVjaXNpb24gcCA9IEVicFVuZGVmaW5lZCkgOgorICAgICAg
ICAgICAgdHlwZShFYnRTdHJ1Y3QpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihFdnFUZW1wb3Jh
cnkpLCBzaXplKDEpLCBtYXRyaXgoZmFsc2UpLCBhcnJheShmYWxzZSksIGFycmF5U2l6ZSgwKSwg
c3RydWN0dXJlKHVzZXJEZWYpCiAgICAgewotICAgICAgICB0eXBlTmFtZSA9IE5ld1Bvb2xUU3Ry
aW5nKG4uY19zdHIoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb3B5VHlwZShjb25zdCBUVHlwZSYg
Y29weU9mLCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIHR5cGUgPSBj
b3B5T2YudHlwZTsKLSAgICAgICAgcHJlY2lzaW9uID0gY29weU9mLnByZWNpc2lvbjsKLSAgICAg
ICAgcXVhbGlmaWVyID0gY29weU9mLnF1YWxpZmllcjsKLSAgICAgICAgc2l6ZSA9IGNvcHlPZi5z
aXplOwotICAgICAgICBtYXRyaXggPSBjb3B5T2YubWF0cml4OwotICAgICAgICBhcnJheSA9IGNv
cHlPZi5hcnJheTsKLSAgICAgICAgYXJyYXlTaXplID0gY29weU9mLmFycmF5U2l6ZTsKLQotICAg
ICAgICBUU3RydWN0dXJlTWFwSXRlcmF0b3IgaXRlcjsKLSAgICAgICAgaWYgKGNvcHlPZi5zdHJ1
Y3R1cmUpIHsKLSAgICAgICAgICAgIGlmICgoaXRlciA9IHJlbWFwcGVyLmZpbmQoc3RydWN0dXJl
KSkgPT0gcmVtYXBwZXIuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIG5l
dyBzdHJ1Y3R1cmUgaGVyZQotICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IE5ld1Bvb2xUVHlw
ZUxpc3QoKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNv
cHlPZi5zdHJ1Y3R1cmUtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFRUeXBl
TGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxpbmUubGluZSA9ICgqY29w
eU9mLnN0cnVjdHVyZSlbaV0ubGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxpbmUudHlw
ZSA9ICgqY29weU9mLnN0cnVjdHVyZSlbaV0udHlwZS0+Y2xvbmUocmVtYXBwZXIpOwotICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnB1c2hfYmFjayh0eXBlTGluZSk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUg
PSBpdGVyLT5zZWNvbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgc3RydWN0dXJlID0gMDsKLQotICAgICAgICBmaWVsZE5hbWUgPSAwOwotICAgICAgICBpZiAo
Y29weU9mLmZpZWxkTmFtZSkKLSAgICAgICAgICAgIGZpZWxkTmFtZSA9IE5ld1Bvb2xUU3RyaW5n
KGNvcHlPZi5maWVsZE5hbWUtPmNfc3RyKCkpOwotICAgICAgICB0eXBlTmFtZSA9IDA7Ci0gICAg
ICAgIGlmIChjb3B5T2YudHlwZU5hbWUpCi0gICAgICAgICAgICB0eXBlTmFtZSA9IE5ld1Bvb2xU
U3RyaW5nKGNvcHlPZi50eXBlTmFtZS0+Y19zdHIoKSk7Ci0KLSAgICAgICAgbWFuZ2xlZCA9IDA7
Ci0gICAgICAgIGlmIChjb3B5T2YubWFuZ2xlZCkKLSAgICAgICAgICAgIG1hbmdsZWQgPSBOZXdQ
b29sVFN0cmluZyhjb3B5T2YubWFuZ2xlZC0+Y19zdHIoKSk7Ci0KLSAgICAgICAgc3RydWN0dXJl
U2l6ZSA9IGNvcHlPZi5zdHJ1Y3R1cmVTaXplOwotICAgICAgICBtYXhBcnJheVNpemUgPSBjb3B5
T2YubWF4QXJyYXlTaXplOwotICAgICAgICBkZWVwZXN0U3RydWN0TmVzdGluZyA9IGNvcHlPZi5k
ZWVwZXN0U3RydWN0TmVzdGluZzsKLSAgICAgICAgYXNzZXJ0KGNvcHlPZi5hcnJheUluZm9ybWF0
aW9uVHlwZSA9PSAwKTsKLSAgICAgICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOyAvLyBhcnJh
eUluZm9ybWF0aW9uVHlwZSBzaG91bGQgbm90IGJlIHNldCBmb3IgYnVpbHRJbiBzeW1ib2wgdGFi
bGUgbGV2ZWwKLSAgICB9Ci0KLSAgICBUVHlwZSogY2xvbmUoVFN0cnVjdHVyZU1hcCYgcmVtYXBw
ZXIpCi0gICAgewotICAgICAgICBUVHlwZSAqbmV3VHlwZSA9IG5ldyBUVHlwZSgpOwotICAgICAg
ICBuZXdUeXBlLT5jb3B5VHlwZSgqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgICAgIHJldHVybiBu
ZXdUeXBlOwogICAgIH0KIAogICAgIFRCYXNpY1R5cGUgZ2V0QmFzaWNUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZTsgfQpAQCAtMTE5LDIxICsxMTgsNDIgQEAgcHVibGljOgogICAgIGludCBnZXRO
b21pbmFsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemU7IH0KICAgICB2b2lkIHNldE5vbWluYWxT
aXplKGludCBzKSB7IHNpemUgPSBzOyB9CiAgICAgLy8gRnVsbCBzaXplIG9mIHNpbmdsZSBpbnN0
YW5jZSBvZiB0eXBlCi0gICAgaW50IGdldE9iamVjdFNpemUoKSBjb25zdAorICAgIHNpemVfdCBn
ZXRPYmplY3RTaXplKCkgY29uc3Q7CisKKyAgICBpbnQgZWxlbWVudFJlZ2lzdGVyQ291bnQoKSBj
b25zdAogICAgIHsKLSAgICAgICAgaW50IHRvdGFsU2l6ZTsKKyAgICAgICAgaWYgKHN0cnVjdHVy
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0gZ2V0
U3RydWN0KCktPmZpZWxkcygpOworICAgICAgICAgICAgaW50IHJlZ2lzdGVyQ291bnQgPSAwOwog
Ci0gICAgICAgIGlmIChnZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCi0gICAgICAgICAgICB0
b3RhbFNpemUgPSBnZXRTdHJ1Y3RTaXplKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1hdHJpeCkKLSAg
ICAgICAgICAgIHRvdGFsU2l6ZSA9IHNpemUgKiBzaXplOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB0b3RhbFNpemUgPSBzaXplOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWVsZHMuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVn
aXN0ZXJDb3VudCArPSBmaWVsZHNbaV0tPnR5cGUoKS0+dG90YWxSZWdpc3RlckNvdW50KCk7Cisg
ICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKGlzQXJyYXkoKSkKLSAgICAgICAgICAgIHRvdGFs
U2l6ZSAqPSBzdGQ6Om1heChnZXRBcnJheVNpemUoKSwgZ2V0TWF4QXJyYXlTaXplKCkpOworICAg
ICAgICAgICAgcmV0dXJuIHJlZ2lzdGVyQ291bnQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBp
ZiAoaXNNYXRyaXgoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdldE5vbWluYWxT
aXplKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KIAotICAgICAgICByZXR1cm4gdG90YWxTaXplOwor
ICAgIGludCB0b3RhbFJlZ2lzdGVyQ291bnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGFy
cmF5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYXJyYXlTaXplICogZWxlbWVudFJl
Z2lzdGVyQ291bnQoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBlbGVtZW50UmVnaXN0ZXJDb3VudCgpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgYm9vbCBpc01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1hdHJpeCA/IHRydWUgOiBmYWxz
ZTsgfQpAQCAtMTQyLDQ3ICsxNjIsMjAgQEAgcHVibGljOgogICAgIGJvb2wgaXNBcnJheSgpIGNv
bnN0ICB7IHJldHVybiBhcnJheSA/IHRydWUgOiBmYWxzZTsgfQogICAgIGludCBnZXRBcnJheVNp
emUoKSBjb25zdCB7IHJldHVybiBhcnJheVNpemU7IH0KICAgICB2b2lkIHNldEFycmF5U2l6ZShp
bnQgcykgeyBhcnJheSA9IHRydWU7IGFycmF5U2l6ZSA9IHM7IH0KLSAgICBpbnQgZ2V0TWF4QXJy
YXlTaXplICgpIGNvbnN0IHsgcmV0dXJuIG1heEFycmF5U2l6ZTsgfQotICAgIHZvaWQgc2V0TWF4
QXJyYXlTaXplIChpbnQgcykgeyBtYXhBcnJheVNpemUgPSBzOyB9Ci0gICAgdm9pZCBjbGVhckFy
cmF5bmVzcygpIHsgYXJyYXkgPSBmYWxzZTsgYXJyYXlTaXplID0gMDsgbWF4QXJyYXlTaXplID0g
MDsgfQotICAgIHZvaWQgc2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoVFR5cGUqIHQpIHsgYXJyYXlJ
bmZvcm1hdGlvblR5cGUgPSB0OyB9Ci0gICAgVFR5cGUqIGdldEFycmF5SW5mb3JtYXRpb25UeXBl
KCkgY29uc3QgeyByZXR1cm4gYXJyYXlJbmZvcm1hdGlvblR5cGU7IH0KKyAgICB2b2lkIGNsZWFy
QXJyYXluZXNzKCkgeyBhcnJheSA9IGZhbHNlOyBhcnJheVNpemUgPSAwOyB9CiAKICAgICBib29s
IGlzVmVjdG9yKCkgY29uc3QgeyByZXR1cm4gc2l6ZSA+IDEgJiYgIW1hdHJpeDsgfQogICAgIGJv
b2wgaXNTY2FsYXIoKSBjb25zdCB7IHJldHVybiBzaXplID09IDEgJiYgIW1hdHJpeCAmJiAhc3Ry
dWN0dXJlOyB9CiAKLSAgICBUVHlwZUxpc3QqIGdldFN0cnVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0
cnVjdHVyZTsgfQotICAgIHZvaWQgc2V0U3RydWN0KFRUeXBlTGlzdCogcykgeyBzdHJ1Y3R1cmUg
PSBzOyBjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsgfQorICAgIFRTdHJ1Y3R1cmUqIGdl
dFN0cnVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0cnVjdHVyZTsgfQorICAgIHZvaWQgc2V0U3RydWN0
KFRTdHJ1Y3R1cmUqIHMpIHsgc3RydWN0dXJlID0gczsgfQogCi0gICAgY29uc3QgVFN0cmluZyYg
Z2V0VHlwZU5hbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgYXNzZXJ0KHR5cGVOYW1lKTsKLSAg
ICAgICAgcmV0dXJuICp0eXBlTmFtZTsKLSAgICB9Ci0gICAgdm9pZCBzZXRUeXBlTmFtZShjb25z
dCBUU3RyaW5nJiBuKQotICAgIHsKLSAgICAgICAgdHlwZU5hbWUgPSBOZXdQb29sVFN0cmluZyhu
LmNfc3RyKCkpOwotICAgIH0KLQotICAgIGJvb2wgaXNGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZp
ZWxkTmFtZSAhPSAwOyB9Ci0gICAgY29uc3QgVFN0cmluZyYgZ2V0RmllbGROYW1lKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIGFzc2VydChmaWVsZE5hbWUpOwotICAgICAgICByZXR1cm4gKmZpZWxk
TmFtZTsKLSAgICB9Ci0gICAgdm9pZCBzZXRGaWVsZE5hbWUoY29uc3QgVFN0cmluZyYgbikKLSAg
ICB7Ci0gICAgICAgIGZpZWxkTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKG4uY19zdHIoKSk7Ci0gICAg
fQotCi0gICAgVFN0cmluZyYgZ2V0TWFuZ2xlZE5hbWUoKSB7Ci0gICAgICAgIGlmICghbWFuZ2xl
ZCkgewotICAgICAgICAgICAgbWFuZ2xlZCA9IE5ld1Bvb2xUU3RyaW5nKCIiKTsKLSAgICAgICAg
ICAgIGJ1aWxkTWFuZ2xlZE5hbWUoKm1hbmdsZWQpOwotICAgICAgICAgICAgKm1hbmdsZWQgKz0g
JzsnIDsKKyAgICBjb25zdCBUU3RyaW5nJiBnZXRNYW5nbGVkTmFtZSgpIGNvbnN0IHsKKyAgICAg
ICAgaWYgKG1hbmdsZWQuZW1wdHkoKSkgeworICAgICAgICAgICAgbWFuZ2xlZCA9IGJ1aWxkTWFu
Z2xlZE5hbWUoKTsKKyAgICAgICAgICAgIG1hbmdsZWQgKz0gJzsnOwogICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuICptYW5nbGVkOworICAgICAgICByZXR1cm4gbWFuZ2xlZDsKICAgICB9CiAK
ICAgICBib29sIHNhbWVFbGVtZW50VHlwZShjb25zdCBUVHlwZSYgcmlnaHQpIGNvbnN0IHsKQEAg
LTIzMCwzMiArMjIzLDM0IEBAIHB1YmxpYzoKICAgICAvLyBGb3IgdHlwZSAibmVzdGluZzIiLCB0
aGlzIG1ldGhvZCB3b3VsZCByZXR1cm4gMiAtLSB0aGUgbnVtYmVyCiAgICAgLy8gb2Ygc3RydWN0
dXJlcyB0aHJvdWdoIHdoaWNoIGluZGlyZWN0aW9uIG11c3Qgb2NjdXIgdG8gcmVhY2ggdGhlCiAg
ICAgLy8gZGVlcGVzdCBmaWVsZCAobmVzdGluZzIuZmllbGQxLnBvc2l0aW9uKS4KLSAgICBpbnQg
Z2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSBjb25zdCB7IHJldHVybiBkZWVwZXN0U3RydWN0TmVz
dGluZzsgfQorICAgIGludCBnZXREZWVwZXN0U3RydWN0TmVzdGluZygpIGNvbnN0IHsKKyAgICAg
ICAgcmV0dXJuIHN0cnVjdHVyZSA/IHN0cnVjdHVyZS0+ZGVlcGVzdE5lc3RpbmcoKSA6IDA7Cisg
ICAgfQogCi0gICAgYm9vbCBpc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSBjb25zdDsKKyAg
ICBib29sIGlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygpIGNvbnN0IHsKKyAgICAgICAgcmV0
dXJuIHN0cnVjdHVyZSA/IHN0cnVjdHVyZS0+Y29udGFpbnNBcnJheXMoKSA6IGZhbHNlOworICAg
IH0KIAotcHJvdGVjdGVkOgotICAgIHZvaWQgYnVpbGRNYW5nbGVkTmFtZShUU3RyaW5nJik7Ci0g
ICAgaW50IGdldFN0cnVjdFNpemUoKSBjb25zdDsKLSAgICB2b2lkIGNvbXB1dGVEZWVwZXN0U3Ry
dWN0TmVzdGluZygpOworcHJpdmF0ZToKKyAgICBUU3RyaW5nIGJ1aWxkTWFuZ2xlZE5hbWUoKSBj
b25zdDsKIAorI2lmZGVmIF9fR05VQ19fCisgICAgVEJhc2ljVHlwZSB0eXBlOworICAgIFRQcmVj
aXNpb24gcHJlY2lzaW9uOworICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyOworI2Vsc2UKICAgICBU
QmFzaWNUeXBlIHR5cGUgICAgICA6IDY7CiAgICAgVFByZWNpc2lvbiBwcmVjaXNpb247CiAgICAg
VFF1YWxpZmllciBxdWFsaWZpZXIgOiA3OworI2VuZGlmCiAgICAgaW50IHNpemUgICAgICAgICAg
ICAgOiA4OyAvLyBzaXplIG9mIHZlY3RvciBvciBtYXRyaXgsIG5vdCBzaXplIG9mIGFycmF5CiAg
ICAgdW5zaWduZWQgaW50IG1hdHJpeCAgOiAxOwogICAgIHVuc2lnbmVkIGludCBhcnJheSAgIDog
MTsKICAgICBpbnQgYXJyYXlTaXplOwotICAgIGludCBtYXhBcnJheVNpemU7Ci0gICAgVFR5cGUq
IGFycmF5SW5mb3JtYXRpb25UeXBlOwogCi0gICAgVFR5cGVMaXN0KiBzdHJ1Y3R1cmU7ICAgICAg
Ly8gMCB1bmxlc3MgdGhpcyBpcyBhIHN0cnVjdAotICAgIG11dGFibGUgaW50IHN0cnVjdHVyZVNp
emU7Ci0gICAgaW50IGRlZXBlc3RTdHJ1Y3ROZXN0aW5nOwotCi0gICAgVFN0cmluZyAqZmllbGRO
YW1lOyAgICAgICAgIC8vIGZvciBzdHJ1Y3R1cmUgZmllbGQgbmFtZXMKLSAgICBUU3RyaW5nICpt
YW5nbGVkOwotICAgIFRTdHJpbmcgKnR5cGVOYW1lOyAgICAgICAgICAvLyBmb3Igc3RydWN0dXJl
IGZpZWxkIHR5cGUgbmFtZQorICAgIFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsgICAgICAvLyAwIHVu
bGVzcyB0aGlzIGlzIGEgc3RydWN0CisKKyAgICBtdXRhYmxlIFRTdHJpbmcgbWFuZ2xlZDsKIH07
CiAKIC8vCkBAIC0yNzcsOSArMjcyLDkgQEAgc3RydWN0IFRQdWJsaWNUeXBlCiAgICAgYm9vbCBh
cnJheTsKICAgICBpbnQgYXJyYXlTaXplOwogICAgIFRUeXBlKiB1c2VyRGVmOwotICAgIGludCBs
aW5lOworICAgIFRTb3VyY2VMb2MgbGluZTsKIAotICAgIHZvaWQgc2V0QmFzaWMoVEJhc2ljVHlw
ZSBidCwgVFF1YWxpZmllciBxLCBpbnQgbG4gPSAwKQorICAgIHZvaWQgc2V0QmFzaWMoVEJhc2lj
VHlwZSBidCwgVFF1YWxpZmllciBxLCBjb25zdCBUU291cmNlTG9jJiBsbikKICAgICB7CiAgICAg
ICAgIHR5cGUgPSBidDsKICAgICAgICAgcXVhbGlmaWVyID0gcTsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Vbmlmb3JtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5pZm9ybS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5pZm9ybS5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKKy8vDQorLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorLy8NCisNCisjaW5jbHVk
ZSAiY29tcGlsZXIvVW5pZm9ybS5oIg0KKw0KK25hbWVzcGFjZSBzaA0KK3sNCisNCitVbmlmb3Jt
OjpVbmlmb3JtKEdMZW51bSB0eXBlLCBHTGVudW0gcHJlY2lzaW9uLCBjb25zdCBjaGFyICpuYW1l
LCBpbnQgYXJyYXlTaXplLCBpbnQgcmVnaXN0ZXJJbmRleCkNCit7DQorICAgIHRoaXMtPnR5cGUg
PSB0eXBlOw0KKyAgICB0aGlzLT5wcmVjaXNpb24gPSBwcmVjaXNpb247DQorICAgIHRoaXMtPm5h
bWUgPSBuYW1lOw0KKyAgICB0aGlzLT5hcnJheVNpemUgPSBhcnJheVNpemU7DQorICAgIHRoaXMt
PnJlZ2lzdGVySW5kZXggPSByZWdpc3RlckluZGV4Ow0KK30NCisNCit9DQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuaWZvcm0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5pZm9ybS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuaWZvcm0uaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLy8NCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisvLw0KKw0KKyNpZm5kZWYg
Q09NUElMRVJfVU5JRk9STV9IXw0KKyNkZWZpbmUgQ09NUElMRVJfVU5JRk9STV9IXw0KKw0KKyNp
bmNsdWRlIDxzdHJpbmc+DQorI2luY2x1ZGUgPHZlY3Rvcj4NCisNCisjZGVmaW5lIEdMX0FQSUNB
TEwNCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+DQorDQorbmFtZXNwYWNlIHNoDQorew0KKw0KK3N0
cnVjdCBVbmlmb3JtDQorew0KKyAgICBVbmlmb3JtKEdMZW51bSB0eXBlLCBHTGVudW0gcHJlY2lz
aW9uLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgYXJyYXlTaXplLCBpbnQgcmVnaXN0ZXJJbmRleCk7
DQorDQorICAgIEdMZW51bSB0eXBlOw0KKyAgICBHTGVudW0gcHJlY2lzaW9uOw0KKyAgICBzdGQ6
OnN0cmluZyBuYW1lOw0KKyAgICB1bnNpZ25lZCBpbnQgYXJyYXlTaXplOw0KKyAgICANCisgICAg
aW50IHJlZ2lzdGVySW5kZXg7DQorfTsNCisNCit0eXBlZGVmIHN0ZDo6dmVjdG9yPFVuaWZvcm0+
IEFjdGl2ZVVuaWZvcm1zOw0KKw0KK30NCisNCisjZW5kaWYgICAvLyBDT01QSUxFUl9VTklGT1JN
X0hfDQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxl
SW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1ZhcmlhYmxlSW5mby5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzEsMTIgKzEzMSwxMyBAQCB2b2lkIGdldFVzZXJEZWZpbmVkVmFyaWFibGVJbmZvKGNvbnN0
IFRUCiB7CiAgICAgQVNTRVJUKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KTsKIAot
ICAgIGNvbnN0IFRUeXBlTGlzdCogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
Y29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOwotICAgICAgICBn
ZXRWYXJpYWJsZUluZm8oKmZpZWxkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUg
KyAiLiIgKyBmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgbWFwcGVkTmFtZSArICIuIiArIFRJbnRlcm1UcmF2ZXJzZXI6Omhhc2goZmllbGRUeXBlLT5n
ZXRGaWVsZE5hbWUoKSwgaGFzaEZ1bmN0aW9uKSwKKyAgICBjb25zdCBURmllbGRMaXN0JiBmaWVs
ZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZpZWxkcy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBUVHlwZSYgZmllbGRUeXBl
ID0gKihmaWVsZHNbaV0tPnR5cGUoKSk7CisgICAgICAgIGNvbnN0IFRTdHJpbmcmIGZpZWxkTmFt
ZSA9IGZpZWxkc1tpXS0+bmFtZSgpOworICAgICAgICBnZXRWYXJpYWJsZUluZm8oZmllbGRUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArICIuIiArIGZpZWxkTmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgKyAiLiIgKyBUSW50ZXJtVHJhdmVyc2VyOjpo
YXNoKGZpZWxkTmFtZSwgaGFzaEZ1bmN0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGlu
Zm9MaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgaGFzaEZ1bmN0aW9uKTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwJ
KHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9nbHNsYW5nLmwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDEwIEBAIFdISUNIIEdFTkVS
QVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDog
NDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZhbC0+bGV4LmxpbmUg
PSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9maWxlID0geXlsbG9jLT5sYXN0X2ZpbGUg
PSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGxvYy0+bGFzdF9saW5l
ID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1heF9zaXplKSBc
CiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5c2Nhbm5lcik7CiAK
QEAgLTU3LDEwICs2MCw4IEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNj
YW4KICV9CiAKICVvcHRpb24gbm95eXdyYXAgbm91bnB1dCBuZXZlci1pbnRlcmFjdGl2ZQotJW9w
dGlvbiB5eWxpbmVubyByZWVudHJhbnQgYmlzb24tYnJpZGdlCi0lb3B0aW9uIHN0YWNrCislb3B0
aW9uIHl5bGluZW5vIHJlZW50cmFudCBiaXNvbi1icmlkZ2UgYmlzb24tbG9jYXRpb25zCiAlb3B0
aW9uIGV4dHJhLXR5cGU9IlRQYXJzZUNvbnRleHQqIgotJXggQ09NTUVOVCBGSUVMRFMKIAogRCAg
ICAgICAgICAgWzAtOV0KIEwgICAgICAgICAgIFthLXpBLVpfXQpAQCAtNzAsNzMgKzcxLDYwIEBA
IE8gICAgICAgICAgIFswLTddCiAKICUlCiAKLSV7Ci0gICAgVFBhcnNlQ29udGV4dCogY29udGV4
dCA9IHl5ZXh0cmE7Ci0lfQotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMgKi8KLSIvLyJb
XlxuXSogOworImludmFyaWFudCIgICAgeyByZXR1cm4gSU5WQVJJQU5UOyB9CisiaGlnaHAiICAg
ICAgICB7IHJldHVybiBISUdIX1BSRUNJU0lPTjsgfQorIm1lZGl1bXAiICAgICAgeyByZXR1cm4g
TUVESVVNX1BSRUNJU0lPTjsgfQorImxvd3AiICAgICAgICAgeyByZXR1cm4gTE9XX1BSRUNJU0lP
TjsgfQorInByZWNpc2lvbiIgICAgeyByZXR1cm4gUFJFQ0lTSU9OOyB9CisKKyJhdHRyaWJ1dGUi
ICAgIHsgcmV0dXJuIEFUVFJJQlVURTsgfQorImNvbnN0IiAgICAgICAgeyByZXR1cm4gQ09OU1Rf
UVVBTDsgfQorInVuaWZvcm0iICAgICAgeyByZXR1cm4gVU5JRk9STTsgfQorInZhcnlpbmciICAg
ICAgeyByZXR1cm4gVkFSWUlORzsgfQorCisiYnJlYWsiICAgICAgICB7IHJldHVybiBCUkVBSzsg
fQorImNvbnRpbnVlIiAgICAgeyByZXR1cm4gQ09OVElOVUU7IH0KKyJkbyIgICAgICAgICAgIHsg
cmV0dXJuIERPOyB9CisiZm9yIiAgICAgICAgICB7IHJldHVybiBGT1I7IH0KKyJ3aGlsZSIgICAg
ICAgIHsgcmV0dXJuIFdISUxFOyB9CisKKyJpZiIgICAgICAgICAgIHsgcmV0dXJuIElGOyB9Cisi
ZWxzZSIgICAgICAgICB7IHJldHVybiBFTFNFOyB9CisKKyJpbiIgICAgICAgICAgIHsgcmV0dXJu
IElOX1FVQUw7IH0KKyJvdXQiICAgICAgICAgIHsgcmV0dXJuIE9VVF9RVUFMOyB9CisiaW5vdXQi
ICAgICAgICB7IHJldHVybiBJTk9VVF9RVUFMOyB9CisKKyJmbG9hdCIgICAgICAgIHsgcmV0dXJu
IEZMT0FUX1RZUEU7IH0KKyJpbnQiICAgICAgICAgIHsgcmV0dXJuIElOVF9UWVBFOyB9Cisidm9p
ZCIgICAgICAgICB7IHJldHVybiBWT0lEX1RZUEU7IH0KKyJib29sIiAgICAgICAgIHsgcmV0dXJu
IEJPT0xfVFlQRTsgfQorInRydWUiICAgICAgICAgeyB5eWx2YWwtPmxleC5iID0gdHJ1ZTsgIHJl
dHVybiBCT09MQ09OU1RBTlQ7IH0KKyJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZh
bHNlOyByZXR1cm4gQk9PTENPTlNUQU5UOyB9CisKKyJkaXNjYXJkIiAgICAgIHsgcmV0dXJuIERJ
U0NBUkQ7IH0KKyJyZXR1cm4iICAgICAgIHsgcmV0dXJuIFJFVFVSTjsgfQorCisibWF0MiIgICAg
ICAgICB7IHJldHVybiBNQVRSSVgyOyB9CisibWF0MyIgICAgICAgICB7IHJldHVybiBNQVRSSVgz
OyB9CisibWF0NCIgICAgICAgICB7IHJldHVybiBNQVRSSVg0OyB9CisKKyJ2ZWMyIiAgICAgICAg
IHsgcmV0dXJuIFZFQzI7IH0KKyJ2ZWMzIiAgICAgICAgIHsgcmV0dXJuIFZFQzM7IH0KKyJ2ZWM0
IiAgICAgICAgIHsgcmV0dXJuIFZFQzQ7IH0KKyJpdmVjMiIgICAgICAgIHsgcmV0dXJuIElWRUMy
OyB9CisiaXZlYzMiICAgICAgICB7IHJldHVybiBJVkVDMzsgfQorIml2ZWM0IiAgICAgICAgeyBy
ZXR1cm4gSVZFQzQ7IH0KKyJidmVjMiIgICAgICAgIHsgcmV0dXJuIEJWRUMyOyB9CisiYnZlYzMi
ICAgICAgICB7IHJldHVybiBCVkVDMzsgfQorImJ2ZWM0IiAgICAgICAgeyByZXR1cm4gQlZFQzQ7
IH0KKworInNhbXBsZXIyRCIgICAgICAgICAgeyByZXR1cm4gU0FNUExFUjJEOyB9Cisic2FtcGxl
ckN1YmUiICAgICAgICB7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQorInNhbXBsZXJFeHRlcm5hbE9F
UyIgeyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KKyJzYW1wbGVyMkRSZWN0IiAgICAg
IHsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAotICAgIC8qIE11bHRpLWxpbmUgY29tbWVudHMg
Ki8KLSIvKiIgICAgICAgICAgIHsgeXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9
Ci08Q09NTUVOVD4uIHwKLTxDT01NRU5UPlxuIDsKLTxDT01NRU5UPiIqLyIgIHsgeXlfcG9wX3N0
YXRlKHl5c2Nhbm5lcik7IH0KLQotImludmFyaWFudCIgICAgeyByZXR1cm4oSU5WQVJJQU5UKTsg
fQotImhpZ2hwIiAgICAgICAgeyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Ci0ibWVkaXVtcCIg
ICAgICB7IHJldHVybihNRURJVU1fUFJFQ0lTSU9OKTsgfQotImxvd3AiICAgICAgICAgeyByZXR1
cm4oTE9XX1BSRUNJU0lPTik7IH0KLSJwcmVjaXNpb24iICAgIHsgcmV0dXJuKFBSRUNJU0lPTik7
IH0KLQotImF0dHJpYnV0ZSIgICAgeyByZXR1cm4oQVRUUklCVVRFKTsgfQotImNvbnN0IiAgICAg
ICAgeyByZXR1cm4oQ09OU1RfUVVBTCk7IH0KLSJ1bmlmb3JtIiAgICAgIHsgcmV0dXJuKFVOSUZP
Uk0pOyB9Ci0idmFyeWluZyIgICAgICB7IHJldHVybihWQVJZSU5HKTsgfQotCi0iYnJlYWsiICAg
ICAgICB7IHJldHVybihCUkVBSyk7IH0KLSJjb250aW51ZSIgICAgIHsgcmV0dXJuKENPTlRJTlVF
KTsgfQotImRvIiAgICAgICAgICAgeyByZXR1cm4oRE8pOyB9Ci0iZm9yIiAgICAgICAgICB7IHJl
dHVybihGT1IpOyB9Ci0id2hpbGUiICAgICAgICB7IHJldHVybihXSElMRSk7IH0KLQotImlmIiAg
ICAgICAgICAgeyByZXR1cm4oSUYpOyB9Ci0iZWxzZSIgICAgICAgICB7IHJldHVybihFTFNFKTsg
fQotCi0iaW4iICAgICAgICAgICB7IHJldHVybihJTl9RVUFMKTsgfQotIm91dCIgICAgICAgICAg
eyByZXR1cm4oT1VUX1FVQUwpOyB9Ci0iaW5vdXQiICAgICAgICB7IHJldHVybihJTk9VVF9RVUFM
KTsgfQotCi0iZmxvYXQiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJl
dHVybihGTE9BVF9UWVBFKTsgfQotImludCIgICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5
cGUgPSB0cnVlOyByZXR1cm4oSU5UX1RZUEUpOyB9Ci0idm9pZCIgICAgICAgICB7IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihWT0lEX1RZUEUpOyB9Ci0iYm9vbCIgICAgICAg
ICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihCT09MX1RZUEUpOyB9Ci0i
dHJ1ZSIgICAgICAgICB7IHl5bHZhbC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuKEJPT0xDT05TVEFO
VCk7IH0KLSJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyByZXR1cm4oQk9P
TENPTlNUQU5UKTsgfQotCi0iZGlzY2FyZCIgICAgICB7IHJldHVybihESVNDQVJEKTsgfQotInJl
dHVybiIgICAgICAgeyByZXR1cm4oUkVUVVJOKTsgfQotCi0ibWF0MiIgICAgICAgICB7IGNvbnRl
eHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVgyKTsgfQotIm1hdDMiICAgICAg
ICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMyk7IH0KLSJt
YXQ0IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJ
WDQpOyB9Ci0KLSJ2ZWMyIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsg
cmV0dXJuIChWRUMyKTsgfQotInZlYzMiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4gKFZFQzMpOyB9Ci0idmVjNCIgICAgICAgICB7IGNvbnRleHQtPmxleEFm
dGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KLSJpdmVjMiIgICAgICAgIHsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMik7IH0KLSJpdmVjMyIgICAgICAg
IHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMyk7IH0KLSJpdmVj
NCIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDNCk7
IH0KLSJidmVjMiIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJu
IChCVkVDMik7IH0KLSJidmVjMyIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuIChCVkVDMyk7IH0KLSJidmVjNCIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KLQotInNhbXBsZXIyRCIgICAgICAgeyBjb250
ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Ci0ic2FtcGxlckN1
YmUiICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSQ1VC
RTsgfQotInNhbXBsZXJFeHRlcm5hbE9FUyIgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVl
OyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KLSJzYW1wbGVyMkRSZWN0IiB7IGNvbnRl
eHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9Ci0KLSJzdHJ1
Y3QiICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKFNUUlVDVCk7
IH0KKyJzdHJ1Y3QiICAgICAgIHsgcmV0dXJuIFNUUlVDVDsgfQogCiAiYXNtIiAgICAgICAgICB7
IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIApAQCAtMTgzLDEzICsxNzEsMTEg
QEAgTyAgICAgICAgICAgWzAtN10KICJmdmVjMyIgICAgICAgIHsgcmV0dXJuIHJlc2VydmVkX3dv
cmQoeXlzY2FubmVyKTsgfQogImZ2ZWM0IiAgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5
eXNjYW5uZXIpOyB9CiAKLSJzYW1wbGVyMUQiICAgIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlz
Y2FubmVyKTsgfQotInNhbXBsZXIzRCIgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5u
ZXIpOyB9Ci0KLSJzYW1wbGVyMURTaGFkb3ciIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2Fu
bmVyKTsgfQotInNhbXBsZXIyRFNoYWRvdyIgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5u
ZXIpOyB9Ci0KLSJzYW1wbGVyM0RSZWN0IiB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5l
cik7IH0KKyJzYW1wbGVyMUQiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nh
bm5lcik7IH0KKyJzYW1wbGVyM0QiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5
c2Nhbm5lcik7IH0KKyJzYW1wbGVyMURTaGFkb3ciICAgICB7IHJldHVybiByZXNlcnZlZF93b3Jk
KHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMkRTaGFkb3ciICAgICB7IHJldHVybiByZXNlcnZlZF93
b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0RSZWN0IiAgICAgICB7IHJldHVybiByZXNlcnZl
ZF93b3JkKHl5c2Nhbm5lcik7IH0KICJzYW1wbGVyMkRSZWN0U2hhZG93IiB7IHJldHVybiByZXNl
cnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAogInNpemVvZiIgICAgICAgeyByZXR1cm4gcmVzZXJ2
ZWRfd29yZCh5eXNjYW5uZXIpOyB9CkBAIC0yMDMsNzIgKzE4OSw2NCBAQCBPICAgICAgICAgICBb
MC03XQogICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKIH0KIAotMFt4WF17SH0rICAg
ICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAw
LCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KLTB7T30rICAgICAgICAgICAgIHsgeXlsdmFs
LT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4o
SU5UQ09OU1RBTlQpOyB9Ci0we0R9KyAgICAgICAgICAgICB7IGNvbnRleHQtPmVycm9yKHl5bGlu
ZW5vLCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+cmVjb3Zlcigp
OyByZXR1cm4gMDt9Ci17RH0rICAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5UKTsgfQot
Ci17RH0re0V9ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
YXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQote0R9KyIuIntEfSoo
e0V9KT8geyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4
dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KLSIuIntEfSsoe0V9KT8gICAgIHsgeXlsdmFs
LT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZM
T0FUQ09OU1RBTlQpOyB9Ci0KLSIrPSIgICAgICAgICAgICB7ICByZXR1cm4oQUREX0FTU0lHTik7
IH0KLSItPSIgICAgICAgICAgICB7ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KLSIqPSIgICAgICAg
ICAgICB7ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KLSIvPSIgICAgICAgICAgICB7ICByZXR1cm4o
RElWX0FTU0lHTik7IH0KLSIlPSIgICAgICAgICAgICB7ICByZXR1cm4oTU9EX0FTU0lHTik7IH0K
LSI8PD0iICAgICAgICAgICB7ICByZXR1cm4oTEVGVF9BU1NJR04pOyB9Ci0iPj49IiAgICAgICAg
ICAgeyAgcmV0dXJuKFJJR0hUX0FTU0lHTik7IH0KLSImPSIgICAgICAgICAgICB7ICByZXR1cm4o
QU5EX0FTU0lHTik7IH0KLSJePSIgICAgICAgICAgICB7ICByZXR1cm4oWE9SX0FTU0lHTik7IH0K
LSJ8PSIgICAgICAgICAgICB7ICByZXR1cm4oT1JfQVNTSUdOKTsgfQotCi0iKysiICAgICAgICAg
ICAgeyAgcmV0dXJuKElOQ19PUCk7IH0KLSItLSIgICAgICAgICAgICB7ICByZXR1cm4oREVDX09Q
KTsgfQotIiYmIiAgICAgICAgICAgIHsgIHJldHVybihBTkRfT1ApOyB9Ci0ifHwiICAgICAgICAg
ICAgeyAgcmV0dXJuKE9SX09QKTsgfQotIl5eIiAgICAgICAgICAgIHsgIHJldHVybihYT1JfT1Ap
OyB9Ci0iPD0iICAgICAgICAgICAgeyAgcmV0dXJuKExFX09QKTsgfQotIj49IiAgICAgICAgICAg
IHsgIHJldHVybihHRV9PUCk7IH0KLSI9PSIgICAgICAgICAgICB7ICByZXR1cm4oRVFfT1ApOyB9
Ci0iIT0iICAgICAgICAgICAgeyAgcmV0dXJuKE5FX09QKTsgfQotIjw8IiAgICAgICAgICAgIHsg
IHJldHVybihMRUZUX09QKTsgfQotIj4+IiAgICAgICAgICAgIHsgIHJldHVybihSSUdIVF9PUCk7
IH0KLSI7IiAgICAgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1
cm4oU0VNSUNPTE9OKTsgfQotKCJ7InwiPCUiKSAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gZmFsc2U7IHJldHVybihMRUZUX0JSQUNFKTsgfQotKCJ9InwiJT4iKSAgICAgIHsgcmV0dXJu
KFJJR0hUX0JSQUNFKTsgfQotIiwiICAgICAgICAgeyBpZiAoY29udGV4dC0+aW5UeXBlUGFyZW4p
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Ci0iOiIgICAg
ICAgICB7IHJldHVybihDT0xPTik7IH0KLSI9IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gZmFsc2U7IHJldHVybihFUVVBTCk7IH0KLSIoIiAgICAgICAgIHsgY29udGV4dC0+bGV4
QWZ0ZXJUeXBlID0gZmFsc2U7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gdHJ1ZTsgcmV0dXJuKExF
RlRfUEFSRU4pOyB9Ci0iKSIgICAgICAgICB7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gZmFsc2U7
IHJldHVybihSSUdIVF9QQVJFTik7IH0KLSgiWyJ8Ijw6IikgICAgICB7IHJldHVybihMRUZUX0JS
QUNLRVQpOyB9Ci0oIl0ifCI6PiIpICAgICAgeyByZXR1cm4oUklHSFRfQlJBQ0tFVCk7IH0KLSIu
IiAgICAgICAgIHsgQkVHSU4oRklFTERTKTsgIHJldHVybihET1QpOyB9Ci0iISIgICAgICAgICB7
IHJldHVybihCQU5HKTsgfQotIi0iICAgICAgICAgeyByZXR1cm4oREFTSCk7IH0KLSJ+IiAgICAg
ICAgIHsgcmV0dXJuKFRJTERFKTsgfQotIisiICAgICAgICAgeyByZXR1cm4oUExVUyk7IH0KLSIq
IiAgICAgICAgIHsgcmV0dXJuKFNUQVIpOyB9Ci0iLyIgICAgICAgICB7IHJldHVybihTTEFTSCk7
IH0KLSIlIiAgICAgICAgIHsgcmV0dXJuKFBFUkNFTlQpOyB9Ci0iPCIgICAgICAgICB7IHJldHVy
bihMRUZUX0FOR0xFKTsgfQotIj4iICAgICAgICAgeyByZXR1cm4oUklHSFRfQU5HTEUpOyB9Ci0i
fCIgICAgICAgICB7IHJldHVybihWRVJUSUNBTF9CQVIpOyB9Ci0iXiIgICAgICAgICB7IHJldHVy
bihDQVJFVCk7IH0KLSImIiAgICAgICAgIHsgcmV0dXJuKEFNUEVSU0FORCk7IH0KLSI/IiAgICAg
ICAgIHsgcmV0dXJuKFFVRVNUSU9OKTsgfQotCi08RklFTERTPntMfSh7TH18e0R9KSogeyAKLSAg
ICBCRUdJTihJTklUSUFMKTsKLSAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmlu
Zyh5eXRleHQpOyAKLSAgICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwotfQotPEZJRUxEUz5bIFx0
XHZcZlxyXSB7fQotCi1bIFx0XHZcblxmXHJdICAgeyAgfQotPCo+PDxFT0Y+PiAgICAgIHsgY29u
dGV4dC0+QWZ0ZXJFT0YgPSB0cnVlOyB5eXRlcm1pbmF0ZSgpOyB9Ci08Kj4uICAgICAgICAgICAg
eyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBjaGFyIiwgeXl0ZXh0LCAiIik7
IHJldHVybiAwOyB9CiswW3hYXXtIfSsgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Cisw
e099KyAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRv
bCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Cit7RH0rICAgICAgICAgICAg
ICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDAp
KTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CisKK3tEfSt7RX0gICAgICAgICAgIHsgeXlsdmFsLT5s
ZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FU
Q09OU1RBTlQ7IH0KK3tEfSsiLiJ7RH0qKHtFfSk/IHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19j
YXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKyIu
IntEfSsoe0V9KT8gICAgIHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9m
X2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKworIis9IiAgICAgICAgICAg
IHsgcmV0dXJuIEFERF9BU1NJR047IH0KKyItPSIgICAgICAgICAgICB7IHJldHVybiBTVUJfQVNT
SUdOOyB9CisiKj0iICAgICAgICAgICAgeyByZXR1cm4gTVVMX0FTU0lHTjsgfQorIi89IiAgICAg
ICAgICAgIHsgcmV0dXJuIERJVl9BU1NJR047IH0KKyIlPSIgICAgICAgICAgICB7IHJldHVybiBN
T0RfQVNTSUdOOyB9CisiPDw9IiAgICAgICAgICAgeyByZXR1cm4gTEVGVF9BU1NJR047IH0KKyI+
Pj0iICAgICAgICAgICB7IHJldHVybiBSSUdIVF9BU1NJR047IH0KKyImPSIgICAgICAgICAgICB7
IHJldHVybiBBTkRfQVNTSUdOOyB9CisiXj0iICAgICAgICAgICAgeyByZXR1cm4gWE9SX0FTU0lH
TjsgfQorInw9IiAgICAgICAgICAgIHsgcmV0dXJuIE9SX0FTU0lHTjsgfQorCisiKysiICAgICAg
ICAgICAgeyByZXR1cm4gSU5DX09QOyB9CisiLS0iICAgICAgICAgICAgeyByZXR1cm4gREVDX09Q
OyB9CisiJiYiICAgICAgICAgICAgeyByZXR1cm4gQU5EX09QOyB9CisifHwiICAgICAgICAgICAg
eyByZXR1cm4gT1JfT1A7IH0KKyJeXiIgICAgICAgICAgICB7IHJldHVybiBYT1JfT1A7IH0KKyI8
PSIgICAgICAgICAgICB7IHJldHVybiBMRV9PUDsgfQorIj49IiAgICAgICAgICAgIHsgcmV0dXJu
IEdFX09QOyB9CisiPT0iICAgICAgICAgICAgeyByZXR1cm4gRVFfT1A7IH0KKyIhPSIgICAgICAg
ICAgICB7IHJldHVybiBORV9PUDsgfQorIjw8IiAgICAgICAgICAgIHsgcmV0dXJuIExFRlRfT1A7
IH0KKyI+PiIgICAgICAgICAgICB7IHJldHVybiBSSUdIVF9PUDsgfQorIjsiICAgICAgICAgICAg
IHsgcmV0dXJuIFNFTUlDT0xPTjsgfQorKCJ7InwiPCUiKSAgICAgIHsgcmV0dXJuIExFRlRfQlJB
Q0U7IH0KKygifSJ8IiU+IikgICAgICB7IHJldHVybiBSSUdIVF9CUkFDRTsgfQorIiwiICAgICAg
ICAgeyByZXR1cm4gQ09NTUE7IH0KKyI6IiAgICAgICAgIHsgcmV0dXJuIENPTE9OOyB9CisiPSIg
ICAgICAgICB7IHJldHVybiBFUVVBTDsgfQorIigiICAgICAgICAgeyByZXR1cm4gTEVGVF9QQVJF
TjsgfQorIikiICAgICAgICAgeyByZXR1cm4gUklHSFRfUEFSRU47IH0KKygiWyJ8Ijw6IikgIHsg
cmV0dXJuIExFRlRfQlJBQ0tFVDsgfQorKCJdInwiOj4iKSAgeyByZXR1cm4gUklHSFRfQlJBQ0tF
VDsgfQorIi4iICAgICAgICAgeyByZXR1cm4gRE9UOyB9CisiISIgICAgICAgICB7IHJldHVybiBC
QU5HOyB9CisiLSIgICAgICAgICB7IHJldHVybiBEQVNIOyB9CisifiIgICAgICAgICB7IHJldHVy
biBUSUxERTsgfQorIisiICAgICAgICAgeyByZXR1cm4gUExVUzsgfQorIioiICAgICAgICAgeyBy
ZXR1cm4gU1RBUjsgfQorIi8iICAgICAgICAgeyByZXR1cm4gU0xBU0g7IH0KKyIlIiAgICAgICAg
IHsgcmV0dXJuIFBFUkNFTlQ7IH0KKyI8IiAgICAgICAgIHsgcmV0dXJuIExFRlRfQU5HTEU7IH0K
KyI+IiAgICAgICAgIHsgcmV0dXJuIFJJR0hUX0FOR0xFOyB9CisifCIgICAgICAgICB7IHJldHVy
biBWRVJUSUNBTF9CQVI7IH0KKyJeIiAgICAgICAgIHsgcmV0dXJuIENBUkVUOyB9CisiJiIgICAg
ICAgICB7IHJldHVybiBBTVBFUlNBTkQ7IH0KKyI/IiAgICAgICAgIHsgcmV0dXJuIFFVRVNUSU9O
OyB9CisKK1sgXHRcdlxuXGZccl0geyB9Cis8PEVPRj4+ICAgIHsgeXl0ZXJtaW5hdGUoKTsgfQor
LiAgICAgICAgICB7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAKICUlCiAKQEAgLTI3OCw3
ICsyNTYsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6CiAgICAg
eXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8gMCA6IHRva2Vu
LnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAgbWVtY3B5KGJ1
ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAgIHl5c2V0X2xpbmVubyhFbmNvZGVTb3Vy
Y2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24ubGluZSksIHl5c2Nhbm5l
cik7CisgICAgeXlzZXRfY29sdW1uKHRva2VuLmxvY2F0aW9uLmZpbGUsIHl5c2Nhbm5lcik7Cisg
ICAgeXlzZXRfbGluZW5vKHRva2VuLmxvY2F0aW9uLmxpbmUsIHl5c2Nhbm5lcik7CiAKICAgICBp
ZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5wdXQgYnVmZmVy
IG92ZXJmbG93Iik7CkBAIC0yOTIsMTIgKzI3MSwxMCBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5f
dCB5eXNjYW5uZXIpIHsKICAgICAKICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVSOwogICAgIFRT
eW1ib2wqIHN5bWJvbCA9IHl5ZXh0cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0KTsKLSAgICBp
ZiAoeXlleHRyYS0+bGV4QWZ0ZXJUeXBlID09IGZhbHNlICYmIHN5bWJvbCAmJiBzeW1ib2wtPmlz
VmFyaWFibGUoKSkgeworICAgIGlmIChzeW1ib2wgJiYgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsK
ICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJsZSo+KHN5
bWJvbCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKSB7Ci0gICAgICAgICAg
ICB5eWV4dHJhLT5sZXhBZnRlclR5cGUgPSB0cnVlOworICAgICAgICBpZiAodmFyaWFibGUtPmlz
VXNlclR5cGUoKSkKICAgICAgICAgICAgIHRva2VuID0gVFlQRV9OQU1FOwotICAgICAgICB9CiAg
ICAgfQogICAgIHl5bHZhbC0+bGV4LnN5bWJvbCA9IHN5bWJvbDsKICAgICByZXR1cm4gdG9rZW47
CkBAIC0zMDYsMjIgKzI4MywxMSBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIp
IHsKIGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHN0cnVjdCB5
eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKIAotICAgIHl5ZXh0
cmEtPmVycm9yKHl5bGluZW5vLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4
dCwgIiIpOworICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbGxlZ2FsIHVzZSBvZiByZXNl
cnZlZCB3b3JkIiwgeXl0ZXh0LCAiIik7CiAgICAgeXlleHRyYS0+cmVjb3ZlcigpOwogICAgIHJl
dHVybiAwOwogfQogCi12b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Y2hhciogcmVhc29uKSB7Ci0gICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0
c190KikgY29udGV4dC0+c2Nhbm5lcjsKLQotICAgIGlmIChjb250ZXh0LT5BZnRlckVPRikgewot
ICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29uLCAidW5leHBlY3RlZCBFT0Yi
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29u
LCB5eXRleHQpOwotICAgIH0KLSAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci19Ci0KIGludCBnbHNs
YW5nX2luaXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5c2Nhbl90IHNj
YW5uZXIgPSBOVUxMOwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQsICZzY2FubmVy
KSkKQEAgLTM0NCw4ICszMTAsOCBAQCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFyc2VDb250ZXh0
KiBjb250CiBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qg
c3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAgVFBhcnNlQ29u
dGV4dCogY29udGV4dCkgewogICAgIHl5cmVzdGFydChOVUxMLCBjb250ZXh0LT5zY2FubmVyKTsK
LSAgICB5eXNldF9saW5lbm8oRW5jb2RlU291cmNlTG9jKDAsIDEpLCBjb250ZXh0LT5zY2FubmVy
KTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNlOworICAgIHl5c2V0X2NvbHVtbigwLCBj
b250ZXh0LT5zY2FubmVyKTsKKyAgICB5eXNldF9saW5lbm8oMSwgY29udGV4dC0+c2Nhbm5lcik7
CiAKICAgICAvLyBJbml0aWFsaXplIHByZXByb2Nlc3Nvci4KICAgICBpZiAoIWNvbnRleHQtPnBy
ZXByb2Nlc3Nvci5pbml0KGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHJldmlzaW9uIDE1Mjk3
OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogLy8KLS8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KIC8vCkBAIC0zOSw3ICszOSw2IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBF
UyBQQVJTRVIgKGdsc2wKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAogI2RlZmlu
ZSBZWUVOQUJMRV9OTFMgMAotI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQogCiAjZGVmaW5l
IFlZTEVYX1BBUkFNIGNvbnRleHQtPnNjYW5uZXIKICV9CkBAIC00NywxMCArNDYsMTIgQEAgV0hJ
Q0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbAogJWV4cGVjdCAxIC8qIE9uZSBz
aGlmdCByZWR1Y2UgY29uZmxpY3QgYmVjYXVzZSBvZiBpZiB8IGVsc2UgKi8KICVwdXJlLXBhcnNl
cgogJXBhcnNlLXBhcmFtIHtUUGFyc2VDb250ZXh0KiBjb250ZXh0fQorJWxvY2F0aW9ucwogCiAl
dW5pb24geworI2RlZmluZSBZWUxUWVBFIFRTb3VyY2VMb2MKKyNkZWZpbmUgWVlMVFlQRV9JU19E
RUNMQVJFRCAxCiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5lOwogICAgICAg
ICB1bmlvbiB7CiAgICAgICAgICAgICBUU3RyaW5nICpzdHJpbmc7CiAgICAgICAgICAgICBmbG9h
dCBmOwpAQCAtNjAsNyArNjEsNiBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMgUEFSU0VS
IChnbHNsCiAgICAgICAgIFRTeW1ib2wqIHN5bWJvbDsKICAgICB9IGxleDsKICAgICBzdHJ1Y3Qg
ewotICAgICAgICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAgIFRPcGVyYXRvciBvcDsKICAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7CkBAIC03NCwy
MyArNzQsMzEgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbAogICAg
ICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgICAgICAgICBURnVuY3Rpb24qIGZ1
bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKLSAgICAgICAgICAgIFRUeXBl
TGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgIFRUeXBlTGlzdCogdHlwZUxpc3Q7CisgICAgICAg
ICAgICBURmllbGQqIGZpZWxkOworICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0Owog
ICAgICAgICB9OwogICAgIH0gaW50ZXJtOwogfQogCiAlewotZXh0ZXJuIGludCB5eWxleChZWVNU
WVBFKiB5eWx2YWxfcGFyYW0sIHZvaWQqIHl5c2Nhbm5lcik7Ci1leHRlcm4gdm9pZCB5eWVycm9y
KFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CitleHRlcm4gaW50
IHl5bGV4KFlZU1RZUEUqIHl5bHZhbCwgWVlMVFlQRSogeXlsbG9jLCB2b2lkKiB5eXNjYW5uZXIp
Oworc3RhdGljIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAKLSNkZWZpbmUgRlJBR19WRVJUX09OTFkoUywg
TCkgeyAgXAotICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX0ZSQUdNRU5UX1NIQURF
UiAmJiAgXAotICAgICAgICBjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX1ZFUlRFWF9TSEFERVIp
IHsgIFwKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBwb3J0ZWQgaW4gdmVydGV4L2Zy
YWdtZW50IHNoYWRlcnMgb25seSAiLCBTKTsgIFwKLSAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OyAgXAotICAgIH0gIFwKLX0KKyNkZWZpbmUgWVlMTE9DX0RFRkFVTFQoQ3VycmVudCwgUmhzLCBO
KSAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgaWYgKFlZSUQoTikpIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKEN1cnJlbnQp
LmZpcnN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDEpLmZpcnN0X2ZpbGU7ICBcCisgICAgICAgIChD
dXJyZW50KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAxKS5maXJzdF9saW5lOyAgXAorICAg
ICAgICAoQ3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCBOKS5sYXN0X2ZpbGU7ICAg
IFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywgTikubGFzdF9s
aW5lOyAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2ZpbGUgPSBZ
WVJIU0xPQyhSaHMsIDApLmxhc3RfZmlsZTsgICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9s
aW5lID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2xpbmU7ICAgXAorICAgICAgICAoQ3VycmVudCku
bGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2ZpbGU7ICAgIFwKKyAgICAgICAgKEN1
cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9saW5lOyAgICBcCisgICAg
ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICB9IHdoaWxlICgwKQogCiAjZGVmaW5lIFZFUlRFWF9PTkxZKFMsIEwpIHsgIFwKICAgICBp
ZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7ICBcCkBAIC0xMTYs
NyArMTI0LDYgQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBjb250ZQogJXRv
a2VuIDxsZXg+IFNBTVBMRVIyRCBTQU1QTEVSQ1VCRSBTQU1QTEVSX0VYVEVSTkFMX09FUyBTQU1Q
TEVSMkRSRUNUCiAKICV0b2tlbiA8bGV4PiBJREVOVElGSUVSIFRZUEVfTkFNRSBGTE9BVENPTlNU
QU5UIElOVENPTlNUQU5UIEJPT0xDT05TVEFOVAotJXRva2VuIDxsZXg+IEZJRUxEX1NFTEVDVElP
TgogJXRva2VuIDxsZXg+IExFRlRfT1AgUklHSFRfT1AKICV0b2tlbiA8bGV4PiBJTkNfT1AgREVD
X09QIExFX09QIEdFX09QIEVRX09QIE5FX09QCiAldG9rZW4gPGxleD4gQU5EX09QIE9SX09QIFhP
Ul9PUCBNVUxfQVNTSUdOIERJVl9BU1NJR04gQUREX0FTU0lHTgpAQCAtMTI3LDYgKzEzNCw3IEBA
IGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGUKICV0b2tlbiA8bGV4PiBD
T01NQSBDT0xPTiBFUVVBTCBTRU1JQ09MT04gQkFORyBEQVNIIFRJTERFIFBMVVMgU1RBUiBTTEFT
SCBQRVJDRU5UCiAldG9rZW4gPGxleD4gTEVGVF9BTkdMRSBSSUdIVF9BTkdMRSBWRVJUSUNBTF9C
QVIgQ0FSRVQgQU1QRVJTQU5EIFFVRVNUSU9OCiAKKyV0eXBlIDxsZXg+IGlkZW50aWZpZXIKICV0
eXBlIDxpbnRlcm0+IGFzc2lnbm1lbnRfb3BlcmF0b3IgdW5hcnlfb3BlcmF0b3IKICV0eXBlIDxp
bnRlcm0uaW50ZXJtVHlwZWROb2RlPiB2YXJpYWJsZV9pZGVudGlmaWVyIHByaW1hcnlfZXhwcmVz
c2lvbiBwb3N0Zml4X2V4cHJlc3Npb24KICV0eXBlIDxpbnRlcm0uaW50ZXJtVHlwZWROb2RlPiBl
eHByZXNzaW9uIGludGVnZXJfZXhwcmVzc2lvbiBhc3NpZ25tZW50X2V4cHJlc3Npb24KQEAgLTE1
NCw4ICsxNjIsOCBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRlCiAl
dHlwZSA8aW50ZXJtLnR5cGU+IHR5cGVfcXVhbGlmaWVyIGZ1bGx5X3NwZWNpZmllZF90eXBlIHR5
cGVfc3BlY2lmaWVyCiAldHlwZSA8aW50ZXJtLnR5cGU+IHR5cGVfc3BlY2lmaWVyX25vX3ByZWMg
dHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICV0eXBlIDxpbnRlcm0udHlwZT4gc3RydWN0X3NwZWNp
ZmllcgotJXR5cGUgPGludGVybS50eXBlTGluZT4gc3RydWN0X2RlY2xhcmF0b3IKLSV0eXBlIDxp
bnRlcm0udHlwZUxpc3Q+IHN0cnVjdF9kZWNsYXJhdG9yX2xpc3Qgc3RydWN0X2RlY2xhcmF0aW9u
IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0CisldHlwZSA8aW50ZXJtLmZpZWxkPiBzdHJ1Y3RfZGVj
bGFyYXRvcgorJXR5cGUgPGludGVybS5maWVsZExpc3Q+IHN0cnVjdF9kZWNsYXJhdG9yX2xpc3Qg
c3RydWN0X2RlY2xhcmF0aW9uIHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0CiAldHlwZSA8aW50ZXJt
LmZ1bmN0aW9uPiBmdW5jdGlvbl9oZWFkZXIgZnVuY3Rpb25fZGVjbGFyYXRvciBmdW5jdGlvbl9p
ZGVudGlmaWVyCiAldHlwZSA8aW50ZXJtLmZ1bmN0aW9uPiBmdW5jdGlvbl9oZWFkZXJfd2l0aF9w
YXJhbWV0ZXJzIGZ1bmN0aW9uX2NhbGxfaGVhZGVyCiAldHlwZSA8aW50ZXJtPiBmdW5jdGlvbl9j
YWxsX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMgZnVuY3Rpb25fY2FsbF9oZWFkZXJfbm9fcGFyYW1l
dGVycyBmdW5jdGlvbl9jYWxsX2dlbmVyaWMgZnVuY3Rpb25fcHJvdG90eXBlCkBAIC0xNjQsMTMg
KzE3MiwxNyBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRlCiAlc3Rh
cnQgdHJhbnNsYXRpb25fdW5pdAogJSUKIAoraWRlbnRpZmllcgorICAgIDogSURFTlRJRklFUgor
ICAgIHwgVFlQRV9OQU1FCisKIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICA6IElERU5USUZJRVIg
ewogICAgICAgICAvLyBUaGUgc3ltYm9sIHRhYmxlIHNlYXJjaCB3YXMgZG9uZSBpbiB0aGUgbGV4
aWNhbCBwaGFzZQogICAgICAgICBjb25zdCBUU3ltYm9sKiBzeW1ib2wgPSAkMS5zeW1ib2w7CiAg
ICAgICAgIGNvbnN0IFRWYXJpYWJsZSogdmFyaWFibGU7CiAgICAgICAgIGlmIChzeW1ib2wgPT0g
MCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgInVuZGVjbGFyZWQgaWRl
bnRpZmllciIsICQxLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cihAMSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciIsICQxLnN0cmluZy0+Y19zdHIoKSk7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlKEVidEZs
b2F0LCBFYnBVbmRlZmluZWQpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiBmYWtlVmFyaWFibGUg
PSBuZXcgVFZhcmlhYmxlKCQxLnN0cmluZywgdHlwZSk7CkBAIC0xNzksMTAgKzE5MSwxNyBAQCB2
YXJpYWJsZV9pZGVudGlmaWVyCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBUaGlz
IGlkZW50aWZpZXIgY2FuIG9ubHkgYmUgYSB2YXJpYWJsZSB0eXBlIHN5bWJvbAogICAgICAgICAg
ICAgaWYgKCEgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigkMS5saW5lLCAidmFyaWFibGUgZXhwZWN0ZWQiLCAkMS5zdHJpbmctPmNfc3RyKCkp
OworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidmFyaWFibGUgZXhwZWN0ZWQi
LCAkMS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgdmFyaWFibGUgPSBz
dGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOworCisgICAgICAgICAgICBpZiAo
Y29udGV4dC0+c3ltYm9sVGFibGUuZmluZEJ1aWx0SW4odmFyaWFibGUtPmdldE5hbWUoKSkgJiYK
KyAgICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkgJiYKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKEAxLCB2YXJpYWJsZS0+
Z2V0RXh0ZW5zaW9uKCkpKSB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlICQxLnN0
cmluZywgaXQncyB1c2VkIGJ5IGVycm9yIHJlY292ZXJ5LCBhbmQgdGhlIHBvb2wKQEAgLTE5MSwx
MSArMjEwLDEyIEBAIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICAgICAgaWYgKHZhcmlhYmxlLT5n
ZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgKSB7CiAgICAgICAgICAgICBDb25z
dGFudFVuaW9uKiBjb25zdEFycmF5ID0gdmFyaWFibGUtPmdldENvbnN0UG9pbnRlcigpOwogICAg
ICAgICAgICAgVFR5cGUgdCh2YXJpYWJsZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwgJDEu
bGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKGNvbnN0QXJyYXksIHQsIEAxKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlk
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhcmlhYmxlLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksICQxLmxpbmUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRO
YW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyaWFibGUtPmdldFR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBAMSk7CiAgICAgfQogICAgIDsKIApAQCAtMjA5LDIyICsyMjksMjIgQEAg
cHJpbWFyeV9leHByZXNzaW9uCiAgICAgICAgIC8vIGNoZWNrIGZvciBvdmVyZmxvdyBmb3IgY29u
c3RhbnRzCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChhYnMoJDEuaSkgPj0gKDEgPDwgMTYpKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiIGludGVnZXIgY29uc3RhbnQg
b3ZlcmZsb3ciLCAiIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIiBpbnRlZ2Vy
IGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29u
c3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KCQxLmkpOwotICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQxLmxpbmUpOworICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAxKTsKICAgICB9CiAg
ICAgfCBGTE9BVENPTlNUQU5UIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9
IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoJDEu
Zik7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMS5s
aW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAx
KTsKICAgICB9CiAgICAgfCBCT09MQ09OU1RBTlQgewogICAgICAgICBDb25zdGFudFVuaW9uICp1
bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNl
dEJDb25zdCgkMS5iKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNv
bnN0KSwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksIEAxKTsKICAgICB9CiAgICAgfCBMRUZUX1BBUkVOIGV4cHJlc3Npb24gUklHSFRfUEFS
RU4gewogICAgICAgICAkJCA9ICQyOwpAQCAtMjM2LDEwMyArMjU2LDI3IEBAIHBvc3RmaXhfZXhw
cmVzc2lvbgogICAgICAgICAkJCA9ICQxOwogICAgIH0KICAgICB8IHBvc3RmaXhfZXhwcmVzc2lv
biBMRUZUX0JSQUNLRVQgaW50ZWdlcl9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewotICAgICAg
ICBpZiAoISQxLT5pc0FycmF5KCkgJiYgISQxLT5pc01hdHJpeCgpICYmICEkMS0+aXNWZWN0b3Io
KSkgewotICAgICAgICAgICAgaWYgKCQxLT5nZXRBc1N5bWJvbE5vZGUoKSkKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBl
IGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAkMS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5
bWJvbCgpLmNfc3RyKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCQyLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXksIG1h
dHJpeCwgb3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlm
aWVyKCkgPT0gRXZxQ29uc3QgJiYgJDMtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7Ci0g
ICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBh
cnJheXMKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlOb2RlKCQz
LT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0
KCksICQxLCAkMi5saW5lKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkp
IHsgIC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIHZlY3RvcnMKLSAgICAgICAgICAgICAgICBUVmVj
dG9yRmllbGRzIGZpZWxkczsKLSAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKLSAgICAg
ICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1swXSA9ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+
Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7IC8vIG5lZWQgdG8gZG8gaXQgdGhp
cyB3YXkgYmVjYXVzZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5Ci0gICAgICAgICAg
ICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwgJDIubGlu
ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7IC8vIGNvbnN0YW50
IGZvbGRpbmcgZm9yIG1hdHJpY2VzCi0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRD
b25zdE1hdHJpeE5vZGUoJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9p
bnRlcigpLT5nZXRJQ29uc3QoKSwgJDEsICQyLmxpbmUpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKCQzLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25z
dCkgewotICAgICAgICAgICAgICAgIGlmICgoJDEtPmlzVmVjdG9yKCkgfHwgJDEtPmlzTWF0cml4
KCkpICYmICQxLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSA8PSAkMy0+Z2V0QXNDb25zdGFu
dFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpICYmICEkMS0+aXNB
cnJheSgpICkgewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUlu
Zm9TdHJlYW07Ci0gICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiZmllbGQg
c2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8PCAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdl
dFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpIDw8ICInIjsKLSAgICAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIiwgIlsiLCBleHRyYUlu
Zm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJy
YXkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0QXJy
YXlTaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkMS0+Z2V0
VHlwZSgpLmdldE1heEFycmF5U2l6ZSgpIDw9ICQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0
VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgkMS0+Z2V0QXNTeW1ib2xO
b2RlKCksICQxLT5nZXRUeXBlUG9pbnRlcigpLCAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdl
dFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpLCB0cnVlLCAkMi5saW5lKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTZXRNYXhTaXplKCQxLT5nZXRBc1N5bWJvbE5vZGUo
KSwgJDEtPmdldFR5cGVQb2ludGVyKCksIDAsIGZhbHNlLCAkMi5saW5lKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAk
My0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25z
dCgpID49ICQxLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBvdXQgb2Yg
cmFuZ2UgJyIgPDwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICIiLCAiWyIsIGV4dHJhSW5m
by5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9w
SW5kZXhEaXJlY3QsICQxLCAkMywgJDIubGluZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSAmJiAkMS0+
Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgImFycmF5IG11c3QgYmUgcmVkZWNsYXJlZCB3
aXRoIGEgc2l6ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRoIGEgdmFyaWFibGUiKTsKLSAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcElu
ZGV4SW5kaXJlY3QsICQxLCAkMywgJDIubGluZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9u
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgICAgIHVuaW9uQXJyYXktPnNl
dEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUNv
bnN0KSwgJDIubGluZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzQXJyYXkoKSkgewotICAg
ICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpCi0gICAgICAgICAgICAgICAg
JCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSwgJDEtPmdldFR5cGUo
KS5nZXRUeXBlTmFtZSgpKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgJCQt
PnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9uKCksIEV2
cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCksICQxLT5pc01hdHJpeCgpKSk7Ci0KLSAg
ICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQot
ICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29u
c3QpOwotICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpICYmICQxLT5nZXRUeXBlKCku
Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlw
ZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QsICQxLT5n
ZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKQotICAg
ICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJl
Y2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCkpKTsKLSAgICAgICAg
ZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkgJiYgJDEtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9
PSBFdnFDb25zdCkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5
cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCkpOwotICAgICAgICBlbHNlIGlmICgk
MS0+aXNWZWN0b3IoKSkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNp
Y1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnkpKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgJCQtPnNldFR5cGUoJDEtPmdldFR5cGUoKSk7CisgICAgICAgICQkID0g
Y29udGV4dC0+YWRkSW5kZXhFeHByZXNzaW9uKCQxLCBAMiwgJDMpOwogICAgIH0KICAgICB8IGZ1
bmN0aW9uX2NhbGwgewogICAgICAgICAkJCA9ICQxOwogICAgIH0KLSAgICB8IHBvc3RmaXhfZXhw
cmVzc2lvbiBET1QgRklFTERfU0VMRUNUSU9OIHsKKyAgICB8IHBvc3RmaXhfZXhwcmVzc2lvbiBE
T1QgaWRlbnRpZmllciB7CiAgICAgICAgIGlmICgkMS0+aXNBcnJheSgpKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMy5saW5lLCAiY2Fubm90IGFwcGx5IGRvdCBvcGVyYXRvciB0byBh
biBhcnJheSIsICIuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMywgImNhbm5vdCBh
cHBseSBkb3Qgb3BlcmF0b3IgdG8gYW4gYXJyYXkiLCAiLiIpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCQxLT5pc1ZlY3RvcigpKSB7
CiAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKLSAgICAgICAgICAgIGlmICghIGNv
bnRleHQtPnBhcnNlVmVjdG9yRmllbGRzKCokMy5zdHJpbmcsICQxLT5nZXROb21pbmFsU2l6ZSgp
LCBmaWVsZHMsICQzLmxpbmUpKSB7CisgICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJzZVZl
Y3RvckZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCBAMykp
IHsKICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKICAgICAgICAgICAgICAgICBmaWVs
ZHMub2Zmc2V0c1swXSA9IDA7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUoKS5nZXRRdWFsaWZp
ZXIoKSA9PSBFdnFDb25zdCkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3IgZmllbGRz
Ci0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRz
LCAkMSwgJDMubGluZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZl
Y3Rvck5vZGUoZmllbGRzLCAkMSwgQDMpOwogICAgICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAg
ICAgICAgJCQgPSAkMTsKQEAgLTM0MSwxMyArMjg1LDEzIEBAIHBvc3RmaXhfZXhwcmVzc2lvbgog
ICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCks
ICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QsIChpbnQpICgqJDMuc3RyaW5nKS5zaXplKCkp
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgVFN0cmluZyB2ZWN0b3JT
dHJpbmcgPSAqJDMuc3RyaW5nOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXgg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVsZHMsICQzLmxpbmUpOwotICAg
ICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcFZlY3Rv
clN3aXp6bGUsICQxLCBpbmRleCwgJDIubGluZSk7CisgICAgICAgICAgICAgICAgVEludGVybVR5
cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxlKGZpZWxkcywgQDMp
OworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVP
cFZlY3RvclN3aXp6bGUsICQxLCBpbmRleCwgQDIpOwogICAgICAgICAgICAgICAgICQkLT5zZXRU
eXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFUZW1w
b3JhcnksIChpbnQpIHZlY3RvclN0cmluZy5zaXplKCkpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlIGlmICgkMS0+aXNNYXRyaXgoKSkgewogICAgICAgICAgICAgVE1hdHJpeEZpZWxk
cyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJzZU1hdHJpeEZpZWxkcygq
JDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAkMy5saW5lKSkgeworICAg
ICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKiQzLnN0cmluZywgJDEt
PmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgQDMpKSB7CiAgICAgICAgICAgICAgICAgZmllbGRz
Lndob2xlUm93ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLndob2xlQ29sID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLnJvdyA9IDA7CkBAIC0zNTYsODQgKzMwMCw3OCBA
QCBwb3N0Zml4X2V4cHJlc3Npb24KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGZp
ZWxkcy53aG9sZVJvdyB8fCBmaWVsZHMud2hvbGVDb2wpIHsKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigkMi5saW5lLCAiIG5vbi1zY2FsYXIgZmllbGRzIG5vdCBpbXBsZW1lbnRlZCB5
ZXQiLCAiLiIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiIG5vbi1zY2Fs
YXIgZmllbGRzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiLCAiLiIpOwogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+
c2V0SUNvbnN0KDApOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJ
bnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMy5saW5lKTsKLSAgICAgICAgICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgJDEsIGlu
ZGV4LCAkMi5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDMpOworICAgICAgICAgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwgaW5kZXgs
IEAyKTsKICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBl
KCksICQxLT5nZXRQcmVjaXNpb24oKSxFdnFUZW1wb3JhcnksICQxLT5nZXROb21pbmFsU2l6ZSgp
KSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24g
KnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgICAgICB1bmlv
bkFycmF5LT5zZXRJQ29uc3QoZmllbGRzLmNvbCAqICQxLT5nZXROb21pbmFsU2l6ZSgpICsgZmll
bGRzLnJvdyk7Ci0gICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQzLmxpbmUpOwotICAgICAgICAgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwgaW5kZXgs
ICQyLmxpbmUpOworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMyk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCBpbmRleCwgQDIp
OwogICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwg
JDEtPmdldFByZWNpc2lvbigpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAo
JDEtPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgewogICAgICAgICAgICAgYm9vbCBmaWVs
ZEZvdW5kID0gZmFsc2U7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZUxpc3QqIGZpZWxkcyA9ICQx
LT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgICAgICAgICBpZiAoZmllbGRzID09IDApIHsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAic3RydWN0dXJlIGhhcyBu
byBmaWVsZHMiLCAiSW50ZXJuYWwgRXJyb3IiKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7Ci0gICAgICAgICAgICAgICAgZm9yIChp
ID0gMDsgaSA8IGZpZWxkcy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCgqZmllbGRzKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSAqJDMuc3RyaW5nKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBjb25zdCBU
RmllbGRMaXN0JiBmaWVsZHMgPSAkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVsZHMoKTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8
IGZpZWxkcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChmaWVsZHNbaV0tPm5h
bWUoKSA9PSAqJDMuc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGZpZWxkRm91bmQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgaWYgKGZpZWxkRm91bmQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCQx
LT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RTdHJ1Y3QoKiQzLnN0cmluZywgJDEsICQy
LmxpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLT5z
ZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0eXBlLCBub3Qgb2YgdGhlIHN0
cnVjdHVyZSBmaWVsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIHRoZSBzdHJ1
Y3R1cmUgZGVmaW5pdGlvbiBpcyBzaGFyZWQgYmV0d2VlbiB2YXJpb3VzIHN0cnVjdHVyZXMuCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQtPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxp
ZmllcihFdnFDb25zdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1
bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBUSW50
ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgKigqZmllbGRzKVtpXS50eXBlLCAkMy5saW5lKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGly
ZWN0U3RydWN0LCAkMSwgaW5kZXgsICQyLmxpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAg
JCQtPnNldFR5cGUoKigqZmllbGRzKVtpXS50eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChmaWVsZEZvdW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCku
Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5hZGRDb25zdFN0cnVjdCgqJDMuc3RyaW5nLCAkMSwgQDIpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoJCQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICQkLT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBjaGFuZ2UgdGhlIHF1YWxpZmllciBvZiB0aGUgcmV0dXJuIHR5cGUsIG5vdCBv
ZiB0aGUgc3RydWN0dXJlIGZpZWxkCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyB0aGUg
c3RydWN0dXJlIGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1Y3R1cmVz
LgorICAgICAgICAgICAgICAgICAgICAgICAgJCQtPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxp
ZmllcihFdnFDb25zdCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIG5v
IHN1Y2ggZmllbGQgaW4gc3RydWN0dXJlIiwgJDMuc3RyaW5nLT5jX3N0cigpKTsKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAkJCA9
ICQxOworICAgICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bMV07CisgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElD
b25zdChpKTsKKyAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksICpmaWVsZHNbaV0t
PnR5cGUoKSwgQDMpOworICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdFN0cnVjdCwgJDEsIGluZGV4LCBAMik7CisgICAg
ICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7CiAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcihAMiwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICQzLnN0cmluZy0+Y19z
dHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAg
ICAgICQkID0gJDE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIGZpZWxkIHNlbGVjdGlvbiByZXF1aXJlcyBzdHJ1
Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRlIiwgJDMuc3RyaW5nLT5j
X3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiIGZpZWxkIHNlbGVjdGlv
biByZXF1aXJlcyBzdHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRl
IiwgJDMuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICAgICAgLy8gZG9uJ3QgZGVsZXRl
ICQzLnN0cmluZywgaXQncyBmcm9tIHRoZSBwb29sCiAgICAgfQogICAgIHwgcG9zdGZpeF9leHBy
ZXNzaW9uIElOQ19PUCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCQy
LmxpbmUsICIrKyIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2so
QDIsICIrKyIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RJbmNyZW1lbnQs
ICQxLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVtZW50LCAkMSwgQDIsIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMi5saW5lLCAiKysiLCAkMS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDIsICIrKyIsICQxLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBwb3N0Zml4X2V4cHJl
c3Npb24gREVDX09QIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soJDIu
bGluZSwgIi0tIiwgJDEpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjayhA
MiwgIi0tIiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdERlY3JlbWVudCwg
JDEsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNyZW1lbnQsICQxLCBAMiwgY29u
dGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAg
Y29udGV4dC0+dW5hcnlPcEVycm9yKCQyLmxpbmUsICItLSIsICQxLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihAMiwgIi0tIiwgJDEtPmdl
dENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpAQCAtNDYxLDE4ICszOTksMTggQEAgZnVuY3Rp
b25fY2FsbAogICAgICAgICAgICAgLy8gVGhlaXIgcGFyYW1ldGVycyB3aWxsIGJlIHZlcmlmaWVk
IGFsZ29yaXRobWljYWxseS4KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBUVHlwZSB0eXBl
KEVidFZvaWQsIEVicFVuZGVmaW5lZCk7ICAvLyB1c2UgdGhpcyB0byBnZXQgdGhlIHR5cGUgYmFj
awotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVjaygkMS5saW5l
LCAkMS5pbnRlcm1Ob2RlLCAqZm5DYWxsLCBvcCwgJnR5cGUpKSB7CisgICAgICAgICAgICBpZiAo
Y29udGV4dC0+Y29uc3RydWN0b3JFcnJvckNoZWNrKEAxLCAkMS5pbnRlcm1Ob2RlLCAqZm5DYWxs
LCBvcCwgJnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgJCQgPSAwOwogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEl0J3MgYSBjb25z
dHJ1Y3Rvciwgb2YgdHlwZSAndHlwZScuCiAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0cnVjdG9yKCQxLmludGVybU5vZGUsICZ0eXBlLCBv
cCwgZm5DYWxsLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENv
bnN0cnVjdG9yKCQxLmludGVybU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxsLCBAMSk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKDAsIG9wLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigwLCBvcCwg
QDEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgJCQtPnNldFR5cGUodHlwZSk7CiAgICAg
ICAgIH0gZWxzZSB7CkBAIC00ODEsMTMgKzQxOSwxMyBAQCBmdW5jdGlvbl9jYWxsCiAgICAgICAg
ICAgICAvLwogICAgICAgICAgICAgY29uc3QgVEZ1bmN0aW9uKiBmbkNhbmRpZGF0ZTsKICAgICAg
ICAgICAgIGJvb2wgYnVpbHRJbjsKLSAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+
ZmluZEZ1bmN0aW9uKCQxLmxpbmUsIGZuQ2FsbCwgJmJ1aWx0SW4pOworICAgICAgICAgICAgZm5D
YW5kaWRhdGUgPSBjb250ZXh0LT5maW5kRnVuY3Rpb24oQDEsIGZuQ2FsbCwgJmJ1aWx0SW4pOwog
ICAgICAgICAgICAgaWYgKGZuQ2FuZGlkYXRlKSB7CiAgICAgICAgICAgICAgICAgLy8KICAgICAg
ICAgICAgICAgICAvLyBBIGRlY2xhcmVkIGZ1bmN0aW9uLgogICAgICAgICAgICAgICAgIC8vCiAg
ICAgICAgICAgICAgICAgaWYgKGJ1aWx0SW4gJiYgIWZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24o
KS5lbXB0eSgpICYmCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmV4dGVuc2lvbkVycm9y
Q2hlY2soJDEubGluZSwgZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgeworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKEAxLCBmbkNhbmRpZGF0ZS0+
Z2V0RXh0ZW5zaW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3AgPSBmbkNhbmRpZGF0ZS0+
Z2V0QnVpbHRJbk9wKCk7CkBAIC00OTksNyArNDM3LDcgQEAgZnVuY3Rpb25fY2FsbAogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRyZWF0IGl0
IGxpa2UgYSBidWlsdC1pbiB1bmFyeSBvcGVyYXRvci4KICAgICAgICAgICAgICAgICAgICAgICAg
IC8vCi0gICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRVbmFyeU1hdGgob3AsICQxLmludGVybU5vZGUsIDAsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVu
YXJ5TWF0aChvcCwgJDEuaW50ZXJtTm9kZSwgQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkJCA9PSAwKSAgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImJ1aWx0IGluIHVuYXJ5IG9wZXJh
dG9yIGZ1bmN0aW9uLiAgVHlwZTogIiA8PCBzdGF0aWNfY2FzdDxUSW50ZXJtVHlwZWQqPigkMS5p
bnRlcm1Ob2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKTsKQEAgLTUwOCwxMiArNDQ2LDEyIEBAIGZ1
bmN0aW9uX2NhbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZWUVSUk9SOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRl
T3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBvcCwgJDEubGluZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRv
cigkMS5pbnRlcm1BZ2dyZWdhdGUsIG9wLCBAMSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEg
cmVhbCBmdW5jdGlvbiBjYWxsCiAKLSAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBFT3BG
dW5jdGlvbkNhbGwsICQxLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigkMS5pbnRlcm1BZ2dyZWdhdGUsIEVP
cEZ1bmN0aW9uQ2FsbCwgQDEpOwogICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShmbkNh
bmRpZGF0ZS0+Z2V0UmV0dXJuVHlwZSgpKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyB0aGlz
IGlzIGhvdyB3ZSBrbm93IHdoZXRoZXIgdGhlIGdpdmVuIGZ1bmN0aW9uIGlzIGEgYnVpbHRJbiBm
dW5jdGlvbiBvciBhIHVzZXIgZGVmaW5lZCBmdW5jdGlvbgpAQCAtNTQwLDcgKzQ3OCw3IEBAIGZ1
bmN0aW9uX2NhbGwKICAgICAgICAgICAgICAgICAvLyBQdXQgb24gYSBkdW1teSBub2RlIGZvciBl
cnJvciByZWNvdmVyeQogICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkg
PSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRG
Q29uc3QoMC4wZik7Ci0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFDb25zdCksICQxLmxpbmUpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01NTMsNyArNDkxLDcgQEAgZnVu
Y3Rpb25fY2FsbF9vcl9tZXRob2QKICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCBwb3N0
Zml4X2V4cHJlc3Npb24gRE9UIGZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyB7Ci0gICAgICAgIGNvbnRl
eHQtPmVycm9yKCQzLmxpbmUsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkIiwgIiIpOworICAg
ICAgICBjb250ZXh0LT5lcnJvcihAMywgIm1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQiLCAiIik7
CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgJCQgPSAkMzsKICAgICB9CkBA
IC01NjIsMTEgKzUwMCw5IEBAIGZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9kCiBmdW5jdGlvbl9jYWxs
X2dlbmVyaWMKICAgICA6IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVycyBSSUdI
VF9QQVJFTiB7CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICQkLmxpbmUgPSAkMi5saW5lOwog
ICAgIH0KICAgICB8IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX25vX3BhcmFtZXRlcnMgUklHSFRfUEFS
RU4gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICAkJC5saW5lID0gJDIubGluZTsKICAgICB9
CiAgICAgOwogCkBAIC01OTIsNyArNTI4LDcgQEAgZnVuY3Rpb25fY2FsbF9oZWFkZXJfd2l0aF9w
YXJhbWV0ZXJzCiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgkMy0+
Z2V0VHlwZSgpKSB9OwogICAgICAgICAkMS5mdW5jdGlvbi0+YWRkUGFyYW1ldGVyKHBhcmFtKTsK
ICAgICAgICAgJCQuZnVuY3Rpb24gPSAkMS5mdW5jdGlvbjsKLSAgICAgICAgJCQuaW50ZXJtTm9k
ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsICQz
LCAkMi5saW5lKTsKKyAgICAgICAgJCQuaW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsICQzLCBAMik7CiAgICAgfQogICAgIDsKIApA
QCAtNjE3LDM5ICs1NTMsMzkgQEAgZnVuY3Rpb25faWRlbnRpZmllcgogICAgICAgICAgICAgY2Fz
ZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICBpZiAoJDEubWF0cml4KSB7CiAgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCgkMS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQy
OyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
Mjogb3AgPSBFT3BDb25zdHJ1Y3RNYXQyOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzd2l0
Y2goJDEuc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wID0gRU9wQ29uc3RydWN0VmVjMjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIDM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3Ry
dWN0VmVjMzsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjNDsgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0VmVjMjsgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0VmVjMzsg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0VmVj
NDsgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAgICAgICAg
ICAgICAgc3dpdGNoKCQxLnNpemUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEludDsgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVj
MiIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWMyOyBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIDM6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjMyIsICQxLmxpbmUpOyBvcCA9
IEVPcENvbnN0cnVjdElWZWMzOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAg
IEZSQUdfVkVSVF9PTkxZKCJpdmVjNCIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWM0
OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0SW50OyAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdElWZWMzOyBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0SVZlYzQ7IGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgRWJ0Qm9vbDoKICAgICAgICAgICAgICAgICBzd2l0Y2goJDEuc2l6ZSkgewotICAg
ICAgICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
MjogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWMyIiwgJDEubGluZSk7IG9wID0gRU9wQ29uc3Ry
dWN0QlZlYzI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgRlJBR19WRVJU
X09OTFkoImJ2ZWMzIiwgJDEubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7IGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWM0IiwgJDEu
bGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgMTogb3AgPSBFT3BDb25zdHJ1Y3RCb29sOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSAyOiBvcCA9IEVPcENvbnN0cnVjdEJWZWMyOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IDM6IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
NDogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjNDsgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAob3AgPT0gRU9wTnVsbCkgewotICAgICAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdl
dEJhc2ljU3RyaW5nKCQxLnR5cGUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihA
MSwgImNhbm5vdCBjb25zdHJ1Y3QgdGhpcyB0eXBlIiwgZ2V0QmFzaWNTdHJpbmcoJDEudHlwZSkp
OwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAk
MS50eXBlID0gRWJ0RmxvYXQ7CiAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RGbG9h
dDsKQEAgLTY2MSwxNCArNTk3LDcgQEAgZnVuY3Rpb25faWRlbnRpZmllcgogICAgICAgICAkJCA9
IGZ1bmN0aW9uOwogICAgIH0KICAgICB8IElERU5USUZJRVIgewotICAgICAgICBpZiAoY29udGV4
dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5zdHJpbmcpKQotICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVm
aW5lZCk7Ci0gICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCQxLnN0
cmluZywgdHlwZSk7Ci0gICAgICAgICQkID0gZnVuY3Rpb247Ci0gICAgfQotICAgIHwgRklFTERf
U0VMRUNUSU9OIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygkMS5s
aW5lLCAqJDEuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVj
ayhAMSwgKiQxLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgVEZ1bmN0aW9u
ICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oJDEuc3RyaW5nLCB0eXBlKTsKQEAgLTY4MSwyOCAr
NjEwLDI4IEBAIHVuYXJ5X2V4cHJlc3Npb24KICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAg
fCBJTkNfT1AgdW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVF
cnJvckNoZWNrKCQxLmxpbmUsICIrKyIsICQyKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1
ZUVycm9yQ2hlY2soQDEsICIrKyIsICQyKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBy
ZUluY3JlbWVudCwgJDIsICQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFByZUluY3JlbWVudCwg
JDIsIEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDEubGluZSwgIisrIiwgJDItPmdldENv
bXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKEAxLCAi
KysiLCAkMi0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQyOwogICAgICAgICB9CiAgICAgfQogICAgIHwgREVD
X09QIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JD
aGVjaygkMS5saW5lLCAiLS0iLCAkMikpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJv
ckNoZWNrKEAxLCAiLS0iLCAkMikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVEZWNy
ZW1lbnQsICQyLCAkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVEZWNyZW1lbnQsICQyLCBA
MSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsICItLSIsICQyLT5nZXRDb21wbGV0
ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihAMSwgIi0tIiwg
JDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgfQogICAgIH0KICAgICB8IHVuYXJ5X29w
ZXJhdG9yIHVuYXJ5X2V4cHJlc3Npb24gewogICAgICAgICBpZiAoJDEub3AgIT0gRU9wTnVsbCkg
ewotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCQx
Lm9wLCAkMiwgJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCQxLm9wLCAkMiwgQDEsIGNvbnRl
eHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7CiAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZXJyb3JPcCA9ICIiOwogICAgICAgICAgICAgICAgIHN3aXRjaCgk
MS5vcCkgewpAQCAtNzEwLDcgKzYzOSw3IEBAIHVuYXJ5X2V4cHJlc3Npb24KICAgICAgICAgICAg
ICAgICBjYXNlIEVPcExvZ2ljYWxOb3Q6IGVycm9yT3AgPSAiISI7IGJyZWFrOwogICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDEubGluZSwgZXJyb3JPcCwgJDItPmdldENvbXBsZXRl
U3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihAMSwgZXJy
b3JPcCwgJDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAkJCA9ICQyOwogICAgICAgICAgICAgfQpAQCAt
NzIxLDI4ICs2NTAsMjYgQEAgdW5hcnlfZXhwcmVzc2lvbgogLy8gR3JhbW1hciBOb3RlOiAgTm8g
dHJhZGl0aW9uYWwgc3R5bGUgdHlwZSBjYXN0cy4KIAogdW5hcnlfb3BlcmF0b3IKLSAgICA6IFBM
VVMgIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTnVsbDsgfQotICAgIHwgREFTSCAg
eyAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BOZWdhdGl2ZTsgfQotICAgIHwgQkFORyAg
eyAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BMb2dpY2FsTm90OyB9CisgICAgOiBQTFVT
ICB7ICQkLm9wID0gRU9wTnVsbDsgfQorICAgIHwgREFTSCAgeyAkJC5vcCA9IEVPcE5lZ2F0aXZl
OyB9CisgICAgfCBCQU5HICB7ICQkLm9wID0gRU9wTG9naWNhbE5vdDsgfQogICAgIDsKIC8vIEdy
YW1tYXIgTm90ZTogIE5vICcqJyBvciAnJicgdW5hcnkgb3BzLiAgUG9pbnRlcnMgYXJlIG5vdCBz
dXBwb3J0ZWQuCiAKIG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24KICAgICA6IHVuYXJ5X2V4cHJl
c3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIFNUQVIg
dW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIqIiwgJDIubGluZSk7
Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVs
LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BNdWwsICQxLCAkMywgQDIsIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIioiLCAkMS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+Ymlu
YXJ5T3BFcnJvcihAMiwgIioiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBs
ZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAg
ICAgJCQgPSAkMTsKICAgICAgICAgfQogICAgIH0KICAgICB8IG11bHRpcGxpY2F0aXZlX2V4cHJl
c3Npb24gU0xBU0ggdW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIv
IiwgJDIubGluZSk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFy
eU1hdGgoRU9wRGl2LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BEaXYsICQx
LCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIi8iLCAkMS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAg
Y29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIi8iLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwg
JDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpAQCAtNzUyLDE3ICs2NzksMTcgQEAg
bXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbgogYWRkaXRpdmVfZXhwcmVzc2lvbgogICAgIDogbXVs
dGlwbGljYXRpdmVfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGFkZGl0aXZlX2V4cHJl
c3Npb24gUExVUyBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICQxLCAkMywgJDIubGluZSwg
Y29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcEFkZCwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUp
OwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BF
cnJvcigkMi5saW5lLCAiKyIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiKyIs
ICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAg
ICB9CiAgICAgfQogICAgIHwgYWRkaXRpdmVfZXhwcmVzc2lvbiBEQVNIIG11bHRpcGxpY2F0aXZl
X2V4cHJlc3Npb24gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5h
cnlNYXRoKEVPcFN1YiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7Cisg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wU3ViLCAk
MSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICItIiwgJDEtPmdl
dENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICItIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCks
ICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTc3Niw0MyArNzAzLDQzIEBA
IHNoaWZ0X2V4cHJlc3Npb24KIHJlbGF0aW9uYWxfZXhwcmVzc2lvbgogICAgIDogc2hpZnRfZXhw
cmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IHJlbGF0aW9uYWxfZXhwcmVzc2lvbiBMRUZUX0FO
R0xFIHNoaWZ0X2V4cHJlc3Npb24gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BMZXNzVGhhbiwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAg
ICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigk
Mi5saW5lLCAiPCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiPCIsICQxLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFy
cmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRC
Q29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2
cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCByZWxhdGlvbmFsX2V4
cHJlc3Npb24gUklHSFRfQU5HTEUgc2hpZnRfZXhwcmVzc2lvbiAgewotICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuLCAkMSwgJDMs
ICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgJDEsICQzLCBAMiwgY29u
dGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAg
Y29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiPiIsICQxLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5h
cnlPcEVycm9yKEAyLCAiPiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAg
ICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Npb24gTEVfT1Agc2hpZnRfZXhwcmVzc2lvbiAg
ewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExl
c3NUaGFuRXF1YWwsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFu
RXF1YWwsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQk
ID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIjw9
IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICI8PSIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFs
c2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
JDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29u
c3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Npb24g
R0VfT1Agc2hpZnRfZXhwcmVzc2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuRXF1YWwsICQxLCAkMywgJDIubGluZSwg
Y29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuRXF1YWwsICQxLCAkMywgQDIsIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj49IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCks
ICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoQDIsICI+PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBD
b25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAg
ICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9
CiAgICAgOwpAQCAtODIwLDIzICs3NDcsMjMgQEAgcmVsYXRpb25hbF9leHByZXNzaW9uCiBlcXVh
bGl0eV9leHByZXNzaW9uCiAgICAgOiByZWxhdGlvbmFsX2V4cHJlc3Npb24geyAkJCA9ICQxOyB9
CiAgICAgfCBlcXVhbGl0eV9leHByZXNzaW9uIEVRX09QIHJlbGF0aW9uYWxfZXhwcmVzc2lvbiAg
ewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVx
dWFsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BFcXVhbCwgJDEsICQzLCBA
MiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiPT0iLCAkMS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcihAMiwgIj09IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsx
XTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMi5saW5lKTsKKyAgICAg
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25B
cnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAyKTsKICAgICAg
ICAgfQogICAgIH0KICAgICB8IGVxdWFsaXR5X2V4cHJlc3Npb24gTkVfT1AgcmVsYXRpb25hbF9l
eHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BOb3RFcXVhbCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7
CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTm90
RXF1YWwsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQk
ID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIiE9
IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIhPSIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFs
c2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
JDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29u
c3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgOwpAQCAtODU2LDEzICs3ODMsMTMgQEAg
aW5jbHVzaXZlX29yX2V4cHJlc3Npb24KIGxvZ2ljYWxfYW5kX2V4cHJlc3Npb24KICAgICA6IGlu
Y2x1c2l2ZV9vcl9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbG9naWNhbF9hbmRfZXhw
cmVzc2lvbiBBTkRfT1AgaW5jbHVzaXZlX29yX2V4cHJlc3Npb24gewotICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICQxLCAkMywg
JDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICQxLCAkMywgQDIsIGNvbnRl
eHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIiYmIiwgJDEtPmdldENvbXBsZXRlU3RyaW5n
KCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoQDIsICImJiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAg
ICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgOwpAQCAtODcwLDEzICs3OTcsMTMgQEAgbG9naWNhbF9hbmRfZXhwcmVzc2lvbgog
bG9naWNhbF94b3JfZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF9hbmRfZXhwcmVzc2lvbiB7ICQk
ID0gJDE7IH0KICAgICB8IGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24gWE9SX09QIGxvZ2ljYWxfYW5k
X2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmlu
YXJ5TWF0aChFT3BMb2dpY2FsWG9yLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChF
T3BMb2dpY2FsWG9yLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAg
IGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxp
bmUsICJeXiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiXl4iLCAkMS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNv
bnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg4NCwxMyArODEx
LDEzIEBAIGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24KIGxvZ2ljYWxfb3JfZXhwcmVzc2lvbgogICAg
IDogbG9naWNhbF94b3JfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxvZ2ljYWxfb3Jf
ZXhwcmVzc2lvbiBPUl9PUCBsb2dpY2FsX3hvcl9leHByZXNzaW9uICB7Ci0gICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAkMSwgJDMs
ICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsT3IsICQxLCAkMywgQDIsIGNvbnRl
eHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgInx8IiwgJDEtPmdldENvbXBsZXRlU3RyaW5n
KCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoQDIsICJ8fCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAg
ICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgOwpAQCAtODk4LDE1ICs4MjUsMTUgQEAgbG9naWNhbF9vcl9leHByZXNzaW9uCiBj
b25kaXRpb25hbF9leHByZXNzaW9uCiAgICAgOiBsb2dpY2FsX29yX2V4cHJlc3Npb24geyAkJCA9
ICQxOyB9CiAgICAgfCBsb2dpY2FsX29yX2V4cHJlc3Npb24gUVVFU1RJT04gZXhwcmVzc2lvbiBD
T0xPTiBhc3NpZ25tZW50X2V4cHJlc3Npb24gewotICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJy
b3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNr
KEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCQxLCAkMywgJDUsICQyLmxpbmUp
OworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oJDEsICQz
LCAkNSwgQDIpOwogICAgICAgICBpZiAoJDMtPmdldFR5cGUoKSAhPSAkNS0+Z2V0VHlwZSgpKQog
ICAgICAgICAgICAgJCQgPSAwOwogCiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI6IiwgJDMtPmdldENvbXBsZXRlU3Ry
aW5nKCksICQ1LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoQDIsICI6IiwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCksICQ1LT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICQkID0gJDU7CiAgICAgICAgIH0KQEAgLTkxNiwxMSArODQzLDExIEBAIGNvbmRpdGlvbmFs
X2V4cHJlc3Npb24KIGFzc2lnbm1lbnRfZXhwcmVzc2lvbgogICAgIDogY29uZGl0aW9uYWxfZXhw
cmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IHVuYXJ5X2V4cHJlc3Npb24gYXNzaWdubWVudF9v
cGVyYXRvciBhc3NpZ25tZW50X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4dC0+bFZh
bHVlRXJyb3JDaGVjaygkMi5saW5lLCAiYXNzaWduIiwgJDEpKQorICAgICAgICBpZiAoY29udGV4
dC0+bFZhbHVlRXJyb3JDaGVjayhAMiwgImFzc2lnbiIsICQxKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQXNz
aWduKCQyLm9wLCAkMSwgJDMsICQyLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRBc3NpZ24oJDIub3AsICQxLCAkMywgQDIpOwogICAgICAgICBpZiAoJCQgPT0g
MCkgewotICAgICAgICAgICAgY29udGV4dC0+YXNzaWduRXJyb3IoJDIubGluZSwgImFzc2lnbiIs
ICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5hc3NpZ25FcnJvcihAMiwgImFzc2lnbiIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CkBAIC05MjgsMTEg
Kzg1NSwxMSBAQCBhc3NpZ25tZW50X2V4cHJlc3Npb24KICAgICA7CiAKIGFzc2lnbm1lbnRfb3Bl
cmF0b3IKLSAgICA6IEVRVUFMICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wQXNzaWduOyB9Ci0gICAgfCBNVUxf
QVNTSUdOICAgeyBGUkFHX1ZFUlRfT05MWSgiKj0iLCAkMS5saW5lKTsgICAgICQkLmxpbmUgPSAk
MS5saW5lOyAkJC5vcCA9IEVPcE11bEFzc2lnbjsgfQotICAgIHwgRElWX0FTU0lHTiAgIHsgRlJB
R19WRVJUX09OTFkoIi89IiwgJDEubGluZSk7ICAgICAkJC5saW5lID0gJDEubGluZTsgJCQub3Ag
PSBFT3BEaXZBc3NpZ247IH0KLSAgICB8IEFERF9BU1NJR04gICB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wQWRkQXNzaWdu
OyB9Ci0gICAgfCBTVUJfQVNTSUdOICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcFN1YkFzc2lnbjsgfQorICAgIDogRVFV
QUwgICAgICAgIHsgJCQub3AgPSBFT3BBc3NpZ247IH0KKyAgICB8IE1VTF9BU1NJR04gICB7ICQk
Lm9wID0gRU9wTXVsQXNzaWduOyB9CisgICAgfCBESVZfQVNTSUdOICAgeyAkJC5vcCA9IEVPcERp
dkFzc2lnbjsgfQorICAgIHwgQUREX0FTU0lHTiAgIHsgJCQub3AgPSBFT3BBZGRBc3NpZ247IH0K
KyAgICB8IFNVQl9BU1NJR04gICB7ICQkLm9wID0gRU9wU3ViQXNzaWduOyB9CiAgICAgOwogCiBl
eHByZXNzaW9uCkBAIC05NDAsOSArODY3LDkgQEAgZXhwcmVzc2lvbgogICAgICAgICAkJCA9ICQx
OwogICAgIH0KICAgICB8IGV4cHJlc3Npb24gQ09NTUEgYXNzaWdubWVudF9leHByZXNzaW9uIHsK
LSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29tbWEoJDEsICQzLCAkMi5s
aW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29tbWEoJDEsICQz
LCBAMik7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5h
cnlPcEVycm9yKCQyLmxpbmUsICIsIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIs
ICIsIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDM7CiAg
ICAgICAgIH0KQEAgLTk3MCwxMyArODk3LDEzIEBAIGRlY2xhcmF0aW9uCiAgICAgICAgICAgICBj
b25zdCBUUGFyYW1ldGVyICZwYXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOwogICAgICAgICAg
ICAgaWYgKHBhcmFtLm5hbWUgIT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBU
VmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlw
ZSk7CisgICAgICAgICAgICAgICAgVFZhcmlhYmxlIHZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJh
bS50eXBlKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLT5n
ZXROYW1lKCksIHZhcmlhYmxlLT5nZXRUeXBlKCksICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAg
ICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0
ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUuZ2V0
VW5pcXVlSWQoKSwgdmFyaWFibGUuZ2V0TmFtZSgpLCB2YXJpYWJsZS5nZXRUeXBlKCksIEAxKSwg
QDEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVn
YXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBh
cmFtLnR5cGUsICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCBAMSksIEAxKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTk5MiwxMSArOTE5LDExIEBAIGRl
Y2xhcmF0aW9uCiAgICAgfQogICAgIHwgUFJFQ0lTSU9OIHByZWNpc2lvbl9xdWFsaWZpZXIgdHlw
ZV9zcGVjaWZpZXJfbm9fcHJlYyBTRU1JQ09MT04gewogICAgICAgICBpZiAoKCQyID09IEVicEhp
Z2gpICYmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX0ZSQUdNRU5UX1NIQURFUikgJiYgIWNv
bnRleHQtPmZyYWdtZW50UHJlY2lzaW9uSGlnaCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoJDEubGluZSwgInByZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGZyYWdtZW50IHNoYWRl
ciIsICJoaWdocCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJwcmVjaXNpb24g
aXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWNvbnRleHQt
PnN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oICQzLCAkMiApKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBkZWZh
dWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmluZygkMy50eXBlKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBmb3IgZGVm
YXVsdCBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlwZSkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgICQkID0gMDsK
QEAgLTEwMTYsMjQgKzk0Myw0MSBAQCBmdW5jdGlvbl9wcm90b3R5cGUKICAgICAgICAgVEZ1bmN0
aW9uKiBwcmV2RGVjID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uKj4oY29udGV4dC0+c3ltYm9sVGFi
bGUuZmluZCgkMS0+Z2V0TWFuZ2xlZE5hbWUoKSkpOwogICAgICAgICBpZiAocHJldkRlYykgewog
ICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdldFJldHVyblR5cGUoKSAhPSAkMS0+Z2V0UmV0dXJu
VHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm92ZXJs
b2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSByZXR1cm4gdHlwZSIsICQxLT5nZXRS
ZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoQDIsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJu
IHR5cGUiLCAkMS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCkpOwogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFyYW1Db3VudCgpOyArK2kpIHsKICAg
ICAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVy
KCkgIT0gJDEtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllcigpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBt
dXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAkMS0+Z2V0UGFyYW0oaSku
dHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcihAMiwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSBwYXJh
bWV0ZXIgcXVhbGlmaWVycyIsICQxLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZpZXJTdHJp
bmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLworICAgICAg
ICAvLyBDaGVjayBmb3IgcHJldmlvdXNseSBkZWNsYXJlZCB2YXJpYWJsZXMgdXNpbmcgdGhlIHNh
bWUgbmFtZS4KKyAgICAgICAgLy8KKyAgICAgICAgVFN5bWJvbCAqcHJldlN5bSA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmZpbmQoJDEtPmdldE5hbWUoKSk7CisgICAgICAgIGlmIChwcmV2U3ltKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXByZXZTeW0tPmlzRnVuY3Rpb24oKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInJlZGVmaW5pdGlv
biIsICQxLT5nZXROYW1lKCkuY19zdHIoKSwgImZ1bmN0aW9uIik7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgLy8gSW5zZXJ0IHRoZSB1bm1hbmdsZWQgbmFtZSB0
byBkZXRlY3QgcG90ZW50aWFsIGZ1dHVyZSByZWRlZmluaXRpb24gYXMgYSB2YXJpYWJsZS4KKyAg
ICAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLmdldE91dGVyTGV2ZWwoKS0+aW5zZXJ0KCQx
LT5nZXROYW1lKCksICokMSk7CisgICAgICAgIH0KKworICAgICAgICAvLwogICAgICAgICAvLyBJ
ZiB0aGlzIGlzIGEgcmVkZWNsYXJhdGlvbiwgaXQgY291bGQgYWxzbyBiZSBhIGRlZmluaXRpb24s
CiAgICAgICAgIC8vIGluIHdoaWNoIGNhc2UsIHdlIHdhbnQgdG8gdXNlIHRoZSB2YXJpYWJsZSBu
YW1lcyBmcm9tIHRoaXMgb25lLCBhbmQgbm90IHRoZSBvbmUgdGhhdCdzCiAgICAgICAgIC8vIGJl
aW5nIHJlZGVjbGFyZWQuICBTbywgcGFzcyBiYWNrIHVwIHRoaXMgZGVjbGFyYXRpb24sIG5vdCB0
aGUgb25lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgIC8vCiAgICAgICAgICQkLmZ1bmN0
aW9uID0gJDE7Ci0gICAgICAgICQkLmxpbmUgPSAkMi5saW5lOwogCiAgICAgICAgIC8vIFdlJ3Jl
IGF0IHRoZSBpbm5lciBzY29wZSBsZXZlbCBvZiB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudHMgYW5k
IGJvZHkgc3RhdGVtZW50LgogICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZSB0
byB0aGUgc3Vycm91bmRpbmcgc2NvcGUgaW5zdGVhZC4KQEAgLTEwNjksNyArMTAxMyw3IEBAIGZ1
bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMKICAgICAgICAgICAgIC8vCiAgICAgICAgICAg
ICAvLyBUaGlzIHBhcmFtZXRlciA+IGZpcnN0IGlzIHZvaWQKICAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGFuIGFyZ3VtZW50IHR5
cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7CisgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcihAMiwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSci
LCAidm9pZCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAg
ZGVsZXRlICQzLnBhcmFtLnR5cGU7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMDgzLDExICsxMDI3
LDExIEBAIGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMKIGZ1bmN0aW9uX2hlYWRlcgog
ICAgIDogZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBMRUZUX1BBUkVOIHsKICAgICAg
ICAgaWYgKCQxLnF1YWxpZmllciAhPSBFdnFHbG9iYWwgJiYgJDEucXVhbGlmaWVyICE9IEV2cVRl
bXBvcmFyeSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm5vIHF1YWxp
ZmllcnMgYWxsb3dlZCBmb3IgZnVuY3Rpb24gcmV0dXJuIiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCQx
LnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJubyBxdWFsaWZp
ZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0cmluZygkMS5x
dWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQog
ICAgICAgICAvLyBtYWtlIHN1cmUgYSBzYW1wbGVyIGlzIG5vdCBpbnZvbHZlZCBhcyB3ZWxsLi4u
Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUs
ICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDIs
ICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAvLyBBZGQg
dGhlIGZ1bmN0aW9uIGFzIGEgcHJvdG90eXBlIGFmdGVyIHBhcnNpbmcgaXQgKHdlIGRvIG5vdCBz
dXBwb3J0IHJlY3Vyc2lvbikKQEAgLTExMDIsMzMgKzEwNDYsMzEgQEAgZnVuY3Rpb25faGVhZGVy
CiAKIHBhcmFtZXRlcl9kZWNsYXJhdG9yCiAgICAgLy8gVHlwZSArIG5hbWUKLSAgICA6IHR5cGVf
c3BlY2lmaWVyIElERU5USUZJRVIgeworICAgIDogdHlwZV9zcGVjaWZpZXIgaWRlbnRpZmllciB7
CiAgICAgICAgIGlmICgkMS50eXBlID09IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCQyLmxpbmUsICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsICQyLnN0cmluZy0+
Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgImlsbGVnYWwgdXNlIG9m
IHR5cGUgJ3ZvaWQnIiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJv
ckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2
ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHskMi5zdHJpbmcsIG5ldyBUVHlwZSgk
MSl9OwotICAgICAgICAkJC5saW5lID0gJDIubGluZTsKICAgICAgICAgJCQucGFyYW0gPSBwYXJh
bTsKICAgICB9Ci0gICAgfCB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBj
b25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgeworICAgIHwgdHlwZV9zcGVjaWZpZXIg
aWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VU
IHsKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gbWFrZSBhbiBhcnJheSBvdXQgb2YgdGhp
cyB0eXBlCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQzLmxpbmUs
ICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDMsICQxKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+
cmVzZXJ2ZWRFcnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcpKQorICAgICAgICBpZiAoY29u
dGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDMubGluZSwgJDQsIHNpemUpKQorICAgICAgICBpZiAo
Y29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhAMywgJDQsIHNpemUpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAkMS5zZXRBcnJheSh0cnVlLCBzaXplKTsKIAog
ICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZSgkMSk7CiAgICAgICAgIFRQYXJhbWV0ZXIg
cGFyYW0gPSB7ICQyLnN0cmluZywgdHlwZSB9OwotICAgICAgICAkJC5saW5lID0gJDIubGluZTsK
ICAgICAgICAgJCQucGFyYW0gPSBwYXJhbTsKICAgICB9CiAgICAgOwpAQCAtMTE0NCwxNCArMTA4
NiwxNCBAQCBwYXJhbWV0ZXJfZGVjbGFyYXRpb24KICAgICAvLwogICAgIDogdHlwZV9xdWFsaWZp
ZXIgcGFyYW1ldGVyX3F1YWxpZmllciBwYXJhbWV0ZXJfZGVjbGFyYXRvciB7CiAgICAgICAgICQk
ID0gJDM7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soJDMubGluZSwgJDEu
cXVhbGlmaWVyLCAkMiwgJCQucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5wYXJh
bUVycm9yQ2hlY2soQDMsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFtLnR5cGUpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgIH0KICAgICB8IHBhcmFtZXRlcl9xdWFsaWZp
ZXIgcGFyYW1ldGVyX2RlY2xhcmF0b3IgewogICAgICAgICAkJCA9ICQyOwotICAgICAgICBpZiAo
Y29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soJDIubGluZSwgJDEsICokMi5wYXJh
bS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNr
KEAyLCAkMSwgKiQyLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCQyLmxpbmUsIEV2cVRlbXBv
cmFyeSwgJDEsICQkLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJv
ckNoZWNrKEAyLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9CiAgICAgLy8KQEAgLTExNTksMTQgKzExMDEsMTQg
QEAgcGFyYW1ldGVyX2RlY2xhcmF0aW9uCiAgICAgLy8KICAgICB8IHR5cGVfcXVhbGlmaWVyIHBh
cmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX3R5cGVfc3BlY2lmaWVyIHsKICAgICAgICAgJCQg
PSAkMzsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygkMy5saW5lLCAkMS5x
dWFsaWZpZXIsICQyLCAkJC5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFt
RXJyb3JDaGVjayhAMywgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0udHlwZSkpCiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQogICAgIHwgcGFyYW1ldGVyX3F1YWxpZmll
ciBwYXJhbWV0ZXJfdHlwZV9zcGVjaWZpZXIgewogICAgICAgICAkJCA9ICQyOwotICAgICAgICBp
ZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soJDIubGluZSwgJDEsICokMi5w
YXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNo
ZWNrKEAyLCAkMSwgKiQyLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCQyLmxpbmUsIEV2cVRl
bXBvcmFyeSwgJDEsICQkLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1F
cnJvckNoZWNrKEAyLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9CiAgICAgOwpAQCAtMTE5Nyw4MyArMTEzOSw4
MyBAQCBpbml0X2RlY2xhcmF0b3JfbGlzdAogICAgIDogc2luZ2xlX2RlY2xhcmF0aW9uIHsKICAg
ICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBJ
REVOVElGSUVSIHsKKyAgICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENPTU1BIGlkZW50aWZpZXIg
ewogICAgICAgICBpZiAoJDEudHlwZS50eXBlID09IEVidEludmFyaWFudCAmJiAhJDMuc3ltYm9s
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMy5saW5lLCAidW5kZWNs
YXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICQzLnN0cmluZy0+Y19zdHIo
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMywgInVuZGVjbGFyZWQgaWRlbnRpZmll
ciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMy5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAKLSAgICAgICAgVEludGVybVN5bWJv
bCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDMuc3RyaW5n
LCBUVHlwZSgkMS50eXBlKSwgJDMubGluZSk7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsIHN5bWJv
bCwgJDMubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQzLnN0cmluZywgVFR5cGUoJDEudHlwZSksIEAzKTsK
KyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dB
Z2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgc3ltYm9sLCBAMyk7CiAgICAgICAgIAotICAgICAgICBp
ZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMy5saW5lLCAkJC50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQkLnR5
cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250
ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQkLnR5cGUs
IGZhbHNlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soQDMs
ICokMy5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAgaWYgKGNv
bnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQkLnR5cGUsIHZh
cmlhYmxlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKEAzLCAqJDMu
c3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIGlmIChzeW1ib2wgJiYgdmFyaWFibGUpCiAgICAgICAgICAgICBzeW1ib2wt
PnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKICAgICB9Ci0gICAgfCBpbml0X2RlY2xh
cmF0b3JfbGlzdCBDT01NQSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsK
LSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDMubGluZSwg
JDEudHlwZSkpCisgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIExF
RlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1
YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCQz
LmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQorICAgICAgICBpZiAoY29udGV4dC0+
bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywgJDEudHlwZSwgdHJ1ZSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgJCQgPSAkMTsKIAotICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkNC5saW5lLCAkMS50eXBlKSB8
fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDQubGluZSwgJDEudHlwZSkpCisg
ICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEA0LCAkMS50eXBlKSB8fCBj
b250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDQsICQxLnR5cGUpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICQxLnR5
cGUuc2V0QXJyYXkodHJ1ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlOwotICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygkNC5saW5lLCAqJDMuc3RyaW5n
LCAkMS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJv
ckNoZWNrKEA0LCAqJDMuc3RyaW5nLCAkMS50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgfQotICAgIHwgaW5pdF9kZWNs
YXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVz
c2lvbiBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmll
ckVycm9yQ2hlY2soJDMubGluZSwgJDEudHlwZSkpCisgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlz
dCBDT01NQSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hU
X0JSQUNLRVQgeworICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVj
ayhAMywgJDEudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAg
ICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soJDMubGluZSwgKiQzLnN0cmlu
ZywgJDEudHlwZSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJv
ckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAkMS50eXBlLCB0cnVlKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKIAogICAgICAgICAkJCA9ICQxOwogCi0gICAgICAgIGlmIChjb250ZXh0
LT5hcnJheVR5cGVFcnJvckNoZWNrKCQ0LmxpbmUsICQxLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5
UXVhbGlmaWVyRXJyb3JDaGVjaygkNC5saW5lLCAkMS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDQsICQxLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVh
bGlmaWVyRXJyb3JDaGVjayhANCwgJDEudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygkNC5saW5lLCAkNSwgc2l6ZSkpCisg
ICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhANCwgJDUsIHNpemUp
KQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQxLnR5
cGUuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxl
ID0gMDsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soJDQubGluZSwg
KiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmFycmF5RXJyb3JDaGVjayhANCwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQogICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIFRUeXBlIHR5cGUg
PSBUVHlwZSgkMS50eXBlKTsKICAgICAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwot
ICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdy
b3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJv
bCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpIDogMCwgKiQzLnN0cmluZywgdHlw
ZSwgJDMubGluZSksICQzLmxpbmUpOworICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJ
ZCgpIDogMCwgKiQzLnN0cmluZywgdHlwZSwgQDMpLCBAMyk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBJREVOVElGSUVSIEVRVUFMIGluaXRpYWxp
emVyIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDMu
bGluZSwgJDEudHlwZSkpCisgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlm
aWVyIEVRVUFMIGluaXRpYWxpemVyIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogCiAgICAgICAgICQkID0gJDE7CiAKICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5v
ZGU7Ci0gICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCQzLmxpbmUsICok
My5zdHJpbmcsICQxLnR5cGUsICQ1LCBpbnRlcm1Ob2RlKSkgeworICAgICAgICBpZiAoIWNvbnRl
eHQtPmV4ZWN1dGVJbml0aWFsaXplcihAMywgKiQzLnN0cmluZywgJDEudHlwZSwgJDUsIGludGVy
bU5vZGUpKSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gYnVpbGQgdGhlIGludGVy
bWVkaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIGlmIChp
bnRlcm1Ob2RlKQotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCBpbnRlcm1Ob2RlLCAkNC5saW5lKTsK
KyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dB
Z2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgaW50ZXJtTm9kZSwgQDQpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9ICQxLmludGVybUFnZ3JlZ2F0
ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTEyODYsNzkgKzEyMjgsNzkgQEAgaW5pdF9kZWNsYXJh
dG9yX2xpc3QKIHNpbmdsZV9kZWNsYXJhdGlvbgogICAgIDogZnVsbHlfc3BlY2lmaWVkX3R5cGUg
ewogICAgICAgICAkJC50eXBlID0gJDE7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRTeW1ib2woMCwgIiIsIFRUeXBlKCQxKSwgJDEubGluZSksICQxLmxpbmUpOworICAgICAgICAk
JC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgkMSksIEAxKSwgQDEp
OwogICAgIH0KLSAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIElERU5USUZJRVIgewotICAgICAg
ICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KDAsICokMi5zdHJpbmcsIFRUeXBlKCQxKSwgJDIubGluZSk7Ci0gICAgICAgICQkLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgJDIu
bGluZSk7CisgICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIHsKKyAgICAgICAg
VEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAqJDIuc3RyaW5nLCBUVHlwZSgkMSksIEAyKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRl
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAg
ICAgIAotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMi5s
aW5lLCAkJC50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soQDIsICQkLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0g
ICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCQyLmxpbmUsICokMi5z
dHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25z
dEVycm9yQ2hlY2soQDIsICokMi5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgJCQudHlwZSA9
ICQxOwogCiAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICBpZiAoY29u
dGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZywgJCQudHlwZSwgdmFy
aWFibGUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soQDIsICokMi5z
dHJpbmcsICQkLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgICAgIHN5bWJvbC0+
c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgIH0KLSAgICB8IGZ1bGx5X3NwZWNp
ZmllZF90eXBlIElERU5USUZJRVIgTEVGVF9CUkFDS0VUIFJJR0hUX0JSQUNLRVQgewotICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90
IHN1cHBvcnRlZCIsICQyLnN0cmluZy0+Y19zdHIoKSk7CisgICAgfCBmdWxseV9zcGVjaWZpZWRf
dHlwZSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKKyAgICAgICAgY29u
dGV4dC0+ZXJyb3IoQDIsICJ1bnNpemVkIGFycmF5IGRlY2xhcmF0aW9ucyBub3Qgc3VwcG9ydGVk
IiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0g
ICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRT
eW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEpLCAkMi5saW5lKTsKLSAgICAgICAgJCQuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9s
LCAkMi5saW5lKTsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkMSksIEAyKTsKKyAgICAg
ICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdh
dGUoc3ltYm9sLCBAMik7CiAgICAgICAgICQkLnR5cGUgPSAkMTsKICAgICB9Ci0gICAgfCBmdWxs
eV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNz
aW9uIFJJR0hUX0JSQUNLRVQgeworICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmll
ciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKICAgICAg
ICAgVFR5cGUgdHlwZSA9IFRUeXBlKCQxKTsKICAgICAgICAgaW50IHNpemU7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQyLmxpbmUsICQ0LCBzaXplKSkKKyAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDIsICQ0LCBzaXplKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgdHlwZS5zZXRBcnJheVNpemUoc2l6
ZSk7Ci0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgdHlwZSwgJDIubGluZSk7Ci0gICAgICAgICQkLmlu
dGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJv
bCwgJDIubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgdHlwZSwgQDIpOworICAgICAgICAk
JC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShz
eW1ib2wsIEAyKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZp
ZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1
YWxpZmllckVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygkMi5saW5l
LCAqJDIuc3RyaW5nLCAkMSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29u
c3RFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nLCAkMSwgdHJ1ZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgJCQudHlwZSA9ICQxOwogCi0gICAgICAgIGlmIChj
b250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQzLmxpbmUsICQxKSB8fCBjb250ZXh0LT5hcnJh
eVF1YWxpZmllckVycm9yQ2hlY2soJDMubGluZSwgJDEpKQorICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlUeXBlRXJyb3JDaGVjayhAMywgJDEpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJy
b3JDaGVjayhAMywgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmFycmF5U2l6ZUVycm9yQ2hlY2soJDMubGluZSwgJDQsIHNpemUpKQorICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQ0LCBzaXplKSkKICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgICAgICQxLnNldEFycmF5KHRydWUs
IHNpemUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCQzLmxpbmUsICokMi5zdHJpbmcsICQxLCB2
YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKEAzLCAq
JDIuc3RyaW5nLCAkMSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAgICAgICAgICAgICAg
ICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIEVRVUFMIGluaXRpYWxp
emVyIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDIu
bGluZSwgJDEpKQorICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmllciBFUVVBTCBp
bml0aWFsaXplciB7CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNo
ZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAg
JCQudHlwZSA9ICQxOwogCiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwotICAgICAg
ICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMi5saW5lLCAqJDIuc3RyaW5nLCAk
MSwgJDQsIGludGVybU5vZGUpKSB7CisgICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRp
YWxpemVyKEAyLCAqJDIuc3RyaW5nLCAkMSwgJDQsIGludGVybU5vZGUpKSB7CiAgICAgICAgIC8v
CiAgICAgICAgIC8vIEJ1aWxkIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICAgICAv
LwogICAgICAgICAgICAgaWYoaW50ZXJtTm9kZSkKLSAgICAgICAgICAgICAgICAkJC5pbnRlcm1B
Z2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2Rl
LCAkMy5saW5lKTsKKyAgICAgICAgICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCBAMyk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTEzNjcsMTE4ICsxMzA5LDUwIEBAIHNpbmdsZV9kZWNsYXJhdGlvbgogICAg
ICAgICB9CiAgICAgfQogICAgIHwgSU5WQVJJQU5UIElERU5USUZJRVIgewotICAgICAgICBWRVJU
RVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgJDEubGluZSk7Ci0gICAgICAgIGlmIChj
b250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgIFZFUlRFWF9PTkxZ
KCJpbnZhcmlhbnQgZGVjbGFyYXRpb24iLCBAMSk7CisgICAgICAgIGlmIChjb250ZXh0LT5nbG9i
YWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJp
bnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAkJC50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091
dCwgJDIubGluZSk7CisgICAgICAgICQkLnR5cGUuc2V0QmFzaWMoRWJ0SW52YXJpYW50LCBFdnFJ
bnZhcmlhbnRWYXJ5aW5nT3V0LCBAMik7CiAgICAgICAgIGlmICghJDIuc3ltYm9sKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAidW5kZWNsYXJlZCBpZGVu
dGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICQyLnN0cmluZy0+Y19zdHIoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJl
ZCBhcyBpbnZhcmlhbnQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAkJC5pbnRlcm1BZ2dyZWdh
dGUgPSAwOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAg
VEludGVybVN5bWJvbCAqc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgw
LCAqJDIuc3RyaW5nLCBUVHlwZSgkJC50eXBlKSwgJDIubGluZSk7Ci0gICAgICAgICAgICAkJC5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1i
b2wsICQyLmxpbmUpOworICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkJC50eXBlKSwg
QDIpOworICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgIH0KICAgICB9Ci0KLS8vCi0v
LyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBsYW5ndWFnZXMuCi0vLwotLy8gICAg
fCBidWZmZXJfc3BlY2lmaWVyIHsKLS8vICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSAwOwot
Ly8gICAgfQogICAgIDsKIAotLy8gR3JhbW1hciBOb3RlOiAgTm8gJ2VudW0nLCBvciAndHlwZWRl
ZicuCi0KLS8vCi0vLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBsYW5ndWFnZXMu
Ci0vLwotLy8ldHlwZSA8aW50ZXJtPiBidWZmZXJfZGVjbGFyYXRpb24KLS8vJXR5cGUgPGludGVy
bS50eXBlPiBidWZmZXJfc3BlY2lmaWVyIGlucHV0X29yX291dHB1dCBidWZmZXJfZGVjbGFyYXRp
b25fbGlzdAotLy9idWZmZXJfc3BlY2lmaWVyCi0vLyAgICA6IGlucHV0X29yX291dHB1dCBMRUZU
X0JSQUNFIGJ1ZmZlcl9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKLS8vICAgIH0KLS8v
ICAgIDsKLS8vCi0vL2lucHV0X29yX291dHB1dAotLy8gICAgOiBJTlBVVCB7Ci0vLyAgICAgICAg
aWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpLCAiaW5wdXQiKSkKLS8vICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotLy8gICAgICAgIFVOUEFDS19PTkxZKCJpbnB1dCIsICQxLmxpbmUpOwotLy8gICAg
ICAgICQkLnF1YWxpZmllciA9IEV2cUlucHV0OwotLy8gICAgfQotLy8gICAgfCBPVVRQVVQgewot
Ly8gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgIm91dHB1dCIpKQotLy8gICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgUEFDS19PTkxZKCJvdXRwdXQiLCAkMS5saW5l
KTsKLS8vICAgICAgICAkJC5xdWFsaWZpZXIgPSBFdnFPdXRwdXQ7Ci0vLyAgICB9Ci0vLyAgICA7
Ci0KLS8vCi0vLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBsYW5ndWFnZXMuCi0v
LwotLy9idWZmZXJfZGVjbGFyYXRpb25fbGlzdAotLy8gICAgOiBidWZmZXJfZGVjbGFyYXRpb24g
ewotLy8gICAgfQotLy8gICAgfCBidWZmZXJfZGVjbGFyYXRpb25fbGlzdCBidWZmZXJfZGVjbGFy
YXRpb24gewotLy8gICAgfQotLy8gICAgOwotCi0vLwotLy8gSW5wdXQvb3V0cHV0IHNlbWFudGlj
czoKLS8vICAgZmxvYXQgbXVzdCBiZSAxNiBvciAzMiBiaXRzCi0vLyAgIGZsb2F0IGFsaWdubWVu
dCByZXN0cmljdGlvbnM/Ci0vLyAgIGNoZWNrIGZvciBvbmx5IG9uZSBpbnB1dCBhbmQgb25seSBv
bmUgb3V0cHV0Ci0vLyAgIHN1bSBvZiBiaXRmaWVsZHMgaGFzIHRvIGJlIG11bHRpcGxlIG9mIDMy
Ci0vLwotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUgcGFjay91bnBhY2sgbGFuZ3VhZ2Vz
LgotLy8KLS8vYnVmZmVyX2RlY2xhcmF0aW9uCi0vLyAgICA6IHR5cGVfc3BlY2lmaWVyIElERU5U
SUZJRVIgQ09MT04gY29uc3RhbnRfZXhwcmVzc2lvbiBTRU1JQ09MT04gewotLy8gICAgICAgIGlm
IChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZywgY29udGV4
dCkpCi0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLS8vICAgICAgICAkJC52YXJp
YWJsZSA9IG5ldyBUVmFyaWFibGUoJDIuc3RyaW5nLCAkMSk7Ci0vLyAgICAgICAgaWYgKCEgY29u
dGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCokJC52YXJpYWJsZSkpIHsKLS8vICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoJDIubGluZSwgInJlZGVmaW5pdGlvbiIsICQkLnZhcmlhYmxlLT5nZXRO
YW1lKCkuY19zdHIoKSk7Ci0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLS8vICAg
ICAgICAgICAgLy8gZG9uJ3QgaGF2ZSB0byBkZWxldGUgJCQudmFyaWFibGUsIHRoZSBwb29sIHBv
cCB3aWxsIHRha2UgY2FyZSBvZiBpdAotLy8gICAgICAgIH0KLS8vICAgIH0KLS8vICAgIDsKLQog
ZnVsbHlfc3BlY2lmaWVkX3R5cGUKICAgICA6IHR5cGVfc3BlY2lmaWVyIHsKICAgICAgICAgJCQg
PSAkMTsKIAogICAgICAgICBpZiAoJDEuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCQxLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3Mg
YXJyYXkiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQx
LnNldEFycmF5KGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KICAgICB8IHR5cGVfcXVhbGlmaWVy
IHR5cGVfc3BlY2lmaWVyICB7CiAgICAgICAgIGlmICgkMi5hcnJheSkgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xhc3MgYXJy
YXkiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAibm90IHN1cHBvcnRlZCIsICJm
aXJzdC1jbGFzcyBhcnJheSIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgJDIuc2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCQx
LnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgJiYKICAgICAgICAgICAgICgkMi50eXBlID09IEVi
dEJvb2wgfHwgJDIudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigkMi5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCQx
LnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5ub3QgYmUg
Ym9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCgkMS5xdWFs
aWZpZXIgPT0gRXZxVmFyeWluZ0luIHx8ICQxLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nT3V0KSAm
JgogICAgICAgICAgICAgKCQyLnR5cGUgPT0gRWJ0Qm9vbCB8fCAkMi50eXBlID09IEVidEludCkp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJjYW5ub3QgYmUgYm9vbCBv
ciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcihAMiwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxpZmllclN0
cmluZygkMS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgfQogICAgICAgICAkJCA9ICQyOwpAQCAtMTQ4OCwzNCArMTM2MiwzNCBAQCBmdWxseV9z
cGVjaWZpZWRfdHlwZQogCiB0eXBlX3F1YWxpZmllcgogICAgIDogQ09OU1RfUVVBTCB7Ci0gICAg
ICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCAkMS5saW5lKTsKKyAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQ29uc3QsIEAxKTsKICAgICB9CiAgICAgfCBBVFRSSUJVVEUg
ewotICAgICAgICBWRVJURVhfT05MWSgiYXR0cmlidXRlIiwgJDEubGluZSk7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQorICAgICAgICBWRVJURVhfT05MWSgiYXR0
cmlidXRlIiwgQDEpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjayhAMSwg
Y29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0cmlidXRlIikpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQs
IEV2cUF0dHJpYnV0ZSwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2
cUF0dHJpYnV0ZSwgQDEpOwogICAgIH0KICAgICB8IFZBUllJTkcgewotICAgICAgICBpZiAoY29u
dGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCksICJ2YXJ5aW5nIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJv
ckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ2YXJ5aW5n
IikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChjb250ZXh0
LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAkJC5zZXRCYXNp
YyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0LCAkMS5saW5lKTsKKyAgICAgICAgICAgICQkLnNldEJh
c2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsIEAxKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCAkMS5saW5lKTsKKyAgICAgICAg
ICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgQDEpOwogICAgIH0KICAgICB8
IElOVkFSSUFOVCBWQVJZSU5HIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hl
Y2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW52YXJp
YW50IHZhcnlpbmciKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soQDEs
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5n
IikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChjb250ZXh0
LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAkJC5zZXRCYXNp
YyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAkMS5saW5lKTsKKyAgICAgICAgICAg
ICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsIEAxKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50VmFy
eWluZ0luLCAkMS5saW5lKTsKKyAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUlu
dmFyaWFudFZhcnlpbmdJbiwgQDEpOwogICAgIH0KICAgICB8IFVOSUZPUk0gewotICAgICAgICBp
ZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5hdEdsb2JhbExldmVsKCksICJ1bmlmb3JtIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9i
YWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ1
bmlmb3JtIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkLnNl
dEJhc2ljKEVidFZvaWQsIEV2cVVuaWZvcm0sICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNp
YyhFYnRWb2lkLCBFdnFVbmlmb3JtLCBAMSk7CiAgICAgfQogICAgIDsKIApAQCAtMTUyNSw3ICsx
Mzk5LDcgQEAgdHlwZV9zcGVjaWZpZXIKIAogICAgICAgICBpZiAoJCQucHJlY2lzaW9uID09IEVi
cFVuZGVmaW5lZCkgewogICAgICAgICAgICAgJCQucHJlY2lzaW9uID0gY29udGV4dC0+c3ltYm9s
VGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigkMS50eXBlKTsKLSAgICAgICAgICAgIGlmIChjb250
ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKCQxLmxpbmUsICQkLnByZWNpc2lvbiwgJDEudHlwZSkp
IHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKEAxLCAkJC5w
cmVjaXNpb24sICQxLnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNTU1LDExICsxNDI5LDExIEBAIHR5cGVf
c3BlY2lmaWVyX25vX3ByZWMKICAgICB8IHR5cGVfc3BlY2lmaWVyX25vbmFycmF5IExFRlRfQlJB
Q0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewogICAgICAgICAkJCA9ICQx
OwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQyLmxpbmUsICQx
KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDIsICQxKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNr
KCQyLmxpbmUsICQzLCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVF
cnJvckNoZWNrKEAyLCAkMywgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgJCQuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAgICAgIH0KQEAg
LTE1NjksMTE4ICsxNDQzLDEwNSBAQCB0eXBlX3NwZWNpZmllcl9ub19wcmVjCiB0eXBlX3NwZWNp
Zmllcl9ub25hcnJheQogICAgIDogVk9JRF9UWVBFIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBxdWFsLCAkMS5saW5lKTsK
KyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IEZM
T0FUX1RZUEUgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQk
LnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMo
RWJ0RmxvYXQsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBJTlRfVFlQRSB7CiAgICAgICAgIFRR
dWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2
cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFs
LCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7CiAgICAg
fQogICAgIHwgQk9PTF9UWVBFIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5Owot
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgIH0KLS8vICAgIHwgVU5TSUdORUQgSU5U
X1RZUEUgewotLy8gICAgICAgIFBBQ0tfVU5QQUNLX09OTFkoInVuc2lnbmVkIiwgJDEubGluZSk7
Ci0vLyAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotLy8gICAgICAgICQkLnNldEJh
c2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7Ci0vLyAgICB9CiAgICAgfCBWRUMyIHsKICAgICAg
ICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
ID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9h
dCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCBA
MSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAgfCBWRUMzIHsKICAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRG
bG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFs
LCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICB9CiAgICAgfCBWRUM0IHsK
ICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBx
dWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICB9CiAgICAgfCBCVkVD
MiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0Qm9vbCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEJvb2ws
IHF1YWwsIEAxKTsKICAgICAgICAgJCQuc2V0QWdncmVnYXRlKDIpOwogICAgIH0KICAgICB8IEJW
RUMzIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRC
YXNpYyhFYnRCb29sLCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Qm9v
bCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQogICAgIHwg
QlZFQzQgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICQkLnNl
dEJhc2ljKEVidEJvb2wsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRC
b29sLCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICB9CiAgICAg
fCBJVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAg
fCBJVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICB9CiAgICAg
fCBJVkVDNCB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICB9CiAgICAg
fCBNQVRSSVgyIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDIiLCAkMS5saW5lKTsKICAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRG
bG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFs
LCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyLCB0cnVlKTsKICAgICB9CiAgICAgfCBN
QVRSSVgzIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDMiLCAkMS5saW5lKTsKICAgICAg
ICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
ID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9h
dCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCBA
MSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzLCB0cnVlKTsKICAgICB9CiAgICAgfCBNQVRS
SVg0IHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDQiLCAkMS5saW5lKTsKICAgICAgICAg
VFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8g
RXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRGbG9hdCwg
cXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCBAMSk7
CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0LCB0cnVlKTsKICAgICB9CiAgICAgfCBTQU1QTEVS
MkQgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEIiwgJDEubGluZSk7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2Ft
cGxlcjJELCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2FtcGxlcjJE
LCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUkNVQkUgewotICAgICAgICBGUkFHX1ZF
UlRfT05MWSgic2FtcGxlckN1YmUiLCAkMS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgJDEu
bGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXJDdWJlLCBxdWFsLCBAMSk7CiAg
ICAgfQogICAgIHwgU0FNUExFUl9FWFRFUk5BTF9PRVMgewogICAgICAgICBpZiAoIWNvbnRleHQt
PnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBs
ZXJFeHRlcm5hbE9FUyIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJ1bnN1cHBv
cnRlZCB0eXBlIiwgInNhbXBsZXJFeHRlcm5hbE9FUyIpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyRXh0
ZXJuYWxPRVMiLCAkMS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+
c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5Owot
ICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICQxLmxpbmUp
OworICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsIEAxKTsK
ICAgICB9CiAgICAgfCBTQU1QTEVSMkRSRUNUIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIikpIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXIyRFJl
Y3QiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5zdXBwb3J0ZWQgdHlwZSIs
ICJzYW1wbGVyMkRSZWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXIyRFJlY3QiLCAkMS5saW5lKTsK
ICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhF
YnRTYW1wbGVyMkRSZWN0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
U2FtcGxlcjJEUmVjdCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IHN0cnVjdF9zcGVjaWZpZXIg
ewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic3RydWN0IiwgJDEubGluZSk7CiAgICAgICAgICQk
ID0gJDE7CiAgICAgICAgICQkLnF1YWxpZmllciA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xv
YmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICB9CkBAIC0xNjkxLDI5
ICsxNTUyLDI5IEBAIHR5cGVfc3BlY2lmaWVyX25vbmFycmF5CiAgICAgICAgIC8vCiAgICAgICAg
IFRUeXBlJiBzdHJ1Y3R1cmUgPSBzdGF0aWNfY2FzdDxUVmFyaWFibGUqPigkMS5zeW1ib2wpLT5n
ZXRUeXBlKCk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMo
RWJ0U3RydWN0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnVzZXJEZWYgPSAmc3RydWN0dXJlOwog
ICAgIH0KICAgICA7CiAKIHN0cnVjdF9zcGVjaWZpZXIKLSAgICA6IFNUUlVDVCBJREVOVElGSUVS
IExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigkMi5saW5l
LCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJhdGlvbl9s
aXN0IFJJR0hUX0JSQUNFIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVj
aygkMi5saW5lLCAqJDIuc3RyaW5nKSkKKyAgICA6IFNUUlVDVCBpZGVudGlmaWVyIExFRlRfQlJB
Q0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihAMiwgKiQyLnN0cmluZykp
IGNvbnRleHQtPnJlY292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdIVF9CUkFD
RSB7CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDIsICokMi5zdHJp
bmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRUeXBlKiBz
dHJ1Y3R1cmUgPSBuZXcgVFR5cGUoJDUsICokMi5zdHJpbmcpOworICAgICAgICBUVHlwZSogc3Ry
dWN0dXJlID0gbmV3IFRUeXBlKG5ldyBUU3RydWN0dXJlKCQyLnN0cmluZywgJDUpKTsKICAgICAg
ICAgVFZhcmlhYmxlKiB1c2VyVHlwZURlZiA9IG5ldyBUVmFyaWFibGUoJDIuc3RyaW5nLCAqc3Ry
dWN0dXJlLCB0cnVlKTsKICAgICAgICAgaWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0
KCp1c2VyVHlwZURlZikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJy
ZWRlZmluaXRpb24iLCAkMi5zdHJpbmctPmNfc3RyKCksICJzdHJ1Y3QiKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKEAyLCAicmVkZWZpbml0aW9uIiwgJDIuc3RyaW5nLT5jX3N0cigpLCAi
c3RydWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAg
ICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICQxLmxpbmUpOworICAg
ICAgICAkJC5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgQDEpOwogICAgICAgICAk
JC51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5leGl0U3RydWN0RGVjbGFy
YXRpb24oKTsKICAgICB9Ci0gICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSB7IGlmIChjb250ZXh0LT5l
bnRlclN0cnVjdERlY2xhcmF0aW9uKCQyLmxpbmUsICokMi5zdHJpbmcpKSBjb250ZXh0LT5yZWNv
dmVyKCk7IH0gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0UgewotICAgICAgICBU
VHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCQ0LCBUU3RyaW5nKCIiKSk7Ci0gICAgICAgICQk
LnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAkMS5saW5lKTsKKyAgICB8IFNUUlVD
VCBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oQDIsICok
Mi5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IH0gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3Qg
UklHSFRfQlJBQ0UgeworICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKG5ldyBU
U3RydWN0dXJlKE5ld1Bvb2xUU3RyaW5nKCIiKSwgJDQpKTsKKyAgICAgICAgJCQuc2V0QmFzaWMo
RWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksIEAxKTsKICAgICAgICAgJCQudXNlckRlZiA9IHN0cnVj
dHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CiAgICAgfQpA
QCAtMTcyNSwxNCArMTU4NiwxNSBAQCBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdAogICAgIH0KICAg
ICB8IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IHN0cnVjdF9kZWNsYXJhdGlvbiB7CiAgICAgICAg
ICQkID0gJDE7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgJDItPnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8ICQkLT5z
aXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIGlmICgoKiQkKVtqXS50eXBlLT5nZXRGaWVs
ZE5hbWUoKSA9PSAoKiQyKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSkgewotICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoKiQyKVtpXS5saW5lLCAiZHVwbGljYXRlIGZpZWxkIG5h
bWUgaW4gc3RydWN0dXJlOiIsICJzdHJ1Y3QiLCAoKiQyKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUo
KS5jX3N0cigpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAkMi0+c2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQgPSAoKiQyKVtpXTsKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGogPSAwOyBqIDwgJCQtPnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCgqJCQpW2pdLT5uYW1lKCkgPT0gZmllbGQtPm5hbWUoKSkgeworICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVj
dHVyZToiLCAic3RydWN0IiwgZmllbGQtPm5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICQkLT5wdXNoX2JhY2soKCokMilbaV0pOworICAgICAgICAgICAgJCQt
PnB1c2hfYmFjayhmaWVsZCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgOwpAQCAtMTc0MSwxNCAr
MTYwMywxNCBAQCBzdHJ1Y3RfZGVjbGFyYXRpb24KICAgICA6IHR5cGVfc3BlY2lmaWVyIHN0cnVj
dF9kZWNsYXJhdG9yX2xpc3QgU0VNSUNPTE9OIHsKICAgICAgICAgJCQgPSAkMjsKIAotICAgICAg
ICBpZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2soJDEubGluZSwgKCokMilbMF0udHlwZS0+Z2V0
RmllbGROYW1lKCksICQxKSkgeworICAgICAgICBpZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2so
QDEsICgqJDIpWzBdLT5uYW1lKCksICQxKSkgewogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgJCQt
PnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gQ2FyZWZ1bCBu
b3QgdG8gcmVwbGFjZSBhbHJlYWR5IGtub3duIGFzcGVjdHMgb2YgdHlwZSwgbGlrZSBhcnJheS1u
ZXNzCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKiQkKVtpXS50
eXBlOworICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKiQkKVtpXS0+dHlwZSgpOwogICAgICAg
ICAgICAgdHlwZS0+c2V0QmFzaWNUeXBlKCQxLnR5cGUpOwogICAgICAgICAgICAgdHlwZS0+c2V0
Tm9taW5hbFNpemUoJDEuc2l6ZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXRNYXRyaXgoJDEubWF0
cml4KTsKQEAgLTE3NTYsMjYgKzE2MTgsMjMgQEAgc3RydWN0X2RlY2xhcmF0aW9uCiAKICAgICAg
ICAgICAgIC8vIGRvbid0IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAgICAgICAgICAgIGlmICh0
eXBlLT5pc0FycmF5KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBl
RXJyb3JDaGVjaygkMS5saW5lLCAkMSkpCisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFy
cmF5VHlwZUVycm9yQ2hlY2soQDEsICQxKSkKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCQxLmFycmF5KQogICAg
ICAgICAgICAgICAgIHR5cGUtPnNldEFycmF5U2l6ZSgkMS5hcnJheVNpemUpOwotICAgICAgICAg
ICAgaWYgKCQxLnVzZXJEZWYpIHsKKyAgICAgICAgICAgIGlmICgkMS51c2VyRGVmKQogICAgICAg
ICAgICAgICAgIHR5cGUtPnNldFN0cnVjdCgkMS51c2VyRGVmLT5nZXRTdHJ1Y3QoKSk7Ci0gICAg
ICAgICAgICAgICAgdHlwZS0+c2V0VHlwZU5hbWUoJDEudXNlckRlZi0+Z2V0VHlwZU5hbWUoKSk7
Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3ROZXN0aW5n
RXJyb3JDaGVjaygkMS5saW5lLCAqdHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5z
dHJ1Y3ROZXN0aW5nRXJyb3JDaGVjayhAMSwgKigqJCQpW2ldKSkKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAg
OwogCiBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0CiAgICAgOiBzdHJ1Y3RfZGVjbGFyYXRvciB7Ci0g
ICAgICAgICQkID0gTmV3UG9vbFRUeXBlTGlzdCgpOworICAgICAgICAkJCA9IE5ld1Bvb2xURmll
bGRMaXN0KCk7CiAgICAgICAgICQkLT5wdXNoX2JhY2soJDEpOwogICAgIH0KICAgICB8IHN0cnVj
dF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgc3RydWN0X2RlY2xhcmF0b3IgewpAQCAtMTc4NCwyNiAr
MTY0MywyNCBAQCBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0CiAgICAgOwogCiBzdHJ1Y3RfZGVjbGFy
YXRvcgotICAgIDogSURFTlRJRklFUiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVy
cm9yQ2hlY2soJDEubGluZSwgKiQxLnN0cmluZykpCisgICAgOiBpZGVudGlmaWVyIHsKKyAgICAg
ICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMSwgKiQxLnN0cmluZykpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgJCQudHlwZSA9IG5ldyBUVHlw
ZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICAkJC5saW5lID0gJDEubGluZTsKLSAg
ICAgICAgJCQudHlwZS0+c2V0RmllbGROYW1lKCokMS5zdHJpbmcpOworICAgICAgICBUVHlwZSog
dHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAgICAgICAkJCA9IG5l
dyBURmllbGQodHlwZSwgJDEuc3RyaW5nKTsKICAgICB9Ci0gICAgfCBJREVOVElGSUVSIExFRlRf
QlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewotICAgICAgICBpZiAo
Y29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5zdHJpbmcpKQorICAgIHwg
aWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VU
IHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMSwgKiQxLnN0cmlu
ZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgJCQudHlwZSA9
IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICAkJC5saW5lID0gJDEu
bGluZTsKLSAgICAgICAgJCQudHlwZS0+c2V0RmllbGROYW1lKCokMS5zdHJpbmcpOwotCi0gICAg
ICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygk
Mi5saW5lLCAkMywgc2l6ZSkpCisgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRUeXBlKEVidFZv
aWQsIEVicFVuZGVmaW5lZCk7CisgICAgICAgIGludCBzaXplID0gMDsKKyAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQzLCBzaXplKSkKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQudHlwZS0+c2V0QXJyYXlTaXplKHNpemUpOwor
ICAgICAgICB0eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7CisKKyAgICAgICAgJCQgPSBuZXcgVEZp
ZWxkKHR5cGUsICQxLnN0cmluZyk7CiAgICAgfQogICAgIDsKIApAQCAtMTgzNSw3ICsxNjkyLDcg
QEAgY29tcG91bmRfc3RhdGVtZW50CiAgICAgfCBMRUZUX0JSQUNFIHsgY29udGV4dC0+c3ltYm9s
VGFibGUucHVzaCgpOyB9IHN0YXRlbWVudF9saXN0IHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9w
KCk7IH0gUklHSFRfQlJBQ0UgewogICAgICAgICBpZiAoJDMgIT0gMCkgewogICAgICAgICAgICAg
JDMtPnNldE9wKEVPcFNlcXVlbmNlKTsKLSAgICAgICAgICAgICQzLT5zZXRFbmRMaW5lKCQ1Lmxp
bmUpOworICAgICAgICAgICAgJDMtPnNldExpbmUoQCQpOwogICAgICAgICB9CiAgICAgICAgICQk
ID0gJDM7CiAgICAgfQpAQCAtMTg1OSw3ICsxNzE2LDcgQEAgY29tcG91bmRfc3RhdGVtZW50X25v
X25ld19zY29wZQogICAgIHwgTEVGVF9CUkFDRSBzdGF0ZW1lbnRfbGlzdCBSSUdIVF9CUkFDRSB7
CiAgICAgICAgIGlmICgkMikgewogICAgICAgICAgICAgJDItPnNldE9wKEVPcFNlcXVlbmNlKTsK
LSAgICAgICAgICAgICQyLT5zZXRFbmRMaW5lKCQzLmxpbmUpOworICAgICAgICAgICAgJDItPnNl
dExpbmUoQCQpOwogICAgICAgICB9CiAgICAgICAgICQkID0gJDI7CiAgICAgfQpAQCAtMTg2Nywx
MCArMTcyNCwxMCBAQCBjb21wb3VuZF9zdGF0ZW1lbnRfbm9fbmV3X3Njb3BlCiAKIHN0YXRlbWVu
dF9saXN0CiAgICAgOiBzdGF0ZW1lbnQgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5tYWtlQWdncmVnYXRlKCQxLCAwKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMSwgQCQpOwogICAgIH0KICAgICB8IHN0YXRlbWVudF9saXN0
IHN0YXRlbWVudCB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dy
ZWdhdGUoJDEsICQyLCAwKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jv
d0FnZ3JlZ2F0ZSgkMSwgJDIsIEAkKTsKICAgICB9CiAgICAgOwogCkBAIC0xODgxLDkgKzE3Mzgs
OSBAQCBleHByZXNzaW9uX3N0YXRlbWVudAogCiBzZWxlY3Rpb25fc3RhdGVtZW50CiAgICAgOiBJ
RiBMRUZUX1BBUkVOIGV4cHJlc3Npb24gUklHSFRfUEFSRU4gc2VsZWN0aW9uX3Jlc3Rfc3RhdGVt
ZW50IHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCQxLmxpbmUsICQzKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKEAxLCAkMykpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFNlbGVjdGlvbigkMywgJDUsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oJDMsICQ1LCBAMSk7CiAgICAgfQogICAgIDsKIApAQCAt
MTkwNywxNCArMTc2NCwxNCBAQCBjb25kaXRpb24KICAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xF
cnJvckNoZWNrKCQxLT5nZXRMaW5lKCksICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIEVRVUFM
IGluaXRpYWxpemVyIHsKKyAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgRVFV
QUwgaW5pdGlhbGl6ZXIgewogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDIubGluZSwgJDEpKQor
ICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhAMiwgJDEpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+Ym9v
bEVycm9yQ2hlY2soJDIubGluZSwgJDEpKQorICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9y
Q2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAg
ICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMi5saW5lLCAqJDIuc3RyaW5nLCAk
MSwgJDQsIGludGVybU5vZGUpKQorICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFs
aXplcihAMiwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkKICAgICAgICAgICAgICQk
ID0gJDQ7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwpA
QCAtMTkyNiwxOSArMTc4MywxOSBAQCBjb25kaXRpb24KIGl0ZXJhdGlvbl9zdGF0ZW1lbnQKICAg
ICA6IFdISUxFIExFRlRfUEFSRU4geyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7ICsrY29u
dGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgfSBjb25kaXRpb24gUklHSFRfUEFSRU4gc3RhdGVtZW50
X25vX25ld19zY29wZSB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwotICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hpbGUsIDAsICQ0
LCAwLCAkNiwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZExvb3AoRUxvb3BXaGlsZSwgMCwgJDQsIDAsICQ2LCBAMSk7CiAgICAgICAgIC0tY29udGV4dC0+
bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAgfCBETyB7ICsrY29udGV4dC0+bG9vcE5lc3Rp
bmdMZXZlbDsgfSBzdGF0ZW1lbnRfd2l0aF9zY29wZSBXSElMRSBMRUZUX1BBUkVOIGV4cHJlc3Np
b24gUklHSFRfUEFSRU4gU0VNSUNPTE9OIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJv
ckNoZWNrKCQ4LmxpbmUsICQ2KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNr
KEA4LCAkNikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICQ2LCAwLCAk
MywgJDQubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3Ao
RUxvb3BEb1doaWxlLCAwLCAkNiwgMCwgJDMsIEA0KTsKICAgICAgICAgLS1jb250ZXh0LT5sb29w
TmVzdGluZ0xldmVsOwogICAgIH0KICAgICB8IEZPUiBMRUZUX1BBUkVOIHsgY29udGV4dC0+c3lt
Ym9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0gZm9yX2luaXRf
c3RhdGVtZW50IGZvcl9yZXN0X3N0YXRlbWVudCBSSUdIVF9QQVJFTiBzdGF0ZW1lbnRfbm9fbmV3
X3Njb3BlIHsKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7Ci0gICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BGb3IsICQ0LCByZWludGVycHJl
dF9jYXN0PFRJbnRlcm1UeXBlZCo+KCQ1Lm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJt
VHlwZWQqPigkNS5ub2RlMiksICQ3LCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcEZvciwgJDQsIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVy
bVR5cGVkKj4oJDUubm9kZTEpLCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCQ1Lm5v
ZGUyKSwgJDcsIEAxKTsKICAgICAgICAgLS1jb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOwogICAg
IH0KICAgICA7CkBAIC0xOTc1LDM5ICsxODMyLDM5IEBAIGZvcl9yZXN0X3N0YXRlbWVudAoganVt
cF9zdGF0ZW1lbnQKICAgICA6IENPTlRJTlVFIFNFTUlDT0xPTiB7CiAgICAgICAgIGlmIChjb250
ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCQxLmxpbmUsICJjb250aW51ZSBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJjb250aW51ZSBzdGF0ZW1lbnQgb25s
eSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICB9Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5j
aChFT3BDb250aW51ZSwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgQDEpOwogICAgIH0KICAgICB8IEJSRUFLIFNFTUlD
T0xPTiB7CiAgICAgICAgIGlmIChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9IDApIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJicmVhayBzdGF0ZW1lbnQgb25seSBh
bGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJi
cmVhayBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgJDEubGluZSk7CisgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgQDEpOwogICAgIH0KICAgICB8
IFJFVFVSTiBTRU1JQ09MT04gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCcmFuY2goRU9wUmV0dXJuLCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgQDEpOwogICAgICAgICBpZiAoY29udGV4dC0+
Y3VycmVudEZ1bmN0aW9uVHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCkgewotICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0
dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwg
Im5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBSRVRV
Uk4gZXhwcmVzc2lvbiBTRU1JQ09MT04gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAkMiwgJDEubGluZSk7CisgICAgICAgICQkID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICQyLCBAMSk7CiAgICAgICAg
IGNvbnRleHQtPmZ1bmN0aW9uUmV0dXJuc1ZhbHVlID0gdHJ1ZTsKICAgICAgICAgaWYgKGNvbnRl
eHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpID09IEVidFZvaWQpIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ2b2lkIGZ1bmN0aW9uIGNhbm5vdCBy
ZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAx
LCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoKihjb250ZXh0
LT5jdXJyZW50RnVuY3Rpb25UeXBlKSAhPSAkMi0+Z2V0VHlwZSgpKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigkMS5saW5lLCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0
eXBlOiIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiZnVuY3Rp
b24gcmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4iKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgIH0KICAgICB8IERJU0NBUkQgU0VN
SUNPTE9OIHsKLSAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgJDEubGluZSk7Ci0gICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BLaWxsLCAkMS5saW5lKTsK
KyAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgQDEpOworICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgQDEpOwogICAgIH0KICAgICA7CiAKQEAg
LTIwMTksNyArMTg3Niw3IEBAIHRyYW5zbGF0aW9uX3VuaXQKICAgICAgICAgY29udGV4dC0+dHJl
ZVJvb3QgPSAkJDsKICAgICB9CiAgICAgfCB0cmFuc2xhdGlvbl91bml0IGV4dGVybmFsX2RlY2xh
cmF0aW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0
ZSgkMSwgJDIsIDApOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdn
cmVnYXRlKCQxLCAkMiwgQCQpOwogICAgICAgICBjb250ZXh0LT50cmVlUm9vdCA9ICQkOwogICAg
IH0KICAgICA7CkBAIC0yMDQxLDcgKzE4OTgsNyBAQCBmdW5jdGlvbl9kZWZpbml0aW9uCiAgICAg
ICAgIAogICAgICAgICBpZiAoYnVpbHRJbikKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoJDEubGluZSwgImJ1aWx0LWluIGZ1bmN0aW9ucyBjYW5ub3QgYmUgcmVkZWZpbmVk
IiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKEAxLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBmdW5jdGlv
bi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICB9CiAgICAgICAgIApAQCAtMjA1NSw3ICsxOTEyLDcgQEAgZnVuY3Rpb25fZGVmaW5p
dGlvbgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIFRoZW4gdGhpcyBmdW5jdGlvbiBh
bHJlYWR5IGhhcyBhIGJvZHkuCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1bmN0aW9uLT5n
ZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0
aW9uIGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgcHJldkRl
Yy0+c2V0RGVmaW5lZCgpOwpAQCAtMjA2NSwxMSArMTkyMiwxMSBAQCBmdW5jdGlvbl9kZWZpbml0
aW9uCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0TmFtZSgpID09ICJtYWlu
IikgewogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCkgPiAwKSB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIGNhbm5vdCB0
YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiZnVuY3Rpb24gY2Fubm90IHRha2UgYW55
IHBhcmFtZXRlcihzKSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCkgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICIiLCBmdW5jdGlvbi0+Z2V0
UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCksICJtYWluIGZ1bmN0aW9uIGNhbm5vdCByZXR1
cm4gYSB2YWx1ZSIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiIiwgZnVu
Y3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpLCAibWFpbiBmdW5jdGlvbiBj
YW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIwOTcsNyArMTk1NCw3IEBAIGZ1bmN0
aW9uX2RlZmluaXRpb24KICAgICAgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHBhcmFtZXRlcnMg
d2l0aCBuYW1lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgICAgICAgICAgLy8KICAgICAg
ICAgICAgICAgICBpZiAoISBjb250ZXh0LT5zeW1ib2xUYWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkg
ewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAicmVkZWZpbml0
aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoQDEsICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNf
c3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsKICAgICAgICAgICAgICAgICB9CkBAIC0yMTA4
LDE0ICsxOTY1LDE1IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgICAgICAgICBwYXJh
bU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
cmlhYmxlLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksICQx
LmxpbmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
MS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBAMSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgJDEubGluZSksICQx
LmxpbmUpOworICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3lt
Ym9sKDAsICIiLCAqcGFyYW0udHlwZSwgQDEpLCBAMSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBh
cmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsICQxLmxpbmUpOworICAgICAgICBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2RlcywgRU9wUGFyYW1ldGVycywg
QDEpOwogICAgICAgICAkMS5pbnRlcm1BZ2dyZWdhdGUgPSBwYXJhbU5vZGVzOwogICAgICAgICBj
b250ZXh0LT5sb29wTmVzdGluZ0xldmVsID0gMDsKICAgICB9CkBAIC0yMTIzLDEyICsxOTgxLDEy
IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgLy8/PyBDaGVjayB0aGF0IGFsbCBwYXRo
cyByZXR1cm4gYSB2YWx1ZSBpZiByZXR1cm4gdHlwZSAhPSB2b2lkID8KICAgICAgICAgLy8gICBN
YXkgYmUgYmVzdCBkb25lIGFzIHBvc3QgcHJvY2VzcyBwaGFzZSBvbiBpbnRlcm1lZGlhdGUgY29k
ZQogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZS0+Z2V0QmFzaWNUeXBl
KCkgIT0gRWJ0Vm9pZCAmJiAhIGNvbnRleHQtPmZ1bmN0aW9uUmV0dXJuc1ZhbHVlKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJu
IGEgdmFsdWU6IiwgIiIsICQxLmZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVl
OiIsICIiLCAkMS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybUFnZ3JlZ2F0ZSwgJDMsIDAp
OwotICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJCQs
IEVPcEZ1bmN0aW9uLCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1BZ2dyZWdhdGUsICQzLCBAJCk7CisgICAgICAgIGNv
bnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigkJCwgRU9wRnVuY3Rpb24s
IEAxKTsKICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldE5hbWUoJDEuZnVuY3Rpb24t
PmdldE1hbmdsZWROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgp
LT5zZXRUeXBlKCQxLmZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkpOwogCkBAIC0yMTM3LDE1ICsx
OTk1LDE3IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRl
KCktPnNldE9wdGltaXplKGNvbnRleHQtPnByYWdtYSgpLm9wdGltaXplKTsKICAgICAgICAgJCQt
PmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnByYWdtYSgpLmRlYnVnKTsKIAot
ICAgICAgICBpZiAoJDMgJiYgJDMtPmdldEFzQWdncmVnYXRlKCkpCi0gICAgICAgICAgICAkJC0+
Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RW5kTGluZSgkMy0+Z2V0QXNBZ2dyZWdhdGUoKS0+Z2V0RW5k
TGluZSgpKTsKLQogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKICAgICB9CiAg
ICAgOwogCiAlJQogCit2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pIHsKKyAgICBjb250ZXh0LT5lcnJvcigqeXls
bG9jLCByZWFzb24sICIiKTsKKyAgICBjb250ZXh0LT5yZWNvdmVyKCk7Cit9CisKIGludCBnbHNs
YW5nX3BhcnNlKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICByZXR1cm4geXlwYXJzZShj
b250ZXh0KTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9n
bHNsYW5nX2xleC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzg0LDggKzM4NCw4IEBAIHN0YXRpYyB2b2lkIHl5X2ZhdGFsX2Vycm9yICh5eWNvbnN0
IGNoYXIKIAkqeXlfY3AgPSAnXDAnOyBcCiAJeXlnLT55eV9jX2J1Zl9wID0geXlfY3A7CiAKLSNk
ZWZpbmUgWVlfTlVNX1JVTEVTIDE1NQotI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSIDE1NgorI2Rl
ZmluZSBZWV9OVU1fUlVMRVMgMTQ3CisjZGVmaW5lIFlZX0VORF9PRl9CVUZGRVIgMTQ4CiAvKiBU
aGlzIHN0cnVjdCBpcyBub3QgdXNlZCBpbiB0aGlzIHNjYW5uZXIsCiAgICBidXQgaXRzIHByZXNl
bmNlIGlzIG5lY2Vzc2FyeS4gKi8KIHN0cnVjdCB5eV90cmFuc19pbmZvCkBAIC0zOTMsNTggKzM5
Myw1NyBAQCBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwogCWZsZXhfaW50MzJfdCB5eV92ZXJpZnk7CiAJ
ZmxleF9pbnQzMl90IHl5X254dDsKIAl9Owotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5
X2FjY2VwdFs0NTldID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2NlcHRbNDQz
XSA9CiAgICAgeyAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAs
ICAxNTYsICAxNTQsICAxNTMsICAxNTMsCi0gICAgICAxMzgsICAxNDQsICAxNDksICAxMzMsICAx
MzQsICAxNDIsICAxNDEsICAxMzAsICAxMzksICAxMzcsCi0gICAgICAxNDMsICAxMDIsICAxMDIs
ICAxMzEsICAxMjcsICAxNDUsICAxMzIsICAxNDYsICAxNTAsICAgOTgsCi0gICAgICAxMzUsICAx
MzYsICAxNDgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAg
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAxMjgsICAxNDcsICAxMjksICAxNDAsICAgIDMs
ICAgIDQsICAgIDMsCi0gICAgICAxNTIsICAxNTUsICAxNTEsICAxMjQsICAxMTAsICAxMjksICAx
MTgsICAxMTMsICAxMDgsICAxMTYsCi0gICAgICAxMDYsICAxMTcsICAxMDcsICAxMDUsICAgIDIs
ICAgIDEsICAxMDksICAxMDQsICAxMDAsICAxMDEsCi0gICAgICAgIDAsICAgIDAsICAxMDIsICAx
MzYsICAxMjgsICAxMzUsICAxMjUsICAxMjEsICAxMjMsICAxMjIsCi0gICAgICAxMjYsICAgOTgs
ICAxMTQsICAxMjAsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0KLSAgICAg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAxNywgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICAyMCwgICAyMiwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgIDExNSwgIDExOSwgICAgNSwKLSAgICAgIDE1MSwgICAgMCwg
ICAgMSwgIDEwNCwgICAgMCwgICAgMCwgIDEwMywgICA5OSwgIDExMSwgIDExMiwKLSAgICAgICA1
MCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwK
LSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICAxOCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICAyNiwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICAyMywgICA5OCwgICA5OCwKLQotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4
LCAgICAwLCAgMTA1LCAgICAwLCAgMTA0LCAgIDk4LCAgIDI4LCAgIDk4LCAgIDk4LCAgIDk1LAot
ICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDIxLCAgIDUz
LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDY5LCAgIDk4LCAgIDk4LCAgIDU4LCAgIDczLCAg
IDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDcw
LCAgICA5LCAgIDMzLCAgIDM0LCAgIDM1LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDU2LCAgIDI5LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDM2LCAgIDM3LCAgIDM4LCAgIDI3LCAgIDk4LCAgIDk4LAotICAg
ICAgIDk4LCAgIDE1LCAgIDQyLCAgIDQzLCAgIDQ0LCAgIDUxLCAgIDEyLCAgIDk4LCAgIDk4LCAg
IDk4LAotCi0gICAgICAgOTgsICAgODIsICAgODMsICAgODQsICAgOTgsICAgMzAsICAgNzQsICAg
MjUsICAgODUsICAgODYsCi0gICAgICAgODcsICAgIDcsICAgNzksICAgODAsICAgODEsICAgOTgs
ICAgMjQsICAgNzcsICAgOTgsICAgOTgsCi0gICAgICAgMzksICAgNDAsICAgNDEsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgNzEs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAg
NTIsICAgOTgsICAgOTcsICAgOTgsICAgOTgsICAgMTksICAgOTgsICAgOTgsICAgOTgsCi0gICAg
ICAgOTgsICAgNzIsICAgNjYsICAgNjEsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
NzgsCi0gICAgICAgNTcsICAgOTgsICAgNjQsICAgMzIsICAgOTgsICAgOTQsICAgNjUsICAgNDks
ICAgNzYsICAgNTksCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgNjAsICAgMzEsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgIDgsICAgOTgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNTQsCi0gICAgICAgMTMsICAgOTgsICAgMTQsICAg
OTgsICAgOTgsICAgMTYsICAgNjcsICAgOTgsICAgOTgsICAgOTgsCi0KLSAgICAgICA2MiwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA1NSwgICA3NSwgICA2MywKLSAgICAg
ICAxMSwgICA2OCwgICAgNiwgICA5NiwgICAxMCwgICA4OCwgICA0NSwgICA4OSwgICA5OCwgICA5
OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwKLSAgICAgICA0NiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA0OCwgICA5OCwKLSAgICAgICA5MiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5MCwgICA5OCwgICA5MSwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA0NywgICA5MywgICAgMAorICAgICAgICAwLCAgICAwLCAgMTQ4LCAgMTQ2LCAg
MTQ1LCAgMTQ1LCAgMTMyLCAgMTM4LCAgMTQzLCAgMTI3LAorICAgICAgMTI4LCAgMTM2LCAgMTM1
LCAgMTI0LCAgMTMzLCAgMTMxLCAgMTM3LCAgIDk2LCAgIDk2LCAgMTI1LAorICAgICAgMTIxLCAg
MTM5LCAgMTI2LCAgMTQwLCAgMTQ0LCAgIDkzLCAgMTI5LCAgMTMwLCAgMTQyLCAgIDkzLAorICAg
ICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgMTIyLAorICAgICAgMTQxLCAgMTIzLCAgMTM0LCAgMTE4LCAgMTA0LCAgMTIzLCAg
MTEyLCAgMTA3LCAgMTAyLCAgMTEwLAorICAgICAgMTAwLCAgMTExLCAgMTAxLCAgIDk5LCAgMTAz
LCAgIDk4LCAgIDk1LCAgIDk2LCAgICAwLCAgICAwLAorICAgICAgMTMwLCAgMTIyLCAgMTI5LCAg
MTE5LCAgMTE1LCAgMTE3LCAgMTE2LCAgMTIwLCAgIDkzLCAgMTA4LAorICAgICAgMTE0LCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAg
IDkzLCAgIDEyLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LAorCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgMTUsICAgMTcsICAgOTMs
ICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAxMDksICAxMTMsICAgIDAsICAgOTgsICAgIDAsICAgIDAsCisgICAgICAgOTcsICAgOTQs
ICAxMDUsICAxMDYsICAgNDUsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
CisgICAgICAgOTMsICAgOTMsICAgOTMsICAgMTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgMjEsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgMTgsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisKKyAgICAgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICAgMCwgICA5OSwgICAgMCwgICA5OCwgICA5MywKKyAgICAgICAy
MywgICA5MywgICA5MywgICA5MCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywK
KyAgICAgICA5MywgICAxNiwgICA0OCwgICA5MywgICA5MywgICA5MywgICA2NCwgICA5MywgICA5
MywgICA1MywKKyAgICAgICA2OCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA2NSwKKyAgICAgICAgNCwgICAyOCwgICAyOSwgICAzMCwgICA5MywgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA1MSwgICAyNCwgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICAzMSwgICAzMiwKKyAgICAgICAzMywg
ICAyMiwgICA5MywgICA5MywgICA5MywgICAxMCwgICAzNywgICAzOCwgICAzOSwgICA0NiwKKyAg
ICAgICAgNywgICA5MywgICA5MywgICA5MywgICA5MywgICA3NywgICA3OCwgICA3OSwgICA5Mywg
ICAyNSwKKyAgICAgICA2OSwgICAyMCwgICA4MCwgICA4MSwgICA4MiwgICAgMiwgICA3NCwgICA3
NSwgICA3NiwgICA5MywKKworICAgICAgIDE5LCAgIDcyLCAgIDkzLCAgIDkzLCAgIDM0LCAgIDM1
LCAgIDM2LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDY2LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDQ3LCAgIDkzLCAgIDkyLCAgIDkzLCAgIDkzLAorICAgICAgIDE0LCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDY3LCAgIDYxLCAgIDU2LCAgIDkzLCAgIDkzLAorICAg
ICAgIDkzLCAgIDkzLCAgIDkzLCAgIDczLCAgIDUyLCAgIDkzLCAgIDU5LCAgIDI3LCAgIDkzLCAg
IDg5LAorICAgICAgIDYwLCAgIDQ0LCAgIDcxLCAgIDU0LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDU1LCAgIDI2LCAgIDkzLCAgIDkzLCAg
IDkzLCAgICAzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDQ5LCAgICA4
LCAgIDkzLCAgICA5LCAgIDkzLCAgIDkzLCAgIDExLAorICAgICAgIDYyLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDU3LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDUw
LCAgIDcwLCAgIDU4LCAgICA2LCAgIDYzLCAgICAxLCAgIDkxLCAgICA1LCAgIDgzLAorCisgICAg
ICAgNDAsICAgODQsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNDEsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgNDMsICAgOTMsICAgODcsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgODUsICAgOTMsICAgODYsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNDIsCisgICAgICAgODgsICAgIDAKICAgICB9IDsK
IAogc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQpAQCAtNDgxLDIxMiAr
NDgwLDE5OCBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfZWNbMjU2XSA9CiAKIHN0
YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9tZXRhWzY4XSA9CiAgICAgeyAgIDAsCi0gICAg
ICAgIDEsICAgIDEsICAgIDIsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsCi0gICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMsICAgIDMsICAgIDMsICAgIDMs
ICAgIDMsICAgIDMsCi0gICAgICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDMsICAgIDMsICAgIDMsCi0gICAgICAgIDMsICAgIDQsICAgIDQsICAgIDQsICAgIDQs
ICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAgIDMsCi0gICAgICAgIDMsICAgIDMsICAgIDMsICAg
IDMsICAgIDMsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsCi0gICAgICAgIDQsICAgIDQs
ICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsCi0gICAgICAg
IDQsICAgIDQsICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAgIDEKKyAgICAgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKKyAgICAgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMiwK
KyAgICAgICAgMiwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMiwgICAg
MiwgICAgMiwKKyAgICAgICAgMiwgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMSwg
ICAgMSwgICAgMSwgICAgMiwKKyAgICAgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAg
MywgICAgMywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAgMywgICAgMywgICAgMywg
ICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAgMywgICAg
MywgICAgMSwgICAgMSwgICAgMSwgICAgMQogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4
X2ludDE2X3QgeXlfYmFzZVs0NjRdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9i
YXNlWzQ0NV0gPQogICAgIHsgICAwLAotICAgICAgICAwLCAgICAwLCAgIDY1LCAgIDY2LCAgIDc1
LCAgICAwLCAgNjgwLCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjU0LCAgIDQ1LCAgMTM3LCAg
NjgxLCAgNjgxLCAgNjUzLCAgMTM0LCAgNjgxLCAgMTMzLCAgMTMxLAotICAgICAgMTQ2LCAgMTU5
LCAgMTY4LCAgNjUxLCAgNjgxLCAgMTg2LCAgNjUxLCAgIDQ3LCAgNjgxLCAgICAwLAotICAgICAg
NjgxLCAgNjgxLCAgMTI4LCAgMTAwLCAgMTEwLCAgMTUyLCAgMTU2LCAgMTQ2LCAgMTY2LCAgNjIy
LAotICAgICAgMTczLCAgMTA5LCAgNjIxLCAgMTI2LCAgMTc3LCAgNjE1LCAgMTc4LCAgNjI4LCAg
MTg3LCAgMTg0LAotICAgICAgMTQxLCAgMTk3LCAgNjI0LCAgNjgxLCAgMTU3LCAgNjgxLCAgNjgx
LCAgNjgxLCAgNjgxLCAgNjU2LAotICAgICAgNjgxLCAgNjgxLCAgICAwLCAgNjgxLCAgNjgxLCAg
NjgxLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjgxLCAgNjgxLCAgNjgxLCAgMjM2
LCAgNjgxLCAgICAwLCAgNjgxLCAgMjQzLCAgMjczLCAgMjgyLAotICAgICAgMzA0LCAgICAwLCAg
MzE0LCAgNjgxLCAgNjgxLCAgNjgxLCAgNjQ0LCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjQz
LCAgICAwLCAgNjgxLCAgNjgxLCAgNjE2LCAgNjA5LCAgNjEyLCAgNjIwLCAgNjE5LCAgNjA2LAot
Ci0gICAgICA2MjEsICA2MDgsICA2MTQsICA2MDIsICA1OTksICA2MTIsICA1OTksICA1OTYsICA1
OTYsICA2MDIsCi0gICAgICA1OTAsICAxODksICA1OTUsICA2MDUsICA1OTEsICA1OTcsICA2MDAs
ICA2MDEsICAgIDAsICAyMTYsCi0gICAgICA2MDAsICAxODgsICA1ODYsICA1OTksICA1OTAsICA1
OTIsICA1ODIsICA1OTYsICA1OTMsICA1OTUsCi0gICAgICA1NzgsICA1ODMsICA1ODAsICA1Njks
ICAxODMsICA1NzcsICA1ODIsICA1NzgsICA1ODAsICA1NjksCi0gICAgICA1NzIsICAyMjAsICA1
NzcsICA1NjksICA1ODEsICAxNzYsICA1NzQsICA2ODEsICA2ODEsICA2ODEsCi0gICAgICAgIDAs
ICAzMzEsICAgIDAsICAzNDQsICAzNjEsICAyOTAsICAzNzQsICAgIDAsICA2ODEsICA2ODEsCi0g
ICAgICAgIDAsICA1NjYsICA1NzAsICA1NzksICA1NzYsICA1NjAsICA1NjAsICAyMTUsICA1NzUs
ICA1NzIsCi0gICAgICA1NzIsICA1NzAsICA1NjcsICA1NTksICA1NjUsICA1NTIsICA1NjMsICA1
NDksICA1NjUsICAgIDAsCi0gICAgICA1NjIsICA1NTAsICA1NTcsICA1NTQsICA1NTgsICA1NTEs
ICA1NDAsICA1MzksICA1NTIsICA1NTUsCi0gICAgICA1NTIsICA1NDcsICA1MzgsICAyNjAsICA1
NDMsICA1NDYsICA1MzcsICA1MzQsICA1MzgsICA1NDQsCi0KLSAgICAgIDUzNSwgIDUyNiwgIDUy
OSwgIDUyNywgIDUzNywgIDUyMywgIDUyMSwgIDUzNCwgIDUyMCwgIDUyMiwKLSAgICAgIDUxOSwg
IDUzMCwgIDUyOSwgIDI4MywgIDUyNCwgIDUxOSwgIDUwOCwgIDI2NCwgIDUyNiwgIDUyOCwKLSAg
ICAgIDUxNywgIDM4MSwgIDM4OCwgIDM5NSwgIDQwMiwgIDUxOCwgICAgMCwgIDUxNiwgIDMyMCwg
ICAgMCwKLSAgICAgIDUwOCwgIDUwNiwgIDUxNCwgIDUwMywgIDUyMCwgIDUwOSwgIDMzNiwgICAg
MCwgICAgMCwgIDUwMywKLSAgICAgIDUxMywgIDUxMywgICAgMCwgIDQ5OCwgIDM0OSwgICAgMCwg
ICAgMCwgIDUwMCwgIDM2NiwgIDUwMSwKLSAgICAgIDQ5NSwgIDQ5NCwgIDQ5NSwgIDQ5NCwgIDQw
NywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAgICAgIDQ5MCwgIDQ5MSwgIDQ5Niwg
IDQ4NywgIDUwMCwgIDQ5NSwgIDQ5NCwgIDQ4NiwgIDQ5MCwgIDQ4MiwKLSAgICAgIDQ4NSwgIDQ4
OSwgIDQ5NCwgIDQ4MCwgIDQ5MiwgIDQ4MywgICAgMCwgICAgMCwgIDQ4OSwgIDQ3OCwKLSAgICAg
IDQ3OCwgIDQ4MywgIDQ4MiwgIDQ3OSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ2OSwgIDQ4
MSwKLSAgICAgIDQ4MywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ3MSwg
IDQ3MiwgIDQ2NiwKLQotICAgICAgNDc2LCAgICAwLCAgICAwLCAgICAwLCAgNDY3LCAgICAwLCAg
ICAwLCAgICAwLCAgICAwLCAgICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAw
LCAgNDc0LCAgICAwLCAgICAwLCAgNDcyLCAgNDY4LAotICAgICAgICAwLCAgICAwLCAgICAwLCAg
NDY0LCAgNDYwLCAgNDY1LCAgNDU1LCAgNDY4LCAgNDU0LCAgNDY3LAotICAgICAgNDU2LCAgNDYz
LCAgICAwLCAgNDYxLCAgNDYzLCAgNDQ3LCAgNDQ5LCAgNDU1LCAgNDYxLCAgNDU2LAotICAgICAg
NDQ0LCAgICAwLCAgNDQ2LCAgICAwLCAgNDQ1LCAgNDQ4LCAgICAwLCAgNDM3LCAgNDM2LCAgNDM2
LAotICAgICAgNDQ5LCAgICAwLCAgNDUxLCAgICAwLCAgNDUwLCAgNDQ5LCAgNDM0LCAgNDQ3LCAg
NDM0LCAgICAwLAotICAgICAgICAwLCAgNDM3LCAgICAwLCAgICAwLCAgNDI5LCAgICAwLCAgICAw
LCAgICAwLCAgICAwLCAgICAwLAotICAgICAgNDI2LCAgNDM3LCAgNDMwLCAgNDM2LCAgNDMzLCAg
NDI4LCAgNDIwLCAgNDMyLCAgICAwLCAgICAwLAotICAgICAgNDI1LCAgNDMyLCAgNDIxLCAgICAw
LCAgNDMwLCAgNDI3LCAgNDE3LCAgNDExLCAgNDI1LCAgICAwLAotICAgICAgICAwLCAgNDI1LCAg
ICAwLCAgNDIzLCAgNDIyLCAgICAwLCAgICAwLCAgNDIxLCAgNDA3LCAgNDE5LAotCi0gICAgICAg
IDAsICA0MTAsICA0MzEsICA0MzAsICA0MjksICA0MDAsICAzOTYsICAgIDAsICAgIDAsICAgIDAs
Ci0gICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0MjEsICAyNTAsICA0MjEsICA0
MTEsICAzODQsCi0gICAgICAzOTIsICAzOTQsICAzOTAsICAzOTIsICAzOTEsICAzOTAsICAzOTMs
ICAzOTAsICAzOTEsICAzODgsCi0gICAgICAgIDAsICAzMzIsICAzNDMsICAzMTcsICAzMjksICAz
MTMsICAzMTcsICAzMDQsICAzMjEsICAyOTEsCi0gICAgICAgIDAsICAzMDIsICAyODAsICAyNzEs
ICAyNTUsICAyNjIsICAgIDAsICAyNTYsICAgIDAsICAyMzIsCi0gICAgICAyMDYsICAyMTIsICAx
NDgsICAxNTksICAxMTMsICAgIDAsICAgIDAsICA2ODEsICA0NDIsICA0NDQsCi0gICAgICA0NDYs
ICA0NTAsICAxNjEKKyAgICAgICAgMCwgICAgMCwgIDU4NywgIDU4OCwgIDU4OCwgIDU4OCwgIDU2
MSwgICA0MywgICA2NCwgIDU4OCwKKyAgICAgIDU4OCwgIDU2MCwgICA2MSwgIDU4OCwgICA2MCwg
ICA1OCwgIDU1OSwgICA3NywgICA4NiwgIDU1NywKKyAgICAgIDU4OCwgIDEwNCwgIDU1NywgICA1
NSwgIDU4OCwgICAgMCwgIDU4OCwgIDU4OCwgICA3NSwgICAyNiwKKyAgICAgICA1NywgICA4Miwg
ICA4MywgICA3MywgICA5MywgIDUyOCwgICA5NywgICA5NSwgIDUyNywgICA0NCwKKyAgICAgICA3
MSwgIDUyMSwgIDEwNCwgIDUzNCwgIDExMCwgIDExNiwgICAzNSwgIDExMSwgIDUzMCwgIDU4OCwK
KyAgICAgIDExNCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4
OCwgIDU4OCwKKyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDE2NSwgIDU4OCwgIDE3MiwgIDIwMiwg
IDIxMSwgIDIzMywgICAgMCwKKyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDU1MSwgIDU4OCwgIDU4
OCwgIDU4OCwgIDU1MCwgICAgMCwgIDU4OCwKKyAgICAgIDU4OCwgIDUyMywgIDUxNiwgIDUxOSwg
IDUyNywgIDUyNiwgIDUxMywgIDUyOCwgIDUxNSwgIDUyMSwKKyAgICAgIDUwOSwgIDUwNiwgIDUx
OSwgIDUwNiwgIDUwMywgIDUwMywgIDUwOSwgIDQ5NywgIDEwOCwgIDUwMiwKKworICAgICAgNTEy
LCAgNDk4LCAgNTA0LCAgNTA3LCAgNTA4LCAgICAwLCAgMTQ1LCAgNTA3LCAgMTEzLCAgNDkzLAor
ICAgICAgNTA2LCAgNDk3LCAgNDk5LCAgNDg5LCAgNTAzLCAgNTAwLCAgNTAyLCAgNDg1LCAgNDkw
LCAgNDg3LAorICAgICAgNDc2LCAgMTU3LCAgNDg0LCAgNDg5LCAgNDg1LCAgNDg3LCAgNDc2LCAg
NDc5LCAgMTE4LCAgNDg0LAorICAgICAgNDc2LCAgNDg4LCAgIDcwLCAgNDgxLCAgNTg4LCAgNTg4
LCAgMjQ2LCAgMjUzLCAgMjcwLCAgMjE5LAorICAgICAgMjgzLCAgICAwLCAgNTg4LCAgNTg4LCAg
ICAwLCAgNDczLCAgNDc3LCAgNDg2LCAgNDgzLCAgNDY3LAorICAgICAgNDY3LCAgMTE5LCAgNDgy
LCAgNDc5LCAgNDc5LCAgNDc3LCAgNDc0LCAgNDY2LCAgNDcyLCAgNDU5LAorICAgICAgNDcwLCAg
NDU2LCAgNDcyLCAgICAwLCAgNDY5LCAgNDU3LCAgNDY0LCAgNDYxLCAgNDY1LCAgNDU4LAorICAg
ICAgNDQ3LCAgNDQ2LCAgNDU5LCAgNDYyLCAgNDU5LCAgNDU0LCAgNDQ1LCAgMTg4LCAgNDUwLCAg
NDUzLAorICAgICAgNDQ0LCAgNDQxLCAgNDQ1LCAgNDUxLCAgNDQyLCAgNDMzLCAgNDM2LCAgNDM0
LCAgNDQ0LCAgNDMwLAorICAgICAgNDI4LCAgNDQxLCAgNDI3LCAgNDI5LCAgNDI2LCAgNDM3LCAg
NDM2LCAgMTI0LCAgNDMxLCAgNDI2LAorCisgICAgICA0MTUsICAyNTgsICA0MzMsICA0MzUsICA0
MjQsICAyOTAsICAyOTcsICAzMDQsICAzMTEsICA0MjUsCisgICAgICAgIDAsICA0MjMsICAyNzUs
ICAgIDAsICA0MTUsICA0MTMsICA0MjEsICA0MTAsICA0MjcsICA0MTYsCisgICAgICAzMTYsICAg
IDAsICAgIDAsICA0MTAsICA0MjAsICA0MjAsICAgIDAsICA0MDUsICAzMTksICAgIDAsCisgICAg
ICAgIDAsICA0MDcsICAzMjIsICA0MDgsICA0MDIsICA0MDEsICA0MDIsICA0MDEsICAzMjUsICAg
IDAsCisgICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzOTcsICAzOTgsICA0MDMsICAzOTQs
ICA0MDcsICA0MDIsCisgICAgICA0MDEsICAzOTMsICAzOTcsICAzODksICAzOTIsICAzOTYsICA0
MDEsICAzODcsICAzOTksICAzOTAsCisgICAgICAgIDAsICAgIDAsICAzOTYsICAzODUsICAzODUs
ICAzOTAsICAzODksICAzODYsICAgIDAsICAgIDAsCisgICAgICAgIDAsICAgIDAsICAzNzYsICAz
ODgsICAzOTAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsCisgICAgICAgIDAsICAzNzgs
ICAzNzksICAzNzMsICAzODMsICAgIDAsICAgIDAsICAgIDAsICAzNzQsICAgIDAsCisgICAgICAg
IDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzODEs
CisKKyAgICAgICAgMCwgICAgMCwgIDM3OSwgIDM3NSwgICAgMCwgICAgMCwgICAgMCwgIDM3MSwg
IDM2NywgIDM3MiwKKyAgICAgIDM2MiwgIDM3NSwgIDM2MSwgIDM3NCwgIDM2MywgIDM3MCwgICAg
MCwgIDM2OCwgIDM3MCwgIDM1NCwKKyAgICAgIDM1NiwgIDM2MiwgIDM2OCwgIDM2MywgIDM1MSwg
ICAgMCwgIDM1MywgICAgMCwgIDM1MiwgIDM1NSwKKyAgICAgICAgMCwgIDM0NCwgIDM0MywgIDM0
MywgIDM1NiwgICAgMCwgIDM1OCwgICAgMCwgIDM1NywgIDM1NiwKKyAgICAgIDM0MSwgIDM1NCwg
IDM0MSwgICAgMCwgICAgMCwgIDM0NCwgICAgMCwgICAgMCwgIDMzNiwgICAgMCwKKyAgICAgICAg
MCwgICAgMCwgICAgMCwgICAgMCwgIDMzMywgIDM0NCwgIDMzNywgIDM0MywgIDM0MCwgIDMzNSwK
KyAgICAgIDMyNywgIDMzOSwgICAgMCwgICAgMCwgIDMzMiwgIDMzOSwgIDMyOCwgICAgMCwgIDMz
NywgIDMzNCwKKyAgICAgIDMyNCwgIDMyOSwgIDMzMiwgICAgMCwgICAgMCwgIDMzMiwgICAgMCwg
IDMzMCwgIDMyOSwgICAgMCwKKyAgICAgICAgMCwgIDMyOCwgIDMxNCwgIDMyNiwgICAgMCwgIDMx
NywgIDMzOCwgIDMzNywgIDMzNiwgIDMwNywKKyAgICAgIDMwMywgICAgMCwgICAgMCwgICAgMCwg
ICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDMyOCwKKworICAgICAgMTY2LCAgMzI1LCAg
MzE2LCAgMjk5LCAgMzA4LCAgMzEwLCAgMzA2LCAgMzA4LCAgMzA3LCAgMzA2LAorICAgICAgMzA5
LCAgMzA2LCAgMjU2LCAgMjUzLCAgICAwLCAgMjI4LCAgMjM4LCAgMjIyLCAgMjM1LCAgMjAzLAor
ICAgICAgMjA3LCAgMjA0LCAgMjEyLCAgMTkxLCAgICAwLCAgMjAxLCAgMTY1LCAgMTY3LCAgMTUz
LCAgMTYxLAorICAgICAgICAwLCAgMTcwLCAgICAwLCAgMTc1LCAgMTUxLCAgMTQxLCAgMTAwLCAg
MTE0LCAgIDU5LCAgICAwLAorICAgICAgICAwLCAgNTg4LCAgMzU5LCAgMTEzCiAgICAgfSA7CiAK
LXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9kZWZbNDY0XSA9CitzdGF0aWMgeXljb25z
dCBmbGV4X2ludDE2X3QgeXlfZGVmWzQ0NV0gPQogICAgIHsgICAwLAotICAgICAgNDU4LCAgICAx
LCAgNDU5LCAgNDU5LCAgNDU4LCAgICA1LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDYwLAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAg
NDYxLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDYyLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAot
ICAgICAgNDU4LCAgNDYzLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LAotICAgICAgNDU4LCAgNDYwLCAgNDU4LCAgNDU4LCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0g
ICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NTgsICA0NTgs
ICA0NTgsCi0gICAgICA0NjEsICA0NTgsICA0NjIsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0
NjMsICA0NTgsICA0NTgsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0KLSAg
ICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAot
ICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0g
ICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICAgIDAsICA0NTgs
ICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgKKyAgICAgIDQ0MiwgICAgMSwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywK
KyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0NCwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwKKyAgICAgIDQ0Miwg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAg
ICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywKKworICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAg
NDQ0LCAgNDQyLCAgNDQyLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAg
ICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorCisgICAgICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDMsCisgICAg
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
CisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywK
KyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKwor
ICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgICAwLCAgNDQy
LCAgNDQyCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9ueHRbNzQ5
XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0WzY1Nl0gPQogICAgIHsgICAw
LAotICAgICAgICA4LCAgICA5LCAgIDEwLCAgIDExLCAgIDEyLCAgIDEzLCAgIDE0LCAgIDE1LCAg
IDE2LCAgIDE3LAotICAgICAgIDE4LCAgIDE5LCAgIDIwLCAgIDIxLCAgIDIyLCAgIDIzLCAgIDIz
LCAgIDIzLCAgIDIzLCAgIDIzLAotICAgICAgIDIzLCAgIDI0LCAgIDI1LCAgIDI2LCAgIDI3LCAg
IDI4LCAgIDI5LCAgIDMwLCAgIDMwLCAgIDMwLAotICAgICAgIDMwLCAgIDMwLCAgIDMwLCAgIDMw
LCAgIDMwLCAgIDMwLCAgIDMxLCAgIDMyLCAgIDMzLCAgIDM0LAotICAgICAgIDM1LCAgIDM2LCAg
IDM3LCAgIDM4LCAgIDM5LCAgIDQwLCAgIDQxLCAgIDQyLCAgIDMwLCAgIDQzLAotICAgICAgIDQ0
LCAgIDQ1LCAgIDQ2LCAgIDQ3LCAgIDQ4LCAgIDQ5LCAgIDUwLCAgIDUxLCAgIDUyLCAgIDUzLAot
ICAgICAgIDMwLCAgIDMwLCAgIDMwLCAgIDU0LCAgIDU1LCAgIDU2LCAgIDU3LCAgIDU5LCAgIDU5
LCAgIDY1LAotICAgICAgIDY2LCAgIDkwLCAgIDkxLCAgIDYwLCAgIDYwLCAgICA4LCAgIDYxLCAg
IDYyLCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4
LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4LCAgICA4LCAg
ICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAotCi0gICAgICAgIDgsICAgIDgsICAg
NjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0gICAgICAgNjMs
ICAgIDgsICAgIDgsICAgIDgsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0g
ICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMs
ICAgNjMsCi0gICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAg
NjMsICAgIDgsICAgIDgsCi0gICAgICAgIDgsICAgIDgsICAgNjcsICAgNzAsICAgNzIsICAgNzQs
ICAgNzQsICAgNzQsICAgNzQsICAgNzQsCi0gICAgICAgNzQsICAgNzQsICAgOTMsICAxMTksICAg
NzUsICAgOTUsICAgOTYsICAgNzMsICAgNzEsICAgNzYsCi0gICAgICAxMjAsICAgNjgsICAgOTcs
ICAxNTgsICAgOTgsICAxMjMsICAgOTQsICAxMjEsICAgOTksICAxMjQsCi0gICAgICAgNzcsICAg
NzgsICA0NTcsICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAgODAsCi0gICAg
ICAgNzgsICAxNDgsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAg
ODEsCi0gICAgICAgODUsICAxMDAsICAxNDIsICA0NTYsICAgODIsICAxMDcsICAxNDMsICAxMDgs
ICAgODEsICAxMDMsCi0KLSAgICAgIDQ1NSwgIDEwMSwgICA4MSwgIDEwNCwgIDEwMiwgIDExMCwg
IDEwOSwgICA4NiwgIDEwNSwgICA4NywKLSAgICAgICA4OCwgICA4MSwgIDExNiwgIDExMSwgIDEw
NiwgIDExMiwgIDEyNSwgIDEyOCwgIDExMywgICA4MiwKLSAgICAgIDExNywgIDE0OSwgIDIwNiwg
IDIxOSwgIDExNCwgIDIyMCwgIDEzMiwgIDEzOCwgIDE3OCwgIDEyNiwKLSAgICAgIDEzOSwgIDEx
OCwgIDEyOSwgIDEzMywgIDEzNCwgIDEzMCwgIDE0NCwgIDIwNywgIDE0MCwgIDE5MiwKLSAgICAg
IDE0NSwgIDE3OSwgIDQ1NCwgIDEzNSwgIDEzNiwgIDE0MSwgIDEzNywgIDE5MywgIDQ1MywgIDE0
NiwKLSAgICAgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgIDE1NCwg
IDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDQ1MiwgIDE4NiwgIDE1
MiwgIDIxNCwgIDE4NywgIDE4OCwKLSAgICAgIDIzMiwgIDIzMywgIDE4OSwgIDE1NSwgIDE5MCwg
IDIxNSwgIDI1OCwgIDI1OSwgIDI2MCwgIDE1MiwKLSAgICAgIDI4NSwgIDI4NiwgIDI4NywgIDQy
MiwgIDQyMywgICA3OCwgIDE1NSwgICA3OSwgICA3OSwgICA3OSwKLSAgICAgICA3OSwgICA3OSwg
ICA3OSwgICA4MCwgICA3OCwgIDQ1MSwgICA4MCwgICA4MCwgICA4MCwgICA4MCwKLQotICAgICAg
IDgwLCAgIDgwLCAgIDgwLCAgIDgxLCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3
LAotICAgICAgMTU3LCAgNDUwLCAgIDgxLCAgMTU2LCAgNDQ5LCAgMTU2LCAgIDgxLCAgNDQ4LCAg
MTU3LCAgMTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgIDgxLCAgIDc4
LCAgMjgwLCAgIDgzLCAgIDgzLAotICAgICAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAg
MjgxLCAgMjkzLCAgMjk0LCAgMjk1LCAgNDQ3LAotICAgICAgMjIyLCAgNDQ2LCAgMjIyLCAgNDQ1
LCAgIDgxLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLAotICAgICAgMjIzLCAgMjIzLCAg
MzAyLCAgMzAzLCAgMzA0LCAgNDQ0LCAgNDQzLCAgIDgxLCAgMTU0LCAgMTU0LAotICAgICAgMTU0
LCAgMTU0LCAgMTU0LCAgMTU0LCAgMTU0LCAgMzA5LCAgMzEwLCAgMzExLCAgNDQyLCAgNDQxLAot
ICAgICAgMjI0LCAgNDQwLCAgMjI0LCAgNDM5LCAgMTU1LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1
LCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMzEzLCAgMzE0LCAgMzE1LCAgNDM4LCAgNDM3LCAg
MTU1LCAgMTU3LCAgMTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMjIz
LCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLAotCi0gICAgICAyMjMsICAyMjMsICAyMjMsICAyMjMs
ICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjUsCi0gICAgICAyMjUsICAyMjUsICAy
MjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsCi0gICAgICAyMjUs
ICAyMjUsICAyMjUsICAzMjEsICAzMjIsICAzMjMsICA0MDMsICA0MDQsICA0MDUsICA0MzYsCi0g
ICAgICA0MzUsICA0MzQsICA0MzMsICA0MzIsICA0MzEsICA0MzAsICA0MjksICA0MjgsICA0Mjcs
ICA0MDYsCi0gICAgICA0MjYsICA0MDcsICAgNTgsICAgNTgsICAgNTgsICAgNTgsICAgOTIsICAg
OTIsICAxNTEsICAxNTEsCi0gICAgICAxNTMsICA0MjUsICAxNTMsICAxNTMsICA0MjQsICA0MjEs
ICA0MjAsICA0MTksICA0MTgsICA0MTcsCi0gICAgICA0MTYsICA0MTUsICA0MTQsICA0MTMsICA0
MTIsICA0MTEsICA0MTAsICA0MDksICA0MDgsICA0MDIsCi0gICAgICA0MDEsICA0MDAsICAzOTks
ICAzOTgsICAzOTcsICAzOTYsICAzOTUsICAzOTQsICAzOTMsICAzOTIsCi0gICAgICAzOTEsICAz
OTAsICAzODksICAzODgsICAzODcsICAzODYsICAzODUsICAzODQsICAzODMsICAzODIsCi0gICAg
ICAzODEsICAzODAsICAzNzksICAzNzgsICAzNzcsICAzNzYsICAzNzUsICAzNzQsICAzNzMsICAz
NzIsCi0KLSAgICAgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2NywgIDM2NiwgIDM2NSwgIDM2
NCwgIDM2MywgIDM2MiwKLSAgICAgIDM2MSwgIDM2MCwgIDM1OSwgIDM1OCwgIDM1NywgIDM1Niwg
IDM1NSwgIDM1NCwgIDM1MywgIDM1MiwKLSAgICAgIDM1MSwgIDM1MCwgIDM0OSwgIDM0OCwgIDM0
NywgIDM0NiwgIDM0NSwgIDM0NCwgIDM0MywgIDM0MiwKLSAgICAgIDM0MSwgIDM0MCwgIDMzOSwg
IDMzOCwgIDMzNywgIDMzNiwgIDMzNSwgIDMzNCwgIDMzMywgIDMzMiwKLSAgICAgIDMzMSwgIDMz
MCwgIDMyOSwgIDMyOCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMCwgIDMxOSwKLSAgICAg
IDMxOCwgIDMxNywgIDMxNiwgIDMxMiwgIDMwOCwgIDMwNywgIDMwNiwgIDMwNSwgIDMwMSwgIDMw
MCwKLSAgICAgIDI5OSwgIDI5OCwgIDI5NywgIDI5NiwgIDI5MiwgIDI5MSwgIDI5MCwgIDI4OSwg
IDI4OCwgIDI4NCwKLSAgICAgIDI4MywgIDI4MiwgIDI3OSwgIDI3OCwgIDI3NywgIDI3NiwgIDI3
NSwgIDI3NCwgIDI3MywgIDI3MiwKLSAgICAgIDI3MSwgIDI3MCwgIDI2OSwgIDI2OCwgIDI2Nywg
IDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2MiwKLSAgICAgIDI2MSwgIDI1NywgIDI1NiwgIDI1
NSwgIDI1NCwgIDI1MywgIDI1MiwgIDI1MSwgIDI1MCwgIDI0OSwKLQotICAgICAgMjQ4LCAgMjQ3
LCAgMjQ2LCAgMjQ1LCAgMjQ0LCAgMjQzLCAgMjQyLCAgMjQxLCAgMjQwLCAgMjM5LAotICAgICAg
MjM4LCAgMjM3LCAgMjM2LCAgMjM1LCAgMjM0LCAgMjMxLCAgMjMwLCAgMjI5LCAgMjI4LCAgMjI3
LAotICAgICAgMjI2LCAgMjIxLCAgMjE4LCAgMjE3LCAgMjE2LCAgMjEzLCAgMjEyLCAgMjExLCAg
MjEwLCAgMjA5LAotICAgICAgMjA4LCAgMjA1LCAgMjA0LCAgMjAzLCAgMjAyLCAgMjAxLCAgMjAw
LCAgMTk5LCAgMTk4LCAgMTk3LAotICAgICAgMTk2LCAgMTk1LCAgMTk0LCAgMTkxLCAgMTg1LCAg
MTg0LCAgMTgzLCAgMTgyLCAgMTgxLCAgMTgwLAotICAgICAgMTc3LCAgMTc2LCAgMTc1LCAgMTc0
LCAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LAotICAgICAgMTY3LCAgMTY2LCAg
MTY1LCAgMTY0LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTUwLAotICAgICAgMTQ3
LCAgMTMxLCAgMTI3LCAgMTIyLCAgMTE1LCAgIDg5LCAgIDg0LCAgIDY5LCAgIDY0LCAgNDU4LAot
ICAgICAgICA3LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LAotCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0g
ICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgKKyAgICAg
ICAgNCwgICAgNSwgICAgNiwgICAgNywgICAgOCwgICAgOSwgICAxMCwgICAxMSwgICAxMiwgICAx
MywKKyAgICAgICAxNCwgICAxNSwgICAxNiwgICAxNywgICAxOCwgICAxOSwgICAxOSwgICAxOSwg
ICAxOSwgICAxOSwKKyAgICAgICAxOSwgICAyMCwgICAyMSwgICAyMiwgICAyMywgICAyNCwgICAy
NSwgICAyNiwgICAyNiwgICAyNiwKKyAgICAgICAyNiwgICAyNiwgICAyNiwgICAyNiwgICAyNiwg
ICAyNiwgICAyNywgICAyOCwgICAyOSwgICAzMCwKKyAgICAgICAzMSwgICAzMiwgICAzMywgICAz
NCwgICAzNSwgICAzNiwgICAzNywgICAzOCwgICAyNiwgICAzOSwKKyAgICAgICA0MCwgICA0MSwg
ICA0MiwgICA0MywgICA0NCwgICA0NSwgICA0NiwgICA0NywgICA0OCwgICA0OSwKKyAgICAgICAy
NiwgICAyNiwgICAyNiwgICA1MCwgICA1MSwgICA1MiwgICA1MywgICA1NSwgICA1NiwgICA1NywK
KyAgICAgICA2MCwgICA2MiwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2
NCwgICA3NywKKyAgICAgICA3OCwgICA4MiwgICA4MywgIDExMCwgICA2MywgICA2MSwgIDEyOSwg
IDExMSwgICA1OCwgICA2NiwKKyAgICAgIDEzMCwgICA2NywgICA2NywgICA2NywgICA2NywgICA2
NywgICA2NywgICA2OCwgICA2NiwgICA4MCwKKworICAgICAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4
LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY5LCAgIDcyLCAgIDg0LAorICAgICAgMTEyLCAgIDg1LCAg
IDcwLCAgIDgxLCAgMTQyLCAgIDg2LCAgIDY5LCAgMjAzLCAgNDQxLCAgMjA0LAorICAgICAgIDY5
LCAgIDg3LCAgIDk0LCAgMTEzLCAgIDk1LCAgIDczLCAgIDkwLCAgIDc0LCAgIDc1LCAgIDY5LAor
ICAgICAgIDkxLCAgIDg4LCAgIDk3LCAgIDk2LCAgIDg5LCAgIDkyLCAgMTAzLCAgIDcwLCAgMTM1
LCAgMTA2LAorICAgICAgIDk4LCAgIDkzLCAgIDk5LCAgMTE1LCAgMTA0LCAgMTAwLCAgMTA3LCAg
MTYyLCAgNDQwLCAgMTE5LAorICAgICAgMTMxLCAgMTAxLCAgNDM5LCAgMTA4LCAgMTMyLCAgMTA1
LCAgMTIwLCAgMTIxLCAgMTE2LCAgMTI1LAorICAgICAgMTYzLCAgMTE3LCAgMTI2LCAgMTMzLCAg
MTc2LCAgMTk4LCAgMTIyLCAgMTIzLCAgMjY0LCAgMTI0LAorICAgICAgMTI3LCAgNDM4LCAgMTc3
LCAgMTk5LCAgMjE2LCAgMjE3LCAgMjY1LCAgMTI4LCAgMTM2LCAgIDY0LAorICAgICAgIDY0LCAg
IDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LAorICAg
ICAgMTM4LCAgMTM4LCAgMTM4LCAgNDM3LCAgMTcwLCAgMTM3LCAgMTkwLCAgMTcxLCAgMTcyLCAg
NDA2LAorCisgICAgICA0MDcsICAxNzMsICAxMzksICAxNzQsICAyNDIsICAyNDMsICAyNDQsICA0
MzYsICAxMzcsICA0MzUsCisgICAgICA0MzQsICAxOTEsICA0MzMsICA0MzIsICAgNjYsICAxMzks
ICAgNjcsICAgNjcsICAgNjcsICAgNjcsCisgICAgICAgNjcsICAgNjcsICAgNjgsICAgNjYsICA0
MzEsICAgNjgsICAgNjgsICAgNjgsICAgNjgsICAgNjgsCisgICAgICAgNjgsICAgNjgsICAgNjks
ICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsCisgICAgICA0MzAsICAg
NjksICAxNDAsICA0MjksICAxNDAsICAgNjksICA0MjgsICAxNDEsICAxNDEsICAxNDEsCisgICAg
ICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAgNjksICAyMDYsICA0MjcsICAyMDYsICA0MjYsICA0
MjUsCisgICAgICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAxMzgs
ICAxMzgsICAxMzgsCisgICAgICAxMzgsICAxMzgsICAxMzgsICAxMzgsICAyNjksICAyNzAsICAy
NzEsICA0MjQsICA0MjMsICAyMDgsCisgICAgICA0MjIsICAyMDgsICA0MjEsICAxMzksICAyMDks
ICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksCisgICAgICAyMDksICAyNzcsICAyNzgsICAy
NzksICA0MjAsICA0MTksICAxMzksICAxNDEsICAxNDEsICAxNDEsCisKKyAgICAgIDE0MSwgIDE0
MSwgIDE0MSwgIDE0MSwgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywKKyAgICAg
IDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwOSwgIDIw
OSwKKyAgICAgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwg
IDIwOSwgIDIwOSwKKyAgICAgIDIwOSwgIDIwOSwgIDI4NiwgIDI4NywgIDI4OCwgIDI5MywgIDI5
NCwgIDI5NSwgIDI5NywgIDI5OCwKKyAgICAgIDI5OSwgIDMwNSwgIDMwNiwgIDMwNywgIDM4Nywg
IDM4OCwgIDM4OSwgIDQxOCwgIDQxNywgIDQxNiwKKyAgICAgIDQxNSwgIDQxNCwgIDQxMywgIDQx
MiwgIDQxMSwgIDQxMCwgIDQwOSwgIDM5MCwgIDQwOCwgIDM5MSwKKyAgICAgICA3OSwgICA3OSwg
IDQwNSwgIDQwNCwgIDQwMywgIDQwMiwgIDQwMSwgIDQwMCwgIDM5OSwgIDM5OCwKKyAgICAgIDM5
NywgIDM5NiwgIDM5NSwgIDM5NCwgIDM5MywgIDM5MiwgIDM4NiwgIDM4NSwgIDM4NCwgIDM4MywK
KyAgICAgIDM4MiwgIDM4MSwgIDM4MCwgIDM3OSwgIDM3OCwgIDM3NywgIDM3NiwgIDM3NSwgIDM3
NCwgIDM3MywKKyAgICAgIDM3MiwgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2NywgIDM2Niwg
IDM2NSwgIDM2NCwgIDM2MywKKworICAgICAgMzYyLCAgMzYxLCAgMzYwLCAgMzU5LCAgMzU4LCAg
MzU3LCAgMzU2LCAgMzU1LCAgMzU0LCAgMzUzLAorICAgICAgMzUyLCAgMzUxLCAgMzUwLCAgMzQ5
LCAgMzQ4LCAgMzQ3LCAgMzQ2LCAgMzQ1LCAgMzQ0LCAgMzQzLAorICAgICAgMzQyLCAgMzQxLCAg
MzQwLCAgMzM5LCAgMzM4LCAgMzM3LCAgMzM2LCAgMzM1LCAgMzM0LCAgMzMzLAorICAgICAgMzMy
LCAgMzMxLCAgMzMwLCAgMzI5LCAgMzI4LCAgMzI3LCAgMzI2LCAgMzI1LCAgMzI0LCAgMzIzLAor
ICAgICAgMzIyLCAgMzIxLCAgMzIwLCAgMzE5LCAgMzE4LCAgMzE3LCAgMzE2LCAgMzE1LCAgMzE0
LCAgMzEzLAorICAgICAgMzEyLCAgMzExLCAgMzEwLCAgMzA5LCAgMzA4LCAgMzA0LCAgMzAzLCAg
MzAyLCAgMzAxLCAgMzAwLAorICAgICAgMjk2LCAgMjkyLCAgMjkxLCAgMjkwLCAgMjg5LCAgMjg1
LCAgMjg0LCAgMjgzLCAgMjgyLCAgMjgxLAorICAgICAgMjgwLCAgMjc2LCAgMjc1LCAgMjc0LCAg
MjczLCAgMjcyLCAgMjY4LCAgMjY3LCAgMjY2LCAgMjYzLAorICAgICAgMjYyLCAgMjYxLCAgMjYw
LCAgMjU5LCAgMjU4LCAgMjU3LCAgMjU2LCAgMjU1LCAgMjU0LCAgMjUzLAorICAgICAgMjUyLCAg
MjUxLCAgMjUwLCAgMjQ5LCAgMjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAgMjQxLCAgMjQwLAorCisg
ICAgICAyMzksICAyMzgsICAyMzcsICAyMzYsICAyMzUsICAyMzQsICAyMzMsICAyMzIsICAyMzEs
ICAyMzAsCisgICAgICAyMjksICAyMjgsICAyMjcsICAyMjYsICAyMjUsICAyMjQsICAyMjMsICAy
MjIsICAyMjEsICAyMjAsCisgICAgICAyMTksICAyMTgsICAyMTUsICAyMTQsICAyMTMsICAyMTIs
ICAyMTEsICAyMTAsICAyMDUsICAyMDIsCisgICAgICAyMDEsICAyMDAsICAxOTcsICAxOTYsICAx
OTUsICAxOTQsICAxOTMsICAxOTIsICAxODksICAxODgsCisgICAgICAxODcsICAxODYsICAxODUs
ICAxODQsICAxODMsICAxODIsICAxODEsICAxODAsICAxNzksICAxNzgsCisgICAgICAxNzUsICAx
NjksICAxNjgsICAxNjcsICAxNjYsICAxNjUsICAxNjQsICAxNjEsICAxNjAsICAxNTksCisgICAg
ICAxNTgsICAxNTcsICAxNTYsICAxNTUsICAxNTQsICAxNTMsICAxNTIsICAxNTEsICAxNTAsICAx
NDksCisgICAgICAxNDgsICAxNDcsICAxNDYsICAxNDUsICAxNDQsICAxNDMsICAxMzQsICAxMTgs
ICAxMTQsICAxMDksCisgICAgICAxMDIsICAgNzYsICAgNzEsICAgNjUsICAgNTksICAgNTQsICA0
NDIsICAgIDMsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Mgog
ICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzc0OV0gPQorc3Rh
dGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1s2NTZdID0KICAgICB7ICAgMCwKICAgICAg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwKQEAgLTY5NCw5NSArNjc5LDg1IEBAIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50
MTZfdCB5eV9jaGtbNzQ5XSAKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKLSAgICAgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAgNCwgICAxMiwKLSAg
ICAgICAxMiwgICAyOCwgICAyOCwgICAgMywgICAgNCwgICAgNSwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwgICAgNSwgICAgNSwKLQotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAg
ICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICA1LAotICAgICAgICA1LCAgICA1LCAgIDEzLCAgIDE3LCAgIDE5LCAgIDIwLCAgIDIwLCAgIDIw
LCAgIDIwLCAgIDIwLAotICAgICAgIDIwLCAgIDIwLCAgIDMzLCAgIDQyLCAgIDIxLCAgIDM0LCAg
IDM0LCAgIDE5LCAgIDE3LCAgIDIxLAotICAgICAgIDQyLCAgIDEzLCAgIDM1LCAgNDYzLCAgIDM1
LCAgIDQ0LCAgIDMzLCAgIDQyLCAgIDM1LCAgIDQ0LAotICAgICAgIDIxLCAgIDIyLCAgNDU1LCAg
IDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLAotICAgICAgIDIzLCAgIDU1
LCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIyLAotICAgICAg
IDI2LCAgIDM2LCAgIDUxLCAgNDU0LCAgIDIyLCAgIDM4LCAgIDUxLCAgIDM4LCAgIDIzLCAgIDM3
LAotCi0gICAgICA0NTMsICAgMzYsICAgMjIsICAgMzcsICAgMzYsICAgMzksICAgMzgsICAgMjYs
ICAgMzcsICAgMjYsCi0gICAgICAgMjYsICAgMjMsICAgNDEsICAgMzksICAgMzcsICAgMzksICAg
NDUsICAgNDcsICAgMzksICAgMjIsCi0gICAgICAgNDEsICAgNTUsICAxMzUsICAxNDYsICAgMzks
ICAxNDYsICAgNDksICAgNTAsICAxMTIsICAgNDUsCi0gICAgICAgNTAsICAgNDEsICAgNDcsICAg
NDksICAgNDksICAgNDcsICAgNTIsICAxMzUsICAgNTAsICAxMjIsCi0gICAgICAgNTIsICAxMTIs
ICA0NTIsICAgNDksICAgNDksICAgNTAsICAgNDksICAxMjIsICA0NTEsICAgNTIsCi0gICAgICAg
NzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzgsICAgNzgsICAgNzgs
Ci0gICAgICAgNzgsICAgNzgsICAgNzgsICAgNzgsICA0NTAsICAxMjAsICAgNzQsICAxNDIsICAx
MjAsICAxMjAsCi0gICAgICAxNjgsICAxNjgsICAxMjAsICAgNzgsICAxMjAsICAxNDIsICAxOTQs
ICAxOTQsICAxOTQsICAgNzQsCi0gICAgICAyMTgsICAyMTgsICAyMTgsICA0MTcsICA0MTcsICAg
NzksICAgNzgsICAgNzksICAgNzksICAgNzksCi0gICAgICAgNzksICAgNzksICAgNzksICAgNzks
ICAgODAsICA0NDgsICAgODAsICAgODAsICAgODAsICAgODAsCi0KLSAgICAgICA4MCwgICA4MCwg
ICA4MCwgICA3OSwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwKLSAgICAgIDE1
NiwgIDQ0NiwgICA4MCwgICA4MSwgIDQ0NSwgICA4MSwgICA3OSwgIDQ0NCwgICA4MSwgICA4MSwK
LSAgICAgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MCwgICA4MywgIDIxNCwgICA4
MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgIDIxNCwgIDIyOSwg
IDIyOSwgIDIyOSwgIDQ0MywKLSAgICAgIDE1MiwgIDQ0MiwgIDE1MiwgIDQ0MCwgICA4MywgIDE1
MiwgIDE1MiwgIDE1MiwgIDE1MiwgIDE1MiwKLSAgICAgIDE1MiwgIDE1MiwgIDIzNywgIDIzNywg
IDIzNywgIDQzOSwgIDQzOCwgICA4MywgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1
NCwgIDE1NCwgIDE1NCwgIDI0NSwgIDI0NSwgIDI0NSwgIDQzNywgIDQzNiwKLSAgICAgIDE1NSwg
IDQzNSwgIDE1NSwgIDQzNCwgIDE1NCwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwKLSAg
ICAgIDE1NSwgIDE1NSwgIDI0OSwgIDI0OSwgIDI0OSwgIDQzMywgIDQzMiwgIDE1NCwgIDE1Nywg
IDE1NywKLSAgICAgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDIyMiwgIDIyMiwgIDIy
MiwgIDIyMiwgIDIyMiwKLQotICAgICAgMjIyLCAgMjIyLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIz
LCAgMjIzLCAgMjIzLCAgMjIzLCAgMjI0LAotICAgICAgMjI0LCAgMjI0LCAgMjI0LCAgMjI0LCAg
MjI0LCAgMjI0LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMjI1
LCAgMjU1LCAgMjU1LCAgMjU1LCAgMzg4LCAgMzg4LCAgMzg4LCAgNDMwLAotICAgICAgNDI5LCAg
NDI4LCAgNDI3LCAgNDI2LCAgNDI1LCAgNDI0LCAgNDIzLCAgNDIyLCAgNDIxLCAgMzg4LAotICAg
ICAgNDIwLCAgMzg4LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDYwLCAgNDYwLCAgNDYxLCAg
NDYxLAotICAgICAgNDYyLCAgNDE5LCAgNDYyLCAgNDYyLCAgNDE4LCAgNDE2LCAgNDA3LCAgNDA2
LCAgNDA1LCAgNDA0LAotICAgICAgNDAzLCAgNDAyLCAgNDAwLCAgMzk5LCAgMzk4LCAgMzk1LCAg
Mzk0LCAgMzkyLCAgMzg5LCAgMzg3LAotICAgICAgMzg2LCAgMzg1LCAgMzgzLCAgMzgyLCAgMzgx
LCAgMzc4LCAgMzc3LCAgMzc2LCAgMzc1LCAgMzc0LAotICAgICAgMzczLCAgMzcyLCAgMzcxLCAg
MzY1LCAgMzYyLCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LAotICAgICAgMzUzLCAgMzUx
LCAgMzUwLCAgMzQ5LCAgMzQ4LCAgMzQ2LCAgMzQ1LCAgMzQzLCAgMzQxLCAgMzQwLAotCi0gICAg
ICAzMzksICAzMzgsICAzMzcsICAzMzYsICAzMzUsICAzMzQsICAzMzIsICAzMzEsICAzMzAsICAz
MjksCi0gICAgICAzMjgsICAzMjcsICAzMjYsICAzMjUsICAzMjQsICAzMjAsICAzMTksICAzMTYs
ICAzMDUsICAzMDEsCi0gICAgICAzMDAsICAyOTksICAyOTgsICAyOTEsICAyOTAsICAyODksICAy
ODQsICAyODMsICAyODIsICAyODEsCi0gICAgICAyODAsICAyNzksICAyNzYsICAyNzUsICAyNzQs
ICAyNzMsICAyNzIsICAyNzEsICAyNzAsICAyNjksCi0gICAgICAyNjgsICAyNjcsICAyNjYsICAy
NjUsICAyNjQsICAyNjMsICAyNjIsICAyNjEsICAyNTQsICAyNTMsCi0gICAgICAyNTIsICAyNTEs
ICAyNTAsICAyNDgsICAyNDQsICAyNDIsICAyNDEsICAyNDAsICAyMzYsICAyMzUsCi0gICAgICAy
MzQsICAyMzMsICAyMzIsICAyMzEsICAyMjgsICAyMjYsICAyMjEsICAyMjAsICAyMTksICAyMTcs
Ci0gICAgICAyMTYsICAyMTUsICAyMTMsICAyMTIsICAyMTEsICAyMTAsICAyMDksICAyMDgsICAy
MDcsICAyMDYsCi0gICAgICAyMDUsICAyMDQsICAyMDMsICAyMDIsICAyMDEsICAyMDAsICAxOTks
ICAxOTgsICAxOTcsICAxOTYsCi0gICAgICAxOTUsICAxOTMsICAxOTIsICAxOTEsICAxOTAsICAx
ODksICAxODgsICAxODcsICAxODYsICAxODUsCi0KLSAgICAgIDE4NCwgIDE4MywgIDE4MiwgIDE4
MSwgIDE3OSwgIDE3OCwgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwKLSAgICAgIDE3MywgIDE3Miwg
IDE3MSwgIDE3MCwgIDE2OSwgIDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2MywKLSAgICAgIDE2
MiwgIDE0NywgIDE0NSwgIDE0NCwgIDE0MywgIDE0MSwgIDE0MCwgIDEzOSwgIDEzOCwgIDEzNywK
LSAgICAgIDEzNiwgIDEzNCwgIDEzMywgIDEzMiwgIDEzMSwgIDEzMCwgIDEyOSwgIDEyOCwgIDEy
NywgIDEyNiwKLSAgICAgIDEyNSwgIDEyNCwgIDEyMywgIDEyMSwgIDExOCwgIDExNywgIDExNiwg
IDExNSwgIDExNCwgIDExMywKLSAgICAgIDExMSwgIDExMCwgIDEwOSwgIDEwOCwgIDEwNywgIDEw
NiwgIDEwNSwgIDEwNCwgIDEwMywgIDEwMiwKLSAgICAgIDEwMSwgIDEwMCwgICA5OSwgICA5OCwg
ICA5NywgICA5NiwgICA5NSwgICA5MSwgICA4NywgICA2MCwKLSAgICAgICA1MywgICA0OCwgICA0
NiwgICA0MywgICA0MCwgICAyNywgICAyNCwgICAxNiwgICAxMSwgICAgNywKLSAgICAgIDQ1OCwg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwKLSAg
ICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwKLQotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4CisgICAgICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDgsICAgIDgsICAgIDksCisgICAgICAg
MTMsICAgMTUsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMjQs
CisgICAgICAgMjQsICAgMzAsICAgMzAsICAgNDAsICAgMTUsICAgMTMsICAgNDcsICAgNDAsICAg
IDksICAgMTgsCisgICAgICAgNDcsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgs
ICAgMTgsICAgMTksICAgMjksCisKKyAgICAgICAxOSwgICAxOSwgICAxOSwgICAxOSwgICAxOSwg
ICAxOSwgICAxOSwgICAxOCwgICAyMiwgICAzMSwKKyAgICAgICA0MSwgICAzMSwgICAxOCwgICAy
OSwgIDQ0NCwgICAzMSwgICAxOSwgIDEzMywgIDQzOSwgIDEzMywKKyAgICAgICAxOCwgICAzMiwg
ICAzNCwgICA0MSwgICAzNCwgICAyMiwgICAzMywgICAyMiwgICAyMiwgICAxOSwKKyAgICAgICAz
MywgICAzMiwgICAzNSwgICAzNCwgICAzMiwgICAzMywgICAzNywgICAxOCwgICA1MSwgICAzOCwK
KyAgICAgICAzNSwgICAzMywgICAzNSwgICA0MywgICAzNywgICAzNSwgICAzOCwgICA5OSwgIDQz
OCwgICA0NSwKKyAgICAgICA0OCwgICAzNSwgIDQzNywgICAzOCwgICA0OCwgICAzNywgICA0NSwg
ICA0NSwgICA0MywgICA0NiwKKyAgICAgICA5OSwgICA0MywgICA0NiwgICA0OCwgIDEwOSwgIDEy
OSwgICA0NSwgICA0NSwgIDE5OCwgICA0NSwKKyAgICAgICA0NiwgIDQzNiwgIDEwOSwgIDEyOSwg
IDE1MiwgIDE1MiwgIDE5OCwgICA0NiwgICA1MSwgICA2NCwKKyAgICAgICA2NCwgICA2NCwgICA2
NCwgICA2NCwgICA2NCwgICA2NCwgICA2NiwgICA2NiwgICA2NiwgICA2NiwKKyAgICAgICA2Niwg
ICA2NiwgICA2NiwgIDQzNSwgIDEwNywgICA2NCwgIDEyMiwgIDEwNywgIDEwNywgIDQwMSwKKwor
ICAgICAgNDAxLCAgMTA3LCAgIDY2LCAgMTA3LCAgMTc4LCAgMTc4LCAgMTc4LCAgNDM0LCAgIDY0
LCAgNDMyLAorICAgICAgNDMwLCAgMTIyLCAgNDI5LCAgNDI4LCAgIDY3LCAgIDY2LCAgIDY3LCAg
IDY3LCAgIDY3LCAgIDY3LAorICAgICAgIDY3LCAgIDY3LCAgIDY3LCAgIDY4LCAgNDI3LCAgIDY4
LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LAorICAgICAgIDY4LCAgIDY4LCAgIDY3LCAgMTQwLCAg
MTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLAorICAgICAgNDI2LCAgIDY4LCAgIDY5
LCAgNDI0LCAgIDY5LCAgIDY3LCAgNDIzLCAgIDY5LCAgIDY5LCAgIDY5LAorICAgICAgIDY5LCAg
IDY5LCAgIDY5LCAgIDY5LCAgIDY4LCAgMTM3LCAgNDIyLCAgMTM3LCAgNDIxLCAgNDIwLAorICAg
ICAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM4LCAgMTM4LCAg
MTM4LAorICAgICAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LCAgMjAyLCAgMjAyLCAgMjAyLCAgNDE5
LCAgNDE4LCAgMTM5LAorICAgICAgNDE3LCAgMTM5LCAgNDE2LCAgMTM4LCAgMTM5LCAgMTM5LCAg
MTM5LCAgMTM5LCAgMTM5LCAgMTM5LAorICAgICAgMTM5LCAgMjEzLCAgMjEzLCAgMjEzLCAgNDE0
LCAgNDEzLCAgMTM4LCAgMTQxLCAgMTQxLCAgMTQxLAorCisgICAgICAxNDEsICAxNDEsICAxNDEs
ICAxNDEsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsCisgICAgICAyMDYsICAy
MDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDgsICAyMDgsCisgICAg
ICAyMDgsICAyMDgsICAyMDgsICAyMDgsICAyMDgsICAyMDksICAyMDksICAyMDksICAyMDksICAy
MDksCisgICAgICAyMDksICAyMDksICAyMjEsICAyMjEsICAyMjEsICAyMjksICAyMjksICAyMjks
ICAyMzMsICAyMzMsCisgICAgICAyMzMsICAyMzksICAyMzksICAyMzksICAzNzIsICAzNzIsICAz
NzIsICA0MTIsICA0MTEsICA0MTAsCisgICAgICA0MDksICA0MDgsICA0MDcsICA0MDYsICA0MDUs
ICA0MDQsICA0MDMsICAzNzIsICA0MDIsICAzNzIsCisgICAgICA0NDMsICA0NDMsICA0MDAsICAz
OTEsICAzOTAsICAzODksICAzODgsICAzODcsICAzODYsICAzODQsCisgICAgICAzODMsICAzODIs
ICAzNzksICAzNzgsICAzNzYsICAzNzMsICAzNzEsICAzNzAsICAzNjksICAzNjcsCisgICAgICAz
NjYsICAzNjUsICAzNjIsICAzNjEsICAzNjAsICAzNTksICAzNTgsICAzNTcsICAzNTYsICAzNTUs
CisgICAgICAzNDksICAzNDYsICAzNDMsICAzNDIsICAzNDEsICAzNDAsICAzMzksICAzMzcsICAz
MzUsICAzMzQsCisKKyAgICAgIDMzMywgIDMzMiwgIDMzMCwgIDMyOSwgIDMyNywgIDMyNSwgIDMy
NCwgIDMyMywgIDMyMiwgIDMyMSwKKyAgICAgIDMyMCwgIDMxOSwgIDMxOCwgIDMxNiwgIDMxNSwg
IDMxNCwgIDMxMywgIDMxMiwgIDMxMSwgIDMxMCwKKyAgICAgIDMwOSwgIDMwOCwgIDMwNCwgIDMw
MywgIDMwMCwgIDI4OSwgIDI4NSwgIDI4NCwgIDI4MywgIDI4MiwKKyAgICAgIDI3NSwgIDI3NCwg
IDI3MywgIDI2OCwgIDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2MCwKKyAgICAgIDI1
OSwgIDI1OCwgIDI1NywgIDI1NiwgIDI1NSwgIDI1NCwgIDI1MywgIDI1MiwgIDI1MSwgIDI1MCwK
KyAgICAgIDI0OSwgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDIzOCwgIDIzNywgIDIzNiwgIDIz
NSwgIDIzNCwKKyAgICAgIDIzMiwgIDIyOCwgIDIyNiwgIDIyNSwgIDIyNCwgIDIyMCwgIDIxOSwg
IDIxOCwgIDIxNywgIDIxNiwKKyAgICAgIDIxNSwgIDIxMiwgIDIxMCwgIDIwNSwgIDIwNCwgIDIw
MywgIDIwMSwgIDIwMCwgIDE5OSwgIDE5NywKKyAgICAgIDE5NiwgIDE5NSwgIDE5NCwgIDE5Mywg
IDE5MiwgIDE5MSwgIDE5MCwgIDE4OSwgIDE4OCwgIDE4NywKKyAgICAgIDE4NiwgIDE4NSwgIDE4
NCwgIDE4MywgIDE4MiwgIDE4MSwgIDE4MCwgIDE3OSwgIDE3NywgIDE3NiwKKworICAgICAgMTc1
LCAgMTc0LCAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LCAgMTY3LCAgMTY2LAor
ICAgICAgMTY1LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTU4LCAgMTU3LCAgMTU2
LCAgMTU1LAorICAgICAgMTU0LCAgMTUzLCAgMTUxLCAgMTUwLCAgMTQ5LCAgMTQ4LCAgMTQ3LCAg
MTQ2LCAgMTM0LCAgMTMyLAorICAgICAgMTMxLCAgMTMwLCAgMTI4LCAgMTI3LCAgMTI2LCAgMTI1
LCAgMTI0LCAgMTIzLCAgMTIxLCAgMTIwLAorICAgICAgMTE5LCAgMTE4LCAgMTE3LCAgMTE2LCAg
MTE1LCAgMTE0LCAgMTEzLCAgMTEyLCAgMTExLCAgMTEwLAorICAgICAgMTA4LCAgMTA1LCAgMTA0
LCAgMTAzLCAgMTAyLCAgMTAxLCAgMTAwLCAgIDk4LCAgIDk3LCAgIDk2LAorICAgICAgIDk1LCAg
IDk0LCAgIDkzLCAgIDkyLCAgIDkxLCAgIDkwLCAgIDg5LCAgIDg4LCAgIDg3LCAgIDg2LAorICAg
ICAgIDg1LCAgIDg0LCAgIDgzLCAgIDgyLCAgIDc4LCAgIDc0LCAgIDQ5LCAgIDQ0LCAgIDQyLCAg
IDM5LAorICAgICAgIDM2LCAgIDIzLCAgIDIwLCAgIDE3LCAgIDEyLCAgICA3LCAgICAzLCAgNDQy
LCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAg
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIKICAgICB9IDsK
IAogLyogVGFibGUgb2YgYm9vbGVhbnMsIHRydWUgaWYgcnVsZSBjb3VsZCBtYXRjaCBlb2wuICov
Ci1zdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfcnVsZV9jYW5fbWF0Y2hfZW9sWzE1Nl0g
PQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X3J1bGVfY2FuX21hdGNoX2VvbFsxNDhd
ID0KICAgICB7ICAgMCwKLTAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIAorMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMSwgMCwgMCwgICAgIH07CisgICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgICAgIH07CiAK
IC8qIFRoZSBpbnRlbnQgYmVoaW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB0aGF0IGl0J2xsIGNhdGNo
CiAgKiBhbnkgdXNlcyBvZiBSRUpFQ1Qgd2hpY2ggZmxleCBtaXNzZWQuCkBAIC04MTcsNyArNzky
LDEwIEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEg
d2FybmluZyhkaXNhYmxlIDogNDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9O
IHl5bHZhbC0+bGV4LmxpbmUgPSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9maWxlID0g
eXlsbG9jLT5sYXN0X2ZpbGUgPSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9
IHl5bGxvYy0+bGFzdF9saW5lID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCBy
ZXN1bHQsIG1heF9zaXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3Np
emUsIHl5c2Nhbm5lcik7CiAKQEAgLTgyNiw4ICs4MDQsNiBAQCBzdGF0aWMgaW50IGNoZWNrX3R5
cGUoeXlzY2FuX3QgeXlzY2FubmVyCiBzdGF0aWMgaW50IHJlc2VydmVkX3dvcmQoeXlzY2FuX3Qg
eXlzY2FubmVyKTsKIAogI2RlZmluZSBJTklUSUFMIDAKLSNkZWZpbmUgQ09NTUVOVCAxCi0jZGVm
aW5lIEZJRUxEUyAyCiAKICNkZWZpbmUgWVlfRVhUUkFfVFlQRSBUUGFyc2VDb250ZXh0KgogCkBA
IC04NjUsNiArODQxLDggQEAgc3RydWN0IHl5Z3V0c190CiAKICAgICBZWVNUWVBFICogeXlsdmFs
X3I7CiAKKyAgICBZWUxUWVBFICogeXlsbG9jX3I7CisKICAgICB9OyAvKiBlbmQgc3RydWN0IHl5
Z3V0c190ICovCiAKIHN0YXRpYyBpbnQgeXlfaW5pdF9nbG9iYWxzICh5eXNjYW5fdCB5eXNjYW5u
ZXIgKTsKQEAgLTg3Myw2ICs4NTEsOCBAQCBzdGF0aWMgaW50IHl5X2luaXRfZ2xvYmFscyAoeXlz
Y2FuX3QgeXlzCiAgICAgICogZnJvbSBiaXNvbiBvdXRwdXQgaW4gc2VjdGlvbiAxLiovCiAgICAg
IyAgICBkZWZpbmUgeXlsdmFsIHl5Zy0+eXlsdmFsX3IKICAgICAKKyAgICAjICAgIGRlZmluZSB5
eWxsb2MgeXlnLT55eWxsb2NfcgorICAgIAogaW50IHl5bGV4X2luaXQgKHl5c2Nhbl90KiBzY2Fu
bmVyKTsKIAogaW50IHl5bGV4X2luaXRfZXh0cmEgKFlZX0VYVFJBX1RZUEUgdXNlcl9kZWZpbmVk
LHl5c2Nhbl90KiBzY2FubmVyKTsKQEAgLTkxMCw2ICs4OTAsMTAgQEAgWVlTVFlQRSAqIHl5Z2V0
X2x2YWwgKHl5c2Nhbl90IHl5c2Nhbm5lcgogCiB2b2lkIHl5c2V0X2x2YWwgKFlZU1RZUEUgKiB5
eWx2YWxfcGFyYW0gLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisgICAgICAgWVlMVFlQRSAqeXln
ZXRfbGxvYyAoeXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAgCisgICAgICAgIHZvaWQgeXlzZXRf
bGxvYyAoWVlMVFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAg
CiAvKiBNYWNyb3MgYWZ0ZXIgdGhpcyBwb2ludCBjYW4gYWxsIGJlIG92ZXJyaWRkZW4gYnkgdXNl
ciBkZWZpbml0aW9ucyBpbgogICogc2VjdGlvbiAxLgogICovCkBAIC05NDAsMTIgKzkyNCw2IEBA
IHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCiAjZW5kaWYKIAotICAg
IHN0YXRpYyB2b2lkIHl5X3B1c2hfc3RhdGUgKGludCBuZXdfc3RhdGUgLHl5c2Nhbl90IHl5c2Nh
bm5lcik7Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgeXlfcG9wX3N0YXRlICh5eXNjYW5fdCB5eXNj
YW5uZXIgKTsKLSAgICAKLSAgICBzdGF0aWMgaW50IHl5X3RvcF9zdGF0ZSAoeXlzY2FuX3QgeXlz
Y2FubmVyICk7Ci0gICAgCiAvKiBBbW91bnQgb2Ygc3R1ZmYgdG8gc2x1cnAgdXAgd2l0aCBlYWNo
IHJlYWQuICovCiAjaWZuZGVmIFlZX1JFQURfQlVGX1NJWkUKICNkZWZpbmUgWVlfUkVBRF9CVUZf
U0laRSA4MTkyCkBAIC0xMDIyLDEwICsxMDAwLDEwIEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nh
bl90IHl5c2Nhbm5lciApOwogI2RlZmluZSBZWV9ERUNMX0lTX09VUlMgMQogCiBleHRlcm4gaW50
IHl5bGV4IFwKLSAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFtICx5eXNjYW5f
dCB5eXNjYW5uZXIpOworICAgICAgICAgICAgICAgKFlZU1RZUEUgKiB5eWx2YWxfcGFyYW0sWVlM
VFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyKTsKIAogI2RlZmluZSBZWV9E
RUNMIGludCB5eWxleCBcCi0gICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSAs
IHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3Bh
cmFtLCBZWUxUWVBFICogeXlsbG9jX3BhcmFtICwgeXlzY2FuX3QgeXlzY2FubmVyKQogI2VuZGlm
IC8qICFZWV9ERUNMICovCiAKIC8qIENvZGUgZXhlY3V0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBl
YWNoIHJ1bGUsIGFmdGVyIHl5dGV4dCBhbmQgeXlsZW5nCkBAIC0xMDUyLDEyICsxMDMwLDEwIEBA
IFlZX0RFQ0wKIAlyZWdpc3RlciBpbnQgeXlfYWN0OwogICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5
ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKIAotICAgIFRQYXJzZUNvbnRleHQqIGNv
bnRleHQgPSB5eWV4dHJhOwotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMgKi8KLQogICAg
IHl5bHZhbCA9IHl5bHZhbF9wYXJhbTsKIAorICAgIHl5bGxvYyA9IHl5bGxvY19wYXJhbTsKKwog
CWlmICggIXl5Zy0+eXlfaW5pdCApCiAJCXsKIAkJeXlnLT55eV9pbml0ID0gMTsKQEAgLTExMDks
MTMgKzEwODUsMTMgQEAgeXlfbWF0Y2g6CiAJCQl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1
cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQkJewogCQkJCXl5
X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCQkJaWYg
KCB5eV9jdXJyZW50X3N0YXRlID49IDQ1OSApCisJCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49
IDQ0MyApCiAJCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJCX0K
IAkJCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSAr
ICh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJKyt5eV9jcDsKIAkJCX0KLQkJd2hpbGUgKCB5eV9j
dXJyZW50X3N0YXRlICE9IDQ1OCApOworCQl3aGlsZSAoIHl5X2N1cnJlbnRfc3RhdGUgIT0gNDQy
ICk7CiAJCXl5X2NwID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19jcG9zOwogCQl5eV9jdXJyZW50
X3N0YXRlID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19zdGF0ZTsKIApAQCAtMTE0OSwxOTggKzEx
MjUsMTk5IEBAIGRvX2FjdGlvbjoJLyogVGhpcyBsYWJlbCBpcyB1c2VkIG9ubHkgdG8KIAogY2Fz
ZSAxOgogWVlfUlVMRV9TRVRVUAotOworeyByZXR1cm4gSU5WQVJJQU5UOyB9CiAJWVlfQlJFQUsK
LS8qIE11bHRpLWxpbmUgY29tbWVudHMgKi8KIGNhc2UgMjoKIFlZX1JVTEVfU0VUVVAKLXsgeXlf
cHVzaF9zdGF0ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9Cit7IHJldHVybiBISUdIX1BSRUNJU0lP
TjsgfQogCVlZX0JSRUFLCiBjYXNlIDM6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBNRURJVU1f
UFJFQ0lTSU9OOyB9CisJWVlfQlJFQUsKIGNhc2UgNDoKLS8qIHJ1bGUgNCBjYW4gbWF0Y2ggZW9s
ICovCiBZWV9SVUxFX1NFVFVQCi07Cit7IHJldHVybiBMT1dfUFJFQ0lTSU9OOyB9CiAJWVlfQlJF
QUsKIGNhc2UgNToKIFlZX1JVTEVfU0VUVVAKLXsgeXlfcG9wX3N0YXRlKHl5c2Nhbm5lcik7IH0K
K3sgcmV0dXJuIFBSRUNJU0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDY6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybihJTlZBUklBTlQpOyB9Cit7IHJldHVybiBBVFRSSUJVVEU7IH0KIAlZWV9CUkVB
SwogY2FzZSA3OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Cit7
IHJldHVybiBDT05TVF9RVUFMOyB9CiAJWVlfQlJFQUsKIGNhc2UgODoKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuKE1FRElVTV9QUkVDSVNJT04pOyB9Cit7IHJldHVybiBVTklGT1JNOyB9CiAJWVlf
QlJFQUsKIGNhc2UgOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKExPV19QUkVDSVNJT04pOyB9
Cit7IHJldHVybiBWQVJZSU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybihQUkVDSVNJT04pOyB9Cit7IHJldHVybiBCUkVBSzsgfQogCVlZX0JSRUFLCiBj
YXNlIDExOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQVRUUklCVVRFKTsgfQoreyByZXR1cm4g
Q09OVElOVUU7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJu
KENPTlNUX1FVQUwpOyB9Cit7IHJldHVybiBETzsgfQogCVlZX0JSRUFLCiBjYXNlIDEzOgogWVlf
UlVMRV9TRVRVUAoteyByZXR1cm4oVU5JRk9STSk7IH0KK3sgcmV0dXJuIEZPUjsgfQogCVlZX0JS
RUFLCiBjYXNlIDE0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oVkFSWUlORyk7IH0KK3sgcmV0
dXJuIFdISUxFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTU6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
bihCUkVBSyk7IH0KK3sgcmV0dXJuIElGOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTY6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybihDT05USU5VRSk7IH0KK3sgcmV0dXJuIEVMU0U7IH0KIAlZWV9CUkVB
SwogY2FzZSAxNzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKERPKTsgfQoreyByZXR1cm4gSU5f
UVVBTDsgfQogCVlZX0JSRUFLCiBjYXNlIDE4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oRk9S
KTsgfQoreyByZXR1cm4gT1VUX1FVQUw7IH0KIAlZWV9CUkVBSwogY2FzZSAxOToKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKFdISUxFKTsgfQoreyByZXR1cm4gSU5PVVRfUVVBTDsgfQogCVlZX0JS
RUFLCiBjYXNlIDIwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSUYpOyB9Cit7IHJldHVybiBG
TE9BVF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjE6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
bihFTFNFKTsgfQoreyByZXR1cm4gSU5UX1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAyMjoKIFlZ
X1JVTEVfU0VUVVAKLXsgcmV0dXJuKElOX1FVQUwpOyB9Cit7IHJldHVybiBWT0lEX1RZUEU7IH0K
IAlZWV9CUkVBSwogY2FzZSAyMzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKE9VVF9RVUFMKTsg
fQoreyByZXR1cm4gQk9PTF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjQ6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybihJTk9VVF9RVUFMKTsgfQoreyB5eWx2YWwtPmxleC5iID0gdHJ1ZTsgIHJl
dHVybiBCT09MQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAyNToKIFlZX1JVTEVfU0VUVVAK
LXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEZMT0FUX1RZUEUpOyB9Cit7
IHl5bHZhbC0+bGV4LmIgPSBmYWxzZTsgcmV0dXJuIEJPT0xDT05TVEFOVDsgfQogCVlZX0JSRUFL
CiBjYXNlIDI2OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVl
OyByZXR1cm4oSU5UX1RZUEUpOyB9Cit7IHJldHVybiBESVNDQVJEOyB9CiAJWVlfQlJFQUsKIGNh
c2UgMjc6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJl
dHVybihWT0lEX1RZUEUpOyB9Cit7IHJldHVybiBSRVRVUk47IH0KIAlZWV9CUkVBSwogY2FzZSAy
ODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJu
KEJPT0xfVFlQRSk7IH0KK3sgcmV0dXJuIE1BVFJJWDI7IH0KIAlZWV9CUkVBSwogY2FzZSAyOToK
IFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4oQk9PTENPTlNU
QU5UKTsgfQoreyByZXR1cm4gTUFUUklYMzsgfQogCVlZX0JSRUFLCiBjYXNlIDMwOgogWVlfUlVM
RV9TRVRVUAoteyB5eWx2YWwtPmxleC5iID0gZmFsc2U7IHJldHVybihCT09MQ09OU1RBTlQpOyB9
Cit7IHJldHVybiBNQVRSSVg0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzE6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybihESVNDQVJEKTsgfQoreyByZXR1cm4gVkVDMjsgfQogCVlZX0JSRUFLCiBjYXNl
IDMyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUkVUVVJOKTsgfQoreyByZXR1cm4gVkVDMzsg
fQogCVlZX0JSRUFLCiBjYXNlIDMzOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRl
clR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMik7IH0KK3sgcmV0dXJuIFZFQzQ7IH0KIAlZWV9C
UkVBSwogY2FzZSAzNDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
dHJ1ZTsgcmV0dXJuKE1BVFJJWDMpOyB9Cit7IHJldHVybiBJVkVDMjsgfQogCVlZX0JSRUFLCiBj
YXNlIDM1OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyBy
ZXR1cm4oTUFUUklYNCk7IH0KK3sgcmV0dXJuIElWRUMzOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzY6
CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAo
VkVDMik7IH0KK3sgcmV0dXJuIElWRUM0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzc6CiBZWV9SVUxF
X1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDMyk7IH0K
K3sgcmV0dXJuIEJWRUMyOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzg6CiBZWV9SVUxFX1NFVFVQCi17
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KK3sgcmV0dXJu
IEJWRUMzOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzk6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzIpOyB9Cit7IHJldHVybiBCVkVDNDsg
fQogCVlZX0JSRUFLCiBjYXNlIDQwOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRl
clR5cGUgPSB0cnVlOyByZXR1cm4gKElWRUMzKTsgfQoreyByZXR1cm4gU0FNUExFUjJEOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgNDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlw
ZSA9IHRydWU7IHJldHVybiAoSVZFQzQpOyB9Cit7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQogCVlZ
X0JSRUFLCiBjYXNlIDQyOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4gKEJWRUMyKTsgfQoreyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7
IH0KIAlZWV9CUkVBSwogY2FzZSA0MzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0
ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDMyk7IH0KK3sgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7
IH0KIAlZWV9CUkVBSwogY2FzZSA0NDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0
ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KK3sgcmV0dXJuIFNUUlVDVDsgfQogCVlZ
X0JSRUFLCiBjYXNlIDQ1OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nh
bm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NjoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJDVUJFOyB9Cit7IHJldHVybiByZXNl
cnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NzoKIFlZX1JVTEVfU0VU
VVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJfRVhURVJO
QUxfT0VTOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVB
SwogY2FzZSA0ODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1
ZTsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KK3sgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2Fu
bmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDQ5OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5s
ZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oU1RSVUNUKTsgfQoreyByZXR1cm4gcmVzZXJ2ZWRf
d29yZCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNTA6CiBZWV9SVUxFX1NFVFVQCkBA
IC0xNTE2LDI2NiArMTQ5MywyMjggQEAgWVlfUlVMRV9TRVRVUAogCVlZX0JSRUFLCiBjYXNlIDkz
OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7
CisgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAKKyAgIHJl
dHVybiBjaGVja190eXBlKHl5c2Nhbm5lcik7Cit9CiAJWVlfQlJFQUsKIGNhc2UgOTQ6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KK3sgeXlsdmFs
LT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4g
SU5UQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5NToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0
dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreyB5eWx2YWwtPmxleC5pID0gc3RhdGlj
X2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05TVEFOVDsgfQog
CVlZX0JSRUFLCiBjYXNlIDk2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29y
ZCh5eXNjYW5uZXIpOyB9Cit7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRv
bCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
OTc6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0K
K3sgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsg
cmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5ODoKIFlZX1JVTEVfU0VU
VVAKLXsKLSAgIHl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5nKHl5dGV4dCk7IAot
ICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKLX0KK3sgeXlsdmFsLT5sZXguZiA9IHN0
YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7
IH0KIAlZWV9CUkVBSwogY2FzZSA5OToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguaSA9
IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5UQ09OU1RB
TlQpOyB9Cit7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0
ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAwOgogWVlf
UlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0
ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIEFERF9BU1NJR047
IH0KIAlZWV9CUkVBSwogY2FzZSAxMDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmVycm9y
KHl5bGluZW5vLCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+cmVj
b3ZlcigpOyByZXR1cm4gMDt9Cit7IHJldHVybiBTVUJfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNh
c2UgMTAyOgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50
PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sgcmV0dXJu
IE1VTF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDM6CiBZWV9SVUxFX1NFVFVQCi17IHl5
bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVy
bihGTE9BVENPTlNUQU5UKTsgfQoreyByZXR1cm4gRElWX0FTU0lHTjsgfQogCVlZX0JSRUFLCiBj
YXNlIDEwNDoKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZs
b2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Cit7IHJldHVy
biBNT0RfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA1OgogWVlfUlVMRV9TRVRVUAoteyB5
eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkpOyByZXR1
cm4oRkxPQVRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIExFRlRfQVNTSUdOOyB9CiAJWVlfQlJFQUsK
IGNhc2UgMTA2OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEFERF9BU1NJR04pOyB9Cit7IHJl
dHVybiBSSUdIVF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDc6CiBZWV9SVUxFX1NFVFVQ
Ci17ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KK3sgcmV0dXJuIEFORF9BU1NJR047IH0KIAlZWV9C
UkVBSwogY2FzZSAxMDg6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTVVMX0FTU0lHTik7IH0K
K3sgcmV0dXJuIFhPUl9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDk6CiBZWV9SVUxFX1NF
VFVQCi17ICByZXR1cm4oRElWX0FTU0lHTik7IH0KK3sgcmV0dXJuIE9SX0FTU0lHTjsgfQogCVlZ
X0JSRUFLCiBjYXNlIDExMDoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihNT0RfQVNTSUdOKTsg
fQoreyByZXR1cm4gSU5DX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTExOgogWVlfUlVMRV9TRVRV
UAoteyAgcmV0dXJuKExFRlRfQVNTSUdOKTsgfQoreyByZXR1cm4gREVDX09QOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMTEyOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFJJR0hUX0FTU0lHTik7IH0K
K3sgcmV0dXJuIEFORF9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExMzoKIFlZX1JVTEVfU0VUVVAK
LXsgIHJldHVybihBTkRfQVNTSUdOKTsgfQoreyByZXR1cm4gT1JfT1A7IH0KIAlZWV9CUkVBSwog
Y2FzZSAxMTQ6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oWE9SX0FTU0lHTik7IH0KK3sgcmV0
dXJuIFhPUl9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNToKIFlZX1JVTEVfU0VUVVAKLXsgIHJl
dHVybihPUl9BU1NJR04pOyB9Cit7IHJldHVybiBMRV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDEx
NjoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihJTkNfT1ApOyB9Cit7IHJldHVybiBHRV9PUDsg
fQogCVlZX0JSRUFLCiBjYXNlIDExNzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihERUNfT1Ap
OyB9Cit7IHJldHVybiBFUV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExODoKIFlZX1JVTEVfU0VU
VVAKLXsgIHJldHVybihBTkRfT1ApOyB9Cit7IHJldHVybiBORV9PUDsgfQogCVlZX0JSRUFLCiBj
YXNlIDExOToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihPUl9PUCk7IH0KK3sgcmV0dXJuIExF
RlRfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjA6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4o
WE9SX09QKTsgfQoreyByZXR1cm4gUklHSFRfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjE6CiBZ
WV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTEVfT1ApOyB9Cit7IHJldHVybiBTRU1JQ09MT047IH0K
IAlZWV9CUkVBSwogY2FzZSAxMjI6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oR0VfT1ApOyB9
Cit7IHJldHVybiBMRUZUX0JSQUNFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIzOgogWVlfUlVMRV9T
RVRVUAoteyAgcmV0dXJuKEVRX09QKTsgfQoreyByZXR1cm4gUklHSFRfQlJBQ0U7IH0KIAlZWV9C
UkVBSwogY2FzZSAxMjQ6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTkVfT1ApOyB9Cit7IHJl
dHVybiBDT01NQTsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNToKIFlZX1JVTEVfU0VUVVAKLXsgIHJl
dHVybihMRUZUX09QKTsgfQoreyByZXR1cm4gQ09MT047IH0KIAlZWV9CUkVBSwogY2FzZSAxMjY6
CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oUklHSFRfT1ApOyB9Cit7IHJldHVybiBFUVVBTDsg
fQogCVlZX0JSRUFLCiBjYXNlIDEyNzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0
ZXJUeXBlID0gZmFsc2U7IHJldHVybihTRU1JQ09MT04pOyB9Cit7IHJldHVybiBMRUZUX1BBUkVO
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI4OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJuKExFRlRfQlJBQ0UpOyB9Cit7IHJldHVybiBSSUdIVF9Q
QVJFTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEyOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJJ
R0hUX0JSQUNFKTsgfQoreyByZXR1cm4gTEVGVF9CUkFDS0VUOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
MTMwOgogWVlfUlVMRV9TRVRVUAoteyBpZiAoY29udGV4dC0+aW5UeXBlUGFyZW4pIGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Cit7IHJldHVybiBSSUdIVF9C
UkFDS0VUOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4o
Q09MT04pOyB9Cit7IHJldHVybiBET1Q7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzI6CiBZWV9SVUxF
X1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oRVFVQUwpOyB9
Cit7IHJldHVybiBCQU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMzOgogWVlfUlVMRV9TRVRVUAot
eyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgY29udGV4dC0+aW5UeXBlUGFyZW4gPSB0
cnVlOyByZXR1cm4oTEVGVF9QQVJFTik7IH0KK3sgcmV0dXJuIERBU0g7IH0KIAlZWV9CUkVBSwog
Y2FzZSAxMzQ6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmluVHlwZVBhcmVuID0gZmFsc2U7
IHJldHVybihSSUdIVF9QQVJFTik7IH0KK3sgcmV0dXJuIFRJTERFOyB9CiAJWVlfQlJFQUsKIGNh
c2UgMTM1OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oTEVGVF9CUkFDS0VUKTsgfQoreyByZXR1
cm4gUExVUzsgfQogCVlZX0JSRUFLCiBjYXNlIDEzNjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJu
KFJJR0hUX0JSQUNLRVQpOyB9Cit7IHJldHVybiBTVEFSOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM3
OgogWVlfUlVMRV9TRVRVUAoteyBCRUdJTihGSUVMRFMpOyAgcmV0dXJuKERPVCk7IH0KK3sgcmV0
dXJuIFNMQVNIOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1
cm4oQkFORyk7IH0KK3sgcmV0dXJuIFBFUkNFTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzk6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybihEQVNIKTsgfQoreyByZXR1cm4gTEVGVF9BTkdMRTsgfQog
CVlZX0JSRUFLCiBjYXNlIDE0MDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFRJTERFKTsgfQor
eyByZXR1cm4gUklHSFRfQU5HTEU7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDE6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybihQTFVTKTsgfQoreyByZXR1cm4gVkVSVElDQUxfQkFSOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMTQyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oU1RBUik7IH0KK3sgcmV0dXJu
IENBUkVUOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4o
U0xBU0gpOyB9Cit7IHJldHVybiBBTVBFUlNBTkQ7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDQ6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybihQRVJDRU5UKTsgfQoreyByZXR1cm4gUVVFU1RJT047IH0K
IAlZWV9CUkVBSwogY2FzZSAxNDU6CisvKiBydWxlIDE0NSBjYW4gbWF0Y2ggZW9sICovCiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybihMRUZUX0FOR0xFKTsgfQotCVlZX0JSRUFLCi1jYXNlIDE0NjoK
LVlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJJR0hUX0FOR0xFKTsgfQotCVlZX0JSRUFLCi1jYXNl
IDE0NzoKLVlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFZFUlRJQ0FMX0JBUik7IH0KLQlZWV9CUkVB
SwotY2FzZSAxNDg6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihDQVJFVCk7IH0KLQlZWV9CUkVB
SwotY2FzZSAxNDk6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihBTVBFUlNBTkQpOyB9Ci0JWVlf
QlJFQUsKLWNhc2UgMTUwOgotWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUVVFU1RJT04pOyB9Ci0J
WVlfQlJFQUsKLWNhc2UgMTUxOgotWVlfUlVMRV9TRVRVUAoteyAKLSAgICBCRUdJTihJTklUSUFM
KTsKLSAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAKLSAg
ICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwotfQotCVlZX0JSRUFLCi1jYXNlIDE1MjoKLVlZX1JV
TEVfU0VUVVAKLXt9Ci0JWVlfQlJFQUsKLWNhc2UgMTUzOgotLyogcnVsZSAxNTMgY2FuIG1hdGNo
IGVvbCAqLwotWVlfUlVMRV9TRVRVUAoteyAgfQoreyB9CiAJWVlfQlJFQUsKIGNhc2UgWVlfU1RB
VEVfRU9GKElOSVRJQUwpOgotY2FzZSBZWV9TVEFURV9FT0YoQ09NTUVOVCk6Ci1jYXNlIFlZX1NU
QVRFX0VPRihGSUVMRFMpOgoteyBjb250ZXh0LT5BZnRlckVPRiA9IHRydWU7IHl5dGVybWluYXRl
KCk7IH0KK3sgeXl0ZXJtaW5hdGUoKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE1NDoKK2Nhc2UgMTQ2
OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBj
aGFyIiwgeXl0ZXh0LCAiIik7IHJldHVybiAwOyB9Cit7IGFzc2VydChmYWxzZSk7IHJldHVybiAw
OyB9CiAJWVlfQlJFQUsKLWNhc2UgMTU1OgorY2FzZSAxNDc6CiBZWV9SVUxFX1NFVFVQCiBFQ0hP
OwogCVlZX0JSRUFLCkBAIC0yMDcxLDcgKzIwMTAsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0
X2J1ZmZlciAoeXlzY2FuX3QgCiAJCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3VycmVudF9z
dGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJCXsKIAkJCXl5X2N1cnJlbnRf
c3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCQlpZiAoIHl5X2N1cnJl
bnRfc3RhdGUgPj0gNDU5ICkKKwkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NDMgKQogCQkJ
CXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJfQogCQl5eV9jdXJyZW50
X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50
KSB5eV9jXTsKQEAgLTIxMDAsMTEgKzIwMzksMTEgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9i
dWZmZXIgKHl5c2Nhbl90IAogCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0
ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJewogCQl5eV9jdXJyZW50X3N0YXRl
ID0gKGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQlpZiAoIHl5X2N1cnJlbnRfc3Rh
dGUgPj0gNDU5ICkKKwkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ0MyApCiAJCQl5eV9jID0g
eXlfbWV0YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJfQogCXl5X2N1cnJlbnRfc3RhdGUgPSB5
eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwot
CXl5X2lzX2phbSA9ICh5eV9jdXJyZW50X3N0YXRlID09IDQ1OCk7CisJeXlfaXNfamFtID0gKHl5
X2N1cnJlbnRfc3RhdGUgPT0gNDQyKTsKIAogCXJldHVybiB5eV9pc19qYW0gPyAwIDogeXlfY3Vy
cmVudF9zdGF0ZTsKIH0KQEAgLTI1NDgsNDYgKzI0ODcsNiBAQCBZWV9CVUZGRVJfU1RBVEUgeXlf
c2Nhbl9ieXRlcyAgKHl5Y29uc3QgCiAJcmV0dXJuIGI7CiB9CiAKLSAgICBzdGF0aWMgdm9pZCB5
eV9wdXNoX3N0YXRlIChpbnQgIG5ld19zdGF0ZSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAg
ICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0J
aWYgKCB5eWctPnl5X3N0YXJ0X3N0YWNrX3B0ciA+PSB5eWctPnl5X3N0YXJ0X3N0YWNrX2RlcHRo
ICkKLQkJewotCQl5eV9zaXplX3QgbmV3X3NpemU7Ci0KLQkJeXlnLT55eV9zdGFydF9zdGFja19k
ZXB0aCArPSBZWV9TVEFSVF9TVEFDS19JTkNSOwotCQluZXdfc2l6ZSA9IHl5Zy0+eXlfc3RhcnRf
c3RhY2tfZGVwdGggKiBzaXplb2YoIGludCApOwotCi0JCWlmICggISB5eWctPnl5X3N0YXJ0X3N0
YWNrICkKLQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sgPSAoaW50ICopIHl5YWxsb2MobmV3X3NpemUg
LHl5c2Nhbm5lciApOwotCi0JCWVsc2UKLQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sgPSAoaW50ICop
IHl5cmVhbGxvYygodm9pZCAqKSB5eWctPnl5X3N0YXJ0X3N0YWNrLG5ld19zaXplICx5eXNjYW5u
ZXIgKTsKLQotCQlpZiAoICEgeXlnLT55eV9zdGFydF9zdGFjayApCi0JCQlZWV9GQVRBTF9FUlJP
UiggIm91dCBvZiBtZW1vcnkgZXhwYW5kaW5nIHN0YXJ0LWNvbmRpdGlvbiBzdGFjayIgKTsKLQkJ
fQotCi0JeXlnLT55eV9zdGFydF9zdGFja1t5eWctPnl5X3N0YXJ0X3N0YWNrX3B0cisrXSA9IFlZ
X1NUQVJUOwotCi0JQkVHSU4obmV3X3N0YXRlKTsKLX0KLQotICAgIHN0YXRpYyB2b2lkIHl5X3Bv
cF9zdGF0ZSAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5
eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0JaWYgKCAtLXl5Zy0+eXlfc3RhcnRf
c3RhY2tfcHRyIDwgMCApCi0JCVlZX0ZBVEFMX0VSUk9SKCAic3RhcnQtY29uZGl0aW9uIHN0YWNr
IHVuZGVyZmxvdyIgKTsKLQotCUJFR0lOKHl5Zy0+eXlfc3RhcnRfc3RhY2tbeXlnLT55eV9zdGFy
dF9zdGFja19wdHJdKTsKLX0KLQotICAgIHN0YXRpYyBpbnQgeXlfdG9wX3N0YXRlICAoeXlzY2Fu
X3QgeXlzY2FubmVyKQotewotICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXln
dXRzX3QqKXl5c2Nhbm5lcjsKLQlyZXR1cm4geXlnLT55eV9zdGFydF9zdGFja1t5eWctPnl5X3N0
YXJ0X3N0YWNrX3B0ciAtIDFdOwotfQotCiAjaWZuZGVmIFlZX0VYSVRfRkFJTFVSRQogI2RlZmlu
ZSBZWV9FWElUX0ZBSUxVUkUgMgogI2VuZGlmCkBAIC0yNzczLDYgKzI2NzIsMTggQEAgdm9pZCB5
eXNldF9sdmFsIChZWVNUWVBFICogIHl5bHZhbF9wYXJhbQogICAgIHl5bHZhbCA9IHl5bHZhbF9w
YXJhbTsKIH0KIAorWVlMVFlQRSAqeXlnZXRfbGxvYyAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKK3sK
KyAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7
CisgICAgcmV0dXJuIHl5bGxvYzsKK30KKyAgICAKK3ZvaWQgeXlzZXRfbGxvYyAoWVlMVFlQRSAq
ICB5eWxsb2NfcGFyYW0gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0IHl5Z3V0
c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAgIHl5bGxvYyA9IHl5
bGxvY19wYXJhbTsKK30KKyAgICAKIC8qIFVzZXItdmlzaWJsZSBBUEkgKi8KIAogLyogeXlsZXhf
aW5pdCBpcyBzcGVjaWFsIGJlY2F1c2UgaXQgY3JlYXRlcyB0aGUgc2Nhbm5lciBpdHNlbGYsIHNv
IGl0IGlzCkBAIC0yOTU0LDcgKzI4NjUsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIq
IGJ1ZiwgeXlfc2l6CiAgICAgeXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2Vu
OjpMQVNUID8gMCA6IHRva2VuLnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkK
ICAgICAgICAgbWVtY3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAgIHl5c2V0
X2xpbmVubyhFbmNvZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRp
b24ubGluZSkseXlzY2FubmVyKTsKKyAgICB5eXNldF9jb2x1bW4odG9rZW4ubG9jYXRpb24uZmls
ZSx5eXNjYW5uZXIpOworICAgIHl5c2V0X2xpbmVubyh0b2tlbi5sb2NhdGlvbi5saW5lLHl5c2Nh
bm5lcik7CiAKICAgICBpZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRBTF9FUlJP
UigiSW5wdXQgYnVmZmVyIG92ZXJmbG93Iik7CkBAIC0yOTY4LDEyICsyODgwLDEwIEBAIGludCBj
aGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIAogICAgIGludCB0b2tlbiA9IElE
RU5USUZJRVI7CiAgICAgVFN5bWJvbCogc3ltYm9sID0geXlleHRyYS0+c3ltYm9sVGFibGUuZmlu
ZCh5eXRleHQpOwotICAgIGlmICh5eWV4dHJhLT5sZXhBZnRlclR5cGUgPT0gZmFsc2UgJiYgc3lt
Ym9sICYmIHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7CisgICAgaWYgKHN5bWJvbCAmJiBzeW1ib2wt
PmlzVmFyaWFibGUoKSkgewogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gc3RhdGljX2Nh
c3Q8VFZhcmlhYmxlKj4oc3ltYm9sKTsKLSAgICAgICAgaWYgKHZhcmlhYmxlLT5pc1VzZXJUeXBl
KCkpIHsKLSAgICAgICAgICAgIHl5ZXh0cmEtPmxleEFmdGVyVHlwZSA9IHRydWU7CisgICAgICAg
IGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKQogICAgICAgICAgICAgdG9rZW4gPSBUWVBFX05B
TUU7Ci0gICAgICAgIH0KICAgICB9CiAgICAgeXlsdmFsLT5sZXguc3ltYm9sID0gc3ltYm9sOwog
ICAgIHJldHVybiB0b2tlbjsKQEAgLTI5ODIsMjIgKzI4OTIsMTEgQEAgaW50IGNoZWNrX3R5cGUo
eXlzY2FuX3QgeXlzY2FubmVyKSB7CiBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW5u
ZXIpIHsKICAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSB5eXNj
YW5uZXI7CiAKLSAgICB5eWV4dHJhLT5lcnJvcih5eWxpbmVubywgIklsbGVnYWwgdXNlIG9mIHJl
c2VydmVkIHdvcmQiLCB5eXRleHQsICIiKTsKKyAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAi
SWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwgIiIpOwogICAgIHl5ZXh0cmEt
PnJlY292ZXIoKTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbikgewotICAgIHN0cnVjdCB5eWd1dHNfdCog
eXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPnNjYW5uZXI7Ci0KLSAgICBpZiAoY29u
dGV4dC0+QWZ0ZXJFT0YpIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXlsaW5lbm8sIHJlYXNv
biwgInVuZXhwZWN0ZWQgRU9GIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29udGV4dC0+ZXJy
b3IoeXlsaW5lbm8sIHJlYXNvbiwgeXl0ZXh0KTsKLSAgICB9Ci0gICAgY29udGV4dC0+cmVjb3Zl
cigpOwotfQotCiBpbnQgZ2xzbGFuZ19pbml0aWFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnRleHQp
IHsKICAgICB5eXNjYW5fdCBzY2FubmVyID0gTlVMTDsKICAgICBpZiAoeXlsZXhfaW5pdF9leHRy
YShjb250ZXh0LCZzY2FubmVyKSkKQEAgLTMwMjAsOCArMjkxOSw4IEBAIGludCBnbHNsYW5nX2Zp
bmFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnQKIGludCBnbHNsYW5nX3NjYW4oc2l6ZV90IGNvdW50
LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAogICAgICAg
ICAgICAgICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlyZXN0YXJ0KE5VTEws
Y29udGV4dC0+c2Nhbm5lcik7Ci0gICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJjZUxvYygwLCAx
KSxjb250ZXh0LT5zY2FubmVyKTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNlOworICAg
IHl5c2V0X2NvbHVtbigwLGNvbnRleHQtPnNjYW5uZXIpOworICAgIHl5c2V0X2xpbmVubygxLGNv
bnRleHQtPnNjYW5uZXIpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBwcmVwcm9jZXNzb3IuCiAgICAg
aWYgKCFjb250ZXh0LT5wcmVwcm9jZXNzb3IuaW5pdChjb3VudCwgc3RyaW5nLCBsZW5ndGgpKQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xz
bGFuZ190YWIuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBACiAjZGVmaW5lIFlZUFVSRSAxCiAKIC8qIFVzaW5nIGxvY2F0aW9ucy4gICovCi0jZGVm
aW5lIFlZTFNQX05FRURFRCAwCisjZGVmaW5lIFlZTFNQX05FRURFRCAxCiAKIAogCkBAIC0xMTMs
NTIgKzExMyw1MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0gMzAyLAogICAgICBJTlRDT05TVEFO
VCA9IDMwMywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAotICAgICBGSUVMRF9TRUxFQ1RJT04g
PSAzMDUsCi0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJR0hUX09QID0gMzA3LAotICAgICBJ
TkNfT1AgPSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAgICAgTEVfT1AgPSAzMTAsCi0gICAg
IEdFX09QID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAgICAgTkVfT1AgPSAzMTMsCi0gICAg
IEFORF9PUCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0gICAgIFhPUl9PUCA9IDMxNiwKLSAg
ICAgTVVMX0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lHTiA9IDMxOCwKLSAgICAgQUREX0FT
U0lHTiA9IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwKLSAgICAgTEVGVF9BU1NJR04gPSAz
MjEsCi0gICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAgQU5EX0FTU0lHTiA9IDMyMywKLSAg
ICAgWE9SX0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdOID0gMzI1LAotICAgICBTVUJfQVNT
SUdOID0gMzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAotICAgICBSSUdIVF9QQVJFTiA9IDMy
OCwKLSAgICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBSSUdIVF9CUkFDS0VUID0gMzMwLAot
ICAgICBMRUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9CUkFDRSA9IDMzMiwKLSAgICAgRE9U
ID0gMzMzLAotICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09MT04gPSAzMzUsCi0gICAgIEVRVUFM
ID0gMzM2LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAgIEJBTkcgPSAzMzgsCi0gICAgIERB
U0ggPSAzMzksCi0gICAgIFRJTERFID0gMzQwLAotICAgICBQTFVTID0gMzQxLAotICAgICBTVEFS
ID0gMzQyLAotICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVSQ0VOVCA9IDM0NCwKLSAgICAgTEVG
VF9BTkdMRSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAzNDYsCi0gICAgIFZFUlRJQ0FMX0JB
UiA9IDM0NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFNUEVSU0FORCA9IDM0OSwKLSAgICAg
UVVFU1RJT04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwKKyAgICAgUklHSFRfT1AgPSAzMDYs
CisgICAgIElOQ19PUCA9IDMwNywKKyAgICAgREVDX09QID0gMzA4LAorICAgICBMRV9PUCA9IDMw
OSwKKyAgICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0gMzExLAorICAgICBORV9PUCA9IDMx
MiwKKyAgICAgQU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9IDMxNCwKKyAgICAgWE9SX09QID0g
MzE1LAorICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBESVZfQVNTSUdOID0gMzE3LAorICAg
ICBBRERfQVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdOID0gMzE5LAorICAgICBMRUZUX0FT
U0lHTiA9IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIxLAorICAgICBBTkRfQVNTSUdOID0g
MzIyLAorICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBPUl9BU1NJR04gPSAzMjQsCisgICAg
IFNVQl9BU1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4gPSAzMjYsCisgICAgIFJJR0hUX1BB
UkVOID0gMzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgsCisgICAgIFJJR0hUX0JSQUNLRVQg
PSAzMjksCisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAgIFJJR0hUX0JSQUNFID0gMzMxLAor
ICAgICBET1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMzLAorICAgICBDT0xPTiA9IDMzNCwKKyAg
ICAgRVFVQUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMzNiwKKyAgICAgQkFORyA9IDMzNywK
KyAgICAgREFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzksCisgICAgIFBMVVMgPSAzNDAsCisg
ICAgIFNUQVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAorICAgICBQRVJDRU5UID0gMzQzLAor
ICAgICBMRUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9BTkdMRSA9IDM0NSwKKyAgICAgVkVS
VElDQUxfQkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywKKyAgICAgQU1QRVJTQU5EID0gMzQ4
LAorICAgICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRpZgogLyogVG9rZW5zLiAgKi8KQEAg
LTIwOSw1MiArMjA4LDUxIEBACiAjZGVmaW5lIEZMT0FUQ09OU1RBTlQgMzAyCiAjZGVmaW5lIElO
VENPTlNUQU5UIDMwMwogI2RlZmluZSBCT09MQ09OU1RBTlQgMzA0Ci0jZGVmaW5lIEZJRUxEX1NF
TEVDVElPTiAzMDUKLSNkZWZpbmUgTEVGVF9PUCAzMDYKLSNkZWZpbmUgUklHSFRfT1AgMzA3Ci0j
ZGVmaW5lIElOQ19PUCAzMDgKLSNkZWZpbmUgREVDX09QIDMwOQotI2RlZmluZSBMRV9PUCAzMTAK
LSNkZWZpbmUgR0VfT1AgMzExCi0jZGVmaW5lIEVRX09QIDMxMgotI2RlZmluZSBORV9PUCAzMTMK
LSNkZWZpbmUgQU5EX09QIDMxNAotI2RlZmluZSBPUl9PUCAzMTUKLSNkZWZpbmUgWE9SX09QIDMx
NgotI2RlZmluZSBNVUxfQVNTSUdOIDMxNwotI2RlZmluZSBESVZfQVNTSUdOIDMxOAotI2RlZmlu
ZSBBRERfQVNTSUdOIDMxOQotI2RlZmluZSBNT0RfQVNTSUdOIDMyMAotI2RlZmluZSBMRUZUX0FT
U0lHTiAzMjEKLSNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMgotI2RlZmluZSBBTkRfQVNTSUdOIDMy
MwotI2RlZmluZSBYT1JfQVNTSUdOIDMyNAotI2RlZmluZSBPUl9BU1NJR04gMzI1Ci0jZGVmaW5l
IFNVQl9BU1NJR04gMzI2Ci0jZGVmaW5lIExFRlRfUEFSRU4gMzI3Ci0jZGVmaW5lIFJJR0hUX1BB
UkVOIDMyOAotI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI5Ci0jZGVmaW5lIFJJR0hUX0JSQUNLRVQg
MzMwCi0jZGVmaW5lIExFRlRfQlJBQ0UgMzMxCi0jZGVmaW5lIFJJR0hUX0JSQUNFIDMzMgotI2Rl
ZmluZSBET1QgMzMzCi0jZGVmaW5lIENPTU1BIDMzNAotI2RlZmluZSBDT0xPTiAzMzUKLSNkZWZp
bmUgRVFVQUwgMzM2Ci0jZGVmaW5lIFNFTUlDT0xPTiAzMzcKLSNkZWZpbmUgQkFORyAzMzgKLSNk
ZWZpbmUgREFTSCAzMzkKLSNkZWZpbmUgVElMREUgMzQwCi0jZGVmaW5lIFBMVVMgMzQxCi0jZGVm
aW5lIFNUQVIgMzQyCi0jZGVmaW5lIFNMQVNIIDM0MwotI2RlZmluZSBQRVJDRU5UIDM0NAotI2Rl
ZmluZSBMRUZUX0FOR0xFIDM0NQotI2RlZmluZSBSSUdIVF9BTkdMRSAzNDYKLSNkZWZpbmUgVkVS
VElDQUxfQkFSIDM0NwotI2RlZmluZSBDQVJFVCAzNDgKLSNkZWZpbmUgQU1QRVJTQU5EIDM0OQot
I2RlZmluZSBRVUVTVElPTiAzNTAKKyNkZWZpbmUgTEVGVF9PUCAzMDUKKyNkZWZpbmUgUklHSFRf
T1AgMzA2CisjZGVmaW5lIElOQ19PUCAzMDcKKyNkZWZpbmUgREVDX09QIDMwOAorI2RlZmluZSBM
RV9PUCAzMDkKKyNkZWZpbmUgR0VfT1AgMzEwCisjZGVmaW5lIEVRX09QIDMxMQorI2RlZmluZSBO
RV9PUCAzMTIKKyNkZWZpbmUgQU5EX09QIDMxMworI2RlZmluZSBPUl9PUCAzMTQKKyNkZWZpbmUg
WE9SX09QIDMxNQorI2RlZmluZSBNVUxfQVNTSUdOIDMxNgorI2RlZmluZSBESVZfQVNTSUdOIDMx
NworI2RlZmluZSBBRERfQVNTSUdOIDMxOAorI2RlZmluZSBNT0RfQVNTSUdOIDMxOQorI2RlZmlu
ZSBMRUZUX0FTU0lHTiAzMjAKKyNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMQorI2RlZmluZSBBTkRf
QVNTSUdOIDMyMgorI2RlZmluZSBYT1JfQVNTSUdOIDMyMworI2RlZmluZSBPUl9BU1NJR04gMzI0
CisjZGVmaW5lIFNVQl9BU1NJR04gMzI1CisjZGVmaW5lIExFRlRfUEFSRU4gMzI2CisjZGVmaW5l
IFJJR0hUX1BBUkVOIDMyNworI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI4CisjZGVmaW5lIFJJR0hU
X0JSQUNLRVQgMzI5CisjZGVmaW5lIExFRlRfQlJBQ0UgMzMwCisjZGVmaW5lIFJJR0hUX0JSQUNF
IDMzMQorI2RlZmluZSBET1QgMzMyCisjZGVmaW5lIENPTU1BIDMzMworI2RlZmluZSBDT0xPTiAz
MzQKKyNkZWZpbmUgRVFVQUwgMzM1CisjZGVmaW5lIFNFTUlDT0xPTiAzMzYKKyNkZWZpbmUgQkFO
RyAzMzcKKyNkZWZpbmUgREFTSCAzMzgKKyNkZWZpbmUgVElMREUgMzM5CisjZGVmaW5lIFBMVVMg
MzQwCisjZGVmaW5lIFNUQVIgMzQxCisjZGVmaW5lIFNMQVNIIDM0MgorI2RlZmluZSBQRVJDRU5U
IDM0MworI2RlZmluZSBMRUZUX0FOR0xFIDM0NAorI2RlZmluZSBSSUdIVF9BTkdMRSAzNDUKKyNk
ZWZpbmUgVkVSVElDQUxfQkFSIDM0NgorI2RlZmluZSBDQVJFVCAzNDcKKyNkZWZpbmUgQU1QRVJT
QU5EIDM0OAorI2RlZmluZSBRVUVTVElPTiAzNDkKIAogCiAKQEAgLTI4Nyw3ICsyODUsNiBAQAog
I2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgogCiAjZGVmaW5lIFlZRU5BQkxFX05MUyAw
Ci0jZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCiAKICNkZWZpbmUgWVlMRVhfUEFSQU0gY29u
dGV4dC0+c2Nhbm5lcgogCkBAIC0zMTQsOCArMzExLDkgQEAKIHR5cGVkZWYgdW5pb24gWVlTVFlQ
RQogCiB7CisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxUWVBFX0lTX0RF
Q0xBUkVEIDEKICAgICBzdHJ1Y3QgewotICAgICAgICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAg
IHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0cmluZzsKICAgICAgICAgICAgIGZsb2F0
IGY7CkBAIC0zMjUsNyArMzIzLDYgQEAgdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAgICAgICAgIFRT
eW1ib2wqIHN5bWJvbDsKICAgICB9IGxleDsKICAgICBzdHJ1Y3QgewotICAgICAgICBUU291cmNl
TG9jIGxpbmU7CiAgICAgICAgIFRPcGVyYXRvciBvcDsKICAgICAgICAgdW5pb24gewogICAgICAg
ICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7CkBAIC0zMzksOCArMzM2LDggQEAgdHlwZWRl
ZiB1bmlvbiBZWVNUWVBFCiAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKICAgICAg
ICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAgICAgICBUUGFyYW1ldGVyIHBhcmFt
OwotICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVMaW5lOwotICAgICAgICAgICAgVFR5cGVMaXN0
KiB0eXBlTGlzdDsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7CisgICAgICAgICAgICBURmll
bGRMaXN0KiBmaWVsZExpc3Q7CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07CiB9CkBAIC0zNTIs
MjEgKzM0OSw0MSBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICMgZGVmaW5lIFlZU1RZUEVfSVNf
VFJJVklBTCAxCiAjZW5kaWYKIAorI2lmICEgZGVmaW5lZCBZWUxUWVBFICYmICEgZGVmaW5lZCBZ
WUxUWVBFX0lTX0RFQ0xBUkVECit0eXBlZGVmIHN0cnVjdCBZWUxUWVBFCit7CisgIGludCBmaXJz
dF9saW5lOworICBpbnQgZmlyc3RfY29sdW1uOworICBpbnQgbGFzdF9saW5lOworICBpbnQgbGFz
dF9jb2x1bW47Cit9IFlZTFRZUEU7CisjIGRlZmluZSB5eWx0eXBlIFlZTFRZUEUgLyogb2Jzb2xl
c2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCisjIGRlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVE
IDEKKyMgZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCisjZW5kaWYKIAogCiAvKiBDb3B5IHRo
ZSBzZWNvbmQgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCiAKIAotZXh0ZXJuIGludCB5
eWxleChZWVNUWVBFKiB5eWx2YWxfcGFyYW0sIHZvaWQqIHl5c2Nhbm5lcik7Ci1leHRlcm4gdm9p
ZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7Citl
eHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbCwgWVlMVFlQRSogeXlsbG9jLCB2b2lkKiB5
eXNjYW5uZXIpOworc3RhdGljIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAKLSNkZWZpbmUgRlJBR19WRVJU
X09OTFkoUywgTCkgeyAgXAotICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX0ZSQUdN
RU5UX1NIQURFUiAmJiAgXAotICAgICAgICBjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX1ZFUlRF
WF9TSEFERVIpIHsgIFwKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBwb3J0ZWQgaW4g
dmVydGV4L2ZyYWdtZW50IHNoYWRlcnMgb25seSAiLCBTKTsgIFwKLSAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOyAgXAotICAgIH0gIFwKLX0KKyNkZWZpbmUgWVlMTE9DX0RFRkFVTFQoQ3VycmVu
dCwgUmhzLCBOKSAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgaWYgKFlZSUQo
TikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
KEN1cnJlbnQpLmZpcnN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDEpLmZpcnN0X2ZpbGU7ICBcCisg
ICAgICAgIChDdXJyZW50KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAxKS5maXJzdF9saW5l
OyAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCBOKS5sYXN0
X2ZpbGU7ICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywg
TikubGFzdF9saW5lOyAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0
X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfZmlsZTsgICBcCisgICAgICAgIChDdXJyZW50
KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2xpbmU7ICAgXAorICAgICAgICAo
Q3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2ZpbGU7ICAgIFwKKyAg
ICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9saW5lOyAg
ICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICB9IHdoaWxlICgwKQogCiAjZGVmaW5lIFZFUlRFWF9PTkxZKFMsIEwpIHsg
IFwKICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7ICBc
CkBAIC01NDIsMTQgKzU1OSwxNiBAQCB2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJTkdFUyBP
TiBVU0VSCiAKICNpZiAoISBkZWZpbmVkIHl5b3ZlcmZsb3cgXAogICAgICAmJiAoISBkZWZpbmVk
IF9fY3BsdXNwbHVzIFwKLQkgfHwgKGRlZmluZWQgWVlTVFlQRV9JU19UUklWSUFMICYmIFlZU1RZ
UEVfSVNfVFJJVklBTCkpKQorCSB8fCAoZGVmaW5lZCBZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlM
VFlQRV9JU19UUklWSUFMIFwKKwkgICAgICYmIGRlZmluZWQgWVlTVFlQRV9JU19UUklWSUFMICYm
IFlZU1RZUEVfSVNfVFJJVklBTCkpKQogCiAvKiBBIHR5cGUgdGhhdCBpcyBwcm9wZXJseSBhbGln
bmVkIGZvciBhbnkgc3RhY2sgbWVtYmVyLiAgKi8KIHVuaW9uIHl5YWxsb2MKIHsKICAgeXl0eXBl
X2ludDE2IHl5c3M7CiAgIFlZU1RZUEUgeXl2czsKLSAgfTsKKyAgICBZWUxUWVBFIHl5bHM7Cit9
OwogCiAvKiBUaGUgc2l6ZSBvZiB0aGUgbWF4aW11bSBnYXAgYmV0d2VlbiBvbmUgYWxpZ25lZCBz
dGFjayBhbmQgdGhlIG5leHQuICAqLwogIyBkZWZpbmUgWVlTVEFDS19HQVBfTUFYSU1VTSAoc2l6
ZW9mICh1bmlvbiB5eWFsbG9jKSAtIDEpCkBAIC01NTcsOCArNTc2LDggQEAgdW5pb24geXlhbGxv
YwogLyogVGhlIHNpemUgb2YgYW4gYXJyYXkgbGFyZ2UgdG8gZW5vdWdoIHRvIGhvbGQgYWxsIHN0
YWNrcywgZWFjaCB3aXRoCiAgICBOIGVsZW1lbnRzLiAgKi8KICMgZGVmaW5lIFlZU1RBQ0tfQllU
RVMoTikgXAotICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNpemVvZiAoWVlT
VFlQRSkpIFwKLSAgICAgICsgWVlTVEFDS19HQVBfTUFYSU1VTSkKKyAgICAgKChOKSAqIChzaXpl
b2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUpICsgc2l6ZW9mIChZWUxUWVBFKSkg
XAorICAgICAgKyAyICogWVlTVEFDS19HQVBfTUFYSU1VTSkKIAogLyogQ29weSBDT1VOVCBvYmpl
Y3RzIGZyb20gRlJPTSB0byBUTy4gIFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRvCiAgICBu
b3Qgb3ZlcmxhcC4gICovCkBAIC01OTcsMjIgKzYxNiwyMiBAQCB1bmlvbiB5eWFsbG9jCiAjZW5k
aWYKIAogLyogWVlGSU5BTCAtLSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0aW9uIHN0YXRl
LiAgKi8KLSNkZWZpbmUgWVlGSU5BTCAgNzEKKyNkZWZpbmUgWVlGSU5BTCAgNzQKIC8qIFlZTEFT
VCAtLSBMYXN0IGluZGV4IGluIFlZVEFCTEUuICAqLwotI2RlZmluZSBZWUxBU1QgICAxNDE2Cisj
ZGVmaW5lIFlZTEFTVCAgIDE0OTAKIAogLyogWVlOVE9LRU5TIC0tIE51bWJlciBvZiB0ZXJtaW5h
bHMuICAqLwotI2RlZmluZSBZWU5UT0tFTlMgIDk2CisjZGVmaW5lIFlZTlRPS0VOUyAgOTUKIC8q
IFlZTk5UUyAtLSBOdW1iZXIgb2Ygbm9udGVybWluYWxzLiAgKi8KLSNkZWZpbmUgWVlOTlRTICA4
MworI2RlZmluZSBZWU5OVFMgIDg0CiAvKiBZWU5SVUxFUyAtLSBOdW1iZXIgb2YgcnVsZXMuICAq
LwotI2RlZmluZSBZWU5SVUxFUyAgMjAxCisjZGVmaW5lIFlZTlJVTEVTICAyMDIKIC8qIFlZTlJV
TEVTIC0tIE51bWJlciBvZiBzdGF0ZXMuICAqLwotI2RlZmluZSBZWU5TVEFURVMgIDMwNAorI2Rl
ZmluZSBZWU5TVEFURVMgIDMwNwogCiAvKiBZWVRSQU5TTEFURShZWUxFWCkgLS0gQmlzb24gc3lt
Ym9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZTEVYLiAgKi8KICNkZWZpbmUgWVlVTkRFRlRP
SyAgMgotI2RlZmluZSBZWU1BWFVUT0sgICAzNTAKKyNkZWZpbmUgWVlNQVhVVE9LICAgMzQ5CiAK
ICNkZWZpbmUgWVlUUkFOU0xBVEUoWVlYKQkJCQkJCVwKICAgKCh1bnNpZ25lZCBpbnQpIChZWVgp
IDw9IFlZTUFYVVRPSyA/IHl5dHJhbnNsYXRlW1lZWF0gOiBZWVVOREVGVE9LKQpAQCAtNjU0LDgg
KzY3Myw3IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXl0cmFuc2xhdGVbXSAKICAgICAg
IDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAg
NjMsICAgIDY0LAogICAgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwg
ICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsCiAgICAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3
OCwgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIDgzLCAgICA4NCwKLSAgICAgIDg1LCAg
ICA4NiwgICAgODcsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICA5MiwgICAgOTMsICAg
IDk0LAotICAgICAgOTUKKyAgICAgIDg1LCAgICA4NiwgICAgODcsICAgIDg4LCAgICA4OSwgICAg
OTAsICAgIDkxLCAgICA5MiwgICAgOTMsICAgIDk0CiB9OwogCiAjaWYgWVlERUJVRwpAQCAtNjYz
LDExNSArNjgxLDExNiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJhbnNsYXRlW10g
CiAgICBZWVJIUy4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXByaHNbXSA9CiB7
Ci0gICAgICAgMCwgICAgIDAsICAgICAzLCAgICAgNSwgICAgIDcsICAgICA5LCAgICAxMSwgICAg
MTMsICAgIDE3LCAgICAxOSwKLSAgICAgIDI0LCAgICAyNiwgICAgMzAsICAgIDMzLCAgICAzNiwg
ICAgMzgsICAgIDQwLCAgICA0MiwgICAgNDYsICAgIDQ5LAotICAgICAgNTIsICAgIDU1LCAgICA1
NywgICAgNjAsICAgIDY0LCAgICA2NywgICAgNjksICAgIDcxLCAgICA3MywgICAgNzUsCi0gICAg
ICA3OCwgICAgODEsICAgIDg0LCAgICA4NiwgICAgODgsICAgIDkwLCAgICA5MiwgICAgOTYsICAg
MTAwLCAgIDEwMiwKLSAgICAgMTA2LCAgIDExMCwgICAxMTIsICAgMTE0LCAgIDExOCwgICAxMjIs
ICAgMTI2LCAgIDEzMCwgICAxMzIsICAgMTM2LAotICAgICAxNDAsICAgMTQyLCAgIDE0NCwgICAx
NDYsICAgMTQ4LCAgIDE1MiwgICAxNTQsICAgMTU4LCAgIDE2MCwgICAxNjQsCi0gICAgIDE2Niwg
ICAxNzIsICAgMTc0LCAgIDE3OCwgICAxODAsICAgMTgyLCAgIDE4NCwgICAxODYsICAgMTg4LCAg
IDE5MCwKLSAgICAgMTk0LCAgIDE5NiwgICAxOTksICAgMjAyLCAgIDIwNywgICAyMTAsICAgMjEy
LCAgIDIxNCwgICAyMTcsICAgMjIxLAotICAgICAyMjUsICAgMjI4LCAgIDIzNCwgICAyMzgsICAg
MjQxLCAgIDI0NSwgICAyNDgsICAgMjQ5LCAgIDI1MSwgICAyNTMsCi0gICAgIDI1NSwgICAyNTcs
ICAgMjU5LCAgIDI2MywgICAyNjksICAgMjc2LCAgIDI4MiwgICAyODQsICAgMjg3LCAgIDI5MiwK
LSAgICAgMjk4LCAgIDMwMywgICAzMDYsICAgMzA4LCAgIDMxMSwgICAzMTMsICAgMzE1LCAgIDMx
NywgICAzMjAsICAgMzIyLAotICAgICAzMjQsICAgMzI3LCAgIDMyOSwgICAzMzEsICAgMzMzLCAg
IDMzNSwgICAzNDAsICAgMzQyLCAgIDM0NCwgICAzNDYsCisgICAgICAgMCwgICAgIDAsICAgICAz
LCAgICAgNSwgICAgIDcsICAgICA5LCAgICAxMSwgICAgMTMsICAgIDE1LCAgICAxNywKKyAgICAg
IDIxLCAgICAyMywgICAgMjgsICAgIDMwLCAgICAzNCwgICAgMzcsICAgIDQwLCAgICA0MiwgICAg
NDQsICAgIDQ2LAorICAgICAgNTAsICAgIDUzLCAgICA1NiwgICAgNTksICAgIDYxLCAgICA2NCwg
ICAgNjgsICAgIDcxLCAgICA3MywgICAgNzUsCisgICAgICA3NywgICAgODAsICAgIDgzLCAgICA4
NiwgICAgODgsICAgIDkwLCAgICA5MiwgICAgOTQsICAgIDk4LCAgIDEwMiwKKyAgICAgMTA0LCAg
IDEwOCwgICAxMTIsICAgMTE0LCAgIDExNiwgICAxMjAsICAgMTI0LCAgIDEyOCwgICAxMzIsICAg
MTM0LAorICAgICAxMzgsICAgMTQyLCAgIDE0NCwgICAxNDYsICAgMTQ4LCAgIDE1MCwgICAxNTQs
ICAgMTU2LCAgIDE2MCwgICAxNjIsCisgICAgIDE2NiwgICAxNjgsICAgMTc0LCAgIDE3NiwgICAx
ODAsICAgMTgyLCAgIDE4NCwgICAxODYsICAgMTg4LCAgIDE5MCwKKyAgICAgMTkyLCAgIDE5Niwg
ICAxOTgsICAgMjAxLCAgIDIwNCwgICAyMDksICAgMjEyLCAgIDIxNCwgICAyMTYsICAgMjE5LAor
ICAgICAyMjMsICAgMjI3LCAgIDIzMCwgICAyMzYsICAgMjQwLCAgIDI0MywgICAyNDcsICAgMjUw
LCAgIDI1MSwgICAyNTMsCisgICAgIDI1NSwgICAyNTcsICAgMjU5LCAgIDI2MSwgICAyNjUsICAg
MjcxLCAgIDI3OCwgICAyODQsICAgMjg2LCAgIDI4OSwKKyAgICAgMjk0LCAgIDMwMCwgICAzMDUs
ICAgMzA4LCAgIDMxMCwgICAzMTMsICAgMzE1LCAgIDMxNywgICAzMTksICAgMzIyLAorICAgICAz
MjQsICAgMzI2LCAgIDMyOSwgICAzMzEsICAgMzMzLCAgIDMzNSwgICAzMzcsICAgMzQyLCAgIDM0
NCwgICAzNDYsCiAgICAgIDM0OCwgICAzNTAsICAgMzUyLCAgIDM1NCwgICAzNTYsICAgMzU4LCAg
IDM2MCwgICAzNjIsICAgMzY0LCAgIDM2NiwKLSAgICAgMzY4LCAgIDM3MCwgICAzNzIsICAgMzc0
LCAgIDM3NiwgICAzNzgsICAgMzgwLCAgIDM4MiwgICAzODQsICAgMzg1LAotICAgICAzOTIsICAg
MzkzLCAgIDM5OSwgICA0MDEsICAgNDA0LCAgIDQwOCwgICA0MTAsICAgNDE0LCAgIDQxNiwgICA0
MjEsCi0gICAgIDQyMywgICA0MjUsICAgNDI3LCAgIDQyOSwgICA0MzEsICAgNDMzLCAgIDQzNSwg
ICA0MzcsICAgNDM5LCAgIDQ0MiwKLSAgICAgNDQzLCAgIDQ0NCwgICA0NTAsICAgNDUyLCAgIDQ1
NCwgICA0NTUsICAgNDU4LCAgIDQ1OSwgICA0NjIsICAgNDY1LAotICAgICA0NjksICAgNDcxLCAg
IDQ3NCwgICA0NzYsICAgNDc5LCAgIDQ4NSwgICA0ODksICAgNDkxLCAgIDQ5MywgICA0OTgsCi0g
ICAgIDQ5OSwgICA1MDYsICAgNTA3LCAgIDUxNiwgICA1MTcsICAgNTI1LCAgIDUyNywgICA1Mjks
ICAgNTMxLCAgIDUzMiwKLSAgICAgNTM1LCAgIDUzOSwgICA1NDIsICAgNTQ1LCAgIDU0OCwgICA1
NTIsICAgNTU1LCAgIDU1NywgICA1NjAsICAgNTYyLAotICAgICA1NjQsICAgNTY1CisgICAgIDM2
OCwgICAzNzAsICAgMzcyLCAgIDM3NCwgICAzNzYsICAgMzc4LCAgIDM4MCwgICAzODIsICAgMzg0
LCAgIDM4NiwKKyAgICAgMzg3LCAgIDM5NCwgICAzOTUsICAgNDAxLCAgIDQwMywgICA0MDYsICAg
NDEwLCAgIDQxMiwgICA0MTYsICAgNDE4LAorICAgICA0MjMsICAgNDI1LCAgIDQyNywgICA0Mjks
ICAgNDMxLCAgIDQzMywgICA0MzUsICAgNDM3LCAgIDQzOSwgICA0NDEsCisgICAgIDQ0NCwgICA0
NDUsICAgNDQ2LCAgIDQ1MiwgICA0NTQsICAgNDU2LCAgIDQ1NywgICA0NjAsICAgNDYxLCAgIDQ2
NCwKKyAgICAgNDY3LCAgIDQ3MSwgICA0NzMsICAgNDc2LCAgIDQ3OCwgICA0ODEsICAgNDg3LCAg
IDQ5MSwgICA0OTMsICAgNDk1LAorICAgICA1MDAsICAgNTAxLCAgIDUwOCwgICA1MDksICAgNTE4
LCAgIDUxOSwgICA1MjcsICAgNTI5LCAgIDUzMSwgICA1MzMsCisgICAgIDUzNCwgICA1MzcsICAg
NTQxLCAgIDU0NCwgICA1NDcsICAgNTUwLCAgIDU1NCwgICA1NTcsICAgNTU5LCAgIDU2MiwKKyAg
ICAgNTY0LCAgIDU2NiwgICA1NjcKIH07CiAKIC8qIFlZUkhTIC0tIEEgYC0xJy1zZXBhcmF0ZWQg
bGlzdCBvZiB0aGUgcnVsZXMnIFJIUy4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5
cmhzW10gPQogewotICAgICAxNzUsICAgICAwLCAgICAtMSwgICAgNDUsICAgIC0xLCAgICA5Nywg
ICAgLTEsICAgIDQ4LCAgICAtMSwgICAgNDcsCi0gICAgICAtMSwgICAgNDksICAgIC0xLCAgICA3
MiwgICAxMjQsICAgIDczLCAgICAtMSwgICAgOTgsICAgIC0xLCAgICA5OSwKLSAgICAgIDc0LCAg
IDEwMCwgICAgNzUsICAgIC0xLCAgIDEwMSwgICAgLTEsICAgIDk5LCAgICA3OCwgICAgNTAsICAg
IC0xLAotICAgICAgOTksICAgIDUzLCAgICAtMSwgICAgOTksICAgIDU0LCAgICAtMSwgICAxMjQs
ICAgIC0xLCAgIDEwMiwgICAgLTEsCi0gICAgIDEwMywgICAgLTEsICAgIDk5LCAgICA3OCwgICAx
MDMsICAgIC0xLCAgIDEwNSwgICAgNzMsICAgIC0xLCAgIDEwNCwKLSAgICAgIDczLCAgICAtMSwg
ICAxMDYsICAgIDM5LCAgICAtMSwgICAxMDYsICAgIC0xLCAgIDEwNiwgICAxMjIsICAgIC0xLAot
ICAgICAxMDUsICAgIDc5LCAgIDEyMiwgICAgLTEsICAgMTA3LCAgICA3MiwgICAgLTEsICAgMTQy
LCAgICAtMSwgICAgNDUsCi0gICAgICAtMSwgICAgNTAsICAgIC0xLCAgICA5OSwgICAgLTEsICAg
IDUzLCAgIDEwOCwgICAgLTEsICAgIDU0LCAgIDEwOCwKLSAgICAgIC0xLCAgIDEwOSwgICAxMDgs
ICAgIC0xLCAgICA4NiwgICAgLTEsICAgIDg0LCAgICAtMSwgICAgODMsICAgIC0xLAotICAgICAx
MDgsICAgIC0xLCAgIDExMCwgICAgODcsICAgMTA4LCAgICAtMSwgICAxMTAsICAgIDg4LCAgIDEw
OCwgICAgLTEsCi0gICAgIDExMCwgICAgLTEsICAgMTExLCAgICA4NiwgICAxMTAsICAgIC0xLCAg
IDExMSwgICAgODQsICAgMTEwLCAgICAtMSwKLSAgICAgMTExLCAgICAtMSwgICAxMTIsICAgIC0x
LCAgIDExMywgICAgOTAsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDkxLAotICAgICAxMTIsICAg
IC0xLCAgIDExMywgICAgNTUsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDU2LCAgIDExMiwgICAg
LTEsCi0gICAgIDExMywgICAgLTEsICAgMTE0LCAgICA1NywgICAxMTMsICAgIC0xLCAgIDExNCwg
ICAgNTgsICAgMTEzLCAgICAtMSwKLSAgICAgMTE0LCAgICAtMSwgICAxMTUsICAgIC0xLCAgIDEx
NiwgICAgLTEsICAgMTE3LCAgICAtMSwgICAxMTgsICAgIDU5LAotICAgICAxMTcsICAgIC0xLCAg
IDExOCwgICAgLTEsICAgMTE5LCAgICA2MSwgICAxMTgsICAgIC0xLCAgIDExOSwgICAgLTEsCi0g
ICAgIDEyMCwgICAgNjAsICAgMTE5LCAgICAtMSwgICAxMjAsICAgIC0xLCAgIDEyMCwgICAgOTUs
ICAgMTI0LCAgICA4MCwKLSAgICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEwOCwgICAx
MjMsICAgMTIyLCAgICAtMSwgICAgODEsICAgIC0xLAotICAgICAgNjIsICAgIC0xLCAgICA2Mywg
ICAgLTEsICAgIDY0LCAgICAtMSwgICAgNzEsICAgIC0xLCAgIDEyMiwgICAgLTEsCi0gICAgIDEy
NCwgICAgNzksICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEyNywgICAgODIsICAgIC0x
LCAgIDEzNSwKLSAgICAgIDgyLCAgICAtMSwgICAgIDcsICAgMTQwLCAgIDE0MSwgICAgODIsICAg
IC0xLCAgIDEyOCwgICAgNzMsICAgIC0xLAotICAgICAxMzAsICAgIC0xLCAgIDEyOSwgICAgLTEs
ICAgMTMwLCAgIDEzMiwgICAgLTEsICAgMTI5LCAgICA3OSwgICAxMzIsCi0gICAgICAtMSwgICAx
MzcsICAgIDQ1LCAgICA3MiwgICAgLTEsICAgMTM5LCAgICA0NSwgICAgLTEsICAgMTM5LCAgICA0
NSwKLSAgICAgIDc0LCAgIDEyNSwgICAgNzUsICAgIC0xLCAgIDEzOCwgICAxMzMsICAgMTMxLCAg
ICAtMSwgICAxMzMsICAgMTMxLAotICAgICAgLTEsICAgMTM4LCAgIDEzMywgICAxMzQsICAgIC0x
LCAgIDEzMywgICAxMzQsICAgIC0xLCAgICAtMSwgICAgMzMsCi0gICAgICAtMSwgICAgMzQsICAg
IC0xLCAgICAzNSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAxMzYsICAgIC0xLCAgIDEzNSwKLSAg
ICAgIDc5LCAgICA0NSwgICAgLTEsICAgMTM1LCAgICA3OSwgICAgNDUsICAgIDc0LCAgICA3NSwg
ICAgLTEsICAgMTM1LAotICAgICAgNzksICAgIDQ1LCAgICA3NCwgICAxMjUsICAgIDc1LCAgICAt
MSwgICAxMzUsICAgIDc5LCAgICA0NSwgICAgODEsCi0gICAgIDE1MCwgICAgLTEsICAgMTM3LCAg
ICAtMSwgICAxMzcsICAgIDQ1LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3NCwKLSAgICAgIDc1
LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3NCwgICAxMjUsICAgIDc1LCAgICAtMSwgICAxMzcs
ICAgIDQ1LAotICAgICAgODEsICAgMTUwLCAgICAtMSwgICAgIDMsICAgIDQ1LCAgICAtMSwgICAx
MzksICAgIC0xLCAgIDEzOCwgICAxMzksCi0gICAgICAtMSwgICAgIDksICAgIC0xLCAgICAgOCwg
ICAgLTEsICAgIDM3LCAgICAtMSwgICAgIDMsICAgIDM3LCAgICAtMSwKLSAgICAgIDM2LCAgICAt
MSwgICAxNDEsICAgIC0xLCAgIDE0MCwgICAxNDEsICAgIC0xLCAgICAgNCwgICAgLTEsICAgICA1
LAotICAgICAgLTEsICAgICA2LCAgICAtMSwgICAxNDIsICAgIC0xLCAgIDE0MiwgICAgNzQsICAg
MTI1LCAgICA3NSwgICAgLTEsCi0gICAgICAzOSwgICAgLTEsICAgIDExLCAgICAtMSwgICAgMTIs
ICAgIC0xLCAgICAxMCwgICAgLTEsICAgIDI3LCAgICAtMSwKLSAgICAgIDI4LCAgICAtMSwgICAg
MjksICAgIC0xLCAgICAyMSwgICAgLTEsICAgIDIyLCAgICAtMSwgICAgMjMsICAgIC0xLAotICAg
ICAgMjQsICAgIC0xLCAgICAyNSwgICAgLTEsICAgIDI2LCAgICAtMSwgICAgMzAsICAgIC0xLCAg
ICAzMSwgICAgLTEsCi0gICAgICAzMiwgICAgLTEsICAgIDQxLCAgICAtMSwgICAgNDIsICAgIC0x
LCAgICA0MywgICAgLTEsICAgIDQ0LCAgICAtMSwKLSAgICAgMTQzLCAgICAtMSwgICAgNDYsICAg
IC0xLCAgICAtMSwgICAgMzgsICAgIDQ1LCAgICA3NiwgICAxNDQsICAgMTQ2LAotICAgICAgNzcs
ICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDc2LCAgIDE0NSwgICAxNDYsICAgIDc3LCAgICAtMSwg
ICAxNDcsCi0gICAgICAtMSwgICAxNDYsICAgMTQ3LCAgICAtMSwgICAxMzksICAgMTQ4LCAgICA4
MiwgICAgLTEsICAgMTQ5LCAgICAtMSwKLSAgICAgMTQ4LCAgICA3OSwgICAxNDksICAgIC0xLCAg
ICA0NSwgICAgLTEsICAgIDQ1LCAgICA3NCwgICAxMjUsICAgIDc1LAotICAgICAgLTEsICAgMTIy
LCAgICAtMSwgICAxMjYsICAgIC0xLCAgIDE1NCwgICAgLTEsICAgMTUzLCAgICAtMSwgICAxNTEs
Ci0gICAgICAtMSwgICAxNjMsICAgIC0xLCAgIDE2NCwgICAgLTEsICAgMTY3LCAgICAtMSwgICAx
NzQsICAgIC0xLCAgICA3NiwKLSAgICAgIDc3LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3Niwg
ICAxNTUsICAgMTYyLCAgIDE1NiwgICAgNzcsICAgIC0xLAotICAgICAxNjEsICAgIC0xLCAgIDE1
MywgICAgLTEsICAgIC0xLCAgIDE1OSwgICAxNjEsICAgIC0xLCAgICAtMSwgICAxNjAsCi0gICAg
IDE1MywgICAgLTEsICAgIDc2LCAgICA3NywgICAgLTEsICAgIDc2LCAgIDE2MiwgICAgNzcsICAg
IC0xLCAgIDE1MiwKLSAgICAgIC0xLCAgIDE2MiwgICAxNTIsICAgIC0xLCAgICA4MiwgICAgLTEs
ICAgMTI0LCAgICA4MiwgICAgLTEsICAgIDE4LAotICAgICAgNzIsICAgMTI0LCAgICA3MywgICAx
NjUsICAgIC0xLCAgIDE1OCwgICAgMTYsICAgMTU4LCAgICAtMSwgICAxNTgsCi0gICAgICAtMSwg
ICAxMjQsICAgIC0xLCAgIDEzNywgICAgNDUsICAgIDgxLCAgIDE1MCwgICAgLTEsICAgIC0xLCAg
ICA0MCwKLSAgICAgIDcyLCAgIDE2OCwgICAxNjYsICAgIDczLCAgIDE1NywgICAgLTEsICAgIC0x
LCAgICAxNSwgICAxNjksICAgMTU4LAotICAgICAgNDAsICAgIDcyLCAgIDEyNCwgICAgNzMsICAg
IDgyLCAgICAtMSwgICAgLTEsICAgIDE3LCAgICA3MiwgICAxNzAsCi0gICAgIDE3MSwgICAxNzMs
ICAgIDczLCAgIDE1NywgICAgLTEsICAgMTYzLCAgICAtMSwgICAxNTEsICAgIC0xLCAgIDE2NiwK
LSAgICAgIC0xLCAgICAtMSwgICAxNzIsICAgIDgyLCAgICAtMSwgICAxNzIsICAgIDgyLCAgIDEy
NCwgICAgLTEsICAgIDE0LAotICAgICAgODIsICAgIC0xLCAgICAxMywgICAgODIsICAgIC0xLCAg
ICAyMCwgICAgODIsICAgIC0xLCAgICAyMCwgICAxMjQsCi0gICAgICA4MiwgICAgLTEsICAgIDE5
LCAgICA4MiwgICAgLTEsICAgMTc2LCAgICAtMSwgICAxNzUsICAgMTc2LCAgICAtMSwKLSAgICAg
MTc3LCAgICAtMSwgICAxMjYsICAgIC0xLCAgICAtMSwgICAxMjcsICAgMTc4LCAgIDE2MSwgICAg
LTEKKyAgICAgMTc1LCAgICAgMCwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgNDYsICAgIC0xLCAg
ICA0NSwgICAgLTEsICAgIDk3LAorICAgICAgLTEsICAgIDQ4LCAgICAtMSwgICAgNDcsICAgIC0x
LCAgICA0OSwgICAgLTEsICAgIDcxLCAgIDEyNCwgICAgNzIsCisgICAgICAtMSwgICAgOTgsICAg
IC0xLCAgICA5OSwgICAgNzMsICAgMTAwLCAgICA3NCwgICAgLTEsICAgMTAxLCAgICAtMSwKKyAg
ICAgIDk5LCAgICA3NywgICAgOTYsICAgIC0xLCAgICA5OSwgICAgNTIsICAgIC0xLCAgICA5OSwg
ICAgNTMsICAgIC0xLAorICAgICAxMjQsICAgIC0xLCAgIDEwMiwgICAgLTEsICAgMTAzLCAgICAt
MSwgICAgOTksICAgIDc3LCAgIDEwMywgICAgLTEsCisgICAgIDEwNSwgICAgNzIsICAgIC0xLCAg
IDEwNCwgICAgNzIsICAgIC0xLCAgIDEwNiwgICAgMzksICAgIC0xLCAgIDEwNiwKKyAgICAgIC0x
LCAgIDEwNiwgICAxMjIsICAgIC0xLCAgIDEwNSwgICAgNzgsICAgMTIyLCAgICAtMSwgICAxMDcs
ICAgIDcxLAorICAgICAgLTEsICAgMTQyLCAgICAtMSwgICAgNDUsICAgIC0xLCAgICA5OSwgICAg
LTEsICAgIDUyLCAgIDEwOCwgICAgLTEsCisgICAgICA1MywgICAxMDgsICAgIC0xLCAgIDEwOSwg
ICAxMDgsICAgIC0xLCAgICA4NSwgICAgLTEsICAgIDgzLCAgICAtMSwKKyAgICAgIDgyLCAgICAt
MSwgICAxMDgsICAgIC0xLCAgIDExMCwgICAgODYsICAgMTA4LCAgICAtMSwgICAxMTAsICAgIDg3
LAorICAgICAxMDgsICAgIC0xLCAgIDExMCwgICAgLTEsICAgMTExLCAgICA4NSwgICAxMTAsICAg
IC0xLCAgIDExMSwgICAgODMsCisgICAgIDExMCwgICAgLTEsICAgMTExLCAgICAtMSwgICAxMTIs
ICAgIC0xLCAgIDExMywgICAgODksICAgMTEyLCAgICAtMSwKKyAgICAgMTEzLCAgICA5MCwgICAx
MTIsICAgIC0xLCAgIDExMywgICAgNTQsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDU1LAorICAg
ICAxMTIsICAgIC0xLCAgIDExMywgICAgLTEsICAgMTE0LCAgICA1NiwgICAxMTMsICAgIC0xLCAg
IDExNCwgICAgNTcsCisgICAgIDExMywgICAgLTEsICAgMTE0LCAgICAtMSwgICAxMTUsICAgIC0x
LCAgIDExNiwgICAgLTEsICAgMTE3LCAgICAtMSwKKyAgICAgMTE4LCAgICA1OCwgICAxMTcsICAg
IC0xLCAgIDExOCwgICAgLTEsICAgMTE5LCAgICA2MCwgICAxMTgsICAgIC0xLAorICAgICAxMTks
ICAgIC0xLCAgIDEyMCwgICAgNTksICAgMTE5LCAgICAtMSwgICAxMjAsICAgIC0xLCAgIDEyMCwg
ICAgOTQsCisgICAgIDEyNCwgICAgNzksICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEw
OCwgICAxMjMsICAgMTIyLCAgICAtMSwKKyAgICAgIDgwLCAgICAtMSwgICAgNjEsICAgIC0xLCAg
ICA2MiwgICAgLTEsICAgIDYzLCAgICAtMSwgICAgNzAsICAgIC0xLAorICAgICAxMjIsICAgIC0x
LCAgIDEyNCwgICAgNzgsICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEyNywgICAgODEs
CisgICAgICAtMSwgICAxMzUsICAgIDgxLCAgICAtMSwgICAgIDcsICAgMTQwLCAgIDE0MSwgICAg
ODEsICAgIC0xLCAgIDEyOCwKKyAgICAgIDcyLCAgICAtMSwgICAxMzAsICAgIC0xLCAgIDEyOSwg
ICAgLTEsICAgMTMwLCAgIDEzMiwgICAgLTEsICAgMTI5LAorICAgICAgNzgsICAgMTMyLCAgICAt
MSwgICAxMzcsICAgIDQ1LCAgICA3MSwgICAgLTEsICAgMTM5LCAgICA5NiwgICAgLTEsCisgICAg
IDEzOSwgICAgOTYsICAgIDczLCAgIDEyNSwgICAgNzQsICAgIC0xLCAgIDEzOCwgICAxMzMsICAg
MTMxLCAgICAtMSwKKyAgICAgMTMzLCAgIDEzMSwgICAgLTEsICAgMTM4LCAgIDEzMywgICAxMzQs
ICAgIC0xLCAgIDEzMywgICAxMzQsICAgIC0xLAorICAgICAgLTEsICAgIDMzLCAgICAtMSwgICAg
MzQsICAgIC0xLCAgICAzNSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAxMzYsCisgICAgICAtMSwg
ICAxMzUsICAgIDc4LCAgICA5NiwgICAgLTEsICAgMTM1LCAgICA3OCwgICAgOTYsICAgIDczLCAg
ICA3NCwKKyAgICAgIC0xLCAgIDEzNSwgICAgNzgsICAgIDk2LCAgICA3MywgICAxMjUsICAgIDc0
LCAgICAtMSwgICAxMzUsICAgIDc4LAorICAgICAgOTYsICAgIDgwLCAgIDE1MCwgICAgLTEsICAg
MTM3LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICAtMSwgICAxMzcsCisgICAgICA5NiwgICAgNzMs
ICAgIDc0LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICA3MywgICAxMjUsICAgIDc0LCAgICAtMSwK
KyAgICAgMTM3LCAgICA5NiwgICAgODAsICAgMTUwLCAgICAtMSwgICAgIDMsICAgIDQ1LCAgICAt
MSwgICAxMzksICAgIC0xLAorICAgICAxMzgsICAgMTM5LCAgICAtMSwgICAgIDksICAgIC0xLCAg
ICAgOCwgICAgLTEsICAgIDM3LCAgICAtMSwgICAgIDMsCisgICAgICAzNywgICAgLTEsICAgIDM2
LCAgICAtMSwgICAxNDEsICAgIC0xLCAgIDE0MCwgICAxNDEsICAgIC0xLCAgICAgNCwKKyAgICAg
IC0xLCAgICAgNSwgICAgLTEsICAgICA2LCAgICAtMSwgICAxNDIsICAgIC0xLCAgIDE0MiwgICAg
NzMsICAgMTI1LAorICAgICAgNzQsICAgIC0xLCAgICAzOSwgICAgLTEsICAgIDExLCAgICAtMSwg
ICAgMTIsICAgIC0xLCAgICAxMCwgICAgLTEsCisgICAgICAyNywgICAgLTEsICAgIDI4LCAgICAt
MSwgICAgMjksICAgIC0xLCAgICAyMSwgICAgLTEsICAgIDIyLCAgICAtMSwKKyAgICAgIDIzLCAg
ICAtMSwgICAgMjQsICAgIC0xLCAgICAyNSwgICAgLTEsICAgIDI2LCAgICAtMSwgICAgMzAsICAg
IC0xLAorICAgICAgMzEsICAgIC0xLCAgICAzMiwgICAgLTEsICAgIDQxLCAgICAtMSwgICAgNDIs
ICAgIC0xLCAgICA0MywgICAgLTEsCisgICAgICA0NCwgICAgLTEsICAgMTQzLCAgICAtMSwgICAg
NDYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDk2LCAgICA3NSwKKyAgICAgMTQ0LCAgIDE0Niwg
ICAgNzYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDc1LCAgIDE0NSwgICAxNDYsICAgIDc2LAor
ICAgICAgLTEsICAgMTQ3LCAgICAtMSwgICAxNDYsICAgMTQ3LCAgICAtMSwgICAxMzksICAgMTQ4
LCAgICA4MSwgICAgLTEsCisgICAgIDE0OSwgICAgLTEsICAgMTQ4LCAgICA3OCwgICAxNDksICAg
IC0xLCAgICA5NiwgICAgLTEsICAgIDk2LCAgICA3MywKKyAgICAgMTI1LCAgICA3NCwgICAgLTEs
ICAgMTIyLCAgICAtMSwgICAxMjYsICAgIC0xLCAgIDE1NCwgICAgLTEsICAgMTUzLAorICAgICAg
LTEsICAgMTUxLCAgICAtMSwgICAxNjMsICAgIC0xLCAgIDE2NCwgICAgLTEsICAgMTY3LCAgICAt
MSwgICAxNzQsCisgICAgICAtMSwgICAgNzUsICAgIDc2LCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICA3NSwgICAxNTUsICAgMTYyLCAgIDE1NiwKKyAgICAgIDc2LCAgICAtMSwgICAxNjEsICAgIC0x
LCAgIDE1MywgICAgLTEsICAgIC0xLCAgIDE1OSwgICAxNjEsICAgIC0xLAorICAgICAgLTEsICAg
MTYwLCAgIDE1MywgICAgLTEsICAgIDc1LCAgICA3NiwgICAgLTEsICAgIDc1LCAgIDE2MiwgICAg
NzYsCisgICAgICAtMSwgICAxNTIsICAgIC0xLCAgIDE2MiwgICAxNTIsICAgIC0xLCAgICA4MSwg
ICAgLTEsICAgMTI0LCAgICA4MSwKKyAgICAgIC0xLCAgICAxOCwgICAgNzEsICAgMTI0LCAgICA3
MiwgICAxNjUsICAgIC0xLCAgIDE1OCwgICAgMTYsICAgMTU4LAorICAgICAgLTEsICAgMTU4LCAg
ICAtMSwgICAxMjQsICAgIC0xLCAgIDEzNywgICAgOTYsICAgIDgwLCAgIDE1MCwgICAgLTEsCisg
ICAgICAtMSwgICAgNDAsICAgIDcxLCAgIDE2OCwgICAxNjYsICAgIDcyLCAgIDE1NywgICAgLTEs
ICAgIC0xLCAgICAxNSwKKyAgICAgMTY5LCAgIDE1OCwgICAgNDAsICAgIDcxLCAgIDEyNCwgICAg
NzIsICAgIDgxLCAgICAtMSwgICAgLTEsICAgIDE3LAorICAgICAgNzEsICAgMTcwLCAgIDE3MSwg
ICAxNzMsICAgIDcyLCAgIDE1NywgICAgLTEsICAgMTYzLCAgICAtMSwgICAxNTEsCisgICAgICAt
MSwgICAxNjYsICAgIC0xLCAgICAtMSwgICAxNzIsICAgIDgxLCAgICAtMSwgICAxNzIsICAgIDgx
LCAgIDEyNCwKKyAgICAgIC0xLCAgICAxNCwgICAgODEsICAgIC0xLCAgICAxMywgICAgODEsICAg
IC0xLCAgICAyMCwgICAgODEsICAgIC0xLAorICAgICAgMjAsICAgMTI0LCAgICA4MSwgICAgLTEs
ICAgIDE5LCAgICA4MSwgICAgLTEsICAgMTc2LCAgICAtMSwgICAxNzUsCisgICAgIDE3NiwgICAg
LTEsICAgMTc3LCAgICAtMSwgICAxMjYsICAgIC0xLCAgICAtMSwgICAxMjcsICAgMTc4LCAgIDE2
MSwKKyAgICAgIC0xCiB9OwogCiAvKiBZWVJMSU5FW1lZTl0gLS0gc291cmNlIGxpbmUgd2hlcmUg
cnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWlu
dDE2IHl5cmxpbmVbXSA9CiB7Ci0gICAgICAgMCwgICAxNjgsICAgMTY4LCAgIDIwMywgICAyMDYs
ICAgMjE5LCAgIDIyNCwgICAyMjksICAgMjM1LCAgIDIzOCwKLSAgICAgMzE3LCAgIDMyMCwgICA0
MjEsICAgNDMxLCAgIDQ0NCwgICA0NTIsICAgNTUyLCAgIDU1NSwgICA1NjMsICAgNTY3LAotICAg
ICA1NzQsICAgNTc4LCAgIDU4NSwgICA1OTEsICAgNjAwLCAgIDYwOCwgICA2NjMsICAgNjcwLCAg
IDY4MCwgICA2ODMsCi0gICAgIDY5MywgICA3MDMsICAgNzI0LCAgIDcyNSwgICA3MjYsICAgNzMx
LCAgIDczMiwgICA3NDEsICAgNzUzLCAgIDc1NCwKLSAgICAgNzYyLCAgIDc3MywgICA3NzcsICAg
Nzc4LCAgIDc4OCwgICA3OTgsICAgODA4LCAgIDgyMSwgICA4MjIsICAgODMyLAotICAgICA4NDUs
ICAgODQ5LCAgIDg1MywgICA4NTcsICAgODU4LCAgIDg3MSwgICA4NzIsICAgODg1LCAgIDg4Niwg
ICA4OTksCi0gICAgIDkwMCwgICA5MTcsICAgOTE4LCAgIDkzMSwgICA5MzIsICAgOTMzLCAgIDkz
NCwgICA5MzUsICAgOTM5LCAgIDk0MiwKLSAgICAgOTUzLCAgIDk2MSwgICA5ODgsICAgOTkzLCAg
MTAwNywgIDEwNDUsICAxMDQ4LCAgMTA1NSwgIDEwNjMsICAxMDg0LAotICAgIDExMDUsICAxMTE2
LCAgMTE0NSwgIDExNTAsICAxMTYwLCAgMTE2NSwgIDExNzUsICAxMTc4LCAgMTE4MSwgIDExODQs
Ci0gICAgMTE5MCwgIDExOTcsICAxMjAwLCAgMTIyMiwgIDEyNDAsICAxMjY0LCAgMTI4NywgIDEy
OTEsICAxMzA5LCAgMTMxNywKLSAgICAxMzQ5LCAgMTM2OSwgIDE0NTgsICAxNDY3LCAgMTQ5MCwg
IDE0OTMsICAxNDk5LCAgMTUwNywgIDE1MTUsICAxNTIzLAotICAgIDE1MzMsICAxNTQwLCAgMTU0
MywgIDE1NDYsICAxNTUyLCAgMTU1NSwgIDE1NzAsICAxNTc0LCAgMTU3OCwgIDE1ODIsCi0gICAg
MTU5MSwgIDE1OTYsICAxNjAxLCAgMTYwNiwgIDE2MTEsICAxNjE2LCAgMTYyMSwgIDE2MjYsICAx
NjMxLCAgMTYzNiwKLSAgICAxNjQyLCAgMTY0OCwgIDE2NTQsICAxNjU5LCAgMTY2NCwgIDE2NzMs
ICAxNjgyLCAgMTY4NywgIDE3MDAsICAxNzAwLAotICAgIDE3MTQsICAxNzE0LCAgMTcyMywgIDE3
MjYsICAxNzQxLCAgMTc3NywgIDE3ODEsICAxNzg3LCAgMTc5NSwgIDE4MTEsCi0gICAgMTgxNSwg
IDE4MTksICAxODIwLCAgMTgyNiwgIDE4MjcsICAxODI4LCAgMTgyOSwgIDE4MzAsICAxODM0LCAg
MTgzNSwKLSAgICAxODM1LCAgMTgzNSwgIDE4NDUsICAxODQ2LCAgMTg1MCwgIDE4NTAsICAxODUx
LCAgMTg1MSwgIDE4NTYsICAxODU5LAotICAgIDE4NjksICAxODcyLCAgMTg3OCwgIDE4NzksICAx
ODgzLCAgMTg5MSwgIDE4OTUsICAxOTA1LCAgMTkxMCwgIDE5MjcsCi0gICAgMTkyNywgIDE5MzIs
ICAxOTMyLCAgMTkzOSwgIDE5MzksICAxOTQ3LCAgMTk1MCwgIDE5NTYsICAxOTU5LCAgMTk2NSwK
LSAgICAxOTY5LCAgMTk3NiwgIDE5ODMsICAxOTkwLCAgMTk5NywgIDIwMDgsICAyMDE3LCAgMjAy
MSwgIDIwMjgsICAyMDMxLAotICAgIDIwMzcsICAyMDM3CisgICAgICAgMCwgICAxNzYsICAgMTc2
LCAgIDE3NywgICAxODAsICAgMjIzLCAgIDIyNiwgICAyMzksICAgMjQ0LCAgIDI0OSwKKyAgICAg
MjU1LCAgIDI1OCwgICAyNjEsICAgMjY0LCAgIDM1OSwgICAzNjksICAgMzgyLCAgIDM5MCwgICA0
OTAsICAgNDkzLAorICAgICA1MDEsICAgNTA0LCAgIDUxMCwgICA1MTQsICAgNTIxLCAgIDUyNywg
ICA1MzYsICAgNTQ0LCAgIDU5OSwgICA2MDksCisgICAgIDYxMiwgICA2MjIsICAgNjMyLCAgIDY1
MywgICA2NTQsICAgNjU1LCAgIDY2MCwgICA2NjEsICAgNjY5LCAgIDY4MCwKKyAgICAgNjgxLCAg
IDY4OSwgICA3MDAsICAgNzA0LCAgIDcwNSwgICA3MTUsICAgNzI1LCAgIDczNSwgICA3NDgsICAg
NzQ5LAorICAgICA3NTksICAgNzcyLCAgIDc3NiwgICA3ODAsICAgNzg0LCAgIDc4NSwgICA3OTgs
ICAgNzk5LCAgIDgxMiwgICA4MTMsCisgICAgIDgyNiwgICA4MjcsICAgODQ0LCAgIDg0NSwgICA4
NTgsICAgODU5LCAgIDg2MCwgICA4NjEsICAgODYyLCAgIDg2NiwKKyAgICAgODY5LCAgIDg4MCwg
ICA4ODgsICAgOTE1LCAgIDkyMCwgICA5MzQsICAgOTg5LCAgIDk5MiwgICA5OTksICAxMDA3LAor
ICAgIDEwMjgsICAxMDQ5LCAgMTA1OSwgIDEwODcsICAxMDkyLCAgMTEwMiwgIDExMDcsICAxMTE3
LCAgMTEyMCwgIDExMjMsCisgICAgMTEyNiwgIDExMzIsICAxMTM5LCAgMTE0MiwgIDExNjQsICAx
MTgyLCAgMTIwNiwgIDEyMjksICAxMjMzLCAgMTI1MSwKKyAgICAxMjU5LCAgMTI5MSwgIDEzMTEs
ICAxMzMyLCAgMTM0MSwgIDEzNjQsICAxMzY3LCAgMTM3MywgIDEzODEsICAxMzg5LAorICAgIDEz
OTcsICAxNDA3LCAgMTQxNCwgIDE0MTcsICAxNDIwLCAgMTQyNiwgIDE0MjksICAxNDQ0LCAgMTQ0
OCwgIDE0NTIsCisgICAgMTQ1NiwgIDE0NjAsICAxNDY1LCAgMTQ3MCwgIDE0NzUsICAxNDgwLCAg
MTQ4NSwgIDE0OTAsICAxNDk1LCAgMTUwMCwKKyAgICAxNTA1LCAgMTUxMCwgIDE1MTUsICAxNTIw
LCAgMTUyNCwgIDE1MjgsICAxNTM2LCAgMTU0NCwgIDE1NDgsICAxNTYxLAorICAgIDE1NjEsICAx
NTc1LCAgMTU3NSwgIDE1ODQsICAxNTg3LCAgMTYwMywgIDE2MzYsICAxNjQwLCAgMTY0NiwgIDE2
NTMsCisgICAgMTY2OCwgIDE2NzIsICAxNjc2LCAgMTY3NywgIDE2ODMsICAxNjg0LCAgMTY4NSwg
IDE2ODYsICAxNjg3LCAgMTY5MSwKKyAgICAxNjkyLCAgMTY5MiwgIDE2OTIsICAxNzAyLCAgMTcw
MywgIDE3MDcsICAxNzA3LCAgMTcwOCwgIDE3MDgsICAxNzEzLAorICAgIDE3MTYsICAxNzI2LCAg
MTcyOSwgIDE3MzUsICAxNzM2LCAgMTc0MCwgIDE3NDgsICAxNzUyLCAgMTc2MiwgIDE3NjcsCisg
ICAgMTc4NCwgIDE3ODQsICAxNzg5LCAgMTc4OSwgIDE3OTYsICAxNzk2LCAgMTgwNCwgIDE4MDcs
ICAxODEzLCAgMTgxNiwKKyAgICAxODIyLCAgMTgyNiwgIDE4MzMsICAxODQwLCAgMTg0NywgIDE4
NTQsICAxODY1LCAgMTg3NCwgIDE4NzgsICAxODg1LAorICAgIDE4ODgsICAxODk0LCAgMTg5NAog
fTsKICNlbmRpZgogCkBAIC03ODgsMTUgKzgwNywxNSBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29u
c3QgeXl0bmFtZVtdID0KICAgIk1BVFJJWDMiLCAiTUFUUklYNCIsICJJTl9RVUFMIiwgIk9VVF9R
VUFMIiwgIklOT1VUX1FVQUwiLCAiVU5JRk9STSIsCiAgICJWQVJZSU5HIiwgIlNUUlVDVCIsICJW
T0lEX1RZUEUiLCAiV0hJTEUiLCAiU0FNUExFUjJEIiwgIlNBTVBMRVJDVUJFIiwKICAgIlNBTVBM
RVJfRVhURVJOQUxfT0VTIiwgIlNBTVBMRVIyRFJFQ1QiLCAiSURFTlRJRklFUiIsICJUWVBFX05B
TUUiLAotICAiRkxPQVRDT05TVEFOVCIsICJJTlRDT05TVEFOVCIsICJCT09MQ09OU1RBTlQiLCAi
RklFTERfU0VMRUNUSU9OIiwKLSAgIkxFRlRfT1AiLCAiUklHSFRfT1AiLCAiSU5DX09QIiwgIkRF
Q19PUCIsICJMRV9PUCIsICJHRV9PUCIsICJFUV9PUCIsCi0gICJORV9PUCIsICJBTkRfT1AiLCAi
T1JfT1AiLCAiWE9SX09QIiwgIk1VTF9BU1NJR04iLCAiRElWX0FTU0lHTiIsCi0gICJBRERfQVNT
SUdOIiwgIk1PRF9BU1NJR04iLCAiTEVGVF9BU1NJR04iLCAiUklHSFRfQVNTSUdOIiwgIkFORF9B
U1NJR04iLAotICAiWE9SX0FTU0lHTiIsICJPUl9BU1NJR04iLCAiU1VCX0FTU0lHTiIsICJMRUZU
X1BBUkVOIiwgIlJJR0hUX1BBUkVOIiwKLSAgIkxFRlRfQlJBQ0tFVCIsICJSSUdIVF9CUkFDS0VU
IiwgIkxFRlRfQlJBQ0UiLCAiUklHSFRfQlJBQ0UiLCAiRE9UIiwKLSAgIkNPTU1BIiwgIkNPTE9O
IiwgIkVRVUFMIiwgIlNFTUlDT0xPTiIsICJCQU5HIiwgIkRBU0giLCAiVElMREUiLCAiUExVUyIs
Ci0gICJTVEFSIiwgIlNMQVNIIiwgIlBFUkNFTlQiLCAiTEVGVF9BTkdMRSIsICJSSUdIVF9BTkdM
RSIsICJWRVJUSUNBTF9CQVIiLAotICAiQ0FSRVQiLCAiQU1QRVJTQU5EIiwgIlFVRVNUSU9OIiwg
IiRhY2NlcHQiLCAidmFyaWFibGVfaWRlbnRpZmllciIsCisgICJGTE9BVENPTlNUQU5UIiwgIklO
VENPTlNUQU5UIiwgIkJPT0xDT05TVEFOVCIsICJMRUZUX09QIiwgIlJJR0hUX09QIiwKKyAgIklO
Q19PUCIsICJERUNfT1AiLCAiTEVfT1AiLCAiR0VfT1AiLCAiRVFfT1AiLCAiTkVfT1AiLCAiQU5E
X09QIiwKKyAgIk9SX09QIiwgIlhPUl9PUCIsICJNVUxfQVNTSUdOIiwgIkRJVl9BU1NJR04iLCAi
QUREX0FTU0lHTiIsCisgICJNT0RfQVNTSUdOIiwgIkxFRlRfQVNTSUdOIiwgIlJJR0hUX0FTU0lH
TiIsICJBTkRfQVNTSUdOIiwgIlhPUl9BU1NJR04iLAorICAiT1JfQVNTSUdOIiwgIlNVQl9BU1NJ
R04iLCAiTEVGVF9QQVJFTiIsICJSSUdIVF9QQVJFTiIsICJMRUZUX0JSQUNLRVQiLAorICAiUklH
SFRfQlJBQ0tFVCIsICJMRUZUX0JSQUNFIiwgIlJJR0hUX0JSQUNFIiwgIkRPVCIsICJDT01NQSIs
ICJDT0xPTiIsCisgICJFUVVBTCIsICJTRU1JQ09MT04iLCAiQkFORyIsICJEQVNIIiwgIlRJTERF
IiwgIlBMVVMiLCAiU1RBUiIsICJTTEFTSCIsCisgICJQRVJDRU5UIiwgIkxFRlRfQU5HTEUiLCAi
UklHSFRfQU5HTEUiLCAiVkVSVElDQUxfQkFSIiwgIkNBUkVUIiwKKyAgIkFNUEVSU0FORCIsICJR
VUVTVElPTiIsICIkYWNjZXB0IiwgImlkZW50aWZpZXIiLCAidmFyaWFibGVfaWRlbnRpZmllciIs
CiAgICJwcmltYXJ5X2V4cHJlc3Npb24iLCAicG9zdGZpeF9leHByZXNzaW9uIiwgImludGVnZXJf
ZXhwcmVzc2lvbiIsCiAgICJmdW5jdGlvbl9jYWxsIiwgImZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9k
IiwgImZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyIsCiAgICJmdW5jdGlvbl9jYWxsX2hlYWRlcl9ub19w
YXJhbWV0ZXJzIiwKQEAgLTg0Miw2MCArODYxLDYwIEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWlu
dDE2IHl5dG9rbnVtW10gPQogICAgICAzMTUsICAgMzE2LCAgIDMxNywgICAzMTgsICAgMzE5LCAg
IDMyMCwgICAzMjEsICAgMzIyLCAgIDMyMywgICAzMjQsCiAgICAgIDMyNSwgICAzMjYsICAgMzI3
LCAgIDMyOCwgICAzMjksICAgMzMwLCAgIDMzMSwgICAzMzIsICAgMzMzLCAgIDMzNCwKICAgICAg
MzM1LCAgIDMzNiwgICAzMzcsICAgMzM4LCAgIDMzOSwgICAzNDAsICAgMzQxLCAgIDM0MiwgICAz
NDMsICAgMzQ0LAotICAgICAzNDUsICAgMzQ2LCAgIDM0NywgICAzNDgsICAgMzQ5LCAgIDM1MAor
ICAgICAzNDUsICAgMzQ2LCAgIDM0NywgICAzNDgsICAgMzQ5CiB9OwogIyBlbmRpZgogCiAvKiBZ
WVIxW1lZTl0gLS0gU3ltYm9sIG51bWJlciBvZiBzeW1ib2wgdGhhdCBydWxlIFlZTiBkZXJpdmVz
LiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMVtdID0KIHsKLSAgICAgICAwLCAg
ICA5NiwgICAgOTcsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk4LCAgICA5OCwgICAgOTksICAg
IDk5LAotICAgICAgOTksICAgIDk5LCAgICA5OSwgICAgOTksICAgMTAwLCAgIDEwMSwgICAxMDIs
ICAgMTAyLCAgIDEwMywgICAxMDMsCi0gICAgIDEwNCwgICAxMDQsICAgMTA1LCAgIDEwNSwgICAx
MDYsICAgMTA3LCAgIDEwNywgICAxMDcsICAgMTA4LCAgIDEwOCwKLSAgICAgMTA4LCAgIDEwOCwg
ICAxMDksICAgMTA5LCAgIDEwOSwgICAxMTAsICAgMTEwLCAgIDExMCwgICAxMTEsICAgMTExLAot
ICAgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTE0
LCAgIDExNCwgICAxMTQsCi0gICAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwgICAxMTgsICAg
MTE5LCAgIDExOSwgICAxMjAsICAgMTIwLCAgIDEyMSwKLSAgICAgMTIxLCAgIDEyMiwgICAxMjIs
ICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjQsICAgMTI0LAotICAgICAx
MjUsICAgMTI2LCAgIDEyNiwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjgsICAgMTI5LCAgIDEy
OSwgICAxMzAsCi0gICAgIDEzMSwgICAxMzEsICAgMTMyLCAgIDEzMiwgICAxMzIsICAgMTMyLCAg
IDEzMywgICAxMzMsICAgMTMzLCAgIDEzMywKLSAgICAgMTM0LCAgIDEzNSwgICAxMzUsICAgMTM1
LCAgIDEzNSwgICAxMzUsICAgMTM2LCAgIDEzNiwgICAxMzYsICAgMTM2LAotICAgICAxMzYsICAg
MTM2LCAgIDEzNywgICAxMzcsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEzOCwgICAx
MzksCi0gICAgIDEzOSwgICAxNDAsICAgMTQwLCAgIDE0MCwgICAxNDEsICAgMTQxLCAgIDE0Miwg
ICAxNDIsICAgMTQyLCAgIDE0MiwKKyAgICAgICAwLCAgICA5NSwgICAgOTYsICAgIDk2LCAgICA5
NywgICAgOTgsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk4LAorICAgICAgOTksICAgIDk5LCAg
ICA5OSwgICAgOTksICAgIDk5LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAxMDIsCisg
ICAgIDEwMywgICAxMDMsICAgMTA0LCAgIDEwNCwgICAxMDUsICAgMTA1LCAgIDEwNiwgICAxMDcs
ICAgMTA3LCAgIDEwOCwKKyAgICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA5LCAgIDEwOSwgICAx
MDksICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTExLAorICAgICAxMTEsICAgMTExLCAgIDExMiwg
ICAxMTMsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExNCwgICAxMTQsCisgICAgIDEx
NCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE4LCAgIDExOSwgICAxMTksICAgMTIw
LCAgIDEyMCwKKyAgICAgMTIxLCAgIDEyMSwgICAxMjIsICAgMTIyLCAgIDEyMywgICAxMjMsICAg
MTIzLCAgIDEyMywgICAxMjMsICAgMTI0LAorICAgICAxMjQsICAgMTI1LCAgIDEyNiwgICAxMjYs
ICAgMTI2LCAgIDEyNywgICAxMjgsICAgMTI4LCAgIDEyOSwgICAxMjksCisgICAgIDEzMCwgICAx
MzEsICAgMTMxLCAgIDEzMiwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzMsICAgMTMzLCAgIDEz
MywKKyAgICAgMTMzLCAgIDEzNCwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM1LCAg
IDEzNiwgICAxMzYsICAgMTM2LAorICAgICAxMzYsICAgMTM2LCAgIDEzNiwgICAxMzcsICAgMTM3
LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEzOCwgICAxMzgsCisgICAgIDEzOSwgICAxMzksICAg
MTQwLCAgIDE0MCwgICAxNDAsICAgMTQxLCAgIDE0MSwgICAxNDIsICAgMTQyLCAgIDE0MiwKICAg
ICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0Miwg
ICAxNDIsICAgMTQyLAotICAgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0
MiwgICAxNDIsICAgMTQyLCAgIDE0NCwgICAxNDMsCi0gICAgIDE0NSwgICAxNDMsICAgMTQ2LCAg
IDE0NiwgICAxNDcsICAgMTQ4LCAgIDE0OCwgICAxNDksICAgMTQ5LCAgIDE1MCwKLSAgICAgMTUx
LCAgIDE1MiwgICAxNTIsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1MywgICAxNTQs
ICAgMTU1LAotICAgICAxNTYsICAgMTU0LCAgIDE1NywgICAxNTcsICAgMTU5LCAgIDE1OCwgICAx
NjAsICAgMTU4LCAgIDE2MSwgICAxNjEsCi0gICAgIDE2MiwgICAxNjIsICAgMTYzLCAgIDE2Mywg
ICAxNjQsICAgMTY1LCAgIDE2NSwgICAxNjYsICAgMTY2LCAgIDE2OCwKLSAgICAgMTY3LCAgIDE2
OSwgICAxNjcsICAgMTcwLCAgIDE2NywgICAxNzEsICAgMTcxLCAgIDE3MiwgICAxNzIsICAgMTcz
LAotICAgICAxNzMsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzUsICAg
MTc1LCAgIDE3NiwgICAxNzYsCi0gICAgIDE3OCwgICAxNzcKKyAgICAgMTQyLCAgIDE0MiwgICAx
NDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQ0LAorICAg
ICAxNDMsICAgMTQ1LCAgIDE0MywgICAxNDYsICAgMTQ2LCAgIDE0NywgICAxNDgsICAgMTQ4LCAg
IDE0OSwgICAxNDksCisgICAgIDE1MCwgICAxNTEsICAgMTUyLCAgIDE1MiwgICAxNTMsICAgMTUz
LCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1NCwKKyAgICAgMTU1LCAgIDE1NiwgICAxNTQsICAg
MTU3LCAgIDE1NywgICAxNTksICAgMTU4LCAgIDE2MCwgICAxNTgsICAgMTYxLAorICAgICAxNjEs
ICAgMTYyLCAgIDE2MiwgICAxNjMsICAgMTYzLCAgIDE2NCwgICAxNjUsICAgMTY1LCAgIDE2Niwg
ICAxNjYsCisgICAgIDE2OCwgICAxNjcsICAgMTY5LCAgIDE2NywgICAxNzAsICAgMTY3LCAgIDE3
MSwgICAxNzEsICAgMTcyLCAgIDE3MiwKKyAgICAgMTczLCAgIDE3MywgICAxNzQsICAgMTc0LCAg
IDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NSwgICAxNzUsICAgMTc2LAorICAgICAxNzYsICAgMTc4
LCAgIDE3NwogfTsKIAogLyogWVlSMltZWU5dIC0tIE51bWJlciBvZiBzeW1ib2xzIGNvbXBvc2lu
ZyByaWdodCBoYW5kIHNpZGUgb2YgcnVsZSBZWU4uICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91
aW50OCB5eXIyW10gPQogewotICAgICAgIDAsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDQsCi0gICAgICAgMSwgICAgIDMsICAgICAy
LCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAyLCAgICAgMiwKLSAgICAg
ICAyLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAyLAotICAgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDMsICAgICAzLCAgICAgMSwgICAgIDMsCi0gICAgICAgMywgICAgIDEsICAgICAxLCAgICAg
MywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMywKLSAgICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDMsICAg
ICAxLAotICAgICAgIDUsICAgICAxLCAgICAgMywgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDMsCi0gICAgICAgMSwgICAgIDIsICAgICAyLCAgICAgNCwgICAg
IDIsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMywKLSAgICAgICAyLCAgICAgNSwg
ICAgIDMsICAgICAyLCAgICAgMywgICAgIDIsICAgICAwLCAgICAgMSwgICAgIDEsICAgICAxLAot
ICAgICAgIDEsICAgICAxLCAgICAgMywgICAgIDUsICAgICA2LCAgICAgNSwgICAgIDEsICAgICAy
LCAgICAgNCwgICAgIDUsCi0gICAgICAgNCwgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwKLSAgICAgICAyLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDQsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAorICAgICAg
IDAsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDMsCisgICAgICAgMSwgICAgIDQsICAgICAxLCAgICAgMywgICAgIDIsICAgICAyLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMywKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAx
LCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLAorICAgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAg
IDEsCisgICAgICAgMywgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMywg
ICAgIDMsICAgICAxLCAgICAgMywKKyAgICAgICAzLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLAorICAgICAgIDEsICAgICA1LCAg
ICAgMSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCisg
ICAgICAgMywgICAgIDEsICAgICAyLCAgICAgMiwgICAgIDQsICAgICAyLCAgICAgMSwgICAgIDEs
ICAgICAyLCAgICAgMywKKyAgICAgICAzLCAgICAgMiwgICAgIDUsICAgICAzLCAgICAgMiwgICAg
IDMsICAgICAyLCAgICAgMCwgICAgIDEsICAgICAxLAorICAgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDMsICAgICA1LCAgICAgNiwgICAgIDUsICAgICAxLCAgICAgMiwgICAgIDQsCisgICAgICAg
NSwgICAgIDQsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAy
LCAgICAgMSwKKyAgICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICA0LCAgICAgMSwgICAgIDEsICAgICAxLAogICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAwLCAgICAg
NiwKLSAgICAgICAwLCAgICAgNSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDEsICAgICAzLCAg
ICAgMSwgICAgIDQsICAgICAxLAotICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDAsCi0gICAgICAgMCwgICAgIDUsICAg
ICAxLCAgICAgMSwgICAgIDAsICAgICAyLCAgICAgMCwgICAgIDIsICAgICAyLCAgICAgMywKLSAg
ICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgNSwgICAgIDMsICAgICAxLCAgICAgMSwg
ICAgIDQsICAgICAwLAotICAgICAgIDYsICAgICAwLCAgICAgOCwgICAgIDAsICAgICA3LCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDIsCi0gICAgICAgMywgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwKLSAgICAgICAw
LCAgICAgMworICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDAsCisgICAgICAgNiwgICAgIDAsICAgICA1LCAgICAgMSwg
ICAgIDIsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgNCwKKyAgICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAy
LAorICAgICAgIDAsICAgICAwLCAgICAgNSwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDIsICAg
ICAwLCAgICAgMiwgICAgIDIsCisgICAgICAgMywgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDIs
ICAgICA1LCAgICAgMywgICAgIDEsICAgICAxLCAgICAgNCwKKyAgICAgICAwLCAgICAgNiwgICAg
IDAsICAgICA4LCAgICAgMCwgICAgIDcsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAwLAorICAg
ICAgIDIsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMywgICAgIDIsICAgICAxLCAg
ICAgMiwgICAgIDEsCisgICAgICAgMSwgICAgIDAsICAgICAzCiB9OwogCiAvKiBZWURFRkFDVFtT
VEFURS1OQU1FXSAtLSBEZWZhdWx0IHJ1bGUgdG8gcmVkdWNlIHdpdGggaW4gc3RhdGUKQEAgLTkw
Myw0MDAgKzkyMiw0MTYgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIyW10gPQogICAg
bWVhbnMgdGhlIGRlZmF1bHQgaXMgYW4gZXJyb3IuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91
aW50OCB5eWRlZmFjdFtdID0KIHsKLSAgICAgICAwLCAgICAgMCwgICAxMTEsICAgMTEyLCAgIDEx
MywgICAgIDAsICAgMTA1LCAgIDEwNCwgICAxMTksICAgMTE3LAotICAgICAxMTgsICAgMTIzLCAg
IDEyNCwgICAxMjUsICAgMTI2LCAgIDEyNywgICAxMjgsICAgMTIwLCAgIDEyMSwgICAxMjIsCi0g
ICAgIDEyOSwgICAxMzAsICAgMTMxLCAgIDEwOCwgICAxMDYsICAgICAwLCAgIDExNiwgICAxMzIs
ICAgMTMzLCAgIDEzNCwKLSAgICAgMTM1LCAgIDEzNywgICAxOTksICAgMjAwLCAgICAgMCwgICAg
NzYsICAgIDg2LCAgICAgMCwgICAgOTEsICAgIDk2LAotICAgICAgIDAsICAgMTAyLCAgICAgMCwg
ICAxMDksICAgMTE0LCAgIDEzNiwgICAgIDAsICAgMTk2LCAgIDE5OCwgICAxMDcsCi0gICAgIDEw
MSwgICAgIDAsICAgICAwLCAgIDE0MCwgICAgNzEsICAgICAwLCAgICA3NCwgICAgODYsICAgICAw
LCAgICA4NywKLSAgICAgIDg4LCAgICA4OSwgICAgNzcsICAgICAwLCAgICA4NiwgICAgIDAsICAg
IDcyLCAgICA5NywgICAxMDMsICAgMTEwLAotICAgICAgIDAsICAgICAxLCAgIDE5NywgICAgIDAs
ICAgMTM4LCAgICAgMCwgICAgIDAsICAgMjAxLCAgICA3OCwgICAgODMsCi0gICAgICA4NSwgICAg
OTAsICAgICAwLCAgICA5MiwgICAgNzksICAgICAwLCAgICAgMCwgICAgIDIsICAgICA1LCAgICAg
NCwKLSAgICAgICA2LCAgICAyNywgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzQsICAgIDMzLCAg
ICAzMiwgICAgIDMsICAgICA4LAotICAgICAgMjgsICAgIDEwLCAgICAxNSwgICAgMTYsICAgICAw
LCAgICAgMCwgICAgMjEsICAgICAwLCAgICAzNSwgICAgIDAsCi0gICAgICAzOCwgICAgNDEsICAg
IDQyLCAgICA0NywgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU1LCAgICA1NywKLSAg
ICAgIDU5LCAgICA3MCwgICAgIDAsICAgIDI1LCAgICA3MywgICAgIDAsICAgICAwLCAgICAgMCwg
ICAxNDIsICAgICAwLAotICAgICAgIDAsICAgMTgxLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgMTU5LCAgIDE2OCwgICAxNzIsCi0gICAgICAzNSwgICAgNjEsICAgIDY4LCAg
ICAgMCwgICAxNTAsICAgICAwLCAgIDExNCwgICAxNTMsICAgMTcwLCAgIDE1MiwKLSAgICAgMTUx
LCAgICAgMCwgICAxNTQsICAgMTU1LCAgIDE1NiwgICAxNTcsICAgIDgwLCAgICA4MiwgICAgODQs
ICAgICAwLAotICAgICAgIDAsICAgIDk4LCAgICAgMCwgICAxNDksICAgMTAwLCAgICAyOSwgICAg
MzAsICAgICAwLCAgICAxMiwgICAgMTMsCi0gICAgICAgMCwgICAgIDAsICAgIDE5LCAgICAxOCwg
ICAgIDAsICAgIDIwLCAgICAyMiwgICAgMjQsICAgIDMxLCAgICAgMCwKLSAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxMTUsICAgICAwLCAgIDE0NywgICAgIDAsICAg
MTQ1LCAgIDE0MSwgICAxNDMsCi0gICAgIDE5MiwgICAxOTEsICAgMTY2LCAgIDE4MywgICAgIDAs
ICAgMTk1LCAgIDE5MywgICAgIDAsICAgMTc5LCAgIDE1OCwKLSAgICAgICAwLCAgICA2NCwgICAg
NjUsICAgIDY2LCAgICA2NywgICAgNjMsICAgICAwLCAgICAgMCwgICAxNzMsICAgMTY5LAotICAg
ICAxNzEsICAgICAwLCAgICA5MywgICAgIDAsICAgIDk1LCAgICA5OSwgICAgIDcsICAgICAwLCAg
ICAxNCwgICAgMjYsCi0gICAgICAxMSwgICAgMTcsICAgIDIzLCAgICAzNiwgICAgMzcsICAgIDQw
LCAgICAzOSwgICAgNDUsICAgIDQ2LCAgICA0MywKLSAgICAgIDQ0LCAgICA0OCwgICAgNDksICAg
IDU0LCAgICA1NiwgICAgNTgsICAgICAwLCAgIDEzOSwgICAgIDAsICAgICAwLAotICAgICAxNDQs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTQsICAgICAwLCAgIDE2MCwg
ICAgNjIsCi0gICAgICA2OSwgICAgIDAsICAgIDk0LCAgICAgOSwgICAgIDAsICAgICAwLCAgIDE0
NiwgICAgIDAsICAgMTY1LCAgIDE2NywKLSAgICAgMTg2LCAgIDE4NSwgICAxODgsICAgMTY2LCAg
IDE3NywgICAgIDAsICAgICAwLCAgICAgMCwgICAgODEsICAgIDYwLAotICAgICAxNDgsICAgICAw
LCAgIDE4NywgICAgIDAsICAgICAwLCAgIDE3NiwgICAxNzQsICAgICAwLCAgICAgMCwgICAxNjEs
Ci0gICAgICAgMCwgICAxODksICAgICAwLCAgIDE2NiwgICAgIDAsICAgMTYzLCAgIDE4MCwgICAx
NjIsICAgICAwLCAgIDE5MCwKLSAgICAgMTg0LCAgIDE3NSwgICAxNzgsICAgMTgyCisgICAgICAg
MCwgICAgIDAsICAgMTEyLCAgIDExMywgICAxMTQsICAgICAwLCAgIDEwNiwgICAxMDUsICAgMTIw
LCAgIDExOCwKKyAgICAgMTE5LCAgIDEyNCwgICAxMjUsICAgMTI2LCAgIDEyNywgICAxMjgsICAg
MTI5LCAgIDEyMSwgICAxMjIsICAgMTIzLAorICAgICAxMzAsICAgMTMxLCAgIDEzMiwgICAxMDks
ICAgMTA3LCAgICAgMCwgICAxMTcsICAgMTMzLCAgIDEzNCwgICAxMzUsCisgICAgIDEzNiwgICAx
MzgsICAgMjAwLCAgIDIwMSwgICAgIDAsICAgIDc3LCAgICA4NywgICAgIDAsICAgIDkyLCAgICA5
NywKKyAgICAgICAwLCAgIDEwMywgICAgIDAsICAgMTEwLCAgIDExNSwgICAxMzcsICAgICAwLCAg
IDE5NywgICAxOTksICAgMTA4LAorICAgICAxMDIsICAgICAwLCAgICAgMiwgICAgIDMsICAgMTQx
LCAgICAgMCwgICAgNzIsICAgICAwLCAgICA3NSwgICAgODcsCisgICAgICAgMCwgICAgODgsICAg
IDg5LCAgICA5MCwgICAgNzgsICAgICAwLCAgICA4NywgICAgIDAsICAgIDczLCAgICAgMiwKKyAg
ICAgIDk4LCAgIDEwNCwgICAxMTEsICAgICAwLCAgICAgMSwgICAxOTgsICAgICAwLCAgICAgMCwg
ICAxMzksICAgICAwLAorICAgICAyMDIsICAgIDc5LCAgICA4NCwgICAgODYsICAgIDkxLCAgICAg
MCwgICAgOTMsICAgIDgwLCAgICAgMCwgICAgIDAsCisgICAgICAgNCwgICAgIDcsICAgICA2LCAg
ICAgOCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzUsICAgIDM0LCAgICAzMywKKyAgICAgICA1
LCAgICAxMCwgICAgMjksICAgIDEyLCAgICAxNywgICAgMTgsICAgICAwLCAgICAgMCwgICAgMjMs
ICAgICAwLAorICAgICAgMzYsICAgICAwLCAgICAzOSwgICAgNDIsICAgIDQzLCAgICA0OCwgICAg
NTEsICAgIDUyLCAgICA1MywgICAgNTQsCisgICAgICA1NiwgICAgNTgsICAgIDYwLCAgICA3MSwg
ICAgIDAsICAgIDI3LCAgICA3NCwgICAgIDAsICAgICAwLCAgIDE0MywKKyAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgMTgyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTYw
LAorICAgICAxNjksICAgMTczLCAgICAzNiwgICAgNjIsICAgIDY5LCAgICAgMCwgICAxNTEsICAg
ICAwLCAgIDExNSwgICAxNTQsCisgICAgIDE3MSwgICAxNTMsICAgMTUyLCAgICAgMCwgICAxNTUs
ICAgMTU2LCAgIDE1NywgICAxNTgsICAgIDgxLCAgICA4MywKKyAgICAgIDg1LCAgICAgMCwgICAg
IDAsICAgIDk5LCAgICAgMCwgICAxNTAsICAgMTAxLCAgICAzMCwgICAgMzEsICAgICAwLAorICAg
ICAgMTQsICAgIDE1LCAgICAgMCwgICAgIDAsICAgIDIxLCAgICAyMCwgICAgIDAsICAgIDIyLCAg
ICAyNCwgICAgMjYsCisgICAgICAzMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAxMTYsICAgMTQ4LCAgICAgMCwgICAxNDYsICAgMTQyLAorICAgICAxNDQs
ICAgICAwLCAgIDE5MywgICAxOTIsICAgMTY3LCAgIDE4NCwgICAgIDAsICAgMTk2LCAgIDE5NCwg
ICAgIDAsCisgICAgIDE4MCwgICAxNTksICAgICAwLCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2
OCwgICAgNjQsICAgICAwLCAgICAgMCwKKyAgICAgMTc0LCAgIDE3MCwgICAxNzIsICAgICAwLCAg
ICA5NCwgICAgIDAsICAgIDk2LCAgIDEwMCwgICAgIDksICAgICAwLAorICAgICAgMTYsICAgICAy
LCAgICAgMywgICAgMTMsICAgIDE5LCAgICAyNSwgICAgMzcsICAgIDM4LCAgICA0MSwgICAgNDAs
CisgICAgICA0NiwgICAgNDcsICAgIDQ0LCAgICA0NSwgICAgNDksICAgIDUwLCAgICA1NSwgICAg
NTcsICAgIDU5LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAxNDUsICAgMTQwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTk1LAorICAgICAgIDAsICAgMTYxLCAgICA2
MywgICAgNzAsICAgICAwLCAgICA5NSwgICAgMTEsICAgICAwLCAgICAgMCwgICAxNDcsCisgICAg
ICAgMCwgICAxNjYsICAgMTY4LCAgIDE4NywgICAxODYsICAgMTg5LCAgIDE2NywgICAxNzgsICAg
ICAwLCAgICAgMCwKKyAgICAgICAwLCAgICA4MiwgICAgNjEsICAgMTQ5LCAgICAgMCwgICAxODgs
ICAgICAwLCAgICAgMCwgICAxNzcsICAgMTc1LAorICAgICAgIDAsICAgICAwLCAgIDE2MiwgICAg
IDAsICAgMTkwLCAgICAgMCwgICAxNjcsICAgICAwLCAgIDE2NCwgICAxODEsCisgICAgIDE2Mywg
ICAgIDAsICAgMTkxLCAgIDE4NSwgICAxNzYsICAgMTc5LCAgIDE4MwogfTsKIAogLyogWVlERUZH
T1RPW05URVJNLU5VTV0uICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWRlZmdvdG9b
XSA9CiB7Ci0gICAgICAtMSwgICAgOTgsICAgIDk5LCAgIDEwMCwgICAyMjcsICAgMTAxLCAgIDEw
MiwgICAxMDMsICAgMTA0LCAgIDEwNSwKLSAgICAgMTA2LCAgIDEwNywgICAxNDAsICAgMTA5LCAg
IDExMCwgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTQsICAgMTE1LAotICAgICAxMTYsICAgMTE3
LCAgIDExOCwgICAxMTksICAgMTIwLCAgIDE0MSwgICAxNDIsICAgMjE2LCAgIDE0MywgICAxMjIs
Ci0gICAgIDE0NCwgICAxNDUsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDc5LCAgICA2MiwgICAg
NjMsICAgIDgwLCAgICAzNywKLSAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0Miwg
ICAgNDMsICAgMTIzLCAgICA0NSwgICAxMjUsICAgIDc1LAotICAgICAxMjcsICAgMTI4LCAgIDE5
NiwgICAxOTcsICAgMTY0LCAgIDE0NywgICAxNDgsICAgMTQ5LCAgIDE1MCwgICAyMTAsCi0gICAg
IDI3NywgICAyOTYsICAgMjUxLCAgIDI1MiwgICAyNTMsICAgMjk3LCAgIDE1MSwgICAxNTIsICAg
MTUzLCAgIDI4NiwKLSAgICAgMjc2LCAgIDE1NCwgICAyNTcsICAgMjAyLCAgIDI1NCwgICAyNzIs
ICAgMjgzLCAgIDI4NCwgICAxNTUsICAgIDQ2LAotICAgICAgNDcsICAgIDQ4LCAgICA1NQorICAg
ICAgLTEsICAgMTk2LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDIyOSwgICAxMDMsICAgMTA0LCAg
IDEwNSwgICAxMDYsCisgICAgIDEwNywgICAxMDgsICAgMTA5LCAgIDE0MiwgICAxMTEsICAgMTEy
LCAgIDExMywgICAxMTQsICAgMTE1LCAgIDExNiwKKyAgICAgMTE3LCAgIDExOCwgICAxMTksICAg
MTIwLCAgIDEyMSwgICAxMjIsICAgMTQzLCAgIDE0NCwgICAyMTgsICAgMTQ1LAorICAgICAxMjQs
ICAgMTQ2LCAgIDE0NywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgODIsICAgIDY0LCAgICA2NSwg
ICAgODMsCisgICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0
MywgICAxMjUsICAgIDQ1LCAgIDEzMCwKKyAgICAgIDc3LCAgIDEyOCwgICAxMjksICAgMTk3LCAg
IDE5OCwgICAxNjYsICAgMTQ5LCAgIDE1MCwgICAxNTEsICAgMTUyLAorICAgICAyMTIsICAgMjgw
LCAgIDI5OSwgICAyNTQsICAgMjU1LCAgIDI1NiwgICAzMDAsICAgMTUzLCAgIDE1NCwgICAxNTUs
CisgICAgIDI4OSwgICAyNzksICAgMTU2LCAgIDI2MCwgICAyMDQsICAgMjU3LCAgIDI3NSwgICAy
ODYsICAgMjg3LCAgIDE1NywKKyAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDU3CiB9OwogCiAv
KiBZWVBBQ1RbU1RBVEUtTlVNXSAtLSBJbmRleCBpbiBZWVRBQkxFIG9mIHRoZSBwb3J0aW9uIGRl
c2NyaWJpbmcKICAgIFNUQVRFLU5VTS4gICovCi0jZGVmaW5lIFlZUEFDVF9OSU5GIC0yNjYKKyNk
ZWZpbmUgWVlQQUNUX05JTkYgLTI2MQogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXBhY3Rb
XSA9CiB7Ci0gICAgMTI1MywgICAtMjAsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTQ4LCAgLTI2
NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
LTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2
LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIC0zOSwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYs
Ci0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIC0xOCwgICAgLTIsICAgICA2LCAgICAyMSwgICAt
NjEsICAtMjY2LCAgICA1MSwKLSAgICAxMjk2LCAgLTI2NiwgIDEzNzAsICAtMjY2LCAgICAyNSwg
IC0yNjYsICAxMjA5LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAxMzcwLCAgICA0
MiwgIC0yNjYsICAtMjY2LCAgICA1MCwgIC0yNjYsICAgIDcxLCAgICA5NSwgIC0yNjYsCi0gICAg
LTI2NiwgIC0yNjYsICAtMjY2LCAgMTI5NiwgICAxMjMsICAgMTA1LCAgLTI2NiwgICAgIDksICAt
MjY2LCAgLTI2NiwKLSAgICAgOTc0LCAgLTI2NiwgIC0yNjYsICAgIDgxLCAgLTI2NiwgIDEyOTYs
ICAgMjkwLCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgMTI1LCAgMTI5NiwgICAt
MTMsICAtMjY2LCAgIDc3NiwgICA5NzQsICAgIDk5LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2Niwg
IC0yNjYsICAgOTc0LCAgIDk3NCwgICA5NzQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
LTI2NiwKLSAgICAgIDM1LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDEwMCwgICAgLTYsICAxMDQw
LCAgIDEwNCwgIC0yNjYsICAgOTc0LAotICAgICAgMzYsICAgLTY0LCAgLTI2NiwgICAtMjEsICAg
MTAyLCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDExMywgICAxMTcsCi0gICAgIC01MSwgIC0yNjYs
ICAgMTA4LCAgLTI2NiwgIC0yNjYsICAxMjk2LCAgIDEyOSwgIDExMDksICAtMjY2LCAgICA5NywK
LSAgICAgMTAzLCAgLTI2NiwgICAxMTIsICAgMTE0LCAgIDEwNiwgICA4NDIsICAgMTE1LCAgIDEx
NiwgIC0yNjYsICAtMjY2LAotICAgICAgMzksICAtMjY2LCAgLTI2NiwgICAtNDMsICAtMjY2LCAg
IC0xOCwgICAgNDcsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICAzNzQsICAtMjY2
LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDExOCwgIC0yNjYsICAtMjY2LCAgIDkwOCwKLSAgICAg
OTc0LCAgLTI2NiwgICAxMjAsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgICAxOSwgIC0y
NjYsICAtMjY2LAotICAgICA5NzQsICAxMzMzLCAgLTI2NiwgIC0yNjYsICAgOTc0LCAgIDExOSwg
IC0yNjYsICAtMjY2LCAgLTI2NiwgICA5NzQsCi0gICAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3
NCwgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwKLSAgICAgOTc0LCAg
IDk3NCwgICA5NzQsICAtMjY2LCAgMTE1MiwgICAxMjIsICAgLTI5LCAgLTI2NiwgIC0yNjYsICAt
MjY2LAotICAgIC0yNjYsICAtMjY2LCAgIDEyMSwgIC0yNjYsICAgOTc0LCAgLTI2NiwgIC0yNjYs
ICAgICA1LCAgLTI2NiwgIC0yNjYsCi0gICAgIDQ1OCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0y
NjYsICAtMjY2LCAgIDk3NCwgICA5NzQsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIDk3NCwg
IC0yNjYsICAgMTM3LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDEzOCwgICAxMTEsICAtMjY2LAot
ICAgICAxNDIsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgICAzNiwgICAgMzYsICAtMjY2
LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICAtMjEsICAgLTIxLCAgLTI2NiwgICAxMTMsICAg
MTE3LCAgICA4MiwgIC0yNjYsICAgOTc0LCAgIDEyOSwKLSAgICAtMjY2LCAgIDE3NSwgICAgNTAs
ICAgNjI2LCAgIDcxMCwgICAgMzgsICAtMjY2LCAgIDE5NywgICA0NTgsICAtMjY2LAotICAgIC0y
NjYsICAgMTQxLCAgLTI2NiwgIC0yNjYsICAgOTc0LCAgIDE1NSwgIC0yNjYsICAgMTQ1LCAgLTI2
NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAgMTk3LCAgIDEyMSwgICAxMTEsICAgMTg2LCAg
IDE1OSwgICAxNjAsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIDk3NCwgIC0yNjYsICAgMTY2
LCAgIDE3NiwgICAyMzYsICAtMjY2LCAgIDE3NCwgICA1NDIsICAtMjY2LAotICAgICAgNDMsICAg
OTc0LCAgIDU0MiwgICAxMjEsICAgOTc0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDE3NywgICAx
MTEsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NgorICAgIDEzMjcsICAgLTIwLCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgIDExMywgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAt
MjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAtMTks
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAt
NjEsICAgLTQwLCAgIC0yOCwgICAgNzUsICAgIC03LCAgLTI2MSwgICAgMjQsCisgICAgMTM3MCwg
IC0yNjEsICAxNDQ0LCAgLTI2MSwgICAtMTEsICAtMjYxLCAgMTI4MywgIC0yNjEsICAtMjYxLCAg
LTI2MSwKKyAgICAtMjYxLCAgMTQ0NCwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAgIDYsICAtMjYx
LCAgICA1NCwgIC0yNjEsICAgIDg4LAorICAgICAgNjIsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAt
MjYxLCAgMTM3MCwgICAgNTksICAgIDkxLCAgLTI2MSwgICAgMzYsCisgICAgIC01MCwgIC0yNjEs
ICAtMjYxLCAgMTA1MSwgIC0yNjEsICAtMjYxLCAgICA2MywgIDEzNzAsICAtMjYxLCAgIDI5MywK
KyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICA5MSwgIDEzNzAsICAgLTEyLCAgLTI2
MSwgICA4NTYsICAxMDUxLAorICAgICAgNzcsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAxMDUxLCAg
MTA1MSwgIDEwNTEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgIC0yNjEsICAgLTE0
LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICA4NCwgICAtNDQsICAxMTE2LCAgICA5NSwKKyAgICAt
MjYxLCAgMTA1MSwgICAgNTMsICAgICAzLCAgLTI2MSwgICAtMzYsICAgIDg5LCAgLTI2MSwgIC0y
NjEsICAtMjYxLAorICAgICAxMDQsICAgMTA3LCAgIC00NSwgIC0yNjEsICAgIDk2LCAgLTI2MSwg
IC0yNjEsICAgIDkxLCAgMTE4NCwgIC0yNjEsCisgICAgMTM3MCwgICAgOTIsICAgIDkzLCAgLTI2
MSwgICAgOTgsICAgMTAxLCAgICA5NCwgICA5MjEsICAgMTA1LCAgIDEwMiwKKyAgICAtMjYxLCAg
LTI2MSwgICAgNzIsICAtMjYxLCAgLTI2MSwgICAgIDksICAtMjYxLCAgIC02MSwgICAgNDIsICAt
MjYxLAorICAgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAzNzYsICAtMjYxLCAgLTI2MSwgIC0yNjEs
ICAtMjYxLCAgIDEwNiwgIC0yNjEsCisgICAgLTI2MSwgICA5ODYsICAxMDUxLCAgLTI2MSwgICAx
MDMsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIC00MSwKKyAgICAtMjYxLCAgLTI2MSwg
IDEwNTEsICAxNDA3LCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgIDExMCwgIC0yNjEsICAtMjYxLAor
ICAgIC0yNjEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUx
LCAgMTA1MSwgIDEwNTEsCisgICAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAt
MjYxLCAgIDEwOSwgICAgMjMsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgMTIyNywgIC0yNjEs
ICAtMjYxLCAgIDExMSwgIC0yNjEsICAxMDUxLCAgLTI2MSwgIC0yNjEsICAgIDI1LAorICAgIC0y
NjEsICAtMjYxLCAgIDQ1OSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgMTA1
MSwgIDEwNTEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgMTA1MSwgIC0yNjEsICAgMTE0LCAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgIDExNSwKKyAgICAgMTEyLCAgICA3NywgICAxMTYsICAtMjYx
LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAgNTMsICAgIDUzLAorICAgIC0yNjEsICAt
MjYxLCAgLTI2MSwgIC0yNjEsICAgLTM2LCAgIC0zNiwgIC0yNjEsICAgMTA0LCAgIDEwNywgICAg
NzYsCisgICAgMTA1MSwgICAgOTEsICAtMjYxLCAgLTI2MSwgICAxNDUsICAgIDU0LCAgIDYyNSwg
ICA3MDgsICAgIC02LCAgLTI2MSwKKyAgICAgNzkxLCAgIDQ1OSwgIC0yNjEsICAtMjYxLCAgIDEx
NywgIC0yNjEsICAtMjYxLCAgMTA1MSwgICAxMjAsICAtMjYxLAorICAgICAxMjQsICAtMjYxLCAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgIDc5MSwgICAxMTEsICAgMTEyLCAgICA5MSwgICAxMjUsCisg
ICAgIDEyMiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAtMjYxLCAgIDExOCwgICAxMjgs
ICAgMTgwLCAgLTI2MSwKKyAgICAgMTI2LCAgIDU0MiwgIC0yNjEsICAgIC01LCAgMTA1MSwgICA1
NDIsICAgMTExLCAgMTA1MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAgMTIzLCAgIDExMiwg
IC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEKIH07CiAKIC8qIFlZUEdPVE9bTlRFUk0tTlVNXS4g
ICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5cGdvdG9bXSA9CiB7Ci0gICAgLTI2Niwg
IC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAgODUsICAtMjY2LCAg
LTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgICAtNDQsICAtMjY2LCAgIC0xNSwgIC0yNjYsICAgLTU1
LCAgIC0xOSwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgIDcyLCAgICA3MCwgICAgNzMsICAt
MjY2LCAgIC02NiwgICAtODMsICAtMjY2LCAgIC05MiwgICAtNzMsCi0gICAgICAxMywgICAgMTQs
ICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTgwLCAgIDIwNiwgICAyMDEsICAgMTg0LCAgLTI2NiwK
LSAgICAtMjY2LCAgLTI0MSwgICAtMjUsICAgLTMwLCAgIDI2MiwgICAgLTQsICAgICAwLCAgLTI2
NiwgIC0yNjYsICAtMjY2LAotICAgICAxNDMsICAtMTIyLCAgLTI2NiwgICAgMjIsICAtMTQ1LCAg
ICAxNiwgIC0xNDQsICAtMjI2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICAtMTcsICAtMjY1
LCAgLTI2NiwgIC0yNjYsICAgLTU0LCAgICA2MywgICAgMjAsICAtMjY2LCAgLTI2NiwKLSAgICAg
ICA0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0y
NjYsICAtMjY2LAotICAgICAyMzEsICAtMjY2LCAgLTI2NgorICAgIC0yNjEsICAgLTI0LCAgLTI2
MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICAzNCwgIC0yNjEsCisgICAg
LTI2MSwgIC0yNjEsICAtMjYxLCAgICAzMiwgIC0yNjEsICAgLTMzLCAgLTI2MSwgICAtMjcsICAg
LTI2LCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgICAgMTQsICAgIDE2LCAgICAxOCwgIC0yNjEs
ICAgLTY2LCAgIC04NywgIC0yNjEsICAgLTkyLAorICAgICAtODUsICAgIDExLCAgICAxMiwgIC0y
NjEsICAtMjYxLCAgLTI2MSwgICAxNDEsICAgMTUwLCAgIDE2MSwgICAxNDMsCisgICAgLTI2MSwg
IC0yNjEsICAtMjMxLCAgICAgNSwgICAtMzAsICAgMjI0LCAgIC0xOCwgICAgIDAsICAtMjYxLCAg
LTI2MSwKKyAgICAtMjYxLCAgIDEwMCwgIC0xMTksICAtMjYxLCAgIC0xNywgIC0xNTYsICAgLTI1
LCAgLTE0NSwgIC0yNDMsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgIC02NCwgIC0yNjAsICAt
MjYxLCAgLTI2MSwgICAtNTIsICAgIDIxLCAgIC0yMiwgIC0yNjEsCisgICAgLTI2MSwgICAtMzks
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwK
KyAgICAtMjYxLCAgIDE5MSwgIC0yNjEsICAtMjYxCiB9OwogCiAvKiBZWVRBQkxFW1lZUEFDVFtT
VEFURS1OVU1dXS4gIFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUtTlVNLiAgSWYKICAgIHBvc2l0
aXZlLCBzaGlmdCB0aGF0IHRva2VuLiAgSWYgbmVnYXRpdmUsIHJlZHVjZSB0aGUgcnVsZSB3aGlj
aAogICAgbnVtYmVyIGlzIHRoZSBvcHBvc2l0ZS4gIElmIHplcm8sIGRvIHdoYXQgWVlERUZBQ1Qg
c2F5cy4KICAgIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8KLSNkZWZpbmUgWVlU
QUJMRV9OSU5GIC0xNjUKKyNkZWZpbmUgWVlUQUJMRV9OSU5GIC0xNjYKIHN0YXRpYyBjb25zdCB5
eXR5cGVfaW50MTYgeXl0YWJsZVtdID0KIHsKLSAgICAgIDQ0LCAgICA3NywgICAxNjcsICAgMTYz
LCAgIDEyMSwgICAxOTksICAgIDUyLCAgIDIyMCwgICAyODUsICAgMTkxLAotICAgICAgNjgsICAg
IDY0LCAgIDE2MiwgICAgMzIsICAgIDMzLCAgIDIyNCwgICAyNzUsICAgIDQ5LCAgICA2NSwgICAx
MjEsCi0gICAgIDE4MSwgICAgNjYsICAgMTgyLCAgIDE3NiwgICAgNTgsICAgIDUwLCAgIDEwOCwg
ICAyNjksICAgMzAxLCAgICAgNiwKLSAgICAgICA3LCAgIDI3NSwgICAgNjQsICAgIDgxLCAgIDE4
MywgICAxODQsICAgMjE3LCAgICA1MywgICAgNjksICAgMjE4LAotICAgICAgNDQsICAgMTA4LCAg
ICA0NCwgICAyMDcsICAgMTkyLCAgIDEyNiwgICAgNDQsICAgIDczLCAgIDE2NSwgICAxNjYsCi0g
ICAgIDI0OSwgICAgNDQsICAgIDgxLCAgIDI1MCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgMjMs
ICAgIDI0LCAgICAzMiwKLSAgICAgIDMzLCAgIDE1OSwgICAyOTUsICAgIDQ0LCAgICA1NCwgICAx
NzgsICAgMjk1LCAgIDE3MywgICAxNjAsICAgMTg1LAotICAgICAxODYsICAgIDU2LCAgIDE5OSwg
ICAxNzQsICAgIDU4LCAgICA0NCwgICAxNDYsICAgMTYzLCAgIDIyOCwgICAgIDYsCi0gICAgICAg
NywgICAgODQsICAgIDQ0LCAgICA4NSwgICAyMTcsICAgIDU3LCAgIDIyMywgICAyNTYsICAgMTY4
LCAgIDE2OSwKLSAgICAgIDg2LCAgIDIzMiwgICAyMjYsICAgMTIxLCAgIC03NSwgICAxMjYsICAg
IDY3LCAgIDEyNiwgICAyMTcsICAgIDcwLAotICAgICAyNDYsICAgMjExLCAgIDIxMiwgICAyMTMs
ICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDIzLCAgICAyNCwgICAxNzAsCi0gICAgIDIxNCwgICAy
NzMsICAgMjU1LCAgIDE3MSwgICAyMjAsICAgMTA4LCAgIDI5OCwgICAyMTcsICAgIDc0LCAgIC0y
NSwKLSAgICAgMjE1LCAgICA3MCwgICAyMTcsICAgMTc5LCAgIDE4MCwgICAgNDQsICAgIDc2LCAg
ICA0NCwgICAyMzcsICAgMjM4LAotICAgICAyMzksICAgMjQwLCAgICA0OSwgICAyNTksICAgMjYw
LCAgIDIzMywgICAyMzQsICAgMTA4LCAgIDEwOCwgICAxMDgsCi0gICAgIDEwOCwgICAxMDgsICAg
MTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMjYxLCAgIDMwMiwKLSAg
ICAgIDgzLCAgIDE0NiwgICAgIDIsICAgICAzLCAgICAgNCwgICAxMjEsICAgIDU5LCAgICA2MCwg
ICAgNjEsICAgMTg3LAotICAgICAxODgsICAgMjE3LCAgIDI2NCwgICAxMjQsICAgMTI2LCAgIDI3
NCwgICAyMzUsICAgMjM2LCAgIDI0MSwgICAyNDIsCi0gICAgIDE1NiwgICAtMjYsICAgMTg5LCAg
IDE3MiwgICAxOTUsICAgMjY1LCAgIDE3NywgICAxMDgsICAgMTkwLCAgIDIwMCwKLSAgICAgMjc0
LCAgIDI3OSwgICAxMjEsICAgMTkzLCAgIDIwMywgICAyMDEsICAgMjA0LCAgIDIwOCwgICAyMDUs
ICAgMjkwLAotICAgICAyMTcsICAtMTE2LCAgIDIyMSwgICAyMDksICAgIDQ0LCAgIDIyNSwgICAy
NDgsICAtMTY0LCAgIDI2OCwgICAyOTksCi0gICAgICA1OCwgICAgIDIsICAgICAzLCAgICAgNCwg
ICAxMDgsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAgMTQ2LCAgIDE2
MywgICAyNjIsICAgMjYzLCAgIC0yNywgICAyNjcsICAgMjc4LCAgIDI4MSwgICAgMTEsICAgIDEy
LAotICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAg
IDIwLCAgICAyMSwgICAgMjIsCi0gICAgIDI4MCwgICAyODcsICAgMjg4LCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAyODksICAgIDI3LCAgICAyOCwKLSAgICAgIDI5LCAgICAzMCwgICAg
ODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAyOTEsICAgMjkyLAotICAg
ICAgOTIsICAgIDkzLCAgIDI5MywgICAxNDYsICAgMTQ2LCAgIDI5NCwgICAyMzEsICAgMTQ2LCAg
IDE0NiwgICAzMDMsCi0gICAgIDI0NCwgICAyNDMsICAgMTU3LCAgICA3OCwgICAyNDUsICAgIDgy
LCAgIDE1OCwgICAgNTEsICAgMTk0LCAgICA5NCwKLSAgICAgMjcwLCAgIDI2NiwgICAxNDYsICAg
MjU4LCAgIDI3MSwgICAzMDAsICAgMjgyLCAgICA3MiwgICAgIDAsICAgICAwLAotICAgICAgOTUs
ICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0Niwg
ICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgMTQ2LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LCAgICAgNywKLSAgICAgICA4LCAgICAgOSwgICAgMTAsICAgMTI5LCAg
IDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LAotICAgICAxMzUsICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
Ci0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwKLSAgICAgMTM2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwg
ICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLAotICAgICAgOTEsICAgICAwLCAgICAg
MCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAg
ICA0NCwgICAgNTUsICAgMTY1LCAgIDE2NCwgICAxNjksICAgIDgwLCAgIDIyNiwgICAxMjMsICAg
MjIyLCAgIDIwMCwKKyAgICAgIDcxLCAgICAzMiwgICAgMzMsICAgMjcyLCAgIDE5MywgICAgNzAs
ICAgMjg4LCAgICA0OSwgICAxODUsICAgMTg2LAorICAgICAgNTYsICAgMTc4LCAgIDEyMywgICAg
ODgsICAgIDcyLCAgICA1MCwgICAgNTIsICAgIDUzLCAgIDE3NSwgICAyNzgsCisgICAgICA4OSwg
ICAyMjgsICAgIDU4LCAgICA3NiwgICAxNzYsICAgIDg0LCAgIDMwNCwgICAyMTksICAgMTcwLCAg
IDE3MSwKKyAgICAgIDQ0LCAgICA2NiwgICAgNDQsICAgIDg2LCAgIDI3OCwgICAyMDksICAgIDQ0
LCAgIDEyNywgICAyOTgsICAgMTk0LAorICAgICAgNTksICAgIDQ0LCAgIDI5OCwgICAxODcsICAg
MTg4LCAgICA4NCwgICAgNTQsICAgIDMyLCAgICAzMywgICAxNzIsCisgICAgIDE1OCwgICAxNjEs
ICAgIDczLCAgIDE3MywgICAgNjYsICAgIDQ0LCAgIDI3NiwgICAzMDEsICAgMTYyLCAgICA2OSwK
KyAgICAgIDUzLCAgICA2NywgICAyMTksICAgMjE5LCAgICA2OCwgICAxNjUsICAgMjI1LCAgICA0
NCwgICAgNjAsICAgMTQ4LAorICAgICAyMzAsICAgIDc4LCAgIDIwMCwgICAgIDYsICAgICA3LCAg
ICA0NCwgICAxODMsICAgMjE5LCAgIDE4NCwgICAyMzUsCisgICAgIDIyMCwgICAgNjAsICAgIDYx
LCAgICA2MiwgICAgNjMsICAgMTIzLCAgICAgNiwgICAgIDcsICAgMTI3LCAgICA0OSwKKyAgICAg
MTI3LCAgIDI1MSwgICAyNDksICAgMjE5LCAgIDI1MiwgICAxMTAsICAgMjU5LCAgICA4NywgICAg
NjEsICAgIDYyLAorICAgICAgNjMsICAgIDIzLCAgICAyNCwgICAtMjcsICAgMjU4LCAgICA3Mywg
ICAyMjIsICAgICAyLCAgICAgMywgICAgIDQsCisgICAgIDExMCwgICAgNjEsICAgIDYyLCAgICA2
MywgICAgMjMsICAgIDI0LCAgIDE2NywgICAxNjgsICAgIDQ0LCAgICA3OSwKKyAgICAgIDQ0LCAg
IDI2MiwgICAyNjMsICAgMjEzLCAgIDIxNCwgICAyMTUsICAgIDUyLCAgICA1MywgICAyNjQsICAg
MTgxLAorICAgICAxODIsICAgMzA1LCAgIDIxNiwgICAxODAsICAgMTI2LCAgIDE4OSwgICAxOTAs
ICAgLTc2LCAgIC0yOCwgICAyMzMsCisgICAgIDIzOCwgICAyMzksICAgMjE3LCAgIDE0OCwgICAy
MTksICAgMjY3LCAgIDE3NCwgICAxMjMsICAgMjQwLCAgIDI0MSwKKyAgICAgMjQyLCAgIDI0Mywg
ICAxOTEsICAgMjQ0LCAgIDI0NSwgICAyNjgsICAgMTc5LCAgIDE5MiwgICAyNzcsICAgMjA1LAor
ICAgICAxOTUsICAgMTI3LCAgIDIwNiwgICAyMDIsICAgMjAzLCAgIDIwNywgICAyMTAsICAgMjI3
LCAgIDIxMSwgICAyMjMsCisgICAgIDI4MiwgIC0xMTcsICAgMjUwLCAgIDI3NywgICAxMjMsICAg
MjcwLCAgLTE2NSwgIC0xMzgsICAgMjY1LCAgIDI2NiwKKyAgICAgMjE5LCAgIDI4MSwgICAyOTMs
ICAgMTEwLCAgIDI4MywgICAyODQsICAgMjk2LCAgIDI5MSwgICAyOTIsICAgMjk0LAorICAgICAy
OTUsICAgIDQ0LCAgIDMwMiwgICAyNzEsICAgMzA2LCAgIDI0NiwgICAyOTcsICAgMjM0LCAgIDI0
NywgICAgODEsCisgICAgIDE2NSwgICAyNDgsICAgMTQ4LCAgIDIzNiwgICAyMzcsICAgMTEwLCAg
IDExMCwgICAxMTAsICAgMTEwLCAgIDExMCwKKyAgICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTEw
LCAgIDExMCwgICAxMTAsICAgMTU5LCAgICA4NSwgICAxNjAsICAgIDUxLAorICAgICAyMDEsICAg
MzAzLCAgIDI3MywgICAyNjEsICAgMjY5LCAgIDI3NCwgICAyODUsICAgIDc1LCAgICAgMCwgICAg
IDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAg
MCwgICAgIDAsICAgMTM3LCAgIDEzOCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAg
IDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsCi0g
ICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMjks
ICAgMTMwLCAgIDEzMSwKLSAgICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LCAgIDEzNSwgICAg
MTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICA4NywKLSAgICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAg
ICAwLCAgICA5MiwgICAgOTMsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMjkwLCAgIDExMCwgICAxNDgsICAgMTQ4LCAgICAgMCwgICAgIDAsCisgICAgIDE0OCwgICAx
NDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDgsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDExMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAxNDgsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTQ4LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKKyAg
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMxLCAgIDEzMiwg
ICAxMzMsICAgICAwLAorICAgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCisgICAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywKKyAgICAgIDI0
LCAgICAyNSwgICAgMjYsICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAs
ICAgIDMxLAorICAgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAg
OTUsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAw
LAotICAgICAxMzcsICAgMjE5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAg
IDk1LCAgICA5NiwgICAgIDAsCi0gICAgICA5NywgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgIDEyOSwgICAx
MzAsICAgMTMxLCAgICAgMCwgICAxMzIsICAgMTMzLCAgIDEzNCwgICAxMzUsICAgIDExLAotICAg
ICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsCi0gICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0
LCAgICAyNSwgICAgMjYsICAgMTM2LCAgICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAgMzAsICAg
IDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLAotICAgICAgIDAs
ICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAg
MCwgICAgIDAsICAgMTM5LCAgIDE0MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgICAxLAorICAgICAgIDIsICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEs
CisgICAgIDEzMiwgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAg
MTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjksCisgICAg
ICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAg
IDk0LCAgICA5NSwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgOTQsICAgICAwLCAgICAgMCwgICAg
IDAsICAgMTM3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgIDEzOSwg
ICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAg
ICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMjksICAgMTMw
LCAgIDEzMSwgICAgIDAsICAgMTMyLAotICAgICAxMzMsICAgMTM0LCAgIDEzNSwgICAgMTEsICAg
IDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCisgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwK
KyAgICAgICAwLCAgIDEzOSwgICAyMjEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0
MSwgICAgOTcsICAgIDk4LAorICAgICAgIDAsICAgIDk5LCAgICAgMSwgICAgIDIsICAgICAzLCAg
ICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsCisgICAgICAgOSwgICAgMTAsICAgMTMx
LCAgIDEzMiwgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywKKyAgICAg
IDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAg
MTksICAgIDIwLAorICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgsCisgICAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwKKyAgICAgICAwLCAg
ICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAx
MzksICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgMTQxLCAgICA5Nywg
ICAgOTgsICAgICAwLCAgICA5OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LAor
ICAgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEzMSwgICAxMzIsICAgMTMz
LCAgICAgMCwgICAxMzQsCisgICAgIDEzNSwgICAxMzYsICAgMTM3LCAgICAxMSwgICAgMTIsICAg
IDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKICAgICAgIDE4LCAgICAxOSwgICAgMjAs
ICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LAotICAgICAg
MjUsICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAz
MSwgICAgODgsCi0gICAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAg
ICA5MywgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3
LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLAorICAgICAgOTIsICAg
IDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5
NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzYsICAgICAwLAotICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTM5LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDEsCi0g
ICAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDks
ICAgIDEwLCAgIDEyOSwKLSAgICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLCAgIDEzMywgICAx
MzQsICAgMTM1LCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAgICAxNiwg
ICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCi0gICAgICAg
MCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4
LCAgICAyOSwKLSAgICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAg
IDkxLCAgICAgMCwgICAgIDAsICAgIDkyLAotICAgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAg
MCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAxMzksICAgIDk1LAotICAgICAgOTYsICAgICAwLCAgICA5NywgICAgIDEsICAgICAy
LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsCi0gICAgICAgOCwgICAgIDksICAg
IDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywg
ICAgMTgsICAgIDE5LAotICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCi0gICAgICAgMCwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwKLSAgICAgIDkx
LCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDc5LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwg
ICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgICAxLCAgICAgMiwKKyAgICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEsICAgMTMy
LAorICAgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAgMTEsICAg
IDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
ICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAorICAg
ICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAg
ICA5NSwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAgICA5OCwg
ICAgIDAsCisgICAgICA5OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAg
NiwgICAgIDcsICAgICA4LCAgICAgOSwKKyAgICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLAorICAgICAgMTIsICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
CisgICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAg
MjYsICAgICAwLCAgICAyNywKKyAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAgICAzMSwg
ICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLAorICAgICAgOTQsICAgIDk1LCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NiwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLAorICAgICAgOTcsICAgIDk4LCAgICAgMCwgICAg
OTksICAgIDYwLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDYsCisgICAgICAgNywg
ICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1
LCAgICAxNiwgICAgMTcsICAgIDE4LAorICAgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsCisgICAgICAyNiwgICAgIDAs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAgICA5MiwK
KyAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDk0
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAxMSwgICAg
MTIsICAgIDEzLAorICAgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA5
NywgICAgOTgsICAgICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywKICAgICAgIDE0LCAg
ICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAg
ICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAs
ICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAg
ODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwKLSAgICAgIDkzLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAot
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICA5NCwgICAgIDAsCi0gICAgICAgMCwgICAxNjEsICAgICA4LCAgICAgOSwgICAgMTAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwKLSAgICAgIDk2LCAgICAgMCwgICAgOTcs
ICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAotICAgICAg
MTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsCi0gICAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwKLSAgICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAw
LCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgMzAsICAg
IDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAg
OTUsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5
NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LAotICAgICAgMTAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMjA2LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgMTEsCi0g
ICAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
ICAgIDIwLCAgICAyMSwKLSAgICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LAotICAgICAgMjgsICAgIDI5LCAgICAzMCwg
ICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsCi0gICAgICAg
MCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA5NiwgICAgIDAsICAgICAwLAorICAgICAxNjMsICAgICA4LCAgICAgOSwgICAgMTAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsCisgICAgICAgMCwgICAg
OTksICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAgICA5MywgICAgIDAsICAg
ICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAotICAgICAgOTQsICAgICAwLCAgICAgMCwgICAyMjIsICAgICA4LCAgICAg
OSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgOTUsICAgIDk2LCAg
ICAgMCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKLSAgICAgIDE2
LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAs
ICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwgICAgODcsCi0gICAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwg
ICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwKKyAgICAgICAwLCAgICAg
MCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAw
LAorICAgICAgIDAsICAgICAwLCAgIDIwOCwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAg
IDExLCAgICAxMiwgICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgs
ICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LAorICAg
ICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAg
ICA5NCwgICAgOTUsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDgs
ICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk1LCAgICA5Niwg
ICAgIDAsCi0gICAgICA5NywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAx
NiwgICAgMTcsICAgIDE4LCAgICAxOSwKLSAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgMTc1LAotICAgICAgIDAsICAgIDI3
LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAs
Ci0gICAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLAorICAgICAyMjQsICAgICA4LCAgICAg
OSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsCisgICAg
ICAgMCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAg
IDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAgICA5Mywg
ICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDIsICAg
ICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsCi0gICAgICAgOSwgICAgMTAs
ICAgICAwLCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDAsICAgICAwLCAgICAgMCwK
LSAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLAotICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsCi0gICAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCi0gICAgICAxOCwgICAgMTksICAgIDIwLCAgICAy
MSwgICAgMjIsICAgICAwLCAgIDE5OCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgIDI1LCAg
ICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAg
ICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgNzEsCi0gICAgICAgMCwgICAgIDAsICAgICAxLCAgICAgMiwgICAg
IDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKLSAgICAgICA5LCAgICAxMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjQ3LAot
ICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsCi0gICAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwKLSAgICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LAorICAgICAg
IDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAx
MCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsICAgICAwLCAg
ICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAorICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgIDE3NywgICAgIDAsICAgIDI3LCAgICAyOCwgICAg
MjksCisgICAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwg
ICAgIDAsICAgIDk0LCAgICA5NSwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMiwgICAgIDMsCisg
ICAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAs
ICAgIDk3LCAgICA5OCwKKyAgICAgICAwLCAgICA5OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
MTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAorICAgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAg
MCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICAgMCwKKyAgICAgIDMxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsCisgICAgICAxMywgICAg
MTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAy
MiwKKyAgICAgMTk5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAg
ICAgMCwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA3NCwgICAgIDAsICAgICAwLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKICAg
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
IDI1MywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwKICAgICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDIzLAogICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLCAgICAgMCwgICAgMzEsCi0gICAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKLSAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEz
LAotICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAg
IDIxLCAgICAyMiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUs
ICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAgMCwgICAg
MzEsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwgICAgMTYsCi0gICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIy
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAyNSwgICAgMjYsICAg
ICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAyMjksICAgIDMxLAotICAgICAgIDgs
ICAgICA5LCAgICAxMCwgICAyMzAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCisgICAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAg
NywgICAgIDgsICAgICA5LCAgICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLAorICAgICAgMTMsICAgIDE0
LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAg
IDAsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMiwg
ICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDgsICAgICA5LCAgICAx
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAg
ICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAg
IDE4LCAgICAxOSwKICAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LAotICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLCAgICAgMCwgICAgMzEKKyAgICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgIDAsICAgIDMxLCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIs
CisgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgIDIz
MSwgICAyMzIsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAg
IDE0LCAgICAxNSwKKyAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
ICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAyNSwgICAg
MjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsCisgICAgICAzMQog
fTsKIAogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWNoZWNrW10gPQogewotICAgICAgIDAs
ICAgIDU1LCAgICA5NCwgICAgODYsICAgIDcwLCAgIDEyNywgICAgNDUsICAgMTUxLCAgIDI3Mywg
ICAgNjAsCi0gICAgICA0MCwgICAgMzYsICAgIDg1LCAgICAgMCwgICAgIDAsICAgMTYwLCAgIDI1
NywgICAgMzcsICAgIDc5LCAgICA4NSwKLSAgICAgIDg0LCAgICA4MiwgICAgODYsICAgMTA2LCAg
ICAgMywgICAgNDUsICAgIDcwLCAgIDI1MywgICAyOTMsICAgICA4LAotICAgICAgIDksICAgMjcy
LCAgICA1NywgICAgNjMsICAgIDU1LCAgICA1NiwgICAgNzksICAgIDc2LCAgICA0MiwgICAgODIs
Ci0gICAgICA0MCwgICAgODUsICAgIDQyLCAgIDEzNSwgICAgOTUsICAgIDc1LCAgICA0NiwgICAg
NTEsICAgIDkyLCAgICA5MywKLSAgICAgIDc5LCAgICA1MSwgICAgODIsICAgIDgyLCAgICAzMywg
ICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDQ2LAotICAgICAgNDYsICAgIDc0LCAgIDI4
OCwgICAgNjMsICAgIDgyLCAgIDEwOSwgICAyOTIsICAgIDczLCAgICA4MSwgICAgOTAsCi0gICAg
ICA5MSwgICAgNzMsICAgMTk0LCAgICA3OSwgICAgIDMsICAgIDc1LCAgICA3NiwgICAxNjAsICAg
MTcwLCAgICAgOCwKLSAgICAgICA5LCAgICA3MiwgICAgODIsICAgIDc0LCAgICA3OSwgICAgNzks
ICAgMTU5LCAgICA4MiwgICAgNTMsICAgIDU0LAotICAgICAgODEsICAgMTc0LCAgICA3MywgICAx
NTksICAgIDczLCAgIDEyNSwgICAgNDUsICAgMTI3LCAgICA3OSwgICAgNzQsCi0gICAgIDE5Miwg
ICAgNjIsICAgIDYzLCAgICA2NCwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAg
ICA3NCwKLSAgICAgIDcxLCAgICA3MywgICAyMDQsICAgIDc4LCAgIDI1OCwgICAxNTksICAgIDcz
LCAgICA3OSwgICAgNzYsICAgIDcyLAotICAgICAgODEsICAgIDc0LCAgICA3OSwgICAgODcsICAg
IDg4LCAgIDEyNSwgICAgNzYsICAgMTI3LCAgIDE4MywgICAxODQsCi0gICAgIDE4NSwgICAxODYs
ICAgIDM3LCAgIDIxNiwgICAyMTcsICAgMTc5LCAgIDE4MCwgICAxODEsICAgMTgyLCAgIDE4MywK
LSAgICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LCAgIDE4OCwgICAxODksICAgMTkwLCAgIDE5
MSwgICAyMjEsICAgMjk0LAotICAgICAgNDUsICAgMTUxLCAgICAgNCwgICAgIDUsICAgICA2LCAg
IDIyMSwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgNTcsCi0gICAgICA1OCwgICAgNzksICAgIDgw
LCAgICA4MiwgICAxOTQsICAgMjU3LCAgIDE4MSwgICAxODIsICAgMTg3LCAgIDE4OCwKLSAgICAg
IDQ1LCAgICA3MiwgICAgNTksICAgIDczLCAgICA0NSwgICAyNDgsICAgIDcyLCAgIDIyMSwgICAg
NjEsICAgIDgyLAotICAgICAyNzIsICAgMjY0LCAgIDI0OCwgICAgNzUsICAgIDcyLCAgICA4Miwg
ICAgNzIsICAgIDcyLCAgICA4MiwgICAyODEsCi0gICAgICA3OSwgICAgNzIsICAgIDc0LCAgICA3
NywgICAxOTQsICAgIDc1LCAgICA3NCwgICAgNzYsICAgMjUyLCAgIDI5MSwKLSAgICAgICAzLCAg
ICAgNCwgICAgIDUsICAgICA2LCAgIDI0OCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAg
IDEyLAotICAgICAyMTAsICAgMjk0LCAgICA3NSwgICAgNzUsICAgIDcyLCAgICA0MCwgICAgNzUs
ICAgIDcyLCAgICAyMSwgICAgMjIsCi0gICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKLSAgICAgIDc1LCAgICA0NSwg
ICAgNzMsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA3NywgICAgNDEsICAgIDQyLAot
ICAgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUw
LCAgICA4MiwgICAgNzMsCi0gICAgICA1MywgICAgNTQsICAgIDE2LCAgIDI1MywgICAyNTQsICAg
IDgxLCAgIDE3MSwgICAyNTcsICAgMjU4LCAgICA4MiwKLSAgICAgMTkwLCAgIDE4OSwgICAgODIs
ICAgIDU3LCAgIDE5MSwgICAgNjQsICAgIDgyLCAgICAgNSwgICAxMjUsICAgIDcyLAotICAgICAy
NTQsICAgMjQ5LCAgIDI3MiwgICAyMTAsICAgMjU0LCAgIDI5MiwgICAyNzIsICAgIDQ2LCAgICAt
MSwgICAgLTEsCi0gICAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgMjg4LCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAyOTIsICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LAotICAgICAgMTAsICAg
IDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAgICAxOCwgICAg
MTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LAotICAgICAgNDAsICAgIDQxLCAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksCi0g
ICAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKKyAgICAgICAwLCAgICAyNSwgICAgODksICAgIDg4LCAgICA5NiwgICAg
NTcsICAgMTYyLCAgICA3MywgICAxNTMsICAgMTI4LAorICAgICAgNDAsICAgICAwLCAgICAgMCwg
ICAyNTYsICAgIDU5LCAgICAzOSwgICAyNzYsICAgIDM3LCAgICA1NCwgICAgNTUsCisgICAgICA4
MSwgICAxMDgsICAgIDg4LCAgICA3MywgICAgNDIsICAgIDQ1LCAgICA0NSwgICAgNDYsICAgIDcy
LCAgIDI2MCwKKyAgICAgIDgwLCAgICA3MiwgICAgNzIsICAgIDUxLCAgICA3OCwgICAgNjUsICAg
Mjk2LCAgICA3OCwgICAgNTIsICAgIDUzLAorICAgICAgNDAsICAgIDM2LCAgICA0MiwgICAgNjcs
ICAgMjc1LCAgIDEzNywgICAgNDYsICAgIDc3LCAgIDI5MSwgICAgOTQsCisgICAgICA3OCwgICAg
NTEsICAgMjk1LCAgICA4OSwgICAgOTAsICAgIDg1LCAgICA3NSwgICAgNDYsICAgIDQ2LCAgICA3
MywKKyAgICAgIDg0LCAgICA3MywgICAgNzMsICAgIDc3LCAgICA1OSwgICAgNjUsICAgIDcyLCAg
ICA3MiwgICAgODAsICAgIDQ1LAorICAgICAgNDYsICAgIDc4LCAgICA3OCwgICAgNzgsICAgIDgx
LCAgIDE2MiwgICAxNjEsICAgIDc3LCAgICAgMywgICAgNzksCisgICAgIDE3MiwgICAgNzUsICAg
MjAxLCAgICAgOCwgICAgIDksICAgIDg1LCAgICA4MywgICAgNzgsICAgIDg1LCAgIDE3NiwKKyAg
ICAgIDgxLCAgICAgMywgICAgMzMsICAgIDM0LCAgICAzNSwgICAxNjEsICAgICA4LCAgICAgOSwg
ICAxMjgsICAgIDM3LAorICAgICAxMzAsICAgIDc4LCAgIDE5NCwgICAgNzgsICAgIDgxLCAgICA3
MywgICAgODEsICAgIDcxLCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYsICAgIDM3LCAg
ICA3MSwgICAyMDYsICAgIDczLCAgIDI2MSwgICAgIDQsICAgICA1LCAgICAgNiwKKyAgICAgIDg4
LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDk0LCAgICA5NSwgICAxMjgs
ICAgIDc1LAorICAgICAxMzAsICAgMjE4LCAgIDIxOSwgICAgNjEsICAgIDYyLCAgICA2MywgICAg
NDUsICAgIDQ2LCAgIDIyMywgICAgODYsCisgICAgICA4NywgICAyOTcsICAgIDcwLCAgIDExMSwg
ICAgODEsICAgIDU2LCAgICA1NywgICAgNzIsICAgIDcxLCAgIDE3MywKKyAgICAgMTgzLCAgIDE4
NCwgICAgODAsICAgMTUzLCAgICA3OCwgICAgNzksICAgIDcyLCAgIDIyMywgICAxODUsICAgMTg2
LAorICAgICAxODcsICAgMTg4LCAgICA1OCwgICAxODksICAgMTkwLCAgIDI1MCwgICAgNzEsICAg
IDYwLCAgIDI2MCwgICAgNzEsCisgICAgICA3NCwgICAyMDEsICAgIDcxLCAgICA4MSwgICAgODEs
ICAgIDgxLCAgICA3MSwgICAgNzQsICAgIDc2LCAgICA3MywKKyAgICAgMjY3LCAgICA3MSwgICAg
NzMsICAgMjc1LCAgIDI1MCwgICAgNDAsICAgIDc1LCAgICA3MSwgICAgNzQsICAgIDc0LAorICAg
ICAgNzgsICAgIDc0LCAgIDI4NCwgICAxNjEsICAgIDc0LCAgICA3MSwgICAgMTYsICAgIDcyLCAg
ICA3NiwgICAgODEsCisgICAgICA3MiwgICAyMDEsICAgMjk0LCAgIDI1NSwgICAgODEsICAgMTkx
LCAgICA4MCwgICAxNzMsICAgMTkyLCAgICA1OSwKKyAgICAgMjk3LCAgIDE5MywgICAyMTIsICAg
MTgxLCAgIDE4MiwgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LAorICAgICAxODgs
ICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTkyLCAgIDE5MywgICAgODUsICAgIDY2LCAgICA4NSwg
ICAgIDUsCisgICAgIDEzMCwgICAyOTUsICAgMjU3LCAgIDIxMiwgICAyNTEsICAgMjU3LCAgIDI3
NSwgICAgNDYsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0x
LCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIDc3LCAgICAtMSwgICAgLTEs
Ci0gICAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAg
IDMsICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgLTEsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsCi0gICAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAg
IC0xLCAgICAtMSwKLSAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEs
ICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAotICAgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsCisgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAyNzgsICAgMjIzLCAgIDI1NiwgICAyNTcsICAgIC0xLCAg
ICAtMSwKKyAgICAgMjYwLCAgIDI2MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgIDI3NSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEs
ICAgMjUwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
KyAgICAgIC0xLCAgIDI5MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyOTUsICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LAorICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsCisgICAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKKyAgICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDM2LAorICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0Miwg
ICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCisgICAgICA0NywgICAgNDgsICAgIDQ5LCAgICAt
MSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3NiwgICAgNzcsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwKLSAgICAgIDg2LCAgICAgMywg
ICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLAot
ICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLAotICAgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1
MCwgICAgLTEsCi0gICAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgIDc2LAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAg
IDMsCisgICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAorICAgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCisg
ICAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEs
ICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEsICAgIC0x
LCAgICAtMSwKKyAgICAgIC0xLCAgICA3NSwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA4MSwgICAgODIsICAgIDgzLAorICAgICAgLTEsICAgIDg1LCAgICAgMywgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCisgICAgICAxMSwgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwKKyAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLAorICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCisgICAgICA0MSwgICAgNDIsICAg
IDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAtMSwKKyAg
ICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3MiwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDgy
LCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LAorICAgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc1LCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA4MSwgICAgODIsICAgIDgzLCAgICAtMSwg
ICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKICAgICAgICA4LCAgICAg
OSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3
LAogICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsCiAgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywKICAgICAgIDM4LCAgICAzOSwgICAg
NDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAotICAg
ICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUz
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3Niwg
ICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAgICA4
NCwgICAgLTEsICAgIDg2LCAgICAgMywKLSAgICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAg
ICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1
LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMs
Ci0gICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
MzEsICAgIDMyLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwg
ICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLAotICAgICAgNDQsICAgIDQ1LCAgICA0
NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsCi0gICAg
ICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsCi0gICAgICA4NCwg
ICAgLTEsICAgIDg2LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAg
ICAgOSwKLSAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsICAg
IDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgMzEs
ICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwK
LSAgICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LAotICAgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgIC0xLCAgICAtMSwKKyAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAg
IDMsICAgICA0LAorICAgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgLTEsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwKKyAgICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAg
IC0xLAorICAgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEs
ICAgIDQyLCAgICA0MywgICAgNDQsCisgICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAg
IC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEsICAgIDgyLCAgICA4
MywgICAgLTEsCisgICAgICA4NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAg
ICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKKyAgICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLAorICAgICAgMjIsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
MzEsCisgICAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwg
ICAgMzksICAgIC0xLCAgICA0MSwKKyAgICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0
NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLAorICAgICAgNTIsICAgIDUzLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisg
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA3MSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLAorICAgICAgODIsICAgIDgzLCAgICAtMSwg
ICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgIDgsCisgICAgICAg
OSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsCisgICAgICAzOSwgICAg
LTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0
OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAg
IDcxLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKKyAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAyMSwg
ICAgMjIsICAgIDIzLAogICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0
LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEs
ICAgIDUzLAotICAgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwKLSAgICAgIC0xLCAgICA3
NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgz
LAotICAgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDM4LCAgICAzOSwgICAg
LTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAotICAg
ICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5
LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwg
ICAgMTEsCi0gICAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLCAgICA4
NCwgICAgLTEsICAgIDg2LCAgICAyMSwKLSAgICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLAotICAgICAgMzIsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEs
Ci0gICAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLCAgICAtMSwKLSAgICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsCisgICAg
ICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAzMSwgICAg
MzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsCisgICAgICAzOSwg
ICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3MiwgICAgLTEs
ICAgIC0xLCAgICA3NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwK
LSAgICAgIC0xLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LAotICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDM4
LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKLSAgICAg
IDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAg
NTQsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4
MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0LCAg
ICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAg
IC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEs
ICAgIDQxLCAgICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAg
NDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKICAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0x
LCAgICAtMSwgICAgLTEsCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgODMsICAgIDg0LCAgICAtMSwKLSAgICAgIDg2LCAgICAyMSwgICAgMjIs
ICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAotICAgICAg
MzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAz
OCwgICAgMzksCi0gICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAg
ICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwKLSAgICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUz
LCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAg
LTEsCisgICAgICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAg
ICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsCisg
ICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYs
ICAgIDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAt
MSwgICAgLTEsICAgIDcyLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAxMCwKLSAgICAgIDExLCAgICAxMiwgICAgLTEsICAgIDgzLCAgICA4NCwgICAgLTEsICAg
IDg2LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAg
MzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAt
MSwKLSAgICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgICA0LCAg
ICAgNSwgICAgIDYsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEy
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywKLSAg
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIDc3LCAgICAtMSwg
ICAgLTEsICAgIC0xLAotICAgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0
MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMCwKLSAgICAgIC0x
LCAgICAtMSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDks
ICAgIDEwLAotICAgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgNzcsCi0gICAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwg
ICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKLSAgICAgIDMxLCAgICAz
MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIC0x
LAotICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgIDMsICAg
ICA0LCAgICAgNSwgICAgIDYsCisgICAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAyMSwgICAgMjIsICAgIDIzLAorICAg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5
LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAorICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgNzEsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgODIsICAgIDgzLAorICAgICAgLTEsICAgIDg1
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUs
CisgICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwg
ICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLAorICAgICAgNDYsICAgICA0LCAgICAg
NSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAgMTIsCisgICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgNzYsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsCisgICAgICA0Mywg
ICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAwLCAgICAtMSwgICAgLTEsICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LAogICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAg
IDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwK
KyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LAogICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsCiAgICAgICAzNywgICAgMzgsICAgIDM5
LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwKLSAgICAg
ICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAg
MTIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKLSAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAg
IDQzLAotICAgICAgNDQsICAgIC0xLCAgICA0NiwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0
LCAgICA0NSwgICAgNDYsCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICA1MCwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgICAzLCAgICAgNCwgICAgIDUs
ICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAy
MSwgICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2
LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAgICAgNDMsICAg
IDQ0LCAgICAtMSwgICAgNDYsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAogICAgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksCi0g
ICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NgorICAgICAg
LTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgIDEwLCAgICAx
MSwgICAgMTIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAg
NDIsCisgICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgMTAsICAgIDExLCAgICAxMiwg
ICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCisg
ICAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMs
ICAgIDQ0LCAgICAtMSwKKyAgICAgIDQ2CiB9OwogCiAvKiBZWVNUT1NbU1RBVEUtTlVNXSAtLSBU
aGUgKGludGVybmFsIG51bWJlciBvZiB0aGUpIGFjY2Vzc2luZwpAQCAtMTMwOCwzMiArMTM0Mywz
MiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KICAgICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MSwgICAgNDIsICAgIDQz
LAogICAgICAgNDQsICAgIDQ2LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOSwgICAxMzAsICAg
MTM1LCAgIDEzNiwgICAxMzcsCiAgICAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MSwgICAxNDIs
ICAgMTQzLCAgIDE3NSwgICAxNzYsICAgMTc3LCAgICAzNywKLSAgICAgIDQ1LCAgIDE0MCwgICAg
NDUsICAgIDc2LCAgICA4MiwgICAxNzgsICAgIDczLCAgICA3OSwgICAgIDMsICAgIDMzLAotICAg
ICAgMzQsICAgIDM1LCAgIDEzMiwgICAxMzMsICAgMTM4LCAgICA3OSwgICAgODIsICAgIDQ1LCAg
IDEzOSwgICAxNDEsCi0gICAgICA3NCwgICAgIDAsICAgMTc2LCAgIDE0MSwgICAgNzYsICAgMTQ1
LCAgICA3NiwgICAxNjEsICAgMTMyLCAgIDEzMSwKLSAgICAgMTM0LCAgIDEzOSwgICAxMzMsICAg
IDQ1LCAgICA3MiwgICAgNzQsICAgIDgxLCAgICA0NSwgICAgNDcsICAgIDQ4LAotICAgICAgNDks
ICAgIDUwLCAgICA1MywgICAgNTQsICAgIDcyLCAgICA4MywgICAgODQsICAgIDg2LCAgICA5Nywg
ICAgOTgsCi0gICAgICA5OSwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEw
NiwgICAxMDcsICAgMTA4LCAgIDEwOSwKLSAgICAgMTEwLCAgIDExMSwgICAxMTIsICAgMTEzLCAg
IDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE5LAotICAgICAxMjAsICAgMTIx
LCAgIDEyNSwgICAxNDIsICAgIDgyLCAgIDE0NCwgICAxMzksICAgMTQ2LCAgIDE0NywgICAgMTMs
Ci0gICAgICAxNCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICA0MCwgICAg
NzYsICAgIDc3LCAgICA4MiwKLSAgICAgMTA4LCAgIDEyMSwgICAxMjIsICAgMTI0LCAgIDEyNiwg
ICAxMjcsICAgMTQyLCAgIDE1MSwgICAxNTIsICAgMTUzLAotICAgICAxNTQsICAgMTYyLCAgIDE2
MywgICAxNjQsICAgMTY3LCAgIDE3NCwgICAgNDUsICAgMTMxLCAgIDEzNCwgICAgNzQsCi0gICAg
ICA4MSwgICAgNzUsICAgMTI1LCAgIDEyMiwgICAxNTAsICAgMTA4LCAgIDEwOCwgICAxMjQsICAg
IDUzLCAgICA1NCwKLSAgICAgIDc0LCAgICA3OCwgICAgNzMsICAgIDczLCAgICA3OSwgICAgMzks
ICAgMTIyLCAgICA3MiwgICAxMDgsICAgIDg3LAotICAgICAgODgsICAgIDg0LCAgICA4NiwgICAg
NTUsICAgIDU2LCAgICA5MCwgICAgOTEsICAgIDU3LCAgICA1OCwgICAgNTksCi0gICAgICA2MSwg
ICAgNjAsICAgIDk1LCAgICA3NSwgICAxNDYsICAgIDQ1LCAgIDE0OCwgICAxNDksICAgIDc3LCAg
IDE0NywKLSAgICAgIDgyLCAgICA4MiwgICAxNjksICAgIDcyLCAgICA3MiwgICAgODIsICAgIDgy
LCAgIDEyNCwgICAgNzIsICAgIDc3LAotICAgICAxNTUsICAgIDYyLCAgICA2MywgICAgNjQsICAg
IDcxLCAgICA4MSwgICAxMjMsICAgIDc5LCAgICA4MiwgICAgNzcsCi0gICAgIDE1MiwgICAgNzQs
ICAgIDc1LCAgIDEyNSwgICAxNTAsICAgIDc1LCAgICA3MywgICAxMDAsICAgMTI0LCAgICA0NSwK
LSAgICAgIDUwLCAgIDEwMywgICAxMjIsICAgMTA4LCAgIDEwOCwgICAxMTAsICAgMTEwLCAgIDEx
MiwgICAxMTIsICAgMTEyLAotICAgICAxMTIsICAgMTEzLCAgIDExMywgICAxMTcsICAgMTE4LCAg
IDExOSwgICAxMjQsICAgIDc3LCAgICA3NCwgICAgNzksCi0gICAgICA4MiwgICAxNTgsICAgMTU5
LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4MiwgICAxNjgsICAgMTYyLCAgIDEyMiwKLSAgICAg
MTIyLCAgIDEyNSwgICAgNzUsICAgIDc1LCAgICA4MCwgICAxMjUsICAgMTQ5LCAgICA0MCwgICAx
NjEsICAgMTUzLAotICAgICAxNTEsICAgMTYzLCAgIDE3MSwgICAgNzMsICAgMTI0LCAgIDEzNywg
ICAxNjYsICAgMTU2LCAgICA3NSwgICAxMjIsCi0gICAgICA3NSwgICAgNzIsICAgMTY2LCAgIDE3
MiwgICAxNzMsICAgMTU4LCAgIDE2NSwgICAgNDUsICAgIDczLCAgICA3NywKLSAgICAgMTI0LCAg
ICA4MiwgICAgNzMsICAgIDE2LCAgICA4MSwgICAxNTMsICAgMTU3LCAgIDE2MSwgICAgNzMsICAg
MTI0LAotICAgICAxNTcsICAgMTU4LCAgIDE1MCwgICAgODIKKyAgICAgIDQ1LCAgIDE0MCwgICAg
NDUsICAgIDQ2LCAgICA3NSwgICAgOTYsICAgIDgxLCAgIDE3OCwgICAgNzIsICAgIDc4LAorICAg
ICAgIDMsICAgIDMzLCAgICAzNCwgICAgMzUsICAgMTMyLCAgIDEzMywgICAxMzgsICAgIDc4LCAg
ICA4MSwgICAgNDUsCisgICAgICA5NiwgICAxMzksICAgMTQxLCAgICA3MywgICAgIDAsICAgMTc2
LCAgIDE0MSwgICAxNDUsICAgIDc1LCAgICA3NSwKKyAgICAgMTYxLCAgIDEzMiwgICAxMzEsICAg
MTM0LCAgIDEzOSwgICAxMzMsICAgIDk2LCAgICA3MSwgICAgNzMsICAgIDgwLAorICAgICAgNDUs
ICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUyLCAgICA1MywgICAgNzEsICAgIDgyLCAgICA4Mywg
ICAgODUsCisgICAgICA5NywgICAgOTgsICAgIDk5LCAgIDEwMSwgICAxMDIsICAgMTAzLCAgIDEw
NCwgICAxMDUsICAgMTA2LCAgIDEwNywKKyAgICAgMTA4LCAgIDEwOSwgICAxMTAsICAgMTExLCAg
IDExMiwgICAxMTMsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LAorICAgICAxMTgsICAgMTE5
LCAgIDEyMCwgICAxMjEsICAgMTI1LCAgIDE0MiwgICAgODEsICAgMTM5LCAgIDE0NiwgICAxNDcs
CisgICAgIDE0NCwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDQwLCAgICA3NSwKKyAgICAgIDc2LCAgICA4MSwgICAxMDgsICAgMTIxLCAgIDEyMiwg
ICAxMjQsICAgMTI2LCAgIDEyNywgICAxNDIsICAgMTUxLAorICAgICAxNTIsICAgMTUzLCAgIDE1
NCwgICAxNjIsICAgMTYzLCAgIDE2NCwgICAxNjcsICAgMTc0LCAgICA5NiwgICAxMzEsCisgICAg
IDEzNCwgICAgNzMsICAgIDgwLCAgICA3NCwgICAxMjUsICAgMTIyLCAgIDE1MCwgICAxMDgsICAg
MTA4LCAgIDEyNCwKKyAgICAgIDUyLCAgICA1MywgICAgNzMsICAgIDc3LCAgICA3MiwgICAgNzIs
ICAgIDc4LCAgICAzOSwgICAxMjIsICAgIDcxLAorICAgICAxMDgsICAgIDg2LCAgICA4NywgICAg
ODMsICAgIDg1LCAgICA1NCwgICAgNTUsICAgIDg5LCAgICA5MCwgICAgNTYsCisgICAgICA1Nywg
ICAgNTgsICAgIDYwLCAgICA1OSwgICAgOTQsICAgIDc0LCAgICA5NiwgICAxNDgsICAgMTQ5LCAg
ICA3NiwKKyAgICAgMTQ3LCAgIDE0NiwgICAgODEsICAgIDgxLCAgIDE2OSwgICAgNzEsICAgIDcx
LCAgICA4MSwgICAgODEsICAgMTI0LAorICAgICAgNzEsICAgIDc2LCAgIDE1NSwgICAgNjEsICAg
IDYyLCAgICA2MywgICAgNzAsICAgIDgwLCAgIDEyMywgICAgNzgsCisgICAgICA4MSwgICAgNzYs
ICAgMTUyLCAgICA3MywgICAgNzQsICAgMTI1LCAgIDE1MCwgICAgNzQsICAgIDcyLCAgIDEwMCwK
KyAgICAgMTI0LCAgICA0NSwgICAgNDYsICAgIDk2LCAgIDEwMywgICAxMjIsICAgMTA4LCAgIDEw
OCwgICAxMTAsICAgMTEwLAorICAgICAxMTIsICAgMTEyLCAgIDExMiwgICAxMTIsICAgMTEzLCAg
IDExMywgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjQsCisgICAgICA3MywgICAgNzgsICAgIDgx
LCAgICA3NiwgICAxNTgsICAgMTU5LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4MSwKKyAgICAg
MTY4LCAgIDE2MiwgICAxMjIsICAgMTIyLCAgIDEyNSwgICAgNzQsICAgIDc0LCAgICA3OSwgICAx
MjUsICAgMTQ5LAorICAgICAgNDAsICAgMTYxLCAgIDE1MywgICAxNTEsICAgMTYzLCAgIDE3MSwg
ICAgNzIsICAgMTI0LCAgIDEzNywgICAxNjYsCisgICAgIDE1NiwgICAgNzQsICAgMTIyLCAgICA3
NCwgICAgNzEsICAgMTY2LCAgIDE3MiwgICAxNzMsICAgMTU4LCAgIDE2NSwKKyAgICAgIDk2LCAg
ICA3MiwgICAgNzYsICAgMTI0LCAgICA4MSwgICAgNzIsICAgIDE2LCAgICA4MCwgICAxNTMsICAg
MTU3LAorICAgICAxNjEsICAgIDcyLCAgIDEyNCwgICAxNTcsICAgMTU4LCAgIDE1MCwgICAgODEK
IH07CiAKICNkZWZpbmUgeXllcnJvawkJKHl5ZXJyc3RhdHVzID0gMCkKQEAgLTEzNjYsNyArMTQw
MSw3IEBAIGRvCQkJCQkJCQlcCiAgICAgfQkJCQkJCQkJXAogICBlbHNlCQkJCQkJCQlcCiAgICAg
ewkJCQkJCQkJXAotICAgICAgeXllcnJvciAoY29udGV4dCwgWVlfKCJzeW50YXggZXJyb3I6IGNh
bm5vdCBiYWNrIHVwIikpOyBcCisgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZWV8o
InN5bnRheCBlcnJvcjogY2Fubm90IGJhY2sgdXAiKSk7IFwKICAgICAgIFlZRVJST1I7CQkJCQkJ
CVwKICAgICB9CQkJCQkJCQlcCiB3aGlsZSAoWVlJRCAoMCkpCkBAIC0xNDIxLDkgKzE0NTYsOSBA
QCB3aGlsZSAoWVlJRCAoMCkpCiAvKiBZWUxFWCAtLSBjYWxsaW5nIGB5eWxleCcgd2l0aCB0aGUg
cmlnaHQgYXJndW1lbnRzLiAgKi8KIAogI2lmZGVmIFlZTEVYX1BBUkFNCi0jIGRlZmluZSBZWUxF
WCB5eWxleCAoJnl5bHZhbCwgWVlMRVhfUEFSQU0pCisjIGRlZmluZSBZWUxFWCB5eWxleCAoJnl5
bHZhbCwgJnl5bGxvYywgWVlMRVhfUEFSQU0pCiAjZWxzZQotIyBkZWZpbmUgWVlMRVggeXlsZXgg
KCZ5eWx2YWwpCisjIGRlZmluZSBZWUxFWCB5eWxleCAoJnl5bHZhbCwgJnl5bGxvYykKICNlbmRp
ZgogCiAvKiBFbmFibGUgZGVidWdnaW5nIGlmIHJlcXVlc3RlZC4gICovCkBAIC0xNDQ2LDcgKzE0
ODEsNyBAQCBkbyB7CQkJCQkJCQkJICBcCiAgICAgewkJCQkJCQkJCSAgXAogICAgICAgWVlGUFJJ
TlRGIChzdGRlcnIsICIlcyAiLCBUaXRsZSk7CQkJCQkgIFwKICAgICAgIHl5X3N5bWJvbF9wcmlu
dCAoc3RkZXJyLAkJCQkJCSAgXAotCQkgIFR5cGUsIFZhbHVlLCBjb250ZXh0KTsgXAorCQkgIFR5
cGUsIFZhbHVlLCBMb2NhdGlvbiwgY29udGV4dCk7IFwKICAgICAgIFlZRlBSSU5URiAoc3RkZXJy
LCAiXG4iKTsJCQkJCQkgIFwKICAgICB9CQkJCQkJCQkJICBcCiB9IHdoaWxlIChZWUlEICgwKSkK
QEAgLTE0NjAsMTggKzE0OTUsMjAgQEAgZG8gewkJCQkJCQkJCSAgXAogI2lmIChkZWZpbmVkIF9f
U1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19jcGx1
c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9zeW1ib2xfdmFsdWVf
cHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29uc3Qg
eXl2YWx1ZXAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eV9zeW1ib2xfdmFsdWVfcHJpbnQg
KEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1
ZXAsIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucCwgVFBhcnNlQ29udGV4dCogY29u
dGV4dCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1
dCwgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCkKK3l5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlv
dXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIHl5bG9jYXRpb25wLCBjb250ZXh0KQogICAgIEZJTEUg
Knl5b3V0cHV0OwogICAgIGludCB5eXR5cGU7CiAgICAgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5
dmFsdWVwOworICAgIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucDsKICAgICBUUGFy
c2VDb250ZXh0KiBjb250ZXh0OwogI2VuZGlmCiB7CiAgIGlmICgheXl2YWx1ZXApCiAgICAgcmV0
dXJuOworICBZWVVTRSAoeXlsb2NhdGlvbnApOwogICBZWVVTRSAoY29udGV4dCk7CiAjIGlmZGVm
IFlZUFJJTlQKICAgaWYgKHl5dHlwZSA8IFlZTlRPS0VOUykKQEAgLTE0OTQsMTMgKzE1MzEsMTQg
QEAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLAogI2lmIChkZWZpbmVk
IF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQgX19j
cGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9zeW1ib2xfcHJp
bnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2
YWx1ZXAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eV9zeW1ib2xfcHJpbnQgKEZJTEUgKnl5
b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXAsIFlZTFRZ
UEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucCwgVFBhcnNlQ29udGV4dCogY29udGV4dCkKICNl
bHNlCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZh
bHVlcCwgY29udGV4dCkKK3l5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1
ZXAsIHl5bG9jYXRpb25wLCBjb250ZXh0KQogICAgIEZJTEUgKnl5b3V0cHV0OwogICAgIGludCB5
eXR5cGU7CiAgICAgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwOworICAgIFlZTFRZUEUg
Y29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucDsKICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0Owog
I2VuZGlmCiB7CkBAIC0xNTA5LDcgKzE1NDcsOSBAQCB5eV9zeW1ib2xfcHJpbnQgKHl5b3V0cHV0
LCB5eXR5cGUsIHl5dmFsCiAgIGVsc2UKICAgICBZWUZQUklOVEYgKHl5b3V0cHV0LCAibnRlcm0g
JXMgKCIsIHl5dG5hbWVbeXl0eXBlXSk7CiAKLSAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91
dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCk7CisgIFlZX0xPQ0FUSU9OX1BSSU5UICh5
eW91dHB1dCwgKnl5bG9jYXRpb25wKTsKKyAgWVlGUFJJTlRGICh5eW91dHB1dCwgIjogIik7Cisg
IHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIHl5bG9j
YXRpb25wLCBjb250ZXh0KTsKICAgWVlGUFJJTlRGICh5eW91dHB1dCwgIikiKTsKIH0KIApAQCAt
MTU0OSwxMSArMTU4OSwxMiBAQCBkbyB7CQkJCQkJCQlcCiAjaWYgKGRlZmluZWQgX19TVERDX18g
fHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8
fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKLXl5X3JlZHVjZV9wcmludCAoWVlTVFlQ
RSAqeXl2c3AsIGludCB5eXJ1bGUsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eV9yZWR1Y2Vf
cHJpbnQgKFlZU1RZUEUgKnl5dnNwLCBZWUxUWVBFICp5eWxzcCwgaW50IHl5cnVsZSwgVFBhcnNl
Q29udGV4dCogY29udGV4dCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfcmVkdWNlX3ByaW50ICh5
eXZzcCwgeXlydWxlLCBjb250ZXh0KQoreXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlsc3AsIHl5
cnVsZSwgY29udGV4dCkKICAgICBZWVNUWVBFICp5eXZzcDsKKyAgICBZWUxUWVBFICp5eWxzcDsK
ICAgICBpbnQgeXlydWxlOwogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKQEAg
LTE1NjksNyArMTYxMCw3IEBAIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5cnVsZSwgY29udGV4
dCkKICAgICAgIGZwcmludGYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOwogICAgICAg
eXlfc3ltYm9sX3ByaW50IChzdGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVdICsgeXlpXSwKIAkJ
ICAgICAgICYoeXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQotCQkgICAgICAgCQkgICAgICAg
LCBjb250ZXh0KTsKKwkJICAgICAgICwgJih5eWxzcFsoeXlpICsgMSkgLSAoeXlucmhzKV0pCQkg
ICAgICAgLCBjb250ZXh0KTsKICAgICAgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7CiAgICAgfQog
fQpAQCAtMTU3Nyw3ICsxNjE4LDcgQEAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlydWxlLCBj
b250ZXh0KQogIyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpCQlcCiBkbyB7CQkJCQlcCiAg
IGlmICh5eWRlYnVnKQkJCQlcCi0gICAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgUnVsZSwgY29u
dGV4dCk7IFwKKyAgICB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eWxzcCwgUnVsZSwgY29udGV4
dCk7IFwKIH0gd2hpbGUgKFlZSUQgKDApKQogCiAvKiBOb256ZXJvIG1lYW5zIHByaW50IHBhcnNl
IHRyYWNlLiAgSXQgaXMgbGVmdCB1bmluaXRpYWxpemVkIHNvIHRoYXQKQEAgLTE4MjgsMTcgKzE4
NjksMTkgQEAgeXlzeW50YXhfZXJyb3IgKGNoYXIgKnl5cmVzdWx0LCBpbnQgeXlzdAogI2lmIChk
ZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmlu
ZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eWRlc3Ry
dWN0IChjb25zdCBjaGFyICp5eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFRQ
YXJzZUNvbnRleHQqIGNvbnRleHQpCit5eWRlc3RydWN0IChjb25zdCBjaGFyICp5eW1zZywgaW50
IHl5dHlwZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFlZTFRZUEUgKnl5bG9jYXRpb25wLCBUUGFyc2VD
b250ZXh0KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eWRlc3RydWN0ICh5eW1zZywg
eXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCkKK3l5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5
dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICAgICBjb25zdCBjaGFyICp5eW1zZzsKICAg
ICBpbnQgeXl0eXBlOwogICAgIFlZU1RZUEUgKnl5dmFsdWVwOworICAgIFlZTFRZUEUgKnl5bG9j
YXRpb25wOwogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsKICAgWVlVU0Ug
KHl5dmFsdWVwKTsKKyAgWVlVU0UgKHl5bG9jYXRpb25wKTsKICAgWVlVU0UgKGNvbnRleHQpOwog
CiAgIGlmICgheXltc2cpCkBAIC0xOTA5LDYgKzE5NTIsOCBAQCBZWVNUWVBFIHl5bHZhbDsKIAog
LyogTnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KIGludCB5eW5lcnJzOworLyog
TG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KK1lZTFRZUEUgeXls
bG9jOwogCiAgIGludCB5eXN0YXRlOwogICBpbnQgeXluOwpAQCAtMTk0MiwxNiArMTk4NywyMSBA
QCBpbnQgeXluZXJyczsKICAgWVlTVFlQRSAqeXl2cyA9IHl5dnNhOwogICBZWVNUWVBFICp5eXZz
cDsKIAorICAvKiBUaGUgbG9jYXRpb24gc3RhY2suICAqLworICBZWUxUWVBFIHl5bHNhW1lZSU5J
VERFUFRIXTsKKyAgWVlMVFlQRSAqeXlscyA9IHl5bHNhOworICBZWUxUWVBFICp5eWxzcDsKKyAg
LyogVGhlIGxvY2F0aW9ucyB3aGVyZSB0aGUgZXJyb3Igc3RhcnRlZCBhbmQgZW5kZWQuICAqLwor
ICBZWUxUWVBFIHl5ZXJyb3JfcmFuZ2VbMl07CiAKLQotI2RlZmluZSBZWVBPUFNUQUNLKE4pICAg
KHl5dnNwIC09IChOKSwgeXlzc3AgLT0gKE4pKQorI2RlZmluZSBZWVBPUFNUQUNLKE4pICAgKHl5
dnNwIC09IChOKSwgeXlzc3AgLT0gKE4pLCB5eWxzcCAtPSAoTikpCiAKICAgWVlTSVpFX1QgeXlz
dGFja3NpemUgPSBZWUlOSVRERVBUSDsKIAogICAvKiBUaGUgdmFyaWFibGVzIHVzZWQgdG8gcmV0
dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQogICAgICBhY3Rpb24gcm91
dGluZXMuICAqLwogICBZWVNUWVBFIHl5dmFsOwotCisgIFlZTFRZUEUgeXlsb2M7CiAKICAgLyog
VGhlIG51bWJlciBvZiBzeW1ib2xzIG9uIHRoZSBSSFMgb2YgdGhlIHJlZHVjZWQgcnVsZS4KICAg
ICAgS2VlcCB0byB6ZXJvIHdoZW4gbm8gc3ltYm9sIHNob3VsZCBiZSBwb3BwZWQuICAqLwpAQCAt
MTk3MSw2ICsyMDIxLDEyIEBAIGludCB5eW5lcnJzOwogCiAgIHl5c3NwID0geXlzczsKICAgeXl2
c3AgPSB5eXZzOworICB5eWxzcCA9IHl5bHM7CisjaWYgZGVmaW5lZCBZWUxUWVBFX0lTX1RSSVZJ
QUwgJiYgWVlMVFlQRV9JU19UUklWSUFMCisgIC8qIEluaXRpYWxpemUgdGhlIGRlZmF1bHQgbG9j
YXRpb24gYmVmb3JlIHBhcnNpbmcgc3RhcnRzLiAgKi8KKyAgeXlsbG9jLmZpcnN0X2xpbmUgICA9
IHl5bGxvYy5sYXN0X2xpbmUgICA9IDE7CisgIHl5bGxvYy5maXJzdF9jb2x1bW4gPSB5eWxsb2Mu
bGFzdF9jb2x1bW4gPSAwOworI2VuZGlmCiAKICAgZ290byB5eXNldHN0YXRlOwogCkBAIC0xOTk3
LDcgKzIwNTMsNyBAQCBpbnQgeXluZXJyczsKIAkgICBtZW1vcnkuICAqLwogCVlZU1RZUEUgKnl5
dnMxID0geXl2czsKIAl5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKLQorCVlZTFRZUEUgKnl5
bHMxID0geXlsczsKIAogCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxvd2Vk
IGJ5IHRoZSBzaXplIG9mIHRoZQogCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQgc3RhY2ssIGluIGJ5
dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKQEAgLTIwMDYsOSArMjA2Miw5IEBAIGludCB5eW5lcnJz
OwogCXl5b3ZlcmZsb3cgKFlZXygibWVtb3J5IGV4aGF1c3RlZCIpLAogCQkgICAgJnl5c3MxLCB5
eXNpemUgKiBzaXplb2YgKCp5eXNzcCksCiAJCSAgICAmeXl2czEsIHl5c2l6ZSAqIHNpemVvZiAo
Knl5dnNwKSwKLQorCQkgICAgJnl5bHMxLCB5eXNpemUgKiBzaXplb2YgKCp5eWxzcCksCiAJCSAg
ICAmeXlzdGFja3NpemUpOwotCisJeXlscyA9IHl5bHMxOwogCXl5c3MgPSB5eXNzMTsKIAl5eXZz
ID0geXl2czE7CiAgICAgICB9CkBAIC0yMDMxLDcgKzIwODcsNyBAQCBpbnQgeXluZXJyczsKIAkg
IGdvdG8geXlleGhhdXN0ZWRsYWI7CiAJWVlTVEFDS19SRUxPQ0FURSAoeXlzcyk7CiAJWVlTVEFD
S19SRUxPQ0FURSAoeXl2cyk7Ci0KKwlZWVNUQUNLX1JFTE9DQVRFICh5eWxzKTsKICMgIHVuZGVm
IFlZU1RBQ0tfUkVMT0NBVEUKIAlpZiAoeXlzczEgIT0geXlzc2EpCiAJICBZWVNUQUNLX0ZSRUUg
KHl5c3MxKTsKQEAgLTIwNDEsNyArMjA5Nyw3IEBAIGludCB5eW5lcnJzOwogCiAgICAgICB5eXNz
cCA9IHl5c3MgKyB5eXNpemUgLSAxOwogICAgICAgeXl2c3AgPSB5eXZzICsgeXlzaXplIC0gMTsK
LQorICAgICAgeXlsc3AgPSB5eWxzICsgeXlzaXplIC0gMTsKIAogICAgICAgWVlEUFJJTlRGICgo
c3RkZXJyLCAiU3RhY2sgc2l6ZSBpbmNyZWFzZWQgdG8gJWx1XG4iLAogCQkgICh1bnNpZ25lZCBs
b25nIGludCkgeXlzdGFja3NpemUpKTsKQEAgLTIxMTgsNyArMjE3NCw3IEBAIHl5YmFja3VwOgog
CiAgIHl5c3RhdGUgPSB5eW47CiAgICorK3l5dnNwID0geXlsdmFsOwotCisgICorK3l5bHNwID0g
eXlsbG9jOwogICBnb3RvIHl5bmV3c3RhdGU7CiAKIApAQCAtMjE0OSwxOCArMjIwNSwxOSBAQCB5
eXJlZHVjZToKICAgICAgR0NDIHdhcm5pbmcgdGhhdCBZWVZBTCBtYXkgYmUgdXNlZCB1bmluaXRp
YWxpemVkLiAgKi8KICAgeXl2YWwgPSB5eXZzcFsxLXl5bGVuXTsKIAotCisgIC8qIERlZmF1bHQg
bG9jYXRpb24uICAqLworICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWxzcCAtIHl5bGVuKSwg
eXlsZW4pOwogICBZWV9SRURVQ0VfUFJJTlQgKHl5bik7CiAgIHN3aXRjaCAoeXluKQogICAgIHsK
LSAgICAgICAgY2FzZSAyOgorICAgICAgICBjYXNlIDQ6CiAKICAgICB7CiAgICAgICAgIC8vIFRo
ZSBzeW1ib2wgdGFibGUgc2VhcmNoIHdhcyBkb25lIGluIHRoZSBsZXhpY2FsIHBoYXNlCiAgICAg
ICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3ltYm9s
OwogICAgICAgICBjb25zdCBUVmFyaWFibGUqIHZhcmlhYmxlOwogICAgICAgICBpZiAoc3ltYm9s
ID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciIsICh5eXZzcFsoMSkgLSAoMSldLmxleCku
c3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkg
LSAoMSldKSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciIsICh5eXZzcFsoMSkgLSAoMSldLmxleCku
c3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgICAgICBU
VmFyaWFibGUqIGZha2VWYXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5zdHJpbmcsIHR5cGUpOwpAQCAtMjE2OSwxMCArMjIyNiwxNyBAQCB5eXJlZHVjZToKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoaXMgaWRlbnRpZmllciBjYW4gb25seSBi
ZSBhIHZhcmlhYmxlIHR5cGUgc3ltYm9sCiAgICAgICAgICAgICBpZiAoISBzeW1ib2wtPmlzVmFy
aWFibGUoKSkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAo
MSldLmxleCkubGluZSwgInZhcmlhYmxlIGV4cGVjdGVkIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxz
cFsoMSkgLSAoMSldKSwgInZhcmlhYmxlIGV4cGVjdGVkIiwgKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgdmFyaWFibGUgPSBzdGF0
aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOworCisgICAgICAgICAgICBpZiAoY29u
dGV4dC0+c3ltYm9sVGFibGUuZmluZEJ1aWx0SW4odmFyaWFibGUtPmdldE5hbWUoKSkgJiYKKyAg
ICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkgJiYKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMSld
KSwgdmFyaWFibGUtPmdldEV4dGVuc2lvbigpKSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIGRvbid0
IGRlbGV0ZSAkMS5zdHJpbmcsIGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVyeSwgYW5kIHRoZSBw
b29sCkBAIC0yMTgxLDIyICsyMjQ1LDIzIEBAIHl5cmVkdWNlOgogICAgICAgICBpZiAodmFyaWFi
bGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCApIHsKICAgICAgICAgICAg
IENvbnN0YW50VW5pb24qIGNvbnN0QXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29uc3RQb2ludGVyKCk7
CiAgICAgICAgICAgICBUVHlwZSB0KHZhcmlhYmxlLT5nZXRUeXBlKCkpOwotICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5l
KTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICh5eWxzcFsoMSkg
LSAoMSldKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS0+
Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwgKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5bHNwWygxKSAt
ICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzoKKyAgY2FzZSA1OgogCiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgNDoKKyAgY2FzZSA2OgogCiAgICAgewogICAgICAgICAvLwpAQCAtMjIwNCwxNTUgKzIy
NjksNzkgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8vIGNoZWNrIGZvciBvdmVyZmxvdyBmb3IgY29u
c3RhbnRzCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChhYnMoKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5pKSA+PSAoMSA8PCAxNikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiIGludGVnZXIg
Y29uc3RhbnQgb3ZlcmZsb3ciLCAiIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIH0KICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25z
dGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5pKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUo
RWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5s
aW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0SW50LCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgNToKKyAgY2FzZSA3OgogCiAgICAgewogICAgICAgICBDb25zdGFu
dFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9u
QXJyYXktPnNldEZDb25zdCgoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmYpOwotICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFD
b25zdCksICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
KHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNjoKKyAg
Y2FzZSA4OgogCiAgICAgewogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdCgoeXl2c3Bb
KDEpIC0gKDEpXS5sZXgpLmIpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDc6CisgIGNhc2UgOToKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDg6CisgIGNh
c2UgMTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSA5OgorICBjYXNlIDExOgogCiAgICAgewotICAgICAgICBpZiAoISh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkgJiYgISh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpICYmICEo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkgewot
ICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRBc1N5bWJvbE5vZGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2
c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJy
YXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAt
ICg0KV0ubGV4KS5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRy
aXgsIG9yIHZlY3RvciAiLCAiZXhwcmVzc2lvbiIpOwotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ICYm
ICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRRdWFsaWZpZXIo
KSA9PSBFdnFDb25zdCkgewotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkpIHsgLy8gY29uc3RhbnQgZm9sZGluZyBmb3Ig
YXJyYXlzCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+YWRkQ29uc3RBcnJheU5vZGUoKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigp
LT5nZXRJQ29uc3QoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3RvcigpKSB7ICAv
LyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCi0gICAgICAgICAgICAgICAgVFZlY3RvckZp
ZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7Ci0gICAgICAgICAg
ICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCkt
PmdldElDb25zdCgpOyAvLyBuZWVkIHRvIGRvIGl0IHRoaXMgd2F5IGJlY2F1c2Ugdi54eSBzZW5k
cyBmaWVsZHMgaW50ZWdlciBhcnJheQotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVsZHMsICh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDQpXS5s
ZXgpLmxpbmUpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZv
ciBtYXRyaWNlcwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmFkZENvbnN0TWF0cml4Tm9kZSgoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2lu
dGVyKCktPmdldElDb25zdCgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1Zl
Y3RvcigpIHx8ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01h
dHJpeCgpKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigp
LT5nZXRJQ29uc3QoKSAmJiAhKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmlzQXJyYXkoKSApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0g
ZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwg
ImZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgKHl5dnNwWygzKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIiwgIlsi
LCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAo
KHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgPT0gMCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0VHlwZSgpLmdldE1heEFycmF5U2l6ZSgpIDw9ICh5eXZzcFsoMykgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25B
cnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCksICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigpLCAoeXl2c3BbKDMpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVu
aW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpLCB0cnVlLCAoeXl2c3BbKDIpIC0gKDQpXS5s
ZXgpLmxpbmUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNldE1heFNpemUoKHl5
dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzU3ltYm9sTm9kZSgp
LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50
ZXIoKSwgMCwgZmFsc2UsICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgg
KHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRV
bmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA+PSAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJ
bmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8
PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlICciIDw8ICh5eXZzcFsoMykgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBv
aW50ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIiciOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDQpXS5sZXgp
LmxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4
RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoNCldLmxl
eCkubGluZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmlzQXJyYXkoKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIiwgIlsiLCAiYXJyYXkg
bXVzdCBiZSByZWRlY2xhcmVkIHdpdGggYSBzaXplIGJlZm9yZSBiZWluZyBpbmRleGVkIHdpdGgg
YSB2YXJpYWJsZSIpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4SW5kaXJl
Y3QsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5s
aW5lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVu
aW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgICAgIHVuaW9uQXJyYXkt
PnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoNCldLmxl
eCkubGluZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpCi0g
ICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKFRU
eXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCku
Z2V0U3RydWN0KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZx
VGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Tm9taW5hbFNpemUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmlzTWF0cml4KCkpKTsKLQotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3Qp
Ci0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBl
UG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICB9IGVsc2UgaWYgKCh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpICYmICh5
eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVh
bGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0LCAoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOwotICAgICAgICBlbHNl
IGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgo
KSkKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShU
VHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNU
eXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVj
aXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOwotICAgICAgICBlbHNlIGlmICgoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSAmJiAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigp
ID09IEV2cUNvbnN0KQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCkpOwotICAgICAgICBlbHNlIGlmICgoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkKLSAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgoeXl2c3Bb
KDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCksICh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24oKSwgRXZx
VGVtcG9yYXJ5KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+YWRkSW5kZXhFeHByZXNzaW9uKCh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMykgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTA6CisgIGNhc2UgMTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMToKKyAgY2FzZSAxMzoKIAogICAgIHsKICAgICAg
ICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5
KCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMykgLSAoMyldLmxleCku
bGluZSwgImNhbm5vdCBhcHBseSBkb3Qgb3BlcmF0b3IgdG8gYW4gYXJyYXkiLCAiLiIpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAiY2Fubm90IGFwcGx5
IGRvdCBvcGVyYXRvciB0byBhbiBhcnJheSIsICIuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkpIHsKICAgICAgICAgICAgIFRWZWN0b3JG
aWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VWZWN0b3JGaWVs
ZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAoeXl2c3BbKDMp
IC0gKDMpXS5sZXgpLmxpbmUpKSB7CisgICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJzZVZl
Y3RvckZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsICh5
eWxzcFsoMykgLSAoMyldKSkpIHsKICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKICAg
ICAgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1swXSA9IDA7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRRdWFsaWZp
ZXIoKSA9PSBFdnFDb25zdCkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3IgZmllbGRz
Ci0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQ29uc3RW
ZWN0b3JOb2RlKGZpZWxkcywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eWxzcFsoMykgLSAoMyldKSk7CiAgICAgICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CkBAIC0y
MzYxLDEzICsyMzUwLDEzIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0LCAoaW50
KSAoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nKS5zaXplKCkpKTsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgVFN0cmluZyB2ZWN0b3JTdHJpbmcgPSAqKHl5dnNw
WygzKSAtICgzKV0ubGV4KS5zdHJpbmc7Ci0gICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBp
bmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxlKGZpZWxkcywgKHl5dnNwWygz
KSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wVmVjdG9yU3dp
enpsZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4LCAo
eXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBl
ZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVsZHMsICh5eWxz
cFsoMykgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcFZlY3RvclN3aXp6bGUs
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5bHNw
WygyKSAtICgzKV0pKTsKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgKGludCkgdmVjdG9yU3RyaW5n
LnNpemUoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKCh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSB7CiAgICAgICAgICAg
ICBUTWF0cml4RmllbGRzIGZpZWxkczsKLSAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnBhcnNl
TWF0cml4RmllbGRzKCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywg
KHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKSkgeworICAgICAgICAgICAgaWYgKCEgY29udGV4
dC0+cGFyc2VNYXRyaXhGaWVsZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSwg
ZmllbGRzLCAoeXlsc3BbKDMpIC0gKDMpXSkpKSB7CiAgICAgICAgICAgICAgICAgZmllbGRzLndo
b2xlUm93ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLndob2xlQ29sID0gZmFsc2U7
CiAgICAgICAgICAgICAgICAgZmllbGRzLnJvdyA9IDA7CkBAIC0yMzc2LDYzICsyMzY1LDU3IEBA
IHl5cmVkdWNlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZmllbGRzLndob2xl
Um93IHx8IGZpZWxkcy53aG9sZUNvbCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiBub24tc2NhbGFyIGZpZWxkcyBub3QgaW1w
bGVtZW50ZWQgeWV0IiwgIi4iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbKDIpIC0gKDMpXSksICIgbm9uLXNjYWxhciBmaWVsZHMgbm90IGltcGxlbWVudGVkIHlldCIs
ICIuIik7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAg
ICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAg
ICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoMCk7Ci0gICAgICAgICAgICAgICAg
VEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5
eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcElu
ZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5k
ZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAgICAgVEludGVy
bVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFso
MykgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eWxzcFsoMikg
LSAoMyldKSk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldFByZWNpc2lvbigpLEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCkpKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25z
dGFudFVuaW9uWzFdOwogICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdChmaWVs
ZHMuY29sICogKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5v
bWluYWxTaXplKCkgKyBmaWVsZHMucm93KTsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQq
IGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygzKSAtICgz
KV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygzKSAtICgzKV0pKTsK
KyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZzcFsoMSkgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5
cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlw
ZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lz
aW9uKCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0
KSB7CiAgICAgICAgICAgICBib29sIGZpZWxkRm91bmQgPSBmYWxzZTsKLSAgICAgICAgICAgIGNv
bnN0IFRUeXBlTGlzdCogZmllbGRzID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKLSAgICAgICAgICAgIGlmIChmaWVsZHMg
PT0gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSwgInN0cnVjdHVyZSBoYXMgbm8gZmllbGRzIiwgIkludGVybmFsIEVycm9yIik7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgaTsKLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZmllbGRzLT5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKCpmaWVsZHMpW2ldLnR5cGUt
PmdldEZpZWxkTmFtZSgpID09ICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3Qg
VEZpZWxkTGlzdCYgZmllbGRzID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgaTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmllbGRzW2ldLT5uYW1lKCkgPT0gKih5eXZzcFso
MykgLSAoMyldLmxleCkuc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGZpZWxkRm91bmQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaWYgKGZpZWxkRm91bmQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0
UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0KCooeXl2
c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoKigqZmll
bGRzKVtpXS50eXBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFuZ2UgdGhl
IHF1YWxpZmllciBvZiB0aGUgcmV0dXJuIHR5cGUsIG5vdCBvZiB0aGUgc3RydWN0dXJlIGZpZWxk
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0
aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHZhcmlvdXMgc3RydWN0dXJlcy4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGVQb2lu
dGVyKCktPnNldFF1YWxpZmllcihFdnFDb25zdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBD
b25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgKigqZmllbGRzKVtpXS50eXBlLCAoeXl2c3BbKDMp
IC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcElu
ZGV4RGlyZWN0U3RydWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoKigqZmllbGRz
KVtpXS50eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7
CisgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRk
Q29uc3RTdHJ1Y3QoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBlKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJl
dHVybiB0eXBlLCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBmaWVsZAorICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gYXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHZh
cmlvdXMgc3RydWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cUNvbnN0
KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICh5eXZzcFsoMykgLSAoMyldLmxleCku
c3RyaW5nLT5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwotICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwor
ICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7CisgICAgICAgICAg
ICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
Q29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAqZmllbGRzW2ldLT50eXBlKCksICh5eWxzcFsoMykg
LSAoMyldKSk7CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdFN0cnVj
dCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4LCAoeXls
c3BbKDIpIC0gKDMpXSkpOworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPnNldFR5cGUoKmZpZWxkc1tpXS0+dHlwZSgpKTsKICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eWxzcFsoMikgLSAoMyldKSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICh5eXZz
cFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIgZmllbGQgc2VsZWN0aW9uIHJlcXVpcmVzIHN0
cnVjdHVyZSwgdmVjdG9yLCBvciBtYXRyaXggb24gbGVmdCBoYW5kIHNpZGUiLCAoeXl2c3BbKDMp
IC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXlsc3BbKDIpIC0gKDMpXSksICIgZmllbGQgc2VsZWN0aW9uIHJlcXVpcmVzIHN0cnVjdHVy
ZSwgdmVjdG9yLCBvciBtYXRyaXggb24gbGVmdCBoYW5kIHNpZGUiLCAoeXl2c3BbKDMpIC0gKDMp
XS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQpAQCAtMjQ0MCwzNSAr
MjQyMywzNSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTI6Cisg
IGNhc2UgMTQ6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNr
KCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIisrIiwgKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JD
aGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICIrKyIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVtZW50LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5z
eW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdEluY3JlbWVudCwgKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMildKSwg
Y29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXl2
c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICIrKyIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICIrKyIsICh5eXZzcFsoMSkgLSAo
MildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzOgorICBjYXNlIDE1
OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3Bb
KDIpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5
bHNwWygyKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFy
eU1hdGgoRU9wUG9zdERlY3JlbWVudCwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFi
bGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNyZW1lbnQsICh5eXZzcFsoMSkgLSAo
MildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDIpXSksIGNvbnRleHQt
PnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5dnNwWygyKSAt
ICgyKV0ubGV4KS5saW5lLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFy
eU9wRXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAg
ICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDoKKyAgY2FzZSAxNjoKIAogICAg
IHsKICAgICAgICAgaWYgKGNvbnRleHQtPmludGVnZXJFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAiW10iKSkKQEAgLTI0NzcsNyArMjQ2MCw3IEBA
IHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNToKKyAgY2FzZSAxNzoK
IAogICAgIHsKICAgICAgICAgVEZ1bmN0aW9uKiBmbkNhbGwgPSAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0pLmZ1bmN0aW9uOwpAQCAtMjQ5MSwxOCArMjQ3NCwxOCBAQCB5eXJlZHVjZToKICAgICAg
ICAgICAgIC8vIFRoZWlyIHBhcmFtZXRlcnMgd2lsbCBiZSB2ZXJpZmllZCBhbGdvcml0aG1pY2Fs
bHkuCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lkLCBFYnBV
bmRlZmluZWQpOyAgLy8gdXNlIHRoaXMgdG8gZ2V0IHRoZSB0eXBlIGJhY2sKLSAgICAgICAgICAg
IGlmIChjb250ZXh0LT5jb25zdHJ1Y3RvckVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsICpmbkNhbGws
IG9wLCAmdHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1Y3RvckVycm9y
Q2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVy
bU5vZGUsICpmbkNhbGwsIG9wLCAmdHlwZSkpIHsKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEl0J3MgYSBjb25zdHJ1Y3Rvciwgb2YgdHlw
ZSAndHlwZScuCiAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvcigoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxsLCAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0cnVjdG9yKCh5eXZzcFsoMSkgLSAoMSld
LmludGVybSkuaW50ZXJtTm9kZSwgJnR5cGUsIG9wLCBmbkNhbGwsICh5eWxzcFsoMSkgLSAoMSld
KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPT0gMCkgewogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoMCwgb3AsICh5eXZzcFsoMSkgLSAo
MSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKDAs
IG9wLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKHR5cGUpOwogICAgICAgICB9IGVs
c2UgewpAQCAtMjUxMSwxMyArMjQ5NCwxMyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIC8vCiAg
ICAgICAgICAgICBjb25zdCBURnVuY3Rpb24qIGZuQ2FuZGlkYXRlOwogICAgICAgICAgICAgYm9v
bCBidWlsdEluOwotICAgICAgICAgICAgZm5DYW5kaWRhdGUgPSBjb250ZXh0LT5maW5kRnVuY3Rp
b24oKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCBmbkNhbGwsICZidWlsdEluKTsKKyAg
ICAgICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKCh5eWxzcFsoMSkg
LSAoMSldKSwgZm5DYWxsLCAmYnVpbHRJbik7CiAgICAgICAgICAgICBpZiAoZm5DYW5kaWRhdGUp
IHsKICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEEgZGVjbGFyZWQgZnVu
Y3Rpb24uCiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICBpZiAoYnVpbHRJbiAm
JiAhZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkgJiYKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0pLmxpbmUsIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksIGZu
Q2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKICAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBvcCA9IGZu
Q2FuZGlkYXRlLT5nZXRCdWlsdEluT3AoKTsKQEAgLTI1MjksNyArMjUxMiw3IEBAIHl5cmVkdWNl
OgogICAgICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFRyZWF0IGl0IGxpa2UgYSBidWlsdC1pbiB1bmFyeSBvcGVyYXRvci4KICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKG9wLCAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsIDAsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgob3AsICh5eXZzcFsoMSkgLSAo
MSldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5zeW1i
b2xUYWJsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID09IDApICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpz
dHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4dHJhSW5mb1N0cmVhbSA8PCAiYnVpbHQgaW4gdW5hcnkgb3BlcmF0b3IgZnVuY3Rpb24uICBU
eXBlOiAiIDw8IHN0YXRpY19jYXN0PFRJbnRlcm1UeXBlZCo+KCh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybSkuaW50ZXJtTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCk7CkBAIC0yNTM4LDEyICsyNTIx
LDEyIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlZRVJST1I7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0p
LmxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5eXZz
cFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCBvcCwgKHl5bHNwWygxKSAtICgx
KV0pKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSByZWFsIGZ1bmN0aW9uIGNhbGwKIAotICAg
ICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIEVPcEZ1bmN0aW9uQ2FsbCwgKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5
eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCBFT3BGdW5jdGlvbkNhbGws
ICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShmbkNhbmRpZGF0ZS0+Z2V0UmV0dXJuVHlwZSgpKTsK
IAogICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGhvdyB3ZSBrbm93IHdoZXRoZXIgdGhl
IGdpdmVuIGZ1bmN0aW9uIGlzIGEgYnVpbHRJbiBmdW5jdGlvbiBvciBhIHVzZXIgZGVmaW5lZCBm
dW5jdGlvbgpAQCAtMjU3MCw3ICsyNTUzLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAg
Ly8gUHV0IG9uIGEgZHVtbXkgbm9kZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAgICAgICAgICAgICAg
ICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAg
ICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZp
bmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNTc4LDM5ICsy
NTYxLDM3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjoKKyAg
Y2FzZSAxODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0pOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzoKKyAgY2FzZSAx
OToKIAogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtKS5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIsICIiKTsKKyAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRl
ZCIsICIiKTsKICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2YWwuaW50
ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDE4OgorICBjYXNlIDIwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9
ICh5eXZzcFsoMSkgLSAoMildLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUg
PSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDE5OgorICBjYXNlIDIxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5
eXZzcFsoMSkgLSAoMildLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDIwOgorICBjYXNlIDIyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlv
biA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbik7CkBAIC0yNjE4LDcgKzI1OTks
NyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjE6CisgIGNhc2Ug
MjM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsKQEAgLTI2MjYsNyArMjYwNyw3IEBAIHl5cmVkdWNl
OgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjoKKyAgY2FzZSAyNDoKIAogICAgIHsK
ICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgMCwgbmV3IFRUeXBlKCh5eXZzcFsoMikgLSAo
MildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpIH07CkBAIC0yNjM2LDI0ICsy
NjE3LDI0IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMzoKKyAg
Y2FzZSAyNToKIAogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgMCwgbmV3IFRU
eXBlKCh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkp
IH07CiAgICAgICAgICh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24tPmFkZFBhcmFt
ZXRlcihwYXJhbSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbjsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJt
Tm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAo
MyldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybU5vZGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVybU5vZGUsICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgIDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyNDoKKyAgY2FzZSAyNjoKIAogICAgIHsKICAgICAgICAgKHl5dmFs
LmludGVybS5mdW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNToKKyAgY2FzZSAyNzoKIAogICAgIHsKICAg
ICAgICAgLy8KQEAgLTI2NjcsMzkgKzI2NDgsMzkgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICBj
YXNlIEVidEZsb2F0OgogICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0udHlwZSkubWF0cml4KSB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCgoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0udHlwZSkuc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0
MjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNl
IDI6IG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDM6IG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgc3dp
dGNoKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5zaXplKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBF
T3BDb25zdHJ1Y3RGbG9hdDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMjogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RWZWMyOyAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RWZWMzOyAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Ag
PSBFT3BDb25zdHJ1Y3RWZWM0OyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMTog
b3AgPSBFT3BDb25zdHJ1Y3RGbG9hdDsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
Mjogb3AgPSBFT3BDb25zdHJ1Y3RWZWMyOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RWZWMzOyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RWZWM0OyAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIEVidEludDoKICAgICAgICAgICAgICAgICBzd2l0Y2goKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpLnNpemUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEludDsgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVj
MiIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1
Y3RJVmVjMjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICBGUkFHX1ZFUlRf
T05MWSgiaXZlYzMiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0g
RU9wQ29uc3RydWN0SVZlYzM7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAg
RlJBR19WRVJUX09OTFkoIml2ZWM0IiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxp
bmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWM0OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IDE6IG9wID0gRU9wQ29uc3RydWN0SW50OyAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
Mjogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAz
OiBvcCA9IEVPcENvbnN0cnVjdElWZWMzOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6
IG9wID0gRU9wQ29uc3RydWN0SVZlYzQ7IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKICAgICAgICAgICAg
ICAgICBzd2l0Y2goKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUpIHsKLSAgICAg
ICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcCA9IEVPcENvbnN0cnVjdEJvb2w7ICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6
ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMiIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSAzOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiYnZlYzMiLCAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7IGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgNDogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWM0IiwgKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJWZWM0OyBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdEJWZWMzOyBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGRlZmF1bHQ6IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9wID09IEVP
cE51bGwpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0udHlwZSkubGluZSwgImNhbm5vdCBjb25zdHJ1Y3QgdGhpcyB0eXBlIiwgZ2V0QmFz
aWNTdHJpbmcoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJjYW5ub3QgY29uc3Ry
dWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKS50eXBlKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgICAgICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBlID0gRWJ0RmxvYXQ7
CiAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RGbG9hdDsKQEAgLTI3MTIsMjEgKzI2
OTMsMTAgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDI2OgotCi0g
ICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lkLCBF
YnBVbmRlZmluZWQpOwotICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlv
bigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZywgdHlwZSk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0gICAgO30KLSAgICBicmVhazsKLQotICBjYXNl
IDI3OgorICBjYXNlIDI4OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRF
cnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgKih5eXZzcFsoMSkgLSAoMSld
LmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygo
eXlsc3BbKDEpIC0gKDEpXSksICooeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZykpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwg
RWJwVW5kZWZpbmVkKTsKICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rp
b24oKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcsIHR5cGUpOwpAQCAtMjczNCw0NiArMjcw
NCw0NiBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjg6CisgIGNh
c2UgMjk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyOToKKyAgY2FzZSAzMDoKIAogICAgIHsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAiKysi
LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMildKSwgIisrIiwgKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFByZUluY3JlbWVudCwgKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMSkgLSAoMild
LmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVP
cFByZUluY3JlbWVudCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eWxzcFsoMSkgLSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAo
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnVuYXJ5T3BFcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICIrKyIsICh5eXZz
cFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDEpIC0gKDIpXSks
ICIrKyIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDMwOgorICBjYXNlIDMxOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZh
bHVlRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFso
MikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAoeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5l
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVt
ZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygx
KSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+dW5hcnlP
cEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIi0tIiwgKHl5dnNwWygyKSAtICgy
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgIi0tIiwgKHl5
dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5n
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzE6
CisgIGNhc2UgMzI6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0pLm9wICE9IEVPcE51bGwpIHsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtKS5vcCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUp
OworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLm9wLCAo
eXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygxKSAtICgy
KV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBl
cnJvck9wID0gIiI7CiAgICAgICAgICAgICAgICAgc3dpdGNoKCh5eXZzcFsoMSkgLSAoMildLmlu
dGVybSkub3ApIHsKQEAgLTI3ODEsNyArMjc1MSw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAg
ICAgIGNhc2UgRU9wTG9naWNhbE5vdDogZXJyb3JPcCA9ICIhIjsgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUsIGVy
cm9yT3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5
bHNwWygxKSAtICgyKV0pLCBlcnJvck9wLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAg
ICAgICAgfQpAQCAtMjc5MCwxODUgKzI3NjAsMTc4IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAzMjoKLQotICAgIHsgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BOdWxsOyA7fQot
ICAgIGJyZWFrOwotCiAgIGNhc2UgMzM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTmVnYXRp
dmU7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE51bGw7IDt9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAzNDoKIAotICAgIHsgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BMb2dpY2FsTm90OyA7fQor
ICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BOZWdhdGl2ZTsgO30KICAgICBicmVhazsKIAog
ICBjYXNlIDM1OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5eXZhbC5p
bnRlcm0pLm9wID0gRU9wTG9naWNhbE5vdDsgO30KICAgICBicmVhazsKIAogICBjYXNlIDM2Ogog
CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICBicmVhazsKKworICBjYXNlIDM3Ogor
CiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgiKiIsICh5eXZzcFsoMikgLSAoMyldLmxl
eCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE11bCwgKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAg
ICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiKiIs
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxz
cFsoMikgLSAoMyldKSwgIioiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzc6CisgIGNhc2UgMzg6CiAKICAgICB7Ci0gICAg
ICAgIEZSQUdfVkVSVF9PTkxZKCIvIiwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJpbmFyeU1hdGgoRU9wRGl2LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BEaXYsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNw
WygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+Ymlu
YXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIvIiwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZz
cFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0p
LCAiLyIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAzODoKKyAgY2FzZSAzOToKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzOToKKyAgY2FzZSA0MDoKIAogICAgIHsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wQWRkLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QmluYXJ5TWF0aChFT3BBZGQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygy
KSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5
T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIrIiwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAi
KyIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA0MDoKKyAgY2FzZSA0MToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wU3ViLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxl
eCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BT
dWIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3Bb
KDIpIC0gKDMpXS5sZXgpLmxpbmUsICItIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiLSIsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0MToK
KyAgY2FzZSA0MjoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA0MjoKKyAgY2FzZSA0MzoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA0MzoKKyAgY2FzZSA0NDoKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJp
bmFyeU1hdGgoRU9wTGVzc1RoYW4sICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
aW5hcnlNYXRoKEVPcExlc3NUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxz
cFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiPCIsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyld
KSwgIjwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5l
ZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgNDQ6CisgIGNhc2UgNDU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlN
YXRoKEVPcEdyZWF0ZXJUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmlu
YXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXls
c3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5i
aW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIj4iLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5n
KCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMp
XSksICI+IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlv
blsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDQ1OgorICBjYXNlIDQ2OgogCiAgICAgewotICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QmluYXJ5TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAo
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiPD0iLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIp
IC0gKDMpXSksICI8PSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0
YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwot
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0NjoKKyAgY2FzZSA0NzoKIAogICAgIHsKLSAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsK
ICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSwgIj49IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJy
b3IoKHl5bHNwWygyKSAtICgzKV0pLCAiPj0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNv
bnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAg
ICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDc6CisgIGNhc2UgNDg6CiAKICAg
ICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDg6CisgIGNh
c2UgNDk6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVxdWFsLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BFcXVhbCwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCku
bGluZSwgIj09IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiPT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0
QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5s
ZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAg
ICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDk6CisgIGNhc2UgNTA6CiAK
ICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5vdEVxdWFsLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9s
VGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BOb3RFcXVhbCwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsK
ICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGlu
ZSwgIiE9IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJy
b3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNv
bnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAg
ICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNTA6Ci0KLSAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOyA7fQotICAgIGJyZWFrOwotCiAgIGNhc2UgNTE6CiAKICAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOyA7fQpAQCAtMjk4NiwxNDMgKzI5NDksMTQ4IEBAIHl5cmVkdWNlOgogCiAgIGNh
c2UgNTQ6CiAKKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIGJyZWFrOworCisgIGNh
c2UgNTU6CisKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5z
eW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUsICImJiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiYmIiwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5p
b24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9u
QXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlv
bkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0g
KDMpXSkpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDU1OgorICBj
YXNlIDU2OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KICAgICBicmVhazsKIAotICBj
YXNlIDU2OgorICBjYXNlIDU3OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dp
Y2FsWG9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNw
WygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxl
eCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BM
b2dpY2FsWG9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyld
KSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3Io
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiXl4iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJeXiIsICh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAg
ICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0
YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25z
dCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRV
bmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwg
KHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA1NzoKKyAgY2FzZSA1ODoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSA1ODoKKyAgY2FzZSA1OToKIAogICAgIHsKLSAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFy
eU1hdGgoRU9wTG9naWNhbE9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFso
MikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmlu
YXJ5TWF0aChFT3BMb2dpY2FsT3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNw
WygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+Ymlu
YXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJ8fCIsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyld
KSwgInx8IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlv
blsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDU5OgorICBjYXNlIDYwOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDYwOgorICBjYXNlIDYxOgogCiAgICAgewotICAg
ICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxp
bmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICBp
ZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAoeXl2c3BbKDEp
IC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIp
IC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5eXZzcFsoMSkgLSAoNSld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eWxzcFsoMikgLSAoNSldKSk7CiAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpICE9ICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpCiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAwOwogCiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2
c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICI6IiwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoNSkgLSAoNSldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICg1KV0pLCAiOiIsICh5eXZzcFso
MykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAo
eXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2
MToKKyAgY2FzZSA2MjoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA2MjoKKyAgY2FzZSA2MzoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQt
PmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtKS5saW5lLCAiYXNzaWdu
IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBp
ZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDMpXSksICJhc3NpZ24i
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRBc3NpZ24oKHl5dnNwWygyKSAtICgzKV0u
aW50ZXJtKS5vcCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMp
XS5pbnRlcm0pLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWduKCh5eXZzcFsoMikgLSAoMyldLmludGVy
bSkub3AsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3Bb
KDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pKTsK
ICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5hc3NpZ25FcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0pLmxp
bmUsICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YXNzaWdu
RXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiYXNzaWduIiwgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDYzOgotCi0gICAgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQXNzaWdu
OyA7fQotICAgIGJyZWFrOwotCiAgIGNhc2UgNjQ6CiAKLSAgICB7IEZSQUdfVkVSVF9PTkxZKCIq
PSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50ZXJtKS5saW5l
ID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE11
bEFzc2lnbjsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQXNzaWduOyA7fQogICAg
IGJyZWFrOwogCiAgIGNhc2UgNjU6CiAKLSAgICB7IEZSQUdfVkVSVF9PTkxZKCIvPSIsICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0gKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcERpdkFzc2lnbjsg
O30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTXVsQXNzaWduOyA7fQogICAgIGJyZWFr
OwogCiAgIGNhc2UgNjY6CiAKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5
dmFsLmludGVybSkub3AgPSBFT3BBZGRBc3NpZ247IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5v
cCA9IEVPcERpdkFzc2lnbjsgO30KICAgICBicmVhazsKIAogICBjYXNlIDY3OgogCi0gICAgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wU3ViQXNz
aWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBZGRBc3NpZ247IDt9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSA2ODoKIAotICAgIHsKKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0g
RU9wU3ViQXNzaWduOyA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNjk6CisKKyAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2OToK
KyAgY2FzZSA3MDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCh5
eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAg
aWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiwiLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3Bb
KDIpIC0gKDMpXSksICIsIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDcwOgorICBjYXNlIDcxOgogCiAgICAgewogICAgICAg
ICBpZiAoY29udGV4dC0+Y29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpKSkKQEAgLTMxMzEsNyArMzA5OSw3IEBAIHl5cmVkdWNlOgogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3MToKKyAgY2FzZSA3MjoKIAogICAgIHsKICAgICAgICAg
VEZ1bmN0aW9uICZmdW5jdGlvbiA9ICooKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5mdW5jdGlv
bik7CkBAIC0zMTQ1LDEzICszMTEzLDEzIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29uc3Qg
VFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJhbShpKTsKICAgICAgICAgICAgIGlm
IChwYXJhbS5uYW1lICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVFZhcmlh
YmxlICp2YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOwor
ICAgICAgICAgICAgICAgIFRWYXJpYWJsZSB2YXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlw
ZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS0+Z2V0TmFt
ZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUp
LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgIHByb3Rv
dHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS5nZXRVbmlxdWVJZCgpLCB2YXJp
YWJsZS5nZXROYW1lKCksIHZhcmlhYmxlLmdldFR5cGUoKSwgKHl5bHNwWygxKSAtICgyKV0pKSwg
KHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRT
eW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUp
LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgIHByb3Rv
dHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsICh5eWxzcFso
MSkgLSAoMildKSksICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgCkBAIC0zMTYyLDcgKzMxMzAsNyBAQCB5eXJlZHVjZToKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgNzI6CisgIGNhc2UgNzM6CiAKICAgICB7CiAgICAgICAgIGlmICgo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSkKQEAgLTMxNzEsMjIgKzMx
MzksMjIgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDczOgorICBj
YXNlIDc0OgogCiAgICAgewogICAgICAgICBpZiAoKCh5eXZzcFsoMikgLSAoNCldLmludGVybS5w
cmVjaXNpb24pID09IEVicEhpZ2gpICYmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX0ZSQUdN
RU5UX1NIQURFUikgJiYgIWNvbnRleHQtPmZyYWdtZW50UHJlY2lzaW9uSGlnaCkgewotICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICg0KV0ubGV4KS5saW5lLCAicHJlY2lz
aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVyIiwgImhpZ2hwIik7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDQpXSksICJwcmVjaXNpb24gaXMg
bm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWNvbnRleHQtPnN5
bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oICh5eXZzcFsoMykgLSAoNCldLmludGVybS50
eXBlKSwgKHl5dnNwWygyKSAtICg0KV0uaW50ZXJtLnByZWNpc2lvbikgKSkgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICg0KV0ubGV4KS5saW5lLCAiaWxsZWdhbCB0
eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0
cmluZygoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0udHlwZSkudHlwZSkpOworICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICg0KV0pLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50
IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmluZygoeXl2c3Bb
KDMpIC0gKDQpXS5pbnRlcm0udHlwZSkudHlwZSkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAw
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3NDoKKyAgY2FzZSA3NToKIAogICAgIHsK
ICAgICAgICAgLy8KQEAgLTMyMDAsMjQgKzMxNjgsNDEgQEAgeXlyZWR1Y2U6CiAgICAgICAgIFRG
dW5jdGlvbiogcHJldkRlYyA9IHN0YXRpY19jYXN0PFRGdW5jdGlvbio+KGNvbnRleHQtPnN5bWJv
bFRhYmxlLmZpbmQoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0TWFuZ2xl
ZE5hbWUoKSkpOwogICAgICAgICBpZiAocHJldkRlYykgewogICAgICAgICAgICAgaWYgKHByZXZE
ZWMtPmdldFJldHVyblR5cGUoKSAhPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24p
LT5nZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2
c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUg
dGhlIHNhbWUgcmV0dXJuIHR5cGUiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24p
LT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVz
dCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBlIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1
bmN0aW9uKS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCkpOwogICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFyYW1Db3VudCgpOyArK2kpIHsKICAgICAg
ICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkg
IT0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+
Z2V0UXVhbGlmaWVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZl
IHRoZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOworICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJvdmVy
bG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMi
LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRQYXJhbShpKS50eXBlLT5n
ZXRRdWFsaWZpZXJTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAg
ICAgICAvLworICAgICAgICAvLyBDaGVjayBmb3IgcHJldmlvdXNseSBkZWNsYXJlZCB2YXJpYWJs
ZXMgdXNpbmcgdGhlIHNhbWUgbmFtZS4KKyAgICAgICAgLy8KKyAgICAgICAgVFN5bWJvbCAqcHJl
dlN5bSA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmQoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LmZ1bmN0aW9uKS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgaWYgKHByZXZTeW0pCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghcHJldlN5bS0+aXNGdW5jdGlvbigpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgInJlZGVm
aW5pdGlvbiIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbiktPmdldE5hbWUoKS5j
X3N0cigpLCAiZnVuY3Rpb24iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgICAvLyBJbnNlcnQgdGhlIHVubWFuZ2xlZCBuYW1lIHRvIGRldGVjdCBwb3RlbnRpYWwg
ZnV0dXJlIHJlZGVmaW5pdGlvbiBhcyBhIHZhcmlhYmxlLgorICAgICAgICAgICAgY29udGV4dC0+
c3ltYm9sVGFibGUuZ2V0T3V0ZXJMZXZlbCgpLT5pbnNlcnQoKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLmZ1bmN0aW9uKS0+Z2V0TmFtZSgpLCAqKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0
aW9uKSk7CisgICAgICAgIH0KKworICAgICAgICAvLwogICAgICAgICAvLyBJZiB0aGlzIGlzIGEg
cmVkZWNsYXJhdGlvbiwgaXQgY291bGQgYWxzbyBiZSBhIGRlZmluaXRpb24sCiAgICAgICAgIC8v
IGluIHdoaWNoIGNhc2UsIHdlIHdhbnQgdG8gdXNlIHRoZSB2YXJpYWJsZSBuYW1lcyBmcm9tIHRo
aXMgb25lLCBhbmQgbm90IHRoZSBvbmUgdGhhdCdzCiAgICAgICAgIC8vIGJlaW5nIHJlZGVjbGFy
ZWQuICBTbywgcGFzcyBiYWNrIHVwIHRoaXMgZGVjbGFyYXRpb24sIG5vdCB0aGUgb25lIGluIHRo
ZSBzeW1ib2wgdGFibGUuCiAgICAgICAgIC8vCiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0
aW9uID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKTsKLSAgICAgICAgKHl5dmFs
LmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKIAogICAgICAgICAv
LyBXZSdyZSBhdCB0aGUgaW5uZXIgc2NvcGUgbGV2ZWwgb2YgdGhlIGZ1bmN0aW9uJ3MgYXJndW1l
bnRzIGFuZCBib2R5IHN0YXRlbWVudC4KICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBwcm90
b3R5cGUgdG8gdGhlIHN1cnJvdW5kaW5nIHNjb3BlIGluc3RlYWQuCkBAIC0zMjI1LDIxICszMjEw
LDIxIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3NToKKyAgY2Fz
ZSA3NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA3NjoKKyAgY2FzZSA3NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlv
bikgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgIDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSA3NzoKKyAgY2FzZSA3ODoKIAogICAgIHsKICAgICAgICAgLy8gQWRkIHRo
ZSBwYXJhbWV0ZXIKQEAgLTMyNTEsNyArMzIzNiw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSA3ODoKKyAgY2FzZSA3OToKIAogICAgIHsKICAgICAgICAgLy8KQEAg
LTMyNjIsNyArMzI0Nyw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgLy8KICAgICAgICAgICAg
IC8vIFRoaXMgcGFyYW1ldGVyID4gZmlyc3QgaXMgdm9pZAogICAgICAgICAgICAgLy8KLSAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgImNhbm5v
dCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSciLCAidm9pZCIpOworICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiY2Fubm90IGJlIGFu
IGFyZ3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBkZWxldGUgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtKS5wYXJhbS50eXBlOwogICAgICAgICB9IGVsc2UgewpAQCAtMzI3MywxNSArMzI1
OCwxNSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzk6CisgIGNh
c2UgODA6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlw
ZSkucXVhbGlmaWVyICE9IEV2cUdsb2JhbCAmJiAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlw
ZSkucXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZv
ciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
bHNwWygyKSAtICgzKV0pLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZvciBmdW5jdGlvbiByZXR1
cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLnF1
YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAg
ICAgICAgIC8vIG1ha2Ugc3VyZSBhIHNhbXBsZXIgaXMgbm90IGludm9sdmVkIGFzIHdlbGwuLi4K
LSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygy
KSAtICgzKV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkpKQorICAg
ICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0g
KDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBhcyBhIHByb3Rv
dHlwZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCByZWN1cnNpb24pCkBAIC0z
Mjk0LDExMiArMzI3OSwxMTAgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDgwOgorICBjYXNlIDgxOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAn
dm9pZCciLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJpbGxlZ2FsIHVzZSBvZiB0
eXBlICd2b2lkJyIsICh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICBpZiAoY29u
dGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgKih5
eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2Vy
dmVkRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIpXS5sZXgp
LnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRQYXJh
bWV0ZXIgcGFyYW0gPSB7KHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIG5ldyBUVHlwZSgo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkpfTsKLSAgICAgICAgKHl5dmFsLmludGVybSku
bGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKICAgICAgICAgKHl5dmFsLmludGVy
bSkucGFyYW0gPSBwYXJhbTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODE6CisgIGNh
c2UgODI6CiAKICAgICB7CiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIG1ha2UgYW4gYXJy
YXkgb3V0IG9mIHRoaXMgdHlwZQotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JD
aGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVy
bS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eWxz
cFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRF
cnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSwgKih5eXZzcFsoMikgLSAoNSld
LmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygo
eXlsc3BbKDIpIC0gKDUpXSksICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZykpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgaW50IHNpemU7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCku
bGluZSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQor
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUp
XSksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5dnNwWygxKSAtICg1KV0u
aW50ZXJtLnR5cGUpLnNldEFycmF5KHRydWUsIHNpemUpOwogCiAgICAgICAgIFRUeXBlKiB0eXBl
ID0gbmV3IFRUeXBlKCh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSk7CiAgICAgICAgIFRQ
YXJhbWV0ZXIgcGFyYW0gPSB7ICh5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCB0eXBlIH07
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxp
bmU7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnBhcmFtID0gcGFyYW07CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDgyOgorICBjYXNlIDgzOgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5wYXJhbUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKS5saW5lLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRl
cm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0ucXVh
bGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDgzOgorICBjYXNlIDg0
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMikgLSAoMildLmlu
dGVybSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JDaGVjaygo
eXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLmxpbmUsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5x
dWFsaWZpZXIpLCAqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAg
ICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAo
MildKSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICooeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMild
LmludGVybSkubGluZSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVh
bGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCBFdnFUZW1wb3JhcnksICh5eXZz
cFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICA7fQogICAgIGJyZWFrOwog
Ci0gIGNhc2UgODQ6CisgIGNhc2UgODU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0p
ID0gKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFt
RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pLmxpbmUsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFsoMikgLSAoMyldLmludGVybS5xdWFs
aWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFsoMikgLSAoMyldLmludGVybS5xdWFsaWZpZXIp
LCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODU6CisgIGNhc2UgODY6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKTsK
LSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCh5eXZzcFso
MikgLSAoMildLmludGVybSkubGluZSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmll
ciksICooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAo
Y29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCAo
eXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikgLSAoMildLmlu
dGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0uaW50ZXJt
KS5saW5lLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIp
LCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFt
RXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA4NjoKKyAgY2FzZSA4NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZp
ZXIpID0gRXZxSW47CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDg3OgorICBjYXNlIDg4
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFJbjsKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODg6CisgIGNhc2UgODk6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cU91dDsKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgODk6CisgIGNhc2UgOTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0ucXVhbGlmaWVyKSA9IEV2cUluT3V0OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5
MDoKKyAgY2FzZSA5MToKIAogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgMCwg
bmV3IFRUeXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKSkgfTsKQEAgLTM0MDcsMTA0
ICszMzkwLDEwNCBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTE6
CisgIGNhc2UgOTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTI6CisgIGNh
c2UgOTM6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLnR5
cGUudHlwZSA9PSBFYnRJbnZhcmlhbnQgJiYgISh5eXZzcFsoMykgLSAoMyldLmxleCkuc3ltYm9s
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDMpIC0gKDMp
XS5sZXgpLmxpbmUsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50
IiwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAidW5kZWNsYXJlZCBpZGVudGlmaWVy
IGRlY2xhcmVkIGFzIGludmFyaWFudCIsICh5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5j
X3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogCi0g
ICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRT
eW1ib2woMCwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0pLnR5cGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVybU5vZGUsIHN5
bWJvbCwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgVEludGVybVN5bWJv
bCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygz
KSAtICgzKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkudHlw
ZSksICh5eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkg
LSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgc3ltYm9sLCAoeXlsc3BbKDMpIC0gKDMpXSkpOwog
ICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2so
KHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAoeXl2YWwuaW50ZXJtKS50eXBlKSkKKyAgICAg
ICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgz
KV0pLCAoeXl2YWwuaW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygoeXl2c3Bb
KDMpIC0gKDMpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5
dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENv
bnN0RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSksICooeXl2c3BbKDMpIC0gKDMpXS5sZXgp
LnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogCiAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAg
ICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0ubGV4KS5s
aW5lLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUs
IHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCh5eWxz
cFsoMykgLSAoMyldKSwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50
ZXJtKS50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIGlmIChzeW1ib2wgJiYgdmFyaWFibGUpCiAgICAgICAgICAgICBzeW1ib2wtPnNldElk
KHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
OTM6CisgIGNhc2UgOTQ6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFs
aWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNwWygxKSAt
ICg1KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmll
ckVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0p
LnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChj
b250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGlu
ZSwgKih5eXZzcFsoMykgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRl
cm0pLnR5cGUsIHRydWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JD
aGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICooeXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB0cnVlKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKIAogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMSkgLSAo
NSldLmludGVybSk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2so
KHl5dnNwWyg0KSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5
cGUpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDUp
XS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNSldKSwgKHl5dnNw
WygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9y
Q2hlY2soKHl5bHNwWyg0KSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZS5zZXRBcnJheSh0cnVlKTsKICAg
ICAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGU7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSwgKih5eXZzcFsoMykg
LSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUsIHZhcmlh
YmxlKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5bHNwWyg0
KSAtICg1KV0pLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAo
NSldLmludGVybSkudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NDoKKyAg
Y2FzZSA5NToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVy
cm9yQ2hlY2soKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDYpXS5p
bnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JD
aGVjaygoeXlsc3BbKDMpIC0gKDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQt
Pm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lLCAqKHl5
dnNwWygzKSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlw
ZSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5
eWxzcFsoMykgLSAoNildKSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCAoeXl2c3Bb
KDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICg2KV0uaW50
ZXJtKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3Bb
KDQpIC0gKDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkgfHwg
Y29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNildLmxleCku
bGluZSwgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAoeXl2c3BbKDEpIC0g
KDYpXS5pbnRlcm0pLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygo
eXlsc3BbKDQpIC0gKDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
aW50IHNpemU7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygo
eXl2c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoNSkgLSAoNildLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVF
cnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKHl5dnNwWyg1KSAtICg2KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZS5zZXRBcnJheSh0
cnVlLCBzaXplKTsKICAgICAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDYpXS5sZXgp
LmxpbmUsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg2KV0u
aW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlF
cnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3Ry
aW5nLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBlID0gVFR5
cGUoKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlKTsKICAgICAgICAgICAgIHR5cGUuc2V0
QXJyYXlTaXplKHNpemUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICg2
KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZh
cmlhYmxlID8gdmFyaWFibGUtPmdldFVuaXF1ZUlkKCkgOiAwLCAqKHl5dnNwWygzKSAtICg2KV0u
bGV4KS5zdHJpbmcsIHR5cGUsICh5eXZzcFsoMykgLSAoNildLmxleCkubGluZSksICh5eXZzcFso
MykgLSAoNildLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1B
Z2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEp
IC0gKDYpXS5pbnRlcm0pLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1i
b2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICooeXl2c3BbKDMpIC0g
KDYpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5bHNwWygzKSAtICg2KV0pKSwgKHl5bHNwWygzKSAt
ICg2KV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NToKKyAg
Y2FzZSA5NjoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVy
cm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JD
aGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmludGVy
bSkgPSAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pOwogCiAgICAgICAgIFRJbnRlcm1Ob2RlKiBp
bnRlcm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigoeXl2
c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0cmluZywg
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5l
eGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWygzKSAtICg1KV0pLCAqKHl5dnNwWygzKSAtICg1KV0u
bGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgKHl5dnNwWyg1KSAt
ICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CiAgICAgICAgICAg
ICAvLwogICAgICAgICAgICAgLy8gYnVpbGQgdGhlIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlv
bgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIGlmIChpbnRlcm1Ob2RlKQotICAgICAgICAo
eXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jv
d0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLmludGVybU5vZGUsIGludGVybU5v
ZGUsICh5eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0p
LmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5
eXZzcFsoMSkgLSAoNSldLmludGVybSkuaW50ZXJtTm9kZSwgaW50ZXJtTm9kZSwgKHl5bHNwWyg0
KSAtICg1KV0pKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLmludGVybUFn
Z3JlZ2F0ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTM1MTQsNzcgKzM0OTcsNzcgQEAgeXlyZWR1
Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDk2OgorICBjYXNlIDk3OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LnR5cGUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3lt
Ym9sKDAsICIiLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkpLCAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSksICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCgwLCAiIiwgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpKSwgKHl5
bHNwWygxKSAtICgxKV0pKSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgOTc6CisgIGNhc2UgOTg6CiAKICAgICB7Ci0gICAgICAgIFRJbnRlcm1TeW1i
b2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFso
MikgLSAoMildLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlw
ZSkpLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
KS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShz
eW1ib2wsICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1i
b2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFso
MikgLSAoMildLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlw
ZSkpLCAoeXlsc3BbKDIpIC0gKDIpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1B
Z2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5
eWxzcFsoMikgLSAoMildKSk7CiAgICAgICAgIAotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0
UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICh5eXZhbC5p
bnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JD
aGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICh5eXZhbC5pbnRlcm0pLnR5cGUpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29u
c3RFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgKih5eXZzcFsoMikgLSAo
MildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCBmYWxzZSkpCisgICAgICAgIGlm
IChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMildKSwgKih5
eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCBmYWxzZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSk7
CiAKICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5ub25Jbml0RXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICooeXl2c3Bb
KDIpIC0gKDIpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgdmFyaWFibGUpKQor
ICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0p
LCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5cGUsIHZh
cmlhYmxlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgaWYgKHZh
cmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdl
dFVuaXF1ZUlkKCkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5ODoKKyAgY2FzZSA5
OToKIAogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4
KS5saW5lLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIsICh5eXZz
cFsoMikgLSAoNCldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5bHNwWygyKSAtICg0KV0pLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90IHN1
cHBvcnRlZCIsICh5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAoNCldLmxl
eCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpLCAoeXl2c3Bb
KDIpIC0gKDQpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dy
ZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eXZz
cFsoMikgLSAoNCldLmxleCkubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAoNCldLmxl
eCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpLCAoeXlsc3Bb
KDIpIC0gKDQpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eWxzcFsoMikgLSAo
NCldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0udHlwZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDk5OgorICBjYXNlIDEw
MDoKIAogICAgIHsKICAgICAgICAgVFR5cGUgdHlwZSA9IFRUeXBlKCh5eXZzcFsoMSkgLSAoNSld
LmludGVybS50eXBlKSk7CiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFso
NCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAoeXl2c3BbKDQp
IC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwotICAgICAg
ICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KDAsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5dnNwWygyKSAtICg1
KV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXl2c3BbKDIpIC0g
KDUpXS5sZXgpLmxpbmUpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmlu
ZywgdHlwZSwgKHl5bHNwWygyKSAtICg1KV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9s
LCAoeXlsc3BbKDIpIC0gKDUpXSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0
cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2
c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0
UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSld
LmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAg
ICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0u
bGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAo
NSldLmludGVybS50eXBlKSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29u
c3RFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKih5eXZzcFsoMikgLSAoNSldLmxleCku
c3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSksIHRydWUpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAo
eXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFy
cmF5VHlwZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEp
IC0gKDUpXS5pbnRlcm0udHlwZSkpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVj
aygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS50
eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eWxzcFso
MykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSB8fCBjb250ZXh0LT5h
cnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0g
KDUpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2
c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCisgICAgICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5
eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAo
NSldLmludGVybS50eXBlKS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgICAgIFRWYXJp
YWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JD
aGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgp
LnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLCB2YXJpYWJsZSkpCisgICAg
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAoNSldKSwg
Kih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0u
dHlwZSksIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgICAgIHN5bWJv
bC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwpAQCAtMzU5MiwyMSArMzU3NSwyMSBA
QCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAwOgorICBjYXNlIDEw
MToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hl
Y2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
dHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygo
eXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmludGVybSkudHlw
ZSA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKTsKIAogICAgICAgICBUSW50ZXJtTm9k
ZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIo
KHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJp
bmcsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CisgICAgICAgIGlmICghY29udGV4
dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eWxzcFsoMikgLSAoNCldKSwgKih5eXZzcFsoMikgLSAo
NCldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSksICh5eXZzcFso
NCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkgewogICAgICAg
ICAvLwogICAgICAgICAvLyBCdWlsZCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAgICAg
ICAgLy8KICAgICAgICAgICAgIGlmKGludGVybU5vZGUpCi0gICAgICAgICAgICAgICAgKHl5dmFs
LmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dy
ZWdhdGUoaW50ZXJtTm9kZSwgKHl5dnNwWygzKSAtICg0KV0ubGV4KS5saW5lKTsKKyAgICAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCAoeXlsc3BbKDMpIC0gKDQpXSkpOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3Jl
Z2F0ZSA9IDA7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNjE2LDU4ICszNTk5LDU4IEBAIHl5cmVk
dWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDE6CisgIGNhc2UgMTAyOgogCiAg
ICAgewotICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgKHl5dnNw
WygxKSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9y
Q2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQorICAgICAgICBWRVJURVhfT05M
WSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgKHl5bHNwWygxKSAtICgyKV0pKTsKKyAgICAgICAg
aWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBl
LnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgKHl5dnNwWygy
KSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkudHlwZS5zZXRCYXNp
YyhFYnRJbnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICh5eWxzcFsoMikgLSAoMild
KSk7CiAgICAgICAgIGlmICghKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zeW1ib2wpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMildLmxleCkubGlu
ZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAoeXl2c3Bb
KDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQg
YXMgaW52YXJpYW50IiwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAwOwogICAgICAgICB9CiAgICAgICAg
IGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5z
dHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgp
LmxpbmUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXl2c3BbKDIpIC0gKDIp
XS5sZXgpLmxpbmUpOworICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJp
bmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXlsc3BbKDIpIC0gKDIpXSkpOworICAg
ICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3BbKDIpIC0gKDIpXSkpOwogICAgICAg
ICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwMjoKKyAgY2FzZSAxMDM6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0udHlwZSk7CiAKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5h
cnJheSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLnR5cGUpLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7Cisg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJub3Qgc3VwcG9y
dGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2V0QXJyYXko
ZmFsc2UpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwMzoKKyAg
Y2FzZSAxMDQ6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
dHlwZSkuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAo
MildLmludGVybS50eXBlKS5saW5lLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJh
eSIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAibm90
IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnNl
dEFycmF5KGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0udHlwZSkucXVhbGlmaWVyID09IEV2cUF0dHJpYnV0ZSAmJgogICAgICAgICAgICAg
KCh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS50eXBlID09IEVidEJvb2wgfHwgKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0SW50KSkgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLmxpbmUsICJjYW5u
b3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgyKV0u
aW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
bHNwWygyKSAtICgyKV0pLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3Ry
aW5nKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIpKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoKCh5eXZzcFso
MSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ0luIHx8ICh5eXZz
cFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ091dCkgJiYK
ICAgICAgICAgICAgICgoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9PSBFYnRC
b29sIHx8ICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS50eXBlID09IEVidEludCkpIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBl
KS5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKCh5eXZz
cFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdl
dFF1YWxpZmllclN0cmluZygoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVy
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKTsKQEAg
LTM2NzUsNzEgKzM2NTgsNzEgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDEwNDoKKyAgY2FzZSAxMDU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQ29uc3QsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGlu
ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQ29u
c3QsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEw
NToKKyAgY2FzZSAxMDY6CiAKICAgICB7Ci0gICAgICAgIFZFUlRFWF9PTkxZKCJhdHRyaWJ1dGUi
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4dC0+Z2xv
YmFsRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQorICAgICAgICBWRVJURVhfT05M
WSgiYXR0cmlidXRlIiwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgaWYgKGNvbnRleHQt
Pmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5hdEdsb2JhbExldmVsKCksICJhdHRyaWJ1dGUiKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBF
dnFBdHRyaWJ1dGUsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQXR0cmlidXRlLCAoeXlsc3BbKDEp
IC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDY6CisgIGNhc2UgMTA3
OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXl2c3Bb
KDEpIC0gKDEpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSwgInZhcnlpbmciKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5
bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ2
YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChj
b250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsICh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9p
ZCwgRXZxVmFyeWluZ0luLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nSW4sICh5
eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwNzoKKyAg
Y2FzZSAxMDg6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNr
KCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmds
b2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBTSF9WRVJU
RVhfU0hBREVSKQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRW
b2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUp
OworICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJ
bnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFy
aWFudFZhcnlpbmdJbiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50VmFyeWlu
Z0luLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
MDg6CisgIGNhc2UgMTA5OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJy
b3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSwgInVuaWZvcm0iKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2Jh
bEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCksICJ1bmlmb3JtIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVW5pZm9y
bSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlmb3JtLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDk6CisgIGNhc2UgMTEwOgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5
cGUpOwogCiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiA9PSBFYnBV
bmRlZmluZWQpIHsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucHJlY2lzaW9uID0g
Y29udGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0udHlwZSkudHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+cHJlY2lzaW9u
RXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSwgKHl5dmFsLmlu
dGVybS50eXBlKS5wcmVjaXNpb24sICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBl
KSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPnByZWNpc2lvbkVycm9yQ2hlY2soKHl5bHNw
WygxKSAtICgxKV0pLCAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiwgKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDExMDoKKyAgY2FzZSAxMTE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSk7CkBAIC0zNzQ3LDYzICszNzMw
LDU1IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTE6CisgIGNh
c2UgMTEyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBI
aWdoOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTI6CisgIGNhc2UgMTEzOgogCiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBNZWRpdW07CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDExMzoKKyAgY2FzZSAxMTQ6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVicExvdzsKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgMTE0OgorICBjYXNlIDExNToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTE1OgorICBjYXNlIDExNjoKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKTsKIAotICAg
ICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDQpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNCldKSwgKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChj
b250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwg
KHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQorICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg0KV0p
LCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxMTY6Ci0KLSAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBxdWFs
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9Ci0gICAgYnJlYWs7Ci0KICAg
Y2FzZSAxMTc6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRWb2lkLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJl
YWs7CiAKQEAgLTM4MTEsNyArMzc4Niw3IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXlsc3BbKDEp
IC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4MTksNyArMzc5NCw3IEBAIHl5
cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsK
IApAQCAtMzgyNyw4ICszODAyLDcgQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFs
aWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUds
b2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CisgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAg
ICA7fQogICAgIGJyZWFrOwogCkBAIC0zODM2LDggKzM4MTAsOCBAQCB5eXJlZHVjZToKIAogICAg
IHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNw
WygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUo
Mik7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzg0NSw4ICszODE5LDggQEAgeXlyZWR1Y2U6
CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUo
NCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWws
ICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdn
cmVnYXRlKDMpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4NTQsOCArMzgyOCw4IEBAIHl5
cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dy
ZWdhdGUoMik7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQs
IHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QWdncmVnYXRlKDQpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4NjMsOCArMzgzNyw4
IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRBZ2dyZWdhdGUoMyk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRBZ2dyZWdhdGUoMik7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzg3Miw4ICsz
ODQ2LDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29sLCBxdWFs
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0zODgx
LDggKzM4NTUsOCBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEludCwg
cXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgO30KICAgICBicmVhazsKIApAQCAt
Mzg5MCw4ICszODY0LDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRJ
bnQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUp
LnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CiAgICAgO30KICAgICBicmVhazsKIApA
QCAtMzg5OSw5NSArMzg3Myw5NiBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgVFF1YWxp
ZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2lj
KEVidEludCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICA7fQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTI5OgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgibWF0MiIs
ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRl
bXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwg
cXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRBZ2dyZWdhdGUoMiwgdHJ1ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICA7fQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMTMwOgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgibWF0MyIsICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBv
cmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVh
bCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIsIHRydWUpOwogICAgIDt9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMzE6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJtYXQ0
IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0
LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0LCB0cnVlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7CiAgICAgO30KICAg
ICBicmVhazsKIAogICBjYXNlIDEzMjoKIAogICAgIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFko
InNhbXBsZXIyRCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFs
aWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUds
b2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRTYW1wbGVyMkQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFso
MSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDQs
IHRydWUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzM6CiAKICAgICB7Ci0gICAg
ICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyQ3ViZSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCku
bGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhF
YnRTYW1wbGVyMkQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVh
azsKIAogICBjYXNlIDEzNDoKIAogICAgIHsKKyAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXJDdWJl
LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2Fz
ZSAxMzU6CisKKyAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24o
IkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1w
bGVyRXh0ZXJuYWxPRVMiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkg
LSAoMSldKSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlckV4dGVybmFsT0VTIik7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgRlJBR19WRVJU
X09OTFkoInNhbXBsZXJFeHRlcm5hbE9FUyIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7
CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzU6CisgIGNhc2UgMTM2OgogCiAgICAgewogICAgICAg
ICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfdGV4dHVyZV9yZWN0YW5n
bGUiKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CisgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ1bnN1cHBvcnRlZCB0eXBlIiwg
InNhbXBsZXIyRFJlY3QiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEUmVjdCIsICh5eXZzcFsoMSkg
LSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyMkRSZWN0LCBxdWFs
LCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzNjoKKyAgY2FzZSAxMzc6CiAKICAgICB7
Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzdHJ1Y3QiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0udHlwZSkubGluZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0udHlwZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlm
aWVyID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDog
RXZxVGVtcG9yYXJ5OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzc6CisgIGNhc2Ug
MTM4OgogCiAgICAgewogICAgICAgICAvLwpAQCAtMzk5Niw4NSArMzk3MSw4NiBAQCB5eXJlZHVj
ZToKICAgICAgICAgLy8KICAgICAgICAgVFR5cGUmIHN0cnVjdHVyZSA9IHN0YXRpY19jYXN0PFRW
YXJpYWJsZSo+KCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3ltYm9sKS0+Z2V0VHlwZSgpOwogICAg
ICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUp
OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwgcXVhbCwg
KHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS51c2VyRGVm
ID0gJnN0cnVjdHVyZTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM4OgorICBjYXNl
IDEzOToKIAotICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5dnNw
WygyKSAtICgzKV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgzKV0ubGV4KS5zdHJpbmcpKSBj
b250ZXh0LT5yZWNvdmVyKCk7IDt9CisgICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNs
YXJhdGlvbigoeXlsc3BbKDIpIC0gKDMpXSksICooeXl2c3BbKDIpIC0gKDMpXS5sZXgpLnN0cmlu
ZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzOToKKyAg
Y2FzZSAxNDA6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hl
Y2soKHl5dnNwWygyKSAtICg2KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg2KV0ubGV4KS5z
dHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eWxzcFso
MikgLSAoNildKSwgKih5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRU
eXBlKCh5eXZzcFsoNSkgLSAoNildLmludGVybS50eXBlTGlzdCksICooeXl2c3BbKDIpIC0gKDYp
XS5sZXgpLnN0cmluZyk7CisgICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUobmV3
IFRTdHJ1Y3R1cmUoKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoNSkgLSAo
NildLmludGVybS5maWVsZExpc3QpKSk7CiAgICAgICAgIFRWYXJpYWJsZSogdXNlclR5cGVEZWYg
PSBuZXcgVFZhcmlhYmxlKCh5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nLCAqc3RydWN0dXJl
LCB0cnVlKTsKICAgICAgICAgaWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCp1c2Vy
VHlwZURlZikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoNild
LmxleCkubGluZSwgInJlZGVmaW5pdGlvbiIsICh5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5n
LT5jX3N0cigpLCAic3RydWN0Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3Bb
KDIpIC0gKDYpXSksICJyZWRlZmluaXRpb24iLCAoeXl2c3BbKDIpIC0gKDYpXS5sZXgpLnN0cmlu
Zy0+Y19zdHIoKSwgInN0cnVjdCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICB9Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0
LCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoNildLmxleCkubGluZSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eWxz
cFsoMSkgLSAoNildKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkudXNlckRlZiA9IHN0
cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDE0MDoKKyAgY2FzZSAxNDE6CiAKLSAgICB7IGlmIChj
b250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eXZzcFsoMikgLSAoMildLmxleCkubGlu
ZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyA7
fQorICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5bHNwWygyKSAt
ICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVy
KCk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDE6CisgIGNhc2UgMTQyOgogCiAgICAgewot
ICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCh5eXZzcFsoNCkgLSAoNSldLmlu
dGVybS50eXBlTGlzdCksIFRTdHJpbmcoIiIpKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg1KV0ubGV4
KS5saW5lKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcgVFN0cnVj
dHVyZShOZXdQb29sVFN0cmluZygiIiksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5maWVsZExp
c3QpKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBF
dnFUZW1wb3JhcnksICh5eWxzcFsoMSkgLSAoNSldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkudXNlckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERl
Y2xhcmF0aW9uKCk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0MjoKKyAgY2FzZSAx
NDM6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLnR5cGVMaXN0KTsKKyAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExp
c3QpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZpZWxkTGlzdCk7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDE0MzoKKyAgY2FzZSAxNDQ6CiAKICAgICB7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZUxpc3QpID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KTsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0udHlwZUxpc3QpLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaiA9IDA7IGogPCAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+c2l6ZSgpOyArK2opIHsK
LSAgICAgICAgICAgICAgICBpZiAoKCooeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSlbal0udHlwZS0+
Z2V0RmllbGROYW1lKCkgPT0gKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZUxpc3QpKVtp
XS50eXBlLT5nZXRGaWVsZE5hbWUoKSkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoKih5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCkpW2ldLmxpbmUsICJkdXBs
aWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsICgqKHl5dnNwWygyKSAt
ICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkuY19zdHIoKSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSA9ICh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS5maWVsZExpc3QpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICh5eXZzcFso
MikgLSAoMildLmludGVybS5maWVsZExpc3QpLT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
VEZpZWxkKiBmaWVsZCA9ICgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmZpZWxkTGlzdCkpW2ld
OworICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCAoeXl2YWwuaW50ZXJtLmZpZWxk
TGlzdCktPnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgaWYgKCgqKHl5dmFsLmludGVy
bS5maWVsZExpc3QpKVtqXS0+bmFtZSgpID09IGZpZWxkLT5uYW1lKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiZHVwbGljYXRlIGZp
ZWxkIG5hbWUgaW4gc3RydWN0dXJlOiIsICJzdHJ1Y3QiLCBmaWVsZC0+bmFtZSgpLmNfc3RyKCkp
OwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCkt
PnB1c2hfYmFjaygoKih5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCkpW2ldKTsKKyAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+cHVzaF9iYWNrKGZpZWxkKTsKICAg
ICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDQ6CisgIGNhc2UgMTQ1Ogog
CiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9ICh5eXZzcFsoMikgLSAo
MyldLmludGVybS50eXBlTGlzdCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSA9
ICh5eXZzcFsoMikgLSAoMyldLmludGVybS5maWVsZExpc3QpOwogCi0gICAgICAgIGlmIChjb250
ZXh0LT52b2lkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkubGluZSwg
KCooeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0udHlwZUxpc3QpKVswXS50eXBlLT5nZXRGaWVsZE5h
bWUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkgeworICAgICAgICBpZiAoY29u
dGV4dC0+dm9pZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgzKV0pLCAoKih5eXZzcFsoMikgLSAo
MyldLmludGVybS5maWVsZExpc3QpKVswXS0+bmFtZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0udHlwZSkpKSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0K
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoeXl2YWwuaW50ZXJtLnR5cGVM
aXN0KS0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAv
LwogICAgICAgICAgICAgLy8gQ2FyZWZ1bCBub3QgdG8gcmVwbGFjZSBhbHJlYWR5IGtub3duIGFz
cGVjdHMgb2YgdHlwZSwgbGlrZSBhcnJheS1uZXNzCiAgICAgICAgICAgICAvLwotICAgICAgICAg
ICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0udHlwZUxpc3QpKVtpXS50eXBlOworICAg
ICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSlbaV0tPnR5
cGUoKTsKICAgICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0udHlwZSkudHlwZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXROb21pbmFsU2l6ZSgoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuc2l6ZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXRN
YXRyaXgoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLm1hdHJpeCk7CkBAIC00MDgyLDg1
ICs0MDU4LDc1IEBAIHl5cmVkdWNlOgogCiAgICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBhcnJh
eXMgb2YgYXJyYXlzCiAgICAgICAgICAgICBpZiAodHlwZS0+aXNBcnJheSgpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLnR5cGUpLmxpbmUsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpCisg
ICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWygx
KSAtICgzKV0pLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLmFycmF5KQogICAgICAgICAgICAgICAg
IHR5cGUtPnNldEFycmF5U2l6ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuYXJyYXlT
aXplKTsKLSAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkudXNl
ckRlZikgeworICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS51
c2VyRGVmKQogICAgICAgICAgICAgICAgIHR5cGUtPnNldFN0cnVjdCgoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0udHlwZSkudXNlckRlZi0+Z2V0U3RydWN0KCkpOwotICAgICAgICAgICAgICAgIHR5
cGUtPnNldFR5cGVOYW1lKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS51c2VyRGVmLT5n
ZXRUeXBlTmFtZSgpKTsKLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGNvbnRleHQt
PnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS5s
aW5lLCAqdHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3ROZXN0aW5nRXJy
b3JDaGVjaygoeXlsc3BbKDEpIC0gKDMpXSksICooKih5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSlb
aV0pKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDU6CisgIGNhc2UgMTQ2
OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9IE5ld1Bvb2xUVHlw
ZUxpc3QoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCktPnB1c2hfYmFjaygoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZUxpbmUpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5m
aWVsZExpc3QpID0gTmV3UG9vbFRGaWVsZExpc3QoKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5m
aWVsZExpc3QpLT5wdXNoX2JhY2soKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZpZWxkKSk7CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0NjoKKyAgY2FzZSAxNDc6CiAKICAgICB7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5wdXNoX2JhY2soKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLnR5cGVMaW5lKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+
cHVzaF9iYWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybS5maWVsZCkpOwogICAgIDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxNDc6CisgIGNhc2UgMTQ4OgogCiAgICAgewotICAgICAgICBpZiAo
Y29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwg
Kih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJl
c2VydmVkRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksICooeXl2c3BbKDEpIC0gKDEpXS5s
ZXgpLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlTGluZSkudHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRl
ZmluZWQpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS5saW5lID0gKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBl
LT5zZXRGaWVsZE5hbWUoKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKTsKKyAgICAgICAg
VFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkuc3RyaW5nKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ4OgorICBjYXNl
IDE0OToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygo
eXl2c3BbKDEpIC0gKDQpXS5sZXgpLmxpbmUsICooeXl2c3BbKDEpIC0gKDQpXS5sZXgpLnN0cmlu
ZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNwWygxKSAt
ICg0KV0pLCAqKHl5dnNwWygxKSAtICg0KV0ubGV4KS5zdHJpbmcpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUpLnR5cGUg
PSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlTGluZSkubGluZSA9ICh5eXZzcFsoMSkgLSAoNCldLmxleCkubGluZTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlTGluZSkudHlwZS0+c2V0RmllbGROYW1lKCooeXl2c3BbKDEpIC0g
KDQpXS5sZXgpLnN0cmluZyk7Ci0KLSAgICAgICAgaW50IHNpemU7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5
dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQorICAgICAgICBU
VHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAgICAgICBp
bnQgc2l6ZSA9IDA7CisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5
eWxzcFsoMykgLSAoNCldKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksIHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7Ci0gICAgO30KLSAg
ICBicmVhazsKKyAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKHNpemUpOwogCi0gIGNhc2UgMTQ5
OgotCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICAgICAgKHl5dmFsLmludGVybS5m
aWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5eXZzcFsoMSkgLSAoNCldLmxleCkuc3RyaW5nKTsK
KyAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTUwOgogCi0gICAgeyAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQor
ICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTE6CiAK
LSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0uaW50ZXJtQWdncmVnYXRlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxNTI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7IDt9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTM6CkBAIC00MTkwLDExMiArNDE1NiwxMTcgQEAgeXly
ZWR1Y2U6CiAKICAgY2FzZSAxNTg6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVn
YXRlKSA9IDA7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTU5
OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IDt9CisgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAwOyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTYw
OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgO30KKyAgICB7IGNvbnRleHQt
PnN5bWJvbFRhYmxlLnB1c2goKTsgO30KICAgICBicmVhazsKIAogICBjYXNlIDE2MToKIAorICAg
IHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7IDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAx
NjI6CisKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJt
QWdncmVnYXRlKSAhPSAwKSB7CiAgICAgICAgICAgICAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0u
aW50ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAgICAgKHl5dnNw
WygzKSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldEVuZExpbmUoKHl5dnNwWyg1
KSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZzcFsoMykgLSAoNSldLmludGVy
bS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykpOwogICAgICAgICB9CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9ICh5eXZzcFsoMykgLSAoNSldLmludGVy
bS5pbnRlcm1BZ2dyZWdhdGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjI6Cisg
IGNhc2UgMTYzOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTYz
OgorICBjYXNlIDE2NDoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNl
IDE2NDoKKyAgY2FzZSAxNjU6CiAKICAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsg
O30KICAgICBicmVhazsKIAotICBjYXNlIDE2NToKKyAgY2FzZSAxNjY6CiAKICAgICB7IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTY2OgorICBjYXNlIDE2NzoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY3OgorICBjYXNlIDE2ODoKIAogICAgIHsgY29udGV4
dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3Bb
KDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
Njg6CisgIGNhc2UgMTY5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5v
ZGUpID0gMDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY5OgorICBjYXNlIDE3MDoK
IAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRlcm1BZ2dy
ZWdhdGUpKSB7CiAgICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdn
cmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAgICAgKHl5dnNwWygyKSAtICgz
KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldEVuZExpbmUoKHl5dnNwWygzKSAtICgzKV0u
bGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRlcm1B
Z2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykpOwogICAgICAgICB9CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtQWdncmVn
YXRlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTcwOgorICBjYXNlIDE3MToKIAog
ICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVy
bU5vZGUpLCAwKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybU5vZGUpLCAoeXlsb2MpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTcx
OgorICBjYXNlIDE3MjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dy
ZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSksICh5eXZzcFsoMikgLSAoMildLmludGVybS5p
bnRlcm1Ob2RlKSwgMCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS5pbnRlcm1BZ2dyZWdhdGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9k
ZSksICh5eWxvYykpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzI6CisgIGNhc2Ug
MTczOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE3MzoKKyAgY2FzZSAxNzQ6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSBzdGF0aWNfY2FzdDxUSW50ZXJtTm9kZSo+KCh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE3NDoKKyAg
Y2FzZSAxNzU6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygo
eXl2c3BbKDEpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eWxz
cFsoMSkgLSAoNSldKSwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3Bb
KDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50
ZXJtLm5vZGVQYWlyKSwgKHl5dnNwWygxKSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rp
b24oKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoNSkg
LSAoNSldLmludGVybS5ub2RlUGFpciksICh5eWxzcFsoMSkgLSAoNSldKSk7CiAgICAgO30KICAg
ICBicmVhazsKIAotICBjYXNlIDE3NToKKyAgY2FzZSAxNzY6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybU5vZGUpOwpAQCAtNDMwMyw3ICs0Mjc0LDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDE3NjoKKyAgY2FzZSAxNzc6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVy
bU5vZGUpOwpAQCAtNDMxMSw3ICs0MjgyLDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE3NzoKKyAgY2FzZSAxNzg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOwpAQCAtNDMyMCwxNiArNDI5MSwxNiBAQCB5eXJlZHVjZToKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTc4OgorICBjYXNlIDE3OToKIAogICAgIHsKICAgICAgICAgVElu
dGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZp
ZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygxKSAtICg0
KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVy
cm9yQ2hlY2soKHl5bHNwWygyKSAtICg0KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlw
ZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4
dC0+Ym9vbEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEp
IC0gKDQpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hl
Y2soKHl5bHNwWygyKSAtICg0KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmICghY29udGV4dC0+
ZXhlY3V0ZUluaXRpYWxpemVyKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKih5eXZzcFso
MikgLSAoNCldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSksICh5
eXZzcFsoNCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWygyKSAtICg0KV0p
LCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS50eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVy
bU5vZGUpKQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5
dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwpAQCAtNDMzOCw3OSArNDMwOSw3OSBAQCB5
eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc5OgorICBjYXNlIDE4MDoK
IAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0
aW5nTGV2ZWw7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODA6CisgIGNhc2UgMTgxOgogCiAg
ICAgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29w
V2hpbGUsIDAsICh5eXZzcFsoNCkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAo
eXl2c3BbKDYpIC0gKDYpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMSkgLSAoNildLmxl
eCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAoeXl2c3BbKDQpIC0gKDYpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgMCwgKHl5dnNwWyg2KSAtICg2KV0uaW50ZXJtLmludGVybU5v
ZGUpLCAoeXlsc3BbKDEpIC0gKDYpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BOZXN0aW5n
TGV2ZWw7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4MToKKyAgY2FzZSAxODI6CiAK
ICAgICB7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KICAgICBicmVhazsKIAotICBj
YXNlIDE4MjoKKyAgY2FzZSAxODM6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29s
RXJyb3JDaGVjaygoeXl2c3BbKDgpIC0gKDgpXS5sZXgpLmxpbmUsICh5eXZzcFsoNikgLSAoOCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJv
ckNoZWNrKCh5eWxzcFsoOCkgLSAoOCldKSwgKHl5dnNwWyg2KSAtICg4KV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9v
cChFTG9vcERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAwLCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoNCkg
LSAoOCldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICh5eXZzcFsoNikg
LSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRl
cm0uaW50ZXJtTm9kZSksICh5eWxzcFsoNCkgLSAoOCldKSk7CiAgICAgICAgIC0tY29udGV4dC0+
bG9vcE5lc3RpbmdMZXZlbDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTgzOgorICBj
YXNlIDE4NDoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQt
Pmxvb3BOZXN0aW5nTGV2ZWw7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODQ6CisgIGNhc2Ug
MTg1OgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRM
b29wKEVMb29wRm9yLCAoeXl2c3BbKDQpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9kZSksIHJlaW50
ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAtICg3KV0uaW50ZXJtLm5vZGVQ
YWlyKS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAt
ICg3KV0uaW50ZXJtLm5vZGVQYWlyKS5ub2RlMiksICh5eXZzcFsoNykgLSAoNyldLmludGVybS5p
bnRlcm1Ob2RlKSwgKHl5dnNwWygxKSAtICg3KV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29w
Rm9yLCAoeXl2c3BbKDQpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9kZSksIHJlaW50ZXJwcmV0X2Nh
c3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAtICg3KV0uaW50ZXJtLm5vZGVQYWlyKS5ub2Rl
MSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAtICg3KV0uaW50
ZXJtLm5vZGVQYWlyKS5ub2RlMiksICh5eXZzcFsoNykgLSAoNyldLmludGVybS5pbnRlcm1Ob2Rl
KSwgKHl5bHNwWygxKSAtICg3KV0pKTsKICAgICAgICAgLS1jb250ZXh0LT5sb29wTmVzdGluZ0xl
dmVsOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODU6CisgIGNhc2UgMTg2OgogCiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODY6
CisgIGNhc2UgMTg3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgIDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxODc6CisgIGNhc2UgMTg4OgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg4OgorICBjYXNlIDE4
OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gMDsK
ICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg5OgorICBjYXNlIDE5MDoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTQ0MTgsNyArNDM4OSw3IEBAIHl5cmVkdWNl
OgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTA6CisgIGNhc2UgMTkxOgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtNDQyNiw2MyArNDM5Nyw2MyBAQCB5eXJl
ZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkxOgorICBjYXNlIDE5MjoKIAog
ICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWwgPD0gMCkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAiY29u
dGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgImNvbnRpbnVlIHN0YXRlbWVudCBv
bmx5IGFsbG93ZWQgaW4gbG9vcHMiLCAiIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsICh5eXZzcFsoMSkgLSAoMild
LmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcENvbnRpbnVlLCAoeXlsc3BbKDEpIC0gKDIpXSkp
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTI6CisgIGNhc2UgMTkzOgogCiAgICAg
ewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICJicmVhayBz
dGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkgYWxsb3dl
ZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCcmFuY2goRU9wQnJlYWssICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgO30KICAgICBi
cmVhazsKIAotICBjYXNlIDE5MzoKKyAgY2FzZSAxOTQ6CiAKICAgICB7Ci0gICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVP
cFJldHVybiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0
dXJuLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1
bmN0aW9uVHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAibm9uLXZvaWQgZnVuY3Rp
b24gbXVzdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0dXJu
IGEgdmFsdWUiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk0OgorICBjYXNlIDE5NToK
IAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFu
Y2goRU9wUmV0dXJuLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5bHNwWygxKSAtICgzKV0pKTsKICAgICAgICAgY29udGV4dC0+ZnVuY3Rpb25SZXR1cm5zVmFs
dWUgPSB0cnVlOwogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZS0+Z2V0
QmFzaWNUeXBlKCkgPT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
dnNwWygxKSAtICgzKV0ubGV4KS5saW5lLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEg
dmFsdWUiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEp
IC0gKDMpXSksICJ2b2lkIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4i
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfSBlbHNlIGlmICgq
KGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUpICE9ICh5eXZzcFsoMikgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eXZzcFsoMSkgLSAoMyldLmxleCkubGluZSwgImZ1bmN0aW9uIHJldHVybiBpcyBub3Qg
bWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXlsc3BbKDEpIC0gKDMpXSksICJmdW5jdGlvbiByZXR1cm4gaXMgbm90IG1hdGNoaW5nIHR5cGU6
IiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5NToKKyAgY2FzZSAxOTY6CiAKICAgICB7
Ci0gICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGlu
ZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQnJhbmNoKEVPcEtpbGwsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7Cisg
ICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICh5eWxzcFsoMSkgLSAoMildKSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJh
bmNoKEVPcEtpbGwsICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDE5NjoKKyAgY2FzZSAxOTc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CkBAIC00
NDkwLDI5ICs0NDYxLDI5IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxOTc6CisgIGNhc2UgMTk4OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJt
Tm9kZSksIDApOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVy
bU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxvYykpOwog
ICAgICAgICBjb250ZXh0LT50cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSk7CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5ODoKKyAgY2FzZSAxOTk6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRl
cm0uaW50ZXJtTm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5OToKKyAgY2Fz
ZSAyMDA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDIwMDoKKyAgY2FzZSAyMDE6CiAKICAgICB7CiAgICAgICAgIFRGdW5jdGlvbiogZnVu
Y3Rpb24gPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmZ1bmN0aW9uOwpAQCAtNDUyMSw3ICs0
NDkyLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIAogICAgICAgICBpZiAoYnVpbHRJbikKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
KS5saW5lLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBmdW5jdGlv
bi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WygxKSAtICgxKV0pLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBm
dW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDUzNSw3ICs0NTA2LDcgQEAgeXlyZWR1Y2U6
CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhlbiB0aGlzIGZ1bmN0aW9uIGFscmVh
ZHkgaGFzIGEgYm9keS4KICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICJmdW5jdGlvbiBhbHJlYWR5IGhhcyBh
IGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5
IiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBwcmV2RGVjLT5zZXREZWZpbmVkKCk7CkBAIC00
NTQ1LDExICs0NTE2LDExIEBAIHl5cmVkdWNlOgogICAgICAgICAvLwogICAgICAgICBpZiAoZnVu
Y3Rpb24tPmdldE5hbWUoKSA9PSAibWFpbiIpIHsKICAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+
Z2V0UGFyYW1Db3VudCgpID4gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBw
YXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgImZ1bmN0aW9uIGNhbm5vdCB0
YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZv
aWQpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0pLmxpbmUsICIiLCBmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5n
KCksICJtYWluIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgIiIsIGZ1bmN0aW9uLT5nZXRS
ZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVy
biBhIHZhbHVlIik7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC00NTc3LDcgKzQ1NDgsNyBAQCB5eXJlZHVjZToKICAgICAg
ICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHBhcmFtZXRlcnMgd2l0aCBuYW1lIGluIHRoZSBzeW1i
b2wgdGFibGUuCiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICBpZiAoISBjb250
ZXh0LT5zeW1ib2xUYWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkgewotICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICJyZWRlZmlu
aXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJyZWRlZmluaXRpb24iLCB2YXJp
YWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsKICAgICAgICAg
ICAgICAgICB9CkBAIC00NTg4LDMxICs0NTU5LDMyIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAg
ICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5
cGUoKSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5s
aW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHl5bHNwWygxKSAtICgxKV0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93
QWdncmVnYXRlKHBhcmFtTm9kZXMsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
IiIsICpwYXJhbS50eXBlLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpLCAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgKHl5bHNwWygxKSAtICgx
KV0pKSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2Rl
cywgRU9wUGFyYW1ldGVycywgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAg
ICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBhcmFtTm9kZXMs
IEVPcFBhcmFtZXRlcnMsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICh5eXZzcFsoMSkg
LSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAgICAgY29u
dGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA9IDA7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNl
IDIwMToKKyAgY2FzZSAyMDI6CiAKICAgICB7CiAgICAgICAgIC8vPz8gQ2hlY2sgdGhhdCBhbGwg
cGF0aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0dXJuIHR5cGUgIT0gdm9pZCA/CiAgICAgICAgIC8v
ICAgTWF5IGJlIGJlc3QgZG9uZSBhcyBwb3N0IHByb2Nlc3MgcGhhc2Ugb24gaW50ZXJtZWRpYXRl
IGNvZGUKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2lj
VHlwZSgpICE9IEVidFZvaWQgJiYgISBjb250ZXh0LT5mdW5jdGlvblJldHVybnNWYWx1ZSkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5saW5l
LCAiZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWU6IiwgIiIsICh5eXZzcFsoMSkgLSAo
MyldLmludGVybSkuZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVy
biBhIHZhbHVlOiIsICIiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uLT5nZXRO
YW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmlu
dGVybUFnZ3JlZ2F0ZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpLCAwKTsK
LSAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSksIEVPcEZ1bmN0aW9uLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0pLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUsICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bG9j
KSk7CisgICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpLCBFT3BGdW5jdGlvbiwgKHl5bHNwWygxKSAtICgzKV0p
KTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+
c2V0TmFtZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFt
ZSgpLmNfc3RyKCkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0Fn
Z3JlZ2F0ZSgpLT5zZXRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24tPmdl
dFJldHVyblR5cGUoKSk7CiAKQEAgLTQ2MjEsOSArNDU5Myw2IEBAIHl5cmVkdWNlOgogICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRPcHRpbWl6
ZShjb250ZXh0LT5wcmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnByYWdtYSgpLmRl
YnVnKTsKIAotICAgICAgICBpZiAoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUp
ICYmICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUo
KSkKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRl
KCktPnNldEVuZExpbmUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpLT5nZXRB
c0FnZ3JlZ2F0ZSgpLT5nZXRFbmRMaW5lKCkpOwotCiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRh
YmxlLnBvcCgpOwogICAgIDt9CiAgICAgYnJlYWs7CkBAIC00NjQwLDcgKzQ2MDksNyBAQCB5eXJl
ZHVjZToKICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKIAogICAqKyt5eXZzcCA9IHl5
dmFsOwotCisgICorK3l5bHNwID0geXlsb2M7CiAKICAgLyogTm93IGBzaGlmdCcgdGhlIHJlc3Vs
dCBvZiB0aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAgdGhhdCBnb2Vz
IHRvLCBiYXNlZCBvbiB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRoZSBydWxlCkBA
IC00NjY2LDcgKzQ2MzUsNyBAQCB5eWVycmxhYjoKICAgICB7CiAgICAgICArK3l5bmVycnM7CiAj
aWYgISBZWUVSUk9SX1ZFUkJPU0UKLSAgICAgIHl5ZXJyb3IgKGNvbnRleHQsIFlZXygic3ludGF4
IGVycm9yIikpOworICAgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgWVlfKCJzeW50YXgg
ZXJyb3IiKSk7CiAjZWxzZQogICAgICAgewogCVlZU0laRV9UIHl5c2l6ZSA9IHl5c3ludGF4X2Vy
cm9yICgwLCB5eXN0YXRlLCB5eWNoYXIpOwpAQCAtNDY5MCwxMSArNDY1OSwxMSBAQCB5eWVycmxh
YjoKIAlpZiAoMCA8IHl5c2l6ZSAmJiB5eXNpemUgPD0geXltc2dfYWxsb2MpCiAJICB7CiAJICAg
ICh2b2lkKSB5eXN5bnRheF9lcnJvciAoeXltc2csIHl5c3RhdGUsIHl5Y2hhcik7Ci0JICAgIHl5
ZXJyb3IgKGNvbnRleHQsIHl5bXNnKTsKKwkgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwg
eXltc2cpOwogCSAgfQogCWVsc2UKIAkgIHsKLQkgICAgeXllcnJvciAoY29udGV4dCwgWVlfKCJz
eW50YXggZXJyb3IiKSk7CisJICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIFlZXygic3lu
dGF4IGVycm9yIikpOwogCSAgICBpZiAoeXlzaXplICE9IDApCiAJICAgICAgZ290byB5eWV4aGF1
c3RlZGxhYjsKIAkgIH0KQEAgLTQ3MDIsNyArNDY3MSw3IEBAIHl5ZXJybGFiOgogI2VuZGlmCiAg
ICAgfQogCi0KKyAgeXllcnJvcl9yYW5nZVswXSA9IHl5bGxvYzsKIAogICBpZiAoeXllcnJzdGF0
dXMgPT0gMykKICAgICB7CkBAIC00NzE4LDcgKzQ2ODcsNyBAQCB5eWVycmxhYjoKICAgICAgIGVs
c2UKIAl7CiAJICB5eWRlc3RydWN0ICgiRXJyb3I6IGRpc2NhcmRpbmciLAotCQkgICAgICB5eXRv
a2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKKwkJICAgICAgeXl0b2tlbiwgJnl5bHZhbCwgJnl5bGxv
YywgY29udGV4dCk7CiAJICB5eWNoYXIgPSBZWUVNUFRZOwogCX0KICAgICB9CkBAIC00NzM5LDYg
KzQ3MDgsNyBAQCB5eWVycm9ybGFiOgogICBpZiAoLypDT05TVENPTkQqLyAwKQogICAgICBnb3Rv
IHl5ZXJyb3JsYWI7CiAKKyAgeXllcnJvcl9yYW5nZVswXSA9IHl5bHNwWzEteXlsZW5dOwogICAv
KiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJp
Z2dlcmVkCiAgICAgIHRoaXMgWVlFUlJPUi4gICovCiAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKQEAg
LTQ3NzIsOSArNDc0Miw5IEBAIHl5ZXJybGFiMToKICAgICAgIGlmICh5eXNzcCA9PSB5eXNzKQog
CVlZQUJPUlQ7CiAKLQorICAgICAgeXllcnJvcl9yYW5nZVswXSA9ICp5eWxzcDsKICAgICAgIHl5
ZGVzdHJ1Y3QgKCJFcnJvcjogcG9wcGluZyIsCi0JCSAgeXlzdG9zW3l5c3RhdGVdLCB5eXZzcCwg
Y29udGV4dCk7CisJCSAgeXlzdG9zW3l5c3RhdGVdLCB5eXZzcCwgeXlsc3AsIGNvbnRleHQpOwog
ICAgICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgICB5eXN0YXRlID0gKnl5c3NwOwogICAgICAgWVlf
U1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKQEAgLTQ3ODUsNiArNDc1NSwxMSBAQCB5eWVycmxh
YjE6CiAKICAgKisreXl2c3AgPSB5eWx2YWw7CiAKKyAgeXllcnJvcl9yYW5nZVsxXSA9IHl5bGxv
YzsKKyAgLyogVXNpbmcgWVlMTE9DIGlzIHRlbXB0aW5nLCBidXQgd291bGQgY2hhbmdlIHRoZSBs
b2NhdGlvbiBvZgorICAgICB0aGUgbG9vay1haGVhZC4gIFlZTE9DIGlzIGF2YWlsYWJsZSB0aG91
Z2guICAqLworICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWVycm9yX3JhbmdlIC0gMSksIDIp
OworICAqKyt5eWxzcCA9IHl5bG9jOwogCiAgIC8qIFNoaWZ0IHRoZSBlcnJvciB0b2tlbi4gICov
CiAgIFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0aW5nIiwgeXlzdG9zW3l5bl0sIHl5dnNwLCB5eWxz
cCk7CkBAIC00ODEyLDcgKzQ3ODcsNyBAQCB5eWFib3J0bGFiOgogfCB5eWV4aGF1c3RlZGxhYiAt
LSBtZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJlLiAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogeXlleGhhdXN0ZWRsYWI6Ci0gIHl5ZXJy
b3IgKGNvbnRleHQsIFlZXygibWVtb3J5IGV4aGF1c3RlZCIpKTsKKyAgeXllcnJvciAoJnl5bGxv
YywgY29udGV4dCwgWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOwogICB5eXJlc3VsdCA9IDI7CiAg
IC8qIEZhbGwgdGhyb3VnaC4gICovCiAjZW5kaWYKQEAgLTQ4MjAsNyArNDc5NSw3IEBAIHl5ZXho
YXVzdGVkbGFiOgogeXlyZXR1cm46CiAgIGlmICh5eWNoYXIgIT0gWVlFT0YgJiYgeXljaGFyICE9
IFlZRU1QVFkpCiAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxvb2thaGVh
ZCIsCi0JCSB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKKwkJIHl5dG9rZW4sICZ5eWx2YWws
ICZ5eWxsb2MsIGNvbnRleHQpOwogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0
aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCiAgICAgIHRoaXMgWVlBQk9SVCBvciBZWUFD
Q0VQVC4gICovCiAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKQEAgLTQ4MjgsNyArNDgwMyw3IEBAIHl5
cmV0dXJuOgogICB3aGlsZSAoeXlzc3AgIT0geXlzcykKICAgICB7CiAgICAgICB5eWRlc3RydWN0
ICgiQ2xlYW51cDogcG9wcGluZyIsCi0JCSAgeXlzdG9zWyp5eXNzcF0sIHl5dnNwLCBjb250ZXh0
KTsKKwkJICB5eXN0b3NbKnl5c3NwXSwgeXl2c3AsIHl5bHNwLCBjb250ZXh0KTsKICAgICAgIFlZ
UE9QU1RBQ0sgKDEpOwogICAgIH0KICNpZm5kZWYgeXlvdmVyZmxvdwpAQCAtNDg0Nyw2ICs0ODIy
LDExIEBAIHl5cmV0dXJuOgogCiAKIAordm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxvYywgVFBh
cnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKSB7CisgICAgY29udGV4dC0+
ZXJyb3IoKnl5bGxvYywgcmVhc29uLCAiIik7CisgICAgY29udGV4dC0+cmVjb3ZlcigpOworfQor
CiBpbnQgZ2xzbGFuZ19wYXJzZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgcmV0dXJu
IHl5cGFyc2UoY29udGV4dCk7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvZ2xzbGFuZ190YWIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDUyICs4Niw1MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0gMzAyLAogICAg
ICBJTlRDT05TVEFOVCA9IDMwMywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAotICAgICBGSUVM
RF9TRUxFQ1RJT04gPSAzMDUsCi0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJR0hUX09QID0g
MzA3LAotICAgICBJTkNfT1AgPSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAgICAgTEVfT1Ag
PSAzMTAsCi0gICAgIEdFX09QID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAgICAgTkVfT1Ag
PSAzMTMsCi0gICAgIEFORF9PUCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0gICAgIFhPUl9P
UCA9IDMxNiwKLSAgICAgTVVMX0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lHTiA9IDMxOCwK
LSAgICAgQUREX0FTU0lHTiA9IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwKLSAgICAgTEVG
VF9BU1NJR04gPSAzMjEsCi0gICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAgQU5EX0FTU0lH
TiA9IDMyMywKLSAgICAgWE9SX0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdOID0gMzI1LAot
ICAgICBTVUJfQVNTSUdOID0gMzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAotICAgICBSSUdI
VF9QQVJFTiA9IDMyOCwKLSAgICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBSSUdIVF9CUkFD
S0VUID0gMzMwLAotICAgICBMRUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9CUkFDRSA9IDMz
MiwKLSAgICAgRE9UID0gMzMzLAotICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09MT04gPSAzMzUs
Ci0gICAgIEVRVUFMID0gMzM2LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAgIEJBTkcgPSAz
MzgsCi0gICAgIERBU0ggPSAzMzksCi0gICAgIFRJTERFID0gMzQwLAotICAgICBQTFVTID0gMzQx
LAotICAgICBTVEFSID0gMzQyLAotICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVSQ0VOVCA9IDM0
NCwKLSAgICAgTEVGVF9BTkdMRSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAzNDYsCi0gICAg
IFZFUlRJQ0FMX0JBUiA9IDM0NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFNUEVSU0FORCA9
IDM0OSwKLSAgICAgUVVFU1RJT04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwKKyAgICAgUklH
SFRfT1AgPSAzMDYsCisgICAgIElOQ19PUCA9IDMwNywKKyAgICAgREVDX09QID0gMzA4LAorICAg
ICBMRV9PUCA9IDMwOSwKKyAgICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0gMzExLAorICAg
ICBORV9PUCA9IDMxMiwKKyAgICAgQU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9IDMxNCwKKyAg
ICAgWE9SX09QID0gMzE1LAorICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBESVZfQVNTSUdO
ID0gMzE3LAorICAgICBBRERfQVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdOID0gMzE5LAor
ICAgICBMRUZUX0FTU0lHTiA9IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIxLAorICAgICBB
TkRfQVNTSUdOID0gMzIyLAorICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBPUl9BU1NJR04g
PSAzMjQsCisgICAgIFNVQl9BU1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4gPSAzMjYsCisg
ICAgIFJJR0hUX1BBUkVOID0gMzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgsCisgICAgIFJJ
R0hUX0JSQUNLRVQgPSAzMjksCisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAgIFJJR0hUX0JS
QUNFID0gMzMxLAorICAgICBET1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMzLAorICAgICBDT0xP
TiA9IDMzNCwKKyAgICAgRVFVQUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMzNiwKKyAgICAg
QkFORyA9IDMzNywKKyAgICAgREFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzksCisgICAgIFBM
VVMgPSAzNDAsCisgICAgIFNUQVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAorICAgICBQRVJD
RU5UID0gMzQzLAorICAgICBMRUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9BTkdMRSA9IDM0
NSwKKyAgICAgVkVSVElDQUxfQkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywKKyAgICAgQU1Q
RVJTQU5EID0gMzQ4LAorICAgICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRpZgogLyogVG9r
ZW5zLiAgKi8KQEAgLTE4Miw1MiArMTgxLDUxIEBACiAjZGVmaW5lIEZMT0FUQ09OU1RBTlQgMzAy
CiAjZGVmaW5lIElOVENPTlNUQU5UIDMwMwogI2RlZmluZSBCT09MQ09OU1RBTlQgMzA0Ci0jZGVm
aW5lIEZJRUxEX1NFTEVDVElPTiAzMDUKLSNkZWZpbmUgTEVGVF9PUCAzMDYKLSNkZWZpbmUgUklH
SFRfT1AgMzA3Ci0jZGVmaW5lIElOQ19PUCAzMDgKLSNkZWZpbmUgREVDX09QIDMwOQotI2RlZmlu
ZSBMRV9PUCAzMTAKLSNkZWZpbmUgR0VfT1AgMzExCi0jZGVmaW5lIEVRX09QIDMxMgotI2RlZmlu
ZSBORV9PUCAzMTMKLSNkZWZpbmUgQU5EX09QIDMxNAotI2RlZmluZSBPUl9PUCAzMTUKLSNkZWZp
bmUgWE9SX09QIDMxNgotI2RlZmluZSBNVUxfQVNTSUdOIDMxNwotI2RlZmluZSBESVZfQVNTSUdO
IDMxOAotI2RlZmluZSBBRERfQVNTSUdOIDMxOQotI2RlZmluZSBNT0RfQVNTSUdOIDMyMAotI2Rl
ZmluZSBMRUZUX0FTU0lHTiAzMjEKLSNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMgotI2RlZmluZSBB
TkRfQVNTSUdOIDMyMwotI2RlZmluZSBYT1JfQVNTSUdOIDMyNAotI2RlZmluZSBPUl9BU1NJR04g
MzI1Ci0jZGVmaW5lIFNVQl9BU1NJR04gMzI2Ci0jZGVmaW5lIExFRlRfUEFSRU4gMzI3Ci0jZGVm
aW5lIFJJR0hUX1BBUkVOIDMyOAotI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI5Ci0jZGVmaW5lIFJJ
R0hUX0JSQUNLRVQgMzMwCi0jZGVmaW5lIExFRlRfQlJBQ0UgMzMxCi0jZGVmaW5lIFJJR0hUX0JS
QUNFIDMzMgotI2RlZmluZSBET1QgMzMzCi0jZGVmaW5lIENPTU1BIDMzNAotI2RlZmluZSBDT0xP
TiAzMzUKLSNkZWZpbmUgRVFVQUwgMzM2Ci0jZGVmaW5lIFNFTUlDT0xPTiAzMzcKLSNkZWZpbmUg
QkFORyAzMzgKLSNkZWZpbmUgREFTSCAzMzkKLSNkZWZpbmUgVElMREUgMzQwCi0jZGVmaW5lIFBM
VVMgMzQxCi0jZGVmaW5lIFNUQVIgMzQyCi0jZGVmaW5lIFNMQVNIIDM0MwotI2RlZmluZSBQRVJD
RU5UIDM0NAotI2RlZmluZSBMRUZUX0FOR0xFIDM0NQotI2RlZmluZSBSSUdIVF9BTkdMRSAzNDYK
LSNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NwotI2RlZmluZSBDQVJFVCAzNDgKLSNkZWZpbmUgQU1Q
RVJTQU5EIDM0OQotI2RlZmluZSBRVUVTVElPTiAzNTAKKyNkZWZpbmUgTEVGVF9PUCAzMDUKKyNk
ZWZpbmUgUklHSFRfT1AgMzA2CisjZGVmaW5lIElOQ19PUCAzMDcKKyNkZWZpbmUgREVDX09QIDMw
OAorI2RlZmluZSBMRV9PUCAzMDkKKyNkZWZpbmUgR0VfT1AgMzEwCisjZGVmaW5lIEVRX09QIDMx
MQorI2RlZmluZSBORV9PUCAzMTIKKyNkZWZpbmUgQU5EX09QIDMxMworI2RlZmluZSBPUl9PUCAz
MTQKKyNkZWZpbmUgWE9SX09QIDMxNQorI2RlZmluZSBNVUxfQVNTSUdOIDMxNgorI2RlZmluZSBE
SVZfQVNTSUdOIDMxNworI2RlZmluZSBBRERfQVNTSUdOIDMxOAorI2RlZmluZSBNT0RfQVNTSUdO
IDMxOQorI2RlZmluZSBMRUZUX0FTU0lHTiAzMjAKKyNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMQor
I2RlZmluZSBBTkRfQVNTSUdOIDMyMgorI2RlZmluZSBYT1JfQVNTSUdOIDMyMworI2RlZmluZSBP
Ul9BU1NJR04gMzI0CisjZGVmaW5lIFNVQl9BU1NJR04gMzI1CisjZGVmaW5lIExFRlRfUEFSRU4g
MzI2CisjZGVmaW5lIFJJR0hUX1BBUkVOIDMyNworI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI4Cisj
ZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzI5CisjZGVmaW5lIExFRlRfQlJBQ0UgMzMwCisjZGVmaW5l
IFJJR0hUX0JSQUNFIDMzMQorI2RlZmluZSBET1QgMzMyCisjZGVmaW5lIENPTU1BIDMzMworI2Rl
ZmluZSBDT0xPTiAzMzQKKyNkZWZpbmUgRVFVQUwgMzM1CisjZGVmaW5lIFNFTUlDT0xPTiAzMzYK
KyNkZWZpbmUgQkFORyAzMzcKKyNkZWZpbmUgREFTSCAzMzgKKyNkZWZpbmUgVElMREUgMzM5Cisj
ZGVmaW5lIFBMVVMgMzQwCisjZGVmaW5lIFNUQVIgMzQxCisjZGVmaW5lIFNMQVNIIDM0MgorI2Rl
ZmluZSBQRVJDRU5UIDM0MworI2RlZmluZSBMRUZUX0FOR0xFIDM0NAorI2RlZmluZSBSSUdIVF9B
TkdMRSAzNDUKKyNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NgorI2RlZmluZSBDQVJFVCAzNDcKKyNk
ZWZpbmUgQU1QRVJTQU5EIDM0OAorI2RlZmluZSBRVUVTVElPTiAzNDkKIAogCiAKQEAgLTIzNiw4
ICsyMzQsOSBAQAogdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAKIHsKKyNkZWZpbmUgWVlMVFlQRSBU
U291cmNlTG9jCisjZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQgMQogICAgIHN0cnVjdCB7Ci0g
ICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgVFN0
cmluZyAqc3RyaW5nOwogICAgICAgICAgICAgZmxvYXQgZjsKQEAgLTI0Nyw3ICsyNDYsNiBAQCB0
eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwogICAgIH0gbGV4
OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgVE9wZXJh
dG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJt
Tm9kZTsKQEAgLTI2MSw4ICsyNTksOCBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAgICAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyOwogICAgICAgICAgICAgVEZ1bmN0aW9uKiBmdW5jdGlv
bjsKICAgICAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW07Ci0gICAgICAgICAgICBUVHlwZUxpbmUg
dHlwZUxpbmU7Ci0gICAgICAgICAgICBUVHlwZUxpc3QqIHR5cGVMaXN0OworICAgICAgICAgICAg
VEZpZWxkKiBmaWVsZDsKKyAgICAgICAgICAgIFRGaWVsZExpc3QqIGZpZWxkTGlzdDsKICAgICAg
ICAgfTsKICAgICB9IGludGVybTsKIH0KQEAgLTI3NiwzICsyNzQsMTcgQEAgdHlwZWRlZiB1bmlv
biBZWVNUWVBFCiAKIAogCisjaWYgISBkZWZpbmVkIFlZTFRZUEUgJiYgISBkZWZpbmVkIFlZTFRZ
UEVfSVNfREVDTEFSRUQKK3R5cGVkZWYgc3RydWN0IFlZTFRZUEUKK3sKKyAgaW50IGZpcnN0X2xp
bmU7CisgIGludCBmaXJzdF9jb2x1bW47CisgIGludCBsYXN0X2xpbmU7CisgIGludCBsYXN0X2Nv
bHVtbjsKK30gWVlMVFlQRTsKKyMgZGVmaW5lIHl5bHR5cGUgWVlMVFlQRSAvKiBvYnNvbGVzY2Vu
dDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KKyMgZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQgMQor
IyBkZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKKyNlbmRpZgorCisKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwCShyZXZp
c2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50
ZXJtT3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDcgKzE4OSw5IEBAIGJvb2wgVE91dHB1
dFRyYXZlcnNlcjo6dmlzaXRVbmFyeShWaXNpdCAKICAgICAgICAgY2FzZSBFT3BBbnk6ICAgICAg
ICAgICAgb3V0IDw8ICJhbnkiOyAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEVPcEFsbDogICAgICAgICAgICBvdXQgPDwgImFsbCI7ICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgZGVmYXVsdDogb3V0Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiQmFkIHVuYXJ5
IG9wIik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBvdXQucHJlZml4KEVQcmVmaXhF
cnJvcik7CisgICAgICAgICAgICBvdXQgPDwgIkJhZCB1bmFyeSBvcCI7CiAgICAgfQogCiAgICAg
b3V0IDw8ICIgKCIgPDwgbm9kZS0+Z2V0Q29tcGxldGVTdHJpbmcoKSA8PCAiKSI7CkBAIC0yMDQs
NyArMjA2LDggQEAgYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaQogICAg
IFRJbmZvU2lua0Jhc2UmIG91dCA9IHNpbms7CiAKICAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBF
T3BOdWxsKSB7Ci0gICAgICAgIG91dC5tZXNzYWdlKEVQcmVmaXhFcnJvciwgIm5vZGUgaXMgc3Rp
bGwgRU9wTnVsbCEiKTsKKyAgICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAg
ICBvdXQgPDwgIm5vZGUgaXMgc3RpbGwgRU9wTnVsbCEiOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKQEAgLTI2Myw3ICsyNjYsOSBAQCBib29sIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0
QWdncmVnYXRlKFZpCiAKICAgICAgICAgY2FzZSBFT3BEZWNsYXJhdGlvbjogICBvdXQgPDwgIkRl
Y2xhcmF0aW9uOiAiOyAgIGJyZWFrOwogCi0gICAgICAgIGRlZmF1bHQ6IG91dC5tZXNzYWdlKEVQ
cmVmaXhFcnJvciwgIkJhZCBhZ2dyZWdhdGlvbiBvcCIpOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAgb3V0IDw8ICJC
YWQgYWdncmVnYXRpb24gb3AiOwogICAgIH0KIAogICAgIGlmIChub2RlLT5nZXRPcCgpICE9IEVP
cFNlcXVlbmNlICYmIG5vZGUtPmdldE9wKCkgIT0gRU9wUGFyYW1ldGVycykKQEAgLTMxMSw5ICsz
MTYsOSBAQCB2b2lkIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvCiB7CiAgICAg
VEluZm9TaW5rQmFzZSYgb3V0ID0gc2luazsKIAotICAgIGludCBzaXplID0gbm9kZS0+Z2V0VHlw
ZSgpLmdldE9iamVjdFNpemUoKTsKKyAgICBzaXplX3Qgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5n
ZXRPYmplY3RTaXplKCk7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgIE91dHB1dFRy
ZWVUZXh0KG91dCwgbm9kZSwgZGVwdGgpOwogICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldFVuaW9u
QXJyYXlQb2ludGVyKClbaV0uZ2V0VHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEVidEJvb2w6
CkBAIC0zMzQsNyArMzM5LDcgQEAgdm9pZCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50
VW5pbwogICAgICAgICAgICAgICAgIG91dCA8PCAiIChjb25zdCBpbnQpXG4iOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBvdXQu
bWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVua25vd24gY29uc3RhbnQiLCBub2RlLT5n
ZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dC5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVy
cm9yLCBub2RlLT5nZXRMaW5lKCksICJVbmtub3duIGNvbnN0YW50Iik7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCShyZXZpc2lvbiAxNTI5Nzkp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgogLy8KQEAgLTE4LDYgKzE4LDcgQEAKIAogI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVy
TGFuZy5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgImNvbXBpbGVyL0NvbW1v
bi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL1R5cGVzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvQ29u
c3RhbnRVbmlvbi5oIgpAQCAtMjA2LDEwICsyMDcsMTYgQEAgY2xhc3MgVEludGVybU5vZGUgewog
cHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFsbG9jYXRv
cikKIAotICAgIFRJbnRlcm1Ob2RlKCkgOiBsaW5lKDApIHt9CisgICAgVEludGVybU5vZGUoKSB7
CisgICAgICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBUU291cmNlTG9jIGNvbnN0cnVjdG9yCisg
ICAgICAgIC8vIGFmdGVyIGdldHRpbmcgcmlkIG9mIFRQdWJsaWNUeXBlLgorICAgICAgICBsaW5l
LmZpcnN0X2ZpbGUgPSBsaW5lLmxhc3RfZmlsZSA9IDA7CisgICAgICAgIGxpbmUuZmlyc3RfbGlu
ZSA9IGxpbmUubGFzdF9saW5lID0gMDsKKyAgICB9CisgICAgdmlydHVhbCB+VEludGVybU5vZGUo
KSB7IH0KIAotICAgIFRTb3VyY2VMb2MgZ2V0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmU7IH0K
LSAgICB2b2lkIHNldExpbmUoVFNvdXJjZUxvYyBsKSB7IGxpbmUgPSBsOyB9CisgICAgY29uc3Qg
VFNvdXJjZUxvYyYgZ2V0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmU7IH0KKyAgICB2b2lkIHNl
dExpbmUoY29uc3QgVFNvdXJjZUxvYyYgbCkgeyBsaW5lID0gbDsgfQogCiAgICAgdmlydHVhbCB2
b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqKSA9IDA7CiAgICAgdmlydHVhbCBUSW50ZXJt
VHlwZWQqIGdldEFzVHlwZWQoKSB7IHJldHVybiAwOyB9CkBAIC0yMjAsNyArMjI3LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgVEludGVybVNlbGVjdGlvbiogZ2V0QXNTZWxlY3Rpb25Ob2RlKCkg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgVEludGVybVN5bWJvbCogZ2V0QXNTeW1ib2xOb2Rl
KCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgVEludGVybUxvb3AqIGdldEFzTG9vcE5vZGUo
KSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB+VEludGVybU5vZGUoKSB7IH0KIAogcHJvdGVj
dGVkOgogICAgIFRTb3VyY2VMb2MgbGluZTsKQEAgLTI1OSw2ICsyNjUsMTAgQEAgcHVibGljOgog
ICAgIGNvbnN0IGNoYXIqIGdldFF1YWxpZmllclN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHR5cGUu
Z2V0UXVhbGlmaWVyU3RyaW5nKCk7IH0KICAgICBUU3RyaW5nIGdldENvbXBsZXRlU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gdHlwZS5nZXRDb21wbGV0ZVN0cmluZygpOyB9CiAKKyAgICBpbnQgdG90
YWxSZWdpc3RlckNvdW50KCkgY29uc3QgeyByZXR1cm4gdHlwZS50b3RhbFJlZ2lzdGVyQ291bnQo
KTsgfQorICAgIGludCBlbGVtZW50UmVnaXN0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUu
ZWxlbWVudFJlZ2lzdGVyQ291bnQoKTsgfQorICAgIGludCBnZXRBcnJheVNpemUoKSBjb25zdCB7
IHJldHVybiB0eXBlLmdldEFycmF5U2l6ZSgpOyB9CisKIHByb3RlY3RlZDoKICAgICBUVHlwZSB0
eXBlOwogfTsKQEAgLTM1OCw3ICszNjgsMTAgQEAgcHVibGljOgogICAgIFRJbnRlcm1Db25zdGFu
dFVuaW9uKENvbnN0YW50VW5pb24gKnVuaW9uUG9pbnRlciwgY29uc3QgVFR5cGUmIHQpIDogVElu
dGVybVR5cGVkKHQpLCB1bmlvbkFycmF5UG9pbnRlcih1bmlvblBvaW50ZXIpIHsgfQogCiAgICAg
Q29uc3RhbnRVbmlvbiogZ2V0VW5pb25BcnJheVBvaW50ZXIoKSBjb25zdCB7IHJldHVybiB1bmlv
bkFycmF5UG9pbnRlcjsgfQotICAgIHZvaWQgc2V0VW5pb25BcnJheVBvaW50ZXIoQ29uc3RhbnRV
bmlvbiAqYykgeyB1bmlvbkFycmF5UG9pbnRlciA9IGM7IH0KKyAgICAKKyAgICBpbnQgZ2V0SUNv
bnN0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXIgPyB1bmlvbkFy
cmF5UG9pbnRlcltpbmRleF0uZ2V0SUNvbnN0KCkgOiAwOyB9CisgICAgZmxvYXQgZ2V0RkNvbnN0
KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXIgPyB1bmlvbkFycmF5
UG9pbnRlcltpbmRleF0uZ2V0RkNvbnN0KCkgOiAwLjBmOyB9CisgICAgYm9vbCBnZXRCQ29uc3Qo
aW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRlciA/IHVuaW9uQXJyYXlQ
b2ludGVyW2luZGV4XS5nZXRCQ29uc3QoKSA6IGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIFRJbnRl
cm1Db25zdGFudFVuaW9uKiBnZXRBc0NvbnN0YW50VW5pb24oKSAgeyByZXR1cm4gdGhpczsgfQog
ICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKik7CkBAIC00NDcsNyAr
NDYwLDcgQEAgdHlwZWRlZiBUVmVjdG9yPGludD4gVFF1YWxpZmllckxpc3Q7CiAvLwogY2xhc3Mg
VEludGVybUFnZ3JlZ2F0ZSA6IHB1YmxpYyBUSW50ZXJtT3BlcmF0b3IgewogcHVibGljOgotICAg
IFRJbnRlcm1BZ2dyZWdhdGUoKSA6IFRJbnRlcm1PcGVyYXRvcihFT3BOdWxsKSwgdXNlckRlZmlu
ZWQoZmFsc2UpLCBlbmRMaW5lKDApLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKGZhbHNlKSB7IH0KKyAg
ICBUSW50ZXJtQWdncmVnYXRlKCkgOiBUSW50ZXJtT3BlcmF0b3IoRU9wTnVsbCksIHVzZXJEZWZp
bmVkKGZhbHNlKSwgdXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSkgeyB9CiAgICAgVEludGVybUFn
Z3JlZ2F0ZShUT3BlcmF0b3IgbykgOiBUSW50ZXJtT3BlcmF0b3IobyksIHVzZUVtdWxhdGVkRnVu
Y3Rpb24oZmFsc2UpIHsgfQogICAgIH5USW50ZXJtQWdncmVnYXRlKCkgeyB9CiAKQEAgLTQ2Nyw5
ICs0ODAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWJ1Zyhib29sIGQpIHsgZGVidWcgPSBk
OyB9CiAgICAgYm9vbCBnZXREZWJ1ZygpIHsgcmV0dXJuIGRlYnVnOyB9CiAKLSAgICB2b2lkIHNl
dEVuZExpbmUoVFNvdXJjZUxvYyBsaW5lKSB7IGVuZExpbmUgPSBsaW5lOyB9Ci0gICAgVFNvdXJj
ZUxvYyBnZXRFbmRMaW5lKCkgY29uc3QgeyByZXR1cm4gZW5kTGluZTsgfQotCiAgICAgdm9pZCBz
ZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkgeyB1c2VFbXVsYXRlZEZ1bmN0aW9uID0gdHJ1ZTsgfQog
ICAgIGJvb2wgZ2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpIHsgcmV0dXJuIHVzZUVtdWxhdGVkRnVu
Y3Rpb247IH0KIApAQCAtNDgyLDcgKzQ5Miw2IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgb3B0
aW1pemU7CiAgICAgYm9vbCBkZWJ1ZzsKLSAgICBUU291cmNlTG9jIGVuZExpbmU7CiAKICAgICAv
LyBJZiBzZXQgdG8gdHJ1ZSwgcmVwbGFjZSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gY2FsbCB3aXRo
IGFuIGVtdWxhdGVkIG9uZQogICAgIC8vIHRvIHdvcmsgYXJvdW5kIGRyaXZlciBidWdzLgpAQCAt
NTM4LDcgKzU0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGluVmlzaXQoaW5WaXNpdCksCiAg
ICAgICAgICAgICBwb3N0VmlzaXQocG9zdFZpc2l0KSwKICAgICAgICAgICAgIHJpZ2h0VG9MZWZ0
KHJpZ2h0VG9MZWZ0KSwKLSAgICAgICAgICAgIGRlcHRoKDApIHt9CisgICAgICAgICAgICBkZXB0
aCgwKSwKKyAgICAgICAgICAgIG1heERlcHRoKDApIHt9CiAgICAgdmlydHVhbCB+VEludGVybVRy
YXZlcnNlcigpIHt9OwogCiAgICAgdmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1i
b2wqKSB7fQpAQCAtNTUwLDcgKzU2MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgdmlz
aXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCopIHtyZXR1cm4gdHJ1ZTt9CiAgICAgdmly
dHVhbCBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKikge3JldHVy
biB0cnVlO30KIAotICAgIHZvaWQgaW5jcmVtZW50RGVwdGgoKSB7ZGVwdGgrKzt9CisgICAgaW50
IGdldE1heERlcHRoKCkgY29uc3Qge3JldHVybiBtYXhEZXB0aDt9CisgICAgdm9pZCBpbmNyZW1l
bnREZXB0aCgpIHtkZXB0aCsrOyBtYXhEZXB0aCA9IHN0ZDo6bWF4KG1heERlcHRoLCBkZXB0aCk7
IH0KICAgICB2b2lkIGRlY3JlbWVudERlcHRoKCkge2RlcHRoLS07fQogCiAgICAgLy8gUmV0dXJu
IHRoZSBvcmlnaW5hbCBuYW1lIGlmIGhhc2ggZnVuY3Rpb24gcG9pbnRlciBpcyBOVUxMOwpAQCAt
NTY0LDYgKzU3NSw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIGludCBkZXB0aDsKKyAg
ICBpbnQgbWF4RGVwdGg7CiB9OwogCiAjZW5kaWYgLy8gX19JTlRFUk1FRElBVEVfSApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2xvY2Fs
aW50ZXJtZWRpYXRlLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSwzNCArMjUsMzMgQEAgcHVibGljOiAgICAKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRF
KEdsb2JhbFBvb2xBbGxvY2F0b3IpCiAKICAgICBUSW50ZXJtZWRpYXRlKFRJbmZvU2luayYgaSkg
OiBpbmZvU2luayhpKSB7IH0KLSAgICBUSW50ZXJtU3ltYm9sKiBhZGRTeW1ib2woaW50IElkLCBj
b25zdCBUU3RyaW5nJiwgY29uc3QgVFR5cGUmLCBUU291cmNlTG9jKTsKKyAgICBUSW50ZXJtU3lt
Ym9sKiBhZGRTeW1ib2woaW50IElkLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFR5cGUmLCBjb25z
dCBUU291cmNlTG9jJik7CiAgICAgVEludGVybVR5cGVkKiBhZGRDb252ZXJzaW9uKFRPcGVyYXRv
ciwgY29uc3QgVFR5cGUmLCBUSW50ZXJtVHlwZWQqKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZEJp
bmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCog
cmlnaHQsIFRTb3VyY2VMb2MsIFRTeW1ib2xUYWJsZSYpOwotICAgIFRJbnRlcm1UeXBlZCogYWRk
QXNzaWduKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJp
Z2h0LCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZEluZGV4KFRPcGVyYXRvciBv
cCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBUU291cmNlTG9jKTsK
LSAgICBUSW50ZXJtVHlwZWQqIGFkZFVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1Ob2Rl
KiBjaGlsZCwgVFNvdXJjZUxvYywgVFN5bWJvbFRhYmxlJik7Ci0gICAgVEludGVybUFnZ3JlZ2F0
ZSogZ3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVmdCwgVEludGVybU5vZGUqIHJpZ2h0LCBU
U291cmNlTG9jKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlKiBtYWtlQWdncmVnYXRlKFRJbnRlcm1O
b2RlKiBub2RlLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlKiBzZXRBZ2dyZWdh
dGVPcGVyYXRvcihUSW50ZXJtTm9kZSosIFRPcGVyYXRvciwgVFNvdXJjZUxvYyk7Ci0gICAgVElu
dGVybU5vZGUqICBhZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBh
aXIgY29kZSwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRTZWxlY3Rpb24oVElu
dGVybVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIHRydWVCbG9jaywgVEludGVybVR5cGVkKiBm
YWxzZUJsb2NrLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbW1hKFRJbnRl
cm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYyk7Ci0gICAgVElu
dGVybUNvbnN0YW50VW5pb24qIGFkZENvbnN0YW50VW5pb24oQ29uc3RhbnRVbmlvbiosIGNvbnN0
IFRUeXBlJiwgVFNvdXJjZUxvYyk7CisgICAgVEludGVybVR5cGVkKiBhZGRCaW5hcnlNYXRoKFRP
cGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25z
dCBUU291cmNlTG9jJiwgVFN5bWJvbFRhYmxlJik7CisgICAgVEludGVybVR5cGVkKiBhZGRBc3Np
Z24oVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQs
IGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZEluZGV4KFRPcGVyYXRv
ciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBjb25zdCBUU291
cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBU
SW50ZXJtTm9kZSogY2hpbGQsIGNvbnN0IFRTb3VyY2VMb2MmLCBUU3ltYm9sVGFibGUmKTsKKyAg
ICBUSW50ZXJtQWdncmVnYXRlKiBncm93QWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBsZWZ0LCBUSW50
ZXJtTm9kZSogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtQWdncmVnYXRl
KiBtYWtlQWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBub2RlLCBjb25zdCBUU291cmNlTG9jJik7Cisg
ICAgVEludGVybUFnZ3JlZ2F0ZSogc2V0QWdncmVnYXRlT3BlcmF0b3IoVEludGVybU5vZGUqLCBU
T3BlcmF0b3IsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtTm9kZSogIGFkZFNlbGVj
dGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1Ob2RlUGFpciBjb2RlLCBjb25zdCBUU291
cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBj
b25kLCBUSW50ZXJtVHlwZWQqIHRydWVCbG9jaywgVEludGVybVR5cGVkKiBmYWxzZUJsb2NrLCBj
b25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRDb21tYShUSW50ZXJtVHlw
ZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBU
SW50ZXJtQ29uc3RhbnRVbmlvbiogYWRkQ29uc3RhbnRVbmlvbihDb25zdGFudFVuaW9uKiwgY29u
c3QgVFR5cGUmLCBjb25zdCBUU291cmNlTG9jJik7CiAgICAgVEludGVybVR5cGVkKiBwcm9tb3Rl
Q29uc3RhbnRVbmlvbihUQmFzaWNUeXBlLCBUSW50ZXJtQ29uc3RhbnRVbmlvbiopIDsKLSAgICBi
b29sIHBhcnNlQ29uc3RUcmVlKFRTb3VyY2VMb2MsIFRJbnRlcm1Ob2RlKiwgQ29uc3RhbnRVbmlv
biosIFRPcGVyYXRvciwgVFN5bWJvbFRhYmxlJiwgVFR5cGUsIGJvb2wgc2luZ2xlQ29uc3RhbnRQ
YXJhbSA9IGZhbHNlKTsgICAgICAgIAotICAgIFRJbnRlcm1Ob2RlKiBhZGRMb29wKFRMb29wVHlw
ZSwgVEludGVybU5vZGUqLCBUSW50ZXJtVHlwZWQqLCBUSW50ZXJtVHlwZWQqLCBUSW50ZXJtTm9k
ZSosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3BlcmF0b3Is
IFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3BlcmF0b3IsIFRJ
bnRlcm1UeXBlZCosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkU3dpenpsZShU
VmVjdG9yRmllbGRzJiwgVFNvdXJjZUxvYyk7CisgICAgYm9vbCBwYXJzZUNvbnN0VHJlZShjb25z
dCBUU291cmNlTG9jJiwgVEludGVybU5vZGUqLCBDb25zdGFudFVuaW9uKiwgVE9wZXJhdG9yLCBU
U3ltYm9sVGFibGUmLCBUVHlwZSwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFtID0gZmFsc2UpOyAg
ICAgICAgCisgICAgVEludGVybU5vZGUqIGFkZExvb3AoVExvb3BUeXBlLCBUSW50ZXJtTm9kZSos
IFRJbnRlcm1UeXBlZCosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1Ob2RlKiwgY29uc3QgVFNvdXJj
ZUxvYyYpOworICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3BlcmF0b3IsIGNvbnN0IFRT
b3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtQnJhbmNoKiBhZGRCcmFuY2goVE9wZXJhdG9yLCBUSW50
ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRTd2l6
emxlKFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291cmNlTG9jJik7CiAgICAgYm9vbCBwb3N0UHJv
Y2VzcyhUSW50ZXJtTm9kZSopOwotCXZvaWQgcmVtb3ZlKFRJbnRlcm1Ob2RlKik7CisgICAgdm9p
ZCByZW1vdmUoVEludGVybU5vZGUqKTsKICAgICB2b2lkIG91dHB1dFRyZWUoVEludGVybU5vZGUq
KTsKLSAgICAKLXByb3RlY3RlZDoKLSAgICBUSW5mb1NpbmsmIGluZm9TaW5rOwogCiBwcml2YXRl
OgogICAgIHZvaWQgb3BlcmF0b3I9KFRJbnRlcm1lZGlhdGUmKTsgLy8gcHJldmVudCBhc3NpZ25t
ZW50cworCisgICAgVEluZm9TaW5rJiBpbmZvU2luazsKIH07CiAKICNlbmRpZiAvLyBfTE9DQUxf
SU5URVJNRURJQVRFX0lOQ0xVREVEXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wYXJzZUNvbnN0LmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCwxNiArMzgsMTYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgdmlzaXRM
b29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCopOwogICAgIGJvb2wgdmlzaXRCcmFuY2goVmlz
aXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqKTsKIAotICAgIGludCBpbmRleDsKKyAgICBzaXplX3Qg
aW5kZXg7CiAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheTsKICAgICBUVHlwZSB0eXBlOwog
ICAgIFRPcGVyYXRvciBjb25zdHJ1Y3RvclR5cGU7CiAgICAgYm9vbCBzaW5nbGVDb25zdGFudFBh
cmFtOwogICAgIFRJbmZvU2luayYgaW5mb1Npbms7CiAgICAgVFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZTsKLSAgICBpbnQgc2l6ZTsgLy8gc2l6ZSBvZiB0aGUgY29uc3RydWN0b3IgKCA0IGZvciB2
ZWM0KQorICAgIHNpemVfdCBzaXplOyAvLyBzaXplIG9mIHRoZSBjb25zdHJ1Y3RvciAoIDQgZm9y
IHZlYzQpCiAgICAgYm9vbCBpc01hdHJpeDsKLSAgICBpbnQgbWF0cml4U2l6ZTsgLy8gZGltZW5z
aW9uIG9mIHRoZSBtYXRyaXggKG5vbWluYWwgc2l6ZSBhbmQgbm90IHRoZSBpbnN0YW5jZSBzaXpl
KQorICAgIHNpemVfdCBtYXRyaXhTaXplOyAvLyBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeCAobm9t
aW5hbCBzaXplIGFuZCBub3QgdGhlIGluc3RhbmNlIHNpemUpCiB9OwogCiAvLwpAQCAtNjEsNyAr
NjEsNyBAQCBwcm90ZWN0ZWQ6CiAKIHZvaWQgVENvbnN0VHJhdmVyc2VyOjp2aXNpdFN5bWJvbChU
SW50ZXJtU3ltYm9sKiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgIlN5bWJvbCBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9y
Iiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeElu
dGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIlN5bWJvbCBOb2RlIGZvdW5kIGluIGNvbnN0
YW50IGNvbnN0cnVjdG9yIik7CiAgICAgcmV0dXJuOwogCiB9CkBAIC03NCwxMiArNzQsMTIgQEAg
Ym9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KFZpc2l0IAogICAgICAgICBUU3RyaW5n
IGJ1ZjsKICAgICAgICAgYnVmLmFwcGVuZCgiJ2NvbnN0cnVjdG9yJyA6IGFzc2lnbmluZyBub24t
Y29uc3RhbnQgdG8gIik7CiAgICAgICAgIGJ1Zi5hcHBlbmQodHlwZS5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwgYnVmLmNf
c3RyKCksIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShF
UHJlZml4RXJyb3IsIG5vZGUtPmdldExpbmUoKSwgYnVmLmNfc3RyKCkpOwogICAgICAgICBlcnJv
ciA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsgIAogICAgIH0KIAotICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmluYXJ5IE5vZGUgZm91bmQgaW4g
Y29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5lKCkpOworICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJCaW5hcnkg
Tm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOwogICAgIAogICAgIHJldHVybiBm
YWxzZTsKIH0KQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0VW5h
cnkoVmlzaXQgdgogICAgIFRTdHJpbmcgYnVmOwogICAgIGJ1Zi5hcHBlbmQoIidjb25zdHJ1Y3Rv
cicgOiBhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvICIpOwogICAgIGJ1Zi5hcHBlbmQodHlwZS5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKLSAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEVy
cm9yLCBidWYuY19zdHIoKSwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEVycm9yLCBub2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigpKTsKICAgICBl
cnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOyAgCiB9CkBAIC0xMDAsNyArMTAwLDcgQEAg
Ym9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpcwogICAgICAgICBUU3RyaW5n
IGJ1ZjsKICAgICAgICAgYnVmLmFwcGVuZCgiJ2NvbnN0cnVjdG9yJyA6IGFzc2lnbmluZyBub24t
Y29uc3RhbnQgdG8gIik7CiAgICAgICAgIGJ1Zi5hcHBlbmQodHlwZS5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwgYnVmLmNf
c3RyKCksIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShF
UHJlZml4RXJyb3IsIG5vZGUtPmdldExpbmUoKSwgYnVmLmNfc3RyKCkpOwogICAgICAgICBlcnJv
ciA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsgIAogICAgIH0KQEAgLTE0NCwyNCArMTQ0
LDMxIEBAIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKIAogYm9vbCBU
Q29uc3RUcmF2ZXJzZXI6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtU2VsZWN0
aW9uKiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxF
cnJvciwgIlNlbGVjdGlvbiBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIiwgbm9k
ZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFs
RXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIlNlbGVjdGlvbiBOb2RlIGZvdW5kIGluIGNvbnN0YW50
IGNvbnN0cnVjdG9yIik7CiAgICAgZXJyb3IgPSB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAogdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3Rh
bnRVbmlvbiogbm9kZSkKIHsKKyAgICBpZiAoIW5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCkp
CisgICAgeworICAgICAgICAvLyBUaGUgY29uc3RhbnQgd2FzIG5vdCBpbml0aWFsaXplZCwgdGhp
cyBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gbG9nZ2VkCisgICAgICAgIGFzc2VydChpbmZvU2lu
ay5pbmZvLnNpemUoKSAhPSAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIENvbnN0
YW50VW5pb24qIGxlZnRVbmlvbkFycmF5ID0gdW5pb25BcnJheTsKLSAgICBpbnQgaW5zdGFuY2VT
aXplID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90IGluc3RhbmNlU2l6ZSA9IHR5
cGUuZ2V0T2JqZWN0U2l6ZSgpOwogCiAgICAgaWYgKGluZGV4ID49IGluc3RhbmNlU2l6ZSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFzaW5nbGVDb25zdGFudFBhcmFtKSB7Ci0gICAgICAg
IGludCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgc2l6
ZV90IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogICAgIAogICAgICAg
ICBDb25zdGFudFVuaW9uICpyaWdodFVuaW9uQXJyYXkgPSBub2RlLT5nZXRVbmlvbkFycmF5UG9p
bnRlcigpOwotICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgICAgIGlmIChpbmRl
eCA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
bGVmdFVuaW9uQXJyYXlbaW5kZXhdID0gcmlnaHRVbmlvbkFycmF5W2ldOwpAQCAtMTY5LDExICsx
NzYsMTEgQEAgdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbgogICAgICAg
ICAgICAgKGluZGV4KSsrOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaW50IHRv
dGFsU2l6ZSA9IGluZGV4ICsgc2l6ZTsKKyAgICAgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IGluZGV4
ICsgc2l6ZTsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqcmlnaHRVbmlvbkFycmF5ID0gbm9kZS0+
Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKICAgICAgICAgaWYgKCFpc01hdHJpeCkgewotICAgICAg
ICAgICAgaW50IGNvdW50ID0gMDsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSBpbmRleDsgaSA8
IHRvdGFsU2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBzaXplX3QgY291bnQgPSAwOworICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IGluZGV4OyBpIDwgdG90YWxTaXplOyBpKyspIHsKICAgICAg
ICAgICAgICAgICBpZiAoaSA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKIApAQCAtMTg1LDkgKzE5Miw5IEBAIHZvaWQgVENvbnN0VHJhdmVyc2VyOjp2aXNpdENv
bnN0YW50VW5pb24KICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsgIC8vIGZvciBtYXRyaXggY29uc3RydWN0b3JzCi0gICAgICAgICAg
ICBpbnQgY291bnQgPSAwOwotICAgICAgICAgICAgaW50IGVsZW1lbnQgPSBpbmRleDsKLSAgICAg
ICAgICAgIGZvciAoaW50IGkgPSBpbmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsrKSB7CisgICAgICAg
ICAgICBzaXplX3QgY291bnQgPSAwOworICAgICAgICAgICAgc2l6ZV90IGVsZW1lbnQgPSBpbmRl
eDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBpbmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsr
KSB7CiAgICAgICAgICAgICAgICAgaWYgKGkgPj0gaW5zdGFuY2VTaXplKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgLSBpID09IDAgfHwg
KGkgLSBlbGVtZW50KSAlIChtYXRyaXhTaXplICsgMSkgPT0gMCApCkBAIC0yMDYsMTQgKzIxMywx
NCBAQCB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uCiAKIGJvb2wgVENv
bnN0VHJhdmVyc2VyOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wKiBub2RlKQog
ewotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkxvb3Ag
Tm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExpbmUoKSk7Cisg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRM
aW5lKCksICJMb29wIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiKTsKICAgICBl
cnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFRDb25zdFRyYXZlcnNl
cjo6dmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqIG5vZGUpCiB7Ci0gICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQnJhbmNoIE5vZGUg
Zm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5lKCkpOworICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgp
LCAiQnJhbmNoIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiKTsKICAgICBlcnJv
ciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjIzLDcgKzIzMCw3IEBAIGJvb2wg
VENvbnN0VHJhdmVyc2VyOjp2aXNpdEJyYW5jaChWaXNpdCAKIC8vIEluZGl2aWR1YWwgZnVuY3Rp
b25zIGNhbiBiZSBpbml0aWFsaXplZCB0byAwIHRvIHNraXAgcHJvY2Vzc2luZyBvZiB0aGF0CiAv
LyB0eXBlIG9mIG5vZGUuICBJdCdzIGNoaWxkcmVuIHdpbGwgc3RpbGwgYmUgcHJvY2Vzc2VkLgog
Ly8KLWJvb2wgVEludGVybWVkaWF0ZTo6cGFyc2VDb25zdFRyZWUoVFNvdXJjZUxvYyBsaW5lLCBU
SW50ZXJtTm9kZSogcm9vdCwgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSwgVE9wZXJhdG9yIGNv
bnN0cnVjdG9yVHlwZSwgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSwgVFR5cGUgdCwgYm9vbCBz
aW5nbGVDb25zdGFudFBhcmFtKQorYm9vbCBUSW50ZXJtZWRpYXRlOjpwYXJzZUNvbnN0VHJlZShj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogcm9vdCwgQ29uc3RhbnRVbmlvbiog
dW5pb25BcnJheSwgVE9wZXJhdG9yIGNvbnN0cnVjdG9yVHlwZSwgVFN5bWJvbFRhYmxlJiBzeW1i
b2xUYWJsZSwgVFR5cGUgdCwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFtKQogewogICAgIGlmIChy
b290ID09IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yX2NvbW1vbi52Y3hwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yX2NvbW1v
bi52Y3hwcm9qCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3JfY29tbW9uLnZjeHByb2oJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjczIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9q
ZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRw
Oi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0
ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlvbj5E
ZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0K
KyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24g
SW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmln
dXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0
Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVh
c2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+
DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29uZmln
dXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0
Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAgICAg
IDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0K
KyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+DQorICAg
IDxQcm9qZWN0R3VpZD57NUIzQTZEQjgtMUU3RS00MEQ3LTkyQjktREE4QUFFNjE5RkFEfTwvUHJv
amVjdEd1aWQ+DQorICAgIDxSb290TmFtZXNwYWNlPmNvbXBpbGVyPC9Sb290TmFtZXNwYWNlPg0K
KyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQor
ICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0
LnByb3BzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0K
KyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
DQorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVBy
b2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Q
cm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4N
CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBl
Pg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Qcm9wZXJ0
eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAg
PENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAg
ICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQcm9ncmFt
T3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwvUHJvcGVy
dHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KKyAgICA8
Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQorICAg
IDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+
DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9w
cyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0KKyAgPC9J
bXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0K
KyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJv
cGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0i
TG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4
NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3Vw
Pg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAg
PC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPg0K
KyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTku
MTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENv
bmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKENvbmZpZ3VyYXRpb24pXGNv
bW1vblw8L0ludERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChD
b25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmln
dXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZp
Z3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlvbilcY29t
bW9uXDwvSW50RGlyPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pXCQo
Q29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29u
ZmlndXJhdGlvbilcPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SXRlbURlZmlu
aXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNh
YmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PiQoUHJvamVjdERpcik7JChQcm9qZWN0RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4vaW5jbHVk
ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0xJ
QjtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50
cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZh
c3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVs
dGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxl
dmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1Ry
ZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFu
ZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lm
aWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDcxODsl
KERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0
aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFy
Z2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8
T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKTskKFByb2plY3REaXIpLi4vOyQoUHJvamVj
dERpcikuLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25z
PldJTjMyO19ERUJVRztfTElCO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDslKFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAg
PE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNpY1J1bnRp
bWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAgICAgIDxS
dW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAg
IDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2Fybmlu
Z0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZvcm1h
dGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAg
ICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1
OzQyNjc7NDUxMjs0NzAyOzQ3MTg7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVT
cGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRpb25H
cm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAg
ICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5l
RnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0K
KyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9q
ZWN0RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9OT19ERVBS
RUNBVEU7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhy
ZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAg
ICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJu
aW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5n
QXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8
L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdz
PjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0NzE4OyUoRGlzYWJsZVNw
ZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgPC9DbENvbXBp
bGU+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmly
b25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXph
dGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFu
c2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAgPEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKTskKFByb2plY3REaXIpLi4vOyQo
UHJvamVjdERpcikuLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmlu
aXRpb25zPldJTjMyO05ERUJVRztfTElCO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1B
WDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGlt
ZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGls
ZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisg
ICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAg
ICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1h
dGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQx
ODk7NDIzOTs0MjQ0OzQyNDU7NDI2Nzs0NTEyOzQ3MDI7NDcxODslKERpc2FibGVTcGVjaWZpY1dh
cm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iQ29tcGlsZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlYnVn
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEZXRlY3RDYWxsRGVwdGguY3BwIiAv
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpYWdub3N0aWNzLmNwcCIgLz4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJEaXJlY3RpdmVIYW5kbGVyLmNwcCIgLz4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJGb3JMb29wVW5yb2xsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJJbmZvU2luay5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZS5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZURsbC5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW50ZXJtZWRpYXRlLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJpbnRlcm1PdXQuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IkludGVybVRyYXZlcnNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJNYXBMb25n
VmFyaWFibGVOYW1lcy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ib3Nzb3VyY2Vf
d2luLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJwYXJzZUNvbnN0LmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQYXJzZUhlbHBlci5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iUG9vbEFsbG9jLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJRdWFsaWZpZXJBbGl2ZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUmVtb3Zl
VHJlZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2hhZGVyTGFuZy5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU3ltYm9sVGFibGUuY3BwIiAvPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9InV0aWwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlZh
bGlkYXRlTGltaXRhdGlvbnMuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlZhcmlh
YmxlSW5mby5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVmFyaWFibGVQYWNrZXIu
Y3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Imdsc2xhbmdfbGV4LmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJnbHNsYW5nX3RhYi5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaFRy
YXZlcnNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJ0aW1pbmdcUmVzdHJpY3RG
cmFnbWVudFNoYWRlclRpbWluZy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0idGlt
aW5nXFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxjb21waWxlclxBcnJheUJvdW5kc0NsYW1wZXIuY3BwIiAv
Pg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q3VzdG9tQnVpbGQgSW5j
bHVkZT0iZ2xzbGFuZy5sIj4NCisgICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgICAgPC9NZXNzYWdlPg0K
KyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj4NCisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPEFkZGl0aW9uYWxJ
bnB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPiUoQWRkaXRpb25hbElucHV0cyk8L0FkZGl0aW9uYWxJbnB1dHM+DQorICAgICAgPE91
dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPiUoT3V0cHV0cyk8L091dHB1dHM+DQorICAgICAgPE1lc3NhZ2UgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgICA8L01l
c3NhZ2U+DQorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPEFkZGl0
aW9uYWxJbnB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3x4NjQnIj4lKEFkZGl0aW9uYWxJbnB1dHMpPC9BZGRpdGlvbmFsSW5wdXRzPg0KKyAgICAg
IDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8eDY0JyI+JShPdXRwdXRzKTwvT3V0cHV0cz4NCisgICAgICA8TWVzc2FnZSBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCisgICAg
ICA8L01lc3NhZ2U+DQorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgICAgPC9Db21tYW5kPg0KKyAg
ICAgIDxBZGRpdGlvbmFsSW5wdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiUoQWRkaXRpb25hbElucHV0cyk8L0FkZGl0aW9uYWxJ
bnB1dHM+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JShPdXRwdXRzKTwvT3V0cHV0cz4NCisgICAgICA8
TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCisgICAgICA8
L0NvbW1hbmQ+DQorICAgICAgPEFkZGl0aW9uYWxJbnB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiUoQWRkaXRpb25hbElucHV0cyk8
L0FkZGl0aW9uYWxJbnB1dHM+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiUoT3V0cHV0cyk8L091dHB1dHM+
DQorICAgIDwvQ3VzdG9tQnVpbGQ+DQorICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSJnbHNsYW5n
LnkiPg0KKyAgICAgIDxNZXNzYWdlIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgICA8L01lc3NhZ2U+DQorICAgICAgPENvbW1h
bmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPg0KKyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JShPdXRwdXRzKTwvT3V0
cHV0cz4NCisgICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICAgIDwvTWVzc2FnZT4NCisgICAgICA8Q29tbWFu
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
Pg0KKyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiUoT3V0cHV0cyk8L091dHB1dHM+
DQorICAgICAgPE1lc3NhZ2UgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAgIDxDb21tYW5k
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPg0KKyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4lKE91dHB1dHMpPC9P
dXRwdXRzPg0KKyAgICAgIDxNZXNzYWdlIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCisgICAgICA8L01lc3NhZ2U+DQorICAgICAgPENv
bW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPg0KKyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JShPdXRwdXRzKTwv
T3V0cHV0cz4NCisgICAgPC9DdXN0b21CdWlsZD4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1H
cm91cD4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCYXNlVHlwZXMuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IkNvbW1vbi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkNv
bnN0YW50VW5pb24uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJkZWJ1Zy5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRldGVjdENhbGxEZXB0aC5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IkRpYWdub3N0aWNzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iRGlyZWN0aXZlSGFuZGxlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkZvckxv
b3BVbnJvbGwuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJIYXNoTmFtZXMuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbmZvU2luay5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IkluaXRpYWxpemUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbml0
aWFsaXplRGxsLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZUdsb2Jh
bHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbml0aWFsaXplUGFyc2VDb250ZXh0
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iaW50ZXJtZWRpYXRlLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0ibG9jYWxpbnRlcm1lZGlhdGUuaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJNYXBMb25nVmFyaWFibGVOYW1lcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ik1NYXAuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJvc2luY2x1ZGUu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJQYXJzZUhlbHBlci5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IlBvb2xBbGxvYy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IlF1YWxpZmllckFsaXZlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVtb3Zl
VHJlZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlbmFtZUZ1bmN0aW9uLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxHTFNMQU5HXFNoYWRlckxh
bmcuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTaEhhbmRsZS5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IlN5bWJvbFRhYmxlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iVHlwZXMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJ1dGlsLmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVmFsaWRhdGVMaW1pdGF0aW9ucy5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IlZhcmlhYmxlSW5mby5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IlZhcmlhYmxlUGFja2VyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZ2xz
bGFuZ190YWIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJ0aW1pbmdcUmVzdHJpY3RG
cmFnbWVudFNoYWRlclRpbWluZy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InRpbWlu
Z1xSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhPdXRwdXQuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxjb21waWxlclxBcnJheUJvdW5kc0NsYW1w
ZXIuaCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0
c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0i
RXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJvamVjdD4KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yX2NvbW1vbi52
Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3JfY29tbW9uLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yX2NvbW1v
bi52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcxIEBACivvu788P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IFRvb2xzVmVyc2lv
bj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNi
dWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNl
IEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEw
NjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5zaW9ucz5j
cHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4NCisg
ICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzXGdlbmVyYXRl
ZCI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2ViOGRhMTU3LWIyOWMtNDNjMy04ODBkLTU0
Njc5ZTE3NmRjNX08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8Rmls
dGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlc1xkZXBncmFwaCI+DQorICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+e2I1NDEwZDNhLWMzYzgtNGFlNi04NDNhLWIwMDBkNjUyNjMyZX08L1VuaXF1ZUlkZW50
aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxl
c1x0aW1pbmciPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnthOTg0NzYxMS1kY2Q1LTRjODkt
ODI2Mi1hMjJiOTZjN2M5OGR9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisg
ICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlm
aWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlm
aWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5z
aW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVz
XGdlbmVyYXRlZCI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezA5NGY3MTE1LTM1ZDMtNGM2
My04NzBjLWFiNWYzOTNkYzJjMn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0K
KyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlc1x0aW1pbmciPg0KKyAgICAgIDxVbmlx
dWVJZGVudGlmaWVyPns1ZjU3NDJlOS0xNWUxLTQzYjQtYjFlNy0wYzExOGJlMTRlMDR9PC9Vbmlx
dWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFk
ZXIgRmlsZXNcZGVwZ3JhcGgiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntjNDAwN2UzNS0z
YzExLTQ0ZDYtOTVmNy1iYjgxZGI1MjgwNjh9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0Zp
bHRlcj4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IkNvbXBpbGVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iZGVidWcuY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGls
ZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEZXRlY3RDYWxsRGVwdGguY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJEaWFnbm9zdGljcy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IkRpcmVjdGl2ZUhhbmRsZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJG
b3JMb29wVW5yb2xsLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5mb1NpbmsuY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGls
ZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbml0aWFsaXplLmNwcCI+DQorICAgICAgPEZp
bHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZURsbC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNl
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IkluaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJJbnRlcm1lZGlhdGUuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJpbnRlcm1PdXQu
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbnRlcm1UcmF2ZXJzZS5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ik1hcExvbmdWYXJpYWJsZU5hbWVzLmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0ib3Nzb3VyY2Vfd2luLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0icGFyc2VDb25zdC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlBhcnNlSGVs
cGVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUG9vbEFsbG9jLmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iUXVhbGlmaWVyQWxpdmUuY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJSZW1vdmVUcmVlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2hh
ZGVyTGFuZy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlN5bWJvbFRhYmxlLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0idXRpbC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IlZhbGlkYXRlTGltaXRhdGlvbnMuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJWYXJpYWJsZUluZm8uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJWYXJpYWJsZVBh
Y2tlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Imdsc2xhbmdfbGV4LmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcZ2VuZXJhdGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xD
b21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Imdsc2xhbmdfdGFiLmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcZ2VuZXJhdGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaC5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVu
Y3lHcmFwaEJ1aWxkZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xkZXBncmFw
aDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJk
ZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJj
ZSBGaWxlc1xkZXBncmFwaDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InRpbWluZ1xSZXN0cmljdEZyYWdtZW50U2hh
ZGVyVGltaW5nLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcdGltaW5nPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InRpbWluZ1xS
ZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzXHRpbWluZzwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJBcnJheUJvdW5kc0NsYW1wZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0
ZW1Hcm91cD4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCYXNlVHlwZXMuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iQ29tbW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkNvbnN0
YW50VW5pb24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVidWcuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iRGV0ZWN0Q2FsbERlcHRoLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IkRpYWdub3N0aWNzLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpcmVjdGl2
ZUhhbmRsZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRm9yTG9vcFVucm9sbC5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbmZvU2luay5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJJbml0aWFsaXplLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkluaXRpYWxp
emVEbGwuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZUdsb2JhbHMuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oIj4NCisg
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJpbnRlcm1lZGlhdGUuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0ibG9jYWxpbnRlcm1lZGlhdGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
TWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTU1hcC5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJvc2luY2x1ZGUuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iUGFyc2VIZWxwZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUG9v
bEFsbG9jLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlF1YWxpZmllckFsaXZlLmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlbW92ZVRyZWUuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iUmVuYW1lRnVuY3Rpb24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Li5caW5jbHVkZVxHTFNMQU5HXFNoYWRlckxhbmcuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iU2hIYW5kbGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU3ltYm9sVGFibGUuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVHlwZXMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0idXRpbC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJWYWxpZGF0ZUxpbWl0YXRp
b25zLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlZhcmlhYmxlSW5mby5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJWYXJpYWJsZVBhY2tlci5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJnbHNsYW5nX3RhYi5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xnZW5l
cmF0ZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0idGltaW5nXFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXNcdGltaW5nPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9InRpbWluZ1xSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1x0aW1pbmc8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBo
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVu
Y3lHcmFwaEJ1aWxkZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcZGVwZ3JhcGg8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVw
Z3JhcGhcRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ikhhc2hOYW1lcy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmls
dGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJBcnJheUJv
dW5kc0NsYW1wZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxD
dXN0b21CdWlsZCBJbmNsdWRlPSJnbHNsYW5nLmwiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ3VzdG9tQnVpbGQ+DQorICAgIDxDdXN0b21CdWlsZCBJbmNs
dWRlPSJnbHNsYW5nLnkiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQor
ICAgIDwvQ3VzdG9tQnVpbGQ+DQorICA8L0l0ZW1Hcm91cD4NCis8L1Byb2plY3Q+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3JfaGxzbC52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yX2hsc2wudmN4cHJvagkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
X2hsc2wudmN4cHJvagkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjQgQEAKK++7vzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9
IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29m
dC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9q
ZWN0Q29uZmlndXJhdGlvbnMiPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0i
RGVidWd8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9u
Pg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZp
Z3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQi
Pg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQ
bGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQorICAgICAg
PENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+
V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJv
amVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPg0KKyAgICAgIDxDb25maWd1
cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxh
dGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICA8L0l0ZW1Hcm91cD4NCisg
IDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4NCisgICAgPFByb2plY3RHdWlkPns1NjIw
RjBFNC02QzQzLTQ5QkMtQTE3OC1CODA0RTFBMEMzQTd9PC9Qcm9qZWN0R3VpZD4NCisgICAgPFJv
b3ROYW1lc3BhY2U+Q3Jvc3NDb21waWxlckhMU0w8L1Jvb3ROYW1lc3BhY2U+DQorICAgIDxLZXl3
b3JkPldpbjMyUHJvajwvS2V5d29yZD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJbXBvcnQg
UHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+
DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25m
aWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENo
YXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRp
bWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdy
b3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisgICAgPENv
bmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPg0KKyAgICA8
Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlHcm91cD4N
CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1
cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJh
Y3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6
YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3Vw
Pg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1
cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJh
Y3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8
SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4N
CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0KKyAgPC9JbXBvcnRH
cm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8
SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0i
IC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlT
aGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxB
cHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3RE
aXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlz
dHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycp
IiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAg
PEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0
PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENv
bmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBv
cnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPg0KKyAgPFBy
b3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1By
b2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3Vy
YXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKENvbmZpZ3VyYXRpb24pXGhsc2xcPC9J
bnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwv
T3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlvbilcaGxzbFw8L0ludERpcj4N
CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8
L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnRE
aXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0
aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9u
KVw8L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRp
bWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0
RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9OT19XQVJOSU5H
UztOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAg
ICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hl
Y2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVM
aWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVk
SGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAg
ICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAg
ICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5
OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlz
YWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+
DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJ
bmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNp
b24+DQorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+
DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uLzsk
KFByb2plY3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUztOT01JTk1B
WDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGlt
ZUxpYnJhcnk+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2
ZWxMaW5raW5nPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBp
bGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQor
ICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisg
ICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0
MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwv
RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVm
aW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgPE1pZGw+DQorICAg
ICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlk
bD4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRp
bWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0
RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9OT19XQVJOSU5H
UztOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAg
ICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hl
Y2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVM
aWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVk
SGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAg
ICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1
OzQ1MTI7NDcwMjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2Fy
bmluZ3M+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9E
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8
L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAg
ICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRs
Pg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGlt
aXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lu
bGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwv
SW50cmluc2ljRnVuY3Rpb25zPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PiQoUHJvamVjdERpcikuLi87JChQcm9qZWN0RGlyKS4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAg
ICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19MSUI7X0NSVF9TRUNVUkVf
Tk9fV0FSTklOR1M7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmluaXRp
b25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11
bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2lu
Zz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+
DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVs
NDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQx
Mjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5n
cyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8VHJl
YXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iQ29kZUdlbkhMU0wuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IkRldGVjdERpc2NvbnRpbnVpdHkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ik91dHB1dEhMU0wuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlNlYXJjaFN5
bWJvbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVHJhbnNsYXRvckhMU0wuY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdC5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVW5pZm9ybS5jcHAiIC8+DQorICA8L0l0ZW1Hcm91
cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGV0ZWN0RGlzY29u
dGludWl0eS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik91dHB1dEhMU0wuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTZWFyY2hTeW1ib2wuaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJUcmFuc2xhdG9ySExTTC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVu
aWZvcm0uaCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFy
Z2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJl
bD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJvamVjdD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvcl9obHNsLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9obHNsLnZj
eHByb2ouZmlsdGVycwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yX2hsc2wudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDU2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/
Pg0KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWlj
cm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXA+DQorICAg
IDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmll
cj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmll
cj4NCisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDth
c207YXNteDwvRXh0ZW5zaW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVk
ZT0iSGVhZGVyIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlC
RC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0
ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+DQorICAgIDwvRmls
dGVyPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IkNvZGVHZW5ITFNMLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGV0ZWN0
RGlzY29udGludWl0eS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ik91dHB1dEhMU0wu
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTZWFyY2hTeW1ib2wuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJUcmFuc2xhdG9ySExTTC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNl
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IlVuaWZvcm0uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJEZXRlY3REaXNjb250aW51aXR5LmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ik91dHB1dEhMU0wuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU2Vh
cmNoU3ltYm9sLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRyYW5zbGF0b3JITFNMLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdC5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJVbmlmb3JtLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgPC9JdGVtR3JvdXA+DQorPC9Qcm9q
ZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvNjRiaXQtdG9rZW5pemVyLXNhZmV0eS5w
YXRjaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yLzY0Yml0LXRva2VuaXplci1zYWZldHkucGF0Y2gJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yLzY0Yml0
LXRva2VuaXplci1zYWZldHkucGF0Y2gJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU5IEBACist
LS0gYS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAKKysrKyBiL3NyYy9j
b21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAorQEAgLTU2LDYgKzU2LDcgQEAgdHlw
ZWRlZiBpbnQxNl90IGZsZXhfaW50MTZfdDsKKyB0eXBlZGVmIHVpbnQxNl90IGZsZXhfdWludDE2
X3Q7CisgdHlwZWRlZiBpbnQzMl90IGZsZXhfaW50MzJfdDsKKyB0eXBlZGVmIHVpbnQzMl90IGZs
ZXhfdWludDMyX3Q7CisrdHlwZWRlZiB1aW50NjRfdCBmbGV4X3VpbnQ2NF90OworICNlbHNlCisg
dHlwZWRlZiBzaWduZWQgY2hhciBmbGV4X2ludDhfdDsKKyB0eXBlZGVmIHNob3J0IGludCBmbGV4
X2ludDE2X3Q7CitAQCAtMTc5LDYgKzE4MCwxMSBAQCB0eXBlZGVmIHZvaWQqIHl5c2Nhbl90Owor
IHR5cGVkZWYgc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSAqWVlfQlVGRkVSX1NUQVRFOworICNlbmRp
ZgorIAorKyNpZm5kZWYgWVlfVFlQRURFRl9ZWV9TSVpFX1QKKysjZGVmaW5lIFlZX1RZUEVERUZf
WVlfU0laRV9UCisrdHlwZWRlZiBzaXplX3QgeXlfc2l6ZV90OworKyNlbmRpZgorKworICNkZWZp
bmUgRU9CX0FDVF9DT05USU5VRV9TQ0FOIDAKKyAjZGVmaW5lIEVPQl9BQ1RfRU5EX09GX0ZJTEUg
MQorICNkZWZpbmUgRU9CX0FDVF9MQVNUX01BVENIIDIKK0BAIC0yMDEsMTEgKzIwNyw2IEBAIHR5
cGVkZWYgc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSAqWVlfQlVGRkVSX1NUQVRFOworIAorICNkZWZp
bmUgdW5wdXQoYykgeXl1bnB1dCggYywgeXlnLT55eXRleHRfcHRyICwgeXlzY2FubmVyICkKKyAK
Ky0jaWZuZGVmIFlZX1RZUEVERUZfWVlfU0laRV9UCistI2RlZmluZSBZWV9UWVBFREVGX1lZX1NJ
WkVfVAorLXR5cGVkZWYgc2l6ZV90IHl5X3NpemVfdDsKKy0jZW5kaWYKKy0KKyAjaWZuZGVmIFlZ
X1NUUlVDVF9ZWV9CVUZGRVJfU1RBVEUKKyAjZGVmaW5lIFlZX1NUUlVDVF9ZWV9CVUZGRVJfU1RB
VEUKKyBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlCitAQCAtMjIzLDcgKzIyNCw3IEBAIHN0cnVjdCB5
eV9idWZmZXJfc3RhdGUKKyAJLyogTnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZCBpbnRvIHl5X2No
X2J1Ziwgbm90IGluY2x1ZGluZyBFT0IKKyAJICogY2hhcmFjdGVycy4KKyAJICovCistCWludCB5
eV9uX2NoYXJzOworKwl5eV9zaXplX3QgeXlfbl9jaGFyczsKKyAKKyAJLyogV2hldGhlciB3ZSAi
b3duIiB0aGUgYnVmZmVyIC0gaS5lLiwgd2Uga25vdyB3ZSBjcmVhdGVkIGl0LAorIAkgKiBhbmQg
Y2FuIHJlYWxsb2MoKSBpdCB0byBncm93IGl0LCBhbmQgc2hvdWxkIGZyZWUoKSBpdCB0bworQEAg
LTMwMiw3ICszMDMsNyBAQCBzdGF0aWMgdm9pZCBwcF9pbml0X2J1ZmZlciAoWVlfQlVGRkVSX1NU
QVRFIGIsRklMRSAqZmlsZSAseXlzY2FuX3QgeXlzY2FubmVyICk7CisgCisgWVlfQlVGRkVSX1NU
QVRFIHBwX3NjYW5fYnVmZmVyIChjaGFyICpiYXNlLHl5X3NpemVfdCBzaXplICx5eXNjYW5fdCB5
eXNjYW5uZXIgKTsKKyBZWV9CVUZGRVJfU1RBVEUgcHBfc2Nhbl9zdHJpbmcgKHl5Y29uc3QgY2hh
ciAqeXlfc3RyICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKy1ZWV9CVUZGRVJfU1RBVEUgcHBfc2Nh
bl9ieXRlcyAoeXljb25zdCBjaGFyICpieXRlcyxpbnQgbGVuICx5eXNjYW5fdCB5eXNjYW5uZXIg
KTsKKytZWV9CVUZGRVJfU1RBVEUgcHBfc2Nhbl9ieXRlcyAoeXljb25zdCBjaGFyICpieXRlcyx5
eV9zaXplX3QgbGVuICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAKKyB2b2lkICpwcGFsbG9jICh5
eV9zaXplX3QgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworIHZvaWQgKnBwcmVhbGxvYyAodm9pZCAq
LHl5X3NpemVfdCAseXlzY2FuX3QgeXlzY2FubmVyICk7CitAQCAtMzUzLDcgKzM1NCw3IEBAIHN0
YXRpYyB2b2lkIHl5X2ZhdGFsX2Vycm9yICh5eWNvbnN0IGNoYXIgbXNnW10gLHl5c2Nhbl90IHl5
c2Nhbm5lciApOworICAqLworICNkZWZpbmUgWVlfRE9fQkVGT1JFX0FDVElPTiBcCisgCXl5Zy0+
eXl0ZXh0X3B0ciA9IHl5X2JwOyBcCistCXl5bGVuZyA9IChzaXplX3QpICh5eV9jcCAtIHl5X2Jw
KTsgXAorKwl5eWxlbmcgPSAoeXlfc2l6ZV90KSAoeXlfY3AgLSB5eV9icCk7IFwKKyAJeXlnLT55
eV9ob2xkX2NoYXIgPSAqeXlfY3A7IFwKKyAJKnl5X2NwID0gJ1wwJzsgXAorIAl5eWctPnl5X2Nf
YnVmX3AgPSB5eV9jcDsKK0BAIC01NzksOCArNTgwLDggQEAgc3RydWN0IHl5Z3V0c190CisgICAg
IHNpemVfdCB5eV9idWZmZXJfc3RhY2tfbWF4OyAvKio8IGNhcGFjaXR5IG9mIHN0YWNrLiAqLwor
ICAgICBZWV9CVUZGRVJfU1RBVEUgKiB5eV9idWZmZXJfc3RhY2s7IC8qKjwgU3RhY2sgYXMgYW4g
YXJyYXkuICovCisgICAgIGNoYXIgeXlfaG9sZF9jaGFyOworLSAgICBpbnQgeXlfbl9jaGFyczsK
Ky0gICAgaW50IHl5bGVuZ19yOworKyAgICB5eV9zaXplX3QgeXlfbl9jaGFyczsKKysgICAgeXlf
c2l6ZV90IHl5bGVuZ19yOworICAgICBjaGFyICp5eV9jX2J1Zl9wOworICAgICBpbnQgeXlfaW5p
dDsKKyAgICAgaW50IHl5X3N0YXJ0OworQEAgLTYzNyw3ICs2MzgsNyBAQCBGSUxFICpwcGdldF9v
dXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorIHZvaWQgcHBzZXRfb3V0ICAoRklMRSAqIG91
dF9zdHIgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorLWludCBwcGdldF9sZW5nICh5eXNjYW5f
dCB5eXNjYW5uZXIgKTsKKyt5eV9zaXplX3QgcHBnZXRfbGVuZyAoeXlzY2FuX3QgeXlzY2FubmVy
ICk7CisgCisgY2hhciAqcHBnZXRfdGV4dCAoeXlzY2FuX3QgeXlzY2FubmVyICk7CisgCitAQCAt
NzA0LDcgKzcwNSw3IEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwor
IAlpZiAoIFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfaXNfaW50ZXJhY3RpdmUgKSBcCisg
CQl7IFwKKyAJCWludCBjID0gJyonOyBcCistCQlpbnQgbjsgXAorKwkJeXlfc2l6ZV90IG47IFwK
KyAJCWZvciAoIG4gPSAwOyBuIDwgbWF4X3NpemUgJiYgXAorIAkJCSAgICAgKGMgPSBnZXRjKCB5
eWluICkpICE9IEVPRiAmJiBjICE9ICdcbic7ICsrbiApIFwKKyAJCQlidWZbbl0gPSAoY2hhcikg
YzsgXAorQEAgLTEzMzgsNyArMTMzOSw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVy
ICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgCisgCWVsc2UKKyAJCXsKKy0JCQlpbnQgbnVtX3RvX3Jl
YWQgPQorKwkJCXl5X3NpemVfdCBudW1fdG9fcmVhZCA9CisgCQkJWVlfQ1VSUkVOVF9CVUZGRVJf
TFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJlcl90b19tb3ZlIC0gMTsKKyAKKyAJCXdoaWxlICgg
bnVtX3RvX3JlYWQgPD0gMCApCitAQCAtMTM1Miw3ICsxMzUzLDcgQEAgc3RhdGljIGludCB5eV9n
ZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAKKyAJCQlpZiAoIGItPnl5X2lz
X291cl9idWZmZXIgKQorIAkJCQl7CistCQkJCWludCBuZXdfc2l6ZSA9IGItPnl5X2J1Zl9zaXpl
ICogMjsKKysJCQkJeXlfc2l6ZV90IG5ld19zaXplID0gYi0+eXlfYnVmX3NpemUgKiAyOworIAor
IAkJCQlpZiAoIG5ld19zaXplIDw9IDAgKQorIAkJCQkJYi0+eXlfYnVmX3NpemUgKz0gYi0+eXlf
YnVmX3NpemUgLyA4OworQEAgLTEzODMsNyArMTM4NCw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25l
eHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgCisgCQkvKiBSZWFkIGluIG1vcmUgZGF0
YS4gKi8KKyAJCVlZX0lOUFVUKCAoJllZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hfYnVm
W251bWJlcl90b19tb3ZlXSksCistCQkJeXlnLT55eV9uX2NoYXJzLCAoc2l6ZV90KSBudW1fdG9f
cmVhZCApOworKwkJCXl5Zy0+eXlfbl9jaGFycywgbnVtX3RvX3JlYWQgKTsKKyAKKyAJCVlZX0NV
UlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfbl9jaGFycyA9IHl5Zy0+eXlfbl9jaGFyczsKKyAJCX0K
K0BAIC0xNTA4LDcgKzE1MDksNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlz
Y2FuX3QgeXlzY2FubmVyKQorIAorIAkJZWxzZQorIAkJCXsgLyogbmVlZCBtb3JlIGlucHV0ICov
CistCQkJaW50IG9mZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0X3B0cjsKKysJ
CQl5eV9zaXplX3Qgb2Zmc2V0ID0geXlnLT55eV9jX2J1Zl9wIC0geXlnLT55eXRleHRfcHRyOwor
IAkJCSsreXlnLT55eV9jX2J1Zl9wOworIAorIAkJCXN3aXRjaCAoIHl5X2dldF9uZXh0X2J1ZmZl
ciggeXlzY2FubmVyICkgKQorQEAgLTE3ODgsNyArMTc4OSw3IEBAIHZvaWQgcHBwb3BfYnVmZmVy
X3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgICovCisgc3RhdGljIHZvaWQgcHBlbnN1cmVf
YnVmZmVyX3N0YWNrICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgeworLQlpbnQgbnVtX3RvX2FsbG9j
OworKwl5eV9zaXplX3QgbnVtX3RvX2FsbG9jOworICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcg
PSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisgCisgCWlmICgheXlnLT55eV9idWZmZXJf
c3RhY2spIHsKK0BAIC0xODg2LDEyICsxODg3LDExIEBAIFlZX0JVRkZFUl9TVEFURSBwcF9zY2Fu
X3N0cmluZyAoeXljb25zdCBjaGFyICogeXlzdHIgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCisgICog
QHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCisgICogQHJldHVybiB0aGUgbmV3
bHkgYWxsb2NhdGVkIGJ1ZmZlciBzdGF0ZSBvYmplY3QuCisgICovCistWVlfQlVGRkVSX1NUQVRF
IHBwX3NjYW5fYnl0ZXMgICh5eWNvbnN0IGNoYXIgKiB5eWJ5dGVzLCBpbnQgIF95eWJ5dGVzX2xl
biAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKKytZWV9CVUZGRVJfU1RBVEUgcHBfc2Nhbl9ieXRlcyAg
KHl5Y29uc3QgY2hhciAqIHl5Ynl0ZXMsIHl5X3NpemVfdCAgX3l5Ynl0ZXNfbGVuICwgeXlzY2Fu
X3QgeXlzY2FubmVyKQorIHsKKyAJWVlfQlVGRkVSX1NUQVRFIGI7CisgCWNoYXIgKmJ1ZjsKKy0J
eXlfc2l6ZV90IG47CistCWludCBpOworKwl5eV9zaXplX3QgbiwgaTsKKyAgICAgCisgCS8qIEdl
dCBtZW1vcnkgZm9yIGZ1bGwgYnVmZmVyLCBpbmNsdWRpbmcgc3BhY2UgZm9yIHRyYWlsaW5nIEVP
QidzLiAqLworIAluID0gX3l5Ynl0ZXNfbGVuICsgMjsKK0BAIC0yMDAxLDcgKzIwMDEsNyBAQCBG
SUxFICpwcGdldF9vdXQgICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgLyoqIEdldCB0aGUgbGVuZ3Ro
IG9mIHRoZSBjdXJyZW50IHRva2VuLgorICAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIg
b2JqZWN0LgorICAqLworLWludCBwcGdldF9sZW5nICAoeXlzY2FuX3QgeXlzY2FubmVyKQorK3l5
X3NpemVfdCBwcGdldF9sZW5nICAoeXlzY2FuX3QgeXlzY2FubmVyKQorIHsKKyAgICAgc3RydWN0
IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAgICByZXR1
cm4geXlsZW5nOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAkocmV2aXNpb24g
MTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9Ub2tlbml6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogI2xpbmUg
MTYgIi4vVG9rZW5pemVyLmwiCiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDExIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTEtMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0z
NTksOCArMzU5LDggQEAgc3RhdGljIHZvaWQgeXlfZmF0YWxfZXJyb3IgKHl5Y29uc3QgY2hhcgog
CSp5eV9jcCA9ICdcMCc7IFwKIAl5eWctPnl5X2NfYnVmX3AgPSB5eV9jcDsKIAotI2RlZmluZSBZ
WV9OVU1fUlVMRVMgMzcKLSNkZWZpbmUgWVlfRU5EX09GX0JVRkZFUiAzOAorI2RlZmluZSBZWV9O
VU1fUlVMRVMgMzgKKyNkZWZpbmUgWVlfRU5EX09GX0JVRkZFUiAzOQogLyogVGhpcyBzdHJ1Y3Qg
aXMgbm90IHVzZWQgaW4gdGhpcyBzY2FubmVyLAogICAgYnV0IGl0cyBwcmVzZW5jZSBpcyBuZWNl
c3NhcnkuICovCiBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwpAQCAtMzY4LDE3ICszNjgsMTcgQEAgc3Ry
dWN0IHl5X3RyYW5zX2luZm8KIAlmbGV4X2ludDMyX3QgeXlfdmVyaWZ5OwogCWZsZXhfaW50MzJf
dCB5eV9ueHQ7CiAJfTsKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2NlcHRbODRd
ID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2NlcHRbODddID0KICAgICB7ICAg
MCwKLSAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAzOCwgICAzNiwgICAzNCwgICAzNSwg
ICAzNSwgICAzMywKKyAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAzOSwgICAzNywgICAz
NCwgICAzNSwgICAzNSwgICAzMywKICAgICAgICAgNywgICAzMywgICAzMywgICAzMywgICAzMywg
ICAzMywgICAzMywgICAzMywgICAzMywgICAgOSwKLSAgICAgICAgOSwgICAzMywgICAzMywgICAz
MywgICAgOCwgICAzMywgICAzMywgICAgMywgICAgNSwgICAgNSwKLSAgICAgICAgNCwgICAzNCwg
ICAzNSwgICAxOSwgICAyNywgICAyMCwgICAzMCwgICAyNSwgICAxMiwgICAyMywKLSAgICAgICAx
MywgICAyNCwgICAxMCwgICAgMiwgICAgMSwgICAyNiwgICAxMCwgICAgOSwgICAxMSwgICAxMSwK
LSAgICAgICAxMSwgICAxMSwgICAgOSwgICAxNCwgICAxNiwgICAxOCwgICAxNywgICAxNSwgICAg
OCwgICAzMSwKLSAgICAgICAyMSwgICAzMiwgICAyMiwgICAgMywgICAgNSwgICAgNiwgICAxMSwg
ICAxMCwgICAxMSwgICAgMSwKLSAgICAgICAxMCwgICAxMSwgICAgMCwgICAxMCwgICAgOSwgICAy
OCwgICAyOSwgICAgMCwgICAxMCwgICAxMCwKLSAgICAgICAxMCwgICAxMCwgICAgMAorICAgICAg
ICA5LCAgIDMzLCAgIDMzLCAgIDMzLCAgICA4LCAgIDM3LCAgIDMzLCAgIDMzLCAgICAzLCAgICA1
LAorICAgICAgICA1LCAgICA0LCAgIDM0LCAgIDM1LCAgIDE5LCAgIDI3LCAgIDIwLCAgIDMwLCAg
IDI1LCAgIDEyLAorICAgICAgIDIzLCAgIDEzLCAgIDI0LCAgIDEwLCAgICAyLCAgICAxLCAgIDI2
LCAgIDEwLCAgICA5LCAgIDExLAorICAgICAgIDExLCAgIDExLCAgIDExLCAgICA5LCAgIDE0LCAg
IDE2LCAgIDE4LCAgIDE3LCAgIDE1LCAgICA4LAorICAgICAgIDM2LCAgIDM2LCAgIDMxLCAgIDIx
LCAgIDMyLCAgIDIyLCAgICAzLCAgICA1LCAgICA2LCAgIDExLAorICAgICAgIDEwLCAgIDExLCAg
ICAxLCAgIDEwLCAgIDExLCAgICAwLCAgIDEwLCAgICA5LCAgIDI4LCAgIDI5LAorICAgICAgICAw
LCAgIDEwLCAgIDEwLCAgIDEwLCAgIDEwLCAgICAwCiAgICAgfSA7CiAKIHN0YXRpYyB5eWNvbnN0
IGZsZXhfaW50MzJfdCB5eV9lY1syNTZdID0KQEAgLTM5MiwxMSArMzkyLDExIEBAIHN0YXRpYyB5
eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9lY1syNTZdID0KICAgICAgICAxOSwgICAyMCwgICAgOSwg
ICAgMSwgICAyMSwgICAyMSwgICAyMSwgICAyMSwgICAyMiwgICAyMSwKICAgICAgICAyMywgICAy
MywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywKICAgICAg
ICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyNCwgICAyMywgICAy
MywKLSAgICAgICAgOSwgICAgMSwgICAgOSwgICAyNSwgICAyMywgICAgMSwgICAyMSwgICAyMSwg
ICAyMSwgICAyMSwKKyAgICAgICAgOSwgICAyNSwgICAgOSwgICAyNiwgICAyMywgICAgMSwgICAy
MSwgICAyMSwgICAyMSwgICAyMSwKIAogICAgICAgIDIyLCAgIDIxLCAgIDIzLCAgIDIzLCAgIDIz
LCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLAogICAgICAgIDIzLCAgIDIzLCAgIDIzLCAg
IDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDI0LAotICAgICAgIDIzLCAgIDIz
LCAgICA5LCAgIDI2LCAgICA5LCAgICA5LCAgICAxLCAgICAxLCAgICAxLCAgICAxLAorICAgICAg
IDIzLCAgIDIzLCAgICA5LCAgIDI3LCAgICA5LCAgICA5LCAgICAxLCAgICAxLCAgICAxLCAgICAx
LAogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLAogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLAogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLApAQCAtNDEzLDg1ICs0MTMsODkgQEAgc3RhdGlj
IHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQogICAgICAgICAxLCAgICAxLCAgICAx
LCAgICAxLCAgICAxCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9t
ZXRhWzI3XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfbWV0YVsyOF0gPQogICAg
IHsgICAwLAogICAgICAgICAxLCAgICAxLCAgICAyLCAgICAyLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAzLAogICAgICAgICAxLCAgICAxLCAgICA0LCAgICAxLCAgICA1LCAgICA1
LCAgICA1LCAgICAxLCAgICAxLCAgICAxLAotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICAxLCAgICAxCisgICAgICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDEsICAgIDEsICAgIDEK
ICAgICB9IDsKIAotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Jhc2VbODldID0KK3N0
YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9iYXNlWzkyXSA9CiAgICAgeyAgIDAsCi0gICAg
ICAgIDAsICAgIDAsICAgMjQsICAgMjYsICAxNTgsICAxNTksICAxNTAsICAxNTksICAxNDUsICAx
MjgsCi0gICAgICAxNTksICAxMTIsICAgMjMsICAxNTksICAxMTEsICAgMjEsICAgMjUsICAgMzAs
ICAgMjksICAgMzYsCi0gICAgICAgNDYsICAgMzYsICAxMDAsICAgNDUsICAgIDAsICAgMTYsICAg
NDcsICAgIDAsICAxNTksICAgODQsCi0gICAgICAgNjUsICAgNzMsICAxNTksICAxNTksICAxNTks
ICAxNTksICAxNTksICAxNTksICAxNTksICAxNTksCi0gICAgICAxNTksICAxNTksICAgNjEsICAx
NTksICAgIDAsICAxNTksICAgNzMsICAgMzIsICAgNTYsICAgODMsCi0gICAgICAgOTUsICAgNjgs
ICAgIDAsICAgMzEsICAxNTksICAxNTksICAxNTksICAgMTksICAgIDAsICAxNTksCi0gICAgICAx
NTksICAxNTksICAxNTksICAgIDAsICAxNTksICAxNTksICAgOTgsICAgIDAsICAxMTAsICAgIDAs
Ci0gICAgICAgIDAsICAxMTcsICAgNTIsICAgOTAsICAgODAsICAxNTksICAxNTksICAxMDEsICAg
OTcsICAxMTIsCi0gICAgICAxMjAsICAxMjMsICAxNTksICAxNDAsICAgMjgsICAxNDUsICAxNTAs
ICAxNTIKKyAgICAgICAgMCwgICAgMCwgICAyNSwgICAyNywgIDE2MiwgIDE2MywgIDE1OSwgIDE2
MywgIDE1MiwgIDEzMiwKKyAgICAgIDE2MywgIDEzMSwgICAyNCwgIDE2MywgIDExNiwgICAyMiwg
ICAyNiwgICAzMSwgICAzMCwgICAzNywKKyAgICAgICA0MCwgICA0NCwgIDExNSwgICA0NiwgICAg
MCwgICA2NCwgICA1MCwgICAxNSwgICAgMCwgIDE2MywKKyAgICAgIDEyNCwgICA5MSwgICA4OCwg
IDE2MywgIDE2MywgIDE2MywgIDE2MywgIDE2MywgIDE2MywgIDE2MywKKyAgICAgIDE2MywgIDE2
MywgIDE2MywgICA2NCwgIDE2MywgICAgMCwgIDE2MywgICA3NiwgICA1NCwgICA1OCwKKyAgICAg
ICA3OSwgICA5MSwgICA5MSwgICAgMCwgICA1NiwgIDE2MywgIDE2MywgIDE2MywgICAzMiwgICAg
MCwKKyAgICAgIDE2MywgICAzNiwgIDE2MywgIDE2MywgIDE2MywgIDE2MywgICAgMCwgIDE2Mywg
IDE2MywgICA5NCwKKyAgICAgICAgMCwgIDEwNiwgICAgMCwgICAgMCwgIDExMywgICA1NSwgICA3
MiwgIDExMywgIDE2MywgIDE2MywKKyAgICAgIDExNiwgIDEwMSwgIDEwOCwgIDEyMywgIDEyNiwg
IDE2MywgIDE0MywgICAzMSwgIDE0OCwgIDE1MywKKyAgICAgIDE1NQorCiAgICAgfSA7CiAKLXN0
YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9kZWZbODldID0KK3N0YXRpYyB5eWNvbnN0IGZs
ZXhfaW50MTZfdCB5eV9kZWZbOTJdID0KICAgICB7ICAgMCwKLSAgICAgICA4MywgICAgMSwgICA4
NCwgICA4NCwgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywKLSAgICAgICA4Mywg
ICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywKLSAg
ICAgICAyMCwgICA4MywgICA4MywgICA4MywgICA4NSwgICA4MywgICA4MywgICA4NiwgICA4Mywg
ICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4
MywgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4NywgICA4Mywg
ICA4MywgICAyMCwgICAyMCwgICA0NywKLSAgICAgICA1MCwgICA4OCwgICAyMSwgICA4MywgICA4
MywgICA4MywgICA4MywgICA4MywgICA4NSwgICA4MywKLSAgICAgICA4MywgICA4MywgICA4Mywg
ICA4NiwgICA4MywgICA4MywgICA0MywgICA0MywgICA2NywgICA4NywKLSAgICAgICA0NywgICA1
MCwgICA4MywgICA1MSwgICA4OCwgICA4MywgICA4MywgICA4MywgICA2OSwgICA3MiwKLSAgICAg
ICA4MywgICA4MywgICAgMCwgICA4MywgICA4MywgICA4MywgICA4MywgICA4MworICAgICAgIDg2
LCAgICAxLCAgIDg3LCAgIDg3LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LAor
ICAgICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2
LCAgIDg2LAorICAgICAgIDIwLCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg4LCAgIDg2LCAgIDg2LCAg
IDg2LCAgIDg5LCAgIDg2LAorICAgICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2
LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LAorICAgICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAg
IDg2LCAgIDkwLCAgIDg2LCAgIDg2LCAgIDIwLCAgIDIwLAorICAgICAgIDQ4LCAgIDUxLCAgIDkx
LCAgIDIxLCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg4LAorICAgICAgIDg2LCAg
IDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg5LCAgIDg2LCAgIDg2LCAgIDQ0LAorICAg
ICAgIDQ0LCAgIDcwLCAgIDkwLCAgIDQ4LCAgIDUxLCAgIDg2LCAgIDUyLCAgIDkxLCAgIDg2LCAg
IDg2LAorICAgICAgIDg2LCAgIDcyLCAgIDc1LCAgIDg2LCAgIDg2LCAgICAwLCAgIDg2LCAgIDg2
LCAgIDg2LCAgIDg2LAorICAgICAgIDg2CisKICAgICB9IDsKIAotc3RhdGljIHl5Y29uc3QgZmxl
eF9pbnQxNl90IHl5X254dFsxODZdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9u
eHRbMTkxXSA9CiAgICAgeyAgIDAsCiAgICAgICAgIDYsICAgIDcsICAgIDgsICAgIDksICAgMTAs
ICAgMTEsICAgMTIsICAgMTMsICAgMTQsICAgMTUsCiAgICAgICAgMTYsICAgMTcsICAgMTgsICAg
MTksICAgMjAsICAgMjEsICAgMjEsICAgMjIsICAgMjMsICAgMjQsCi0gICAgICAgMjUsICAgMjUs
ICAgMjUsICAgMjUsICAgMjYsICAgMjcsICAgMjksICAgMzAsICAgMjksICAgMzAsCi0gICAgICAg
MzYsICAgMzksICAgNTksICAgMzEsICAgNjAsICAgMzEsICAgNDEsICAgNzcsICAgNDQsICAgNDAs
Ci0gICAgICAgNjEsICAgMzcsICAgNDUsICAgNDIsICAgNDMsICAgNDMsICAgNDMsICAgNDYsICAg
NDcsICAgNzYsCi0gICAgICAgNDgsICAgNDgsICAgNDksICAgNTQsICAgNTUsICAgNTAsICAgNTAs
ICAgNTEsICAgNTAsICAgNTIsCi0gICAgICAgNTMsICAgNTMsICAgNTMsICAgNTcsICAgNTgsICAg
NjIsICAgODEsICAgODEsICAgODEsICAgNTAsCi0gICAgICAgNDksICAgNDksICAgNjMsICAgNjcs
ICAgMzIsICAgNjgsICAgNjgsICAgNjgsICAgNjYsICAgNTAsCi0gICAgICAgNTAsICAgNjcsICAg
NjksICAgNjcsICAgNjcsICAgNTAsICAgNjUsICAgNzEsICAgNzEsICAgNzEsCi0gICAgICAgNTAs
ICAgNTAsICAgNTAsICAgNTAsICAgNzIsICAgNTAsICAgNTAsICAgNTAsICAgNTAsICAgNTAsCi0K
LSAgICAgICA4MywgICA4MywgICA1MCwgICA1MCwgICA1MCwgICA3MywgICA3MywgICA4MywgICA4
MywgICA3NCwKLSAgICAgICA3NCwgICA3NCwgICA2NywgICA2NywgICA2NywgICA4MiwgICA4Miwg
ICA4MiwgICA1NiwgICA2NywKLSAgICAgICA3OCwgICA3OCwgICA4MywgICA4MywgICA3OSwgICA3
OSwgICA3OSwgICA3OCwgICA3OCwgICAzOCwKLSAgICAgICAzNSwgICA4MCwgICA4MCwgICA4MCwg
ICA4MSwgICA4MSwgICA4MSwgICA4MiwgICA4MiwgICA4MiwKLSAgICAgICAyOCwgICAyOCwgICAy
OCwgICAyOCwgICAyOCwgICA2NCwgICAzNCwgICAzMywgICA2NCwgICA2NCwKLSAgICAgICA3MCwg
ICAzMiwgICA3MCwgICA3MCwgICA3MCwgICA3NSwgICA3NSwgICA4MywgICAgNSwgICA4MywKLSAg
ICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4Mywg
ICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4
MywgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MworICAgICAg
IDI1LCAgIDI1LCAgIDI1LCAgIDI1LCAgIDI2LCAgIDI3LCAgIDI4LCAgIDMwLCAgIDMxLCAgIDMw
LAorICAgICAgIDMxLCAgIDM3LCAgIDQwLCAgIDY1LCAgIDMyLCAgIDYwLCAgIDMyLCAgIDQyLCAg
IDYxLCAgIDQ1LAorICAgICAgIDQxLCAgIDY2LCAgIDM4LCAgIDQ2LCAgIDQzLCAgIDQ0LCAgIDQ0
LCAgIDQ0LCAgIDQ3LCAgIDQ4LAorICAgICAgIDgwLCAgIDQ5LCAgIDQ5LCAgIDUwLCAgIDU0LCAg
IDU0LCAgIDU0LCAgIDUxLCAgIDUyLCAgIDUxLAorICAgICAgIDUzLCAgIDU1LCAgIDU2LCAgIDUx
LCAgIDU4LCAgIDU5LCAgIDYxLCAgIDYyLCAgIDYzLCAgIDg0LAorICAgICAgIDg0LCAgIDg0LCAg
IDUwLCAgIDUwLCAgIDc5LCAgIDY0LCAgIDcwLCAgIDUxLCAgIDcxLCAgIDcxLAorICAgICAgIDcx
LCAgIDUxLCAgIDg2LCAgIDg2LCAgIDcwLCAgIDcyLCAgIDcwLCAgIDcwLCAgIDUxLCAgIDMzLAor
ICAgICAgIDc0LCAgIDc0LCAgIDc0LCAgIDUxLCAgIDUxLCAgIDUxLCAgIDUxLCAgIDc1LCAgIDUx
LCAgIDUxLAorCisgICAgICAgNTEsICAgNzYsICAgNzYsICAgNTEsICAgNjksICAgNzcsICAgNzcs
ICAgNzcsICAgNzAsICAgNzAsCisgICAgICAgNzAsICAgODYsICAgODYsICAgNTEsICAgNTEsICAg
NzAsICAgODEsICAgODEsICAgODYsICAgODYsCisgICAgICAgODIsICAgODIsICAgODIsICAgODEs
ICAgODEsICAgNTEsICAgNjgsICAgODMsICAgODMsICAgODMsCisgICAgICAgODUsICAgODUsICAg
ODUsICAgNTcsICAgMzksICAgNTEsICAgNTEsICAgODQsICAgODQsICAgODQsCisgICAgICAgODUs
ICAgODUsICAgODUsICAgMjksICAgMjksICAgMjksICAgMjksICAgMjksICAgNjcsICAgMzYsCisg
ICAgICAgMzUsICAgNjcsICAgNjcsICAgNzMsICAgMzQsICAgNzMsICAgNzMsICAgNzMsICAgNzgs
ICAgNzgsCisgICAgICAgMzMsICAgODYsICAgIDUsICAgODYsICAgODYsICAgODYsICAgODYsICAg
ODYsICAgODYsICAgODYsCisgICAgICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYs
ICAgODYsICAgODYsICAgODYsICAgODYsCisgICAgICAgODYsICAgODYsICAgODYsICAgODYsICAg
ODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYKICAgICB9IDsKIAotc3RhdGljIHl5Y29u
c3QgZmxleF9pbnQxNl90IHl5X2Noa1sxODZdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZf
dCB5eV9jaGtbMTkxXSA9CiAgICAgeyAgIDAsCiAgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCiAgICAgICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCi0gICAgICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMsICAgIDMsICAgIDQsICAgIDQsCi0g
ICAgICAgMTMsICAgMTYsICAgODUsICAgIDMsICAgMjYsICAgIDQsICAgMTcsICAgNTgsICAgMTks
ICAgMTYsCi0gICAgICAgMjYsICAgMTMsICAgMTksICAgMTcsICAgMTgsICAgMTgsICAgMTgsICAg
MTksICAgMjAsICAgNTQsCi0gICAgICAgMjAsICAgMjAsICAgMjAsICAgMjIsICAgMjIsICAgNDgs
ICAgMjAsICAgMjAsICAgMjAsICAgMjAsCi0gICAgICAgMjEsICAgMjEsICAgMjEsICAgMjQsICAg
MjQsICAgMjcsICAgNzMsICAgNzMsICAgNzMsICAgMjEsCi0gICAgICAgNDksICAgNDksICAgMjcs
ICAgNDMsICAgMzIsICAgNDMsICAgNDMsICAgNDMsICAgMzEsICAgNDksCi0gICAgICAgNTIsICAg
NDMsICAgNDMsICAgNDMsICAgNDMsICAgNDcsICAgMzAsICAgNDcsICAgNDcsICAgNDcsCi0gICAg
ICAgNTIsICAgNTIsICAgNzUsICAgNDcsICAgNDcsICAgNDcsICAgNDcsICAgNTAsICAgNTAsICAg
NTAsCi0KLSAgICAgICA3NCwgICA3NCwgICA3NSwgICA3NSwgICA1MCwgICA1MSwgICA1MSwgICA3
OSwgICA3OSwgICA1MSwKLSAgICAgICA1MSwgICA1MSwgICA2NywgICA2NywgICA2NywgICA3OCwg
ICA3OCwgICA3OCwgICAyMywgICA2NywKLSAgICAgICA2OSwgICA2OSwgICA4MCwgICA4MCwgICA2
OSwgICA2OSwgICA2OSwgICA3MiwgICA3MiwgICAxNSwKLSAgICAgICAxMiwgICA3MiwgICA3Miwg
ICA3MiwgICA4MSwgICA4MSwgICA4MSwgICA4MiwgICA4MiwgICA4MiwKLSAgICAgICA4NCwgICA4
NCwgICA4NCwgICA4NCwgICA4NCwgICA4NiwgICAxMCwgICAgOSwgICA4NiwgICA4NiwKLSAgICAg
ICA4NywgICAgNywgICA4NywgICA4NywgICA4NywgICA4OCwgICA4OCwgICAgNSwgICA4MywgICA4
MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4Mywg
ICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4
MywgICA4MywgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4Mwor
ICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAzLCAgICAz
LCAgICA0LAorICAgICAgICA0LCAgIDEzLCAgIDE2LCAgIDI4LCAgICAzLCAgIDg4LCAgICA0LCAg
IDE3LCAgIDYyLCAgIDE5LAorICAgICAgIDE2LCAgIDI4LCAgIDEzLCAgIDE5LCAgIDE3LCAgIDE4
LCAgIDE4LCAgIDE4LCAgIDE5LCAgIDIwLAorICAgICAgIDU5LCAgIDIwLCAgIDIwLCAgIDIwLCAg
IDIxLCAgIDIxLCAgIDIxLCAgIDIwLCAgIDIwLCAgIDIwLAorICAgICAgIDIwLCAgIDIyLCAgIDIy
LCAgIDIxLCAgIDI0LCAgIDI0LCAgIDI2LCAgIDI2LCAgIDI3LCAgIDc2LAorICAgICAgIDc2LCAg
IDc2LCAgIDUwLCAgIDUwLCAgIDU1LCAgIDI3LCAgIDQ0LCAgIDQ5LCAgIDQ0LCAgIDQ0LAorICAg
ICAgIDQ0LCAgIDUwLCAgIDc3LCAgIDc3LCAgIDQ0LCAgIDQ0LCAgIDQ0LCAgIDQ0LCAgIDQ4LCAg
IDMzLAorICAgICAgIDQ4LCAgIDQ4LCAgIDQ4LCAgIDUxLCAgIDUxLCAgIDUxLCAgIDQ4LCAgIDQ4
LCAgIDQ4LCAgIDQ4LAorCisgICAgICAgNTEsICAgNTIsICAgNTIsICAgNTMsICAgMzIsICAgNTIs
ICAgNTIsICAgNTIsICAgNzAsICAgNzAsCisgICAgICAgNzAsICAgODIsICAgODIsICAgNTMsICAg
NTMsICAgNzAsICAgNzIsICAgNzIsICAgODMsICAgODMsCisgICAgICAgNzIsICAgNzIsICAgNzIs
ICAgNzUsICAgNzUsICAgNzgsICAgMzEsICAgNzUsICAgNzUsICAgNzUsCisgICAgICAgODEsICAg
ODEsICAgODEsICAgMjMsICAgMTUsICAgNzgsICAgNzgsICAgODQsICAgODQsICAgODQsCisgICAg
ICAgODUsICAgODUsICAgODUsICAgODcsICAgODcsICAgODcsICAgODcsICAgODcsICAgODksICAg
MTIsCisgICAgICAgMTAsICAgODksICAgODksICAgOTAsICAgIDksICAgOTAsICAgOTAsICAgOTAs
ICAgOTEsICAgOTEsCisgICAgICAgIDcsICAgIDUsICAgODYsICAgODYsICAgODYsICAgODYsICAg
ODYsICAgODYsICAgODYsICAgODYsCisgICAgICAgODYsICAgODYsICAgODYsICAgODYsICAgODYs
ICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsCisgICAgICAgODYsICAgODYsICAgODYsICAg
ODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYKICAgICB9IDsKIAogLyogVGhl
IGludGVudCBiZWhpbmQgdGhpcyBkZWZpbml0aW9uIGlzIHRoYXQgaXQnbGwgY2F0Y2gKQEAgLTUw
Myw3ICs1MDcsNyBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzE4Nl0gCiAj
ZGVmaW5lIFlZX1JFU1RPUkVfWVlfTU9SRV9PRkZTRVQKIC8qCiAvLwotLy8gQ29weXJpZ2h0IChj
KSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgogLy8KQEAgLTg0MywxMyArODQ3LDEzIEBAIHl5X21hdGNoOgogCQkJd2hp
bGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9IHl5X2N1cnJl
bnRfc3RhdGUgKQogCQkJCXsKIAkJCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5
X2N1cnJlbnRfc3RhdGVdOwotCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4NCApCisJCQkJ
aWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDg3ICkKIAkJCQkJeXlfYyA9IHl5X21ldGFbKHVuc2ln
bmVkIGludCkgeXlfY107CiAJCQkJfQogCQkJeXlfY3VycmVudF9zdGF0ZSA9IHl5X254dFt5eV9i
YXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlfY107CiAJCQkrK3l5X2Nw
OwogCQkJfQotCQl3aGlsZSAoIHl5X2N1cnJlbnRfc3RhdGUgIT0gODMgKTsKKwkJd2hpbGUgKCB5
eV9jdXJyZW50X3N0YXRlICE9IDg2ICk7CiAJCXl5X2NwID0geXlnLT55eV9sYXN0X2FjY2VwdGlu
Z19jcG9zOwogCQl5eV9jdXJyZW50X3N0YXRlID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19zdGF0
ZTsKIApAQCAtMTEwNiw2ICsxMTEwLDExIEBAIFlZX1JVTEVfU0VUVVAKIH0KIAlZWV9CUkVBSwog
Y2FzZSAzNjoKKy8qIHJ1bGUgMzYgY2FuIG1hdGNoIGVvbCAqLworWVlfUlVMRV9TRVRVUAoreyAr
K3l5bGluZW5vOyB9CisJWVlfQlJFQUsKK2Nhc2UgMzc6CiBZWV9SVUxFX1NFVFVQCiB7CiAgICAg
eXlsdmFsLT5hc3NpZ24oMSwgeXl0ZXh0WzBdKTsKQEAgLTExNDEsNyArMTE1MCw3IEBAIGNhc2Ug
WVlfU1RBVEVfRU9GKENPTU1FTlQpOgogICAgIHl5dGVybWluYXRlKCk7CiB9CiAJWVlfQlJFQUsK
LWNhc2UgMzc6CitjYXNlIDM4OgogWVlfUlVMRV9TRVRVUAogRUNITzsKIAlZWV9CUkVBSwpAQCAt
MTQzNyw3ICsxNDQ2LDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90
IAogCQl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0g
eXlfY3VycmVudF9zdGF0ZSApCiAJCQl7CiAJCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkgeXlf
ZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDg0ICkK
KwkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4NyApCiAJCQkJeXlfYyA9IHl5X21ldGFbKHVu
c2lnbmVkIGludCkgeXlfY107CiAJCQl9CiAJCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlf
YmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwpAQCAtMTQ2Niwx
MSArMTQ3NSwxMSBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgCiAJ
d2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9IHl5X2N1
cnJlbnRfc3RhdGUgKQogCQl7CiAJCXl5X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlf
Y3VycmVudF9zdGF0ZV07Ci0JCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4NCApCisJCWlmICgg
eXlfY3VycmVudF9zdGF0ZSA+PSA4NyApCiAJCQl5eV9jID0geXlfbWV0YVsodW5zaWduZWQgaW50
KSB5eV9jXTsKIAkJfQogCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJy
ZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwotCXl5X2lzX2phbSA9ICh5eV9jdXJy
ZW50X3N0YXRlID09IDgzKTsKKwl5eV9pc19qYW0gPSAoeXlfY3VycmVudF9zdGF0ZSA9PSA4Nik7
CiAKIAlyZXR1cm4geXlfaXNfamFtID8gMCA6IHl5X2N1cnJlbnRfc3RhdGU7CiB9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXpl
ci5sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9w
cmVwcm9jZXNzb3IvVG9rZW5pemVyLmwJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KIC8vCkBAIC0xNCw3ICsxNCw3IEBAIElGIFlPVSBNT0RJRlkgVEhJUyBGSUxFIFlPVSBB
TFNPIE5FRUQgVE8KIAogJXRvcHsKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykg
MjAxMS0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAg
LTIyOSw2ICsyMjksOCBAQCBGUkFDVElPTkFMX0NPTlNUQU5UICAoe0RJR0lUfSoiLiJ7RElHSVR9
CiAgICAgcmV0dXJuICdcbic7CiB9CiAKK1xce05FV0xJTkV9IHsgKyt5eWxpbmVubzsgfQorCiAu
IHsKICAgICB5eWx2YWwtPmFzc2lnbigxLCB5eXRleHRbMF0pOwogICAgIHJldHVybiBwcDo6VG9r
ZW46OlBQX09USEVSOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9wcmVwcm9jZXNzb3IudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3ByZXByb2Nlc3Nvci52
Y3hwcm9qCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9wcmVwcm9jZXNzb3IudmN4cHJvagkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQor
PFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9
Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQor
ICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPg0KKyAgICA8UHJvamVj
dENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0
aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZv
cm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9D
b25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1By
b2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0i
UmVsZWFzZXxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJh
dGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RD
b25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFz
ZXx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQor
ICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4N
CisgICAgPFByb2plY3RHdWlkPntGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9
PC9Qcm9qZWN0R3VpZD4NCisgICAgPFJvb3ROYW1lc3BhY2U+cHJlcHJvY2Vzc29yPC9Sb290TmFt
ZXNwYWNlPg0KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQorICA8L1Byb3BlcnR5
R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNw
cC5EZWZhdWx0LnByb3BzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJh
dGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAg
ICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlv
bj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmln
dXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1
cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQor
ICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlv
blR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8
V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4N
CisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlv
blR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Q
cm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jv
c29mdC5DcHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRp
bmdzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3Bl
cnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9Ikxv
Y2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0i
ZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4N
CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAg
PC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQor
ICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRm
b3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9z
b2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0
Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNl
ck1hY3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lv
bj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29s
dXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChDb25m
aWd1cmF0aW9uKVw8L0ludERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9y
bSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQo
Q29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikk
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlv
bilcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChD
b25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25m
aWd1cmF0aW9uKVw8L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2Fi
bGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMy
O19ERUJVRztfV0lORE9XUztfVVNSRExMO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1B
WDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQor
ICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNp
Y1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAg
ICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5Pg0K
KyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0K
KyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0
V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0
NDs0MjQ1OzQ1MTI7NDcwMjs0MjY3OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxl
U3BlY2lmaWNXYXJuaW5ncz4NCisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1EZWZpbml0aW9u
R3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFy
Z2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAg
ICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlv
bj4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19XSU5ET1dT
O19VU1JETEw7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUoUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJl
YnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5F
bmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJy
YXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBp
bGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdM
ZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50
cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJs
ZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAy
OzQ3MTg7NDI2NzslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2Fy
bmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAg
PEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGlt
aXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4
cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAgPFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO19DUlRf
U0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxp
YnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZl
bD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVl
PC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlBy
b2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNw
ZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAyOzQ3
MTg7NDI2NzslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2Fybmlu
Z3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0
ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1l
bnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxl
Pg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8
SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5z
aW9uPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X1dJTkRP
V1M7X1VTUkRMTDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9
MDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQor
ICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAg
ICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAg
ICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2Fy
bmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZv
cm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQor
ICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0
MjQ1OzQ1MTI7NDcwMjs0NzE4OzQyNjc7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2Fi
bGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRp
b25Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlhZ25v
c3RpY3NCYXNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXJlY3RpdmVIYW5k
bGVyQmFzZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlyZWN0aXZlUGFyc2Vy
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJFeHByZXNzaW9uUGFyc2VyLmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbnB1dC5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iTGV4ZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ik1hY3Jv
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJNYWNyb0V4cGFuZGVyLmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQcmVwcm9jZXNzb3IuY3BwIiAvPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IlRva2VuLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJU
b2tlbml6ZXIuY3BwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Imxlbmd0aF9saW1pdHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJEaWFnbm9zdGljc0Jhc2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJE
aXJlY3RpdmVIYW5kbGVyQmFzZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpcmVj
dGl2ZVBhcnNlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkV4cHJlc3Npb25QYXJz
ZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbnB1dC5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IkxleGVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTWFj
cm8uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJNYWNyb0V4cGFuZGVyLmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibnVtZXJpY19sZXguaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJwcF91dGlscy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlByZXBy
b2Nlc3Nvci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNvdXJjZUxvY2F0aW9uLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVG9rZW4uaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJUb2tlbml6ZXIuaCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91
cD4NCisgICAgPE5vbmUgSW5jbHVkZT0iVG9rZW5pemVyLmwiIC8+DQorICA8L0l0ZW1Hcm91cD4N
CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdl
dHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KKyAgPC9J
bXBvcnRHcm91cD4NCis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcmVw
cm9jZXNzb3IudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHByb2ouZmls
dGVycwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMDAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04
Ij8+DQorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5t
aWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91cD4NCisg
ICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlm
aWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlm
aWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0
O2FzbTthc214PC9FeHRlbnNpb25zPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNs
dWRlPSJIZWFkZXIgRmlsZXMiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04
OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICAgIDxF
eHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4NCisgICAgPC9G
aWx0ZXI+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iRGlyZWN0aXZlUGFyc2VyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
RXhwcmVzc2lvblBhcnNlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IklucHV0LmNw
cCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBp
bGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iTGV4ZXIuY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSJNYWNyby5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ik1hY3JvRXhw
YW5kZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQcmVwcm9jZXNzb3IuY3BwIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJUb2tlbi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IlRva2VuaXplci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpYWdub3N0
aWNzQmFzZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpcmVjdGl2ZUhhbmRsZXJC
YXNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iRGlyZWN0aXZlUGFyc2VyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IkV4cHJlc3Npb25QYXJzZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5wdXQuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTGV4ZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iTWFjcm8uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTWFjcm9FeHBhbmRlci5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJudW1lcmljX2xleC5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJwcF91dGlscy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJQcmVw
cm9jZXNzb3IuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU291cmNlTG9jYXRpb24uaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVG9rZW4uaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iVG9rZW5pemVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Imxlbmd0aF9saW1p
dHMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGlhZ25vc3RpY3NCYXNlLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpcmVjdGl2ZUhhbmRsZXJCYXNlLmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgPC9JdGVt
R3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJUb2tlbml6ZXIubCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9Ob25lPg0KKyAg
PC9JdGVtR3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90aW1pbmcvUmVzdHJpY3RW
ZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwCShy
ZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAsOCArMTAsOCBAQCB2b2lkIFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nOjp2aXNpdFN5CiB7
CiAgICAgaWYgKElzU2FtcGxlcihub2RlLT5nZXRCYXNpY1R5cGUoKSkpIHsKICAgICAgICAgKytt
TnVtRXJyb3JzOwotICAgICAgICBtU2luay5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAgICAgICAg
bVNpbmsubG9jYXRpb24obm9kZS0+Z2V0TGluZSgpKTsKLSAgICAgICAgbVNpbmsgPDwgIlNhbXBs
ZXJzIGFyZSBub3QgcGVybWl0dGVkIGluIHZlcnRleCBzaGFkZXJzLlxuIjsKKyAgICAgICAgbVNp
bmsubWVzc2FnZShFUHJlZml4RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0
TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICJTYW1wbGVycyBhcmUgbm90IHBlcm1pdHRl
ZCBpbiB2ZXJ0ZXggc2hhZGVycyIpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJFR0wvQ29uZmlnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliRUdML0NvbmZpZy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0NvbmZpZy5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzQwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBDb25maWcuY3BwOiBJbXBsZW1l
bnRzIHRoZSBlZ2w6OkNvbmZpZyBjbGFzcywgZGVzY3JpYmluZyB0aGUgZm9ybWF0LCB0eXBlCisv
LyBhbmQgc2l6ZSBmb3IgYW4gZWdsOjpTdXJmYWNlLiBJbXBsZW1lbnRzIEVHTENvbmZpZyBhbmQg
cmVsYXRlZCBmdW5jdGlvbmFsaXR5LgorLy8gW0VHTCAxLjRdIHNlY3Rpb24gMy40IHBhZ2UgMTUu
CisKKyNpbmNsdWRlICJsaWJFR0wvQ29uZmlnLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+Cisj
aW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xF
UzIvZ2wyZXh0Lmg+CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKwordXNpbmcgbmFtZXNw
YWNlIHN0ZDsKKworbmFtZXNwYWNlIGVnbAoreworQ29uZmlnOjpDb25maWcocng6OkNvbmZpZ0Rl
c2MgZGVzYywgRUdMaW50IG1pbkludGVydmFsLCBFR0xpbnQgbWF4SW50ZXJ2YWwsIEVHTGludCB0
ZXhXaWR0aCwgRUdMaW50IHRleEhlaWdodCkKKyAgICA6IG1SZW5kZXJUYXJnZXRGb3JtYXQoZGVz
Yy5yZW5kZXJUYXJnZXRGb3JtYXQpLCBtRGVwdGhTdGVuY2lsRm9ybWF0KGRlc2MuZGVwdGhTdGVu
Y2lsRm9ybWF0KSwgbU11bHRpU2FtcGxlKGRlc2MubXVsdGlTYW1wbGUpCit7CisgICAgbUJpbmRU
b1RleHR1cmVSR0IgPSBFR0xfRkFMU0U7CisgICAgbUJpbmRUb1RleHR1cmVSR0JBID0gRUdMX0ZB
TFNFOworICAgIHN3aXRjaCAoZGVzYy5yZW5kZXJUYXJnZXRGb3JtYXQpCisgICAgeworICAgICAg
Y2FzZSBHTF9SR0I1X0ExOgorICAgICAgICBtQnVmZmVyU2l6ZSA9IDE2OworICAgICAgICBtUmVk
U2l6ZSA9IDU7CisgICAgICAgIG1HcmVlblNpemUgPSA1OworICAgICAgICBtQmx1ZVNpemUgPSA1
OworICAgICAgICBtQWxwaGFTaXplID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X1JHQkE4X09FUzoKKyAgICAgICAgbUJ1ZmZlclNpemUgPSAzMjsKKyAgICAgICAgbVJlZFNpemUg
PSA4OworICAgICAgICBtR3JlZW5TaXplID0gODsKKyAgICAgICAgbUJsdWVTaXplID0gODsKKyAg
ICAgICAgbUFscGhhU2l6ZSA9IDg7CisgICAgICAgIG1CaW5kVG9UZXh0dXJlUkdCQSA9IHRydWU7
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0I1NjU6CisgICAgICAgIG1CdWZmZXJT
aXplID0gMTY7CisgICAgICAgIG1SZWRTaXplID0gNTsKKyAgICAgICAgbUdyZWVuU2l6ZSA9IDY7
CisgICAgICAgIG1CbHVlU2l6ZSA9IDU7CisgICAgICAgIG1BbHBoYVNpemUgPSAwOworICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICAgIG1CdWZmZXJTaXplID0g
MzI7CisgICAgICAgIG1SZWRTaXplID0gODsKKyAgICAgICAgbUdyZWVuU2l6ZSA9IDg7CisgICAg
ICAgIG1CbHVlU2l6ZSA9IDg7CisgICAgICAgIG1BbHBoYVNpemUgPSAwOworICAgICAgICBtQmlu
ZFRvVGV4dHVyZVJHQiA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9CR1JB
OF9FWFQ6CisgICAgICAgIG1CdWZmZXJTaXplID0gMzI7CisgICAgICAgIG1SZWRTaXplID0gODsK
KyAgICAgICAgbUdyZWVuU2l6ZSA9IDg7CisgICAgICAgIG1CbHVlU2l6ZSA9IDg7CisgICAgICAg
IG1BbHBoYVNpemUgPSA4OworICAgICAgICBtQmluZFRvVGV4dHVyZVJHQkEgPSB0cnVlOworICAg
ICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7ICAgLy8g
T3RoZXIgZm9ybWF0cyBzaG91bGQgbm90IGJlIHZhbGlkCisgICAgfQorCisgICAgbUx1bWluYW5j
ZVNpemUgPSAwOworICAgIG1BbHBoYU1hc2tTaXplID0gMDsKKyAgICBtQ29sb3JCdWZmZXJUeXBl
ID0gRUdMX1JHQl9CVUZGRVI7CisgICAgbUNvbmZpZ0NhdmVhdCA9IChkZXNjLmZhc3RDb25maWcp
ID8gRUdMX05PTkUgOiBFR0xfU0xPV19DT05GSUc7CisgICAgbUNvbmZpZ0lEID0gMDsKKyAgICBt
Q29uZm9ybWFudCA9IEVHTF9PUEVOR0xfRVMyX0JJVDsKKworICAgIHN3aXRjaCAoZGVzYy5kZXB0
aFN0ZW5jaWxGb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgICBtRGVw
dGhTaXplID0gMDsKKyAgICAgICAgbVN0ZW5jaWxTaXplID0gMDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzoKKyAgICAgICAgbURlcHRoU2l6ZSA9
IDMyOworICAgICAgICBtU3RlbmNpbFNpemUgPSAwOworICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM6CisgICAgICAgIG1EZXB0aFNpemUgPSAyNDsKKyAg
ICAgICAgbVN0ZW5jaWxTaXplID0gODsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0RF
UFRIX0NPTVBPTkVOVDI0X09FUzoKKyAgICAgICAgbURlcHRoU2l6ZSA9IDI0OworICAgICAgICBt
U3RlbmNpbFNpemUgPSAwOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfREVQVEhfQ09N
UE9ORU5UMTY6CisgICAgICAgIG1EZXB0aFNpemUgPSAxNjsKKyAgICAgICAgbVN0ZW5jaWxTaXpl
ID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJM
RSgpOworICAgIH0KKworICAgIG1MZXZlbCA9IDA7CisgICAgbU1hdGNoTmF0aXZlUGl4bWFwID0g
RUdMX05PTkU7CisgICAgbU1heFBCdWZmZXJXaWR0aCA9IHRleFdpZHRoOworICAgIG1NYXhQQnVm
ZmVySGVpZ2h0ID0gdGV4SGVpZ2h0OworICAgIG1NYXhQQnVmZmVyUGl4ZWxzID0gdGV4V2lkdGgq
dGV4SGVpZ2h0OworICAgIG1NYXhTd2FwSW50ZXJ2YWwgPSBtYXhJbnRlcnZhbDsKKyAgICBtTWlu
U3dhcEludGVydmFsID0gbWluSW50ZXJ2YWw7CisgICAgbU5hdGl2ZVJlbmRlcmFibGUgPSBFR0xf
RkFMU0U7CisgICAgbU5hdGl2ZVZpc3VhbElEID0gMDsKKyAgICBtTmF0aXZlVmlzdWFsVHlwZSA9
IDA7CisgICAgbVJlbmRlcmFibGVUeXBlID0gRUdMX09QRU5HTF9FUzJfQklUOworICAgIG1TYW1w
bGVCdWZmZXJzID0gZGVzYy5tdWx0aVNhbXBsZSA/IDEgOiAwOworICAgIG1TYW1wbGVzID0gZGVz
Yy5tdWx0aVNhbXBsZTsKKyAgICBtU3VyZmFjZVR5cGUgPSBFR0xfUEJVRkZFUl9CSVQgfCBFR0xf
V0lORE9XX0JJVCB8IEVHTF9TV0FQX0JFSEFWSU9SX1BSRVNFUlZFRF9CSVQ7CisgICAgbVRyYW5z
cGFyZW50VHlwZSA9IEVHTF9OT05FOworICAgIG1UcmFuc3BhcmVudFJlZFZhbHVlID0gMDsKKyAg
ICBtVHJhbnNwYXJlbnRHcmVlblZhbHVlID0gMDsKKyAgICBtVHJhbnNwYXJlbnRCbHVlVmFsdWUg
PSAwOworfQorCitFR0xDb25maWcgQ29uZmlnOjpnZXRIYW5kbGUoKSBjb25zdAoreworICAgIHJl
dHVybiAoRUdMQ29uZmlnKShzaXplX3QpbUNvbmZpZ0lEOworfQorCitTb3J0Q29uZmlnOjpTb3J0
Q29uZmlnKGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCkKKyAgICA6IG1XYW50UmVkKGZhbHNlKSwg
bVdhbnRHcmVlbihmYWxzZSksIG1XYW50Qmx1ZShmYWxzZSksIG1XYW50QWxwaGEoZmFsc2UpLCBt
V2FudEx1bWluYW5jZShmYWxzZSkKK3sKKyAgICBzY2FuRm9yV2FudGVkQ29tcG9uZW50cyhhdHRy
aWJMaXN0KTsKK30KKwordm9pZCBTb3J0Q29uZmlnOjpzY2FuRm9yV2FudGVkQ29tcG9uZW50cyhj
b25zdCBFR0xpbnQgKmF0dHJpYkxpc3QpCit7CisgICAgLy8gW0VHTF0gc2VjdGlvbiAzLjQuMSBw
YWdlIDI0CisgICAgLy8gU29ydGluZyBydWxlICMzOiBieSBsYXJnZXIgdG90YWwgbnVtYmVyIG9m
IGNvbG9yIGJpdHMsIG5vdCBjb25zaWRlcmluZworICAgIC8vIGNvbXBvbmVudHMgdGhhdCBhcmUg
MCBvciBkb24ndC1jYXJlLgorICAgIGZvciAoY29uc3QgRUdMaW50ICphdHRyID0gYXR0cmliTGlz
dDsgYXR0clswXSAhPSBFR0xfTk9ORTsgYXR0ciArPSAyKQorICAgIHsKKyAgICAgICAgaWYgKGF0
dHJbMV0gIT0gMCAmJiBhdHRyWzFdICE9IEVHTF9ET05UX0NBUkUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoYXR0clswXSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2Fz
ZSBFR0xfUkVEX1NJWkU6ICAgICAgIG1XYW50UmVkID0gdHJ1ZTsgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgRUdMX0dSRUVOX1NJWkU6ICAgICBtV2FudEdyZWVuID0gdHJ1ZTsgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgRUdMX0JMVUVfU0laRTogICAgICBtV2FudEJsdWUgPSB0cnVlOyBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfQUxQSEFfU0laRTogICAgIG1XYW50QWxwaGEg
PSB0cnVlOyBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfTFVNSU5BTkNFX1NJWkU6IG1X
YW50THVtaW5hbmNlID0gdHJ1ZTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK0VHTGludCBTb3J0Q29uZmlnOjp3YW50ZWRDb21wb25lbnRzU2l6ZShjb25zdCBD
b25maWcgJmNvbmZpZykgY29uc3QKK3sKKyAgICBFR0xpbnQgdG90YWwgPSAwOworCisgICAgaWYg
KG1XYW50UmVkKSAgICAgICB0b3RhbCArPSBjb25maWcubVJlZFNpemU7CisgICAgaWYgKG1XYW50
R3JlZW4pICAgICB0b3RhbCArPSBjb25maWcubUdyZWVuU2l6ZTsKKyAgICBpZiAobVdhbnRCbHVl
KSAgICAgIHRvdGFsICs9IGNvbmZpZy5tQmx1ZVNpemU7CisgICAgaWYgKG1XYW50QWxwaGEpICAg
ICB0b3RhbCArPSBjb25maWcubUFscGhhU2l6ZTsKKyAgICBpZiAobVdhbnRMdW1pbmFuY2UpIHRv
dGFsICs9IGNvbmZpZy5tTHVtaW5hbmNlU2l6ZTsKKworICAgIHJldHVybiB0b3RhbDsKK30KKwor
Ym9vbCBTb3J0Q29uZmlnOjpvcGVyYXRvcigpKGNvbnN0IENvbmZpZyAqeCwgY29uc3QgQ29uZmln
ICp5KSBjb25zdAoreworICAgIHJldHVybiAoKnRoaXMpKCp4LCAqeSk7Cit9CisKK2Jvb2wgU29y
dENvbmZpZzo6b3BlcmF0b3IoKShjb25zdCBDb25maWcgJngsIGNvbnN0IENvbmZpZyAmeSkgY29u
c3QKK3sKKyAgICAjZGVmaW5lIFNPUlQoYXR0cmlidXRlKSAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgaWYgKHguYXR0cmlidXRlICE9IHkuYXR0cmlidXRlKSAgICAgICAgICAgIFwK
KyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIHJldHVybiB4LmF0dHJpYnV0ZSA8IHkuYXR0cmlidXRlOyAgICAgIFwKKyAgICAg
ICAgfQorCisgICAgTUVUQV9BU1NFUlQoRUdMX05PTkUgPCBFR0xfU0xPV19DT05GSUcgJiYgRUdM
X1NMT1dfQ09ORklHIDwgRUdMX05PTl9DT05GT1JNQU5UX0NPTkZJRyk7CisgICAgU09SVChtQ29u
ZmlnQ2F2ZWF0KTsKKworICAgIE1FVEFfQVNTRVJUKEVHTF9SR0JfQlVGRkVSIDwgRUdMX0xVTUlO
QU5DRV9CVUZGRVIpOworICAgIFNPUlQobUNvbG9yQnVmZmVyVHlwZSk7CisKKyAgICAvLyBCeSBs
YXJnZXIgdG90YWwgbnVtYmVyIG9mIGNvbG9yIGJpdHMsIG9ubHkgY29uc2lkZXJpbmcgdGhvc2Ug
dGhhdCBhcmUgcmVxdWVzdGVkIHRvIGJlID4gMC4KKyAgICBFR0xpbnQgeENvbXBvbmVudHNTaXpl
ID0gd2FudGVkQ29tcG9uZW50c1NpemUoeCk7CisgICAgRUdMaW50IHlDb21wb25lbnRzU2l6ZSA9
IHdhbnRlZENvbXBvbmVudHNTaXplKHkpOworICAgIGlmICh4Q29tcG9uZW50c1NpemUgIT0geUNv
bXBvbmVudHNTaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHhDb21wb25lbnRzU2l6ZSA+IHlD
b21wb25lbnRzU2l6ZTsKKyAgICB9CisKKyAgICBTT1JUKG1CdWZmZXJTaXplKTsKKyAgICBTT1JU
KG1TYW1wbGVCdWZmZXJzKTsKKyAgICBTT1JUKG1TYW1wbGVzKTsKKyAgICBTT1JUKG1EZXB0aFNp
emUpOworICAgIFNPUlQobVN0ZW5jaWxTaXplKTsKKyAgICBTT1JUKG1BbHBoYU1hc2tTaXplKTsK
KyAgICBTT1JUKG1OYXRpdmVWaXN1YWxUeXBlKTsKKyAgICBTT1JUKG1Db25maWdJRCk7CisKKyAg
ICAjdW5kZWYgU09SVAorCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBXZSdkIGxpa2UgdG8g
dXNlIFNvcnRDb25maWcgdG8gYWxzbyBlbGltaW5hdGUgZHVwbGljYXRlIGNvbmZpZ3MuCisvLyBU
aGlzIHdvcmtzIGFzIGxvbmcgYXMgd2UgbmV2ZXIgaGF2ZSB0d28gY29uZmlncyB3aXRoIGRpZmZl
cmVudCBwZXItUkdCLWNvbXBvbmVudCBsYXlvdXRzLAorLy8gYnV0IHRoZSBzYW1lIHRvdGFsLgor
Ly8gNTU1MSBhbmQgNTY1IGFyZSBkaWZmZXJlbnQgYmVjYXVzZSBSK0crQiBpcyBkaWZmZXJlbnQu
CisvLyA1NTUxIGFuZCA1NTUgYXJlIGRpZmZlcmVudCBiZWNhdXNlIGJ1ZmZlclNpemUgaXMgZGlm
ZmVyZW50LgorY29uc3QgRUdMaW50IENvbmZpZ1NldDo6bVNvcnRBdHRyaWJzW10gPQoreworICAg
IEVHTF9SRURfU0laRSwgMSwKKyAgICBFR0xfR1JFRU5fU0laRSwgMSwKKyAgICBFR0xfQkxVRV9T
SVpFLCAxLAorICAgIEVHTF9MVU1JTkFOQ0VfU0laRSwgMSwKKyAgICAvLyBCVVQgTk9UIEFMUEhB
CisgICAgRUdMX05PTkUKK307CisKK0NvbmZpZ1NldDo6Q29uZmlnU2V0KCkKKyAgICA6IG1TZXQo
U29ydENvbmZpZyhtU29ydEF0dHJpYnMpKQoreworfQorCit2b2lkIENvbmZpZ1NldDo6YWRkKHJ4
OjpDb25maWdEZXNjIGRlc2MsIEVHTGludCBtaW5Td2FwSW50ZXJ2YWwsIEVHTGludCBtYXhTd2Fw
SW50ZXJ2YWwsIEVHTGludCB0ZXhXaWR0aCwgRUdMaW50IHRleEhlaWdodCkKK3sKKyAgICBDb25m
aWcgY29uZmlnKGRlc2MsIG1pblN3YXBJbnRlcnZhbCwgbWF4U3dhcEludGVydmFsLCB0ZXhXaWR0
aCwgdGV4SGVpZ2h0KTsKKyAgICBtU2V0Lmluc2VydChjb25maWcpOworfQorCitzaXplX3QgQ29u
ZmlnU2V0OjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNldC5zaXplKCk7Cit9CisKK2Jv
b2wgQ29uZmlnU2V0OjpnZXRDb25maWdzKEVHTENvbmZpZyAqY29uZmlncywgY29uc3QgRUdMaW50
ICphdHRyaWJMaXN0LCBFR0xpbnQgY29uZmlnU2l6ZSwgRUdMaW50ICpudW1Db25maWcpCit7Cisg
ICAgdmVjdG9yPGNvbnN0IENvbmZpZyo+IHBhc3NlZDsKKyAgICBwYXNzZWQucmVzZXJ2ZShtU2V0
LnNpemUoKSk7CisKKyAgICBmb3IgKEl0ZXJhdG9yIGNvbmZpZyA9IG1TZXQuYmVnaW4oKTsgY29u
ZmlnICE9IG1TZXQuZW5kKCk7IGNvbmZpZysrKQorICAgIHsKKyAgICAgICAgYm9vbCBtYXRjaCA9
IHRydWU7CisgICAgICAgIGNvbnN0IEVHTGludCAqYXR0cmlidXRlID0gYXR0cmliTGlzdDsKKwor
ICAgICAgICB3aGlsZSAoYXR0cmlidXRlWzBdICE9IEVHTF9OT05FKQorICAgICAgICB7CisgICAg
ICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0ZVswXSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgY2FzZSBFR0xfQlVGRkVSX1NJWkU6ICAgICAgICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1C
dWZmZXJTaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgRUdMX0FMUEhBX1NJWkU6ICAgICAgICAgICAgICAgIG1hdGNoID0g
Y29uZmlnLT5tQWxwaGFTaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9CTFVFX1NJWkU6ICAgICAgICAgICAgICAg
ICBtYXRjaCA9IGNvbmZpZy0+bUJsdWVTaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfR1JFRU5fU0laRTogICAg
ICAgICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1HcmVlblNpemUgPj0gYXR0cmlidXRlWzFdOyAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX1JFRF9T
SVpFOiAgICAgICAgICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tUmVkU2l6ZSA+PSBhdHRyaWJ1
dGVbMV07ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IEVHTF9ERVBUSF9TSVpFOiAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bURlcHRoU2l6
ZSA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgY2FzZSBFR0xfU1RFTkNJTF9TSVpFOiAgICAgICAgICAgICAgbWF0Y2ggPSBjb25maWct
Pm1TdGVuY2lsU2l6ZSA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgRUdMX0NPTkZJR19DQVZFQVQ6ICAgICAgICAgICAgIG1hdGNo
ID0gY29uZmlnLT5tQ29uZmlnQ2F2ZWF0ID09IChFR0xlbnVtKSBhdHRyaWJ1dGVbMV07ICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9DT05GSUdfSUQ6ICAgICAgICAgICAg
ICAgICBtYXRjaCA9IGNvbmZpZy0+bUNvbmZpZ0lEID09IGF0dHJpYnV0ZVsxXTsgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfTEVWRUw6ICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1MZXZlbCA+PSBhdHRyaWJ1dGVbMV07ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX05B
VElWRV9SRU5ERVJBQkxFOiAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tTmF0aXZlUmVuZGVyYWJs
ZSA9PSAoRUdMQm9vbGVhbikgYXR0cmlidXRlWzFdOyAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIEVHTF9OQVRJVkVfVklTVUFMX1RZUEU6ICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bU5hdGl2
ZVZpc3VhbFR5cGUgPT0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSBFR0xfU0FNUExFUzogICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBjb25m
aWctPm1TYW1wbGVzID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX1NBTVBMRV9CVUZGRVJTOiAgICAgICAgICAgIG1h
dGNoID0gY29uZmlnLT5tU2FtcGxlQnVmZmVycyA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9TVVJGQUNFX1RZUEU6ICAgICAg
ICAgICAgICBtYXRjaCA9IChjb25maWctPm1TdXJmYWNlVHlwZSAmIGF0dHJpYnV0ZVsxXSkgPT0g
YXR0cmlidXRlWzFdOyAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfVFJBTlNQQVJF
TlRfVFlQRTogICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1UcmFuc3BhcmVudFR5cGUgPT0gKEVH
TGVudW0pIGF0dHJpYnV0ZVsxXTsgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdM
X1RSQU5TUEFSRU5UX0JMVUVfVkFMVUU6ICAgIG1hdGNoID0gY29uZmlnLT5tVHJhbnNwYXJlbnRC
bHVlVmFsdWUgPT0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIEVHTF9UUkFOU1BBUkVOVF9HUkVFTl9WQUxVRTogICBtYXRjaCA9IGNvbmZpZy0+bVRy
YW5zcGFyZW50R3JlZW5WYWx1ZSA9PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSBFR0xfVFJBTlNQQVJFTlRfUkVEX1ZBTFVFOiAgICAgbWF0Y2ggPSBj
b25maWctPm1UcmFuc3BhcmVudFJlZFZhbHVlID09IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0I6ICAgICAg
IG1hdGNoID0gY29uZmlnLT5tQmluZFRvVGV4dHVyZVJHQiA9PSAoRUdMQm9vbGVhbikgYXR0cmli
dXRlWzFdOyAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9CSU5EX1RPX1RFWFRVUkVf
UkdCQTogICAgICBtYXRjaCA9IGNvbmZpZy0+bUJpbmRUb1RleHR1cmVSR0JBID09IChFR0xCb29s
ZWFuKSBhdHRyaWJ1dGVbMV07ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfTUlOX1NX
QVBfSU5URVJWQUw6ICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1NaW5Td2FwSW50ZXJ2YWwgPT0g
YXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
RUdMX01BWF9TV0FQX0lOVEVSVkFMOiAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tTWF4U3dhcElu
dGVydmFsID09IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIEVHTF9MVU1JTkFOQ0VfU0laRTogICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy0+
bUx1bWluYW5jZVNpemUgPj0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBFR0xfQUxQSEFfTUFTS19TSVpFOiAgICAgICAgICAgbWF0Y2gg
PSBjb25maWctPm1BbHBoYU1hc2tTaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0NPTE9SX0JVRkZFUl9UWVBFOiAgICAg
ICAgIG1hdGNoID0gY29uZmlnLT5tQ29sb3JCdWZmZXJUeXBlID09IChFR0xlbnVtKSBhdHRyaWJ1
dGVbMV07ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9SRU5ERVJBQkxFX1RZ
UEU6ICAgICAgICAgICBtYXRjaCA9IChjb25maWctPm1SZW5kZXJhYmxlVHlwZSAmIGF0dHJpYnV0
ZVsxXSkgPT0gYXR0cmlidXRlWzFdOyBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfTUFU
Q0hfTkFUSVZFX1BJWE1BUDogICAgICAgbWF0Y2ggPSBmYWxzZTsgVU5JTVBMRU1FTlRFRCgpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgRUdMX0NPTkZPUk1BTlQ6ICAgICAgICAgICAgICAgIG1hdGNoID0gKGNvbmZpZy0+bUNvbmZv
cm1hbnQgJiBhdHRyaWJ1dGVbMV0pID09IGF0dHJpYnV0ZVsxXTsgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9XSURUSDogICAgICAgICBtYXRjaCA9IGNvbmZp
Zy0+bU1heFBCdWZmZXJXaWR0aCA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfTUFYX1BCVUZGRVJfSEVJR0hUOiAgICAgICAgbWF0
Y2ggPSBjb25maWctPm1NYXhQQnVmZmVySGVpZ2h0ID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX1BJWEVMUzog
ICAgICAgIG1hdGNoID0gY29uZmlnLT5tTWF4UEJ1ZmZlclBpeGVscyA+PSBhdHRyaWJ1dGVbMV07
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFt
YXRjaCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgYXR0cmlidXRlICs9IDI7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAobWF0Y2gpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBhc3NlZC5wdXNoX2JhY2soJipjb25m
aWcpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGNvbmZpZ3MpCisgICAgeworICAgICAg
ICBzb3J0KHBhc3NlZC5iZWdpbigpLCBwYXNzZWQuZW5kKCksIFNvcnRDb25maWcoYXR0cmliTGlz
dCkpOworCisgICAgICAgIEVHTGludCBpbmRleDsKKyAgICAgICAgZm9yIChpbmRleCA9IDA7IGlu
ZGV4IDwgY29uZmlnU2l6ZSAmJiBpbmRleCA8IHN0YXRpY19jYXN0PEVHTGludD4ocGFzc2VkLnNp
emUoKSk7IGluZGV4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbmZpZ3NbaW5kZXhdID0g
cGFzc2VkW2luZGV4XS0+Z2V0SGFuZGxlKCk7CisgICAgICAgIH0KKworICAgICAgICAqbnVtQ29u
ZmlnID0gaW5kZXg7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgICpudW1Db25maWcg
PSBwYXNzZWQuc2l6ZSgpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitjb25zdCBl
Z2w6OkNvbmZpZyAqQ29uZmlnU2V0OjpnZXQoRUdMQ29uZmlnIGNvbmZpZ0hhbmRsZSkKK3sKKyAg
ICBmb3IgKEl0ZXJhdG9yIGNvbmZpZyA9IG1TZXQuYmVnaW4oKTsgY29uZmlnICE9IG1TZXQuZW5k
KCk7IGNvbmZpZysrKQorICAgIHsKKyAgICAgICAgaWYgKGNvbmZpZy0+Z2V0SGFuZGxlKCkgPT0g
Y29uZmlnSGFuZGxlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gJigqY29uZmlnKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorfQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9Db25maWcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0NvbmZpZy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9Db25maWcuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMTUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIENvbmZpZy5oOiBEZWZp
bmVzIHRoZSBlZ2w6OkNvbmZpZyBjbGFzcywgZGVzY3JpYmluZyB0aGUgZm9ybWF0LCB0eXBlCisv
LyBhbmQgc2l6ZSBmb3IgYW4gZWdsOjpTdXJmYWNlLiBJbXBsZW1lbnRzIEVHTENvbmZpZyBhbmQg
cmVsYXRlZCBmdW5jdGlvbmFsaXR5LgorLy8gW0VHTCAxLjRdIHNlY3Rpb24gMy40IHBhZ2UgMTUu
CisKKyNpZm5kZWYgSU5DTFVERV9DT05GSUdfSF8KKyNkZWZpbmUgSU5DTFVERV9DT05GSUdfSF8K
KworI2RlZmluZSBFR0xBUEkKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisKKyNpbmNsdWRlIDxzZXQ+
CisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJj
b21tb24vYW5nbGV1dGlscy5oIgorCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBEaXNwbGF5Owor
CitjbGFzcyBDb25maWcKK3sKKyAgcHVibGljOgorICAgIENvbmZpZyhyeDo6Q29uZmlnRGVzYyBk
ZXNjLCBFR0xpbnQgbWluU3dhcEludGVydmFsLCBFR0xpbnQgbWF4U3dhcEludGVydmFsLCBFR0xp
bnQgdGV4V2lkdGgsIEVHTGludCB0ZXhIZWlnaHQpOworCisgICAgRUdMQ29uZmlnIGdldEhhbmRs
ZSgpIGNvbnN0OworCisgICAgY29uc3QgR0xlbnVtIG1SZW5kZXJUYXJnZXRGb3JtYXQ7CisgICAg
Y29uc3QgR0xlbnVtIG1EZXB0aFN0ZW5jaWxGb3JtYXQ7CisgICAgY29uc3QgR0xpbnQgbU11bHRp
U2FtcGxlOworCisgICAgRUdMaW50IG1CdWZmZXJTaXplOyAgICAgICAgICAgICAgLy8gRGVwdGgg
b2YgdGhlIGNvbG9yIGJ1ZmZlcgorICAgIEVHTGludCBtUmVkU2l6ZTsgICAgICAgICAgICAgICAg
IC8vIEJpdHMgb2YgUmVkIGluIHRoZSBjb2xvciBidWZmZXIKKyAgICBFR0xpbnQgbUdyZWVuU2l6
ZTsgICAgICAgICAgICAgICAvLyBCaXRzIG9mIEdyZWVuIGluIHRoZSBjb2xvciBidWZmZXIKKyAg
ICBFR0xpbnQgbUJsdWVTaXplOyAgICAgICAgICAgICAgICAvLyBCaXRzIG9mIEJsdWUgaW4gdGhl
IGNvbG9yIGJ1ZmZlcgorICAgIEVHTGludCBtTHVtaW5hbmNlU2l6ZTsgICAgICAgICAgIC8vIEJp
dHMgb2YgTHVtaW5hbmNlIGluIHRoZSBjb2xvciBidWZmZXIKKyAgICBFR0xpbnQgbUFscGhhU2l6
ZTsgICAgICAgICAgICAgICAvLyBCaXRzIG9mIEFscGhhIGluIHRoZSBjb2xvciBidWZmZXIKKyAg
ICBFR0xpbnQgbUFscGhhTWFza1NpemU7ICAgICAgICAgICAvLyBCaXRzIG9mIEFscGhhIE1hc2sg
aW4gdGhlIG1hc2sgYnVmZmVyCisgICAgRUdMQm9vbGVhbiBtQmluZFRvVGV4dHVyZVJHQjsgICAg
Ly8gVHJ1ZSBpZiBiaW5kYWJsZSB0byBSR0IgdGV4dHVyZXMuCisgICAgRUdMQm9vbGVhbiBtQmlu
ZFRvVGV4dHVyZVJHQkE7ICAgLy8gVHJ1ZSBpZiBiaW5kYWJsZSB0byBSR0JBIHRleHR1cmVzLgor
ICAgIEVHTGVudW0gbUNvbG9yQnVmZmVyVHlwZTsgICAgICAgIC8vIENvbG9yIGJ1ZmZlciB0eXBl
CisgICAgRUdMZW51bSBtQ29uZmlnQ2F2ZWF0OyAgICAgICAgICAgLy8gQW55IGNhdmVhdHMgZm9y
IHRoZSBjb25maWd1cmF0aW9uCisgICAgRUdMaW50IG1Db25maWdJRDsgICAgICAgICAgICAgICAg
Ly8gVW5pcXVlIEVHTENvbmZpZyBpZGVudGlmaWVyCisgICAgRUdMaW50IG1Db25mb3JtYW50OyAg
ICAgICAgICAgICAgLy8gV2hldGhlciBjb250ZXh0cyBjcmVhdGVkIHdpdGggdGhpcyBjb25maWcg
YXJlIGNvbmZvcm1hbnQKKyAgICBFR0xpbnQgbURlcHRoU2l6ZTsgICAgICAgICAgICAgICAvLyBC
aXRzIG9mIFogaW4gdGhlIGRlcHRoIGJ1ZmZlcgorICAgIEVHTGludCBtTGV2ZWw7ICAgICAgICAg
ICAgICAgICAgIC8vIEZyYW1lIGJ1ZmZlciBsZXZlbAorICAgIEVHTEJvb2xlYW4gbU1hdGNoTmF0
aXZlUGl4bWFwOyAgIC8vIE1hdGNoIHRoZSBuYXRpdmUgcGl4bWFwIGZvcm1hdAorICAgIEVHTGlu
dCBtTWF4UEJ1ZmZlcldpZHRoOyAgICAgICAgIC8vIE1heGltdW0gd2lkdGggb2YgcGJ1ZmZlcgor
ICAgIEVHTGludCBtTWF4UEJ1ZmZlckhlaWdodDsgICAgICAgIC8vIE1heGltdW0gaGVpZ2h0IG9m
IHBidWZmZXIKKyAgICBFR0xpbnQgbU1heFBCdWZmZXJQaXhlbHM7ICAgICAgICAvLyBNYXhpbXVt
IHNpemUgb2YgcGJ1ZmZlcgorICAgIEVHTGludCBtTWF4U3dhcEludGVydmFsOyAgICAgICAgIC8v
IE1heGltdW0gc3dhcCBpbnRlcnZhbAorICAgIEVHTGludCBtTWluU3dhcEludGVydmFsOyAgICAg
ICAgIC8vIE1pbmltdW0gc3dhcCBpbnRlcnZhbAorICAgIEVHTEJvb2xlYW4gbU5hdGl2ZVJlbmRl
cmFibGU7ICAgIC8vIEVHTF9UUlVFIGlmIG5hdGl2ZSByZW5kZXJpbmcgQVBJcyBjYW4gcmVuZGVy
IHRvIHN1cmZhY2UKKyAgICBFR0xpbnQgbU5hdGl2ZVZpc3VhbElEOyAgICAgICAgICAvLyBIYW5k
bGUgb2YgY29ycmVzcG9uZGluZyBuYXRpdmUgdmlzdWFsCisgICAgRUdMaW50IG1OYXRpdmVWaXN1
YWxUeXBlOyAgICAgICAgLy8gTmF0aXZlIHZpc3VhbCB0eXBlIG9mIHRoZSBhc3NvY2lhdGVkIHZp
c3VhbAorICAgIEVHTGludCBtUmVuZGVyYWJsZVR5cGU7ICAgICAgICAgIC8vIFdoaWNoIGNsaWVu
dCByZW5kZXJpbmcgQVBJcyBhcmUgc3VwcG9ydGVkLgorICAgIEVHTGludCBtU2FtcGxlQnVmZmVy
czsgICAgICAgICAgIC8vIE51bWJlciBvZiBtdWx0aXNhbXBsZSBidWZmZXJzCisgICAgRUdMaW50
IG1TYW1wbGVzOyAgICAgICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHNhbXBsZXMgcGVyIHBpeGVs
CisgICAgRUdMaW50IG1TdGVuY2lsU2l6ZTsgICAgICAgICAgICAgLy8gQml0cyBvZiBTdGVuY2ls
IGluIHRoZSBzdGVuY2lsIGJ1ZmZlcgorICAgIEVHTGludCBtU3VyZmFjZVR5cGU7ICAgICAgICAg
ICAgIC8vIFdoaWNoIHR5cGVzIG9mIEVHTCBzdXJmYWNlcyBhcmUgc3VwcG9ydGVkLgorICAgIEVH
TGVudW0gbVRyYW5zcGFyZW50VHlwZTsgICAgICAgIC8vIFR5cGUgb2YgdHJhbnNwYXJlbmN5IHN1
cHBvcnRlZAorICAgIEVHTGludCBtVHJhbnNwYXJlbnRSZWRWYWx1ZTsgICAgIC8vIFRyYW5zcGFy
ZW50IHJlZCB2YWx1ZQorICAgIEVHTGludCBtVHJhbnNwYXJlbnRHcmVlblZhbHVlOyAgIC8vIFRy
YW5zcGFyZW50IGdyZWVuIHZhbHVlCisgICAgRUdMaW50IG1UcmFuc3BhcmVudEJsdWVWYWx1ZTsg
ICAgLy8gVHJhbnNwYXJlbnQgYmx1ZSB2YWx1ZQorfTsKKworLy8gRnVuY3Rpb24gb2JqZWN0IHVz
ZWQgYnkgU1RMIHNvcnRpbmcgcm91dGluZXMgZm9yIG9yZGVyaW5nIENvbmZpZ3MgYWNjb3JkaW5n
IHRvIFtFR0xdIHNlY3Rpb24gMy40LjEgcGFnZSAyNC4KK2NsYXNzIFNvcnRDb25maWcKK3sKKyAg
cHVibGljOgorICAgIGV4cGxpY2l0IFNvcnRDb25maWcoY29uc3QgRUdMaW50ICphdHRyaWJMaXN0
KTsKKworICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBDb25maWcgKngsIGNvbnN0IENvbmZpZyAq
eSkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IENvbmZpZyAmeCwgY29uc3QgQ29u
ZmlnICZ5KSBjb25zdDsKKworICBwcml2YXRlOgorICAgIHZvaWQgc2NhbkZvcldhbnRlZENvbXBv
bmVudHMoY29uc3QgRUdMaW50ICphdHRyaWJMaXN0KTsKKyAgICBFR0xpbnQgd2FudGVkQ29tcG9u
ZW50c1NpemUoY29uc3QgQ29uZmlnICZjb25maWcpIGNvbnN0OworCisgICAgYm9vbCBtV2FudFJl
ZDsKKyAgICBib29sIG1XYW50R3JlZW47CisgICAgYm9vbCBtV2FudEJsdWU7CisgICAgYm9vbCBt
V2FudEFscGhhOworICAgIGJvb2wgbVdhbnRMdW1pbmFuY2U7Cit9OworCitjbGFzcyBDb25maWdT
ZXQKK3sKKyAgICBmcmllbmQgRGlzcGxheTsKKworICBwdWJsaWM6CisgICAgQ29uZmlnU2V0KCk7
CisKKyAgICB2b2lkIGFkZChyeDo6Q29uZmlnRGVzYyBkZXNjLCBFR0xpbnQgbWluU3dhcEludGVy
dmFsLCBFR0xpbnQgbWF4U3dhcEludGVydmFsLCBFR0xpbnQgdGV4V2lkdGgsIEVHTGludCB0ZXhI
ZWlnaHQpOworICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgICAgYm9vbCBnZXRDb25maWdzKEVH
TENvbmZpZyAqY29uZmlncywgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0LCBFR0xpbnQgY29uZmln
U2l6ZSwgRUdMaW50ICpudW1Db25maWcpOworICAgIGNvbnN0IGVnbDo6Q29uZmlnICpnZXQoRUdM
Q29uZmlnIGNvbmZpZ0hhbmRsZSk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FO
RF9BU1NJR04oQ29uZmlnU2V0KTsKKworICAgIHR5cGVkZWYgc3RkOjpzZXQ8Q29uZmlnLCBTb3J0
Q29uZmlnPiBTZXQ7CisgICAgdHlwZWRlZiBTZXQ6Oml0ZXJhdG9yIEl0ZXJhdG9yOworICAgIFNl
dCBtU2V0OworCisgICAgc3RhdGljIGNvbnN0IEVHTGludCBtU29ydEF0dHJpYnNbXTsKK307Cit9
CisKKyNlbmRpZiAgIC8vIElOQ0xVREVfQ09ORklHX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliRUdML0Rpc3BsYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvRGlzcGxheS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0Rpc3BsYXkuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUzNyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRGlzcGxheS5jcHA6IElt
cGxlbWVudHMgdGhlIGVnbDo6RGlzcGxheSBjbGFzcywgcmVwcmVzZW50aW5nIHRoZSBhYnN0cmFj
dAorLy8gZGlzcGxheSBvbiB3aGljaCBncmFwaGljcyBhcmUgZHJhd24uIEltcGxlbWVudHMgRUdM
RGlzcGxheS4KKy8vIFtFR0wgMS40XSBzZWN0aW9uIDIuMS4yIHBhZ2UgMy4KKworI2luY2x1ZGUg
ImxpYkVHTC9EaXNwbGF5LmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8bWFw
PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvU3dhcENoYWluLmgiCisKKyNpbmNsdWRlICJsaWJFR0wvbWFpbi5oIgorI2luY2x1ZGUgImxp
YkVHTC9TdXJmYWNlLmgiCisKK25hbWVzcGFjZSBlZ2wKK3sKK25hbWVzcGFjZQoreworICAgIHR5
cGVkZWYgc3RkOjptYXA8RUdMTmF0aXZlRGlzcGxheVR5cGUsIERpc3BsYXkqPiBEaXNwbGF5TWFw
OyAKKyAgICBEaXNwbGF5TWFwIGRpc3BsYXlzOworfQorCitlZ2w6OkRpc3BsYXkgKkRpc3BsYXk6
OmdldERpc3BsYXkoRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheUlkKQoreworICAgIGlmIChk
aXNwbGF5cy5maW5kKGRpc3BsYXlJZCkgIT0gZGlzcGxheXMuZW5kKCkpCisgICAgeworICAgICAg
ICByZXR1cm4gZGlzcGxheXNbZGlzcGxheUlkXTsKKyAgICB9CisgICAgCisgICAgLy8gRklYTUU6
IENoZWNrIGlmIGRpc3BsYXlJZCBpcyBhIHZhbGlkIGRpc3BsYXkgZGV2aWNlIGNvbnRleHQKKwor
ICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IG5ldyBlZ2w6OkRpc3BsYXkoZGlzcGxheUlkLCAo
SERDKWRpc3BsYXlJZCk7CisKKyAgICBkaXNwbGF5c1tkaXNwbGF5SWRdID0gZGlzcGxheTsKKyAg
ICByZXR1cm4gZGlzcGxheTsKK30KKworRGlzcGxheTo6RGlzcGxheShFR0xOYXRpdmVEaXNwbGF5
VHlwZSBkaXNwbGF5SWQsIEhEQyBkZXZpY2VDb250ZXh0KSA6IG1EYyhkZXZpY2VDb250ZXh0KQor
eworICAgIG1EaXNwbGF5SWQgPSBkaXNwbGF5SWQ7CisgICAgbVJlbmRlcmVyID0gTlVMTDsKK30K
KworRGlzcGxheTo6fkRpc3BsYXkoKQoreworICAgIHRlcm1pbmF0ZSgpOworCisgICAgRGlzcGxh
eU1hcDo6aXRlcmF0b3IgdGhpc0Rpc3BsYXkgPSBkaXNwbGF5cy5maW5kKG1EaXNwbGF5SWQpOwor
CisgICAgaWYgKHRoaXNEaXNwbGF5ICE9IGRpc3BsYXlzLmVuZCgpKQorICAgIHsKKyAgICAgICAg
ZGlzcGxheXMuZXJhc2UodGhpc0Rpc3BsYXkpOworICAgIH0KK30KKworYm9vbCBEaXNwbGF5Ojpp
bml0aWFsaXplKCkKK3sKKyAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgbVJlbmRlcmVyID0gZ2xDcmVhdGVSZW5kZXJlcih0
aGlzLCBtRGMsIG1EaXNwbGF5SWQpOworICAgIAorICAgIGlmICghbVJlbmRlcmVyKQorICAgIHsK
KyAgICAgICAgdGVybWluYXRlKCk7CisgICAgICAgIHJldHVybiBlcnJvcihFR0xfTk9UX0lOSVRJ
QUxJWkVELCBmYWxzZSk7CisgICAgfQorCisgICAgRUdMaW50IG1pblN3YXBJbnRlcnZhbCA9IG1S
ZW5kZXJlci0+Z2V0TWluU3dhcEludGVydmFsKCk7CisgICAgRUdMaW50IG1heFN3YXBJbnRlcnZh
bCA9IG1SZW5kZXJlci0+Z2V0TWF4U3dhcEludGVydmFsKCk7CisgICAgRUdMaW50IG1heFRleHR1
cmVXaWR0aCA9IG1SZW5kZXJlci0+Z2V0TWF4VGV4dHVyZVdpZHRoKCk7CisgICAgRUdMaW50IG1h
eFRleHR1cmVIZWlnaHQgPSBtUmVuZGVyZXItPmdldE1heFRleHR1cmVIZWlnaHQoKTsKKworICAg
IHJ4OjpDb25maWdEZXNjICpkZXNjTGlzdDsKKyAgICBpbnQgbnVtQ29uZmlncyA9IG1SZW5kZXJl
ci0+Z2VuZXJhdGVDb25maWdzKCZkZXNjTGlzdCk7CisgICAgQ29uZmlnU2V0IGNvbmZpZ1NldDsK
KworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29uZmlnczsgKytpKQorICAgICAgICBjb25m
aWdTZXQuYWRkKGRlc2NMaXN0W2ldLCBtaW5Td2FwSW50ZXJ2YWwsIG1heFN3YXBJbnRlcnZhbCwK
KyAgICAgICAgICAgICAgICAgICAgICBtYXhUZXh0dXJlV2lkdGgsIG1heFRleHR1cmVIZWlnaHQp
OworCisgICAgLy8gR2l2ZSB0aGUgc29ydGVkIGNvbmZpZ3MgYSB1bmlxdWUgSUQgYW5kIHN0b3Jl
IHRoZW0gaW50ZXJuYWxseQorICAgIEVHTGludCBpbmRleCA9IDE7CisgICAgZm9yIChDb25maWdT
ZXQ6Okl0ZXJhdG9yIGNvbmZpZyA9IGNvbmZpZ1NldC5tU2V0LmJlZ2luKCk7IGNvbmZpZyAhPSBj
b25maWdTZXQubVNldC5lbmQoKTsgY29uZmlnKyspCisgICAgeworICAgICAgICBDb25maWcgY29u
ZmlndXJhdGlvbiA9ICpjb25maWc7CisgICAgICAgIGNvbmZpZ3VyYXRpb24ubUNvbmZpZ0lEID0g
aW5kZXg7CisgICAgICAgIGluZGV4Kys7CisKKyAgICAgICAgbUNvbmZpZ1NldC5tU2V0Lmluc2Vy
dChjb25maWd1cmF0aW9uKTsKKyAgICB9CisKKyAgICBtUmVuZGVyZXItPmRlbGV0ZUNvbmZpZ3Mo
ZGVzY0xpc3QpOworICAgIGRlc2NMaXN0ID0gTlVMTDsKKworICAgIGlmICghaXNJbml0aWFsaXpl
ZCgpKQorICAgIHsKKyAgICAgICAgdGVybWluYXRlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBpbml0RXh0ZW5zaW9uU3RyaW5nKCk7CisgICAgaW5pdFZlbmRvclN0cmlu
ZygpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRGlzcGxheTo6dGVybWluYXRlKCkK
K3sKKyAgICB3aGlsZSAoIW1TdXJmYWNlU2V0LmVtcHR5KCkpCisgICAgeworICAgICAgICBkZXN0
cm95U3VyZmFjZSgqbVN1cmZhY2VTZXQuYmVnaW4oKSk7CisgICAgfQorCisgICAgd2hpbGUgKCFt
Q29udGV4dFNldC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVzdHJveUNvbnRleHQoKm1Db250
ZXh0U2V0LmJlZ2luKCkpOworICAgIH0KKworICAgIGdsRGVzdHJveVJlbmRlcmVyKG1SZW5kZXJl
cik7CisgICAgbVJlbmRlcmVyID0gTlVMTDsKK30KKworYm9vbCBEaXNwbGF5OjpnZXRDb25maWdz
KEVHTENvbmZpZyAqY29uZmlncywgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0LCBFR0xpbnQgY29u
ZmlnU2l6ZSwgRUdMaW50ICpudW1Db25maWcpCit7CisgICAgcmV0dXJuIG1Db25maWdTZXQuZ2V0
Q29uZmlncyhjb25maWdzLCBhdHRyaWJMaXN0LCBjb25maWdTaXplLCBudW1Db25maWcpOworfQor
Citib29sIERpc3BsYXk6OmdldENvbmZpZ0F0dHJpYihFR0xDb25maWcgY29uZmlnLCBFR0xpbnQg
YXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKQoreworICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
aWd1cmF0aW9uID0gbUNvbmZpZ1NldC5nZXQoY29uZmlnKTsKKworICAgIHN3aXRjaCAoYXR0cmli
dXRlKQorICAgIHsKKyAgICAgIGNhc2UgRUdMX0JVRkZFUl9TSVpFOiAgICAgICAgICAgICAgICp2
YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1CdWZmZXJTaXplOyAgICAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgRUdMX0FMUEhBX1NJWkU6ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3Vy
YXRpb24tPm1BbHBoYVNpemU7ICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0JM
VUVfU0laRTogICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1CbHVlU2l6
ZTsgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0dSRUVOX1NJWkU6ICAgICAg
ICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1HcmVlblNpemU7ICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1JFRF9TSVpFOiAgICAgICAgICAgICAgICAgICp2YWx1
ZSA9IGNvbmZpZ3VyYXRpb24tPm1SZWRTaXplOyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgRUdMX0RFUFRIX1NJWkU6ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRp
b24tPm1EZXB0aFNpemU7ICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1NURU5D
SUxfU0laRTogICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1TdGVuY2lsU2l6
ZTsgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0NPTkZJR19DQVZFQVQ6ICAgICAg
ICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1Db25maWdDYXZlYXQ7ICAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgRUdMX0NPTkZJR19JRDogICAgICAgICAgICAgICAgICp2YWx1ZSA9
IGNvbmZpZ3VyYXRpb24tPm1Db25maWdJRDsgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgRUdMX0xFVkVMOiAgICAgICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24t
Pm1MZXZlbDsgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX05BVElWRV9S
RU5ERVJBQkxFOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1OYXRpdmVSZW5kZXJh
YmxlOyAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX05BVElWRV9WSVNVQUxfVFlQRTogICAg
ICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1OYXRpdmVWaXN1YWxUeXBlOyAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgRUdMX1NBTVBMRVM6ICAgICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNv
bmZpZ3VyYXRpb24tPm1TYW1wbGVzOyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
RUdMX1NBTVBMRV9CVUZGRVJTOiAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1T
YW1wbGVCdWZmZXJzOyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1NVUkZBQ0VfVFlQ
RTogICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1TdXJmYWNlVHlwZTsgICAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX1RZUEU6ICAgICAgICAg
ICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1UcmFuc3BhcmVudFR5cGU7ICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX0JMVUVfVkFMVUU6ICAgICp2YWx1ZSA9IGNvbmZp
Z3VyYXRpb24tPm1UcmFuc3BhcmVudEJsdWVWYWx1ZTsgICBicmVhazsKKyAgICAgIGNhc2UgRUdM
X1RSQU5TUEFSRU5UX0dSRUVOX1ZBTFVFOiAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1UcmFu
c3BhcmVudEdyZWVuVmFsdWU7ICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX1JF
RF9WQUxVRTogICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1UcmFuc3BhcmVudFJlZFZhbHVl
OyAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0I6ICAgICAgICp2
YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1CaW5kVG9UZXh0dXJlUkdCOyAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0JBOiAgICAgICp2YWx1ZSA9IGNvbmZpZ3Vy
YXRpb24tPm1CaW5kVG9UZXh0dXJlUkdCQTsgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01J
Tl9TV0FQX0lOVEVSVkFMOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1NaW5Td2Fw
SW50ZXJ2YWw7ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01BWF9TV0FQX0lOVEVSVkFM
OiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1NYXhTd2FwSW50ZXJ2YWw7ICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0xVTUlOQU5DRV9TSVpFOiAgICAgICAgICAgICp2YWx1
ZSA9IGNvbmZpZ3VyYXRpb24tPm1MdW1pbmFuY2VTaXplOyAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgRUdMX0FMUEhBX01BU0tfU0laRTogICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRp
b24tPm1BbHBoYU1hc2tTaXplOyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0NPTE9S
X0JVRkZFUl9UWVBFOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1Db2xvckJ1ZmZl
clR5cGU7ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1JFTkRFUkFCTEVfVFlQRTogICAg
ICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1SZW5kZXJhYmxlVHlwZTsgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgRUdMX01BVENIX05BVElWRV9QSVhNQVA6ICAgICAgICp2YWx1ZSA9
IGZhbHNlOyBVTklNUExFTUVOVEVEKCk7ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgRUdMX0NPTkZPUk1BTlQ6ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24t
Pm1Db25mb3JtYW50OyAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01BWF9QQlVG
RkVSX1dJRFRIOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1NYXhQQnVmZmVyV2lk
dGg7ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX0hFSUdIVDogICAg
ICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1NYXhQQnVmZmVySGVpZ2h0OyAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX1BJWEVMUzogICAgICAgICp2YWx1ZSA9IGNv
bmZpZ3VyYXRpb24tPm1NYXhQQnVmZmVyUGl4ZWxzOyAgICAgICBicmVhazsKKyAgICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworCisKK0VHTFN1cmZhY2UgRGlzcGxheTo6Y3JlYXRlV2luZG93U3VyZmFjZShIV05EIHdpbmRv
dywgRUdMQ29uZmlnIGNvbmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0KQoreworICAgIGNv
bnN0IENvbmZpZyAqY29uZmlndXJhdGlvbiA9IG1Db25maWdTZXQuZ2V0KGNvbmZpZyk7CisgICAg
RUdMaW50IHBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQgPSBFR0xfRkFMU0U7CisKKyAgICBpZiAoYXR0
cmliTGlzdCkKKyAgICB7CisgICAgICAgIHdoaWxlICgqYXR0cmliTGlzdCAhPSBFR0xfTk9ORSkK
KyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhdHRyaWJMaXN0WzBdKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICBjYXNlIEVHTF9SRU5ERVJfQlVGRkVSOgorICAgICAgICAgICAg
ICAgIHN3aXRjaCAoYXR0cmliTGlzdFsxXSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICBjYXNlIEVHTF9CQUNLX0JVRkZFUjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9TSU5HTEVfQlVGRkVSOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX05PX1NVUkZBQ0UpOyAgIC8v
IFJlbmRlcmluZyBkaXJlY3RseSB0byBmcm9udCBidWZmZXIgbm90IHN1cHBvcnRlZAorICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVH
TF9CQURfQVRUUklCVVRFLCBFR0xfTk9fU1VSRkFDRSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9QT1NUX1NVQl9CVUZG
RVJfU1VQUE9SVEVEX05WOgorICAgICAgICAgICAgICAgIHBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQg
PSBhdHRyaWJMaXN0WzFdOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIEVHTF9WR19DT0xPUlNQQUNFOgorICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xf
QkFEX01BVENILCBFR0xfTk9fU1VSRkFDRSk7CisgICAgICAgICAgICAgIGNhc2UgRUdMX1ZHX0FM
UEhBX0ZPUk1BVDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9NQVRDSCwg
RUdMX05PX1NVUkZBQ0UpOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBhdHRyaWJMaXN0ICs9IDI7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoaGFzRXhpc3RpbmdXaW5kb3dTdXJmYWNlKHdpbmRvdykpCisgICAgeworICAg
ICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX05PX1NVUkZBQ0UpOworICAgIH0K
KworICAgIGlmIChtUmVuZGVyZXItPnRlc3REZXZpY2VMb3N0KGZhbHNlKSkKKyAgICB7CisgICAg
ICAgIGlmICghcmVzdG9yZUxvc3REZXZpY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBFR0xfTk9f
U1VSRkFDRTsKKyAgICB9CisKKyAgICBTdXJmYWNlICpzdXJmYWNlID0gbmV3IFN1cmZhY2UodGhp
cywgY29uZmlndXJhdGlvbiwgd2luZG93LCBwb3N0U3ViQnVmZmVyU3VwcG9ydGVkKTsKKworICAg
IGlmICghc3VyZmFjZS0+aW5pdGlhbGl6ZSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHN1cmZh
Y2U7CisgICAgICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKKyAgICB9CisKKyAgICBtU3VyZmFj
ZVNldC5pbnNlcnQoc3VyZmFjZSk7CisKKyAgICByZXR1cm4gc3VjY2VzcyhzdXJmYWNlKTsKK30K
KworRUdMU3VyZmFjZSBEaXNwbGF5OjpjcmVhdGVPZmZzY3JlZW5TdXJmYWNlKEVHTENvbmZpZyBj
b25maWcsIEhBTkRMRSBzaGFyZUhhbmRsZSwgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0KQorewor
ICAgIEVHTGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7CisgICAgRUdMZW51bSB0ZXh0dXJlRm9y
bWF0ID0gRUdMX05PX1RFWFRVUkU7CisgICAgRUdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gRUdMX05P
X1RFWFRVUkU7CisgICAgY29uc3QgQ29uZmlnICpjb25maWd1cmF0aW9uID0gbUNvbmZpZ1NldC5n
ZXQoY29uZmlnKTsKKworICAgIGlmIChhdHRyaWJMaXN0KQorICAgIHsKKyAgICAgICAgd2hpbGUg
KCphdHRyaWJMaXN0ICE9IEVHTF9OT05FKQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2gg
KGF0dHJpYkxpc3RbMF0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgRUdMX1dJ
RFRIOgorICAgICAgICAgICAgICAgIHdpZHRoID0gYXR0cmliTGlzdFsxXTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfSEVJR0hUOgorICAgICAgICAgICAg
ICAgIGhlaWdodCA9IGF0dHJpYkxpc3RbMV07CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgRUdMX0xBUkdFU1RfUEJVRkZFUjoKKyAgICAgICAgICAgICAgICBpZiAo
YXR0cmliTGlzdFsxXSAhPSBFR0xfRkFMU0UpCisgICAgICAgICAgICAgICAgICBVTklNUExFTUVO
VEVEKCk7IC8vIEZJWE1FCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgRUdMX1RFWFRVUkVfRk9STUFUOgorICAgICAgICAgICAgICAgIHN3aXRjaCAoYXR0cmliTGlz
dFsxXSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9OT19U
RVhUVVJFOgorICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfVEVYVFVSRV9SR0I6CisgICAgICAg
ICAgICAgICAgICBjYXNlIEVHTF9URVhUVVJFX1JHQkE6CisgICAgICAgICAgICAgICAgICAgIHRl
eHR1cmVGb3JtYXQgPSBhdHRyaWJMaXN0WzFdOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBl
cnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfVEVYVFVS
RV9UQVJHRVQ6CisgICAgICAgICAgICAgICAgc3dpdGNoIChhdHRyaWJMaXN0WzFdKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX05PX1RFWFRVUkU6CisgICAg
ICAgICAgICAgICAgICBjYXNlIEVHTF9URVhUVVJFXzJEOgorICAgICAgICAgICAgICAgICAgICB0
ZXh0dXJlVGFyZ2V0ID0gYXR0cmliTGlzdFsxXTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX01JUE1B
UF9URVhUVVJFOgorICAgICAgICAgICAgICAgIGlmIChhdHRyaWJMaXN0WzFdICE9IEVHTF9GQUxT
RSkKKyAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdM
X05PX1NVUkZBQ0UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IEVHTF9WR19DT0xPUlNQQUNFOgorICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFE
X01BVENILCBFR0xfTk9fU1VSRkFDRSk7CisgICAgICAgICAgICAgIGNhc2UgRUdMX1ZHX0FMUEhB
X0ZPUk1BVDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdM
X05PX1NVUkZBQ0UpOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBhdHRyaWJMaXN0ICs9IDI7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisgICAgeworICAgICAgICByZXR1cm4g
ZXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsIEVHTF9OT19TVVJGQUNFKTsKKyAgICB9CisKKyAgICBp
ZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJv
cihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOworICAgIH0KKworICAgIGlmICh0
ZXh0dXJlRm9ybWF0ICE9IEVHTF9OT19URVhUVVJFICYmICFtUmVuZGVyZXItPmdldE5vblBvd2Vy
MlRleHR1cmVTdXBwb3J0KCkgJiYgKCFnbDo6aXNQb3cyKHdpZHRoKSB8fCAhZ2w6OmlzUG93Miho
ZWlnaHQpKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX01BVENILCBFR0xf
Tk9fU1VSRkFDRSk7CisgICAgfQorCisgICAgaWYgKCh0ZXh0dXJlRm9ybWF0ICE9IEVHTF9OT19U
RVhUVVJFICYmIHRleHR1cmVUYXJnZXQgPT0gRUdMX05PX1RFWFRVUkUpIHx8CisgICAgICAgICh0
ZXh0dXJlRm9ybWF0ID09IEVHTF9OT19URVhUVVJFICYmIHRleHR1cmVUYXJnZXQgIT0gRUdMX05P
X1RFWFRVUkUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfTUFUQ0gsIEVH
TF9OT19TVVJGQUNFKTsKKyAgICB9CisKKyAgICBpZiAoIShjb25maWd1cmF0aW9uLT5tU3VyZmFj
ZVR5cGUgJiBFR0xfUEJVRkZFUl9CSVQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yKEVH
TF9CQURfTUFUQ0gsIEVHTF9OT19TVVJGQUNFKTsKKyAgICB9CisKKyAgICBpZiAoKHRleHR1cmVG
b3JtYXQgPT0gRUdMX1RFWFRVUkVfUkdCICYmIGNvbmZpZ3VyYXRpb24tPm1CaW5kVG9UZXh0dXJl
UkdCICE9IEVHTF9UUlVFKSB8fAorICAgICAgICAodGV4dHVyZUZvcm1hdCA9PSBFR0xfVEVYVFVS
RV9SR0JBICYmIGNvbmZpZ3VyYXRpb24tPm1CaW5kVG9UZXh0dXJlUkdCQSAhPSBFR0xfVFJVRSkp
CisgICAgeworICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19T
VVJGQUNFKTsKKyAgICB9CisKKyAgICBpZiAobVJlbmRlcmVyLT50ZXN0RGV2aWNlTG9zdChmYWxz
ZSkpCisgICAgeworICAgICAgICBpZiAoIXJlc3RvcmVMb3N0RGV2aWNlKCkpCisgICAgICAgICAg
ICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7CisgICAgfQorCisgICAgU3VyZmFjZSAqc3VyZmFjZSA9
IG5ldyBTdXJmYWNlKHRoaXMsIGNvbmZpZ3VyYXRpb24sIHNoYXJlSGFuZGxlLCB3aWR0aCwgaGVp
Z2h0LCB0ZXh0dXJlRm9ybWF0LCB0ZXh0dXJlVGFyZ2V0KTsKKworICAgIGlmICghc3VyZmFjZS0+
aW5pdGlhbGl6ZSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHN1cmZhY2U7CisgICAgICAgIHJl
dHVybiBFR0xfTk9fU1VSRkFDRTsKKyAgICB9CisKKyAgICBtU3VyZmFjZVNldC5pbnNlcnQoc3Vy
ZmFjZSk7CisKKyAgICByZXR1cm4gc3VjY2VzcyhzdXJmYWNlKTsKK30KKworRUdMQ29udGV4dCBE
aXNwbGF5OjpjcmVhdGVDb250ZXh0KEVHTENvbmZpZyBjb25maWdIYW5kbGUsIGNvbnN0IGdsOjpD
b250ZXh0ICpzaGFyZUNvbnRleHQsIGJvb2wgbm90aWZ5UmVzZXRzLCBib29sIHJvYnVzdEFjY2Vz
cykKK3sKKyAgICBpZiAoIW1SZW5kZXJlcikKKyAgICB7CisgICAgICAgIHJldHVybiBOVUxMOwor
ICAgIH0KKyAgICBlbHNlIGlmIChtUmVuZGVyZXItPnRlc3REZXZpY2VMb3N0KGZhbHNlKSkgICAv
LyBMb3N0IGRldmljZQorICAgIHsKKyAgICAgICAgaWYgKCFyZXN0b3JlTG9zdERldmljZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbENyZWF0ZUNvbnRleHQoc2hhcmVDb250ZXh0LCBtUmVuZGVyZXIsIG5vdGlmeVJlc2V0
cywgcm9idXN0QWNjZXNzKTsKKyAgICBtQ29udGV4dFNldC5pbnNlcnQoY29udGV4dCk7CisKKyAg
ICByZXR1cm4gY29udGV4dDsKK30KKworYm9vbCBEaXNwbGF5OjpyZXN0b3JlTG9zdERldmljZSgp
Cit7CisgICAgZm9yIChDb250ZXh0U2V0OjppdGVyYXRvciBjdHggPSBtQ29udGV4dFNldC5iZWdp
bigpOyBjdHggIT0gbUNvbnRleHRTZXQuZW5kKCk7IGN0eCsrKQorICAgIHsKKyAgICAgICAgaWYg
KCgqY3R4KS0+aXNSZXNldE5vdGlmaWNhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsgICAvLyBJZiByZXNldCBub3RpZmljYXRpb25zIGhhdmUgYmVlbiByZXF1ZXN0ZWQs
IGFwcGxpY2F0aW9uIG11c3QgZGVsZXRlIGFsbCBjb250ZXh0cyBmaXJzdAorICAgIH0KKyAKKyAg
ICAvLyBSZWxlYXNlIHN1cmZhY2UgcmVzb3VyY2VzIHRvIG1ha2UgdGhlIFJlc2V0KCkgc3VjY2Vl
ZAorICAgIGZvciAoU3VyZmFjZVNldDo6aXRlcmF0b3Igc3VyZmFjZSA9IG1TdXJmYWNlU2V0LmJl
Z2luKCk7IHN1cmZhY2UgIT0gbVN1cmZhY2VTZXQuZW5kKCk7IHN1cmZhY2UrKykKKyAgICB7Cisg
ICAgICAgICgqc3VyZmFjZSktPnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBpZiAoIW1SZW5kZXJl
ci0+cmVzZXREZXZpY2UoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FM
TE9DLCBmYWxzZSk7CisgICAgfQorCisgICAgLy8gUmVzdG9yZSBhbnkgc3VyZmFjZXMgdGhhdCBt
YXkgaGF2ZSBiZWVuIGxvc3QKKyAgICBmb3IgKFN1cmZhY2VTZXQ6Oml0ZXJhdG9yIHN1cmZhY2Ug
PSBtU3VyZmFjZVNldC5iZWdpbigpOyBzdXJmYWNlICE9IG1TdXJmYWNlU2V0LmVuZCgpOyBzdXJm
YWNlKyspCisgICAgeworICAgICAgICAoKnN1cmZhY2UpLT5yZXNldFN3YXBDaGFpbigpOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCisKK3ZvaWQgRGlzcGxheTo6ZGVzdHJveVN1cmZh
Y2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKQoreworICAgIGRlbGV0ZSBzdXJmYWNlOworICAgIG1T
dXJmYWNlU2V0LmVyYXNlKHN1cmZhY2UpOworfQorCit2b2lkIERpc3BsYXk6OmRlc3Ryb3lDb250
ZXh0KGdsOjpDb250ZXh0ICpjb250ZXh0KQoreworICAgIGdsRGVzdHJveUNvbnRleHQoY29udGV4
dCk7CisgICAgbUNvbnRleHRTZXQuZXJhc2UoY29udGV4dCk7Cit9CisKK3ZvaWQgRGlzcGxheTo6
bm90aWZ5RGV2aWNlTG9zdCgpCit7CisgICAgZm9yIChDb250ZXh0U2V0OjppdGVyYXRvciBjb250
ZXh0ID0gbUNvbnRleHRTZXQuYmVnaW4oKTsgY29udGV4dCAhPSBtQ29udGV4dFNldC5lbmQoKTsg
Y29udGV4dCsrKQorICAgIHsKKyAgICAgICAgKCpjb250ZXh0KS0+bWFya0NvbnRleHRMb3N0KCk7
CisgICAgfQorICAgIGVnbDo6ZXJyb3IoRUdMX0NPTlRFWFRfTE9TVCk7Cit9CisKK3ZvaWQgRGlz
cGxheTo6cmVjcmVhdGVTd2FwQ2hhaW5zKCkKK3sKKyAgICBmb3IgKFN1cmZhY2VTZXQ6Oml0ZXJh
dG9yIHN1cmZhY2UgPSBtU3VyZmFjZVNldC5iZWdpbigpOyBzdXJmYWNlICE9IG1TdXJmYWNlU2V0
LmVuZCgpOyBzdXJmYWNlKyspCisgICAgeworICAgICAgICAoKnN1cmZhY2UpLT5nZXRTd2FwQ2hh
aW4oKS0+cmVjcmVhdGUoKTsKKyAgICB9Cit9CisKK2Jvb2wgRGlzcGxheTo6aXNJbml0aWFsaXpl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlciAhPSBOVUxMICYmIG1Db25maWdTZXQu
c2l6ZSgpID4gMDsKK30KKworYm9vbCBEaXNwbGF5Ojppc1ZhbGlkQ29uZmlnKEVHTENvbmZpZyBj
b25maWcpCit7CisgICAgcmV0dXJuIG1Db25maWdTZXQuZ2V0KGNvbmZpZykgIT0gTlVMTDsKK30K
KworYm9vbCBEaXNwbGF5Ojppc1ZhbGlkQ29udGV4dChnbDo6Q29udGV4dCAqY29udGV4dCkKK3sK
KyAgICByZXR1cm4gbUNvbnRleHRTZXQuZmluZChjb250ZXh0KSAhPSBtQ29udGV4dFNldC5lbmQo
KTsKK30KKworYm9vbCBEaXNwbGF5Ojppc1ZhbGlkU3VyZmFjZShlZ2w6OlN1cmZhY2UgKnN1cmZh
Y2UpCit7CisgICAgcmV0dXJuIG1TdXJmYWNlU2V0LmZpbmQoc3VyZmFjZSkgIT0gbVN1cmZhY2VT
ZXQuZW5kKCk7Cit9CisKK2Jvb2wgRGlzcGxheTo6aGFzRXhpc3RpbmdXaW5kb3dTdXJmYWNlKEhX
TkQgd2luZG93KQoreworICAgIGZvciAoU3VyZmFjZVNldDo6aXRlcmF0b3Igc3VyZmFjZSA9IG1T
dXJmYWNlU2V0LmJlZ2luKCk7IHN1cmZhY2UgIT0gbVN1cmZhY2VTZXQuZW5kKCk7IHN1cmZhY2Ur
KykKKyAgICB7CisgICAgICAgIGlmICgoKnN1cmZhY2UpLT5nZXRXaW5kb3dIYW5kbGUoKSA9PSB3
aW5kb3cpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIERpc3BsYXk6OmluaXRFeHRlbnNp
b25TdHJpbmcoKQoreworICAgIEhNT0RVTEUgc3dpZnRTaGFkZXIgPSBHZXRNb2R1bGVIYW5kbGUo
VEVYVCgic3dpZnRzaGFkZXJfZDNkOS5kbGwiKSk7CisgICAgYm9vbCBzaGFyZUhhbmRsZVN1cHBv
cnRlZCA9IG1SZW5kZXJlci0+Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KCk7CisKKyAgICBtRXh0ZW5z
aW9uU3RyaW5nID0gIiI7CisKKyAgICAvLyBNdWx0aS12ZW5kb3IgKEVYVCkgZXh0ZW5zaW9ucwor
ICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVz
cyAiOworCisgICAgLy8gQU5HTEUtc3BlY2lmaWMgZXh0ZW5zaW9ucworICAgIGlmIChzaGFyZUhh
bmRsZVN1cHBvcnRlZCkKKyAgICB7CisgICAgICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkVHTF9B
TkdMRV9kM2Rfc2hhcmVfaGFuZGxlX2NsaWVudF9idWZmZXIgIjsKKyAgICB9CisKKyAgICBtRXh0
ZW5zaW9uU3RyaW5nICs9ICJFR0xfQU5HTEVfcXVlcnlfc3VyZmFjZV9wb2ludGVyICI7CisKKyAg
ICBpZiAoc3dpZnRTaGFkZXIpCisgICAgeworICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJF
R0xfQU5HTEVfc29mdHdhcmVfZGlzcGxheSAiOworICAgIH0KKworICAgIGlmIChzaGFyZUhhbmRs
ZVN1cHBvcnRlZCkKKyAgICB7CisgICAgICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkVHTF9BTkdM
RV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZSAiOworICAgIH0KKworICAgIGlm
IChtUmVuZGVyZXItPmdldFBvc3RTdWJCdWZmZXJTdXBwb3J0KCkpCisgICAgeworICAgICAgICBt
RXh0ZW5zaW9uU3RyaW5nICs9ICJFR0xfTlZfcG9zdF9zdWJfYnVmZmVyIjsKKyAgICB9CisKKyAg
ICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGVuZCA9IG1FeHRlbnNpb25TdHJpbmcuZmluZF9sYXN0
X25vdF9vZignICcpOworICAgIGlmIChlbmQgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgewor
ICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nLnJlc2l6ZShlbmQrMSk7CisgICAgfQorfQorCitjb25z
dCBjaGFyICpEaXNwbGF5OjpnZXRFeHRlbnNpb25TdHJpbmcoKSBjb25zdAoreworICAgIHJldHVy
biBtRXh0ZW5zaW9uU3RyaW5nLmNfc3RyKCk7Cit9CisKK3ZvaWQgRGlzcGxheTo6aW5pdFZlbmRv
clN0cmluZygpCit7CisgICAgbVZlbmRvclN0cmluZyA9ICJHb29nbGUgSW5jLiI7CisKKyAgICBM
VUlEIGFkYXB0ZXJMdWlkID0gezB9OworCisgICAgaWYgKG1SZW5kZXJlciAmJiBtUmVuZGVyZXIt
PmdldExVSUQoJmFkYXB0ZXJMdWlkKSkKKyAgICB7CisgICAgICAgIGNoYXIgYWRhcHRlckx1aWRT
dHJpbmdbNjRdOworICAgICAgICBzcHJpbnRmX3MoYWRhcHRlckx1aWRTdHJpbmcsIHNpemVvZihh
ZGFwdGVyTHVpZFN0cmluZyksICIgKGFkYXB0ZXIgTFVJRDogJTA4eCUwOHgpIiwgYWRhcHRlckx1
aWQuSGlnaFBhcnQsIGFkYXB0ZXJMdWlkLkxvd1BhcnQpOworCisgICAgICAgIG1WZW5kb3JTdHJp
bmcgKz0gYWRhcHRlckx1aWRTdHJpbmc7CisgICAgfQorfQorCitjb25zdCBjaGFyICpEaXNwbGF5
OjpnZXRWZW5kb3JTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtVmVuZG9yU3RyaW5nLmNf
c3RyKCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wv
RGlzcGxheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJF
R0wvRGlzcGxheS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkVHTC9EaXNwbGF5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTQgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKy8vIERpc3BsYXkuaDogRGVmaW5lcyB0aGUgZWdsOjpEaXNwbGF5IGNsYXNz
LCByZXByZXNlbnRpbmcgdGhlIGFic3RyYWN0CisvLyBkaXNwbGF5IG9uIHdoaWNoIGdyYXBoaWNz
IGFyZSBkcmF3bi4gSW1wbGVtZW50cyBFR0xEaXNwbGF5LgorLy8gW0VHTCAxLjRdIHNlY3Rpb24g
Mi4xLjIgcGFnZSAzLgorCisjaWZuZGVmIExJQkVHTF9ESVNQTEFZX0hfCisjZGVmaW5lIExJQkVH
TF9ESVNQTEFZX0hfCisKKyNpbmNsdWRlICJjb21tb24vc3lzdGVtLmgiCisKKyNpbmNsdWRlIDxz
ZXQ+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAibGliRUdML0NvbmZpZy5oIgorCitu
YW1lc3BhY2UgZ2wKK3sKK2NsYXNzIENvbnRleHQ7Cit9CisKK25hbWVzcGFjZSBlZ2wKK3sKK2Ns
YXNzIFN1cmZhY2U7CisKK2NsYXNzIERpc3BsYXkKK3sKKyAgcHVibGljOgorICAgIH5EaXNwbGF5
KCk7CisKKyAgICBib29sIGluaXRpYWxpemUoKTsKKyAgICB2b2lkIHRlcm1pbmF0ZSgpOworCisg
ICAgc3RhdGljIGVnbDo6RGlzcGxheSAqZ2V0RGlzcGxheShFR0xOYXRpdmVEaXNwbGF5VHlwZSBk
aXNwbGF5SWQpOworCisgICAgYm9vbCBnZXRDb25maWdzKEVHTENvbmZpZyAqY29uZmlncywgY29u
c3QgRUdMaW50ICphdHRyaWJMaXN0LCBFR0xpbnQgY29uZmlnU2l6ZSwgRUdMaW50ICpudW1Db25m
aWcpOworICAgIGJvb2wgZ2V0Q29uZmlnQXR0cmliKEVHTENvbmZpZyBjb25maWcsIEVHTGludCBh
dHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpOworCisgICAgRUdMU3VyZmFjZSBjcmVhdGVXaW5kb3dT
dXJmYWNlKEhXTkQgd2luZG93LCBFR0xDb25maWcgY29uZmlnLCBjb25zdCBFR0xpbnQgKmF0dHJp
Ykxpc3QpOworICAgIEVHTFN1cmZhY2UgY3JlYXRlT2Zmc2NyZWVuU3VyZmFjZShFR0xDb25maWcg
Y29uZmlnLCBIQU5ETEUgc2hhcmVIYW5kbGUsIGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCk7Cisg
ICAgRUdMQ29udGV4dCBjcmVhdGVDb250ZXh0KEVHTENvbmZpZyBjb25maWdIYW5kbGUsIGNvbnN0
IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsIGJvb2wgbm90aWZ5UmVzZXRzLCBib29sIHJvYnVz
dEFjY2Vzcyk7CisKKyAgICB2b2lkIGRlc3Ryb3lTdXJmYWNlKGVnbDo6U3VyZmFjZSAqc3VyZmFj
ZSk7CisgICAgdm9pZCBkZXN0cm95Q29udGV4dChnbDo6Q29udGV4dCAqY29udGV4dCk7CisKKyAg
ICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsKKyAgICBib29sIGlzVmFsaWRDb25maWcoRUdM
Q29uZmlnIGNvbmZpZyk7CisgICAgYm9vbCBpc1ZhbGlkQ29udGV4dChnbDo6Q29udGV4dCAqY29u
dGV4dCk7CisgICAgYm9vbCBpc1ZhbGlkU3VyZmFjZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOwor
ICAgIGJvb2wgaGFzRXhpc3RpbmdXaW5kb3dTdXJmYWNlKEhXTkQgd2luZG93KTsKKworICAgIHJ4
OjpSZW5kZXJlciAqZ2V0UmVuZGVyZXIoKSB7IHJldHVybiBtUmVuZGVyZXI7IH07CisKKyAgICAv
LyBleHBvcnRlZCBtZXRob2RzIG11c3QgYmUgdmlydHVhbAorICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlEZXZpY2VMb3N0KCk7CisgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlU3dhcENoYWlucygpOwor
CisgICAgY29uc3QgY2hhciAqZ2V0RXh0ZW5zaW9uU3RyaW5nKCkgY29uc3Q7CisgICAgY29uc3Qg
Y2hhciAqZ2V0VmVuZG9yU3RyaW5nKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oRGlzcGxheSk7CisKKyAgICBEaXNwbGF5KEVHTE5hdGl2ZURpc3Bs
YXlUeXBlIGRpc3BsYXlJZCwgSERDIGRldmljZUNvbnRleHQpOworCisgICAgYm9vbCByZXN0b3Jl
TG9zdERldmljZSgpOworCisgICAgRUdMTmF0aXZlRGlzcGxheVR5cGUgbURpc3BsYXlJZDsKKyAg
ICBjb25zdCBIREMgbURjOworCisgICAgYm9vbCBtU29mdHdhcmVEZXZpY2U7CisgICAgCisgICAg
dHlwZWRlZiBzdGQ6OnNldDxTdXJmYWNlKj4gU3VyZmFjZVNldDsKKyAgICBTdXJmYWNlU2V0IG1T
dXJmYWNlU2V0OworCisgICAgQ29uZmlnU2V0IG1Db25maWdTZXQ7CisKKyAgICB0eXBlZGVmIHN0
ZDo6c2V0PGdsOjpDb250ZXh0Kj4gQ29udGV4dFNldDsKKyAgICBDb250ZXh0U2V0IG1Db250ZXh0
U2V0OworCisgICAgcng6OlJlbmRlcmVyICptUmVuZGVyZXI7CisKKyAgICB2b2lkIGluaXRFeHRl
bnNpb25TdHJpbmcoKTsKKyAgICB2b2lkIGluaXRWZW5kb3JTdHJpbmcoKTsKKyAgICBzdGQ6OnN0
cmluZyBtRXh0ZW5zaW9uU3RyaW5nOworICAgIHN0ZDo6c3RyaW5nIG1WZW5kb3JTdHJpbmc7Cit9
OworfQorCisjZW5kaWYgICAvLyBMSUJFR0xfRElTUExBWV9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkVHTC9TdXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1N1cmZhY2UuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9TdXJmYWNlLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0MDggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN1cmZhY2UuY3Bw
OiBJbXBsZW1lbnRzIHRoZSBlZ2w6OlN1cmZhY2UgY2xhc3MsIHJlcHJlc2VudGluZyBhIGRyYXdp
bmcgc3VyZmFjZQorLy8gc3VjaCBhcyB0aGUgY2xpZW50IGFyZWEgb2YgYSB3aW5kb3csIGluY2x1
ZGluZyBhbnkgYmFjayBidWZmZXJzLgorLy8gSW1wbGVtZW50cyBFR0xTdXJmYWNlIGFuZCByZWxh
dGVkIGZ1bmN0aW9uYWxpdHkuIFtFR0wgMS40XSBzZWN0aW9uIDIuMiBwYWdlIDMuCisKKyNpbmNs
dWRlIDx0Y2hhci5oPgorCisjaW5jbHVkZSAibGliRUdML1N1cmZhY2UuaCIKKworI2luY2x1ZGUg
ImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9t
YWluLmgiCisKKyNpbmNsdWRlICJsaWJFR0wvbWFpbi5oIgorI2luY2x1ZGUgImxpYkVHTC9EaXNw
bGF5LmgiCisKK25hbWVzcGFjZSBlZ2wKK3sKKworU3VyZmFjZTo6U3VyZmFjZShEaXNwbGF5ICpk
aXNwbGF5LCBjb25zdCBDb25maWcgKmNvbmZpZywgSFdORCB3aW5kb3csIEVHTGludCBwb3N0U3Vi
QnVmZmVyU3VwcG9ydGVkKSAKKyAgICA6IG1EaXNwbGF5KGRpc3BsYXkpLCBtQ29uZmlnKGNvbmZp
ZyksIG1XaW5kb3cod2luZG93KSwgbVBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQocG9zdFN1YkJ1ZmZl
clN1cHBvcnRlZCkKK3sKKyAgICBtUmVuZGVyZXIgPSBtRGlzcGxheS0+Z2V0UmVuZGVyZXIoKTsK
KyAgICBtU3dhcENoYWluID0gTlVMTDsKKyAgICBtU2hhcmVIYW5kbGUgPSBOVUxMOworICAgIG1U
ZXh0dXJlID0gTlVMTDsKKyAgICBtVGV4dHVyZUZvcm1hdCA9IEVHTF9OT19URVhUVVJFOworICAg
IG1UZXh0dXJlVGFyZ2V0ID0gRUdMX05PX1RFWFRVUkU7CisKKyAgICBtUGl4ZWxBc3BlY3RSYXRp
byA9IChFR0xpbnQpKDEuMCAqIEVHTF9ESVNQTEFZX1NDQUxJTkcpOyAgIC8vIEZJWE1FOiBEZXRl
cm1pbmUgYWN0dWFsIHBpeGVsIGFzcGVjdCByYXRpbworICAgIG1SZW5kZXJCdWZmZXIgPSBFR0xf
QkFDS19CVUZGRVI7CisgICAgbVN3YXBCZWhhdmlvciA9IEVHTF9CVUZGRVJfUFJFU0VSVkVEOwor
ICAgIG1Td2FwSW50ZXJ2YWwgPSAtMTsKKyAgICBtV2lkdGggPSAtMTsKKyAgICBtSGVpZ2h0ID0g
LTE7CisgICAgc2V0U3dhcEludGVydmFsKDEpOworCisgICAgc3ViY2xhc3NXaW5kb3coKTsKK30K
KworU3VyZmFjZTo6U3VyZmFjZShEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBDb25maWcgKmNvbmZp
ZywgSEFORExFIHNoYXJlSGFuZGxlLCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQsIEVHTGVu
dW0gdGV4dHVyZUZvcm1hdCwgRUdMZW51bSB0ZXh0dXJlVHlwZSkKKyAgICA6IG1EaXNwbGF5KGRp
c3BsYXkpLCBtV2luZG93KE5VTEwpLCBtQ29uZmlnKGNvbmZpZyksIG1TaGFyZUhhbmRsZShzaGFy
ZUhhbmRsZSksIG1XaWR0aCh3aWR0aCksIG1IZWlnaHQoaGVpZ2h0KSwgbVBvc3RTdWJCdWZmZXJT
dXBwb3J0ZWQoRUdMX0ZBTFNFKQoreworICAgIG1SZW5kZXJlciA9IG1EaXNwbGF5LT5nZXRSZW5k
ZXJlcigpOworICAgIG1Td2FwQ2hhaW4gPSBOVUxMOworICAgIG1XaW5kb3dTdWJjbGFzc2VkID0g
ZmFsc2U7CisgICAgbVRleHR1cmUgPSBOVUxMOworICAgIG1UZXh0dXJlRm9ybWF0ID0gdGV4dHVy
ZUZvcm1hdDsKKyAgICBtVGV4dHVyZVRhcmdldCA9IHRleHR1cmVUeXBlOworCisgICAgbVBpeGVs
QXNwZWN0UmF0aW8gPSAoRUdMaW50KSgxLjAgKiBFR0xfRElTUExBWV9TQ0FMSU5HKTsgICAvLyBG
SVhNRTogRGV0ZXJtaW5lIGFjdHVhbCBwaXhlbCBhc3BlY3QgcmF0aW8KKyAgICBtUmVuZGVyQnVm
ZmVyID0gRUdMX0JBQ0tfQlVGRkVSOworICAgIG1Td2FwQmVoYXZpb3IgPSBFR0xfQlVGRkVSX1BS
RVNFUlZFRDsKKyAgICBtU3dhcEludGVydmFsID0gLTE7CisgICAgc2V0U3dhcEludGVydmFsKDEp
OworfQorCitTdXJmYWNlOjp+U3VyZmFjZSgpCit7CisgICAgdW5zdWJjbGFzc1dpbmRvdygpOwor
ICAgIHJlbGVhc2UoKTsKK30KKworYm9vbCBTdXJmYWNlOjppbml0aWFsaXplKCkKK3sKKyAgICBp
ZiAoIXJlc2V0U3dhcENoYWluKCkpCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBTdXJmYWNlOjpyZWxlYXNlKCkKK3sKKyAgICBkZWxldGUgbVN3YXBD
aGFpbjsKKyAgICBtU3dhcENoYWluID0gTlVMTDsKKworICAgIGlmIChtVGV4dHVyZSkKKyAgICB7
CisgICAgICAgIG1UZXh0dXJlLT5yZWxlYXNlVGV4SW1hZ2UoKTsKKyAgICAgICAgbVRleHR1cmUg
PSBOVUxMOworICAgIH0KK30KKworYm9vbCBTdXJmYWNlOjpyZXNldFN3YXBDaGFpbigpCit7Cisg
ICAgQVNTRVJUKCFtU3dhcENoYWluKTsKKworICAgIGludCB3aWR0aDsKKyAgICBpbnQgaGVpZ2h0
OworCisgICAgaWYgKG1XaW5kb3cpCisgICAgeworICAgICAgICBSRUNUIHdpbmRvd1JlY3Q7Cisg
ICAgICAgIGlmICghR2V0Q2xpZW50UmVjdChnZXRXaW5kb3dIYW5kbGUoKSwgJndpbmRvd1JlY3Qp
KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoZmFsc2UpOworCisgICAgICAgICAgICBF
UlIoIkNvdWxkIG5vdCByZXRyaWV2ZSB0aGUgd2luZG93IGRpbWVuc2lvbnMiKTsKKyAgICAgICAg
ICAgIHJldHVybiBlcnJvcihFR0xfQkFEX1NVUkZBQ0UsIGZhbHNlKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHdpZHRoID0gd2luZG93UmVjdC5yaWdodCAtIHdpbmRvd1JlY3QubGVmdDsKKyAgICAg
ICAgaGVpZ2h0ID0gd2luZG93UmVjdC5ib3R0b20gLSB3aW5kb3dSZWN0LnRvcDsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gbm9uLXdpbmRvdyBzdXJmYWNlIC0gc2l6ZSBpcyBk
ZXRlcm1pbmVkIGF0IGNyZWF0aW9uCisgICAgICAgIHdpZHRoID0gbVdpZHRoOworICAgICAgICBo
ZWlnaHQgPSBtSGVpZ2h0OworICAgIH0KKworICAgIG1Td2FwQ2hhaW4gPSBtUmVuZGVyZXItPmNy
ZWF0ZVN3YXBDaGFpbihtV2luZG93LCBtU2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1Db25maWctPm1SZW5kZXJUYXJnZXRGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db25maWctPm1EZXB0
aFN0ZW5jaWxGb3JtYXQpOworICAgIGlmICghbVN3YXBDaGFpbikKKyAgICB7CisgICAgICAgIHJl
dHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCBmYWxzZSk7CisgICAgfQorCisgICAgaWYgKCFyZXNl
dFN3YXBDaGFpbih3aWR0aCwgaGVpZ2h0KSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtU3dhcENo
YWluOworICAgICAgICBtU3dhcENoYWluID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFN1cmZhY2U6OnJlc2l6ZVN3YXBD
aGFpbihpbnQgYmFja2J1ZmZlcldpZHRoLCBpbnQgYmFja2J1ZmZlckhlaWdodCkKK3sKKyAgICBB
U1NFUlQoYmFja2J1ZmZlcldpZHRoID49IDAgJiYgYmFja2J1ZmZlckhlaWdodCA+PSAwKTsKKyAg
ICBBU1NFUlQobVN3YXBDaGFpbik7CisKKyAgICBFR0xpbnQgc3RhdHVzID0gbVN3YXBDaGFpbi0+
cmVzaXplKGJhY2tidWZmZXJXaWR0aCwgYmFja2J1ZmZlckhlaWdodCk7CisKKyAgICBpZiAoc3Rh
dHVzID09IEVHTF9DT05URVhUX0xPU1QpCisgICAgeworICAgICAgICBtRGlzcGxheS0+bm90aWZ5
RGV2aWNlTG9zdCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGVsc2UgaWYg
KHN0YXR1cyAhPSBFR0xfU1VDQ0VTUykKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihzdGF0
dXMsIGZhbHNlKTsKKyAgICB9CisKKyAgICBtV2lkdGggPSBiYWNrYnVmZmVyV2lkdGg7CisgICAg
bUhlaWdodCA9IGJhY2tidWZmZXJIZWlnaHQ7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBTdXJmYWNlOjpyZXNldFN3YXBDaGFpbihpbnQgYmFja2J1ZmZlcldpZHRoLCBpbnQgYmFja2J1
ZmZlckhlaWdodCkKK3sKKyAgICBBU1NFUlQoYmFja2J1ZmZlcldpZHRoID49IDAgJiYgYmFja2J1
ZmZlckhlaWdodCA+PSAwKTsKKyAgICBBU1NFUlQobVN3YXBDaGFpbik7CisKKyAgICBFR0xpbnQg
c3RhdHVzID0gbVN3YXBDaGFpbi0+cmVzZXQoYmFja2J1ZmZlcldpZHRoLCBiYWNrYnVmZmVySGVp
Z2h0LCBtU3dhcEludGVydmFsKTsKKworICAgIGlmIChzdGF0dXMgPT0gRUdMX0NPTlRFWFRfTE9T
VCkKKyAgICB7CisgICAgICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNlTG9zdCgpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGVsc2UgaWYgKHN0YXR1cyAhPSBFR0xfU1VDQ0VT
UykKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihzdGF0dXMsIGZhbHNlKTsKKyAgICB9CisK
KyAgICBtV2lkdGggPSBiYWNrYnVmZmVyV2lkdGg7CisgICAgbUhlaWdodCA9IGJhY2tidWZmZXJI
ZWlnaHQ7CisgICAgbVN3YXBJbnRlcnZhbERpcnR5ID0gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBTdXJmYWNlOjpzd2FwUmVjdChFR0xpbnQgeCwgRUdMaW50IHksIEVHTGlu
dCB3aWR0aCwgRUdMaW50IGhlaWdodCkKK3sKKyAgICBpZiAoIW1Td2FwQ2hhaW4pCisgICAgewor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoeCArIHdpZHRoID4gbVdpZHRo
KQorICAgIHsKKyAgICAgICAgd2lkdGggPSBtV2lkdGggLSB4OworICAgIH0KKworICAgIGlmICh5
ICsgaGVpZ2h0ID4gbUhlaWdodCkKKyAgICB7CisgICAgICAgIGhlaWdodCA9IG1IZWlnaHQgLSB5
OworICAgIH0KKworICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgRUdMaW50IHN0YXR1cyA9IG1Td2FwQ2hh
aW4tPnN3YXBSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworCisgICAgaWYgKHN0YXR1cyA9PSBF
R0xfQ09OVEVYVF9MT1NUKQorICAgIHsKKyAgICAgICAgbVJlbmRlcmVyLT5ub3RpZnlEZXZpY2VM
b3N0KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZWxzZSBpZiAoc3RhdHVz
ICE9IEVHTF9TVUNDRVNTKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yKHN0YXR1cywgZmFs
c2UpOworICAgIH0KKworICAgIGNoZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworSFdORCBTdXJmYWNlOjpnZXRXaW5kb3dIYW5kbGUoKQoreworICAg
IHJldHVybiBtV2luZG93OworfQorCisKKyNkZWZpbmUga1N1cmZhY2VQcm9wZXJ0eSBfVEVYVCgi
RWdsOjpTdXJmYWNlT3duZXIiKQorI2RlZmluZSBrUGFyZW50V25kUHJvYyBfVEVYVCgiRWdsOjpT
dXJmYWNlUGFyZW50V25kUHJvYyIpCisKK3N0YXRpYyBMUkVTVUxUIENBTExCQUNLIFN1cmZhY2VX
aW5kb3dQcm9jKEhXTkQgaHduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd3BhcmFtLCBMUEFSQU0g
bHBhcmFtKQoreworICBpZiAobWVzc2FnZSA9PSBXTV9TSVpFKQorICB7CisgICAgICBTdXJmYWNl
KiBzdXJmID0gcmVpbnRlcnByZXRfY2FzdDxTdXJmYWNlKj4oR2V0UHJvcChod25kLCBrU3VyZmFj
ZVByb3BlcnR5KSk7CisgICAgICBpZihzdXJmKQorICAgICAgeworICAgICAgICAgIHN1cmYtPmNo
ZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCk7CisgICAgICB9CisgIH0KKyAgV05EUFJPQyBwcmV2
V25kRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V05EUFJPQyA+KEdldFByb3AoaHduZCwga1BhcmVu
dFduZFByb2MpKTsKKyAgcmV0dXJuIENhbGxXaW5kb3dQcm9jKHByZXZXbmRGdW5jLCBod25kLCBt
ZXNzYWdlLCB3cGFyYW0sIGxwYXJhbSk7Cit9CisKK3ZvaWQgU3VyZmFjZTo6c3ViY2xhc3NXaW5k
b3coKQoreworICAgIGlmICghbVdpbmRvdykKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBEV09SRCBwcm9jZXNzSWQ7CisgICAgRFdPUkQgdGhyZWFkSWQgPSBHZXRXaW5kb3dU
aHJlYWRQcm9jZXNzSWQobVdpbmRvdywgJnByb2Nlc3NJZCk7CisgICAgaWYgKHByb2Nlc3NJZCAh
PSBHZXRDdXJyZW50UHJvY2Vzc0lkKCkgfHwgdGhyZWFkSWQgIT0gR2V0Q3VycmVudFRocmVhZElk
KCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU2V0TGFzdEVycm9yKDAp
OworICAgIExPTkdfUFRSIG9sZFduZFByb2MgPSBTZXRXaW5kb3dMb25nUHRyKG1XaW5kb3csIEdX
TFBfV05EUFJPQywgcmVpbnRlcnByZXRfY2FzdDxMT05HX1BUUj4oU3VyZmFjZVdpbmRvd1Byb2Mp
KTsKKyAgICBpZihvbGRXbmRQcm9jID09IDAgJiYgR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfU1VD
Q0VTUykKKyAgICB7CisgICAgICAgIG1XaW5kb3dTdWJjbGFzc2VkID0gZmFsc2U7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBTZXRQcm9wKG1XaW5kb3csIGtTdXJmYWNlUHJvcGVydHks
IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPih0aGlzKSk7CisgICAgU2V0UHJvcChtV2luZG93LCBr
UGFyZW50V25kUHJvYywgcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KG9sZFduZFByb2MpKTsKKyAg
ICBtV2luZG93U3ViY2xhc3NlZCA9IHRydWU7Cit9CisKK3ZvaWQgU3VyZmFjZTo6dW5zdWJjbGFz
c1dpbmRvdygpCit7CisgICAgaWYoIW1XaW5kb3dTdWJjbGFzc2VkKQorICAgIHsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIHVuLXN1YmNsYXNzCisgICAgTE9OR19QVFIgcGFyZW50
V25kRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TE9OR19QVFI+KEdldFByb3AobVdpbmRvdywga1Bh
cmVudFduZFByb2MpKTsKKworICAgIC8vIENoZWNrIHRoZSB3aW5kb3dwcm9jIGlzIHN0aWxsIFN1
cmZhY2VXaW5kb3dQcm9jLgorICAgIC8vIElmIHRoaXMgYXNzZXJ0IGZhaWxzLCB0aGVuIGl0IGlz
IGxpa2VseSB0aGUgYXBwbGljYXRpb24gaGFzIHN1YmNsYXNzZWQgdGhlCisgICAgLy8gaHduZCBh
cyB3ZWxsIGFuZCBkaWQgbm90IHVuc3ViY2xhc3MgYmVmb3JlIGRlc3Ryb3lpbmcgaXRzIEVHTCBj
b250ZXh0LiBUaGUKKyAgICAvLyBhcHBsaWNhdGlvbiBzaG91bGQgYmUgbW9kaWZpZWQgdG8gZWl0
aGVyIHN1YmNsYXNzIGJlZm9yZSBpbml0aWFsaXppbmcgdGhlCisgICAgLy8gRUdMIGNvbnRleHQs
IG9yIHRvIHVuc3ViY2xhc3MgYmVmb3JlIGRlc3Ryb3lpbmcgdGhlIEVHTCBjb250ZXh0LgorICAg
IGlmKHBhcmVudFduZEZ1bmMpCisgICAgeworICAgICAgICBMT05HX1BUUiBwcmV2V25kRnVuYyA9
IFNldFdpbmRvd0xvbmdQdHIobVdpbmRvdywgR1dMUF9XTkRQUk9DLCBwYXJlbnRXbmRGdW5jKTsK
KyAgICAgICAgQVNTRVJUKHByZXZXbmRGdW5jID09IHJlaW50ZXJwcmV0X2Nhc3Q8TE9OR19QVFI+
KFN1cmZhY2VXaW5kb3dQcm9jKSk7CisgICAgfQorCisgICAgUmVtb3ZlUHJvcChtV2luZG93LCBr
U3VyZmFjZVByb3BlcnR5KTsKKyAgICBSZW1vdmVQcm9wKG1XaW5kb3csIGtQYXJlbnRXbmRQcm9j
KTsKKyAgICBtV2luZG93U3ViY2xhc3NlZCA9IGZhbHNlOworfQorCitib29sIFN1cmZhY2U6OmNo
ZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCkKK3sKKyAgICBSRUNUIGNsaWVudDsKKyAgICBpZiAo
IUdldENsaWVudFJlY3QoZ2V0V2luZG93SGFuZGxlKCksICZjbGllbnQpKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8v
IEdyb3cgdGhlIGJ1ZmZlciBub3csIGlmIHRoZSB3aW5kb3cgaGFzIGdyb3duLiBXZSBuZWVkIHRv
IGdyb3cgbm93IHRvIGF2b2lkIGxvc2luZyBpbmZvcm1hdGlvbi4KKyAgICBpbnQgY2xpZW50V2lk
dGggPSBjbGllbnQucmlnaHQgLSBjbGllbnQubGVmdDsKKyAgICBpbnQgY2xpZW50SGVpZ2h0ID0g
Y2xpZW50LmJvdHRvbSAtIGNsaWVudC50b3A7CisgICAgYm9vbCBzaXplRGlydHkgPSBjbGllbnRX
aWR0aCAhPSBnZXRXaWR0aCgpIHx8IGNsaWVudEhlaWdodCAhPSBnZXRIZWlnaHQoKTsKKworICAg
IGlmIChtU3dhcEludGVydmFsRGlydHkpCisgICAgeworICAgICAgICByZXNldFN3YXBDaGFpbihj
bGllbnRXaWR0aCwgY2xpZW50SGVpZ2h0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoc2l6ZURpcnR5
KQorICAgIHsKKyAgICAgICAgcmVzaXplU3dhcENoYWluKGNsaWVudFdpZHRoLCBjbGllbnRIZWln
aHQpOworICAgIH0KKworICAgIGlmIChtU3dhcEludGVydmFsRGlydHkgfHwgc2l6ZURpcnR5KQor
ICAgIHsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KGdldEN1cnJlbnRE
cmF3U3VyZmFjZSgpKSA9PSB0aGlzKQorICAgICAgICB7CisgICAgICAgICAgICBnbE1ha2VDdXJy
ZW50KGdsR2V0Q3VycmVudENvbnRleHQoKSwgc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZ2V0
Q3VycmVudERpc3BsYXkoKSksIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFN1cmZhY2U6OnN3YXAo
KQoreworICAgIHJldHVybiBzd2FwUmVjdCgwLCAwLCBtV2lkdGgsIG1IZWlnaHQpOworfQorCiti
b29sIFN1cmZhY2U6OnBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lk
dGgsIEVHTGludCBoZWlnaHQpCit7CisgICAgaWYgKCFtUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCkK
KyAgICB7CisgICAgICAgIC8vIFNwZWMgaXMgbm90IGNsZWFyIGFib3V0IGhvdyB0aGlzIHNob3Vs
ZCBiZSBoYW5kbGVkLgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIHN3YXBSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworfQorCitFR0xpbnQgU3VyZmFjZTo6
Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtV2lkdGg7Cit9CisKK0VHTGludCBTdXJm
YWNlOjpnZXRIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBtSGVpZ2h0OworfQorCitFR0xp
bnQgU3VyZmFjZTo6aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQ7Cit9CisKK3J4OjpTd2FwQ2hhaW4gKlN1cmZhY2U6
OmdldFN3YXBDaGFpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Td2FwQ2hhaW47Cit9CisKK3Zv
aWQgU3VyZmFjZTo6c2V0U3dhcEludGVydmFsKEVHTGludCBpbnRlcnZhbCkKK3sKKyAgICBpZiAo
bVN3YXBJbnRlcnZhbCA9PSBpbnRlcnZhbCkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgbVN3YXBJbnRlcnZhbCA9IGludGVydmFsOworICAgIG1Td2FwSW50ZXJ2YWwg
PSBzdGQ6Om1heChtU3dhcEludGVydmFsLCBtUmVuZGVyZXItPmdldE1pblN3YXBJbnRlcnZhbCgp
KTsKKyAgICBtU3dhcEludGVydmFsID0gc3RkOjptaW4obVN3YXBJbnRlcnZhbCwgbVJlbmRlcmVy
LT5nZXRNYXhTd2FwSW50ZXJ2YWwoKSk7CisKKyAgICBtU3dhcEludGVydmFsRGlydHkgPSB0cnVl
OworfQorCitFR0xlbnVtIFN1cmZhY2U6OmdldFRleHR1cmVGb3JtYXQoKSBjb25zdAoreworICAg
IHJldHVybiBtVGV4dHVyZUZvcm1hdDsKK30KKworRUdMZW51bSBTdXJmYWNlOjpnZXRUZXh0dXJl
VGFyZ2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmVUYXJnZXQ7Cit9CisKK3ZvaWQg
U3VyZmFjZTo6c2V0Qm91bmRUZXh0dXJlKGdsOjpUZXh0dXJlMkQgKnRleHR1cmUpCit7CisgICAg
bVRleHR1cmUgPSB0ZXh0dXJlOworfQorCitnbDo6VGV4dHVyZTJEICpTdXJmYWNlOjpnZXRCb3Vu
ZFRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZTsKK30KKworRUdMZW51bSBT
dXJmYWNlOjpnZXRGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBtQ29uZmlnLT5tUmVuZGVy
VGFyZ2V0Rm9ybWF0OworfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkVHTC9TdXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkVHTC9TdXJmYWNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliRUdML1N1cmZhY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDggQEAKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIFN1cmZhY2UuaDogRGVmaW5lcyB0aGUgZWdsOjpTdXJmYWNl
IGNsYXNzLCByZXByZXNlbnRpbmcgYSBkcmF3aW5nIHN1cmZhY2UKKy8vIHN1Y2ggYXMgdGhlIGNs
aWVudCBhcmVhIG9mIGEgd2luZG93LCBpbmNsdWRpbmcgYW55IGJhY2sgYnVmZmVycy4KKy8vIElt
cGxlbWVudHMgRUdMU3VyZmFjZSBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBbRUdMIDEuNF0g
c2VjdGlvbiAyLjIgcGFnZSAzLgorCisjaWZuZGVmIExJQkVHTF9TVVJGQUNFX0hfCisjZGVmaW5l
IExJQkVHTF9TVVJGQUNFX0hfCisKKyNkZWZpbmUgRUdMQVBJCisjaW5jbHVkZSA8RUdML2VnbC5o
PgorCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIGdsCit7Citj
bGFzcyBUZXh0dXJlMkQ7Cit9CituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOworY2xh
c3MgU3dhcENoYWluOworfQorCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBEaXNwbGF5OworY2xh
c3MgQ29uZmlnOworCitjbGFzcyBTdXJmYWNlCit7CisgIHB1YmxpYzoKKyAgICBTdXJmYWNlKERp
c3BsYXkgKmRpc3BsYXksIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsIEhXTkQgd2luZG93LCBF
R0xpbnQgcG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCk7CisgICAgU3VyZmFjZShEaXNwbGF5ICpkaXNw
bGF5LCBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLCBIQU5ETEUgc2hhcmVIYW5kbGUsIEVHTGlu
dCB3aWR0aCwgRUdMaW50IGhlaWdodCwgRUdMZW51bSB0ZXh0dXJlRm9ybWF0LCBFR0xlbnVtIHRl
eHR1cmVUYXJnZXQpOworCisgICAgflN1cmZhY2UoKTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZSgp
OworICAgIHZvaWQgcmVsZWFzZSgpOworICAgIGJvb2wgcmVzZXRTd2FwQ2hhaW4oKTsKKworICAg
IEhXTkQgZ2V0V2luZG93SGFuZGxlKCk7CisgICAgYm9vbCBzd2FwKCk7CisgICAgYm9vbCBwb3N0
U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0
KTsKKworICAgIHZpcnR1YWwgRUdMaW50IGdldFdpZHRoKCkgY29uc3Q7CisgICAgdmlydHVhbCBF
R0xpbnQgZ2V0SGVpZ2h0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEVHTGludCBpc1Bvc3RTdWJC
dWZmZXJTdXBwb3J0ZWQoKSBjb25zdDsKKworICAgIHZpcnR1YWwgcng6OlN3YXBDaGFpbiAqZ2V0
U3dhcENoYWluKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50
ZXJ2YWwpOworICAgIGJvb2wgY2hlY2tGb3JPdXRPZkRhdGVTd2FwQ2hhaW4oKTsgICAvLyBSZXR1
cm5zIHRydWUgaWYgc3dhcGNoYWluIGNoYW5nZWQgZHVlIHRvIHJlc2l6ZSBvciBpbnRlcnZhbCB1
cGRhdGUKKworICAgIHZpcnR1YWwgRUdMZW51bSBnZXRUZXh0dXJlRm9ybWF0KCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBFR0xlbnVtIGdldFRleHR1cmVUYXJnZXQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IEVHTGVudW0gZ2V0Rm9ybWF0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Qm91bmRU
ZXh0dXJlKGdsOjpUZXh0dXJlMkQgKnRleHR1cmUpOworICAgIHZpcnR1YWwgZ2w6OlRleHR1cmUy
RCAqZ2V0Qm91bmRUZXh0dXJlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOKFN1cmZhY2UpOworCisgICAgRGlzcGxheSAqY29uc3QgbURpc3BsYXk7Cisg
ICAgcng6OlJlbmRlcmVyICptUmVuZGVyZXI7CisKKyAgICBIQU5ETEUgbVNoYXJlSGFuZGxlOwor
ICAgIHJ4OjpTd2FwQ2hhaW4gKm1Td2FwQ2hhaW47CisKKyAgICB2b2lkIHN1YmNsYXNzV2luZG93
KCk7CisgICAgdm9pZCB1bnN1YmNsYXNzV2luZG93KCk7CisgICAgYm9vbCByZXNpemVTd2FwQ2hh
aW4oaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpOworICAgIGJvb2wg
cmVzZXRTd2FwQ2hhaW4oaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQp
OworICAgIGJvb2wgc3dhcFJlY3QoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVH
TGludCBoZWlnaHQpOworCisgICAgY29uc3QgSFdORCBtV2luZG93OyAgICAgICAgICAgIC8vIFdp
bmRvdyB0aGF0IHRoZSBzdXJmYWNlIGlzIGNyZWF0ZWQgZm9yLgorICAgIGJvb2wgbVdpbmRvd1N1
YmNsYXNzZWQ7ICAgICAgICAvLyBJbmRpY2F0ZXMgd2hldGhlciB3ZSBzdWNjZXNzZnVsbHkgc3Vi
Y2xhc3NlZCBtV2luZG93IGZvciBXTV9SRVNJWkUgaG9va2luZworICAgIGNvbnN0IGVnbDo6Q29u
ZmlnICptQ29uZmlnOyAgICAvLyBFR0wgY29uZmlnIHN1cmZhY2Ugd2FzIGNyZWF0ZWQgd2l0aAor
ICAgIEVHTGludCBtSGVpZ2h0OyAgICAgICAgICAgICAgICAvLyBIZWlnaHQgb2Ygc3VyZmFjZQor
ICAgIEVHTGludCBtV2lkdGg7ICAgICAgICAgICAgICAgICAvLyBXaWR0aCBvZiBzdXJmYWNlCisv
LyAgRUdMaW50IGhvcml6b250YWxSZXNvbHV0aW9uOyAgIC8vIEhvcml6b250YWwgZG90IHBpdGNo
CisvLyAgRUdMaW50IHZlcnRpY2FsUmVzb2x1dGlvbjsgICAgIC8vIFZlcnRpY2FsIGRvdCBwaXRj
aAorLy8gIEVHTEJvb2xlYW4gbGFyZ2VzdFBCdWZmZXI7ICAgICAvLyBJZiB0cnVlLCBjcmVhdGUg
bGFyZ2VzdCBwYnVmZmVyIHBvc3NpYmxlCisvLyAgRUdMQm9vbGVhbiBtaXBtYXBUZXh0dXJlOyAg
ICAgIC8vIFRydWUgaWYgdGV4dHVyZSBoYXMgbWlwbWFwcworLy8gIEVHTGludCBtaXBtYXBMZXZl
bDsgICAgICAgICAgICAvLyBNaXBtYXAgbGV2ZWwgdG8gcmVuZGVyIHRvCisvLyAgRUdMZW51bSBt
dWx0aXNhbXBsZVJlc29sdmU7ICAgIC8vIE11bHRpc2FtcGxlIHJlc29sdmUgYmVoYXZpb3IKKyAg
ICBFR0xpbnQgbVBpeGVsQXNwZWN0UmF0aW87ICAgICAgLy8gRGlzcGxheSBhc3BlY3QgcmF0aW8K
KyAgICBFR0xlbnVtIG1SZW5kZXJCdWZmZXI7ICAgICAgICAgLy8gUmVuZGVyIGJ1ZmZlcgorICAg
IEVHTGVudW0gbVN3YXBCZWhhdmlvcjsgICAgICAgICAvLyBCdWZmZXIgc3dhcCBiZWhhdmlvcgor
ICAgIEVHTGVudW0gbVRleHR1cmVGb3JtYXQ7ICAgICAgICAvLyBGb3JtYXQgb2YgdGV4dHVyZTog
UkdCLCBSR0JBLCBvciBubyB0ZXh0dXJlCisgICAgRUdMZW51bSBtVGV4dHVyZVRhcmdldDsgICAg
ICAgIC8vIFR5cGUgb2YgdGV4dHVyZTogMkQgb3Igbm8gdGV4dHVyZQorLy8gIEVHTGVudW0gdmdB
bHBoYUZvcm1hdDsgICAgICAgICAvLyBBbHBoYSBmb3JtYXQgZm9yIE9wZW5WRworLy8gIEVHTGVu
dW0gdmdDb2xvclNwYWNlOyAgICAgICAgICAvLyBDb2xvciBzcGFjZSBmb3IgT3BlblZHCisgICAg
RUdMaW50IG1Td2FwSW50ZXJ2YWw7CisgICAgRUdMaW50IG1Qb3N0U3ViQnVmZmVyU3VwcG9ydGVk
OworICAgIAorICAgIGJvb2wgbVN3YXBJbnRlcnZhbERpcnR5OworICAgIGdsOjpUZXh0dXJlMkQg
Km1UZXh0dXJlOworfTsKK30KKworI2VuZGlmICAgLy8gTElCRUdMX1NVUkZBQ0VfSF8KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE4NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
bGliRUdMLmNwcDogSW1wbGVtZW50cyB0aGUgZXhwb3J0ZWQgRUdMIGZ1bmN0aW9ucy4KKworI2lu
Y2x1ZGUgPGV4Y2VwdGlvbj4KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUg
ImNvbW1vbi92ZXJzaW9uLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvVGV4dHVyZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oIgorCisjaW5jbHVkZSAibGli
RUdML21haW4uaCIKKyNpbmNsdWRlICJsaWJFR0wvRGlzcGxheS5oIgorI2luY2x1ZGUgImxpYkVH
TC9TdXJmYWNlLmgiCisKK2Jvb2wgdmFsaWRhdGVEaXNwbGF5KGVnbDo6RGlzcGxheSAqZGlzcGxh
eSkKK3sKKyAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICB7CisgICAgICAg
IHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfRElTUExBWSwgZmFsc2UpOworICAgIH0KKworICAg
IGlmICghZGlzcGxheS0+aXNJbml0aWFsaXplZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVn
bDo6ZXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgZmFsc2UpOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIHZhbGlkYXRlQ29uZmlnKGVnbDo6RGlzcGxheSAqZGlzcGxheSwg
RUdMQ29uZmlnIGNvbmZpZykKK3sKKyAgICBpZiAoIXZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSkK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIWRpc3BsYXkt
PmlzVmFsaWRDb25maWcoY29uZmlnKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9y
KEVHTF9CQURfQ09ORklHLCBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgdmFsaWRhdGVDb250ZXh0KGVnbDo6RGlzcGxheSAqZGlzcGxheSwgZ2w6OkNvbnRleHQg
KmNvbnRleHQpCit7CisgICAgaWYgKCF2YWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFkaXNwbGF5LT5pc1ZhbGlk
Q29udGV4dChjb250ZXh0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9C
QURfQ09OVEVYVCwgZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IHZhbGlkYXRlU3VyZmFjZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGVnbDo6U3VyZmFjZSAqc3Vy
ZmFjZSkKK3sKKyAgICBpZiAoIXZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIWRpc3BsYXktPmlzVmFsaWRTdXJm
YWNlKHN1cmZhY2UpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9T
VVJGQUNFLCBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2V4dGVybiAi
QyIKK3sKK0VHTGludCBfX3N0ZGNhbGwgZWdsR2V0RXJyb3Iodm9pZCkKK3sKKyAgICBFVkVOVCgi
KCkiKTsKKworICAgIEVHTGludCBlcnJvciA9IGVnbDo6Z2V0Q3VycmVudEVycm9yKCk7CisKKyAg
ICBpZiAoZXJyb3IgIT0gRUdMX1NVQ0NFU1MpCisgICAgeworICAgICAgICBlZ2w6OnNldEN1cnJl
bnRFcnJvcihFR0xfU1VDQ0VTUyk7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOworfQorCitF
R0xEaXNwbGF5IF9fc3RkY2FsbCBlZ2xHZXREaXNwbGF5KEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRp
c3BsYXlfaWQpCit7CisgICAgRVZFTlQoIihFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5X2lk
ID0gMHglMC44cCkiLCBkaXNwbGF5X2lkKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGVnbDo6RGlzcGxheTo6Z2V0RGlzcGxheShkaXNwbGF5X2lkKTsKKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdM
X0JBRF9BTExPQywgRUdMX05PX0RJU1BMQVkpOworICAgIH0KK30KKworRUdMQm9vbGVhbiBfX3N0
ZGNhbGwgZWdsSW5pdGlhbGl6ZShFR0xEaXNwbGF5IGRweSwgRUdMaW50ICptYWpvciwgRUdMaW50
ICptaW5vcikKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMaW50
ICptYWpvciA9IDB4JTAuOHAsIEVHTGludCAqbWlub3IgPSAweCUwLjhwKSIsCisgICAgICAgICAg
ZHB5LCBtYWpvciwgbWlub3IpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoZHB5ID09
IEVHTF9OT19ESVNQTEFZKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJv
cihFR0xfQkFEX0RJU1BMQVksIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBlZ2w6
OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOworCisg
ICAgICAgIGlmICghZGlzcGxheS0+aW5pdGlhbGl6ZSgpKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZWdsOjplcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCBFR0xfRkFMU0UpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKG1ham9yKSAqbWFqb3IgPSAxOworICAgICAgICBpZiAobWlu
b3IpICptaW5vciA9IDQ7CisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhFR0xfVFJVRSk7
CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVy
biBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQorCitFR0xC
b29sZWFuIF9fc3RkY2FsbCBlZ2xUZXJtaW5hdGUoRUdMRGlzcGxheSBkcHkpCit7CisgICAgRVZF
TlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHApIiwgZHB5KTsKKworICAgIHRyeQorICAgIHsK
KyAgICAgICAgaWYgKGRweSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9ESVNQTEFZLCBFR0xfRkFMU0UpOworICAgICAg
ICB9CisKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpE
aXNwbGF5Kj4oZHB5KTsKKworICAgICAgICBkaXNwbGF5LT50ZXJtaW5hdGUoKTsKKworICAgICAg
ICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExP
QywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIgKl9fc3RkY2FsbCBlZ2xRdWVy
eVN0cmluZyhFR0xEaXNwbGF5IGRweSwgRUdMaW50IG5hbWUpCit7CisgICAgRVZFTlQoIihFR0xE
aXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTGludCBuYW1lID0gJWQpIiwgZHB5LCBuYW1lKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nh
c3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlRGlzcGxheShk
aXNwbGF5KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0K
KworICAgICAgICBzd2l0Y2ggKG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEVHTF9D
TElFTlRfQVBJUzoKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoIk9wZW5HTF9FUyIp
OworICAgICAgICAgIGNhc2UgRUdMX0VYVEVOU0lPTlM6CisgICAgICAgICAgICByZXR1cm4gZWds
OjpzdWNjZXNzKGRpc3BsYXktPmdldEV4dGVuc2lvblN0cmluZygpKTsKKyAgICAgICAgICBjYXNl
IEVHTF9WRU5ET1I6CisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGRpc3BsYXktPmdl
dFZlbmRvclN0cmluZygpKTsKKyAgICAgICAgICBjYXNlIEVHTF9WRVJTSU9OOgorICAgICAgICAg
ICAgcmV0dXJuIGVnbDo6c3VjY2VzcygiMS40IChBTkdMRSAiIFZFUlNJT05fU1RSSU5HICIpIik7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX1BBUkFNRVRF
UiwgKGNvbnN0IGNoYXIqKU5VTEwpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCAoY29uc3Qg
Y2hhciopTlVMTCk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xHZXRDb25m
aWdzKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgKmNvbmZpZ3MsIEVHTGludCBjb25maWdfc2l6
ZSwgRUdMaW50ICpudW1fY29uZmlnKQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAw
eCUwLjhwLCBFR0xDb25maWcgKmNvbmZpZ3MgPSAweCUwLjhwLCAiCisgICAgICAgICAgIkVHTGlu
dCBjb25maWdfc2l6ZSA9ICVkLCBFR0xpbnQgKm51bV9jb25maWcgPSAweCUwLjhwKSIsCisgICAg
ICAgICAgZHB5LCBjb25maWdzLCBjb25maWdfc2l6ZSwgbnVtX2NvbmZpZyk7CisKKyAgICB0cnkK
KyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6
RGlzcGxheSo+KGRweSk7CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZURpc3BsYXkoZGlzcGxheSkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIW51bV9jb25maWcpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBl
Z2w6OmVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAg
ICAgICAgY29uc3QgRUdMaW50IGF0dHJpYkxpc3RbXSA9ICAgIHtFR0xfTk9ORX07CisKKyAgICAg
ICAgaWYgKCFkaXNwbGF5LT5nZXRDb25maWdzKGNvbmZpZ3MsIGF0dHJpYkxpc3QsIGNvbmZpZ19z
aXplLCBudW1fY29uZmlnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJy
b3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywg
RUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbENob29zZUNv
bmZpZyhFR0xEaXNwbGF5IGRweSwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCwgRUdMQ29uZmln
ICpjb25maWdzLCBFR0xpbnQgY29uZmlnX3NpemUsIEVHTGludCAqbnVtX2NvbmZpZykKK3sKKyAg
ICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgY29uc3QgRUdMaW50ICphdHRyaWJf
bGlzdCA9IDB4JTAuOHAsICIKKyAgICAgICAgICAiRUdMQ29uZmlnICpjb25maWdzID0gMHglMC44
cCwgRUdMaW50IGNvbmZpZ19zaXplID0gJWQsIEVHTGludCAqbnVtX2NvbmZpZyA9IDB4JTAuOHAp
IiwKKyAgICAgICAgICBkcHksIGF0dHJpYl9saXN0LCBjb25maWdzLCBjb25maWdfc2l6ZSwgbnVt
X2NvbmZpZyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxh
eSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisKKyAgICAgICAgaWYgKCF2YWxp
ZGF0ZURpc3BsYXkoZGlzcGxheSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xf
RkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW51bV9jb25maWcpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCBFR0xfRkFM
U0UpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgRUdMaW50IGF0dHJpYkxpc3RbXSA9ICAg
IHtFR0xfTk9ORX07CisKKyAgICAgICAgaWYgKCFhdHRyaWJfbGlzdCkKKyAgICAgICAgeworICAg
ICAgICAgICAgYXR0cmliX2xpc3QgPSBhdHRyaWJMaXN0OworICAgICAgICB9CisKKyAgICAgICAg
ZGlzcGxheS0+Z2V0Q29uZmlncyhjb25maWdzLCBhdHRyaWJfbGlzdCwgY29uZmlnX3NpemUsIG51
bV9jb25maWcpOworCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdMX1RSVUUpOworICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWds
OjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30KKworRUdMQm9vbGVh
biBfX3N0ZGNhbGwgZWdsR2V0Q29uZmlnQXR0cmliKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcg
Y29uZmlnLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKQoreworICAgIEVWRU5UKCIo
RUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44cCwgRUdM
aW50IGF0dHJpYnV0ZSA9ICVkLCBFR0xpbnQgKnZhbHVlID0gMHglMC44cCkiLAorICAgICAgICAg
IGRweSwgY29uZmlnLCBhdHRyaWJ1dGUsIHZhbHVlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5
KTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZykpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIWRpc3BsYXktPmdldENvbmZpZ0F0dHJpYihjb25maWcsIGF0dHJpYnV0ZSwgdmFsdWUp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FUVFJJ
QlVURSwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nl
c3MoRUdMX1RSVUUpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgewor
ICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAg
IH0KK30KKworRUdMU3VyZmFjZSBfX3N0ZGNhbGwgZWdsQ3JlYXRlV2luZG93U3VyZmFjZShFR0xE
aXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMTmF0aXZlV2luZG93VHlwZSB3aW4sIGNv
bnN0IEVHTGludCAqYXR0cmliX2xpc3QpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9
IDB4JTAuOHAsIEVHTENvbmZpZyBjb25maWcgPSAweCUwLjhwLCBFR0xOYXRpdmVXaW5kb3dUeXBl
IHdpbiA9IDB4JTAuOHAsICIKKyAgICAgICAgICAiY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCA9
IDB4JTAuOHApIiwgZHB5LCBjb25maWcsIHdpbiwgYXR0cmliX2xpc3QpOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRp
c3BsYXkqPihkcHkpOworCisgICAgICAgIGlmICghdmFsaWRhdGVDb25maWcoZGlzcGxheSwgY29u
ZmlnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOworICAg
ICAgICB9CisKKyAgICAgICAgSFdORCB3aW5kb3cgPSAoSFdORCl3aW47CisKKyAgICAgICAgaWYg
KCFJc1dpbmRvdyh3aW5kb3cpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpl
cnJvcihFR0xfQkFEX05BVElWRV9XSU5ET1csIEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBkaXNwbGF5LT5jcmVhdGVXaW5kb3dTdXJmYWNlKHdpbmRvdywgY29u
ZmlnLCBhdHRyaWJfbGlzdCk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAg
ICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9OT19TVVJG
QUNFKTsKKyAgICB9Cit9CisKK0VHTFN1cmZhY2UgX19zdGRjYWxsIGVnbENyZWF0ZVBidWZmZXJT
dXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBjb25zdCBFR0xpbnQgKmF0
dHJpYl9saXN0KQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xD
b25maWcgY29uZmlnID0gMHglMC44cCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCA9IDB4JTAu
OHApIiwKKyAgICAgICAgICBkcHksIGNvbmZpZywgYXR0cmliX2xpc3QpOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRp
c3BsYXkqPihkcHkpOworCisgICAgICAgIGlmICghdmFsaWRhdGVDb25maWcoZGlzcGxheSwgY29u
ZmlnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIGRpc3BsYXktPmNyZWF0ZU9mZnNjcmVlblN1cmZhY2Uo
Y29uZmlnLCBOVUxMLCBhdHRyaWJfbGlzdCk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVH
TF9OT19TVVJGQUNFKTsKKyAgICB9Cit9CisKK0VHTFN1cmZhY2UgX19zdGRjYWxsIGVnbENyZWF0
ZVBpeG1hcFN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTE5hdGl2
ZVBpeG1hcFR5cGUgcGl4bWFwLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KQoreworICAgIEVW
RU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44
cCwgRUdMTmF0aXZlUGl4bWFwVHlwZSBwaXhtYXAgPSAweCUwLjhwLCAiCisgICAgICAgICAgImNv
bnN0IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUwLjhwKSIsIGRweSwgY29uZmlnLCBwaXhtYXAs
IGF0dHJpYl9saXN0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpk
aXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKworICAgICAgICBpZiAo
IXZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZykpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBFR0xfTk9fU1VSRkFDRTsKKyAgICAgICAgfQorCisgICAgICAgIFVOSU1QTEVNRU5U
RUQoKTsgICAvLyBGSVhNRQorCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdMX05PX1NV
UkZBQ0UpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAg
ICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfTk9fU1VSRkFDRSk7CisgICAg
fQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xEZXN0cm95U3VyZmFjZShFR0xEaXNwbGF5
IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlKQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkg
PSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwKSIsIGRweSwgc3VyZmFjZSk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRp
Y19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisgICAgICAgIGVnbDo6U3VyZmFjZSAqZWdsU3Vy
ZmFjZSA9IHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KHN1cmZhY2UpOworCisgICAgICAgIGlm
ICghdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN1cmZh
Y2UgPT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6
OmVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAg
IGRpc3BsYXktPmRlc3Ryb3lTdXJmYWNlKChlZ2w6OlN1cmZhY2UqKXN1cmZhY2UpOworCisgICAg
ICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdMX1RSVUUpOworICAgIH0KKyAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FM
TE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30KKworRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsUXVl
cnlTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBhdHRy
aWJ1dGUsIEVHTGludCAqdmFsdWUpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4
JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCBhdHRyaWJ1dGUgPSAl
ZCwgRUdMaW50ICp2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBkcHksIHN1cmZhY2UsIGF0
dHJpYnV0ZSwgdmFsdWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkg
KmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOworICAgICAgICBlZ2w6
OlN1cmZhY2UgKmVnbFN1cmZhY2UgPSAoZWdsOjpTdXJmYWNlKilzdXJmYWNlOworCisgICAgICAg
IGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN1
cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBl
Z2w6OmVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHN3aXRjaCAoYXR0cmlidXRlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBFR0xfVkdf
QUxQSEFfRk9STUFUOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9WR19DT0xPUlNQQUNFOgorICAg
ICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICBjYXNlIEVHTF9DT05GSUdfSUQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVE
KCk7ICAgLy8gRklYTUUKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRUdMX0hF
SUdIVDoKKyAgICAgICAgICAgICp2YWx1ZSA9IGVnbFN1cmZhY2UtPmdldEhlaWdodCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFR0xfSE9SSVpPTlRBTF9SRVNPTFVUSU9O
OgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9MQVJHRVNUX1BCVUZGRVI6CisgICAgICAgICAgICBV
TklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
IGNhc2UgRUdMX01JUE1BUF9URVhUVVJFOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAg
IC8vIEZJWE1FCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9NSVBNQVBf
TEVWRUw6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRUdMX01VTFRJU0FNUExFX1JFU09MVkU6CisgICAg
ICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgIGNhc2UgRUdMX1BJWEVMX0FTUEVDVF9SQVRJTzoKKyAgICAgICAgICAgIFVOSU1Q
TEVNRU5URUQoKTsgICAvLyBGSVhNRQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2Fz
ZSBFR0xfUkVOREVSX0JVRkZFUjoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBG
SVhNRQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFR0xfU1dBUF9CRUhBVklP
UjoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgY2FzZSBFR0xfVEVYVFVSRV9GT1JNQVQ6CisgICAgICAgICAgICBV
TklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
IGNhc2UgRUdMX1RFWFRVUkVfVEFSR0VUOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAg
IC8vIEZJWE1FCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9WRVJUSUNB
TF9SRVNPTFVUSU9OOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9XSURUSDoKKyAgICAgICAgICAg
ICp2YWx1ZSA9IGVnbFN1cmZhY2UtPmdldFdpZHRoKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICBjYXNlIEVHTF9QT1NUX1NVQl9CVUZGRVJfU1VQUE9SVEVEX05WOgorICAgICAgICAg
ICAgKnZhbHVlID0gZWdsU3VyZmFjZS0+aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGVn
bDo6ZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9B
TExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFF1
ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNl
LCBFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpCit7CisgICAgVFJBQ0UoIihFR0xEaXNw
bGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCBh
dHRyaWJ1dGUgPSAlZCwgdm9pZCAqKnZhbHVlID0gMHglMC44cCkiLAorICAgICAgICAgIGRweSwg
c3VyZmFjZSwgYXR0cmlidXRlLCB2YWx1ZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVn
bDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7Cisg
ICAgICAgIGVnbDo6U3VyZmFjZSAqZWdsU3VyZmFjZSA9IChlZ2w6OlN1cmZhY2UqKXN1cmZhY2U7
CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgZWdsU3VyZmFjZSkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9TVVJGQUNFLCBFR0xfRkFMU0UpOworICAgICAg
ICB9CisKKyAgICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpCisgICAgICAgIHsKKyAgICAgICAgICBj
YXNlIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEU6CisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcng6OlN3YXBDaGFpbiAqc3dhcGNoYWluID0gZWdsU3VyZmFjZS0+
Z2V0U3dhcENoYWluKCk7CisgICAgICAgICAgICAgICAgKnZhbHVlID0gKHZvaWQqKSAoc3dhcGNo
YWluID8gc3dhcGNoYWluLT5nZXRTaGFyZUhhbmRsZSgpIDogTlVMTCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9GQUxTRSk7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdM
X0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxs
IGVnbEJpbmRBUEkoRUdMZW51bSBhcGkpCit7CisgICAgRVZFTlQoIihFR0xlbnVtIGFwaSA9IDB4
JVgpIiwgYXBpKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgc3dpdGNoIChhcGkpCisgICAg
ICAgIHsKKyAgICAgICAgICBjYXNlIEVHTF9PUEVOR0xfQVBJOgorICAgICAgICAgIGNhc2UgRUdM
X09QRU5WR19BUEk6CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX1BBUkFN
RVRFUiwgRUdMX0ZBTFNFKTsgICAvLyBOb3Qgc3VwcG9ydGVkIGJ5IHRoaXMgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgICBjYXNlIEVHTF9PUEVOR0xfRVNfQVBJOgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9C
QURfUEFSQU1FVEVSLCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgZWdsOjpzZXRD
dXJyZW50QVBJKGFwaSk7CisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhFR0xfVFJVRSk7
CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVy
biBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQorCitFR0xl
bnVtIF9fc3RkY2FsbCBlZ2xRdWVyeUFQSSh2b2lkKQoreworICAgIEVWRU5UKCIoKSIpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBFR0xlbnVtIEFQSSA9IGVnbDo6Z2V0Q3VycmVudEFQSSgp
OworCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoQVBJKTsKKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JB
RF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVn
bFdhaXRDbGllbnQodm9pZCkKK3sKKyAgICBFVkVOVCgiKCkiKTsKKworICAgIHRyeQorICAgIHsK
KyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisKKyAgICAgICAgcmV0dXJuIGVn
bDo6c3VjY2VzcygwKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAg
ICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFJlbGVhc2VUaHJlYWQodm9pZCkKK3sK
KyAgICBFVkVOVCgiKCkiKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWdsTWFrZUN1cnJl
bnQoRUdMX05PX0RJU1BMQVksIEVHTF9OT19DT05URVhULCBFR0xfTk9fU1VSRkFDRSwgRUdMX05P
X1NVUkZBQ0UpOworCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdMX1RSVUUpOworICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWds
OjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30KKworRUdMU3VyZmFj
ZSBfX3N0ZGNhbGwgZWdsQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoRUdMRGlzcGxheSBk
cHksIEVHTGVudW0gYnVmdHlwZSwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwgRUdMQ29uZmlnIGNv
bmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkKK3sKKyAgICBFVkVOVCgiKEVHTERpc3Bs
YXkgZHB5ID0gMHglMC44cCwgRUdMZW51bSBidWZ0eXBlID0gMHglWCwgRUdMQ2xpZW50QnVmZmVy
IGJ1ZmZlciA9IDB4JTAuOHAsICIKKyAgICAgICAgICAiRUdMQ29uZmlnIGNvbmZpZyA9IDB4JTAu
OHAsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUwLjhwKSIsCisgICAgICAgICAgZHB5
LCBidWZ0eXBlLCBidWZmZXIsIGNvbmZpZywgYXR0cmliX2xpc3QpOworCisgICAgdHJ5CisgICAg
eworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3Bs
YXkqPihkcHkpOworCisgICAgICAgIGlmICghdmFsaWRhdGVDb25maWcoZGlzcGxheSwgY29uZmln
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGJ1ZnR5cGUgIT0gRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hB
TkRMRV9BTkdMRSB8fCAhYnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWds
OjplcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgRUdMX05PX1NVUkZBQ0UpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIGRpc3BsYXktPmNyZWF0ZU9mZnNjcmVlblN1cmZhY2UoY29uZmlnLCAo
SEFORExFKWJ1ZmZlciwgYXR0cmliX2xpc3QpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBF
R0xfTk9fU1VSRkFDRSk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xTdXJm
YWNlQXR0cmliKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBhdHRy
aWJ1dGUsIEVHTGludCB2YWx1ZSkKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHgl
MC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCwgRUdMaW50IGF0dHJpYnV0ZSA9ICVk
LCBFR0xpbnQgdmFsdWUgPSAlZCkiLAorICAgICAgICAgIGRweSwgc3VyZmFjZSwgYXR0cmlidXRl
LCB2YWx1ZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxh
eSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisgICAgICAgIGVnbDo6U3VyZmFj
ZSAqZWdsU3VyZmFjZSA9IHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KHN1cmZhY2UpOworCisg
ICAgICAgIGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAg
VU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2Vz
cyhFR0xfVFJVRSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAg
fQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xCaW5kVGV4SW1hZ2UoRUdMRGlzcGxheSBk
cHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcikKK3sKKyAgICBFVkVOVCgiKEVH
TERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCwgRUdM
aW50IGJ1ZmZlciA9ICVkKSIsIGRweSwgc3VyZmFjZSwgYnVmZmVyKTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNw
bGF5Kj4oZHB5KTsKKyAgICAgICAgZWdsOjpTdXJmYWNlICplZ2xTdXJmYWNlID0gc3RhdGljX2Nh
c3Q8ZWdsOjpTdXJmYWNlKj4oc3VyZmFjZSk7CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVN1cmZh
Y2UoZGlzcGxheSwgZWdsU3VyZmFjZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBF
R0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYnVmZmVyICE9IEVHTF9CQUNLX0JV
RkZFUikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9Q
QVJBTUVURVIsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3VyZmFjZSA9
PSBFR0xfTk9fU1VSRkFDRSB8fCBlZ2xTdXJmYWNlLT5nZXRXaW5kb3dIYW5kbGUoKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9TVVJGQUNFLCBFR0xf
RkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVnbFN1cmZhY2UtPmdldEJvdW5kVGV4
dHVyZSgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFE
X0FDQ0VTUywgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChlZ2xTdXJmYWNl
LT5nZXRUZXh0dXJlRm9ybWF0KCkgPT0gRUdMX05PX1RFWFRVUkUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9GQUxTRSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIWdsQmluZFRleEltYWdlKGVnbFN1cmZhY2UpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX01BVENILCBFR0xfRkFM
U0UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhFR0xfVFJVRSk7
CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVy
biBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQorCitFR0xC
b29sZWFuIF9fc3RkY2FsbCBlZ2xSZWxlYXNlVGV4SW1hZ2UoRUdMRGlzcGxheSBkcHksIEVHTFN1
cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcikKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkg
ZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCwgRUdMaW50IGJ1ZmZl
ciA9ICVkKSIsIGRweSwgc3VyZmFjZSwgYnVmZmVyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5
KTsKKyAgICAgICAgZWdsOjpTdXJmYWNlICplZ2xTdXJmYWNlID0gc3RhdGljX2Nhc3Q8ZWdsOjpT
dXJmYWNlKj4oc3VyZmFjZSk7CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVN1cmZhY2UoZGlzcGxh
eSwgZWdsU3VyZmFjZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoYnVmZmVyICE9IEVHTF9CQUNLX0JVRkZFUikKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9QQVJBTUVURVIs
IEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9f
U1VSRkFDRSB8fCBlZ2xTdXJmYWNlLT5nZXRXaW5kb3dIYW5kbGUoKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9TVVJGQUNFLCBFR0xfRkFMU0UpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGVnbFN1cmZhY2UtPmdldFRleHR1cmVGb3JtYXQoKSA9
PSBFR0xfTk9fVEVYVFVSRSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJy
b3IoRUdMX0JBRF9NQVRDSCwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpU
ZXh0dXJlMkQgKnRleHR1cmUgPSBlZ2xTdXJmYWNlLT5nZXRCb3VuZFRleHR1cmUoKTsKKworICAg
ICAgICBpZiAodGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgdGV4dHVyZS0+cmVsZWFz
ZVRleEltYWdlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVH
TF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9
CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFN3YXBJbnRlcnZhbChFR0xEaXNwbGF5IGRweSwg
RUdMaW50IGludGVydmFsKQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhw
LCBFR0xpbnQgaW50ZXJ2YWwgPSAlZCkiLCBkcHksIGludGVydmFsKTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNw
bGF5Kj4oZHB5KTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgfQorCisgICAg
ICAgIGVnbDo6U3VyZmFjZSAqZHJhd19zdXJmYWNlID0gc3RhdGljX2Nhc3Q8ZWdsOjpTdXJmYWNl
Kj4oZWdsOjpnZXRDdXJyZW50RHJhd1N1cmZhY2UoKSk7CisKKyAgICAgICAgaWYgKGRyYXdfc3Vy
ZmFjZSA9PSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihF
R0xfQkFEX1NVUkZBQ0UsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGRyYXdfc3VyZmFjZS0+c2V0U3dhcEludGVydmFsKGludGVydmFsKTsKKworICAgICAgICByZXR1
cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdM
X0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTENvbnRleHQgX19zdGRjYWxsIGVnbENyZWF0ZUNvbnRl
eHQoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTENvbnRleHQgc2hhcmVfY29u
dGV4dCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkKK3sKKyAgICBFVkVOVCgiKEVHTERpc3Bs
YXkgZHB5ID0gMHglMC44cCwgRUdMQ29uZmlnIGNvbmZpZyA9IDB4JTAuOHAsIEVHTENvbnRleHQg
c2hhcmVfY29udGV4dCA9IDB4JTAuOHAsICIKKyAgICAgICAgICAiY29uc3QgRUdMaW50ICphdHRy
aWJfbGlzdCA9IDB4JTAuOHApIiwgZHB5LCBjb25maWcsIHNoYXJlX2NvbnRleHQsIGF0dHJpYl9s
aXN0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgLy8gR2V0IHRoZSByZXF1ZXN0ZWQgY2xp
ZW50IHZlcnNpb24gKGRlZmF1bHQgaXMgMSkgYW5kIGNoZWNrIGl0IGlzIHR3by4KKyAgICAgICAg
RUdMaW50IGNsaWVudF92ZXJzaW9uID0gMTsKKyAgICAgICAgYm9vbCByZXNldF9ub3RpZmljYXRp
b24gPSBmYWxzZTsKKyAgICAgICAgYm9vbCByb2J1c3RfYWNjZXNzID0gZmFsc2U7CisKKyAgICAg
ICAgaWYgKGF0dHJpYl9saXN0KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IEVH
TGludCogYXR0cmlidXRlID0gYXR0cmliX2xpc3Q7IGF0dHJpYnV0ZVswXSAhPSBFR0xfTk9ORTsg
YXR0cmlidXRlICs9IDIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChh
dHRyaWJ1dGVbMF0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgY2FzZSBF
R0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTjoKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X3Zl
cnNpb24gPSBhdHRyaWJ1dGVbMV07CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgY2FzZSBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNUX0FDQ0VTU19FWFQ6Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVbMV0gPT0gRUdMX1RSVUUpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9y
KEVHTF9CQURfQ09ORklHLCBFR0xfTk9fQ09OVEVYVCk7ICAgLy8gVW5pbXBsZW1lbnRlZAorICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcm9idXN0X2FjY2VzcyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlWzFdICE9
IEVHTF9GQUxTRSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVH
TF9CQURfQVRUUklCVVRFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfQ09OVEVYVF9PUEVOR0xfUkVTRVRfTk9U
SUZJQ0FUSU9OX1NUUkFURUdZX0VYVDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0
ZVsxXSA9PSBFR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc2V0X25vdGlmaWNhdGlvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGF0dHJpYnV0ZVsxXSAhPSBFR0xfTk9fUkVTRVRfTk9USUZJQ0FUSU9OX0VYVCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQVRUUklCVVRF
LCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3Io
RUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19DT05URVhUKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2xpZW50X3ZlcnNpb24gIT0g
MikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9DT05G
SUcsIEVHTF9OT19DT05URVhUKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzaGFyZV9jb250
ZXh0ICYmIHN0YXRpY19jYXN0PGdsOjpDb250ZXh0Kj4oc2hhcmVfY29udGV4dCktPmlzUmVzZXRO
b3RpZmljYXRpb25FbmFibGVkKCkgIT0gcmVzZXRfbm90aWZpY2F0aW9uKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX01BVENILCBFR0xfTk9fQ09OVEVY
VCk7CisgICAgICAgIH0KKworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNf
Y2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOworCisgICAgICAgIGlmICghdmFsaWRhdGVDb25maWco
ZGlzcGxheSwgY29uZmlnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19D
T05URVhUOworICAgICAgICB9CisKKyAgICAgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZGlzcGxh
eS0+Y3JlYXRlQ29udGV4dChjb25maWcsIHN0YXRpY19jYXN0PGdsOjpDb250ZXh0Kj4oc2hhcmVf
Y29udGV4dCksIHJlc2V0X25vdGlmaWNhdGlvbiwgcm9idXN0X2FjY2Vzcyk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGNvbnRleHQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQ09OVEVYVF9M
T1NULCBFR0xfTk9fQ09OVEVYVCk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
KyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9OT19D
T05URVhUKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbERlc3Ryb3lDb250
ZXh0KEVHTERpc3BsYXkgZHB5LCBFR0xDb250ZXh0IGN0eCkKK3sKKyAgICBFVkVOVCgiKEVHTERp
c3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29udGV4dCBjdHggPSAweCUwLjhwKSIsIGRweSwgY3R4
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3Rh
dGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCo+KGN0eCk7CisKKyAgICAgICAgaWYgKCF2YWxp
ZGF0ZUNvbnRleHQoZGlzcGxheSwgY29udGV4dCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3R4ID09IEVHTF9OT19D
T05URVhUKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFE
X0NPTlRFWFQsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBkaXNwbGF5LT5kZXN0
cm95Q29udGV4dChjb250ZXh0KTsKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9U
UlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisK
K0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbE1ha2VDdXJyZW50KEVHTERpc3BsYXkgZHB5LCBFR0xT
dXJmYWNlIGRyYXcsIEVHTFN1cmZhY2UgcmVhZCwgRUdMQ29udGV4dCBjdHgpCit7CisgICAgRVZF
TlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2UgZHJhdyA9IDB4JTAuOHAs
IEVHTFN1cmZhY2UgcmVhZCA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHglMC44cCkiLAor
ICAgICAgICAgIGRweSwgZHJhdywgcmVhZCwgY3R4KTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5
KTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCo+KGN0eCk7CisKKyAgICAgICAgaWYgKGN0eCAhPSBFR0xfTk9fQ09OVEVYVCAmJiAhdmFsaWRh
dGVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgcng6OlJlbmRlcmVyICpyZW5kZXJl
ciA9IGRpc3BsYXktPmdldFJlbmRlcmVyKCk7CisgICAgICAgIGlmIChyZW5kZXJlci0+dGVzdERl
dmljZUxvc3QodHJ1ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7
CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVuZGVyZXItPmlzRGV2aWNlTG9zdCgpKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQ09OVEVYVF9MT1NULCBF
R0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKChkcmF3ICE9IEVHTF9OT19TVVJG
QUNFICYmICF2YWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgc3RhdGljX2Nhc3Q8ZWdsOjpTdXJmYWNl
Kj4oZHJhdykpKSB8fAorICAgICAgICAgICAgKHJlYWQgIT0gRUdMX05PX1NVUkZBQ0UgJiYgIXZh
bGlkYXRlU3VyZmFjZShkaXNwbGF5LCBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihyZWFkKSkp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGRyYXcgIT0gcmVhZCkKKyAgICAgICAgeworICAgICAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgIH0KKworICAgICAgICBlZ2w6OnNldEN1cnJl
bnREaXNwbGF5KGRweSk7CisgICAgICAgIGVnbDo6c2V0Q3VycmVudERyYXdTdXJmYWNlKGRyYXcp
OworICAgICAgICBlZ2w6OnNldEN1cnJlbnRSZWFkU3VyZmFjZShyZWFkKTsKKworICAgICAgICBn
bE1ha2VDdXJyZW50KGNvbnRleHQsIGRpc3BsYXksIHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+
KGRyYXcpKTsKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9
CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6
ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTENvbnRleHQg
X19zdGRjYWxsIGVnbEdldEN1cnJlbnRDb250ZXh0KHZvaWQpCit7CisgICAgRVZFTlQoIigpIik7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIEVHTENvbnRleHQgY29udGV4dCA9IGdsR2V0Q3Vy
cmVudENvbnRleHQoKTsKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGNvbnRleHQpOwor
ICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4g
ZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgfQorfQorCitF
R0xTdXJmYWNlIF9fc3RkY2FsbCBlZ2xHZXRDdXJyZW50U3VyZmFjZShFR0xpbnQgcmVhZGRyYXcp
Cit7CisgICAgRVZFTlQoIihFR0xpbnQgcmVhZGRyYXcgPSAlZCkiLCByZWFkZHJhdyk7CisKKyAg
ICB0cnkKKyAgICB7CisgICAgICAgIGlmIChyZWFkZHJhdyA9PSBFR0xfUkVBRCkKKyAgICAgICAg
eworICAgICAgICAgICAgRUdMU3VyZmFjZSByZWFkID0gZWdsOjpnZXRDdXJyZW50UmVhZFN1cmZh
Y2UoKTsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MocmVhZCk7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZSBpZiAocmVhZGRyYXcgPT0gRUdMX0RSQVcpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEVHTFN1cmZhY2UgZHJhdyA9IGVnbDo6Z2V0Q3VycmVudERyYXdTdXJmYWNlKCk7Cisg
ICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGRyYXcpOworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9Q
QVJBTUVURVIsIEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFE
X0FMTE9DLCBFR0xfTk9fU1VSRkFDRSk7CisgICAgfQorfQorCitFR0xEaXNwbGF5IF9fc3RkY2Fs
bCBlZ2xHZXRDdXJyZW50RGlzcGxheSh2b2lkKQoreworICAgIEVWRU5UKCIoKSIpOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBFR0xEaXNwbGF5IGRweSA9IGVnbDo6Z2V0Q3VycmVudERpc3Bs
YXkoKTsKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGRweSk7CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVH
TF9CQURfQUxMT0MsIEVHTF9OT19ESVNQTEFZKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19z
dGRjYWxsIGVnbFF1ZXJ5Q29udGV4dChFR0xEaXNwbGF5IGRweSwgRUdMQ29udGV4dCBjdHgsIEVH
TGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5
IGRweSA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHglMC44cCwgRUdMaW50IGF0dHJpYnV0
ZSA9ICVkLCBFR0xpbnQgKnZhbHVlID0gMHglMC44cCkiLAorICAgICAgICAgIGRweSwgY3R4LCBh
dHRyaWJ1dGUsIHZhbHVlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNwbGF5
ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKyAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCo+KGN0eCk7CisKKyAg
ICAgICAgaWYgKCF2YWxpZGF0ZUNvbnRleHQoZGlzcGxheSwgY29udGV4dCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBVTklN
UExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKDAp
OworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1
cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30KKworRUdM
Qm9vbGVhbiBfX3N0ZGNhbGwgZWdsV2FpdEdMKHZvaWQpCit7CisgICAgRVZFTlQoIigpIik7CisK
KyAgICB0cnkKKyAgICB7CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorCisg
ICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoMCk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0Ms
IEVHTF9GQUxTRSk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xXYWl0TmF0
aXZlKEVHTGludCBlbmdpbmUpCit7CisgICAgRVZFTlQoIihFR0xpbnQgZW5naW5lID0gJWQpIiwg
ZW5naW5lKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8v
IEZJWE1FCisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcygwKTsKKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdM
X0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxs
IGVnbFN3YXBCdWZmZXJzKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UpCit7Cisg
ICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9
IDB4JTAuOHApIiwgZHB5LCBzdXJmYWNlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWds
OjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKyAg
ICAgICAgZWdsOjpTdXJmYWNlICplZ2xTdXJmYWNlID0gKGVnbDo6U3VyZmFjZSopc3VyZmFjZTsK
KworICAgICAgICBpZiAoIXZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNlKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChkaXNwbGF5LT5nZXRSZW5kZXJlcigpLT5pc0RldmljZUxvc3QoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0NPTlRFWFRfTE9TVCwgRUdMX0ZB
TFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNF
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX1NVUkZB
Q0UsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZWdsU3VyZmFjZS0+c3dh
cCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVF
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgewor
ICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAg
IH0KKworICAgIHJldHVybiBFR0xfRkFMU0U7Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVn
bENvcHlCdWZmZXJzKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTE5hdGl2
ZVBpeG1hcFR5cGUgdGFyZ2V0KQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUw
LjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwLCBFR0xOYXRpdmVQaXhtYXBUeXBlIHRh
cmdldCA9IDB4JTAuOHApIiwgZHB5LCBzdXJmYWNlLCB0YXJnZXQpOworCisgICAgdHJ5CisgICAg
eworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3Bs
YXkqPihkcHkpOworICAgICAgICBlZ2w6OlN1cmZhY2UgKmVnbFN1cmZhY2UgPSBzdGF0aWNfY2Fz
dDxlZ2w6OlN1cmZhY2UqPihzdXJmYWNlKTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlU3VyZmFj
ZShkaXNwbGF5LCBlZ2xTdXJmYWNlKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVH
TF9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkaXNwbGF5LT5nZXRSZW5kZXJlcigp
LT5pc0RldmljZUxvc3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJy
b3IoRUdMX0NPTlRFWFRfTE9TVCwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIFVO
SU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3Mo
MCk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJl
dHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQorCitF
R0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xQb3N0U3ViQnVmZmVyTlYoRUdMRGlzcGxheSBkcHksIEVH
TFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGlu
dCBoZWlnaHQpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1
cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCB4ID0gJWQsIEVHTGludCB5ID0gJWQsIEVH
TGludCB3aWR0aCA9ICVkLCBFR0xpbnQgaGVpZ2h0ID0gJWQpIiwgZHB5LCBzdXJmYWNlLCB4LCB5
LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHggPCAwIHx8
IHkgPCAwIHx8IHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgRUdMX0ZBTFNFKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6
RGlzcGxheSo+KGRweSk7CisgICAgICAgIGVnbDo6U3VyZmFjZSAqZWdsU3VyZmFjZSA9IHN0YXRp
Y19jYXN0PGVnbDo6U3VyZmFjZSo+KHN1cmZhY2UpOworCisgICAgICAgIGlmICghdmFsaWRhdGVT
dXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRpc3BsYXktPmdldFJlbmRl
cmVyKCktPmlzRGV2aWNlTG9zdCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWds
OjplcnJvcihFR0xfQ09OVEVYVF9MT1NULCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChlZ2xTdXJmYWNlLT5wb3N0U3ViQnVmZmVyKHgsIHksIHdpZHRoLCBo
ZWlnaHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9U
UlVFKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAg
eworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOwor
ICAgIH0KKworICAgIHJldHVybiBFR0xfRkFMU0U7Cit9CisKK19fZWdsTXVzdENhc3RUb1Byb3Bl
ckZ1bmN0aW9uUG9pbnRlclR5cGUgX19zdGRjYWxsIGVnbEdldFByb2NBZGRyZXNzKGNvbnN0IGNo
YXIgKnByb2NuYW1lKQoreworICAgIEVWRU5UKCIoY29uc3QgY2hhciAqcHJvY25hbWUgPSBcIiVz
XCIpIiwgcHJvY25hbWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBzdHJ1Y3QgRXh0ZW5z
aW9uCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgICAgICAg
ICBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlIGFkZHJlc3M7CisgICAg
ICAgIH07CisKKyAgICAgICAgc3RhdGljIGNvbnN0IEV4dGVuc2lvbiBlZ2xFeHRlbnNpb25zW10g
PQorICAgICAgICB7CisgICAgICAgICAgICB7ImVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSIs
IChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWVnbFF1ZXJ5U3VyZmFj
ZVBvaW50ZXJBTkdMRX0sCisgICAgICAgICAgICB7ImVnbFBvc3RTdWJCdWZmZXJOViIsIChfX2Vn
bE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWVnbFBvc3RTdWJCdWZmZXJOVn0s
CisgICAgICAgICAgICB7IiIsIE5VTEx9LAorICAgICAgICB9OworCisgICAgICAgIGZvciAodW5z
aWduZWQgaW50IGV4dCA9IDA7IGV4dCA8IEFycmF5U2l6ZShlZ2xFeHRlbnNpb25zKTsgZXh0Kysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAocHJvY25hbWUsIGVnbEV4dGVuc2lv
bnNbZXh0XS5uYW1lKSA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSllZ2xFeHRlbnNpb25z
W2V4dF0uYWRkcmVzczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBnbEdldFByb2NBZGRyZXNzKHByb2NuYW1lKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywg
KF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpTlVMTCk7CisgICAgfQor
fQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wuZGVm
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdM
LmRlZgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wv
bGliRUdMLmRlZgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorTElCUkFSWQlsaWJFR0wK
K0VYUE9SVFMKKwllZ2xCaW5kQVBJICAgICAgICAgICAgICAgICAgICAgIEAxNAorCWVnbEJpbmRU
ZXhJbWFnZSAgICAgICAgICAgICAgICAgQDIwCisJZWdsQ2hvb3NlQ29uZmlnICAgICAgICAgICAg
ICAgICBANworCWVnbENvcHlCdWZmZXJzICAgICAgICAgICAgICAgICAgQDMzCisJZWdsQ3JlYXRl
Q29udGV4dCAgICAgICAgICAgICAgICBAMjMKKwllZ2xDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1
ZmZlciAgICAgICAgQDE4CisJZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UgICAgICAgICBAMTAKKwll
Z2xDcmVhdGVQaXhtYXBTdXJmYWNlICAgICAgICAgIEAxMQorCWVnbENyZWF0ZVdpbmRvd1N1cmZh
Y2UgICAgICAgICAgQDkKKwllZ2xEZXN0cm95Q29udGV4dCAgICAgICAgICAgICAgIEAyNAorCWVn
bERlc3Ryb3lTdXJmYWNlICAgICAgICAgICAgICAgQDEyCisJZWdsR2V0Q29uZmlnQXR0cmliICAg
ICAgICAgICAgICBAOAorCWVnbEdldENvbmZpZ3MgICAgICAgICAgICAgICAgICAgQDYKKwllZ2xH
ZXRDdXJyZW50Q29udGV4dCAgICAgICAgICAgIEAyNgorCWVnbEdldEN1cnJlbnREaXNwbGF5ICAg
ICAgICAgICAgQDI4CisJZWdsR2V0Q3VycmVudFN1cmZhY2UgICAgICAgICAgICBAMjcKKwllZ2xH
ZXREaXNwbGF5ICAgICAgICAgICAgICAgICAgIEAyCisJZWdsR2V0RXJyb3IgICAgICAgICAgICAg
ICAgICAgICBAMQorCWVnbEdldFByb2NBZGRyZXNzICAgICAgICAgICAgICAgQDM0CisJZWdsSW5p
dGlhbGl6ZSAgICAgICAgICAgICAgICAgICBAMworCWVnbE1ha2VDdXJyZW50ICAgICAgICAgICAg
ICAgICAgQDI1CisJZWdsUXVlcnlBUEkgICAgICAgICAgICAgICAgICAgICBAMTUKKwllZ2xRdWVy
eUNvbnRleHQgICAgICAgICAgICAgICAgIEAyOQorCWVnbFF1ZXJ5U3RyaW5nICAgICAgICAgICAg
ICAgICAgQDUKKwllZ2xRdWVyeVN1cmZhY2UgICAgICAgICAgICAgICAgIEAxMworCWVnbFJlbGVh
c2VUZXhJbWFnZSAgICAgICAgICAgICAgQDIxCisJZWdsUmVsZWFzZVRocmVhZCAgICAgICAgICAg
ICAgICBAMTcKKwllZ2xTdXJmYWNlQXR0cmliICAgICAgICAgICAgICAgIEAxOQorCWVnbFN3YXBC
dWZmZXJzICAgICAgICAgICAgICAgICAgQDMyCisJZWdsU3dhcEludGVydmFsICAgICAgICAgICAg
ICAgICBAMjIKKwllZ2xUZXJtaW5hdGUgICAgICAgICAgICAgICAgICAgIEA0CisJZWdsV2FpdENs
aWVudCAgICAgICAgICAgICAgICAgICBAMTYKKwllZ2xXYWl0R0wgICAgICAgICAgICAgICAgICAg
ICAgIEAzMAorCWVnbFdhaXROYXRpdmUgICAgICAgICAgICAgICAgICAgQDMxClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVH
TC9saWJFR0wucmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkVHTC9saWJFR0wucmMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliRUdML2xpYkVHTC5yYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDIgQEAKKy8vIE1p
Y3Jvc29mdCBWaXN1YWwgQysrIGdlbmVyYXRlZCByZXNvdXJjZSBzY3JpcHQuCisvLworI2luY2x1
ZGUgInJlc291cmNlLmgiCisKKyNkZWZpbmUgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUworLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUg
MiByZXNvdXJjZS4KKy8vCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgIi4uL2NvbW1v
bi92ZXJzaW9uLmgiCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisjdW5kZWYgQVBTVFVESU9fUkVB
RE9OTFlfU1lNQk9MUworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gRW5nbGlzaCAoVS5TLikg
cmVzb3VyY2VzCisKKyNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFG
WF9UQVJHX0VOVSkKKyNpZmRlZiBfV0lOMzIKK0xBTkdVQUdFIExBTkdfRU5HTElTSCwgU1VCTEFO
R19FTkdMSVNIX1VTCisjcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQorI2VuZGlmIC8vX1dJTjMyCisK
KyNpZmRlZiBBUFNUVURJT19JTlZPS0VECisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIFRF
WFRJTkNMVURFCisvLworCisxIFRFWFRJTkNMVURFIAorQkVHSU4KKyAgICAicmVzb3VyY2UuaFww
IgorRU5ECisKKzIgVEVYVElOQ0xVREUgCitCRUdJTgorICAgICIjaW5jbHVkZSAiImFmeHJlcy5o
IiJcclxuIgorICAgICIjaW5jbHVkZSAiIi4uL2NvbW1vbi92ZXJzaW9uLmgiIlwwIgorRU5ECisK
KzMgVEVYVElOQ0xVREUgCitCRUdJTgorICAgICJcclxuIgorICAgICJcMCIKK0VORAorCisjZW5k
aWYgICAgLy8gQVBTVFVESU9fSU5WT0tFRAorCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLwor
Ly8gVmVyc2lvbgorLy8KKworVlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPCisgRklMRVZFUlNJ
T04gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLEJVSUxEX1ZFUlNJT04sQlVJTERfUkVWSVNJ
T04KKyBQUk9EVUNUVkVSU0lPTiBNQUpPUl9WRVJTSU9OLE1JTk9SX1ZFUlNJT04sQlVJTERfVkVS
U0lPTixCVUlMRF9SRVZJU0lPTgorIEZJTEVGTEFHU01BU0sgMHgxN0wKKyNpZmRlZiBfREVCVUcK
KyBGSUxFRkxBR1MgMHgxTAorI2Vsc2UKKyBGSUxFRkxBR1MgMHgwTAorI2VuZGlmCisgRklMRU9T
IDB4NEwKKyBGSUxFVFlQRSAweDJMCisgRklMRVNVQlRZUEUgMHgwTAorQkVHSU4KKyAgICBCTE9D
SyAiU3RyaW5nRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgQkxPQ0sgIjA0MDkwNGIwIgor
ICAgICAgICBCRUdJTgorICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJBTkdM
RSBsaWJFR0wgRHluYW1pYyBMaW5rIExpYnJhcnkiCisgICAgICAgICAgICBWQUxVRSAiRmlsZVZl
cnNpb24iLCBWRVJTSU9OX1NUUklORworICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIs
ICJsaWJFR0wiCisgICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIgorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5h
bWUiLCAibGliRUdMLmRsbCIKKyAgICAgICAgICAgIFZBTFVFICJQcml2YXRlQnVpbGQiLCBWRVJT
SU9OX1NUUklORworICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIkFOR0xFIGxpYkVH
TCBEeW5hbWljIExpbmsgTGlicmFyeSIKKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lv
biIsIFZFUlNJT05fU1RSSU5HCisgICAgICAgIEVORAorICAgIEVORAorICAgIEJMT0NLICJWYXJG
aWxlSW5mbyIKKyAgICBCRUdJTgorICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDQwOSwg
MTIwMAorICAgIEVORAorRU5ECisKKyNlbmRpZiAgICAvLyBFbmdsaXNoIChVLlMuKSByZXNvdXJj
ZXMKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKworCisjaWZuZGVmIEFQU1RVRElPX0lOVk9LRUQK
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNM
VURFIDMgcmVzb3VyY2UuCisvLworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisjZW5kaWYgICAg
Ly8gbm90IEFQU1RVRElPX0lOVk9LRUQKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJFR0wvbGliRUdMLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkVHTC9saWJFR0wudmN4cHJvagkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLnZjeHByb2oJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjU4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/
Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHht
bG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMi
Pg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFBy
b2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmln
dXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1Bs
YXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZp
Z3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1
ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZp
Z3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9q
ZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJl
bGVhc2V8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9u
Pg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFs
cyI+DQorICAgIDxQcm9qZWN0R3VpZD57RTc0NkZDQTktNjRDMy00MzNFLTg1RTgtOUE1QTY3QUI3
RUQ2fTwvUHJvamVjdEd1aWQ+DQorICAgIDxSb290TmFtZXNwYWNlPmxpYkVHTDwvUm9vdE5hbWVz
cGFjZT4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAgPC9Qcm9wZXJ0eUdy
b3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAu
RGVmYXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0
aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAg
IDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9u
Pg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1
cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1
cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQor
ICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRp
b25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCisgICAg
PFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+
DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0
aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICA8
L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWlj
cm9zb2Z0LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0
dGluZ3MiPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJv
cGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0i
TG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2lu
MzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3Vw
Pg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0
IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQ
bGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQor
ICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4N
CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNy
b3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBs
YXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJV
c2VyTWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJz
aW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChT
b2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKENv
bmZpZ3VyYXRpb24pXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9MaW5r
SW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRp
b24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+
DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAg
PE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091dERp
cj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQor
ICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCci
PiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisg
ICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L0ludERpcj4NCisgICAg
PExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPExpYnJhcnlQ
YXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgICAgPExpYnJhcnlQYXRoIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4k
KERYU0RLX0RJUilcbGliXHg4NjskKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQorICAgIDxM
aWJyYXJ5UGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgICAgPExpYnJhcnlQYXRo
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij4kKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQorICAgIDxJbmNsdWRlUGF0aCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChEWFNE
S19ESVIpXGluY2x1ZGU7JChWQ0luc3RhbGxEaXIpaW5jbHVkZTskKFZDSW5zdGFsbERpcilhdGxt
ZmNcaW5jbHVkZTskKFdpbmRvd3NTZGtEaXIpaW5jbHVkZTskKEZyYW1ld29ya1NES0RpcilcaW5j
bHVkZTs8L0luY2x1ZGVQYXRoPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0
aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJs
ZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4k
KFByb2plY3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAg
ICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEw7
TElCRUdMX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUoUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWlu
aW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNo
ZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRp
bWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdh
cm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNF
cnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8
RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUx
Mjs0NzAyOyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5n
cz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVw
ZW5kZW5jaWVzPmQzZDkubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxE
ZXBlbmRlbmNpZXM+DQorICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkVHTC5kZWY8L01v
ZHVsZURlZmluaXRpb25GaWxlPg0KKyAgICAgIDxEZWxheUxvYWRETExzPiUoRGVsYXlMb2FkRExM
cyk8L0RlbGF5TG9hZERMTHM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVl
PC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9T
dWJTeXN0ZW0+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDwvRGF0
YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4Njwv
VGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+DQorICAg
ICAgPENvbW1hbmQ+JTQwZWNobyBvbg0KK21rZGlyICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQo
Q29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxpYkVHTC5kbGwiICIkKFByb2plY3RE
aXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxpYkVHTC5s
aWIiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KKyU0MGVjaG8g
b2ZmDQorPC9Db21tYW5kPg0KKyAgICA8L1Bvc3RCdWlsZEV2ZW50Pg0KKyAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+
DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJ
bmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNp
b24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS8u
LjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPkFOR0xFX0RJU0FCTEVfVFJBQ0U7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19V
U1JETEw7TElCRUdMX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYO19T
RUNVUkVfU0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmlu
aXRpb25zPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGli
cmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhl
YWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAg
IDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAg
PERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0
MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2Fi
bGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAg
ICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5j
aWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZp
bGU+bGliRUdMLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAgICAgPERlbGF5TG9hZERM
THM+JShEZWxheUxvYWRETExzKTwvRGVsYXlMb2FkRExMcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1
Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3Vi
U3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRy
dWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVl
PC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4N
CisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5l
Pk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgICAgPFBvc3RCdWls
ZEV2ZW50Pg0KKyAgICAgIDxDb21tYW5kPiU0MGVjaG8gb24NCitta2RpciAiJChQcm9qZWN0RGly
KS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJFR0wuZGxs
IiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIkKE91
dERpcilsaWJFR0wubGliIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24p
XCINCislNDBlY2hvIG9mZg0KKzwvQ29tbWFuZD4NCisgICAgPC9Qb3N0QnVpbGRFdmVudD4NCisg
IDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQorICAgIDxN
aWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0K
KyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5EaXNh
YmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PiQoUHJvamVjdERpcikvLi47ICQoUHJvamVjdERpcikvLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VTUkRM
TDtMSUJFR0xfRVhQT1JUUztfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxN
aW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1l
Q2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVu
dGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8
V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEaXNhYmxlU3BlY2lm
aWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7JShEaXNh
YmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxE
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZv
cm1hdD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vy
cm9yPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0aW9uYWxE
ZXBlbmRlbmNpZXM+ZDNkOS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25h
bERlcGVuZGVuY2llcz4NCisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZpbGU+bGliRUdMLmRlZjwv
TW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAgICAgPERlbGF5TG9hZERMTHM+JShEZWxheUxvYWRE
TExzKTwvRGVsYXlMb2FkRExMcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRy
dWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8
L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9E
YXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0
PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisg
ICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJc
JChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliRUdMLmRsbCIgIiQoUHJvamVj
dERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliRUdM
LmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNo
byBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAgIDxNaWRsPg0KKyAg
ICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAgICA8L01p
ZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0
aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwv
SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+JChQcm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfV0lORE9XUztf
VVNSRExMO0xJQkVHTF9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDtf
U0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxp
YnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRI
ZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAg
ICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7
NDUxMjs0NzAyOyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJu
aW5ncz4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0Rl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwv
VHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAg
ICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQzZDkubGliOyUoQWRkaXRpb25hbERlcGVuZGVu
Y2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE1vZHVsZURlZmluaXRpb25G
aWxlPmxpYkVHTC5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KKyAgICAgIDxEZWxheUxvYWRE
TExzPiUoRGVsYXlMb2FkRExMcyk8L0RlbGF5TG9hZERMTHM+DQorICAgICAgPEdlbmVyYXRlRGVi
dWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1
YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50
cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1
ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+
DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGlu
ZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQb3N0QnVp
bGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJvamVjdERp
cikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliRUdMLmRs
bCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChP
dXREaXIpbGliRUdMLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9u
KVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQor
ICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IkNvbmZpZy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29t
bW9uXGRlYnVnLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXNwbGF5LmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJsaWJFR0wuY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Im1haW4uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlN1cmZh
Y2UuY3BwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IkNvbmZpZy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpc3Bs
YXkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2wu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2xleHQu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2xwbGF0
Zm9ybS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Im1haW4uaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZXNvdXJjZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IlN1cmZhY2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cdmVyc2lv
bi5oIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Tm9uZSBJbmNs
dWRlPSJsaWJFR0wuZGVmIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAg
ICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9ImxpYkVHTC5yYyIgLz4NCisgIDwvSXRlbUdyb3Vw
Pg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5cbGli
R0xFU3YyXGxpYkdMRVN2Mi52Y3hwcm9qIj4NCisgICAgICA8UHJvamVjdD57YjU4NzFhN2EtOTY4
Yy00MmUzLWEzM2ItOTgxZTZmNDQ4ZTc4fTwvUHJvamVjdD4NCisgICAgPC9Qcm9qZWN0UmVmZXJl
bmNlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0
aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRl
bnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJF
R0wvbGliRUdMLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qLmZpbHRl
cnMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJo
dHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAg
PEl0ZW1Hcm91cD4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPg0KKyAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9
PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7
b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPg0KKyAgICA8L0ZpbHRlcj4NCisg
ICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlm
aWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlm
aWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5z
aW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29uZmlnLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cQ29tbW9uXGRlYnVnLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlz
cGxheS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImxpYkVHTC5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Im1haW4uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJT
dXJmYWNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iQ29uZmlnLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpc3Bs
YXkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxFR0xcZWdsLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcRUdMXGVnbGV4dC5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2xwbGF0Zm9ybS5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJtYWluLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlc291cmNlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlN1cmZhY2UuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXHZlcnNpb24uaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICA8L0l0
ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0i
bGliRUdMLnJjIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Tm9u
ZSBJbmNsdWRlPSJsaWJFR0wuZGVmIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorPC9Qcm9qZWN0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJFR0wvbWFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkVHTC9tYWluLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJFR0wvbWFpbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTY2IEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBtYWluLmNwcDogRExMIGVudHJ5IHBvaW50IGFuZCBt
YW5hZ2VtZW50IG9mIHRocmVhZC1sb2NhbCBkYXRhLgorCisjaW5jbHVkZSAibGliRUdML21haW4u
aCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCitzdGF0aWMgRFdPUkQgY3VycmVudFRM
UyA9IFRMU19PVVRfT0ZfSU5ERVhFUzsKKworZXh0ZXJuICJDIiBCT09MIFdJTkFQSSBEbGxNYWlu
KEhJTlNUQU5DRSBpbnN0YW5jZSwgRFdPUkQgcmVhc29uLCBMUFZPSUQgcmVzZXJ2ZWQpCit7Cisg
ICAgc3dpdGNoIChyZWFzb24pCisgICAgeworICAgICAgY2FzZSBETExfUFJPQ0VTU19BVFRBQ0g6
CisgICAgICAgIHsKKyNpZiAhZGVmaW5lZChBTkdMRV9ESVNBQkxFX1RSQUNFKQorICAgICAgICAg
ICAgRklMRSAqZGVidWcgPSBmb3BlbihUUkFDRV9PVVRQVVRfRklMRSwgInJ0Iik7CisKKyAgICAg
ICAgICAgIGlmIChkZWJ1ZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmY2xvc2Uo
ZGVidWcpOworICAgICAgICAgICAgICAgIGRlYnVnID0gZm9wZW4oVFJBQ0VfT1VUUFVUX0ZJTEUs
ICJ3dCIpOyAgIC8vIEVyYXNlCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYg
KGRlYnVnKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZmNsb3NlKGRl
YnVnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisjZW5kaWYKKworICAgICAg
ICAgICAgY3VycmVudFRMUyA9IFRsc0FsbG9jKCk7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50
VExTID09IFRMU19PVVRfT0ZfSU5ERVhFUykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gRmFs
bCB0aHJvdWdodCB0byBpbml0aWFsaXplIGluZGV4CisgICAgICBjYXNlIERMTF9USFJFQURfQVRU
QUNIOgorICAgICAgICB7CisgICAgICAgICAgICBlZ2w6OkN1cnJlbnQgKmN1cnJlbnQgPSAoZWds
OjpDdXJyZW50KilMb2NhbEFsbG9jKExQVFIsIHNpemVvZihlZ2w6OkN1cnJlbnQpKTsKKworICAg
ICAgICAgICAgaWYgKGN1cnJlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVGxz
U2V0VmFsdWUoY3VycmVudFRMUywgY3VycmVudCk7CisKKyAgICAgICAgICAgICAgICBjdXJyZW50
LT5lcnJvciA9IEVHTF9TVUNDRVNTOworICAgICAgICAgICAgICAgIGN1cnJlbnQtPkFQSSA9IEVH
TF9PUEVOR0xfRVNfQVBJOworICAgICAgICAgICAgICAgIGN1cnJlbnQtPmRpc3BsYXkgPSBFR0xf
Tk9fRElTUExBWTsKKyAgICAgICAgICAgICAgICBjdXJyZW50LT5kcmF3U3VyZmFjZSA9IEVHTF9O
T19TVVJGQUNFOworICAgICAgICAgICAgICAgIGN1cnJlbnQtPnJlYWRTdXJmYWNlID0gRUdMX05P
X1NVUkZBQ0U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIERMTF9USFJFQURfREVUQUNIOgorICAgICAgICB7CisgICAgICAgICAgICB2b2lkICpj
dXJyZW50ID0gVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7CisKKyAgICAgICAgICAgIGlmIChjdXJy
ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIExvY2FsRnJlZSgoSExPQ0FMKWN1
cnJlbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBETExfUFJPQ0VTU19ERVRBQ0g6CisgICAgICAgIHsKKyAgICAgICAgICAgIHZvaWQgKmN1
cnJlbnQgPSBUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKKworICAgICAgICAgICAgaWYgKGN1cnJl
bnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTG9jYWxGcmVlKChITE9DQUwpY3Vy
cmVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFRsc0ZyZWUoY3VycmVudFRMUyk7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworbmFtZXNwYWNlIGVnbAorewordm9p
ZCBzZXRDdXJyZW50RXJyb3IoRUdMaW50IGVycm9yKQoreworICAgIEN1cnJlbnQgKmN1cnJlbnQg
PSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7CisKKyAgICBjdXJyZW50LT5lcnJv
ciA9IGVycm9yOworfQorCitFR0xpbnQgZ2V0Q3VycmVudEVycm9yKCkKK3sKKyAgICBDdXJyZW50
ICpjdXJyZW50ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgcmV0
dXJuIGN1cnJlbnQtPmVycm9yOworfQorCit2b2lkIHNldEN1cnJlbnRBUEkoRUdMZW51bSBBUEkp
Cit7CisgICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1ZShjdXJyZW50
VExTKTsKKworICAgIGN1cnJlbnQtPkFQSSA9IEFQSTsKK30KKworRUdMZW51bSBnZXRDdXJyZW50
QVBJKCkKK3sKKyAgICBDdXJyZW50ICpjdXJyZW50ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1
cnJlbnRUTFMpOworCisgICAgcmV0dXJuIGN1cnJlbnQtPkFQSTsKK30KKwordm9pZCBzZXRDdXJy
ZW50RGlzcGxheShFR0xEaXNwbGF5IGRweSkKK3sKKyAgICBDdXJyZW50ICpjdXJyZW50ID0gKEN1
cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgY3VycmVudC0+ZGlzcGxheSA9
IGRweTsKK30KKworRUdMRGlzcGxheSBnZXRDdXJyZW50RGlzcGxheSgpCit7CisgICAgQ3VycmVu
dCAqY3VycmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKKworICAgIHJl
dHVybiBjdXJyZW50LT5kaXNwbGF5OworfQorCit2b2lkIHNldEN1cnJlbnREcmF3U3VyZmFjZShF
R0xTdXJmYWNlIHN1cmZhY2UpCit7CisgICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJyZW50KilU
bHNHZXRWYWx1ZShjdXJyZW50VExTKTsKKworICAgIGN1cnJlbnQtPmRyYXdTdXJmYWNlID0gc3Vy
ZmFjZTsKK30KKworRUdMU3VyZmFjZSBnZXRDdXJyZW50RHJhd1N1cmZhY2UoKQoreworICAgIEN1
cnJlbnQgKmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7CisKKyAg
ICByZXR1cm4gY3VycmVudC0+ZHJhd1N1cmZhY2U7Cit9CisKK3ZvaWQgc2V0Q3VycmVudFJlYWRT
dXJmYWNlKEVHTFN1cmZhY2Ugc3VyZmFjZSkKK3sKKyAgICBDdXJyZW50ICpjdXJyZW50ID0gKEN1
cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgY3VycmVudC0+cmVhZFN1cmZh
Y2UgPSBzdXJmYWNlOworfQorCitFR0xTdXJmYWNlIGdldEN1cnJlbnRSZWFkU3VyZmFjZSgpCit7
CisgICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1ZShjdXJyZW50VExT
KTsKKworICAgIHJldHVybiBjdXJyZW50LT5yZWFkU3VyZmFjZTsKK30KKwordm9pZCBlcnJvcihF
R0xpbnQgZXJyb3JDb2RlKQoreworICAgIGVnbDo6c2V0Q3VycmVudEVycm9yKGVycm9yQ29kZSk7
Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbWFpbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbWFpbi5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9tYWlu
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IG1haW4uaDogTWFuYWdlbWVudCBvZiB0aHJlYWQtbG9jYWwgZGF0YS4KKworI2lmbmRlZiBMSUJF
R0xfTUFJTl9IXworI2RlZmluZSBMSUJFR0xfTUFJTl9IXworCisjZGVmaW5lIEVHTEFQSQorI2lu
Y2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisKK25hbWVzcGFjZSBl
Z2wKK3sKK3N0cnVjdCBDdXJyZW50Cit7CisgICAgRUdMaW50IGVycm9yOworICAgIEVHTGVudW0g
QVBJOworICAgIEVHTERpc3BsYXkgZGlzcGxheTsKKyAgICBFR0xTdXJmYWNlIGRyYXdTdXJmYWNl
OworICAgIEVHTFN1cmZhY2UgcmVhZFN1cmZhY2U7Cit9OworCit2b2lkIHNldEN1cnJlbnRFcnJv
cihFR0xpbnQgZXJyb3IpOworRUdMaW50IGdldEN1cnJlbnRFcnJvcigpOworCit2b2lkIHNldEN1
cnJlbnRBUEkoRUdMZW51bSBBUEkpOworRUdMZW51bSBnZXRDdXJyZW50QVBJKCk7CisKK3ZvaWQg
c2V0Q3VycmVudERpc3BsYXkoRUdMRGlzcGxheSBkcHkpOworRUdMRGlzcGxheSBnZXRDdXJyZW50
RGlzcGxheSgpOworCit2b2lkIHNldEN1cnJlbnREcmF3U3VyZmFjZShFR0xTdXJmYWNlIHN1cmZh
Y2UpOworRUdMU3VyZmFjZSBnZXRDdXJyZW50RHJhd1N1cmZhY2UoKTsKKwordm9pZCBzZXRDdXJy
ZW50UmVhZFN1cmZhY2UoRUdMU3VyZmFjZSBzdXJmYWNlKTsKK0VHTFN1cmZhY2UgZ2V0Q3VycmVu
dFJlYWRTdXJmYWNlKCk7CisKK3ZvaWQgZXJyb3IoRUdMaW50IGVycm9yQ29kZSk7CisKK3RlbXBs
YXRlPGNsYXNzIFQ+Citjb25zdCBUICZlcnJvcihFR0xpbnQgZXJyb3JDb2RlLCBjb25zdCBUICZy
ZXR1cm5WYWx1ZSkKK3sKKyAgICBlcnJvcihlcnJvckNvZGUpOworCisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBUPgorY29uc3QgVCAmc3VjY2Vzcyhjb25zdCBU
ICZyZXR1cm5WYWx1ZSkKK3sKKyAgICBlZ2w6OnNldEN1cnJlbnRFcnJvcihFR0xfU1VDQ0VTUyk7
CisKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK30KKworI2VuZGlmICAvLyBMSUJFR0xf
TUFJTl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9yZXNvdXJj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvcmVz
b3VyY2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJF
R0wvcmVzb3VyY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorLy97e05PX0RFUEVO
REVOQ0lFU319CisvLyBNaWNyb3NvZnQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgaW5jbHVkZSBmaWxl
LgorLy8gVXNlZCBieSBsaWJFR0wucmMKKworLy8gTmV4dCBkZWZhdWx0IHZhbHVlcyBmb3IgbmV3
IG9iamVjdHMKKy8vIAorI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQKKyNpZm5kZWYgQVBTVFVESU9f
UkVBRE9OTFlfU1lNQk9MUworI2RlZmluZSBfQVBTX05FWFRfUkVTT1VSQ0VfVkFMVUUgICAgICAg
IDEwMQorI2RlZmluZSBfQVBTX05FWFRfQ09NTUFORF9WQUxVRSAgICAgICAgIDQwMDAxCisjZGVm
aW5lIF9BUFNfTkVYVF9DT05UUk9MX1ZBTFVFICAgICAgICAgMTAwMQorI2RlZmluZSBfQVBTX05F
WFRfU1lNRURfVkFMVUUgICAgICAgICAgIDEwMQorI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQmluYXJ5U3RyZWFtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9CaW5hcnlTdHJlYW0u
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
QmluYXJ5U3RyZWFtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTY0IEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gQmluYXJ5U3RyZWFtLmg6IFByb3ZpZGVzIGJpbmFyeSBzZXJpYWxpemF0aW9uIG9m
IHNpbXBsZSB0eXBlcy4KKworI2lmbmRlZiBMSUJHTEVTVjJfQklOQVJZU1RSRUFNX0hfCisjZGVm
aW5lIExJQkdMRVNWMl9CSU5BUllTVFJFQU1fSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0
aWxzLmgiCisKK25hbWVzcGFjZSBnbAoreworCitjbGFzcyBCaW5hcnlJbnB1dFN0cmVhbQorewor
ICBwdWJsaWM6CisgICAgQmluYXJ5SW5wdXRTdHJlYW0oY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90
IGxlbmd0aCkKKyAgICB7CisgICAgICAgIG1FcnJvciA9IGZhbHNlOworICAgICAgICBtT2Zmc2V0
ID0gMDsKKyAgICAgICAgbURhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSk7Cisg
ICAgICAgIG1MZW5ndGggPSBsZW5ndGg7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgICAgdm9pZCByZWFkKFQgKnYsIHNpemVfdCBudW0pCisgICAgeworICAgICAgICB1bmlv
bgorICAgICAgICB7CisgICAgICAgICAgICBUIGR1bW15OyAgLy8gQ29tcGlsYXRpb24gZXJyb3Ig
Zm9yIG5vbi10cml2aWFsIHR5cGVzCisgICAgICAgIH0gZHVtbXk7CisgICAgICAgICh2b2lkKSBk
dW1teTsKKworICAgICAgICBpZiAobUVycm9yKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgbGVuZ3RoID0gbnVtICogc2l6ZW9mKFQp
OworCisgICAgICAgIGlmIChtT2Zmc2V0ICsgbGVuZ3RoID4gbUxlbmd0aCkKKyAgICAgICAgewor
ICAgICAgICAgICAgbUVycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIG1lbWNweSh2LCBtRGF0YSArIG1PZmZzZXQsIGxlbmd0aCk7CisgICAgICAg
IG1PZmZzZXQgKz0gbGVuZ3RoOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgor
ICAgIHZvaWQgcmVhZChUICogdikKKyAgICB7CisgICAgICAgIHJlYWQodiwgMSk7CisgICAgfQor
CisgICAgdm9pZCByZWFkKHN0ZDo6c3RyaW5nICp2KQorICAgIHsKKyAgICAgICAgc2l6ZV90IGxl
bmd0aDsKKyAgICAgICAgcmVhZCgmbGVuZ3RoKTsKKworICAgICAgICBpZiAobUVycm9yKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobU9m
ZnNldCArIGxlbmd0aCA+IG1MZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1FcnJvciA9
IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2LT5hc3Np
Z24obURhdGEgKyBtT2Zmc2V0LCBsZW5ndGgpOworICAgICAgICBtT2Zmc2V0ICs9IGxlbmd0aDsK
KyAgICB9CisKKyAgICB2b2lkIHNraXAoc2l6ZV90IGxlbmd0aCkKKyAgICB7CisgICAgICAgIGlm
IChtT2Zmc2V0ICsgbGVuZ3RoID4gbUxlbmd0aCkKKyAgICAgICAgeworICAgICAgICAgICAgbUVy
cm9yID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1P
ZmZzZXQgKz0gbGVuZ3RoOworICAgIH0KKworICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1PZmZzZXQ7CisgICAgfQorCisgICAgYm9vbCBlcnJvcigpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbUVycm9yOworICAgIH0KKworICAgIGJvb2wgZW5k
T2ZTdHJlYW0oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1PZmZzZXQgPT0gbUxlbmd0
aDsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oQmlu
YXJ5SW5wdXRTdHJlYW0pOworICAgIGJvb2wgbUVycm9yOworICAgIHNpemVfdCBtT2Zmc2V0Owor
ICAgIGNvbnN0IGNoYXIgKm1EYXRhOworICAgIHNpemVfdCBtTGVuZ3RoOworfTsKKworY2xhc3Mg
QmluYXJ5T3V0cHV0U3RyZWFtCit7CisgIHB1YmxpYzoKKyAgICBCaW5hcnlPdXRwdXRTdHJlYW0o
KQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHdy
aXRlKGNvbnN0IFQgKnYsIHNpemVfdCBudW0pCisgICAgeworICAgICAgICB1bmlvbgorICAgICAg
ICB7CisgICAgICAgICAgICBUIGR1bW15OyAgLy8gQ29tcGlsYXRpb24gZXJyb3IgZm9yIG5vbi10
cml2aWFsIHR5cGVzCisgICAgICAgIH0gZHVtbXk7CisgICAgICAgICh2b2lkKSBkdW1teTsKKwor
ICAgICAgICBjb25zdCBjaGFyICphc0J5dGVzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4odik7CisgICAgICAgIG1EYXRhLmluc2VydChtRGF0YS5lbmQoKSwgYXNCeXRlcywgYXNCeXRl
cyArIG51bSAqIHNpemVvZihUKSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CisgICAgdm9pZCB3cml0ZShjb25zdCBUICZ2KQorICAgIHsKKyAgICAgICAgd3JpdGUoJnYsIDEp
OworICAgIH0KKworICAgIHZvaWQgd3JpdGUoY29uc3Qgc3RkOjpzdHJpbmcgJnYpCisgICAgewor
ICAgICAgICBzaXplX3QgbGVuZ3RoID0gdi5sZW5ndGgoKTsKKyAgICAgICAgd3JpdGUobGVuZ3Ro
KTsKKworICAgICAgICB3cml0ZSh2LmNfc3RyKCksIGxlbmd0aCk7CisgICAgfQorCisgICAgc2l6
ZV90IGxlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbURhdGEuc2l6ZSgpOwor
ICAgIH0KKworICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1EYXRhLnNpemUoKSA/ICZtRGF0YVswXSA6IE5VTEw7CisgICAgfQorCisgIHByaXZhdGU6
CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEJpbmFyeU91dHB1dFN0cmVhbSk7CisgICAg
c3RkOjp2ZWN0b3I8Y2hhcj4gbURhdGE7Cit9OworfQorCisjZW5kaWYgIC8vIExJQkdMRVNWMl9C
SU5BUllTVFJFQU1fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL0J1ZmZlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL0J1ZmZlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE5
IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDIt
MjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJ1
ZmZlci5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpCdWZmZXIgY2xhc3MsIHJlcHJlc2VudGluZyBz
dG9yYWdlIG9mIHZlcnRleCBhbmQvb3IKKy8vIGluZGV4IGRhdGEuIEltcGxlbWVudHMgR0wgYnVm
ZmVyIG9iamVjdHMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4KKy8vIFtPcGVuR0wgRVMgMi4w
LjI0XSBzZWN0aW9uIDIuOSBwYWdlIDIxLgorCisjaW5jbHVkZSAibGliR0xFU3YyL0J1ZmZlci5o
IgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L1JlbmRlcmVyLmgiCisKK25hbWVzcGFjZSBnbAoreworCitCdWZmZXI6OkJ1ZmZlcihyeDo6UmVu
ZGVyZXIgKnJlbmRlcmVyLCBHTHVpbnQgaWQpIDogUmVmQ291bnRPYmplY3QoaWQpCit7CisgICAg
bVJlbmRlcmVyID0gcmVuZGVyZXI7CisgICAgbVVzYWdlID0gR0xfRFlOQU1JQ19EUkFXOworCisg
ICAgbUJ1ZmZlclN0b3JhZ2UgPSByZW5kZXJlci0+Y3JlYXRlQnVmZmVyU3RvcmFnZSgpOworICAg
IG1TdGF0aWNWZXJ0ZXhCdWZmZXIgPSBOVUxMOworICAgIG1TdGF0aWNJbmRleEJ1ZmZlciA9IE5V
TEw7CisgICAgbVVubW9kaWZpZWREYXRhVXNlID0gMDsKK30KKworQnVmZmVyOjp+QnVmZmVyKCkK
K3sKKyAgICBkZWxldGUgbUJ1ZmZlclN0b3JhZ2U7CisgICAgZGVsZXRlIG1TdGF0aWNWZXJ0ZXhC
dWZmZXI7CisgICAgZGVsZXRlIG1TdGF0aWNJbmRleEJ1ZmZlcjsKK30KKwordm9pZCBCdWZmZXI6
OmJ1ZmZlckRhdGEoY29uc3Qgdm9pZCAqZGF0YSwgR0xzaXplaXB0ciBzaXplLCBHTGVudW0gdXNh
Z2UpCit7CisgICAgbUJ1ZmZlclN0b3JhZ2UtPmNsZWFyKCk7CisgICAgbUJ1ZmZlclN0b3JhZ2Ut
PnNldERhdGEoZGF0YSwgc2l6ZSwgMCk7CisKKyAgICBtVXNhZ2UgPSB1c2FnZTsKKworICAgIGlu
dmFsaWRhdGVTdGF0aWNEYXRhKCk7CisKKyAgICBpZiAodXNhZ2UgPT0gR0xfU1RBVElDX0RSQVcp
CisgICAgeworICAgICAgICBtU3RhdGljVmVydGV4QnVmZmVyID0gbmV3IHJ4OjpTdGF0aWNWZXJ0
ZXhCdWZmZXJJbnRlcmZhY2UobVJlbmRlcmVyKTsKKyAgICAgICAgbVN0YXRpY0luZGV4QnVmZmVy
ID0gbmV3IHJ4OjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZShtUmVuZGVyZXIpOworICAgIH0K
K30KKwordm9pZCBCdWZmZXI6OmJ1ZmZlclN1YkRhdGEoY29uc3Qgdm9pZCAqZGF0YSwgR0xzaXpl
aXB0ciBzaXplLCBHTGludHB0ciBvZmZzZXQpCit7CisgICAgbUJ1ZmZlclN0b3JhZ2UtPnNldERh
dGEoZGF0YSwgc2l6ZSwgb2Zmc2V0KTsKKworICAgIGlmICgobVN0YXRpY1ZlcnRleEJ1ZmZlciAm
JiBtU3RhdGljVmVydGV4QnVmZmVyLT5nZXRCdWZmZXJTaXplKCkgIT0gMCkgfHwgKG1TdGF0aWNJ
bmRleEJ1ZmZlciAmJiBtU3RhdGljSW5kZXhCdWZmZXItPmdldEJ1ZmZlclNpemUoKSAhPSAwKSkK
KyAgICB7CisgICAgICAgIGludmFsaWRhdGVTdGF0aWNEYXRhKCk7CisgICAgfQorCisgICAgbVVu
bW9kaWZpZWREYXRhVXNlID0gMDsKK30KKworcng6OkJ1ZmZlclN0b3JhZ2UgKkJ1ZmZlcjo6Z2V0
U3RvcmFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1CdWZmZXJTdG9yYWdlOworfQorCit1bnNp
Z25lZCBpbnQgQnVmZmVyOjpzaXplKCkKK3sKKyAgICByZXR1cm4gbUJ1ZmZlclN0b3JhZ2UtPmdl
dFNpemUoKTsKK30KKworR0xlbnVtIEJ1ZmZlcjo6dXNhZ2UoKSBjb25zdAoreworICAgIHJldHVy
biBtVXNhZ2U7Cit9CisKK3J4OjpTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKkJ1ZmZlcjo6
Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbVN0YXRpY1ZlcnRleEJ1ZmZl
cjsKK30KKworcng6OlN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlICpCdWZmZXI6OmdldFN0YXRp
Y0luZGV4QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbVN0YXRpY0luZGV4QnVmZmVyOworfQorCit2
b2lkIEJ1ZmZlcjo6aW52YWxpZGF0ZVN0YXRpY0RhdGEoKQoreworICAgIGRlbGV0ZSBtU3RhdGlj
VmVydGV4QnVmZmVyOworICAgIG1TdGF0aWNWZXJ0ZXhCdWZmZXIgPSBOVUxMOworCisgICAgZGVs
ZXRlIG1TdGF0aWNJbmRleEJ1ZmZlcjsKKyAgICBtU3RhdGljSW5kZXhCdWZmZXIgPSBOVUxMOwor
CisgICAgbVVubW9kaWZpZWREYXRhVXNlID0gMDsKK30KKworLy8gQ3JlYXRlcyBzdGF0aWMgYnVm
ZmVycyBpZiBzdWZmaWNpZW50IHVzZWQgZGF0YSBoYXMgYmVlbiBsZWZ0IHVubW9kaWZpZWQKK3Zv
aWQgQnVmZmVyOjpwcm9tb3RlU3RhdGljVXNhZ2UoaW50IGRhdGFTaXplKQoreworICAgIGlmICgh
bVN0YXRpY1ZlcnRleEJ1ZmZlciAmJiAhbVN0YXRpY0luZGV4QnVmZmVyKQorICAgIHsKKyAgICAg
ICAgbVVubW9kaWZpZWREYXRhVXNlICs9IGRhdGFTaXplOworCisgICAgICAgIGlmIChtVW5tb2Rp
ZmllZERhdGFVc2UgPiAzICogbUJ1ZmZlclN0b3JhZ2UtPmdldFNpemUoKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgbVN0YXRpY1ZlcnRleEJ1ZmZlciA9IG5ldyByeDo6U3RhdGljVmVydGV4QnVm
ZmVySW50ZXJmYWNlKG1SZW5kZXJlcik7CisgICAgICAgICAgICBtU3RhdGljSW5kZXhCdWZmZXIg
PSBuZXcgcng6OlN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlKG1SZW5kZXJlcik7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9CdWZmZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvQnVmZmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJ1ZmZlci5oOiBEZWZpbmVzIHRoZSBnbDo6QnVmZmVy
IGNsYXNzLCByZXByZXNlbnRpbmcgc3RvcmFnZSBvZiB2ZXJ0ZXggYW5kL29yCisvLyBpbmRleCBk
YXRhLiBJbXBsZW1lbnRzIEdMIGJ1ZmZlciBvYmplY3RzIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxp
dHkuCisvLyBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAyLjkgcGFnZSAyMS4KKworI2lmbmRl
ZiBMSUJHTEVTVjJfQlVGRkVSX0hfCisjZGVmaW5lIExJQkdMRVNWMl9CVUZGRVJfSF8KKworI2lu
Y2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL1JlZkNvdW50T2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBCdWZmZXJT
dG9yYWdlOworY2xhc3MgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U7CitjbGFzcyBTdGF0aWNW
ZXJ0ZXhCdWZmZXJJbnRlcmZhY2U7Cit9OworCituYW1lc3BhY2UgZ2wKK3sKKworY2xhc3MgQnVm
ZmVyIDogcHVibGljIFJlZkNvdW50T2JqZWN0Cit7CisgIHB1YmxpYzoKKyAgICBCdWZmZXIocng6
OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGlkKTsKKworICAgIHZpcnR1YWwgfkJ1ZmZlcigp
OworCisgICAgdm9pZCBidWZmZXJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIgc2l6
ZSwgR0xlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoY29uc3Qgdm9pZCAqZGF0
YSwgR0xzaXplaXB0ciBzaXplLCBHTGludHB0ciBvZmZzZXQpOworCisgICAgR0xlbnVtIHVzYWdl
KCkgY29uc3Q7CisKKyAgICByeDo6QnVmZmVyU3RvcmFnZSAqZ2V0U3RvcmFnZSgpIGNvbnN0Owor
ICAgIHVuc2lnbmVkIGludCBzaXplKCk7CisKKyAgICByeDo6U3RhdGljVmVydGV4QnVmZmVySW50
ZXJmYWNlICpnZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoKTsKKyAgICByeDo6U3RhdGljSW5kZXhCdWZm
ZXJJbnRlcmZhY2UgKmdldFN0YXRpY0luZGV4QnVmZmVyKCk7CisgICAgdm9pZCBpbnZhbGlkYXRl
U3RhdGljRGF0YSgpOworICAgIHZvaWQgcHJvbW90ZVN0YXRpY1VzYWdlKGludCBkYXRhU2l6ZSk7
CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oQnVmZmVyKTsKKwor
ICAgIHJ4OjpSZW5kZXJlciAqbVJlbmRlcmVyOworICAgIEdMZW51bSBtVXNhZ2U7CisKKyAgICBy
eDo6QnVmZmVyU3RvcmFnZSAqbUJ1ZmZlclN0b3JhZ2U7CisKKyAgICByeDo6U3RhdGljVmVydGV4
QnVmZmVySW50ZXJmYWNlICptU3RhdGljVmVydGV4QnVmZmVyOworICAgIHJ4OjpTdGF0aWNJbmRl
eEJ1ZmZlckludGVyZmFjZSAqbVN0YXRpY0luZGV4QnVmZmVyOworICAgIHVuc2lnbmVkIGludCBt
VW5tb2RpZmllZERhdGFVc2U7Cit9OworCit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9CVUZG
RVJfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9Db250ZXh0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjk3MiBAQAor
I2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBDb250ZXh0
LmNwcDogSW1wbGVtZW50cyB0aGUgZ2w6OkNvbnRleHQgY2xhc3MsIG1hbmFnaW5nIGFsbCBHTCBz
dGF0ZSBhbmQgcGVyZm9ybWluZworLy8gcmVuZGVyaW5nIG9wZXJhdGlvbnMuIEl0IGlzIHRoZSBH
TEVTMiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiBFR0xDb250ZXh0LgorCisjaW5jbHVkZSAi
bGliR0xFU3YyL0NvbnRleHQuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9CdWZmZXIu
aCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvRmVuY2UuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvRnJh
bWVidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL1Byb2dyYW0uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbUJpbmFy
eS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9RdWVyeS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9U
ZXh0dXJlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1Jlc291cmNlTWFuYWdlci5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJlci5oIgorCisjaW5jbHVkZSAibGliRUdML1N1cmZhY2UuaCIKKworI3VuZGVm
IG5lYXIKKyN1bmRlZiBmYXIKKworbmFtZXNwYWNlIGdsCit7CitzdGF0aWMgY29uc3QgY2hhciog
bWFrZVN0YXRpY1N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKQoreworICAgIHN0YXRpYyBz
dGQ6OnNldDxzdGQ6OnN0cmluZz4gc3RyaW5nczsKKyAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz46
Oml0ZXJhdG9yIGl0ID0gc3RyaW5ncy5maW5kKHN0cik7CisgICAgaWYgKGl0ICE9IHN0cmluZ3Mu
ZW5kKCkpCisgICAgICByZXR1cm4gaXQtPmNfc3RyKCk7CisKKyAgICByZXR1cm4gc3RyaW5ncy5p
bnNlcnQoc3RyKS5maXJzdC0+Y19zdHIoKTsKK30KKworQ29udGV4dDo6Q29udGV4dChjb25zdCBn
bDo6Q29udGV4dCAqc2hhcmVDb250ZXh0LCByeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBib29sIG5v
dGlmeVJlc2V0cywgYm9vbCByb2J1c3RBY2Nlc3MpIDogbVJlbmRlcmVyKHJlbmRlcmVyKQorewor
ICAgIEFTU0VSVChyb2J1c3RBY2Nlc3MgPT0gZmFsc2UpOyAgIC8vIFVuaW1wbGVtZW50ZWQKKwor
ICAgIG1GZW5jZUhhbmRsZUFsbG9jYXRvci5zZXRCYXNlSGFuZGxlKDApOworCisgICAgc2V0Q2xl
YXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKKworICAgIG1TdGF0ZS5kZXB0aENsZWFy
VmFsdWUgPSAxLjBmOworICAgIG1TdGF0ZS5zdGVuY2lsQ2xlYXJWYWx1ZSA9IDA7CisKKyAgICBt
U3RhdGUucmFzdGVyaXplci5jdWxsRmFjZSA9IGZhbHNlOworICAgIG1TdGF0ZS5yYXN0ZXJpemVy
LmN1bGxNb2RlID0gR0xfQkFDSzsKKyAgICBtU3RhdGUucmFzdGVyaXplci5mcm9udEZhY2UgPSBH
TF9DQ1c7CisgICAgbVN0YXRlLnJhc3Rlcml6ZXIucG9seWdvbk9mZnNldEZpbGwgPSBmYWxzZTsK
KyAgICBtU3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0RmFjdG9yID0gMC4wZjsKKyAgICBt
U3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0VW5pdHMgPSAwLjBmOworICAgIG1TdGF0ZS5y
YXN0ZXJpemVyLnBvaW50RHJhd01vZGUgPSBmYWxzZTsKKyAgICBtU3RhdGUucmFzdGVyaXplci5t
dWx0aVNhbXBsZSA9IGZhbHNlOworICAgIG1TdGF0ZS5zY2lzc29yVGVzdCA9IGZhbHNlOworICAg
IG1TdGF0ZS5zY2lzc29yLnggPSAwOworICAgIG1TdGF0ZS5zY2lzc29yLnkgPSAwOworICAgIG1T
dGF0ZS5zY2lzc29yLndpZHRoID0gMDsKKyAgICBtU3RhdGUuc2Npc3Nvci5oZWlnaHQgPSAwOwor
CisgICAgbVN0YXRlLmJsZW5kLmJsZW5kID0gZmFsc2U7CisgICAgbVN0YXRlLmJsZW5kLnNvdXJj
ZUJsZW5kUkdCID0gR0xfT05FOworICAgIG1TdGF0ZS5ibGVuZC5zb3VyY2VCbGVuZEFscGhhID0g
R0xfT05FOworICAgIG1TdGF0ZS5ibGVuZC5kZXN0QmxlbmRSR0IgPSBHTF9aRVJPOworICAgIG1T
dGF0ZS5ibGVuZC5kZXN0QmxlbmRBbHBoYSA9IEdMX1pFUk87CisgICAgbVN0YXRlLmJsZW5kLmJs
ZW5kRXF1YXRpb25SR0IgPSBHTF9GVU5DX0FERDsKKyAgICBtU3RhdGUuYmxlbmQuYmxlbmRFcXVh
dGlvbkFscGhhID0gR0xfRlVOQ19BREQ7CisgICAgbVN0YXRlLmJsZW5kLnNhbXBsZUFscGhhVG9D
b3ZlcmFnZSA9IGZhbHNlOworICAgIG1TdGF0ZS5ibGVuZC5kaXRoZXIgPSB0cnVlOworCisgICAg
bVN0YXRlLmJsZW5kQ29sb3IucmVkID0gMDsKKyAgICBtU3RhdGUuYmxlbmRDb2xvci5ncmVlbiA9
IDA7CisgICAgbVN0YXRlLmJsZW5kQ29sb3IuYmx1ZSA9IDA7CisgICAgbVN0YXRlLmJsZW5kQ29s
b3IuYWxwaGEgPSAwOworCisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5kZXB0aFRlc3QgPSBmYWxz
ZTsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLmRlcHRoRnVuYyA9IEdMX0xFU1M7CisgICAgbVN0
YXRlLmRlcHRoU3RlbmNpbC5kZXB0aE1hc2sgPSB0cnVlOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5j
aWwuc3RlbmNpbFRlc3QgPSBmYWxzZTsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxG
dW5jID0gR0xfQUxXQVlTOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbE1hc2sgPSAt
MTsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxXcml0ZW1hc2sgPSAtMTsKKyAgICBt
U3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxCYWNrRnVuYyA9IEdMX0FMV0FZUzsKKyAgICBtU3Rh
dGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxCYWNrTWFzayA9IC0gMTsKKyAgICBtU3RhdGUuZGVwdGhT
dGVuY2lsLnN0ZW5jaWxCYWNrV3JpdGVtYXNrID0gLTE7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNp
bC5zdGVuY2lsRmFpbCA9IEdMX0tFRVA7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2ls
UGFzc0RlcHRoRmFpbCA9IEdMX0tFRVA7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2ls
UGFzc0RlcHRoUGFzcyA9IEdMX0tFRVA7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2ls
QmFja0ZhaWwgPSBHTF9LRUVQOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tQ
YXNzRGVwdGhGYWlsID0gR0xfS0VFUDsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxC
YWNrUGFzc0RlcHRoUGFzcyA9IEdMX0tFRVA7CisKKyAgICBtU3RhdGUuc3RlbmNpbFJlZiA9IDA7
CisgICAgbVN0YXRlLnN0ZW5jaWxCYWNrUmVmID0gMDsKKworICAgIG1TdGF0ZS5zYW1wbGVDb3Zl
cmFnZSA9IGZhbHNlOworICAgIG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZVZhbHVlID0gMS4wZjsKKyAg
ICBtU3RhdGUuc2FtcGxlQ292ZXJhZ2VJbnZlcnQgPSBmYWxzZTsKKyAgICBtU3RhdGUuZ2VuZXJh
dGVNaXBtYXBIaW50ID0gR0xfRE9OVF9DQVJFOworICAgIG1TdGF0ZS5mcmFnbWVudFNoYWRlckRl
cml2YXRpdmVIaW50ID0gR0xfRE9OVF9DQVJFOworCisgICAgbVN0YXRlLmxpbmVXaWR0aCA9IDEu
MGY7CisKKyAgICBtU3RhdGUudmlld3BvcnQueCA9IDA7CisgICAgbVN0YXRlLnZpZXdwb3J0Lnkg
PSAwOworICAgIG1TdGF0ZS52aWV3cG9ydC53aWR0aCA9IDA7CisgICAgbVN0YXRlLnZpZXdwb3J0
LmhlaWdodCA9IDA7CisgICAgbVN0YXRlLnpOZWFyID0gMC4wZjsKKyAgICBtU3RhdGUuekZhciA9
IDEuMGY7CisKKyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrUmVkID0gdHJ1ZTsKKyAgICBtU3Rh
dGUuYmxlbmQuY29sb3JNYXNrR3JlZW4gPSB0cnVlOworICAgIG1TdGF0ZS5ibGVuZC5jb2xvck1h
c2tCbHVlID0gdHJ1ZTsKKyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQWxwaGEgPSB0cnVlOwor
CisgICAgaWYgKHNoYXJlQ29udGV4dCAhPSBOVUxMKQorICAgIHsKKyAgICAgICAgbVJlc291cmNl
TWFuYWdlciA9IHNoYXJlQ29udGV4dC0+bVJlc291cmNlTWFuYWdlcjsKKyAgICAgICAgbVJlc291
cmNlTWFuYWdlci0+YWRkUmVmKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1S
ZXNvdXJjZU1hbmFnZXIgPSBuZXcgUmVzb3VyY2VNYW5hZ2VyKG1SZW5kZXJlcik7CisgICAgfQor
CisgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMy43IHBhZ2UgODM6CisgICAgLy8g
SW4gdGhlIGluaXRpYWwgc3RhdGUsIFRFWFRVUkVfMkQgYW5kIFRFWFRVUkVfQ1VCRV9NQVAgaGF2
ZSB0d29kaW1lbnNpb25hbAorICAgIC8vIGFuZCBjdWJlIG1hcCB0ZXh0dXJlIHN0YXRlIHZlY3Rv
cnMgcmVzcGVjdGl2ZWx5IGFzc29jaWF0ZWQgd2l0aCB0aGVtLgorICAgIC8vIEluIG9yZGVyIHRo
YXQgYWNjZXNzIHRvIHRoZXNlIGluaXRpYWwgdGV4dHVyZXMgbm90IGJlIGxvc3QsIHRoZXkgYXJl
IHRyZWF0ZWQgYXMgdGV4dHVyZQorICAgIC8vIG9iamVjdHMgYWxsIG9mIHdob3NlIG5hbWVzIGFy
ZSAwLgorCisgICAgbVRleHR1cmUyRFplcm8uc2V0KG5ldyBUZXh0dXJlMkQobVJlbmRlcmVyLCAw
KSk7CisgICAgbVRleHR1cmVDdWJlTWFwWmVyby5zZXQobmV3IFRleHR1cmVDdWJlTWFwKG1SZW5k
ZXJlciwgMCkpOworCisgICAgbVN0YXRlLmFjdGl2ZVNhbXBsZXIgPSAwOworICAgIGJpbmRBcnJh
eUJ1ZmZlcigwKTsKKyAgICBiaW5kRWxlbWVudEFycmF5QnVmZmVyKDApOworICAgIGJpbmRUZXh0
dXJlQ3ViZU1hcCgwKTsKKyAgICBiaW5kVGV4dHVyZTJEKDApOworICAgIGJpbmRSZWFkRnJhbWVi
dWZmZXIoMCk7CisgICAgYmluZERyYXdGcmFtZWJ1ZmZlcigwKTsKKyAgICBiaW5kUmVuZGVyYnVm
ZmVyKDApOworCisgICAgbVN0YXRlLmN1cnJlbnRQcm9ncmFtID0gMDsKKyAgICBtQ3VycmVudFBy
b2dyYW1CaW5hcnkuc2V0KE5VTEwpOworCisgICAgbVN0YXRlLnBhY2tBbGlnbm1lbnQgPSA0Owor
ICAgIG1TdGF0ZS51bnBhY2tBbGlnbm1lbnQgPSA0OworICAgIG1TdGF0ZS5wYWNrUmV2ZXJzZVJv
d09yZGVyID0gZmFsc2U7CisKKyAgICBtRXh0ZW5zaW9uU3RyaW5nID0gTlVMTDsKKyAgICBtUmVu
ZGVyZXJTdHJpbmcgPSBOVUxMOworCisgICAgbUludmFsaWRFbnVtID0gZmFsc2U7CisgICAgbUlu
dmFsaWRWYWx1ZSA9IGZhbHNlOworICAgIG1JbnZhbGlkT3BlcmF0aW9uID0gZmFsc2U7CisgICAg
bU91dE9mTWVtb3J5ID0gZmFsc2U7CisgICAgbUludmFsaWRGcmFtZWJ1ZmZlck9wZXJhdGlvbiA9
IGZhbHNlOworCisgICAgbUhhc0JlZW5DdXJyZW50ID0gZmFsc2U7CisgICAgbUNvbnRleHRMb3N0
ID0gZmFsc2U7CisgICAgbVJlc2V0U3RhdHVzID0gR0xfTk9fRVJST1I7CisgICAgbVJlc2V0U3Ry
YXRlZ3kgPSAobm90aWZ5UmVzZXRzID8gR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCA6IEdM
X05PX1JFU0VUX05PVElGSUNBVElPTl9FWFQpOworICAgIG1Sb2J1c3RBY2Nlc3MgPSByb2J1c3RB
Y2Nlc3M7CisKKyAgICBtU3VwcG9ydHNCR1JBVGV4dHVyZXMgPSBmYWxzZTsKKyAgICBtU3VwcG9y
dHNEWFQxVGV4dHVyZXMgPSBmYWxzZTsKKyAgICBtU3VwcG9ydHNEWFQzVGV4dHVyZXMgPSBmYWxz
ZTsKKyAgICBtU3VwcG9ydHNEWFQ1VGV4dHVyZXMgPSBmYWxzZTsKKyAgICBtU3VwcG9ydHNFdmVu
dFF1ZXJpZXMgPSBmYWxzZTsKKyAgICBtU3VwcG9ydHNPY2NsdXNpb25RdWVyaWVzID0gZmFsc2U7
CisgICAgbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cyA9IDA7Cit9CisKK0NvbnRleHQ6On5D
b250ZXh0KCkKK3sKKyAgICBpZiAobVN0YXRlLmN1cnJlbnRQcm9ncmFtICE9IDApCisgICAgewor
ICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UHJv
Z3JhbShtU3RhdGUuY3VycmVudFByb2dyYW0pOworICAgICAgICBpZiAocHJvZ3JhbU9iamVjdCkK
KyAgICAgICAgeworICAgICAgICAgICAgcHJvZ3JhbU9iamVjdC0+cmVsZWFzZSgpOworICAgICAg
ICB9CisgICAgICAgIG1TdGF0ZS5jdXJyZW50UHJvZ3JhbSA9IDA7CisgICAgfQorICAgIG1DdXJy
ZW50UHJvZ3JhbUJpbmFyeS5zZXQoTlVMTCk7CisKKyAgICB3aGlsZSAoIW1GcmFtZWJ1ZmZlck1h
cC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlRnJhbWVidWZmZXIobUZyYW1lYnVmZmVy
TWFwLmJlZ2luKCktPmZpcnN0KTsKKyAgICB9CisKKyAgICB3aGlsZSAoIW1GZW5jZU1hcC5lbXB0
eSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlRmVuY2UobUZlbmNlTWFwLmJlZ2luKCktPmZpcnN0
KTsKKyAgICB9CisKKyAgICB3aGlsZSAoIW1RdWVyeU1hcC5lbXB0eSgpKQorICAgIHsKKyAgICAg
ICAgZGVsZXRlUXVlcnkobVF1ZXJ5TWFwLmJlZ2luKCktPmZpcnN0KTsKKyAgICB9CisKKyAgICBm
b3IgKGludCB0eXBlID0gMDsgdHlwZSA8IFRFWFRVUkVfVFlQRV9DT1VOVDsgdHlwZSsrKQorICAg
IHsKKyAgICAgICAgZm9yIChpbnQgc2FtcGxlciA9IDA7IHNhbXBsZXIgPCBJTVBMRU1FTlRBVElP
Tl9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUzsgc2FtcGxlcisrKQorICAgICAgICB7
CisgICAgICAgICAgICBtU3RhdGUuc2FtcGxlclRleHR1cmVbdHlwZV1bc2FtcGxlcl0uc2V0KE5V
TEwpOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChpbnQgdHlwZSA9IDA7IHR5cGUgPCBU
RVhUVVJFX1RZUEVfQ09VTlQ7IHR5cGUrKykKKyAgICB7CisgICAgICAgIG1JbmNvbXBsZXRlVGV4
dHVyZXNbdHlwZV0uc2V0KE5VTEwpOworICAgIH0KKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBtU3RhdGUudmVydGV4QXR0
cmlidXRlW2ldLm1Cb3VuZEJ1ZmZlci5zZXQoTlVMTCk7CisgICAgfQorCisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBRVUVSWV9UWVBFX0NPVU5UOyBpKyspCisgICAgeworICAgICAgICBtU3RhdGUu
YWN0aXZlUXVlcnlbaV0uc2V0KE5VTEwpOworICAgIH0KKworICAgIG1TdGF0ZS5hcnJheUJ1ZmZl
ci5zZXQoTlVMTCk7CisgICAgbVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZlci5zZXQoTlVMTCk7Cisg
ICAgbVN0YXRlLnJlbmRlcmJ1ZmZlci5zZXQoTlVMTCk7CisKKyAgICBtVGV4dHVyZTJEWmVyby5z
ZXQoTlVMTCk7CisgICAgbVRleHR1cmVDdWJlTWFwWmVyby5zZXQoTlVMTCk7CisKKyAgICBtUmVz
b3VyY2VNYW5hZ2VyLT5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6bWFrZUN1cnJlbnQo
ZWdsOjpTdXJmYWNlICpzdXJmYWNlKQoreworICAgIGlmICghbUhhc0JlZW5DdXJyZW50KQorICAg
IHsKKyAgICAgICAgbU1ham9yU2hhZGVyTW9kZWwgPSBtUmVuZGVyZXItPmdldE1ham9yU2hhZGVy
TW9kZWwoKTsKKyAgICAgICAgbU1heGltdW1Qb2ludFNpemUgPSBtUmVuZGVyZXItPmdldE1heFBv
aW50U2l6ZSgpOworICAgICAgICBtU3VwcG9ydHNWZXJ0ZXhUZXh0dXJlID0gbVJlbmRlcmVyLT5n
ZXRWZXJ0ZXhUZXh0dXJlU3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNOb25Qb3dlcjJUZXh0
dXJlID0gbVJlbmRlcmVyLT5nZXROb25Qb3dlcjJUZXh0dXJlU3VwcG9ydCgpOworICAgICAgICBt
U3VwcG9ydHNJbnN0YW5jaW5nID0gbVJlbmRlcmVyLT5nZXRJbnN0YW5jaW5nU3VwcG9ydCgpOwor
CisgICAgICAgIG1NYXhWaWV3cG9ydERpbWVuc2lvbiA9IG1SZW5kZXJlci0+Z2V0TWF4Vmlld3Bv
cnREaW1lbnNpb24oKTsKKyAgICAgICAgbU1heFRleHR1cmVEaW1lbnNpb24gPSBzdGQ6Om1pbihz
dGQ6Om1pbihtUmVuZGVyZXItPmdldE1heFRleHR1cmVXaWR0aCgpLCBtUmVuZGVyZXItPmdldE1h
eFRleHR1cmVIZWlnaHQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGludClnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfU0laRSk7CisgICAgICAgIG1N
YXhDdWJlVGV4dHVyZURpbWVuc2lvbiA9IHN0ZDo6bWluKG1NYXhUZXh0dXJlRGltZW5zaW9uLCAo
aW50KWdsOjpJTVBMRU1FTlRBVElPTl9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFKTsKKyAgICAg
ICAgbU1heFJlbmRlcmJ1ZmZlckRpbWVuc2lvbiA9IG1NYXhUZXh0dXJlRGltZW5zaW9uOworICAg
ICAgICBtTWF4VGV4dHVyZUxldmVsID0gbG9nMihtTWF4VGV4dHVyZURpbWVuc2lvbikgKyAxOwor
ICAgICAgICBtTWF4VGV4dHVyZUFuaXNvdHJvcHkgPSBtUmVuZGVyZXItPmdldFRleHR1cmVNYXhB
bmlzb3Ryb3B5KCk7CisgICAgICAgIFRSQUNFKCJNYXhUZXh0dXJlRGltZW5zaW9uPSVkLCBNYXhD
dWJlVGV4dHVyZURpbWVuc2lvbj0lZCwgTWF4UmVuZGVyYnVmZmVyRGltZW5zaW9uPSVkLCBNYXhU
ZXh0dXJlTGV2ZWw9JWQsIE1heFRleHR1cmVBbmlzb3Ryb3B5PSVmIiwKKyAgICAgICAgICAgICAg
bU1heFRleHR1cmVEaW1lbnNpb24sIG1NYXhDdWJlVGV4dHVyZURpbWVuc2lvbiwgbU1heFJlbmRl
cmJ1ZmZlckRpbWVuc2lvbiwgbU1heFRleHR1cmVMZXZlbCwgbU1heFRleHR1cmVBbmlzb3Ryb3B5
KTsKKworICAgICAgICBtU3VwcG9ydHNFdmVudFF1ZXJpZXMgPSBtUmVuZGVyZXItPmdldEV2ZW50
UXVlcnlTdXBwb3J0KCk7CisgICAgICAgIG1TdXBwb3J0c09jY2x1c2lvblF1ZXJpZXMgPSBtUmVu
ZGVyZXItPmdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNCR1JB
VGV4dHVyZXMgPSBtUmVuZGVyZXItPmdldEJHUkFUZXh0dXJlU3VwcG9ydCgpOworICAgICAgICBt
U3VwcG9ydHNEWFQxVGV4dHVyZXMgPSBtUmVuZGVyZXItPmdldERYVDFUZXh0dXJlU3VwcG9ydCgp
OworICAgICAgICBtU3VwcG9ydHNEWFQzVGV4dHVyZXMgPSBtUmVuZGVyZXItPmdldERYVDNUZXh0
dXJlU3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNEWFQ1VGV4dHVyZXMgPSBtUmVuZGVyZXIt
PmdldERYVDVUZXh0dXJlU3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNGbG9hdDMyVGV4dHVy
ZXMgPSBtUmVuZGVyZXItPmdldEZsb2F0MzJUZXh0dXJlU3VwcG9ydCgmbVN1cHBvcnRzRmxvYXQz
MkxpbmVhckZpbHRlciwgJm1TdXBwb3J0c0Zsb2F0MzJSZW5kZXJhYmxlVGV4dHVyZXMpOworICAg
ICAgICBtU3VwcG9ydHNGbG9hdDE2VGV4dHVyZXMgPSBtUmVuZGVyZXItPmdldEZsb2F0MTZUZXh0
dXJlU3VwcG9ydCgmbVN1cHBvcnRzRmxvYXQxNkxpbmVhckZpbHRlciwgJm1TdXBwb3J0c0Zsb2F0
MTZSZW5kZXJhYmxlVGV4dHVyZXMpOworICAgICAgICBtU3VwcG9ydHNMdW1pbmFuY2VUZXh0dXJl
cyA9IG1SZW5kZXJlci0+Z2V0THVtaW5hbmNlVGV4dHVyZVN1cHBvcnQoKTsKKyAgICAgICAgbVN1
cHBvcnRzTHVtaW5hbmNlQWxwaGFUZXh0dXJlcyA9IG1SZW5kZXJlci0+Z2V0THVtaW5hbmNlQWxw
aGFUZXh0dXJlU3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNEZXB0aFRleHR1cmVzID0gbVJl
bmRlcmVyLT5nZXREZXB0aFRleHR1cmVTdXBwb3J0KCk7CisgICAgICAgIG1TdXBwb3J0c1RleHR1
cmVGaWx0ZXJBbmlzb3Ryb3B5ID0gbVJlbmRlcmVyLT5nZXRUZXh0dXJlRmlsdGVyQW5pc290cm9w
eVN1cHBvcnQoKTsKKyAgICAgICAgbVN1cHBvcnRzMzJiaXRJbmRpY2VzID0gbVJlbmRlcmVyLT5n
ZXQzMkJpdEluZGV4U3VwcG9ydCgpOworCisgICAgICAgIG1OdW1Db21wcmVzc2VkVGV4dHVyZUZv
cm1hdHMgPSAwOworICAgICAgICBpZiAoc3VwcG9ydHNEWFQxVGV4dHVyZXMoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cyArPSAyOworICAgICAg
ICB9CisgICAgICAgIGlmIChzdXBwb3J0c0RYVDNUZXh0dXJlcygpKQorICAgICAgICB7CisgICAg
ICAgICAgICBtTnVtQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRzICs9IDE7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1OdW1Db21wcmVzc2VkVGV4dHVyZUZvcm1hdHMgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAg
IGluaXRFeHRlbnNpb25TdHJpbmcoKTsKKyAgICAgICAgaW5pdFJlbmRlcmVyU3RyaW5nKCk7CisK
KyAgICAgICAgbVN0YXRlLnZpZXdwb3J0LnggPSAwOworICAgICAgICBtU3RhdGUudmlld3BvcnQu
eSA9IDA7CisgICAgICAgIG1TdGF0ZS52aWV3cG9ydC53aWR0aCA9IHN1cmZhY2UtPmdldFdpZHRo
KCk7CisgICAgICAgIG1TdGF0ZS52aWV3cG9ydC5oZWlnaHQgPSBzdXJmYWNlLT5nZXRIZWlnaHQo
KTsKKworICAgICAgICBtU3RhdGUuc2Npc3Nvci54ID0gMDsKKyAgICAgICAgbVN0YXRlLnNjaXNz
b3IueSA9IDA7CisgICAgICAgIG1TdGF0ZS5zY2lzc29yLndpZHRoID0gc3VyZmFjZS0+Z2V0V2lk
dGgoKTsKKyAgICAgICAgbVN0YXRlLnNjaXNzb3IuaGVpZ2h0ID0gc3VyZmFjZS0+Z2V0SGVpZ2h0
KCk7CisKKyAgICAgICAgbUhhc0JlZW5DdXJyZW50ID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBX
cmFwIHRoZSBleGlzdGluZyBzd2FwY2hhaW4gcmVzb3VyY2VzIGludG8gR0wgb2JqZWN0cyBhbmQg
YXNzaWduIHRoZW0gdG8gdGhlICcwJyBuYW1lcworICAgIHJ4OjpTd2FwQ2hhaW4gKnN3YXBjaGFp
biA9IHN1cmZhY2UtPmdldFN3YXBDaGFpbigpOworCisgICAgQ29sb3JidWZmZXIgKmNvbG9yYnVm
ZmVyWmVybyA9IG5ldyBDb2xvcmJ1ZmZlcihtUmVuZGVyZXIsIHN3YXBjaGFpbik7CisgICAgRGVw
dGhTdGVuY2lsYnVmZmVyICpkZXB0aFN0ZW5jaWxidWZmZXJaZXJvID0gbmV3IERlcHRoU3RlbmNp
bGJ1ZmZlcihtUmVuZGVyZXIsIHN3YXBjaGFpbik7CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVm
ZmVyWmVybyA9IG5ldyBEZWZhdWx0RnJhbWVidWZmZXIobVJlbmRlcmVyLCBjb2xvcmJ1ZmZlclpl
cm8sIGRlcHRoU3RlbmNpbGJ1ZmZlclplcm8pOworCisgICAgc2V0RnJhbWVidWZmZXJaZXJvKGZy
YW1lYnVmZmVyWmVybyk7Cit9CisKKy8vIE5PVEU6IHRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBh
c3N1bWUgdGhhdCB0aGlzIGNvbnRleHQgaXMgY3VycmVudCEKK3ZvaWQgQ29udGV4dDo6bWFya0Nv
bnRleHRMb3N0KCkKK3sKKyAgICBpZiAobVJlc2V0U3RyYXRlZ3kgPT0gR0xfTE9TRV9DT05URVhU
X09OX1JFU0VUX0VYVCkKKyAgICAgICAgbVJlc2V0U3RhdHVzID0gR0xfVU5LTk9XTl9DT05URVhU
X1JFU0VUX0VYVDsKKyAgICBtQ29udGV4dExvc3QgPSB0cnVlOworfQorCitib29sIENvbnRleHQ6
OmlzQ29udGV4dExvc3QoKQoreworICAgIHJldHVybiBtQ29udGV4dExvc3Q7Cit9CisKK3ZvaWQg
Q29udGV4dDo6c2V0Q2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVl
LCBmbG9hdCBhbHBoYSkKK3sKKyAgICBtU3RhdGUuY29sb3JDbGVhclZhbHVlLnJlZCA9IHJlZDsK
KyAgICBtU3RhdGUuY29sb3JDbGVhclZhbHVlLmdyZWVuID0gZ3JlZW47CisgICAgbVN0YXRlLmNv
bG9yQ2xlYXJWYWx1ZS5ibHVlID0gYmx1ZTsKKyAgICBtU3RhdGUuY29sb3JDbGVhclZhbHVlLmFs
cGhhID0gYWxwaGE7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0Q2xlYXJEZXB0aChmbG9hdCBkZXB0
aCkKK3sKKyAgICBtU3RhdGUuZGVwdGhDbGVhclZhbHVlID0gZGVwdGg7Cit9CisKK3ZvaWQgQ29u
dGV4dDo6c2V0Q2xlYXJTdGVuY2lsKGludCBzdGVuY2lsKQoreworICAgIG1TdGF0ZS5zdGVuY2ls
Q2xlYXJWYWx1ZSA9IHN0ZW5jaWw7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0Q3VsbEZhY2UoYm9v
bCBlbmFibGVkKQoreworICAgIG1TdGF0ZS5yYXN0ZXJpemVyLmN1bGxGYWNlID0gZW5hYmxlZDsK
K30KKworYm9vbCBDb250ZXh0Ojppc0N1bGxGYWNlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1TdGF0ZS5yYXN0ZXJpemVyLmN1bGxGYWNlOworfQorCit2b2lkIENvbnRleHQ6OnNldEN1
bGxNb2RlKEdMZW51bSBtb2RlKQoreworICAgIG1TdGF0ZS5yYXN0ZXJpemVyLmN1bGxNb2RlID0g
bW9kZTsKK30KKwordm9pZCBDb250ZXh0OjpzZXRGcm9udEZhY2UoR0xlbnVtIGZyb250KQorewor
ICAgIG1TdGF0ZS5yYXN0ZXJpemVyLmZyb250RmFjZSA9IGZyb250OworfQorCit2b2lkIENvbnRl
eHQ6OnNldERlcHRoVGVzdChib29sIGVuYWJsZWQpCit7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNp
bC5kZXB0aFRlc3QgPSBlbmFibGVkOworfQorCitib29sIENvbnRleHQ6OmlzRGVwdGhUZXN0RW5h
YmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuZGVwdGhUZXN0
OworfQorCit2b2lkIENvbnRleHQ6OnNldERlcHRoRnVuYyhHTGVudW0gZGVwdGhGdW5jKQorewor
ICAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLmRlcHRoRnVuYyA9IGRlcHRoRnVuYzsKK30KKwordm9p
ZCBDb250ZXh0OjpzZXREZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKQoreworICAg
IG1TdGF0ZS56TmVhciA9IHpOZWFyOworICAgIG1TdGF0ZS56RmFyID0gekZhcjsKK30KKwordm9p
ZCBDb250ZXh0OjpzZXRCbGVuZChib29sIGVuYWJsZWQpCit7CisgICAgbVN0YXRlLmJsZW5kLmJs
ZW5kID0gZW5hYmxlZDsKK30KKworYm9vbCBDb250ZXh0Ojppc0JsZW5kRW5hYmxlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5ibGVuZC5ibGVuZDsKK30KKwordm9pZCBDb250ZXh0Ojpz
ZXRCbGVuZEZhY3RvcnMoR0xlbnVtIHNvdXJjZVJHQiwgR0xlbnVtIGRlc3RSR0IsIEdMZW51bSBz
b3VyY2VBbHBoYSwgR0xlbnVtIGRlc3RBbHBoYSkKK3sKKyAgICBtU3RhdGUuYmxlbmQuc291cmNl
QmxlbmRSR0IgPSBzb3VyY2VSR0I7CisgICAgbVN0YXRlLmJsZW5kLmRlc3RCbGVuZFJHQiA9IGRl
c3RSR0I7CisgICAgbVN0YXRlLmJsZW5kLnNvdXJjZUJsZW5kQWxwaGEgPSBzb3VyY2VBbHBoYTsK
KyAgICBtU3RhdGUuYmxlbmQuZGVzdEJsZW5kQWxwaGEgPSBkZXN0QWxwaGE7Cit9CisKK3ZvaWQg
Q29udGV4dDo6c2V0QmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVl
LCBmbG9hdCBhbHBoYSkKK3sKKyAgICBtU3RhdGUuYmxlbmRDb2xvci5yZWQgPSByZWQ7CisgICAg
bVN0YXRlLmJsZW5kQ29sb3IuZ3JlZW4gPSBncmVlbjsKKyAgICBtU3RhdGUuYmxlbmRDb2xvci5i
bHVlID0gYmx1ZTsKKyAgICBtU3RhdGUuYmxlbmRDb2xvci5hbHBoYSA9IGFscGhhOworfQorCit2
b2lkIENvbnRleHQ6OnNldEJsZW5kRXF1YXRpb24oR0xlbnVtIHJnYkVxdWF0aW9uLCBHTGVudW0g
YWxwaGFFcXVhdGlvbikKK3sKKyAgICBtU3RhdGUuYmxlbmQuYmxlbmRFcXVhdGlvblJHQiA9IHJn
YkVxdWF0aW9uOworICAgIG1TdGF0ZS5ibGVuZC5ibGVuZEVxdWF0aW9uQWxwaGEgPSBhbHBoYUVx
dWF0aW9uOworfQorCit2b2lkIENvbnRleHQ6OnNldFN0ZW5jaWxUZXN0KGJvb2wgZW5hYmxlZCkK
K3sKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxUZXN0ID0gZW5hYmxlZDsKK30KKwor
Ym9vbCBDb250ZXh0Ojppc1N0ZW5jaWxUZXN0RW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbFRlc3Q7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0
U3RlbmNpbFBhcmFtcyhHTGVudW0gc3RlbmNpbEZ1bmMsIEdMaW50IHN0ZW5jaWxSZWYsIEdMdWlu
dCBzdGVuY2lsTWFzaykKK3sKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxGdW5jID0g
c3RlbmNpbEZ1bmM7CisgICAgbVN0YXRlLnN0ZW5jaWxSZWYgPSAoc3RlbmNpbFJlZiA+IDApID8g
c3RlbmNpbFJlZiA6IDA7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsTWFzayA9IHN0
ZW5jaWxNYXNrOworfQorCit2b2lkIENvbnRleHQ6OnNldFN0ZW5jaWxCYWNrUGFyYW1zKEdMZW51
bSBzdGVuY2lsQmFja0Z1bmMsIEdMaW50IHN0ZW5jaWxCYWNrUmVmLCBHTHVpbnQgc3RlbmNpbEJh
Y2tNYXNrKQoreworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tGdW5jID0gc3Rl
bmNpbEJhY2tGdW5jOworICAgIG1TdGF0ZS5zdGVuY2lsQmFja1JlZiA9IChzdGVuY2lsQmFja1Jl
ZiA+IDApID8gc3RlbmNpbEJhY2tSZWYgOiAwOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3Rl
bmNpbEJhY2tNYXNrID0gc3RlbmNpbEJhY2tNYXNrOworfQorCit2b2lkIENvbnRleHQ6OnNldFN0
ZW5jaWxXcml0ZW1hc2soR0x1aW50IHN0ZW5jaWxXcml0ZW1hc2spCit7CisgICAgbVN0YXRlLmRl
cHRoU3RlbmNpbC5zdGVuY2lsV3JpdGVtYXNrID0gc3RlbmNpbFdyaXRlbWFzazsKK30KKwordm9p
ZCBDb250ZXh0OjpzZXRTdGVuY2lsQmFja1dyaXRlbWFzayhHTHVpbnQgc3RlbmNpbEJhY2tXcml0
ZW1hc2spCit7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsQmFja1dyaXRlbWFzayA9
IHN0ZW5jaWxCYWNrV3JpdGVtYXNrOworfQorCit2b2lkIENvbnRleHQ6OnNldFN0ZW5jaWxPcGVy
YXRpb25zKEdMZW51bSBzdGVuY2lsRmFpbCwgR0xlbnVtIHN0ZW5jaWxQYXNzRGVwdGhGYWlsLCBH
TGVudW0gc3RlbmNpbFBhc3NEZXB0aFBhc3MpCit7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5z
dGVuY2lsRmFpbCA9IHN0ZW5jaWxGYWlsOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNp
bFBhc3NEZXB0aEZhaWwgPSBzdGVuY2lsUGFzc0RlcHRoRmFpbDsKKyAgICBtU3RhdGUuZGVwdGhT
dGVuY2lsLnN0ZW5jaWxQYXNzRGVwdGhQYXNzID0gc3RlbmNpbFBhc3NEZXB0aFBhc3M7Cit9CisK
K3ZvaWQgQ29udGV4dDo6c2V0U3RlbmNpbEJhY2tPcGVyYXRpb25zKEdMZW51bSBzdGVuY2lsQmFj
a0ZhaWwsIEdMZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwsIEdMZW51bSBzdGVuY2lsQmFj
a1Bhc3NEZXB0aFBhc3MpCit7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsQmFja0Zh
aWwgPSBzdGVuY2lsQmFja0ZhaWw7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsQmFj
a1Bhc3NEZXB0aEZhaWwgPSBzdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWw7CisgICAgbVN0YXRlLmRl
cHRoU3RlbmNpbC5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MgPSBzdGVuY2lsQmFja1Bhc3NEZXB0
aFBhc3M7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0UG9seWdvbk9mZnNldEZpbGwoYm9vbCBlbmFi
bGVkKQoreworICAgICBtU3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0RmlsbCA9IGVuYWJs
ZWQ7Cit9CisKK2Jvb2wgQ29udGV4dDo6aXNQb2x5Z29uT2Zmc2V0RmlsbEVuYWJsZWQoKSBjb25z
dAoreworICAgIHJldHVybiBtU3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0RmlsbDsKK30K
Kwordm9pZCBDb250ZXh0OjpzZXRQb2x5Z29uT2Zmc2V0UGFyYW1zKEdMZmxvYXQgZmFjdG9yLCBH
TGZsb2F0IHVuaXRzKQoreworICAgIC8vIEFuIGFwcGxpY2F0aW9uIGNhbiBwYXNzIE5hTiB2YWx1
ZXMgaGVyZSwgc28gaGFuZGxlIHRoaXMgZ3JhY2VmdWxseQorICAgIG1TdGF0ZS5yYXN0ZXJpemVy
LnBvbHlnb25PZmZzZXRGYWN0b3IgPSBmYWN0b3IgIT0gZmFjdG9yID8gMC4wZiA6IGZhY3RvcjsK
KyAgICBtU3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0VW5pdHMgPSB1bml0cyAhPSB1bml0
cyA/IDAuMGYgOiB1bml0czsKK30KKwordm9pZCBDb250ZXh0OjpzZXRTYW1wbGVBbHBoYVRvQ292
ZXJhZ2UoYm9vbCBlbmFibGVkKQoreworICAgIG1TdGF0ZS5ibGVuZC5zYW1wbGVBbHBoYVRvQ292
ZXJhZ2UgPSBlbmFibGVkOworfQorCitib29sIENvbnRleHQ6OmlzU2FtcGxlQWxwaGFUb0NvdmVy
YWdlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5ibGVuZC5zYW1wbGVBbHBo
YVRvQ292ZXJhZ2U7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0U2FtcGxlQ292ZXJhZ2UoYm9vbCBl
bmFibGVkKQoreworICAgIG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZSA9IGVuYWJsZWQ7Cit9CisKK2Jv
b2wgQ29udGV4dDo6aXNTYW1wbGVDb3ZlcmFnZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVy
biBtU3RhdGUuc2FtcGxlQ292ZXJhZ2U7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0U2FtcGxlQ292
ZXJhZ2VQYXJhbXMoR0xjbGFtcGYgdmFsdWUsIGJvb2wgaW52ZXJ0KQoreworICAgIG1TdGF0ZS5z
YW1wbGVDb3ZlcmFnZVZhbHVlID0gdmFsdWU7CisgICAgbVN0YXRlLnNhbXBsZUNvdmVyYWdlSW52
ZXJ0ID0gaW52ZXJ0OworfQorCit2b2lkIENvbnRleHQ6OnNldFNjaXNzb3JUZXN0KGJvb2wgZW5h
YmxlZCkKK3sKKyAgICBtU3RhdGUuc2Npc3NvclRlc3QgPSBlbmFibGVkOworfQorCitib29sIENv
bnRleHQ6OmlzU2Npc3NvclRlc3RFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRl
LnNjaXNzb3JUZXN0OworfQorCit2b2lkIENvbnRleHQ6OnNldERpdGhlcihib29sIGVuYWJsZWQp
Cit7CisgICAgbVN0YXRlLmJsZW5kLmRpdGhlciA9IGVuYWJsZWQ7Cit9CisKK2Jvb2wgQ29udGV4
dDo6aXNEaXRoZXJFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLmJsZW5kLmRp
dGhlcjsKK30KKwordm9pZCBDb250ZXh0OjpzZXRMaW5lV2lkdGgoR0xmbG9hdCB3aWR0aCkKK3sK
KyAgICBtU3RhdGUubGluZVdpZHRoID0gd2lkdGg7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0R2Vu
ZXJhdGVNaXBtYXBIaW50KEdMZW51bSBoaW50KQoreworICAgIG1TdGF0ZS5nZW5lcmF0ZU1pcG1h
cEhpbnQgPSBoaW50OworfQorCit2b2lkIENvbnRleHQ6OnNldEZyYWdtZW50U2hhZGVyRGVyaXZh
dGl2ZUhpbnQoR0xlbnVtIGhpbnQpCit7CisgICAgbVN0YXRlLmZyYWdtZW50U2hhZGVyRGVyaXZh
dGl2ZUhpbnQgPSBoaW50OworICAgIC8vIFRPRE86IFByb3BhZ2F0ZSB0aGUgaGludCB0byBzaGFk
ZXIgdHJhbnNsYXRvciBzbyB3ZSBjYW4gd3JpdGUKKyAgICAvLyBkZHgsIGRkeF9jb2Fyc2UsIG9y
IGRkeF9maW5lIGRlcGVuZGluZyBvbiB0aGUgaGludC4KKyAgICAvLyBJZ25vcmUgZm9yIG5vdy4g
SXQgaXMgdmFsaWQgZm9yIGltcGxlbWVudGF0aW9ucyB0byBpZ25vcmUgaGludC4KK30KKwordm9p
ZCBDb250ZXh0OjpzZXRWaWV3cG9ydFBhcmFtcyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBtU3RhdGUudmlld3BvcnQueCA9IHg7CisgICAg
bVN0YXRlLnZpZXdwb3J0LnkgPSB5OworICAgIG1TdGF0ZS52aWV3cG9ydC53aWR0aCA9IHdpZHRo
OworICAgIG1TdGF0ZS52aWV3cG9ydC5oZWlnaHQgPSBoZWlnaHQ7Cit9CisKK3ZvaWQgQ29udGV4
dDo6c2V0U2Npc3NvclBhcmFtcyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCkKK3sKKyAgICBtU3RhdGUuc2Npc3Nvci54ID0geDsKKyAgICBtU3RhdGUuc2Np
c3Nvci55ID0geTsKKyAgICBtU3RhdGUuc2Npc3Nvci53aWR0aCA9IHdpZHRoOworICAgIG1TdGF0
ZS5zY2lzc29yLmhlaWdodCA9IGhlaWdodDsKK30KKwordm9pZCBDb250ZXh0OjpzZXRDb2xvck1h
c2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSkKK3sKKyAgICBt
U3RhdGUuYmxlbmQuY29sb3JNYXNrUmVkID0gcmVkOworICAgIG1TdGF0ZS5ibGVuZC5jb2xvck1h
c2tHcmVlbiA9IGdyZWVuOworICAgIG1TdGF0ZS5ibGVuZC5jb2xvck1hc2tCbHVlID0gYmx1ZTsK
KyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQWxwaGEgPSBhbHBoYTsKK30KKwordm9pZCBDb250
ZXh0OjpzZXREZXB0aE1hc2soYm9vbCBtYXNrKQoreworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwu
ZGVwdGhNYXNrID0gbWFzazsKK30KKwordm9pZCBDb250ZXh0OjpzZXRBY3RpdmVTYW1wbGVyKHVu
c2lnbmVkIGludCBhY3RpdmUpCit7CisgICAgbVN0YXRlLmFjdGl2ZVNhbXBsZXIgPSBhY3RpdmU7
Cit9CisKK0dMdWludCBDb250ZXh0OjpnZXRSZWFkRnJhbWVidWZmZXJIYW5kbGUoKSBjb25zdAor
eworICAgIHJldHVybiBtU3RhdGUucmVhZEZyYW1lYnVmZmVyOworfQorCitHTHVpbnQgQ29udGV4
dDo6Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRl
LmRyYXdGcmFtZWJ1ZmZlcjsKK30KKworR0x1aW50IENvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlckhh
bmRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5yZW5kZXJidWZmZXIuaWQoKTsKK30K
KworR0x1aW50IENvbnRleHQ6OmdldEFycmF5QnVmZmVySGFuZGxlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbVN0YXRlLmFycmF5QnVmZmVyLmlkKCk7Cit9CisKK0dMdWludCBDb250ZXh0OjpnZXRB
Y3RpdmVRdWVyeShHTGVudW0gdGFyZ2V0KSBjb25zdAoreworICAgIFF1ZXJ5ICpxdWVyeU9iamVj
dCA9IE5VTEw7CisgICAgCisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAgY2FzZSBH
TF9BTllfU0FNUExFU19QQVNTRURfRVhUOgorICAgICAgICBxdWVyeU9iamVjdCA9IG1TdGF0ZS5h
Y3RpdmVRdWVyeVtRVUVSWV9BTllfU0FNUExFU19QQVNTRURdLmdldCgpOworICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQ6Cisg
ICAgICAgIHF1ZXJ5T2JqZWN0ID0gbVN0YXRlLmFjdGl2ZVF1ZXJ5W1FVRVJZX0FOWV9TQU1QTEVT
X1BBU1NFRF9DT05TRVJWQVRJVkVdLmdldCgpOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVChmYWxzZSk7CisgICAgfQorCisgICAgaWYgKHF1ZXJ5T2JqZWN0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHF1ZXJ5T2JqZWN0LT5pZCgpOworICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6
c2V0RW5hYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgaW50IGF0dHJpYk51bSwgYm9vbCBl
bmFibGVkKQoreworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmliTnVtXS5tQXJyYXlF
bmFibGVkID0gZW5hYmxlZDsKK30KKworY29uc3QgVmVydGV4QXR0cmlidXRlICZDb250ZXh0Ojpn
ZXRWZXJ0ZXhBdHRyaWJTdGF0ZSh1bnNpZ25lZCBpbnQgYXR0cmliTnVtKQoreworICAgIHJldHVy
biBtU3RhdGUudmVydGV4QXR0cmlidXRlW2F0dHJpYk51bV07Cit9CisKK3ZvaWQgQ29udGV4dDo6
c2V0VmVydGV4QXR0cmliU3RhdGUodW5zaWduZWQgaW50IGF0dHJpYk51bSwgQnVmZmVyICpib3Vu
ZEJ1ZmZlciwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIGJvb2wgbm9ybWFsaXplZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQg
KnBvaW50ZXIpCit7CisgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVthdHRyaWJOdW1dLm1Cb3Vu
ZEJ1ZmZlci5zZXQoYm91bmRCdWZmZXIpOworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0
cmliTnVtXS5tU2l6ZSA9IHNpemU7CisgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVthdHRyaWJO
dW1dLm1UeXBlID0gdHlwZTsKKyAgICBtU3RhdGUudmVydGV4QXR0cmlidXRlW2F0dHJpYk51bV0u
bU5vcm1hbGl6ZWQgPSBub3JtYWxpemVkOworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0
cmliTnVtXS5tU3RyaWRlID0gc3RyaWRlOworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0
cmliTnVtXS5tUG9pbnRlciA9IHBvaW50ZXI7Cit9CisKK2NvbnN0IHZvaWQgKkNvbnRleHQ6Omdl
dFZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQgaW50IGF0dHJpYk51bSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVthdHRyaWJOdW1dLm1Qb2ludGVyOworfQor
Cit2b2lkIENvbnRleHQ6OnNldFBhY2tBbGlnbm1lbnQoR0xpbnQgYWxpZ25tZW50KQoreworICAg
IG1TdGF0ZS5wYWNrQWxpZ25tZW50ID0gYWxpZ25tZW50OworfQorCitHTGludCBDb250ZXh0Ojpn
ZXRQYWNrQWxpZ25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLnBhY2tBbGlnbm1l
bnQ7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0VW5wYWNrQWxpZ25tZW50KEdMaW50IGFsaWdubWVu
dCkKK3sKKyAgICBtU3RhdGUudW5wYWNrQWxpZ25tZW50ID0gYWxpZ25tZW50OworfQorCitHTGlu
dCBDb250ZXh0OjpnZXRVbnBhY2tBbGlnbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBtU3Rh
dGUudW5wYWNrQWxpZ25tZW50OworfQorCit2b2lkIENvbnRleHQ6OnNldFBhY2tSZXZlcnNlUm93
T3JkZXIoYm9vbCByZXZlcnNlUm93T3JkZXIpCit7CisgICAgbVN0YXRlLnBhY2tSZXZlcnNlUm93
T3JkZXIgPSByZXZlcnNlUm93T3JkZXI7Cit9CisKK2Jvb2wgQ29udGV4dDo6Z2V0UGFja1JldmVy
c2VSb3dPcmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5wYWNrUmV2ZXJzZVJvd09y
ZGVyOworfQorCitHTHVpbnQgQ29udGV4dDo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4g
bVJlc291cmNlTWFuYWdlci0+Y3JlYXRlQnVmZmVyKCk7Cit9CisKK0dMdWludCBDb250ZXh0Ojpj
cmVhdGVQcm9ncmFtKCkKK3sKKyAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Y3JlYXRlUHJv
Z3JhbSgpOworfQorCitHTHVpbnQgQ29udGV4dDo6Y3JlYXRlU2hhZGVyKEdMZW51bSB0eXBlKQor
eworICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVTaGFkZXIodHlwZSk7Cit9CisK
K0dMdWludCBDb250ZXh0OjpjcmVhdGVUZXh0dXJlKCkKK3sKKyAgICByZXR1cm4gbVJlc291cmNl
TWFuYWdlci0+Y3JlYXRlVGV4dHVyZSgpOworfQorCitHTHVpbnQgQ29udGV4dDo6Y3JlYXRlUmVu
ZGVyYnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Y3JlYXRlUmVuZGVy
YnVmZmVyKCk7Cit9CisKKy8vIFJldHVybnMgYW4gdW51c2VkIGZyYW1lYnVmZmVyIG5hbWUKK0dM
dWludCBDb250ZXh0OjpjcmVhdGVGcmFtZWJ1ZmZlcigpCit7CisgICAgR0x1aW50IGhhbmRsZSA9
IG1GcmFtZWJ1ZmZlckhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworCisgICAgbUZyYW1lYnVm
ZmVyTWFwW2hhbmRsZV0gPSBOVUxMOworCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKworR0x1aW50
IENvbnRleHQ6OmNyZWF0ZUZlbmNlKCkKK3sKKyAgICBHTHVpbnQgaGFuZGxlID0gbUZlbmNlSGFu
ZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7CisKKyAgICBtRmVuY2VNYXBbaGFuZGxlXSA9IG5ldyBG
ZW5jZShtUmVuZGVyZXIpOworCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKworLy8gUmV0dXJucyBh
biB1bnVzZWQgcXVlcnkgbmFtZQorR0x1aW50IENvbnRleHQ6OmNyZWF0ZVF1ZXJ5KCkKK3sKKyAg
ICBHTHVpbnQgaGFuZGxlID0gbVF1ZXJ5SGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7CisKKyAg
ICBtUXVlcnlNYXBbaGFuZGxlXSA9IE5VTEw7CisKKyAgICByZXR1cm4gaGFuZGxlOworfQorCit2
b2lkIENvbnRleHQ6OmRlbGV0ZUJ1ZmZlcihHTHVpbnQgYnVmZmVyKQoreworICAgIGlmIChtUmVz
b3VyY2VNYW5hZ2VyLT5nZXRCdWZmZXIoYnVmZmVyKSkKKyAgICB7CisgICAgICAgIGRldGFjaEJ1
ZmZlcihidWZmZXIpOworICAgIH0KKyAgICAKKyAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVC
dWZmZXIoYnVmZmVyKTsKK30KKwordm9pZCBDb250ZXh0OjpkZWxldGVTaGFkZXIoR0x1aW50IHNo
YWRlcikKK3sKKyAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVTaGFkZXIoc2hhZGVyKTsKK30K
Kwordm9pZCBDb250ZXh0OjpkZWxldGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQoreworICAgIG1S
ZXNvdXJjZU1hbmFnZXItPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3ZvaWQgQ29udGV4
dDo6ZGVsZXRlVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKK3sKKyAgICBpZiAobVJlc291cmNlTWFu
YWdlci0+Z2V0VGV4dHVyZSh0ZXh0dXJlKSkKKyAgICB7CisgICAgICAgIGRldGFjaFRleHR1cmUo
dGV4dHVyZSk7CisgICAgfQorCisgICAgbVJlc291cmNlTWFuYWdlci0+ZGVsZXRlVGV4dHVyZSh0
ZXh0dXJlKTsKK30KKwordm9pZCBDb250ZXh0OjpkZWxldGVSZW5kZXJidWZmZXIoR0x1aW50IHJl
bmRlcmJ1ZmZlcikKK3sKKyAgICBpZiAobVJlc291cmNlTWFuYWdlci0+Z2V0UmVuZGVyYnVmZmVy
KHJlbmRlcmJ1ZmZlcikpCisgICAgeworICAgICAgICBkZXRhY2hSZW5kZXJidWZmZXIocmVuZGVy
YnVmZmVyKTsKKyAgICB9CisgICAgCisgICAgbVJlc291cmNlTWFuYWdlci0+ZGVsZXRlUmVuZGVy
YnVmZmVyKHJlbmRlcmJ1ZmZlcik7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZGVsZXRlRnJhbWVidWZm
ZXIoR0x1aW50IGZyYW1lYnVmZmVyKQoreworICAgIEZyYW1lYnVmZmVyTWFwOjppdGVyYXRvciBm
cmFtZWJ1ZmZlck9iamVjdCA9IG1GcmFtZWJ1ZmZlck1hcC5maW5kKGZyYW1lYnVmZmVyKTsKKwor
ICAgIGlmIChmcmFtZWJ1ZmZlck9iamVjdCAhPSBtRnJhbWVidWZmZXJNYXAuZW5kKCkpCisgICAg
eworICAgICAgICBkZXRhY2hGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisKKyAgICAgICAgbUZy
YW1lYnVmZmVySGFuZGxlQWxsb2NhdG9yLnJlbGVhc2UoZnJhbWVidWZmZXJPYmplY3QtPmZpcnN0
KTsKKyAgICAgICAgZGVsZXRlIGZyYW1lYnVmZmVyT2JqZWN0LT5zZWNvbmQ7CisgICAgICAgIG1G
cmFtZWJ1ZmZlck1hcC5lcmFzZShmcmFtZWJ1ZmZlck9iamVjdCk7CisgICAgfQorfQorCit2b2lk
IENvbnRleHQ6OmRlbGV0ZUZlbmNlKEdMdWludCBmZW5jZSkKK3sKKyAgICBGZW5jZU1hcDo6aXRl
cmF0b3IgZmVuY2VPYmplY3QgPSBtRmVuY2VNYXAuZmluZChmZW5jZSk7CisKKyAgICBpZiAoZmVu
Y2VPYmplY3QgIT0gbUZlbmNlTWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgbUZlbmNlSGFuZGxl
QWxsb2NhdG9yLnJlbGVhc2UoZmVuY2VPYmplY3QtPmZpcnN0KTsKKyAgICAgICAgZGVsZXRlIGZl
bmNlT2JqZWN0LT5zZWNvbmQ7CisgICAgICAgIG1GZW5jZU1hcC5lcmFzZShmZW5jZU9iamVjdCk7
CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmRlbGV0ZVF1ZXJ5KEdMdWludCBxdWVyeSkKK3sK
KyAgICBRdWVyeU1hcDo6aXRlcmF0b3IgcXVlcnlPYmplY3QgPSBtUXVlcnlNYXAuZmluZChxdWVy
eSk7CisgICAgaWYgKHF1ZXJ5T2JqZWN0ICE9IG1RdWVyeU1hcC5lbmQoKSkKKyAgICB7CisgICAg
ICAgIG1RdWVyeUhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKHF1ZXJ5T2JqZWN0LT5maXJzdCk7Cisg
ICAgICAgIGlmIChxdWVyeU9iamVjdC0+c2Vjb25kKQorICAgICAgICB7CisgICAgICAgICAgICBx
dWVyeU9iamVjdC0+c2Vjb25kLT5yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgbVF1ZXJ5
TWFwLmVyYXNlKHF1ZXJ5T2JqZWN0KTsKKyAgICB9Cit9CisKK0J1ZmZlciAqQ29udGV4dDo6Z2V0
QnVmZmVyKEdMdWludCBoYW5kbGUpCit7CisgICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXItPmdl
dEJ1ZmZlcihoYW5kbGUpOworfQorCitTaGFkZXIgKkNvbnRleHQ6OmdldFNoYWRlcihHTHVpbnQg
aGFuZGxlKQoreworICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRTaGFkZXIoaGFuZGxl
KTsKK30KKworUHJvZ3JhbSAqQ29udGV4dDo6Z2V0UHJvZ3JhbShHTHVpbnQgaGFuZGxlKQorewor
ICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQcm9ncmFtKGhhbmRsZSk7Cit9CisKK1Rl
eHR1cmUgKkNvbnRleHQ6OmdldFRleHR1cmUoR0x1aW50IGhhbmRsZSkKK3sKKyAgICByZXR1cm4g
bVJlc291cmNlTWFuYWdlci0+Z2V0VGV4dHVyZShoYW5kbGUpOworfQorCitSZW5kZXJidWZmZXIg
KkNvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlcihHTHVpbnQgaGFuZGxlKQoreworICAgIHJldHVybiBt
UmVzb3VyY2VNYW5hZ2VyLT5nZXRSZW5kZXJidWZmZXIoaGFuZGxlKTsKK30KKworRnJhbWVidWZm
ZXIgKkNvbnRleHQ6OmdldFJlYWRGcmFtZWJ1ZmZlcigpCit7CisgICAgcmV0dXJuIGdldEZyYW1l
YnVmZmVyKG1TdGF0ZS5yZWFkRnJhbWVidWZmZXIpOworfQorCitGcmFtZWJ1ZmZlciAqQ29udGV4
dDo6Z2V0RHJhd0ZyYW1lYnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbUJvdW5kRHJhd0ZyYW1lYnVm
ZmVyOworfQorCit2b2lkIENvbnRleHQ6OmJpbmRBcnJheUJ1ZmZlcih1bnNpZ25lZCBpbnQgYnVm
ZmVyKQoreworICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihidWZm
ZXIpOworCisgICAgbVN0YXRlLmFycmF5QnVmZmVyLnNldChnZXRCdWZmZXIoYnVmZmVyKSk7Cit9
CisKK3ZvaWQgQ29udGV4dDo6YmluZEVsZW1lbnRBcnJheUJ1ZmZlcih1bnNpZ25lZCBpbnQgYnVm
ZmVyKQoreworICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihidWZm
ZXIpOworCisgICAgbVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZlci5zZXQoZ2V0QnVmZmVyKGJ1ZmZl
cikpOworfQorCit2b2lkIENvbnRleHQ6OmJpbmRUZXh0dXJlMkQoR0x1aW50IHRleHR1cmUpCit7
CisgICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tUZXh0dXJlQWxsb2NhdGlvbih0ZXh0dXJlLCBU
RVhUVVJFXzJEKTsKKworICAgIG1TdGF0ZS5zYW1wbGVyVGV4dHVyZVtURVhUVVJFXzJEXVttU3Rh
dGUuYWN0aXZlU2FtcGxlcl0uc2V0KGdldFRleHR1cmUodGV4dHVyZSkpOworfQorCit2b2lkIENv
bnRleHQ6OmJpbmRUZXh0dXJlQ3ViZU1hcChHTHVpbnQgdGV4dHVyZSkKK3sKKyAgICBtUmVzb3Vy
Y2VNYW5hZ2VyLT5jaGVja1RleHR1cmVBbGxvY2F0aW9uKHRleHR1cmUsIFRFWFRVUkVfQ1VCRSk7
CisKKyAgICBtU3RhdGUuc2FtcGxlclRleHR1cmVbVEVYVFVSRV9DVUJFXVttU3RhdGUuYWN0aXZl
U2FtcGxlcl0uc2V0KGdldFRleHR1cmUodGV4dHVyZSkpOworfQorCit2b2lkIENvbnRleHQ6OmJp
bmRSZWFkRnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKQoreworICAgIGlmICghZ2V0RnJh
bWVidWZmZXIoZnJhbWVidWZmZXIpKQorICAgIHsKKyAgICAgICAgbUZyYW1lYnVmZmVyTWFwW2Zy
YW1lYnVmZmVyXSA9IG5ldyBGcmFtZWJ1ZmZlcihtUmVuZGVyZXIpOworICAgIH0KKworICAgIG1T
dGF0ZS5yZWFkRnJhbWVidWZmZXIgPSBmcmFtZWJ1ZmZlcjsKK30KKwordm9pZCBDb250ZXh0Ojpi
aW5kRHJhd0ZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlcikKK3sKKyAgICBpZiAoIWdldEZy
YW1lYnVmZmVyKGZyYW1lYnVmZmVyKSkKKyAgICB7CisgICAgICAgIG1GcmFtZWJ1ZmZlck1hcFtm
cmFtZWJ1ZmZlcl0gPSBuZXcgRnJhbWVidWZmZXIobVJlbmRlcmVyKTsKKyAgICB9CisKKyAgICBt
U3RhdGUuZHJhd0ZyYW1lYnVmZmVyID0gZnJhbWVidWZmZXI7CisKKyAgICBtQm91bmREcmF3RnJh
bWVidWZmZXIgPSBnZXRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7Cit9CisKK3ZvaWQgQ29udGV4
dDo6YmluZFJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVyKQoreworICAgIG1SZXNvdXJj
ZU1hbmFnZXItPmNoZWNrUmVuZGVyYnVmZmVyQWxsb2NhdGlvbihyZW5kZXJidWZmZXIpOworCisg
ICAgbVN0YXRlLnJlbmRlcmJ1ZmZlci5zZXQoZ2V0UmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcikp
OworfQorCit2b2lkIENvbnRleHQ6OnVzZVByb2dyYW0oR0x1aW50IHByb2dyYW0pCit7CisgICAg
R0x1aW50IHByaW9yUHJvZ3JhbSA9IG1TdGF0ZS5jdXJyZW50UHJvZ3JhbTsKKyAgICBtU3RhdGUu
Y3VycmVudFByb2dyYW0gPSBwcm9ncmFtOyAgICAgICAgICAgICAgIC8vIE11c3Qgc3dpdGNoIGJl
Zm9yZSB0cnlpbmcgdG8gZGVsZXRlLCBvdGhlcndpc2UgaXQgb25seSBnZXRzIGZsYWdnZWQuCisK
KyAgICBpZiAocHJpb3JQcm9ncmFtICE9IHByb2dyYW0pCisgICAgeworICAgICAgICBQcm9ncmFt
ICpuZXdQcm9ncmFtID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAg
ICAgICAgUHJvZ3JhbSAqb2xkUHJvZ3JhbSA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFByb2dyYW0o
cHJpb3JQcm9ncmFtKTsKKyAgICAgICAgbUN1cnJlbnRQcm9ncmFtQmluYXJ5LnNldChOVUxMKTsK
KworICAgICAgICBpZiAobmV3UHJvZ3JhbSkKKyAgICAgICAgeworICAgICAgICAgICAgbmV3UHJv
Z3JhbS0+YWRkUmVmKCk7CisgICAgICAgICAgICBtQ3VycmVudFByb2dyYW1CaW5hcnkuc2V0KG5l
d1Byb2dyYW0tPmdldFByb2dyYW1CaW5hcnkoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGlmIChvbGRQcm9ncmFtKQorICAgICAgICB7CisgICAgICAgICAgICBvbGRQcm9ncmFtLT5y
ZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6bGlua1Byb2dy
YW0oR0x1aW50IHByb2dyYW0pCit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IG1SZXNv
dXJjZU1hbmFnZXItPmdldFByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBib29sIGxpbmtlZCA9IHBy
b2dyYW1PYmplY3QtPmxpbmsoKTsKKworICAgIC8vIGlmIHRoZSBjdXJyZW50IHByb2dyYW0gd2Fz
IHJlbGlua2VkIHN1Y2Nlc3NmdWxseSB3ZQorICAgIC8vIG5lZWQgdG8gaW5zdGFsbCB0aGUgbmV3
IGV4ZWN1dGFibGVzCisgICAgaWYgKGxpbmtlZCAmJiBwcm9ncmFtID09IG1TdGF0ZS5jdXJyZW50
UHJvZ3JhbSkKKyAgICB7CisgICAgICAgIG1DdXJyZW50UHJvZ3JhbUJpbmFyeS5zZXQocHJvZ3Jh
bU9iamVjdC0+Z2V0UHJvZ3JhbUJpbmFyeSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6
c2V0UHJvZ3JhbUJpbmFyeShHTHVpbnQgcHJvZ3JhbSwgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTGlu
dCBsZW5ndGgpCit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IG1SZXNvdXJjZU1hbmFn
ZXItPmdldFByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBib29sIGxvYWRlZCA9IHByb2dyYW1PYmpl
Y3QtPnNldFByb2dyYW1CaW5hcnkoYmluYXJ5LCBsZW5ndGgpOworCisgICAgLy8gaWYgdGhlIGN1
cnJlbnQgcHJvZ3JhbSB3YXMgcmVsb2FkZWQgc3VjY2Vzc2Z1bGx5IHdlCisgICAgLy8gbmVlZCB0
byBpbnN0YWxsIHRoZSBuZXcgZXhlY3V0YWJsZXMKKyAgICBpZiAobG9hZGVkICYmIHByb2dyYW0g
PT0gbVN0YXRlLmN1cnJlbnRQcm9ncmFtKQorICAgIHsKKyAgICAgICAgbUN1cnJlbnRQcm9ncmFt
QmluYXJ5LnNldChwcm9ncmFtT2JqZWN0LT5nZXRQcm9ncmFtQmluYXJ5KCkpOworICAgIH0KKwor
fQorCit2b2lkIENvbnRleHQ6OmJlZ2luUXVlcnkoR0xlbnVtIHRhcmdldCwgR0x1aW50IHF1ZXJ5
KQoreworICAgIC8vIEZyb20gRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuOiBJZiBCZWdpblF1
ZXJ5RVhUIGlzIGNhbGxlZCB3aXRoIGFuIDxpZD4gIAorICAgIC8vIG9mIHplcm8sIGlmIHRoZSBh
Y3RpdmUgcXVlcnkgb2JqZWN0IG5hbWUgZm9yIDx0YXJnZXQ+IGlzIG5vbi16ZXJvIChmb3IgdGhl
ICAKKyAgICAvLyB0YXJnZXRzIEFOWV9TQU1QTEVTX1BBU1NFRF9FWFQgYW5kIEFOWV9TQU1QTEVT
X1BBU1NFRF9DT05TRVJWQVRJVkVfRVhULCBpZiAgCisgICAgLy8gdGhlIGFjdGl2ZSBxdWVyeSBm
b3IgZWl0aGVyIHRhcmdldCBpcyBub24temVybyksIGlmIDxpZD4gaXMgdGhlIG5hbWUgb2YgYW4g
CisgICAgLy8gZXhpc3RpbmcgcXVlcnkgb2JqZWN0IHdob3NlIHR5cGUgZG9lcyBub3QgbWF0Y2gg
PHRhcmdldD4sIG9yIGlmIDxpZD4gaXMgdGhlCisgICAgLy8gYWN0aXZlIHF1ZXJ5IG9iamVjdCBu
YW1lIGZvciBhbnkgcXVlcnkgdHlwZSwgdGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzCisg
ICAgLy8gZ2VuZXJhdGVkLgorCisgICAgLy8gRW5zdXJlIG5vIG90aGVyIHF1ZXJpZXMgYXJlIGFj
dGl2ZQorICAgIC8vIE5PVEU6IElmIG90aGVyIHF1ZXJpZXMgdGhhbiBvY2NsdXNpb24gYXJlIHN1
cHBvcnRlZCwgd2Ugd2lsbCBuZWVkIHRvIGNoZWNrCisgICAgLy8gc2VwYXJhdGVseSB0aGF0Ogor
ICAgIC8vICAgIGEpIFRoZSBxdWVyeSBJRCBwYXNzZWQgaXMgbm90IHRoZSBjdXJyZW50IGFjdGl2
ZSBxdWVyeSBmb3IgYW55IHRhcmdldC90eXBlCisgICAgLy8gICAgYikgVGhlcmUgYXJlIG5vIGFj
dGl2ZSBxdWVyaWVzIGZvciB0aGUgcmVxdWVzdGVkIHRhcmdldCAoYW5kIGluIHRoZSBjYXNlCisg
ICAgLy8gICAgICAgb2YgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCBhbmQgR0xfQU5ZX1NBTVBM
RVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQsCisgICAgLy8gICAgICAgbm8gcXVlcnkgbWF5IGJl
IGFjdGl2ZSBmb3IgZWl0aGVyIGlmIGdsQmVnaW5RdWVyeSB0YXJnZXRzIGVpdGhlci4KKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IFFVRVJZX1RZUEVfQ09VTlQ7IGkrKykKKyAgICB7CisgICAgICAg
IGlmIChtU3RhdGUuYWN0aXZlUXVlcnlbaV0uZ2V0KCkgIT0gTlVMTCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBRdWVyeVR5cGUgcVR5cGU7CisgICAgc3dpdGNoICh0YXJnZXQpCisg
ICAgeworICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhUOiAKKyAgICAgICAgcVR5
cGUgPSBRVUVSWV9BTllfU0FNUExFU19QQVNTRUQ7IAorICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQ6IAorICAgICAgICBxVHlw
ZSA9IFFVRVJZX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkU7IAorICAgICAgICBicmVh
azsKKyAgICAgIGRlZmF1bHQ6IAorICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgUXVlcnkgKnF1ZXJ5T2JqZWN0ID0gZ2V0UXVlcnkocXVlcnksIHRy
dWUsIHRhcmdldCk7CisKKyAgICAvLyBjaGVjayB0aGF0IG5hbWUgd2FzIG9idGFpbmVkIHdpdGgg
Z2xHZW5RdWVyaWVzCisgICAgaWYgKCFxdWVyeU9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAgIC8vIGNoZWNr
IGZvciB0eXBlIG1pc21hdGNoCisgICAgaWYgKHF1ZXJ5T2JqZWN0LT5nZXRUeXBlKCkgIT0gdGFy
Z2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgfQorCisgICAgLy8gc2V0IHF1ZXJ5IGFzIGFjdGl2ZSBmb3Igc3BlY2lmaWVkIHRh
cmdldAorICAgIG1TdGF0ZS5hY3RpdmVRdWVyeVtxVHlwZV0uc2V0KHF1ZXJ5T2JqZWN0KTsKKwor
ICAgIC8vIGJlZ2luIHF1ZXJ5CisgICAgcXVlcnlPYmplY3QtPmJlZ2luKCk7Cit9CisKK3ZvaWQg
Q29udGV4dDo6ZW5kUXVlcnkoR0xlbnVtIHRhcmdldCkKK3sKKyAgICBRdWVyeVR5cGUgcVR5cGU7
CisKKyAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICB7CisgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVT
X1BBU1NFRF9FWFQ6IAorICAgICAgICBxVHlwZSA9IFFVRVJZX0FOWV9TQU1QTEVTX1BBU1NFRDsg
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VS
VkFUSVZFX0VYVDogCisgICAgICAgIHFUeXBlID0gUVVFUllfQU5ZX1NBTVBMRVNfUEFTU0VEX0NP
TlNFUlZBVElWRTsgCisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogCisgICAgICAgIEFT
U0VSVChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBRdWVyeSAqcXVlcnlP
YmplY3QgPSBtU3RhdGUuYWN0aXZlUXVlcnlbcVR5cGVdLmdldCgpOworCisgICAgaWYgKHF1ZXJ5
T2JqZWN0ID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICBxdWVyeU9iamVjdC0+ZW5kKCk7CisKKyAgICBt
U3RhdGUuYWN0aXZlUXVlcnlbcVR5cGVdLnNldChOVUxMKTsKK30KKwordm9pZCBDb250ZXh0Ojpz
ZXRGcmFtZWJ1ZmZlclplcm8oRnJhbWVidWZmZXIgKmJ1ZmZlcikKK3sKKyAgICBkZWxldGUgbUZy
YW1lYnVmZmVyTWFwWzBdOworICAgIG1GcmFtZWJ1ZmZlck1hcFswXSA9IGJ1ZmZlcjsKKyAgICBp
ZiAobVN0YXRlLmRyYXdGcmFtZWJ1ZmZlciA9PSAwKQorICAgIHsKKyAgICAgICAgbUJvdW5kRHJh
d0ZyYW1lYnVmZmVyID0gYnVmZmVyOworICAgIH0KK30KKwordm9pZCBDb250ZXh0OjpzZXRSZW5k
ZXJidWZmZXJTdG9yYWdlKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcykKK3sKKyAgICBSZW5kZXJidWZmZXJTdG9yYWdl
ICpyZW5kZXJidWZmZXIgPSBOVUxMOworICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAg
eworICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQxNjoKKyAgICAgICAgcmVuZGVyYnVmZmVy
ID0gbmV3IGdsOjpEZXB0aGJ1ZmZlcihtUmVuZGVyZXIsIHdpZHRoLCBoZWlnaHQsIHNhbXBsZXMp
OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICBjYXNlIEdMX1JH
QjVfQTE6CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6Cisg
ICAgICBjYXNlIEdMX1JHQkE4X09FUzoKKyAgICAgICAgcmVuZGVyYnVmZmVyID0gbmV3IGdsOjpD
b2xvcmJ1ZmZlcihtUmVuZGVyZXIsd2lkdGgsIGhlaWdodCwgaW50ZXJuYWxmb3JtYXQsIHNhbXBs
ZXMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9JTkRFWDg6CisgICAg
ICAgIHJlbmRlcmJ1ZmZlciA9IG5ldyBnbDo6U3RlbmNpbGJ1ZmZlcihtUmVuZGVyZXIsIHdpZHRo
LCBoZWlnaHQsIHNhbXBsZXMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfREVQVEgy
NF9TVEVOQ0lMOF9PRVM6CisgICAgICAgIHJlbmRlcmJ1ZmZlciA9IG5ldyBnbDo6RGVwdGhTdGVu
Y2lsYnVmZmVyKG1SZW5kZXJlciwgd2lkdGgsIGhlaWdodCwgc2FtcGxlcyk7CisgICAgICAgIGJy
ZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsgcmV0dXJuOworICAg
IH0KKworICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyT2JqZWN0ID0gbVN0YXRlLnJlbmRl
cmJ1ZmZlci5nZXQoKTsKKyAgICByZW5kZXJidWZmZXJPYmplY3QtPnNldFN0b3JhZ2UocmVuZGVy
YnVmZmVyKTsKK30KKworRnJhbWVidWZmZXIgKkNvbnRleHQ6OmdldEZyYW1lYnVmZmVyKHVuc2ln
bmVkIGludCBoYW5kbGUpCit7CisgICAgRnJhbWVidWZmZXJNYXA6Oml0ZXJhdG9yIGZyYW1lYnVm
ZmVyID0gbUZyYW1lYnVmZmVyTWFwLmZpbmQoaGFuZGxlKTsKKworICAgIGlmIChmcmFtZWJ1ZmZl
ciA9PSBtRnJhbWVidWZmZXJNYXAuZW5kKCkpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZyYW1lYnVmZmVyLT5zZWNv
bmQ7CisgICAgfQorfQorCitGZW5jZSAqQ29udGV4dDo6Z2V0RmVuY2UodW5zaWduZWQgaW50IGhh
bmRsZSkKK3sKKyAgICBGZW5jZU1hcDo6aXRlcmF0b3IgZmVuY2UgPSBtRmVuY2VNYXAuZmluZCho
YW5kbGUpOworCisgICAgaWYgKGZlbmNlID09IG1GZW5jZU1hcC5lbmQoKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4g
ZmVuY2UtPnNlY29uZDsKKyAgICB9Cit9CisKK1F1ZXJ5ICpDb250ZXh0OjpnZXRRdWVyeSh1bnNp
Z25lZCBpbnQgaGFuZGxlLCBib29sIGNyZWF0ZSwgR0xlbnVtIHR5cGUpCit7CisgICAgUXVlcnlN
YXA6Oml0ZXJhdG9yIHF1ZXJ5ID0gbVF1ZXJ5TWFwLmZpbmQoaGFuZGxlKTsKKworICAgIGlmIChx
dWVyeSA9PSBtUXVlcnlNYXAuZW5kKCkpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKCFxdWVyeS0+c2Vjb25kICYmIGNyZWF0
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcXVlcnktPnNlY29uZCA9IG5ldyBRdWVyeShtUmVu
ZGVyZXIsIHR5cGUsIGhhbmRsZSk7CisgICAgICAgICAgICBxdWVyeS0+c2Vjb25kLT5hZGRSZWYo
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcXVlcnktPnNlY29uZDsKKyAgICB9Cit9CisK
K0J1ZmZlciAqQ29udGV4dDo6Z2V0QXJyYXlCdWZmZXIoKQoreworICAgIHJldHVybiBtU3RhdGUu
YXJyYXlCdWZmZXIuZ2V0KCk7Cit9CisKK0J1ZmZlciAqQ29udGV4dDo6Z2V0RWxlbWVudEFycmF5
QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZlci5nZXQoKTsK
K30KKworUHJvZ3JhbUJpbmFyeSAqQ29udGV4dDo6Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKQor
eworICAgIHJldHVybiBtQ3VycmVudFByb2dyYW1CaW5hcnkuZ2V0KCk7Cit9CisKK1RleHR1cmUy
RCAqQ29udGV4dDo6Z2V0VGV4dHVyZTJEKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4
dHVyZTJEKj4oZ2V0U2FtcGxlclRleHR1cmUobVN0YXRlLmFjdGl2ZVNhbXBsZXIsIFRFWFRVUkVf
MkQpKTsKK30KKworVGV4dHVyZUN1YmVNYXAgKkNvbnRleHQ6OmdldFRleHR1cmVDdWJlTWFwKCkK
K3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dHVyZUN1YmVNYXAqPihnZXRTYW1wbGVyVGV4
dHVyZShtU3RhdGUuYWN0aXZlU2FtcGxlciwgVEVYVFVSRV9DVUJFKSk7Cit9CisKK1RleHR1cmUg
KkNvbnRleHQ6OmdldFNhbXBsZXJUZXh0dXJlKHVuc2lnbmVkIGludCBzYW1wbGVyLCBUZXh0dXJl
VHlwZSB0eXBlKQoreworICAgIEdMdWludCB0ZXhpZCA9IG1TdGF0ZS5zYW1wbGVyVGV4dHVyZVt0
eXBlXVtzYW1wbGVyXS5pZCgpOworCisgICAgaWYgKHRleGlkID09IDApICAgLy8gU3BlY2lhbCBj
YXNlOiAwIHJlZmVycyB0byBkaWZmZXJlbnQgaW5pdGlhbCB0ZXh0dXJlcyBiYXNlZCBvbiB0aGUg
dGFyZ2V0CisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAg
ICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgIGNhc2UgVEVYVFVSRV8yRDogcmV0
dXJuIG1UZXh0dXJlMkRaZXJvLmdldCgpOworICAgICAgICAgIGNhc2UgVEVYVFVSRV9DVUJFOiBy
ZXR1cm4gbVRleHR1cmVDdWJlTWFwWmVyby5nZXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiBtU3RhdGUuc2FtcGxlclRleHR1cmVbdHlwZV1bc2FtcGxlcl0uZ2V0KCk7Cit9CisK
K2Jvb2wgQ29udGV4dDo6Z2V0Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFt
cykKK3sKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgIGNhc2UgR0xfU0hBREVSX0NP
TVBJTEVSOiAgICAgICAgICAgKnBhcmFtcyA9IEdMX1RSVUU7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVDogICAg
KnBhcmFtcyA9IG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZUludmVydDsgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfREVQVEhfV1JJVEVNQVNLOiAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5k
ZXB0aFN0ZW5jaWwuZGVwdGhNYXNrOyAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQ09MT1Jf
V1JJVEVNQVNLOgorICAgICAgICBwYXJhbXNbMF0gPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrUmVk
OworICAgICAgICBwYXJhbXNbMV0gPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrR3JlZW47CisgICAg
ICAgIHBhcmFtc1syXSA9IG1TdGF0ZS5ibGVuZC5jb2xvck1hc2tCbHVlOworICAgICAgICBwYXJh
bXNbM10gPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQWxwaGE7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnJh
c3Rlcml6ZXIuY3VsbEZhY2U7ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9QT0xZR09O
X09GRlNFVF9GSUxMOiAgICAgICAqcGFyYW1zID0gbVN0YXRlLnJhc3Rlcml6ZXIucG9seWdvbk9m
ZnNldEZpbGw7IGJyZWFrOworICAgICAgY2FzZSBHTF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0U6
ICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLnNhbXBsZUFscGhhVG9Db3ZlcmFnZTsgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9TQU1QTEVfQ09WRVJBR0U6ICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRl
LnNhbXBsZUNvdmVyYWdlOyAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TQ0lT
U09SX1RFU1Q6ICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnNjaXNzb3JUZXN0OyAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lMX1RFU1Q6ICAgICAgICAg
ICAgICAqcGFyYW1zID0gbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsVGVzdDsgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9ERVBUSF9URVNUOiAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0
YXRlLmRlcHRoU3RlbmNpbC5kZXB0aFRlc3Q7ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9C
TEVORDogICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLmJsZW5kOyAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9ESVRIRVI6ICAgICAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLmRpdGhlcjsgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1NfRVhUOiAqcGFyYW1zID0g
bVJvYnVzdEFjY2VzcyA/IEdMX1RSVUUgOiBHTF9GQUxTRTsgIGJyZWFrOworICAgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIENvbnRleHQ6OmdldEZsb2F0dihHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykK
K3sKKyAgICAvLyBQbGVhc2Ugbm90ZTogREVQVEhfQ0xFQVJfVkFMVUUgaXMgaW5jbHVkZWQgaW4g
b3VyIGludGVybmFsIGdldEZsb2F0diBpbXBsZW1lbnRhdGlvbgorICAgIC8vIGJlY2F1c2UgaXQg
aXMgc3RvcmVkIGFzIGEgZmxvYXQsIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCB0aGUgR0wgRVMgMi4w
IHNwZWMgbmFtZXMKKyAgICAvLyBHZXRJbnRlZ2VydiBhcyBpdHMgbmF0aXZlIHF1ZXJ5IGZ1bmN0
aW9uLiBBcyBpdCB3b3VsZCByZXF1aXJlIGNvbnZlcnNpb24gaW4gYW55CisgICAgLy8gY2FzZSwg
dGhpcyBzaG91bGQgbWFrZSBubyBkaWZmZXJlbmNlIHRvIHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9u
LgorICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgY2FzZSBHTF9MSU5FX1dJRFRIOiAg
ICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUubGluZVdpZHRoOyAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFOiAgICAq
cGFyYW1zID0gbVN0YXRlLnNhbXBsZUNvdmVyYWdlVmFsdWU7ICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX0RFUFRIX0NMRUFSX1ZBTFVFOiAgICAgICAgKnBhcmFtcyA9IG1TdGF0
ZS5kZXB0aENsZWFyVmFsdWU7ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9QT0xZR09OX09GRlNFVF9GQUNUT1I6ICAgICpwYXJhbXMgPSBtU3RhdGUucmFzdGVyaXplci5w
b2x5Z29uT2Zmc2V0RmFjdG9yOyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZT
RVRfVU5JVFM6ICAgICAqcGFyYW1zID0gbVN0YXRlLnJhc3Rlcml6ZXIucG9seWdvbk9mZnNldFVu
aXRzOyAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRToK
KyAgICAgICAgcGFyYW1zWzBdID0gZ2w6OkFMSUFTRURfTElORV9XSURUSF9SQU5HRV9NSU47Cisg
ICAgICAgIHBhcmFtc1sxXSA9IGdsOjpBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VfTUFYOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFOgorICAg
ICAgICBwYXJhbXNbMF0gPSBnbDo6QUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFX01JTjsKKyAgICAg
ICAgcGFyYW1zWzFdID0gZ2V0TWF4aW11bVBvaW50U2l6ZSgpOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfREVQVEhfUkFOR0U6CisgICAgICAgIHBhcmFtc1swXSA9IG1TdGF0ZS56TmVh
cjsKKyAgICAgICAgcGFyYW1zWzFdID0gbVN0YXRlLnpGYXI7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9DT0xPUl9DTEVBUl9WQUxVRToKKyAgICAgICAgcGFyYW1zWzBdID0gbVN0YXRl
LmNvbG9yQ2xlYXJWYWx1ZS5yZWQ7CisgICAgICAgIHBhcmFtc1sxXSA9IG1TdGF0ZS5jb2xvckNs
ZWFyVmFsdWUuZ3JlZW47CisgICAgICAgIHBhcmFtc1syXSA9IG1TdGF0ZS5jb2xvckNsZWFyVmFs
dWUuYmx1ZTsKKyAgICAgICAgcGFyYW1zWzNdID0gbVN0YXRlLmNvbG9yQ2xlYXJWYWx1ZS5hbHBo
YTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX0NPTE9SOgorICAgICAgICBw
YXJhbXNbMF0gPSBtU3RhdGUuYmxlbmRDb2xvci5yZWQ7CisgICAgICAgIHBhcmFtc1sxXSA9IG1T
dGF0ZS5ibGVuZENvbG9yLmdyZWVuOworICAgICAgICBwYXJhbXNbMl0gPSBtU3RhdGUuYmxlbmRD
b2xvci5ibHVlOworICAgICAgICBwYXJhbXNbM10gPSBtU3RhdGUuYmxlbmRDb2xvci5hbHBoYTsK
KyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZ
X0VYVDoKKyAgICAgICAgaWYgKCFzdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5KCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAq
cGFyYW1zID0gbU1heFRleHR1cmVBbmlzb3Ryb3B5OworICAgICAgICBicmVhazsKKyAgICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBDb250ZXh0OjpnZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpCit7CisgICAgaWYgKHBuYW1lID49IEdMX0RSQVdfQlVGRkVSMF9FWFQgJiYgcG5hbWUgPD0g
R0xfRFJBV19CVUZGRVIxNV9FWFQpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgY29sb3JB
dHRhY2htZW50ID0gKHBuYW1lIC0gR0xfRFJBV19CVUZGRVIwX0VYVCk7CisKKyAgICAgICAgaWYg
KGNvbG9yQXR0YWNobWVudCA+PSBtUmVuZGVyZXItPmdldE1heFJlbmRlclRhcmdldHMoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgLy8gcmV0dXJuIHRydWUgdG8gc3RvcCBmdXJ0aGVyIG9wZXJh
dGlvbiBpbiB0aGUgcGFyZW50IGNhbGwKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgRnJhbWVidWZm
ZXIgKmZyYW1lYnVmZmVyID0gZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisKKyAgICAgICAgKnBhcmFt
cyA9IGZyYW1lYnVmZmVyLT5nZXREcmF3QnVmZmVyU3RhdGUoY29sb3JBdHRhY2htZW50KTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gUGxlYXNlIG5vdGU6IERFUFRIX0NM
RUFSX1ZBTFVFIGlzIG5vdCBpbmNsdWRlZCBpbiBvdXIgaW50ZXJuYWwgZ2V0SW50ZWdlcnYgaW1w
bGVtZW50YXRpb24KKyAgICAvLyBiZWNhdXNlIGl0IGlzIHN0b3JlZCBhcyBhIGZsb2F0LCBkZXNw
aXRlIHRoZSBmYWN0IHRoYXQgdGhlIEdMIEVTIDIuMCBzcGVjIG5hbWVzCisgICAgLy8gR2V0SW50
ZWdlcnYgYXMgaXRzIG5hdGl2ZSBxdWVyeSBmdW5jdGlvbi4gQXMgaXQgd291bGQgcmVxdWlyZSBj
b252ZXJzaW9uIGluIGFueQorICAgIC8vIGNhc2UsIHRoaXMgc2hvdWxkIG1ha2Ugbm8gZGlmZmVy
ZW5jZSB0byB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gWW91IG1heSBmaW5kIGl0IGluIAorICAg
IC8vIENvbnRleHQ6OmdldEZsb2F0di4KKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAg
IGNhc2UgR0xfTUFYX1ZFUlRFWF9BVFRSSUJTOiAgICAgICAgICAgICAgICpwYXJhbXMgPSBnbDo6
TUFYX1ZFUlRFWF9BVFRSSUJTOyAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9N
QVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzogICAgICAgKnBhcmFtcyA9IG1SZW5kZXJlci0+Z2V0
TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMoKTsgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9WQVJZ
SU5HX1ZFQ1RPUlM6ICAgICAgICAgICAgICAqcGFyYW1zID0gbVJlbmRlcmVyLT5nZXRNYXhWYXJ5
aW5nVmVjdG9ycygpOyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX1RFWFRV
UkVfSU1BR0VfVU5JVFM6ICpwYXJhbXMgPSBtUmVuZGVyZXItPmdldE1heENvbWJpbmVkVGV4dHVy
ZUltYWdlVW5pdHMoKTsgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9WRVJURVhfVEVYVFVSRV9J
TUFHRV9VTklUUzogICAqcGFyYW1zID0gbVJlbmRlcmVyLT5nZXRNYXhWZXJ0ZXhUZXh0dXJlSW1h
Z2VVbml0cygpOyBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM6
ICAgICAgICAgICpwYXJhbXMgPSBnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7ICAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOiAgICAg
KnBhcmFtcyA9IG1SZW5kZXJlci0+Z2V0TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpOyBicmVh
azsKKyAgICAgIGNhc2UgR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFOiAgICAgICAgICAgICpwYXJh
bXMgPSBnZXRNYXhpbXVtUmVuZGVyYnVmZmVyRGltZW5zaW9uKCk7ICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUOiAgICAgICAgKnBhcmFtcyA9IG1SZW5k
ZXJlci0+Z2V0TWF4UmVuZGVyVGFyZ2V0cygpOyAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01B
WF9EUkFXX0JVRkZFUlNfRVhUOiAgICAgICAgICAgICAqcGFyYW1zID0gbVJlbmRlcmVyLT5nZXRN
YXhSZW5kZXJUYXJnZXRzKCk7ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTlVNX1NIQURFUl9C
SU5BUllfRk9STUFUUzogICAgICAgICpwYXJhbXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFM6
ICAgICAgLyogbm8gc2hhZGVyIGJpbmFyeSBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQgKi8gICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HOiAgICAgICAgICAg
ICAqcGFyYW1zID0gbVN0YXRlLmFycmF5QnVmZmVyLmlkKCk7ICAgICAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORzogICAgICpwYXJhbXMg
PSBtU3RhdGUuZWxlbWVudEFycmF5QnVmZmVyLmlkKCk7ICAgICAgIGJyZWFrOworICAgICAgLy9j
YXNlIEdMX0ZSQU1FQlVGRkVSX0JJTkRJTkc6ICAgICAgICAgICAgLy8gbm93IGVxdWl2YWxlbnQg
dG8gR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFCisgICAgICBjYXNlIEdMX0RSQVdf
RlJBTUVCVUZGRVJfQklORElOR19BTkdMRTogICAqcGFyYW1zID0gbVN0YXRlLmRyYXdGcmFtZWJ1
ZmZlcjsgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkVBRF9GUkFNRUJVRkZF
Ul9CSU5ESU5HX0FOR0xFOiAgICpwYXJhbXMgPSBtU3RhdGUucmVhZEZyYW1lYnVmZmVyOyAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfQklORElORzogICAg
ICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5yZW5kZXJidWZmZXIuaWQoKTsgICAgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX0NVUlJFTlRfUFJPR1JBTTogICAgICAgICAgICAgICAgICAq
cGFyYW1zID0gbVN0YXRlLmN1cnJlbnRQcm9ncmFtOyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfUEFDS19BTElHTk1FTlQ6ICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBt
U3RhdGUucGFja0FsaWdubWVudDsgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9QQUNLX1JFVkVSU0VfUk9XX09SREVSX0FOR0xFOiAgICAgKnBhcmFtcyA9IG1TdGF0ZS5wYWNr
UmV2ZXJzZVJvd09yZGVyOyAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1VOUEFDS19B
TElHTk1FTlQ6ICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnVucGFja0FsaWdubWVu
dDsgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfR0VORVJBVEVfTUlQTUFQX0hJ
TlQ6ICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZ2VuZXJhdGVNaXBtYXBIaW50OyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9I
SU5UX09FUzogKnBhcmFtcyA9IG1TdGF0ZS5mcmFnbWVudFNoYWRlckRlcml2YXRpdmVIaW50OyBi
cmVhazsKKyAgICAgIGNhc2UgR0xfQUNUSVZFX1RFWFRVUkU6ICAgICAgICAgICAgICAgICAgICpw
YXJhbXMgPSAobVN0YXRlLmFjdGl2ZVNhbXBsZXIgKyBHTF9URVhUVVJFMCk7IGJyZWFrOworICAg
ICAgY2FzZSBHTF9TVEVOQ0lMX0ZVTkM6ICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1T
dGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEZ1bmM7ICAgICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9TVEVOQ0lMX1JFRjogICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0
ZS5zdGVuY2lsUmVmOyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9TVEVOQ0lMX1ZBTFVFX01BU0s6ICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5k
ZXB0aFN0ZW5jaWwuc3RlbmNpbE1hc2s7ICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9TVEVOQ0lMX0JBQ0tfRlVOQzogICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0
aFN0ZW5jaWwuc3RlbmNpbEJhY2tGdW5jOyAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9T
VEVOQ0lMX0JBQ0tfUkVGOiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5zdGVuY2ls
QmFja1JlZjsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVO
Q0lMX0JBQ0tfVkFMVUVfTUFTSzogICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5j
aWwuc3RlbmNpbEJhY2tNYXNrOyAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lM
X0ZBSUw6ICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5jaWwu
c3RlbmNpbEZhaWw7ICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lMX1BB
U1NfREVQVEhfRkFJTDogICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3Rl
bmNpbFBhc3NEZXB0aEZhaWw7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lMX1BBU1Nf
REVQVEhfUEFTUzogICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNp
bFBhc3NEZXB0aFBhc3M7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfRkFJ
TDogICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEJh
Y2tGYWlsOyAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfUEFTU19E
RVBUSF9GQUlMOiAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tQ
YXNzRGVwdGhGYWlsOyBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQ
VEhfUEFTUzogICAgICpwYXJhbXMgPSBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxCYWNrUGFz
c0RlcHRoUGFzczsgYnJlYWs7CisgICAgICBjYXNlIEdMX0RFUFRIX0ZVTkM6ICAgICAgICAgICAg
ICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmRlcHRoU3RlbmNpbC5kZXB0aEZ1bmM7ICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX1NSQ19SR0I6ICAgICAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLnNvdXJjZUJsZW5kUkdCOyAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX1NSQ19BTFBIQTogICAgICAgICAgICAg
ICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLnNvdXJjZUJsZW5kQWxwaGE7ICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX0RTVF9SR0I6ICAgICAgICAgICAgICAgICAg
ICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLmRlc3RCbGVuZFJHQjsgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX0RTVF9BTFBIQTogICAgICAgICAgICAgICAgICAq
cGFyYW1zID0gbVN0YXRlLmJsZW5kLmRlc3RCbGVuZEFscGhhOyAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX1JHQjogICAgICAgICAgICAgICAqcGFy
YW1zID0gbVN0YXRlLmJsZW5kLmJsZW5kRXF1YXRpb25SR0I7ICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBOiAgICAgICAgICAgICAqcGFyYW1z
ID0gbVN0YXRlLmJsZW5kLmJsZW5kRXF1YXRpb25BbHBoYTsgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX1NURU5DSUxfV1JJVEVNQVNLOiAgICAgICAgICAgICAgICAqcGFyYW1zID0g
bVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsV3JpdGVtYXNrOyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX1NURU5DSUxfQkFDS19XUklURU1BU0s6ICAgICAgICAgICAqcGFyYW1zID0gbVN0
YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsQmFja1dyaXRlbWFzazsgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1NURU5DSUxfQ0xFQVJfVkFMVUU6ICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRl
LnN0ZW5jaWxDbGVhclZhbHVlOyAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU1VC
UElYRUxfQklUUzogICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSA0OyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9T
SVpFOiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGdldE1heGltdW1UZXh0dXJlRGltZW5zaW9u
KCk7ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJ
WkU6ICAgICAgICAqcGFyYW1zID0gZ2V0TWF4aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKCk7ICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTOiAg
IAorICAgICAgICBwYXJhbXNbMF0gPSBtTnVtQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRzOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX1NBTVBMRVNfQU5HTEU6CisgICAgICAgIHsK
KyAgICAgICAgICAgIEdMc2l6ZWkgbWF4U2FtcGxlcyA9IGdldE1heFN1cHBvcnRlZFNhbXBsZXMo
KTsKKyAgICAgICAgICAgIGlmIChtYXhTYW1wbGVzICE9IDApCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IG1heFNhbXBsZXM7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgY2Fz
ZSBHTF9TQU1QTEVfQlVGRkVSUzogICAgICAgICAgICAgICAgICAgCisgICAgICBjYXNlIEdMX1NB
TVBMRVM6CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZm
ZXIgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlci0+
Y29tcGxldGVuZXNzKCkgPT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRV9CVUZGRVJTOgorICAgICAgICAgICAgICAgICAg
ICBpZiAoZnJhbWVidWZmZXItPmdldFNhbXBsZXMoKSAhPSAwKQorICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gMTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSAwOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBH
TF9TQU1QTEVTOgorICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gZnJhbWVidWZmZXItPmdl
dFNhbXBsZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAqcGFyYW1zID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFOgor
ICAgICAgY2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVDoKKyAgICAgICAg
eworICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgdHlwZTsKKyAgICAgICAgICAgIGlmIChnZXRD
dXJyZW50UmVhZEZvcm1hdFR5cGUoJmZvcm1hdCwgJnR5cGUpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmIChwbmFtZSA9PSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZP
Uk1BVCkKKyAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGZvcm1hdDsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0eXBlOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfVklFV1BP
UlRfRElNUzoKKyAgICAgICAgeworICAgICAgICAgICAgcGFyYW1zWzBdID0gbU1heFZpZXdwb3J0
RGltZW5zaW9uOworICAgICAgICAgICAgcGFyYW1zWzFdID0gbU1heFZpZXdwb3J0RGltZW5zaW9u
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1RF
WFRVUkVfRk9STUFUUzoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHN1cHBvcnRzRFhUMVRl
eHR1cmVzKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKnBhcmFtcysrID0gR0xf
Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDsKKyAgICAgICAgICAgICAgICAqcGFyYW1zKysg
PSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChzdXBwb3J0c0RYVDNUZXh0dXJlcygpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICpwYXJhbXMrKyA9IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3VwcG9ydHNEWFQ1VGV4dHVyZXMoKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAqcGFyYW1zKysgPSBHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQ1X0FOR0xFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9WSUVXUE9SVDoKKyAgICAgICAgcGFyYW1zWzBdID0gbVN0
YXRlLnZpZXdwb3J0Lng7CisgICAgICAgIHBhcmFtc1sxXSA9IG1TdGF0ZS52aWV3cG9ydC55Owor
ICAgICAgICBwYXJhbXNbMl0gPSBtU3RhdGUudmlld3BvcnQud2lkdGg7CisgICAgICAgIHBhcmFt
c1szXSA9IG1TdGF0ZS52aWV3cG9ydC5oZWlnaHQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9TQ0lTU09SX0JPWDoKKyAgICAgICAgcGFyYW1zWzBdID0gbVN0YXRlLnNjaXNzb3IueDsK
KyAgICAgICAgcGFyYW1zWzFdID0gbVN0YXRlLnNjaXNzb3IueTsKKyAgICAgICAgcGFyYW1zWzJd
ID0gbVN0YXRlLnNjaXNzb3Iud2lkdGg7CisgICAgICAgIHBhcmFtc1szXSA9IG1TdGF0ZS5zY2lz
c29yLmhlaWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0NVTExfRkFDRV9NT0RF
OiAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnJhc3Rlcml6ZXIuY3VsbE1vZGU7
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZST05UX0ZBQ0U6ICAgICAgICAgICAgICAgICAgICAg
ICAqcGFyYW1zID0gbVN0YXRlLnJhc3Rlcml6ZXIuZnJvbnRGYWNlOyAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1JFRF9CSVRTOgorICAgICAgY2FzZSBHTF9HUkVFTl9CSVRTOgorICAgICAgY2FzZSBH
TF9CTFVFX0JJVFM6CisgICAgICBjYXNlIEdMX0FMUEhBX0JJVFM6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBnZXREcmF3RnJhbWVidWZmZXIo
KTsKKyAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVyID0gZnJhbWVidWZm
ZXItPmdldEZpcnN0Q29sb3JidWZmZXIoKTsKKworICAgICAgICAgICAgaWYgKGNvbG9yYnVmZmVy
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SRURfQklUUzogICAqcGFyYW1z
ID0gY29sb3JidWZmZXItPmdldFJlZFNpemUoKTsgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgIGNhc2UgR0xfR1JFRU5fQklUUzogKnBhcmFtcyA9IGNvbG9yYnVmZmVyLT5nZXRHcmVlblNp
emUoKTsgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX0JMVUVfQklUUzogICpw
YXJhbXMgPSBjb2xvcmJ1ZmZlci0+Z2V0Qmx1ZVNpemUoKTsgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgY2FzZSBHTF9BTFBIQV9CSVRTOiAqcGFyYW1zID0gY29sb3JidWZmZXItPmdldEFs
cGhhU2l6ZSgpOyAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9
IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX0RFUFRIX0JJVFM6CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAq
ZnJhbWVidWZmZXIgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIGdsOjpSZW5k
ZXJidWZmZXIgKmRlcHRoYnVmZmVyID0gZnJhbWVidWZmZXItPmdldERlcHRoYnVmZmVyKCk7CisK
KyAgICAgICAgICAgIGlmIChkZXB0aGJ1ZmZlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAqcGFyYW1zID0gZGVwdGhidWZmZXItPmdldERlcHRoU2l6ZSgpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICpwYXJh
bXMgPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9TVEVOQ0lMX0JJVFM6CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXIgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIGds
OjpSZW5kZXJidWZmZXIgKnN0ZW5jaWxidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1
ZmZlcigpOworCisgICAgICAgICAgICBpZiAoc3RlbmNpbGJ1ZmZlcikKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAqcGFyYW1zID0gc3RlbmNpbGJ1ZmZlci0+Z2V0U3RlbmNpbFNpemUo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAqcGFyYW1zID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HXzJEOgorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAobVN0YXRlLmFjdGl2ZVNhbXBsZXIgPiBtUmVuZGVyZXItPmdldE1heENv
bWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKSAtIDEpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICpwYXJhbXMgPSBtU3Rh
dGUuc2FtcGxlclRleHR1cmVbVEVYVFVSRV8yRF1bbVN0YXRlLmFjdGl2ZVNhbXBsZXJdLmlkKCk7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElO
R19DVUJFX01BUDoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1TdGF0ZS5hY3RpdmVTYW1w
bGVyID4gbVJlbmRlcmVyLT5nZXRNYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCkgLSAxKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnNhbXBsZXJUZXh0dXJlW1RFWFRVUkVfQ1VCRV1b
bVN0YXRlLmFjdGl2ZVNhbXBsZXJdLmlkKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQ6CisgICAgICAgICpw
YXJhbXMgPSBtUmVzZXRTdHJhdGVneTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX05V
TV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09FUzoKKyAgICAgICAgKnBhcmFtcyA9IDE7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09FUzoKKyAg
ICAgICAgKnBhcmFtcyA9IEdMX1BST0dSQU1fQklOQVJZX0FOR0xFOworICAgICAgICBicmVhazsK
KyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlckluZm8oR0xlbnVt
IHBuYW1lLCBHTGVudW0gKnR5cGUsIHVuc2lnbmVkIGludCAqbnVtUGFyYW1zKQoreworICAgIGlm
IChwbmFtZSA+PSBHTF9EUkFXX0JVRkZFUjBfRVhUICYmIHBuYW1lIDw9IEdMX0RSQVdfQlVGRkVS
MTVfRVhUKQorICAgIHsKKyAgICAgICAgKnR5cGUgPSBHTF9JTlQ7CisgICAgICAgICpudW1QYXJh
bXMgPSAxOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBQbGVhc2Ugbm90
ZTogdGhlIHF1ZXJ5IHR5cGUgcmV0dXJuZWQgZm9yIERFUFRIX0NMRUFSX1ZBTFVFIGluIHRoaXMg
aW1wbGVtZW50YXRpb24KKyAgICAvLyBpcyBGTE9BVCByYXRoZXIgdGhhbiBJTlQsIGFzIHdvdWxk
IGJlIHN1Z2dlc3RlZCBieSB0aGUgR0wgRVMgMi4wIHNwZWMuIFRoaXMgaXMgZHVlCisgICAgLy8g
dG8gdGhlIGZhY3QgdGhhdCBpdCBpcyBzdG9yZWQgaW50ZXJuYWxseSBhcyBhIGZsb2F0LCBhbmQg
c28gd291bGQgcmVxdWlyZSBjb252ZXJzaW9uCisgICAgLy8gaWYgcmV0dXJuZWQgZnJvbSBDb250
ZXh0OjpnZXRJbnRlZ2Vydi4gU2luY2UgdGhpcyBjb252ZXJzaW9uIGlzIGFscmVhZHkgaW1wbGVt
ZW50ZWQgCisgICAgLy8gaW4gdGhlIGNhc2UgdGhhdCBvbmUgY2FsbHMgZ2xHZXRJbnRlZ2VydiB0
byByZXRyaWV2ZSBhIGZsb2F0LXR5cGVkIHN0YXRlIHZhcmlhYmxlLCB3ZQorICAgIC8vIHBsYWNl
IERFUFRIX0NMRUFSX1ZBTFVFIHdpdGggdGhlIGZsb2F0cy4gVGhpcyBzaG91bGQgbWFrZSBubyBk
aWZmZXJlbmNlIHRvIHRoZSBjYWxsaW5nCisgICAgLy8gYXBwbGljYXRpb24uCisgICAgc3dpdGNo
IChwbmFtZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRT
OgorICAgICAgICB7CisgICAgICAgICAgICAqdHlwZSA9IEdMX0lOVDsKKyAgICAgICAgICAgICpu
dW1QYXJhbXMgPSBtTnVtQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRzOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFM6CisgICAgICAg
IHsKKyAgICAgICAgICAgICp0eXBlID0gR0xfSU5UOworICAgICAgICAgICAgKm51bVBhcmFtcyA9
IDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9WRVJURVhf
QVRUUklCUzoKKyAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6CisgICAg
ICBjYXNlIEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlM6CisgICAgICBjYXNlIEdMX01BWF9DT01CSU5F
RF9URVhUVVJFX0lNQUdFX1VOSVRTOgorICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX1RFWFRVUkVf
SU1BR0VfVU5JVFM6CisgICAgICBjYXNlIEdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTOgorICAg
ICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOgorICAgICAgY2FzZSBHTF9N
QVhfUkVOREVSQlVGRkVSX1NJWkU6CisgICAgICBjYXNlIEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5U
U19FWFQ6CisgICAgICBjYXNlIEdMX01BWF9EUkFXX0JVRkZFUlNfRVhUOgorICAgICAgY2FzZSBH
TF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTOgorICAgICAgY2FzZSBHTF9OVU1fQ09NUFJFU1NF
RF9URVhUVVJFX0ZPUk1BVFM6CisgICAgICBjYXNlIEdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HOgor
ICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9CSU5ESU5HOgorICAgICAgY2FzZSBHTF9SRU5ERVJC
VUZGRVJfQklORElORzoKKyAgICAgIGNhc2UgR0xfQ1VSUkVOVF9QUk9HUkFNOgorICAgICAgY2Fz
ZSBHTF9QQUNLX0FMSUdOTUVOVDoKKyAgICAgIGNhc2UgR0xfUEFDS19SRVZFUlNFX1JPV19PUkRF
Ul9BTkdMRToKKyAgICAgIGNhc2UgR0xfVU5QQUNLX0FMSUdOTUVOVDoKKyAgICAgIGNhc2UgR0xf
R0VORVJBVEVfTUlQTUFQX0hJTlQ6CisgICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJ
VkFUSVZFX0hJTlRfT0VTOgorICAgICAgY2FzZSBHTF9SRURfQklUUzoKKyAgICAgIGNhc2UgR0xf
R1JFRU5fQklUUzoKKyAgICAgIGNhc2UgR0xfQkxVRV9CSVRTOgorICAgICAgY2FzZSBHTF9BTFBI
QV9CSVRTOgorICAgICAgY2FzZSBHTF9ERVBUSF9CSVRTOgorICAgICAgY2FzZSBHTF9TVEVOQ0lM
X0JJVFM6CisgICAgICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkc6CisgICAg
ICBjYXNlIEdMX0NVTExfRkFDRV9NT0RFOgorICAgICAgY2FzZSBHTF9GUk9OVF9GQUNFOgorICAg
ICAgY2FzZSBHTF9BQ1RJVkVfVEVYVFVSRToKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9GVU5DOgor
ICAgICAgY2FzZSBHTF9TVEVOQ0lMX1ZBTFVFX01BU0s6CisgICAgICBjYXNlIEdMX1NURU5DSUxf
UkVGOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0ZBSUw6CisgICAgICBjYXNlIEdMX1NURU5DSUxf
UEFTU19ERVBUSF9GQUlMOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUzoK
KyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX0ZVTkM6CisgICAgICBjYXNlIEdMX1NURU5DSUxf
QkFDS19WQUxVRV9NQVNLOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfUkVGOgorICAgICAg
Y2FzZSBHTF9TVEVOQ0lMX0JBQ0tfRkFJTDoKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1BB
U1NfREVQVEhfRkFJTDoKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFT
UzoKKyAgICAgIGNhc2UgR0xfREVQVEhfRlVOQzoKKyAgICAgIGNhc2UgR0xfQkxFTkRfU1JDX1JH
QjoKKyAgICAgIGNhc2UgR0xfQkxFTkRfU1JDX0FMUEhBOgorICAgICAgY2FzZSBHTF9CTEVORF9E
U1RfUkdCOgorICAgICAgY2FzZSBHTF9CTEVORF9EU1RfQUxQSEE6CisgICAgICBjYXNlIEdMX0JM
RU5EX0VRVUFUSU9OX1JHQjoKKyAgICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJT05fQUxQSEE6Cisg
ICAgICBjYXNlIEdMX1NURU5DSUxfV1JJVEVNQVNLOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JB
Q0tfV1JJVEVNQVNLOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFOgorICAgICAg
Y2FzZSBHTF9TVUJQSVhFTF9CSVRTOgorICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9TSVpFOgor
ICAgICAgY2FzZSBHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgorICAgICAgY2FzZSBHTF9T
QU1QTEVfQlVGRkVSUzoKKyAgICAgIGNhc2UgR0xfU0FNUExFUzoKKyAgICAgIGNhc2UgR0xfSU1Q
TEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFOgorICAgICAgY2FzZSBHTF9JTVBMRU1FTlRBVElP
Tl9DT0xPUl9SRUFEX0ZPUk1BVDoKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HXzJEOgor
ICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVA6CisgICAgICBjYXNlIEdMX1JF
U0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQ6CisgICAgICBjYXNlIEdMX05VTV9QUk9HUkFN
X0JJTkFSWV9GT1JNQVRTX09FUzoKKyAgICAgIGNhc2UgR0xfUFJPR1JBTV9CSU5BUllfRk9STUFU
U19PRVM6CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlID0gR0xfSU5UOworICAgICAgICAg
ICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX01BWF9TQU1QTEVTX0FOR0xFOgorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZ2V0TWF4
U3VwcG9ydGVkU2FtcGxlcygpICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
KnR5cGUgPSBHTF9JTlQ7CisgICAgICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9NQVhfVklFV1BPUlRfRElNUzoKKyAgICAgICAgeworICAgICAgICAgICAg
KnR5cGUgPSBHTF9JTlQ7CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gMjsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVklFV1BPUlQ6CisgICAgICBjYXNlIEdMX1ND
SVNTT1JfQk9YOgorICAgICAgICB7CisgICAgICAgICAgICAqdHlwZSA9IEdMX0lOVDsKKyAgICAg
ICAgICAgICpudW1QYXJhbXMgPSA0OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9TSEFERVJfQ09NUElMRVI6CisgICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRV9J
TlZFUlQ6CisgICAgICBjYXNlIEdMX0RFUFRIX1dSSVRFTUFTSzoKKyAgICAgIGNhc2UgR0xfQ1VM
TF9GQUNFOiAgICAgICAgICAgICAgICAvLyBDVUxMX0ZBQ0UgdGhyb3VnaCBESVRIRVIgYXJlIG5h
dHVyYWwgdG8gSXNFbmFibGVkLAorICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9GSUxMOiAg
ICAgIC8vIGJ1dCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIEdldHtUeXBlfXYgcXVlcmll
cy4KKyAgICAgIGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOiAvLyBGb3IgdGhpcyBw
dXJwb3NlLCB0aGV5IGFyZSB0cmVhdGVkIGhlcmUgYXMgYm9vbC1uYXR1cmFsCisgICAgICBjYXNl
IEdMX1NBTVBMRV9DT1ZFUkFHRToKKyAgICAgIGNhc2UgR0xfU0NJU1NPUl9URVNUOgorICAgICAg
Y2FzZSBHTF9TVEVOQ0lMX1RFU1Q6CisgICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6CisgICAgICBj
YXNlIEdMX0JMRU5EOgorICAgICAgY2FzZSBHTF9ESVRIRVI6CisgICAgICBjYXNlIEdMX0NPTlRF
WFRfUk9CVVNUX0FDQ0VTU19FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlID0gR0xf
Qk9PTDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9DT0xPUl9XUklURU1BU0s6CisgICAgICAgIHsKKyAgICAgICAg
ICAgICp0eXBlID0gR0xfQk9PTDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSA0OworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9GQUNUT1I6
CisgICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VUX1VOSVRTOgorICAgICAgY2FzZSBHTF9TQU1Q
TEVfQ09WRVJBR0VfVkFMVUU6CisgICAgICBjYXNlIEdMX0RFUFRIX0NMRUFSX1ZBTFVFOgorICAg
ICAgY2FzZSBHTF9MSU5FX1dJRFRIOgorICAgICAgICB7CisgICAgICAgICAgICAqdHlwZSA9IEdM
X0ZMT0FUOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRToKKyAgICAgIGNh
c2UgR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFOgorICAgICAgY2FzZSBHTF9ERVBUSF9SQU5H
RToKKyAgICAgICAgeworICAgICAgICAgICAgKnR5cGUgPSBHTF9GTE9BVDsKKyAgICAgICAgICAg
ICpudW1QYXJhbXMgPSAyOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9DT0xPUl9DTEVBUl9WQUxVRToKKyAgICAgIGNhc2UgR0xfQkxFTkRfQ09MT1I6CisgICAgICAg
IHsKKyAgICAgICAgICAgICp0eXBlID0gR0xfRkxPQVQ7CisgICAgICAgICAgICAqbnVtUGFyYW1z
ID0gNDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX1RFWFRV
UkVfTUFYX0FOSVNPVFJPUFlfRVhUOgorICAgICAgICBpZiAoIXN1cHBvcnRzVGV4dHVyZUZpbHRl
ckFuaXNvdHJvcHkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgICAgICp0eXBlID0gR0xfRkxPQVQ7CisgICAgICAgICpudW1QYXJhbXMgPSAx
OworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gQXBwbGllcyB0aGUgcmVuZGVyIHRh
cmdldCBzdXJmYWNlLCBkZXB0aCBzdGVuY2lsIHN1cmZhY2UsIHZpZXdwb3J0IHJlY3RhbmdsZSBh
bmQKKy8vIHNjaXNzb3IgcmVjdGFuZ2xlIHRvIHRoZSByZW5kZXJlcgorYm9vbCBDb250ZXh0Ojph
cHBseVJlbmRlclRhcmdldChHTGVudW0gZHJhd01vZGUsIGJvb2wgaWdub3JlVmlld3BvcnQpCit7
CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0gZ2V0RHJhd0ZyYW1lYnVmZmVy
KCk7CisKKyAgICBpZiAoIWZyYW1lYnVmZmVyT2JqZWN0IHx8IGZyYW1lYnVmZmVyT2JqZWN0LT5j
b21wbGV0ZW5lc3MoKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICB7CisgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sIGZhbHNl
KTsKKyAgICB9CisKKyAgICBtUmVuZGVyZXItPmFwcGx5UmVuZGVyVGFyZ2V0KGZyYW1lYnVmZmVy
T2JqZWN0KTsKKworICAgIGlmICghbVJlbmRlcmVyLT5zZXRWaWV3cG9ydChtU3RhdGUudmlld3Bv
cnQsIG1TdGF0ZS56TmVhciwgbVN0YXRlLnpGYXIsIGRyYXdNb2RlLCBtU3RhdGUucmFzdGVyaXpl
ci5mcm9udEZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZVZpZXdw
b3J0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtUmVuZGVy
ZXItPnNldFNjaXNzb3JSZWN0YW5nbGUobVN0YXRlLnNjaXNzb3IsIG1TdGF0ZS5zY2lzc29yVGVz
dCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gQXBwbGllcyB0aGUgZml4ZWQtZnVuY3Rp
b24gc3RhdGUgKGN1bGxpbmcsIGRlcHRoIHRlc3QsIGFscGhhIGJsZW5kaW5nLCBzdGVuY2lsaW5n
LCBldGMpIHRvIHRoZSBEaXJlY3QzRCA5IGRldmljZQordm9pZCBDb250ZXh0OjphcHBseVN0YXRl
KEdMZW51bSBkcmF3TW9kZSkKK3sKKyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmplY3Qg
PSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICBpbnQgc2FtcGxlcyA9IGZyYW1lYnVmZmVyT2Jq
ZWN0LT5nZXRTYW1wbGVzKCk7CisKKyAgICBtU3RhdGUucmFzdGVyaXplci5wb2ludERyYXdNb2Rl
ID0gKGRyYXdNb2RlID09IEdMX1BPSU5UUyk7CisgICAgbVN0YXRlLnJhc3Rlcml6ZXIubXVsdGlT
YW1wbGUgPSAoc2FtcGxlcyAhPSAwKTsKKyAgICBtUmVuZGVyZXItPnNldFJhc3Rlcml6ZXJTdGF0
ZShtU3RhdGUucmFzdGVyaXplcik7CisKKyAgICB1bnNpZ25lZCBpbnQgbWFzayA9IDA7CisgICAg
aWYgKG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZSkKKyAgICB7CisgICAgICAgIGlmIChtU3RhdGUuc2Ft
cGxlQ292ZXJhZ2VWYWx1ZSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGZsb2F0IHRocmVzaG9sZCA9IDAuNWY7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgc2FtcGxlczsgKytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1hc2sg
PDw9IDE7CisKKyAgICAgICAgICAgICAgICBpZiAoKGkgKyAxKSAqIG1TdGF0ZS5zYW1wbGVDb3Zl
cmFnZVZhbHVlID49IHRocmVzaG9sZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHRocmVzaG9sZCArPSAxLjBmOworICAgICAgICAgICAgICAgICAgICBtYXNrIHw9IDE7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
aWYgKG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZUludmVydCkKKyAgICAgICAgeworICAgICAgICAgICAg
bWFzayA9IH5tYXNrOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IG1hc2sgPSAweEZGRkZGRkZGOworICAgIH0KKyAgICBtUmVuZGVyZXItPnNldEJsZW5kU3RhdGUo
bVN0YXRlLmJsZW5kLCBtU3RhdGUuYmxlbmRDb2xvciwgbWFzayk7CisKKyAgICBtUmVuZGVyZXIt
PnNldERlcHRoU3RlbmNpbFN0YXRlKG1TdGF0ZS5kZXB0aFN0ZW5jaWwsIG1TdGF0ZS5zdGVuY2ls
UmVmLCBtU3RhdGUuc3RlbmNpbEJhY2tSZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtU3RhdGUucmFzdGVyaXplci5mcm9udEZhY2UgPT0gR0xfQ0NXKTsKK30KKworLy8g
QXBwbGllcyB0aGUgc2hhZGVycyBhbmQgc2hhZGVyIGNvbnN0YW50cyB0byB0aGUgRGlyZWN0M0Qg
OSBkZXZpY2UKK3ZvaWQgQ29udGV4dDo6YXBwbHlTaGFkZXJzKCkKK3sKKyAgICBQcm9ncmFtQmlu
YXJ5ICpwcm9ncmFtQmluYXJ5ID0gZ2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKworICAgIG1S
ZW5kZXJlci0+YXBwbHlTaGFkZXJzKHByb2dyYW1CaW5hcnkpOworICAgIAorICAgIHByb2dyYW1C
aW5hcnktPmFwcGx5VW5pZm9ybXMoKTsKK30KKworLy8gQXBwbGllcyB0aGUgdGV4dHVyZXMgYW5k
IHNhbXBsZXIgc3RhdGVzIHRvIHRoZSBEaXJlY3QzRCA5IGRldmljZQordm9pZCBDb250ZXh0Ojph
cHBseVRleHR1cmVzKCkKK3sKKyAgICBhcHBseVRleHR1cmVzKFNBTVBMRVJfUElYRUwpOworCisg
ICAgaWYgKG1TdXBwb3J0c1ZlcnRleFRleHR1cmUpCisgICAgeworICAgICAgICBhcHBseVRleHR1
cmVzKFNBTVBMRVJfVkVSVEVYKTsKKyAgICB9Cit9CisKKy8vIEZvciBlYWNoIERpcmVjdDNEIDkg
c2FtcGxlciBvZiBlaXRoZXIgdGhlIHBpeGVsIG9yIHZlcnRleCBzdGFnZSwKKy8vIGxvb2tzIHVw
IHRoZSBjb3JyZXNwb25kaW5nIE9wZW5HTCB0ZXh0dXJlIGltYWdlIHVuaXQgYW5kIHRleHR1cmUg
dHlwZSwKKy8vIGFuZCBzZXRzIHRoZSB0ZXh0dXJlIGFuZCBpdHMgYWRkcmVzc2luZy9maWx0ZXJp
bmcgc3RhdGUgKG9yIE5VTEwgd2hlbiBpbmFjdGl2ZSkuCit2b2lkIENvbnRleHQ6OmFwcGx5VGV4
dHVyZXMoU2FtcGxlclR5cGUgdHlwZSkKK3sKKyAgICBQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmlu
YXJ5ID0gZ2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKworICAgIC8vIFJhbmdlIG9mIERpcmVj
dDNEIHNhbXBsZXJzIG9mIGdpdmVuIHNhbXBsZXIgdHlwZQorICAgIGludCBzYW1wbGVyQ291bnQg
PSAodHlwZSA9PSBTQU1QTEVSX1BJWEVMKSA/IE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTIDogbVJl
bmRlcmVyLT5nZXRNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpOworICAgIGludCBzYW1wbGVy
UmFuZ2UgPSBwcm9ncmFtQmluYXJ5LT5nZXRVc2VkU2FtcGxlclJhbmdlKHR5cGUpOworCisgICAg
Zm9yIChpbnQgc2FtcGxlckluZGV4ID0gMDsgc2FtcGxlckluZGV4IDwgc2FtcGxlclJhbmdlOyBz
YW1wbGVySW5kZXgrKykKKyAgICB7CisgICAgICAgIGludCB0ZXh0dXJlVW5pdCA9IHByb2dyYW1C
aW5hcnktPmdldFNhbXBsZXJNYXBwaW5nKHR5cGUsIHNhbXBsZXJJbmRleCk7ICAgLy8gT3BlbkdM
IHRleHR1cmUgaW1hZ2UgdW5pdCBpbmRleAorCisgICAgICAgIGlmICh0ZXh0dXJlVW5pdCAhPSAt
MSkKKyAgICAgICAgeworICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUgPSBwcm9n
cmFtQmluYXJ5LT5nZXRTYW1wbGVyVGV4dHVyZVR5cGUodHlwZSwgc2FtcGxlckluZGV4KTsKKyAg
ICAgICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBnZXRTYW1wbGVyVGV4dHVyZSh0ZXh0dXJlVW5p
dCwgdGV4dHVyZVR5cGUpOworCisgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNTYW1wbGVyQ29t
cGxldGUoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBTYW1wbGVyU3RhdGUgc2Ft
cGxlclN0YXRlOworICAgICAgICAgICAgICAgIHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgmc2Ft
cGxlclN0YXRlKTsKKyAgICAgICAgICAgICAgICBtUmVuZGVyZXItPnNldFNhbXBsZXJTdGF0ZSh0
eXBlLCBzYW1wbGVySW5kZXgsIHNhbXBsZXJTdGF0ZSk7CisKKyAgICAgICAgICAgICAgICBtUmVu
ZGVyZXItPnNldFRleHR1cmUodHlwZSwgc2FtcGxlckluZGV4LCB0ZXh0dXJlKTsKKworICAgICAg
ICAgICAgICAgIHRleHR1cmUtPnJlc2V0RGlydHkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtUmVuZGVyZXItPnNldFRl
eHR1cmUodHlwZSwgc2FtcGxlckluZGV4LCBnZXRJbmNvbXBsZXRlVGV4dHVyZSh0ZXh0dXJlVHlw
ZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgbVJlbmRlcmVyLT5zZXRUZXh0dXJlKHR5cGUsIHNhbXBsZXJJbmRleCwgTlVM
TCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGludCBzYW1wbGVySW5kZXggPSBzYW1w
bGVyUmFuZ2U7IHNhbXBsZXJJbmRleCA8IHNhbXBsZXJDb3VudDsgc2FtcGxlckluZGV4KyspCisg
ICAgeworICAgICAgICBtUmVuZGVyZXItPnNldFRleHR1cmUodHlwZSwgc2FtcGxlckluZGV4LCBO
VUxMKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVhZFBpeGVscyhHTGludCB4LCBHTGlu
dCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSAqYnVmU2l6ZSwgdm9pZCog
cGl4ZWxzKQoreworICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGdldFJlYWRGcmFtZWJ1
ZmZlcigpOworCisgICAgaWYgKGZyYW1lYnVmZmVyLT5jb21wbGV0ZW5lc3MoKSAhPSBHTF9GUkFN
RUJVRkZFUl9DT01QTEVURSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOworICAgIH0KKworICAgIGlmIChnZXRSZWFkRnJh
bWVidWZmZXJIYW5kbGUoKSAhPSAwICYmIGZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKCkgIT0gMCkK
KyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgIH0KKworICAgIEdMc2l6ZWkgb3V0cHV0UGl0Y2ggPSBDb21wdXRlUGl0Y2god2lkdGgsIENv
bnZlcnRTaXplZEludGVybmFsRm9ybWF0KGZvcm1hdCwgdHlwZSksIGdldFBhY2tBbGlnbm1lbnQo
KSk7CisgICAgLy8gc2l6ZWQgcXVlcnkgc2FuaXR5IGNoZWNrCisgICAgaWYgKGJ1ZlNpemUpCisg
ICAgeworICAgICAgICBpbnQgcmVxdWlyZWRTaXplID0gb3V0cHV0UGl0Y2ggKiBoZWlnaHQ7Cisg
ICAgICAgIGlmIChyZXF1aXJlZFNpemUgPiAqYnVmU2l6ZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBtUmVuZGVyZXItPnJlYWRQaXhlbHMoZnJhbWVidWZmZXIsIHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgb3V0cHV0UGl0Y2gsIGdldFBhY2tSZXZlcnNlUm93T3Jk
ZXIoKSwgZ2V0UGFja0FsaWdubWVudCgpLCBwaXhlbHMpOworfQorCit2b2lkIENvbnRleHQ6OmNs
ZWFyKEdMYml0ZmllbGQgbWFzaykKK3sKKyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmpl
Y3QgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKworICAgIGlmICghZnJhbWVidWZmZXJPYmplY3Qg
fHwgZnJhbWVidWZmZXJPYmplY3QtPmNvbXBsZXRlbmVzcygpICE9IEdMX0ZSQU1FQlVGRkVSX0NP
TVBMRVRFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0ZSQU1F
QlVGRkVSX09QRVJBVElPTik7CisgICAgfQorCisgICAgRFdPUkQgZmxhZ3MgPSAwOworICAgIEdM
Yml0ZmllbGQgZmluYWxNYXNrID0gMDsKKworICAgIGlmIChtYXNrICYgR0xfQ09MT1JfQlVGRkVS
X0JJVCkKKyAgICB7CisgICAgICAgIG1hc2sgJj0gfkdMX0NPTE9SX0JVRkZFUl9CSVQ7CisKKyAg
ICAgICAgaWYgKGZyYW1lYnVmZmVyT2JqZWN0LT5oYXNFbmFibGVkQ29sb3JBdHRhY2htZW50KCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbmFsTWFzayB8PSBHTF9DT0xPUl9CVUZGRVJfQklU
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1hc2sgJiBHTF9ERVBUSF9CVUZGRVJfQklU
KQorICAgIHsKKyAgICAgICAgbWFzayAmPSB+R0xfREVQVEhfQlVGRkVSX0JJVDsKKyAgICAgICAg
aWYgKG1TdGF0ZS5kZXB0aFN0ZW5jaWwuZGVwdGhNYXNrICYmIGZyYW1lYnVmZmVyT2JqZWN0LT5n
ZXREZXB0aGJ1ZmZlclR5cGUoKSAhPSBHTF9OT05FKQorICAgICAgICB7CisgICAgICAgICAgICBm
aW5hbE1hc2sgfD0gR0xfREVQVEhfQlVGRkVSX0JJVDsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmIChtYXNrICYgR0xfU1RFTkNJTF9CVUZGRVJfQklUKQorICAgIHsKKyAgICAgICAgbWFzayAm
PSB+R0xfU1RFTkNJTF9CVUZGRVJfQklUOworICAgICAgICBpZiAoZnJhbWVidWZmZXJPYmplY3Qt
PmdldFN0ZW5jaWxidWZmZXJUeXBlKCkgIT0gR0xfTk9ORSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcng6OlJlbmRlclRhcmdldCAqZGVwdGhTdGVuY2lsID0gZnJhbWVidWZmZXJPYmplY3QtPmdl
dFN0ZW5jaWxidWZmZXIoKS0+Z2V0RGVwdGhTdGVuY2lsKCk7CisgICAgICAgICAgICBpZiAoIWRl
cHRoU3RlbmNpbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFUlIoIkRlcHRoIHN0
ZW5jaWwgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChHZXRTdGVuY2lsU2l6ZShkZXB0
aFN0ZW5jaWwtPmdldEFjdHVhbEZvcm1hdCgpKSA+IDApCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZmluYWxNYXNrIHw9IEdMX1NURU5DSUxfQlVGRkVSX0JJVDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtYXNrICE9IDApCisgICAgeworICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgIH0KKworICAgIGlmICgh
YXBwbHlSZW5kZXJUYXJnZXQoR0xfVFJJQU5HTEVTLCB0cnVlKSkgICAvLyBDbGlwcyB0aGUgY2xl
YXIgdG8gdGhlIHNjaXNzb3IgcmVjdGFuZ2xlIGJ1dCBub3QgdGhlIHZpZXdwb3J0CisgICAgewor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2xlYXJQYXJhbWV0ZXJzIGNsZWFyUGFyYW1z
OworICAgIGNsZWFyUGFyYW1zLm1hc2sgPSBmaW5hbE1hc2s7CisgICAgY2xlYXJQYXJhbXMuY29s
b3JDbGVhclZhbHVlID0gbVN0YXRlLmNvbG9yQ2xlYXJWYWx1ZTsKKyAgICBjbGVhclBhcmFtcy5j
b2xvck1hc2tSZWQgPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrUmVkOworICAgIGNsZWFyUGFyYW1z
LmNvbG9yTWFza0dyZWVuID0gbVN0YXRlLmJsZW5kLmNvbG9yTWFza0dyZWVuOworICAgIGNsZWFy
UGFyYW1zLmNvbG9yTWFza0JsdWUgPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQmx1ZTsKKyAgICBj
bGVhclBhcmFtcy5jb2xvck1hc2tBbHBoYSA9IG1TdGF0ZS5ibGVuZC5jb2xvck1hc2tBbHBoYTsK
KyAgICBjbGVhclBhcmFtcy5kZXB0aENsZWFyVmFsdWUgPSBtU3RhdGUuZGVwdGhDbGVhclZhbHVl
OworICAgIGNsZWFyUGFyYW1zLnN0ZW5jaWxDbGVhclZhbHVlID0gbVN0YXRlLnN0ZW5jaWxDbGVh
clZhbHVlOworICAgIGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1hc2sgPSBtU3RhdGUuZGVwdGhT
dGVuY2lsLnN0ZW5jaWxXcml0ZW1hc2s7CisKKyAgICBtUmVuZGVyZXItPmNsZWFyKGNsZWFyUGFy
YW1zLCBmcmFtZWJ1ZmZlck9iamVjdCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZHJhd0FycmF5cyhH
TGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2Vz
KQoreworICAgIGlmICghbVN0YXRlLmN1cnJlbnRQcm9ncmFtKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisgICAgaWYgKCFt
UmVuZGVyZXItPmFwcGx5UHJpbWl0aXZlVHlwZShtb2RlLCBjb3VudCkpCisgICAgeworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFhcHBseVJlbmRlclRhcmdldChtb2RlLCBmYWxz
ZSkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXBwbHlTdGF0ZShtb2Rl
KTsKKworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBnZXRDdXJyZW50UHJvZ3Jh
bUJpbmFyeSgpOworCisgICAgR0xlbnVtIGVyciA9IG1SZW5kZXJlci0+YXBwbHlWZXJ0ZXhCdWZm
ZXIocHJvZ3JhbUJpbmFyeSwgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZSwgZmlyc3QsIGNvdW50LCBp
bnN0YW5jZXMpOworICAgIGlmIChlcnIgIT0gR0xfTk9fRVJST1IpCisgICAgeworICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKGVycik7CisgICAgfQorCisgICAgYXBwbHlTaGFkZXJzKCk7CisgICAg
YXBwbHlUZXh0dXJlcygpOworCisgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT52YWxpZGF0ZVNhbXBs
ZXJzKE5VTEwpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgfQorCisgICAgaWYgKCFza2lwRHJhdyhtb2RlKSkKKyAgICB7CisgICAg
ICAgIG1SZW5kZXJlci0+ZHJhd0FycmF5cyhtb2RlLCBjb3VudCwgaW5zdGFuY2VzKTsKKyAgICB9
Cit9CisKK3ZvaWQgQ29udGV4dDo6ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNv
dW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBHTHNpemVpIGluc3RhbmNl
cykKK3sKKyAgICBpZiAoIW1TdGF0ZS5jdXJyZW50UHJvZ3JhbSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAgIGlmICgh
aW5kaWNlcyAmJiAhbVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKyAgICAKKyAgICBp
ZiAoIW1SZW5kZXJlci0+YXBwbHlQcmltaXRpdmVUeXBlKG1vZGUsIGNvdW50KSkKKyAgICB7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWFwcGx5UmVuZGVyVGFyZ2V0KG1vZGUs
IGZhbHNlKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhcHBseVN0YXRl
KG1vZGUpOworCisgICAgcng6OlRyYW5zbGF0ZWRJbmRleERhdGEgaW5kZXhJbmZvOworICAgIEdM
ZW51bSBlcnIgPSBtUmVuZGVyZXItPmFwcGx5SW5kZXhCdWZmZXIoaW5kaWNlcywgbVN0YXRlLmVs
ZW1lbnRBcnJheUJ1ZmZlci5nZXQoKSwgY291bnQsIG1vZGUsIHR5cGUsICZpbmRleEluZm8pOwor
ICAgIGlmIChlcnIgIT0gR0xfTk9fRVJST1IpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKGVycik7CisgICAgfQorCisgICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGdl
dEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7CisKKyAgICBHTHNpemVpIHZlcnRleENvdW50ID0gaW5k
ZXhJbmZvLm1heEluZGV4IC0gaW5kZXhJbmZvLm1pbkluZGV4ICsgMTsKKyAgICBlcnIgPSBtUmVu
ZGVyZXItPmFwcGx5VmVydGV4QnVmZmVyKHByb2dyYW1CaW5hcnksIG1TdGF0ZS52ZXJ0ZXhBdHRy
aWJ1dGUsIGluZGV4SW5mby5taW5JbmRleCwgdmVydGV4Q291bnQsIGluc3RhbmNlcyk7CisgICAg
aWYgKGVyciAhPSBHTF9OT19FUlJPUikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
ZXJyKTsKKyAgICB9CisKKyAgICBhcHBseVNoYWRlcnMoKTsKKyAgICBhcHBseVRleHR1cmVzKCk7
CisKKyAgICBpZiAoIXByb2dyYW1CaW5hcnktPnZhbGlkYXRlU2FtcGxlcnMoTlVMTCkpCisgICAg
eworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9
CisKKyAgICBpZiAoIXNraXBEcmF3KG1vZGUpKQorICAgIHsKKyAgICAgICAgbVJlbmRlcmVyLT5k
cmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIG1TdGF0ZS5lbGVtZW50QXJy
YXlCdWZmZXIuZ2V0KCksIGluZGV4SW5mbywgaW5zdGFuY2VzKTsKKyAgICB9Cit9CisKKy8vIElt
cGxlbWVudHMgZ2xGbHVzaCB3aGVuIGJsb2NrIGlzIGZhbHNlLCBnbEZpbmlzaCB3aGVuIGJsb2Nr
IGlzIHRydWUKK3ZvaWQgQ29udGV4dDo6c3luYyhib29sIGJsb2NrKQoreworICAgIG1SZW5kZXJl
ci0+c3luYyhibG9jayk7Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVjb3JkSW52YWxpZEVudW0oKQor
eworICAgIG1JbnZhbGlkRW51bSA9IHRydWU7Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVjb3JkSW52
YWxpZFZhbHVlKCkKK3sKKyAgICBtSW52YWxpZFZhbHVlID0gdHJ1ZTsKK30KKwordm9pZCBDb250
ZXh0OjpyZWNvcmRJbnZhbGlkT3BlcmF0aW9uKCkKK3sKKyAgICBtSW52YWxpZE9wZXJhdGlvbiA9
IHRydWU7Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVjb3JkT3V0T2ZNZW1vcnkoKQoreworICAgIG1P
dXRPZk1lbW9yeSA9IHRydWU7Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVjb3JkSW52YWxpZEZyYW1l
YnVmZmVyT3BlcmF0aW9uKCkKK3sKKyAgICBtSW52YWxpZEZyYW1lYnVmZmVyT3BlcmF0aW9uID0g
dHJ1ZTsKK30KKworLy8gR2V0IG9uZSBvZiB0aGUgcmVjb3JkZWQgZXJyb3JzIGFuZCBjbGVhciBp
dHMgZmxhZywgaWYgYW55LgorLy8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMi41IHBhZ2Ug
MTMuCitHTGVudW0gQ29udGV4dDo6Z2V0RXJyb3IoKQoreworICAgIGlmIChtSW52YWxpZEVudW0p
CisgICAgeworICAgICAgICBtSW52YWxpZEVudW0gPSBmYWxzZTsKKworICAgICAgICByZXR1cm4g
R0xfSU5WQUxJRF9FTlVNOworICAgIH0KKworICAgIGlmIChtSW52YWxpZFZhbHVlKQorICAgIHsK
KyAgICAgICAgbUludmFsaWRWYWx1ZSA9IGZhbHNlOworCisgICAgICAgIHJldHVybiBHTF9JTlZB
TElEX1ZBTFVFOworICAgIH0KKworICAgIGlmIChtSW52YWxpZE9wZXJhdGlvbikKKyAgICB7Cisg
ICAgICAgIG1JbnZhbGlkT3BlcmF0aW9uID0gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIEdMX0lO
VkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIGlmIChtT3V0T2ZNZW1vcnkpCisgICAgewor
ICAgICAgICBtT3V0T2ZNZW1vcnkgPSBmYWxzZTsKKworICAgICAgICByZXR1cm4gR0xfT1VUX09G
X01FTU9SWTsKKyAgICB9CisKKyAgICBpZiAobUludmFsaWRGcmFtZWJ1ZmZlck9wZXJhdGlvbikK
KyAgICB7CisgICAgICAgIG1JbnZhbGlkRnJhbWVidWZmZXJPcGVyYXRpb24gPSBmYWxzZTsKKwor
ICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT047CisgICAgfQor
CisgICAgcmV0dXJuIEdMX05PX0VSUk9SOworfQorCitHTGVudW0gQ29udGV4dDo6Z2V0UmVzZXRT
dGF0dXMoKQoreworICAgIGlmIChtUmVzZXRTdGF0dXMgPT0gR0xfTk9fRVJST1IgJiYgIW1Db250
ZXh0TG9zdCkKKyAgICB7CisgICAgICAgIC8vIG1SZXNldFN0YXR1cyB3aWxsIGJlIHNldCBieSB0
aGUgbWFya0NvbnRleHRMb3N0IGNhbGxiYWNrCisgICAgICAgIC8vIGluIHRoZSBjYXNlIGEgbm90
aWZpY2F0aW9uIGlzIHNlbnQKKyAgICAgICAgbVJlbmRlcmVyLT50ZXN0RGV2aWNlTG9zdCh0cnVl
KTsKKyAgICB9CisKKyAgICBHTGVudW0gc3RhdHVzID0gbVJlc2V0U3RhdHVzOworCisgICAgaWYg
KG1SZXNldFN0YXR1cyAhPSBHTF9OT19FUlJPUikKKyAgICB7CisgICAgICAgIEFTU0VSVChtQ29u
dGV4dExvc3QpOworCisgICAgICAgIGlmIChtUmVuZGVyZXItPnRlc3REZXZpY2VSZXNldHRhYmxl
KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1SZXNldFN0YXR1cyA9IEdMX05PX0VSUk9SOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBzdGF0dXM7Cit9CisKK2Jvb2wgQ29u
dGV4dDo6aXNSZXNldE5vdGlmaWNhdGlvbkVuYWJsZWQoKQoreworICAgIHJldHVybiAobVJlc2V0
U3RyYXRlZ3kgPT0gR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCk7Cit9CisKK2ludCBDb250
ZXh0OjpnZXRNYWpvclNoYWRlck1vZGVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbU1ham9yU2hh
ZGVyTW9kZWw7Cit9CisKK2Zsb2F0IENvbnRleHQ6OmdldE1heGltdW1Qb2ludFNpemUoKSBjb25z
dAoreworICAgIHJldHVybiBtTWF4aW11bVBvaW50U2l6ZTsKK30KKwordW5zaWduZWQgaW50IENv
bnRleHQ6OmdldE1heGltdW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVJlbmRlcmVyLT5nZXRNYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCk7Cit9
CisKK2ludCBDb250ZXh0OjpnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbVJlbmRlcmVyLT5nZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCk7Cit9CisKK3Vuc2lnbmVk
IGludCBDb250ZXh0OjpnZXRNYXhpbXVtUmVuZGVyVGFyZ2V0cygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1SZW5kZXJlci0+Z2V0TWF4UmVuZGVyVGFyZ2V0cygpOworfQorCitib29sIENvbnRleHQ6
OnN1cHBvcnRzRXZlbnRRdWVyaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzRXZl
bnRRdWVyaWVzOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzT2NjbHVzaW9uUXVlcmllcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdXBwb3J0c09jY2x1c2lvblF1ZXJpZXM7Cit9CisKK2Jv
b2wgQ29udGV4dDo6c3VwcG9ydHNCR1JBVGV4dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBt
U3VwcG9ydHNCR1JBVGV4dHVyZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNEWFQxVGV4
dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNEWFQxVGV4dHVyZXM7Cit9CisK
K2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNEWFQzVGV4dHVyZXMoKSBjb25zdAoreworICAgIHJldHVy
biBtU3VwcG9ydHNEWFQzVGV4dHVyZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNEWFQ1
VGV4dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNEWFQ1VGV4dHVyZXM7Cit9
CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNGbG9hdDMyVGV4dHVyZXMoKSBjb25zdAoreworICAg
IHJldHVybiBtU3VwcG9ydHNGbG9hdDMyVGV4dHVyZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3Vw
cG9ydHNGbG9hdDMyTGluZWFyRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRz
RmxvYXQzMkxpbmVhckZpbHRlcjsKK30KKworYm9vbCBDb250ZXh0OjpzdXBwb3J0c0Zsb2F0MzJS
ZW5kZXJhYmxlVGV4dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNGbG9hdDMy
UmVuZGVyYWJsZVRleHR1cmVzOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzRmxvYXQxNlRl
eHR1cmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzRmxvYXQxNlRleHR1cmVzOwor
fQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzRmxvYXQxNkxpbmVhckZpbHRlcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1TdXBwb3J0c0Zsb2F0MTZMaW5lYXJGaWx0ZXI7Cit9CisKK2Jvb2wgQ29u
dGV4dDo6c3VwcG9ydHNGbG9hdDE2UmVuZGVyYWJsZVRleHR1cmVzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbVN1cHBvcnRzRmxvYXQxNlJlbmRlcmFibGVUZXh0dXJlczsKK30KKworaW50IENvbnRl
eHQ6OmdldE1heGltdW1SZW5kZXJidWZmZXJEaW1lbnNpb24oKSBjb25zdAoreworICAgIHJldHVy
biBtTWF4UmVuZGVyYnVmZmVyRGltZW5zaW9uOworfQorCitpbnQgQ29udGV4dDo6Z2V0TWF4aW11
bVRleHR1cmVEaW1lbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBtTWF4VGV4dHVyZURpbWVu
c2lvbjsKK30KKworaW50IENvbnRleHQ6OmdldE1heGltdW1DdWJlVGV4dHVyZURpbWVuc2lvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1NYXhDdWJlVGV4dHVyZURpbWVuc2lvbjsKK30KKworaW50
IENvbnRleHQ6OmdldE1heGltdW1UZXh0dXJlTGV2ZWwoKSBjb25zdAoreworICAgIHJldHVybiBt
TWF4VGV4dHVyZUxldmVsOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzTHVtaW5hbmNlVGV4
dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNMdW1pbmFuY2VUZXh0dXJlczsK
K30KKworYm9vbCBDb250ZXh0OjpzdXBwb3J0c0x1bWluYW5jZUFscGhhVGV4dHVyZXMoKSBjb25z
dAoreworICAgIHJldHVybiBtU3VwcG9ydHNMdW1pbmFuY2VBbHBoYVRleHR1cmVzOworfQorCiti
b29sIENvbnRleHQ6OnN1cHBvcnRzRGVwdGhUZXh0dXJlcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1TdXBwb3J0c0RlcHRoVGV4dHVyZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHMzMmJp
dEluZGljZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHMzMmJpdEluZGljZXM7Cit9
CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVN1cHBvcnRzTm9uUG93ZXIyVGV4dHVyZTsKK30KKworYm9vbCBDb250ZXh0Ojpz
dXBwb3J0c0luc3RhbmNpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNJbnN0YW5j
aW5nOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHko
KSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9weTsK
K30KKworZmxvYXQgQ29udGV4dDo6Z2V0VGV4dHVyZU1heEFuaXNvdHJvcHkoKSBjb25zdAorewor
ICAgIHJldHVybiBtTWF4VGV4dHVyZUFuaXNvdHJvcHk7Cit9CisKK2Jvb2wgQ29udGV4dDo6Z2V0
Q3VycmVudFJlYWRGb3JtYXRUeXBlKEdMZW51bSAqZm9ybWF0LCBHTGVudW0gKnR5cGUpCit7Cisg
ICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CisgICAg
aWYgKCFmcmFtZWJ1ZmZlciB8fCBmcmFtZWJ1ZmZlci0+Y29tcGxldGVuZXNzKCkgIT0gR0xfRlJB
TUVCVUZGRVJfQ09NUExFVEUpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgfQorCisgICAgUmVuZGVyYnVmZmVyICpyZW5k
ZXJidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7CisgICAgaWYgKCFy
ZW5kZXJidWZmZXIpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCBmYWxzZSk7CisgICAgfQorCisgICAgKmZvcm1hdCA9IGdsOjpFeHRyYWN0Rm9y
bWF0KHJlbmRlcmJ1ZmZlci0+Z2V0QWN0dWFsRm9ybWF0KCkpOyAKKyAgICAqdHlwZSA9IGdsOjpF
eHRyYWN0VHlwZShyZW5kZXJidWZmZXItPmdldEFjdHVhbEZvcm1hdCgpKTsKKworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIENvbnRleHQ6OmRldGFjaEJ1ZmZlcihHTHVpbnQgYnVmZmVyKQor
eworICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDIuOSBwYWdlIDIyOgorICAgIC8v
IElmIGEgYnVmZmVyIG9iamVjdCBpcyBkZWxldGVkIHdoaWxlIGl0IGlzIGJvdW5kLCBhbGwgYmlu
ZGluZ3MgdG8gdGhhdCBvYmplY3QgaW4gdGhlIGN1cnJlbnQgY29udGV4dAorICAgIC8vIChpLmUu
IGluIHRoZSB0aHJlYWQgdGhhdCBjYWxsZWQgRGVsZXRlLUJ1ZmZlcnMpIGFyZSByZXNldCB0byB6
ZXJvLgorCisgICAgaWYgKG1TdGF0ZS5hcnJheUJ1ZmZlci5pZCgpID09IGJ1ZmZlcikKKyAgICB7
CisgICAgICAgIG1TdGF0ZS5hcnJheUJ1ZmZlci5zZXQoTlVMTCk7CisgICAgfQorCisgICAgaWYg
KG1TdGF0ZS5lbGVtZW50QXJyYXlCdWZmZXIuaWQoKSA9PSBidWZmZXIpCisgICAgeworICAgICAg
ICBtU3RhdGUuZWxlbWVudEFycmF5QnVmZmVyLnNldChOVUxMKTsKKyAgICB9CisKKyAgICBmb3Ig
KGludCBhdHRyaWJ1dGUgPSAwOyBhdHRyaWJ1dGUgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGF0dHJp
YnV0ZSsrKQorICAgIHsKKyAgICAgICAgaWYgKG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmli
dXRlXS5tQm91bmRCdWZmZXIuaWQoKSA9PSBidWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmlidXRlXS5tQm91bmRCdWZmZXIuc2V0KE5VTEwp
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmRldGFjaFRleHR1cmUoR0x1
aW50IHRleHR1cmUpCit7CisgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMy44IHBh
Z2UgODQ6CisgICAgLy8gSWYgYSB0ZXh0dXJlIG9iamVjdCBpcyBkZWxldGVkLCBpdCBpcyBhcyBp
ZiBhbGwgdGV4dHVyZSB1bml0cyB3aGljaCBhcmUgYm91bmQgdG8gdGhhdCB0ZXh0dXJlIG9iamVj
dCBhcmUKKyAgICAvLyByZWJvdW5kIHRvIHRleHR1cmUgb2JqZWN0IHplcm8KKworICAgIGZvciAo
aW50IHR5cGUgPSAwOyB0eXBlIDwgVEVYVFVSRV9UWVBFX0NPVU5UOyB0eXBlKyspCisgICAgewor
ICAgICAgICBmb3IgKGludCBzYW1wbGVyID0gMDsgc2FtcGxlciA8IElNUExFTUVOVEFUSU9OX01B
WF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTOyBzYW1wbGVyKyspCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChtU3RhdGUuc2FtcGxlclRleHR1cmVbdHlwZV1bc2FtcGxlcl0uaWQoKSA9
PSB0ZXh0dXJlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1TdGF0ZS5zYW1wbGVy
VGV4dHVyZVt0eXBlXVtzYW1wbGVyXS5zZXQoTlVMTCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiA0LjQgcGFnZSAx
MTI6CisgICAgLy8gSWYgYSB0ZXh0dXJlIG9iamVjdCBpcyBkZWxldGVkIHdoaWxlIGl0cyBpbWFn
ZSBpcyBhdHRhY2hlZCB0byB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVyLCB0aGVuIGl0
IGlzCisgICAgLy8gYXMgaWYgRnJhbWVidWZmZXJUZXh0dXJlMkQgaGFkIGJlZW4gY2FsbGVkLCB3
aXRoIGEgdGV4dHVyZSBvZiAwLCBmb3IgZWFjaCBhdHRhY2htZW50IHBvaW50IHRvIHdoaWNoIHRo
aXMKKyAgICAvLyBpbWFnZSB3YXMgYXR0YWNoZWQgaW4gdGhlIGN1cnJlbnRseSBib3VuZCBmcmFt
ZWJ1ZmZlci4KKworICAgIEZyYW1lYnVmZmVyICpyZWFkRnJhbWVidWZmZXIgPSBnZXRSZWFkRnJh
bWVidWZmZXIoKTsKKyAgICBGcmFtZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0gZ2V0RHJhd0Zy
YW1lYnVmZmVyKCk7CisKKyAgICBpZiAocmVhZEZyYW1lYnVmZmVyKQorICAgIHsKKyAgICAgICAg
cmVhZEZyYW1lYnVmZmVyLT5kZXRhY2hUZXh0dXJlKHRleHR1cmUpOworICAgIH0KKworICAgIGlm
IChkcmF3RnJhbWVidWZmZXIgJiYgZHJhd0ZyYW1lYnVmZmVyICE9IHJlYWRGcmFtZWJ1ZmZlcikK
KyAgICB7CisgICAgICAgIGRyYXdGcmFtZWJ1ZmZlci0+ZGV0YWNoVGV4dHVyZSh0ZXh0dXJlKTsK
KyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6ZGV0YWNoRnJhbWVidWZmZXIoR0x1aW50IGZyYW1l
YnVmZmVyKQoreworICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDQuNCBwYWdlIDEw
NzoKKyAgICAvLyBJZiBhIGZyYW1lYnVmZmVyIHRoYXQgaXMgY3VycmVudGx5IGJvdW5kIHRvIHRo
ZSB0YXJnZXQgRlJBTUVCVUZGRVIgaXMgZGVsZXRlZCwgaXQgaXMgYXMgdGhvdWdoCisgICAgLy8g
QmluZEZyYW1lYnVmZmVyIGhhZCBiZWVuIGV4ZWN1dGVkIHdpdGggdGhlIHRhcmdldCBvZiBGUkFN
RUJVRkZFUiBhbmQgZnJhbWVidWZmZXIgb2YgemVyby4KKworICAgIGlmIChtU3RhdGUucmVhZEZy
YW1lYnVmZmVyID09IGZyYW1lYnVmZmVyKQorICAgIHsKKyAgICAgICAgYmluZFJlYWRGcmFtZWJ1
ZmZlcigwKTsKKyAgICB9CisKKyAgICBpZiAobVN0YXRlLmRyYXdGcmFtZWJ1ZmZlciA9PSBmcmFt
ZWJ1ZmZlcikKKyAgICB7CisgICAgICAgIGJpbmREcmF3RnJhbWVidWZmZXIoMCk7CisgICAgfQor
fQorCit2b2lkIENvbnRleHQ6OmRldGFjaFJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVy
KQoreworICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDQuNCBwYWdlIDEwOToKKyAg
ICAvLyBJZiBhIHJlbmRlcmJ1ZmZlciB0aGF0IGlzIGN1cnJlbnRseSBib3VuZCB0byBSRU5ERVJC
VUZGRVIgaXMgZGVsZXRlZCwgaXQgaXMgYXMgdGhvdWdoIEJpbmRSZW5kZXJidWZmZXIKKyAgICAv
LyBoYWQgYmVlbiBleGVjdXRlZCB3aXRoIHRoZSB0YXJnZXQgUkVOREVSQlVGRkVSIGFuZCBuYW1l
IG9mIHplcm8uCisKKyAgICBpZiAobVN0YXRlLnJlbmRlcmJ1ZmZlci5pZCgpID09IHJlbmRlcmJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGJpbmRSZW5kZXJidWZmZXIoMCk7CisgICAgfQorCisgICAg
Ly8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gNC40IHBhZ2UgMTExOgorICAgIC8vIElmIGEg
cmVuZGVyYnVmZmVyIG9iamVjdCBpcyBkZWxldGVkIHdoaWxlIGl0cyBpbWFnZSBpcyBhdHRhY2hl
ZCB0byB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVyLAorICAgIC8vIHRoZW4gaXQgaXMg
YXMgaWYgRnJhbWVidWZmZXJSZW5kZXJidWZmZXIgaGFkIGJlZW4gY2FsbGVkLCB3aXRoIGEgcmVu
ZGVyYnVmZmVyIG9mIDAsIGZvciBlYWNoIGF0dGFjaG1lbnQKKyAgICAvLyBwb2ludCB0byB3aGlj
aCB0aGlzIGltYWdlIHdhcyBhdHRhY2hlZCBpbiB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVm
ZmVyLgorCisgICAgRnJhbWVidWZmZXIgKnJlYWRGcmFtZWJ1ZmZlciA9IGdldFJlYWRGcmFtZWJ1
ZmZlcigpOworICAgIEZyYW1lYnVmZmVyICpkcmF3RnJhbWVidWZmZXIgPSBnZXREcmF3RnJhbWVi
dWZmZXIoKTsKKworICAgIGlmIChyZWFkRnJhbWVidWZmZXIpCisgICAgeworICAgICAgICByZWFk
RnJhbWVidWZmZXItPmRldGFjaFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworICAgIH0KKwor
ICAgIGlmIChkcmF3RnJhbWVidWZmZXIgJiYgZHJhd0ZyYW1lYnVmZmVyICE9IHJlYWRGcmFtZWJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGRyYXdGcmFtZWJ1ZmZlci0+ZGV0YWNoUmVuZGVyYnVmZmVy
KHJlbmRlcmJ1ZmZlcik7CisgICAgfQorfQorCitUZXh0dXJlICpDb250ZXh0OjpnZXRJbmNvbXBs
ZXRlVGV4dHVyZShUZXh0dXJlVHlwZSB0eXBlKQoreworICAgIFRleHR1cmUgKnQgPSBtSW5jb21w
bGV0ZVRleHR1cmVzW3R5cGVdLmdldCgpOworCisgICAgaWYgKHQgPT0gTlVMTCkKKyAgICB7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBHTHVieXRlIGNvbG9yW10gPSB7IDAsIDAsIDAsIDI1NSB9Owor
CisgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgLy8gZGVmYXVsdCBmYWxscyB0
aHJvdWdoIHRvIFRFWFRVUkVfMkQKKworICAgICAgICAgIGNhc2UgVEVYVFVSRV8yRDoKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBUZXh0dXJlMkQgKmluY29tcGxldGUyZCA9IG5ldyBU
ZXh0dXJlMkQobVJlbmRlcmVyLCBUZXh0dXJlOjpJTkNPTVBMRVRFX1RFWFRVUkVfSUQpOworICAg
ICAgICAgICAgICAgIGluY29tcGxldGUyZC0+c2V0SW1hZ2UoMCwgMSwgMSwgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwgMSwgY29sb3IpOworICAgICAgICAgICAgICAgIHQgPSBpbmNvbXBsZXRl
MmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2Ug
VEVYVFVSRV9DVUJFOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICBUZXh0dXJlQ3ViZU1h
cCAqaW5jb21wbGV0ZUN1YmUgPSBuZXcgVGV4dHVyZUN1YmVNYXAobVJlbmRlcmVyLCBUZXh0dXJl
OjpJTkNPTVBMRVRFX1RFWFRVUkVfSUQpOworCisgICAgICAgICAgICAgIGluY29tcGxldGVDdWJl
LT5zZXRJbWFnZVBvc1goMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMSwgY29s
b3IpOworICAgICAgICAgICAgICBpbmNvbXBsZXRlQ3ViZS0+c2V0SW1hZ2VOZWdYKDAsIDEsIDEs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDEsIGNvbG9yKTsKKyAgICAgICAgICAgICAgaW5j
b21wbGV0ZUN1YmUtPnNldEltYWdlUG9zWSgwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCAxLCBjb2xvcik7CisgICAgICAgICAgICAgIGluY29tcGxldGVDdWJlLT5zZXRJbWFnZU5l
Z1koMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMSwgY29sb3IpOworICAgICAg
ICAgICAgICBpbmNvbXBsZXRlQ3ViZS0+c2V0SW1hZ2VQb3NaKDAsIDEsIDEsIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsIDEsIGNvbG9yKTsKKyAgICAgICAgICAgICAgaW5jb21wbGV0ZUN1YmUt
PnNldEltYWdlTmVnWigwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAxLCBjb2xv
cik7CisKKyAgICAgICAgICAgICAgdCA9IGluY29tcGxldGVDdWJlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtSW5jb21wbGV0ZVRleHR1
cmVzW3R5cGVdLnNldCh0KTsKKyAgICB9CisKKyAgICByZXR1cm4gdDsKK30KKworYm9vbCBDb250
ZXh0Ojpza2lwRHJhdyhHTGVudW0gZHJhd01vZGUpCit7CisgICAgaWYgKGRyYXdNb2RlID09IEdM
X1BPSU5UUykKKyAgICB7CisgICAgICAgIC8vIFByb2dyYW1CaW5hcnkgYXNzdW1lcyBub24tcG9p
bnQgcmVuZGVyaW5nIGlmIGdsX1BvaW50U2l6ZSBpc24ndCB3cml0dGVuLAorICAgICAgICAvLyB3
aGljaCBhZmZlY3RzIHZhcnlpbmcgaW50ZXJwb2xhdGlvbi4gU2luY2UgdGhlIHZhbHVlIG9mIGds
X1BvaW50U2l6ZSBpcworICAgICAgICAvLyB1bmRlZmluZWQgd2hlbiBub3Qgd3JpdHRlbiwganVz
dCBza2lwIGRyYXdpbmcgdG8gYXZvaWQgdW5leHBlY3RlZCByZXN1bHRzLgorICAgICAgICBpZiAo
IWdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCktPnVzZXNQb2ludFNpemUoKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gVGhpcyBpcyBzdGljdGx5IHNwZWFraW5nIG5vdCBhbiBlcnJvciwgYnV0
IGRldmVsb3BlcnMgc2hvdWxkIGJlIAorICAgICAgICAgICAgLy8gbm90aWZpZWQgb2Ygcmlza2lu
ZyB1bmRlZmluZWQgYmVoYXZpb3IuCisgICAgICAgICAgICBFUlIoIlBvaW50IHJlbmRlcmluZyB3
aXRob3V0IHdyaXRpbmcgdG8gZ2xfUG9pbnRTaXplLiIpOworCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChJc1RyaWFuZ2xlTW9kZShkcmF3
TW9kZSkpCisgICAgeworICAgICAgICBpZiAobVN0YXRlLnJhc3Rlcml6ZXIuY3VsbEZhY2UgJiYg
bVN0YXRlLnJhc3Rlcml6ZXIuY3VsbE1vZGUgPT0gR0xfRlJPTlRfQU5EX0JBQ0spCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIENvbnRleHQ6OnNldFZlcnRleEF0dHJpYihHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBnbDo6TUFY
X1ZFUlRFWF9BVFRSSUJTKTsKKworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbaW5kZXhdLm1D
dXJyZW50VmFsdWVbMF0gPSB2YWx1ZXNbMF07CisgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVtp
bmRleF0ubUN1cnJlbnRWYWx1ZVsxXSA9IHZhbHVlc1sxXTsKKyAgICBtU3RhdGUudmVydGV4QXR0
cmlidXRlW2luZGV4XS5tQ3VycmVudFZhbHVlWzJdID0gdmFsdWVzWzJdOworICAgIG1TdGF0ZS52
ZXJ0ZXhBdHRyaWJ1dGVbaW5kZXhdLm1DdXJyZW50VmFsdWVbM10gPSB2YWx1ZXNbM107Cit9CisK
K3ZvaWQgQ29udGV4dDo6c2V0VmVydGV4QXR0cmliRGl2aXNvcihHTHVpbnQgaW5kZXgsIEdMdWlu
dCBkaXZpc29yKQoreworICAgIEFTU0VSVChpbmRleCA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMp
OworCisgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVtpbmRleF0ubURpdmlzb3IgPSBkaXZpc29y
OworfQorCisvLyBrZWVwIGxpc3Qgc29ydGVkIGluIGZvbGxvd2luZyBvcmRlcgorLy8gT0VTIGV4
dGVuc2lvbnMKKy8vIEVYVCBleHRlbnNpb25zCisvLyBWZW5kb3IgZXh0ZW5zaW9ucwordm9pZCBD
b250ZXh0Ojppbml0RXh0ZW5zaW9uU3RyaW5nKCkKK3sKKyAgICBzdGQ6OnN0cmluZyBleHRlbnNp
b25TdHJpbmcgPSAiIjsKKworICAgIC8vIE9FUyBleHRlbnNpb25zCisgICAgaWYgKHN1cHBvcnRz
MzJiaXRJbmRpY2VzKCkpCisgICAgeworICAgICAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX09F
U19lbGVtZW50X2luZGV4X3VpbnQgIjsKKyAgICB9CisKKyAgICBleHRlbnNpb25TdHJpbmcgKz0g
IkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCAiOworICAgIGV4dGVuc2lvblN0cmluZyArPSAi
R0xfT0VTX2dldF9wcm9ncmFtX2JpbmFyeSAiOworICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xf
T0VTX3JnYjhfcmdiYTggIjsKKyAgICBpZiAobVJlbmRlcmVyLT5nZXREZXJpdmF0aXZlSW5zdHJ1
Y3Rpb25TdXBwb3J0KCkpCisgICAgeworICAgICAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX09F
U19zdGFuZGFyZF9kZXJpdmF0aXZlcyAiOworICAgIH0KKworICAgIGlmIChzdXBwb3J0c0Zsb2F0
MTZUZXh0dXJlcygpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0ICI7CisgICAgfQorICAgIGlmIChzdXBwb3J0c0Zsb2F0MTZMaW5l
YXJGaWx0ZXIoKSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfT0VTX3Rl
eHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgIjsKKyAgICB9CisgICAgaWYgKHN1cHBvcnRzRmxvYXQz
MlRleHR1cmVzKCkpCisgICAgeworICAgICAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX09FU190
ZXh0dXJlX2Zsb2F0ICI7CisgICAgfQorICAgIGlmIChzdXBwb3J0c0Zsb2F0MzJMaW5lYXJGaWx0
ZXIoKSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfT0VTX3RleHR1cmVf
ZmxvYXRfbGluZWFyICI7CisgICAgfQorCisgICAgaWYgKHN1cHBvcnRzTm9uUG93ZXIyVGV4dHVy
ZSgpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9PRVNfdGV4dHVyZV9u
cG90ICI7CisgICAgfQorCisgICAgLy8gTXVsdGktdmVuZG9yIChFWFQpIGV4dGVuc2lvbnMKKyAg
ICBpZiAoc3VwcG9ydHNPY2NsdXNpb25RdWVyaWVzKCkpCisgICAgeworICAgICAgICBleHRlbnNp
b25TdHJpbmcgKz0gIkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiAiOworICAgIH0KKwor
ICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgIjsKKyAgICBl
eHRlbnNpb25TdHJpbmcgKz0gIkdMX0VYVF9yb2J1c3RuZXNzICI7CisKKyAgICBpZiAoc3VwcG9y
dHNEWFQxVGV4dHVyZXMoKSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSAiOworICAgIH0KKworICAgIGlmIChzdXBwb3J0
c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5KCkpCisgICAgeworICAgICAgICBleHRlbnNpb25TdHJp
bmcgKz0gIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyAiOworICAgIH0KKworICAg
IGlmIChzdXBwb3J0c0JHUkFUZXh0dXJlcygpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3Ry
aW5nICs9ICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggIjsKKyAgICB9CisKKyAgICBp
ZiAobVJlbmRlcmVyLT5nZXRNYXhSZW5kZXJUYXJnZXRzKCkgPiAxKQorICAgIHsKKyAgICAgICAg
ZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9FWFRfZHJhd19idWZmZXJzICI7CisgICAgfQorCisgICAg
ZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlICI7CisgICAgZXh0ZW5z
aW9uU3RyaW5nICs9ICJHTF9FWFRfZnJhZ19kZXB0aCAiOworCisgICAgLy8gQU5HTEUtc3BlY2lm
aWMgZXh0ZW5zaW9ucworICAgIGlmIChzdXBwb3J0c0RlcHRoVGV4dHVyZXMoKSkKKyAgICB7Cisg
ICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSAiOworICAg
IH0KKworICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCAi
OworICAgIGlmIChnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgIT0gMCkKKyAgICB7CisgICAgICAg
IGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgIjsK
KyAgICB9CisKKyAgICBpZiAoc3VwcG9ydHNJbnN0YW5jaW5nKCkpCisgICAgeworICAgICAgICBl
eHRlbnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMgIjsKKyAgICB9CisK
KyAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX3BhY2tfcmV2ZXJzZV9yb3dfb3JkZXIg
IjsKKworICAgIGlmIChzdXBwb3J0c0RYVDNUZXh0dXJlcygpKQorICAgIHsKKyAgICAgICAgZXh0
ZW5zaW9uU3RyaW5nICs9ICJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMgIjsKKyAg
ICB9CisgICAgaWYgKHN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCisgICAgeworICAgICAgICBleHRl
bnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSAiOworICAg
IH0KKworICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfdGV4dHVyZV91c2FnZSAiOwor
ICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNl
ICI7CisKKyAgICAvLyBPdGhlciB2ZW5kb3Itc3BlY2lmaWMgZXh0ZW5zaW9ucworICAgIGlmIChz
dXBwb3J0c0V2ZW50UXVlcmllcygpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9
ICJHTF9OVl9mZW5jZSAiOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgZW5k
ID0gZXh0ZW5zaW9uU3RyaW5nLmZpbmRfbGFzdF9ub3Rfb2YoJyAnKTsKKyAgICBpZiAoZW5kICE9
IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3RyaW5nLnJlc2l6
ZShlbmQrMSk7CisgICAgfQorCisgICAgbUV4dGVuc2lvblN0cmluZyA9IG1ha2VTdGF0aWNTdHJp
bmcoZXh0ZW5zaW9uU3RyaW5nKTsKK30KKworY29uc3QgY2hhciAqQ29udGV4dDo6Z2V0RXh0ZW5z
aW9uU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUV4dGVuc2lvblN0cmluZzsKK30KKwor
dm9pZCBDb250ZXh0Ojppbml0UmVuZGVyZXJTdHJpbmcoKQoreworICAgIHN0ZDo6b3N0cmluZ3N0
cmVhbSByZW5kZXJlclN0cmluZzsKKyAgICByZW5kZXJlclN0cmluZyA8PCAiQU5HTEUgKCI7Cisg
ICAgcmVuZGVyZXJTdHJpbmcgPDwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlckRlc2NyaXB0aW9uKCk7
CisgICAgcmVuZGVyZXJTdHJpbmcgPDwgIikiOworCisgICAgbVJlbmRlcmVyU3RyaW5nID0gbWFr
ZVN0YXRpY1N0cmluZyhyZW5kZXJlclN0cmluZy5zdHIoKSk7Cit9CisKK2NvbnN0IGNoYXIgKkNv
bnRleHQ6OmdldFJlbmRlcmVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVy
U3RyaW5nOworfQorCit2b2lkIENvbnRleHQ6OmJsaXRGcmFtZWJ1ZmZlcihHTGludCBzcmNYMCwg
R0xpbnQgc3JjWTAsIEdMaW50IHNyY1gxLCBHTGludCBzcmNZMSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRzdFgxLCBHTGlu
dCBkc3RZMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaykK
K3sKKyAgICBGcmFtZWJ1ZmZlciAqcmVhZEZyYW1lYnVmZmVyID0gZ2V0UmVhZEZyYW1lYnVmZmVy
KCk7CisgICAgRnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciA9IGdldERyYXdGcmFtZWJ1ZmZl
cigpOworCisgICAgaWYgKCFyZWFkRnJhbWVidWZmZXIgfHwgcmVhZEZyYW1lYnVmZmVyLT5jb21w
bGV0ZW5lc3MoKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSB8fAorICAgICAgICAhZHJhd0Zy
YW1lYnVmZmVyIHx8IGRyYXdGcmFtZWJ1ZmZlci0+Y29tcGxldGVuZXNzKCkgIT0gR0xfRlJBTUVC
VUZGRVJfQ09NUExFVEUpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICBpZiAoZHJhd0ZyYW1lYnVm
ZmVyLT5nZXRTYW1wbGVzKCkgIT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAgIFJlbmRlcmJ1ZmZlciAqcmVhZENv
bG9yQnVmZmVyID0gcmVhZEZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKTsKKyAgICBS
ZW5kZXJidWZmZXIgKmRyYXdDb2xvckJ1ZmZlciA9IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0Rmlyc3RD
b2xvcmJ1ZmZlcigpOworCisgICAgaWYgKGRyYXdDb2xvckJ1ZmZlciA9PSBOVUxMKQorICAgIHsK
KyAgICAgICAgRVJSKCJEcmF3IGJ1ZmZlcnMgZm9ybWF0cyBkb24ndCBtYXRjaCwgd2hpY2ggaXMg
bm90IHN1cHBvcnRlZCBpbiB0aGlzIGltcGxlbWVudGF0aW9uIG9mIEJsaXRGcmFtZWJ1ZmZlckFO
R0xFIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgIH0KKworICAgIGludCByZWFkQnVmZmVyV2lkdGggPSByZWFkQ29sb3JCdWZmZXItPmdldFdp
ZHRoKCk7CisgICAgaW50IHJlYWRCdWZmZXJIZWlnaHQgPSByZWFkQ29sb3JCdWZmZXItPmdldEhl
aWdodCgpOworICAgIGludCBkcmF3QnVmZmVyV2lkdGggPSBkcmF3Q29sb3JCdWZmZXItPmdldFdp
ZHRoKCk7CisgICAgaW50IGRyYXdCdWZmZXJIZWlnaHQgPSBkcmF3Q29sb3JCdWZmZXItPmdldEhl
aWdodCgpOworCisgICAgUmVjdGFuZ2xlIHNvdXJjZVJlY3Q7CisgICAgUmVjdGFuZ2xlIGRlc3RS
ZWN0OworCisgICAgaWYgKHNyY1gwIDwgc3JjWDEpCisgICAgeworICAgICAgICBzb3VyY2VSZWN0
LnggPSBzcmNYMDsKKyAgICAgICAgZGVzdFJlY3QueCA9IGRzdFgwOworICAgICAgICBzb3VyY2VS
ZWN0LndpZHRoID0gc3JjWDEgLSBzcmNYMDsKKyAgICAgICAgZGVzdFJlY3Qud2lkdGggPSBkc3RY
MSAtIGRzdFgwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBzb3VyY2VSZWN0Lngg
PSBzcmNYMTsKKyAgICAgICAgZGVzdFJlY3QueCA9IGRzdFgxOworICAgICAgICBzb3VyY2VSZWN0
LndpZHRoID0gc3JjWDAgLSBzcmNYMTsKKyAgICAgICAgZGVzdFJlY3Qud2lkdGggPSBkc3RYMCAt
IGRzdFgxOworICAgIH0KKworICAgIGlmIChzcmNZMCA8IHNyY1kxKQorICAgIHsKKyAgICAgICAg
c291cmNlUmVjdC5oZWlnaHQgPSBzcmNZMSAtIHNyY1kwOworICAgICAgICBkZXN0UmVjdC5oZWln
aHQgPSBkc3RZMSAtIGRzdFkwOworICAgICAgICBzb3VyY2VSZWN0LnkgPSBzcmNZMDsKKyAgICAg
ICAgZGVzdFJlY3QueSA9IGRzdFkwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBz
b3VyY2VSZWN0LmhlaWdodCA9IHNyY1kwIC0gc3JjWTE7CisgICAgICAgIGRlc3RSZWN0LmhlaWdo
dCA9IGRzdFkwIC0gc3JjWTE7CisgICAgICAgIHNvdXJjZVJlY3QueSA9IHNyY1kxOworICAgICAg
ICBkZXN0UmVjdC55ID0gZHN0WTE7CisgICAgfQorCisgICAgUmVjdGFuZ2xlIHNvdXJjZVNjaXNz
b3JlZFJlY3QgPSBzb3VyY2VSZWN0OworICAgIFJlY3RhbmdsZSBkZXN0U2Npc3NvcmVkUmVjdCA9
IGRlc3RSZWN0OworCisgICAgaWYgKG1TdGF0ZS5zY2lzc29yVGVzdCkKKyAgICB7CisgICAgICAg
IC8vIE9ubHkgd3JpdGUgdG8gcGFydHMgb2YgdGhlIGRlc3RpbmF0aW9uIGZyYW1lYnVmZmVyIHdo
aWNoIHBhc3MgdGhlIHNjaXNzb3IgdGVzdC4KKyAgICAgICAgaWYgKGRlc3RSZWN0LnggPCBtU3Rh
dGUuc2Npc3Nvci54KQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgeERpZmYgPSBtU3RhdGUu
c2Npc3Nvci54IC0gZGVzdFJlY3QueDsKKyAgICAgICAgICAgIGRlc3RTY2lzc29yZWRSZWN0Lngg
PSBtU3RhdGUuc2Npc3Nvci54OworICAgICAgICAgICAgZGVzdFNjaXNzb3JlZFJlY3Qud2lkdGgg
LT0geERpZmY7CisgICAgICAgICAgICBzb3VyY2VTY2lzc29yZWRSZWN0LnggKz0geERpZmY7Cisg
ICAgICAgICAgICBzb3VyY2VTY2lzc29yZWRSZWN0LndpZHRoIC09IHhEaWZmOworCisgICAgICAg
IH0KKworICAgICAgICBpZiAoZGVzdFJlY3QueCArIGRlc3RSZWN0LndpZHRoID4gbVN0YXRlLnNj
aXNzb3IueCArIG1TdGF0ZS5zY2lzc29yLndpZHRoKQorICAgICAgICB7CisgICAgICAgICAgICBp
bnQgeERpZmYgPSAoZGVzdFJlY3QueCArIGRlc3RSZWN0LndpZHRoKSAtIChtU3RhdGUuc2Npc3Nv
ci54ICsgbVN0YXRlLnNjaXNzb3Iud2lkdGgpOworICAgICAgICAgICAgZGVzdFNjaXNzb3JlZFJl
Y3Qud2lkdGggLT0geERpZmY7CisgICAgICAgICAgICBzb3VyY2VTY2lzc29yZWRSZWN0LndpZHRo
IC09IHhEaWZmOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlc3RSZWN0LnkgPCBtU3RhdGUu
c2Npc3Nvci55KQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgeURpZmYgPSBtU3RhdGUuc2Np
c3Nvci55IC0gZGVzdFJlY3QueTsKKyAgICAgICAgICAgIGRlc3RTY2lzc29yZWRSZWN0LnkgPSBt
U3RhdGUuc2Npc3Nvci55OworICAgICAgICAgICAgZGVzdFNjaXNzb3JlZFJlY3QuaGVpZ2h0IC09
IHlEaWZmOworICAgICAgICAgICAgc291cmNlU2Npc3NvcmVkUmVjdC55ICs9IHlEaWZmOworICAg
ICAgICAgICAgc291cmNlU2Npc3NvcmVkUmVjdC5oZWlnaHQgLT0geURpZmY7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoZGVzdFJlY3QueSArIGRlc3RSZWN0LmhlaWdodCA+IG1TdGF0ZS5zY2lz
c29yLnkgKyBtU3RhdGUuc2Npc3Nvci5oZWlnaHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlu
dCB5RGlmZiA9IChkZXN0UmVjdC55ICsgZGVzdFJlY3QuaGVpZ2h0KSAtIChtU3RhdGUuc2Npc3Nv
ci55ICsgbVN0YXRlLnNjaXNzb3IuaGVpZ2h0KTsKKyAgICAgICAgICAgIGRlc3RTY2lzc29yZWRS
ZWN0LmhlaWdodCAgLT0geURpZmY7CisgICAgICAgICAgICBzb3VyY2VTY2lzc29yZWRSZWN0Lmhl
aWdodCAtPSB5RGlmZjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgYmxpdFJlbmRlclRh
cmdldCA9IGZhbHNlOworICAgIGJvb2wgYmxpdERlcHRoU3RlbmNpbCA9IGZhbHNlOworCisgICAg
UmVjdGFuZ2xlIHNvdXJjZVRyaW1tZWRSZWN0ID0gc291cmNlU2Npc3NvcmVkUmVjdDsKKyAgICBS
ZWN0YW5nbGUgZGVzdFRyaW1tZWRSZWN0ID0gZGVzdFNjaXNzb3JlZFJlY3Q7CisKKyAgICAvLyBU
aGUgc291cmNlICYgZGVzdGluYXRpb24gcmVjdGFuZ2xlcyBhbHNvIG1heSBuZWVkIHRvIGJlIHRy
aW1tZWQgaWYgdGhleSBmYWxsIG91dCBvZiB0aGUgYm91bmRzIG9mIAorICAgIC8vIHRoZSBhY3R1
YWwgZHJhdyBhbmQgcmVhZCBzdXJmYWNlcy4KKyAgICBpZiAoc291cmNlVHJpbW1lZFJlY3QueCA8
IDApCisgICAgeworICAgICAgICBpbnQgeERpZmYgPSAwIC0gc291cmNlVHJpbW1lZFJlY3QueDsK
KyAgICAgICAgc291cmNlVHJpbW1lZFJlY3QueCA9IDA7CisgICAgICAgIHNvdXJjZVRyaW1tZWRS
ZWN0LndpZHRoIC09IHhEaWZmOworICAgICAgICBkZXN0VHJpbW1lZFJlY3QueCArPSB4RGlmZjsK
KyAgICAgICAgZGVzdFRyaW1tZWRSZWN0LndpZHRoIC09IHhEaWZmOworICAgIH0KKworICAgIGlm
IChzb3VyY2VUcmltbWVkUmVjdC54ICsgc291cmNlVHJpbW1lZFJlY3Qud2lkdGggPiByZWFkQnVm
ZmVyV2lkdGgpCisgICAgeworICAgICAgICBpbnQgeERpZmYgPSAoc291cmNlVHJpbW1lZFJlY3Qu
eCArIHNvdXJjZVRyaW1tZWRSZWN0LndpZHRoKSAtIHJlYWRCdWZmZXJXaWR0aDsKKyAgICAgICAg
c291cmNlVHJpbW1lZFJlY3Qud2lkdGggLT0geERpZmY7CisgICAgICAgIGRlc3RUcmltbWVkUmVj
dC53aWR0aCAtPSB4RGlmZjsKKyAgICB9CisKKyAgICBpZiAoc291cmNlVHJpbW1lZFJlY3QueSA8
IDApCisgICAgeworICAgICAgICBpbnQgeURpZmYgPSAwIC0gc291cmNlVHJpbW1lZFJlY3QueTsK
KyAgICAgICAgc291cmNlVHJpbW1lZFJlY3QueSA9IDA7CisgICAgICAgIHNvdXJjZVRyaW1tZWRS
ZWN0LmhlaWdodCAtPSB5RGlmZjsKKyAgICAgICAgZGVzdFRyaW1tZWRSZWN0LnkgKz0geURpZmY7
CisgICAgICAgIGRlc3RUcmltbWVkUmVjdC5oZWlnaHQgLT0geURpZmY7CisgICAgfQorCisgICAg
aWYgKHNvdXJjZVRyaW1tZWRSZWN0LnkgKyBzb3VyY2VUcmltbWVkUmVjdC5oZWlnaHQgPiByZWFk
QnVmZmVySGVpZ2h0KQorICAgIHsKKyAgICAgICAgaW50IHlEaWZmID0gKHNvdXJjZVRyaW1tZWRS
ZWN0LnkgKyBzb3VyY2VUcmltbWVkUmVjdC5oZWlnaHQpIC0gcmVhZEJ1ZmZlckhlaWdodDsKKyAg
ICAgICAgc291cmNlVHJpbW1lZFJlY3QuaGVpZ2h0IC09IHlEaWZmOworICAgICAgICBkZXN0VHJp
bW1lZFJlY3QuaGVpZ2h0IC09IHlEaWZmOworICAgIH0KKworICAgIGlmIChkZXN0VHJpbW1lZFJl
Y3QueCA8IDApCisgICAgeworICAgICAgICBpbnQgeERpZmYgPSAwIC0gZGVzdFRyaW1tZWRSZWN0
Lng7CisgICAgICAgIGRlc3RUcmltbWVkUmVjdC54ID0gMDsKKyAgICAgICAgZGVzdFRyaW1tZWRS
ZWN0LndpZHRoIC09IHhEaWZmOworICAgICAgICBzb3VyY2VUcmltbWVkUmVjdC54ICs9IHhEaWZm
OworICAgICAgICBzb3VyY2VUcmltbWVkUmVjdC53aWR0aCAtPSB4RGlmZjsKKyAgICB9CisKKyAg
ICBpZiAoZGVzdFRyaW1tZWRSZWN0LnggKyBkZXN0VHJpbW1lZFJlY3Qud2lkdGggPiBkcmF3QnVm
ZmVyV2lkdGgpCisgICAgeworICAgICAgICBpbnQgeERpZmYgPSAoZGVzdFRyaW1tZWRSZWN0Lngg
KyBkZXN0VHJpbW1lZFJlY3Qud2lkdGgpIC0gZHJhd0J1ZmZlcldpZHRoOworICAgICAgICBkZXN0
VHJpbW1lZFJlY3Qud2lkdGggLT0geERpZmY7CisgICAgICAgIHNvdXJjZVRyaW1tZWRSZWN0Lndp
ZHRoIC09IHhEaWZmOworICAgIH0KKworICAgIGlmIChkZXN0VHJpbW1lZFJlY3QueSA8IDApCisg
ICAgeworICAgICAgICBpbnQgeURpZmYgPSAwIC0gZGVzdFRyaW1tZWRSZWN0Lnk7CisgICAgICAg
IGRlc3RUcmltbWVkUmVjdC55ID0gMDsKKyAgICAgICAgZGVzdFRyaW1tZWRSZWN0LmhlaWdodCAt
PSB5RGlmZjsKKyAgICAgICAgc291cmNlVHJpbW1lZFJlY3QueSArPSB5RGlmZjsKKyAgICAgICAg
c291cmNlVHJpbW1lZFJlY3QuaGVpZ2h0IC09IHlEaWZmOworICAgIH0KKworICAgIGlmIChkZXN0
VHJpbW1lZFJlY3QueSArIGRlc3RUcmltbWVkUmVjdC5oZWlnaHQgPiBkcmF3QnVmZmVySGVpZ2h0
KQorICAgIHsKKyAgICAgICAgaW50IHlEaWZmID0gKGRlc3RUcmltbWVkUmVjdC55ICsgZGVzdFRy
aW1tZWRSZWN0LmhlaWdodCkgLSBkcmF3QnVmZmVySGVpZ2h0OworICAgICAgICBkZXN0VHJpbW1l
ZFJlY3QuaGVpZ2h0IC09IHlEaWZmOworICAgICAgICBzb3VyY2VUcmltbWVkUmVjdC5oZWlnaHQg
LT0geURpZmY7CisgICAgfQorCisgICAgYm9vbCBwYXJ0aWFsQnVmZmVyQ29weSA9IGZhbHNlOwor
ICAgIGlmIChzb3VyY2VUcmltbWVkUmVjdC5oZWlnaHQgPCByZWFkQnVmZmVySGVpZ2h0IHx8Cisg
ICAgICAgIHNvdXJjZVRyaW1tZWRSZWN0LndpZHRoIDwgcmVhZEJ1ZmZlcldpZHRoIHx8IAorICAg
ICAgICBkZXN0VHJpbW1lZFJlY3QuaGVpZ2h0IDwgZHJhd0J1ZmZlckhlaWdodCB8fAorICAgICAg
ICBkZXN0VHJpbW1lZFJlY3Qud2lkdGggPCBkcmF3QnVmZmVyV2lkdGggfHwKKyAgICAgICAgc291
cmNlVHJpbW1lZFJlY3QueSAhPSAwIHx8IGRlc3RUcmltbWVkUmVjdC55ICE9IDAgfHwgc291cmNl
VHJpbW1lZFJlY3QueCAhPSAwIHx8IGRlc3RUcmltbWVkUmVjdC54ICE9IDApCisgICAgeworICAg
ICAgICBwYXJ0aWFsQnVmZmVyQ29weSA9IHRydWU7CisgICAgfQorCisgICAgaWYgKG1hc2sgJiBH
TF9DT0xPUl9CVUZGRVJfQklUKQorICAgIHsKKyAgICAgICAgY29uc3QgR0xlbnVtIHJlYWRDb2xv
cmJ1ZmZlclR5cGUgPSByZWFkRnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlclR5cGUoKTsK
KyAgICAgICAgY29uc3QgYm9vbCB2YWxpZFJlYWRUeXBlID0gKHJlYWRDb2xvcmJ1ZmZlclR5cGUg
PT0gR0xfVEVYVFVSRV8yRCkgfHwgKHJlYWRDb2xvcmJ1ZmZlclR5cGUgPT0gR0xfUkVOREVSQlVG
RkVSKTsKKyAgICAgICAgYm9vbCB2YWxpZERyYXdUeXBlID0gdHJ1ZTsKKyAgICAgICAgYm9vbCB2
YWxpZERyYXdGb3JtYXQgPSB0cnVlOworCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGNvbG9y
QXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhf
RFJBV19CVUZGRVJTOyBjb2xvckF0dGFjaG1lbnQrKykKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKGRyYXdGcmFtZWJ1ZmZlci0+aXNFbmFibGVkQ29sb3JBdHRhY2htZW50KGNvbG9yQXR0YWNo
bWVudCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGRyYXdGcmFtZWJ1ZmZl
ci0+Z2V0Q29sb3JidWZmZXJUeXBlKGNvbG9yQXR0YWNobWVudCkgIT0gR0xfVEVYVFVSRV8yRCAm
JgorICAgICAgICAgICAgICAgICAgICBkcmF3RnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyVHlw
ZShjb2xvckF0dGFjaG1lbnQpICE9IEdMX1JFTkRFUkJVRkZFUikKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIHZhbGlkRHJhd1R5cGUgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZHJhd0ZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1
ZmZlcihjb2xvckF0dGFjaG1lbnQpLT5nZXRBY3R1YWxGb3JtYXQoKSAhPSByZWFkQ29sb3JCdWZm
ZXItPmdldEFjdHVhbEZvcm1hdCgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFsaWREcmF3Rm9ybWF0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCF2YWxpZFJlYWRUeXBlIHx8ICF2YWxp
ZERyYXdUeXBlIHx8ICF2YWxpZERyYXdGb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVS
UigiQ29sb3IgYnVmZmVyIGZvcm1hdCBjb252ZXJzaW9uIGluIEJsaXRGcmFtZWJ1ZmZlckFOR0xF
IG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbiIpOworICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGlmIChwYXJ0aWFsQnVmZmVyQ29weSAmJiByZWFkRnJhbWVidWZmZXItPmdldFNh
bXBsZXMoKSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgfQorCisgICAgICAgIGJsaXRSZW5kZXJUYXJn
ZXQgPSB0cnVlOworCisgICAgfQorCisgICAgaWYgKG1hc2sgJiAoR0xfREVQVEhfQlVGRkVSX0JJ
VCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCkpCisgICAgeworICAgICAgICBSZW5kZXJidWZmZXIg
KnJlYWREU0J1ZmZlciA9IE5VTEw7CisgICAgICAgIFJlbmRlcmJ1ZmZlciAqZHJhd0RTQnVmZmVy
ID0gTlVMTDsKKworICAgICAgICAvLyBXZSBzdXBwb3J0IE9FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCwgYW5kIGRvIG5vdCBzdXBwb3J0IGEgc2VwYXJhdGVseSBhdHRhY2hlZCBkZXB0aCBhbmQgc3Rl
bmNpbCBidWZmZXIsIHNvIGlmIHdlIGhhdmUKKyAgICAgICAgLy8gYm90aCBhIGRlcHRoIGFuZCBz
dGVuY2lsIGJ1ZmZlciwgaXQgd2lsbCBiZSB0aGUgc2FtZSBidWZmZXIuCisKKyAgICAgICAgaWYg
KG1hc2sgJiBHTF9ERVBUSF9CVUZGRVJfQklUKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
cmVhZEZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1ZmZlcigpICYmIGRyYXdGcmFtZWJ1ZmZlci0+Z2V0
RGVwdGhidWZmZXIoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAocmVhZEZy
YW1lYnVmZmVyLT5nZXREZXB0aGJ1ZmZlclR5cGUoKSAhPSBkcmF3RnJhbWVidWZmZXItPmdldERl
cHRoYnVmZmVyVHlwZSgpIHx8CisgICAgICAgICAgICAgICAgICAgIHJlYWRGcmFtZWJ1ZmZlci0+
Z2V0RGVwdGhidWZmZXIoKS0+Z2V0QWN0dWFsRm9ybWF0KCkgIT0gZHJhd0ZyYW1lYnVmZmVyLT5n
ZXREZXB0aGJ1ZmZlcigpLT5nZXRBY3R1YWxGb3JtYXQoKSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJsaXREZXB0aFN0ZW5jaWwg
PSB0cnVlOworICAgICAgICAgICAgICAgIHJlYWREU0J1ZmZlciA9IHJlYWRGcmFtZWJ1ZmZlci0+
Z2V0RGVwdGhidWZmZXIoKTsKKyAgICAgICAgICAgICAgICBkcmF3RFNCdWZmZXIgPSBkcmF3RnJh
bWVidWZmZXItPmdldERlcHRoYnVmZmVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAobWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHJlYWRGcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlcigpICYmIGRyYXdG
cmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlcigpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGlmIChyZWFkRnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXJUeXBlKCkgIT0gZHJh
d0ZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyVHlwZSgpIHx8CisgICAgICAgICAgICAgICAg
ICAgIHJlYWRGcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlcigpLT5nZXRBY3R1YWxGb3JtYXQo
KSAhPSBkcmF3RnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXIoKS0+Z2V0QWN0dWFsRm9ybWF0
KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBibGl0RGVwdGhTdGVuY2lsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZWFkRFNC
dWZmZXIgPSByZWFkRnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXIoKTsKKyAgICAgICAgICAg
ICAgICBkcmF3RFNCdWZmZXIgPSBkcmF3RnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXIoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChwYXJ0aWFsQnVmZmVyQ29w
eSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJPbmx5IHdob2xlLWJ1ZmZlciBkZXB0aCBh
bmQgc3RlbmNpbCBibGl0cyBhcmUgc3VwcG9ydGVkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb24uIik7
CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsgLy8g
b25seSB3aG9sZS1idWZmZXIgY29waWVzIGFyZSBwZXJtaXR0ZWQKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICgoZHJhd0RTQnVmZmVyICYmIGRyYXdEU0J1ZmZlci0+Z2V0U2FtcGxlcygpICE9IDAp
IHx8IAorICAgICAgICAgICAgKHJlYWREU0J1ZmZlciAmJiByZWFkRFNCdWZmZXItPmdldFNhbXBs
ZXMoKSAhPSAwKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYmxpdFJlbmRl
clRhcmdldCB8fCBibGl0RGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgbVJlbmRlcmVyLT5i
bGl0UmVjdChyZWFkRnJhbWVidWZmZXIsIHNvdXJjZVRyaW1tZWRSZWN0LCBkcmF3RnJhbWVidWZm
ZXIsIGRlc3RUcmltbWVkUmVjdCwgYmxpdFJlbmRlclRhcmdldCwgYmxpdERlcHRoU3RlbmNpbCk7
CisgICAgfQorfQorCit9CisKK2V4dGVybiAiQyIKK3sKK2dsOjpDb250ZXh0ICpnbENyZWF0ZUNv
bnRleHQoY29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwgcng6OlJlbmRlcmVyICpyZW5k
ZXJlciwgYm9vbCBub3RpZnlSZXNldHMsIGJvb2wgcm9idXN0QWNjZXNzKQoreworICAgIHJldHVy
biBuZXcgZ2w6OkNvbnRleHQoc2hhcmVDb250ZXh0LCByZW5kZXJlciwgbm90aWZ5UmVzZXRzLCBy
b2J1c3RBY2Nlc3MpOworfQorCit2b2lkIGdsRGVzdHJveUNvbnRleHQoZ2w6OkNvbnRleHQgKmNv
bnRleHQpCit7CisgICAgZGVsZXRlIGNvbnRleHQ7CisKKyAgICBpZiAoY29udGV4dCA9PSBnbDo6
Z2V0Q29udGV4dCgpKQorICAgIHsKKyAgICAgICAgZ2w6Om1ha2VDdXJyZW50KE5VTEwsIE5VTEws
IE5VTEwpOworICAgIH0KK30KKwordm9pZCBnbE1ha2VDdXJyZW50KGdsOjpDb250ZXh0ICpjb250
ZXh0LCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKK3sKKyAg
ICBnbDo6bWFrZUN1cnJlbnQoY29udGV4dCwgZGlzcGxheSwgc3VyZmFjZSk7Cit9CisKK2dsOjpD
b250ZXh0ICpnbEdldEN1cnJlbnRDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gZ2w6OmdldENvbnRl
eHQoKTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9Db250ZXh0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL0NvbnRleHQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MDUgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIENvbnRleHQuaDogRGVmaW5lcyB0aGUgZ2w6OkNvbnRl
eHQgY2xhc3MsIG1hbmFnaW5nIGFsbCBHTCBzdGF0ZSBhbmQgcGVyZm9ybWluZworLy8gcmVuZGVy
aW5nIG9wZXJhdGlvbnMuIEl0IGlzIHRoZSBHTEVTMiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBv
ZiBFR0xDb250ZXh0LgorCisjaWZuZGVmIExJQkdMRVNWMl9DT05URVhUX0hfCisjZGVmaW5lIExJ
QkdMRVNWMl9DT05URVhUX0hfCisKKyNkZWZpbmUgR0xfQVBJQ0FMTAorI2luY2x1ZGUgPEdMRVMy
L2dsMi5oPgorI2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgorI2RlZmluZSBFR0xBUEkKKyNpbmNs
dWRlIDxFR0wvZWdsLmg+CisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8bWFwPgorI2lm
ZGVmIF9NU0NfVkVSCisjaW5jbHVkZSA8aGFzaF9tYXA+CisjZWxzZQorI2luY2x1ZGUgPHVub3Jk
ZXJlZF9tYXA+CisjZW5kaWYKKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5j
bHVkZSAiY29tbW9uL1JlZkNvdW50T2JqZWN0LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0hhbmRs
ZUFsbG9jYXRvci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9hbmdsZXR5cGVzLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL0NvbnN0YW50cy5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRl
cmVyOworfQorCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBEaXNwbGF5OworY2xhc3MgU3VyZmFj
ZTsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBTaGFkZXI7CitjbGFzcyBQcm9ncmFtOwor
Y2xhc3MgUHJvZ3JhbUJpbmFyeTsKK2NsYXNzIFRleHR1cmU7CitjbGFzcyBUZXh0dXJlMkQ7Citj
bGFzcyBUZXh0dXJlQ3ViZU1hcDsKK2NsYXNzIEZyYW1lYnVmZmVyOworY2xhc3MgUmVuZGVyYnVm
ZmVyOworY2xhc3MgUmVuZGVyYnVmZmVyU3RvcmFnZTsKK2NsYXNzIENvbG9yYnVmZmVyOworY2xh
c3MgRGVwdGhidWZmZXI7CitjbGFzcyBTdGVuY2lsYnVmZmVyOworY2xhc3MgRGVwdGhTdGVuY2ls
YnVmZmVyOworY2xhc3MgRmVuY2U7CitjbGFzcyBRdWVyeTsKK2NsYXNzIFJlc291cmNlTWFuYWdl
cjsKK2NsYXNzIEJ1ZmZlcjsKKworZW51bSBRdWVyeVR5cGUKK3sKKyAgICBRVUVSWV9BTllfU0FN
UExFU19QQVNTRUQsCisgICAgUVVFUllfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSwK
KworICAgIFFVRVJZX1RZUEVfQ09VTlQKK307CisKKy8vIEhlbHBlciBzdHJ1Y3R1cmUgZGVzY3Jp
YmluZyBhIHNpbmdsZSB2ZXJ0ZXggYXR0cmlidXRlCitjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGUKK3sK
KyAgcHVibGljOgorICAgIFZlcnRleEF0dHJpYnV0ZSgpIDogbVR5cGUoR0xfRkxPQVQpLCBtU2l6
ZSgwKSwgbU5vcm1hbGl6ZWQoZmFsc2UpLCBtU3RyaWRlKDApLCBtUG9pbnRlcihOVUxMKSwgbUFy
cmF5RW5hYmxlZChmYWxzZSksIG1EaXZpc29yKDApCisgICAgeworICAgICAgICBtQ3VycmVudFZh
bHVlWzBdID0gMC4wZjsKKyAgICAgICAgbUN1cnJlbnRWYWx1ZVsxXSA9IDAuMGY7CisgICAgICAg
IG1DdXJyZW50VmFsdWVbMl0gPSAwLjBmOworICAgICAgICBtQ3VycmVudFZhbHVlWzNdID0gMS4w
ZjsKKyAgICB9CisKKyAgICBpbnQgdHlwZVNpemUoKSBjb25zdAorICAgIHsKKyAgICAgICAgc3dp
dGNoIChtVHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfQllURTogICAgICAgICAg
IHJldHVybiBtU2l6ZSAqIHNpemVvZihHTGJ5dGUpOworICAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfQllURTogIHJldHVybiBtU2l6ZSAqIHNpemVvZihHTHVieXRlKTsKKyAgICAgICAgICBjYXNl
IEdMX1NIT1JUOiAgICAgICAgICByZXR1cm4gbVNpemUgKiBzaXplb2YoR0xzaG9ydCk7CisgICAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDogcmV0dXJuIG1TaXplICogc2l6ZW9mKEdMdXNo
b3J0KTsKKyAgICAgICAgICBjYXNlIEdMX0ZJWEVEOiAgICAgICAgICByZXR1cm4gbVNpemUgKiBz
aXplb2YoR0xmaXhlZCk7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVDogICAgICAgICAgcmV0dXJu
IG1TaXplICogc2l6ZW9mKEdMZmxvYXQpOworICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxF
KCk7IHJldHVybiBtU2l6ZSAqIHNpemVvZihHTGZsb2F0KTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIEdMc2l6ZWkgc3RyaWRlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtU3RyaWRl
ID8gbVN0cmlkZSA6IHR5cGVTaXplKCk7CisgICAgfQorCisgICAgLy8gRnJvbSBnbFZlcnRleEF0
dHJpYlBvaW50ZXIKKyAgICBHTGVudW0gbVR5cGU7CisgICAgR0xpbnQgbVNpemU7CisgICAgYm9v
bCBtTm9ybWFsaXplZDsKKyAgICBHTHNpemVpIG1TdHJpZGU7ICAgLy8gMCBtZWFucyBuYXR1cmFs
IHN0cmlkZQorCisgICAgdW5pb24KKyAgICB7CisgICAgICAgIGNvbnN0IHZvaWQgKm1Qb2ludGVy
OworICAgICAgICBpbnRwdHJfdCBtT2Zmc2V0OworICAgIH07CisKKyAgICBCaW5kaW5nUG9pbnRl
cjxCdWZmZXI+IG1Cb3VuZEJ1ZmZlcjsgICAvLyBDYXB0dXJlZCB3aGVuIGdsVmVydGV4QXR0cmli
UG9pbnRlciBpcyBjYWxsZWQuCisKKyAgICBib29sIG1BcnJheUVuYWJsZWQ7ICAgLy8gRnJvbSBn
bEVuYWJsZS9EaXNhYmxlVmVydGV4QXR0cmliQXJyYXkKKyAgICBmbG9hdCBtQ3VycmVudFZhbHVl
WzRdOyAgIC8vIEZyb20gZ2xWZXJ0ZXhBdHRyaWIKKyAgICB1bnNpZ25lZCBpbnQgbURpdmlzb3I7
Cit9OworCisvLyBIZWxwZXIgc3RydWN0dXJlIHRvIHN0b3JlIGFsbCByYXcgc3RhdGUKK3N0cnVj
dCBTdGF0ZQoreworICAgIENvbG9yIGNvbG9yQ2xlYXJWYWx1ZTsKKyAgICBHTGNsYW1wZiBkZXB0
aENsZWFyVmFsdWU7CisgICAgaW50IHN0ZW5jaWxDbGVhclZhbHVlOworCisgICAgUmFzdGVyaXpl
clN0YXRlIHJhc3Rlcml6ZXI7CisgICAgYm9vbCBzY2lzc29yVGVzdDsKKyAgICBSZWN0YW5nbGUg
c2Npc3NvcjsKKworICAgIEJsZW5kU3RhdGUgYmxlbmQ7CisgICAgQ29sb3IgYmxlbmRDb2xvcjsK
KyAgICBib29sIHNhbXBsZUNvdmVyYWdlOworICAgIEdMY2xhbXBmIHNhbXBsZUNvdmVyYWdlVmFs
dWU7CisgICAgYm9vbCBzYW1wbGVDb3ZlcmFnZUludmVydDsKKworICAgIERlcHRoU3RlbmNpbFN0
YXRlIGRlcHRoU3RlbmNpbDsKKyAgICBHTGludCBzdGVuY2lsUmVmOworICAgIEdMaW50IHN0ZW5j
aWxCYWNrUmVmOworCisgICAgR0xmbG9hdCBsaW5lV2lkdGg7CisKKyAgICBHTGVudW0gZ2VuZXJh
dGVNaXBtYXBIaW50OworICAgIEdMZW51bSBmcmFnbWVudFNoYWRlckRlcml2YXRpdmVIaW50Owor
CisgICAgUmVjdGFuZ2xlIHZpZXdwb3J0OworICAgIGZsb2F0IHpOZWFyOworICAgIGZsb2F0IHpG
YXI7CisKKyAgICB1bnNpZ25lZCBpbnQgYWN0aXZlU2FtcGxlcjsgICAvLyBBY3RpdmUgdGV4dHVy
ZSB1bml0IHNlbGVjdG9yIC0gR0xfVEVYVFVSRTAKKyAgICBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+
IGFycmF5QnVmZmVyOworICAgIEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gZWxlbWVudEFycmF5QnVm
ZmVyOworICAgIEdMdWludCByZWFkRnJhbWVidWZmZXI7CisgICAgR0x1aW50IGRyYXdGcmFtZWJ1
ZmZlcjsKKyAgICBCaW5kaW5nUG9pbnRlcjxSZW5kZXJidWZmZXI+IHJlbmRlcmJ1ZmZlcjsKKyAg
ICBHTHVpbnQgY3VycmVudFByb2dyYW07CisKKyAgICBWZXJ0ZXhBdHRyaWJ1dGUgdmVydGV4QXR0
cmlidXRlW01BWF9WRVJURVhfQVRUUklCU107CisgICAgQmluZGluZ1BvaW50ZXI8VGV4dHVyZT4g
c2FtcGxlclRleHR1cmVbVEVYVFVSRV9UWVBFX0NPVU5UXVtJTVBMRU1FTlRBVElPTl9NQVhfQ09N
QklORURfVEVYVFVSRV9JTUFHRV9VTklUU107CisgICAgQmluZGluZ1BvaW50ZXI8UXVlcnk+IGFj
dGl2ZVF1ZXJ5W1FVRVJZX1RZUEVfQ09VTlRdOworCisgICAgR0xpbnQgdW5wYWNrQWxpZ25tZW50
OworICAgIEdMaW50IHBhY2tBbGlnbm1lbnQ7CisgICAgYm9vbCBwYWNrUmV2ZXJzZVJvd09yZGVy
OworfTsKKworY2xhc3MgQ29udGV4dAoreworICBwdWJsaWM6CisgICAgQ29udGV4dChjb25zdCBn
bDo6Q29udGV4dCAqc2hhcmVDb250ZXh0LCByeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBib29sIG5v
dGlmeVJlc2V0cywgYm9vbCByb2J1c3RBY2Nlc3MpOworCisgICAgfkNvbnRleHQoKTsKKworICAg
IHZvaWQgbWFrZUN1cnJlbnQoZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKKworICAgIHZpcnR1YWwg
dm9pZCBtYXJrQ29udGV4dExvc3QoKTsKKyAgICBib29sIGlzQ29udGV4dExvc3QoKTsKKworICAg
IC8vIFN0YXRlIG1hbmlwdWxhdGlvbgorICAgIHZvaWQgc2V0Q2xlYXJDb2xvcihmbG9hdCByZWQs
IGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSk7CisKKyAgICB2b2lkIHNldENs
ZWFyRGVwdGgoZmxvYXQgZGVwdGgpOworCisgICAgdm9pZCBzZXRDbGVhclN0ZW5jaWwoaW50IHN0
ZW5jaWwpOworCisgICAgdm9pZCBzZXRDdWxsRmFjZShib29sIGVuYWJsZWQpOworICAgIGJvb2wg
aXNDdWxsRmFjZUVuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0Q3VsbE1vZGUoR0xlbnVt
IG1vZGUpOworCisgICAgdm9pZCBzZXRGcm9udEZhY2UoR0xlbnVtIGZyb250KTsKKworICAgIHZv
aWQgc2V0RGVwdGhUZXN0KGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCBpc0RlcHRoVGVzdEVuYWJs
ZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0RGVwdGhGdW5jKEdMZW51bSBkZXB0aEZ1bmMpOwor
CisgICAgdm9pZCBzZXREZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKTsKKyAgICAK
KyAgICB2b2lkIHNldEJsZW5kKGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCBpc0JsZW5kRW5hYmxl
ZCgpIGNvbnN0OworCisgICAgdm9pZCBzZXRCbGVuZEZhY3RvcnMoR0xlbnVtIHNvdXJjZVJHQiwg
R0xlbnVtIGRlc3RSR0IsIEdMZW51bSBzb3VyY2VBbHBoYSwgR0xlbnVtIGRlc3RBbHBoYSk7Cisg
ICAgdm9pZCBzZXRCbGVuZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUs
IGZsb2F0IGFscGhhKTsKKyAgICB2b2lkIHNldEJsZW5kRXF1YXRpb24oR0xlbnVtIHJnYkVxdWF0
aW9uLCBHTGVudW0gYWxwaGFFcXVhdGlvbik7CisKKyAgICB2b2lkIHNldFN0ZW5jaWxUZXN0KGJv
b2wgZW5hYmxlZCk7CisgICAgYm9vbCBpc1N0ZW5jaWxUZXN0RW5hYmxlZCgpIGNvbnN0OworCisg
ICAgdm9pZCBzZXRTdGVuY2lsUGFyYW1zKEdMZW51bSBzdGVuY2lsRnVuYywgR0xpbnQgc3RlbmNp
bFJlZiwgR0x1aW50IHN0ZW5jaWxNYXNrKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxCYWNrUGFyYW1z
KEdMZW51bSBzdGVuY2lsQmFja0Z1bmMsIEdMaW50IHN0ZW5jaWxCYWNrUmVmLCBHTHVpbnQgc3Rl
bmNpbEJhY2tNYXNrKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxXcml0ZW1hc2soR0x1aW50IHN0ZW5j
aWxXcml0ZW1hc2spOworICAgIHZvaWQgc2V0U3RlbmNpbEJhY2tXcml0ZW1hc2soR0x1aW50IHN0
ZW5jaWxCYWNrV3JpdGVtYXNrKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxPcGVyYXRpb25zKEdMZW51
bSBzdGVuY2lsRmFpbCwgR0xlbnVtIHN0ZW5jaWxQYXNzRGVwdGhGYWlsLCBHTGVudW0gc3RlbmNp
bFBhc3NEZXB0aFBhc3MpOworICAgIHZvaWQgc2V0U3RlbmNpbEJhY2tPcGVyYXRpb25zKEdMZW51
bSBzdGVuY2lsQmFja0ZhaWwsIEdMZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwsIEdMZW51
bSBzdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MpOworCisgICAgdm9pZCBzZXRQb2x5Z29uT2Zmc2V0
RmlsbChib29sIGVuYWJsZWQpOworICAgIGJvb2wgaXNQb2x5Z29uT2Zmc2V0RmlsbEVuYWJsZWQo
KSBjb25zdDsKKworICAgIHZvaWQgc2V0UG9seWdvbk9mZnNldFBhcmFtcyhHTGZsb2F0IGZhY3Rv
ciwgR0xmbG9hdCB1bml0cyk7CisKKyAgICB2b2lkIHNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZShi
b29sIGVuYWJsZWQpOworICAgIGJvb2wgaXNTYW1wbGVBbHBoYVRvQ292ZXJhZ2VFbmFibGVkKCkg
Y29uc3Q7CisKKyAgICB2b2lkIHNldFNhbXBsZUNvdmVyYWdlKGJvb2wgZW5hYmxlZCk7CisgICAg
Ym9vbCBpc1NhbXBsZUNvdmVyYWdlRW5hYmxlZCgpIGNvbnN0OworCisgICAgdm9pZCBzZXRTYW1w
bGVDb3ZlcmFnZVBhcmFtcyhHTGNsYW1wZiB2YWx1ZSwgYm9vbCBpbnZlcnQpOworCisgICAgdm9p
ZCBzZXRTY2lzc29yVGVzdChib29sIGVuYWJsZWQpOworICAgIGJvb2wgaXNTY2lzc29yVGVzdEVu
YWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0RGl0aGVyKGJvb2wgZW5hYmxlZCk7CisgICAg
Ym9vbCBpc0RpdGhlckVuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0TGluZVdpZHRoKEdM
ZmxvYXQgd2lkdGgpOworCisgICAgdm9pZCBzZXRHZW5lcmF0ZU1pcG1hcEhpbnQoR0xlbnVtIGhp
bnQpOworICAgIHZvaWQgc2V0RnJhZ21lbnRTaGFkZXJEZXJpdmF0aXZlSGludChHTGVudW0gaGlu
dCk7CisKKyAgICB2b2lkIHNldFZpZXdwb3J0UGFyYW1zKEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKworICAgIHZvaWQgc2V0U2Npc3NvclBhcmFtcyhH
TGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisKKyAgICB2
b2lkIHNldENvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFs
cGhhKTsKKyAgICB2b2lkIHNldERlcHRoTWFzayhib29sIG1hc2spOworCisgICAgdm9pZCBzZXRB
Y3RpdmVTYW1wbGVyKHVuc2lnbmVkIGludCBhY3RpdmUpOworCisgICAgR0x1aW50IGdldFJlYWRG
cmFtZWJ1ZmZlckhhbmRsZSgpIGNvbnN0OworICAgIEdMdWludCBnZXREcmF3RnJhbWVidWZmZXJI
YW5kbGUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0UmVuZGVyYnVmZmVySGFuZGxlKCkgY29uc3Q7
CisKKyAgICBHTHVpbnQgZ2V0QXJyYXlCdWZmZXJIYW5kbGUoKSBjb25zdDsKKworICAgIEdMdWlu
dCBnZXRBY3RpdmVRdWVyeShHTGVudW0gdGFyZ2V0KSBjb25zdDsKKworICAgIHZvaWQgc2V0RW5h
YmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgaW50IGF0dHJpYk51bSwgYm9vbCBlbmFibGVk
KTsKKyAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmdldFZlcnRleEF0dHJpYlN0YXRlKHVuc2ln
bmVkIGludCBhdHRyaWJOdW0pOworICAgIHZvaWQgc2V0VmVydGV4QXR0cmliU3RhdGUodW5zaWdu
ZWQgaW50IGF0dHJpYk51bSwgQnVmZmVyICpib3VuZEJ1ZmZlciwgR0xpbnQgc2l6ZSwgR0xlbnVt
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG5vcm1hbGl6ZWQsIEdM
c2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkICpwb2ludGVyKTsKKyAgICBjb25zdCB2b2lkICpnZXRW
ZXJ0ZXhBdHRyaWJQb2ludGVyKHVuc2lnbmVkIGludCBhdHRyaWJOdW0pIGNvbnN0OworCisgICAg
dm9pZCBzZXRVbnBhY2tBbGlnbm1lbnQoR0xpbnQgYWxpZ25tZW50KTsKKyAgICBHTGludCBnZXRV
bnBhY2tBbGlnbm1lbnQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0UGFja0FsaWdubWVudChHTGlu
dCBhbGlnbm1lbnQpOworICAgIEdMaW50IGdldFBhY2tBbGlnbm1lbnQoKSBjb25zdDsKKworICAg
IHZvaWQgc2V0UGFja1JldmVyc2VSb3dPcmRlcihib29sIHJldmVyc2VSb3dPcmRlcik7CisgICAg
Ym9vbCBnZXRQYWNrUmV2ZXJzZVJvd09yZGVyKCkgY29uc3Q7CisKKyAgICAvLyBUaGVzZSBjcmVh
dGUgIGFuZCBkZXN0cm95IG1ldGhvZHMgYXJlIG1lcmVseSBwYXNzLXRocm91Z2hzIHRvIAorICAg
IC8vIFJlc291cmNlTWFuYWdlciwgd2hpY2ggb3ducyB0aGVzZSBvYmplY3QgdHlwZXMKKyAgICBH
THVpbnQgY3JlYXRlQnVmZmVyKCk7CisgICAgR0x1aW50IGNyZWF0ZVNoYWRlcihHTGVudW0gdHlw
ZSk7CisgICAgR0x1aW50IGNyZWF0ZVByb2dyYW0oKTsKKyAgICBHTHVpbnQgY3JlYXRlVGV4dHVy
ZSgpOworICAgIEdMdWludCBjcmVhdGVSZW5kZXJidWZmZXIoKTsKKworICAgIHZvaWQgZGVsZXRl
QnVmZmVyKEdMdWludCBidWZmZXIpOworICAgIHZvaWQgZGVsZXRlU2hhZGVyKEdMdWludCBzaGFk
ZXIpOworICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSk7CisgICAgdm9pZCBk
ZWxldGVUZXh0dXJlKEdMdWludCB0ZXh0dXJlKTsKKyAgICB2b2lkIGRlbGV0ZVJlbmRlcmJ1ZmZl
cihHTHVpbnQgcmVuZGVyYnVmZmVyKTsKKworICAgIC8vIEZyYW1lYnVmZmVycyBhcmUgb3duZWQg
YnkgdGhlIENvbnRleHQsIHNvIHRoZXNlIG1ldGhvZHMgZG8gbm90IHBhc3MgdGhyb3VnaAorICAg
IEdMdWludCBjcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIo
R0x1aW50IGZyYW1lYnVmZmVyKTsKKworICAgIC8vIEZlbmNlcyBhcmUgb3duZWQgYnkgdGhlIENv
bnRleHQuCisgICAgR0x1aW50IGNyZWF0ZUZlbmNlKCk7CisgICAgdm9pZCBkZWxldGVGZW5jZShH
THVpbnQgZmVuY2UpOworICAgIAorICAgIC8vIFF1ZXJpZXMgYXJlIG93bmVkIGJ5IHRoZSBDb250
ZXh0OworICAgIEdMdWludCBjcmVhdGVRdWVyeSgpOworICAgIHZvaWQgZGVsZXRlUXVlcnkoR0x1
aW50IHF1ZXJ5KTsKKworICAgIHZvaWQgYmluZEFycmF5QnVmZmVyKEdMdWludCBidWZmZXIpOwor
ICAgIHZvaWQgYmluZEVsZW1lbnRBcnJheUJ1ZmZlcihHTHVpbnQgYnVmZmVyKTsKKyAgICB2b2lk
IGJpbmRUZXh0dXJlMkQoR0x1aW50IHRleHR1cmUpOworICAgIHZvaWQgYmluZFRleHR1cmVDdWJl
TWFwKEdMdWludCB0ZXh0dXJlKTsKKyAgICB2b2lkIGJpbmRSZWFkRnJhbWVidWZmZXIoR0x1aW50
IGZyYW1lYnVmZmVyKTsKKyAgICB2b2lkIGJpbmREcmF3RnJhbWVidWZmZXIoR0x1aW50IGZyYW1l
YnVmZmVyKTsKKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcik7
CisgICAgdm9pZCB1c2VQcm9ncmFtKEdMdWludCBwcm9ncmFtKTsKKyAgICB2b2lkIGxpbmtQcm9n
cmFtKEdMdWludCBwcm9ncmFtKTsKKyAgICB2b2lkIHNldFByb2dyYW1CaW5hcnkoR0x1aW50IHBy
b2dyYW0sIGNvbnN0IHZvaWQgKmJpbmFyeSwgR0xpbnQgbGVuZ3RoKTsKKworICAgIHZvaWQgYmVn
aW5RdWVyeShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcXVlcnkpOworICAgIHZvaWQgZW5kUXVlcnko
R0xlbnVtIHRhcmdldCk7CisKKyAgICB2b2lkIHNldEZyYW1lYnVmZmVyWmVybyhGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIpOworCisgICAgdm9pZCBzZXRSZW5kZXJidWZmZXJTdG9yYWdlKEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkg
c2FtcGxlcyk7CisKKyAgICB2b2lkIHNldFZlcnRleEF0dHJpYihHTHVpbnQgaW5kZXgsIGNvbnN0
IEdMZmxvYXQgKnZhbHVlcyk7CisgICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKEdMdWlu
dCBpbmRleCwgR0x1aW50IGRpdmlzb3IpOworCisgICAgQnVmZmVyICpnZXRCdWZmZXIoR0x1aW50
IGhhbmRsZSk7CisgICAgRmVuY2UgKmdldEZlbmNlKEdMdWludCBoYW5kbGUpOworICAgIFNoYWRl
ciAqZ2V0U2hhZGVyKEdMdWludCBoYW5kbGUpOworICAgIFByb2dyYW0gKmdldFByb2dyYW0oR0x1
aW50IGhhbmRsZSk7CisgICAgVGV4dHVyZSAqZ2V0VGV4dHVyZShHTHVpbnQgaGFuZGxlKTsKKyAg
ICBGcmFtZWJ1ZmZlciAqZ2V0RnJhbWVidWZmZXIoR0x1aW50IGhhbmRsZSk7CisgICAgUmVuZGVy
YnVmZmVyICpnZXRSZW5kZXJidWZmZXIoR0x1aW50IGhhbmRsZSk7CisgICAgUXVlcnkgKmdldFF1
ZXJ5KEdMdWludCBoYW5kbGUsIGJvb2wgY3JlYXRlLCBHTGVudW0gdHlwZSk7CisKKyAgICBCdWZm
ZXIgKmdldEFycmF5QnVmZmVyKCk7CisgICAgQnVmZmVyICpnZXRFbGVtZW50QXJyYXlCdWZmZXIo
KTsKKyAgICBQcm9ncmFtQmluYXJ5ICpnZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpOworICAgIFRl
eHR1cmUyRCAqZ2V0VGV4dHVyZTJEKCk7CisgICAgVGV4dHVyZUN1YmVNYXAgKmdldFRleHR1cmVD
dWJlTWFwKCk7CisgICAgVGV4dHVyZSAqZ2V0U2FtcGxlclRleHR1cmUodW5zaWduZWQgaW50IHNh
bXBsZXIsIFRleHR1cmVUeXBlIHR5cGUpOworICAgIEZyYW1lYnVmZmVyICpnZXRSZWFkRnJhbWVi
dWZmZXIoKTsKKyAgICBGcmFtZWJ1ZmZlciAqZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisKKyAgICBi
b29sIGdldEZsb2F0dihHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CisgICAgYm9vbCBn
ZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworICAgIGJvb2wgZ2V0Qm9v
bGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcyk7CisKKyAgICBib29sIGdldFF1
ZXJ5UGFyYW1ldGVySW5mbyhHTGVudW0gcG5hbWUsIEdMZW51bSAqdHlwZSwgdW5zaWduZWQgaW50
ICpudW1QYXJhbXMpOworCisgICAgdm9pZCByZWFkUGl4ZWxzKEdMaW50IHgsIEdMaW50IHksIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
R0xzaXplaSAqYnVmU2l6ZSwgdm9pZCogcGl4ZWxzKTsKKyAgICB2b2lkIGNsZWFyKEdMYml0Zmll
bGQgbWFzayk7CisgICAgdm9pZCBkcmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwg
R0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworICAgIHZvaWQgZHJhd0VsZW1lbnRz
KEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpp
bmRpY2VzLCBHTHNpemVpIGluc3RhbmNlcyk7CisgICAgdm9pZCBzeW5jKGJvb2wgYmxvY2spOyAg
IC8vIGZsdXNoL2ZpbmlzaAorCisgICAgdm9pZCByZWNvcmRJbnZhbGlkRW51bSgpOworICAgIHZv
aWQgcmVjb3JkSW52YWxpZFZhbHVlKCk7CisgICAgdm9pZCByZWNvcmRJbnZhbGlkT3BlcmF0aW9u
KCk7CisgICAgdm9pZCByZWNvcmRPdXRPZk1lbW9yeSgpOworICAgIHZvaWQgcmVjb3JkSW52YWxp
ZEZyYW1lYnVmZmVyT3BlcmF0aW9uKCk7CisKKyAgICBHTGVudW0gZ2V0RXJyb3IoKTsKKyAgICBH
TGVudW0gZ2V0UmVzZXRTdGF0dXMoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZXNldE5vdGlmaWNh
dGlvbkVuYWJsZWQoKTsKKworICAgIGludCBnZXRNYWpvclNoYWRlck1vZGVsKCkgY29uc3Q7Cisg
ICAgZmxvYXQgZ2V0TWF4aW11bVBvaW50U2l6ZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGludCBn
ZXRNYXhpbXVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0OworICAgIGludCBnZXRN
YXhpbXVtUmVuZGVyYnVmZmVyRGltZW5zaW9uKCkgY29uc3Q7CisgICAgaW50IGdldE1heGltdW1U
ZXh0dXJlRGltZW5zaW9uKCkgY29uc3Q7CisgICAgaW50IGdldE1heGltdW1DdWJlVGV4dHVyZURp
bWVuc2lvbigpIGNvbnN0OworICAgIGludCBnZXRNYXhpbXVtVGV4dHVyZUxldmVsKCkgY29uc3Q7
CisgICAgdW5zaWduZWQgaW50IGdldE1heGltdW1SZW5kZXJUYXJnZXRzKCkgY29uc3Q7CisgICAg
R0xzaXplaSBnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciAq
Z2V0RXh0ZW5zaW9uU3RyaW5nKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciAqZ2V0UmVuZGVyZXJT
dHJpbmcoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzRXZlbnRRdWVyaWVzKCkgY29uc3Q7Cisg
ICAgYm9vbCBzdXBwb3J0c09jY2x1c2lvblF1ZXJpZXMoKSBjb25zdDsKKyAgICBib29sIHN1cHBv
cnRzQkdSQVRleHR1cmVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0RYVDFUZXh0dXJlcygp
IGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNEWFQzVGV4dHVyZXMoKSBjb25zdDsKKyAgICBib29s
IHN1cHBvcnRzRFhUNVRleHR1cmVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0Zsb2F0MzJU
ZXh0dXJlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNGbG9hdDMyTGluZWFyRmlsdGVyKCkg
Y29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0Zsb2F0MzJSZW5kZXJhYmxlVGV4dHVyZXMoKSBjb25z
dDsKKyAgICBib29sIHN1cHBvcnRzRmxvYXQxNlRleHR1cmVzKCkgY29uc3Q7CisgICAgYm9vbCBz
dXBwb3J0c0Zsb2F0MTZMaW5lYXJGaWx0ZXIoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzRmxv
YXQxNlJlbmRlcmFibGVUZXh0dXJlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNMdW1pbmFu
Y2VUZXh0dXJlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNMdW1pbmFuY2VBbHBoYVRleHR1
cmVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoVGV4dHVyZXMoKSBjb25zdDsKKyAg
ICBib29sIHN1cHBvcnRzMzJiaXRJbmRpY2VzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c05v
blBvd2VyMlRleHR1cmUoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzSW5zdGFuY2luZygpIGNv
bnN0OworICAgIGJvb2wgc3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9weSgpIGNvbnN0Owor
CisgICAgYm9vbCBnZXRDdXJyZW50UmVhZEZvcm1hdFR5cGUoR0xlbnVtICpmb3JtYXQsIEdMZW51
bSAqdHlwZSk7CisKKyAgICBmbG9hdCBnZXRUZXh0dXJlTWF4QW5pc290cm9weSgpIGNvbnN0Owor
CisgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoR0xpbnQgc3JjWDAsIEdMaW50IHNyY1kwLCBHTGlu
dCBzcmNYMSwgR0xpbnQgc3JjWTEsIAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRz
dFgwLCBHTGludCBkc3RZMCwgR0xpbnQgZHN0WDEsIEdMaW50IGRzdFkxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzayk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oQ29udGV4dCk7CisKKyAgICBib29sIGFwcGx5UmVuZGVyVGFyZ2V0
KEdMZW51bSBkcmF3TW9kZSwgYm9vbCBpZ25vcmVWaWV3cG9ydCk7CisgICAgdm9pZCBhcHBseVN0
YXRlKEdMZW51bSBkcmF3TW9kZSk7CisgICAgdm9pZCBhcHBseVNoYWRlcnMoKTsKKyAgICB2b2lk
IGFwcGx5VGV4dHVyZXMoKTsKKyAgICB2b2lkIGFwcGx5VGV4dHVyZXMoU2FtcGxlclR5cGUgdHlw
ZSk7CisKKyAgICB2b2lkIGRldGFjaEJ1ZmZlcihHTHVpbnQgYnVmZmVyKTsKKyAgICB2b2lkIGRl
dGFjaFRleHR1cmUoR0x1aW50IHRleHR1cmUpOworICAgIHZvaWQgZGV0YWNoRnJhbWVidWZmZXIo
R0x1aW50IGZyYW1lYnVmZmVyKTsKKyAgICB2b2lkIGRldGFjaFJlbmRlcmJ1ZmZlcihHTHVpbnQg
cmVuZGVyYnVmZmVyKTsKKworICAgIFRleHR1cmUgKmdldEluY29tcGxldGVUZXh0dXJlKFRleHR1
cmVUeXBlIHR5cGUpOworCisgICAgYm9vbCBza2lwRHJhdyhHTGVudW0gZHJhd01vZGUpOworCisg
ICAgdm9pZCBpbml0RXh0ZW5zaW9uU3RyaW5nKCk7CisgICAgdm9pZCBpbml0UmVuZGVyZXJTdHJp
bmcoKTsKKworICAgIHJ4OjpSZW5kZXJlciAqY29uc3QgbVJlbmRlcmVyOworCisgICAgU3RhdGUg
bVN0YXRlOworCisgICAgQmluZGluZ1BvaW50ZXI8VGV4dHVyZTJEPiBtVGV4dHVyZTJEWmVybzsK
KyAgICBCaW5kaW5nUG9pbnRlcjxUZXh0dXJlQ3ViZU1hcD4gbVRleHR1cmVDdWJlTWFwWmVybzsK
KworI2lmbmRlZiBIQVNIX01BUAorIyBpZmRlZiBfTVNDX1ZFUgorIyAgZGVmaW5lIEhBU0hfTUFQ
IHN0ZGV4dDo6aGFzaF9tYXAKKyMgZWxzZQorIyAgZGVmaW5lIEhBU0hfTUFQIHN0ZDo6dW5vcmRl
cmVkX21hcAorIyBlbmRpZgorI2VuZGlmCisKKyAgICB0eXBlZGVmIEhBU0hfTUFQPEdMdWludCwg
RnJhbWVidWZmZXIqPiBGcmFtZWJ1ZmZlck1hcDsKKyAgICBGcmFtZWJ1ZmZlck1hcCBtRnJhbWVi
dWZmZXJNYXA7CisgICAgSGFuZGxlQWxsb2NhdG9yIG1GcmFtZWJ1ZmZlckhhbmRsZUFsbG9jYXRv
cjsKKworICAgIHR5cGVkZWYgSEFTSF9NQVA8R0x1aW50LCBGZW5jZSo+IEZlbmNlTWFwOworICAg
IEZlbmNlTWFwIG1GZW5jZU1hcDsKKyAgICBIYW5kbGVBbGxvY2F0b3IgbUZlbmNlSGFuZGxlQWxs
b2NhdG9yOworCisgICAgdHlwZWRlZiBIQVNIX01BUDxHTHVpbnQsIFF1ZXJ5Kj4gUXVlcnlNYXA7
CisgICAgUXVlcnlNYXAgbVF1ZXJ5TWFwOworICAgIEhhbmRsZUFsbG9jYXRvciBtUXVlcnlIYW5k
bGVBbGxvY2F0b3I7CisKKyAgICBjb25zdCBjaGFyICptRXh0ZW5zaW9uU3RyaW5nOworICAgIGNv
bnN0IGNoYXIgKm1SZW5kZXJlclN0cmluZzsKKyAgICAKKyAgICBCaW5kaW5nUG9pbnRlcjxUZXh0
dXJlPiBtSW5jb21wbGV0ZVRleHR1cmVzW1RFWFRVUkVfVFlQRV9DT1VOVF07CisKKyAgICAvLyBS
ZWNvcmRlZCBlcnJvcnMKKyAgICBib29sIG1JbnZhbGlkRW51bTsKKyAgICBib29sIG1JbnZhbGlk
VmFsdWU7CisgICAgYm9vbCBtSW52YWxpZE9wZXJhdGlvbjsKKyAgICBib29sIG1PdXRPZk1lbW9y
eTsKKyAgICBib29sIG1JbnZhbGlkRnJhbWVidWZmZXJPcGVyYXRpb247CisKKyAgICAvLyBDdXJy
ZW50L2xvc3QgY29udGV4dCBmbGFncworICAgIGJvb2wgbUhhc0JlZW5DdXJyZW50OworICAgIGJv
b2wgbUNvbnRleHRMb3N0OworICAgIEdMZW51bSBtUmVzZXRTdGF0dXM7CisgICAgR0xlbnVtIG1S
ZXNldFN0cmF0ZWd5OworICAgIGJvb2wgbVJvYnVzdEFjY2VzczsKKworICAgIEJpbmRpbmdQb2lu
dGVyPFByb2dyYW1CaW5hcnk+IG1DdXJyZW50UHJvZ3JhbUJpbmFyeTsKKyAgICBGcmFtZWJ1ZmZl
ciAqbUJvdW5kRHJhd0ZyYW1lYnVmZmVyOworCisgICAgaW50IG1NYWpvclNoYWRlck1vZGVsOwor
ICAgIGZsb2F0IG1NYXhpbXVtUG9pbnRTaXplOworICAgIGJvb2wgbVN1cHBvcnRzVmVydGV4VGV4
dHVyZTsKKyAgICBib29sIG1TdXBwb3J0c05vblBvd2VyMlRleHR1cmU7CisgICAgYm9vbCBtU3Vw
cG9ydHNJbnN0YW5jaW5nOworICAgIGludCAgbU1heFZpZXdwb3J0RGltZW5zaW9uOworICAgIGlu
dCAgbU1heFJlbmRlcmJ1ZmZlckRpbWVuc2lvbjsKKyAgICBpbnQgIG1NYXhUZXh0dXJlRGltZW5z
aW9uOworICAgIGludCAgbU1heEN1YmVUZXh0dXJlRGltZW5zaW9uOworICAgIGludCAgbU1heFRl
eHR1cmVMZXZlbDsKKyAgICBmbG9hdCBtTWF4VGV4dHVyZUFuaXNvdHJvcHk7CisgICAgYm9vbCBt
U3VwcG9ydHNFdmVudFF1ZXJpZXM7CisgICAgYm9vbCBtU3VwcG9ydHNPY2NsdXNpb25RdWVyaWVz
OworICAgIGJvb2wgbVN1cHBvcnRzQkdSQVRleHR1cmVzOworICAgIGJvb2wgbVN1cHBvcnRzRFhU
MVRleHR1cmVzOworICAgIGJvb2wgbVN1cHBvcnRzRFhUM1RleHR1cmVzOworICAgIGJvb2wgbVN1
cHBvcnRzRFhUNVRleHR1cmVzOworICAgIGJvb2wgbVN1cHBvcnRzRmxvYXQzMlRleHR1cmVzOwor
ICAgIGJvb2wgbVN1cHBvcnRzRmxvYXQzMkxpbmVhckZpbHRlcjsKKyAgICBib29sIG1TdXBwb3J0
c0Zsb2F0MzJSZW5kZXJhYmxlVGV4dHVyZXM7CisgICAgYm9vbCBtU3VwcG9ydHNGbG9hdDE2VGV4
dHVyZXM7CisgICAgYm9vbCBtU3VwcG9ydHNGbG9hdDE2TGluZWFyRmlsdGVyOworICAgIGJvb2wg
bVN1cHBvcnRzRmxvYXQxNlJlbmRlcmFibGVUZXh0dXJlczsKKyAgICBib29sIG1TdXBwb3J0c0x1
bWluYW5jZVRleHR1cmVzOworICAgIGJvb2wgbVN1cHBvcnRzTHVtaW5hbmNlQWxwaGFUZXh0dXJl
czsKKyAgICBib29sIG1TdXBwb3J0c0RlcHRoVGV4dHVyZXM7CisgICAgYm9vbCBtU3VwcG9ydHMz
MmJpdEluZGljZXM7CisgICAgYm9vbCBtU3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9weTsK
KyAgICBpbnQgbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0czsKKworICAgIFJlc291cmNlTWFu
YWdlciAqbVJlc291cmNlTWFuYWdlcjsKK307Cit9CisKKyNlbmRpZiAgIC8vIElOQ0xVREVfQ09O
VEVYVF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GZW5j
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9GZW5jZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL0ZlbmNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorI2luY2x1
ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBGZW5jZS5jcHA6IElt
cGxlbWVudHMgdGhlIGdsOjpGZW5jZSBjbGFzcywgd2hpY2ggc3VwcG9ydHMgdGhlIEdMX05WX2Zl
bmNlIGV4dGVuc2lvbi4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9GZW5jZS5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZUltcGwuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyZXIuaCIKKworbmFtZXNwYWNlIGdsCit7CisKK0ZlbmNlOjpGZW5jZShyeDo6
UmVuZGVyZXIgKnJlbmRlcmVyKQoreworICAgIG1GZW5jZSA9IHJlbmRlcmVyLT5jcmVhdGVGZW5j
ZSgpOworfQorCitGZW5jZTo6fkZlbmNlKCkKK3sKKyAgICBkZWxldGUgbUZlbmNlOworfQorCitH
TGJvb2xlYW4gRmVuY2U6OmlzRmVuY2UoKQoreworICAgIHJldHVybiBtRmVuY2UtPmlzRmVuY2Uo
KTsKK30KKwordm9pZCBGZW5jZTo6c2V0RmVuY2UoR0xlbnVtIGNvbmRpdGlvbikKK3sKKyAgICBt
RmVuY2UtPnNldEZlbmNlKGNvbmRpdGlvbik7Cit9CisKK0dMYm9vbGVhbiBGZW5jZTo6dGVzdEZl
bmNlKCkKK3sKKyAgICByZXR1cm4gbUZlbmNlLT50ZXN0RmVuY2UoKTsKK30KKwordm9pZCBGZW5j
ZTo6ZmluaXNoRmVuY2UoKQoreworICAgIG1GZW5jZS0+ZmluaXNoRmVuY2UoKTsKK30KKwordm9p
ZCBGZW5jZTo6Z2V0RmVuY2VpdihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAg
bUZlbmNlLT5nZXRGZW5jZWl2KHBuYW1lLCBwYXJhbXMpOworfQorCit9CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZlbmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GZW5jZS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GZW5jZS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBGZW5jZS5oOiBE
ZWZpbmVzIHRoZSBnbDo6RmVuY2UgY2xhc3MsIHdoaWNoIHN1cHBvcnRzIHRoZSBHTF9OVl9mZW5j
ZSBleHRlbnNpb24uCisKKyNpZm5kZWYgTElCR0xFU1YyX0ZFTkNFX0hfCisjZGVmaW5lIExJQkdM
RVNWMl9GRU5DRV9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNw
YWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKK2NsYXNzIEZlbmNlSW1wbDsKK30KKworbmFtZXNw
YWNlIGdsCit7CisKK2NsYXNzIEZlbmNlCit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBGZW5j
ZShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKTsKKyAgICB2aXJ0dWFsIH5GZW5jZSgpOworCisgICAg
R0xib29sZWFuIGlzRmVuY2UoKTsKKyAgICB2b2lkIHNldEZlbmNlKEdMZW51bSBjb25kaXRpb24p
OworICAgIEdMYm9vbGVhbiB0ZXN0RmVuY2UoKTsKKyAgICB2b2lkIGZpbmlzaEZlbmNlKCk7Cisg
ICAgdm9pZCBnZXRGZW5jZWl2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CisKKyAgcHJp
dmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oRmVuY2UpOworCisgICAgcng6OkZl
bmNlSW1wbCAqbUZlbmNlOworfTsKKworfQorCisjZW5kaWYgICAvLyBMSUJHTEVTVjJfRkVOQ0Vf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRmxvYXQxNlRv
RmxvYXQzMi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9GbG9hdDE2VG9GbG9hdDMyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRmxvYXQxNlRvRmxvYXQzMi5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjIwNCBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLgorCituYW1l
c3BhY2UgZ2wKK3sKKworY29uc3Qgc3RhdGljIHVuc2lnbmVkIGdfbWFudGlzc2FbMjA0OF0gPSB7
CisgICAgMHgwMDAwMDAwMCwKKyAgICAweDMzODAwMDAwLAorICAgIDB4MzQwMDAwMDAsCisgICAg
MHgzNDQwMDAwMCwKKyAgICAweDM0ODAwMDAwLAorICAgIDB4MzRhMDAwMDAsCisgICAgMHgzNGMw
MDAwMCwKKyAgICAweDM0ZTAwMDAwLAorICAgIDB4MzUwMDAwMDAsCisgICAgMHgzNTEwMDAwMCwK
KyAgICAweDM1MjAwMDAwLAorICAgIDB4MzUzMDAwMDAsCisgICAgMHgzNTQwMDAwMCwKKyAgICAw
eDM1NTAwMDAwLAorICAgIDB4MzU2MDAwMDAsCisgICAgMHgzNTcwMDAwMCwKKyAgICAweDM1ODAw
MDAwLAorICAgIDB4MzU4ODAwMDAsCisgICAgMHgzNTkwMDAwMCwKKyAgICAweDM1OTgwMDAwLAor
ICAgIDB4MzVhMDAwMDAsCisgICAgMHgzNWE4MDAwMCwKKyAgICAweDM1YjAwMDAwLAorICAgIDB4
MzViODAwMDAsCisgICAgMHgzNWMwMDAwMCwKKyAgICAweDM1YzgwMDAwLAorICAgIDB4MzVkMDAw
MDAsCisgICAgMHgzNWQ4MDAwMCwKKyAgICAweDM1ZTAwMDAwLAorICAgIDB4MzVlODAwMDAsCisg
ICAgMHgzNWYwMDAwMCwKKyAgICAweDM1ZjgwMDAwLAorICAgIDB4MzYwMDAwMDAsCisgICAgMHgz
NjA0MDAwMCwKKyAgICAweDM2MDgwMDAwLAorICAgIDB4MzYwYzAwMDAsCisgICAgMHgzNjEwMDAw
MCwKKyAgICAweDM2MTQwMDAwLAorICAgIDB4MzYxODAwMDAsCisgICAgMHgzNjFjMDAwMCwKKyAg
ICAweDM2MjAwMDAwLAorICAgIDB4MzYyNDAwMDAsCisgICAgMHgzNjI4MDAwMCwKKyAgICAweDM2
MmMwMDAwLAorICAgIDB4MzYzMDAwMDAsCisgICAgMHgzNjM0MDAwMCwKKyAgICAweDM2MzgwMDAw
LAorICAgIDB4MzYzYzAwMDAsCisgICAgMHgzNjQwMDAwMCwKKyAgICAweDM2NDQwMDAwLAorICAg
IDB4MzY0ODAwMDAsCisgICAgMHgzNjRjMDAwMCwKKyAgICAweDM2NTAwMDAwLAorICAgIDB4MzY1
NDAwMDAsCisgICAgMHgzNjU4MDAwMCwKKyAgICAweDM2NWMwMDAwLAorICAgIDB4MzY2MDAwMDAs
CisgICAgMHgzNjY0MDAwMCwKKyAgICAweDM2NjgwMDAwLAorICAgIDB4MzY2YzAwMDAsCisgICAg
MHgzNjcwMDAwMCwKKyAgICAweDM2NzQwMDAwLAorICAgIDB4MzY3ODAwMDAsCisgICAgMHgzNjdj
MDAwMCwKKyAgICAweDM2ODAwMDAwLAorICAgIDB4MzY4MjAwMDAsCisgICAgMHgzNjg0MDAwMCwK
KyAgICAweDM2ODYwMDAwLAorICAgIDB4MzY4ODAwMDAsCisgICAgMHgzNjhhMDAwMCwKKyAgICAw
eDM2OGMwMDAwLAorICAgIDB4MzY4ZTAwMDAsCisgICAgMHgzNjkwMDAwMCwKKyAgICAweDM2OTIw
MDAwLAorICAgIDB4MzY5NDAwMDAsCisgICAgMHgzNjk2MDAwMCwKKyAgICAweDM2OTgwMDAwLAor
ICAgIDB4MzY5YTAwMDAsCisgICAgMHgzNjljMDAwMCwKKyAgICAweDM2OWUwMDAwLAorICAgIDB4
MzZhMDAwMDAsCisgICAgMHgzNmEyMDAwMCwKKyAgICAweDM2YTQwMDAwLAorICAgIDB4MzZhNjAw
MDAsCisgICAgMHgzNmE4MDAwMCwKKyAgICAweDM2YWEwMDAwLAorICAgIDB4MzZhYzAwMDAsCisg
ICAgMHgzNmFlMDAwMCwKKyAgICAweDM2YjAwMDAwLAorICAgIDB4MzZiMjAwMDAsCisgICAgMHgz
NmI0MDAwMCwKKyAgICAweDM2YjYwMDAwLAorICAgIDB4MzZiODAwMDAsCisgICAgMHgzNmJhMDAw
MCwKKyAgICAweDM2YmMwMDAwLAorICAgIDB4MzZiZTAwMDAsCisgICAgMHgzNmMwMDAwMCwKKyAg
ICAweDM2YzIwMDAwLAorICAgIDB4MzZjNDAwMDAsCisgICAgMHgzNmM2MDAwMCwKKyAgICAweDM2
YzgwMDAwLAorICAgIDB4MzZjYTAwMDAsCisgICAgMHgzNmNjMDAwMCwKKyAgICAweDM2Y2UwMDAw
LAorICAgIDB4MzZkMDAwMDAsCisgICAgMHgzNmQyMDAwMCwKKyAgICAweDM2ZDQwMDAwLAorICAg
IDB4MzZkNjAwMDAsCisgICAgMHgzNmQ4MDAwMCwKKyAgICAweDM2ZGEwMDAwLAorICAgIDB4MzZk
YzAwMDAsCisgICAgMHgzNmRlMDAwMCwKKyAgICAweDM2ZTAwMDAwLAorICAgIDB4MzZlMjAwMDAs
CisgICAgMHgzNmU0MDAwMCwKKyAgICAweDM2ZTYwMDAwLAorICAgIDB4MzZlODAwMDAsCisgICAg
MHgzNmVhMDAwMCwKKyAgICAweDM2ZWMwMDAwLAorICAgIDB4MzZlZTAwMDAsCisgICAgMHgzNmYw
MDAwMCwKKyAgICAweDM2ZjIwMDAwLAorICAgIDB4MzZmNDAwMDAsCisgICAgMHgzNmY2MDAwMCwK
KyAgICAweDM2ZjgwMDAwLAorICAgIDB4MzZmYTAwMDAsCisgICAgMHgzNmZjMDAwMCwKKyAgICAw
eDM2ZmUwMDAwLAorICAgIDB4MzcwMDAwMDAsCisgICAgMHgzNzAxMDAwMCwKKyAgICAweDM3MDIw
MDAwLAorICAgIDB4MzcwMzAwMDAsCisgICAgMHgzNzA0MDAwMCwKKyAgICAweDM3MDUwMDAwLAor
ICAgIDB4MzcwNjAwMDAsCisgICAgMHgzNzA3MDAwMCwKKyAgICAweDM3MDgwMDAwLAorICAgIDB4
MzcwOTAwMDAsCisgICAgMHgzNzBhMDAwMCwKKyAgICAweDM3MGIwMDAwLAorICAgIDB4MzcwYzAw
MDAsCisgICAgMHgzNzBkMDAwMCwKKyAgICAweDM3MGUwMDAwLAorICAgIDB4MzcwZjAwMDAsCisg
ICAgMHgzNzEwMDAwMCwKKyAgICAweDM3MTEwMDAwLAorICAgIDB4MzcxMjAwMDAsCisgICAgMHgz
NzEzMDAwMCwKKyAgICAweDM3MTQwMDAwLAorICAgIDB4MzcxNTAwMDAsCisgICAgMHgzNzE2MDAw
MCwKKyAgICAweDM3MTcwMDAwLAorICAgIDB4MzcxODAwMDAsCisgICAgMHgzNzE5MDAwMCwKKyAg
ICAweDM3MWEwMDAwLAorICAgIDB4MzcxYjAwMDAsCisgICAgMHgzNzFjMDAwMCwKKyAgICAweDM3
MWQwMDAwLAorICAgIDB4MzcxZTAwMDAsCisgICAgMHgzNzFmMDAwMCwKKyAgICAweDM3MjAwMDAw
LAorICAgIDB4MzcyMTAwMDAsCisgICAgMHgzNzIyMDAwMCwKKyAgICAweDM3MjMwMDAwLAorICAg
IDB4MzcyNDAwMDAsCisgICAgMHgzNzI1MDAwMCwKKyAgICAweDM3MjYwMDAwLAorICAgIDB4Mzcy
NzAwMDAsCisgICAgMHgzNzI4MDAwMCwKKyAgICAweDM3MjkwMDAwLAorICAgIDB4MzcyYTAwMDAs
CisgICAgMHgzNzJiMDAwMCwKKyAgICAweDM3MmMwMDAwLAorICAgIDB4MzcyZDAwMDAsCisgICAg
MHgzNzJlMDAwMCwKKyAgICAweDM3MmYwMDAwLAorICAgIDB4MzczMDAwMDAsCisgICAgMHgzNzMx
MDAwMCwKKyAgICAweDM3MzIwMDAwLAorICAgIDB4MzczMzAwMDAsCisgICAgMHgzNzM0MDAwMCwK
KyAgICAweDM3MzUwMDAwLAorICAgIDB4MzczNjAwMDAsCisgICAgMHgzNzM3MDAwMCwKKyAgICAw
eDM3MzgwMDAwLAorICAgIDB4MzczOTAwMDAsCisgICAgMHgzNzNhMDAwMCwKKyAgICAweDM3M2Iw
MDAwLAorICAgIDB4MzczYzAwMDAsCisgICAgMHgzNzNkMDAwMCwKKyAgICAweDM3M2UwMDAwLAor
ICAgIDB4MzczZjAwMDAsCisgICAgMHgzNzQwMDAwMCwKKyAgICAweDM3NDEwMDAwLAorICAgIDB4
Mzc0MjAwMDAsCisgICAgMHgzNzQzMDAwMCwKKyAgICAweDM3NDQwMDAwLAorICAgIDB4Mzc0NTAw
MDAsCisgICAgMHgzNzQ2MDAwMCwKKyAgICAweDM3NDcwMDAwLAorICAgIDB4Mzc0ODAwMDAsCisg
ICAgMHgzNzQ5MDAwMCwKKyAgICAweDM3NGEwMDAwLAorICAgIDB4Mzc0YjAwMDAsCisgICAgMHgz
NzRjMDAwMCwKKyAgICAweDM3NGQwMDAwLAorICAgIDB4Mzc0ZTAwMDAsCisgICAgMHgzNzRmMDAw
MCwKKyAgICAweDM3NTAwMDAwLAorICAgIDB4Mzc1MTAwMDAsCisgICAgMHgzNzUyMDAwMCwKKyAg
ICAweDM3NTMwMDAwLAorICAgIDB4Mzc1NDAwMDAsCisgICAgMHgzNzU1MDAwMCwKKyAgICAweDM3
NTYwMDAwLAorICAgIDB4Mzc1NzAwMDAsCisgICAgMHgzNzU4MDAwMCwKKyAgICAweDM3NTkwMDAw
LAorICAgIDB4Mzc1YTAwMDAsCisgICAgMHgzNzViMDAwMCwKKyAgICAweDM3NWMwMDAwLAorICAg
IDB4Mzc1ZDAwMDAsCisgICAgMHgzNzVlMDAwMCwKKyAgICAweDM3NWYwMDAwLAorICAgIDB4Mzc2
MDAwMDAsCisgICAgMHgzNzYxMDAwMCwKKyAgICAweDM3NjIwMDAwLAorICAgIDB4Mzc2MzAwMDAs
CisgICAgMHgzNzY0MDAwMCwKKyAgICAweDM3NjUwMDAwLAorICAgIDB4Mzc2NjAwMDAsCisgICAg
MHgzNzY3MDAwMCwKKyAgICAweDM3NjgwMDAwLAorICAgIDB4Mzc2OTAwMDAsCisgICAgMHgzNzZh
MDAwMCwKKyAgICAweDM3NmIwMDAwLAorICAgIDB4Mzc2YzAwMDAsCisgICAgMHgzNzZkMDAwMCwK
KyAgICAweDM3NmUwMDAwLAorICAgIDB4Mzc2ZjAwMDAsCisgICAgMHgzNzcwMDAwMCwKKyAgICAw
eDM3NzEwMDAwLAorICAgIDB4Mzc3MjAwMDAsCisgICAgMHgzNzczMDAwMCwKKyAgICAweDM3NzQw
MDAwLAorICAgIDB4Mzc3NTAwMDAsCisgICAgMHgzNzc2MDAwMCwKKyAgICAweDM3NzcwMDAwLAor
ICAgIDB4Mzc3ODAwMDAsCisgICAgMHgzNzc5MDAwMCwKKyAgICAweDM3N2EwMDAwLAorICAgIDB4
Mzc3YjAwMDAsCisgICAgMHgzNzdjMDAwMCwKKyAgICAweDM3N2QwMDAwLAorICAgIDB4Mzc3ZTAw
MDAsCisgICAgMHgzNzdmMDAwMCwKKyAgICAweDM3ODAwMDAwLAorICAgIDB4Mzc4MDgwMDAsCisg
ICAgMHgzNzgxMDAwMCwKKyAgICAweDM3ODE4MDAwLAorICAgIDB4Mzc4MjAwMDAsCisgICAgMHgz
NzgyODAwMCwKKyAgICAweDM3ODMwMDAwLAorICAgIDB4Mzc4MzgwMDAsCisgICAgMHgzNzg0MDAw
MCwKKyAgICAweDM3ODQ4MDAwLAorICAgIDB4Mzc4NTAwMDAsCisgICAgMHgzNzg1ODAwMCwKKyAg
ICAweDM3ODYwMDAwLAorICAgIDB4Mzc4NjgwMDAsCisgICAgMHgzNzg3MDAwMCwKKyAgICAweDM3
ODc4MDAwLAorICAgIDB4Mzc4ODAwMDAsCisgICAgMHgzNzg4ODAwMCwKKyAgICAweDM3ODkwMDAw
LAorICAgIDB4Mzc4OTgwMDAsCisgICAgMHgzNzhhMDAwMCwKKyAgICAweDM3OGE4MDAwLAorICAg
IDB4Mzc4YjAwMDAsCisgICAgMHgzNzhiODAwMCwKKyAgICAweDM3OGMwMDAwLAorICAgIDB4Mzc4
YzgwMDAsCisgICAgMHgzNzhkMDAwMCwKKyAgICAweDM3OGQ4MDAwLAorICAgIDB4Mzc4ZTAwMDAs
CisgICAgMHgzNzhlODAwMCwKKyAgICAweDM3OGYwMDAwLAorICAgIDB4Mzc4ZjgwMDAsCisgICAg
MHgzNzkwMDAwMCwKKyAgICAweDM3OTA4MDAwLAorICAgIDB4Mzc5MTAwMDAsCisgICAgMHgzNzkx
ODAwMCwKKyAgICAweDM3OTIwMDAwLAorICAgIDB4Mzc5MjgwMDAsCisgICAgMHgzNzkzMDAwMCwK
KyAgICAweDM3OTM4MDAwLAorICAgIDB4Mzc5NDAwMDAsCisgICAgMHgzNzk0ODAwMCwKKyAgICAw
eDM3OTUwMDAwLAorICAgIDB4Mzc5NTgwMDAsCisgICAgMHgzNzk2MDAwMCwKKyAgICAweDM3OTY4
MDAwLAorICAgIDB4Mzc5NzAwMDAsCisgICAgMHgzNzk3ODAwMCwKKyAgICAweDM3OTgwMDAwLAor
ICAgIDB4Mzc5ODgwMDAsCisgICAgMHgzNzk5MDAwMCwKKyAgICAweDM3OTk4MDAwLAorICAgIDB4
Mzc5YTAwMDAsCisgICAgMHgzNzlhODAwMCwKKyAgICAweDM3OWIwMDAwLAorICAgIDB4Mzc5Yjgw
MDAsCisgICAgMHgzNzljMDAwMCwKKyAgICAweDM3OWM4MDAwLAorICAgIDB4Mzc5ZDAwMDAsCisg
ICAgMHgzNzlkODAwMCwKKyAgICAweDM3OWUwMDAwLAorICAgIDB4Mzc5ZTgwMDAsCisgICAgMHgz
NzlmMDAwMCwKKyAgICAweDM3OWY4MDAwLAorICAgIDB4MzdhMDAwMDAsCisgICAgMHgzN2EwODAw
MCwKKyAgICAweDM3YTEwMDAwLAorICAgIDB4MzdhMTgwMDAsCisgICAgMHgzN2EyMDAwMCwKKyAg
ICAweDM3YTI4MDAwLAorICAgIDB4MzdhMzAwMDAsCisgICAgMHgzN2EzODAwMCwKKyAgICAweDM3
YTQwMDAwLAorICAgIDB4MzdhNDgwMDAsCisgICAgMHgzN2E1MDAwMCwKKyAgICAweDM3YTU4MDAw
LAorICAgIDB4MzdhNjAwMDAsCisgICAgMHgzN2E2ODAwMCwKKyAgICAweDM3YTcwMDAwLAorICAg
IDB4MzdhNzgwMDAsCisgICAgMHgzN2E4MDAwMCwKKyAgICAweDM3YTg4MDAwLAorICAgIDB4Mzdh
OTAwMDAsCisgICAgMHgzN2E5ODAwMCwKKyAgICAweDM3YWEwMDAwLAorICAgIDB4MzdhYTgwMDAs
CisgICAgMHgzN2FiMDAwMCwKKyAgICAweDM3YWI4MDAwLAorICAgIDB4MzdhYzAwMDAsCisgICAg
MHgzN2FjODAwMCwKKyAgICAweDM3YWQwMDAwLAorICAgIDB4MzdhZDgwMDAsCisgICAgMHgzN2Fl
MDAwMCwKKyAgICAweDM3YWU4MDAwLAorICAgIDB4MzdhZjAwMDAsCisgICAgMHgzN2FmODAwMCwK
KyAgICAweDM3YjAwMDAwLAorICAgIDB4MzdiMDgwMDAsCisgICAgMHgzN2IxMDAwMCwKKyAgICAw
eDM3YjE4MDAwLAorICAgIDB4MzdiMjAwMDAsCisgICAgMHgzN2IyODAwMCwKKyAgICAweDM3YjMw
MDAwLAorICAgIDB4MzdiMzgwMDAsCisgICAgMHgzN2I0MDAwMCwKKyAgICAweDM3YjQ4MDAwLAor
ICAgIDB4MzdiNTAwMDAsCisgICAgMHgzN2I1ODAwMCwKKyAgICAweDM3YjYwMDAwLAorICAgIDB4
MzdiNjgwMDAsCisgICAgMHgzN2I3MDAwMCwKKyAgICAweDM3Yjc4MDAwLAorICAgIDB4MzdiODAw
MDAsCisgICAgMHgzN2I4ODAwMCwKKyAgICAweDM3YjkwMDAwLAorICAgIDB4MzdiOTgwMDAsCisg
ICAgMHgzN2JhMDAwMCwKKyAgICAweDM3YmE4MDAwLAorICAgIDB4MzdiYjAwMDAsCisgICAgMHgz
N2JiODAwMCwKKyAgICAweDM3YmMwMDAwLAorICAgIDB4MzdiYzgwMDAsCisgICAgMHgzN2JkMDAw
MCwKKyAgICAweDM3YmQ4MDAwLAorICAgIDB4MzdiZTAwMDAsCisgICAgMHgzN2JlODAwMCwKKyAg
ICAweDM3YmYwMDAwLAorICAgIDB4MzdiZjgwMDAsCisgICAgMHgzN2MwMDAwMCwKKyAgICAweDM3
YzA4MDAwLAorICAgIDB4MzdjMTAwMDAsCisgICAgMHgzN2MxODAwMCwKKyAgICAweDM3YzIwMDAw
LAorICAgIDB4MzdjMjgwMDAsCisgICAgMHgzN2MzMDAwMCwKKyAgICAweDM3YzM4MDAwLAorICAg
IDB4MzdjNDAwMDAsCisgICAgMHgzN2M0ODAwMCwKKyAgICAweDM3YzUwMDAwLAorICAgIDB4Mzdj
NTgwMDAsCisgICAgMHgzN2M2MDAwMCwKKyAgICAweDM3YzY4MDAwLAorICAgIDB4MzdjNzAwMDAs
CisgICAgMHgzN2M3ODAwMCwKKyAgICAweDM3YzgwMDAwLAorICAgIDB4MzdjODgwMDAsCisgICAg
MHgzN2M5MDAwMCwKKyAgICAweDM3Yzk4MDAwLAorICAgIDB4MzdjYTAwMDAsCisgICAgMHgzN2Nh
ODAwMCwKKyAgICAweDM3Y2IwMDAwLAorICAgIDB4MzdjYjgwMDAsCisgICAgMHgzN2NjMDAwMCwK
KyAgICAweDM3Y2M4MDAwLAorICAgIDB4MzdjZDAwMDAsCisgICAgMHgzN2NkODAwMCwKKyAgICAw
eDM3Y2UwMDAwLAorICAgIDB4MzdjZTgwMDAsCisgICAgMHgzN2NmMDAwMCwKKyAgICAweDM3Y2Y4
MDAwLAorICAgIDB4MzdkMDAwMDAsCisgICAgMHgzN2QwODAwMCwKKyAgICAweDM3ZDEwMDAwLAor
ICAgIDB4MzdkMTgwMDAsCisgICAgMHgzN2QyMDAwMCwKKyAgICAweDM3ZDI4MDAwLAorICAgIDB4
MzdkMzAwMDAsCisgICAgMHgzN2QzODAwMCwKKyAgICAweDM3ZDQwMDAwLAorICAgIDB4MzdkNDgw
MDAsCisgICAgMHgzN2Q1MDAwMCwKKyAgICAweDM3ZDU4MDAwLAorICAgIDB4MzdkNjAwMDAsCisg
ICAgMHgzN2Q2ODAwMCwKKyAgICAweDM3ZDcwMDAwLAorICAgIDB4MzdkNzgwMDAsCisgICAgMHgz
N2Q4MDAwMCwKKyAgICAweDM3ZDg4MDAwLAorICAgIDB4MzdkOTAwMDAsCisgICAgMHgzN2Q5ODAw
MCwKKyAgICAweDM3ZGEwMDAwLAorICAgIDB4MzdkYTgwMDAsCisgICAgMHgzN2RiMDAwMCwKKyAg
ICAweDM3ZGI4MDAwLAorICAgIDB4MzdkYzAwMDAsCisgICAgMHgzN2RjODAwMCwKKyAgICAweDM3
ZGQwMDAwLAorICAgIDB4MzdkZDgwMDAsCisgICAgMHgzN2RlMDAwMCwKKyAgICAweDM3ZGU4MDAw
LAorICAgIDB4MzdkZjAwMDAsCisgICAgMHgzN2RmODAwMCwKKyAgICAweDM3ZTAwMDAwLAorICAg
IDB4MzdlMDgwMDAsCisgICAgMHgzN2UxMDAwMCwKKyAgICAweDM3ZTE4MDAwLAorICAgIDB4Mzdl
MjAwMDAsCisgICAgMHgzN2UyODAwMCwKKyAgICAweDM3ZTMwMDAwLAorICAgIDB4MzdlMzgwMDAs
CisgICAgMHgzN2U0MDAwMCwKKyAgICAweDM3ZTQ4MDAwLAorICAgIDB4MzdlNTAwMDAsCisgICAg
MHgzN2U1ODAwMCwKKyAgICAweDM3ZTYwMDAwLAorICAgIDB4MzdlNjgwMDAsCisgICAgMHgzN2U3
MDAwMCwKKyAgICAweDM3ZTc4MDAwLAorICAgIDB4MzdlODAwMDAsCisgICAgMHgzN2U4ODAwMCwK
KyAgICAweDM3ZTkwMDAwLAorICAgIDB4MzdlOTgwMDAsCisgICAgMHgzN2VhMDAwMCwKKyAgICAw
eDM3ZWE4MDAwLAorICAgIDB4MzdlYjAwMDAsCisgICAgMHgzN2ViODAwMCwKKyAgICAweDM3ZWMw
MDAwLAorICAgIDB4MzdlYzgwMDAsCisgICAgMHgzN2VkMDAwMCwKKyAgICAweDM3ZWQ4MDAwLAor
ICAgIDB4MzdlZTAwMDAsCisgICAgMHgzN2VlODAwMCwKKyAgICAweDM3ZWYwMDAwLAorICAgIDB4
MzdlZjgwMDAsCisgICAgMHgzN2YwMDAwMCwKKyAgICAweDM3ZjA4MDAwLAorICAgIDB4MzdmMTAw
MDAsCisgICAgMHgzN2YxODAwMCwKKyAgICAweDM3ZjIwMDAwLAorICAgIDB4MzdmMjgwMDAsCisg
ICAgMHgzN2YzMDAwMCwKKyAgICAweDM3ZjM4MDAwLAorICAgIDB4MzdmNDAwMDAsCisgICAgMHgz
N2Y0ODAwMCwKKyAgICAweDM3ZjUwMDAwLAorICAgIDB4MzdmNTgwMDAsCisgICAgMHgzN2Y2MDAw
MCwKKyAgICAweDM3ZjY4MDAwLAorICAgIDB4MzdmNzAwMDAsCisgICAgMHgzN2Y3ODAwMCwKKyAg
ICAweDM3ZjgwMDAwLAorICAgIDB4MzdmODgwMDAsCisgICAgMHgzN2Y5MDAwMCwKKyAgICAweDM3
Zjk4MDAwLAorICAgIDB4MzdmYTAwMDAsCisgICAgMHgzN2ZhODAwMCwKKyAgICAweDM3ZmIwMDAw
LAorICAgIDB4MzdmYjgwMDAsCisgICAgMHgzN2ZjMDAwMCwKKyAgICAweDM3ZmM4MDAwLAorICAg
IDB4MzdmZDAwMDAsCisgICAgMHgzN2ZkODAwMCwKKyAgICAweDM3ZmUwMDAwLAorICAgIDB4Mzdm
ZTgwMDAsCisgICAgMHgzN2ZmMDAwMCwKKyAgICAweDM3ZmY4MDAwLAorICAgIDB4MzgwMDAwMDAs
CisgICAgMHgzODAwNDAwMCwKKyAgICAweDM4MDA4MDAwLAorICAgIDB4MzgwMGMwMDAsCisgICAg
MHgzODAxMDAwMCwKKyAgICAweDM4MDE0MDAwLAorICAgIDB4MzgwMTgwMDAsCisgICAgMHgzODAx
YzAwMCwKKyAgICAweDM4MDIwMDAwLAorICAgIDB4MzgwMjQwMDAsCisgICAgMHgzODAyODAwMCwK
KyAgICAweDM4MDJjMDAwLAorICAgIDB4MzgwMzAwMDAsCisgICAgMHgzODAzNDAwMCwKKyAgICAw
eDM4MDM4MDAwLAorICAgIDB4MzgwM2MwMDAsCisgICAgMHgzODA0MDAwMCwKKyAgICAweDM4MDQ0
MDAwLAorICAgIDB4MzgwNDgwMDAsCisgICAgMHgzODA0YzAwMCwKKyAgICAweDM4MDUwMDAwLAor
ICAgIDB4MzgwNTQwMDAsCisgICAgMHgzODA1ODAwMCwKKyAgICAweDM4MDVjMDAwLAorICAgIDB4
MzgwNjAwMDAsCisgICAgMHgzODA2NDAwMCwKKyAgICAweDM4MDY4MDAwLAorICAgIDB4MzgwNmMw
MDAsCisgICAgMHgzODA3MDAwMCwKKyAgICAweDM4MDc0MDAwLAorICAgIDB4MzgwNzgwMDAsCisg
ICAgMHgzODA3YzAwMCwKKyAgICAweDM4MDgwMDAwLAorICAgIDB4MzgwODQwMDAsCisgICAgMHgz
ODA4ODAwMCwKKyAgICAweDM4MDhjMDAwLAorICAgIDB4MzgwOTAwMDAsCisgICAgMHgzODA5NDAw
MCwKKyAgICAweDM4MDk4MDAwLAorICAgIDB4MzgwOWMwMDAsCisgICAgMHgzODBhMDAwMCwKKyAg
ICAweDM4MGE0MDAwLAorICAgIDB4MzgwYTgwMDAsCisgICAgMHgzODBhYzAwMCwKKyAgICAweDM4
MGIwMDAwLAorICAgIDB4MzgwYjQwMDAsCisgICAgMHgzODBiODAwMCwKKyAgICAweDM4MGJjMDAw
LAorICAgIDB4MzgwYzAwMDAsCisgICAgMHgzODBjNDAwMCwKKyAgICAweDM4MGM4MDAwLAorICAg
IDB4MzgwY2MwMDAsCisgICAgMHgzODBkMDAwMCwKKyAgICAweDM4MGQ0MDAwLAorICAgIDB4Mzgw
ZDgwMDAsCisgICAgMHgzODBkYzAwMCwKKyAgICAweDM4MGUwMDAwLAorICAgIDB4MzgwZTQwMDAs
CisgICAgMHgzODBlODAwMCwKKyAgICAweDM4MGVjMDAwLAorICAgIDB4MzgwZjAwMDAsCisgICAg
MHgzODBmNDAwMCwKKyAgICAweDM4MGY4MDAwLAorICAgIDB4MzgwZmMwMDAsCisgICAgMHgzODEw
MDAwMCwKKyAgICAweDM4MTA0MDAwLAorICAgIDB4MzgxMDgwMDAsCisgICAgMHgzODEwYzAwMCwK
KyAgICAweDM4MTEwMDAwLAorICAgIDB4MzgxMTQwMDAsCisgICAgMHgzODExODAwMCwKKyAgICAw
eDM4MTFjMDAwLAorICAgIDB4MzgxMjAwMDAsCisgICAgMHgzODEyNDAwMCwKKyAgICAweDM4MTI4
MDAwLAorICAgIDB4MzgxMmMwMDAsCisgICAgMHgzODEzMDAwMCwKKyAgICAweDM4MTM0MDAwLAor
ICAgIDB4MzgxMzgwMDAsCisgICAgMHgzODEzYzAwMCwKKyAgICAweDM4MTQwMDAwLAorICAgIDB4
MzgxNDQwMDAsCisgICAgMHgzODE0ODAwMCwKKyAgICAweDM4MTRjMDAwLAorICAgIDB4MzgxNTAw
MDAsCisgICAgMHgzODE1NDAwMCwKKyAgICAweDM4MTU4MDAwLAorICAgIDB4MzgxNWMwMDAsCisg
ICAgMHgzODE2MDAwMCwKKyAgICAweDM4MTY0MDAwLAorICAgIDB4MzgxNjgwMDAsCisgICAgMHgz
ODE2YzAwMCwKKyAgICAweDM4MTcwMDAwLAorICAgIDB4MzgxNzQwMDAsCisgICAgMHgzODE3ODAw
MCwKKyAgICAweDM4MTdjMDAwLAorICAgIDB4MzgxODAwMDAsCisgICAgMHgzODE4NDAwMCwKKyAg
ICAweDM4MTg4MDAwLAorICAgIDB4MzgxOGMwMDAsCisgICAgMHgzODE5MDAwMCwKKyAgICAweDM4
MTk0MDAwLAorICAgIDB4MzgxOTgwMDAsCisgICAgMHgzODE5YzAwMCwKKyAgICAweDM4MWEwMDAw
LAorICAgIDB4MzgxYTQwMDAsCisgICAgMHgzODFhODAwMCwKKyAgICAweDM4MWFjMDAwLAorICAg
IDB4MzgxYjAwMDAsCisgICAgMHgzODFiNDAwMCwKKyAgICAweDM4MWI4MDAwLAorICAgIDB4Mzgx
YmMwMDAsCisgICAgMHgzODFjMDAwMCwKKyAgICAweDM4MWM0MDAwLAorICAgIDB4MzgxYzgwMDAs
CisgICAgMHgzODFjYzAwMCwKKyAgICAweDM4MWQwMDAwLAorICAgIDB4MzgxZDQwMDAsCisgICAg
MHgzODFkODAwMCwKKyAgICAweDM4MWRjMDAwLAorICAgIDB4MzgxZTAwMDAsCisgICAgMHgzODFl
NDAwMCwKKyAgICAweDM4MWU4MDAwLAorICAgIDB4MzgxZWMwMDAsCisgICAgMHgzODFmMDAwMCwK
KyAgICAweDM4MWY0MDAwLAorICAgIDB4MzgxZjgwMDAsCisgICAgMHgzODFmYzAwMCwKKyAgICAw
eDM4MjAwMDAwLAorICAgIDB4MzgyMDQwMDAsCisgICAgMHgzODIwODAwMCwKKyAgICAweDM4MjBj
MDAwLAorICAgIDB4MzgyMTAwMDAsCisgICAgMHgzODIxNDAwMCwKKyAgICAweDM4MjE4MDAwLAor
ICAgIDB4MzgyMWMwMDAsCisgICAgMHgzODIyMDAwMCwKKyAgICAweDM4MjI0MDAwLAorICAgIDB4
MzgyMjgwMDAsCisgICAgMHgzODIyYzAwMCwKKyAgICAweDM4MjMwMDAwLAorICAgIDB4MzgyMzQw
MDAsCisgICAgMHgzODIzODAwMCwKKyAgICAweDM4MjNjMDAwLAorICAgIDB4MzgyNDAwMDAsCisg
ICAgMHgzODI0NDAwMCwKKyAgICAweDM4MjQ4MDAwLAorICAgIDB4MzgyNGMwMDAsCisgICAgMHgz
ODI1MDAwMCwKKyAgICAweDM4MjU0MDAwLAorICAgIDB4MzgyNTgwMDAsCisgICAgMHgzODI1YzAw
MCwKKyAgICAweDM4MjYwMDAwLAorICAgIDB4MzgyNjQwMDAsCisgICAgMHgzODI2ODAwMCwKKyAg
ICAweDM4MjZjMDAwLAorICAgIDB4MzgyNzAwMDAsCisgICAgMHgzODI3NDAwMCwKKyAgICAweDM4
Mjc4MDAwLAorICAgIDB4MzgyN2MwMDAsCisgICAgMHgzODI4MDAwMCwKKyAgICAweDM4Mjg0MDAw
LAorICAgIDB4MzgyODgwMDAsCisgICAgMHgzODI4YzAwMCwKKyAgICAweDM4MjkwMDAwLAorICAg
IDB4MzgyOTQwMDAsCisgICAgMHgzODI5ODAwMCwKKyAgICAweDM4MjljMDAwLAorICAgIDB4Mzgy
YTAwMDAsCisgICAgMHgzODJhNDAwMCwKKyAgICAweDM4MmE4MDAwLAorICAgIDB4MzgyYWMwMDAs
CisgICAgMHgzODJiMDAwMCwKKyAgICAweDM4MmI0MDAwLAorICAgIDB4MzgyYjgwMDAsCisgICAg
MHgzODJiYzAwMCwKKyAgICAweDM4MmMwMDAwLAorICAgIDB4MzgyYzQwMDAsCisgICAgMHgzODJj
ODAwMCwKKyAgICAweDM4MmNjMDAwLAorICAgIDB4MzgyZDAwMDAsCisgICAgMHgzODJkNDAwMCwK
KyAgICAweDM4MmQ4MDAwLAorICAgIDB4MzgyZGMwMDAsCisgICAgMHgzODJlMDAwMCwKKyAgICAw
eDM4MmU0MDAwLAorICAgIDB4MzgyZTgwMDAsCisgICAgMHgzODJlYzAwMCwKKyAgICAweDM4MmYw
MDAwLAorICAgIDB4MzgyZjQwMDAsCisgICAgMHgzODJmODAwMCwKKyAgICAweDM4MmZjMDAwLAor
ICAgIDB4MzgzMDAwMDAsCisgICAgMHgzODMwNDAwMCwKKyAgICAweDM4MzA4MDAwLAorICAgIDB4
MzgzMGMwMDAsCisgICAgMHgzODMxMDAwMCwKKyAgICAweDM4MzE0MDAwLAorICAgIDB4MzgzMTgw
MDAsCisgICAgMHgzODMxYzAwMCwKKyAgICAweDM4MzIwMDAwLAorICAgIDB4MzgzMjQwMDAsCisg
ICAgMHgzODMyODAwMCwKKyAgICAweDM4MzJjMDAwLAorICAgIDB4MzgzMzAwMDAsCisgICAgMHgz
ODMzNDAwMCwKKyAgICAweDM4MzM4MDAwLAorICAgIDB4MzgzM2MwMDAsCisgICAgMHgzODM0MDAw
MCwKKyAgICAweDM4MzQ0MDAwLAorICAgIDB4MzgzNDgwMDAsCisgICAgMHgzODM0YzAwMCwKKyAg
ICAweDM4MzUwMDAwLAorICAgIDB4MzgzNTQwMDAsCisgICAgMHgzODM1ODAwMCwKKyAgICAweDM4
MzVjMDAwLAorICAgIDB4MzgzNjAwMDAsCisgICAgMHgzODM2NDAwMCwKKyAgICAweDM4MzY4MDAw
LAorICAgIDB4MzgzNmMwMDAsCisgICAgMHgzODM3MDAwMCwKKyAgICAweDM4Mzc0MDAwLAorICAg
IDB4MzgzNzgwMDAsCisgICAgMHgzODM3YzAwMCwKKyAgICAweDM4MzgwMDAwLAorICAgIDB4Mzgz
ODQwMDAsCisgICAgMHgzODM4ODAwMCwKKyAgICAweDM4MzhjMDAwLAorICAgIDB4MzgzOTAwMDAs
CisgICAgMHgzODM5NDAwMCwKKyAgICAweDM4Mzk4MDAwLAorICAgIDB4MzgzOWMwMDAsCisgICAg
MHgzODNhMDAwMCwKKyAgICAweDM4M2E0MDAwLAorICAgIDB4MzgzYTgwMDAsCisgICAgMHgzODNh
YzAwMCwKKyAgICAweDM4M2IwMDAwLAorICAgIDB4MzgzYjQwMDAsCisgICAgMHgzODNiODAwMCwK
KyAgICAweDM4M2JjMDAwLAorICAgIDB4MzgzYzAwMDAsCisgICAgMHgzODNjNDAwMCwKKyAgICAw
eDM4M2M4MDAwLAorICAgIDB4MzgzY2MwMDAsCisgICAgMHgzODNkMDAwMCwKKyAgICAweDM4M2Q0
MDAwLAorICAgIDB4MzgzZDgwMDAsCisgICAgMHgzODNkYzAwMCwKKyAgICAweDM4M2UwMDAwLAor
ICAgIDB4MzgzZTQwMDAsCisgICAgMHgzODNlODAwMCwKKyAgICAweDM4M2VjMDAwLAorICAgIDB4
MzgzZjAwMDAsCisgICAgMHgzODNmNDAwMCwKKyAgICAweDM4M2Y4MDAwLAorICAgIDB4MzgzZmMw
MDAsCisgICAgMHgzODQwMDAwMCwKKyAgICAweDM4NDA0MDAwLAorICAgIDB4Mzg0MDgwMDAsCisg
ICAgMHgzODQwYzAwMCwKKyAgICAweDM4NDEwMDAwLAorICAgIDB4Mzg0MTQwMDAsCisgICAgMHgz
ODQxODAwMCwKKyAgICAweDM4NDFjMDAwLAorICAgIDB4Mzg0MjAwMDAsCisgICAgMHgzODQyNDAw
MCwKKyAgICAweDM4NDI4MDAwLAorICAgIDB4Mzg0MmMwMDAsCisgICAgMHgzODQzMDAwMCwKKyAg
ICAweDM4NDM0MDAwLAorICAgIDB4Mzg0MzgwMDAsCisgICAgMHgzODQzYzAwMCwKKyAgICAweDM4
NDQwMDAwLAorICAgIDB4Mzg0NDQwMDAsCisgICAgMHgzODQ0ODAwMCwKKyAgICAweDM4NDRjMDAw
LAorICAgIDB4Mzg0NTAwMDAsCisgICAgMHgzODQ1NDAwMCwKKyAgICAweDM4NDU4MDAwLAorICAg
IDB4Mzg0NWMwMDAsCisgICAgMHgzODQ2MDAwMCwKKyAgICAweDM4NDY0MDAwLAorICAgIDB4Mzg0
NjgwMDAsCisgICAgMHgzODQ2YzAwMCwKKyAgICAweDM4NDcwMDAwLAorICAgIDB4Mzg0NzQwMDAs
CisgICAgMHgzODQ3ODAwMCwKKyAgICAweDM4NDdjMDAwLAorICAgIDB4Mzg0ODAwMDAsCisgICAg
MHgzODQ4NDAwMCwKKyAgICAweDM4NDg4MDAwLAorICAgIDB4Mzg0OGMwMDAsCisgICAgMHgzODQ5
MDAwMCwKKyAgICAweDM4NDk0MDAwLAorICAgIDB4Mzg0OTgwMDAsCisgICAgMHgzODQ5YzAwMCwK
KyAgICAweDM4NGEwMDAwLAorICAgIDB4Mzg0YTQwMDAsCisgICAgMHgzODRhODAwMCwKKyAgICAw
eDM4NGFjMDAwLAorICAgIDB4Mzg0YjAwMDAsCisgICAgMHgzODRiNDAwMCwKKyAgICAweDM4NGI4
MDAwLAorICAgIDB4Mzg0YmMwMDAsCisgICAgMHgzODRjMDAwMCwKKyAgICAweDM4NGM0MDAwLAor
ICAgIDB4Mzg0YzgwMDAsCisgICAgMHgzODRjYzAwMCwKKyAgICAweDM4NGQwMDAwLAorICAgIDB4
Mzg0ZDQwMDAsCisgICAgMHgzODRkODAwMCwKKyAgICAweDM4NGRjMDAwLAorICAgIDB4Mzg0ZTAw
MDAsCisgICAgMHgzODRlNDAwMCwKKyAgICAweDM4NGU4MDAwLAorICAgIDB4Mzg0ZWMwMDAsCisg
ICAgMHgzODRmMDAwMCwKKyAgICAweDM4NGY0MDAwLAorICAgIDB4Mzg0ZjgwMDAsCisgICAgMHgz
ODRmYzAwMCwKKyAgICAweDM4NTAwMDAwLAorICAgIDB4Mzg1MDQwMDAsCisgICAgMHgzODUwODAw
MCwKKyAgICAweDM4NTBjMDAwLAorICAgIDB4Mzg1MTAwMDAsCisgICAgMHgzODUxNDAwMCwKKyAg
ICAweDM4NTE4MDAwLAorICAgIDB4Mzg1MWMwMDAsCisgICAgMHgzODUyMDAwMCwKKyAgICAweDM4
NTI0MDAwLAorICAgIDB4Mzg1MjgwMDAsCisgICAgMHgzODUyYzAwMCwKKyAgICAweDM4NTMwMDAw
LAorICAgIDB4Mzg1MzQwMDAsCisgICAgMHgzODUzODAwMCwKKyAgICAweDM4NTNjMDAwLAorICAg
IDB4Mzg1NDAwMDAsCisgICAgMHgzODU0NDAwMCwKKyAgICAweDM4NTQ4MDAwLAorICAgIDB4Mzg1
NGMwMDAsCisgICAgMHgzODU1MDAwMCwKKyAgICAweDM4NTU0MDAwLAorICAgIDB4Mzg1NTgwMDAs
CisgICAgMHgzODU1YzAwMCwKKyAgICAweDM4NTYwMDAwLAorICAgIDB4Mzg1NjQwMDAsCisgICAg
MHgzODU2ODAwMCwKKyAgICAweDM4NTZjMDAwLAorICAgIDB4Mzg1NzAwMDAsCisgICAgMHgzODU3
NDAwMCwKKyAgICAweDM4NTc4MDAwLAorICAgIDB4Mzg1N2MwMDAsCisgICAgMHgzODU4MDAwMCwK
KyAgICAweDM4NTg0MDAwLAorICAgIDB4Mzg1ODgwMDAsCisgICAgMHgzODU4YzAwMCwKKyAgICAw
eDM4NTkwMDAwLAorICAgIDB4Mzg1OTQwMDAsCisgICAgMHgzODU5ODAwMCwKKyAgICAweDM4NTlj
MDAwLAorICAgIDB4Mzg1YTAwMDAsCisgICAgMHgzODVhNDAwMCwKKyAgICAweDM4NWE4MDAwLAor
ICAgIDB4Mzg1YWMwMDAsCisgICAgMHgzODViMDAwMCwKKyAgICAweDM4NWI0MDAwLAorICAgIDB4
Mzg1YjgwMDAsCisgICAgMHgzODViYzAwMCwKKyAgICAweDM4NWMwMDAwLAorICAgIDB4Mzg1YzQw
MDAsCisgICAgMHgzODVjODAwMCwKKyAgICAweDM4NWNjMDAwLAorICAgIDB4Mzg1ZDAwMDAsCisg
ICAgMHgzODVkNDAwMCwKKyAgICAweDM4NWQ4MDAwLAorICAgIDB4Mzg1ZGMwMDAsCisgICAgMHgz
ODVlMDAwMCwKKyAgICAweDM4NWU0MDAwLAorICAgIDB4Mzg1ZTgwMDAsCisgICAgMHgzODVlYzAw
MCwKKyAgICAweDM4NWYwMDAwLAorICAgIDB4Mzg1ZjQwMDAsCisgICAgMHgzODVmODAwMCwKKyAg
ICAweDM4NWZjMDAwLAorICAgIDB4Mzg2MDAwMDAsCisgICAgMHgzODYwNDAwMCwKKyAgICAweDM4
NjA4MDAwLAorICAgIDB4Mzg2MGMwMDAsCisgICAgMHgzODYxMDAwMCwKKyAgICAweDM4NjE0MDAw
LAorICAgIDB4Mzg2MTgwMDAsCisgICAgMHgzODYxYzAwMCwKKyAgICAweDM4NjIwMDAwLAorICAg
IDB4Mzg2MjQwMDAsCisgICAgMHgzODYyODAwMCwKKyAgICAweDM4NjJjMDAwLAorICAgIDB4Mzg2
MzAwMDAsCisgICAgMHgzODYzNDAwMCwKKyAgICAweDM4NjM4MDAwLAorICAgIDB4Mzg2M2MwMDAs
CisgICAgMHgzODY0MDAwMCwKKyAgICAweDM4NjQ0MDAwLAorICAgIDB4Mzg2NDgwMDAsCisgICAg
MHgzODY0YzAwMCwKKyAgICAweDM4NjUwMDAwLAorICAgIDB4Mzg2NTQwMDAsCisgICAgMHgzODY1
ODAwMCwKKyAgICAweDM4NjVjMDAwLAorICAgIDB4Mzg2NjAwMDAsCisgICAgMHgzODY2NDAwMCwK
KyAgICAweDM4NjY4MDAwLAorICAgIDB4Mzg2NmMwMDAsCisgICAgMHgzODY3MDAwMCwKKyAgICAw
eDM4Njc0MDAwLAorICAgIDB4Mzg2NzgwMDAsCisgICAgMHgzODY3YzAwMCwKKyAgICAweDM4Njgw
MDAwLAorICAgIDB4Mzg2ODQwMDAsCisgICAgMHgzODY4ODAwMCwKKyAgICAweDM4NjhjMDAwLAor
ICAgIDB4Mzg2OTAwMDAsCisgICAgMHgzODY5NDAwMCwKKyAgICAweDM4Njk4MDAwLAorICAgIDB4
Mzg2OWMwMDAsCisgICAgMHgzODZhMDAwMCwKKyAgICAweDM4NmE0MDAwLAorICAgIDB4Mzg2YTgw
MDAsCisgICAgMHgzODZhYzAwMCwKKyAgICAweDM4NmIwMDAwLAorICAgIDB4Mzg2YjQwMDAsCisg
ICAgMHgzODZiODAwMCwKKyAgICAweDM4NmJjMDAwLAorICAgIDB4Mzg2YzAwMDAsCisgICAgMHgz
ODZjNDAwMCwKKyAgICAweDM4NmM4MDAwLAorICAgIDB4Mzg2Y2MwMDAsCisgICAgMHgzODZkMDAw
MCwKKyAgICAweDM4NmQ0MDAwLAorICAgIDB4Mzg2ZDgwMDAsCisgICAgMHgzODZkYzAwMCwKKyAg
ICAweDM4NmUwMDAwLAorICAgIDB4Mzg2ZTQwMDAsCisgICAgMHgzODZlODAwMCwKKyAgICAweDM4
NmVjMDAwLAorICAgIDB4Mzg2ZjAwMDAsCisgICAgMHgzODZmNDAwMCwKKyAgICAweDM4NmY4MDAw
LAorICAgIDB4Mzg2ZmMwMDAsCisgICAgMHgzODcwMDAwMCwKKyAgICAweDM4NzA0MDAwLAorICAg
IDB4Mzg3MDgwMDAsCisgICAgMHgzODcwYzAwMCwKKyAgICAweDM4NzEwMDAwLAorICAgIDB4Mzg3
MTQwMDAsCisgICAgMHgzODcxODAwMCwKKyAgICAweDM4NzFjMDAwLAorICAgIDB4Mzg3MjAwMDAs
CisgICAgMHgzODcyNDAwMCwKKyAgICAweDM4NzI4MDAwLAorICAgIDB4Mzg3MmMwMDAsCisgICAg
MHgzODczMDAwMCwKKyAgICAweDM4NzM0MDAwLAorICAgIDB4Mzg3MzgwMDAsCisgICAgMHgzODcz
YzAwMCwKKyAgICAweDM4NzQwMDAwLAorICAgIDB4Mzg3NDQwMDAsCisgICAgMHgzODc0ODAwMCwK
KyAgICAweDM4NzRjMDAwLAorICAgIDB4Mzg3NTAwMDAsCisgICAgMHgzODc1NDAwMCwKKyAgICAw
eDM4NzU4MDAwLAorICAgIDB4Mzg3NWMwMDAsCisgICAgMHgzODc2MDAwMCwKKyAgICAweDM4NzY0
MDAwLAorICAgIDB4Mzg3NjgwMDAsCisgICAgMHgzODc2YzAwMCwKKyAgICAweDM4NzcwMDAwLAor
ICAgIDB4Mzg3NzQwMDAsCisgICAgMHgzODc3ODAwMCwKKyAgICAweDM4NzdjMDAwLAorICAgIDB4
Mzg3ODAwMDAsCisgICAgMHgzODc4NDAwMCwKKyAgICAweDM4Nzg4MDAwLAorICAgIDB4Mzg3OGMw
MDAsCisgICAgMHgzODc5MDAwMCwKKyAgICAweDM4Nzk0MDAwLAorICAgIDB4Mzg3OTgwMDAsCisg
ICAgMHgzODc5YzAwMCwKKyAgICAweDM4N2EwMDAwLAorICAgIDB4Mzg3YTQwMDAsCisgICAgMHgz
ODdhODAwMCwKKyAgICAweDM4N2FjMDAwLAorICAgIDB4Mzg3YjAwMDAsCisgICAgMHgzODdiNDAw
MCwKKyAgICAweDM4N2I4MDAwLAorICAgIDB4Mzg3YmMwMDAsCisgICAgMHgzODdjMDAwMCwKKyAg
ICAweDM4N2M0MDAwLAorICAgIDB4Mzg3YzgwMDAsCisgICAgMHgzODdjYzAwMCwKKyAgICAweDM4
N2QwMDAwLAorICAgIDB4Mzg3ZDQwMDAsCisgICAgMHgzODdkODAwMCwKKyAgICAweDM4N2RjMDAw
LAorICAgIDB4Mzg3ZTAwMDAsCisgICAgMHgzODdlNDAwMCwKKyAgICAweDM4N2U4MDAwLAorICAg
IDB4Mzg3ZWMwMDAsCisgICAgMHgzODdmMDAwMCwKKyAgICAweDM4N2Y0MDAwLAorICAgIDB4Mzg3
ZjgwMDAsCisgICAgMHgzODdmYzAwMCwKKyAgICAweDM4MDAwMDAwLAorICAgIDB4MzgwMDIwMDAs
CisgICAgMHgzODAwNDAwMCwKKyAgICAweDM4MDA2MDAwLAorICAgIDB4MzgwMDgwMDAsCisgICAg
MHgzODAwYTAwMCwKKyAgICAweDM4MDBjMDAwLAorICAgIDB4MzgwMGUwMDAsCisgICAgMHgzODAx
MDAwMCwKKyAgICAweDM4MDEyMDAwLAorICAgIDB4MzgwMTQwMDAsCisgICAgMHgzODAxNjAwMCwK
KyAgICAweDM4MDE4MDAwLAorICAgIDB4MzgwMWEwMDAsCisgICAgMHgzODAxYzAwMCwKKyAgICAw
eDM4MDFlMDAwLAorICAgIDB4MzgwMjAwMDAsCisgICAgMHgzODAyMjAwMCwKKyAgICAweDM4MDI0
MDAwLAorICAgIDB4MzgwMjYwMDAsCisgICAgMHgzODAyODAwMCwKKyAgICAweDM4MDJhMDAwLAor
ICAgIDB4MzgwMmMwMDAsCisgICAgMHgzODAyZTAwMCwKKyAgICAweDM4MDMwMDAwLAorICAgIDB4
MzgwMzIwMDAsCisgICAgMHgzODAzNDAwMCwKKyAgICAweDM4MDM2MDAwLAorICAgIDB4MzgwMzgw
MDAsCisgICAgMHgzODAzYTAwMCwKKyAgICAweDM4MDNjMDAwLAorICAgIDB4MzgwM2UwMDAsCisg
ICAgMHgzODA0MDAwMCwKKyAgICAweDM4MDQyMDAwLAorICAgIDB4MzgwNDQwMDAsCisgICAgMHgz
ODA0NjAwMCwKKyAgICAweDM4MDQ4MDAwLAorICAgIDB4MzgwNGEwMDAsCisgICAgMHgzODA0YzAw
MCwKKyAgICAweDM4MDRlMDAwLAorICAgIDB4MzgwNTAwMDAsCisgICAgMHgzODA1MjAwMCwKKyAg
ICAweDM4MDU0MDAwLAorICAgIDB4MzgwNTYwMDAsCisgICAgMHgzODA1ODAwMCwKKyAgICAweDM4
MDVhMDAwLAorICAgIDB4MzgwNWMwMDAsCisgICAgMHgzODA1ZTAwMCwKKyAgICAweDM4MDYwMDAw
LAorICAgIDB4MzgwNjIwMDAsCisgICAgMHgzODA2NDAwMCwKKyAgICAweDM4MDY2MDAwLAorICAg
IDB4MzgwNjgwMDAsCisgICAgMHgzODA2YTAwMCwKKyAgICAweDM4MDZjMDAwLAorICAgIDB4Mzgw
NmUwMDAsCisgICAgMHgzODA3MDAwMCwKKyAgICAweDM4MDcyMDAwLAorICAgIDB4MzgwNzQwMDAs
CisgICAgMHgzODA3NjAwMCwKKyAgICAweDM4MDc4MDAwLAorICAgIDB4MzgwN2EwMDAsCisgICAg
MHgzODA3YzAwMCwKKyAgICAweDM4MDdlMDAwLAorICAgIDB4MzgwODAwMDAsCisgICAgMHgzODA4
MjAwMCwKKyAgICAweDM4MDg0MDAwLAorICAgIDB4MzgwODYwMDAsCisgICAgMHgzODA4ODAwMCwK
KyAgICAweDM4MDhhMDAwLAorICAgIDB4MzgwOGMwMDAsCisgICAgMHgzODA4ZTAwMCwKKyAgICAw
eDM4MDkwMDAwLAorICAgIDB4MzgwOTIwMDAsCisgICAgMHgzODA5NDAwMCwKKyAgICAweDM4MDk2
MDAwLAorICAgIDB4MzgwOTgwMDAsCisgICAgMHgzODA5YTAwMCwKKyAgICAweDM4MDljMDAwLAor
ICAgIDB4MzgwOWUwMDAsCisgICAgMHgzODBhMDAwMCwKKyAgICAweDM4MGEyMDAwLAorICAgIDB4
MzgwYTQwMDAsCisgICAgMHgzODBhNjAwMCwKKyAgICAweDM4MGE4MDAwLAorICAgIDB4MzgwYWEw
MDAsCisgICAgMHgzODBhYzAwMCwKKyAgICAweDM4MGFlMDAwLAorICAgIDB4MzgwYjAwMDAsCisg
ICAgMHgzODBiMjAwMCwKKyAgICAweDM4MGI0MDAwLAorICAgIDB4MzgwYjYwMDAsCisgICAgMHgz
ODBiODAwMCwKKyAgICAweDM4MGJhMDAwLAorICAgIDB4MzgwYmMwMDAsCisgICAgMHgzODBiZTAw
MCwKKyAgICAweDM4MGMwMDAwLAorICAgIDB4MzgwYzIwMDAsCisgICAgMHgzODBjNDAwMCwKKyAg
ICAweDM4MGM2MDAwLAorICAgIDB4MzgwYzgwMDAsCisgICAgMHgzODBjYTAwMCwKKyAgICAweDM4
MGNjMDAwLAorICAgIDB4MzgwY2UwMDAsCisgICAgMHgzODBkMDAwMCwKKyAgICAweDM4MGQyMDAw
LAorICAgIDB4MzgwZDQwMDAsCisgICAgMHgzODBkNjAwMCwKKyAgICAweDM4MGQ4MDAwLAorICAg
IDB4MzgwZGEwMDAsCisgICAgMHgzODBkYzAwMCwKKyAgICAweDM4MGRlMDAwLAorICAgIDB4Mzgw
ZTAwMDAsCisgICAgMHgzODBlMjAwMCwKKyAgICAweDM4MGU0MDAwLAorICAgIDB4MzgwZTYwMDAs
CisgICAgMHgzODBlODAwMCwKKyAgICAweDM4MGVhMDAwLAorICAgIDB4MzgwZWMwMDAsCisgICAg
MHgzODBlZTAwMCwKKyAgICAweDM4MGYwMDAwLAorICAgIDB4MzgwZjIwMDAsCisgICAgMHgzODBm
NDAwMCwKKyAgICAweDM4MGY2MDAwLAorICAgIDB4MzgwZjgwMDAsCisgICAgMHgzODBmYTAwMCwK
KyAgICAweDM4MGZjMDAwLAorICAgIDB4MzgwZmUwMDAsCisgICAgMHgzODEwMDAwMCwKKyAgICAw
eDM4MTAyMDAwLAorICAgIDB4MzgxMDQwMDAsCisgICAgMHgzODEwNjAwMCwKKyAgICAweDM4MTA4
MDAwLAorICAgIDB4MzgxMGEwMDAsCisgICAgMHgzODEwYzAwMCwKKyAgICAweDM4MTBlMDAwLAor
ICAgIDB4MzgxMTAwMDAsCisgICAgMHgzODExMjAwMCwKKyAgICAweDM4MTE0MDAwLAorICAgIDB4
MzgxMTYwMDAsCisgICAgMHgzODExODAwMCwKKyAgICAweDM4MTFhMDAwLAorICAgIDB4MzgxMWMw
MDAsCisgICAgMHgzODExZTAwMCwKKyAgICAweDM4MTIwMDAwLAorICAgIDB4MzgxMjIwMDAsCisg
ICAgMHgzODEyNDAwMCwKKyAgICAweDM4MTI2MDAwLAorICAgIDB4MzgxMjgwMDAsCisgICAgMHgz
ODEyYTAwMCwKKyAgICAweDM4MTJjMDAwLAorICAgIDB4MzgxMmUwMDAsCisgICAgMHgzODEzMDAw
MCwKKyAgICAweDM4MTMyMDAwLAorICAgIDB4MzgxMzQwMDAsCisgICAgMHgzODEzNjAwMCwKKyAg
ICAweDM4MTM4MDAwLAorICAgIDB4MzgxM2EwMDAsCisgICAgMHgzODEzYzAwMCwKKyAgICAweDM4
MTNlMDAwLAorICAgIDB4MzgxNDAwMDAsCisgICAgMHgzODE0MjAwMCwKKyAgICAweDM4MTQ0MDAw
LAorICAgIDB4MzgxNDYwMDAsCisgICAgMHgzODE0ODAwMCwKKyAgICAweDM4MTRhMDAwLAorICAg
IDB4MzgxNGMwMDAsCisgICAgMHgzODE0ZTAwMCwKKyAgICAweDM4MTUwMDAwLAorICAgIDB4Mzgx
NTIwMDAsCisgICAgMHgzODE1NDAwMCwKKyAgICAweDM4MTU2MDAwLAorICAgIDB4MzgxNTgwMDAs
CisgICAgMHgzODE1YTAwMCwKKyAgICAweDM4MTVjMDAwLAorICAgIDB4MzgxNWUwMDAsCisgICAg
MHgzODE2MDAwMCwKKyAgICAweDM4MTYyMDAwLAorICAgIDB4MzgxNjQwMDAsCisgICAgMHgzODE2
NjAwMCwKKyAgICAweDM4MTY4MDAwLAorICAgIDB4MzgxNmEwMDAsCisgICAgMHgzODE2YzAwMCwK
KyAgICAweDM4MTZlMDAwLAorICAgIDB4MzgxNzAwMDAsCisgICAgMHgzODE3MjAwMCwKKyAgICAw
eDM4MTc0MDAwLAorICAgIDB4MzgxNzYwMDAsCisgICAgMHgzODE3ODAwMCwKKyAgICAweDM4MTdh
MDAwLAorICAgIDB4MzgxN2MwMDAsCisgICAgMHgzODE3ZTAwMCwKKyAgICAweDM4MTgwMDAwLAor
ICAgIDB4MzgxODIwMDAsCisgICAgMHgzODE4NDAwMCwKKyAgICAweDM4MTg2MDAwLAorICAgIDB4
MzgxODgwMDAsCisgICAgMHgzODE4YTAwMCwKKyAgICAweDM4MThjMDAwLAorICAgIDB4MzgxOGUw
MDAsCisgICAgMHgzODE5MDAwMCwKKyAgICAweDM4MTkyMDAwLAorICAgIDB4MzgxOTQwMDAsCisg
ICAgMHgzODE5NjAwMCwKKyAgICAweDM4MTk4MDAwLAorICAgIDB4MzgxOWEwMDAsCisgICAgMHgz
ODE5YzAwMCwKKyAgICAweDM4MTllMDAwLAorICAgIDB4MzgxYTAwMDAsCisgICAgMHgzODFhMjAw
MCwKKyAgICAweDM4MWE0MDAwLAorICAgIDB4MzgxYTYwMDAsCisgICAgMHgzODFhODAwMCwKKyAg
ICAweDM4MWFhMDAwLAorICAgIDB4MzgxYWMwMDAsCisgICAgMHgzODFhZTAwMCwKKyAgICAweDM4
MWIwMDAwLAorICAgIDB4MzgxYjIwMDAsCisgICAgMHgzODFiNDAwMCwKKyAgICAweDM4MWI2MDAw
LAorICAgIDB4MzgxYjgwMDAsCisgICAgMHgzODFiYTAwMCwKKyAgICAweDM4MWJjMDAwLAorICAg
IDB4MzgxYmUwMDAsCisgICAgMHgzODFjMDAwMCwKKyAgICAweDM4MWMyMDAwLAorICAgIDB4Mzgx
YzQwMDAsCisgICAgMHgzODFjNjAwMCwKKyAgICAweDM4MWM4MDAwLAorICAgIDB4MzgxY2EwMDAs
CisgICAgMHgzODFjYzAwMCwKKyAgICAweDM4MWNlMDAwLAorICAgIDB4MzgxZDAwMDAsCisgICAg
MHgzODFkMjAwMCwKKyAgICAweDM4MWQ0MDAwLAorICAgIDB4MzgxZDYwMDAsCisgICAgMHgzODFk
ODAwMCwKKyAgICAweDM4MWRhMDAwLAorICAgIDB4MzgxZGMwMDAsCisgICAgMHgzODFkZTAwMCwK
KyAgICAweDM4MWUwMDAwLAorICAgIDB4MzgxZTIwMDAsCisgICAgMHgzODFlNDAwMCwKKyAgICAw
eDM4MWU2MDAwLAorICAgIDB4MzgxZTgwMDAsCisgICAgMHgzODFlYTAwMCwKKyAgICAweDM4MWVj
MDAwLAorICAgIDB4MzgxZWUwMDAsCisgICAgMHgzODFmMDAwMCwKKyAgICAweDM4MWYyMDAwLAor
ICAgIDB4MzgxZjQwMDAsCisgICAgMHgzODFmNjAwMCwKKyAgICAweDM4MWY4MDAwLAorICAgIDB4
MzgxZmEwMDAsCisgICAgMHgzODFmYzAwMCwKKyAgICAweDM4MWZlMDAwLAorICAgIDB4MzgyMDAw
MDAsCisgICAgMHgzODIwMjAwMCwKKyAgICAweDM4MjA0MDAwLAorICAgIDB4MzgyMDYwMDAsCisg
ICAgMHgzODIwODAwMCwKKyAgICAweDM4MjBhMDAwLAorICAgIDB4MzgyMGMwMDAsCisgICAgMHgz
ODIwZTAwMCwKKyAgICAweDM4MjEwMDAwLAorICAgIDB4MzgyMTIwMDAsCisgICAgMHgzODIxNDAw
MCwKKyAgICAweDM4MjE2MDAwLAorICAgIDB4MzgyMTgwMDAsCisgICAgMHgzODIxYTAwMCwKKyAg
ICAweDM4MjFjMDAwLAorICAgIDB4MzgyMWUwMDAsCisgICAgMHgzODIyMDAwMCwKKyAgICAweDM4
MjIyMDAwLAorICAgIDB4MzgyMjQwMDAsCisgICAgMHgzODIyNjAwMCwKKyAgICAweDM4MjI4MDAw
LAorICAgIDB4MzgyMmEwMDAsCisgICAgMHgzODIyYzAwMCwKKyAgICAweDM4MjJlMDAwLAorICAg
IDB4MzgyMzAwMDAsCisgICAgMHgzODIzMjAwMCwKKyAgICAweDM4MjM0MDAwLAorICAgIDB4Mzgy
MzYwMDAsCisgICAgMHgzODIzODAwMCwKKyAgICAweDM4MjNhMDAwLAorICAgIDB4MzgyM2MwMDAs
CisgICAgMHgzODIzZTAwMCwKKyAgICAweDM4MjQwMDAwLAorICAgIDB4MzgyNDIwMDAsCisgICAg
MHgzODI0NDAwMCwKKyAgICAweDM4MjQ2MDAwLAorICAgIDB4MzgyNDgwMDAsCisgICAgMHgzODI0
YTAwMCwKKyAgICAweDM4MjRjMDAwLAorICAgIDB4MzgyNGUwMDAsCisgICAgMHgzODI1MDAwMCwK
KyAgICAweDM4MjUyMDAwLAorICAgIDB4MzgyNTQwMDAsCisgICAgMHgzODI1NjAwMCwKKyAgICAw
eDM4MjU4MDAwLAorICAgIDB4MzgyNWEwMDAsCisgICAgMHgzODI1YzAwMCwKKyAgICAweDM4MjVl
MDAwLAorICAgIDB4MzgyNjAwMDAsCisgICAgMHgzODI2MjAwMCwKKyAgICAweDM4MjY0MDAwLAor
ICAgIDB4MzgyNjYwMDAsCisgICAgMHgzODI2ODAwMCwKKyAgICAweDM4MjZhMDAwLAorICAgIDB4
MzgyNmMwMDAsCisgICAgMHgzODI2ZTAwMCwKKyAgICAweDM4MjcwMDAwLAorICAgIDB4MzgyNzIw
MDAsCisgICAgMHgzODI3NDAwMCwKKyAgICAweDM4Mjc2MDAwLAorICAgIDB4MzgyNzgwMDAsCisg
ICAgMHgzODI3YTAwMCwKKyAgICAweDM4MjdjMDAwLAorICAgIDB4MzgyN2UwMDAsCisgICAgMHgz
ODI4MDAwMCwKKyAgICAweDM4MjgyMDAwLAorICAgIDB4MzgyODQwMDAsCisgICAgMHgzODI4NjAw
MCwKKyAgICAweDM4Mjg4MDAwLAorICAgIDB4MzgyOGEwMDAsCisgICAgMHgzODI4YzAwMCwKKyAg
ICAweDM4MjhlMDAwLAorICAgIDB4MzgyOTAwMDAsCisgICAgMHgzODI5MjAwMCwKKyAgICAweDM4
Mjk0MDAwLAorICAgIDB4MzgyOTYwMDAsCisgICAgMHgzODI5ODAwMCwKKyAgICAweDM4MjlhMDAw
LAorICAgIDB4MzgyOWMwMDAsCisgICAgMHgzODI5ZTAwMCwKKyAgICAweDM4MmEwMDAwLAorICAg
IDB4MzgyYTIwMDAsCisgICAgMHgzODJhNDAwMCwKKyAgICAweDM4MmE2MDAwLAorICAgIDB4Mzgy
YTgwMDAsCisgICAgMHgzODJhYTAwMCwKKyAgICAweDM4MmFjMDAwLAorICAgIDB4MzgyYWUwMDAs
CisgICAgMHgzODJiMDAwMCwKKyAgICAweDM4MmIyMDAwLAorICAgIDB4MzgyYjQwMDAsCisgICAg
MHgzODJiNjAwMCwKKyAgICAweDM4MmI4MDAwLAorICAgIDB4MzgyYmEwMDAsCisgICAgMHgzODJi
YzAwMCwKKyAgICAweDM4MmJlMDAwLAorICAgIDB4MzgyYzAwMDAsCisgICAgMHgzODJjMjAwMCwK
KyAgICAweDM4MmM0MDAwLAorICAgIDB4MzgyYzYwMDAsCisgICAgMHgzODJjODAwMCwKKyAgICAw
eDM4MmNhMDAwLAorICAgIDB4MzgyY2MwMDAsCisgICAgMHgzODJjZTAwMCwKKyAgICAweDM4MmQw
MDAwLAorICAgIDB4MzgyZDIwMDAsCisgICAgMHgzODJkNDAwMCwKKyAgICAweDM4MmQ2MDAwLAor
ICAgIDB4MzgyZDgwMDAsCisgICAgMHgzODJkYTAwMCwKKyAgICAweDM4MmRjMDAwLAorICAgIDB4
MzgyZGUwMDAsCisgICAgMHgzODJlMDAwMCwKKyAgICAweDM4MmUyMDAwLAorICAgIDB4MzgyZTQw
MDAsCisgICAgMHgzODJlNjAwMCwKKyAgICAweDM4MmU4MDAwLAorICAgIDB4MzgyZWEwMDAsCisg
ICAgMHgzODJlYzAwMCwKKyAgICAweDM4MmVlMDAwLAorICAgIDB4MzgyZjAwMDAsCisgICAgMHgz
ODJmMjAwMCwKKyAgICAweDM4MmY0MDAwLAorICAgIDB4MzgyZjYwMDAsCisgICAgMHgzODJmODAw
MCwKKyAgICAweDM4MmZhMDAwLAorICAgIDB4MzgyZmMwMDAsCisgICAgMHgzODJmZTAwMCwKKyAg
ICAweDM4MzAwMDAwLAorICAgIDB4MzgzMDIwMDAsCisgICAgMHgzODMwNDAwMCwKKyAgICAweDM4
MzA2MDAwLAorICAgIDB4MzgzMDgwMDAsCisgICAgMHgzODMwYTAwMCwKKyAgICAweDM4MzBjMDAw
LAorICAgIDB4MzgzMGUwMDAsCisgICAgMHgzODMxMDAwMCwKKyAgICAweDM4MzEyMDAwLAorICAg
IDB4MzgzMTQwMDAsCisgICAgMHgzODMxNjAwMCwKKyAgICAweDM4MzE4MDAwLAorICAgIDB4Mzgz
MWEwMDAsCisgICAgMHgzODMxYzAwMCwKKyAgICAweDM4MzFlMDAwLAorICAgIDB4MzgzMjAwMDAs
CisgICAgMHgzODMyMjAwMCwKKyAgICAweDM4MzI0MDAwLAorICAgIDB4MzgzMjYwMDAsCisgICAg
MHgzODMyODAwMCwKKyAgICAweDM4MzJhMDAwLAorICAgIDB4MzgzMmMwMDAsCisgICAgMHgzODMy
ZTAwMCwKKyAgICAweDM4MzMwMDAwLAorICAgIDB4MzgzMzIwMDAsCisgICAgMHgzODMzNDAwMCwK
KyAgICAweDM4MzM2MDAwLAorICAgIDB4MzgzMzgwMDAsCisgICAgMHgzODMzYTAwMCwKKyAgICAw
eDM4MzNjMDAwLAorICAgIDB4MzgzM2UwMDAsCisgICAgMHgzODM0MDAwMCwKKyAgICAweDM4MzQy
MDAwLAorICAgIDB4MzgzNDQwMDAsCisgICAgMHgzODM0NjAwMCwKKyAgICAweDM4MzQ4MDAwLAor
ICAgIDB4MzgzNGEwMDAsCisgICAgMHgzODM0YzAwMCwKKyAgICAweDM4MzRlMDAwLAorICAgIDB4
MzgzNTAwMDAsCisgICAgMHgzODM1MjAwMCwKKyAgICAweDM4MzU0MDAwLAorICAgIDB4MzgzNTYw
MDAsCisgICAgMHgzODM1ODAwMCwKKyAgICAweDM4MzVhMDAwLAorICAgIDB4MzgzNWMwMDAsCisg
ICAgMHgzODM1ZTAwMCwKKyAgICAweDM4MzYwMDAwLAorICAgIDB4MzgzNjIwMDAsCisgICAgMHgz
ODM2NDAwMCwKKyAgICAweDM4MzY2MDAwLAorICAgIDB4MzgzNjgwMDAsCisgICAgMHgzODM2YTAw
MCwKKyAgICAweDM4MzZjMDAwLAorICAgIDB4MzgzNmUwMDAsCisgICAgMHgzODM3MDAwMCwKKyAg
ICAweDM4MzcyMDAwLAorICAgIDB4MzgzNzQwMDAsCisgICAgMHgzODM3NjAwMCwKKyAgICAweDM4
Mzc4MDAwLAorICAgIDB4MzgzN2EwMDAsCisgICAgMHgzODM3YzAwMCwKKyAgICAweDM4MzdlMDAw
LAorICAgIDB4MzgzODAwMDAsCisgICAgMHgzODM4MjAwMCwKKyAgICAweDM4Mzg0MDAwLAorICAg
IDB4MzgzODYwMDAsCisgICAgMHgzODM4ODAwMCwKKyAgICAweDM4MzhhMDAwLAorICAgIDB4Mzgz
OGMwMDAsCisgICAgMHgzODM4ZTAwMCwKKyAgICAweDM4MzkwMDAwLAorICAgIDB4MzgzOTIwMDAs
CisgICAgMHgzODM5NDAwMCwKKyAgICAweDM4Mzk2MDAwLAorICAgIDB4MzgzOTgwMDAsCisgICAg
MHgzODM5YTAwMCwKKyAgICAweDM4MzljMDAwLAorICAgIDB4MzgzOWUwMDAsCisgICAgMHgzODNh
MDAwMCwKKyAgICAweDM4M2EyMDAwLAorICAgIDB4MzgzYTQwMDAsCisgICAgMHgzODNhNjAwMCwK
KyAgICAweDM4M2E4MDAwLAorICAgIDB4MzgzYWEwMDAsCisgICAgMHgzODNhYzAwMCwKKyAgICAw
eDM4M2FlMDAwLAorICAgIDB4MzgzYjAwMDAsCisgICAgMHgzODNiMjAwMCwKKyAgICAweDM4M2I0
MDAwLAorICAgIDB4MzgzYjYwMDAsCisgICAgMHgzODNiODAwMCwKKyAgICAweDM4M2JhMDAwLAor
ICAgIDB4MzgzYmMwMDAsCisgICAgMHgzODNiZTAwMCwKKyAgICAweDM4M2MwMDAwLAorICAgIDB4
MzgzYzIwMDAsCisgICAgMHgzODNjNDAwMCwKKyAgICAweDM4M2M2MDAwLAorICAgIDB4MzgzYzgw
MDAsCisgICAgMHgzODNjYTAwMCwKKyAgICAweDM4M2NjMDAwLAorICAgIDB4MzgzY2UwMDAsCisg
ICAgMHgzODNkMDAwMCwKKyAgICAweDM4M2QyMDAwLAorICAgIDB4MzgzZDQwMDAsCisgICAgMHgz
ODNkNjAwMCwKKyAgICAweDM4M2Q4MDAwLAorICAgIDB4MzgzZGEwMDAsCisgICAgMHgzODNkYzAw
MCwKKyAgICAweDM4M2RlMDAwLAorICAgIDB4MzgzZTAwMDAsCisgICAgMHgzODNlMjAwMCwKKyAg
ICAweDM4M2U0MDAwLAorICAgIDB4MzgzZTYwMDAsCisgICAgMHgzODNlODAwMCwKKyAgICAweDM4
M2VhMDAwLAorICAgIDB4MzgzZWMwMDAsCisgICAgMHgzODNlZTAwMCwKKyAgICAweDM4M2YwMDAw
LAorICAgIDB4MzgzZjIwMDAsCisgICAgMHgzODNmNDAwMCwKKyAgICAweDM4M2Y2MDAwLAorICAg
IDB4MzgzZjgwMDAsCisgICAgMHgzODNmYTAwMCwKKyAgICAweDM4M2ZjMDAwLAorICAgIDB4Mzgz
ZmUwMDAsCisgICAgMHgzODQwMDAwMCwKKyAgICAweDM4NDAyMDAwLAorICAgIDB4Mzg0MDQwMDAs
CisgICAgMHgzODQwNjAwMCwKKyAgICAweDM4NDA4MDAwLAorICAgIDB4Mzg0MGEwMDAsCisgICAg
MHgzODQwYzAwMCwKKyAgICAweDM4NDBlMDAwLAorICAgIDB4Mzg0MTAwMDAsCisgICAgMHgzODQx
MjAwMCwKKyAgICAweDM4NDE0MDAwLAorICAgIDB4Mzg0MTYwMDAsCisgICAgMHgzODQxODAwMCwK
KyAgICAweDM4NDFhMDAwLAorICAgIDB4Mzg0MWMwMDAsCisgICAgMHgzODQxZTAwMCwKKyAgICAw
eDM4NDIwMDAwLAorICAgIDB4Mzg0MjIwMDAsCisgICAgMHgzODQyNDAwMCwKKyAgICAweDM4NDI2
MDAwLAorICAgIDB4Mzg0MjgwMDAsCisgICAgMHgzODQyYTAwMCwKKyAgICAweDM4NDJjMDAwLAor
ICAgIDB4Mzg0MmUwMDAsCisgICAgMHgzODQzMDAwMCwKKyAgICAweDM4NDMyMDAwLAorICAgIDB4
Mzg0MzQwMDAsCisgICAgMHgzODQzNjAwMCwKKyAgICAweDM4NDM4MDAwLAorICAgIDB4Mzg0M2Ew
MDAsCisgICAgMHgzODQzYzAwMCwKKyAgICAweDM4NDNlMDAwLAorICAgIDB4Mzg0NDAwMDAsCisg
ICAgMHgzODQ0MjAwMCwKKyAgICAweDM4NDQ0MDAwLAorICAgIDB4Mzg0NDYwMDAsCisgICAgMHgz
ODQ0ODAwMCwKKyAgICAweDM4NDRhMDAwLAorICAgIDB4Mzg0NGMwMDAsCisgICAgMHgzODQ0ZTAw
MCwKKyAgICAweDM4NDUwMDAwLAorICAgIDB4Mzg0NTIwMDAsCisgICAgMHgzODQ1NDAwMCwKKyAg
ICAweDM4NDU2MDAwLAorICAgIDB4Mzg0NTgwMDAsCisgICAgMHgzODQ1YTAwMCwKKyAgICAweDM4
NDVjMDAwLAorICAgIDB4Mzg0NWUwMDAsCisgICAgMHgzODQ2MDAwMCwKKyAgICAweDM4NDYyMDAw
LAorICAgIDB4Mzg0NjQwMDAsCisgICAgMHgzODQ2NjAwMCwKKyAgICAweDM4NDY4MDAwLAorICAg
IDB4Mzg0NmEwMDAsCisgICAgMHgzODQ2YzAwMCwKKyAgICAweDM4NDZlMDAwLAorICAgIDB4Mzg0
NzAwMDAsCisgICAgMHgzODQ3MjAwMCwKKyAgICAweDM4NDc0MDAwLAorICAgIDB4Mzg0NzYwMDAs
CisgICAgMHgzODQ3ODAwMCwKKyAgICAweDM4NDdhMDAwLAorICAgIDB4Mzg0N2MwMDAsCisgICAg
MHgzODQ3ZTAwMCwKKyAgICAweDM4NDgwMDAwLAorICAgIDB4Mzg0ODIwMDAsCisgICAgMHgzODQ4
NDAwMCwKKyAgICAweDM4NDg2MDAwLAorICAgIDB4Mzg0ODgwMDAsCisgICAgMHgzODQ4YTAwMCwK
KyAgICAweDM4NDhjMDAwLAorICAgIDB4Mzg0OGUwMDAsCisgICAgMHgzODQ5MDAwMCwKKyAgICAw
eDM4NDkyMDAwLAorICAgIDB4Mzg0OTQwMDAsCisgICAgMHgzODQ5NjAwMCwKKyAgICAweDM4NDk4
MDAwLAorICAgIDB4Mzg0OWEwMDAsCisgICAgMHgzODQ5YzAwMCwKKyAgICAweDM4NDllMDAwLAor
ICAgIDB4Mzg0YTAwMDAsCisgICAgMHgzODRhMjAwMCwKKyAgICAweDM4NGE0MDAwLAorICAgIDB4
Mzg0YTYwMDAsCisgICAgMHgzODRhODAwMCwKKyAgICAweDM4NGFhMDAwLAorICAgIDB4Mzg0YWMw
MDAsCisgICAgMHgzODRhZTAwMCwKKyAgICAweDM4NGIwMDAwLAorICAgIDB4Mzg0YjIwMDAsCisg
ICAgMHgzODRiNDAwMCwKKyAgICAweDM4NGI2MDAwLAorICAgIDB4Mzg0YjgwMDAsCisgICAgMHgz
ODRiYTAwMCwKKyAgICAweDM4NGJjMDAwLAorICAgIDB4Mzg0YmUwMDAsCisgICAgMHgzODRjMDAw
MCwKKyAgICAweDM4NGMyMDAwLAorICAgIDB4Mzg0YzQwMDAsCisgICAgMHgzODRjNjAwMCwKKyAg
ICAweDM4NGM4MDAwLAorICAgIDB4Mzg0Y2EwMDAsCisgICAgMHgzODRjYzAwMCwKKyAgICAweDM4
NGNlMDAwLAorICAgIDB4Mzg0ZDAwMDAsCisgICAgMHgzODRkMjAwMCwKKyAgICAweDM4NGQ0MDAw
LAorICAgIDB4Mzg0ZDYwMDAsCisgICAgMHgzODRkODAwMCwKKyAgICAweDM4NGRhMDAwLAorICAg
IDB4Mzg0ZGMwMDAsCisgICAgMHgzODRkZTAwMCwKKyAgICAweDM4NGUwMDAwLAorICAgIDB4Mzg0
ZTIwMDAsCisgICAgMHgzODRlNDAwMCwKKyAgICAweDM4NGU2MDAwLAorICAgIDB4Mzg0ZTgwMDAs
CisgICAgMHgzODRlYTAwMCwKKyAgICAweDM4NGVjMDAwLAorICAgIDB4Mzg0ZWUwMDAsCisgICAg
MHgzODRmMDAwMCwKKyAgICAweDM4NGYyMDAwLAorICAgIDB4Mzg0ZjQwMDAsCisgICAgMHgzODRm
NjAwMCwKKyAgICAweDM4NGY4MDAwLAorICAgIDB4Mzg0ZmEwMDAsCisgICAgMHgzODRmYzAwMCwK
KyAgICAweDM4NGZlMDAwLAorICAgIDB4Mzg1MDAwMDAsCisgICAgMHgzODUwMjAwMCwKKyAgICAw
eDM4NTA0MDAwLAorICAgIDB4Mzg1MDYwMDAsCisgICAgMHgzODUwODAwMCwKKyAgICAweDM4NTBh
MDAwLAorICAgIDB4Mzg1MGMwMDAsCisgICAgMHgzODUwZTAwMCwKKyAgICAweDM4NTEwMDAwLAor
ICAgIDB4Mzg1MTIwMDAsCisgICAgMHgzODUxNDAwMCwKKyAgICAweDM4NTE2MDAwLAorICAgIDB4
Mzg1MTgwMDAsCisgICAgMHgzODUxYTAwMCwKKyAgICAweDM4NTFjMDAwLAorICAgIDB4Mzg1MWUw
MDAsCisgICAgMHgzODUyMDAwMCwKKyAgICAweDM4NTIyMDAwLAorICAgIDB4Mzg1MjQwMDAsCisg
ICAgMHgzODUyNjAwMCwKKyAgICAweDM4NTI4MDAwLAorICAgIDB4Mzg1MmEwMDAsCisgICAgMHgz
ODUyYzAwMCwKKyAgICAweDM4NTJlMDAwLAorICAgIDB4Mzg1MzAwMDAsCisgICAgMHgzODUzMjAw
MCwKKyAgICAweDM4NTM0MDAwLAorICAgIDB4Mzg1MzYwMDAsCisgICAgMHgzODUzODAwMCwKKyAg
ICAweDM4NTNhMDAwLAorICAgIDB4Mzg1M2MwMDAsCisgICAgMHgzODUzZTAwMCwKKyAgICAweDM4
NTQwMDAwLAorICAgIDB4Mzg1NDIwMDAsCisgICAgMHgzODU0NDAwMCwKKyAgICAweDM4NTQ2MDAw
LAorICAgIDB4Mzg1NDgwMDAsCisgICAgMHgzODU0YTAwMCwKKyAgICAweDM4NTRjMDAwLAorICAg
IDB4Mzg1NGUwMDAsCisgICAgMHgzODU1MDAwMCwKKyAgICAweDM4NTUyMDAwLAorICAgIDB4Mzg1
NTQwMDAsCisgICAgMHgzODU1NjAwMCwKKyAgICAweDM4NTU4MDAwLAorICAgIDB4Mzg1NWEwMDAs
CisgICAgMHgzODU1YzAwMCwKKyAgICAweDM4NTVlMDAwLAorICAgIDB4Mzg1NjAwMDAsCisgICAg
MHgzODU2MjAwMCwKKyAgICAweDM4NTY0MDAwLAorICAgIDB4Mzg1NjYwMDAsCisgICAgMHgzODU2
ODAwMCwKKyAgICAweDM4NTZhMDAwLAorICAgIDB4Mzg1NmMwMDAsCisgICAgMHgzODU2ZTAwMCwK
KyAgICAweDM4NTcwMDAwLAorICAgIDB4Mzg1NzIwMDAsCisgICAgMHgzODU3NDAwMCwKKyAgICAw
eDM4NTc2MDAwLAorICAgIDB4Mzg1NzgwMDAsCisgICAgMHgzODU3YTAwMCwKKyAgICAweDM4NTdj
MDAwLAorICAgIDB4Mzg1N2UwMDAsCisgICAgMHgzODU4MDAwMCwKKyAgICAweDM4NTgyMDAwLAor
ICAgIDB4Mzg1ODQwMDAsCisgICAgMHgzODU4NjAwMCwKKyAgICAweDM4NTg4MDAwLAorICAgIDB4
Mzg1OGEwMDAsCisgICAgMHgzODU4YzAwMCwKKyAgICAweDM4NThlMDAwLAorICAgIDB4Mzg1OTAw
MDAsCisgICAgMHgzODU5MjAwMCwKKyAgICAweDM4NTk0MDAwLAorICAgIDB4Mzg1OTYwMDAsCisg
ICAgMHgzODU5ODAwMCwKKyAgICAweDM4NTlhMDAwLAorICAgIDB4Mzg1OWMwMDAsCisgICAgMHgz
ODU5ZTAwMCwKKyAgICAweDM4NWEwMDAwLAorICAgIDB4Mzg1YTIwMDAsCisgICAgMHgzODVhNDAw
MCwKKyAgICAweDM4NWE2MDAwLAorICAgIDB4Mzg1YTgwMDAsCisgICAgMHgzODVhYTAwMCwKKyAg
ICAweDM4NWFjMDAwLAorICAgIDB4Mzg1YWUwMDAsCisgICAgMHgzODViMDAwMCwKKyAgICAweDM4
NWIyMDAwLAorICAgIDB4Mzg1YjQwMDAsCisgICAgMHgzODViNjAwMCwKKyAgICAweDM4NWI4MDAw
LAorICAgIDB4Mzg1YmEwMDAsCisgICAgMHgzODViYzAwMCwKKyAgICAweDM4NWJlMDAwLAorICAg
IDB4Mzg1YzAwMDAsCisgICAgMHgzODVjMjAwMCwKKyAgICAweDM4NWM0MDAwLAorICAgIDB4Mzg1
YzYwMDAsCisgICAgMHgzODVjODAwMCwKKyAgICAweDM4NWNhMDAwLAorICAgIDB4Mzg1Y2MwMDAs
CisgICAgMHgzODVjZTAwMCwKKyAgICAweDM4NWQwMDAwLAorICAgIDB4Mzg1ZDIwMDAsCisgICAg
MHgzODVkNDAwMCwKKyAgICAweDM4NWQ2MDAwLAorICAgIDB4Mzg1ZDgwMDAsCisgICAgMHgzODVk
YTAwMCwKKyAgICAweDM4NWRjMDAwLAorICAgIDB4Mzg1ZGUwMDAsCisgICAgMHgzODVlMDAwMCwK
KyAgICAweDM4NWUyMDAwLAorICAgIDB4Mzg1ZTQwMDAsCisgICAgMHgzODVlNjAwMCwKKyAgICAw
eDM4NWU4MDAwLAorICAgIDB4Mzg1ZWEwMDAsCisgICAgMHgzODVlYzAwMCwKKyAgICAweDM4NWVl
MDAwLAorICAgIDB4Mzg1ZjAwMDAsCisgICAgMHgzODVmMjAwMCwKKyAgICAweDM4NWY0MDAwLAor
ICAgIDB4Mzg1ZjYwMDAsCisgICAgMHgzODVmODAwMCwKKyAgICAweDM4NWZhMDAwLAorICAgIDB4
Mzg1ZmMwMDAsCisgICAgMHgzODVmZTAwMCwKKyAgICAweDM4NjAwMDAwLAorICAgIDB4Mzg2MDIw
MDAsCisgICAgMHgzODYwNDAwMCwKKyAgICAweDM4NjA2MDAwLAorICAgIDB4Mzg2MDgwMDAsCisg
ICAgMHgzODYwYTAwMCwKKyAgICAweDM4NjBjMDAwLAorICAgIDB4Mzg2MGUwMDAsCisgICAgMHgz
ODYxMDAwMCwKKyAgICAweDM4NjEyMDAwLAorICAgIDB4Mzg2MTQwMDAsCisgICAgMHgzODYxNjAw
MCwKKyAgICAweDM4NjE4MDAwLAorICAgIDB4Mzg2MWEwMDAsCisgICAgMHgzODYxYzAwMCwKKyAg
ICAweDM4NjFlMDAwLAorICAgIDB4Mzg2MjAwMDAsCisgICAgMHgzODYyMjAwMCwKKyAgICAweDM4
NjI0MDAwLAorICAgIDB4Mzg2MjYwMDAsCisgICAgMHgzODYyODAwMCwKKyAgICAweDM4NjJhMDAw
LAorICAgIDB4Mzg2MmMwMDAsCisgICAgMHgzODYyZTAwMCwKKyAgICAweDM4NjMwMDAwLAorICAg
IDB4Mzg2MzIwMDAsCisgICAgMHgzODYzNDAwMCwKKyAgICAweDM4NjM2MDAwLAorICAgIDB4Mzg2
MzgwMDAsCisgICAgMHgzODYzYTAwMCwKKyAgICAweDM4NjNjMDAwLAorICAgIDB4Mzg2M2UwMDAs
CisgICAgMHgzODY0MDAwMCwKKyAgICAweDM4NjQyMDAwLAorICAgIDB4Mzg2NDQwMDAsCisgICAg
MHgzODY0NjAwMCwKKyAgICAweDM4NjQ4MDAwLAorICAgIDB4Mzg2NGEwMDAsCisgICAgMHgzODY0
YzAwMCwKKyAgICAweDM4NjRlMDAwLAorICAgIDB4Mzg2NTAwMDAsCisgICAgMHgzODY1MjAwMCwK
KyAgICAweDM4NjU0MDAwLAorICAgIDB4Mzg2NTYwMDAsCisgICAgMHgzODY1ODAwMCwKKyAgICAw
eDM4NjVhMDAwLAorICAgIDB4Mzg2NWMwMDAsCisgICAgMHgzODY1ZTAwMCwKKyAgICAweDM4NjYw
MDAwLAorICAgIDB4Mzg2NjIwMDAsCisgICAgMHgzODY2NDAwMCwKKyAgICAweDM4NjY2MDAwLAor
ICAgIDB4Mzg2NjgwMDAsCisgICAgMHgzODY2YTAwMCwKKyAgICAweDM4NjZjMDAwLAorICAgIDB4
Mzg2NmUwMDAsCisgICAgMHgzODY3MDAwMCwKKyAgICAweDM4NjcyMDAwLAorICAgIDB4Mzg2NzQw
MDAsCisgICAgMHgzODY3NjAwMCwKKyAgICAweDM4Njc4MDAwLAorICAgIDB4Mzg2N2EwMDAsCisg
ICAgMHgzODY3YzAwMCwKKyAgICAweDM4NjdlMDAwLAorICAgIDB4Mzg2ODAwMDAsCisgICAgMHgz
ODY4MjAwMCwKKyAgICAweDM4Njg0MDAwLAorICAgIDB4Mzg2ODYwMDAsCisgICAgMHgzODY4ODAw
MCwKKyAgICAweDM4NjhhMDAwLAorICAgIDB4Mzg2OGMwMDAsCisgICAgMHgzODY4ZTAwMCwKKyAg
ICAweDM4NjkwMDAwLAorICAgIDB4Mzg2OTIwMDAsCisgICAgMHgzODY5NDAwMCwKKyAgICAweDM4
Njk2MDAwLAorICAgIDB4Mzg2OTgwMDAsCisgICAgMHgzODY5YTAwMCwKKyAgICAweDM4NjljMDAw
LAorICAgIDB4Mzg2OWUwMDAsCisgICAgMHgzODZhMDAwMCwKKyAgICAweDM4NmEyMDAwLAorICAg
IDB4Mzg2YTQwMDAsCisgICAgMHgzODZhNjAwMCwKKyAgICAweDM4NmE4MDAwLAorICAgIDB4Mzg2
YWEwMDAsCisgICAgMHgzODZhYzAwMCwKKyAgICAweDM4NmFlMDAwLAorICAgIDB4Mzg2YjAwMDAs
CisgICAgMHgzODZiMjAwMCwKKyAgICAweDM4NmI0MDAwLAorICAgIDB4Mzg2YjYwMDAsCisgICAg
MHgzODZiODAwMCwKKyAgICAweDM4NmJhMDAwLAorICAgIDB4Mzg2YmMwMDAsCisgICAgMHgzODZi
ZTAwMCwKKyAgICAweDM4NmMwMDAwLAorICAgIDB4Mzg2YzIwMDAsCisgICAgMHgzODZjNDAwMCwK
KyAgICAweDM4NmM2MDAwLAorICAgIDB4Mzg2YzgwMDAsCisgICAgMHgzODZjYTAwMCwKKyAgICAw
eDM4NmNjMDAwLAorICAgIDB4Mzg2Y2UwMDAsCisgICAgMHgzODZkMDAwMCwKKyAgICAweDM4NmQy
MDAwLAorICAgIDB4Mzg2ZDQwMDAsCisgICAgMHgzODZkNjAwMCwKKyAgICAweDM4NmQ4MDAwLAor
ICAgIDB4Mzg2ZGEwMDAsCisgICAgMHgzODZkYzAwMCwKKyAgICAweDM4NmRlMDAwLAorICAgIDB4
Mzg2ZTAwMDAsCisgICAgMHgzODZlMjAwMCwKKyAgICAweDM4NmU0MDAwLAorICAgIDB4Mzg2ZTYw
MDAsCisgICAgMHgzODZlODAwMCwKKyAgICAweDM4NmVhMDAwLAorICAgIDB4Mzg2ZWMwMDAsCisg
ICAgMHgzODZlZTAwMCwKKyAgICAweDM4NmYwMDAwLAorICAgIDB4Mzg2ZjIwMDAsCisgICAgMHgz
ODZmNDAwMCwKKyAgICAweDM4NmY2MDAwLAorICAgIDB4Mzg2ZjgwMDAsCisgICAgMHgzODZmYTAw
MCwKKyAgICAweDM4NmZjMDAwLAorICAgIDB4Mzg2ZmUwMDAsCisgICAgMHgzODcwMDAwMCwKKyAg
ICAweDM4NzAyMDAwLAorICAgIDB4Mzg3MDQwMDAsCisgICAgMHgzODcwNjAwMCwKKyAgICAweDM4
NzA4MDAwLAorICAgIDB4Mzg3MGEwMDAsCisgICAgMHgzODcwYzAwMCwKKyAgICAweDM4NzBlMDAw
LAorICAgIDB4Mzg3MTAwMDAsCisgICAgMHgzODcxMjAwMCwKKyAgICAweDM4NzE0MDAwLAorICAg
IDB4Mzg3MTYwMDAsCisgICAgMHgzODcxODAwMCwKKyAgICAweDM4NzFhMDAwLAorICAgIDB4Mzg3
MWMwMDAsCisgICAgMHgzODcxZTAwMCwKKyAgICAweDM4NzIwMDAwLAorICAgIDB4Mzg3MjIwMDAs
CisgICAgMHgzODcyNDAwMCwKKyAgICAweDM4NzI2MDAwLAorICAgIDB4Mzg3MjgwMDAsCisgICAg
MHgzODcyYTAwMCwKKyAgICAweDM4NzJjMDAwLAorICAgIDB4Mzg3MmUwMDAsCisgICAgMHgzODcz
MDAwMCwKKyAgICAweDM4NzMyMDAwLAorICAgIDB4Mzg3MzQwMDAsCisgICAgMHgzODczNjAwMCwK
KyAgICAweDM4NzM4MDAwLAorICAgIDB4Mzg3M2EwMDAsCisgICAgMHgzODczYzAwMCwKKyAgICAw
eDM4NzNlMDAwLAorICAgIDB4Mzg3NDAwMDAsCisgICAgMHgzODc0MjAwMCwKKyAgICAweDM4NzQ0
MDAwLAorICAgIDB4Mzg3NDYwMDAsCisgICAgMHgzODc0ODAwMCwKKyAgICAweDM4NzRhMDAwLAor
ICAgIDB4Mzg3NGMwMDAsCisgICAgMHgzODc0ZTAwMCwKKyAgICAweDM4NzUwMDAwLAorICAgIDB4
Mzg3NTIwMDAsCisgICAgMHgzODc1NDAwMCwKKyAgICAweDM4NzU2MDAwLAorICAgIDB4Mzg3NTgw
MDAsCisgICAgMHgzODc1YTAwMCwKKyAgICAweDM4NzVjMDAwLAorICAgIDB4Mzg3NWUwMDAsCisg
ICAgMHgzODc2MDAwMCwKKyAgICAweDM4NzYyMDAwLAorICAgIDB4Mzg3NjQwMDAsCisgICAgMHgz
ODc2NjAwMCwKKyAgICAweDM4NzY4MDAwLAorICAgIDB4Mzg3NmEwMDAsCisgICAgMHgzODc2YzAw
MCwKKyAgICAweDM4NzZlMDAwLAorICAgIDB4Mzg3NzAwMDAsCisgICAgMHgzODc3MjAwMCwKKyAg
ICAweDM4Nzc0MDAwLAorICAgIDB4Mzg3NzYwMDAsCisgICAgMHgzODc3ODAwMCwKKyAgICAweDM4
NzdhMDAwLAorICAgIDB4Mzg3N2MwMDAsCisgICAgMHgzODc3ZTAwMCwKKyAgICAweDM4NzgwMDAw
LAorICAgIDB4Mzg3ODIwMDAsCisgICAgMHgzODc4NDAwMCwKKyAgICAweDM4Nzg2MDAwLAorICAg
IDB4Mzg3ODgwMDAsCisgICAgMHgzODc4YTAwMCwKKyAgICAweDM4NzhjMDAwLAorICAgIDB4Mzg3
OGUwMDAsCisgICAgMHgzODc5MDAwMCwKKyAgICAweDM4NzkyMDAwLAorICAgIDB4Mzg3OTQwMDAs
CisgICAgMHgzODc5NjAwMCwKKyAgICAweDM4Nzk4MDAwLAorICAgIDB4Mzg3OWEwMDAsCisgICAg
MHgzODc5YzAwMCwKKyAgICAweDM4NzllMDAwLAorICAgIDB4Mzg3YTAwMDAsCisgICAgMHgzODdh
MjAwMCwKKyAgICAweDM4N2E0MDAwLAorICAgIDB4Mzg3YTYwMDAsCisgICAgMHgzODdhODAwMCwK
KyAgICAweDM4N2FhMDAwLAorICAgIDB4Mzg3YWMwMDAsCisgICAgMHgzODdhZTAwMCwKKyAgICAw
eDM4N2IwMDAwLAorICAgIDB4Mzg3YjIwMDAsCisgICAgMHgzODdiNDAwMCwKKyAgICAweDM4N2I2
MDAwLAorICAgIDB4Mzg3YjgwMDAsCisgICAgMHgzODdiYTAwMCwKKyAgICAweDM4N2JjMDAwLAor
ICAgIDB4Mzg3YmUwMDAsCisgICAgMHgzODdjMDAwMCwKKyAgICAweDM4N2MyMDAwLAorICAgIDB4
Mzg3YzQwMDAsCisgICAgMHgzODdjNjAwMCwKKyAgICAweDM4N2M4MDAwLAorICAgIDB4Mzg3Y2Ew
MDAsCisgICAgMHgzODdjYzAwMCwKKyAgICAweDM4N2NlMDAwLAorICAgIDB4Mzg3ZDAwMDAsCisg
ICAgMHgzODdkMjAwMCwKKyAgICAweDM4N2Q0MDAwLAorICAgIDB4Mzg3ZDYwMDAsCisgICAgMHgz
ODdkODAwMCwKKyAgICAweDM4N2RhMDAwLAorICAgIDB4Mzg3ZGMwMDAsCisgICAgMHgzODdkZTAw
MCwKKyAgICAweDM4N2UwMDAwLAorICAgIDB4Mzg3ZTIwMDAsCisgICAgMHgzODdlNDAwMCwKKyAg
ICAweDM4N2U2MDAwLAorICAgIDB4Mzg3ZTgwMDAsCisgICAgMHgzODdlYTAwMCwKKyAgICAweDM4
N2VjMDAwLAorICAgIDB4Mzg3ZWUwMDAsCisgICAgMHgzODdmMDAwMCwKKyAgICAweDM4N2YyMDAw
LAorICAgIDB4Mzg3ZjQwMDAsCisgICAgMHgzODdmNjAwMCwKKyAgICAweDM4N2Y4MDAwLAorICAg
IDB4Mzg3ZmEwMDAsCisgICAgMHgzODdmYzAwMCwKKyAgICAweDM4N2ZlMDAwLAorfTsKKworY29u
c3Qgc3RhdGljIHVuc2lnbmVkIGdfZXhwb25lbnRbNjRdID0geworICAgIDB4MDAwMDAwMDAsCisg
ICAgMHgwMDgwMDAwMCwKKyAgICAweDAxMDAwMDAwLAorICAgIDB4MDE4MDAwMDAsCisgICAgMHgw
MjAwMDAwMCwKKyAgICAweDAyODAwMDAwLAorICAgIDB4MDMwMDAwMDAsCisgICAgMHgwMzgwMDAw
MCwKKyAgICAweDA0MDAwMDAwLAorICAgIDB4MDQ4MDAwMDAsCisgICAgMHgwNTAwMDAwMCwKKyAg
ICAweDA1ODAwMDAwLAorICAgIDB4MDYwMDAwMDAsCisgICAgMHgwNjgwMDAwMCwKKyAgICAweDA3
MDAwMDAwLAorICAgIDB4MDc4MDAwMDAsCisgICAgMHgwODAwMDAwMCwKKyAgICAweDA4ODAwMDAw
LAorICAgIDB4MDkwMDAwMDAsCisgICAgMHgwOTgwMDAwMCwKKyAgICAweDBhMDAwMDAwLAorICAg
IDB4MGE4MDAwMDAsCisgICAgMHgwYjAwMDAwMCwKKyAgICAweDBiODAwMDAwLAorICAgIDB4MGMw
MDAwMDAsCisgICAgMHgwYzgwMDAwMCwKKyAgICAweDBkMDAwMDAwLAorICAgIDB4MGQ4MDAwMDAs
CisgICAgMHgwZTAwMDAwMCwKKyAgICAweDBlODAwMDAwLAorICAgIDB4MGYwMDAwMDAsCisgICAg
MHg0NzgwMDAwMCwKKyAgICAweDgwMDAwMDAwLAorICAgIDB4ODA4MDAwMDAsCisgICAgMHg4MTAw
MDAwMCwKKyAgICAweDgxODAwMDAwLAorICAgIDB4ODIwMDAwMDAsCisgICAgMHg4MjgwMDAwMCwK
KyAgICAweDgzMDAwMDAwLAorICAgIDB4ODM4MDAwMDAsCisgICAgMHg4NDAwMDAwMCwKKyAgICAw
eDg0ODAwMDAwLAorICAgIDB4ODUwMDAwMDAsCisgICAgMHg4NTgwMDAwMCwKKyAgICAweDg2MDAw
MDAwLAorICAgIDB4ODY4MDAwMDAsCisgICAgMHg4NzAwMDAwMCwKKyAgICAweDg3ODAwMDAwLAor
ICAgIDB4ODgwMDAwMDAsCisgICAgMHg4ODgwMDAwMCwKKyAgICAweDg5MDAwMDAwLAorICAgIDB4
ODk4MDAwMDAsCisgICAgMHg4YTAwMDAwMCwKKyAgICAweDhhODAwMDAwLAorICAgIDB4OGIwMDAw
MDAsCisgICAgMHg4YjgwMDAwMCwKKyAgICAweDhjMDAwMDAwLAorICAgIDB4OGM4MDAwMDAsCisg
ICAgMHg4ZDAwMDAwMCwKKyAgICAweDhkODAwMDAwLAorICAgIDB4OGUwMDAwMDAsCisgICAgMHg4
ZTgwMDAwMCwKKyAgICAweDhmMDAwMDAwLAorICAgIDB4Yzc4MDAwMDAsCit9OworCitjb25zdCBz
dGF0aWMgdW5zaWduZWQgZ19vZmZzZXRbNjRdID0geworICAgIDB4MDAwMDAwMDAsCisgICAgMHgw
MDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQw
MCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAg
ICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAw
MDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAw
LAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAg
IDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAw
MDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAs
CisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAg
MHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAw
MDQwMCwKKyAgICAweDAwMDAwMDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwK
KyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAw
eDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAw
NDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAor
ICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4
MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0
MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisg
ICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgw
MDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQw
MCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCit9OworCitmbG9hdCBmbG9hdDE2
VG9GbG9hdDMyKHVuc2lnbmVkIHNob3J0IGgpCit7CisgICAgdW5zaWduZWQgaTMyID0gZ19tYW50
aXNzYVtnX29mZnNldFtoID4+IDEwXSArIChoICYgMHgzZmYpXSArIGdfZXhwb25lbnRbaCA+PiAx
MF07CisgICAgcmV0dXJuICooZmxvYXQqKSAmaTMyOworfQorfQorCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0Zsb2F0MTZUb0Zsb2F0MzIucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GbG9hdDE2VG9GbG9h
dDMyLnB5CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9GbG9hdDE2VG9GbG9hdDMyLnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisj
IENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisjCisKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIGEgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyAx
Ni1iaXQgcHJlY2lzaW9uIGZsb2F0aW5nCisjIHBvaW50IG51bWJlcnMgdG8gMzItYml0LgorIyBJ
dCBpcyBiYXNlZCBvbiBmdHA6Ly9mdHAuZm94LXRvb2xraXQub3JnL3B1Yi9mYXN0aGFsZmZsb2F0
Y29udmVyc2lvbi5wZGYuCisKK2RlZiBjb252ZXJ0TWFudGlzc2EoaSk6CisgICAgaWYgaSA9PSAw
OgorICAgICAgICByZXR1cm4gMAorICAgIGVsaWYgaSA8IDEwMjQ6CisgICAgICAgIG0gPSBpIDw8
IDEzCisgICAgICAgIGUgPSAwCisgICAgICAgIHdoaWxlIG5vdCAobSAmIDB4MDA4MDAwMDApOgor
ICAgICAgICAgICAgZSAtPSAweDAwODAwMDAwCisgICAgICAgICAgICBtID0gbSA8PCAxCisgICAg
ICAgIG0gJj0gfjB4MDA4MDAwMDAKKyAgICAgICAgZSArPSAweDM4ODAwMDAwCisgICAgICAgIHJl
dHVybiBtIHwgZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAweDM4MDAwMDAwICsgKChpIC0g
MTAyNCkgPDwgMTMpCisKK2RlZiBjb252ZXJ0RXhwb25lbnQoaSk6CisgICAgaWYgaSA9PSAwOgor
ICAgICAgICByZXR1cm4gMAorICAgIGVsaWYgaSBpbiByYW5nZSgxLCAzMSk6CisgICAgICAgIHJl
dHVybiBpIDw8IDIzCisgICAgZWxpZiBpID09IDMxOgorICAgICAgICByZXR1cm4gMHg0NzgwMDAw
MAorICAgIGVsaWYgaSA9PSAzMjoKKyAgICAgICAgcmV0dXJuIDB4ODAwMDAwMDAKKyAgICBlbGlm
IGkgaW4gcmFuZ2UoMzMsIDYzKToKKyAgICAgICAgcmV0dXJuIDB4ODAwMDAwMDAgKyAoKGkgLSAz
MikgPDwgMjMpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIDB4Qzc4MDAwMDAKKworZGVmIGNv
bnZlcnRPZmZzZXQoaSk6CisgICAgaWYgaSA9PSAwIG9yIGkgPT0gMzI6CisgICAgICAgIHJldHVy
biAwCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIDEwMjQKKworcHJpbnQgIiIiLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC4KKworbmFtZXNw
YWNlIGdsCit7CisiIiIKKworcHJpbnQgImNvbnN0IHN0YXRpYyB1bnNpZ25lZCBnX21hbnRpc3Nh
WzIwNDhdID0geyIKK2ZvciBpIGluIHJhbmdlKDAsIDIwNDgpOgorICAgIHByaW50ICIgICAgJSMw
MTB4LCIgJSBjb252ZXJ0TWFudGlzc2EoaSkKK3ByaW50ICJ9O1xuIgorCitwcmludCAiY29uc3Qg
c3RhdGljIHVuc2lnbmVkIGdfZXhwb25lbnRbNjRdID0geyIKK2ZvciBpIGluIHJhbmdlKDAsIDY0
KToKKyAgICBwcmludCAiICAgICUjMDEweCwiICUgY29udmVydEV4cG9uZW50KGkpCitwcmludCAi
fTtcbiIKKworcHJpbnQgImNvbnN0IHN0YXRpYyB1bnNpZ25lZCBnX29mZnNldFs2NF0gPSB7Igor
Zm9yIGkgaW4gcmFuZ2UoMCwgNjQpOgorICAgIHByaW50ICIgICAgJSMwMTB4LCIgJSBjb252ZXJ0
T2Zmc2V0KGkpCitwcmludCAifTtcbiIKKworcHJpbnQgIiIiZmxvYXQgZmxvYXQxNlRvRmxvYXQz
Mih1bnNpZ25lZCBzaG9ydCBoKQoreworICAgIHVuc2lnbmVkIGkzMiA9IGdfbWFudGlzc2FbZ19v
ZmZzZXRbaCA+PiAxMF0gKyAoaCAmIDB4M2ZmKV0gKyBnX2V4cG9uZW50W2ggPj4gMTBdOworICAg
IHJldHVybiAqKGZsb2F0KikgJmkzMjsKK30KK30KKyIiIgpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZyYW1lYnVm
ZmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MDMgQEAKKyNpbmNsdWRlICJwcmVjb21w
aWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRnJhbWVidWZmZXIuY3BwOiBJbXBsZW1l
bnRzIHRoZSBnbDo6RnJhbWVidWZmZXIgY2xhc3MuIEltcGxlbWVudHMgR0wgZnJhbWVidWZmZXIK
Ky8vIG9iamVjdHMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRd
IHNlY3Rpb24gNC40IHBhZ2UgMTA1LgorCisjaW5jbHVkZSAibGliR0xFU3YyL0ZyYW1lYnVmZmVy
LmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi91
dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvVGV4dHVyZS5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9Db250ZXh0LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVy
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgorCituYW1lc3BhY2UgZ2wK
K3sKKworRnJhbWVidWZmZXI6OkZyYW1lYnVmZmVyKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIpCisg
ICAgOiBtUmVuZGVyZXIocmVuZGVyZXIpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgY29sb3JB
dHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgSU1QTEVNRU5UQVRJT05fTUFYX0RSQVdf
QlVGRkVSUzsgY29sb3JBdHRhY2htZW50KyspCisgICAgeworICAgICAgICBtQ29sb3JidWZmZXJU
eXBlc1tjb2xvckF0dGFjaG1lbnRdID0gR0xfTk9ORTsKKyAgICAgICAgbURyYXdCdWZmZXJTdGF0
ZXNbY29sb3JBdHRhY2htZW50XSA9IEdMX05PTkU7CisgICAgfQorICAgIG1EcmF3QnVmZmVyU3Rh
dGVzWzBdID0gR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUOworICAgIG1SZWFkQnVmZmVyU3RhdGUg
PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQ7CisKKyAgICBtRGVwdGhidWZmZXJUeXBlID0gR0xf
Tk9ORTsKKyAgICBtU3RlbmNpbGJ1ZmZlclR5cGUgPSBHTF9OT05FOworfQorCitGcmFtZWJ1ZmZl
cjo6fkZyYW1lYnVmZmVyKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1l
bnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJT
OyBjb2xvckF0dGFjaG1lbnQrKykKKyAgICB7CisgICAgICAgIG1Db2xvcmJ1ZmZlclBvaW50ZXJz
W2NvbG9yQXR0YWNobWVudF0uc2V0KE5VTEwpOworICAgIH0KKyAgICBtRGVwdGhidWZmZXJQb2lu
dGVyLnNldChOVUxMKTsKKyAgICBtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuc2V0KE5VTEwpOworfQor
CitSZW5kZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpsb29rdXBSZW5kZXJidWZmZXIoR0xlbnVtIHR5
cGUsIEdMdWludCBoYW5kbGUpIGNvbnN0Cit7CisgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Q29udGV4dCgpOworICAgIFJlbmRlcmJ1ZmZlciAqYnVmZmVyID0gTlVMTDsKKworICAg
IGlmICh0eXBlID09IEdMX05PTkUpCisgICAgeworICAgICAgICBidWZmZXIgPSBOVUxMOworICAg
IH0KKyAgICBlbHNlIGlmICh0eXBlID09IEdMX1JFTkRFUkJVRkZFUikKKyAgICB7CisgICAgICAg
IGJ1ZmZlciA9IGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlcihoYW5kbGUpOworICAgIH0KKyAgICBl
bHNlIGlmIChJc0ludGVybmFsVGV4dHVyZVRhcmdldCh0eXBlKSkKKyAgICB7CisgICAgICAgIGJ1
ZmZlciA9IGNvbnRleHQtPmdldFRleHR1cmUoaGFuZGxlKS0+Z2V0UmVuZGVyYnVmZmVyKHR5cGUp
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0K
KworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3ZvaWQgRnJhbWVidWZmZXI6OnNldENvbG9yYnVm
ZmVyKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29s
b3JidWZmZXIpCit7CisgICAgQVNTRVJUKGNvbG9yQXR0YWNobWVudCA8IElNUExFTUVOVEFUSU9O
X01BWF9EUkFXX0JVRkZFUlMpOworICAgIG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9yQXR0YWNobWVu
dF0gPSAoY29sb3JidWZmZXIgIT0gMCkgPyB0eXBlIDogR0xfTk9ORTsKKyAgICBtQ29sb3JidWZm
ZXJQb2ludGVyc1tjb2xvckF0dGFjaG1lbnRdLnNldChsb29rdXBSZW5kZXJidWZmZXIodHlwZSwg
Y29sb3JidWZmZXIpKTsKK30KKwordm9pZCBGcmFtZWJ1ZmZlcjo6c2V0RGVwdGhidWZmZXIoR0xl
bnVtIHR5cGUsIEdMdWludCBkZXB0aGJ1ZmZlcikKK3sKKyAgICBtRGVwdGhidWZmZXJUeXBlID0g
KGRlcHRoYnVmZmVyICE9IDApID8gdHlwZSA6IEdMX05PTkU7CisgICAgbURlcHRoYnVmZmVyUG9p
bnRlci5zZXQobG9va3VwUmVuZGVyYnVmZmVyKHR5cGUsIGRlcHRoYnVmZmVyKSk7Cit9CisKK3Zv
aWQgRnJhbWVidWZmZXI6OnNldFN0ZW5jaWxidWZmZXIoR0xlbnVtIHR5cGUsIEdMdWludCBzdGVu
Y2lsYnVmZmVyKQoreworICAgIG1TdGVuY2lsYnVmZmVyVHlwZSA9IChzdGVuY2lsYnVmZmVyICE9
IDApID8gdHlwZSA6IEdMX05PTkU7CisgICAgbVN0ZW5jaWxidWZmZXJQb2ludGVyLnNldChsb29r
dXBSZW5kZXJidWZmZXIodHlwZSwgc3RlbmNpbGJ1ZmZlcikpOworfQorCit2b2lkIEZyYW1lYnVm
ZmVyOjpkZXRhY2hUZXh0dXJlKEdMdWludCB0ZXh0dXJlKQoreworICAgIGZvciAodW5zaWduZWQg
aW50IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IElNUExFTUVOVEFUSU9O
X01BWF9EUkFXX0JVRkZFUlM7IGNvbG9yQXR0YWNobWVudCsrKQorICAgIHsKKyAgICAgICAgaWYg
KG1Db2xvcmJ1ZmZlclBvaW50ZXJzW2NvbG9yQXR0YWNobWVudF0uaWQoKSA9PSB0ZXh0dXJlICYm
IElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9yQXR0YWNobWVu
dF0pKQorICAgICAgICB7CisgICAgICAgICAgICBtQ29sb3JidWZmZXJUeXBlc1tjb2xvckF0dGFj
aG1lbnRdID0gR0xfTk9ORTsKKyAgICAgICAgICAgIG1Db2xvcmJ1ZmZlclBvaW50ZXJzW2NvbG9y
QXR0YWNobWVudF0uc2V0KE5VTEwpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1EZXB0
aGJ1ZmZlclBvaW50ZXIuaWQoKSA9PSB0ZXh0dXJlICYmIElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0
KG1EZXB0aGJ1ZmZlclR5cGUpKQorICAgIHsKKyAgICAgICAgbURlcHRoYnVmZmVyVHlwZSA9IEdM
X05PTkU7CisgICAgICAgIG1EZXB0aGJ1ZmZlclBvaW50ZXIuc2V0KE5VTEwpOworICAgIH0KKwor
ICAgIGlmIChtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuaWQoKSA9PSB0ZXh0dXJlICYmIElzSW50ZXJu
YWxUZXh0dXJlVGFyZ2V0KG1TdGVuY2lsYnVmZmVyVHlwZSkpCisgICAgeworICAgICAgICBtU3Rl
bmNpbGJ1ZmZlclR5cGUgPSBHTF9OT05FOworICAgICAgICBtU3RlbmNpbGJ1ZmZlclBvaW50ZXIu
c2V0KE5VTEwpOworICAgIH0KK30KKwordm9pZCBGcmFtZWJ1ZmZlcjo6ZGV0YWNoUmVuZGVyYnVm
ZmVyKEdMdWludCByZW5kZXJidWZmZXIpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgY29sb3JB
dHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgSU1QTEVNRU5UQVRJT05fTUFYX0RSQVdf
QlVGRkVSUzsgY29sb3JBdHRhY2htZW50KyspCisgICAgeworICAgICAgICBpZiAobUNvbG9yYnVm
ZmVyUG9pbnRlcnNbY29sb3JBdHRhY2htZW50XS5pZCgpID09IHJlbmRlcmJ1ZmZlciAmJiBtQ29s
b3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdID09IEdMX1JFTkRFUkJVRkZFUikKKyAgICAg
ICAgeworICAgICAgICAgICAgbUNvbG9yYnVmZmVyVHlwZXNbY29sb3JBdHRhY2htZW50XSA9IEdM
X05PTkU7CisgICAgICAgICAgICBtQ29sb3JidWZmZXJQb2ludGVyc1tjb2xvckF0dGFjaG1lbnRd
LnNldChOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtRGVwdGhidWZmZXJQb2lu
dGVyLmlkKCkgPT0gcmVuZGVyYnVmZmVyICYmIG1EZXB0aGJ1ZmZlclR5cGUgPT0gR0xfUkVOREVS
QlVGRkVSKQorICAgIHsKKyAgICAgICAgbURlcHRoYnVmZmVyVHlwZSA9IEdMX05PTkU7CisgICAg
ICAgIG1EZXB0aGJ1ZmZlclBvaW50ZXIuc2V0KE5VTEwpOworICAgIH0KKworICAgIGlmIChtU3Rl
bmNpbGJ1ZmZlclBvaW50ZXIuaWQoKSA9PSByZW5kZXJidWZmZXIgJiYgbVN0ZW5jaWxidWZmZXJU
eXBlID09IEdMX1JFTkRFUkJVRkZFUikKKyAgICB7CisgICAgICAgIG1TdGVuY2lsYnVmZmVyVHlw
ZSA9IEdMX05PTkU7CisgICAgICAgIG1TdGVuY2lsYnVmZmVyUG9pbnRlci5zZXQoTlVMTCk7Cisg
ICAgfQorfQorCit1bnNpZ25lZCBpbnQgRnJhbWVidWZmZXI6OmdldFJlbmRlclRhcmdldFNlcmlh
bCh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25zdAoreworICAgIEFTU0VSVChjb2xv
ckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTKTsKKworICAgIFJl
bmRlcmJ1ZmZlciAqY29sb3JidWZmZXIgPSBtQ29sb3JidWZmZXJQb2ludGVyc1tjb2xvckF0dGFj
aG1lbnRdLmdldCgpOworCisgICAgaWYgKGNvbG9yYnVmZmVyKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGNvbG9yYnVmZmVyLT5nZXRTZXJpYWwoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K
KwordW5zaWduZWQgaW50IEZyYW1lYnVmZmVyOjpnZXREZXB0aGJ1ZmZlclNlcmlhbCgpIGNvbnN0
Cit7CisgICAgUmVuZGVyYnVmZmVyICpkZXB0aGJ1ZmZlciA9IG1EZXB0aGJ1ZmZlclBvaW50ZXIu
Z2V0KCk7CisKKyAgICBpZiAoZGVwdGhidWZmZXIpCisgICAgeworICAgICAgICByZXR1cm4gZGVw
dGhidWZmZXItPmdldFNlcmlhbCgpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCit1bnNp
Z25lZCBpbnQgRnJhbWVidWZmZXI6OmdldFN0ZW5jaWxidWZmZXJTZXJpYWwoKSBjb25zdAorewor
ICAgIFJlbmRlcmJ1ZmZlciAqc3RlbmNpbGJ1ZmZlciA9IG1TdGVuY2lsYnVmZmVyUG9pbnRlci5n
ZXQoKTsKKworICAgIGlmIChzdGVuY2lsYnVmZmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0
ZW5jaWxidWZmZXItPmdldFNlcmlhbCgpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitS
ZW5kZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpnZXRDb2xvcmJ1ZmZlcih1bnNpZ25lZCBpbnQgY29s
b3JBdHRhY2htZW50KSBjb25zdAoreworICAgIEFTU0VSVChjb2xvckF0dGFjaG1lbnQgPCBJTVBM
RU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTKTsKKyAgICByZXR1cm4gbUNvbG9yYnVmZmVyUG9p
bnRlcnNbY29sb3JBdHRhY2htZW50XS5nZXQoKTsKK30KKworUmVuZGVyYnVmZmVyICpGcmFtZWJ1
ZmZlcjo6Z2V0RGVwdGhidWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBtRGVwdGhidWZmZXJQ
b2ludGVyLmdldCgpOworfQorCitSZW5kZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpnZXRTdGVuY2ls
YnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0ZW5jaWxidWZmZXJQb2ludGVyLmdldCgp
OworfQorCitSZW5kZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpnZXREZXB0aE9yU3RlbmNpbGJ1ZmZl
cigpIGNvbnN0Cit7CisgICAgUmVuZGVyYnVmZmVyICpkZXB0aHN0ZW5jaWxidWZmZXIgPSBtRGVw
dGhidWZmZXJQb2ludGVyLmdldCgpOworICAgIAorICAgIGlmICghZGVwdGhzdGVuY2lsYnVmZmVy
KQorICAgIHsKKyAgICAgICAgZGVwdGhzdGVuY2lsYnVmZmVyID0gbVN0ZW5jaWxidWZmZXJQb2lu
dGVyLmdldCgpOworICAgIH0KKworICAgIHJldHVybiBkZXB0aHN0ZW5jaWxidWZmZXI7Cit9CisK
K1JlbmRlcmJ1ZmZlciAqRnJhbWVidWZmZXI6OmdldFJlYWRDb2xvcmJ1ZmZlcigpIGNvbnN0Cit7
CisgICAgLy8gV2lsbCByZXF1aXJlIG1vcmUgbG9naWMgaWYgZ2xSZWFkQnVmZmVycyBpcyBzdXBw
b3J0ZWQKKyAgICByZXR1cm4gbUNvbG9yYnVmZmVyUG9pbnRlcnNbMF0uZ2V0KCk7Cit9CisKK0dM
ZW51bSBGcmFtZWJ1ZmZlcjo6Z2V0UmVhZENvbG9yYnVmZmVyVHlwZSgpIGNvbnN0Cit7CisgICAg
Ly8gV2lsbCByZXF1aXJlIG1vcmUgbG9naWMgaWYgZ2xSZWFkQnVmZmVycyBpcyBzdXBwb3J0ZWQK
KyAgICByZXR1cm4gbUNvbG9yYnVmZmVyVHlwZXNbMF07Cit9CisKK1JlbmRlcmJ1ZmZlciAqRnJh
bWVidWZmZXI6OmdldEZpcnN0Q29sb3JidWZmZXIoKSBjb25zdAoreworICAgIGZvciAodW5zaWdu
ZWQgaW50IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IElNUExFTUVOVEFU
SU9OX01BWF9EUkFXX0JVRkZFUlM7IGNvbG9yQXR0YWNobWVudCsrKQorICAgIHsKKyAgICAgICAg
aWYgKG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9yQXR0YWNobWVudF0gIT0gR0xfTk9ORSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIG1Db2xvcmJ1ZmZlclBvaW50ZXJzW2NvbG9yQXR0YWNo
bWVudF0uZ2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsKK30KKwor
R0xlbnVtIEZyYW1lYnVmZmVyOjpnZXRDb2xvcmJ1ZmZlclR5cGUodW5zaWduZWQgaW50IGNvbG9y
QXR0YWNobWVudCkgY29uc3QKK3sKKyAgICBBU1NFUlQoY29sb3JBdHRhY2htZW50IDwgSU1QTEVN
RU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUyk7CisgICAgcmV0dXJuIG1Db2xvcmJ1ZmZlclR5cGVz
W2NvbG9yQXR0YWNobWVudF07Cit9CisKK0dMZW51bSBGcmFtZWJ1ZmZlcjo6Z2V0RGVwdGhidWZm
ZXJUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbURlcHRoYnVmZmVyVHlwZTsKK30KKworR0xl
bnVtIEZyYW1lYnVmZmVyOjpnZXRTdGVuY2lsYnVmZmVyVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1TdGVuY2lsYnVmZmVyVHlwZTsKK30KKworR0x1aW50IEZyYW1lYnVmZmVyOjpnZXRDb2xv
cmJ1ZmZlckhhbmRsZSh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25zdAoreworICAg
IEFTU0VSVChjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJT
KTsKKyAgICByZXR1cm4gbUNvbG9yYnVmZmVyUG9pbnRlcnNbY29sb3JBdHRhY2htZW50XS5pZCgp
OworfQorCitHTHVpbnQgRnJhbWVidWZmZXI6OmdldERlcHRoYnVmZmVySGFuZGxlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbURlcHRoYnVmZmVyUG9pbnRlci5pZCgpOworfQorCitHTHVpbnQgRnJh
bWVidWZmZXI6OmdldFN0ZW5jaWxidWZmZXJIYW5kbGUoKSBjb25zdAoreworICAgIHJldHVybiBt
U3RlbmNpbGJ1ZmZlclBvaW50ZXIuaWQoKTsKK30KKworR0xlbnVtIEZyYW1lYnVmZmVyOjpnZXRE
cmF3QnVmZmVyU3RhdGUodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbURyYXdCdWZmZXJTdGF0ZXNbY29sb3JBdHRhY2htZW50XTsKK30KKwordm9pZCBG
cmFtZWJ1ZmZlcjo6c2V0RHJhd0J1ZmZlclN0YXRlKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1l
bnQsIEdMZW51bSBkcmF3QnVmZmVyKQoreworICAgIG1EcmF3QnVmZmVyU3RhdGVzW2NvbG9yQXR0
YWNobWVudF0gPSBkcmF3QnVmZmVyOworfQorCitib29sIEZyYW1lYnVmZmVyOjppc0VuYWJsZWRD
b2xvckF0dGFjaG1lbnQodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gKG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9yQXR0YWNobWVudF0gIT0gR0xfTk9ORSAm
JiBtRHJhd0J1ZmZlclN0YXRlc1tjb2xvckF0dGFjaG1lbnRdICE9IEdMX05PTkUpOworfQorCiti
b29sIEZyYW1lYnVmZmVyOjpoYXNFbmFibGVkQ29sb3JBdHRhY2htZW50KCkgY29uc3QKK3sKKyAg
ICBmb3IgKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQg
PCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUzsgY29sb3JBdHRhY2htZW50Kysp
CisgICAgeworICAgICAgICBpZiAoaXNFbmFibGVkQ29sb3JBdHRhY2htZW50KGNvbG9yQXR0YWNo
bWVudCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZyYW1lYnVmZmVyOjpoYXNTdGVu
Y2lsKCkgY29uc3QKK3sKKyAgICBpZiAobVN0ZW5jaWxidWZmZXJUeXBlICE9IEdMX05PTkUpCisg
ICAgeworICAgICAgICBjb25zdCBSZW5kZXJidWZmZXIgKnN0ZW5jaWxidWZmZXJPYmplY3QgPSBn
ZXRTdGVuY2lsYnVmZmVyKCk7CisKKyAgICAgICAgaWYgKHN0ZW5jaWxidWZmZXJPYmplY3QpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzdGVuY2lsYnVmZmVyT2JqZWN0LT5nZXRTdGVu
Y2lsU2l6ZSgpID4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBGcmFtZWJ1ZmZlcjo6dXNpbmdFeHRlbmRlZERyYXdCdWZmZXJzKCkgY29uc3QKK3sK
KyAgICBmb3IgKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAxOyBjb2xvckF0dGFjaG1l
bnQgPCBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTOyBjb2xvckF0dGFjaG1lbnQrKykK
KyAgICB7CisgICAgICAgIGlmIChpc0VuYWJsZWRDb2xvckF0dGFjaG1lbnQoY29sb3JBdHRhY2ht
ZW50KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0dMZW51bSBGcmFtZWJ1ZmZlcjo6Y29tcGxl
dGVuZXNzKCkgY29uc3QKK3sKKyAgICBpbnQgd2lkdGggPSAwOworICAgIGludCBoZWlnaHQgPSAw
OworICAgIGludCBjb2xvcmJ1ZmZlclNpemUgPSAwOworICAgIGludCBzYW1wbGVzID0gLTE7Cisg
ICAgYm9vbCBtaXNzaW5nQXR0YWNobWVudCA9IHRydWU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGlu
dCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9N
QVhfRFJBV19CVUZGRVJTOyBjb2xvckF0dGFjaG1lbnQrKykKKyAgICB7CisgICAgICAgIGlmICht
Q29sb3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdICE9IEdMX05PTkUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvbnN0IFJlbmRlcmJ1ZmZlciAqY29sb3JidWZmZXIgPSBnZXRDb2xvcmJ1
ZmZlcihjb2xvckF0dGFjaG1lbnQpOworCisgICAgICAgICAgICBpZiAoIWNvbG9yYnVmZmVyKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNP
TVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb2xv
cmJ1ZmZlci0+Z2V0V2lkdGgoKSA9PSAwIHx8IGNvbG9yYnVmZmVyLT5nZXRIZWlnaHQoKSA9PSAw
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9J
TkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICht
Q29sb3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdID09IEdMX1JFTkRFUkJVRkZFUikKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIWdsOjpJc0NvbG9yUmVuZGVyYWJsZShj
b2xvcmJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKSkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hN
RU5UOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
aWYgKElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9yQXR0YWNo
bWVudF0pKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsZm9y
bWF0ID0gY29sb3JidWZmZXItPmdldEludGVybmFsRm9ybWF0KCk7CisgICAgICAgICAgICAgICAg
R0xlbnVtIGZvcm1hdCA9IGdsOjpFeHRyYWN0Rm9ybWF0KGludGVybmFsZm9ybWF0KTsKKworICAg
ICAgICAgICAgICAgIGlmIChJc0NvbXByZXNzZWQoZm9ybWF0KSB8fAorICAgICAgICAgICAgICAg
ICAgICBmb3JtYXQgPT0gR0xfQUxQSEEgfHwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID09
IEdMX0xVTUlOQU5DRSB8fAorICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPT0gR0xfTFVNSU5B
TkNFX0FMUEhBKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGJvb2wgZmlsdGVyaW5nLCByZW5kZXJhYmxlOworCisgICAgICAgICAgICAgICAg
aWYgKChnbDo6SXNGbG9hdDMyRm9ybWF0KGludGVybmFsZm9ybWF0KSAmJiAhbVJlbmRlcmVyLT5n
ZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQoJmZpbHRlcmluZywgJnJlbmRlcmFibGUpKSB8fAorICAg
ICAgICAgICAgICAgICAgICAoZ2w6OklzRmxvYXQxNkZvcm1hdChpbnRlcm5hbGZvcm1hdCkgJiYg
IW1SZW5kZXJlci0+Z2V0RmxvYXQxNlRleHR1cmVTdXBwb3J0KCZmaWx0ZXJpbmcsICZyZW5kZXJh
YmxlKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xf
RlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgaWYgKGdsOjpJc0RlcHRoVGV4dHVyZShpbnRlcm5hbGZvcm1hdCkgfHwgZ2w6OklzU3Rl
bmNpbFRleHR1cmUoaW50ZXJuYWxmb3JtYXQpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoIW1pc3NpbmdBdHRhY2htZW50KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIC8vIGFsbCBjb2xvciBhdHRhY2htZW50cyBtdXN0IGhhdmUgdGhl
IHNhbWUgd2lkdGggYW5kIGhlaWdodAorICAgICAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlci0+
Z2V0V2lkdGgoKSAhPSB3aWR0aCB8fCBjb2xvcmJ1ZmZlci0+Z2V0SGVpZ2h0KCkgIT0gaGVpZ2h0
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1F
QlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUzsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAvLyBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSwgd2hpY2ggRVhUX2Ry
YXdfYnVmZmVycyByZWZlcnMgdG8sIHJlcXVpcmVzIHRoYXQKKyAgICAgICAgICAgICAgICAvLyBh
bGwgY29sb3IgYXR0YWNobWVudHMgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Ygc2FtcGxlcyBmb3Ig
dGhlIEZCTyB0byBiZSBjb21wbGV0ZS4KKyAgICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXIt
PmdldFNhbXBsZXMoKSAhPSBzYW1wbGVzKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfRVhU
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGFsbCBjb2xvciBhdHRh
Y2htZW50cyBhdHRhY2htZW50cyBtdXN0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGJpdHBsYW5l
cworICAgICAgICAgICAgICAgIGlmIChnbDo6Q29tcHV0ZVBpeGVsU2l6ZShjb2xvcmJ1ZmZlci0+
Z2V0SW50ZXJuYWxGb3JtYXQoKSkgIT0gY29sb3JidWZmZXJTaXplKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVE
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEQzRDExIGRvZXMgbm90
IGFsbG93IGZvciBvdmVybGFwcGluZyBSZW5kZXJUYXJnZXRWaWV3cywgc28gZW5zdXJlIHVuaXF1
ZW5lc3MKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBwcmV2aW91c0NvbG9yQXR0
YWNobWVudCA9IDA7IHByZXZpb3VzQ29sb3JBdHRhY2htZW50IDwgY29sb3JBdHRhY2htZW50OyBw
cmV2aW91c0NvbG9yQXR0YWNobWVudCsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG1Db2xvcmJ1ZmZlclBvaW50ZXJzW2NvbG9yQXR0YWNobWVudF0uZ2V0KCkg
PT0gbUNvbG9yYnVmZmVyUG9pbnRlcnNbcHJldmlvdXNDb2xvckF0dGFjaG1lbnRdLmdldCgpKQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xf
RlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgd2lkdGggPSBjb2xvcmJ1ZmZlci0+Z2V0V2lkdGgoKTsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQgPSBjb2xvcmJ1ZmZlci0+Z2V0SGVpZ2h0KCk7CisgICAgICAgICAg
ICAgICAgc2FtcGxlcyA9IGNvbG9yYnVmZmVyLT5nZXRTYW1wbGVzKCk7CisgICAgICAgICAgICAg
ICAgY29sb3JidWZmZXJTaXplID0gZ2w6OkNvbXB1dGVQaXhlbFNpemUoY29sb3JidWZmZXItPmdl
dEludGVybmFsRm9ybWF0KCkpOworICAgICAgICAgICAgICAgIG1pc3NpbmdBdHRhY2htZW50ID0g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBSZW5k
ZXJidWZmZXIgKmRlcHRoYnVmZmVyID0gTlVMTDsKKyAgICBjb25zdCBSZW5kZXJidWZmZXIgKnN0
ZW5jaWxidWZmZXIgPSBOVUxMOworCisgICAgaWYgKG1EZXB0aGJ1ZmZlclR5cGUgIT0gR0xfTk9O
RSkKKyAgICB7CisgICAgICAgIGRlcHRoYnVmZmVyID0gZ2V0RGVwdGhidWZmZXIoKTsKKworICAg
ICAgICBpZiAoIWRlcHRoYnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xf
RlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGRlcHRoYnVmZmVyLT5nZXRXaWR0aCgpID09IDAgfHwgZGVwdGhidWZmZXItPmdldEhlaWdo
dCgpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9J
TkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAobURlcHRoYnVm
ZmVyVHlwZSA9PSBHTF9SRU5ERVJCVUZGRVIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgh
Z2w6OklzRGVwdGhSZW5kZXJhYmxlKGRlcHRoYnVmZmVyLT5nZXRJbnRlcm5hbEZvcm1hdCgpKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5D
T01QTEVURV9BVFRBQ0hNRU5UOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UgaWYgKElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1EZXB0aGJ1ZmZlclR5cGUpKQorICAgICAg
ICB7CisgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCA9IGRlcHRoYnVmZmVyLT5nZXRJ
bnRlcm5hbEZvcm1hdCgpOworCisgICAgICAgICAgICAvLyBkZXB0aCB0ZXh0dXJlIGF0dGFjaG1l
bnRzIHJlcXVpcmUgT0VTL0FOR0xFX2RlcHRoX3RleHR1cmUKKyAgICAgICAgICAgIGlmICghbVJl
bmRlcmVyLT5nZXREZXB0aFRleHR1cmVTdXBwb3J0KCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFnbDo6SXNEZXB0aFRleHR1cmUoaW50ZXJu
YWxmb3JtYXQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFN
RUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChtaXNzaW5nQXR0YWNobWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgd2lkdGggPSBkZXB0aGJ1ZmZlci0+Z2V0V2lkdGgoKTsKKyAgICAgICAgICAgIGhl
aWdodCA9IGRlcHRoYnVmZmVyLT5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIHNhbXBsZXMgPSBk
ZXB0aGJ1ZmZlci0+Z2V0U2FtcGxlcygpOworICAgICAgICAgICAgbWlzc2luZ0F0dGFjaG1lbnQg
PSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh3aWR0aCAhPSBkZXB0aGJ1ZmZl
ci0+Z2V0V2lkdGgoKSB8fCBoZWlnaHQgIT0gZGVwdGhidWZmZXItPmdldEhlaWdodCgpKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1F
TlNJT05TOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNhbXBsZXMgIT0gZGVwdGhidWZm
ZXItPmdldFNhbXBsZXMoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1F
QlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfQU5HTEU7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAobVN0ZW5jaWxidWZmZXJUeXBlICE9IEdMX05PTkUpCisgICAgeworICAgICAgICBz
dGVuY2lsYnVmZmVyID0gZ2V0U3RlbmNpbGJ1ZmZlcigpOworCisgICAgICAgIGlmICghc3RlbmNp
bGJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lO
Q09NUExFVEVfQVRUQUNITUVOVDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGVuY2lsYnVm
ZmVyLT5nZXRXaWR0aCgpID09IDAgfHwgc3RlbmNpbGJ1ZmZlci0+Z2V0SGVpZ2h0KCkgPT0gMCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVf
QVRUQUNITUVOVDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtU3RlbmNpbGJ1ZmZlclR5cGUg
PT0gR0xfUkVOREVSQlVGRkVSKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWdsOjpJc1N0
ZW5jaWxSZW5kZXJhYmxlKHN0ZW5jaWxidWZmZXItPmdldEludGVybmFsRm9ybWF0KCkpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBp
ZiAoSXNJbnRlcm5hbFRleHR1cmVUYXJnZXQobVN0ZW5jaWxidWZmZXJUeXBlKSkKKyAgICAgICAg
eworICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQgPSBzdGVuY2lsYnVmZmVyLT5nZXRJ
bnRlcm5hbEZvcm1hdCgpOworCisgICAgICAgICAgICAvLyB0ZXh0dXJlIHN0ZW5jaWwgYXR0YWNo
bWVudHMgY29tZSBhbG9uZyBhcyBwYXJ0CisgICAgICAgICAgICAvLyBvZiBPRVNfcGFja2VkX2Rl
cHRoX3N0ZW5jaWwgKyBPRVMvQU5HTEVfZGVwdGhfdGV4dHVyZQorICAgICAgICAgICAgaWYgKCFt
UmVuZGVyZXItPmdldERlcHRoVGV4dHVyZVN1cHBvcnQoKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWdsOjpJc1N0ZW5jaWxUZXh0dXJlKGlu
dGVybmFsZm9ybWF0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xf
RlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7
CisgICAgICAgIH0KKworICAgICAgICBpZiAobWlzc2luZ0F0dGFjaG1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHdpZHRoID0gc3RlbmNpbGJ1ZmZlci0+Z2V0V2lkdGgoKTsKKyAgICAgICAg
ICAgIGhlaWdodCA9IHN0ZW5jaWxidWZmZXItPmdldEhlaWdodCgpOworICAgICAgICAgICAgc2Ft
cGxlcyA9IHN0ZW5jaWxidWZmZXItPmdldFNhbXBsZXMoKTsKKyAgICAgICAgICAgIG1pc3NpbmdB
dHRhY2htZW50ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAod2lkdGggIT0g
c3RlbmNpbGJ1ZmZlci0+Z2V0V2lkdGgoKSB8fCBoZWlnaHQgIT0gc3RlbmNpbGJ1ZmZlci0+Z2V0
SGVpZ2h0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9J
TkNPTVBMRVRFX0RJTUVOU0lPTlM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc2FtcGxl
cyAhPSBzdGVuY2lsYnVmZmVyLT5nZXRTYW1wbGVzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0FOR0xFOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gaWYgd2UgaGF2ZSBib3RoIGEgZGVwdGggYW5kIHN0ZW5j
aWwgYnVmZmVyLCB0aGV5IG11c3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0CisgICAgLy8gc2lu
Y2Ugd2Ugb25seSBzdXBwb3J0IHBhY2tlZF9kZXB0aF9zdGVuY2lsIGFuZCBub3Qgc2VwYXJhdGUg
ZGVwdGggYW5kIHN0ZW5jaWwKKyAgICBpZiAoZGVwdGhidWZmZXIgJiYgc3RlbmNpbGJ1ZmZlciAm
JiAoZGVwdGhidWZmZXIgIT0gc3RlbmNpbGJ1ZmZlcikpCisgICAgeworICAgICAgICByZXR1cm4g
R0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CisgICAgfQorCisgICAgLy8gd2UgbmVlZCB0byBo
YXZlIGF0IGxlYXN0IG9uZSBhdHRhY2htZW50IHRvIGJlIGNvbXBsZXRlCisgICAgaWYgKG1pc3Np
bmdBdHRhY2htZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UOworICAgIH0KKworICAgIHJldHVybiBHTF9GUkFNRUJV
RkZFUl9DT01QTEVURTsKK30KKworRGVmYXVsdEZyYW1lYnVmZmVyOjpEZWZhdWx0RnJhbWVidWZm
ZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgQ29sb3JidWZmZXIgKmNvbG9yYnVmZmVyLCBEZXB0
aFN0ZW5jaWxidWZmZXIgKmRlcHRoU3RlbmNpbCkKKyAgICA6IEZyYW1lYnVmZmVyKHJlbmRlcmVy
KQoreworICAgIG1Db2xvcmJ1ZmZlclBvaW50ZXJzWzBdLnNldChuZXcgUmVuZGVyYnVmZmVyKG1S
ZW5kZXJlciwgMCwgY29sb3JidWZmZXIpKTsKKworICAgIFJlbmRlcmJ1ZmZlciAqZGVwdGhTdGVu
Y2lsUmVuZGVyYnVmZmVyID0gbmV3IFJlbmRlcmJ1ZmZlcihtUmVuZGVyZXIsIDAsIGRlcHRoU3Rl
bmNpbCk7CisgICAgbURlcHRoYnVmZmVyUG9pbnRlci5zZXQoZGVwdGhTdGVuY2lsUmVuZGVyYnVm
ZmVyKTsKKyAgICBtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuc2V0KGRlcHRoU3RlbmNpbFJlbmRlcmJ1
ZmZlcik7CisKKyAgICBtQ29sb3JidWZmZXJUeXBlc1swXSA9IEdMX1JFTkRFUkJVRkZFUjsKKyAg
ICBtRGVwdGhidWZmZXJUeXBlID0gKGRlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlci0+Z2V0RGVwdGhT
aXplKCkgIT0gMCkgPyBHTF9SRU5ERVJCVUZGRVIgOiBHTF9OT05FOworICAgIG1TdGVuY2lsYnVm
ZmVyVHlwZSA9IChkZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXItPmdldFN0ZW5jaWxTaXplKCkgIT0g
MCkgPyBHTF9SRU5ERVJCVUZGRVIgOiBHTF9OT05FOworCisgICAgbURyYXdCdWZmZXJTdGF0ZXNb
MF0gPSBHTF9CQUNLOworICAgIG1SZWFkQnVmZmVyU3RhdGUgPSBHTF9CQUNLOworfQorCitpbnQg
RnJhbWVidWZmZXI6OmdldFNhbXBsZXMoKSBjb25zdAoreworICAgIGlmIChjb21wbGV0ZW5lc3Mo
KSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICB7CisgICAgICAgIC8vIGZvciBhIGNv
bXBsZXRlIGZyYW1lYnVmZmVyLCBhbGwgYXR0YWNobWVudHMgbXVzdCBoYXZlIHRoZSBzYW1lIHNh
bXBsZSBjb3VudAorICAgICAgICAvLyBpbiB0aGlzIGNhc2UgcmV0dXJuIHRoZSBmaXJzdCBub256
ZXJvIHNhbXBsZSBzaXplCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVu
dCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IElNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM7
IGNvbG9yQXR0YWNobWVudCsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobUNvbG9yYnVm
ZmVyVHlwZXNbY29sb3JBdHRhY2htZW50XSAhPSBHTF9OT05FKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBnZXRDb2xvcmJ1ZmZlcihjb2xvckF0dGFjaG1lbnQpLT5nZXRT
YW1wbGVzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
MDsKK30KKworR0xlbnVtIERlZmF1bHRGcmFtZWJ1ZmZlcjo6Y29tcGxldGVuZXNzKCkgY29uc3QK
K3sKKyAgICAvLyBUaGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciAqbXVzdCogYWx3YXlzIGJlIGNvbXBs
ZXRlLCB0aG91Z2ggaXQgbWF5IG5vdCBiZQorICAgIC8vIHN1YmplY3QgdG8gdGhlIHNhbWUgcnVs
ZXMgYXMgYXBwbGljYXRpb24gRkJPcy4gaWUsIGl0IGNvdWxkIGhhdmUgMHgwIHNpemUuCisgICAg
cmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFOworfQorCit9CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZyYW1lYnVmZmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1
ZmZlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOCBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gRnJhbWVidWZmZXIuaDogRGVmaW5lcyB0aGUgZ2w6OkZyYW1lYnVmZmVyIGNsYXNzLiBJ
bXBsZW1lbnRzIEdMIGZyYW1lYnVmZmVyCisvLyBvYmplY3RzIGFuZCByZWxhdGVkIGZ1bmN0aW9u
YWxpdHkuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDQuNCBwYWdlIDEwNS4KKworI2lmbmRl
ZiBMSUJHTEVTVjJfRlJBTUVCVUZGRVJfSF8KKyNkZWZpbmUgTElCR0xFU1YyX0ZSQU1FQlVGRkVS
X0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNvbW1vbi9S
ZWZDb3VudE9iamVjdC5oIgorI2luY2x1ZGUgImNvbnN0YW50cy5oIgorCituYW1lc3BhY2UgcngK
K3sKK2NsYXNzIFJlbmRlcmVyOworfQorCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIFJlbmRlcmJ1
ZmZlcjsKK2NsYXNzIENvbG9yYnVmZmVyOworY2xhc3MgRGVwdGhidWZmZXI7CitjbGFzcyBTdGVu
Y2lsYnVmZmVyOworY2xhc3MgRGVwdGhTdGVuY2lsYnVmZmVyOworCitjbGFzcyBGcmFtZWJ1ZmZl
cgoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgRnJhbWVidWZmZXIocng6OlJlbmRlcmVyICpy
ZW5kZXJlcik7CisKKyAgICB2aXJ0dWFsIH5GcmFtZWJ1ZmZlcigpOworCisgICAgdm9pZCBzZXRD
b2xvcmJ1ZmZlcih1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50LCBHTGVudW0gdHlwZSwgR0x1
aW50IGNvbG9yYnVmZmVyKTsKKyAgICB2b2lkIHNldERlcHRoYnVmZmVyKEdMZW51bSB0eXBlLCBH
THVpbnQgZGVwdGhidWZmZXIpOworICAgIHZvaWQgc2V0U3RlbmNpbGJ1ZmZlcihHTGVudW0gdHlw
ZSwgR0x1aW50IHN0ZW5jaWxidWZmZXIpOworCisgICAgdm9pZCBkZXRhY2hUZXh0dXJlKEdMdWlu
dCB0ZXh0dXJlKTsKKyAgICB2b2lkIGRldGFjaFJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVm
ZmVyKTsKKworICAgIHVuc2lnbmVkIGludCBnZXRSZW5kZXJUYXJnZXRTZXJpYWwodW5zaWduZWQg
aW50IGNvbG9yQXR0YWNobWVudCkgY29uc3Q7CisgICAgdW5zaWduZWQgaW50IGdldERlcHRoYnVm
ZmVyU2VyaWFsKCkgY29uc3Q7CisgICAgdW5zaWduZWQgaW50IGdldFN0ZW5jaWxidWZmZXJTZXJp
YWwoKSBjb25zdDsKKworICAgIFJlbmRlcmJ1ZmZlciAqZ2V0Q29sb3JidWZmZXIodW5zaWduZWQg
aW50IGNvbG9yQXR0YWNobWVudCkgY29uc3Q7CisgICAgUmVuZGVyYnVmZmVyICpnZXREZXB0aGJ1
ZmZlcigpIGNvbnN0OworICAgIFJlbmRlcmJ1ZmZlciAqZ2V0U3RlbmNpbGJ1ZmZlcigpIGNvbnN0
OworICAgIFJlbmRlcmJ1ZmZlciAqZ2V0RGVwdGhPclN0ZW5jaWxidWZmZXIoKSBjb25zdDsKKyAg
ICBSZW5kZXJidWZmZXIgKmdldFJlYWRDb2xvcmJ1ZmZlcigpIGNvbnN0OworICAgIEdMZW51bSBn
ZXRSZWFkQ29sb3JidWZmZXJUeXBlKCkgY29uc3Q7CisgICAgUmVuZGVyYnVmZmVyICpnZXRGaXJz
dENvbG9yYnVmZmVyKCkgY29uc3Q7CisKKyAgICBHTGVudW0gZ2V0Q29sb3JidWZmZXJUeXBlKHVu
c2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQpIGNvbnN0OworICAgIEdMZW51bSBnZXREZXB0aGJ1
ZmZlclR5cGUoKSBjb25zdDsKKyAgICBHTGVudW0gZ2V0U3RlbmNpbGJ1ZmZlclR5cGUoKSBjb25z
dDsKKworICAgIEdMdWludCBnZXRDb2xvcmJ1ZmZlckhhbmRsZSh1bnNpZ25lZCBpbnQgY29sb3JB
dHRhY2htZW50KSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0RGVwdGhidWZmZXJIYW5kbGUoKSBjb25z
dDsKKyAgICBHTHVpbnQgZ2V0U3RlbmNpbGJ1ZmZlckhhbmRsZSgpIGNvbnN0OworCisgICAgR0xl
bnVtIGdldERyYXdCdWZmZXJTdGF0ZSh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25z
dDsKKyAgICB2b2lkIHNldERyYXdCdWZmZXJTdGF0ZSh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2ht
ZW50LCBHTGVudW0gZHJhd0J1ZmZlcik7CisKKyAgICBib29sIGlzRW5hYmxlZENvbG9yQXR0YWNo
bWVudCh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25zdDsKKyAgICBib29sIGhhc0Vu
YWJsZWRDb2xvckF0dGFjaG1lbnQoKSBjb25zdDsKKyAgICBib29sIGhhc1N0ZW5jaWwoKSBjb25z
dDsKKyAgICBpbnQgZ2V0U2FtcGxlcygpIGNvbnN0OworICAgIGJvb2wgdXNpbmdFeHRlbmRlZERy
YXdCdWZmZXJzKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEdMZW51bSBjb21wbGV0ZW5lc3MoKSBj
b25zdDsKKworICBwcm90ZWN0ZWQ6CisgICAgR0xlbnVtIG1Db2xvcmJ1ZmZlclR5cGVzW0lNUExF
TUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlNdOworICAgIEJpbmRpbmdQb2ludGVyPFJlbmRlcmJ1
ZmZlcj4gbUNvbG9yYnVmZmVyUG9pbnRlcnNbSU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVS
U107CisgICAgR0xlbnVtIG1EcmF3QnVmZmVyU3RhdGVzW0lNUExFTUVOVEFUSU9OX01BWF9EUkFX
X0JVRkZFUlNdOworICAgIEdMZW51bSBtUmVhZEJ1ZmZlclN0YXRlOworCisgICAgR0xlbnVtIG1E
ZXB0aGJ1ZmZlclR5cGU7CisgICAgQmluZGluZ1BvaW50ZXI8UmVuZGVyYnVmZmVyPiBtRGVwdGhi
dWZmZXJQb2ludGVyOworCisgICAgR0xlbnVtIG1TdGVuY2lsYnVmZmVyVHlwZTsKKyAgICBCaW5k
aW5nUG9pbnRlcjxSZW5kZXJidWZmZXI+IG1TdGVuY2lsYnVmZmVyUG9pbnRlcjsKKworICAgIHJ4
OjpSZW5kZXJlciAqbVJlbmRlcmVyOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOKEZyYW1lYnVmZmVyKTsKKworICAgIFJlbmRlcmJ1ZmZlciAqbG9va3VwUmVuZGVy
YnVmZmVyKEdMZW51bSB0eXBlLCBHTHVpbnQgaGFuZGxlKSBjb25zdDsKK307CisKK2NsYXNzIERl
ZmF1bHRGcmFtZWJ1ZmZlciA6IHB1YmxpYyBGcmFtZWJ1ZmZlcgoreworICBwdWJsaWM6CisgICAg
RGVmYXVsdEZyYW1lYnVmZmVyKHJ4OjpSZW5kZXJlciAqUmVuZGVyZXIsIENvbG9yYnVmZmVyICpj
b2xvcmJ1ZmZlciwgRGVwdGhTdGVuY2lsYnVmZmVyICpkZXB0aFN0ZW5jaWwpOworCisgICAgdmly
dHVhbCBHTGVudW0gY29tcGxldGVuZXNzKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBESVNB
TExPV19DT1BZX0FORF9BU1NJR04oRGVmYXVsdEZyYW1lYnVmZmVyKTsKK307CisKK30KKworI2Vu
ZGlmICAgLy8gTElCR0xFU1YyX0ZSQU1FQlVGRkVSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL0hhbmRsZUFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9I
YW5kbGVBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisjaW5jbHVk
ZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEhhbmRsZUFsbG9jYXRv
ci5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpIYW5kbGVBbGxvY2F0b3IgY2xhc3MsIHdoaWNoIGlz
IHVzZWQKKy8vIHRvIGFsbG9jYXRlIEdMIGhhbmRsZXMuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIv
SGFuZGxlQWxsb2NhdG9yLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorCituYW1l
c3BhY2UgZ2wKK3sKKworSGFuZGxlQWxsb2NhdG9yOjpIYW5kbGVBbGxvY2F0b3IoKSA6IG1CYXNl
VmFsdWUoMSksIG1OZXh0VmFsdWUoMSkKK3sKK30KKworSGFuZGxlQWxsb2NhdG9yOjp+SGFuZGxl
QWxsb2NhdG9yKCkKK3sKK30KKwordm9pZCBIYW5kbGVBbGxvY2F0b3I6OnNldEJhc2VIYW5kbGUo
R0x1aW50IHZhbHVlKQoreworICAgIEFTU0VSVChtQmFzZVZhbHVlID09IG1OZXh0VmFsdWUpOwor
ICAgIG1CYXNlVmFsdWUgPSB2YWx1ZTsKKyAgICBtTmV4dFZhbHVlID0gdmFsdWU7Cit9CisKK0dM
dWludCBIYW5kbGVBbGxvY2F0b3I6OmFsbG9jYXRlKCkKK3sKKyAgICBpZiAobUZyZWVWYWx1ZXMu
c2l6ZSgpKQorICAgIHsKKyAgICAgICAgR0x1aW50IGhhbmRsZSA9IG1GcmVlVmFsdWVzLmJhY2so
KTsKKyAgICAgICAgbUZyZWVWYWx1ZXMucG9wX2JhY2soKTsKKyAgICAgICAgcmV0dXJuIGhhbmRs
ZTsKKyAgICB9CisgICAgcmV0dXJuIG1OZXh0VmFsdWUrKzsKK30KKwordm9pZCBIYW5kbGVBbGxv
Y2F0b3I6OnJlbGVhc2UoR0x1aW50IGhhbmRsZSkKK3sKKyAgICBpZiAoaGFuZGxlID09IG1OZXh0
VmFsdWUgLSAxKQorICAgIHsKKyAgICAgICAgLy8gRG9uJ3QgZHJvcCBiZWxvdyBiYXNlIHZhbHVl
CisgICAgICAgIGlmKG1OZXh0VmFsdWUgPiBtQmFzZVZhbHVlKQorICAgICAgICB7CisgICAgICAg
ICAgICBtTmV4dFZhbHVlLS07CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgLy8gT25seSBmcmVlIGhhbmRsZXMgdGhhdCB3ZSBvd24gLSBkb24ndCBkcm9wIGJlbG93
IHRoZSBiYXNlIHZhbHVlCisgICAgICAgIGlmIChoYW5kbGUgPj0gbUJhc2VWYWx1ZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgbUZyZWVWYWx1ZXMucHVzaF9iYWNrKGhhbmRsZSk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvSGFuZGxlQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEhhbmRs
ZUFsbG9jYXRvci5oOiBEZWZpbmVzIHRoZSBnbDo6SGFuZGxlQWxsb2NhdG9yIGNsYXNzLCB3aGlj
aCBpcyB1c2VkIHRvCisvLyBhbGxvY2F0ZSBHTCBoYW5kbGVzLgorCisjaWZuZGVmIExJQkdMRVNW
Ml9IQU5ETEVBTExPQ0FUT1JfSF8KKyNkZWZpbmUgTElCR0xFU1YyX0hBTkRMRUFMTE9DQVRPUl9I
XworCisjZGVmaW5lIEdMX0FQSUNBTEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKworI2luY2x1
ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFj
ZSBnbAoreworCitjbGFzcyBIYW5kbGVBbGxvY2F0b3IKK3sKKyAgcHVibGljOgorICAgIEhhbmRs
ZUFsbG9jYXRvcigpOworICAgIHZpcnR1YWwgfkhhbmRsZUFsbG9jYXRvcigpOworCisgICAgdm9p
ZCBzZXRCYXNlSGFuZGxlKEdMdWludCB2YWx1ZSk7CisKKyAgICBHTHVpbnQgYWxsb2NhdGUoKTsK
KyAgICB2b2lkIHJlbGVhc2UoR0x1aW50IGhhbmRsZSk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNB
TExPV19DT1BZX0FORF9BU1NJR04oSGFuZGxlQWxsb2NhdG9yKTsKKworICAgIEdMdWludCBtQmFz
ZVZhbHVlOworICAgIEdMdWludCBtTmV4dFZhbHVlOworICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8
R0x1aW50PiBIYW5kbGVMaXN0OworICAgIEhhbmRsZUxpc3QgbUZyZWVWYWx1ZXM7Cit9OworCit9
CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9IQU5ETEVBTExPQ0FUT1JfSF8KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3Jh
bS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTI1IEBACisjaW5jbHVkZSAicHJlY29tcGls
ZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFByb2dyYW0uY3BwOiBJbXBsZW1lbnRzIHRo
ZSBnbDo6UHJvZ3JhbSBjbGFzcy4gSW1wbGVtZW50cyBHTCBwcm9ncmFtIG9iamVjdHMKKy8vIGFu
ZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDIuMTAu
MyBwYWdlIDI4LgorCisjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW0uaCIKKyNpbmNsdWRlICJs
aWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9SZXNvdXJjZU1h
bmFnZXIuaCIKKworbmFtZXNwYWNlIGdsCit7Citjb25zdCBjaGFyICogY29uc3QgZ19mYWtlcGF0
aCA9ICJDOlxcZmFrZXBhdGgiOworCitBdHRyaWJ1dGVCaW5kaW5nczo6QXR0cmlidXRlQmluZGlu
Z3MoKQoreworfQorCitBdHRyaWJ1dGVCaW5kaW5nczo6fkF0dHJpYnV0ZUJpbmRpbmdzKCkKK3sK
K30KKworSW5mb0xvZzo6SW5mb0xvZygpIDogbUluZm9Mb2coTlVMTCkKK3sKK30KKworSW5mb0xv
Zzo6fkluZm9Mb2coKQoreworICAgIGRlbGV0ZVtdIG1JbmZvTG9nOworfQorCisKK2ludCBJbmZv
TG9nOjpnZXRMZW5ndGgoKSBjb25zdAoreworICAgIGlmICghbUluZm9Mb2cpCisgICAgeworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICByZXR1cm4gc3Ry
bGVuKG1JbmZvTG9nKSArIDE7CisgICAgfQorfQorCit2b2lkIEluZm9Mb2c6OmdldExvZyhHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZykKK3sKKyAgICBpbnQg
aW5kZXggPSAwOworCisgICAgaWYgKGJ1ZlNpemUgPiAwKQorICAgIHsKKyAgICAgICAgaWYgKG1J
bmZvTG9nKQorICAgICAgICB7CisgICAgICAgICAgICBpbmRleCA9IHN0ZDo6bWluKGJ1ZlNpemUg
LSAxLCAoaW50KXN0cmxlbihtSW5mb0xvZykpOworICAgICAgICAgICAgbWVtY3B5KGluZm9Mb2cs
IG1JbmZvTG9nLCBpbmRleCk7CisgICAgICAgIH0KKworICAgICAgICBpbmZvTG9nW2luZGV4XSA9
ICdcMCc7CisgICAgfQorCisgICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICAgICpsZW5ndGgg
PSBpbmRleDsKKyAgICB9Cit9CisKKy8vIGFwcGVuZCBhIHNhbnRpemVkIG1lc3NhZ2UgdG8gdGhl
IHByb2dyYW0gaW5mbyBsb2cuCisvLyBUaGUgRDNEIGNvbXBpbGVyIGluY2x1ZGVzIGEgZmFrZSBm
aWxlIHBhdGggaW4gc29tZSBvZiB0aGUgd2FybmluZyBvciBlcnJvciAKKy8vIG1lc3NhZ2VzLCBz
byBsZXRzIHJlbW92ZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhpcyBmYWtlIGZpbGUgcGF0aCBmcm9t
IHRoZSBsb2cuCit2b2lkIEluZm9Mb2c6OmFwcGVuZFNhbml0aXplZChjb25zdCBjaGFyICptZXNz
YWdlKQoreworICAgIHN0ZDo6c3RyaW5nIG1zZyhtZXNzYWdlKTsKKworICAgIHNpemVfdCBmb3Vu
ZDsKKyAgICBkbworICAgIHsKKyAgICAgICAgZm91bmQgPSBtc2cuZmluZChnX2Zha2VwYXRoKTsK
KyAgICAgICAgaWYgKGZvdW5kICE9IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgICB7CisgICAg
ICAgICAgICBtc2cuZXJhc2UoZm91bmQsIHN0cmxlbihnX2Zha2VwYXRoKSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgd2hpbGUgKGZvdW5kICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsKKworICAgIGFw
cGVuZCgiJXMiLCBtc2cuY19zdHIoKSk7Cit9CisKK3ZvaWQgSW5mb0xvZzo6YXBwZW5kKGNvbnN0
IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIGlmICghZm9ybWF0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGNoYXIgaW5mb1sxMDI0XTsKKworICAgIHZhX2xpc3QgdmFy
YXJnOworICAgIHZhX3N0YXJ0KHZhcmFyZywgZm9ybWF0KTsKKyAgICB2c25wcmludGYoaW5mbywg
c2l6ZW9mKGluZm8pLCBmb3JtYXQsIHZhcmFyZyk7CisgICAgdmFfZW5kKHZhcmFyZyk7CisKKyAg
ICBzaXplX3QgaW5mb0xlbmd0aCA9IHN0cmxlbihpbmZvKTsKKworICAgIGlmICghbUluZm9Mb2cp
CisgICAgeworICAgICAgICBtSW5mb0xvZyA9IG5ldyBjaGFyW2luZm9MZW5ndGggKyAyXTsKKyAg
ICAgICAgc3RyY3B5KG1JbmZvTG9nLCBpbmZvKTsKKyAgICAgICAgc3RyY3B5KG1JbmZvTG9nICsg
aW5mb0xlbmd0aCwgIlxuIik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHNpemVf
dCBsb2dMZW5ndGggPSBzdHJsZW4obUluZm9Mb2cpOworICAgICAgICBjaGFyICpuZXdMb2cgPSBu
ZXcgY2hhcltsb2dMZW5ndGggKyBpbmZvTGVuZ3RoICsgMl07CisgICAgICAgIHN0cmNweShuZXdM
b2csIG1JbmZvTG9nKTsKKyAgICAgICAgc3RyY3B5KG5ld0xvZyArIGxvZ0xlbmd0aCwgaW5mbyk7
CisgICAgICAgIHN0cmNweShuZXdMb2cgKyBsb2dMZW5ndGggKyBpbmZvTGVuZ3RoLCAiXG4iKTsK
KworICAgICAgICBkZWxldGVbXSBtSW5mb0xvZzsKKyAgICAgICAgbUluZm9Mb2cgPSBuZXdMb2c7
CisgICAgfQorfQorCit2b2lkIEluZm9Mb2c6OnJlc2V0KCkKK3sKKyAgICBpZiAobUluZm9Mb2cp
CisgICAgeworICAgICAgICBkZWxldGUgW10gbUluZm9Mb2c7CisgICAgICAgIG1JbmZvTG9nID0g
TlVMTDsKKyAgICB9Cit9CisKK1Byb2dyYW06OlByb2dyYW0ocng6OlJlbmRlcmVyICpyZW5kZXJl
ciwgUmVzb3VyY2VNYW5hZ2VyICptYW5hZ2VyLCBHTHVpbnQgaGFuZGxlKSA6IG1SZXNvdXJjZU1h
bmFnZXIobWFuYWdlciksIG1IYW5kbGUoaGFuZGxlKQoreworICAgIG1GcmFnbWVudFNoYWRlciA9
IE5VTEw7CisgICAgbVZlcnRleFNoYWRlciA9IE5VTEw7CisgICAgbVByb2dyYW1CaW5hcnkuc2V0
KE5VTEwpOworICAgIG1EZWxldGVTdGF0dXMgPSBmYWxzZTsKKyAgICBtTGlua2VkID0gZmFsc2U7
CisgICAgbVJlZkNvdW50ID0gMDsKKyAgICBtUmVuZGVyZXIgPSByZW5kZXJlcjsKK30KKworUHJv
Z3JhbTo6flByb2dyYW0oKQoreworICAgIHVubGluayh0cnVlKTsKKworICAgIGlmIChtVmVydGV4
U2hhZGVyICE9IE5VTEwpCisgICAgeworICAgICAgICBtVmVydGV4U2hhZGVyLT5yZWxlYXNlKCk7
CisgICAgfQorCisgICAgaWYgKG1GcmFnbWVudFNoYWRlciAhPSBOVUxMKQorICAgIHsKKyAgICAg
ICAgbUZyYWdtZW50U2hhZGVyLT5yZWxlYXNlKCk7CisgICAgfQorfQorCitib29sIFByb2dyYW06
OmF0dGFjaFNoYWRlcihTaGFkZXIgKnNoYWRlcikKK3sKKyAgICBpZiAoc2hhZGVyLT5nZXRUeXBl
KCkgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICB7CisgICAgICAgIGlmIChtVmVydGV4U2hhZGVy
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAg
ICAgICBtVmVydGV4U2hhZGVyID0gKFZlcnRleFNoYWRlciopc2hhZGVyOworICAgICAgICBtVmVy
dGV4U2hhZGVyLT5hZGRSZWYoKTsKKyAgICB9CisgICAgZWxzZSBpZiAoc2hhZGVyLT5nZXRUeXBl
KCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAgaWYgKG1GcmFnbWVudFNo
YWRlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisK
KyAgICAgICAgbUZyYWdtZW50U2hhZGVyID0gKEZyYWdtZW50U2hhZGVyKilzaGFkZXI7CisgICAg
ICAgIG1GcmFnbWVudFNoYWRlci0+YWRkUmVmKCk7CisgICAgfQorICAgIGVsc2UgVU5SRUFDSEFC
TEUoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dyYW06OmRldGFjaFNoYWRl
cihTaGFkZXIgKnNoYWRlcikKK3sKKyAgICBpZiAoc2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfVkVS
VEVYX1NIQURFUikKKyAgICB7CisgICAgICAgIGlmIChtVmVydGV4U2hhZGVyICE9IHNoYWRlcikK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAg
ICAgbVZlcnRleFNoYWRlci0+cmVsZWFzZSgpOworICAgICAgICBtVmVydGV4U2hhZGVyID0gTlVM
TDsKKyAgICB9CisgICAgZWxzZSBpZiAoc2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfRlJBR01FTlRf
U0hBREVSKQorICAgIHsKKyAgICAgICAgaWYgKG1GcmFnbWVudFNoYWRlciAhPSBzaGFkZXIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAg
IG1GcmFnbWVudFNoYWRlci0+cmVsZWFzZSgpOworICAgICAgICBtRnJhZ21lbnRTaGFkZXIgPSBO
VUxMOworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworaW50IFByb2dyYW06OmdldEF0dGFjaGVkU2hhZGVyc0NvdW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gKG1WZXJ0ZXhTaGFkZXIgPyAxIDogMCkgKyAobUZyYWdtZW50U2hhZGVyID8gMSA6
IDApOworfQorCit2b2lkIEF0dHJpYnV0ZUJpbmRpbmdzOjpiaW5kQXR0cmlidXRlTG9jYXRpb24o
R0x1aW50IGluZGV4LCBjb25zdCBjaGFyICpuYW1lKQoreworICAgIGlmIChpbmRleCA8IE1BWF9W
RVJURVhfQVRUUklCUykKKyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1ZF
UlRFWF9BVFRSSUJTOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG1BdHRyaWJ1dGVCaW5k
aW5nW2ldLmVyYXNlKG5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgbUF0dHJpYnV0ZUJpbmRp
bmdbaW5kZXhdLmluc2VydChuYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgUHJvZ3JhbTo6YmluZEF0
dHJpYnV0ZUxvY2F0aW9uKEdMdWludCBpbmRleCwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBt
QXR0cmlidXRlQmluZGluZ3MuYmluZEF0dHJpYnV0ZUxvY2F0aW9uKGluZGV4LCBuYW1lKTsKK30K
KworLy8gTGlua3MgdGhlIEhMU0wgY29kZSBvZiB0aGUgdmVydGV4IGFuZCBwaXhlbCBzaGFkZXIg
YnkgbWF0Y2hpbmcgdXAgdGhlaXIgdmFyeWluZ3MsCisvLyBjb21waWxpbmcgdGhlbSBpbnRvIGJp
bmFyaWVzLCBkZXRlcm1pbmluZyB0aGUgYXR0cmlidXRlIG1hcHBpbmdzLCBhbmQgY29sbGVjdGlu
ZworLy8gYSBsaXN0IG9mIHVuaWZvcm1zCitib29sIFByb2dyYW06OmxpbmsoKQoreworICAgIHVu
bGluayhmYWxzZSk7CisKKyAgICBtSW5mb0xvZy5yZXNldCgpOworCisgICAgbVByb2dyYW1CaW5h
cnkuc2V0KG5ldyBQcm9ncmFtQmluYXJ5KG1SZW5kZXJlcikpOworICAgIG1MaW5rZWQgPSBtUHJv
Z3JhbUJpbmFyeS0+bGluayhtSW5mb0xvZywgbUF0dHJpYnV0ZUJpbmRpbmdzLCBtRnJhZ21lbnRT
aGFkZXIsIG1WZXJ0ZXhTaGFkZXIpOworCisgICAgcmV0dXJuIG1MaW5rZWQ7Cit9CisKK2ludCBB
dHRyaWJ1dGVCaW5kaW5nczo6Z2V0QXR0cmlidXRlQmluZGluZyhjb25zdCBzdGQ6OnN0cmluZyAm
bmFtZSkgY29uc3QKK3sKKyAgICBmb3IgKGludCBsb2NhdGlvbiA9IDA7IGxvY2F0aW9uIDwgTUFY
X1ZFUlRFWF9BVFRSSUJTOyBsb2NhdGlvbisrKQorICAgIHsKKyAgICAgICAgaWYgKG1BdHRyaWJ1
dGVCaW5kaW5nW2xvY2F0aW9uXS5maW5kKG5hbWUpICE9IG1BdHRyaWJ1dGVCaW5kaW5nW2xvY2F0
aW9uXS5lbmQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCisvLyBSZXR1cm5zIHRoZSBwcm9n
cmFtIG9iamVjdCB0byBhbiB1bmxpbmtlZCBzdGF0ZSwgYmVmb3JlIHJlLWxpbmtpbmcsIG9yIGF0
IGRlc3RydWN0aW9uCit2b2lkIFByb2dyYW06OnVubGluayhib29sIGRlc3Ryb3kpCit7CisgICAg
aWYgKGRlc3Ryb3kpICAgLy8gT2JqZWN0IGJlaW5nIGRlc3RydWN0ZWQKKyAgICB7CisgICAgICAg
IGlmIChtRnJhZ21lbnRTaGFkZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1GcmFnbWVudFNo
YWRlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgbUZyYWdtZW50U2hhZGVyID0gTlVMTDsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChtVmVydGV4U2hhZGVyKQorICAgICAgICB7CisgICAgICAg
ICAgICBtVmVydGV4U2hhZGVyLT5yZWxlYXNlKCk7CisgICAgICAgICAgICBtVmVydGV4U2hhZGVy
ID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1Qcm9ncmFtQmluYXJ5LnNldChOVUxM
KTsKKyAgICBtTGlua2VkID0gZmFsc2U7Cit9CisKK2Jvb2wgUHJvZ3JhbTo6aXNMaW5rZWQoKQor
eworICAgIHJldHVybiBtTGlua2VkOworfQorCitQcm9ncmFtQmluYXJ5KiBQcm9ncmFtOjpnZXRQ
cm9ncmFtQmluYXJ5KCkKK3sKKyAgICByZXR1cm4gbVByb2dyYW1CaW5hcnkuZ2V0KCk7Cit9CisK
K2Jvb2wgUHJvZ3JhbTo6c2V0UHJvZ3JhbUJpbmFyeShjb25zdCB2b2lkICpiaW5hcnksIEdMc2l6
ZWkgbGVuZ3RoKQoreworICAgIHVubGluayhmYWxzZSk7CisKKyAgICBtSW5mb0xvZy5yZXNldCgp
OworCisgICAgbVByb2dyYW1CaW5hcnkuc2V0KG5ldyBQcm9ncmFtQmluYXJ5KG1SZW5kZXJlcikp
OworICAgIG1MaW5rZWQgPSBtUHJvZ3JhbUJpbmFyeS0+bG9hZChtSW5mb0xvZywgYmluYXJ5LCBs
ZW5ndGgpOworICAgIGlmICghbUxpbmtlZCkKKyAgICB7CisgICAgICAgIG1Qcm9ncmFtQmluYXJ5
LnNldChOVUxMKTsKKyAgICB9CisKKyAgICByZXR1cm4gbUxpbmtlZDsKK30KKwordm9pZCBQcm9n
cmFtOjpyZWxlYXNlKCkKK3sKKyAgICBtUmVmQ291bnQtLTsKKworICAgIGlmIChtUmVmQ291bnQg
PT0gMCAmJiBtRGVsZXRlU3RhdHVzKQorICAgIHsKKyAgICAgICAgbVJlc291cmNlTWFuYWdlci0+
ZGVsZXRlUHJvZ3JhbShtSGFuZGxlKTsKKyAgICB9Cit9CisKK3ZvaWQgUHJvZ3JhbTo6YWRkUmVm
KCkKK3sKKyAgICBtUmVmQ291bnQrKzsKK30KKwordW5zaWduZWQgaW50IFByb2dyYW06OmdldFJl
ZkNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlZkNvdW50OworfQorCitHTGludCBQcm9n
cmFtOjpnZXRQcm9ncmFtQmluYXJ5TGVuZ3RoKCkgY29uc3QKK3sKKyAgICBQcm9ncmFtQmluYXJ5
ICpwcm9ncmFtQmluYXJ5ID0gbVByb2dyYW1CaW5hcnkuZ2V0KCk7CisgICAgaWYgKHByb2dyYW1C
aW5hcnkpCisgICAgeworICAgICAgICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0TGVuZ3RoKCk7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwor
aW50IFByb2dyYW06OmdldEluZm9Mb2dMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtSW5m
b0xvZy5nZXRMZW5ndGgoKTsKK30KKwordm9pZCBQcm9ncmFtOjpnZXRJbmZvTG9nKEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICppbmZvTG9nKQoreworICAgIHJldHVybiBt
SW5mb0xvZy5nZXRMb2coYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKTsKK30KKwordm9pZCBQcm9n
cmFtOjpnZXRBdHRhY2hlZFNoYWRlcnMoR0xzaXplaSBtYXhDb3VudCwgR0xzaXplaSAqY291bnQs
IEdMdWludCAqc2hhZGVycykKK3sKKyAgICBpbnQgdG90YWwgPSAwOworCisgICAgaWYgKG1WZXJ0
ZXhTaGFkZXIpCisgICAgeworICAgICAgICBpZiAodG90YWwgPCBtYXhDb3VudCkKKyAgICAgICAg
eworICAgICAgICAgICAgc2hhZGVyc1t0b3RhbF0gPSBtVmVydGV4U2hhZGVyLT5nZXRIYW5kbGUo
KTsKKyAgICAgICAgfQorCisgICAgICAgIHRvdGFsKys7CisgICAgfQorCisgICAgaWYgKG1GcmFn
bWVudFNoYWRlcikKKyAgICB7CisgICAgICAgIGlmICh0b3RhbCA8IG1heENvdW50KQorICAgICAg
ICB7CisgICAgICAgICAgICBzaGFkZXJzW3RvdGFsXSA9IG1GcmFnbWVudFNoYWRlci0+Z2V0SGFu
ZGxlKCk7CisgICAgICAgIH0KKworICAgICAgICB0b3RhbCsrOworICAgIH0KKworICAgIGlmIChj
b3VudCkKKyAgICB7CisgICAgICAgICpjb3VudCA9IHRvdGFsOworICAgIH0KK30KKwordm9pZCBQ
cm9ncmFtOjpnZXRBY3RpdmVBdHRyaWJ1dGUoR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUs
IEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1l
KQoreworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBnZXRQcm9ncmFtQmluYXJ5
KCk7CisgICAgaWYgKHByb2dyYW1CaW5hcnkpCisgICAgeworICAgICAgICBwcm9ncmFtQmluYXJ5
LT5nZXRBY3RpdmVBdHRyaWJ1dGUoaW5kZXgsIGJ1ZnNpemUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwg
bmFtZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmIChidWZzaXplID4gMCkK
KyAgICAgICAgeworICAgICAgICAgICAgbmFtZVswXSA9ICdcMCc7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGlmIChsZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAgICpsZW5ndGgg
PSAwOworICAgICAgICB9CisKKyAgICAgICAgKnR5cGUgPSBHTF9OT05FOworICAgICAgICAqc2l6
ZSA9IDE7CisgICAgfQorfQorCitHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVBdHRyaWJ1dGVDb3Vu
dCgpCit7CisgICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGdldFByb2dyYW1CaW5h
cnkoKTsKKyAgICBpZiAocHJvZ3JhbUJpbmFyeSkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9n
cmFtQmluYXJ5LT5nZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgpOworICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK0dMaW50IFByb2dyYW06OmdldEFj
dGl2ZUF0dHJpYnV0ZU1heExlbmd0aCgpCit7CisgICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJp
bmFyeSA9IGdldFByb2dyYW1CaW5hcnkoKTsKKyAgICBpZiAocHJvZ3JhbUJpbmFyeSkKKyAgICB7
CisgICAgICAgIHJldHVybiBwcm9ncmFtQmluYXJ5LT5nZXRBY3RpdmVBdHRyaWJ1dGVNYXhMZW5n
dGgoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
fQorCit2b2lkIFByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm0oR0x1aW50IGluZGV4LCBHTHNpemVp
IGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xj
aGFyICpuYW1lKQoreworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBnZXRQcm9n
cmFtQmluYXJ5KCk7CisgICAgaWYgKHByb2dyYW1CaW5hcnkpCisgICAgeworICAgICAgICByZXR1
cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0QWN0aXZlVW5pZm9ybShpbmRleCwgYnVmc2l6ZSwgbGVuZ3Ro
LCBzaXplLCB0eXBlLCBuYW1lKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYg
KGJ1ZnNpemUgPiAwKQorICAgICAgICB7CisgICAgICAgICAgICBuYW1lWzBdID0gJ1wwJzsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChsZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAgICps
ZW5ndGggPSAwOworICAgICAgICB9CisKKyAgICAgICAgKnNpemUgPSAwOworICAgICAgICAqdHlw
ZSA9IEdMX05PTkU7CisgICAgfQorfQorCitHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3Jt
Q291bnQoKQoreworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBnZXRQcm9ncmFt
QmluYXJ5KCk7CisgICAgaWYgKHByb2dyYW1CaW5hcnkpCisgICAgeworICAgICAgICByZXR1cm4g
cHJvZ3JhbUJpbmFyeS0+Z2V0QWN0aXZlVW5pZm9ybUNvdW50KCk7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworR0xpbnQgUHJvZ3JhbTo6Z2V0
QWN0aXZlVW5pZm9ybU1heExlbmd0aCgpCit7CisgICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJp
bmFyeSA9IGdldFByb2dyYW1CaW5hcnkoKTsKKyAgICBpZiAocHJvZ3JhbUJpbmFyeSkKKyAgICB7
CisgICAgICAgIHJldHVybiBwcm9ncmFtQmluYXJ5LT5nZXRBY3RpdmVVbmlmb3JtTWF4TGVuZ3Ro
KCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30K
Kwordm9pZCBQcm9ncmFtOjpmbGFnRm9yRGVsZXRpb24oKQoreworICAgIG1EZWxldGVTdGF0dXMg
PSB0cnVlOworfQorCitib29sIFByb2dyYW06OmlzRmxhZ2dlZEZvckRlbGV0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbURlbGV0ZVN0YXR1czsKK30KKwordm9pZCBQcm9ncmFtOjp2YWxpZGF0
ZSgpCit7CisgICAgbUluZm9Mb2cucmVzZXQoKTsKKworICAgIFByb2dyYW1CaW5hcnkgKnByb2dy
YW1CaW5hcnkgPSBnZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgaWYgKGlzTGlua2VkKCkgJiYgcHJv
Z3JhbUJpbmFyeSkKKyAgICB7CisgICAgICAgIHByb2dyYW1CaW5hcnktPnZhbGlkYXRlKG1JbmZv
TG9nKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbUluZm9Mb2cuYXBwZW5kKCJQ
cm9ncmFtIGhhcyBub3QgYmVlbiBzdWNjZXNzZnVsbHkgbGlua2VkLiIpOworICAgIH0KK30KKwor
Ym9vbCBQcm9ncmFtOjppc1ZhbGlkYXRlZCgpIGNvbnN0Cit7CisgICAgUHJvZ3JhbUJpbmFyeSAq
cHJvZ3JhbUJpbmFyeSA9IG1Qcm9ncmFtQmluYXJ5LmdldCgpOworICAgIGlmIChwcm9ncmFtQmlu
YXJ5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb2dyYW1CaW5hcnktPmlzVmFsaWRhdGVkKCk7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9
CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3Jh
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
UHJvZ3JhbS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9Qcm9ncmFtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMwIEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisvLyBQcm9ncmFtLmg6IERlZmluZXMgdGhlIGdsOjpQcm9ncmFtIGNsYXNz
LiBJbXBsZW1lbnRzIEdMIHByb2dyYW0gb2JqZWN0cworLy8gYW5kIHJlbGF0ZWQgZnVuY3Rpb25h
bGl0eS4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMi4xMC4zIHBhZ2UgMjguCisKKyNpZm5k
ZWYgTElCR0xFU1YyX1BST0dSQU1fSF8KKyNkZWZpbmUgTElCR0xFU1YyX1BST0dSQU1fSF8KKwor
I2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDxzZXQ+CisKKyNpbmNsdWRlICJjb21tb24vYW5n
bGV1dGlscy5oIgorI2luY2x1ZGUgImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9Db25zdGFudHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJl
cjsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBSZXNvdXJjZU1hbmFnZXI7CitjbGFzcyBG
cmFnbWVudFNoYWRlcjsKK2NsYXNzIFZlcnRleFNoYWRlcjsKK2NsYXNzIFByb2dyYW1CaW5hcnk7
CitjbGFzcyBTaGFkZXI7CisKK2V4dGVybiBjb25zdCBjaGFyICogY29uc3QgZ19mYWtlcGF0aDsK
KworY2xhc3MgQXR0cmlidXRlQmluZGluZ3MKK3sKKyAgcHVibGljOgorICAgIEF0dHJpYnV0ZUJp
bmRpbmdzKCk7CisgICAgfkF0dHJpYnV0ZUJpbmRpbmdzKCk7CisKKyAgICB2b2lkIGJpbmRBdHRy
aWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpOworICAgIGludCBn
ZXRBdHRyaWJ1dGVCaW5kaW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsKKworICBw
cml2YXRlOgorICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtQXR0cmlidXRlQmluZGluZ1tNQVhf
VkVSVEVYX0FUVFJJQlNdOworfTsKKworY2xhc3MgSW5mb0xvZworeworICBwdWJsaWM6CisgICAg
SW5mb0xvZygpOworICAgIH5JbmZvTG9nKCk7CisKKyAgICBpbnQgZ2V0TGVuZ3RoKCkgY29uc3Q7
CisgICAgdm9pZCBnZXRMb2coR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIg
KmluZm9Mb2cpOworCisgICAgdm9pZCBhcHBlbmRTYW5pdGl6ZWQoY29uc3QgY2hhciAqbWVzc2Fn
ZSk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciAqaW5mbywgLi4uKTsKKyAgICB2b2lkIHJl
c2V0KCk7CisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEluZm9Mb2cp
OworICAgIGNoYXIgKm1JbmZvTG9nOworfTsKKworY2xhc3MgUHJvZ3JhbQoreworICBwdWJsaWM6
CisgICAgUHJvZ3JhbShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBSZXNvdXJjZU1hbmFnZXIgKm1h
bmFnZXIsIEdMdWludCBoYW5kbGUpOworCisgICAgflByb2dyYW0oKTsKKworICAgIGJvb2wgYXR0
YWNoU2hhZGVyKFNoYWRlciAqc2hhZGVyKTsKKyAgICBib29sIGRldGFjaFNoYWRlcihTaGFkZXIg
KnNoYWRlcik7CisgICAgaW50IGdldEF0dGFjaGVkU2hhZGVyc0NvdW50KCkgY29uc3Q7CisKKyAg
ICB2b2lkIGJpbmRBdHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5h
bWUpOworCisgICAgYm9vbCBsaW5rKCk7CisgICAgYm9vbCBpc0xpbmtlZCgpOworICAgIGJvb2wg
c2V0UHJvZ3JhbUJpbmFyeShjb25zdCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKTsKKyAg
ICBQcm9ncmFtQmluYXJ5ICpnZXRQcm9ncmFtQmluYXJ5KCk7CisKKyAgICBpbnQgZ2V0SW5mb0xv
Z0xlbmd0aCgpIGNvbnN0OworICAgIHZvaWQgZ2V0SW5mb0xvZyhHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZyk7CisgICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRl
cnMoR0xzaXplaSBtYXhDb3VudCwgR0xzaXplaSAqY291bnQsIEdMdWludCAqc2hhZGVycyk7CisK
KyAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYnV0ZShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6
ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5h
bWUpOworICAgIEdMaW50IGdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCk7CisgICAgR0xpbnQgZ2V0
QWN0aXZlQXR0cmlidXRlTWF4TGVuZ3RoKCk7CisKKyAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm0o
R0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNp
emUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKTsKKyAgICBHTGludCBnZXRBY3RpdmVVbmlm
b3JtQ291bnQoKTsKKyAgICBHTGludCBnZXRBY3RpdmVVbmlmb3JtTWF4TGVuZ3RoKCk7CisKKyAg
ICB2b2lkIGFkZFJlZigpOworICAgIHZvaWQgcmVsZWFzZSgpOworICAgIHVuc2lnbmVkIGludCBn
ZXRSZWZDb3VudCgpIGNvbnN0OworICAgIHZvaWQgZmxhZ0ZvckRlbGV0aW9uKCk7CisgICAgYm9v
bCBpc0ZsYWdnZWRGb3JEZWxldGlvbigpIGNvbnN0OworCisgICAgdm9pZCB2YWxpZGF0ZSgpOwor
ICAgIGJvb2wgaXNWYWxpZGF0ZWQoKSBjb25zdDsKKworICAgIEdMaW50IGdldFByb2dyYW1CaW5h
cnlMZW5ndGgoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTihQcm9ncmFtKTsKKworICAgIHZvaWQgdW5saW5rKGJvb2wgZGVzdHJveSA9IGZhbHNlKTsK
KworICAgIEZyYWdtZW50U2hhZGVyICptRnJhZ21lbnRTaGFkZXI7CisgICAgVmVydGV4U2hhZGVy
ICptVmVydGV4U2hhZGVyOworCisgICAgQXR0cmlidXRlQmluZGluZ3MgbUF0dHJpYnV0ZUJpbmRp
bmdzOworCisgICAgQmluZGluZ1BvaW50ZXI8UHJvZ3JhbUJpbmFyeT4gbVByb2dyYW1CaW5hcnk7
CisgICAgYm9vbCBtTGlua2VkOworICAgIGJvb2wgbURlbGV0ZVN0YXR1czsgICAvLyBGbGFnIHRv
IGluZGljYXRlIHRoYXQgdGhlIHByb2dyYW0gY2FuIGJlIGRlbGV0ZWQgd2hlbiBubyBsb25nZXIg
aW4gdXNlCisKKyAgICB1bnNpZ25lZCBpbnQgbVJlZkNvdW50OworCisgICAgUmVzb3VyY2VNYW5h
Z2VyICptUmVzb3VyY2VNYW5hZ2VyOworICAgIHJ4OjpSZW5kZXJlciAqbVJlbmRlcmVyOworICAg
IGNvbnN0IEdMdWludCBtSGFuZGxlOworCisgICAgSW5mb0xvZyBtSW5mb0xvZzsKK307Cit9CisK
KyNlbmRpZiAgIC8vIExJQkdMRVNWMl9QUk9HUkFNX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dy
YW1CaW5hcnkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2MjAgQEAKKyNpbmNsdWRlICJw
cmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUHJvZ3JhbS5jcHA6IEltcGxl
bWVudHMgdGhlIGdsOjpQcm9ncmFtIGNsYXNzLiBJbXBsZW1lbnRzIEdMIHByb2dyYW0gb2JqZWN0
cworLy8gYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rp
b24gMi4xMC4zIHBhZ2UgMjguCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvQmluYXJ5U3RyZWFtLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZS5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVn
LmgiCisjaW5jbHVkZSAiY29tbW9uL3ZlcnNpb24uaCIKKyNpbmNsdWRlICJ1dGlsaXRpZXMuaCIK
KworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1NoYWRl
ci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9Qcm9ncmFtLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlcmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRl
eERhdGFNYW5hZ2VyLmgiCisKKyN1bmRlZiBuZWFyCisjdW5kZWYgZmFyCisKK25hbWVzcGFjZSBn
bAoreworc3RkOjpzdHJpbmcgc3RyKGludCBpKQoreworICAgIGNoYXIgYnVmZmVyWzIwXTsKKyAg
ICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJWQiLCBpKTsKKyAgICByZXR1cm4g
YnVmZmVyOworfQorCitVbmlmb3JtTG9jYXRpb246OlVuaWZvcm1Mb2NhdGlvbihjb25zdCBzdGQ6
OnN0cmluZyAmbmFtZSwgdW5zaWduZWQgaW50IGVsZW1lbnQsIHVuc2lnbmVkIGludCBpbmRleCkg
CisgICAgOiBuYW1lKG5hbWUpLCBlbGVtZW50KGVsZW1lbnQpLCBpbmRleChpbmRleCkKK3sKK30K
KwordW5zaWduZWQgaW50IFByb2dyYW1CaW5hcnk6Om1DdXJyZW50U2VyaWFsID0gMTsKKworUHJv
Z3JhbUJpbmFyeTo6UHJvZ3JhbUJpbmFyeShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKSA6IG1SZW5k
ZXJlcihyZW5kZXJlciksIFJlZkNvdW50T2JqZWN0KDApLCBtU2VyaWFsKGlzc3VlU2VyaWFsKCkp
Cit7CisgICAgbVBpeGVsRXhlY3V0YWJsZSA9IE5VTEw7CisgICAgbVZlcnRleEV4ZWN1dGFibGUg
PSBOVUxMOworICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgPSBOVUxMOworCisgICAgbVZhbGlkYXRl
ZCA9IGZhbHNlOworCisgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IE1BWF9WRVJURVhf
QVRUUklCUzsgaW5kZXgrKykKKyAgICB7CisgICAgICAgIG1TZW1hbnRpY0luZGV4W2luZGV4XSA9
IC0xOworICAgIH0KKworICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBNQVhfVEVYVFVS
RV9JTUFHRV9VTklUUzsgaW5kZXgrKykKKyAgICB7CisgICAgICAgIG1TYW1wbGVyc1BTW2luZGV4
XS5hY3RpdmUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4
IDwgSU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOyBpbmRleCsr
KQorICAgIHsKKyAgICAgICAgbVNhbXBsZXJzVlNbaW5kZXhdLmFjdGl2ZSA9IGZhbHNlOworICAg
IH0KKworICAgIG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlID0gMDsKKyAgICBtVXNlZFBpeGVsU2Ft
cGxlclJhbmdlID0gMDsKKyAgICBtVXNlc1BvaW50U2l6ZSA9IGZhbHNlOworfQorCitQcm9ncmFt
QmluYXJ5Ojp+UHJvZ3JhbUJpbmFyeSgpCit7CisgICAgZGVsZXRlIG1QaXhlbEV4ZWN1dGFibGU7
CisgICAgbVBpeGVsRXhlY3V0YWJsZSA9IE5VTEw7CisKKyAgICBkZWxldGUgbVZlcnRleEV4ZWN1
dGFibGU7CisgICAgbVZlcnRleEV4ZWN1dGFibGUgPSBOVUxMOworCisgICAgZGVsZXRlIG1HZW9t
ZXRyeUV4ZWN1dGFibGU7CisgICAgbUdlb21ldHJ5RXhlY3V0YWJsZSA9IE5VTEw7CisKKyAgICB3
aGlsZSAoIW1Vbmlmb3Jtcy5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlIG1Vbmlmb3Jt
cy5iYWNrKCk7CisgICAgICAgIG1Vbmlmb3Jtcy5wb3BfYmFjaygpOworICAgIH0KK30KKwordW5z
aWduZWQgaW50IFByb2dyYW1CaW5hcnk6OmdldFNlcmlhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1TZXJpYWw7Cit9CisKK3Vuc2lnbmVkIGludCBQcm9ncmFtQmluYXJ5Ojppc3N1ZVNlcmlhbCgp
Cit7CisgICAgcmV0dXJuIG1DdXJyZW50U2VyaWFsKys7Cit9CisKK3J4OjpTaGFkZXJFeGVjdXRh
YmxlICpQcm9ncmFtQmluYXJ5OjpnZXRQaXhlbEV4ZWN1dGFibGUoKQoreworICAgIHJldHVybiBt
UGl4ZWxFeGVjdXRhYmxlOworfQorCityeDo6U2hhZGVyRXhlY3V0YWJsZSAqUHJvZ3JhbUJpbmFy
eTo6Z2V0VmVydGV4RXhlY3V0YWJsZSgpCit7CisgICAgcmV0dXJuIG1WZXJ0ZXhFeGVjdXRhYmxl
OworfQorCityeDo6U2hhZGVyRXhlY3V0YWJsZSAqUHJvZ3JhbUJpbmFyeTo6Z2V0R2VvbWV0cnlF
eGVjdXRhYmxlKCkKK3sKKyAgICByZXR1cm4gbUdlb21ldHJ5RXhlY3V0YWJsZTsKK30KKworR0x1
aW50IFByb2dyYW1CaW5hcnk6OmdldEF0dHJpYnV0ZUxvY2F0aW9uKGNvbnN0IGNoYXIgKm5hbWUp
Cit7CisgICAgaWYgKG5hbWUpCisgICAgeworICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGlu
ZGV4IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpbmRleCsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAobUxpbmtlZEF0dHJpYnV0ZVtpbmRleF0ubmFtZSA9PSBzdGQ6OnN0cmluZyhuYW1lKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gLTE7Cit9CisKK2ludCBQcm9ncmFt
QmluYXJ5OjpnZXRTZW1hbnRpY0luZGV4KGludCBhdHRyaWJ1dGVJbmRleCkKK3sKKyAgICBBU1NF
UlQoYXR0cmlidXRlSW5kZXggPj0gMCAmJiBhdHRyaWJ1dGVJbmRleCA8IE1BWF9WRVJURVhfQVRU
UklCUyk7CisgICAgCisgICAgcmV0dXJuIG1TZW1hbnRpY0luZGV4W2F0dHJpYnV0ZUluZGV4XTsK
K30KKworLy8gUmV0dXJucyBvbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IHNhbXBsZXIgaW5kZXgg
dXNlZC4KK0dMaW50IFByb2dyYW1CaW5hcnk6OmdldFVzZWRTYW1wbGVyUmFuZ2UoU2FtcGxlclR5
cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgY2FzZSBTQU1QTEVS
X1BJWEVMOgorICAgICAgICByZXR1cm4gbVVzZWRQaXhlbFNhbXBsZXJSYW5nZTsKKyAgICAgIGNh
c2UgU0FNUExFUl9WRVJURVg6CisgICAgICAgIHJldHVybiBtVXNlZFZlcnRleFNhbXBsZXJSYW5n
ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KK30KKworYm9vbCBQcm9ncmFtQmluYXJ5Ojp1c2VzUG9pbnRTaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbVVzZXNQb2ludFNpemU7Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFy
eTo6dXNlc1BvaW50U3ByaXRlRW11bGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVVzZXNQ
b2ludFNpemUgJiYgbVJlbmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVsKCkgPj0gNDsKK30KKwor
Ym9vbCBQcm9ncmFtQmluYXJ5Ojp1c2VzR2VvbWV0cnlTaGFkZXIoKSBjb25zdAoreworICAgIHJl
dHVybiB1c2VzUG9pbnRTcHJpdGVFbXVsYXRpb24oKTsKK30KKworLy8gUmV0dXJucyB0aGUgaW5k
ZXggb2YgdGhlIHRleHR1cmUgaW1hZ2UgdW5pdCAoMC0xOSkgY29ycmVzcG9uZGluZyB0byBhIERp
cmVjdDNEIDkgc2FtcGxlcgorLy8gaW5kZXggKDAtMTUgZm9yIHRoZSBwaXhlbCBzaGFkZXIgYW5k
IDAtMyBmb3IgdGhlIHZlcnRleCBzaGFkZXIpLgorR0xpbnQgUHJvZ3JhbUJpbmFyeTo6Z2V0U2Ft
cGxlck1hcHBpbmcoU2FtcGxlclR5cGUgdHlwZSwgdW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCkK
K3sKKyAgICBHTGludCBsb2dpY2FsVGV4dHVyZVVuaXQgPSAtMTsKKworICAgIHN3aXRjaCAodHlw
ZSkKKyAgICB7CisgICAgICBjYXNlIFNBTVBMRVJfUElYRUw6CisgICAgICAgIEFTU0VSVChzYW1w
bGVySW5kZXggPCBzaXplb2YobVNhbXBsZXJzUFMpL3NpemVvZihtU2FtcGxlcnNQU1swXSkpOwor
CisgICAgICAgIGlmIChtU2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSkKKyAgICAgICAg
eworICAgICAgICAgICAgbG9naWNhbFRleHR1cmVVbml0ID0gbVNhbXBsZXJzUFNbc2FtcGxlcklu
ZGV4XS5sb2dpY2FsVGV4dHVyZVVuaXQ7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIFNBTVBMRVJfVkVSVEVYOgorICAgICAgICBBU1NFUlQoc2FtcGxlckluZGV4IDwgc2l6
ZW9mKG1TYW1wbGVyc1ZTKS9zaXplb2YobVNhbXBsZXJzVlNbMF0pKTsKKworICAgICAgICBpZiAo
bVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5hY3RpdmUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGxvZ2ljYWxUZXh0dXJlVW5pdCA9IG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0ubG9naWNhbFRl
eHR1cmVVbml0OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICBpZiAobG9naWNhbFRleHR1cmVVbml0ID49IDAgJiYg
bG9naWNhbFRleHR1cmVVbml0IDwgKEdMaW50KW1SZW5kZXJlci0+Z2V0TWF4Q29tYmluZWRUZXh0
dXJlSW1hZ2VVbml0cygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxvZ2ljYWxUZXh0dXJlVW5p
dDsKKyAgICB9CisKKyAgICByZXR1cm4gLTE7Cit9CisKKy8vIFJldHVybnMgdGhlIHRleHR1cmUg
dHlwZSBmb3IgYSBnaXZlbiBEaXJlY3QzRCA5IHNhbXBsZXIgdHlwZSBhbmQKKy8vIGluZGV4ICgw
LTE1IGZvciB0aGUgcGl4ZWwgc2hhZGVyIGFuZCAwLTMgZm9yIHRoZSB2ZXJ0ZXggc2hhZGVyKS4K
K1RleHR1cmVUeXBlIFByb2dyYW1CaW5hcnk6OmdldFNhbXBsZXJUZXh0dXJlVHlwZShTYW1wbGVy
VHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4KQoreworICAgIHN3aXRjaCAodHlw
ZSkKKyAgICB7CisgICAgICBjYXNlIFNBTVBMRVJfUElYRUw6CisgICAgICAgIEFTU0VSVChzYW1w
bGVySW5kZXggPCBzaXplb2YobVNhbXBsZXJzUFMpL3NpemVvZihtU2FtcGxlcnNQU1swXSkpOwor
ICAgICAgICBBU1NFUlQobVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS5hY3RpdmUpOworICAgICAg
ICByZXR1cm4gbVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS50ZXh0dXJlVHlwZTsKKyAgICAgIGNh
c2UgU0FNUExFUl9WRVJURVg6CisgICAgICAgIEFTU0VSVChzYW1wbGVySW5kZXggPCBzaXplb2Yo
bVNhbXBsZXJzVlMpL3NpemVvZihtU2FtcGxlcnNWU1swXSkpOworICAgICAgICBBU1NFUlQobVNh
bXBsZXJzVlNbc2FtcGxlckluZGV4XS5hY3RpdmUpOworICAgICAgICByZXR1cm4gbVNhbXBsZXJz
VlNbc2FtcGxlckluZGV4XS50ZXh0dXJlVHlwZTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxF
KCk7CisgICAgfQorCisgICAgcmV0dXJuIFRFWFRVUkVfMkQ7Cit9CisKK0dMaW50IFByb2dyYW1C
aW5hcnk6OmdldFVuaWZvcm1Mb2NhdGlvbihzdGQ6OnN0cmluZyBuYW1lKQoreworICAgIHVuc2ln
bmVkIGludCBzdWJzY3JpcHQgPSAwOworCisgICAgLy8gU3RyaXAgYW55IHRyYWlsaW5nIGFycmF5
IG9wZXJhdG9yIGFuZCByZXRyaWV2ZSB0aGUgc3Vic2NyaXB0CisgICAgc2l6ZV90IG9wZW4gPSBu
YW1lLmZpbmRfbGFzdF9vZignWycpOworICAgIHNpemVfdCBjbG9zZSA9IG5hbWUuZmluZF9sYXN0
X29mKCddJyk7CisgICAgaWYgKG9wZW4gIT0gc3RkOjpzdHJpbmc6Om5wb3MgJiYgY2xvc2UgPT0g
bmFtZS5sZW5ndGgoKSAtIDEpCisgICAgeworICAgICAgICBzdWJzY3JpcHQgPSBhdG9pKG5hbWUu
c3Vic3RyKG9wZW4gKyAxKS5jX3N0cigpKTsKKyAgICAgICAgbmFtZS5lcmFzZShvcGVuKTsKKyAg
ICB9CisKKyAgICB1bnNpZ25lZCBpbnQgbnVtVW5pZm9ybXMgPSBtVW5pZm9ybUluZGV4LnNpemUo
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBsb2NhdGlvbiA9IDA7IGxvY2F0aW9uIDwgbnVtVW5p
Zm9ybXM7IGxvY2F0aW9uKyspCisgICAgeworICAgICAgICBpZiAobVVuaWZvcm1JbmRleFtsb2Nh
dGlvbl0ubmFtZSA9PSBuYW1lICYmCisgICAgICAgICAgICBtVW5pZm9ybUluZGV4W2xvY2F0aW9u
XS5lbGVtZW50ID09IHN1YnNjcmlwdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGxv
Y2F0aW9uOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCitib29sIFBy
b2dyYW1CaW5hcnk6OnNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMZmxvYXQqIHYpCit7CisgICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBsb2NhdGlvbiA+
PSAoaW50KW1Vbmlmb3JtSW5kZXguc2l6ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZv
cm1JbmRleFtsb2NhdGlvbl0uaW5kZXhdOworICAgIHRhcmdldFVuaWZvcm0tPmRpcnR5ID0gdHJ1
ZTsKKworICAgIGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVtZW50Q291bnQo
KTsKKworICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSAmJiBjb3VudCA+IDEpCisgICAgICAgIHJl
dHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBhIG5vbi1hcnJh
eSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisKKyAgICBjb3VudCA9IHN0ZDo6bWlu
KGVsZW1lbnRDb3VudCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCwgY291
bnQpOworCisgICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfRkxPQVQpCisgICAgewor
ICAgICAgICBHTGZsb2F0ICp0YXJnZXQgPSAoR0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSAr
IG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgdGFyZ2V0WzBd
ID0gdlswXTsKKyAgICAgICAgICAgIHRhcmdldFsxXSA9IDA7CisgICAgICAgICAgICB0YXJnZXRb
Ml0gPSAwOworICAgICAgICAgICAgdGFyZ2V0WzNdID0gMDsKKyAgICAgICAgICAgIHRhcmdldCAr
PSA0OworICAgICAgICAgICAgdiArPSAxOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYg
KHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfQk9PTCkKKyAgICB7CisgICAgICAgIEdMaW50ICpi
b29sUGFyYW1zID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFts
b2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBib29sUGFyYW1zWzBdID0gKHZbMF0gPT0g
MC4wZikgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzFdID0g
R0xfRkFMU0U7CisgICAgICAgICAgICBib29sUGFyYW1zWzJdID0gR0xfRkFMU0U7CisgICAgICAg
ICAgICBib29sUGFyYW1zWzNdID0gR0xfRkFMU0U7CisgICAgICAgICAgICBib29sUGFyYW1zICs9
IDQ7CisgICAgICAgICAgICB2ICs9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm0yZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCit7CisgICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBs
b2NhdGlvbiA+PSAoaW50KW1Vbmlmb3JtSW5kZXguc2l6ZSgpKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9y
bXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uaW5kZXhdOworICAgIHRhcmdldFVuaWZvcm0tPmRp
cnR5ID0gdHJ1ZTsKKworICAgIGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVt
ZW50Q291bnQoKTsKKworICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSAmJiBjb3VudCA+IDEpCisg
ICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBh
IG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisKKyAgICBjb3VudCA9
IHN0ZDo6bWluKGVsZW1lbnRDb3VudCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxl
bWVudCwgY291bnQpOworCisgICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfRkxPQVRf
VkVDMikKKyAgICB7CisgICAgICAgIEdMZmxvYXQgKnRhcmdldCA9IChHTGZsb2F0Kil0YXJnZXRV
bmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAg
ICAgICB0YXJnZXRbMF0gPSB2WzBdOworICAgICAgICAgICAgdGFyZ2V0WzFdID0gdlsxXTsKKyAg
ICAgICAgICAgIHRhcmdldFsyXSA9IDA7CisgICAgICAgICAgICB0YXJnZXRbM10gPSAwOworICAg
ICAgICAgICAgdGFyZ2V0ICs9IDQ7CisgICAgICAgICAgICB2ICs9IDI7CisgICAgICAgIH0KKyAg
ICB9CisgICAgZWxzZSBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9CT09MX1ZFQzIpCisg
ICAgeworICAgICAgICBHTGludCAqYm9vbFBhcmFtcyA9IChHTGludCopdGFyZ2V0VW5pZm9ybS0+
ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgYm9v
bFBhcmFtc1swXSA9ICh2WzBdID09IDAuMGYpID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAg
ICAgICAgYm9vbFBhcmFtc1sxXSA9ICh2WzFdID09IDAuMGYpID8gR0xfRkFMU0UgOiBHTF9UUlVF
OworICAgICAgICAgICAgYm9vbFBhcmFtc1syXSA9IEdMX0ZBTFNFOworICAgICAgICAgICAgYm9v
bFBhcmFtc1szXSA9IEdMX0ZBTFNFOworICAgICAgICAgICAgYm9vbFBhcmFtcyArPSA0OworICAg
ICAgICAgICAgdiArPSAyOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
UHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xmbG9hdCAqdikKK3sKKyAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0aW9u
ID49IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5p
Zm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07CisgICAgdGFyZ2V0VW5pZm9ybS0+ZGlydHkgPSB0
cnVlOworCisgICAgaW50IGVsZW1lbnRDb3VudCA9IHRhcmdldFVuaWZvcm0tPmVsZW1lbnRDb3Vu
dCgpOworCisgICAgaWYgKGVsZW1lbnRDb3VudCA9PSAxICYmIGNvdW50ID4gMSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFycmF5IHRvIGEgbm9uLWFy
cmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KKworICAgIGNvdW50ID0gc3RkOjpt
aW4oZWxlbWVudENvdW50IC0gKGludCltVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBj
b3VudCk7CisKKyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9GTE9BVF9WRUMzKQor
ICAgIHsKKyAgICAgICAgR0xmbG9hdCAqdGFyZ2V0ID0gKEdMZmxvYXQqKXRhcmdldFVuaWZvcm0t
PmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHRh
cmdldFswXSA9IHZbMF07CisgICAgICAgICAgICB0YXJnZXRbMV0gPSB2WzFdOworICAgICAgICAg
ICAgdGFyZ2V0WzJdID0gdlsyXTsKKyAgICAgICAgICAgIHRhcmdldFszXSA9IDA7CisgICAgICAg
ICAgICB0YXJnZXQgKz0gNDsKKyAgICAgICAgICAgIHYgKz0gMzsKKyAgICAgICAgfQorICAgIH0K
KyAgICBlbHNlIGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0JPT0xfVkVDMykKKyAgICB7
CisgICAgICAgIEdMaW50ICpib29sUGFyYW1zID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRh
ICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBib29sUGFy
YW1zWzBdID0gKHZbMF0gPT0gMC4wZikgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAg
ICBib29sUGFyYW1zWzFdID0gKHZbMV0gPT0gMC4wZikgPyBHTF9GQUxTRSA6IEdMX1RSVUU7Cisg
ICAgICAgICAgICBib29sUGFyYW1zWzJdID0gKHZbMl0gPT0gMC4wZikgPyBHTF9GQUxTRSA6IEdM
X1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzNdID0gR0xfRkFMU0U7CisgICAgICAgICAg
ICBib29sUGFyYW1zICs9IDQ7CisgICAgICAgICAgICB2ICs9IDM7CisgICAgICAgIH0KKyAgICB9
CisgICAgZWxzZSAKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtNGZ2KEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQoreworICAgIGlmIChs
b2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUoKSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBVbmlmb3JtICp0YXJnZXRV
bmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKKyAgICB0
YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IHRydWU7CisKKyAgICBpbnQgZWxlbWVudENvdW50ID0gdGFy
Z2V0VW5pZm9ybS0+ZWxlbWVudENvdW50KCk7CisKKyAgICBpZiAoZWxlbWVudENvdW50ID09IDEg
JiYgY291bnQgPiAxKQorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRpbmcgdG8gd3Jp
dGUgYW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElP
TgorCisgICAgY291bnQgPSBzdGQ6Om1pbihlbGVtZW50Q291bnQgLSAoaW50KW1Vbmlmb3JtSW5k
ZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsKKworICAgIGlmICh0YXJnZXRVbmlmb3JtLT50
eXBlID09IEdMX0ZMT0FUX1ZFQzQpCisgICAgeworICAgICAgICBHTGZsb2F0ICp0YXJnZXQgPSAo
R0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVs
ZW1lbnQgKiA0OworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAg
ICAgICAgeworICAgICAgICAgICAgdGFyZ2V0WzBdID0gdlswXTsKKyAgICAgICAgICAgIHRhcmdl
dFsxXSA9IHZbMV07CisgICAgICAgICAgICB0YXJnZXRbMl0gPSB2WzJdOworICAgICAgICAgICAg
dGFyZ2V0WzNdID0gdlszXTsKKyAgICAgICAgICAgIHRhcmdldCArPSA0OworICAgICAgICAgICAg
diArPSA0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHRhcmdldFVuaWZvcm0tPnR5
cGUgPT0gR0xfQk9PTF9WRUM0KQorICAgIHsKKyAgICAgICAgR0xpbnQgKmJvb2xQYXJhbXMgPSAo
R0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVt
ZW50ICogNDsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbMF0gPSAodlswXSA9PSAwLjBmKSA/IEdMX0ZB
TFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbMV0gPSAodlsxXSA9PSAwLjBm
KSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbMl0gPSAodlsy
XSA9PSAwLjBmKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNb
M10gPSAodlszXSA9PSAwLjBmKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJv
b2xQYXJhbXMgKz0gNDsKKyAgICAgICAgICAgIHYgKz0gNDsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBlbHNlIAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBpbnQgdGFyZ2V0V2lkdGgsIGludCB0
YXJnZXRIZWlnaHQsIGludCBzcmNXaWR0aCwgaW50IHNyY0hlaWdodD4KK3ZvaWQgdHJhbnNwb3Nl
TWF0cml4KFQgKnRhcmdldCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgaW50IGNvcHlX
aWR0aCA9IHN0ZDo6bWluKHRhcmdldFdpZHRoLCBzcmNXaWR0aCk7CisgICAgaW50IGNvcHlIZWln
aHQgPSBzdGQ6Om1pbih0YXJnZXRIZWlnaHQsIHNyY0hlaWdodCk7CisKKyAgICBmb3IgKGludCB4
ID0gMDsgeCA8IGNvcHlXaWR0aDsgeCsrKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgeSA9IDA7
IHkgPCBjb3B5SGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHRhcmdldFt4ICog
dGFyZ2V0V2lkdGggKyB5XSA9IChUKXZhbHVlW3kgKiBzcmNXaWR0aCArIHhdOworICAgICAgICB9
CisgICAgfQorICAgIC8vIGNsZWFyIHVuZmlsbGVkIHJpZ2h0IHNpZGUKKyAgICBmb3IgKGludCB5
ID0gMDsgeSA8IGNvcHlIZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIGZvciAoaW50IHggPSBz
cmNXaWR0aDsgeCA8IHRhcmdldFdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHRh
cmdldFt5ICogdGFyZ2V0V2lkdGggKyB4XSA9IChUKTA7CisgICAgICAgIH0KKyAgICB9CisgICAg
Ly8gY2xlYXIgdW5maWxsZWQgYm90dG9tLgorICAgIGZvciAoaW50IHkgPSBzcmNIZWlnaHQ7IHkg
PCB0YXJnZXRIZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
dGFyZ2V0V2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgdGFyZ2V0W3kgKiB0YXJn
ZXRXaWR0aCArIHhdID0gKFQpMDsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBQcm9ncmFt
QmluYXJ5OjpzZXRVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0
aW9uID49IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1tt
VW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07CisgICAgdGFyZ2V0VW5pZm9ybS0+ZGlydHkg
PSB0cnVlOworCisgICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgIT0gR0xfRkxPQVRfTUFUMikK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbnQgZWxlbWVudENv
dW50ID0gdGFyZ2V0VW5pZm9ybS0+ZWxlbWVudENvdW50KCk7CisKKyAgICBpZiAoZWxlbWVudENv
dW50ID09IDEgJiYgY291bnQgPiAxKQorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRp
bmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElE
X09QRVJBVElPTgorCisgICAgY291bnQgPSBzdGQ6Om1pbihlbGVtZW50Q291bnQgLSAoaW50KW1V
bmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsKKyAgICBHTGZsb2F0ICp0YXJn
ZXQgPSAoR0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRp
b25dLmVsZW1lbnQgKiA4OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQor
ICAgIHsKKyAgICAgICAgdHJhbnNwb3NlTWF0cml4PEdMZmxvYXQsNCwyLDIsMj4odGFyZ2V0LCB2
YWx1ZSk7CisgICAgICAgIHRhcmdldCArPSA4OworICAgICAgICB2YWx1ZSArPSA0OworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm1N
YXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKQoreworICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9y
bUluZGV4LnNpemUoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRp
b25dLmluZGV4XTsKKyAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IHRydWU7CisKKyAgICBpZiAo
dGFyZ2V0VW5pZm9ybS0+dHlwZSAhPSBHTF9GTE9BVF9NQVQzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlmb3Jt
LT5lbGVtZW50Q291bnQoKTsKKworICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSAmJiBjb3VudCA+
IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJh
eSB0byBhIG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisKKyAgICBj
b3VudCA9IHN0ZDo6bWluKGVsZW1lbnRDb3VudCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlv
bl0uZWxlbWVudCwgY291bnQpOworICAgIEdMZmxvYXQgKnRhcmdldCA9IChHTGZsb2F0Kil0YXJn
ZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDEyOwor
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgdHJh
bnNwb3NlTWF0cml4PEdMZmxvYXQsNCwzLDMsMz4odGFyZ2V0LCB2YWx1ZSk7CisgICAgICAgIHRh
cmdldCArPSAxMjsKKyAgICAgICAgdmFsdWUgKz0gOTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworCitib29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm1NYXRyaXg0ZnYoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIGlm
IChsb2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUoKSkK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBVbmlmb3JtICp0YXJn
ZXRVbmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKKyAg
ICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IHRydWU7CisKKyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+
dHlwZSAhPSBHTF9GTE9BVF9NQVQ0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVtZW50Q291bnQo
KTsKKworICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSAmJiBjb3VudCA+IDEpCisgICAgICAgIHJl
dHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBhIG5vbi1hcnJh
eSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisKKyAgICBjb3VudCA9IHN0ZDo6bWlu
KGVsZW1lbnRDb3VudCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCwgY291
bnQpOworICAgIEdMZmxvYXQgKnRhcmdldCA9IChHTGZsb2F0KikodGFyZ2V0VW5pZm9ybS0+ZGF0
YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiBzaXplb2YoR0xmbG9hdCkgKiAx
Nik7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgeworICAgICAg
ICB0cmFuc3Bvc2VNYXRyaXg8R0xmbG9hdCw0LDQsNCw0Pih0YXJnZXQsIHZhbHVlKTsKKyAgICAg
ICAgdGFyZ2V0ICs9IDE2OworICAgICAgICB2YWx1ZSArPSAxNjsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtMWl2KEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKK3sKKyAgICBpZiAobG9jYXRp
b24gPCAwIHx8IGxvY2F0aW9uID49IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9y
bSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07CisgICAgdGFyZ2V0
VW5pZm9ybS0+ZGlydHkgPSB0cnVlOworCisgICAgaW50IGVsZW1lbnRDb3VudCA9IHRhcmdldFVu
aWZvcm0tPmVsZW1lbnRDb3VudCgpOworCisgICAgaWYgKGVsZW1lbnRDb3VudCA9PSAxICYmIGNv
dW50ID4gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFu
IGFycmF5IHRvIGEgbm9uLWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KKwor
ICAgIGNvdW50ID0gc3RkOjptaW4oZWxlbWVudENvdW50IC0gKGludCltVW5pZm9ybUluZGV4W2xv
Y2F0aW9uXS5lbGVtZW50LCBjb3VudCk7CisKKyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9
PSBHTF9JTlQgfHwKKyAgICAgICAgdGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9TQU1QTEVSXzJE
IHx8CisgICAgICAgIHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfU0FNUExFUl9DVUJFKQorICAg
IHsKKyAgICAgICAgR0xpbnQgKnRhcmdldCA9IChHTGludCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSAr
IG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgdGFyZ2V0WzBd
ID0gdlswXTsKKyAgICAgICAgICAgIHRhcmdldFsxXSA9IDA7CisgICAgICAgICAgICB0YXJnZXRb
Ml0gPSAwOworICAgICAgICAgICAgdGFyZ2V0WzNdID0gMDsKKyAgICAgICAgICAgIHRhcmdldCAr
PSA0OworICAgICAgICAgICAgdiArPSAxOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYg
KHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfQk9PTCkKKyAgICB7CisgICAgICAgIEdMaW50ICpi
b29sUGFyYW1zID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFts
b2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBib29sUGFyYW1zWzBdID0gKHZbMF0gPT0g
MCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzFdID0gR0xf
RkFMU0U7CisgICAgICAgICAgICBib29sUGFyYW1zWzJdID0gR0xfRkFMU0U7CisgICAgICAgICAg
ICBib29sUGFyYW1zWzNdID0gR0xfRkFMU0U7CisgICAgICAgICAgICBib29sUGFyYW1zICs9IDQ7
CisgICAgICAgICAgICB2ICs9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm0yaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMaW50ICp2KQoreworICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRp
b24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21V
bmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKKyAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9
IHRydWU7CisKKyAgICBpbnQgZWxlbWVudENvdW50ID0gdGFyZ2V0VW5pZm9ybS0+ZWxlbWVudENv
dW50KCk7CisKKyAgICBpZiAoZWxlbWVudENvdW50ID09IDEgJiYgY291bnQgPiAxKQorICAgICAg
ICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24t
YXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgorCisgICAgY291bnQgPSBzdGQ6
Om1pbihlbGVtZW50Q291bnQgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQs
IGNvdW50KTsKKworICAgIGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0lOVF9WRUMyKQor
ICAgIHsKKyAgICAgICAgR0xpbnQgKnRhcmdldCA9IChHTGludCopdGFyZ2V0VW5pZm9ybS0+ZGF0
YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgdGFyZ2V0
WzBdID0gdlswXTsKKyAgICAgICAgICAgIHRhcmdldFsxXSA9IHZbMV07CisgICAgICAgICAgICB0
YXJnZXRbMl0gPSAwOworICAgICAgICAgICAgdGFyZ2V0WzNdID0gMDsKKyAgICAgICAgICAgIHRh
cmdldCArPSA0OworICAgICAgICAgICAgdiArPSAyOworICAgICAgICB9CisgICAgfQorICAgIGVs
c2UgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfQk9PTF9WRUMyKQorICAgIHsKKyAgICAg
ICAgR0xpbnQgKmJvb2xQYXJhbXMgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5p
Zm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbMF0g
PSAodlswXSA9PSAwKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJvb2xQYXJh
bXNbMV0gPSAodlsxXSA9PSAwKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJv
b2xQYXJhbXNbMl0gPSBHTF9GQUxTRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbM10gPSBHTF9G
QUxTRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXMgKz0gNDsKKyAgICAgICAgICAgIHYgKz0gMjsK
KyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6c2V0
VW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYp
Cit7CisgICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBsb2NhdGlvbiA+PSAoaW50KW1Vbmlmb3JtSW5k
ZXguc2l6ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFVu
aWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0u
aW5kZXhdOworICAgIHRhcmdldFVuaWZvcm0tPmRpcnR5ID0gdHJ1ZTsKKworICAgIGludCBlbGVt
ZW50Q291bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVtZW50Q291bnQoKTsKKworICAgIGlmIChlbGVt
ZW50Q291bnQgPT0gMSAmJiBjb3VudCA+IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0
ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBhIG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElO
VkFMSURfT1BFUkFUSU9OCisKKyAgICBjb3VudCA9IHN0ZDo6bWluKGVsZW1lbnRDb3VudCAtIChp
bnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCwgY291bnQpOworCisgICAgaWYgKHRh
cmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfSU5UX1ZFQzMpCisgICAgeworICAgICAgICBHTGludCAq
dGFyZ2V0ID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2Nh
dGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsg
aSsrKQorICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXRbMF0gPSB2WzBdOworICAgICAgICAg
ICAgdGFyZ2V0WzFdID0gdlsxXTsKKyAgICAgICAgICAgIHRhcmdldFsyXSA9IHZbMl07CisgICAg
ICAgICAgICB0YXJnZXRbM10gPSAwOworICAgICAgICAgICAgdGFyZ2V0ICs9IDQ7CisgICAgICAg
ICAgICB2ICs9IDM7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAodGFyZ2V0VW5pZm9y
bS0+dHlwZSA9PSBHTF9CT09MX1ZFQzMpCisgICAgeworICAgICAgICBHTGludCAqYm9vbFBhcmFt
cyA9IChHTGludCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25d
LmVsZW1lbnQgKiA0OworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykK
KyAgICAgICAgeworICAgICAgICAgICAgYm9vbFBhcmFtc1swXSA9ICh2WzBdID09IDApID8gR0xf
RkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFtc1sxXSA9ICh2WzFdID09IDAp
ID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFtc1syXSA9ICh2WzJd
ID09IDApID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFtc1szXSA9
IEdMX0ZBTFNFOworICAgICAgICAgICAgYm9vbFBhcmFtcyArPSA0OworICAgICAgICAgICAgdiAr
PSAzOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9ncmFtQmluYXJ5
OjpzZXRVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGlu
dCAqdikKK3sKKyAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0aW9uID49IChpbnQpbVVuaWZv
cm1JbmRleC5zaXplKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0
aW9uXS5pbmRleF07CisgICAgdGFyZ2V0VW5pZm9ybS0+ZGlydHkgPSB0cnVlOworCisgICAgaW50
IGVsZW1lbnRDb3VudCA9IHRhcmdldFVuaWZvcm0tPmVsZW1lbnRDb3VudCgpOworCisgICAgaWYg
KGVsZW1lbnRDb3VudCA9PSAxICYmIGNvdW50ID4gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAv
LyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFycmF5IHRvIGEgbm9uLWFycmF5IHVuaWZvcm0gaXMg
YW4gSU5WQUxJRF9PUEVSQVRJT04KKworICAgIGNvdW50ID0gc3RkOjptaW4oZWxlbWVudENvdW50
IC0gKGludCltVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBjb3VudCk7CisKKyAgICBp
ZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9JTlRfVkVDNCkKKyAgICB7CisgICAgICAgIEdM
aW50ICp0YXJnZXQgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4
W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNv
dW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHRhcmdldFswXSA9IHZbMF07CisgICAg
ICAgICAgICB0YXJnZXRbMV0gPSB2WzFdOworICAgICAgICAgICAgdGFyZ2V0WzJdID0gdlsyXTsK
KyAgICAgICAgICAgIHRhcmdldFszXSA9IHZbM107CisgICAgICAgICAgICB0YXJnZXQgKz0gNDsK
KyAgICAgICAgICAgIHYgKz0gNDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh0YXJn
ZXRVbmlmb3JtLT50eXBlID09IEdMX0JPT0xfVkVDNCkKKyAgICB7CisgICAgICAgIEdMaW50ICpi
b29sUGFyYW1zID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFts
b2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBib29sUGFyYW1zWzBdID0gKHZbMF0gPT0g
MCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzFdID0gKHZb
MV0gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzJd
ID0gKHZbMl0gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFy
YW1zWzNdID0gKHZbM10gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBi
b29sUGFyYW1zICs9IDQ7CisgICAgICAgICAgICB2ICs9IDQ7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFByb2dyYW1CaW5hcnk6OmdldFVuaWZvcm1mdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSAqYnVmU2l6ZSwgR0xmbG9hdCAqcGFyYW1zKQoreworICAgIGlmIChsb2Nh
dGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUoKSkKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBVbmlmb3JtICp0YXJnZXRVbmlm
b3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKKworICAgIC8v
IHNpemVkIHF1ZXJpZXMgLS0gZW5zdXJlIHRoZSBwcm92aWRlZCBidWZmZXIgaXMgbGFyZ2UgZW5v
dWdoCisgICAgaWYgKGJ1ZlNpemUpCisgICAgeworICAgICAgICBpbnQgcmVxdWlyZWRCeXRlcyA9
IFVuaWZvcm1FeHRlcm5hbFNpemUodGFyZ2V0VW5pZm9ybS0+dHlwZSk7CisgICAgICAgIGlmICgq
YnVmU2l6ZSA8IHJlcXVpcmVkQnl0ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3aXRjaCAodGFyZ2V0VW5pZm9ybS0+dHlw
ZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6CisgICAgICAgIHRyYW5zcG9zZU1h
dHJpeDxHTGZsb2F0LDIsMiw0LDI+KHBhcmFtcywgKEdMZmxvYXQqKXRhcmdldFVuaWZvcm0tPmRh
dGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogOCk7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOgorICAgICAgICB0cmFuc3Bvc2VNYXRyaXg8R0xm
bG9hdCwzLDMsNCwzPihwYXJhbXMsIChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVu
aWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDEyKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgIHRyYW5zcG9zZU1hdHJpeDxHTGZsb2F0LDQs
NCw0LDQ+KHBhcmFtcywgKEdMZmxvYXQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUlu
ZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogMTYpOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1
bHQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBzaXplID0gVW5pZm9ybUNv
bXBvbmVudENvdW50KHRhcmdldFVuaWZvcm0tPnR5cGUpOworCisgICAgICAgICAgICBzd2l0Y2gg
KFVuaWZvcm1Db21wb25lbnRUeXBlKHRhcmdldFVuaWZvcm0tPnR5cGUpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICBjYXNlIEdMX0JPT0w6CisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBHTGludCAqYm9vbFBhcmFtcyA9IChHTGludCopdGFyZ2V0VW5pZm9ybS0+
ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbaV0gPSAoYm9v
bFBhcmFtc1tpXSA9PSBHTF9GQUxTRSkgPyAwLjBmIDogMS4wZjsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgICAgICBtZW1jcHkocGFyYW1zLCB0YXJn
ZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQgKiBz
aXplb2YoR0xmbG9hdCksCisgICAgICAgICAgICAgICAgICAgICAgIHNpemUgKiBzaXplb2YoR0xm
bG9hdCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0lO
VDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEdMaW50ICppbnRQYXJh
bXMgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9u
XS5lbGVtZW50ICogNDsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zW2ldID0gKGZsb2F0KWludFBhcmFtc1tpXTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dyYW1CaW5hcnk6
OmdldFVuaWZvcm1pdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSAqYnVmU2l6ZSwgR0xpbnQgKnBh
cmFtcykKK3sKKyAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0aW9uID49IChpbnQpbVVuaWZv
cm1JbmRleC5zaXplKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0
aW9uXS5pbmRleF07CisKKyAgICAvLyBzaXplZCBxdWVyaWVzIC0tIGVuc3VyZSB0aGUgcHJvdmlk
ZWQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaAorICAgIGlmIChidWZTaXplKQorICAgIHsKKyAgICAg
ICAgaW50IHJlcXVpcmVkQnl0ZXMgPSBVbmlmb3JtRXh0ZXJuYWxTaXplKHRhcmdldFVuaWZvcm0t
PnR5cGUpOworICAgICAgICBpZiAoKmJ1ZlNpemUgPCByZXF1aXJlZEJ5dGVzKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzd2l0
Y2ggKHRhcmdldFVuaWZvcm0tPnR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQy
OgorICAgICAgICB0cmFuc3Bvc2VNYXRyaXg8R0xpbnQsMiwyLDQsMj4ocGFyYW1zLCAoR0xmbG9h
dCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQg
KiA4KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6CisgICAgICAg
IHRyYW5zcG9zZU1hdHJpeDxHTGludCwzLDMsNCwzPihwYXJhbXMsIChHTGZsb2F0Kil0YXJnZXRV
bmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDEyKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgIHRyYW5zcG9z
ZU1hdHJpeDxHTGludCw0LDQsNCw0PihwYXJhbXMsIChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5k
YXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDE2KTsKKyAgICAgICAgYnJl
YWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
c2l6ZSA9IFZhcmlhYmxlQ29sdW1uQ291bnQodGFyZ2V0VW5pZm9ybS0+dHlwZSk7CisKKyAgICAg
ICAgICAgIHN3aXRjaCAoVW5pZm9ybUNvbXBvbmVudFR5cGUodGFyZ2V0VW5pZm9ybS0+dHlwZSkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfQk9PTDoKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIEdMaW50ICpib29sUGFyYW1zID0gKEdMaW50Kil0
YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7
CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzaXpl
OyBpKyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtc1tpXSA9IGJvb2xQYXJhbXNbaV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xf
RkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpm
bG9hdFBhcmFtcyA9IChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRl
eFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IChHTGludClmbG9hdFBhcmFtc1tpXTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICAgICAgbWVt
Y3B5KHBhcmFtcywgdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25d
LmVsZW1lbnQgKiA0ICogc2l6ZW9mKEdMaW50KSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSAq
IHNpemVvZihHTGludCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBk
ZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUHJvZ3JhbUJpbmFyeTo6ZGlydHlBbGxVbmlm
b3JtcygpCit7CisgICAgdW5zaWduZWQgaW50IG51bVVuaWZvcm1zID0gbVVuaWZvcm1zLnNpemUo
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpbmRleCA9IDA7IGluZGV4IDwgbnVtVW5pZm9ybXM7
IGluZGV4KyspCisgICAgeworICAgICAgICBtVW5pZm9ybXNbaW5kZXhdLT5kaXJ0eSA9IHRydWU7
CisgICAgfQorfQorCisvLyBBcHBsaWVzIGFsbCB0aGUgdW5pZm9ybXMgc2V0IGZvciB0aGlzIHBy
b2dyYW0gb2JqZWN0IHRvIHRoZSByZW5kZXJlcgordm9pZCBQcm9ncmFtQmluYXJ5OjphcHBseVVu
aWZvcm1zKCkKK3sKKyAgICAvLyBSZXRyaWV2ZSBzYW1wbGVyIHVuaWZvcm0gdmFsdWVzCisgICAg
Zm9yIChzdGQ6OnZlY3RvcjxVbmlmb3JtKj46Oml0ZXJhdG9yIHViID0gbVVuaWZvcm1zLmJlZ2lu
KCksIHVlID0gbVVuaWZvcm1zLmVuZCgpOyB1YiAhPSB1ZTsgKyt1YikKKyAgICB7CisgICAgICAg
IFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSAqdWI7CisKKyAgICAgICAgaWYgKHRhcmdldFVuaWZv
cm0tPmRpcnR5KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlw
ZSA9PSBHTF9TQU1QTEVSXzJEIHx8IAorICAgICAgICAgICAgICAgIHRhcmdldFVuaWZvcm0tPnR5
cGUgPT0gR0xfU0FNUExFUl9DVUJFKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlu
dCBjb3VudCA9IHRhcmdldFVuaWZvcm0tPmVsZW1lbnRDb3VudCgpOworICAgICAgICAgICAgICAg
IEdMaW50ICgqdilbNF0gPSAoR0xpbnQoKilbNF0pdGFyZ2V0VW5pZm9ybS0+ZGF0YTsKKworICAg
ICAgICAgICAgICAgIGlmICh0YXJnZXRVbmlmb3JtLT5wc1JlZ2lzdGVySW5kZXggPj0gMCkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmaXJzdElu
ZGV4ID0gdGFyZ2V0VW5pZm9ybS0+cHNSZWdpc3RlckluZGV4OworCisgICAgICAgICAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCA9IGZp
cnN0SW5kZXggKyBpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2FtcGxlckluZGV4
IDwgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMpCisgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1TYW1wbGVyc1BTW3NhbXBsZXJJbmRl
eF0uYWN0aXZlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2FtcGxlcnNQU1tzYW1w
bGVySW5kZXhdLmxvZ2ljYWxUZXh0dXJlVW5pdCA9IHZbaV1bMF07CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dnNSZWdpc3RlckluZGV4ID49IDApCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmlyc3RJ
bmRleCA9IHRhcmdldFVuaWZvcm0tPnZzUmVnaXN0ZXJJbmRleDsKKworICAgICAgICAgICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXggPSBm
aXJzdEluZGV4ICsgaTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNhbXBsZXJJbmRl
eCA8IElNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUykKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
bVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5hY3RpdmUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0ubG9naWNhbFRleHR1cmVVbml0ID0gdltp
XVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IG1SZW5kZXJlci0+YXBwbHlVbmlmb3Jtcyh0aGlzLCAmbVVuaWZvcm1zKTsKK30KKworLy8gUGFj
a3MgdmFyeWluZ3MgaW50byBnZW5lcmljIHZhcnlpbmcgcmVnaXN0ZXJzLCB1c2luZyB0aGUgYWxn
b3JpdGhtIGZyb20gW09wZW5HTCBFUyBTaGFkaW5nIExhbmd1YWdlIDEuMDAgcmV2LiAxN10gYXBw
ZW5kaXggQSBzZWN0aW9uIDcgcGFnZSAxMTEKKy8vIFJldHVybnMgdGhlIG51bWJlciBvZiB1c2Vk
IHZhcnlpbmcgcmVnaXN0ZXJzLCBvciAtMSBpZiB1bnN1Y2Nlc2Z1bAoraW50IFByb2dyYW1CaW5h
cnk6OnBhY2tWYXJ5aW5ncyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBWYXJ5aW5nICpwYWNraW5n
W11bNF0sIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlcikKK3sKKyAgICBjb25zdCBpbnQg
bWF4VmFyeWluZ1ZlY3RvcnMgPSBtUmVuZGVyZXItPmdldE1heFZhcnlpbmdWZWN0b3JzKCk7CisK
KyAgICBmcmFnbWVudFNoYWRlci0+cmVzZXRWYXJ5aW5nc1JlZ2lzdGVyQXNzaWdubWVudCgpOwor
CisgICAgZm9yIChWYXJ5aW5nTGlzdDo6aXRlcmF0b3IgdmFyeWluZyA9IGZyYWdtZW50U2hhZGVy
LT5tVmFyeWluZ3MuYmVnaW4oKTsgdmFyeWluZyAhPSBmcmFnbWVudFNoYWRlci0+bVZhcnlpbmdz
LmVuZCgpOyB2YXJ5aW5nKyspCisgICAgeworICAgICAgICBpbnQgbiA9IFZhcmlhYmxlUm93Q291
bnQodmFyeWluZy0+dHlwZSkgKiB2YXJ5aW5nLT5zaXplOworICAgICAgICBpbnQgbSA9IFZhcmlh
YmxlQ29sdW1uQ291bnQodmFyeWluZy0+dHlwZSk7CisgICAgICAgIGJvb2wgc3VjY2VzcyA9IGZh
bHNlOworCisgICAgICAgIGlmIChtID09IDIgfHwgbSA9PSAzIHx8IG0gPT0gNCkKKyAgICAgICAg
eworICAgICAgICAgICAgZm9yIChpbnQgciA9IDA7IHIgPD0gbWF4VmFyeWluZ1ZlY3RvcnMgLSBu
ICYmICFzdWNjZXNzOyByKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYm9vbCBh
dmFpbGFibGUgPSB0cnVlOworCisgICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBu
ICYmIGF2YWlsYWJsZTsgeSsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgZm9yIChpbnQgeCA9IDA7IHggPCBtICYmIGF2YWlsYWJsZTsgeCsrKQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFja2luZ1tyICsgeV1beF0p
CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXZhaWxhYmxlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoYXZh
aWxhYmxlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyeWluZy0+
cmVnID0gcjsKKyAgICAgICAgICAgICAgICAgICAgdmFyeWluZy0+Y29sID0gMDsKKworICAgICAg
ICAgICAgICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IG47IHkrKykKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBtOyB4
KyspCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFja2luZ1tyICsgeV1beF0gPSAmKnZhcnlpbmc7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBzdWNjZXNz
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmICghc3VjY2VzcyAmJiBtID09IDIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Zm9yIChpbnQgciA9IG1heFZhcnlpbmdWZWN0b3JzIC0gbjsgciA+PSAwICYmICFzdWNjZXNzOyBy
LS0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBib29sIGF2YWlsYWJs
ZSA9IHRydWU7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBuICYm
IGF2YWlsYWJsZTsgeSsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKGludCB4ID0gMjsgeCA8IDQgJiYgYXZhaWxhYmxlOyB4KyspCisgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhY2tp
bmdbciArIHldW3hdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJsZSkKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyeWluZy0+cmVnID0gcjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZhcnlpbmctPmNvbCA9IDI7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbjsgeSsrKQorICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAyOyB4IDwg
NDsgeCsrKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFja2luZ1tyICsgeV1beF0gPSAmKnZhcnlpbmc7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNl
IGlmIChtID09IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBzcGFjZVs0XSA9IHswfTsK
KworICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBtYXhWYXJ5aW5nVmVjdG9yczsgeSsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgNDsg
eCsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3BhY2VbeF0gKz0g
cGFja2luZ1t5XVt4XSA/IDAgOiAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaW50IGNvbHVtbiA9IDA7CisKKyAgICAgICAgICAgIGZvciAoaW50IHgg
PSAwOyB4IDwgNDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChzcGFj
ZVt4XSA+PSBuICYmIHNwYWNlW3hdIDwgc3BhY2VbY29sdW1uXSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IHg7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc3BhY2VbY29sdW1uXSA+PSBuKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoaW50IHIgPSAwOyByIDwgbWF4VmFyeWluZ1Zl
Y3RvcnM7IHIrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
cGFja2luZ1tyXVtjb2x1bW5dKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB2YXJ5aW5nLT5yZWcgPSByOworCisgICAgICAgICAgICAgICAgICAgICAgICBm
b3IgKGludCB5ID0gcjsgeSA8IHIgKyBuOyB5KyspCisgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2luZ1t5XVtjb2x1bW5dID0gJip2YXJ5
aW5nOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHZhcnlpbmctPmNvbCA9IGNvbHVtbjsKKworICAgICAgICAgICAgICAgIHN1
Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgVU5S
RUFDSEFCTEUoKTsKKworICAgICAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGluZm9Mb2cuYXBwZW5kKCJDb3VsZCBub3QgcGFjayB2YXJ5aW5nICVzIiwgdmFyeWluZy0+
bmFtZS5jX3N0cigpKTsKKworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAg
fQorCisgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgdXNlZCByZWdpc3RlcnMKKyAgICBpbnQg
cmVnaXN0ZXJzID0gMDsKKworICAgIGZvciAoaW50IHIgPSAwOyByIDwgbWF4VmFyeWluZ1ZlY3Rv
cnM7IHIrKykKKyAgICB7CisgICAgICAgIGlmIChwYWNraW5nW3JdWzBdIHx8IHBhY2tpbmdbcl1b
MV0gfHwgcGFja2luZ1tyXVsyXSB8fCBwYWNraW5nW3JdWzNdKQorICAgICAgICB7CisgICAgICAg
ICAgICByZWdpc3RlcnMrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZWdpc3Rl
cnM7Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6bGlua1ZhcnlpbmdzKEluZm9Mb2cgJmluZm9M
b2csIGludCByZWdpc3RlcnMsIGNvbnN0IFZhcnlpbmcgKnBhY2tpbmdbXVs0XSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nJiBwaXhlbEhMU0wsIHN0ZDo6c3Ry
aW5nJiB2ZXJ0ZXhITFNMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhZ21l
bnRTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBWZXJ0ZXhTaGFkZXIgKnZlcnRleFNoYWRlcikKK3sK
KyAgICBpZiAocGl4ZWxITFNMLmVtcHR5KCkgfHwgdmVydGV4SExTTC5lbXB0eSgpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGJvb2wgdXNlc01SVCA9IGZyYWdt
ZW50U2hhZGVyLT5tVXNlc011bHRpcGxlUmVuZGVyVGFyZ2V0czsKKyAgICBib29sIHVzZXNGcmFn
Q29sb3IgPSBmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnQ29sb3I7CisgICAgYm9vbCB1c2VzRnJh
Z0RhdGEgPSBmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnRGF0YTsKKyAgICBpZiAodXNlc0ZyYWdD
b2xvciAmJiB1c2VzRnJhZ0RhdGEpCisgICAgeworICAgICAgICBpbmZvTG9nLmFwcGVuZCgiQ2Fu
bm90IHVzZSBib3RoIGdsX0ZyYWdDb2xvciBhbmQgZ2xfRnJhZ0RhdGEgaW4gdGhlIHNhbWUgZnJh
Z21lbnQgc2hhZGVyLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8g
V3JpdGUgdGhlIEhMU0wgaW5wdXQvb3V0cHV0IGRlY2xhcmF0aW9ucworICAgIGNvbnN0IGludCBz
aGFkZXJNb2RlbCA9IG1SZW5kZXJlci0+Z2V0TWFqb3JTaGFkZXJNb2RlbCgpOworICAgIGNvbnN0
IGludCBtYXhWYXJ5aW5nVmVjdG9ycyA9IG1SZW5kZXJlci0+Z2V0TWF4VmFyeWluZ1ZlY3RvcnMo
KTsKKworICAgIGNvbnN0IGludCByZWdpc3RlcnNOZWVkZWQgPSByZWdpc3RlcnMgKyAoZnJhZ21l
bnRTaGFkZXItPm1Vc2VzRnJhZ0Nvb3JkID8gMSA6IDApICsgKGZyYWdtZW50U2hhZGVyLT5tVXNl
c1BvaW50Q29vcmQgPyAxIDogMCk7CisKKyAgICAvLyBUaGUgb3V0cHV0IGNvbG9yIGlzIGJyb2Fk
Y2FzdCB0byBhbGwgZW5hYmxlZCBkcmF3IGJ1ZmZlcnMgd2hlbiB3cml0aW5nIHRvIGdsX0ZyYWdD
b2xvciAKKyAgICBjb25zdCBib29sIGJyb2FkY2FzdCA9IGZyYWdtZW50U2hhZGVyLT5tVXNlc0Zy
YWdDb2xvcjsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgbnVtUmVuZGVyVGFyZ2V0cyA9IChicm9h
ZGNhc3QgfHwgdXNlc01SVCA/IG1SZW5kZXJlci0+Z2V0TWF4UmVuZGVyVGFyZ2V0cygpIDogMSk7
CisKKyAgICBpZiAocmVnaXN0ZXJzTmVlZGVkID4gbWF4VmFyeWluZ1ZlY3RvcnMpCisgICAgewor
ICAgICAgICBpbmZvTG9nLmFwcGVuZCgiTm8gdmFyeWluZyByZWdpc3RlcnMgbGVmdCB0byBzdXBw
b3J0IGdsX0ZyYWdDb29yZC9nbF9Qb2ludENvb3JkIik7CisKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHZlcnRleFNoYWRlci0+cmVzZXRWYXJ5aW5nc1JlZ2lzdGVyQXNzaWdu
bWVudCgpOworCisgICAgZm9yIChWYXJ5aW5nTGlzdDo6aXRlcmF0b3IgaW5wdXQgPSBmcmFnbWVu
dFNoYWRlci0+bVZhcnlpbmdzLmJlZ2luKCk7IGlucHV0ICE9IGZyYWdtZW50U2hhZGVyLT5tVmFy
eWluZ3MuZW5kKCk7IGlucHV0KyspCisgICAgeworICAgICAgICBib29sIG1hdGNoZWQgPSBmYWxz
ZTsKKworICAgICAgICBmb3IgKFZhcnlpbmdMaXN0OjppdGVyYXRvciBvdXRwdXQgPSB2ZXJ0ZXhT
aGFkZXItPm1WYXJ5aW5ncy5iZWdpbigpOyBvdXRwdXQgIT0gdmVydGV4U2hhZGVyLT5tVmFyeWlu
Z3MuZW5kKCk7IG91dHB1dCsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAob3V0cHV0LT5u
YW1lID09IGlucHV0LT5uYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChv
dXRwdXQtPnR5cGUgIT0gaW5wdXQtPnR5cGUgfHwgb3V0cHV0LT5zaXplICE9IGlucHV0LT5zaXpl
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQo
IlR5cGUgb2YgdmVydGV4IHZhcnlpbmcgJXMgZG9lcyBub3QgbWF0Y2ggdGhhdCBvZiB0aGUgZnJh
Z21lbnQgdmFyeWluZyIsIG91dHB1dC0+bmFtZS5jX3N0cigpKTsKKworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
b3V0cHV0LT5yZWcgPSBpbnB1dC0+cmVnOworICAgICAgICAgICAgICAgIG91dHB1dC0+Y29sID0g
aW5wdXQtPmNvbDsKKworICAgICAgICAgICAgICAgIG1hdGNoZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCFt
YXRjaGVkKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiRnJhZ21lbnQg
dmFyeWluZyAlcyBkb2VzIG5vdCBtYXRjaCBhbnkgdmVydGV4IHZhcnlpbmciLCBpbnB1dC0+bmFt
ZS5jX3N0cigpKTsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorCisgICAgbVVzZXNQb2ludFNpemUgPSB2ZXJ0ZXhTaGFkZXItPm1Vc2VzUG9pbnRTaXplOwor
ICAgIHN0ZDo6c3RyaW5nIHZhcnlpbmdTZW1hbnRpYyA9IChtVXNlc1BvaW50U2l6ZSAmJiBzaGFk
ZXJNb2RlbCA9PSAzKSA/ICJDT0xPUiIgOiAiVEVYQ09PUkQiOworICAgIHN0ZDo6c3RyaW5nIHRh
cmdldFNlbWFudGljID0gKHNoYWRlck1vZGVsID49IDQpID8gIlNWX1RhcmdldCIgOiAiQ09MT1Ii
OworICAgIHN0ZDo6c3RyaW5nIHBvc2l0aW9uU2VtYW50aWMgPSAoc2hhZGVyTW9kZWwgPj0gNCkg
PyAiU1ZfUG9zaXRpb24iIDogIlBPU0lUSU9OIjsKKyAgICBzdGQ6OnN0cmluZyBkZXB0aFNlbWFu
dGljID0gKHNoYWRlck1vZGVsID49IDQpID8gIlNWX0RlcHRoIiA6ICJERVBUSCI7CisKKyAgICAv
LyBzcGVjaWFsIHZhcnlpbmdzIHRoYXQgdXNlIHJlc2VydmVkIHJlZ2lzdGVycworICAgIGludCBy
ZXNlcnZlZFJlZ2lzdGVySW5kZXggPSByZWdpc3RlcnM7CisgICAgc3RkOjpzdHJpbmcgZnJhZ0Nv
b3JkU2VtYW50aWM7CisgICAgc3RkOjpzdHJpbmcgcG9pbnRDb29yZFNlbWFudGljOworCisgICAg
aWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0ZyYWdDb29yZCkKKyAgICB7CisgICAgICAgIGZyYWdD
b29yZFNlbWFudGljID0gdmFyeWluZ1NlbWFudGljICsgc3RyKHJlc2VydmVkUmVnaXN0ZXJJbmRl
eCsrKTsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzUG9pbnRDb29yZCkK
KyAgICB7CisgICAgICAgIC8vIFNoYWRlciBtb2RlbCAzIHVzZXMgYSBzcGVjaWFsIFRFWENPT1JE
IHNlbWFudGljIGZvciBwb2ludCBzcHJpdGUgdGV4Y29vcmRzLgorICAgICAgICAvLyBJbiBEWDEx
IHdlIGNvbXB1dGUgdGhpcyBpbiB0aGUgR1MuCisgICAgICAgIGlmIChzaGFkZXJNb2RlbCA9PSAz
KQorICAgICAgICB7CisgICAgICAgICAgICBwb2ludENvb3JkU2VtYW50aWMgPSAiVEVYQ09PUkQw
IjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzaGFkZXJNb2RlbCA+PSA0KQorICAgICAg
ICB7CisgICAgICAgICAgICBwb2ludENvb3JkU2VtYW50aWMgPSB2YXJ5aW5nU2VtYW50aWMgKyBz
dHIocmVzZXJ2ZWRSZWdpc3RlckluZGV4KyspOyAKKyAgICAgICAgfQorICAgIH0KKworICAgIHZl
cnRleEhMU0wgKz0gInN0cnVjdCBWU19JTlBVVFxuIgorICAgICAgICAgICAgICAgICAgIntcbiI7
CisKKyAgICBpbnQgc2VtYW50aWNJbmRleCA9IDA7CisgICAgZm9yIChBdHRyaWJ1dGVBcnJheTo6
aXRlcmF0b3IgYXR0cmlidXRlID0gdmVydGV4U2hhZGVyLT5tQXR0cmlidXRlcy5iZWdpbigpOyBh
dHRyaWJ1dGUgIT0gdmVydGV4U2hhZGVyLT5tQXR0cmlidXRlcy5lbmQoKTsgYXR0cmlidXRlKysp
CisgICAgeworICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0ZS0+dHlwZSkKKyAgICAgICAgeworICAg
ICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgdmVydGV4SExTTCArPSAiICAgIGZsb2F0ICI7ICAg
IGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjogdmVydGV4SExTTCArPSAiICAg
IGZsb2F0MiAiOyAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMzogdmVydGV4
SExTTCArPSAiICAgIGZsb2F0MyAiOyAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRf
VkVDNDogdmVydGV4SExTTCArPSAiICAgIGZsb2F0NCAiOyAgIGJyZWFrOworICAgICAgICAgIGNh
c2UgR0xfRkxPQVRfTUFUMjogdmVydGV4SExTTCArPSAiICAgIGZsb2F0MngyICI7IGJyZWFrOwor
ICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzogdmVydGV4SExTTCArPSAiICAgIGZsb2F0M3gz
ICI7IGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNDogdmVydGV4SExTTCArPSAi
ICAgIGZsb2F0NHg0ICI7IGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6ICBVTlJFQUNIQUJMRSgp
OworICAgICAgICB9CisKKyAgICAgICAgdmVydGV4SExTTCArPSBkZWNvcmF0ZUF0dHJpYnV0ZShh
dHRyaWJ1dGUtPm5hbWUpICsgIiA6IFRFWENPT1JEIiArIHN0cihzZW1hbnRpY0luZGV4KSArICI7
XG4iOworCisgICAgICAgIHNlbWFudGljSW5kZXggKz0gVmFyaWFibGVSb3dDb3VudChhdHRyaWJ1
dGUtPnR5cGUpOworICAgIH0KKworICAgIHZlcnRleEhMU0wgKz0gIn07XG4iCisgICAgICAgICAg
ICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAic3RydWN0IFZTX09VVFBVVFxuIgorICAg
ICAgICAgICAgICAgICAgIntcbiI7CisKKyAgICBpZiAoc2hhZGVyTW9kZWwgPCA0KQorICAgIHsK
KyAgICAgICAgdmVydGV4SExTTCArPSAiICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6ICIgKyBwb3Np
dGlvblNlbWFudGljICsgIjtcbiI7CisgICAgfQorCisgICAgZm9yIChpbnQgciA9IDA7IHIgPCBy
ZWdpc3RlcnM7IHIrKykKKyAgICB7CisgICAgICAgIGludCByZWdpc3RlclNpemUgPSBwYWNraW5n
W3JdWzNdID8gNCA6IChwYWNraW5nW3JdWzJdID8gMyA6IChwYWNraW5nW3JdWzFdID8gMiA6IDEp
KTsKKworICAgICAgICB2ZXJ0ZXhITFNMICs9ICIgICAgZmxvYXQiICsgc3RyKHJlZ2lzdGVyU2l6
ZSkgKyAiIHYiICsgc3RyKHIpICsgIiA6ICIgKyB2YXJ5aW5nU2VtYW50aWMgKyBzdHIocikgKyAi
O1xuIjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nvb3JkKQor
ICAgIHsKKyAgICAgICAgdmVydGV4SExTTCArPSAiICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiAi
ICsgZnJhZ0Nvb3JkU2VtYW50aWMgKyAiO1xuIjsKKyAgICB9CisKKyAgICBpZiAodmVydGV4U2hh
ZGVyLT5tVXNlc1BvaW50U2l6ZSAmJiBzaGFkZXJNb2RlbCA+PSAzKQorICAgIHsKKyAgICAgICAg
dmVydGV4SExTTCArPSAiICAgIGZsb2F0IGdsX1BvaW50U2l6ZSA6IFBTSVpFO1xuIjsKKyAgICB9
CisKKyAgICBpZiAoc2hhZGVyTW9kZWwgPj0gNCkKKyAgICB7CisgICAgICAgIHZlcnRleEhMU0wg
Kz0gIiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiAiICsgcG9zaXRpb25TZW1hbnRpYyArICI7XG4i
OworICAgIH0KKworICAgIHZlcnRleEhMU0wgKz0gIn07XG4iCisgICAgICAgICAgICAgICAgICAi
XG4iCisgICAgICAgICAgICAgICAgICAiVlNfT1VUUFVUIG1haW4oVlNfSU5QVVQgaW5wdXQpXG4i
CisgICAgICAgICAgICAgICAgICAie1xuIjsKKworICAgIGZvciAoQXR0cmlidXRlQXJyYXk6Oml0
ZXJhdG9yIGF0dHJpYnV0ZSA9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0
cmlidXRlICE9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQor
ICAgIHsKKyAgICAgICAgdmVydGV4SExTTCArPSAiICAgICIgKyBkZWNvcmF0ZUF0dHJpYnV0ZShh
dHRyaWJ1dGUtPm5hbWUpICsgIiA9ICI7CisKKyAgICAgICAgaWYgKFZhcmlhYmxlUm93Q291bnQo
YXR0cmlidXRlLT50eXBlKSA+IDEpICAgLy8gTWF0cml4CisgICAgICAgIHsKKyAgICAgICAgICAg
IHZlcnRleEhMU0wgKz0gInRyYW5zcG9zZSI7CisgICAgICAgIH0KKworICAgICAgICB2ZXJ0ZXhI
TFNMICs9ICIoaW5wdXQuIiArIGRlY29yYXRlQXR0cmlidXRlKGF0dHJpYnV0ZS0+bmFtZSkgKyAi
KTtcbiI7CisgICAgfQorCisgICAgaWYgKHNoYWRlck1vZGVsID49IDQpCisgICAgeworICAgICAg
ICB2ZXJ0ZXhITFNMICs9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIGdsX21haW4o
KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAg
IiAgICBWU19PVVRQVVQgb3V0cHV0O1xuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgb3V0
cHV0LmdsX1Bvc2l0aW9uLnggPSBnbF9Qb3NpdGlvbi54O1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICIgICAgb3V0cHV0LmdsX1Bvc2l0aW9uLnkgPSAtZ2xfUG9zaXRpb24ueTtcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAiICAgIG91dHB1dC5nbF9Qb3NpdGlvbi56ID0gKGdsX1Bvc2l0aW9u
LnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAg
IG91dHB1dC5nbF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udztcbiI7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIHZlcnRleEhMU0wgKz0gIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICIgICAgZ2xfbWFpbigpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAiICAgIFZTX09VVFBVVCBvdXRwdXQ7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgIiAgICBvdXRwdXQuZ2xfUG9zaXRpb24ueCA9IGdsX1Bvc2l0aW9uLnggKiBkeF9W
aWV3QWRqdXN0LnogKyBkeF9WaWV3QWRqdXN0LnggKiBnbF9Qb3NpdGlvbi53O1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICIgICAgb3V0cHV0LmdsX1Bvc2l0aW9uLnkgPSAtKGdsX1Bvc2l0aW9u
LnkgKiBkeF9WaWV3QWRqdXN0LncgKyBkeF9WaWV3QWRqdXN0LnkgKiBnbF9Qb3NpdGlvbi53KTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIG91dHB1dC5nbF9Qb3NpdGlvbi56ID0gKGds
X1Bvc2l0aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTtcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAiICAgIG91dHB1dC5nbF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udztcbiI7CisgICAg
fQorCisgICAgaWYgKHZlcnRleFNoYWRlci0+bVVzZXNQb2ludFNpemUgJiYgc2hhZGVyTW9kZWwg
Pj0gMykKKyAgICB7CisgICAgICAgIHZlcnRleEhMU0wgKz0gIiAgICBvdXRwdXQuZ2xfUG9pbnRT
aXplID0gZ2xfUG9pbnRTaXplO1xuIjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXIt
Pm1Vc2VzRnJhZ0Nvb3JkKQorICAgIHsKKyAgICAgICAgdmVydGV4SExTTCArPSAiICAgIG91dHB1
dC5nbF9GcmFnQ29vcmQgPSBnbF9Qb3NpdGlvbjtcbiI7CisgICAgfQorCisgICAgZm9yIChWYXJ5
aW5nTGlzdDo6aXRlcmF0b3IgdmFyeWluZyA9IHZlcnRleFNoYWRlci0+bVZhcnlpbmdzLmJlZ2lu
KCk7IHZhcnlpbmcgIT0gdmVydGV4U2hhZGVyLT5tVmFyeWluZ3MuZW5kKCk7IHZhcnlpbmcrKykK
KyAgICB7CisgICAgICAgIGlmICh2YXJ5aW5nLT5yZWcgPj0gMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YXJ5aW5nLT5zaXplOyBpKyspCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaW50IHJvd3MgPSBWYXJpYWJsZVJvd0NvdW50KHZhcnlpbmct
PnR5cGUpOworCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCByb3dzOyBqKysp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpbnQgciA9IHZhcnlpbmct
PnJlZyArIGkgKiByb3dzICsgajsKKyAgICAgICAgICAgICAgICAgICAgdmVydGV4SExTTCArPSAi
ICAgIG91dHB1dC52IiArIHN0cihyKTsKKworICAgICAgICAgICAgICAgICAgICBib29sIHNoYXJl
ZFJlZ2lzdGVyID0gZmFsc2U7ICAgLy8gUmVnaXN0ZXIgdXNlZCBieSBtdWx0aXBsZSB2YXJ5aW5n
cworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9
IDA7IHggPCA0OyB4KyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChwYWNraW5nW3JdW3hdICYmIHBhY2tpbmdbcl1beF0gIT0gcGFja2luZ1tyXVsw
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaGFyZWRSZWdpc3RlciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICBpZihzaGFyZWRSZWdpc3RlcikKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4SExTTCArPSAiLiI7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgNDsgeCsrKQorICAgICAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWNraW5n
W3JdW3hdID09ICYqdmFyeWluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCh4KQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAw
OiB2ZXJ0ZXhITFNMICs9ICJ4IjsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAxOiB2ZXJ0ZXhITFNMICs9ICJ5IjsgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSAyOiB2ZXJ0ZXhITFNMICs9ICJ6IjsgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiB2ZXJ0ZXhITFNMICs9ICJ3Ijsg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhITFNMICs9ICIgPSAiICsgdmFy
eWluZy0+bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlm
ICh2YXJ5aW5nLT5hcnJheSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdmVydGV4SExTTCArPSAiWyIgKyBzdHIoaSkgKyAiXSI7CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAocm93cyA+IDEpCisgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEhMU0wgKz0gIlsiICsg
c3RyKGopICsgIl0iOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhITFNMICs9ICI7XG4iOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZlcnRleEhMU0wg
Kz0gIlxuIgorICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gb3V0cHV0O1xuIgorICAgICAg
ICAgICAgICAgICAgIn1cbiI7CisKKyAgICBwaXhlbEhMU0wgKz0gInN0cnVjdCBQU19JTlBVVFxu
IgorICAgICAgICAgICAgICAgICAie1xuIjsKKyAgICAKKyAgICBmb3IgKFZhcnlpbmdMaXN0Ojpp
dGVyYXRvciB2YXJ5aW5nID0gZnJhZ21lbnRTaGFkZXItPm1WYXJ5aW5ncy5iZWdpbigpOyB2YXJ5
aW5nICE9IGZyYWdtZW50U2hhZGVyLT5tVmFyeWluZ3MuZW5kKCk7IHZhcnlpbmcrKykKKyAgICB7
CisgICAgICAgIGlmICh2YXJ5aW5nLT5yZWcgPj0gMCkKKyAgICAgICAgeworICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCB2YXJ5aW5nLT5zaXplOyBpKyspCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaW50IHJvd3MgPSBWYXJpYWJsZVJvd0NvdW50KHZhcnlpbmctPnR5cGUp
OworICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcm93czsgaisrKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgbiA9IHN0cih2YXJ5
aW5nLT5yZWcgKyBpICogcm93cyArIGopOworICAgICAgICAgICAgICAgICAgICBwaXhlbEhMU0wg
Kz0gIiAgICBmbG9hdCIgKyBzdHIoVmFyaWFibGVDb2x1bW5Db3VudCh2YXJ5aW5nLT50eXBlKSkg
KyAiIHYiICsgbiArICIgOiAiICsgdmFyeWluZ1NlbWFudGljICsgbiArICI7XG4iOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIFVOUkVB
Q0hBQkxFKCk7CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0ZyYWdDb29y
ZCkKKyAgICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQg
OiAiICsgZnJhZ0Nvb3JkU2VtYW50aWMgKyAiO1xuIjsKKyAgICB9CisgICAgICAgIAorICAgIGlm
IChmcmFnbWVudFNoYWRlci0+bVVzZXNQb2ludENvb3JkICYmIHNoYWRlck1vZGVsID49IDMpCisg
ICAgeworICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBmbG9hdDIgZ2xfUG9pbnRDb29yZCA6ICIg
KyBwb2ludENvb3JkU2VtYW50aWMgKyAiO1xuIjsKKyAgICB9CisKKyAgICAvLyBNdXN0IGNvbnN1
bWUgdGhlIFBTSVpFIGVsZW1lbnQgaWYgdGhlIGdlb21ldHJ5IHNoYWRlciBpcyBub3QgYWN0aXZl
CisgICAgLy8gV2Ugd29uJ3Qga25vdyBpZiB3ZSB1c2UgYSBHUyB1bnRpbCB3ZSBkcmF3CisgICAg
aWYgKHZlcnRleFNoYWRlci0+bVVzZXNQb2ludFNpemUgJiYgc2hhZGVyTW9kZWwgPj0gNCkKKyAg
ICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0IGdsX1BvaW50U2l6ZSA6IFBTSVpF
O1xuIjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nvb3JkKQor
ICAgIHsKKyAgICAgICAgaWYgKHNoYWRlck1vZGVsID49IDQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0NCBkeF9WUG9zIDogU1ZfUG9zaXRpb247XG4iOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNoYWRlck1vZGVsID49IDMpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0MiBkeF9WUG9zIDogVlBPUztcbiI7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwaXhlbEhMU0wgKz0gIn07XG4iCisgICAgICAgICAg
ICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgInN0cnVjdCBQU19PVVRQVVRcbiIKKyAgICAg
ICAgICAgICAgICAgIntcbiI7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCByZW5kZXJUYXJnZXRJ
bmRleCA9IDA7IHJlbmRlclRhcmdldEluZGV4IDwgbnVtUmVuZGVyVGFyZ2V0czsgcmVuZGVyVGFy
Z2V0SW5kZXgrKykKKyAgICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0NCBnbF9D
b2xvciIgKyBzdHIocmVuZGVyVGFyZ2V0SW5kZXgpICsgIiA6ICIgKyB0YXJnZXRTZW1hbnRpYyAr
IHN0cihyZW5kZXJUYXJnZXRJbmRleCkgKyAiO1xuIjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21l
bnRTaGFkZXItPm1Vc2VzRnJhZ0RlcHRoKQorICAgIHsKKyAgICAgICAgcGl4ZWxITFNMICs9ICIg
ICAgZmxvYXQgZ2xfRGVwdGggOiAiICsgZGVwdGhTZW1hbnRpYyArICI7XG4iOworICAgIH0KKwor
ICAgIHBpeGVsSExTTCArPSAifTtcbiIKKyAgICAgICAgICAgICAgICAgIlxuIjsKKworICAgIGlm
IChmcmFnbWVudFNoYWRlci0+bVVzZXNGcm9udEZhY2luZykKKyAgICB7CisgICAgICAgIGlmIChz
aGFkZXJNb2RlbCA+PSA0KQorICAgICAgICB7CisgICAgICAgICAgICBwaXhlbEhMU0wgKz0gIlBT
X09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0LCBib29sIGlzRnJvbnRGYWNlIDogU1ZfSXNGcm9u
dEZhY2UpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiI7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBwaXhlbEhMU0wgKz0gIlBTX09VVFBV
VCBtYWluKFBTX0lOUFVUIGlucHV0LCBmbG9hdCB2RmFjZSA6IFZGQUNFKVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICJ7XG4iOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIHBpeGVsSExTTCArPSAiUFNfT1VUUFVUIG1haW4oUFNfSU5QVVQgaW5wdXQpXG4i
CisgICAgICAgICAgICAgICAgICAgICAie1xuIjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRT
aGFkZXItPm1Vc2VzRnJhZ0Nvb3JkKQorICAgIHsKKyAgICAgICAgcGl4ZWxITFNMICs9ICIgICAg
ZmxvYXQgcmh3ID0gMS4wIC8gaW5wdXQuZ2xfRnJhZ0Nvb3JkLnc7XG4iOworICAgICAgICAKKyAg
ICAgICAgaWYgKHNoYWRlck1vZGVsID49IDQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBpeGVs
SExTTCArPSAiICAgIGdsX0ZyYWdDb29yZC54ID0gaW5wdXQuZHhfVlBvcy54O1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgZ2xfRnJhZ0Nvb3JkLnkgPSBpbnB1dC5keF9WUG9zLnk7
XG4iOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNoYWRlck1vZGVsID49IDMpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGdsX0ZyYWdDb29yZC54ID0gaW5w
dXQuZHhfVlBvcy54ICsgMC41O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xf
RnJhZ0Nvb3JkLnkgPSBpbnB1dC5keF9WUG9zLnkgKyAwLjU7XG4iOworICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgLy8gZHhfVmlld0Nvb3JkcyBjb250YWlu
cyB0aGUgdmlld3BvcnQgd2lkdGgvMiwgaGVpZ2h0LzIsIGNlbnRlci54IGFuZCBjZW50ZXIueS4g
U2VlIFJlbmRlcmVyOjpzZXRWaWV3cG9ydCgpCisgICAgICAgICAgICBwaXhlbEhMU0wgKz0gIiAg
ICBnbF9GcmFnQ29vcmQueCA9IChpbnB1dC5nbF9GcmFnQ29vcmQueCAqIHJodykgKiBkeF9WaWV3
Q29vcmRzLnggKyBkeF9WaWV3Q29vcmRzLno7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgICBnbF9GcmFnQ29vcmQueSA9IChpbnB1dC5nbF9GcmFnQ29vcmQueSAqIHJodykgKiBkeF9W
aWV3Q29vcmRzLnkgKyBkeF9WaWV3Q29vcmRzLnc7XG4iOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBnbF9GcmFnQ29vcmQueiA9IChpbnB1dC5nbF9GcmFn
Q29vcmQueiAqIHJodykgKiBkeF9EZXB0aEZyb250LnggKyBkeF9EZXB0aEZyb250Lnk7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAiICAgIGdsX0ZyYWdDb29yZC53ID0gcmh3O1xuIjsKKyAgICB9
CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzUG9pbnRDb29yZCAmJiBzaGFkZXJNb2Rl
bCA+PSAzKQorICAgIHsKKyAgICAgICAgcGl4ZWxITFNMICs9ICIgICAgZ2xfUG9pbnRDb29yZC54
ID0gaW5wdXQuZ2xfUG9pbnRDb29yZC54O1xuIjsKKyAgICAgICAgcGl4ZWxITFNMICs9ICIgICAg
Z2xfUG9pbnRDb29yZC55ID0gMS4wIC0gaW5wdXQuZ2xfUG9pbnRDb29yZC55O1xuIjsKKyAgICB9
CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJvbnRGYWNpbmcpCisgICAgeworICAg
ICAgICBpZiAoc2hhZGVyTW9kZWwgPD0gMykKKyAgICAgICAgeworICAgICAgICAgICAgcGl4ZWxI
TFNMICs9ICIgICAgZ2xfRnJvbnRGYWNpbmcgPSAodkZhY2UgKiBkeF9EZXB0aEZyb250LnogPj0g
MC4wKTtcbiI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg
ICBwaXhlbEhMU0wgKz0gIiAgICBnbF9Gcm9udEZhY2luZyA9IGlzRnJvbnRGYWNlO1xuIjsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZvciAoVmFyeWluZ0xpc3Q6Oml0ZXJhdG9yIHZhcnlpbmcg
PSBmcmFnbWVudFNoYWRlci0+bVZhcnlpbmdzLmJlZ2luKCk7IHZhcnlpbmcgIT0gZnJhZ21lbnRT
aGFkZXItPm1WYXJ5aW5ncy5lbmQoKTsgdmFyeWluZysrKQorICAgIHsKKyAgICAgICAgaWYgKHZh
cnlpbmctPnJlZyA+PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IHZhcnlpbmctPnNpemU7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
bnQgcm93cyA9IFZhcmlhYmxlUm93Q291bnQodmFyeWluZy0+dHlwZSk7CisgICAgICAgICAgICAg
ICAgZm9yIChpbnQgaiA9IDA7IGogPCByb3dzOyBqKyspCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBuID0gc3RyKHZhcnlpbmctPnJlZyArIGkgKiBy
b3dzICsgaik7CisgICAgICAgICAgICAgICAgICAgIHBpeGVsSExTTCArPSAiICAgICIgKyB2YXJ5
aW5nLT5uYW1lOworCisgICAgICAgICAgICAgICAgICAgIGlmICh2YXJ5aW5nLT5hcnJheSkKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxITFNMICs9
ICJbIiArIHN0cihpKSArICJdIjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgIGlmIChyb3dzID4gMSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcGl4ZWxITFNMICs9ICJbIiArIHN0cihqKSArICJdIjsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoVmFyaWFibGVDb2x1
bW5Db3VudCh2YXJ5aW5nLT50eXBlKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMTogcGl4ZWxITFNMICs9ICIgPSBpbnB1dC52IiArIG4gKyAiLng7
XG4iOyAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjogcGl4ZWxITFNMICs9
ICIgPSBpbnB1dC52IiArIG4gKyAiLnh5O1xuIjsgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMzogcGl4ZWxITFNMICs9ICIgPSBpbnB1dC52IiArIG4gKyAiLnh5ejtcbiI7IGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogcGl4ZWxITFNMICs9ICIgPSBpbnB1
dC52IiArIG4gKyAiO1xuIjsgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgp
OworICAgIH0KKworICAgIHBpeGVsSExTTCArPSAiXG4iCisgICAgICAgICAgICAgICAgICIgICAg
Z2xfbWFpbigpO1xuIgorICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICIg
ICAgUFNfT1VUUFVUIG91dHB1dDtcbiI7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCByZW5kZXJU
YXJnZXRJbmRleCA9IDA7IHJlbmRlclRhcmdldEluZGV4IDwgbnVtUmVuZGVyVGFyZ2V0czsgcmVu
ZGVyVGFyZ2V0SW5kZXgrKykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VDb2xv
ckluZGV4ID0gYnJvYWRjYXN0ID8gMCA6IHJlbmRlclRhcmdldEluZGV4OworCisgICAgICAgIHBp
eGVsSExTTCArPSAiICAgIG91dHB1dC5nbF9Db2xvciIgKyBzdHIocmVuZGVyVGFyZ2V0SW5kZXgp
ICsgIiA9IGdsX0NvbG9yWyIgKyBzdHIoc291cmNlQ29sb3JJbmRleCkgKyAiXTtcbiI7CisgICAg
fQorCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0ZyYWdEZXB0aCkKKyAgICB7CisgICAg
ICAgIHBpeGVsSExTTCArPSAiICAgIG91dHB1dC5nbF9EZXB0aCA9IGdsX0RlcHRoO1xuIjsKKyAg
ICB9CisKKyAgICBwaXhlbEhMU0wgKz0gIlxuIgorICAgICAgICAgICAgICAgICAiICAgIHJldHVy
biBvdXRwdXQ7XG4iCisgICAgICAgICAgICAgICAgICJ9XG4iOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6bG9hZChJbmZvTG9nICZpbmZvTG9nLCBjb25zdCB2
b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKQoreworICAgIEJpbmFyeUlucHV0U3RyZWFtIHN0
cmVhbShiaW5hcnksIGxlbmd0aCk7CisKKyAgICBpbnQgZm9ybWF0ID0gMDsKKyAgICBzdHJlYW0u
cmVhZCgmZm9ybWF0KTsKKyAgICBpZiAoZm9ybWF0ICE9IEdMX1BST0dSQU1fQklOQVJZX0FOR0xF
KQorICAgIHsKKyAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkludmFsaWQgcHJvZ3JhbSBiaW5hcnkg
Zm9ybWF0LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaW50IHZlcnNp
b24gPSAwOworICAgIHN0cmVhbS5yZWFkKCZ2ZXJzaW9uKTsKKyAgICBpZiAodmVyc2lvbiAhPSBW
RVJTSU9OX0RXT1JEKQorICAgIHsKKyAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkludmFsaWQgcHJv
Z3JhbSBiaW5hcnkgdmVyc2lvbi4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGludCBjb21waWxlRmxhZ3MgPSAwOworICAgIHN0cmVhbS5yZWFkKCZjb21waWxlRmxhZ3Mp
OworICAgIGlmIChjb21waWxlRmxhZ3MgIT0gQU5HTEVfQ09NUElMRV9PUFRJTUlaQVRJT05fTEVW
RUwpCisgICAgeworICAgICAgICBpbmZvTG9nLmFwcGVuZCgiTWlzbWF0Y2hlZCBjb21waWxhdGlv
biBmbGFncy4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyArK2kpCisgICAgeworICAgICAgICBzdHJl
YW0ucmVhZCgmbUxpbmtlZEF0dHJpYnV0ZVtpXS50eXBlKTsKKyAgICAgICAgc3RkOjpzdHJpbmcg
bmFtZTsKKyAgICAgICAgc3RyZWFtLnJlYWQoJm5hbWUpOworICAgICAgICBtTGlua2VkQXR0cmli
dXRlW2ldLm5hbWUgPSBuYW1lOworICAgICAgICBzdHJlYW0ucmVhZCgmbVNlbWFudGljSW5kZXhb
aV0pOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgTUFYX1RFWFRV
UkVfSU1BR0VfVU5JVFM7ICsraSkKKyAgICB7CisgICAgICAgIHN0cmVhbS5yZWFkKCZtU2FtcGxl
cnNQU1tpXS5hY3RpdmUpOworICAgICAgICBzdHJlYW0ucmVhZCgmbVNhbXBsZXJzUFNbaV0ubG9n
aWNhbFRleHR1cmVVbml0KTsKKyAgICAgICAgCisgICAgICAgIGludCB0ZXh0dXJlVHlwZTsKKyAg
ICAgICAgc3RyZWFtLnJlYWQoJnRleHR1cmVUeXBlKTsKKyAgICAgICAgbVNhbXBsZXJzUFNbaV0u
dGV4dHVyZVR5cGUgPSAoVGV4dHVyZVR5cGUpIHRleHR1cmVUeXBlOworICAgIH0KKworICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgSU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRFWF9URVhU
VVJFX0lNQUdFX1VOSVRTOyArK2kpCisgICAgeworICAgICAgICBzdHJlYW0ucmVhZCgmbVNhbXBs
ZXJzVlNbaV0uYWN0aXZlKTsKKyAgICAgICAgc3RyZWFtLnJlYWQoJm1TYW1wbGVyc1ZTW2ldLmxv
Z2ljYWxUZXh0dXJlVW5pdCk7CisgICAgICAgIAorICAgICAgICBpbnQgdGV4dHVyZVR5cGU7Cisg
ICAgICAgIHN0cmVhbS5yZWFkKCZ0ZXh0dXJlVHlwZSk7CisgICAgICAgIG1TYW1wbGVyc1ZTW2ld
LnRleHR1cmVUeXBlID0gKFRleHR1cmVUeXBlKSB0ZXh0dXJlVHlwZTsKKyAgICB9CisKKyAgICBz
dHJlYW0ucmVhZCgmbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2UpOworICAgIHN0cmVhbS5yZWFkKCZt
VXNlZFBpeGVsU2FtcGxlclJhbmdlKTsKKyAgICBzdHJlYW0ucmVhZCgmbVVzZXNQb2ludFNpemUp
OworCisgICAgc2l6ZV90IHNpemU7CisgICAgc3RyZWFtLnJlYWQoJnNpemUpOworICAgIGlmIChz
dHJlYW0uZXJyb3IoKSkKKyAgICB7CisgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJJbnZhbGlkIHBy
b2dyYW0gYmluYXJ5LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbVVu
aWZvcm1zLnJlc2l6ZShzaXplKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHNp
emU7ICsraSkKKyAgICB7CisgICAgICAgIEdMZW51bSB0eXBlOworICAgICAgICBHTGVudW0gcHJl
Y2lzaW9uOworICAgICAgICBzdGQ6OnN0cmluZyBuYW1lOworICAgICAgICB1bnNpZ25lZCBpbnQg
YXJyYXlTaXplOworCisgICAgICAgIHN0cmVhbS5yZWFkKCZ0eXBlKTsKKyAgICAgICAgc3RyZWFt
LnJlYWQoJnByZWNpc2lvbik7CisgICAgICAgIHN0cmVhbS5yZWFkKCZuYW1lKTsKKyAgICAgICAg
c3RyZWFtLnJlYWQoJmFycmF5U2l6ZSk7CisKKyAgICAgICAgbVVuaWZvcm1zW2ldID0gbmV3IFVu
aWZvcm0odHlwZSwgcHJlY2lzaW9uLCBuYW1lLCBhcnJheVNpemUpOworICAgICAgICAKKyAgICAg
ICAgc3RyZWFtLnJlYWQoJm1Vbmlmb3Jtc1tpXS0+cHNSZWdpc3RlckluZGV4KTsKKyAgICAgICAg
c3RyZWFtLnJlYWQoJm1Vbmlmb3Jtc1tpXS0+dnNSZWdpc3RlckluZGV4KTsKKyAgICAgICAgc3Ry
ZWFtLnJlYWQoJm1Vbmlmb3Jtc1tpXS0+cmVnaXN0ZXJDb3VudCk7CisgICAgfQorCisgICAgc3Ry
ZWFtLnJlYWQoJnNpemUpOworICAgIGlmIChzdHJlYW0uZXJyb3IoKSkKKyAgICB7CisgICAgICAg
IGluZm9Mb2cuYXBwZW5kKCJJbnZhbGlkIHByb2dyYW0gYmluYXJ5LiIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgbVVuaWZvcm1JbmRleC5yZXNpemUoc2l6ZSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgeworICAgICAgICBz
dHJlYW0ucmVhZCgmbVVuaWZvcm1JbmRleFtpXS5uYW1lKTsKKyAgICAgICAgc3RyZWFtLnJlYWQo
Jm1Vbmlmb3JtSW5kZXhbaV0uZWxlbWVudCk7CisgICAgICAgIHN0cmVhbS5yZWFkKCZtVW5pZm9y
bUluZGV4W2ldLmluZGV4KTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbnQgcGl4ZWxTaGFkZXJT
aXplOworICAgIHN0cmVhbS5yZWFkKCZwaXhlbFNoYWRlclNpemUpOworCisgICAgdW5zaWduZWQg
aW50IHZlcnRleFNoYWRlclNpemU7CisgICAgc3RyZWFtLnJlYWQoJnZlcnRleFNoYWRlclNpemUp
OworCisgICAgdW5zaWduZWQgaW50IGdlb21ldHJ5U2hhZGVyU2l6ZTsKKyAgICBzdHJlYW0ucmVh
ZCgmZ2VvbWV0cnlTaGFkZXJTaXplKTsKKworICAgIGNvbnN0IGNoYXIgKnB0ciA9IChjb25zdCBj
aGFyKikgYmluYXJ5ICsgc3RyZWFtLm9mZnNldCgpOworCisgICAgY29uc3QgR1VJRCAqYmluYXJ5
SWRlbnRpZmllciA9IChjb25zdCBHVUlEICopIHB0cjsKKyAgICBwdHIgKz0gc2l6ZW9mKEdVSUQp
OworCisgICAgR1VJRCBpZGVudGlmaWVyID0gbVJlbmRlcmVyLT5nZXRBZGFwdGVySWRlbnRpZmll
cigpOworICAgIGlmIChtZW1jbXAoJmlkZW50aWZpZXIsIGJpbmFyeUlkZW50aWZpZXIsIHNpemVv
ZihHVUlEKSkgIT0gMCkKKyAgICB7CisgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJJbnZhbGlkIHBy
b2dyYW0gYmluYXJ5LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29u
c3QgY2hhciAqcGl4ZWxTaGFkZXJGdW5jdGlvbiA9IHB0cjsKKyAgICBwdHIgKz0gcGl4ZWxTaGFk
ZXJTaXplOworCisgICAgY29uc3QgY2hhciAqdmVydGV4U2hhZGVyRnVuY3Rpb24gPSBwdHI7Cisg
ICAgcHRyICs9IHZlcnRleFNoYWRlclNpemU7CisKKyAgICBjb25zdCBjaGFyICpnZW9tZXRyeVNo
YWRlckZ1bmN0aW9uID0gZ2VvbWV0cnlTaGFkZXJTaXplID4gMCA/IHB0ciA6IE5VTEw7CisgICAg
cHRyICs9IGdlb21ldHJ5U2hhZGVyU2l6ZTsKKworICAgIG1QaXhlbEV4ZWN1dGFibGUgPSBtUmVu
ZGVyZXItPmxvYWRFeGVjdXRhYmxlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRFdPUkQqPihwaXhl
bFNoYWRlckZ1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwaXhlbFNoYWRlclNpemUsIHJ4OjpTSEFERVJfUElYRUwpOworICAgIGlmICgh
bVBpeGVsRXhlY3V0YWJsZSkKKyAgICB7CisgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJDb3VsZCBu
b3QgY3JlYXRlIHBpeGVsIHNoYWRlci4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gbVJlbmRlcmVyLT5sb2FkRXhlY3V0YWJsZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IERXT1JEKj4odmVydGV4U2hhZGVyRnVuY3Rpb24pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXJT
aXplLCByeDo6U0hBREVSX1ZFUlRFWCk7CisgICAgaWYgKCFtVmVydGV4RXhlY3V0YWJsZSkKKyAg
ICB7CisgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJDb3VsZCBub3QgY3JlYXRlIHZlcnRleCBzaGFk
ZXIuIik7CisgICAgICAgIGRlbGV0ZSBtUGl4ZWxFeGVjdXRhYmxlOworICAgICAgICBtUGl4ZWxF
eGVjdXRhYmxlID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
IChnZW9tZXRyeVNoYWRlckZ1bmN0aW9uICE9IE5VTEwgJiYgZ2VvbWV0cnlTaGFkZXJTaXplID4g
MCkKKyAgICB7CisgICAgICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgPSBtUmVuZGVyZXItPmxvYWRF
eGVjdXRhYmxlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRFdPUkQqPihnZW9tZXRyeVNoYWRlckZ1
bmN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2VvbWV0cnlTaGFkZXJTaXplLCByeDo6U0hBREVSX0dFT01FVFJZKTsKKyAgICAg
ICAgaWYgKCFtR2VvbWV0cnlFeGVjdXRhYmxlKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZv
TG9nLmFwcGVuZCgiQ291bGQgbm90IGNyZWF0ZSBnZW9tZXRyeSBzaGFkZXIuIik7CisgICAgICAg
ICAgICBkZWxldGUgbVBpeGVsRXhlY3V0YWJsZTsKKyAgICAgICAgICAgIG1QaXhlbEV4ZWN1dGFi
bGUgPSBOVUxMOworICAgICAgICAgICAgZGVsZXRlIG1WZXJ0ZXhFeGVjdXRhYmxlOworICAgICAg
ICAgICAgbVZlcnRleEV4ZWN1dGFibGUgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1HZW9tZXRyeUV4
ZWN1dGFibGUgPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBy
b2dyYW1CaW5hcnk6OnNhdmUodm9pZCogYmluYXJ5LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCkKK3sKKyAgICBCaW5hcnlPdXRwdXRTdHJlYW0gc3RyZWFtOworCisgICAgc3RyZWFt
LndyaXRlKEdMX1BST0dSQU1fQklOQVJZX0FOR0xFKTsKKyAgICBzdHJlYW0ud3JpdGUoVkVSU0lP
Tl9EV09SRCk7CisgICAgc3RyZWFtLndyaXRlKEFOR0xFX0NPTVBJTEVfT1BUSU1JWkFUSU9OX0xF
VkVMKTsKKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRFWF9BVFRS
SUJTOyArK2kpCisgICAgeworICAgICAgICBzdHJlYW0ud3JpdGUobUxpbmtlZEF0dHJpYnV0ZVtp
XS50eXBlKTsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1MaW5rZWRBdHRyaWJ1dGVbaV0ubmFtZSk7
CisgICAgICAgIHN0cmVhbS53cml0ZShtU2VtYW50aWNJbmRleFtpXSk7CisgICAgfQorCisgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUzsgKytp
KQorICAgIHsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1TYW1wbGVyc1BTW2ldLmFjdGl2ZSk7Cisg
ICAgICAgIHN0cmVhbS53cml0ZShtU2FtcGxlcnNQU1tpXS5sb2dpY2FsVGV4dHVyZVVuaXQpOwor
ICAgICAgICBzdHJlYW0ud3JpdGUoKGludCkgbVNhbXBsZXJzUFNbaV0udGV4dHVyZVR5cGUpOwor
ICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgSU1QTEVNRU5UQVRJT05f
TUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOyArK2kpCisgICAgeworICAgICAgICBzdHJl
YW0ud3JpdGUobVNhbXBsZXJzVlNbaV0uYWN0aXZlKTsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1T
YW1wbGVyc1ZTW2ldLmxvZ2ljYWxUZXh0dXJlVW5pdCk7CisgICAgICAgIHN0cmVhbS53cml0ZSgo
aW50KSBtU2FtcGxlcnNWU1tpXS50ZXh0dXJlVHlwZSk7CisgICAgfQorCisgICAgc3RyZWFtLndy
aXRlKG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlKTsKKyAgICBzdHJlYW0ud3JpdGUobVVzZWRQaXhl
bFNhbXBsZXJSYW5nZSk7CisgICAgc3RyZWFtLndyaXRlKG1Vc2VzUG9pbnRTaXplKTsKKworICAg
IHN0cmVhbS53cml0ZShtVW5pZm9ybXMuc2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IG1Vbmlmb3Jtcy5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIHN0cmVhbS53
cml0ZShtVW5pZm9ybXNbaV0tPnR5cGUpOworICAgICAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1z
W2ldLT5wcmVjaXNpb24pOworICAgICAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1zW2ldLT5uYW1l
KTsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1Vbmlmb3Jtc1tpXS0+YXJyYXlTaXplKTsKKworICAg
ICAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1zW2ldLT5wc1JlZ2lzdGVySW5kZXgpOworICAgICAg
ICBzdHJlYW0ud3JpdGUobVVuaWZvcm1zW2ldLT52c1JlZ2lzdGVySW5kZXgpOworICAgICAgICBz
dHJlYW0ud3JpdGUobVVuaWZvcm1zW2ldLT5yZWdpc3RlckNvdW50KTsKKyAgICB9CisKKyAgICBz
dHJlYW0ud3JpdGUobVVuaWZvcm1JbmRleC5zaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgbVVuaWZvcm1JbmRleC5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIHN0
cmVhbS53cml0ZShtVW5pZm9ybUluZGV4W2ldLm5hbWUpOworICAgICAgICBzdHJlYW0ud3JpdGUo
bVVuaWZvcm1JbmRleFtpXS5lbGVtZW50KTsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1Vbmlmb3Jt
SW5kZXhbaV0uaW5kZXgpOworICAgIH0KKworICAgIFVJTlQgcGl4ZWxTaGFkZXJTaXplID0gbVBp
eGVsRXhlY3V0YWJsZS0+Z2V0TGVuZ3RoKCk7CisgICAgc3RyZWFtLndyaXRlKHBpeGVsU2hhZGVy
U2l6ZSk7CisKKyAgICBVSU5UIHZlcnRleFNoYWRlclNpemUgPSBtVmVydGV4RXhlY3V0YWJsZS0+
Z2V0TGVuZ3RoKCk7CisgICAgc3RyZWFtLndyaXRlKHZlcnRleFNoYWRlclNpemUpOworCisgICAg
VUlOVCBnZW9tZXRyeVNoYWRlclNpemUgPSAobUdlb21ldHJ5RXhlY3V0YWJsZSAhPSBOVUxMKSA/
IG1HZW9tZXRyeUV4ZWN1dGFibGUtPmdldExlbmd0aCgpIDogMDsKKyAgICBzdHJlYW0ud3JpdGUo
Z2VvbWV0cnlTaGFkZXJTaXplKTsKKworICAgIEdVSUQgaWRlbnRpZmllciA9IG1SZW5kZXJlci0+
Z2V0QWRhcHRlcklkZW50aWZpZXIoKTsKKworICAgIEdMc2l6ZWkgc3RyZWFtTGVuZ3RoID0gc3Ry
ZWFtLmxlbmd0aCgpOworICAgIGNvbnN0IHZvaWQgKnN0cmVhbURhdGEgPSBzdHJlYW0uZGF0YSgp
OworCisgICAgR0xzaXplaSB0b3RhbExlbmd0aCA9IHN0cmVhbUxlbmd0aCArIHNpemVvZihHVUlE
KSArIHBpeGVsU2hhZGVyU2l6ZSArIHZlcnRleFNoYWRlclNpemUgKyBnZW9tZXRyeVNoYWRlclNp
emU7CisgICAgaWYgKHRvdGFsTGVuZ3RoID4gYnVmU2l6ZSkKKyAgICB7CisgICAgICAgIGlmIChs
ZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAgICpsZW5ndGggPSAwOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChiaW5hcnkpCisgICAgewor
ICAgICAgICBjaGFyICpwdHIgPSAoY2hhciopIGJpbmFyeTsKKworICAgICAgICBtZW1jcHkocHRy
LCBzdHJlYW1EYXRhLCBzdHJlYW1MZW5ndGgpOworICAgICAgICBwdHIgKz0gc3RyZWFtTGVuZ3Ro
OworCisgICAgICAgIG1lbWNweShwdHIsICZpZGVudGlmaWVyLCBzaXplb2YoR1VJRCkpOworICAg
ICAgICBwdHIgKz0gc2l6ZW9mKEdVSUQpOworCisgICAgICAgIG1lbWNweShwdHIsIG1QaXhlbEV4
ZWN1dGFibGUtPmdldEZ1bmN0aW9uKCksIHBpeGVsU2hhZGVyU2l6ZSk7CisgICAgICAgIHB0ciAr
PSBwaXhlbFNoYWRlclNpemU7CisKKyAgICAgICAgbWVtY3B5KHB0ciwgbVZlcnRleEV4ZWN1dGFi
bGUtPmdldEZ1bmN0aW9uKCksIHZlcnRleFNoYWRlclNpemUpOworICAgICAgICBwdHIgKz0gdmVy
dGV4U2hhZGVyU2l6ZTsKKworICAgICAgICBpZiAobUdlb21ldHJ5RXhlY3V0YWJsZSAhPSBOVUxM
ICYmIGdlb21ldHJ5U2hhZGVyU2l6ZSA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIG1lbWNw
eShwdHIsIG1HZW9tZXRyeUV4ZWN1dGFibGUtPmdldEZ1bmN0aW9uKCksIGdlb21ldHJ5U2hhZGVy
U2l6ZSk7CisgICAgICAgICAgICBwdHIgKz0gZ2VvbWV0cnlTaGFkZXJTaXplOworICAgICAgICB9
CisKKyAgICAgICAgQVNTRVJUKHB0ciAtIHRvdGFsTGVuZ3RoID09IGJpbmFyeSk7CisgICAgfQor
CisgICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICAgICpsZW5ndGggPSB0b3RhbExlbmd0aDsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworR0xpbnQgUHJvZ3JhbUJpbmFyeTo6Z2V0
TGVuZ3RoKCkKK3sKKyAgICBHTGludCBsZW5ndGg7CisgICAgaWYgKHNhdmUoTlVMTCwgSU5UX01B
WCwgJmxlbmd0aCkpCisgICAgeworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2Jvb2wgUHJvZ3JhbUJp
bmFyeTo6bGluayhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBBdHRyaWJ1dGVCaW5kaW5ncyAmYXR0
cmlidXRlQmluZGluZ3MsIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlciwgVmVydGV4U2hh
ZGVyICp2ZXJ0ZXhTaGFkZXIpCit7CisgICAgaWYgKCFmcmFnbWVudFNoYWRlciB8fCAhZnJhZ21l
bnRTaGFkZXItPmlzQ29tcGlsZWQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoIXZlcnRleFNoYWRlciB8fCAhdmVydGV4U2hhZGVyLT5pc0NvbXBpbGVk
KCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3RkOjpzdHJp
bmcgcGl4ZWxITFNMID0gZnJhZ21lbnRTaGFkZXItPmdldEhMU0woKTsKKyAgICBzdGQ6OnN0cmlu
ZyB2ZXJ0ZXhITFNMID0gdmVydGV4U2hhZGVyLT5nZXRITFNMKCk7CisKKyAgICAvLyBNYXAgdGhl
IHZhcnlpbmdzIHRvIHRoZSByZWdpc3RlciBmaWxlCisgICAgY29uc3QgVmFyeWluZyAqcGFja2lu
Z1tJTVBMRU1FTlRBVElPTl9NQVhfVkFSWUlOR19WRUNUT1JTXVs0XSA9IHtOVUxMfTsKKyAgICBp
bnQgcmVnaXN0ZXJzID0gcGFja1ZhcnlpbmdzKGluZm9Mb2csIHBhY2tpbmcsIGZyYWdtZW50U2hh
ZGVyKTsKKworICAgIGlmIChyZWdpc3RlcnMgPCAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmICghbGlua1ZhcnlpbmdzKGluZm9Mb2csIHJlZ2lzdGVycywg
cGFja2luZywgcGl4ZWxITFNMLCB2ZXJ0ZXhITFNMLCBmcmFnbWVudFNoYWRlciwgdmVydGV4U2hh
ZGVyKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBib29sIHN1
Y2Nlc3MgPSB0cnVlOworCisgICAgaWYgKCFsaW5rQXR0cmlidXRlcyhpbmZvTG9nLCBhdHRyaWJ1
dGVCaW5kaW5ncywgZnJhZ21lbnRTaGFkZXIsIHZlcnRleFNoYWRlcikpCisgICAgeworICAgICAg
ICBzdWNjZXNzID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFsaW5rVW5pZm9ybXMoaW5mb0xv
ZywgdmVydGV4U2hhZGVyLT5nZXRVbmlmb3JtcygpLCBmcmFnbWVudFNoYWRlci0+Z2V0VW5pZm9y
bXMoKSkpCisgICAgeworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgfQorCisgICAgLy8g
c3BlY2lhbCBjYXNlIGZvciBnbF9EZXB0aFJhbmdlLCB0aGUgb25seSBidWlsdC1pbiB1bmlmb3Jt
IChhbHNvIGEgc3RydWN0KQorICAgIGlmICh2ZXJ0ZXhTaGFkZXItPm1Vc2VzRGVwdGhSYW5nZSB8
fCBmcmFnbWVudFNoYWRlci0+bVVzZXNEZXB0aFJhbmdlKQorICAgIHsKKyAgICAgICAgbVVuaWZv
cm1zLnB1c2hfYmFjayhuZXcgVW5pZm9ybShHTF9GTE9BVCwgR0xfSElHSF9GTE9BVCwgImdsX0Rl
cHRoUmFuZ2UubmVhciIsIDApKTsKKyAgICAgICAgbVVuaWZvcm1zLnB1c2hfYmFjayhuZXcgVW5p
Zm9ybShHTF9GTE9BVCwgR0xfSElHSF9GTE9BVCwgImdsX0RlcHRoUmFuZ2UuZmFyIiwgMCkpOwor
ICAgICAgICBtVW5pZm9ybXMucHVzaF9iYWNrKG5ldyBVbmlmb3JtKEdMX0ZMT0FULCBHTF9ISUdI
X0ZMT0FULCAiZ2xfRGVwdGhSYW5nZS5kaWZmIiwgMCkpOworICAgIH0KKworICAgIGlmIChzdWNj
ZXNzKQorICAgIHsKKyAgICAgICAgbVZlcnRleEV4ZWN1dGFibGUgPSBtUmVuZGVyZXItPmNvbXBp
bGVUb0V4ZWN1dGFibGUoaW5mb0xvZywgdmVydGV4SExTTC5jX3N0cigpLCByeDo6U0hBREVSX1ZF
UlRFWCk7CisgICAgICAgIG1QaXhlbEV4ZWN1dGFibGUgPSBtUmVuZGVyZXItPmNvbXBpbGVUb0V4
ZWN1dGFibGUoaW5mb0xvZywgcGl4ZWxITFNMLmNfc3RyKCksIHJ4OjpTSEFERVJfUElYRUwpOwor
CisgICAgICAgIGlmICh1c2VzR2VvbWV0cnlTaGFkZXIoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RkOjpzdHJpbmcgZ2VvbWV0cnlITFNMID0gZ2VuZXJhdGVHZW9tZXRyeVNoYWRlckhMU0wo
cmVnaXN0ZXJzLCBwYWNraW5nLCBmcmFnbWVudFNoYWRlciwgdmVydGV4U2hhZGVyKTsKKyAgICAg
ICAgICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgPSBtUmVuZGVyZXItPmNvbXBpbGVUb0V4ZWN1dGFi
bGUoaW5mb0xvZywgZ2VvbWV0cnlITFNMLmNfc3RyKCksIHJ4OjpTSEFERVJfR0VPTUVUUlkpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtVmVydGV4RXhlY3V0YWJsZSB8fCAhbVBpeGVsRXhl
Y3V0YWJsZSB8fCAodXNlc0dlb21ldHJ5U2hhZGVyKCkgJiYgIW1HZW9tZXRyeUV4ZWN1dGFibGUp
KQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiRmFpbGVkIHRvIGNyZWF0
ZSBEM0Qgc2hhZGVycy4iKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKworICAgICAg
ICAgICAgZGVsZXRlIG1WZXJ0ZXhFeGVjdXRhYmxlOworICAgICAgICAgICAgbVZlcnRleEV4ZWN1
dGFibGUgPSBOVUxMOworICAgICAgICAgICAgZGVsZXRlIG1QaXhlbEV4ZWN1dGFibGU7CisgICAg
ICAgICAgICBtUGl4ZWxFeGVjdXRhYmxlID0gTlVMTDsKKyAgICAgICAgICAgIGRlbGV0ZSBtR2Vv
bWV0cnlFeGVjdXRhYmxlOworICAgICAgICAgICAgbUdlb21ldHJ5RXhlY3V0YWJsZSA9IE5VTEw7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKworLy8gRGV0ZXJt
aW5lcyB0aGUgbWFwcGluZyBiZXR3ZWVuIEdMIGF0dHJpYnV0ZXMgYW5kIERpcmVjdDNEIDkgdmVy
dGV4IHN0cmVhbSB1c2FnZSBpbmRpY2VzCitib29sIFByb2dyYW1CaW5hcnk6OmxpbmtBdHRyaWJ1
dGVzKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IEF0dHJpYnV0ZUJpbmRpbmdzICZhdHRyaWJ1dGVC
aW5kaW5ncywgRnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBWZXJ0ZXhTaGFkZXIgKnZl
cnRleFNoYWRlcikKK3sKKyAgICB1bnNpZ25lZCBpbnQgdXNlZExvY2F0aW9ucyA9IDA7CisKKyAg
ICAvLyBMaW5rIGF0dHJpYnV0ZXMgdGhhdCBoYXZlIGEgYmluZGluZyBsb2NhdGlvbgorICAgIGZv
ciAoQXR0cmlidXRlQXJyYXk6Oml0ZXJhdG9yIGF0dHJpYnV0ZSA9IHZlcnRleFNoYWRlci0+bUF0
dHJpYnV0ZXMuYmVnaW4oKTsgYXR0cmlidXRlICE9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMu
ZW5kKCk7IGF0dHJpYnV0ZSsrKQorICAgIHsKKyAgICAgICAgaW50IGxvY2F0aW9uID0gYXR0cmli
dXRlQmluZGluZ3MuZ2V0QXR0cmlidXRlQmluZGluZyhhdHRyaWJ1dGUtPm5hbWUpOworCisgICAg
ICAgIGlmIChsb2NhdGlvbiAhPSAtMSkgICAvLyBTZXQgYnkgZ2xCaW5kQXR0cmliTG9jYXRpb24K
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtTGlua2VkQXR0cmlidXRlW2xvY2F0aW9uXS5u
YW1lLmVtcHR5KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gTXVsdGlwbGUg
YWN0aXZlIGF0dHJpYnV0ZXMgYm91bmQgdG8gdGhlIHNhbWUgbG9jYXRpb247IG5vdCBhbiBlcnJv
cgorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtTGlua2VkQXR0cmlidXRlW2xvY2F0aW9u
XSA9ICphdHRyaWJ1dGU7CisKKyAgICAgICAgICAgIGludCByb3dzID0gVmFyaWFibGVSb3dDb3Vu
dChhdHRyaWJ1dGUtPnR5cGUpOworCisgICAgICAgICAgICBpZiAocm93cyArIGxvY2F0aW9uID4g
TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGluZm9M
b2cuYXBwZW5kKCJBY3RpdmUgYXR0cmlidXRlICglcykgYXQgbG9jYXRpb24gJWQgaXMgdG9vIGJp
ZyB0byBmaXQiLCBhdHRyaWJ1dGUtPm5hbWUuY19zdHIoKSwgbG9jYXRpb24pOworCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB1c2VkTG9jYXRpb25zIHw9IDEgPDwgKGxvY2F0aW9uICsgaSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBMaW5rIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBoYXZl
IGEgYmluZGluZyBsb2NhdGlvbgorICAgIGZvciAoQXR0cmlidXRlQXJyYXk6Oml0ZXJhdG9yIGF0
dHJpYnV0ZSA9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0cmlidXRlICE9
IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQorICAgIHsKKyAg
ICAgICAgaW50IGxvY2F0aW9uID0gYXR0cmlidXRlQmluZGluZ3MuZ2V0QXR0cmlidXRlQmluZGlu
ZyhhdHRyaWJ1dGUtPm5hbWUpOworCisgICAgICAgIGlmIChsb2NhdGlvbiA9PSAtMSkgICAvLyBO
b3Qgc2V0IGJ5IGdsQmluZEF0dHJpYkxvY2F0aW9uCisgICAgICAgIHsKKyAgICAgICAgICAgIGlu
dCByb3dzID0gVmFyaWFibGVSb3dDb3VudChhdHRyaWJ1dGUtPnR5cGUpOworICAgICAgICAgICAg
aW50IGF2YWlsYWJsZUluZGV4ID0gQWxsb2NhdGVGaXJzdEZyZWVCaXRzKCZ1c2VkTG9jYXRpb25z
LCByb3dzLCBNQVhfVkVSVEVYX0FUVFJJQlMpOworCisgICAgICAgICAgICBpZiAoYXZhaWxhYmxl
SW5kZXggPT0gLTEgfHwgYXZhaWxhYmxlSW5kZXggKyByb3dzID4gTUFYX1ZFUlRFWF9BVFRSSUJT
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJUb28gbWFu
eSBhY3RpdmUgYXR0cmlidXRlcyAoJXMpIiwgYXR0cmlidXRlLT5uYW1lLmNfc3RyKCkpOworCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8vIEZhaWwgdG8gbGluaworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBtTGlua2VkQXR0cmlidXRlW2F2YWlsYWJsZUluZGV4XSA9ICph
dHRyaWJ1dGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGludCBhdHRyaWJ1dGVJbmRl
eCA9IDA7IGF0dHJpYnV0ZUluZGV4IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyApCisgICAgeworICAg
ICAgICBpbnQgaW5kZXggPSB2ZXJ0ZXhTaGFkZXItPmdldFNlbWFudGljSW5kZXgobUxpbmtlZEF0
dHJpYnV0ZVthdHRyaWJ1dGVJbmRleF0ubmFtZSk7CisgICAgICAgIGludCByb3dzID0gc3RkOjpt
YXgoVmFyaWFibGVSb3dDb3VudChtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZUluZGV4XS50eXBl
KSwgMSk7CisKKyAgICAgICAgZm9yIChpbnQgciA9IDA7IHIgPCByb3dzOyByKyspCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1TZW1hbnRpY0luZGV4W2F0dHJpYnV0ZUluZGV4KytdID0gaW5kZXgr
KzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dy
YW1CaW5hcnk6OmxpbmtVbmlmb3JtcyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBzaDo6QWN0aXZl
VW5pZm9ybXMgJnZlcnRleFVuaWZvcm1zLCBjb25zdCBzaDo6QWN0aXZlVW5pZm9ybXMgJmZyYWdt
ZW50VW5pZm9ybXMpCit7CisgICAgZm9yIChzaDo6QWN0aXZlVW5pZm9ybXM6OmNvbnN0X2l0ZXJh
dG9yIHVuaWZvcm0gPSB2ZXJ0ZXhVbmlmb3Jtcy5iZWdpbigpOyB1bmlmb3JtICE9IHZlcnRleFVu
aWZvcm1zLmVuZCgpOyB1bmlmb3JtKyspCisgICAgeworICAgICAgICBpZiAoIWRlZmluZVVuaWZv
cm0oR0xfVkVSVEVYX1NIQURFUiwgKnVuaWZvcm0sIGluZm9Mb2cpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKHNoOjpB
Y3RpdmVVbmlmb3Jtczo6Y29uc3RfaXRlcmF0b3IgdW5pZm9ybSA9IGZyYWdtZW50VW5pZm9ybXMu
YmVnaW4oKTsgdW5pZm9ybSAhPSBmcmFnbWVudFVuaWZvcm1zLmVuZCgpOyB1bmlmb3JtKyspCisg
ICAgeworICAgICAgICBpZiAoIWRlZmluZVVuaWZvcm0oR0xfRlJBR01FTlRfU0hBREVSLCAqdW5p
Zm9ybSwgaW5mb0xvZykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dyYW1CaW5h
cnk6OmRlZmluZVVuaWZvcm0oR0xlbnVtIHNoYWRlciwgY29uc3Qgc2g6OlVuaWZvcm0gJmNvbnN0
YW50LCBJbmZvTG9nICZpbmZvTG9nKQoreworICAgIGlmIChjb25zdGFudC50eXBlID09IEdMX1NB
TVBMRVJfMkQgfHwKKyAgICAgICAgY29uc3RhbnQudHlwZSA9PSBHTF9TQU1QTEVSX0NVQkUpCisg
ICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4ID0gY29uc3RhbnQucmVnaXN0
ZXJJbmRleDsKKyAgICAgICAgICAgIAorICAgICAgICBkbworICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoc2hhZGVyID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgaWYgKHNhbXBsZXJJbmRleCA8IG1SZW5kZXJlci0+Z2V0TWF4VmVydGV4VGV4dHVy
ZUltYWdlVW5pdHMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1T
YW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0uYWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgbVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS50ZXh0dXJlVHlwZSA9IChjb25zdGFudC50eXBl
ID09IEdMX1NBTVBMRVJfQ1VCRSkgPyBURVhUVVJFX0NVQkUgOiBURVhUVVJFXzJEOworICAgICAg
ICAgICAgICAgICAgICBtU2FtcGxlcnNWU1tzYW1wbGVySW5kZXhdLmxvZ2ljYWxUZXh0dXJlVW5p
dCA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlID0gc3Rk
OjptYXgoc2FtcGxlckluZGV4ICsgMSwgbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2UpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiVmVydGV4IHNoYWRlciBzYW1wbGVyIGNv
dW50IGV4Y2VlZHMgdGhlIG1heGltdW0gdmVydGV4IHRleHR1cmUgdW5pdHMgKCVkKS4iLCBtUmVu
ZGVyZXItPmdldE1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKCkpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSBpZiAoc2hhZGVyID09IEdMX0ZSQUdNRU5UX1NIQURFUikKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc2FtcGxlckluZGV4IDwgTUFYX1RFWFRVUkVfSU1B
R0VfVU5JVFMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtU2FtcGxl
cnNQU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1T
YW1wbGVyc1BTW3NhbXBsZXJJbmRleF0udGV4dHVyZVR5cGUgPSAoY29uc3RhbnQudHlwZSA9PSBH
TF9TQU1QTEVSX0NVQkUpID8gVEVYVFVSRV9DVUJFIDogVEVYVFVSRV8yRDsKKyAgICAgICAgICAg
ICAgICAgICAgbVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS5sb2dpY2FsVGV4dHVyZVVuaXQgPSAw
OworICAgICAgICAgICAgICAgICAgICBtVXNlZFBpeGVsU2FtcGxlclJhbmdlID0gc3RkOjptYXgo
c2FtcGxlckluZGV4ICsgMSwgbVVzZWRQaXhlbFNhbXBsZXJSYW5nZSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJQaXhlbCBzaGFkZXIgc2FtcGxlciBjb3VudCBleGNl
ZWRzIE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTICglZCkuIiwgTUFYX1RFWFRVUkVfSU1BR0VfVU5J
VFMpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworCisgICAg
ICAgICAgICBzYW1wbGVySW5kZXgrKzsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoc2FtcGxl
ckluZGV4IDwgY29uc3RhbnQucmVnaXN0ZXJJbmRleCArIGNvbnN0YW50LmFycmF5U2l6ZSk7Cisg
ICAgfQorCisgICAgVW5pZm9ybSAqdW5pZm9ybSA9IE5VTEw7CisgICAgR0xpbnQgbG9jYXRpb24g
PSBnZXRVbmlmb3JtTG9jYXRpb24oY29uc3RhbnQubmFtZSk7CisKKyAgICBpZiAobG9jYXRpb24g
Pj0gMCkgICAvLyBQcmV2aW91c2x5IGRlZmluZWQsIHR5cGUgYW5kIHByZWNpc2lvbiBtdXN0IG1h
dGNoCisgICAgeworICAgICAgICB1bmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9j
YXRpb25dLmluZGV4XTsKKworICAgICAgICBpZiAodW5pZm9ybS0+dHlwZSAhPSBjb25zdGFudC50
eXBlKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiVHlwZXMgZm9yIHVu
aWZvcm0gJXMgZG8gbm90IG1hdGNoIGJldHdlZW4gdGhlIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hh
ZGVyIiwgdW5pZm9ybS0+bmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICh1bmlmb3JtLT5wcmVjaXNpb24gIT0gY29uc3RhbnQu
cHJlY2lzaW9uKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiUHJlY2lz
aW9ucyBmb3IgdW5pZm9ybSAlcyBkbyBub3QgbWF0Y2ggYmV0d2VlbiB0aGUgdmVydGV4IGFuZCBm
cmFnbWVudCBzaGFkZXIiLCB1bmlmb3JtLT5uYW1lLmNfc3RyKCkpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHVu
aWZvcm0gPSBuZXcgVW5pZm9ybShjb25zdGFudC50eXBlLCBjb25zdGFudC5wcmVjaXNpb24sIGNv
bnN0YW50Lm5hbWUsIGNvbnN0YW50LmFycmF5U2l6ZSk7CisgICAgfQorCisgICAgaWYgKCF1bmlm
b3JtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChzaGFk
ZXIgPT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAgdW5pZm9ybS0+cHNSZWdp
c3RlckluZGV4ID0gY29uc3RhbnQucmVnaXN0ZXJJbmRleDsKKyAgICB9CisgICAgZWxzZSBpZiAo
c2hhZGVyID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgeworICAgICAgICB1bmlmb3JtLT52c1Jl
Z2lzdGVySW5kZXggPSBjb25zdGFudC5yZWdpc3RlckluZGV4OworICAgIH0KKyAgICBlbHNlIFVO
UkVBQ0hBQkxFKCk7CisKKyAgICBpZiAobG9jYXRpb24gPj0gMCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB1bmlmb3JtLT50eXBlID09IGNvbnN0YW50LnR5cGU7CisgICAgfQorCisgICAgbVVuaWZv
cm1zLnB1c2hfYmFjayh1bmlmb3JtKTsKKyAgICB1bnNpZ25lZCBpbnQgdW5pZm9ybUluZGV4ID0g
bVVuaWZvcm1zLnNpemUoKSAtIDE7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHVuaWZvcm0tPmVsZW1lbnRDb3VudCgpOyBpKyspCisgICAgeworICAgICAgICBtVW5pZm9ybUlu
ZGV4LnB1c2hfYmFjayhVbmlmb3JtTG9jYXRpb24oY29uc3RhbnQubmFtZSwgaSwgdW5pZm9ybUlu
ZGV4KSk7CisgICAgfQorCisgICAgaWYgKHNoYWRlciA9PSBHTF9WRVJURVhfU0hBREVSKQorICAg
IHsKKyAgICAgICAgaWYgKGNvbnN0YW50LnJlZ2lzdGVySW5kZXggKyB1bmlmb3JtLT5yZWdpc3Rl
ckNvdW50ID4gbVJlbmRlcmVyLT5nZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKCkgKyBt
UmVuZGVyZXItPmdldE1heFZlcnRleFVuaWZvcm1WZWN0b3JzKCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGluZm9Mb2cuYXBwZW5kKCJWZXJ0ZXggc2hhZGVyIGFjdGl2ZSB1bmlmb3JtcyBleGNl
ZWQgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMgKCV1KSIsIG1SZW5kZXJlci0+Z2V0TWF4
VmVydGV4VW5pZm9ybVZlY3RvcnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoc2hhZGVyID09IEdMX0ZSQUdNRU5UX1NIQURFUikK
KyAgICB7CisgICAgICAgIGlmIChjb25zdGFudC5yZWdpc3RlckluZGV4ICsgdW5pZm9ybS0+cmVn
aXN0ZXJDb3VudCA+IG1SZW5kZXJlci0+Z2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1WZWN0b3Jz
KCkgKyBtUmVuZGVyZXItPmdldE1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkZyYWdtZW50IHNoYWRlciBhY3RpdmUgdW5p
Zm9ybXMgZXhjZWVkIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMgKCV1KSIsIG1SZW5k
ZXJlci0+Z2V0TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworc3RkOjpzdHJpbmcgUHJvZ3JhbUJpbmFyeTo6Z2VuZXJhdGVH
ZW9tZXRyeVNoYWRlckhMU0woaW50IHJlZ2lzdGVycywgY29uc3QgVmFyeWluZyAqcGFja2luZ1td
WzRdLCBGcmFnbWVudFNoYWRlciAqZnJhZ21lbnRTaGFkZXIsIFZlcnRleFNoYWRlciAqdmVydGV4
U2hhZGVyKSBjb25zdAoreworICAgIC8vIGZvciBub3cgd2Ugb25seSBoYW5kbGUgcG9pbnQgc3By
aXRlIGVtdWxhdGlvbgorICAgIEFTU0VSVCh1c2VzUG9pbnRTcHJpdGVFbXVsYXRpb24oKSk7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlUG9pbnRTcHJpdGVITFNMKHJlZ2lzdGVycywgcGFja2luZywgZnJh
Z21lbnRTaGFkZXIsIHZlcnRleFNoYWRlcik7Cit9CisKK3N0ZDo6c3RyaW5nIFByb2dyYW1CaW5h
cnk6OmdlbmVyYXRlUG9pbnRTcHJpdGVITFNMKGludCByZWdpc3RlcnMsIGNvbnN0IFZhcnlpbmcg
KnBhY2tpbmdbXVs0XSwgRnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBWZXJ0ZXhTaGFk
ZXIgKnZlcnRleFNoYWRlcikgY29uc3QKK3sKKyAgICBBU1NFUlQocmVnaXN0ZXJzID49IDApOwor
ICAgIEFTU0VSVCh2ZXJ0ZXhTaGFkZXItPm1Vc2VzUG9pbnRTaXplKTsKKyAgICBBU1NFUlQobVJl
bmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVsKCkgPj0gNCk7CisKKyAgICBzdGQ6OnN0cmluZyBn
ZW9tSExTTDsKKworICAgIHN0ZDo6c3RyaW5nIHZhcnlpbmdTZW1hbnRpYyA9ICJURVhDT09SRCI7
CisKKyAgICBzdGQ6OnN0cmluZyBmcmFnQ29vcmRTZW1hbnRpYzsKKyAgICBzdGQ6OnN0cmluZyBw
b2ludENvb3JkU2VtYW50aWM7CisKKyAgICBpbnQgcmVzZXJ2ZWRSZWdpc3RlckluZGV4ID0gcmVn
aXN0ZXJzOworCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0ZyYWdDb29yZCkKKyAgICB7
CisgICAgICAgIGZyYWdDb29yZFNlbWFudGljID0gdmFyeWluZ1NlbWFudGljICsgc3RyKHJlc2Vy
dmVkUmVnaXN0ZXJJbmRleCsrKTsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1V
c2VzUG9pbnRDb29yZCkKKyAgICB7CisgICAgICAgIHBvaW50Q29vcmRTZW1hbnRpYyA9IHZhcnlp
bmdTZW1hbnRpYyArIHN0cihyZXNlcnZlZFJlZ2lzdGVySW5kZXgrKyk7CisgICAgfQorCisgICAg
Z2VvbUhMU0wgKz0gInVuaWZvcm0gZmxvYXQ0IGR4X1ZpZXdDb29yZHMgOiByZWdpc3RlcihjMSk7
XG4iCisgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICJzdHJ1Y3QgR1NfSU5Q
VVRcbiIKKyAgICAgICAgICAgICAgICAie1xuIjsKKworICAgIGZvciAoaW50IHIgPSAwOyByIDwg
cmVnaXN0ZXJzOyByKyspCisgICAgeworICAgICAgICBpbnQgcmVnaXN0ZXJTaXplID0gcGFja2lu
Z1tyXVszXSA/IDQgOiAocGFja2luZ1tyXVsyXSA/IDMgOiAocGFja2luZ1tyXVsxXSA/IDIgOiAx
KSk7CisKKyAgICAgICAgZ2VvbUhMU0wgKz0gIiAgICBmbG9hdCIgKyBzdHIocmVnaXN0ZXJTaXpl
KSArICIgdiIgKyBzdHIocikgKyAiIDogIiArIHZhcnlpbmdTZW1hbnRpYyArIHN0cihyKSArICI7
XG4iOworICAgIH0KKworICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnQ29vcmQpCisg
ICAgeworICAgICAgICBnZW9tSExTTCArPSAiICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiAiICsg
ZnJhZ0Nvb3JkU2VtYW50aWMgKyAiO1xuIjsKKyAgICB9CisKKyAgICBnZW9tSExTTCArPSAiICAg
IGZsb2F0IGdsX1BvaW50U2l6ZSA6IFBTSVpFO1xuIgorICAgICAgICAgICAgICAgICIgICAgZmxv
YXQ0IGdsX1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247XG4iCisgICAgICAgICAgICAgICAgIn07XG4i
CisgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICJzdHJ1Y3QgR1NfT1VUUFVU
XG4iCisgICAgICAgICAgICAgICAgIntcbiI7CisKKyAgICBmb3IgKGludCByID0gMDsgciA8IHJl
Z2lzdGVyczsgcisrKQorICAgIHsKKyAgICAgICAgaW50IHJlZ2lzdGVyU2l6ZSA9IHBhY2tpbmdb
cl1bM10gPyA0IDogKHBhY2tpbmdbcl1bMl0gPyAzIDogKHBhY2tpbmdbcl1bMV0gPyAyIDogMSkp
OworCisgICAgICAgIGdlb21ITFNMICs9ICIgICAgZmxvYXQiICsgc3RyKHJlZ2lzdGVyU2l6ZSkg
KyAiIHYiICsgc3RyKHIpICsgIiA6ICIgKyB2YXJ5aW5nU2VtYW50aWMgKyBzdHIocikgKyAiO1xu
IjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nvb3JkKQorICAg
IHsKKyAgICAgICAgZ2VvbUhMU0wgKz0gIiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3JkIDogIiArIGZy
YWdDb29yZFNlbWFudGljICsgIjtcbiI7CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50U2hhZGVy
LT5tVXNlc1BvaW50Q29vcmQpCisgICAgeworICAgICAgICBnZW9tSExTTCArPSAiICAgIGZsb2F0
MiBnbF9Qb2ludENvb3JkIDogIiArIHBvaW50Q29vcmRTZW1hbnRpYyArICI7XG4iOworICAgIH0K
KworICAgIGdlb21ITFNMICs9ICAgIiAgICBmbG9hdCBnbF9Qb2ludFNpemUgOiBQU0laRTtcbiIK
KyAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247
XG4iCisgICAgICAgICAgICAgICAgICAifTtcbiIKKyAgICAgICAgICAgICAgICAgICJcbiIKKyAg
ICAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQyIHBvaW50U3ByaXRlQ29ybmVyc1tdID0gXG4i
CisgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIo
IDAuNWYsIC0wLjVmKSxcbiIKKyAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyKCAwLjVmLCAg
MC41ZiksXG4iCisgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MigtMC41ZiwgLTAuNWYpLFxu
IgorICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIoLTAuNWYsICAwLjVmKVxuIgorICAgICAg
ICAgICAgICAgICAgIn07XG4iCisgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAg
ICAgICAic3RhdGljIGZsb2F0MiBwb2ludFNwcml0ZVRleGNvb3Jkc1tdID0gXG4iCisgICAgICAg
ICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIoMS4wZiwgMS4w
ZiksXG4iCisgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MigxLjBmLCAwLjBmKSxcbiIKKyAg
ICAgICAgICAgICAgICAgICIgICAgZmxvYXQyKDAuMGYsIDEuMGYpLFxuIgorICAgICAgICAgICAg
ICAgICAgIiAgICBmbG9hdDIoMC4wZiwgMC4wZilcbiIKKyAgICAgICAgICAgICAgICAgICJ9O1xu
IgorICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgInN0YXRpYyBmbG9h
dCBtaW5Qb2ludFNpemUgPSAiICsgc3RyKEFMSUFTRURfUE9JTlRfU0laRV9SQU5HRV9NSU4pICsg
Ii4wZjtcbiIKKyAgICAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQgbWF4UG9pbnRTaXplID0g
IiArIHN0cihtUmVuZGVyZXItPmdldE1heFBvaW50U2l6ZSgpKSArICIuMGY7XG4iCisgICAgICAg
ICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAiW21heHZlcnRleGNvdW50KDQpXVxu
IgorICAgICAgICAgICAgICAgICAgInZvaWQgbWFpbihwb2ludCBHU19JTlBVVCBpbnB1dFsxXSwg
aW5vdXQgVHJpYW5nbGVTdHJlYW08R1NfT1VUUFVUPiBvdXRTdHJlYW0pXG4iCisgICAgICAgICAg
ICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgIiAgICBHU19PVVRQVVQgb3V0cHV0ID0g
KEdTX09VVFBVVCkwO1xuIgorICAgICAgICAgICAgICAgICAgIiAgICBvdXRwdXQuZ2xfUG9pbnRT
aXplID0gaW5wdXRbMF0uZ2xfUG9pbnRTaXplO1xuIjsKKworICAgIGZvciAoaW50IHIgPSAwOyBy
IDwgcmVnaXN0ZXJzOyByKyspCisgICAgeworICAgICAgICBnZW9tSExTTCArPSAiICAgIG91dHB1
dC52IiArIHN0cihyKSArICIgPSBpbnB1dFswXS52IiArIHN0cihyKSArICI7XG4iOworICAgIH0K
KworICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnQ29vcmQpCisgICAgeworICAgICAg
ICBnZW9tSExTTCArPSAiICAgIG91dHB1dC5nbF9GcmFnQ29vcmQgPSBpbnB1dFswXS5nbF9GcmFn
Q29vcmQ7XG4iOworICAgIH0KKworICAgIGdlb21ITFNMICs9ICIgICAgXG4iCisgICAgICAgICAg
ICAgICAgIiAgICBmbG9hdCBnbF9Qb2ludFNpemUgPSBjbGFtcChpbnB1dFswXS5nbF9Qb2ludFNp
emUsIG1pblBvaW50U2l6ZSwgbWF4UG9pbnRTaXplKTtcbiIKKyAgICAgICAgICAgICAgICAiICAg
IGZsb2F0NCBnbF9Qb3NpdGlvbiA9IGlucHV0WzBdLmdsX1Bvc2l0aW9uO1xuIgorICAgICAgICAg
ICAgICAgICIgICAgZmxvYXQyIHZpZXdwb3J0U2NhbGUgPSBmbG9hdDIoMS4wZiAvIGR4X1ZpZXdD
b29yZHMueCwgMS4wZiAvIGR4X1ZpZXdDb29yZHMueSkgKiBnbF9Qb3NpdGlvbi53O1xuIjsKKwor
ICAgIGZvciAoaW50IGNvcm5lciA9IDA7IGNvcm5lciA8IDQ7IGNvcm5lcisrKQorICAgIHsKKyAg
ICAgICAgZ2VvbUhMU0wgKz0gIiAgICBcbiIKKyAgICAgICAgICAgICAgICAgICAgIiAgICBvdXRw
dXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbiArIGZsb2F0NChwb2ludFNwcml0ZUNvcm5lcnNb
IiArIHN0cihjb3JuZXIpICsgIl0gKiB2aWV3cG9ydFNjYWxlICogZ2xfUG9pbnRTaXplLCAwLjBm
LCAwLjBmKTtcbiI7CisKKyAgICAgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc1BvaW50Q29v
cmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdlb21ITFNMICs9ICIgICAgb3V0cHV0LmdsX1Bv
aW50Q29vcmQgPSBwb2ludFNwcml0ZVRleGNvb3Jkc1siICsgc3RyKGNvcm5lcikgKyAiXTtcbiI7
CisgICAgICAgIH0KKworICAgICAgICBnZW9tSExTTCArPSAiICAgIG91dFN0cmVhbS5BcHBlbmQo
b3V0cHV0KTtcbiI7CisgICAgfQorCisgICAgZ2VvbUhMU0wgKz0gIiAgICBcbiIKKyAgICAgICAg
ICAgICAgICAiICAgIG91dFN0cmVhbS5SZXN0YXJ0U3RyaXAoKTtcbiIKKyAgICAgICAgICAgICAg
ICAifVxuIjsKKworICAgIHJldHVybiBnZW9tSExTTDsKK30KKworLy8gVGhpcyBtZXRob2QgbmVl
ZHMgdG8gbWF0Y2ggT3V0cHV0SExTTDo6ZGVjb3JhdGUKK3N0ZDo6c3RyaW5nIFByb2dyYW1CaW5h
cnk6OmRlY29yYXRlQXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKQoreworICAgIGlm
IChuYW1lLmNvbXBhcmUoMCwgMywgImdsXyIpICE9IDAgJiYgbmFtZS5jb21wYXJlKDAsIDMsICJk
eF8iKSAhPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJfIiArIG5hbWU7CisgICAgfQorICAg
IAorICAgIHJldHVybiBuYW1lOworfQorCitib29sIFByb2dyYW1CaW5hcnk6OmlzVmFsaWRhdGVk
KCkgY29uc3QgCit7CisgICAgcmV0dXJuIG1WYWxpZGF0ZWQ7Cit9CisKK3ZvaWQgUHJvZ3JhbUJp
bmFyeTo6Z2V0QWN0aXZlQXR0cmlidXRlKEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBH
THNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSkg
Y29uc3QKK3sKKyAgICAvLyBTa2lwIG92ZXIgaW5hY3RpdmUgYXR0cmlidXRlcworICAgIHVuc2ln
bmVkIGludCBhY3RpdmVBdHRyaWJ1dGUgPSAwOworICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGU7
CisgICAgZm9yIChhdHRyaWJ1dGUgPSAwOyBhdHRyaWJ1dGUgPCBNQVhfVkVSVEVYX0FUVFJJQlM7
IGF0dHJpYnV0ZSsrKQorICAgIHsKKyAgICAgICAgaWYgKG1MaW5rZWRBdHRyaWJ1dGVbYXR0cmli
dXRlXS5uYW1lLmVtcHR5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGFjdGl2ZUF0dHJpYnV0ZSA9PSBpbmRleCkKKyAgICAgICAg
eworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBhY3RpdmVBdHRyaWJ1
dGUrKzsKKyAgICB9CisKKyAgICBpZiAoYnVmc2l6ZSA+IDApCisgICAgeworICAgICAgICBjb25z
dCBjaGFyICpzdHJpbmcgPSBtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZV0ubmFtZS5jX3N0cigp
OworCisgICAgICAgIHN0cm5jcHkobmFtZSwgc3RyaW5nLCBidWZzaXplKTsKKyAgICAgICAgbmFt
ZVtidWZzaXplIC0gMV0gPSAnXDAnOworCisgICAgICAgIGlmIChsZW5ndGgpCisgICAgICAgIHsK
KyAgICAgICAgICAgICpsZW5ndGggPSBzdHJsZW4obmFtZSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAqc2l6ZSA9IDE7ICAgLy8gQWx3YXlzIGEgc2luZ2xlICd0eXBlJyBpbnN0YW5jZQorCisg
ICAgKnR5cGUgPSBtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZV0udHlwZTsKK30KKworR0xpbnQg
UHJvZ3JhbUJpbmFyeTo6Z2V0QWN0aXZlQXR0cmlidXRlQ291bnQoKSBjb25zdAoreworICAgIGlu
dCBjb3VudCA9IDA7CisKKyAgICBmb3IgKGludCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0dHJpYnV0
ZUluZGV4IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBhdHRyaWJ1dGVJbmRleCsrKQorICAgIHsKKyAg
ICAgICAgaWYgKCFtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZUluZGV4XS5uYW1lLmVtcHR5KCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gY291bnQ7Cit9CisKK0dMaW50IFByb2dyYW1CaW5hcnk6OmdldEFjdGl2ZUF0dHJp
YnV0ZU1heExlbmd0aCgpIGNvbnN0Cit7CisgICAgaW50IG1heExlbmd0aCA9IDA7CisKKyAgICBm
b3IgKGludCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0dHJpYnV0ZUluZGV4IDwgTUFYX1ZFUlRFWF9B
VFRSSUJTOyBhdHRyaWJ1dGVJbmRleCsrKQorICAgIHsKKyAgICAgICAgaWYgKCFtTGlua2VkQXR0
cmlidXRlW2F0dHJpYnV0ZUluZGV4XS5uYW1lLmVtcHR5KCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1heExlbmd0aCA9IHN0ZDo6bWF4KChpbnQpKG1MaW5rZWRBdHRyaWJ1dGVbYXR0cmlidXRl
SW5kZXhdLm5hbWUubGVuZ3RoKCkgKyAxKSwgbWF4TGVuZ3RoKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBtYXhMZW5ndGg7Cit9CisKK3ZvaWQgUHJvZ3JhbUJpbmFyeTo6Z2V0QWN0
aXZlVW5pZm9ybShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGluZGV4IDwgbVVuaWZvcm1zLnNpemUoKSk7ICAgLy8gaW5kZXggbXVzdCBiZSBzbWFs
bGVyIHRoYW4gZ2V0QWN0aXZlVW5pZm9ybUNvdW50KCkKKworICAgIGlmIChidWZzaXplID4gMCkK
KyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nIHN0cmluZyA9IG1Vbmlmb3Jtc1tpbmRleF0tPm5h
bWU7CisKKyAgICAgICAgaWYgKG1Vbmlmb3Jtc1tpbmRleF0tPmlzQXJyYXkoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgc3RyaW5nICs9ICJbMF0iOworICAgICAgICB9CisKKyAgICAgICAgc3Ry
bmNweShuYW1lLCBzdHJpbmcuY19zdHIoKSwgYnVmc2l6ZSk7CisgICAgICAgIG5hbWVbYnVmc2l6
ZSAtIDFdID0gJ1wwJzsKKworICAgICAgICBpZiAobGVuZ3RoKQorICAgICAgICB7CisgICAgICAg
ICAgICAqbGVuZ3RoID0gc3RybGVuKG5hbWUpOworICAgICAgICB9CisgICAgfQorCisgICAgKnNp
emUgPSBtVW5pZm9ybXNbaW5kZXhdLT5lbGVtZW50Q291bnQoKTsKKworICAgICp0eXBlID0gbVVu
aWZvcm1zW2luZGV4XS0+dHlwZTsKK30KKworR0xpbnQgUHJvZ3JhbUJpbmFyeTo6Z2V0QWN0aXZl
VW5pZm9ybUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVVuaWZvcm1zLnNpemUoKTsKK30K
KworR0xpbnQgUHJvZ3JhbUJpbmFyeTo6Z2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aCgpIGNvbnN0
Cit7CisgICAgaW50IG1heExlbmd0aCA9IDA7CisKKyAgICB1bnNpZ25lZCBpbnQgbnVtVW5pZm9y
bXMgPSBtVW5pZm9ybXMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaW50IHVuaWZvcm1JbmRl
eCA9IDA7IHVuaWZvcm1JbmRleCA8IG51bVVuaWZvcm1zOyB1bmlmb3JtSW5kZXgrKykKKyAgICB7
CisgICAgICAgIGlmICghbVVuaWZvcm1zW3VuaWZvcm1JbmRleF0tPm5hbWUuZW1wdHkoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgaW50IGxlbmd0aCA9IChpbnQpKG1Vbmlmb3Jtc1t1bmlmb3Jt
SW5kZXhdLT5uYW1lLmxlbmd0aCgpICsgMSk7CisgICAgICAgICAgICBpZiAobVVuaWZvcm1zW3Vu
aWZvcm1JbmRleF0tPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBs
ZW5ndGggKz0gMzsgIC8vIENvdW50aW5nIGluICJbMF0iLgorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbWF4TGVuZ3RoID0gc3RkOjptYXgobGVuZ3RoLCBtYXhMZW5ndGgpOworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIG1heExlbmd0aDsKK30KKwordm9pZCBQcm9ncmFtQmluYXJ5
Ojp2YWxpZGF0ZShJbmZvTG9nICZpbmZvTG9nKQoreworICAgIGFwcGx5VW5pZm9ybXMoKTsKKyAg
ICBpZiAoIXZhbGlkYXRlU2FtcGxlcnMoJmluZm9Mb2cpKQorICAgIHsKKyAgICAgICAgbVZhbGlk
YXRlZCA9IGZhbHNlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtVmFsaWRhdGVk
ID0gdHJ1ZTsKKyAgICB9Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6dmFsaWRhdGVTYW1wbGVy
cyhJbmZvTG9nICppbmZvTG9nKQoreworICAgIC8vIGlmIGFueSB0d28gYWN0aXZlIHNhbXBsZXJz
IGluIGEgcHJvZ3JhbSBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBidXQgcmVmZXIgdG8gdGhlIHNh
bWUKKyAgICAvLyB0ZXh0dXJlIGltYWdlIHVuaXQsIGFuZCB0aGlzIGlzIHRoZSBjdXJyZW50IHBy
b2dyYW0sIHRoZW4gVmFsaWRhdGVQcm9ncmFtIHdpbGwgZmFpbCwgYW5kCisgICAgLy8gRHJhd0Fy
cmF5cyBhbmQgRHJhd0VsZW1lbnRzIHdpbGwgaXNzdWUgdGhlIElOVkFMSURfT1BFUkFUSU9OIGVy
cm9yLgorCisgICAgY29uc3QgdW5zaWduZWQgaW50IG1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5p
dHMgPSBtUmVuZGVyZXItPmdldE1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKTsKKyAgICBU
ZXh0dXJlVHlwZSB0ZXh0dXJlVW5pdFR5cGVbSU1QTEVNRU5UQVRJT05fTUFYX0NPTUJJTkVEX1RF
WFRVUkVfSU1BR0VfVU5JVFNdOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBJ
TVBMRU1FTlRBVElPTl9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUzsgKytpKQorICAg
IHsKKyAgICAgICAgdGV4dHVyZVVuaXRUeXBlW2ldID0gVEVYVFVSRV9VTktOT1dOOworICAgIH0K
KworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbVVzZWRQaXhlbFNhbXBsZXJSYW5n
ZTsgKytpKQorICAgIHsKKyAgICAgICAgaWYgKG1TYW1wbGVyc1BTW2ldLmFjdGl2ZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW50IHVuaXQgPSBtU2FtcGxlcnNQU1tpXS5sb2dp
Y2FsVGV4dHVyZVVuaXQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh1bml0ID49IG1h
eENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKGluZm9Mb2cpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBp
bmZvTG9nLT5hcHBlbmQoIlNhbXBsZXIgdW5pZm9ybSAoJWQpIGV4Y2VlZHMgSU1QTEVNRU5UQVRJ
T05fTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMgKCVkKSIsIHVuaXQsIG1heENvbWJp
bmVkVGV4dHVyZUltYWdlVW5pdHMpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRleHR1
cmVVbml0VHlwZVt1bml0XSAhPSBURVhUVVJFX1VOS05PV04pCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaWYgKG1TYW1wbGVyc1BTW2ldLnRleHR1cmVUeXBlICE9IHRleHR1cmVVbml0
VHlwZVt1bml0XSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmIChp
bmZvTG9nKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
bmZvTG9nLT5hcHBlbmQoIlNhbXBsZXJzIG9mIGNvbmZsaWN0aW5nIHR5cGVzIHJlZmVyIHRvIHRo
ZSBzYW1lIHRleHR1cmUgaW1hZ2UgdW5pdCAoJWQpLiIsIHVuaXQpOworICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB0ZXh0dXJlVW5pdFR5cGVbdW5pdF0gPSBtU2FtcGxlcnNQU1tpXS50ZXh0
dXJlVHlwZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2U7ICsraSkKKyAgICB7
CisgICAgICAgIGlmIChtU2FtcGxlcnNWU1tpXS5hY3RpdmUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGludCB1bml0ID0gbVNhbXBsZXJzVlNbaV0ubG9naWNhbFRleHR1cmVVbml0
OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodW5pdCA+PSBtYXhDb21iaW5lZFRleHR1
cmVJbWFnZVVuaXRzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpbmZvTG9n
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW5mb0xvZy0+YXBwZW5k
KCJTYW1wbGVyIHVuaWZvcm0gKCVkKSBleGNlZWRzIElNUExFTUVOVEFUSU9OX01BWF9DT01CSU5F
RF9URVhUVVJFX0lNQUdFX1VOSVRTICglZCkiLCB1bml0LCBtYXhDb21iaW5lZFRleHR1cmVJbWFn
ZVVuaXRzKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlVW5pdFR5cGVbdW5p
dF0gIT0gVEVYVFVSRV9VTktOT1dOKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
IChtU2FtcGxlcnNWU1tpXS50ZXh0dXJlVHlwZSAhPSB0ZXh0dXJlVW5pdFR5cGVbdW5pdF0pCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoaW5mb0xvZykKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb0xvZy0+YXBwZW5k
KCJTYW1wbGVycyBvZiBjb25mbGljdGluZyB0eXBlcyByZWZlciB0byB0aGUgc2FtZSB0ZXh0dXJl
IGltYWdlIHVuaXQgKCVkKS4iLCB1bml0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
dGV4dHVyZVVuaXRUeXBlW3VuaXRdID0gbVNhbXBsZXJzVlNbaV0udGV4dHVyZVR5cGU7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUHJv
Z3JhbUJpbmFyeTo6U2FtcGxlcjo6U2FtcGxlcigpIDogYWN0aXZlKGZhbHNlKSwgbG9naWNhbFRl
eHR1cmVVbml0KDApLCB0ZXh0dXJlVHlwZShURVhUVVJFXzJEKQoreworfQorCitzdHJ1Y3QgQXR0
cmlidXRlU29ydGVyCit7CisgICAgQXR0cmlidXRlU29ydGVyKGNvbnN0IGludCAoJnNlbWFudGlj
SW5kaWNlcylbTUFYX1ZFUlRFWF9BVFRSSUJTXSkKKyAgICAgICAgOiBvcmlnaW5hbEluZGljZXMo
c2VtYW50aWNJbmRpY2VzKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhf
VkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgaW5kaWNlc1tpXSA9
IGk7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6OnNvcnQoJmluZGljZXNbMF0sICZpbmRpY2Vz
W01BWF9WRVJURVhfQVRUUklCU10sICp0aGlzKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9y
KCkoaW50IGEsIGludCBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsSW5kaWNlc1th
XSA9PSAtMSA/IGZhbHNlIDogb3JpZ2luYWxJbmRpY2VzW2FdIDwgb3JpZ2luYWxJbmRpY2VzW2Jd
OworICAgIH0KKworICAgIGludCBpbmRpY2VzW01BWF9WRVJURVhfQVRUUklCU107CisgICAgY29u
c3QgaW50ICgmb3JpZ2luYWxJbmRpY2VzKVtNQVhfVkVSVEVYX0FUVFJJQlNdOworfTsKKwordm9p
ZCBQcm9ncmFtQmluYXJ5Ojpzb3J0QXR0cmlidXRlc0J5TGF5b3V0KHJ4OjpUcmFuc2xhdGVkQXR0
cmlidXRlIGF0dHJpYnV0ZXNbTUFYX1ZFUlRFWF9BVFRSSUJTXSwgaW50IHNvcnRlZFNlbWFudGlj
SW5kaWNlc1tNQVhfVkVSVEVYX0FUVFJJQlNdKSBjb25zdAoreworICAgIEF0dHJpYnV0ZVNvcnRl
ciBzb3J0ZXIobVNlbWFudGljSW5kZXgpOworCisgICAgaW50IG9sZEluZGljZXNbTUFYX1ZFUlRF
WF9BVFRSSUJTXTsKKyAgICByeDo6VHJhbnNsYXRlZEF0dHJpYnV0ZSBvbGRUcmFuc2xhdGVkQXR0
cmlidXRlc1tNQVhfVkVSVEVYX0FUVFJJQlNdOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBN
QVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7CisgICAgICAgIG9sZEluZGljZXNbaV0gPSBt
U2VtYW50aWNJbmRleFtpXTsKKyAgICAgICAgb2xkVHJhbnNsYXRlZEF0dHJpYnV0ZXNbaV0gPSBh
dHRyaWJ1dGVzW2ldOworICAgIH0KKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRF
WF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBpbnQgb2xkSW5kZXggPSBzb3J0ZXIuaW5k
aWNlc1tpXTsKKyAgICAgICAgc29ydGVkU2VtYW50aWNJbmRpY2VzW2ldID0gb2xkSW5kaWNlc1tv
bGRJbmRleF07CisgICAgICAgIGF0dHJpYnV0ZXNbaV0gPSBvbGRUcmFuc2xhdGVkQXR0cmlidXRl
c1tvbGRJbmRleF07CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
UHJvZ3JhbS5oOiBEZWZpbmVzIHRoZSBnbDo6UHJvZ3JhbSBjbGFzcy4gSW1wbGVtZW50cyBHTCBw
cm9ncmFtIG9iamVjdHMKKy8vIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIFtPcGVuR0wgRVMg
Mi4wLjI0XSBzZWN0aW9uIDIuMTAuMyBwYWdlIDI4LgorCisjaWZuZGVmIExJQkdMRVNWMl9QUk9H
UkFNX0JJTkFSWV9IXworI2RlZmluZSBMSUJHTEVTVjJfUFJPR1JBTV9CSU5BUllfSF8KKworI2Rl
ZmluZSBHTF9BUElDQUxMCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIv
Z2wyZXh0Lmg+CisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5j
bHVkZSAiY29tbW9uL1JlZkNvdW50T2JqZWN0LmgiCisjaW5jbHVkZSAiYW5nbGV0eXBlcy5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9Vbmlm
b3JtLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1NoYWRlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9Db25zdGFudHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBTaGFkZXJFeGVjdXRhYmxl
OworY2xhc3MgUmVuZGVyZXI7CitzdHJ1Y3QgVHJhbnNsYXRlZEF0dHJpYnV0ZTsKK30KKworbmFt
ZXNwYWNlIGdsCit7CitjbGFzcyBGcmFnbWVudFNoYWRlcjsKK2NsYXNzIFZlcnRleFNoYWRlcjsK
K2NsYXNzIEluZm9Mb2c7CitjbGFzcyBBdHRyaWJ1dGVCaW5kaW5nczsKK3N0cnVjdCBWYXJ5aW5n
OworCisvLyBTdHJ1Y3QgdXNlZCBmb3IgY29ycmVsYXRpbmcgdW5pZm9ybXMvZWxlbWVudHMgb2Yg
dW5pZm9ybSBhcnJheXMgdG8gaGFuZGxlcworc3RydWN0IFVuaWZvcm1Mb2NhdGlvbgoreworICAg
IFVuaWZvcm1Mb2NhdGlvbigpCisgICAgeworICAgIH0KKworICAgIFVuaWZvcm1Mb2NhdGlvbihj
b25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgdW5zaWduZWQgaW50IGVsZW1lbnQsIHVuc2lnbmVkIGlu
dCBpbmRleCk7CisKKyAgICBzdGQ6OnN0cmluZyBuYW1lOworICAgIHVuc2lnbmVkIGludCBlbGVt
ZW50OworICAgIHVuc2lnbmVkIGludCBpbmRleDsKK307CisKKy8vIFRoaXMgaXMgdGhlIHJlc3Vs
dCBvZiBsaW5raW5nIGEgcHJvZ3JhbS4gSXQgaXMgdGhlIHN0YXRlIHRoYXQgd291bGQgYmUgcGFz
c2VkIHRvIFByb2dyYW1CaW5hcnkuCitjbGFzcyBQcm9ncmFtQmluYXJ5IDogcHVibGljIFJlZkNv
dW50T2JqZWN0Cit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBQcm9ncmFtQmluYXJ5KHJ4OjpS
ZW5kZXJlciAqcmVuZGVyZXIpOworICAgIH5Qcm9ncmFtQmluYXJ5KCk7CisKKyAgICByeDo6U2hh
ZGVyRXhlY3V0YWJsZSAqZ2V0UGl4ZWxFeGVjdXRhYmxlKCk7CisgICAgcng6OlNoYWRlckV4ZWN1
dGFibGUgKmdldFZlcnRleEV4ZWN1dGFibGUoKTsKKyAgICByeDo6U2hhZGVyRXhlY3V0YWJsZSAq
Z2V0R2VvbWV0cnlFeGVjdXRhYmxlKCk7CisKKyAgICBHTHVpbnQgZ2V0QXR0cmlidXRlTG9jYXRp
b24oY29uc3QgY2hhciAqbmFtZSk7CisgICAgaW50IGdldFNlbWFudGljSW5kZXgoaW50IGF0dHJp
YnV0ZUluZGV4KTsKKworICAgIEdMaW50IGdldFNhbXBsZXJNYXBwaW5nKFNhbXBsZXJUeXBlIHR5
cGUsIHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXgpOworICAgIFRleHR1cmVUeXBlIGdldFNhbXBs
ZXJUZXh0dXJlVHlwZShTYW1wbGVyVHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4
KTsKKyAgICBHTGludCBnZXRVc2VkU2FtcGxlclJhbmdlKFNhbXBsZXJUeXBlIHR5cGUpOworICAg
IGJvb2wgdXNlc1BvaW50U2l6ZSgpIGNvbnN0OworICAgIGJvb2wgdXNlc1BvaW50U3ByaXRlRW11
bGF0aW9uKCkgY29uc3Q7CisgICAgYm9vbCB1c2VzR2VvbWV0cnlTaGFkZXIoKSBjb25zdDsKKwor
ICAgIEdMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihzdGQ6OnN0cmluZyBuYW1lKTsKKyAgICBib29s
IHNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxv
YXQgKnYpOworICAgIGJvb2wgc2V0VW5pZm9ybTJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xmbG9hdCAqdik7CisgICAgYm9vbCBzZXRVbmlmb3JtM2Z2KEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsKKyAgICBib29sIHNldFVu
aWZvcm00ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYp
OworICAgIGJvb2wgc2V0VW5pZm9ybU1hdHJpeDJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworICAgIGJvb2wgc2V0VW5pZm9ybU1hdHJpeDNm
dihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwor
ICAgIGJvb2wgc2V0VW5pZm9ybU1hdHJpeDRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworICAgIGJvb2wgc2V0VW5pZm9ybTFpdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOworICAgIGJvb2wgc2V0VW5p
Zm9ybTJpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOwor
ICAgIGJvb2wgc2V0VW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xpbnQgKnYpOworICAgIGJvb2wgc2V0VW5pZm9ybTRpdihHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOworCisgICAgYm9vbCBnZXRVbmlmb3JtZnYoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgKmJ1ZlNpemUsIEdMZmxvYXQgKnBhcmFtcyk7CisgICAgYm9v
bCBnZXRVbmlmb3JtaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgKmJ1ZlNpemUsIEdMaW50ICpw
YXJhbXMpOworCisgICAgdm9pZCBkaXJ0eUFsbFVuaWZvcm1zKCk7CisgICAgdm9pZCBhcHBseVVu
aWZvcm1zKCk7CisKKyAgICBib29sIGxvYWQoSW5mb0xvZyAmaW5mb0xvZywgY29uc3Qgdm9pZCAq
YmluYXJ5LCBHTHNpemVpIGxlbmd0aCk7CisgICAgYm9vbCBzYXZlKHZvaWQqIGJpbmFyeSwgR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgpOworICAgIEdMaW50IGdldExlbmd0aCgpOwor
CisgICAgYm9vbCBsaW5rKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IEF0dHJpYnV0ZUJpbmRpbmdz
ICZhdHRyaWJ1dGVCaW5kaW5ncywgRnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBWZXJ0
ZXhTaGFkZXIgKnZlcnRleFNoYWRlcik7CisgICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoR0xz
aXplaSBtYXhDb3VudCwgR0xzaXplaSAqY291bnQsIEdMdWludCAqc2hhZGVycyk7CisKKyAgICB2
b2lkIGdldEFjdGl2ZUF0dHJpYnV0ZShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUpIGNv
bnN0OworICAgIEdMaW50IGdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCkgY29uc3Q7CisgICAgR0xp
bnQgZ2V0QWN0aXZlQXR0cmlidXRlTWF4TGVuZ3RoKCkgY29uc3Q7CisKKyAgICB2b2lkIGdldEFj
dGl2ZVVuaWZvcm0oR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0
aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKSBjb25zdDsKKyAgICBH
TGludCBnZXRBY3RpdmVVbmlmb3JtQ291bnQoKSBjb25zdDsKKyAgICBHTGludCBnZXRBY3RpdmVV
bmlmb3JtTWF4TGVuZ3RoKCkgY29uc3Q7CisKKyAgICB2b2lkIHZhbGlkYXRlKEluZm9Mb2cgJmlu
Zm9Mb2cpOworICAgIGJvb2wgdmFsaWRhdGVTYW1wbGVycyhJbmZvTG9nICppbmZvTG9nKTsKKyAg
ICBib29sIGlzVmFsaWRhdGVkKCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFs
KCkgY29uc3Q7CisKKyAgICB2b2lkIHNvcnRBdHRyaWJ1dGVzQnlMYXlvdXQocng6OlRyYW5zbGF0
ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSwgaW50IHNvcnRl
ZFNlbWFudGljSW5kaWNlc1tNQVhfVkVSVEVYX0FUVFJJQlNdKSBjb25zdDsKKworICAgIHN0YXRp
YyBzdGQ6OnN0cmluZyBkZWNvcmF0ZUF0dHJpYnV0ZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSk7
ICAgIC8vIFByZXBlbmQgYW4gdW5kZXJzY29yZQorCisgIHByaXZhdGU6CisgICAgRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOKFByb2dyYW1CaW5hcnkpOworCisgICAgaW50IHBhY2tWYXJ5aW5ncyhJ
bmZvTG9nICZpbmZvTG9nLCBjb25zdCBWYXJ5aW5nICpwYWNraW5nW11bNF0sIEZyYWdtZW50U2hh
ZGVyICpmcmFnbWVudFNoYWRlcik7CisgICAgYm9vbCBsaW5rVmFyeWluZ3MoSW5mb0xvZyAmaW5m
b0xvZywgaW50IHJlZ2lzdGVycywgY29uc3QgVmFyeWluZyAqcGFja2luZ1tdWzRdLAorICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nJiBwaXhlbEhMU0wsIHN0ZDo6c3RyaW5nJiB2ZXJ0
ZXhITFNMLAorICAgICAgICAgICAgICAgICAgICAgIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNo
YWRlciwgVmVydGV4U2hhZGVyICp2ZXJ0ZXhTaGFkZXIpOworCisgICAgYm9vbCBsaW5rQXR0cmli
dXRlcyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBBdHRyaWJ1dGVCaW5kaW5ncyAmYXR0cmlidXRl
QmluZGluZ3MsIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlciwgVmVydGV4U2hhZGVyICp2
ZXJ0ZXhTaGFkZXIpOworCisgICAgYm9vbCBsaW5rVW5pZm9ybXMoSW5mb0xvZyAmaW5mb0xvZywg
Y29uc3Qgc2g6OkFjdGl2ZVVuaWZvcm1zICZ2ZXJ0ZXhVbmlmb3JtcywgY29uc3Qgc2g6OkFjdGl2
ZVVuaWZvcm1zICZmcmFnbWVudFVuaWZvcm1zKTsKKyAgICBib29sIGRlZmluZVVuaWZvcm0oR0xl
bnVtIHNoYWRlciwgY29uc3Qgc2g6OlVuaWZvcm0gJmNvbnN0YW50LCBJbmZvTG9nICZpbmZvTG9n
KTsKKyAgICAKKyAgICBzdGQ6OnN0cmluZyBnZW5lcmF0ZUdlb21ldHJ5U2hhZGVySExTTChpbnQg
cmVnaXN0ZXJzLCBjb25zdCBWYXJ5aW5nICpwYWNraW5nW11bNF0sIEZyYWdtZW50U2hhZGVyICpm
cmFnbWVudFNoYWRlciwgVmVydGV4U2hhZGVyICp2ZXJ0ZXhTaGFkZXIpIGNvbnN0OworICAgIHN0
ZDo6c3RyaW5nIGdlbmVyYXRlUG9pbnRTcHJpdGVITFNMKGludCByZWdpc3RlcnMsIGNvbnN0IFZh
cnlpbmcgKnBhY2tpbmdbXVs0XSwgRnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBWZXJ0
ZXhTaGFkZXIgKnZlcnRleFNoYWRlcikgY29uc3Q7CisKKyAgICByeDo6UmVuZGVyZXIgKmNvbnN0
IG1SZW5kZXJlcjsKKworICAgIHJ4OjpTaGFkZXJFeGVjdXRhYmxlICptUGl4ZWxFeGVjdXRhYmxl
OworICAgIHJ4OjpTaGFkZXJFeGVjdXRhYmxlICptVmVydGV4RXhlY3V0YWJsZTsKKyAgICByeDo6
U2hhZGVyRXhlY3V0YWJsZSAqbUdlb21ldHJ5RXhlY3V0YWJsZTsKKworICAgIEF0dHJpYnV0ZSBt
TGlua2VkQXR0cmlidXRlW01BWF9WRVJURVhfQVRUUklCU107CisgICAgaW50IG1TZW1hbnRpY0lu
ZGV4W01BWF9WRVJURVhfQVRUUklCU107CisKKyAgICBzdHJ1Y3QgU2FtcGxlcgorICAgIHsKKyAg
ICAgICAgU2FtcGxlcigpOworCisgICAgICAgIGJvb2wgYWN0aXZlOworICAgICAgICBHTGludCBs
b2dpY2FsVGV4dHVyZVVuaXQ7CisgICAgICAgIFRleHR1cmVUeXBlIHRleHR1cmVUeXBlOworICAg
IH07CisKKyAgICBTYW1wbGVyIG1TYW1wbGVyc1BTW01BWF9URVhUVVJFX0lNQUdFX1VOSVRTXTsK
KyAgICBTYW1wbGVyIG1TYW1wbGVyc1ZTW0lNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVS
RV9JTUFHRV9VTklUU107CisgICAgR0x1aW50IG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlOworICAg
IEdMdWludCBtVXNlZFBpeGVsU2FtcGxlclJhbmdlOworICAgIGJvb2wgbVVzZXNQb2ludFNpemU7
CisKKyAgICBVbmlmb3JtQXJyYXkgbVVuaWZvcm1zOworICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8
VW5pZm9ybUxvY2F0aW9uPiBVbmlmb3JtSW5kZXg7CisgICAgVW5pZm9ybUluZGV4IG1Vbmlmb3Jt
SW5kZXg7CisKKyAgICBib29sIG1WYWxpZGF0ZWQ7CisKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQg
bVNlcmlhbDsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXNzdWVTZXJpYWwoKTsKKyAgICBz
dGF0aWMgdW5zaWduZWQgaW50IG1DdXJyZW50U2VyaWFsOworfTsKK30KKworI2VuZGlmICAgLy8g
TElCR0xFU1YyX1BST0dSQU1fQklOQVJZX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL1F1ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL1F1ZXJ5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUXVlcnkuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUyIEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisv
LyBRdWVyeS5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpRdWVyeSBjbGFzcworCisjaW5jbHVkZSAi
bGliR0xFU3YyL1F1ZXJ5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5SW1w
bC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oIgorCituYW1lc3Bh
Y2UgZ2wKK3sKKworUXVlcnk6OlF1ZXJ5KHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIEdMZW51bSB0
eXBlLCBHTHVpbnQgaWQpIDogUmVmQ291bnRPYmplY3QoaWQpCit7IAorICAgIG1RdWVyeSA9IHJl
bmRlcmVyLT5jcmVhdGVRdWVyeSh0eXBlKTsKK30KKworUXVlcnk6On5RdWVyeSgpCit7CisgICAg
ZGVsZXRlIG1RdWVyeTsKK30KKwordm9pZCBRdWVyeTo6YmVnaW4oKQoreworICAgIG1RdWVyeS0+
YmVnaW4oKTsKK30KKwordm9pZCBRdWVyeTo6ZW5kKCkKK3sKKyAgICBtUXVlcnktPmVuZCgpOwor
fQorCitHTHVpbnQgUXVlcnk6OmdldFJlc3VsdCgpCit7CisgICAgcmV0dXJuIG1RdWVyeS0+Z2V0
UmVzdWx0KCk7Cit9CisKK0dMYm9vbGVhbiBRdWVyeTo6aXNSZXN1bHRBdmFpbGFibGUoKQorewor
ICAgIHJldHVybiBtUXVlcnktPmlzUmVzdWx0QXZhaWxhYmxlKCk7Cit9CisKK0dMZW51bSBRdWVy
eTo6Z2V0VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1RdWVyeS0+Z2V0VHlwZSgpOworfQor
Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1F1ZXJ5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9RdWVy
eS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9RdWVyeS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gUXVlcnkuaDogRGVmaW5lcyB0aGUgZ2w6OlF1ZXJ5IGNsYXNzCisKKyNpZm5kZWYgTElCR0xF
U1YyX1FVRVJZX0hfCisjZGVmaW5lIExJQkdMRVNWMl9RVUVSWV9IXworCisjZGVmaW5lIEdMX0FQ
SUNBTEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0
aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL1JlZkNvdW50T2JqZWN0LmgiCisKK25hbWVzcGFjZSBy
eAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBRdWVyeUltcGw7Cit9CisKK25hbWVzcGFjZSBn
bAoreworCitjbGFzcyBRdWVyeSA6IHB1YmxpYyBSZWZDb3VudE9iamVjdAoreworICBwdWJsaWM6
CisgICAgUXVlcnkocng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0xlbnVtIHR5cGUsIEdMdWludCBp
ZCk7CisgICAgdmlydHVhbCB+UXVlcnkoKTsKKworICAgIHZvaWQgYmVnaW4oKTsKKyAgICB2b2lk
IGVuZCgpOworCisgICAgR0x1aW50IGdldFJlc3VsdCgpOworICAgIEdMYm9vbGVhbiBpc1Jlc3Vs
dEF2YWlsYWJsZSgpOworCisgICAgR0xlbnVtIGdldFR5cGUoKSBjb25zdDsKKworICBwcml2YXRl
OgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihRdWVyeSk7CisKKyAgICByeDo6UXVlcnlJ
bXBsICptUXVlcnk7Cit9OworCit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9RVUVSWV9IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
UmVuZGVyYnVmZmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
ODUgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
UmVuZGVyYnVmZmVyLmNwcDogdGhlIGdsOjpSZW5kZXJidWZmZXIgY2xhc3MgYW5kIGl0cyBkZXJp
dmVkIGNsYXNzZXMKKy8vIENvbG9yYnVmZmVyLCBEZXB0aGJ1ZmZlciBhbmQgU3RlbmNpbGJ1ZmZl
ci4gSW1wbGVtZW50cyBHTCByZW5kZXJidWZmZXIKKy8vIG9iamVjdHMgYW5kIHJlbGF0ZWQgZnVu
Y3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gNC40LjMgcGFnZSAxMDguCisK
KyNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlclRhcmdldC5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL1RleHR1cmUu
aCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJs
aWJHTEVTdjIvdXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBnbAorewordW5zaWduZWQgaW50IFJl
bmRlcmJ1ZmZlclN0b3JhZ2U6Om1DdXJyZW50U2VyaWFsID0gMTsKKworUmVuZGVyYnVmZmVySW50
ZXJmYWNlOjpSZW5kZXJidWZmZXJJbnRlcmZhY2UoKQoreworfQorCisvLyBUaGUgZGVmYXVsdCBj
YXNlIGZvciBjbGFzc2VzIGluaGVyaXRlZCBmcm9tIFJlbmRlcmJ1ZmZlckludGVyZmFjZSBpcyBu
b3QgdG8KKy8vIG5lZWQgdG8gZG8gYW55dGhpbmcgdXBvbiB0aGUgcmVmZXJlbmNlIGNvdW50IHRv
IHRoZSBwYXJlbnQgUmVuZGVyYnVmZmVyIGluY3JlbWVudGluZworLy8gb3IgZGVjcmVtZW50aW5n
LiAKK3ZvaWQgUmVuZGVyYnVmZmVySW50ZXJmYWNlOjphZGRQcm94eVJlZihjb25zdCBSZW5kZXJi
dWZmZXIgKnByb3h5KQoreworfQorCit2b2lkIFJlbmRlcmJ1ZmZlckludGVyZmFjZTo6cmVsZWFz
ZVByb3h5KGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCit7Cit9CisKK0dMdWludCBSZW5kZXJi
dWZmZXJJbnRlcmZhY2U6OmdldFJlZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBnbDo6R2V0
UmVkU2l6ZShnZXRBY3R1YWxGb3JtYXQoKSk7Cit9CisKK0dMdWludCBSZW5kZXJidWZmZXJJbnRl
cmZhY2U6OmdldEdyZWVuU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdsOjpHZXRHcmVlblNp
emUoZ2V0QWN0dWFsRm9ybWF0KCkpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVySW50ZXJmYWNl
OjpnZXRCbHVlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdsOjpHZXRCbHVlU2l6ZShnZXRB
Y3R1YWxGb3JtYXQoKSk7Cit9CisKK0dMdWludCBSZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldEFs
cGhhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdsOjpHZXRBbHBoYVNpemUoZ2V0QWN0dWFs
Rm9ybWF0KCkpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVySW50ZXJmYWNlOjpnZXREZXB0aFNp
emUoKSBjb25zdAoreworICAgIHJldHVybiBnbDo6R2V0RGVwdGhTaXplKGdldEFjdHVhbEZvcm1h
dCgpKTsKK30KKworR0x1aW50IFJlbmRlcmJ1ZmZlckludGVyZmFjZTo6Z2V0U3RlbmNpbFNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBnbDo6R2V0U3RlbmNpbFNpemUoZ2V0QWN0dWFsRm9ybWF0
KCkpOworfQorCisvLy8vLyBSZW5kZXJidWZmZXJUZXh0dXJlMkQgSW1wbGVtZW50YXRpb24gLy8v
Ly8vLy8KKworUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQoVGV4
dHVyZTJEICp0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0KSA6IG1UYXJnZXQodGFyZ2V0KQoreworICAg
IG1UZXh0dXJlMkQuc2V0KHRleHR1cmUpOworfQorCitSZW5kZXJidWZmZXJUZXh0dXJlMkQ6On5S
ZW5kZXJidWZmZXJUZXh0dXJlMkQoKQoreworICAgIG1UZXh0dXJlMkQuc2V0KE5VTEwpOworfQor
CisvLyBUZXh0dXJlcyBuZWVkIHRvIG1haW50YWluIHRoZWlyIG93biByZWZlcmVuY2UgY291bnQg
Zm9yIHJlZmVyZW5jZXMgdmlhCisvLyBSZW5kZXJidWZmZXJzIGFjdGluZyBhcyBwcm94aWVzLiBI
ZXJlLCB3ZSBub3RpZnkgdGhlIHRleHR1cmUgb2YgYSByZWZlcmVuY2UuCit2b2lkIFJlbmRlcmJ1
ZmZlclRleHR1cmUyRDo6YWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSkKK3sK
KyAgICBtVGV4dHVyZTJELT5hZGRQcm94eVJlZihwcm94eSk7Cit9CisKK3ZvaWQgUmVuZGVyYnVm
ZmVyVGV4dHVyZTJEOjpyZWxlYXNlUHJveHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSkKK3sK
KyAgICBtVGV4dHVyZTJELT5yZWxlYXNlUHJveHkocHJveHkpOworfQorCityeDo6UmVuZGVyVGFy
Z2V0ICpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldFJlbmRlclRhcmdldCgpCit7CisgICAgcmV0
dXJuIG1UZXh0dXJlMkQtPmdldFJlbmRlclRhcmdldChtVGFyZ2V0KTsKK30KKworcng6OlJlbmRl
clRhcmdldCAqUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXREZXB0aFN0ZW5jaWwoKQoreworICAg
IHJldHVybiBtVGV4dHVyZTJELT5nZXREZXB0aFN0ZW5jaWwobVRhcmdldCk7Cit9CisKK0dMc2l6
ZWkgUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1UZXh0dXJlMkQtPmdldFdpZHRoKDApOworfQorCitHTHNpemVpIFJlbmRlcmJ1ZmZlclRleHR1
cmUyRDo6Z2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmUyRC0+Z2V0SGVp
Z2h0KDApOworfQorCitHTGVudW0gUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRJbnRlcm5hbEZv
cm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlMkQtPmdldEludGVybmFsRm9ybWF0
KDApOworfQorCitHTGVudW0gUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRBY3R1YWxGb3JtYXQo
KSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZTJELT5nZXRBY3R1YWxGb3JtYXQoMCk7Cit9
CisKK0dMc2l6ZWkgUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRTYW1wbGVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6
Z2V0U2VyaWFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmUyRC0+Z2V0UmVuZGVyVGFy
Z2V0U2VyaWFsKG1UYXJnZXQpOworfQorCisvLy8vLyBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1h
cCBJbXBsZW1lbnRhdGlvbiAvLy8vLy8vLworCitSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6
UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXAoVGV4dHVyZUN1YmVNYXAgKnRleHR1cmUsIEdMZW51
bSB0YXJnZXQpIDogbVRhcmdldCh0YXJnZXQpCit7CisgICAgbVRleHR1cmVDdWJlTWFwLnNldCh0
ZXh0dXJlKTsKK30KKworUmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6On5SZW5kZXJidWZmZXJU
ZXh0dXJlQ3ViZU1hcCgpCit7CisgICAgbVRleHR1cmVDdWJlTWFwLnNldChOVUxMKTsKK30KKwor
Ly8gVGV4dHVyZXMgbmVlZCB0byBtYWludGFpbiB0aGVpciBvd24gcmVmZXJlbmNlIGNvdW50IGZv
ciByZWZlcmVuY2VzIHZpYQorLy8gUmVuZGVyYnVmZmVycyBhY3RpbmcgYXMgcHJveGllcy4gSGVy
ZSwgd2Ugbm90aWZ5IHRoZSB0ZXh0dXJlIG9mIGEgcmVmZXJlbmNlLgordm9pZCBSZW5kZXJidWZm
ZXJUZXh0dXJlQ3ViZU1hcDo6YWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSkK
K3sKKyAgICBtVGV4dHVyZUN1YmVNYXAtPmFkZFByb3h5UmVmKHByb3h5KTsKK30KKwordm9pZCBS
ZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6cmVsZWFzZVByb3h5KGNvbnN0IFJlbmRlcmJ1ZmZl
ciAqcHJveHkpCit7CisgICAgbVRleHR1cmVDdWJlTWFwLT5yZWxlYXNlUHJveHkocHJveHkpOwor
fQorCityeDo6UmVuZGVyVGFyZ2V0ICpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6Z2V0UmVu
ZGVyVGFyZ2V0KCkKK3sKKyAgICByZXR1cm4gbVRleHR1cmVDdWJlTWFwLT5nZXRSZW5kZXJUYXJn
ZXQobVRhcmdldCk7Cit9CisKK3J4OjpSZW5kZXJUYXJnZXQgKlJlbmRlcmJ1ZmZlclRleHR1cmVD
dWJlTWFwOjpnZXREZXB0aFN0ZW5jaWwoKQoreworICAgIHJldHVybiBOVUxMOworfQorCitHTHNp
emVpIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRXaWR0aCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1UZXh0dXJlQ3ViZU1hcC0+Z2V0V2lkdGgoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9YLCAwKTsKK30KKworR0xzaXplaSBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6Z2V0
SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmVDdWJlTWFwLT5nZXRIZWlnaHQo
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwKTsKK30KKworR0xlbnVtIFJlbmRlcmJ1
ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1UZXh0dXJlQ3ViZU1hcC0+Z2V0SW50ZXJuYWxGb3JtYXQoR0xfVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9YLCAwKTsKK30KKworR0xlbnVtIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFw
OjpnZXRBY3R1YWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZUN1YmVNYXAt
PmdldEFjdHVhbEZvcm1hdChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDApOworfQor
CitHTHNpemVpIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRTYW1wbGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmJ1ZmZlclRleHR1cmVD
dWJlTWFwOjpnZXRTZXJpYWwoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZUN1YmVNYXAt
PmdldFJlbmRlclRhcmdldFNlcmlhbChtVGFyZ2V0KTsKK30KKworLy8vLy8vIFJlbmRlcmJ1ZmZl
ciBJbXBsZW1lbnRhdGlvbiAvLy8vLy8KKworUmVuZGVyYnVmZmVyOjpSZW5kZXJidWZmZXIocng6
OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGlkLCBSZW5kZXJidWZmZXJJbnRlcmZhY2UgKmlu
c3RhbmNlKSA6IFJlZkNvdW50T2JqZWN0KGlkKQoreworICAgIEFTU0VSVChpbnN0YW5jZSAhPSBO
VUxMKTsKKyAgICBtSW5zdGFuY2UgPSBpbnN0YW5jZTsKK30KKworUmVuZGVyYnVmZmVyOjp+UmVu
ZGVyYnVmZmVyKCkKK3sKKyAgICBkZWxldGUgbUluc3RhbmNlOworfQorCisvLyBUaGUgUmVuZGVy
YnVmZmVySW50ZXJmYWNlIGNvbnRhaW5lZCBpbiB0aGlzIFJlbmRlcmJ1ZmZlciBtYXkgbmVlZCB0
byBtYWludGFpbgorLy8gaXRzIG93biByZWZlcmVuY2UgY291bnQsIHNvIHdlIHBhc3MgaXQgb24g
aGVyZS4KK3ZvaWQgUmVuZGVyYnVmZmVyOjphZGRSZWYoKSBjb25zdAoreworICAgIG1JbnN0YW5j
ZS0+YWRkUHJveHlSZWYodGhpcyk7CisKKyAgICBSZWZDb3VudE9iamVjdDo6YWRkUmVmKCk7Cit9
CisKK3ZvaWQgUmVuZGVyYnVmZmVyOjpyZWxlYXNlKCkgY29uc3QKK3sKKyAgICBtSW5zdGFuY2Ut
PnJlbGVhc2VQcm94eSh0aGlzKTsKKworICAgIFJlZkNvdW50T2JqZWN0OjpyZWxlYXNlKCk7Cit9
CisKK3J4OjpSZW5kZXJUYXJnZXQgKlJlbmRlcmJ1ZmZlcjo6Z2V0UmVuZGVyVGFyZ2V0KCkKK3sK
KyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRSZW5kZXJUYXJnZXQoKTsKK30KKworcng6OlJlbmRl
clRhcmdldCAqUmVuZGVyYnVmZmVyOjpnZXREZXB0aFN0ZW5jaWwoKQoreworICAgIHJldHVybiBt
SW5zdGFuY2UtPmdldERlcHRoU3RlbmNpbCgpOworfQorCitHTHNpemVpIFJlbmRlcmJ1ZmZlcjo6
Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtSW5zdGFuY2UtPmdldFdpZHRoKCk7Cit9
CisKK0dMc2l6ZWkgUmVuZGVyYnVmZmVyOjpnZXRIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVy
biBtSW5zdGFuY2UtPmdldEhlaWdodCgpOworfQorCitHTGVudW0gUmVuZGVyYnVmZmVyOjpnZXRJ
bnRlcm5hbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0SW50ZXJu
YWxGb3JtYXQoKTsKK30KKworR0xlbnVtIFJlbmRlcmJ1ZmZlcjo6Z2V0QWN0dWFsRm9ybWF0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRBY3R1YWxGb3JtYXQoKTsKK30KKwor
R0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0UmVkU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1J
bnN0YW5jZS0+Z2V0UmVkU2l6ZSgpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVyOjpnZXRHcmVl
blNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtSW5zdGFuY2UtPmdldEdyZWVuU2l6ZSgpOwor
fQorCitHTHVpbnQgUmVuZGVyYnVmZmVyOjpnZXRCbHVlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1JbnN0YW5jZS0+Z2V0Qmx1ZVNpemUoKTsKK30KKworR0x1aW50IFJlbmRlcmJ1ZmZlcjo6
Z2V0QWxwaGFTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRBbHBoYVNp
emUoKTsKK30KKworR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0RGVwdGhTaXplKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXREZXB0aFNpemUoKTsKK30KKworR0x1aW50IFJlbmRl
cmJ1ZmZlcjo6Z2V0U3RlbmNpbFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtSW5zdGFuY2Ut
PmdldFN0ZW5jaWxTaXplKCk7Cit9CisKK0dMc2l6ZWkgUmVuZGVyYnVmZmVyOjpnZXRTYW1wbGVz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRTYW1wbGVzKCk7Cit9CisKK3Vu
c2lnbmVkIGludCBSZW5kZXJidWZmZXI6OmdldFNlcmlhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1JbnN0YW5jZS0+Z2V0U2VyaWFsKCk7Cit9CisKK3ZvaWQgUmVuZGVyYnVmZmVyOjpzZXRTdG9y
YWdlKFJlbmRlcmJ1ZmZlclN0b3JhZ2UgKm5ld1N0b3JhZ2UpCit7CisgICAgQVNTRVJUKG5ld1N0
b3JhZ2UgIT0gTlVMTCk7CisKKyAgICBkZWxldGUgbUluc3RhbmNlOworICAgIG1JbnN0YW5jZSA9
IG5ld1N0b3JhZ2U7Cit9CisKK1JlbmRlcmJ1ZmZlclN0b3JhZ2U6OlJlbmRlcmJ1ZmZlclN0b3Jh
Z2UoKSA6IG1TZXJpYWwoaXNzdWVTZXJpYWwoKSkKK3sKKyAgICBtV2lkdGggPSAwOworICAgIG1I
ZWlnaHQgPSAwOworICAgIG1JbnRlcm5hbEZvcm1hdCA9IEdMX1JHQkE0OworICAgIG1BY3R1YWxG
b3JtYXQgPSBHTF9SR0JBOF9PRVM7CisgICAgbVNhbXBsZXMgPSAwOworfQorCitSZW5kZXJidWZm
ZXJTdG9yYWdlOjp+UmVuZGVyYnVmZmVyU3RvcmFnZSgpCit7Cit9CisKK3J4OjpSZW5kZXJUYXJn
ZXQgKlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldFJlbmRlclRhcmdldCgpCit7CisgICAgcmV0dXJu
IE5VTEw7Cit9CisKK3J4OjpSZW5kZXJUYXJnZXQgKlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldERl
cHRoU3RlbmNpbCgpCit7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK0dMc2l6ZWkgUmVuZGVyYnVm
ZmVyU3RvcmFnZTo6Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtV2lkdGg7Cit9CisK
K0dMc2l6ZWkgUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbUhlaWdodDsKK30KKworR0xlbnVtIFJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldEludGVy
bmFsRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUludGVybmFsRm9ybWF0OworfQorCitH
TGVudW0gUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0QWN0dWFsRm9ybWF0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbUFjdHVhbEZvcm1hdDsKK30KKworR0xzaXplaSBSZW5kZXJidWZmZXJTdG9yYWdl
OjpnZXRTYW1wbGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBsZXM7Cit9CisKK3Vuc2ln
bmVkIGludCBSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRTZXJpYWwoKSBjb25zdAoreworICAgIHJl
dHVybiBtU2VyaWFsOworfQorCit1bnNpZ25lZCBpbnQgUmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNz
dWVTZXJpYWwoKQoreworICAgIHJldHVybiBtQ3VycmVudFNlcmlhbCsrOworfQorCit1bnNpZ25l
ZCBpbnQgUmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNzdWVDdWJlU2VyaWFscygpCit7CisgICAgdW5z
aWduZWQgaW50IGZpcnN0U2VyaWFsID0gbUN1cnJlbnRTZXJpYWw7CisgICAgbUN1cnJlbnRTZXJp
YWwgKz0gNjsKKyAgICByZXR1cm4gZmlyc3RTZXJpYWw7Cit9CisKK0NvbG9yYnVmZmVyOjpDb2xv
cmJ1ZmZlcihyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCByeDo6U3dhcENoYWluICpzd2FwQ2hhaW4p
Cit7CisgICAgbVJlbmRlclRhcmdldCA9IHJlbmRlcmVyLT5jcmVhdGVSZW5kZXJUYXJnZXQoc3dh
cENoYWluLCBmYWxzZSk7IAorCisgICAgaWYgKG1SZW5kZXJUYXJnZXQpCisgICAgeworICAgICAg
ICBtV2lkdGggPSBtUmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpOworICAgICAgICBtSGVpZ2h0ID0g
bVJlbmRlclRhcmdldC0+Z2V0SGVpZ2h0KCk7CisgICAgICAgIG1JbnRlcm5hbEZvcm1hdCA9IG1S
ZW5kZXJUYXJnZXQtPmdldEludGVybmFsRm9ybWF0KCk7CisgICAgICAgIG1BY3R1YWxGb3JtYXQg
PSBtUmVuZGVyVGFyZ2V0LT5nZXRBY3R1YWxGb3JtYXQoKTsKKyAgICAgICAgbVNhbXBsZXMgPSBt
UmVuZGVyVGFyZ2V0LT5nZXRTYW1wbGVzKCk7CisgICAgfQorfQorCitDb2xvcmJ1ZmZlcjo6Q29s
b3JidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBH
TGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMpIDogbVJlbmRlclRhcmdldChOVUxMKQorewor
ICAgIG1SZW5kZXJUYXJnZXQgPSByZW5kZXJlci0+Y3JlYXRlUmVuZGVyVGFyZ2V0KHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgc2FtcGxlcywgZmFsc2UpOworCisgICAgaWYgKG1SZW5kZXJUYXJnZXQp
CisgICAgeworICAgICAgICBtV2lkdGggPSB3aWR0aDsKKyAgICAgICAgbUhlaWdodCA9IGhlaWdo
dDsKKyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gZm9ybWF0OworICAgICAgICBtQWN0dWFsRm9y
bWF0ID0gbVJlbmRlclRhcmdldC0+Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAgICAgIG1TYW1wbGVz
ID0gbVJlbmRlclRhcmdldC0+Z2V0U2FtcGxlcygpOworICAgIH0KK30KKworQ29sb3JidWZmZXI6
On5Db2xvcmJ1ZmZlcigpCit7CisgICAgaWYgKG1SZW5kZXJUYXJnZXQpCisgICAgeworICAgICAg
ICBkZWxldGUgbVJlbmRlclRhcmdldDsKKyAgICB9Cit9CisKK3J4OjpSZW5kZXJUYXJnZXQgKkNv
bG9yYnVmZmVyOjpnZXRSZW5kZXJUYXJnZXQoKQoreworICAgIGlmIChtUmVuZGVyVGFyZ2V0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1SZW5kZXJUYXJnZXQ7CisgICAgfQorCisgICAgcmV0dXJu
IE5VTEw7Cit9CisKK0RlcHRoU3RlbmNpbGJ1ZmZlcjo6RGVwdGhTdGVuY2lsYnVmZmVyKHJ4OjpS
ZW5kZXJlciAqcmVuZGVyZXIsIHJ4OjpTd2FwQ2hhaW4gKnN3YXBDaGFpbikKK3sKKyAgICBtRGVw
dGhTdGVuY2lsID0gcmVuZGVyZXItPmNyZWF0ZVJlbmRlclRhcmdldChzd2FwQ2hhaW4sIHRydWUp
OworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgbVdpZHRoID0gbURlcHRo
U3RlbmNpbC0+Z2V0V2lkdGgoKTsKKyAgICAgICAgbUhlaWdodCA9IG1EZXB0aFN0ZW5jaWwtPmdl
dEhlaWdodCgpOworICAgICAgICBtSW50ZXJuYWxGb3JtYXQgPSBtRGVwdGhTdGVuY2lsLT5nZXRJ
bnRlcm5hbEZvcm1hdCgpOworICAgICAgICBtU2FtcGxlcyA9IG1EZXB0aFN0ZW5jaWwtPmdldFNh
bXBsZXMoKTsKKyAgICAgICAgbUFjdHVhbEZvcm1hdCA9IG1EZXB0aFN0ZW5jaWwtPmdldEFjdHVh
bEZvcm1hdCgpOworICAgIH0KK30KKworRGVwdGhTdGVuY2lsYnVmZmVyOjpEZXB0aFN0ZW5jaWxi
dWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTHNp
emVpIHNhbXBsZXMpCit7CisKKyAgICBtRGVwdGhTdGVuY2lsID0gcmVuZGVyZXItPmNyZWF0ZVJl
bmRlclRhcmdldCh3aWR0aCwgaGVpZ2h0LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywgc2FtcGxl
cywgdHJ1ZSk7CisKKyAgICBtV2lkdGggPSBtRGVwdGhTdGVuY2lsLT5nZXRXaWR0aCgpOworICAg
IG1IZWlnaHQgPSBtRGVwdGhTdGVuY2lsLT5nZXRIZWlnaHQoKTsKKyAgICBtSW50ZXJuYWxGb3Jt
YXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAgICBtQWN0dWFsRm9ybWF0ID0gbURlcHRo
U3RlbmNpbC0+Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAgbVNhbXBsZXMgPSBtRGVwdGhTdGVuY2ls
LT5nZXRTYW1wbGVzKCk7Cit9CisKK0RlcHRoU3RlbmNpbGJ1ZmZlcjo6fkRlcHRoU3RlbmNpbGJ1
ZmZlcigpCit7CisgICAgaWYgKG1EZXB0aFN0ZW5jaWwpCisgICAgeworICAgICAgICBkZWxldGUg
bURlcHRoU3RlbmNpbDsKKyAgICB9Cit9CisKK3J4OjpSZW5kZXJUYXJnZXQgKkRlcHRoU3RlbmNp
bGJ1ZmZlcjo6Z2V0RGVwdGhTdGVuY2lsKCkKK3sKKyAgICBpZiAobURlcHRoU3RlbmNpbCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBtRGVwdGhTdGVuY2lsOworICAgIH0KKworICAgIHJldHVybiBO
VUxMOworfQorCitEZXB0aGJ1ZmZlcjo6RGVwdGhidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJl
ciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTHNpemVpIHNhbXBsZXMpIDogRGVwdGhTdGVuY2ls
YnVmZmVyKHJlbmRlcmVyLCB3aWR0aCwgaGVpZ2h0LCBzYW1wbGVzKQoreworICAgIGlmIChtRGVw
dGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gR0xfREVQVEhfQ09N
UE9ORU5UMTY7ICAgLy8gSWYgdGhlIHJlbmRlcmJ1ZmZlciBwYXJhbWV0ZXJzIGFyZSBxdWVyaWVk
LCB0aGUgY2FsbGluZyBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB3aWxsIGV4cGVjdCBvbmUgb2YgdGhlIHZhbGlkIHJlbmRlcmJ1
ZmZlciBmb3JtYXRzIGZvciB1c2UgaW4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGdsUmVuZGVyYnVmZmVyU3RvcmFnZQorICAgIH0KK30KKwor
RGVwdGhidWZmZXI6On5EZXB0aGJ1ZmZlcigpCit7Cit9CisKK1N0ZW5jaWxidWZmZXI6OlN0ZW5j
aWxidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBH
THNpemVpIHNhbXBsZXMpIDogRGVwdGhTdGVuY2lsYnVmZmVyKHJlbmRlcmVyLCB3aWR0aCwgaGVp
Z2h0LCBzYW1wbGVzKQoreworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAg
bUludGVybmFsRm9ybWF0ID0gR0xfU1RFTkNJTF9JTkRFWDg7ICAgLy8gSWYgdGhlIHJlbmRlcmJ1
ZmZlciBwYXJhbWV0ZXJzIGFyZSBxdWVyaWVkLCB0aGUgY2FsbGluZyBmdW5jdGlvbgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGV4cGVjdCBv
bmUgb2YgdGhlIHZhbGlkIHJlbmRlcmJ1ZmZlciBmb3JtYXRzIGZvciB1c2UgaW4gCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdsUmVuZGVyYnVmZmVy
U3RvcmFnZQorICAgIH0KK30KKworU3RlbmNpbGJ1ZmZlcjo6flN0ZW5jaWxidWZmZXIoKQorewor
fQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRl
cmJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvUmVuZGVyYnVmZmVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI2MSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVyYnVmZmVyLmg6IERlZmluZXMg
dGhlIHdyYXBwZXIgY2xhc3MgZ2w6OlJlbmRlcmJ1ZmZlciwgYXMgd2VsbCBhcyB0aGUKKy8vIGNs
YXNzIGhpZXJhcmNoeSB1c2VkIHRvIHN0b3JlIGl0cyBjb250ZW50czogUmVuZGVyYnVmZmVyU3Rv
cmFnZSwgQ29sb3JidWZmZXIsCisvLyBEZXB0aFN0ZW5jaWxidWZmZXIsIERlcHRoYnVmZmVyIGFu
ZCBTdGVuY2lsYnVmZmVyLiBJbXBsZW1lbnRzIEdMIHJlbmRlcmJ1ZmZlcgorLy8gb2JqZWN0cyBh
bmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiA0LjQu
MyBwYWdlIDEwOC4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSQlVGRkVSX0hfCisjZGVmaW5l
IExJQkdMRVNWMl9SRU5ERVJCVUZGRVJfSF8KKworI2RlZmluZSBHTF9BUElDQUxMCisjaW5jbHVk
ZSA8R0xFUzIvZ2wyLmg+CisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1
ZGUgImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJl
bmRlcmVyOworY2xhc3MgU3dhcENoYWluOworY2xhc3MgUmVuZGVyVGFyZ2V0OworfQorCituYW1l
c3BhY2UgZ2wKK3sKK2NsYXNzIFRleHR1cmUyRDsKK2NsYXNzIFRleHR1cmVDdWJlTWFwOworY2xh
c3MgUmVuZGVyYnVmZmVyOworY2xhc3MgQ29sb3JidWZmZXI7CitjbGFzcyBEZXB0aFN0ZW5jaWxi
dWZmZXI7CisKK2NsYXNzIFJlbmRlcmJ1ZmZlckludGVyZmFjZQoreworICBwdWJsaWM6CisgICAg
UmVuZGVyYnVmZmVySW50ZXJmYWNlKCk7CisKKyAgICB2aXJ0dWFsIH5SZW5kZXJidWZmZXJJbnRl
cmZhY2UoKSB7fTsKKworICAgIHZpcnR1YWwgdm9pZCBhZGRQcm94eVJlZihjb25zdCBSZW5kZXJi
dWZmZXIgKnByb3h5KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVByb3h5KGNvbnN0IFJlbmRl
cmJ1ZmZlciAqcHJveHkpOworCisgICAgdmlydHVhbCByeDo6UmVuZGVyVGFyZ2V0ICpnZXRSZW5k
ZXJUYXJnZXQoKSA9IDA7CisgICAgdmlydHVhbCByeDo6UmVuZGVyVGFyZ2V0ICpnZXREZXB0aFN0
ZW5jaWwoKSA9IDA7CisKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0V2lkdGgoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBHTHNpemVpIGdldEhlaWdodCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IEdMZW51bSBnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEdMZW51
bSBnZXRBY3R1YWxGb3JtYXQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBHTHNpemVpIGdldFNh
bXBsZXMoKSBjb25zdCA9IDA7CisKKyAgICBHTHVpbnQgZ2V0UmVkU2l6ZSgpIGNvbnN0OworICAg
IEdMdWludCBnZXRHcmVlblNpemUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0Qmx1ZVNpemUoKSBj
b25zdDsKKyAgICBHTHVpbnQgZ2V0QWxwaGFTaXplKCkgY29uc3Q7CisgICAgR0x1aW50IGdldERl
cHRoU2l6ZSgpIGNvbnN0OworICAgIEdMdWludCBnZXRTdGVuY2lsU2l6ZSgpIGNvbnN0OworCisg
ICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3QgPSAwOworCisgIHByaXZh
dGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlcmJ1ZmZlckludGVyZmFjZSk7
Cit9OworCitjbGFzcyBSZW5kZXJidWZmZXJUZXh0dXJlMkQgOiBwdWJsaWMgUmVuZGVyYnVmZmVy
SW50ZXJmYWNlCit7CisgIHB1YmxpYzoKKyAgICBSZW5kZXJidWZmZXJUZXh0dXJlMkQoVGV4dHVy
ZTJEICp0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0KTsKKworICAgIHZpcnR1YWwgflJlbmRlcmJ1ZmZl
clRleHR1cmUyRCgpOworCisgICAgdm9pZCBhZGRQcm94eVJlZihjb25zdCBSZW5kZXJidWZmZXIg
KnByb3h5KTsKKyAgICB2b2lkIHJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5
KTsKKworICAgIHJ4OjpSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldCgpOworICAgIHJ4OjpS
ZW5kZXJUYXJnZXQgKmdldERlcHRoU3RlbmNpbCgpOworCisgICAgdmlydHVhbCBHTHNpemVpIGdl
dFdpZHRoKCkgY29uc3Q7CisgICAgdmlydHVhbCBHTHNpemVpIGdldEhlaWdodCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3Q7CisgICAgdmlydHVh
bCBHTGVudW0gZ2V0QWN0dWFsRm9ybWF0KCkgY29uc3Q7CisgICAgdmlydHVhbCBHTHNpemVpIGdl
dFNhbXBsZXMoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNlcmlhbCgp
IGNvbnN0OworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRl
cmJ1ZmZlclRleHR1cmUyRCk7CisKKyAgICBCaW5kaW5nUG9pbnRlciA8VGV4dHVyZTJEPiBtVGV4
dHVyZTJEOworICAgIEdMZW51bSBtVGFyZ2V0OworfTsKKworY2xhc3MgUmVuZGVyYnVmZmVyVGV4
dHVyZUN1YmVNYXAgOiBwdWJsaWMgUmVuZGVyYnVmZmVySW50ZXJmYWNlCit7CisgIHB1YmxpYzoK
KyAgICBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcChUZXh0dXJlQ3ViZU1hcCAqdGV4dHVyZSwg
R0xlbnVtIHRhcmdldCk7CisKKyAgICB2aXJ0dWFsIH5SZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1h
cCgpOworCisgICAgdm9pZCBhZGRQcm94eVJlZihjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KTsK
KyAgICB2b2lkIHJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KTsKKworICAg
IHJ4OjpSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldCgpOworICAgIHJ4OjpSZW5kZXJUYXJn
ZXQgKmdldERlcHRoU3RlbmNpbCgpOworCisgICAgdmlydHVhbCBHTHNpemVpIGdldFdpZHRoKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBHTHNpemVpIGdldEhlaWdodCgpIGNvbnN0OworICAgIHZpcnR1
YWwgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3Q7CisgICAgdmlydHVhbCBHTGVudW0g
Z2V0QWN0dWFsRm9ybWF0KCkgY29uc3Q7CisgICAgdmlydHVhbCBHTHNpemVpIGdldFNhbXBsZXMo
KSBjb25zdDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0Owor
CisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlcmJ1ZmZlclRl
eHR1cmVDdWJlTWFwKTsKKworICAgIEJpbmRpbmdQb2ludGVyIDxUZXh0dXJlQ3ViZU1hcD4gbVRl
eHR1cmVDdWJlTWFwOworICAgIEdMZW51bSBtVGFyZ2V0OworfTsKKworLy8gQSBjbGFzcyBkZXJp
dmVkIGZyb20gUmVuZGVyYnVmZmVyU3RvcmFnZSBpcyBjcmVhdGVkIHdoZW5ldmVyIGdsUmVuZGVy
YnVmZmVyU3RvcmFnZQorLy8gaXMgY2FsbGVkLiBUaGUgc3BlY2lmaWMgY29uY3JldGUgdHlwZSBk
ZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGludGVybmFsIGZvcm1hdCBpcworLy8gY29sb3VyIGRlcHRo
LCBzdGVuY2lsIG9yIHBhY2tlZCBkZXB0aC9zdGVuY2lsLgorY2xhc3MgUmVuZGVyYnVmZmVyU3Rv
cmFnZSA6IHB1YmxpYyBSZW5kZXJidWZmZXJJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIFJl
bmRlcmJ1ZmZlclN0b3JhZ2UoKTsKKworICAgIHZpcnR1YWwgflJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
KSA9IDA7CisKKyAgICB2aXJ0dWFsIHJ4OjpSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldCgp
OworICAgIHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0RGVwdGhTdGVuY2lsKCk7CisKKyAg
ICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0V2lkdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEdMc2l6ZWkg
Z2V0SGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIEdMZW51bSBnZXRBY3R1YWxGb3JtYXQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0U2FtcGxlcygpIGNvbnN0OworCisgICAgdmlydHVhbCB1bnNp
Z25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IGlz
c3VlU2VyaWFsKCk7CisgICAgc3RhdGljIHVuc2lnbmVkIGludCBpc3N1ZUN1YmVTZXJpYWxzKCk7
CisKKyAgcHJvdGVjdGVkOgorICAgIEdMc2l6ZWkgbVdpZHRoOworICAgIEdMc2l6ZWkgbUhlaWdo
dDsKKyAgICBHTGVudW0gbUludGVybmFsRm9ybWF0OworICAgIEdMZW51bSBtQWN0dWFsRm9ybWF0
OworICAgIEdMc2l6ZWkgbVNhbXBsZXM7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZ
X0FORF9BU1NJR04oUmVuZGVyYnVmZmVyU3RvcmFnZSk7CisKKyAgICBjb25zdCB1bnNpZ25lZCBp
bnQgbVNlcmlhbDsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgbUN1cnJlbnRTZXJpYWw7Cit9
OworCisvLyBSZW5kZXJidWZmZXIgaW1wbGVtZW50cyB0aGUgR0wgcmVuZGVyYnVmZmVyIG9iamVj
dC4KKy8vIEl0J3Mgb25seSBhIHByb3h5IGZvciBhIFJlbmRlcmJ1ZmZlckludGVyZmFjZSBpbnN0
YW5jZTsgdGhlIGludGVybmFsIG9iamVjdAorLy8gY2FuIGNoYW5nZSB3aGVuZXZlciBnbFJlbmRl
cmJ1ZmZlclN0b3JhZ2UgaXMgY2FsbGVkLgorY2xhc3MgUmVuZGVyYnVmZmVyIDogcHVibGljIFJl
ZkNvdW50T2JqZWN0Cit7CisgIHB1YmxpYzoKKyAgICBSZW5kZXJidWZmZXIocng6OlJlbmRlcmVy
ICpyZW5kZXJlciwgR0x1aW50IGlkLCBSZW5kZXJidWZmZXJJbnRlcmZhY2UgKnN0b3JhZ2UpOwor
CisgICAgdmlydHVhbCB+UmVuZGVyYnVmZmVyKCk7CisKKyAgICAvLyBUaGVzZSBmdW5jdGlvbnMg
ZnJvbSBSZWZDb3VudE9iamVjdCBhcmUgb3ZlcmxvYWRlZCBoZXJlIGJlY2F1c2UKKyAgICAvLyBU
ZXh0dXJlcyBuZWVkIHRvIG1haW50YWluIHRoZWlyIG93biBjb3VudCBvZiByZWZlcmVuY2VzIHRv
IHRoZW0gdmlhCisgICAgLy8gUmVuZGVyYnVmZmVycy9SZW5kZXJidWZmZXJUZXh0dXJlcy4gVGhl
c2UgZnVuY3Rpb25zIGludm9rZSB0aG9zZQorICAgIC8vIHJlZmVyZW5jZSBjb3VudGluZyBmdW5j
dGlvbnMgb24gdGhlIFJlbmRlcmJ1ZmZlckludGVyZmFjZS4KKyAgICB2b2lkIGFkZFJlZigpIGNv
bnN0OworICAgIHZvaWQgcmVsZWFzZSgpIGNvbnN0OworCisgICAgcng6OlJlbmRlclRhcmdldCAq
Z2V0UmVuZGVyVGFyZ2V0KCk7CisgICAgcng6OlJlbmRlclRhcmdldCAqZ2V0RGVwdGhTdGVuY2ls
KCk7CisKKyAgICBHTHNpemVpIGdldFdpZHRoKCkgY29uc3Q7CisgICAgR0xzaXplaSBnZXRIZWln
aHQoKSBjb25zdDsKKyAgICBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdDsKKyAgICBH
TGVudW0gZ2V0QWN0dWFsRm9ybWF0KCkgY29uc3Q7CisgICAgR0x1aW50IGdldFJlZFNpemUoKSBj
b25zdDsKKyAgICBHTHVpbnQgZ2V0R3JlZW5TaXplKCkgY29uc3Q7CisgICAgR0x1aW50IGdldEJs
dWVTaXplKCkgY29uc3Q7CisgICAgR0x1aW50IGdldEFscGhhU2l6ZSgpIGNvbnN0OworICAgIEdM
dWludCBnZXREZXB0aFNpemUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0U3RlbmNpbFNpemUoKSBj
b25zdDsKKyAgICBHTHNpemVpIGdldFNhbXBsZXMoKSBjb25zdDsKKworICAgIHVuc2lnbmVkIGlu
dCBnZXRTZXJpYWwoKSBjb25zdDsKKworICAgIHZvaWQgc2V0U3RvcmFnZShSZW5kZXJidWZmZXJT
dG9yYWdlICpuZXdTdG9yYWdlKTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTihSZW5kZXJidWZmZXIpOworCisgICAgUmVuZGVyYnVmZmVySW50ZXJmYWNlICptSW5z
dGFuY2U7Cit9OworCitjbGFzcyBDb2xvcmJ1ZmZlciA6IHB1YmxpYyBSZW5kZXJidWZmZXJTdG9y
YWdlCit7CisgIHB1YmxpYzoKKyAgICBDb2xvcmJ1ZmZlcihyeDo6UmVuZGVyZXIgKnJlbmRlcmVy
LCByeDo6U3dhcENoYWluICpzd2FwQ2hhaW4pOworICAgIENvbG9yYnVmZmVyKHJ4OjpSZW5kZXJl
ciAqcmVuZGVyZXIsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0
LCBHTHNpemVpIHNhbXBsZXMpOworCisgICAgdmlydHVhbCB+Q29sb3JidWZmZXIoKTsKKworICAg
IHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KCk7CisKKyAgcHJpdmF0
ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oQ29sb3JidWZmZXIpOworCisgICAgcng6
OlJlbmRlclRhcmdldCAqbVJlbmRlclRhcmdldDsKK307CisKK2NsYXNzIERlcHRoU3RlbmNpbGJ1
ZmZlciA6IHB1YmxpYyBSZW5kZXJidWZmZXJTdG9yYWdlCit7CisgIHB1YmxpYzoKKyAgICBEZXB0
aFN0ZW5jaWxidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgcng6OlN3YXBDaGFpbiAqc3dh
cENoYWluKTsKKyAgICBEZXB0aFN0ZW5jaWxidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgc2FtcGxlcyk7CisKKyAgICB+
RGVwdGhTdGVuY2lsYnVmZmVyKCk7CisKKyAgICB2aXJ0dWFsIHJ4OjpSZW5kZXJUYXJnZXQgKmdl
dERlcHRoU3RlbmNpbCgpOworCisgIHByb3RlY3RlZDoKKyAgICByeDo6UmVuZGVyVGFyZ2V0ICAq
bURlcHRoU3RlbmNpbDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
TihEZXB0aFN0ZW5jaWxidWZmZXIpOworfTsKKworY2xhc3MgRGVwdGhidWZmZXIgOiBwdWJsaWMg
RGVwdGhTdGVuY2lsYnVmZmVyCit7CisgIHB1YmxpYzoKKyAgICBEZXB0aGJ1ZmZlcihyeDo6UmVu
ZGVyZXIgKnJlbmRlcmVyLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBz
YW1wbGVzKTsKKworICAgIHZpcnR1YWwgfkRlcHRoYnVmZmVyKCk7CisKKyAgcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oRGVwdGhidWZmZXIpOworfTsKKworY2xhc3MgU3Rl
bmNpbGJ1ZmZlciA6IHB1YmxpYyBEZXB0aFN0ZW5jaWxidWZmZXIKK3sKKyAgcHVibGljOgorICAg
IFN0ZW5jaWxidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMc2l6ZWkgc2FtcGxlcyk7CisKKyAgICB2aXJ0dWFsIH5TdGVuY2lsYnVm
ZmVyKCk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oU3RlbmNp
bGJ1ZmZlcik7Cit9OworfQorCisjZW5kaWYgICAvLyBMSUJHTEVTVjJfUkVOREVSQlVGRkVSX0hf
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Jlc291cmNlTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9SZXNvdXJjZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMyMiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBSZXNvdXJjZU1hbmFnZXIuY3BwOiBJbXBsZW1lbnRzIHRoZSBnbDo6UmVzb3Vy
Y2VNYW5hZ2VyIGNsYXNzLCB3aGljaCB0cmFja3MgYW5kIAorLy8gcmV0cmlldmVzIG9iamVjdHMg
d2hpY2ggbWF5IGJlIHNoYXJlZCBieSBtdWx0aXBsZSBDb250ZXh0cy4KKworI2luY2x1ZGUgImxp
YkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9CdWZmZXIu
aCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9S
ZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvU2hhZGVyLmgiCisjaW5jbHVkZSAi
bGliR0xFU3YyL1RleHR1cmUuaCIKKworbmFtZXNwYWNlIGdsCit7CitSZXNvdXJjZU1hbmFnZXI6
OlJlc291cmNlTWFuYWdlcihyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKQoreworICAgIG1SZWZDb3Vu
dCA9IDE7CisgICAgbVJlbmRlcmVyID0gcmVuZGVyZXI7Cit9CisKK1Jlc291cmNlTWFuYWdlcjo6
flJlc291cmNlTWFuYWdlcigpCit7CisgICAgd2hpbGUgKCFtQnVmZmVyTWFwLmVtcHR5KCkpCisg
ICAgeworICAgICAgICBkZWxldGVCdWZmZXIobUJ1ZmZlck1hcC5iZWdpbigpLT5maXJzdCk7Cisg
ICAgfQorCisgICAgd2hpbGUgKCFtUHJvZ3JhbU1hcC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAg
ZGVsZXRlUHJvZ3JhbShtUHJvZ3JhbU1hcC5iZWdpbigpLT5maXJzdCk7CisgICAgfQorCisgICAg
d2hpbGUgKCFtU2hhZGVyTWFwLmVtcHR5KCkpCisgICAgeworICAgICAgICBkZWxldGVTaGFkZXIo
bVNoYWRlck1hcC5iZWdpbigpLT5maXJzdCk7CisgICAgfQorCisgICAgd2hpbGUgKCFtUmVuZGVy
YnVmZmVyTWFwLmVtcHR5KCkpCisgICAgeworICAgICAgICBkZWxldGVSZW5kZXJidWZmZXIobVJl
bmRlcmJ1ZmZlck1hcC5iZWdpbigpLT5maXJzdCk7CisgICAgfQorCisgICAgd2hpbGUgKCFtVGV4
dHVyZU1hcC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlVGV4dHVyZShtVGV4dHVyZU1h
cC5iZWdpbigpLT5maXJzdCk7CisgICAgfQorfQorCit2b2lkIFJlc291cmNlTWFuYWdlcjo6YWRk
UmVmKCkKK3sKKyAgICBtUmVmQ291bnQrKzsKK30KKwordm9pZCBSZXNvdXJjZU1hbmFnZXI6OnJl
bGVhc2UoKQoreworICAgIGlmICgtLW1SZWZDb3VudCA9PSAwKQorICAgIHsKKyAgICAgICAgZGVs
ZXRlIHRoaXM7CisgICAgfQorfQorCisvLyBSZXR1cm5zIGFuIHVudXNlZCBidWZmZXIgbmFtZQor
R0x1aW50IFJlc291cmNlTWFuYWdlcjo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICBHTHVpbnQgaGFu
ZGxlID0gbUJ1ZmZlckhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworCisgICAgbUJ1ZmZlck1h
cFtoYW5kbGVdID0gTlVMTDsKKworICAgIHJldHVybiBoYW5kbGU7Cit9CisKKy8vIFJldHVybnMg
YW4gdW51c2VkIHNoYWRlci9wcm9ncmFtIG5hbWUKK0dMdWludCBSZXNvdXJjZU1hbmFnZXI6OmNy
ZWF0ZVNoYWRlcihHTGVudW0gdHlwZSkKK3sKKyAgICBHTHVpbnQgaGFuZGxlID0gbVByb2dyYW1T
aGFkZXJIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKKworICAgIGlmICh0eXBlID09IEdMX1ZF
UlRFWF9TSEFERVIpCisgICAgeworICAgICAgICBtU2hhZGVyTWFwW2hhbmRsZV0gPSBuZXcgVmVy
dGV4U2hhZGVyKHRoaXMsIG1SZW5kZXJlciwgaGFuZGxlKTsKKyAgICB9CisgICAgZWxzZSBpZiAo
dHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCisgICAgeworICAgICAgICBtU2hhZGVyTWFwW2hh
bmRsZV0gPSBuZXcgRnJhZ21lbnRTaGFkZXIodGhpcywgbVJlbmRlcmVyLCBoYW5kbGUpOworICAg
IH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICByZXR1cm4gaGFuZGxlOworfQorCisv
LyBSZXR1cm5zIGFuIHVudXNlZCBwcm9ncmFtL3NoYWRlciBuYW1lCitHTHVpbnQgUmVzb3VyY2VN
YW5hZ2VyOjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICBHTHVpbnQgaGFuZGxlID0gbVByb2dyYW1T
aGFkZXJIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKKworICAgIG1Qcm9ncmFtTWFwW2hhbmRs
ZV0gPSBuZXcgUHJvZ3JhbShtUmVuZGVyZXIsIHRoaXMsIGhhbmRsZSk7CisKKyAgICByZXR1cm4g
aGFuZGxlOworfQorCisvLyBSZXR1cm5zIGFuIHVudXNlZCB0ZXh0dXJlIG5hbWUKK0dMdWludCBS
ZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIEdMdWludCBoYW5kbGUgPSBt
VGV4dHVyZUhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworCisgICAgbVRleHR1cmVNYXBbaGFu
ZGxlXSA9IE5VTEw7CisKKyAgICByZXR1cm4gaGFuZGxlOworfQorCisvLyBSZXR1cm5zIGFuIHVu
dXNlZCByZW5kZXJidWZmZXIgbmFtZQorR0x1aW50IFJlc291cmNlTWFuYWdlcjo6Y3JlYXRlUmVu
ZGVyYnVmZmVyKCkKK3sKKyAgICBHTHVpbnQgaGFuZGxlID0gbVJlbmRlcmJ1ZmZlckhhbmRsZUFs
bG9jYXRvci5hbGxvY2F0ZSgpOworCisgICAgbVJlbmRlcmJ1ZmZlck1hcFtoYW5kbGVdID0gTlVM
TDsKKworICAgIHJldHVybiBoYW5kbGU7Cit9CisKK3ZvaWQgUmVzb3VyY2VNYW5hZ2VyOjpkZWxl
dGVCdWZmZXIoR0x1aW50IGJ1ZmZlcikKK3sKKyAgICBCdWZmZXJNYXA6Oml0ZXJhdG9yIGJ1ZmZl
ck9iamVjdCA9IG1CdWZmZXJNYXAuZmluZChidWZmZXIpOworCisgICAgaWYgKGJ1ZmZlck9iamVj
dCAhPSBtQnVmZmVyTWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgbUJ1ZmZlckhhbmRsZUFsbG9j
YXRvci5yZWxlYXNlKGJ1ZmZlck9iamVjdC0+Zmlyc3QpOworICAgICAgICBpZiAoYnVmZmVyT2Jq
ZWN0LT5zZWNvbmQpIGJ1ZmZlck9iamVjdC0+c2Vjb25kLT5yZWxlYXNlKCk7CisgICAgICAgIG1C
dWZmZXJNYXAuZXJhc2UoYnVmZmVyT2JqZWN0KTsKKyAgICB9Cit9CisKK3ZvaWQgUmVzb3VyY2VN
YW5hZ2VyOjpkZWxldGVTaGFkZXIoR0x1aW50IHNoYWRlcikKK3sKKyAgICBTaGFkZXJNYXA6Oml0
ZXJhdG9yIHNoYWRlck9iamVjdCA9IG1TaGFkZXJNYXAuZmluZChzaGFkZXIpOworCisgICAgaWYg
KHNoYWRlck9iamVjdCAhPSBtU2hhZGVyTWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgaWYgKHNo
YWRlck9iamVjdC0+c2Vjb25kLT5nZXRSZWZDb3VudCgpID09IDApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1Qcm9ncmFtU2hhZGVySGFuZGxlQWxsb2NhdG9yLnJlbGVhc2Uoc2hhZGVyT2JqZWN0
LT5maXJzdCk7CisgICAgICAgICAgICBkZWxldGUgc2hhZGVyT2JqZWN0LT5zZWNvbmQ7CisgICAg
ICAgICAgICBtU2hhZGVyTWFwLmVyYXNlKHNoYWRlck9iamVjdCk7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBzaGFkZXJPYmplY3QtPnNlY29uZC0+Zmxh
Z0ZvckRlbGV0aW9uKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUmVzb3VyY2VNYW5h
Z2VyOjpkZWxldGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQoreworICAgIFByb2dyYW1NYXA6Oml0
ZXJhdG9yIHByb2dyYW1PYmplY3QgPSBtUHJvZ3JhbU1hcC5maW5kKHByb2dyYW0pOworCisgICAg
aWYgKHByb2dyYW1PYmplY3QgIT0gbVByb2dyYW1NYXAuZW5kKCkpCisgICAgeworICAgICAgICBp
ZiAocHJvZ3JhbU9iamVjdC0+c2Vjb25kLT5nZXRSZWZDb3VudCgpID09IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1Qcm9ncmFtU2hhZGVySGFuZGxlQWxsb2NhdG9yLnJlbGVhc2UocHJvZ3Jh
bU9iamVjdC0+Zmlyc3QpOworICAgICAgICAgICAgZGVsZXRlIHByb2dyYW1PYmplY3QtPnNlY29u
ZDsKKyAgICAgICAgICAgIG1Qcm9ncmFtTWFwLmVyYXNlKHByb2dyYW1PYmplY3QpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHByb2dyYW1PYmplY3Qt
PnNlY29uZC0+ZmxhZ0ZvckRlbGV0aW9uKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
UmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVUZXh0dXJlKEdMdWludCB0ZXh0dXJlKQoreworICAgIFRl
eHR1cmVNYXA6Oml0ZXJhdG9yIHRleHR1cmVPYmplY3QgPSBtVGV4dHVyZU1hcC5maW5kKHRleHR1
cmUpOworCisgICAgaWYgKHRleHR1cmVPYmplY3QgIT0gbVRleHR1cmVNYXAuZW5kKCkpCisgICAg
eworICAgICAgICBtVGV4dHVyZUhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKHRleHR1cmVPYmplY3Qt
PmZpcnN0KTsKKyAgICAgICAgaWYgKHRleHR1cmVPYmplY3QtPnNlY29uZCkgdGV4dHVyZU9iamVj
dC0+c2Vjb25kLT5yZWxlYXNlKCk7CisgICAgICAgIG1UZXh0dXJlTWFwLmVyYXNlKHRleHR1cmVP
YmplY3QpOworICAgIH0KK30KKwordm9pZCBSZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZVJlbmRlcmJ1
ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVyKQoreworICAgIFJlbmRlcmJ1ZmZlck1hcDo6aXRlcmF0
b3IgcmVuZGVyYnVmZmVyT2JqZWN0ID0gbVJlbmRlcmJ1ZmZlck1hcC5maW5kKHJlbmRlcmJ1ZmZl
cik7CisKKyAgICBpZiAocmVuZGVyYnVmZmVyT2JqZWN0ICE9IG1SZW5kZXJidWZmZXJNYXAuZW5k
KCkpCisgICAgeworICAgICAgICBtUmVuZGVyYnVmZmVySGFuZGxlQWxsb2NhdG9yLnJlbGVhc2Uo
cmVuZGVyYnVmZmVyT2JqZWN0LT5maXJzdCk7CisgICAgICAgIGlmIChyZW5kZXJidWZmZXJPYmpl
Y3QtPnNlY29uZCkgcmVuZGVyYnVmZmVyT2JqZWN0LT5zZWNvbmQtPnJlbGVhc2UoKTsKKyAgICAg
ICAgbVJlbmRlcmJ1ZmZlck1hcC5lcmFzZShyZW5kZXJidWZmZXJPYmplY3QpOworICAgIH0KK30K
KworQnVmZmVyICpSZXNvdXJjZU1hbmFnZXI6OmdldEJ1ZmZlcih1bnNpZ25lZCBpbnQgaGFuZGxl
KQoreworICAgIEJ1ZmZlck1hcDo6aXRlcmF0b3IgYnVmZmVyID0gbUJ1ZmZlck1hcC5maW5kKGhh
bmRsZSk7CisKKyAgICBpZiAoYnVmZmVyID09IG1CdWZmZXJNYXAuZW5kKCkpCisgICAgeworICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJ1ZmZlci0+c2Vjb25kOworICAgIH0KK30KKworU2hhZGVyICpSZXNvdXJjZU1hbmFnZXI6Omdl
dFNoYWRlcih1bnNpZ25lZCBpbnQgaGFuZGxlKQoreworICAgIFNoYWRlck1hcDo6aXRlcmF0b3Ig
c2hhZGVyID0gbVNoYWRlck1hcC5maW5kKGhhbmRsZSk7CisKKyAgICBpZiAoc2hhZGVyID09IG1T
aGFkZXJNYXAuZW5kKCkpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNoYWRlci0+c2Vjb25kOworICAgIH0KK30KKwor
VGV4dHVyZSAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRUZXh0dXJlKHVuc2lnbmVkIGludCBoYW5kbGUp
Cit7CisgICAgaWYgKGhhbmRsZSA9PSAwKSByZXR1cm4gTlVMTDsKKworICAgIFRleHR1cmVNYXA6
Oml0ZXJhdG9yIHRleHR1cmUgPSBtVGV4dHVyZU1hcC5maW5kKGhhbmRsZSk7CisKKyAgICBpZiAo
dGV4dHVyZSA9PSBtVGV4dHVyZU1hcC5lbmQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBOVUxM
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gdGV4dHVyZS0+c2Vjb25k
OworICAgIH0KK30KKworUHJvZ3JhbSAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRQcm9ncmFtKHVuc2ln
bmVkIGludCBoYW5kbGUpCit7CisgICAgUHJvZ3JhbU1hcDo6aXRlcmF0b3IgcHJvZ3JhbSA9IG1Q
cm9ncmFtTWFwLmZpbmQoaGFuZGxlKTsKKworICAgIGlmIChwcm9ncmFtID09IG1Qcm9ncmFtTWFw
LmVuZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIHJldHVybiBwcm9ncmFtLT5zZWNvbmQ7CisgICAgfQorfQorCitSZW5kZXJi
dWZmZXIgKlJlc291cmNlTWFuYWdlcjo6Z2V0UmVuZGVyYnVmZmVyKHVuc2lnbmVkIGludCBoYW5k
bGUpCit7CisgICAgUmVuZGVyYnVmZmVyTWFwOjppdGVyYXRvciByZW5kZXJidWZmZXIgPSBtUmVu
ZGVyYnVmZmVyTWFwLmZpbmQoaGFuZGxlKTsKKworICAgIGlmIChyZW5kZXJidWZmZXIgPT0gbVJl
bmRlcmJ1ZmZlck1hcC5lbmQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gcmVuZGVyYnVmZmVyLT5zZWNvbmQ7Cisg
ICAgfQorfQorCit2b2lkIFJlc291cmNlTWFuYWdlcjo6c2V0UmVuZGVyYnVmZmVyKEdMdWludCBo
YW5kbGUsIFJlbmRlcmJ1ZmZlciAqYnVmZmVyKQoreworICAgIG1SZW5kZXJidWZmZXJNYXBbaGFu
ZGxlXSA9IGJ1ZmZlcjsKK30KKwordm9pZCBSZXNvdXJjZU1hbmFnZXI6OmNoZWNrQnVmZmVyQWxs
b2NhdGlvbih1bnNpZ25lZCBpbnQgYnVmZmVyKQoreworICAgIGlmIChidWZmZXIgIT0gMCAmJiAh
Z2V0QnVmZmVyKGJ1ZmZlcikpCisgICAgeworICAgICAgICBCdWZmZXIgKmJ1ZmZlck9iamVjdCA9
IG5ldyBCdWZmZXIobVJlbmRlcmVyLCBidWZmZXIpOworICAgICAgICBtQnVmZmVyTWFwW2J1ZmZl
cl0gPSBidWZmZXJPYmplY3Q7CisgICAgICAgIGJ1ZmZlck9iamVjdC0+YWRkUmVmKCk7CisgICAg
fQorfQorCit2b2lkIFJlc291cmNlTWFuYWdlcjo6Y2hlY2tUZXh0dXJlQWxsb2NhdGlvbihHTHVp
bnQgdGV4dHVyZSwgVGV4dHVyZVR5cGUgdHlwZSkKK3sKKyAgICBpZiAoIWdldFRleHR1cmUodGV4
dHVyZSkgJiYgdGV4dHVyZSAhPSAwKQorICAgIHsKKyAgICAgICAgVGV4dHVyZSAqdGV4dHVyZU9i
amVjdDsKKworICAgICAgICBpZiAodHlwZSA9PSBURVhUVVJFXzJEKQorICAgICAgICB7CisgICAg
ICAgICAgICB0ZXh0dXJlT2JqZWN0ID0gbmV3IFRleHR1cmUyRChtUmVuZGVyZXIsIHRleHR1cmUp
OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gVEVYVFVSRV9DVUJFKQorICAg
ICAgICB7CisgICAgICAgICAgICB0ZXh0dXJlT2JqZWN0ID0gbmV3IFRleHR1cmVDdWJlTWFwKG1S
ZW5kZXJlciwgdGV4dHVyZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgbVRleHR1cmVNYXBbdGV4dHVyZV0gPSB0ZXh0dXJlT2JqZWN0OworICAgICAg
ICB0ZXh0dXJlT2JqZWN0LT5hZGRSZWYoKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVzb3VyY2VNYW5h
Z2VyOjpjaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24oR0x1aW50IHJlbmRlcmJ1ZmZlcikKK3sK
KyAgICBpZiAocmVuZGVyYnVmZmVyICE9IDAgJiYgIWdldFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZm
ZXIpKQorICAgIHsKKyAgICAgICAgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXJPYmplY3QgPSBu
ZXcgUmVuZGVyYnVmZmVyKG1SZW5kZXJlciwgcmVuZGVyYnVmZmVyLCBuZXcgQ29sb3JidWZmZXIo
bVJlbmRlcmVyLCAwLCAwLCBHTF9SR0JBNCwgMCkpOworICAgICAgICBtUmVuZGVyYnVmZmVyTWFw
W3JlbmRlcmJ1ZmZlcl0gPSByZW5kZXJidWZmZXJPYmplY3Q7CisgICAgICAgIHJlbmRlcmJ1ZmZl
ck9iamVjdC0+YWRkUmVmKCk7CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Jlc291cmNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVzb3VyY2VNYW5hZ2VyLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Jlc291
cmNlTWFuYWdlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOCBAQAorLy8KKy8vIENvcHly
aWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gUmVzb3VyY2VNYW5hZ2VyLmggOiBEZWZpbmVzIHRoZSBSZXNvdXJjZU1hbmFn
ZXIgY2xhc3MsIHdoaWNoIHRyYWNrcyBvYmplY3RzCisvLyBzaGFyZWQgYnkgbXVsdGlwbGUgR0wg
Y29udGV4dHMuCisKKyNpZm5kZWYgTElCR0xFU1YyX1JFU09VUkNFTUFOQUdFUl9IXworI2RlZmlu
ZSBMSUJHTEVTVjJfUkVTT1VSQ0VNQU5BR0VSX0hfCisKKyNkZWZpbmUgR0xfQVBJQ0FMTAorI2lu
Y2x1ZGUgPEdMRVMyL2dsMi5oPgorCisjaWZkZWYgX01TQ19WRVIKKyNpbmNsdWRlIDxoYXNoX21h
cD4KKyNlbHNlCisjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyNlbmRpZgorCisjaW5jbHVkZSAi
Y29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvYW5nbGV0eXBlcy5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuaCIKKworbmFtZXNwYWNlIHJ4Cit7
CitjbGFzcyBSZW5kZXJlcjsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBCdWZmZXI7Citj
bGFzcyBTaGFkZXI7CitjbGFzcyBQcm9ncmFtOworY2xhc3MgVGV4dHVyZTsKK2NsYXNzIFJlbmRl
cmJ1ZmZlcjsKKworY2xhc3MgUmVzb3VyY2VNYW5hZ2VyCit7CisgIHB1YmxpYzoKKyAgICBleHBs
aWNpdCBSZXNvdXJjZU1hbmFnZXIocng6OlJlbmRlcmVyICpyZW5kZXJlcik7CisgICAgflJlc291
cmNlTWFuYWdlcigpOworCisgICAgdm9pZCBhZGRSZWYoKTsKKyAgICB2b2lkIHJlbGVhc2UoKTsK
KworICAgIEdMdWludCBjcmVhdGVCdWZmZXIoKTsKKyAgICBHTHVpbnQgY3JlYXRlU2hhZGVyKEdM
ZW51bSB0eXBlKTsKKyAgICBHTHVpbnQgY3JlYXRlUHJvZ3JhbSgpOworICAgIEdMdWludCBjcmVh
dGVUZXh0dXJlKCk7CisgICAgR0x1aW50IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworCisgICAgdm9p
ZCBkZWxldGVCdWZmZXIoR0x1aW50IGJ1ZmZlcik7CisgICAgdm9pZCBkZWxldGVTaGFkZXIoR0x1
aW50IHNoYWRlcik7CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKTsKKyAg
ICB2b2lkIGRlbGV0ZVRleHR1cmUoR0x1aW50IHRleHR1cmUpOworICAgIHZvaWQgZGVsZXRlUmVu
ZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpOworCisgICAgQnVmZmVyICpnZXRCdWZmZXIo
R0x1aW50IGhhbmRsZSk7CisgICAgU2hhZGVyICpnZXRTaGFkZXIoR0x1aW50IGhhbmRsZSk7Cisg
ICAgUHJvZ3JhbSAqZ2V0UHJvZ3JhbShHTHVpbnQgaGFuZGxlKTsKKyAgICBUZXh0dXJlICpnZXRU
ZXh0dXJlKEdMdWludCBoYW5kbGUpOworICAgIFJlbmRlcmJ1ZmZlciAqZ2V0UmVuZGVyYnVmZmVy
KEdMdWludCBoYW5kbGUpOworICAgIAorICAgIHZvaWQgc2V0UmVuZGVyYnVmZmVyKEdMdWludCBo
YW5kbGUsIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyKTsKKworICAgIHZvaWQgY2hlY2tCdWZm
ZXJBbGxvY2F0aW9uKHVuc2lnbmVkIGludCBidWZmZXIpOworICAgIHZvaWQgY2hlY2tUZXh0dXJl
QWxsb2NhdGlvbihHTHVpbnQgdGV4dHVyZSwgVGV4dHVyZVR5cGUgdHlwZSk7CisgICAgdm9pZCBj
aGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24oR0x1aW50IHJlbmRlcmJ1ZmZlcik7CisKKyAgcHJp
dmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVzb3VyY2VNYW5hZ2VyKTsKKwor
ICAgIHN0ZDo6c2l6ZV90IG1SZWZDb3VudDsKKyAgICByeDo6UmVuZGVyZXIgKm1SZW5kZXJlcjsK
KworI2lmbmRlZiBIQVNIX01BUAorIyBpZmRlZiBfTVNDX1ZFUgorIyAgZGVmaW5lIEhBU0hfTUFQ
IHN0ZGV4dDo6aGFzaF9tYXAKKyMgZWxzZQorIyAgZGVmaW5lIEhBU0hfTUFQIHN0ZDo6dW5vcmRl
cmVkX21hcAorIyBlbmRpZgorI2VuZGlmCisKKyAgICB0eXBlZGVmIEhBU0hfTUFQPEdMdWludCwg
QnVmZmVyKj4gQnVmZmVyTWFwOworICAgIEJ1ZmZlck1hcCBtQnVmZmVyTWFwOworICAgIEhhbmRs
ZUFsbG9jYXRvciBtQnVmZmVySGFuZGxlQWxsb2NhdG9yOworCisgICAgdHlwZWRlZiBIQVNIX01B
UDxHTHVpbnQsIFNoYWRlcio+IFNoYWRlck1hcDsKKyAgICBTaGFkZXJNYXAgbVNoYWRlck1hcDsK
KworICAgIHR5cGVkZWYgSEFTSF9NQVA8R0x1aW50LCBQcm9ncmFtKj4gUHJvZ3JhbU1hcDsKKyAg
ICBQcm9ncmFtTWFwIG1Qcm9ncmFtTWFwOworICAgIEhhbmRsZUFsbG9jYXRvciBtUHJvZ3JhbVNo
YWRlckhhbmRsZUFsbG9jYXRvcjsKKworICAgIHR5cGVkZWYgSEFTSF9NQVA8R0x1aW50LCBUZXh0
dXJlKj4gVGV4dHVyZU1hcDsKKyAgICBUZXh0dXJlTWFwIG1UZXh0dXJlTWFwOworICAgIEhhbmRs
ZUFsbG9jYXRvciBtVGV4dHVyZUhhbmRsZUFsbG9jYXRvcjsKKworICAgIHR5cGVkZWYgSEFTSF9N
QVA8R0x1aW50LCBSZW5kZXJidWZmZXIqPiBSZW5kZXJidWZmZXJNYXA7CisgICAgUmVuZGVyYnVm
ZmVyTWFwIG1SZW5kZXJidWZmZXJNYXA7CisgICAgSGFuZGxlQWxsb2NhdG9yIG1SZW5kZXJidWZm
ZXJIYW5kbGVBbGxvY2F0b3I7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVTT1VS
Q0VNQU5BR0VSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L1NoYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9TaGFkZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9TaGFkZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyMiBA
QAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTaGFk
ZXIuY3BwOiBJbXBsZW1lbnRzIHRoZSBnbDo6U2hhZGVyIGNsYXNzIGFuZCBpdHMgIGRlcml2ZWQg
Y2xhc3NlcworLy8gVmVydGV4U2hhZGVyIGFuZCBGcmFnbWVudFNoYWRlci4gSW1wbGVtZW50cyBH
TCBzaGFkZXIgb2JqZWN0cyBhbmQgcmVsYXRlZAorLy8gZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBF
UyAyLjAuMjRdIHNlY3Rpb24gMi4xMCBwYWdlIDI0IGFuZCBzZWN0aW9uIDMuOCBwYWdlIDg0Lgor
CisjaW5jbHVkZSAibGliR0xFU3YyL1NoYWRlci5oIgorCisjaW5jbHVkZSAiR0xTTEFORy9TaGFk
ZXJMYW5nLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9Db25zdGFu
dHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVzb3VyY2VNYW5hZ2VyLmgiCisKK25hbWVzcGFj
ZSBnbAorewordm9pZCAqU2hhZGVyOjptRnJhZ21lbnRDb21waWxlciA9IE5VTEw7Cit2b2lkICpT
aGFkZXI6Om1WZXJ0ZXhDb21waWxlciA9IE5VTEw7CisKK1NoYWRlcjo6U2hhZGVyKFJlc291cmNl
TWFuYWdlciAqbWFuYWdlciwgY29uc3Qgcng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGhh
bmRsZSkKKyAgICA6IG1IYW5kbGUoaGFuZGxlKSwgbVJlbmRlcmVyKHJlbmRlcmVyKSwgbVJlc291
cmNlTWFuYWdlcihtYW5hZ2VyKQoreworICAgIG1Tb3VyY2UgPSBOVUxMOworICAgIG1IbHNsID0g
TlVMTDsKKyAgICBtSW5mb0xvZyA9IE5VTEw7CisKKyAgICB1bmNvbXBpbGUoKTsKKyAgICBpbml0
aWFsaXplQ29tcGlsZXIoKTsKKworICAgIG1SZWZDb3VudCA9IDA7CisgICAgbURlbGV0ZVN0YXR1
cyA9IGZhbHNlOworfQorCitTaGFkZXI6On5TaGFkZXIoKQoreworICAgIGRlbGV0ZVtdIG1Tb3Vy
Y2U7CisgICAgZGVsZXRlW10gbUhsc2w7CisgICAgZGVsZXRlW10gbUluZm9Mb2c7Cit9CisKK0dM
dWludCBTaGFkZXI6OmdldEhhbmRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1IYW5kbGU7Cit9
CisKK3ZvaWQgU2hhZGVyOjpzZXRTb3VyY2UoR0xzaXplaSBjb3VudCwgY29uc3QgY2hhciAqKnN0
cmluZywgY29uc3QgR0xpbnQgKmxlbmd0aCkKK3sKKyAgICBkZWxldGVbXSBtU291cmNlOworICAg
IGludCB0b3RhbExlbmd0aCA9IDA7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBp
KyspCisgICAgeworICAgICAgICBpZiAobGVuZ3RoICYmIGxlbmd0aFtpXSA+PSAwKQorICAgICAg
ICB7CisgICAgICAgICAgICB0b3RhbExlbmd0aCArPSBsZW5ndGhbaV07CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICB0b3RhbExlbmd0aCArPSAoaW50KXN0
cmxlbihzdHJpbmdbaV0pOworICAgICAgICB9CisgICAgfQorCisgICAgbVNvdXJjZSA9IG5ldyBj
aGFyW3RvdGFsTGVuZ3RoICsgMV07CisgICAgY2hhciAqY29kZSA9IG1Tb3VyY2U7CisKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgeworICAgICAgICBpbnQgc3RyaW5n
TGVuZ3RoOworCisgICAgICAgIGlmIChsZW5ndGggJiYgbGVuZ3RoW2ldID49IDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9IGxlbmd0aFtpXTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9IChpbnQpc3Ry
bGVuKHN0cmluZ1tpXSk7CisgICAgICAgIH0KKworICAgICAgICBzdHJuY3B5KGNvZGUsIHN0cmlu
Z1tpXSwgc3RyaW5nTGVuZ3RoKTsKKyAgICAgICAgY29kZSArPSBzdHJpbmdMZW5ndGg7CisgICAg
fQorCisgICAgbVNvdXJjZVt0b3RhbExlbmd0aF0gPSAnXDAnOworfQorCitpbnQgU2hhZGVyOjpn
ZXRJbmZvTG9nTGVuZ3RoKCkgY29uc3QKK3sKKyAgICBpZiAoIW1JbmZvTG9nKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgcmV0dXJuIHN0
cmxlbihtSW5mb0xvZykgKyAxOworICAgIH0KK30KKwordm9pZCBTaGFkZXI6OmdldEluZm9Mb2co
R0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmluZm9Mb2cpCit7CisgICAg
aW50IGluZGV4ID0gMDsKKworICAgIGlmIChidWZTaXplID4gMCkKKyAgICB7CisgICAgICAgIGlm
IChtSW5mb0xvZykKKyAgICAgICAgeworICAgICAgICAgICAgaW5kZXggPSBzdGQ6Om1pbihidWZT
aXplIC0gMSwgKGludClzdHJsZW4obUluZm9Mb2cpKTsKKyAgICAgICAgICAgIG1lbWNweShpbmZv
TG9nLCBtSW5mb0xvZywgaW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgaW5mb0xvZ1tpbmRl
eF0gPSAnXDAnOworICAgIH0KKworICAgIGlmIChsZW5ndGgpCisgICAgeworICAgICAgICAqbGVu
Z3RoID0gaW5kZXg7CisgICAgfQorfQorCitpbnQgU2hhZGVyOjpnZXRTb3VyY2VMZW5ndGgoKSBj
b25zdAoreworICAgIGlmICghbVNvdXJjZSkKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgIHJldHVybiBzdHJsZW4obVNvdXJjZSkgKyAxOwor
ICAgIH0KK30KKworaW50IFNoYWRlcjo6Z2V0VHJhbnNsYXRlZFNvdXJjZUxlbmd0aCgpIGNvbnN0
Cit7CisgICAgaWYgKCFtSGxzbCkKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgIHJldHVybiBzdHJsZW4obUhsc2wpICsgMTsKKyAgICB9Cit9
CisKK3ZvaWQgU2hhZGVyOjpnZXRTb3VyY2VJbXBsKGNoYXIgKnNvdXJjZSwgR0xzaXplaSBidWZT
aXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1ZmZlcikKK3sKKyAgICBpbnQgaW5kZXggPSAw
OworCisgICAgaWYgKGJ1ZlNpemUgPiAwKQorICAgIHsKKyAgICAgICAgaWYgKHNvdXJjZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgaW5kZXggPSBzdGQ6Om1pbihidWZTaXplIC0gMSwgKGludClz
dHJsZW4oc291cmNlKSk7CisgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCBzb3VyY2UsIGluZGV4
KTsKKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlcltpbmRleF0gPSAnXDAnOworICAgIH0KKwor
ICAgIGlmIChsZW5ndGgpCisgICAgeworICAgICAgICAqbGVuZ3RoID0gaW5kZXg7CisgICAgfQor
fQorCit2b2lkIFNoYWRlcjo6Z2V0U291cmNlKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVu
Z3RoLCBjaGFyICpidWZmZXIpCit7CisgICAgZ2V0U291cmNlSW1wbChtU291cmNlLCBidWZTaXpl
LCBsZW5ndGgsIGJ1ZmZlcik7Cit9CisKK3ZvaWQgU2hhZGVyOjpnZXRUcmFuc2xhdGVkU291cmNl
KEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpCit7CisgICAg
Z2V0U291cmNlSW1wbChtSGxzbCwgYnVmU2l6ZSwgbGVuZ3RoLCBidWZmZXIpOworfQorCitjb25z
dCBzaDo6QWN0aXZlVW5pZm9ybXMgJlNoYWRlcjo6Z2V0VW5pZm9ybXMoKQoreworICAgIHJldHVy
biBtQWN0aXZlVW5pZm9ybXM7Cit9CisKK2Jvb2wgU2hhZGVyOjppc0NvbXBpbGVkKCkKK3sKKyAg
ICByZXR1cm4gbUhsc2wgIT0gTlVMTDsKK30KKworY29uc3QgY2hhciAqU2hhZGVyOjpnZXRITFNM
KCkKK3sKKyAgICByZXR1cm4gbUhsc2w7Cit9CisKK3ZvaWQgU2hhZGVyOjphZGRSZWYoKQorewor
ICAgIG1SZWZDb3VudCsrOworfQorCit2b2lkIFNoYWRlcjo6cmVsZWFzZSgpCit7CisgICAgbVJl
ZkNvdW50LS07CisKKyAgICBpZiAobVJlZkNvdW50ID09IDAgJiYgbURlbGV0ZVN0YXR1cykKKyAg
ICB7CisgICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPmRlbGV0ZVNoYWRlcihtSGFuZGxlKTsKKyAg
ICB9Cit9CisKK3Vuc2lnbmVkIGludCBTaGFkZXI6OmdldFJlZkNvdW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVJlZkNvdW50OworfQorCitib29sIFNoYWRlcjo6aXNGbGFnZ2VkRm9yRGVsZXRp
b24oKSBjb25zdAoreworICAgIHJldHVybiBtRGVsZXRlU3RhdHVzOworfQorCit2b2lkIFNoYWRl
cjo6ZmxhZ0ZvckRlbGV0aW9uKCkKK3sKKyAgICBtRGVsZXRlU3RhdHVzID0gdHJ1ZTsKK30KKwor
Ly8gUGVyZm9ybSBhIG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG9mIHRoZSBzaGFkZXIgY29tcGls
ZXIgKG9yIGFmdGVyIGJlaW5nIGRlc3RydWN0ZWQgYnkgcmVsZWFzZUNvbXBpbGVyKQordm9pZCBT
aGFkZXI6OmluaXRpYWxpemVDb21waWxlcigpCit7CisgICAgaWYgKCFtRnJhZ21lbnRDb21waWxl
cikKKyAgICB7CisgICAgICAgIGludCByZXN1bHQgPSBTaEluaXRpYWxpemUoKTsKKworICAgICAg
ICBpZiAocmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBobHNs
VmVyc2lvbiA9IChtUmVuZGVyZXItPmdldE1ham9yU2hhZGVyTW9kZWwoKSA+PSA0KSA/IFNIX0hM
U0wxMV9PVVRQVVQgOiBTSF9ITFNMOV9PVVRQVVQ7CisKKyAgICAgICAgICAgIFNoQnVpbHRJblJl
c291cmNlcyByZXNvdXJjZXM7CisgICAgICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZy
ZXNvdXJjZXMpOworCisgICAgICAgICAgICByZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyA9IE1B
WF9WRVJURVhfQVRUUklCUzsKKyAgICAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3Jt
VmVjdG9ycyA9IG1SZW5kZXJlci0+Z2V0TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMoKTsKKyAgICAg
ICAgICAgIHJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyA9IG1SZW5kZXJlci0+Z2V0TWF4VmFy
eWluZ1ZlY3RvcnMoKTsKKyAgICAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1h
Z2VVbml0cyA9IG1SZW5kZXJlci0+Z2V0TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMoKTsKKyAg
ICAgICAgICAgIHJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0gbVJlbmRl
cmVyLT5nZXRNYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCk7CisgICAgICAgICAgICByZXNv
dXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMgPSBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUzsKKyAg
ICAgICAgICAgIHJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0gbVJlbmRlcmVy
LT5nZXRNYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKCk7CisgICAgICAgICAgICByZXNvdXJjZXMu
TWF4RHJhd0J1ZmZlcnMgPSBtUmVuZGVyZXItPmdldE1heFJlbmRlclRhcmdldHMoKTsKKyAgICAg
ICAgICAgIHJlc291cmNlcy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgPSBtUmVuZGVyZXItPmdl
dERlcml2YXRpdmVJbnN0cnVjdGlvblN1cHBvcnQoKTsKKyAgICAgICAgICAgIHJlc291cmNlcy5F
WFRfZHJhd19idWZmZXJzID0gbVJlbmRlcmVyLT5nZXRNYXhSZW5kZXJUYXJnZXRzKCkgPiAxOwor
ICAgICAgICAgICAgLy8gcmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgPSBtUmVuZGVy
ZXItPmdldFNoYXJlSGFuZGxlU3VwcG9ydCgpID8gMSA6IDA7IC8vIFRPRE86IGNvbW1lbnRlZCBv
dXQgdW50aWwgdGhlIGV4dGVuc2lvbiBpcyBhY3R1YWxseSBzdXBwb3J0ZWQuCisgICAgICAgICAg
ICByZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID0gMTsgICAvLyBTaGFkZXIgTW9kZWwg
MisgYWx3YXlzIHN1cHBvcnRzIEZQMjQgKHMxNmU3KSB3aGljaCBjb3JyZXNwb25kcyB0byBoaWdo
cAorICAgICAgICAgICAgcmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoID0gMTsgLy8gU2hhZGVyIE1v
ZGVsIDIrIGFsd2F5cyBzdXBwb3J0cyBleHBsaWNpdCBkZXB0aCBvdXRwdXQKKworICAgICAgICAg
ICAgbUZyYWdtZW50Q29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKFNIX0ZSQUdNRU5UX1NI
QURFUiwgU0hfR0xFUzJfU1BFQywgaGxzbFZlcnNpb24sICZyZXNvdXJjZXMpOworICAgICAgICAg
ICAgbVZlcnRleENvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihTSF9WRVJURVhfU0hBREVS
LCBTSF9HTEVTMl9TUEVDLCBobHNsVmVyc2lvbiwgJnJlc291cmNlcyk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgU2hhZGVyOjpyZWxlYXNlQ29tcGlsZXIoKQoreworICAgIFNoRGVzdHJ1
Y3QobUZyYWdtZW50Q29tcGlsZXIpOworICAgIFNoRGVzdHJ1Y3QobVZlcnRleENvbXBpbGVyKTsK
KworICAgIG1GcmFnbWVudENvbXBpbGVyID0gTlVMTDsKKyAgICBtVmVydGV4Q29tcGlsZXIgPSBO
VUxMOworCisgICAgU2hGaW5hbGl6ZSgpOworfQorCit2b2lkIFNoYWRlcjo6cGFyc2VWYXJ5aW5n
cygpCit7CisgICAgaWYgKG1IbHNsKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqaW5wdXQg
PSBzdHJzdHIobUhsc2wsICIvLyBWYXJ5aW5ncyIpICsgMTI7CisKKyAgICAgICAgd2hpbGUodHJ1
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2hhciB2YXJ5aW5nVHlwZVsyNTZdOworICAgICAg
ICAgICAgY2hhciB2YXJ5aW5nTmFtZVsyNTZdOworCisgICAgICAgICAgICBpbnQgbWF0Y2hlcyA9
IHNzY2FuZihpbnB1dCwgInN0YXRpYyAlMjU1cyAlMjU1cyIsIHZhcnlpbmdUeXBlLCB2YXJ5aW5n
TmFtZSk7CisKKyAgICAgICAgICAgIGlmIChtYXRjaGVzICE9IDIpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNoYXIg
KmFycmF5ID0gc3Ryc3RyKHZhcnlpbmdOYW1lLCAiWyIpOworICAgICAgICAgICAgaW50IHNpemUg
PSAxOworCisgICAgICAgICAgICBpZiAoYXJyYXkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgc2l6ZSA9IGF0b2koYXJyYXkgKyAxKTsKKyAgICAgICAgICAgICAgICAqYXJyYXkgPSAn
XDAnOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtVmFyeWluZ3MucHVzaF9iYWNrKFZh
cnlpbmcocGFyc2VUeXBlKHZhcnlpbmdUeXBlKSwgdmFyeWluZ05hbWUsIHNpemUsIGFycmF5ICE9
IE5VTEwpKTsKKworICAgICAgICAgICAgaW5wdXQgPSBzdHJzdHIoaW5wdXQsICI7IikgKyAyOwor
ICAgICAgICB9CisKKyAgICAgICAgbVVzZXNNdWx0aXBsZVJlbmRlclRhcmdldHMgPSBzdHJzdHIo
bUhsc2wsICJHTF9VU0VTX01SVCIpICE9IE5VTEw7CisgICAgICAgIG1Vc2VzRnJhZ0NvbG9yID0g
c3Ryc3RyKG1IbHNsLCAiR0xfVVNFU19GUkFHX0NPTE9SIikgIT0gTlVMTDsKKyAgICAgICAgbVVz
ZXNGcmFnRGF0YSA9IHN0cnN0cihtSGxzbCwgIkdMX1VTRVNfRlJBR19EQVRBIikgIT0gTlVMTDsK
KyAgICAgICAgbVVzZXNGcmFnQ29vcmQgPSBzdHJzdHIobUhsc2wsICJHTF9VU0VTX0ZSQUdfQ09P
UkQiKSAhPSBOVUxMOworICAgICAgICBtVXNlc0Zyb250RmFjaW5nID0gc3Ryc3RyKG1IbHNsLCAi
R0xfVVNFU19GUk9OVF9GQUNJTkciKSAhPSBOVUxMOworICAgICAgICBtVXNlc1BvaW50U2l6ZSA9
IHN0cnN0cihtSGxzbCwgIkdMX1VTRVNfUE9JTlRfU0laRSIpICE9IE5VTEw7CisgICAgICAgIG1V
c2VzUG9pbnRDb29yZCA9IHN0cnN0cihtSGxzbCwgIkdMX1VTRVNfUE9JTlRfQ09PUkQiKSAhPSBO
VUxMOworICAgICAgICBtVXNlc0RlcHRoUmFuZ2UgPSBzdHJzdHIobUhsc2wsICJHTF9VU0VTX0RF
UFRIX1JBTkdFIikgIT0gTlVMTDsKKyAgICAgICAgbVVzZXNGcmFnRGVwdGggPSBzdHJzdHIobUhs
c2wsICJHTF9VU0VTX0ZSQUdfREVQVEgiKSAhPSBOVUxMOworICAgIH0KK30KKwordm9pZCBTaGFk
ZXI6OnJlc2V0VmFyeWluZ3NSZWdpc3RlckFzc2lnbm1lbnQoKQoreworICAgIGZvciAoVmFyeWlu
Z0xpc3Q6Oml0ZXJhdG9yIHZhciA9IG1WYXJ5aW5ncy5iZWdpbigpOyB2YXIgIT0gbVZhcnlpbmdz
LmVuZCgpOyB2YXIrKykKKyAgICB7CisgICAgICAgIHZhci0+cmVnID0gLTE7CisgICAgICAgIHZh
ci0+Y29sID0gLTE7CisgICAgfQorfQorCisvLyBpbml0aWFsaXplL2NsZWFuIHVwIHByZXZpb3Vz
IHN0YXRlCit2b2lkIFNoYWRlcjo6dW5jb21waWxlKCkKK3sKKyAgICAvLyBzZXQgYnkgY29tcGls
ZVRvSExTTAorICAgIGRlbGV0ZVtdIG1IbHNsOworICAgIG1IbHNsID0gTlVMTDsKKyAgICBkZWxl
dGVbXSBtSW5mb0xvZzsKKyAgICBtSW5mb0xvZyA9IE5VTEw7CisKKyAgICAvLyBzZXQgYnkgcGFy
c2VWYXJ5aW5ncworICAgIG1WYXJ5aW5ncy5jbGVhcigpOworCisgICAgbVVzZXNNdWx0aXBsZVJl
bmRlclRhcmdldHMgPSBmYWxzZTsKKyAgICBtVXNlc0ZyYWdDb2xvciA9IGZhbHNlOworICAgIG1V
c2VzRnJhZ0RhdGEgPSBmYWxzZTsKKyAgICBtVXNlc0ZyYWdDb29yZCA9IGZhbHNlOworICAgIG1V
c2VzRnJvbnRGYWNpbmcgPSBmYWxzZTsKKyAgICBtVXNlc1BvaW50U2l6ZSA9IGZhbHNlOworICAg
IG1Vc2VzUG9pbnRDb29yZCA9IGZhbHNlOworICAgIG1Vc2VzRGVwdGhSYW5nZSA9IGZhbHNlOwor
ICAgIG1Vc2VzRnJhZ0RlcHRoID0gZmFsc2U7CisKKyAgICBtQWN0aXZlVW5pZm9ybXMuY2xlYXIo
KTsKK30KKwordm9pZCBTaGFkZXI6OmNvbXBpbGVUb0hMU0wodm9pZCAqY29tcGlsZXIpCit7Cisg
ICAgLy8gZW5zdXJlIHdlIGRvbid0IHBhc3MgYSBOVUxMIHNvdXJjZSB0byB0aGUgY29tcGlsZXIK
KyAgICBjb25zdCBjaGFyICpzb3VyY2UgPSAiXDAiOworICAgIGlmIChtU291cmNlKQorICAgIHsK
KyAgICAgICAgc291cmNlID0gbVNvdXJjZTsKKyAgICB9CisKKyAgICAvLyBlbnN1cmUgdGhlIGNv
bXBpbGVyIGlzIGxvYWRlZAorICAgIGluaXRpYWxpemVDb21waWxlcigpOworCisgICAgaW50IGNv
bXBpbGVPcHRpb25zID0gU0hfT0JKRUNUX0NPREU7CisgICAgc3RkOjpzdHJpbmcgc291cmNlUGF0
aDsKKyAgICBpZiAocGVyZkFjdGl2ZSgpKQorICAgIHsKKyAgICAgICAgc291cmNlUGF0aCA9IGdl
dFRlbXBQYXRoKCk7CisgICAgICAgIHdyaXRlRmlsZShzb3VyY2VQYXRoLmNfc3RyKCksIHNvdXJj
ZSwgc3RybGVuKHNvdXJjZSkpOworICAgICAgICBjb21waWxlT3B0aW9ucyB8PSBTSF9MSU5FX0RJ
UkVDVElWRVM7CisgICAgfQorCisgICAgaW50IHJlc3VsdDsKKyAgICBpZiAoc291cmNlUGF0aC5l
bXB0eSgpKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gU2hDb21waWxlKGNvbXBpbGVyLCAmc291
cmNlLCAxLCBjb21waWxlT3B0aW9ucyk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IGNvbnN0IGNoYXIqIHNvdXJjZVN0cmluZ3NbMl0gPQorICAgICAgICB7CisgICAgICAgICAgICBz
b3VyY2VQYXRoLmNfc3RyKCksCisgICAgICAgICAgICBzb3VyY2UKKyAgICAgICAgfTsKKworICAg
ICAgICByZXN1bHQgPSBTaENvbXBpbGUoY29tcGlsZXIsIHNvdXJjZVN0cmluZ3MsIDIsIGNvbXBp
bGVPcHRpb25zIHwgU0hfU09VUkNFX1BBVEgpOworICAgIH0KKworICAgIGlmIChyZXN1bHQpCisg
ICAgeworICAgICAgICBzaXplX3Qgb2JqQ29kZUxlbiA9IDA7CisgICAgICAgIFNoR2V0SW5mbyhj
b21waWxlciwgU0hfT0JKRUNUX0NPREVfTEVOR1RILCAmb2JqQ29kZUxlbik7CisgICAgICAgIG1I
bHNsID0gbmV3IGNoYXJbb2JqQ29kZUxlbl07CisgICAgICAgIFNoR2V0T2JqZWN0Q29kZShjb21w
aWxlciwgbUhsc2wpOworCisgICAgICAgIHZvaWQgKmFjdGl2ZVVuaWZvcm1zOworICAgICAgICBT
aEdldEluZm9Qb2ludGVyKGNvbXBpbGVyLCBTSF9BQ1RJVkVfVU5JRk9STVNfQVJSQVksICZhY3Rp
dmVVbmlmb3Jtcyk7CisgICAgICAgIG1BY3RpdmVVbmlmb3JtcyA9ICooc2g6OkFjdGl2ZVVuaWZv
cm1zKilhY3RpdmVVbmlmb3JtczsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc2l6
ZV90IGluZm9Mb2dMZW4gPSAwOworICAgICAgICBTaEdldEluZm8oY29tcGlsZXIsIFNIX0lORk9f
TE9HX0xFTkdUSCwgJmluZm9Mb2dMZW4pOworICAgICAgICBtSW5mb0xvZyA9IG5ldyBjaGFyW2lu
Zm9Mb2dMZW5dOworICAgICAgICBTaEdldEluZm9Mb2coY29tcGlsZXIsIG1JbmZvTG9nKTsKKwor
ICAgICAgICBUUkFDRSgiXG4lcyIsIG1JbmZvTG9nKTsKKyAgICB9Cit9CisKK0dMZW51bSBTaGFk
ZXI6OnBhcnNlVHlwZShjb25zdCBzdGQ6OnN0cmluZyAmdHlwZSkKK3sKKyAgICBpZiAodHlwZSA9
PSAiZmxvYXQiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOworICAgIH0KKyAgICBl
bHNlIGlmICh0eXBlID09ICJmbG9hdDIiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX0ZMT0FU
X1ZFQzI7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUgPT0gImZsb2F0MyIpCisgICAgeworICAg
ICAgICByZXR1cm4gR0xfRkxPQVRfVkVDMzsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSAi
ZmxvYXQ0IikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GTE9BVF9WRUM0OworICAgIH0KKyAg
ICBlbHNlIGlmICh0eXBlID09ICJmbG9hdDJ4MiIpCisgICAgeworICAgICAgICByZXR1cm4gR0xf
RkxPQVRfTUFUMjsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSAiZmxvYXQzeDMiKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEdMX0ZMT0FUX01BVDM7CisgICAgfQorICAgIGVsc2UgaWYgKHR5
cGUgPT0gImZsb2F0NHg0IikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GTE9BVF9NQVQ0Owor
ICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICByZXR1cm4gR0xfTk9ORTsKK30K
KworLy8gdHJ1ZSBpZiB2YXJ5aW5nIHggaGFzIGEgaGlnaGVyIHByaW9yaXR5IGluIHBhY2tpbmcg
dGhhbiB5Citib29sIFNoYWRlcjo6Y29tcGFyZVZhcnlpbmcoY29uc3QgVmFyeWluZyAmeCwgY29u
c3QgVmFyeWluZyAmeSkKK3sKKyAgICBpZih4LnR5cGUgPT0geS50eXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHguc2l6ZSA+IHkuc2l6ZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHgudHlwZSkK
KyAgICB7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6IHJldHVybiB0cnVlOworICAgICAgY2Fz
ZSBHTF9GTE9BVF9NQVQyOgorICAgICAgICBzd2l0Y2goeS50eXBlKQorICAgICAgICB7CisgICAg
ICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OiByZXR1cm4gZmFsc2U7CisgICAgICAgICAgY2FzZSBH
TF9GTE9BVF9NQVQyOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6
IHJldHVybiB0cnVlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzogcmV0dXJuIHRydWU7
CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMzOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBj
YXNlIEdMX0ZMT0FUX1ZFQzI6IHJldHVybiB0cnVlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKKyAgICAg
ICAgc3dpdGNoKHkudHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFU
NDogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjogcmV0dXJuIGZh
bHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDogcmV0dXJuIHRydWU7CisgICAgICAg
ICAgY2FzZSBHTF9GTE9BVF9NQVQzOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBjYXNlIEdMX0ZM
T0FUX1ZFQzM6IHJldHVybiB0cnVlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjogcmV0
dXJuIHRydWU7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVDogICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOgorICAgICAgICBzd2l0Y2goeS50eXBlKQorICAg
ICAgICB7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OiByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOiByZXR1cm4gZmFsc2U7CisgICAgICAgICAgY2FzZSBH
TF9GTE9BVF9WRUM0OiByZXR1cm4gZmFsc2U7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQz
OiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6IHJldHVybiB0cnVl
OworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjogcmV0dXJuIHRydWU7CisgICAgICAgICAg
Y2FzZSBHTF9GTE9BVDogICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBkZWZhdWx0OiBVTlJF
QUNIQUJMRSgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9GTE9B
VF9WRUMzOgorICAgICAgICBzd2l0Y2goeS50eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2Fz
ZSBHTF9GTE9BVF9NQVQ0OiByZXR1cm4gZmFsc2U7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9N
QVQyOiByZXR1cm4gZmFsc2U7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0OiByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOiByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgY2FzZSBHTF9GTE9BVF9WRUMzOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBjYXNlIEdM
X0ZMT0FUX1ZFQzI6IHJldHVybiB0cnVlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKKyAgICAgICAgc3dp
dGNoKHkudHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNDogcmV0
dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjogcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNh
c2UgR0xfRkxPQVRfTUFUMzogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRf
VkVDMzogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjogcmV0dXJu
IHRydWU7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVDogICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9GTE9BVDogcmV0dXJuIGZhbHNlOworICAgICAgZGVmYXVsdDogVU5SRUFD
SEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1ZlcnRleFNoYWRlcjo6
VmVydGV4U2hhZGVyKFJlc291cmNlTWFuYWdlciAqbWFuYWdlciwgY29uc3Qgcng6OlJlbmRlcmVy
ICpyZW5kZXJlciwgR0x1aW50IGhhbmRsZSkKKyAgICA6IFNoYWRlcihtYW5hZ2VyLCByZW5kZXJl
ciwgaGFuZGxlKQoreworfQorCitWZXJ0ZXhTaGFkZXI6On5WZXJ0ZXhTaGFkZXIoKQoreworfQor
CitHTGVudW0gVmVydGV4U2hhZGVyOjpnZXRUeXBlKCkKK3sKKyAgICByZXR1cm4gR0xfVkVSVEVY
X1NIQURFUjsKK30KKwordm9pZCBWZXJ0ZXhTaGFkZXI6OnVuY29tcGlsZSgpCit7CisgICAgU2hh
ZGVyOjp1bmNvbXBpbGUoKTsKKworICAgIC8vIHNldCBieSBQYXJzZUF0dHJpYnV0ZXMKKyAgICBt
QXR0cmlidXRlcy5jbGVhcigpOworfQorCit2b2lkIFZlcnRleFNoYWRlcjo6Y29tcGlsZSgpCit7
CisgICAgdW5jb21waWxlKCk7CisKKyAgICBjb21waWxlVG9ITFNMKG1WZXJ0ZXhDb21waWxlcik7
CisgICAgcGFyc2VBdHRyaWJ1dGVzKCk7CisgICAgcGFyc2VWYXJ5aW5ncygpOworfQorCitpbnQg
VmVydGV4U2hhZGVyOjpnZXRTZW1hbnRpY0luZGV4KGNvbnN0IHN0ZDo6c3RyaW5nICZhdHRyaWJ1
dGVOYW1lKQoreworICAgIGlmICghYXR0cmlidXRlTmFtZS5lbXB0eSgpKQorICAgIHsKKyAgICAg
ICAgaW50IHNlbWFudGljSW5kZXggPSAwOworICAgICAgICBmb3IgKEF0dHJpYnV0ZUFycmF5Ojpp
dGVyYXRvciBhdHRyaWJ1dGUgPSBtQXR0cmlidXRlcy5iZWdpbigpOyBhdHRyaWJ1dGUgIT0gbUF0
dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
YXR0cmlidXRlLT5uYW1lID09IGF0dHJpYnV0ZU5hbWUpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHNlbWFudGljSW5kZXg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHNlbWFudGljSW5kZXggKz0gVmFyaWFibGVSb3dDb3VudChhdHRyaWJ1dGUtPnR5cGUpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCit2b2lkIFZlcnRleFNoYWRl
cjo6cGFyc2VBdHRyaWJ1dGVzKCkKK3sKKyAgICBjb25zdCBjaGFyICpobHNsID0gZ2V0SExTTCgp
OworICAgIGlmIChobHNsKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqaW5wdXQgPSBzdHJz
dHIoaGxzbCwgIi8vIEF0dHJpYnV0ZXMiKSArIDE0OworCisgICAgICAgIHdoaWxlKHRydWUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNoYXIgYXR0cmlidXRlVHlwZVsyNTZdOworICAgICAgICAg
ICAgY2hhciBhdHRyaWJ1dGVOYW1lWzI1Nl07CisKKyAgICAgICAgICAgIGludCBtYXRjaGVzID0g
c3NjYW5mKGlucHV0LCAic3RhdGljICUyNTVzIF8lMjU1cyIsIGF0dHJpYnV0ZVR5cGUsIGF0dHJp
YnV0ZU5hbWUpOworCisgICAgICAgICAgICBpZiAobWF0Y2hlcyAhPSAyKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBt
QXR0cmlidXRlcy5wdXNoX2JhY2soQXR0cmlidXRlKHBhcnNlVHlwZShhdHRyaWJ1dGVUeXBlKSwg
YXR0cmlidXRlTmFtZSkpOworCisgICAgICAgICAgICBpbnB1dCA9IHN0cnN0cihpbnB1dCwgIjsi
KSArIDI7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0ZyYWdtZW50U2hhZGVyOjpGcmFnbWVudFNo
YWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsIGNvbnN0IHJ4OjpSZW5kZXJlciAqcmVuZGVy
ZXIsIEdMdWludCBoYW5kbGUpCisgICAgOiBTaGFkZXIobWFuYWdlciwgcmVuZGVyZXIsIGhhbmRs
ZSkKK3sKK30KKworRnJhZ21lbnRTaGFkZXI6On5GcmFnbWVudFNoYWRlcigpCit7Cit9CisKK0dM
ZW51bSBGcmFnbWVudFNoYWRlcjo6Z2V0VHlwZSgpCit7CisgICAgcmV0dXJuIEdMX0ZSQUdNRU5U
X1NIQURFUjsKK30KKwordm9pZCBGcmFnbWVudFNoYWRlcjo6Y29tcGlsZSgpCit7CisgICAgdW5j
b21waWxlKCk7CisKKyAgICBjb21waWxlVG9ITFNMKG1GcmFnbWVudENvbXBpbGVyKTsKKyAgICBw
YXJzZVZhcnlpbmdzKCk7CisgICAgbVZhcnlpbmdzLnNvcnQoY29tcGFyZVZhcnlpbmcpOworfQor
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9TaGFkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1NoYWRl
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9TaGFkZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODQgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIFNoYWRlci5oOiBEZWZpbmVzIHRoZSBhYnN0cmFjdCBnbDo6U2hhZGVyIGNsYXNz
IGFuZCBpdHMgY29uY3JldGUgZGVyaXZlZAorLy8gY2xhc3NlcyBWZXJ0ZXhTaGFkZXIgYW5kIEZy
YWdtZW50U2hhZGVyLiBJbXBsZW1lbnRzIEdMIHNoYWRlciBvYmplY3RzIGFuZAorLy8gcmVsYXRl
ZCBmdW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAyLjEwIHBhZ2UgMjQg
YW5kIHNlY3Rpb24KKy8vIDMuOCBwYWdlIDg0LgorCisjaWZuZGVmIExJQkdMRVNWMl9TSEFERVJf
SF8KKyNkZWZpbmUgTElCR0xFU1YyX1NIQURFUl9IXworCisjZGVmaW5lIEdMX0FQSUNBTEwKKyNp
bmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8bGlzdD4K
KyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJjb21waWxlci9Vbmlmb3JtLmgiCisjaW5j
bHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5k
ZXJlcjsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBSZXNvdXJjZU1hbmFnZXI7CisKK3N0
cnVjdCBWYXJ5aW5nCit7CisgICAgVmFyeWluZyhHTGVudW0gdHlwZSwgY29uc3Qgc3RkOjpzdHJp
bmcgJm5hbWUsIGludCBzaXplLCBib29sIGFycmF5KQorICAgICAgICA6IHR5cGUodHlwZSksIG5h
bWUobmFtZSksIHNpemUoc2l6ZSksIGFycmF5KGFycmF5KSwgcmVnKC0xKSwgY29sKC0xKQorICAg
IHsKKyAgICB9CisKKyAgICBHTGVudW0gdHlwZTsKKyAgICBzdGQ6OnN0cmluZyBuYW1lOworICAg
IGludCBzaXplOyAgIC8vIE51bWJlciBvZiAndHlwZScgZWxlbWVudHMKKyAgICBib29sIGFycmF5
OworCisgICAgaW50IHJlZzsgICAgLy8gRmlyc3QgdmFyeWluZyByZWdpc3RlciwgYXNzaWduZWQg
ZHVyaW5nIGxpbmsKKyAgICBpbnQgY29sOyAgICAvLyBGaXJzdCByZWdpc3RlciBlbGVtZW50LCBh
c3NpZ25lZCBkdXJpbmcgbGluaworfTsKKwordHlwZWRlZiBzdGQ6Omxpc3Q8VmFyeWluZz4gVmFy
eWluZ0xpc3Q7CisKK2NsYXNzIFNoYWRlcgoreworICAgIGZyaWVuZCBjbGFzcyBQcm9ncmFtQmlu
YXJ5OworCisgIHB1YmxpYzoKKyAgICBTaGFkZXIoUmVzb3VyY2VNYW5hZ2VyICptYW5hZ2VyLCBj
b25zdCByeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHVpbnQgaGFuZGxlKTsKKworICAgIHZpcnR1
YWwgflNoYWRlcigpOworCisgICAgdmlydHVhbCBHTGVudW0gZ2V0VHlwZSgpID0gMDsKKyAgICBH
THVpbnQgZ2V0SGFuZGxlKCkgY29uc3Q7CisKKyAgICB2b2lkIGRlbGV0ZVNvdXJjZSgpOworICAg
IHZvaWQgc2V0U291cmNlKEdMc2l6ZWkgY291bnQsIGNvbnN0IGNoYXIgKipzdHJpbmcsIGNvbnN0
IEdMaW50ICpsZW5ndGgpOworICAgIGludCBnZXRJbmZvTG9nTGVuZ3RoKCkgY29uc3Q7CisgICAg
dm9pZCBnZXRJbmZvTG9nKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpp
bmZvTG9nKTsKKyAgICBpbnQgZ2V0U291cmNlTGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCBnZXRT
b3VyY2UoR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1ZmZlcik7Cisg
ICAgaW50IGdldFRyYW5zbGF0ZWRTb3VyY2VMZW5ndGgoKSBjb25zdDsKKyAgICB2b2lkIGdldFRy
YW5zbGF0ZWRTb3VyY2UoR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1
ZmZlcik7CisgICAgY29uc3Qgc2g6OkFjdGl2ZVVuaWZvcm1zICZnZXRVbmlmb3JtcygpOworCisg
ICAgdmlydHVhbCB2b2lkIGNvbXBpbGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuY29tcGls
ZSgpOworICAgIGJvb2wgaXNDb21waWxlZCgpOworICAgIGNvbnN0IGNoYXIgKmdldEhMU0woKTsK
KworICAgIHZvaWQgYWRkUmVmKCk7CisgICAgdm9pZCByZWxlYXNlKCk7CisgICAgdW5zaWduZWQg
aW50IGdldFJlZkNvdW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0ZsYWdnZWRGb3JEZWxldGlvbigp
IGNvbnN0OworICAgIHZvaWQgZmxhZ0ZvckRlbGV0aW9uKCk7CisKKyAgICBzdGF0aWMgdm9pZCBy
ZWxlYXNlQ29tcGlsZXIoKTsKKworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBwYXJzZVZhcnlpbmdz
KCk7CisgICAgdm9pZCByZXNldFZhcnlpbmdzUmVnaXN0ZXJBc3NpZ25tZW50KCk7CisKKyAgICB2
b2lkIGNvbXBpbGVUb0hMU0wodm9pZCAqY29tcGlsZXIpOworCisgICAgdm9pZCBnZXRTb3VyY2VJ
bXBsKGNoYXIgKnNvdXJjZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIg
KmJ1ZmZlcik7CisKKyAgICBzdGF0aWMgR0xlbnVtIHBhcnNlVHlwZShjb25zdCBzdGQ6OnN0cmlu
ZyAmdHlwZSk7CisgICAgc3RhdGljIGJvb2wgY29tcGFyZVZhcnlpbmcoY29uc3QgVmFyeWluZyAm
eCwgY29uc3QgVmFyeWluZyAmeSk7CisKKyAgICBjb25zdCByeDo6UmVuZGVyZXIgKmNvbnN0IG1S
ZW5kZXJlcjsKKworICAgIFZhcnlpbmdMaXN0IG1WYXJ5aW5nczsKKworICAgIGJvb2wgbVVzZXNN
dWx0aXBsZVJlbmRlclRhcmdldHM7CisgICAgYm9vbCBtVXNlc0ZyYWdDb2xvcjsKKyAgICBib29s
IG1Vc2VzRnJhZ0RhdGE7CisgICAgYm9vbCBtVXNlc0ZyYWdDb29yZDsKKyAgICBib29sIG1Vc2Vz
RnJvbnRGYWNpbmc7CisgICAgYm9vbCBtVXNlc1BvaW50U2l6ZTsKKyAgICBib29sIG1Vc2VzUG9p
bnRDb29yZDsKKyAgICBib29sIG1Vc2VzRGVwdGhSYW5nZTsKKyAgICBib29sIG1Vc2VzRnJhZ0Rl
cHRoOworCisgICAgc3RhdGljIHZvaWQgKm1GcmFnbWVudENvbXBpbGVyOworICAgIHN0YXRpYyB2
b2lkICptVmVydGV4Q29tcGlsZXI7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FO
RF9BU1NJR04oU2hhZGVyKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbXBpbGVyKCk7CisKKyAg
ICBjb25zdCBHTHVpbnQgbUhhbmRsZTsKKyAgICB1bnNpZ25lZCBpbnQgbVJlZkNvdW50OyAgICAg
Ly8gTnVtYmVyIG9mIHByb2dyYW0gb2JqZWN0cyB0aGlzIHNoYWRlciBpcyBhdHRhY2hlZCB0bwor
ICAgIGJvb2wgbURlbGV0ZVN0YXR1czsgICAgICAgICAvLyBGbGFnIHRvIGluZGljYXRlIHRoYXQg
dGhlIHNoYWRlciBjYW4gYmUgZGVsZXRlZCB3aGVuIG5vIGxvbmdlciBpbiB1c2UKKworICAgIGNo
YXIgKm1Tb3VyY2U7CisgICAgY2hhciAqbUhsc2w7CisgICAgY2hhciAqbUluZm9Mb2c7CisgICAg
c2g6OkFjdGl2ZVVuaWZvcm1zIG1BY3RpdmVVbmlmb3JtczsKKworICAgIFJlc291cmNlTWFuYWdl
ciAqbVJlc291cmNlTWFuYWdlcjsKK307CisKK3N0cnVjdCBBdHRyaWJ1dGUKK3sKKyAgICBBdHRy
aWJ1dGUoKSA6IHR5cGUoR0xfTk9ORSksIG5hbWUoIiIpCisgICAgeworICAgIH0KKworICAgIEF0
dHJpYnV0ZShHTGVudW0gdHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIDogdHlwZSh0eXBl
KSwgbmFtZShuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBHTGVudW0gdHlwZTsKKyAgICBzdGQ6
OnN0cmluZyBuYW1lOworfTsKKwordHlwZWRlZiBzdGQ6OnZlY3RvcjxBdHRyaWJ1dGU+IEF0dHJp
YnV0ZUFycmF5OworCitjbGFzcyBWZXJ0ZXhTaGFkZXIgOiBwdWJsaWMgU2hhZGVyCit7CisgICAg
ZnJpZW5kIGNsYXNzIFByb2dyYW1CaW5hcnk7CisKKyAgcHVibGljOgorICAgIFZlcnRleFNoYWRl
cihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsIGNvbnN0IHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIs
IEdMdWludCBoYW5kbGUpOworCisgICAgflZlcnRleFNoYWRlcigpOworCisgICAgdmlydHVhbCBH
TGVudW0gZ2V0VHlwZSgpOworICAgIHZpcnR1YWwgdm9pZCBjb21waWxlKCk7CisgICAgdmlydHVh
bCB2b2lkIHVuY29tcGlsZSgpOworICAgIGludCBnZXRTZW1hbnRpY0luZGV4KGNvbnN0IHN0ZDo6
c3RyaW5nICZhdHRyaWJ1dGVOYW1lKTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihWZXJ0ZXhTaGFkZXIpOworCisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZXMoKTsK
KworICAgIEF0dHJpYnV0ZUFycmF5IG1BdHRyaWJ1dGVzOworfTsKKworY2xhc3MgRnJhZ21lbnRT
aGFkZXIgOiBwdWJsaWMgU2hhZGVyCit7CisgIHB1YmxpYzoKKyAgICBGcmFnbWVudFNoYWRlcihS
ZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsY29uc3Qgcng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1
aW50IGhhbmRsZSk7CisKKyAgICB+RnJhZ21lbnRTaGFkZXIoKTsKKworICAgIHZpcnR1YWwgR0xl
bnVtIGdldFR5cGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZSgpOworCisgIHByaXZhdGU6
CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEZyYWdtZW50U2hhZGVyKTsKK307Cit9CisK
KyNlbmRpZiAgIC8vIExJQkdMRVNWMl9TSEFERVJfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTQ5NSBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisvLyBUZXh0dXJlLmNwcDogSW1wbGVtZW50cyB0aGUgZ2w6OlRleHR1
cmUgY2xhc3MgYW5kIGl0cyBkZXJpdmVkIGNsYXNzZXMKKy8vIFRleHR1cmUyRCBhbmQgVGV4dHVy
ZUN1YmVNYXAuIEltcGxlbWVudHMgR0wgdGV4dHVyZSBvYmplY3RzIGFuZCByZWxhdGVkCisvLyBm
dW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAzLjcgcGFnZSA2My4KKwor
I2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFp
bi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvQmxpdC5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvSW1hZ2UuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UuaCIKKyNpbmNsdWRl
ICJsaWJFR0wvU3VyZmFjZS5oIgorCituYW1lc3BhY2UgZ2wKK3sKKworVGV4dHVyZTo6VGV4dHVy
ZShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHVpbnQgaWQpIDogUmVmQ291bnRPYmplY3QoaWQp
Cit7CisgICAgbVJlbmRlcmVyID0gcmVuZGVyZXI7CisKKyAgICBtU2FtcGxlclN0YXRlLm1pbkZp
bHRlciA9IEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUjsKKyAgICBtU2FtcGxlclN0YXRlLm1hZ0Zp
bHRlciA9IEdMX0xJTkVBUjsKKyAgICBtU2FtcGxlclN0YXRlLndyYXBTID0gR0xfUkVQRUFUOwor
ICAgIG1TYW1wbGVyU3RhdGUud3JhcFQgPSBHTF9SRVBFQVQ7CisgICAgbVNhbXBsZXJTdGF0ZS5t
YXhBbmlzb3Ryb3B5ID0gMS4wZjsKKyAgICBtU2FtcGxlclN0YXRlLmxvZE9mZnNldCA9IDA7Cisg
ICAgbVVzYWdlID0gR0xfTk9ORTsKKyAgICAKKyAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworCisg
ICAgbUltbXV0YWJsZSA9IGZhbHNlOworfQorCitUZXh0dXJlOjp+VGV4dHVyZSgpCit7Cit9CisK
Ky8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzZnVsIGZpbHRlciBzdGF0ZSB1cGRhdGUgKHZhbGlk
IGVudW0gcGFyYW1ldGVyKQorYm9vbCBUZXh0dXJlOjpzZXRNaW5GaWx0ZXIoR0xlbnVtIGZpbHRl
cikKK3sKKyAgICBzd2l0Y2ggKGZpbHRlcikKKyAgICB7CisgICAgICBjYXNlIEdMX05FQVJFU1Q6
CisgICAgICBjYXNlIEdMX0xJTkVBUjoKKyAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBfTkVB
UkVTVDoKKyAgICAgIGNhc2UgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUOgorICAgICAgY2FzZSBH
TF9ORUFSRVNUX01JUE1BUF9MSU5FQVI6CisgICAgICBjYXNlIEdMX0xJTkVBUl9NSVBNQVBfTElO
RUFSOgorICAgICAgICBtU2FtcGxlclN0YXRlLm1pbkZpbHRlciA9IGZpbHRlcjsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCisvLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzc2Z1bCBmaWx0ZXIgc3RhdGUgdXBkYXRl
ICh2YWxpZCBlbnVtIHBhcmFtZXRlcikKK2Jvb2wgVGV4dHVyZTo6c2V0TWFnRmlsdGVyKEdMZW51
bSBmaWx0ZXIpCit7CisgICAgc3dpdGNoIChmaWx0ZXIpCisgICAgeworICAgICAgY2FzZSBHTF9O
RUFSRVNUOgorICAgICAgY2FzZSBHTF9MSU5FQVI6CisgICAgICAgIG1TYW1wbGVyU3RhdGUubWFn
RmlsdGVyID0gZmlsdGVyOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBvbiBzdWNj
ZXNzZnVsIHdyYXAgc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVtIHBhcmFtZXRlcikKK2Jvb2wgVGV4
dHVyZTo6c2V0V3JhcFMoR0xlbnVtIHdyYXApCit7CisgICAgc3dpdGNoICh3cmFwKQorICAgIHsK
KyAgICAgIGNhc2UgR0xfUkVQRUFUOgorICAgICAgY2FzZSBHTF9DTEFNUF9UT19FREdFOgorICAg
ICAgY2FzZSBHTF9NSVJST1JFRF9SRVBFQVQ6CisgICAgICAgIG1TYW1wbGVyU3RhdGUud3JhcFMg
PSB3cmFwOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzZnVsIHdy
YXAgc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVtIHBhcmFtZXRlcikKK2Jvb2wgVGV4dHVyZTo6c2V0
V3JhcFQoR0xlbnVtIHdyYXApCit7CisgICAgc3dpdGNoICh3cmFwKQorICAgIHsKKyAgICAgIGNh
c2UgR0xfUkVQRUFUOgorICAgICAgY2FzZSBHTF9DTEFNUF9UT19FREdFOgorICAgICAgY2FzZSBH
TF9NSVJST1JFRF9SRVBFQVQ6CisgICAgICAgIG1TYW1wbGVyU3RhdGUud3JhcFQgPSB3cmFwOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzZnVsIG1heCBhbmlzb3Ry
b3B5IHVwZGF0ZSAodmFsaWQgYW5pc290cm9weSB2YWx1ZSkKK2Jvb2wgVGV4dHVyZTo6c2V0TWF4
QW5pc290cm9weShmbG9hdCB0ZXh0dXJlTWF4QW5pc290cm9weSwgZmxvYXQgY29udGV4dE1heEFu
aXNvdHJvcHkpCit7CisgICAgdGV4dHVyZU1heEFuaXNvdHJvcHkgPSBzdGQ6Om1pbih0ZXh0dXJl
TWF4QW5pc290cm9weSwgY29udGV4dE1heEFuaXNvdHJvcHkpOworICAgIGlmICh0ZXh0dXJlTWF4
QW5pc290cm9weSA8IDEuMGYpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgbVNhbXBsZXJTdGF0ZS5tYXhBbmlzb3Ryb3B5ID0gdGV4dHVyZU1heEFuaXNvdHJvcHk7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3NmdWwg
dXNhZ2Ugc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVtIHBhcmFtZXRlcikKK2Jvb2wgVGV4dHVyZTo6
c2V0VXNhZ2UoR0xlbnVtIHVzYWdlKQoreworICAgIHN3aXRjaCAodXNhZ2UpCisgICAgeworICAg
ICAgY2FzZSBHTF9OT05FOgorICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FO
R0xFOgorICAgICAgICBtVXNhZ2UgPSB1c2FnZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitHTGVudW0gVGV4
dHVyZTo6Z2V0TWluRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBsZXJTdGF0ZS5t
aW5GaWx0ZXI7Cit9CisKK0dMZW51bSBUZXh0dXJlOjpnZXRNYWdGaWx0ZXIoKSBjb25zdAorewor
ICAgIHJldHVybiBtU2FtcGxlclN0YXRlLm1hZ0ZpbHRlcjsKK30KKworR0xlbnVtIFRleHR1cmU6
OmdldFdyYXBTKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBsZXJTdGF0ZS53cmFwUzsKK30K
KworR0xlbnVtIFRleHR1cmU6OmdldFdyYXBUKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBs
ZXJTdGF0ZS53cmFwVDsKK30KKworZmxvYXQgVGV4dHVyZTo6Z2V0TWF4QW5pc290cm9weSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1TYW1wbGVyU3RhdGUubWF4QW5pc290cm9weTsKK30KKworaW50
IFRleHR1cmU6OmdldExvZE9mZnNldCgpCit7CisgICAgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJm
YWNlICp0ZXh0dXJlID0gZ2V0U3RvcmFnZShmYWxzZSk7CisgICAgcmV0dXJuIHRleHR1cmUgPyB0
ZXh0dXJlLT5nZXRMb2RPZmZzZXQoKSA6IDA7Cit9CisKK3ZvaWQgVGV4dHVyZTo6Z2V0U2FtcGxl
clN0YXRlKFNhbXBsZXJTdGF0ZSAqc2FtcGxlcikKK3sKKyAgICAqc2FtcGxlciA9IG1TYW1wbGVy
U3RhdGU7CisgICAgc2FtcGxlci0+bG9kT2Zmc2V0ID0gZ2V0TG9kT2Zmc2V0KCk7Cit9CisKK0dM
ZW51bSBUZXh0dXJlOjpnZXRVc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Vc2FnZTsKK30K
KworYm9vbCBUZXh0dXJlOjppc01pcG1hcEZpbHRlcmVkKCkgY29uc3QKK3sKKyAgICBzd2l0Y2gg
KG1TYW1wbGVyU3RhdGUubWluRmlsdGVyKQorICAgIHsKKyAgICAgIGNhc2UgR0xfTkVBUkVTVDoK
KyAgICAgIGNhc2UgR0xfTElORUFSOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICBjYXNl
IEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1Q6CisgICAgICBjYXNlIEdMX0xJTkVBUl9NSVBNQVBf
TkVBUkVTVDoKKyAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSOgorICAgICAgY2Fz
ZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICBk
ZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
Cit2b2lkIFRleHR1cmU6OnNldEltYWdlKEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9p
ZCAqcGl4ZWxzLCByeDo6SW1hZ2UgKmltYWdlKQoreworICAgIGlmIChwaXhlbHMgIT0gTlVMTCkK
KyAgICB7CisgICAgICAgIGltYWdlLT5sb2FkRGF0YSgwLCAwLCBpbWFnZS0+Z2V0V2lkdGgoKSwg
aW1hZ2UtPmdldEhlaWdodCgpLCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscyk7CisgICAgICAgIG1E
aXJ0eUltYWdlcyA9IHRydWU7CisgICAgfQorfQorCit2b2lkIFRleHR1cmU6OnNldENvbXByZXNz
ZWRJbWFnZShHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzLCByeDo6SW1hZ2Ug
KmltYWdlKQoreworICAgIGlmIChwaXhlbHMgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIGltYWdl
LT5sb2FkQ29tcHJlc3NlZERhdGEoMCwgMCwgaW1hZ2UtPmdldFdpZHRoKCksIGltYWdlLT5nZXRI
ZWlnaHQoKSwgcGl4ZWxzKTsKKyAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKKyAgICB9Cit9
CisKK2Jvb2wgVGV4dHVyZTo6c3ViSW1hZ2UoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscywgcng6OkltYWdlICpp
bWFnZSkKK3sKKyAgICBpZiAocGl4ZWxzICE9IE5VTEwpCisgICAgeworICAgICAgICBpbWFnZS0+
bG9hZERhdGEoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgdW5wYWNrQWxpZ25tZW50
LCBwaXhlbHMpOworICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFRleHR1cmU6OnN1YkltYWdlQ29tcHJlc3NlZChHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xl
bnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscywgcng6Oklt
YWdlICppbWFnZSkKK3sKKyAgICBpZiAocGl4ZWxzICE9IE5VTEwpCisgICAgeworICAgICAgICBp
bWFnZS0+bG9hZENvbXByZXNzZWREYXRhKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IHBpeGVscyk7CisgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3J4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZSAqVGV4dHVyZTo6Z2V0
TmF0aXZlVGV4dHVyZSgpCit7CisgICAgLy8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHRleHR1cmUg
aXMgY3JlYXRlZAorCisgICAgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlICpzdG9yYWdlID0g
Z2V0U3RvcmFnZShmYWxzZSk7CisgICAgaWYgKHN0b3JhZ2UpCisgICAgeworICAgICAgICB1cGRh
dGVUZXh0dXJlKCk7CisgICAgfQorCisgICAgcmV0dXJuIHN0b3JhZ2U7Cit9CisKK2Jvb2wgVGV4
dHVyZTo6aGFzRGlydHlJbWFnZXMoKSBjb25zdAoreworICAgIHJldHVybiBtRGlydHlJbWFnZXM7
Cit9CisKK3ZvaWQgVGV4dHVyZTo6cmVzZXREaXJ0eSgpCit7CisgICAgbURpcnR5SW1hZ2VzID0g
ZmFsc2U7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0dXJlOjpnZXRUZXh0dXJlU2VyaWFsKCkKK3sK
KyAgICByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UgKnRleHR1cmUgPSBnZXRTdG9yYWdlKGZh
bHNlKTsKKyAgICByZXR1cm4gdGV4dHVyZSA/IHRleHR1cmUtPmdldFRleHR1cmVTZXJpYWwoKSA6
IDA7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0dXJlOjpnZXRSZW5kZXJUYXJnZXRTZXJpYWwoR0xl
bnVtIHRhcmdldCkKK3sKKyAgICByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UgKnRleHR1cmUg
PSBnZXRTdG9yYWdlKHRydWUpOworICAgIHJldHVybiB0ZXh0dXJlID8gdGV4dHVyZS0+Z2V0UmVu
ZGVyVGFyZ2V0U2VyaWFsKHRhcmdldCkgOiAwOworfQorCitib29sIFRleHR1cmU6OmlzSW1tdXRh
YmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUltbXV0YWJsZTsKK30KKworR0xpbnQgVGV4dHVy
ZTo6Y3JlYXRpb25MZXZlbHMoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpIGNvbnN0Cit7
CisgICAgaWYgKChpc1BvdzIod2lkdGgpICYmIGlzUG93MihoZWlnaHQpKSB8fCBtUmVuZGVyZXIt
PmdldE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KCkpCisgICAgeworICAgICAgICByZXR1cm4gMDsg
ICAvLyBNYXhpbXVtIG51bWJlciBvZiBsZXZlbHMKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgLy8gT3BlbkdMIEVTIDIuMCB3aXRob3V0IEdMX09FU190ZXh0dXJlX25wb3QgZG9lcyBu
b3QgcGVybWl0IE5QT1QgbWlwbWFwcy4KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCitH
TGludCBUZXh0dXJlOjpjcmVhdGlvbkxldmVscyhHTHNpemVpIHNpemUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGNyZWF0aW9uTGV2ZWxzKHNpemUsIHNpemUpOworfQorCitUZXh0dXJlMkQ6OlRleHR1
cmUyRChyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHVpbnQgaWQpIDogVGV4dHVyZShyZW5kZXJl
ciwgaWQpCit7CisgICAgbVRleFN0b3JhZ2UgPSBOVUxMOworICAgIG1TdXJmYWNlID0gTlVMTDsK
KyAgICBtQ29sb3JidWZmZXJQcm94eSA9IE5VTEw7CisgICAgbVByb3h5UmVmcyA9IDA7CisKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsg
KytpKQorICAgIHsKKyAgICAgICAgbUltYWdlQXJyYXlbaV0gPSByZW5kZXJlci0+Y3JlYXRlSW1h
Z2UoKTsKKyAgICB9Cit9CisKK1RleHR1cmUyRDo6flRleHR1cmUyRCgpCit7CisgICAgbUNvbG9y
YnVmZmVyUHJveHkgPSBOVUxMOworCisgICAgZGVsZXRlIG1UZXhTdG9yYWdlOworICAgIG1UZXhT
dG9yYWdlID0gTlVMTDsKKyAgICAKKyAgICBpZiAobVN1cmZhY2UpCisgICAgeworICAgICAgICBt
U3VyZmFjZS0+c2V0Qm91bmRUZXh0dXJlKE5VTEwpOworICAgICAgICBtU3VyZmFjZSA9IE5VTEw7
CisgICAgfQorCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVY
VFVSRV9MRVZFTFM7ICsraSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtSW1hZ2VBcnJheVtpXTsK
KyAgICB9Cit9CisKKy8vIFdlIG5lZWQgdG8gbWFpbnRhaW4gYSBjb3VudCBvZiByZWZlcmVuY2Vz
IHRvIHJlbmRlcmJ1ZmZlcnMgYWN0aW5nIGFzIAorLy8gcHJveGllcyBmb3IgdGhpcyB0ZXh0dXJl
LCBzbyB0aGF0IHdlIGRvIG5vdCBhdHRlbXB0IHRvIHVzZSBhIHBvaW50ZXIgCisvLyB0byBhIHJl
bmRlcmJ1ZmZlciBwcm94eSB3aGljaCBoYXMgYmVlbiBkZWxldGVkLgordm9pZCBUZXh0dXJlMkQ6
OmFkZFByb3h5UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCit7CisgICAgbVByb3h5UmVm
cysrOworfQorCit2b2lkIFRleHR1cmUyRDo6cmVsZWFzZVByb3h5KGNvbnN0IFJlbmRlcmJ1ZmZl
ciAqcHJveHkpCit7CisgICAgaWYgKG1Qcm94eVJlZnMgPiAwKQorICAgICAgICBtUHJveHlSZWZz
LS07CisKKyAgICBpZiAobVByb3h5UmVmcyA9PSAwKQorICAgICAgICBtQ29sb3JidWZmZXJQcm94
eSA9IE5VTEw7Cit9CisKK0dMZW51bSBUZXh0dXJlMkQ6OmdldFRhcmdldCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEdMX1RFWFRVUkVfMkQ7Cit9CisKK0dMc2l6ZWkgVGV4dHVyZTJEOjpnZXRXaWR0
aChHTGludCBsZXZlbCkgY29uc3QKK3sKKyAgICBpZiAobGV2ZWwgPCBJTVBMRU1FTlRBVElPTl9N
QVhfVEVYVFVSRV9MRVZFTFMpCisgICAgICAgIHJldHVybiBtSW1hZ2VBcnJheVtsZXZlbF0tPmdl
dFdpZHRoKCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKworR0xzaXplaSBUZXh0
dXJlMkQ6OmdldEhlaWdodChHTGludCBsZXZlbCkgY29uc3QKK3sKKyAgICBpZiAobGV2ZWwgPCBJ
TVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCisgICAgICAgIHJldHVybiBtSW1hZ2VB
cnJheVtsZXZlbF0tPmdldEhlaWdodCgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDA7Cit9
CisKK0dMZW51bSBUZXh0dXJlMkQ6OmdldEludGVybmFsRm9ybWF0KEdMaW50IGxldmVsKSBjb25z
dAoreworICAgIGlmIChsZXZlbCA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykK
KyAgICAgICAgcmV0dXJuIG1JbWFnZUFycmF5W2xldmVsXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsK
KyAgICBlbHNlCisgICAgICAgIHJldHVybiBHTF9OT05FOworfQorCitHTGVudW0gVGV4dHVyZTJE
OjpnZXRBY3R1YWxGb3JtYXQoR0xpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAgaWYgKGxldmVsIDwg
SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQorICAgICAgICByZXR1cm4gbUltYWdl
QXJyYXlbbGV2ZWxdLT5nZXRBY3R1YWxGb3JtYXQoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVy
biBEM0RGTVRfVU5LTk9XTjsKK30KKwordm9pZCBUZXh0dXJlMkQ6OnJlZGVmaW5lSW1hZ2UoR0xp
bnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCkKK3sKKyAgICByZWxlYXNlVGV4SW1hZ2UoKTsKKworICAgIC8vIElmIHRoZXJlIGN1cnJl
bnRseSBpcyBhIGNvcnJlc3BvbmRpbmcgc3RvcmFnZSB0ZXh0dXJlIGltYWdlLCBpdCBoYXMgdGhl
c2UgcGFyYW1ldGVycworICAgIGNvbnN0IGludCBzdG9yYWdlV2lkdGggPSBzdGQ6Om1heCgxLCBt
SW1hZ2VBcnJheVswXS0+Z2V0V2lkdGgoKSA+PiBsZXZlbCk7CisgICAgY29uc3QgaW50IHN0b3Jh
Z2VIZWlnaHQgPSBzdGQ6Om1heCgxLCBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCkgPj4gbGV2
ZWwpOworICAgIGNvbnN0IGludCBzdG9yYWdlRm9ybWF0ID0gbUltYWdlQXJyYXlbMF0tPmdldElu
dGVybmFsRm9ybWF0KCk7CisKKyAgICBtSW1hZ2VBcnJheVtsZXZlbF0tPnJlZGVmaW5lKG1SZW5k
ZXJlciwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGZhbHNlKTsKKworICAgIGlmICht
VGV4U3RvcmFnZSkKKyAgICB7CisgICAgICAgIGNvbnN0IGludCBzdG9yYWdlTGV2ZWxzID0gbVRl
eFN0b3JhZ2UtPmxldmVsQ291bnQoKTsKKyAgICAgICAgCisgICAgICAgIGlmICgobGV2ZWwgPj0g
c3RvcmFnZUxldmVscyAmJiBzdG9yYWdlTGV2ZWxzICE9IDApIHx8CisgICAgICAgICAgICB3aWR0
aCAhPSBzdG9yYWdlV2lkdGggfHwKKyAgICAgICAgICAgIGhlaWdodCAhPSBzdG9yYWdlSGVpZ2h0
IHx8CisgICAgICAgICAgICBpbnRlcm5hbGZvcm1hdCAhPSBzdG9yYWdlRm9ybWF0KSAgIC8vIERp
c2NhcmQgbWlzbWF0Y2hlZCBzdG9yYWdlCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBpKyspCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbaV0tPm1hcmtEaXJ0eSgpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkZWxldGUgbVRleFN0b3JhZ2U7CisgICAgICAg
ICAgICBtVGV4U3RvcmFnZSA9IE5VTEw7CisgICAgICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVl
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRleHR1cmUyRDo6c2V0SW1hZ2UoR0xpbnQg
bGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpCit7Cisg
ICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQgPSBDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3Jt
YXQsIHR5cGUpOworICAgIHJlZGVmaW5lSW1hZ2UobGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0KTsKKworICAgIFRleHR1cmU6OnNldEltYWdlKHVucGFja0FsaWdubWVudCwgcGl4
ZWxzLCBtSW1hZ2VBcnJheVtsZXZlbF0pOworfQorCit2b2lkIFRleHR1cmUyRDo6YmluZFRleElt
YWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKK3sKKyAgICByZWxlYXNlVGV4SW1hZ2UoKTsKKwor
ICAgIEdMaW50IGludGVybmFsZm9ybWF0ID0gc3VyZmFjZS0+Z2V0Rm9ybWF0KCk7CisKKyAgICBt
SW1hZ2VBcnJheVswXS0+cmVkZWZpbmUobVJlbmRlcmVyLCBpbnRlcm5hbGZvcm1hdCwgc3VyZmFj
ZS0+Z2V0V2lkdGgoKSwgc3VyZmFjZS0+Z2V0SGVpZ2h0KCksIHRydWUpOworCisgICAgZGVsZXRl
IG1UZXhTdG9yYWdlOworICAgIG1UZXhTdG9yYWdlID0gbmV3IHJ4OjpUZXh0dXJlU3RvcmFnZUlu
dGVyZmFjZTJEKG1SZW5kZXJlciwgc3VyZmFjZS0+Z2V0U3dhcENoYWluKCkpOworCisgICAgbURp
cnR5SW1hZ2VzID0gdHJ1ZTsKKyAgICBtU3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbVN1cmZhY2Ut
PnNldEJvdW5kVGV4dHVyZSh0aGlzKTsKK30KKwordm9pZCBUZXh0dXJlMkQ6OnJlbGVhc2VUZXhJ
bWFnZSgpCit7CisgICAgaWYgKG1TdXJmYWNlKQorICAgIHsKKyAgICAgICAgbVN1cmZhY2UtPnNl
dEJvdW5kVGV4dHVyZShOVUxMKTsKKyAgICAgICAgbVN1cmZhY2UgPSBOVUxMOworCisgICAgICAg
IGlmIChtVGV4U3RvcmFnZSkKKyAgICAgICAgeworICAgICAgICAgICAgZGVsZXRlIG1UZXhTdG9y
YWdlOworICAgICAgICAgICAgbVRleFN0b3JhZ2UgPSBOVUxMOworICAgICAgICB9CisKKyAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7
IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgbUltYWdlQXJyYXlbaV0tPnJlZGVmaW5lKG1S
ZW5kZXJlciwgR0xfTk9ORSwgMCwgMCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgVGV4dHVyZTJEOjpzZXRDb21wcmVzc2VkSW1hZ2UoR0xpbnQgbGV2ZWwsIEdMZW51bSBmb3Jt
YXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29u
c3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIC8vIGNvbXByZXNzZWQgZm9ybWF0cyBkb24ndCBoYXZl
IHNlcGFyYXRlIHNpemVkIGludGVybmFsIGZvcm1hdHMtLSB3ZSBjYW4ganVzdCB1c2UgdGhlIGNv
bXByZXNzZWQgZm9ybWF0IGRpcmVjdGx5CisgICAgcmVkZWZpbmVJbWFnZShsZXZlbCwgZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIFRleHR1cmU6OnNldENvbXByZXNzZWRJbWFnZShpbWFn
ZVNpemUsIHBpeGVscywgbUltYWdlQXJyYXlbbGV2ZWxdKTsKK30KKwordm9pZCBUZXh0dXJlMkQ6
OmNvbW1pdFJlY3QoR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIGlmIChsZXZlbCA8IGxldmVsQ291
bnQoKSkKKyAgICB7CisgICAgICAgIHJ4OjpJbWFnZSAqaW1hZ2UgPSBtSW1hZ2VBcnJheVtsZXZl
bF07CisgICAgICAgIGlmIChpbWFnZS0+dXBkYXRlU3VyZmFjZShtVGV4U3RvcmFnZSwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpKQorICAgICAgICB7CisgICAgICAgICAg
ICBpbWFnZS0+bWFya0NsZWFuKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVy
ZTJEOjpzdWJJbWFnZShHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscykKK3sKKyAgICBpZiAo
VGV4dHVyZTo6c3ViSW1hZ2UoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscywgbUltYWdlQXJyYXlbbGV2ZWxdKSkKKyAg
ICB7CisgICAgICAgIGNvbW1pdFJlY3QobGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQpOworICAgIH0KK30KKwordm9pZCBUZXh0dXJlMkQ6OnN1YkltYWdlQ29tcHJlc3NlZChH
TGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2
b2lkICpwaXhlbHMpCit7CisgICAgaWYgKFRleHR1cmU6OnN1YkltYWdlQ29tcHJlc3NlZCh4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgcGl4ZWxzLCBt
SW1hZ2VBcnJheVtsZXZlbF0pKQorICAgIHsKKyAgICAgICAgY29tbWl0UmVjdChsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorfQorCit2b2lkIFRleHR1cmUy
RDo6Y29weUltYWdlKEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTGludCB4LCBHTGludCB5
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgRnJhbWVidWZmZXIgKnNvdXJjZSkKK3sK
KyAgICBHTGludCBpbnRlcm5hbGZvcm1hdCA9IENvbnZlcnRTaXplZEludGVybmFsRm9ybWF0KGZv
cm1hdCwgR0xfVU5TSUdORURfQllURSk7CisgICAgcmVkZWZpbmVJbWFnZShsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworCisgICAgaWYgKCFtSW1hZ2VBcnJheVtsZXZlbF0t
PmlzUmVuZGVyYWJsZUZvcm1hdCgpKQorICAgIHsKKyAgICAgICAgbUltYWdlQXJyYXlbbGV2ZWxd
LT5jb3B5KDAsIDAsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZSk7CisgICAgICAgIG1EaXJ0
eUltYWdlcyA9IHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmICghbVRl
eFN0b3JhZ2UgfHwgIW1UZXhTdG9yYWdlLT5pc1JlbmRlclRhcmdldCgpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb252ZXJ0VG9SZW5kZXJUYXJnZXQoKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgbUltYWdlQXJyYXlbbGV2ZWxdLT5tYXJrQ2xlYW4oKTsKKworICAgICAgICBpZiAo
d2lkdGggIT0gMCAmJiBoZWlnaHQgIT0gMCAmJiBsZXZlbCA8IGxldmVsQ291bnQoKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgZ2w6OlJlY3RhbmdsZSBzb3VyY2VSZWN0OworICAgICAgICAgICAg
c291cmNlUmVjdC54ID0geDsKKyAgICAgICAgICAgIHNvdXJjZVJlY3Qud2lkdGggPSB3aWR0aDsK
KyAgICAgICAgICAgIHNvdXJjZVJlY3QueSA9IHk7CisgICAgICAgICAgICBzb3VyY2VSZWN0Lmhl
aWdodCA9IGhlaWdodDsKKworICAgICAgICAgICAgbVJlbmRlcmVyLT5jb3B5SW1hZ2Uoc291cmNl
LCBzb3VyY2VSZWN0LCBmb3JtYXQsIDAsIDAsIG1UZXhTdG9yYWdlLCBsZXZlbCk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZTJEOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdl
dCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdM
aW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZlciAqc291cmNl
KQoreworICAgIGlmICh4b2Zmc2V0ICsgd2lkdGggPiBtSW1hZ2VBcnJheVtsZXZlbF0tPmdldFdp
ZHRoKCkgfHwgeW9mZnNldCArIGhlaWdodCA+IG1JbWFnZUFycmF5W2xldmVsXS0+Z2V0SGVpZ2h0
KCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwor
ICAgIH0KKworICAgIGlmICghbUltYWdlQXJyYXlbbGV2ZWxdLT5pc1JlbmRlcmFibGVGb3JtYXQo
KSB8fCAoIW1UZXhTdG9yYWdlICYmICFpc1NhbXBsZXJDb21wbGV0ZSgpKSkKKyAgICB7CisgICAg
ICAgIG1JbWFnZUFycmF5W2xldmVsXS0+Y29weSh4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBzb3VyY2UpOworICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoIW1UZXhTdG9yYWdlIHx8ICFtVGV4U3RvcmFn
ZS0+aXNSZW5kZXJUYXJnZXQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udmVydFRvUmVu
ZGVyVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVwZGF0ZVRleHR1cmUo
KTsKKworICAgICAgICBpZiAobGV2ZWwgPCBsZXZlbENvdW50KCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGdsOjpSZWN0YW5nbGUgc291cmNlUmVjdDsKKyAgICAgICAgICAgIHNvdXJjZVJlY3Qu
eCA9IHg7CisgICAgICAgICAgICBzb3VyY2VSZWN0LndpZHRoID0gd2lkdGg7CisgICAgICAgICAg
ICBzb3VyY2VSZWN0LnkgPSB5OworICAgICAgICAgICAgc291cmNlUmVjdC5oZWlnaHQgPSBoZWln
aHQ7CisKKyAgICAgICAgICAgIG1SZW5kZXJlci0+Y29weUltYWdlKHNvdXJjZSwgc291cmNlUmVj
dCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6RXh0cmFjdEZvcm1hdCht
SW1hZ2VBcnJheVswXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4b2Zmc2V0LCB5b2Zmc2V0LCBtVGV4U3RvcmFnZSwgbGV2ZWwpOworICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIFRleHR1cmUyRDo6c3RvcmFnZShHTHNpemVpIGxldmVs
cywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkK
K3sKKyAgICBkZWxldGUgbVRleFN0b3JhZ2U7CisgICAgbVRleFN0b3JhZ2UgPSBuZXcgcng6OlRl
eHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQobVJlbmRlcmVyLCBsZXZlbHMsIGludGVybmFsZm9ybWF0
LCBtVXNhZ2UsIGZhbHNlLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBtSW1tdXRhYmxlID0gdHJ1ZTsK
KworICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspCisgICAg
eworICAgICAgICBtSW1hZ2VBcnJheVtsZXZlbF0tPnJlZGVmaW5lKG1SZW5kZXJlciwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHRydWUpOworICAgICAgICB3aWR0aCA9IHN0ZDo6bWF4
KDEsIHdpZHRoID4+IDEpOworICAgICAgICBoZWlnaHQgPSBzdGQ6Om1heCgxLCBoZWlnaHQgPj4g
MSk7CisgICAgfQorCisgICAgZm9yIChpbnQgbGV2ZWwgPSBsZXZlbHM7IGxldmVsIDwgSU1QTEVN
RU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAgbUlt
YWdlQXJyYXlbbGV2ZWxdLT5yZWRlZmluZShtUmVuZGVyZXIsIEdMX05PTkUsIDAsIDAsIHRydWUp
OworICAgIH0KKworICAgIGlmIChtVGV4U3RvcmFnZS0+aXNNYW5hZ2VkKCkpCisgICAgeworICAg
ICAgICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgpOworCisgICAgICAgIGZvciAoaW50IGxldmVs
ID0gMDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG1J
bWFnZUFycmF5W2xldmVsXS0+c2V0TWFuYWdlZFN1cmZhY2UobVRleFN0b3JhZ2UsIGxldmVsKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworLy8gVGVzdHMgZm9yIDJEIHRleHR1cmUgc2FtcGxpbmcg
Y29tcGxldGVuZXNzLiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAzLjguMiBwYWdlIDg1Lgor
Ym9vbCBUZXh0dXJlMkQ6OmlzU2FtcGxlckNvbXBsZXRlKCkgY29uc3QKK3sKKyAgICBHTHNpemVp
IHdpZHRoID0gbUltYWdlQXJyYXlbMF0tPmdldFdpZHRoKCk7CisgICAgR0xzaXplaSBoZWlnaHQg
PSBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCk7CisKKyAgICBpZiAod2lkdGggPD0gMCB8fCBo
ZWlnaHQgPD0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBi
b29sIG1pcG1hcHBpbmcgPSBpc01pcG1hcEZpbHRlcmVkKCk7CisgICAgYm9vbCBmaWx0ZXJpbmcs
IHJlbmRlcmFibGU7CisKKyAgICBpZiAoKElzRmxvYXQzMkZvcm1hdChnZXRJbnRlcm5hbEZvcm1h
dCgwKSkgJiYgIW1SZW5kZXJlci0+Z2V0RmxvYXQzMlRleHR1cmVTdXBwb3J0KCZmaWx0ZXJpbmcs
ICZyZW5kZXJhYmxlKSkgfHwKKyAgICAgICAgKElzRmxvYXQxNkZvcm1hdChnZXRJbnRlcm5hbEZv
cm1hdCgwKSkgJiYgIW1SZW5kZXJlci0+Z2V0RmxvYXQxNlRleHR1cmVTdXBwb3J0KCZmaWx0ZXJp
bmcsICZyZW5kZXJhYmxlKSkpCisgICAgeworICAgICAgICBpZiAobVNhbXBsZXJTdGF0ZS5tYWdG
aWx0ZXIgIT0gR0xfTkVBUkVTVCB8fAorICAgICAgICAgICAgKG1TYW1wbGVyU3RhdGUubWluRmls
dGVyICE9IEdMX05FQVJFU1QgJiYgbVNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIgIT0gR0xfTkVBUkVT
VF9NSVBNQVBfTkVBUkVTVCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgbnBvdFN1cHBvcnQgPSBtUmVuZGVyZXItPmdl
dE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KCk7CisKKyAgICBpZiAoIW5wb3RTdXBwb3J0KQorICAg
IHsKKyAgICAgICAgaWYgKChtU2FtcGxlclN0YXRlLndyYXBTICE9IEdMX0NMQU1QX1RPX0VER0Ug
JiYgIWlzUG93Mih3aWR0aCkpIHx8CisgICAgICAgICAgICAobVNhbXBsZXJTdGF0ZS53cmFwVCAh
PSBHTF9DTEFNUF9UT19FREdFICYmICFpc1BvdzIoaGVpZ2h0KSkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtaXBtYXBw
aW5nKQorICAgIHsKKyAgICAgICAgaWYgKCFucG90U3VwcG9ydCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKCFpc1BvdzIod2lkdGgpIHx8ICFpc1BvdzIoaGVpZ2h0KSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBpZiAoIWlzTWlwbWFwQ29tcGxldGUoKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKKy8vIFRlc3RzIGZvciAyRCB0ZXh0dXJlIChtaXBtYXApIGNvbXBsZXRlbmVzcy4gW09w
ZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMy43LjEwIHBhZ2UgODEuCitib29sIFRleHR1cmUyRDo6
aXNNaXBtYXBDb21wbGV0ZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW1tdXRhYmxlKCkpCisgICAg
eworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBHTHNpemVpIHdpZHRoID0gbUlt
YWdlQXJyYXlbMF0tPmdldFdpZHRoKCk7CisgICAgR0xzaXplaSBoZWlnaHQgPSBtSW1hZ2VBcnJh
eVswXS0+Z2V0SGVpZ2h0KCk7CisKKyAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbnQgcSA9IGxvZzIo
c3RkOjptYXgod2lkdGgsIGhlaWdodCkpOworCisgICAgZm9yIChpbnQgbGV2ZWwgPSAxOyBsZXZl
bCA8PSBxOyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAgaWYgKG1JbWFnZUFycmF5W2xldmVsXS0+
Z2V0SW50ZXJuYWxGb3JtYXQoKSAhPSBtSW1hZ2VBcnJheVswXS0+Z2V0SW50ZXJuYWxGb3JtYXQo
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKG1JbWFnZUFycmF5W2xldmVsXS0+Z2V0V2lkdGgoKSAhPSBzdGQ6Om1heCgxLCB3
aWR0aCA+PiBsZXZlbCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChtSW1hZ2VBcnJheVtsZXZlbF0tPmdldEhlaWdodCgpICE9
IHN0ZDo6bWF4KDEsIGhlaWdodCA+PiBsZXZlbCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFRleHR1cmUyRDo6aXNDb21wcmVzc2VkKEdMaW50IGxldmVsKSBjb25zdAoreworICAgIHJl
dHVybiBJc0NvbXByZXNzZWQoZ2V0SW50ZXJuYWxGb3JtYXQobGV2ZWwpKTsKK30KKworYm9vbCBU
ZXh0dXJlMkQ6OmlzRGVwdGgoR0xpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAgcmV0dXJuIElzRGVw
dGhUZXh0dXJlKGdldEludGVybmFsRm9ybWF0KGxldmVsKSk7Cit9CisKKy8vIENvbnN0cnVjdHMg
YSBuYXRpdmUgdGV4dHVyZSByZXNvdXJjZSBmcm9tIHRoZSB0ZXh0dXJlIGltYWdlcwordm9pZCBU
ZXh0dXJlMkQ6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIEdMc2l6ZWkgd2lkdGggPSBtSW1hZ2VB
cnJheVswXS0+Z2V0V2lkdGgoKTsKKyAgICBHTHNpemVpIGhlaWdodCA9IG1JbWFnZUFycmF5WzBd
LT5nZXRIZWlnaHQoKTsKKworICAgIGlmICghKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKSkKKyAg
ICAgICAgcmV0dXJuOyAvLyBkbyBub3QgYXR0ZW1wdCB0byBjcmVhdGUgbmF0aXZlIHRleHR1cmVz
IGZvciBub25leGlzdGFudCBkYXRhCisKKyAgICBHTGludCBsZXZlbHMgPSBjcmVhdGlvbkxldmVs
cyh3aWR0aCwgaGVpZ2h0KTsKKyAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSBtSW1hZ2VBcnJh
eVswXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKKworICAgIGRlbGV0ZSBtVGV4U3RvcmFnZTsKKyAg
ICBtVGV4U3RvcmFnZSA9IG5ldyByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRChtUmVuZGVy
ZXIsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIG1Vc2FnZSwgZmFsc2UsIHdpZHRoLCBoZWlnaHQp
OworICAgIAorICAgIGlmIChtVGV4U3RvcmFnZS0+aXNNYW5hZ2VkKCkpCisgICAgeworICAgICAg
ICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgpOworCisgICAgICAgIGZvciAoaW50IGxldmVsID0g
MDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG1JbWFn
ZUFycmF5W2xldmVsXS0+c2V0TWFuYWdlZFN1cmZhY2UobVRleFN0b3JhZ2UsIGxldmVsKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7Cit9CisKK3ZvaWQgVGV4
dHVyZTJEOjp1cGRhdGVUZXh0dXJlKCkKK3sKKyAgICBib29sIG1pcG1hcHBpbmcgPSAoaXNNaXBt
YXBGaWx0ZXJlZCgpICYmIGlzTWlwbWFwQ29tcGxldGUoKSk7CisKKyAgICBpbnQgbGV2ZWxzID0g
KG1pcG1hcHBpbmcgPyBsZXZlbENvdW50KCkgOiAxKTsKKworICAgIGZvciAoaW50IGxldmVsID0g
MDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspCisgICAgeworICAgICAgICByeDo6SW1hZ2UgKmlt
YWdlID0gbUltYWdlQXJyYXlbbGV2ZWxdOworCisgICAgICAgIGlmIChpbWFnZS0+aXNEaXJ0eSgp
KQorICAgICAgICB7CisgICAgICAgICAgICBjb21taXRSZWN0KGxldmVsLCAwLCAwLCBtSW1hZ2VB
cnJheVtsZXZlbF0tPmdldFdpZHRoKCksIG1JbWFnZUFycmF5W2xldmVsXS0+Z2V0SGVpZ2h0KCkp
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRleHR1cmUyRDo6Y29udmVydFRvUmVuZGVy
VGFyZ2V0KCkKK3sKKyAgICByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqbmV3VGV4U3Rv
cmFnZSA9IE5VTEw7CisKKyAgICBpZiAobUltYWdlQXJyYXlbMF0tPmdldFdpZHRoKCkgIT0gMCAm
JiBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCkgIT0gMCkKKyAgICB7CisgICAgICAgIEdMc2l6
ZWkgd2lkdGggPSBtSW1hZ2VBcnJheVswXS0+Z2V0V2lkdGgoKTsKKyAgICAgICAgR0xzaXplaSBo
ZWlnaHQgPSBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCk7CisgICAgICAgIEdMaW50IGxldmVs
cyA9IG1UZXhTdG9yYWdlICE9IE5VTEwgPyBtVGV4U3RvcmFnZS0+bGV2ZWxDb3VudCgpIDogY3Jl
YXRpb25MZXZlbHMod2lkdGgsIGhlaWdodCk7CisgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCA9IG1JbWFnZUFycmF5WzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpOworCisgICAgICAgIG5ld1Rl
eFN0b3JhZ2UgPSBuZXcgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQobVJlbmRlcmVyLCBs
ZXZlbHMsIGludGVybmFsZm9ybWF0LCBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFLCB0
cnVlLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICBpZiAobVRleFN0b3JhZ2UgIT0gTlVMTCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtUmVuZGVyZXItPmNvcHlUb1JlbmRlclRhcmdl
dChuZXdUZXhTdG9yYWdlLCBtVGV4U3RvcmFnZSkpCisgICAgICAgICAgICB7ICAgCisgICAgICAg
ICAgICAgICAgZGVsZXRlIG5ld1RleFN0b3JhZ2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIGRlbGV0ZSBtVGV4U3RvcmFnZTsKKyAgICBtVGV4U3RvcmFnZSA9IG5ld1RleFN0
b3JhZ2U7CisKKyAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworfQorCit2b2lkIFRleHR1cmUyRDo6
Z2VuZXJhdGVNaXBtYXBzKCkKK3sKKyAgICBpZiAoIW1SZW5kZXJlci0+Z2V0Tm9uUG93ZXIyVGV4
dHVyZVN1cHBvcnQoKSkKKyAgICB7CisgICAgICAgIGlmICghaXNQb3cyKG1JbWFnZUFycmF5WzBd
LT5nZXRXaWR0aCgpKSB8fCAhaXNQb3cyKG1JbWFnZUFycmF5WzBdLT5nZXRIZWlnaHQoKSkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUHVyZ2UgYXJyYXkgbGV2ZWxzIDEgdGhy
b3VnaCBxIGFuZCByZXNldCB0aGVtIHRvIHJlcHJlc2VudCB0aGUgZ2VuZXJhdGVkIG1pcG1hcCBs
ZXZlbHMuCisgICAgdW5zaWduZWQgaW50IHEgPSBsb2cyKHN0ZDo6bWF4KG1JbWFnZUFycmF5WzBd
LT5nZXRXaWR0aCgpLCBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCkpKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMTsgaSA8PSBxOyBpKyspCisgICAgeworICAgICAgICByZWRlZmluZUlt
YWdlKGksIG1JbWFnZUFycmF5WzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpLAorICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bWF4KG1JbWFnZUFycmF5WzBdLT5nZXRXaWR0aCgpID4+IGksIDEpLAor
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KG1JbWFnZUFycmF5WzBdLT5nZXRIZWlnaHQo
KSA+PiBpLCAxKSk7CisgICAgfQorCisgICAgaWYgKG1UZXhTdG9yYWdlICYmIG1UZXhTdG9yYWdl
LT5pc1JlbmRlclRhcmdldCgpKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDE7IGkgPD0gcTsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBtVGV4U3RvcmFnZS0+Z2Vu
ZXJhdGVNaXBtYXAoaSk7CisKKyAgICAgICAgICAgIG1JbWFnZUFycmF5W2ldLT5tYXJrQ2xlYW4o
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMTsgaSA8PSBxOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG1SZW5k
ZXJlci0+Z2VuZXJhdGVNaXBtYXAobUltYWdlQXJyYXlbaV0sIG1JbWFnZUFycmF5W2kgLSAxXSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK1JlbmRlcmJ1ZmZlciAqVGV4dHVyZTJEOjpnZXRSZW5k
ZXJidWZmZXIoR0xlbnVtIHRhcmdldCkKK3sKKyAgICBpZiAodGFyZ2V0ICE9IEdMX1RFWFRVUkVf
MkQpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAoUmVuZGVyYnVmZmVyICopTlVMTCk7CisgICAgfQorCisgICAgaWYgKG1Db2xvcmJ1ZmZlclBy
b3h5ID09IE5VTEwpCisgICAgeworICAgICAgICBtQ29sb3JidWZmZXJQcm94eSA9IG5ldyBSZW5k
ZXJidWZmZXIobVJlbmRlcmVyLCBpZCgpLCBuZXcgUmVuZGVyYnVmZmVyVGV4dHVyZTJEKHRoaXMs
IHRhcmdldCkpOworICAgIH0KKworICAgIHJldHVybiBtQ29sb3JidWZmZXJQcm94eTsKK30KKwor
cng6OlJlbmRlclRhcmdldCAqVGV4dHVyZTJEOjpnZXRSZW5kZXJUYXJnZXQoR0xlbnVtIHRhcmdl
dCkKK3sKKyAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpOworCisgICAgLy8gZW5z
dXJlIHRoZSB1bmRlcmx5aW5nIHRleHR1cmUgaXMgY3JlYXRlZAorICAgIGlmIChnZXRTdG9yYWdl
KHRydWUpID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAg
ICB1cGRhdGVUZXh0dXJlKCk7CisgICAgCisgICAgLy8gZW5zdXJlIHRoaXMgaXMgTk9UIGEgZGVw
dGggdGV4dHVyZQorICAgIGlmIChpc0RlcHRoKDApKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgfQorCisgICAgcmV0dXJuIG1UZXhTdG9yYWdlLT5nZXRSZW5kZXJUYXJnZXQoKTsK
K30KKworcng6OlJlbmRlclRhcmdldCAqVGV4dHVyZTJEOjpnZXREZXB0aFN0ZW5jaWwoR0xlbnVt
IHRhcmdldCkKK3sKKyAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpOworCisgICAg
Ly8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHRleHR1cmUgaXMgY3JlYXRlZAorICAgIGlmIChnZXRT
dG9yYWdlKHRydWUpID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9
CisKKyAgICB1cGRhdGVUZXh0dXJlKCk7CisKKyAgICAvLyBlbnN1cmUgdGhpcyBpcyBhY3R1YWxs
eSBhIGRlcHRoIHRleHR1cmUKKyAgICBpZiAoIWlzRGVwdGgoMCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIG1UZXhTdG9yYWdlLT5nZXRSZW5kZXJUYXJn
ZXQoKTsKK30KKworaW50IFRleHR1cmUyRDo6bGV2ZWxDb3VudCgpCit7CisgICAgcmV0dXJuIG1U
ZXhTdG9yYWdlID8gbVRleFN0b3JhZ2UtPmxldmVsQ291bnQoKSA6IDA7Cit9CisKK3J4OjpUZXh0
dXJlU3RvcmFnZUludGVyZmFjZSAqVGV4dHVyZTJEOjpnZXRTdG9yYWdlKGJvb2wgcmVuZGVyVGFy
Z2V0KQoreworICAgIGlmICghbVRleFN0b3JhZ2UgfHwgKHJlbmRlclRhcmdldCAmJiAhbVRleFN0
b3JhZ2UtPmlzUmVuZGVyVGFyZ2V0KCkpKQorICAgIHsKKyAgICAgICAgaWYgKHJlbmRlclRhcmdl
dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBjcmVhdGVUZXh0dXJl
KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbVRleFN0b3JhZ2U7Cit9CisKK1Rl
eHR1cmVDdWJlTWFwOjpUZXh0dXJlQ3ViZU1hcChyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHVp
bnQgaWQpIDogVGV4dHVyZShyZW5kZXJlciwgaWQpCit7CisgICAgbVRleFN0b3JhZ2UgPSBOVUxM
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgaSsrKQorICAgIHsKKyAgICAgICAgbUZhY2VQ
cm94aWVzW2ldID0gTlVMTDsKKyAgICAgICAgbUZhY2VQcm94eVJlZnNbaV0gPSAwOworCisgICAg
ICAgIGZvciAoaW50IGogPSAwOyBqIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxT
OyArK2opCisgICAgICAgIHsKKyAgICAgICAgICAgIG1JbWFnZUFycmF5W2ldW2pdID0gcmVuZGVy
ZXItPmNyZWF0ZUltYWdlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1RleHR1cmVDdWJlTWFw
Ojp+VGV4dHVyZUN1YmVNYXAoKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgaSsrKQor
ICAgIHsKKyAgICAgICAgbUZhY2VQcm94aWVzW2ldID0gTlVMTDsKKworICAgICAgICBmb3IgKGlu
dCBqID0gMDsgaiA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgKytqKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWxldGUgbUltYWdlQXJyYXlbaV1bal07CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBkZWxldGUgbVRleFN0b3JhZ2U7CisgICAgbVRleFN0b3JhZ2UgPSBOVUxM
OworfQorCisvLyBXZSBuZWVkIHRvIG1haW50YWluIGEgY291bnQgb2YgcmVmZXJlbmNlcyB0byBy
ZW5kZXJidWZmZXJzIGFjdGluZyBhcyAKKy8vIHByb3hpZXMgZm9yIHRoaXMgdGV4dHVyZSwgc28g
dGhhdCB0aGUgdGV4dHVyZSBpcyBub3QgZGVsZXRlZCB3aGlsZSAKKy8vIHByb3h5IHJlZmVyZW5j
ZXMgc3RpbGwgZXhpc3QuIElmIHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8gemVybywKKy8v
IHdlIHNldCBvdXIgcHJveHkgcG9pbnRlciBOVUxMLCBzbyB0aGF0IGEgbmV3IGF0dGVtcHQgYXQg
cmVmZXJlbmNpbmcKKy8vIHdpbGwgY2F1c2UgcmVjcmVhdGlvbi4KK3ZvaWQgVGV4dHVyZUN1YmVN
YXA6OmFkZFByb3h5UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCit7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCA2OyBpKyspCisgICAgeworICAgICAgICBpZiAobUZhY2VQcm94aWVzW2ld
ID09IHByb3h5KQorICAgICAgICAgICAgbUZhY2VQcm94eVJlZnNbaV0rKzsKKyAgICB9Cit9CisK
K3ZvaWQgVGV4dHVyZUN1YmVNYXA6OnJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZmZXIgKnBy
b3h5KQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgaSsrKQorICAgIHsKKyAgICAgICAg
aWYgKG1GYWNlUHJveGllc1tpXSA9PSBwcm94eSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KG1GYWNlUHJveHlSZWZzW2ldID4gMCkKKyAgICAgICAgICAgICAgICBtRmFjZVByb3h5UmVmc1tp
XS0tOworCisgICAgICAgICAgICBpZiAobUZhY2VQcm94eVJlZnNbaV0gPT0gMCkKKyAgICAgICAg
ICAgICAgICBtRmFjZVByb3hpZXNbaV0gPSBOVUxMOworICAgICAgICB9CisgICAgfQorfQorCitH
TGVudW0gVGV4dHVyZUN1YmVNYXA6OmdldFRhcmdldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdM
X1RFWFRVUkVfQ1VCRV9NQVA7Cit9CisKK0dMc2l6ZWkgVGV4dHVyZUN1YmVNYXA6OmdldFdpZHRo
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdAoreworICAgIGlmIChsZXZlbCA8IElN
UExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykKKyAgICAgICAgcmV0dXJuIG1JbWFnZUFy
cmF5W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZlbF0tPmdldFdpZHRoKCk7CisgICAgZWxzZQorICAg
ICAgICByZXR1cm4gMDsKK30KKworR0xzaXplaSBUZXh0dXJlQ3ViZU1hcDo6Z2V0SGVpZ2h0KEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdAoreworICAgIGlmIChsZXZlbCA8IElNUExF
TUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykKKyAgICAgICAgcmV0dXJuIG1JbWFnZUFycmF5
W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZlbF0tPmdldEhlaWdodCgpOworICAgIGVsc2UKKyAgICAg
ICAgcmV0dXJuIDA7Cit9CisKK0dMZW51bSBUZXh0dXJlQ3ViZU1hcDo6Z2V0SW50ZXJuYWxGb3Jt
YXQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAgaWYgKGxldmVsIDwg
SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQorICAgICAgICByZXR1cm4gbUltYWdl
QXJyYXlbZmFjZUluZGV4KHRhcmdldCldW2xldmVsXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKKyAg
ICBlbHNlCisgICAgICAgIHJldHVybiBHTF9OT05FOworfQorCitHTGVudW0gVGV4dHVyZUN1YmVN
YXA6OmdldEFjdHVhbEZvcm1hdChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkgY29uc3QKK3sK
KyAgICBpZiAobGV2ZWwgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCisgICAg
ICAgIHJldHVybiBtSW1hZ2VBcnJheVtmYWNlSW5kZXgodGFyZ2V0KV1bbGV2ZWxdLT5nZXRBY3R1
YWxGb3JtYXQoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBEM0RGTVRfVU5LTk9XTjsKK30K
Kwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VQb3NYKEdMaW50IGxldmVsLCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50
IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIHNldEltYWdlKDAs
IGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4
ZWxzKTsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWdYKEdMaW50IGxldmVs
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIHNl
dEltYWdlKDEsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdu
bWVudCwgcGl4ZWxzKTsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VQb3NZKEdM
aW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQor
eworICAgIHNldEltYWdlKDIsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVu
cGFja0FsaWdubWVudCwgcGl4ZWxzKTsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1h
Z2VOZWdZKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAq
cGl4ZWxzKQoreworICAgIHNldEltYWdlKDMsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzKTsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1h
cDo6c2V0SW1hZ2VQb3NaKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29u
c3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIHNldEltYWdlKDQsIGxldmVsLCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzKTsKK30KKwordm9pZCBUZXh0
dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWdaKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdu
bWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIHNldEltYWdlKDUsIGxldmVsLCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzKTsKK30KKwor
dm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSBmYWNlLCBHTGlu
dCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdM
c2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit7CisgICAgLy8gY29tcHJlc3Nl
ZCBmb3JtYXRzIGRvbid0IGhhdmUgc2VwYXJhdGUgc2l6ZWQgaW50ZXJuYWwgZm9ybWF0cy0tIHdl
IGNhbiBqdXN0IHVzZSB0aGUgY29tcHJlc3NlZCBmb3JtYXQgZGlyZWN0bHkKKyAgICByZWRlZmlu
ZUltYWdlKGZhY2VJbmRleChmYWNlKSwgbGV2ZWwsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisK
KyAgICBUZXh0dXJlOjpzZXRDb21wcmVzc2VkSW1hZ2UoaW1hZ2VTaXplLCBwaXhlbHMsIG1JbWFn
ZUFycmF5W2ZhY2VJbmRleChmYWNlKV1bbGV2ZWxdKTsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1h
cDo6Y29tbWl0UmVjdChpbnQgZmFjZSwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50
IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIGlmIChsZXZl
bCA8IGxldmVsQ291bnQoKSkKKyAgICB7CisgICAgICAgIHJ4OjpJbWFnZSAqaW1hZ2UgPSBtSW1h
Z2VBcnJheVtmYWNlXVtsZXZlbF07CisgICAgICAgIGlmIChpbWFnZS0+dXBkYXRlU3VyZmFjZSht
VGV4U3RvcmFnZSwgZmFjZSwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQp
KQorICAgICAgICAgICAgaW1hZ2UtPm1hcmtDbGVhbigpOworICAgIH0KK30KKwordm9pZCBUZXh0
dXJlQ3ViZU1hcDo6c3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhv
ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lk
ICpwaXhlbHMpCit7CisgICAgaWYgKFRleHR1cmU6OnN1YkltYWdlKHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgdW5wYWNrQWxpZ25tZW50LCBwaXhlbHMsIG1J
bWFnZUFycmF5W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZlbF0pKQorICAgIHsKKyAgICAgICAgY29t
bWl0UmVjdChmYWNlSW5kZXgodGFyZ2V0KSwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQpOworICAgIH0KK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c3ViSW1hZ2VDb21w
cmVzc2VkKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5
b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xz
aXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykKK3sKKyAgICBpZiAoVGV4dHVyZTo6
c3ViSW1hZ2VDb21wcmVzc2VkKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgaW1hZ2VTaXplLCBwaXhlbHMsIG1JbWFnZUFycmF5W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZl
bF0pKQorICAgIHsKKyAgICAgICAgY29tbWl0UmVjdChmYWNlSW5kZXgodGFyZ2V0KSwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KK30KKworLy8gVGVzdHMg
Zm9yIGN1YmUgbWFwIHNhbXBsaW5nIGNvbXBsZXRlbmVzcy4gW09wZW5HTCBFUyAyLjAuMjRdIHNl
Y3Rpb24gMy44LjIgcGFnZSA4Ni4KK2Jvb2wgVGV4dHVyZUN1YmVNYXA6OmlzU2FtcGxlckNvbXBs
ZXRlKCkgY29uc3QKK3sKKyAgICBpbnQgc2l6ZSA9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0
aCgpOworCisgICAgYm9vbCBtaXBtYXBwaW5nID0gaXNNaXBtYXBGaWx0ZXJlZCgpOworICAgIGJv
b2wgZmlsdGVyaW5nLCByZW5kZXJhYmxlOworCisgICAgaWYgKChnbDo6RXh0cmFjdFR5cGUoZ2V0
SW50ZXJuYWxGb3JtYXQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwKSkgPT0gR0xf
RkxPQVQgJiYgIW1SZW5kZXJlci0+Z2V0RmxvYXQzMlRleHR1cmVTdXBwb3J0KCZmaWx0ZXJpbmcs
ICZyZW5kZXJhYmxlKSkgfHwKKyAgICAgICAgKGdsOjpFeHRyYWN0VHlwZShnZXRJbnRlcm5hbEZv
cm1hdChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDApID09IEdMX0hBTEZfRkxPQVRf
T0VTKSAmJiAhbVJlbmRlcmVyLT5nZXRGbG9hdDE2VGV4dHVyZVN1cHBvcnQoJmZpbHRlcmluZywg
JnJlbmRlcmFibGUpKSkKKyAgICB7CisgICAgICAgIGlmIChtU2FtcGxlclN0YXRlLm1hZ0ZpbHRl
ciAhPSBHTF9ORUFSRVNUIHx8CisgICAgICAgICAgICAobVNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIg
IT0gR0xfTkVBUkVTVCAmJiBtU2FtcGxlclN0YXRlLm1pbkZpbHRlciAhPSBHTF9ORUFSRVNUX01J
UE1BUF9ORUFSRVNUKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKCFpc1BvdzIoc2l6ZSkgJiYgIW1SZW5kZXJlci0+Z2V0
Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQoKSkKKyAgICB7CisgICAgICAgIGlmIChtU2FtcGxlclN0
YXRlLndyYXBTICE9IEdMX0NMQU1QX1RPX0VER0UgfHwgbVNhbXBsZXJTdGF0ZS53cmFwVCAhPSBH
TF9DTEFNUF9UT19FREdFIHx8IG1pcG1hcHBpbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbWlwbWFwcGluZykKKyAg
ICB7CisgICAgICAgIGlmICghaXNDdWJlQ29tcGxldGUoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIGlmICghaXNNaXBtYXBDdWJlQ29tcGxldGUoKSkgICAvLyBBbHNvIHRlc3RzIGZvciBpc0N1
YmVDb21wbGV0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisvLyBUZXN0cyBmb3IgY3ViZSB0
ZXh0dXJlIGNvbXBsZXRlbmVzcy4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMy43LjEwIHBh
Z2UgODEuCitib29sIFRleHR1cmVDdWJlTWFwOjppc0N1YmVDb21wbGV0ZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgpIDw9IDAgfHwgbUltYWdlQXJyYXlb
MF1bMF0tPmdldEhlaWdodCgpICE9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaW50
IGZhY2UgPSAxOyBmYWNlIDwgNjsgZmFjZSsrKQorICAgIHsKKyAgICAgICAgaWYgKG1JbWFnZUFy
cmF5W2ZhY2VdWzBdLT5nZXRXaWR0aCgpICE9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgp
IHx8CisgICAgICAgICAgICBtSW1hZ2VBcnJheVtmYWNlXVswXS0+Z2V0V2lkdGgoKSAhPSBtSW1h
Z2VBcnJheVswXVswXS0+Z2V0SGVpZ2h0KCkgfHwKKyAgICAgICAgICAgIG1JbWFnZUFycmF5W2Zh
Y2VdWzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpICE9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRJbnRl
cm5hbEZvcm1hdCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBUZXh0dXJlQ3ViZU1h
cDo6aXNNaXBtYXBDdWJlQ29tcGxldGUoKSBjb25zdAoreworICAgIGlmIChpc0ltbXV0YWJsZSgp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKCFpc0N1YmVD
b21wbGV0ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdM
c2l6ZWkgc2l6ZSA9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgpOworCisgICAgaW50IHEg
PSBsb2cyKHNpemUpOworCisgICAgZm9yIChpbnQgZmFjZSA9IDA7IGZhY2UgPCA2OyBmYWNlKysp
CisgICAgeworICAgICAgICBmb3IgKGludCBsZXZlbCA9IDE7IGxldmVsIDw9IHE7IGxldmVsKysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF0tPmdl
dEludGVybmFsRm9ybWF0KCkgIT0gbUltYWdlQXJyYXlbMF1bMF0tPmdldEludGVybmFsRm9ybWF0
KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAobUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdLT5nZXRX
aWR0aCgpICE9IHN0ZDo6bWF4KDEsIHNpemUgPj4gbGV2ZWwpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFRleHR1cmVDdWJlTWFwOjppc0NvbXBy
ZXNzZWQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAgcmV0dXJuIElz
Q29tcHJlc3NlZChnZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSk7Cit9CisKKy8vIENv
bnN0cnVjdHMgYSBuYXRpdmUgdGV4dHVyZSByZXNvdXJjZSBmcm9tIHRoZSB0ZXh0dXJlIGltYWdl
cywgb3IgcmV0dXJucyBhbiBleGlzdGluZyBvbmUKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OmNyZWF0
ZVRleHR1cmUoKQoreworICAgIEdMc2l6ZWkgc2l6ZSA9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRX
aWR0aCgpOworCisgICAgaWYgKCEoc2l6ZSA+IDApKQorICAgICAgICByZXR1cm47IC8vIGRvIG5v
dCBhdHRlbXB0IHRvIGNyZWF0ZSBuYXRpdmUgdGV4dHVyZXMgZm9yIG5vbmV4aXN0YW50IGRhdGEK
KworICAgIEdMaW50IGxldmVscyA9IGNyZWF0aW9uTGV2ZWxzKHNpemUpOworICAgIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCA9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpOwor
CisgICAgZGVsZXRlIG1UZXhTdG9yYWdlOworICAgIG1UZXhTdG9yYWdlID0gbmV3IHJ4OjpUZXh0
dXJlU3RvcmFnZUludGVyZmFjZUN1YmUobVJlbmRlcmVyLCBsZXZlbHMsIGludGVybmFsZm9ybWF0
LCBtVXNhZ2UsIGZhbHNlLCBzaXplKTsKKworICAgIGlmIChtVGV4U3RvcmFnZS0+aXNNYW5hZ2Vk
KCkpCisgICAgeworICAgICAgICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgpOworCisgICAgICAg
IGZvciAoaW50IGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQorICAgICAgICB7CisgICAgICAg
ICAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZhY2VdW2xldmVsXS0+c2V0TWFu
YWdlZFN1cmZhY2UobVRleFN0b3JhZ2UsIGZhY2UsIGxldmVsKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7Cit9CisKK3ZvaWQgVGV4
dHVyZUN1YmVNYXA6OnVwZGF0ZVRleHR1cmUoKQoreworICAgIGJvb2wgbWlwbWFwcGluZyA9IGlz
TWlwbWFwRmlsdGVyZWQoKSAmJiBpc01pcG1hcEN1YmVDb21wbGV0ZSgpOworCisgICAgZm9yIChp
bnQgZmFjZSA9IDA7IGZhY2UgPCA2OyBmYWNlKyspCisgICAgeworICAgICAgICBpbnQgbGV2ZWxz
ID0gKG1pcG1hcHBpbmcgPyBsZXZlbENvdW50KCkgOiAxKTsKKworICAgICAgICBmb3IgKGludCBs
ZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQorICAgICAgICB7CisgICAgICAgICAg
ICByeDo6SW1hZ2UgKmltYWdlID0gbUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdOworCisgICAgICAg
ICAgICBpZiAoaW1hZ2UtPmlzRGlydHkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb21taXRSZWN0KGZhY2UsIGxldmVsLCAwLCAwLCBpbWFnZS0+Z2V0V2lkdGgoKSwgaW1hZ2Ut
PmdldEhlaWdodCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBUZXh0dXJlQ3ViZU1hcDo6Y29udmVydFRvUmVuZGVyVGFyZ2V0KCkKK3sKKyAgICByeDo6VGV4
dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpuZXdUZXhTdG9yYWdlID0gTlVMTDsKKworICAgIGlm
IChtSW1hZ2VBcnJheVswXVswXS0+Z2V0V2lkdGgoKSAhPSAwKQorICAgIHsKKyAgICAgICAgR0xz
aXplaSBzaXplID0gbUltYWdlQXJyYXlbMF1bMF0tPmdldFdpZHRoKCk7CisgICAgICAgIEdMaW50
IGxldmVscyA9IG1UZXhTdG9yYWdlICE9IE5VTEwgPyBtVGV4U3RvcmFnZS0+bGV2ZWxDb3VudCgp
IDogY3JlYXRpb25MZXZlbHMoc2l6ZSk7CisgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9
IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpOworCisgICAgICAgIG5ld1Rl
eFN0b3JhZ2UgPSBuZXcgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZShtUmVuZGVyZXIs
IGxldmVscywgaW50ZXJuYWxmb3JtYXQsIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQU5HTEUs
IHRydWUsIHNpemUpOworCisgICAgICAgIGlmIChtVGV4U3RvcmFnZSAhPSBOVUxMKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoIW1SZW5kZXJlci0+Y29weVRvUmVuZGVyVGFyZ2V0KG5ld1Rl
eFN0b3JhZ2UsIG1UZXhTdG9yYWdlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBk
ZWxldGUgbmV3VGV4U3RvcmFnZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
ZGVsZXRlIG1UZXhTdG9yYWdlOworICAgIG1UZXhTdG9yYWdlID0gbmV3VGV4U3RvcmFnZTsKKwor
ICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7Cit9CisKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OnNldElt
YWdlKGludCBmYWNlSW5kZXgsIEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwg
Y29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIEdMaW50IGludGVybmFsZm9ybWF0ID0gQ29udmVy
dFNpemVkSW50ZXJuYWxGb3JtYXQoZm9ybWF0LCB0eXBlKTsKKyAgICByZWRlZmluZUltYWdlKGZh
Y2VJbmRleCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIFRl
eHR1cmU6OnNldEltYWdlKHVucGFja0FsaWdubWVudCwgcGl4ZWxzLCBtSW1hZ2VBcnJheVtmYWNl
SW5kZXhdW2xldmVsXSk7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0dXJlQ3ViZU1hcDo6ZmFjZUlu
ZGV4KEdMZW51bSBmYWNlKQoreworICAgIE1FVEFfQVNTRVJUKEdMX1RFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWCAtIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCA9PSAxKTsKKyAgICBN
RVRBX0FTU0VSVChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1kgLSBHTF9URVhUVVJFX0NV
QkVfTUFQX1BPU0lUSVZFX1ggPT0gMik7CisgICAgTUVUQV9BU1NFUlQoR0xfVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9ZIC0gR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YID09IDMpOwor
ICAgIE1FVEFfQVNTRVJUKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiAtIEdMX1RFWFRV
UkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCA9PSA0KTsKKyAgICBNRVRBX0FTU0VSVChHTF9URVhUVVJF
X0NVQkVfTUFQX05FR0FUSVZFX1ogLSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggPT0g
NSk7CisKKyAgICByZXR1cm4gZmFjZSAtIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDsK
K30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6cmVkZWZpbmVJbWFnZShpbnQgZmFjZSwgR0xpbnQg
bGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCkKK3sKKyAgICAvLyBJZiB0aGVyZSBjdXJyZW50bHkgaXMgYSBjb3JyZXNwb25kaW5nIHN0b3Jh
Z2UgdGV4dHVyZSBpbWFnZSwgaXQgaGFzIHRoZXNlIHBhcmFtZXRlcnMKKyAgICBjb25zdCBpbnQg
c3RvcmFnZVdpZHRoID0gc3RkOjptYXgoMSwgbUltYWdlQXJyYXlbMF1bMF0tPmdldFdpZHRoKCkg
Pj4gbGV2ZWwpOworICAgIGNvbnN0IGludCBzdG9yYWdlSGVpZ2h0ID0gc3RkOjptYXgoMSwgbUlt
YWdlQXJyYXlbMF1bMF0tPmdldEhlaWdodCgpID4+IGxldmVsKTsKKyAgICBjb25zdCBpbnQgc3Rv
cmFnZUZvcm1hdCA9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpOworCisg
ICAgbUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdLT5yZWRlZmluZShtUmVuZGVyZXIsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBmYWxzZSk7CisKKyAgICBpZiAobVRleFN0b3JhZ2UpCisg
ICAgeworICAgICAgICBjb25zdCBpbnQgc3RvcmFnZUxldmVscyA9IG1UZXhTdG9yYWdlLT5sZXZl
bENvdW50KCk7CisgICAgICAgIAorICAgICAgICBpZiAoKGxldmVsID49IHN0b3JhZ2VMZXZlbHMg
JiYgc3RvcmFnZUxldmVscyAhPSAwKSB8fAorICAgICAgICAgICAgd2lkdGggIT0gc3RvcmFnZVdp
ZHRoIHx8CisgICAgICAgICAgICBoZWlnaHQgIT0gc3RvcmFnZUhlaWdodCB8fAorICAgICAgICAg
ICAgaW50ZXJuYWxmb3JtYXQgIT0gc3RvcmFnZUZvcm1hdCkgICAvLyBEaXNjYXJkIG1pc21hdGNo
ZWQgc3RvcmFnZQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IElN
UExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGZvciAoaW50IGYgPSAwOyBmIDwgNjsgZisrKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbZl1baV0tPm1hcmtEaXJ0eSgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVsZXRlIG1U
ZXhTdG9yYWdlOworICAgICAgICAgICAgbVRleFN0b3JhZ2UgPSBOVUxMOworCisgICAgICAgICAg
ICBtRGlydHlJbWFnZXMgPSB0cnVlOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRleHR1
cmVDdWJlTWFwOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBm
b3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBG
cmFtZWJ1ZmZlciAqc291cmNlKQoreworICAgIHVuc2lnbmVkIGludCBmYWNlaW5kZXggPSBmYWNl
SW5kZXgodGFyZ2V0KTsKKyAgICBHTGludCBpbnRlcm5hbGZvcm1hdCA9IGdsOjpDb252ZXJ0U2l6
ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUpOworICAgIHJlZGVmaW5l
SW1hZ2UoZmFjZWluZGV4LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwor
CisgICAgaWYgKCFtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS0+aXNSZW5kZXJhYmxlRm9y
bWF0KCkpCisgICAgeworICAgICAgICBtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS0+Y29w
eSgwLCAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2UpOworICAgICAgICBtRGlydHlJbWFn
ZXMgPSB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoIW1UZXhTdG9y
YWdlIHx8ICFtVGV4U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQoKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIG1JbWFnZUFycmF5W2ZhY2VpbmRleF1bbGV2ZWxdLT5tYXJrQ2xlYW4oKTsKKworICAgICAg
ICBBU1NFUlQod2lkdGggPT0gaGVpZ2h0KTsKKworICAgICAgICBpZiAod2lkdGggPiAwICYmIGxl
dmVsIDwgbGV2ZWxDb3VudCgpKQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6UmVjdGFuZ2xl
IHNvdXJjZVJlY3Q7CisgICAgICAgICAgICBzb3VyY2VSZWN0LnggPSB4OworICAgICAgICAgICAg
c291cmNlUmVjdC53aWR0aCA9IHdpZHRoOworICAgICAgICAgICAgc291cmNlUmVjdC55ID0geTsK
KyAgICAgICAgICAgIHNvdXJjZVJlY3QuaGVpZ2h0ID0gaGVpZ2h0OworCisgICAgICAgICAgICBt
UmVuZGVyZXItPmNvcHlJbWFnZShzb3VyY2UsIHNvdXJjZVJlY3QsIGZvcm1hdCwgMCwgMCwgbVRl
eFN0b3JhZ2UsIHRhcmdldCwgbGV2ZWwpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRl
eHR1cmVDdWJlTWFwOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKQoreworICAgIEdMc2l6ZWkg
c2l6ZSA9IG1JbWFnZUFycmF5W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZlbF0tPmdldFdpZHRoKCk7
CisKKyAgICBpZiAoeG9mZnNldCArIHdpZHRoID4gc2l6ZSB8fCB5b2Zmc2V0ICsgaGVpZ2h0ID4g
c2l6ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgfQorCisgICAgdW5zaWduZWQgaW50IGZhY2VpbmRleCA9IGZhY2VJbmRleCh0YXJnZXQp
OworCisgICAgaWYgKCFtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS0+aXNSZW5kZXJhYmxl
Rm9ybWF0KCkgfHwgKCFtVGV4U3RvcmFnZSAmJiAhaXNTYW1wbGVyQ29tcGxldGUoKSkpCisgICAg
eworICAgICAgICBtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS0+Y29weSgwLCAwLCB4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2UpOworICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoIW1UZXhTdG9yYWdlIHx8ICFtVGV4
U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udmVy
dFRvUmVuZGVyVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVwZGF0ZVRl
eHR1cmUoKTsKKworICAgICAgICBpZiAobGV2ZWwgPCBsZXZlbENvdW50KCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGdsOjpSZWN0YW5nbGUgc291cmNlUmVjdDsKKyAgICAgICAgICAgIHNvdXJj
ZVJlY3QueCA9IHg7CisgICAgICAgICAgICBzb3VyY2VSZWN0LndpZHRoID0gd2lkdGg7CisgICAg
ICAgICAgICBzb3VyY2VSZWN0LnkgPSB5OworICAgICAgICAgICAgc291cmNlUmVjdC5oZWlnaHQg
PSBoZWlnaHQ7CisKKyAgICAgICAgICAgIG1SZW5kZXJlci0+Y29weUltYWdlKHNvdXJjZSwgc291
cmNlUmVjdCwgZ2w6OkV4dHJhY3RGb3JtYXQobUltYWdlQXJyYXlbMF1bMF0tPmdldEludGVybmFs
Rm9ybWF0KCkpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvZmZzZXQsIHlv
ZmZzZXQsIG1UZXhTdG9yYWdlLCB0YXJnZXQsIGxldmVsKTsKKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c3RvcmFnZShHTHNpemVpIGxldmVscywgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHTHNpemVpIHNpemUpCit7CisgICAgZGVsZXRlIG1UZXhTdG9yYWdlOwor
ICAgIG1UZXhTdG9yYWdlID0gbmV3IHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUobVJl
bmRlcmVyLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCBtVXNhZ2UsIGZhbHNlLCBzaXplKTsKKyAg
ICBtSW1tdXRhYmxlID0gdHJ1ZTsKKworICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBs
ZXZlbHM7IGxldmVsKyspCisgICAgeworICAgICAgICBmb3IgKGludCBmYWNlID0gMDsgZmFjZSA8
IDY7IGZhY2UrKykKKyAgICAgICAgeworICAgICAgICAgICAgbUltYWdlQXJyYXlbZmFjZV1bbGV2
ZWxdLT5yZWRlZmluZShtUmVuZGVyZXIsIGludGVybmFsZm9ybWF0LCBzaXplLCBzaXplLCB0cnVl
KTsKKyAgICAgICAgICAgIHNpemUgPSBzdGQ6Om1heCgxLCBzaXplID4+IDEpOworICAgICAgICB9
CisgICAgfQorCisgICAgZm9yIChpbnQgbGV2ZWwgPSBsZXZlbHM7IGxldmVsIDwgSU1QTEVNRU5U
QVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAgZm9yIChp
bnQgZmFjZSA9IDA7IGZhY2UgPCA2OyBmYWNlKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG1J
bWFnZUFycmF5W2ZhY2VdW2xldmVsXS0+cmVkZWZpbmUobVJlbmRlcmVyLCBHTF9OT05FLCAwLCAw
LCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtVGV4U3RvcmFnZS0+aXNNYW5h
Z2VkKCkpCisgICAgeworICAgICAgICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgpOworCisgICAg
ICAgIGZvciAoaW50IGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQorICAgICAgICB7CisgICAg
ICAgICAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZhY2VdW2xldmVsXS0+c2V0
TWFuYWdlZFN1cmZhY2UobVRleFN0b3JhZ2UsIGZhY2UsIGxldmVsKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6Z2VuZXJhdGVNaXBt
YXBzKCkKK3sKKyAgICBpZiAoIWlzQ3ViZUNvbXBsZXRlKCkpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICBpZiAoIW1S
ZW5kZXJlci0+Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQoKSkKKyAgICB7CisgICAgICAgIGlm
ICghaXNQb3cyKG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgpKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBQdXJnZSBhcnJheSBsZXZlbHMgMSB0aHJvdWdoIHEgYW5kIHJl
c2V0IHRoZW0gdG8gcmVwcmVzZW50IHRoZSBnZW5lcmF0ZWQgbWlwbWFwIGxldmVscy4KKyAgICB1
bnNpZ25lZCBpbnQgcSA9IGxvZzIobUltYWdlQXJyYXlbMF1bMF0tPmdldFdpZHRoKCkpOworICAg
IGZvciAodW5zaWduZWQgaW50IGYgPSAwOyBmIDwgNjsgZisrKQorICAgIHsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKQorICAgICAgICB7CisgICAgICAgICAg
ICByZWRlZmluZUltYWdlKGYsIGksIG1JbWFnZUFycmF5W2ZdWzBdLT5nZXRJbnRlcm5hbEZvcm1h
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1heChtSW1hZ2VBcnJheVtmXVsw
XS0+Z2V0V2lkdGgoKSA+PiBpLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
YXgobUltYWdlQXJyYXlbZl1bMF0tPmdldFdpZHRoKCkgPj4gaSwgMSkpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKG1UZXhTdG9yYWdlICYmIG1UZXhTdG9yYWdlLT5pc1JlbmRlclRhcmdl
dCgpKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZiA9IDA7IGYgPCA2OyBmKysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDw9IHE7
IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtVGV4U3RvcmFnZS0+Z2VuZXJh
dGVNaXBtYXAoZiwgaSk7CisKKyAgICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtmXVtpXS0+bWFy
a0NsZWFuKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZiA9IDA7IGYgPCA2OyBmKyspCisgICAgICAg
IHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDw9IHE7IGkrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtUmVuZGVyZXItPmdlbmVyYXRlTWlwbWFwKG1J
bWFnZUFycmF5W2ZdW2ldLCBtSW1hZ2VBcnJheVtmXVtpIC0gMV0pOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCitSZW5kZXJidWZmZXIgKlRleHR1cmVDdWJlTWFwOjpnZXRS
ZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdldCkKK3sKKyAgICBpZiAoIUlzQ3ViZW1hcFRleHR1cmVU
YXJnZXQodGFyZ2V0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sIChSZW5kZXJidWZmZXIgKilOVUxMKTsKKyAgICB9CisKKyAgICB1bnNpZ25l
ZCBpbnQgZmFjZSA9IGZhY2VJbmRleCh0YXJnZXQpOworCisgICAgaWYgKG1GYWNlUHJveGllc1tm
YWNlXSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgbUZhY2VQcm94aWVzW2ZhY2VdID0gbmV3IFJl
bmRlcmJ1ZmZlcihtUmVuZGVyZXIsIGlkKCksIG5ldyBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1h
cCh0aGlzLCB0YXJnZXQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbUZhY2VQcm94aWVzW2ZhY2Vd
OworfQorCityeDo6UmVuZGVyVGFyZ2V0ICpUZXh0dXJlQ3ViZU1hcDo6Z2V0UmVuZGVyVGFyZ2V0
KEdMZW51bSB0YXJnZXQpCit7CisgICAgQVNTRVJUKElzQ3ViZW1hcFRleHR1cmVUYXJnZXQodGFy
Z2V0KSk7CisKKyAgICAvLyBlbnN1cmUgdGhlIHVuZGVybHlpbmcgdGV4dHVyZSBpcyBjcmVhdGVk
CisgICAgaWYgKGdldFN0b3JhZ2UodHJ1ZSkgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIHJldHVy
biBOVUxMOworICAgIH0KKworICAgIHVwZGF0ZVRleHR1cmUoKTsKKyAgICAKKyAgICByZXR1cm4g
bVRleFN0b3JhZ2UtPmdldFJlbmRlclRhcmdldCh0YXJnZXQpOworfQorCitpbnQgVGV4dHVyZUN1
YmVNYXA6OmxldmVsQ291bnQoKQoreworICAgIHJldHVybiBtVGV4U3RvcmFnZSA/IG1UZXhTdG9y
YWdlLT5sZXZlbENvdW50KCkgLSBnZXRMb2RPZmZzZXQoKSA6IDA7Cit9CisKK3J4OjpUZXh0dXJl
U3RvcmFnZUludGVyZmFjZSAqVGV4dHVyZUN1YmVNYXA6OmdldFN0b3JhZ2UoYm9vbCByZW5kZXJU
YXJnZXQpCit7CisgICAgaWYgKCFtVGV4U3RvcmFnZSB8fCAocmVuZGVyVGFyZ2V0ICYmICFtVGV4
U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQoKSkpCisgICAgeworICAgICAgICBpZiAocmVuZGVyVGFy
Z2V0KQorICAgICAgICB7CisgICAgICAgICAgICBjb252ZXJ0VG9SZW5kZXJUYXJnZXQoKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0ZVRleHR1
cmUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtVGV4U3RvcmFnZTsKK30KKwor
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0
dXJlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL1RleHR1cmUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNzUgQEAKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIFRleHR1cmUuaDogRGVmaW5lcyB0aGUgYWJzdHJhY3QgZ2w6OlRleHR1cmUg
Y2xhc3MgYW5kIGl0cyBjb25jcmV0ZSBkZXJpdmVkCisvLyBjbGFzc2VzIFRleHR1cmUyRCBhbmQg
VGV4dHVyZUN1YmVNYXAuIEltcGxlbWVudHMgR0wgdGV4dHVyZSBvYmplY3RzIGFuZAorLy8gcmVs
YXRlZCBmdW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAzLjcgcGFnZSA2
My4KKworI2lmbmRlZiBMSUJHTEVTVjJfVEVYVFVSRV9IXworI2RlZmluZSBMSUJHTEVTVjJfVEVY
VFVSRV9IXworCisjaW5jbHVkZSA8dmVjdG9yPgorCisjZGVmaW5lIEdMX0FQSUNBTEwKKyNpbmNs
dWRlIDxHTEVTMi9nbDIuaD4KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUg
ImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9hbmdsZXR5cGVz
LmgiCisKK25hbWVzcGFjZSBlZ2wKK3sKK2NsYXNzIFN1cmZhY2U7Cit9CisKK25hbWVzcGFjZSBy
eAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVyZmFjZTsKK2Ns
YXNzIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ7CitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVy
ZmFjZUN1YmU7CitjbGFzcyBSZW5kZXJUYXJnZXQ7CitjbGFzcyBJbWFnZTsKK30KKworbmFtZXNw
YWNlIGdsCit7CitjbGFzcyBGcmFtZWJ1ZmZlcjsKK2NsYXNzIFJlbmRlcmJ1ZmZlcjsKKworZW51
bQoreworICAgIC8vIFRoZXNlIGFyZSB0aGUgbWF4aW11bXMgdGhlIGltcGxlbWVudGF0aW9uIGNh
biBzdXBwb3J0CisgICAgLy8gVGhlIGFjdHVhbCBHTCBjYXBzIGFyZSBsaW1pdGVkIGJ5IHRoZSBk
ZXZpY2UgY2FwcworICAgIC8vIGFuZCBzaG91bGQgYmUgcXVlcmllZCBmcm9tIHRoZSBDb250ZXh0
CisgICAgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfU0laRSA9IDE2Mzg0LAorICAgIElNUExF
TUVOVEFUSU9OX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUgPSAxNjM4NCwKKworICAgIElNUExF
TUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUyA9IDE1ICAgLy8gMStsb2cyIG9mIE1BWF9URVhU
VVJFX1NJWkUKK307CisKK2NsYXNzIFRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRPYmplY3QKK3sK
KyAgcHVibGljOgorICAgIFRleHR1cmUocng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGlk
KTsKKworICAgIHZpcnR1YWwgflRleHR1cmUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBhZGRQcm94
eVJlZihjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
bGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KSA9IDA7CisKKyAgICB2aXJ0dWFs
IEdMZW51bSBnZXRUYXJnZXQoKSBjb25zdCA9IDA7CisKKyAgICBib29sIHNldE1pbkZpbHRlcihH
TGVudW0gZmlsdGVyKTsKKyAgICBib29sIHNldE1hZ0ZpbHRlcihHTGVudW0gZmlsdGVyKTsKKyAg
ICBib29sIHNldFdyYXBTKEdMZW51bSB3cmFwKTsKKyAgICBib29sIHNldFdyYXBUKEdMZW51bSB3
cmFwKTsKKyAgICBib29sIHNldE1heEFuaXNvdHJvcHkoZmxvYXQgdGV4dHVyZU1heEFuaXNvdHJv
cHksIGZsb2F0IGNvbnRleHRNYXhBbmlzb3Ryb3B5KTsKKyAgICBib29sIHNldFVzYWdlKEdMZW51
bSB1c2FnZSk7CisKKyAgICBHTGVudW0gZ2V0TWluRmlsdGVyKCkgY29uc3Q7CisgICAgR0xlbnVt
IGdldE1hZ0ZpbHRlcigpIGNvbnN0OworICAgIEdMZW51bSBnZXRXcmFwUygpIGNvbnN0OworICAg
IEdMZW51bSBnZXRXcmFwVCgpIGNvbnN0OworICAgIGZsb2F0IGdldE1heEFuaXNvdHJvcHkoKSBj
b25zdDsKKyAgICBpbnQgZ2V0TG9kT2Zmc2V0KCk7CisgICAgdm9pZCBnZXRTYW1wbGVyU3RhdGUo
U2FtcGxlclN0YXRlICpzYW1wbGVyKTsKKyAgICBHTGVudW0gZ2V0VXNhZ2UoKSBjb25zdDsKKyAg
ICBib29sIGlzTWlwbWFwRmlsdGVyZWQoKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBpc1Nh
bXBsZXJDb21wbGV0ZSgpIGNvbnN0ID0gMDsKKworICAgIHJ4OjpUZXh0dXJlU3RvcmFnZUludGVy
ZmFjZSAqZ2V0TmF0aXZlVGV4dHVyZSgpOworICAgIHZpcnR1YWwgUmVuZGVyYnVmZmVyICpnZXRS
ZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdldCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGdlbmVy
YXRlTWlwbWFwcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVN1YkltYWdlKEdMZW51bSB0
YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgRnJhbWVidWZmZXIgKnNv
dXJjZSkgPSAwOworCisgICAgYm9vbCBoYXNEaXJ0eVBhcmFtZXRlcnMoKSBjb25zdDsKKyAgICBi
b29sIGhhc0RpcnR5SW1hZ2VzKCkgY29uc3Q7CisgICAgdm9pZCByZXNldERpcnR5KCk7CisgICAg
dW5zaWduZWQgaW50IGdldFRleHR1cmVTZXJpYWwoKTsKKyAgICB1bnNpZ25lZCBpbnQgZ2V0UmVu
ZGVyVGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpOworCisgICAgYm9vbCBpc0ltbXV0YWJsZSgp
IGNvbnN0OworCisgICAgc3RhdGljIGNvbnN0IEdMdWludCBJTkNPTVBMRVRFX1RFWFRVUkVfSUQg
PSBzdGF0aWNfY2FzdDxHTHVpbnQ+KC0xKTsgICAvLyBFdmVyeSB0ZXh0dXJlIHRha2VzIGFuIGlk
IGF0IGNyZWF0aW9uIHRpbWUuIFRoZSB2YWx1ZSBpcyBhcmJpdHJhcnkgYmVjYXVzZSBpdCBpcyBu
ZXZlciByZWdpc3RlcmVkIHdpdGggdGhlIHJlc291cmNlIG1hbmFnZXIuCisKKyAgcHJvdGVjdGVk
OgorICAgIHZvaWQgc2V0SW1hZ2UoR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpw
aXhlbHMsIHJ4OjpJbWFnZSAqaW1hZ2UpOworICAgIGJvb2wgc3ViSW1hZ2UoR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBm
b3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBp
eGVscywgcng6OkltYWdlICppbWFnZSk7CisgICAgdm9pZCBzZXRDb21wcmVzc2VkSW1hZ2UoR0xz
aXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscywgcng6OkltYWdlICppbWFnZSk7Cisg
ICAgYm9vbCBzdWJJbWFnZUNvbXByZXNzZWQoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1h
Z2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMsIHJ4OjpJbWFnZSAqaW1hZ2UpOworCisgICAgR0xp
bnQgY3JlYXRpb25MZXZlbHMoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpIGNvbnN0Owor
ICAgIEdMaW50IGNyZWF0aW9uTGV2ZWxzKEdMc2l6ZWkgc2l6ZSkgY29uc3Q7CisKKyAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlVGV4dHVyZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4
dHVyZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29udmVydFRvUmVuZGVyVGFyZ2V0KCkgPSAw
OworICAgIHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KEdMZW51bSB0
YXJnZXQpID0gMDsKKworICAgIHZpcnR1YWwgaW50IGxldmVsQ291bnQoKSA9IDA7CisKKyAgICBy
eDo6UmVuZGVyZXIgKm1SZW5kZXJlcjsKKworICAgIFNhbXBsZXJTdGF0ZSBtU2FtcGxlclN0YXRl
OworICAgIEdMZW51bSBtVXNhZ2U7CisKKyAgICBib29sIG1EaXJ0eUltYWdlczsKKworICAgIGJv
b2wgbUltbXV0YWJsZTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
TihUZXh0dXJlKTsKKworICAgIHZpcnR1YWwgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlICpn
ZXRTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KSA9IDA7Cit9OworCitjbGFzcyBUZXh0dXJlMkQg
OiBwdWJsaWMgVGV4dHVyZQoreworICBwdWJsaWM6CisgICAgVGV4dHVyZTJEKHJ4OjpSZW5kZXJl
ciAqcmVuZGVyZXIsIEdMdWludCBpZCk7CisKKyAgICB+VGV4dHVyZTJEKCk7CisKKyAgICB2b2lk
IGFkZFByb3h5UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpOworICAgIHZvaWQgcmVsZWFz
ZVByb3h5KGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpOworCisgICAgdmlydHVhbCBHTGVudW0g
Z2V0VGFyZ2V0KCkgY29uc3Q7CisKKyAgICBHTHNpemVpIGdldFdpZHRoKEdMaW50IGxldmVsKSBj
b25zdDsKKyAgICBHTHNpemVpIGdldEhlaWdodChHTGludCBsZXZlbCkgY29uc3Q7CisgICAgR0xl
bnVtIGdldEludGVybmFsRm9ybWF0KEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBHTGVudW0gZ2V0
QWN0dWFsRm9ybWF0KEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBib29sIGlzQ29tcHJlc3NlZChH
TGludCBsZXZlbCkgY29uc3Q7CisgICAgYm9vbCBpc0RlcHRoKEdMaW50IGxldmVsKSBjb25zdDsK
KworICAgIHZvaWQgc2V0SW1hZ2UoR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50
LCBjb25zdCB2b2lkICpwaXhlbHMpOworICAgIHZvaWQgc2V0Q29tcHJlc3NlZEltYWdlKEdMaW50
IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xz
aXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscyk7CisgICAgdm9pZCBzdWJJbWFnZShH
TGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tB
bGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7CisgICAgdm9pZCBzdWJJbWFnZUNvbXByZXNz
ZWQoR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29u
c3Qgdm9pZCAqcGl4ZWxzKTsKKyAgICB2b2lkIGNvcHlJbWFnZShHTGludCBsZXZlbCwgR0xlbnVt
IGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEZyYW1lYnVmZmVyICpzb3VyY2UpOworICAgIHZpcnR1YWwgdm9pZCBjb3B5U3ViSW1hZ2UoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZl
ciAqc291cmNlKTsKKyAgICB2b2lkIHN0b3JhZ2UoR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworCisgICAgdmlydHVh
bCBib29sIGlzU2FtcGxlckNvbXBsZXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGJpbmRU
ZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOworICAgIHZpcnR1YWwgdm9pZCByZWxlYXNl
VGV4SW1hZ2UoKTsKKworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcHMoKTsKKworICAg
IHZpcnR1YWwgUmVuZGVyYnVmZmVyICpnZXRSZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdldCk7CisK
KyAgcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJidWZmZXJUZXh0dXJlMkQ7Cisg
ICAgdmlydHVhbCByeDo6UmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoR0xlbnVtIHRhcmdl
dCk7CisgICAgdmlydHVhbCByeDo6UmVuZGVyVGFyZ2V0ICpnZXREZXB0aFN0ZW5jaWwoR0xlbnVt
IHRhcmdldCk7CisgICAgdmlydHVhbCBpbnQgbGV2ZWxDb3VudCgpOworCisgIHByaXZhdGU6Cisg
ICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmUyRCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlVGV4dHVyZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb1JlbmRlclRhcmdldCgpOworICAgIHZpcnR1YWwgcng6
OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlICpnZXRTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KTsK
KworICAgIGJvb2wgaXNNaXBtYXBDb21wbGV0ZSgpIGNvbnN0OworCisgICAgdm9pZCByZWRlZmlu
ZUltYWdlKEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQpOworICAgIHZvaWQgY29tbWl0UmVjdChHTGludCBsZXZlbCwgR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwor
CisgICAgcng6OkltYWdlICptSW1hZ2VBcnJheVtJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9M
RVZFTFNdOworCisgICAgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKm1UZXhTdG9yYWdl
OworICAgIGVnbDo6U3VyZmFjZSAqbVN1cmZhY2U7CisKKyAgICAvLyBBIHNwZWNpZmljIGludGVy
bmFsIHJlZmVyZW5jZSBjb3VudCBpcyBrZXB0IGZvciBjb2xvcmJ1ZmZlciBwcm94eSByZWZlcmVu
Y2VzLAorICAgIC8vIGJlY2F1c2UsIGFzIHRoZSByZW5kZXJidWZmZXIgYWN0aW5nIGFzIHByb3h5
IHdpbGwgbWFpbnRhaW4gYSBiaW5kaW5nIHBvaW50ZXIKKyAgICAvLyBiYWNrIHRvIHRoaXMgdGV4
dHVyZSwgdGhlcmUgd291bGQgYmUgYSBjaXJjdWxhciByZWZlcmVuY2UgaWYgd2UgdXNlZCBhIGJp
bmRpbmcKKyAgICAvLyBwb2ludGVyIGhlcmUuIFRoaXMgcmVmZXJlbmNlIGNvdW50IHdpbGwgY2F1
c2UgdGhlIHBvaW50ZXIgdG8gYmUgc2V0IHRvIE5VTEwgaWYKKyAgICAvLyB0aGUgY291bnQgZHJv
cHMgdG8gemVybywgYnV0IHdpbGwgbm90IGNhdXNlIGRlbGV0aW9uIG9mIHRoZSBSZW5kZXJidWZm
ZXIuCisgICAgUmVuZGVyYnVmZmVyICptQ29sb3JidWZmZXJQcm94eTsKKyAgICB1bnNpZ25lZCBp
bnQgbVByb3h5UmVmczsKK307CisKK2NsYXNzIFRleHR1cmVDdWJlTWFwIDogcHVibGljIFRleHR1
cmUKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVDdWJlTWFwKHJ4OjpSZW5kZXJlciAqcmVuZGVy
ZXIsIEdMdWludCBpZCk7CisKKyAgICB+VGV4dHVyZUN1YmVNYXAoKTsKKworICAgIHZvaWQgYWRk
UHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7CisgICAgdm9pZCByZWxlYXNlUHJv
eHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7CisKKyAgICB2aXJ0dWFsIEdMZW51bSBnZXRU
YXJnZXQoKSBjb25zdDsKKyAgICAKKyAgICBHTHNpemVpIGdldFdpZHRoKEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBHTHNpemVpIGdldEhlaWdodChHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCkgY29uc3Q7CisgICAgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBHTGVudW0gZ2V0QWN0dWFsRm9ybWF0
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBib29sIGlzQ29tcHJlc3Nl
ZChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEltYWdl
UG9zWChHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBm
b3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBp
eGVscyk7CisgICAgdm9pZCBzZXRJbWFnZU5lZ1goR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNr
QWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOworICAgIHZvaWQgc2V0SW1hZ2VQb3NZKEdM
aW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsK
KyAgICB2b2lkIHNldEltYWdlTmVnWShHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1l
bnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7CisgICAgdm9pZCBzZXRJbWFnZVBvc1ooR0xpbnQgbGV2
ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOworICAgIHZv
aWQgc2V0SW1hZ2VOZWdaKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29u
c3Qgdm9pZCAqcGl4ZWxzKTsKKworICAgIHZvaWQgc2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSBm
YWNlLCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpOworCisgICAgdm9p
ZCBzdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQs
IEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7
CisgICAgdm9pZCBzdWJJbWFnZUNvbXByZXNzZWQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxz
KTsKKyAgICB2b2lkIGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVt
IGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEZyYW1lYnVmZmVyICpzb3VyY2UpOworICAgIHZpcnR1YWwgdm9pZCBjb3B5U3ViSW1hZ2UoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZl
ciAqc291cmNlKTsKKyAgICB2b2lkIHN0b3JhZ2UoR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSBzaXplKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1NhbXBsZXJD
b21wbGV0ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwcygpOwor
CisgICAgdmlydHVhbCBSZW5kZXJidWZmZXIgKmdldFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0
KTsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgZmFjZUluZGV4KEdMZW51bSBmYWNlKTsKKwor
ICBwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFw
OworICAgIHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KEdMZW51bSB0
YXJnZXQpOworICAgIHZpcnR1YWwgaW50IGxldmVsQ291bnQoKTsKKworICBwcml2YXRlOgorICAg
IERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUZXh0dXJlQ3ViZU1hcCk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlVGV4dHVyZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlKCk7
CisgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb1JlbmRlclRhcmdldCgpOworICAgIHZpcnR1YWwg
cng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlICpnZXRTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0
KTsKKworICAgIGJvb2wgaXNDdWJlQ29tcGxldGUoKSBjb25zdDsKKyAgICBib29sIGlzTWlwbWFw
Q3ViZUNvbXBsZXRlKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEltYWdlKGludCBmYWNlSW5kZXgs
IEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxz
KTsKKyAgICB2b2lkIGNvbW1pdFJlY3QoaW50IGZhY2VJbmRleCwgR0xpbnQgbGV2ZWwsIEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsK
KyAgICB2b2lkIHJlZGVmaW5lSW1hZ2UoaW50IGZhY2VJbmRleCwgR0xpbnQgbGV2ZWwsIEdMaW50
IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisKKyAgICBy
eDo6SW1hZ2UgKm1JbWFnZUFycmF5WzZdW0lNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVM
U107CisKKyAgICByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICptVGV4U3RvcmFnZTsK
KworICAgIC8vIEEgc3BlY2lmaWMgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IGlzIGtlcHQgZm9y
IGNvbG9yYnVmZmVyIHByb3h5IHJlZmVyZW5jZXMsCisgICAgLy8gYmVjYXVzZSwgYXMgdGhlIHJl
bmRlcmJ1ZmZlciBhY3RpbmcgYXMgcHJveHkgd2lsbCBtYWludGFpbiBhIGJpbmRpbmcgcG9pbnRl
cgorICAgIC8vIGJhY2sgdG8gdGhpcyB0ZXh0dXJlLCB0aGVyZSB3b3VsZCBiZSBhIGNpcmN1bGFy
IHJlZmVyZW5jZSBpZiB3ZSB1c2VkIGEgYmluZGluZworICAgIC8vIHBvaW50ZXIgaGVyZS4gVGhp
cyByZWZlcmVuY2UgY291bnQgd2lsbCBjYXVzZSB0aGUgcG9pbnRlciB0byBiZSBzZXQgdG8gTlVM
TCBpZgorICAgIC8vIHRoZSBjb3VudCBkcm9wcyB0byB6ZXJvLCBidXQgd2lsbCBub3QgY2F1c2Ug
ZGVsZXRpb24gb2YgdGhlIFJlbmRlcmJ1ZmZlci4KKyAgICBSZW5kZXJidWZmZXIgKm1GYWNlUHJv
eGllc1s2XTsKKyAgICB1bnNpZ25lZCBpbnQgKm1GYWNlUHJveHlSZWZzWzZdOworfTsKK30KKwor
I2VuZGlmICAgLy8gTElCR0xFU1YyX1RFWFRVUkVfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvVW5pZm9ybS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Vbmlmb3JtLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVW5pZm9ybS5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8NCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLg0KKy8vDQorDQorI2luY2x1ZGUgImxpYkdMRVN2Mi9Vbmlmb3JtLmgiDQorDQor
I2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCINCisNCituYW1lc3BhY2UgZ2wNCit7DQor
DQorVW5pZm9ybTo6VW5pZm9ybShHTGVudW0gdHlwZSwgR0xlbnVtIHByZWNpc2lvbiwgY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUsIHVuc2lnbmVkIGludCBhcnJheVNpemUpDQorICAgIDogdHlwZSh0
eXBlKSwgcHJlY2lzaW9uKHByZWNpc2lvbiksIG5hbWUobmFtZSksIGFycmF5U2l6ZShhcnJheVNp
emUpDQorew0KKyAgICBpbnQgYnl0ZXMgPSBnbDo6VW5pZm9ybUludGVybmFsU2l6ZSh0eXBlKSAq
IGVsZW1lbnRDb3VudCgpOw0KKyAgICBkYXRhID0gbmV3IHVuc2lnbmVkIGNoYXJbYnl0ZXNdOw0K
KyAgICBtZW1zZXQoZGF0YSwgMCwgYnl0ZXMpOw0KKyAgICBkaXJ0eSA9IHRydWU7DQorDQorICAg
IHBzUmVnaXN0ZXJJbmRleCA9IC0xOw0KKyAgICB2c1JlZ2lzdGVySW5kZXggPSAtMTsNCisgICAg
cmVnaXN0ZXJDb3VudCA9IFZhcmlhYmxlUm93Q291bnQodHlwZSkgKiBlbGVtZW50Q291bnQoKTsN
Cit9DQorDQorVW5pZm9ybTo6flVuaWZvcm0oKQ0KK3sNCisgICAgZGVsZXRlW10gZGF0YTsNCit9
DQorDQorYm9vbCBVbmlmb3JtOjppc0FycmF5KCkgY29uc3QNCit7DQorICAgIHJldHVybiBhcnJh
eVNpemUgPiAwOw0KK30NCisNCit1bnNpZ25lZCBpbnQgVW5pZm9ybTo6ZWxlbWVudENvdW50KCkg
Y29uc3QNCit7DQorICAgIHJldHVybiBhcnJheVNpemUgPiAwID8gYXJyYXlTaXplIDogMTsNCit9
DQorDQorfQ0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVW5p
Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvVW5pZm9ybS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9Vbmlmb3JtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8vDQor
Ly8gQ29weXJpZ2h0IChjKSAyMDEwLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4NCisvLw0KKw0KKyNpZm5kZWYgTElCR0xFU1YyX1VOSUZPUk1fSF8NCisjZGVm
aW5lIExJQkdMRVNWMl9VTklGT1JNX0hfDQorDQorI2luY2x1ZGUgPHN0cmluZz4NCisjaW5jbHVk
ZSA8dmVjdG9yPg0KKw0KKyNkZWZpbmUgR0xfQVBJQ0FMTA0KKyNpbmNsdWRlIDxHTEVTMi9nbDIu
aD4NCisNCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiDQorDQorbmFtZXNwYWNlIGdsDQorew0K
Kw0KKy8vIEhlbHBlciBzdHJ1Y3QgcmVwcmVzZW50aW5nIGEgc2luZ2xlIHNoYWRlciB1bmlmb3Jt
DQorc3RydWN0IFVuaWZvcm0NCit7DQorICAgIFVuaWZvcm0oR0xlbnVtIHR5cGUsIEdMZW51bSBw
cmVjaXNpb24sIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXpl
KTsNCisNCisgICAgflVuaWZvcm0oKTsNCisNCisgICAgYm9vbCBpc0FycmF5KCkgY29uc3Q7DQor
ICAgIHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQoKSBjb25zdDsNCisNCisgICAgY29uc3QgR0xl
bnVtIHR5cGU7DQorICAgIGNvbnN0IEdMZW51bSBwcmVjaXNpb247DQorICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIG5hbWU7DQorICAgIGNvbnN0IHVuc2lnbmVkIGludCBhcnJheVNpemU7DQorDQorICAg
IHVuc2lnbmVkIGNoYXIgKmRhdGE7DQorICAgIGJvb2wgZGlydHk7DQorDQorICAgIGludCBwc1Jl
Z2lzdGVySW5kZXg7DQorICAgIGludCB2c1JlZ2lzdGVySW5kZXg7DQorICAgIHVuc2lnbmVkIGlu
dCByZWdpc3RlckNvdW50Ow0KK307DQorDQordHlwZWRlZiBzdGQ6OnZlY3RvcjxVbmlmb3JtKj4g
VW5pZm9ybUFycmF5Ow0KKw0KK30NCisNCisjZW5kaWYgICAvLyBMSUJHTEVTVjJfVU5JRk9STV9I
Xw0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvYW5nbGV0eXBl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
YW5nbGV0eXBlcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9hbmdsZXR5cGVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI5IEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBhbmdsZXR5cGVzLmggOiBEZWZpbmVzIGEgdmFyaWV0eSBv
ZiBzdHJ1Y3R1cmVzIGFuZCBlbnVtIHR5cGVzIHRoYXQgYXJlIHVzZWQgdGhyb3VnaG91dCBsaWJH
TEVTdjIKKworI2lmbmRlZiBMSUJHTEVTVjJfQU5HTEVUWVBFU19IXworI2RlZmluZSBMSUJHTEVT
VjJfQU5HTEVUWVBFU19IXworCituYW1lc3BhY2UgZ2wKK3sKKworZW51bSBUZXh0dXJlVHlwZQor
eworICAgIFRFWFRVUkVfMkQsCisgICAgVEVYVFVSRV9DVUJFLAorCisgICAgVEVYVFVSRV9UWVBF
X0NPVU5ULAorICAgIFRFWFRVUkVfVU5LTk9XTgorfTsKKworZW51bSBTYW1wbGVyVHlwZQorewor
ICAgIFNBTVBMRVJfUElYRUwsCisgICAgU0FNUExFUl9WRVJURVgKK307CisKK3N0cnVjdCBDb2xv
cgoreworICAgIGZsb2F0IHJlZDsKKyAgICBmbG9hdCBncmVlbjsKKyAgICBmbG9hdCBibHVlOwor
ICAgIGZsb2F0IGFscGhhOworfTsKKworc3RydWN0IFJlY3RhbmdsZQoreworICAgIGludCB4Owor
ICAgIGludCB5OworICAgIGludCB3aWR0aDsKKyAgICBpbnQgaGVpZ2h0OworfTsKKworc3RydWN0
IFJhc3Rlcml6ZXJTdGF0ZQoreworICAgIGJvb2wgY3VsbEZhY2U7CisgICAgR0xlbnVtIGN1bGxN
b2RlOworICAgIEdMZW51bSBmcm9udEZhY2U7CisKKyAgICBib29sIHBvbHlnb25PZmZzZXRGaWxs
OworICAgIEdMZmxvYXQgcG9seWdvbk9mZnNldEZhY3RvcjsKKyAgICBHTGZsb2F0IHBvbHlnb25P
ZmZzZXRVbml0czsKKworICAgIGJvb2wgcG9pbnREcmF3TW9kZTsKKyAgICBib29sIG11bHRpU2Ft
cGxlOworfTsKKworc3RydWN0IEJsZW5kU3RhdGUKK3sKKyAgICBib29sIGJsZW5kOworICAgIEdM
ZW51bSBzb3VyY2VCbGVuZFJHQjsKKyAgICBHTGVudW0gZGVzdEJsZW5kUkdCOworICAgIEdMZW51
bSBzb3VyY2VCbGVuZEFscGhhOworICAgIEdMZW51bSBkZXN0QmxlbmRBbHBoYTsKKyAgICBHTGVu
dW0gYmxlbmRFcXVhdGlvblJHQjsKKyAgICBHTGVudW0gYmxlbmRFcXVhdGlvbkFscGhhOworCisg
ICAgYm9vbCBjb2xvck1hc2tSZWQ7CisgICAgYm9vbCBjb2xvck1hc2tHcmVlbjsKKyAgICBib29s
IGNvbG9yTWFza0JsdWU7CisgICAgYm9vbCBjb2xvck1hc2tBbHBoYTsKKworICAgIGJvb2wgc2Ft
cGxlQWxwaGFUb0NvdmVyYWdlOworCisgICAgYm9vbCBkaXRoZXI7Cit9OworCitzdHJ1Y3QgRGVw
dGhTdGVuY2lsU3RhdGUKK3sKKyAgICBib29sIGRlcHRoVGVzdDsKKyAgICBHTGVudW0gZGVwdGhG
dW5jOworICAgIGJvb2wgZGVwdGhNYXNrOworCisgICAgYm9vbCBzdGVuY2lsVGVzdDsKKyAgICBH
TGVudW0gc3RlbmNpbEZ1bmM7CisgICAgR0x1aW50IHN0ZW5jaWxNYXNrOworICAgIEdMZW51bSBz
dGVuY2lsRmFpbDsKKyAgICBHTGVudW0gc3RlbmNpbFBhc3NEZXB0aEZhaWw7CisgICAgR0xlbnVt
IHN0ZW5jaWxQYXNzRGVwdGhQYXNzOworICAgIEdMdWludCBzdGVuY2lsV3JpdGVtYXNrOworICAg
IEdMZW51bSBzdGVuY2lsQmFja0Z1bmM7CisgICAgR0x1aW50IHN0ZW5jaWxCYWNrTWFzazsKKyAg
ICBHTGVudW0gc3RlbmNpbEJhY2tGYWlsOworICAgIEdMZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0
aEZhaWw7CisgICAgR0xlbnVtIHN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzczsKKyAgICBHTHVpbnQg
c3RlbmNpbEJhY2tXcml0ZW1hc2s7Cit9OworCitzdHJ1Y3QgU2FtcGxlclN0YXRlCit7CisgICAg
R0xlbnVtIG1pbkZpbHRlcjsKKyAgICBHTGVudW0gbWFnRmlsdGVyOworICAgIEdMZW51bSB3cmFw
UzsKKyAgICBHTGVudW0gd3JhcFQ7CisgICAgZmxvYXQgbWF4QW5pc290cm9weTsKKyAgICBpbnQg
bG9kT2Zmc2V0OworfTsKKworc3RydWN0IENsZWFyUGFyYW1ldGVycworeworICAgIEdMYml0Zmll
bGQgbWFzazsKKworICAgIENvbG9yIGNvbG9yQ2xlYXJWYWx1ZTsKKyAgICBib29sIGNvbG9yTWFz
a1JlZDsKKyAgICBib29sIGNvbG9yTWFza0dyZWVuOworICAgIGJvb2wgY29sb3JNYXNrQmx1ZTsK
KyAgICBib29sIGNvbG9yTWFza0FscGhhOworCisgICAgZmxvYXQgZGVwdGhDbGVhclZhbHVlOwor
CisgICAgR0xpbnQgc3RlbmNpbENsZWFyVmFsdWU7CisgICAgR0x1aW50IHN0ZW5jaWxXcml0ZU1h
c2s7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfQU5HTEVUWVBFU19IXwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9jb25zdGFudHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2NvbnN0YW50cy5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9j
b25zdGFudHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIENvbnRhbnRzLmg6IERlZmluZXMgc29tZSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBhbmQg
Z2wgY29uc3RhbnRzCisKKyNpZm5kZWYgTElCR0xFU1YyX0NPTlNUQU5UU19IXworI2RlZmluZSBM
SUJHTEVTVjJfQ09OU1RBTlRTX0hfCisKK25hbWVzcGFjZSBnbAoreworCitlbnVtCit7CisgICAg
TUFYX1ZFUlRFWF9BVFRSSUJTID0gMTYsCisgICAgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSAx
NiwKKworICAgIC8vIEltcGxlbWVudGF0aW9uIHVwcGVyIGxpbWl0cywgcmVhbCBtYXhpbXVtcyBk
ZXBlbmQgb24gdGhlIGhhcmR3YXJlCisgICAgSU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRFWF9URVhU
VVJFX0lNQUdFX1VOSVRTID0gMTYsCisgICAgSU1QTEVNRU5UQVRJT05fTUFYX0NPTUJJTkVEX1RF
WFRVUkVfSU1BR0VfVU5JVFMgPSBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyArIElNUExFTUVOVEFU
SU9OX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUywgICAgCisKKyAgICBJTVBMRU1FTlRB
VElPTl9NQVhfVkFSWUlOR19WRUNUT1JTID0gMzIsCisgICAgSU1QTEVNRU5UQVRJT05fTUFYX0RS
QVdfQlVGRkVSUyA9IDgKK307CisKK2NvbnN0IGZsb2F0IEFMSUFTRURfTElORV9XSURUSF9SQU5H
RV9NSU4gPSAxLjBmOworY29uc3QgZmxvYXQgQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFX01BWCA9
IDEuMGY7Citjb25zdCBmbG9hdCBBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0VfTUlOID0gMS4wZjsK
KworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX0NPTlNUQU5UU19IXwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xF
U3YyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MTA2IEBACisjaW5jbHVkZSAicHJlY29t
cGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIGxpYkdMRVN2Mi5jcHA6IEltcGxlbWVu
dHMgdGhlIGV4cG9ydGVkIE9wZW5HTCBFUyAyLjAgZnVuY3Rpb25zLgorCisjaW5jbHVkZSAiY29t
bW9uL3ZlcnNpb24uaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAi
bGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9CdWZmZXIuaCIKKyNp
bmNsdWRlICJsaWJHTEVTdjIvRmVuY2UuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvRnJhbWVidWZm
ZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL1Byb2dyYW0uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1F1ZXJ5
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKworYm9vbCB2YWxpZEltYWdlU2l6
ZShHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgaWYg
KGxldmVsIDwgMCB8fCB3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoZ2w6OmdldENvbnRleHQoKSAmJiBnbDo6Z2V0
Q29udGV4dCgpLT5zdXBwb3J0c05vblBvd2VyMlRleHR1cmUoKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChsZXZlbCA9PSAwKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGdsOjppc1BvdzIod2lkdGgpICYmIGdsOjpp
c1BvdzIoaGVpZ2h0KSkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHJldHVybiBmYWxzZTsKK30KKworLy8gVmVyaWZ5IHRoYXQgZm9ybWF0L3R5cGUgYXJlIG9uZSBv
ZiB0aGUgY29tYmluYXRpb25zIGZyb20gdGFibGUgMy40LgorYm9vbCBjaGVja1RleHR1cmVGb3Jt
YXRUeXBlKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKQoreworICAgIC8vIHZhbGlkYXRlIDxm
b3JtYXQ+IGJ5IGl0c2VsZiAodXNlZCBhcyBzZWNvbmRhcnkga2V5IGJlbG93KQorICAgIHN3aXRj
aCAoZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgIGNhc2UgR0xfQkdS
QV9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgIGNhc2UgR0xfQUxQSEE6CisgICAgICBj
YXNlIEdMX0xVTUlOQU5DRToKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOgorICAgICAg
Y2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6CisgICAgICBjYXNlIEdMX0RFUFRIX1NURU5DSUxfT0VT
OgorICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCBmYWxzZSk7CisgICAgfQorCisgICAgLy8gaW52YWxpZCA8dHlw
ZT4gLT4gc2V0cyBJTlZBTElEX0VOVU0KKyAgICAvLyBpbnZhbGlkIDxmb3JtYXQ+Kzx0eXBlPiBj
b21iaW5hdGlvbiAtPiBzZXRzIElOVkFMSURfT1BFUkFUSU9OCisgICAgc3dpdGNoICh0eXBlKQor
ICAgIHsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgc3dpdGNoIChmb3Jt
YXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgY2FzZSBH
TF9CR1JBX0VYVDoKKyAgICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICBjYXNlIEdMX0FM
UEhBOgorICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOgorICAgICAgICAgIGNhc2UgR0xfTFVN
SU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGZh
bHNlKTsKKyAgICAgICAgfQorCisgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgY2FzZSBHTF9I
QUxGX0ZMT0FUX09FUzoKKyAgICAgICAgc3dpdGNoIChmb3JtYXQpCisgICAgICAgIHsKKyAgICAg
ICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgY2Fz
ZSBHTF9BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgICBjYXNl
IEdMX0xVTUlOQU5DRV9BTFBIQToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80
XzRfNF80OgorICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xOgorICAgICAgICBz
d2l0Y2ggKGZvcm1hdCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgICAgIH0KKwor
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNToKKyAgICAgICAgc3dpdGNoIChmb3Jt
YXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgY2FzZSBH
TF9VTlNJR05FRF9TSE9SVDoKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICBz
d2l0Y2ggKGZvcm1hdCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9O
RU5UOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGZhbHNlKTsKKyAg
ICAgICAgfQorCisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yNF84X09FUzoKKyAgICAgICAg
c3dpdGNoIChmb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0RFUFRIX1NURU5D
SUxfT0VTOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGZhbHNlKTsK
KyAgICAgICAgfQorCisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfRU5VTSwgZmFsc2UpOworICAgIH0KK30KKworYm9vbCB2YWxpZGF0ZVN1YkltYWdl
UGFyYW1zMkQoYm9vbCBjb21wcmVzc2VkLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZz
ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlMkQgKnRleHR1cmUpCit7CisgICAgaWYgKCF0
ZXh0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgZmFsc2UpOworICAgIH0KKworICAgIGlmIChjb21wcmVzc2VkICE9IHRleHR1cmUtPmlz
Q29tcHJlc3NlZChsZXZlbCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgfQorCisgICAgaWYgKGZvcm1hdCAhPSBHTF9O
T05FKQorICAgIHsKKyAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gZ2w6OkNvbnZlcnRT
aXplZEludGVybmFsRm9ybWF0KGZvcm1hdCwgdHlwZSk7CisgICAgICAgIGlmIChpbnRlcm5hbGZv
cm1hdCAhPSB0ZXh0dXJlLT5nZXRJbnRlcm5hbEZvcm1hdChsZXZlbCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGZhbHNlKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjb21wcmVzc2VkKQorICAgIHsKKyAgICAgICAg
aWYgKCh3aWR0aCAlIDQgIT0gMCAmJiB3aWR0aCAhPSB0ZXh0dXJlLT5nZXRXaWR0aCgwKSkgfHwK
KyAgICAgICAgICAgIChoZWlnaHQgJSA0ICE9IDAgJiYgaGVpZ2h0ICE9IHRleHR1cmUtPmdldEhl
aWdodCgwKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh4b2Zm
c2V0ICsgd2lkdGggPiB0ZXh0dXJlLT5nZXRXaWR0aChsZXZlbCkgfHwKKyAgICAgICAgeW9mZnNl
dCArIGhlaWdodCA+IHRleHR1cmUtPmdldEhlaWdodChsZXZlbCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGZhbHNlKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCB2YWxpZGF0ZVN1YkltYWdlUGFyYW1zQ3ViZShib29sIGNv
bXByZXNzZWQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1hcCAqdGV4dHVyZSkKK3sKKyAg
ICBpZiAoIXRleHR1cmUpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgfQorCisgICAgaWYgKGNvbXByZXNzZWQgIT0gdGV4
dHVyZS0+aXNDb21wcmVzc2VkKHRhcmdldCwgbGV2ZWwpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgZmFsc2UpOworICAgIH0KKworICAgIGlm
IChmb3JtYXQgIT0gR0xfTk9ORSkKKyAgICB7CisgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCA9IGdsOjpDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQsIHR5cGUpOworICAgICAg
ICBpZiAoaW50ZXJuYWxmb3JtYXQgIT0gdGV4dHVyZS0+Z2V0SW50ZXJuYWxGb3JtYXQodGFyZ2V0
LCBsZXZlbCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjb21w
cmVzc2VkKQorICAgIHsKKyAgICAgICAgaWYgKCh3aWR0aCAlIDQgIT0gMCAmJiB3aWR0aCAhPSB0
ZXh0dXJlLT5nZXRXaWR0aCh0YXJnZXQsIDApKSB8fAorICAgICAgICAgICAgKGhlaWdodCAlIDQg
IT0gMCAmJiBoZWlnaHQgIT0gdGV4dHVyZS0+Z2V0SGVpZ2h0KHRhcmdldCwgMCkpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBm
YWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoeG9mZnNldCArIHdpZHRoID4gdGV4
dHVyZS0+Z2V0V2lkdGgodGFyZ2V0LCBsZXZlbCkgfHwKKyAgICAgICAgeW9mZnNldCArIGhlaWdo
dCA+IHRleHR1cmUtPmdldEhlaWdodCh0YXJnZXQsIGxldmVsKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgZmFsc2UpOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCisvLyBjaGVjayBmb3IgY29tYmluYXRpb25zIG9mIGZvcm1hdCBhbmQg
dHlwZSB0aGF0IGFyZSB2YWxpZCBmb3IgUmVhZFBpeGVscworYm9vbCB2YWxpZFJlYWRGb3JtYXRU
eXBlKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAoZm9ybWF0KQor
ICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAg
ICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6CisgICAgICAgIHN3aXRj
aCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAg
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVDoKKyAgICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVDoKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitleHRlcm4gIkMiCit7CisKK3ZvaWQg
X19zdGRjYWxsIGdsQWN0aXZlVGV4dHVyZShHTGVudW0gdGV4dHVyZSkKK3sKKyAgICBFVkVOVCgi
KEdMZW51bSB0ZXh0dXJlID0gMHglWCkiLCB0ZXh0dXJlKTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKwor
ICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRleHR1cmUg
PCBHTF9URVhUVVJFMCB8fCB0ZXh0dXJlID4gR0xfVEVYVFVSRTAgKyBjb250ZXh0LT5nZXRNYXhp
bXVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIC0gMSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGNvbnRleHQtPnNldEFjdGl2ZVNhbXBsZXIodGV4dHVyZSAtIEdM
X1RFWFRVUkUwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
IH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xBdHRhY2hTaGFkZXIoR0x1aW50IHByb2dyYW0sIEdM
dWludCBzaGFkZXIpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTHVpbnQg
c2hhZGVyID0gJWQpIiwgcHJvZ3JhbSwgc2hhZGVyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnBy
b2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICAgICAg
Z2w6OlNoYWRlciAqc2hhZGVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U2hhZGVyKHNoYWRlcik7CisK
KyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoIXNoYWRlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0UHJvZ3JhbShzaGFkZXIpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXByb2dy
YW1PYmplY3QtPmF0dGFjaFNoYWRlcihzaGFkZXJPYmplY3QpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
KyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAg
fQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEJlZ2luUXVlcnlFWFQoR0xlbnVtIHRhcmdldCwgR0x1
aW50IGlkKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMdWludCAlZCki
LCB0YXJnZXQsIGlkKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0YXJnZXQp
CisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQ6IAor
ICAgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQ6Cisg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6IAorICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoaWQgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5iZWdpblF1ZXJ5KHRhcmdldCwgaWQpOwor
ICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lk
IF9fc3RkY2FsbCBnbEJpbmRBdHRyaWJMb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGlu
ZGV4LCBjb25zdCBHTGNoYXIqIG5hbWUpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9
ICVkLCBHTHVpbnQgaW5kZXggPSAlZCwgY29uc3QgR0xjaGFyKiBuYW1lID0gMHglMC44cCkiLCBw
cm9ncmFtLCBpbmRleCwgbmFtZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChpbmRl
eCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBp
ZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1P
YmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgICAgICBpZiAo
IXByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmdldFNoYWRlcihwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHN0cm5jbXAobmFt
ZSwgImdsXyIsIDMpID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHByb2dyYW1PYmplY3QtPmJpbmRBdHRyaWJ1dGVMb2NhdGlvbihpbmRleCwgbmFtZSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3Zv
aWQgX19zdGRjYWxsIGdsQmluZEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKQor
eworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMdWludCBidWZmZXIgPSAlZCki
LCB0YXJnZXQsIGJ1ZmZlcik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICBjYXNlIEdMX0FSUkFZX0JVRkZFUjoKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5iaW5kQXJyYXlCdWZmZXIoYnVmZmVyKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgIGNhc2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVI6CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+YmluZEVsZW1lbnRBcnJheUJ1ZmZlcihidWZmZXIpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRj
YWxsIGdsQmluZEZyYW1lYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdMdWludCBmcmFtZWJ1ZmZlcikK
K3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHVpbnQgZnJhbWVidWZmZXIg
PSAlZCkiLCB0YXJnZXQsIGZyYW1lYnVmZmVyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAg
aWYgKHRhcmdldCAhPSBHTF9GUkFNRUJVRkZFUiAmJiB0YXJnZXQgIT0gR0xfRFJBV19GUkFNRUJV
RkZFUl9BTkdMRSAmJiB0YXJnZXQgIT0gR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAg
ICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHRhcmdldCA9PSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFIHx8IHRhcmdldCA9PSBHTF9G
UkFNRUJVRkZFUikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5iaW5k
UmVhZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFIHx8
IHRhcmdldCA9PSBHTF9GUkFNRUJVRkZFUikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5iaW5kRHJhd0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwor
dm9pZCBfX3N0ZGNhbGwgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdMdWludCBy
ZW5kZXJidWZmZXIpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0x1aW50
IHJlbmRlcmJ1ZmZlciA9ICVkKSIsIHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9SRU5ERVJCVUZGRVIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
fQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmRSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xCaW5kVGV4
dHVyZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSkKK3sKKyAgICBFVkVOVCgiKEdMZW51
bSB0YXJnZXQgPSAweCVYLCBHTHVpbnQgdGV4dHVyZSA9ICVkKSIsIHRhcmdldCwgdGV4dHVyZSk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlT2JqZWN0ID0gY29udGV4dC0+Z2V0VGV4dHVy
ZSh0ZXh0dXJlKTsKKworICAgICAgICAgICAgaWYgKHRleHR1cmVPYmplY3QgJiYgdGV4dHVyZU9i
amVjdC0+Z2V0VGFyZ2V0KCkgIT0gdGFyZ2V0ICYmIHRleHR1cmUgIT0gMCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5iaW5kVGV4dHVyZTJEKHRleHR1cmUpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgorICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlQ3ViZU1hcCh0ZXh0dXJlKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBn
bEJsZW5kQ29sb3IoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwg
R0xjbGFtcGYgYWxwaGEpCit7CisgICAgRVZFTlQoIihHTGNsYW1wZiByZWQgPSAlZiwgR0xjbGFt
cGYgZ3JlZW4gPSAlZiwgR0xjbGFtcGYgYmx1ZSA9ICVmLCBHTGNsYW1wZiBhbHBoYSA9ICVmKSIs
CisgICAgICAgICAgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBnbDo6Q29udGV4dCogY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwor
CisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5z
ZXRCbGVuZENvbG9yKGdsOjpjbGFtcDAxKHJlZCksIGdsOjpjbGFtcDAxKGdyZWVuKSwgZ2w6OmNs
YW1wMDEoYmx1ZSksIGdsOjpjbGFtcDAxKGFscGhhKSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQmxlbmRFcXVh
dGlvbihHTGVudW0gbW9kZSkKK3sKKyAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlLCBt
b2RlKTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUoR0xlbnVt
IG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpCit7CisgICAgRVZFTlQoIihHTGVudW0gbW9kZVJH
QiA9IDB4JVgsIEdMZW51bSBtb2RlQWxwaGEgPSAweCVYKSIsIG1vZGVSR0IsIG1vZGVBbHBoYSk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobW9kZVJHQikKKyAgICAgICAgewor
ICAgICAgICAgIGNhc2UgR0xfRlVOQ19BREQ6CisgICAgICAgICAgY2FzZSBHTF9GVU5DX1NVQlRS
QUNUOgorICAgICAgICAgIGNhc2UgR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAobW9kZUFs
cGhhKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9GVU5DX0FERDoKKyAgICAgICAgICBj
YXNlIEdMX0ZVTkNfU1VCVFJBQ1Q6CisgICAgICAgICAgY2FzZSBHTF9GVU5DX1JFVkVSU0VfU1VC
VFJBQ1Q6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+c2V0Qmxl
bmRFcXVhdGlvbihtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgICAgICB9CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEJsZW5kRnVuYyhH
TGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpCit7CisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0
ZShzZmFjdG9yLCBkZmFjdG9yLCBzZmFjdG9yLCBkZmFjdG9yKTsKK30KKwordm9pZCBfX3N0ZGNh
bGwgZ2xCbGVuZEZ1bmNTZXBhcmF0ZShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVu
dW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSBzcmNS
R0IgPSAweCVYLCBHTGVudW0gZHN0UkdCID0gMHglWCwgR0xlbnVtIHNyY0FscGhhID0gMHglWCwg
R0xlbnVtIGRzdEFscGhhID0gMHglWCkiLAorICAgICAgICAgIHNyY1JHQiwgZHN0UkdCLCBzcmNB
bHBoYSwgZHN0QWxwaGEpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKHNyY1JH
QikKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfWkVSTzoKKyAgICAgICAgICBjYXNlIEdM
X09ORToKKyAgICAgICAgICBjYXNlIEdMX1NSQ19DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX09O
RV9NSU5VU19TUkNfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6CisgICAgICAg
ICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNUX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfU1JDX0FM
UEhBOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQToKKyAgICAgICAgICBj
YXNlIEdMX0RTVF9BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQUxQSEE6
CisgICAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX09O
RV9NSU5VU19DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX0NPTlNUQU5UX0FMUEhB
OgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOgorICAgICAgICAg
IGNhc2UgR0xfU1JDX0FMUEhBX1NBVFVSQVRFOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVN
KTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoZHN0UkdCKQorICAgICAgICB7CisgICAg
ICAgICAgY2FzZSBHTF9aRVJPOgorICAgICAgICAgIGNhc2UgR0xfT05FOgorICAgICAgICAgIGNh
c2UgR0xfU1JDX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19DT0xPUjoK
KyAgICAgICAgICBjYXNlIEdMX0RTVF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5V
U19EU1RfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9TUkNfQUxQSEE6CisgICAgICAgICAgY2Fz
ZSBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfRFNUX0FMUEhBOgor
ICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9BTFBIQToKKyAgICAgICAgICBjYXNlIEdM
X0NPTlNUQU5UX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0NP
TE9SOgorICAgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQUxQSEE6CisgICAgICAgICAgY2FzZSBH
TF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0p
OworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChzcmNBbHBoYSkKKyAgICAgICAgeworICAg
ICAgICAgIGNhc2UgR0xfWkVSTzoKKyAgICAgICAgICBjYXNlIEdMX09ORToKKyAgICAgICAgICBj
YXNlIEdMX1NSQ19DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQ09MT1I6
CisgICAgICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlO
VVNfRFNUX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBOgorICAgICAgICAgIGNh
c2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX0RTVF9BTFBIQToK
KyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQUxQSEE6CisgICAgICAgICAgY2FzZSBH
TF9DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9D
T0xPUjoKKyAgICAgICAgICBjYXNlIEdMX0NPTlNUQU5UX0FMUEhBOgorICAgICAgICAgIGNhc2Ug
R0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhB
X1NBVFVSQVRFOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN3aXRjaCAoZHN0QWxwaGEpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1pF
Uk86CisgICAgICAgICAgY2FzZSBHTF9PTkU6CisgICAgICAgICAgY2FzZSBHTF9TUkNfQ09MT1I6
CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0NPTE9SOgorICAgICAgICAgIGNhc2Ug
R0xfRFNUX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9DT0xPUjoKKyAg
ICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19T
UkNfQUxQSEE6CisgICAgICAgICAgY2FzZSBHTF9EU1RfQUxQSEE6CisgICAgICAgICAgY2FzZSBH
TF9PTkVfTUlOVVNfRFNUX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQ09MT1I6
CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6CisgICAgICAgICAg
Y2FzZSBHTF9DT05TVEFOVF9BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05T
VEFOVF9BTFBIQToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKwor
ICAgICAgICBib29sIGNvbnN0YW50Q29sb3JVc2VkID0gKHNyY1JHQiA9PSBHTF9DT05TVEFOVF9D
T0xPUiB8fCBzcmNSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0UkdCID09IEdMX0NPTlNUQU5UX0NPTE9SIHx8
IGRzdFJHQiA9PSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IpOworCisgICAgICAgIGJvb2wg
Y29uc3RhbnRBbHBoYVVzZWQgPSAoc3JjUkdCID09IEdMX0NPTlNUQU5UX0FMUEhBIHx8IHNyY1JH
QiA9PSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgfHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkc3RSR0IgPT0gR0xfQ09OU1RBTlRfQUxQSEEgfHwgZHN0UkdCID09IEdM
X09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSk7CisKKyAgICAgICAgaWYgKGNvbnN0YW50Q29sb3JV
c2VkICYmIGNvbnN0YW50QWxwaGFVc2VkKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIlNp
bXVsdGFuZW91cyB1c2Ugb2YgR0xfQ09OU1RBTlRfQUxQSEEvR0xfT05FX01JTlVTX0NPTlNUQU5U
X0FMUEhBIGFuZCBHTF9DT05TVEFOVF9DT0xPUi9HTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1Ig
aW52YWxpZCB1bmRlciBXZWJHTCIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRCbGVuZEZhY3RvcnMoc3JjUkdCLCBk
c3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQnVmZmVyRGF0YShHTGVu
dW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSwgR0xlbnVtIHVz
YWdlKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMc2l6ZWlwdHIgc2l6
ZSA9ICVkLCBjb25zdCBHTHZvaWQqIGRhdGEgPSAweCUwLjhwLCBHTGVudW0gdXNhZ2UgPSAlZCki
LAorICAgICAgICAgIHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworCisgICAgdHJ5CisgICAg
eworICAgICAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2gg
KHVzYWdlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9TVFJFQU1fRFJBVzoKKyAgICAg
ICAgICBjYXNlIEdMX1NUQVRJQ19EUkFXOgorICAgICAgICAgIGNhc2UgR0xfRFlOQU1JQ19EUkFX
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlcjsK
KworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgIGNhc2UgR0xfQVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGNvbnRl
eHQtPmdldEFycmF5QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVI6CisgICAgICAgICAgICAgICAgYnVmZmVy
ID0gY29udGV4dC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
IWJ1ZmZlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnVm
ZmVyLT5idWZmZXJEYXRhKGRhdGEsIHNpemUsIHVzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xCdWZmZXJT
dWJEYXRhKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBj
b25zdCBHTHZvaWQqIGRhdGEpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwg
R0xpbnRwdHIgb2Zmc2V0ID0gJWQsIEdMc2l6ZWlwdHIgc2l6ZSA9ICVkLCBjb25zdCBHTHZvaWQq
IGRhdGEgPSAweCUwLjhwKSIsCisgICAgICAgICAgdGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEp
OworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoc2l6ZSA8IDAgfHwgb2Zmc2V0IDwgMCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkYXRhID09IE5VTEwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlcjsKKworICAgICAgICAgICAg
c3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfQVJS
QVlfQlVGRkVSOgorICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQtPmdldEFycmF5QnVm
ZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfRUxF
TUVOVF9BUlJBWV9CVUZGRVI6CisgICAgICAgICAgICAgICAgYnVmZmVyID0gY29udGV4dC0+Z2V0
RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKChzaXplX3Qpc2l6ZSAr
IG9mZnNldCA+IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGJ1ZmZlci0+YnVmZmVyU3ViRGF0YShkYXRhLCBzaXplLCBvZmZzZXQpOworICAg
ICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCitHTGVudW0g
X19zdGRjYWxsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTGVudW0gdGFyZ2V0KQoreworICAg
IEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgpIiwgdGFyZ2V0KTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9GUkFNRUJVRkZFUiAmJiB0YXJnZXQgIT0gR0xf
RFJBV19GUkFNRUJVRkZFUl9BTkdMRSAmJiB0YXJnZXQgIT0gR0xfUkVBRF9GUkFNRUJVRkZFUl9B
TkdMRSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X0VOVU0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IE5VTEw7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0ID09IEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRSZWFkRnJh
bWVidWZmZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldERyYXdGcmFtZWJ1
ZmZlcigpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZnJhbWVidWZmZXIt
PmNvbXBsZXRlbmVzcygpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwg
MCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQ2xlYXIo
R0xiaXRmaWVsZCBtYXNrKQoreworICAgIEVWRU5UKCIoR0xiaXRmaWVsZCBtYXNrID0gJVgpIiwg
bWFzayk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnRleHQtPmNsZWFyKG1hc2spOworICAgICAgICB9CisgICAgfQor
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbENsZWFy
Q29sb3IoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFt
cGYgYWxwaGEpCit7CisgICAgRVZFTlQoIihHTGNsYW1wZiByZWQgPSAlZiwgR0xjbGFtcGYgZ3Jl
ZW4gPSAlZiwgR0xjbGFtcGYgYmx1ZSA9ICVmLCBHTGNsYW1wZiBhbHBoYSA9ICVmKSIsCisgICAg
ICAgICAgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworCisgICAgdHJ5CisgICAgeworICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAg
ICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRDbGVh
ckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xDbGVhckRlcHRo
ZihHTGNsYW1wZiBkZXB0aCkKK3sKKyAgICBFVkVOVCgiKEdMY2xhbXBmIGRlcHRoID0gJWYpIiwg
ZGVwdGgpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRDbGVhckRlcHRoKGRlcHRoKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNh
bGwgZ2xDbGVhclN0ZW5jaWwoR0xpbnQgcykKK3sKKyAgICBFVkVOVCgiKEdMaW50IHMgPSAlZCki
LCBzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgY29udGV4dC0+c2V0Q2xlYXJTdGVuY2lsKHMpOworICAgICAgICB9Cisg
ICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBn
bENvbG9yTWFzayhHTGJvb2xlYW4gcmVkLCBHTGJvb2xlYW4gZ3JlZW4sIEdMYm9vbGVhbiBibHVl
LCBHTGJvb2xlYW4gYWxwaGEpCit7CisgICAgRVZFTlQoIihHTGJvb2xlYW4gcmVkID0gJWQsIEdM
Ym9vbGVhbiBncmVlbiA9ICVkLCBHTGJvb2xlYW4gYmx1ZSA9ICVkLCBHTGJvb2xlYW4gYWxwaGEg
PSAlZCkiLAorICAgICAgICAgIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRl
eHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29u
dGV4dC0+c2V0Q29sb3JNYXNrKHJlZCA9PSBHTF9UUlVFLCBncmVlbiA9PSBHTF9UUlVFLCBibHVl
ID09IEdMX1RSVUUsIGFscGhhID09IEdMX1RSVUUpOworICAgICAgICB9CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbENvbXBpbGVTaGFk
ZXIoR0x1aW50IHNoYWRlcikKK3sKKyAgICBFVkVOVCgiKEdMdWludCBzaGFkZXIgPSAlZCkiLCBz
aGFkZXIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBnbDo6U2hhZGVyICpzaGFkZXJPYmplY3QgPSBjb250ZXh0LT5nZXRT
aGFkZXIoc2hhZGVyKTsKKworICAgICAgICAgICAgaWYgKCFzaGFkZXJPYmplY3QpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFByb2dyYW0oc2hhZGVyKSkK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgc2hhZGVyT2JqZWN0LT5jb21waWxlKCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
Q29tcHJlc3NlZFRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VT
aXplLCBjb25zdCBHTHZvaWQqIGRhdGEpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0g
MHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gMHglWCwgR0xz
aXplaSB3aWR0aCA9ICVkLCAiIAorICAgICAgICAgICJHTHNpemVpIGhlaWdodCA9ICVkLCBHTGlu
dCBib3JkZXIgPSAlZCwgR0xzaXplaSBpbWFnZVNpemUgPSAlZCwgY29uc3QgR0x2b2lkKiBkYXRh
ID0gMHglMC44cCkiLAorICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7CisKKyAgICB0cnkKKyAgICB7
CisgICAgICAgIGlmICghdmFsaWRJbWFnZVNpemUobGV2ZWwsIHdpZHRoLCBoZWlnaHQpIHx8IGJv
cmRlciAhPSAwIHx8IGltYWdlU2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0
Y2ggKGludGVybmFsZm9ybWF0KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQzX0FOR0xFOgorICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9B
TkdMRToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoYm9yZGVyICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdpZHRo
ICE9IDEgJiYgd2lkdGggIT0gMiAmJiB3aWR0aCAlIDQgIT0gMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoaGVpZ2h0ICE9IDEgJiYgaGVpZ2h0ICE9IDIgJiYgaGVpZ2h0ICUgNCAh
PSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChsZXZlbCA+IGNvbnRleHQtPmdldE1heGltdW1UZXh0dXJlTGV2
ZWwoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKHRh
cmdldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgor
ICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IChjb250ZXh0LT5nZXRNYXhpbXVtVGV4dHVyZURp
bWVuc2lvbigpID4+IGxldmVsKSB8fAorICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPiAoY29u
dGV4dC0+Z2V0TWF4aW11bVRleHR1cmVEaW1lbnNpb24oKSA+PiBsZXZlbCkpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6CisgICAgICAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgorICAgICAgICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKKyAgICAgICAgICAgICAgY2FzZSBH
TF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgorICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWjoKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggIT0gaGVpZ2h0
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAod2lkdGggPiAoY29udGV4dC0+Z2V0TWF4aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKCkg
Pj4gbGV2ZWwpIHx8CisgICAgICAgICAgICAgICAgICAgIGhlaWdodCA+IChjb250ZXh0LT5nZXRN
YXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNpb24oKSA+PiBsZXZlbCkpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
RU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxmb3Jt
YXQpIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhU
OgorICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgor
ICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQxVGV4dHVyZXMoKSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsgLy8gaW4gdGhpcyBjYXNlLCBpdCdzIGFzIHRob3VnaCB0aGUgaW50ZXJu
YWwgZm9ybWF0IHN3aXRjaCBmYWlsZWQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
M19BTkdMRToKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUM1RleHR1
cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7IC8vIGluIHRoaXMgY2FzZSwgaXQncyBhcyB0aG91Z2gg
dGhlIGludGVybmFsIGZvcm1hdCBzd2l0Y2ggZmFpbGVkCisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0
c0RYVDVUZXh0dXJlcygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOyAvLyBpbiB0aGlzIGNhc2UsIGl0J3Mg
YXMgdGhvdWdoIHRoZSBpbnRlcm5hbCBmb3JtYXQgc3dpdGNoIGZhaWxlZAorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGltYWdlU2l6ZSAh
PSBnbDo6Q29tcHV0ZUNvbXByZXNzZWRTaXplKHdpZHRoLCBoZWlnaHQsIGludGVybmFsZm9ybWF0
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGFyZ2V0ID09
IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2w6OlRleHR1
cmUyRCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgpOworCisgICAgICAgICAgICAg
ICAgaWYgKCF0ZXh0dXJlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgaWYgKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXh0
dXJlLT5zZXRDb21wcmVzc2VkSW1hZ2UobGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBpbWFnZVNpemUsIGRhdGEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1hcCAqdGV4dHVy
ZSA9IGNvbnRleHQtPmdldFRleHR1cmVDdWJlTWFwKCk7CisKKyAgICAgICAgICAgICAgICBpZiAo
IXRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHN3aXRjaCAodGFy
Z2V0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9YOgorICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJF
X0NVQkVfTUFQX05FR0FUSVZFX1g6CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWToKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9D
VUJFX01BUF9ORUdBVElWRV9ZOgorICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NV
QkVfTUFQX1BPU0lUSVZFX1o6CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWjoKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0Q29tcHJl
c3NlZEltYWdlKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBp
bWFnZVNpemUsIGRhdGEpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9
Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xlbnVtIHRh
cmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBk
YXRhKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50IGxldmVsID0g
JWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQgeW9mZnNldCA9ICVkLCAiCisgICAgICAgICAg
IkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xlbnVtIGZvcm1hdCA9
IDB4JVgsICIKKyAgICAgICAgICAiR0xzaXplaSBpbWFnZVNpemUgPSAlZCwgY29uc3QgR0x2b2lk
KiBkYXRhID0gMHglMC44cCkiLAorICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKKworICAgIHRy
eQorICAgIHsKKyAgICAgICAgaWYgKCFnbDo6SXNJbnRlcm5hbFRleHR1cmVUYXJnZXQodGFyZ2V0
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VO
VU0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHhvZmZzZXQgPCAwIHx8IHlvZmZzZXQgPCAw
IHx8ICF2YWxpZEltYWdlU2l6ZShsZXZlbCwgd2lkdGgsIGhlaWdodCkgfHwgaW1hZ2VTaXplIDwg
MCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoZm9ybWF0KQorICAgICAgICB7Cisg
ICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5V
TSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCB8
fCBkYXRhID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChs
ZXZlbCA+IGNvbnRleHQtPmdldE1heGltdW1UZXh0dXJlTGV2ZWwoKSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgICAgICAgaWYg
KCFjb250ZXh0LT5zdXBwb3J0c0RYVDFUZXh0dXJlcygpKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOyAvLyBp
biB0aGlzIGNhc2UsIGl0J3MgYXMgdGhvdWdoIHRoZSBpbnRlcm5hbCBmb3JtYXQgc3dpdGNoIGZh
aWxlZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAg
ICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQzVGV4dHVyZXMoKSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9F
TlVNKTsgLy8gaW4gdGhpcyBjYXNlLCBpdCdzIGFzIHRob3VnaCB0aGUgaW50ZXJuYWwgZm9ybWF0
IHN3aXRjaCBmYWlsZWQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToK
KyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfRU5VTSk7IC8vIGluIHRoaXMgY2FzZSwgaXQncyBhcyB0aG91Z2ggdGhlIGludGVy
bmFsIGZvcm1hdCBzd2l0Y2ggZmFpbGVkCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoaW1hZ2VTaXplICE9IGdsOjpDb21wdXRlQ29tcHJl
c3NlZFNpemUod2lkdGgsIGhlaWdodCwgZm9ybWF0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoeG9mZnNldCAlIDQgIT0gMCB8fCB5b2Zmc2V0ICUgNCAhPSAw
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOyAvLyB3ZSB3YWl0IHRvIGNoZWNrIHRoZSBvZmZzZXRzIHVudGlsIHRo
aXMgcG9pbnQsIGJlY2F1c2UgdGhlIG11bHRpcGxlLW9mLWZvdXIgcmVzdHJpY3Rpb24KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb2VzIG5v
dCBleGlzdCB1bmxlc3MgRFhUIHRleHR1cmVzIGFyZSBzdXBwb3J0ZWQuCisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0
VGV4dHVyZTJEKCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlU3ViSW1hZ2VQYXJhbXMy
RCh0cnVlLCB3aWR0aCwgaGVpZ2h0LCB4b2Zmc2V0LCB5b2Zmc2V0LCBsZXZlbCwgZm9ybWF0LCBH
TF9OT05FLCB0ZXh0dXJlKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHRleHR1cmUtPnN1YkltYWdlQ29tcHJlc3NlZChsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGdsOjpJc0N1YmVtYXBUZXh0dXJl
VGFyZ2V0KHRhcmdldCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2w6OlRleHR1
cmVDdWJlTWFwICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKKyAgICAg
ICAgICAgICAgICBpZiAodmFsaWRhdGVTdWJJbWFnZVBhcmFtc0N1YmUodHJ1ZSwgd2lkdGgsIGhl
aWdodCwgeG9mZnNldCwgeW9mZnNldCwgdGFyZ2V0LCBsZXZlbCwgZm9ybWF0LCBHTF9OT05FLCB0
ZXh0dXJlKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUt
PnN1YkltYWdlQ29tcHJlc3NlZCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQ29weVRl
eEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50
IGJvcmRlcikKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGludCBsZXZl
bCA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAweCVYLCAiCisgICAgICAgICAgIkdMaW50
IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0
ID0gJWQsIEdMaW50IGJvcmRlciA9ICVkKSIsCisgICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CisKKyAgICB0cnkKKyAg
ICB7CisgICAgICAgIGlmICghdmFsaWRJbWFnZVNpemUobGV2ZWwsIHdpZHRoLCBoZWlnaHQpKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJvcmRlciAhPSAwKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisK
KyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsK
KworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGxldmVs
ID4gY29udGV4dC0+Z2V0TWF4aW11bVRleHR1cmVMZXZlbCgpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAgICAgICAgICAgICAgaWYgKHdpZHRo
ID4gKGNvbnRleHQtPmdldE1heGltdW1UZXh0dXJlRGltZW5zaW9uKCkgPj4gbGV2ZWwpIHx8Cisg
ICAgICAgICAgICAgICAgICAgIGhlaWdodCA+IChjb250ZXh0LT5nZXRNYXhpbXVtVGV4dHVyZURp
bWVuc2lvbigpID4+IGxldmVsKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1g6CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9ZOgorICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ
VkVfWToKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6
CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOgorICAg
ICAgICAgICAgICAgIGlmICh3aWR0aCAhPSBoZWlnaHQpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IChjb250ZXh0LT5n
ZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNpb24oKSA+PiBsZXZlbCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgaGVpZ2h0ID4gKGNvbnRleHQtPmdldE1heGltdW1DdWJlVGV4dHVyZURpbWVuc2lv
bigpID4+IGxldmVsKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFJl
YWRGcmFtZWJ1ZmZlcigpOworCisgICAgICAgICAgICBpZiAoZnJhbWVidWZmZXItPmNvbXBsZXRl
bmVzcygpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJ
T04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0UmVhZEZy
YW1lYnVmZmVySGFuZGxlKCkgIT0gMCAmJiBmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcygpICE9IDAp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpSZW5kZXJi
dWZmZXIgKnNvdXJjZSA9IGZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKTsKKyAgICAg
ICAgICAgIEdMZW51bSBjb2xvcmJ1ZmZlckZvcm1hdCA9IHNvdXJjZS0+Z2V0SW50ZXJuYWxGb3Jt
YXQoKTsKKworICAgICAgICAgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHRhYmxlIDMuOQorICAg
ICAgICAgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3Jt
YXQgIT0gR0xfQUxQSEE4X0VYVCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SR0JBNCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1h
dCAhPSBHTF9SR0I1X0ExICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0
ICE9IEdMX0JHUkE4X0VYVCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1h
dCAhPSBHTF9SR0JBOF9PRVMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5B
TkNFOgorICAgICAgICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICAgICAgICBpZiAoY29s
b3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNTY1ICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9y
YnVmZmVyRm9ybWF0ICE9IEdMX1JHQjhfT0VTICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9y
YnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZm
ZXJGb3JtYXQgIT0gR0xfQkdSQThfRVhUICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAg
ICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYKKyAgICAgICAgICAg
ICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgorICAgICAgICAgICAg
ICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9CR1JBOF9FWFQgJiYKKyAgICAgICAgICAg
ICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTKQorICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAg
ICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5zdXBwb3J0c0RYVDFUZXh0dXJlcygpKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToK
KyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+c3VwcG9ydHNEWFQzVGV4dHVyZXMoKSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVf
QU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRFhUNVRleHR1cmVz
KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6CisgICAgICAgICAgICAgIGNh
c2UgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTOgorICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRI
X1NURU5DSUxfT0VTOgorICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VT
OgorICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRGVwdGhUZXh0dXJlcygp
KQorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0
YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBn
bDo6VGV4dHVyZTJEICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisKKyAgICAg
ICAgICAgICAgICBpZiAoIXRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIHRleHR1cmUtPmNvcHlJbWFnZShsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZyYW1lYnVmZmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
aWYgKGdsOjpJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDdWJlTWFwICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0
VGV4dHVyZUN1YmVNYXAoKTsKKworICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlm
ICh0ZXh0dXJlLT5pc0ltbXV0YWJsZSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGV4dHVyZS0+Y29weUltYWdlKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmcmFtZWJ1ZmZlcik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRj
YWxsIGdsQ29weVRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdM
aW50IGxldmVsID0gJWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQgeW9mZnNldCA9ICVkLCAi
CisgICAgICAgICAgIkdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0g
JWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQpIiwKKyAgICAgICAgICB0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgaWYgKCFnbDo6SXNJbnRlcm5hbFRleHR1cmVUYXJnZXQodGFyZ2V0KSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGxldmVsIDwgMCB8fCB4b2Zmc2V0IDwgMCB8fCB5b2Zmc2V0IDwg
MCB8fCB3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHhvZmZzZXQgPCB3aWR0aCB8
fCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHlvZmZzZXQgPCBoZWlnaHQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBp
ZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGxldmVsID4gY29udGV4dC0+
Z2V0TWF4aW11bVRleHR1cmVMZXZlbCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRSZWFk
RnJhbWVidWZmZXIoKTsKKworICAgICAgICAgICAgaWYgKGZyYW1lYnVmZmVyLT5jb21wbGV0ZW5l
c3MoKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9O
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFJlYWRGcmFt
ZWJ1ZmZlckhhbmRsZSgpICE9IDAgJiYgZnJhbWVidWZmZXItPmdldFNhbXBsZXMoKSAhPSAwKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnbDo6UmVuZGVyYnVm
ZmVyICpzb3VyY2UgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7CisgICAgICAg
ICAgICBHTGVudW0gY29sb3JidWZmZXJGb3JtYXQgPSBzb3VyY2UtPmdldEludGVybmFsRm9ybWF0
KCk7CisgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IE5VTEw7CisgICAgICAgICAg
ICBHTGVudW0gdGV4dHVyZUZvcm1hdCA9IEdMX1JHQkE7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQgPT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6
VGV4dHVyZTJEICp0ZXgyZCA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgpOworCisgICAgICAgICAg
ICAgICAgaWYgKCF2YWxpZGF0ZVN1YkltYWdlUGFyYW1zMkQoZmFsc2UsIHdpZHRoLCBoZWlnaHQs
IHhvZmZzZXQsIHlvZmZzZXQsIGxldmVsLCBHTF9OT05FLCBHTF9OT05FLCB0ZXgyZCkpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGVycm9yIGFscmVh
ZHkgcmVnaXN0ZXJlZCBieSB2YWxpZGF0ZVN1YkltYWdlUGFyYW1zCisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHRleHR1cmVGb3JtYXQgPSBnbDo6RXh0cmFjdEZvcm1hdCh0ZXgy
ZC0+Z2V0SW50ZXJuYWxGb3JtYXQobGV2ZWwpKTsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlID0g
dGV4MmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChnbDo6SXNDdWJlbWFw
VGV4dHVyZVRhcmdldCh0YXJnZXQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGds
OjpUZXh0dXJlQ3ViZU1hcCAqdGV4Y3ViZSA9IGNvbnRleHQtPmdldFRleHR1cmVDdWJlTWFwKCk7
CisKKyAgICAgICAgICAgICAgICBpZiAoIXZhbGlkYXRlU3ViSW1hZ2VQYXJhbXNDdWJlKGZhbHNl
LCB3aWR0aCwgaGVpZ2h0LCB4b2Zmc2V0LCB5b2Zmc2V0LCB0YXJnZXQsIGxldmVsLCBHTF9OT05F
LCBHTF9OT05FLCB0ZXhjdWJlKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsgLy8gZXJyb3IgYWxyZWFkeSByZWdpc3RlcmVkIGJ5IHZhbGlkYXRlU3ViSW1h
Z2VQYXJhbXMKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGV4dHVyZUZvcm1h
dCA9IGdsOjpFeHRyYWN0Rm9ybWF0KHRleGN1YmUtPmdldEludGVybmFsRm9ybWF0KHRhcmdldCwg
bGV2ZWwpKTsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlID0gdGV4Y3ViZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKworICAgICAgICAgICAgLy8gW09w
ZW5HTCBFUyAyLjAuMjRdIHRhYmxlIDMuOQorICAgICAgICAgICAgc3dpdGNoICh0ZXh0dXJlRm9y
bWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAg
ICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9BTFBIQThfRVhUICYmCisgICAg
ICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCisgICAgICAg
ICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKKyAgICAgICAg
ICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgICAgICAgY2FzZSBHTF9S
R0I6CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjU2NSAm
JgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I4X09FUyAm
JgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBNCAmJgor
ICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCisg
ICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUykKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICAg
ICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQg
IT0gR0xfUkdCQTQgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0g
R0xfUkdCNV9BMSAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBH
TF9SR0JBOF9PRVMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQzX0FOR0xFOgorICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDVfQU5HTEU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UOgorICAg
ICAgICAgICAgICBjYXNlIEdMX0RFUFRIX1NURU5DSUxfT0VTOgorICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXh0dXJlLT5jb3B5U3ViSW1hZ2Uo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZnJh
bWVidWZmZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2Mm
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAg
ICB9Cit9CisKK0dMdWludCBfX3N0ZGNhbGwgZ2xDcmVhdGVQcm9ncmFtKHZvaWQpCit7CisgICAg
RVZFTlQoIigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5jcmVhdGVQcm9ncmFtKCk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAwKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gMDsKK30KKworR0x1aW50IF9fc3RkY2FsbCBnbENyZWF0ZVNoYWRlcihHTGVudW0gdHlw
ZSkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0eXBlID0gMHglWCkiLCB0eXBlKTsKKworICAgIHRy
eQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
c3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0ZSQUdN
RU5UX1NIQURFUjoKKyAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgorICAgICAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LT5jcmVhdGVTaGFkZXIodHlwZSk7CisgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X0VOVU0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSwgMCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgX19zdGRjYWxs
IGdsQ3VsbEZhY2UoR0xlbnVtIG1vZGUpCit7CisgICAgRVZFTlQoIihHTGVudW0gbW9kZSA9IDB4
JVgpIiwgbW9kZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobW9kZSkKKyAg
ICAgICAgeworICAgICAgICAgIGNhc2UgR0xfRlJPTlQ6CisgICAgICAgICAgY2FzZSBHTF9CQUNL
OgorICAgICAgICAgIGNhc2UgR0xfRlJPTlRfQU5EX0JBQ0s6CisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0Q3VsbE1vZGUobW9kZSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBf
X3N0ZGNhbGwgZ2xEZWxldGVCdWZmZXJzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiBidWZmZXJz
KQoreworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCogYnVmZmVycyA9
IDB4JTAuOHApIiwgbiwgYnVmZmVycyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChu
IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZUJ1ZmZlcihidWZmZXJzW2ldKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0K
K30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVGZW5jZXNOVihHTHNpemVpIG4sIGNvbnN0IEdM
dWludCogZmVuY2VzKQoreworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWlu
dCogZmVuY2VzID0gMHglMC44cCkiLCBuLCBmZW5jZXMpOworCisgICAgdHJ5CisgICAgeworICAg
ICAgICBpZiAobiA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kZWxldGVGZW5jZShmZW5jZXNbaV0p
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbERlbGV0ZUZyYW1lYnVmZmVycyhHTHNpemVp
IG4sIGNvbnN0IEdMdWludCogZnJhbWVidWZmZXJzKQoreworICAgIEVWRU5UKCIoR0xzaXplaSBu
ID0gJWQsIGNvbnN0IEdMdWludCogZnJhbWVidWZmZXJzID0gMHglMC44cCkiLCBuLCBmcmFtZWJ1
ZmZlcnMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAobiA8IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAg
IH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
ZiAoZnJhbWVidWZmZXJzW2ldICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcnNbaV0pOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVQcm9ncmFt
KEdMdWludCBwcm9ncmFtKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCkiLCBw
cm9ncmFtKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHByb2dyYW0gPT0gMCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAo
Y29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRQcm9ncmFt
KHByb2dyYW0pKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmKGNvbnRleHQtPmdl
dFNoYWRlcihwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlUHJvZ3Jh
bShwcm9ncmFtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
IH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVRdWVyaWVzRVhUKEdMc2l6ZWkgbiwgY29u
c3QgR0x1aW50ICppZHMpCit7CisgICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1
aW50ICppZHMgPSAweCUwLjhwKSIsIG4sIGlkcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAg
IGlmIChuIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVF1ZXJ5KGlkc1tpXSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9
Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRGVsZXRlUmVuZGVyYnVmZmVycyhHTHNpemVpIG4sIGNv
bnN0IEdMdWludCogcmVuZGVyYnVmZmVycykKK3sKKyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVk
LCBjb25zdCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMgPSAweCUwLjhwKSIsIG4sIHJlbmRlcmJ1ZmZl
cnMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAobiA8IDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0K
KworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgp
OworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LT5kZWxldGVSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyc1tpXSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3Zv
aWQgX19zdGRjYWxsIGdsRGVsZXRlU2hhZGVyKEdMdWludCBzaGFkZXIpCit7CisgICAgRVZFTlQo
IihHTHVpbnQgc2hhZGVyID0gJWQpIiwgc2hhZGVyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgaWYgKHNoYWRlciA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIWNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGlmKGNvbnRleHQtPmdldFByb2dyYW0oc2hhZGVyKSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Y29udGV4dC0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRGVsZXRlVGV4dHVy
ZXMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHRleHR1cmVzKQoreworICAgIEVWRU5UKCIoR0xz
aXplaSBuID0gJWQsIGNvbnN0IEdMdWludCogdGV4dHVyZXMgPSAweCUwLjhwKSIsIG4sIHRleHR1
cmVzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9
CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYg
KHRleHR1cmVzW2ldICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5kZWxldGVUZXh0dXJlKHRleHR1cmVzW2ldKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
KyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRGVwdGhGdW5jKEdMZW51bSBmdW5jKQorewor
ICAgIEVWRU5UKCIoR0xlbnVtIGZ1bmMgPSAweCVYKSIsIGZ1bmMpOworCisgICAgdHJ5CisgICAg
eworICAgICAgICBzd2l0Y2ggKGZ1bmMpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX05F
VkVSOgorICAgICAgICAgIGNhc2UgR0xfQUxXQVlTOgorICAgICAgICAgIGNhc2UgR0xfTEVTUzoK
KyAgICAgICAgICBjYXNlIEdMX0xFUVVBTDoKKyAgICAgICAgICBjYXNlIEdMX0VRVUFMOgorICAg
ICAgICAgIGNhc2UgR0xfR1JFQVRFUjoKKyAgICAgICAgICBjYXNlIEdMX0dFUVVBTDoKKyAgICAg
ICAgICBjYXNlIEdMX05PVEVRVUFMOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnRleHQtPnNldERlcHRoRnVuYyhmdW5jKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEZXB0aE1hc2soR0xi
b29sZWFuIGZsYWcpCit7CisgICAgRVZFTlQoIihHTGJvb2xlYW4gZmxhZyA9ICVkKSIsIGZsYWcp
OworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb250ZXh0LT5zZXREZXB0aE1hc2soZmxhZyAhPSBHTF9GQUxTRSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19z
dGRjYWxsIGdsRGVwdGhSYW5nZWYoR0xjbGFtcGYgek5lYXIsIEdMY2xhbXBmIHpGYXIpCit7Cisg
ICAgRVZFTlQoIihHTGNsYW1wZiB6TmVhciA9ICVmLCBHTGNsYW1wZiB6RmFyID0gJWYpIiwgek5l
YXIsIHpGYXIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXREZXB0aFJhbmdlKHpOZWFyLCB6RmFyKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9p
ZCBfX3N0ZGNhbGwgZ2xEZXRhY2hTaGFkZXIoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIp
Cit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTHVpbnQgc2hhZGVyID0gJWQp
IiwgcHJvZ3JhbSwgc2hhZGVyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29u
dGV4dCkKKyAgICAgICAgeworCisgICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVj
dCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgICAgICBnbDo6U2hhZGVy
ICpzaGFkZXJPYmplY3QgPSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGdsOjpTaGFkZXIgKnNoYWRlckJ5UHJvZ3JhbUhhbmRsZTsKKyAgICAgICAgICAg
ICAgICBzaGFkZXJCeVByb2dyYW1IYW5kbGUgPSBjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSk7
CisgICAgICAgICAgICAgICAgaWYgKCFzaGFkZXJCeVByb2dyYW1IYW5kbGUpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICghc2hhZGVyT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGdsOjpQcm9ncmFtICpwcm9ncmFtQnlTaGFkZXJIYW5kbGUgPSBjb250ZXh0LT5nZXRQcm9ncmFt
KHNoYWRlcik7CisgICAgICAgICAgICAgICAgaWYgKCFwcm9ncmFtQnlTaGFkZXJIYW5kbGUpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+ZGV0YWNoU2hhZGVyKHNoYWRlck9i
amVjdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRGlzYWJs
ZShHTGVudW0gY2FwKQoreworICAgIEVWRU5UKCIoR0xlbnVtIGNhcCA9IDB4JVgpIiwgY2FwKTsK
KworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0
Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAg
ICAgICAgICAgc3dpdGNoIChjYXApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfQ1VMTF9GQUNFOiAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRDdWxsRmFjZShmYWxzZSk7
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNF
VF9GSUxMOiAgICAgIGNvbnRleHQtPnNldFBvbHlnb25PZmZzZXRGaWxsKGZhbHNlKTsgICAgIGJy
ZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRTogY29u
dGV4dC0+c2V0U2FtcGxlQWxwaGFUb0NvdmVyYWdlKGZhbHNlKTsgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFOiAgICAgICAgICBjb250ZXh0LT5zZXRTYW1wbGVD
b3ZlcmFnZShmYWxzZSk7ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TQ0lT
U09SX1RFU1Q6ICAgICAgICAgICAgIGNvbnRleHQtPnNldFNjaXNzb3JUZXN0KGZhbHNlKTsgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfVEVTVDogICAgICAg
ICAgICAgY29udGV4dC0+c2V0U3RlbmNpbFRlc3QoZmFsc2UpOyAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfVEVTVDogICAgICAgICAgICAgICBjb250ZXh0LT5z
ZXREZXB0aFRlc3QoZmFsc2UpOyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9CTEVORDogICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEJsZW5kKGZhbHNlKTsg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0RJVEhFUjogICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RGl0aGVyKGZhbHNlKTsgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbERp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpCit7CisgICAgRVZFTlQoIihHTHVp
bnQgaW5kZXggPSAlZCkiLCBpbmRleCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChp
bmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAg
ICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+c2V0RW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoaW5kZXgsIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEcmF3QXJyYXlz
KEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkKK3sKKyAgICBFVkVOVCgi
KEdMZW51bSBtb2RlID0gMHglWCwgR0xpbnQgZmlyc3QgPSAlZCwgR0xzaXplaSBjb3VudCA9ICVk
KSIsIG1vZGUsIGZpcnN0LCBjb3VudCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChj
b3VudCA8IDAgfHwgZmlyc3QgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29u
dGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+ZHJhd0FycmF5cyhtb2RlLCBm
aXJzdCwgY291bnQsIDApOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShH
TGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50
KQoreworICAgIEVWRU5UKCIoR0xlbnVtIG1vZGUgPSAweCVYLCBHTGludCBmaXJzdCA9ICVkLCBH
THNpemVpIGNvdW50ID0gJWQsIEdMc2l6ZWkgcHJpbWNvdW50ID0gJWQpIiwgbW9kZSwgZmlyc3Qs
IGNvdW50LCBwcmltY291bnQpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoY291bnQg
PCAwIHx8IGZpcnN0IDwgMCB8fCBwcmltY291bnQgPCAwKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHByaW1jb3VudCA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdBcnJh
eXMobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbERyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5
cGUsIGNvbnN0IEdMdm9pZCogaW5kaWNlcykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSBtb2RlID0g
MHglWCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9IDB4JVgsIGNvbnN0IEdMdm9p
ZCogaW5kaWNlcyA9IDB4JTAuOHApIiwKKyAgICAgICAgICBtb2RlLCBjb3VudCwgdHlwZSwgaW5k
aWNlcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA8IDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAg
ICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBz
d2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfQllURToKKyAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAg
ICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0czMyYml0SW5kaWNlcygpKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX0VOVU0pOyAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAg
IGNvbnRleHQtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMCk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0xlbnVtIG1vZGUsIEdMc2l6
ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgcHJp
bWNvdW50KQoreworICAgIEVWRU5UKCIoR0xlbnVtIG1vZGUgPSAweCVYLCBHTHNpemVpIGNvdW50
ID0gJWQsIEdMZW51bSB0eXBlID0gMHglWCwgY29uc3QgR0x2b2lkKiBpbmRpY2VzID0gMHglMC44
cCwgR0xzaXplaSBwcmltY291bnQgPSAlZCkiLAorICAgICAgICAgIG1vZGUsIGNvdW50LCB0eXBl
LCBpbmRpY2VzLCBwcmltY291bnQpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoY291
bnQgPCAwIHx8IHByaW1jb3VudCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJp
bWNvdW50ID4gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICAgICAgaWYgKGNvbnRleHQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAg
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAg
ICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHMzMmJpdEluZGljZXMoKSkKKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX0VOVU0pOyAgICAKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHMo
bW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIHByaW1jb3VudCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsRW5hYmxlKEdMZW51bSBjYXApCit7CisgICAgRVZFTlQoIihHTGVudW0gY2Fw
ID0gMHglWCkiLCBjYXApOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGNhcCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAgICAgICAgICAgIGNvbnRleHQtPnNl
dEN1bGxGYWNlKHRydWUpOyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfUE9MWUdPTl9PRkZTRVRfRklMTDogICAgICBjb250ZXh0LT5zZXRQb2x5Z29uT2Zmc2V0Rmls
bCh0cnVlKTsgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9U
T19DT1ZFUkFHRTogY29udGV4dC0+c2V0U2FtcGxlQWxwaGFUb0NvdmVyYWdlKHRydWUpOyBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TQU1QTEVfQ09WRVJBR0U6ICAgICAgICAgIGNvbnRl
eHQtPnNldFNhbXBsZUNvdmVyYWdlKHRydWUpOyAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgR0xfU0NJU1NPUl9URVNUOiAgICAgICAgICAgICBjb250ZXh0LT5zZXRTY2lzc29yVGVz
dCh0cnVlKTsgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxf
VEVTVDogICAgICAgICAgICAgY29udGV4dC0+c2V0U3RlbmNpbFRlc3QodHJ1ZSk7ICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9URVNUOiAgICAgICAgICAgICAg
IGNvbnRleHQtPnNldERlcHRoVGVzdCh0cnVlKTsgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgR0xfQkxFTkQ6ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRCbGVu
ZCh0cnVlKTsgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0RJ
VEhFUjogICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RGl0aGVyKHRydWUpOyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRj
YWxsIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0x1aW50IGluZGV4KQoreworICAgIEVWRU5U
KCIoR0x1aW50IGluZGV4ID0gJWQpIiwgaW5kZXgpOworCisgICAgdHJ5CisgICAgeworICAgICAg
ICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnNl
dEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4LCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xFbmRR
dWVyeUVYVChHTGVudW0gdGFyZ2V0KQoreworICAgIEVWRU5UKCJHTGVudW0gdGFyZ2V0ID0gMHgl
WCkiLCB0YXJnZXQpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKHRhcmdldCkK
KyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVDogCisg
ICAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVDoKKyAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDogCisgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmVuZFF1ZXJ5KHRh
cmdldCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9
CisKK3ZvaWQgX19zdGRjYWxsIGdsRmluaXNoRmVuY2VOVihHTHVpbnQgZmVuY2UpCit7CisgICAg
RVZFTlQoIihHTHVpbnQgZmVuY2UgPSAlZCkiLCBmZW5jZSk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpGZW5jZSog
ZmVuY2VPYmplY3QgPSBjb250ZXh0LT5nZXRGZW5jZShmZW5jZSk7CisKKyAgICAgICAgICAgIGlm
IChmZW5jZU9iamVjdCA9PSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBmZW5jZU9iamVjdC0+ZmluaXNoRmVuY2UoKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xGaW5p
c2godm9pZCkKK3sKKyAgICBFVkVOVCgiKCkiKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAg
ICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+c3luYyh0cnVl
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwor
dm9pZCBfX3N0ZGNhbGwgZ2xGbHVzaCh2b2lkKQoreworICAgIEVWRU5UKCIoKSIpOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0
Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAg
ICBjb250ZXh0LT5zeW5jKGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcihHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHJlbmRlcmJ1ZmZl
cnRhcmdldCwgR0x1aW50IHJlbmRlcmJ1ZmZlcikKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJn
ZXQgPSAweCVYLCBHTGVudW0gYXR0YWNobWVudCA9IDB4JVgsIEdMZW51bSByZW5kZXJidWZmZXJ0
YXJnZXQgPSAweCVYLCAiCisgICAgICAgICAgIkdMdWludCByZW5kZXJidWZmZXIgPSAlZCkiLCB0
YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKCh0YXJnZXQgIT0gR0xfRlJBTUVCVUZGRVIgJiYg
dGFyZ2V0ICE9IEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUgJiYgdGFyZ2V0ICE9IEdMX1JFQURf
RlJBTUVCVUZGRVJfQU5HTEUpCisgICAgICAgICAgICB8fCAocmVuZGVyYnVmZmVydGFyZ2V0ICE9
IEdMX1JFTkRFUkJVRkZFUiAmJiByZW5kZXJidWZmZXIgIT0gMCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXIgPSBOVUxMOworICAgICAgICAgICAgR0x1aW50IGZyYW1lYnVmZmVy
SGFuZGxlID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfUkVBRF9GUkFNRUJVRkZF
Ul9BTkdMRSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlciA9IGNv
bnRleHQtPmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVy
SGFuZGxlID0gY29udGV4dC0+Z2V0UmVhZEZyYW1lYnVmZmVySGFuZGxlKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZnJh
bWVidWZmZXIgPSBjb250ZXh0LT5nZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgICAg
ICBmcmFtZWJ1ZmZlckhhbmRsZSA9IGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZlckhhbmRsZSgp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWZyYW1lYnVmZmVyIHx8IChmcmFt
ZWJ1ZmZlckhhbmRsZSA9PSAwICYmIHJlbmRlcmJ1ZmZlciAhPSAwKSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQgPj0gR0xfQ09MT1Jf
QVRUQUNITUVOVDBfRVhUICYmIGF0dGFjaG1lbnQgPD0gR0xfQ09MT1JfQVRUQUNITUVOVDE1X0VY
VCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgY29s
b3JBdHRhY2htZW50ID0gKGF0dGFjaG1lbnQgLSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQpOwor
CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudCA+PSBjb250ZXh0LT5nZXRNYXhp
bXVtUmVuZGVyVGFyZ2V0cygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlci0+c2V0Q29sb3JidWZmZXIoY29sb3JBdHRh
Y2htZW50LCBHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChh
dHRhY2htZW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xf
REVQVEhfQVRUQUNITUVOVDoKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXItPnNldERl
cHRoYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfQVRUQUNITUVO
VDoKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXItPnNldFN0ZW5jaWxidWZmZXIoR0xf
UkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisK
K3ZvaWQgX19zdGRjYWxsIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBs
ZXZlbCkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gYXR0YWNo
bWVudCA9IDB4JVgsIEdMZW51bSB0ZXh0YXJnZXQgPSAweCVYLCAiCisgICAgICAgICAgIkdMdWlu
dCB0ZXh0dXJlID0gJWQsIEdMaW50IGxldmVsID0gJWQpIiwgdGFyZ2V0LCBhdHRhY2htZW50LCB0
ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYg
KHRhcmdldCAhPSBHTF9GUkFNRUJVRkZFUiAmJiB0YXJnZXQgIT0gR0xfRFJBV19GUkFNRUJVRkZF
Ul9BTkdMRSAmJiB0YXJnZXQgIT0gR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAg
ICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRl
eHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KGF0dGFjaG1lbnQgPj0gR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUICYmIGF0dGFjaG1lbnQgPD0g
R0xfQ09MT1JfQVRUQUNITUVOVDE1X0VYVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb25zdCB1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50ID0gKGF0dGFjaG1lbnQgLSBHTF9D
T0xPUl9BVFRBQ0hNRU5UMF9FWFQpOworCisgICAgICAgICAgICAgICAgaWYgKGNvbG9yQXR0YWNo
bWVudCA+PSBjb250ZXh0LT5nZXRNYXhpbXVtUmVuZGVyVGFyZ2V0cygpKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChhdHRhY2htZW50KQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQVRUQUNITUVO
VDoKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlID09IDAp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGV4dGFyZ2V0ID0gR0xfTk9ORTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBnbDo6VGV4dHVyZSAqdGV4ID0gY29udGV4dC0+Z2V0VGV4dHVyZSh0ZXh0dXJlKTsKKwor
ICAgICAgICAgICAgICAgIGlmICh0ZXggPT0gTlVMTCkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHN3aXRjaCAodGV4dGFyZ2V0KQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleC0+
Z2V0VGFyZ2V0KCkgIT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdsOjpUZXh0dXJlMkQgKnRleDJkID0gc3RhdGljX2Nhc3Q8Z2w6OlRleHR1cmUyRCAq
Pih0ZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleDJkLT5pc0NvbXByZXNzZWQo
MCkpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWDoKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9O
RUdBVElWRV9YOgorICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BP
U0lUSVZFX1k6CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVH
QVRJVkVfWToKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9aOgorICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1o6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh0ZXgtPmdldFRhcmdldCgpICE9IEdMX1RFWFRVUkVfQ1VCRV9NQVApCisgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZUN1YmVNYXAgKnRleGN1YmUgPSBzdGF0aWNf
Y2FzdDxnbDo6VGV4dHVyZUN1YmVNYXAgKj4odGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh0ZXhjdWJlLT5pc0NvbXByZXNzZWQodGV4dGFyZ2V0LCBsZXZlbCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgaWYgKGxldmVsICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1
ZmZlciA9IE5VTEw7CisgICAgICAgICAgICBHTHVpbnQgZnJhbWVidWZmZXJIYW5kbGUgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0UmVh
ZEZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICAgICAgZnJhbWVidWZmZXJIYW5kbGUgPSBjb250
ZXh0LT5nZXRSZWFkRnJhbWVidWZmZXJIYW5kbGUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlciA9IGNv
bnRleHQtPmdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVy
SGFuZGxlID0gY29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlckhhbmRsZSA9PSAwIHx8ICFmcmFtZWJ1
ZmZlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGF0
dGFjaG1lbnQgPj0gR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUICYmIGF0dGFjaG1lbnQgPD0gR0xf
Q09MT1JfQVRUQUNITUVOVDE1X0VYVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50ID0gKGF0dGFjaG1lbnQgLSBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMF9FWFQpOworCisgICAgICAgICAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVu
dCA+PSBjb250ZXh0LT5nZXRNYXhpbXVtUmVuZGVyVGFyZ2V0cygpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlci0+c2V0
Q29sb3JidWZmZXIoY29sb3JBdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHN3aXRjaCAoYXR0YWNobWVudCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1FTlQ6ICAgZnJhbWVidWZmZXItPnNldERlcHRoYnVmZmVy
KHRleHRhcmdldCwgdGV4dHVyZSk7ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdM
X1NURU5DSUxfQVRUQUNITUVOVDogZnJhbWVidWZmZXItPnNldFN0ZW5jaWxidWZmZXIodGV4dGFy
Z2V0LCB0ZXh0dXJlKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lk
IF9fc3RkY2FsbCBnbEZyb250RmFjZShHTGVudW0gbW9kZSkKK3sKKyAgICBFVkVOVCgiKEdMZW51
bSBtb2RlID0gMHglWCkiLCBtb2RlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChtb2RlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9DVzoKKyAgICAgICAgICBjYXNl
IEdMX0NDVzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgICAgICAgICAgaWYgKGNv
bnRleHQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5z
ZXRGcm9udEZhY2UobW9kZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZW5CdWZmZXJzKEdMc2l6
ZWkgbiwgR0x1aW50KiBidWZmZXJzKQoreworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIEdM
dWludCogYnVmZmVycyA9IDB4JTAuOHApIiwgbiwgYnVmZmVycyk7CisKKyAgICB0cnkKKyAgICB7
CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJ1ZmZlcnNbaV0gPSBjb250ZXh0LT5jcmVh
dGVCdWZmZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZW5lcmF0ZU1pcG1hcChH
TGVudW0gdGFyZ2V0KQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgpIiwgdGFy
Z2V0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIGdsOjpUZXh0dXJlMkQgKnRleDJkID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHRleDJkLT5pc0NvbXByZXNzZWQoMCkpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGlmICh0ZXgyZC0+aXNEZXB0aCgwKSkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0ZXgy
ZC0+Z2VuZXJhdGVNaXBtYXBzKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVA6Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZUN1YmVNYXAg
KnRleGN1YmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ3ViZU1hcCgpOworCisgICAgICAgICAgICAg
ICAgICAgIGlmICh0ZXhjdWJlLT5pc0NvbXByZXNzZWQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9YLCAwKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0ZXhjdWJlLT5nZW5lcmF0ZU1pcG1hcHMo
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdlbkZlbmNlc05WKEdM
c2l6ZWkgbiwgR0x1aW50KiBmZW5jZXMpCit7CisgICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwg
R0x1aW50KiBmZW5jZXMgPSAweCUwLjhwKSIsIG4sIGZlbmNlcyk7CisKKyAgICB0cnkKKyAgICB7
CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZlbmNlc1tpXSA9IGNvbnRleHQtPmNyZWF0
ZUZlbmNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2VuRnJhbWVidWZmZXJzKEdM
c2l6ZWkgbiwgR0x1aW50KiBmcmFtZWJ1ZmZlcnMpCit7CisgICAgRVZFTlQoIihHTHNpemVpIG4g
PSAlZCwgR0x1aW50KiBmcmFtZWJ1ZmZlcnMgPSAweCUwLjhwKSIsIG4sIGZyYW1lYnVmZmVycyk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZyYW1lYnVm
ZmVyc1tpXSA9IGNvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsR2VuUXVlcmllc0VYVChHTHNpemVpIG4sIEdMdWludCogaWRzKQoreworICAg
IEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIEdMdWludCogaWRzID0gMHglMC44cCkiLCBuLCBpZHMp
OworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAobiA8IDApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKwor
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwor
CisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZHNbaV0g
PSBjb250ZXh0LT5jcmVhdGVRdWVyeSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdl
blJlbmRlcmJ1ZmZlcnMoR0xzaXplaSBuLCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMpCit7CisgICAg
RVZFTlQoIihHTHNpemVpIG4gPSAlZCwgR0x1aW50KiByZW5kZXJidWZmZXJzID0gMHglMC44cCki
LCBuLCByZW5kZXJidWZmZXJzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKG4gPCAw
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFM
VUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0
Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmVuZGVyYnVmZmVyc1tpXSA9IGNvbnRleHQtPmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdlblRleHR1cmVzKEdMc2l6ZWkgbiwg
R0x1aW50KiB0ZXh0dXJlcykKK3sKKyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQq
IHRleHR1cmVzID0gIDB4JTAuOHApIiwgbiwgdGV4dHVyZXMpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBpZiAobiA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlc1tpXSA9IGNvbnRleHQtPmNyZWF0
ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRBY3RpdmVBdHRyaWIo
R0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICps
ZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSkKK3sKKyAgICBF
VkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMdWludCBpbmRleCA9ICVkLCBHTHNpemVpIGJ1
ZnNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMC44cCwgIgorICAgICAgICAgICJHTGlu
dCAqc2l6ZSA9IDB4JTAuOHAsIEdMZW51bSAqdHlwZSA9ICUwLjhwLCBHTGNoYXIgKm5hbWUgPSAl
MC44cCkiLAorICAgICAgICAgIHByb2dyYW0sIGluZGV4LCBidWZzaXplLCBsZW5ndGgsIHNpemUs
IHR5cGUsIG5hbWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoYnVmc2l6ZSA8IDAp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRO
b25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0o
cHJvZ3JhbSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gKEdMdWludClwcm9ncmFtT2JqZWN0LT5nZXRBY3Rp
dmVBdHRyaWJ1dGVDb3VudCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZUF0dHJpYnV0ZShpbmRleCwgYnVmc2l6ZSwgbGVu
Z3RoLCBzaXplLCB0eXBlLCBuYW1lKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRBY3RpdmVVbmlmb3JtKEdM
dWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVu
Z3RoLCBHTGludCogc2l6ZSwgR0xlbnVtKiB0eXBlLCBHTGNoYXIqIG5hbWUpCit7CisgICAgRVZF
TlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTHVpbnQgaW5kZXggPSAlZCwgR0xzaXplaSBidWZz
aXplID0gJWQsICIKKyAgICAgICAgICAiR0xzaXplaSogbGVuZ3RoID0gMHglMC44cCwgR0xpbnQq
IHNpemUgPSAweCUwLjhwLCBHTGVudW0qIHR5cGUgPSAweCUwLjhwLCBHTGNoYXIqIG5hbWUgPSAw
eCUwLjhwKSIsCisgICAgICAgICAgcHJvZ3JhbSwgaW5kZXgsIGJ1ZnNpemUsIGxlbmd0aCwgc2l6
ZSwgdHlwZSwgbmFtZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChidWZzaXplIDwg
MCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3Jh
bShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSAoR0x1aW50KXByb2dyYW1PYmplY3QtPmdldEFj
dGl2ZVVuaWZvcm1Db3VudCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm0oaW5kZXgsIGJ1ZnNpemUsIGxlbmd0
aCwgc2l6ZSwgdHlwZSwgbmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0QXR0YWNoZWRTaGFkZXJzKEdM
dWludCBwcm9ncmFtLCBHTHNpemVpIG1heGNvdW50LCBHTHNpemVpKiBjb3VudCwgR0x1aW50KiBz
aGFkZXJzKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xzaXplaSBtYXhj
b3VudCA9ICVkLCBHTHNpemVpKiBjb3VudCA9IDB4JTAuOHAsIEdMdWludCogc2hhZGVycyA9IDB4
JTAuOHApIiwKKyAgICAgICAgICBwcm9ncmFtLCBtYXhjb3VudCwgY291bnQsIHNoYWRlcnMpOwor
CisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAobWF4Y291bnQgPCAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9
CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlBy
b2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisg
ICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlcihwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHByb2dyYW1PYmplY3QtPmdldEF0dGFjaGVkU2hhZGVycyhtYXhjb3VudCwgY291bnQs
IHNoYWRlcnMpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
KyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAg
fQorfQorCitpbnQgX19zdGRjYWxsIGdsR2V0QXR0cmliTG9jYXRpb24oR0x1aW50IHByb2dyYW0s
IGNvbnN0IEdMY2hhciogbmFtZSkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQs
IGNvbnN0IEdMY2hhciogbmFtZSA9ICVzKSIsIHByb2dyYW0sIG5hbWUpOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisKKyAgICAgICAgICAgIGds
OjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsK
KworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAtMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSwgLTEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBwcm9ncmFtT2Jq
ZWN0LT5nZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3Qt
PmlzTGlua2VkKCkgfHwgIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgLTEpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0QXR0cmlidXRl
TG9jYXRpb24obmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAt
MSk7CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldEJv
b2xlYW52KEdMZW51bSBwbmFtZSwgR0xib29sZWFuKiBwYXJhbXMpCit7CisgICAgRVZFTlQoIihH
TGVudW0gcG5hbWUgPSAweCVYLCBHTGJvb2xlYW4qIHBhcmFtcyA9IDB4JTAuOHApIiwgIHBuYW1l
LCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIShjb250ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgcGFy
YW1zKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgR0xlbnVtIG5hdGl2ZVR5cGU7
CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG51bVBhcmFtcyA9IDA7CisgICAgICAgICAg
ICAgICAgaWYgKCFjb250ZXh0LT5nZXRRdWVyeVBhcmFtZXRlckluZm8ocG5hbWUsICZuYXRpdmVU
eXBlLCAmbnVtUGFyYW1zKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICAgICAgaWYgKG51bVBhcmFtcyA9PSAwKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGl0IGlzIGtub3duIHRoYXQgdGhlIHBuYW1l
IGlzIHZhbGlkLCBidXQgdGhlcmUgYXJlIG5vIHBhcmFtZXRlcnMgdG8gcmV0dXJuCisKKyAgICAg
ICAgICAgICAgICBpZiAobmF0aXZlVHlwZSA9PSBHTF9GTE9BVCkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKmZsb2F0UGFyYW1zID0gTlVMTDsKKyAgICAg
ICAgICAgICAgICAgICAgZmxvYXRQYXJhbXMgPSBuZXcgR0xmbG9hdFtudW1QYXJhbXNdOworCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgZmxvYXRQYXJhbXMp
OworCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVt
UGFyYW1zOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChmbG9hdFBhcmFtc1tpXSA9PSAwLjBmKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtc1tpXSA9IEdMX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IEdMX1RSVUU7CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBkZWxldGUgW10gZmxvYXRQYXJh
bXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hdGl2ZVR5
cGUgPT0gR0xfSU5UKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKmludFBhcmFtcyA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGludFBhcmFtcyA9IG5l
dyBHTGludFtudW1QYXJhbXNdOworCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldElu
dGVnZXJ2KHBuYW1lLCBpbnRQYXJhbXMpOworCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1zOyArK2kpCisgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnRQYXJhbXNbaV0gPT0gMCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbaV0gPSBHTF9GQUxTRTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbaV0g
PSBHTF9UUlVFOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlIFtdIGludFBhcmFtczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLCBHTGludCogcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgs
IEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHRhcmdldCwg
cG5hbWUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlcjsKKworICAgICAgICAg
ICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xf
QVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQtPmdldEFycmF5
QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xf
RUxFTUVOVF9BUlJBWV9CVUZGRVI6CisgICAgICAgICAgICAgICAgYnVmZmVyID0gY29udGV4dC0+
Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGRlZmF1bHQ6IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgLy8gQSBudWxsIGJ1ZmZlciBtZWFucyB0aGF0ICIwIiBpcyBib3VuZCB0byB0
aGUgcmVxdWVzdGVkIGJ1ZmZlciB0YXJnZXQKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
c3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9CVUZG
RVJfVVNBR0U6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGJ1ZmZlci0+dXNhZ2UoKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9CVUZGRVJfU0laRToK
KyAgICAgICAgICAgICAgICAqcGFyYW1zID0gYnVmZmVyLT5zaXplKCk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOworICAgIH0KK30KKworR0xlbnVtIF9fc3RkY2FsbCBnbEdldEVycm9yKHZvaWQp
Cit7CisgICAgRVZFTlQoIigpIik7CisKKyAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXRDb250ZXh0KCk7CisKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBj
b250ZXh0LT5nZXRFcnJvcigpOworICAgIH0KKworICAgIHJldHVybiBHTF9OT19FUlJPUjsKK30K
Kwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRGZW5jZWl2TlYoR0x1aW50IGZlbmNlLCBHTGVudW0gcG5h
bWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTHVpbnQgZmVuY2UgPSAlZCwgR0xl
bnVtIHBuYW1lID0gMHglWCwgR0xpbnQgKnBhcmFtcyA9IDB4JTAuOHApIiwgZmVuY2UsIHBuYW1l
LCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgIAorICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6RmVuY2UgKmZlbmNlT2JqZWN0ID0gY29udGV4
dC0+Z2V0RmVuY2UoZmVuY2UpOworCisgICAgICAgICAgICBpZiAoZmVuY2VPYmplY3QgPT0gTlVM
TCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmVuY2VPYmpl
Y3QtPmdldEZlbmNlaXYocG5hbWUsIHBhcmFtcyk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0RmxvYXR2KEdM
ZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHBuYW1l
ID0gMHglWCwgR0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLCBwbmFtZSwgcGFyYW1zKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9u
TG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKCEoY29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCBwYXJhbXMpKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBHTGVudW0gbmF0aXZlVHlwZTsKKyAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRl
eHQtPmdldFF1ZXJ5UGFyYW1ldGVySW5mbyhwbmFtZSwgJm5hdGl2ZVR5cGUsICZudW1QYXJhbXMp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7
CisKKyAgICAgICAgICAgICAgICBpZiAobnVtUGFyYW1zID09IDApCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsgLy8gaXQgaXMga25vd24gdGhhdCB0aGUgcG5hbWUgaXMgdmFsaWQsIGJ1dCB0
aGF0IHRoZXJlIGFyZSBubyBwYXJhbWV0ZXJzIHRvIHJldHVybi4KKworICAgICAgICAgICAgICAg
IGlmIChuYXRpdmVUeXBlID09IEdMX0JPT0wpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gKmJvb2xQYXJhbXMgPSBOVUxMOworICAgICAgICAgICAgICAg
ICAgICBib29sUGFyYW1zID0gbmV3IEdMYm9vbGVhbltudW1QYXJhbXNdOworCisgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCBib29sUGFyYW1zKTsKKworICAg
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVBhcmFtczsg
KytpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
Ym9vbFBhcmFtc1tpXSA9PSBHTF9GQUxTRSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXNbaV0gPSAwLjBmOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IDEuMGY7CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICBkZWxldGUgW10gYm9vbFBhcmFtczsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobmF0aXZlVHlwZSA9PSBHTF9JTlQp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBHTGludCAqaW50UGFyYW1z
ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgaW50UGFyYW1zID0gbmV3IEdMaW50W251bVBh
cmFtc107CisKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUs
IGludFBhcmFtcyk7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gKEdMZmxvYXQpaW50UGFyYW1zW2ldOworICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFtdIGludFBhcmFt
czsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFj
aG1lbnQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMZW51
bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gYXR0YWNobWVudCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9
IDB4JVgsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgICAgdGFyZ2V0LCBhdHRh
Y2htZW50LCBwbmFtZSwgcGFyYW1zKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAo
Y29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9GUkFNRUJV
RkZFUiAmJiB0YXJnZXQgIT0gR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSAmJiB0YXJnZXQgIT0g
R0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBOVUxMOworICAgICAgICAg
ICAgaWYgKHRhcmdldCA9PSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGlmKGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1ZmZlckhhbmRsZSgp
ID09IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1ZmZlcigpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAoY29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKCkgPT0gMCkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50VHlwZTsKKyAgICAgICAgICAgIEdM
dWludCBhdHRhY2htZW50SGFuZGxlOworCisgICAgICAgICAgICBpZiAoYXR0YWNobWVudCA+PSBH
TF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQgJiYgYXR0YWNobWVudCA8PSBHTF9DT0xPUl9BVFRBQ0hN
RU5UMTVfRVhUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGludCBjb2xvckF0dGFjaG1lbnQgPSAoYXR0YWNobWVudCAtIEdMX0NPTE9SX0FUVEFDSE1FTlQw
X0VYVCk7CisKKyAgICAgICAgICAgICAgICBpZiAoY29sb3JBdHRhY2htZW50ID49IGNvbnRleHQt
PmdldE1heGltdW1SZW5kZXJUYXJnZXRzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgYXR0YWNobWVudFR5cGUgPSBmcmFtZWJ1ZmZlci0+
Z2V0Q29sb3JidWZmZXJUeXBlKGNvbG9yQXR0YWNobWVudCk7CisgICAgICAgICAgICAgICAgYXR0
YWNobWVudEhhbmRsZSA9IGZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlckhhbmRsZShjb2xvckF0
dGFjaG1lbnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHN3aXRjaCAoYXR0YWNobWVudCkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgICAg
ICAgICAgICAgIGF0dGFjaG1lbnRUeXBlID0gZnJhbWVidWZmZXItPmdldERlcHRoYnVmZmVyVHlw
ZSgpOworICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50SGFuZGxlID0gZnJhbWVidWZmZXIt
PmdldERlcHRoYnVmZmVySGFuZGxlKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICAg
ICAgICAgIGF0dGFjaG1lbnRUeXBlID0gZnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXJUeXBl
KCk7CisgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRIYW5kbGUgPSBmcmFtZWJ1ZmZlci0+
Z2V0U3RlbmNpbGJ1ZmZlckhhbmRsZSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVN
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEdMZW51
bSBhdHRhY2htZW50T2JqZWN0VHlwZTsgICAvLyBUeXBlIGNhdGVnb3J5CisgICAgICAgICAgICBp
ZiAoYXR0YWNobWVudFR5cGUgPT0gR0xfTk9ORSB8fCBhdHRhY2htZW50VHlwZSA9PSBHTF9SRU5E
RVJCVUZGRVIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXR0YWNobWVudE9iamVj
dFR5cGUgPSBhdHRhY2htZW50VHlwZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
aWYgKGdsOjpJc0ludGVybmFsVGV4dHVyZVRhcmdldChhdHRhY2htZW50VHlwZSkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgYXR0YWNobWVudE9iamVjdFR5cGUgPSBHTF9URVhUVVJF
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEU6Cisg
ICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3RUeXBlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfT0JKRUNUX05BTUU6CisgICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRPYmplY3RUeXBl
ID09IEdMX1JFTkRFUkJVRkZFUiB8fCBhdHRhY2htZW50T2JqZWN0VHlwZSA9PSBHTF9URVhUVVJF
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFj
aG1lbnRIYW5kbGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xF
VkVMOgorICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50T2JqZWN0VHlwZSA9PSBHTF9URVhU
VVJFKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IDA7
IC8vIEZyYW1lYnVmZmVyVGV4dHVyZTJEIHdpbGwgbm90IGFsbG93IGxldmVsIHRvIGJlIHNldCB0
byBhbnl0aGluZyBlbHNlIGluIEdMIEVTIDIuMAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgorICAgICAgICAgICAgICAgIGlmIChhdHRhY2ht
ZW50T2JqZWN0VHlwZSA9PSBHTF9URVhUVVJFKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGdsOjpJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0KGF0dGFjaG1lbnRUeXBl
KSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IGF0dGFjaG1lbnRUeXBlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgKnBhcmFtcyA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisK
K0dMZW51bSBfX3N0ZGNhbGwgZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKHZvaWQpCit7Cisg
ICAgRVZFTlQoIigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdldFJlc2V0U3RhdHVzKCk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gR0xfTk9fRVJST1I7CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOwor
ICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIEdM
aW50KiBwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCog
cGFyYW1zID0gMHglMC44cCkiLCBwbmFtZSwgcGFyYW1zKTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKwor
ICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCEoY29udGV4
dC0+Z2V0SW50ZWdlcnYocG5hbWUsIHBhcmFtcykpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIEdMZW51bSBuYXRpdmVUeXBlOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBu
dW1QYXJhbXMgPSAwOworICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0UXVlcnlQYXJh
bWV0ZXJJbmZvKHBuYW1lLCAmbmF0aXZlVHlwZSwgJm51bVBhcmFtcykpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgICAgICAgICAg
ICAgIGlmIChudW1QYXJhbXMgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBp
dCBpcyBrbm93biB0aGF0IHBuYW1lIGlzIHZhbGlkLCBidXQgdGhlcmUgYXJlIG5vIHBhcmFtZXRl
cnMgdG8gcmV0dXJuCisKKyAgICAgICAgICAgICAgICBpZiAobmF0aXZlVHlwZSA9PSBHTF9CT09M
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuICpib29s
UGFyYW1zID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgYm9vbFBhcmFtcyA9IG5ldyBHTGJv
b2xlYW5bbnVtUGFyYW1zXTsKKworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRCb29s
ZWFudihwbmFtZSwgYm9vbFBhcmFtcyk7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvb2xQYXJhbXNbaV0gPT0gR0xfRkFMU0Up
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gMDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbaV0g
PSAxOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRl
IFtdIGJvb2xQYXJhbXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKG5hdGl2ZVR5cGUgPT0gR0xfRkxPQVQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0ICpmbG9hdFBhcmFtcyA9IE5VTEw7CisgICAgICAgICAgICAgICAg
ICAgIGZsb2F0UGFyYW1zID0gbmV3IEdMZmxvYXRbbnVtUGFyYW1zXTsKKworICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIGZsb2F0UGFyYW1zKTsKKworICAgICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVBhcmFtczsgKytp
KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG5h
bWUgPT0gR0xfREVQVEhfUkFOR0UgfHwgcG5hbWUgPT0gR0xfQ09MT1JfQ0xFQVJfVkFMVUUgfHwg
cG5hbWUgPT0gR0xfREVQVEhfQ0xFQVJfVkFMVUUgfHwgcG5hbWUgPT0gR0xfQkxFTkRfQ09MT1Ip
CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zW2ldID0gKEdMaW50KSgoKEdMZmxvYXQpKDB4RkZGRkZGRkYpICogZmxvYXRQYXJhbXNb
aV0gLSAxLjBmKSAvIDIuMGYpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tp
XSA9IChHTGludCkoZmxvYXRQYXJhbXNbaV0gPiAwLjBmID8gZmxvb3IoZmxvYXRQYXJhbXNbaV0g
KyAwLjUpIDogY2VpbChmbG9hdFBhcmFtc1tpXSAtIDAuNSkpOworICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFtdIGZsb2F0UGFyYW1zOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRQcm9ncmFtaXYoR0x1
aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKK3sKKyAgICBFVkVOVCgi
KEdMdWludCBwcm9ncmFtID0gJWQsIEdMZW51bSBwbmFtZSA9ICVkLCBHTGludCogcGFyYW1zID0g
MHglMC44cCkiLCBwcm9ncmFtLCBwbmFtZSwgcGFyYW1zKTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKwor
ICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlByb2dyYW0g
KnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAg
ICAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9ERUxFVEVfU1RBVFVTOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtT2Jq
ZWN0LT5pc0ZsYWdnZWRGb3JEZWxldGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9MSU5LX1NUQVRVUzoKKyAgICAgICAgICAgICAgICAqcGFyYW1z
ID0gcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfVkFMSURBVEVfU1RBVFVTOgorICAgICAgICAgICAgICAgICpw
YXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5pc1ZhbGlkYXRlZCgpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9JTkZPX0xPR19MRU5HVEg6CisgICAgICAgICAg
ICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdldEluZm9Mb2dMZW5ndGgoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgR0xfQVRUQUNIRURfU0hBREVS
UzoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+Z2V0QXR0YWNoZWRT
aGFkZXJzQ291bnQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNh
c2UgR0xfQUNUSVZFX0FUVFJJQlVURVM6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dy
YW1PYmplY3QtPmdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICBjYXNlIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSDoK
KyAgICAgICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlQXR0cmli
dXRlTWF4TGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBj
YXNlIEdMX0FDVElWRV9VTklGT1JNUzoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3Jh
bU9iamVjdC0+Z2V0QWN0aXZlVW5pZm9ybUNvdW50KCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICBjYXNlIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEg6CisgICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm1NYXhM
ZW5ndGgoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgR0xf
UFJPR1JBTV9CSU5BUllfTEVOR1RIX09FUzoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gcHJv
Z3JhbU9iamVjdC0+Z2V0UHJvZ3JhbUJpbmFyeUxlbmd0aCgpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0
UHJvZ3JhbUluZm9Mb2coR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSog
bGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9
ICVkLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gMHglMC44cCwgR0xj
aGFyKiBpbmZvbG9nID0gMHglMC44cCkiLAorICAgICAgICAgIHByb2dyYW0sIGJ1ZnNpemUsIGxl
bmd0aCwgaW5mb2xvZyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChidWZzaXplIDwg
MCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3Jh
bShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHByb2dyYW1PYmplY3QtPmdldEluZm9Mb2co
YnVmc2l6ZSwgbGVuZ3RoLCBpbmZvbG9nKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRRdWVyeWl2RVhUKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgi
R0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50ICpwYXJhbXMg
PSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0NVUlJF
TlRfUVVFUllfRVhUOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQor
CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7
CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBhcmFtc1sw
XSA9IGNvbnRleHQtPmdldEFjdGl2ZVF1ZXJ5KHRhcmdldCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0UXVl
cnlPYmplY3R1aXZFWFQoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKQor
eworICAgIEVWRU5UKCIoR0x1aW50IGlkID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMdWlu
dCAqcGFyYW1zID0gMHglMC44cCkiLCBpZCwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdM
X1FVRVJZX1JFU1VMVF9FWFQ6CisgICAgICAgICAgY2FzZSBHTF9RVUVSWV9SRVNVTFRfQVZBSUxB
QkxFX0VYVDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlF1ZXJ5ICpxdWVy
eU9iamVjdCA9IGNvbnRleHQtPmdldFF1ZXJ5KGlkLCBmYWxzZSwgR0xfTk9ORSk7CisKKyAgICAg
ICAgICAgIGlmICghcXVlcnlPYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRBY3RpdmVRdWVyeShxdWVyeU9iamVjdC0+Z2V0
VHlwZSgpKSA9PSBpZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgc3dpdGNoKHBuYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1FV
RVJZX1JFU1VMVF9FWFQ6CisgICAgICAgICAgICAgICAgcGFyYW1zWzBdID0gcXVlcnlPYmplY3Qt
PmdldFJlc3VsdCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhUOgorICAgICAgICAgICAgICAgIHBhcmFtc1sw
XSA9IHF1ZXJ5T2JqZWN0LT5pc1Jlc3VsdEF2YWlsYWJsZSgpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVChmYWxz
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQoreworICAgIEVW
RU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50KiBw
YXJhbXMgPSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAg
ICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0
YXJnZXQgIT0gR0xfUkVOREVSQlVGRkVSKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlckhhbmRsZSgpID09IDApCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIg
KnJlbmRlcmJ1ZmZlciA9IGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlcihjb250ZXh0LT5nZXRSZW5k
ZXJidWZmZXJIYW5kbGUoKSk7CisKKyAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1dJRFRIOiAgICAgICAg
ICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0V2lkdGgoKTsgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0hFSUdIVDogICAgICAgICAgKnBhcmFt
cyA9IHJlbmRlcmJ1ZmZlci0+Z2V0SGVpZ2h0KCk7ICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDogKnBhcmFtcyA9IHJlbmRl
cmJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfUkVOREVSQlVGRkVSX1JFRF9TSVpFOiAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+
Z2V0UmVkU2l6ZSgpOyAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVS
QlVGRkVSX0dSRUVOX1NJWkU6ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0R3JlZW5T
aXplKCk7ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0JM
VUVfU0laRTogICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0Qmx1ZVNpemUoKTsgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkU6
ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0QWxwaGFTaXplKCk7ICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6ICAgICAgKnBh
cmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0RGVwdGhTaXplKCk7ICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRTogICAgKnBhcmFtcyA9IHJl
bmRlcmJ1ZmZlci0+Z2V0U3RlbmNpbFNpemUoKTsgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgR0xfUkVOREVSQlVGRkVSX1NBTVBMRVNfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSAhPSAwKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0U2FtcGxlcygp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5V
TSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRTaGFkZXJpdihHTHVpbnQg
c2hhZGVyLCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTHVp
bnQgc2hhZGVyID0gJWQsIEdMZW51bSBwbmFtZSA9ICVkLCBHTGludCogcGFyYW1zID0gMHglMC44
cCkiLCBzaGFkZXIsIHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAg
IGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6U2hhZGVyICpzaGFkZXJP
YmplY3QgPSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKworICAgICAgICAgICAgaWYgKCFz
aGFkZXJPYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dp
dGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TSEFERVJf
VFlQRToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyT2JqZWN0LT5nZXRUeXBlKCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlIEdMX0RFTEVURV9T
VEFUVVM6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHNoYWRlck9iamVjdC0+aXNGbGFnZ2Vk
Rm9yRGVsZXRpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNh
c2UgR0xfQ09NUElMRV9TVEFUVVM6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHNoYWRlck9i
amVjdC0+aXNDb21waWxlZCgpID8gR0xfVFJVRSA6IEdMX0ZBTFNFOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9JTkZPX0xPR19MRU5HVEg6CisgICAgICAg
ICAgICAgICAgKnBhcmFtcyA9IHNoYWRlck9iamVjdC0+Z2V0SW5mb0xvZ0xlbmd0aCgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TSEFERVJfU09VUkNF
X0xFTkdUSDoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyT2JqZWN0LT5nZXRTb3Vy
Y2VMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNhc2Ug
R0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRToKKyAgICAgICAgICAgICAg
ICAqcGFyYW1zID0gc2hhZGVyT2JqZWN0LT5nZXRUcmFuc2xhdGVkU291cmNlTGVuZ3RoKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9p
ZCBfX3N0ZGNhbGwgZ2xHZXRTaGFkZXJJbmZvTG9nKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVm
c2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpCit7CisgICAgRVZFTlQoIihH
THVpbnQgc2hhZGVyID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGgg
PSAweCUwLjhwLCBHTGNoYXIqIGluZm9sb2cgPSAweCUwLjhwKSIsCisgICAgICAgICAgc2hhZGVy
LCBidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBp
ZiAoYnVmc2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBnbDo6U2hhZGVyICpzaGFkZXJPYmplY3QgPSBjb250ZXh0
LT5nZXRTaGFkZXIoc2hhZGVyKTsKKworICAgICAgICAgICAgaWYgKCFzaGFkZXJPYmplY3QpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hhZGVyT2JqZWN0LT5nZXRJ
bmZvTG9nKGJ1ZnNpemUsIGxlbmd0aCwgaW5mb2xvZyk7CisgICAgICAgIH0KKyAgICB9CisgICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0U2hhZGVy
UHJlY2lzaW9uRm9ybWF0KEdMZW51bSBzaGFkZXJ0eXBlLCBHTGVudW0gcHJlY2lzaW9udHlwZSwg
R0xpbnQqIHJhbmdlLCBHTGludCogcHJlY2lzaW9uKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHNo
YWRlcnR5cGUgPSAweCVYLCBHTGVudW0gcHJlY2lzaW9udHlwZSA9IDB4JVgsIEdMaW50KiByYW5n
ZSA9IDB4JTAuOHAsIEdMaW50KiBwcmVjaXNpb24gPSAweCUwLjhwKSIsCisgICAgICAgICAgc2hh
ZGVydHlwZSwgcHJlY2lzaW9udHlwZSwgcmFuZ2UsIHByZWNpc2lvbik7CisKKyAgICB0cnkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAoc2hhZGVydHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNh
c2UgR0xfVkVSVEVYX1NIQURFUjoKKyAgICAgICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NIQURFUjoK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0
Y2ggKHByZWNpc2lvbnR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0xPV19GTE9B
VDoKKyAgICAgICAgICBjYXNlIEdMX01FRElVTV9GTE9BVDoKKyAgICAgICAgICBjYXNlIEdMX0hJ
R0hfRkxPQVQ6CisgICAgICAgICAgICAvLyBBc3N1bWUgSUVFRSA3NTQgcHJlY2lzaW9uCisgICAg
ICAgICAgICByYW5nZVswXSA9IDEyNzsKKyAgICAgICAgICAgIHJhbmdlWzFdID0gMTI3OworICAg
ICAgICAgICAgKnByZWNpc2lvbiA9IDIzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
Y2FzZSBHTF9MT1dfSU5UOgorICAgICAgICAgIGNhc2UgR0xfTUVESVVNX0lOVDoKKyAgICAgICAg
ICBjYXNlIEdMX0hJR0hfSU5UOgorICAgICAgICAgICAgLy8gU29tZSAobW9zdCkgaGFyZHdhcmUg
b25seSBzdXBwb3J0cyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IG51bWJlcnMsCisg
ICAgICAgICAgICAvLyB3aGljaCBjYW4gYWNjdXJhdGVseSByZXByZXNlbnQgaW50ZWdlcnMgdXAg
dG8gKy8tMTY3NzcyMTYKKyAgICAgICAgICAgIHJhbmdlWzBdID0gMjQ7CisgICAgICAgICAgICBy
YW5nZVsxXSA9IDI0OworICAgICAgICAgICAgKnByZWNpc2lvbiA9IDA7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldFNoYWRlclNvdXJjZShHTHVpbnQgc2hh
ZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBzb3VyY2UpCit7
CisgICAgRVZFTlQoIihHTHVpbnQgc2hhZGVyID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBH
THNpemVpKiBsZW5ndGggPSAweCUwLjhwLCBHTGNoYXIqIHNvdXJjZSA9IDB4JTAuOHApIiwKKyAg
ICAgICAgICBzaGFkZXIsIGJ1ZnNpemUsIGxlbmd0aCwgc291cmNlKTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgaWYgKGJ1ZnNpemUgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBp
ZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlNoYWRlciAqc2hhZGVyT2Jq
ZWN0ID0gY29udGV4dC0+Z2V0U2hhZGVyKHNoYWRlcik7CisKKyAgICAgICAgICAgIGlmICghc2hh
ZGVyT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBz
aGFkZXJPYmplY3QtPmdldFNvdXJjZShidWZzaXplLCBsZW5ndGgsIHNvdXJjZSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRj
YWxsIGdsR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKEdMdWludCBzaGFkZXIsIEdMc2l6
ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIHNvdXJjZSkKK3sKKyAgICBFVkVO
VCgiKEdMdWludCBzaGFkZXIgPSAlZCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkqIGxl
bmd0aCA9IDB4JTAuOHAsIEdMY2hhciogc291cmNlID0gMHglMC44cCkiLAorICAgICAgICAgIHNo
YWRlciwgYnVmc2l6ZSwgbGVuZ3RoLCBzb3VyY2UpOworCisgICAgdHJ5CisgICAgeworICAgICAg
ICBpZiAoYnVmc2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6U2hhZGVyICpzaGFkZXJPYmplY3QgPSBjb250
ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKworICAgICAgICAgICAgaWYgKCFzaGFkZXJPYmplY3Qp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNoYWRlck9iamVj
dC0+Z2V0VHJhbnNsYXRlZFNvdXJjZShidWZzaXplLCBsZW5ndGgsIHNvdXJjZSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK2NvbnN0IEdMdWJ5
dGUqIF9fc3RkY2FsbCBnbEdldFN0cmluZyhHTGVudW0gbmFtZSkKK3sKKyAgICBFVkVOVCgiKEdM
ZW51bSBuYW1lID0gMHglWCkiLCBuYW1lKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBz
d2l0Y2ggKG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1ZFTkRPUjoKKyAgICAg
ICAgICAgIHJldHVybiAoR0x1Ynl0ZSopIkdvb2dsZSBJbmMuIjsKKyAgICAgICAgICBjYXNlIEdM
X1JFTkRFUkVSOgorICAgICAgICAgICAgcmV0dXJuIChHTHVieXRlKikoKGNvbnRleHQgIT0gTlVM
TCkgPyBjb250ZXh0LT5nZXRSZW5kZXJlclN0cmluZygpIDogIkFOR0xFIik7CisgICAgICAgICAg
Y2FzZSBHTF9WRVJTSU9OOgorICAgICAgICAgICAgcmV0dXJuIChHTHVieXRlKikiT3BlbkdMIEVT
IDIuMCAoQU5HTEUgIiBWRVJTSU9OX1NUUklORyAiKSI7CisgICAgICAgICAgY2FzZSBHTF9TSEFE
SU5HX0xBTkdVQUdFX1ZFUlNJT046CisgICAgICAgICAgICByZXR1cm4gKEdMdWJ5dGUqKSJPcGVu
R0wgRVMgR0xTTCBFUyAxLjAwIChBTkdMRSAiIFZFUlNJT05fU1RSSU5HICIpIjsKKyAgICAgICAg
ICBjYXNlIEdMX0VYVEVOU0lPTlM6CisgICAgICAgICAgICByZXR1cm4gKEdMdWJ5dGUqKSgoY29u
dGV4dCAhPSBOVUxMKSA/IGNvbnRleHQtPmdldEV4dGVuc2lvblN0cmluZygpIDogIiIpOworICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
RU5VTSwgKEdMdWJ5dGUqKU5VTEwpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSwgKEdMdWJ5dGUqKU5VTEwpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRU
ZXhQYXJhbWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFt
cykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAw
eCVYLCBHTGZsb2F0KiBwYXJhbXMgPSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlOworCisgICAgICAgICAgICBzd2l0Y2ggKHRh
cmdldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgor
ICAgICAgICAgICAgICAgIHRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlMkQoKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQ
OgorICAgICAgICAgICAgICAgIHRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ3ViZU1hcCgp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6CisgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IChHTGZsb2F0KXRleHR1cmUtPmdldE1hZ0ZpbHRlcigpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjoKKyAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0TWluRmlsdGVyKCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6
CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldFdyYXBTKCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9X
UkFQX1Q6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldFdy
YXBUKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9JTU1VVEFCTEVfRk9STUFUX0VYVDoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gKEdM
ZmxvYXQpKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkgPyBHTF9UUlVFIDogR0xfRkFMU0UpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfVVNBR0Vf
QU5HTEU6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldFVz
YWdlKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5z
dXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5KCkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJl
LT5nZXRNYXhBbmlzb3Ryb3B5KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldFRleFBhcmFtZXRlcml2KEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKK3sKKyAgICBFVkVOVCgi
KEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1z
ID0gMHglMC44cCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwor
CisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6VGV4dHVy
ZSAqdGV4dHVyZTsKKworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAgICB0ZXh0
dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUDoKKyAgICAgICAgICAgICAgICB0
ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3
aXRjaCAocG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9NQUdfRklMVEVSOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRNYWdG
aWx0ZXIoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX01JTl9GSUxURVI6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdl
dE1pbkZpbHRlcigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfV1JBUF9TOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5n
ZXRXcmFwUygpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfV1JBUF9UOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRX
cmFwVCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfSU1NVVRBQkxFX0ZPUk1BVF9FWFQ6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHRl
eHR1cmUtPmlzSW1tdXRhYmxlKCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FHRV9BTkdMRToKKyAg
ICAgICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+Z2V0VXNhZ2UoKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZ
X0VYVDoKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzVGV4dHVyZUZpbHRl
ckFuaXNvdHJvcHkoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IChHTGludCl0ZXh0dXJlLT5nZXRNYXhBbmlzb3Ryb3B5KCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2
b2lkIF9fc3RkY2FsbCBnbEdldG5Vbmlmb3JtZnZFWFQoR0x1aW50IHByb2dyYW0sIEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBFVkVOVCgi
KEdMdWludCBwcm9ncmFtID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgYnVmU2l6
ZSA9ICVkLCBHTGZsb2F0KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgICAgcHJvZ3JhbSwg
bG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlm
IChidWZTaXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwcm9ncmFtID09IDApCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250
ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmpl
Y3QgfHwgIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0g
cHJvZ3JhbU9iamVjdC0+Z2V0UHJvZ3JhbUJpbmFyeSgpOworICAgICAgICAgICAgaWYgKCFwcm9n
cmFtQmluYXJ5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoIXByb2dyYW1CaW5hcnktPmdldFVuaWZvcm1mdihsb2NhdGlvbiwgJmJ1ZlNpemUsIHBhcmFt
cykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0VW5pZm9y
bWZ2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCogcGFyYW1zKQorewor
ICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xm
bG9hdCogcGFyYW1zID0gMHglMC44cCkiLCBwcm9ncmFtLCBsb2NhdGlvbiwgcGFyYW1zKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9u
TG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHByb2dyYW0gPT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0o
cHJvZ3JhbSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCB8fCAhcHJvZ3JhbU9i
amVjdC0+aXNMaW5rZWQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBwcm9ncmFtT2JqZWN0LT5n
ZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFy
eS0+Z2V0VW5pZm9ybWZ2KGxvY2F0aW9uLCBOVUxMLCBwYXJhbXMpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9j
JikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Cisg
ICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldG5Vbmlmb3JtaXZFWFQoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMaW50KiBwYXJhbXMpCit7Cisg
ICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNp
emVpIGJ1ZlNpemUgPSAlZCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwgCisgICAgICAgICAg
cHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGlmIChidWZTaXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNv
bnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwcm9ncmFtID09IDApCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmpl
Y3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgICAgICBpZiAoIXBy
b2dyYW1PYmplY3QgfHwgIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFt
QmluYXJ5ID0gcHJvZ3JhbU9iamVjdC0+Z2V0UHJvZ3JhbUJpbmFyeSgpOworICAgICAgICAgICAg
aWYgKCFwcm9ncmFtQmluYXJ5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnktPmdldFVuaWZvcm1pdihsb2NhdGlvbiwgJmJ1ZlNp
emUsIHBhcmFtcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
R2V0VW5pZm9ybWl2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQqIHBhcmFt
cykKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMaW50IGxvY2F0aW9uID0g
JWQsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHByb2dyYW0sIGxvY2F0aW9uLCBwYXJhbXMp
OworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAocHJvZ3JhbSA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJv
Z3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0IHx8ICFwcm9n
cmFtT2JqZWN0LT5pc0xpbmtlZCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IHByb2dyYW1PYmpl
Y3QtPmdldFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFwcm9ncmFt
QmluYXJ5LT5nZXRVbmlmb3JtaXYobG9jYXRpb24sIE5VTEwsIHBhcmFtcykpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9Cit9CisKK2ludCBfX3N0ZGNhbGwgZ2xHZXRVbmlmb3JtTG9jYXRpb24oR0x1aW50
IHByb2dyYW0sIGNvbnN0IEdMY2hhciogbmFtZSkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9n
cmFtID0gJWQsIGNvbnN0IEdMY2hhciogbmFtZSA9IDB4JTAuOHApIiwgcHJvZ3JhbSwgbmFtZSk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKHN0cnN0cihuYW1lLCAiZ2xfIikgPT0g
bmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpw
cm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAg
ICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
IChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAtMSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSwgLTEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Z2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBwcm9ncmFtT2JqZWN0LT5nZXRQcm9n
cmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkg
fHwgIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgLTEpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0VW5pZm9ybUxvY2F0aW9uKG5hbWUp
OworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgLTEpOworICAgIH0KKwor
ICAgIHJldHVybiAtMTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRWZXJ0ZXhBdHRyaWJmdihH
THVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKQoreworICAgIEVWRU5U
KCIoR0x1aW50IGluZGV4ID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMZmxvYXQqIHBhcmFt
cyA9IDB4JTAuOHApIiwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwor
CisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaW5kZXgg
Pj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWJTdGF0ZSA9IGNvbnRl
eHQtPmdldFZlcnRleEF0dHJpYlN0YXRlKGluZGV4KTsKKworICAgICAgICAgICAgc3dpdGNoIChw
bmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklC
X0FSUkFZX0VOQUJMRUQ6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KShhdHRy
aWJTdGF0ZS5tQXJyYXlFbmFibGVkID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJ
WkU6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KWF0dHJpYlN0YXRlLm1TaXpl
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9B
VFRSSUJfQVJSQVlfU1RSSURFOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdClh
dHRyaWJTdGF0ZS5tU3RyaWRlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRToKKyAgICAgICAgICAgICAgICAqcGFy
YW1zID0gKEdMZmxvYXQpYXR0cmliU3RhdGUubVR5cGU7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEOgor
ICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCkoYXR0cmliU3RhdGUubU5vcm1hbGl6
ZWQgPyBHTF9UUlVFIDogR0xfRkFMU0UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkc6CisgICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KWF0dHJpYlN0YXRlLm1Cb3VuZEJ1ZmZlci5p
ZCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0NVUlJF
TlRfVkVSVEVYX0FUVFJJQjoKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7
ICsraSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9
IGF0dHJpYlN0YXRlLm1DdXJyZW50VmFsdWVbaV07CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJS
QVlfRElWSVNPUl9BTkdMRToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpYXR0
cmliU3RhdGUubURpdmlzb3I7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGRlZmF1bHQ6IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwor
dm9pZCBfX3N0ZGNhbGwgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihHTHVpbnQgaW5kZXgsIEdMZW51bSBw
bmFtZSwgR0xpbnQqIHBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBH
TGVudW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLCBpbmRleCwgcG5h
bWUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJT
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0
ZXhBdHRyaWJ1dGUgJmF0dHJpYlN0YXRlID0gY29udGV4dC0+Z2V0VmVydGV4QXR0cmliU3RhdGUo
aW5kZXgpOworCisgICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRDoKKyAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gKGF0dHJpYlN0YXRlLm1BcnJheUVuYWJsZWQgPyBHTF9UUlVFIDog
R0xfRkFMU0UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdM
X1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gYXR0
cmliU3RhdGUubVNpemU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREU6CisgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IGF0dHJpYlN0YXRlLm1TdHJpZGU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFOgorICAgICAgICAgICAgICAg
ICpwYXJhbXMgPSBhdHRyaWJTdGF0ZS5tVHlwZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQ6CisgICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IChhdHRyaWJTdGF0ZS5tTm9ybWFsaXplZCA/IEdMX1RSVUUg
OiBHTF9GQUxTRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORzoKKyAgICAgICAgICAgICAgICAq
cGFyYW1zID0gYXR0cmliU3RhdGUubUJvdW5kQnVmZmVyLmlkKCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCOgorICAg
ICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgY3VycmVudFZhbHVlID0gYXR0cmliU3RhdGUu
bUN1cnJlbnRWYWx1ZVtpXTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gKEdMaW50
KShjdXJyZW50VmFsdWUgPiAwLjBmID8gZmxvb3IoY3VycmVudFZhbHVlICsgMC41ZikgOiBjZWls
KGN1cnJlbnRWYWx1ZSAtIDAuNWYpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJ
U09SX0FOR0xFOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xpbnQpYXR0cmliU3RhdGUu
bURpdmlzb3I7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0
ZGNhbGwgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFt
ZSwgR0x2b2lkKiogcG9pbnRlcikKK3sKKyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBH
TGVudW0gcG5hbWUgPSAweCVYLCBHTHZvaWQqKiBwb2ludGVyID0gMHglMC44cCkiLCBpbmRleCwg
cG5hbWUsIHBvaW50ZXIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRU
UklCUykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocG5hbWUg
IT0gR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgKnBvaW50ZXIgPSBjb25zdF9jYXN0PEdMdm9pZCo+KGNvbnRleHQt
PmdldFZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xIaW50KEdMZW51
bSB0YXJnZXQsIEdMZW51bSBtb2RlKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4
JVgsIEdMZW51bSBtb2RlID0gMHglWCkiLCB0YXJnZXQsIG1vZGUpOworCisgICAgdHJ5CisgICAg
eworICAgICAgICBzd2l0Y2ggKG1vZGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0ZB
U1RFU1Q6CisgICAgICAgICAgY2FzZSBHTF9OSUNFU1Q6CisgICAgICAgICAgY2FzZSBHTF9ET05U
X0NBUkU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOyAKKyAgICAgICAgfQorCisgICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisgICAg
ICAgIHN3aXRjaCAodGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9HRU5FUkFU
RV9NSVBNQVBfSElOVDoKKyAgICAgICAgICAgIGlmIChjb250ZXh0KSBjb250ZXh0LT5zZXRHZW5l
cmF0ZU1pcG1hcEhpbnQobW9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNl
IEdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTOgorICAgICAgICAgICAgaWYg
KGNvbnRleHQpIGNvbnRleHQtPnNldEZyYWdtZW50U2hhZGVyRGVyaXZhdGl2ZUhpbnQobW9kZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCitHTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNCdWZm
ZXIoR0x1aW50IGJ1ZmZlcikKK3sKKyAgICBFVkVOVCgiKEdMdWludCBidWZmZXIgPSAlZCkiLCBi
dWZmZXIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0ICYmIGJ1ZmZl
cikKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyT2JqZWN0ID0gY29u
dGV4dC0+Z2V0QnVmZmVyKGJ1ZmZlcik7CisKKyAgICAgICAgICAgIGlmIChidWZmZXJPYmplY3Qp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1RSVUU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBHTF9GQUxTRSk7
CisgICAgfQorCisgICAgcmV0dXJuIEdMX0ZBTFNFOworfQorCitHTGJvb2xlYW4gX19zdGRjYWxs
IGdsSXNFbmFibGVkKEdMZW51bSBjYXApCit7CisgICAgRVZFTlQoIihHTGVudW0gY2FwID0gMHgl
WCkiLCBjYXApOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGNhcCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5p
c0N1bGxGYWNlRW5hYmxlZCgpOworICAgICAgICAgICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VU
X0ZJTEw6ICAgICAgcmV0dXJuIGNvbnRleHQtPmlzUG9seWdvbk9mZnNldEZpbGxFbmFibGVkKCk7
CisgICAgICAgICAgICAgIGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOiByZXR1cm4g
Y29udGV4dC0+aXNTYW1wbGVBbHBoYVRvQ292ZXJhZ2VFbmFibGVkKCk7CisgICAgICAgICAgICAg
IGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFOiAgICAgICAgICByZXR1cm4gY29udGV4dC0+aXNTYW1w
bGVDb3ZlcmFnZUVuYWJsZWQoKTsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TQ0lTU09SX1RFU1Q6
ICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5pc1NjaXNzb3JUZXN0RW5hYmxlZCgpOworICAg
ICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfVEVTVDogICAgICAgICAgICAgcmV0dXJuIGNvbnRl
eHQtPmlzU3RlbmNpbFRlc3RFbmFibGVkKCk7CisgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhf
VEVTVDogICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC0+aXNEZXB0aFRlc3RFbmFibGVkKCk7
CisgICAgICAgICAgICAgIGNhc2UgR0xfQkxFTkQ6ICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Y29udGV4dC0+aXNCbGVuZEVuYWJsZWQoKTsKKyAgICAgICAgICAgICAgY2FzZSBHTF9ESVRIRVI6
ICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5pc0RpdGhlckVuYWJsZWQoKTsKKyAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfRU5VTSwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KKworR0xib29sZWFuIF9fc3RkY2FsbCBnbElzRmVuY2VOVihHTHVpbnQgZmVuY2UpCit7Cisg
ICAgRVZFTlQoIihHTHVpbnQgZmVuY2UgPSAlZCkiLCBmZW5jZSk7CisKKyAgICB0cnkKKyAgICB7
CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7
CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpGZW5j
ZSAqZmVuY2VPYmplY3QgPSBjb250ZXh0LT5nZXRGZW5jZShmZW5jZSk7CisKKyAgICAgICAgICAg
IGlmIChmZW5jZU9iamVjdCA9PSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBHTF9GQUxTRTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGZl
bmNlT2JqZWN0LT5pc0ZlbmNlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZLCBHTF9GQUxTRSk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX0ZBTFNFOworfQorCitHTGJv
b2xlYW4gX19zdGRjYWxsIGdsSXNGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXIpCit7Cisg
ICAgRVZFTlQoIihHTHVpbnQgZnJhbWVidWZmZXIgPSAlZCkiLCBmcmFtZWJ1ZmZlcik7CisKKyAg
ICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQgJiYgZnJhbWVidWZmZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmplY3QgPSBj
b250ZXh0LT5nZXRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisKKyAgICAgICAgICAgIGlmIChm
cmFtZWJ1ZmZlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
R0xfVFJVRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlksIEdMX0ZBTFNFKTsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfRkFMU0U7Cit9CisKK0dM
Ym9vbGVhbiBfX3N0ZGNhbGwgZ2xJc1Byb2dyYW0oR0x1aW50IHByb2dyYW0pCit7CisgICAgRVZF
TlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkKSIsIHByb2dyYW0pOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwor
CisgICAgICAgIGlmIChjb250ZXh0ICYmIHByb2dyYW0pCisgICAgICAgIHsKKyAgICAgICAgICAg
IGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFt
KTsKKworICAgICAgICAgICAgaWYgKHByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEdMX1RSVUU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBHTF9GQUxTRSk7CisgICAgfQorCisgICAgcmV0dXJu
IEdMX0ZBTFNFOworfQorCitHTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNRdWVyeUVYVChHTHVpbnQg
aWQpCit7CisgICAgRVZFTlQoIihHTHVpbnQgaWQgPSAlZCkiLCBpZCk7CisKKyAgICB0cnkKKyAg
ICB7CisgICAgICAgIGlmIChpZCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
R0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGds
OjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7
CisgICAgICAgICAgICBnbDo6UXVlcnkgKnF1ZXJ5T2JqZWN0ID0gY29udGV4dC0+Z2V0UXVlcnko
aWQsIGZhbHNlLCBHTF9OT05FKTsKKworICAgICAgICAgICAgaWYgKHF1ZXJ5T2JqZWN0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9UUlVFOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgR0xfRkFMU0UpOworICAg
IH0KKworICAgIHJldHVybiBHTF9GQUxTRTsKK30KKworR0xib29sZWFuIF9fc3RkY2FsbCBnbElz
UmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpCit7CisgICAgRVZFTlQoIihHTHVpbnQg
cmVuZGVyYnVmZmVyID0gJWQpIiwgcmVuZGVyYnVmZmVyKTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKwor
ICAgICAgICBpZiAoY29udGV4dCAmJiByZW5kZXJidWZmZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGdsOjpSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlck9iamVjdCA9IGNvbnRleHQtPmdldFJl
bmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworCisgICAgICAgICAgICBpZiAocmVuZGVyYnVmZmVy
T2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9UUlVFOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9j
JikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgR0xf
RkFMU0UpOworICAgIH0KKworICAgIHJldHVybiBHTF9GQUxTRTsKK30KKworR0xib29sZWFuIF9f
c3RkY2FsbCBnbElzU2hhZGVyKEdMdWludCBzaGFkZXIpCit7CisgICAgRVZFTlQoIihHTHVpbnQg
c2hhZGVyID0gJWQpIiwgc2hhZGVyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAo
Y29udGV4dCAmJiBzaGFkZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpTaGFkZXIgKnNo
YWRlck9iamVjdCA9IGNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpOworCisgICAgICAgICAgICBp
ZiAoc2hhZGVyT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBH
TF9UUlVFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSwgR0xfRkFMU0UpOworICAgIH0KKworICAgIHJldHVybiBHTF9GQUxTRTsKK30KKworR0xi
b29sZWFuIF9fc3RkY2FsbCBnbElzVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKK3sKKyAgICBFVkVO
VCgiKEdMdWludCB0ZXh0dXJlID0gJWQpIiwgdGV4dHVyZSk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQgJiYgdGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAg
Z2w6OlRleHR1cmUgKnRleHR1cmVPYmplY3QgPSBjb250ZXh0LT5nZXRUZXh0dXJlKHRleHR1cmUp
OworCisgICAgICAgICAgICBpZiAodGV4dHVyZU9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gR0xfVFJVRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIEdMX0ZBTFNFKTsKKyAgICB9CisKKyAgICByZXR1cm4g
R0xfRkFMU0U7Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsTGluZVdpZHRoKEdMZmxvYXQgd2lkdGgp
Cit7CisgICAgRVZFTlQoIihHTGZsb2F0IHdpZHRoID0gJWYpIiwgd2lkdGgpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBpZiAod2lkdGggPD0gMC4wZikKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAg
ICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldExp
bmVXaWR0aCh3aWR0aCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
KyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsTGlua1Byb2dyYW0oR0x1aW50IHByb2dyYW0p
Cit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkKSIsIHByb2dyYW0pOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0
Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAg
ICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3Jh
bSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBjb250ZXh0LT5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xQaXhl
bFN0b3JlaShHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQoreworICAgIEVWRU5UKCIoR0xlbnVt
IHBuYW1lID0gMHglWCwgR0xpbnQgcGFyYW0gPSAlZCkiLCBwbmFtZSwgcGFyYW0pOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0
Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAg
ICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1VO
UEFDS19BTElHTk1FTlQ6CisgICAgICAgICAgICAgICAgaWYgKHBhcmFtICE9IDEgJiYgcGFyYW0g
IT0gMiAmJiBwYXJhbSAhPSA0ICYmIHBhcmFtICE9IDgpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFVucGFja0FsaWdu
bWVudChwYXJhbSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9QQUNLX0FMSUdOTUVOVDoKKyAgICAgICAgICAgICAgICBpZiAocGFyYW0gIT0gMSAmJiBw
YXJhbSAhPSAyICYmIHBhcmFtICE9IDQgJiYgcGFyYW0gIT0gOCkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0UGFja0Fs
aWdubWVudChwYXJhbSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
Y2FzZSBHTF9QQUNLX1JFVkVSU0VfUk9XX09SREVSX0FOR0xFOgorICAgICAgICAgICAgICAgIGNv
bnRleHQtPnNldFBhY2tSZXZlcnNlUm93T3JkZXIocGFyYW0gIT0gMCk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxs
IGdsUG9seWdvbk9mZnNldChHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cykKK3sKKyAgICBF
VkVOVCgiKEdMZmxvYXQgZmFjdG9yID0gJWYsIEdMZmxvYXQgdW5pdHMgPSAlZikiLCBmYWN0b3Is
IHVuaXRzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgY29udGV4dC0+c2V0UG9seWdvbk9mZnNldFBhcmFtcyhmYWN0b3Is
IHVuaXRzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0K
K30KKwordm9pZCBfX3N0ZGNhbGwgZ2xSZWFkblBpeGVsc0VYVChHTGludCB4LCBHTGludCB5LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpkYXRhKQoreworICAgIEVWRU5UKCIo
R0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBo
ZWlnaHQgPSAlZCwgIgorICAgICAgICAgICJHTGVudW0gZm9ybWF0ID0gMHglWCwgR0xlbnVtIHR5
cGUgPSAweCVYLCBHTHNpemVpIGJ1ZlNpemUgPSAweCVkLCBHTHZvaWQgKmRhdGEgPSAweCUwLjhw
KSIsCisgICAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXpl
LCBkYXRhKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWln
aHQgPCAwIHx8IGJ1ZlNpemUgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29u
dGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgR0xlbnVtIGN1cnJlbnRGb3JtYXQsIGN1cnJl
bnRUeXBlOworICAgIAorICAgICAgICAgICAgLy8gRmFpbHVyZSBpbiBnZXRDdXJyZW50UmVhZEZv
cm1hdFR5cGUgaW5kaWNhdGVzIHRoYXQgbm8gY29sb3IgYXR0YWNobWVudCBpcyBjdXJyZW50bHkg
Ym91bmQsCisgICAgICAgICAgICAvLyBhbmQgYXR0ZW1wdGluZyB0byByZWFkIGJhY2sgaWYgdGhh
dCdzIHRoZSBjYXNlIGlzIGFuIGVycm9yLiBUaGUgZXJyb3Igd2lsbCBiZSByZWdpc3RlcmVkCisg
ICAgICAgICAgICAvLyBieSBnZXRDdXJyZW50UmVhZEZvcm1hdC4KKyAgICAgICAgICAgIGlmICgh
Y29udGV4dC0+Z2V0Q3VycmVudFJlYWRGb3JtYXRUeXBlKCZjdXJyZW50Rm9ybWF0LCAmY3VycmVu
dFR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKCEoY3Vy
cmVudEZvcm1hdCA9PSBmb3JtYXQgJiYgY3VycmVudFR5cGUgPT0gdHlwZSkgJiYgIXZhbGlkUmVh
ZEZvcm1hdFR5cGUoZm9ybWF0LCB0eXBlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgY29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsICZidWZTaXplLCBkYXRhKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xSZWFkUGl4ZWxzKEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQqIHBp
eGVscykKK3sKKyAgICBFVkVOVCgiKEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVp
IHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsICIKKyAgICAgICAgICAiR0xlbnVtIGZv
cm1hdCA9IDB4JVgsIEdMZW51bSB0eXBlID0gMHglWCwgR0x2b2lkKiBwaXhlbHMgPSAweCUwLjhw
KSIsCisgICAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAgcGl4ZWxz
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAw
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFM
VUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0
Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAg
ICAgICAgICAgR0xlbnVtIGN1cnJlbnRGb3JtYXQsIGN1cnJlbnRUeXBlOworICAgIAorICAgICAg
ICAgICAgLy8gRmFpbHVyZSBpbiBnZXRDdXJyZW50UmVhZEZvcm1hdFR5cGUgaW5kaWNhdGVzIHRo
YXQgbm8gY29sb3IgYXR0YWNobWVudCBpcyBjdXJyZW50bHkgYm91bmQsCisgICAgICAgICAgICAv
LyBhbmQgYXR0ZW1wdGluZyB0byByZWFkIGJhY2sgaWYgdGhhdCdzIHRoZSBjYXNlIGlzIGFuIGVy
cm9yLiBUaGUgZXJyb3Igd2lsbCBiZSByZWdpc3RlcmVkCisgICAgICAgICAgICAvLyBieSBnZXRD
dXJyZW50UmVhZEZvcm1hdC4KKyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0Q3VycmVudFJl
YWRGb3JtYXRUeXBlKCZjdXJyZW50Rm9ybWF0LCAmY3VycmVudFR5cGUpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKCEoY3VycmVudEZvcm1hdCA9PSBmb3JtYXQg
JiYgY3VycmVudFR5cGUgPT0gdHlwZSkgJiYgIXZhbGlkUmVhZEZvcm1hdFR5cGUoZm9ybWF0LCB0
eXBlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29udGV4
dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIE5VTEwsIHBp
eGVscyk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9
CisKK3ZvaWQgX19zdGRjYWxsIGdsUmVsZWFzZVNoYWRlckNvbXBpbGVyKHZvaWQpCit7CisgICAg
RVZFTlQoIigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpTaGFkZXI6OnJlbGVh
c2VDb21waWxlcigpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwor
dm9pZCBfX3N0ZGNhbGwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTGVu
dW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0g
MHglWCwgR0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9IDB4JVgs
IEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCkiLAorICAgICAgICAgIHRh
cmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgIGNh
c2UgR0xfUkVOREVSQlVGRkVSOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghZ2w6OklzQ29sb3JSZW5kZXJhYmxlKGludGVybmFsZm9ybWF0
KSAmJiAhZ2w6OklzRGVwdGhSZW5kZXJhYmxlKGludGVybmFsZm9ybWF0KSAmJiAhZ2w6OklzU3Rl
bmNpbFJlbmRlcmFibGUoaW50ZXJuYWxmb3JtYXQpKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDAgfHwgc2FtcGxlcyA8IDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0K
KworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgp
OworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lk
dGggPiBjb250ZXh0LT5nZXRNYXhpbXVtUmVuZGVyYnVmZmVyRGltZW5zaW9uKCkgfHwgCisgICAg
ICAgICAgICAgICAgaGVpZ2h0ID4gY29udGV4dC0+Z2V0TWF4aW11bVJlbmRlcmJ1ZmZlckRpbWVu
c2lvbigpIHx8CisgICAgICAgICAgICAgICAgc2FtcGxlcyA+IGNvbnRleHQtPmdldE1heFN1cHBv
cnRlZFNhbXBsZXMoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBH
THVpbnQgaGFuZGxlID0gY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVySGFuZGxlKCk7CisgICAgICAg
ICAgICBpZiAoaGFuZGxlID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6CisgICAgICAgICAgICAgIGNhc2UgR0xf
UkdCQTQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfUkdCNV9BMToKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9SR0I1NjU6CisgICAgICAgICAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICAgICAg
ICAgIGNhc2UgR0xfUkdCQThfT0VTOgorICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfSU5E
RVg4OgorICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOgorICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnNldFJlbmRlcmJ1ZmZlclN0b3JhZ2Uod2lkdGgsIGhlaWdodCwg
aW50ZXJuYWxmb3JtYXQsIHNhbXBsZXMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xSZW5kZXJidWZmZXJTdG9y
YWdlKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQpCit7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRSh0YXJnZXQsIDAsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKK30KKwordm9p
ZCBfX3N0ZGNhbGwgZ2xTYW1wbGVDb3ZlcmFnZShHTGNsYW1wZiB2YWx1ZSwgR0xib29sZWFuIGlu
dmVydCkKK3sKKyAgICBFVkVOVCgiKEdMY2xhbXBmIHZhbHVlID0gJWYsIEdMYm9vbGVhbiBpbnZl
cnQgPSAlZCkiLCB2YWx1ZSwgaW52ZXJ0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6
OkNvbnRleHQqIGNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBp
ZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+c2V0U2FtcGxlQ292
ZXJhZ2VQYXJhbXMoZ2w6OmNsYW1wMDEodmFsdWUpLCBpbnZlcnQgPT0gR0xfVFJVRSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19z
dGRjYWxsIGdsU2V0RmVuY2VOVihHTHVpbnQgZmVuY2UsIEdMZW51bSBjb25kaXRpb24pCit7Cisg
ICAgRVZFTlQoIihHTHVpbnQgZmVuY2UgPSAlZCwgR0xlbnVtIGNvbmRpdGlvbiA9IDB4JVgpIiwg
ZmVuY2UsIGNvbmRpdGlvbik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb25kaXRp
b24gIT0gR0xfQUxMX0NPTVBMRVRFRF9OVikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAo
Y29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkZlbmNlICpmZW5jZU9iamVjdCA9
IGNvbnRleHQtPmdldEZlbmNlKGZlbmNlKTsKKworICAgICAgICAgICAgaWYgKGZlbmNlT2JqZWN0
ID09IE5VTEwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZl
bmNlT2JqZWN0LT5zZXRGZW5jZShjb25kaXRpb24pOyAgICAKKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xTY2lzc29y
KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQoreworICAg
IEVWRU5UKCIoR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwg
R0xzaXplaSBoZWlnaHQgPSAlZCkiLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9
CisKKyAgICAgICAgZ2w6OkNvbnRleHQqIGNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4
dC0+c2V0U2Npc3NvclBhcmFtcyh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xT
aGFkZXJCaW5hcnkoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHNoYWRlcnMsIEdMZW51bSBiaW5h
cnlmb3JtYXQsIGNvbnN0IEdMdm9pZCogYmluYXJ5LCBHTHNpemVpIGxlbmd0aCkKK3sKKyAgICBF
VkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQqIHNoYWRlcnMgPSAweCUwLjhwLCBH
TGVudW0gYmluYXJ5Zm9ybWF0ID0gMHglWCwgIgorICAgICAgICAgICJjb25zdCBHTHZvaWQqIGJp
bmFyeSA9IDB4JTAuOHAsIEdMc2l6ZWkgbGVuZ3RoID0gJWQpIiwKKyAgICAgICAgICBuLCBzaGFk
ZXJzLCBiaW5hcnlmb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgLy8gTm8gYmluYXJ5IHNoYWRlciBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCisgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsU2hhZGVyU291cmNlKEdMdWlu
dCBzaGFkZXIsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMY2hhcioqIHN0cmluZywgY29uc3QgR0xp
bnQqIGxlbmd0aCkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBzaGFkZXIgPSAlZCwgR0xzaXplaSBj
b3VudCA9ICVkLCBjb25zdCBHTGNoYXIqKiBzdHJpbmcgPSAweCUwLjhwLCBjb25zdCBHTGludCog
bGVuZ3RoID0gMHglMC44cCkiLAorICAgICAgICAgIHNoYWRlciwgY291bnQsIHN0cmluZywgbGVu
Z3RoKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50IDwgMCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
OjpTaGFkZXIgKnNoYWRlck9iamVjdCA9IGNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpOworCisg
ICAgICAgICAgICBpZiAoIXNoYWRlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0UHJvZ3JhbShzaGFkZXIpKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBz
aGFkZXJPYmplY3QtPnNldFNvdXJjZShjb3VudCwgc3RyaW5nLCBsZW5ndGgpOworICAgICAgICB9
CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2Fs
bCBnbFN0ZW5jaWxGdW5jKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKQorewor
ICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZShHTF9GUk9OVF9BTkRfQkFDSywgZnVuYywgcmVmLCBt
YXNrKTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKEdMZW51bSBm
YWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKK3sKKyAgICBFVkVOVCgi
KEdMZW51bSBmYWNlID0gMHglWCwgR0xlbnVtIGZ1bmMgPSAweCVYLCBHTGludCByZWYgPSAlZCwg
R0x1aW50IG1hc2sgPSAlZCkiLCBmYWNlLCBmdW5jLCByZWYsIG1hc2spOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBzd2l0Y2ggKGZhY2UpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdM
X0ZST05UOgorICAgICAgICAgIGNhc2UgR0xfQkFDSzoKKyAgICAgICAgICBjYXNlIEdMX0ZST05U
X0FORF9CQUNLOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN3aXRjaCAoZnVuYykKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfTkVWRVI6
CisgICAgICAgICAgY2FzZSBHTF9BTFdBWVM6CisgICAgICAgICAgY2FzZSBHTF9MRVNTOgorICAg
ICAgICAgIGNhc2UgR0xfTEVRVUFMOgorICAgICAgICAgIGNhc2UgR0xfRVFVQUw6CisgICAgICAg
ICAgY2FzZSBHTF9HRVFVQUw6CisgICAgICAgICAgY2FzZSBHTF9HUkVBVEVSOgorICAgICAgICAg
IGNhc2UgR0xfTk9URVFVQUw6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAg
ICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRl
eHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KGZhY2UgPT0gR0xfRlJPTlQgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdGVuY2lsUGFyYW1zKGZ1bmMsIHJl
ZiwgbWFzayk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmYWNlID09IEdMX0JB
Q0sgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5zZXRTdGVuY2lsQmFja1BhcmFtcyhmdW5jLCByZWYsIG1hc2spOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9j
JikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Cisg
ICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFN0ZW5jaWxNYXNrKEdMdWludCBtYXNrKQorewor
ICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShHTF9GUk9OVF9BTkRfQkFDSywgbWFzayk7Cit9CisK
K3ZvaWQgX19zdGRjYWxsIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0x1aW50
IG1hc2spCit7CisgICAgRVZFTlQoIihHTGVudW0gZmFjZSA9IDB4JVgsIEdMdWludCBtYXNrID0g
JWQpIiwgZmFjZSwgbWFzayk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoZmFj
ZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfRlJPTlQ6CisgICAgICAgICAgY2FzZSBH
TF9CQUNLOgorICAgICAgICAgIGNhc2UgR0xfRlJPTlRfQU5EX0JBQ0s6CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKGZhY2UgPT0gR0xfRlJPTlQgfHwgZmFjZSA9PSBHTF9G
Uk9OVF9BTkRfQkFDSykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5z
ZXRTdGVuY2lsV3JpdGVtYXNrKG1hc2spOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoZmFjZSA9PSBHTF9CQUNLIHx8IGZhY2UgPT0gR0xfRlJPTlRfQU5EX0JBQ0spCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3RlbmNpbEJhY2tXcml0ZW1hc2so
bWFzayk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsU3RlbmNpbE9wKEdMZW51bSBmYWls
LCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcykKK3sKKyAgICBnbFN0ZW5jaWxPcFNlcGFyYXRl
KEdMX0ZST05UX0FORF9CQUNLLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbFN0ZW5jaWxPcFNlcGFyYXRlKEdMZW51bSBmYWNlLCBHTGVudW0gZmFpbCwgR0xlbnVt
IHpmYWlsLCBHTGVudW0genBhc3MpCit7CisgICAgRVZFTlQoIihHTGVudW0gZmFjZSA9IDB4JVgs
IEdMZW51bSBmYWlsID0gMHglWCwgR0xlbnVtIHpmYWlsID0gMHglWCwgR0xlbnVtIHpwYXMgPSAw
eCVYcykiLAorICAgICAgICAgIGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisKKyAgICB0cnkK
KyAgICB7CisgICAgICAgIHN3aXRjaCAoZmFjZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2Ug
R0xfRlJPTlQ6CisgICAgICAgICAgY2FzZSBHTF9CQUNLOgorICAgICAgICAgIGNhc2UgR0xfRlJP
TlRfQU5EX0JBQ0s6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisK
KyAgICAgICAgc3dpdGNoIChmYWlsKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9aRVJP
OgorICAgICAgICAgIGNhc2UgR0xfS0VFUDoKKyAgICAgICAgICBjYXNlIEdMX1JFUExBQ0U6Cisg
ICAgICAgICAgY2FzZSBHTF9JTkNSOgorICAgICAgICAgIGNhc2UgR0xfREVDUjoKKyAgICAgICAg
ICBjYXNlIEdMX0lOVkVSVDoKKyAgICAgICAgICBjYXNlIEdMX0lOQ1JfV1JBUDoKKyAgICAgICAg
ICBjYXNlIEdMX0RFQ1JfV1JBUDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAg
ICAgIH0KKworICAgICAgICBzd2l0Y2ggKHpmYWlsKQorICAgICAgICB7CisgICAgICAgICAgY2Fz
ZSBHTF9aRVJPOgorICAgICAgICAgIGNhc2UgR0xfS0VFUDoKKyAgICAgICAgICBjYXNlIEdMX1JF
UExBQ0U6CisgICAgICAgICAgY2FzZSBHTF9JTkNSOgorICAgICAgICAgIGNhc2UgR0xfREVDUjoK
KyAgICAgICAgICBjYXNlIEdMX0lOVkVSVDoKKyAgICAgICAgICBjYXNlIEdMX0lOQ1JfV1JBUDoK
KyAgICAgICAgICBjYXNlIEdMX0RFQ1JfV1JBUDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5V
TSk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHpwYXNzKQorICAgICAgICB7CisgICAg
ICAgICAgY2FzZSBHTF9aRVJPOgorICAgICAgICAgIGNhc2UgR0xfS0VFUDoKKyAgICAgICAgICBj
YXNlIEdMX1JFUExBQ0U6CisgICAgICAgICAgY2FzZSBHTF9JTkNSOgorICAgICAgICAgIGNhc2Ug
R0xfREVDUjoKKyAgICAgICAgICBjYXNlIEdMX0lOVkVSVDoKKyAgICAgICAgICBjYXNlIEdMX0lO
Q1JfV1JBUDoKKyAgICAgICAgICBjYXNlIEdMX0RFQ1JfV1JBUDoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoZmFjZSA9PSBHTF9GUk9OVCB8fCBmYWNlID09IEdMX0ZST05U
X0FORF9CQUNLKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0
ZW5jaWxPcGVyYXRpb25zKGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmIChmYWNlID09IEdMX0JBQ0sgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRfQkFD
SykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdGVuY2lsQmFj
a09wZXJhdGlvbnMoZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKworR0xib29sZWFuIF9f
c3RkY2FsbCBnbFRlc3RGZW5jZU5WKEdMdWludCBmZW5jZSkKK3sKKyAgICBFVkVOVCgiKEdMdWlu
dCBmZW5jZSA9ICVkKSIsIGZlbmNlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAo
Y29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkZlbmNlICpmZW5jZU9iamVjdCA9
IGNvbnRleHQtPmdldEZlbmNlKGZlbmNlKTsKKworICAgICAgICAgICAgaWYgKGZlbmNlT2JqZWN0
ID09IE5VTEwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwgR0xfVFJVRSk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBmZW5jZU9iamVjdC0+dGVzdEZlbmNlKCk7CisgICAgICAgIH0KKyAgICB9
CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gR0xfVFJVRTsKK30KKwor
dm9pZCBfX3N0ZGNhbGwgZ2xUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH
TGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFy
Z2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQgPSAlZCwg
R0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCAiCisgICAgICAgICAgIkdM
aW50IGJvcmRlciA9ICVkLCBHTGVudW0gZm9ybWF0ID0gMHglWCwgR0xlbnVtIHR5cGUgPSAweCVY
LCBjb25zdCBHTHZvaWQqIHBpeGVscyA9ICAweCUwLjhwKSIsCisgICAgICAgICAgdGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBwaXhlbHMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoIXZhbGlkSW1hZ2VTaXpl
KGxldmVsLCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbnRl
cm5hbGZvcm1hdCAhPSBHTGludChmb3JtYXQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIHZhbGlkYXRlIDx0eXBlPiBieSBpdHNlbGYgKHVzZWQgYXMgc2Vjb25kYXJ5IGtleSBiZWxv
dykKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9CWVRFOgorICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82XzU6Cisg
ICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80OgorICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfU0hPUlRfNV81XzVfMToKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NI
T1JUOgorICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfSU5UXzI0XzhfT0VTOgorICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6
CisgICAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7
CisgICAgICAgIH0KKworICAgICAgICAvLyB2YWxpZGF0ZSA8Zm9ybWF0PiArIDx0eXBlPiBjb21i
aW5hdGlvbnMKKyAgICAgICAgLy8gLSBpbnZhbGlkIDxmb3JtYXQ+IC0+IHNldHMgSU5WQUxJRF9F
TlVNCisgICAgICAgIC8vIC0gaW52YWxpZCA8Zm9ybWF0Pis8dHlwZT4gY29tYmluYXRpb24gLT4g
c2V0cyBJTlZBTElEX09QRVJBVElPTgorICAgICAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICAgICAg
eworICAgICAgICAgIGNhc2UgR0xfQUxQSEE6CisgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6
CisgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICAgICBzd2l0Y2gg
KHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllU
RToKKyAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9I
QUxGX0ZMT0FUX09FUzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2Ug
R0xfUkdCOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfU0hPUlRfNV82XzU6CisgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAg
ICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80OgorICAgICAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzE6CisgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6
CisgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAgICAgICAgICAgc3dpdGNo
ICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNT
RURfUkdCX1MzVENfRFhUMV9FWFQ6ICAvLyBlcnJvciBjYXNlcyBmb3IgY29tcHJlc3NlZCB0ZXh0
dXJlcyBhcmUgaGFuZGxlZCBiZWxvdworICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQzX0FOR0xFOgorICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9B
TkdMRToKKyAgICAgICAgICAgIGJyZWFrOyAKKyAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBP
TkVOVDoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9JTlQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0RF
UFRIX1NURU5DSUxfT0VTOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yNF84X09FUzoKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYm9y
ZGVyICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAobGV2ZWwgPiBjb250ZXh0LT5nZXRNYXhpbXVtVGV4dHVyZUxl
dmVsKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoICh0
YXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoK
KyAgICAgICAgICAgICAgICBpZiAod2lkdGggPiAoY29udGV4dC0+Z2V0TWF4aW11bVRleHR1cmVE
aW1lbnNpb24oKSA+PiBsZXZlbCkgfHwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID4gKGNv
bnRleHQtPmdldE1heGltdW1UZXh0dXJlRGltZW5zaW9uKCkgPj4gbGV2ZWwpKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgorICAgICAgICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDoKKyAgICAgICAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6CisgICAgICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgorICAgICAgICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWjoKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJF
X0NVQkVfTUFQX05FR0FUSVZFX1o6CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoICE9IGhlaWdo
dCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgaWYgKHdpZHRoID4gKGNvbnRleHQtPmdldE1heGltdW1DdWJlVGV4dHVyZURpbWVuc2lvbigp
ID4+IGxldmVsKSB8fAorICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPiAoY29udGV4dC0+Z2V0
TWF4aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKCkgPj4gbGV2ZWwpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewor
ICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAg
ICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRFhUMVRleHR1cmVzKCkpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgor
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdXBwb3J0c0RYVDNUZXh0dXJlcygpKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9B
TkdMRToKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+c3VwcG9ydHNEWFQ1VGV4dHVyZXMo
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDoKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKKyAgICAgICAgICAgICAgICBp
ZiAoIWNvbnRleHQtPnN1cHBvcnRzRGVwdGhUZXh0dXJlcygpKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9URVhU
VVJFXzJEKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIC8vIE9FU19kZXB0aF90ZXh0dXJlIHN1cHBvcnRzIGxvYWRpbmcgZGVwdGggZGF0
YSBhbmQgbXVsdGlwbGUgbGV2ZWxzLAorICAgICAgICAgICAgICAgIC8vIGJ1dCBBTkdMRV9kZXB0
aF90ZXh0dXJlIGRvZXMgbm90CisgICAgICAgICAgICAgICAgaWYgKHBpeGVscyAhPSBOVUxMIHx8
IGxldmVsICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0eXBlID09IEdM
X0ZMT0FUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3Vw
cG9ydHNGbG9hdDMyVGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IEdMX0hBTEZf
RkxPQVRfT0VTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+
c3VwcG9ydHNGbG9hdDE2VGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfVEVY
VFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZTJEICp0
ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisKKyAgICAgICAgICAgICAgICBpZiAo
IXRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRleHR1cmUtPnNl
dEltYWdlKGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGNvbnRleHQtPmdldFVu
cGFja0FsaWdubWVudCgpLCBwaXhlbHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1hcCAqdGV4
dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmVDdWJlTWFwKCk7CisKKyAgICAgICAgICAgICAgICBp
ZiAoIXRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHN3aXRjaCAo
dGFyZ2V0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgorICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5z
ZXRJbWFnZVBvc1gobGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgY29udGV4dC0+
Z2V0VW5wYWNrQWxpZ25tZW50KCksIHBpeGVscyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6
CisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnNldEltYWdlTmVnWChsZXZlbCwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4
ZWxzKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKKyAgICAgICAgICAgICAgICAgICAgdGV4
dHVyZS0+c2V0SW1hZ2VQb3NZKGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGNv
bnRleHQtPmdldFVucGFja0FsaWdubWVudCgpLCBwaXhlbHMpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdB
VElWRV9ZOgorICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRJbWFnZU5lZ1kobGV2ZWws
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgY29udGV4dC0+Z2V0VW5wYWNrQWxpZ25tZW50
KCksIHBpeGVscyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6CisgICAgICAgICAgICAgICAg
ICAgIHRleHR1cmUtPnNldEltYWdlUG9zWihsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWjoKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0SW1hZ2VOZWda
KGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGNvbnRleHQtPmdldFVucGFja0Fs
aWdubWVudCgpLCBwaXhlbHMpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
KyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAg
fQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFRleFBhcmFtZXRlcmYoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9
IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50IHBhcmFtID0gJWYpIiwgdGFyZ2V0LCBw
bmFtZSwgcGFyYW0pOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZTsKKworICAgICAgICAg
ICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAgICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVy
ZTJEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9DVUJFX01BUDoKKyAgICAgICAgICAgICAgICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4
dHVyZUN1YmVNYXAoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6CisgICAgICAgICAgICAg
ICAgaWYgKCF0ZXh0dXJlLT5zZXRXcmFwUygoR0xlbnVtKXBhcmFtKSkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVN
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1Q6CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJl
LT5zZXRXcmFwVCgoR0xlbnVtKXBhcmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9NSU5fRklMVEVSOgorICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZS0+c2V0TWluRmls
dGVyKChHTGVudW0pcGFyYW0pKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01B
R19GSUxURVI6CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5zZXRNYWdGaWx0ZXIoKEdM
ZW51bSlwYXJhbSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfVVNBR0VfQU5H
TEU6CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5zZXRVc2FnZSgoR0xlbnVtKXBhcmFt
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6
CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlz
b3Ryb3B5KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGlmICghdGV4dHVyZS0+c2V0TWF4QW5pc290cm9weSgoZmxvYXQpcGFyYW0sIGNvbnRl
eHQtPmdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KCkpKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9j
JikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Cisg
ICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFRleFBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCogcGFyYW1zKQoreworICAgIGdsVGV4UGFyYW1l
dGVyZih0YXJnZXQsIHBuYW1lLCAoR0xmbG9hdCkqcGFyYW1zKTsKK30KKwordm9pZCBfX3N0ZGNh
bGwgZ2xUZXhQYXJhbWV0ZXJpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy
YW0pCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0g
MHglWCwgR0xpbnQgcGFyYW0gPSAlZCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbSk7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGdsOjpUZXh0dXJlICp0ZXh0dXJlOworCisgICAgICAgICAgICBzd2l0Y2ggKHRhcmdldCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgorICAgICAgICAg
ICAgICAgIHRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlMkQoKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgorICAgICAg
ICAgICAgICAgIHRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ3ViZU1hcCgpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX1dSQVBfUzoKKyAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUtPnNldFdy
YXBTKChHTGVudW0pcGFyYW0pKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dS
QVBfVDoKKyAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUtPnNldFdyYXBUKChHTGVudW0pcGFy
YW0pKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6CisgICAg
ICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5zZXRNaW5GaWx0ZXIoKEdMZW51bSlwYXJhbSkpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUjoKKyAgICAgICAgICAg
ICAgICBpZiAoIXRleHR1cmUtPnNldE1hZ0ZpbHRlcigoR0xlbnVtKXBhcmFtKSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FHRV9BTkdMRToKKyAgICAgICAgICAgICAgICBp
ZiAoIXRleHR1cmUtPnNldFVzYWdlKChHTGVudW0pcGFyYW0pKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDoKKyAgICAgICAgICAgICAgICBpZiAo
IWNvbnRleHQtPnN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHkoKSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9F
TlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5z
ZXRNYXhBbmlzb3Ryb3B5KChmbG9hdClwYXJhbSwgY29udGV4dC0+Z2V0VGV4dHVyZU1heEFuaXNv
dHJvcHkoKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRj
YWxsIGdsVGV4UGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBH
TGludCogcGFyYW1zKQoreworICAgIGdsVGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCAqcGFy
YW1zKTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xUZXhTdG9yYWdlMkRFWFQoR0xlbnVtIHRhcmdl
dCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xz
aXplaSBsZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gMHglWCwgR0xzaXplaSB3
aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkKSIsCisgICAgICAgICAgIHRhcmdldCwgbGV2
ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGlmICh0YXJnZXQgIT0gR0xfVEVYVFVSRV8yRCAmJiB0YXJnZXQgIT0gR0xfVEVYVFVS
RV9DVUJFX01BUCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdpZHRoIDwgMSB8fCBoZWln
aHQgPCAxIHx8IGxldmVscyA8IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGFyZ2V0
ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgd2lkdGggIT0gaGVpZ2h0KQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGxldmVscyAhPSAxICYmIGxldmVscyAhPSBnbDo6bG9nMihzdGQ6Om1h
eCh3aWR0aCwgaGVpZ2h0KSkgKyAxKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgfQorCisgICAgICAgIEdMZW51
bSBmb3JtYXQgPSBnbDo6RXh0cmFjdEZvcm1hdChpbnRlcm5hbGZvcm1hdCk7CisgICAgICAgIEdM
ZW51bSB0eXBlID0gZ2w6OkV4dHJhY3RUeXBlKGludGVybmFsZm9ybWF0KTsKKworICAgICAgICBp
ZiAoZm9ybWF0ID09IEdMX05PTkUgfHwgdHlwZSA9PSBHTF9OT05FKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKwor
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwor
CisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKHRh
cmdldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgor
ICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGNvbnRleHQtPmdldE1heGltdW1UZXh0dXJlRGlt
ZW5zaW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID4gY29udGV4dC0+Z2V0TWF4
aW11bVRleHR1cmVEaW1lbnNpb24oKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfQ1VCRV9NQVA6CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gY29udGV4dC0+Z2V0TWF4
aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
ID4gY29udGV4dC0+Z2V0TWF4aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKCkpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChsZXZlbHMgIT0g
MSAmJiAhY29udGV4dC0+c3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlKCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKCFnbDo6aXNQb3cyKHdpZHRoKSB8fCAhZ2w6OmlzUG93Miho
ZWlnaHQpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6
CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Cisg
ICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0RYVDFUZXh0dXJlcygpKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgor
ICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQzVGV4dHVyZXMoKSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToK
KyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIEdMX1JHQkEzMkZfRVhUOgorICAgICAgICAgICAgICBjYXNl
IEdMX1JHQjMyRl9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhUOgorICAg
ICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRTMyRl9FWFQ6CisgICAgICAgICAgICAgIGNhc2Ug
R0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVDoKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQt
PnN1cHBvcnRzRmxvYXQzMlRleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1JH
QkExNkZfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6CisgICAgICAgICAg
ICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5D
RTE2Rl9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoK
KyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRmxvYXQxNlRleHR1cmVzKCkp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2OgorICAgICAgICAg
ICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzoKKyAgICAgICAgICAgICAgY2FzZSBH
TF9ERVBUSDI0X1NURU5DSUw4X09FUzoKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1
cHBvcnRzRGVwdGhUZXh0dXJlcygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IEdMX1RFWFRVUkVfMkQpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gQU5H
TEVfZGVwdGhfdGV4dHVyZSBvbmx5IHN1cHBvcnRzIDEtbGV2ZWwgdGV4dHVyZXMKKyAgICAgICAg
ICAgICAgICBpZiAobGV2ZWxzICE9IDEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisKKyAg
ICAgICAgICAgICAgICBpZiAoIXRleHR1cmUgfHwgdGV4dHVyZS0+aWQoKSA9PSAwKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg
KHRleHR1cmUtPmlzSW1tdXRhYmxlKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zdG9yYWdlKGxldmVscywgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVApCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDdWJlTWFwICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0
VGV4dHVyZUN1YmVNYXAoKTsKKworICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZSB8fCB0ZXh0
dXJlLT5pZCgpID09IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRleHR1
cmUtPnN0b3JhZ2UobGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQorICAg
IGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFRleFN1Yklt
YWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBp
eGVscykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGludCBsZXZlbCA9
ICVkLCBHTGludCB4b2Zmc2V0ID0gJWQsIEdMaW50IHlvZmZzZXQgPSAlZCwgIgorICAgICAgICAg
ICJHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMZW51bSBmb3JtYXQg
PSAweCVYLCBHTGVudW0gdHlwZSA9IDB4JVgsICIKKyAgICAgICAgICAiY29uc3QgR0x2b2lkKiBw
aXhlbHMgPSAweCUwLjhwKSIsCisgICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgaWYgKCFnbDo6SXNJbnRlcm5hbFRleHR1cmVUYXJnZXQodGFyZ2V0KSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0p
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxldmVsIDwgMCB8fCB4b2Zmc2V0IDwgMCB8fCB5
b2Zmc2V0IDwgMCB8fCB3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHhvZmZzZXQg
PCB3aWR0aCB8fCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHlvZmZzZXQg
PCBoZWlnaHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWNoZWNrVGV4dHVyZUZvcm1h
dFR5cGUoZm9ybWF0LCB0eXBlKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOyAvLyBl
cnJvciBpcyBzZXQgYnkgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgIH0KKworICAgICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlm
IChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobGV2ZWwgPiBjb250ZXh0LT5n
ZXRNYXhpbXVtVGV4dHVyZUxldmVsKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKGZvcm1hdCA9PSBHTF9GTE9BVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRmxvYXQzMlRleHR1cmVzKCkpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZSBpZiAoZm9ybWF0ID09IEdMX0hBTEZfRkxPQVRfT0VTKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNGbG9hdDE2VGV4dHVyZXMoKSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIGlmIChnbDo6SXNEZXB0aFRleHR1cmUoZm9ybWF0KSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRGVwdGhUZXh0dXJlcygpKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAo
dGFyZ2V0ICE9IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gT0VTX2RlcHRoX3RleHR1cmUgc3VwcG9ydHMg
bG9hZGluZyBkZXB0aCBkYXRhLCBidXQgQU5HTEVfZGVwdGhfdGV4dHVyZSBkb2VzIG5vdAorICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCB8
fCBwaXhlbHMgPT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8y
RCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJl
ID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRl
U3ViSW1hZ2VQYXJhbXMyRChmYWxzZSwgd2lkdGgsIGhlaWdodCwgeG9mZnNldCwgeW9mZnNldCwg
bGV2ZWwsIGZvcm1hdCwgdHlwZSwgdGV4dHVyZSkpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICB0ZXh0dXJlLT5zdWJJbWFnZShsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQo
KSwgcGl4ZWxzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIGlmIChnbDo6SXNDdWJlbWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1hcCAqdGV4dHVyZSA9IGNvbnRl
eHQtPmdldFRleHR1cmVDdWJlTWFwKCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlU3Vi
SW1hZ2VQYXJhbXNDdWJlKGZhbHNlLCB3aWR0aCwgaGVpZ2h0LCB4b2Zmc2V0LCB5b2Zmc2V0LCB0
YXJnZXQsIGxldmVsLCBmb3JtYXQsIHR5cGUsIHRleHR1cmUpKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRV
bnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMWYoR0xpbnQg
bG9jYXRpb24sIEdMZmxvYXQgeCkKK3sKKyAgICBnbFVuaWZvcm0xZnYobG9jYXRpb24sIDEsICZ4
KTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KQoreworICAgIEVWRU5UKCIoR0xpbnQgbG9jYXRp
b24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2ID0gMHglMC44cCki
LCBsb2NhdGlvbiwgY291bnQsIHYpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoY291
bnQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxvY2F0aW9uID09IC0xKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3Jh
bUJpbmFyeSA9IGNvbnRleHQtPmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAg
ICBpZiAoIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeS0+c2V0VW5pZm9ybTFmdihsb2NhdGlvbiwgY291
bnQsIHYpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFVuaWZv
cm0xaShHTGludCBsb2NhdGlvbiwgR0xpbnQgeCkKK3sKKyAgICBnbFVuaWZvcm0xaXYobG9jYXRp
b24sIDEsICZ4KTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMWl2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCogdikKK3sKKyAgICBFVkVOVCgiKEdMaW50
IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQqIHYgPSAweCUw
LjhwKSIsIGxvY2F0aW9uLCBjb3VudCwgdik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlm
IChjb3VudCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpw
cm9ncmFtQmluYXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKyAgICAg
ICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtMWl2KGxvY2F0aW9u
LCBjb3VudCwgdikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
VW5pZm9ybTJmKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSkKK3sKKyAgICBH
TGZsb2F0IHh5WzJdID0ge3gsIHl9OworCisgICAgZ2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCAxLCAo
R0xmbG9hdCopJnh5KTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMmZ2KEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KQoreworICAgIEVWRU5UKCIo
R0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2
ID0gMHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOworCisgICAgdHJ5CisgICAgeworICAg
ICAgICBpZiAoY291bnQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAo
bG9jYXRpb24gPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQ
cm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1C
aW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlm
b3JtMmZ2KGxvY2F0aW9uLCBjb3VudCwgdikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3Zv
aWQgX19zdGRjYWxsIGdsVW5pZm9ybTJpKEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5
KQoreworICAgIEdMaW50IHh5WzRdID0ge3gsIHl9OworCisgICAgZ2xVbmlmb3JtMml2KGxvY2F0
aW9uLCAxLCAoR0xpbnQqKSZ4eSk7Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTJpdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpCit7CisgICAgRVZF
TlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMaW50
KiB2ID0gMHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBpZiAoY291bnQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxvY2F0
aW9uID09IC0xKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwor
CisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6UHJvZ3Jh
bUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGNvbnRleHQtPmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5
KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeS0+c2V0VW5pZm9ybTJp
dihsb2NhdGlvbiwgY291bnQsIHYpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9f
c3RkY2FsbCBnbFVuaWZvcm0zZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHks
IEdMZmxvYXQgeikKK3sKKyAgICBHTGZsb2F0IHh5elszXSA9IHt4LCB5LCB6fTsKKworICAgIGds
VW5pZm9ybTNmdihsb2NhdGlvbiwgMSwgKEdMZmxvYXQqKSZ4eXopOworfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQqIHYpCit7CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNv
dW50ID0gJWQsIGNvbnN0IEdMZmxvYXQqIHYgPSAweCUwLjhwKSIsIGxvY2F0aW9uLCBjb3VudCwg
dik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA8IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gY29udGV4dC0+
Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFy
eSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFwcm9n
cmFtQmluYXJ5LT5zZXRVbmlmb3JtM2Z2KGxvY2F0aW9uLCBjb3VudCwgdikpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTNpKEdMaW50IGxvY2F0aW9u
LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KQoreworICAgIEdMaW50IHh5elszXSA9IHt4LCB5
LCB6fTsKKworICAgIGdsVW5pZm9ybTNpdihsb2NhdGlvbiwgMSwgKEdMaW50KikmeHl6KTsKK30K
Kwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGludCogdikKK3sKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9uID0gJWQs
IEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQqIHYgPSAweCUwLjhwKSIsIGxvY2F0aW9u
LCBjb3VudCwgdik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA8IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0g
Y29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJv
Z3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtM2l2KGxvY2F0aW9uLCBjb3VudCwgdikpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTRmKEdMaW50
IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpCit7
CisgICAgR0xmbG9hdCB4eXp3WzRdID0ge3gsIHksIHosIHd9OworCisgICAgZ2xVbmlmb3JtNGZ2
KGxvY2F0aW9uLCAxLCAoR0xmbG9hdCopJnh5encpOworfQorCit2b2lkIF9fc3RkY2FsbCBnbFVu
aWZvcm00ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQqIHYp
Cit7CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQs
IGNvbnN0IEdMZmxvYXQqIHYgPSAweCUwLjhwKSIsIGxvY2F0aW9uLCBjb3VudCwgdik7CisKKyAg
ICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA8IDApCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVu
dFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5
LT5zZXRVbmlmb3JtNGZ2KGxvY2F0aW9uLCBjb3VudCwgdikpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9
Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTRpKEdMaW50IGxvY2F0aW9uLCBHTGludCB4
LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KQoreworICAgIEdMaW50IHh5endbNF0gPSB7eCwg
eSwgeiwgd307CisKKyAgICBnbFVuaWZvcm00aXYobG9jYXRpb24sIDEsIChHTGludCopJnh5encp
OworfQorCit2b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm00aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KQoreworICAgIEVWRU5UKCIoR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGludCogdiA9IDB4JTAuOHApIiwgbG9j
YXRpb24sIGNvdW50LCB2KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50IDwg
MCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsb2NhdGlvbiA9PSAtMSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5h
cnkgPSBjb250ZXh0LT5nZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpOworICAgICAgICAgICAgaWYg
KCFwcm9ncmFtQmluYXJ5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoIXByb2dyYW1CaW5hcnktPnNldFVuaWZvcm00aXYobG9jYXRpb24sIGNvdW50LCB2
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtTWF0
cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHTGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9uID0g
JWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICVkLCBjb25zdCBH
TGZsb2F0KiB2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoY291bnQgPCAw
IHx8IHRyYW5zcG9zZSAhPSBHTF9GQUxTRSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChs
b2NhdGlvbiA9PSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlBy
b2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBjb250ZXh0LT5nZXRDdXJyZW50UHJvZ3JhbUJp
bmFyeSgpOworICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnktPnNldFVuaWZv
cm1NYXRyaXgyZnYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9
Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybU1hdHJpeDNmdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCogdmFsdWUp
Cit7CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQs
IEdMYm9vbGVhbiB0cmFuc3Bvc2UgPSAlZCwgY29uc3QgR0xmbG9hdCogdmFsdWUgPSAweCUwLjhw
KSIsCisgICAgICAgICAgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKworICAg
IHRyeQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50IDwgMCB8fCB0cmFuc3Bvc2UgIT0gR0xfRkFM
U0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmlu
YXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlm
ICghcHJvZ3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBj
b3VudCwgdmFsdWUpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBn
bFVuaWZvcm1NYXRyaXg0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKQoreworICAgIEVWRU5UKCIoR0xpbnQg
bG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJhbnNwb3NlID0g
JWQsIGNvbnN0IEdMZmxvYXQqIHZhbHVlID0gMHglMC44cCkiLAorICAgICAgICAgIGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlm
IChjb3VudCA8IDAgfHwgdHJhbnNwb3NlICE9IEdMX0ZBTFNFKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGxvY2F0aW9uID09IC0xKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGNvbnRleHQtPmdldEN1cnJl
bnRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFy
eS0+c2V0VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJh
ZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVc2VQcm9ncmFtKEdMdWludCBwcm9n
cmFtKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCkiLCBwcm9ncmFtKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9u
TG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHBy
b2dyYW0pOworCisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QgJiYgcHJvZ3JhbSAhPSAw
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIo
cHJvZ3JhbSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwcm9ncmFtICE9IDAgJiYgIXByb2dyYW1P
YmplY3QtPmlzTGlua2VkKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGNvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVmFsaWRh
dGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0g
PSAlZCkiLCBwcm9ncmFtKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBj
b250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgICAgICBpZiAoIXByb2dyYW1P
YmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNo
YWRlcihwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHJvZ3JhbU9iamVjdC0+dmFsaWRhdGUo
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwor
dm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWIxZihHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCkK
K3sKKyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBHTGZsb2F0IHggPSAlZikiLCBpbmRl
eCwgeCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZF
UlRFWF9BVFRSSUJTKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgR0xmbG9hdCB2YWxzWzRdID0geyB4LCAwLCAwLCAxIH07Cisg
ICAgICAgICAgICBjb250ZXh0LT5zZXRWZXJ0ZXhBdHRyaWIoaW5kZXgsIHZhbHMpOworICAgICAg
ICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbFZlcnRleEF0dHJpYjFmdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQqIHZhbHVl
cykKK3sKKyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1
ZXMgPSAweCUwLjhwKSIsIGluZGV4LCB2YWx1ZXMpOworCisgICAgdHJ5CisgICAgeworICAgICAg
ICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMZmxvYXQgdmFs
c1s0XSA9IHsgdmFsdWVzWzBdLCAwLCAwLCAxIH07CisgICAgICAgICAgICBjb250ZXh0LT5zZXRW
ZXJ0ZXhBdHRyaWIoaW5kZXgsIHZhbHMpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0dHJpYjJmKEdM
dWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCit7CisgICAgRVZFTlQoIihHTHVpbnQg
aW5kZXggPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQgeSA9ICVmKSIsIGluZGV4LCB4LCB5
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4ID49IGdsOjpNQVhfVkVSVEVY
X0FUVFJJQlMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBHTGZsb2F0IHZhbHNbNF0gPSB7IHgsIHksIDAsIDEgfTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnNldFZlcnRleEF0dHJpYihpbmRleCwgdmFscyk7CisgICAgICAgIH0K
KyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxs
IGdsVmVydGV4QXR0cmliMmZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCogdmFsdWVzKQor
eworICAgIEVWRU5UKCIoR0x1aW50IGluZGV4ID0gJWQsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcyA9
IDB4JTAuOHApIiwgaW5kZXgsIHZhbHVlcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlm
IChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgR0xmbG9hdCB2YWxzWzRd
ID0geyB2YWx1ZXNbMF0sIHZhbHVlc1sxXSwgMCwgMSB9OworICAgICAgICAgICAgY29udGV4dC0+
c2V0VmVydGV4QXR0cmliKGluZGV4LCB2YWxzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWIz
ZihHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCit7CisgICAg
RVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQgeSA9ICVm
LCBHTGZsb2F0IHogPSAlZikiLCBpbmRleCwgeCwgeSwgeik7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9
CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgR0xmbG9h
dCB2YWxzWzRdID0geyB4LCB5LCB6LCAxIH07CisgICAgICAgICAgICBjb250ZXh0LT5zZXRWZXJ0
ZXhBdHRyaWIoaW5kZXgsIHZhbHMpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0dHJpYjNmdihHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcykKK3sKKyAgICBFVkVOVCgiKEdMdWludCBp
bmRleCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMgPSAweCUwLjhwKSIsIGluZGV4LCB2YWx1
ZXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJU
RVhfQVRUUklCUykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEdMZmxvYXQgdmFsc1s0XSA9IHsgdmFsdWVzWzBdLCB2YWx1ZXNb
MV0sIHZhbHVlc1syXSwgMSB9OworICAgICAgICAgICAgY29udGV4dC0+c2V0VmVydGV4QXR0cmli
KGluZGV4LCB2YWxzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxv
YyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwor
ICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWI0ZihHTHVpbnQgaW5kZXgs
IEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdykKK3sKKyAgICBFVkVO
VCgiKEdMdWludCBpbmRleCA9ICVkLCBHTGZsb2F0IHggPSAlZiwgR0xmbG9hdCB5ID0gJWYsIEdM
ZmxvYXQgeiA9ICVmLCBHTGZsb2F0IHcgPSAlZikiLCBpbmRleCwgeCwgeSwgeiwgdyk7CisKKyAg
ICB0cnkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJT
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFM
VUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0
Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAg
ICAgICAgICAgR0xmbG9hdCB2YWxzWzRdID0geyB4LCB5LCB6LCB3IH07CisgICAgICAgICAgICBj
b250ZXh0LT5zZXRWZXJ0ZXhBdHRyaWIoaW5kZXgsIHZhbHMpOworICAgICAgICB9CisgICAgfQor
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFZlcnRl
eEF0dHJpYjRmdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcykKK3sKKyAgICBF
VkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMgPSAweCUwLjhw
KSIsIGluZGV4LCB2YWx1ZXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoaW5kZXgg
Pj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYg
KGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFZlcnRleEF0dHJp
YihpbmRleCwgdmFsdWVzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUo
R0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBFVkVOVCgiKEdMdWludCBpbmRl
eCA9ICVkLCBHTHVpbnQgZGl2aXNvciA9ICVkKSIsIGluZGV4LCBkaXZpc29yKTsKKworICAgIHRy
eQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4ID49IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBjb250ZXh0LT5zZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBf
X3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKEdMdWludCBpbmRleCwgR0xpbnQgc2l6ZSwg
R0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgY29uc3Qg
R0x2b2lkKiBwdHIpCit7CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwgR0xpbnQgc2l6
ZSA9ICVkLCBHTGVudW0gdHlwZSA9IDB4JVgsICIKKyAgICAgICAgICAiR0xib29sZWFuIG5vcm1h
bGl6ZWQgPSAlZCwgR0xzaXplaSBzdHJpZGUgPSAlZCwgY29uc3QgR0x2b2lkKiBwdHIgPSAweCUw
LjhwKSIsCisgICAgICAgICAgaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwg
cHRyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4ID49IGdsOjpNQVhfVkVS
VEVYX0FUVFJJQlMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2l6ZSA8IDEgfHwgc2l6
ZSA+IDQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsK
KyAgICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRF
OgorICAgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9T
SE9SVDoKKyAgICAgICAgICBjYXNlIEdMX0ZJWEVEOgorICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHN0cmlkZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRWZXJ0ZXhBdHRyaWJTdGF0ZShpbmRleCwg
Y29udGV4dC0+Z2V0QXJyYXlCdWZmZXIoKSwgc2l6ZSwgdHlwZSwgKG5vcm1hbGl6ZWQgPT0gR0xf
VFJVRSksIHN0cmlkZSwgcHRyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJh
ZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWaWV3cG9ydChHTGludCB4LCBHTGlu
dCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBFVkVOVCgiKEdMaW50
IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0
ID0gJWQpIiwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAg
IGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFZpZXdwb3J0
UGFyYW1zKHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKEdMaW50IHNyY1gwLCBHTGludCBzcmNZMCwgR0xpbnQgc3JjWDEsIEdMaW50IHNyY1kx
LCBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRzdFgxLCBHTGludCBkc3RZMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNrLCBHTGVu
dW0gZmlsdGVyKQoreworICAgIEVWRU5UKCIoR0xpbnQgc3JjWDAgPSAlZCwgR0xpbnQgc3JjWTAg
PSAlZCwgR0xpbnQgc3JjWDEgPSAlZCwgR0xpbnQgc3JjWTEgPSAlZCwgIgorICAgICAgICAgICJH
TGludCBkc3RYMCA9ICVkLCBHTGludCBkc3RZMCA9ICVkLCBHTGludCBkc3RYMSA9ICVkLCBHTGlu
dCBkc3RZMSA9ICVkLCAiCisgICAgICAgICAgIkdMYml0ZmllbGQgbWFzayA9IDB4JVgsIEdMZW51
bSBmaWx0ZXIgPSAweCVYKSIsCisgICAgICAgICAgc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWDEs
IGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBzd2l0Y2ggKGZpbHRlcikKKyAgICAgICAgeworICAgICAgICAgIGNhc2Ug
R0xfTkVBUkVTVDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoKG1hc2sgJiB+KEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JV
RkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKSkgIT0gMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChzcmNYMSAtIHNyY1gwICE9IGRzdFgxIC0gZHN0WDAgfHwgc3JjWTEgLSBzcmNZ
MCAhPSBkc3RZMSAtIGRzdFkwKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIlNjYWxpbmcg
YW5kIGZsaXBwaW5nIGluIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIG5vdCBzdXBwb3J0ZWQgYnkgdGhp
cyBpbXBsZW1lbnRhdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0UmVhZEZyYW1lYnVmZmVySGFuZGxl
KCkgPT0gY29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgRVJSKCJCbGl0cyB3aXRoIHRoZSBzYW1lIHNvdXJjZSBhbmQgZGVz
dGluYXRpb24gZnJhbWVidWZmZXIgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBpbXBsZW1lbnRh
dGlvbi4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29udGV4dC0+YmxpdEZyYW1l
YnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBk
c3RZMSwgbWFzayk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2Mm
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAg
ICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVGV4SW1hZ2UzRE9FUyhHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBp
eGVscykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGludCBsZXZlbCA9
ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAweCVYLCAiCisgICAgICAgICAgIkdMc2l6ZWkg
d2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xzaXplaSBkZXB0aCA9ICVkLCBHTGlu
dCBib3JkZXIgPSAlZCwgIgorICAgICAgICAgICJHTGVudW0gZm9ybWF0ID0gMHglWCwgR0xlbnVt
IHR5cGUgPSAweCV4LCBjb25zdCBHTHZvaWQqIHBpeGVscyA9IDB4JTAuOHApIiwKKyAgICAgICAg
ICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJv
cmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBV
TklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
KyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0UHJvZ3JhbUJpbmFyeU9FUyhHTHVpbnQg
cHJvZ3JhbSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqYmluYXJ5Rm9ybWF0LCB2b2lkICpiaW5h
cnkpCit7CisgICAgRVZFTlQoIihHTGVudW0gcHJvZ3JhbSA9IDB4JVgsIGJ1ZlNpemUgPSAlZCwg
bGVuZ3RoID0gMHglMC44cCwgYmluYXJ5Rm9ybWF0ID0gMHglMC44cCwgYmluYXJ5ID0gMHglMC44
cCkiLAorICAgICAgICAgIHByb2dyYW0sIGJ1ZlNpemUsIGxlbmd0aCwgYmluYXJ5Rm9ybWF0LCBi
aW5hcnkpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdl
dFByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCB8fCAh
cHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBwcm9ncmFt
T2JqZWN0LT5nZXRQcm9ncmFtQmluYXJ5KCk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJp
bmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFw
cm9ncmFtQmluYXJ5LT5zYXZlKGJpbmFyeSwgYnVmU2l6ZSwgbGVuZ3RoKSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgKmJpbmFyeUZvcm1hdCA9IEdMX1BST0dS
QU1fQklOQVJZX0FOR0xFOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFByb2dyYW1CaW5hcnlPRVMoR0x1aW50IHBy
b2dyYW0sIEdMZW51bSBiaW5hcnlGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTGludCBsZW5ndGgpCit7CisgICAgRVZFTlQoIihH
TGVudW0gcHJvZ3JhbSA9IDB4JVgsIGJpbmFyeUZvcm1hdCA9IDB4JXgsIGJpbmFyeSA9IDB4JTAu
OHAsIGxlbmd0aCA9ICVkKSIsCisgICAgICAgICAgcHJvZ3JhbSwgYmluYXJ5Rm9ybWF0LCBiaW5h
cnksIGxlbmd0aCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChiaW5hcnlGb3JtYXQgIT0gR0xfUFJPR1JBTV9CSU5B
UllfQU5HTEUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnbDo6UHJv
Z3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisKKyAg
ICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgY29udGV4dC0+c2V0UHJvZ3JhbUJpbmFyeShwcm9ncmFtLCBiaW5h
cnksIGxlbmd0aCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2Mm
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAg
ICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRHJhd0J1ZmZlcnNFWFQoR0xzaXplaSBuLCBjb25z
dCBHTGVudW0gKmJ1ZnMpCit7CisgICAgRVZFTlQoIihHTGVudW0gbiA9ICVkLCBidWZzID0gMHgl
MC44cCkiLCBuLCBidWZzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG4gPCAwIHx8ICh1bnNpZ25lZCBpbnQpbiA+
IGNvbnRleHQtPmdldE1heGltdW1SZW5kZXJUYXJnZXRzKCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZlckhhbmRs
ZSgpID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKG4gIT0gMSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGlmIChidWZzWzBdICE9IEdMX05PTkUgJiYgYnVmc1swXSAhPSBHTF9CQUNLKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbG9yQXR0
YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IG47IGNvbG9yQXR0YWNobWVudCsrKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtIGF0dGFjaG1l
bnQgPSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQgKyBjb2xvckF0dGFjaG1lbnQ7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChidWZzW2NvbG9yQXR0YWNobWVudF0gIT0gR0xfTk9ORSAmJiBidWZz
W2NvbG9yQXR0YWNobWVudF0gIT0gYXR0YWNobWVudCkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250
ZXh0LT5nZXREcmF3RnJhbWVidWZmZXIoKTsKKworICAgICAgICAgICAgZm9yIChpbnQgY29sb3JB
dHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgbjsgY29sb3JBdHRhY2htZW50KyspCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZnJhbWVidWZmZXItPnNldERyYXdCdWZmZXJT
dGF0ZShjb2xvckF0dGFjaG1lbnQsIGJ1ZnNbY29sb3JBdHRhY2htZW50XSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZvciAoaW50IGNvbG9yQXR0YWNobWVudCA9IG47IGNvbG9yQXR0
YWNobWVudCA8IChpbnQpY29udGV4dC0+Z2V0TWF4aW11bVJlbmRlclRhcmdldHMoKTsgY29sb3JB
dHRhY2htZW50KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZnJhbWVidWZmZXIt
PnNldERyYXdCdWZmZXJTdGF0ZShjb2xvckF0dGFjaG1lbnQsIEdMX05PTkUpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoIChzdGQ6OmJhZF9hbGxvYyYpCisgICAg
eworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30K
KworX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSBfX3N0ZGNhbGwgZ2xH
ZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyICpwcm9jbmFtZSkKK3sKKyAgICBzdHJ1Y3QgRXh0ZW5z
aW9uCisgICAgeworICAgICAgICBjb25zdCBjaGFyICpuYW1lOworICAgICAgICBfX2VnbE11c3RD
YXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlIGFkZHJlc3M7CisgICAgfTsKKworICAgIHN0
YXRpYyBjb25zdCBFeHRlbnNpb24gZ2xFeHRlbnNpb25zW10gPQorICAgIHsKKyAgICAgICAgeyJn
bFRleEltYWdlM0RPRVMiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlw
ZSlnbFRleEltYWdlM0RPRVN9LAorICAgICAgICB7ImdsQmxpdEZyYW1lYnVmZmVyQU5HTEUiLCAo
X19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEJsaXRGcmFtZWJ1ZmZl
ckFOR0xFfSwKKyAgICAgICAgeyJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xF
IiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xSZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRX0sCisgICAgICAgIHsiZ2xEZWxldGVGZW5jZXNOViIs
IChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsRGVsZXRlRmVuY2Vz
TlZ9LAorICAgICAgICB7ImdsR2VuRmVuY2VzTlYiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVu
Y3Rpb25Qb2ludGVyVHlwZSlnbEdlbkZlbmNlc05WfSwKKyAgICAgICAgeyJnbElzRmVuY2VOViIs
IChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsSXNGZW5jZU5WfSwK
KyAgICAgICAgeyJnbFRlc3RGZW5jZU5WIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9u
UG9pbnRlclR5cGUpZ2xUZXN0RmVuY2VOVn0sCisgICAgICAgIHsiZ2xHZXRGZW5jZWl2TlYiLCAo
X19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEdldEZlbmNlaXZOVn0s
CisgICAgICAgIHsiZ2xGaW5pc2hGZW5jZU5WIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0
aW9uUG9pbnRlclR5cGUpZ2xGaW5pc2hGZW5jZU5WfSwKKyAgICAgICAgeyJnbFNldEZlbmNlTlYi
LCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbFNldEZlbmNlTlZ9
LAorICAgICAgICB7ImdsR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFIiwgKF9fZWdsTXVz
dENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xHZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEV9LAorICAgICAgICB7ImdsVGV4U3RvcmFnZTJERVhUIiwgKF9fZWdsTXVzdENhc3RU
b1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xUZXhTdG9yYWdlMkRFWFR9LAorICAgICAgICB7
ImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5j
dGlvblBvaW50ZXJUeXBlKWdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVH0sCisgICAgICAgIHsi
Z2xSZWFkblBpeGVsc0VYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJU
eXBlKWdsUmVhZG5QaXhlbHNFWFR9LAorICAgICAgICB7ImdsR2V0blVuaWZvcm1mdkVYVCIsIChf
X2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsR2V0blVuaWZvcm1mdkVY
VH0sCisgICAgICAgIHsiZ2xHZXRuVW5pZm9ybWl2RVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3Bl
ckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xHZXRuVW5pZm9ybWl2RVhUfSwKKyAgICAgICAgeyJnbEdl
blF1ZXJpZXNFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSln
bEdlblF1ZXJpZXNFWFR9LAorICAgICAgICB7ImdsRGVsZXRlUXVlcmllc0VYVCIsIChfX2VnbE11
c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsRGVsZXRlUXVlcmllc0VYVH0sCisg
ICAgICAgIHsiZ2xJc1F1ZXJ5RVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9p
bnRlclR5cGUpZ2xJc1F1ZXJ5RVhUfSwKKyAgICAgICAgeyJnbEJlZ2luUXVlcnlFWFQiLCAoX19l
Z2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEJlZ2luUXVlcnlFWFR9LAor
ICAgICAgICB7ImdsRW5kUXVlcnlFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Q
b2ludGVyVHlwZSlnbEVuZFF1ZXJ5RVhUfSwKKyAgICAgICAgeyJnbEdldFF1ZXJ5aXZFWFQiLCAo
X19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEdldFF1ZXJ5aXZFWFR9
LAorICAgICAgICB7ImdsR2V0UXVlcnlPYmplY3R1aXZFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJv
cGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUfSwKKyAgICAgICAg
eyJnbERyYXdCdWZmZXJzRVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRl
clR5cGUpZ2xEcmF3QnVmZmVyc0VYVH0sCisgICAgICAgIHsiZ2xWZXJ0ZXhBdHRyaWJEaXZpc29y
QU5HTEUiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbFZlcnRl
eEF0dHJpYkRpdmlzb3JBTkdMRX0sCisgICAgICAgIHsiZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbERyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRX0sCisgICAgICAgIHsiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RSIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEV9LAorICAgICAgICB7ImdsR2V0UHJvZ3JhbUJpbmFyeU9FUyIsIChf
X2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsR2V0UHJvZ3JhbUJpbmFy
eU9FU30sCisgICAgICAgIHsiZ2xQcm9ncmFtQmluYXJ5T0VTIiwgKF9fZWdsTXVzdENhc3RUb1By
b3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xQcm9ncmFtQmluYXJ5T0VTfSwgICAgfTsKKworICAg
IGZvciAodW5zaWduZWQgaW50IGV4dCA9IDA7IGV4dCA8IEFycmF5U2l6ZShnbEV4dGVuc2lvbnMp
OyBleHQrKykKKyAgICB7CisgICAgICAgIGlmIChzdHJjbXAocHJvY25hbWUsIGdsRXh0ZW5zaW9u
c1tleHRdLm5hbWUpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAoX19lZ2xN
dXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEV4dGVuc2lvbnNbZXh0XS5hZGRy
ZXNzOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8vIE5vbi1w
dWJsaWMgZnVuY3Rpb25zIHVzZWQgYnkgRUdMCisKK2Jvb2wgX19zdGRjYWxsIGdsQmluZFRleElt
YWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKK3sKKyAgICBFVkVOVCgiKGVnbDo6U3VyZmFjZSog
c3VyZmFjZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBzdXJmYWNlKTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlRl
eHR1cmUyRCAqdGV4dHVyZU9iamVjdCA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgpOworCisgICAg
ICAgICAgICBpZiAodGV4dHVyZU9iamVjdC0+aXNJbW11dGFibGUoKSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmICh0ZXh0dXJlT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRl
eHR1cmVPYmplY3QtPmJpbmRUZXhJbWFnZShzdXJmYWNlKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9saWJHTEVTdjIuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxODUgQEAKK0xJQlJBUlkgbGliR0xFU3YyCitFWFBPUlRTCisgICAgZ2xBY3Rp
dmVUZXh0dXJlICAgICAgICAgICAgICAgICBAMQorICAgIGdsQXR0YWNoU2hhZGVyICAgICAgICAg
ICAgICAgICAgQDIKKyAgICBnbEJpbmRBdHRyaWJMb2NhdGlvbiAgICAgICAgICAgIEAzCisgICAg
Z2xCaW5kQnVmZmVyICAgICAgICAgICAgICAgICAgICBANAorICAgIGdsQmluZEZyYW1lYnVmZmVy
ICAgICAgICAgICAgICAgQDUKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIgICAgICAgICAgICAgIEA2
CisgICAgZ2xCaW5kVGV4dHVyZSAgICAgICAgICAgICAgICAgICBANworICAgIGdsQmxlbmRDb2xv
ciAgICAgICAgICAgICAgICAgICAgQDgKKyAgICBnbEJsZW5kRXF1YXRpb24gICAgICAgICAgICAg
ICAgIEA5CisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUgICAgICAgICBAMTAKKyAgICBnbEJs
ZW5kRnVuYyAgICAgICAgICAgICAgICAgICAgIEAxMQorICAgIGdsQmxlbmRGdW5jU2VwYXJhdGUg
ICAgICAgICAgICAgQDEyCisgICAgZ2xCdWZmZXJEYXRhICAgICAgICAgICAgICAgICAgICBAMTMK
KyAgICBnbEJ1ZmZlclN1YkRhdGEgICAgICAgICAgICAgICAgIEAxNAorICAgIGdsQ2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyAgICAgICAgQDE1CisgICAgZ2xDbGVhciAgICAgICAgICAgICAgICAgICAg
ICAgICBAMTYKKyAgICBnbENsZWFyQ29sb3IgICAgICAgICAgICAgICAgICAgIEAxNworICAgIGds
Q2xlYXJEZXB0aGYgICAgICAgICAgICAgICAgICAgQDE4CisgICAgZ2xDbGVhclN0ZW5jaWwgICAg
ICAgICAgICAgICAgICBAMTkKKyAgICBnbENvbG9yTWFzayAgICAgICAgICAgICAgICAgICAgIEAy
MAorICAgIGdsQ29tcGlsZVNoYWRlciAgICAgICAgICAgICAgICAgQDIxCisgICAgZ2xDb21wcmVz
c2VkVGV4SW1hZ2UyRCAgICAgICAgICBAMjIKKyAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJE
ICAgICAgIEAyMworICAgIGdsQ29weVRleEltYWdlMkQgICAgICAgICAgICAgICAgQDI0CisgICAg
Z2xDb3B5VGV4U3ViSW1hZ2UyRCAgICAgICAgICAgICBAMjUKKyAgICBnbENyZWF0ZVByb2dyYW0g
ICAgICAgICAgICAgICAgIEAyNgorICAgIGdsQ3JlYXRlU2hhZGVyICAgICAgICAgICAgICAgICAg
QDI3CisgICAgZ2xDdWxsRmFjZSAgICAgICAgICAgICAgICAgICAgICBAMjgKKyAgICBnbERlbGV0
ZUJ1ZmZlcnMgICAgICAgICAgICAgICAgIEAyOQorICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzICAg
ICAgICAgICAgQDMwCisgICAgZ2xEZWxldGVQcm9ncmFtICAgICAgICAgICAgICAgICBAMzIKKyAg
ICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMgICAgICAgICAgIEAzMworICAgIGdsRGVsZXRlU2hhZGVy
ICAgICAgICAgICAgICAgICAgQDM0CisgICAgZ2xEZWxldGVUZXh0dXJlcyAgICAgICAgICAgICAg
ICBAMzEKKyAgICBnbERlcHRoRnVuYyAgICAgICAgICAgICAgICAgICAgIEAzNgorICAgIGdsRGVw
dGhNYXNrICAgICAgICAgICAgICAgICAgICAgQDM3CisgICAgZ2xEZXB0aFJhbmdlZiAgICAgICAg
ICAgICAgICAgICBAMzgKKyAgICBnbERldGFjaFNoYWRlciAgICAgICAgICAgICAgICAgIEAzNQor
ICAgIGdsRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgQDM5CisgICAgZ2xEaXNhYmxlVmVy
dGV4QXR0cmliQXJyYXkgICAgICBANDAKKyAgICBnbERyYXdBcnJheXMgICAgICAgICAgICAgICAg
ICAgIEA0MQorICAgIGdsRHJhd0VsZW1lbnRzICAgICAgICAgICAgICAgICAgQDQyCisgICAgZ2xF
bmFibGUgICAgICAgICAgICAgICAgICAgICAgICBANDMKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5ICAgICAgIEA0NAorICAgIGdsRmluaXNoICAgICAgICAgICAgICAgICAgICAgICAgQDQ1
CisgICAgZ2xGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICBANDYKKyAgICBnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyICAgICAgIEA0NworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQgICAg
ICAgICAgQDQ4CisgICAgZ2xGcm9udEZhY2UgICAgICAgICAgICAgICAgICAgICBANDkKKyAgICBn
bEdlbkJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgIEA1MAorICAgIGdsR2VuRnJhbWVidWZmZXJz
ICAgICAgICAgICAgICAgQDUyCisgICAgZ2xHZW5SZW5kZXJidWZmZXJzICAgICAgICAgICAgICBA
NTMKKyAgICBnbEdlblRleHR1cmVzICAgICAgICAgICAgICAgICAgIEA1NAorICAgIGdsR2VuZXJh
dGVNaXBtYXAgICAgICAgICAgICAgICAgQDUxCisgICAgZ2xHZXRBY3RpdmVBdHRyaWIgICAgICAg
ICAgICAgICBANTUKKyAgICBnbEdldEFjdGl2ZVVuaWZvcm0gICAgICAgICAgICAgIEA1NgorICAg
IGdsR2V0QXR0YWNoZWRTaGFkZXJzICAgICAgICAgICAgQDU3CisgICAgZ2xHZXRBdHRyaWJMb2Nh
dGlvbiAgICAgICAgICAgICBANTgKKyAgICBnbEdldEJvb2xlYW52ICAgICAgICAgICAgICAgICAg
IEA1OQorICAgIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYgICAgICAgICAgQDYwCisgICAgZ2xHZXRF
cnJvciAgICAgICAgICAgICAgICAgICAgICBANjEKKyAgICBnbEdldEZsb2F0diAgICAgICAgICAg
ICAgICAgICAgIEA2MgorICAgIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYg
ICBANjMKKyAgICBnbEdldEludGVnZXJ2ICAgICAgICAgICAgICAgICAgIEA2NAorICAgIGdsR2V0
UHJvZ3JhbUluZm9Mb2cgICAgICAgICAgICAgQDY2CisgICAgZ2xHZXRQcm9ncmFtaXYgICAgICAg
ICAgICAgICAgICBANjUKKyAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2ICAgIEA2Nwor
ICAgIGdsR2V0U2hhZGVySW5mb0xvZyAgICAgICAgICAgICAgQDY5CisgICAgZ2xHZXRTaGFkZXJQ
cmVjaXNpb25Gb3JtYXQgICAgICBANzAKKyAgICBnbEdldFNoYWRlclNvdXJjZSAgICAgICAgICAg
ICAgIEA3MQorICAgIGdsR2V0U2hhZGVyaXYgICAgICAgICAgICAgICAgICAgQDY4CisgICAgZ2xH
ZXRTdHJpbmcgICAgICAgICAgICAgICAgICAgICBANzIKKyAgICBnbEdldFRleFBhcmFtZXRlcmZ2
ICAgICAgICAgICAgIEA3MworICAgIGdsR2V0VGV4UGFyYW1ldGVyaXYgICAgICAgICAgICAgQDc0
CisgICAgZ2xHZXRVbmlmb3JtTG9jYXRpb24gICAgICAgICAgICBANzcKKyAgICBnbEdldFVuaWZv
cm1mdiAgICAgICAgICAgICAgICAgIEA3NQorICAgIGdsR2V0VW5pZm9ybWl2ICAgICAgICAgICAg
ICAgICAgQDc2CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiAgICAgICBAODAKKyAgICBn
bEdldFZlcnRleEF0dHJpYmZ2ICAgICAgICAgICAgIEA3OAorICAgIGdsR2V0VmVydGV4QXR0cmli
aXYgICAgICAgICAgICAgQDc5CisgICAgZ2xIaW50ICAgICAgICAgICAgICAgICAgICAgICAgICBA
ODEKKyAgICBnbElzQnVmZmVyICAgICAgICAgICAgICAgICAgICAgIEA4MgorICAgIGdsSXNFbmFi
bGVkICAgICAgICAgICAgICAgICAgICAgQDgzCisgICAgZ2xJc0ZyYW1lYnVmZmVyICAgICAgICAg
ICAgICAgICBAODQKKyAgICBnbElzUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAgIEA4NQorICAg
IGdsSXNSZW5kZXJidWZmZXIgICAgICAgICAgICAgICAgQDg2CisgICAgZ2xJc1NoYWRlciAgICAg
ICAgICAgICAgICAgICAgICBAODcKKyAgICBnbElzVGV4dHVyZSAgICAgICAgICAgICAgICAgICAg
IEA4OAorICAgIGdsTGluZVdpZHRoICAgICAgICAgICAgICAgICAgICAgQDg5CisgICAgZ2xMaW5r
UHJvZ3JhbSAgICAgICAgICAgICAgICAgICBAOTAKKyAgICBnbFBpeGVsU3RvcmVpICAgICAgICAg
ICAgICAgICAgIEA5MQorICAgIGdsUG9seWdvbk9mZnNldCAgICAgICAgICAgICAgICAgQDkyCisg
ICAgZ2xSZWFkUGl4ZWxzICAgICAgICAgICAgICAgICAgICBAOTMKKyAgICBnbFJlbGVhc2VTaGFk
ZXJDb21waWxlciAgICAgICAgIEA5NAorICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZSAgICAgICAg
ICAgQDk1CisgICAgZ2xTYW1wbGVDb3ZlcmFnZSAgICAgICAgICAgICAgICBAOTYKKyAgICBnbFNj
aXNzb3IgICAgICAgICAgICAgICAgICAgICAgIEA5NworICAgIGdsU2hhZGVyQmluYXJ5ICAgICAg
ICAgICAgICAgICAgQDk4CisgICAgZ2xTaGFkZXJTb3VyY2UgICAgICAgICAgICAgICAgICBAOTkK
KyAgICBnbFN0ZW5jaWxGdW5jICAgICAgICAgICAgICAgICAgIEAxMDAKKyAgICBnbFN0ZW5jaWxG
dW5jU2VwYXJhdGUgICAgICAgICAgIEAxMDEKKyAgICBnbFN0ZW5jaWxNYXNrICAgICAgICAgICAg
ICAgICAgIEAxMDIKKyAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUgICAgICAgICAgIEAxMDMKKyAg
ICBnbFN0ZW5jaWxPcCAgICAgICAgICAgICAgICAgICAgIEAxMDQKKyAgICBnbFN0ZW5jaWxPcFNl
cGFyYXRlICAgICAgICAgICAgIEAxMDUKKyAgICBnbFRleEltYWdlMkQgICAgICAgICAgICAgICAg
ICAgIEAxMDYKKyAgICBnbFRleFBhcmFtZXRlcmYgICAgICAgICAgICAgICAgIEAxMDcKKyAgICBn
bFRleFBhcmFtZXRlcmZ2ICAgICAgICAgICAgICAgIEAxMDgKKyAgICBnbFRleFBhcmFtZXRlcmkg
ICAgICAgICAgICAgICAgIEAxMDkKKyAgICBnbFRleFBhcmFtZXRlcml2ICAgICAgICAgICAgICAg
IEAxMTAKKyAgICBnbFRleFN1YkltYWdlMkQgICAgICAgICAgICAgICAgIEAxMTEKKyAgICBnbFVu
aWZvcm0xZiAgICAgICAgICAgICAgICAgICAgIEAxMTIKKyAgICBnbFVuaWZvcm0xZnYgICAgICAg
ICAgICAgICAgICAgIEAxMTMKKyAgICBnbFVuaWZvcm0xaSAgICAgICAgICAgICAgICAgICAgIEAx
MTQKKyAgICBnbFVuaWZvcm0xaXYgICAgICAgICAgICAgICAgICAgIEAxMTUKKyAgICBnbFVuaWZv
cm0yZiAgICAgICAgICAgICAgICAgICAgIEAxMTYKKyAgICBnbFVuaWZvcm0yZnYgICAgICAgICAg
ICAgICAgICAgIEAxMTcKKyAgICBnbFVuaWZvcm0yaSAgICAgICAgICAgICAgICAgICAgIEAxMTgK
KyAgICBnbFVuaWZvcm0yaXYgICAgICAgICAgICAgICAgICAgIEAxMTkKKyAgICBnbFVuaWZvcm0z
ZiAgICAgICAgICAgICAgICAgICAgIEAxMjAKKyAgICBnbFVuaWZvcm0zZnYgICAgICAgICAgICAg
ICAgICAgIEAxMjEKKyAgICBnbFVuaWZvcm0zaSAgICAgICAgICAgICAgICAgICAgIEAxMjIKKyAg
ICBnbFVuaWZvcm0zaXYgICAgICAgICAgICAgICAgICAgIEAxMjMKKyAgICBnbFVuaWZvcm00ZiAg
ICAgICAgICAgICAgICAgICAgIEAxMjQKKyAgICBnbFVuaWZvcm00ZnYgICAgICAgICAgICAgICAg
ICAgIEAxMjUKKyAgICBnbFVuaWZvcm00aSAgICAgICAgICAgICAgICAgICAgIEAxMjYKKyAgICBn
bFVuaWZvcm00aXYgICAgICAgICAgICAgICAgICAgIEAxMjcKKyAgICBnbFVuaWZvcm1NYXRyaXgy
ZnYgICAgICAgICAgICAgIEAxMjgKKyAgICBnbFVuaWZvcm1NYXRyaXgzZnYgICAgICAgICAgICAg
IEAxMjkKKyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYgICAgICAgICAgICAgIEAxMzAKKyAgICBnbFVz
ZVByb2dyYW0gICAgICAgICAgICAgICAgICAgIEAxMzEKKyAgICBnbFZhbGlkYXRlUHJvZ3JhbSAg
ICAgICAgICAgICAgIEAxMzIKKyAgICBnbFZlcnRleEF0dHJpYjFmICAgICAgICAgICAgICAgIEAx
MzMKKyAgICBnbFZlcnRleEF0dHJpYjFmdiAgICAgICAgICAgICAgIEAxMzQKKyAgICBnbFZlcnRl
eEF0dHJpYjJmICAgICAgICAgICAgICAgIEAxMzUKKyAgICBnbFZlcnRleEF0dHJpYjJmdiAgICAg
ICAgICAgICAgIEAxMzYKKyAgICBnbFZlcnRleEF0dHJpYjNmICAgICAgICAgICAgICAgIEAxMzcK
KyAgICBnbFZlcnRleEF0dHJpYjNmdiAgICAgICAgICAgICAgIEAxMzgKKyAgICBnbFZlcnRleEF0
dHJpYjRmICAgICAgICAgICAgICAgIEAxMzkKKyAgICBnbFZlcnRleEF0dHJpYjRmdiAgICAgICAg
ICAgICAgIEAxNDAKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIgICAgICAgICAgIEAxNDEKKyAg
ICBnbFZpZXdwb3J0ICAgICAgICAgICAgICAgICAgICAgIEAxNDIKKworICAgIDsgRXh0ZW5zaW9u
cworICAgIGdsVGV4SW1hZ2UzRE9FUyAgICAgICAgICAgICAgICAgQDE0MworICAgIGdsQmxpdEZy
YW1lYnVmZmVyQU5HTEUgICAgICAgICAgQDE0OQorICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlQU5HTEUgQDE1MAorICAgIGdsRGVsZXRlRmVuY2VzTlYgICAgICAgICAgICAgICAg
QDE1MQorICAgIGdsRmluaXNoRmVuY2VOViAgICAgICAgICAgICAgICAgQDE1MgorICAgIGdsR2Vu
RmVuY2VzTlYgICAgICAgICAgICAgICAgICAgQDE1MworICAgIGdsR2V0RmVuY2Vpdk5WICAgICAg
ICAgICAgICAgICAgQDE1NAorICAgIGdsSXNGZW5jZU5WICAgICAgICAgICAgICAgICAgICAgQDE1
NQorICAgIGdsU2V0RmVuY2VOViAgICAgICAgICAgICAgICAgICAgQDE1NgorICAgIGdsVGVzdEZl
bmNlTlYgICAgICAgICAgICAgICAgICAgQDE1NworICAgIGdsR2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFIEAxNTkKKyAgICBnbFRleFN0b3JhZ2UyREVYVCAgICAgICAgICAgICAgIEAxNjAK
KyAgICBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQgICAgIEAxNjEKKyAgICBnbFJlYWRuUGl4
ZWxzRVhUICAgICAgICAgICAgICAgIEAxNjIKKyAgICBnbEdldG5Vbmlmb3JtZnZFWFQgICAgICAg
ICAgICAgIEAxNjMKKyAgICBnbEdldG5Vbmlmb3JtaXZFWFQgICAgICAgICAgICAgIEAxNjQKKyAg
ICBnbEdlblF1ZXJpZXNFWFQgICAgICAgICAgICAgICAgIEAxNjUKKyAgICBnbERlbGV0ZVF1ZXJp
ZXNFWFQgICAgICAgICAgICAgIEAxNjYKKyAgICBnbElzUXVlcnlFWFQgICAgICAgICAgICAgICAg
ICAgIEAxNjcKKyAgICBnbEJlZ2luUXVlcnlFWFQgICAgICAgICAgICAgICAgIEAxNjgKKyAgICBn
bEVuZFF1ZXJ5RVhUICAgICAgICAgICAgICAgICAgIEAxNjkKKyAgICBnbEdldFF1ZXJ5aXZFWFQg
ICAgICAgICAgICAgICAgIEAxNzAKKyAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUICAgICAgICAg
IEAxNzEKKyAgICBnbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSAgICAgIEAxNzIKKyAgICBnbERy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRSAgICAgIEAxNzMKKyAgICBnbERyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFICAgIEAxNzQKKyAgICBnbFByb2dyYW1CaW5hcnlPRVMgICAgICAgICAgICAgIEAx
NzUKKyAgICBnbEdldFByb2dyYW1CaW5hcnlPRVMgICAgICAgICAgIEAxNzYKKyAgICBnbERyYXdC
dWZmZXJzRVhUICAgICAgICAgICAgICAgIEAxNzkKKworICAgIDsgRUdMIGRlcGVuZGVuY2llcwor
ICAgIGdsQ3JlYXRlQ29udGV4dCAgICAgICAgICAgICAgICAgQDE0NCBOT05BTUUKKyAgICBnbERl
c3Ryb3lDb250ZXh0ICAgICAgICAgICAgICAgIEAxNDUgTk9OQU1FCisgICAgZ2xNYWtlQ3VycmVu
dCAgICAgICAgICAgICAgICAgICBAMTQ2IE5PTkFNRQorICAgIGdsR2V0Q3VycmVudENvbnRleHQg
ICAgICAgICAgICAgQDE0NyBOT05BTUUKKyAgICBnbEdldFByb2NBZGRyZXNzICAgICAgICAgICAg
ICAgIEAxNDggTk9OQU1FCisgICAgZ2xCaW5kVGV4SW1hZ2UgICAgICAgICAgICAgICAgICBAMTU4
IE5PTkFNRQorICAgIGdsQ3JlYXRlUmVuZGVyZXIgICAgICAgICAgICAgICAgQDE3NyBOT05BTUUK
KyAgICBnbERlc3Ryb3lSZW5kZXJlciAgICAgICAgICAgICAgIEAxNzggTk9OQU1FClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9saWJHTEVTdjIucmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIucmMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYwkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMDIgQEAKKy8vIE1pY3Jvc29mdCBWaXN1YWwgQysrIGdlbmVyYXRlZCByZXNvdXJj
ZSBzY3JpcHQuCisvLworI2luY2x1ZGUgInJlc291cmNlLmgiCisKKyNkZWZpbmUgQVBTVFVESU9f
UkVBRE9OTFlfU1lNQk9MUworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBHZW5lcmF0ZWQg
ZnJvbSB0aGUgVEVYVElOQ0xVREUgMiByZXNvdXJjZS4KKy8vCisjaW5jbHVkZSA8d2luZG93cy5o
PgorI2luY2x1ZGUgIi4uL2NvbW1vbi92ZXJzaW9uLmgiCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CisjdW5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUworCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LworLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzCisKKyNpZiAhZGVmaW5lZChBRlhfUkVTT1VS
Q0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX0VOVSkKKyNpZmRlZiBfV0lOMzIKK0xBTkdVQUdF
IExBTkdfRU5HTElTSCwgU1VCTEFOR19FTkdMSVNIX1VTCisjcHJhZ21hIGNvZGVfcGFnZSgxMjUy
KQorI2VuZGlmIC8vX1dJTjMyCisKKyNpZmRlZiBBUFNUVURJT19JTlZPS0VECisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLworLy8KKy8vIFRFWFRJTkNMVURFCisvLworCisxIFRFWFRJTkNMVURFIAorQkVH
SU4KKyAgICAicmVzb3VyY2UuaFwwIgorRU5ECisKKzIgVEVYVElOQ0xVREUgCitCRUdJTgorICAg
ICIjaW5jbHVkZSAiImFmeHJlcy5oIiJcclxuIgorICAgICIjaW5jbHVkZSAiIi4uL2NvbW1vbi92
ZXJzaW9uLmgiIlwwIgorRU5ECisKKzMgVEVYVElOQ0xVREUgCitCRUdJTgorICAgICJcclxuIgor
ICAgICJcMCIKK0VORAorCisjZW5kaWYgICAgLy8gQVBTVFVESU9fSU5WT0tFRAorCisKKy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCisvLworLy8gVmVyc2lvbgorLy8KKworVlNfVkVSU0lPTl9JTkZPIFZF
UlNJT05JTkZPCisgRklMRVZFUlNJT04gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLEJVSUxE
X1ZFUlNJT04sQlVJTERfUkVWSVNJT04KKyBQUk9EVUNUVkVSU0lPTiBNQUpPUl9WRVJTSU9OLE1J
Tk9SX1ZFUlNJT04sQlVJTERfVkVSU0lPTixCVUlMRF9SRVZJU0lPTgorIEZJTEVGTEFHU01BU0sg
MHgxN0wKKyNpZmRlZiBfREVCVUcKKyBGSUxFRkxBR1MgMHgxTAorI2Vsc2UKKyBGSUxFRkxBR1Mg
MHgwTAorI2VuZGlmCisgRklMRU9TIDB4NEwKKyBGSUxFVFlQRSAweDJMCisgRklMRVNVQlRZUEUg
MHgwTAorQkVHSU4KKyAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAg
ICAgQkxPQ0sgIjA0MDkwNGIwIgorICAgICAgICBCRUdJTgorICAgICAgICAgICAgVkFMVUUgIkZp
bGVEZXNjcmlwdGlvbiIsICJBTkdMRSBsaWJHTEVTdjIgRHluYW1pYyBMaW5rIExpYnJhcnkiCisg
ICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBWRVJTSU9OX1NUUklORworICAgICAgICAg
ICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJsaWJHTEVTdjIiCisgICAgICAgICAgICBWQUxVRSAi
TGVnYWxDb3B5cmlnaHQiLCAiQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIgorICAgICAg
ICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAibGliR0xFU3YyLmRsbCIKKyAgICAgICAg
ICAgIFZBTFVFICJQcml2YXRlQnVpbGQiLCBWRVJTSU9OX1NUUklORworICAgICAgICAgICAgVkFM
VUUgIlByb2R1Y3ROYW1lIiwgIkFOR0xFIGxpYkdMRVN2MiBEeW5hbWljIExpbmsgTGlicmFyeSIK
KyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsIFZFUlNJT05fU1RSSU5HCisgICAg
ICAgIEVORAorICAgIEVORAorICAgIEJMT0NLICJWYXJGaWxlSW5mbyIKKyAgICBCRUdJTgorICAg
ICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDQwOSwgMTIwMAorICAgIEVORAorRU5ECisKKyNl
bmRpZiAgICAvLyBFbmdsaXNoIChVLlMuKSByZXNvdXJjZXMKKy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CisKKworCisjaWZuZGVmIEFQU1RVRElPX0lOVk9LRUQKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisv
LworLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDMgcmVzb3VyY2UuCisvLworCisK
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisjZW5kaWYgICAgLy8gbm90IEFQU1RVRElPX0lOVk9LRUQK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLnZj
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9saWJHTEVTdjIudmN4cHJvagkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLnZjeHByb2oJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDIzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQ
cm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJo
dHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAg
PEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFByb2plY3RD
b25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJhdGlv
bj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3Jt
Pg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRp
b24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29u
ZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9q
ZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJl
bGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRp
b24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0Q29u
ZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8
eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KKyAg
ICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9u
Pg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+DQor
ICAgIDxQcm9qZWN0R3VpZD57QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0ItOTgxRTZGNDQ4RTc4fTwv
UHJvamVjdEd1aWQ+DQorICAgIDxSb290TmFtZXNwYWNlPmxpYkdMRVN2MjwvUm9vdE5hbWVzcGFj
ZT4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAgPC9Qcm9wZXJ0eUdyb3Vw
Pg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVm
YXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9u
VHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxX
aG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0K
KyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0
aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICA8
L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
Pg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25U
eXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCisgICAgPFdo
b2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQor
ICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9u
Ij4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9u
VHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1By
b3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9z
b2Z0LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGlu
Z3MiPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVy
dHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9j
YWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
IiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJl
eGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0K
KyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFBy
b2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9w
cyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8
L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisg
ICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3Nv
ZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRm
b3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2Vy
TWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9u
PjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1
dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKENvbmZp
Z3VyYXRpb24pXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9MaW5rSW5j
cmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24p
XDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQor
ICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPE91
dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2
NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4N
CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAg
IDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQo
U29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAg
PEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L0ludERpcj4NCisgICAgPExp
bmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPEluY2x1ZGVQYXRo
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQn
Ij4kKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBhdGg+DQorICAgIDxMaWJyYXJ5UGF0aCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChMaWJy
YXJ5UGF0aCk8L0xpYnJhcnlQYXRoPg0KKyAgICA8SW5jbHVkZVBhdGggQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKEluY2x1ZGVQYXRoKTwv
SW5jbHVkZVBhdGg+DQorICAgIDxMaWJyYXJ5UGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0
aD4NCisgICAgPEluY2x1ZGVQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBhdGg+DQorICAg
IDxJbmNsdWRlUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj4kKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBhdGg+DQorICAgIDxMaWJy
YXJ5UGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyI+JChMaWJyYXJ5UGF0aCk8L0xpYnJhcnlQYXRoPg0KKyAgICA8TGlicmFyeVBhdGgg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMy
JyI+JChMaWJyYXJ5UGF0aCk8L0xpYnJhcnlQYXRoPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAg
PEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6
YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz4kKFByb2plY3REaXIpOyQoUHJvamVjdERpcikvLi47ICQoUHJvamVjdERpcikv
Li4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4z
MjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtMSUJHTEVTVjJfRVhQT1JUUztfQ1JUX1NFQ1VSRV9O
T19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nl
c3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVi
dWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2lj
UnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVn
PC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21w
aWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0K
KyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQor
ICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7
NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8
L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlckZpbGU+
cHJlY29tcGlsZWQuaDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAgIDxBZGRpdGlvbmFs
T3B0aW9ucz4kKEV4dGVybmFsQ29tcGlsZXJPcHRpb25zKSAlKEFkZGl0aW9uYWxPcHRpb25zKTwv
QWRkaXRpb25hbE9wdGlvbnM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisgICAg
ICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5kM2Q5LmxpYjtkeGd1aWQubGliOyUoQWRkaXRpb25h
bERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE1vZHVsZURl
ZmluaXRpb25GaWxlPmxpYkdMRVN2Mi5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KKyAgICAg
IDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9u
Pg0KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KKyAgICAgIDxEYXRhRXhl
Y3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAg
ICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGlu
az4NCisgICAgPFBvc3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxDb21tYW5kPiU0MGVjaG8gb24NCitt
a2RpciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIk
KE91dERpcilsaWJHTEVTdjIuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3Vy
YXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJHTEVTdjIubGliIiAiJChQcm9qZWN0RGlyKS4u
XC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCislNDBlY2hvIG9mZg0KKzwvQ29tbWFuZD4NCisg
ICAgPC9Qb3N0QnVpbGRFdmVudD4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRp
b24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNp
b24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9qZWN0RGlyKS8uLjsgJChQ
cm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmlu
aXRpb25zPkFOR0xFX0RJU0FCTEVfVFJBQ0U7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7
TElCR0xFU1YyX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYO19TRUNV
UkVfU0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRp
b25zPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFy
eT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4NCisg
ICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxUcmVhdFdh
cm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPERlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0K
KyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7
NDI0NTs0NTEyOzQ3MDI7NDcxODslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNw
ZWNpZmljV2FybmluZ3M+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyRmlsZT5wcmVjb21waWxl
ZC5oPC9QcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPiQo
RXh0ZXJuYWxDb21waWxlck9wdGlvbnMpICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFs
T3B0aW9ucz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlv
bmFsRGVwZW5kZW5jaWVzPmQzZDkubGliO2R4Z3VpZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5j
aWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8SWdub3JlQWxsRGVmYXVsdExp
YnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4NCisgICAgICA8TW9kdWxl
RGVmaW5pdGlvbkZpbGU+bGliR0xFU3YyLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAg
ICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRp
b24+DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGlt
aXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNP
TURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1
dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAg
ICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+
DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtk
aXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChP
dXREaXIpbGliR0xFU3YyLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0
aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmxpYiIgIiQoUHJvamVjdERpcikuLlwu
LlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAg
IDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0
PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0KKyAg
ICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4u
Ly4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7
X0RFQlVHO19XSU5ET1dTO19VU1JETEw7TElCR0xFU1YyX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9f
REVQUkVDQVRFO05PTUlOTUFYOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVp
bGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1
bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Zzwv
UnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGls
ZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisg
ICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQy
NDU7NDUxMjs0NzAyOzQ3MTg7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVj
aWZpY1dhcm5pbmdzPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRh
YmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJv
cj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlckZp
bGU+cHJlY29tcGlsZWQuaDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAgIDxBZGRpdGlv
bmFsT3B0aW9ucz4kKEV4dGVybmFsQ29tcGlsZXJPcHRpb25zKSAlKEFkZGl0aW9uYWxPcHRpb25z
KTwvQWRkaXRpb25hbE9wdGlvbnM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4NCisg
ICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5kM2Q5LmxpYjtkeGd1aWQubGliOyUoQWRkaXRp
b25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE1vZHVs
ZURlZmluaXRpb25GaWxlPmxpYkdMRVN2Mi5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KKyAg
ICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0
aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KKyAgICAgIDxEYXRh
RXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0K
KyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+DQorICAgIDwv
TGluaz4NCisgICAgPFBvc3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxDb21tYW5kPiU0MGVjaG8gb24N
Citta2RpciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5
ICIkKE91dERpcilsaWJHTEVTdjIuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZp
Z3VyYXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJHTEVTdjIubGliIiAiJChQcm9qZWN0RGly
KS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCislNDBlY2hvIG9mZg0KKzwvQ29tbWFuZD4N
CisgICAgPC9Qb3N0QnVpbGRFdmVudD4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXx4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25t
ZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGls
ZT4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQorICAgICAg
PElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkFueVN1aXRhYmxlPC9JbmxpbmVGdW5jdGlvbkV4cGFu
c2lvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIp
Ly4uOyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7TElCR0xFU1YyX0VY
UE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYO19TRUNVUkVfU0NMPTA7JShQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAg
IDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2Fybmlu
Z0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJu
aW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDcxODslKERpc2Fi
bGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgICAgPERl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0Pg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJy
b3I+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyRmlsZT5wcmVjb21waWxlZC5oPC9QcmVjb21w
aWxlZEhlYWRlckZpbGU+DQorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPiQoRXh0ZXJuYWxDb21w
aWxlck9wdGlvbnMpICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5j
aWVzPmQzZDkubGliO2R4Z3VpZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRp
b25hbERlcGVuZGVuY2llcz4NCisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxz
ZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4NCisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZp
bGU+bGliR0xFU3YyLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAgICAgPEdlbmVyYXRl
RGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAg
PFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJlbmNl
cz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+
dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRp
b24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFj
aGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQb3N0
QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJvamVj
dERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliR0xF
U3YyLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29w
eSAiJChPdXREaXIpbGliR0xFU3YyLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25m
aWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxk
RXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRoaXJkX3BhcnR5XG11cm11cmhhc2hcTXVybXVySGFzaDMu
Y3BwIj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhl
YWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8L1ByZWNvbXBpbGVk
SGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhl
YWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhl
YWRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQnVmZmVy
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJDb250ZXh0LmNwcCIgLz4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25cZGVidWcuY3BwIj4NCisgICAgICA8UHJlY29t
cGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29t
cGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVj
b21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29t
cGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgPC9DbENvbXBp
bGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRmVuY2UuY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IkZsb2F0MTZUb0Zsb2F0MzIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IkZyYW1lYnVmZmVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJIYW5k
bGVBbGxvY2F0b3IuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImxpYkdMRVN2Mi5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFpbi5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0icHJlY29tcGlsZWQuY3BwIj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPkNyZWF0ZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPkNyZWF0ZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVy
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+
Q3JlYXRlPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkNy
ZWF0ZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IlByb2dyYW0uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlBy
b2dyYW1CaW5hcnkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlF1ZXJ5LmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25cUmVmQ291bnRPYmplY3QuY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlJlbmRlcmJ1ZmZlci5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcQmxpdC5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2UxMS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0icmVuZGVyZXJcRmVuY2U5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJy
ZW5kZXJlclxCdWZmZXJTdG9yYWdlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJy
ZW5kZXJlclxCdWZmZXJTdG9yYWdlMTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2U5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJyZW5kZXJlclxJbWFnZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVy
ZXJcSW1hZ2U5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRl
eEJ1ZmZlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhC
dWZmZXIxMS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhC
dWZmZXI5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleERh
dGFNYW5hZ2VyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFn
ZVNTRTIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlMTEu
Y3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXElucHV0TGF5b3V0Q2Fj
aGUuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5MTEuY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5OS5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXIuY3BwIiAvPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyMTEuY3BwIiAvPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyMTFfdXRpbHMuY3BwIiAvPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyOS5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXI5X3V0aWxzLmNwcCIgLz4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQxMS5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0OS5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyU3RhdGVDYWNoZS5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTExLmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVjdXRhYmxlOS5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcU3dhcENoYWluMTEuY3BwIiAv
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjkuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFRleHR1cmVTdG9yYWdlLmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJlU3RvcmFnZTExLmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJlU3RvcmFnZTkuY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlci5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVyMTEuY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjkuY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleERhdGFNYW5hZ2Vy
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhEZWNsYXJh
dGlvbkNhY2hlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJSZXNvdXJjZU1hbmFn
ZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlNoYWRlci5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iVGV4dHVyZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iVW5pZm9ybS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0idXRpbGl0aWVz
LmNwcCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxjb21tb25cZGVidWcuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxjb21tb25cc3lzdGVtLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cdGhp
cmRfcGFydHlcbXVybXVyaGFzaFxNdXJtdXJIYXNoMy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9ImFuZ2xldHlwZXMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCaW5hcnlT
dHJlYW0uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCdWZmZXIuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJjb25zdGFudHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJDb250ZXh0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRmVuY2UuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJGcmFtZWJ1ZmZlci5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wyLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxHTEVTMlxnbDJleHQuaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMnBsYXRmb3JtLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iSGFuZGxlQWxsb2NhdG9yLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0ibWFpbi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Im1hdGh1dGls
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icHJlY29tcGlsZWQuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJQcm9ncmFtLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iUHJvZ3JhbUJpbmFyeS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlF1ZXJ5Lmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXFJlZkNvdW50T2JqZWN0Lmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVuZGVyYnVmZmVyLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcQmxpdC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXEZlbmNlMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJy
ZW5kZXJlclxGZW5jZTkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxG
ZW5jZUltcGwuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxCdWZmZXJT
dG9yYWdlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3Rv
cmFnZTExLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3Rv
cmFnZTkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxnZW5lcmF0ZW1p
cC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlLmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2UxMS5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlOS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcSW5kZXhCdWZmZXIxMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InJlbmRlcmVyXEluZGV4QnVmZmVyOS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJl
bmRlcmVyXEluZGV4RGF0YU1hbmFnZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJy
ZW5kZXJlclxJbnB1dExheW91dENhY2hlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVuZGVyZXJcUXVlcnkxMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XFF1ZXJ5SW1wbC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5
OS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXIxMS5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyMTFfdXRpbHMuaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlcjkuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxyZW5kZXJlcjlfdXRpbHMuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQuaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQxMS5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclRhcmdldDkuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJTdGF0ZUNhY2hlLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyQ2FjaGUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVjdXRhYmxlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTExLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTkuaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNsZWFyMTF2cy5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcY2xlYXJt
dWx0aXBsZTExcHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFk
ZXJzXGNvbXBpbGVkXGNsZWFyc2luZ2xlMTFwcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcY29tcG9uZW50bWFza3BzLmgiIC8+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxmbGlweXZzLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxs
dW1pbmFuY2Vwcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRl
cnNcY29tcGlsZWRccGFzc3Rocm91Z2gxMXZzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaGx1bTExcHMuaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXHBhc3N0aHJv
dWdobHVtYWxwaGExMXBzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
c2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaHBzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaHJnYjExcHMuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXHBhc3N0
aHJvdWdocmdiYTExcHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxz
aGFkZXJzXGNvbXBpbGVkXHN0YW5kYXJkdnMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJyZW5kZXJlclxTd2FwQ2hhaW4uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxTd2FwQ2hhaW4xMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XFN3YXBDaGFpbjkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0
dXJlU3RvcmFnZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFRleHR1
cmVTdG9yYWdlMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0
dXJlU3RvcmFnZTkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0
ZXhCdWZmZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhC
dWZmZXIxMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1
ZmZlcjkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclx2ZXJ0ZXhjb252
ZXJzaW9uLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4RGF0
YU1hbmFnZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhE
ZWNsYXJhdGlvbkNhY2hlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVzb3VyY2Uu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJSZXNvdXJjZU1hbmFnZXIuaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTaGFkZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJUZXh0dXJlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVW5pZm9ybS5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InV0aWxpdGllcy5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGNvbW1vblx2ZXJzaW9uLmgiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisg
IDxJdGVtR3JvdXA+DQorICAgIDxOb25lIEluY2x1ZGU9ImxpYkdMRVN2Mi5kZWYiIC8+DQorICAg
IDxOb25lIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcQmxpdC5wcyIgLz4NCisgICAgPE5vbmUg
SW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xCbGl0LnZzIiAvPg0KKyAgICA8Tm9uZSBJbmNsdWRl
PSJyZW5kZXJlclxzaGFkZXJzXENsZWFyMTEuaGxzbCIgLz4NCisgICAgPE5vbmUgSW5jbHVkZT0i
cmVuZGVyZXJcc2hhZGVyc1xnZW5lcmF0ZV9zaGFkZXJzLmJhdCIgLz4NCisgICAgPE5vbmUgSW5j
bHVkZT0icmVuZGVyZXJcc2hhZGVyc1xQYXNzdGhyb3VnaDExLmhsc2wiIC8+DQorICA8L0l0ZW1H
cm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0ibGli
R0xFU3YyLnJjIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8UHJv
amVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlxjb21waWxlclxwcmVwcm9jZXNzb3JccHJlcHJvY2Vz
c29yLnZjeHByb2oiPg0KKyAgICAgIDxQcm9qZWN0PntmYmUzMmRmMy0wZmIwLTRmMmYtYTQyNC0y
YzIxYmQ3YmMzMjV9PC9Qcm9qZWN0Pg0KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+DQorICAgIDxQ
cm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXGNvbXBpbGVyXHRyYW5zbGF0b3JfY29tbW9uLnZj
eHByb2oiPg0KKyAgICAgIDxQcm9qZWN0Pns1YjNhNmRiOC0xZTdlLTQwZDctOTJiOS1kYThhYWU2
MTlmYWR9PC9Qcm9qZWN0Pg0KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+DQorICAgIDxQcm9qZWN0
UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXGNvbXBpbGVyXHRyYW5zbGF0b3JfaGxzbC52Y3hwcm9qIj4N
CisgICAgICA8UHJvamVjdD57NTYyMGYwZTQtNmM0My00OWJjLWExNzgtYjgwNGUxYTBjM2E3fTwv
UHJvamVjdD4NCisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5j
ZU91dHB1dEFzc2VtYmx5Pg0KKyAgICAgIDxQcml2YXRlPnRydWU8L1ByaXZhdGU+DQorICAgICAg
PENvcHlMb2NhbFNhdGVsbGl0ZUFzc2VtYmxpZXM+ZmFsc2U8L0NvcHlMb2NhbFNhdGVsbGl0ZUFz
c2VtYmxpZXM+DQorICAgICAgPExpbmtMaWJyYXJ5RGVwZW5kZW5jaWVzPnRydWU8L0xpbmtMaWJy
YXJ5RGVwZW5kZW5jaWVzPg0KKyAgICAgIDxVc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0cz50cnVl
PC9Vc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0cz4NCisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPg0K
KyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWlj
cm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25U
YXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
bGliR0xFU3YyLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52
Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTA5IEBACivvu788P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0i
NC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWls
ZC8yMDAzIj4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZp
bGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYt
MkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5zaW9ucz5jcHA7
YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4NCisgICAg
PC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4NCisgICAgICA8
VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwv
VW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2lu
Yzt4c2Q8L0V4dGVuc2lvbnM+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9
IlRoaXJkIFBhcnR5Ij4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZGMxZGFjNDAtMzU2My00
MWJlLTllMmQtYzI1ODhkODY3MGZifTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+
DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iVGhpcmQgUGFydHlcTXVybXVySGFzaCI+DQorICAgICAg
PFVuaXF1ZUlkZW50aWZpZXI+e2IwMDA1ZDJmLTliNGEtNDY1OS1hMjcwLTEzODgxMTE3NGY3M308
L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9
IkhlYWRlciBGaWxlc1xSZW5kZXJlciI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezU2MmU0
NjlkLTFhYmItNDRiYy1iN2ZhLTU1ZWVmYmY3NWFjY308L1VuaXF1ZUlkZW50aWZpZXI+DQorICAg
IDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNoYWRlcnMiPg0KKyAgICAgIDxVbmlx
dWVJZGVudGlmaWVyPns2ZGMwMzA2Zi02Mzk2LTRlODAtOWVmOS0wOWI1OGFhNTNjNGR9PC9Vbmlx
dWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJTaGFk
ZXJzXENvbXBpbGVkIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjMzMjcwNWItMTk5OS00
MjkyLWEzOGItZGQ0NzMyOTczNGFhfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+
DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzXFJlbmRlcmVyIj4NCisgICAgICA8
VW5pcXVlSWRlbnRpZmllcj57OTNhNzY5NjQtNzdhMy00YjIwLWE2ZjUtZTE0ZTc2MmQ0ZTE0fTwv
VW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0i
SGVhZGVyIEZpbGVzXFJlbmRlcmVyOSI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezM4Nzdm
MzVlLTg0NWMtNGU5NS1iOWE1LWM3ZDhiOWYzMDdjNX08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAg
IDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlc1xSZW5kZXJlcjEx
Ij4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MmQ3MGZkNjAtNmRlYS00ODlmLWFjMDktMTY4
OTBkMzI1NjY5fTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0
ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzXFJlbmRlcmVyOSI+DQorICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+ezYwZTE0ZjA0LTJjZjItNGEwNy1iM2VmLTdjNjhhODJiYTJkOX08L1VuaXF1ZUlkZW50
aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxl
c1xSZW5kZXJlcjExIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NzJkYjYxZDMtZTA4MS00
YjU4LWJjNjMtYTA0YThhNzA1ODVmfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+
DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iQnVmZmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29udGV4dC5jcHAiPg0K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNvbW1vblxkZWJ1Zy5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IkZlbmNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRmxv
YXQxNlRvRmxvYXQzMi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkZyYW1lYnVmZmVy
LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSGFuZGxlQWxsb2NhdG9yLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibGliR0xFU3YyLmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0ibWFpbi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlByb2dyYW0uY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGls
ZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQcm9ncmFtQmluYXJ5LmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iUXVlcnkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llxjb21tb25cUmVmQ291bnRPYmplY3QuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJS
ZW5kZXJidWZmZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJSZXNvdXJjZU1hbmFn
ZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTaGFkZXIuY3BwIj4NCisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJUZXh0dXJlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
dXRpbGl0aWVzLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2Uu
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJl
U3RvcmFnZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVy
XFJlbmRlcmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cdGhp
cmRfcGFydHlcbXVybXVyaGFzaFxNdXJtdXJIYXNoMy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+VGhp
cmQgUGFydHlcTXVybXVySGFzaDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleERhdGFNYW5hZ2VyLmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4RGF0YU1hbmFnZXIuY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZS5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+UmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2VTU0UyLmNwcCI+DQorICAgICAg
PEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVyLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXIuY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJVbmlmb3JtLmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3RvcmFnZS5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2UxMS5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2UxMS5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2Ux
MS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5k
ZXhCdWZmZXIxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVu
ZGVyZXJcUXVlcnkxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVy
MTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
cmVuZGVyZXJcUmVuZGVyZXIxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJl
bmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0icmVuZGVyZXJccmVuZGVyZXIxMV91dGlscy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0MTEuY3BwIj4NCisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGUxMS5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcU3dhcENo
YWluMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0
ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVy
XFRleHR1cmVTdG9yYWdlMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5k
ZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjExLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2Ug
RmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdlOS5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZTkuY3BwIj4NCisgICAgICA8Rmls
dGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2U5LmNwcCI+DQorICAgICAgPEZp
bHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyOS5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTkuY3BwIj4NCisg
ICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXI5LmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyOV91
dGlscy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxS
ZW5kZXJUYXJnZXQ5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJl
bmRlcmVyXFNoYWRlckV4ZWN1dGFibGU5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJj
ZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2U5LmNwcCI+DQorICAgICAgPEZp
bHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjkuY3BwIj4NCisg
ICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcQmxpdC5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbnB1dExheW91dENhY2hl
LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5k
ZXJTdGF0ZUNhY2hlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXIx
MTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJy
ZW5kZXJlclxWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9InByZWNvbXBpbGVkLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2Ug
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJ
dGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQmluYXJ5U3RyZWFtLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkJ1ZmZlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJDb250ZXh0LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkZlbmNlLmgiPg0KKyAgICAg
IDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IkZyYW1lYnVmZmVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wyZXh0LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wycGxhdGZvcm0uaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iSGFuZGxlQWxsb2NhdG9yLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Im1haW4u
aCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibWF0aHV0aWwuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iUHJvZ3JhbS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmls
dGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJQcm9ncmFt
QmluYXJ5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlF1ZXJ5LmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblxSZWZDb3VudE9iamVjdC5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJSZW5kZXJidWZmZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVzb3VyY2UuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVzb3VyY2VNYW5hZ2VyLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNoYWRlci5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJUZXh0dXJlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InV0aWxpdGllcy5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cdmVyc2lvbi5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJhbmdsZXR5cGVzLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHRoaXJkX3BhcnR5XG11cm11cmhhc2hcTXVybXVySGFzaDMuaCI+DQorICAgICAgPEZp
bHRlcj5UaGlyZCBQYXJ0eVxNdXJtdXJIYXNoPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuaWZvcm0uaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaDExdnMuaCI+DQorICAg
ICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Ro
cm91Z2hwcy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVy
c1xjb21waWxlZFxzdGFuZGFyZHZzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxl
ZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJy
ZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNvbXBvbmVudG1hc2twcy5oIj4NCisgICAgICA8Rmls
dGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxmbGlweXZzLmgiPg0K
KyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGx1
bWluYW5jZXBzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0K
KyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFk
ZXJzXGNvbXBpbGVkXHBhc3N0aHJvdWdocmdiYTExcHMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFk
ZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2hyZ2IxMXBzLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVk
XHBhc3N0aHJvdWdobHVtMTFwcy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVu
ZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaGx1bWFscGhhMTFwcy5oIj4NCisgICAg
ICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxjbGVhcjEx
dnMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwv
Q2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29t
cGlsZWRcY2xlYXJtdWx0aXBsZTExcHMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBp
bGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcY2xlYXJzaW5nbGUxMXBzLmgiPg0KKyAgICAgIDxG
aWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cc3lzdGVtLmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGNvbW1vblxkZWJ1Zy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJy
ZW5kZXJlclxCdWZmZXJTdG9yYWdlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJl
bmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXEZlbmNlSW1wbC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xS
ZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZW5kZXJlclxnZW5lcmF0ZW1pcC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
c1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxJbWFnZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xS
ZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZW5kZXJlclxJbmRleEJ1ZmZlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
c1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxJbmRleERhdGFNYW5hZ2VyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5SW1wbC5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlci5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZS5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTd2FwQ2hhaW4uaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2UuaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVy
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHZlcnRleGNv
bnZlcnNpb24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
VmVydGV4RGF0YU1hbmFnZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVy
ZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cmVuZGVyZXJcQnVmZmVyU3RvcmFnZTExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
XFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXIxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5MTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlcjExLmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0MTEuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVjdXRhYmxlMTEu
aCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAg
ICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTd2FwQ2hh
aW4xMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFRl
eHR1cmVTdG9yYWdlMTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIx
MTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJy
ZW5kZXJlclxWZXJ0ZXhCdWZmZXIxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xS
ZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2U5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZTkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlOS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXI5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyOS5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXI5X3V0aWxzLmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQ5LmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVjdXRhYmxl
OS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU3dhcENo
YWluOS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4
dHVyZVN0b3JhZ2U5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxWZXJ0ZXhCdWZmZXI5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRl
cmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJyZW5kZXJlclxGZW5jZTExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRl
cmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcSW1hZ2UxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5k
ZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXHJlbmRlcmVyMTFfdXRpbHMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZTkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXNcUmVuZGVyZXJcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5MTEuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXNcUmVuZGVyZXJcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxCbGl0LmgiPg0KKyAgICAg
IDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJDYWNoZS5oIj4NCisg
ICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5wdXRMYXlvdXRDYWNo
ZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQor
ICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRl
clN0YXRlQ2FjaGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwv
RmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJjb25zdGFudHMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icHJlY29t
cGlsZWQuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxOb25lIElu
Y2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcQmxpdC5wcyI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJz
PC9GaWx0ZXI+DQorICAgIDwvTm9uZT4NCisgICAgPE5vbmUgSW5jbHVkZT0icmVuZGVyZXJcc2hh
ZGVyc1xCbGl0LnZzIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnM8L0ZpbHRlcj4NCisgICAgPC9O
b25lPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGdlbmVyYXRlX3NoYWRl
cnMuYmF0Ij4NCisgICAgICA8RmlsdGVyPlNoYWRlcnM8L0ZpbHRlcj4NCisgICAgPC9Ob25lPg0K
KyAgICA8Tm9uZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXFBhc3N0aHJvdWdoMTEuaGxzbCI+
DQorICAgICAgPEZpbHRlcj5TaGFkZXJzPC9GaWx0ZXI+DQorICAgIDwvTm9uZT4NCisgICAgPE5v
bmUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xDbGVhcjExLmhsc2wiPg0KKyAgICAgIDxGaWx0
ZXI+U2hhZGVyczwvRmlsdGVyPg0KKyAgICA8L05vbmU+DQorICAgIDxOb25lIEluY2x1ZGU9Imxp
YkdMRVN2Mi5kZWYiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxS
ZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0ibGliR0xFU3YyLnJjIiAvPg0KKyAgPC9JdGVtR3JvdXA+
DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9tYWluLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTU1IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIG1haW4uY3BwOiBETEwgZW50cnkgcG9pbnQgYW5kIG1hbmFnZW1l
bnQgb2YgdGhyZWFkLWxvY2FsIGRhdGEuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgor
CisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKworc3RhdGljIERXT1JEIGN1cnJlbnRU
TFMgPSBUTFNfT1VUX09GX0lOREVYRVM7CisKK2V4dGVybiAiQyIgQk9PTCBXSU5BUEkgRGxsTWFp
bihISU5TVEFOQ0UgaW5zdGFuY2UsIERXT1JEIHJlYXNvbiwgTFBWT0lEIHJlc2VydmVkKQorewor
ICAgIHN3aXRjaCAocmVhc29uKQorICAgIHsKKyAgICAgIGNhc2UgRExMX1BST0NFU1NfQVRUQUNI
OgorICAgICAgICB7CisgICAgICAgICAgICBjdXJyZW50VExTID0gVGxzQWxsb2MoKTsKKworICAg
ICAgICAgICAgaWYgKGN1cnJlbnRUTFMgPT0gVExTX09VVF9PRl9JTkRFWEVTKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICAvLyBGYWxsIHRocm91Z2h0IHRvIGluaXRpYWxpemUgaW5kZXgKKyAgICAg
IGNhc2UgRExMX1RIUkVBRF9BVFRBQ0g6CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpDdXJy
ZW50ICpjdXJyZW50ID0gKGdsOjpDdXJyZW50KilMb2NhbEFsbG9jKExQVFIsIHNpemVvZihnbDo6
Q3VycmVudCkpOworCisgICAgICAgICAgICBpZiAoY3VycmVudCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBUbHNTZXRWYWx1ZShjdXJyZW50VExTLCBjdXJyZW50KTsKKworICAgICAg
ICAgICAgICAgIGN1cnJlbnQtPmNvbnRleHQgPSBOVUxMOworICAgICAgICAgICAgICAgIGN1cnJl
bnQtPmRpc3BsYXkgPSBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBETExfVEhSRUFEX0RFVEFDSDoKKyAgICAgICAgeworICAgICAgICAg
ICAgdm9pZCAqY3VycmVudCA9IFRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgICAgICAg
ICBpZiAoY3VycmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMb2NhbEZyZWUo
KEhMT0NBTCljdXJyZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgRExMX1BST0NFU1NfREVUQUNIOgorICAgICAgICB7CisgICAgICAgICAg
ICB2b2lkICpjdXJyZW50ID0gVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7CisKKyAgICAgICAgICAg
IGlmIChjdXJyZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIExvY2FsRnJlZSgo
SExPQ0FMKWN1cnJlbnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBUbHNGcmVlKGN1
cnJlbnRUTFMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK25hbWVzcGFjZSBn
bAorewordm9pZCBtYWtlQ3VycmVudChDb250ZXh0ICpjb250ZXh0LCBlZ2w6OkRpc3BsYXkgKmRp
c3BsYXksIGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKK3sKKyAgICBDdXJyZW50ICpjdXJyZW50ID0g
KEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgY3VycmVudC0+Y29udGV4
dCA9IGNvbnRleHQ7CisgICAgY3VycmVudC0+ZGlzcGxheSA9IGRpc3BsYXk7CisKKyAgICBpZiAo
Y29udGV4dCAmJiBkaXNwbGF5ICYmIHN1cmZhY2UpCisgICAgeworICAgICAgICBjb250ZXh0LT5t
YWtlQ3VycmVudChzdXJmYWNlKTsKKyAgICB9Cit9CisKK0NvbnRleHQgKmdldENvbnRleHQoKQor
eworICAgIEN1cnJlbnQgKmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRM
Uyk7CisKKyAgICByZXR1cm4gY3VycmVudC0+Y29udGV4dDsKK30KKworQ29udGV4dCAqZ2V0Tm9u
TG9zdENvbnRleHQoKQoreworICAgIENvbnRleHQgKmNvbnRleHQgPSBnZXRDb250ZXh0KCk7Cisg
ICAgCisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoY29udGV4dC0+aXNDb250
ZXh0TG9zdCgpKQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0OworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiBOVUxMOworfQorCitlZ2w6OkRpc3BsYXkgKmdldERpc3BsYXkoKQorewor
ICAgIEN1cnJlbnQgKmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7
CisKKyAgICByZXR1cm4gY3VycmVudC0+ZGlzcGxheTsKK30KKworLy8gUmVjb3JkcyBhbiBlcnJv
ciBjb2RlCit2b2lkIGVycm9yKEdMZW51bSBlcnJvckNvZGUpCit7CisgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbEdldEN1cnJlbnRDb250ZXh0KCk7CisKKyAgICBpZiAoY29udGV4dCkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAoZXJyb3JDb2RlKQorICAgICAgICB7CisgICAgICAgICAgY2Fz
ZSBHTF9JTlZBTElEX0VOVU06CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRJbnZhbGlkRW51
bSgpOworICAgICAgICAgICAgVFJBQ0UoIlx0ISBFcnJvciBnZW5lcmF0ZWQ6IGludmFsaWQgZW51
bVxuIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0lOVkFMSURfVkFM
VUU6CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRJbnZhbGlkVmFsdWUoKTsKKyAgICAgICAg
ICAgIFRSQUNFKCJcdCEgRXJyb3IgZ2VuZXJhdGVkOiBpbnZhbGlkIHZhbHVlXG4iKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfSU5WQUxJRF9PUEVSQVRJT046CisgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRJbnZhbGlkT3BlcmF0aW9uKCk7CisgICAgICAgICAgICBU
UkFDRSgiXHQhIEVycm9yIGdlbmVyYXRlZDogaW52YWxpZCBvcGVyYXRpb25cbiIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9PVVRfT0ZfTUVNT1JZOgorICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkT3V0T2ZNZW1vcnkoKTsKKyAgICAgICAgICAgIFRSQUNFKCJcdCEg
RXJyb3IgZ2VuZXJhdGVkOiBvdXQgb2YgbWVtb3J5XG4iKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgIGNhc2UgR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT046CisgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRJbnZhbGlkRnJhbWVidWZmZXJPcGVyYXRpb24oKTsKKyAgICAg
ICAgICAgIFRSQUNFKCJcdCEgRXJyb3IgZ2VuZXJhdGVkOiBpbnZhbGlkIGZyYW1lYnVmZmVyIG9w
ZXJhdGlvblxuIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OiBVTlJF
QUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQorfQorCit9CisKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9tYWluLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIG1haW4uaDogTWFuYWdlbWVu
dCBvZiB0aHJlYWQtbG9jYWwgZGF0YS4KKworI2lmbmRlZiBMSUJHTEVTVjJfTUFJTl9IXworI2Rl
ZmluZSBMSUJHTEVTVjJfTUFJTl9IXworCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5j
bHVkZSAiY29tbW9uL3N5c3RlbS5oIgorCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBEaXNwbGF5
OworY2xhc3MgU3VyZmFjZTsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBDb250ZXh0Owor
ICAgIAorc3RydWN0IEN1cnJlbnQKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0OworICAgIGVnbDo6
RGlzcGxheSAqZGlzcGxheTsKK307CisKK3ZvaWQgbWFrZUN1cnJlbnQoQ29udGV4dCAqY29udGV4
dCwgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOworCitDb250
ZXh0ICpnZXRDb250ZXh0KCk7CitDb250ZXh0ICpnZXROb25Mb3N0Q29udGV4dCgpOworZWdsOjpE
aXNwbGF5ICpnZXREaXNwbGF5KCk7CisKK3ZvaWQgZXJyb3IoR0xlbnVtIGVycm9yQ29kZSk7CisK
K3RlbXBsYXRlPGNsYXNzIFQ+Citjb25zdCBUICZlcnJvcihHTGVudW0gZXJyb3JDb2RlLCBjb25z
dCBUICZyZXR1cm5WYWx1ZSkKK3sKKyAgICBlcnJvcihlcnJvckNvZGUpOworCisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCit9CisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7
Cit9CisKK2V4dGVybiAiQyIKK3sKKy8vIEV4cG9ydGVkIGZ1bmN0aW9ucyBmb3IgdXNlIGJ5IEVH
TAorZ2w6OkNvbnRleHQgKmdsQ3JlYXRlQ29udGV4dChjb25zdCBnbDo6Q29udGV4dCAqc2hhcmVD
b250ZXh0LCByeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBib29sIG5vdGlmeVJlc2V0cywgYm9vbCBy
b2J1c3RBY2Nlc3MpOwordm9pZCBnbERlc3Ryb3lDb250ZXh0KGdsOjpDb250ZXh0ICpjb250ZXh0
KTsKK3ZvaWQgZ2xNYWtlQ3VycmVudChnbDo6Q29udGV4dCAqY29udGV4dCwgZWdsOjpEaXNwbGF5
ICpkaXNwbGF5LCBlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOworZ2w6OkNvbnRleHQgKmdsR2V0Q3Vy
cmVudENvbnRleHQoKTsKK3J4OjpSZW5kZXJlciAqZ2xDcmVhdGVSZW5kZXJlcihlZ2w6OkRpc3Bs
YXkgKmRpc3BsYXksIEhEQyBoRGMsIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlJZCk7Cit2
b2lkIGdsRGVzdHJveVJlbmRlcmVyKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIpOworCitfX2VnbE11
c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlIF9fc3RkY2FsbCBnbEdldFByb2NBZGRy
ZXNzKGNvbnN0IGNoYXIgKnByb2NuYW1lKTsKK2Jvb2wgX19zdGRjYWxsIGdsQmluZFRleEltYWdl
KGVnbDo6U3VyZmFjZSAqc3VyZmFjZSk7Cit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9NQUlO
X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL21hdGh1dGls
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9t
YXRodXRpbC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9tYXRodXRpbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2MSBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gbWF0aHV0aWwuaDogTWF0aCBhbmQgYml0IG1hbmlwdWxhdGlvbiBm
dW5jdGlvbnMuCisKKyNpZm5kZWYgTElCR0xFU1YyX01BVEhVVElMX0hfCisjZGVmaW5lIExJQkdM
RVNWMl9NQVRIVVRJTF9IXworCisjaW5jbHVkZSA8aW50cmluLmg+CisKKyNpbmNsdWRlICJjb21t
b24vc3lzdGVtLmgiCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSBnbAor
eworc3RydWN0IFZlY3RvcjQKK3sKKyAgICBWZWN0b3I0KCkge30KKyAgICBWZWN0b3I0KGZsb2F0
IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpIDogeCh4KSwgeSh5KSwgeih6KSwgdyh3KSB7
fQorCisgICAgZmxvYXQgeDsKKyAgICBmbG9hdCB5OworICAgIGZsb2F0IHo7CisgICAgZmxvYXQg
dzsKK307CisKK2lubGluZSBib29sIGlzUG93MihpbnQgeCkKK3sKKyAgICByZXR1cm4gKHggJiAo
eCAtIDEpKSA9PSAwICYmICh4ICE9IDApOworfQorCitpbmxpbmUgaW50IGxvZzIoaW50IHgpCit7
CisgICAgaW50IHIgPSAwOworICAgIHdoaWxlICgoeCA+PiByKSA+IDEpIHIrKzsKKyAgICByZXR1
cm4gcjsKK30KKworaW5saW5lIHVuc2lnbmVkIGludCBjZWlsUG93Mih1bnNpZ25lZCBpbnQgeCkK
K3sKKyAgICBpZiAoeCAhPSAwKSB4LS07CisgICAgeCB8PSB4ID4+IDE7CisgICAgeCB8PSB4ID4+
IDI7CisgICAgeCB8PSB4ID4+IDQ7CisgICAgeCB8PSB4ID4+IDg7CisgICAgeCB8PSB4ID4+IDE2
OworICAgIHgrKzsKKworICAgIHJldHVybiB4OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBNSU4sIHR5cGVuYW1lIE1BWD4KK2lubGluZSBUIGNsYW1wKFQgeCwgTUlOIG1pbiwg
TUFYIG1heCkKK3sKKyAgICAvLyBTaW5jZSBOYU5zIGZhaWwgYWxsIGNvbXBhcmlzb24gdGVzdHMs
IGEgTmFOIHZhbHVlIHdpbGwgZGVmYXVsdCB0byBtaW4KKyAgICByZXR1cm4geCA+IG1pbiA/ICh4
ID4gbWF4ID8gbWF4IDogeCkgOiBtaW47Cit9CisKK2lubGluZSBmbG9hdCBjbGFtcDAxKGZsb2F0
IHgpCit7CisgICAgcmV0dXJuIGNsYW1wKHgsIDAuMGYsIDEuMGYpOworfQorCit0ZW1wbGF0ZTxj
b25zdCBpbnQgbj4KK2lubGluZSB1bnNpZ25lZCBpbnQgdW5vcm0oZmxvYXQgeCkKK3sKKyAgICBj
b25zdCB1bnNpZ25lZCBpbnQgbWF4ID0gMHhGRkZGRkZGRiA+PiAoMzIgLSBuKTsKKworICAgIGlm
ICh4ID4gMSkKKyAgICB7CisgICAgICAgIHJldHVybiBtYXg7CisgICAgfQorICAgIGVsc2UgaWYg
KHggPCAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIHJldHVybiAodW5zaWduZWQgaW50KShtYXggKiB4ICsgMC41Zik7CisgICAgfQor
fQorCitpbmxpbmUgYm9vbCBzdXBwb3J0c1NTRTIoKQoreworICAgIHN0YXRpYyBib29sIGNoZWNr
ZWQgPSBmYWxzZTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0cyA9IGZhbHNlOworCisgICAgaWYg
KGNoZWNrZWQpCisgICAgeworICAgICAgICByZXR1cm4gc3VwcG9ydHM7CisgICAgfQorCisgICAg
aW50IGluZm9bNF07CisgICAgX19jcHVpZChpbmZvLCAwKTsKKyAgICAKKyAgICBpZiAoaW5mb1sw
XSA+PSAxKQorICAgIHsKKyAgICAgICAgX19jcHVpZChpbmZvLCAxKTsKKworICAgICAgICBzdXBw
b3J0cyA9IChpbmZvWzNdID4+IDI2KSAmIDE7CisgICAgfQorCisgICAgY2hlY2tlZCA9IHRydWU7
CisKKyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK2lubGluZSB1bnNpZ25lZCBzaG9ydCBmbG9h
dDMyVG9GbG9hdDE2KGZsb2F0IGZwMzIpCit7CisgICAgdW5zaWduZWQgaW50IGZwMzJpID0gKHVu
c2lnbmVkIGludCYpZnAzMjsKKyAgICB1bnNpZ25lZCBpbnQgc2lnbiA9IChmcDMyaSAmIDB4ODAw
MDAwMDApID4+IDE2OworICAgIHVuc2lnbmVkIGludCBhYnMgPSBmcDMyaSAmIDB4N0ZGRkZGRkY7
CisKKyAgICBpZihhYnMgPiAweDQ3RkZFRkZGKSAgIC8vIEluZmluaXR5CisgICAgeworICAgICAg
ICByZXR1cm4gc2lnbiB8IDB4N0ZGRjsKKyAgICB9CisgICAgZWxzZSBpZihhYnMgPCAweDM4ODAw
MDAwKSAgIC8vIERlbm9ybWFsCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgbWFudGlzc2Eg
PSAoYWJzICYgMHgwMDdGRkZGRikgfCAweDAwODAwMDAwOyAgIAorICAgICAgICBpbnQgZSA9IDEx
MyAtIChhYnMgPj4gMjMpOworCisgICAgICAgIGlmKGUgPCAyNCkKKyAgICAgICAgeworICAgICAg
ICAgICAgYWJzID0gbWFudGlzc2EgPj4gZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGFicyA9IDA7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
c2lnbiB8IChhYnMgKyAweDAwMDAwRkZGICsgKChhYnMgPj4gMTMpICYgMSkpID4+IDEzOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gc2lnbiB8IChhYnMgKyAweEM4MDAw
MDAwICsgMHgwMDAwMEZGRiArICgoYWJzID4+IDEzKSAmIDEpKSA+PiAxMzsKKyAgICB9Cit9CisK
K2Zsb2F0IGZsb2F0MTZUb0Zsb2F0MzIodW5zaWduZWQgc2hvcnQgaCk7CisKK30KKworbmFtZXNw
YWNlIHJ4Cit7CisKK3N0cnVjdCBSYW5nZQoreworICAgIFJhbmdlKCkge30KKyAgICBSYW5nZShp
bnQgbG8sIGludCBoaSkgOiBzdGFydChsbyksIGVuZChoaSkgeyBBU1NFUlQobG8gPD0gaGkpOyB9
CisKKyAgICBpbnQgc3RhcnQ7CisgICAgaW50IGVuZDsKK307CisKK30KKworI2VuZGlmICAgLy8g
TElCR0xFU1YyX01BVEhVVElMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3ByZWNvbXBpbGVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcHJlY29tcGlsZWQuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBwcmVjb21waWxlZC5j
cHA6IFByZWNvbXBpbGVkIGhlYWRlciBzb3VyY2UgZmlsZSBmb3IgbGliR0xFU3YyLgorCisjaW5j
bHVkZSAicHJlY29tcGlsZWQuaCIKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcHJlY29tcGlsZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBwcmVjb21waWxlZC5oOiBQcmVj
b21waWxlZCBoZWFkZXIgZmlsZSBmb3IgbGliR0xFU3YyLgorCisjZGVmaW5lIEdMX0FQSUNBTEwK
KyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxHTEVTMi9nbDJleHQuaD4KKworI2Rl
ZmluZSBFR0xBUEkKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisKKyNpbmNsdWRlIDxhc3NlcnQuaD4K
KyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGZsb2F0Lmg+CisjaW5jbHVkZSA8aW50cmlu
Lmg+CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0
ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNs
dWRlIDxhbGdvcml0aG0+IC8vIGZvciBzdGQ6Om1pbiBhbmQgc3RkOjptYXgKKyNpbmNsdWRlIDxs
aW1pdHM+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxzc3RyZWFt
PgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgorI2luY2x1ZGUg
PHZlY3Rvcj4KKworI2luY2x1ZGUgPGQzZDkuaD4KKyNpbmNsdWRlIDxEM0QxMS5oPgorI2luY2x1
ZGUgPGR4Z2kuaD4KKyNpbmNsdWRlIDxEM0Rjb21waWxlci5oPgorCisjaWZkZWYgX01TQ19WRVIK
KyNpbmNsdWRlIDxoYXNoX21hcD4KKyNlbmRpZgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVzb3VyY2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVzb3VyY2UuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNCBAQAorLy97e05PX0RFUEVOREVOQ0lFU319CisvLyBNaWNyb3NvZnQgVmlz
dWFsIEMrKyBnZW5lcmF0ZWQgaW5jbHVkZSBmaWxlLgorLy8gVXNlZCBieSBsaWJHTEVTdjIucmMK
KworLy8gTmV4dCBkZWZhdWx0IHZhbHVlcyBmb3IgbmV3IG9iamVjdHMKKy8vIAorI2lmZGVmIEFQ
U1RVRElPX0lOVk9LRUQKKyNpZm5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUworI2RlZmlu
ZSBfQVBTX05FWFRfUkVTT1VSQ0VfVkFMVUUgICAgICAgIDEwMQorI2RlZmluZSBfQVBTX05FWFRf
Q09NTUFORF9WQUxVRSAgICAgICAgIDQwMDAxCisjZGVmaW5lIF9BUFNfTkVYVF9DT05UUk9MX1ZB
TFVFICAgICAgICAgMTAwMQorI2RlZmluZSBfQVBTX05FWFRfU1lNRURfVkFMVUUgICAgICAgICAg
IDEwMQorI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvdXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzQ2IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIHV0aWxpdGllcy5jcHA6IENvbnZlcnNpb24gZnVuY3Rpb25zIGFuZCBvdGhl
ciB1dGlsaXR5IHJvdXRpbmVzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorCituYW1lc3BhY2UgZ2wKK3sKKworaW50
IFVuaWZvcm1Db21wb25lbnRDb3VudChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUp
CisgICAgeworICAgICAgY2FzZSBHTF9CT09MOgorICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAg
IGNhc2UgR0xfSU5UOgorICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEOgorICAgICAgY2FzZSBHTF9T
QU1QTEVSX0NVQkU6CisgICAgICAgICAgcmV0dXJuIDE7CisgICAgICBjYXNlIEdMX0JPT0xfVkVD
MjoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKKyAgICAgIGNhc2UgR0xfSU5UX1ZFQzI6Cisg
ICAgICAgICAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX0lOVF9WRUMzOgorICAgICAgY2FzZSBH
TF9GTE9BVF9WRUMzOgorICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6CisgICAgICAgICAgcmV0dXJu
IDM7CisgICAgICBjYXNlIEdMX0JPT0xfVkVDNDoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoK
KyAgICAgIGNhc2UgR0xfSU5UX1ZFQzQ6CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6CisgICAg
ICAgICAgcmV0dXJuIDQ7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6CisgICAgICAgICAgcmV0
dXJuIDk7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgICAgcmV0dXJuIDE2Owor
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJl
dHVybiAwOworfQorCitHTGVudW0gVW5pZm9ybUNvbXBvbmVudFR5cGUoR0xlbnVtIHR5cGUpCit7
CisgICAgc3dpdGNoKHR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9CT09MOgorICAgICAgY2Fz
ZSBHTF9CT09MX1ZFQzI6CisgICAgICBjYXNlIEdMX0JPT0xfVkVDMzoKKyAgICAgIGNhc2UgR0xf
Qk9PTF9WRUM0OgorICAgICAgICAgIHJldHVybiBHTF9CT09MOworICAgICAgY2FzZSBHTF9GTE9B
VDoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMzoK
KyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjoKKyAg
ICAgIGNhc2UgR0xfRkxPQVRfTUFUMzoKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNDoKKyAgICAg
ICAgICByZXR1cm4gR0xfRkxPQVQ7CisgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgIGNhc2UgR0xf
U0FNUExFUl8yRDoKKyAgICAgIGNhc2UgR0xfU0FNUExFUl9DVUJFOgorICAgICAgY2FzZSBHTF9J
TlRfVkVDMjoKKyAgICAgIGNhc2UgR0xfSU5UX1ZFQzM6CisgICAgICBjYXNlIEdMX0lOVF9WRUM0
OgorICAgICAgICAgIHJldHVybiBHTF9JTlQ7CisgICAgICBkZWZhdWx0OgorICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX05PTkU7Cit9CisKK3NpemVfdCBV
bmlmb3JtQ29tcG9uZW50U2l6ZShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2godHlwZSkKKyAg
ICB7CisgICAgICBjYXNlIEdMX0JPT0w6ICByZXR1cm4gc2l6ZW9mKEdMaW50KTsKKyAgICAgIGNh
c2UgR0xfRkxPQVQ6IHJldHVybiBzaXplb2YoR0xmbG9hdCk7CisgICAgICBjYXNlIEdMX0lOVDog
ICByZXR1cm4gc2l6ZW9mKEdMaW50KTsKKyAgICAgIGRlZmF1bHQ6ICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3NpemVfdCBVbmlmb3JtSW50ZXJuYWxT
aXplKEdMZW51bSB0eXBlKQoreworICAgIC8vIEV4cGFuZGVkIHRvIDQtZWxlbWVudCB2ZWN0b3Jz
CisgICAgcmV0dXJuIFVuaWZvcm1Db21wb25lbnRTaXplKFVuaWZvcm1Db21wb25lbnRUeXBlKHR5
cGUpKSAqIFZhcmlhYmxlUm93Q291bnQodHlwZSkgKiA0OworfQorCitzaXplX3QgVW5pZm9ybUV4
dGVybmFsU2l6ZShHTGVudW0gdHlwZSkKK3sKKyAgICByZXR1cm4gVW5pZm9ybUNvbXBvbmVudFNp
emUoVW5pZm9ybUNvbXBvbmVudFR5cGUodHlwZSkpICogVW5pZm9ybUNvbXBvbmVudENvdW50KHR5
cGUpOworfQorCitpbnQgVmFyaWFibGVSb3dDb3VudChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgICByZXR1cm4gMDsK
KyAgICAgIGNhc2UgR0xfQk9PTDoKKyAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICBjYXNlIEdM
X0lOVDoKKyAgICAgIGNhc2UgR0xfQk9PTF9WRUMyOgorICAgICAgY2FzZSBHTF9GTE9BVF9WRUMy
OgorICAgICAgY2FzZSBHTF9JTlRfVkVDMjoKKyAgICAgIGNhc2UgR0xfSU5UX1ZFQzM6CisgICAg
ICBjYXNlIEdMX0ZMT0FUX1ZFQzM6CisgICAgICBjYXNlIEdMX0JPT0xfVkVDMzoKKyAgICAgIGNh
c2UgR0xfQk9PTF9WRUM0OgorICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0OgorICAgICAgY2FzZSBH
TF9JTlRfVkVDNDoKKyAgICAgIGNhc2UgR0xfU0FNUExFUl8yRDoKKyAgICAgIGNhc2UgR0xfU0FN
UExFUl9DVUJFOgorICAgICAgICByZXR1cm4gMTsKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjoK
KyAgICAgICAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6CisgICAgICAgIHJl
dHVybiAzOworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OgorICAgICAgICByZXR1cm4gNDsKKyAg
ICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJu
IDA7Cit9CisKK2ludCBWYXJpYWJsZUNvbHVtbkNvdW50KEdMZW51bSB0eXBlKQoreworICAgIHN3
aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX05PTkU6CisgICAgICAgIHJldHVybiAw
OworICAgICAgY2FzZSBHTF9CT09MOgorICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgIGNhc2Ug
R0xfSU5UOgorICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEOgorICAgICAgY2FzZSBHTF9TQU1QTEVS
X0NVQkU6CisgICAgICAgIHJldHVybiAxOworICAgICAgY2FzZSBHTF9CT09MX1ZFQzI6CisgICAg
ICBjYXNlIEdMX0ZMT0FUX1ZFQzI6CisgICAgICBjYXNlIEdMX0lOVF9WRUMyOgorICAgICAgY2Fz
ZSBHTF9GTE9BVF9NQVQyOgorICAgICAgICByZXR1cm4gMjsKKyAgICAgIGNhc2UgR0xfSU5UX1ZF
QzM6CisgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6CisgICAgICBjYXNlIEdMX0JPT0xfVkVDMzoK
KyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzoKKyAgICAgICAgcmV0dXJuIDM7CisgICAgICBjYXNl
IEdMX0JPT0xfVkVDNDoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKKyAgICAgIGNhc2UgR0xf
SU5UX1ZFQzQ6CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgIHJldHVybiA0Owor
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gMDsKK30KKworaW50IEFsbG9jYXRlRmlyc3RGcmVlQml0cyh1bnNpZ25lZCBpbnQgKmJpdHMs
IHVuc2lnbmVkIGludCBhbGxvY2F0aW9uU2l6ZSwgdW5zaWduZWQgaW50IGJpdHNTaXplKQorewor
ICAgIEFTU0VSVChhbGxvY2F0aW9uU2l6ZSA8PSBiaXRzU2l6ZSk7CisKKyAgICB1bnNpZ25lZCBp
bnQgbWFzayA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgPj4gKHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6ZGlnaXRzIC0gYWxsb2NhdGlvblNpemUp
OworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBiaXRzU2l6ZSAtIGFsbG9jYXRp
b25TaXplICsgMTsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKCgqYml0cyAmIG1hc2spID09IDAp
CisgICAgICAgIHsKKyAgICAgICAgICAgICpiaXRzIHw9IG1hc2s7CisgICAgICAgICAgICByZXR1
cm4gaTsKKyAgICAgICAgfQorCisgICAgICAgIG1hc2sgPDw9IDE7CisgICAgfQorCisgICAgcmV0
dXJuIC0xOworfQorCitHTHNpemVpIENvbXB1dGVQaXRjaChHTHNpemVpIHdpZHRoLCBHTGludCBp
bnRlcm5hbGZvcm1hdCwgR0xpbnQgYWxpZ25tZW50KQoreworICAgIEFTU0VSVChhbGlnbm1lbnQg
PiAwICYmIGlzUG93MihhbGlnbm1lbnQpKTsKKworICAgIEdMc2l6ZWkgcmF3UGl0Y2ggPSBDb21w
dXRlUGl4ZWxTaXplKGludGVybmFsZm9ybWF0KSAqIHdpZHRoOworICAgIHJldHVybiAocmF3UGl0
Y2ggKyBhbGlnbm1lbnQgLSAxKSAmIH4oYWxpZ25tZW50IC0gMSk7Cit9CisKK0dMc2l6ZWkgQ29t
cHV0ZUNvbXByZXNzZWRQaXRjaChHTHNpemVpIHdpZHRoLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQp
Cit7CisgICAgcmV0dXJuIENvbXB1dGVDb21wcmVzc2VkU2l6ZSh3aWR0aCwgMSwgaW50ZXJuYWxm
b3JtYXQpOworfQorCitHTHNpemVpIENvbXB1dGVDb21wcmVzc2VkU2l6ZShHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGludGVybmFsZm9ybWF0KQoreworICAgIHN3aXRjaCAo
aW50ZXJuYWxmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RD
X0RYVDFfRVhUOgorICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoK
KyAgICAgICAgcmV0dXJuIDggKiAoKHdpZHRoICsgMykgLyA0KSAqICgoaGVpZ2h0ICsgMykgLyA0
KTsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAgICAgICAgcmV0dXJu
IDE2ICogKCh3aWR0aCArIDMpIC8gNCkgKiAoKGhlaWdodCArIDMpIC8gNCk7CisgICAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2Jvb2wgSXNDb21wcmVzc2VkKEdM
ZW51bSBmb3JtYXQpCit7CisgICAgaWYoZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCX1MzVENf
RFhUMV9FWFQgfHwKKyAgICAgICBmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQgfHwKKyAgICAgICBmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19B
TkdMRSB8fAorICAgICAgIGZvcm1hdCA9PSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FO
R0xFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgSXNEZXB0aFRleHR1cmUo
R0xlbnVtIGZvcm1hdCkKK3sKKyAgICBpZiAoZm9ybWF0ID09IEdMX0RFUFRIX0NPTVBPTkVOVCB8
fAorICAgICAgICBmb3JtYXQgPT0gR0xfREVQVEhfU1RFTkNJTF9PRVMgfHwKKyAgICAgICAgZm9y
bWF0ID09IEdMX0RFUFRIX0NPTVBPTkVOVDE2IHx8CisgICAgICAgIGZvcm1hdCA9PSBHTF9ERVBU
SF9DT01QT05FTlQzMl9PRVMgfHwKKyAgICAgICAgZm9ybWF0ID09IEdMX0RFUFRIMjRfU1RFTkNJ
TDhfT0VTKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIElzU3RlbmNpbFRleHR1cmUoR0xlbnVtIGZvcm1hdCkKK3sKKyAg
ICBpZiAoZm9ybWF0ID09IEdMX0RFUFRIX1NURU5DSUxfT0VTIHx8CisgICAgICAgIGZvcm1hdCA9
PSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUykKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNYWtlVmFsaWRTaXplKGJvb2wg
aXNJbWFnZSwgYm9vbCBpc0NvbXByZXNzZWQsIEdMc2l6ZWkgKnJlcXVlc3RXaWR0aCwgR0xzaXpl
aSAqcmVxdWVzdEhlaWdodCwgaW50ICpsZXZlbE9mZnNldCkKK3sKKyAgICBpbnQgdXBzYW1wbGVD
b3VudCA9IDA7CisKKyAgICBpZiAoaXNDb21wcmVzc2VkKQorICAgIHsKKyAgICAgICAgLy8gRG9u
J3QgZXhwYW5kIHRoZSBzaXplIG9mIGZ1bGwgdGV4dHVyZXMgdGhhdCBhcmUgYXQgbGVhc3QgNHg0
CisgICAgICAgIC8vIGFscmVhZHkuCisgICAgICAgIGlmIChpc0ltYWdlIHx8ICpyZXF1ZXN0V2lk
dGggPCA0IHx8ICpyZXF1ZXN0SGVpZ2h0IDwgNCkKKyAgICAgICAgeworICAgICAgICAgICAgd2hp
bGUgKCpyZXF1ZXN0V2lkdGggJSA0ICE9IDAgfHwgKnJlcXVlc3RIZWlnaHQgJSA0ICE9IDApCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKnJlcXVlc3RXaWR0aCA8PD0gMTsKKyAgICAg
ICAgICAgICAgICAqcmVxdWVzdEhlaWdodCA8PD0gMTsKKyAgICAgICAgICAgICAgICB1cHNhbXBs
ZUNvdW50Kys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgKmxldmVsT2Zm
c2V0ID0gdXBzYW1wbGVDb3VudDsKK30KKworLy8gUmV0dXJucyB0aGUgc2l6ZSwgaW4gYnl0ZXMs
IG9mIGEgc2luZ2xlIHRleGVsIGluIGFuIEltYWdlCitpbnQgQ29tcHV0ZVBpeGVsU2l6ZShHTGlu
dCBpbnRlcm5hbGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQorICAgIHsK
KyAgICAgIGNhc2UgR0xfQUxQSEE4X0VYVDogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBz
aXplb2YodW5zaWduZWQgY2hhcik7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhUOiAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpOworICAgICAgY2FzZSBH
TF9BTFBIQTMyRl9FWFQ6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZihmbG9hdCk7
CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTMyRl9FWFQ6ICAgICAgICAgICAgICAgICByZXR1cm4g
c2l6ZW9mKGZsb2F0KTsKKyAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgc2hvcnQpOworICAgICAgY2FzZSBHTF9MVU1J
TkFOQ0UxNkZfRVhUOiAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1bnNpZ25lZCBzaG9y
dCk7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDogICAgICAgICAgICByZXR1
cm4gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogMjsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FM
UEhBMzJGX0VYVDogICAgICAgICAgIHJldHVybiBzaXplb2YoZmxvYXQpICogMjsKKyAgICAgIGNh
c2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDogICAgICAgICAgIHJldHVybiBzaXplb2YodW5z
aWduZWQgc2hvcnQpICogMjsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6ICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgY2hhcikgKiAzOworICAgICAgY2FzZSBH
TF9SR0I1NjU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1bnNpZ25l
ZCBzaG9ydCk7CisgICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6ICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc2l6ZW9mKGZsb2F0KSAqIDM7CisgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6ICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSAqIDM7Cisg
ICAgICBjYXNlIEdMX1JHQkE4X09FUzogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6
ZW9mKHVuc2lnbmVkIGNoYXIpICogNDsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgc2hvcnQpOworICAgICAgY2Fz
ZSBHTF9SR0I1X0ExOiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1bnNp
Z25lZCBzaG9ydCk7CisgICAgICBjYXNlIEdMX1JHQkEzMkZfRVhUOiAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc2l6ZW9mKGZsb2F0KSAqIDQ7CisgICAgICBjYXNlIEdMX1JHQkExNkZfRVhU
OiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSAqIDQ7
CisgICAgICBjYXNlIEdMX0JHUkE4X0VYVDogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
c2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogNDsKKyAgICAgIGNhc2UgR0xfQkdSQTRfQU5HTEVYOiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgc2hvcnQpOworICAgICAg
Y2FzZSBHTF9CR1I1X0ExX0FOR0xFWDogICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1
bnNpZ25lZCBzaG9ydCk7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgIH0KKwor
ICAgIHJldHVybiAwOworfQorCitib29sIElzQ3ViZW1hcFRleHR1cmVUYXJnZXQoR0xlbnVtIHRh
cmdldCkKK3sKKyAgICByZXR1cm4gKHRhcmdldCA+PSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1ggJiYgdGFyZ2V0IDw9IEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWik7Cit9CisK
K2Jvb2wgSXNJbnRlcm5hbFRleHR1cmVUYXJnZXQoR0xlbnVtIHRhcmdldCkKK3sKKyAgICByZXR1
cm4gdGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgfHwgSXNDdWJlbWFwVGV4dHVyZVRhcmdldCh0YXJn
ZXQpOworfQorCitHTGludCBDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNl
IEdMX0FMUEhBOgorICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBj
YXNlIEdMX1VOU0lHTkVEX0JZVEU6ICAgIHJldHVybiBHTF9BTFBIQThfRVhUOworICAgICAgICAg
IGNhc2UgR0xfRkxPQVQ6ICAgICAgICAgICAgcmV0dXJuIEdMX0FMUEhBMzJGX0VYVDsKKyAgICAg
ICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOiAgIHJldHVybiBHTF9BTFBIQTE2Rl9FWFQ7Cisg
ICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAg
c3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRF
OiAgICByZXR1cm4gR0xfTFVNSU5BTkNFOF9FWFQ7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVDog
ICAgICAgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFMzJGX0VYVDsKKyAgICAgICAgICBjYXNlIEdM
X0hBTEZfRkxPQVRfT0VTOiAgIHJldHVybiBHTF9MVU1JTkFOQ0UxNkZfRVhUOworICAgICAgICAg
IGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgIHN3
aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURTog
ICAgcmV0dXJuIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDsKKyAgICAgICAgICBjYXNlIEdMX0ZM
T0FUOiAgICAgICAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUOworICAgICAg
ICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6ICAgcmV0dXJuIEdMX0xVTUlOQU5DRV9BTFBIQTE2
Rl9FWFQ7CisgICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjoKKyAgICAg
ICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9C
WVRFOiAgICAgICAgICAgIHJldHVybiBHTF9SR0I4X09FUzsKKyAgICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX1NIT1JUXzVfNl81OiAgICAgcmV0dXJuIEdMX1JHQjU2NTsKKyAgICAgICAgICBjYXNl
IEdMX0ZMT0FUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjMyRl9FWFQ7CisgICAg
ICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzogICAgICAgICAgIHJldHVybiBHTF9SR0IxNkZf
RVhUOworICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICBVTklNUExF
TUVOVEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQkE6
CisgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfQllURTogICAgICAgICAgICByZXR1cm4gR0xfUkdCQThfT0VTOworICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDogICByZXR1cm4gR0xfUkdCQTQ7CisgICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xOiAgIHJldHVybiBHTF9SR0I1X0ExOwor
ICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdC
QTMyRl9FWFQ7CisgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzogICAgICAgICAgIHJl
dHVybiBHTF9SR0JBMTZGX0VYVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1
bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAgICAgICBzd2l0Y2gg
KHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6ICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfQkdSQThfRVhUOworICAgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUOiAgIHJldHVybiBHTF9CR1JBNF9BTkdMRVg7Cisg
ICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFQ6ICAgcmV0dXJu
IEdMX0JHUjVfQTFfQU5HTEVYOworICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICBjYXNlIEdMX0NPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAgICBjYXNlIEdM
X0RFUFRIX0NPTVBPTkVOVDoKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDogICAgICAgICAgIHJldHVybiBHTF9ERVBUSF9D
T01QT05FTlQxNjsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDogICAgICAgICAgICAg
cmV0dXJuIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzsKKyAgICAgICAgICBkZWZhdWx0OiAgICAg
ICAgICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKKyAgICAgICAgc3dpdGNo
ICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMjRfOF9P
RVM6ICAgIHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAgICAgICAgICBkZWZhdWx0
OiAgICAgICAgICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIH0KKworICAgIHJldHVybiBHTF9OT05FOworfQorCitHTGVudW0gRXh0cmFjdEZvcm1hdChH
TGVudW0gaW50ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAg
ICB7CisgICAgICBjYXNlIEdMX1JHQjU2NTogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBHTF9SR0I7CisgICAgICBjYXNlIEdMX1JHQkE0OiAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBHTF9SR0JBOworICAgICAgY2FzZSBHTF9SR0I1X0ExOiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR0xfUkdCQTsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6ICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjsKKyAgICAgIGNhc2UgR0xfUkdCQThfT0VTOiAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkE7CisgICAgICBjYXNlIEdMX0xVTUlO
QU5DRThfQUxQSEE4X0VYVDogICAgICAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0VfQUxQSEE7Cisg
ICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhUOiAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9M
VU1JTkFOQ0U7CisgICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6ICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBHTF9BTFBIQTsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQx
X0VYVDogICAgcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ7CisgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOiAgIHJldHVybiBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQxX0VYVDsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUM19BTkdMRTogcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU7
CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6IHJldHVybiBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOworICAgICAgY2FzZSBHTF9SR0JBMzJG
X0VYVDogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTsKKyAgICAgIGNhc2UgR0xf
UkdCMzJGX0VYVDogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjsKKyAgICAgIGNh
c2UgR0xfQUxQSEEzMkZfRVhUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0FMUEhBOwor
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOiAgICAgICAgICAgICAgICByZXR1cm4gR0xf
TFVNSU5BTkNFOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUOiAgICAgICAg
ICByZXR1cm4gR0xfTFVNSU5BTkNFX0FMUEhBOworICAgICAgY2FzZSBHTF9SR0JBMTZGX0VYVDog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTsKKyAgICAgIGNhc2UgR0xfUkdCMTZG
X0VYVDogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjsKKyAgICAgIGNhc2UgR0xf
QUxQSEExNkZfRVhUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0FMUEhBOworICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0UxNkZfRVhUOiAgICAgICAgICAgICAgICByZXR1cm4gR0xfTFVNSU5B
TkNFOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOiAgICAgICAgICByZXR1
cm4gR0xfTFVNSU5BTkNFX0FMUEhBOworICAgICAgY2FzZSBHTF9CR1JBOF9FWFQ6ICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfQkdSQV9FWFQ7CisgICAgICBjYXNlIEdMX0RFUFRIX0NP
TVBPTkVOVDE2OiAgICAgICAgICAgICAgIHJldHVybiBHTF9ERVBUSF9DT01QT05FTlQ7CisgICAg
ICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzogICAgICAgICAgIHJldHVybiBHTF9ERVBU
SF9DT01QT05FTlQ7CisgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOiAgICAgICAg
ICAgIHJldHVybiBHTF9ERVBUSF9TVEVOQ0lMX09FUzsKKyAgICAgIGRlZmF1bHQ6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX05PTkU7ICAgLy8gVW5zdXBwb3J0ZWQK
KyAgICB9Cit9CisKK0dMZW51bSBFeHRyYWN0VHlwZShHTGVudW0gaW50ZXJuYWxmb3JtYXQpCit7
CisgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQjU2
NTogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9TSE9SVF81XzZf
NTsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQ7CisgICAgICBjYXNlIEdMX1JHQjVfQTE6ICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xOworICAg
ICAgY2FzZSBHTF9SR0I4X09FUzogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfVU5T
SUdORURfQllURTsKKyAgICAgIGNhc2UgR0xfUkdCQThfT0VTOiAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdMX1VOU0lHTkVEX0JZVEU7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfQUxQ
SEE4X0VYVDogICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9CWVRFOworICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0U4X0VYVDogICAgICAgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfQllU
RTsKKyAgICAgIGNhc2UgR0xfQUxQSEE4X0VYVDogICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdMX1VOU0lHTkVEX0JZVEU7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhU
MV9FWFQ6ICAgIHJldHVybiBHTF9VTlNJR05FRF9CWVRFOworICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQxX0VYVDogICByZXR1cm4gR0xfVU5TSUdORURfQllURTsKKyAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRTogcmV0dXJuIEdMX1VOU0lH
TkVEX0JZVEU7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6
IHJldHVybiBHTF9VTlNJR05FRF9CWVRFOworICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRkxPQVQ7CisgICAgICBjYXNlIEdMX1JHQjMyRl9F
WFQ6ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9GTE9BVDsKKyAgICAgIGNhc2UgR0xf
QUxQSEEzMkZfRVhUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOworICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOiAgICAgICAgICAgICAgICByZXR1cm4gR0xfRkxPQVQ7
CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6ICAgICAgICAgIHJldHVybiBH
TF9GTE9BVDsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6ICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdMX0hBTEZfRkxPQVRfT0VTOworICAgICAgY2FzZSBHTF9SR0IxNkZfRVhUOiAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfSEFMRl9GTE9BVF9PRVM7CisgICAgICBjYXNlIEdM
X0FMUEhBMTZGX0VYVDogICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9IQUxGX0ZMT0FUX09F
UzsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMTZGX0VYVDogICAgICAgICAgICAgICAgcmV0dXJu
IEdMX0hBTEZfRkxPQVRfT0VTOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhU
OiAgICAgICAgICByZXR1cm4gR0xfSEFMRl9GTE9BVF9PRVM7CisgICAgICBjYXNlIEdMX0JHUkE4
X0VYVDogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9CWVRFOworICAg
ICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQxNjogICAgICAgICAgICAgICByZXR1cm4gR0xfVU5T
SUdORURfU0hPUlQ7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzogICAgICAg
ICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlQ7CisgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJ
TDhfT0VTOiAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlRfMjRfOF9PRVM7CisgICAg
ICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9OT05F
OyAgIC8vIFVuc3VwcG9ydGVkCisgICAgfQorfQorCitib29sIElzQ29sb3JSZW5kZXJhYmxlKEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQorICAg
IHsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICBjYXNlIEdMX1JHQjVfQTE6CisgICAgICBj
YXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICBjYXNlIEdMX1JH
QkE4X09FUzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBP
TkVOVDE2OgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKKyAgICAgIGNhc2UgR0xfREVQ
VEgyNF9TVEVOQ0lMOF9PRVM6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIGNhc2UgR0xf
QkdSQThfRVhUOgorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBJc0RlcHRoUmVuZGVyYWJsZShHTGVudW0gaW50ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNo
IChpbnRlcm5hbGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2
OgorICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzoKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICBjYXNlIEdMX1NURU5DSUxfSU5ERVg4OgorICAgICAgY2FzZSBHTF9SR0JBNDoK
KyAgICAgIGNhc2UgR0xfUkdCNV9BMToKKyAgICAgIGNhc2UgR0xfUkdCNTY1OgorICAgICAgY2Fz
ZSBHTF9SR0I4X09FUzoKKyAgICAgIGNhc2UgR0xfUkdCQThfT0VTOgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIElzU3RlbmNpbFJlbmRlcmFibGUoR0xlbnVt
IGludGVybmFsZm9ybWF0KQoreworICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAgewor
ICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKKyAgICAgIGNhc2UgR0xfREVQVEgyNF9TVEVO
Q0lMOF9PRVM6CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgY2FzZSBHTF9SR0JBNDoKKyAg
ICAgIGNhc2UgR0xfUkdCNV9BMToKKyAgICAgIGNhc2UgR0xfUkdCNTY1OgorICAgICAgY2FzZSBH
TF9SR0I4X09FUzoKKyAgICAgIGNhc2UgR0xfUkdCQThfT0VTOgorICAgICAgY2FzZSBHTF9ERVBU
SF9DT01QT05FTlQxNjoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBJc0Zsb2F0MzJGb3JtYXQoR0xpbnQgaW50ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNo
IChpbnRlcm5hbGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQkEzMkZfRVhUOgorICAg
ICAgY2FzZSBHTF9SR0IzMkZfRVhUOgorICAgICAgY2FzZSBHTF9BTFBIQTMyRl9FWFQ6CisgICAg
ICBjYXNlIEdMX0xVTUlOQU5DRTMyRl9FWFQ6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBI
QTMyRl9FWFQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBJc0Zsb2F0MTZGb3JtYXQoR0xpbnQgaW50
ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICB7CisgICAg
ICBjYXNlIEdMX1JHQkExNkZfRVhUOgorICAgICAgY2FzZSBHTF9SR0IxNkZfRVhUOgorICAgICAg
Y2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6Cisg
ICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQ6CisgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordW5z
aWduZWQgaW50IEdldEFscGhhU2l6ZShHTGVudW0gY29sb3JGb3JtYXQpCit7CisgICAgc3dpdGNo
IChjb2xvckZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQkExNkZfRVhUOgorICAgICAg
ICByZXR1cm4gMTY7CisgICAgICBjYXNlIEdMX1JHQkEzMkZfRVhUOgorICAgICAgICByZXR1cm4g
MzI7CisgICAgICBjYXNlIEdMX1JHQkE0OgorICAgICAgICByZXR1cm4gNDsKKyAgICAgIGNhc2Ug
R0xfUkdCQThfT0VTOgorICAgICAgY2FzZSBHTF9CR1JBOF9FWFQ6CisgICAgICAgIHJldHVybiA4
OworICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgICByZXR1cm4gMTsKKyAgICAgIGNhc2Ug
R0xfUkdCOF9PRVM6CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2UgR0xfUkdCMzJG
X0VYVDoKKyAgICAgIGNhc2UgR0xfUkdCMTZGX0VYVDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBH
ZXRSZWRTaXplKEdMZW51bSBjb2xvckZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yRm9ybWF0
KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjE2
Rl9FWFQ6CisgICAgICAgIHJldHVybiAxNjsKKyAgICAgIGNhc2UgR0xfUkdCQTMyRl9FWFQ6Cisg
ICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6CisgICAgICAgIHJldHVybiAzMjsKKyAgICAgIGNhc2Ug
R0xfUkdCQTQ6CisgICAgICAgIHJldHVybiA0OworICAgICAgY2FzZSBHTF9SR0JBOF9PRVM6Cisg
ICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICAg
IHJldHVybiA4OworICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgY2FzZSBHTF9SR0I1NjU6
CisgICAgICAgIHJldHVybiA1OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorfQorCit1bnNpZ25lZCBpbnQgR2V0R3JlZW5TaXplKEdMZW51bSBjb2xvckZvcm1hdCkK
K3sKKyAgICBzd2l0Y2ggKGNvbG9yRm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQTE2
Rl9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6CisgICAgICAgIHJldHVybiAxNjsKKyAg
ICAgIGNhc2UgR0xfUkdCQTMyRl9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6CisgICAg
ICAgIHJldHVybiAzMjsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICAgIHJldHVybiA0Owor
ICAgICAgY2FzZSBHTF9SR0JBOF9PRVM6CisgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAg
IGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICAgIHJldHVybiA4OworICAgICAgY2FzZSBHTF9SR0I1
X0ExOgorICAgICAgICByZXR1cm4gNTsKKyAgICAgIGNhc2UgR0xfUkdCNTY1OgorICAgICAgICBy
ZXR1cm4gNjsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwor
dW5zaWduZWQgaW50IEdldEJsdWVTaXplKEdMZW51bSBjb2xvckZvcm1hdCkKK3sKKyAgICBzd2l0
Y2ggKGNvbG9yRm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6CisgICAg
ICBjYXNlIEdMX1JHQjE2Rl9FWFQ6CisgICAgICAgIHJldHVybiAxNjsKKyAgICAgIGNhc2UgR0xf
UkdCQTMyRl9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6CisgICAgICAgIHJldHVybiAz
MjsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICAgIHJldHVybiA0OworICAgICAgY2FzZSBH
TF9SR0JBOF9PRVM6CisgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgIGNhc2UgR0xfUkdC
OF9PRVM6CisgICAgICAgIHJldHVybiA4OworICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAg
Y2FzZSBHTF9SR0I1NjU6CisgICAgICAgIHJldHVybiA1OworICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgR2V0RGVwdGhTaXplKEdMZW51
bSBkZXB0aEZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGRlcHRoRm9ybWF0KQorICAgIHsKKyAgICAg
IGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6ICAgICAgICByZXR1cm4gMTY7CisgICAgICBjYXNl
IEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzogICAgcmV0dXJuIDMyOworICAgICAgY2FzZSBHTF9E
RVBUSDI0X1NURU5DSUw4X09FUzogICAgIHJldHVybiAyNDsKKyAgICAgIGRlZmF1bHQ6ICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBH
ZXRTdGVuY2lsU2l6ZShHTGVudW0gc3RlbmNpbEZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKHN0ZW5j
aWxGb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzogICAg
IHJldHVybiA4OworICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAwOworICAgIH0KK30KKworYm9vbCBJc1RyaWFuZ2xlTW9kZShHTGVudW0gZHJhd01vZGUpCit7
CisgICAgc3dpdGNoIChkcmF3TW9kZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1RSSUFOR0xFUzoK
KyAgICAgIGNhc2UgR0xfVFJJQU5HTEVfRkFOOgorICAgICAgY2FzZSBHTF9UUklBTkdMRV9TVFJJ
UDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICBjYXNlIEdMX1BPSU5UUzoKKyAgICAgIGNh
c2UgR0xfTElORVM6CisgICAgICBjYXNlIEdMX0xJTkVfTE9PUDoKKyAgICAgIGNhc2UgR0xfTElO
RV9TVFJJUDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFC
TEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30KKworc3RkOjpzdHJpbmcg
Z2V0VGVtcFBhdGgoKQoreworICAgIGNoYXIgcGF0aFtNQVhfUEFUSF07CisgICAgRFdPUkQgcGF0
aExlbiA9IEdldFRlbXBQYXRoQShzaXplb2YocGF0aCkgLyBzaXplb2YocGF0aFswXSksIHBhdGgp
OworICAgIGlmIChwYXRoTGVuID09IDApCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKKyAgICB9CisKKyAgICBVSU5UIHVuaXF1ZSA9
IEdldFRlbXBGaWxlTmFtZUEocGF0aCwgInNoIiwgMCwgcGF0aCk7CisgICAgaWYgKHVuaXF1ZSA9
PSAwKQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
c3RyaW5nKCk7CisgICAgfQorICAgIAorICAgIHJldHVybiBwYXRoOworfQorCit2b2lkIHdyaXRl
RmlsZShjb25zdCBjaGFyKiBwYXRoLCBjb25zdCB2b2lkKiBjb250ZW50LCBzaXplX3Qgc2l6ZSkK
K3sKKyAgICBGSUxFKiBmaWxlID0gZm9wZW4ocGF0aCwgInciKTsKKyAgICBpZiAoIWZpbGUpCisg
ICAgeworICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgZndyaXRlKGNvbnRlbnQsIHNpemVvZihjaGFyKSwgc2l6ZSwgZmlsZSk7CisgICAgZmNsb3Nl
KGZpbGUpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi91
dGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3V0aWxpdGllcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gdXRpbGl0aWVzLmg6IENvbnZlcnNpb24gZnVuY3Rp
b25zIGFuZCBvdGhlciB1dGlsaXR5IHJvdXRpbmVzLgorCisjaWZuZGVmIExJQkdMRVNWMl9VVElM
SVRJRVNfSAorI2RlZmluZSBMSUJHTEVTVjJfVVRJTElUSUVTX0gKKworI2RlZmluZSBHTF9BUElD
QUxMCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisK
KyNpbmNsdWRlIDxzdHJpbmc+CisKK25hbWVzcGFjZSBnbAoreworCitzdHJ1Y3QgQ29sb3I7CisK
K2ludCBVbmlmb3JtQ29tcG9uZW50Q291bnQoR0xlbnVtIHR5cGUpOworR0xlbnVtIFVuaWZvcm1D
b21wb25lbnRUeXBlKEdMZW51bSB0eXBlKTsKK3NpemVfdCBVbmlmb3JtSW50ZXJuYWxTaXplKEdM
ZW51bSB0eXBlKTsKK3NpemVfdCBVbmlmb3JtRXh0ZXJuYWxTaXplKEdMZW51bSB0eXBlKTsKK2lu
dCBWYXJpYWJsZVJvd0NvdW50KEdMZW51bSB0eXBlKTsKK2ludCBWYXJpYWJsZUNvbHVtbkNvdW50
KEdMZW51bSB0eXBlKTsKKworaW50IEFsbG9jYXRlRmlyc3RGcmVlQml0cyh1bnNpZ25lZCBpbnQg
KmJpdHMsIHVuc2lnbmVkIGludCBhbGxvY2F0aW9uU2l6ZSwgdW5zaWduZWQgaW50IGJpdHNTaXpl
KTsKKwordm9pZCBNYWtlVmFsaWRTaXplKGJvb2wgaXNJbWFnZSwgYm9vbCBpc0NvbXByZXNzZWQs
IEdMc2l6ZWkgKnJlcXVlc3RXaWR0aCwgR0xzaXplaSAqcmVxdWVzdEhlaWdodCwgaW50ICpsZXZl
bE9mZnNldCk7CitpbnQgQ29tcHV0ZVBpeGVsU2l6ZShHTGludCBpbnRlcm5hbGZvcm1hdCk7CitH
THNpemVpIENvbXB1dGVQaXRjaChHTHNpemVpIHdpZHRoLCBHTGludCBpbnRlcm5hbGZvcm1hdCwg
R0xpbnQgYWxpZ25tZW50KTsKK0dMc2l6ZWkgQ29tcHV0ZUNvbXByZXNzZWRQaXRjaChHTHNpemVp
IHdpZHRoLCBHTGVudW0gZm9ybWF0KTsKK0dMc2l6ZWkgQ29tcHV0ZUNvbXByZXNzZWRTaXplKEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0KTsKK2Jvb2wgSXNDb21w
cmVzc2VkKEdMZW51bSBmb3JtYXQpOworYm9vbCBJc0RlcHRoVGV4dHVyZShHTGVudW0gZm9ybWF0
KTsKK2Jvb2wgSXNTdGVuY2lsVGV4dHVyZShHTGVudW0gZm9ybWF0KTsKK2Jvb2wgSXNDdWJlbWFw
VGV4dHVyZVRhcmdldChHTGVudW0gdGFyZ2V0KTsKK2Jvb2wgSXNJbnRlcm5hbFRleHR1cmVUYXJn
ZXQoR0xlbnVtIHRhcmdldCk7CitHTGludCBDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSk7CitHTGVudW0gRXh0cmFjdEZvcm1hdChHTGVudW0gaW50
ZXJuYWxmb3JtYXQpOworR0xlbnVtIEV4dHJhY3RUeXBlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCk7
CisKK2Jvb2wgSXNDb2xvclJlbmRlcmFibGUoR0xlbnVtIGludGVybmFsZm9ybWF0KTsKK2Jvb2wg
SXNEZXB0aFJlbmRlcmFibGUoR0xlbnVtIGludGVybmFsZm9ybWF0KTsKK2Jvb2wgSXNTdGVuY2ls
UmVuZGVyYWJsZShHTGVudW0gaW50ZXJuYWxmb3JtYXQpOworCitib29sIElzRmxvYXQzMkZvcm1h
dChHTGludCBpbnRlcm5hbGZvcm1hdCk7Citib29sIElzRmxvYXQxNkZvcm1hdChHTGludCBpbnRl
cm5hbGZvcm1hdCk7CisKK0dMdWludCBHZXRBbHBoYVNpemUoR0xlbnVtIGNvbG9yRm9ybWF0KTsK
K0dMdWludCBHZXRSZWRTaXplKEdMZW51bSBjb2xvckZvcm1hdCk7CitHTHVpbnQgR2V0R3JlZW5T
aXplKEdMZW51bSBjb2xvckZvcm1hdCk7CitHTHVpbnQgR2V0Qmx1ZVNpemUoR0xlbnVtIGNvbG9y
Rm9ybWF0KTsKK0dMdWludCBHZXREZXB0aFNpemUoR0xlbnVtIGRlcHRoRm9ybWF0KTsKK0dMdWlu
dCBHZXRTdGVuY2lsU2l6ZShHTGVudW0gc3RlbmNpbEZvcm1hdCk7Citib29sIElzVHJpYW5nbGVN
b2RlKEdMZW51bSBkcmF3TW9kZSk7CisKK30KKworc3RkOjpzdHJpbmcgZ2V0VGVtcFBhdGgoKTsK
K3ZvaWQgd3JpdGVGaWxlKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVf
dCBzaXplKTsKKworI2VuZGlmICAvLyBMSUJHTEVTVjJfVVRJTElUSUVTX0gKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQmxpdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9C
bGl0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvQmxpdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTk1IEBACisj
aW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJsaXQuY3Bw
OiBTdXJmYWNlIGNvcHkgdXRpbGl0eSBjbGFzcy4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5k
ZXJlci9CbGl0LmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L1JlbmRlclRhcmdldDkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0ZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL1JlbmRlcmJ1ZmZlci5oIgorCituYW1lc3BhY2UKK3sKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvZmxpcHl2cy5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocHMuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2tw
cy5oIgorCitjb25zdCBCWVRFKiBjb25zdCBnX3NoYWRlckNvZGVbXSA9Cit7CisgICAgZ192czIw
X3N0YW5kYXJkdnMsCisgICAgZ192czIwX2ZsaXB5dnMsCisgICAgZ19wczIwX3Bhc3N0aHJvdWdo
cHMsCisgICAgZ19wczIwX2x1bWluYW5jZXBzLAorICAgIGdfcHMyMF9jb21wb25lbnRtYXNrcHMK
K307CisKK2NvbnN0IHNpemVfdCBnX3NoYWRlclNpemVbXSA9Cit7CisgICAgc2l6ZW9mKGdfdnMy
MF9zdGFuZGFyZHZzKSwKKyAgICBzaXplb2YoZ192czIwX2ZsaXB5dnMpLAorICAgIHNpemVvZihn
X3BzMjBfcGFzc3Rocm91Z2hwcyksCisgICAgc2l6ZW9mKGdfcHMyMF9sdW1pbmFuY2VwcyksCisg
ICAgc2l6ZW9mKGdfcHMyMF9jb21wb25lbnRtYXNrcHMpCit9OworfQorCituYW1lc3BhY2UgcngK
K3sKK0JsaXQ6OkJsaXQocng6OlJlbmRlcmVyOSAqcmVuZGVyZXIpCisgIDogbVJlbmRlcmVyKHJl
bmRlcmVyKSwgbVF1YWRWZXJ0ZXhCdWZmZXIoTlVMTCksIG1RdWFkVmVydGV4RGVjbGFyYXRpb24o
TlVMTCksIG1TYXZlZFN0YXRlQmxvY2soTlVMTCksIG1TYXZlZFJlbmRlclRhcmdldChOVUxMKSwg
bVNhdmVkRGVwdGhTdGVuY2lsKE5VTEwpCit7CisgICAgaW5pdEdlb21ldHJ5KCk7CisgICAgbWVt
c2V0KG1Db21waWxlZFNoYWRlcnMsIDAsIHNpemVvZihtQ29tcGlsZWRTaGFkZXJzKSk7Cit9CisK
K0JsaXQ6On5CbGl0KCkKK3sKKyAgICBpZiAobVNhdmVkU3RhdGVCbG9jaykgbVNhdmVkU3RhdGVC
bG9jay0+UmVsZWFzZSgpOworICAgIGlmIChtUXVhZFZlcnRleEJ1ZmZlcikgbVF1YWRWZXJ0ZXhC
dWZmZXItPlJlbGVhc2UoKTsKKyAgICBpZiAobVF1YWRWZXJ0ZXhEZWNsYXJhdGlvbikgbVF1YWRW
ZXJ0ZXhEZWNsYXJhdGlvbi0+UmVsZWFzZSgpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBT
SEFERVJfQ09VTlQ7IGkrKykKKyAgICB7CisgICAgICAgIGlmIChtQ29tcGlsZWRTaGFkZXJzW2ld
KQorICAgICAgICB7CisgICAgICAgICAgICBtQ29tcGlsZWRTaGFkZXJzW2ldLT5SZWxlYXNlKCk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQmxpdDo6aW5pdEdlb21ldHJ5KCkKK3sKKyAg
ICBzdGF0aWMgY29uc3QgZmxvYXQgcXVhZFtdID0KKyAgICB7CisgICAgICAgIC0xLCAtMSwKKyAg
ICAgICAgLTEsICAxLAorICAgICAgICAgMSwgLTEsCisgICAgICAgICAxLCAgMQorICAgIH07CisK
KyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwor
CisgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVZlcnRleEJ1ZmZlcihzaXplb2Yo
cXVhZCksIEQzRFVTQUdFX1dSSVRFT05MWSwgMCwgRDNEUE9PTF9ERUZBVUxULCAmbVF1YWRWZXJ0
ZXhCdWZmZXIsIE5VTEwpOworCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0g
RV9PVVRPRk1FTU9SWSk7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgfQorCisgICAgdm9pZCAqbG9ja1B0ciA9IE5VTEw7CisgICAgcmVzdWx0ID0gbVF1
YWRWZXJ0ZXhCdWZmZXItPkxvY2soMCwgMCwgJmxvY2tQdHIsIDApOworCisgICAgaWYgKEZBSUxF
RChyZXN1bHQpIHx8IGxvY2tQdHIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIEFTU0VSVChyZXN1
bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkp
OworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKwor
ICAgIG1lbWNweShsb2NrUHRyLCBxdWFkLCBzaXplb2YocXVhZCkpOworICAgIG1RdWFkVmVydGV4
QnVmZmVyLT5VbmxvY2soKTsKKworICAgIHN0YXRpYyBjb25zdCBEM0RWRVJURVhFTEVNRU5UOSBl
bGVtZW50c1tdID0KKyAgICB7CisgICAgICAgIHsgMCwgMCwgRDNEREVDTFRZUEVfRkxPQVQyLCBE
M0RERUNMTUVUSE9EX0RFRkFVTFQsIEQzRERFQ0xVU0FHRV9QT1NJVElPTiwgMCB9LAorICAgICAg
ICBEM0RERUNMX0VORCgpCisgICAgfTsKKworICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVmVy
dGV4RGVjbGFyYXRpb24oZWxlbWVudHMsICZtUXVhZFZlcnRleERlY2xhcmF0aW9uKTsKKworICAg
IGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNE
RVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOworICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordGVtcGxh
dGUgPGNsYXNzIEQzRFNoYWRlclR5cGU+Citib29sIEJsaXQ6OnNldFNoYWRlcihTaGFkZXJJZCBz
b3VyY2UsIGNvbnN0IGNoYXIgKnByb2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICBEM0RTaGFk
ZXJUeXBlICoocng6OlJlbmRlcmVyOTo6KmNyZWF0ZVNoYWRlcikoY29uc3QgRFdPUkQgKiwgc2l6
ZV90IGxlbmd0aCksCisgICAgICAgICAgICAgICAgICAgICBIUkVTVUxUIChXSU5BUEkgSURpcmVj
dDNERGV2aWNlOTo6KnNldFNoYWRlcikoRDNEU2hhZGVyVHlwZSopKQoreworICAgIElEaXJlY3Qz
RERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICBEM0RTaGFk
ZXJUeXBlICpzaGFkZXI7CisKKyAgICBpZiAobUNvbXBpbGVkU2hhZGVyc1tzb3VyY2VdICE9IE5V
TEwpCisgICAgeworICAgICAgICBzaGFkZXIgPSBzdGF0aWNfY2FzdDxEM0RTaGFkZXJUeXBlKj4o
bUNvbXBpbGVkU2hhZGVyc1tzb3VyY2VdKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgY29uc3QgQllURSogc2hhZGVyQ29kZSA9IGdfc2hhZGVyQ29kZVtzb3VyY2VdOworICAgICAg
ICBzaXplX3Qgc2hhZGVyU2l6ZSA9IGdfc2hhZGVyU2l6ZVtzb3VyY2VdOworCisgICAgICAgIHNo
YWRlciA9IChtUmVuZGVyZXItPipjcmVhdGVTaGFkZXIpKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
RFdPUkQqPihzaGFkZXJDb2RlKSwgc2hhZGVyU2l6ZSk7CisgICAgICAgIGlmICghc2hhZGVyKQor
ICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIGZvciBi
bGl0IG9wZXJhdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisK
KyAgICAgICAgbUNvbXBpbGVkU2hhZGVyc1tzb3VyY2VdID0gc2hhZGVyOworICAgIH0KKworICAg
IEhSRVNVTFQgaHIgPSAoZGV2aWNlLT4qc2V0U2hhZGVyKShzaGFkZXIpOworCisgICAgaWYgKEZB
SUxFRChocikpCisgICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byBzZXQgc2hhZGVyIGZvciBi
bGl0IG9wZXJhdGlvbiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgQmxpdDo6c2V0VmVydGV4U2hhZGVyKFNoYWRlcklkIHNoYWRl
cikKK3sKKyAgICByZXR1cm4gc2V0U2hhZGVyPElEaXJlY3QzRFZlcnRleFNoYWRlcjk+KHNoYWRl
ciwgInZzXzJfMCIsICZyeDo6UmVuZGVyZXI5OjpjcmVhdGVWZXJ0ZXhTaGFkZXIsICZJRGlyZWN0
M0REZXZpY2U5OjpTZXRWZXJ0ZXhTaGFkZXIpOworfQorCitib29sIEJsaXQ6OnNldFBpeGVsU2hh
ZGVyKFNoYWRlcklkIHNoYWRlcikKK3sKKyAgICByZXR1cm4gc2V0U2hhZGVyPElEaXJlY3QzRFBp
eGVsU2hhZGVyOT4oc2hhZGVyLCAicHNfMl8wIiwgJnJ4OjpSZW5kZXJlcjk6OmNyZWF0ZVBpeGVs
U2hhZGVyLCAmSURpcmVjdDNERGV2aWNlOTo6U2V0UGl4ZWxTaGFkZXIpOworfQorCitSRUNUIEJs
aXQ6OmdldFN1cmZhY2VSZWN0KElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlKSBjb25zdAorewor
ICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOworICAgIHN1cmZhY2UtPkdldERlc2MoJmRlc2MpOwor
CisgICAgUkVDVCByZWN0OworICAgIHJlY3QubGVmdCA9IDA7CisgICAgcmVjdC50b3AgPSAwOwor
ICAgIHJlY3QucmlnaHQgPSBkZXNjLldpZHRoOworICAgIHJlY3QuYm90dG9tID0gZGVzYy5IZWln
aHQ7CisKKyAgICByZXR1cm4gcmVjdDsKK30KKworYm9vbCBCbGl0Ojpib3hGaWx0ZXIoSURpcmVj
dDNEU3VyZmFjZTkgKnNvdXJjZSwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpCit7CisgICAgSURp
cmVjdDNEVGV4dHVyZTkgKnRleHR1cmUgPSBjb3B5U3VyZmFjZVRvVGV4dHVyZShzb3VyY2UsIGdl
dFN1cmZhY2VSZWN0KHNvdXJjZSkpOworICAgIGlmICghdGV4dHVyZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBt
UmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgc2F2ZVN0YXRlKCk7CisKKyAgICBkZXZpY2Ut
PlNldFRleHR1cmUoMCwgdGV4dHVyZSk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJUYXJnZXQoMCwg
ZGVzdCk7CisKKyAgICBzZXRWZXJ0ZXhTaGFkZXIoU0hBREVSX1ZTX1NUQU5EQVJEKTsKKyAgICBz
ZXRQaXhlbFNoYWRlcihTSEFERVJfUFNfUEFTU1RIUk9VR0gpOworCisgICAgc2V0Q29tbW9uQmxp
dFN0YXRlKCk7CisgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNEU0FNUF9NSU5GSUxU
RVIsIEQzRFRFWEZfTElORUFSKTsKKyAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZSgwLCBEM0RT
QU1QX01BR0ZJTFRFUiwgRDNEVEVYRl9MSU5FQVIpOworCisgICAgc2V0Vmlld3BvcnQoZ2V0U3Vy
ZmFjZVJlY3QoZGVzdCksIDAsIDApOworCisgICAgcmVuZGVyKCk7CisKKyAgICB0ZXh0dXJlLT5S
ZWxlYXNlKCk7CisKKyAgICByZXN0b3JlU3RhdGUoKTsKKworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIEJsaXQ6OmNvcHkoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgUkVD
VCAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIEdMaW50IGxldmVsKQor
eworICAgIFJlbmRlclRhcmdldDkgKnJlbmRlclRhcmdldCA9IE5VTEw7CisgICAgSURpcmVjdDNE
U3VyZmFjZTkgKnNvdXJjZSA9IE5VTEw7CisgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqY29sb3JidWZm
ZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoMCk7CisKKyAgICBpZiAoY29sb3JidWZm
ZXIpCisgICAgeworICAgICAgICByZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQ5OjptYWtlUmVu
ZGVyVGFyZ2V0OShjb2xvcmJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAgIH0KKyAgICAK
KyAgICBpZiAocmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVuZGVyVGFy
Z2V0LT5nZXRTdXJmYWNlKCk7CisgICAgfQorCisgICAgaWYgKCFzb3VyY2UpCisgICAgeworICAg
ICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRhcmdldC4iKTsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisg
ICAgVGV4dHVyZVN0b3JhZ2U5XzJEICpzdG9yYWdlOSA9IFRleHR1cmVTdG9yYWdlOV8yRDo6bWFr
ZVRleHR1cmVTdG9yYWdlOV8yRChzdG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7CisgICAg
SURpcmVjdDNEU3VyZmFjZTkgKmRlc3RTdXJmYWNlID0gc3RvcmFnZTktPmdldFN1cmZhY2VMZXZl
bChsZXZlbCwgdHJ1ZSk7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgCisgICAg
aWYgKGRlc3RTdXJmYWNlKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gY29weShzb3VyY2UsIHNv
dXJjZVJlY3QsIGRlc3RGb3JtYXQsIHhvZmZzZXQsIHlvZmZzZXQsIGRlc3RTdXJmYWNlKTsKKyAg
ICAgICAgZGVzdFN1cmZhY2UtPlJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBzb3VyY2UtPlJlbGVh
c2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIEJsaXQ6OmNvcHkoZ2w6OkZyYW1l
YnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgUkVDVCAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RG
b3JtYXQsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIFRleHR1cmVTdG9yYWdlSW50ZXJm
YWNlQ3ViZSAqc3RvcmFnZSwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpCit7CisgICAgUmVu
ZGVyVGFyZ2V0OSAqcmVuZGVyVGFyZ2V0ID0gTlVMTDsKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAq
c291cmNlID0gTlVMTDsKKyAgICBnbDo6UmVuZGVyYnVmZmVyICpjb2xvcmJ1ZmZlciA9IGZyYW1l
YnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcigwKTsKKworICAgIGlmIChjb2xvcmJ1ZmZlcikKKyAgICB7
CisgICAgICAgIHJlbmRlclRhcmdldCA9IFJlbmRlclRhcmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5
KGNvbG9yYnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKSk7CisgICAgfQorICAgIAorICAgIGlmIChy
ZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICBzb3VyY2UgPSByZW5kZXJUYXJnZXQtPmdldFN1
cmZhY2UoKTsKKyAgICB9CisKKyAgICBpZiAoIXNvdXJjZSkKKyAgICB7CisgICAgICAgIEVSUigi
RmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0LiIpOworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICB9CisKKyAgICBUZXh0dXJl
U3RvcmFnZTlfQ3ViZSAqc3RvcmFnZTkgPSBUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6bWFrZVRleHR1
cmVTdG9yYWdlOV9DdWJlKHN0b3JhZ2UtPmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsKKyAgICBJRGly
ZWN0M0RTdXJmYWNlOSAqZGVzdFN1cmZhY2UgPSBzdG9yYWdlOS0+Z2V0Q3ViZU1hcFN1cmZhY2Uo
dGFyZ2V0LCBsZXZlbCwgdHJ1ZSk7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKworICAgIGlm
IChkZXN0U3VyZmFjZSkKKyAgICB7CisgICAgICAgIHJlc3VsdCA9IGNvcHkoc291cmNlLCBzb3Vy
Y2VSZWN0LCBkZXN0Rm9ybWF0LCB4b2Zmc2V0LCB5b2Zmc2V0LCBkZXN0U3VyZmFjZSk7CisgICAg
ICAgIGRlc3RTdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgfQorCisgICAgc291cmNlLT5SZWxlYXNl
KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBCbGl0Ojpjb3B5KElEaXJlY3QzRFN1
cmZhY2U5ICpzb3VyY2UsIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0
LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCkK
K3sKKyAgICBpZiAoIWRlc3QpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsK
KworICAgIEQzRFNVUkZBQ0VfREVTQyBzb3VyY2VEZXNjOworICAgIEQzRFNVUkZBQ0VfREVTQyBk
ZXN0RGVzYzsKKyAgICBzb3VyY2UtPkdldERlc2MoJnNvdXJjZURlc2MpOworICAgIGRlc3QtPkdl
dERlc2MoJmRlc3REZXNjKTsKKworICAgIGlmIChzb3VyY2VEZXNjLkZvcm1hdCA9PSBkZXN0RGVz
Yy5Gb3JtYXQgJiYgZGVzdERlc2MuVXNhZ2UgJiBEM0RVU0FHRV9SRU5ERVJUQVJHRVQgJiYKKyAg
ICAgICAgZDNkOV9nbDo6SXNGb3JtYXRDaGFubmVsRXF1aXZhbGVudChkZXN0RGVzYy5Gb3JtYXQs
IGRlc3RGb3JtYXQpKSAgIC8vIENhbiB1c2UgU3RyZXRjaFJlY3QKKyAgICB7CisgICAgICAgIFJF
Q1QgZGVzdFJlY3QgPSB7eG9mZnNldCwgeW9mZnNldCwgeG9mZnNldCArIChzb3VyY2VSZWN0LnJp
Z2h0IC0gc291cmNlUmVjdC5sZWZ0KSwgeW9mZnNldCArIChzb3VyY2VSZWN0LmJvdHRvbSAtIHNv
dXJjZVJlY3QudG9wKX07CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5TdHJldGNo
UmVjdChzb3VyY2UsICZzb3VyY2VSZWN0LCBkZXN0LCAmZGVzdFJlY3QsIEQzRFRFWEZfUE9JTlQp
OworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9P
VVRPRk1FTU9SWSk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlksIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBy
ZXR1cm4gZm9ybWF0Q29udmVydChzb3VyY2UsIHNvdXJjZVJlY3QsIGRlc3RGb3JtYXQsIHhvZmZz
ZXQsIHlvZmZzZXQsIGRlc3QpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBC
bGl0Ojpmb3JtYXRDb252ZXJ0KElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIGNvbnN0IFJFQ1Qg
JnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCkKK3sKKyAgICBJRGlyZWN0M0RUZXh0dXJlOSAq
dGV4dHVyZSA9IGNvcHlTdXJmYWNlVG9UZXh0dXJlKHNvdXJjZSwgc291cmNlUmVjdCk7CisgICAg
aWYgKCF0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAg
ICBzYXZlU3RhdGUoKTsKKworICAgIGRldmljZS0+U2V0VGV4dHVyZSgwLCB0ZXh0dXJlKTsKKyAg
ICBkZXZpY2UtPlNldFJlbmRlclRhcmdldCgwLCBkZXN0KTsKKworICAgIHNldFZpZXdwb3J0KHNv
dXJjZVJlY3QsIHhvZmZzZXQsIHlvZmZzZXQpOworCisgICAgc2V0Q29tbW9uQmxpdFN0YXRlKCk7
CisgICAgaWYgKHNldEZvcm1hdENvbnZlcnRTaGFkZXJzKGRlc3RGb3JtYXQpKQorICAgIHsKKyAg
ICAgICAgcmVuZGVyKCk7CisgICAgfQorCisgICAgdGV4dHVyZS0+UmVsZWFzZSgpOworCisgICAg
cmVzdG9yZVN0YXRlKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCbGl0OjpzZXRG
b3JtYXRDb252ZXJ0U2hhZGVycyhHTGVudW0gZGVzdEZvcm1hdCkKK3sKKyAgICBib29sIG9rYXkg
PSBzZXRWZXJ0ZXhTaGFkZXIoU0hBREVSX1ZTX1NUQU5EQVJEKTsKKworICAgIHN3aXRjaCAoZGVz
dEZvcm1hdCkKKyAgICB7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgY2Fz
ZSBHTF9SR0JBOgorICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgIGNhc2UgR0xfUkdCOgor
ICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgb2theSA9IG9rYXkgJiYgc2V0UGl4ZWxTaGFk
ZXIoU0hBREVSX1BTX0NPTVBPTkVOVE1BU0spOworICAgICAgICBicmVhazsKKworICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0U6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKKyAgICAgICAg
b2theSA9IG9rYXkgJiYgc2V0UGl4ZWxTaGFkZXIoU0hBREVSX1BTX0xVTUlOQU5DRSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICghb2theSkKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBlbnVtIHsgWCA9IDAsIFkgPSAxLCBaID0gMiwgVyA9IDMg
fTsKKworICAgIC8vIFRoZSBtZWFuaW5nIG9mIHRoaXMgY29uc3RhbnQgZGVwZW5kcyBvbiB0aGUg
c2hhZGVyIHRoYXQgd2FzIHNlbGVjdGVkLgorICAgIC8vIFNlZSB0aGUgc2hhZGVyIGFzc2VtYmx5
IGNvZGUgYWJvdmUgZm9yIGRldGFpbHMuCisgICAgZmxvYXQgcHNDb25zdDBbNF0gPSB7IDAsIDAs
IDAsIDAgfTsKKworICAgIHN3aXRjaCAoZGVzdEZvcm1hdCkKKyAgICB7CisgICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOworICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgY2FzZSBHTF9CR1JB
X0VYVDoKKyAgICAgICAgcHNDb25zdDBbWF0gPSAxOworICAgICAgICBwc0NvbnN0MFtaXSA9IDE7
CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgcHNDb25zdDBb
WF0gPSAxOworICAgICAgICBwc0NvbnN0MFtXXSA9IDE7CisgICAgICAgIGJyZWFrOworCisgICAg
ICBjYXNlIEdMX0FMUEhBOgorICAgICAgICBwc0NvbnN0MFtaXSA9IDE7CisgICAgICAgIGJyZWFr
OworCisgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgcHNDb25zdDBbWV0gPSAxOwor
ICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAg
IHBzQ29uc3QwW1hdID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbVJlbmRlcmVy
LT5nZXREZXZpY2UoKS0+U2V0UGl4ZWxTaGFkZXJDb25zdGFudEYoMCwgcHNDb25zdDAsIDEpOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0lEaXJlY3QzRFRleHR1cmU5ICpCbGl0Ojpjb3B5U3Vy
ZmFjZVRvVGV4dHVyZShJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSwgY29uc3QgUkVDVCAmc291
cmNlUmVjdCkKK3sKKyAgICBpZiAoIXN1cmZhY2UpCisgICAgeworICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICB9CisKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdl
dERldmljZSgpOworCisgICAgRDNEU1VSRkFDRV9ERVNDIHNvdXJjZURlc2M7CisgICAgc3VyZmFj
ZS0+R2V0RGVzYygmc291cmNlRGVzYyk7CisKKyAgICAvLyBDb3B5IHRoZSByZW5kZXIgdGFyZ2V0
IGludG8gYSB0ZXh0dXJlCisgICAgSURpcmVjdDNEVGV4dHVyZTkgKnRleHR1cmU7CisgICAgSFJF
U1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUoc291cmNlUmVjdC5yaWdodCAtIHNv
dXJjZVJlY3QubGVmdCwgc291cmNlUmVjdC5ib3R0b20gLSBzb3VyY2VSZWN0LnRvcCwgMSwgRDNE
VVNBR0VfUkVOREVSVEFSR0VULCBzb3VyY2VEZXNjLkZvcm1hdCwgRDNEUE9PTF9ERUZBVUxULCAm
dGV4dHVyZSwgTlVMTCk7CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAg
ICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBF
X09VVE9GTUVNT1JZKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
LCAoSURpcmVjdDNEVGV4dHVyZTkqKU5VTEwpOworICAgIH0KKworICAgIElEaXJlY3QzRFN1cmZh
Y2U5ICp0ZXh0dXJlU3VyZmFjZTsKKyAgICByZXN1bHQgPSB0ZXh0dXJlLT5HZXRTdXJmYWNlTGV2
ZWwoMCwgJnRleHR1cmVTdXJmYWNlKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVz
dWx0ID09IEVfT1VUT0ZNRU1PUlkpOworICAgICAgICB0ZXh0dXJlLT5SZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgKElEaXJlY3QzRFRleHR1cmU5
KilOVUxMKTsKKyAgICB9CisKKyAgICBtUmVuZGVyZXItPmVuZFNjZW5lKCk7CisgICAgcmVzdWx0
ID0gZGV2aWNlLT5TdHJldGNoUmVjdChzdXJmYWNlLCAmc291cmNlUmVjdCwgdGV4dHVyZVN1cmZh
Y2UsIE5VTEwsIEQzRFRFWEZfTk9ORSk7CisKKyAgICB0ZXh0dXJlU3VyZmFjZS0+UmVsZWFzZSgp
OworCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlc3Vs
dCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7
CisgICAgICAgIHRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCAoSURpcmVjdDNEVGV4dHVyZTkqKU5VTEwpOworICAgIH0KKworICAg
IHJldHVybiB0ZXh0dXJlOworfQorCit2b2lkIEJsaXQ6OnNldFZpZXdwb3J0KGNvbnN0IFJFQ1Qg
JnNvdXJjZVJlY3QsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQpCit7CisgICAgSURpcmVj
dDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIEQzRFZJ
RVdQT1JUOSB2cDsKKyAgICB2cC5YICAgICAgPSB4b2Zmc2V0OworICAgIHZwLlkgICAgICA9IHlv
ZmZzZXQ7CisgICAgdnAuV2lkdGggID0gc291cmNlUmVjdC5yaWdodCAtIHNvdXJjZVJlY3QubGVm
dDsKKyAgICB2cC5IZWlnaHQgPSBzb3VyY2VSZWN0LmJvdHRvbSAtIHNvdXJjZVJlY3QudG9wOwor
ICAgIHZwLk1pblogICA9IDAuMGY7CisgICAgdnAuTWF4WiAgID0gMS4wZjsKKyAgICBkZXZpY2Ut
PlNldFZpZXdwb3J0KCZ2cCk7CisKKyAgICBmbG9hdCBoYWxmUGl4ZWxBZGp1c3RbNF0gPSB7IC0x
LjBmL3ZwLldpZHRoLCAxLjBmL3ZwLkhlaWdodCwgMCwgMCB9OworICAgIGRldmljZS0+U2V0VmVy
dGV4U2hhZGVyQ29uc3RhbnRGKDAsIGhhbGZQaXhlbEFkanVzdCwgMSk7Cit9CisKK3ZvaWQgQmxp
dDo6c2V0Q29tbW9uQmxpdFN0YXRlKCkKK3sKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2Ug
PSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgZGV2aWNlLT5TZXREZXB0aFN0ZW5jaWxT
dXJmYWNlKE5VTEwpOworCisgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19GSUxMTU9E
RSwgRDNERklMTF9TT0xJRCk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19BTFBI
QVRFU1RFTkFCTEUsIEZBTFNFKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0FM
UEhBQkxFTkRFTkFCTEUsIEZBTFNFKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJT
X0NVTExNT0RFLCBEM0RDVUxMX05PTkUpOworICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfQ0xJUFBMQU5FRU5BQkxFLCAwKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJT
X0NPTE9SV1JJVEVFTkFCTEUsIEQzRENPTE9SV1JJVEVFTkFCTEVfQUxQSEEgfCBEM0RDT0xPUldS
SVRFRU5BQkxFX0JMVUUgfCBEM0RDT0xPUldSSVRFRU5BQkxFX0dSRUVOIHwgRDNEQ09MT1JXUklU
RUVOQUJMRV9SRUQpOworICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1JHQldSSVRF
RU5BQkxFLCBGQUxTRSk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TQ0lTU09S
VEVTVEVOQUJMRSwgRkFMU0UpOworCisgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNE
U0FNUF9NQUdGSUxURVIsIEQzRFRFWEZfUE9JTlQpOworICAgIGRldmljZS0+U2V0U2FtcGxlclN0
YXRlKDAsIEQzRFNBTVBfTUlORklMVEVSLCBEM0RURVhGX1BPSU5UKTsKKyAgICBkZXZpY2UtPlNl
dFNhbXBsZXJTdGF0ZSgwLCBEM0RTQU1QX1NSR0JURVhUVVJFLCBGQUxTRSk7CisgICAgZGV2aWNl
LT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNEU0FNUF9BRERSRVNTVSwgRDNEVEFERFJFU1NfQ0xBTVAp
OworICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfQUREUkVTU1YsIEQzRFRB
RERSRVNTX0NMQU1QKTsKKworICAgIFJFQ1Qgc2Npc3NvclJlY3QgPSB7MH07ICAgLy8gU2Npc3Nv
cmluZyBpcyBkaXNhYmxlZCBmb3IgZmxpcHBpbmcsIGJ1dCB3ZSBuZWVkIHRoaXMgdG8gY2FwdHVy
ZSBhbmQgcmVzdG9yZSB0aGUgb2xkIHJlY3RhbmdsZQorICAgIGRldmljZS0+U2V0U2Npc3NvclJl
Y3QoJnNjaXNzb3JSZWN0KTsKKworICAgIGZvcihpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRF
WF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBkZXZpY2UtPlNldFN0cmVhbVNvdXJjZUZy
ZXEoaSwgMSk7CisgICAgfQorfQorCit2b2lkIEJsaXQ6OnJlbmRlcigpCit7CisgICAgSURpcmVj
dDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIEhSRVNV
TFQgaHIgPSBkZXZpY2UtPlNldFN0cmVhbVNvdXJjZSgwLCBtUXVhZFZlcnRleEJ1ZmZlciwgMCwg
MiAqIHNpemVvZihmbG9hdCkpOworICAgIGhyID0gZGV2aWNlLT5TZXRWZXJ0ZXhEZWNsYXJhdGlv
bihtUXVhZFZlcnRleERlY2xhcmF0aW9uKTsKKworICAgIG1SZW5kZXJlci0+c3RhcnRTY2VuZSgp
OworICAgIGhyID0gZGV2aWNlLT5EcmF3UHJpbWl0aXZlKEQzRFBUX1RSSUFOR0xFU1RSSVAsIDAs
IDIpOworfQorCit2b2lkIEJsaXQ6OnNhdmVTdGF0ZSgpCit7CisgICAgSURpcmVjdDNERGV2aWNl
OSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIEhSRVNVTFQgaHI7CisK
KyAgICBkZXZpY2UtPkdldERlcHRoU3RlbmNpbFN1cmZhY2UoJm1TYXZlZERlcHRoU3RlbmNpbCk7
CisgICAgZGV2aWNlLT5HZXRSZW5kZXJUYXJnZXQoMCwgJm1TYXZlZFJlbmRlclRhcmdldCk7CisK
KyAgICBpZiAobVNhdmVkU3RhdGVCbG9jayA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgaHIgPSBk
ZXZpY2UtPkJlZ2luU3RhdGVCbG9jaygpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSB8
fCBociA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBociA9PSBFX09VVE9GTUVNT1JZKTsK
KworICAgICAgICBzZXRDb21tb25CbGl0U3RhdGUoKTsKKworICAgICAgICBzdGF0aWMgY29uc3Qg
ZmxvYXQgZHVtbXlDb25zdFs0XSA9IHsgMCwgMCwgMCwgMCB9OworCisgICAgICAgIGRldmljZS0+
U2V0VmVydGV4U2hhZGVyKE5VTEwpOworICAgICAgICBkZXZpY2UtPlNldFZlcnRleFNoYWRlckNv
bnN0YW50RigwLCBkdW1teUNvbnN0LCAxKTsKKyAgICAgICAgZGV2aWNlLT5TZXRQaXhlbFNoYWRl
cihOVUxMKTsKKyAgICAgICAgZGV2aWNlLT5TZXRQaXhlbFNoYWRlckNvbnN0YW50RigwLCBkdW1t
eUNvbnN0LCAxKTsKKworICAgICAgICBEM0RWSUVXUE9SVDkgZHVtbXlWcDsKKyAgICAgICAgZHVt
bXlWcC5YID0gMDsKKyAgICAgICAgZHVtbXlWcC5ZID0gMDsKKyAgICAgICAgZHVtbXlWcC5XaWR0
aCA9IDE7CisgICAgICAgIGR1bW15VnAuSGVpZ2h0ID0gMTsKKyAgICAgICAgZHVtbXlWcC5NaW5a
ID0gMDsKKyAgICAgICAgZHVtbXlWcC5NYXhaID0gMTsKKworICAgICAgICBkZXZpY2UtPlNldFZp
ZXdwb3J0KCZkdW1teVZwKTsKKworICAgICAgICBkZXZpY2UtPlNldFRleHR1cmUoMCwgTlVMTCk7
CisKKyAgICAgICAgZGV2aWNlLT5TZXRTdHJlYW1Tb3VyY2UoMCwgbVF1YWRWZXJ0ZXhCdWZmZXIs
IDAsIDApOworCisgICAgICAgIGRldmljZS0+U2V0VmVydGV4RGVjbGFyYXRpb24obVF1YWRWZXJ0
ZXhEZWNsYXJhdGlvbik7CisKKyAgICAgICAgaHIgPSBkZXZpY2UtPkVuZFN0YXRlQmxvY2soJm1T
YXZlZFN0YXRlQmxvY2spOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSB8fCBociA9PSBE
M0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBociA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICB9CisK
KyAgICBBU1NFUlQobVNhdmVkU3RhdGVCbG9jayAhPSBOVUxMKTsKKworICAgIGlmIChtU2F2ZWRT
dGF0ZUJsb2NrICE9IE5VTEwpCisgICAgeworICAgICAgICBociA9IG1TYXZlZFN0YXRlQmxvY2st
PkNhcHR1cmUoKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOworICAgIH0KK30KKwor
dm9pZCBCbGl0OjpyZXN0b3JlU3RhdGUoKQoreworICAgIElEaXJlY3QzRERldmljZTkgKmRldmlj
ZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICBkZXZpY2UtPlNldERlcHRoU3RlbmNp
bFN1cmZhY2UobVNhdmVkRGVwdGhTdGVuY2lsKTsKKyAgICBpZiAobVNhdmVkRGVwdGhTdGVuY2ls
ICE9IE5VTEwpCisgICAgeworICAgICAgICBtU2F2ZWREZXB0aFN0ZW5jaWwtPlJlbGVhc2UoKTsK
KyAgICAgICAgbVNhdmVkRGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICB9CisKKyAgICBkZXZpY2Ut
PlNldFJlbmRlclRhcmdldCgwLCBtU2F2ZWRSZW5kZXJUYXJnZXQpOworICAgIGlmIChtU2F2ZWRS
ZW5kZXJUYXJnZXQgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIG1TYXZlZFJlbmRlclRhcmdldC0+
UmVsZWFzZSgpOworICAgICAgICBtU2F2ZWRSZW5kZXJUYXJnZXQgPSBOVUxMOworICAgIH0KKwor
ICAgIEFTU0VSVChtU2F2ZWRTdGF0ZUJsb2NrICE9IE5VTEwpOworCisgICAgaWYgKG1TYXZlZFN0
YXRlQmxvY2sgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIG1TYXZlZFN0YXRlQmxvY2stPkFwcGx5
KCk7CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0JsaXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQmxpdC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDk0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBCbGl0LmNwcDog
U3VyZmFjZSBjb3B5IHV0aWxpdHkgY2xhc3MuCisKKyNpZm5kZWYgTElCR0xFU1YyX0JMSVRfSF8K
KyNkZWZpbmUgTElCR0xFU1YyX0JMSVRfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxz
LmgiCisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgRnJhbWVidWZmZXI7Cit9CisKK25hbWVzcGFj
ZSByeAoreworY2xhc3MgUmVuZGVyZXI5OworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2Uy
RDsKK2NsYXNzIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTsKKworY2xhc3MgQmxpdAorewor
ICBwdWJsaWM6CisgICAgZXhwbGljaXQgQmxpdChSZW5kZXJlcjkgKnJlbmRlcmVyKTsKKyAgICB+
QmxpdCgpOworCisgICAgLy8gQ29weSBmcm9tIHNvdXJjZSBzdXJmYWNlIHRvIGRlc3Qgc3VyZmFj
ZS4KKyAgICAvLyBzb3VyY2VSZWN0LCB4b2Zmc2V0LCB5b2Zmc2V0IGFyZSBpbiBEM0QgY29vcmRp
bmF0ZXMgKDAsMCBpbiB1cHBlci1sZWZ0KQorICAgIGJvb2wgY29weShnbDo6RnJhbWVidWZmZXIg
KmZyYW1lYnVmZmVyLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwg
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAq
c3RvcmFnZSwgR0xpbnQgbGV2ZWwpOworICAgIGJvb2wgY29weShnbDo6RnJhbWVidWZmZXIgKmZy
YW1lYnVmZmVyLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpz
dG9yYWdlLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCk7CisKKyAgICAvLyBDb3B5IGZyb20g
c291cmNlIHN1cmZhY2UgdG8gZGVzdCBzdXJmYWNlLgorICAgIC8vIHNvdXJjZVJlY3QsIHhvZmZz
ZXQsIHlvZmZzZXQgYXJlIGluIEQzRCBjb29yZGluYXRlcyAoMCwwIGluIHVwcGVyLWxlZnQpCisg
ICAgLy8gc291cmNlIGlzIGludGVycHJldGVkIGFzIFJHQkEgYW5kIGRlc3RGb3JtYXQgc3BlY2lm
aWVzIHRoZSBkZXNpcmVkIHJlc3VsdCBmb3JtYXQuIEZvciBleGFtcGxlLCBpZiBkZXN0Rm9ybWF0
ID0gR0xfUkdCLCB0aGUgYWxwaGEgY2hhbm5lbCB3aWxsIGJlIGZvcmNlZCB0byAwLgorICAgIGJv
b2wgZm9ybWF0Q29udmVydChJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlLCBjb25zdCBSRUNUICZz
b3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNl
dCwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpOworCisgICAgLy8gMngyIGJveCBmaWx0ZXIgc2Ft
cGxlIGZyb20gc291cmNlIHRvIGRlc3QuCisgICAgLy8gUmVxdWlyZXMgdGhhdCBzb3VyY2UgaXMg
UkdCKEEpIGFuZCBkZXN0IGhhcyB0aGUgc2FtZSBmb3JtYXQgYXMgc291cmNlLgorICAgIGJvb2wg
Ym94RmlsdGVyKElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIElEaXJlY3QzRFN1cmZhY2U5ICpk
ZXN0KTsKKworICBwcml2YXRlOgorICAgIHJ4OjpSZW5kZXJlcjkgKm1SZW5kZXJlcjsKKworICAg
IElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKm1RdWFkVmVydGV4QnVmZmVyOworICAgIElEaXJlY3Qz
RFZlcnRleERlY2xhcmF0aW9uOSAqbVF1YWRWZXJ0ZXhEZWNsYXJhdGlvbjsKKworICAgIHZvaWQg
aW5pdEdlb21ldHJ5KCk7CisKKyAgICBib29sIHNldEZvcm1hdENvbnZlcnRTaGFkZXJzKEdMZW51
bSBkZXN0Rm9ybWF0KTsKKworICAgIGJvb2wgY29weShJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNl
LCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwgR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpOworICAgIElEaXJlY3Qz
RFRleHR1cmU5ICpjb3B5U3VyZmFjZVRvVGV4dHVyZShJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFj
ZSwgY29uc3QgUkVDVCAmc291cmNlUmVjdCk7CisgICAgdm9pZCBzZXRWaWV3cG9ydChjb25zdCBS
RUNUICZzb3VyY2VSZWN0LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0KTsKKyAgICB2b2lk
IHNldENvbW1vbkJsaXRTdGF0ZSgpOworICAgIFJFQ1QgZ2V0U3VyZmFjZVJlY3QoSURpcmVjdDNE
U3VyZmFjZTkgKnN1cmZhY2UpIGNvbnN0OworCisgICAgLy8gVGhpcyBlbnVtIGlzIHVzZWQgdG8g
aW5kZXggbUNvbXBpbGVkU2hhZGVycyBhbmQgbVNoYWRlclNvdXJjZS4KKyAgICBlbnVtIFNoYWRl
cklkCisgICAgeworICAgICAgICBTSEFERVJfVlNfU1RBTkRBUkQsCisgICAgICAgIFNIQURFUl9W
U19GTElQWSwKKyAgICAgICAgU0hBREVSX1BTX1BBU1NUSFJPVUdILAorICAgICAgICBTSEFERVJf
UFNfTFVNSU5BTkNFLAorICAgICAgICBTSEFERVJfUFNfQ09NUE9ORU5UTUFTSywKKyAgICAgICAg
U0hBREVSX0NPVU5UCisgICAgfTsKKworICAgIC8vIFRoaXMgYWN0dWFsbHkgY29udGFpbnMgSURp
cmVjdDNEVmVydGV4U2hhZGVyOSBvciBJRGlyZWN0M0RQaXhlbFNoYWRlcjkgY2FzdGVkIHRvIElV
bmtub3duLgorICAgIElVbmtub3duICptQ29tcGlsZWRTaGFkZXJzW1NIQURFUl9DT1VOVF07CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRDNEU2hhZGVyVHlwZT4KKyAgICBib29sIHNldFNoYWRlcihT
aGFkZXJJZCBzb3VyY2UsIGNvbnN0IGNoYXIgKnByb2ZpbGUsCisgICAgICAgICAgICAgICAgICAg
RDNEU2hhZGVyVHlwZSAqKFJlbmRlcmVyOTo6KmNyZWF0ZVNoYWRlcikoY29uc3QgRFdPUkQgKiwg
c2l6ZV90IGxlbmd0aCksCisgICAgICAgICAgICAgICAgICAgSFJFU1VMVCAoV0lOQVBJIElEaXJl
Y3QzRERldmljZTk6OipzZXRTaGFkZXIpKEQzRFNoYWRlclR5cGUqKSk7CisKKyAgICBib29sIHNl
dFZlcnRleFNoYWRlcihTaGFkZXJJZCBzaGFkZXIpOworICAgIGJvb2wgc2V0UGl4ZWxTaGFkZXIo
U2hhZGVySWQgc2hhZGVyKTsKKyAgICB2b2lkIHJlbmRlcigpOworCisgICAgdm9pZCBzYXZlU3Rh
dGUoKTsKKyAgICB2b2lkIHJlc3RvcmVTdGF0ZSgpOworICAgIElEaXJlY3QzRFN0YXRlQmxvY2s5
ICptU2F2ZWRTdGF0ZUJsb2NrOworICAgIElEaXJlY3QzRFN1cmZhY2U5ICptU2F2ZWRSZW5kZXJU
YXJnZXQ7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKm1TYXZlZERlcHRoU3RlbmNpbDsKKworICAg
IERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihCbGl0KTsKK307Cit9CisKKyNlbmRpZiAgIC8vIExJ
QkdMRVNWMl9CTElUX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2U5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2U5LmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvQnVmZmVyU3RvcmFnZTkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisj
aW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBCdWZmZXJTdG9yYWdl
OS5jcHAgRGVmaW5lcyB0aGUgQnVmZmVyU3RvcmFnZTkgY2xhc3MuCisKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTkuaCIKKyNpbmNsdWRlICJjb21tb24vZGVidWcu
aCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0J1ZmZlclN0b3JhZ2U5OjpCdWZmZXJTdG9yYWdlOSgp
Cit7CisgICAgbU1lbW9yeSA9IE5VTEw7CisgICAgbUFsbG9jYXRlZFNpemUgPSAwOworICAgIG1T
aXplID0gMDsKK30KKworQnVmZmVyU3RvcmFnZTk6On5CdWZmZXJTdG9yYWdlOSgpCit7CisgICAg
ZGVsZXRlW10gbU1lbW9yeTsKK30KKworQnVmZmVyU3RvcmFnZTkgKkJ1ZmZlclN0b3JhZ2U5Ojpt
YWtlQnVmZmVyU3RvcmFnZTkoQnVmZmVyU3RvcmFnZSAqYnVmZmVyU3RvcmFnZSkKK3sKKyAgICBB
U1NFUlQoSEFTX0RZTkFNSUNfVFlQRShCdWZmZXJTdG9yYWdlOSosIGJ1ZmZlclN0b3JhZ2UpKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QnVmZmVyU3RvcmFnZTkqPihidWZmZXJTdG9yYWdlKTsK
K30KKwordm9pZCAqQnVmZmVyU3RvcmFnZTk6OmdldERhdGEoKQoreworICAgIHJldHVybiBtTWVt
b3J5OworfQorCit2b2lkIEJ1ZmZlclN0b3JhZ2U5OjpzZXREYXRhKGNvbnN0IHZvaWQqIGRhdGEs
IHVuc2lnbmVkIGludCBzaXplLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworICAgIGlmICghbU1l
bW9yeSB8fCBvZmZzZXQgKyBzaXplID4gbUFsbG9jYXRlZFNpemUpCisgICAgeworICAgICAgICB1
bnNpZ25lZCBpbnQgbmV3QWxsb2NhdGVkU2l6ZSA9IG9mZnNldCArIHNpemU7CisgICAgICAgIHZv
aWQgKm5ld01lbW9yeSA9IG5ldyBjaGFyW25ld0FsbG9jYXRlZFNpemVdOworCisgICAgICAgIGlm
IChvZmZzZXQgPiAwICYmIG1NZW1vcnkgJiYgbUFsbG9jYXRlZFNpemUgPiAwKQorICAgICAgICB7
CisgICAgICAgICAgICBtZW1jcHkobmV3TWVtb3J5LCBtTWVtb3J5LCBzdGQ6Om1pbihvZmZzZXQs
IG1BbGxvY2F0ZWRTaXplKSk7CisgICAgICAgIH0KKworICAgICAgICBkZWxldGVbXSBtTWVtb3J5
OworICAgICAgICBtTWVtb3J5ID0gbmV3TWVtb3J5OworICAgICAgICBtQWxsb2NhdGVkU2l6ZSA9
IG5ld0FsbG9jYXRlZFNpemU7CisgICAgfQorCisgICAgbVNpemUgPSBzdGQ6Om1heChtU2l6ZSwg
b2Zmc2V0ICsgc2l6ZSk7CisgICAgaWYgKGRhdGEpCisgICAgeworICAgICAgICBtZW1jcHkocmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4obU1lbW9yeSkgKyBvZmZzZXQsIGRhdGEsIHNpemUpOworICAg
IH0KK30KKwordm9pZCBCdWZmZXJTdG9yYWdlOTo6Y2xlYXIoKQoreworICAgIG1TaXplID0gMDsK
K30KKwordW5zaWduZWQgaW50IEJ1ZmZlclN0b3JhZ2U5OjpnZXRTaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVNpemU7Cit9CisKK2Jvb2wgQnVmZmVyU3RvcmFnZTk6OnN1cHBvcnRzRGlyZWN0
QmluZGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2U5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQyIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gQnVmZmVyU3RvcmFnZTku
aCBEZWZpbmVzIHRoZSBCdWZmZXJTdG9yYWdlOSBjbGFzcy4KKworI2lmbmRlZiBMSUJHTEVTVjJf
UkVOREVSRVJfQlVGRkVSU1RPUkFHRTlfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX0JV
RkZFUlNUT1JBR0U5X0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3Rv
cmFnZS5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgQnVmZmVyU3RvcmFnZTkgOiBwdWJs
aWMgQnVmZmVyU3RvcmFnZQoreworICBwdWJsaWM6CisgICAgQnVmZmVyU3RvcmFnZTkoKTsKKyAg
ICB2aXJ0dWFsIH5CdWZmZXJTdG9yYWdlOSgpOworCisgICAgc3RhdGljIEJ1ZmZlclN0b3JhZ2U5
ICptYWtlQnVmZmVyU3RvcmFnZTkoQnVmZmVyU3RvcmFnZSAqYnVmZmVyU3RvcmFnZSk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgKmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShjb25z
dCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50IG9mZnNldCk7Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyKCk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0U2l6
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RpcmVjdEJpbmRpbmcoKSBjb25z
dDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihCdWZmZXJTdG9y
YWdlOSk7CisKKyAgICB2b2lkICptTWVtb3J5OworICAgIHVuc2lnbmVkIGludCBtQWxsb2NhdGVk
U2l6ZTsKKworICAgIHVuc2lnbmVkIGludCBtU2l6ZTsKK307CisKK30KKworI2VuZGlmIC8vIExJ
QkdMRVNWMl9SRU5ERVJFUl9CVUZGRVJTVE9SQUdFOV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
QnVmZmVyU3RvcmFnZTExLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNTggQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIEJ1ZmZlclN0b3JhZ2UxMS5jcHAgRGVmaW5lcyB0aGUgQnVmZmVyU3RvcmFnZTEx
IGNsYXNzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2UxMS5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRl
cmVyL1JlbmRlcmVyMTEuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0J1ZmZlclN0b3JhZ2UxMTo6
QnVmZmVyU3RvcmFnZTExKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQoreworICAgIG1SZW5kZXJlciA9
IHJlbmRlcmVyOworCisgICAgbVN0YWdpbmdCdWZmZXIgPSBOVUxMOworICAgIG1TdGFnaW5nQnVm
ZmVyU2l6ZSA9IDA7CisKKyAgICBtQnVmZmVyID0gTlVMTDsKKyAgICBtQnVmZmVyU2l6ZSA9IDA7
CisKKyAgICBtU2l6ZSA9IDA7CisKKyAgICBtUmVzb2x2ZWREYXRhID0gTlVMTDsKKyAgICBtUmVz
b2x2ZWREYXRhU2l6ZSA9IDA7CisgICAgbVJlc29sdmVkRGF0YVZhbGlkID0gZmFsc2U7CisKKyAg
ICBtUmVhZFVzYWdlQ291bnQgPSAwOworICAgIG1Xcml0ZVVzYWdlQ291bnQgPSAwOworfQorCitC
dWZmZXJTdG9yYWdlMTE6On5CdWZmZXJTdG9yYWdlMTEoKQoreworICAgIGlmIChtU3RhZ2luZ0J1
ZmZlcikKKyAgICB7CisgICAgICAgIG1TdGFnaW5nQnVmZmVyLT5SZWxlYXNlKCk7CisgICAgICAg
IG1TdGFnaW5nQnVmZmVyID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobUJ1ZmZlcikKKyAgICB7
CisgICAgICAgIG1CdWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAgbUJ1ZmZlciA9IE5VTEw7Cisg
ICAgfQorCisgICAgaWYgKG1SZXNvbHZlZERhdGEpCisgICAgeworICAgICAgICBmcmVlKG1SZXNv
bHZlZERhdGEpOworICAgICAgICBtUmVzb2x2ZWREYXRhID0gTlVMTDsKKyAgICB9Cit9CisKK0J1
ZmZlclN0b3JhZ2UxMSAqQnVmZmVyU3RvcmFnZTExOjptYWtlQnVmZmVyU3RvcmFnZTExKEJ1ZmZl
clN0b3JhZ2UgKmJ1ZmZlclN0b3JhZ2UpCit7CisgICAgQVNTRVJUKEhBU19EWU5BTUlDX1RZUEUo
QnVmZmVyU3RvcmFnZTExKiwgYnVmZmVyU3RvcmFnZSkpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxCdWZmZXJTdG9yYWdlMTEqPihidWZmZXJTdG9yYWdlKTsKK30KKwordm9pZCAqQnVmZmVyU3Rv
cmFnZTExOjpnZXREYXRhKCkKK3sKKyAgICBpZiAoIW1SZXNvbHZlZERhdGFWYWxpZCkKKyAgICB7
CisgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsK
KyAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2
aWNlQ29udGV4dCgpOworICAgICAgICBIUkVTVUxUIHJlc3VsdDsKKworICAgICAgICBpZiAoIW1T
dGFnaW5nQnVmZmVyIHx8IG1TdGFnaW5nQnVmZmVyU2l6ZSA8IG1CdWZmZXJTaXplKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAobVN0YWdpbmdCdWZmZXIpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgbVN0YWdpbmdCdWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBt
U3RhZ2luZ0J1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICAgICAgbVN0YWdpbmdCdWZmZXJTaXpl
ID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgYnVm
ZmVyRGVzYzsKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MuQnl0ZVdpZHRoID0gbVNpemU7CisgICAg
ICAgICAgICBidWZmZXJEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfU1RBR0lORzsKKyAgICAgICAg
ICAgIGJ1ZmZlckRlc2MuQmluZEZsYWdzID0gMDsKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MuQ1BV
QWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1JFQUQgfCBEM0QxMV9DUFVfQUNDRVNTX1dS
SVRFOworICAgICAgICAgICAgYnVmZmVyRGVzYy5NaXNjRmxhZ3MgPSAwOworICAgICAgICAgICAg
YnVmZmVyRGVzYy5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0gMDsKKworICAgICAgICAgICAgcmVzdWx0
ID0gZGV2aWNlLT5DcmVhdGVCdWZmZXIoJmJ1ZmZlckRlc2MsIE5VTEwsICZtU3RhZ2luZ0J1ZmZl
cik7CisgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAodm9pZCopTlVM
TCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1TdGFnaW5nQnVmZmVyU2l6ZSA9IGJ1
ZmZlckRlc2MuQnl0ZVdpZHRoOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtUmVzb2x2ZWRE
YXRhIHx8IG1SZXNvbHZlZERhdGFTaXplIDwgbUJ1ZmZlclNpemUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGZyZWUobVJlc29sdmVkRGF0YSk7CisgICAgICAgICAgICBtUmVzb2x2ZWREYXRhID0g
bWFsbG9jKG1TaXplKTsKKyAgICAgICAgICAgIG1SZXNvbHZlZERhdGFTaXplID0gbVNpemU7Cisg
ICAgICAgIH0KKworICAgICAgICBEM0QxMV9CT1ggc3JjQm94OworICAgICAgICBzcmNCb3gubGVm
dCA9IDA7CisgICAgICAgIHNyY0JveC5yaWdodCA9IG1TaXplOworICAgICAgICBzcmNCb3gudG9w
ID0gMDsKKyAgICAgICAgc3JjQm94LmJvdHRvbSA9IDE7CisgICAgICAgIHNyY0JveC5mcm9udCA9
IDA7CisgICAgICAgIHNyY0JveC5iYWNrID0gMTsKKworICAgICAgICBjb250ZXh0LT5Db3B5U3Vi
cmVzb3VyY2VSZWdpb24obVN0YWdpbmdCdWZmZXIsIDAsIDAsIDAsIDAsIG1CdWZmZXIsIDAsICZz
cmNCb3gpOworCisgICAgICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJj
ZTsKKyAgICAgICAgcmVzdWx0ID0gY29udGV4dC0+TWFwKG1TdGFnaW5nQnVmZmVyLCAwLCBEM0Qx
MV9NQVBfUkVBRCwgMCwgJm1hcHBlZFJlc291cmNlKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1
bHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlksICh2b2lkKilOVUxMKTsKKyAgICAgICAgfQorCisgICAgICAgIG1lbWNweShtUmVzb2x2
ZWREYXRhLCBtYXBwZWRSZXNvdXJjZS5wRGF0YSwgbVNpemUpOworCisgICAgICAgIGNvbnRleHQt
PlVubWFwKG1TdGFnaW5nQnVmZmVyLCAwKTsKKworICAgICAgICBtUmVzb2x2ZWREYXRhVmFsaWQg
PSB0cnVlOworICAgIH0KKworICAgIG1SZWFkVXNhZ2VDb3VudCA9IDA7CisKKyAgICByZXR1cm4g
bVJlc29sdmVkRGF0YTsKK30KKwordm9pZCBCdWZmZXJTdG9yYWdlMTE6OnNldERhdGEoY29uc3Qg
dm9pZCogZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGludCBvZmZzZXQpCit7Cisg
ICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworICAgIElE
M0QxMURldmljZUNvbnRleHQgKmNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQo
KTsKKyAgICBIUkVTVUxUIHJlc3VsdDsKKworICAgIHVuc2lnbmVkIGludCByZXF1aXJlZEJ1ZmZl
clNpemUgPSBzaXplICsgb2Zmc2V0OworICAgIHVuc2lnbmVkIGludCByZXF1aXJlZFN0YWdpbmdT
aXplID0gc2l6ZTsKKyAgICBib29sIGRpcmVjdEluaXRpYWxpemF0aW9uID0gb2Zmc2V0ID09IDAg
JiYgKCFtQnVmZmVyIHx8IG1CdWZmZXJTaXplIDwgc2l6ZSArIG9mZnNldCk7CisKKyAgICBpZiAo
IWRpcmVjdEluaXRpYWxpemF0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKCFtU3RhZ2luZ0J1ZmZl
ciB8fCBtU3RhZ2luZ0J1ZmZlclNpemUgPCByZXF1aXJlZFN0YWdpbmdTaXplKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAobVN0YWdpbmdCdWZmZXIpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgbVN0YWdpbmdCdWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBtU3Rh
Z2luZ0J1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICAgICAgbVN0YWdpbmdCdWZmZXJTaXplID0g
MDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgYnVmZmVy
RGVzYzsKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MuQnl0ZVdpZHRoID0gc2l6ZTsKKyAgICAgICAg
ICAgIGJ1ZmZlckRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOworICAgICAgICAgICAg
YnVmZmVyRGVzYy5CaW5kRmxhZ3MgPSAwOworICAgICAgICAgICAgYnVmZmVyRGVzYy5DUFVBY2Nl
c3NGbGFncyA9IEQzRDExX0NQVV9BQ0NFU1NfUkVBRCB8IEQzRDExX0NQVV9BQ0NFU1NfV1JJVEU7
CisgICAgICAgICAgICBidWZmZXJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgICAgICBidWZm
ZXJEZXNjLlN0cnVjdHVyZUJ5dGVTdHJpZGUgPSAwOworCisgICAgICAgICAgICBpZiAoZGF0YSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBEM0QxMV9TVUJSRVNPVVJDRV9EQVRBIGlu
aXRpYWxEYXRhOworICAgICAgICAgICAgICAgIGluaXRpYWxEYXRhLnBTeXNNZW0gPSBkYXRhOwor
ICAgICAgICAgICAgICAgIGluaXRpYWxEYXRhLlN5c01lbVBpdGNoID0gc2l6ZTsKKyAgICAgICAg
ICAgICAgICBpbml0aWFsRGF0YS5TeXNNZW1TbGljZVBpdGNoID0gMDsKKworICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZidWZmZXJEZXNjLCAmaW5pdGlhbERh
dGEsICZtU3RhZ2luZ0J1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVCdWZm
ZXIoJmJ1ZmZlckRlc2MsIE5VTEwsICZtU3RhZ2luZ0J1ZmZlcik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBtU3RhZ2luZ0J1ZmZlclNpemUgPSBzaXplOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgaWYgKGRhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIEQzRDExX01BUFBF
RF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbnRl
eHQtPk1hcChtU3RhZ2luZ0J1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRFLCAwLCAmbWFwcGVkUmVz
b3VyY2UpOworICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIG1lbWNweShtYXBwZWRSZXNvdXJjZS5wRGF0YSwgZGF0
YSwgc2l6ZSk7CisKKyAgICAgICAgICAgIGNvbnRleHQtPlVubWFwKG1TdGFnaW5nQnVmZmVyLCAw
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbUJ1ZmZlciB8fCBtQnVmZmVyU2l6ZSA8
IHNpemUgKyBvZmZzZXQpCisgICAgeworICAgICAgICBEM0QxMV9CVUZGRVJfREVTQyBidWZmZXJE
ZXNjOworICAgICAgICBidWZmZXJEZXNjLkJ5dGVXaWR0aCA9IHJlcXVpcmVkQnVmZmVyU2l6ZTsK
KyAgICAgICAgYnVmZmVyRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAgICAg
IGJ1ZmZlckRlc2MuQmluZEZsYWdzID0gRDNEMTFfQklORF9WRVJURVhfQlVGRkVSIHwgRDNEMTFf
QklORF9JTkRFWF9CVUZGRVI7CisgICAgICAgIGJ1ZmZlckRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSAw
OworICAgICAgICBidWZmZXJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgIGJ1ZmZlckRlc2Mu
U3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7CisKKyAgICAgICAgaWYgKGRpcmVjdEluaXRpYWxpemF0
aW9uKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBTaW5jZSB0aGUgZGF0YSB3aWxsIGZpbGwg
dGhlIGVudGlyZSBidWZmZXIgKGJlaW5nIGxhcmdlciB0aGFuIHRoZSBpbml0aWFsIHNpemUgYW5k
IGhhdmluZworICAgICAgICAgICAgLy8gbm8gb2Zmc2V0KSwgdGhlIGJ1ZmZlciBjYW4gYmUgaW5p
dGlhbGl6ZWQgd2l0aCB0aGUgZGF0YSBzbyBubyBzdGFnaW5nIGJ1ZmZlciBpcyByZXF1aXJlZAor
CisgICAgICAgICAgICAvLyBObyBsb25nZXIgbmVlZCB0aGUgb2xkIGJ1ZmZlcgorICAgICAgICAg
ICAgaWYgKG1CdWZmZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbUJ1ZmZlci0+
UmVsZWFzZSgpOworICAgICAgICAgICAgICAgIG1CdWZmZXIgPSBOVUxMOworICAgICAgICAgICAg
ICAgIG1CdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGRh
dGEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRDNEMTFfU1VCUkVTT1VSQ0VfREFU
QSBpbml0aWFsRGF0YTsKKyAgICAgICAgICAgICAgICBpbml0aWFsRGF0YS5wU3lzTWVtID0gZGF0
YTsKKyAgICAgICAgICAgICAgICBpbml0aWFsRGF0YS5TeXNNZW1QaXRjaCA9IHNpemU7CisgICAg
ICAgICAgICAgICAgaW5pdGlhbERhdGEuU3lzTWVtU2xpY2VQaXRjaCA9IDA7CisKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmYnVmZmVyRGVzYywgJmluaXRp
YWxEYXRhLCAmbUJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVCdWZmZXIo
JmJ1ZmZlckRlc2MsIE5VTEwsICZtQnVmZmVyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgZWxzZSBpZiAobUJ1ZmZlciAmJiBvZmZzZXQgPiAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICAvLyBJZiBvZmZzZXQgaXMgZ3JlYXRlciB0aGFuIHplcm8gYW5kIHRoZSBidWZm
ZXIgaXMgbm9uLW51bGwsIG5lZWQgdG8gcHJlc2VydmUgdGhlIGRhdGEgZnJvbQorICAgICAgICAg
ICAgLy8gdGhlIG9sZCBidWZmZXIgdXAgdG8gb2Zmc2V0CisgICAgICAgICAgICBJRDNEMTFCdWZm
ZXIgKm5ld0J1ZmZlciA9IE5VTEw7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3Jl
YXRlQnVmZmVyKCZidWZmZXJEZXNjLCBOVUxMLCAmbmV3QnVmZmVyKTsKKyAgICAgICAgICAgIGlm
IChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBEM0QxMV9CT1ggc3JjQm94OworICAgICAgICAgICAgc3JjQm94LmxlZnQgPSAwOworICAgICAg
ICAgICAgc3JjQm94LnJpZ2h0ID0gc3RkOjptaW4ob2Zmc2V0LCBtQnVmZmVyU2l6ZSk7CisgICAg
ICAgICAgICBzcmNCb3gudG9wID0gMDsKKyAgICAgICAgICAgIHNyY0JveC5ib3R0b20gPSAxOwor
ICAgICAgICAgICAgc3JjQm94LmZyb250ID0gMDsKKyAgICAgICAgICAgIHNyY0JveC5iYWNrID0g
MTsKKworICAgICAgICAgICAgY29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKG5ld0J1ZmZl
ciwgMCwgMCwgMCwgMCwgbUJ1ZmZlciwgMCwgJnNyY0JveCk7CisKKyAgICAgICAgICAgIG1CdWZm
ZXItPlJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1CdWZmZXIgPSBuZXdCdWZmZXI7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBTaW1wbGUgY2FzZSwg
bm90aGluZyBuZWVkcyB0byBiZSBjb3BpZWQgZnJvbSB0aGUgb2xkIGJ1ZmZlciB0byB0aGUgbmV3
IG9uZSwganVzdCBjcmVhdGUKKyAgICAgICAgICAgIC8vIGEgbmV3IGJ1ZmZlcgorCisgICAgICAg
ICAgICAvLyBObyBsb25nZXIgbmVlZCB0aGUgb2xkIGJ1ZmZlcgorICAgICAgICAgICAgaWYgKG1C
dWZmZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbUJ1ZmZlci0+UmVsZWFzZSgp
OworICAgICAgICAgICAgICAgIG1CdWZmZXIgPSBOVUxMOworICAgICAgICAgICAgICAgIG1CdWZm
ZXJTaXplID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3
IGJ1ZmZlciBmb3IgZGF0YSBzdG9yYWdlCisgICAgICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNy
ZWF0ZUJ1ZmZlcigmYnVmZmVyRGVzYywgTlVMTCwgJm1CdWZmZXIpOworICAgICAgICAgICAgaWYg
KEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICB1cGRhdGVTZXJpYWwoKTsKKyAgICAgICAgbUJ1ZmZlclNpemUgPSBidWZmZXJEZXNj
LkJ5dGVXaWR0aDsKKyAgICB9CisKKyAgICBpZiAoIWRpcmVjdEluaXRpYWxpemF0aW9uKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1TdGFnaW5nQnVmZmVyICYmIG1TdGFnaW5nQnVmZmVyU2l6ZSA+
PSByZXF1aXJlZFN0YWdpbmdTaXplKTsKKworICAgICAgICAvLyBEYXRhIGlzIGFscmVhZHkgcHV0
IGludG8gdGhlIHN0YWdpbmcgYnVmZmVyLCBjb3B5IGl0IG92ZXIgdG8gdGhlIGRhdGEgYnVmZmVy
CisgICAgICAgIEQzRDExX0JPWCBzcmNCb3g7CisgICAgICAgIHNyY0JveC5sZWZ0ID0gMDsKKyAg
ICAgICAgc3JjQm94LnJpZ2h0ID0gc2l6ZTsKKyAgICAgICAgc3JjQm94LnRvcCA9IDA7CisgICAg
ICAgIHNyY0JveC5ib3R0b20gPSAxOworICAgICAgICBzcmNCb3guZnJvbnQgPSAwOworICAgICAg
ICBzcmNCb3guYmFjayA9IDE7CisKKyAgICAgICAgY29udGV4dC0+Q29weVN1YnJlc291cmNlUmVn
aW9uKG1CdWZmZXIsIDAsIG9mZnNldCwgMCwgMCwgbVN0YWdpbmdCdWZmZXIsIDAsICZzcmNCb3gp
OworICAgIH0KKworICAgIG1TaXplID0gc3RkOjptYXgobVNpemUsIG9mZnNldCArIHNpemUpOwor
CisgICAgbVdyaXRlVXNhZ2VDb3VudCA9IDA7CisKKyAgICBtUmVzb2x2ZWREYXRhVmFsaWQgPSBm
YWxzZTsKK30KKwordm9pZCBCdWZmZXJTdG9yYWdlMTE6OmNsZWFyKCkKK3sKKyAgICBtUmVzb2x2
ZWREYXRhVmFsaWQgPSBmYWxzZTsKKyAgICBtU2l6ZSA9IDA7Cit9CisKK3Vuc2lnbmVkIGludCBC
dWZmZXJTdG9yYWdlMTE6OmdldFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtU2l6ZTsKK30K
KworYm9vbCBCdWZmZXJTdG9yYWdlMTE6OnN1cHBvcnRzRGlyZWN0QmluZGluZygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQnVmZmVyU3RvcmFnZTExOjptYXJrQnVmZmVy
VXNhZ2UoKQoreworICAgIG1SZWFkVXNhZ2VDb3VudCsrOworICAgIG1Xcml0ZVVzYWdlQ291bnQr
KzsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgdXNhZ2VMaW1pdCA9IDU7CisKKyAg
ICBpZiAobVJlYWRVc2FnZUNvdW50ID4gdXNhZ2VMaW1pdCAmJiBtUmVzb2x2ZWREYXRhKQorICAg
IHsKKyAgICAgICAgZnJlZShtUmVzb2x2ZWREYXRhKTsKKyAgICAgICAgbVJlc29sdmVkRGF0YSA9
IE5VTEw7CisgICAgICAgIG1SZXNvbHZlZERhdGFTaXplID0gMDsKKyAgICAgICAgbVJlc29sdmVk
RGF0YVZhbGlkID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1SZWFkVXNhZ2VDb3VudCA+IHVz
YWdlTGltaXQgJiYgbVdyaXRlVXNhZ2VDb3VudCA+IHVzYWdlTGltaXQgJiYgbVN0YWdpbmdCdWZm
ZXIpCisgICAgeworICAgICAgICBtU3RhZ2luZ0J1ZmZlci0+UmVsZWFzZSgpOworICAgICAgICBt
U3RhZ2luZ0J1ZmZlciA9IE5VTEw7CisgICAgICAgIG1TdGFnaW5nQnVmZmVyU2l6ZSA9IDA7Cisg
ICAgfQorfQorCitJRDNEMTFCdWZmZXIgKkJ1ZmZlclN0b3JhZ2UxMTo6Z2V0QnVmZmVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbUJ1ZmZlcjsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1
ZmZlclN0b3JhZ2UxMS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1NiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJ1ZmZlclN0b3JhZ2UxMS5oIERlZmlu
ZXMgdGhlIEJ1ZmZlclN0b3JhZ2UxMSBjbGFzcy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVS
RVJfQlVGRkVSU1RPUkFHRTExX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9CVUZGRVJT
VE9SQUdFMTFfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdl
LmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXIxMTsKKworY2xhc3MgQnVmZmVy
U3RvcmFnZTExIDogcHVibGljIEJ1ZmZlclN0b3JhZ2UKK3sKKyAgcHVibGljOgorICAgIGV4cGxp
Y2l0IEJ1ZmZlclN0b3JhZ2UxMShSZW5kZXJlcjExICpyZW5kZXJlcik7CisgICAgdmlydHVhbCB+
QnVmZmVyU3RvcmFnZTExKCk7CisKKyAgICBzdGF0aWMgQnVmZmVyU3RvcmFnZTExICptYWtlQnVm
ZmVyU3RvcmFnZTExKEJ1ZmZlclN0b3JhZ2UgKmJ1ZmZlclN0b3JhZ2UpOworCisgICAgdmlydHVh
bCB2b2lkICpnZXREYXRhKCk7CisgICAgdmlydHVhbCB2b2lkIHNldERhdGEoY29uc3Qgdm9pZCog
ZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGludCBvZmZzZXQpOworICAgIHZpcnR1
YWwgdm9pZCBjbGVhcigpOworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNpemUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEaXJlY3RCaW5kaW5nKCkgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIG1hcmtCdWZmZXJVc2FnZSgpOworCisgICAgSUQzRDExQnVmZmVyICpnZXRC
dWZmZXIoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIFJlbmRlcmVyMTEgKm1SZW5kZXJlcjsK
KworICAgIElEM0QxMUJ1ZmZlciAqbVN0YWdpbmdCdWZmZXI7CisgICAgdW5zaWduZWQgaW50IG1T
dGFnaW5nQnVmZmVyU2l6ZTsKKworICAgIElEM0QxMUJ1ZmZlciAqbUJ1ZmZlcjsKKyAgICB1bnNp
Z25lZCBpbnQgbUJ1ZmZlclNpemU7CisKKyAgICB1bnNpZ25lZCBpbnQgbVNpemU7CisKKyAgICB2
b2lkICptUmVzb2x2ZWREYXRhOworICAgIHVuc2lnbmVkIGludCBtUmVzb2x2ZWREYXRhU2l6ZTsK
KyAgICBib29sIG1SZXNvbHZlZERhdGFWYWxpZDsKKworICAgIHVuc2lnbmVkIGludCBtUmVhZFVz
YWdlQ291bnQ7CisgICAgdW5zaWduZWQgaW50IG1Xcml0ZVVzYWdlQ291bnQ7Cit9OworCit9CisK
KyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfQlVGRkVSU1RPUkFHRTExX0hfCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3Jh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2UuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisvLyBCdWZmZXJTdG9yYWdlLmNwcCBEZWZpbmVzIHRoZSBhYnN0cmFjdCBC
dWZmZXJTdG9yYWdlIGNsYXNzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZl
clN0b3JhZ2UuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK3Vuc2lnbmVkIGludCBCdWZmZXJTdG9y
YWdlOjptTmV4dFNlcmlhbCA9IDE7CisKK0J1ZmZlclN0b3JhZ2U6OkJ1ZmZlclN0b3JhZ2UoKQor
eworICAgIHVwZGF0ZVNlcmlhbCgpOworfQorCitCdWZmZXJTdG9yYWdlOjp+QnVmZmVyU3RvcmFn
ZSgpCit7Cit9CisKK3Vuc2lnbmVkIGludCBCdWZmZXJTdG9yYWdlOjpnZXRTZXJpYWwoKSBjb25z
dAoreworICAgIHJldHVybiBtU2VyaWFsOworfQorCit2b2lkIEJ1ZmZlclN0b3JhZ2U6OnVwZGF0
ZVNlcmlhbCgpCit7CisgICAgbVNlcmlhbCA9IG1OZXh0U2VyaWFsKys7Cit9CisKK3ZvaWQgQnVm
ZmVyU3RvcmFnZTo6bWFya0J1ZmZlclVzYWdlKCkKK3sKK30KKworfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9CdWZmZXJTdG9yYWdlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2UuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJ1ZmZlclN0b3JhZ2UuaCBEZWZpbmVz
IHRoZSBhYnN0cmFjdCBCdWZmZXJTdG9yYWdlIGNsYXNzLgorCisjaWZuZGVmIExJQkdMRVNWMl9S
RU5ERVJFUl9CVUZGRVJTVE9SQUdFX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9CVUZG
RVJTVE9SQUdFX0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorCituYW1lc3Bh
Y2UgcngKK3sKKworY2xhc3MgQnVmZmVyU3RvcmFnZQoreworICBwdWJsaWM6CisgICAgQnVmZmVy
U3RvcmFnZSgpOworICAgIHZpcnR1YWwgfkJ1ZmZlclN0b3JhZ2UoKTsKKworICAgIC8vIFRoZSBk
YXRhIHJldHVybmVkIGlzIG9ubHkgZ3VhcmFudGVlZCB2YWxpZCB1bnRpbCBuZXh0IG5vbi1jb25z
dCBtZXRob2QuCisgICAgdmlydHVhbCB2b2lkICpnZXREYXRhKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGludCBzaXplLCB1bnNpZ25l
ZCBpbnQgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKCkgPSAwOworICAgIHZp
cnR1YWwgdW5zaWduZWQgaW50IGdldFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzRGlyZWN0QmluZGluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFy
a0J1ZmZlclVzYWdlKCk7CisgICAgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0OworCisg
IHByb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZVNlcmlhbCgpOworCisgIHByaXZhdGU6CisgICAg
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEJ1ZmZlclN0b3JhZ2UpOworCisgICAgdW5zaWduZWQg
aW50IG1TZXJpYWw7CisgICAgc3RhdGljIHVuc2lnbmVkIGludCBtTmV4dFNlcmlhbDsKK307CisK
K30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9CVUZGRVJTVE9SQUdFX0hfCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlOS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9GZW5jZTkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEzNSBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
RmVuY2U5LmNwcDogRGVmaW5lcyB0aGUgcng6OkZlbmNlOSBjbGFzcy4KKworI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmgiCisKK25hbWVzcGFjZSByeAoreworCitG
ZW5jZTk6OkZlbmNlOShyeDo6UmVuZGVyZXI5ICpyZW5kZXJlcikKK3sKKyAgICBtUmVuZGVyZXIg
PSByZW5kZXJlcjsKKyAgICBtUXVlcnkgPSBOVUxMOworfQorCitGZW5jZTk6On5GZW5jZTkoKQor
eworICAgIGlmIChtUXVlcnkpCisgICAgeworICAgICAgICBtUmVuZGVyZXItPmZyZWVFdmVudFF1
ZXJ5KG1RdWVyeSk7CisgICAgICAgIG1RdWVyeSA9IE5VTEw7CisgICAgfQorfQorCitHTGJvb2xl
YW4gRmVuY2U5Ojppc0ZlbmNlKCkKK3sKKyAgICAvLyBHTF9OVl9mZW5jZSBzcGVjOgorICAgIC8v
IEEgbmFtZSByZXR1cm5lZCBieSBHZW5GZW5jZXNOViwgYnV0IG5vdCB5ZXQgc2V0IHZpYSBTZXRG
ZW5jZU5WLCBpcyBub3QgdGhlIG5hbWUgb2YgYW4gZXhpc3RpbmcgZmVuY2UuCisgICAgcmV0dXJu
IG1RdWVyeSAhPSBOVUxMOworfQorCit2b2lkIEZlbmNlOTo6c2V0RmVuY2UoR0xlbnVtIGNvbmRp
dGlvbikKK3sKKyAgICBpZiAoIW1RdWVyeSkKKyAgICB7CisgICAgICAgIG1RdWVyeSA9IG1SZW5k
ZXJlci0+YWxsb2NhdGVFdmVudFF1ZXJ5KCk7CisgICAgICAgIGlmICghbVF1ZXJ5KQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
ICAgICB9CisgICAgfQorCisgICAgSFJFU1VMVCByZXN1bHQgPSBtUXVlcnktPklzc3VlKEQzRElT
U1VFX0VORCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgIHNldENvbmRp
dGlvbihjb25kaXRpb24pOworICAgIHNldFN0YXR1cyhHTF9GQUxTRSk7Cit9CisKK0dMYm9vbGVh
biBGZW5jZTk6OnRlc3RGZW5jZSgpCit7CisgICAgaWYgKG1RdWVyeSA9PSBOVUxMKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgR0xfVFJVRSk7
CisgICAgfQorCisgICAgSFJFU1VMVCByZXN1bHQgPSBtUXVlcnktPkdldERhdGEoTlVMTCwgMCwg
RDNER0VUREFUQV9GTFVTSCk7CisKKyAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJyb3IocmVz
dWx0KSkKKyAgICB7CisgICAgICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNlTG9zdCgpOworICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIEdMX1RSVUUpOworICAgIH0K
KworICAgIEFTU0VSVChyZXN1bHQgPT0gU19PSyB8fCByZXN1bHQgPT0gU19GQUxTRSk7CisgICAg
c2V0U3RhdHVzKHJlc3VsdCA9PSBTX09LKTsKKyAgICByZXR1cm4gZ2V0U3RhdHVzKCk7Cit9CisK
K3ZvaWQgRmVuY2U5OjpmaW5pc2hGZW5jZSgpCit7CisgICAgaWYgKG1RdWVyeSA9PSBOVUxMKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgfQorCisgICAgd2hpbGUgKCF0ZXN0RmVuY2UoKSkKKyAgICB7CisgICAgICAgIFNsZWVwKDAp
OworICAgIH0KK30KKwordm9pZCBGZW5jZTk6OmdldEZlbmNlaXYoR0xlbnVtIHBuYW1lLCBHTGlu
dCAqcGFyYW1zKQoreworICAgIGlmIChtUXVlcnkgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAgIHN3aXRj
aCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZFTkNFX1NUQVRVU19OVjoKKyAgICAg
ICAgeworICAgICAgICAgICAgLy8gR0xfTlZfZmVuY2Ugc3BlYzoKKyAgICAgICAgICAgIC8vIE9u
Y2UgdGhlIHN0YXR1cyBvZiBhIGZlbmNlIGhhcyBiZWVuIGZpbmlzaGVkICh2aWEgRmluaXNoRmVu
Y2VOVikgb3IgdGVzdGVkIGFuZCB0aGUgcmV0dXJuZWQgc3RhdHVzIGlzIFRSVUUgKHZpYSBlaXRo
ZXIgVGVzdEZlbmNlTlYKKyAgICAgICAgICAgIC8vIG9yIEdldEZlbmNlaXZOViBxdWVyeWluZyB0
aGUgRkVOQ0VfU1RBVFVTX05WKSwgdGhlIHN0YXR1cyByZW1haW5zIFRSVUUgdW50aWwgdGhlIG5l
eHQgU2V0RmVuY2VOViBvZiB0aGUgZmVuY2UuCisgICAgICAgICAgICBpZiAoZ2V0U3RhdHVzKCkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcGFyYW1zWzBdID0gR0xfVFJVRTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVF1ZXJ5LT5HZXREYXRhKE5VTEwsIDAsIDApOworCisg
ICAgICAgICAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBwYXJhbXNbMF0gPSBHTF9UUlVFOworICAgICAgICAgICAg
ICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNlTG9zdCgpOworICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQgPT0gU19PSyB8fCByZXN1bHQgPT0gU19GQUxTRSk7CisgICAgICAg
ICAgICBzZXRTdGF0dXMocmVzdWx0ID09IFNfT0spOworICAgICAgICAgICAgcGFyYW1zWzBdID0g
Z2V0U3RhdHVzKCk7CisKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfRkVOQ0VfQ09ORElUSU9OX05WOgorICAgICAgICAgICAgcGFyYW1zWzBdID0gZ2V0Q29u
ZGl0aW9uKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9GZW5jZTkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlOS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEZlbmNlOS5oOiBE
ZWZpbmVzIHRoZSByeDo6RmVuY2U5IGNsYXNzIHdoaWNoIGltcGxlbWVudHMgcng6OkZlbmNlSW1w
bC4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfRkVOQ0U5X0hfCisjZGVmaW5lIExJQkdM
RVNWMl9SRU5ERVJFUl9GRU5DRTlfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9G
ZW5jZUltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjk7CisKK2NsYXNz
IEZlbmNlOSA6IHB1YmxpYyBGZW5jZUltcGwKK3sKKyAgcHVibGljOgorICAgIGV4cGxpY2l0IEZl
bmNlOShyeDo6UmVuZGVyZXI5ICpyZW5kZXJlcik7CisgICAgdmlydHVhbCB+RmVuY2U5KCk7CisK
KyAgICBHTGJvb2xlYW4gaXNGZW5jZSgpOworICAgIHZvaWQgc2V0RmVuY2UoR0xlbnVtIGNvbmRp
dGlvbik7CisgICAgR0xib29sZWFuIHRlc3RGZW5jZSgpOworICAgIHZvaWQgZmluaXNoRmVuY2Uo
KTsKKyAgICB2b2lkIGdldEZlbmNlaXYoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKwor
ICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihGZW5jZTkpOworCisgICAg
cng6OlJlbmRlcmVyOSAqbVJlbmRlcmVyOworICAgIElEaXJlY3QzRFF1ZXJ5OSAqbVF1ZXJ5Owor
fTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0ZFTkNFOV9IXwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTExLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL0ZlbmNlMTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTExLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMzQgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IEZlbmNlMTEuY3BwOiBEZWZpbmVzIHRoZSByeDo6RmVuY2UxMSBjbGFzcyB3aGljaCBpbXBsZW1l
bnRzIHJ4OjpGZW5jZUltcGwuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvRmVuY2Ux
MS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3Jl
bmRlcmVyL1JlbmRlcmVyMTEuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0ZlbmNlMTE6OkZlbmNl
MTEocng6OlJlbmRlcmVyMTEgKnJlbmRlcmVyKQoreworICAgIG1SZW5kZXJlciA9IHJlbmRlcmVy
OworICAgIG1RdWVyeSA9IE5VTEw7Cit9CisKK0ZlbmNlMTE6On5GZW5jZTExKCkKK3sKKyAgICBp
ZiAobVF1ZXJ5KQorICAgIHsKKyAgICAgICAgbVF1ZXJ5LT5SZWxlYXNlKCk7CisgICAgICAgIG1R
dWVyeSA9IE5VTEw7CisgICAgfQorfQorCitHTGJvb2xlYW4gRmVuY2UxMTo6aXNGZW5jZSgpCit7
CisgICAgLy8gR0xfTlZfZmVuY2Ugc3BlYzoKKyAgICAvLyBBIG5hbWUgcmV0dXJuZWQgYnkgR2Vu
RmVuY2VzTlYsIGJ1dCBub3QgeWV0IHNldCB2aWEgU2V0RmVuY2VOViwgaXMgbm90IHRoZSBuYW1l
IG9mIGFuIGV4aXN0aW5nIGZlbmNlLgorICAgIHJldHVybiBtUXVlcnkgIT0gTlVMTDsKK30KKwor
dm9pZCBGZW5jZTExOjpzZXRGZW5jZShHTGVudW0gY29uZGl0aW9uKQoreworICAgIGlmICghbVF1
ZXJ5KQorICAgIHsKKyAgICAgICAgRDNEMTFfUVVFUllfREVTQyBxdWVyeURlc2M7CisgICAgICAg
IHF1ZXJ5RGVzYy5RdWVyeSA9IEQzRDExX1FVRVJZX0VWRU5UOworICAgICAgICBxdWVyeURlc2Mu
TWlzY0ZsYWdzID0gMDsKKworICAgICAgICBpZiAoRkFJTEVEKG1SZW5kZXJlci0+Z2V0RGV2aWNl
KCktPkNyZWF0ZVF1ZXJ5KCZxdWVyeURlc2MsICZtUXVlcnkpKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5FbmQobVF1ZXJ5KTsKKwor
ICAgIHNldENvbmRpdGlvbihjb25kaXRpb24pOworICAgIHNldFN0YXR1cyhHTF9GQUxTRSk7Cit9
CisKK0dMYm9vbGVhbiBGZW5jZTExOjp0ZXN0RmVuY2UoKQoreworICAgIGlmIChtUXVlcnkgPT0g
TlVMTCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sIEdMX1RSVUUpOworICAgIH0KKworICAgIEhSRVNVTFQgcmVzdWx0ID0gbVJlbmRlcmVyLT5n
ZXREZXZpY2VDb250ZXh0KCktPkdldERhdGEobVF1ZXJ5LCBOVUxMLCAwLCAwKTsKKworICAgIGlm
IChtUmVuZGVyZXItPmlzRGV2aWNlTG9zdCgpKQorICAgIHsKKyAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlksIEdMX1RSVUUpOworICAgIH0KKworICAgIEFTU0VSVChyZXN1
bHQgPT0gU19PSyB8fCByZXN1bHQgPT0gU19GQUxTRSk7CisgICAgc2V0U3RhdHVzKHJlc3VsdCA9
PSBTX09LKTsKKyAgICByZXR1cm4gZ2V0U3RhdHVzKCk7Cit9CisKK3ZvaWQgRmVuY2UxMTo6Zmlu
aXNoRmVuY2UoKQoreworICAgIGlmIChtUXVlcnkgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAgIHdoaWxl
ICghdGVzdEZlbmNlKCkpCisgICAgeworICAgICAgICBTbGVlcCgwKTsKKyAgICB9Cit9CisKK3Zv
aWQgRmVuY2UxMTo6Z2V0RmVuY2VpdihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7Cisg
ICAgaWYgKG1RdWVyeSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7
CisgICAgICBjYXNlIEdMX0ZFTkNFX1NUQVRVU19OVjoKKyAgICAgICAgeworICAgICAgICAgICAg
Ly8gR0xfTlZfZmVuY2Ugc3BlYzoKKyAgICAgICAgICAgIC8vIE9uY2UgdGhlIHN0YXR1cyBvZiBh
IGZlbmNlIGhhcyBiZWVuIGZpbmlzaGVkICh2aWEgRmluaXNoRmVuY2VOVikgb3IgdGVzdGVkIGFu
ZCB0aGUgcmV0dXJuZWQgc3RhdHVzIGlzIFRSVUUgKHZpYSBlaXRoZXIgVGVzdEZlbmNlTlYKKyAg
ICAgICAgICAgIC8vIG9yIEdldEZlbmNlaXZOViBxdWVyeWluZyB0aGUgRkVOQ0VfU1RBVFVTX05W
KSwgdGhlIHN0YXR1cyByZW1haW5zIFRSVUUgdW50aWwgdGhlIG5leHQgU2V0RmVuY2VOViBvZiB0
aGUgZmVuY2UuCisgICAgICAgICAgICBpZiAoZ2V0U3RhdHVzKCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcGFyYW1zWzBdID0gR0xfVFJVRTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVJlbmRl
cmVyLT5nZXREZXZpY2VDb250ZXh0KCktPkdldERhdGEobVF1ZXJ5LCBOVUxMLCAwLCBEM0QxMV9B
U1lOQ19HRVREQVRBX0RPTk9URkxVU0gpOworCisgICAgICAgICAgICBpZiAobVJlbmRlcmVyLT5p
c0RldmljZUxvc3QoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwYXJhbXNbMF0g
PSBHTF9UUlVFOworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gU19P
SyB8fCByZXN1bHQgPT0gU19GQUxTRSk7CisgICAgICAgICAgICBzZXRTdGF0dXMocmVzdWx0ID09
IFNfT0spOworICAgICAgICAgICAgcGFyYW1zWzBdID0gZ2V0U3RhdHVzKCk7CisKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICBjYXNlIEdMX0ZFTkNFX0NPTkRJVElPTl9OVjoK
KyAgICAgICAgcGFyYW1zWzBdID0gZ2V0Q29uZGl0aW9uKCk7CisgICAgICAgIGJyZWFrOworICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2UxMS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2UxMS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9GZW5jZTExLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBGZW5jZTExLmg6IERlZmluZXMgdGhlIHJ4OjpGZW5jZTExIGNsYXNzIHdoaWNoIGltcGxl
bWVudHMgcng6OkZlbmNlSW1wbC4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfRmVuY2Ux
MV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJfRmVuY2UxMV9IXworCisjaW5jbHVkZSAi
bGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlSW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNz
IFJlbmRlcmVyMTE7CisKK2NsYXNzIEZlbmNlMTEgOiBwdWJsaWMgRmVuY2VJbXBsCit7CisgIHB1
YmxpYzoKKyAgICBleHBsaWNpdCBGZW5jZTExKHJ4OjpSZW5kZXJlcjExICpyZW5kZXJlcik7Cisg
ICAgdmlydHVhbCB+RmVuY2UxMSgpOworCisgICAgR0xib29sZWFuIGlzRmVuY2UoKTsKKyAgICB2
b2lkIHNldEZlbmNlKEdMZW51bSBjb25kaXRpb24pOworICAgIEdMYm9vbGVhbiB0ZXN0RmVuY2Uo
KTsKKyAgICB2b2lkIGZpbmlzaEZlbmNlKCk7CisgICAgdm9pZCBnZXRGZW5jZWl2KEdMZW51bSBw
bmFtZSwgR0xpbnQgKnBhcmFtcyk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FO
RF9BU1NJR04oRmVuY2UxMSk7CisKKyAgICByeDo6UmVuZGVyZXIxMSAqbVJlbmRlcmVyOworICAg
IElEM0QxMVF1ZXJ5ICptUXVlcnk7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVO
REVSRVJfRkVOQ0UxMV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9GZW5jZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlSW1wbC5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZUlt
cGwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEZl
bmNlSW1wbC5oOiBEZWZpbmVzIHRoZSByeDo6RmVuY2VJbXBsIGNsYXNzLgorCisjaWZuZGVmIExJ
QkdMRVNWMl9SRU5ERVJFUl9GRU5DRUlNUExfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVS
X0ZFTkNFSU1QTF9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNw
YWNlIHJ4Cit7CisKK2NsYXNzIEZlbmNlSW1wbAoreworICBwdWJsaWM6CisgICAgRmVuY2VJbXBs
KCkgOiBtU3RhdHVzKEdMX0ZBTFNFKSwgbUNvbmRpdGlvbihHTF9OT05FKSB7IH07CisgICAgdmly
dHVhbCB+RmVuY2VJbXBsKCkgeyB9OworCisgICAgdmlydHVhbCBHTGJvb2xlYW4gaXNGZW5jZSgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmVuY2UoR0xlbnVtIGNvbmRpdGlvbikgPSAwOwor
ICAgIHZpcnR1YWwgR0xib29sZWFuIHRlc3RGZW5jZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoRmVuY2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEZlbmNlaXYoR0xlbnVtIHBu
YW1lLCBHTGludCAqcGFyYW1zKSA9IDA7CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgc2V0U3Rh
dHVzKEdMYm9vbGVhbiBzdGF0dXMpIHsgbVN0YXR1cyA9IHN0YXR1czsgfQorICAgIEdMYm9vbGVh
biBnZXRTdGF0dXMoKSBjb25zdCB7IHJldHVybiBtU3RhdHVzOyB9CisKKyAgICB2b2lkIHNldENv
bmRpdGlvbihHTHVpbnQgY29uZGl0aW9uKSB7IG1Db25kaXRpb24gPSBjb25kaXRpb247IH0KKyAg
ICBHTHVpbnQgZ2V0Q29uZGl0aW9uKCkgY29uc3QgeyByZXR1cm4gbUNvbmRpdGlvbjsgfQorCisg
IHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEZlbmNlSW1wbCk7CisKKyAg
ICBHTGJvb2xlYW4gbVN0YXR1czsKKyAgICBHTGVudW0gbUNvbmRpdGlvbjsKK307CisKK30KKwor
I2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9GRU5DRUlNUExfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2U5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lt
YWdlOS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0ltYWdlOS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMyIEBA
CisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEltYWdl
OS5jcHA6IEltcGxlbWVudHMgdGhlIHJ4OjpJbWFnZTkgY2xhc3MsIHdoaWNoIGFjdHMgYXMgdGhl
IGludGVyZmFjZSB0bworLy8gdGhlIGFjdHVhbCB1bmRlcmx5aW5nIHN1cmZhY2VzIG9mIGEgVGV4
dHVyZS4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTkuaCIKKworI2luY2x1
ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0ZyYW1lYnVmZmVyLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9SZW5kZXJlcjkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVu
ZGVyVGFyZ2V0OS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFn
ZTkuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvZ2VuZXJhdGVtaXAuaCIKKworbmFtZXNwYWNl
IHJ4Cit7CisKK0ltYWdlOTo6SW1hZ2U5KCkKK3sKKyAgICBtU3VyZmFjZSA9IE5VTEw7CisgICAg
bVJlbmRlcmVyID0gTlVMTDsKKworICAgIG1EM0RQb29sID0gRDNEUE9PTF9TWVNURU1NRU07Cisg
ICAgbUQzREZvcm1hdCA9IEQzREZNVF9VTktOT1dOOworfQorCitJbWFnZTk6On5JbWFnZTkoKQor
eworICAgIGlmIChtU3VyZmFjZSkKKyAgICB7CisgICAgICAgIG1TdXJmYWNlLT5SZWxlYXNlKCk7
CisgICAgfQorfQorCit2b2lkIEltYWdlOTo6Z2VuZXJhdGVNaXAoSURpcmVjdDNEU3VyZmFjZTkg
KmRlc3RTdXJmYWNlLCBJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlU3VyZmFjZSkKK3sKKyAgICBE
M0RTVVJGQUNFX0RFU0MgZGVzdERlc2M7CisgICAgSFJFU1VMVCByZXN1bHQgPSBkZXN0U3VyZmFj
ZS0+R2V0RGVzYygmZGVzdERlc2MpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisK
KyAgICBEM0RTVVJGQUNFX0RFU0Mgc291cmNlRGVzYzsKKyAgICByZXN1bHQgPSBzb3VyY2VTdXJm
YWNlLT5HZXREZXNjKCZzb3VyY2VEZXNjKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkp
OworCisgICAgQVNTRVJUKHNvdXJjZURlc2MuRm9ybWF0ID09IGRlc3REZXNjLkZvcm1hdCk7Cisg
ICAgQVNTRVJUKHNvdXJjZURlc2MuV2lkdGggPT0gMSB8fCBzb3VyY2VEZXNjLldpZHRoIC8gMiA9
PSBkZXN0RGVzYy5XaWR0aCk7CisgICAgQVNTRVJUKHNvdXJjZURlc2MuSGVpZ2h0ID09IDEgfHwg
c291cmNlRGVzYy5IZWlnaHQgLyAyID09IGRlc3REZXNjLkhlaWdodCk7CisKKyAgICBEM0RMT0NL
RURfUkVDVCBzb3VyY2VMb2NrZWQgPSB7MH07CisgICAgcmVzdWx0ID0gc291cmNlU3VyZmFjZS0+
TG9ja1JlY3QoJnNvdXJjZUxvY2tlZCwgTlVMTCwgRDNETE9DS19SRUFET05MWSk7CisgICAgQVNT
RVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgIEQzRExPQ0tFRF9SRUNUIGRlc3RMb2NrZWQg
PSB7MH07CisgICAgcmVzdWx0ID0gZGVzdFN1cmZhY2UtPkxvY2tSZWN0KCZkZXN0TG9ja2VkLCBO
VUxMLCAwKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgY29uc3QgdW5z
aWduZWQgY2hhciAqc291cmNlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhcio+KHNvdXJjZUxvY2tlZC5wQml0cyk7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdERhdGEg
PSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihkZXN0TG9ja2VkLnBCaXRzKTsKKwor
ICAgIGlmIChzb3VyY2VEYXRhICYmIGRlc3REYXRhKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChz
b3VyY2VEZXNjLkZvcm1hdCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgRDNERk1UX0w4Ogor
ICAgICAgICAgICAgR2VuZXJhdGVNaXA8TDg+KHNvdXJjZURlc2MuV2lkdGgsIHNvdXJjZURlc2Mu
SGVpZ2h0LCBzb3VyY2VEYXRhLCBzb3VyY2VMb2NrZWQuUGl0Y2gsIGRlc3REYXRhLCBkZXN0TG9j
a2VkLlBpdGNoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRDNERk1UX0E4
TDg6CisgICAgICAgICAgICBHZW5lcmF0ZU1pcDxBOEw4Pihzb3VyY2VEZXNjLldpZHRoLCBzb3Vy
Y2VEZXNjLkhlaWdodCwgc291cmNlRGF0YSwgc291cmNlTG9ja2VkLlBpdGNoLCBkZXN0RGF0YSwg
ZGVzdExvY2tlZC5QaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEQz
REZNVF9BOFI4RzhCODoKKyAgICAgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKKyAgICAgICAg
ICAgIEdlbmVyYXRlTWlwPEE4UjhHOEI4Pihzb3VyY2VEZXNjLldpZHRoLCBzb3VyY2VEZXNjLkhl
aWdodCwgc291cmNlRGF0YSwgc291cmNlTG9ja2VkLlBpdGNoLCBkZXN0RGF0YSwgZGVzdExvY2tl
ZC5QaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEQzREZNVF9BMTZC
MTZHMTZSMTZGOgorICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTE2QjE2RzE2UjE2Rj4oc291cmNl
RGVzYy5XaWR0aCwgc291cmNlRGVzYy5IZWlnaHQsIHNvdXJjZURhdGEsIHNvdXJjZUxvY2tlZC5Q
aXRjaCwgZGVzdERhdGEsIGRlc3RMb2NrZWQuUGl0Y2gpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgY2FzZSBEM0RGTVRfQTMyQjMyRzMyUjMyRjoKKyAgICAgICAgICAgIEdlbmVyYXRl
TWlwPEEzMkIzMkczMlIzMkY+KHNvdXJjZURlc2MuV2lkdGgsIHNvdXJjZURlc2MuSGVpZ2h0LCBz
b3VyY2VEYXRhLCBzb3VyY2VMb2NrZWQuUGl0Y2gsIGRlc3REYXRhLCBkZXN0TG9ja2VkLlBpdGNo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBk
ZXN0U3VyZmFjZS0+VW5sb2NrUmVjdCgpOworICAgICAgICBzb3VyY2VTdXJmYWNlLT5VbmxvY2tS
ZWN0KCk7CisgICAgfQorfQorCitJbWFnZTkgKkltYWdlOTo6bWFrZUltYWdlOShJbWFnZSAqaW1n
KQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpJbWFnZTkqLCBpbWcpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8cng6OkltYWdlOSo+KGltZyk7Cit9CisKK3ZvaWQgSW1hZ2U5
OjpnZW5lcmF0ZU1pcG1hcChJbWFnZTkgKmRlc3QsIEltYWdlOSAqc291cmNlKQoreworICAgIElE
aXJlY3QzRFN1cmZhY2U5ICpzb3VyY2VTdXJmYWNlID0gc291cmNlLT5nZXRTdXJmYWNlKCk7Cisg
ICAgaWYgKHNvdXJjZVN1cmZhY2UgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0U3VyZmFjZSA9
IGRlc3QtPmdldFN1cmZhY2UoKTsKKyAgICBnZW5lcmF0ZU1pcChkZXN0U3VyZmFjZSwgc291cmNl
U3VyZmFjZSk7CisKKyAgICBkZXN0LT5tYXJrRGlydHkoKTsKK30KKwordm9pZCBJbWFnZTk6OmNv
cHlMb2NrYWJsZVN1cmZhY2VzKElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0LCBJRGlyZWN0M0RTdXJm
YWNlOSAqc291cmNlKQoreworICAgIEQzRExPQ0tFRF9SRUNUIHNvdXJjZUxvY2sgPSB7MH07Cisg
ICAgRDNETE9DS0VEX1JFQ1QgZGVzdExvY2sgPSB7MH07CisgICAgCisgICAgc291cmNlLT5Mb2Nr
UmVjdCgmc291cmNlTG9jaywgTlVMTCwgMCk7CisgICAgZGVzdC0+TG9ja1JlY3QoJmRlc3RMb2Nr
LCBOVUxMLCAwKTsKKyAgICAKKyAgICBpZiAoc291cmNlTG9jay5wQml0cyAmJiBkZXN0TG9jay5w
Qml0cykKKyAgICB7CisgICAgICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOworICAgICAgICBzb3Vy
Y2UtPkdldERlc2MoJmRlc2MpOworCisgICAgICAgIGludCByb3dzID0gZDNkOTo6SXNDb21wcmVz
c2VkRm9ybWF0KGRlc2MuRm9ybWF0KSA/IGRlc2MuSGVpZ2h0IC8gNCA6IGRlc2MuSGVpZ2h0Owor
ICAgICAgICBpbnQgYnl0ZXMgPSBkM2Q5OjpDb21wdXRlUm93U2l6ZShkZXNjLkZvcm1hdCwgZGVz
Yy5XaWR0aCk7CisgICAgICAgIEFTU0VSVChieXRlcyA8PSBzb3VyY2VMb2NrLlBpdGNoICYmIGJ5
dGVzIDw9IGRlc3RMb2NrLlBpdGNoKTsKKworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgcm93
czsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBtZW1jcHkoKGNoYXIqKWRlc3RMb2NrLnBC
aXRzICsgZGVzdExvY2suUGl0Y2ggKiBpLCAoY2hhciopc291cmNlTG9jay5wQml0cyArIHNvdXJj
ZUxvY2suUGl0Y2ggKiBpLCBieXRlcyk7CisgICAgICAgIH0KKworICAgICAgICBzb3VyY2UtPlVu
bG9ja1JlY3QoKTsKKyAgICAgICAgZGVzdC0+VW5sb2NrUmVjdCgpOworICAgIH0KKyAgICBlbHNl
IFVOUkVBQ0hBQkxFKCk7Cit9CisKK2Jvb2wgSW1hZ2U5OjpyZWRlZmluZShyeDo6UmVuZGVyZXIg
KnJlbmRlcmVyLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIGJvb2wgZm9yY2VSZWxlYXNlKQoreworICAgIGlmIChtV2lkdGggIT0gd2lkdGggfHwK
KyAgICAgICAgbUhlaWdodCAhPSBoZWlnaHQgfHwKKyAgICAgICAgbUludGVybmFsRm9ybWF0ICE9
IGludGVybmFsZm9ybWF0IHx8CisgICAgICAgIGZvcmNlUmVsZWFzZSkKKyAgICB7CisgICAgICAg
IG1SZW5kZXJlciA9IFJlbmRlcmVyOTo6bWFrZVJlbmRlcmVyOShyZW5kZXJlcik7CisKKyAgICAg
ICAgbVdpZHRoID0gd2lkdGg7CisgICAgICAgIG1IZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIG1J
bnRlcm5hbEZvcm1hdCA9IGludGVybmFsZm9ybWF0OworICAgICAgICAvLyBjb21wdXRlIHRoZSBk
M2QgZm9ybWF0IHRoYXQgd2lsbCBiZSB1c2VkCisgICAgICAgIG1EM0RGb3JtYXQgPSBtUmVuZGVy
ZXItPkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQpOworICAgICAg
ICBtQWN0dWFsRm9ybWF0ID0gZDNkOV9nbDo6R2V0RXF1aXZhbGVudEZvcm1hdChtRDNERm9ybWF0
KTsKKworICAgICAgICBpZiAobVN1cmZhY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1TdXJm
YWNlLT5SZWxlYXNlKCk7CisgICAgICAgICAgICBtU3VyZmFjZSA9IE5VTEw7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgSW1hZ2U5OjpjcmVhdGVTdXJmYWNlKCkKK3sKKyAgICBpZihtU3VyZmFjZSkKKyAgICB7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBJRGlyZWN0M0RUZXh0dXJlOSAqbmV3VGV4
dHVyZSA9IE5VTEw7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKm5ld1N1cmZhY2UgPSBOVUxMOwor
ICAgIGNvbnN0IEQzRFBPT0wgcG9vbFRvVXNlID0gRDNEUE9PTF9TWVNURU1NRU07CisgICAgY29u
c3QgRDNERk9STUFUIGQzZEZvcm1hdCA9IGdldEQzREZvcm1hdCgpOworICAgIEFTU0VSVChkM2RG
b3JtYXQgIT0gRDNERk1UX0lOVFopOyAvLyBXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUgZm9yIGRl
cHRoIHRleHR1cmVzCisKKyAgICBpZiAobVdpZHRoICE9IDAgJiYgbUhlaWdodCAhPSAwKQorICAg
IHsKKyAgICAgICAgaW50IGxldmVsVG9GZXRjaCA9IDA7CisgICAgICAgIEdMc2l6ZWkgcmVxdWVz
dFdpZHRoID0gbVdpZHRoOworICAgICAgICBHTHNpemVpIHJlcXVlc3RIZWlnaHQgPSBtSGVpZ2h0
OworICAgICAgICBnbDo6TWFrZVZhbGlkU2l6ZSh0cnVlLCBnbDo6SXNDb21wcmVzc2VkKG1JbnRl
cm5hbEZvcm1hdCksICZyZXF1ZXN0V2lkdGgsICZyZXF1ZXN0SGVpZ2h0LCAmbGV2ZWxUb0ZldGNo
KTsKKworICAgICAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERl
dmljZSgpOworCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJl
KHJlcXVlc3RXaWR0aCwgcmVxdWVzdEhlaWdodCwgbGV2ZWxUb0ZldGNoICsgMSwgMCwgZDNkRm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBvb2xUb1VzZSwgJm5ld1RleHR1cmUsIE5VTEwpOworCisgICAgICAgIGlmIChGQUlMRUQocmVz
dWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VU
T0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7CisgICAgICAgICAgICBF
UlIoIkNyZWF0aW5nIGltYWdlIHN1cmZhY2UgZmFpbGVkLiIpOworICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorCisgICAgICAgIG5ld1Rl
eHR1cmUtPkdldFN1cmZhY2VMZXZlbChsZXZlbFRvRmV0Y2gsICZuZXdTdXJmYWNlKTsKKyAgICAg
ICAgbmV3VGV4dHVyZS0+UmVsZWFzZSgpOworICAgIH0KKworICAgIG1TdXJmYWNlID0gbmV3U3Vy
ZmFjZTsKKyAgICBtRGlydHkgPSBmYWxzZTsKKyAgICBtRDNEUG9vbCA9IHBvb2xUb1VzZTsKK30K
KworSFJFU1VMVCBJbWFnZTk6OmxvY2soRDNETE9DS0VEX1JFQ1QgKmxvY2tlZFJlY3QsIGNvbnN0
IFJFQ1QgKnJlY3QpCit7CisgICAgY3JlYXRlU3VyZmFjZSgpOworCisgICAgSFJFU1VMVCByZXN1
bHQgPSBEM0RFUlJfSU5WQUxJRENBTEw7CisKKyAgICBpZiAobVN1cmZhY2UpCisgICAgeworICAg
ICAgICByZXN1bHQgPSBtU3VyZmFjZS0+TG9ja1JlY3QobG9ja2VkUmVjdCwgcmVjdCwgMCk7Cisg
ICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgbURpcnR5ID0gdHJ1
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEltYWdlOTo6dW5sb2Nr
KCkKK3sKKyAgICBpZiAobVN1cmZhY2UpCisgICAgeworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9
IG1TdXJmYWNlLT5VbmxvY2tSZWN0KCk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0
KSk7CisgICAgfQorfQorCitib29sIEltYWdlOTo6aXNSZW5kZXJhYmxlRm9ybWF0KCkgY29uc3QK
K3sgICAgCisgICAgcmV0dXJuIFRleHR1cmVTdG9yYWdlOTo6SXNUZXh0dXJlRm9ybWF0UmVuZGVy
YWJsZShnZXREM0RGb3JtYXQoKSk7Cit9CisKK0QzREZPUk1BVCBJbWFnZTk6OmdldEQzREZvcm1h
dCgpIGNvbnN0Cit7CisgICAgLy8gdGhpcyBzaG91bGQgb25seSBoYXBwZW4gaWYgdGhlIGltYWdl
IGhhc24ndCBiZWVuIHJlZGVmaW5lZCBmaXJzdAorICAgIC8vIHdoaWNoIHdvdWxkIGJlIGEgYnVn
IGJ5IHRoZSBjYWxsZXIKKyAgICBBU1NFUlQobUQzREZvcm1hdCAhPSBEM0RGTVRfVU5LTk9XTik7
CisKKyAgICByZXR1cm4gbUQzREZvcm1hdDsKK30KKworSURpcmVjdDNEU3VyZmFjZTkgKkltYWdl
OTo6Z2V0U3VyZmFjZSgpCit7CisgICAgY3JlYXRlU3VyZmFjZSgpOworCisgICAgcmV0dXJuIG1T
dXJmYWNlOworfQorCit2b2lkIEltYWdlOTo6c2V0TWFuYWdlZFN1cmZhY2UoVGV4dHVyZVN0b3Jh
Z2VJbnRlcmZhY2UyRCAqc3RvcmFnZSwgaW50IGxldmVsKQoreworICAgIFRleHR1cmVTdG9yYWdl
OV8yRCAqc3RvcmFnZTkgPSBUZXh0dXJlU3RvcmFnZTlfMkQ6Om1ha2VUZXh0dXJlU3RvcmFnZTlf
MkQoc3RvcmFnZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgIHNldE1hbmFnZWRTdXJmYWNl
KHN0b3JhZ2U5LT5nZXRTdXJmYWNlTGV2ZWwobGV2ZWwsIGZhbHNlKSk7Cit9CisKK3ZvaWQgSW1h
Z2U5OjpzZXRNYW5hZ2VkU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKnN0b3Jh
Z2UsIGludCBmYWNlLCBpbnQgbGV2ZWwpCit7CisgICAgVGV4dHVyZVN0b3JhZ2U5X0N1YmUgKnN0
b3JhZ2U5ID0gVGV4dHVyZVN0b3JhZ2U5X0N1YmU6Om1ha2VUZXh0dXJlU3RvcmFnZTlfQ3ViZShz
dG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7CisgICAgc2V0TWFuYWdlZFN1cmZhY2Uoc3Rv
cmFnZTktPmdldEN1YmVNYXBTdXJmYWNlKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCAr
IGZhY2UsIGxldmVsLCBmYWxzZSkpOworfQorCit2b2lkIEltYWdlOTo6c2V0TWFuYWdlZFN1cmZh
Y2UoSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UpCit7CisgICAgRDNEU1VSRkFDRV9ERVNDIGRl
c2M7CisgICAgc3VyZmFjZS0+R2V0RGVzYygmZGVzYyk7CisgICAgQVNTRVJUKGRlc2MuUG9vbCA9
PSBEM0RQT09MX01BTkFHRUQpOworCisgICAgaWYgKChHTHNpemVpKWRlc2MuV2lkdGggPT0gbVdp
ZHRoICYmIChHTHNpemVpKWRlc2MuSGVpZ2h0ID09IG1IZWlnaHQpCisgICAgeworICAgICAgICBp
ZiAobVN1cmZhY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvcHlMb2NrYWJsZVN1cmZhY2Vz
KHN1cmZhY2UsIG1TdXJmYWNlKTsKKyAgICAgICAgICAgIG1TdXJmYWNlLT5SZWxlYXNlKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBtU3VyZmFjZSA9IHN1cmZhY2U7CisgICAgICAgIG1EM0RQb29s
ID0gZGVzYy5Qb29sOworICAgIH0KK30KKworYm9vbCBJbWFnZTk6OnVwZGF0ZVN1cmZhY2UoVGV4
dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc3RvcmFnZSwgaW50IGxldmVsLCBHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBB
U1NFUlQoZ2V0U3VyZmFjZSgpICE9IE5VTEwpOworICAgIFRleHR1cmVTdG9yYWdlOV8yRCAqc3Rv
cmFnZTkgPSBUZXh0dXJlU3RvcmFnZTlfMkQ6Om1ha2VUZXh0dXJlU3RvcmFnZTlfMkQoc3RvcmFn
ZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgIHJldHVybiB1cGRhdGVTdXJmYWNlKHN0b3Jh
Z2U5LT5nZXRTdXJmYWNlTGV2ZWwobGV2ZWwsIHRydWUpLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0KTsKK30KKworYm9vbCBJbWFnZTk6OnVwZGF0ZVN1cmZhY2UoVGV4dHVyZVN0b3Jh
Z2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBpbnQgZmFjZSwgaW50IGxldmVsLCBHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAg
ICBBU1NFUlQoZ2V0U3VyZmFjZSgpICE9IE5VTEwpOworICAgIFRleHR1cmVTdG9yYWdlOV9DdWJl
ICpzdG9yYWdlOSA9IFRleHR1cmVTdG9yYWdlOV9DdWJlOjptYWtlVGV4dHVyZVN0b3JhZ2U5X0N1
YmUoc3RvcmFnZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgIHJldHVybiB1cGRhdGVTdXJm
YWNlKHN0b3JhZ2U5LT5nZXRDdWJlTWFwU3VyZmFjZShHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1ggKyBmYWNlLCBsZXZlbCwgdHJ1ZSksIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQpOworfQorCitib29sIEltYWdlOTo6dXBkYXRlU3VyZmFjZShJRGlyZWN0M0RTdXJmYWNlOSAq
ZGVzdFN1cmZhY2UsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIGlmICghZGVzdFN1cmZhY2UpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2VTdXJmYWNlID0gZ2V0U3Vy
ZmFjZSgpOworCisgICAgaWYgKHNvdXJjZVN1cmZhY2UgJiYgc291cmNlU3VyZmFjZSAhPSBkZXN0
U3VyZmFjZSkKKyAgICB7CisgICAgICAgIFJFQ1QgcmVjdDsKKyAgICAgICAgcmVjdC5sZWZ0ID0g
eG9mZnNldDsKKyAgICAgICAgcmVjdC50b3AgPSB5b2Zmc2V0OworICAgICAgICByZWN0LnJpZ2h0
ID0geG9mZnNldCArIHdpZHRoOworICAgICAgICByZWN0LmJvdHRvbSA9IHlvZmZzZXQgKyBoZWln
aHQ7CisKKyAgICAgICAgUE9JTlQgcG9pbnQgPSB7cmVjdC5sZWZ0LCByZWN0LnRvcH07CisKKyAg
ICAgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsK
KworICAgICAgICBpZiAobUQzRFBvb2wgPT0gRDNEUE9PTF9NQU5BR0VEKQorICAgICAgICB7Cisg
ICAgICAgICAgICBEM0RTVVJGQUNFX0RFU0MgZGVzYzsKKyAgICAgICAgICAgIHNvdXJjZVN1cmZh
Y2UtPkdldERlc2MoJmRlc2MpOworCisgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3Vy
ZiA9IDA7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlT2Zmc2Ny
ZWVuUGxhaW5TdXJmYWNlKGRlc2MuV2lkdGgsIGRlc2MuSGVpZ2h0LCBkZXNjLkZvcm1hdCwgRDNE
UE9PTF9TWVNURU1NRU0sICZzdXJmLCBOVUxMKTsKKworICAgICAgICAgICAgaWYgKFNVQ0NFRURF
RChyZXN1bHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvcHlMb2NrYWJsZVN1
cmZhY2VzKHN1cmYsIHNvdXJjZVN1cmZhY2UpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRl
dmljZS0+VXBkYXRlU3VyZmFjZShzdXJmLCAmcmVjdCwgZGVzdFN1cmZhY2UsICZwb2ludCk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgICAgICAg
ICBzdXJmLT5SZWxlYXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBVcGRhdGVTdXJmYWNlOiBzb3VyY2UgbXVzdCBi
ZSBTWVNURU1NRU0sIGRlc3QgbXVzdCBiZSBERUZBVUxUIHBvb2xzIAorICAgICAgICAgICAgSFJF
U1VMVCByZXN1bHQgPSBkZXZpY2UtPlVwZGF0ZVN1cmZhY2Uoc291cmNlU3VyZmFjZSwgJnJlY3Qs
IGRlc3RTdXJmYWNlLCAmcG9pbnQpOworICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1
bHQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRlc3RTdXJmYWNlLT5SZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFN0b3JlIHRoZSBwaXhlbCByZWN0YW5nbGUgZGVzaWdu
YXRlZCBieSB4b2Zmc2V0LHlvZmZzZXQsd2lkdGgsaGVpZ2h0IHdpdGggcGl4ZWxzIHN0b3JlZCBh
cyBmb3JtYXQvdHlwZSBhdCBpbnB1dAorLy8gaW50byB0aGUgdGFyZ2V0IHBpeGVsIHJlY3Rhbmds
ZS4KK3ZvaWQgSW1hZ2U5Ojpsb2FkRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKmlucHV0KQoreworICAgIFJFQ1QgbG9ja1Jl
Y3QgPQorICAgIHsKKyAgICAgICAgeG9mZnNldCwgeW9mZnNldCwKKyAgICAgICAgeG9mZnNldCAr
IHdpZHRoLCB5b2Zmc2V0ICsgaGVpZ2h0CisgICAgfTsKKworICAgIEQzRExPQ0tFRF9SRUNUIGxv
Y2tlZDsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IGxvY2soJmxvY2tlZCwgJmxvY2tSZWN0KTsKKyAg
ICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisK
KyAgICBHTHNpemVpIGlucHV0UGl0Y2ggPSBnbDo6Q29tcHV0ZVBpdGNoKHdpZHRoLCBtSW50ZXJu
YWxGb3JtYXQsIHVucGFja0FsaWdubWVudCk7CisKKyAgICBzd2l0Y2ggKG1JbnRlcm5hbEZvcm1h
dCkKKyAgICB7CisgICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6CisgICAgICAgIGlmIChnbDo6c3Vw
cG9ydHNTU0UyKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRBbHBoYURhdGFUb0JHUkFT
U0UyKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tl
ZC5wQml0cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg
ICBsb2FkQWxwaGFEYXRhVG9CR1JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBs
b2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhUOgorICAgICAgICBsb2FkTHVtaW5hbmNlRGF0YVRv
TmF0aXZlT3JCR1JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0
Y2gsIGxvY2tlZC5wQml0cywgZ2V0RDNERm9ybWF0KCkgPT0gRDNERk1UX0w4KTsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX0FMUEhBMzJGX0VYVDoKKyAgICAgICAgbG9hZEFscGhhRmxv
YXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0
Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MVU1JTkFO
Q0UzMkZfRVhUOgorICAgICAgICBsb2FkTHVtaW5hbmNlRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBo
ZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CisgICAgICAgIGxvYWRB
bHBoYUhhbGZGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQs
IGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX0xVTUlOQU5DRTE2Rl9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VIYWxmRmxvYXREYXRh
VG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0Y2gsIGxv
Y2tlZC5wQml0cyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0FM
UEhBOF9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VBbHBoYURhdGFUb05hdGl2ZU9yQkdSQSh3
aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJp
dHMsIGdldEQzREZvcm1hdCgpID09IEQzREZNVF9BOEw4KTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VB
bHBoYUZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9j
a2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
TFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoKKyAgICAgICAgbG9hZEx1bWluYW5jZUFscGhhSGFsZkZs
b2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBp
dGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCOF9P
RVM6CisgICAgICAgIGxvYWRSR0JVQnl0ZURhdGFUb0JHUlgod2lkdGgsIGhlaWdodCwgaW5wdXRQ
aXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgICAgbG9hZFJHQjU2NURhdGFUb0JHUkEod2lk
dGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRz
KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzoKKyAgICAgICAgaWYg
KGdsOjpzdXBwb3J0c1NTRTIoKSkKKyAgICAgICAgeworICAgICAgICAgICAgbG9hZFJHQkFVQnl0
ZURhdGFUb0JHUkFTU0UyKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQu
UGl0Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7
CisgICAgICAgICAgICBsb2FkUkdCQVVCeXRlRGF0YVRvQkdSQSh3aWR0aCwgaGVpZ2h0LCBpbnB1
dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0JBNDoKKyAgICAgICAgbG9hZFJHQkE0NDQ0
RGF0YVRvQkdSQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNo
LCBsb2NrZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCNV9BMToK
KyAgICAgICAgbG9hZFJHQkE1NTUxRGF0YVRvQkdSQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNo
LCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfQkdSQThfRVhUOgorICAgICAgICBsb2FkQkdSQURhdGFUb0JHUkEod2lkdGgs
IGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsK
KyAgICAgICAgYnJlYWs7CisgICAgICAvLyBmbG9hdCB0ZXh0dXJlcyBhcmUgY29udmVydGVkIHRv
IFJHQkEsIG5vdCBCR1JBLCBhcyB0aGV5J3JlIHN0b3JlZCB0aGF0IHdheSBpbiBEM0QKKyAgICAg
IGNhc2UgR0xfUkdCMzJGX0VYVDoKKyAgICAgICAgbG9hZFJHQkZsb2F0RGF0YVRvUkdCQSh3aWR0
aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMp
OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCMTZGX0VYVDoKKyAgICAgICAgbG9h
ZFJHQkhhbGZGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQs
IGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX1JHQkEzMkZfRVhUOgorICAgICAgICBsb2FkUkdCQUZsb2F0RGF0YVRvUkdCQSh3aWR0aCwg
aGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOwor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6CisgICAgICAgIGxvYWRS
R0JBSGFsZkZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwg
bG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1
bHQ6IFVOUkVBQ0hBQkxFKCk7IAorICAgIH0KKworICAgIHVubG9jaygpOworfQorCit2b2lkIElt
YWdlOTo6bG9hZENvbXByZXNzZWREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICppbnB1dCkKK3sKKyAgICBBU1NFUlQoeG9mZnNldCAlIDQgPT0gMCk7
CisgICAgQVNTRVJUKHlvZmZzZXQgJSA0ID09IDApOworCisgICAgUkVDVCBsb2NrUmVjdCA9IHsK
KyAgICAgICAgeG9mZnNldCwgeW9mZnNldCwKKyAgICAgICAgeG9mZnNldCArIHdpZHRoLCB5b2Zm
c2V0ICsgaGVpZ2h0CisgICAgfTsKKworICAgIEQzRExPQ0tFRF9SRUNUIGxvY2tlZDsKKyAgICBI
UkVTVUxUIHJlc3VsdCA9IGxvY2soJmxvY2tlZCwgJmxvY2tSZWN0KTsKKyAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xzaXplaSBp
bnB1dFNpemUgPSBnbDo6Q29tcHV0ZUNvbXByZXNzZWRTaXplKHdpZHRoLCBoZWlnaHQsIG1JbnRl
cm5hbEZvcm1hdCk7CisgICAgR0xzaXplaSBpbnB1dFBpdGNoID0gZ2w6OkNvbXB1dGVDb21wcmVz
c2VkUGl0Y2god2lkdGgsIG1JbnRlcm5hbEZvcm1hdCk7CisgICAgaW50IHJvd3MgPSBpbnB1dFNp
emUgLyBpbnB1dFBpdGNoOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgKytpKQorICAg
IHsKKyAgICAgICAgbWVtY3B5KCh2b2lkKikoKEJZVEUqKWxvY2tlZC5wQml0cyArIGkgKiBsb2Nr
ZWQuUGl0Y2gpLCAodm9pZCopKChCWVRFKilpbnB1dCArIGkgKiBpbnB1dFBpdGNoKSwgaW5wdXRQ
aXRjaCk7CisgICAgfQorCisgICAgdW5sb2NrKCk7Cit9CisKKy8vIFRoaXMgaW1wbGVtZW50cyBn
bENvcHlUZXhbU3ViXUltYWdlMkQgZm9yIG5vbi1yZW5kZXJhYmxlIGludGVybmFsIHRleHR1cmUg
Zm9ybWF0cyBhbmQgaW5jb21wbGV0ZSB0ZXh0dXJlcwordm9pZCBJbWFnZTk6OmNvcHkoR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKQoreworICAgIFJlbmRlclRh
cmdldDkgKnJlbmRlclRhcmdldCA9IE5VTEw7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZh
Y2UgPSBOVUxMOworICAgIGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVyID0gc291cmNlLT5n
ZXRDb2xvcmJ1ZmZlcigwKTsKKworICAgIGlmIChjb2xvcmJ1ZmZlcikKKyAgICB7CisgICAgICAg
IHJlbmRlclRhcmdldCA9IFJlbmRlclRhcmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5KGNvbG9yYnVm
ZmVyLT5nZXRSZW5kZXJUYXJnZXQoKSk7CisgICAgfQorICAgIAorICAgIGlmIChyZW5kZXJUYXJn
ZXQpCisgICAgeworICAgICAgICBzdXJmYWNlID0gcmVuZGVyVGFyZ2V0LT5nZXRTdXJmYWNlKCk7
CisgICAgfQorCisgICAgaWYgKCFzdXJmYWNlKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQg
dG8gcmV0cmlldmUgdGhlIHJlbmRlciB0YXJnZXQuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2
aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpy
ZW5kZXJUYXJnZXREYXRhID0gTlVMTDsKKyAgICBEM0RTVVJGQUNFX0RFU0MgZGVzY3JpcHRpb247
CisgICAgc3VyZmFjZS0+R2V0RGVzYygmZGVzY3JpcHRpb24pOworICAgIAorICAgIEhSRVNVTFQg
cmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVPZmZzY3JlZW5QbGFpblN1cmZhY2UoZGVzY3JpcHRpb24u
V2lkdGgsIGRlc2NyaXB0aW9uLkhlaWdodCwgZGVzY3JpcHRpb24uRm9ybWF0LCBEM0RQT09MX1NZ
U1RFTU1FTSwgJnJlbmRlclRhcmdldERhdGEsIE5VTEwpOworCisgICAgaWYgKEZBSUxFRChyZXN1
bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIG1hdGNoaW5nIGRlc3Rp
bmF0aW9uIHN1cmZhY2UuIik7CisgICAgICAgIHN1cmZhY2UtPlJlbGVhc2UoKTsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9CisKKyAgICByZXN1bHQg
PSBkZXZpY2UtPkdldFJlbmRlclRhcmdldERhdGEoc3VyZmFjZSwgcmVuZGVyVGFyZ2V0RGF0YSk7
CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICBFUlIoIkdldFJlbmRl
clRhcmdldERhdGEgdW5leHBlY3RlZGx5IGZhaWxlZC4iKTsKKyAgICAgICAgcmVuZGVyVGFyZ2V0
RGF0YS0+UmVsZWFzZSgpOworICAgICAgICBzdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgUkVDVCBzb3Vy
Y2VSZWN0ID0ge3gsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodH07CisgICAgUkVDVCBkZXN0UmVj
dCA9IHt4b2Zmc2V0LCB5b2Zmc2V0LCB4b2Zmc2V0ICsgd2lkdGgsIHlvZmZzZXQgKyBoZWlnaHR9
OworCisgICAgRDNETE9DS0VEX1JFQ1Qgc291cmNlTG9jayA9IHswfTsKKyAgICByZXN1bHQgPSBy
ZW5kZXJUYXJnZXREYXRhLT5Mb2NrUmVjdCgmc291cmNlTG9jaywgJnNvdXJjZVJlY3QsIDApOwor
CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8g
bG9jayB0aGUgc291cmNlIHN1cmZhY2UgKHJlY3RhbmdsZSBtaWdodCBiZSBpbnZhbGlkKS4iKTsK
KyAgICAgICAgcmVuZGVyVGFyZ2V0RGF0YS0+UmVsZWFzZSgpOworICAgICAgICBzdXJmYWNlLT5S
ZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Cisg
ICAgfQorCisgICAgRDNETE9DS0VEX1JFQ1QgZGVzdExvY2sgPSB7MH07CisgICAgcmVzdWx0ID0g
bG9jaygmZGVzdExvY2ssICZkZXN0UmVjdCk7CisgICAgCisgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gbG9jayB0aGUgZGVzdGluYXRpb24gc3Vy
ZmFjZSAocmVjdGFuZ2xlIG1pZ2h0IGJlIGludmFsaWQpLiIpOworICAgICAgICByZW5kZXJUYXJn
ZXREYXRhLT5VbmxvY2tSZWN0KCk7CisgICAgICAgIHJlbmRlclRhcmdldERhdGEtPlJlbGVhc2Uo
KTsKKyAgICAgICAgc3VyZmFjZS0+UmVsZWFzZSgpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIGlmIChkZXN0TG9jay5wQml0cyAmJiBz
b3VyY2VMb2NrLnBCaXRzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqc291cmNlID0g
KHVuc2lnbmVkIGNoYXIqKXNvdXJjZUxvY2sucEJpdHM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIg
KmRlc3QgPSAodW5zaWduZWQgY2hhciopZGVzdExvY2sucEJpdHM7CisKKyAgICAgICAgc3dpdGNo
IChkZXNjcmlwdGlvbi5Gb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEQzREZNVF9Y
OFI4RzhCODoKKyAgICAgICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKKyAgICAgICAgICAgIHN3
aXRjaChnZXREM0RGb3JtYXQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBE
M0RGTVRfWDhSOEc4Qjg6CisgICAgICAgICAgICAgIGNhc2UgRDNERk1UX0E4UjhHOEI4OgorICAg
ICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweShkZXN0LCBzb3VyY2UsIDQgKiB3aWR0
aCk7CisKKyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7Cisg
ICAgICAgICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9M
ODoKKyAgICAgICAgICAgICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHggPSAwOyB4IDwgd2lk
dGg7IHgrKykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ZGVzdFt4XSA9IHNvdXJjZVt4ICogNCArIDJdOworICAgICAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7CisgICAgICAgICAg
ICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9BOEw4OgorICAg
ICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsr
KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3gg
KiAyICsgMF0gPSBzb3VyY2VbeCAqIDQgKyAyXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
c3RbeCAqIDIgKyAxXSA9IHNvdXJjZVt4ICogNCArIDNdOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7CisgICAg
ICAgICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICBjYXNlIEQzREZNVF9SNUc2QjU6CisgICAgICAgICAgICBzd2l0Y2goZ2V0
RDNERm9ybWF0KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgRDNERk1UX1g4
UjhHOEI4OgorICAgICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7IHgg
PCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBzaG9ydCByZ2IgPSAoKHVuc2lnbmVkIHNob3J0Kilzb3VyY2UpW3hdOwor
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciByZWQgPSAocmdiICYgMHhGODAw
KSA+PiA4OworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBncmVlbiA9IChy
Z2IgJiAweDA3RTApID4+IDM7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IGJsdWUgPSAocmdiICYgMHgwMDFGKSA8PCAzOworICAgICAgICAgICAgICAgICAgICAgICAgZGVz
dFt4ICsgMF0gPSBibHVlIHwgKGJsdWUgPj4gNSk7CisgICAgICAgICAgICAgICAgICAgICAgICBk
ZXN0W3ggKyAxXSA9IGdyZWVuIHwgKGdyZWVuID4+IDYpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdFt4ICsgMl0gPSByZWQgfCAocmVkID4+IDUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdFt4ICsgM10gPSAweEZGOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7CisgICAgICAgICAgICAgICAg
ICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9MODoKKyAgICAgICAgICAg
ICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBy
ZWQgPSBzb3VyY2VbeCAqIDIgKyAxXSAmIDB4Rjg7CisgICAgICAgICAgICAgICAgICAgICAgICBk
ZXN0W3hdID0gcmVkIHwgKHJlZCA+PiA1KTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOworICAgICAgICAgICAg
ICAgICAgICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgY2FzZSBEM0RGTVRfQTFSNUc1QjU6CisgICAgICAgICAgICBzd2l0Y2goZ2V0RDNERm9y
bWF0KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4
OgorICAgICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7IHggPCB3aWR0
aDsgeCsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBzaG9ydCBhcmdiID0gKCh1bnNpZ25lZCBzaG9ydCopc291cmNlKVt4XTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcmVkID0gKGFyZ2IgJiAweDdDMDApID4+
IDc7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGdyZWVuID0gKGFyZ2Ig
JiAweDAzRTApID4+IDI7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGJs
dWUgPSAoYXJnYiAmIDB4MDAxRikgPDwgMzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rb
eCArIDBdID0gYmx1ZSB8IChibHVlID4+IDUpOworICAgICAgICAgICAgICAgICAgICAgICAgZGVz
dFt4ICsgMV0gPSBncmVlbiB8IChncmVlbiA+PiA1KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlc3RbeCArIDJdID0gcmVkIHwgKHJlZCA+PiA1KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlc3RbeCArIDNdID0gMHhGRjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgICAg
ICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6CisgICAgICAg
ICAgICAgICAgZm9yKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgZm9yKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNo
b3J0IGFyZ2IgPSAoKHVuc2lnbmVkIHNob3J0Kilzb3VyY2UpW3hdOworICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciByZWQgPSAoYXJnYiAmIDB4N0MwMCkgPj4gNzsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZ3JlZW4gPSAoYXJnYiAmIDB4MDNFMCkg
Pj4gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYmx1ZSA9IChhcmdi
ICYgMHgwMDFGKSA8PCAzOworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBh
bHBoYSA9IChzaWduZWQgc2hvcnQpYXJnYiA+PiAxNTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlc3RbeCArIDBdID0gYmx1ZSB8IChibHVlID4+IDUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdFt4ICsgMV0gPSBncmVlbiB8IChncmVlbiA+PiA1KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RbeCArIDJdID0gcmVkIHwgKHJlZCA+PiA1KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RbeCArIDNdID0gYWxwaGE7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gc291cmNlTG9jay5QaXRjaDsKKyAgICAgICAgICAg
ICAgICAgICAgZGVzdCArPSBkZXN0TG9jay5QaXRjaDsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRDNERk1UX0w4OgorICAgICAg
ICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIHJlZCA9IHNvdXJjZVt4ICogMiArIDFdICYgMHg3QzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRlc3RbeF0gPSAocmVkIDw8IDEpIHwgKHJlZCA+PiA0KTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOwor
ICAgICAgICAgICAgICAgICAgICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRf
QThMODoKKyAgICAgICAgICAgICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHggPSAwOyB4IDwg
d2lkdGg7IHgrKykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciByZWQgPSBzb3VyY2VbeCAqIDIgKyAxXSAmIDB4N0M7CisgICAgICAg
ICAgICAgICAgICAgICAgICBkZXN0W3ggKiAyICsgMF0gPSAocmVkIDw8IDEpIHwgKHJlZCA+PiA0
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbeCAqIDIgKyAxXSA9IChzaWduZWQgY2hh
cilzb3VyY2VbeCAqIDIgKyAxXSA+PiA3OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7CisgICAgICAgICAgICAg
ICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHVubG9jaygpOworICAgIHJlbmRlclRhcmdldERhdGEtPlVubG9ja1JlY3QoKTsK
KworICAgIHJlbmRlclRhcmdldERhdGEtPlJlbGVhc2UoKTsKKyAgICBzdXJmYWNlLT5SZWxlYXNl
KCk7CisKKyAgICBtRGlydHkgPSB0cnVlOworfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9JbWFnZTkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0ltYWdlOS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTkuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3OSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW1hZ2U5Lmg6IERlZmluZXMg
dGhlIHJ4OjpJbWFnZTkgY2xhc3MsIHdoaWNoIGFjdHMgYXMgdGhlIGludGVyZmFjZSB0bworLy8g
dGhlIGFjdHVhbCB1bmRlcmx5aW5nIHN1cmZhY2VzIG9mIGEgVGV4dHVyZS4KKworI2lmbmRlZiBM
SUJHTEVTVjJfUkVOREVSRVJfSU1BR0U5X0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9J
TUFHRTlfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5oIgorI2luY2x1
ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIEZyYW1lYnVmZmVy
OworfQorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOworY2xhc3MgUmVuZGVyZXI5
OworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDsKK2NsYXNzIFRleHR1cmVTdG9yYWdl
SW50ZXJmYWNlQ3ViZTsKKworY2xhc3MgSW1hZ2U5IDogcHVibGljIEltYWdlCit7CisgIHB1Ymxp
YzoKKyAgICBJbWFnZTkoKTsKKyAgICB+SW1hZ2U5KCk7CisKKyAgICBzdGF0aWMgSW1hZ2U5ICpt
YWtlSW1hZ2U5KEltYWdlICppbWcpOworCisgICAgc3RhdGljIHZvaWQgZ2VuZXJhdGVNaXBtYXAo
SW1hZ2U5ICpkZXN0LCBJbWFnZTkgKnNvdXJjZSk7CisgICAgc3RhdGljIHZvaWQgZ2VuZXJhdGVN
aXAoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3RTdXJmYWNlLCBJRGlyZWN0M0RTdXJmYWNlOSAqc291
cmNlU3VyZmFjZSk7CisgICAgc3RhdGljIHZvaWQgY29weUxvY2thYmxlU3VyZmFjZXMoSURpcmVj
dDNEU3VyZmFjZTkgKmRlc3QsIElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UpOworCisgICAgdmly
dHVhbCBib29sIHJlZGVmaW5lKFJlbmRlcmVyICpyZW5kZXJlciwgR0xpbnQgaW50ZXJuYWxmb3Jt
YXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBib29sIGZvcmNlUmVsZWFzZSk7CisK
KyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJhYmxlRm9ybWF0KCkgY29uc3Q7CisgICAgRDNERk9S
TUFUIGdldEQzREZvcm1hdCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzRGlydHkoKSBj
b25zdCB7cmV0dXJuIG1TdXJmYWNlICYmIG1EaXJ0eTt9CisgICAgSURpcmVjdDNEU3VyZmFjZTkg
KmdldFN1cmZhY2UoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRNYW5hZ2VkU3VyZmFjZShUZXh0
dXJlU3RvcmFnZUludGVyZmFjZTJEICpzdG9yYWdlLCBpbnQgbGV2ZWwpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRNYW5hZ2VkU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKnN0b3Jh
Z2UsIGludCBmYWNlLCBpbnQgbGV2ZWwpOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVTdXJmYWNl
KFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIGludCBsZXZlbCwgR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworICAg
IHZpcnR1YWwgYm9vbCB1cGRhdGVTdXJmYWNlKFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSAq
c3RvcmFnZSwgaW50IGZhY2UsIGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNl
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworCisgICAgdmlydHVhbCB2b2lkIGxv
YWREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25z
dCB2b2lkICppbnB1dCk7CisgICAgdmlydHVhbCB2b2lkIGxvYWRDb21wcmVzc2VkRGF0YShHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmlucHV0KTsK
KworICAgIHZpcnR1YWwgdm9pZCBjb3B5KEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBnbDo6RnJhbWVi
dWZmZXIgKnNvdXJjZSk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oSW1hZ2U5KTsKKworICAgIHZvaWQgY3JlYXRlU3VyZmFjZSgpOworICAgIHZvaWQgc2V0TWFu
YWdlZFN1cmZhY2UoSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UpOworICAgIGJvb2wgdXBkYXRl
U3VyZmFjZShJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworCisgICAgSFJFU1VMVCBsb2Nr
KEQzRExPQ0tFRF9SRUNUICpsb2NrZWRSZWN0LCBjb25zdCBSRUNUICpyZWN0KTsKKyAgICB2b2lk
IHVubG9jaygpOworICAgIAorICAgIFJlbmRlcmVyOSAqbVJlbmRlcmVyOworCisgICAgRDNEUE9P
TCBtRDNEUG9vbDsgICAvLyBjYW4gb25seSBiZSBEM0RQT09MX1NZU1RFTU1FTSBvciBEM0RQT09M
X01BTkFHRUQgc2luY2UgaXQgbmVlZHMgdG8gYmUgbG9ja2FibGUuCisgICAgRDNERk9STUFUIG1E
M0RGb3JtYXQ7CisKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqbVN1cmZhY2U7Cit9OworfQorCisj
ZW5kaWYgICAvLyBMSUJHTEVTVjJfUkVOREVSRVJfSU1BR0U5X0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1h
Z2UxMS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1NyBA
QAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW1hZ2UxMS5o
OiBJbXBsZW1lbnRzIHRoZSByeDo6SW1hZ2UxMSBjbGFzcywgd2hpY2ggYWN0cyBhcyB0aGUgaW50
ZXJmYWNlIHRvCisvLyB0aGUgYWN0dWFsIHVuZGVybHlpbmcgcmVzb3VyY2VzIG9mIGEgVGV4dHVy
ZQorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5k
ZXJlci9UZXh0dXJlU3RvcmFnZTExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0ZyYW1lYnVmZmVy
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgorCisjaW5jbHVkZSAibGli
R0xFU3YyL21haW4uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvZ2VuZXJhdGVtaXAuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0ltYWdl
MTE6OkltYWdlMTEoKQoreworICAgIG1TdGFnaW5nVGV4dHVyZSA9IE5VTEw7CisgICAgbVJlbmRl
cmVyID0gTlVMTDsKKyAgICBtRFhHSUZvcm1hdCA9IERYR0lfRk9STUFUX1VOS05PV047Cit9CisK
K0ltYWdlMTE6On5JbWFnZTExKCkKK3sKKyAgICBpZiAobVN0YWdpbmdUZXh0dXJlKQorICAgIHsK
KyAgICAgICAgbVN0YWdpbmdUZXh0dXJlLT5SZWxlYXNlKCk7CisgICAgfQorfQorCitJbWFnZTEx
ICpJbWFnZTExOjptYWtlSW1hZ2UxMShJbWFnZSAqaW1nKQoreworICAgIEFTU0VSVChIQVNfRFlO
QU1JQ19UWVBFKHJ4OjpJbWFnZTExKiwgaW1nKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHJ4
OjpJbWFnZTExKj4oaW1nKTsKK30KKwordm9pZCBJbWFnZTExOjpnZW5lcmF0ZU1pcG1hcChJbWFn
ZTExICpkZXN0LCBJbWFnZTExICpzcmMpCit7CisgICAgQVNTRVJUKHNyYy0+Z2V0RFhHSUZvcm1h
dCgpID09IGRlc3QtPmdldERYR0lGb3JtYXQoKSk7CisgICAgQVNTRVJUKHNyYy0+Z2V0V2lkdGgo
KSA9PSAxIHx8IHNyYy0+Z2V0V2lkdGgoKSAvIDIgPT0gZGVzdC0+Z2V0V2lkdGgoKSk7CisgICAg
QVNTRVJUKHNyYy0+Z2V0SGVpZ2h0KCkgPT0gMSB8fCBzcmMtPmdldEhlaWdodCgpIC8gMiA9PSBk
ZXN0LT5nZXRIZWlnaHQoKSk7CisKKyAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgZGVzdE1h
cHBlZCwgc3JjTWFwcGVkOworICAgIGRlc3QtPm1hcCgmZGVzdE1hcHBlZCk7CisgICAgc3JjLT5t
YXAoJnNyY01hcHBlZCk7CisKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzb3VyY2VEYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oc3JjTWFwcGVkLnBEYXRhKTsK
KyAgICB1bnNpZ25lZCBjaGFyICpkZXN0RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQg
Y2hhcio+KGRlc3RNYXBwZWQucERhdGEpOworCisgICAgaWYgKHNvdXJjZURhdGEgJiYgZGVzdERh
dGEpCisgICAgeworICAgICAgICBzd2l0Y2ggKHNyYy0+Z2V0RFhHSUZvcm1hdCgpKQorICAgICAg
ICB7CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAgICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOgorICAgICAgICAgICAgR2VuZXJhdGVN
aXA8UjhHOEI4QTg+KHNyYy0+Z2V0V2lkdGgoKSwgc3JjLT5nZXRIZWlnaHQoKSwgc291cmNlRGF0
YSwgc3JjTWFwcGVkLlJvd1BpdGNoLCBkZXN0RGF0YSwgZGVzdE1hcHBlZC5Sb3dQaXRjaCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX0E4X1VOT1JNOgor
ICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTg+KHNyYy0+Z2V0V2lkdGgoKSwgc3JjLT5nZXRIZWln
aHQoKSwgc291cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1BpdGNoLCBkZXN0RGF0YSwgZGVzdE1hcHBl
ZC5Sb3dQaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1I4X1VOT1JNOgorICAgICAgICAgICAgR2VuZXJhdGVNaXA8Ujg+KHNyYy0+Z2V0V2lkdGgo
KSwgc3JjLT5nZXRIZWlnaHQoKSwgc291cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1BpdGNoLCBkZXN0
RGF0YSwgZGVzdE1hcHBlZC5Sb3dQaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAgICAgIEdlbmVy
YXRlTWlwPEEzMkIzMkczMlIzMkY+KHNyYy0+Z2V0V2lkdGgoKSwgc3JjLT5nZXRIZWlnaHQoKSwg
c291cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1BpdGNoLCBkZXN0RGF0YSwgZGVzdE1hcHBlZC5Sb3dQ
aXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1Iz
MkczMkIzMl9GTE9BVDoKKyAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMkIzMkY+KHNyYy0+
Z2V0V2lkdGgoKSwgc3JjLT5nZXRIZWlnaHQoKSwgc291cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1Bp
dGNoLCBkZXN0RGF0YSwgZGVzdE1hcHBlZC5Sb3dQaXRjaCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoKKyAgICAgICAg
ICAgIEdlbmVyYXRlTWlwPEExNkIxNkcxNlIxNkY+KHNyYy0+Z2V0V2lkdGgoKSwgc3JjLT5nZXRI
ZWlnaHQoKSwgc291cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1BpdGNoLCBkZXN0RGF0YSwgZGVzdE1h
cHBlZC5Sb3dQaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1I4RzhfVU5PUk06CisgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4PihzcmMtPmdl
dFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCksIHNvdXJjZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRj
aCwgZGVzdERhdGEsIGRlc3RNYXBwZWQuUm93UGl0Y2gpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6CisgICAgICAgICAgICBHZW5lcmF0
ZU1pcDxSMTZGPihzcmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCksIHNvdXJjZURhdGEs
IHNyY01hcHBlZC5Sb3dQaXRjaCwgZGVzdERhdGEsIGRlc3RNYXBwZWQuUm93UGl0Y2gpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQ6
CisgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZGPihzcmMtPmdldFdpZHRoKCksIHNyYy0+
Z2V0SGVpZ2h0KCksIHNvdXJjZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRjaCwgZGVzdERhdGEsIGRl
c3RNYXBwZWQuUm93UGl0Y2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMzJfRkxPQVQ6CisgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzJGPihzcmMt
PmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCksIHNvdXJjZURhdGEsIHNyY01hcHBlZC5Sb3dQ
aXRjaCwgZGVzdERhdGEsIGRlc3RNYXBwZWQuUm93UGl0Y2gpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQ6CisgICAgICAgICAgICBH
ZW5lcmF0ZU1pcDxSMzJHMzJGPihzcmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCksIHNv
dXJjZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRjaCwgZGVzdERhdGEsIGRlc3RNYXBwZWQuUm93UGl0
Y2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGRlc3QtPnVubWFwKCk7CisgICAgICAgIHNyYy0+dW5tYXAoKTsKKyAgICB9CisKKyAgICBkZXN0
LT5tYXJrRGlydHkoKTsKK30KKworYm9vbCBJbWFnZTExOjppc0RpcnR5KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gKG1TdGFnaW5nVGV4dHVyZSAmJiBtRGlydHkpOworfQorCitib29sIEltYWdlMTE6
OnVwZGF0ZVN1cmZhY2UoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc3RvcmFnZSwgaW50IGxl
dmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCkKK3sKKyAgICBUZXh0dXJlU3RvcmFnZTExXzJEICpzdG9yYWdlMTEgPSBUZXh0dXJl
U3RvcmFnZTExXzJEOjptYWtlVGV4dHVyZVN0b3JhZ2UxMV8yRChzdG9yYWdlLT5nZXRTdG9yYWdl
SW5zdGFuY2UoKSk7CisgICAgcmV0dXJuIHN0b3JhZ2UxMS0+dXBkYXRlU3VicmVzb3VyY2VMZXZl
bChnZXRTdGFnaW5nVGV4dHVyZSgpLCBnZXRTdGFnaW5nU3VicmVzb3VyY2UoKSwgbGV2ZWwsIDAs
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpOworfQorCitib29sIEltYWdlMTE6OnVw
ZGF0ZVN1cmZhY2UoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBpbnQgZmFj
ZSwgaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBUZXh0dXJlU3RvcmFnZTExX0N1YmUgKnN0b3JhZ2Ux
MSA9IFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6bWFrZVRleHR1cmVTdG9yYWdlMTFfQ3ViZShzdG9y
YWdlLT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7CisgICAgcmV0dXJuIHN0b3JhZ2UxMS0+dXBkYXRl
U3VicmVzb3VyY2VMZXZlbChnZXRTdGFnaW5nVGV4dHVyZSgpLCBnZXRTdGFnaW5nU3VicmVzb3Vy
Y2UoKSwgbGV2ZWwsIGZhY2UsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpOworfQor
Citib29sIEltYWdlMTE6OnJlZGVmaW5lKFJlbmRlcmVyICpyZW5kZXJlciwgR0xpbnQgaW50ZXJu
YWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBib29sIGZvcmNlUmVsZWFz
ZSkKK3sKKyAgICBpZiAobVdpZHRoICE9IHdpZHRoIHx8CisgICAgICAgIG1IZWlnaHQgIT0gaGVp
Z2h0IHx8CisgICAgICAgIG1JbnRlcm5hbEZvcm1hdCAhPSBpbnRlcm5hbGZvcm1hdCB8fAorICAg
ICAgICBmb3JjZVJlbGVhc2UpCisgICAgeworICAgICAgICBtUmVuZGVyZXIgPSBSZW5kZXJlcjEx
OjptYWtlUmVuZGVyZXIxMShyZW5kZXJlcik7CisKKyAgICAgICAgbVdpZHRoID0gd2lkdGg7Cisg
ICAgICAgIG1IZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIG1JbnRlcm5hbEZvcm1hdCA9IGludGVy
bmFsZm9ybWF0OworICAgICAgICAvLyBjb21wdXRlIHRoZSBkM2QgZm9ybWF0IHRoYXQgd2lsbCBi
ZSB1c2VkCisgICAgICAgIG1EWEdJRm9ybWF0ID0gZ2xfZDNkMTE6OkNvbnZlcnRUZXh0dXJlRm9y
bWF0KGludGVybmFsZm9ybWF0KTsKKyAgICAgICAgbUFjdHVhbEZvcm1hdCA9IGQzZDExX2dsOjpD
b252ZXJ0VGV4dHVyZUludGVybmFsRm9ybWF0KG1EWEdJRm9ybWF0KTsKKworICAgICAgICBpZiAo
bVN0YWdpbmdUZXh0dXJlKQorICAgICAgICB7CisgICAgICAgICAgICBtU3RhZ2luZ1RleHR1cmUt
PlJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1TdGFnaW5nVGV4dHVyZSA9IE5VTEw7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBJbWFnZTExOjppc1JlbmRlcmFibGVGb3JtYXQoKSBjb25zdAorewor
ICAgIHJldHVybiBUZXh0dXJlU3RvcmFnZTExOjpJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKG1E
WEdJRm9ybWF0KTsKK30KKworRFhHSV9GT1JNQVQgSW1hZ2UxMTo6Z2V0RFhHSUZvcm1hdCgpIGNv
bnN0Cit7CisgICAgLy8gdGhpcyBzaG91bGQgb25seSBoYXBwZW4gaWYgdGhlIGltYWdlIGhhc24n
dCBiZWVuIHJlZGVmaW5lZCBmaXJzdAorICAgIC8vIHdoaWNoIHdvdWxkIGJlIGEgYnVnIGJ5IHRo
ZSBjYWxsZXIKKyAgICBBU1NFUlQobURYR0lGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTik7
CisKKyAgICByZXR1cm4gbURYR0lGb3JtYXQ7Cit9CisKKy8vIFN0b3JlIHRoZSBwaXhlbCByZWN0
YW5nbGUgZGVzaWduYXRlZCBieSB4b2Zmc2V0LHlvZmZzZXQsd2lkdGgsaGVpZ2h0IHdpdGggcGl4
ZWxzIHN0b3JlZCBhcyBmb3JtYXQvdHlwZSBhdCBpbnB1dAorLy8gaW50byB0aGUgdGFyZ2V0IHBp
eGVsIHJlY3RhbmdsZS4KK3ZvaWQgSW1hZ2UxMTo6bG9hZERhdGEoR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqaW5wdXQpCit7Cisg
ICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZEltYWdlOworICAgIEhSRVNVTFQgcmVz
dWx0ID0gbWFwKCZtYXBwZWRJbWFnZSk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsK
KyAgICAgICAgRVJSKCJDb3VsZCBub3QgbWFwIGltYWdlIGZvciBsb2FkaW5nLiIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIEdMc2l6ZWkgaW5wdXRQaXRjaCA9IGdsOjpDb21w
dXRlUGl0Y2god2lkdGgsIG1JbnRlcm5hbEZvcm1hdCwgdW5wYWNrQWxpZ25tZW50KTsKKyAgICBz
aXplX3QgcGl4ZWxTaXplID0gZDNkMTE6OkNvbXB1dGVQaXhlbFNpemVCaXRzKG1EWEdJRm9ybWF0
KSAvIDg7CisgICAgdm9pZCogb2Zmc2V0TWFwcGVkRGF0YSA9ICh2b2lkKikoKEJZVEUgKiltYXBw
ZWRJbWFnZS5wRGF0YSArICh5b2Zmc2V0ICogbWFwcGVkSW1hZ2UuUm93UGl0Y2ggKyB4b2Zmc2V0
ICogcGl4ZWxTaXplKSk7CisKKyAgICBzd2l0Y2ggKG1JbnRlcm5hbEZvcm1hdCkKKyAgICB7Cisg
ICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6CisgICAgICAgIGxvYWRBbHBoYURhdGFUb05hdGl2ZSh3
aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9m
ZnNldE1hcHBlZERhdGEpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNF
OF9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VEYXRhVG9OYXRpdmVPckJHUkEod2lkdGgsIGhl
aWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBw
ZWREYXRhLCBmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTFBIQTMyRl9F
WFQ6CisgICAgICAgIGxvYWRBbHBoYUZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1
dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOwor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMzJGX0VYVDoKKyAgICAgICAg
bG9hZEx1bWluYW5jZUZsb2F0RGF0YVRvUkdCKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlu
cHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CisgICAgICAgIGxvYWRBbHBoYUhhbGZG
bG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZElt
YWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VIYWxmRmxvYXRE
YXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5S
b3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VBbHBoYURhdGFU
b05hdGl2ZU9yQkdSQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1h
Z2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEsIGZhbHNlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFu
Y2VBbHBoYUZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwg
bWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoKKyAgICAgICAgbG9hZEx1bWlu
YW5jZUFscGhhSGFsZkZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBp
bnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICAgIGxvYWRSR0JVQnl0ZURhdGFU
b1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1Bp
dGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JH
QjU2NToKKyAgICAgICAgbG9hZFJHQjU2NURhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQ
aXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzoKKyAgICAgICAgbG9hZFJHQkFV
Qnl0ZURhdGFUb05hdGl2ZSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVk
SW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOworICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgR0xfUkdCQTQ6CisgICAgICAgIGxvYWRSR0JBNDQ0NERhdGFUb1JHQkEod2lkdGgsIGhl
aWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBw
ZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjVfQTE6CisgICAgICAg
IGxvYWRSR0JBNTU1MURhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQs
IG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgICAgbG9hZEJHUkFEYXRhVG9CR1JBKHdp
ZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zm
c2V0TWFwcGVkRGF0YSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0IzMkZfRVhU
OgorICAgICAgICBsb2FkUkdCRmxvYXREYXRhVG9OYXRpdmUod2lkdGgsIGhlaWdodCwgaW5wdXRQ
aXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6CisgICAgICAgIGxvYWRSR0JI
YWxmRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBtYXBw
ZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoKKyAgICAgICAgbG9hZFJHQkFGbG9hdERhdGFUb1JHQkEo
d2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBv
ZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQkExNkZf
RVhUOgorICAgICAgICBsb2FkUkdCQUhhbGZGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwg
aW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRh
KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAKKyAgICB9
CisKKyAgICB1bm1hcCgpOworfQorCit2b2lkIEltYWdlMTE6OmxvYWRDb21wcmVzc2VkRGF0YShH
TGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5wdXQpCit7
CisgICAgQVNTRVJUKHhvZmZzZXQgJSA0ID09IDApOworICAgIEFTU0VSVCh5b2Zmc2V0ICUgNCA9
PSAwKTsKKworICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRJbWFnZTsKKyAgICBI
UkVTVUxUIHJlc3VsdCA9IG1hcCgmbWFwcGVkSW1hZ2UpOworICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IG1hcCBpbWFnZSBmb3IgbG9hZGluZy4i
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFNpemUgY29tcHV0YXRpb24gYXNz
dW1lcyBhIDR4NCBibG9jayBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0CisgICAgc2l6ZV90IGJs
b2NrU2l6ZSA9IGQzZDExOjpDb21wdXRlQmxvY2tTaXplQml0cyhtRFhHSUZvcm1hdCkgLyA4Owor
ICAgIHZvaWQqIG9mZnNldE1hcHBlZERhdGEgPSAodm9pZCopKChCWVRFICopbWFwcGVkSW1hZ2Uu
cERhdGEgKyAoKHlvZmZzZXQgLyA0KSAqIG1hcHBlZEltYWdlLlJvd1BpdGNoICsgKHhvZmZzZXQg
LyA0KSAqIGJsb2NrU2l6ZSkpOworCisgICAgR0xzaXplaSBpbnB1dFNpemUgPSBnbDo6Q29tcHV0
ZUNvbXByZXNzZWRTaXplKHdpZHRoLCBoZWlnaHQsIG1JbnRlcm5hbEZvcm1hdCk7CisgICAgR0xz
aXplaSBpbnB1dFBpdGNoID0gZ2w6OkNvbXB1dGVDb21wcmVzc2VkUGl0Y2god2lkdGgsIG1JbnRl
cm5hbEZvcm1hdCk7CisgICAgaW50IHJvd3MgPSBpbnB1dFNpemUgLyBpbnB1dFBpdGNoOworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgKytpKQorICAgIHsKKyAgICAgICAgbWVtY3B5KCh2
b2lkKikoKEJZVEUqKW9mZnNldE1hcHBlZERhdGEgKyBpICogbWFwcGVkSW1hZ2UuUm93UGl0Y2gp
LCAodm9pZCopKChCWVRFKilpbnB1dCArIGkgKiBpbnB1dFBpdGNoKSwgaW5wdXRQaXRjaCk7Cisg
ICAgfQorCisgICAgdW5tYXAoKTsKK30KKwordm9pZCBJbWFnZTExOjpjb3B5KEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkKK3sKKyAgICBnbDo6UmVuZGVyYnVm
ZmVyICpjb2xvcmJ1ZmZlciA9IHNvdXJjZS0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7CisKKyAgICBp
ZiAoY29sb3JidWZmZXIgJiYgY29sb3JidWZmZXItPmdldEFjdHVhbEZvcm1hdCgpID09IChHTHVp
bnQpbUFjdHVhbEZvcm1hdCkKKyAgICB7CisgICAgICAgIC8vIE5vIGNvbnZlcnNpb24gbmVlZGVk
LS0gdXNlIGNvcHliYWNrIGZhc3RwYXRoCisgICAgICAgIElEM0QxMVRleHR1cmUyRCAqY29sb3JC
dWZmZXJUZXh0dXJlID0gTlVMTDsKKyAgICAgICAgdW5zaWduZWQgaW50IHN1YnJlc291cmNlSW5k
ZXggPSAwOworCisgICAgICAgIGlmIChtUmVuZGVyZXItPmdldFJlbmRlclRhcmdldFJlc291cmNl
KGNvbG9yYnVmZmVyLCAmc3VicmVzb3VyY2VJbmRleCwgJmNvbG9yQnVmZmVyVGV4dHVyZSkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleHR1cmVEZXNjOwor
ICAgICAgICAgICAgY29sb3JCdWZmZXJUZXh0dXJlLT5HZXREZXNjKCZ0ZXh0dXJlRGVzYyk7CisK
KyAgICAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2Uo
KTsKKyAgICAgICAgICAgIElEM0QxMURldmljZUNvbnRleHQgKmRldmljZUNvbnRleHQgPSBtUmVu
ZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKKworICAgICAgICAgICAgSUQzRDExVGV4dHVyZTJE
KiBzcmNUZXggPSBOVUxMOworICAgICAgICAgICAgaWYgKHRleHR1cmVEZXNjLlNhbXBsZURlc2Mu
Q291bnQgPiAxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEQzRDExX1RFWFRVUkUy
RF9ERVNDIHJlc29sdmVEZXNjOworICAgICAgICAgICAgICAgIHJlc29sdmVEZXNjLldpZHRoID0g
dGV4dHVyZURlc2MuV2lkdGg7CisgICAgICAgICAgICAgICAgcmVzb2x2ZURlc2MuSGVpZ2h0ID0g
dGV4dHVyZURlc2MuSGVpZ2h0OworICAgICAgICAgICAgICAgIHJlc29sdmVEZXNjLk1pcExldmVs
cyA9IDE7CisgICAgICAgICAgICAgICAgcmVzb2x2ZURlc2MuQXJyYXlTaXplID0gMTsKKyAgICAg
ICAgICAgICAgICByZXNvbHZlRGVzYy5Gb3JtYXQgPSB0ZXh0dXJlRGVzYy5Gb3JtYXQ7CisgICAg
ICAgICAgICAgICAgcmVzb2x2ZURlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7CisgICAgICAgICAg
ICAgICAgcmVzb2x2ZURlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKKyAgICAgICAgICAgICAg
ICByZXNvbHZlRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAgICAgICAgICAg
ICAgcmVzb2x2ZURlc2MuQmluZEZsYWdzID0gMDsKKyAgICAgICAgICAgICAgICByZXNvbHZlRGVz
Yy5DUFVBY2Nlc3NGbGFncyA9IDA7CisgICAgICAgICAgICAgICAgcmVzb2x2ZURlc2MuTWlzY0Zs
YWdzID0gMDsKKworICAgICAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVh
dGVUZXh0dXJlMkQoJnJlc29sdmVEZXNjLCBOVUxMLCAmc3JjVGV4KTsKKyAgICAgICAgICAgICAg
ICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBFUlIoIkZhaWxlZCB0byBjcmVhdGUgcmVzb2x2ZSB0ZXh0dXJlIGZvciBJbWFnZTExOjpj
b3B5LCBIUkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkZXZpY2VDb250ZXh0LT5S
ZXNvbHZlU3VicmVzb3VyY2Uoc3JjVGV4LCAwLCBjb2xvckJ1ZmZlclRleHR1cmUsIHN1YnJlc291
cmNlSW5kZXgsIHRleHR1cmVEZXNjLkZvcm1hdCk7CisgICAgICAgICAgICAgICAgc3VicmVzb3Vy
Y2VJbmRleCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgc3JjVGV4ID0gY29sb3JCdWZmZXJUZXh0dXJlOworICAgICAg
ICAgICAgICAgIHNyY1RleC0+QWRkUmVmKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IEQzRDExX0JPWCBzcmNCb3g7CisgICAgICAgICAgICBzcmNCb3gubGVmdCA9IHg7CisgICAgICAg
ICAgICBzcmNCb3gucmlnaHQgPSB4ICsgd2lkdGg7CisgICAgICAgICAgICBzcmNCb3gudG9wID0g
eTsKKyAgICAgICAgICAgIHNyY0JveC5ib3R0b20gPSB5ICsgaGVpZ2h0OworICAgICAgICAgICAg
c3JjQm94LmZyb250ID0gMDsKKyAgICAgICAgICAgIHNyY0JveC5iYWNrID0gMTsKKworICAgICAg
ICAgICAgZGV2aWNlQ29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKG1TdGFnaW5nVGV4dHVy
ZSwgMCwgeG9mZnNldCwgeW9mZnNldCwgMCwgc3JjVGV4LCBzdWJyZXNvdXJjZUluZGV4LCAmc3Jj
Qm94KTsKKworICAgICAgICAgICAgc3JjVGV4LT5SZWxlYXNlKCk7CisgICAgICAgICAgICBjb2xv
ckJ1ZmZlclRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICAvLyBUaGlzIGZvcm1hdCByZXF1aXJlcyBjb252ZXJzaW9uLCBzbyB3ZSBt
dXN0IGNvcHkgdGhlIHRleHR1cmUgdG8gc3RhZ2luZyBhbmQgbWFudWFsbHkgY29udmVydCB2aWEg
cmVhZFBpeGVscworICAgICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkSW1hZ2U7
CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbWFwKCZtYXBwZWRJbWFnZSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgLy8gZGV0ZXJtaW5lIHRoZSBvZmZzZXQgY29vcmRpbmF0ZSBpbnRvIHRoZSBk
ZXN0aW5hdGlvbiBidWZmZXIKKyAgICAgICAgR0xzaXplaSByb3dPZmZzZXQgPSBnbDo6Q29tcHV0
ZVBpeGVsU2l6ZShtQWN0dWFsRm9ybWF0KSAqIHhvZmZzZXQ7CisgICAgICAgIHZvaWQgKmRhdGFP
ZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4obWFwcGVkSW1hZ2UucERhdGEpICsg
bWFwcGVkSW1hZ2UuUm93UGl0Y2ggKiB5b2Zmc2V0ICsgcm93T2Zmc2V0OworCisgICAgICAgIG1S
ZW5kZXJlci0+cmVhZFBpeGVscyhzb3VyY2UsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGdsOjpFeHRy
YWN0Rm9ybWF0KG1JbnRlcm5hbEZvcm1hdCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2w6OkV4dHJhY3RUeXBlKG1JbnRlcm5hbEZvcm1hdCksIG1hcHBlZEltYWdlLlJvd1BpdGNo
LCBmYWxzZSwgNCwgZGF0YU9mZnNldCk7CisKKyAgICAgICAgdW5tYXAoKTsKKyAgICB9Cit9CisK
K0lEM0QxMVRleHR1cmUyRCAqSW1hZ2UxMTo6Z2V0U3RhZ2luZ1RleHR1cmUoKQoreworICAgIGNy
ZWF0ZVN0YWdpbmdUZXh0dXJlKCk7CisKKyAgICByZXR1cm4gbVN0YWdpbmdUZXh0dXJlOworfQor
Cit1bnNpZ25lZCBpbnQgSW1hZ2UxMTo6Z2V0U3RhZ2luZ1N1YnJlc291cmNlKCkKK3sKKyAgICBj
cmVhdGVTdGFnaW5nVGV4dHVyZSgpOworCisgICAgcmV0dXJuIG1TdGFnaW5nU3VicmVzb3VyY2U7
Cit9CisKK3ZvaWQgSW1hZ2UxMTo6Y3JlYXRlU3RhZ2luZ1RleHR1cmUoKQoreworICAgIGlmICht
U3RhZ2luZ1RleHR1cmUpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSUQz
RDExVGV4dHVyZTJEICpuZXdUZXh0dXJlID0gTlVMTDsKKyAgICBpbnQgbG9kT2Zmc2V0ID0gMTsK
KyAgICBjb25zdCBEWEdJX0ZPUk1BVCBkeGdpRm9ybWF0ID0gZ2V0RFhHSUZvcm1hdCgpOworICAg
IEFTU0VSVCghZDNkMTE6OklzRGVwdGhTdGVuY2lsRm9ybWF0KGR4Z2lGb3JtYXQpKTsgLy8gV2Ug
c2hvdWxkIG5ldmVyIGdldCBoZXJlIGZvciBkZXB0aCB0ZXh0dXJlcworCisgICAgaWYgKG1XaWR0
aCAhPSAwICYmIG1IZWlnaHQgIT0gMCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgd2lkdGggPSBt
V2lkdGg7CisgICAgICAgIEdMc2l6ZWkgaGVpZ2h0ID0gbUhlaWdodDsKKworICAgICAgICAvLyBh
ZGp1c3Qgc2l6ZSBpZiBuZWVkZWQgZm9yIGNvbXByZXNzZWQgdGV4dHVyZXMKKyAgICAgICAgZ2w6
Ok1ha2VWYWxpZFNpemUoZmFsc2UsIGQzZDExOjpJc0NvbXByZXNzZWQoZHhnaUZvcm1hdCksICZ3
aWR0aCwgJmhlaWdodCwgJmxvZE9mZnNldCk7CisgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNl
ID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVT
QyBkZXNjOworICAgICAgICBkZXNjLldpZHRoID0gd2lkdGg7CisgICAgICAgIGRlc2MuSGVpZ2h0
ID0gaGVpZ2h0OworICAgICAgICBkZXNjLk1pcExldmVscyA9IGxvZE9mZnNldCArIDE7CisgICAg
ICAgIGRlc2MuQXJyYXlTaXplID0gMTsKKyAgICAgICAgZGVzYy5Gb3JtYXQgPSBkeGdpRm9ybWF0
OworICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICBkZXNjLlNhbXBs
ZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIGRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9TVEFH
SU5HOworICAgICAgICBkZXNjLkJpbmRGbGFncyA9IDA7CisgICAgICAgIGRlc2MuQ1BVQWNjZXNz
RmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOworICAgICAgICBkZXNjLk1pc2NGbGFncyA9
IDA7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgm
ZGVzYywgTlVMTCwgJm5ld1RleHR1cmUpOworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsK
KyAgICAgICAgICAgIEVSUigiQ3JlYXRpbmcgaW1hZ2UgZmFpbGVkLiIpOworICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIG1TdGFnaW5nVGV4dHVyZSA9IG5ld1RleHR1cmU7CisgICAgbVN0YWdpbmdTdWJyZXNvdXJj
ZSA9IEQzRDExQ2FsY1N1YnJlc291cmNlKGxvZE9mZnNldCwgMCwgbG9kT2Zmc2V0ICsgMSk7Cisg
ICAgbURpcnR5ID0gZmFsc2U7Cit9CisKK0hSRVNVTFQgSW1hZ2UxMTo6bWFwKEQzRDExX01BUFBF
RF9TVUJSRVNPVVJDRSAqbWFwKQoreworICAgIGNyZWF0ZVN0YWdpbmdUZXh0dXJlKCk7CisKKyAg
ICBIUkVTVUxUIHJlc3VsdCA9IEVfRkFJTDsKKworICAgIGlmIChtU3RhZ2luZ1RleHR1cmUpCisg
ICAgeworICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRl
cmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CisgICAgICAgIHJlc3VsdCA9IGRldmljZUNvbnRleHQt
Pk1hcChtU3RhZ2luZ1RleHR1cmUsIG1TdGFnaW5nU3VicmVzb3VyY2UsIEQzRDExX01BUF9XUklU
RSwgMCwgbWFwKTsKKworICAgICAgICAvLyB0aGlzIGNhbiBmYWlsIGlmIHRoZSBkZXZpY2UgaXMg
cmVtb3ZlZCAoZnJvbSBURFIpCisgICAgICAgIGlmIChkM2QxMTo6aXNEZXZpY2VMb3N0RXJyb3Io
cmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgbVJlbmRlcmVyLT5ub3RpZnlEZXZpY2VM
b3N0KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1EaXJ0eSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEltYWdlMTE6OnVubWFwKCkKK3sKKyAgICBp
ZiAobVN0YWdpbmdUZXh0dXJlKQorICAgIHsKKyAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAq
ZGV2aWNlQ29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOworICAgICAgICBk
ZXZpY2VDb250ZXh0LT5Vbm1hcChtU3RhZ2luZ1RleHR1cmUsIG1TdGFnaW5nU3VicmVzb3VyY2Up
OworICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9JbWFnZTExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTExLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEltYWdlMTEu
aDogRGVmaW5lcyB0aGUgcng6OkltYWdlMTEgY2xhc3MsIHdoaWNoIGFjdHMgYXMgdGhlIGludGVy
ZmFjZSB0bworLy8gdGhlIGFjdHVhbCB1bmRlcmx5aW5nIHJlc291cmNlcyBvZiBhIFRleHR1cmUK
KworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfSU1BR0UxMV9IXworI2RlZmluZSBMSUJHTEVT
VjJfUkVOREVSRVJfSU1BR0UxMV9IXworCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0lt
YWdlLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIGdsCit7Citj
bGFzcyBGcmFtZWJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsK
K2NsYXNzIFJlbmRlcmVyMTE7CitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEOworY2xh
c3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlOworCitjbGFzcyBJbWFnZTExIDogcHVibGlj
IEltYWdlCit7CisgIHB1YmxpYzoKKyAgICBJbWFnZTExKCk7CisgICAgdmlydHVhbCB+SW1hZ2Ux
MSgpOworCisgICAgc3RhdGljIEltYWdlMTEgKm1ha2VJbWFnZTExKEltYWdlICppbWcpOworCisg
ICAgc3RhdGljIHZvaWQgZ2VuZXJhdGVNaXBtYXAoSW1hZ2UxMSAqZGVzdCwgSW1hZ2UxMSAqc3Jj
KTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0RpcnR5KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJv
b2wgdXBkYXRlU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpzdG9yYWdlLCBpbnQg
bGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KTsKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlU3VyZmFjZShUZXh0dXJlU3RvcmFn
ZUludGVyZmFjZUN1YmUgKnN0b3JhZ2UsIGludCBmYWNlLCBpbnQgbGV2ZWwsIEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKworICAg
IHZpcnR1YWwgYm9vbCByZWRlZmluZShSZW5kZXJlciAqcmVuZGVyZXIsIEdMaW50IGludGVybmFs
Zm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgYm9vbCBmb3JjZVJlbGVhc2Up
OworCisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyYWJsZUZvcm1hdCgpIGNvbnN0OworICAgIERY
R0lfRk9STUFUIGdldERYR0lGb3JtYXQoKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQg
bG9hZERhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNv
bnN0IHZvaWQgKmlucHV0KTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZENvbXByZXNzZWREYXRhKEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5wdXQp
OworCisgICAgdmlydHVhbCB2b2lkIGNvcHkoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIGdsOjpGcmFt
ZWJ1ZmZlciAqc291cmNlKTsKKworICBwcm90ZWN0ZWQ6CisgICAgSFJFU1VMVCBtYXAoRDNEMTFf
TUFQUEVEX1NVQlJFU09VUkNFICptYXApOworICAgIHZvaWQgdW5tYXAoKTsKKworICBwcml2YXRl
OgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihJbWFnZTExKTsKKworICAgIElEM0QxMVRl
eHR1cmUyRCAqZ2V0U3RhZ2luZ1RleHR1cmUoKTsKKyAgICB1bnNpZ25lZCBpbnQgZ2V0U3RhZ2lu
Z1N1YnJlc291cmNlKCk7CisgICAgdm9pZCBjcmVhdGVTdGFnaW5nVGV4dHVyZSgpOworCisgICAg
UmVuZGVyZXIxMSAqbVJlbmRlcmVyOworCisgICAgRFhHSV9GT1JNQVQgbURYR0lGb3JtYXQ7Cisg
ICAgSUQzRDExVGV4dHVyZTJEICptU3RhZ2luZ1RleHR1cmU7CisgICAgdW5zaWduZWQgaW50IG1T
dGFnaW5nU3VicmVzb3VyY2U7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVS
RVJfSU1BR0UxMV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9JbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1NDggQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworLy8gSW1hZ2UuaDogSW1wbGVtZW50cyB0aGUgcng6OkltYWdlIGNs
YXNzLCBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0aGUgCisvLyByZW5kZXJlci1zcGVjaWZp
YyBjbGFzc2VzIHdoaWNoIHdpbGwgZGVmaW5lIHRoZSBpbnRlcmZhY2UgdG8gdGhlIHVuZGVybHlp
bmcKKy8vIHN1cmZhY2VzIG9yIHJlc291cmNlcy4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5k
ZXJlci9JbWFnZS5oIgorCituYW1lc3BhY2UgcngKK3sKKworSW1hZ2U6OkltYWdlKCkKK3sKKyAg
ICBtV2lkdGggPSAwOyAKKyAgICBtSGVpZ2h0ID0gMDsKKyAgICBtSW50ZXJuYWxGb3JtYXQgPSBH
TF9OT05FOworICAgIG1BY3R1YWxGb3JtYXQgPSBHTF9OT05FOworfQorCit2b2lkIEltYWdlOjps
b2FkQWxwaGFEYXRhVG9CR1JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5w
dXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7
CisgICAgCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAg
ICAgIHNvdXJjZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5
ICogaW5wdXRQaXRjaDsKKyAgICAgICAgZGVzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIq
PihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoOworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IDA7
CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSAwOworICAgICAgICAgICAgZGVzdFs0ICog
eCArIDJdID0gMDsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHNvdXJjZVt4XTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9hZEFscGhhRGF0YVRvTmF0aXZlKEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBp
dGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlID0g
TlVMTDsKKyAgICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkg
PSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSBzdGF0aWNfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2g7CisgICAgICAg
IGRlc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQ
aXRjaDsKKyAgICAgICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lkdGgpOworICAgIH0KK30KKwor
dm9pZCBJbWFnZTo6bG9hZEFscGhhRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1
dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRw
dXQpCit7CisgICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9IE5VTEw7CisgICAgZmxvYXQgKmRlc3Qg
PSBOVUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7Cisg
ICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihzdGF0aWNfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAg
ICBkZXN0ID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7
IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0g
PSAwOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gMDsKKyAgICAgICAgICAgIGRlc3Rb
NCAqIHggKyAyXSA9IDA7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBzb3VyY2VbeF07
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRBbHBoYUhhbGZGbG9hdERh
dGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1
dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgc2hvcnQgKmRlc3QgPSBOVUxM
OworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAg
IHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihzdGF0aWNf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAg
ICAgICBkZXN0ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0
WzQgKiB4ICsgMF0gPSAwOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gMDsKKyAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IDA7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10g
PSBzb3VyY2VbeF07CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRMdW1p
bmFuY2VEYXRhVG9OYXRpdmVPckJHUkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNo
LCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQsIGJv
b2wgbmF0aXZlKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9IE5VTEw7Cisg
ICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8
IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoOworICAgICAgICBkZXN0ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2g7CisK
KyAgICAgICAgaWYgKCFuYXRpdmUpICAgLy8gQkdSQTggZGVzdGluYXRpb24gZm9ybWF0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3VyY2VbeF07Cisg
ICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNlW3hdOworICAgICAgICAgICAg
ICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgICAgICBkZXN0WzQg
KiB4ICsgM10gPSAweEZGOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2Ug
ICAvLyBMOCBkZXN0aW5hdGlvbiBmb3JtYXQKKyAgICAgICAgeworICAgICAgICAgICAgbWVtY3B5
KGRlc3QsIHNvdXJjZSwgd2lkdGgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdl
Ojpsb2FkTHVtaW5hbmNlRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQ
aXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0
KQoreworICAgIGNvbnN0IGZsb2F0ICpzb3VyY2UgPSBOVUxMOworICAgIGZsb2F0ICpkZXN0ID0g
TlVMTDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAg
ICAgICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oc3RhdGljX2Nhc3Q8
Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKKyAgICAgICAg
ZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Kj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4
IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0g
c291cmNlW3hdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNlW3hdOworICAg
ICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc291cmNlW3hdOworICAgICAgICAgICAgZGVzdFs0
ICogeCArIDNdID0gMS4wZjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9h
ZEx1bWluYW5jZUZsb2F0RGF0YVRvUkdCKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBj
b25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7Cisg
ICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9IE5VTEw7CisgICAgZmxvYXQgKmRlc3QgPSBOVUxMOwor
CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNv
dXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0g
cmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRw
dXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0
aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0WzMgKiB4ICsgMF0gPSBzb3VyY2Vb
eF07CisgICAgICAgICAgICBkZXN0WzMgKiB4ICsgMV0gPSBzb3VyY2VbeF07CisgICAgICAgICAg
ICBkZXN0WzMgKiB4ICsgMl0gPSBzb3VyY2VbeF07CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgSW1hZ2U6OmxvYWRMdW1pbmFuY2VIYWxmRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0
Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCAqc291cmNlID0g
TlVMTDsKKyAgICB1bnNpZ25lZCBzaG9ydCAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3IgKGludCB5
ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRlc3QgPSByZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91
dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdp
ZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9IHNvdXJj
ZVt4XTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4XTsKKyAgICAgICAg
ICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAzXSA9IDB4M0MwMDsgLy8gU0VFRUVFTU1NTU1NTU1NTSwgUyA9IDAsIEUgPSAxNSwgTSA9IDA6
IDE2Yml0IGZscHQgcmVwcmVzZW50YXRpb24gb2YgMQorICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIEltYWdlOjpsb2FkTHVtaW5hbmNlQWxwaGFEYXRhVG9OYXRpdmVPckJHUkEoR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qg
b3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCwgYm9vbCBuYXRpdmUpCit7CisgICAgY29uc3QgdW5z
aWduZWQgY2hhciAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gTlVM
TDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAg
ICBzb3VyY2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAq
IGlucHV0UGl0Y2g7CisgICAgICAgIGRlc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4o
b3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAgICAgICAgCisgICAgICAgIGlmICghbmF0aXZl
KSAgIC8vIEJHUkE4IGRlc3RpbmF0aW9uIGZvcm1hdAorICAgICAgICB7CisgICAgICAgICAgICBm
b3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlWzIqeCswXTsKKyAgICAgICAgICAgICAgICBk
ZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbMip4KzBdOworICAgICAgICAgICAgICAgIGRlc3RbNCAq
IHggKyAyXSA9IHNvdXJjZVsyKngrMF07CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDNd
ID0gc291cmNlWzIqeCsxXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1lbWNweShkZXN0LCBzb3VyY2UsIHdpZHRoICogMik7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRMdW1pbmFuY2VBbHBoYUZs
b2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qg
dm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNv
bnN0IGZsb2F0ICpzb3VyY2UgPSBOVUxMOworICAgIGZsb2F0ICpkZXN0ID0gTlVMTDsKKworICAg
IGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2Ug
PSByZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKKyAgICAgICAgZGVzdCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSAr
IHkgKiBvdXRwdXRQaXRjaCk7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgr
KykKKyAgICAgICAgeworICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlWzIqeCsw
XTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVsyKngrMF07CisgICAgICAg
ICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzb3VyY2VbMip4KzBdOworICAgICAgICAgICAgZGVzdFs0
ICogeCArIDNdID0gc291cmNlWzIqeCsxXTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJ
bWFnZTo6bG9hZEx1bWluYW5jZUFscGhhSGFsZkZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0
cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCAqc291
cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBzaG9ydCAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3Ig
KGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRlc3QgPSBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9
IHNvdXJjZVsyKngrMF07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbMip4
KzBdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc291cmNlWzIqeCswXTsKKyAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHNvdXJjZVsyKngrMV07CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRSR0JVQnl0ZURhdGFUb0JHUlgoR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
bnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpv
dXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlID0gTlVMTDsKKyAgICB1
bnNpZ25lZCBjaGFyICpkZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVp
Z2h0OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2g7CisgICAgICAgIGRlc3QgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAgICAg
ICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZXN0WzQgKiB4ICsgMF0gPSBzb3VyY2VbeCAqIDMgKyAyXTsKKyAgICAgICAgICAgIGRlc3Rb
NCAqIHggKyAxXSA9IHNvdXJjZVt4ICogMyArIDFdOworICAgICAgICAgICAgZGVzdFs0ICogeCAr
IDJdID0gc291cmNlW3ggKiAzICsgMF07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAw
eEZGOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdCVUJ5dGVEYXRh
VG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVf
dCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CisKKyAgICBm
b3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0g
c3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNo
OworICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5
ICogb3V0cHV0UGl0Y2g7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykK
KyAgICAgICAgeworICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlW3ggKiAzICsg
MF07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbeCAqIDMgKyAxXTsKKyAg
ICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4ICogMyArIDJdOworICAgICAgICAg
ICAgZGVzdFs0ICogeCArIDNdID0gMHhGRjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJ
bWFnZTo6bG9hZFJHQjU2NURhdGFUb0JHUkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qg
dm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOworICAgIHVuc2lnbmVkIGNoYXIgKmRl
c3QgPSBOVUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7
CisgICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQq
PihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0
Y2gpOworICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkg
KyB5ICogb3V0cHV0UGl0Y2g7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgr
KykKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcmdiYSA9IHNvdXJjZVt4
XTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9ICgocmdiYSAmIDB4MDAxRikgPDwgMykg
fCAoKHJnYmEgJiAweDAwMUYpID4+IDIpOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0g
KChyZ2JhICYgMHgwN0UwKSA+PiAzKSB8ICgocmdiYSAmIDB4MDdFMCkgPj4gOSk7CisgICAgICAg
ICAgICBkZXN0WzQgKiB4ICsgMl0gPSAoKHJnYmEgJiAweEY4MDApID4+IDgpIHwgKChyZ2JhICYg
MHhGODAwKSA+PiAxMyk7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAweEZGOworICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdCNTY1RGF0YVRvUkdCQShHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNo
LCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKnNvdXJjZSA9IE5V
TEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0g
MDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNo
YXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRlc3QgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICB1bnNp
Z25lZCBzaG9ydCByZ2JhID0gc291cmNlW3hdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDBd
ID0gKChyZ2JhICYgMHhGODAwKSA+PiA4KSB8ICgocmdiYSAmIDB4RjgwMCkgPj4gMTMpOworICAg
ICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gKChyZ2JhICYgMHgwN0UwKSA+PiAzKSB8ICgocmdi
YSAmIDB4MDdFMCkgPj4gOSk7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSAoKHJnYmEg
JiAweDAwMUYpIDw8IDMpIHwgKChyZ2JhICYgMHgwMDFGKSA+PiAyKTsKKyAgICAgICAgICAgIGRl
c3RbNCAqIHggKyAzXSA9IDB4RkY7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6
OmxvYWRSR0JGbG9hdERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2
b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29u
c3QgZmxvYXQgKnNvdXJjZSA9IE5VTEw7CisgICAgZmxvYXQgKmRlc3QgPSBOVUxMOworCisgICAg
Zm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0gcmVpbnRl
cnByZXRfY2FzdDxmbG9hdCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsg
eSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsr
KQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3VyY2VbeCAqIDMg
KyAwXTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4ICogMyArIDFdOwor
ICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc291cmNlW3ggKiAzICsgMl07CisgICAgICAg
ICAgICBkZXN0WzQgKiB4ICsgM10gPSAxLjBmOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IEltYWdlOjpsb2FkUkdCRmxvYXREYXRhVG9OYXRpdmUoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0
Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkK
K3sKKyAgICBjb25zdCBmbG9hdCAqc291cmNlID0gTlVMTDsKKyAgICBmbG9hdCAqZGVzdCA9IE5V
TEw7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAg
ICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHN0YXRpY19jYXN0PGNv
bnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRl
c3QgPSByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+
KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworICAgICAgICBtZW1jcHkoZGVzdCwgc291cmNl
LCB3aWR0aCAqIDEyKTsKKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRSR0JIYWxmRmxvYXRE
YXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0
LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBzaG9ydCAqZGVzdCA9IE5VTEw7
CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAg
c291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19j
YXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAg
ICAgIGRlc3QgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4oc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworICAgICAgICBmb3Ig
KGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3Rb
NCAqIHggKyAwXSA9IHNvdXJjZVt4ICogMyArIDBdOworICAgICAgICAgICAgZGVzdFs0ICogeCAr
IDFdID0gc291cmNlW3ggKiAzICsgMV07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSBz
b3VyY2VbeCAqIDMgKyAyXTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IDB4M0MwMDsg
Ly8gU0VFRUVFTU1NTU1NTU1NTSwgUyA9IDAsIEUgPSAxNSwgTSA9IDA6IDE2Yml0IGZscHQgcmVw
cmVzZW50YXRpb24gb2YgMQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2Fk
UkdCQVVCeXRlRGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lk
ICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3Qg
dW5zaWduZWQgaW50ICpzb3VyY2UgPSBOVUxMOworICAgIHVuc2lnbmVkIGludCAqZGVzdCA9IE5V
TEw7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAg
IHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgaW50Kj4oc3RhdGljX2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKKyAgICAg
ICAgZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4oc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworCisgICAgICAgIGZvciAo
aW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IHJnYmEgPSBzb3VyY2VbeF07CisgICAgICAgICAgICBkZXN0W3hdID0gKF9yb3RsKHJn
YmEsIDE2KSAmIDB4MDBmZjAwZmYpIHwgKHJnYmEgJiAweGZmMDBmZjAwKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9hZFJHQkFVQnl0ZURhdGFUb05hdGl2ZShHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0
Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgKnNvdXJjZSA9IE5V
TEw7CisgICAgdW5zaWduZWQgaW50ICpkZXN0ID0gTlVMTDsKKyAgICBmb3IgKGludCB5ID0gMDsg
eSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1bnNpZ25lZCBpbnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4o
aW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0gcmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCBpbnQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkg
KiBvdXRwdXRQaXRjaCk7CisKKyAgICAgICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lkdGggKiA0
KTsKKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRSR0JBNDQ0NERhdGFUb0JHUkEoR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNo
LCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKnNvdXJjZSA9IE5V
TEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0g
MDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNo
YXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRlc3QgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICB1bnNp
Z25lZCBzaG9ydCByZ2JhID0gc291cmNlW3hdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDBd
ID0gKChyZ2JhICYgMHgwMEYwKSA8PCAwKSB8ICgocmdiYSAmIDB4MDBGMCkgPj4gNCk7CisgICAg
ICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSAoKHJnYmEgJiAweDBGMDApID4+IDQpIHwgKChyZ2Jh
ICYgMHgwRjAwKSA+PiA4KTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9ICgocmdiYSAm
IDB4RjAwMCkgPj4gOCkgfCAoKHJnYmEgJiAweEYwMDApID4+IDEyKTsKKyAgICAgICAgICAgIGRl
c3RbNCAqIHggKyAzXSA9ICgocmdiYSAmIDB4MDAwRikgPDwgNCkgfCAoKHJnYmEgJiAweDAwMEYp
ID4+IDApOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdCQTQ0NDRE
YXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNp
emVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0ICpzb3VyY2UgPSBOVUxMOworICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOworCisg
ICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJj
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihzdGF0aWNfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBk
ZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0
Y2g7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgewor
ICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcmdiYSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAg
IGRlc3RbNCAqIHggKyAwXSA9ICgocmdiYSAmIDB4RjAwMCkgPj4gOCkgfCAoKHJnYmEgJiAweEYw
MDApID4+IDEyKTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9ICgocmdiYSAmIDB4MEYw
MCkgPj4gNCkgfCAoKHJnYmEgJiAweDBGMDApID4+IDgpOworICAgICAgICAgICAgZGVzdFs0ICog
eCArIDJdID0gKChyZ2JhICYgMHgwMEYwKSA8PCAwKSB8ICgocmdiYSAmIDB4MDBGMCkgPj4gNCk7
CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAoKHJnYmEgJiAweDAwMEYpIDw8IDQpIHwg
KChyZ2JhICYgMHgwMDBGKSA+PiAwKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbWFn
ZTo6bG9hZFJHQkE1NTUxRGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0
IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBjaGFyICpk
ZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAg
eworICAgICAgICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0
Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBp
dGNoKTsKKyAgICAgICAgZGVzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQp
ICsgeSAqIG91dHB1dFBpdGNoOworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4
KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHJnYmEgPSBzb3VyY2Vb
eF07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSAoKHJnYmEgJiAweDAwM0UpIDw8IDIp
IHwgKChyZ2JhICYgMHgwMDNFKSA+PiAzKTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9
ICgocmdiYSAmIDB4MDdDMCkgPj4gMykgfCAoKHJnYmEgJiAweDA3QzApID4+IDgpOworICAgICAg
ICAgICAgZGVzdFs0ICogeCArIDJdID0gKChyZ2JhICYgMHhGODAwKSA+PiA4KSB8ICgocmdiYSAm
IDB4RjgwMCkgPj4gMTMpOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gKHJnYmEgJiAw
eDAwMDEpID8gMHhGRiA6IDA7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6Omxv
YWRSR0JBNTU1MURhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lk
ICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9
IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAg
ICAgICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0
YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7
CisgICAgICAgIGRlc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkg
KiBvdXRwdXRQaXRjaDsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQor
ICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCByZ2JhID0gc291cmNlW3hdOwor
ICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gKChyZ2JhICYgMHhGODAwKSA+PiA4KSB8ICgo
cmdiYSAmIDB4RjgwMCkgPj4gMTMpOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gKChy
Z2JhICYgMHgwN0MwKSA+PiAzKSB8ICgocmdiYSAmIDB4MDdDMCkgPj4gOCk7CisgICAgICAgICAg
ICBkZXN0WzQgKiB4ICsgMl0gPSAoKHJnYmEgJiAweDAwM0UpIDw8IDIpIHwgKChyZ2JhICYgMHgw
MDNFKSA+PiAzKTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IChyZ2JhICYgMHgwMDAx
KSA/IDB4RkYgOiAwOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdC
QUZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICpp
bnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgZmxv
YXQgKnNvdXJjZSA9IE5VTEw7CisgICAgZmxvYXQgKmRlc3QgPSBOVUxMOworCisgICAgZm9yIChp
bnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0gcmVpbnRlcnByZXRf
Y2FzdDxmbG9hdCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsgeSAqIG91
dHB1dFBpdGNoKTsKKyAgICAgICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lkdGggKiAxNik7Cisg
ICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdCQUhhbGZGbG9hdERhdGFUb1JHQkEoR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0
UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzb3VyY2Ug
PSBOVUxMOworICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOworCisgICAgZm9yIChpbnQg
eSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHN0YXRpY19j
YXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaDsKKyAgICAg
ICAgZGVzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsgeSAqIG91dHB1
dFBpdGNoOworICAgICAgICBtZW1jcHkoZGVzdCwgc291cmNlLCB3aWR0aCAqIDgpOworICAgIH0K
K30KKwordm9pZCBJbWFnZTo6bG9hZEJHUkFEYXRhVG9CR1JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNo
LCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7
CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBj
aGFyICpkZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5Kysp
CisgICAgeworICAgICAgICBzb3VyY2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2g7CisgICAgICAgIGRlc3QgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAgICAgICAgbWVtY3B5
KGRlc3QsIHNvdXJjZSwgd2lkdGgqNCk7CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9JbWFnZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzMSBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gSW1hZ2UuaDogRGVmaW5lcyB0aGUgcng6OkltYWdlIGNsYXNzLCBhbiBh
YnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0aGUgCisvLyByZW5kZXJlci1zcGVjaWZpYyBjbGFzc2Vz
IHdoaWNoIHdpbGwgZGVmaW5lIHRoZSBpbnRlcmZhY2UgdG8gdGhlIHVuZGVybHlpbmcKKy8vIHN1
cmZhY2VzIG9yIHJlc291cmNlcy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfSU1BR0Vf
SF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX0lNQUdFX0hfCisKKyNpbmNsdWRlICJjb21t
b24vZGVidWcuaCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBGcmFtZWJ1ZmZlcjsKK30KKwor
bmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKK2NsYXNzIFRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlMkQ7CitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmU7CisKK2NsYXNzIElt
YWdlCit7CisgIHB1YmxpYzoKKyAgICBJbWFnZSgpOworICAgIHZpcnR1YWwgfkltYWdlKCkge307
CisKKyAgICBHTHNpemVpIGdldFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbVdpZHRoOyB9CisgICAg
R0xzaXplaSBnZXRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtSGVpZ2h0OyB9CisgICAgR0xlbnVt
IGdldEludGVybmFsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbUludGVybmFsRm9ybWF0OyB9Cisg
ICAgR0xlbnVtIGdldEFjdHVhbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1BY3R1YWxGb3JtYXQ7
IH0KKworICAgIHZvaWQgbWFya0RpcnR5KCkge21EaXJ0eSA9IHRydWU7fQorICAgIHZvaWQgbWFy
a0NsZWFuKCkge21EaXJ0eSA9IGZhbHNlO30KKyAgICB2aXJ0dWFsIGJvb2wgaXNEaXJ0eSgpIGNv
bnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRNYW5hZ2VkU3VyZmFjZShUZXh0dXJlU3Rv
cmFnZUludGVyZmFjZTJEICpzdG9yYWdlLCBpbnQgbGV2ZWwpIHt9OworICAgIHZpcnR1YWwgdm9p
ZCBzZXRNYW5hZ2VkU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKnN0b3JhZ2Us
IGludCBmYWNlLCBpbnQgbGV2ZWwpIHt9OworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVTdXJmYWNl
KFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIGludCBsZXZlbCwgR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1
YmUgKnN0b3JhZ2UsIGludCBmYWNlLCBpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlv
ZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgcmVkZWZpbmUoUmVuZGVyZXIgKnJlbmRlcmVyLCBHTGludCBpbnRlcm5hbGZvcm1hdCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIGJvb2wgZm9yY2VSZWxlYXNlKSA9IDA7CisK
KyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJhYmxlRm9ybWF0KCkgY29uc3QgPSAwOworICAgIAor
ICAgIHZpcnR1YWwgdm9pZCBsb2FkRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgIEdMaW50IHVu
cGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqaW5wdXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
bG9hZENvbXByZXNzZWREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqaW5wdXQpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBjb3B5KEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkgPSAwOworCisgICAgc3Rh
dGljIHZvaWQgbG9hZEFscGhhRGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBj
b25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAg
IHN0YXRpYyB2b2lkIGxvYWRBbHBoYURhdGFUb05hdGl2ZShHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0
UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1
dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEFscGhhRGF0YVRvQkdSQVNTRTIoR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gs
IHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEFscGhhRmxvYXREYXRhVG9SR0JB
KEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVf
dCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkQWxwaGFI
YWxmRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNv
bnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAg
c3RhdGljIHZvaWQgbG9hZEx1bWluYW5jZURhdGFUb05hdGl2ZU9yQkdSQShHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwg
dm9pZCAqb3V0cHV0LCBib29sIG5hdGl2ZSk7CisgICAgc3RhdGljIHZvaWQgbG9hZEx1bWluYW5j
ZUZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25z
dCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0
YXRpYyB2b2lkIGxvYWRMdW1pbmFuY2VGbG9hdERhdGFUb1JHQihHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZv
aWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEx1bWluYW5jZUhhbGZGbG9hdERhdGFU
b1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQg
KmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZv
aWQgbG9hZEx1bWluYW5jZUFscGhhRGF0YVRvTmF0aXZlT3JCR1JBKEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gs
IHZvaWQgKm91dHB1dCwgYm9vbCBuYXRpdmUpOworICAgIHN0YXRpYyB2b2lkIGxvYWRMdW1pbmFu
Y2VBbHBoYUZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0
UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1
dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEx1bWluYW5jZUFscGhhSGFsZkZsb2F0RGF0YVRvUkdC
QShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lk
ICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0YXRpYyB2
b2lkIGxvYWRSR0JVQnl0ZURhdGFUb0JHUlgoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwg
Y29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAg
ICBzdGF0aWMgdm9pZCBsb2FkUkdCVUJ5dGVEYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlu
cHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91
dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQjU2NURhdGFUb0JHUkEoR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZv
aWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQjU2NURhdGFUb1JHQkEoR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0
Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQkZsb2F0RGF0YVRvUkdC
QShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90
IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0YXRpYyB2b2lkIGxvYWRSR0JGbG9h
dERhdGFUb05hdGl2ZShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQg
KmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZv
aWQgbG9hZFJHQkhhbGZGbG9hdERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0
UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1
dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQkFVQnl0ZURhdGFUb0JHUkFTU0UyKEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRw
dXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkUkdCQVVCeXRlRGF0
YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQs
IHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBsb2Fk
UkdCQVVCeXRlRGF0YVRvTmF0aXZlKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNv
bnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAg
c3RhdGljIHZvaWQgbG9hZFJHQkE0NDQ0RGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1
dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRw
dXQpOworICAgIHN0YXRpYyB2b2lkIGxvYWRSR0JBNDQ0NERhdGFUb1JHQkEoR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwg
dm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkUkdCQTU1NTFEYXRhVG9CR1JBKEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0
cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQkE1NTUxRGF0
YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwg
c2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0YXRpYyB2b2lkIGxvYWRS
R0JBRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2
b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0YXRp
YyB2b2lkIGxvYWRSR0JBSGFsZkZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQg
Km91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEJHUkFEYXRhVG9CR1JBKEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9p
ZCAqb3V0cHV0KTsKKworICBwcm90ZWN0ZWQ6CisgICAgR0xzaXplaSBtV2lkdGg7CisgICAgR0xz
aXplaSBtSGVpZ2h0OworICAgIEdMaW50IG1JbnRlcm5hbEZvcm1hdDsKKyAgICBHTGVudW0gbUFj
dHVhbEZvcm1hdDsKKworICAgIGJvb2wgbURpcnR5OworCisgIHByaXZhdGU6CisgICAgRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKEltYWdlKTsKK307CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNW
Ml9SRU5ERVJFUl9JTUFHRV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9JbWFnZVNTRTIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2VTU0UyLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
SW1hZ2VTU0UyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDAgQEAKKyNpbmNsdWRlICJw
cmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW1hZ2VTU0UyLmNwcDogSW1w
bGVtZW50cyBTU0UyLWJhc2VkIGZ1bmN0aW9ucyBvZiByeDo6SW1hZ2UgY2xhc3MuIEl0J3MKKy8v
IGluIGEgc2VwYXJhdGVkIGZpbGUgZm9yIEdDQywgd2hpY2ggY2FuIGVuYWJsZSBTU0UgdXNhZ2Ug
b25seSBwZXItZmlsZSwKKy8vIG5vdCBmb3IgY29kZSBibG9ja3MgdGhhdCB1c2UgU1NFMiBleHBs
aWNpdGx5LgorCisjaW5jbHVkZSAibGliR0xFU3YyL1RleHR1cmUuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvSW1hZ2UuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK3ZvaWQgSW1hZ2U6
OmxvYWRSR0JBVUJ5dGVEYXRhVG9CR1JBU1NFMihHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRj
aCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQor
eworICAgIGNvbnN0IHVuc2lnbmVkIGludCAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBp
bnQgKmRlc3QgPSBOVUxMOworICAgIF9fbTEyOGkgYnJNYXNrID0gX21tX3NldDFfZXBpMzIoMHgw
MGZmMDBmZik7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsK
KyAgICAgICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBpbnQqPihz
dGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gp
OworICAgICAgICBkZXN0ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7CisgICAgICAg
IGludCB4ID0gMDsKKworICAgICAgICAvLyBNYWtlIG91dHB1dCB3cml0ZXMgYWxpZ25lZAorICAg
ICAgICBmb3IgKHggPSAwOyAoKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KCZkZXN0W3hdKSAm
IDE1KSAhPSAwKSAmJiB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgdW5z
aWduZWQgaW50IHJnYmEgPSBzb3VyY2VbeF07CisgICAgICAgICAgICBkZXN0W3hdID0gKF9yb3Rs
KHJnYmEsIDE2KSAmIDB4MDBmZjAwZmYpIHwgKHJnYmEgJiAweGZmMDBmZjAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZvciAoOyB4ICsgMyA8IHdpZHRoOyB4ICs9IDQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIF9fbTEyOGkgc291cmNlRGF0YSA9IF9tbV9sb2FkdV9zaTEyOChyZWludGVycHJl
dF9jYXN0PGNvbnN0IF9fbTEyOGkqPigmc291cmNlW3hdKSk7CisgICAgICAgICAgICAvLyBNYXNr
IG91dCBnIGFuZCBhLCB3aGljaCBkb24ndCBjaGFuZ2UKKyAgICAgICAgICAgIF9fbTEyOGkgZ2FD
b21wb25lbnRzID0gX21tX2FuZG5vdF9zaTEyOChick1hc2ssIHNvdXJjZURhdGEpOworICAgICAg
ICAgICAgLy8gTWFzayBvdXQgYiBhbmQgcgorICAgICAgICAgICAgX19tMTI4aSBickNvbXBvbmVu
dHMgPSBfbW1fYW5kX3NpMTI4KHNvdXJjZURhdGEsIGJyTWFzayk7CisgICAgICAgICAgICAvLyBT
d2FwIGIgYW5kIHIKKyAgICAgICAgICAgIF9fbTEyOGkgYnJTd2FwcGVkID0gX21tX3NodWZmbGVo
aV9lcGkxNihfbW1fc2h1ZmZsZWxvX2VwaTE2KGJyQ29tcG9uZW50cywgX01NX1NIVUZGTEUoMiwg
MywgMCwgMSkpLCBfTU1fU0hVRkZMRSgyLCAzLCAwLCAxKSk7CisgICAgICAgICAgICBfX20xMjhp
IHJlc3VsdCA9IF9tbV9vcl9zaTEyOChnYUNvbXBvbmVudHMsIGJyU3dhcHBlZCk7CisgICAgICAg
ICAgICBfbW1fc3RvcmVfc2kxMjgocmVpbnRlcnByZXRfY2FzdDxfX20xMjhpKj4oJmRlc3RbeF0p
LCByZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUGVyZm9ybSBsZWZ0b3ZlciB3cml0
ZXMKKyAgICAgICAgZm9yICg7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgcmdiYSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgIGRlc3RbeF0gPSAo
X3JvdGwocmdiYSwgMTYpICYgMHgwMGZmMDBmZikgfCAocmdiYSAmIDB4ZmYwMGZmMDApOworICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkQWxwaGFEYXRhVG9CR1JBU1NFMihH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1
dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNl
ID0gTlVMTDsKKyAgICB1bnNpZ25lZCBpbnQgKmRlc3QgPSBOVUxMOworICAgIF9fbTEyOGkgemVy
b1dpZGUgPSBfbW1fc2V0emVyb19zaTEyOCgpOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBo
ZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaDsKKyAgICAgICAgZGVzdCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+
KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworCisgICAgICAgIGludCB4OworICAgICAgICAv
LyBNYWtlIG91dHB1dCB3cml0ZXMgYWxpZ25lZAorICAgICAgICBmb3IgKHggPSAwOyAoKHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KCZkZXN0W3hdKSAmIDB4RikgIT0gMCAmJiB4IDwgd2lkdGgp
OyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbeF0gPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KHNvdXJjZVt4XSkgPDwgMjQ7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKDsg
eCArIDcgPCB3aWR0aDsgeCArPSA4KQorICAgICAgICB7CisgICAgICAgICAgICBfX20xMjhpIHNv
dXJjZURhdGEgPSBfbW1fbG9hZGxfZXBpNjQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBfX20xMjhp
Kj4oJnNvdXJjZVt4XSkpOworICAgICAgICAgICAgLy8gSW50ZXJsZWF2ZSBlYWNoIGJ5dGUgdG8g
MTZiaXQsIG1ha2UgdGhlIGxvd2VyIGJ5dGUgdG8gemVybworICAgICAgICAgICAgc291cmNlRGF0
YSA9IF9tbV91bnBhY2tsb19lcGk4KHplcm9XaWRlLCBzb3VyY2VEYXRhKTsKKyAgICAgICAgICAg
IC8vIEludGVybGVhdmUgZWFjaCAxNmJpdCB0byAzMmJpdCwgbWFrZSB0aGUgbG93ZXIgMTZiaXQg
dG8gemVybworICAgICAgICAgICAgX19tMTI4aSBsbyA9IF9tbV91bnBhY2tsb19lcGkxNih6ZXJv
V2lkZSwgc291cmNlRGF0YSk7CisgICAgICAgICAgICBfX20xMjhpIGhpID0gX21tX3VucGFja2hp
X2VwaTE2KHplcm9XaWRlLCBzb3VyY2VEYXRhKTsKKworICAgICAgICAgICAgX21tX3N0b3JlX3Np
MTI4KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KCZkZXN0W3hdKSwgbG8pOworICAgICAgICAg
ICAgX21tX3N0b3JlX3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KCZkZXN0W3ggKyA0
XSksIGhpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEhhbmRsZSB0aGUgcmVtYWluZGVyCisg
ICAgICAgIGZvciAoOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGVz
dFt4XSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc291cmNlW3hdKSA8PCAyNDsKKyAgICAg
ICAgfQorICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXI5LmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvSW5kZXhCdWZmZXI5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMDcgQEAKKyNp
bmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW5kZXhmZmVy
OS5jcHA6IERlZmluZXMgdGhlIEQzRDkgSW5kZXhCdWZmZXIgaW1wbGVtZW50YXRpb24uCisKKyNp
bmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXI5LmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgorCituYW1lc3BhY2UgcngKK3sKKworSW5kZXhC
dWZmZXI5OjpJbmRleEJ1ZmZlcjkoUmVuZGVyZXI5ICpjb25zdCByZW5kZXJlcikgOiBtUmVuZGVy
ZXIocmVuZGVyZXIpCit7CisgICAgbUluZGV4QnVmZmVyID0gTlVMTDsKKyAgICBtQnVmZmVyU2l6
ZSA9IDA7CisgICAgbUluZGV4VHlwZSA9IDA7CisgICAgbUR5bmFtaWMgPSBmYWxzZTsKK30KKwor
SW5kZXhCdWZmZXI5Ojp+SW5kZXhCdWZmZXI5KCkKK3sKKyAgICBpZiAobUluZGV4QnVmZmVyKQor
ICAgIHsKKyAgICAgICAgbUluZGV4QnVmZmVyLT5SZWxlYXNlKCk7CisgICAgICAgIG1JbmRleEJ1
ZmZlciA9IE5VTEw7CisgICAgfQorfQorCitib29sIEluZGV4QnVmZmVyOTo6aW5pdGlhbGl6ZSh1
bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSwgR0xlbnVtIGluZGV4VHlwZSwgYm9vbCBkeW5hbWljKQor
eworICAgIGlmIChtSW5kZXhCdWZmZXIpCisgICAgeworICAgICAgICBtSW5kZXhCdWZmZXItPlJl
bGVhc2UoKTsKKyAgICAgICAgbUluZGV4QnVmZmVyID0gTlVMTDsKKyAgICB9CisKKyAgICB1cGRh
dGVTZXJpYWwoKTsKKworICAgIGlmIChidWZmZXJTaXplID4gMCkKKyAgICB7CisgICAgICAgIEQz
REZPUk1BVCBmb3JtYXQ7CisgICAgICAgIGlmIChpbmRleFR5cGUgPT0gR0xfVU5TSUdORURfU0hP
UlQgfHwgaW5kZXhUeXBlID09IEdMX1VOU0lHTkVEX0JZVEUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZvcm1hdCA9IEQzREZNVF9JTkRFWDE2OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYg
KGluZGV4VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChtUmVuZGVyZXItPmdldDMyQml0SW5kZXhTdXBwb3J0KCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZm9ybWF0ID0gRDNERk1UX0lOREVYMzI7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRVJSKCJBdHRlbXB0
ZWQgdG8gY3JlYXRlIGEgMzItYml0IGluZGV4IGJ1ZmZlciBidXQgcmVuZGVyZXIgZG9lcyBub3Qg
c3VwcG9ydCAzMi1iaXQgaW5kaWNlcy4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgICBFUlIoIkludmFsaWQgaW5kZXggdHlwZSAldS4iLCBpbmRleFR5cGUpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgRFdPUkQgdXNhZ2VGbGFn
cyA9IEQzRFVTQUdFX1dSSVRFT05MWTsKKyAgICAgICAgaWYgKGR5bmFtaWMpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHVzYWdlRmxhZ3MgfD0gRDNEVVNBR0VfRFlOQU1JQzsKKyAgICAgICAgfQor
CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVJlbmRlcmVyLT5jcmVhdGVJbmRleEJ1ZmZlcihi
dWZmZXJTaXplLCB1c2FnZUZsYWdzLCBmb3JtYXQsICZtSW5kZXhCdWZmZXIpOworICAgICAgICBp
ZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRv
IGNyZWF0ZSBhbiBpbmRleCBidWZmZXIgb2Ygc2l6ZSAldSwgcmVzdWx0OiAweCUwOHguIiwgbUJ1
ZmZlclNpemUsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBtQnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAgbUluZGV4VHlwZSA9
IGluZGV4VHlwZTsKKyAgICBtRHluYW1pYyA9IGR5bmFtaWM7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworSW5kZXhCdWZmZXI5ICpJbmRleEJ1ZmZlcjk6Om1ha2VJbmRleEJ1ZmZlcjkoSW5kZXhC
dWZmZXIgKmluZGV4QnVmZmVyKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKEluZGV4
QnVmZmVyOSosIGluZGV4QnVmZmVyKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluZGV4QnVm
ZmVyOSo+KGluZGV4QnVmZmVyKTsKK30KKworYm9vbCBJbmRleEJ1ZmZlcjk6Om1hcEJ1ZmZlcih1
bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSwgdm9pZCoqIG91dE1hcHBlZE1l
bW9yeSkKK3sKKyAgICBpZiAobUluZGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgRFdPUkQgbG9j
a0ZsYWdzID0gbUR5bmFtaWMgPyBEM0RMT0NLX05PT1ZFUldSSVRFIDogMDsKKworICAgICAgICB2
b2lkICptYXBQdHIgPSBOVUxMOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1JbmRleEJ1ZmZl
ci0+TG9jayhvZmZzZXQsIHNpemUsICZtYXBQdHIsIGxvY2tGbGFncyk7CisgICAgICAgIGlmIChG
QUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJJbmRleCBidWZmZXIg
bG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgKm91dE1hcHBlZE1lbW9yeSA9IG1hcFB0
cjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IEVSUigiSW5kZXggYnVmZmVyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KK30KKworYm9vbCBJbmRleEJ1ZmZlcjk6OnVubWFwQnVmZmVyKCkKK3sKKyAg
ICBpZiAobUluZGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtSW5k
ZXhCdWZmZXItPlVubG9jaygpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEVSUigiSW5kZXggYnVmZmVyIHVubG9jayBmYWlsZWQgd2l0aCBlcnJv
ciAweCUwOHgiLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IEVSUigiSW5kZXggYnVmZmVyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KK30KKworR0xlbnVtIEluZGV4QnVmZmVyOTo6Z2V0SW5kZXhUeXBlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbUluZGV4VHlwZTsKK30KKwordW5zaWduZWQgaW50IEluZGV4QnVm
ZmVyOTo6Z2V0QnVmZmVyU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1CdWZmZXJTaXplOwor
fQorCitib29sIEluZGV4QnVmZmVyOTo6c2V0U2l6ZSh1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSwg
R0xlbnVtIGluZGV4VHlwZSkKK3sKKyAgICBpZiAoYnVmZmVyU2l6ZSA+IG1CdWZmZXJTaXplIHx8
IGluZGV4VHlwZSAhPSBtSW5kZXhUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluaXRpYWxp
emUoYnVmZmVyU2l6ZSwgaW5kZXhUeXBlLCBtRHluYW1pYyk7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKworYm9vbCBJbmRleEJ1ZmZlcjk6
OmRpc2NhcmQoKQoreworICAgIGlmIChtSW5kZXhCdWZmZXIpCisgICAgeworICAgICAgICB2b2lk
ICpkdW1teTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQ7CisKKyAgICAgICAgcmVzdWx0ID0gbUlu
ZGV4QnVmZmVyLT5Mb2NrKDAsIDEsICZkdW1teSwgRDNETE9DS19ESVNDQVJEKTsKKyAgICAgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkRpc2NhcmQg
bG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gbUluZGV4QnVmZmVyLT5V
bmxvY2soKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAg
ICAgICBFUlIoIkRpc2NhcmQgdW5sb2NrIGZhaWxlZCB3aXRoIGVycm9yIDB4JTA4eCIsIHJlc3Vs
dCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgRVJSKCJJbmRleCBidWZm
ZXIgbm90IGluaXRpYWxpemVkLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
CitEM0RGT1JNQVQgSW5kZXhCdWZmZXI5OjpnZXRJbmRleEZvcm1hdCgpIGNvbnN0Cit7CisgICAg
c3dpdGNoIChtSW5kZXhUeXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURTog
ICAgcmV0dXJuIEQzREZNVF9JTkRFWDE2OworICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDog
ICByZXR1cm4gRDNERk1UX0lOREVYMTY7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDogICAg
IHJldHVybiBEM0RGTVRfSU5ERVgzMjsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAg
cmV0dXJuIEQzREZNVF9VTktOT1dOOworICAgIH0KK30KKworSURpcmVjdDNESW5kZXhCdWZmZXI5
ICogSW5kZXhCdWZmZXI5OjpnZXRCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBtSW5kZXhC
dWZmZXI7Cit9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyOS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvSW5kZXhCdWZmZXI5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyOS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbmRleGZmZXI5Lmg6IERlZmlu
ZXMgdGhlIEQzRDkgSW5kZXhCdWZmZXIgaW1wbGVtZW50YXRpb24uCisKKyNpZm5kZWYgTElCR0xF
U1YyX1JFTkRFUkVSX0lOREVYQlVGRkVSOV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJf
SU5ERVhCVUZGRVI5X0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZm
ZXIuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjk7CisKK2NsYXNzIEluZGV4
QnVmZmVyOSA6IHB1YmxpYyBJbmRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQg
SW5kZXhCdWZmZXI5KFJlbmRlcmVyOSAqY29uc3QgcmVuZGVyZXIpOworICAgIHZpcnR1YWwgfklu
ZGV4QnVmZmVyOSgpOworCisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUodW5zaWduZWQgaW50
IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUsIGJvb2wgZHluYW1pYyk7CisKKyAgICBzdGF0
aWMgSW5kZXhCdWZmZXI5ICptYWtlSW5kZXhCdWZmZXI5KEluZGV4QnVmZmVyICppbmRleEJ1ZmZl
cik7CisKKyAgICB2aXJ0dWFsIGJvb2wgbWFwQnVmZmVyKHVuc2lnbmVkIGludCBvZmZzZXQsIHVu
c2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFwcGVkTWVtb3J5KTsKKyAgICB2aXJ0dWFsIGJv
b2wgdW5tYXBCdWZmZXIoKTsKKworICAgIHZpcnR1YWwgR0xlbnVtIGdldEluZGV4VHlwZSgpIGNv
bnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldEJ1ZmZlclNpemUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSwgR0xlbnVtIGlu
ZGV4VHlwZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgZGlzY2FyZCgpOworCisgICAgRDNERk9STUFU
IGdldEluZGV4Rm9ybWF0KCkgY29uc3Q7CisgICAgSURpcmVjdDNESW5kZXhCdWZmZXI5ICpnZXRC
dWZmZXIoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
TihJbmRleEJ1ZmZlcjkpOworCisgICAgcng6OlJlbmRlcmVyOSAqY29uc3QgbVJlbmRlcmVyOwor
CisgICAgSURpcmVjdDNESW5kZXhCdWZmZXI5ICptSW5kZXhCdWZmZXI7CisgICAgdW5zaWduZWQg
aW50IG1CdWZmZXJTaXplOworICAgIEdMZW51bSBtSW5kZXhUeXBlOworICAgIGJvb2wgbUR5bmFt
aWM7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfSU5ERVhCVUZGRVI5
X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L0luZGV4QnVmZmVyMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXIxMS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVm
ZmVyMTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4MiBAQAorI2luY2x1ZGUgInByZWNv
bXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW5kZXhCdWZmZXIxMS5jcHA6IERlZmluZXMg
dGhlIEQzRDExIEluZGV4QnVmZmVyIGltcGxlbWVudGF0aW9uLgorCisjaW5jbHVkZSAibGliR0xF
U3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvUmVuZGVyZXIxMS5oIgorCituYW1lc3BhY2UgcngKK3sKKworSW5kZXhCdWZmZXIxMTo6SW5k
ZXhCdWZmZXIxMShSZW5kZXJlcjExICpjb25zdCByZW5kZXJlcikgOiBtUmVuZGVyZXIocmVuZGVy
ZXIpCit7CisgICAgbUJ1ZmZlciA9IE5VTEw7CisgICAgbUJ1ZmZlclNpemUgPSAwOworICAgIG1E
eW5hbWljVXNhZ2UgPSBmYWxzZTsKK30KKworSW5kZXhCdWZmZXIxMTo6fkluZGV4QnVmZmVyMTEo
KQoreworICAgIGlmIChtQnVmZmVyKQorICAgIHsKKyAgICAgICAgbUJ1ZmZlci0+UmVsZWFzZSgp
OworICAgICAgICBtQnVmZmVyID0gTlVMTDsKKyAgICB9Cit9CisKK2Jvb2wgSW5kZXhCdWZmZXIx
MTo6aW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSwgR0xlbnVtIGluZGV4VHlwZSwg
Ym9vbCBkeW5hbWljKQoreworICAgIGlmIChtQnVmZmVyKQorICAgIHsKKyAgICAgICAgbUJ1ZmZl
ci0+UmVsZWFzZSgpOworICAgICAgICBtQnVmZmVyID0gTlVMTDsKKyAgICB9CisKKyAgICB1cGRh
dGVTZXJpYWwoKTsKKworICAgIGlmIChidWZmZXJTaXplID4gMCkKKyAgICB7CisgICAgICAgIElE
M0QxMURldmljZSogZHhEZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgICAg
IEQzRDExX0JVRkZFUl9ERVNDIGJ1ZmZlckRlc2M7CisgICAgICAgIGJ1ZmZlckRlc2MuQnl0ZVdp
ZHRoID0gYnVmZmVyU2l6ZTsKKyAgICAgICAgYnVmZmVyRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdF
X0RZTkFNSUM7CisgICAgICAgIGJ1ZmZlckRlc2MuQmluZEZsYWdzID0gRDNEMTFfQklORF9JTkRF
WF9CVUZGRVI7CisgICAgICAgIGJ1ZmZlckRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVf
QUNDRVNTX1dSSVRFOworICAgICAgICBidWZmZXJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAg
IGJ1ZmZlckRlc2MuU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7CisKKyAgICAgICAgSFJFU1VMVCBy
ZXN1bHQgPSBkeERldmljZS0+Q3JlYXRlQnVmZmVyKCZidWZmZXJEZXNjLCBOVUxMLCAmbUJ1ZmZl
cik7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgbUJ1ZmZlclNpemUgPSBidWZm
ZXJTaXplOworICAgIG1JbmRleFR5cGUgPSBpbmRleFR5cGU7CisgICAgbUR5bmFtaWNVc2FnZSA9
IGR5bmFtaWM7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSW5kZXhCdWZmZXIxMSAqSW5kZXhC
dWZmZXIxMTo6bWFrZUluZGV4QnVmZmVyMTEoSW5kZXhCdWZmZXIgKmluZGV4QnVmZmVyKQorewor
ICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKEluZGV4QnVmZmVyMTEqLCBpbmRleEJ1ZmZlcikp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbmRleEJ1ZmZlcjExKj4oaW5kZXhCdWZmZXIpOwor
fQorCitib29sIEluZGV4QnVmZmVyMTE6Om1hcEJ1ZmZlcih1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1
bnNpZ25lZCBpbnQgc2l6ZSwgdm9pZCoqIG91dE1hcHBlZE1lbW9yeSkKK3sKKyAgICBpZiAobUJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGlmIChvZmZzZXQgKyBzaXplID4gbUJ1ZmZlclNpemUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiSW5kZXggYnVmZmVyIG1hcCByYW5nZSBpcyBub3Qg
aW5zaWRlIHRoZSBidWZmZXIuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKworICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkeENvbnRleHQgPSBtUmVuZGVyZXIt
PmdldERldmljZUNvbnRleHQoKTsKKworICAgICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0Ug
bWFwcGVkUmVzb3VyY2U7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZHhDb250ZXh0LT5NYXAo
bUJ1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRFX05PX09WRVJXUklURSwgMCwgJm1hcHBlZFJlc291
cmNlKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAg
ICBFUlIoIkluZGV4IGJ1ZmZlciBtYXAgZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgICpvdXRN
YXBwZWRNZW1vcnkgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihtYXBwZWRSZXNvdXJjZS5wRGF0
YSkgKyBvZmZzZXQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICBFUlIoIkluZGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgSW5kZXhCdWZmZXIxMTo6dW5tYXBCdWZm
ZXIoKQoreworICAgIGlmIChtQnVmZmVyKQorICAgIHsKKyAgICAgICAgSUQzRDExRGV2aWNlQ29u
dGV4dCAqZHhDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CisgICAgICAg
IGR4Q29udGV4dC0+VW5tYXAobUJ1ZmZlciwgMCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBFUlIoIkluZGV4IGJ1ZmZlciBub3QgaW5pdGlh
bGl6ZWQuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK0dMZW51bSBJbmRl
eEJ1ZmZlcjExOjpnZXRJbmRleFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBtSW5kZXhUeXBl
OworfQorCit1bnNpZ25lZCBpbnQgSW5kZXhCdWZmZXIxMTo6Z2V0QnVmZmVyU2l6ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1CdWZmZXJTaXplOworfQorCitib29sIEluZGV4QnVmZmVyMTE6OnNl
dFNpemUodW5zaWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUpCit7CisgICAg
aWYgKGJ1ZmZlclNpemUgPiBtQnVmZmVyU2l6ZSB8fCBpbmRleFR5cGUgIT0gbUluZGV4VHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBpbml0aWFsaXplKGJ1ZmZlclNpemUsIGluZGV4VHlwZSwg
bUR5bmFtaWNVc2FnZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KK30KKworYm9vbCBJbmRleEJ1ZmZlcjExOjpkaXNjYXJkKCkKK3sKKyAgICBp
ZiAobUJ1ZmZlcikKKyAgICB7CisgICAgICAgIElEM0QxMURldmljZUNvbnRleHQgKmR4Q29udGV4
dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOworCisgICAgICAgIEQzRDExX01BUFBF
RF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBk
eENvbnRleHQtPk1hcChtQnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwgJm1h
cHBlZFJlc291cmNlKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBFUlIoIkluZGV4IGJ1ZmZlciBtYXAgZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4
IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGR4Q29udGV4dC0+VW5tYXAobUJ1ZmZlciwgMCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEVSUigiSW5kZXggYnVmZmVyIG5vdCBp
bml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworRFhHSV9G
T1JNQVQgSW5kZXhCdWZmZXIxMTo6Z2V0SW5kZXhGb3JtYXQoKSBjb25zdAoreworICAgIHN3aXRj
aCAobUluZGV4VHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6ICAgIHJl
dHVybiBEWEdJX0ZPUk1BVF9SMTZfVUlOVDsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6
ICAgcmV0dXJuIERYR0lfRk9STUFUX1IxNl9VSU5UOworICAgICAgY2FzZSBHTF9VTlNJR05FRF9J
TlQ6ICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjMyX1VJTlQ7CisgICAgICBkZWZhdWx0OiBVTlJF
QUNIQUJMRSgpOyAgIHJldHVybiBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAgIH0KK30KKworSUQz
RDExQnVmZmVyICpJbmRleEJ1ZmZlcjExOjpnZXRCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVy
biBtQnVmZmVyOworfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjEx
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9JbmRleEJ1ZmZlcjExLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEluZGV4QnVmZmVyMTEuaDog
RGVmaW5lcyB0aGUgRDNEMTEgSW5kZXhCdWZmZXIgaW1wbGVtZW50YXRpb24uCisKKyNpZm5kZWYg
TElCR0xFU1YyX1JFTkRFUkVSX0lOREVYQlVGRkVSMTFfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JF
TkRFUkVSX0lOREVYQlVGRkVSMTFfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9J
bmRleEJ1ZmZlci5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyMTE7CisKK2Ns
YXNzIEluZGV4QnVmZmVyMTEgOiBwdWJsaWMgSW5kZXhCdWZmZXIKK3sKKyAgcHVibGljOgorICAg
IGV4cGxpY2l0IEluZGV4QnVmZmVyMTEoUmVuZGVyZXIxMSAqY29uc3QgcmVuZGVyZXIpOworICAg
IHZpcnR1YWwgfkluZGV4QnVmZmVyMTEoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXpl
KHVuc2lnbmVkIGludCBidWZmZXJTaXplLCBHTGVudW0gaW5kZXhUeXBlLCBib29sIGR5bmFtaWMp
OworCisgICAgc3RhdGljIEluZGV4QnVmZmVyMTEgKm1ha2VJbmRleEJ1ZmZlcjExKEluZGV4QnVm
ZmVyICppbmRleEJ1ZmZlcik7CisKKyAgICB2aXJ0dWFsIGJvb2wgbWFwQnVmZmVyKHVuc2lnbmVk
IGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFwcGVkTWVtb3J5KTsK
KyAgICB2aXJ0dWFsIGJvb2wgdW5tYXBCdWZmZXIoKTsKKworICAgIHZpcnR1YWwgR0xlbnVtIGdl
dEluZGV4VHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldEJ1ZmZlclNp
emUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCBpbnQgYnVmZmVy
U2l6ZSwgR0xlbnVtIGluZGV4VHlwZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgZGlzY2FyZCgpOwor
CisgICAgRFhHSV9GT1JNQVQgZ2V0SW5kZXhGb3JtYXQoKSBjb25zdDsKKyAgICBJRDNEMTFCdWZm
ZXIgKmdldEJ1ZmZlcigpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOKEluZGV4QnVmZmVyMTEpOworCisgICAgcng6OlJlbmRlcmVyMTEgKmNvbnN0IG1S
ZW5kZXJlcjsKKworICAgIElEM0QxMUJ1ZmZlciAqbUJ1ZmZlcjsKKyAgICB1bnNpZ25lZCBpbnQg
bUJ1ZmZlclNpemU7CisgICAgR0xlbnVtIG1JbmRleFR5cGU7CisgICAgYm9vbCBtRHluYW1pY1Vz
YWdlOworfTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0lOREVYQlVGRkVS
MTFfSF8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4
QnVmZmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIwMyBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisv
LyBJbmRleEJ1ZmZlci5jcHA6IERlZmluZXMgdGhlIGFic3RyYWN0IEluZGV4QnVmZmVyIGNsYXNz
IGFuZCBJbmRleEJ1ZmZlckludGVyZmFjZQorLy8gY2xhc3Mgd2l0aCBkZXJpdmF0aW9ucywgY2xh
c3NlcyB0aGF0IHBlcmZvcm0gZ3JhcGhpY3MgQVBJIGFnbm9zdGljIGluZGV4IGJ1ZmZlciBvcGVy
YXRpb25zLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgiCisKK25hbWVzcGFjZSByeAor
eworCit1bnNpZ25lZCBpbnQgSW5kZXhCdWZmZXI6Om1OZXh0U2VyaWFsID0gMTsKKworSW5kZXhC
dWZmZXI6OkluZGV4QnVmZmVyKCkKK3sKKyAgICB1cGRhdGVTZXJpYWwoKTsKK30KKworSW5kZXhC
dWZmZXI6On5JbmRleEJ1ZmZlcigpCit7Cit9CisKK3Vuc2lnbmVkIGludCBJbmRleEJ1ZmZlcjo6
Z2V0U2VyaWFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNlcmlhbDsKK30KKwordm9pZCBJbmRl
eEJ1ZmZlcjo6dXBkYXRlU2VyaWFsKCkKK3sKKyAgICBtU2VyaWFsID0gbU5leHRTZXJpYWwrKzsK
K30KKworCitJbmRleEJ1ZmZlckludGVyZmFjZTo6SW5kZXhCdWZmZXJJbnRlcmZhY2UoUmVuZGVy
ZXIgKnJlbmRlcmVyLCBib29sIGR5bmFtaWMpIDogbVJlbmRlcmVyKHJlbmRlcmVyKQoreworICAg
IG1JbmRleEJ1ZmZlciA9IHJlbmRlcmVyLT5jcmVhdGVJbmRleEJ1ZmZlcigpOworCisgICAgbUR5
bmFtaWMgPSBkeW5hbWljOworICAgIG1Xcml0ZVBvc2l0aW9uID0gMDsKK30KKworSW5kZXhCdWZm
ZXJJbnRlcmZhY2U6On5JbmRleEJ1ZmZlckludGVyZmFjZSgpCit7CisgICAgaWYgKG1JbmRleEJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtSW5kZXhCdWZmZXI7CisgICAgfQorfQorCitH
TGVudW0gSW5kZXhCdWZmZXJJbnRlcmZhY2U6OmdldEluZGV4VHlwZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1JbmRleEJ1ZmZlci0+Z2V0SW5kZXhUeXBlKCk7Cit9CisKK3Vuc2lnbmVkIGludCBJ
bmRleEJ1ZmZlckludGVyZmFjZTo6Z2V0QnVmZmVyU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1JbmRleEJ1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpOworfQorCit1bnNpZ25lZCBpbnQgSW5kZXhC
dWZmZXJJbnRlcmZhY2U6OmdldFNlcmlhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbmRleEJ1
ZmZlci0+Z2V0U2VyaWFsKCk7Cit9CisKK2ludCBJbmRleEJ1ZmZlckludGVyZmFjZTo6bWFwQnVm
ZmVyKHVuc2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFwcGVkTWVtb3J5KQoreworICAgIGlm
ICghbUluZGV4QnVmZmVyLT5tYXBCdWZmZXIobVdyaXRlUG9zaXRpb24sIHNpemUsIG91dE1hcHBl
ZE1lbW9yeSkpCisgICAgeworICAgICAgICAqb3V0TWFwcGVkTWVtb3J5ID0gTlVMTDsKKyAgICAg
ICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGludCBvbGRXcml0ZVBvcyA9IHN0YXRpY19jYXN0
PGludD4obVdyaXRlUG9zaXRpb24pOworICAgIG1Xcml0ZVBvc2l0aW9uICs9IHNpemU7CisKKyAg
ICByZXR1cm4gb2xkV3JpdGVQb3M7Cit9CisKK2Jvb2wgSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnVu
bWFwQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbUluZGV4QnVmZmVyLT51bm1hcEJ1ZmZlcigpOwor
fQorCitJbmRleEJ1ZmZlciAqIEluZGV4QnVmZmVySW50ZXJmYWNlOjpnZXRJbmRleEJ1ZmZlcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbmRleEJ1ZmZlcjsKK30KKwordW5zaWduZWQgaW50IElu
ZGV4QnVmZmVySW50ZXJmYWNlOjpnZXRXcml0ZVBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVdyaXRlUG9zaXRpb247Cit9CisKK3ZvaWQgSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnNldFdy
aXRlUG9zaXRpb24odW5zaWduZWQgaW50IHdyaXRlUG9zaXRpb24pCit7CisgICAgbVdyaXRlUG9z
aXRpb24gPSB3cml0ZVBvc2l0aW9uOworfQorCitib29sIEluZGV4QnVmZmVySW50ZXJmYWNlOjpk
aXNjYXJkKCkKK3sKKyAgICByZXR1cm4gbUluZGV4QnVmZmVyLT5kaXNjYXJkKCk7Cit9CisKK2Jv
b2wgSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnNldEJ1ZmZlclNpemUodW5zaWduZWQgaW50IGJ1ZmZl
clNpemUsIEdMZW51bSBpbmRleFR5cGUpCit7CisgICAgaWYgKG1JbmRleEJ1ZmZlci0+Z2V0QnVm
ZmVyU2l6ZSgpID09IDApCisgICAgeworICAgICAgICByZXR1cm4gbUluZGV4QnVmZmVyLT5pbml0
aWFsaXplKGJ1ZmZlclNpemUsIGluZGV4VHlwZSwgbUR5bmFtaWMpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICByZXR1cm4gbUluZGV4QnVmZmVyLT5zZXRTaXplKGJ1ZmZlclNpemUs
IGluZGV4VHlwZSk7CisgICAgfQorfQorCitTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZTo6
U3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2UoUmVuZGVyZXIgKnJlbmRlcmVyKSA6IEluZGV4
QnVmZmVySW50ZXJmYWNlKHJlbmRlcmVyLCB0cnVlKQoreworfQorCitTdHJlYW1pbmdJbmRleEJ1
ZmZlckludGVyZmFjZTo6flN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlKCkKK3sKK30KKwor
Ym9vbCBTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2ZUJ1ZmZlclNwYWNlKHVu
c2lnbmVkIGludCBzaXplLCBHTGVudW0gaW5kZXhUeXBlKQoreworICAgIGJvb2wgcmVzdWx0ID0g
dHJ1ZTsKKyAgICB1bnNpZ25lZCBpbnQgY3VyQnVmZmVyU2l6ZSA9IGdldEJ1ZmZlclNpemUoKTsK
KyAgICB1bnNpZ25lZCBpbnQgd3JpdGVQb3MgPSBnZXRXcml0ZVBvc2l0aW9uKCk7CisgICAgaWYg
KHNpemUgPiBjdXJCdWZmZXJTaXplKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gc2V0QnVmZmVy
U2l6ZShzdGQ6Om1heChzaXplLCAyICogY3VyQnVmZmVyU2l6ZSksIGluZGV4VHlwZSk7CisgICAg
ICAgIHNldFdyaXRlUG9zaXRpb24oMCk7CisgICAgfQorICAgIGVsc2UgaWYgKHdyaXRlUG9zICsg
c2l6ZSA+IGN1ckJ1ZmZlclNpemUgfHwgd3JpdGVQb3MgKyBzaXplIDwgd3JpdGVQb3MpCisgICAg
eworICAgICAgICBpZiAoIWRpc2NhcmQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHNldFdyaXRlUG9zaXRpb24oMCk7CisgICAgfQor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZTo6
U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UoUmVuZGVyZXIgKnJlbmRlcmVyKSA6IEluZGV4QnVm
ZmVySW50ZXJmYWNlKHJlbmRlcmVyLCBmYWxzZSkKK3sKK30KKworU3RhdGljSW5kZXhCdWZmZXJJ
bnRlcmZhY2U6On5TdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSgpCit7Cit9CisKK2Jvb2wgU3Rh
dGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2VydmVCdWZmZXJTcGFjZSh1bnNpZ25lZCBpbnQg
c2l6ZSwgR0xlbnVtIGluZGV4VHlwZSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgY3VyU2l6ZSA9IGdl
dEJ1ZmZlclNpemUoKTsKKyAgICBpZiAoY3VyU2l6ZSA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHNldEJ1ZmZlclNpemUoc2l6ZSwgaW5kZXhUeXBlKTsKKyAgICB9CisgICAgZWxzZSBpZiAo
Y3VyU2l6ZSA+PSBzaXplICYmIGluZGV4VHlwZSA9PSBnZXRJbmRleFR5cGUoKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBFUlIo
IlN0YXRpYyBpbmRleCBidWZmZXJzIGNhbid0IGJlIHJlc2l6ZWQiKTsKKyAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordW5zaWduZWQgaW50
IFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlOjpsb29rdXBSYW5nZShpbnRwdHJfdCBvZmZzZXQs
IEdMc2l6ZWkgY291bnQsIHVuc2lnbmVkIGludCAqbWluSW5kZXgsIHVuc2lnbmVkIGludCAqbWF4
SW5kZXgpCit7CisgICAgSW5kZXhSYW5nZSByYW5nZSA9IHtvZmZzZXQsIGNvdW50fTsKKworICAg
IHN0ZDo6bWFwPEluZGV4UmFuZ2UsIEluZGV4UmVzdWx0Pjo6aXRlcmF0b3IgcmVzID0gbUNhY2hl
LmZpbmQocmFuZ2UpOworCisgICAgaWYgKHJlcyA9PSBtQ2FjaGUuZW5kKCkpCisgICAgeworICAg
ICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgKm1pbkluZGV4ID0gcmVzLT5zZWNvbmQubWlu
SW5kZXg7CisgICAgKm1heEluZGV4ID0gcmVzLT5zZWNvbmQubWF4SW5kZXg7CisgICAgcmV0dXJu
IHJlcy0+c2Vjb25kLnN0cmVhbU9mZnNldDsKK30KKwordm9pZCBTdGF0aWNJbmRleEJ1ZmZlcklu
dGVyZmFjZTo6YWRkUmFuZ2UoaW50cHRyX3Qgb2Zmc2V0LCBHTHNpemVpIGNvdW50LCB1bnNpZ25l
ZCBpbnQgbWluSW5kZXgsIHVuc2lnbmVkIGludCBtYXhJbmRleCwgdW5zaWduZWQgaW50IHN0cmVh
bU9mZnNldCkKK3sKKyAgICBJbmRleFJhbmdlIGluZGV4UmFuZ2UgPSB7b2Zmc2V0LCBjb3VudH07
CisgICAgSW5kZXhSZXN1bHQgaW5kZXhSZXN1bHQgPSB7bWluSW5kZXgsIG1heEluZGV4LCBzdHJl
YW1PZmZzZXR9OworICAgIG1DYWNoZVtpbmRleFJhbmdlXSA9IGluZGV4UmVzdWx0OworfQorCit9
CisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
SW5kZXhCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTM3IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbmRl
eEJ1ZmZlci5oOiBEZWZpbmVzIHRoZSBhYnN0cmFjdCBJbmRleEJ1ZmZlciBjbGFzcyBhbmQgSW5k
ZXhCdWZmZXJJbnRlcmZhY2UKKy8vIGNsYXNzIHdpdGggZGVyaXZhdGlvbnMsIGNsYXNzZXMgdGhh
dCBwZXJmb3JtIGdyYXBoaWNzIEFQSSBhZ25vc3RpYyBpbmRleCBidWZmZXIgb3BlcmF0aW9ucy4K
KworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfSU5ERVhCVUZGRVJfSF8KKyNkZWZpbmUgTElC
R0xFU1YyX1JFTkRFUkVSX0lOREVYQlVGRkVSX0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1
dGlscy5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOworCitjbGFzcyBJbmRl
eEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgSW5kZXhCdWZmZXIoKTsKKyAgICB2aXJ0dWFsIH5J
bmRleEJ1ZmZlcigpOworCisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUodW5zaWduZWQgaW50
IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUsIGJvb2wgZHluYW1pYykgPSAwOworCisgICAg
dmlydHVhbCBib29sIG1hcEJ1ZmZlcih1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQg
c2l6ZSwgdm9pZCoqIG91dE1hcHBlZE1lbW9yeSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCB1bm1h
cEJ1ZmZlcigpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBkaXNjYXJkKCkgPSAwOworCisgICAg
dmlydHVhbCBHTGVudW0gZ2V0SW5kZXhUeXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5z
aWduZWQgaW50IGdldEJ1ZmZlclNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHNl
dFNpemUodW5zaWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUpID0gMDsKKwor
ICAgIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKKworICBwcm90ZWN0ZWQ6CisgICAg
dm9pZCB1cGRhdGVTZXJpYWwoKTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTihJbmRleEJ1ZmZlcik7CisKKyAgICB1bnNpZ25lZCBpbnQgbVNlcmlhbDsKKyAgICBz
dGF0aWMgdW5zaWduZWQgaW50IG1OZXh0U2VyaWFsOworfTsKKworY2xhc3MgSW5kZXhCdWZmZXJJ
bnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIEluZGV4QnVmZmVySW50ZXJmYWNlKFJlbmRlcmVy
ICpyZW5kZXJlciwgYm9vbCBkeW5hbWljKTsKKyAgICB2aXJ0dWFsIH5JbmRleEJ1ZmZlckludGVy
ZmFjZSgpOworCisgICAgdmlydHVhbCBib29sIHJlc2VydmVCdWZmZXJTcGFjZSh1bnNpZ25lZCBp
bnQgc2l6ZSwgR0xlbnVtIGluZGV4VHlwZSkgPSAwOworCisgICAgR0xlbnVtIGdldEluZGV4VHlw
ZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGludCBnZXRCdWZmZXJTaXplKCkgY29uc3Q7CisKKyAg
ICB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CisKKyAgICBpbnQgbWFwQnVmZmVyKHVu
c2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFwcGVkTWVtb3J5KTsKKyAgICBib29sIHVubWFw
QnVmZmVyKCk7CisKKyAgICBJbmRleEJ1ZmZlciAqZ2V0SW5kZXhCdWZmZXIoKSBjb25zdDsKKwor
ICBwcm90ZWN0ZWQ6CisgICAgdW5zaWduZWQgaW50IGdldFdyaXRlUG9zaXRpb24oKSBjb25zdDsK
KyAgICB2b2lkIHNldFdyaXRlUG9zaXRpb24odW5zaWduZWQgaW50IHdyaXRlUG9zaXRpb24pOwor
CisgICAgYm9vbCBkaXNjYXJkKCk7CisKKyAgICBib29sIHNldEJ1ZmZlclNpemUodW5zaWduZWQg
aW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUpOworCisgIHByaXZhdGU6CisgICAgRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKEluZGV4QnVmZmVySW50ZXJmYWNlKTsKKworICAgIHJ4OjpS
ZW5kZXJlciAqY29uc3QgbVJlbmRlcmVyOworCisgICAgSW5kZXhCdWZmZXIqIG1JbmRleEJ1ZmZl
cjsKKworICAgIHVuc2lnbmVkIGludCBtV3JpdGVQb3NpdGlvbjsKKyAgICBib29sIG1EeW5hbWlj
OworfTsKKworY2xhc3MgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2UgOiBwdWJsaWMgSW5k
ZXhCdWZmZXJJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIFN0cmVhbWluZ0luZGV4QnVmZmVy
SW50ZXJmYWNlKFJlbmRlcmVyICpyZW5kZXJlcik7CisgICAgflN0cmVhbWluZ0luZGV4QnVmZmVy
SW50ZXJmYWNlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgcmVzZXJ2ZUJ1ZmZlclNwYWNlKHVuc2ln
bmVkIGludCBzaXplLCBHTGVudW0gaW5kZXhUeXBlKTsKK307CisKK2NsYXNzIFN0YXRpY0luZGV4
QnVmZmVySW50ZXJmYWNlIDogcHVibGljIEluZGV4QnVmZmVySW50ZXJmYWNlCit7CisgIHB1Ymxp
YzoKKyAgICBleHBsaWNpdCBTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZShSZW5kZXJlciAqcmVu
ZGVyZXIpOworICAgIH5TdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSgpOworCisgICAgdmlydHVh
bCBib29sIHJlc2VydmVCdWZmZXJTcGFjZSh1bnNpZ25lZCBpbnQgc2l6ZSwgR0xlbnVtIGluZGV4
VHlwZSk7CisKKyAgICB1bnNpZ25lZCBpbnQgbG9va3VwUmFuZ2UoaW50cHRyX3Qgb2Zmc2V0LCBH
THNpemVpIGNvdW50LCB1bnNpZ25lZCBpbnQgKm1pbkluZGV4LCB1bnNpZ25lZCBpbnQgKm1heElu
ZGV4KTsgICAvLyBSZXR1cm5zIHRoZSBvZmZzZXQgaW50byB0aGUgaW5kZXggYnVmZmVyLCBvciAt
MSBpZiBub3QgZm91bmQKKyAgICB2b2lkIGFkZFJhbmdlKGludHB0cl90IG9mZnNldCwgR0xzaXpl
aSBjb3VudCwgdW5zaWduZWQgaW50IG1pbkluZGV4LCB1bnNpZ25lZCBpbnQgbWF4SW5kZXgsIHVu
c2lnbmVkIGludCBzdHJlYW1PZmZzZXQpOworCisgIHByaXZhdGU6CisgICAgc3RydWN0IEluZGV4
UmFuZ2UKKyAgICB7CisgICAgICAgIGludHB0cl90IG9mZnNldDsKKyAgICAgICAgR0xzaXplaSBj
b3VudDsKKworICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBJbmRleFJhbmdlJiByaHMpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChvZmZzZXQgIT0gcmhzLm9mZnNldCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0IDwgcmhzLm9mZnNldDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb3VudCAhPSByaHMuY291bnQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50IDwgcmhzLmNvdW50OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfTsK
KworICAgIHN0cnVjdCBJbmRleFJlc3VsdAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IG1p
bkluZGV4OworICAgICAgICB1bnNpZ25lZCBpbnQgbWF4SW5kZXg7CisgICAgICAgIHVuc2lnbmVk
IGludCBzdHJlYW1PZmZzZXQ7CisgICAgfTsKKworICAgIHN0ZDo6bWFwPEluZGV4UmFuZ2UsIElu
ZGV4UmVzdWx0PiBtQ2FjaGU7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVS
RVJfSU5ERVhCVUZGRVJfSF8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0YU1hbmFn
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0YU1hbmFnZXIu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxNiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVk
LmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbmRleERhdGFNYW5hZ2VyLmNwcDogRGVmaW5l
cyB0aGUgSW5kZXhEYXRhTWFuYWdlciwgYSBjbGFzcyB0aGF0CisvLyBydW5zIHRoZSBCdWZmZXIg
dHJhbnNsYXRpb24gcHJvY2VzcyBmb3IgaW5kZXggYnVmZmVycy4KKworI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3Jl
bmRlcmVyL0J1ZmZlclN0b3JhZ2UuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9CdWZmZXIuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9JbmRleEJ1ZmZlci5oIgorCituYW1lc3BhY2UgcngKK3sKKworSW5kZXhEYXRhTWFuYWdlcjo6
SW5kZXhEYXRhTWFuYWdlcihSZW5kZXJlciAqcmVuZGVyZXIpIDogbVJlbmRlcmVyKHJlbmRlcmVy
KQoreworICAgIG1TdHJlYW1pbmdCdWZmZXJTaG9ydCA9IG5ldyBTdHJlYW1pbmdJbmRleEJ1ZmZl
ckludGVyZmFjZShtUmVuZGVyZXIpOworICAgIGlmICghbVN0cmVhbWluZ0J1ZmZlclNob3J0LT5y
ZXNlcnZlQnVmZmVyU3BhY2UoSU5JVElBTF9JTkRFWF9CVUZGRVJfU0laRSwgR0xfVU5TSUdORURf
U0hPUlQpKQorICAgIHsKKyAgICAgICAgZGVsZXRlIG1TdHJlYW1pbmdCdWZmZXJTaG9ydDsKKyAg
ICAgICAgbVN0cmVhbWluZ0J1ZmZlclNob3J0ID0gTlVMTDsKKyAgICB9CisKKyAgICBtU3RyZWFt
aW5nQnVmZmVySW50ID0gbmV3IFN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlKG1SZW5kZXJl
cik7CisgICAgaWYgKCFtU3RyZWFtaW5nQnVmZmVySW50LT5yZXNlcnZlQnVmZmVyU3BhY2UoSU5J
VElBTF9JTkRFWF9CVUZGRVJfU0laRSwgR0xfVU5TSUdORURfSU5UKSkKKyAgICB7CisgICAgICAg
IGRlbGV0ZSBtU3RyZWFtaW5nQnVmZmVySW50OworICAgICAgICBtU3RyZWFtaW5nQnVmZmVySW50
ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIW1TdHJlYW1pbmdCdWZmZXJTaG9ydCkKKyAgICB7
CisgICAgICAgIC8vIE1ha2Ugc3VyZSBib3RoIGJ1ZmZlcnMgYXJlIGRlbGV0ZWQuCisgICAgICAg
IGRlbGV0ZSBtU3RyZWFtaW5nQnVmZmVySW50OworICAgICAgICBtU3RyZWFtaW5nQnVmZmVySW50
ID0gTlVMTDsKKworICAgICAgICBFUlIoIkZhaWxlZCB0byBhbGxvY2F0ZSB0aGUgc3RyZWFtaW5n
IGluZGV4IGJ1ZmZlcihzKS4iKTsKKyAgICB9CisKKyAgICBtQ291bnRpbmdCdWZmZXIgPSBOVUxM
OworfQorCitJbmRleERhdGFNYW5hZ2VyOjp+SW5kZXhEYXRhTWFuYWdlcigpCit7CisgICAgZGVs
ZXRlIG1TdHJlYW1pbmdCdWZmZXJTaG9ydDsKKyAgICBkZWxldGUgbVN0cmVhbWluZ0J1ZmZlcklu
dDsKKyAgICBkZWxldGUgbUNvdW50aW5nQnVmZmVyOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50
IGluZGV4VHlwZVNpemUoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsK
KyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOiAgIHJldHVybiBzaXplb2YoR0x1aW50KTsKKyAg
ICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6IHJldHVybiBzaXplb2YoR0x1c2hvcnQpOworICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAgcmV0dXJuIHNpemVvZihHTHVieXRlKTsKKyAgICAg
IGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IHJldHVybiBzaXplb2YoR0x1c2hvcnQpOworICAgIH0K
K30KKworc3RhdGljIHZvaWQgY29udmVydEluZGljZXMoR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQg
KmlucHV0LCBHTHNpemVpIGNvdW50LCB2b2lkICpvdXRwdXQpCit7CisgICAgaWYgKHR5cGUgPT0g
R0xfVU5TSUdORURfQllURSkKKyAgICB7CisgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmluID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KGlucHV0KTsKKyAgICAgICAgR0x1c2hvcnQgKm91dCA9
IHN0YXRpY19jYXN0PEdMdXNob3J0Kj4ob3V0cHV0KTsKKworICAgICAgICBmb3IgKEdMc2l6ZWkg
aSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBvdXRbaV0gPSBp
bltpXTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh0eXBlID09IEdMX1VOU0lHTkVE
X0lOVCkKKyAgICB7CisgICAgICAgIG1lbWNweShvdXRwdXQsIGlucHV0LCBjb3VudCAqIHNpemVv
ZihHTHVpbnQpKTsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSBHTF9VTlNJR05FRF9TSE9S
VCkKKyAgICB7CisgICAgICAgIG1lbWNweShvdXRwdXQsIGlucHV0LCBjb3VudCAqIHNpemVvZihH
THVzaG9ydCkpOworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Cit9CisKK3RlbXBsYXRl
IDxjbGFzcyBJbmRleFR5cGU+CitzdGF0aWMgdm9pZCBjb21wdXRlUmFuZ2UoY29uc3QgSW5kZXhU
eXBlICppbmRpY2VzLCBHTHNpemVpIGNvdW50LCBHTHVpbnQgKm1pbkluZGV4LCBHTHVpbnQgKm1h
eEluZGV4KQoreworICAgICptaW5JbmRleCA9IGluZGljZXNbMF07CisgICAgKm1heEluZGV4ID0g
aW5kaWNlc1swXTsKKworICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IGNvdW50OyBpKyspCisg
ICAgeworICAgICAgICBpZiAoKm1pbkluZGV4ID4gaW5kaWNlc1tpXSkgKm1pbkluZGV4ID0gaW5k
aWNlc1tpXTsKKyAgICAgICAgaWYgKCptYXhJbmRleCA8IGluZGljZXNbaV0pICptYXhJbmRleCA9
IGluZGljZXNbaV07CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBjb21wdXRlUmFuZ2UoR0xlbnVt
IHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgR0xzaXplaSBjb3VudCwgR0x1aW50ICptaW5J
bmRleCwgR0x1aW50ICptYXhJbmRleCkKK3sKKyAgICBpZiAodHlwZSA9PSBHTF9VTlNJR05FRF9C
WVRFKQorICAgIHsKKyAgICAgICAgY29tcHV0ZVJhbmdlKHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5
dGUqPihpbmRpY2VzKSwgY291bnQsIG1pbkluZGV4LCBtYXhJbmRleCk7CisgICAgfQorICAgIGVs
c2UgaWYgKHR5cGUgPT0gR0xfVU5TSUdORURfSU5UKQorICAgIHsKKyAgICAgICAgY29tcHV0ZVJh
bmdlKHN0YXRpY19jYXN0PGNvbnN0IEdMdWludCo+KGluZGljZXMpLCBjb3VudCwgbWluSW5kZXgs
IG1heEluZGV4KTsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSBHTF9VTlNJR05FRF9TSE9S
VCkKKyAgICB7CisgICAgICAgIGNvbXB1dGVSYW5nZShzdGF0aWNfY2FzdDxjb25zdCBHTHVzaG9y
dCo+KGluZGljZXMpLCBjb3VudCwgbWluSW5kZXgsIG1heEluZGV4KTsKKyAgICB9CisgICAgZWxz
ZSBVTlJFQUNIQUJMRSgpOworfQorCitHTGVudW0gSW5kZXhEYXRhTWFuYWdlcjo6cHJlcGFyZUlu
ZGV4RGF0YShHTGVudW0gdHlwZSwgR0xzaXplaSBjb3VudCwgZ2w6OkJ1ZmZlciAqYnVmZmVyLCBj
b25zdCBHTHZvaWQgKmluZGljZXMsIFRyYW5zbGF0ZWRJbmRleERhdGEgKnRyYW5zbGF0ZWQpCit7
CisgICAgaWYgKCFtU3RyZWFtaW5nQnVmZmVyU2hvcnQpCisgICAgeworICAgICAgICByZXR1cm4g
R0xfT1VUX09GX01FTU9SWTsKKyAgICB9CisKKyAgICBHTGVudW0gZGVzdGluYXRpb25JbmRleFR5
cGUgPSAodHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpID8gR0xfVU5TSUdORURfSU5UIDogR0xfVU5T
SUdORURfU0hPUlQ7CisgICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4oaW5kaWNlcyk7CisgICAgYm9vbCBhbGlnbmVkT2Zmc2V0ID0gZmFsc2U7CisKKyAgICBC
dWZmZXJTdG9yYWdlICpzdG9yYWdlID0gTlVMTDsKKworICAgIGlmIChidWZmZXIgIT0gTlVMTCkK
KyAgICB7CisgICAgICAgIHN0b3JhZ2UgPSBidWZmZXItPmdldFN0b3JhZ2UoKTsKKworICAgICAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6ICBhbGlnbmVkT2Zmc2V0ID0gKG9mZnNldCAlIHNpemVvZihHTHVieXRlKSA9PSAwKTsgIGJy
ZWFrOworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6IGFsaWduZWRPZmZzZXQgPSAo
b2Zmc2V0ICUgc2l6ZW9mKEdMdXNob3J0KSA9PSAwKTsgYnJlYWs7CisgICAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlQ6ICAgYWxpZ25lZE9mZnNldCA9IChvZmZzZXQgJSBzaXplb2YoR0x1aW50
KSA9PSAwKTsgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyBhbGln
bmVkT2Zmc2V0ID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW5kZXhUeXBlU2l6
ZSh0eXBlKSAqIGNvdW50ICsgb2Zmc2V0ID4gc3RvcmFnZS0+Z2V0U2l6ZSgpKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAgIH0KKwor
ICAgICAgICBpbmRpY2VzID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KHN0b3JhZ2UtPmdl
dERhdGEoKSkgKyBvZmZzZXQ7CisgICAgfQorCisgICAgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRl
cmZhY2UgKnN0cmVhbWluZ0J1ZmZlciA9ICh0eXBlID09IEdMX1VOU0lHTkVEX0lOVCkgPyBtU3Ry
ZWFtaW5nQnVmZmVySW50IDogbVN0cmVhbWluZ0J1ZmZlclNob3J0OworCisgICAgU3RhdGljSW5k
ZXhCdWZmZXJJbnRlcmZhY2UgKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0U3Rh
dGljSW5kZXhCdWZmZXIoKSA6IE5VTEw7CisgICAgSW5kZXhCdWZmZXJJbnRlcmZhY2UgKmluZGV4
QnVmZmVyID0gc3RyZWFtaW5nQnVmZmVyOworICAgIGJvb2wgZGlyZWN0U3RvcmFnZSA9IGFsaWdu
ZWRPZmZzZXQgJiYgc3RvcmFnZSAmJiBzdG9yYWdlLT5zdXBwb3J0c0RpcmVjdEJpbmRpbmcoKSAm
JgorICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uSW5kZXhUeXBlID09IHR5cGU7
CisgICAgVUlOVCBzdHJlYW1PZmZzZXQgPSAwOworCisgICAgaWYgKGRpcmVjdFN0b3JhZ2UpCisg
ICAgeworICAgICAgICBpbmRleEJ1ZmZlciA9IHN0cmVhbWluZ0J1ZmZlcjsKKyAgICAgICAgc3Ry
ZWFtT2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICBzdG9yYWdlLT5tYXJrQnVmZmVyVXNhZ2UoKTsK
KyAgICAgICAgY29tcHV0ZVJhbmdlKHR5cGUsIGluZGljZXMsIGNvdW50LCAmdHJhbnNsYXRlZC0+
bWluSW5kZXgsICZ0cmFuc2xhdGVkLT5tYXhJbmRleCk7CisgICAgfQorICAgIGVsc2UgaWYgKHN0
YXRpY0J1ZmZlciAmJiBzdGF0aWNCdWZmZXItPmdldEJ1ZmZlclNpemUoKSAhPSAwICYmIHN0YXRp
Y0J1ZmZlci0+Z2V0SW5kZXhUeXBlKCkgPT0gdHlwZSAmJiBhbGlnbmVkT2Zmc2V0KQorICAgIHsK
KyAgICAgICAgaW5kZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXI7CisgICAgICAgIHN0cmVhbU9mZnNl
dCA9IHN0YXRpY0J1ZmZlci0+bG9va3VwUmFuZ2Uob2Zmc2V0LCBjb3VudCwgJnRyYW5zbGF0ZWQt
Pm1pbkluZGV4LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOworCisgICAgICAgIGlmIChzdHJlYW1P
ZmZzZXQgPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9IChvZmZz
ZXQgLyBpbmRleFR5cGVTaXplKHR5cGUpKSAqIGluZGV4VHlwZVNpemUoZGVzdGluYXRpb25JbmRl
eFR5cGUpOworICAgICAgICAgICAgY29tcHV0ZVJhbmdlKHR5cGUsIGluZGljZXMsIGNvdW50LCAm
dHJhbnNsYXRlZC0+bWluSW5kZXgsICZ0cmFuc2xhdGVkLT5tYXhJbmRleCk7CisgICAgICAgICAg
ICBzdGF0aWNCdWZmZXItPmFkZFJhbmdlKG9mZnNldCwgY291bnQsIHRyYW5zbGF0ZWQtPm1pbklu
ZGV4LCB0cmFuc2xhdGVkLT5tYXhJbmRleCwgc3RyZWFtT2Zmc2V0KTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpbnQgY29udmVydENvdW50ID0gY291bnQ7CisK
KyAgICAgICAgaWYgKHN0YXRpY0J1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHN0
YXRpY0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpID09IDAgJiYgYWxpZ25lZE9mZnNldCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbmRleEJ1ZmZlciA9IHN0YXRpY0J1ZmZlcjsKKyAg
ICAgICAgICAgICAgICBjb252ZXJ0Q291bnQgPSBzdG9yYWdlLT5nZXRTaXplKCkgLyBpbmRleFR5
cGVTaXplKHR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGJ1ZmZlci0+aW52YWxpZGF0ZVN0YXRpY0RhdGEoKTsKKyAg
ICAgICAgICAgICAgICBzdGF0aWNCdWZmZXIgPSBOVUxMOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCFpbmRleEJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAg
RVJSKCJObyB2YWxpZCBpbmRleCBidWZmZXIuIik7CisgICAgICAgICAgICByZXR1cm4gR0xfSU5W
QUxJRF9PUEVSQVRJT047CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBpbnQgYnVmZmVy
U2l6ZVJlcXVpcmVkID0gY29udmVydENvdW50ICogaW5kZXhUeXBlU2l6ZShkZXN0aW5hdGlvbklu
ZGV4VHlwZSk7CisgICAgICAgIGluZGV4QnVmZmVyLT5yZXNlcnZlQnVmZmVyU3BhY2UoYnVmZmVy
U2l6ZVJlcXVpcmVkLCB0eXBlKTsKKworICAgICAgICB2b2lkKiBvdXRwdXQgPSBOVUxMOworICAg
ICAgICBzdHJlYW1PZmZzZXQgPSBpbmRleEJ1ZmZlci0+bWFwQnVmZmVyKGJ1ZmZlclNpemVSZXF1
aXJlZCwgJm91dHB1dCk7CisgICAgICAgIGlmIChzdHJlYW1PZmZzZXQgPT0gLTEgfHwgb3V0cHV0
ID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIG1hcCBpbmRl
eCBidWZmZXIuIik7CisgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAg
ICAgfQorCisgICAgICAgIGNvbnZlcnRJbmRpY2VzKHR5cGUsIHN0YXRpY0J1ZmZlciA/IHN0b3Jh
Z2UtPmdldERhdGEoKSA6IGluZGljZXMsIGNvbnZlcnRDb3VudCwgb3V0cHV0KTsKKworICAgICAg
ICBpZiAoIWluZGV4QnVmZmVyLT51bm1hcEJ1ZmZlcigpKQorICAgICAgICB7CisgICAgICAgICAg
ICBFUlIoIkZhaWxlZCB0byB1bm1hcCBpbmRleCBidWZmZXIuIik7CisgICAgICAgICAgICByZXR1
cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXB1dGVSYW5nZSh0
eXBlLCBpbmRpY2VzLCBjb3VudCwgJnRyYW5zbGF0ZWQtPm1pbkluZGV4LCAmdHJhbnNsYXRlZC0+
bWF4SW5kZXgpOworCisgICAgICAgIGlmIChzdGF0aWNCdWZmZXIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0cmVhbU9mZnNldCA9IChvZmZzZXQgLyBpbmRleFR5cGVTaXplKHR5cGUpKSAqIGlu
ZGV4VHlwZVNpemUoZGVzdGluYXRpb25JbmRleFR5cGUpOworICAgICAgICAgICAgc3RhdGljQnVm
ZmVyLT5hZGRSYW5nZShvZmZzZXQsIGNvdW50LCB0cmFuc2xhdGVkLT5taW5JbmRleCwgdHJhbnNs
YXRlZC0+bWF4SW5kZXgsIHN0cmVhbU9mZnNldCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0
cmFuc2xhdGVkLT5zdG9yYWdlID0gZGlyZWN0U3RvcmFnZSA/IHN0b3JhZ2UgOiBOVUxMOworICAg
IHRyYW5zbGF0ZWQtPmluZGV4QnVmZmVyID0gaW5kZXhCdWZmZXItPmdldEluZGV4QnVmZmVyKCk7
CisgICAgdHJhbnNsYXRlZC0+c2VyaWFsID0gZGlyZWN0U3RvcmFnZSA/IHN0b3JhZ2UtPmdldFNl
cmlhbCgpIDogaW5kZXhCdWZmZXItPmdldFNlcmlhbCgpOworICAgIHRyYW5zbGF0ZWQtPnN0YXJ0
SW5kZXggPSBzdHJlYW1PZmZzZXQgLyBpbmRleFR5cGVTaXplKGRlc3RpbmF0aW9uSW5kZXhUeXBl
KTsKKyAgICB0cmFuc2xhdGVkLT5zdGFydE9mZnNldCA9IHN0cmVhbU9mZnNldDsKKworICAgIGlm
IChidWZmZXIpCisgICAgeworICAgICAgICBidWZmZXItPnByb21vdGVTdGF0aWNVc2FnZShjb3Vu
dCAqIGluZGV4VHlwZVNpemUodHlwZSkpOworICAgIH0KKworICAgIHJldHVybiBHTF9OT19FUlJP
UjsKK30KKworU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKkluZGV4RGF0YU1hbmFnZXI6Omdl
dENvdW50aW5nSW5kaWNlcyhHTHNpemVpIGNvdW50KQoreworICAgIGlmIChjb3VudCA8PSA2NTUz
NikgICAvLyAxNi1iaXQgaW5kaWNlcworICAgIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50
IHNwYWNlTmVlZGVkID0gY291bnQgKiBzaXplb2YodW5zaWduZWQgc2hvcnQpOworCisgICAgICAg
IGlmICghbUNvdW50aW5nQnVmZmVyIHx8IG1Db3VudGluZ0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgp
IDwgc3BhY2VOZWVkZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSBtQ291bnRpbmdC
dWZmZXI7CisgICAgICAgICAgICBtQ291bnRpbmdCdWZmZXIgPSBuZXcgU3RhdGljSW5kZXhCdWZm
ZXJJbnRlcmZhY2UobVJlbmRlcmVyKTsKKyAgICAgICAgICAgIG1Db3VudGluZ0J1ZmZlci0+cmVz
ZXJ2ZUJ1ZmZlclNwYWNlKHNwYWNlTmVlZGVkLCBHTF9VTlNJR05FRF9TSE9SVCk7CisKKyAgICAg
ICAgICAgIHZvaWQqIG1hcHBlZE1lbW9yeSA9IE5VTEw7CisgICAgICAgICAgICBpZiAobUNvdW50
aW5nQnVmZmVyLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnkpID09IC0xIHx8
IG1hcHBlZE1lbW9yeSA9PSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVS
UigiRmFpbGVkIHRvIG1hcCBjb3VudGluZyBidWZmZXIuIik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpk
YXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KG1hcHBlZE1lbW9yeSk7Cisg
ICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBkYXRhW2ldID0gaTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKCFtQ291bnRpbmdCdWZmZXItPnVubWFwQnVmZmVyKCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gdW5tYXAgY291bnRpbmcgYnVmZmVyLiIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorICAgIGVsc2UgaWYgKG1TdHJlYW1pbmdCdWZmZXJJbnQpICAgLy8gMzItYml0IGluZGlj
ZXMgc3VwcG9ydGVkCisgICAgeworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgc3BhY2VOZWVk
ZWQgPSBjb3VudCAqIHNpemVvZih1bnNpZ25lZCBpbnQpOworCisgICAgICAgIGlmICghbUNvdW50
aW5nQnVmZmVyIHx8IG1Db3VudGluZ0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpIDwgc3BhY2VOZWVk
ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSBtQ291bnRpbmdCdWZmZXI7CisgICAg
ICAgICAgICBtQ291bnRpbmdCdWZmZXIgPSBuZXcgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2Uo
bVJlbmRlcmVyKTsKKyAgICAgICAgICAgIG1Db3VudGluZ0J1ZmZlci0+cmVzZXJ2ZUJ1ZmZlclNw
YWNlKHNwYWNlTmVlZGVkLCBHTF9VTlNJR05FRF9JTlQpOworCisgICAgICAgICAgICB2b2lkKiBt
YXBwZWRNZW1vcnkgPSBOVUxMOworICAgICAgICAgICAgaWYgKG1Db3VudGluZ0J1ZmZlci0+bWFw
QnVmZmVyKHNwYWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5KSA9PSAtMSB8fCBtYXBwZWRNZW1vcnkg
PT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBt
YXAgY291bnRpbmcgYnVmZmVyLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmRhdGEgPSByZWludGVycHJl
dF9jYXN0PHVuc2lnbmVkIGludCo+KG1hcHBlZE1lbW9yeSk7CisgICAgICAgICAgICBmb3IoaW50
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBk
YXRhW2ldID0gaTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFtQ291bnRpbmdC
dWZmZXItPnVubWFwQnVmZmVyKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRVJS
KCJGYWlsZWQgdG8gdW5tYXAgY291bnRpbmcgYnVmZmVyLiIpOworICAgICAgICAgICAgICAgIHJl
dHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBtQ291bnRpbmdC
dWZmZXI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9JbmRleERhdGFNYW5hZ2VyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIEluZGV4RGF0YU1hbmFnZXIuaDogRGVmaW5lcyB0aGUgSW5k
ZXhEYXRhTWFuYWdlciwgYSBjbGFzcyB0aGF0CisvLyBydW5zIHRoZSBCdWZmZXIgdHJhbnNsYXRp
b24gcHJvY2VzcyBmb3IgaW5kZXggYnVmZmVycy4KKworI2lmbmRlZiBMSUJHTEVTVjJfSU5ERVhE
QVRBTUFOQUdFUl9IXworI2RlZmluZSBMSUJHTEVTVjJfSU5ERVhEQVRBTUFOQUdFUl9IXworCisj
aW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlCit7CisgICAgZW51bSB7
IElOSVRJQUxfSU5ERVhfQlVGRkVSX1NJWkUgPSA0MDk2ICogc2l6ZW9mKEdMdWludCkgfTsKK30K
KworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBCdWZmZXI7Cit9CisKK25hbWVzcGFjZSByeAorewor
Y2xhc3MgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U7CitjbGFzcyBTdHJlYW1pbmdJbmRleEJ1
ZmZlckludGVyZmFjZTsKK2NsYXNzIEluZGV4QnVmZmVyOworY2xhc3MgQnVmZmVyU3RvcmFnZTsK
K2NsYXNzIFJlbmRlcmVyOworCitzdHJ1Y3QgVHJhbnNsYXRlZEluZGV4RGF0YQoreworICAgIHVu
c2lnbmVkIGludCBtaW5JbmRleDsKKyAgICB1bnNpZ25lZCBpbnQgbWF4SW5kZXg7CisgICAgdW5z
aWduZWQgaW50IHN0YXJ0SW5kZXg7CisgICAgdW5zaWduZWQgaW50IHN0YXJ0T2Zmc2V0OyAgIC8v
IEluIGJ5dGVzCisKKyAgICBJbmRleEJ1ZmZlciAqaW5kZXhCdWZmZXI7CisgICAgQnVmZmVyU3Rv
cmFnZSAqc3RvcmFnZTsKKyAgICB1bnNpZ25lZCBpbnQgc2VyaWFsOworfTsKKworY2xhc3MgSW5k
ZXhEYXRhTWFuYWdlcgoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgSW5kZXhEYXRhTWFuYWdl
cihSZW5kZXJlciAqcmVuZGVyZXIpOworICAgIHZpcnR1YWwgfkluZGV4RGF0YU1hbmFnZXIoKTsK
KworICAgIEdMZW51bSBwcmVwYXJlSW5kZXhEYXRhKEdMZW51bSB0eXBlLCBHTHNpemVpIGNvdW50
LCBnbDo6QnVmZmVyICphcnJheUVsZW1lbnRCdWZmZXIsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywg
VHJhbnNsYXRlZEluZGV4RGF0YSAqdHJhbnNsYXRlZCk7CisgICAgU3RhdGljSW5kZXhCdWZmZXJJ
bnRlcmZhY2UgKmdldENvdW50aW5nSW5kaWNlcyhHTHNpemVpIGNvdW50KTsKKworICBwcml2YXRl
OgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihJbmRleERhdGFNYW5hZ2VyKTsKKworICAg
IFJlbmRlcmVyICpjb25zdCBtUmVuZGVyZXI7CisKKyAgICBTdHJlYW1pbmdJbmRleEJ1ZmZlcklu
dGVyZmFjZSAqbVN0cmVhbWluZ0J1ZmZlclNob3J0OworICAgIFN0cmVhbWluZ0luZGV4QnVmZmVy
SW50ZXJmYWNlICptU3RyZWFtaW5nQnVmZmVySW50OworICAgIFN0YXRpY0luZGV4QnVmZmVySW50
ZXJmYWNlICptQ291bnRpbmdCdWZmZXI7Cit9OworCit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNW
Ml9JTkRFWERBVEFNQU5BR0VSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRD
YWNoZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE2NiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
SW5wdXRMYXlvdXRDYWNoZS5jcHA6IERlZmluZXMgSW5wdXRMYXlvdXRDYWNoZSwgYSBjbGFzcyB0
aGF0IGJ1aWxkcyBhbmQgY2FjaGVzCisvLyBEM0QxMSBpbnB1dCBsYXlvdXRzLgorCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvQnVmZmVyU3RvcmFnZTExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1No
YWRlckV4ZWN1dGFibGUxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5Lmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIuaCIKKworI2luY2x1ZGUgInRoaXJkX3BhcnR5L211cm11
cmhhc2gvTXVybXVySGFzaDMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NvbnN0IHVuc2lnbmVk
IGludCBJbnB1dExheW91dENhY2hlOjprTWF4SW5wdXRMYXlvdXRzID0gMTAyNDsKKworSW5wdXRM
YXlvdXRDYWNoZTo6SW5wdXRMYXlvdXRDYWNoZSgpIDogbUlucHV0TGF5b3V0TWFwKGtNYXhJbnB1
dExheW91dHMsIGhhc2hJbnB1dExheW91dCwgY29tcGFyZUlucHV0TGF5b3V0cykKK3sKKyAgICBt
Q291bnRlciA9IDA7CisgICAgbURldmljZSA9IE5VTEw7CisgICAgbURldmljZUNvbnRleHQgPSBO
VUxMOworfQorCitJbnB1dExheW91dENhY2hlOjp+SW5wdXRMYXlvdXRDYWNoZSgpCit7CisgICAg
Y2xlYXIoKTsKK30KKwordm9pZCBJbnB1dExheW91dENhY2hlOjppbml0aWFsaXplKElEM0QxMURl
dmljZSAqZGV2aWNlLCBJRDNEMTFEZXZpY2VDb250ZXh0ICpjb250ZXh0KQoreworICAgIGNsZWFy
KCk7CisgICAgbURldmljZSA9IGRldmljZTsKKyAgICBtRGV2aWNlQ29udGV4dCA9IGNvbnRleHQ7
Cit9CisKK3ZvaWQgSW5wdXRMYXlvdXRDYWNoZTo6Y2xlYXIoKQoreworICAgIGZvciAoSW5wdXRM
YXlvdXRNYXA6Oml0ZXJhdG9yIGkgPSBtSW5wdXRMYXlvdXRNYXAuYmVnaW4oKTsgaSAhPSBtSW5w
dXRMYXlvdXRNYXAuZW5kKCk7IGkrKykKKyAgICB7CisgICAgICAgIGktPnNlY29uZC5pbnB1dExh
eW91dC0+UmVsZWFzZSgpOworICAgIH0KKyAgICBtSW5wdXRMYXlvdXRNYXAuY2xlYXIoKTsKK30K
KworR0xlbnVtIElucHV0TGF5b3V0Q2FjaGU6OmFwcGx5VmVydGV4QnVmZmVycyhUcmFuc2xhdGVk
QXR0cmlidXRlIGF0dHJpYnV0ZXNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU10sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9n
cmFtQmluYXJ5KQoreworICAgIGludCBzb3J0ZWRTZW1hbnRpY0luZGljZXNbZ2w6Ok1BWF9WRVJU
RVhfQVRUUklCU107CisgICAgcHJvZ3JhbUJpbmFyeS0+c29ydEF0dHJpYnV0ZXNCeUxheW91dChh
dHRyaWJ1dGVzLCBzb3J0ZWRTZW1hbnRpY0luZGljZXMpOworCisgICAgaWYgKCFtRGV2aWNlIHx8
ICFtRGV2aWNlQ29udGV4dCkKKyAgICB7CisgICAgICAgIEVSUigiSW5wdXRMYXlvdXRDYWNoZSBp
cyBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBHTF9JTlZBTElEX09QRVJBVElP
TjsKKyAgICB9CisKKyAgICBJbnB1dExheW91dEtleSBpbEtleSA9IHsgMCB9OworCisgICAgSUQz
RDExQnVmZmVyICp2ZXJ0ZXhCdWZmZXJzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdID0geyBOVUxM
IH07CisgICAgVUlOVCB2ZXJ0ZXhTdHJpZGVzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdID0geyAw
IH07CisgICAgVUlOVCB2ZXJ0ZXhPZmZzZXRzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdID0geyAw
IH07CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2VtYW50aWNOYW1lID0gIlRFWENPT1JEIjsK
KworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklC
UzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXNbaV0uYWN0aXZlKQorICAgICAg
ICB7CisgICAgICAgICAgICBWZXJ0ZXhCdWZmZXIxMSAqdmVydGV4QnVmZmVyID0gVmVydGV4QnVm
ZmVyMTE6Om1ha2VWZXJ0ZXhCdWZmZXIxMShhdHRyaWJ1dGVzW2ldLnZlcnRleEJ1ZmZlcik7Cisg
ICAgICAgICAgICBCdWZmZXJTdG9yYWdlMTEgKmJ1ZmZlclN0b3JhZ2UgPSBhdHRyaWJ1dGVzW2ld
LnN0b3JhZ2UgPyBCdWZmZXJTdG9yYWdlMTE6Om1ha2VCdWZmZXJTdG9yYWdlMTEoYXR0cmlidXRl
c1tpXS5zdG9yYWdlKSA6IE5VTEw7CisKKyAgICAgICAgICAgIEQzRDExX0lOUFVUX0NMQVNTSUZJ
Q0FUSU9OIGlucHV0Q2xhc3MgPSBhdHRyaWJ1dGVzW2ldLmRpdmlzb3IgPiAwID8gRDNEMTFfSU5Q
VVRfUEVSX0lOU1RBTkNFX0RBVEEgOiBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEE7CisKKyAg
ICAgICAgICAgIC8vIFJlY29yZCB0aGUgdHlwZSBvZiB0aGUgYXNzb2NpYXRlZCB2ZXJ0ZXggc2hh
ZGVyIHZlY3RvciBpbiBvdXIga2V5CisgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcHJldmVudCBt
aXNtYXRjaGVkIHZlcnRleCBzaGFkZXJzIGZyb20gdXNpbmcgdGhlIHNhbWUgaW5wdXQgbGF5b3V0
CisgICAgICAgICAgICBHTGludCBhdHRyaWJ1dGVTaXplOworICAgICAgICAgICAgcHJvZ3JhbUJp
bmFyeS0+Z2V0QWN0aXZlQXR0cmlidXRlKGlsS2V5LmVsZW1lbnRDb3VudCwgMCwgTlVMTCwgJmF0
dHJpYnV0ZVNpemUsICZpbEtleS5nbHNsRWxlbWVudFR5cGVbaWxLZXkuZWxlbWVudENvdW50XSwg
TlVMTCk7CisKKyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0u
U2VtYW50aWNOYW1lID0gc2VtYW50aWNOYW1lOworICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNb
aWxLZXkuZWxlbWVudENvdW50XS5TZW1hbnRpY0luZGV4ID0gc29ydGVkU2VtYW50aWNJbmRpY2Vz
W2ldOworICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5Gb3Jt
YXQgPSBhdHRyaWJ1dGVzW2ldLmF0dHJpYnV0ZS0+bUFycmF5RW5hYmxlZCA/IHZlcnRleEJ1ZmZl
ci0+Z2V0RFhHSUZvcm1hdCgqYXR0cmlidXRlc1tpXS5hdHRyaWJ1dGUpIDogRFhHSV9GT1JNQVRf
UjMyRzMyQjMyQTMyX0ZMT0FUOworICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxLZXkuZWxl
bWVudENvdW50XS5JbnB1dFNsb3QgPSBpOworICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxL
ZXkuZWxlbWVudENvdW50XS5BbGlnbmVkQnl0ZU9mZnNldCA9IDA7CisgICAgICAgICAgICBpbEtl
eS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLklucHV0U2xvdENsYXNzID0gaW5wdXRDbGFz
czsKKyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0uSW5zdGFu
Y2VEYXRhU3RlcFJhdGUgPSBhdHRyaWJ1dGVzW2ldLmRpdmlzb3I7CisgICAgICAgICAgICBpbEtl
eS5lbGVtZW50Q291bnQrKzsKKworICAgICAgICAgICAgdmVydGV4QnVmZmVyc1tpXSA9IGJ1ZmZl
clN0b3JhZ2UgPyBidWZmZXJTdG9yYWdlLT5nZXRCdWZmZXIoKSA6IHZlcnRleEJ1ZmZlci0+Z2V0
QnVmZmVyKCk7CisgICAgICAgICAgICB2ZXJ0ZXhTdHJpZGVzW2ldID0gYXR0cmlidXRlc1tpXS5z
dHJpZGU7CisgICAgICAgICAgICB2ZXJ0ZXhPZmZzZXRzW2ldID0gYXR0cmlidXRlc1tpXS5vZmZz
ZXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBJRDNEMTFJbnB1dExheW91dCAqaW5wdXRMYXlv
dXQgPSBOVUxMOworCisgICAgSW5wdXRMYXlvdXRNYXA6Oml0ZXJhdG9yIGkgPSBtSW5wdXRMYXlv
dXRNYXAuZmluZChpbEtleSk7CisgICAgaWYgKGkgIT0gbUlucHV0TGF5b3V0TWFwLmVuZCgpKQor
ICAgIHsKKyAgICAgICAgaW5wdXRMYXlvdXQgPSBpLT5zZWNvbmQuaW5wdXRMYXlvdXQ7CisgICAg
ICAgIGktPnNlY29uZC5sYXN0VXNlZFRpbWUgPSBtQ291bnRlcisrOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBTaGFkZXJFeGVjdXRhYmxlMTEgKnNoYWRlciA9IFNoYWRlckV4ZWN1
dGFibGUxMTo6bWFrZVNoYWRlckV4ZWN1dGFibGUxMShwcm9ncmFtQmluYXJ5LT5nZXRWZXJ0ZXhF
eGVjdXRhYmxlKCkpOworCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRl
SW5wdXRMYXlvdXQoaWxLZXkuZWxlbWVudHMsIGlsS2V5LmVsZW1lbnRDb3VudCwgc2hhZGVyLT5n
ZXRGdW5jdGlvbigpLCBzaGFkZXItPmdldExlbmd0aCgpLCAmaW5wdXRMYXlvdXQpOworICAgICAg
ICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVk
IHRvIGNyYXRlIGlucHV0IGxheW91dCwgcmVzdWx0OiAweCUwOHgiLCByZXN1bHQpOworICAgICAg
ICAgICAgcmV0dXJuIEdMX0lOVkFMSURfT1BFUkFUSU9OOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKG1JbnB1dExheW91dE1hcC5zaXplKCkgPj0ga01heElucHV0TGF5b3V0cykKKyAgICAgICAg
eworICAgICAgICAgICAgVFJBQ0UoIk92ZXJmbG93ZWQgdGhlIGxpbWl0IG9mICV1IGlucHV0IGxh
eW91dHMsIHJlbW92aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkICIKKyAgICAgICAgICAgICAg
ICAgICJ0byBtYWtlIHJvb20uIiwga01heElucHV0TGF5b3V0cyk7CisKKyAgICAgICAgICAgIElu
cHV0TGF5b3V0TWFwOjppdGVyYXRvciBsZWFzdFJlY2VudGx5VXNlZCA9IG1JbnB1dExheW91dE1h
cC5iZWdpbigpOworICAgICAgICAgICAgZm9yIChJbnB1dExheW91dE1hcDo6aXRlcmF0b3IgaSA9
IG1JbnB1dExheW91dE1hcC5iZWdpbigpOyBpICE9IG1JbnB1dExheW91dE1hcC5lbmQoKTsgaSsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpLT5zZWNvbmQubGFzdFVzZWRU
aW1lIDwgbGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5sYXN0VXNlZFRpbWUpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNlZCA9IGk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVhc3RSZWNlbnRseVVz
ZWQtPnNlY29uZC5pbnB1dExheW91dC0+UmVsZWFzZSgpOworICAgICAgICAgICAgbUlucHV0TGF5
b3V0TWFwLmVyYXNlKGxlYXN0UmVjZW50bHlVc2VkKTsKKyAgICAgICAgfQorCisgICAgICAgIElu
cHV0TGF5b3V0Q291bnRlclBhaXIgaW5wdXRDb3VudGVyUGFpcjsKKyAgICAgICAgaW5wdXRDb3Vu
dGVyUGFpci5pbnB1dExheW91dCA9IGlucHV0TGF5b3V0OworICAgICAgICBpbnB1dENvdW50ZXJQ
YWlyLmxhc3RVc2VkVGltZSA9IG1Db3VudGVyKys7CisKKyAgICAgICAgbUlucHV0TGF5b3V0TWFw
Lmluc2VydChzdGQ6Om1ha2VfcGFpcihpbEtleSwgaW5wdXRDb3VudGVyUGFpcikpOworICAgIH0K
KworICAgIG1EZXZpY2VDb250ZXh0LT5JQVNldElucHV0TGF5b3V0KGlucHV0TGF5b3V0KTsKKyAg
ICBtRGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIGdsOjpNQVhfVkVSVEVYX0FU
VFJJQlMsIHZlcnRleEJ1ZmZlcnMsIHZlcnRleFN0cmlkZXMsIHZlcnRleE9mZnNldHMpOworCisg
ICAgcmV0dXJuIEdMX05PX0VSUk9SOworfQorCitzdGQ6OnNpemVfdCBJbnB1dExheW91dENhY2hl
OjpoYXNoSW5wdXRMYXlvdXQoY29uc3QgSW5wdXRMYXlvdXRLZXkgJmlucHV0TGF5b3V0KQorewor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgc2VlZCA9IDB4REVBREJFRUY7CisKKyAgICBz
dGQ6OnNpemVfdCBoYXNoID0gMDsKKyAgICBNdXJtdXJIYXNoM194ODZfMzIoJmlucHV0TGF5b3V0
LCBzaXplb2YoSW5wdXRMYXlvdXRLZXkpLCBzZWVkLCAmaGFzaCk7CisgICAgcmV0dXJuIGhhc2g7
Cit9CisKK2Jvb2wgSW5wdXRMYXlvdXRDYWNoZTo6Y29tcGFyZUlucHV0TGF5b3V0cyhjb25zdCBJ
bnB1dExheW91dEtleSAmYSwgY29uc3QgSW5wdXRMYXlvdXRLZXkgJmIpCit7CisgICAgcmV0dXJu
IG1lbWNtcCgmYSwgJmIsIHNpemVvZihJbnB1dExheW91dEtleSkpID09IDA7Cit9CisKK30KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRM
YXlvdXRDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbnB1dExheW91dENh
Y2hlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJ
bnB1dExheW91dENhY2hlLmg6IERlZmluZXMgSW5wdXRMYXlvdXRDYWNoZSwgYSBjbGFzcyB0aGF0
IGJ1aWxkcyBhbmQgY2FjaGVzCisvLyBEM0QxMSBpbnB1dCBsYXlvdXRzLgorCisjaWZuZGVmIExJ
QkdMRVNWMl9SRU5ERVJFUl9JTlBVVExBWU9VVENBQ0hFX0hfCisjZGVmaW5lIExJQkdMRVNWMl9S
RU5ERVJFUl9JTlBVVExBWU9VVENBQ0hFX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvQ29uc3Rh
bnRzLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIGdsCit7
CitjbGFzcyBQcm9ncmFtQmluYXJ5OworfQorCituYW1lc3BhY2UgcngKK3sKK3N0cnVjdCBUcmFu
c2xhdGVkQXR0cmlidXRlOworCitjbGFzcyBJbnB1dExheW91dENhY2hlCit7CisgIHB1YmxpYzoK
KyAgICBJbnB1dExheW91dENhY2hlKCk7CisgICAgdmlydHVhbCB+SW5wdXRMYXlvdXRDYWNoZSgp
OworCisgICAgdm9pZCBpbml0aWFsaXplKElEM0QxMURldmljZSAqZGV2aWNlLCBJRDNEMTFEZXZp
Y2VDb250ZXh0ICpjb250ZXh0KTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICBHTGVudW0gYXBw
bHlWZXJ0ZXhCdWZmZXJzKFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tnbDo6TUFYX1ZF
UlRFWF9BVFRSSUJTXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpQcm9ncmFt
QmluYXJ5ICpwcm9ncmFtQmluYXJ5KTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihJbnB1dExheW91dENhY2hlKTsKKworICAgIHN0cnVjdCBJbnB1dExheW91dEtl
eQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGVsZW1lbnRDb3VudDsKKyAgICAgICAgRDNE
MTFfSU5QVVRfRUxFTUVOVF9ERVNDIGVsZW1lbnRzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOwor
ICAgICAgICBHTGVudW0gZ2xzbEVsZW1lbnRUeXBlW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOwor
ICAgIH07CisKKyAgICBzdHJ1Y3QgSW5wdXRMYXlvdXRDb3VudGVyUGFpcgorICAgIHsKKyAgICAg
ICAgSUQzRDExSW5wdXRMYXlvdXQgKmlucHV0TGF5b3V0OworICAgICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgbGFzdFVzZWRUaW1lOworICAgIH07CisKKyAgICBzdGF0aWMgc3RkOjpzaXplX3QgaGFz
aElucHV0TGF5b3V0KGNvbnN0IElucHV0TGF5b3V0S2V5ICZpbnB1dExheW91dCk7CisgICAgc3Rh
dGljIGJvb2wgY29tcGFyZUlucHV0TGF5b3V0cyhjb25zdCBJbnB1dExheW91dEtleSAmYSwgY29u
c3QgSW5wdXRMYXlvdXRLZXkgJmIpOworCisgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAoKklucHV0
TGF5b3V0SGFzaEZ1bmN0aW9uKShjb25zdCBJbnB1dExheW91dEtleSAmKTsKKyAgICB0eXBlZGVm
IGJvb2wgKCpJbnB1dExheW91dEVxdWFsaXR5RnVuY3Rpb24pKGNvbnN0IElucHV0TGF5b3V0S2V5
ICYsIGNvbnN0IElucHV0TGF5b3V0S2V5ICYpOworICAgIHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRf
bWFwPElucHV0TGF5b3V0S2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0
TGF5b3V0Q291bnRlclBhaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRM
YXlvdXRIYXNoRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRM
YXlvdXRFcXVhbGl0eUZ1bmN0aW9uPiBJbnB1dExheW91dE1hcDsKKyAgICBJbnB1dExheW91dE1h
cCBtSW5wdXRMYXlvdXRNYXA7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGtNYXhJ
bnB1dExheW91dHM7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbUNvdW50ZXI7CisKKyAgICBJ
RDNEMTFEZXZpY2UgKm1EZXZpY2U7CisgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqbURldmljZUNv
bnRleHQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfSU5QVVRMQVlP
VVRDQUNIRV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9RdWVyeTkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnk5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnk5LmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMjUgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKy8vIFF1ZXJ5OS5jcHA6IERlZmluZXMgdGhlIHJ4OjpRdWVyeTkgY2xhc3Mg
d2hpY2ggaW1wbGVtZW50cyByeDo6UXVlcnlJbXBsLgorCisKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvUXVlcnk5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgorCituYW1lc3BhY2UgcngKK3sKKworUXVlcnk5OjpR
dWVyeTkocng6OlJlbmRlcmVyOSAqcmVuZGVyZXIsIEdMZW51bSB0eXBlKSA6IFF1ZXJ5SW1wbCh0
eXBlKQoreworICAgIG1SZW5kZXJlciA9IHJlbmRlcmVyOworICAgIG1RdWVyeSA9IE5VTEw7Cit9
CisKK1F1ZXJ5OTo6flF1ZXJ5OSgpCit7CisgICAgaWYgKG1RdWVyeSkKKyAgICB7CisgICAgICAg
IG1RdWVyeS0+UmVsZWFzZSgpOworICAgICAgICBtUXVlcnkgPSBOVUxMOworICAgIH0KK30KKwor
dm9pZCBRdWVyeTk6OmJlZ2luKCkKK3sKKyAgICBpZiAobVF1ZXJ5ID09IE5VTEwpCisgICAgewor
ICAgICAgICBpZiAoRkFJTEVEKG1SZW5kZXJlci0+Z2V0RGV2aWNlKCktPkNyZWF0ZVF1ZXJ5KEQz
RFFVRVJZVFlQRV9PQ0NMVVNJT04sICZtUXVlcnkpKSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIEhSRVNVTFQgcmVzdWx0ID0gbVF1ZXJ5LT5Jc3N1ZShEM0RJU1NVRV9CRUdJTik7CisgICAg
QVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKK30KKwordm9pZCBRdWVyeTk6OmVuZCgpCit7Cisg
ICAgaWYgKG1RdWVyeSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisgICAgSFJFU1VMVCByZXN1bHQgPSBtUXVl
cnktPklzc3VlKEQzRElTU1VFX0VORCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsK
KworICAgIG1TdGF0dXMgPSBHTF9GQUxTRTsKKyAgICBtUmVzdWx0ID0gR0xfRkFMU0U7Cit9CisK
K0dMdWludCBRdWVyeTk6OmdldFJlc3VsdCgpCit7CisgICAgaWYgKG1RdWVyeSAhPSBOVUxMKQor
ICAgIHsKKyAgICAgICAgd2hpbGUgKCF0ZXN0UXVlcnkoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgU2xlZXAoMCk7CisgICAgICAgICAgICAvLyBleHBsaWNpdGx5IGNoZWNrIGZvciBkZXZpY2Ug
bG9zcworICAgICAgICAgICAgLy8gc29tZSBkcml2ZXJzIHNlZW0gdG8gcmV0dXJuIFNfRkFMU0Ug
ZXZlbiBpZiB0aGUgZGV2aWNlIGlzIGxvc3QKKyAgICAgICAgICAgIC8vIGluc3RlYWQgb2YgRDNE
RVJSX0RFVklDRUxPU1QgbGlrZSB0aGV5IHNob3VsZAorICAgICAgICAgICAgaWYgKG1SZW5kZXJl
ci0+dGVzdERldmljZUxvc3QodHJ1ZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtUmVzdWx0OworfQorCitHTGJvb2xlYW4gUXVl
cnk5Ojppc1Jlc3VsdEF2YWlsYWJsZSgpCit7CisgICAgaWYgKG1RdWVyeSAhPSBOVUxMKQorICAg
IHsKKyAgICAgICAgdGVzdFF1ZXJ5KCk7CisgICAgfQorCisgICAgcmV0dXJuIG1TdGF0dXM7Cit9
CisKK0dMYm9vbGVhbiBRdWVyeTk6OnRlc3RRdWVyeSgpCit7CisgICAgaWYgKG1RdWVyeSAhPSBO
VUxMICYmIG1TdGF0dXMgIT0gR0xfVFJVRSkKKyAgICB7CisgICAgICAgIERXT1JEIG51bVBpeGVs
cyA9IDA7CisKKyAgICAgICAgSFJFU1VMVCBocmVzID0gbVF1ZXJ5LT5HZXREYXRhKCZudW1QaXhl
bHMsIHNpemVvZihEV09SRCksIEQzREdFVERBVEFfRkxVU0gpOworICAgICAgICBpZiAoaHJlcyA9
PSBTX09LKQorICAgICAgICB7CisgICAgICAgICAgICBtU3RhdHVzID0gIEdMX1RSVUU7CisKKyAg
ICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xf
QU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQ6CisgICAgICAgICAgICAgICAgbVJl
c3VsdCA9IChudW1QaXhlbHMgPiAwKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NF
UlQoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGQz
ZDk6OmlzRGV2aWNlTG9zdEVycm9yKGhyZXMpKQorICAgICAgICB7CisgICAgICAgICAgICBtUmVu
ZGVyZXItPm5vdGlmeURldmljZUxvc3QoKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgR0xfVFJVRSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
bVN0YXR1czsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfVFJVRTsgLy8gcHJldmVudCBibG9ja2lu
ZyB3aGVuIHF1ZXJ5IGlzIG51bGwKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5OS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9R
dWVyeTkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IFF1ZXJ5OS5oOiBEZWZpbmVzIHRoZSByeDo6UXVlcnk5IGNsYXNzIHdoaWNoIGltcGxlbWVudHMg
cng6OlF1ZXJ5SW1wbC4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfUVVFUlk5X0hfCisj
ZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9RVUVSWTlfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9RdWVyeUltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJl
cjk7CisKK2NsYXNzIFF1ZXJ5OSA6IHB1YmxpYyBRdWVyeUltcGwKK3sKKyAgcHVibGljOgorICAg
IFF1ZXJ5OShyeDo6UmVuZGVyZXI5ICpyZW5kZXJlciwgR0xlbnVtIHR5cGUpOworICAgIHZpcnR1
YWwgflF1ZXJ5OSgpOworCisgICAgdm9pZCBiZWdpbigpOworICAgIHZvaWQgZW5kKCk7CisgICAg
R0x1aW50IGdldFJlc3VsdCgpOworICAgIEdMYm9vbGVhbiBpc1Jlc3VsdEF2YWlsYWJsZSgpOwor
CisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFF1ZXJ5OSk7CisKKyAg
ICBHTGJvb2xlYW4gdGVzdFF1ZXJ5KCk7CisKKyAgICByeDo6UmVuZGVyZXI5ICptUmVuZGVyZXI7
CisgICAgSURpcmVjdDNEUXVlcnk5ICptUXVlcnk7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJH
TEVTVjJfUkVOREVSRVJfUVVFUlk5X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5MTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnkxMS5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1F1ZXJ5MTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMiBAQAorI2luY2x1ZGUgInBy
ZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUXVlcnkxMS5jcHA6IERlZmluZXMgdGhl
IHJ4OjpRdWVyeTExIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgcng6OlF1ZXJ5SW1wbC4KKworI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorCitu
YW1lc3BhY2UgcngKK3sKKworUXVlcnkxMTo6UXVlcnkxMShyeDo6UmVuZGVyZXIxMSAqcmVuZGVy
ZXIsIEdMZW51bSB0eXBlKSA6IFF1ZXJ5SW1wbCh0eXBlKQoreworICAgIG1SZW5kZXJlciA9IHJl
bmRlcmVyOworICAgIG1RdWVyeSA9IE5VTEw7Cit9CisKK1F1ZXJ5MTE6On5RdWVyeTExKCkKK3sK
KyAgICBpZiAobVF1ZXJ5KQorICAgIHsKKyAgICAgICAgbVF1ZXJ5LT5SZWxlYXNlKCk7CisgICAg
ICAgIG1RdWVyeSA9IE5VTEw7CisgICAgfQorfQorCit2b2lkIFF1ZXJ5MTE6OmJlZ2luKCkKK3sK
KyAgICBpZiAobVF1ZXJ5ID09IE5VTEwpCisgICAgeworICAgICAgICBEM0QxMV9RVUVSWV9ERVND
IHF1ZXJ5RGVzYzsKKyAgICAgICAgcXVlcnlEZXNjLlF1ZXJ5ID0gRDNEMTFfUVVFUllfT0NDTFVT
SU9OOworICAgICAgICBxdWVyeURlc2MuTWlzY0ZsYWdzID0gMDsKKworICAgICAgICBpZiAoRkFJ
TEVEKG1SZW5kZXJlci0+Z2V0RGV2aWNlKCktPkNyZWF0ZVF1ZXJ5KCZxdWVyeURlc2MsICZtUXVl
cnkpKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29u
dGV4dCgpLT5CZWdpbihtUXVlcnkpOworfQorCit2b2lkIFF1ZXJ5MTE6OmVuZCgpCit7CisgICAg
aWYgKG1RdWVyeSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisgICAgbVJlbmRlcmVyLT5nZXREZXZpY2VDb250
ZXh0KCktPkVuZChtUXVlcnkpOworCisgICAgbVN0YXR1cyA9IEdMX0ZBTFNFOworICAgIG1SZXN1
bHQgPSBHTF9GQUxTRTsKK30KKworR0x1aW50IFF1ZXJ5MTE6OmdldFJlc3VsdCgpCit7CisgICAg
aWYgKG1RdWVyeSAhPSBOVUxMKQorICAgIHsKKyAgICAgICAgd2hpbGUgKCF0ZXN0UXVlcnkoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgU2xlZXAoMCk7CisgICAgICAgICAgICAvLyBleHBsaWNp
dGx5IGNoZWNrIGZvciBkZXZpY2UgbG9zcywgc29tZSBkcml2ZXJzIHNlZW0gdG8gcmV0dXJuIFNf
RkFMU0UKKyAgICAgICAgICAgIC8vIGlmIHRoZSBkZXZpY2UgaXMgbG9zdAorICAgICAgICAgICAg
aWYgKG1SZW5kZXJlci0+dGVzdERldmljZUxvc3QodHJ1ZSkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtUmVzdWx0OworfQorCitH
TGJvb2xlYW4gUXVlcnkxMTo6aXNSZXN1bHRBdmFpbGFibGUoKQoreworICAgIGlmIChtUXVlcnkg
IT0gTlVMTCkKKyAgICB7CisgICAgICAgIHRlc3RRdWVyeSgpOworICAgIH0KKworICAgIHJldHVy
biBtU3RhdHVzOworfQorCitHTGJvb2xlYW4gUXVlcnkxMTo6dGVzdFF1ZXJ5KCkKK3sKKyAgICBp
ZiAobVF1ZXJ5ICE9IE5VTEwgJiYgbVN0YXR1cyAhPSBHTF9UUlVFKQorICAgIHsKKyAgICAgICAg
VUlOVDY0IG51bVBpeGVscyA9IDA7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVJlbmRlcmVy
LT5nZXREZXZpY2VDb250ZXh0KCktPkdldERhdGEobVF1ZXJ5LCAmbnVtUGl4ZWxzLCBzaXplb2Yo
VUlOVDY0KSwgMCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gU19PSykKKyAgICAgICAgeworICAg
ICAgICAgICAgbVN0YXR1cyA9IEdMX1RSVUU7CisKKyAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlw
ZSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BB
U1NFRF9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNF
UlZBVElWRV9FWFQ6CisgICAgICAgICAgICAgICAgbVJlc3VsdCA9IChudW1QaXhlbHMgPiAwKSA/
IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1SZW5kZXJlci0+dGVzdERldmljZUxvc3Qo
dHJ1ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSwgR0xfVFJVRSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbVN0YXR1czsK
KyAgICB9CisKKyAgICByZXR1cm4gR0xfVFJVRTsgLy8gcHJldmVudCBibG9ja2luZyB3aGVuIHF1
ZXJ5IGlzIG51bGwKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5MTEu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAx
MyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFF1ZXJ5
MTEuaDogRGVmaW5lcyB0aGUgcng6OlF1ZXJ5MTEgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyByeDo6
UXVlcnlJbXBsLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9RVUVSWTExX0hfCisjZGVm
aW5lIExJQkdMRVNWMl9SRU5ERVJFUl9RVUVSWTExX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvUXVlcnlJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXIx
MTsKKworY2xhc3MgUXVlcnkxMSA6IHB1YmxpYyBRdWVyeUltcGwKK3sKKyAgcHVibGljOgorICAg
IFF1ZXJ5MTEocng6OlJlbmRlcmVyMTEgKnJlbmRlcmVyLCBHTGVudW0gdHlwZSk7CisgICAgdmly
dHVhbCB+UXVlcnkxMSgpOworCisgICAgdm9pZCBiZWdpbigpOworICAgIHZvaWQgZW5kKCk7Cisg
ICAgR0x1aW50IGdldFJlc3VsdCgpOworICAgIEdMYm9vbGVhbiBpc1Jlc3VsdEF2YWlsYWJsZSgp
OworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFF1ZXJ5MTEpOwor
CisgICAgR0xib29sZWFuIHRlc3RRdWVyeSgpOworCisgICAgcng6OlJlbmRlcmVyMTEgKm1SZW5k
ZXJlcjsKKyAgICBJRDNEMTFRdWVyeSAqbVF1ZXJ5OworfTsKKworfQorCisjZW5kaWYgLy8gTElC
R0xFU1YyX1JFTkRFUkVSX1FVRVJZMTFfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnlJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeUltcGwuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvUXVlcnlJbXBsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyBRdWVyeUltcGwuaDogRGVmaW5lcyB0aGUgYWJzdHJhY3Qgcng6OlF1ZXJ5SW1wbCBj
bGFzcy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfUVVFUllJTVBMX0hfCisjZGVmaW5l
IExJQkdMRVNWMl9SRU5ERVJFUl9RVUVSWUlNUExfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmds
ZXV0aWxzLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBRdWVyeUltcGwKK3sKKyAgcHVi
bGljOgorICAgIGV4cGxpY2l0IFF1ZXJ5SW1wbChHTGVudW0gdHlwZSkgOiBtVHlwZSh0eXBlKSwg
bVN0YXR1cyhHTF9GQUxTRSksIG1SZXN1bHQoMCkgeyB9CisgICAgdmlydHVhbCB+UXVlcnlJbXBs
KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGVuZCgpID0gMDsKKyAgICB2aXJ0dWFsIEdMdWludCBnZXRSZXN1bHQoKSA9IDA7CisgICAgdmly
dHVhbCBHTGJvb2xlYW4gaXNSZXN1bHRBdmFpbGFibGUoKSA9IDA7CisKKyAgICBHTGVudW0gZ2V0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlOyB9CisKKyAgcHJvdGVjdGVkOgorICAgIEdMdWlu
dCBtUmVzdWx0OworICAgIEdMYm9vbGVhbiBtU3RhdHVzOworCisgIHByaXZhdGU6CisgICAgRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKFF1ZXJ5SW1wbCk7CisKKyAgICBHTGVudW0gbVR5cGU7Cit9
OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfUVVFUllJTVBMX0hfCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclN0
YXRlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyU3RhdGVDYWNoZS5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclN0YXRl
Q2FjaGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwNiBAQAorI2luY2x1ZGUgInByZWNv
bXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBSZW5kZXJTdGF0ZUNhY2hlLmNwcDog
RGVmaW5lcyByeDo6UmVuZGVyU3RhdGVDYWNoZSwgYSBjYWNoZSBvZiBEaXJlY3QzRCByZW5kZXIK
Ky8vIHN0YXRlIG9iamVjdHMuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVy
U3RhdGVDYWNoZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0
aWxzLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0
eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmgiCisKK25hbWVzcGFjZSByeAoreworCisvLyBNU0RO
J3MgZG9jdW1lbnRhdGlvbiBvZiBJRDNEMTFEZXZpY2U6OkNyZWF0ZUJsZW5kU3RhdGUsIElEM0Qx
MURldmljZTo6Q3JlYXRlUmFzdGVyaXplclN0YXRlLAorLy8gSUQzRDExRGV2aWNlOjpDcmVhdGVE
ZXB0aFN0ZW5jaWxTdGF0ZSBhbmQgSUQzRDExRGV2aWNlOjpDcmVhdGVTYW1wbGVyU3RhdGUgY2xh
aW1zIHRoZSBtYXhpbXVtCisvLyBudW1iZXIgb2YgdW5pcXVlIHN0YXRlcyBvZiBlYWNoIHR5cGUg
YW4gYXBwbGljYXRpb24gY2FuIGNyZWF0ZSBpcyA0MDk2Citjb25zdCB1bnNpZ25lZCBpbnQgUmVu
ZGVyU3RhdGVDYWNoZTo6a01heEJsZW5kU3RhdGVzID0gNDA5NjsKK2NvbnN0IHVuc2lnbmVkIGlu
dCBSZW5kZXJTdGF0ZUNhY2hlOjprTWF4UmFzdGVyaXplclN0YXRlcyA9IDQwOTY7Citjb25zdCB1
bnNpZ25lZCBpbnQgUmVuZGVyU3RhdGVDYWNoZTo6a01heERlcHRoU3RlbmNpbFN0YXRlcyA9IDQw
OTY7Citjb25zdCB1bnNpZ25lZCBpbnQgUmVuZGVyU3RhdGVDYWNoZTo6a01heFNhbXBsZXJTdGF0
ZXMgPSA0MDk2OworCitSZW5kZXJTdGF0ZUNhY2hlOjpSZW5kZXJTdGF0ZUNhY2hlKCkgOiBtRGV2
aWNlKE5VTEwpLCBtQ291bnRlcigwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1CbGVuZFN0YXRlQ2FjaGUoa01heEJsZW5kU3RhdGVzLCBoYXNoQmxlbmRTdGF0ZSwg
Y29tcGFyZUJsZW5kU3RhdGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1SYXN0ZXJpemVyU3RhdGVDYWNoZShrTWF4UmFzdGVyaXplclN0YXRlcywgaGFzaFJhc3Rl
cml6ZXJTdGF0ZSwgY29tcGFyZVJhc3Rlcml6ZXJTdGF0ZXMpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUoa01heERlcHRoU3Rl
bmNpbFN0YXRlcywgaGFzaERlcHRoU3RlbmNpbFN0YXRlLCBjb21wYXJlRGVwdGhTdGVuY2lsU3Rh
dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TYW1wbGVyU3Rh
dGVDYWNoZShrTWF4U2FtcGxlclN0YXRlcywgaGFzaFNhbXBsZXJTdGF0ZSwgY29tcGFyZVNhbXBs
ZXJTdGF0ZXMpCit7Cit9CisKK1JlbmRlclN0YXRlQ2FjaGU6On5SZW5kZXJTdGF0ZUNhY2hlKCkK
K3sKKyAgICBjbGVhcigpOworfQorCit2b2lkIFJlbmRlclN0YXRlQ2FjaGU6OmluaXRpYWxpemUo
SUQzRDExRGV2aWNlICpkZXZpY2UpCit7CisgICAgY2xlYXIoKTsKKyAgICBtRGV2aWNlID0gZGV2
aWNlOworfQorCit2b2lkIFJlbmRlclN0YXRlQ2FjaGU6OmNsZWFyKCkKK3sKKyAgICBmb3IgKEJs
ZW5kU3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBtQmxlbmRTdGF0ZUNhY2hlLmJlZ2luKCk7IGkgIT0g
bUJsZW5kU3RhdGVDYWNoZS5lbmQoKTsgaSsrKQorICAgIHsKKyAgICAgICAgaS0+c2Vjb25kLmZp
cnN0LT5SZWxlYXNlKCk7CisgICAgfQorICAgIG1CbGVuZFN0YXRlQ2FjaGUuY2xlYXIoKTsKKwor
ICAgIGZvciAoUmFzdGVyaXplclN0YXRlTWFwOjppdGVyYXRvciBpID0gbVJhc3Rlcml6ZXJTdGF0
ZUNhY2hlLmJlZ2luKCk7IGkgIT0gbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlLmVuZCgpOyBpKyspCisg
ICAgeworICAgICAgICBpLT5zZWNvbmQuZmlyc3QtPlJlbGVhc2UoKTsKKyAgICB9CisgICAgbVJh
c3Rlcml6ZXJTdGF0ZUNhY2hlLmNsZWFyKCk7CisKKyAgICBmb3IgKERlcHRoU3RlbmNpbFN0YXRl
TWFwOjppdGVyYXRvciBpID0gbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUuYmVnaW4oKTsgaSAhPSBt
RGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5lbmQoKTsgaSsrKQorICAgIHsKKyAgICAgICAgaS0+c2Vj
b25kLmZpcnN0LT5SZWxlYXNlKCk7CisgICAgfQorICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZUNhY2hl
LmNsZWFyKCk7CisKKyAgICBmb3IgKFNhbXBsZXJTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9IG1TYW1w
bGVyU3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1TYW1wbGVyU3RhdGVDYWNoZS5lbmQoKTsgaSsr
KQorICAgIHsKKyAgICAgICAgaS0+c2Vjb25kLmZpcnN0LT5SZWxlYXNlKCk7CisgICAgfQorICAg
IG1TYW1wbGVyU3RhdGVDYWNoZS5jbGVhcigpOworfQorCitzdGQ6OnNpemVfdCBSZW5kZXJTdGF0
ZUNhY2hlOjpoYXNoQmxlbmRTdGF0ZShjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSkK
K3sKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHNlZWQgPSAweEFCQ0RFRjk4OworCisg
ICAgc3RkOjpzaXplX3QgaGFzaCA9IDA7CisgICAgTXVybXVySGFzaDNfeDg2XzMyKCZibGVuZFN0
YXRlLCBzaXplb2YoZ2w6OkJsZW5kU3RhdGUpLCBzZWVkLCAmaGFzaCk7CisgICAgcmV0dXJuIGhh
c2g7Cit9CisKK2Jvb2wgUmVuZGVyU3RhdGVDYWNoZTo6Y29tcGFyZUJsZW5kU3RhdGVzKGNvbnN0
IGdsOjpCbGVuZFN0YXRlICZhLCBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYikKK3sKKyAgICByZXR1
cm4gbWVtY21wKCZhLCAmYiwgc2l6ZW9mKGdsOjpCbGVuZFN0YXRlKSkgPT0gMDsKK30KKworSUQz
RDExQmxlbmRTdGF0ZSAqUmVuZGVyU3RhdGVDYWNoZTo6Z2V0QmxlbmRTdGF0ZShjb25zdCBnbDo6
QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSkKK3sKKyAgICBpZiAoIW1EZXZpY2UpCisgICAgeworICAg
ICAgICBFUlIoIlJlbmRlclN0YXRlQ2FjaGUgaXMgbm90IGluaXRpYWxpemVkLiIpOworICAgICAg
ICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBCbGVuZFN0YXRlTWFwOjppdGVyYXRvciBpID0g
bUJsZW5kU3RhdGVDYWNoZS5maW5kKGJsZW5kU3RhdGUpOworICAgIGlmIChpICE9IG1CbGVuZFN0
YXRlQ2FjaGUuZW5kKCkpCisgICAgeworICAgICAgICBCbGVuZFN0YXRlQ291bnRlclBhaXIgJnN0
YXRlID0gaS0+c2Vjb25kOworICAgICAgICBzdGF0ZS5zZWNvbmQgPSBtQ291bnRlcisrOworICAg
ICAgICByZXR1cm4gc3RhdGUuZmlyc3Q7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IGlmIChtQmxlbmRTdGF0ZUNhY2hlLnNpemUoKSA+PSBrTWF4QmxlbmRTdGF0ZXMpCisgICAgICAg
IHsKKyAgICAgICAgICAgIFRSQUNFKCJPdmVyZmxvd2VkIHRoZSBsaW1pdCBvZiAldSBibGVuZCBz
dGF0ZXMsIHJlbW92aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkICIKKyAgICAgICAgICAgICAg
ICAgICJ0byBtYWtlIHJvb20uIiwga01heEJsZW5kU3RhdGVzKTsKKworICAgICAgICAgICAgQmxl
bmRTdGF0ZU1hcDo6aXRlcmF0b3IgbGVhc3RSZWNlbnRseVVzZWQgPSBtQmxlbmRTdGF0ZUNhY2hl
LmJlZ2luKCk7CisgICAgICAgICAgICBmb3IgKEJsZW5kU3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBt
QmxlbmRTdGF0ZUNhY2hlLmJlZ2luKCk7IGkgIT0gbUJsZW5kU3RhdGVDYWNoZS5lbmQoKTsgaSsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpLT5zZWNvbmQuc2Vjb25kIDwg
bGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5zZWNvbmQpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNlZCA9IGk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5m
aXJzdC0+UmVsZWFzZSgpOworICAgICAgICAgICAgbUJsZW5kU3RhdGVDYWNoZS5lcmFzZShsZWFz
dFJlY2VudGx5VXNlZCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDcmVhdGUgYSBuZXcgYmxl
bmQgc3RhdGUgYW5kIGluc2VydCBpdCBpbnRvIHRoZSBjYWNoZQorICAgICAgICBEM0QxMV9CTEVO
RF9ERVNDIGJsZW5kRGVzYyA9IHsgMCB9OworICAgICAgICBibGVuZERlc2MuQWxwaGFUb0NvdmVy
YWdlRW5hYmxlID0gYmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJhZ2U7CisgICAgICAgIGJs
ZW5kRGVzYy5JbmRlcGVuZGVudEJsZW5kRW5hYmxlID0gRkFMU0U7CisKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBEM0QxMV9TSU1VTFRBTkVPVVNfUkVOREVSX1RBUkdFVF9D
T1VOVDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX0JM
RU5EX0RFU0MgJnJ0QmxlbmQgPSBibGVuZERlc2MuUmVuZGVyVGFyZ2V0W2ldOworCisgICAgICAg
ICAgICBydEJsZW5kLkJsZW5kRW5hYmxlID0gYmxlbmRTdGF0ZS5ibGVuZDsKKyAgICAgICAgICAg
IGlmIChibGVuZFN0YXRlLmJsZW5kKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJ0
QmxlbmQuU3JjQmxlbmQgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kRnVuYyhibGVuZFN0YXRlLnNv
dXJjZUJsZW5kUkdCLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgcnRCbGVuZC5EZXN0QmxlbmQg
PSBnbF9kM2QxMTo6Q29udmVydEJsZW5kRnVuYyhibGVuZFN0YXRlLmRlc3RCbGVuZFJHQiwgZmFs
c2UpOworICAgICAgICAgICAgICAgIHJ0QmxlbmQuQmxlbmRPcCA9IGdsX2QzZDExOjpDb252ZXJ0
QmxlbmRPcChibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IpOworCisgICAgICAgICAgICAgICAg
cnRCbGVuZC5TcmNCbGVuZEFscGhhID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRT
dGF0ZS5zb3VyY2VCbGVuZEFscGhhLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBydEJsZW5kLkRl
c3RCbGVuZEFscGhhID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5kZXN0
QmxlbmRBbHBoYSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgcnRCbGVuZC5CbGVuZE9wQWxwaGEg
PSBnbF9kM2QxMTo6Q29udmVydEJsZW5kT3AoYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBydEJsZW5kLlJlbmRlclRhcmdldFdyaXRl
TWFzayA9IGdsX2QzZDExOjpDb252ZXJ0Q29sb3JNYXNrKGJsZW5kU3RhdGUuY29sb3JNYXNrUmVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBibGVuZFN0YXRlLmNvbG9yTWFza0JsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUuY29s
b3JNYXNrQWxwaGEpOworICAgICAgICB9CisKKyAgICAgICAgSUQzRDExQmxlbmRTdGF0ZSAqZHgx
MUJsZW5kU3RhdGUgPSBOVUxMOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNy
ZWF0ZUJsZW5kU3RhdGUoJmJsZW5kRGVzYywgJmR4MTFCbGVuZFN0YXRlKTsKKyAgICAgICAgaWYg
KEZBSUxFRChyZXN1bHQpIHx8ICFkeDExQmxlbmRTdGF0ZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgRVJSKCJVbmFibGUgdG8gY3JlYXRlIGEgSUQzRDExQmxlbmRTdGF0ZSwgSFJFU1VMVDogMHgl
WC4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAg
ICAgICBtQmxlbmRTdGF0ZUNhY2hlLmluc2VydChzdGQ6Om1ha2VfcGFpcihibGVuZFN0YXRlLCBz
dGQ6Om1ha2VfcGFpcihkeDExQmxlbmRTdGF0ZSwgbUNvdW50ZXIrKykpKTsKKworICAgICAgICBy
ZXR1cm4gZHgxMUJsZW5kU3RhdGU7CisgICAgfQorfQorCitzdGQ6OnNpemVfdCBSZW5kZXJTdGF0
ZUNhY2hlOjpoYXNoUmFzdGVyaXplclN0YXRlKGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAmcmFz
dGVyU3RhdGUpCit7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBzZWVkID0gMHhBQkNE
RUY5ODsKKworICAgIHN0ZDo6c2l6ZV90IGhhc2ggPSAwOworICAgIE11cm11ckhhc2gzX3g4Nl8z
MigmcmFzdGVyU3RhdGUsIHNpemVvZihSYXN0ZXJpemVyU3RhdGVLZXkpLCBzZWVkLCAmaGFzaCk7
CisgICAgcmV0dXJuIGhhc2g7Cit9CisKK2Jvb2wgUmVuZGVyU3RhdGVDYWNoZTo6Y29tcGFyZVJh
c3Rlcml6ZXJTdGF0ZXMoY29uc3QgUmFzdGVyaXplclN0YXRlS2V5ICZhLCBjb25zdCBSYXN0ZXJp
emVyU3RhdGVLZXkgJmIpCit7CisgICAgcmV0dXJuIG1lbWNtcCgmYSwgJmIsIHNpemVvZihSYXN0
ZXJpemVyU3RhdGVLZXkpKSA9PSAwOworfQorCitJRDNEMTFSYXN0ZXJpemVyU3RhdGUgKlJlbmRl
clN0YXRlQ2FjaGU6OmdldFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVyaXplclN0YXRl
ICZyYXN0ZXJTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgc2Npc3NvckVuYWJsZWQsIHVuc2lnbmVkIGludCBkZXB0
aFNpemUpCit7CisgICAgaWYgKCFtRGV2aWNlKQorICAgIHsKKyAgICAgICAgRVJSKCJSZW5kZXJT
dGF0ZUNhY2hlIGlzIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7Cisg
ICAgfQorCisgICAgUmFzdGVyaXplclN0YXRlS2V5IGtleTsKKyAgICBrZXkucmFzdGVyaXplclN0
YXRlID0gcmFzdGVyU3RhdGU7CisgICAga2V5LnNjaXNzb3JFbmFibGVkID0gc2Npc3NvckVuYWJs
ZWQ7CisgICAga2V5LmRlcHRoU2l6ZSA9IGRlcHRoU2l6ZTsKKworICAgIFJhc3Rlcml6ZXJTdGF0
ZU1hcDo6aXRlcmF0b3IgaSA9IG1SYXN0ZXJpemVyU3RhdGVDYWNoZS5maW5kKGtleSk7CisgICAg
aWYgKGkgIT0gbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlLmVuZCgpKQorICAgIHsKKyAgICAgICAgUmFz
dGVyaXplclN0YXRlQ291bnRlclBhaXIgJnN0YXRlID0gaS0+c2Vjb25kOworICAgICAgICBzdGF0
ZS5zZWNvbmQgPSBtQ291bnRlcisrOworICAgICAgICByZXR1cm4gc3RhdGUuZmlyc3Q7CisgICAg
fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmIChtUmFzdGVyaXplclN0YXRlQ2FjaGUuc2l6
ZSgpID49IGtNYXhSYXN0ZXJpemVyU3RhdGVzKQorICAgICAgICB7CisgICAgICAgICAgICBUUkFD
RSgiT3ZlcmZsb3dlZCB0aGUgbGltaXQgb2YgJXUgcmFzdGVyaXplciBzdGF0ZXMsIHJlbW92aW5n
IHRoZSBsZWFzdCByZWNlbnRseSB1c2VkICIKKyAgICAgICAgICAgICAgICAgICJ0byBtYWtlIHJv
b20uIiwga01heFJhc3Rlcml6ZXJTdGF0ZXMpOworCisgICAgICAgICAgICBSYXN0ZXJpemVyU3Rh
dGVNYXA6Oml0ZXJhdG9yIGxlYXN0UmVjZW50bHlVc2VkID0gbVJhc3Rlcml6ZXJTdGF0ZUNhY2hl
LmJlZ2luKCk7CisgICAgICAgICAgICBmb3IgKFJhc3Rlcml6ZXJTdGF0ZU1hcDo6aXRlcmF0b3Ig
aSA9IG1SYXN0ZXJpemVyU3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1SYXN0ZXJpemVyU3RhdGVD
YWNoZS5lbmQoKTsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpLT5z
ZWNvbmQuc2Vjb25kIDwgbGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5zZWNvbmQpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNlZCA9IGk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVhc3RSZWNlbnRs
eVVzZWQtPnNlY29uZC5maXJzdC0+UmVsZWFzZSgpOworICAgICAgICAgICAgbVJhc3Rlcml6ZXJT
dGF0ZUNhY2hlLmVyYXNlKGxlYXN0UmVjZW50bHlVc2VkKTsKKyAgICAgICAgfQorCisgICAgICAg
IEQzRDExX0NVTExfTU9ERSBjdWxsTW9kZSA9IGdsX2QzZDExOjpDb252ZXJ0Q3VsbE1vZGUocmFz
dGVyU3RhdGUuY3VsbEZhY2UsIHJhc3RlclN0YXRlLmN1bGxNb2RlKTsKKworICAgICAgICAvLyBE
aXNhYmxlIGN1bGxpbmcgaWYgZHJhd2luZyBwb2ludHMKKyAgICAgICAgaWYgKHJhc3RlclN0YXRl
LnBvaW50RHJhd01vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGN1bGxNb2RlID0gRDNEMTFf
Q1VMTF9OT05FOworICAgICAgICB9CisKKyAgICAgICAgRDNEMTFfUkFTVEVSSVpFUl9ERVNDIHJh
c3RlckRlc2M7CisgICAgICAgIHJhc3RlckRlc2MuRmlsbE1vZGUgPSBEM0QxMV9GSUxMX1NPTElE
OworICAgICAgICByYXN0ZXJEZXNjLkN1bGxNb2RlID0gY3VsbE1vZGU7CisgICAgICAgIHJhc3Rl
ckRlc2MuRnJvbnRDb3VudGVyQ2xvY2t3aXNlID0gKHJhc3RlclN0YXRlLmZyb250RmFjZSA9PSBH
TF9DQ1cpID8gRkFMU0U6IFRSVUU7CisgICAgICAgIHJhc3RlckRlc2MuRGVwdGhCaWFzID0gbGRl
eHAocmFzdGVyU3RhdGUucG9seWdvbk9mZnNldFVuaXRzLCAtc3RhdGljX2Nhc3Q8aW50PihkZXB0
aFNpemUpKTsKKyAgICAgICAgcmFzdGVyRGVzYy5EZXB0aEJpYXNDbGFtcCA9IDAuMGY7IC8vIE1T
RE4gZG9jdW1lbnRhdGlvbiBvZiBEZXB0aEJpYXNDbGFtcCBpbXBsaWVzIGEgdmFsdWUgb2YgemVy
byB3aWxsIHByZWZvcm0gbm8gY2xhbXBpbmcsIG11c3QgYmUgdGVzdGVkIHRob3VnaC4KKyAgICAg
ICAgcmFzdGVyRGVzYy5TbG9wZVNjYWxlZERlcHRoQmlhcyA9IHJhc3RlclN0YXRlLnBvbHlnb25P
ZmZzZXRGYWN0b3I7CisgICAgICAgIHJhc3RlckRlc2MuRGVwdGhDbGlwRW5hYmxlID0gVFJVRTsK
KyAgICAgICAgcmFzdGVyRGVzYy5TY2lzc29yRW5hYmxlID0gc2Npc3NvckVuYWJsZWQgPyBUUlVF
IDogRkFMU0U7CisgICAgICAgIHJhc3RlckRlc2MuTXVsdGlzYW1wbGVFbmFibGUgPSByYXN0ZXJT
dGF0ZS5tdWx0aVNhbXBsZTsKKyAgICAgICAgcmFzdGVyRGVzYy5BbnRpYWxpYXNlZExpbmVFbmFi
bGUgPSBGQUxTRTsKKworICAgICAgICBJRDNEMTFSYXN0ZXJpemVyU3RhdGUgKmR4MTFSYXN0ZXJp
emVyU3RhdGUgPSBOVUxMOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0
ZVJhc3Rlcml6ZXJTdGF0ZSgmcmFzdGVyRGVzYywgJmR4MTFSYXN0ZXJpemVyU3RhdGUpOworICAg
ICAgICBpZiAoRkFJTEVEKHJlc3VsdCkgfHwgIWR4MTFSYXN0ZXJpemVyU3RhdGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEVSUigiVW5hYmxlIHRvIGNyZWF0ZSBhIElEM0QxMVJhc3Rlcml6ZXJT
dGF0ZSwgSFJFU1VMVDogMHglWC4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7
CisgICAgICAgIH0KKworICAgICAgICBtUmFzdGVyaXplclN0YXRlQ2FjaGUuaW5zZXJ0KHN0ZDo6
bWFrZV9wYWlyKGtleSwgc3RkOjptYWtlX3BhaXIoZHgxMVJhc3Rlcml6ZXJTdGF0ZSwgbUNvdW50
ZXIrKykpKTsKKworICAgICAgICByZXR1cm4gZHgxMVJhc3Rlcml6ZXJTdGF0ZTsKKyAgICB9Cit9
CisKK3N0ZDo6c2l6ZV90IFJlbmRlclN0YXRlQ2FjaGU6Omhhc2hEZXB0aFN0ZW5jaWxTdGF0ZShj
b25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmRzU3RhdGUpCit7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGludCBzZWVkID0gMHhBQkNERUY5ODsKKworICAgIHN0ZDo6c2l6ZV90IGhhc2gg
PSAwOworICAgIE11cm11ckhhc2gzX3g4Nl8zMigmZHNTdGF0ZSwgc2l6ZW9mKGdsOjpEZXB0aFN0
ZW5jaWxTdGF0ZSksIHNlZWQsICZoYXNoKTsKKyAgICByZXR1cm4gaGFzaDsKK30KKworYm9vbCBS
ZW5kZXJTdGF0ZUNhY2hlOjpjb21wYXJlRGVwdGhTdGVuY2lsU3RhdGVzKGNvbnN0IGdsOjpEZXB0
aFN0ZW5jaWxTdGF0ZSAmYSwgY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZiKQoreworICAg
IHJldHVybiBtZW1jbXAoJmEsICZiLCBzaXplb2YoZ2w6OkRlcHRoU3RlbmNpbFN0YXRlKSkgPT0g
MDsKK30KKworSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKlJlbmRlclN0YXRlQ2FjaGU6OmdldERl
cHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZHNTdGF0ZSkKK3sK
KyAgICBpZiAoIW1EZXZpY2UpCisgICAgeworICAgICAgICBFUlIoIlJlbmRlclN0YXRlQ2FjaGUg
aXMgbm90IGluaXRpYWxpemVkLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAg
ICBEZXB0aFN0ZW5jaWxTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9IG1EZXB0aFN0ZW5jaWxTdGF0ZUNh
Y2hlLmZpbmQoZHNTdGF0ZSk7CisgICAgaWYgKGkgIT0gbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUu
ZW5kKCkpCisgICAgeworICAgICAgICBEZXB0aFN0ZW5jaWxTdGF0ZUNvdW50ZXJQYWlyICZzdGF0
ZSA9IGktPnNlY29uZDsKKyAgICAgICAgc3RhdGUuc2Vjb25kID0gbUNvdW50ZXIrKzsKKyAgICAg
ICAgcmV0dXJuIHN0YXRlLmZpcnN0OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBp
ZiAobURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUuc2l6ZSgpID49IGtNYXhEZXB0aFN0ZW5jaWxTdGF0
ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRSQUNFKCJPdmVyZmxvd2VkIHRoZSBsaW1pdCBv
ZiAldSBkZXB0aCBzdGVuY2lsIHN0YXRlcywgcmVtb3ZpbmcgdGhlIGxlYXN0IHJlY2VudGx5IHVz
ZWQgIgorICAgICAgICAgICAgICAgICAgInRvIG1ha2Ugcm9vbS4iLCBrTWF4RGVwdGhTdGVuY2ls
U3RhdGVzKTsKKworICAgICAgICAgICAgRGVwdGhTdGVuY2lsU3RhdGVNYXA6Oml0ZXJhdG9yIGxl
YXN0UmVjZW50bHlVc2VkID0gbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUuYmVnaW4oKTsKKyAgICAg
ICAgICAgIGZvciAoRGVwdGhTdGVuY2lsU3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBtRGVwdGhTdGVu
Y2lsU3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1EZXB0aFN0ZW5jaWxTdGF0ZUNhY2hlLmVuZCgp
OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGktPnNlY29uZC5zZWNv
bmQgPCBsZWFzdFJlY2VudGx5VXNlZC0+c2Vjb25kLnNlY29uZCkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIGxlYXN0UmVjZW50bHlVc2VkID0gaTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNlZC0+c2Vj
b25kLmZpcnN0LT5SZWxlYXNlKCk7CisgICAgICAgICAgICBtRGVwdGhTdGVuY2lsU3RhdGVDYWNo
ZS5lcmFzZShsZWFzdFJlY2VudGx5VXNlZCk7CisgICAgICAgIH0KKworICAgICAgICBEM0QxMV9E
RVBUSF9TVEVOQ0lMX0RFU0MgZHNEZXNjID0geyAwIH07CisgICAgICAgIGRzRGVzYy5EZXB0aEVu
YWJsZSA9IGRzU3RhdGUuZGVwdGhUZXN0ID8gVFJVRSA6IEZBTFNFOworICAgICAgICBkc0Rlc2Mu
RGVwdGhXcml0ZU1hc2sgPSBnbF9kM2QxMTo6Q29udmVydERlcHRoTWFzayhkc1N0YXRlLmRlcHRo
TWFzayk7CisgICAgICAgIGRzRGVzYy5EZXB0aEZ1bmMgPSBnbF9kM2QxMTo6Q29udmVydENvbXBh
cmlzb24oZHNTdGF0ZS5kZXB0aEZ1bmMpOworICAgICAgICBkc0Rlc2MuU3RlbmNpbEVuYWJsZSA9
IGRzU3RhdGUuc3RlbmNpbFRlc3QgPyBUUlVFIDogRkFMU0U7CisgICAgICAgIGRzRGVzYy5TdGVu
Y2lsUmVhZE1hc2sgPSBnbF9kM2QxMTo6Q29udmVydFN0ZW5jaWxNYXNrKGRzU3RhdGUuc3RlbmNp
bE1hc2spOworICAgICAgICBkc0Rlc2MuU3RlbmNpbFdyaXRlTWFzayA9IGdsX2QzZDExOjpDb252
ZXJ0U3RlbmNpbE1hc2soZHNTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrKTsKKyAgICAgICAgZHNEZXNj
LkZyb250RmFjZS5TdGVuY2lsRmFpbE9wID0gZ2xfZDNkMTE6OkNvbnZlcnRTdGVuY2lsT3AoZHNT
dGF0ZS5zdGVuY2lsRmFpbCk7CisgICAgICAgIGRzRGVzYy5Gcm9udEZhY2UuU3RlbmNpbERlcHRo
RmFpbE9wID0gZ2xfZDNkMTE6OkNvbnZlcnRTdGVuY2lsT3AoZHNTdGF0ZS5zdGVuY2lsUGFzc0Rl
cHRoRmFpbCk7CisgICAgICAgIGRzRGVzYy5Gcm9udEZhY2UuU3RlbmNpbFBhc3NPcCA9IGdsX2Qz
ZDExOjpDb252ZXJ0U3RlbmNpbE9wKGRzU3RhdGUuc3RlbmNpbFBhc3NEZXB0aFBhc3MpOworICAg
ICAgICBkc0Rlc2MuRnJvbnRGYWNlLlN0ZW5jaWxGdW5jID0gZ2xfZDNkMTE6OkNvbnZlcnRDb21w
YXJpc29uKGRzU3RhdGUuc3RlbmNpbEZ1bmMpOworICAgICAgICBkc0Rlc2MuQmFja0ZhY2UuU3Rl
bmNpbEZhaWxPcCA9IGdsX2QzZDExOjpDb252ZXJ0U3RlbmNpbE9wKGRzU3RhdGUuc3RlbmNpbEJh
Y2tGYWlsKTsKKyAgICAgICAgZHNEZXNjLkJhY2tGYWNlLlN0ZW5jaWxEZXB0aEZhaWxPcCA9IGds
X2QzZDExOjpDb252ZXJ0U3RlbmNpbE9wKGRzU3RhdGUuc3RlbmNpbEJhY2tQYXNzRGVwdGhGYWls
KTsKKyAgICAgICAgZHNEZXNjLkJhY2tGYWNlLlN0ZW5jaWxQYXNzT3AgPSBnbF9kM2QxMTo6Q29u
dmVydFN0ZW5jaWxPcChkc1N0YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzcyk7CisgICAgICAg
IGRzRGVzYy5CYWNrRmFjZS5TdGVuY2lsRnVuYyA9IGdsX2QzZDExOjpDb252ZXJ0Q29tcGFyaXNv
bihkc1N0YXRlLnN0ZW5jaWxCYWNrRnVuYyk7CisKKyAgICAgICAgSUQzRDExRGVwdGhTdGVuY2ls
U3RhdGUgKmR4MTFEZXB0aFN0ZW5jaWxTdGF0ZSA9IE5VTEw7CisgICAgICAgIEhSRVNVTFQgcmVz
dWx0ID0gbURldmljZS0+Q3JlYXRlRGVwdGhTdGVuY2lsU3RhdGUoJmRzRGVzYywgJmR4MTFEZXB0
aFN0ZW5jaWxTdGF0ZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSB8fCAhZHgxMURlcHRo
U3RlbmNpbFN0YXRlKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIlVuYWJsZSB0byBjcmVh
dGUgYSBJRDNEMTFEZXB0aFN0ZW5jaWxTdGF0ZSwgSFJFU1VMVDogMHglWC4iLCByZXN1bHQpOwor
ICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBtRGVwdGhTdGVu
Y2lsU3RhdGVDYWNoZS5pbnNlcnQoc3RkOjptYWtlX3BhaXIoZHNTdGF0ZSwgc3RkOjptYWtlX3Bh
aXIoZHgxMURlcHRoU3RlbmNpbFN0YXRlLCBtQ291bnRlcisrKSkpOworCisgICAgICAgIHJldHVy
biBkeDExRGVwdGhTdGVuY2lsU3RhdGU7CisgICAgfQorfQorCitzdGQ6OnNpemVfdCBSZW5kZXJT
dGF0ZUNhY2hlOjpoYXNoU2FtcGxlclN0YXRlKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBs
ZXJTdGF0ZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHNlZWQgPSAweEFCQ0RF
Rjk4OworCisgICAgc3RkOjpzaXplX3QgaGFzaCA9IDA7CisgICAgTXVybXVySGFzaDNfeDg2XzMy
KCZzYW1wbGVyU3RhdGUsIHNpemVvZihnbDo6U2FtcGxlclN0YXRlKSwgc2VlZCwgJmhhc2gpOwor
ICAgIHJldHVybiBoYXNoOworfQorCitib29sIFJlbmRlclN0YXRlQ2FjaGU6OmNvbXBhcmVTYW1w
bGVyU3RhdGVzKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJmEsIGNvbnN0IGdsOjpTYW1wbGVyU3Rh
dGUgJmIpCit7CisgICAgcmV0dXJuIG1lbWNtcCgmYSwgJmIsIHNpemVvZihnbDo6U2FtcGxlclN0
YXRlKSkgPT0gMDsKK30KKworSUQzRDExU2FtcGxlclN0YXRlICpSZW5kZXJTdGF0ZUNhY2hlOjpn
ZXRTYW1wbGVyU3RhdGUoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKQorewor
ICAgIGlmICghbURldmljZSkKKyAgICB7CisgICAgICAgIEVSUigiUmVuZGVyU3RhdGVDYWNoZSBp
cyBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAg
IFNhbXBsZXJTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9IG1TYW1wbGVyU3RhdGVDYWNoZS5maW5kKHNh
bXBsZXJTdGF0ZSk7CisgICAgaWYgKGkgIT0gbVNhbXBsZXJTdGF0ZUNhY2hlLmVuZCgpKQorICAg
IHsKKyAgICAgICAgU2FtcGxlclN0YXRlQ291bnRlclBhaXIgJnN0YXRlID0gaS0+c2Vjb25kOwor
ICAgICAgICBzdGF0ZS5zZWNvbmQgPSBtQ291bnRlcisrOworICAgICAgICByZXR1cm4gc3RhdGUu
Zmlyc3Q7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmIChtU2FtcGxlclN0YXRl
Q2FjaGUuc2l6ZSgpID49IGtNYXhTYW1wbGVyU3RhdGVzKQorICAgICAgICB7CisgICAgICAgICAg
ICBUUkFDRSgiT3ZlcmZsb3dlZCB0aGUgbGltaXQgb2YgJXUgc2FtcGxlciBzdGF0ZXMsIHJlbW92
aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkICIKKyAgICAgICAgICAgICAgICAgICJ0byBtYWtl
IHJvb20uIiwga01heFNhbXBsZXJTdGF0ZXMpOworCisgICAgICAgICAgICBTYW1wbGVyU3RhdGVN
YXA6Oml0ZXJhdG9yIGxlYXN0UmVjZW50bHlVc2VkID0gbVNhbXBsZXJTdGF0ZUNhY2hlLmJlZ2lu
KCk7CisgICAgICAgICAgICBmb3IgKFNhbXBsZXJTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9IG1TYW1w
bGVyU3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1TYW1wbGVyU3RhdGVDYWNoZS5lbmQoKTsgaSsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpLT5zZWNvbmQuc2Vjb25kIDwg
bGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5zZWNvbmQpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNlZCA9IGk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5m
aXJzdC0+UmVsZWFzZSgpOworICAgICAgICAgICAgbVNhbXBsZXJTdGF0ZUNhY2hlLmVyYXNlKGxl
YXN0UmVjZW50bHlVc2VkKTsKKyAgICAgICAgfQorCisgICAgICAgIEQzRDExX1NBTVBMRVJfREVT
QyBzYW1wbGVyRGVzYzsKKyAgICAgICAgc2FtcGxlckRlc2MuRmlsdGVyID0gZ2xfZDNkMTE6OkNv
bnZlcnRGaWx0ZXIoc2FtcGxlclN0YXRlLm1pbkZpbHRlciwgc2FtcGxlclN0YXRlLm1hZ0ZpbHRl
ciwgc2FtcGxlclN0YXRlLm1heEFuaXNvdHJvcHkpOworICAgICAgICBzYW1wbGVyRGVzYy5BZGRy
ZXNzVSA9IGdsX2QzZDExOjpDb252ZXJ0VGV4dHVyZVdyYXAoc2FtcGxlclN0YXRlLndyYXBTKTsK
KyAgICAgICAgc2FtcGxlckRlc2MuQWRkcmVzc1YgPSBnbF9kM2QxMTo6Q29udmVydFRleHR1cmVX
cmFwKHNhbXBsZXJTdGF0ZS53cmFwVCk7CisgICAgICAgIHNhbXBsZXJEZXNjLkFkZHJlc3NXID0g
RDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgICAgICBzYW1wbGVyRGVzYy5NaXBMT0RC
aWFzID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNhbXBsZXJTdGF0ZS5sb2RPZmZzZXQpOworICAgICAg
ICBzYW1wbGVyRGVzYy5NYXhBbmlzb3Ryb3B5ID0gc2FtcGxlclN0YXRlLm1heEFuaXNvdHJvcHk7
CisgICAgICAgIHNhbXBsZXJEZXNjLkNvbXBhcmlzb25GdW5jID0gRDNEMTFfQ09NUEFSSVNPTl9O
RVZFUjsKKyAgICAgICAgc2FtcGxlckRlc2MuQm9yZGVyQ29sb3JbMF0gPSAwLjBmOworICAgICAg
ICBzYW1wbGVyRGVzYy5Cb3JkZXJDb2xvclsxXSA9IDAuMGY7CisgICAgICAgIHNhbXBsZXJEZXNj
LkJvcmRlckNvbG9yWzJdID0gMC4wZjsKKyAgICAgICAgc2FtcGxlckRlc2MuQm9yZGVyQ29sb3Jb
M10gPSAwLjBmOworICAgICAgICBzYW1wbGVyRGVzYy5NaW5MT0QgPSBnbF9kM2QxMTo6Q29udmVy
dE1pbkxPRChzYW1wbGVyU3RhdGUubWluRmlsdGVyLCBzYW1wbGVyU3RhdGUubG9kT2Zmc2V0KTsK
KyAgICAgICAgc2FtcGxlckRlc2MuTWF4TE9EID0gZ2xfZDNkMTE6OkNvbnZlcnRNYXhMT0Qoc2Ft
cGxlclN0YXRlLm1pbkZpbHRlciwgc2FtcGxlclN0YXRlLmxvZE9mZnNldCk7CisKKyAgICAgICAg
SUQzRDExU2FtcGxlclN0YXRlICpkeDExU2FtcGxlclN0YXRlID0gTlVMTDsKKyAgICAgICAgSFJF
U1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVTYW1wbGVyU3RhdGUoJnNhbXBsZXJEZXNjLCAm
ZHgxMVNhbXBsZXJTdGF0ZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSB8fCAhZHgxMVNh
bXBsZXJTdGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJVbmFibGUgdG8gY3JlYXRl
IGEgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKKyAg
ICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgbVNhbXBsZXJTdGF0
ZUNhY2hlLmluc2VydChzdGQ6Om1ha2VfcGFpcihzYW1wbGVyU3RhdGUsIHN0ZDo6bWFrZV9wYWly
KGR4MTFTYW1wbGVyU3RhdGUsIG1Db3VudGVyKyspKSk7CisKKyAgICAgICAgcmV0dXJuIGR4MTFT
YW1wbGVyU3RhdGU7CisgICAgfQorfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5k
ZXJTdGF0ZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJTdGF0ZUNhY2hlLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclN0YXRl
Q2FjaGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDEgQEAKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKy8vIFJlbmRlclN0YXRlQ2FjaGUuaDogRGVmaW5lcyByeDo6UmVuZGVyU3RhdGVDYWNoZSwg
YSBjYWNoZSBvZiBEaXJlY3QzRCByZW5kZXIKKy8vIHN0YXRlIG9iamVjdHMuCisKKyNpZm5kZWYg
TElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUlNUQVRFQ0FDSEVfSF8KKyNkZWZpbmUgTElCR0xFU1Yy
X1JFTkRFUkVSX1JFTkRFUlNUQVRFQ0FDSEVfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9hbmds
ZXR5cGVzLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4
Cit7CisKK2NsYXNzIFJlbmRlclN0YXRlQ2FjaGUKK3sKKyAgcHVibGljOgorICAgIFJlbmRlclN0
YXRlQ2FjaGUoKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJTdGF0ZUNhY2hlKCk7CisKKyAgICB2b2lk
IGluaXRpYWxpemUoSUQzRDExRGV2aWNlICpkZXZpY2UpOworICAgIHZvaWQgY2xlYXIoKTsKKwor
ICAgIC8vIEluY3JlbWVudHMgcmVmY291bnQgb24gdGhlIHJldHVybmVkIGJsZW5kIHN0YXRlLCBS
ZWxlYXNlKCkgbXVzdCBiZSBjYWxsZWQuCisgICAgSUQzRDExQmxlbmRTdGF0ZSAqZ2V0QmxlbmRT
dGF0ZShjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSk7CisgICAgSUQzRDExUmFzdGVy
aXplclN0YXRlICpnZXRSYXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSAm
cmFzdGVyU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBzY2lzc29yRW5hYmxlZCwgdW5zaWduZWQgaW50IGRlcHRoU2l6ZSk7CisgICAgSUQz
RDExRGVwdGhTdGVuY2lsU3RhdGUgKmdldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0
aFN0ZW5jaWxTdGF0ZSAmZHNTdGF0ZSk7CisgICAgSUQzRDExU2FtcGxlclN0YXRlICpnZXRTYW1w
bGVyU3RhdGUoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKTsKKworICBwcml2
YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJTdGF0ZUNhY2hlKTsKKwor
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtQ291bnRlcjsKKworICAgIC8vIEJsZW5kIHN0YXRlIGNh
Y2hlCisgICAgc3RhdGljIHN0ZDo6c2l6ZV90IGhhc2hCbGVuZFN0YXRlKGNvbnN0IGdsOjpCbGVu
ZFN0YXRlICZibGVuZFN0YXRlKTsKKyAgICBzdGF0aWMgYm9vbCBjb21wYXJlQmxlbmRTdGF0ZXMo
Y29uc3QgZ2w6OkJsZW5kU3RhdGUgJmEsIGNvbnN0IGdsOjpCbGVuZFN0YXRlICZiKTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGtNYXhCbGVuZFN0YXRlczsKKworICAgIHR5cGVkZWYg
c3RkOjpzaXplX3QgKCpCbGVuZFN0YXRlSGFzaEZ1bmN0aW9uKShjb25zdCBnbDo6QmxlbmRTdGF0
ZSAmKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpCbGVuZFN0YXRlRXF1YWxpdHlGdW5jdGlvbikoY29u
c3QgZ2w6OkJsZW5kU3RhdGUgJiwgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJik7CisgICAgdHlwZWRl
ZiBzdGQ6OnBhaXI8SUQzRDExQmxlbmRTdGF0ZSosIHVuc2lnbmVkIGxvbmcgbG9uZz4gQmxlbmRT
dGF0ZUNvdW50ZXJQYWlyOworICAgIHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPGdsOjpCbGVu
ZFN0YXRlLCBCbGVuZFN0YXRlQ291bnRlclBhaXIsIEJsZW5kU3RhdGVIYXNoRnVuY3Rpb24sIEJs
ZW5kU3RhdGVFcXVhbGl0eUZ1bmN0aW9uPiBCbGVuZFN0YXRlTWFwOworICAgIEJsZW5kU3RhdGVN
YXAgbUJsZW5kU3RhdGVDYWNoZTsKKworICAgIC8vIFJhc3Rlcml6ZXIgc3RhdGUgY2FjaGUKKyAg
ICBzdHJ1Y3QgUmFzdGVyaXplclN0YXRlS2V5CisgICAgeworICAgICAgICBnbDo6UmFzdGVyaXpl
clN0YXRlIHJhc3Rlcml6ZXJTdGF0ZTsKKyAgICAgICAgYm9vbCBzY2lzc29yRW5hYmxlZDsKKyAg
ICAgICAgdW5zaWduZWQgaW50IGRlcHRoU2l6ZTsKKyAgICB9OworICAgIHN0YXRpYyBzdGQ6OnNp
emVfdCBoYXNoUmFzdGVyaXplclN0YXRlKGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAmcmFzdGVy
U3RhdGUpOworICAgIHN0YXRpYyBib29sIGNvbXBhcmVSYXN0ZXJpemVyU3RhdGVzKGNvbnN0IFJh
c3Rlcml6ZXJTdGF0ZUtleSAmYSwgY29uc3QgUmFzdGVyaXplclN0YXRlS2V5ICZiKTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGtNYXhSYXN0ZXJpemVyU3RhdGVzOworCisgICAgdHlw
ZWRlZiBzdGQ6OnNpemVfdCAoKlJhc3Rlcml6ZXJTdGF0ZUhhc2hGdW5jdGlvbikoY29uc3QgUmFz
dGVyaXplclN0YXRlS2V5ICYpOworICAgIHR5cGVkZWYgYm9vbCAoKlJhc3Rlcml6ZXJTdGF0ZUVx
dWFsaXR5RnVuY3Rpb24pKGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAmLCBjb25zdCBSYXN0ZXJp
emVyU3RhdGVLZXkgJik7CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8SUQzRDExUmFzdGVyaXplclN0
YXRlKiwgdW5zaWduZWQgbG9uZyBsb25nPiBSYXN0ZXJpemVyU3RhdGVDb3VudGVyUGFpcjsKKyAg
ICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxSYXN0ZXJpemVyU3RhdGVLZXksIFJhc3Rlcml6
ZXJTdGF0ZUNvdW50ZXJQYWlyLCBSYXN0ZXJpemVyU3RhdGVIYXNoRnVuY3Rpb24sIFJhc3Rlcml6
ZXJTdGF0ZUVxdWFsaXR5RnVuY3Rpb24+IFJhc3Rlcml6ZXJTdGF0ZU1hcDsKKyAgICBSYXN0ZXJp
emVyU3RhdGVNYXAgbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlOworCisgICAgLy8gRGVwdGggc3RlbmNp
bCBzdGF0ZSBjYWNoZQorICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBoYXNoRGVwdGhTdGVuY2lsU3Rh
dGUoY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZkc1N0YXRlKTsKKyAgICBzdGF0aWMgYm9v
bCBjb21wYXJlRGVwdGhTdGVuY2lsU3RhdGVzKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAm
YSwgY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZiKTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgaW50IGtNYXhEZXB0aFN0ZW5jaWxTdGF0ZXM7CisKKyAgICB0eXBlZGVmIHN0ZDo6c2l6
ZV90ICgqRGVwdGhTdGVuY2lsU3RhdGVIYXNoRnVuY3Rpb24pKGNvbnN0IGdsOjpEZXB0aFN0ZW5j
aWxTdGF0ZSAmKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpEZXB0aFN0ZW5jaWxTdGF0ZUVxdWFsaXR5
RnVuY3Rpb24pKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmLCBjb25zdCBnbDo6RGVwdGhT
dGVuY2lsU3RhdGUgJik7CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8SUQzRDExRGVwdGhTdGVuY2ls
U3RhdGUqLCB1bnNpZ25lZCBsb25nIGxvbmc+IERlcHRoU3RlbmNpbFN0YXRlQ291bnRlclBhaXI7
CisgICAgdHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8Z2w6OkRlcHRoU3RlbmNpbFN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHRoU3RlbmNpbFN0YXRlQ291bnRlclBh
aXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwdGhTdGVuY2lsU3RhdGVIYXNo
RnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwdGhTdGVuY2lsU3Rh
dGVFcXVhbGl0eUZ1bmN0aW9uPiBEZXB0aFN0ZW5jaWxTdGF0ZU1hcDsKKyAgICBEZXB0aFN0ZW5j
aWxTdGF0ZU1hcCBtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZTsKKworICAgIC8vIFNhbXBsZSBzdGF0
ZSBjYWNoZQorICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBoYXNoU2FtcGxlclN0YXRlKGNvbnN0IGds
OjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSk7CisgICAgc3RhdGljIGJvb2wgY29tcGFyZVNh
bXBsZXJTdGF0ZXMoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmYSwgY29uc3QgZ2w6OlNhbXBsZXJT
dGF0ZSAmYik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBrTWF4U2FtcGxlclN0YXRl
czsKKworICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgKCpTYW1wbGVyU3RhdGVIYXNoRnVuY3Rpb24p
KGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJik7CisgICAgdHlwZWRlZiBib29sICgqU2FtcGxlclN0
YXRlRXF1YWxpdHlGdW5jdGlvbikoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmLCBjb25zdCBnbDo6
U2FtcGxlclN0YXRlICYpOworICAgIHR5cGVkZWYgc3RkOjpwYWlyPElEM0QxMVNhbXBsZXJTdGF0
ZSosIHVuc2lnbmVkIGxvbmcgbG9uZz4gU2FtcGxlclN0YXRlQ291bnRlclBhaXI7CisgICAgdHlw
ZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8Z2w6OlNhbXBsZXJTdGF0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTYW1wbGVyU3RhdGVDb3VudGVyUGFpciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTYW1wbGVyU3RhdGVIYXNoRnVuY3Rpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2FtcGxlclN0YXRlRXF1YWxpdHlGdW5jdGlvbj4gU2FtcGxlclN0
YXRlTWFwOworICAgIFNhbXBsZXJTdGF0ZU1hcCBtU2FtcGxlclN0YXRlQ2FjaGU7CisKKyAgICBJ
RDNEMTFEZXZpY2UgKm1EZXZpY2U7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVO
REVSRVJfUkVOREVSU1RBVEVDQUNIRV9IXwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVy
VGFyZ2V0OS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQ5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0OS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEzIEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQu
aCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBSZW5kZXJUYXJnZXQ5LmNwcDogSW1wbGVtZW50cyBhIEQz
RDktc3BlY2lmaWMgd3JhcHBlciBmb3IgSURpcmVjdDNEU3VyZmFjZTkKKy8vIHBvaW50ZXJzIHJl
dGFpbmVkIGJ5IHJlbmRlcmJ1ZmZlcnMuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyVGFyZ2V0OS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjku
aCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaCIKKyNp
bmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorCituYW1lc3BhY2UgcngKK3sKKworUmVuZGVyVGFy
Z2V0OTo6UmVuZGVyVGFyZ2V0OShSZW5kZXJlciAqcmVuZGVyZXIsIElEaXJlY3QzRFN1cmZhY2U5
ICpzdXJmYWNlKQoreworICAgIG1SZW5kZXJlciA9IFJlbmRlcmVyOTo6bWFrZVJlbmRlcmVyOShy
ZW5kZXJlcik7CisgICAgbVJlbmRlclRhcmdldCA9IHN1cmZhY2U7CisKKyAgICBpZiAobVJlbmRl
clRhcmdldCkKKyAgICB7CisgICAgICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjcmlwdGlvbjsKKyAg
ICAgICAgbVJlbmRlclRhcmdldC0+R2V0RGVzYygmZGVzY3JpcHRpb24pOworCisgICAgICAgIG1X
aWR0aCA9IGRlc2NyaXB0aW9uLldpZHRoOworICAgICAgICBtSGVpZ2h0ID0gZGVzY3JpcHRpb24u
SGVpZ2h0OworICAgICAgICAKKyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gZDNkOV9nbDo6R2V0
RXF1aXZhbGVudEZvcm1hdChkZXNjcmlwdGlvbi5Gb3JtYXQpOworICAgICAgICBtQWN0dWFsRm9y
bWF0ID0gZDNkOV9nbDo6R2V0RXF1aXZhbGVudEZvcm1hdChkZXNjcmlwdGlvbi5Gb3JtYXQpOwor
ICAgICAgICBtU2FtcGxlcyA9IGQzZDlfZ2w6OkdldFNhbXBsZXNGcm9tTXVsdGlzYW1wbGVUeXBl
KGRlc2NyaXB0aW9uLk11bHRpU2FtcGxlVHlwZSk7CisgICAgfQorfQorCitSZW5kZXJUYXJnZXQ5
OjpSZW5kZXJUYXJnZXQ5KFJlbmRlcmVyICpyZW5kZXJlciwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcykKK3sKKyAgICBtUmVuZGVy
ZXIgPSBSZW5kZXJlcjk6Om1ha2VSZW5kZXJlcjkocmVuZGVyZXIpOworICAgIG1SZW5kZXJUYXJn
ZXQgPSBOVUxMOworCisgICAgRDNERk9STUFUIHJlcXVlc3RlZEZvcm1hdCA9IGdsX2QzZDk6OkNv
bnZlcnRSZW5kZXJidWZmZXJGb3JtYXQoZm9ybWF0KTsKKyAgICBpbnQgc3VwcG9ydGVkU2FtcGxl
cyA9IG1SZW5kZXJlci0+Z2V0TmVhcmVzdFN1cHBvcnRlZFNhbXBsZXMocmVxdWVzdGVkRm9ybWF0
LCBzYW1wbGVzKTsKKworICAgIGlmIChzdXBwb3J0ZWRTYW1wbGVzID09IC0xKQorICAgIHsKKyAg
ICAgICAgZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBIUkVTVUxUIHJlc3VsdCA9IEQzREVSUl9JTlZBTElEQ0FMTDsKKyAgICAKKyAg
ICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApCisgICAgeworICAgICAgICBpZiAocmVxdWVz
dGVkRm9ybWF0ID09IEQzREZNVF9EMjRTOCkKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0
ID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKS0+Q3JlYXRlRGVwdGhTdGVuY2lsU3VyZmFjZSh3aWR0
aCwgaGVpZ2h0LCByZXF1ZXN0ZWRGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkdldE11
bHRpc2FtcGxlVHlwZUZyb21TYW1wbGVzKHN1cHBvcnRlZFNhbXBsZXMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCBGQUxTRSwgJm1SZW5kZXJUYXJnZXQsIE5VTEwpOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2Uo
KS0+Q3JlYXRlUmVuZGVyVGFyZ2V0KHdpZHRoLCBoZWlnaHQsIHJlcXVlc3RlZEZvcm1hdCwgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xfZDNkOTo6R2V0TXVsdGlzYW1wbGVUeXBlRnJvbVNhbXBsZXMoc3VwcG9ydGVkU2Ft
cGxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgRkFMU0UsICZtUmVuZGVyVGFyZ2V0LCBOVUxMKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVz
dWx0ID09IEVfT1VUT0ZNRU1PUlkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICB9CisKKyAgICBtV2lkdGggPSB3
aWR0aDsKKyAgICBtSGVpZ2h0ID0gaGVpZ2h0OworICAgIG1JbnRlcm5hbEZvcm1hdCA9IGZvcm1h
dDsKKyAgICBtU2FtcGxlcyA9IHN1cHBvcnRlZFNhbXBsZXM7CisgICAgbUFjdHVhbEZvcm1hdCA9
IGQzZDlfZ2w6OkdldEVxdWl2YWxlbnRGb3JtYXQocmVxdWVzdGVkRm9ybWF0KTsKK30KKworUmVu
ZGVyVGFyZ2V0OTo6flJlbmRlclRhcmdldDkoKQoreworICAgIGlmIChtUmVuZGVyVGFyZ2V0KQor
ICAgIHsKKyAgICAgICAgbVJlbmRlclRhcmdldC0+UmVsZWFzZSgpOworICAgIH0KK30KKworUmVu
ZGVyVGFyZ2V0OSAqUmVuZGVyVGFyZ2V0OTo6bWFrZVJlbmRlclRhcmdldDkoUmVuZGVyVGFyZ2V0
ICp0YXJnZXQpCit7CisgICAgQVNTRVJUKEhBU19EWU5BTUlDX1RZUEUocng6OlJlbmRlclRhcmdl
dDkqLCB0YXJnZXQpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cng6OlJlbmRlclRhcmdldDkq
Pih0YXJnZXQpOworfQorCitJRGlyZWN0M0RTdXJmYWNlOSAqUmVuZGVyVGFyZ2V0OTo6Z2V0U3Vy
ZmFjZSgpCit7CisgICAgLy8gQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciByZWxlYXNpbmcgdGhl
IHJldHVybmVkIHN1cmZhY2UgcmVmZXJlbmNlLgorICAgIGlmIChtUmVuZGVyVGFyZ2V0KQorICAg
IHsKKyAgICAgICAgbVJlbmRlclRhcmdldC0+QWRkUmVmKCk7CisgICAgfQorCisgICAgcmV0dXJu
IG1SZW5kZXJUYXJnZXQ7Cit9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRh
cmdldDkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0OS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVyVGFyZ2V0
OS5oOiBEZWZpbmVzIGEgRDNEOS1zcGVjaWZpYyB3cmFwcGVyIGZvciBJRGlyZWN0M0RTdXJmYWNl
OSBwb2ludGVycworLy8gcmV0YWluZWQgYnkgUmVuZGVyYnVmZmVycy4KKworI2lmbmRlZiBMSUJH
TEVTVjJfUkVOREVSRVJfUkVOREVSVEFSR0VUOV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVS
RVJfUkVOREVSVEFSR0VUOV9IXworCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRl
clRhcmdldC5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOworY2xhc3MgUmVu
ZGVyZXI5OworCitjbGFzcyBSZW5kZXJUYXJnZXQ5IDogcHVibGljIFJlbmRlclRhcmdldAorewor
ICBwdWJsaWM6CisgICAgUmVuZGVyVGFyZ2V0OShSZW5kZXJlciAqcmVuZGVyZXIsIElEaXJlY3Qz
RFN1cmZhY2U5ICpzdXJmYWNlKTsKKyAgICBSZW5kZXJUYXJnZXQ5KFJlbmRlcmVyICpyZW5kZXJl
ciwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkg
c2FtcGxlcyk7CisgICAgdmlydHVhbCB+UmVuZGVyVGFyZ2V0OSgpOworCisgICAgc3RhdGljIFJl
bmRlclRhcmdldDkgKm1ha2VSZW5kZXJUYXJnZXQ5KFJlbmRlclRhcmdldCAqcmVuZGVyVGFyZ2V0
KTsKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0U3VyZmFjZSgpOworCisgIHByaXZhdGU6Cisg
ICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlclRhcmdldDkpOworCisgICAgSURpcmVj
dDNEU3VyZmFjZTkgKm1SZW5kZXJUYXJnZXQ7CisKKyAgICBSZW5kZXJlcjkgKm1SZW5kZXJlcjsK
K307CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJUQVJHRVQ5X0hf
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlclRhcmdldDExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDExLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFy
Z2V0MTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3OCBAQAorI2luY2x1ZGUgInByZWNv
bXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVyVGFyZ2V0MTEuY3BwOiBJbXBsZW1l
bnRzIGEgRFgxMS1zcGVjaWZpYyB3cmFwcGVyIGZvciBJRDNEMTFWaWV3IHBvaW50ZXJzCisvLyBy
ZXRhaW5lZCBieSBSZW5kZXJidWZmZXJzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L1JlbmRlclRhcmdldDExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVy
MTEuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK3N0YXRp
YyB1bnNpZ25lZCBpbnQgZ2V0UlRWU3VicmVzb3VyY2VJbmRleChJRDNEMTFUZXh0dXJlMkQgKnRl
eHR1cmUsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnZpZXcpCit7CisgICAgRDNEMTFfUkVOREVS
X1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKKyAgICB2aWV3LT5HZXREZXNjKCZydHZEZXNjKTsK
KworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleERlc2M7CisgICAgdGV4dHVyZS0+R2V0RGVz
YygmdGV4RGVzYyk7CisKKyAgICB1bnNpZ25lZCBpbnQgbWlwU2xpY2UgPSAwOworICAgIHVuc2ln
bmVkIGludCBhcnJheVNsaWNlID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgbWlwTGV2ZWxzID0gdGV4
RGVzYy5NaXBMZXZlbHM7CisKKyAgICBzd2l0Y2ggKHJ0dkRlc2MuVmlld0RpbWVuc2lvbikKKyAg
ICB7CisgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTFEOgorICAgICAgICBt
aXBTbGljZSA9IHJ0dkRlc2MuVGV4dHVyZTFELk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNl
ID0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9U
RVhUVVJFMURBUlJBWToKKyAgICAgICAgbWlwU2xpY2UgPSBydHZEZXNjLlRleHR1cmUxREFycmF5
Lk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNlID0gcnR2RGVzYy5UZXh0dXJlMURBcnJheS5G
aXJzdEFycmF5U2xpY2U7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEQzRDExX1JUVl9E
SU1FTlNJT05fVEVYVFVSRTJEOgorICAgICAgICBtaXBTbGljZSA9IHJ0dkRlc2MuVGV4dHVyZTJE
Lk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNlID0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWToKKyAgICAgICAgbWlw
U2xpY2UgPSBydHZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlOworICAgICAgICBhcnJheVNs
aWNlID0gcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2U7CisgICAgICAgIGJy
ZWFrOworCisgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJETVM6CisgICAg
ICAgIG1pcFNsaWNlID0gMDsKKyAgICAgICAgYXJyYXlTbGljZSA9IDA7CisgICAgICAgIGJyZWFr
OworCisgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJETVNBUlJBWToKKyAg
ICAgICAgbWlwU2xpY2UgPSAwOworICAgICAgICBhcnJheVNsaWNlID0gcnR2RGVzYy5UZXh0dXJl
MkRNU0FycmF5LkZpcnN0QXJyYXlTbGljZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2Ug
RDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFM0Q6CisgICAgICAgIG1pcFNsaWNlID0gcnR2RGVz
Yy5UZXh0dXJlM0QuTWlwU2xpY2U7CisgICAgICAgIGFycmF5U2xpY2UgPSAwOworICAgICAgICBi
cmVhazsKKworICAgICAgY2FzZSBEM0QxMV9SVFZfRElNRU5TSU9OX1VOS05PV046CisgICAgICBj
YXNlIEQzRDExX1JUVl9ESU1FTlNJT05fQlVGRkVSOgorICAgICAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gRDNEMTFDYWxjU3VicmVzb3Vy
Y2UobWlwU2xpY2UsIGFycmF5U2xpY2UsIG1pcExldmVscyk7Cit9CisKK3N0YXRpYyB1bnNpZ25l
ZCBpbnQgZ2V0RFNWU3VicmVzb3VyY2VJbmRleChJRDNEMTFUZXh0dXJlMkQgKnRleHR1cmUsIElE
M0QxMURlcHRoU3RlbmNpbFZpZXcgKnZpZXcpCit7CisgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9W
SUVXX0RFU0MgZHN2RGVzYzsKKyAgICB2aWV3LT5HZXREZXNjKCZkc3ZEZXNjKTsKKworICAgIEQz
RDExX1RFWFRVUkUyRF9ERVNDIHRleERlc2M7CisgICAgdGV4dHVyZS0+R2V0RGVzYygmdGV4RGVz
Yyk7CisKKyAgICB1bnNpZ25lZCBpbnQgbWlwU2xpY2UgPSAwOworICAgIHVuc2lnbmVkIGludCBh
cnJheVNsaWNlID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgbWlwTGV2ZWxzID0gdGV4RGVzYy5NaXBM
ZXZlbHM7CisKKyAgICBzd2l0Y2ggKGRzdkRlc2MuVmlld0RpbWVuc2lvbikKKyAgICB7CisgICAg
ICBjYXNlIEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTFEOgorICAgICAgICBtaXBTbGljZSA9
IGRzdkRlc2MuVGV4dHVyZTFELk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNlID0gMDsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMURB
UlJBWToKKyAgICAgICAgbWlwU2xpY2UgPSBkc3ZEZXNjLlRleHR1cmUxREFycmF5Lk1pcFNsaWNl
OworICAgICAgICBhcnJheVNsaWNlID0gZHN2RGVzYy5UZXh0dXJlMURBcnJheS5GaXJzdEFycmF5
U2xpY2U7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEQzRDExX0RTVl9ESU1FTlNJT05f
VEVYVFVSRTJEOgorICAgICAgICBtaXBTbGljZSA9IGRzdkRlc2MuVGV4dHVyZTJELk1pcFNsaWNl
OworICAgICAgICBhcnJheVNsaWNlID0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2Ug
RDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWToKKyAgICAgICAgbWlwU2xpY2UgPSBk
c3ZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNlID0gZHN2
RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2U7CisgICAgICAgIGJyZWFrOworCisg
ICAgICBjYXNlIEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJETVM6CisgICAgICAgIG1pcFNs
aWNlID0gMDsKKyAgICAgICAgYXJyYXlTbGljZSA9IDA7CisgICAgICAgIGJyZWFrOworCisgICAg
ICBjYXNlIEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJETVNBUlJBWToKKyAgICAgICAgbWlw
U2xpY2UgPSAwOworICAgICAgICBhcnJheVNsaWNlID0gZHN2RGVzYy5UZXh0dXJlMkRNU0FycmF5
LkZpcnN0QXJyYXlTbGljZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRDNEMTFfUlRW
X0RJTUVOU0lPTl9VTktOT1dOOgorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgIGJy
ZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gRDNEMTFDYWxjU3VicmVzb3VyY2UobWlwU2xpY2Us
IGFycmF5U2xpY2UsIG1pcExldmVscyk7Cit9CisKK1JlbmRlclRhcmdldDExOjpSZW5kZXJUYXJn
ZXQxMShSZW5kZXJlciAqcmVuZGVyZXIsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnJ0diwgSUQz
RDExVGV4dHVyZTJEICp0ZXgsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBtUmVuZGVyZXIgPSBSZW5kZXJlcjExOjpt
YWtlUmVuZGVyZXIxMShyZW5kZXJlcik7CisgICAgbVRleHR1cmUgPSB0ZXg7CisgICAgbVJlbmRl
clRhcmdldCA9IHJ0djsKKyAgICBtRGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICBtU2hhZGVyUmVz
b3VyY2UgPSBzcnY7CisgICAgbVN1YnJlc291cmNlSW5kZXggPSAwOworCisgICAgaWYgKG1SZW5k
ZXJUYXJnZXQgJiYgbVRleHR1cmUpCisgICAgeworICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VU
X1ZJRVdfREVTQyBkZXNjOworICAgICAgICBtUmVuZGVyVGFyZ2V0LT5HZXREZXNjKCZkZXNjKTsK
KworICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyB0ZXhEZXNjOworICAgICAgICBtVGV4dHVy
ZS0+R2V0RGVzYygmdGV4RGVzYyk7CisKKyAgICAgICAgbVN1YnJlc291cmNlSW5kZXggPSBnZXRS
VFZTdWJyZXNvdXJjZUluZGV4KG1UZXh0dXJlLCBtUmVuZGVyVGFyZ2V0KTsKKyAgICAgICAgbVdp
ZHRoID0gd2lkdGg7CisgICAgICAgIG1IZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIG1TYW1wbGVz
ID0gKHRleERlc2MuU2FtcGxlRGVzYy5Db3VudCA+IDEpID8gdGV4RGVzYy5TYW1wbGVEZXNjLkNv
dW50IDogMDsKKworICAgICAgICBtSW50ZXJuYWxGb3JtYXQgPSBkM2QxMV9nbDo6Q29udmVydFRl
eHR1cmVJbnRlcm5hbEZvcm1hdChkZXNjLkZvcm1hdCk7CisgICAgICAgIG1BY3R1YWxGb3JtYXQg
PSBkM2QxMV9nbDo6Q29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdChkZXNjLkZvcm1hdCk7Cisg
ICAgfQorfQorCitSZW5kZXJUYXJnZXQxMTo6UmVuZGVyVGFyZ2V0MTEoUmVuZGVyZXIgKnJlbmRl
cmVyLCBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkc3YsIElEM0QxMVRleHR1cmUyRCAqdGV4LCBJ
RDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQpCit7CisgICAgbVJlbmRlcmVyID0gUmVuZGVyZXIxMTo6bWFrZVJlbmRlcmVyMTEocmVuZGVy
ZXIpOworICAgIG1UZXh0dXJlID0gdGV4OworICAgIG1SZW5kZXJUYXJnZXQgPSBOVUxMOworICAg
IG1EZXB0aFN0ZW5jaWwgPSBkc3Y7CisgICAgbVNoYWRlclJlc291cmNlID0gc3J2OworICAgIG1T
dWJyZXNvdXJjZUluZGV4ID0gMDsKKworICAgIGlmIChtRGVwdGhTdGVuY2lsICYmIG1UZXh0dXJl
KQorICAgIHsKKyAgICAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9WSUVXX0RFU0MgZGVzYzsKKyAg
ICAgICAgbURlcHRoU3RlbmNpbC0+R2V0RGVzYygmZGVzYyk7CisKKyAgICAgICAgRDNEMTFfVEVY
VFVSRTJEX0RFU0MgdGV4RGVzYzsKKyAgICAgICAgbVRleHR1cmUtPkdldERlc2MoJnRleERlc2Mp
OworCisgICAgICAgIG1TdWJyZXNvdXJjZUluZGV4ID0gZ2V0RFNWU3VicmVzb3VyY2VJbmRleCht
VGV4dHVyZSwgbURlcHRoU3RlbmNpbCk7CisgICAgICAgIG1XaWR0aCA9IHdpZHRoOworICAgICAg
ICBtSGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBtU2FtcGxlcyA9ICh0ZXhEZXNjLlNhbXBsZURl
c2MuQ291bnQgPiAxKSA/IHRleERlc2MuU2FtcGxlRGVzYy5Db3VudCA6IDA7CisKKyAgICAgICAg
bUludGVybmFsRm9ybWF0ID0gZDNkMTFfZ2w6OkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQo
ZGVzYy5Gb3JtYXQpOworICAgICAgICBtQWN0dWFsRm9ybWF0ID0gZDNkMTFfZ2w6OkNvbnZlcnRU
ZXh0dXJlSW50ZXJuYWxGb3JtYXQoZGVzYy5Gb3JtYXQpOworICAgIH0KK30KKworUmVuZGVyVGFy
Z2V0MTE6OlJlbmRlclRhcmdldDExKFJlbmRlcmVyICpyZW5kZXJlciwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywgYm9vbCBkZXB0
aCkKK3sKKyAgICBtUmVuZGVyZXIgPSBSZW5kZXJlcjExOjptYWtlUmVuZGVyZXIxMShyZW5kZXJl
cik7CisgICAgbVRleHR1cmUgPSBOVUxMOworICAgIG1SZW5kZXJUYXJnZXQgPSBOVUxMOworICAg
IG1EZXB0aFN0ZW5jaWwgPSBOVUxMOworICAgIG1TaGFkZXJSZXNvdXJjZSA9IE5VTEw7CisKKyAg
ICBEWEdJX0ZPUk1BVCByZXF1ZXN0ZWRGb3JtYXQgPSBnbF9kM2QxMTo6Q29udmVydFJlbmRlcmJ1
ZmZlckZvcm1hdChmb3JtYXQpOworCisgICAgaW50IHN1cHBvcnRlZFNhbXBsZXMgPSBtUmVuZGVy
ZXItPmdldE5lYXJlc3RTdXBwb3J0ZWRTYW1wbGVzKHJlcXVlc3RlZEZvcm1hdCwgc2FtcGxlcyk7
CisgICAgaWYgKHN1cHBvcnRlZFNhbXBsZXMgPCAwKQorICAgIHsKKyAgICAgICAgZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHdp
ZHRoID4gMCAmJiBoZWlnaHQgPiAwKQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRlIHRleHR1cmUg
cmVzb3VyY2UKKyAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVzYzsKKyAgICAgICAgZGVz
Yy5XaWR0aCA9IHdpZHRoOyAKKyAgICAgICAgZGVzYy5IZWlnaHQgPSBoZWlnaHQ7CisgICAgICAg
IGRlc2MuTWlwTGV2ZWxzID0gMTsKKyAgICAgICAgZGVzYy5BcnJheVNpemUgPSAxOworICAgICAg
ICBkZXNjLkZvcm1hdCA9IHJlcXVlc3RlZEZvcm1hdDsKKyAgICAgICAgZGVzYy5TYW1wbGVEZXNj
LkNvdW50ID0gKHN1cHBvcnRlZFNhbXBsZXMgPT0gMCkgPyAxIDogc3VwcG9ydGVkU2FtcGxlczsK
KyAgICAgICAgZGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAgICBkZXNjLlVzYWdl
ID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKKyAgICAgICAgZGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7
CisgICAgICAgIGRlc2MuTWlzY0ZsYWdzID0gMDsKKyAgICAgICAgZGVzYy5CaW5kRmxhZ3MgPSAo
ZGVwdGggPyBEM0QxMV9CSU5EX0RFUFRIX1NURU5DSUwgOiAoRDNEMTFfQklORF9SRU5ERVJfVEFS
R0VUIHwgRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0UpKTsKKworICAgICAgICBJRDNEMTFEZXZp
Y2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgICAgIEhSRVNVTFQgcmVz
dWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlc2MsIE5VTEwsICZtVGV4dHVyZSk7CisK
KyAgICAgICAgaWYgKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKQorICAgICAgICB7CisgICAgICAg
ICAgICBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgICAgICBp
ZiAoZGVwdGgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEQzRDExX0RFUFRIX1NURU5DSUxfVklF
V19ERVNDIGRzdkRlc2M7CisgICAgICAgICAgICBkc3ZEZXNjLkZvcm1hdCA9IHJlcXVlc3RlZEZv
cm1hdDsKKyAgICAgICAgICAgIGRzdkRlc2MuVmlld0RpbWVuc2lvbiA9IChzdXBwb3J0ZWRTYW1w
bGVzID09IDApID8gRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkQgOiBEM0QxMV9EU1ZfRElN
RU5TSU9OX1RFWFRVUkUyRE1TOworICAgICAgICAgICAgZHN2RGVzYy5UZXh0dXJlMkQuTWlwU2xp
Y2UgPSAwOworICAgICAgICAgICAgZHN2RGVzYy5GbGFncyA9IDA7CisgICAgICAgICAgICByZXN1
bHQgPSBkZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFZpZXcobVRleHR1cmUsICZkc3ZEZXNjLCAm
bURlcHRoU3RlbmNpbCk7CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1FTU9S
WSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOwor
ICAgICAgICAgICAgICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICAgICAgICAgICAgICBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQo
U1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKKyAgICAg
ICAgICAgIHJ0dkRlc2MuRm9ybWF0ID0gcmVxdWVzdGVkRm9ybWF0OworICAgICAgICAgICAgcnR2
RGVzYy5WaWV3RGltZW5zaW9uID0gKHN1cHBvcnRlZFNhbXBsZXMgPT0gMCkgPyBEM0QxMV9SVFZf
RElNRU5TSU9OX1RFWFRVUkUyRCA6IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJETVM7Cisg
ICAgICAgICAgICBydHZEZXNjLlRleHR1cmUyRC5NaXBTbGljZSA9IDA7CisgICAgICAgICAgICBy
ZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcobVRleHR1cmUsICZydHZEZXNj
LCAmbVJlbmRlclRhcmdldCk7CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1F
TU9SWSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgp
OworICAgICAgICAgICAgICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICAgICAgICAgICAgICBnbDo6
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgICAg
ICAgICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZEZXNjOworICAgICAgICAg
ICAgc3J2RGVzYy5Gb3JtYXQgPSByZXF1ZXN0ZWRGb3JtYXQ7CisgICAgICAgICAgICBzcnZEZXNj
LlZpZXdEaW1lbnNpb24gPSAoc3VwcG9ydGVkU2FtcGxlcyA9PSAwKSA/IEQzRDExX1NSVl9ESU1F
TlNJT05fVEVYVFVSRTJEIDogRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkRNUzsKKyAgICAg
ICAgICAgIHNydkRlc2MuVGV4dHVyZTJELk1vc3REZXRhaWxlZE1pcCA9IDA7CisgICAgICAgICAg
ICBzcnZEZXNjLlRleHR1cmUyRC5NaXBMZXZlbHMgPSAxOworICAgICAgICAgICAgcmVzdWx0ID0g
ZGV2aWNlLT5DcmVhdGVTaGFkZXJSZXNvdXJjZVZpZXcobVRleHR1cmUsICZzcnZEZXNjLCAmbVNo
YWRlclJlc291cmNlKTsKKworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZ
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1UZXh0dXJlLT5SZWxlYXNlKCk7Cisg
ICAgICAgICAgICAgICAgbVRleHR1cmUgPSBOVUxMOworICAgICAgICAgICAgICAgIG1SZW5kZXJU
YXJnZXQtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0ID0gTlVMTDsK
KyAgICAgICAgICAgICAgICBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURF
RChyZXN1bHQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1XaWR0aCA9IHdpZHRoOworICAg
IG1IZWlnaHQgPSBoZWlnaHQ7CisgICAgbUludGVybmFsRm9ybWF0ID0gZm9ybWF0OworICAgIG1T
YW1wbGVzID0gc3VwcG9ydGVkU2FtcGxlczsKKyAgICBtQWN0dWFsRm9ybWF0ID0gZDNkMTFfZ2w6
OkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQocmVxdWVzdGVkRm9ybWF0KTsKKyAgICBtU3Vi
cmVzb3VyY2VJbmRleCA9IEQzRDExQ2FsY1N1YnJlc291cmNlKDAsIDAsIDEpOworfQorCitSZW5k
ZXJUYXJnZXQxMTo6flJlbmRlclRhcmdldDExKCkKK3sKKyAgICBpZiAobVRleHR1cmUpCisgICAg
eworICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOworICAgICAgICBtVGV4dHVyZSA9IE5VTEw7
CisgICAgfQorCisgICAgaWYgKG1SZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICBtUmVuZGVy
VGFyZ2V0LT5SZWxlYXNlKCk7CisgICAgICAgIG1SZW5kZXJUYXJnZXQgPSBOVUxMOworICAgIH0K
KworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgbURlcHRoU3RlbmNpbC0+
UmVsZWFzZSgpOworICAgICAgICBtRGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICB9CisKKyAgICBp
ZiAobVNoYWRlclJlc291cmNlKQorICAgIHsKKyAgICAgICAgbVNoYWRlclJlc291cmNlLT5SZWxl
YXNlKCk7CisgICAgICAgIG1TaGFkZXJSZXNvdXJjZSA9IE5VTEw7CisgICAgfQorfQorCitSZW5k
ZXJUYXJnZXQxMSAqUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShSZW5kZXJUYXJn
ZXQgKnRhcmdldCkKK3sKKyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShyeDo6UmVuZGVyVGFy
Z2V0MTEqLCB0YXJnZXQpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cng6OlJlbmRlclRhcmdl
dDExKj4odGFyZ2V0KTsKK30KKworSUQzRDExVGV4dHVyZTJEICpSZW5kZXJUYXJnZXQxMTo6Z2V0
VGV4dHVyZSgpIGNvbnN0Cit7CisgICAgaWYgKG1UZXh0dXJlKQorICAgIHsKKyAgICAgICAgbVRl
eHR1cmUtPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtVGV4dHVyZTsKK30KKworLy8g
QWRkcyByZWZlcmVuY2UsIGNhbGxlciBtdXN0IGNhbGwgUmVsZWFzZQorSUQzRDExUmVuZGVyVGFy
Z2V0VmlldyAqUmVuZGVyVGFyZ2V0MTE6OmdldFJlbmRlclRhcmdldFZpZXcoKSBjb25zdAorewor
ICAgIGlmIChtUmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgbVJlbmRlclRhcmdldC0+QWRk
UmVmKCk7CisgICAgfQorCisgICAgcmV0dXJuIG1SZW5kZXJUYXJnZXQ7Cit9CisKKy8vIEFkZHMg
cmVmZXJlbmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVhc2UKK0lEM0QxMURlcHRoU3RlbmNpbFZp
ZXcgKlJlbmRlclRhcmdldDExOjpnZXREZXB0aFN0ZW5jaWxWaWV3KCkgY29uc3QKK3sKKyAgICBp
ZiAobURlcHRoU3RlbmNpbCkKKyAgICB7CisgICAgICAgIG1EZXB0aFN0ZW5jaWwtPkFkZFJlZigp
OworICAgIH0KKworICAgIHJldHVybiBtRGVwdGhTdGVuY2lsOworfQorCisvLyBBZGRzIHJlZmVy
ZW5jZSwgY2FsbGVyIG11c3QgY2FsbCBSZWxlYXNlCitJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcg
KlJlbmRlclRhcmdldDExOjpnZXRTaGFkZXJSZXNvdXJjZVZpZXcoKSBjb25zdAoreworICAgIGlm
IChtU2hhZGVyUmVzb3VyY2UpCisgICAgeworICAgICAgICBtU2hhZGVyUmVzb3VyY2UtPkFkZFJl
ZigpOworICAgIH0KKworICAgIHJldHVybiBtU2hhZGVyUmVzb3VyY2U7Cit9CisKK3Vuc2lnbmVk
IGludCBSZW5kZXJUYXJnZXQxMTo6Z2V0U3VicmVzb3VyY2VJbmRleCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1TdWJyZXNvdXJjZUluZGV4OworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDExLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5k
ZXJUYXJnZXQxMS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVyVGFyZ2V0MTEuaDogRGVmaW5lcyBh
IERYMTEtc3BlY2lmaWMgd3JhcHBlciBmb3IgSUQzRDExVmlldyBwb2ludGVycworLy8gcmV0YWlu
ZWQgYnkgUmVuZGVyYnVmZmVycy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfUkVOREVS
VEFSR0VUMTFfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUlRBUkdFVDExX0hf
CisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0LmgiCisKK25hbWVz
cGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBSZW5kZXJlcjExOworCitjbGFzcyBS
ZW5kZXJUYXJnZXQxMSA6IHB1YmxpYyBSZW5kZXJUYXJnZXQKK3sKKyAgcHVibGljOgorICAgIFJl
bmRlclRhcmdldDExKFJlbmRlcmVyICpyZW5kZXJlciwgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAq
cnR2LCBJRDNEMTFUZXh0dXJlMkQgKnRleCwgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKyAgICBSZW5kZXJUYXJnZXQxMShSZW5k
ZXJlciAqcmVuZGVyZXIsIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRzdiwgSUQzRDExVGV4dHVy
ZTJEICp0ZXgsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCk7CisgICAgUmVuZGVyVGFyZ2V0MTEoUmVuZGVyZXIgKnJlbmRlcmVyLCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBzYW1w
bGVzLCBib29sIGRlcHRoKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJUYXJnZXQxMSgpOworCisgICAg
c3RhdGljIFJlbmRlclRhcmdldDExICptYWtlUmVuZGVyVGFyZ2V0MTEoUmVuZGVyVGFyZ2V0ICpy
ZW5kZXJUYXJnZXQpOworCisgICAgLy8gQWRkcyByZWZlcmVuY2UsIGNhbGxlciBtdXN0IGNhbGwg
UmVsZWFzZQorICAgIElEM0QxMVRleHR1cmUyRCAqZ2V0VGV4dHVyZSgpIGNvbnN0OworCisgICAg
Ly8gQWRkcyByZWZlcmVuY2UsIGNhbGxlciBtdXN0IGNhbGwgUmVsZWFzZQorICAgIElEM0QxMVJl
bmRlclRhcmdldFZpZXcgKmdldFJlbmRlclRhcmdldFZpZXcoKSBjb25zdDsKKworICAgIC8vIEFk
ZHMgcmVmZXJlbmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVhc2UKKyAgICBJRDNEMTFEZXB0aFN0
ZW5jaWxWaWV3ICpnZXREZXB0aFN0ZW5jaWxWaWV3KCkgY29uc3Q7CisKKyAgICAvLyBBZGRzIHJl
ZmVyZW5jZSwgY2FsbGVyIG11c3QgY2FsbCBSZWxlYXNlCisgICAgSUQzRDExU2hhZGVyUmVzb3Vy
Y2VWaWV3ICpnZXRTaGFkZXJSZXNvdXJjZVZpZXcoKSBjb25zdDsKKworICAgIHVuc2lnbmVkIGlu
dCBnZXRTdWJyZXNvdXJjZUluZGV4KCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oUmVuZGVyVGFyZ2V0MTEpOworCisgICAgdW5zaWduZWQgaW50IG1T
dWJyZXNvdXJjZUluZGV4OworICAgIElEM0QxMVRleHR1cmUyRCAqbVRleHR1cmU7CisgICAgSUQz
RDExUmVuZGVyVGFyZ2V0VmlldyAqbVJlbmRlclRhcmdldDsKKyAgICBJRDNEMTFEZXB0aFN0ZW5j
aWxWaWV3ICptRGVwdGhTdGVuY2lsOworICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqbVNo
YWRlclJlc291cmNlOworCisgICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVyOworfTsKKworfQorCisj
ZW5kaWYgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUlRBUkdFVDExX0hfClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5k
ZXJUYXJnZXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIFJlbmRlclRhcmdldC5oOiBEZWZpbmVzIGFuIGFic3RyYWN0IHdyYXBwZXIgY2xhc3MgdG8g
bWFuYWdlIElEaXJlY3QzRFN1cmZhY2U5CisvLyBhbmQgSUQzRDExVmlldyBvYmplY3RzIGJlbG9u
Z2luZyB0byByZW5kZXJidWZmZXJzLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5E
RVJUQVJHRVRfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUlRBUkdFVF9IXwor
CisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFz
cyBSZW5kZXJUYXJnZXQKK3sKKyAgcHVibGljOgorICAgIFJlbmRlclRhcmdldCgpCisgICAgewor
ICAgICAgICBtV2lkdGggPSAwOworICAgICAgICBtSGVpZ2h0ID0gMDsKKyAgICAgICAgbUludGVy
bmFsRm9ybWF0ID0gR0xfTk9ORTsKKyAgICAgICAgbUFjdHVhbEZvcm1hdCA9IEdMX05PTkU7Cisg
ICAgICAgIG1TYW1wbGVzID0gMDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZW5kZXJUYXJnZXQo
KSB7fTsKKworICAgIEdMc2l6ZWkgZ2V0V2lkdGgoKSB7IHJldHVybiBtV2lkdGg7IH0KKyAgICBH
THNpemVpIGdldEhlaWdodCgpIHsgcmV0dXJuIG1IZWlnaHQ7IH0KKyAgICBHTGVudW0gZ2V0SW50
ZXJuYWxGb3JtYXQoKSB7IHJldHVybiBtSW50ZXJuYWxGb3JtYXQ7IH0KKyAgICBHTGVudW0gZ2V0
QWN0dWFsRm9ybWF0KCkgeyByZXR1cm4gbUFjdHVhbEZvcm1hdDsgfQorICAgIEdMc2l6ZWkgZ2V0
U2FtcGxlcygpIHsgcmV0dXJuIG1TYW1wbGVzOyB9CisgICAgCisgICAgc3RydWN0IERlc2Mgewor
ICAgICAgICBHTHNpemVpIHdpZHRoOworICAgICAgICBHTHNpemVpIGhlaWdodDsKKyAgICAgICAg
R0xlbnVtICBmb3JtYXQ7CisgICAgfTsKKworICBwcm90ZWN0ZWQ6CisgICAgR0xzaXplaSBtV2lk
dGg7CisgICAgR0xzaXplaSBtSGVpZ2h0OworICAgIEdMZW51bSBtSW50ZXJuYWxGb3JtYXQ7Cisg
ICAgR0xlbnVtIG1BY3R1YWxGb3JtYXQ7CisgICAgR0xzaXplaSBtU2FtcGxlczsKKworICBwcml2
YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJUYXJnZXQpOworfTsKKwor
fQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUlRBUkdFVF9IXwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyZXI5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzMjE2IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIFJlbmRlcmVyOS5jcHA6IEltcGxlbWVudHMgYSBiYWNrLWVuZCBzcGVjaWZpYyBjbGFzcyBm
b3IgdGhlIEQzRDkgcmVuZGVyZXIuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9CdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvVGV4dHVyZS5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9SZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9y
ZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
U2hhZGVyRXhlY3V0YWJsZTkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvU3dhcENo
YWluOS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTkuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2U5LmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL3JlbmRlcmVyL0JsaXQuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVy
VGFyZ2V0OS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5Lmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyOS5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9RdWVyeTkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvRmVuY2U5
LmgiCisKKyNpbmNsdWRlICJsaWJFR0wvRGlzcGxheS5oIgorCisvLyBDYW4gYWxzbyBiZSBlbmFi
bGVkIGJ5IGRlZmluaW5nIEZPUkNFX1JFRl9SQVNUIGluIHRoZSBwcm9qZWN0J3MgcHJlZGVmaW5l
ZCBtYWNyb3MKKyNkZWZpbmUgUkVGX1JBU1QgMAorCisvLyBUaGUgIkRlYnVnIFRoaXMgUGl4ZWwu
Li4iIGZlYXR1cmUgaW4gUElYIG9mdGVuIGZhaWxzIHdoZW4gdXNpbmcgdGhlCisvLyBEM0Q5RXgg
aW50ZXJmYWNlcy4gIEluIG9yZGVyIHRvIGdldCBkZWJ1ZyBwaXhlbCB0byB3b3JrIG9uIGEgVmlz
dGEvV2luIDcKKy8vIG1hY2hpbmUsIGRlZmluZSAiQU5HTEVfRU5BQkxFX0QzRDlFWD0wIiBpbiB5
b3VyIHByb2plY3QgZmlsZS4KKyNpZiAhZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEOUVYKQorLy8g
RW5hYmxlcyB1c2Ugb2YgdGhlIElEaXJlY3QzRDlFeCBpbnRlcmZhY2UsIHdoZW4gYXZhaWxhYmxl
CisjZGVmaW5lIEFOR0xFX0VOQUJMRV9EM0Q5RVggMQorI2VuZGlmIC8vICFkZWZpbmVkKEFOR0xF
X0VOQUJMRV9EM0Q5RVgpCisKK25hbWVzcGFjZSByeAoreworc3RhdGljIGNvbnN0IEQzREZPUk1B
VCBSZW5kZXJUYXJnZXRGb3JtYXRzW10gPQorICAgIHsKKyAgICAgICAgRDNERk1UX0ExUjVHNUI1
LAorICAgIC8vICBEM0RGTVRfQTJSMTBHMTBCMTAsICAgLy8gVGhlIGNvbG9yX3JhbXAgY29uZm9y
bWFuY2UgdGVzdCB1c2VzIFJlYWRQaXhlbHMgd2l0aCBVTlNJR05FRF9CWVRFIGNhdXNpbmcgaXQg
dG8gdGhpbmsgdGhhdCByZW5kZXJpbmcgc2tpcHBlZCBhIGNvbG91ciB2YWx1ZS4KKyAgICAgICAg
RDNERk1UX0E4UjhHOEI4LAorICAgICAgICBEM0RGTVRfUjVHNkI1LAorICAgIC8vICBEM0RGTVRf
WDFSNUc1QjUsICAgICAgLy8gSGFzIG5vIGNvbXBhdGlibGUgT3BlbkdMIEVTIHJlbmRlcmJ1ZmZl
ciBmb3JtYXQKKyAgICAgICAgRDNERk1UX1g4UjhHOEI4CisgICAgfTsKKworc3RhdGljIGNvbnN0
IEQzREZPUk1BVCBEZXB0aFN0ZW5jaWxGb3JtYXRzW10gPQorICAgIHsKKyAgICAgICAgRDNERk1U
X1VOS05PV04sCisgICAgLy8gIEQzREZNVF9EMTZfTE9DS0FCTEUsCisgICAgICAgIEQzREZNVF9E
MzIsCisgICAgLy8gIEQzREZNVF9EMTVTMSwKKyAgICAgICAgRDNERk1UX0QyNFM4LAorICAgICAg
ICBEM0RGTVRfRDI0WDgsCisgICAgLy8gIEQzREZNVF9EMjRYNFM0LAorICAgICAgICBEM0RGTVRf
RDE2LAorICAgIC8vICBEM0RGTVRfRDMyRl9MT0NLQUJMRSwKKyAgICAvLyAgRDNERk1UX0QyNEZT
OAorICAgIH07CisKK2VudW0KK3sKKyAgICBNQVhfVkVSVEVYX0NPTlNUQU5UX1ZFQ1RPUlNfRDNE
OSA9IDI1NiwKKyAgICBNQVhfUElYRUxfQ09OU1RBTlRfVkVDVE9SU19TTTIgPSAzMiwKKyAgICBN
QVhfUElYRUxfQ09OU1RBTlRfVkVDVE9SU19TTTMgPSAyMjQsCisgICAgTUFYX1ZBUllJTkdfVkVD
VE9SU19TTTIgPSA4LAorICAgIE1BWF9WQVJZSU5HX1ZFQ1RPUlNfU00zID0gMTAsCisKKyAgICBN
QVhfVEVYVFVSRV9JTUFHRV9VTklUU19WVEZfU00zID0gNAorfTsKKworUmVuZGVyZXI5OjpSZW5k
ZXJlcjkoZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBIREMgaERjLCBib29sIHNvZnR3YXJlRGV2aWNl
KSA6IFJlbmRlcmVyKGRpc3BsYXkpLCBtRGMoaERjKSwgbVNvZnR3YXJlRGV2aWNlKHNvZnR3YXJl
RGV2aWNlKQoreworICAgIG1EM2Q5TW9kdWxlID0gTlVMTDsKKworICAgIG1EM2Q5ID0gTlVMTDsK
KyAgICBtRDNkOUV4ID0gTlVMTDsKKyAgICBtRGV2aWNlID0gTlVMTDsKKyAgICBtRGV2aWNlRXgg
PSBOVUxMOworICAgIG1EZXZpY2VXaW5kb3cgPSBOVUxMOworICAgIG1CbGl0ID0gTlVMTDsKKwor
ICAgIG1BZGFwdGVyID0gRDNEQURBUFRFUl9ERUZBVUxUOworCisgICAgI2lmIFJFRl9SQVNUID09
IDEgfHwgZGVmaW5lZChGT1JDRV9SRUZfUkFTVCkKKyAgICAgICAgbURldmljZVR5cGUgPSBEM0RE
RVZUWVBFX1JFRjsKKyAgICAjZWxzZQorICAgICAgICBtRGV2aWNlVHlwZSA9IEQzRERFVlRZUEVf
SEFMOworICAgICNlbmRpZgorCisgICAgbURldmljZUxvc3QgPSBmYWxzZTsKKworICAgIG1NYXhT
dXBwb3J0ZWRTYW1wbGVzID0gMDsKKworICAgIG1NYXNrZWRDbGVhclNhdmVkU3RhdGUgPSBOVUxM
OworCisgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gTlVMTDsKKyAgICBtSW5kZXhEYXRhTWFuYWdl
ciA9IE5VTEw7CisgICAgbUxpbmVMb29wSUIgPSBOVUxMOworCisgICAgbU1heE51bGxDb2xvcmJ1
ZmZlckxSVSA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fTlVMTF9DT0xPUkJVRkZF
Ul9DQUNIRV9FTlRSSUVTOyBpKyspCisgICAgeworICAgICAgICBtTnVsbENvbG9yYnVmZmVyQ2Fj
aGVbaV0ubHJ1Q291bnQgPSAwOworICAgICAgICBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0ud2lk
dGggPSAwOworICAgICAgICBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uaGVpZ2h0ID0gMDsKKyAg
ICAgICAgbU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ldLmJ1ZmZlciA9IE5VTEw7CisgICAgfQorfQor
CitSZW5kZXJlcjk6On5SZW5kZXJlcjkoKQoreworICAgIHJlbGVhc2VEZXZpY2VSZXNvdXJjZXMo
KTsKKworICAgIGlmIChtRGV2aWNlKQorICAgIHsKKyAgICAgICAgLy8gSWYgdGhlIGRldmljZSBp
cyBsb3N0LCByZXNldCBpdCBmaXJzdCB0byBwcmV2ZW50IGxlYXZpbmcgdGhlIGRyaXZlciBpbiBh
biB1bnN0YWJsZSBzdGF0ZQorICAgICAgICBpZiAodGVzdERldmljZUxvc3QoZmFsc2UpKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXNldERldmljZSgpOworICAgICAgICB9CisKKyAgICAgICAg
bURldmljZS0+UmVsZWFzZSgpOworICAgICAgICBtRGV2aWNlID0gTlVMTDsKKyAgICB9CisKKyAg
ICBpZiAobURldmljZUV4KQorICAgIHsKKyAgICAgICAgbURldmljZUV4LT5SZWxlYXNlKCk7Cisg
ICAgICAgIG1EZXZpY2VFeCA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1EM2Q5KQorICAgIHsK
KyAgICAgICAgbUQzZDktPlJlbGVhc2UoKTsKKyAgICAgICAgbUQzZDkgPSBOVUxMOworICAgIH0K
KworICAgIGlmIChtRGV2aWNlV2luZG93KQorICAgIHsKKyAgICAgICAgRGVzdHJveVdpbmRvdyht
RGV2aWNlV2luZG93KTsKKyAgICAgICAgbURldmljZVdpbmRvdyA9IE5VTEw7CisgICAgfQorCisg
ICAgaWYgKG1EM2Q5RXgpCisgICAgeworICAgICAgICBtRDNkOUV4LT5SZWxlYXNlKCk7CisgICAg
ICAgIG1EM2Q5RXggPSBOVUxMOworICAgIH0KKworICAgIGlmIChtRDNkOU1vZHVsZSkKKyAgICB7
CisgICAgICAgIG1EM2Q5TW9kdWxlID0gTlVMTDsKKyAgICB9CisKKyAgICB3aGlsZSAoIW1NdWx0
aVNhbXBsZVN1cHBvcnQuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBbXSBtTXVsdGlT
YW1wbGVTdXBwb3J0LmJlZ2luKCktPnNlY29uZDsKKyAgICAgICAgbU11bHRpU2FtcGxlU3VwcG9y
dC5lcmFzZShtTXVsdGlTYW1wbGVTdXBwb3J0LmJlZ2luKCkpOworICAgIH0KK30KKworUmVuZGVy
ZXI5ICpSZW5kZXJlcjk6Om1ha2VSZW5kZXJlcjkoUmVuZGVyZXIgKnJlbmRlcmVyKQoreworICAg
IEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpSZW5kZXJlcjkqLCByZW5kZXJlcikpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxyeDo6UmVuZGVyZXI5Kj4ocmVuZGVyZXIpOworfQorCitFR0xp
bnQgUmVuZGVyZXI5Ojppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIWluaXRpYWxpemVDb21waWxl
cigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAgfQor
CisgICAgaWYgKG1Tb2Z0d2FyZURldmljZSkKKyAgICB7CisgICAgICAgIG1EM2Q5TW9kdWxlID0g
R2V0TW9kdWxlSGFuZGxlKFRFWFQoInN3aWZ0c2hhZGVyX2QzZDkuZGxsIikpOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBtRDNkOU1vZHVsZSA9IEdldE1vZHVsZUhhbmRsZShURVhU
KCJkM2Q5LmRsbCIpKTsKKyAgICB9CisKKyAgICBpZiAobUQzZDlNb2R1bGUgPT0gTlVMTCkKKyAg
ICB7CisgICAgICAgIEVSUigiTm8gRDNEOSBtb2R1bGUgZm91bmQgLSBhYm9ydGluZyFcbiIpOwor
ICAgICAgICByZXR1cm4gRUdMX05PVF9JTklUSUFMSVpFRDsKKyAgICB9CisKKyAgICB0eXBlZGVm
IEhSRVNVTFQgKFdJTkFQSSAqRGlyZWN0M0RDcmVhdGU5RXhGdW5jKShVSU5ULCBJRGlyZWN0M0Q5
RXgqKik7CisgICAgRGlyZWN0M0RDcmVhdGU5RXhGdW5jIERpcmVjdDNEQ3JlYXRlOUV4UHRyID0g
cmVpbnRlcnByZXRfY2FzdDxEaXJlY3QzRENyZWF0ZTlFeEZ1bmM+KEdldFByb2NBZGRyZXNzKG1E
M2Q5TW9kdWxlLCAiRGlyZWN0M0RDcmVhdGU5RXgiKSk7CisKKyAgICAvLyBVc2UgRGlyZWN0M0Q5
RXggaWYgYXZhaWxhYmxlLiBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgdmVyc2lvbiBpcyBsZXNz
CisgICAgLy8gaW5jbGluZWQgdG8gcmVwb3J0IGEgbG9zdCBjb250ZXh0LCBmb3IgZXhhbXBsZSB3
aGVuIHRoZSB1c2VyIHN3aXRjaGVzCisgICAgLy8gZGVza3RvcC4gRGlyZWN0M0Q5RXggaXMgYXZh
aWxhYmxlIGluIFdpbmRvd3MgVmlzdGEgYW5kIGxhdGVyIGlmIHN1aXRhYmxlIGRyaXZlcnMgYXJl
IGF2YWlsYWJsZS4KKyAgICBpZiAoQU5HTEVfRU5BQkxFX0QzRDlFWCAmJiBEaXJlY3QzRENyZWF0
ZTlFeFB0ciAmJiBTVUNDRUVERUQoRGlyZWN0M0RDcmVhdGU5RXhQdHIoRDNEX1NES19WRVJTSU9O
LCAmbUQzZDlFeCkpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1EM2Q5RXgpOworICAgICAgICBt
RDNkOUV4LT5RdWVyeUludGVyZmFjZShJSURfSURpcmVjdDNEOSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KCZtRDNkOSkpOworICAgICAgICBBU1NFUlQobUQzZDkpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBtRDNkOSA9IERpcmVjdDNEQ3JlYXRlOShEM0RfU0RLX1ZFUlNJT04p
OworICAgIH0KKworICAgIGlmICghbUQzZDkpCisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5v
dCBjcmVhdGUgRDNEOSBkZXZpY2UgLSBhYm9ydGluZyFcbiIpOworICAgICAgICByZXR1cm4gRUdM
X05PVF9JTklUSUFMSVpFRDsKKyAgICB9CisKKyAgICBpZiAobURjICE9IE5VTEwpCisgICAgewor
ICAgIC8vICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUU6IERldGVybWluZSB3aGljaCBhZGFw
dGVyIGluZGV4IHRoZSBkZXZpY2UgY29udGV4dCBjb3JyZXNwb25kcyB0bworICAgIH0KKworICAg
IEhSRVNVTFQgcmVzdWx0OworCisgICAgLy8gR2l2ZSB1cCBvbiBnZXR0aW5nIGRldmljZSBjYXBz
IGFmdGVyIGFib3V0IG9uZSBzZWNvbmQuCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgKytp
KQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gbUQzZDktPkdldERldmljZUNhcHMobUFkYXB0ZXIs
IG1EZXZpY2VUeXBlLCAmbURldmljZUNhcHMpOworICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3Vs
dCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGVs
c2UgaWYgKHJlc3VsdCA9PSBEM0RFUlJfTk9UQVZBSUxBQkxFKQorICAgICAgICB7CisgICAgICAg
ICAgICBTbGVlcCgxMDApOyAgIC8vIEdpdmUgdGhlIGRyaXZlciBzb21lIHRpbWUgdG8gaW5pdGlh
bGl6ZS9yZWNvdmVyCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoRkFJTEVEKHJlc3VsdCkp
ICAgLy8gRDNERVJSX09VVE9GVklERU9NRU1PUlksIEVfT1VUT0ZNRU1PUlksIEQzREVSUl9JTlZB
TElEREVWSUNFLCBvciBhbm90aGVyIGVycm9yIHdlIGNhbid0IHJlY292ZXIgZnJvbQorICAgICAg
ICB7CisgICAgICAgICAgICBFUlIoImZhaWxlZCB0byBnZXQgZGV2aWNlIGNhcHMgKDB4JXgpXG4i
LCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAobURldmljZUNhcHMuUGl4ZWxTaGFkZXJWZXJzaW9uIDwg
RDNEUFNfVkVSU0lPTigyLCAwKSkKKyAgICB7CisgICAgICAgIEVSUigiUmVuZGVyZXIgZG9lcyBu
b3Qgc3VwcG9ydCBQUyAyLjAuIGFib3J0aW5nIVxuIik7CisgICAgICAgIHJldHVybiBFR0xfTk9U
X0lOSVRJQUxJWkVEOworICAgIH0KKworICAgIC8vIFdoZW4gRGlyZWN0WDkgaXMgcnVubmluZyB3
aXRoIGFuIG9sZGVyIERpcmVjdFg4IGRyaXZlciwgYSBTdHJldGNoUmVjdCBmcm9tIGEgcmVndWxh
ciB0ZXh0dXJlIHRvIGEgcmVuZGVyIHRhcmdldCB0ZXh0dXJlIGlzIG5vdCBzdXBwb3J0ZWQuCisg
ICAgLy8gVGhpcyBpcyByZXF1aXJlZCBieSBUZXh0dXJlMkQ6OmNvbnZlcnRUb1JlbmRlclRhcmdl
dC4KKyAgICBpZiAoKG1EZXZpY2VDYXBzLkRldkNhcHMyICYgRDNEREVWQ0FQUzJfQ0FOX1NUUkVU
Q0hSRUNUX0ZST01fVEVYVFVSRVMpID09IDApCisgICAgeworICAgICAgICBFUlIoIlJlbmRlcmVy
IGRvZXMgbm90IHN1cHBvcnQgc3RyZXRjdHJlY3QgZnJvbSB0ZXh0dXJlcyFcbiIpOworICAgICAg
ICByZXR1cm4gRUdMX05PVF9JTklUSUFMSVpFRDsKKyAgICB9CisKKyAgICBtRDNkOS0+R2V0QWRh
cHRlcklkZW50aWZpZXIobUFkYXB0ZXIsIDAsICZtQWRhcHRlcklkZW50aWZpZXIpOworCisgICAg
Ly8gQVRJIGNhcmRzIG9uIFhQIGhhdmUgcHJvYmxlbXMgd2l0aCBub24tcG93ZXItb2YtdHdvIHRl
eHR1cmVzLgorICAgIG1TdXBwb3J0c05vblBvd2VyMlRleHR1cmVzID0gIShtRGV2aWNlQ2Fwcy5U
ZXh0dXJlQ2FwcyAmIEQzRFBURVhUVVJFQ0FQU19QT1cyKSAmJgorICAgICAgICAhKG1EZXZpY2VD
YXBzLlRleHR1cmVDYXBzICYgRDNEUFRFWFRVUkVDQVBTX0NVQkVNQVBfUE9XMikgJiYKKyAgICAg
ICAgIShtRGV2aWNlQ2Fwcy5UZXh0dXJlQ2FwcyAmIEQzRFBURVhUVVJFQ0FQU19OT05QT1cyQ09O
RElUSU9OQUwpICYmCisgICAgICAgICEoZ2V0Q29tcGFyYWJsZU9TVmVyc2lvbigpIDwgdmVyc2lv
bldpbmRvd3NWaXN0YSAmJiBtQWRhcHRlcklkZW50aWZpZXIuVmVuZG9ySWQgPT0gVkVORE9SX0lE
X0FNRCk7CisKKyAgICAvLyBNdXN0IHN1cHBvcnQgYSBtaW5pbXVtIG9mIDI6MSBhbmlzb3Ryb3B5
IGZvciBtYXggYW5pc290cm9weSB0byBiZSBjb25zaWRlcmVkIHN1cHBvcnRlZCwgcGVyIHRoZSBz
cGVjCisgICAgbVN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHkgPSAoKG1EZXZpY2VDYXBz
LlJhc3RlckNhcHMgJiBEM0RQUkFTVEVSQ0FQU19BTklTT1RST1BZKSAmJiAobURldmljZUNhcHMu
TWF4QW5pc290cm9weSA+PSAyKSk7CisKKyAgICBtTWluU3dhcEludGVydmFsID0gNDsKKyAgICBt
TWF4U3dhcEludGVydmFsID0gMDsKKworICAgIGlmIChtRGV2aWNlQ2Fwcy5QcmVzZW50YXRpb25J
bnRlcnZhbHMgJiBEM0RQUkVTRU5UX0lOVEVSVkFMX0lNTUVESUFURSkKKyAgICB7CisgICAgICAg
IG1NaW5Td2FwSW50ZXJ2YWwgPSBzdGQ6Om1pbihtTWluU3dhcEludGVydmFsLCAwKTsKKyAgICAg
ICAgbU1heFN3YXBJbnRlcnZhbCA9IHN0ZDo6bWF4KG1NYXhTd2FwSW50ZXJ2YWwsIDApOworICAg
IH0KKyAgICBpZiAobURldmljZUNhcHMuUHJlc2VudGF0aW9uSW50ZXJ2YWxzICYgRDNEUFJFU0VO
VF9JTlRFUlZBTF9PTkUpCisgICAgeworICAgICAgICBtTWluU3dhcEludGVydmFsID0gc3RkOjpt
aW4obU1pblN3YXBJbnRlcnZhbCwgMSk7CisgICAgICAgIG1NYXhTd2FwSW50ZXJ2YWwgPSBzdGQ6
Om1heChtTWF4U3dhcEludGVydmFsLCAxKTsKKyAgICB9CisgICAgaWYgKG1EZXZpY2VDYXBzLlBy
ZXNlbnRhdGlvbkludGVydmFscyAmIEQzRFBSRVNFTlRfSU5URVJWQUxfVFdPKQorICAgIHsKKyAg
ICAgICAgbU1pblN3YXBJbnRlcnZhbCA9IHN0ZDo6bWluKG1NaW5Td2FwSW50ZXJ2YWwsIDIpOwor
ICAgICAgICBtTWF4U3dhcEludGVydmFsID0gc3RkOjptYXgobU1heFN3YXBJbnRlcnZhbCwgMik7
CisgICAgfQorICAgIGlmIChtRGV2aWNlQ2Fwcy5QcmVzZW50YXRpb25JbnRlcnZhbHMgJiBEM0RQ
UkVTRU5UX0lOVEVSVkFMX1RIUkVFKQorICAgIHsKKyAgICAgICAgbU1pblN3YXBJbnRlcnZhbCA9
IHN0ZDo6bWluKG1NaW5Td2FwSW50ZXJ2YWwsIDMpOworICAgICAgICBtTWF4U3dhcEludGVydmFs
ID0gc3RkOjptYXgobU1heFN3YXBJbnRlcnZhbCwgMyk7CisgICAgfQorICAgIGlmIChtRGV2aWNl
Q2Fwcy5QcmVzZW50YXRpb25JbnRlcnZhbHMgJiBEM0RQUkVTRU5UX0lOVEVSVkFMX0ZPVVIpCisg
ICAgeworICAgICAgICBtTWluU3dhcEludGVydmFsID0gc3RkOjptaW4obU1pblN3YXBJbnRlcnZh
bCwgNCk7CisgICAgICAgIG1NYXhTd2FwSW50ZXJ2YWwgPSBzdGQ6Om1heChtTWF4U3dhcEludGVy
dmFsLCA0KTsKKyAgICB9CisKKyAgICBpbnQgbWF4ID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IEFycmF5U2l6ZShSZW5kZXJUYXJnZXRGb3JtYXRzKTsgKytpKQorICAgIHsK
KyAgICAgICAgYm9vbCAqbXVsdGlzYW1wbGVBcnJheSA9IG5ldyBib29sW0QzRE1VTFRJU0FNUExF
XzE2X1NBTVBMRVMgKyAxXTsKKyAgICAgICAgZ2V0TXVsdGlTYW1wbGVTdXBwb3J0KFJlbmRlclRh
cmdldEZvcm1hdHNbaV0sIG11bHRpc2FtcGxlQXJyYXkpOworICAgICAgICBtTXVsdGlTYW1wbGVT
dXBwb3J0W1JlbmRlclRhcmdldEZvcm1hdHNbaV1dID0gbXVsdGlzYW1wbGVBcnJheTsKKworICAg
ICAgICBmb3IgKGludCBqID0gRDNETVVMVElTQU1QTEVfMTZfU0FNUExFUzsgaiA+PSAwOyAtLWop
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtdWx0aXNhbXBsZUFycmF5W2pdICYmIGogIT0g
RDNETVVMVElTQU1QTEVfTk9OTUFTS0FCTEUgJiYgaiA+IG1heCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBtYXggPSBqOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBBcnJheVNpemUoRGVwdGhTdGVuY2ls
Rm9ybWF0cyk7ICsraSkKKyAgICB7CisgICAgICAgIGlmIChEZXB0aFN0ZW5jaWxGb3JtYXRzW2ld
ID09IEQzREZNVF9VTktOT1dOKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYm9v
bCAqbXVsdGlzYW1wbGVBcnJheSA9IG5ldyBib29sW0QzRE1VTFRJU0FNUExFXzE2X1NBTVBMRVMg
KyAxXTsKKyAgICAgICAgZ2V0TXVsdGlTYW1wbGVTdXBwb3J0KERlcHRoU3RlbmNpbEZvcm1hdHNb
aV0sIG11bHRpc2FtcGxlQXJyYXkpOworICAgICAgICBtTXVsdGlTYW1wbGVTdXBwb3J0W0RlcHRo
U3RlbmNpbEZvcm1hdHNbaV1dID0gbXVsdGlzYW1wbGVBcnJheTsKKworICAgICAgICBmb3IgKGlu
dCBqID0gRDNETVVMVElTQU1QTEVfMTZfU0FNUExFUzsgaiA+PSAwOyAtLWopCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChtdWx0aXNhbXBsZUFycmF5W2pdICYmIGogIT0gRDNETVVMVElTQU1Q
TEVfTk9OTUFTS0FCTEUgJiYgaiA+IG1heCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBtYXggPSBqOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbU1heFN1
cHBvcnRlZFNhbXBsZXMgPSBtYXg7CisKKyAgICBzdGF0aWMgY29uc3QgVENIQVIgd2luZG93TmFt
ZVtdID0gVEVYVCgiQW5nbGVIaWRkZW5XaW5kb3ciKTsKKyAgICBzdGF0aWMgY29uc3QgVENIQVIg
Y2xhc3NOYW1lW10gPSBURVhUKCJTVEFUSUMiKTsKKworICAgIG1EZXZpY2VXaW5kb3cgPSBDcmVh
dGVXaW5kb3dFeChXU19FWF9OT0FDVElWQVRFLCBjbGFzc05hbWUsIHdpbmRvd05hbWUsIFdTX0RJ
U0FCTEVEIHwgV1NfUE9QVVAsIDAsIDAsIDEsIDEsIEhXTkRfTUVTU0FHRSwgTlVMTCwgR2V0TW9k
dWxlSGFuZGxlKE5VTEwpLCBOVUxMKTsKKworICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBwcmVz
ZW50UGFyYW1ldGVycyA9IGdldERlZmF1bHRQcmVzZW50UGFyYW1ldGVycygpOworICAgIERXT1JE
IGJlaGF2aW9yRmxhZ3MgPSBEM0RDUkVBVEVfRlBVX1BSRVNFUlZFIHwgRDNEQ1JFQVRFX05PV0lO
RE9XQ0hBTkdFUzsKKworICAgIHJlc3VsdCA9IG1EM2Q5LT5DcmVhdGVEZXZpY2UobUFkYXB0ZXIs
IG1EZXZpY2VUeXBlLCBtRGV2aWNlV2luZG93LCBiZWhhdmlvckZsYWdzIHwgRDNEQ1JFQVRFX0hB
UkRXQVJFX1ZFUlRFWFBST0NFU1NJTkcgfCBEM0RDUkVBVEVfUFVSRURFVklDRSwgJnByZXNlbnRQ
YXJhbWV0ZXJzLCAmbURldmljZSk7CisgICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURF
T01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCByZXN1bHQgPT0gRDNERVJSX0RF
VklDRUxPU1QpCisgICAgeworICAgICAgICByZXR1cm4gRUdMX0JBRF9BTExPQzsKKyAgICB9CisK
KyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXN1bHQgPSBtRDNkOS0+
Q3JlYXRlRGV2aWNlKG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgbURldmljZVdpbmRvdywgYmVoYXZp
b3JGbGFncyB8IEQzRENSRUFURV9TT0ZUV0FSRV9WRVJURVhQUk9DRVNTSU5HLCAmcHJlc2VudFBh
cmFtZXRlcnMsICZtRGV2aWNlKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1P
UlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkgfHwgcmVzdWx0ID09IEQzREVSUl9OT1RBVkFJ
TEFCTEUgfHwgcmVzdWx0ID09IEQzREVSUl9ERVZJQ0VMT1NUKTsKKyAgICAgICAgICAgIHJldHVy
biBFR0xfQkFEX0FMTE9DOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1EM2Q5RXgpCisg
ICAgeworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5RdWVyeUludGVyZmFjZShJSURfSURpcmVj
dDNERGV2aWNlOUV4LCAodm9pZCoqKSAmbURldmljZUV4KTsKKyAgICAgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKyAgICB9CisKKyAgICBtVmVydGV4U2hhZGVyQ2FjaGUuaW5pdGlhbGl6
ZShtRGV2aWNlKTsKKyAgICBtUGl4ZWxTaGFkZXJDYWNoZS5pbml0aWFsaXplKG1EZXZpY2UpOwor
CisgICAgLy8gQ2hlY2sgb2NjbHVzaW9uIHF1ZXJ5IHN1cHBvcnQKKyAgICBJRGlyZWN0M0RRdWVy
eTkgKm9jY2x1c2lvblF1ZXJ5ID0gTlVMTDsKKyAgICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNy
ZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9PQ0NMVVNJT04sICZvY2NsdXNpb25RdWVyeSkpICYmIG9j
Y2x1c2lvblF1ZXJ5KQorICAgIHsKKyAgICAgICAgb2NjbHVzaW9uUXVlcnktPlJlbGVhc2UoKTsK
KyAgICAgICAgbU9jY2x1c2lvblF1ZXJ5U3VwcG9ydCA9IHRydWU7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIG1PY2NsdXNpb25RdWVyeVN1cHBvcnQgPSBmYWxzZTsKKyAgICB9CisK
KyAgICAvLyBDaGVjayBldmVudCBxdWVyeSBzdXBwb3J0CisgICAgSURpcmVjdDNEUXVlcnk5ICpl
dmVudFF1ZXJ5ID0gTlVMTDsKKyAgICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNyZWF0ZVF1ZXJ5
KEQzRFFVRVJZVFlQRV9FVkVOVCwgJmV2ZW50UXVlcnkpKSAmJiBldmVudFF1ZXJ5KQorICAgIHsK
KyAgICAgICAgZXZlbnRRdWVyeS0+UmVsZWFzZSgpOworICAgICAgICBtRXZlbnRRdWVyeVN1cHBv
cnQgPSB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtRXZlbnRRdWVyeVN1
cHBvcnQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBEM0RESVNQTEFZTU9ERSBjdXJyZW50RGlzcGxh
eU1vZGU7CisgICAgbUQzZDktPkdldEFkYXB0ZXJEaXNwbGF5TW9kZShtQWRhcHRlciwgJmN1cnJl
bnREaXNwbGF5TW9kZSk7CisKKyAgICAvLyBDaGVjayB2ZXJ0ZXggdGV4dHVyZSBzdXBwb3J0Cisg
ICAgLy8gT25seSBEaXJlY3QzRCAxMCByZWFkeSBkZXZpY2VzIHN1cHBvcnQgYWxsIHRoZSBuZWNl
c3NhcnkgdmVydGV4IHRleHR1cmUgZm9ybWF0cy4KKyAgICAvLyBXZSB0ZXN0IHRoaXMgdXNpbmcg
RDNEOSBieSBjaGVja2luZyBzdXBwb3J0IGZvciB0aGUgUjE2RiBmb3JtYXQuCisgICAgbVZlcnRl
eFRleHR1cmVTdXBwb3J0ID0gbURldmljZUNhcHMuUGl4ZWxTaGFkZXJWZXJzaW9uID49IEQzRFBT
X1ZFUlNJT04oMywgMCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVUNDRUVERUQo
bUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERp
c3BsYXlNb2RlLkZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFVTQUdFX1FVRVJZX1ZFUlRFWFRFWFRVUkUsIEQz
RFJUWVBFX1RFWFRVUkUsIEQzREZNVF9SMTZGKSk7CisKKyAgICAvLyBDaGVjayBkZXB0aCB0ZXh0
dXJlIHN1cHBvcnQKKyAgICAvLyB3ZSB1c2UgSU5UWiBmb3IgZGVwdGggdGV4dHVyZXMgaW4gRGly
ZWN0M0Q5CisgICAgLy8gd2UgYWxzbyB3YW50IE5VTEwgdGV4dHVyZSBzdXBwb3J0IHRvIGVuc3Vy
ZSB0aGUgd2UgY2FuIG1ha2UgZGVwdGgtb25seSBGQk9zCisgICAgLy8gc2VlIGh0dHA6Ly9hcmFz
LXAuaW5mby90ZXh0cy9EM0Q5R1BVSGFja3MuaHRtbAorICAgIG1EZXB0aFRleHR1cmVTdXBwb3J0
ID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5
cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFVTQUdFX0RFUFRIU1RFTkNJ
TCwgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0lOVFopKSAmJgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURl
dmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFVTQUdFX1JFTkRF
UlRBUkdFVCwgRDNEUlRZUEVfU1VSRkFDRSwgRDNERk1UX05VTEwpKTsKKworICAgIC8vIENoZWNr
IDMyIGJpdCBmbG9hdGluZyBwb2ludCB0ZXh0dXJlIHN1cHBvcnQKKyAgICBtRmxvYXQzMkZpbHRl
clN1cHBvcnQgPSBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBt
RGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgRDNEVVNBR0VfUVVFUllfRklM
VEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0EzMkIzMkczMlIzMkYpKSAmJgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VG
b3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBjdXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCBE
M0RVU0FHRV9RVUVSWV9GSUxURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RSVFlQRV9DVUJFVEVYVFVSRSwgRDNERk1U
X0EzMkIzMkczMlIzMkYpKTsKKworICAgIG1GbG9hdDMyUmVuZGVyU3VwcG9ydCA9IFNVQ0NFRURF
RChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBjdXJyZW50
RGlzcGxheU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9SRU5ERVJUQVJHRVQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RSVFlQ
RV9URVhUVVJFLCBEM0RGTVRfQTMyQjMyRzMyUjMyRikpICYmCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURl
dmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIEQzRFVTQUdFX1JFTkRFUlRBUkdF
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEQzRFJUWVBFX0NVQkVURVhUVVJFLCBEM0RGTVRfQTMyQjMyRzMyUjMyRikpOwor
CisgICAgaWYgKCFtRmxvYXQzMkZpbHRlclN1cHBvcnQgJiYgIW1GbG9hdDMyUmVuZGVyU3VwcG9y
dCkKKyAgICB7CisgICAgICAgIG1GbG9hdDMyVGV4dHVyZVN1cHBvcnQgPSBTVUNDRUVERUQobUQz
ZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3Bs
YXlNb2RlLkZvcm1hdCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0Ez
MkIzMkczMlIzMkYpKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VDQ0VF
REVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJl
bnREaXNwbGF5TW9kZS5Gb3JtYXQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFJUWVBFX0NVQkVURVhUVVJF
LCBEM0RGTVRfQTMyQjMyRzMyUjMyRikpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBtRmxvYXQzMlRleHR1cmVTdXBwb3J0ID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBDaGVjayAx
NiBiaXQgZmxvYXRpbmcgcG9pbnQgdGV4dHVyZSBzdXBwb3J0CisgICAgbUZsb2F0MTZGaWx0ZXJT
dXBwb3J0ID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURl
dmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIEQzRFVTQUdFX1FVRVJZX0ZJTFRF
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEQzRFJUWVBFX1RFWFRVUkUsIEQzREZNVF9BMTZCMTZHMTZSMTZGKSkgJiYKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9y
bWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgRDNE
VVNBR0VfUVVFUllfRklMVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEUlRZUEVfQ1VCRVRFWFRVUkUsIEQzREZNVF9B
MTZCMTZHMTZSMTZGKSk7CisKKyAgICBtRmxvYXQxNlJlbmRlclN1cHBvcnQgPSBTVUNDRUVERUQo
bUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERp
c3BsYXlNb2RlLkZvcm1hdCwgRDNEVVNBR0VfUkVOREVSVEFSR0VULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEUlRZUEVf
VEVYVFVSRSwgRDNERk1UX0ExNkIxNkcxNlIxNkYpKSAmJgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZp
Y2VUeXBlLCBjdXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9SRU5ERVJUQVJHRVQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEM0RSVFlQRV9DVUJFVEVYVFVSRSwgRDNERk1UX0ExNkIxNkcxNlIxNkYpKTsKKwor
ICAgIGlmICghbUZsb2F0MTZGaWx0ZXJTdXBwb3J0ICYmICFtRmxvYXQxNlJlbmRlclN1cHBvcnQp
CisgICAgeworICAgICAgICBtRmxvYXQxNlRleHR1cmVTdXBwb3J0ID0gU1VDQ0VFREVEKG1EM2Q5
LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5
TW9kZS5Gb3JtYXQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFJUWVBFX1RFWFRVUkUsIEQzREZNVF9BMTZC
MTZHMTZSMTZGKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVQ0NFRURF
RChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBjdXJyZW50
RGlzcGxheU1vZGUuRm9ybWF0LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RSVFlQRV9DVUJFVEVYVFVSRSwg
RDNERk1UX0ExNkIxNkcxNlIxNkYpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
bUZsb2F0MTZUZXh0dXJlU3VwcG9ydCA9IHRydWU7CisgICAgfQorCisgICAgLy8gQ2hlY2sgRFhU
IHRleHR1cmUgc3VwcG9ydAorICAgIG1EWFQxVGV4dHVyZVN1cHBvcnQgPSBTVUNDRUVERUQobUQz
ZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3Bs
YXlNb2RlLkZvcm1hdCwgMCwgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0RYVDEpKTsKKyAgICBt
RFhUM1RleHR1cmVTdXBwb3J0ID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdCht
QWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIDAsIEQzRFJU
WVBFX1RFWFRVUkUsIEQzREZNVF9EWFQzKSk7CisgICAgbURYVDVUZXh0dXJlU3VwcG9ydCA9IFNV
Q0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBj
dXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCAwLCBEM0RSVFlQRV9URVhUVVJFLCBEM0RGTVRfRFhU
NSkpOworCisgICAgLy8gQ2hlY2sgbHVtaW5hbmNlW2FscGhhXSB0ZXh0dXJlIHN1cHBvcnQKKyAg
ICBtTHVtaW5hbmNlVGV4dHVyZVN1cHBvcnQgPSBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNl
Rm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwg
MCwgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0w4KSk7CisgICAgbUx1bWluYW5jZUFscGhhVGV4
dHVyZVN1cHBvcnQgPSBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVy
LCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgMCwgRDNEUlRZUEVfVEVY
VFVSRSwgRDNERk1UX0E4TDgpKTsKKworICAgIGluaXRpYWxpemVEZXZpY2UoKTsKKworICAgIHJl
dHVybiBFR0xfU1VDQ0VTUzsKK30KKworLy8gZG8gYW55IG9uZS10aW1lIGRldmljZSBpbml0aWFs
aXphdGlvbgorLy8gTk9URTogdGhpcyBpcyBhbHNvIG5lZWRlZCBhZnRlciBhIGRldmljZSBsb3N0
L3Jlc2V0CisvLyB0byByZXNldCB0aGUgc2NlbmUgc3RhdHVzIGFuZCBlbnN1cmUgdGhlIGRlZmF1
bHQgc3RhdGVzIGFyZSByZXNldC4KK3ZvaWQgUmVuZGVyZXI5Ojppbml0aWFsaXplRGV2aWNlKCkK
K3sKKyAgICAvLyBQZXJtYW5lbnQgbm9uLWRlZmF1bHQgc3RhdGVzCisgICAgbURldmljZS0+U2V0
UmVuZGVyU3RhdGUoRDNEUlNfUE9JTlRTUFJJVEVFTkFCTEUsIFRSVUUpOworICAgIG1EZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX0xBU1RQSVhFTCwgRkFMU0UpOworCisgICAgaWYgKG1EZXZp
Y2VDYXBzLlBpeGVsU2hhZGVyVmVyc2lvbiA+PSBEM0RQU19WRVJTSU9OKDMsIDApKQorICAgIHsK
KyAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfUE9JTlRTSVpFX01BWCwgKERX
T1JEJiltRGV2aWNlQ2Fwcy5NYXhQb2ludFNpemUpOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19QT0lOVFNJWkVfTUFYLCAweDNG
ODAwMDAwKTsgICAvLyAxLjBmCisgICAgfQorCisgICAgbWFya0FsbFN0YXRlRGlydHkoKTsKKwor
ICAgIG1TY2VuZVN0YXJ0ZWQgPSBmYWxzZTsKKworICAgIEFTU0VSVCghbUJsaXQgJiYgIW1WZXJ0
ZXhEYXRhTWFuYWdlciAmJiAhbUluZGV4RGF0YU1hbmFnZXIpOworICAgIG1CbGl0ID0gbmV3IEJs
aXQodGhpcyk7CisgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gbmV3IHJ4OjpWZXJ0ZXhEYXRhTWFu
YWdlcih0aGlzKTsKKyAgICBtSW5kZXhEYXRhTWFuYWdlciA9IG5ldyByeDo6SW5kZXhEYXRhTWFu
YWdlcih0aGlzKTsKK30KKworRDNEUFJFU0VOVF9QQVJBTUVURVJTIFJlbmRlcmVyOTo6Z2V0RGVm
YXVsdFByZXNlbnRQYXJhbWV0ZXJzKCkKK3sKKyAgICBEM0RQUkVTRU5UX1BBUkFNRVRFUlMgcHJl
c2VudFBhcmFtZXRlcnMgPSB7MH07CisKKyAgICAvLyBUaGUgZGVmYXVsdCBzd2FwIGNoYWluIGlz
IG5ldmVyIGFjdHVhbGx5IHVzZWQuIFN1cmZhY2Ugd2lsbCBjcmVhdGUgYSBuZXcgc3dhcCBjaGFp
biB3aXRoIHRoZSBwcm9wZXIgcGFyYW1ldGVycy4KKyAgICBwcmVzZW50UGFyYW1ldGVycy5BdXRv
RGVwdGhTdGVuY2lsRm9ybWF0ID0gRDNERk1UX1VOS05PV047CisgICAgcHJlc2VudFBhcmFtZXRl
cnMuQmFja0J1ZmZlckNvdW50ID0gMTsKKyAgICBwcmVzZW50UGFyYW1ldGVycy5CYWNrQnVmZmVy
Rm9ybWF0ID0gRDNERk1UX1VOS05PV047CisgICAgcHJlc2VudFBhcmFtZXRlcnMuQmFja0J1ZmZl
cldpZHRoID0gMTsKKyAgICBwcmVzZW50UGFyYW1ldGVycy5CYWNrQnVmZmVySGVpZ2h0ID0gMTsK
KyAgICBwcmVzZW50UGFyYW1ldGVycy5FbmFibGVBdXRvRGVwdGhTdGVuY2lsID0gRkFMU0U7Cisg
ICAgcHJlc2VudFBhcmFtZXRlcnMuRmxhZ3MgPSAwOworICAgIHByZXNlbnRQYXJhbWV0ZXJzLmhE
ZXZpY2VXaW5kb3cgPSBtRGV2aWNlV2luZG93OworICAgIHByZXNlbnRQYXJhbWV0ZXJzLk11bHRp
U2FtcGxlUXVhbGl0eSA9IDA7CisgICAgcHJlc2VudFBhcmFtZXRlcnMuTXVsdGlTYW1wbGVUeXBl
ID0gRDNETVVMVElTQU1QTEVfTk9ORTsKKyAgICBwcmVzZW50UGFyYW1ldGVycy5QcmVzZW50YXRp
b25JbnRlcnZhbCA9IEQzRFBSRVNFTlRfSU5URVJWQUxfREVGQVVMVDsKKyAgICBwcmVzZW50UGFy
YW1ldGVycy5Td2FwRWZmZWN0ID0gRDNEU1dBUEVGRkVDVF9ESVNDQVJEOworICAgIHByZXNlbnRQ
YXJhbWV0ZXJzLldpbmRvd2VkID0gVFJVRTsKKworICAgIHJldHVybiBwcmVzZW50UGFyYW1ldGVy
czsKK30KKworaW50IFJlbmRlcmVyOTo6Z2VuZXJhdGVDb25maWdzKENvbmZpZ0Rlc2MgKipjb25m
aWdEZXNjTGlzdCkKK3sKKyAgICBEM0RESVNQTEFZTU9ERSBjdXJyZW50RGlzcGxheU1vZGU7Cisg
ICAgbUQzZDktPkdldEFkYXB0ZXJEaXNwbGF5TW9kZShtQWRhcHRlciwgJmN1cnJlbnREaXNwbGF5
TW9kZSk7CisKKyAgICB1bnNpZ25lZCBpbnQgbnVtUmVuZGVyRm9ybWF0cyA9IEFycmF5U2l6ZShS
ZW5kZXJUYXJnZXRGb3JtYXRzKTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtRGVwdGhGb3JtYXRzID0g
QXJyYXlTaXplKERlcHRoU3RlbmNpbEZvcm1hdHMpOworICAgICgqY29uZmlnRGVzY0xpc3QpID0g
bmV3IENvbmZpZ0Rlc2NbbnVtUmVuZGVyRm9ybWF0cyAqIG51bURlcHRoRm9ybWF0c107CisgICAg
aW50IG51bUNvbmZpZ3MgPSAwOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgZm9ybWF0SW5kZXgg
PSAwOyBmb3JtYXRJbmRleCA8IG51bVJlbmRlckZvcm1hdHM7IGZvcm1hdEluZGV4KyspCisgICAg
eworICAgICAgICBEM0RGT1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0ID0gUmVuZGVyVGFyZ2V0Rm9y
bWF0c1tmb3JtYXRJbmRleF07CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRDNkOS0+Q2hl
Y2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBjdXJyZW50RGlzcGxheU1vZGUu
Rm9ybWF0LCBEM0RVU0FHRV9SRU5ERVJUQVJHRVQsIEQzRFJUWVBFX1NVUkZBQ0UsIHJlbmRlclRh
cmdldEZvcm1hdCk7CisKKyAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICB7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBkZXB0aFN0ZW5jaWxJbmRleCA9IDA7IGRl
cHRoU3RlbmNpbEluZGV4IDwgbnVtRGVwdGhGb3JtYXRzOyBkZXB0aFN0ZW5jaWxJbmRleCsrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEQzREZPUk1BVCBkZXB0aFN0ZW5jaWxGb3Jt
YXQgPSBEZXB0aFN0ZW5jaWxGb3JtYXRzW2RlcHRoU3RlbmNpbEluZGV4XTsKKyAgICAgICAgICAg
ICAgICBIUkVTVUxUIHJlc3VsdCA9IEQzRF9PSzsKKworICAgICAgICAgICAgICAgIGlmKGRlcHRo
U3RlbmNpbEZvcm1hdCAhPSBEM0RGTVRfVU5LTk9XTikKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRl
ciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIEQzRFVTQUdFX0RFUFRI
U1RFTkNJTCwgRDNEUlRZUEVfU1VSRkFDRSwgZGVwdGhTdGVuY2lsRm9ybWF0KTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZihkZXB0aFN0ZW5jaWxGb3JtYXQg
IT0gRDNERk1UX1VOS05PV04pCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IG1EM2Q5LT5DaGVja0RlcHRoU3RlbmNpbE1hdGNoKG1BZGFwdGVy
LCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgcmVuZGVyVGFyZ2V0Rm9y
bWF0LCBkZXB0aFN0ZW5jaWxGb3JtYXQpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdEZXNjIG5ld0NvbmZpZzsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld0NvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQgPSBkM2Q5X2ds
OjpDb252ZXJ0QmFja0J1ZmZlckZvcm1hdChyZW5kZXJUYXJnZXRGb3JtYXQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3Q29uZmlnLmRlcHRoU3RlbmNpbEZvcm1hdCA9IGQzZDlfZ2w6OkNv
bnZlcnREZXB0aFN0ZW5jaWxGb3JtYXQoZGVwdGhTdGVuY2lsRm9ybWF0KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld0NvbmZpZy5tdWx0aVNhbXBsZSA9IDA7IC8vIEZJWE1FOiBlbnVtZXJh
dGUgbXVsdGktc2FtcGxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbmZpZy5mYXN0
Q29uZmlnID0gKGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQgPT0gcmVuZGVyVGFyZ2V0Rm9ybWF0
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgKCpjb25maWdEZXNjTGlzdClbbnVtQ29uZmln
cysrXSA9IG5ld0NvbmZpZzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBudW1Db25m
aWdzOworfQorCit2b2lkIFJlbmRlcmVyOTo6ZGVsZXRlQ29uZmlncyhDb25maWdEZXNjICpjb25m
aWdEZXNjTGlzdCkKK3sKKyAgICBkZWxldGUgW10gKGNvbmZpZ0Rlc2NMaXN0KTsKK30KKwordm9p
ZCBSZW5kZXJlcjk6OnN0YXJ0U2NlbmUoKQoreworICAgIGlmICghbVNjZW5lU3RhcnRlZCkKKyAg
ICB7CisgICAgICAgIGxvbmcgcmVzdWx0ID0gbURldmljZS0+QmVnaW5TY2VuZSgpOworICAgICAg
ICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgZGVmZW5z
aXZlIGNoZWNraW5nIGFnYWluc3QgdGhlIGRldmljZSBiZWluZworICAgICAgICAgICAgLy8gbG9z
dCBhdCB1bmV4cGVjdGVkIHRpbWVzLgorICAgICAgICAgICAgbVNjZW5lU3RhcnRlZCA9IHRydWU7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjplbmRTY2VuZSgpCit7Cisg
ICAgaWYgKG1TY2VuZVN0YXJ0ZWQpCisgICAgeworICAgICAgICAvLyBFbmRTY2VuZSBjYW4gZmFp
bCBpZiB0aGUgZGV2aWNlIHdhcyBsb3N0LCBmb3IgZXhhbXBsZSBkdWUKKyAgICAgICAgLy8gdG8g
YSBURFIgZHVyaW5nIGEgZHJhdyBjYWxsLgorICAgICAgICBtRGV2aWNlLT5FbmRTY2VuZSgpOwor
ICAgICAgICBtU2NlbmVTdGFydGVkID0gZmFsc2U7CisgICAgfQorfQorCit2b2lkIFJlbmRlcmVy
OTo6c3luYyhib29sIGJsb2NrKQoreworICAgIEhSRVNVTFQgcmVzdWx0OworCisgICAgSURpcmVj
dDNEUXVlcnk5KiBxdWVyeSA9IGFsbG9jYXRlRXZlbnRRdWVyeSgpOworICAgIGlmICghcXVlcnkp
CisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVzdWx0ID0gcXVlcnktPklz
c3VlKEQzRElTU1VFX0VORCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAg
IGRvCisgICAgeworICAgICAgICByZXN1bHQgPSBxdWVyeS0+R2V0RGF0YShOVUxMLCAwLCBEM0RH
RVREQVRBX0ZMVVNIKTsKKworICAgICAgICBpZihibG9jayAmJiByZXN1bHQgPT0gU19GQUxTRSkK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gS2VlcCBwb2xsaW5nLCBidXQgYWxsb3cgb3RoZXIg
dGhyZWFkcyB0byBkbyBzb21ldGhpbmcgdXNlZnVsIGZpcnN0CisgICAgICAgICAgICBTbGVlcCgw
KTsKKyAgICAgICAgICAgIC8vIGV4cGxpY2l0bHkgY2hlY2sgZm9yIGRldmljZSBsb3NzCisgICAg
ICAgICAgICAvLyBzb21lIGRyaXZlcnMgc2VlbSB0byByZXR1cm4gU19GQUxTRSBldmVuIGlmIHRo
ZSBkZXZpY2UgaXMgbG9zdAorICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiBEM0RFUlJfREVWSUNF
TE9TVCBsaWtlIHRoZXkgc2hvdWxkCisgICAgICAgICAgICBpZiAodGVzdERldmljZUxvc3QoZmFs
c2UpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IEQzREVSUl9ERVZJ
Q0VMT1NUOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHdoaWxlKGJsb2Nr
ICYmIHJlc3VsdCA9PSBTX0ZBTFNFKTsKKworICAgIGZyZWVFdmVudFF1ZXJ5KHF1ZXJ5KTsKKwor
ICAgIGlmIChkM2Q5Ojppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgIHsKKyAgICAgICAg
bm90aWZ5RGV2aWNlTG9zdCgpOworICAgIH0KK30KKworU3dhcENoYWluICpSZW5kZXJlcjk6OmNy
ZWF0ZVN3YXBDaGFpbihIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBHTGVudW0gYmFj
a0J1ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KQoreworICAgIHJldHVybiBu
ZXcgcng6OlN3YXBDaGFpbjkodGhpcywgd2luZG93LCBzaGFyZUhhbmRsZSwgYmFja0J1ZmZlckZv
cm1hdCwgZGVwdGhCdWZmZXJGb3JtYXQpOworfQorCitJRGlyZWN0M0RRdWVyeTkqIFJlbmRlcmVy
OTo6YWxsb2NhdGVFdmVudFF1ZXJ5KCkKK3sKKyAgICBJRGlyZWN0M0RRdWVyeTkgKnF1ZXJ5ID0g
TlVMTDsKKworICAgIGlmIChtRXZlbnRRdWVyeVBvb2wuZW1wdHkoKSkKKyAgICB7CisgICAgICAg
IEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUXVlcnkoRDNEUVVFUllUWVBFX0VWRU5U
LCAmcXVlcnkpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBxdWVyeSA9IG1FdmVudFF1ZXJ5UG9vbC5iYWNrKCk7Cisg
ICAgICAgIG1FdmVudFF1ZXJ5UG9vbC5wb3BfYmFjaygpOworICAgIH0KKworICAgIHJldHVybiBx
dWVyeTsKK30KKwordm9pZCBSZW5kZXJlcjk6OmZyZWVFdmVudFF1ZXJ5KElEaXJlY3QzRFF1ZXJ5
OSogcXVlcnkpCit7CisgICAgaWYgKG1FdmVudFF1ZXJ5UG9vbC5zaXplKCkgPiAxMDAwKQorICAg
IHsKKyAgICAgICAgcXVlcnktPlJlbGVhc2UoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgbUV2ZW50UXVlcnlQb29sLnB1c2hfYmFjayhxdWVyeSk7CisgICAgfQorfQorCitJRGly
ZWN0M0RWZXJ0ZXhTaGFkZXI5ICpSZW5kZXJlcjk6OmNyZWF0ZVZlcnRleFNoYWRlcihjb25zdCBE
V09SRCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgpCit7CisgICAgcmV0dXJuIG1WZXJ0ZXhTaGFk
ZXJDYWNoZS5jcmVhdGUoZnVuY3Rpb24sIGxlbmd0aCk7Cit9CisKK0lEaXJlY3QzRFBpeGVsU2hh
ZGVyOSAqUmVuZGVyZXI5OjpjcmVhdGVQaXhlbFNoYWRlcihjb25zdCBEV09SRCAqZnVuY3Rpb24s
IHNpemVfdCBsZW5ndGgpCit7CisgICAgcmV0dXJuIG1QaXhlbFNoYWRlckNhY2hlLmNyZWF0ZShm
dW5jdGlvbiwgbGVuZ3RoKTsKK30KKworSFJFU1VMVCBSZW5kZXJlcjk6OmNyZWF0ZVZlcnRleEJ1
ZmZlcihVSU5UIExlbmd0aCwgRFdPUkQgVXNhZ2UsIElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKipw
cFZlcnRleEJ1ZmZlcikKK3sKKyAgICBEM0RQT09MIFBvb2wgPSBnZXRCdWZmZXJQb29sKFVzYWdl
KTsKKyAgICByZXR1cm4gbURldmljZS0+Q3JlYXRlVmVydGV4QnVmZmVyKExlbmd0aCwgVXNhZ2Us
IDAsIFBvb2wsIHBwVmVydGV4QnVmZmVyLCBOVUxMKTsKK30KKworVmVydGV4QnVmZmVyICpSZW5k
ZXJlcjk6OmNyZWF0ZVZlcnRleEJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG5ldyBWZXJ0ZXhCdWZm
ZXI5KHRoaXMpOworfQorCitIUkVTVUxUIFJlbmRlcmVyOTo6Y3JlYXRlSW5kZXhCdWZmZXIoVUlO
VCBMZW5ndGgsIERXT1JEIFVzYWdlLCBEM0RGT1JNQVQgRm9ybWF0LCBJRGlyZWN0M0RJbmRleEJ1
ZmZlcjkgKipwcEluZGV4QnVmZmVyKQoreworICAgIEQzRFBPT0wgUG9vbCA9IGdldEJ1ZmZlclBv
b2woVXNhZ2UpOworICAgIHJldHVybiBtRGV2aWNlLT5DcmVhdGVJbmRleEJ1ZmZlcihMZW5ndGgs
IFVzYWdlLCBGb3JtYXQsIFBvb2wsIHBwSW5kZXhCdWZmZXIsIE5VTEwpOworfQorCitJbmRleEJ1
ZmZlciAqUmVuZGVyZXI5OjpjcmVhdGVJbmRleEJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG5ldyBJ
bmRleEJ1ZmZlcjkodGhpcyk7Cit9CisKK0J1ZmZlclN0b3JhZ2UgKlJlbmRlcmVyOTo6Y3JlYXRl
QnVmZmVyU3RvcmFnZSgpCit7CisgICAgcmV0dXJuIG5ldyBCdWZmZXJTdG9yYWdlOSgpOworfQor
CitRdWVyeUltcGwgKlJlbmRlcmVyOTo6Y3JlYXRlUXVlcnkoR0xlbnVtIHR5cGUpCit7CisgICAg
cmV0dXJuIG5ldyBRdWVyeTkodGhpcywgdHlwZSk7Cit9CisKK0ZlbmNlSW1wbCAqUmVuZGVyZXI5
OjpjcmVhdGVGZW5jZSgpCit7CisgICAgcmV0dXJuIG5ldyBGZW5jZTkodGhpcyk7Cit9CisKK3Zv
aWQgUmVuZGVyZXI5OjpzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBp
bmRleCwgY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKQoreworICAgIGJvb2wg
KmZvcmNlU2V0U2FtcGxlcnMgPSAodHlwZSA9PSBnbDo6U0FNUExFUl9QSVhFTCkgPyBtRm9yY2VT
ZXRQaXhlbFNhbXBsZXJTdGF0ZXMgOiBtRm9yY2VTZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzOworICAg
IGdsOjpTYW1wbGVyU3RhdGUgKmFwcGxpZWRTYW1wbGVycyA9ICh0eXBlID09IGdsOjpTQU1QTEVS
X1BJWEVMKSA/IG1DdXJQaXhlbFNhbXBsZXJTdGF0ZXM6IG1DdXJWZXJ0ZXhTYW1wbGVyU3RhdGVz
OworCisgICAgaWYgKGZvcmNlU2V0U2FtcGxlcnNbaW5kZXhdIHx8IG1lbWNtcCgmc2FtcGxlclN0
YXRlLCAmYXBwbGllZFNhbXBsZXJzW2luZGV4XSwgc2l6ZW9mKGdsOjpTYW1wbGVyU3RhdGUpKSAh
PSAwKQorICAgIHsKKyAgICAgICAgaW50IGQzZFNhbXBsZXJPZmZzZXQgPSAodHlwZSA9PSBnbDo6
U0FNUExFUl9QSVhFTCkgPyAwIDogRDNEVkVSVEVYVEVYVFVSRVNBTVBMRVIwOworICAgICAgICBp
bnQgZDNkU2FtcGxlciA9IGluZGV4ICsgZDNkU2FtcGxlck9mZnNldDsKKworICAgICAgICBtRGV2
aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9BRERSRVNTVSwgZ2xfZDNk
OTo6Q29udmVydFRleHR1cmVXcmFwKHNhbXBsZXJTdGF0ZS53cmFwUykpOworICAgICAgICBtRGV2
aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9BRERSRVNTViwgZ2xfZDNk
OTo6Q29udmVydFRleHR1cmVXcmFwKHNhbXBsZXJTdGF0ZS53cmFwVCkpOworCisgICAgICAgIG1E
ZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01BR0ZJTFRFUiwgZ2xf
ZDNkOTo6Q29udmVydE1hZ0ZpbHRlcihzYW1wbGVyU3RhdGUubWFnRmlsdGVyLCBzYW1wbGVyU3Rh
dGUubWF4QW5pc290cm9weSkpOworICAgICAgICBEM0RURVhUVVJFRklMVEVSVFlQRSBkM2RNaW5G
aWx0ZXIsIGQzZE1pcEZpbHRlcjsKKyAgICAgICAgZ2xfZDNkOTo6Q29udmVydE1pbkZpbHRlcihz
YW1wbGVyU3RhdGUubWluRmlsdGVyLCAmZDNkTWluRmlsdGVyLCAmZDNkTWlwRmlsdGVyLCBzYW1w
bGVyU3RhdGUubWF4QW5pc290cm9weSk7CisgICAgICAgIG1EZXZpY2UtPlNldFNhbXBsZXJTdGF0
ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01JTkZJTFRFUiwgZDNkTWluRmlsdGVyKTsKKyAgICAgICAg
bURldmljZS0+U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQzRFNBTVBfTUlQRklMVEVSLCBk
M2RNaXBGaWx0ZXIpOworICAgICAgICBtRGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxl
ciwgRDNEU0FNUF9NQVhNSVBMRVZFTCwgc2FtcGxlclN0YXRlLmxvZE9mZnNldCk7CisgICAgICAg
IGlmIChtU3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9weSkKKyAgICAgICAgeworICAgICAg
ICAgICAgbURldmljZS0+U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQzRFNBTVBfTUFYQU5J
U09UUk9QWSwgKERXT1JEKXNhbXBsZXJTdGF0ZS5tYXhBbmlzb3Ryb3B5KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGZvcmNlU2V0U2FtcGxlcnNbaW5kZXhdID0gZmFsc2U7CisgICAgYXBwbGll
ZFNhbXBsZXJzW2luZGV4XSA9IHNhbXBsZXJTdGF0ZTsKK30KKwordm9pZCBSZW5kZXJlcjk6OnNl
dFRleHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRl
eHR1cmUpCit7CisgICAgaW50IGQzZFNhbXBsZXJPZmZzZXQgPSAodHlwZSA9PSBnbDo6U0FNUExF
Ul9QSVhFTCkgPyAwIDogRDNEVkVSVEVYVEVYVFVSRVNBTVBMRVIwOworICAgIGludCBkM2RTYW1w
bGVyID0gaW5kZXggKyBkM2RTYW1wbGVyT2Zmc2V0OworICAgIElEaXJlY3QzREJhc2VUZXh0dXJl
OSAqZDNkVGV4dHVyZSA9IE5VTEw7CisgICAgdW5zaWduZWQgaW50IHNlcmlhbCA9IDA7CisgICAg
Ym9vbCBmb3JjZVNldFRleHR1cmUgPSBmYWxzZTsKKworICAgIHVuc2lnbmVkIGludCAqYXBwbGll
ZFNlcmlhbHMgPSAodHlwZSA9PSBnbDo6U0FNUExFUl9QSVhFTCkgPyBtQ3VyUGl4ZWxUZXh0dXJl
U2VyaWFscyA6IG1DdXJWZXJ0ZXhUZXh0dXJlU2VyaWFsczsKKworICAgIGlmICh0ZXh0dXJlKQor
ICAgIHsKKyAgICAgICAgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UgKnRleFN0b3JhZ2UgPSB0ZXh0
dXJlLT5nZXROYXRpdmVUZXh0dXJlKCk7CisgICAgICAgIGlmICh0ZXhTdG9yYWdlKQorICAgICAg
ICB7CisgICAgICAgICAgICBUZXh0dXJlU3RvcmFnZTkgKnN0b3JhZ2U5ID0gVGV4dHVyZVN0b3Jh
Z2U5OjptYWtlVGV4dHVyZVN0b3JhZ2U5KHRleFN0b3JhZ2UtPmdldFN0b3JhZ2VJbnN0YW5jZSgp
KTsKKyAgICAgICAgICAgIGQzZFRleHR1cmUgPSBzdG9yYWdlOS0+Z2V0QmFzZVRleHR1cmUoKTsK
KyAgICAgICAgfQorICAgICAgICAvLyBJZiB3ZSBnZXQgTlVMTCBiYWNrIGZyb20gZ2V0QmFzZVRl
eHR1cmUgaGVyZSwgc29tZXRoaW5nIHdlbnQgd3JvbmcKKyAgICAgICAgLy8gaW4gdGhlIHRleHR1
cmUgY2xhc3MgYW5kIHdlJ3JlIHVuZXhwZWN0ZWRseSBtaXNzaW5nIHRoZSBkM2QgdGV4dHVyZQor
ICAgICAgICBBU1NFUlQoZDNkVGV4dHVyZSAhPSBOVUxMKTsKKworICAgICAgICBzZXJpYWwgPSB0
ZXh0dXJlLT5nZXRUZXh0dXJlU2VyaWFsKCk7CisgICAgICAgIGZvcmNlU2V0VGV4dHVyZSA9IHRl
eHR1cmUtPmhhc0RpcnR5SW1hZ2VzKCk7CisgICAgfQorCisgICAgaWYgKGZvcmNlU2V0VGV4dHVy
ZSB8fCBhcHBsaWVkU2VyaWFsc1tpbmRleF0gIT0gc2VyaWFsKQorICAgIHsKKyAgICAgICAgbURl
dmljZS0+U2V0VGV4dHVyZShkM2RTYW1wbGVyLCBkM2RUZXh0dXJlKTsKKyAgICB9CisKKyAgICBh
cHBsaWVkU2VyaWFsc1tpbmRleF0gPSBzZXJpYWw7Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjpzZXRS
YXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSAmcmFzdGVyU3RhdGUpCit7
CisgICAgYm9vbCByYXN0ZXJTdGF0ZUNoYW5nZWQgPSBtRm9yY2VTZXRSYXN0ZXJTdGF0ZSB8fCBt
ZW1jbXAoJnJhc3RlclN0YXRlLCAmbUN1clJhc3RlclN0YXRlLCBzaXplb2YoZ2w6OlJhc3Rlcml6
ZXJTdGF0ZSkpICE9IDA7CisKKyAgICBpZiAocmFzdGVyU3RhdGVDaGFuZ2VkKQorICAgIHsKKyAg
ICAgICAgLy8gU2V0IHRoZSBjdWxsIG1vZGUKKyAgICAgICAgaWYgKHJhc3RlclN0YXRlLmN1bGxG
YWNlKQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RS
U19DVUxMTU9ERSwgZ2xfZDNkOTo6Q29udmVydEN1bGxNb2RlKHJhc3RlclN0YXRlLmN1bGxNb2Rl
LCByYXN0ZXJTdGF0ZS5mcm9udEZhY2UpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NVTExNT0RF
LCBEM0RDVUxMX05PTkUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJhc3RlclN0YXRlLnBv
bHlnb25PZmZzZXRGaWxsKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobUN1ckRlcHRoU2l6
ZSA+IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfU0xPUEVTQ0FMRURFUFRIQklBUywgKihEV09SRCopJnJhc3RlclN0YXRlLnBv
bHlnb25PZmZzZXRGYWN0b3IpOworCisgICAgICAgICAgICAgICAgZmxvYXQgZGVwdGhCaWFzID0g
bGRleHAocmFzdGVyU3RhdGUucG9seWdvbk9mZnNldFVuaXRzLCAtc3RhdGljX2Nhc3Q8aW50Piht
Q3VyRGVwdGhTaXplKSk7CisgICAgICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUo
RDNEUlNfREVQVEhCSUFTLCAqKERXT1JEKikmZGVwdGhCaWFzKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNl
dFJlbmRlclN0YXRlKEQzRFJTX1NMT1BFU0NBTEVERVBUSEJJQVMsIDApOworICAgICAgICAgICAg
bURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVQVEhCSUFTLCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIG1DdXJSYXN0ZXJTdGF0ZSA9IHJhc3RlclN0YXRlOworICAgIH0KKworICAgIG1G
b3JjZVNldFJhc3RlclN0YXRlID0gZmFsc2U7Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjpzZXRCbGVu
ZFN0YXRlKGNvbnN0IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0YXRlLCBjb25zdCBnbDo6Q29sb3Ig
JmJsZW5kQ29sb3IsIHVuc2lnbmVkIGludCBzYW1wbGVNYXNrKQoreworICAgIGJvb2wgYmxlbmRT
dGF0ZUNoYW5nZWQgPSBtRm9yY2VTZXRCbGVuZFN0YXRlIHx8IG1lbWNtcCgmYmxlbmRTdGF0ZSwg
Jm1DdXJCbGVuZFN0YXRlLCBzaXplb2YoZ2w6OkJsZW5kU3RhdGUpKSAhPSAwOworICAgIGJvb2wg
YmxlbmRDb2xvckNoYW5nZWQgPSBtRm9yY2VTZXRCbGVuZFN0YXRlIHx8IG1lbWNtcCgmYmxlbmRD
b2xvciwgJm1DdXJCbGVuZENvbG9yLCBzaXplb2YoZ2w6OkNvbG9yKSkgIT0gMDsKKyAgICBib29s
IHNhbXBsZU1hc2tDaGFuZ2VkID0gbUZvcmNlU2V0QmxlbmRTdGF0ZSB8fCBzYW1wbGVNYXNrICE9
IG1DdXJTYW1wbGVNYXNrOworCisgICAgaWYgKGJsZW5kU3RhdGVDaGFuZ2VkIHx8IGJsZW5kQ29s
b3JDaGFuZ2VkKQorICAgIHsKKyAgICAgICAgaWYgKGJsZW5kU3RhdGUuYmxlbmQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0FMUEhBQkxFTkRF
TkFCTEUsIFRSVUUpOworCisgICAgICAgICAgICBpZiAoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJH
QiAhPSBHTF9DT05TVEFOVF9BTFBIQSAmJiBibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICE9IEdM
X09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSAmJgorICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUu
ZGVzdEJsZW5kUkdCICE9IEdMX0NPTlNUQU5UX0FMUEhBICYmIGJsZW5kU3RhdGUuZGVzdEJsZW5k
UkdCICE9IEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19CTEVOREZBQ1RPUiwgZ2xf
ZDNkOTo6Q29udmVydENvbG9yKGJsZW5kQ29sb3IpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19CTEVOREZBQ1RPUiwgRDNEQ09MT1JfUkdCQShnbDo6dW5vcm08OD4oYmxl
bmRDb2xvci5hbHBoYSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OnVub3JtPDg+KGJsZW5kQ29sb3Iu
YWxwaGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjp1bm9ybTw4PihibGVuZENvbG9yLmFscGhhKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oYmxlbmRDb2xvci5hbHBoYSkpKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1JD
QkxFTkQsIGdsX2QzZDk6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJH
QikpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVTVEJMRU5E
LCBnbF9kM2Q5OjpDb252ZXJ0QmxlbmRGdW5jKGJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCKSk7Cisg
ICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19CTEVORE9QLCBnbF9kM2Q5
OjpDb252ZXJ0QmxlbmRPcChibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IpKTsKKworICAgICAg
ICAgICAgaWYgKGJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0IgIT0gYmxlbmRTdGF0ZS5zb3VyY2VC
bGVuZEFscGhhIHx8CisgICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgIT0g
YmxlbmRTdGF0ZS5kZXN0QmxlbmRBbHBoYSB8fAorICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUu
YmxlbmRFcXVhdGlvblJHQiAhPSBibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25BbHBoYSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19T
RVBBUkFURUFMUEhBQkxFTkRFTkFCTEUsIFRSVUUpOworCisgICAgICAgICAgICAgICAgbURldmlj
ZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1JDQkxFTkRBTFBIQSwgZ2xfZDNkOTo6Q29udmVydEJs
ZW5kRnVuYyhibGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEpKTsKKyAgICAgICAgICAgICAgICBt
RGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19ERVNUQkxFTkRBTFBIQSwgZ2xfZDNkOTo6Q29u
dmVydEJsZW5kRnVuYyhibGVuZFN0YXRlLmRlc3RCbGVuZEFscGhhKSk7CisgICAgICAgICAgICAg
ICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQkxFTkRPUEFMUEhBLCBnbF9kM2Q5OjpD
b252ZXJ0QmxlbmRPcChibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25BbHBoYSkpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NFUEFSQVRFQUxQSEFCTEVOREVOQUJMRSwgRkFM
U0UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFCTEVOREVOQUJM
RSwgRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJsZW5kU3RhdGUuc2FtcGxlQWxw
aGFUb0NvdmVyYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBGSVhNRSgiU2FtcGxlIGFscGhh
IHRvIGNvdmVyYWdlIGlzIHVuaW1wbGVtZW50ZWQuIik7CisgICAgICAgIH0KKworICAgICAgICAv
LyBTZXQgdGhlIGNvbG9yIG1hc2sKKyAgICAgICAgYm9vbCB6ZXJvQ29sb3JNYXNrQWxsb3dlZCA9
IGdldEFkYXB0ZXJWZW5kb3IoKSAhPSBWRU5ET1JfSURfQU1EOworICAgICAgICAvLyBBcHBhcmVu
dGx5IHNvbWUgQVRJIGNhcmRzIGhhdmUgYSBidWcgd2hlcmUgYSBkcmF3IHdpdGggYSB6ZXJvIGNv
bG9yCisgICAgICAgIC8vIHdyaXRlIG1hc2sgY2FuIGNhdXNlIGxhdGVyIGRyYXdzIHRvIGhhdmUg
aW5jb3JyZWN0IHJlc3VsdHMuIEluc3RlYWQsCisgICAgICAgIC8vIHNldCBhIG5vbnplcm8gY29s
b3Igd3JpdGUgbWFzayBidXQgbW9kaWZ5IHRoZSBibGVuZCBzdGF0ZSBzbyB0aGF0IG5vCisgICAg
ICAgIC8vIGRyYXdpbmcgaXMgZG9uZS4KKyAgICAgICAgLy8gaHR0cDovL2NvZGUuZ29vZ2xlLmNv
bS9wL2FuZ2xlcHJvamVjdC9pc3N1ZXMvZGV0YWlsP2lkPTE2OQorCisgICAgICAgIERXT1JEIGNv
bG9yTWFzayA9IGdsX2QzZDk6OkNvbnZlcnRDb2xvck1hc2soYmxlbmRTdGF0ZS5jb2xvck1hc2tS
ZWQsIGJsZW5kU3RhdGUuY29sb3JNYXNrR3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlLCBibGVu
ZFN0YXRlLmNvbG9yTWFza0FscGhhKTsKKyAgICAgICAgaWYgKGNvbG9yTWFzayA9PSAwICYmICF6
ZXJvQ29sb3JNYXNrQWxsb3dlZCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRW5hYmxlIGdy
ZWVuIGNoYW5uZWwsIGJ1dCBzZXQgYmxlbmRpbmcgc28gbm90aGluZyB3aWxsIGJlIGRyYXduLgor
ICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklURUVOQUJM
RSwgRDNEQ09MT1JXUklURUVOQUJMRV9HUkVFTik7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBUUlVFKTsKKworICAgICAgICAgICAg
bURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1JDQkxFTkQsIEQzREJMRU5EX1pFUk8pOwor
ICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVTVEJMRU5ELCBEM0RC
TEVORF9PTkUpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQkxF
TkRPUCwgRDNEQkxFTkRPUF9BREQpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAg
eworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklURUVO
QUJMRSwgY29sb3JNYXNrKTsKKyAgICAgICAgfQorCisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRl
clN0YXRlKEQzRFJTX0RJVEhFUkVOQUJMRSwgYmxlbmRTdGF0ZS5kaXRoZXIgPyBUUlVFIDogRkFM
U0UpOworCisgICAgICAgIG1DdXJCbGVuZFN0YXRlID0gYmxlbmRTdGF0ZTsKKyAgICAgICAgbUN1
ckJsZW5kQ29sb3IgPSBibGVuZENvbG9yOworICAgIH0KKworICAgIGlmIChzYW1wbGVNYXNrQ2hh
bmdlZCkKKyAgICB7CisgICAgICAgIC8vIFNldCB0aGUgbXVsdGlzYW1wbGUgbWFzaworICAgICAg
ICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19NVUxUSVNBTVBMRUFOVElBTElBUywgVFJV
RSk7CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX01VTFRJU0FNUExFTUFT
Sywgc3RhdGljX2Nhc3Q8RFdPUkQ+KHNhbXBsZU1hc2spKTsKKworICAgICAgICBtQ3VyU2FtcGxl
TWFzayA9IHNhbXBsZU1hc2s7CisgICAgfQorCisgICAgbUZvcmNlU2V0QmxlbmRTdGF0ZSA9IGZh
bHNlOworfQorCit2b2lkIFJlbmRlcmVyOTo6c2V0RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgZ2w6
OkRlcHRoU3RlbmNpbFN0YXRlICZkZXB0aFN0ZW5jaWxTdGF0ZSwgaW50IHN0ZW5jaWxSZWYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0ZW5jaWxCYWNrUmVmLCBi
b29sIGZyb250RmFjZUNDVykKK3sKKyAgICBib29sIGRlcHRoU3RlbmNpbFN0YXRlQ2hhbmdlZCA9
IG1Gb3JjZVNldERlcHRoU3RlbmNpbFN0YXRlIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZW1jbXAoJmRlcHRoU3RlbmNpbFN0YXRlLCAmbUN1ckRlcHRoU3RlbmNpbFN0
YXRlLCBzaXplb2YoZ2w6OkRlcHRoU3RlbmNpbFN0YXRlKSkgIT0gMDsKKyAgICBib29sIHN0ZW5j
aWxSZWZDaGFuZ2VkID0gbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgfHwgc3RlbmNpbFJlZiAh
PSBtQ3VyU3RlbmNpbFJlZiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVuY2ls
QmFja1JlZiAhPSBtQ3VyU3RlbmNpbEJhY2tSZWY7CisgICAgYm9vbCBmcm9udEZhY2VDQ1dDaGFu
Z2VkID0gbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgfHwgZnJvbnRGYWNlQ0NXICE9IG1DdXJG
cm9udEZhY2VDQ1c7CisKKyAgICBpZiAoZGVwdGhTdGVuY2lsU3RhdGVDaGFuZ2VkKQorICAgIHsK
KyAgICAgICAgaWYgKGRlcHRoU3RlbmNpbFN0YXRlLmRlcHRoVGVzdCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkVOQUJMRSwgRDNEWkJfVFJV
RSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aRlVOQywgZ2xf
ZDNkOTo6Q29udmVydENvbXBhcmlzb24oZGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhGdW5jKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19aRU5BQkxFLCBEM0RaQl9GQUxTRSk7CisgICAgICAgIH0KKwor
ICAgICAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUgPSBkZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICB9
CisKKyAgICBpZiAoZGVwdGhTdGVuY2lsU3RhdGVDaGFuZ2VkIHx8IHN0ZW5jaWxSZWZDaGFuZ2Vk
IHx8IGZyb250RmFjZUNDV0NoYW5nZWQpCisgICAgeworICAgICAgICBpZiAoZGVwdGhTdGVuY2ls
U3RhdGUuc3RlbmNpbFRlc3QgJiYgbUN1clN0ZW5jaWxTaXplID4gMCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTEVOQUJMRSwgVFJV
RSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19UV09TSURFRFNU
RU5DSUxNT0RFLCBUUlVFKTsKKworICAgICAgICAgICAgLy8gRklYTUU6IFVuc3VwcG9ydGVkIGJ5
IEQzRDkKKyAgICAgICAgICAgIGNvbnN0IEQzRFJFTkRFUlNUQVRFVFlQRSBEM0RSU19DQ1dfU1RF
TkNJTFJFRiA9IEQzRFJTX1NURU5DSUxSRUY7CisgICAgICAgICAgICBjb25zdCBEM0RSRU5ERVJT
VEFURVRZUEUgRDNEUlNfQ0NXX1NURU5DSUxNQVNLID0gRDNEUlNfU1RFTkNJTE1BU0s7CisgICAg
ICAgICAgICBjb25zdCBEM0RSRU5ERVJTVEFURVRZUEUgRDNEUlNfQ0NXX1NURU5DSUxXUklURU1B
U0sgPSBEM0RSU19TVEVOQ0lMV1JJVEVNQVNLOworICAgICAgICAgICAgaWYgKGRlcHRoU3RlbmNp
bFN0YXRlLnN0ZW5jaWxXcml0ZW1hc2sgIT0gZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tX
cml0ZW1hc2sgfHwKKyAgICAgICAgICAgICAgICBzdGVuY2lsUmVmICE9IHN0ZW5jaWxCYWNrUmVm
IHx8CisgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbE1hc2sgIT0gZGVw
dGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tNYXNrKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIEVSUigiU2VwYXJhdGUgZnJvbnQvYmFjayBzdGVuY2lsIHdyaXRlbWFza3MsIHJlZmVy
ZW5jZSB2YWx1ZXMsIG9yIHN0ZW5jaWwgbWFzayB2YWx1ZXMgYXJlIGludmFsaWQgdW5kZXIgV2Vi
R0wuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGdldCB0aGUgbWF4aW11bSBz
aXplIG9mIHRoZSBzdGVuY2lsIHJlZgorICAgICAgICAgICAgdW5zaWduZWQgaW50IG1heFN0ZW5j
aWwgPSAoMSA8PCBtQ3VyU3RlbmNpbFNpemUpIC0gMTsKKworICAgICAgICAgICAgbURldmljZS0+
U2V0UmVuZGVyU3RhdGUoZnJvbnRGYWNlQ0NXID8gRDNEUlNfU1RFTkNJTFdSSVRFTUFTSyA6IEQz
RFJTX0NDV19TVEVOQ0lMV1JJVEVNQVNLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFdyaXRlbWFzayk7CisgICAgICAgICAgICBt
RGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMRlVOQyA6
IEQzRFJTX0NDV19TVEVOQ0lMRlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsX2QzZDk6OkNvbnZlcnRDb21wYXJpc29uKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxG
dW5jKSk7CisKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKGZyb250RmFjZUND
VyA/IEQzRFJTX1NURU5DSUxSRUYgOiBEM0RSU19DQ1dfU1RFTkNJTFJFRiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzdGVuY2lsUmVmIDwgKGludCltYXhTdGVuY2lsKSA/
IHN0ZW5jaWxSZWYgOiBtYXhTdGVuY2lsKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRl
clN0YXRlKGZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxNQVNLIDogRDNEUlNfQ0NXX1NURU5D
SUxNQVNLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2ls
U3RhdGUuc3RlbmNpbE1hc2spOworCisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMRkFJTCA6IEQzRFJTX0NDV19TVEVOQ0lMRkFJ
TCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkNvbnZlcnRT
dGVuY2lsT3AoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEZhaWwpKTsKKyAgICAgICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKGZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxaRkFJTCA6
IEQzRFJTX0NDV19TVEVOQ0lMWkZBSUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbF9kM2Q5OjpDb252ZXJ0U3RlbmNpbE9wKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxQ
YXNzRGVwdGhGYWlsKSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShmcm9u
dEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMUEFTUyA6IEQzRFJTX0NDV19TVEVOQ0lMUEFTUywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkNvbnZlcnRTdGVuY2ls
T3AoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFBhc3NEZXB0aFBhc3MpKTsKKworICAgICAgICAg
ICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoIWZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxX
UklURU1BU0sgOiBEM0RSU19DQ1dfU1RFTkNJTFdSSVRFTUFTSywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrV3JpdGVtYXNr
KTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKCFmcm9udEZhY2VDQ1cgPyBE
M0RSU19TVEVOQ0lMRlVOQyA6IEQzRFJTX0NDV19TVEVOQ0lMRlVOQywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkNvbnZlcnRDb21wYXJpc29uKGRlcHRoU3Rl
bmNpbFN0YXRlLnN0ZW5jaWxCYWNrRnVuYykpOworCisgICAgICAgICAgICBtRGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZSghZnJvbnRGYWNlQ0NXID8gRDNEUlNfU1RFTkNJTFJFRiA6IEQzRFJTX0NDV19T
VEVOQ0lMUkVGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0ZW5jaWxC
YWNrUmVmIDwgKGludCltYXhTdGVuY2lsKSA/IHN0ZW5jaWxCYWNrUmVmIDogbWF4U3RlbmNpbCk7
CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZSghZnJvbnRGYWNlQ0NXID8gRDNE
UlNfU1RFTkNJTE1BU0sgOiBEM0RSU19DQ1dfU1RFTkNJTE1BU0ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja01hc2spOwor
CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZSghZnJvbnRGYWNlQ0NXID8gRDNE
UlNfU1RFTkNJTEZBSUwgOiBEM0RSU19DQ1dfU1RFTkNJTEZBSUwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbF9kM2Q5OjpDb252ZXJ0U3RlbmNpbE9wKGRlcHRoU3RlbmNp
bFN0YXRlLnN0ZW5jaWxCYWNrRmFpbCkpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUoIWZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxaRkFJTCA6IEQzRFJTX0NDV19TVEVO
Q0lMWkZBSUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kM2Q5OjpD
b252ZXJ0U3RlbmNpbE9wKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRoRmFp
bCkpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoIWZyb250RmFjZUNDVyA/
IEQzRFJTX1NURU5DSUxQQVNTIDogRDNEUlNfQ0NXX1NURU5DSUxQQVNTLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2xfZDNkOTo6Q29udmVydFN0ZW5jaWxPcChkZXB0aFN0
ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MpKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQz
RFJTX1NURU5DSUxFTkFCTEUsIEZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIG1EZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX1pXUklURUVOQUJMRSwgZGVwdGhTdGVuY2lsU3RhdGUuZGVw
dGhNYXNrID8gVFJVRSA6IEZBTFNFKTsKKworICAgICAgICBtQ3VyU3RlbmNpbFJlZiA9IHN0ZW5j
aWxSZWY7CisgICAgICAgIG1DdXJTdGVuY2lsQmFja1JlZiA9IHN0ZW5jaWxCYWNrUmVmOworICAg
ICAgICBtQ3VyRnJvbnRGYWNlQ0NXID0gZnJvbnRGYWNlQ0NXOworICAgIH0KKworICAgIG1Gb3Jj
ZVNldERlcHRoU3RlbmNpbFN0YXRlID0gZmFsc2U7Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjpzZXRT
Y2lzc29yUmVjdGFuZ2xlKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNjaXNzb3IsIGJvb2wgZW5hYmxl
ZCkKK3sKKyAgICBib29sIHNjaXNzb3JDaGFuZ2VkID0gbUZvcmNlU2V0U2Npc3NvciB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZW1jbXAoJnNjaXNzb3IsICZtQ3VyU2Npc3Nvciwgc2l6
ZW9mKGdsOjpSZWN0YW5nbGUpKSAhPSAwIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
YWJsZWQgIT0gbVNjaXNzb3JFbmFibGVkOworCisgICAgaWYgKHNjaXNzb3JDaGFuZ2VkKQorICAg
IHsKKyAgICAgICAgaWYgKGVuYWJsZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJFQ1QgcmVj
dDsKKyAgICAgICAgICAgIHJlY3QubGVmdCA9IGdsOjpjbGFtcChzY2lzc29yLngsIDAsIHN0YXRp
Y19jYXN0PGludD4obVJlbmRlclRhcmdldERlc2Mud2lkdGgpKTsKKyAgICAgICAgICAgIHJlY3Qu
dG9wID0gZ2w6OmNsYW1wKHNjaXNzb3IueSwgMCwgc3RhdGljX2Nhc3Q8aW50PihtUmVuZGVyVGFy
Z2V0RGVzYy5oZWlnaHQpKTsKKyAgICAgICAgICAgIHJlY3QucmlnaHQgPSBnbDo6Y2xhbXAoc2Np
c3Nvci54ICsgc2Npc3Nvci53aWR0aCwgMCwgc3RhdGljX2Nhc3Q8aW50PihtUmVuZGVyVGFyZ2V0
RGVzYy53aWR0aCkpOworICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBnbDo6Y2xhbXAoc2Npc3Nv
ci55ICsgc2Npc3Nvci5oZWlnaHQsIDAsIHN0YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldERl
c2MuaGVpZ2h0KSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRTY2lzc29yUmVjdCgmcmVjdCk7
CisgICAgICAgIH0KKworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TQ0lT
U09SVEVTVEVOQUJMRSwgZW5hYmxlZCA/IFRSVUUgOiBGQUxTRSk7CisKKyAgICAgICAgbVNjaXNz
b3JFbmFibGVkID0gZW5hYmxlZDsKKyAgICAgICAgbUN1clNjaXNzb3IgPSBzY2lzc29yOworICAg
IH0KKworICAgIG1Gb3JjZVNldFNjaXNzb3IgPSBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJlcjk6
OnNldFZpZXdwb3J0KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnZpZXdwb3J0LCBmbG9hdCB6TmVhciwg
ZmxvYXQgekZhciwgR0xlbnVtIGRyYXdNb2RlLCBHTGVudW0gZnJvbnRGYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlVmlld3BvcnQpCit7CisgICAgZ2w6OlJlY3Rh
bmdsZSBhY3R1YWxWaWV3cG9ydCA9IHZpZXdwb3J0OworICAgIGZsb2F0IGFjdHVhbFpOZWFyID0g
Z2w6OmNsYW1wMDEoek5lYXIpOworICAgIGZsb2F0IGFjdHVhbFpGYXIgPSBnbDo6Y2xhbXAwMSh6
RmFyKTsKKyAgICBpZiAoaWdub3JlVmlld3BvcnQpCisgICAgeworICAgICAgICBhY3R1YWxWaWV3
cG9ydC54ID0gMDsKKyAgICAgICAgYWN0dWFsVmlld3BvcnQueSA9IDA7CisgICAgICAgIGFjdHVh
bFZpZXdwb3J0LndpZHRoID0gbVJlbmRlclRhcmdldERlc2Mud2lkdGg7CisgICAgICAgIGFjdHVh
bFZpZXdwb3J0LmhlaWdodCA9IG1SZW5kZXJUYXJnZXREZXNjLmhlaWdodDsKKyAgICAgICAgYWN0
dWFsWk5lYXIgPSAwLjBmOworICAgICAgICBhY3R1YWxaRmFyID0gMS4wZjsKKyAgICB9CisKKyAg
ICBEM0RWSUVXUE9SVDkgZHhWaWV3cG9ydDsKKyAgICBkeFZpZXdwb3J0LlggPSBnbDo6Y2xhbXAo
YWN0dWFsVmlld3BvcnQueCwgMCwgc3RhdGljX2Nhc3Q8aW50PihtUmVuZGVyVGFyZ2V0RGVzYy53
aWR0aCkpOworICAgIGR4Vmlld3BvcnQuWSA9IGdsOjpjbGFtcChhY3R1YWxWaWV3cG9ydC55LCAw
LCBzdGF0aWNfY2FzdDxpbnQ+KG1SZW5kZXJUYXJnZXREZXNjLmhlaWdodCkpOworICAgIGR4Vmll
d3BvcnQuV2lkdGggPSBnbDo6Y2xhbXAoYWN0dWFsVmlld3BvcnQud2lkdGgsIDAsIHN0YXRpY19j
YXN0PGludD4obVJlbmRlclRhcmdldERlc2Mud2lkdGgpIC0gc3RhdGljX2Nhc3Q8aW50PihkeFZp
ZXdwb3J0LlgpKTsKKyAgICBkeFZpZXdwb3J0LkhlaWdodCA9IGdsOjpjbGFtcChhY3R1YWxWaWV3
cG9ydC5oZWlnaHQsIDAsIHN0YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldERlc2MuaGVpZ2h0
KSAtIHN0YXRpY19jYXN0PGludD4oZHhWaWV3cG9ydC5ZKSk7CisgICAgZHhWaWV3cG9ydC5NaW5a
ID0gYWN0dWFsWk5lYXI7CisgICAgZHhWaWV3cG9ydC5NYXhaID0gYWN0dWFsWkZhcjsKKworICAg
IGlmIChkeFZpZXdwb3J0LldpZHRoIDw9IDAgfHwgZHhWaWV3cG9ydC5IZWlnaHQgPD0gMCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsgICAvLyBOb3RoaW5nIHRvIHJlbmRlcgorICAgIH0K
KworICAgIGJvb2wgdmlld3BvcnRDaGFuZ2VkID0gbUZvcmNlU2V0Vmlld3BvcnQgfHwgbWVtY21w
KCZhY3R1YWxWaWV3cG9ydCwgJm1DdXJWaWV3cG9ydCwgc2l6ZW9mKGdsOjpSZWN0YW5nbGUpKSAh
PSAwIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxaTmVhciAhPSBtQ3VyTmVh
ciB8fCBhY3R1YWxaRmFyICE9IG1DdXJGYXI7CisgICAgaWYgKHZpZXdwb3J0Q2hhbmdlZCkKKyAg
ICB7CisgICAgICAgIG1EZXZpY2UtPlNldFZpZXdwb3J0KCZkeFZpZXdwb3J0KTsKKworICAgICAg
ICBtQ3VyVmlld3BvcnQgPSBhY3R1YWxWaWV3cG9ydDsKKyAgICAgICAgbUN1ck5lYXIgPSBhY3R1
YWxaTmVhcjsKKyAgICAgICAgbUN1ckZhciA9IGFjdHVhbFpGYXI7CisKKyAgICAgICAgZHhfVmVy
dGV4Q29uc3RhbnRzIHZjID0gezB9OworICAgICAgICBkeF9QaXhlbENvbnN0YW50cyBwYyA9IHsw
fTsKKworICAgICAgICB2Yy52aWV3QWRqdXN0WzBdID0gKGZsb2F0KSgoYWN0dWFsVmlld3BvcnQu
d2lkdGggLSAoaW50KWR4Vmlld3BvcnQuV2lkdGgpICsgMiAqIChhY3R1YWxWaWV3cG9ydC54IC0g
KGludClkeFZpZXdwb3J0LlgpIC0gMSkgLyBkeFZpZXdwb3J0LldpZHRoOworICAgICAgICB2Yy52
aWV3QWRqdXN0WzFdID0gKGZsb2F0KSgoYWN0dWFsVmlld3BvcnQuaGVpZ2h0IC0gKGludClkeFZp
ZXdwb3J0LkhlaWdodCkgKyAyICogKGFjdHVhbFZpZXdwb3J0LnkgLSAoaW50KWR4Vmlld3BvcnQu
WSkgLSAxKSAvIGR4Vmlld3BvcnQuSGVpZ2h0OworICAgICAgICB2Yy52aWV3QWRqdXN0WzJdID0g
KGZsb2F0KWFjdHVhbFZpZXdwb3J0LndpZHRoIC8gZHhWaWV3cG9ydC5XaWR0aDsKKyAgICAgICAg
dmMudmlld0FkanVzdFszXSA9IChmbG9hdClhY3R1YWxWaWV3cG9ydC5oZWlnaHQgLyBkeFZpZXdw
b3J0LkhlaWdodDsKKworICAgICAgICBwYy52aWV3Q29vcmRzWzBdID0gYWN0dWFsVmlld3BvcnQu
d2lkdGggICogMC41ZjsKKyAgICAgICAgcGMudmlld0Nvb3Jkc1sxXSA9IGFjdHVhbFZpZXdwb3J0
LmhlaWdodCAqIDAuNWY7CisgICAgICAgIHBjLnZpZXdDb29yZHNbMl0gPSBhY3R1YWxWaWV3cG9y
dC54ICsgKGFjdHVhbFZpZXdwb3J0LndpZHRoICAqIDAuNWYpOworICAgICAgICBwYy52aWV3Q29v
cmRzWzNdID0gYWN0dWFsVmlld3BvcnQueSArIChhY3R1YWxWaWV3cG9ydC5oZWlnaHQgKiAwLjVm
KTsKKworICAgICAgICBwYy5kZXB0aEZyb250WzBdID0gKGFjdHVhbFpGYXIgLSBhY3R1YWxaTmVh
cikgKiAwLjVmOworICAgICAgICBwYy5kZXB0aEZyb250WzFdID0gKGFjdHVhbFpOZWFyICsgYWN0
dWFsWkZhcikgKiAwLjVmOworICAgICAgICBwYy5kZXB0aEZyb250WzJdID0gIWdsOjpJc1RyaWFu
Z2xlTW9kZShkcmF3TW9kZSkgPyAwLjBmIDogKGZyb250RmFjZSA9PSBHTF9DQ1cgPyAxLjBmIDog
LTEuMGYpOzsKKworICAgICAgICB2Yy5kZXB0aFJhbmdlWzBdID0gYWN0dWFsWk5lYXI7CisgICAg
ICAgIHZjLmRlcHRoUmFuZ2VbMV0gPSBhY3R1YWxaRmFyOworICAgICAgICB2Yy5kZXB0aFJhbmdl
WzJdID0gYWN0dWFsWkZhciAtIGFjdHVhbFpOZWFyOworCisgICAgICAgIHBjLmRlcHRoUmFuZ2Vb
MF0gPSBhY3R1YWxaTmVhcjsKKyAgICAgICAgcGMuZGVwdGhSYW5nZVsxXSA9IGFjdHVhbFpGYXI7
CisgICAgICAgIHBjLmRlcHRoUmFuZ2VbMl0gPSBhY3R1YWxaRmFyIC0gYWN0dWFsWk5lYXI7CisK
KyAgICAgICAgaWYgKG1lbWNtcCgmdmMsICZtVmVydGV4Q29uc3RhbnRzLCBzaXplb2YoZHhfVmVy
dGV4Q29uc3RhbnRzKSkgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgbVZlcnRleENvbnN0
YW50cyA9IHZjOworICAgICAgICAgICAgbUR4VW5pZm9ybXNEaXJ0eSA9IHRydWU7CisgICAgICAg
IH0KKworICAgICAgICBpZiAobWVtY21wKCZwYywgJm1QaXhlbENvbnN0YW50cywgc2l6ZW9mKGR4
X1BpeGVsQ29uc3RhbnRzKSkgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgbVBpeGVsQ29u
c3RhbnRzID0gcGM7CisgICAgICAgICAgICBtRHhVbmlmb3Jtc0RpcnR5ID0gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIG1Gb3JjZVNldFZpZXdwb3J0ID0gZmFsc2U7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgUmVuZGVyZXI5OjphcHBseVByaW1pdGl2ZVR5cGUoR0xlbnVtIG1v
ZGUsIEdMc2l6ZWkgY291bnQpCit7CisgICAgc3dpdGNoIChtb2RlKQorICAgIHsKKyAgICAgIGNh
c2UgR0xfUE9JTlRTOgorICAgICAgICBtUHJpbWl0aXZlVHlwZSA9IEQzRFBUX1BPSU5UTElTVDsK
KyAgICAgICAgbVByaW1pdGl2ZUNvdW50ID0gY291bnQ7CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9MSU5FUzoKKyAgICAgICAgbVByaW1pdGl2ZVR5cGUgPSBEM0RQVF9MSU5FTElTVDsK
KyAgICAgICAgbVByaW1pdGl2ZUNvdW50ID0gY291bnQgLyAyOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfTElORV9MT09QOgorICAgICAgICBtUHJpbWl0aXZlVHlwZSA9IEQzRFBUX0xJ
TkVTVFJJUDsKKyAgICAgICAgbVByaW1pdGl2ZUNvdW50ID0gY291bnQgLSAxOyAgIC8vIEQzRCBk
b2Vzbid0IHN1cHBvcnQgbGluZSBsb29wcywgc28gd2UgZHJhdyB0aGUgbGFzdCBsaW5lIHNlcGFy
YXRlbHkKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJTkVfU1RSSVA6CisgICAgICAg
IG1QcmltaXRpdmVUeXBlID0gRDNEUFRfTElORVNUUklQOworICAgICAgICBtUHJpbWl0aXZlQ291
bnQgPSBjb3VudCAtIDE7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9UUklBTkdMRVM6
CisgICAgICAgIG1QcmltaXRpdmVUeXBlID0gRDNEUFRfVFJJQU5HTEVMSVNUOworICAgICAgICBt
UHJpbWl0aXZlQ291bnQgPSBjb3VudCAvIDM7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9UUklBTkdMRV9TVFJJUDoKKyAgICAgICAgbVByaW1pdGl2ZVR5cGUgPSBEM0RQVF9UUklBTkdM
RVNUUklQOworICAgICAgICBtUHJpbWl0aXZlQ291bnQgPSBjb3VudCAtIDI7CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9UUklBTkdMRV9GQU46CisgICAgICAgIG1QcmltaXRpdmVUeXBl
ID0gRDNEUFRfVFJJQU5HTEVGQU47CisgICAgICAgIG1QcmltaXRpdmVDb3VudCA9IGNvdW50IC0g
MjsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiBtUHJpbWl0
aXZlQ291bnQgPiAwOworfQorCisKK2dsOjpSZW5kZXJidWZmZXIgKlJlbmRlcmVyOTo6Z2V0TnVs
bENvbG9yYnVmZmVyKGdsOjpSZW5kZXJidWZmZXIgKmRlcHRoYnVmZmVyKQoreworICAgIGlmICgh
ZGVwdGhidWZmZXIpCisgICAgeworICAgICAgICBFUlIoIlVuZXhwZWN0ZWQgbnVsbCBkZXB0aGJ1
ZmZlciBmb3IgZGVwdGgtb25seSBGQk8uIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0K
KworICAgIEdMc2l6ZWkgd2lkdGggID0gZGVwdGhidWZmZXItPmdldFdpZHRoKCk7CisgICAgR0xz
aXplaSBoZWlnaHQgPSBkZXB0aGJ1ZmZlci0+Z2V0SGVpZ2h0KCk7CisKKyAgICAvLyBzZWFyY2gg
Y2FjaGVkIG51bGxjb2xvcmJ1ZmZlcnMKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9OVUxM
X0NPTE9SQlVGRkVSX0NBQ0hFX0VOVFJJRVM7IGkrKykKKyAgICB7CisgICAgICAgIGlmIChtTnVs
bENvbG9yYnVmZmVyQ2FjaGVbaV0uYnVmZmVyICE9IE5VTEwgJiYKKyAgICAgICAgICAgIG1OdWxs
Q29sb3JidWZmZXJDYWNoZVtpXS53aWR0aCA9PSB3aWR0aCAmJgorICAgICAgICAgICAgbU51bGxD
b2xvcmJ1ZmZlckNhY2hlW2ldLmhlaWdodCA9PSBoZWlnaHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1OdWxsQ29sb3JidWZmZXJDYWNoZVtpXS5scnVDb3VudCA9ICsrbU1heE51bGxDb2xvcmJ1
ZmZlckxSVTsKKyAgICAgICAgICAgIHJldHVybiBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uYnVm
ZmVyOworICAgICAgICB9CisgICAgfQorCisgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqbnVsbGJ1ZmZl
ciA9IG5ldyBnbDo6UmVuZGVyYnVmZmVyKHRoaXMsIDAsIG5ldyBnbDo6Q29sb3JidWZmZXIodGhp
cywgd2lkdGgsIGhlaWdodCwgR0xfTk9ORSwgMCkpOworCisgICAgLy8gYWRkIG51bGxidWZmZXIg
dG8gdGhlIGNhY2hlCisgICAgTnVsbENvbG9yYnVmZmVyQ2FjaGVFbnRyeSAqb2xkZXN0ID0gJm1O
dWxsQ29sb3JidWZmZXJDYWNoZVswXTsKKyAgICBmb3IgKGludCBpID0gMTsgaSA8IE5VTV9OVUxM
X0NPTE9SQlVGRkVSX0NBQ0hFX0VOVFJJRVM7IGkrKykKKyAgICB7CisgICAgICAgIGlmIChtTnVs
bENvbG9yYnVmZmVyQ2FjaGVbaV0ubHJ1Q291bnQgPCBvbGRlc3QtPmxydUNvdW50KQorICAgICAg
ICB7CisgICAgICAgICAgICBvbGRlc3QgPSAmbU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ldOworICAg
ICAgICB9CisgICAgfQorCisgICAgZGVsZXRlIG9sZGVzdC0+YnVmZmVyOworICAgIG9sZGVzdC0+
YnVmZmVyID0gbnVsbGJ1ZmZlcjsKKyAgICBvbGRlc3QtPmxydUNvdW50ID0gKyttTWF4TnVsbENv
bG9yYnVmZmVyTFJVOworICAgIG9sZGVzdC0+d2lkdGggPSB3aWR0aDsKKyAgICBvbGRlc3QtPmhl
aWdodCA9IGhlaWdodDsKKworICAgIHJldHVybiBudWxsYnVmZmVyOworfQorCitib29sIFJlbmRl
cmVyOTo6YXBwbHlSZW5kZXJUYXJnZXQoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlcikKK3sK
KyAgICAvLyBpZiB0aGVyZSBpcyBubyBjb2xvciBhdHRhY2htZW50IHdlIG11c3Qgc3ludGhlc2l6
ZSBhIE5VTEwgY29sb3JhdHRhY2htZW50CisgICAgLy8gdG8ga2VlcCB0aGUgRDNEIHJ1bnRpbWUg
aGFwcHkuICBUaGlzIHNob3VsZCBvbmx5IGJlIHBvc3NpYmxlIGlmIGRlcHRoIHRleHR1cmluZy4K
KyAgICBnbDo6UmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXJPYmplY3QgPSBOVUxMOworICAgIGlm
IChmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXJUeXBlKDApICE9IEdMX05PTkUpCisgICAgewor
ICAgICAgICByZW5kZXJidWZmZXJPYmplY3QgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIo
MCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJlbmRlcmJ1ZmZlck9iamVjdCA9
IGdldE51bGxDb2xvcmJ1ZmZlcihmcmFtZWJ1ZmZlci0+Z2V0RGVwdGhidWZmZXIoKSk7CisgICAg
fQorICAgIGlmICghcmVuZGVyYnVmZmVyT2JqZWN0KQorICAgIHsKKyAgICAgICAgRVJSKCJ1bmFi
bGUgdG8gbG9jYXRlIHJlbmRlcmJ1ZmZlciBmb3IgRkJPLiIpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgYm9vbCByZW5kZXJUYXJnZXRDaGFuZ2VkID0gZmFsc2U7CisgICAg
dW5zaWduZWQgaW50IHJlbmRlclRhcmdldFNlcmlhbCA9IHJlbmRlcmJ1ZmZlck9iamVjdC0+Z2V0
U2VyaWFsKCk7CisgICAgaWYgKHJlbmRlclRhcmdldFNlcmlhbCAhPSBtQXBwbGllZFJlbmRlclRh
cmdldFNlcmlhbCkKKyAgICB7CisgICAgICAgIC8vIEFwcGx5IHRoZSByZW5kZXIgdGFyZ2V0IG9u
IHRoZSBkZXZpY2UKKyAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRhcmdldFN1cmZh
Y2UgPSBOVUxMOworCisgICAgICAgIFJlbmRlclRhcmdldCAqcmVuZGVyVGFyZ2V0ID0gcmVuZGVy
YnVmZmVyT2JqZWN0LT5nZXRSZW5kZXJUYXJnZXQoKTsKKyAgICAgICAgaWYgKHJlbmRlclRhcmdl
dCkKKyAgICAgICAgeworICAgICAgICAgICAgcmVuZGVyVGFyZ2V0U3VyZmFjZSA9IFJlbmRlclRh
cmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5KHJlbmRlclRhcmdldCktPmdldFN1cmZhY2UoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghcmVuZGVyVGFyZ2V0U3VyZmFjZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgRVJSKCJyZW5kZXIgdGFyZ2V0IHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwu
Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgLy8gQ29udGV4dCBtdXN0IGJlIGxvc3QK
KyAgICAgICAgfQorCisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclRhcmdldCgwLCByZW5kZXJU
YXJnZXRTdXJmYWNlKTsKKyAgICAgICAgcmVuZGVyVGFyZ2V0U3VyZmFjZS0+UmVsZWFzZSgpOwor
CisgICAgICAgIG1BcHBsaWVkUmVuZGVyVGFyZ2V0U2VyaWFsID0gcmVuZGVyVGFyZ2V0U2VyaWFs
OworICAgICAgICByZW5kZXJUYXJnZXRDaGFuZ2VkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBnbDo6
UmVuZGVyYnVmZmVyICpkZXB0aFN0ZW5jaWwgPSBOVUxMOworICAgIHVuc2lnbmVkIGludCBkZXB0
aGJ1ZmZlclNlcmlhbCA9IDA7CisgICAgdW5zaWduZWQgaW50IHN0ZW5jaWxidWZmZXJTZXJpYWwg
PSAwOworICAgIGlmIChmcmFtZWJ1ZmZlci0+Z2V0RGVwdGhidWZmZXJUeXBlKCkgIT0gR0xfTk9O
RSkKKyAgICB7CisgICAgICAgIGRlcHRoU3RlbmNpbCA9IGZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1
ZmZlcigpOworICAgICAgICBpZiAoIWRlcHRoU3RlbmNpbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgRVJSKCJEZXB0aCBzdGVuY2lsIHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBkZXB0aGJ1ZmZlclNl
cmlhbCA9IGRlcHRoU3RlbmNpbC0+Z2V0U2VyaWFsKCk7CisgICAgfQorICAgIGVsc2UgaWYgKGZy
YW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyVHlwZSgpICE9IEdMX05PTkUpCisgICAgeworICAg
ICAgICBkZXB0aFN0ZW5jaWwgPSBmcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlcigpOworICAg
ICAgICBpZiAoIWRlcHRoU3RlbmNpbCkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJEZXB0
aCBzdGVuY2lsIHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBzdGVuY2lsYnVmZmVyU2VyaWFsID0gZGVw
dGhTdGVuY2lsLT5nZXRTZXJpYWwoKTsKKyAgICB9CisKKyAgICBpZiAoZGVwdGhidWZmZXJTZXJp
YWwgIT0gbUFwcGxpZWREZXB0aGJ1ZmZlclNlcmlhbCB8fAorICAgICAgICBzdGVuY2lsYnVmZmVy
U2VyaWFsICE9IG1BcHBsaWVkU3RlbmNpbGJ1ZmZlclNlcmlhbCB8fAorICAgICAgICAhbURlcHRo
U3RlbmNpbEluaXRpYWxpemVkKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGRlcHRoU2l6
ZSA9IDA7CisgICAgICAgIHVuc2lnbmVkIGludCBzdGVuY2lsU2l6ZSA9IDA7CisKKyAgICAgICAg
Ly8gQXBwbHkgdGhlIGRlcHRoIHN0ZW5jaWwgb24gdGhlIGRldmljZQorICAgICAgICBpZiAoZGVw
dGhTdGVuY2lsKQorICAgICAgICB7CisgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVw
dGhTdGVuY2lsU3VyZmFjZSA9IE5VTEw7CisgICAgICAgICAgICBSZW5kZXJUYXJnZXQgKmRlcHRo
U3RlbmNpbFJlbmRlclRhcmdldCA9IGRlcHRoU3RlbmNpbC0+Z2V0RGVwdGhTdGVuY2lsKCk7CisK
KyAgICAgICAgICAgIGlmIChkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3VyZmFjZSA9IFJlbmRlclRhcmdldDk6Om1h
a2VSZW5kZXJUYXJnZXQ5KGRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCktPmdldFN1cmZhY2UoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFkZXB0aFN0ZW5jaWxTdXJmYWNlKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVSUigiZGVwdGggc3RlbmNpbCBwb2ludGVy
IHVuZXhwZWN0ZWRseSBudWxsLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAv
LyBDb250ZXh0IG11c3QgYmUgbG9zdAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtRGV2
aWNlLT5TZXREZXB0aFN0ZW5jaWxTdXJmYWNlKGRlcHRoU3RlbmNpbFN1cmZhY2UpOworICAgICAg
ICAgICAgZGVwdGhTdGVuY2lsU3VyZmFjZS0+UmVsZWFzZSgpOworCisgICAgICAgICAgICBkZXB0
aFNpemUgPSBkZXB0aFN0ZW5jaWwtPmdldERlcHRoU2l6ZSgpOworICAgICAgICAgICAgc3RlbmNp
bFNpemUgPSBkZXB0aFN0ZW5jaWwtPmdldFN0ZW5jaWxTaXplKCk7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXREZXB0aFN0ZW5jaWxT
dXJmYWNlKE5VTEwpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtRGVwdGhTdGVuY2lsSW5p
dGlhbGl6ZWQgfHwgZGVwdGhTaXplICE9IG1DdXJEZXB0aFNpemUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1DdXJEZXB0aFNpemUgPSBkZXB0aFNpemU7CisgICAgICAgICAgICBtRm9yY2VTZXRS
YXN0ZXJTdGF0ZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1EZXB0aFN0ZW5j
aWxJbml0aWFsaXplZCB8fCBzdGVuY2lsU2l6ZSAhPSBtQ3VyU3RlbmNpbFNpemUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1DdXJTdGVuY2lsU2l6ZSA9IHN0ZW5jaWxTaXplOworICAgICAgICAg
ICAgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAg
ICAgbUFwcGxpZWREZXB0aGJ1ZmZlclNlcmlhbCA9IGRlcHRoYnVmZmVyU2VyaWFsOworICAgICAg
ICBtQXBwbGllZFN0ZW5jaWxidWZmZXJTZXJpYWwgPSBzdGVuY2lsYnVmZmVyU2VyaWFsOworICAg
ICAgICBtRGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KKworICAgIGlmIChy
ZW5kZXJUYXJnZXRDaGFuZ2VkIHx8ICFtUmVuZGVyVGFyZ2V0RGVzY0luaXRpYWxpemVkKQorICAg
IHsKKyAgICAgICAgbUZvcmNlU2V0U2Npc3NvciA9IHRydWU7CisgICAgICAgIG1Gb3JjZVNldFZp
ZXdwb3J0ID0gdHJ1ZTsKKworICAgICAgICBtUmVuZGVyVGFyZ2V0RGVzYy53aWR0aCA9IHJlbmRl
cmJ1ZmZlck9iamVjdC0+Z2V0V2lkdGgoKTsKKyAgICAgICAgbVJlbmRlclRhcmdldERlc2MuaGVp
Z2h0ID0gcmVuZGVyYnVmZmVyT2JqZWN0LT5nZXRIZWlnaHQoKTsKKyAgICAgICAgbVJlbmRlclRh
cmdldERlc2MuZm9ybWF0ID0gcmVuZGVyYnVmZmVyT2JqZWN0LT5nZXRBY3R1YWxGb3JtYXQoKTsK
KyAgICAgICAgbVJlbmRlclRhcmdldERlc2NJbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK0dMZW51bSBSZW5kZXJlcjk6OmFwcGx5VmVydGV4QnVmZmVy
KGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5LCBnbDo6VmVydGV4QXR0cmlidXRlIHZl
cnRleEF0dHJpYnV0ZXNbXSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5z
dGFuY2VzKQoreworICAgIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tnbDo6TUFYX1ZF
UlRFWF9BVFRSSUJTXTsKKyAgICBHTGVudW0gZXJyID0gbVZlcnRleERhdGFNYW5hZ2VyLT5wcmVw
YXJlVmVydGV4RGF0YSh2ZXJ0ZXhBdHRyaWJ1dGVzLCBwcm9ncmFtQmluYXJ5LCBmaXJzdCwgY291
bnQsIGF0dHJpYnV0ZXMsIGluc3RhbmNlcyk7CisgICAgaWYgKGVyciAhPSBHTF9OT19FUlJPUikK
KyAgICB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorICAgIAorICAgIHJldHVybiBtVmVy
dGV4RGVjbGFyYXRpb25DYWNoZS5hcHBseURlY2xhcmF0aW9uKG1EZXZpY2UsIGF0dHJpYnV0ZXMs
IHByb2dyYW1CaW5hcnksIGluc3RhbmNlcywgJm1SZXBlYXREcmF3KTsKK30KKworLy8gQXBwbGll
cyB0aGUgaW5kaWNlcyBhbmQgZWxlbWVudCBhcnJheSBiaW5kaW5ncyB0byB0aGUgRGlyZWN0M0Qg
OSBkZXZpY2UKK0dMZW51bSBSZW5kZXJlcjk6OmFwcGx5SW5kZXhCdWZmZXIoY29uc3QgR0x2b2lk
ICppbmRpY2VzLCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIsIEdMc2l6ZWkgY291bnQs
IEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZv
KQoreworICAgIEdMZW51bSBlcnIgPSBtSW5kZXhEYXRhTWFuYWdlci0+cHJlcGFyZUluZGV4RGF0
YSh0eXBlLCBjb3VudCwgZWxlbWVudEFycmF5QnVmZmVyLCBpbmRpY2VzLCBpbmRleEluZm8pOwor
CisgICAgaWYgKGVyciA9PSBHTF9OT19FUlJPUikKKyAgICB7CisgICAgICAgIC8vIERpcmVjdGx5
IGJpbmRpbmcgdGhlIHN0b3JhZ2UgYnVmZmVyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGQzZDkKKyAg
ICAgICAgQVNTRVJUKGluZGV4SW5mby0+c3RvcmFnZSA9PSBOVUxMKTsKKworICAgICAgICBpZiAo
aW5kZXhJbmZvLT5zZXJpYWwgIT0gbUFwcGxpZWRJQlNlcmlhbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgSW5kZXhCdWZmZXI5KiBpbmRleEJ1ZmZlciA9IEluZGV4QnVmZmVyOTo6bWFrZUluZGV4
QnVmZmVyOShpbmRleEluZm8tPmluZGV4QnVmZmVyKTsKKworICAgICAgICAgICAgbURldmljZS0+
U2V0SW5kaWNlcyhpbmRleEJ1ZmZlci0+Z2V0QnVmZmVyKCkpOworICAgICAgICAgICAgbUFwcGxp
ZWRJQlNlcmlhbCA9IGluZGV4SW5mby0+c2VyaWFsOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIGVycjsKK30KKwordm9pZCBSZW5kZXJlcjk6OmRyYXdBcnJheXMoR0xlbnVtIG1vZGUs
IEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKQoreworICAgIHN0YXJ0U2NlbmUoKTsK
KyAgICAgICAgCisgICAgaWYgKG1vZGUgPT0gR0xfTElORV9MT09QKQorICAgIHsKKyAgICAgICAg
ZHJhd0xpbmVMb29wKGNvdW50LCBHTF9OT05FLCBOVUxMLCAwLCBOVUxMKTsKKyAgICB9CisgICAg
ZWxzZSBpZiAoaW5zdGFuY2VzID4gMCkKKyAgICB7CisgICAgICAgIFN0YXRpY0luZGV4QnVmZmVy
SW50ZXJmYWNlICpjb3VudGluZ0lCID0gbUluZGV4RGF0YU1hbmFnZXItPmdldENvdW50aW5nSW5k
aWNlcyhjb3VudCk7CisgICAgICAgIGlmIChjb3VudGluZ0lCKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAobUFwcGxpZWRJQlNlcmlhbCAhPSBjb3VudGluZ0lCLT5nZXRTZXJpYWwoKSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbmRleEJ1ZmZlcjkgKmluZGV4QnVmZmVyID0g
SW5kZXhCdWZmZXI5OjptYWtlSW5kZXhCdWZmZXI5KGNvdW50aW5nSUItPmdldEluZGV4QnVmZmVy
KCkpOworCisgICAgICAgICAgICAgICAgbURldmljZS0+U2V0SW5kaWNlcyhpbmRleEJ1ZmZlci0+
Z2V0QnVmZmVyKCkpOworICAgICAgICAgICAgICAgIG1BcHBsaWVkSUJTZXJpYWwgPSBjb3VudGlu
Z0lCLT5nZXRTZXJpYWwoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBtUmVwZWF0RHJhdzsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG1EZXZpY2UtPkRyYXdJbmRleGVkUHJpbWl0aXZlKG1QcmltaXRpdmVUeXBlLCAwLCAwLCBj
b3VudCwgMCwgbVByaW1pdGl2ZUNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBh
IGNvdW50aW5nIGluZGV4IGJ1ZmZlciBmb3IgZ2xEcmF3QXJyYXlzSW5zdGFuY2VkLiIpOworICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBlbHNlICAgLy8gUmVndWxhciBjYXNlCisgICAgeworICAgICAgICBtRGV2aWNl
LT5EcmF3UHJpbWl0aXZlKG1QcmltaXRpdmVUeXBlLCAwLCBtUHJpbWl0aXZlQ291bnQpOworICAg
IH0KK30KKwordm9pZCBSZW5kZXJlcjk6OmRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXpl
aSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAq
ZWxlbWVudEFycmF5QnVmZmVyLCBjb25zdCBUcmFuc2xhdGVkSW5kZXhEYXRhICZpbmRleEluZm8s
IEdMc2l6ZWkgLyppbnN0YW5jZXMqLykKK3sKKyAgICBzdGFydFNjZW5lKCk7CisKKyAgICBpZiAo
bW9kZSA9PSBHTF9QT0lOVFMpCisgICAgeworICAgICAgICBkcmF3SW5kZXhlZFBvaW50cyhjb3Vu
dCwgdHlwZSwgaW5kaWNlcywgZWxlbWVudEFycmF5QnVmZmVyKTsKKyAgICB9CisgICAgZWxzZSBp
ZiAobW9kZSA9PSBHTF9MSU5FX0xPT1ApCisgICAgeworICAgICAgICBkcmF3TGluZUxvb3AoY291
bnQsIHR5cGUsIGluZGljZXMsIGluZGV4SW5mby5taW5JbmRleCwgZWxlbWVudEFycmF5QnVmZmVy
KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBt
UmVwZWF0RHJhdzsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBHTHNpemVpIHZlcnRleENv
dW50ID0gaW5kZXhJbmZvLm1heEluZGV4IC0gaW5kZXhJbmZvLm1pbkluZGV4ICsgMTsKKyAgICAg
ICAgICAgIG1EZXZpY2UtPkRyYXdJbmRleGVkUHJpbWl0aXZlKG1QcmltaXRpdmVUeXBlLCAtKElO
VClpbmRleEluZm8ubWluSW5kZXgsIGluZGV4SW5mby5taW5JbmRleCwgdmVydGV4Q291bnQsIGlu
ZGV4SW5mby5zdGFydEluZGV4LCBtUHJpbWl0aXZlQ291bnQpOworICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIFJlbmRlcmVyOTo6ZHJhd0xpbmVMb29wKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0
eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGludCBtaW5JbmRleCwgZ2w6OkJ1ZmZlciAqZWxl
bWVudEFycmF5QnVmZmVyKQoreworICAgIC8vIEdldCB0aGUgcmF3IGluZGljZXMgZm9yIGFuIGlu
ZGV4ZWQgZHJhdworICAgIGlmICh0eXBlICE9IEdMX05PTkUgJiYgZWxlbWVudEFycmF5QnVmZmVy
KQorICAgIHsKKyAgICAgICAgZ2w6OkJ1ZmZlciAqaW5kZXhCdWZmZXIgPSBlbGVtZW50QXJyYXlC
dWZmZXI7CisgICAgICAgIEJ1ZmZlclN0b3JhZ2UgKnN0b3JhZ2UgPSBpbmRleEJ1ZmZlci0+Z2V0
U3RvcmFnZSgpOworICAgICAgICBpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PGlu
dHB0cl90PihpbmRpY2VzKTsKKyAgICAgICAgaW5kaWNlcyA9IHN0YXRpY19jYXN0PGNvbnN0IEdM
dWJ5dGUqPihzdG9yYWdlLT5nZXREYXRhKCkpICsgb2Zmc2V0OworICAgIH0KKworICAgIFVJTlQg
c3RhcnRJbmRleCA9IDA7CisKKyAgICBpZiAoZ2V0MzJCaXRJbmRleFN1cHBvcnQoKSkKKyAgICB7
CisgICAgICAgIGlmICghbUxpbmVMb29wSUIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1MaW5l
TG9vcElCID0gbmV3IFN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlKHRoaXMpOworICAgICAg
ICAgICAgaWYgKCFtTGluZUxvb3BJQi0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKElOSVRJQUxfSU5ERVhf
QlVGRkVSX1NJWkUsIEdMX1VOU0lHTkVEX0lOVCkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZGVsZXRlIG1MaW5lTG9vcElCOworICAgICAgICAgICAgICAgIG1MaW5lTG9vcElCID0g
TlVMTDsKKworICAgICAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBhIDMyLWJpdCBs
b29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOworICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb3VudCArIDEp
ID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgLyBzaXplb2YodW5z
aWduZWQgaW50KSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0
ZSBhIDMyLWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLCB0b28gbWFu
eSBpbmRpY2VzIHJlcXVpcmVkLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBz
cGFjZU5lZWRlZCA9IChjb3VudCArIDEpICogc2l6ZW9mKHVuc2lnbmVkIGludCk7CisgICAgICAg
IGlmICghbUxpbmVMb29wSUItPnJlc2VydmVCdWZmZXJTcGFjZShzcGFjZU5lZWRlZCwgR0xfVU5T
SUdORURfSU5UKSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgcmVzZXJ2
ZSBlbm91Z2ggc3BhY2UgaW4gbG9vcGluZyBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9PUC4i
KTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkKiBtYXBwZWRNZW1vcnkgPSBOVUxMOworICAgICAgICBpbnQg
b2Zmc2V0ID0gbUxpbmVMb29wSUItPm1hcEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBlZE1lbW9y
eSk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gLTEgfHwgbWFwcGVkTWVtb3J5ID09IE5VTEwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiQ291bGQgbm90IG1hcCBpbmRleCBidWZmZXIgZm9y
IEdMX0xJTkVfTE9PUC4iKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7CisgICAgICAgIH0KKworICAgICAgICBzdGFydEluZGV4ID0gc3RhdGljX2Nhc3Q8
VUlOVD4ob2Zmc2V0KSAvIDQ7CisgICAgICAgIHVuc2lnbmVkIGludCAqZGF0YSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4obWFwcGVkTWVtb3J5KTsKKworICAgICAgICBzd2l0Y2gg
KHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX05PTkU6ICAgLy8gTm9uLWluZGV4
ZWQgZHJhdworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZGF0YVtjb3VudF0gPSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBjb3VudDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBz
dGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5kaWNlcylbaV07CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihpbmRp
Y2VzKVswXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
U0hPUlQ6CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdM
dXNob3J0Kj4oaW5kaWNlcylbaV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkYXRhW2Nv
dW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNlcylbMF07CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNlcylbaV07
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRpY19jYXN0PGNv
bnN0IEdMdWludCo+KGluZGljZXMpWzBdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbUxpbmVM
b29wSUItPnVubWFwQnVmZmVyKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiQ291bGQg
bm90IHVubWFwIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOworICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBpZiAoIW1MaW5lTG9vcElCKQorICAgICAgICB7CisgICAg
ICAgICAgICBtTGluZUxvb3BJQiA9IG5ldyBTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZSh0
aGlzKTsKKyAgICAgICAgICAgIGlmICghbUxpbmVMb29wSUItPnJlc2VydmVCdWZmZXJTcGFjZShJ
TklUSUFMX0lOREVYX0JVRkZFUl9TSVpFLCBHTF9VTlNJR05FRF9TSE9SVCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZGVsZXRlIG1MaW5lTG9vcElCOworICAgICAgICAgICAgICAg
IG1MaW5lTG9vcElCID0gTlVMTDsKKworICAgICAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGNy
ZWF0ZSBhIDE2LWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50Pihjb3VudCArIDEpID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgc2hvcnQ+Ojpt
YXgoKSAvIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpKQorICAgICAgICB7CisgICAgICAgICAgICBF
UlIoIkNvdWxkIG5vdCBjcmVhdGUgYSAxNi1iaXQgbG9vcGluZyBpbmRleCBidWZmZXIgZm9yIEdM
X0xJTkVfTE9PUCwgdG9vIG1hbnkgaW5kaWNlcyByZXF1aXJlZC4iKTsKKyAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIH0KKworICAgICAgICBj
b25zdCBpbnQgc3BhY2VOZWVkZWQgPSAoY291bnQgKyAxKSAqIHNpemVvZih1bnNpZ25lZCBzaG9y
dCk7CisgICAgICAgIGlmICghbUxpbmVMb29wSUItPnJlc2VydmVCdWZmZXJTcGFjZShzcGFjZU5l
ZWRlZCwgR0xfVU5TSUdORURfU0hPUlQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNv
dWxkIG5vdCByZXNlcnZlIGVub3VnaCBzcGFjZSBpbiBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3Ig
R0xfTElORV9MT09QLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQqIG1hcHBlZE1lbW9yeSA9IE5VTEw7
CisgICAgICAgIGludCBvZmZzZXQgPSBtTGluZUxvb3BJQi0+bWFwQnVmZmVyKHNwYWNlTmVlZGVk
LCAmbWFwcGVkTWVtb3J5KTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSAtMSB8fCBtYXBwZWRNZW1v
cnkgPT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgbWFwIGlu
ZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXJ0SW5kZXgg
PSBzdGF0aWNfY2FzdDxVSU5UPihvZmZzZXQpIC8gMjsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQg
KmRhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4obWFwcGVkTWVtb3J5KTsK
KworICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX05P
TkU6ICAgLy8gTm9uLWluZGV4ZWQgZHJhdworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBjb3VudDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGF0YVtjb3VudF0gPSAwOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGRhdGFbaV0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5kaWNlcylbaV07
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRpY19jYXN0PGNv
bnN0IEdMdWJ5dGUqPihpbmRpY2VzKVswXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGNvdW50OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGF0YVtpXSA9IHN0
YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNlcylbaV07CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5k
aWNlcylbMF07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVE
X0lOVDoKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1
aW50Kj4oaW5kaWNlcylbaV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkYXRhW2NvdW50
XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWludCo+KGluZGljZXMpWzBdOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghbUxpbmVMb29wSUItPnVubWFwQnVmZmVyKCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEVSUigiQ291bGQgbm90IHVubWFwIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09Q
LiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmIChtQXBwbGllZElCU2VyaWFsICE9IG1MaW5lTG9vcElC
LT5nZXRTZXJpYWwoKSkKKyAgICB7CisgICAgICAgIEluZGV4QnVmZmVyOSAqaW5kZXhCdWZmZXIg
PSBJbmRleEJ1ZmZlcjk6Om1ha2VJbmRleEJ1ZmZlcjkobUxpbmVMb29wSUItPmdldEluZGV4QnVm
ZmVyKCkpOworCisgICAgICAgIG1EZXZpY2UtPlNldEluZGljZXMoaW5kZXhCdWZmZXItPmdldEJ1
ZmZlcigpKTsKKyAgICAgICAgbUFwcGxpZWRJQlNlcmlhbCA9IG1MaW5lTG9vcElCLT5nZXRTZXJp
YWwoKTsKKyAgICB9CisKKyAgICBtRGV2aWNlLT5EcmF3SW5kZXhlZFByaW1pdGl2ZShEM0RQVF9M
SU5FU1RSSVAsIC1taW5JbmRleCwgbWluSW5kZXgsIGNvdW50LCBzdGFydEluZGV4LCBjb3VudCk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIHZvaWQgZHJhd1BvaW50cyhJRGly
ZWN0M0REZXZpY2U5KiBkZXZpY2UsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdm9pZCAqaW5kaWNl
cykKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgeworICAgICAg
ICB1bnNpZ25lZCBpbnQgaW5kZXhWYWx1ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3Rh
dGljX2Nhc3Q8Y29uc3QgVCo+KGluZGljZXMpW2ldKTsKKyAgICAgICAgZGV2aWNlLT5EcmF3UHJp
bWl0aXZlKEQzRFBUX1BPSU5UTElTVCwgaW5kZXhWYWx1ZSwgMSk7CisgICAgfQorfQorCit2b2lk
IFJlbmRlcmVyOTo6ZHJhd0luZGV4ZWRQb2ludHMoR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUs
IGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyKQor
eworICAgIC8vIERyYXdpbmcgaW5kZXggcG9pbnQgbGlzdHMgaXMgdW5zdXBwb3J0ZWQgaW4gZDNk
OSwgZmFsbCBiYWNrIHRvIGEgcmVndWxhciBEcmF3UHJpbWl0aXZlIGNhbGwKKyAgICAvLyBmb3Ig
ZWFjaCBpbmRpdmlkdWFsIHBvaW50LiBUaGlzIGNhbGwgaXMgbm90IGV4cGVjdGVkIHRvIGhhcHBl
biBvZnRlbi4KKworICAgIGlmIChlbGVtZW50QXJyYXlCdWZmZXIpCisgICAgeworICAgICAgICBC
dWZmZXJTdG9yYWdlICpzdG9yYWdlID0gZWxlbWVudEFycmF5QnVmZmVyLT5nZXRTdG9yYWdlKCk7
CisgICAgICAgIGludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGlu
ZGljZXMpOworICAgICAgICBpbmRpY2VzID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KHN0
b3JhZ2UtPmdldERhdGEoKSkgKyBvZmZzZXQ7CisgICAgfQorCisgICAgc3dpdGNoICh0eXBlKQor
ICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAgZHJhd1BvaW50czxHTHVieXRl
PihtRGV2aWNlLCBjb3VudCwgaW5kaWNlcyk7ICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9TSE9SVDogZHJhd1BvaW50czxHTHVzaG9ydD4obURldmljZSwgY291bnQsIGluZGljZXMp
OyBicmVhazsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6ICAgZHJhd1BvaW50czxHTHVp
bnQ+KG1EZXZpY2UsIGNvdW50LCBpbmRpY2VzKTsgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDog
VU5SRUFDSEFCTEUoKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjphcHBseVNoYWRlcnMo
Z2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkpCit7CisgICAgdW5zaWduZWQgaW50IHBy
b2dyYW1CaW5hcnlTZXJpYWwgPSBwcm9ncmFtQmluYXJ5LT5nZXRTZXJpYWwoKTsKKyAgICBpZiAo
cHJvZ3JhbUJpbmFyeVNlcmlhbCAhPSBtQXBwbGllZFByb2dyYW1CaW5hcnlTZXJpYWwpCisgICAg
eworICAgICAgICBTaGFkZXJFeGVjdXRhYmxlICp2ZXJ0ZXhFeGUgPSBwcm9ncmFtQmluYXJ5LT5n
ZXRWZXJ0ZXhFeGVjdXRhYmxlKCk7CisgICAgICAgIFNoYWRlckV4ZWN1dGFibGUgKnBpeGVsRXhl
ID0gcHJvZ3JhbUJpbmFyeS0+Z2V0UGl4ZWxFeGVjdXRhYmxlKCk7CisKKyAgICAgICAgSURpcmVj
dDNEVmVydGV4U2hhZGVyOSAqdmVydGV4U2hhZGVyID0gTlVMTDsKKyAgICAgICAgaWYgKHZlcnRl
eEV4ZSkgdmVydGV4U2hhZGVyID0gU2hhZGVyRXhlY3V0YWJsZTk6Om1ha2VTaGFkZXJFeGVjdXRh
YmxlOSh2ZXJ0ZXhFeGUpLT5nZXRWZXJ0ZXhTaGFkZXIoKTsKKworICAgICAgICBJRGlyZWN0M0RQ
aXhlbFNoYWRlcjkgKnBpeGVsU2hhZGVyID0gTlVMTDsKKyAgICAgICAgaWYgKHBpeGVsRXhlKSBw
aXhlbFNoYWRlciA9IFNoYWRlckV4ZWN1dGFibGU5OjptYWtlU2hhZGVyRXhlY3V0YWJsZTkocGl4
ZWxFeGUpLT5nZXRQaXhlbFNoYWRlcigpOworCisgICAgICAgIG1EZXZpY2UtPlNldFBpeGVsU2hh
ZGVyKHBpeGVsU2hhZGVyKTsKKyAgICAgICAgbURldmljZS0+U2V0VmVydGV4U2hhZGVyKHZlcnRl
eFNoYWRlcik7CisgICAgICAgIHByb2dyYW1CaW5hcnktPmRpcnR5QWxsVW5pZm9ybXMoKTsKKyAg
ICAgICAgbUR4VW5pZm9ybXNEaXJ0eSA9IHRydWU7CisKKyAgICAgICAgbUFwcGxpZWRQcm9ncmFt
QmluYXJ5U2VyaWFsID0gcHJvZ3JhbUJpbmFyeVNlcmlhbDsKKyAgICB9Cit9CisKK3ZvaWQgUmVu
ZGVyZXI5OjphcHBseVVuaWZvcm1zKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5LCBn
bDo6VW5pZm9ybUFycmF5ICp1bmlmb3JtQXJyYXkpCit7CisgICAgZm9yIChzdGQ6OnZlY3Rvcjxn
bDo6VW5pZm9ybSo+Ojpjb25zdF9pdGVyYXRvciB1YiA9IHVuaWZvcm1BcnJheS0+YmVnaW4oKSwg
dWUgPSB1bmlmb3JtQXJyYXktPmVuZCgpOyB1YiAhPSB1ZTsgKyt1YikKKyAgICB7CisgICAgICAg
IGdsOjpVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gKnViOworCisgICAgICAgIGlmICh0YXJnZXRV
bmlmb3JtLT5kaXJ0eSkKKyAgICAgICAgeworICAgICAgICAgICAgR0xmbG9hdCAqZiA9IChHTGZs
b2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhOworICAgICAgICAgICAgR0xpbnQgKmkgPSAoR0xpbnQq
KXRhcmdldFVuaWZvcm0tPmRhdGE7CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0VW5pZm9y
bS0+dHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TQU1QTEVSXzJE
OgorICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRVJfQ1VCRToKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9CT09MOgorICAgICAgICAgICAgICBjYXNlIEdM
X0JPT0xfVkVDMjoKKyAgICAgICAgICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6CisgICAgICAgICAg
ICAgIGNhc2UgR0xfQk9PTF9WRUM0OgorICAgICAgICAgICAgICAgIGFwcGx5VW5pZm9ybW5idih0
YXJnZXRVbmlmb3JtLCBpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMyOgorICAgICAg
ICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6CisgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVRf
VkVDNDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOgorICAgICAgICAgICAgICBj
YXNlIEdMX0ZMT0FUX01BVDM6CisgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNDoKKyAg
ICAgICAgICAgICAgICBhcHBseVVuaWZvcm1uZnYodGFyZ2V0VW5pZm9ybSwgZik7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfSU5UOgorICAgICAgICAgICAg
ICBjYXNlIEdMX0lOVF9WRUMyOgorICAgICAgICAgICAgICBjYXNlIEdMX0lOVF9WRUMzOgorICAg
ICAgICAgICAgICBjYXNlIEdMX0lOVF9WRUM0OgorICAgICAgICAgICAgICAgIGFwcGx5VW5pZm9y
bW5pdih0YXJnZXRVbmlmb3JtLCBpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IGZhbHNlOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gRHJpdmVyIHVuaWZvcm1zCisgICAgaWYgKG1EeFVuaWZvcm1z
RGlydHkpCisgICAgeworICAgICAgICBtRGV2aWNlLT5TZXRWZXJ0ZXhTaGFkZXJDb25zdGFudEYo
MCwgKGZsb2F0KikmbVZlcnRleENvbnN0YW50cywgc2l6ZW9mKGR4X1ZlcnRleENvbnN0YW50cykg
LyBzaXplb2YoZmxvYXRbNF0pKTsKKyAgICAgICAgbURldmljZS0+U2V0UGl4ZWxTaGFkZXJDb25z
dGFudEYoMCwgKGZsb2F0KikmbVBpeGVsQ29uc3RhbnRzLCBzaXplb2YoZHhfUGl4ZWxDb25zdGFu
dHMpIC8gc2l6ZW9mKGZsb2F0WzRdKSk7CisgICAgICAgIG1EeFVuaWZvcm1zRGlydHkgPSBmYWxz
ZTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjphcHBseVVuaWZvcm1uZnYoZ2w6OlVuaWZv
cm0gKnRhcmdldFVuaWZvcm0sIGNvbnN0IEdMZmxvYXQgKnYpCit7CisgICAgaWYgKHRhcmdldFVu
aWZvcm0tPnBzUmVnaXN0ZXJJbmRleCA+PSAwKQorICAgIHsKKyAgICAgICAgbURldmljZS0+U2V0
UGl4ZWxTaGFkZXJDb25zdGFudEYodGFyZ2V0VW5pZm9ybS0+cHNSZWdpc3RlckluZGV4LCB2LCB0
YXJnZXRVbmlmb3JtLT5yZWdpc3RlckNvdW50KTsKKyAgICB9CisKKyAgICBpZiAodGFyZ2V0VW5p
Zm9ybS0+dnNSZWdpc3RlckluZGV4ID49IDApCisgICAgeworICAgICAgICBtRGV2aWNlLT5TZXRW
ZXJ0ZXhTaGFkZXJDb25zdGFudEYodGFyZ2V0VW5pZm9ybS0+dnNSZWdpc3RlckluZGV4LCB2LCB0
YXJnZXRVbmlmb3JtLT5yZWdpc3RlckNvdW50KTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyZXI5
OjphcHBseVVuaWZvcm1uaXYoZ2w6OlVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNvbnN0IEdMaW50
ICp2KQoreworICAgIEFTU0VSVCh0YXJnZXRVbmlmb3JtLT5yZWdpc3RlckNvdW50IDw9IE1BWF9W
RVJURVhfQ09OU1RBTlRfVkVDVE9SU19EM0Q5KTsKKyAgICBHTGZsb2F0IHZlY3RvcltNQVhfVkVS
VEVYX0NPTlNUQU5UX1ZFQ1RPUlNfRDNEOV1bNF07CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHRhcmdldFVuaWZvcm0tPnJlZ2lzdGVyQ291bnQ7IGkrKykKKyAgICB7CisgICAg
ICAgIHZlY3RvcltpXVswXSA9IChHTGZsb2F0KXZbNCAqIGkgKyAwXTsKKyAgICAgICAgdmVjdG9y
W2ldWzFdID0gKEdMZmxvYXQpdls0ICogaSArIDFdOworICAgICAgICB2ZWN0b3JbaV1bMl0gPSAo
R0xmbG9hdCl2WzQgKiBpICsgMl07CisgICAgICAgIHZlY3RvcltpXVszXSA9IChHTGZsb2F0KXZb
NCAqIGkgKyAzXTsKKyAgICB9CisKKyAgICBhcHBseVVuaWZvcm1uZnYodGFyZ2V0VW5pZm9ybSwg
KEdMZmxvYXQqKXZlY3Rvcik7Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjphcHBseVVuaWZvcm1uYnYo
Z2w6OlVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNvbnN0IEdMaW50ICp2KQoreworICAgIEFTU0VS
VCh0YXJnZXRVbmlmb3JtLT5yZWdpc3RlckNvdW50IDw9IE1BWF9WRVJURVhfQ09OU1RBTlRfVkVD
VE9SU19EM0Q5KTsKKyAgICBHTGZsb2F0IHZlY3RvcltNQVhfVkVSVEVYX0NPTlNUQU5UX1ZFQ1RP
UlNfRDNEOV1bNF07CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHRhcmdldFVu
aWZvcm0tPnJlZ2lzdGVyQ291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIHZlY3RvcltpXVswXSA9
ICh2WzQgKiBpICsgMF0gPT0gR0xfRkFMU0UpID8gMC4wZiA6IDEuMGY7CisgICAgICAgIHZlY3Rv
cltpXVsxXSA9ICh2WzQgKiBpICsgMV0gPT0gR0xfRkFMU0UpID8gMC4wZiA6IDEuMGY7CisgICAg
ICAgIHZlY3RvcltpXVsyXSA9ICh2WzQgKiBpICsgMl0gPT0gR0xfRkFMU0UpID8gMC4wZiA6IDEu
MGY7CisgICAgICAgIHZlY3RvcltpXVszXSA9ICh2WzQgKiBpICsgM10gPT0gR0xfRkFMU0UpID8g
MC4wZiA6IDEuMGY7CisgICAgfQorCisgICAgYXBwbHlVbmlmb3JtbmZ2KHRhcmdldFVuaWZvcm0s
IChHTGZsb2F0Kil2ZWN0b3IpOworfQorCit2b2lkIFJlbmRlcmVyOTo6Y2xlYXIoY29uc3QgZ2w6
OkNsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMsIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVCdWZm
ZXIpCit7CisgICAgRDNEQ09MT1IgY29sb3IgPSBEM0RDT0xPUl9BUkdCKGdsOjp1bm9ybTw4Pihj
bGVhclBhcmFtcy5jb2xvckNsZWFyVmFsdWUuYWxwaGEpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oY2xlYXJQYXJhbXMuY29sb3JDbGVhclZhbHVlLnJl
ZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjp1bm9ybTw4PihjbGVh
clBhcmFtcy5jb2xvckNsZWFyVmFsdWUuZ3JlZW4pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbDo6dW5vcm08OD4oY2xlYXJQYXJhbXMuY29sb3JDbGVhclZhbHVlLmJsdWUp
KTsKKyAgICBmbG9hdCBkZXB0aCA9IGdsOjpjbGFtcDAxKGNsZWFyUGFyYW1zLmRlcHRoQ2xlYXJW
YWx1ZSk7CisgICAgaW50IHN0ZW5jaWwgPSBjbGVhclBhcmFtcy5zdGVuY2lsQ2xlYXJWYWx1ZSAm
IDB4MDAwMDAwRkY7CisKKyAgICB1bnNpZ25lZCBpbnQgc3RlbmNpbFVubWFza2VkID0gMHgwOwor
ICAgIGlmICgoY2xlYXJQYXJhbXMubWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkgJiYgZnJh
bWVCdWZmZXItPmhhc1N0ZW5jaWwoKSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBzdGVu
Y2lsU2l6ZSA9IGdsOjpHZXRTdGVuY2lsU2l6ZShmcmFtZUJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZl
cigpLT5nZXRBY3R1YWxGb3JtYXQoKSk7CisgICAgICAgIHN0ZW5jaWxVbm1hc2tlZCA9ICgweDEg
PDwgc3RlbmNpbFNpemUpIC0gMTsKKyAgICB9CisKKyAgICBib29sIGFscGhhVW5tYXNrZWQgPSAo
Z2w6OkdldEFscGhhU2l6ZShtUmVuZGVyVGFyZ2V0RGVzYy5mb3JtYXQpID09IDApIHx8IGNsZWFy
UGFyYW1zLmNvbG9yTWFza0FscGhhOworCisgICAgY29uc3QgYm9vbCBuZWVkTWFza2VkU3RlbmNp
bENsZWFyID0gKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpICYmCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsZWFyUGFyYW1zLnN0ZW5j
aWxXcml0ZU1hc2sgJiBzdGVuY2lsVW5tYXNrZWQpICE9IHN0ZW5jaWxVbm1hc2tlZDsKKyAgICBj
b25zdCBib29sIG5lZWRNYXNrZWRDb2xvckNsZWFyID0gKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9D
T0xPUl9CVUZGRVJfQklUKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAhKGNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCAmJiBjbGVhclBhcmFtcy5jb2xvck1hc2tHcmVl
biAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1z
LmNvbG9yTWFza0JsdWUgJiYgYWxwaGFVbm1hc2tlZCk7CisKKyAgICBpZiAobmVlZE1hc2tlZENv
bG9yQ2xlYXIgfHwgbmVlZE1hc2tlZFN0ZW5jaWxDbGVhcikKKyAgICB7CisgICAgICAgIC8vIFN0
YXRlIHdoaWNoIGlzIGFsdGVyZWQgaW4gYWxsIHBhdGhzIGZyb20gdGhpcyBwb2ludCB0byB0aGUg
Y2xlYXIgY2FsbCBpcyBzYXZlZC4KKyAgICAgICAgLy8gU3RhdGUgd2hpY2ggaXMgYWx0ZXJlZCBp
biBvbmx5IHNvbWUgcGF0aHMgd2lsbCBiZSBmbGFnZ2VkIGRpcnR5IGluIHRoZSBjYXNlIHRoYXQK
KyAgICAgICAgLy8gIHRoYXQgcGF0aCBpcyB0YWtlbi4KKyAgICAgICAgSFJFU1VMVCBocjsKKyAg
ICAgICAgaWYgKG1NYXNrZWRDbGVhclNhdmVkU3RhdGUgPT0gTlVMTCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaHIgPSBtRGV2aWNlLT5CZWdpblN0YXRlQmxvY2soKTsKKyAgICAgICAgICAgIEFT
U0VSVChTVUNDRUVERUQoaHIpIHx8IGhyID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IGhy
ID09IEVfT1VUT0ZNRU1PUlkpOworCisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShEM0RSU19aV1JJVEVFTkFCTEUsIEZBTFNFKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJl
bmRlclN0YXRlKEQzRFJTX1pGVU5DLCBEM0RDTVBfQUxXQVlTKTsKKyAgICAgICAgICAgIG1EZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pFTkFCTEUsIEZBTFNFKTsKKyAgICAgICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NVTExNT0RFLCBEM0RDVUxMX05PTkUpOworICAg
ICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfRklMTE1PREUsIEQzREZJTExf
U09MSUQpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFU
RVNURU5BQkxFLCBGQUxTRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19BTFBIQUJMRU5ERU5BQkxFLCBGQUxTRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShEM0RSU19DTElQUExBTkVFTkFCTEUsIDApOworICAgICAgICAgICAgbURldmlj
ZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklURUVOQUJMRSwgMCk7CisgICAgICAgICAg
ICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMRU5BQkxFLCBGQUxTRSk7Cisg
ICAgICAgICAgICBtRGV2aWNlLT5TZXRQaXhlbFNoYWRlcihOVUxMKTsKKyAgICAgICAgICAgIG1E
ZXZpY2UtPlNldFZlcnRleFNoYWRlcihOVUxMKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldEZW
RihEM0RGVkZfWFlaUkhXIHwgRDNERlZGX0RJRkZVU0UpOworICAgICAgICAgICAgbURldmljZS0+
U2V0U3RyZWFtU291cmNlKDAsIE5VTEwsIDAsIDApOworICAgICAgICAgICAgbURldmljZS0+U2V0
UmVuZGVyU3RhdGUoRDNEUlNfU0VQQVJBVEVBTFBIQUJMRU5ERU5BQkxFLCBUUlVFKTsKKyAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFRleHR1cmVTdGFnZVN0YXRlKDAsIEQzRFRTU19DT0xPUk9QLCBE
M0RUT1BfU0VMRUNUQVJHMSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VT
dGF0ZSgwLCBEM0RUU1NfQ09MT1JBUkcxLCBEM0RUQV9URkFDVE9SKTsKKyAgICAgICAgICAgIG1E
ZXZpY2UtPlNldFRleHR1cmVTdGFnZVN0YXRlKDAsIEQzRFRTU19BTFBIQU9QLCBEM0RUT1BfU0VM
RUNUQVJHMSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBE
M0RUU1NfQUxQSEFBUkcxLCBEM0RUQV9URkFDVE9SKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNl
dFJlbmRlclN0YXRlKEQzRFJTX1RFWFRVUkVGQUNUT1IsIGNvbG9yKTsKKyAgICAgICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX01VTFRJU0FNUExFTUFTSywgMHhGRkZGRkZGRik7
CisKKyAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJT
OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbURldmljZS0+U2V0U3RyZWFt
U291cmNlRnJlcShpLCAxKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaHIgPSBtRGV2
aWNlLT5FbmRTdGF0ZUJsb2NrKCZtTWFza2VkQ2xlYXJTYXZlZFN0YXRlKTsKKyAgICAgICAgICAg
IEFTU0VSVChTVUNDRUVERUQoaHIpIHx8IGhyID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8
IGhyID09IEVfT1VUT0ZNRU1PUlkpOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKG1NYXNr
ZWRDbGVhclNhdmVkU3RhdGUgIT0gTlVMTCk7CisKKyAgICAgICAgaWYgKG1NYXNrZWRDbGVhclNh
dmVkU3RhdGUgIT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgaHIgPSBtTWFza2VkQ2xl
YXJTYXZlZFN0YXRlLT5DYXB0dXJlKCk7CisgICAgICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhy
KSk7CisgICAgICAgIH0KKworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19a
V1JJVEVFTkFCTEUsIEZBTFNFKTsKKyAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfWkZVTkMsIEQzRENNUF9BTFdBWVMpOworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShEM0RSU19aRU5BQkxFLCBGQUxTRSk7CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRl
KEQzRFJTX0NVTExNT0RFLCBEM0RDVUxMX05PTkUpOworICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19GSUxMTU9ERSwgRDNERklMTF9TT0xJRCk7CisgICAgICAgIG1EZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX0FMUEhBVEVTVEVOQUJMRSwgRkFMU0UpOworICAgICAgICBt
RGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBGQUxTRSk7Cisg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NMSVBQTEFORUVOQUJMRSwgMCk7
CisKKyAgICAgICAgaWYgKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKQor
ICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DT0xP
UldSSVRFRU5BQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfZDNk
OTo6Q29udmVydENvbG9yTWFzayhjbGVhclBhcmFtcy5jb2xvck1hc2tSZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFy
UGFyYW1zLmNvbG9yTWFza0dyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvck1hc2tCbHVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGVhclBhcmFtcy5jb2xvck1hc2tBbHBoYSkpOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNf
Q09MT1JXUklURUVOQUJMRSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RlbmNpbFVu
bWFza2VkICE9IDB4MCAmJiAoY2xlYXJQYXJhbXMubWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJ
VCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJT
X1NURU5DSUxFTkFCTEUsIFRSVUUpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfVFdPU0lERURTVEVOQ0lMTU9ERSwgRkFMU0UpOworICAgICAgICAgICAgbURldmlj
ZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTEZVTkMsIEQzRENNUF9BTFdBWVMpOworICAg
ICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTFJFRiwgc3RlbmNp
bCk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMV1JJ
VEVNQVNLLCBjbGVhclBhcmFtcy5zdGVuY2lsV3JpdGVNYXNrKTsKKyAgICAgICAgICAgIG1EZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxGQUlMLCBEM0RTVEVOQ0lMT1BfUkVQTEFD
RSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMWkZB
SUwsIEQzRFNURU5DSUxPUF9SRVBMQUNFKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRl
clN0YXRlKEQzRFJTX1NURU5DSUxQQVNTLCBEM0RTVEVOQ0lMT1BfUkVQTEFDRSk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19TVEVOQ0lMRU5BQkxFLCBGQUxTRSk7CisgICAgICAgIH0KKworICAgICAg
ICBtRGV2aWNlLT5TZXRQaXhlbFNoYWRlcihOVUxMKTsKKyAgICAgICAgbURldmljZS0+U2V0VmVy
dGV4U2hhZGVyKE5VTEwpOworICAgICAgICBtRGV2aWNlLT5TZXRGVkYoRDNERlZGX1hZWlJIVyk7
CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NFUEFSQVRFQUxQSEFCTEVO
REVOQUJMRSwgVFJVRSk7CisgICAgICAgIG1EZXZpY2UtPlNldFRleHR1cmVTdGFnZVN0YXRlKDAs
IEQzRFRTU19DT0xPUk9QLCBEM0RUT1BfU0VMRUNUQVJHMSk7CisgICAgICAgIG1EZXZpY2UtPlNl
dFRleHR1cmVTdGFnZVN0YXRlKDAsIEQzRFRTU19DT0xPUkFSRzEsIEQzRFRBX1RGQUNUT1IpOwor
ICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQUxQSEFPUCwg
RDNEVE9QX1NFTEVDVEFSRzEpOworICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0
ZSgwLCBEM0RUU1NfQUxQSEFBUkcxLCBEM0RUQV9URkFDVE9SKTsKKyAgICAgICAgbURldmljZS0+
U2V0UmVuZGVyU3RhdGUoRDNEUlNfVEVYVFVSRUZBQ1RPUiwgY29sb3IpOworICAgICAgICBtRGV2
aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19NVUxUSVNBTVBMRU1BU0ssIDB4RkZGRkZGRkYpOwor
CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFN0cmVhbVNvdXJjZUZyZXEoaSwg
MSk7CisgICAgICAgIH0KKworICAgICAgICBmbG9hdCBxdWFkWzRdWzRdOyAgIC8vIEEgcXVhZHJp
bGF0ZXJhbCBjb3ZlcmluZyB0aGUgdGFyZ2V0LCBhbGlnbmVkIHRvIG1hdGNoIHRoZSBlZGdlcwor
ICAgICAgICBxdWFkWzBdWzBdID0gLTAuNWY7CisgICAgICAgIHF1YWRbMF1bMV0gPSBtUmVuZGVy
VGFyZ2V0RGVzYy5oZWlnaHQgLSAwLjVmOworICAgICAgICBxdWFkWzBdWzJdID0gMC4wZjsKKyAg
ICAgICAgcXVhZFswXVszXSA9IDEuMGY7CisKKyAgICAgICAgcXVhZFsxXVswXSA9IG1SZW5kZXJU
YXJnZXREZXNjLndpZHRoIC0gMC41ZjsKKyAgICAgICAgcXVhZFsxXVsxXSA9IG1SZW5kZXJUYXJn
ZXREZXNjLmhlaWdodCAtIDAuNWY7CisgICAgICAgIHF1YWRbMV1bMl0gPSAwLjBmOworICAgICAg
ICBxdWFkWzFdWzNdID0gMS4wZjsKKworICAgICAgICBxdWFkWzJdWzBdID0gLTAuNWY7CisgICAg
ICAgIHF1YWRbMl1bMV0gPSAtMC41ZjsKKyAgICAgICAgcXVhZFsyXVsyXSA9IDAuMGY7CisgICAg
ICAgIHF1YWRbMl1bM10gPSAxLjBmOworCisgICAgICAgIHF1YWRbM11bMF0gPSBtUmVuZGVyVGFy
Z2V0RGVzYy53aWR0aCAtIDAuNWY7CisgICAgICAgIHF1YWRbM11bMV0gPSAtMC41ZjsKKyAgICAg
ICAgcXVhZFszXVsyXSA9IDAuMGY7CisgICAgICAgIHF1YWRbM11bM10gPSAxLjBmOworCisgICAg
ICAgIHN0YXJ0U2NlbmUoKTsKKyAgICAgICAgbURldmljZS0+RHJhd1ByaW1pdGl2ZVVQKEQzRFBU
X1RSSUFOR0xFU1RSSVAsIDIsIHF1YWQsIHNpemVvZihmbG9hdFs0XSkpOworCisgICAgICAgIGlm
IChjbGVhclBhcmFtcy5tYXNrICYgR0xfREVQVEhfQlVGRkVSX0JJVCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkVOQUJMRSwgVFJVRSk7Cisg
ICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aV1JJVEVFTkFCTEUsIFRS
VUUpOworICAgICAgICAgICAgbURldmljZS0+Q2xlYXIoMCwgTlVMTCwgRDNEQ0xFQVJfWkJVRkZF
UiwgY29sb3IsIGRlcHRoLCBzdGVuY2lsKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtTWFz
a2VkQ2xlYXJTYXZlZFN0YXRlICE9IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1NYXNr
ZWRDbGVhclNhdmVkU3RhdGUtPkFwcGx5KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBp
ZiAoY2xlYXJQYXJhbXMubWFzaykKKyAgICB7CisgICAgICAgIERXT1JEIGR4Q2xlYXJGbGFncyA9
IDA7CisgICAgICAgIGlmIChjbGVhclBhcmFtcy5tYXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJVCkK
KyAgICAgICAgeworICAgICAgICAgICAgZHhDbGVhckZsYWdzIHw9IEQzRENMRUFSX1RBUkdFVDsK
KyAgICAgICAgfQorICAgICAgICBpZiAoY2xlYXJQYXJhbXMubWFzayAmIEdMX0RFUFRIX0JVRkZF
Ul9CSVQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGR4Q2xlYXJGbGFncyB8PSBEM0RDTEVBUl9a
QlVGRkVSOworICAgICAgICB9CisgICAgICAgIGlmIChjbGVhclBhcmFtcy5tYXNrICYgR0xfU1RF
TkNJTF9CVUZGRVJfQklUKQorICAgICAgICB7CisgICAgICAgICAgICBkeENsZWFyRmxhZ3MgfD0g
RDNEQ0xFQVJfU1RFTkNJTDsKKyAgICAgICAgfQorCisgICAgICAgIG1EZXZpY2UtPkNsZWFyKDAs
IE5VTEwsIGR4Q2xlYXJGbGFncywgY29sb3IsIGRlcHRoLCBzdGVuY2lsKTsKKyAgICB9Cit9CisK
K3ZvaWQgUmVuZGVyZXI5OjptYXJrQWxsU3RhdGVEaXJ0eSgpCit7CisgICAgbUFwcGxpZWRSZW5k
ZXJUYXJnZXRTZXJpYWwgPSAwOworICAgIG1BcHBsaWVkRGVwdGhidWZmZXJTZXJpYWwgPSAwOwor
ICAgIG1BcHBsaWVkU3RlbmNpbGJ1ZmZlclNlcmlhbCA9IDA7CisgICAgbURlcHRoU3RlbmNpbElu
aXRpYWxpemVkID0gZmFsc2U7CisgICAgbVJlbmRlclRhcmdldERlc2NJbml0aWFsaXplZCA9IGZh
bHNlOworCisgICAgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgPSB0cnVlOworICAgIG1Gb3Jj
ZVNldFJhc3RlclN0YXRlID0gdHJ1ZTsKKyAgICBtRm9yY2VTZXRTY2lzc29yID0gdHJ1ZTsKKyAg
ICBtRm9yY2VTZXRWaWV3cG9ydCA9IHRydWU7CisgICAgbUZvcmNlU2V0QmxlbmRTdGF0ZSA9IHRy
dWU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpJTVBMRU1FTlRBVElP
Tl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFM7IGkrKykKKyAgICB7CisgICAgICAgIG1G
b3JjZVNldFZlcnRleFNhbXBsZXJTdGF0ZXNbaV0gPSB0cnVlOworICAgICAgICBtQ3VyVmVydGV4
VGV4dHVyZVNlcmlhbHNbaV0gPSAwOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IGdsOjpNQVhfVEVYVFVSRV9JTUFHRV9VTklUUzsgaSsrKQorICAgIHsKKyAgICAgICAg
bUZvcmNlU2V0UGl4ZWxTYW1wbGVyU3RhdGVzW2ldID0gdHJ1ZTsKKyAgICAgICAgbUN1clBpeGVs
VGV4dHVyZVNlcmlhbHNbaV0gPSAwOworICAgIH0KKworICAgIG1BcHBsaWVkSUJTZXJpYWwgPSAw
OworICAgIG1BcHBsaWVkUHJvZ3JhbUJpbmFyeVNlcmlhbCA9IDA7CisgICAgbUR4VW5pZm9ybXNE
aXJ0eSA9IHRydWU7CisKKyAgICBtVmVydGV4RGVjbGFyYXRpb25DYWNoZS5tYXJrU3RhdGVEaXJ0
eSgpOworfQorCit2b2lkIFJlbmRlcmVyOTo6cmVsZWFzZURldmljZVJlc291cmNlcygpCit7Cisg
ICAgd2hpbGUgKCFtRXZlbnRRdWVyeVBvb2wuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIG1FdmVu
dFF1ZXJ5UG9vbC5iYWNrKCktPlJlbGVhc2UoKTsKKyAgICAgICAgbUV2ZW50UXVlcnlQb29sLnBv
cF9iYWNrKCk7CisgICAgfQorCisgICAgaWYgKG1NYXNrZWRDbGVhclNhdmVkU3RhdGUpCisgICAg
eworICAgICAgICBtTWFza2VkQ2xlYXJTYXZlZFN0YXRlLT5SZWxlYXNlKCk7CisgICAgICAgIG1N
YXNrZWRDbGVhclNhdmVkU3RhdGUgPSBOVUxMOworICAgIH0KKworICAgIG1WZXJ0ZXhTaGFkZXJD
YWNoZS5jbGVhcigpOworICAgIG1QaXhlbFNoYWRlckNhY2hlLmNsZWFyKCk7CisKKyAgICBkZWxl
dGUgbUJsaXQ7CisgICAgbUJsaXQgPSBOVUxMOworCisgICAgZGVsZXRlIG1WZXJ0ZXhEYXRhTWFu
YWdlcjsKKyAgICBtVmVydGV4RGF0YU1hbmFnZXIgPSBOVUxMOworCisgICAgZGVsZXRlIG1JbmRl
eERhdGFNYW5hZ2VyOworICAgIG1JbmRleERhdGFNYW5hZ2VyID0gTlVMTDsKKworICAgIGRlbGV0
ZSBtTGluZUxvb3BJQjsKKyAgICBtTGluZUxvb3BJQiA9IE5VTEw7CisKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IE5VTV9OVUxMX0NPTE9SQlVGRkVSX0NBQ0hFX0VOVFJJRVM7IGkrKykKKyAgICB7
CisgICAgICAgIGRlbGV0ZSBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uYnVmZmVyOworICAgICAg
ICBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uYnVmZmVyID0gTlVMTDsKKyAgICB9CisKK30KKwor
Cit2b2lkIFJlbmRlcmVyOTo6bm90aWZ5RGV2aWNlTG9zdCgpCit7CisgICAgbURldmljZUxvc3Qg
PSB0cnVlOworICAgIG1EaXNwbGF5LT5ub3RpZnlEZXZpY2VMb3N0KCk7Cit9CisKK2Jvb2wgUmVu
ZGVyZXI5Ojppc0RldmljZUxvc3QoKQoreworICAgIHJldHVybiBtRGV2aWNlTG9zdDsKK30KKwor
Ly8gc2V0IG5vdGlmeSB0byB0cnVlIHRvIGJyb2FkY2FzdCBhIG1lc3NhZ2UgdG8gYWxsIGNvbnRl
eHRzIG9mIHRoZSBkZXZpY2UgbG9zcworYm9vbCBSZW5kZXJlcjk6OnRlc3REZXZpY2VMb3N0KGJv
b2wgbm90aWZ5KQoreworICAgIEhSRVNVTFQgc3RhdHVzID0gU19PSzsKKworICAgIGlmIChtRGV2
aWNlRXgpCisgICAgeworICAgICAgICBzdGF0dXMgPSBtRGV2aWNlRXgtPkNoZWNrRGV2aWNlU3Rh
dGUoTlVMTCk7CisgICAgfQorICAgIGVsc2UgaWYgKG1EZXZpY2UpCisgICAgeworICAgICAgICBz
dGF0dXMgPSBtRGV2aWNlLT5UZXN0Q29vcGVyYXRpdmVMZXZlbCgpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICAvLyBObyBkZXZpY2UgeWV0LCBzbyBubyByZXNldCByZXF1aXJlZAor
ICAgIH0KKworICAgIGJvb2wgaXNMb3N0ID0gRkFJTEVEKHN0YXR1cykgfHwgZDNkOTo6aXNEZXZp
Y2VMb3N0RXJyb3Ioc3RhdHVzKTsKKworICAgIGlmIChpc0xvc3QpCisgICAgeworICAgICAgICAv
LyBlbnN1cmUgd2Ugbm90ZSB0aGUgZGV2aWNlIGxvc3MgLS0KKyAgICAgICAgLy8gd2UnbGwgcHJv
YmFibHkgZ2V0IHRoaXMgZG9uZSBhZ2FpbiBieSBub3RpZnlEZXZpY2VMb3N0CisgICAgICAgIC8v
IGJ1dCBiZXN0IHRvIHJlbWVtYmVyIGl0IQorICAgICAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3Qg
d2FudCB0byBjbGVhciB0aGUgZGV2aWNlIGxvc3Mgc3RhdHVzIGhlcmUKKyAgICAgICAgLy8gLS0g
dGhpcyBuZWVkcyB0byBiZSBkb25lIGJ5IHJlc2V0RGV2aWNlCisgICAgICAgIG1EZXZpY2VMb3N0
ID0gdHJ1ZTsKKyAgICAgICAgaWYgKG5vdGlmeSkKKyAgICAgICAgeworICAgICAgICAgICAgbm90
aWZ5RGV2aWNlTG9zdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGlzTG9zdDsK
K30KKworYm9vbCBSZW5kZXJlcjk6OnRlc3REZXZpY2VSZXNldHRhYmxlKCkKK3sKKyAgICBIUkVT
VUxUIHN0YXR1cyA9IEQzRF9PSzsKKworICAgIGlmIChtRGV2aWNlRXgpCisgICAgeworICAgICAg
ICBzdGF0dXMgPSBtRGV2aWNlRXgtPkNoZWNrRGV2aWNlU3RhdGUoTlVMTCk7CisgICAgfQorICAg
IGVsc2UgaWYgKG1EZXZpY2UpCisgICAgeworICAgICAgICBzdGF0dXMgPSBtRGV2aWNlLT5UZXN0
Q29vcGVyYXRpdmVMZXZlbCgpOworICAgIH0KKworICAgIC8vIE9uIEQzRDlFeCwgREVWSUNFTE9T
VCByZXByZXNlbnRzIGEgaHVuZyBkZXZpY2UgdGhhdCBuZWVkcyB0byBiZSByZXN0YXJ0ZWQKKyAg
ICAvLyBERVZJQ0VSRU1PVkVEIGluZGljYXRlcyB0aGUgZGV2aWNlIGhhcyBiZWVuIHN0b3BwZWQg
YW5kIG11c3QgYmUgcmVjcmVhdGVkCisgICAgc3dpdGNoIChzdGF0dXMpCisgICAgeworICAgICAg
Y2FzZSBEM0RFUlJfREVWSUNFTk9UUkVTRVQ6CisgICAgICBjYXNlIEQzREVSUl9ERVZJQ0VIVU5H
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGNhc2UgRDNERVJSX0RFVklDRUxPU1Q6Cisg
ICAgICAgIHJldHVybiAobURldmljZUV4ICE9IE5VTEwpOworICAgICAgY2FzZSBEM0RFUlJfREVW
SUNFUkVNT1ZFRDoKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiti
b29sIFJlbmRlcmVyOTo6cmVzZXREZXZpY2UoKQoreworICAgIHJlbGVhc2VEZXZpY2VSZXNvdXJj
ZXMoKTsKKworICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBwcmVzZW50UGFyYW1ldGVycyA9IGdl
dERlZmF1bHRQcmVzZW50UGFyYW1ldGVycygpOworCisgICAgSFJFU1VMVCByZXN1bHQgPSBEM0Rf
T0s7CisgICAgYm9vbCBsb3N0ID0gdGVzdERldmljZUxvc3QoZmFsc2UpOworICAgIGludCBhdHRl
bXB0cyA9IDM7CisKKyAgICB3aGlsZSAobG9zdCAmJiBhdHRlbXB0cyA+IDApCisgICAgeworICAg
ICAgICBpZiAobURldmljZUV4KQorICAgICAgICB7CisgICAgICAgICAgICBTbGVlcCg1MDApOyAg
IC8vIEdpdmUgdGhlIGdyYXBoaWNzIGRyaXZlciBzb21lIENQVSB0aW1lCisgICAgICAgICAgICBy
ZXN1bHQgPSBtRGV2aWNlRXgtPlJlc2V0RXgoJnByZXNlbnRQYXJhbWV0ZXJzLCBOVUxMKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1E
ZXZpY2UtPlRlc3RDb29wZXJhdGl2ZUxldmVsKCk7CisgICAgICAgICAgICB3aGlsZSAocmVzdWx0
ID09IEQzREVSUl9ERVZJQ0VMT1NUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFNs
ZWVwKDEwMCk7ICAgLy8gR2l2ZSB0aGUgZ3JhcGhpY3MgZHJpdmVyIHNvbWUgQ1BVIHRpbWUKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5UZXN0Q29vcGVyYXRpdmVMZXZlbCgpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmVzdWx0ID09IEQzREVSUl9ERVZJQ0VO
T1RSRVNFVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNl
LT5SZXNldCgmcHJlc2VudFBhcmFtZXRlcnMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgbG9zdCA9IHRlc3REZXZpY2VMb3N0KGZhbHNlKTsKKyAgICAgICAgYXR0ZW1wdHMg
LS07CisgICAgfQorCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJS
KCJSZXNldC9SZXNldEV4IGZhaWxlZCBtdWx0aXBsZSB0aW1lczogMHglMDhYIiwgcmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIHJlc2V0IGRldmljZSBkZWZh
dWx0cworICAgIGluaXRpYWxpemVEZXZpY2UoKTsKKyAgICBtRGV2aWNlTG9zdCA9IGZhbHNlOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0RXT1JEIFJlbmRlcmVyOTo6Z2V0QWRhcHRlclZlbmRv
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1BZGFwdGVySWRlbnRpZmllci5WZW5kb3JJZDsKK30K
Kworc3RkOjpzdHJpbmcgUmVuZGVyZXI5OjpnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3QK
K3sKKyAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gcmVuZGVyZXJTdHJpbmc7CisKKyAgICByZW5kZXJl
clN0cmluZyA8PCBtQWRhcHRlcklkZW50aWZpZXIuRGVzY3JpcHRpb247CisgICAgaWYgKGdldFNo
YXJlSGFuZGxlU3VwcG9ydCgpKQorICAgIHsKKyAgICAgICAgcmVuZGVyZXJTdHJpbmcgPDwgIiBE
aXJlY3QzRDlFeCI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJlbmRlcmVyU3Ry
aW5nIDw8ICIgRGlyZWN0M0Q5IjsKKyAgICB9CisKKyAgICByZW5kZXJlclN0cmluZyA8PCAiIHZz
XyIgPDwgRDNEU0hBREVSX1ZFUlNJT05fTUFKT1IobURldmljZUNhcHMuVmVydGV4U2hhZGVyVmVy
c2lvbikgPDwgIl8iIDw8IEQzRFNIQURFUl9WRVJTSU9OX01JTk9SKG1EZXZpY2VDYXBzLlZlcnRl
eFNoYWRlclZlcnNpb24pOworICAgIHJlbmRlcmVyU3RyaW5nIDw8ICIgcHNfIiA8PCBEM0RTSEFE
RVJfVkVSU0lPTl9NQUpPUihtRGV2aWNlQ2Fwcy5QaXhlbFNoYWRlclZlcnNpb24pIDw8ICJfIiA8
PCBEM0RTSEFERVJfVkVSU0lPTl9NSU5PUihtRGV2aWNlQ2Fwcy5QaXhlbFNoYWRlclZlcnNpb24p
OworCisgICAgcmV0dXJuIHJlbmRlcmVyU3RyaW5nLnN0cigpOworfQorCitHVUlEIFJlbmRlcmVy
OTo6Z2V0QWRhcHRlcklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtQWRhcHRlcklk
ZW50aWZpZXIuRGV2aWNlSWRlbnRpZmllcjsKK30KKwordm9pZCBSZW5kZXJlcjk6OmdldE11bHRp
U2FtcGxlU3VwcG9ydChEM0RGT1JNQVQgZm9ybWF0LCBib29sICptdWx0aVNhbXBsZUFycmF5KQor
eworICAgIGZvciAoaW50IG11bHRpU2FtcGxlSW5kZXggPSAwOyBtdWx0aVNhbXBsZUluZGV4IDw9
IEQzRE1VTFRJU0FNUExFXzE2X1NBTVBMRVM7IG11bHRpU2FtcGxlSW5kZXgrKykKKyAgICB7Cisg
ICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbUQzZDktPkNoZWNrRGV2aWNlTXVsdGlTYW1wbGVUeXBl
KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLCAoRDNETVVMVElTQU1QTEVf
VFlQRSltdWx0aVNhbXBsZUluZGV4LCBOVUxMKTsKKworICAgICAgICBtdWx0aVNhbXBsZUFycmF5
W211bHRpU2FtcGxlSW5kZXhdID0gU1VDQ0VFREVEKHJlc3VsdCk7CisgICAgfQorfQorCitib29s
IFJlbmRlcmVyOTo6Z2V0QkdSQVRleHR1cmVTdXBwb3J0KCkgY29uc3QKK3sKKyAgICAvLyBEaXJl
Y3RYIDkgYWx3YXlzIHN1cHBvcnRzIEJHUkEKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBS
ZW5kZXJlcjk6OmdldERYVDFUZXh0dXJlU3VwcG9ydCgpCit7CisgICAgcmV0dXJuIG1EWFQxVGV4
dHVyZVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXI5OjpnZXREWFQzVGV4dHVyZVN1cHBvcnQo
KQoreworICAgIHJldHVybiBtRFhUM1RleHR1cmVTdXBwb3J0OworfQorCitib29sIFJlbmRlcmVy
OTo6Z2V0RFhUNVRleHR1cmVTdXBwb3J0KCkKK3sKKyAgICByZXR1cm4gbURYVDVUZXh0dXJlU3Vw
cG9ydDsKK30KKworYm9vbCBSZW5kZXJlcjk6OmdldERlcHRoVGV4dHVyZVN1cHBvcnQoKSBjb25z
dAoreworICAgIHJldHVybiBtRGVwdGhUZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJl
cjk6OmdldEZsb2F0MzJUZXh0dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wgKnJlbmRl
cmFibGUpCit7CisgICAgKmZpbHRlcmluZyA9IG1GbG9hdDMyRmlsdGVyU3VwcG9ydDsKKyAgICAq
cmVuZGVyYWJsZSA9IG1GbG9hdDMyUmVuZGVyU3VwcG9ydDsKKyAgICByZXR1cm4gbUZsb2F0MzJU
ZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJlcjk6OmdldEZsb2F0MTZUZXh0dXJlU3Vw
cG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wgKnJlbmRlcmFibGUpCit7CisgICAgKmZpbHRlcmlu
ZyA9IG1GbG9hdDE2RmlsdGVyU3VwcG9ydDsKKyAgICAqcmVuZGVyYWJsZSA9IG1GbG9hdDE2UmVu
ZGVyU3VwcG9ydDsKKyAgICByZXR1cm4gbUZsb2F0MTZUZXh0dXJlU3VwcG9ydDsKK30KKworYm9v
bCBSZW5kZXJlcjk6OmdldEx1bWluYW5jZVRleHR1cmVTdXBwb3J0KCkKK3sKKyAgICByZXR1cm4g
bUx1bWluYW5jZVRleHR1cmVTdXBwb3J0OworfQorCitib29sIFJlbmRlcmVyOTo6Z2V0THVtaW5h
bmNlQWxwaGFUZXh0dXJlU3VwcG9ydCgpCit7CisgICAgcmV0dXJuIG1MdW1pbmFuY2VBbHBoYVRl
eHR1cmVTdXBwb3J0OworfQorCitib29sIFJlbmRlcmVyOTo6Z2V0VGV4dHVyZUZpbHRlckFuaXNv
dHJvcHlTdXBwb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzVGV4dHVyZUZpbHRl
ckFuaXNvdHJvcHk7Cit9CisKK2Zsb2F0IFJlbmRlcmVyOTo6Z2V0VGV4dHVyZU1heEFuaXNvdHJv
cHkoKSBjb25zdAoreworICAgIGlmIChtU3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9weSkK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obURldmljZUNhcHMuTWF4
QW5pc290cm9weSk7CisgICAgfQorICAgIHJldHVybiAxLjBmOworfQorCitib29sIFJlbmRlcmVy
OTo6Z2V0RXZlbnRRdWVyeVN1cHBvcnQoKQoreworICAgIHJldHVybiBtRXZlbnRRdWVyeVN1cHBv
cnQ7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldE1heFZlcnRleFRleHR1cmVJbWFn
ZVVuaXRzKCkgY29uc3QKK3sKKyAgICBNRVRBX0FTU0VSVChNQVhfVEVYVFVSRV9JTUFHRV9VTklU
U19WVEZfU00zIDw9IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0Vf
VU5JVFMpOworICAgIHJldHVybiBtVmVydGV4VGV4dHVyZVN1cHBvcnQgPyBNQVhfVEVYVFVSRV9J
TUFHRV9VTklUU19WVEZfU00zIDogMDsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyOTo6Z2V0
TWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdsOjpN
QVhfVEVYVFVSRV9JTUFHRV9VTklUUyArIGdldE1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKCk7
Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldFJlc2VydmVkVmVydGV4VW5pZm9ybVZl
Y3RvcnMoKSBjb25zdAoreworICAgIHJldHVybiAyOyAgIC8vIGR4X1ZpZXdBZGp1c3QgYW5kIGR4
X0RlcHRoUmFuZ2UuCit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldFJlc2VydmVkRnJh
Z21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIDM7ICAgLy8gZHhfVmll
d0Nvb3JkcywgZHhfRGVwdGhGcm9udCBhbmQgZHhfRGVwdGhSYW5nZS4KK30KKwordW5zaWduZWQg
aW50IFJlbmRlcmVyOTo6Z2V0TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMoKSBjb25zdAoreworICAg
IHJldHVybiBNQVhfVkVSVEVYX0NPTlNUQU5UX1ZFQ1RPUlNfRDNEOSAtIGdldFJlc2VydmVkVmVy
dGV4VW5pZm9ybVZlY3RvcnMoKTsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyOTo6Z2V0TWF4
RnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0Cit7CisgICAgY29uc3QgaW50IG1heFBpeGVs
Q29uc3RhbnRWZWN0b3JzID0gKGdldE1ham9yU2hhZGVyTW9kZWwoKSA+PSAzKSA/IE1BWF9QSVhF
TF9DT05TVEFOVF9WRUNUT1JTX1NNMyA6IE1BWF9QSVhFTF9DT05TVEFOVF9WRUNUT1JTX1NNMjsK
KworICAgIHJldHVybiBtYXhQaXhlbENvbnN0YW50VmVjdG9ycyAtIGdldFJlc2VydmVkRnJhZ21l
bnRVbmlmb3JtVmVjdG9ycygpOworfQorCit1bnNpZ25lZCBpbnQgUmVuZGVyZXI5OjpnZXRNYXhW
YXJ5aW5nVmVjdG9ycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIChnZXRNYWpvclNoYWRlck1vZGVs
KCkgPj0gMykgPyBNQVhfVkFSWUlOR19WRUNUT1JTX1NNMyA6IE1BWF9WQVJZSU5HX1ZFQ1RPUlNf
U00yOworfQorCitib29sIFJlbmRlcmVyOTo6Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQoKSBj
b25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlczsKK30KKworYm9v
bCBSZW5kZXJlcjk6OmdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1PY2NsdXNpb25RdWVyeVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXI5OjpnZXRJbnN0
YW5jaW5nU3VwcG9ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EZXZpY2VDYXBzLlBpeGVsU2hh
ZGVyVmVyc2lvbiA+PSBEM0RQU19WRVJTSU9OKDMsIDApOworfQorCitib29sIFJlbmRlcmVyOTo6
Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KCkgY29uc3QKK3sKKyAgICAvLyBQSVggZG9lc24ndCBzZWVt
IHRvIHN1cHBvcnQgdXNpbmcgc2hhcmUgaGFuZGxlcywgc28gZGlzYWJsZSB0aGVtLgorICAgIHJl
dHVybiAobUQzZDlFeCAhPSBOVUxMKSAmJiAhZ2w6OnBlcmZBY3RpdmUoKTsKK30KKworYm9vbCBS
ZW5kZXJlcjk6OmdldERlcml2YXRpdmVJbnN0cnVjdGlvblN1cHBvcnQoKSBjb25zdAoreworICAg
IHJldHVybiAobURldmljZUNhcHMuUFMyMENhcHMuQ2FwcyAmIEQzRFBTMjBDQVBTX0dSQURJRU5U
SU5TVFJVQ1RJT05TKSAhPSAwOworfQorCitib29sIFJlbmRlcmVyOTo6Z2V0UG9zdFN1YkJ1ZmZl
clN1cHBvcnQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCitpbnQgUmVuZGVyZXI5
OjpnZXRNYWpvclNoYWRlck1vZGVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRDNEU0hBREVSX1ZF
UlNJT05fTUFKT1IobURldmljZUNhcHMuUGl4ZWxTaGFkZXJWZXJzaW9uKTsKK30KKworZmxvYXQg
UmVuZGVyZXI5OjpnZXRNYXhQb2ludFNpemUoKSBjb25zdAoreworICAgIC8vIFBvaW50IHNpemUg
Y2xhbXBlZCBhdCAxLjBmIGZvciBTTTIKKyAgICByZXR1cm4gZ2V0TWFqb3JTaGFkZXJNb2RlbCgp
ID09IDMgPyBtRGV2aWNlQ2Fwcy5NYXhQb2ludFNpemUgOiAxLjBmOworfQorCitpbnQgUmVuZGVy
ZXI5OjpnZXRNYXhWaWV3cG9ydERpbWVuc2lvbigpIGNvbnN0Cit7CisgICAgaW50IG1heFRleHR1
cmVEaW1lbnNpb24gPSBzdGQ6Om1pbihzdGQ6Om1pbihnZXRNYXhUZXh0dXJlV2lkdGgoKSwgZ2V0
TWF4VGV4dHVyZUhlaWdodCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChpbnQpZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX1NJWkUpOworICAgIHJldHVy
biBtYXhUZXh0dXJlRGltZW5zaW9uOworfQorCitpbnQgUmVuZGVyZXI5OjpnZXRNYXhUZXh0dXJl
V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiAoaW50KW1EZXZpY2VDYXBzLk1heFRleHR1cmVX
aWR0aDsKK30KKworaW50IFJlbmRlcmVyOTo6Z2V0TWF4VGV4dHVyZUhlaWdodCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIChpbnQpbURldmljZUNhcHMuTWF4VGV4dHVyZUhlaWdodDsKK30KKworYm9v
bCBSZW5kZXJlcjk6OmdldDMyQml0SW5kZXhTdXBwb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bURldmljZUNhcHMuTWF4VmVydGV4SW5kZXggPj0gKDEgPDwgMTYpOworfQorCitEV09SRCBSZW5k
ZXJlcjk6OmdldENhcHNEZWNsVHlwZXMoKSBjb25zdAoreworICAgIHJldHVybiBtRGV2aWNlQ2Fw
cy5EZWNsVHlwZXM7Cit9CisKK2ludCBSZW5kZXJlcjk6OmdldE1pblN3YXBJbnRlcnZhbCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1NaW5Td2FwSW50ZXJ2YWw7Cit9CisKK2ludCBSZW5kZXJlcjk6
OmdldE1heFN3YXBJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1NYXhTd2FwSW50ZXJ2
YWw7Cit9CisKK2ludCBSZW5kZXJlcjk6OmdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSBjb25zdAor
eworICAgIHJldHVybiBtTWF4U3VwcG9ydGVkU2FtcGxlczsKK30KKworaW50IFJlbmRlcmVyOTo6
Z2V0TmVhcmVzdFN1cHBvcnRlZFNhbXBsZXMoRDNERk9STUFUIGZvcm1hdCwgaW50IHJlcXVlc3Rl
ZCkgY29uc3QKK3sKKyAgICBpZiAocmVxdWVzdGVkID09IDApCisgICAgeworICAgICAgICByZXR1
cm4gcmVxdWVzdGVkOworICAgIH0KKworICAgIHN0ZDo6bWFwPEQzREZPUk1BVCwgYm9vbCAqPjo6
Y29uc3RfaXRlcmF0b3IgaXRyID0gbU11bHRpU2FtcGxlU3VwcG9ydC5maW5kKGZvcm1hdCk7Cisg
ICAgaWYgKGl0ciA9PSBtTXVsdGlTYW1wbGVTdXBwb3J0LmVuZCgpKQorICAgIHsKKyAgICAgICAg
aWYgKGZvcm1hdCA9PSBEM0RGTVRfVU5LTk9XTikKKyAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZm9yIChpbnQgaSA9IHJlcXVlc3RlZDsgaSA8
PSBEM0RNVUxUSVNBTVBMRV8xNl9TQU1QTEVTOyArK2kpCisgICAgeworICAgICAgICBpZiAoaXRy
LT5zZWNvbmRbaV0gJiYgaSAhPSBEM0RNVUxUSVNBTVBMRV9OT05NQVNLQUJMRSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
LTE7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldE1heFJlbmRlclRhcmdldHMoKSBj
b25zdAoreworICAgIC8vIHdlIGRvIG5vdCBzdXBwb3J0IE1SVCBpbiBkM2Q5CisgICAgcmV0dXJu
IDE7Cit9CisKK0QzREZPUk1BVCBSZW5kZXJlcjk6OkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3Jt
YXQoR0xpbnQgaW50ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkK
KyAgICB7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2OgorICAgICAgY2FzZSBHTF9E
RVBUSF9DT01QT05FTlQzMl9PRVM6CisgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VT
OgorICAgICAgICByZXR1cm4gRDNERk1UX0lOVFo7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURf
UkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDFfRVhUOgorICAgICAgICByZXR1cm4gRDNERk1UX0RYVDE7CisgICAgICBjYXNlIEdMX0NPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6CisgICAgICAgIHJldHVybiBEM0RGTVRfRFhUMzsK
KyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAgICAgICAg
cmV0dXJuIEQzREZNVF9EWFQ1OworICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoKKyAgICAgIGNh
c2UgR0xfUkdCMzJGX0VYVDoKKyAgICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhUOgorICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgorICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZf
RVhUOgorICAgICAgICByZXR1cm4gRDNERk1UX0EzMkIzMkczMlIzMkY7CisgICAgICBjYXNlIEdM
X1JHQkExNkZfRVhUOgorICAgICAgY2FzZSBHTF9SR0IxNkZfRVhUOgorICAgICAgY2FzZSBHTF9B
TFBIQTE2Rl9FWFQ6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6CisgICAgICBjYXNl
IEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQ6CisgICAgICAgIHJldHVybiBEM0RGTVRfQTE2QjE2
RzE2UjE2RjsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOF9FWFQ6CisgICAgICAgIGlmIChnZXRM
dW1pbmFuY2VUZXh0dXJlU3VwcG9ydCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
RDNERk1UX0w4OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MVU1J
TkFOQ0U4X0FMUEhBOF9FWFQ6CisgICAgICAgIGlmIChnZXRMdW1pbmFuY2VBbHBoYVRleHR1cmVT
dXBwb3J0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBEM0RGTVRfQThMODsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICBj
YXNlIEdMX1JHQjU2NToKKyAgICAgICAgcmV0dXJuIEQzREZNVF9YOFI4RzhCODsKKyAgICB9CisK
KyAgICByZXR1cm4gRDNERk1UX0E4UjhHOEI4OworfQorCitib29sIFJlbmRlcmVyOTo6Y29weVRv
UmVuZGVyVGFyZ2V0KFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKmRlc3QsIFRleHR1cmVTdG9y
YWdlSW50ZXJmYWNlMkQgKnNvdXJjZSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOworCisg
ICAgaWYgKHNvdXJjZSAmJiBkZXN0KQorICAgIHsKKyAgICAgICAgVGV4dHVyZVN0b3JhZ2U5XzJE
ICpzb3VyY2U5ID0gVGV4dHVyZVN0b3JhZ2U5XzJEOjptYWtlVGV4dHVyZVN0b3JhZ2U5XzJEKHNv
dXJjZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgICAgICBUZXh0dXJlU3RvcmFnZTlfMkQg
KmRlc3Q5ID0gVGV4dHVyZVN0b3JhZ2U5XzJEOjptYWtlVGV4dHVyZVN0b3JhZ2U5XzJEKGRlc3Qt
PmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsKKworICAgICAgICBpbnQgbGV2ZWxzID0gc291cmNlOS0+
bGV2ZWxDb3VudCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxldmVsczsgKytpKQor
ICAgICAgICB7CisgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3JjU3VyZiA9IHNvdXJj
ZTktPmdldFN1cmZhY2VMZXZlbChpLCBmYWxzZSk7CisgICAgICAgICAgICBJRGlyZWN0M0RTdXJm
YWNlOSAqZHN0U3VyZiA9IGRlc3Q5LT5nZXRTdXJmYWNlTGV2ZWwoaSwgZmFsc2UpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICByZXN1bHQgPSBjb3B5VG9SZW5kZXJUYXJnZXQoZHN0U3VyZiwg
c3JjU3VyZiwgc291cmNlOS0+aXNNYW5hZ2VkKCkpOworCisgICAgICAgICAgICBpZiAoc3JjU3Vy
Zikgc3JjU3VyZi0+UmVsZWFzZSgpOworICAgICAgICAgICAgaWYgKGRzdFN1cmYpIGRzdFN1cmYt
PlJlbGVhc2UoKTsKKworICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworYm9vbCBSZW5kZXJlcjk6OmNvcHlUb1JlbmRlclRhcmdldChUZXh0dXJlU3RvcmFnZUludGVy
ZmFjZUN1YmUgKmRlc3QsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSAqc291cmNlKQorewor
ICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisKKyAgICBpZiAoc291cmNlICYmIGRlc3QpCisgICAg
eworICAgICAgICBUZXh0dXJlU3RvcmFnZTlfQ3ViZSAqc291cmNlOSA9IFRleHR1cmVTdG9yYWdl
OV9DdWJlOjptYWtlVGV4dHVyZVN0b3JhZ2U5X0N1YmUoc291cmNlLT5nZXRTdG9yYWdlSW5zdGFu
Y2UoKSk7CisgICAgICAgIFRleHR1cmVTdG9yYWdlOV9DdWJlICpkZXN0OSA9IFRleHR1cmVTdG9y
YWdlOV9DdWJlOjptYWtlVGV4dHVyZVN0b3JhZ2U5X0N1YmUoZGVzdC0+Z2V0U3RvcmFnZUluc3Rh
bmNlKCkpOworICAgICAgICBpbnQgbGV2ZWxzID0gc291cmNlOS0+bGV2ZWxDb3VudCgpOworICAg
ICAgICBmb3IgKGludCBmID0gMDsgZiA8IDY7IGYrKykKKyAgICAgICAgeworICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBsZXZlbHM7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3JjU3VyZiA9IHNvdXJjZTktPmdldEN1YmVNYXBT
dXJmYWNlKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGYsIGksIGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZHN0U3VyZiA9IGRlc3Q5LT5nZXRDdWJl
TWFwU3VyZmFjZShHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmLCBpLCB0cnVlKTsK
KworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvcHlUb1JlbmRlclRhcmdldChkc3RTdXJmLCBz
cmNTdXJmLCBzb3VyY2U5LT5pc01hbmFnZWQoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoc3Jj
U3VyZikgc3JjU3VyZi0+UmVsZWFzZSgpOworICAgICAgICAgICAgICAgIGlmIChkc3RTdXJmKSBk
c3RTdXJmLT5SZWxlYXNlKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRDNEUE9PTCBSZW5kZXJlcjk6OmdldEJ1
ZmZlclBvb2woRFdPUkQgdXNhZ2UpIGNvbnN0Cit7CisgICAgaWYgKG1EM2Q5RXggIT0gTlVMTCkK
KyAgICB7CisgICAgICAgIHJldHVybiBEM0RQT09MX0RFRkFVTFQ7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIGlmICghKHVzYWdlICYgRDNEVVNBR0VfRFlOQU1JQykpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBEM0RQT09MX01BTkFHRUQ7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gRDNEUE9PTF9ERUZBVUxUOworfQorCitib29sIFJlbmRlcmVyOTo6Y29w
eUltYWdlKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJE
ICpzdG9yYWdlLCBHTGludCBsZXZlbCkKK3sKKyAgICBSRUNUIHJlY3Q7CisgICAgcmVjdC5sZWZ0
ID0gc291cmNlUmVjdC54OworICAgIHJlY3QudG9wID0gc291cmNlUmVjdC55OworICAgIHJlY3Qu
cmlnaHQgPSBzb3VyY2VSZWN0LnggKyBzb3VyY2VSZWN0LndpZHRoOworICAgIHJlY3QuYm90dG9t
ID0gc291cmNlUmVjdC55ICsgc291cmNlUmVjdC5oZWlnaHQ7CisKKyAgICByZXR1cm4gbUJsaXQt
PmNvcHkoZnJhbWVidWZmZXIsIHJlY3QsIGRlc3RGb3JtYXQsIHhvZmZzZXQsIHlvZmZzZXQsIHN0
b3JhZ2UsIGxldmVsKTsKK30KKworYm9vbCBSZW5kZXJlcjk6OmNvcHlJbWFnZShnbDo6RnJhbWVi
dWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBHTGVu
dW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBHTGVu
dW0gdGFyZ2V0LCBHTGludCBsZXZlbCkKK3sKKyAgICBSRUNUIHJlY3Q7CisgICAgcmVjdC5sZWZ0
ID0gc291cmNlUmVjdC54OworICAgIHJlY3QudG9wID0gc291cmNlUmVjdC55OworICAgIHJlY3Qu
cmlnaHQgPSBzb3VyY2VSZWN0LnggKyBzb3VyY2VSZWN0LndpZHRoOworICAgIHJlY3QuYm90dG9t
ID0gc291cmNlUmVjdC55ICsgc291cmNlUmVjdC5oZWlnaHQ7CisKKyAgICByZXR1cm4gbUJsaXQt
PmNvcHkoZnJhbWVidWZmZXIsIHJlY3QsIGRlc3RGb3JtYXQsIHhvZmZzZXQsIHlvZmZzZXQsIHN0
b3JhZ2UsIHRhcmdldCwgbGV2ZWwpOworfQorCitib29sIFJlbmRlcmVyOTo6YmxpdFJlY3QoZ2w6
OkZyYW1lYnVmZmVyICpyZWFkRnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlYWRS
ZWN0LCBnbDo6RnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmZHJhd1JlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBibGl0UmVuZGVyVGFy
Z2V0LCBib29sIGJsaXREZXB0aFN0ZW5jaWwpCit7CisgICAgZW5kU2NlbmUoKTsKKworICAgIGlm
IChibGl0UmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqcmVh
ZEJ1ZmZlciA9IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoMCk7CisgICAgICAgIGds
OjpSZW5kZXJidWZmZXIgKmRyYXdCdWZmZXIgPSBkcmF3RnJhbWVidWZmZXItPmdldENvbG9yYnVm
ZmVyKDApOworICAgICAgICBSZW5kZXJUYXJnZXQ5ICpyZWFkUmVuZGVyVGFyZ2V0ID0gTlVMTDsK
KyAgICAgICAgUmVuZGVyVGFyZ2V0OSAqZHJhd1JlbmRlclRhcmdldCA9IE5VTEw7CisgICAgICAg
IElEaXJlY3QzRFN1cmZhY2U5KiByZWFkU3VyZmFjZSA9IE5VTEw7CisgICAgICAgIElEaXJlY3Qz
RFN1cmZhY2U5KiBkcmF3U3VyZmFjZSA9IE5VTEw7CisKKyAgICAgICAgaWYgKHJlYWRCdWZmZXIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJlYWRSZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQ5
OjptYWtlUmVuZGVyVGFyZ2V0OShyZWFkQnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKSk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGRyYXdCdWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRy
YXdSZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQ5OjptYWtlUmVuZGVyVGFyZ2V0OShkcmF3QnVm
ZmVyLT5nZXRSZW5kZXJUYXJnZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVhZFJl
bmRlclRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgICAgcmVhZFN1cmZhY2UgPSByZWFkUmVu
ZGVyVGFyZ2V0LT5nZXRTdXJmYWNlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRyYXdSZW5k
ZXJUYXJnZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRyYXdTdXJmYWNlID0gZHJhd1JlbmRl
clRhcmdldC0+Z2V0U3VyZmFjZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFyZWFkU3Vy
ZmFjZSB8fCAhZHJhd1N1cmZhY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVk
IHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0LiIpOworICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBS
RUNUIHNyY1JlY3Q7CisgICAgICAgIHNyY1JlY3QubGVmdCA9IHJlYWRSZWN0Lng7CisgICAgICAg
IHNyY1JlY3QucmlnaHQgPSByZWFkUmVjdC54ICsgcmVhZFJlY3Qud2lkdGg7CisgICAgICAgIHNy
Y1JlY3QudG9wID0gcmVhZFJlY3QueTsKKyAgICAgICAgc3JjUmVjdC5ib3R0b20gPSByZWFkUmVj
dC55ICsgcmVhZFJlY3QuaGVpZ2h0OworCisgICAgICAgIFJFQ1QgZHN0UmVjdDsKKyAgICAgICAg
ZHN0UmVjdC5sZWZ0ID0gZHJhd1JlY3QueDsKKyAgICAgICAgZHN0UmVjdC5yaWdodCA9IGRyYXdS
ZWN0LnggKyBkcmF3UmVjdC53aWR0aDsKKyAgICAgICAgZHN0UmVjdC50b3AgPSBkcmF3UmVjdC55
OworICAgICAgICBkc3RSZWN0LmJvdHRvbSA9IGRyYXdSZWN0LnkgKyBkcmF3UmVjdC5oZWlnaHQ7
CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5TdHJldGNoUmVjdChyZWFkU3Vy
ZmFjZSwgJnNyY1JlY3QsIGRyYXdTdXJmYWNlLCAmZHN0UmVjdCwgRDNEVEVYRl9OT05FKTsKKwor
ICAgICAgICByZWFkU3VyZmFjZS0+UmVsZWFzZSgpOworICAgICAgICBkcmF3U3VyZmFjZS0+UmVs
ZWFzZSgpOworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAg
ICAgICAgRVJSKCJCbGl0RnJhbWVidWZmZXJBTkdMRSBmYWlsZWQ6IFN0cmV0Y2hSZWN0IHJldHVy
bmVkICV4LiIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoYmxpdERlcHRoU3RlbmNpbCkKKyAgICB7CisgICAgICAgIGdsOjpS
ZW5kZXJidWZmZXIgKnJlYWRCdWZmZXIgPSByZWFkRnJhbWVidWZmZXItPmdldERlcHRoT3JTdGVu
Y2lsYnVmZmVyKCk7CisgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKmRyYXdCdWZmZXIgPSBkcmF3
RnJhbWVidWZmZXItPmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKCk7CisgICAgICAgIFJlbmRlclRh
cmdldDkgKnJlYWREZXB0aFN0ZW5jaWwgPSBOVUxMOworICAgICAgICBSZW5kZXJUYXJnZXQ5ICpk
cmF3RGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkqIHJlYWRT
dXJmYWNlID0gTlVMTDsKKyAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkqIGRyYXdTdXJmYWNlID0g
TlVMTDsKKworICAgICAgICBpZiAocmVhZEJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAg
cmVhZERlcHRoU3RlbmNpbCA9IFJlbmRlclRhcmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5KHJlYWRC
dWZmZXItPmdldERlcHRoU3RlbmNpbCgpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZHJhd0J1
ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgZHJhd0RlcHRoU3RlbmNpbCA9IFJlbmRlclRh
cmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5KGRyYXdCdWZmZXItPmdldERlcHRoU3RlbmNpbCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChyZWFkRGVwdGhTdGVuY2lsKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZWFkU3VyZmFjZSA9IHJlYWREZXB0aFN0ZW5jaWwtPmdldFN1cmZhY2UoKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoZHJhd0RlcHRoU3RlbmNpbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZHJhd1N1cmZhY2UgPSBkcmF3RGVwdGhTdGVuY2lsLT5nZXRTdXJmYWNlKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIXJlYWRTdXJmYWNlIHx8ICFkcmF3U3VyZmFjZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIHJlbmRlciB0
YXJnZXQuIik7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlks
IGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+
U3RyZXRjaFJlY3QocmVhZFN1cmZhY2UsIE5VTEwsIGRyYXdTdXJmYWNlLCBOVUxMLCBEM0RURVhG
X05PTkUpOworCisgICAgICAgIHJlYWRTdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgICAgIGRyYXdT
dXJmYWNlLT5SZWxlYXNlKCk7CisKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAg
ICB7CisgICAgICAgICAgICBFUlIoIkJsaXRGcmFtZWJ1ZmZlckFOR0xFIGZhaWxlZDogU3RyZXRj
aFJlY3QgcmV0dXJuZWQgJXguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbmRlcmVy
OTo6cmVhZFBpeGVscyhnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBHTGludCB4LCBHTGlu
dCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBvdXRwdXRQaXRjaCwg
Ym9vbCBwYWNrUmV2ZXJzZVJvd09yZGVyLCBHTGludCBwYWNrQWxpZ25tZW50LCB2b2lkKiBwaXhl
bHMpCit7CisgICAgUmVuZGVyVGFyZ2V0OSAqcmVuZGVyVGFyZ2V0ID0gTlVMTDsKKyAgICBJRGly
ZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSA9IE5VTEw7CisgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqY29s
b3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoMCk7CisKKyAgICBpZiAoY29s
b3JidWZmZXIpCisgICAgeworICAgICAgICByZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQ5Ojpt
YWtlUmVuZGVyVGFyZ2V0OShjb2xvcmJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAgIH0K
KyAgICAKKyAgICBpZiAocmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgc3VyZmFjZSA9IHJl
bmRlclRhcmdldC0+Z2V0U3VyZmFjZSgpOworICAgIH0KKworICAgIGlmICghc3VyZmFjZSkKKyAg
ICB7CisgICAgICAgIC8vIGNvbnRleHQgbXVzdCBiZSBsb3N0CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBEM0RTVVJGQUNFX0RFU0MgZGVzYzsKKyAgICBzdXJmYWNlLT5HZXREZXNjKCZk
ZXNjKTsKKworICAgIGlmIChkZXNjLk11bHRpU2FtcGxlVHlwZSAhPSBEM0RNVUxUSVNBTVBMRV9O
T05FKQorICAgIHsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FOiBSZXF1aXJl
cyByZXNvbHZlIHVzaW5nIFN0cmV0Y2hSZWN0IGludG8gbm9uLW11bHRpc2FtcGxlZCByZW5kZXIg
dGFyZ2V0CisgICAgICAgIHN1cmZhY2UtPlJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9CisKKyAgICBIUkVTVUxUIHJlc3VsdDsKKyAg
ICBJRGlyZWN0M0RTdXJmYWNlOSAqc3lzdGVtU3VyZmFjZSA9IE5VTEw7CisgICAgYm9vbCBkaXJl
Y3RUb1BpeGVscyA9ICFwYWNrUmV2ZXJzZVJvd09yZGVyICYmIHBhY2tBbGlnbm1lbnQgPD0gNCAm
JiBnZXRTaGFyZUhhbmRsZVN1cHBvcnQoKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICB4
ID09IDAgJiYgeSA9PSAwICYmIFVJTlQod2lkdGgpID09IGRlc2MuV2lkdGggJiYgVUlOVChoZWln
aHQpID09IGRlc2MuSGVpZ2h0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2MuRm9y
bWF0ID09IEQzREZNVF9BOFI4RzhCOCAmJiBmb3JtYXQgPT0gR0xfQkdSQV9FWFQgJiYgdHlwZSA9
PSBHTF9VTlNJR05FRF9CWVRFOworICAgIGlmIChkaXJlY3RUb1BpeGVscykKKyAgICB7CisgICAg
ICAgIC8vIFVzZSB0aGUgcGl4ZWxzIHB0ciBhcyBhIHNoYXJlZCBoYW5kbGUgdG8gd3JpdGUgZGly
ZWN0bHkgaW50byBjbGllbnQncyBtZW1vcnkKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3Jl
YXRlT2Zmc2NyZWVuUGxhaW5TdXJmYWNlKGRlc2MuV2lkdGgsIGRlc2MuSGVpZ2h0LCBkZXNjLkZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEQzRFBPT0xfU1lTVEVNTUVNLCAmc3lzdGVtU3VyZmFjZSwgJnBpeGVscyk7CisgICAgICAg
IGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVHJ5IGFnYWlu
IHdpdGhvdXQgdGhlIHNoYXJlZCBoYW5kbGUKKyAgICAgICAgICAgIGRpcmVjdFRvUGl4ZWxzID0g
ZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWRpcmVjdFRvUGl4ZWxzKQorICAg
IHsKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlT2Zmc2NyZWVuUGxhaW5TdXJmYWNl
KGRlc2MuV2lkdGgsIGRlc2MuSGVpZ2h0LCBkZXNjLkZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFBPT0xfU1lTVEVNTUVNLCAm
c3lzdGVtU3VyZmFjZSwgTlVMTCk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9S
WSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7CisgICAgICAgICAgICBzdXJmYWNlLT5SZWxl
YXNlKCk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0ID0gbURldmljZS0+R2V0UmVuZGVyVGFyZ2V0
RGF0YShzdXJmYWNlLCBzeXN0ZW1TdXJmYWNlKTsKKyAgICBzdXJmYWNlLT5SZWxlYXNlKCk7Cisg
ICAgc3VyZmFjZSA9IE5VTEw7CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAg
ICAgICBzeXN0ZW1TdXJmYWNlLT5SZWxlYXNlKCk7CisKKyAgICAgICAgLy8gSXQgdHVybnMgb3V0
IHRoYXQgRDNEIHdpbGwgc29tZXRpbWVzIHByb2R1Y2UgbW9yZSBlcnJvcgorICAgICAgICAvLyBj
b2RlcyB0aGFuIHRob3NlIGRvY3VtZW50ZWQuCisgICAgICAgIGlmIChkM2Q5Ojppc0RldmljZUxv
c3RFcnJvcihyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBub3RpZnlEZXZpY2VMb3N0
KCk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgfQorCisgICAgaWYgKGRp
cmVjdFRvUGl4ZWxzKQorICAgIHsKKyAgICAgICAgc3lzdGVtU3VyZmFjZS0+UmVsZWFzZSgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUkVDVCByZWN0OworICAgIHJlY3QubGVmdCA9
IGdsOjpjbGFtcCh4LCAwTCwgc3RhdGljX2Nhc3Q8TE9ORz4oZGVzYy5XaWR0aCkpOworICAgIHJl
Y3QudG9wID0gZ2w6OmNsYW1wKHksIDBMLCBzdGF0aWNfY2FzdDxMT05HPihkZXNjLkhlaWdodCkp
OworICAgIHJlY3QucmlnaHQgPSBnbDo6Y2xhbXAoeCArIHdpZHRoLCAwTCwgc3RhdGljX2Nhc3Q8
TE9ORz4oZGVzYy5XaWR0aCkpOworICAgIHJlY3QuYm90dG9tID0gZ2w6OmNsYW1wKHkgKyBoZWln
aHQsIDBMLCBzdGF0aWNfY2FzdDxMT05HPihkZXNjLkhlaWdodCkpOworCisgICAgRDNETE9DS0VE
X1JFQ1QgbG9jazsKKyAgICByZXN1bHQgPSBzeXN0ZW1TdXJmYWNlLT5Mb2NrUmVjdCgmbG9jaywg
JnJlY3QsIEQzRExPQ0tfUkVBRE9OTFkpOworCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAg
IHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgc3lzdGVtU3VyZmFjZS0+UmVsZWFz
ZSgpOworCisgICAgICAgIHJldHVybjsgICAvLyBObyBzZW5zaWJsZSBlcnJvciB0byBnZW5lcmF0
ZQorICAgIH0KKworICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSAodW5zaWduZWQgY2hhciopcGl4
ZWxzOworICAgIHVuc2lnbmVkIHNob3J0ICpkZXN0MTYgPSAodW5zaWduZWQgc2hvcnQqKXBpeGVs
czsKKworICAgIHVuc2lnbmVkIGNoYXIgKnNvdXJjZTsKKyAgICBpbnQgaW5wdXRQaXRjaDsKKyAg
ICBpZiAocGFja1JldmVyc2VSb3dPcmRlcikKKyAgICB7CisgICAgICAgIHNvdXJjZSA9ICgodW5z
aWduZWQgY2hhciopbG9jay5wQml0cykgKyBsb2NrLlBpdGNoICogKHJlY3QuYm90dG9tIC0gcmVj
dC50b3AgLSAxKTsKKyAgICAgICAgaW5wdXRQaXRjaCA9IC1sb2NrLlBpdGNoOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBzb3VyY2UgPSAodW5zaWduZWQgY2hhciopbG9jay5wQml0
czsKKyAgICAgICAgaW5wdXRQaXRjaCA9IGxvY2suUGl0Y2g7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgaW50IGZhc3RQaXhlbFNpemUgPSAwOworCisgICAgaWYgKGRlc2MuRm9ybWF0ID09IEQzREZN
VF9BOFI4RzhCOCAmJgorICAgICAgICBmb3JtYXQgPT0gR0xfQkdSQV9FWFQgJiYKKyAgICAgICAg
dHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFKQorICAgIHsKKyAgICAgICAgZmFzdFBpeGVsU2l6ZSA9
IDQ7CisgICAgfQorICAgIGVsc2UgaWYgKChkZXNjLkZvcm1hdCA9PSBEM0RGTVRfQTRSNEc0QjQg
JiYKKyAgICAgICAgICAgICBmb3JtYXQgPT0gR0xfQkdSQV9FWFQgJiYKKyAgICAgICAgICAgICB0
eXBlID09IEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVCkgfHwKKyAgICAgICAgICAg
ICAoZGVzYy5Gb3JtYXQgPT0gRDNERk1UX0ExUjVHNUI1ICYmCisgICAgICAgICAgICAgZm9ybWF0
ID09IEdMX0JHUkFfRVhUICYmCisgICAgICAgICAgICAgdHlwZSA9PSBHTF9VTlNJR05FRF9TSE9S
VF8xXzVfNV81X1JFVl9FWFQpKQorICAgIHsKKyAgICAgICAgZmFzdFBpeGVsU2l6ZSA9IDI7Cisg
ICAgfQorICAgIGVsc2UgaWYgKGRlc2MuRm9ybWF0ID09IEQzREZNVF9BMTZCMTZHMTZSMTZGICYm
CisgICAgICAgICAgICAgZm9ybWF0ID09IEdMX1JHQkEgJiYKKyAgICAgICAgICAgICB0eXBlID09
IEdMX0hBTEZfRkxPQVRfT0VTKQorICAgIHsKKyAgICAgICAgZmFzdFBpeGVsU2l6ZSA9IDg7Cisg
ICAgfQorICAgIGVsc2UgaWYgKGRlc2MuRm9ybWF0ID09IEQzREZNVF9BMzJCMzJHMzJSMzJGICYm
CisgICAgICAgICAgICAgZm9ybWF0ID09IEdMX1JHQkEgJiYKKyAgICAgICAgICAgICB0eXBlID09
IEdMX0ZMT0FUKQorICAgIHsKKyAgICAgICAgZmFzdFBpeGVsU2l6ZSA9IDE2OworICAgIH0KKwor
ICAgIGZvciAoaW50IGogPSAwOyBqIDwgcmVjdC5ib3R0b20gLSByZWN0LnRvcDsgaisrKQorICAg
IHsKKyAgICAgICAgaWYgKGZhc3RQaXhlbFNpemUgIT0gMCkKKyAgICAgICAgeworICAgICAgICAg
ICAgLy8gRmFzdCBwYXRoIGZvciBmb3JtYXRzIHdoaWNoIHJlcXVpcmUgbm8gdHJhbnNsYXRpb246
CisgICAgICAgICAgICAvLyBEM0RGTVRfQThSOEc4QjggdG8gQkdSQS9VTlNJR05FRF9CWVRFCisg
ICAgICAgICAgICAvLyBEM0RGTVRfQTRSNEc0QjQgdG8gQkdSQS9VTlNJR05FRF9TSE9SVF80XzRf
NF80X1JFVl9FWFQKKyAgICAgICAgICAgIC8vIEQzREZNVF9BMVI1RzVCNSB0byBCR1JBL1VOU0lH
TkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVAorICAgICAgICAgICAgLy8gRDNERk1UX0ExNkIxNkcx
NlIxNkYgdG8gUkdCQS9IQUxGX0ZMT0FUX09FUworICAgICAgICAgICAgLy8gRDNERk1UX0EzMkIz
MkczMlIzMkYgdG8gUkdCQS9GTE9BVAorICAgICAgICAgICAgLy8gCisgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgYnVmZmVycyB3aXRoIG5vIGFscGhhIGdvIHRocm91Z2ggdGhlIHNsb3cgcGF0aCBi
ZWxvdy4KKyAgICAgICAgICAgIG1lbWNweShkZXN0ICsgaiAqIG91dHB1dFBpdGNoLAorICAgICAg
ICAgICAgICAgICAgIHNvdXJjZSArIGogKiBpbnB1dFBpdGNoLAorICAgICAgICAgICAgICAgICAg
IChyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0KSAqIGZhc3RQaXhlbFNpemUpOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZGVzYy5Gb3JtYXQgPT0gRDNE
Rk1UX0E4UjhHOEI4ICYmCisgICAgICAgICAgICAgICAgIGZvcm1hdCA9PSBHTF9SR0JBICYmCisg
ICAgICAgICAgICAgICAgIHR5cGUgPT0gR0xfVU5TSUdORURfQllURSkKKyAgICAgICAgeworICAg
ICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBzd2FwcGluZyByZWQgd2l0aCBibHVlCisgICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3QucmlnaHQgLSByZWN0LmxlZnQ7IGkrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJnYiA9ICoodW5zaWdu
ZWQgaW50Kikoc291cmNlICsgNCAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisgICAgICAgICAgICAg
ICAgKih1bnNpZ25lZCBpbnQqKShkZXN0ICsgNCAqIGkgKyBqICogb3V0cHV0UGl0Y2gpID0KKyAg
ICAgICAgICAgICAgICAgICAgKGFyZ2IgJiAweEZGMDBGRjAwKSB8ICAgICAgIC8vIEtlZXAgYWxw
aGEgYW5kIGdyZWVuCisgICAgICAgICAgICAgICAgICAgIChhcmdiICYgMHgwMEZGMDAwMCkgPj4g
MTYgfCAvLyBNb3ZlIHJlZCB0byBibHVlCisgICAgICAgICAgICAgICAgICAgIChhcmdiICYgMHgw
MDAwMDBGRikgPDwgMTY7ICAvLyBNb3ZlIGJsdWUgdG8gcmVkCisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcmVjdC5yaWdodCAtIHJlY3QubGVmdDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBm
bG9hdCByOworICAgICAgICAgICAgZmxvYXQgZzsKKyAgICAgICAgICAgIGZsb2F0IGI7CisgICAg
ICAgICAgICBmbG9hdCBhOworCisgICAgICAgICAgICBzd2l0Y2ggKGRlc2MuRm9ybWF0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9SNUc2QjU6CisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCByZ2IgPSAqKHVuc2ln
bmVkIHNob3J0Kikoc291cmNlICsgMiAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgYSA9IDEuMGY7CisgICAgICAgICAgICAgICAgICAgIGIgPSAocmdiICYgMHgw
MDFGKSAqICgxLjBmIC8gMHgwMDFGKTsKKyAgICAgICAgICAgICAgICAgICAgZyA9IChyZ2IgJiAw
eDA3RTApICogKDEuMGYgLyAweDA3RTApOworICAgICAgICAgICAgICAgICAgICByID0gKHJnYiAm
IDB4RjgwMCkgKiAoMS4wZiAvIDB4RjgwMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9BMVI1RzVCNToKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IGFyZ2IgPSAq
KHVuc2lnbmVkIHNob3J0Kikoc291cmNlICsgMiAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgYSA9IChhcmdiICYgMHg4MDAwKSA/IDEuMGYgOiAwLjBmOworICAg
ICAgICAgICAgICAgICAgICBiID0gKGFyZ2IgJiAweDAwMUYpICogKDEuMGYgLyAweDAwMUYpOwor
ICAgICAgICAgICAgICAgICAgICBnID0gKGFyZ2IgJiAweDAzRTApICogKDEuMGYgLyAweDAzRTAp
OworICAgICAgICAgICAgICAgICAgICByID0gKGFyZ2IgJiAweDdDMDApICogKDEuMGYgLyAweDdD
MDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6CisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJnYiA9ICoodW5zaWduZWQgaW50Kikoc291cmNlICsg
NCAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisKKyAgICAgICAgICAgICAgICAgICAgYSA9IChhcmdi
ICYgMHhGRjAwMDAwMCkgKiAoMS4wZiAvIDB4RkYwMDAwMDApOworICAgICAgICAgICAgICAgICAg
ICBiID0gKGFyZ2IgJiAweDAwMDAwMEZGKSAqICgxLjBmIC8gMHgwMDAwMDBGRik7CisgICAgICAg
ICAgICAgICAgICAgIGcgPSAoYXJnYiAmIDB4MDAwMEZGMDApICogKDEuMGYgLyAweDAwMDBGRjAw
KTsKKyAgICAgICAgICAgICAgICAgICAgciA9IChhcmdiICYgMHgwMEZGMDAwMCkgKiAoMS4wZiAv
IDB4MDBGRjAwMDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgeHJnYiA9ICoodW5zaWduZWQgaW50Kiko
c291cmNlICsgNCAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisKKyAgICAgICAgICAgICAgICAgICAg
YSA9IDEuMGY7CisgICAgICAgICAgICAgICAgICAgIGIgPSAoeHJnYiAmIDB4MDAwMDAwRkYpICog
KDEuMGYgLyAweDAwMDAwMEZGKTsKKyAgICAgICAgICAgICAgICAgICAgZyA9ICh4cmdiICYgMHgw
MDAwRkYwMCkgKiAoMS4wZiAvIDB4MDAwMEZGMDApOworICAgICAgICAgICAgICAgICAgICByID0g
KHhyZ2IgJiAweDAwRkYwMDAwKSAqICgxLjBmIC8gMHgwMEZGMDAwMCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9B
MlIxMEcxMEIxMDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBhcmdiID0gKih1bnNpZ25lZCBpbnQqKShzb3VyY2UgKyA0ICogaSArIGogKiBpbnB1
dFBpdGNoKTsKKworICAgICAgICAgICAgICAgICAgICBhID0gKGFyZ2IgJiAweEMwMDAwMDAwKSAq
ICgxLjBmIC8gMHhDMDAwMDAwMCk7CisgICAgICAgICAgICAgICAgICAgIGIgPSAoYXJnYiAmIDB4
MDAwMDAzRkYpICogKDEuMGYgLyAweDAwMDAwM0ZGKTsKKyAgICAgICAgICAgICAgICAgICAgZyA9
IChhcmdiICYgMHgwMDBGRkMwMCkgKiAoMS4wZiAvIDB4MDAwRkZDMDApOworICAgICAgICAgICAg
ICAgICAgICByID0gKGFyZ2IgJiAweDNGRjAwMDAwKSAqICgxLjBmIC8gMHgzRkYwMDAwMCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gZmxvYXQgZm9ybWF0cyBpbiBEM0QgYXJlIHN0b3JlZCByZ2JhLCByYXRoZXIg
dGhhbiB0aGUgb3RoZXIgd2F5IHJvdW5kCisgICAgICAgICAgICAgICAgICAgIHIgPSAqKChmbG9h
dCopKHNvdXJjZSArIDE2ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDApOworICAgICAgICAgICAg
ICAgICAgICBnID0gKigoZmxvYXQqKShzb3VyY2UgKyAxNiAqIGkgKyBqICogaW5wdXRQaXRjaCkg
KyAxKTsKKyAgICAgICAgICAgICAgICAgICAgYiA9ICooKGZsb2F0Kikoc291cmNlICsgMTYgKiBp
ICsgaiAqIGlucHV0UGl0Y2gpICsgMik7CisgICAgICAgICAgICAgICAgICAgIGEgPSAqKChmbG9h
dCopKHNvdXJjZSArIDE2ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDMpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRf
QTE2QjE2RzE2UjE2RjoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8v
IGZsb2F0IGZvcm1hdHMgaW4gRDNEIGFyZSBzdG9yZWQgcmdiYSwgcmF0aGVyIHRoYW4gdGhlIG90
aGVyIHdheSByb3VuZAorICAgICAgICAgICAgICAgICAgICByID0gZ2w6OmZsb2F0MTZUb0Zsb2F0
MzIoKigodW5zaWduZWQgc2hvcnQqKShzb3VyY2UgKyA4ICogaSArIGogKiBpbnB1dFBpdGNoKSAr
IDApKTsKKyAgICAgICAgICAgICAgICAgICAgZyA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKCooKHVu
c2lnbmVkIHNob3J0Kikoc291cmNlICsgOCAqIGkgKyBqICogaW5wdXRQaXRjaCkgKyAxKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGIgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMigqKCh1bnNpZ25lZCBz
aG9ydCopKHNvdXJjZSArIDggKiBpICsgaiAqIGlucHV0UGl0Y2gpICsgMikpOworICAgICAgICAg
ICAgICAgICAgICBhID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoKigodW5zaWduZWQgc2hvcnQqKShz
b3VyY2UgKyA4ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDMpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHN3aXRjaCAoZm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBj
YXNlIEdMX1JHQkE6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAg
ICAgICAgICAgICAgZGVzdFs0ICogaSArIGogKiBvdXRwdXRQaXRjaCArIDBdID0gKHVuc2lnbmVk
IGNoYXIpKDI1NSAqIHIgKyAwLjVmKTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFs0ICogaSAr
IGogKiBvdXRwdXRQaXRjaCArIDFdID0gKHVuc2lnbmVkIGNoYXIpKDI1NSAqIGcgKyAwLjVmKTsK
KyAgICAgICAgICAgICAgICAgICAgZGVzdFs0ICogaSArIGogKiBvdXRwdXRQaXRjaCArIDJdID0g
KHVuc2lnbmVkIGNoYXIpKDI1NSAqIGIgKyAwLjVmKTsKKyAgICAgICAgICAgICAgICAgICAgZGVz
dFs0ICogaSArIGogKiBvdXRwdXRQaXRjaCArIDNdID0gKHVuc2lnbmVkIGNoYXIpKDI1NSAqIGEg
KyAwLjVmKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBk
ZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgICAgICBkZXN0WzQgKiBpICsgaiAq
IG91dHB1dFBpdGNoICsgMF0gPSAodW5zaWduZWQgY2hhcikoMjU1ICogYiArIDAuNWYpOworICAg
ICAgICAgICAgICAgICAgICBkZXN0WzQgKiBpICsgaiAqIG91dHB1dFBpdGNoICsgMV0gPSAodW5z
aWduZWQgY2hhcikoMjU1ICogZyArIDAuNWYpOworICAgICAgICAgICAgICAgICAgICBkZXN0WzQg
KiBpICsgaiAqIG91dHB1dFBpdGNoICsgMl0gPSAodW5zaWduZWQgY2hhcikoMjU1ICogciArIDAu
NWYpOworICAgICAgICAgICAgICAgICAgICBkZXN0WzQgKiBpICsgaiAqIG91dHB1dFBpdGNoICsg
M10gPSAodW5zaWduZWQgY2hhcikoMjU1ICogYSArIDAuNWYpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRf
NF9SRVZfRVhUOgorICAgICAgICAgICAgICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIGRlc2t0
b3AgR0wgc3BlYyBpbiB0aGUgIlRyYW5zZmVyIG9mIFBpeGVsIFJlY3RhbmdsZXMiIHNlY3Rpb24K
KyAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyB0eXBlIGlzIHBhY2tlZCBhcyBmb2xsb3dzOgor
ICAgICAgICAgICAgICAgICAgICAvLyAgIDE1ICAgMTQgICAxMyAgIDEyICAgMTEgICAxMCAgICA5
ICAgIDggICAgNyAgICA2ICAgIDUgICAgNCAgICAzICAgIDIgICAgMSAgICAwCisgICAgICAgICAg
ICAgICAgICAgIC8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg
ICAvLyB8ICAgICAgIDR0aCAgICAgICAgIHwgICAgICAgIDNyZCAgICAgICAgIHwgICAgICAgIDJu
ZCAgICAgICAgfCAgIDFzdCBjb21wb25lbnQgICB8CisgICAgICAgICAgICAgICAgICAgIC8vICAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgY2Fz
ZSBvZiBCR1JBX0VYVCwgQiBpcyB0aGUgZmlyc3QgY29tcG9uZW50LCBHIHRoZSBzZWNvbmQsIGFu
ZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgZGVzdDE2W2kgKyBqICogb3V0cHV0UGl0
Y2ggLyBzaXplb2YodW5zaWduZWQgc2hvcnQpXSA9CisgICAgICAgICAgICAgICAgICAgICAgICAo
KHVuc2lnbmVkIHNob3J0KSgxNSAqIGEgKyAwLjVmKSA8PCAxMil8CisgICAgICAgICAgICAgICAg
ICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgxNSAqIHIgKyAwLjVmKSA8PCA4KSB8CisgICAgICAg
ICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgxNSAqIGcgKyAwLjVmKSA8PCA0KSB8
CisgICAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgxNSAqIGIgKyAwLjVm
KSA8PCAwKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBj
YXNlIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVDoKKyAgICAgICAgICAgICAgICAg
ICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBkZXNrdG9wIEdMIHNwZWMgaW4gdGhlICJUcmFuc2ZlciBv
ZiBQaXhlbCBSZWN0YW5nbGVzIiBzZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMg
dHlwZSBpcyBwYWNrZWQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgLy8gICAxNSAg
IDE0ICAgMTMgICAxMiAgIDExICAgMTAgICAgOSAgICA4ICAgIDcgICAgNiAgICA1ICAgIDQgICAg
MyAgICAyICAgIDEgICAgMAorICAgICAgICAgICAgICAgICAgICAvLyAgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgLy8gfCA0dGggfCAgICAgICAgICAzcmQgICAg
ICAgICAgIHwgICAgICAgICAgIDJuZCAgICAgICAgICB8ICAgICAgMXN0IGNvbXBvbmVudCAgICAg
fAorICAgICAgICAgICAgICAgICAgICAvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg
ICAgICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgQkdSQV9FWFQsIEIgaXMgdGhlIGZpcnN0
IGNvbXBvbmVudCwgRyB0aGUgc2Vjb25kLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAg
ICAgIGRlc3QxNltpICsgaiAqIG91dHB1dFBpdGNoIC8gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KV0g
PQorICAgICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBzaG9ydCkoICAgICBhICsgMC41
ZikgPDwgMTUpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgc2hvcnQpKDMx
ICogciArIDAuNWYpIDw8IDEwKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVk
IHNob3J0KSgzMSAqIGcgKyAwLjVmKSA8PCA1KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAo
KHVuc2lnbmVkIHNob3J0KSgzMSAqIGIgKyAwLjVmKSA8PCAwKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9SR0I6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82XzU6CisgICAg
ICAgICAgICAgICAgICAgIGRlc3QxNltpICsgaiAqIG91dHB1dFBpdGNoIC8gc2l6ZW9mKHVuc2ln
bmVkIHNob3J0KV0gPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgc2hvcnQp
KDMxICogYiArIDAuNWYpIDw8IDApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICgodW5zaWdu
ZWQgc2hvcnQpKDYzICogZyArIDAuNWYpIDw8IDUpIHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICgodW5zaWduZWQgc2hvcnQpKDMxICogciArIDAuNWYpIDw8IDExKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Cisg
ICAgICAgICAgICAgICAgICAgIGRlc3RbMyAqIGkgKyBqICogb3V0cHV0UGl0Y2ggKyAwXSA9ICh1
bnNpZ25lZCBjaGFyKSgyNTUgKiByICsgMC41Zik7CisgICAgICAgICAgICAgICAgICAgIGRlc3Rb
MyAqIGkgKyBqICogb3V0cHV0UGl0Y2ggKyAxXSA9ICh1bnNpZ25lZCBjaGFyKSgyNTUgKiBnICsg
MC41Zik7CisgICAgICAgICAgICAgICAgICAgIGRlc3RbMyAqIGkgKyBqICogb3V0cHV0UGl0Y2gg
KyAyXSA9ICh1bnNpZ25lZCBjaGFyKSgyNTUgKiBiICsgMC41Zik7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBzeXN0ZW1TdXJmYWNlLT5VbmxvY2tSZWN0KCk7CisKKyAgICBzeXN0ZW1TdXJmYWNlLT5S
ZWxlYXNlKCk7Cit9CisKK1JlbmRlclRhcmdldCAqUmVuZGVyZXI5OjpjcmVhdGVSZW5kZXJUYXJn
ZXQoU3dhcENoYWluICpzd2FwQ2hhaW4sIGJvb2wgZGVwdGgpCit7CisgICAgU3dhcENoYWluOSAq
c3dhcENoYWluOSA9IFN3YXBDaGFpbjk6Om1ha2VTd2FwQ2hhaW45KHN3YXBDaGFpbik7CisgICAg
SURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UgPSBOVUxMOworICAgIGlmIChkZXB0aCkKKyAgICB7
CisgICAgICAgIHN1cmZhY2UgPSBzd2FwQ2hhaW45LT5nZXREZXB0aFN0ZW5jaWwoKTsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc3VyZmFjZSA9IHN3YXBDaGFpbjktPmdldFJlbmRl
clRhcmdldCgpOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDkgKnJlbmRlclRhcmdldCA9IG5l
dyBSZW5kZXJUYXJnZXQ5KHRoaXMsIHN1cmZhY2UpOworCisgICAgcmV0dXJuIHJlbmRlclRhcmdl
dDsKK30KKworUmVuZGVyVGFyZ2V0ICpSZW5kZXJlcjk6OmNyZWF0ZVJlbmRlclRhcmdldChpbnQg
d2lkdGgsIGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywgYm9vbCBk
ZXB0aCkKK3sKKyAgICBSZW5kZXJUYXJnZXQ5ICpyZW5kZXJUYXJnZXQgPSBuZXcgUmVuZGVyVGFy
Z2V0OSh0aGlzLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHNhbXBsZXMpOworICAgIHJldHVybiBy
ZW5kZXJUYXJnZXQ7Cit9CisKK1NoYWRlckV4ZWN1dGFibGUgKlJlbmRlcmVyOTo6bG9hZEV4ZWN1
dGFibGUoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIHJ4OjpTaGFkZXJUeXBl
IHR5cGUpCit7CisgICAgU2hhZGVyRXhlY3V0YWJsZTkgKmV4ZWN1dGFibGUgPSBOVUxMOworCisg
ICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgIGNhc2Ugcng6OlNIQURFUl9WRVJURVg6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIElEaXJlY3QzRFZlcnRleFNoYWRlcjkgKnZzaGFkZXIgPSBj
cmVhdGVWZXJ0ZXhTaGFkZXIoKERXT1JEKilmdW5jdGlvbiwgbGVuZ3RoKTsKKyAgICAgICAgICAg
IGlmICh2c2hhZGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUg
PSBuZXcgU2hhZGVyRXhlY3V0YWJsZTkoZnVuY3Rpb24sIGxlbmd0aCwgdnNoYWRlcik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIHJ4OjpTSEFE
RVJfUElYRUw6CisgICAgICAgIHsKKyAgICAgICAgICAgIElEaXJlY3QzRFBpeGVsU2hhZGVyOSAq
cHNoYWRlciA9IGNyZWF0ZVBpeGVsU2hhZGVyKChEV09SRCopZnVuY3Rpb24sIGxlbmd0aCk7Cisg
ICAgICAgICAgICBpZiAocHNoYWRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBl
eGVjdXRhYmxlID0gbmV3IFNoYWRlckV4ZWN1dGFibGU5KGZ1bmN0aW9uLCBsZW5ndGgsIHBzaGFk
ZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgZGVm
YXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgcmV0dXJuIGV4ZWN1dGFibGU7Cit9CisKK1NoYWRlckV4ZWN1dGFibGUgKlJlbmRlcmVyOTo6
Y29tcGlsZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgY2hhciAqc2hh
ZGVySExTTCwgcng6OlNoYWRlclR5cGUgdHlwZSkKK3sKKyAgICBjb25zdCBjaGFyICpwcm9maWxl
ID0gTlVMTDsKKworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIHJ4OjpTSEFE
RVJfVkVSVEVYOgorICAgICAgICBwcm9maWxlID0gZ2V0TWFqb3JTaGFkZXJNb2RlbCgpID49IDMg
PyAidnNfM18wIiA6ICJ2c18yXzAiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ugcng6OlNI
QURFUl9QSVhFTDoKKyAgICAgICAgcHJvZmlsZSA9IGdldE1ham9yU2hhZGVyTW9kZWwoKSA+PSAz
ID8gInBzXzNfMCIgOiAicHNfMl8wIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0Ogor
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAg
ICBJRDNEQmxvYiAqYmluYXJ5ID0gKElEM0RCbG9iKiljb21waWxlVG9CaW5hcnkoaW5mb0xvZywg
c2hhZGVySExTTCwgcHJvZmlsZSwgQU5HTEVfQ09NUElMRV9PUFRJTUlaQVRJT05fTEVWRUwsIHRy
dWUpOworICAgIGlmICghYmluYXJ5KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFNoYWRl
ckV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBsb2FkRXhlY3V0YWJsZShiaW5hcnktPkdldEJ1ZmZl
clBvaW50ZXIoKSwgYmluYXJ5LT5HZXRCdWZmZXJTaXplKCksIHR5cGUpOworICAgIGJpbmFyeS0+
UmVsZWFzZSgpOworCisgICAgcmV0dXJuIGV4ZWN1dGFibGU7Cit9CisKK2Jvb2wgUmVuZGVyZXI5
Ojpib3hGaWx0ZXIoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgSURpcmVjdDNEU3VyZmFjZTkg
KmRlc3QpCit7CisgICAgcmV0dXJuIG1CbGl0LT5ib3hGaWx0ZXIoc291cmNlLCBkZXN0KTsKK30K
KworRDNEUE9PTCBSZW5kZXJlcjk6OmdldFRleHR1cmVQb29sKERXT1JEIHVzYWdlKSBjb25zdAor
eworICAgIGlmIChtRDNkOUV4ICE9IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4gRDNEUE9P
TF9ERUZBVUxUOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoISh1c2FnZSAm
IChEM0RVU0FHRV9ERVBUSFNURU5DSUwgfCBEM0RVU0FHRV9SRU5ERVJUQVJHRVQpKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIEQzRFBPT0xfTUFOQUdFRDsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiBEM0RQT09MX0RFRkFVTFQ7Cit9CisKK2Jvb2wgUmVuZGVyZXI5Ojpj
b3B5VG9SZW5kZXJUYXJnZXQoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QsIElEaXJlY3QzRFN1cmZh
Y2U5ICpzb3VyY2UsIGJvb2wgZnJvbU1hbmFnZWQpCit7CisgICAgaWYgKHNvdXJjZSAmJiBkZXN0
KQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBEM0RFUlJfT1VUT0ZWSURFT01FTU9S
WTsKKworICAgICAgICBpZiAoZnJvbU1hbmFnZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEQz
RFNVUkZBQ0VfREVTQyBkZXNjOworICAgICAgICAgICAgc291cmNlLT5HZXREZXNjKCZkZXNjKTsK
KworICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmYgPSAwOworICAgICAgICAgICAg
cmVzdWx0ID0gbURldmljZS0+Q3JlYXRlT2Zmc2NyZWVuUGxhaW5TdXJmYWNlKGRlc2MuV2lkdGgs
IGRlc2MuSGVpZ2h0LCBkZXNjLkZvcm1hdCwgRDNEUE9PTF9TWVNURU1NRU0sICZzdXJmLCBOVUxM
KTsKKworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEltYWdlOTo6Y29weUxvY2thYmxlU3VyZmFjZXMoc3VyZiwgc291cmNl
KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5VcGRhdGVTdXJmYWNlKHN1cmYs
IE5VTEwsIGRlc3QsIE5VTEwpOworICAgICAgICAgICAgICAgIHN1cmYtPlJlbGVhc2UoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGVuZFNjZW5lKCk7CisgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5TdHJldGNoUmVj
dChzb3VyY2UsIE5VTEwsIGRlc3QsIE5VTEwsIEQzRFRFWEZfTk9ORSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZN
RU1PUlkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK0ltYWdlICpSZW5kZXJlcjk6OmNyZWF0ZUltYWdlKCkKK3sK
KyAgICByZXR1cm4gbmV3IEltYWdlOSgpOworfQorCit2b2lkIFJlbmRlcmVyOTo6Z2VuZXJhdGVN
aXBtYXAoSW1hZ2UgKmRlc3QsIEltYWdlICpzcmMpCit7CisgICAgSW1hZ2U5ICpzcmM5ID0gSW1h
Z2U5OjptYWtlSW1hZ2U5KHNyYyk7CisgICAgSW1hZ2U5ICpkc3Q5ID0gSW1hZ2U5OjptYWtlSW1h
Z2U5KGRlc3QpOworICAgIEltYWdlOTo6Z2VuZXJhdGVNaXBtYXAoZHN0OSwgc3JjOSk7Cit9CisK
K1RleHR1cmVTdG9yYWdlICpSZW5kZXJlcjk6OmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoU3dhcENo
YWluICpzd2FwQ2hhaW4pCit7CisgICAgU3dhcENoYWluOSAqc3dhcENoYWluOSA9IFN3YXBDaGFp
bjk6Om1ha2VTd2FwQ2hhaW45KHN3YXBDaGFpbik7CisgICAgcmV0dXJuIG5ldyBUZXh0dXJlU3Rv
cmFnZTlfMkQodGhpcywgc3dhcENoYWluOSk7Cit9CisKK1RleHR1cmVTdG9yYWdlICpSZW5kZXJl
cjk6OmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHTGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCkKK3sKKyAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlOV8yRCh0aGlz
LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxlLCB3aWR0aCwg
aGVpZ2h0KTsKK30KKworVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyOTo6Y3JlYXRlVGV4dHVyZVN0
b3JhZ2VDdWJlKGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdl
LCBib29sIGZvcmNlUmVuZGVyYWJsZSwgaW50IHNpemUpCit7CisgICAgcmV0dXJuIG5ldyBUZXh0
dXJlU3RvcmFnZTlfQ3ViZSh0aGlzLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB1c2FnZSwgZm9y
Y2VSZW5kZXJhYmxlLCBzaXplKTsKK30KKworYm9vbCBSZW5kZXJlcjk6OmdldExVSUQoTFVJRCAq
YWRhcHRlckx1aWQpIGNvbnN0Cit7CisgICAgYWRhcHRlckx1aWQtPkhpZ2hQYXJ0ID0gMDsKKyAg
ICBhZGFwdGVyTHVpZC0+TG93UGFydCA9IDA7CisKKyAgICBpZiAobUQzZDlFeCkKKyAgICB7Cisg
ICAgICAgIG1EM2Q5RXgtPkdldEFkYXB0ZXJMVUlEKG1BZGFwdGVyLCBhZGFwdGVyTHVpZCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworfQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5k
ZXJlcjkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzNDkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFJlbmRlcmVyOS5oOiBE
ZWZpbmVzIGEgYmFjay1lbmQgc3BlY2lmaWMgY2xhc3MgZm9yIHRoZSBEM0Q5IHJlbmRlcmVyLgor
CisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUjlfSF8KKyNkZWZpbmUgTElCR0xF
U1YyX1JFTkRFUkVSX1JFTkRFUkVSOV9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMu
aCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWF0aHV0aWwuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvU2hhZGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVmVy
dGV4RGVjbGFyYXRpb25DYWNoZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5k
ZXJlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQuaCIKKwor
bmFtZXNwYWNlIGdsCit7CitjbGFzcyBSZW5kZXJidWZmZXI7Cit9CisKK25hbWVzcGFjZSByeAor
eworY2xhc3MgVmVydGV4RGF0YU1hbmFnZXI7CitjbGFzcyBJbmRleERhdGFNYW5hZ2VyOworY2xh
c3MgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2U7CitzdHJ1Y3QgVHJhbnNsYXRlZEF0dHJp
YnV0ZTsKKworY2xhc3MgUmVuZGVyZXI5IDogcHVibGljIFJlbmRlcmVyCit7CisgIHB1YmxpYzoK
KyAgICBSZW5kZXJlcjkoZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBIREMgaERjLCBib29sIHNvZnR3
YXJlRGV2aWNlKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJlcjkoKTsKKworICAgIHN0YXRpYyBSZW5k
ZXJlcjkgKm1ha2VSZW5kZXJlcjkoUmVuZGVyZXIgKnJlbmRlcmVyKTsKKworICAgIHZpcnR1YWwg
RUdMaW50IGluaXRpYWxpemUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVzZXREZXZpY2UoKTsKKwor
ICAgIHZpcnR1YWwgaW50IGdlbmVyYXRlQ29uZmlncyhDb25maWdEZXNjICoqY29uZmlnRGVzY0xp
c3QpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb25maWdzKENvbmZpZ0Rlc2MgKmNvbmZpZ0Rl
c2NMaXN0KTsKKworICAgIHZvaWQgc3RhcnRTY2VuZSgpOworICAgIHZvaWQgZW5kU2NlbmUoKTsK
KworICAgIHZpcnR1YWwgdm9pZCBzeW5jKGJvb2wgYmxvY2spOworCisgICAgdmlydHVhbCBTd2Fw
Q2hhaW4gKmNyZWF0ZVN3YXBDaGFpbihIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBH
TGVudW0gYmFja0J1ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KTsKKworICAg
IElEaXJlY3QzRFF1ZXJ5OSogYWxsb2NhdGVFdmVudFF1ZXJ5KCk7CisgICAgdm9pZCBmcmVlRXZl
bnRRdWVyeShJRGlyZWN0M0RRdWVyeTkqIHF1ZXJ5KTsKKworICAgIC8vIHJlc291cmNlIGNyZWF0
aW9uCisgICAgSURpcmVjdDNEVmVydGV4U2hhZGVyOSAqY3JlYXRlVmVydGV4U2hhZGVyKGNvbnN0
IERXT1JEICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCk7CisgICAgSURpcmVjdDNEUGl4ZWxTaGFk
ZXI5ICpjcmVhdGVQaXhlbFNoYWRlcihjb25zdCBEV09SRCAqZnVuY3Rpb24sIHNpemVfdCBsZW5n
dGgpOworICAgIEhSRVNVTFQgY3JlYXRlVmVydGV4QnVmZmVyKFVJTlQgTGVuZ3RoLCBEV09SRCBV
c2FnZSwgSURpcmVjdDNEVmVydGV4QnVmZmVyOSAqKnBwVmVydGV4QnVmZmVyKTsKKyAgICBIUkVT
VUxUIGNyZWF0ZUluZGV4QnVmZmVyKFVJTlQgTGVuZ3RoLCBEV09SRCBVc2FnZSwgRDNERk9STUFU
IEZvcm1hdCwgSURpcmVjdDNESW5kZXhCdWZmZXI5ICoqcHBJbmRleEJ1ZmZlcik7CisjaWYgMAor
ICAgIHZvaWQgKmNyZWF0ZVRleHR1cmUyRCgpOworICAgIHZvaWQgKmNyZWF0ZVRleHR1cmVDdWJl
KCk7CisgICAgdm9pZCAqY3JlYXRlUXVlcnkoKTsKKyAgICB2b2lkICpjcmVhdGVJbmRleEJ1ZmZl
cigpOworICAgIHZvaWQgKmNyZWF0ZVZlcnRleGJ1ZmZlcigpOworCisgICAgLy8gc3RhdGUgc2V0
dXAKKyAgICB2b2lkIGFwcGx5U2hhZGVycygpOworICAgIHZvaWQgYXBwbHlDb25zdGFudHMoKTsK
KyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBl
IHR5cGUsIGludCBpbmRleCwgY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlcik7CisgICAg
dmlydHVhbCB2b2lkIHNldFRleHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwg
Z2w6OlRleHR1cmUgKnRleHR1cmUpOworCisgICAgdmlydHVhbCB2b2lkIHNldFJhc3Rlcml6ZXJT
dGF0ZShjb25zdCBnbDo6UmFzdGVyaXplclN0YXRlICZyYXN0ZXJTdGF0ZSk7CisgICAgdmlydHVh
bCB2b2lkIHNldEJsZW5kU3RhdGUoY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUsIGNv
bnN0IGdsOjpDb2xvciAmYmxlbmRDb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgc2FtcGxlTWFzayk7CisgICAgdmlydHVhbCB2b2lkIHNldERlcHRoU3Rl
bmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZGVwdGhTdGVuY2lsU3RhdGUs
IGludCBzdGVuY2lsUmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc3RlbmNpbEJhY2tSZWYsIGJvb2wgZnJvbnRGYWNlQ0NXKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTY2lzc29yUmVjdGFuZ2xlKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNjaXNzb3IsIGJvb2wg
ZW5hYmxlZCk7CisgICAgdmlydHVhbCBib29sIHNldFZpZXdwb3J0KGNvbnN0IGdsOjpSZWN0YW5n
bGUgJnZpZXdwb3J0LCBmbG9hdCB6TmVhciwgZmxvYXQgekZhciwgR0xlbnVtIGRyYXdNb2RlLCBH
TGVudW0gZnJvbnRGYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9y
ZVZpZXdwb3J0KTsKKworICAgIHZpcnR1YWwgYm9vbCBhcHBseVJlbmRlclRhcmdldChnbDo6RnJh
bWVidWZmZXIgKmZyYW1lQnVmZmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTaGFkZXJzKGds
OjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5KTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlV
bmlmb3JtcyhnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSwgZ2w6OlVuaWZvcm1BcnJh
eSAqdW5pZm9ybUFycmF5KTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHlQcmltaXRpdmVUeXBlKEdM
ZW51bSBwcmltaXRpdmVUeXBlLCBHTHNpemVpIGVsZW1lbnRDb3VudCk7CisgICAgdmlydHVhbCBH
TGVudW0gYXBwbHlWZXJ0ZXhCdWZmZXIoZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnks
IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgdmVydGV4QXR0cmlidXRlc1tdLCBHTGludCBmaXJzdCwgR0xz
aXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworICAgIHZpcnR1YWwgR0xlbnVtIGFwcGx5
SW5kZXhCdWZmZXIoY29uc3QgR0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICplbGVtZW50QXJy
YXlCdWZmZXIsIEdMc2l6ZWkgY291bnQsIEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgVHJhbnNs
YXRlZEluZGV4RGF0YSAqaW5kZXhJbmZvKTsKKworICAgIHZpcnR1YWwgdm9pZCBkcmF3QXJyYXlz
KEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcyk7CisgICAgdmly
dHVhbCB2b2lkIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVt
IHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVm
ZmVyLCBjb25zdCBUcmFuc2xhdGVkSW5kZXhEYXRhICZpbmRleEluZm8sIEdMc2l6ZWkgaW5zdGFu
Y2VzKTsKKworICAgIHZpcnR1YWwgdm9pZCBjbGVhcihjb25zdCBnbDo6Q2xlYXJQYXJhbWV0ZXJz
ICZjbGVhclBhcmFtcywgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZUJ1ZmZlcik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgbWFya0FsbFN0YXRlRGlydHkoKTsKKworICAgIC8vIGxvc3QgZGV2aWNlCisgICAg
dm9pZCBub3RpZnlEZXZpY2VMb3N0KCk7CisgICAgdmlydHVhbCBib29sIGlzRGV2aWNlTG9zdCgp
OworICAgIHZpcnR1YWwgYm9vbCB0ZXN0RGV2aWNlTG9zdChib29sIG5vdGlmeSk7CisgICAgdmly
dHVhbCBib29sIHRlc3REZXZpY2VSZXNldHRhYmxlKCk7CisKKyAgICAvLyBSZW5kZXJlciBjYXBh
YmlsaXRpZXMKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpnZXREZXZpY2UoKSB7IHJldHVybiBtRGV2
aWNlOyB9CisgICAgdmlydHVhbCBEV09SRCBnZXRBZGFwdGVyVmVuZG9yKCkgY29uc3Q7CisgICAg
dmlydHVhbCBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3Q7CisgICAg
dmlydHVhbCBHVUlEIGdldEFkYXB0ZXJJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0QkdSQVRleHR1cmVTdXBwb3J0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdl
dERYVDFUZXh0dXJlU3VwcG9ydCgpOworICAgIHZpcnR1YWwgYm9vbCBnZXREWFQzVGV4dHVyZVN1
cHBvcnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RFhUNVRleHR1cmVTdXBwb3J0KCk7CisgICAg
dmlydHVhbCBib29sIGdldEV2ZW50UXVlcnlTdXBwb3J0KCk7CisgICAgdmlydHVhbCBib29sIGdl
dEZsb2F0MzJUZXh0dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wgKnJlbmRlcmFibGUp
OworICAgIHZpcnR1YWwgYm9vbCBnZXRGbG9hdDE2VGV4dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVy
aW5nLCBib29sICpyZW5kZXJhYmxlKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0THVtaW5hbmNlVGV4
dHVyZVN1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0THVtaW5hbmNlQWxwaGFUZXh0dXJl
U3VwcG9ydCgpOworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldE1heFZlcnRleFRleHR1cmVJ
bWFnZVVuaXRzKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4Q29tYmlu
ZWRUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdl
dFJlc2VydmVkVmVydGV4VW5pZm9ybVZlY3RvcnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGludCBnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldE1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhWYXJ5aW5nVmVjdG9ycygpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXROb25Qb3dlcjJUZXh0dXJlU3VwcG9ydCgpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBnZXREZXB0aFRleHR1cmVTdXBwb3J0KCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBnZXRJbnN0YW5jaW5nU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBn
ZXRUZXh0dXJlRmlsdGVyQW5pc290cm9weVN1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGZs
b2F0IGdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdl
dFNoYXJlSGFuZGxlU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXREZXJpdmF0
aXZlSW5zdHJ1Y3Rpb25TdXBwb3J0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldFBvc3RT
dWJCdWZmZXJTdXBwb3J0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGludCBnZXRNYWpvclNoYWRl
ck1vZGVsKCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCBnZXRNYXhQb2ludFNpemUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGludCBnZXRNYXhWaWV3cG9ydERpbWVuc2lvbigpIGNvbnN0OworICAg
IHZpcnR1YWwgaW50IGdldE1heFRleHR1cmVXaWR0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50
IGdldE1heFRleHR1cmVIZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0MzJCaXRJ
bmRleFN1cHBvcnQoKSBjb25zdDsKKyAgICBEV09SRCBnZXRDYXBzRGVjbFR5cGVzKCkgY29uc3Q7
CisgICAgdmlydHVhbCBpbnQgZ2V0TWluU3dhcEludGVydmFsKCkgY29uc3Q7CisgICAgdmlydHVh
bCBpbnQgZ2V0TWF4U3dhcEludGVydmFsKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEdMc2l6ZWkg
Z2V0TWF4U3VwcG9ydGVkU2FtcGxlcygpIGNvbnN0OworICAgIGludCBnZXROZWFyZXN0U3VwcG9y
dGVkU2FtcGxlcyhEM0RGT1JNQVQgZm9ybWF0LCBpbnQgcmVxdWVzdGVkKSBjb25zdDsKKyAgICAK
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhSZW5kZXJUYXJnZXRzKCkgY29uc3Q7CisK
KyAgICBEM0RGT1JNQVQgQ29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdChHTGludCBpbnRlcm5h
bGZvcm1hdCk7CisKKyAgICAvLyBQaXhlbCBvcGVyYXRpb25zCisgICAgdmlydHVhbCBib29sIGNv
cHlUb1JlbmRlclRhcmdldChUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpkZXN0LCBUZXh0dXJl
U3RvcmFnZUludGVyZmFjZTJEICpzb3VyY2UpOworICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9SZW5k
ZXJUYXJnZXQoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpkZXN0LCBUZXh0dXJlU3RvcmFn
ZUludGVyZmFjZUN1YmUgKnNvdXJjZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgY29weUltYWdlKGds
OjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJl
Y3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc3RvcmFn
ZSwgR0xpbnQgbGV2ZWwpOworICAgIHZpcnR1YWwgYm9vbCBjb3B5SW1hZ2UoZ2w6OkZyYW1lYnVm
ZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwgR0xlbnVt
IGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKnN0b3JhZ2UsIEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsKTsKKworICAgIHZpcnR1YWwgYm9vbCBibGl0UmVjdChnbDo6
RnJhbWVidWZmZXIgKnJlYWRUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlYWRSZWN0LCBn
bDo6RnJhbWVidWZmZXIgKmRyYXdUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRyYXdSZWN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQsIGJvb2wg
YmxpdERlcHRoU3RlbmNpbCk7CisgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoZ2w6OkZyYW1l
YnVmZmVyICpmcmFtZWJ1ZmZlciwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgb3V0cHV0UGl0Y2gsIGJvb2wgcGFja1JldmVyc2VSb3dPcmRl
ciwgR0xpbnQgcGFja0FsaWdubWVudCwgdm9pZCogcGl4ZWxzKTsKKworICAgIC8vIFJlbmRlclRh
cmdldCBjcmVhdGlvbgorICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpjcmVhdGVSZW5kZXJUYXJn
ZXQoU3dhcENoYWluICpzd2FwQ2hhaW4sIGJvb2wgZGVwdGgpOworICAgIHZpcnR1YWwgUmVuZGVy
VGFyZ2V0ICpjcmVhdGVSZW5kZXJUYXJnZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0g
Zm9ybWF0LCBHTHNpemVpIHNhbXBsZXMsIGJvb2wgZGVwdGgpOworCisgICAgLy8gU2hhZGVyIG9w
ZXJhdGlvbnMKKyAgICB2aXJ0dWFsIFNoYWRlckV4ZWN1dGFibGUgKmxvYWRFeGVjdXRhYmxlKGNv
bnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCByeDo6U2hhZGVyVHlwZSB0eXBlKTsK
KyAgICB2aXJ0dWFsIFNoYWRlckV4ZWN1dGFibGUgKmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6Oklu
Zm9Mb2cgJmluZm9Mb2csIGNvbnN0IGNoYXIgKnNoYWRlckhMU0wsIHJ4OjpTaGFkZXJUeXBlIHR5
cGUpOworCisgICAgLy8gSW1hZ2Ugb3BlcmF0aW9ucworICAgIHZpcnR1YWwgSW1hZ2UgKmNyZWF0
ZUltYWdlKCk7CisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwKEltYWdlICpkZXN0LCBJ
bWFnZSAqc291cmNlKTsKKyAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJl
U3RvcmFnZTJEKFN3YXBDaGFpbiAqc3dhcENoYWluKTsKKyAgICB2aXJ0dWFsIFRleHR1cmVTdG9y
YWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQpOworICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1
cmVTdG9yYWdlQ3ViZShpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1
c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIGludCBzaXplKTsKKworICAgIC8vIEJ1ZmZlciBj
cmVhdGlvbgorICAgIHZpcnR1YWwgVmVydGV4QnVmZmVyICpjcmVhdGVWZXJ0ZXhCdWZmZXIoKTsK
KyAgICB2aXJ0dWFsIEluZGV4QnVmZmVyICpjcmVhdGVJbmRleEJ1ZmZlcigpOworICAgIHZpcnR1
YWwgQnVmZmVyU3RvcmFnZSAqY3JlYXRlQnVmZmVyU3RvcmFnZSgpOworCisgICAgLy8gUXVlcnkg
YW5kIEZlbmNlIGNyZWF0aW9uCisgICAgdmlydHVhbCBRdWVyeUltcGwgKmNyZWF0ZVF1ZXJ5KEdM
ZW51bSB0eXBlKTsKKyAgICB2aXJ0dWFsIEZlbmNlSW1wbCAqY3JlYXRlRmVuY2UoKTsKKworICAg
IC8vIEQzRDktcmVuZGVyZXIgc3BlY2lmaWMgbWV0aG9kcworICAgIGJvb2wgYm94RmlsdGVyKElE
aXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0KTsKKworICAg
IEQzRFBPT0wgZ2V0VGV4dHVyZVBvb2woRFdPUkQgdXNhZ2UpIGNvbnN0OworCisgICAgdmlydHVh
bCBib29sIGdldExVSUQoTFVJRCAqYWRhcHRlckx1aWQpIGNvbnN0OworCisgIHByaXZhdGU6Cisg
ICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlcmVyOSk7CisKKyAgICB2b2lkIGFwcGx5
VW5pZm9ybW5mdihnbDo6VW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwgY29uc3QgR0xmbG9hdCAqdik7
CisgICAgdm9pZCBhcHBseVVuaWZvcm1uaXYoZ2w6OlVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNv
bnN0IEdMaW50ICp2KTsKKyAgICB2b2lkIGFwcGx5VW5pZm9ybW5idihnbDo6VW5pZm9ybSAqdGFy
Z2V0VW5pZm9ybSwgY29uc3QgR0xpbnQgKnYpOworCisgICAgdm9pZCBkcmF3TGluZUxvb3AoR0xz
aXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgaW50IG1pbklu
ZGV4LCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIpOworICAgIHZvaWQgZHJhd0luZGV4
ZWRQb2ludHMoR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNl
cywgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyKTsKKworICAgIHZvaWQgZ2V0TXVsdGlT
YW1wbGVTdXBwb3J0KEQzREZPUk1BVCBmb3JtYXQsIGJvb2wgKm11bHRpU2FtcGxlQXJyYXkpOwor
ICAgIGJvb2wgY29weVRvUmVuZGVyVGFyZ2V0KElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0LCBJRGly
ZWN0M0RTdXJmYWNlOSAqc291cmNlLCBib29sIGZyb21NYW5hZ2VkKTsKKyAgICBnbDo6UmVuZGVy
YnVmZmVyICpnZXROdWxsQ29sb3JidWZmZXIoZ2w6OlJlbmRlcmJ1ZmZlciAqZGVwdGhidWZmZXIp
OworCisgICAgRDNEUE9PTCBnZXRCdWZmZXJQb29sKERXT1JEIHVzYWdlKSBjb25zdDsKKworICAg
IEhNT0RVTEUgbUQzZDlNb2R1bGU7CisgICAgSERDIG1EYzsKKworICAgIHZvaWQgaW5pdGlhbGl6
ZURldmljZSgpOworICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBnZXREZWZhdWx0UHJlc2VudFBh
cmFtZXRlcnMoKTsKKyAgICB2b2lkIHJlbGVhc2VEZXZpY2VSZXNvdXJjZXMoKTsKKworICAgIFVJ
TlQgbUFkYXB0ZXI7CisgICAgRDNEREVWVFlQRSBtRGV2aWNlVHlwZTsKKyAgICBib29sIG1Tb2Z0
d2FyZURldmljZTsgICAvLyBGSVhNRTogRGVwcmVjYXRlCisgICAgSURpcmVjdDNEOSAqbUQzZDk7
ICAvLyBBbHdheXMgdmFsaWQgYWZ0ZXIgc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlvbi4KKyAgICBJ
RGlyZWN0M0Q5RXggKm1EM2Q5RXg7ICAvLyBNaWdodCBiZSBudWxsIGlmIEQzRDlFeCBpcyBub3Qg
c3VwcG9ydGVkLgorICAgIElEaXJlY3QzRERldmljZTkgKm1EZXZpY2U7CisgICAgSURpcmVjdDNE
RGV2aWNlOUV4ICptRGV2aWNlRXg7ICAvLyBNaWdodCBiZSBudWxsIGlmIEQzRDlFeCBpcyBub3Qg
c3VwcG9ydGVkLgorCisgICAgQmxpdCAqbUJsaXQ7CisKKyAgICBIV05EIG1EZXZpY2VXaW5kb3c7
CisKKyAgICBib29sIG1EZXZpY2VMb3N0OworICAgIEQzRENBUFM5IG1EZXZpY2VDYXBzOworICAg
IEQzREFEQVBURVJfSURFTlRJRklFUjkgbUFkYXB0ZXJJZGVudGlmaWVyOworCisgICAgRDNEUFJJ
TUlUSVZFVFlQRSBtUHJpbWl0aXZlVHlwZTsKKyAgICBpbnQgbVByaW1pdGl2ZUNvdW50OworICAg
IEdMc2l6ZWkgbVJlcGVhdERyYXc7CisKKyAgICBib29sIG1TY2VuZVN0YXJ0ZWQ7CisgICAgYm9v
bCBtU3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlczsKKyAgICBib29sIG1TdXBwb3J0c1RleHR1cmVG
aWx0ZXJBbmlzb3Ryb3B5OworICAgIGludCBtTWluU3dhcEludGVydmFsOworICAgIGludCBtTWF4
U3dhcEludGVydmFsOworCisgICAgYm9vbCBtT2NjbHVzaW9uUXVlcnlTdXBwb3J0OworICAgIGJv
b2wgbUV2ZW50UXVlcnlTdXBwb3J0OworICAgIGJvb2wgbVZlcnRleFRleHR1cmVTdXBwb3J0Owor
CisgICAgYm9vbCBtRGVwdGhUZXh0dXJlU3VwcG9ydDsKKworICAgIGJvb2wgbUZsb2F0MzJUZXh0
dXJlU3VwcG9ydDsKKyAgICBib29sIG1GbG9hdDMyRmlsdGVyU3VwcG9ydDsKKyAgICBib29sIG1G
bG9hdDMyUmVuZGVyU3VwcG9ydDsKKworICAgIGJvb2wgbUZsb2F0MTZUZXh0dXJlU3VwcG9ydDsK
KyAgICBib29sIG1GbG9hdDE2RmlsdGVyU3VwcG9ydDsKKyAgICBib29sIG1GbG9hdDE2UmVuZGVy
U3VwcG9ydDsKKworICAgIGJvb2wgbURYVDFUZXh0dXJlU3VwcG9ydDsKKyAgICBib29sIG1EWFQz
VGV4dHVyZVN1cHBvcnQ7CisgICAgYm9vbCBtRFhUNVRleHR1cmVTdXBwb3J0OworCisgICAgYm9v
bCBtTHVtaW5hbmNlVGV4dHVyZVN1cHBvcnQ7CisgICAgYm9vbCBtTHVtaW5hbmNlQWxwaGFUZXh0
dXJlU3VwcG9ydDsKKworICAgIHN0ZDo6bWFwPEQzREZPUk1BVCwgYm9vbCAqPiBtTXVsdGlTYW1w
bGVTdXBwb3J0OworICAgIEdMc2l6ZWkgbU1heFN1cHBvcnRlZFNhbXBsZXM7CisKKyAgICAvLyBj
dXJyZW50IHJlbmRlciB0YXJnZXQgc3RhdGVzCisgICAgdW5zaWduZWQgaW50IG1BcHBsaWVkUmVu
ZGVyVGFyZ2V0U2VyaWFsOworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZERlcHRoYnVmZmVyU2Vy
aWFsOworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZFN0ZW5jaWxidWZmZXJTZXJpYWw7CisgICAg
Ym9vbCBtRGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQ7CisgICAgYm9vbCBtUmVuZGVyVGFyZ2V0RGVz
Y0luaXRpYWxpemVkOworICAgIHJ4OjpSZW5kZXJUYXJnZXQ6OkRlc2MgbVJlbmRlclRhcmdldERl
c2M7CisgICAgdW5zaWduZWQgaW50IG1DdXJTdGVuY2lsU2l6ZTsKKyAgICB1bnNpZ25lZCBpbnQg
bUN1ckRlcHRoU2l6ZTsKKworICAgIElEaXJlY3QzRFN0YXRlQmxvY2s5ICptTWFza2VkQ2xlYXJT
YXZlZFN0YXRlOworCisgICAgLy8gcHJldmlvdXNseSBzZXQgcmVuZGVyIHN0YXRlcworICAgIGJv
b2wgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGU7CisgICAgZ2w6OkRlcHRoU3RlbmNpbFN0YXRl
IG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICBpbnQgbUN1clN0ZW5jaWxSZWY7CisgICAgaW50
IG1DdXJTdGVuY2lsQmFja1JlZjsKKyAgICBib29sIG1DdXJGcm9udEZhY2VDQ1c7CisKKyAgICBi
b29sIG1Gb3JjZVNldFJhc3RlclN0YXRlOworICAgIGdsOjpSYXN0ZXJpemVyU3RhdGUgbUN1clJh
c3RlclN0YXRlOworCisgICAgYm9vbCBtRm9yY2VTZXRTY2lzc29yOworICAgIGdsOjpSZWN0YW5n
bGUgbUN1clNjaXNzb3I7CisgICAgYm9vbCBtU2Npc3NvckVuYWJsZWQ7CisKKyAgICBib29sIG1G
b3JjZVNldFZpZXdwb3J0OworICAgIGdsOjpSZWN0YW5nbGUgbUN1clZpZXdwb3J0OworICAgIGZs
b2F0IG1DdXJOZWFyOworICAgIGZsb2F0IG1DdXJGYXI7CisKKyAgICBib29sIG1Gb3JjZVNldEJs
ZW5kU3RhdGU7CisgICAgZ2w6OkJsZW5kU3RhdGUgbUN1ckJsZW5kU3RhdGU7CisgICAgZ2w6OkNv
bG9yIG1DdXJCbGVuZENvbG9yOworICAgIEdMdWludCBtQ3VyU2FtcGxlTWFzazsKKworICAgIC8v
IEN1cnJlbnRseSBhcHBsaWVkIHNhbXBsZXIgc3RhdGVzCisgICAgYm9vbCBtRm9yY2VTZXRWZXJ0
ZXhTYW1wbGVyU3RhdGVzW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1B
R0VfVU5JVFNdOworICAgIGdsOjpTYW1wbGVyU3RhdGUgbUN1clZlcnRleFNhbXBsZXJTdGF0ZXNb
Z2w6OklNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU107CisKKyAg
ICBib29sIG1Gb3JjZVNldFBpeGVsU2FtcGxlclN0YXRlc1tnbDo6TUFYX1RFWFRVUkVfSU1BR0Vf
VU5JVFNdOworICAgIGdsOjpTYW1wbGVyU3RhdGUgbUN1clBpeGVsU2FtcGxlclN0YXRlc1tnbDo6
TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworCisgICAgLy8gQ3VycmVudGx5IGFwcGxpZWQgdGV4
dHVyZXMKKyAgICB1bnNpZ25lZCBpbnQgbUN1clZlcnRleFRleHR1cmVTZXJpYWxzW2dsOjpJTVBM
RU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworICAgIHVuc2lnbmVk
IGludCBtQ3VyUGl4ZWxUZXh0dXJlU2VyaWFsc1tnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNd
OworCisgICAgdW5zaWduZWQgaW50IG1BcHBsaWVkSUJTZXJpYWw7CisgICAgdW5zaWduZWQgaW50
IG1BcHBsaWVkUHJvZ3JhbUJpbmFyeVNlcmlhbDsKKyAgICAKKyAgICByeDo6ZHhfVmVydGV4Q29u
c3RhbnRzIG1WZXJ0ZXhDb25zdGFudHM7CisgICAgcng6OmR4X1BpeGVsQ29uc3RhbnRzIG1QaXhl
bENvbnN0YW50czsKKyAgICBib29sIG1EeFVuaWZvcm1zRGlydHk7CisKKyAgICAvLyBBIHBvb2wg
b2YgZXZlbnQgcXVlcmllcyB0aGF0IGFyZSBjdXJyZW50bHkgdW51c2VkLgorICAgIHN0ZDo6dmVj
dG9yPElEaXJlY3QzRFF1ZXJ5OSo+IG1FdmVudFF1ZXJ5UG9vbDsKKyAgICBWZXJ0ZXhTaGFkZXJD
YWNoZSBtVmVydGV4U2hhZGVyQ2FjaGU7CisgICAgUGl4ZWxTaGFkZXJDYWNoZSBtUGl4ZWxTaGFk
ZXJDYWNoZTsKKworICAgIFZlcnRleERhdGFNYW5hZ2VyICptVmVydGV4RGF0YU1hbmFnZXI7Cisg
ICAgVmVydGV4RGVjbGFyYXRpb25DYWNoZSBtVmVydGV4RGVjbGFyYXRpb25DYWNoZTsKKworICAg
IEluZGV4RGF0YU1hbmFnZXIgKm1JbmRleERhdGFNYW5hZ2VyOworICAgIFN0cmVhbWluZ0luZGV4
QnVmZmVySW50ZXJmYWNlICptTGluZUxvb3BJQjsKKworICAgIGVudW0geyBOVU1fTlVMTF9DT0xP
UkJVRkZFUl9DQUNIRV9FTlRSSUVTID0gMTIgfTsKKyAgICBzdHJ1Y3QgTnVsbENvbG9yYnVmZmVy
Q2FjaGVFbnRyeQorICAgIHsKKyAgICAgICAgVUlOVCBscnVDb3VudDsKKyAgICAgICAgaW50IHdp
ZHRoOworICAgICAgICBpbnQgaGVpZ2h0OworICAgICAgICBnbDo6UmVuZGVyYnVmZmVyICpidWZm
ZXI7CisgICAgfSBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbTlVNX05VTExfQ09MT1JCVUZGRVJfQ0FD
SEVfRU5UUklFU107CisgICAgVUlOVCBtTWF4TnVsbENvbG9yYnVmZmVyTFJVOworCit9OworCit9
CisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUkVSOV9IXwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL1JlbmRlcmVyMTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzNTI3IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIFJlbmRlcmVyMTEuY3BwOiBJbXBsZW1lbnRzIGEgYmFjay1lbmQgc3BlY2lmaWMg
Y2xhc3MgZm9yIHRoZSBEM0QxMSByZW5kZXJlci4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWlu
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9CdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJC
dWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIxMS5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5k
ZXJlci9Td2FwQ2hhaW4xMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTEx
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjExLmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3Jl
bmRlcmVyL1ZlcnRleERhdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L0luZGV4RGF0YU1hbmFnZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVy
ZVN0b3JhZ2UxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlMTEuaCIKKworI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdoMTF2cy5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTEx
cHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNz
dGhyb3VnaHJnYjExcHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9j
b21waWxlZC9wYXNzdGhyb3VnaGx1bTExcHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bWFscGhhMTFwcy5oIgorCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXIxMXZzLmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW5nbGUxMXBz
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJt
dWx0aXBsZTExcHMuaCIKKworI2luY2x1ZGUgImxpYkVHTC9EaXNwbGF5LmgiCisKKyNpZmRlZiBf
REVCVUcKKy8vIHRoaXMgZmxhZyBlbmFibGVzIHN1cHByZXNzaW5nIHNvbWUgc3B1cmlvdXMgd2Fy
bmluZ3MgdGhhdCBwb3AgdXAgaW4gY2VydGFpbiBXZWJHTCBzYW1wbGVzCisvLyBhbmQgY29uZm9y
bWFuY2UgdGVzdHMuIHRvIGVuYWJsZSBhbGwgd2FybmluZ3MsIHJlbW92ZSB0aGlzIGRlZmluZS4K
KyNkZWZpbmUgQU5HTEVfU1VQUFJFU1NfRDNEMTFfSEFaQVJEX1dBUk5JTkdTIDEKKyNlbmRpZgor
CituYW1lc3BhY2UgcngKK3sKK3N0YXRpYyBjb25zdCBEWEdJX0ZPUk1BVCBSZW5kZXJUYXJnZXRG
b3JtYXRzW10gPQorICAgIHsKKyAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sCisg
ICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNCisgICAgfTsKKworc3RhdGljIGNvbnN0
IERYR0lfRk9STUFUIERlcHRoU3RlbmNpbEZvcm1hdHNbXSA9CisgICAgeworICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwK
KyAgICAgICAgRFhHSV9GT1JNQVRfRDE2X1VOT1JNCisgICAgfTsKKworZW51bQoreworICAgIE1B
WF9URVhUVVJFX0lNQUdFX1VOSVRTX1ZURl9TTTQgPSAxNgorfTsKKworUmVuZGVyZXIxMTo6UmVu
ZGVyZXIxMShlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIEhEQyBoRGMpIDogUmVuZGVyZXIoZGlzcGxh
eSksIG1EYyhoRGMpCit7CisgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gTlVMTDsKKyAgICBtSW5k
ZXhEYXRhTWFuYWdlciA9IE5VTEw7CisKKyAgICBtTGluZUxvb3BJQiA9IE5VTEw7CisgICAgbVRy
aWFuZ2xlRmFuSUIgPSBOVUxMOworCisgICAgbUNvcHlSZXNvdXJjZXNJbml0aWFsaXplZCA9IGZh
bHNlOworICAgIG1Db3B5VkIgPSBOVUxMOworICAgIG1Db3B5U2FtcGxlciA9IE5VTEw7CisgICAg
bUNvcHlJTCA9IE5VTEw7CisgICAgbUNvcHlWUyA9IE5VTEw7CisgICAgbUNvcHlSR0JBUFMgPSBO
VUxMOworICAgIG1Db3B5UkdCUFMgPSBOVUxMOworICAgIG1Db3B5THVtUFMgPSBOVUxMOworICAg
IG1Db3B5THVtQWxwaGFQUyA9IE5VTEw7CisKKyAgICBtQ2xlYXJSZXNvdXJjZXNJbml0aWFsaXpl
ZCA9IGZhbHNlOworICAgIG1DbGVhclZCID0gTlVMTDsKKyAgICBtQ2xlYXJJTCA9IE5VTEw7Cisg
ICAgbUNsZWFyVlMgPSBOVUxMOworICAgIG1DbGVhclNpbmdsZVBTID0gTlVMTDsKKyAgICBtQ2xl
YXJNdWx0aXBsZVBTID0gTlVMTDsKKyAgICBtQ2xlYXJTY2lzc29yUlMgPSBOVUxMOworICAgIG1D
bGVhck5vU2Npc3NvclJTID0gTlVMTDsKKworICAgIG1TeW5jUXVlcnkgPSBOVUxMOworCisgICAg
bUQzZDExTW9kdWxlID0gTlVMTDsKKyAgICBtRHhnaU1vZHVsZSA9IE5VTEw7CisKKyAgICBtRGV2
aWNlTG9zdCA9IGZhbHNlOworCisgICAgbU1heFN1cHBvcnRlZFNhbXBsZXMgPSAwOworCisgICAg
bURldmljZSA9IE5VTEw7CisgICAgbURldmljZUNvbnRleHQgPSBOVUxMOworICAgIG1EeGdpQWRh
cHRlciA9IE5VTEw7CisgICAgbUR4Z2lGYWN0b3J5ID0gTlVMTDsKKworICAgIG1Ecml2ZXJDb25z
dGFudEJ1ZmZlclZTID0gTlVMTDsKKyAgICBtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUyA9IE5VTEw7
CisKKyAgICBtQkdSQVRleHR1cmVTdXBwb3J0ID0gZmFsc2U7CisKKyAgICBtSXNHZW9tZXRyeVNo
YWRlckFjdGl2ZSA9IGZhbHNlOworfQorCitSZW5kZXJlcjExOjp+UmVuZGVyZXIxMSgpCit7Cisg
ICAgcmVsZWFzZSgpOworfQorCitSZW5kZXJlcjExICpSZW5kZXJlcjExOjptYWtlUmVuZGVyZXIx
MShSZW5kZXJlciAqcmVuZGVyZXIpCit7CisgICAgQVNTRVJUKEhBU19EWU5BTUlDX1RZUEUocng6
OlJlbmRlcmVyMTEqLCByZW5kZXJlcikpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxyeDo6UmVu
ZGVyZXIxMSo+KHJlbmRlcmVyKTsKK30KKworI2lmbmRlZiBfX2QzZDExXzFfaF9fCisjZGVmaW5l
IEQzRDExX01FU1NBR0VfSURfREVWSUNFX0RSQVdfUkVOREVSVEFSR0VUVklFV19OT1RfU0VUICgo
RDNEMTFfTUVTU0FHRV9JRCkzMTQ2MDgxKQorI2VuZGlmCisKK0VHTGludCBSZW5kZXJlcjExOjpp
bml0aWFsaXplKCkKK3sKKyAgICBpZiAoIWluaXRpYWxpemVDb21waWxlcigpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAgfQorCisgICAgbUR4Z2lNb2R1
bGUgPSBMb2FkTGlicmFyeShURVhUKCJkeGdpLmRsbCIpKTsKKyAgICBtRDNkMTFNb2R1bGUgPSBM
b2FkTGlicmFyeShURVhUKCJkM2QxMS5kbGwiKSk7CisKKyAgICBpZiAobUQzZDExTW9kdWxlID09
IE5VTEwgfHwgbUR4Z2lNb2R1bGUgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQg
bm90IGxvYWQgRDNEMTEgb3IgRFhHSSBsaWJyYXJ5IC0gYWJvcnRpbmchXG4iKTsKKyAgICAgICAg
cmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAgfQorCisgICAgLy8gY3JlYXRlIHRoZSBE
M0QxMSBkZXZpY2UKKyAgICBBU1NFUlQobURldmljZSA9PSBOVUxMKTsKKyAgICBQRk5fRDNEMTFf
Q1JFQVRFX0RFVklDRSBEM0QxMUNyZWF0ZURldmljZSA9IChQRk5fRDNEMTFfQ1JFQVRFX0RFVklD
RSlHZXRQcm9jQWRkcmVzcyhtRDNkMTFNb2R1bGUsICJEM0QxMUNyZWF0ZURldmljZSIpOworCisg
ICAgaWYgKEQzRDExQ3JlYXRlRGV2aWNlID09IE5VTEwpCisgICAgeworICAgICAgICBFUlIoIkNv
dWxkIG5vdCByZXRyaWV2ZSBEM0QxMUNyZWF0ZURldmljZSBhZGRyZXNzIC0gYWJvcnRpbmchXG4i
KTsKKyAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAgfQorCisgICAgRDNE
X0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsc1tdID0KKyAgICB7CisgICAgICAgIEQzRF9GRUFU
VVJFX0xFVkVMXzExXzAsCisgICAgICAgIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzEsCisgICAgICAg
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzAsCisgICAgfTsKKworICAgIEhSRVNVTFQgcmVzdWx0ID0g
U19PSzsKKworI2lmZGVmIF9ERUJVRworICAgIHJlc3VsdCA9IEQzRDExQ3JlYXRlRGV2aWNlKE5V
TEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEX0RSSVZFUl9UWVBFX0hBUkRX
QVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRDNEMTFfQ1JFQVRFX0RFVklDRV9ERUJVRywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmZWF0dXJlTGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFycmF5U2l6ZShmZWF0dXJlTGV2ZWxzKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEM0QxMV9TREtfVkVSU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbURldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbUZlYXR1cmVM
ZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbURldmljZUNvbnRleHQpOwor
CisgICAgaWYgKCFtRGV2aWNlIHx8IEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJS
KCJGYWlsZWQgY3JlYXRpbmcgRGVidWcgRDNEMTEgZGV2aWNlIC0gZmFsbGluZyBiYWNrIHRvIHJl
bGVhc2UgcnVudGltZS5cbiIpOworICAgIH0KKworICAgIGlmICghbURldmljZSB8fCBGQUlMRUQo
cmVzdWx0KSkKKyNlbmRpZgorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gRDNEMTFDcmVhdGVEZXZp
Y2UoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEX0RSSVZFUl9U
WVBFX0hBUkRXQVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmZWF0dXJlTGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBcnJheVNpemUoZmVhdHVyZUxldmVscyksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEQzRDExX1NES19WRVJTSU9OLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmbURldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJm1GZWF0dXJlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZt
RGV2aWNlQ29udGV4dCk7CisKKyAgICAgICAgaWYgKCFtRGV2aWNlIHx8IEZBSUxFRChyZXN1bHQp
KQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgRDNEMTEgZGV2
aWNlIC0gYWJvcnRpbmchXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBFR0xfTk9UX0lOSVRJQUxJ
WkVEOyAgIC8vIENsZWFudXAgZG9uZSBieSBkZXN0cnVjdG9yIHRocm91Z2ggZ2xEZXN0cm95UmVu
ZGVyZXIKKyAgICAgICAgfQorICAgIH0KKworICAgIElEWEdJRGV2aWNlICpkeGdpRGV2aWNlID0g
TlVMTDsKKyAgICByZXN1bHQgPSBtRGV2aWNlLT5RdWVyeUludGVyZmFjZShfX3V1aWRvZihJRFhH
SURldmljZSksICh2b2lkKiopJmR4Z2lEZXZpY2UpOworCisgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQorICAgIHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgcXVlcnkgRFhHSSBkZXZpY2UgLSBhYm9y
dGluZyFcbiIpOworICAgICAgICByZXR1cm4gRUdMX05PVF9JTklUSUFMSVpFRDsKKyAgICB9CisK
KyAgICByZXN1bHQgPSBkeGdpRGV2aWNlLT5HZXRQYXJlbnQoX191dWlkb2YoSURYR0lBZGFwdGVy
KSwgKHZvaWQqKikmbUR4Z2lBZGFwdGVyKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAg
ICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IHJldHJpZXZlIERYR0kgYWRhcHRlciAtIGFib3J0
aW5nIVxuIik7CisgICAgICAgIHJldHVybiBFR0xfTk9UX0lOSVRJQUxJWkVEOworICAgIH0KKwor
ICAgIGR4Z2lEZXZpY2UtPlJlbGVhc2UoKTsKKworICAgIG1EeGdpQWRhcHRlci0+R2V0RGVzYygm
bUFkYXB0ZXJEZXNjcmlwdGlvbik7CisgICAgbWVtc2V0KG1EZXNjcmlwdGlvbiwgMCwgc2l6ZW9m
KG1EZXNjcmlwdGlvbikpOworICAgIHdjc3RvbWJzKG1EZXNjcmlwdGlvbiwgbUFkYXB0ZXJEZXNj
cmlwdGlvbi5EZXNjcmlwdGlvbiwgc2l6ZW9mKG1EZXNjcmlwdGlvbikgLSAxKTsKKworICAgIHJl
c3VsdCA9IG1EeGdpQWRhcHRlci0+R2V0UGFyZW50KF9fdXVpZG9mKElEWEdJRmFjdG9yeSksICh2
b2lkKiopJm1EeGdpRmFjdG9yeSk7CisKKyAgICBpZiAoIW1EeGdpRmFjdG9yeSB8fCBGQUlMRUQo
cmVzdWx0KSkKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBEWEdJIGZhY3Rv
cnkgLSBhYm9ydGluZyFcbiIpOworICAgICAgICByZXR1cm4gRUdMX05PVF9JTklUSUFMSVpFRDsK
KyAgICB9CisKKyAgICAvLyBEaXNhYmxlIHNvbWUgc3B1cmlvdXMgRDNEMTEgZGVidWcgd2Fybmlu
Z3MgdG8gcHJldmVudCB0aGVtIGZyb20gZmxvb2RpbmcgdGhlIG91dHB1dCBsb2cKKyNpZiBkZWZp
bmVkKEFOR0xFX1NVUFBSRVNTX0QzRDExX0hBWkFSRF9XQVJOSU5HUykgJiYgZGVmaW5lZChfREVC
VUcpCisgICAgSUQzRDExSW5mb1F1ZXVlICppbmZvUXVldWU7CisgICAgcmVzdWx0ID0gbURldmlj
ZS0+UXVlcnlJbnRlcmZhY2UoX191dWlkb2YoSUQzRDExSW5mb1F1ZXVlKSwgICh2b2lkICoqKSZp
bmZvUXVldWUpOworCisgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAg
RDNEMTFfTUVTU0FHRV9JRCBoaWRlTWVzc2FnZXNbXSA9CisgICAgICAgIHsKKyAgICAgICAgICAg
IEQzRDExX01FU1NBR0VfSURfREVWSUNFX09NU0VUUkVOREVSVEFSR0VUU19IQVpBUkQsCisgICAg
ICAgICAgICBEM0QxMV9NRVNTQUdFX0lEX0RFVklDRV9QU1NFVFNIQURFUlJFU09VUkNFU19IQVpB
UkQsCisgICAgICAgICAgICBEM0QxMV9NRVNTQUdFX0lEX0RFVklDRV9EUkFXX1JFTkRFUlRBUkdF
VFZJRVdfTk9UX1NFVAorICAgICAgICB9OworCisgICAgICAgIEQzRDExX0lORk9fUVVFVUVfRklM
VEVSIGZpbHRlciA9IHswfTsKKyAgICAgICAgZmlsdGVyLkRlbnlMaXN0Lk51bUlEcyA9IEFycmF5
U2l6ZShoaWRlTWVzc2FnZXMpOworICAgICAgICBmaWx0ZXIuRGVueUxpc3QucElETGlzdCA9IGhp
ZGVNZXNzYWdlczsKKworICAgICAgICBpbmZvUXVldWUtPkFkZFN0b3JhZ2VGaWx0ZXJFbnRyaWVz
KCZmaWx0ZXIpOworCisgICAgICAgIGluZm9RdWV1ZS0+UmVsZWFzZSgpOworICAgIH0KKyNlbmRp
ZgorCisgICAgdW5zaWduZWQgaW50IG1heFN1cHBvcnRlZFNhbXBsZXMgPSAwOworICAgIHVuc2ln
bmVkIGludCBydEZvcm1hdENvdW50ID0gQXJyYXlTaXplKFJlbmRlclRhcmdldEZvcm1hdHMpOwor
ICAgIHVuc2lnbmVkIGludCBkc0Zvcm1hdENvdW50ID0gQXJyYXlTaXplKERlcHRoU3RlbmNpbEZv
cm1hdHMpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcnRGb3JtYXRDb3VudCAr
IGRzRm9ybWF0Q291bnQ7ICsraSkKKyAgICB7CisgICAgICAgIERYR0lfRk9STUFUIGZvcm1hdCA9
IChpIDwgcnRGb3JtYXRDb3VudCkgPyBSZW5kZXJUYXJnZXRGb3JtYXRzW2ldIDogRGVwdGhTdGVu
Y2lsRm9ybWF0c1tpIC0gcnRGb3JtYXRDb3VudF07CisgICAgICAgIGlmIChmb3JtYXQgIT0gRFhH
SV9GT1JNQVRfVU5LTk9XTikKKyAgICAgICAgeworICAgICAgICAgICAgVUlOVCBmb3JtYXRTdXBw
b3J0OworICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KGZv
cm1hdCwgJmZvcm1hdFN1cHBvcnQpOworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQp
ICYmIChmb3JtYXRTdXBwb3J0ICYgRDNEMTFfRk9STUFUX1NVUFBPUlRfTVVMVElTQU1QTEVfUkVO
REVSVEFSR0VUKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBNdWx0aXNhbXBsZVN1
cHBvcnRJbmZvIHN1cHBvcnRJbmZvOworCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaiA9IDE7IGogPD0gRDNEMTFfTUFYX01VTFRJU0FNUExFX1NBTVBMRV9DT1VOVDsgaisrKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+
Q2hlY2tNdWx0aXNhbXBsZVF1YWxpdHlMZXZlbHMoZm9ybWF0LCBqLCAmc3VwcG9ydEluZm8ucXVh
bGl0eUxldmVsc1tqIC0gMV0pOworICAgICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJl
c3VsdCkgJiYgc3VwcG9ydEluZm8ucXVhbGl0eUxldmVsc1tqIC0gMV0gPiAwKQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhTdXBwb3J0ZWRTYW1wbGVz
ID0gc3RkOjptYXgoaiwgbWF4U3VwcG9ydGVkU2FtcGxlcyk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzdXBwb3J0SW5mby5xdWFsaXR5TGV2ZWxzW2ogLSAxXSA9IDA7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBtTXVsdGlzYW1wbGVTdXBwb3J0TWFwLmluc2VydChzdGQ6Om1ha2VfcGFpcihmb3JtYXQs
IHN1cHBvcnRJbmZvKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgbU1h
eFN1cHBvcnRlZFNhbXBsZXMgPSBtYXhTdXBwb3J0ZWRTYW1wbGVzOworCisgICAgaW5pdGlhbGl6
ZURldmljZSgpOworCisgICAgLy8gQkdSQSB0ZXh0dXJlIHN1cHBvcnQgaXMgb3B0aW9uYWwgaW4g
ZmVhdHVyZSBsZXZlbHMgMTAgYW5kIDEwXzEKKyAgICBVSU5UIGZvcm1hdFN1cHBvcnQ7CisgICAg
cmVzdWx0ID0gbURldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KERYR0lfRk9STUFUX0I4RzhSOEE4
X1VOT1JNLCAmZm9ybWF0U3VwcG9ydCk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsK
KyAgICAgICAgRVJSKCJFcnJvciBjaGVja2luZyBCR1JBIGZvcm1hdCBzdXBwb3J0OiAweCUwOFgi
LCByZXN1bHQpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjb25zdCBpbnQgZmxh
Z3MgPSAoRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTJEIHwgRDNEMTFfRk9STUFUX1NVUFBP
UlRfUkVOREVSX1RBUkdFVCk7CisgICAgICAgIG1CR1JBVGV4dHVyZVN1cHBvcnQgPSAoZm9ybWF0
U3VwcG9ydCAmIGZsYWdzKSA9PSBmbGFnczsKKyAgICB9CisKKyAgICAvLyBDaGVjayBmbG9hdGlu
ZyBwb2ludCB0ZXh0dXJlIHN1cHBvcnQKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHJl
cXVpcmVkVGV4dHVyZUZsYWdzID0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTJEIHwgRDNE
MTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRUNVQkU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGludCByZXF1aXJlZFJlbmRlcmFibGVGbGFncyA9IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1JFTkRF
Ul9UQVJHRVQ7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCByZXF1aXJlZEZpbHRlckZs
YWdzID0gRDNEMTFfRk9STUFUX1NVUFBPUlRfU0hBREVSX1NBTVBMRTsKKworICAgIERYR0lfRk9S
TUFUIGZsb2F0MTZGb3JtYXRzW10gPQorICAgIHsKKyAgICAgICAgRFhHSV9GT1JNQVRfUjE2X0ZM
T0FULAorICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsCisgICAgICAgIERYR0lfRk9S
TUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICB9OworCisgICAgRFhHSV9GT1JNQVQgZmxvYXQz
MkZvcm1hdHNbXSA9CisgICAgeworICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsCisgICAg
ICAgIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwKKyAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyX0ZMT0FULAorICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAg
fTsKKworICAgIG1GbG9hdDE2VGV4dHVyZVN1cHBvcnQgPSB0cnVlOworICAgIG1GbG9hdDE2Rmls
dGVyU3VwcG9ydCA9IHRydWU7CisgICAgbUZsb2F0MTZSZW5kZXJTdXBwb3J0ID0gdHJ1ZTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IEFycmF5U2l6ZShmbG9hdDE2Rm9ybWF0cyk7
IGkrKykKKyAgICB7CisgICAgICAgIGlmIChTVUNDRUVERUQobURldmljZS0+Q2hlY2tGb3JtYXRT
dXBwb3J0KGZsb2F0MTZGb3JtYXRzW2ldLCAmZm9ybWF0U3VwcG9ydCkpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtRmxvYXQxNlRleHR1cmVTdXBwb3J0ID0gbUZsb2F0MTZUZXh0dXJlU3VwcG9y
dCAmJiAoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkVGV4dHVyZUZsYWdzKSA9PSByZXF1aXJlZFRl
eHR1cmVGbGFnczsKKyAgICAgICAgICAgIG1GbG9hdDE2RmlsdGVyU3VwcG9ydCA9IG1GbG9hdDE2
RmlsdGVyU3VwcG9ydCAmJiAoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkRmlsdGVyRmxhZ3MpID09
IHJlcXVpcmVkRmlsdGVyRmxhZ3M7CisgICAgICAgICAgICBtRmxvYXQxNlJlbmRlclN1cHBvcnQg
PSBtRmxvYXQxNlJlbmRlclN1cHBvcnQgJiYgKGZvcm1hdFN1cHBvcnQgJiByZXF1aXJlZFJlbmRl
cmFibGVGbGFncykgPT0gcmVxdWlyZWRSZW5kZXJhYmxlRmxhZ3M7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRmxvYXQxNlRleHR1cmVTdXBwb3J0ID0g
ZmFsc2U7CisgICAgICAgICAgICBtRmxvYXQxNlJlbmRlclN1cHBvcnQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIG1GbG9hdDE2RmlsdGVyU3VwcG9ydCA9IGZhbHNlOworICAgICAgICB9CisgICAgfQor
CisgICAgbUZsb2F0MzJUZXh0dXJlU3VwcG9ydCA9IHRydWU7CisgICAgbUZsb2F0MzJGaWx0ZXJT
dXBwb3J0ID0gdHJ1ZTsKKyAgICBtRmxvYXQzMlJlbmRlclN1cHBvcnQgPSB0cnVlOworICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKGZsb2F0MzJGb3JtYXRzKTsgaSsr
KQorICAgIHsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChtRGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBv
cnQoZmxvYXQzMkZvcm1hdHNbaV0sICZmb3JtYXRTdXBwb3J0KSkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1GbG9hdDMyVGV4dHVyZVN1cHBvcnQgPSBtRmxvYXQzMlRleHR1cmVTdXBwb3J0ICYm
IChmb3JtYXRTdXBwb3J0ICYgcmVxdWlyZWRUZXh0dXJlRmxhZ3MpID09IHJlcXVpcmVkVGV4dHVy
ZUZsYWdzOworICAgICAgICAgICAgbUZsb2F0MzJGaWx0ZXJTdXBwb3J0ID0gbUZsb2F0MzJGaWx0
ZXJTdXBwb3J0ICYmIChmb3JtYXRTdXBwb3J0ICYgcmVxdWlyZWRGaWx0ZXJGbGFncykgPT0gcmVx
dWlyZWRGaWx0ZXJGbGFnczsKKyAgICAgICAgICAgIG1GbG9hdDMyUmVuZGVyU3VwcG9ydCA9IG1G
bG9hdDMyUmVuZGVyU3VwcG9ydCAmJiAoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkUmVuZGVyYWJs
ZUZsYWdzKSA9PSByZXF1aXJlZFJlbmRlcmFibGVGbGFnczsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1GbG9hdDMyVGV4dHVyZVN1cHBvcnQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIG1GbG9hdDMyRmlsdGVyU3VwcG9ydCA9IGZhbHNlOworICAgICAgICAg
ICAgbUZsb2F0MzJSZW5kZXJTdXBwb3J0ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvLyBDaGVjayBjb21wcmVzc2VkIHRleHR1cmUgc3VwcG9ydAorICAgIGNvbnN0IHVuc2lnbmVk
IGludCByZXF1aXJlZENvbXByZXNzZWRUZXh0dXJlRmxhZ3MgPSBEM0QxMV9GT1JNQVRfU1VQUE9S
VF9URVhUVVJFMkQ7CisKKyAgICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNoZWNrRm9ybWF0U3Vw
cG9ydChEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sICZmb3JtYXRTdXBwb3J0KSkpCisgICAgeworICAg
ICAgICBtRFhUMVRleHR1cmVTdXBwb3J0ID0gKGZvcm1hdFN1cHBvcnQgJiByZXF1aXJlZENvbXBy
ZXNzZWRUZXh0dXJlRmxhZ3MpID09IHJlcXVpcmVkQ29tcHJlc3NlZFRleHR1cmVGbGFnczsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbURYVDFUZXh0dXJlU3VwcG9ydCA9IGZhbHNl
OworICAgIH0KKworICAgIGlmIChTVUNDRUVERUQobURldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0
KERYR0lfRk9STUFUX0JDM19VTk9STSwgJmZvcm1hdFN1cHBvcnQpKSkKKyAgICB7CisgICAgICAg
IG1EWFQzVGV4dHVyZVN1cHBvcnQgPSAoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkQ29tcHJlc3Nl
ZFRleHR1cmVGbGFncykgPT0gcmVxdWlyZWRDb21wcmVzc2VkVGV4dHVyZUZsYWdzOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICBtRFhUM1RleHR1cmVTdXBwb3J0ID0gZmFsc2U7Cisg
ICAgfQorCisgICAgaWYgKFNVQ0NFRURFRChtRGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQoRFhH
SV9GT1JNQVRfQkM1X1VOT1JNLCAmZm9ybWF0U3VwcG9ydCkpKQorICAgIHsKKyAgICAgICAgbURY
VDVUZXh0dXJlU3VwcG9ydCA9IChmb3JtYXRTdXBwb3J0ICYgcmVxdWlyZWRDb21wcmVzc2VkVGV4
dHVyZUZsYWdzKSA9PSByZXF1aXJlZENvbXByZXNzZWRUZXh0dXJlRmxhZ3M7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIG1EWFQ1VGV4dHVyZVN1cHBvcnQgPSBmYWxzZTsKKyAgICB9
CisKKyAgICAvLyBDaGVjayBkZXB0aCB0ZXh0dXJlIHN1cHBvcnQKKyAgICBEWEdJX0ZPUk1BVCBk
ZXB0aFRleHR1cmVGb3JtYXRzW10gPQorICAgIHsKKyAgICAgICAgRFhHSV9GT1JNQVRfRDE2X1VO
T1JNLAorICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAgICB9OworCisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCByZXF1aXJlZERlcHRoVGV4dHVyZUZsYWdzID0g
RDNEMTFfRk9STUFUX1NVUFBPUlRfREVQVEhfU1RFTkNJTCB8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBP
UlRfVEVYVFVSRTJEOworCisgICAgbURlcHRoVGV4dHVyZVN1cHBvcnQgPSB0cnVlOworICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKGRlcHRoVGV4dHVyZUZvcm1hdHMp
OyBpKyspCisgICAgeworICAgICAgICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNoZWNrRm9ybWF0
U3VwcG9ydChkZXB0aFRleHR1cmVGb3JtYXRzW2ldLCAmZm9ybWF0U3VwcG9ydCkpKQorICAgICAg
ICB7CisgICAgICAgICAgICBtRGVwdGhUZXh0dXJlU3VwcG9ydCA9IG1EZXB0aFRleHR1cmVTdXBw
b3J0ICYmICgoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkRGVwdGhUZXh0dXJlRmxhZ3MpID09IHJl
cXVpcmVkRGVwdGhUZXh0dXJlRmxhZ3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgbURlcHRoVGV4dHVyZVN1cHBvcnQgPSBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKK30KKworLy8gZG8gYW55IG9uZS10
aW1lIGRldmljZSBpbml0aWFsaXphdGlvbgorLy8gTk9URTogdGhpcyBpcyBhbHNvIG5lZWRlZCBh
ZnRlciBhIGRldmljZSBsb3N0L3Jlc2V0CisvLyB0byByZXNldCB0aGUgc2NlbmUgc3RhdHVzIGFu
ZCBlbnN1cmUgdGhlIGRlZmF1bHQgc3RhdGVzIGFyZSByZXNldC4KK3ZvaWQgUmVuZGVyZXIxMTo6
aW5pdGlhbGl6ZURldmljZSgpCit7CisgICAgbVN0YXRlQ2FjaGUuaW5pdGlhbGl6ZShtRGV2aWNl
KTsKKyAgICBtSW5wdXRMYXlvdXRDYWNoZS5pbml0aWFsaXplKG1EZXZpY2UsIG1EZXZpY2VDb250
ZXh0KTsKKworICAgIEFTU0VSVCghbVZlcnRleERhdGFNYW5hZ2VyICYmICFtSW5kZXhEYXRhTWFu
YWdlcik7CisgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gbmV3IFZlcnRleERhdGFNYW5hZ2VyKHRo
aXMpOworICAgIG1JbmRleERhdGFNYW5hZ2VyID0gbmV3IEluZGV4RGF0YU1hbmFnZXIodGhpcyk7
CisKKyAgICBtYXJrQWxsU3RhdGVEaXJ0eSgpOworfQorCitpbnQgUmVuZGVyZXIxMTo6Z2VuZXJh
dGVDb25maWdzKENvbmZpZ0Rlc2MgKipjb25maWdEZXNjTGlzdCkKK3sKKyAgICB1bnNpZ25lZCBp
bnQgbnVtUmVuZGVyRm9ybWF0cyA9IEFycmF5U2l6ZShSZW5kZXJUYXJnZXRGb3JtYXRzKTsKKyAg
ICB1bnNpZ25lZCBpbnQgbnVtRGVwdGhGb3JtYXRzID0gQXJyYXlTaXplKERlcHRoU3RlbmNpbEZv
cm1hdHMpOworICAgICgqY29uZmlnRGVzY0xpc3QpID0gbmV3IENvbmZpZ0Rlc2NbbnVtUmVuZGVy
Rm9ybWF0cyAqIG51bURlcHRoRm9ybWF0c107CisgICAgaW50IG51bUNvbmZpZ3MgPSAwOworICAg
IAorICAgIGZvciAodW5zaWduZWQgaW50IGZvcm1hdEluZGV4ID0gMDsgZm9ybWF0SW5kZXggPCBu
dW1SZW5kZXJGb3JtYXRzOyBmb3JtYXRJbmRleCsrKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgZGVwdGhTdGVuY2lsSW5kZXggPSAwOyBkZXB0aFN0ZW5jaWxJbmRleCA8IG51bURl
cHRoRm9ybWF0czsgZGVwdGhTdGVuY2lsSW5kZXgrKykKKyAgICAgICAgeworICAgICAgICAgICAg
RFhHSV9GT1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0ID0gUmVuZGVyVGFyZ2V0Rm9ybWF0c1tmb3Jt
YXRJbmRleF07CisKKyAgICAgICAgICAgIFVJTlQgZm9ybWF0U3VwcG9ydCA9IDA7CisgICAgICAg
ICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNoZWNrRm9ybWF0U3VwcG9ydChyZW5kZXJU
YXJnZXRGb3JtYXQsICZmb3JtYXRTdXBwb3J0KTsKKworICAgICAgICAgICAgaWYgKFNVQ0NFRURF
RChyZXN1bHQpICYmIChmb3JtYXRTdXBwb3J0ICYgRDNEMTFfRk9STUFUX1NVUFBPUlRfUkVOREVS
X1RBUkdFVCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgZGVw
dGhTdGVuY2lsRm9ybWF0ID0gRGVwdGhTdGVuY2lsRm9ybWF0c1tkZXB0aFN0ZW5jaWxJbmRleF07
CisKKyAgICAgICAgICAgICAgICBib29sIGRlcHRoU3RlbmNpbEZvcm1hdE9LID0gdHJ1ZTsKKwor
ICAgICAgICAgICAgICAgIGlmIChkZXB0aFN0ZW5jaWxGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5L
Tk9XTikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFVJTlQgZm9ybWF0
U3VwcG9ydCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNoZWNr
Rm9ybWF0U3VwcG9ydChkZXB0aFN0ZW5jaWxGb3JtYXQsICZmb3JtYXRTdXBwb3J0KTsKKyAgICAg
ICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsRm9ybWF0T0sgPSBTVUNDRUVERUQocmVzdWx0KSAm
JiAoZm9ybWF0U3VwcG9ydCAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX0RFUFRIX1NURU5DSUwpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChkZXB0aFN0ZW5jaWxGb3Jt
YXRPSykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmZpZ0Rlc2Mg
bmV3Q29uZmlnOworICAgICAgICAgICAgICAgICAgICBuZXdDb25maWcucmVuZGVyVGFyZ2V0Rm9y
bWF0ID0gZDNkMTFfZ2w6OkNvbnZlcnRCYWNrQnVmZmVyRm9ybWF0KHJlbmRlclRhcmdldEZvcm1h
dCk7CisgICAgICAgICAgICAgICAgICAgIG5ld0NvbmZpZy5kZXB0aFN0ZW5jaWxGb3JtYXQgPSBk
M2QxMV9nbDo6Q29udmVydERlcHRoU3RlbmNpbEZvcm1hdChkZXB0aFN0ZW5jaWxGb3JtYXQpOwor
ICAgICAgICAgICAgICAgICAgICBuZXdDb25maWcubXVsdGlTYW1wbGUgPSAwOyAgICAgLy8gRklY
TUU6IGVudW1lcmF0ZSBtdWx0aS1zYW1wbGluZworICAgICAgICAgICAgICAgICAgICBuZXdDb25m
aWcuZmFzdENvbmZpZyA9IHRydWU7ICAgLy8gQXNzdW1lIGFsbCBEWDExIGZvcm1hdCBjb252ZXJz
aW9ucyB0byBiZSBmYXN0CisKKyAgICAgICAgICAgICAgICAgICAgKCpjb25maWdEZXNjTGlzdClb
bnVtQ29uZmlncysrXSA9IG5ld0NvbmZpZzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbnVtQ29uZmlnczsKK30KKwordm9p
ZCBSZW5kZXJlcjExOjpkZWxldGVDb25maWdzKENvbmZpZ0Rlc2MgKmNvbmZpZ0Rlc2NMaXN0KQor
eworICAgIGRlbGV0ZSBbXSAoY29uZmlnRGVzY0xpc3QpOworfQorCit2b2lkIFJlbmRlcmVyMTE6
OnN5bmMoYm9vbCBibG9jaykKK3sKKyAgICBpZiAoYmxvY2spCisgICAgeworICAgICAgICBIUkVT
VUxUIHJlc3VsdDsKKworICAgICAgICBpZiAoIW1TeW5jUXVlcnkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEQzRDExX1FVRVJZX0RFU0MgcXVlcnlEZXNjOworICAgICAgICAgICAgcXVlcnlEZXNj
LlF1ZXJ5ID0gRDNEMTFfUVVFUllfRVZFTlQ7CisgICAgICAgICAgICBxdWVyeURlc2MuTWlzY0Zs
YWdzID0gMDsKKworICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUXVlcnkoJnF1
ZXJ5RGVzYywgJm1TeW5jUXVlcnkpOworICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1
bHQpKTsKKyAgICAgICAgfQorCisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5FbmQobVN5bmNRdWVy
eSk7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5GbHVzaCgpOworCisgICAgICAgIGRvCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2VDb250ZXh0LT5HZXREYXRhKG1TeW5j
UXVlcnksIE5VTEwsIDAsIEQzRDExX0FTWU5DX0dFVERBVEFfRE9OT1RGTFVTSCk7CisKKyAgICAg
ICAgICAgIC8vIEtlZXAgcG9sbGluZywgYnV0IGFsbG93IG90aGVyIHRocmVhZHMgdG8gZG8gc29t
ZXRoaW5nIHVzZWZ1bCBmaXJzdAorICAgICAgICAgICAgU2xlZXAoMCk7CisKKyAgICAgICAgICAg
IGlmICh0ZXN0RGV2aWNlTG9zdCh0cnVlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKHJlc3Vs
dCA9PSBTX0ZBTFNFKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbURldmljZUNv
bnRleHQtPkZsdXNoKCk7CisgICAgfQorfQorCitTd2FwQ2hhaW4gKlJlbmRlcmVyMTE6OmNyZWF0
ZVN3YXBDaGFpbihIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBHTGVudW0gYmFja0J1
ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KQoreworICAgIHJldHVybiBuZXcg
cng6OlN3YXBDaGFpbjExKHRoaXMsIHdpbmRvdywgc2hhcmVIYW5kbGUsIGJhY2tCdWZmZXJGb3Jt
YXQsIGRlcHRoQnVmZmVyRm9ybWF0KTsKK30KKwordm9pZCBSZW5kZXJlcjExOjpzZXRTYW1wbGVy
U3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgY29uc3QgZ2w6OlNhbXBsZXJT
dGF0ZSAmc2FtcGxlclN0YXRlKQoreworICAgIGlmICh0eXBlID09IGdsOjpTQU1QTEVSX1BJWEVM
KQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBnbDo6TUFYX1RFWFRV
UkVfSU1BR0VfVU5JVFMpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiUGl4ZWwgc2hhZGVy
IHNhbXBsZXIgaW5kZXggJWkgaXMgbm90IHZhbGlkLiIsIGluZGV4KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtRm9yY2VTZXRQaXhlbFNhbXBsZXJTdGF0
ZXNbaW5kZXhdIHx8IG1lbWNtcCgmc2FtcGxlclN0YXRlLCAmbUN1clBpeGVsU2FtcGxlclN0YXRl
c1tpbmRleF0sIHNpemVvZihnbDo6U2FtcGxlclN0YXRlKSkgIT0gMCkKKyAgICAgICAgeworICAg
ICAgICAgICAgSUQzRDExU2FtcGxlclN0YXRlICpkeFNhbXBsZXJTdGF0ZSA9IG1TdGF0ZUNhY2hl
LmdldFNhbXBsZXJTdGF0ZShzYW1wbGVyU3RhdGUpOworCisgICAgICAgICAgICBpZiAoIWR4U2Ft
cGxlclN0YXRlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVSUigiTlVMTCBzYW1w
bGVyIHN0YXRlIHJldHVybmVkIGJ5IFJlbmRlclN0YXRlQ2FjaGU6OmdldFNhbXBsZXJTdGF0ZSwg
c2V0dGluZyB0aGUgZGVmYXVsdCIKKyAgICAgICAgICAgICAgICAgICAgInNhbXBsZXIgc3RhdGUg
Zm9yIHBpeGVsIHNoYWRlcnMgYXQgc2xvdCAlaS4iLCBpbmRleCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldFNhbXBsZXJzKGluZGV4LCAxLCAmZHhT
YW1wbGVyU3RhdGUpOworCisgICAgICAgICAgICBtQ3VyUGl4ZWxTYW1wbGVyU3RhdGVzW2luZGV4
XSA9IHNhbXBsZXJTdGF0ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1Gb3JjZVNldFBpeGVsU2Ft
cGxlclN0YXRlc1tpbmRleF0gPSBmYWxzZTsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSBn
bDo6U0FNUExFUl9WRVJURVgpCisgICAgeworICAgICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4
ID49IChpbnQpZ2V0TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMoKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgRVJSKCJWZXJ0ZXggc2hhZGVyIHNhbXBsZXIgaW5kZXggJWkgaXMgbm90IHZhbGlk
LiIsIGluZGV4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChtRm9yY2VTZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzW2luZGV4XSB8fCBtZW1jbXAoJnNhbXBsZXJT
dGF0ZSwgJm1DdXJWZXJ0ZXhTYW1wbGVyU3RhdGVzW2luZGV4XSwgc2l6ZW9mKGdsOjpTYW1wbGVy
U3RhdGUpKSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBJRDNEMTFTYW1wbGVyU3RhdGUg
KmR4U2FtcGxlclN0YXRlID0gbVN0YXRlQ2FjaGUuZ2V0U2FtcGxlclN0YXRlKHNhbXBsZXJTdGF0
ZSk7CisKKyAgICAgICAgICAgIGlmICghZHhTYW1wbGVyU3RhdGUpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgRVJSKCJOVUxMIHNhbXBsZXIgc3RhdGUgcmV0dXJuZWQgYnkgUmVuZGVy
U3RhdGVDYWNoZTo6Z2V0U2FtcGxlclN0YXRlLCBzZXR0aW5nIHRoZSBkZWZhdWx0IgorICAgICAg
ICAgICAgICAgICAgICAic2FtcGxlciBzdGF0ZSBmb3IgdmVydGV4IHNoYWRlcnMgYXQgc2xvdCAl
aS4iLCBpbmRleCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0
LT5WU1NldFNhbXBsZXJzKGluZGV4LCAxLCAmZHhTYW1wbGVyU3RhdGUpOworCisgICAgICAgICAg
ICBtQ3VyVmVydGV4U2FtcGxlclN0YXRlc1tpbmRleF0gPSBzYW1wbGVyU3RhdGU7CisgICAgICAg
IH0KKworICAgICAgICBtRm9yY2VTZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzW2luZGV4XSA9IGZhbHNl
OworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6
c2V0VGV4dHVyZShnbDo6U2FtcGxlclR5cGUgdHlwZSwgaW50IGluZGV4LCBnbDo6VGV4dHVyZSAq
dGV4dHVyZSkKK3sKKyAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnRleHR1cmVTUlYgPSBO
VUxMOworICAgIHVuc2lnbmVkIGludCBzZXJpYWwgPSAwOworICAgIGJvb2wgZm9yY2VTZXRUZXh0
dXJlID0gZmFsc2U7CisKKyAgICBpZiAodGV4dHVyZSkKKyAgICB7CisgICAgICAgIFRleHR1cmVT
dG9yYWdlSW50ZXJmYWNlICp0ZXhTdG9yYWdlID0gdGV4dHVyZS0+Z2V0TmF0aXZlVGV4dHVyZSgp
OworICAgICAgICBpZiAodGV4U3RvcmFnZSkKKyAgICAgICAgeworICAgICAgICAgICAgVGV4dHVy
ZVN0b3JhZ2UxMSAqc3RvcmFnZTExID0gVGV4dHVyZVN0b3JhZ2UxMTo6bWFrZVRleHR1cmVTdG9y
YWdlMTEodGV4U3RvcmFnZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgICAgICAgICAgdGV4
dHVyZVNSViA9IHN0b3JhZ2UxMS0+Z2V0U1JWKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJ
ZiB3ZSBnZXQgTlVMTCBiYWNrIGZyb20gZ2V0U1JWIGhlcmUsIHNvbWV0aGluZyB3ZW50IHdyb25n
IGluIHRoZSB0ZXh0dXJlIGNsYXNzIGFuZCB3ZSdyZSB1bmV4cGVjdGVkbHkKKyAgICAgICAgLy8g
bWlzc2luZyB0aGUgc2hhZGVyIHJlc291cmNlIHZpZXcKKyAgICAgICAgQVNTRVJUKHRleHR1cmVT
UlYgIT0gTlVMTCk7CisKKyAgICAgICAgc2VyaWFsID0gdGV4dHVyZS0+Z2V0VGV4dHVyZVNlcmlh
bCgpOworICAgICAgICBmb3JjZVNldFRleHR1cmUgPSB0ZXh0dXJlLT5oYXNEaXJ0eUltYWdlcygp
OworICAgIH0KKworICAgIGlmICh0eXBlID09IGdsOjpTQU1QTEVSX1BJWEVMKQorICAgIHsKKyAg
ICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5J
VFMpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiUGl4ZWwgc2hhZGVyIHNhbXBsZXIgaW5k
ZXggJWkgaXMgbm90IHZhbGlkLiIsIGluZGV4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChmb3JjZVNldFRleHR1cmUgfHwgbUN1clBpeGVsVGV4dHVyZVNl
cmlhbHNbaW5kZXhdICE9IHNlcmlhbCkKKyAgICAgICAgeworICAgICAgICAgICAgbURldmljZUNv
bnRleHQtPlBTU2V0U2hhZGVyUmVzb3VyY2VzKGluZGV4LCAxLCAmdGV4dHVyZVNSVik7CisgICAg
ICAgIH0KKworICAgICAgICBtQ3VyUGl4ZWxUZXh0dXJlU2VyaWFsc1tpbmRleF0gPSBzZXJpYWw7
CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUgPT0gZ2w6OlNBTVBMRVJfVkVSVEVYKQorICAgIHsK
KyAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSAoaW50KWdldE1heFZlcnRleFRleHR1
cmVJbWFnZVVuaXRzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiVmVydGV4IHNoYWRl
ciBzYW1wbGVyIGluZGV4ICVpIGlzIG5vdCB2YWxpZC4iLCBpbmRleCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZm9yY2VTZXRUZXh0dXJlIHx8IG1DdXJW
ZXJ0ZXhUZXh0dXJlU2VyaWFsc1tpbmRleF0gIT0gc2VyaWFsKQorICAgICAgICB7CisgICAgICAg
ICAgICBtRGV2aWNlQ29udGV4dC0+VlNTZXRTaGFkZXJSZXNvdXJjZXMoaW5kZXgsIDEsICZ0ZXh0
dXJlU1JWKTsKKyAgICAgICAgfQorCisgICAgICAgIG1DdXJWZXJ0ZXhUZXh0dXJlU2VyaWFsc1tp
bmRleF0gPSBzZXJpYWw7CisgICAgfQorICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKK30KKwordm9p
ZCBSZW5kZXJlcjExOjpzZXRSYXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6OlJhc3Rlcml6ZXJTdGF0
ZSAmcmFzdGVyU3RhdGUpCit7CisgICAgaWYgKG1Gb3JjZVNldFJhc3RlclN0YXRlIHx8IG1lbWNt
cCgmcmFzdGVyU3RhdGUsICZtQ3VyUmFzdGVyU3RhdGUsIHNpemVvZihnbDo6UmFzdGVyaXplclN0
YXRlKSkgIT0gMCkKKyAgICB7CisgICAgICAgIElEM0QxMVJhc3Rlcml6ZXJTdGF0ZSAqZHhSYXN0
ZXJTdGF0ZSA9IG1TdGF0ZUNhY2hlLmdldFJhc3Rlcml6ZXJTdGF0ZShyYXN0ZXJTdGF0ZSwgbVNj
aXNzb3JFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUN1ckRlcHRoU2l6ZSk7CisgICAg
ICAgIGlmICghZHhSYXN0ZXJTdGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJOVUxM
IHJhc3Rlcml6ZXIgc3RhdGUgcmV0dXJuZWQgYnkgUmVuZGVyU3RhdGVDYWNoZTo6Z2V0UmFzdGVy
aXplclN0YXRlLCBzZXR0aW5nIHRoZSBkZWZhdWx0IgorICAgICAgICAgICAgICAgICJyYXN0ZXJp
emVyIHN0YXRlLiIpOworICAgICAgICB9CisKKyAgICAgICAgbURldmljZUNvbnRleHQtPlJTU2V0
U3RhdGUoZHhSYXN0ZXJTdGF0ZSk7CisKKyAgICAgICAgbUN1clJhc3RlclN0YXRlID0gcmFzdGVy
U3RhdGU7CisgICAgfQorCisgICAgbUZvcmNlU2V0UmFzdGVyU3RhdGUgPSBmYWxzZTsKK30KKwor
dm9pZCBSZW5kZXJlcjExOjpzZXRCbGVuZFN0YXRlKGNvbnN0IGdsOjpCbGVuZFN0YXRlICZibGVu
ZFN0YXRlLCBjb25zdCBnbDo6Q29sb3IgJmJsZW5kQ29sb3IsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZU1hc2spCit7CisgICAgaWYgKG1Gb3JjZVNl
dEJsZW5kU3RhdGUgfHwKKyAgICAgICAgbWVtY21wKCZibGVuZFN0YXRlLCAmbUN1ckJsZW5kU3Rh
dGUsIHNpemVvZihnbDo6QmxlbmRTdGF0ZSkpICE9IDAgfHwKKyAgICAgICAgbWVtY21wKCZibGVu
ZENvbG9yLCAmbUN1ckJsZW5kQ29sb3IsIHNpemVvZihnbDo6Q29sb3IpKSAhPSAwIHx8CisgICAg
ICAgIHNhbXBsZU1hc2sgIT0gbUN1clNhbXBsZU1hc2spCisgICAgeworICAgICAgICBJRDNEMTFC
bGVuZFN0YXRlICpkeEJsZW5kU3RhdGUgPSBtU3RhdGVDYWNoZS5nZXRCbGVuZFN0YXRlKGJsZW5k
U3RhdGUpOworICAgICAgICBpZiAoIWR4QmxlbmRTdGF0ZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgRVJSKCJOVUxMIGJsZW5kIHN0YXRlIHJldHVybmVkIGJ5IFJlbmRlclN0YXRlQ2FjaGU6Omdl
dEJsZW5kU3RhdGUsIHNldHRpbmcgdGhlIGRlZmF1bHQgIgorICAgICAgICAgICAgICAgICJibGVu
ZCBzdGF0ZS4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZsb2F0IGJsZW5kQ29sb3JzWzRdID0g
ezAuMGZ9OworICAgICAgICBpZiAoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJHQiAhPSBHTF9DT05T
VEFOVF9BTFBIQSAmJiBibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICE9IEdMX09ORV9NSU5VU19D
T05TVEFOVF9BTFBIQSAmJgorICAgICAgICAgICAgYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgIT0g
R0xfQ09OU1RBTlRfQUxQSEEgJiYgYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgIT0gR0xfT05FX01J
TlVTX0NPTlNUQU5UX0FMUEhBKQorICAgICAgICB7CisgICAgICAgICAgICBibGVuZENvbG9yc1sw
XSA9IGJsZW5kQ29sb3IucmVkOworICAgICAgICAgICAgYmxlbmRDb2xvcnNbMV0gPSBibGVuZENv
bG9yLmdyZWVuOworICAgICAgICAgICAgYmxlbmRDb2xvcnNbMl0gPSBibGVuZENvbG9yLmJsdWU7
CisgICAgICAgICAgICBibGVuZENvbG9yc1szXSA9IGJsZW5kQ29sb3IuYWxwaGE7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBibGVuZENvbG9yc1swXSA9
IGJsZW5kQ29sb3IuYWxwaGE7CisgICAgICAgICAgICBibGVuZENvbG9yc1sxXSA9IGJsZW5kQ29s
b3IuYWxwaGE7CisgICAgICAgICAgICBibGVuZENvbG9yc1syXSA9IGJsZW5kQ29sb3IuYWxwaGE7
CisgICAgICAgICAgICBibGVuZENvbG9yc1szXSA9IGJsZW5kQ29sb3IuYWxwaGE7CisgICAgICAg
IH0KKworICAgICAgICBtRGV2aWNlQ29udGV4dC0+T01TZXRCbGVuZFN0YXRlKGR4QmxlbmRTdGF0
ZSwgYmxlbmRDb2xvcnMsIHNhbXBsZU1hc2spOworCisgICAgICAgIG1DdXJCbGVuZFN0YXRlID0g
YmxlbmRTdGF0ZTsKKyAgICAgICAgbUN1ckJsZW5kQ29sb3IgPSBibGVuZENvbG9yOworICAgICAg
ICBtQ3VyU2FtcGxlTWFzayA9IHNhbXBsZU1hc2s7CisgICAgfQorCisgICAgbUZvcmNlU2V0Qmxl
bmRTdGF0ZSA9IGZhbHNlOworfQorCit2b2lkIFJlbmRlcmVyMTE6OnNldERlcHRoU3RlbmNpbFN0
YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZGVwdGhTdGVuY2lsU3RhdGUsIGludCBz
dGVuY2lsUmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3Rl
bmNpbEJhY2tSZWYsIGJvb2wgZnJvbnRGYWNlQ0NXKQoreworICAgIGlmIChtRm9yY2VTZXREZXB0
aFN0ZW5jaWxTdGF0ZSB8fAorICAgICAgICBtZW1jbXAoJmRlcHRoU3RlbmNpbFN0YXRlLCAmbUN1
ckRlcHRoU3RlbmNpbFN0YXRlLCBzaXplb2YoZ2w6OkRlcHRoU3RlbmNpbFN0YXRlKSkgIT0gMCB8
fAorICAgICAgICBzdGVuY2lsUmVmICE9IG1DdXJTdGVuY2lsUmVmIHx8IHN0ZW5jaWxCYWNrUmVm
ICE9IG1DdXJTdGVuY2lsQmFja1JlZikKKyAgICB7CisgICAgICAgIGlmIChkZXB0aFN0ZW5jaWxT
dGF0ZS5zdGVuY2lsV3JpdGVtYXNrICE9IGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrV3Jp
dGVtYXNrIHx8CisgICAgICAgICAgICBzdGVuY2lsUmVmICE9IHN0ZW5jaWxCYWNrUmVmIHx8Cisg
ICAgICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsTWFzayAhPSBkZXB0aFN0ZW5jaWxT
dGF0ZS5zdGVuY2lsQmFja01hc2spCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiU2VwYXJh
dGUgZnJvbnQvYmFjayBzdGVuY2lsIHdyaXRlbWFza3MsIHJlZmVyZW5jZSB2YWx1ZXMsIG9yIHN0
ZW5jaWwgbWFzayB2YWx1ZXMgYXJlICIKKyAgICAgICAgICAgICAgICAiaW52YWxpZCB1bmRlciBX
ZWJHTC4iKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICB9CisKKyAgICAgICAgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKmR4RGVw
dGhTdGVuY2lsU3RhdGUgPSBtU3RhdGVDYWNoZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZShkZXB0aFN0
ZW5jaWxTdGF0ZSk7CisgICAgICAgIGlmICghZHhEZXB0aFN0ZW5jaWxTdGF0ZSkKKyAgICAgICAg
eworICAgICAgICAgICAgRVJSKCJOVUxMIGRlcHRoIHN0ZW5jaWwgc3RhdGUgcmV0dXJuZWQgYnkg
UmVuZGVyU3RhdGVDYWNoZTo6Z2V0RGVwdGhTdGVuY2lsU3RhdGUsICIKKyAgICAgICAgICAgICAg
ICAic2V0dGluZyB0aGUgZGVmYXVsdCBkZXB0aCBzdGVuY2lsIHN0YXRlLiIpOworICAgICAgICB9
CisKKyAgICAgICAgbURldmljZUNvbnRleHQtPk9NU2V0RGVwdGhTdGVuY2lsU3RhdGUoZHhEZXB0
aFN0ZW5jaWxTdGF0ZSwgc3RhdGljX2Nhc3Q8VUlOVD4oc3RlbmNpbFJlZikpOworCisgICAgICAg
IG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZSA9IGRlcHRoU3RlbmNpbFN0YXRlOworICAgICAgICBtQ3Vy
U3RlbmNpbFJlZiA9IHN0ZW5jaWxSZWY7CisgICAgICAgIG1DdXJTdGVuY2lsQmFja1JlZiA9IHN0
ZW5jaWxCYWNrUmVmOworICAgIH0KKworICAgIG1Gb3JjZVNldERlcHRoU3RlbmNpbFN0YXRlID0g
ZmFsc2U7Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6c2V0U2Npc3NvclJlY3RhbmdsZShjb25zdCBn
bDo6UmVjdGFuZ2xlICZzY2lzc29yLCBib29sIGVuYWJsZWQpCit7CisgICAgaWYgKG1Gb3JjZVNl
dFNjaXNzb3IgfHwgbWVtY21wKCZzY2lzc29yLCAmbUN1clNjaXNzb3IsIHNpemVvZihnbDo6UmVj
dGFuZ2xlKSkgIT0gMCB8fAorICAgICAgICBlbmFibGVkICE9IG1TY2lzc29yRW5hYmxlZCkKKyAg
ICB7CisgICAgICAgIGlmIChlbmFibGVkKQorICAgICAgICB7CisgICAgICAgICAgICBEM0QxMV9S
RUNUIHJlY3Q7CisgICAgICAgICAgICByZWN0LmxlZnQgPSBzdGQ6Om1heCgwLCBzY2lzc29yLngp
OworICAgICAgICAgICAgcmVjdC50b3AgPSBzdGQ6Om1heCgwLCBzY2lzc29yLnkpOworICAgICAg
ICAgICAgcmVjdC5yaWdodCA9IHNjaXNzb3IueCArIHN0ZDo6bWF4KDAsIHNjaXNzb3Iud2lkdGgp
OworICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBzY2lzc29yLnkgKyBzdGQ6Om1heCgwLCBzY2lz
c29yLmhlaWdodCk7CisKKyAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5SU1NldFNjaXNzb3JS
ZWN0cygxLCAmcmVjdCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZW5hYmxlZCAhPSBtU2Np
c3NvckVuYWJsZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1Gb3JjZVNldFJhc3RlclN0YXRl
ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1DdXJTY2lzc29yID0gc2Npc3NvcjsKKyAg
ICAgICAgbVNjaXNzb3JFbmFibGVkID0gZW5hYmxlZDsKKyAgICB9CisKKyAgICBtRm9yY2VTZXRT
Y2lzc29yID0gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6c2V0Vmlld3BvcnQoY29uc3Qg
Z2w6OlJlY3RhbmdsZSAmdmlld3BvcnQsIGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyLCBHTGVudW0g
ZHJhd01vZGUsIEdMZW51bSBmcm9udEZhY2UsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlnbm9yZVZpZXdwb3J0KQoreworICAgIGdsOjpSZWN0YW5nbGUgYWN0dWFsVmlld3Bv
cnQgPSB2aWV3cG9ydDsKKyAgICBmbG9hdCBhY3R1YWxaTmVhciA9IGdsOjpjbGFtcDAxKHpOZWFy
KTsKKyAgICBmbG9hdCBhY3R1YWxaRmFyID0gZ2w6OmNsYW1wMDEoekZhcik7CisgICAgaWYgKGln
bm9yZVZpZXdwb3J0KQorICAgIHsKKyAgICAgICAgYWN0dWFsVmlld3BvcnQueCA9IDA7CisgICAg
ICAgIGFjdHVhbFZpZXdwb3J0LnkgPSAwOworICAgICAgICBhY3R1YWxWaWV3cG9ydC53aWR0aCA9
IG1SZW5kZXJUYXJnZXREZXNjLndpZHRoOworICAgICAgICBhY3R1YWxWaWV3cG9ydC5oZWlnaHQg
PSBtUmVuZGVyVGFyZ2V0RGVzYy5oZWlnaHQ7CisgICAgICAgIGFjdHVhbFpOZWFyID0gMC4wZjsK
KyAgICAgICAgYWN0dWFsWkZhciA9IDEuMGY7CisgICAgfQorCisgICAgLy8gR2V0IEQzRCB2aWV3
cG9ydCBib3VuZHMsIHdoaWNoIGRlcGVuZHMgb24gdGhlIGZlYXR1cmUgbGV2ZWwKKyAgICBjb25z
dCBSYW5nZSYgdmlld3BvcnRCb3VuZHMgPSBnZXRWaWV3cG9ydEJvdW5kcygpOworCisgICAgLy8g
Q2xhbXAgd2lkdGggYW5kIGhlaWdodCBmaXJzdCB0byB0aGUgZ2wgbWF4aW11bSwgdGhlbiBjbGFt
cCBmdXJ0aGVyIGlmIHdlIGV4dGVuZCBwYXN0IHRoZSBEM0QgbWF4aW11bSBib3VuZHMKKyAgICBE
M0QxMV9WSUVXUE9SVCBkeFZpZXdwb3J0OworICAgIGR4Vmlld3BvcnQuVG9wTGVmdFggPSBnbDo6
Y2xhbXAoYWN0dWFsVmlld3BvcnQueCwgdmlld3BvcnRCb3VuZHMuc3RhcnQsIHZpZXdwb3J0Qm91
bmRzLmVuZCk7CisgICAgZHhWaWV3cG9ydC5Ub3BMZWZ0WSA9IGdsOjpjbGFtcChhY3R1YWxWaWV3
cG9ydC55LCB2aWV3cG9ydEJvdW5kcy5zdGFydCwgdmlld3BvcnRCb3VuZHMuZW5kKTsKKyAgICBk
eFZpZXdwb3J0LldpZHRoID0gZ2w6OmNsYW1wKGFjdHVhbFZpZXdwb3J0LndpZHRoLCAwLCBnZXRN
YXhWaWV3cG9ydERpbWVuc2lvbigpKTsKKyAgICBkeFZpZXdwb3J0LkhlaWdodCA9IGdsOjpjbGFt
cChhY3R1YWxWaWV3cG9ydC5oZWlnaHQsIDAsIGdldE1heFZpZXdwb3J0RGltZW5zaW9uKCkpOwor
ICAgIGR4Vmlld3BvcnQuV2lkdGggPSBzdGQ6Om1pbigoaW50KWR4Vmlld3BvcnQuV2lkdGgsIHZp
ZXdwb3J0Qm91bmRzLmVuZCAtIHN0YXRpY19jYXN0PGludD4oZHhWaWV3cG9ydC5Ub3BMZWZ0WCkp
OworICAgIGR4Vmlld3BvcnQuSGVpZ2h0ID0gc3RkOjptaW4oKGludClkeFZpZXdwb3J0LkhlaWdo
dCwgdmlld3BvcnRCb3VuZHMuZW5kIC0gc3RhdGljX2Nhc3Q8aW50PihkeFZpZXdwb3J0LlRvcExl
ZnRZKSk7CisgICAgZHhWaWV3cG9ydC5NaW5EZXB0aCA9IGFjdHVhbFpOZWFyOworICAgIGR4Vmll
d3BvcnQuTWF4RGVwdGggPSBhY3R1YWxaRmFyOworCisgICAgaWYgKGR4Vmlld3BvcnQuV2lkdGgg
PD0gMCB8fCBkeFZpZXdwb3J0LkhlaWdodCA8PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOyAgIC8vIE5vdGhpbmcgdG8gcmVuZGVyCisgICAgfQorCisgICAgYm9vbCB2aWV3cG9ydENo
YW5nZWQgPSBtRm9yY2VTZXRWaWV3cG9ydCB8fCBtZW1jbXAoJmFjdHVhbFZpZXdwb3J0LCAmbUN1
clZpZXdwb3J0LCBzaXplb2YoZ2w6OlJlY3RhbmdsZSkpICE9IDAgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFjdHVhbFpOZWFyICE9IG1DdXJOZWFyIHx8IGFjdHVhbFpGYXIgIT0gbUN1
ckZhcjsKKworICAgIGlmICh2aWV3cG9ydENoYW5nZWQpCisgICAgeworICAgICAgICBtRGV2aWNl
Q29udGV4dC0+UlNTZXRWaWV3cG9ydHMoMSwgJmR4Vmlld3BvcnQpOworCisgICAgICAgIG1DdXJW
aWV3cG9ydCA9IGFjdHVhbFZpZXdwb3J0OworICAgICAgICBtQ3VyTmVhciA9IGFjdHVhbFpOZWFy
OworICAgICAgICBtQ3VyRmFyID0gYWN0dWFsWkZhcjsKKworICAgICAgICBtUGl4ZWxDb25zdGFu
dHMudmlld0Nvb3Jkc1swXSA9IGFjdHVhbFZpZXdwb3J0LndpZHRoICAqIDAuNWY7CisgICAgICAg
IG1QaXhlbENvbnN0YW50cy52aWV3Q29vcmRzWzFdID0gYWN0dWFsVmlld3BvcnQuaGVpZ2h0ICog
MC41ZjsKKyAgICAgICAgbVBpeGVsQ29uc3RhbnRzLnZpZXdDb29yZHNbMl0gPSBhY3R1YWxWaWV3
cG9ydC54ICsgKGFjdHVhbFZpZXdwb3J0LndpZHRoICAqIDAuNWYpOworICAgICAgICBtUGl4ZWxD
b25zdGFudHMudmlld0Nvb3Jkc1szXSA9IGFjdHVhbFZpZXdwb3J0LnkgKyAoYWN0dWFsVmlld3Bv
cnQuaGVpZ2h0ICogMC41Zik7CisKKyAgICAgICAgbVBpeGVsQ29uc3RhbnRzLmRlcHRoRnJvbnRb
MF0gPSAoYWN0dWFsWkZhciAtIGFjdHVhbFpOZWFyKSAqIDAuNWY7CisgICAgICAgIG1QaXhlbENv
bnN0YW50cy5kZXB0aEZyb250WzFdID0gKGFjdHVhbFpOZWFyICsgYWN0dWFsWkZhcikgKiAwLjVm
OworCisgICAgICAgIG1WZXJ0ZXhDb25zdGFudHMuZGVwdGhSYW5nZVswXSA9IGFjdHVhbFpOZWFy
OworICAgICAgICBtVmVydGV4Q29uc3RhbnRzLmRlcHRoUmFuZ2VbMV0gPSBhY3R1YWxaRmFyOwor
ICAgICAgICBtVmVydGV4Q29uc3RhbnRzLmRlcHRoUmFuZ2VbMl0gPSBhY3R1YWxaRmFyIC0gYWN0
dWFsWk5lYXI7CisKKyAgICAgICAgbVBpeGVsQ29uc3RhbnRzLmRlcHRoUmFuZ2VbMF0gPSBhY3R1
YWxaTmVhcjsKKyAgICAgICAgbVBpeGVsQ29uc3RhbnRzLmRlcHRoUmFuZ2VbMV0gPSBhY3R1YWxa
RmFyOworICAgICAgICBtUGl4ZWxDb25zdGFudHMuZGVwdGhSYW5nZVsyXSA9IGFjdHVhbFpGYXIg
LSBhY3R1YWxaTmVhcjsKKyAgICB9CisKKyAgICBtRm9yY2VTZXRWaWV3cG9ydCA9IGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlbmRlcmVyMTE6OmFwcGx5UHJpbWl0aXZlVHlw
ZShHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCkKK3sKKyAgICBEM0QxMV9QUklNSVRJVkVfVE9Q
T0xPR1kgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX1VOREVGSU5F
RDsKKworICAgIHN3aXRjaCAobW9kZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1BPSU5UUzogICAg
ICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRDExX1BSSU1JVElWRV9UT1BPTE9HWV9QT0lOVExJ
U1Q7ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJTkVTOiAgICAgICAgICBwcmltaXRpdmVUb3Bv
bG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfTElORUxJU1Q7ICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0xJTkVfTE9PUDogICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJ
VkVfVE9QT0xPR1lfTElORVNUUklQOyAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJTkVfU1RS
SVA6ICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfTElORVNU
UklQOyAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RSSUFOR0xFUzogICAgICBwcmltaXRpdmVU
b3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVMSVNUOyAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX1RSSUFOR0xFX1NUUklQOiBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklN
SVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVTVFJJUDsgYnJlYWs7CisgICAgICAgICAgLy8gZW11bGF0
ZSBmYW5zIHZpYSByZXdyaXRpbmcgaW5kZXggYnVmZmVyCisgICAgICBjYXNlIEdMX1RSSUFOR0xF
X0ZBTjogICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5H
TEVMSVNUOyAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfRU5VTSwgZmFsc2UpOworICAgIH0KKworICAgIG1EZXZpY2VDb250ZXh0LT5J
QVNldFByaW1pdGl2ZVRvcG9sb2d5KHByaW1pdGl2ZVRvcG9sb2d5KTsKKworICAgIHJldHVybiBj
b3VudCA+IDA7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6YXBwbHlSZW5kZXJUYXJnZXQoZ2w6OkZy
YW1lYnVmZmVyICpmcmFtZWJ1ZmZlcikKK3sKKyAgICAvLyBHZXQgdGhlIGNvbG9yIHJlbmRlciBi
dWZmZXIgYW5kIHNlcmlhbAorICAgIC8vIEFsc28gZXh0cmFjdCB0aGUgcmVuZGVyIHRhcmdldCBk
aW1lbnNpb25zIGFuZCB2aWV3CisgICAgdW5zaWduZWQgaW50IHJlbmRlclRhcmdldFdpZHRoID0g
MDsKKyAgICB1bnNpZ25lZCBpbnQgcmVuZGVyVGFyZ2V0SGVpZ2h0ID0gMDsKKyAgICBHTGVudW0g
cmVuZGVyVGFyZ2V0Rm9ybWF0ID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgcmVuZGVyVGFyZ2V0U2Vy
aWFsc1tnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSU10gPSB7MH07CisgICAgSUQz
RDExUmVuZGVyVGFyZ2V0VmlldyogZnJhbWVidWZmZXJSVFZzW2dsOjpJTVBMRU1FTlRBVElPTl9N
QVhfRFJBV19CVUZGRVJTXSA9IHtOVUxMfTsKKyAgICBib29sIG1pc3NpbmdDb2xvclJlbmRlclRh
cmdldCA9IHRydWU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAw
OyBjb2xvckF0dGFjaG1lbnQgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUzsg
Y29sb3JBdHRhY2htZW50KyspCisgICAgeworICAgICAgICBjb25zdCBHTGVudW0gZHJhd0J1ZmZl
clN0YXRlID0gZnJhbWVidWZmZXItPmdldERyYXdCdWZmZXJTdGF0ZShjb2xvckF0dGFjaG1lbnQp
OworCisgICAgICAgIGlmIChmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXJUeXBlKGNvbG9yQXR0
YWNobWVudCkgIT0gR0xfTk9ORSAmJiBkcmF3QnVmZmVyU3RhdGUgIT0gR0xfTk9ORSkKKyAgICAg
ICAgeworICAgICAgICAgICAgLy8gdGhlIGRyYXcgYnVmZmVyIG11c3QgYmUgZWl0aGVyICJub25l
IiwgImJhY2siIGZvciB0aGUgZGVmYXVsdCBidWZmZXIgb3IgdGhlIHNhbWUgaW5kZXggYXMgdGhp
cyBjb2xvciAoaW4gb3JkZXIpCisgICAgICAgICAgICBBU1NFUlQoZHJhd0J1ZmZlclN0YXRlID09
IEdMX0JBQ0sgfHwgZHJhd0J1ZmZlclN0YXRlID09IChHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQg
KyBjb2xvckF0dGFjaG1lbnQpKTsKKworICAgICAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqY29s
b3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoY29sb3JBdHRhY2htZW50KTsK
KworICAgICAgICAgICAgaWYgKCFjb2xvcmJ1ZmZlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBFUlIoInJlbmRlciB0YXJnZXQgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIGNoZWNrIGZvciB6ZXJvLXNpemVkIGRlZmF1bHQgZnJhbWVidWZmZXIsIHdoaWNoIGlz
IGEgc3BlY2lhbCBjYXNlLgorICAgICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIGRvIG5vdCB3
aXNoIHRvIG1vZGlmeSBhbnkgc3RhdGUgYW5kIGp1c3Qgc2lsZW50bHkgcmV0dXJuIGZhbHNlLgor
ICAgICAgICAgICAgLy8gdGhpcyB3aWxsIG5vdCByZXBvcnQgYW55IGdsIGVycm9yIGJ1dCB3aWxs
IGNhdXNlIHRoZSBjYWxsaW5nIG1ldGhvZCB0byByZXR1cm4uCisgICAgICAgICAgICBpZiAoY29s
b3JidWZmZXItPmdldFdpZHRoKCkgPT0gMCB8fCBjb2xvcmJ1ZmZlci0+Z2V0SGVpZ2h0KCkgPT0g
MCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJlbmRlclRhcmdldFNlcmlhbHNbY29sb3JBdHRhY2htZW50
XSA9IGNvbG9yYnVmZmVyLT5nZXRTZXJpYWwoKTsKKworICAgICAgICAgICAgLy8gRXh0cmFjdCB0
aGUgcmVuZGVyIHRhcmdldCBkaW1lbnNpb25zIGFuZCB2aWV3CisgICAgICAgICAgICBSZW5kZXJU
YXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQx
MShjb2xvcmJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAgICAgICAgICAgaWYgKCFyZW5k
ZXJUYXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRVJSKCJyZW5kZXIgdGFy
Z2V0IHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmcmFtZWJ1ZmZlclJUVnNbY29s
b3JBdHRhY2htZW50XSA9IHJlbmRlclRhcmdldC0+Z2V0UmVuZGVyVGFyZ2V0VmlldygpOworICAg
ICAgICAgICAgaWYgKCFmcmFtZWJ1ZmZlclJUVnNbY29sb3JBdHRhY2htZW50XSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBFUlIoInJlbmRlciB0YXJnZXQgdmlldyBwb2ludGVyIHVu
ZXhwZWN0ZWRseSBudWxsLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1pc3NpbmdDb2xvclJlbmRlclRhcmdldCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXRXaWR0aCA9IGNvbG9yYnVm
ZmVyLT5nZXRXaWR0aCgpOworICAgICAgICAgICAgICAgIHJlbmRlclRhcmdldEhlaWdodCA9IGNv
bG9yYnVmZmVyLT5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXRGb3Jt
YXQgPSBjb2xvcmJ1ZmZlci0+Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgbWlz
c2luZ0NvbG9yUmVuZGVyVGFyZ2V0ID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBHZXQgdGhlIGRlcHRoIHN0ZW5jaWwgcmVuZGVyIGJ1ZmZlciBhbmQg
c2VyaWFscworICAgIGdsOjpSZW5kZXJidWZmZXIgKmRlcHRoU3RlbmNpbCA9IE5VTEw7CisgICAg
dW5zaWduZWQgaW50IGRlcHRoYnVmZmVyU2VyaWFsID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgc3Rl
bmNpbGJ1ZmZlclNlcmlhbCA9IDA7CisgICAgaWYgKGZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1ZmZl
clR5cGUoKSAhPSBHTF9OT05FKQorICAgIHsKKyAgICAgICAgZGVwdGhTdGVuY2lsID0gZnJhbWVi
dWZmZXItPmdldERlcHRoYnVmZmVyKCk7CisgICAgICAgIGlmICghZGVwdGhTdGVuY2lsKQorICAg
ICAgICB7CisgICAgICAgICAgICBFUlIoIkRlcHRoIHN0ZW5jaWwgcG9pbnRlciB1bmV4cGVjdGVk
bHkgbnVsbC4iKTsKKyAgICAgICAgICAgIFNhZmVSZWxlYXNlKGZyYW1lYnVmZmVyUlRWcyk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBkZXB0aGJ1ZmZl
clNlcmlhbCA9IGRlcHRoU3RlbmNpbC0+Z2V0U2VyaWFsKCk7CisgICAgfQorICAgIGVsc2UgaWYg
KGZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyVHlwZSgpICE9IEdMX05PTkUpCisgICAgewor
ICAgICAgICBkZXB0aFN0ZW5jaWwgPSBmcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlcigpOwor
ICAgICAgICBpZiAoIWRlcHRoU3RlbmNpbCkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJE
ZXB0aCBzdGVuY2lsIHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAgICAgICAgICBT
YWZlUmVsZWFzZShmcmFtZWJ1ZmZlclJUVnMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisKKyAgICAgICAgc3RlbmNpbGJ1ZmZlclNlcmlhbCA9IGRlcHRoU3RlbmNpbC0+
Z2V0U2VyaWFsKCk7CisgICAgfQorCisgICAgLy8gRXh0cmFjdCB0aGUgZGVwdGggc3RlbmNpbCBz
aXplcyBhbmQgdmlldworICAgIHVuc2lnbmVkIGludCBkZXB0aFNpemUgPSAwOworICAgIHVuc2ln
bmVkIGludCBzdGVuY2lsU2l6ZSA9IDA7CisgICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyogZnJh
bWVidWZmZXJEU1YgPSBOVUxMOworICAgIGlmIChkZXB0aFN0ZW5jaWwpCisgICAgeworICAgICAg
ICBSZW5kZXJUYXJnZXQxMSAqZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0
MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShkZXB0aFN0ZW5jaWwtPmdldERlcHRoU3RlbmNpbCgpKTsK
KyAgICAgICAgaWYgKCFkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEVSUigicmVuZGVyIHRhcmdldCBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOwor
ICAgICAgICAgICAgU2FmZVJlbGVhc2UoZnJhbWVidWZmZXJSVFZzKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGZyYW1lYnVmZmVyRFNWID0gZGVwdGhT
dGVuY2lsUmVuZGVyVGFyZ2V0LT5nZXREZXB0aFN0ZW5jaWxWaWV3KCk7CisgICAgICAgIGlmICgh
ZnJhbWVidWZmZXJEU1YpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiZGVwdGggc3RlbmNp
bCB2aWV3IHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAgICAgICAgICBTYWZlUmVs
ZWFzZShmcmFtZWJ1ZmZlclJUVnMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmVuZGVyIGJ1ZmZlciwgdGhlIHdpZHRo
LCBoZWlnaHQgYW5kIGZvcm1hdCB2YWx1ZXMgY29tZSBmcm9tCisgICAgICAgIC8vIHRoZSBkZXB0
aCBzdGVuY2lsCisgICAgICAgIGlmIChtaXNzaW5nQ29sb3JSZW5kZXJUYXJnZXQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJlbmRlclRhcmdldFdpZHRoID0gZGVwdGhTdGVuY2lsLT5nZXRXaWR0
aCgpOworICAgICAgICAgICAgcmVuZGVyVGFyZ2V0SGVpZ2h0ID0gZGVwdGhTdGVuY2lsLT5nZXRI
ZWlnaHQoKTsKKyAgICAgICAgICAgIHJlbmRlclRhcmdldEZvcm1hdCA9IGRlcHRoU3RlbmNpbC0+
Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAgICAgIH0KKworICAgICAgICBkZXB0aFNpemUgPSBkZXB0
aFN0ZW5jaWwtPmdldERlcHRoU2l6ZSgpOworICAgICAgICBzdGVuY2lsU2l6ZSA9IGRlcHRoU3Rl
bmNpbC0+Z2V0U3RlbmNpbFNpemUoKTsKKyAgICB9CisKKyAgICAvLyBBcHBseSB0aGUgcmVuZGVy
IHRhcmdldCBhbmQgZGVwdGggc3RlbmNpbAorICAgIGlmICghbVJlbmRlclRhcmdldERlc2NJbml0
aWFsaXplZCB8fCAhbURlcHRoU3RlbmNpbEluaXRpYWxpemVkIHx8CisgICAgICAgIG1lbWNtcChy
ZW5kZXJUYXJnZXRTZXJpYWxzLCBtQXBwbGllZFJlbmRlclRhcmdldFNlcmlhbHMsIHNpemVvZihy
ZW5kZXJUYXJnZXRTZXJpYWxzKSkgIT0gMCB8fAorICAgICAgICBkZXB0aGJ1ZmZlclNlcmlhbCAh
PSBtQXBwbGllZERlcHRoYnVmZmVyU2VyaWFsIHx8CisgICAgICAgIHN0ZW5jaWxidWZmZXJTZXJp
YWwgIT0gbUFwcGxpZWRTdGVuY2lsYnVmZmVyU2VyaWFsKQorICAgIHsKKyAgICAgICAgbURldmlj
ZUNvbnRleHQtPk9NU2V0UmVuZGVyVGFyZ2V0cyhnZXRNYXhSZW5kZXJUYXJnZXRzKCksIGZyYW1l
YnVmZmVyUlRWcywgZnJhbWVidWZmZXJEU1YpOworCisgICAgICAgIG1SZW5kZXJUYXJnZXREZXNj
LndpZHRoID0gcmVuZGVyVGFyZ2V0V2lkdGg7CisgICAgICAgIG1SZW5kZXJUYXJnZXREZXNjLmhl
aWdodCA9IHJlbmRlclRhcmdldEhlaWdodDsKKyAgICAgICAgbVJlbmRlclRhcmdldERlc2MuZm9y
bWF0ID0gcmVuZGVyVGFyZ2V0Rm9ybWF0OworICAgICAgICBtRm9yY2VTZXRWaWV3cG9ydCA9IHRy
dWU7CisgICAgICAgIG1Gb3JjZVNldFNjaXNzb3IgPSB0cnVlOworCisgICAgICAgIGlmICghbURl
cHRoU3RlbmNpbEluaXRpYWxpemVkIHx8IGRlcHRoU2l6ZSAhPSBtQ3VyRGVwdGhTaXplKQorICAg
ICAgICB7CisgICAgICAgICAgICBtQ3VyRGVwdGhTaXplID0gZGVwdGhTaXplOworICAgICAgICAg
ICAgbUZvcmNlU2V0UmFzdGVyU3RhdGUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgbUN1
clN0ZW5jaWxTaXplID0gc3RlbmNpbFNpemU7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQg
cnRJbmRleCA9IDA7IHJ0SW5kZXggPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVS
UzsgcnRJbmRleCsrKQorICAgICAgICB7CisgICAgICAgICAgICBtQXBwbGllZFJlbmRlclRhcmdl
dFNlcmlhbHNbcnRJbmRleF0gPSByZW5kZXJUYXJnZXRTZXJpYWxzW3J0SW5kZXhdOworICAgICAg
ICB9CisgICAgICAgIG1BcHBsaWVkRGVwdGhidWZmZXJTZXJpYWwgPSBkZXB0aGJ1ZmZlclNlcmlh
bDsKKyAgICAgICAgbUFwcGxpZWRTdGVuY2lsYnVmZmVyU2VyaWFsID0gc3RlbmNpbGJ1ZmZlclNl
cmlhbDsKKyAgICAgICAgbVJlbmRlclRhcmdldERlc2NJbml0aWFsaXplZCA9IHRydWU7CisgICAg
ICAgIG1EZXB0aFN0ZW5jaWxJbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisgICAgU2FmZVJl
bGVhc2UoZnJhbWVidWZmZXJSVFZzKTsKKyAgICBTYWZlUmVsZWFzZShmcmFtZWJ1ZmZlckRTVik7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworR0xlbnVtIFJlbmRlcmVyMTE6OmFwcGx5VmVydGV4
QnVmZmVyKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5LCBnbDo6VmVydGV4QXR0cmli
dXRlIHZlcnRleEF0dHJpYnV0ZXNbXSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6
ZWkgaW5zdGFuY2VzKQoreworICAgIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tnbDo6
TUFYX1ZFUlRFWF9BVFRSSUJTXTsKKyAgICBHTGVudW0gZXJyID0gbVZlcnRleERhdGFNYW5hZ2Vy
LT5wcmVwYXJlVmVydGV4RGF0YSh2ZXJ0ZXhBdHRyaWJ1dGVzLCBwcm9ncmFtQmluYXJ5LCBmaXJz
dCwgY291bnQsIGF0dHJpYnV0ZXMsIGluc3RhbmNlcyk7CisgICAgaWYgKGVyciAhPSBHTF9OT19F
UlJPUikKKyAgICB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorCisgICAgcmV0dXJuIG1J
bnB1dExheW91dENhY2hlLmFwcGx5VmVydGV4QnVmZmVycyhhdHRyaWJ1dGVzLCBwcm9ncmFtQmlu
YXJ5KTsKK30KKworR0xlbnVtIFJlbmRlcmVyMTE6OmFwcGx5SW5kZXhCdWZmZXIoY29uc3QgR0x2
b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIsIEdMc2l6ZWkgY291
bnQsIEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJ
bmZvKQoreworICAgIEdMZW51bSBlcnIgPSBtSW5kZXhEYXRhTWFuYWdlci0+cHJlcGFyZUluZGV4
RGF0YSh0eXBlLCBjb3VudCwgZWxlbWVudEFycmF5QnVmZmVyLCBpbmRpY2VzLCBpbmRleEluZm8p
OworCisgICAgaWYgKGVyciA9PSBHTF9OT19FUlJPUikKKyAgICB7CisgICAgICAgIGlmIChpbmRl
eEluZm8tPnN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpbmRleEluZm8tPnNl
cmlhbCAhPSBtQXBwbGllZFN0b3JhZ2VJQlNlcmlhbCB8fCBpbmRleEluZm8tPnN0YXJ0T2Zmc2V0
ICE9IG1BcHBsaWVkSUJPZmZzZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQnVm
ZmVyU3RvcmFnZTExICpzdG9yYWdlID0gQnVmZmVyU3RvcmFnZTExOjptYWtlQnVmZmVyU3RvcmFn
ZTExKGluZGV4SW5mby0+c3RvcmFnZSk7CisgICAgICAgICAgICAgICAgSW5kZXhCdWZmZXIxMSog
aW5kZXhCdWZmZXIgPSBJbmRleEJ1ZmZlcjExOjptYWtlSW5kZXhCdWZmZXIxMShpbmRleEluZm8t
PmluZGV4QnVmZmVyKTsKKworICAgICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5JQVNldElu
ZGV4QnVmZmVyKHN0b3JhZ2UtPmdldEJ1ZmZlcigpLCBpbmRleEJ1ZmZlci0+Z2V0SW5kZXhGb3Jt
YXQoKSwgaW5kZXhJbmZvLT5zdGFydE9mZnNldCk7CisKKyAgICAgICAgICAgICAgICBtQXBwbGll
ZElCU2VyaWFsID0gMDsKKyAgICAgICAgICAgICAgICBtQXBwbGllZFN0b3JhZ2VJQlNlcmlhbCA9
IHN0b3JhZ2UtPmdldFNlcmlhbCgpOworICAgICAgICAgICAgICAgIG1BcHBsaWVkSUJPZmZzZXQg
PSBpbmRleEluZm8tPnN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UgaWYgKGluZGV4SW5mby0+c2VyaWFsICE9IG1BcHBsaWVkSUJTZXJpYWwgfHwgaW5k
ZXhJbmZvLT5zdGFydE9mZnNldCAhPSBtQXBwbGllZElCT2Zmc2V0KQorICAgICAgICB7CisgICAg
ICAgICAgICBJbmRleEJ1ZmZlcjExKiBpbmRleEJ1ZmZlciA9IEluZGV4QnVmZmVyMTE6Om1ha2VJ
bmRleEJ1ZmZlcjExKGluZGV4SW5mby0+aW5kZXhCdWZmZXIpOworCisgICAgICAgICAgICBtRGV2
aWNlQ29udGV4dC0+SUFTZXRJbmRleEJ1ZmZlcihpbmRleEJ1ZmZlci0+Z2V0QnVmZmVyKCksIGlu
ZGV4QnVmZmVyLT5nZXRJbmRleEZvcm1hdCgpLCBpbmRleEluZm8tPnN0YXJ0T2Zmc2V0KTsKKwor
ICAgICAgICAgICAgbUFwcGxpZWRJQlNlcmlhbCA9IGluZGV4SW5mby0+c2VyaWFsOworICAgICAg
ICAgICAgbUFwcGxpZWRTdG9yYWdlSUJTZXJpYWwgPSAwOworICAgICAgICAgICAgbUFwcGxpZWRJ
Qk9mZnNldCA9IGluZGV4SW5mby0+c3RhcnRPZmZzZXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gZXJyOworfQorCit2b2lkIFJlbmRlcmVyMTE6OmRyYXdBcnJheXMoR0xlbnVtIG1v
ZGUsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKQoreworICAgIGlmIChtb2RlID09
IEdMX0xJTkVfTE9PUCkKKyAgICB7CisgICAgICAgIGRyYXdMaW5lTG9vcChjb3VudCwgR0xfTk9O
RSwgTlVMTCwgMCwgTlVMTCk7CisgICAgfQorICAgIGVsc2UgaWYgKG1vZGUgPT0gR0xfVFJJQU5H
TEVfRkFOKQorICAgIHsKKyAgICAgICAgZHJhd1RyaWFuZ2xlRmFuKGNvdW50LCBHTF9OT05FLCBO
VUxMLCAwLCBOVUxMLCBpbnN0YW5jZXMpOworICAgIH0KKyAgICBlbHNlIGlmIChpbnN0YW5jZXMg
PiAwKQorICAgIHsKKyAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbnN0YW5jZWQoY291bnQs
IGluc3RhbmNlcywgMCwgMCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1EZXZp
Y2VDb250ZXh0LT5EcmF3KGNvdW50LCAwKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6
ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29u
c3QgR0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIsIGNvbnN0
IFRyYW5zbGF0ZWRJbmRleERhdGEgJmluZGV4SW5mbywgR0xzaXplaSBpbnN0YW5jZXMpCit7Cisg
ICAgaWYgKG1vZGUgPT0gR0xfTElORV9MT09QKQorICAgIHsKKyAgICAgICAgZHJhd0xpbmVMb29w
KGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbmRleEluZm8ubWluSW5kZXgsIGVsZW1lbnRBcnJheUJ1
ZmZlcik7CisgICAgfQorICAgIGVsc2UgaWYgKG1vZGUgPT0gR0xfVFJJQU5HTEVfRkFOKQorICAg
IHsKKyAgICAgICAgZHJhd1RyaWFuZ2xlRmFuKGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbmRleElu
Zm8ubWluSW5kZXgsIGVsZW1lbnRBcnJheUJ1ZmZlciwgaW5zdGFuY2VzKTsKKyAgICB9CisgICAg
ZWxzZSBpZiAoaW5zdGFuY2VzID4gMCkKKyAgICB7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5E
cmF3SW5kZXhlZEluc3RhbmNlZChjb3VudCwgaW5zdGFuY2VzLCAwLCAtc3RhdGljX2Nhc3Q8aW50
PihpbmRleEluZm8ubWluSW5kZXgpLCAwKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgbURldmljZUNvbnRleHQtPkRyYXdJbmRleGVkKGNvdW50LCAwLCAtc3RhdGljX2Nhc3Q8aW50
PihpbmRleEluZm8ubWluSW5kZXgpKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6ZHJh
d0xpbmVMb29wKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGlj
ZXMsIGludCBtaW5JbmRleCwgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyKQoreworICAg
IC8vIEdldCB0aGUgcmF3IGluZGljZXMgZm9yIGFuIGluZGV4ZWQgZHJhdworICAgIGlmICh0eXBl
ICE9IEdMX05PTkUgJiYgZWxlbWVudEFycmF5QnVmZmVyKQorICAgIHsKKyAgICAgICAgZ2w6OkJ1
ZmZlciAqaW5kZXhCdWZmZXIgPSBlbGVtZW50QXJyYXlCdWZmZXI7CisgICAgICAgIEJ1ZmZlclN0
b3JhZ2UgKnN0b3JhZ2UgPSBpbmRleEJ1ZmZlci0+Z2V0U3RvcmFnZSgpOworICAgICAgICBpbnRw
dHJfdCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PGludHB0cl90PihpbmRpY2VzKTsKKyAgICAg
ICAgaW5kaWNlcyA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihzdG9yYWdlLT5nZXREYXRh
KCkpICsgb2Zmc2V0OworICAgIH0KKworICAgIGlmICghbUxpbmVMb29wSUIpCisgICAgeworICAg
ICAgICBtTGluZUxvb3BJQiA9IG5ldyBTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZSh0aGlz
KTsKKyAgICAgICAgaWYgKCFtTGluZUxvb3BJQi0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKElOSVRJQUxf
SU5ERVhfQlVGRkVSX1NJWkUsIEdMX1VOU0lHTkVEX0lOVCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlbGV0ZSBtTGluZUxvb3BJQjsKKyAgICAgICAgICAgIG1MaW5lTG9vcElCID0gTlVMTDsK
KworICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGEgMzItYml0IGxvb3BpbmcgaW5k
ZXggYnVmZmVyIGZvciBHTF9MSU5FX0xPT1AuIik7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGludD4oY291bnQgKyAxKSA+IChzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkIGludD46Om1heCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGludCkpKQorICAgIHsKKyAgICAg
ICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGEgMzItYml0IGxvb3BpbmcgaW5kZXggYnVmZmVyIGZv
ciBHTF9MSU5FX0xPT1AsIHRvbyBtYW55IGluZGljZXMgcmVxdWlyZWQuIik7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgY29uc3QgdW5z
aWduZWQgaW50IHNwYWNlTmVlZGVkID0gKGNvdW50ICsgMSkgKiBzaXplb2YodW5zaWduZWQgaW50
KTsKKyAgICBpZiAoIW1MaW5lTG9vcElCLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQs
IEdMX1VOU0lHTkVEX0lOVCkpCisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5vdCByZXNlcnZl
IGVub3VnaCBzcGFjZSBpbiBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLiIp
OworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKwor
ICAgIHZvaWQqIG1hcHBlZE1lbW9yeSA9IE5VTEw7CisgICAgaW50IG9mZnNldCA9IG1MaW5lTG9v
cElCLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnkpOworICAgIGlmIChvZmZz
ZXQgPT0gLTEgfHwgbWFwcGVkTWVtb3J5ID09IE5VTEwpCisgICAgeworICAgICAgICBFUlIoIkNv
dWxkIG5vdCBtYXAgaW5kZXggYnVmZmVyIGZvciBHTF9MSU5FX0xPT1AuIik7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgdW5zaWduZWQg
aW50ICpkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihtYXBwZWRNZW1vcnkp
OworICAgIHVuc2lnbmVkIGludCBpbmRleEJ1ZmZlck9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4ob2Zmc2V0KTsKKworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNl
IEdMX05PTkU6ICAgLy8gTm9uLWluZGV4ZWQgZHJhdworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFbaV0gPSBpOworICAg
ICAgICB9CisgICAgICAgIGRhdGFbY291bnRdID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7
IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0PGNvbnN0
IEdMdWJ5dGUqPihpbmRpY2VzKVtpXTsKKyAgICAgICAgfQorICAgICAgICBkYXRhW2NvdW50XSA9
IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihpbmRpY2VzKVswXTsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNf
Y2FzdDxjb25zdCBHTHVzaG9ydCo+KGluZGljZXMpW2ldOworICAgICAgICB9CisgICAgICAgIGRh
dGFbY291bnRdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1c2hvcnQqPihpbmRpY2VzKVswXTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBkYXRhW2ld
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNlcylbaV07CisgICAgICAgIH0KKyAg
ICAgICAgZGF0YVtjb3VudF0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVpbnQqPihpbmRpY2VzKVsw
XTsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgIH0K
KworICAgIGlmICghbUxpbmVMb29wSUItPnVubWFwQnVmZmVyKCkpCisgICAgeworICAgICAgICBF
UlIoIkNvdWxkIG5vdCB1bm1hcCBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9PUC4iKTsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9CisKKyAgICBp
ZiAobUFwcGxpZWRJQlNlcmlhbCAhPSBtTGluZUxvb3BJQi0+Z2V0U2VyaWFsKCkgfHwgbUFwcGxp
ZWRJQk9mZnNldCAhPSBpbmRleEJ1ZmZlck9mZnNldCkKKyAgICB7CisgICAgICAgIEluZGV4QnVm
ZmVyMTEgKmluZGV4QnVmZmVyID0gSW5kZXhCdWZmZXIxMTo6bWFrZUluZGV4QnVmZmVyMTEobUxp
bmVMb29wSUItPmdldEluZGV4QnVmZmVyKCkpOworCisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5J
QVNldEluZGV4QnVmZmVyKGluZGV4QnVmZmVyLT5nZXRCdWZmZXIoKSwgaW5kZXhCdWZmZXItPmdl
dEluZGV4Rm9ybWF0KCksIGluZGV4QnVmZmVyT2Zmc2V0KTsKKyAgICAgICAgbUFwcGxpZWRJQlNl
cmlhbCA9IG1MaW5lTG9vcElCLT5nZXRTZXJpYWwoKTsKKyAgICAgICAgbUFwcGxpZWRTdG9yYWdl
SUJTZXJpYWwgPSAwOworICAgICAgICBtQXBwbGllZElCT2Zmc2V0ID0gaW5kZXhCdWZmZXJPZmZz
ZXQ7CisgICAgfQorCisgICAgbURldmljZUNvbnRleHQtPkRyYXdJbmRleGVkKGNvdW50ICsgMSwg
MCwgLW1pbkluZGV4KTsKK30KKwordm9pZCBSZW5kZXJlcjExOjpkcmF3VHJpYW5nbGVGYW4oR0xz
aXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgaW50IG1pbklu
ZGV4LCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIsIGludCBpbnN0YW5jZXMpCit7Cisg
ICAgLy8gR2V0IHRoZSByYXcgaW5kaWNlcyBmb3IgYW4gaW5kZXhlZCBkcmF3CisgICAgaWYgKHR5
cGUgIT0gR0xfTk9ORSAmJiBlbGVtZW50QXJyYXlCdWZmZXIpCisgICAgeworICAgICAgICBnbDo6
QnVmZmVyICppbmRleEJ1ZmZlciA9IGVsZW1lbnRBcnJheUJ1ZmZlcjsKKyAgICAgICAgQnVmZmVy
U3RvcmFnZSAqc3RvcmFnZSA9IGluZGV4QnVmZmVyLT5nZXRTdG9yYWdlKCk7CisgICAgICAgIGlu
dHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluZGljZXMpOworICAg
ICAgICBpbmRpY2VzID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KHN0b3JhZ2UtPmdldERh
dGEoKSkgKyBvZmZzZXQ7CisgICAgfQorCisgICAgaWYgKCFtVHJpYW5nbGVGYW5JQikKKyAgICB7
CisgICAgICAgIG1UcmlhbmdsZUZhbklCID0gbmV3IFN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJm
YWNlKHRoaXMpOworICAgICAgICBpZiAoIW1UcmlhbmdsZUZhbklCLT5yZXNlcnZlQnVmZmVyU3Bh
Y2UoSU5JVElBTF9JTkRFWF9CVUZGRVJfU0laRSwgR0xfVU5TSUdORURfSU5UKSkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVsZXRlIG1UcmlhbmdsZUZhbklCOworICAgICAgICAgICAgbVRyaWFu
Z2xlRmFuSUIgPSBOVUxMOworCisgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgYSBz
Y3JhdGNoIGluZGV4IGJ1ZmZlciBmb3IgR0xfVFJJQU5HTEVfRkFOLiIpOworICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBudW1UcmlzID0gY291bnQgLSAyOworCisgICAgaWYgKG51
bVRyaXMgKiAzID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgLyBz
aXplb2YodW5zaWduZWQgaW50KSkpCisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVh
dGUgYSBzY3JhdGNoIGluZGV4IGJ1ZmZlciBmb3IgR0xfVFJJQU5HTEVfRkFOLCB0b28gbWFueSBp
bmRpY2VzIHJlcXVpcmVkLiIpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOworICAgIH0KKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBzcGFjZU5lZWRlZCA9IChu
dW1UcmlzICogMykgKiBzaXplb2YodW5zaWduZWQgaW50KTsKKyAgICBpZiAoIW1UcmlhbmdsZUZh
bklCLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lHTkVEX0lOVCkpCisg
ICAgeworICAgICAgICBFUlIoIkNvdWxkIG5vdCByZXNlcnZlIGVub3VnaCBzcGFjZSBpbiBzY3Jh
dGNoIGluZGV4IGJ1ZmZlciBmb3IgR0xfVFJJQU5HTEVfRkFOLiIpOworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIHZvaWQqIG1hcHBlZE1l
bW9yeSA9IE5VTEw7CisgICAgaW50IG9mZnNldCA9IG1UcmlhbmdsZUZhbklCLT5tYXBCdWZmZXIo
c3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnkpOworICAgIGlmIChvZmZzZXQgPT0gLTEgfHwgbWFw
cGVkTWVtb3J5ID09IE5VTEwpCisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5vdCBtYXAgc2Ny
YXRjaCBpbmRleCBidWZmZXIgZm9yIEdMX1RSSUFOR0xFX0ZBTi4iKTsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbnQg
KmRhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGludCo+KG1hcHBlZE1lbW9yeSk7Cisg
ICAgdW5zaWduZWQgaW50IGluZGV4QnVmZmVyT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihvZmZzZXQpOworCisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xf
Tk9ORTogICAvLyBOb24taW5kZXhlZCBkcmF3CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgbnVtVHJpczsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBkYXRhW2kqMyAr
IDBdID0gMDsKKyAgICAgICAgICAgIGRhdGFbaSozICsgMV0gPSBpICsgMTsKKyAgICAgICAgICAg
IGRhdGFbaSozICsgMl0gPSBpICsgMjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBudW1UcmlzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFbaSozICsgMF0g
PSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5kaWNlcylbMF07CisgICAgICAgICAgICBk
YXRhW2kqMyArIDFdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KGluZGljZXMpW2kgKyAx
XTsKKyAgICAgICAgICAgIGRhdGFbaSozICsgMl0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRl
Kj4oaW5kaWNlcylbaSArIDJdOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBudW1UcmlzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFbaSozICsgMF0gPSBz
dGF0aWNfY2FzdDxjb25zdCBHTHVzaG9ydCo+KGluZGljZXMpWzBdOworICAgICAgICAgICAgZGF0
YVtpKjMgKyAxXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNlcylbaSArIDFd
OworICAgICAgICAgICAgZGF0YVtpKjMgKyAyXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0
Kj4oaW5kaWNlcylbaSArIDJdOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
bnVtVHJpczsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBkYXRhW2kqMyArIDBdID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNlcylbMF07CisgICAgICAgICAgICBkYXRhW2kq
MyArIDFdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNlcylbaSArIDFdOworICAg
ICAgICAgICAgZGF0YVtpKjMgKyAyXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWludCo+KGluZGlj
ZXMpW2kgKyAyXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVO
UkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgaWYgKCFtVHJpYW5nbGVGYW5JQi0+dW5tYXBCdWZm
ZXIoKSkKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IHVubWFwIHNjcmF0Y2ggaW5kZXgg
YnVmZmVyIGZvciBHTF9UUklBTkdMRV9GQU4uIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgaWYgKG1BcHBsaWVkSUJTZXJpYWwgIT0g
bVRyaWFuZ2xlRmFuSUItPmdldFNlcmlhbCgpIHx8IG1BcHBsaWVkSUJPZmZzZXQgIT0gaW5kZXhC
dWZmZXJPZmZzZXQpCisgICAgeworICAgICAgICBJbmRleEJ1ZmZlcjExICppbmRleEJ1ZmZlciA9
IEluZGV4QnVmZmVyMTE6Om1ha2VJbmRleEJ1ZmZlcjExKG1UcmlhbmdsZUZhbklCLT5nZXRJbmRl
eEJ1ZmZlcigpKTsKKworICAgICAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbmRleEJ1ZmZlcihp
bmRleEJ1ZmZlci0+Z2V0QnVmZmVyKCksIGluZGV4QnVmZmVyLT5nZXRJbmRleEZvcm1hdCgpLCBp
bmRleEJ1ZmZlck9mZnNldCk7CisgICAgICAgIG1BcHBsaWVkSUJTZXJpYWwgPSBtVHJpYW5nbGVG
YW5JQi0+Z2V0U2VyaWFsKCk7CisgICAgICAgIG1BcHBsaWVkU3RvcmFnZUlCU2VyaWFsID0gMDsK
KyAgICAgICAgbUFwcGxpZWRJQk9mZnNldCA9IGluZGV4QnVmZmVyT2Zmc2V0OworICAgIH0KKwor
ICAgIGlmIChpbnN0YW5jZXMgPiAwKQorICAgIHsKKyAgICAgICAgbURldmljZUNvbnRleHQtPkRy
YXdJbmRleGVkSW5zdGFuY2VkKG51bVRyaXMgKiAzLCBpbnN0YW5jZXMsIDAsIC1taW5JbmRleCwg
MCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3
SW5kZXhlZChudW1UcmlzICogMywgMCwgLW1pbkluZGV4KTsKKyAgICB9Cit9CisKK3ZvaWQgUmVu
ZGVyZXIxMTo6YXBwbHlTaGFkZXJzKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5KQor
eworICAgIHVuc2lnbmVkIGludCBwcm9ncmFtQmluYXJ5U2VyaWFsID0gcHJvZ3JhbUJpbmFyeS0+
Z2V0U2VyaWFsKCk7CisgICAgY29uc3QgYm9vbCB1cGRhdGVQcm9ncmFtU3RhdGUgPSAocHJvZ3Jh
bUJpbmFyeVNlcmlhbCAhPSBtQXBwbGllZFByb2dyYW1CaW5hcnlTZXJpYWwpOworCisgICAgaWYg
KHVwZGF0ZVByb2dyYW1TdGF0ZSkKKyAgICB7CisgICAgICAgIFNoYWRlckV4ZWN1dGFibGUgKnZl
cnRleEV4ZSA9IHByb2dyYW1CaW5hcnktPmdldFZlcnRleEV4ZWN1dGFibGUoKTsKKyAgICAgICAg
U2hhZGVyRXhlY3V0YWJsZSAqcGl4ZWxFeGUgPSBwcm9ncmFtQmluYXJ5LT5nZXRQaXhlbEV4ZWN1
dGFibGUoKTsKKworICAgICAgICBJRDNEMTFWZXJ0ZXhTaGFkZXIgKnZlcnRleFNoYWRlciA9IE5V
TEw7CisgICAgICAgIGlmICh2ZXJ0ZXhFeGUpIHZlcnRleFNoYWRlciA9IFNoYWRlckV4ZWN1dGFi
bGUxMTo6bWFrZVNoYWRlckV4ZWN1dGFibGUxMSh2ZXJ0ZXhFeGUpLT5nZXRWZXJ0ZXhTaGFkZXIo
KTsKKworICAgICAgICBJRDNEMTFQaXhlbFNoYWRlciAqcGl4ZWxTaGFkZXIgPSBOVUxMOworICAg
ICAgICBpZiAocGl4ZWxFeGUpIHBpeGVsU2hhZGVyID0gU2hhZGVyRXhlY3V0YWJsZTExOjptYWtl
U2hhZGVyRXhlY3V0YWJsZTExKHBpeGVsRXhlKS0+Z2V0UGl4ZWxTaGFkZXIoKTsKKworICAgICAg
ICBtRGV2aWNlQ29udGV4dC0+UFNTZXRTaGFkZXIocGl4ZWxTaGFkZXIsIE5VTEwsIDApOworICAg
ICAgICBtRGV2aWNlQ29udGV4dC0+VlNTZXRTaGFkZXIodmVydGV4U2hhZGVyLCBOVUxMLCAwKTsK
KworICAgICAgICBwcm9ncmFtQmluYXJ5LT5kaXJ0eUFsbFVuaWZvcm1zKCk7CisKKyAgICAgICAg
bUFwcGxpZWRQcm9ncmFtQmluYXJ5U2VyaWFsID0gcHJvZ3JhbUJpbmFyeVNlcmlhbDsKKyAgICB9
CisKKyAgICAvLyBPbmx5IHVzZSB0aGUgZ2VvbWV0cnkgc2hhZGVyIGN1cnJlbnRseSBmb3IgcG9p
bnQgc3ByaXRlIGRyYXdpbmcKKyAgICBjb25zdCBib29sIHVzZXNHZW9tZXRyeVNoYWRlciA9IChw
cm9ncmFtQmluYXJ5LT51c2VzR2VvbWV0cnlTaGFkZXIoKSAmJiBtQ3VyUmFzdGVyU3RhdGUucG9p
bnREcmF3TW9kZSk7CisKKyAgICBpZiAodXBkYXRlUHJvZ3JhbVN0YXRlIHx8IHVzZXNHZW9tZXRy
eVNoYWRlciAhPSBtSXNHZW9tZXRyeVNoYWRlckFjdGl2ZSkKKyAgICB7CisgICAgICAgIGlmICh1
c2VzR2VvbWV0cnlTaGFkZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNoYWRlckV4ZWN1dGFi
bGUgKmdlb21ldHJ5RXhlID0gcHJvZ3JhbUJpbmFyeS0+Z2V0R2VvbWV0cnlFeGVjdXRhYmxlKCk7
CisgICAgICAgICAgICBJRDNEMTFHZW9tZXRyeVNoYWRlciAqZ2VvbWV0cnlTaGFkZXIgPSBTaGFk
ZXJFeGVjdXRhYmxlMTE6Om1ha2VTaGFkZXJFeGVjdXRhYmxlMTEoZ2VvbWV0cnlFeGUpLT5nZXRH
ZW9tZXRyeVNoYWRlcigpOworICAgICAgICAgICAgbURldmljZUNvbnRleHQtPkdTU2V0U2hhZGVy
KGdlb21ldHJ5U2hhZGVyLCBOVUxMLCAwKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5HU1NldFNoYWRlcihOVUxMLCBOVUxM
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIG1Jc0dlb21ldHJ5U2hhZGVyQWN0aXZlID0gdXNl
c0dlb21ldHJ5U2hhZGVyOworICAgIH0KK30KKwordm9pZCBSZW5kZXJlcjExOjphcHBseVVuaWZv
cm1zKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5LCBnbDo6VW5pZm9ybUFycmF5ICp1
bmlmb3JtQXJyYXkpCit7CisgICAgU2hhZGVyRXhlY3V0YWJsZTExICp2ZXJ0ZXhFeGVjdXRhYmxl
ID0gU2hhZGVyRXhlY3V0YWJsZTExOjptYWtlU2hhZGVyRXhlY3V0YWJsZTExKHByb2dyYW1CaW5h
cnktPmdldFZlcnRleEV4ZWN1dGFibGUoKSk7CisgICAgU2hhZGVyRXhlY3V0YWJsZTExICpwaXhl
bEV4ZWN1dGFibGUgPSBTaGFkZXJFeGVjdXRhYmxlMTE6Om1ha2VTaGFkZXJFeGVjdXRhYmxlMTEo
cHJvZ3JhbUJpbmFyeS0+Z2V0UGl4ZWxFeGVjdXRhYmxlKCkpOworCisgICAgdW5zaWduZWQgaW50
IHRvdGFsUmVnaXN0ZXJDb3VudFZTID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgdG90YWxSZWdpc3Rl
ckNvdW50UFMgPSAwOworCisgICAgYm9vbCB2ZXJ0ZXhVbmlmb3Jtc0RpcnR5ID0gZmFsc2U7Cisg
ICAgYm9vbCBwaXhlbFVuaWZvcm1zRGlydHkgPSBmYWxzZTsKKworICAgIGZvciAoZ2w6OlVuaWZv
cm1BcnJheTo6Y29uc3RfaXRlcmF0b3IgdW5pZm9ybV9pdGVyYXRvciA9IHVuaWZvcm1BcnJheS0+
YmVnaW4oKTsgdW5pZm9ybV9pdGVyYXRvciAhPSB1bmlmb3JtQXJyYXktPmVuZCgpOyB1bmlmb3Jt
X2l0ZXJhdG9yKyspCisgICAgeworICAgICAgICBjb25zdCBnbDo6VW5pZm9ybSAqdW5pZm9ybSA9
ICp1bmlmb3JtX2l0ZXJhdG9yOworCisgICAgICAgIGlmICh1bmlmb3JtLT52c1JlZ2lzdGVySW5k
ZXggPj0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgdG90YWxSZWdpc3RlckNvdW50VlMgKz0g
dW5pZm9ybS0+cmVnaXN0ZXJDb3VudDsKKyAgICAgICAgICAgIHZlcnRleFVuaWZvcm1zRGlydHkg
PSB2ZXJ0ZXhVbmlmb3Jtc0RpcnR5IHx8IHVuaWZvcm0tPmRpcnR5OworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKHVuaWZvcm0tPnBzUmVnaXN0ZXJJbmRleCA+PSAwKQorICAgICAgICB7CisgICAg
ICAgICAgICB0b3RhbFJlZ2lzdGVyQ291bnRQUyArPSB1bmlmb3JtLT5yZWdpc3RlckNvdW50Owor
ICAgICAgICAgICAgcGl4ZWxVbmlmb3Jtc0RpcnR5ID0gcGl4ZWxVbmlmb3Jtc0RpcnR5IHx8IHVu
aWZvcm0tPmRpcnR5OworICAgICAgICB9CisgICAgfQorCisgICAgSUQzRDExQnVmZmVyICp2ZXJ0
ZXhDb25zdGFudEJ1ZmZlciA9IHZlcnRleEV4ZWN1dGFibGUtPmdldENvbnN0YW50QnVmZmVyKG1E
ZXZpY2UsIHRvdGFsUmVnaXN0ZXJDb3VudFZTKTsKKyAgICBJRDNEMTFCdWZmZXIgKnBpeGVsQ29u
c3RhbnRCdWZmZXIgPSBwaXhlbEV4ZWN1dGFibGUtPmdldENvbnN0YW50QnVmZmVyKG1EZXZpY2Us
IHRvdGFsUmVnaXN0ZXJDb3VudFBTKTsKKworICAgIGZsb2F0ICgqbWFwVlMpWzRdID0gTlVMTDsK
KyAgICBmbG9hdCAoKm1hcFBTKVs0XSA9IE5VTEw7CisKKyAgICBpZiAodG90YWxSZWdpc3RlckNv
dW50VlMgPiAwICYmIHZlcnRleFVuaWZvcm1zRGlydHkpCisgICAgeworICAgICAgICBEM0QxMV9N
QVBQRURfU1VCUkVTT1VSQ0UgbWFwID0gezB9OworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1E
ZXZpY2VDb250ZXh0LT5NYXAodmVydGV4Q29uc3RhbnRCdWZmZXIsIDAsIEQzRDExX01BUF9XUklU
RV9ESVNDQVJELCAwLCAmbWFwKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsK
KyAgICAgICAgbWFwVlMgPSAoZmxvYXQoKilbNF0pbWFwLnBEYXRhOworICAgIH0KKworICAgIGlm
ICh0b3RhbFJlZ2lzdGVyQ291bnRQUyA+IDAgJiYgcGl4ZWxVbmlmb3Jtc0RpcnR5KQorICAgIHsK
KyAgICAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcCA9IHswfTsKKyAgICAgICAgSFJF
U1VMVCByZXN1bHQgPSBtRGV2aWNlQ29udGV4dC0+TWFwKHBpeGVsQ29uc3RhbnRCdWZmZXIsIDAs
IEQzRDExX01BUF9XUklURV9ESVNDQVJELCAwLCAmbWFwKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKyAgICAgICAgbWFwUFMgPSAoZmxvYXQoKilbNF0pbWFwLnBEYXRhOwor
ICAgIH0KKworICAgIGZvciAoZ2w6OlVuaWZvcm1BcnJheTo6aXRlcmF0b3IgdW5pZm9ybV9pdGVy
YXRvciA9IHVuaWZvcm1BcnJheS0+YmVnaW4oKTsgdW5pZm9ybV9pdGVyYXRvciAhPSB1bmlmb3Jt
QXJyYXktPmVuZCgpOyB1bmlmb3JtX2l0ZXJhdG9yKyspCisgICAgeworICAgICAgICBnbDo6VW5p
Zm9ybSAqdW5pZm9ybSA9ICp1bmlmb3JtX2l0ZXJhdG9yOworCisgICAgICAgIGlmICh1bmlmb3Jt
LT50eXBlICE9ICBHTF9TQU1QTEVSXzJEICYmIHVuaWZvcm0tPnR5cGUgIT0gR0xfU0FNUExFUl9D
VUJFKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodW5pZm9ybS0+dnNSZWdpc3RlckluZGV4
ID49IDAgJiYgbWFwVlMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWVtY3B5KG1h
cFZTICsgdW5pZm9ybS0+dnNSZWdpc3RlckluZGV4LCB1bmlmb3JtLT5kYXRhLCB1bmlmb3JtLT5y
ZWdpc3RlckNvdW50ICogc2l6ZW9mKGZsb2F0WzRdKSk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICh1bmlmb3JtLT5wc1JlZ2lzdGVySW5kZXggPj0gMCAmJiBtYXBQUykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBtZW1jcHkobWFwUFMgKyB1bmlmb3JtLT5wc1JlZ2lz
dGVySW5kZXgsIHVuaWZvcm0tPmRhdGEsIHVuaWZvcm0tPnJlZ2lzdGVyQ291bnQgKiBzaXplb2Yo
ZmxvYXRbNF0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHVuaWZvcm0t
PmRpcnR5ID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1hcFZTKQorICAgIHsKKyAgICAgICAg
bURldmljZUNvbnRleHQtPlVubWFwKHZlcnRleENvbnN0YW50QnVmZmVyLCAwKTsKKyAgICB9CisK
KyAgICBpZiAobWFwUFMpCisgICAgeworICAgICAgICBtRGV2aWNlQ29udGV4dC0+VW5tYXAocGl4
ZWxDb25zdGFudEJ1ZmZlciwgMCk7CisgICAgfQorICAgIAorICAgIG1EZXZpY2VDb250ZXh0LT5W
U1NldENvbnN0YW50QnVmZmVycygwLCAxLCAmdmVydGV4Q29uc3RhbnRCdWZmZXIpOworICAgIG1E
ZXZpY2VDb250ZXh0LT5QU1NldENvbnN0YW50QnVmZmVycygwLCAxLCAmcGl4ZWxDb25zdGFudEJ1
ZmZlcik7CisKKyAgICAvLyBEcml2ZXIgdW5pZm9ybXMKKyAgICBpZiAoIW1Ecml2ZXJDb25zdGFu
dEJ1ZmZlclZTKQorICAgIHsKKyAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgY29uc3RhbnRCdWZm
ZXJEZXNjcmlwdGlvbiA9IHswfTsKKyAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5C
eXRlV2lkdGggPSBzaXplb2YoZHhfVmVydGV4Q29uc3RhbnRzKTsKKyAgICAgICAgY29uc3RhbnRC
dWZmZXJEZXNjcmlwdGlvbi5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAgICAgIGNv
bnN0YW50QnVmZmVyRGVzY3JpcHRpb24uQmluZEZsYWdzID0gRDNEMTFfQklORF9DT05TVEFOVF9C
VUZGRVI7CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uQ1BVQWNjZXNzRmxhZ3Mg
PSAwOworICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLk1pc2NGbGFncyA9IDA7Cisg
ICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7
CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVCdWZmZXIoJmNvbnN0
YW50QnVmZmVyRGVzY3JpcHRpb24sIE5VTEwsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJWUyk7Cisg
ICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgbURldmljZUNvbnRl
eHQtPlZTU2V0Q29uc3RhbnRCdWZmZXJzKDEsIDEsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJWUyk7
CisgICAgfQorCisgICAgaWYgKCFtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUykKKyAgICB7CisgICAg
ICAgIEQzRDExX0JVRkZFUl9ERVNDIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24gPSB7MH07Cisg
ICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uQnl0ZVdpZHRoID0gc2l6ZW9mKGR4X1Bp
eGVsQ29uc3RhbnRzKTsKKyAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5Vc2FnZSA9
IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24u
QmluZEZsYWdzID0gRDNEMTFfQklORF9DT05TVEFOVF9CVUZGRVI7CisgICAgICAgIGNvbnN0YW50
QnVmZmVyRGVzY3JpcHRpb24uQ1BVQWNjZXNzRmxhZ3MgPSAwOworICAgICAgICBjb25zdGFudEJ1
ZmZlckRlc2NyaXB0aW9uLk1pc2NGbGFncyA9IDA7CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVz
Y3JpcHRpb24uU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7CisKKyAgICAgICAgSFJFU1VMVCByZXN1
bHQgPSBtRGV2aWNlLT5DcmVhdGVCdWZmZXIoJmNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24sIE5V
TEwsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUyk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQo
cmVzdWx0KSk7CisKKyAgICAgICAgbURldmljZUNvbnRleHQtPlBTU2V0Q29uc3RhbnRCdWZmZXJz
KDEsIDEsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUyk7CisgICAgfQorCisgICAgaWYgKG1lbWNt
cCgmbVZlcnRleENvbnN0YW50cywgJm1BcHBsaWVkVmVydGV4Q29uc3RhbnRzLCBzaXplb2YoZHhf
VmVydGV4Q29uc3RhbnRzKSkgIT0gMCkKKyAgICB7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5V
cGRhdGVTdWJyZXNvdXJjZShtRHJpdmVyQ29uc3RhbnRCdWZmZXJWUywgMCwgTlVMTCwgJm1WZXJ0
ZXhDb25zdGFudHMsIDE2LCAwKTsKKyAgICAgICAgbWVtY3B5KCZtQXBwbGllZFZlcnRleENvbnN0
YW50cywgJm1WZXJ0ZXhDb25zdGFudHMsIHNpemVvZihkeF9WZXJ0ZXhDb25zdGFudHMpKTsKKyAg
ICB9CisKKyAgICBpZiAobWVtY21wKCZtUGl4ZWxDb25zdGFudHMsICZtQXBwbGllZFBpeGVsQ29u
c3RhbnRzLCBzaXplb2YoZHhfUGl4ZWxDb25zdGFudHMpKSAhPSAwKQorICAgIHsKKyAgICAgICAg
bURldmljZUNvbnRleHQtPlVwZGF0ZVN1YnJlc291cmNlKG1Ecml2ZXJDb25zdGFudEJ1ZmZlclBT
LCAwLCBOVUxMLCAmbVBpeGVsQ29uc3RhbnRzLCAxNiwgMCk7CisgICAgICAgIG1lbWNweSgmbUFw
cGxpZWRQaXhlbENvbnN0YW50cywgJm1QaXhlbENvbnN0YW50cywgc2l6ZW9mKGR4X1BpeGVsQ29u
c3RhbnRzKSk7CisgICAgfQorCisgICAgLy8gbmVlZGVkIGZvciB0aGUgcG9pbnQgc3ByaXRlIGdl
b21ldHJ5IHNoYWRlcgorICAgIG1EZXZpY2VDb250ZXh0LT5HU1NldENvbnN0YW50QnVmZmVycygw
LCAxLCAmbURyaXZlckNvbnN0YW50QnVmZmVyUFMpOworfQorCit2b2lkIFJlbmRlcmVyMTE6OmNs
ZWFyKGNvbnN0IGdsOjpDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLCBnbDo6RnJhbWVidWZm
ZXIgKmZyYW1lQnVmZmVyKQoreworICAgICBib29sIGFscGhhVW5tYXNrZWQgPSAoZ2w6OkdldEFs
cGhhU2l6ZShtUmVuZGVyVGFyZ2V0RGVzYy5mb3JtYXQpID09IDApIHx8IGNsZWFyUGFyYW1zLmNv
bG9yTWFza0FscGhhOworICAgICBib29sIG5lZWRNYXNrZWRDb2xvckNsZWFyID0gKGNsZWFyUGFy
YW1zLm1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKSAmJgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIShjbGVhclBhcmFtcy5jb2xvck1hc2tSZWQgJiYgY2xlYXJQYXJhbXMuY29s
b3JNYXNrR3JlZW4gJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJQ
YXJhbXMuY29sb3JNYXNrQmx1ZSAmJiBhbHBoYVVubWFza2VkKTsKKworICAgICB1bnNpZ25lZCBp
bnQgc3RlbmNpbFVubWFza2VkID0gMHgwOworICAgICBpZiAoZnJhbWVCdWZmZXItPmhhc1N0ZW5j
aWwoKSkKKyAgICAgeworICAgICAgICAgdW5zaWduZWQgaW50IHN0ZW5jaWxTaXplID0gZ2w6Okdl
dFN0ZW5jaWxTaXplKGZyYW1lQnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyKCktPmdldEFjdHVhbEZv
cm1hdCgpKTsKKyAgICAgICAgIHN0ZW5jaWxVbm1hc2tlZCA9ICgweDEgPDwgc3RlbmNpbFNpemUp
IC0gMTsKKyAgICAgfQorICAgICBib29sIG5lZWRNYXNrZWRTdGVuY2lsQ2xlYXIgPSAoY2xlYXJQ
YXJhbXMubWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkgJiYKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1hc2sgJiBzdGVuY2ls
VW5tYXNrZWQpICE9IHN0ZW5jaWxVbm1hc2tlZDsKKworICAgICBib29sIG5lZWRTY2lzc29yZWRD
bGVhciA9IG1TY2lzc29yRW5hYmxlZCAmJiAobUN1clNjaXNzb3IueCA+IDAgfHwgbUN1clNjaXNz
b3IueSA+IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1DdXJTY2lzc29yLnggKyBtQ3VyU2Npc3Nvci53aWR0aCA8IG1SZW5kZXJUYXJnZXRE
ZXNjLndpZHRoIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtQ3VyU2Npc3Nvci55ICsgbUN1clNjaXNzb3IuaGVpZ2h0IDwgbVJlbmRlclRhcmdl
dERlc2MuaGVpZ2h0KTsKKworICAgICBpZiAobmVlZE1hc2tlZENvbG9yQ2xlYXIgfHwgbmVlZE1h
c2tlZFN0ZW5jaWxDbGVhciB8fCBuZWVkU2Npc3NvcmVkQ2xlYXIpCisgICAgIHsKKyAgICAgICAg
IG1hc2tlZENsZWFyKGNsZWFyUGFyYW1zLCBmcmFtZUJ1ZmZlci0+dXNpbmdFeHRlbmRlZERyYXdC
dWZmZXJzKCkpOworICAgICB9CisgICAgIGVsc2UKKyAgICAgeworICAgICAgICAgaWYgKGNsZWFy
UGFyYW1zLm1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKQorICAgICAgICAgeworICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVu
dCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTOyBjb2xvckF0dGFjaG1lbnQr
KykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGlmIChmcmFtZUJ1ZmZlci0+aXNF
bmFibGVkQ29sb3JBdHRhY2htZW50KGNvbG9yQXR0YWNobWVudCkpCisgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlck9i
amVjdCA9IGZyYW1lQnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcihjb2xvckF0dGFjaG1lbnQpOworICAg
ICAgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmJ1ZmZlck9iamVjdCkKKyAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldDExICpyZW5kZXJU
YXJnZXQgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKHJlbmRlcmJ1ZmZlck9i
amVjdC0+Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFy
ZW5kZXJUYXJnZXQpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRVJSKCJyZW5kZXIgdGFyZ2V0IHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwu
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRW
aWV3ICpmcmFtZWJ1ZmZlclJUViA9IHJlbmRlclRhcmdldC0+Z2V0UmVuZGVyVGFyZ2V0Vmlldygp
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmcmFtZWJ1ZmZlclJUVikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUlIoInJlbmRl
ciB0YXJnZXQgdmlldyBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgY2xlYXJWYWx1ZXNbNF0gPSB7IGNsZWFy
UGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZS5yZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJQYXJhbXMuY29sb3JDbGVhclZhbHVlLmdy
ZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZS5ibHVlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yQ2xl
YXJWYWx1ZS5hbHBoYSB9OworICAgICAgICAgICAgICAgICAgICAgICAgbURldmljZUNvbnRleHQt
PkNsZWFyUmVuZGVyVGFyZ2V0VmlldyhmcmFtZWJ1ZmZlclJUViwgY2xlYXJWYWx1ZXMpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlclJUVi0+UmVsZWFzZSgpOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9ERVBUSF9CVUZGRVJfQklU
IHx8IGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlck9iamVjdCA9IGZyYW1l
QnVmZmVyLT5nZXREZXB0aE9yU3RlbmNpbGJ1ZmZlcigpOworICAgICAgICAgICAgaWYgKHJlbmRl
cmJ1ZmZlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJUYXJn
ZXQxMSAqcmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShy
ZW5kZXJidWZmZXJPYmplY3QtPmdldERlcHRoU3RlbmNpbCgpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIXJlbmRlclRhcmdldCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IEVSUigicmVuZGVyIHRhcmdldCBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZnJhbWVidWZmZXJEU1YgPSByZW5kZXJUYXJnZXQt
PmdldERlcHRoU3RlbmNpbFZpZXcoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWZyYW1lYnVmZmVy
RFNWKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgRVJSKCJkZXB0aCBz
dGVuY2lsIHZpZXcgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFVJTlQg
Y2xlYXJGbGFncyA9IDA7CisgICAgICAgICAgICAgICAgaWYgKGNsZWFyUGFyYW1zLm1hc2sgJiBH
TF9ERVBUSF9CVUZGRVJfQklUKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2xlYXJGbGFncyB8PSBEM0QxMV9DTEVBUl9ERVBUSDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaWYgKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9C
SVQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjbGVhckZsYWdzIHw9
IEQzRDExX0NMRUFSX1NURU5DSUw7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgZmxvYXQgZGVwdGhDbGVhciA9IGdsOjpjbGFtcDAxKGNsZWFyUGFyYW1zLmRlcHRoQ2xlYXJW
YWx1ZSk7CisgICAgICAgICAgICAgICAgVUlOVDggc3RlbmNpbENsZWFyID0gY2xlYXJQYXJhbXMu
c3RlbmNpbENsZWFyVmFsdWUgJiAweDAwMDAwMEZGOworCisgICAgICAgICAgICAgICAgbURldmlj
ZUNvbnRleHQtPkNsZWFyRGVwdGhTdGVuY2lsVmlldyhmcmFtZWJ1ZmZlckRTViwgY2xlYXJGbGFn
cywgZGVwdGhDbGVhciwgc3RlbmNpbENsZWFyKTsKKworICAgICAgICAgICAgICAgIGZyYW1lYnVm
ZmVyRFNWLT5SZWxlYXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZvaWQgUmVuZGVyZXIxMTo6bWFza2VkQ2xlYXIoY29uc3QgZ2w6OkNsZWFyUGFyYW1ldGVycyAm
Y2xlYXJQYXJhbXMsIGJvb2wgdXNpbmdFeHRlbmRlZERyYXdCdWZmZXJzKQoreworICAgIEhSRVNV
TFQgcmVzdWx0OworCisgICAgaWYgKCFtQ2xlYXJSZXNvdXJjZXNJbml0aWFsaXplZCkKKyAgICB7
CisgICAgICAgIEFTU0VSVCghbUNsZWFyVkIgJiYgIW1DbGVhclZTICYmICFtQ2xlYXJTaW5nbGVQ
UyAmJiAhbUNsZWFyTXVsdGlwbGVQUyAmJiAhbUNsZWFyU2Npc3NvclJTICYmICFtQ2xlYXJOb1Nj
aXNzb3JSUyk7CisKKyAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgdmJEZXNjOworICAgICAgICB2
YkRlc2MuQnl0ZVdpZHRoID0gc2l6ZW9mKGQzZDExOjpQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXgp
ICogNDsKKyAgICAgICAgdmJEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfRFlOQU1JQzsKKyAgICAg
ICAgdmJEZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfVkVSVEVYX0JVRkZFUjsKKyAgICAgICAg
dmJEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsKKyAgICAgICAg
dmJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgIHZiRGVzYy5TdHJ1Y3R1cmVCeXRlU3RyaWRl
ID0gMDsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVCdWZmZXIoJnZiRGVzYywg
TlVMTCwgJm1DbGVhclZCKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAg
ICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ2xlYXJWQiwgIlJlbmRlcmVyMTEgbWFza2VkIGNs
ZWFyIHZlcnRleCBidWZmZXIiKTsKKworICAgICAgICBEM0QxMV9JTlBVVF9FTEVNRU5UX0RFU0Mg
cXVhZExheW91dFtdID0KKyAgICAgICAgeworICAgICAgICAgICAgeyAiUE9TSVRJT04iLCAwLCBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsICAgIDAsICAwLCBEM0QxMV9JTlBVVF9QRVJfVkVS
VEVYX0RBVEEsIDAgfSwKKyAgICAgICAgICAgIHsgIkNPTE9SIiwgICAgMCwgRFhHSV9GT1JNQVRf
UjMyRzMyQjMyQTMyX0ZMT0FULCAwLCAxMiwgRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRBLCAw
IH0sCisgICAgICAgIH07CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlSW5wdXRM
YXlvdXQocXVhZExheW91dCwgMiwgZ19WU19DbGVhciwgc2l6ZW9mKGdfVlNfQ2xlYXIpLCAmbUNs
ZWFySUwpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2Qx
MTo6U2V0RGVidWdOYW1lKG1DbGVhcklMLCAiUmVuZGVyZXIxMSBtYXNrZWQgY2xlYXIgaW5wdXQg
bGF5b3V0Iik7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlVmVydGV4U2hhZGVy
KGdfVlNfQ2xlYXIsIHNpemVvZihnX1ZTX0NsZWFyKSwgTlVMTCwgJm1DbGVhclZTKTsKKyAgICAg
ICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFt
ZShtQ2xlYXJWUywgIlJlbmRlcmVyMTEgbWFza2VkIGNsZWFyIHZlcnRleCBzaGFkZXIiKTsKKwor
ICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVQaXhlbFNoYWRlcihnX1BTX0NsZWFyU2lu
Z2xlLCBzaXplb2YoZ19QU19DbGVhclNpbmdsZSksIE5VTEwsICZtQ2xlYXJTaW5nbGVQUyk7Cisg
ICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgICAgIGQzZDExOjpTZXREZWJ1
Z05hbWUobUNsZWFyU2luZ2xlUFMsICJSZW5kZXJlcjExIG1hc2tlZCBjbGVhciBwaXhlbCBzaGFk
ZXIgKDEgUlQpIik7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUGl4ZWxTaGFk
ZXIoZ19QU19DbGVhck11bHRpcGxlLCBzaXplb2YoZ19QU19DbGVhck11bHRpcGxlKSwgTlVMTCwg
Jm1DbGVhck11bHRpcGxlUFMpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwor
ICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1DbGVhck11bHRpcGxlUFMsICJSZW5kZXJlcjEx
IG1hc2tlZCBjbGVhciBwaXhlbCBzaGFkZXIgKE1SVCkiKTsKKworICAgICAgICBEM0QxMV9SQVNU
RVJJWkVSX0RFU0MgcnNTY2lzc29yRGVzYzsKKyAgICAgICAgcnNTY2lzc29yRGVzYy5GaWxsTW9k
ZSA9IEQzRDExX0ZJTExfU09MSUQ7CisgICAgICAgIHJzU2Npc3NvckRlc2MuQ3VsbE1vZGUgPSBE
M0QxMV9DVUxMX05PTkU7CisgICAgICAgIHJzU2Npc3NvckRlc2MuRnJvbnRDb3VudGVyQ2xvY2t3
aXNlID0gRkFMU0U7CisgICAgICAgIHJzU2Npc3NvckRlc2MuRGVwdGhCaWFzID0gMDsKKyAgICAg
ICAgcnNTY2lzc29yRGVzYy5EZXB0aEJpYXNDbGFtcCA9IDAuMGY7CisgICAgICAgIHJzU2Npc3Nv
ckRlc2MuU2xvcGVTY2FsZWREZXB0aEJpYXMgPSAwLjBmOworICAgICAgICByc1NjaXNzb3JEZXNj
LkRlcHRoQ2xpcEVuYWJsZSA9IEZBTFNFOworICAgICAgICByc1NjaXNzb3JEZXNjLlNjaXNzb3JF
bmFibGUgPSBUUlVFOworICAgICAgICByc1NjaXNzb3JEZXNjLk11bHRpc2FtcGxlRW5hYmxlID0g
RkFMU0U7CisgICAgICAgIHJzU2Npc3NvckRlc2MuQW50aWFsaWFzZWRMaW5lRW5hYmxlID0gRkFM
U0U7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUmFzdGVyaXplclN0YXRlKCZy
c1NjaXNzb3JEZXNjLCAmbUNsZWFyU2Npc3NvclJTKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURF
RChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ2xlYXJTY2lzc29yUlMs
ICJSZW5kZXJlcjExIG1hc2tlZCBjbGVhciBzY2lzc29yIHJhc3Rlcml6ZXIgc3RhdGUiKTsKKwor
ICAgICAgICBEM0QxMV9SQVNURVJJWkVSX0RFU0MgcnNOb1NjaXNzb3JEZXNjOworICAgICAgICBy
c05vU2Npc3NvckRlc2MuRmlsbE1vZGUgPSBEM0QxMV9GSUxMX1NPTElEOworICAgICAgICByc05v
U2Npc3NvckRlc2MuQ3VsbE1vZGUgPSBEM0QxMV9DVUxMX05PTkU7CisgICAgICAgIHJzTm9TY2lz
c29yRGVzYy5Gcm9udENvdW50ZXJDbG9ja3dpc2UgPSBGQUxTRTsKKyAgICAgICAgcnNOb1NjaXNz
b3JEZXNjLkRlcHRoQmlhcyA9IDA7CisgICAgICAgIHJzTm9TY2lzc29yRGVzYy5EZXB0aEJpYXND
bGFtcCA9IDAuMGY7CisgICAgICAgIHJzTm9TY2lzc29yRGVzYy5TbG9wZVNjYWxlZERlcHRoQmlh
cyA9IDAuMGY7CisgICAgICAgIHJzTm9TY2lzc29yRGVzYy5EZXB0aENsaXBFbmFibGUgPSBGQUxT
RTsKKyAgICAgICAgcnNOb1NjaXNzb3JEZXNjLlNjaXNzb3JFbmFibGUgPSBGQUxTRTsKKyAgICAg
ICAgcnNOb1NjaXNzb3JEZXNjLk11bHRpc2FtcGxlRW5hYmxlID0gRkFMU0U7CisgICAgICAgIHJz
Tm9TY2lzc29yRGVzYy5BbnRpYWxpYXNlZExpbmVFbmFibGUgPSBGQUxTRTsKKworICAgICAgICBy
ZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVSYXN0ZXJpemVyU3RhdGUoJnJzTm9TY2lzc29yRGVzYywg
Jm1DbGVhck5vU2Npc3NvclJTKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsK
KyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ2xlYXJOb1NjaXNzb3JSUywgIlJlbmRlcmVy
MTEgbWFza2VkIGNsZWFyIG5vIHNjaXNzb3IgcmFzdGVyaXplciBzdGF0ZSIpOworCisgICAgICAg
IG1DbGVhclJlc291cmNlc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBQcmVw
YXJlIHRoZSBkZXB0aCBzdGVuY2lsIHN0YXRlIHRvIHdyaXRlIGRlcHRoIHZhbHVlcyBpZiB0aGUg
ZGVwdGggc2hvdWxkIGJlIGNsZWFyZWQKKyAgICAvLyBhbmQgc3RlbmNpbCB2YWx1ZXMgaWYgdGhl
IHN0ZW5jaWwgc2hvdWxkIGJlIGNsZWFyZWQKKyAgICBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgZ2xE
U1N0YXRlOworICAgIGdsRFNTdGF0ZS5kZXB0aFRlc3QgPSAoY2xlYXJQYXJhbXMubWFzayAmIEdM
X0RFUFRIX0JVRkZFUl9CSVQpICE9IDA7CisgICAgZ2xEU1N0YXRlLmRlcHRoRnVuYyA9IEdMX0FM
V0FZUzsKKyAgICBnbERTU3RhdGUuZGVwdGhNYXNrID0gKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9E
RVBUSF9CVUZGRVJfQklUKSAhPSAwOworICAgIGdsRFNTdGF0ZS5zdGVuY2lsVGVzdCA9IChjbGVh
clBhcmFtcy5tYXNrICYgR0xfU1RFTkNJTF9CVUZGRVJfQklUKSAhPSAwOworICAgIGdsRFNTdGF0
ZS5zdGVuY2lsRnVuYyA9IEdMX0FMV0FZUzsKKyAgICBnbERTU3RhdGUuc3RlbmNpbE1hc2sgPSAw
OworICAgIGdsRFNTdGF0ZS5zdGVuY2lsRmFpbCA9IEdMX1JFUExBQ0U7CisgICAgZ2xEU1N0YXRl
LnN0ZW5jaWxQYXNzRGVwdGhGYWlsID0gR0xfUkVQTEFDRTsKKyAgICBnbERTU3RhdGUuc3RlbmNp
bFBhc3NEZXB0aFBhc3MgPSBHTF9SRVBMQUNFOworICAgIGdsRFNTdGF0ZS5zdGVuY2lsV3JpdGVt
YXNrID0gY2xlYXJQYXJhbXMuc3RlbmNpbFdyaXRlTWFzazsKKyAgICBnbERTU3RhdGUuc3RlbmNp
bEJhY2tGdW5jID0gR0xfQUxXQVlTOworICAgIGdsRFNTdGF0ZS5zdGVuY2lsQmFja01hc2sgPSAw
OworICAgIGdsRFNTdGF0ZS5zdGVuY2lsQmFja0ZhaWwgPSBHTF9SRVBMQUNFOworICAgIGdsRFNT
dGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwgPSBHTF9SRVBMQUNFOworICAgIGdsRFNTdGF0
ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MgPSBHTF9SRVBMQUNFOworICAgIGdsRFNTdGF0ZS5z
dGVuY2lsQmFja1dyaXRlbWFzayA9IGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1hc2s7CisKKyAg
ICBpbnQgc3RlbmNpbENsZWFyID0gY2xlYXJQYXJhbXMuc3RlbmNpbENsZWFyVmFsdWUgJiAweDAw
MDAwMEZGOworCisgICAgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKmRzU3RhdGUgPSBtU3RhdGVD
YWNoZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZShnbERTU3RhdGUpOworCisgICAgLy8gUHJlcGFyZSB0
aGUgYmxlbmQgc3RhdGUgdG8gdXNlIGEgd3JpdGUgbWFzayBpZiB0aGUgY29sb3IgYnVmZmVyIHNo
b3VsZCBiZSBjbGVhcmVkCisgICAgZ2w6OkJsZW5kU3RhdGUgZ2xCbGVuZFN0YXRlOworICAgIGds
QmxlbmRTdGF0ZS5ibGVuZCA9IGZhbHNlOworICAgIGdsQmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJH
QiA9IEdMX09ORTsKKyAgICBnbEJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCID0gR0xfWkVSTzsKKyAg
ICBnbEJsZW5kU3RhdGUuc291cmNlQmxlbmRBbHBoYSA9IEdMX09ORTsKKyAgICBnbEJsZW5kU3Rh
dGUuZGVzdEJsZW5kQWxwaGEgPSBHTF9aRVJPOworICAgIGdsQmxlbmRTdGF0ZS5ibGVuZEVxdWF0
aW9uUkdCID0gR0xfRlVOQ19BREQ7CisgICAgZ2xCbGVuZFN0YXRlLmJsZW5kRXF1YXRpb25BbHBo
YSA9IEdMX0ZVTkNfQUREOworICAgIGdsQmxlbmRTdGF0ZS5jb2xvck1hc2tSZWQgPSAoY2xlYXJQ
YXJhbXMubWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpID8gY2xlYXJQYXJhbXMuY29sb3JNYXNr
UmVkIDogZmFsc2U7CisgICAgZ2xCbGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuID0gKGNsZWFyUGFy
YW1zLm1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKSA/IGNsZWFyUGFyYW1zLmNvbG9yTWFza0dy
ZWVuIDogZmFsc2U7CisgICAgZ2xCbGVuZFN0YXRlLmNvbG9yTWFza0JsdWUgPSAoY2xlYXJQYXJh
bXMubWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpID8gY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1
ZSA6IGZhbHNlOworICAgIGdsQmxlbmRTdGF0ZS5jb2xvck1hc2tBbHBoYSA9IChjbGVhclBhcmFt
cy5tYXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJVCkgPyBjbGVhclBhcmFtcy5jb2xvck1hc2tBbHBo
YSA6IGZhbHNlOworICAgIGdsQmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJhZ2UgPSBmYWxz
ZTsKKyAgICBnbEJsZW5kU3RhdGUuZGl0aGVyID0gZmFsc2U7CisKKyAgICBzdGF0aWMgY29uc3Qg
ZmxvYXQgYmxlbmRGYWN0b3JzWzRdID0geyAxLjBmLCAxLjBmLCAxLjBmLCAxLjBmIH07CisgICAg
c3RhdGljIGNvbnN0IFVJTlQgc2FtcGxlTWFzayA9IDB4RkZGRkZGRkY7CisKKyAgICBJRDNEMTFC
bGVuZFN0YXRlICpibGVuZFN0YXRlID0gbVN0YXRlQ2FjaGUuZ2V0QmxlbmRTdGF0ZShnbEJsZW5k
U3RhdGUpOworCisgICAgLy8gU2V0IHRoZSB2ZXJ0aWNlcworICAgIEQzRDExX01BUFBFRF9TVUJS
RVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKKyAgICByZXN1bHQgPSBtRGV2aWNlQ29udGV4dC0+TWFw
KG1DbGVhclZCLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwgJm1hcHBlZFJlc291cmNl
KTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0
byBtYXAgbWFza2VkIGNsZWFyIHZlcnRleCBidWZmZXIsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGQzZDExOjpQb3NpdGlvbkRlcHRoQ29s
b3JWZXJ0ZXggKnZlcnRpY2VzID0gcmVpbnRlcnByZXRfY2FzdDxkM2QxMTo6UG9zaXRpb25EZXB0
aENvbG9yVmVydGV4Kj4obWFwcGVkUmVzb3VyY2UucERhdGEpOworCisgICAgZmxvYXQgZGVwdGhD
bGVhciA9IGdsOjpjbGFtcDAxKGNsZWFyUGFyYW1zLmRlcHRoQ2xlYXJWYWx1ZSk7CisgICAgZDNk
MTE6OlNldFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleCgmdmVydGljZXNbMF0sIC0xLjBmLCAgMS4w
ZiwgZGVwdGhDbGVhciwgY2xlYXJQYXJhbXMuY29sb3JDbGVhclZhbHVlKTsKKyAgICBkM2QxMTo6
U2V0UG9zaXRpb25EZXB0aENvbG9yVmVydGV4KCZ2ZXJ0aWNlc1sxXSwgLTEuMGYsIC0xLjBmLCBk
ZXB0aENsZWFyLCBjbGVhclBhcmFtcy5jb2xvckNsZWFyVmFsdWUpOworICAgIGQzZDExOjpTZXRQ
b3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXgoJnZlcnRpY2VzWzJdLCAgMS4wZiwgIDEuMGYsIGRlcHRo
Q2xlYXIsIGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZSk7CisgICAgZDNkMTE6OlNldFBvc2l0
aW9uRGVwdGhDb2xvclZlcnRleCgmdmVydGljZXNbM10sICAxLjBmLCAtMS4wZiwgZGVwdGhDbGVh
ciwgY2xlYXJQYXJhbXMuY29sb3JDbGVhclZhbHVlKTsKKworICAgIG1EZXZpY2VDb250ZXh0LT5V
bm1hcChtQ2xlYXJWQiwgMCk7CisKKyAgICAvLyBBcHBseSBzdGF0ZQorICAgIG1EZXZpY2VDb250
ZXh0LT5PTVNldEJsZW5kU3RhdGUoYmxlbmRTdGF0ZSwgYmxlbmRGYWN0b3JzLCBzYW1wbGVNYXNr
KTsKKyAgICBtRGV2aWNlQ29udGV4dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShkc1N0YXRlLCBz
dGVuY2lsQ2xlYXIpOworICAgIG1EZXZpY2VDb250ZXh0LT5SU1NldFN0YXRlKG1TY2lzc29yRW5h
YmxlZCA/IG1DbGVhclNjaXNzb3JSUyA6IG1DbGVhck5vU2Npc3NvclJTKTsKKworICAgIC8vIEFw
cGx5IHNoYWRlcnMKKyAgICBJRDNEMTFQaXhlbFNoYWRlciAqcGl4ZWxTaGFkZXIgPSB1c2luZ0V4
dGVuZGVkRHJhd0J1ZmZlcnMgPyBtQ2xlYXJNdWx0aXBsZVBTIDogbUNsZWFyU2luZ2xlUFM7CisK
KyAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbnB1dExheW91dChtQ2xlYXJJTCk7CisgICAgbURl
dmljZUNvbnRleHQtPlZTU2V0U2hhZGVyKG1DbGVhclZTLCBOVUxMLCAwKTsKKyAgICBtRGV2aWNl
Q29udGV4dC0+UFNTZXRTaGFkZXIocGl4ZWxTaGFkZXIsIE5VTEwsIDApOworICAgIG1EZXZpY2VD
b250ZXh0LT5HU1NldFNoYWRlcihOVUxMLCBOVUxMLCAwKTsKKworICAgIC8vIEFwcGx5IHZlcnRl
eCBidWZmZXIKKyAgICBzdGF0aWMgVUlOVCBzdHJpZGUgPSBzaXplb2YoZDNkMTE6OlBvc2l0aW9u
RGVwdGhDb2xvclZlcnRleCk7CisgICAgc3RhdGljIFVJTlQgc3RhcnRJZHggPSAwOworICAgIG1E
ZXZpY2VDb250ZXh0LT5JQVNldFZlcnRleEJ1ZmZlcnMoMCwgMSwgJm1DbGVhclZCLCAmc3RyaWRl
LCAmc3RhcnRJZHgpOworICAgIG1EZXZpY2VDb250ZXh0LT5JQVNldFByaW1pdGl2ZVRvcG9sb2d5
KEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVTVFJJUCk7CisKKyAgICAvLyBEcmF3IHRo
ZSBjbGVhciBxdWFkCisgICAgbURldmljZUNvbnRleHQtPkRyYXcoNCwgMCk7CisKKyAgICAvLyBD
bGVhbiB1cAorICAgIG1hcmtBbGxTdGF0ZURpcnR5KCk7Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6
bWFya0FsbFN0YXRlRGlydHkoKQoreworICAgIGZvciAodW5zaWduZWQgaW50IHJ0SW5kZXggPSAw
OyBydEluZGV4IDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM7IHJ0SW5kZXgr
KykKKyAgICB7CisgICAgICAgIG1BcHBsaWVkUmVuZGVyVGFyZ2V0U2VyaWFsc1tydEluZGV4XSA9
IDA7CisgICAgfQorICAgIG1BcHBsaWVkRGVwdGhidWZmZXJTZXJpYWwgPSAwOworICAgIG1BcHBs
aWVkU3RlbmNpbGJ1ZmZlclNlcmlhbCA9IDA7CisgICAgbURlcHRoU3RlbmNpbEluaXRpYWxpemVk
ID0gZmFsc2U7CisgICAgbVJlbmRlclRhcmdldERlc2NJbml0aWFsaXplZCA9IGZhbHNlOworCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRFWF9URVhU
VVJFX0lNQUdFX1VOSVRTOyBpKyspCisgICAgeworICAgICAgICBtRm9yY2VTZXRWZXJ0ZXhTYW1w
bGVyU3RhdGVzW2ldID0gdHJ1ZTsKKyAgICAgICAgbUN1clZlcnRleFRleHR1cmVTZXJpYWxzW2ld
ID0gMDsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1RFWFRVUkVfSU1B
R0VfVU5JVFM7IGkrKykKKyAgICB7CisgICAgICAgIG1Gb3JjZVNldFBpeGVsU2FtcGxlclN0YXRl
c1tpXSA9IHRydWU7CisgICAgICAgIG1DdXJQaXhlbFRleHR1cmVTZXJpYWxzW2ldID0gMDsKKyAg
ICB9CisKKyAgICBtRm9yY2VTZXRCbGVuZFN0YXRlID0gdHJ1ZTsKKyAgICBtRm9yY2VTZXRSYXN0
ZXJTdGF0ZSA9IHRydWU7CisgICAgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgPSB0cnVlOwor
ICAgIG1Gb3JjZVNldFNjaXNzb3IgPSB0cnVlOworICAgIG1Gb3JjZVNldFZpZXdwb3J0ID0gdHJ1
ZTsKKworICAgIG1BcHBsaWVkSUJTZXJpYWwgPSAwOworICAgIG1BcHBsaWVkU3RvcmFnZUlCU2Vy
aWFsID0gMDsKKyAgICBtQXBwbGllZElCT2Zmc2V0ID0gMDsKKworICAgIG1BcHBsaWVkUHJvZ3Jh
bUJpbmFyeVNlcmlhbCA9IDA7CisgICAgbWVtc2V0KCZtQXBwbGllZFZlcnRleENvbnN0YW50cywg
MCwgc2l6ZW9mKGR4X1ZlcnRleENvbnN0YW50cykpOworICAgIG1lbXNldCgmbUFwcGxpZWRQaXhl
bENvbnN0YW50cywgMCwgc2l6ZW9mKGR4X1BpeGVsQ29uc3RhbnRzKSk7Cit9CisKK3ZvaWQgUmVu
ZGVyZXIxMTo6cmVsZWFzZURldmljZVJlc291cmNlcygpCit7CisgICAgbVN0YXRlQ2FjaGUuY2xl
YXIoKTsKKyAgICBtSW5wdXRMYXlvdXRDYWNoZS5jbGVhcigpOworCisgICAgZGVsZXRlIG1WZXJ0
ZXhEYXRhTWFuYWdlcjsKKyAgICBtVmVydGV4RGF0YU1hbmFnZXIgPSBOVUxMOworCisgICAgZGVs
ZXRlIG1JbmRleERhdGFNYW5hZ2VyOworICAgIG1JbmRleERhdGFNYW5hZ2VyID0gTlVMTDsKKwor
ICAgIGRlbGV0ZSBtTGluZUxvb3BJQjsKKyAgICBtTGluZUxvb3BJQiA9IE5VTEw7CisKKyAgICBk
ZWxldGUgbVRyaWFuZ2xlRmFuSUI7CisgICAgbVRyaWFuZ2xlRmFuSUIgPSBOVUxMOworCisgICAg
U2FmZVJlbGVhc2UobUNvcHlWQik7CisgICAgU2FmZVJlbGVhc2UobUNvcHlTYW1wbGVyKTsKKyAg
ICBTYWZlUmVsZWFzZShtQ29weUlMKTsKKyAgICBTYWZlUmVsZWFzZShtQ29weUlMKTsKKyAgICBT
YWZlUmVsZWFzZShtQ29weVZTKTsKKyAgICBTYWZlUmVsZWFzZShtQ29weVJHQkFQUyk7CisgICAg
U2FmZVJlbGVhc2UobUNvcHlSR0JQUyk7CisgICAgU2FmZVJlbGVhc2UobUNvcHlMdW1QUyk7Cisg
ICAgU2FmZVJlbGVhc2UobUNvcHlMdW1BbHBoYVBTKTsKKworICAgIG1Db3B5UmVzb3VyY2VzSW5p
dGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIFNhZmVSZWxlYXNlKG1DbGVhclZCKTsKKyAgICBTYWZl
UmVsZWFzZShtQ2xlYXJJTCk7CisgICAgU2FmZVJlbGVhc2UobUNsZWFyVlMpOworICAgIFNhZmVS
ZWxlYXNlKG1DbGVhclNpbmdsZVBTKTsKKyAgICBTYWZlUmVsZWFzZShtQ2xlYXJNdWx0aXBsZVBT
KTsKKyAgICBTYWZlUmVsZWFzZShtQ2xlYXJTY2lzc29yUlMpOworICAgIFNhZmVSZWxlYXNlKG1D
bGVhck5vU2Npc3NvclJTKTsKKworICAgIG1DbGVhclJlc291cmNlc0luaXRpYWxpemVkID0gZmFs
c2U7CisKKyAgICBTYWZlUmVsZWFzZShtRHJpdmVyQ29uc3RhbnRCdWZmZXJWUyk7CisgICAgU2Fm
ZVJlbGVhc2UobURyaXZlckNvbnN0YW50QnVmZmVyUFMpOworICAgIFNhZmVSZWxlYXNlKG1TeW5j
UXVlcnkpOworfQorCit2b2lkIFJlbmRlcmVyMTE6Om5vdGlmeURldmljZUxvc3QoKQoreworICAg
IG1EZXZpY2VMb3N0ID0gdHJ1ZTsKKyAgICBtRGlzcGxheS0+bm90aWZ5RGV2aWNlTG9zdCgpOwor
fQorCitib29sIFJlbmRlcmVyMTE6OmlzRGV2aWNlTG9zdCgpCit7CisgICAgcmV0dXJuIG1EZXZp
Y2VMb3N0OworfQorCisvLyBzZXQgbm90aWZ5IHRvIHRydWUgdG8gYnJvYWRjYXN0IGEgbWVzc2Fn
ZSB0byBhbGwgY29udGV4dHMgb2YgdGhlIGRldmljZSBsb3NzCitib29sIFJlbmRlcmVyMTE6OnRl
c3REZXZpY2VMb3N0KGJvb2wgbm90aWZ5KQoreworICAgIGJvb2wgaXNMb3N0ID0gZmFsc2U7CisK
KyAgICAvLyBHZXRSZW1vdmVkUmVhc29uIGlzIHVzZWQgdG8gdGVzdCBpZiB0aGUgZGV2aWNlIGlz
IHJlbW92ZWQKKyAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkdldERldmljZVJlbW92ZWRS
ZWFzb24oKTsKKyAgICBpc0xvc3QgPSBkM2QxMTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KTsK
KworICAgIGlmIChpc0xvc3QpCisgICAgeworICAgICAgICAvLyBMb2cgZXJyb3IgaWYgdGhpcyBp
cyBhIG5ldyBkZXZpY2UgbG9zdCBldmVudAorICAgICAgICBpZiAobURldmljZUxvc3QgPT0gZmFs
c2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiVGhlIEQzRDExIGRldmljZSB3YXMgcmVt
b3ZlZDogMHglMDhYIiwgcmVzdWx0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGVuc3VyZSB3
ZSBub3RlIHRoZSBkZXZpY2UgbG9zcyAtLQorICAgICAgICAvLyB3ZSdsbCBwcm9iYWJseSBnZXQg
dGhpcyBkb25lIGFnYWluIGJ5IG5vdGlmeURldmljZUxvc3QKKyAgICAgICAgLy8gYnV0IGJlc3Qg
dG8gcmVtZW1iZXIgaXQhCisgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGNs
ZWFyIHRoZSBkZXZpY2UgbG9zcyBzdGF0dXMgaGVyZQorICAgICAgICAvLyAtLSB0aGlzIG5lZWRz
IHRvIGJlIGRvbmUgYnkgcmVzZXREZXZpY2UKKyAgICAgICAgbURldmljZUxvc3QgPSB0cnVlOwor
ICAgICAgICBpZiAobm90aWZ5KQorICAgICAgICB7CisgICAgICAgICAgICBub3RpZnlEZXZpY2VM
b3N0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gaXNMb3N0OworfQorCitib29s
IFJlbmRlcmVyMTE6OnRlc3REZXZpY2VSZXNldHRhYmxlKCkKK3sKKyAgICAvLyBkZXRlcm1pbmUg
aWYgdGhlIGRldmljZSBpcyByZXNldHRhYmxlIGJ5IGNyZWF0aW5nIGEgZHVtbXkgZGV2aWNlCisg
ICAgUEZOX0QzRDExX0NSRUFURV9ERVZJQ0UgRDNEMTFDcmVhdGVEZXZpY2UgPSAoUEZOX0QzRDEx
X0NSRUFURV9ERVZJQ0UpR2V0UHJvY0FkZHJlc3MobUQzZDExTW9kdWxlLCAiRDNEMTFDcmVhdGVE
ZXZpY2UiKTsKKworICAgIGlmIChEM0QxMUNyZWF0ZURldmljZSA9PSBOVUxMKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1
cmVMZXZlbHNbXSA9CisgICAgeworICAgICAgICBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wLAorICAg
ICAgICBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xLAorICAgICAgICBEM0RfRkVBVFVSRV9MRVZFTF8x
MF8wLAorICAgIH07CisKKyAgICBJRDNEMTFEZXZpY2UqIGR1bW15RGV2aWNlOworICAgIEQzRF9G
RUFUVVJFX0xFVkVMIGR1bW15RmVhdHVyZUxldmVsOworICAgIElEM0QxMURldmljZUNvbnRleHQq
IGR1bW15Q29udGV4dDsKKworICAgIEhSRVNVTFQgcmVzdWx0ID0gRDNEMTFDcmVhdGVEZXZpY2Uo
TlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRF9EUklWRVJf
VFlQRV9IQVJEV0FSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaWYgZGVmaW5lZChf
REVCVUcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9DUkVB
VEVfREVWSUNFX0RFQlVHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
I2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVMZXZlbHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBcnJheVNpemUoZmVhdHVyZUxldmVscyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9TREtfVkVSU0lPTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdW1teURldmljZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdW1teUZlYXR1cmVMZXZlbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdW1teUNvbnRleHQpOworCisgICAgaWYg
KCFtRGV2aWNlIHx8IEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGR1bW15Q29udGV4dC0+UmVsZWFzZSgpOworICAgIGR1bW15RGV2aWNl
LT5SZWxlYXNlKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZW5kZXJlcjExOjpy
ZWxlYXNlKCkKK3sKKyAgICByZWxlYXNlRGV2aWNlUmVzb3VyY2VzKCk7CisKKyAgICBpZiAobUR4
Z2lGYWN0b3J5KQorICAgIHsKKyAgICAgICAgbUR4Z2lGYWN0b3J5LT5SZWxlYXNlKCk7CisgICAg
ICAgIG1EeGdpRmFjdG9yeSA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1EeGdpQWRhcHRlcikK
KyAgICB7CisgICAgICAgIG1EeGdpQWRhcHRlci0+UmVsZWFzZSgpOworICAgICAgICBtRHhnaUFk
YXB0ZXIgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtRGV2aWNlQ29udGV4dCkKKyAgICB7Cisg
ICAgICAgIG1EZXZpY2VDb250ZXh0LT5DbGVhclN0YXRlKCk7CisgICAgICAgIG1EZXZpY2VDb250
ZXh0LT5GbHVzaCgpOworICAgICAgICBtRGV2aWNlQ29udGV4dC0+UmVsZWFzZSgpOworICAgICAg
ICBtRGV2aWNlQ29udGV4dCA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1EZXZpY2UpCisgICAg
eworICAgICAgICBtRGV2aWNlLT5SZWxlYXNlKCk7CisgICAgICAgIG1EZXZpY2UgPSBOVUxMOwor
ICAgIH0KKworICAgIGlmIChtRDNkMTFNb2R1bGUpCisgICAgeworICAgICAgICBGcmVlTGlicmFy
eShtRDNkMTFNb2R1bGUpOworICAgICAgICBtRDNkMTFNb2R1bGUgPSBOVUxMOworICAgIH0KKwor
ICAgIGlmIChtRHhnaU1vZHVsZSkKKyAgICB7CisgICAgICAgIEZyZWVMaWJyYXJ5KG1EeGdpTW9k
dWxlKTsKKyAgICAgICAgbUR4Z2lNb2R1bGUgPSBOVUxMOworICAgIH0KK30KKworYm9vbCBSZW5k
ZXJlcjExOjpyZXNldERldmljZSgpCit7CisgICAgLy8gcmVjcmVhdGUgZXZlcnl0aGluZworICAg
IHJlbGVhc2UoKTsKKyAgICBFR0xpbnQgcmVzdWx0ID0gaW5pdGlhbGl6ZSgpOworCisgICAgaWYg
KHJlc3VsdCAhPSBFR0xfU1VDQ0VTUykKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IHJl
aW5pdGlhbGl6ZSBEM0QxMSBkZXZpY2U6ICUwOFgiLCByZXN1bHQpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgbURldmljZUxvc3QgPSBmYWxzZTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitEV09SRCBSZW5kZXJlcjExOjpnZXRBZGFwdGVyVmVuZG9yKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbUFkYXB0ZXJEZXNjcmlwdGlvbi5WZW5kb3JJZDsKK30KKworc3RkOjpzdHJp
bmcgUmVuZGVyZXIxMTo6Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgc3Rk
Ojpvc3RyaW5nc3RyZWFtIHJlbmRlcmVyU3RyaW5nOworCisgICAgcmVuZGVyZXJTdHJpbmcgPDwg
bURlc2NyaXB0aW9uOworICAgIHJlbmRlcmVyU3RyaW5nIDw8ICIgRGlyZWN0M0QxMSI7CisKKyAg
ICByZW5kZXJlclN0cmluZyA8PCAiIHZzXyIgPDwgZ2V0TWFqb3JTaGFkZXJNb2RlbCgpIDw8ICJf
IiA8PCBnZXRNaW5vclNoYWRlck1vZGVsKCk7CisgICAgcmVuZGVyZXJTdHJpbmcgPDwgIiBwc18i
IDw8IGdldE1ham9yU2hhZGVyTW9kZWwoKSA8PCAiXyIgPDwgZ2V0TWlub3JTaGFkZXJNb2RlbCgp
OworCisgICAgcmV0dXJuIHJlbmRlcmVyU3RyaW5nLnN0cigpOworfQorCitHVUlEIFJlbmRlcmVy
MTE6OmdldEFkYXB0ZXJJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICAvLyBVc2UgdGhlIGFkYXB0
ZXIgTFVJRCBhcyBvdXIgYWRhcHRlciBJRAorICAgIC8vIFRoaXMgbnVtYmVyIGlzIGxvY2FsIHRv
IGEgbWFjaGluZSBpcyBvbmx5IGd1YXJhbnRlZWQgdG8gYmUgdW5pcXVlIGJldHdlZW4gcmVzdGFy
dHMKKyAgICBNRVRBX0FTU0VSVChzaXplb2YoTFVJRCkgPD0gc2l6ZW9mKEdVSUQpKTsKKyAgICBH
VUlEIGFkYXB0ZXJJZCA9IHswfTsKKyAgICBtZW1jcHkoJmFkYXB0ZXJJZCwgJm1BZGFwdGVyRGVz
Y3JpcHRpb24uQWRhcHRlckx1aWQsIHNpemVvZihMVUlEKSk7CisgICAgcmV0dXJuIGFkYXB0ZXJJ
ZDsKK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRCR1JBVGV4dHVyZVN1cHBvcnQoKSBjb25zdAor
eworICAgIHJldHVybiBtQkdSQVRleHR1cmVTdXBwb3J0OworfQorCitib29sIFJlbmRlcmVyMTE6
OmdldERYVDFUZXh0dXJlU3VwcG9ydCgpCit7CisgICAgcmV0dXJuIG1EWFQxVGV4dHVyZVN1cHBv
cnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0RFhUM1RleHR1cmVTdXBwb3J0KCkKK3sKKyAg
ICByZXR1cm4gbURYVDNUZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRE
WFQ1VGV4dHVyZVN1cHBvcnQoKQoreworICAgIHJldHVybiBtRFhUNVRleHR1cmVTdXBwb3J0Owor
fQorCitib29sIFJlbmRlcmVyMTE6OmdldERlcHRoVGV4dHVyZVN1cHBvcnQoKSBjb25zdAorewor
ICAgIHJldHVybiBtRGVwdGhUZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJlcjExOjpn
ZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5nLCBib29sICpyZW5kZXJhYmxl
KQoreworICAgICpyZW5kZXJhYmxlID0gbUZsb2F0MzJSZW5kZXJTdXBwb3J0OworICAgICpmaWx0
ZXJpbmcgPSBtRmxvYXQzMkZpbHRlclN1cHBvcnQ7CisgICAgcmV0dXJuIG1GbG9hdDMyVGV4dHVy
ZVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0RmxvYXQxNlRleHR1cmVTdXBwb3J0
KGJvb2wgKmZpbHRlcmluZywgYm9vbCAqcmVuZGVyYWJsZSkKK3sKKyAgICAqcmVuZGVyYWJsZSA9
IG1GbG9hdDE2UmVuZGVyU3VwcG9ydDsKKyAgICAqZmlsdGVyaW5nID0gbUZsb2F0MTZGaWx0ZXJT
dXBwb3J0OworICAgIHJldHVybiBtRmxvYXQxNlRleHR1cmVTdXBwb3J0OworfQorCitib29sIFJl
bmRlcmVyMTE6OmdldEx1bWluYW5jZVRleHR1cmVTdXBwb3J0KCkKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0THVtaW5hbmNlQWxwaGFUZXh0dXJlU3VwcG9y
dCgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbmRlcmVyMTE6OmdldFRleHR1
cmVGaWx0ZXJBbmlzb3Ryb3B5U3VwcG9ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Zsb2F0IFJlbmRlcmVyMTE6OmdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KCkgY29uc3QKK3sK
KyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF8xMV8wOgorICAgICAgICByZXR1cm4gRDNEMTFfTUFYX01BWEFOSVNPVFJPUFk7Cisg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzEwXzA6CisgICAgICAgIHJldHVybiBEM0QxMF9NQVhfTUFYQU5JU09UUk9QWTsKKyAg
ICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30K
KworYm9vbCBSZW5kZXJlcjExOjpnZXRFdmVudFF1ZXJ5U3VwcG9ydCgpCit7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK1JhbmdlIFJlbmRlcmVyMTE6OmdldFZpZXdwb3J0Qm91bmRzKCkgY29uc3QK
K3sKKyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMV8wOgorICAgICAgICByZXR1cm4gUmFuZ2UoRDNEMTFfVklFV1BPUlRfQk9V
TkRTX01JTiwgRDNEMTFfVklFV1BPUlRfQk9VTkRTX01BWCk7CisgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAg
ICAgIHJldHVybiBSYW5nZShEM0QxMF9WSUVXUE9SVF9CT1VORFNfTUlOLCBEM0QxMF9WSUVXUE9S
VF9CT1VORFNfTUFYKTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJl
dHVybiBSYW5nZSgwLCAwKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjExOjpn
ZXRNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0Cit7CisgICAgTUVUQV9BU1NFUlQo
TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGX1NNNCA8PSBnbDo6SU1QTEVNRU5UQVRJT05fTUFY
X1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTKTsKKyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwp
CisgICAgeworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8w
OgorICAgICAgICByZXR1cm4gTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGX1NNNDsKKyAgICAg
IGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwor
dW5zaWduZWQgaW50IFJlbmRlcmVyMTE6OmdldE1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMo
KSBjb25zdAoreworICAgIHJldHVybiBnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMgKyBnZXRN
YXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpOworfQorCit1bnNpZ25lZCBpbnQgUmVuZGVyZXIx
MTo6Z2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IDA7ICAgLy8gRHJpdmVyIHVuaWZvcm1zIGFyZSBzdG9yZWQgaW4gYSBzZXBhcmF0ZSBjb25zdGFu
dCBidWZmZXIKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyMTE6OmdldFJlc2VydmVkRnJhZ21l
bnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7ICAgLy8gRHJpdmVyIHVu
aWZvcm1zIGFyZSBzdG9yZWQgaW4gYSBzZXBhcmF0ZSBjb25zdGFudCBidWZmZXIKK30KKwordW5z
aWduZWQgaW50IFJlbmRlcmVyMTE6OmdldE1heFZlcnRleFVuaWZvcm1WZWN0b3JzKCkgY29uc3QK
K3sKKyAgICBNRVRBX0FTU0VSVChNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU19EM0QxMSA8PSBE
M0QxMF9SRVFfQ09OU1RBTlRfQlVGRkVSX0VMRU1FTlRfQ09VTlQpOworICAgIEFTU0VSVChtRmVh
dHVyZUxldmVsID49IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzApOworICAgIHJldHVybiBNQVhfVkVS
VEVYX1VOSUZPUk1fVkVDVE9SU19EM0QxMTsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyMTE6
OmdldE1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKSBjb25zdAoreworICAgIE1FVEFfQVNTRVJU
KE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNfRDNEMTEgPD0gRDNEMTBfUkVRX0NPTlNUQU5U
X0JVRkZFUl9FTEVNRU5UX0NPVU5UKTsKKyAgICBBU1NFUlQobUZlYXR1cmVMZXZlbCA+PSBEM0Rf
RkVBVFVSRV9MRVZFTF8xMF8wKTsKKyAgICByZXR1cm4gTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVD
VE9SU19EM0QxMTsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyMTE6OmdldE1heFZhcnlpbmdW
ZWN0b3JzKCkgY29uc3QKK3sKKyAgICBNRVRBX0FTU0VSVChnbDo6SU1QTEVNRU5UQVRJT05fTUFY
X1ZBUllJTkdfVkVDVE9SUyA9PSBEM0QxMV9WU19PVVRQVVRfUkVHSVNURVJfQ09VTlQpOworICAg
IHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzExXzA6CisgICAgICAgIHJldHVybiBEM0QxMV9WU19PVVRQVVRfUkVHSVNURVJfQ09VTlQ7
CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzEwXzA6CisgICAgICAgIHJldHVybiBEM0QxMF9WU19PVVRQVVRfUkVHSVNURVJf
Q09VTlQ7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQo
KSBjb25zdAoreworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEw
XzE6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRPY2NsdXNpb25RdWVyeVN1cHBvcnQo
KSBjb25zdAoreworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEw
XzE6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRJbnN0YW5jaW5nU3VwcG9ydCgpIGNv
bnN0Cit7CisgICAgc3dpdGNoIChtRmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToK
KyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCitib29sIFJlbmRlcmVyMTE6OmdldFNoYXJlSGFuZGxlU3VwcG9ydCgpIGNvbnN0
Cit7CisgICAgLy8gV2Ugb25seSBjdXJyZW50bHkgc3VwcG9ydCBzaGFyZSBoYW5kbGVzIHdpdGgg
QkdSQSBzdXJmYWNlcywgYmVjYXVzZQorICAgIC8vIGNocm9tZSBuZWVkcyBCR1JBLiBPbmNlIGNo
cm9tZSBmaXhlcyB0aGlzLCB3ZSBzaG91bGQgYWx3YXlzIHN1cHBvcnQgdGhlbS4KKyAgICAvLyBQ
SVggZG9lc24ndCBzZWVtIHRvIHN1cHBvcnQgdXNpbmcgc2hhcmUgaGFuZGxlcywgc28gZGlzYWJs
ZSB0aGVtLgorICAgIHJldHVybiBnZXRCR1JBVGV4dHVyZVN1cHBvcnQoKSAmJiAhZ2w6OnBlcmZB
Y3RpdmUoKTsKK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXREZXJpdmF0aXZlSW5zdHJ1Y3Rpb25T
dXBwb3J0KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMF8xOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0UG9zdFN1YkJ1ZmZlclN1
cHBvcnQoKSBjb25zdAoreworICAgIC8vIEQzRDExIGRvZXMgbm90IHN1cHBvcnQgcHJlc2VudCB3
aXRoIGRpcnR5IHJlY3RhbmdsZXMgdW50aWwgRDNEMTEuMSBhbmQgRFhHSSAxLjIuCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitpbnQgUmVuZGVyZXIxMTo6Z2V0TWFqb3JTaGFkZXJNb2RlbCgpIGNv
bnN0Cit7CisgICAgc3dpdGNoIChtRmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuIEQzRDExX1NIQURFUl9NQUpPUl9WRVJTSU9OOyAg
IC8vIDUKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMTogcmV0dXJuIEQzRDEwXzFf
U0hBREVSX01BSk9SX1ZFUlNJT047IC8vIDQKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTBfMDogcmV0dXJuIEQzRDEwX1NIQURFUl9NQUpPUl9WRVJTSU9OOyAgIC8vIDQKKyAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitpbnQgUmVu
ZGVyZXIxMTo6Z2V0TWlub3JTaGFkZXJNb2RlbCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtRmVh
dHVyZUxldmVsKQorICAgIHsKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0
dXJuIEQzRDExX1NIQURFUl9NSU5PUl9WRVJTSU9OOyAgIC8vIDAKKyAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTBfMTogcmV0dXJuIEQzRDEwXzFfU0hBREVSX01JTk9SX1ZFUlNJT047IC8v
IDEKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIEQzRDEwX1NIQURF
Ul9NSU5PUl9WRVJTSU9OOyAgIC8vIDAKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAg
ICAgcmV0dXJuIDA7CisgICAgfQorfQorCitmbG9hdCBSZW5kZXJlcjExOjpnZXRNYXhQb2ludFNp
emUoKSBjb25zdAoreworICAgIC8vIGNob29zZSBhIHJlYXNvbmFibGUgbWF4aW11bS4gd2UgZW5m
b3JjZSB0aGlzIGluIHRoZSBzaGFkZXIuCisgICAgLy8gKG5iOiBvbiBhIFJhZGVvbiAyNjAweHQs
IERYOSByZXBvcnRzIGEgMjU2IG1heCBwb2ludCBzaXplKQorICAgIHJldHVybiAxMDI0LjBmOwor
fQorCitpbnQgUmVuZGVyZXIxMTo6Z2V0TWF4Vmlld3BvcnREaW1lbnNpb24oKSBjb25zdAorewor
ICAgIC8vIE1heGltdW0gdmlld3BvcnQgc2l6ZSBtdXN0IGJlIGF0IGxlYXN0IGFzIGxhcmdlIGFz
IHRoZSBsYXJnZXN0IHJlbmRlciBidWZmZXIgKG9yIGxhcmdlcikuCisgICAgLy8gSW4gb3VyIGNh
c2UgcmV0dXJuIHRoZSBtYXhpbXVtIHRleHR1cmUgc2l6ZSwgd2hpY2ggaXMgdGhlIG1heGltdW0g
cmVuZGVyIGJ1ZmZlciBzaXplLgorICAgIE1FVEFfQVNTRVJUKEQzRDExX1JFUV9URVhUVVJFMkRf
VV9PUl9WX0RJTUVOU0lPTiAqIDIgLSAxIDw9IEQzRDExX1ZJRVdQT1JUX0JPVU5EU19NQVgpOwor
ICAgIE1FVEFfQVNTRVJUKEQzRDEwX1JFUV9URVhUVVJFMkRfVV9PUl9WX0RJTUVOU0lPTiAqIDIg
LSAxIDw9IEQzRDEwX1ZJRVdQT1JUX0JPVU5EU19NQVgpOworCisgICAgc3dpdGNoIChtRmVhdHVy
ZUxldmVsKQorICAgIHsKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogCisgICAg
ICAgIHJldHVybiBEM0QxMV9SRVFfVEVYVFVSRTJEX1VfT1JfVl9ESU1FTlNJT047ICAgLy8gMTYz
ODQKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTBfMDogCisgICAgICAgIHJldHVybiBEM0QxMF9SRVFfVEVYVFVSRTJEX1Vf
T1JfVl9ESU1FTlNJT047ICAgLy8gODE5MgorICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsg
ICAgICAKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitpbnQgUmVuZGVyZXIxMTo6Z2V0
TWF4VGV4dHVyZVdpZHRoKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisg
ICAgeworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOiByZXR1cm4gRDNEMTFfUkVR
X1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOyAgIC8vIDE2Mzg0CisgICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJl
dHVybiBEM0QxMF9SRVFfVEVYVFVSRTJEX1VfT1JfVl9ESU1FTlNJT047ICAgLy8gODE5MgorICAg
ICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2lu
dCBSZW5kZXJlcjExOjpnZXRNYXhUZXh0dXJlSGVpZ2h0KCkgY29uc3QKK3sKKyAgICBzd2l0Y2gg
KG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8w
OiByZXR1cm4gRDNEMTFfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOyAgIC8vIDE2Mzg0
CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzEwXzA6IHJldHVybiBEM0QxMF9SRVFfVEVYVFVSRTJEX1VfT1JfVl9ESU1FTlNJ
T047ICAgLy8gODE5MgorICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1cm4g
MDsKKyAgICB9Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0MzJCaXRJbmRleFN1cHBvcnQoKSBj
b25zdAoreworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzExXzA6IAorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8x
OgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gRDNEMTBfUkVRX0RS
QVdJTkRFWEVEX0lOREVYX0NPVU5UXzJfVE9fRVhQID49IDMyOyAgIC8vIHRydWUKKyAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW50
IFJlbmRlcmVyMTE6OmdldE1pblN3YXBJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7
Cit9CisKK2ludCBSZW5kZXJlcjExOjpnZXRNYXhTd2FwSW50ZXJ2YWwoKSBjb25zdAoreworICAg
IHJldHVybiA0OworfQorCitpbnQgUmVuZGVyZXIxMTo6Z2V0TWF4U3VwcG9ydGVkU2FtcGxlcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1NYXhTdXBwb3J0ZWRTYW1wbGVzOworfQorCitpbnQgUmVu
ZGVyZXIxMTo6Z2V0TmVhcmVzdFN1cHBvcnRlZFNhbXBsZXMoRFhHSV9GT1JNQVQgZm9ybWF0LCB1
bnNpZ25lZCBpbnQgcmVxdWVzdGVkKSBjb25zdAoreworICAgIGlmIChyZXF1ZXN0ZWQgPT0gMCkK
KyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIE11bHRpc2FtcGxlU3VwcG9y
dE1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1NdWx0aXNhbXBsZVN1cHBvcnRNYXAuZmluZChm
b3JtYXQpOworICAgIGlmIChpdGVyICE9IG1NdWx0aXNhbXBsZVN1cHBvcnRNYXAuZW5kKCkpCisg
ICAgeworICAgICAgICBjb25zdCBNdWx0aXNhbXBsZVN1cHBvcnRJbmZvJiBpbmZvID0gaXRlci0+
c2Vjb25kOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gcmVxdWVzdGVkIC0gMTsgaSA8
IEQzRDExX01BWF9NVUxUSVNBTVBMRV9TQU1QTEVfQ09VTlQ7IGkrKykKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKGluZm8ucXVhbGl0eUxldmVsc1tpXSA+IDApCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGkgKyAxOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCit1bnNpZ25lZCBpbnQgUmVuZGVyZXIxMTo6Z2V0
TWF4UmVuZGVyVGFyZ2V0cygpIGNvbnN0Cit7CisgICAgTUVUQV9BU1NFUlQoRDNEMTFfU0lNVUxU
QU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQgPD0gZ2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFX
X0JVRkZFUlMpOworICAgIE1FVEFfQVNTRVJUKEQzRDEwX1NJTVVMVEFORU9VU19SRU5ERVJfVEFS
R0VUX0NPVU5UIDw9IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTKTsKKworICAg
IHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzExXzA6CisgICAgICAgIHJldHVybiBEM0QxMV9TSU1VTFRBTkVPVVNfUkVOREVSX1RBUkdF
VF9DT1VOVDsgIC8vIDgKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgcmV0dXJuIEQzRDEwX1NJTVVM
VEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UOyAgLy8gOAorICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCitib29sIFJl
bmRlcmVyMTE6OmNvcHlUb1JlbmRlclRhcmdldChUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpk
ZXN0LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpzb3VyY2UpCit7CisgICAgaWYgKHNvdXJj
ZSAmJiBkZXN0KQorICAgIHsKKyAgICAgICAgVGV4dHVyZVN0b3JhZ2UxMV8yRCAqc291cmNlMTEg
PSBUZXh0dXJlU3RvcmFnZTExXzJEOjptYWtlVGV4dHVyZVN0b3JhZ2UxMV8yRChzb3VyY2UtPmdl
dFN0b3JhZ2VJbnN0YW5jZSgpKTsKKyAgICAgICAgVGV4dHVyZVN0b3JhZ2UxMV8yRCAqZGVzdDEx
ID0gVGV4dHVyZVN0b3JhZ2UxMV8yRDo6bWFrZVRleHR1cmVTdG9yYWdlMTFfMkQoZGVzdC0+Z2V0
U3RvcmFnZUluc3RhbmNlKCkpOworCisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5Db3B5UmVzb3Vy
Y2UoZGVzdDExLT5nZXRCYXNlVGV4dHVyZSgpLCBzb3VyY2UxMS0+Z2V0QmFzZVRleHR1cmUoKSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBSZW5kZXJlcjExOjpjb3B5VG9SZW5kZXJUYXJnZXQoVGV4dHVyZVN0b3JhZ2VJbnRlcmZh
Y2VDdWJlICpkZXN0LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKnNvdXJjZSkKK3sKKyAg
ICBpZiAoc291cmNlICYmIGRlc3QpCisgICAgeworICAgICAgICBUZXh0dXJlU3RvcmFnZTExX0N1
YmUgKnNvdXJjZTExID0gVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjptYWtlVGV4dHVyZVN0b3JhZ2Ux
MV9DdWJlKHNvdXJjZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgICAgICBUZXh0dXJlU3Rv
cmFnZTExX0N1YmUgKmRlc3QxMSA9IFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6bWFrZVRleHR1cmVT
dG9yYWdlMTFfQ3ViZShkZXN0LT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7CisKKyAgICAgICAgbURl
dmljZUNvbnRleHQtPkNvcHlSZXNvdXJjZShkZXN0MTEtPmdldEJhc2VUZXh0dXJlKCksIHNvdXJj
ZTExLT5nZXRCYXNlVGV4dHVyZSgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbmRlcmVyMTE6OmNvcHlJbWFnZShnbDo6RnJh
bWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBH
TGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIEdM
aW50IGxldmVsKQoreworICAgIGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVyID0gZnJhbWVi
dWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpOworICAgIGlmICghY29sb3JidWZmZXIpCisgICAg
eworICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgY29sb3IgYnVmZmVyIGZyb20g
dGhlIGZyYW1lIGJ1ZmZlci4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgUmVuZGVyVGFyZ2V0MTEgKnNvdXJjZVJlbmRl
clRhcmdldCA9IFJlbmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEoY29sb3JidWZmZXIt
PmdldFJlbmRlclRhcmdldCgpKTsKKyAgICBpZiAoIXNvdXJjZVJlbmRlclRhcmdldCkKKyAgICB7
CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0IGZyb20g
dGhlIGZyYW1lIGJ1ZmZlci4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpz
b3VyY2UgPSBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldFNoYWRlclJlc291cmNlVmlldygpOworICAg
IGlmICghc291cmNlKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhl
IHJlbmRlciB0YXJnZXQgdmlldyBmcm9tIHRoZSByZW5kZXIgdGFyZ2V0LiIpOworICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICB9CisKKyAgICBU
ZXh0dXJlU3RvcmFnZTExXzJEICpzdG9yYWdlMTEgPSBUZXh0dXJlU3RvcmFnZTExXzJEOjptYWtl
VGV4dHVyZVN0b3JhZ2UxMV8yRChzdG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7CisgICAg
aWYgKCFzdG9yYWdlMTEpCisgICAgeworICAgICAgICBzb3VyY2UtPlJlbGVhc2UoKTsKKyAgICAg
ICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIHRleHR1cmUgc3RvcmFnZSBmcm9tIHRoZSBk
ZXN0aW5hdGlvbi4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
LCBmYWxzZSk7CisgICAgfQorCisgICAgUmVuZGVyVGFyZ2V0MTEgKmRlc3RSZW5kZXJUYXJnZXQg
PSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKHN0b3JhZ2UxMS0+Z2V0UmVuZGVy
VGFyZ2V0KGxldmVsKSk7CisgICAgaWYgKCFkZXN0UmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAg
ICAgc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRo
ZSByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIGRlc3RpbmF0aW9uIHN0b3JhZ2UuIik7CisgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAg
IElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3QgPSBkZXN0UmVuZGVyVGFyZ2V0LT5nZXRSZW5k
ZXJUYXJnZXRWaWV3KCk7CisgICAgaWYgKCFkZXN0KQorICAgIHsKKyAgICAgICAgc291cmNlLT5S
ZWxlYXNlKCk7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFy
Z2V0IHZpZXcgZnJvbSB0aGUgZGVzdGluYXRpb24gcmVuZGVyIHRhcmdldC4iKTsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAg
Z2w6OlJlY3RhbmdsZSBkZXN0UmVjdDsKKyAgICBkZXN0UmVjdC54ID0geG9mZnNldDsKKyAgICBk
ZXN0UmVjdC55ID0geW9mZnNldDsKKyAgICBkZXN0UmVjdC53aWR0aCA9IHNvdXJjZVJlY3Qud2lk
dGg7CisgICAgZGVzdFJlY3QuaGVpZ2h0ID0gc291cmNlUmVjdC5oZWlnaHQ7CisKKyAgICBib29s
IHJldCA9IGNvcHlUZXh0dXJlKHNvdXJjZSwgc291cmNlUmVjdCwgc291cmNlUmVuZGVyVGFyZ2V0
LT5nZXRXaWR0aCgpLCBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdFJlY3QsIGRlc3RSZW5kZXJUYXJnZXQtPmdldFdp
ZHRoKCksIGRlc3RSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLCBkZXN0Rm9ybWF0KTsKKworICAg
IHNvdXJjZS0+UmVsZWFzZSgpOworICAgIGRlc3QtPlJlbGVhc2UoKTsKKworICAgIHJldHVybiBy
ZXQ7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Y29weUltYWdlKGdsOjpGcmFtZWJ1ZmZlciAqZnJh
bWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCkKK3sKKyAgICBnbDo6UmVuZGVyYnVmZmVyICpjb2xvcmJ1ZmZlciA9IGZy
YW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKTsKKyAgICBpZiAoIWNvbG9yYnVmZmVyKQor
ICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIGNvbG9yIGJ1ZmZlciBm
cm9tIHRoZSBmcmFtZSBidWZmZXIuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDExICpzb3VyY2VS
ZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKGNvbG9yYnVm
ZmVyLT5nZXRSZW5kZXJUYXJnZXQoKSk7CisgICAgaWYgKCFzb3VyY2VSZW5kZXJUYXJnZXQpCisg
ICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRhcmdldCBm
cm9tIHRoZSBmcmFtZSBidWZmZXIuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIElEM0QxMVNoYWRlclJlc291cmNlVmll
dyAqc291cmNlID0gc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRTaGFkZXJSZXNvdXJjZVZpZXcoKTsK
KyAgICBpZiAoIXNvdXJjZSkKKyAgICB7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZl
IHRoZSByZW5kZXIgdGFyZ2V0IHZpZXcgZnJvbSB0aGUgcmVuZGVyIHRhcmdldC4iKTsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisg
ICAgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlICpzdG9yYWdlMTEgPSBUZXh0dXJlU3RvcmFnZTExX0N1
YmU6Om1ha2VUZXh0dXJlU3RvcmFnZTExX0N1YmUoc3RvcmFnZS0+Z2V0U3RvcmFnZUluc3RhbmNl
KCkpOworICAgIGlmICghc3RvcmFnZTExKQorICAgIHsKKyAgICAgICAgc291cmNlLT5SZWxlYXNl
KCk7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSB0ZXh0dXJlIHN0b3JhZ2Ug
ZnJvbSB0aGUgZGVzdGluYXRpb24uIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDExICpkZXN0UmVu
ZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShzdG9yYWdlMTEt
PmdldFJlbmRlclRhcmdldCh0YXJnZXQsIGxldmVsKSk7CisgICAgaWYgKCFkZXN0UmVuZGVyVGFy
Z2V0KQorICAgIHsKKyAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIEVSUigiRmFp
bGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIGRlc3RpbmF0aW9uIHN0
b3JhZ2UuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFs
c2UpOworICAgIH0KKworICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3QgPSBkZXN0UmVu
ZGVyVGFyZ2V0LT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7CisgICAgaWYgKCFkZXN0KQorICAgIHsK
KyAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJp
ZXZlIHRoZSByZW5kZXIgdGFyZ2V0IHZpZXcgZnJvbSB0aGUgZGVzdGluYXRpb24gcmVuZGVyIHRh
cmdldC4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxz
ZSk7CisgICAgfQorCisgICAgZ2w6OlJlY3RhbmdsZSBkZXN0UmVjdDsKKyAgICBkZXN0UmVjdC54
ID0geG9mZnNldDsKKyAgICBkZXN0UmVjdC55ID0geW9mZnNldDsKKyAgICBkZXN0UmVjdC53aWR0
aCA9IHNvdXJjZVJlY3Qud2lkdGg7CisgICAgZGVzdFJlY3QuaGVpZ2h0ID0gc291cmNlUmVjdC5o
ZWlnaHQ7CisKKyAgICBib29sIHJldCA9IGNvcHlUZXh0dXJlKHNvdXJjZSwgc291cmNlUmVjdCwg
c291cmNlUmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpLCBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldEhl
aWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdFJlY3QsIGRlc3RS
ZW5kZXJUYXJnZXQtPmdldFdpZHRoKCksIGRlc3RSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLCBk
ZXN0Rm9ybWF0KTsKKworICAgIHNvdXJjZS0+UmVsZWFzZSgpOworICAgIGRlc3QtPlJlbGVhc2Uo
KTsKKworICAgIHJldHVybiByZXQ7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Y29weVRleHR1cmUo
SUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNv
dXJjZUFyZWEsIHVuc2lnbmVkIGludCBzb3VyY2VXaWR0aCwgdW5zaWduZWQgaW50IHNvdXJjZUhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0Vmll
dyAqZGVzdCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEsIHVuc2lnbmVkIGludCBkZXN0
V2lkdGgsIHVuc2lnbmVkIGludCBkZXN0SGVpZ2h0LCBHTGVudW0gZGVzdEZvcm1hdCkKK3sKKyAg
ICBIUkVTVUxUIHJlc3VsdDsKKworICAgIGlmICghbUNvcHlSZXNvdXJjZXNJbml0aWFsaXplZCkK
KyAgICB7CisgICAgICAgIEFTU0VSVCghbUNvcHlWQiAmJiAhbUNvcHlTYW1wbGVyICYmICFtQ29w
eUlMICYmICFtQ29weVZTICYmICFtQ29weVJHQkFQUyAmJiAhbUNvcHlSR0JQUyAmJiAhbUNvcHlM
dW1QUyAmJiAhbUNvcHlMdW1BbHBoYVBTKTsKKworICAgICAgICBEM0QxMV9CVUZGRVJfREVTQyB2
YkRlc2M7CisgICAgICAgIHZiRGVzYy5CeXRlV2lkdGggPSBzaXplb2YoZDNkMTE6OlBvc2l0aW9u
VGV4Q29vcmRWZXJ0ZXgpICogNDsKKyAgICAgICAgdmJEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0Vf
RFlOQU1JQzsKKyAgICAgICAgdmJEZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfVkVSVEVYX0JV
RkZFUjsKKyAgICAgICAgdmJEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VTU19X
UklURTsKKyAgICAgICAgdmJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgIHZiRGVzYy5TdHJ1
Y3R1cmVCeXRlU3RyaWRlID0gMDsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVC
dWZmZXIoJnZiRGVzYywgTlVMTCwgJm1Db3B5VkIpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVE
KHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1Db3B5VkIsICJSZW5kZXJl
cjExIGNvcHkgdGV4dHVyZSB2ZXJ0ZXggYnVmZmVyIik7CisKKyAgICAgICAgRDNEMTFfU0FNUExF
Ul9ERVNDIHNhbXBsZXJEZXNjOworICAgICAgICBzYW1wbGVyRGVzYy5GaWx0ZXIgPSBEM0QxMV9G
SUxURVJfTUlOX01BR19NSVBfTElORUFSOworICAgICAgICBzYW1wbGVyRGVzYy5BZGRyZXNzVSA9
IEQzRDExX1RFWFRVUkVfQUREUkVTU19DTEFNUDsKKyAgICAgICAgc2FtcGxlckRlc2MuQWRkcmVz
c1YgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7CisgICAgICAgIHNhbXBsZXJEZXNjLkFk
ZHJlc3NXID0gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgICAgICBzYW1wbGVyRGVz
Yy5NaXBMT0RCaWFzID0gMC4wZjsKKyAgICAgICAgc2FtcGxlckRlc2MuTWF4QW5pc290cm9weSA9
IDA7CisgICAgICAgIHNhbXBsZXJEZXNjLkNvbXBhcmlzb25GdW5jID0gRDNEMTFfQ09NUEFSSVNP
Tl9ORVZFUjsKKyAgICAgICAgc2FtcGxlckRlc2MuQm9yZGVyQ29sb3JbMF0gPSAwLjBmOworICAg
ICAgICBzYW1wbGVyRGVzYy5Cb3JkZXJDb2xvclsxXSA9IDAuMGY7CisgICAgICAgIHNhbXBsZXJE
ZXNjLkJvcmRlckNvbG9yWzJdID0gMC4wZjsKKyAgICAgICAgc2FtcGxlckRlc2MuQm9yZGVyQ29s
b3JbM10gPSAwLjBmOworICAgICAgICBzYW1wbGVyRGVzYy5NaW5MT0QgPSAwLjBmOworICAgICAg
ICBzYW1wbGVyRGVzYy5NYXhMT0QgPSAwLjBmOworCisgICAgICAgIHJlc3VsdCA9IG1EZXZpY2Ut
PkNyZWF0ZVNhbXBsZXJTdGF0ZSgmc2FtcGxlckRlc2MsICZtQ29weVNhbXBsZXIpOworICAgICAg
ICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1l
KG1Db3B5U2FtcGxlciwgIlJlbmRlcmVyMTEgY29weSBzYW1wbGVyIik7CisKKyAgICAgICAgRDNE
MTFfSU5QVVRfRUxFTUVOVF9ERVNDIHF1YWRMYXlvdXRbXSA9CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHsgIlBPU0lUSU9OIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAwLCAwLCBEM0Qx
MV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEsIDAgfSwKKyAgICAgICAgICAgIHsgIlRFWENPT1JEIiwg
MCwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAwLCA4LCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVY
X0RBVEEsIDAgfSwKKyAgICAgICAgfTsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVh
dGVJbnB1dExheW91dChxdWFkTGF5b3V0LCAyLCBnX1ZTX1Bhc3N0aHJvdWdoLCBzaXplb2YoZ19W
U19QYXNzdGhyb3VnaCksICZtQ29weUlMKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1
bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ29weUlMLCAiUmVuZGVyZXIxMSBj
b3B5IHRleHR1cmUgaW5wdXQgbGF5b3V0Iik7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+
Q3JlYXRlVmVydGV4U2hhZGVyKGdfVlNfUGFzc3Rocm91Z2gsIHNpemVvZihnX1ZTX1Bhc3N0aHJv
dWdoKSwgTlVMTCwgJm1Db3B5VlMpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkp
OworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1Db3B5VlMsICJSZW5kZXJlcjExIGNvcHkg
dGV4dHVyZSB2ZXJ0ZXggc2hhZGVyIik7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3Jl
YXRlUGl4ZWxTaGFkZXIoZ19QU19QYXNzdGhyb3VnaFJHQkEsIHNpemVvZihnX1BTX1Bhc3N0aHJv
dWdoUkdCQSksIE5VTEwsICZtQ29weVJHQkFQUyk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQo
cmVzdWx0KSk7CisgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUNvcHlSR0JBUFMsICJSZW5k
ZXJlcjExIGNvcHkgdGV4dHVyZSBSR0JBIHBpeGVsIHNoYWRlciIpOworCisgICAgICAgIHJlc3Vs
dCA9IG1EZXZpY2UtPkNyZWF0ZVBpeGVsU2hhZGVyKGdfUFNfUGFzc3Rocm91Z2hSR0IsIHNpemVv
ZihnX1BTX1Bhc3N0aHJvdWdoUkdCKSwgTlVMTCwgJm1Db3B5UkdCUFMpOworICAgICAgICBBU1NF
UlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1Db3B5
UkdCUFMsICJSZW5kZXJlcjExIGNvcHkgdGV4dHVyZSBSR0IgcGl4ZWwgc2hhZGVyIik7CisKKyAg
ICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUGl4ZWxTaGFkZXIoZ19QU19QYXNzdGhyb3Vn
aEx1bSwgc2l6ZW9mKGdfUFNfUGFzc3Rocm91Z2hMdW0pLCBOVUxMLCAmbUNvcHlMdW1QUyk7Cisg
ICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgICAgIGQzZDExOjpTZXREZWJ1
Z05hbWUobUNvcHlMdW1QUywgIlJlbmRlcmVyMTEgY29weSB0ZXh0dXJlIGx1bWluYW5jZSBwaXhl
bCBzaGFkZXIiKTsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVQaXhlbFNoYWRl
cihnX1BTX1Bhc3N0aHJvdWdoTHVtQWxwaGEsIHNpemVvZihnX1BTX1Bhc3N0aHJvdWdoTHVtQWxw
aGEpLCBOVUxMLCAmbUNvcHlMdW1BbHBoYVBTKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChy
ZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ29weUx1bUFscGhhUFMsICJS
ZW5kZXJlcjExIGNvcHkgdGV4dHVyZSBsdW1pbmFuY2UgYWxwaGEgcGl4ZWwgc2hhZGVyIik7CisK
KyAgICAgICAgbUNvcHlSZXNvdXJjZXNJbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisgICAg
Ly8gVmVyaWZ5IHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZWEgc2l6ZXMKKyAgICBpZiAo
c291cmNlQXJlYS54IDwgMCB8fCBzb3VyY2VBcmVhLnggKyBzb3VyY2VBcmVhLndpZHRoID4gc3Rh
dGljX2Nhc3Q8aW50Pihzb3VyY2VXaWR0aCkgfHwKKyAgICAgICAgc291cmNlQXJlYS55IDwgMCB8
fCBzb3VyY2VBcmVhLnkgKyBzb3VyY2VBcmVhLmhlaWdodCA+IHN0YXRpY19jYXN0PGludD4oc291
cmNlSGVpZ2h0KSB8fAorICAgICAgICBkZXN0QXJlYS54IDwgMCB8fCBkZXN0QXJlYS54ICsgZGVz
dEFyZWEud2lkdGggPiBzdGF0aWNfY2FzdDxpbnQ+KGRlc3RXaWR0aCkgfHwKKyAgICAgICAgZGVz
dEFyZWEueSA8IDAgfHwgZGVzdEFyZWEueSArIGRlc3RBcmVhLmhlaWdodCA+IHN0YXRpY19jYXN0
PGludD4oZGVzdEhlaWdodCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfVkFMVUUsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvLyBTZXQgdmVydGljZXMKKyAgICBE
M0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7CisgICAgcmVzdWx0ID0gbURl
dmljZUNvbnRleHQtPk1hcChtQ29weVZCLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwg
Jm1hcHBlZFJlc291cmNlKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAg
ICBFUlIoIkZhaWxlZCB0byBtYXAgdmVydGV4IGJ1ZmZlciBmb3IgdGV4dHVyZSBjb3B5LCBIUkVT
VUxUOiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIGQzZDExOjpQb3NpdGlvblRleENvb3JkVmVy
dGV4ICp2ZXJ0aWNlcyA9IHN0YXRpY19jYXN0PGQzZDExOjpQb3NpdGlvblRleENvb3JkVmVydGV4
Kj4obWFwcGVkUmVzb3VyY2UucERhdGEpOworCisgICAgLy8gQ3JlYXRlIGEgcXVhZCBpbiBob21v
Z2VuZW91cyBjb29yZGluYXRlcworICAgIGZsb2F0IHgxID0gKGRlc3RBcmVhLnggLyBmbG9hdChk
ZXN0V2lkdGgpKSAqIDIuMGYgLSAxLjBmOworICAgIGZsb2F0IHkxID0gKChkZXN0SGVpZ2h0IC0g
ZGVzdEFyZWEueSAtIGRlc3RBcmVhLmhlaWdodCkgLyBmbG9hdChkZXN0SGVpZ2h0KSkgKiAyLjBm
IC0gMS4wZjsKKyAgICBmbG9hdCB4MiA9ICgoZGVzdEFyZWEueCArIGRlc3RBcmVhLndpZHRoKSAv
IGZsb2F0KGRlc3RXaWR0aCkpICogMi4wZiAtIDEuMGY7CisgICAgZmxvYXQgeTIgPSAoKGRlc3RI
ZWlnaHQgLSBkZXN0QXJlYS55KSAvIGZsb2F0KGRlc3RIZWlnaHQpKSAqIDIuMGYgLSAxLjBmOwor
CisgICAgZmxvYXQgdTEgPSBzb3VyY2VBcmVhLnggLyBmbG9hdChzb3VyY2VXaWR0aCk7CisgICAg
ZmxvYXQgdjEgPSBzb3VyY2VBcmVhLnkgLyBmbG9hdChzb3VyY2VIZWlnaHQpOworICAgIGZsb2F0
IHUyID0gKHNvdXJjZUFyZWEueCArIHNvdXJjZUFyZWEud2lkdGgpIC8gZmxvYXQoc291cmNlV2lk
dGgpOworICAgIGZsb2F0IHYyID0gKHNvdXJjZUFyZWEueSArIHNvdXJjZUFyZWEuaGVpZ2h0KSAv
IGZsb2F0KHNvdXJjZUhlaWdodCk7CisKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZl
cnRleCgmdmVydGljZXNbMF0sIHgxLCB5MSwgdTEsIHYyKTsKKyAgICBkM2QxMTo6U2V0UG9zaXRp
b25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbMV0sIHgxLCB5MiwgdTEsIHYxKTsKKyAgICBkM2Qx
MTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbMl0sIHgyLCB5MSwgdTIsIHYy
KTsKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbM10sIHgy
LCB5MiwgdTIsIHYxKTsKKworICAgIG1EZXZpY2VDb250ZXh0LT5Vbm1hcChtQ29weVZCLCAwKTsK
KworICAgIHN0YXRpYyBVSU5UIHN0cmlkZSA9IHNpemVvZihkM2QxMTo6UG9zaXRpb25UZXhDb29y
ZFZlcnRleCk7CisgICAgc3RhdGljIFVJTlQgc3RhcnRJZHggPSAwOworICAgIG1EZXZpY2VDb250
ZXh0LT5JQVNldFZlcnRleEJ1ZmZlcnMoMCwgMSwgJm1Db3B5VkIsICZzdHJpZGUsICZzdGFydElk
eCk7CisKKyAgICAvLyBBcHBseSBzdGF0ZQorICAgIG1EZXZpY2VDb250ZXh0LT5PTVNldEJsZW5k
U3RhdGUoTlVMTCwgTlVMTCwgMHhGRkZGRkZGKTsKKyAgICBtRGV2aWNlQ29udGV4dC0+T01TZXRE
ZXB0aFN0ZW5jaWxTdGF0ZShOVUxMLCAweEZGRkZGRkZGKTsKKyAgICBtRGV2aWNlQ29udGV4dC0+
UlNTZXRTdGF0ZShOVUxMKTsKKworICAgIC8vIEFwcGx5IHNoYWRlcnMKKyAgICBtRGV2aWNlQ29u
dGV4dC0+SUFTZXRJbnB1dExheW91dChtQ29weUlMKTsKKyAgICBtRGV2aWNlQ29udGV4dC0+SUFT
ZXRQcmltaXRpdmVUb3BvbG9neShEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xFU1RSSVAp
OworICAgIG1EZXZpY2VDb250ZXh0LT5WU1NldFNoYWRlcihtQ29weVZTLCBOVUxMLCAwKTsKKwor
ICAgIElEM0QxMVBpeGVsU2hhZGVyICpwcyA9IE5VTEw7CisgICAgc3dpdGNoKGRlc3RGb3JtYXQp
CisgICAgeworICAgICAgY2FzZSBHTF9SR0JBOiAgICAgICAgICAgIHBzID0gbUNvcHlSR0JBUFM7
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCOiAgICAgICAgICAgICBwcyA9IG1Db3B5UkdC
UFM7ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FMUEhBOiAgICAgICAgICAgcHMgPSBtQ29w
eVJHQkFQUzsgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9CR1JBX0VYVDogICAgICAgIHBzID0g
bUNvcHlSR0JBUFM7ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOiAgICAgICBw
cyA9IG1Db3B5THVtUFM7ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBI
QTogcHMgPSBtQ29weUx1bUFscGhhUFM7IGJyZWFrOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFC
TEUoKTsgIHBzID0gTlVMTDsgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBtRGV2aWNl
Q29udGV4dC0+UFNTZXRTaGFkZXIocHMsIE5VTEwsIDApOworICAgIG1EZXZpY2VDb250ZXh0LT5H
U1NldFNoYWRlcihOVUxMLCBOVUxMLCAwKTsKKworICAgIC8vIFVuc2V0IHRoZSBjdXJyZW50bHkg
Ym91bmQgc2hhZGVyIHJlc291cmNlIHRvIGF2b2lkIGNvbmZsaWN0cworICAgIHN0YXRpYyBJRDNE
MTFTaGFkZXJSZXNvdXJjZVZpZXcgKmNvbnN0IG51bGxTUlYgPSBOVUxMOworICAgIG1EZXZpY2VD
b250ZXh0LT5QU1NldFNoYWRlclJlc291cmNlcygwLCAxLCAmbnVsbFNSVik7CisKKyAgICAvLyBB
cHBseSByZW5kZXIgdGFyZ2V0CisgICAgc2V0T25lVGltZVJlbmRlclRhcmdldChkZXN0KTsKKwor
ICAgIC8vIFNldCB0aGUgdmlld3BvcnQKKyAgICBEM0QxMV9WSUVXUE9SVCB2aWV3cG9ydDsKKyAg
ICB2aWV3cG9ydC5Ub3BMZWZ0WCA9IDA7CisgICAgdmlld3BvcnQuVG9wTGVmdFkgPSAwOworICAg
IHZpZXdwb3J0LldpZHRoID0gZGVzdFdpZHRoOworICAgIHZpZXdwb3J0LkhlaWdodCA9IGRlc3RI
ZWlnaHQ7CisgICAgdmlld3BvcnQuTWluRGVwdGggPSAwLjBmOworICAgIHZpZXdwb3J0Lk1heERl
cHRoID0gMS4wZjsKKyAgICBtRGV2aWNlQ29udGV4dC0+UlNTZXRWaWV3cG9ydHMoMSwgJnZpZXdw
b3J0KTsKKworICAgIC8vIEFwcGx5IHRleHR1cmVzCisgICAgbURldmljZUNvbnRleHQtPlBTU2V0
U2hhZGVyUmVzb3VyY2VzKDAsIDEsICZzb3VyY2UpOworICAgIG1EZXZpY2VDb250ZXh0LT5QU1Nl
dFNhbXBsZXJzKDAsIDEsICZtQ29weVNhbXBsZXIpOworCisgICAgLy8gRHJhdyB0aGUgcXVhZAor
ICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3KDQsIDApOworCisgICAgLy8gVW5iaW5kIHRleHR1cmVz
IGFuZCByZW5kZXIgdGFyZ2V0cyBhbmQgdmVydGV4IGJ1ZmZlcgorICAgIG1EZXZpY2VDb250ZXh0
LT5QU1NldFNoYWRlclJlc291cmNlcygwLCAxLCAmbnVsbFNSVik7CisKKyAgICB1bmFwcGx5UmVu
ZGVyVGFyZ2V0cygpOworCisgICAgVUlOVCB6ZXJvID0gMDsKKyAgICBJRDNEMTFCdWZmZXIgKmNv
bnN0IG51bGxCdWZmZXIgPSBOVUxMOworICAgIG1EZXZpY2VDb250ZXh0LT5JQVNldFZlcnRleEJ1
ZmZlcnMoMCwgMSwgJm51bGxCdWZmZXIsICZ6ZXJvLCAmemVybyk7CisKKyAgICBtYXJrQWxsU3Rh
dGVEaXJ0eSgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6dW5h
cHBseVJlbmRlclRhcmdldHMoKQoreworICAgIHNldE9uZVRpbWVSZW5kZXJUYXJnZXQoTlVMTCk7
Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6c2V0T25lVGltZVJlbmRlclRhcmdldChJRDNEMTFSZW5k
ZXJUYXJnZXRWaWV3ICpyZW5kZXJUYXJnZXRWaWV3KQoreworICAgIElEM0QxMVJlbmRlclRhcmdl
dFZpZXcgKnJ0dkFycmF5W2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTXSA9IHtO
VUxMfTsKKworICAgIHJ0dkFycmF5WzBdID0gcmVuZGVyVGFyZ2V0VmlldzsKKworICAgIG1EZXZp
Y2VDb250ZXh0LT5PTVNldFJlbmRlclRhcmdldHMoZ2V0TWF4UmVuZGVyVGFyZ2V0cygpLCBydHZB
cnJheSwgTlVMTCk7CisKKyAgICAvLyBEbyBub3QgcHJlc2VydmUgdGhlIHNlcmlhbCBmb3IgdGhp
cyBvbmUtdGltZS11c2UgcmVuZGVyIHRhcmdldAorICAgIGZvciAodW5zaWduZWQgaW50IHJ0SW5k
ZXggPSAwOyBydEluZGV4IDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM7IHJ0
SW5kZXgrKykKKyAgICB7CisgICAgICAgIG1BcHBsaWVkUmVuZGVyVGFyZ2V0U2VyaWFsc1tydElu
ZGV4XSA9IDA7CisgICAgfQorfQorCitSZW5kZXJUYXJnZXQgKlJlbmRlcmVyMTE6OmNyZWF0ZVJl
bmRlclRhcmdldChTd2FwQ2hhaW4gKnN3YXBDaGFpbiwgYm9vbCBkZXB0aCkKK3sKKyAgICBTd2Fw
Q2hhaW4xMSAqc3dhcENoYWluMTEgPSBTd2FwQ2hhaW4xMTo6bWFrZVN3YXBDaGFpbjExKHN3YXBD
aGFpbik7CisgICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldCA9IE5VTEw7CisKKyAgICBp
ZiAoZGVwdGgpCisgICAgeworICAgICAgICAvLyBOb3RlOiBkZXB0aCBzdGVuY2lsIG1heSBiZSBO
VUxMIGZvciAwIHNpemVkIHN1cmZhY2VzCisgICAgICAgIHJlbmRlclRhcmdldCA9IG5ldyBSZW5k
ZXJUYXJnZXQxMSh0aGlzLCBzd2FwQ2hhaW4xMS0+Z2V0RGVwdGhTdGVuY2lsKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwQ2hhaW4xMS0+Z2V0RGVwdGhT
dGVuY2lsVGV4dHVyZSgpLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3dhcENoYWluMTEtPmdldFdpZHRoKCksIHN3YXBDaGFpbjExLT5nZXRIZWlnaHQo
KSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8vIE5vdGU6IHJlbmRlciB0YXJn
ZXQgbWF5IGJlIE5VTEwgZm9yIDAgc2l6ZWQgc3VyZmFjZXMKKyAgICAgICAgcmVuZGVyVGFyZ2V0
ID0gbmV3IFJlbmRlclRhcmdldDExKHRoaXMsIHN3YXBDaGFpbjExLT5nZXRSZW5kZXJUYXJnZXQo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YXBDaGFpbjEx
LT5nZXRPZmZzY3JlZW5UZXh0dXJlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzd2FwQ2hhaW4xMS0+Z2V0UmVuZGVyVGFyZ2V0U2hhZGVyUmVzb3VyY2UoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YXBDaGFpbjExLT5n
ZXRXaWR0aCgpLCBzd2FwQ2hhaW4xMS0+Z2V0SGVpZ2h0KCkpOworICAgIH0KKyAgICByZXR1cm4g
cmVuZGVyVGFyZ2V0OworfQorCitSZW5kZXJUYXJnZXQgKlJlbmRlcmVyMTE6OmNyZWF0ZVJlbmRl
clRhcmdldChpbnQgd2lkdGgsIGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2Ft
cGxlcywgYm9vbCBkZXB0aCkKK3sKKyAgICBSZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0g
bmV3IFJlbmRlclRhcmdldDExKHRoaXMsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgc2FtcGxlcywg
ZGVwdGgpOworICAgIHJldHVybiByZW5kZXJUYXJnZXQ7Cit9CisKK1NoYWRlckV4ZWN1dGFibGUg
KlJlbmRlcmVyMTE6OmxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3Qg
bGVuZ3RoLCByeDo6U2hhZGVyVHlwZSB0eXBlKQoreworICAgIFNoYWRlckV4ZWN1dGFibGUxMSAq
ZXhlY3V0YWJsZSA9IE5VTEw7CisKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgY2Fz
ZSByeDo6U0hBREVSX1ZFUlRFWDoKKyAgICAgICAgeworICAgICAgICAgICAgSUQzRDExVmVydGV4
U2hhZGVyICp2c2hhZGVyID0gTlVMTDsKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURl
dmljZS0+Q3JlYXRlVmVydGV4U2hhZGVyKGZ1bmN0aW9uLCBsZW5ndGgsIE5VTEwsICZ2c2hhZGVy
KTsKKyAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgICAg
IGlmICh2c2hhZGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUg
PSBuZXcgU2hhZGVyRXhlY3V0YWJsZTExKGZ1bmN0aW9uLCBsZW5ndGgsIHZzaGFkZXIpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSByeDo6U0hB
REVSX1BJWEVMOgorICAgICAgICB7CisgICAgICAgICAgICBJRDNEMTFQaXhlbFNoYWRlciAqcHNo
YWRlciA9IE5VTEw7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0
ZVBpeGVsU2hhZGVyKGZ1bmN0aW9uLCBsZW5ndGgsIE5VTEwsICZwc2hhZGVyKTsKKyAgICAgICAg
ICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgICAgIGlmIChwc2hhZGVy
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBuZXcgU2hhZGVy
RXhlY3V0YWJsZTExKGZ1bmN0aW9uLCBsZW5ndGgsIHBzaGFkZXIpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSByeDo6U0hBREVSX0dFT01FVFJZ
OgorICAgICAgICB7CisgICAgICAgICAgICBJRDNEMTFHZW9tZXRyeVNoYWRlciAqZ3NoYWRlciA9
IE5VTEw7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZUdlb21l
dHJ5U2hhZGVyKGZ1bmN0aW9uLCBsZW5ndGgsIE5VTEwsICZnc2hhZGVyKTsKKyAgICAgICAgICAg
IEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgICAgIGlmIChnc2hhZGVyKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBuZXcgU2hhZGVyRXhl
Y3V0YWJsZTExKGZ1bmN0aW9uLCBsZW5ndGgsIGdzaGFkZXIpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIGV4ZWN1dGFibGU7Cit9
CisKK1NoYWRlckV4ZWN1dGFibGUgKlJlbmRlcmVyMTE6OmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6
OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGNoYXIgKnNoYWRlckhMU0wsIHJ4OjpTaGFkZXJUeXBl
IHR5cGUpCit7CisgICAgY29uc3QgY2hhciAqcHJvZmlsZSA9IE5VTEw7CisKKyAgICBzd2l0Y2gg
KHR5cGUpCisgICAgeworICAgICAgY2FzZSByeDo6U0hBREVSX1ZFUlRFWDoKKyAgICAgICAgcHJv
ZmlsZSA9ICJ2c180XzAiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ugcng6OlNIQURFUl9Q
SVhFTDoKKyAgICAgICAgcHJvZmlsZSA9ICJwc180XzAiOworICAgICAgICBicmVhazsKKyAgICAg
IGNhc2Ugcng6OlNIQURFUl9HRU9NRVRSWToKKyAgICAgICAgcHJvZmlsZSA9ICJnc180XzAiOwor
ICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIElEM0RCbG9iICpiaW5hcnkgPSAoSUQz
REJsb2IqKWNvbXBpbGVUb0JpbmFyeShpbmZvTG9nLCBzaGFkZXJITFNMLCBwcm9maWxlLCBEM0RD
T01QSUxFX09QVElNSVpBVElPTl9MRVZFTDAsIGZhbHNlKTsKKyAgICBpZiAoIWJpbmFyeSkKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBTaGFkZXJFeGVjdXRhYmxlICpleGVjdXRhYmxlID0g
bG9hZEV4ZWN1dGFibGUoKERXT1JEICopYmluYXJ5LT5HZXRCdWZmZXJQb2ludGVyKCksIGJpbmFy
eS0+R2V0QnVmZmVyU2l6ZSgpLCB0eXBlKTsKKyAgICBiaW5hcnktPlJlbGVhc2UoKTsKKworICAg
IHJldHVybiBleGVjdXRhYmxlOworfQorCitWZXJ0ZXhCdWZmZXIgKlJlbmRlcmVyMTE6OmNyZWF0
ZVZlcnRleEJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG5ldyBWZXJ0ZXhCdWZmZXIxMSh0aGlzKTsK
K30KKworSW5kZXhCdWZmZXIgKlJlbmRlcmVyMTE6OmNyZWF0ZUluZGV4QnVmZmVyKCkKK3sKKyAg
ICByZXR1cm4gbmV3IEluZGV4QnVmZmVyMTEodGhpcyk7Cit9CisKK0J1ZmZlclN0b3JhZ2UgKlJl
bmRlcmVyMTE6OmNyZWF0ZUJ1ZmZlclN0b3JhZ2UoKQoreworICAgIHJldHVybiBuZXcgQnVmZmVy
U3RvcmFnZTExKHRoaXMpOworfQorCitRdWVyeUltcGwgKlJlbmRlcmVyMTE6OmNyZWF0ZVF1ZXJ5
KEdMZW51bSB0eXBlKQoreworICAgIHJldHVybiBuZXcgUXVlcnkxMSh0aGlzLCB0eXBlKTsKK30K
KworRmVuY2VJbXBsICpSZW5kZXJlcjExOjpjcmVhdGVGZW5jZSgpCit7CisgICAgcmV0dXJuIG5l
dyBGZW5jZTExKHRoaXMpOworfQorCitib29sIFJlbmRlcmVyMTE6OmdldFJlbmRlclRhcmdldFJl
c291cmNlKGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVyLCB1bnNpZ25lZCBpbnQgKnN1YnJl
c291cmNlSW5kZXgsIElEM0QxMVRleHR1cmUyRCAqKnJlc291cmNlKQoreworICAgIEFTU0VSVChj
b2xvcmJ1ZmZlciAhPSBOVUxMKTsKKworICAgIFJlbmRlclRhcmdldDExICpyZW5kZXJUYXJnZXQg
PSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKGNvbG9yYnVmZmVyLT5nZXRSZW5k
ZXJUYXJnZXQoKSk7CisgICAgaWYgKHJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgICpzdWJy
ZXNvdXJjZUluZGV4ID0gcmVuZGVyVGFyZ2V0LT5nZXRTdWJyZXNvdXJjZUluZGV4KCk7CisKKyAg
ICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqY29sb3JCdWZmZXJSVFYgPSByZW5kZXJUYXJn
ZXQtPmdldFJlbmRlclRhcmdldFZpZXcoKTsKKyAgICAgICAgaWYgKGNvbG9yQnVmZmVyUlRWKQor
ICAgICAgICB7CisgICAgICAgICAgICBJRDNEMTFSZXNvdXJjZSAqdGV4dHVyZVJlc291cmNlID0g
TlVMTDsKKyAgICAgICAgICAgIGNvbG9yQnVmZmVyUlRWLT5HZXRSZXNvdXJjZSgmdGV4dHVyZVJl
c291cmNlKTsKKyAgICAgICAgICAgIGNvbG9yQnVmZmVyUlRWLT5SZWxlYXNlKCk7CisKKyAgICAg
ICAgICAgIGlmICh0ZXh0dXJlUmVzb3VyY2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgSFJFU1VMVCByZXN1bHQgPSB0ZXh0dXJlUmVzb3VyY2UtPlF1ZXJ5SW50ZXJmYWNlKElJRF9J
RDNEMTFUZXh0dXJlMkQsICh2b2lkKiopcmVzb3VyY2UpOworICAgICAgICAgICAgICAgIHRleHR1
cmVSZXNvdXJjZS0+UmVsZWFzZSgpOworCisgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChy
ZXN1bHQpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIGV4dHJhY3QgdGhlIElE
M0QxMVRleHR1cmUyRCBmcm9tIHRoZSByZW5kZXIgdGFyZ2V0IHJlc291cmNlLCAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAiSFJFU1VMVDogMHglWC4iLCByZXN1bHQpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBSZW5kZXJlcjExOjpibGl0UmVjdChnbDo6RnJhbWVidWZmZXIgKnJlYWRU
YXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlYWRSZWN0LCBnbDo6RnJhbWVidWZmZXIgKmRy
YXdUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRyYXdSZWN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQsIGJvb2wgYmxpdERlcHRoU3RlbmNpbCkK
K3sKKyAgICBpZiAoYmxpdFJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIGdsOjpSZW5kZXJi
dWZmZXIgKnJlYWRCdWZmZXIgPSByZWFkVGFyZ2V0LT5nZXRSZWFkQ29sb3JidWZmZXIoKTsKKwor
ICAgICAgICBpZiAoIXJlYWRCdWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFp
bGVkIHRvIHJldHJpZXZlIHRoZSByZWFkIGJ1ZmZlciBmcm9tIHRoZSByZWFkIGZyYW1lYnVmZmVy
LiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxz
ZSk7CisgICAgICAgIH0KKworICAgICAgICBSZW5kZXJUYXJnZXQgKnJlYWRSZW5kZXJUYXJnZXQg
PSByZWFkQnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBnbDo6SU1QTEVNRU5U
QVRJT05fTUFYX0RSQVdfQlVGRkVSUzsgY29sb3JBdHRhY2htZW50KyspCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChkcmF3VGFyZ2V0LT5pc0VuYWJsZWRDb2xvckF0dGFjaG1lbnQoY29sb3JB
dHRhY2htZW50KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6UmVuZGVyYnVm
ZmVyICpkcmF3QnVmZmVyID0gZHJhd1RhcmdldC0+Z2V0Q29sb3JidWZmZXIoY29sb3JBdHRhY2ht
ZW50KTsKKworICAgICAgICAgICAgICAgIGlmICghZHJhd0J1ZmZlcikKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSBkcmF3
IGJ1ZmZlciBmcm9tIHRoZSBkcmF3IGZyYW1lYnVmZmVyLiIpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXQgKmRyYXdSZW5kZXJUYXJnZXQg
PSBkcmF3QnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKTsKKworICAgICAgICAgICAgICAgIGlmICgh
YmxpdFJlbmRlcmJ1ZmZlclJlY3QocmVhZFJlY3QsIGRyYXdSZWN0LCByZWFkUmVuZGVyVGFyZ2V0
LCBkcmF3UmVuZGVyVGFyZ2V0LCBmYWxzZSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGJsaXREZXB0aFN0ZW5jaWwpCisgICAgewor
ICAgICAgICBnbDo6UmVuZGVyYnVmZmVyICpyZWFkQnVmZmVyID0gcmVhZFRhcmdldC0+Z2V0RGVw
dGhPclN0ZW5jaWxidWZmZXIoKTsKKyAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqZHJhd0J1ZmZl
ciA9IGRyYXdUYXJnZXQtPmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKCk7CisKKyAgICAgICAgaWYg
KCFyZWFkQnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRy
aWV2ZSB0aGUgcmVhZCBkZXB0aC1zdGVuY2lsIGJ1ZmZlciBmcm9tIHRoZSByZWFkIGZyYW1lYnVm
ZmVyLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBm
YWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWRyYXdCdWZmZXIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSBkcmF3IGRlcHRoLXN0ZW5j
aWwgYnVmZmVyIGZyb20gdGhlIGRyYXcgZnJhbWVidWZmZXIuIik7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIFJlbmRlclRhcmdldCAqcmVhZFJlbmRlclRhcmdldCA9IHJlYWRCdWZmZXItPmdldERlcHRo
U3RlbmNpbCgpOworICAgICAgICBSZW5kZXJUYXJnZXQgKmRyYXdSZW5kZXJUYXJnZXQgPSBkcmF3
QnVmZmVyLT5nZXREZXB0aFN0ZW5jaWwoKTsKKworICAgICAgICBpZiAoIWJsaXRSZW5kZXJidWZm
ZXJSZWN0KHJlYWRSZWN0LCBkcmF3UmVjdCwgcmVhZFJlbmRlclRhcmdldCwgZHJhd1JlbmRlclRh
cmdldCwgdHJ1ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbmRlcmVyMTE6OnJl
YWRQaXhlbHMoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgR0xpbnQgeCwgR0xpbnQgeSwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgb3V0cHV0UGl0Y2gsIGJvb2wg
cGFja1JldmVyc2VSb3dPcmRlciwgR0xpbnQgcGFja0FsaWdubWVudCwgdm9pZCogcGl4ZWxzKQor
eworICAgIElEM0QxMVRleHR1cmUyRCAqY29sb3JCdWZmZXJUZXh0dXJlID0gTlVMTDsKKyAgICB1
bnNpZ25lZCBpbnQgc3VicmVzb3VyY2VJbmRleCA9IDA7CisKKyAgICBnbDo6UmVuZGVyYnVmZmVy
ICpjb2xvcmJ1ZmZlciA9IGZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKTsKKworICAg
IGlmIChjb2xvcmJ1ZmZlciAmJiBnZXRSZW5kZXJUYXJnZXRSZXNvdXJjZShjb2xvcmJ1ZmZlciwg
JnN1YnJlc291cmNlSW5kZXgsICZjb2xvckJ1ZmZlclRleHR1cmUpKQorICAgIHsKKyAgICAgICAg
Z2w6OlJlY3RhbmdsZSBhcmVhOworICAgICAgICBhcmVhLnggPSB4OworICAgICAgICBhcmVhLnkg
PSB5OworICAgICAgICBhcmVhLndpZHRoID0gd2lkdGg7CisgICAgICAgIGFyZWEuaGVpZ2h0ID0g
aGVpZ2h0OworCisgICAgICAgIHJlYWRUZXh0dXJlRGF0YShjb2xvckJ1ZmZlclRleHR1cmUsIHN1
YnJlc291cmNlSW5kZXgsIGFyZWEsIGZvcm1hdCwgdHlwZSwgb3V0cHV0UGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICBwYWNrUmV2ZXJzZVJvd09yZGVyLCBwYWNrQWxpZ25tZW50LCBwaXhl
bHMpOworCisgICAgICAgIGNvbG9yQnVmZmVyVGV4dHVyZS0+UmVsZWFzZSgpOworICAgICAgICBj
b2xvckJ1ZmZlclRleHR1cmUgPSBOVUxMOworICAgIH0KK30KKworSW1hZ2UgKlJlbmRlcmVyMTE6
OmNyZWF0ZUltYWdlKCkKK3sKKyAgICByZXR1cm4gbmV3IEltYWdlMTEoKTsKK30KKwordm9pZCBS
ZW5kZXJlcjExOjpnZW5lcmF0ZU1pcG1hcChJbWFnZSAqZGVzdCwgSW1hZ2UgKnNyYykKK3sKKyAg
ICBJbWFnZTExICpkZXN0MTEgPSBJbWFnZTExOjptYWtlSW1hZ2UxMShkZXN0KTsKKyAgICBJbWFn
ZTExICpzcmMxMSA9IEltYWdlMTE6Om1ha2VJbWFnZTExKHNyYyk7CisgICAgSW1hZ2UxMTo6Z2Vu
ZXJhdGVNaXBtYXAoZGVzdDExLCBzcmMxMSk7Cit9CisKK1RleHR1cmVTdG9yYWdlICpSZW5kZXJl
cjExOjpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKFN3YXBDaGFpbiAqc3dhcENoYWluKQoreworICAg
IFN3YXBDaGFpbjExICpzd2FwQ2hhaW4xMSA9IFN3YXBDaGFpbjExOjptYWtlU3dhcENoYWluMTEo
c3dhcENoYWluKTsKKyAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlMTFfMkQodGhpcywgc3dh
cENoYWluMTEpOworfQorCitUZXh0dXJlU3RvcmFnZSAqUmVuZGVyZXIxMTo6Y3JlYXRlVGV4dHVy
ZVN0b3JhZ2UyRChpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2Fn
ZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQor
eworICAgIHJldHVybiBuZXcgVGV4dHVyZVN0b3JhZ2UxMV8yRCh0aGlzLCBsZXZlbHMsIGludGVy
bmFsZm9ybWF0LCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxlLCB3aWR0aCwgaGVpZ2h0KTsKK30KKwor
VGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyMTE6OmNyZWF0ZVRleHR1cmVTdG9yYWdlQ3ViZShpbnQg
bGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2FnZSwgYm9vbCBmb3JjZVJl
bmRlcmFibGUsIGludCBzaXplKQoreworICAgIHJldHVybiBuZXcgVGV4dHVyZVN0b3JhZ2UxMV9D
dWJlKHRoaXMsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHVzYWdlLCBmb3JjZVJlbmRlcmFibGUs
IHNpemUpOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRGYXN0UGl4ZWxDb3B5
U2l6ZShEWEdJX0ZPUk1BVCBzb3VyY2VGb3JtYXQsIEdMZW51bSBkZXN0Rm9ybWF0LCBHTGVudW0g
ZGVzdFR5cGUpCit7CisgICAgaWYgKHNvdXJjZUZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9BOF9VTk9S
TSAmJgorICAgICAgICBkZXN0Rm9ybWF0ICAgPT0gR0xfQUxQSEEgJiYKKyAgICAgICAgZGVzdFR5
cGUgICAgID09IEdMX1VOU0lHTkVEX0JZVEUpCisgICAgeworICAgICAgICByZXR1cm4gMTsKKyAg
ICB9CisgICAgZWxzZSBpZiAoc291cmNlRm9ybWF0ID09IERYR0lfRk9STUFUX1I4RzhCOEE4X1VO
T1JNICYmCisgICAgICAgICAgICAgZGVzdEZvcm1hdCAgID09IEdMX1JHQkEgJiYKKyAgICAgICAg
ICAgICBkZXN0VHlwZSAgICAgPT0gR0xfVU5TSUdORURfQllURSkKKyAgICB7CisgICAgICAgIHJl
dHVybiA0OworICAgIH0KKyAgICBlbHNlIGlmIChzb3VyY2VGb3JtYXQgPT0gRFhHSV9GT1JNQVRf
QjhHOFI4QThfVU5PUk0gJiYKKyAgICAgICAgICAgICBkZXN0Rm9ybWF0ICAgPT0gR0xfQkdSQV9F
WFQgJiYKKyAgICAgICAgICAgICBkZXN0VHlwZSAgICAgPT0gR0xfVU5TSUdORURfQllURSkKKyAg
ICB7CisgICAgICAgIHJldHVybiA0OworICAgIH0KKyAgICBlbHNlIGlmIChzb3VyY2VGb3JtYXQg
PT0gRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUICYmCisgICAgICAgICAgICAgZGVzdEZv
cm1hdCAgID09IEdMX1JHQkEgJiYKKyAgICAgICAgICAgICBkZXN0VHlwZSAgICAgPT0gR0xfSEFM
Rl9GTE9BVF9PRVMpCisgICAgeworICAgICAgICByZXR1cm4gODsKKyAgICB9CisgICAgZWxzZSBp
ZiAoc291cmNlRm9ybWF0ID09IERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCAmJgorICAgICAg
ICAgICAgIGRlc3RGb3JtYXQgICA9PSBHTF9SR0IgJiYKKyAgICAgICAgICAgICBkZXN0VHlwZSAg
ICAgPT0gR0xfRkxPQVQpCisgICAgeworICAgICAgICByZXR1cm4gMTI7CisgICAgfQorICAgIGVs
c2UgaWYgKHNvdXJjZUZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQgJiYK
KyAgICAgICAgICAgICBkZXN0Rm9ybWF0ICAgPT0gR0xfUkdCQSAmJgorICAgICAgICAgICAgIGRl
c3RUeXBlICAgICA9PSBHTF9GTE9BVCkKKyAgICB7CisgICAgICAgIHJldHVybiAxNjsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMg
aW5saW5lIHZvaWQgcmVhZFBpeGVsQ29sb3IoY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgRFhH
SV9GT1JNQVQgZm9ybWF0LCB1bnNpZ25lZCBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgeSwgaW50IGlucHV0UGl0Y2gsIGdsOjpDb2xvciAqb3V0
Q29sb3IpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW50
IHJnYmEgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBpbnQqPihkYXRhICsgNCAq
IHggKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgICAgICBvdXRDb2xvci0+cmVkID0gICAocmdi
YSAmIDB4MDAwMDAwRkYpICogKDEuMGYgLyAweDAwMDAwMEZGKTsKKyAgICAgICAgICAgIG91dENv
bG9yLT5ncmVlbiA9IChyZ2JhICYgMHgwMDAwRkYwMCkgKiAoMS4wZiAvIDB4MDAwMEZGMDApOwor
ICAgICAgICAgICAgb3V0Q29sb3ItPmJsdWUgPSAgKHJnYmEgJiAweDAwRkYwMDAwKSAqICgxLjBm
IC8gMHgwMEZGMDAwMCk7CisgICAgICAgICAgICBvdXRDb2xvci0+YWxwaGEgPSAocmdiYSAmIDB4
RkYwMDAwMDApICogKDEuMGYgLyAweEZGMDAwMDAwKTsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOF9VTk9STToKKyAgICAgICAgeworICAgICAg
ICAgICAgb3V0Q29sb3ItPnJlZCA9ICAgMC4wZjsKKyAgICAgICAgICAgIG91dENvbG9yLT5ncmVl
biA9IDAuMGY7CisgICAgICAgICAgICBvdXRDb2xvci0+Ymx1ZSA9ICAwLjBmOworICAgICAgICAg
ICAgb3V0Q29sb3ItPmFscGhhID0gKihkYXRhICsgeCArIHkgKiBpbnB1dFBpdGNoKSAvIDI1NS4w
ZjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dENvbG9yLT5yZWQg
PSAgICoocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEgKyAxNiAqIHggKyB5ICog
aW5wdXRQaXRjaCkgKyAwKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ncmVlbiA9ICoocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEgKyAxNiAqIHggKyB5ICogaW5wdXRQaXRjaCkg
KyAxKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ibHVlID0gICoocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBmbG9hdCo+KGRhdGEgKyAxNiAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAyKTsKKyAgICAg
ICAgICAgIG91dENvbG9yLT5hbHBoYSA9ICoocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KGRhdGEgKyAxNiAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAzKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQ6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIG91dENvbG9yLT5yZWQgPSAgICoocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBmbG9hdCo+KGRhdGEgKyAxMiAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAwKTsKKyAgICAg
ICAgICAgIG91dENvbG9yLT5ncmVlbiA9ICoocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KGRhdGEgKyAxMiAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAxKTsKKyAgICAgICAgICAgIG91dENv
bG9yLT5ibHVlID0gICoocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEgKyAxMiAq
IHggKyB5ICogaW5wdXRQaXRjaCkgKyAyKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5hbHBoYSA9
IDEuMGY7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBvdXRDb2xvci0+
cmVkID0gICBnbDo6ZmxvYXQxNlRvRmxvYXQzMigqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5z
aWduZWQgc2hvcnQqPihkYXRhICsgOCAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAwKSk7CisgICAg
ICAgICAgICBvdXRDb2xvci0+Z3JlZW4gPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMigqKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihkYXRhICsgOCAqIHggKyB5ICogaW5wdXRQ
aXRjaCkgKyAxKSk7CisgICAgICAgICAgICBvdXRDb2xvci0+Ymx1ZSA9ICBnbDo6ZmxvYXQxNlRv
RmxvYXQzMigqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihkYXRhICsg
OCAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAyKSk7CisgICAgICAgICAgICBvdXRDb2xvci0+YWxw
aGEgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMigqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgc2hvcnQqPihkYXRhICsgOCAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAzKSk7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5P
Uk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBiZ3JhID0gKnJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgaW50Kj4oZGF0YSArIDQgKiB4ICsgeSAqIGlucHV0UGl0
Y2gpOworICAgICAgICAgICAgb3V0Q29sb3ItPnJlZCA9ICAgKGJncmEgJiAweDAwRkYwMDAwKSAq
ICgxLjBmIC8gMHgwMEZGMDAwMCk7CisgICAgICAgICAgICBvdXRDb2xvci0+Ymx1ZSA9ICAoYmdy
YSAmIDB4MDAwMDAwRkYpICogKDEuMGYgLyAweDAwMDAwMEZGKTsKKyAgICAgICAgICAgIG91dENv
bG9yLT5ncmVlbiA9IChiZ3JhICYgMHgwMDAwRkYwMCkgKiAoMS4wZiAvIDB4MDAwMEZGMDApOwor
ICAgICAgICAgICAgb3V0Q29sb3ItPmFscGhhID0gKGJncmEgJiAweEZGMDAwMDAwKSAqICgxLjBm
IC8gMHhGRjAwMDAwMCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dENvbG9yLT5y
ZWQgPSAgICooZGF0YSArIHggKyB5ICogaW5wdXRQaXRjaCkgLyAyNTUuMGY7CisgICAgICAgICAg
ICBvdXRDb2xvci0+Z3JlZW4gPSAwLjBmOworICAgICAgICAgICAgb3V0Q29sb3ItPmJsdWUgPSAg
MC4wZjsKKyAgICAgICAgICAgIG91dENvbG9yLT5hbHBoYSA9IDEuMGY7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VTk9STToKKyAgICAg
ICAgeworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcmcgPSAqcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBzaG9ydCo+KGRhdGEgKyAyICogeCArIHkgKiBpbnB1dFBpdGNoKTsKKwor
ICAgICAgICAgICAgb3V0Q29sb3ItPnJlZCA9ICAgKHJnICYgMHhGRjAwKSAqICgxLjBmIC8gMHhG
RjAwKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ncmVlbiA9IChyZyAmIDB4MDBGRikgKiAoMS4w
ZiAvIDB4MDBGRik7CisgICAgICAgICAgICBvdXRDb2xvci0+Ymx1ZSA9ICAwLjBmOworICAgICAg
ICAgICAgb3V0Q29sb3ItPmFscGhhID0gMS4wZjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIG91dENvbG9yLT5yZWQgPSAgIGdsOjpmbG9hdDE2VG9GbG9hdDMyKCpyZWludGVycHJldF9j
YXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oZGF0YSArIDIgKiB4ICsgeSAqIGlucHV0UGl0Y2gp
KTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ncmVlbiA9IDAuMGY7CisgICAgICAgICAgICBvdXRD
b2xvci0+Ymx1ZSA9ICAwLjBmOworICAgICAgICAgICAgb3V0Q29sb3ItPmFscGhhID0gMS4wZjsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZH
MTZfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dENvbG9yLT5yZWQgPSAgIGdsOjpm
bG9hdDE2VG9GbG9hdDMyKCoocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+
KGRhdGEgKyA0ICogeCArIHkgKiBpbnB1dFBpdGNoKSArIDApKTsKKyAgICAgICAgICAgIG91dENv
bG9yLT5ncmVlbiA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKCoocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1bnNpZ25lZCBzaG9ydCo+KGRhdGEgKyA0ICogeCArIHkgKiBpbnB1dFBpdGNoKSArIDEpKTsK
KyAgICAgICAgICAgIG91dENvbG9yLT5ibHVlID0gIDAuMGY7CisgICAgICAgICAgICBvdXRDb2xv
ci0+YWxwaGEgPSAxLjBmOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZh
dWx0OgorICAgICAgICBFUlIoIlJlYWRQaXhlbENvbG9yIG5vdCBpbXBsZW1lbnRlZCBmb3IgRFhH
SSBmb3JtYXQgJXUuIiwgZm9ybWF0KTsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZVBpeGVsQ29sb3Io
Y29uc3QgZ2w6OkNvbG9yICZjb2xvciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIHVuc2ln
bmVkIGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgeSwgaW50IG91dHB1dFBpdGNoLCB2b2lkICpvdXREYXRhKQoreworICAgIHVuc2lnbmVkIGNo
YXIqIGJ5dGVEYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0RGF0YSk7
CisgICAgdW5zaWduZWQgc2hvcnQqIHNob3J0RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWdu
ZWQgc2hvcnQqPihvdXREYXRhKTsKKworICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsKKyAgICAg
IGNhc2UgR0xfUkdCQToKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgYnl0ZURhdGFbNCAqIHggKyB5
ICogb3V0cHV0UGl0Y2ggKyAwXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNv
bG9yLnJlZCAgICsgMC41Zik7CisgICAgICAgICAgICBieXRlRGF0YVs0ICogeCArIHkgKiBvdXRw
dXRQaXRjaCArIDFdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMjU1ICogY29sb3IuZ3Jl
ZW4gKyAwLjVmKTsKKyAgICAgICAgICAgIGJ5dGVEYXRhWzQgKiB4ICsgeSAqIG91dHB1dFBpdGNo
ICsgMl0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigyNTUgKiBjb2xvci5ibHVlICArIDAu
NWYpOworICAgICAgICAgICAgYnl0ZURhdGFbNCAqIHggKyB5ICogb3V0cHV0UGl0Y2ggKyAzXSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNvbG9yLmFscGhhICsgMC41Zik7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBFUlIo
IldyaXRlUGl4ZWxDb2xvciBub3QgaW1wbGVtZW50ZWQgZm9yIGZvcm1hdCBHTF9SR0JBIGFuZCB0
eXBlIDB4JVguIiwgdHlwZSk7CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBHTF9C
R1JBX0VYVDoKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgYnl0ZURhdGFbNCAqIHggKyB5ICogb3V0
cHV0UGl0Y2ggKyAwXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNvbG9yLmJs
dWUgICsgMC41Zik7CisgICAgICAgICAgICBieXRlRGF0YVs0ICogeCArIHkgKiBvdXRwdXRQaXRj
aCArIDFdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMjU1ICogY29sb3IuZ3JlZW4gKyAw
LjVmKTsKKyAgICAgICAgICAgIGJ5dGVEYXRhWzQgKiB4ICsgeSAqIG91dHB1dFBpdGNoICsgMl0g
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigyNTUgKiBjb2xvci5yZWQgICArIDAuNWYpOwor
ICAgICAgICAgICAgYnl0ZURhdGFbNCAqIHggKyB5ICogb3V0cHV0UGl0Y2ggKyAzXSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNvbG9yLmFscGhhICsgMC41Zik7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9S
RVZfRVhUOgorICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBkZXNrdG9wIEdMIHNwZWMg
aW4gdGhlICJUcmFuc2ZlciBvZiBQaXhlbCBSZWN0YW5nbGVzIiBzZWN0aW9uCisgICAgICAgICAg
ICAvLyB0aGlzIHR5cGUgaXMgcGFja2VkIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAvLyAgIDE1
ICAgMTQgICAxMyAgIDEyICAgMTEgICAxMCAgICA5ICAgIDggICAgNyAgICA2ICAgIDUgICAgNCAg
ICAzICAgIDIgICAgMSAgICAwCisgICAgICAgICAgICAvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyAgICAgICAgICAgIC8vIHwgICAgICAgNHRoICAgICAgICAgfCAgICAgICAgM3JkICAgICAg
ICAgfCAgICAgICAgMm5kICAgICAgICB8ICAgMXN0IGNvbXBvbmVudCAgIHwKKyAgICAgICAgICAg
IC8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ug
b2YgQkdSQV9FWFQsIEIgaXMgdGhlIGZpcnN0IGNvbXBvbmVudCwgRyB0aGUgc2Vjb25kLCBhbmQg
c28gZm9ydGguCisgICAgICAgICAgICBzaG9ydERhdGFbeCArIHkgKiBvdXRwdXRQaXRjaCAvIHNp
emVvZih1bnNpZ25lZCBzaG9ydCldID0KKyAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgc2hvcnQ+KDE1ICogY29sb3IuYWxwaGEgKyAwLjVmKSA8PCAxMikgfAorICAgICAgICAg
ICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oMTUgKiBjb2xvci5yZWQgICArIDAu
NWYpIDw8ICA4KSB8CisgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0
PigxNSAqIGNvbG9yLmdyZWVuICsgMC41ZikgPDwgIDQpIHwKKyAgICAgICAgICAgICAgICAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDE1ICogY29sb3IuYmx1ZSAgKyAwLjVmKSA8PCAgMCk7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRf
MV81XzVfNV9SRVZfRVhUOgorICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBkZXNrdG9w
IEdMIHNwZWMgaW4gdGhlICJUcmFuc2ZlciBvZiBQaXhlbCBSZWN0YW5nbGVzIiBzZWN0aW9uCisg
ICAgICAgICAgICAvLyB0aGlzIHR5cGUgaXMgcGFja2VkIGFzIGZvbGxvd3M6CisgICAgICAgICAg
ICAvLyAgIDE1ICAgMTQgICAxMyAgIDEyICAgMTEgICAxMCAgICA5ICAgIDggICAgNyAgICA2ICAg
IDUgICAgNCAgICAzICAgIDIgICAgMSAgICAwCisgICAgICAgICAgICAvLyAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAgICAgICAgICAgIC8vIHwgNHRoIHwgICAgICAgICAgM3JkICAgICAgICAg
ICB8ICAgICAgICAgICAybmQgICAgICAgICAgfCAgICAgIDFzdCBjb21wb25lbnQgICAgIHwKKyAg
ICAgICAgICAgIC8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgLy8gaW4g
dGhlIGNhc2Ugb2YgQkdSQV9FWFQsIEIgaXMgdGhlIGZpcnN0IGNvbXBvbmVudCwgRyB0aGUgc2Vj
b25kLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICBzaG9ydERhdGFbeCArIHkgKiBvdXRwdXRQ
aXRjaCAvIHNpemVvZih1bnNpZ25lZCBzaG9ydCldID0KKyAgICAgICAgICAgICAgICAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KCAgICAgY29sb3IuYWxwaGEgKyAwLjVmKSA8PCAxNSkgfAor
ICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oMzEgKiBjb2xvci5y
ZWQgICArIDAuNWYpIDw8IDEwKSB8CisgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2ln
bmVkIHNob3J0PigzMSAqIGNvbG9yLmdyZWVuICsgMC41ZikgPDwgIDUpIHwKKyAgICAgICAgICAg
ICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDMxICogY29sb3IuYmx1ZSAgKyAwLjVm
KSA8PCAgMCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBFUlIoIldyaXRlUGl4ZWxDb2xvciBub3QgaW1wbGVtZW50ZWQgZm9yIGZvcm1hdCBH
TF9CR1JBX0VYVCBhbmQgdHlwZSAweCVYLiIsIHR5cGUpOworICAgICAgICAgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisK
KyAgICAgIGNhc2UgR0xfUkdCOgorICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAg
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgorICAgICAgICAgICAgc2hvcnRE
YXRhW3ggKyB5ICogb3V0cHV0UGl0Y2ggLyBzaXplb2YodW5zaWduZWQgc2hvcnQpXSA9CisgICAg
ICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PigzMSAqIGNvbG9yLmJsdWUg
ICsgMC41ZikgPDwgIDApIHwKKyAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
c2hvcnQ+KDYzICogY29sb3IuZ3JlZW4gKyAwLjVmKSA8PCAgNSkgfAorICAgICAgICAgICAgICAg
IChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oMzEgKiBjb2xvci5yZWQgICArIDAuNWYpIDw8
IDExKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9C
WVRFOgorICAgICAgICAgICAgYnl0ZURhdGFbMyAqIHggKyB5ICogb3V0cHV0UGl0Y2ggKyAwXSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNvbG9yLnJlZCArICAgMC41Zik7Cisg
ICAgICAgICAgICBieXRlRGF0YVszICogeCArIHkgKiBvdXRwdXRQaXRjaCArIDFdID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oMjU1ICogY29sb3IuZ3JlZW4gKyAwLjVmKTsKKyAgICAgICAg
ICAgIGJ5dGVEYXRhWzMgKiB4ICsgeSAqIG91dHB1dFBpdGNoICsgMl0gPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPigyNTUgKiBjb2xvci5ibHVlICsgIDAuNWYpOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgRVJSKCJXcml0ZVBpeGVsQ29s
b3Igbm90IGltcGxlbWVudGVkIGZvciBmb3JtYXQgR0xfUkdCIGFuZCB0eXBlIDB4JVguIiwgdHlw
ZSk7CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgRVJSKCJX
cml0ZVBpeGVsQ29sb3Igbm90IGltcGxlbWVudGVkIGZvciBmb3JtYXQgMHglWC4iLCBmb3JtYXQp
OworICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwor
dm9pZCBSZW5kZXJlcjExOjpyZWFkVGV4dHVyZURhdGEoSUQzRDExVGV4dHVyZTJEICp0ZXh0dXJl
LCB1bnNpZ25lZCBpbnQgc3ViUmVzb3VyY2UsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw
ZSwgR0xzaXplaSBvdXRwdXRQaXRjaCwgYm9vbCBwYWNrUmV2ZXJzZVJvd09yZGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcGFja0FsaWdubWVudCwgdm9pZCAqcGl4
ZWxzKQoreworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleHR1cmVEZXNjOworICAgIHRleHR1
cmUtPkdldERlc2MoJnRleHR1cmVEZXNjKTsKKworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHN0
YWdpbmdEZXNjOworICAgIHN0YWdpbmdEZXNjLldpZHRoID0gYXJlYS53aWR0aDsKKyAgICBzdGFn
aW5nRGVzYy5IZWlnaHQgPSBhcmVhLmhlaWdodDsKKyAgICBzdGFnaW5nRGVzYy5NaXBMZXZlbHMg
PSAxOworICAgIHN0YWdpbmdEZXNjLkFycmF5U2l6ZSA9IDE7CisgICAgc3RhZ2luZ0Rlc2MuRm9y
bWF0ID0gdGV4dHVyZURlc2MuRm9ybWF0OworICAgIHN0YWdpbmdEZXNjLlNhbXBsZURlc2MuQ291
bnQgPSAxOworICAgIHN0YWdpbmdEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgc3Rh
Z2luZ0Rlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOworICAgIHN0YWdpbmdEZXNjLkJp
bmRGbGFncyA9IDA7CisgICAgc3RhZ2luZ0Rlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVf
QUNDRVNTX1JFQUQ7CisgICAgc3RhZ2luZ0Rlc2MuTWlzY0ZsYWdzID0gMDsKKworICAgIElEM0Qx
MVRleHR1cmUyRCogc3RhZ2luZ1RleCA9IE5VTEw7CisgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2
aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnN0YWdpbmdEZXNjLCBOVUxMLCAmc3RhZ2luZ1RleCk7Cisg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gY3Jl
YXRlIHN0YWdpbmcgdGV4dHVyZSBmb3IgcmVhZFBpeGVscywgSFJFU1VMVDogMHglWC4iLCByZXN1
bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSUQzRDExVGV4dHVyZTJEKiBzcmNU
ZXggPSBOVUxMOworICAgIGlmICh0ZXh0dXJlRGVzYy5TYW1wbGVEZXNjLkNvdW50ID4gMSkKKyAg
ICB7CisgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHJlc29sdmVEZXNjOworICAgICAgICBy
ZXNvbHZlRGVzYy5XaWR0aCA9IHRleHR1cmVEZXNjLldpZHRoOworICAgICAgICByZXNvbHZlRGVz
Yy5IZWlnaHQgPSB0ZXh0dXJlRGVzYy5IZWlnaHQ7CisgICAgICAgIHJlc29sdmVEZXNjLk1pcExl
dmVscyA9IDE7CisgICAgICAgIHJlc29sdmVEZXNjLkFycmF5U2l6ZSA9IDE7CisgICAgICAgIHJl
c29sdmVEZXNjLkZvcm1hdCA9IHRleHR1cmVEZXNjLkZvcm1hdDsKKyAgICAgICAgcmVzb2x2ZURl
c2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7CisgICAgICAgIHJlc29sdmVEZXNjLlNhbXBsZURlc2Mu
UXVhbGl0eSA9IDA7CisgICAgICAgIHJlc29sdmVEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfREVG
QVVMVDsKKyAgICAgICAgcmVzb2x2ZURlc2MuQmluZEZsYWdzID0gMDsKKyAgICAgICAgcmVzb2x2
ZURlc2MuQ1BVQWNjZXNzRmxhZ3MgPSAwOworICAgICAgICByZXNvbHZlRGVzYy5NaXNjRmxhZ3Mg
PSAwOworCisgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmcmVzb2x2
ZURlc2MsIE5VTEwsICZzcmNUZXgpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIGNyZWF0ZSByZXNvbHZlIHRleHR1cmUg
Zm9yIHJlYWRQaXhlbHMsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHN0
YWdpbmdUZXgtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIG1EZXZpY2VDb250ZXh0LT5SZXNvbHZlU3VicmVzb3VyY2Uoc3JjVGV4LCAwLCB0ZXh0
dXJlLCBzdWJSZXNvdXJjZSwgdGV4dHVyZURlc2MuRm9ybWF0KTsKKyAgICAgICAgc3ViUmVzb3Vy
Y2UgPSAwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBzcmNUZXggPSB0ZXh0dXJl
OworICAgICAgICBzcmNUZXgtPkFkZFJlZigpOworICAgIH0KKworICAgIEQzRDExX0JPWCBzcmNC
b3g7CisgICAgc3JjQm94LmxlZnQgPSBhcmVhLng7CisgICAgc3JjQm94LnJpZ2h0ID0gYXJlYS54
ICsgYXJlYS53aWR0aDsKKyAgICBzcmNCb3gudG9wID0gYXJlYS55OworICAgIHNyY0JveC5ib3R0
b20gPSBhcmVhLnkgKyBhcmVhLmhlaWdodDsKKyAgICBzcmNCb3guZnJvbnQgPSAwOworICAgIHNy
Y0JveC5iYWNrID0gMTsKKworICAgIG1EZXZpY2VDb250ZXh0LT5Db3B5U3VicmVzb3VyY2VSZWdp
b24oc3RhZ2luZ1RleCwgMCwgMCwgMCwgMCwgc3JjVGV4LCBzdWJSZXNvdXJjZSwgJnNyY0JveCk7
CisKKyAgICBzcmNUZXgtPlJlbGVhc2UoKTsKKyAgICBzcmNUZXggPSBOVUxMOworCisgICAgRDNE
MTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBpbmc7CisgICAgbURldmljZUNvbnRleHQtPk1hcChz
dGFnaW5nVGV4LCAwLCBEM0QxMV9NQVBfUkVBRCwgMCwgJm1hcHBpbmcpOworCisgICAgdW5zaWdu
ZWQgY2hhciAqc291cmNlOworICAgIGludCBpbnB1dFBpdGNoOworICAgIGlmIChwYWNrUmV2ZXJz
ZVJvd09yZGVyKQorICAgIHsKKyAgICAgICAgc291cmNlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcio+KG1hcHBpbmcucERhdGEpICsgbWFwcGluZy5Sb3dQaXRjaCAqIChhcmVhLmhlaWdodCAt
IDEpOworICAgICAgICBpbnB1dFBpdGNoID0gLXN0YXRpY19jYXN0PGludD4obWFwcGluZy5Sb3dQ
aXRjaCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXIqPihtYXBwaW5nLnBEYXRhKTsKKyAgICAgICAgaW5wdXRQaXRjaCA9
IHN0YXRpY19jYXN0PGludD4obWFwcGluZy5Sb3dQaXRjaCk7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgaW50IGZhc3RQaXhlbFNpemUgPSBnZXRGYXN0UGl4ZWxDb3B5U2l6ZSh0ZXh0dXJlRGVzYy5G
b3JtYXQsIGZvcm1hdCwgdHlwZSk7CisgICAgaWYgKGZhc3RQaXhlbFNpemUgIT0gMCkKKyAgICB7
CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Kj4ocGl4ZWxzKTsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBhcmVhLmhlaWdodDsgaisr
KQorICAgICAgICB7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCArIGogKiBvdXRwdXRQaXRjaCwg
c291cmNlICsgaiAqIGlucHV0UGl0Y2gsIGFyZWEud2lkdGggKiBmYXN0UGl4ZWxTaXplKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh0ZXh0dXJlRGVzYy5Gb3JtYXQgPT0gRFhHSV9G
T1JNQVRfQjhHOFI4QThfVU5PUk0gJiYKKyAgICAgICAgICAgICBmb3JtYXQgPT0gR0xfUkdCQSAm
JgorICAgICAgICAgICAgIHR5cGUgPT0gR0xfVU5TSUdORURfQllURSkKKyAgICB7CisgICAgICAg
IC8vIEZhc3QgcGF0aCBmb3Igc3dhcHBpbmcgcmVkIHdpdGggYmx1ZQorICAgICAgICB1bnNpZ25l
ZCBjaGFyICpkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHBpeGVscyk7CisKKyAg
ICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBhcmVhLmhlaWdodDsgaisrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZWEud2lkdGg7IGkrKykKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJnYiA9ICoodW5zaWduZWQgaW50
Kikoc291cmNlICsgNCAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisgICAgICAgICAgICAgICAgKih1
bnNpZ25lZCBpbnQqKShkZXN0ICsgNCAqIGkgKyBqICogb3V0cHV0UGl0Y2gpID0KKyAgICAgICAg
ICAgICAgICAgICAgKGFyZ2IgJiAweEZGMDBGRjAwKSB8ICAgICAgIC8vIEtlZXAgYWxwaGEgYW5k
IGdyZWVuCisgICAgICAgICAgICAgICAgICAgIChhcmdiICYgMHgwMEZGMDAwMCkgPj4gMTYgfCAv
LyBNb3ZlIHJlZCB0byBibHVlCisgICAgICAgICAgICAgICAgICAgIChhcmdiICYgMHgwMDAwMDBG
RikgPDwgMTY7ICAvLyBNb3ZlIGJsdWUgdG8gcmVkCisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZ2w6OkNvbG9yIHBpeGVsQ29sb3I7Cisg
ICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgYXJlYS5oZWlnaHQ7IGorKykKKyAgICAgICAgewor
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmVhLndpZHRoOyBpKyspCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmVhZFBpeGVsQ29sb3Ioc291cmNlLCB0ZXh0dXJlRGVz
Yy5Gb3JtYXQsIGksIGosIGlucHV0UGl0Y2gsICZwaXhlbENvbG9yKTsKKyAgICAgICAgICAgICAg
ICB3cml0ZVBpeGVsQ29sb3IocGl4ZWxDb2xvciwgZm9ybWF0LCB0eXBlLCBpLCBqLCBvdXRwdXRQ
aXRjaCwgcGl4ZWxzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIG1E
ZXZpY2VDb250ZXh0LT5Vbm1hcChzdGFnaW5nVGV4LCAwKTsKKworICAgIHN0YWdpbmdUZXgtPlJl
bGVhc2UoKTsKKyAgICBzdGFnaW5nVGV4ID0gTlVMTDsKK30KKworYm9vbCBSZW5kZXJlcjExOjpi
bGl0UmVuZGVyYnVmZmVyUmVjdChjb25zdCBnbDo6UmVjdGFuZ2xlICZyZWFkUmVjdCwgY29uc3Qg
Z2w6OlJlY3RhbmdsZSAmZHJhd1JlY3QsIFJlbmRlclRhcmdldCAqcmVhZFJlbmRlclRhcmdldCwg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldCAqZHJh
d1JlbmRlclRhcmdldCwgYm9vbCB3aG9sZUJ1ZmZlckNvcHkpCit7CisgICAgQVNTRVJUKHJlYWRS
ZWN0LndpZHRoID09IGRyYXdSZWN0LndpZHRoICYmIHJlYWRSZWN0LmhlaWdodCA9PSBkcmF3UmVj
dC5oZWlnaHQpOworCisgICAgUmVuZGVyVGFyZ2V0MTEgKnJlYWRSZW5kZXJUYXJnZXQxMSA9IFJl
bmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEocmVhZFJlbmRlclRhcmdldCk7CisgICAg
aWYgKCFyZWFkUmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0
cmlldmUgdGhlIHJlYWQgcmVuZGVyIHRhcmdldCBmcm9tIHRoZSByZWFkIGZyYW1lYnVmZmVyLiIp
OworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAg
ICB9CisKKyAgICBJRDNEMTFUZXh0dXJlMkQgKnJlYWRUZXh0dXJlID0gTlVMTDsKKyAgICB1bnNp
Z25lZCBpbnQgcmVhZFN1YnJlc291cmNlID0gMDsKKyAgICBpZiAocmVhZFJlbmRlclRhcmdldC0+
Z2V0U2FtcGxlcygpID4gMCkKKyAgICB7CisgICAgICAgIElEM0QxMVRleHR1cmUyRCAqdW5yZXNv
bHZlZFRleHR1cmUgPSByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFRleHR1cmUoKTsKKworICAgICAg
ICByZWFkVGV4dHVyZSA9IHJlc29sdmVNdWx0aXNhbXBsZWRUZXh0dXJlKHVucmVzb2x2ZWRUZXh0
dXJlLCByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFN1YnJlc291cmNlSW5kZXgoKSk7CisgICAgICAg
IHJlYWRTdWJyZXNvdXJjZSA9IDA7CisKKyAgICAgICAgdW5yZXNvbHZlZFRleHR1cmUtPlJlbGVh
c2UoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmVhZFRleHR1cmUgPSByZWFk
UmVuZGVyVGFyZ2V0MTEtPmdldFRleHR1cmUoKTsKKyAgICAgICAgcmVhZFN1YnJlc291cmNlID0g
cmVhZFJlbmRlclRhcmdldDExLT5nZXRTdWJyZXNvdXJjZUluZGV4KCk7CisgICAgfQorCisgICAg
aWYgKCFyZWFkVGV4dHVyZSkKKyAgICB7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZl
IHRoZSByZWFkIHJlbmRlciB0YXJnZXQgdmlldyBmcm9tIHRoZSByZWFkIHJlbmRlciB0YXJnZXQu
Iik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOwor
ICAgIH0KKworICAgIFJlbmRlclRhcmdldDExICpkcmF3UmVuZGVyVGFyZ2V0MTEgPSBSZW5kZXJU
YXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKGRyYXdSZW5kZXJUYXJnZXQpOworICAgIGlmICgh
ZHJhd1JlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIHJlYWRUZXh0dXJlLT5SZWxlYXNlKCk7
CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSBkcmF3IHJlbmRlciB0YXJnZXQg
ZnJvbSB0aGUgZHJhdyBmcmFtZWJ1ZmZlci4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgSUQzRDExVGV4dHVyZTJEICpk
cmF3VGV4dHVyZSA9IGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0VGV4dHVyZSgpOworICAgIHVuc2ln
bmVkIGludCBkcmF3U3VicmVzb3VyY2UgPSBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdldFN1YnJlc291
cmNlSW5kZXgoKTsKKworICAgIEQzRDExX0JPWCByZWFkQm94OworICAgIHJlYWRCb3gubGVmdCA9
IHJlYWRSZWN0Lng7CisgICAgcmVhZEJveC5yaWdodCA9IHJlYWRSZWN0LnggKyByZWFkUmVjdC53
aWR0aDsKKyAgICByZWFkQm94LnRvcCA9IHJlYWRSZWN0Lnk7CisgICAgcmVhZEJveC5ib3R0b20g
PSByZWFkUmVjdC55ICsgcmVhZFJlY3QuaGVpZ2h0OworICAgIHJlYWRCb3guZnJvbnQgPSAwOwor
ICAgIHJlYWRCb3guYmFjayA9IDE7CisKKyAgICAvLyBEM0QxMSBuZWVkcyBkZXB0aC1zdGVuY2ls
IENvcHlTdWJyZXNvdXJjZVJlZ2lvbnMgdG8gaGF2ZSBhIE5VTEwgcFNyY0JveAorICAgIC8vIFdl
IGFsc28gcmVxdWlyZSBjb21wbGV0ZSBmcmFtZWJ1ZmZlciBjb3BpZXMgZm9yIGRlcHRoLXN0ZW5j
aWwgYmxpdC4KKyAgICBEM0QxMV9CT1ggKnBTcmNCb3ggPSB3aG9sZUJ1ZmZlckNvcHkgPyBOVUxM
IDogJnJlYWRCb3g7CisKKyAgICBtRGV2aWNlQ29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9u
KGRyYXdUZXh0dXJlLCBkcmF3U3VicmVzb3VyY2UsIGRyYXdSZWN0LngsIGRyYXdSZWN0LnksIDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkVGV4dHVyZSwg
cmVhZFN1YnJlc291cmNlLCBwU3JjQm94KTsKKworICAgIHJlYWRUZXh0dXJlLT5SZWxlYXNlKCk7
CisgICAgZHJhd1RleHR1cmUtPlJlbGVhc2UoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitJ
RDNEMTFUZXh0dXJlMkQgKlJlbmRlcmVyMTE6OnJlc29sdmVNdWx0aXNhbXBsZWRUZXh0dXJlKElE
M0QxMVRleHR1cmUyRCAqc291cmNlLCB1bnNpZ25lZCBpbnQgc3VicmVzb3VyY2UpCit7CisgICAg
RDNEMTFfVEVYVFVSRTJEX0RFU0MgdGV4dHVyZURlc2M7CisgICAgc291cmNlLT5HZXREZXNjKCZ0
ZXh0dXJlRGVzYyk7CisKKyAgICBpZiAodGV4dHVyZURlc2MuU2FtcGxlRGVzYy5Db3VudCA+IDEp
CisgICAgeworICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyByZXNvbHZlRGVzYzsKKyAgICAg
ICAgcmVzb2x2ZURlc2MuV2lkdGggPSB0ZXh0dXJlRGVzYy5XaWR0aDsKKyAgICAgICAgcmVzb2x2
ZURlc2MuSGVpZ2h0ID0gdGV4dHVyZURlc2MuSGVpZ2h0OworICAgICAgICByZXNvbHZlRGVzYy5N
aXBMZXZlbHMgPSAxOworICAgICAgICByZXNvbHZlRGVzYy5BcnJheVNpemUgPSAxOworICAgICAg
ICByZXNvbHZlRGVzYy5Gb3JtYXQgPSB0ZXh0dXJlRGVzYy5Gb3JtYXQ7CisgICAgICAgIHJlc29s
dmVEZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICByZXNvbHZlRGVzYy5TYW1wbGVE
ZXNjLlF1YWxpdHkgPSAwOworICAgICAgICByZXNvbHZlRGVzYy5Vc2FnZSA9IHRleHR1cmVEZXNj
LlVzYWdlOworICAgICAgICByZXNvbHZlRGVzYy5CaW5kRmxhZ3MgPSB0ZXh0dXJlRGVzYy5CaW5k
RmxhZ3M7CisgICAgICAgIHJlc29sdmVEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gMDsKKyAgICAgICAg
cmVzb2x2ZURlc2MuTWlzY0ZsYWdzID0gMDsKKworICAgICAgICBJRDNEMTFUZXh0dXJlMkQgKnJl
c29sdmVUZXh0dXJlID0gTlVMTDsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5D
cmVhdGVUZXh0dXJlMkQoJnJlc29sdmVEZXNjLCBOVUxMLCAmcmVzb2x2ZVRleHR1cmUpOworICAg
ICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFp
bGVkIHRvIGNyZWF0ZSBhIG11bHRpc2FtcGxlIHJlc29sdmUgdGV4dHVyZSwgSFJFU1VMVDogMHgl
WC4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAg
ICAgICBtRGV2aWNlQ29udGV4dC0+UmVzb2x2ZVN1YnJlc291cmNlKHJlc29sdmVUZXh0dXJlLCAw
LCBzb3VyY2UsIHN1YnJlc291cmNlLCB0ZXh0dXJlRGVzYy5Gb3JtYXQpOworICAgICAgICByZXR1
cm4gcmVzb2x2ZVRleHR1cmU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHNvdXJj
ZS0+QWRkUmVmKCk7CisgICAgICAgIHJldHVybiBzb3VyY2U7CisgICAgfQorfQorCitib29sIFJl
bmRlcmVyMTE6OmdldExVSUQoTFVJRCAqYWRhcHRlckx1aWQpIGNvbnN0Cit7CisgICAgYWRhcHRl
ckx1aWQtPkhpZ2hQYXJ0ID0gMDsKKyAgICBhZGFwdGVyTHVpZC0+TG93UGFydCA9IDA7CisKKyAg
ICBpZiAoIW1EeGdpQWRhcHRlcikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBEWEdJX0FEQVBURVJfREVTQyBhZGFwdGVyRGVzYzsKKyAgICBpZiAoRkFJTEVEKG1E
eGdpQWRhcHRlci0+R2V0RGVzYygmYWRhcHRlckRlc2MpKSkKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICAqYWRhcHRlckx1aWQgPSBhZGFwdGVyRGVzYy5BZGFwdGVy
THVpZDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjEx
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlcmVyMTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNTEgQEAKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIFJlbmRlcmVyMTEuaDogRGVmaW5lcyBhIGJhY2stZW5kIHNw
ZWNpZmljIGNsYXNzIGZvciB0aGUgRDNEMTEgcmVuZGVyZXIuCisKKyNpZm5kZWYgTElCR0xFU1Yy
X1JFTkRFUkVSX1JFTkRFUkVSMTFfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRF
UkVSMTFfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL2FuZ2xldHlwZXMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWF0aHV0aWwuaCIKKwor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9SZW5kZXJTdGF0ZUNhY2hlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3Jl
bmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyVGFyZ2V0LmgiCisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgUmVuZGVyYnVmZmVyOwor
fQorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgVmVydGV4RGF0YU1hbmFnZXI7CitjbGFzcyBJ
bmRleERhdGFNYW5hZ2VyOworY2xhc3MgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2U7CisK
K2VudW0KK3sKKyAgICBNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU19EM0QxMSA9IDEwMjQsCisg
ICAgTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SU19EM0QxMSA9IDEwMjQKK307CisKK2NsYXNz
IFJlbmRlcmVyMTEgOiBwdWJsaWMgUmVuZGVyZXIKK3sKKyAgcHVibGljOgorICAgIFJlbmRlcmVy
MTEoZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBIREMgaERjKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJl
cjExKCk7CisKKyAgICBzdGF0aWMgUmVuZGVyZXIxMSAqbWFrZVJlbmRlcmVyMTEoUmVuZGVyZXIg
KnJlbmRlcmVyKTsKKworICAgIHZpcnR1YWwgRUdMaW50IGluaXRpYWxpemUoKTsKKyAgICB2aXJ0
dWFsIGJvb2wgcmVzZXREZXZpY2UoKTsKKworICAgIHZpcnR1YWwgaW50IGdlbmVyYXRlQ29uZmln
cyhDb25maWdEZXNjICoqY29uZmlnRGVzY0xpc3QpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVD
b25maWdzKENvbmZpZ0Rlc2MgKmNvbmZpZ0Rlc2NMaXN0KTsKKworICAgIHZpcnR1YWwgdm9pZCBz
eW5jKGJvb2wgYmxvY2spOworCisgICAgdmlydHVhbCBTd2FwQ2hhaW4gKmNyZWF0ZVN3YXBDaGFp
bihIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBHTGVudW0gYmFja0J1ZmZlckZvcm1h
dCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTYW1w
bGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgY29uc3QgZ2w6OlNhbXBs
ZXJTdGF0ZSAmc2FtcGxlcik7CisgICAgdmlydHVhbCB2b2lkIHNldFRleHR1cmUoZ2w6OlNhbXBs
ZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUpOworCisgICAgdmly
dHVhbCB2b2lkIHNldFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVyaXplclN0YXRlICZy
YXN0ZXJTdGF0ZSk7CisgICAgdmlydHVhbCB2b2lkIHNldEJsZW5kU3RhdGUoY29uc3QgZ2w6OkJs
ZW5kU3RhdGUgJmJsZW5kU3RhdGUsIGNvbnN0IGdsOjpDb2xvciAmYmxlbmRDb2xvciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlTWFzayk7CisgICAg
dmlydHVhbCB2b2lkIHNldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxT
dGF0ZSAmZGVwdGhTdGVuY2lsU3RhdGUsIGludCBzdGVuY2lsUmVmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RlbmNpbEJhY2tSZWYsIGJvb2wgZnJvbnRGYWNl
Q0NXKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTY2lzc29yUmVjdGFuZ2xlKGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJnNjaXNzb3IsIGJvb2wgZW5hYmxlZCk7CisgICAgdmlydHVhbCBib29sIHNldFZp
ZXdwb3J0KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnZpZXdwb3J0LCBmbG9hdCB6TmVhciwgZmxvYXQg
ekZhciwgR0xlbnVtIGRyYXdNb2RlLCBHTGVudW0gZnJvbnRGYWNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlnbm9yZVZpZXdwb3J0KTsKKworICAgIHZpcnR1YWwgYm9vbCBh
cHBseVByaW1pdGl2ZVR5cGUoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQpOworICAgIHZpcnR1
YWwgYm9vbCBhcHBseVJlbmRlclRhcmdldChnbDo6RnJhbWVidWZmZXIgKmZyYW1lQnVmZmVyKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTaGFkZXJzKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFt
QmluYXJ5KTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlVbmlmb3JtcyhnbDo6UHJvZ3JhbUJpbmFy
eSAqcHJvZ3JhbUJpbmFyeSwgZ2w6OlVuaWZvcm1BcnJheSAqdW5pZm9ybUFycmF5KTsKKyAgICB2
aXJ0dWFsIEdMZW51bSBhcHBseVZlcnRleEJ1ZmZlcihnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3Jh
bUJpbmFyeSwgZ2w6OlZlcnRleEF0dHJpYnV0ZSB2ZXJ0ZXhBdHRyaWJ1dGVzW10sIEdMaW50IGZp
cnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcyk7CisgICAgdmlydHVhbCBHTGVu
dW0gYXBwbHlJbmRleEJ1ZmZlcihjb25zdCBHTHZvaWQgKmluZGljZXMsIGdsOjpCdWZmZXIgKmVs
ZW1lbnRBcnJheUJ1ZmZlciwgR0xzaXplaSBjb3VudCwgR0xlbnVtIG1vZGUsIEdMZW51bSB0eXBl
LCBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8pOworCisgICAgdmlydHVhbCB2b2lkIGRy
YXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50
LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICplbGVtZW50
QXJyYXlCdWZmZXIsIGNvbnN0IFRyYW5zbGF0ZWRJbmRleERhdGEgJmluZGV4SW5mbywgR0xzaXpl
aSBpbnN0YW5jZXMpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyKGNvbnN0IGdsOjpDbGVhclBh
cmFtZXRlcnMgJmNsZWFyUGFyYW1zLCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lQnVmZmVyKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBtYXJrQWxsU3RhdGVEaXJ0eSgpOworCisgICAgLy8gbG9zdCBkZXZp
Y2UKKyAgICB2b2lkIG5vdGlmeURldmljZUxvc3QoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNEZXZp
Y2VMb3N0KCk7CisgICAgdmlydHVhbCBib29sIHRlc3REZXZpY2VMb3N0KGJvb2wgbm90aWZ5KTsK
KyAgICB2aXJ0dWFsIGJvb2wgdGVzdERldmljZVJlc2V0dGFibGUoKTsKKworICAgIC8vIFJlbmRl
cmVyIGNhcGFiaWxpdGllcworICAgIHZpcnR1YWwgRFdPUkQgZ2V0QWRhcHRlclZlbmRvcigpIGNv
bnN0OworICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNv
bnN0OworICAgIHZpcnR1YWwgR1VJRCBnZXRBZGFwdGVySWRlbnRpZmllcigpIGNvbnN0OworCisg
ICAgdmlydHVhbCBib29sIGdldEJHUkFUZXh0dXJlU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBnZXREWFQxVGV4dHVyZVN1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RFhU
M1RleHR1cmVTdXBwb3J0KCk7CisgICAgdmlydHVhbCBib29sIGdldERYVDVUZXh0dXJlU3VwcG9y
dCgpOworICAgIHZpcnR1YWwgYm9vbCBnZXRFdmVudFF1ZXJ5U3VwcG9ydCgpOworICAgIHZpcnR1
YWwgYm9vbCBnZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5nLCBib29sICpy
ZW5kZXJhYmxlKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RmxvYXQxNlRleHR1cmVTdXBwb3J0KGJv
b2wgKmZpbHRlcmluZywgYm9vbCAqcmVuZGVyYWJsZSk7CisgICAgdmlydHVhbCBib29sIGdldEx1
bWluYW5jZVRleHR1cmVTdXBwb3J0KCk7CisgICAgdmlydHVhbCBib29sIGdldEx1bWluYW5jZUFs
cGhhVGV4dHVyZVN1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhWZXJ0
ZXhUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdl
dE1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGludCBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKCkgY29uc3Q7CisgICAgdmly
dHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1WZWN0b3JzKCkgY29u
c3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhGcmFnbWVudFVuaWZvcm1W
ZWN0b3JzKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4VmFyeWluZ1Zl
Y3RvcnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBv
cnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RGVwdGhUZXh0dXJlU3VwcG9ydCgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRPY2NsdXNpb25RdWVyeVN1cHBvcnQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0SW5zdGFuY2luZ1N1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgZ2V0VGV4dHVyZUZpbHRlckFuaXNvdHJvcHlTdXBwb3J0KCkgY29uc3Q7CisgICAg
dmlydHVhbCBmbG9hdCBnZXRUZXh0dXJlTWF4QW5pc290cm9weSgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBnZXRTaGFyZUhhbmRsZVN1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
Z2V0RGVyaXZhdGl2ZUluc3RydWN0aW9uU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBnZXRQb3N0U3ViQnVmZmVyU3VwcG9ydCgpIGNvbnN0OworCisgICAgdmlydHVhbCBpbnQgZ2V0
TWFqb3JTaGFkZXJNb2RlbCgpIGNvbnN0OworICAgIHZpcnR1YWwgZmxvYXQgZ2V0TWF4UG9pbnRT
aXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgZ2V0TWF4Vmlld3BvcnREaW1lbnNpb24oKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGludCBnZXRNYXhUZXh0dXJlV2lkdGgoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGludCBnZXRNYXhUZXh0dXJlSGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGdldDMyQml0SW5kZXhTdXBwb3J0KCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgZ2V0TWluU3dh
cEludGVydmFsKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgZ2V0TWF4U3dhcEludGVydmFsKCkg
Y29uc3Q7CisKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0TWF4U3VwcG9ydGVkU2FtcGxlcygpIGNv
bnN0OworICAgIGludCBnZXROZWFyZXN0U3VwcG9ydGVkU2FtcGxlcyhEWEdJX0ZPUk1BVCBmb3Jt
YXQsIHVuc2lnbmVkIGludCByZXF1ZXN0ZWQpIGNvbnN0OworCisgICAgdmlydHVhbCB1bnNpZ25l
ZCBpbnQgZ2V0TWF4UmVuZGVyVGFyZ2V0cygpIGNvbnN0OworCisgICAgLy8gUGl4ZWwgb3BlcmF0
aW9ucworICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9SZW5kZXJUYXJnZXQoVGV4dHVyZVN0b3JhZ2VJ
bnRlcmZhY2UyRCAqZGVzdCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc291cmNlKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgY29weVRvUmVuZGVyVGFyZ2V0KFRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
Q3ViZSAqZGVzdCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzb3VyY2UpOworCisgICAg
dmlydHVhbCBib29sIGNvcHlJbWFnZShnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25z
dCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIFRleHR1cmVT
dG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIEdMaW50IGxldmVsKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY29weUltYWdlKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRl
cmZhY2VDdWJlICpzdG9yYWdlLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCk7CisKKyAgICBi
b29sIGNvcHlUZXh0dXJlKElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291cmNlLCBjb25zdCBn
bDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCB1bnNpZ25lZCBpbnQgc291cmNlV2lkdGgsIHVuc2ln
bmVkIGludCBzb3VyY2VIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICBJRDNEMTFSZW5kZXJU
YXJnZXRWaWV3ICpkZXN0LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwgdW5zaWduZWQg
aW50IGRlc3RXaWR0aCwgdW5zaWduZWQgaW50IGRlc3RIZWlnaHQsIEdMZW51bSBkZXN0Rm9ybWF0
KTsKKworICAgIHZpcnR1YWwgYm9vbCBibGl0UmVjdChnbDo6RnJhbWVidWZmZXIgKnJlYWRUYXJn
ZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlYWRSZWN0LCBnbDo6RnJhbWVidWZmZXIgKmRyYXdU
YXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRyYXdSZWN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQsIGJvb2wgYmxpdERlcHRoU3RlbmNpbCk7Cisg
ICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBm
b3JtYXQsIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
b3V0cHV0UGl0Y2gsIGJvb2wgcGFja1JldmVyc2VSb3dPcmRlciwgR0xpbnQgcGFja0FsaWdubWVu
dCwgdm9pZCogcGl4ZWxzKTsKKworICAgIC8vIFJlbmRlclRhcmdldCBjcmVhdGlvbgorICAgIHZp
cnR1YWwgUmVuZGVyVGFyZ2V0ICpjcmVhdGVSZW5kZXJUYXJnZXQoU3dhcENoYWluICpzd2FwQ2hh
aW4sIGJvb2wgZGVwdGgpOworICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpjcmVhdGVSZW5kZXJU
YXJnZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBs
ZXMsIGJvb2wgZGVwdGgpOworCisgICAgLy8gU2hhZGVyIG9wZXJhdGlvbnMKKyAgICB2aXJ0dWFs
IFNoYWRlckV4ZWN1dGFibGUgKmxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBz
aXplX3QgbGVuZ3RoLCByeDo6U2hhZGVyVHlwZSB0eXBlKTsKKyAgICB2aXJ0dWFsIFNoYWRlckV4
ZWN1dGFibGUgKmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0
IGNoYXIgKnNoYWRlckhMU0wsIHJ4OjpTaGFkZXJUeXBlIHR5cGUpOworCisgICAgLy8gSW1hZ2Ug
b3BlcmF0aW9ucworICAgIHZpcnR1YWwgSW1hZ2UgKmNyZWF0ZUltYWdlKCk7CisgICAgdmlydHVh
bCB2b2lkIGdlbmVyYXRlTWlwbWFwKEltYWdlICpkZXN0LCBJbWFnZSAqc291cmNlKTsKKyAgICB2
aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKFN3YXBDaGFpbiAq
c3dhcENoYWluKTsKKyAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3Rv
cmFnZTJEKGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBi
b29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworICAg
IHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlQ3ViZShpbnQgbGV2
ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2FnZSwgYm9vbCBmb3JjZVJlbmRl
cmFibGUsIGludCBzaXplKTsKKworICAgIC8vIEJ1ZmZlciBjcmVhdGlvbgorICAgIHZpcnR1YWwg
VmVydGV4QnVmZmVyICpjcmVhdGVWZXJ0ZXhCdWZmZXIoKTsKKyAgICB2aXJ0dWFsIEluZGV4QnVm
ZmVyICpjcmVhdGVJbmRleEJ1ZmZlcigpOworICAgIHZpcnR1YWwgQnVmZmVyU3RvcmFnZSAqY3Jl
YXRlQnVmZmVyU3RvcmFnZSgpOworCisgICAgLy8gUXVlcnkgYW5kIEZlbmNlIGNyZWF0aW9uCisg
ICAgdmlydHVhbCBRdWVyeUltcGwgKmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKTsKKyAgICB2aXJ0
dWFsIEZlbmNlSW1wbCAqY3JlYXRlRmVuY2UoKTsKKworICAgIC8vIEQzRDExLXJlbmRlcmVyIHNw
ZWNpZmljIG1ldGhvZHMKKyAgICBJRDNEMTFEZXZpY2UgKmdldERldmljZSgpIHsgcmV0dXJuIG1E
ZXZpY2U7IH0KKyAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpnZXREZXZpY2VDb250ZXh0KCkgeyBy
ZXR1cm4gbURldmljZUNvbnRleHQ7IH07CisgICAgSURYR0lGYWN0b3J5ICpnZXREeGdpRmFjdG9y
eSgpIHsgcmV0dXJuIG1EeGdpRmFjdG9yeTsgfTsKKworICAgIGJvb2wgZ2V0UmVuZGVyVGFyZ2V0
UmVzb3VyY2UoZ2w6OlJlbmRlcmJ1ZmZlciAqY29sb3JidWZmZXIsIHVuc2lnbmVkIGludCAqc3Vi
cmVzb3VyY2VJbmRleCwgSUQzRDExVGV4dHVyZTJEICoqcmVzb3VyY2UpOworICAgIHZvaWQgdW5h
cHBseVJlbmRlclRhcmdldHMoKTsKKyAgICB2b2lkIHNldE9uZVRpbWVSZW5kZXJUYXJnZXQoSUQz
RDExUmVuZGVyVGFyZ2V0VmlldyAqcmVuZGVyVGFyZ2V0Vmlldyk7CisKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0TFVJRChMVUlEICphZGFwdGVyTHVpZCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBE
SVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVuZGVyZXIxMSk7CisKKyAgICB2b2lkIGRyYXdMaW5l
TG9vcChHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBp
bnQgbWluSW5kZXgsIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlcik7CisgICAgdm9pZCBk
cmF3VHJpYW5nbGVGYW4oR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAq
aW5kaWNlcywgaW50IG1pbkluZGV4LCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIsIGlu
dCBpbnN0YW5jZXMpOworCisgICAgdm9pZCByZWFkVGV4dHVyZURhdGEoSUQzRDExVGV4dHVyZTJE
ICp0ZXh0dXJlLCB1bnNpZ25lZCBpbnQgc3ViUmVzb3VyY2UsIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIEdMc2l6ZWkgb3V0cHV0UGl0Y2gsIGJvb2wgcGFja1JldmVyc2VSb3dPcmRlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBwYWNrQWxpZ25tZW50LCB2b2lkICpwaXhlbHMpOwor
CisgICAgdm9pZCBtYXNrZWRDbGVhcihjb25zdCBnbDo6Q2xlYXJQYXJhbWV0ZXJzICZjbGVhclBh
cmFtcywgYm9vbCB1c2luZ0V4dGVuZGVkRHJhd0J1ZmZlcnMpOworICAgIHJ4OjpSYW5nZSBnZXRW
aWV3cG9ydEJvdW5kcygpIGNvbnN0OworCisgICAgYm9vbCBibGl0UmVuZGVyYnVmZmVyUmVjdChj
b25zdCBnbDo6UmVjdGFuZ2xlICZyZWFkUmVjdCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZHJhd1Jl
Y3QsIFJlbmRlclRhcmdldCAqcmVhZFJlbmRlclRhcmdldCwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJUYXJnZXQgKmRyYXdSZW5kZXJUYXJnZXQsIGJvb2wgd2hvbGVCdWZm
ZXJDb3B5KTsKKyAgICBJRDNEMTFUZXh0dXJlMkQgKnJlc29sdmVNdWx0aXNhbXBsZWRUZXh0dXJl
KElEM0QxMVRleHR1cmUyRCAqc291cmNlLCB1bnNpZ25lZCBpbnQgc3VicmVzb3VyY2UpOworCisg
ICAgSE1PRFVMRSBtRDNkMTFNb2R1bGU7CisgICAgSE1PRFVMRSBtRHhnaU1vZHVsZTsKKyAgICBI
REMgbURjOworCisgICAgYm9vbCBtRGV2aWNlTG9zdDsKKworICAgIHZvaWQgaW5pdGlhbGl6ZURl
dmljZSgpOworICAgIHZvaWQgcmVsZWFzZURldmljZVJlc291cmNlcygpOworICAgIGludCBnZXRN
aW5vclNoYWRlck1vZGVsKCkgY29uc3Q7CisgICAgdm9pZCByZWxlYXNlKCk7CisKKyAgICBSZW5k
ZXJTdGF0ZUNhY2hlIG1TdGF0ZUNhY2hlOworCisgICAgLy8gU3VwcG9ydCBmbGFncworICAgIGJv
b2wgbUZsb2F0MTZUZXh0dXJlU3VwcG9ydDsKKyAgICBib29sIG1GbG9hdDE2RmlsdGVyU3VwcG9y
dDsKKyAgICBib29sIG1GbG9hdDE2UmVuZGVyU3VwcG9ydDsKKworICAgIGJvb2wgbUZsb2F0MzJU
ZXh0dXJlU3VwcG9ydDsKKyAgICBib29sIG1GbG9hdDMyRmlsdGVyU3VwcG9ydDsKKyAgICBib29s
IG1GbG9hdDMyUmVuZGVyU3VwcG9ydDsKKworICAgIGJvb2wgbURYVDFUZXh0dXJlU3VwcG9ydDsK
KyAgICBib29sIG1EWFQzVGV4dHVyZVN1cHBvcnQ7CisgICAgYm9vbCBtRFhUNVRleHR1cmVTdXBw
b3J0OworCisgICAgYm9vbCBtRGVwdGhUZXh0dXJlU3VwcG9ydDsKKworICAgIC8vIE11bHRpc2Ft
cGxlIGZvcm1hdCBzdXBwb3J0CisgICAgc3RydWN0IE11bHRpc2FtcGxlU3VwcG9ydEluZm8KKyAg
ICB7CisgICAgICAgIHVuc2lnbmVkIGludCBxdWFsaXR5TGV2ZWxzW0QzRDExX01BWF9NVUxUSVNB
TVBMRV9TQU1QTEVfQ09VTlRdOworICAgIH07CisKKyAgICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVk
X21hcDxEWEdJX0ZPUk1BVCwgTXVsdGlzYW1wbGVTdXBwb3J0SW5mbz4gTXVsdGlzYW1wbGVTdXBw
b3J0TWFwOworICAgIE11bHRpc2FtcGxlU3VwcG9ydE1hcCBtTXVsdGlzYW1wbGVTdXBwb3J0TWFw
OworCisgICAgdW5zaWduZWQgaW50IG1NYXhTdXBwb3J0ZWRTYW1wbGVzOworCisgICAgLy8gY3Vy
cmVudCByZW5kZXIgdGFyZ2V0IHN0YXRlcworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZFJlbmRl
clRhcmdldFNlcmlhbHNbZ2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlNdOworICAg
IHVuc2lnbmVkIGludCBtQXBwbGllZERlcHRoYnVmZmVyU2VyaWFsOworICAgIHVuc2lnbmVkIGlu
dCBtQXBwbGllZFN0ZW5jaWxidWZmZXJTZXJpYWw7CisgICAgYm9vbCBtRGVwdGhTdGVuY2lsSW5p
dGlhbGl6ZWQ7CisgICAgYm9vbCBtUmVuZGVyVGFyZ2V0RGVzY0luaXRpYWxpemVkOworICAgIHJ4
OjpSZW5kZXJUYXJnZXQ6OkRlc2MgbVJlbmRlclRhcmdldERlc2M7CisgICAgdW5zaWduZWQgaW50
IG1DdXJEZXB0aFNpemU7CisgICAgdW5zaWduZWQgaW50IG1DdXJTdGVuY2lsU2l6ZTsKKworICAg
IC8vIEN1cnJlbnRseSBhcHBsaWVkIHNhbXBsZXIgc3RhdGVzCisgICAgYm9vbCBtRm9yY2VTZXRW
ZXJ0ZXhTYW1wbGVyU3RhdGVzW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVf
SU1BR0VfVU5JVFNdOworICAgIGdsOjpTYW1wbGVyU3RhdGUgbUN1clZlcnRleFNhbXBsZXJTdGF0
ZXNbZ2w6OklNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU107CisK
KyAgICBib29sIG1Gb3JjZVNldFBpeGVsU2FtcGxlclN0YXRlc1tnbDo6TUFYX1RFWFRVUkVfSU1B
R0VfVU5JVFNdOworICAgIGdsOjpTYW1wbGVyU3RhdGUgbUN1clBpeGVsU2FtcGxlclN0YXRlc1tn
bDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworCisgICAgLy8gQ3VycmVudGx5IGFwcGxpZWQg
dGV4dHVyZXMKKyAgICB1bnNpZ25lZCBpbnQgbUN1clZlcnRleFRleHR1cmVTZXJpYWxzW2dsOjpJ
TVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworICAgIHVuc2ln
bmVkIGludCBtQ3VyUGl4ZWxUZXh0dXJlU2VyaWFsc1tnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5J
VFNdOworCisgICAgLy8gQ3VycmVudGx5IGFwcGxpZWQgYmxlbmQgc3RhdGUKKyAgICBib29sIG1G
b3JjZVNldEJsZW5kU3RhdGU7CisgICAgZ2w6OkJsZW5kU3RhdGUgbUN1ckJsZW5kU3RhdGU7Cisg
ICAgZ2w6OkNvbG9yIG1DdXJCbGVuZENvbG9yOworICAgIHVuc2lnbmVkIGludCBtQ3VyU2FtcGxl
TWFzazsKKworICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIHJhc3Rlcml6ZXIgc3RhdGUKKyAgICBi
b29sIG1Gb3JjZVNldFJhc3RlclN0YXRlOworICAgIGdsOjpSYXN0ZXJpemVyU3RhdGUgbUN1clJh
c3RlclN0YXRlOworCisgICAgLy8gQ3VycmVudGx5IGFwcGxpZWQgZGVwdGggc3RlbmNpbCBzdGF0
ZQorICAgIGJvb2wgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGU7CisgICAgZ2w6OkRlcHRoU3Rl
bmNpbFN0YXRlIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICBpbnQgbUN1clN0ZW5jaWxSZWY7
CisgICAgaW50IG1DdXJTdGVuY2lsQmFja1JlZjsKKworICAgIC8vIEN1cnJlbnRseSBhcHBsaWVk
IHNjaXNzb3IgcmVjdGFuZ2xlCisgICAgYm9vbCBtRm9yY2VTZXRTY2lzc29yOworICAgIGJvb2wg
bVNjaXNzb3JFbmFibGVkOworICAgIGdsOjpSZWN0YW5nbGUgbUN1clNjaXNzb3I7CisKKyAgICAv
LyBDdXJyZW50bHkgYXBwbGllZCB2aWV3cG9ydAorICAgIGJvb2wgbUZvcmNlU2V0Vmlld3BvcnQ7
CisgICAgZ2w6OlJlY3RhbmdsZSBtQ3VyVmlld3BvcnQ7CisgICAgZmxvYXQgbUN1ck5lYXI7Cisg
ICAgZmxvYXQgbUN1ckZhcjsKKworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZElCU2VyaWFsOwor
ICAgIHVuc2lnbmVkIGludCBtQXBwbGllZFN0b3JhZ2VJQlNlcmlhbDsKKyAgICB1bnNpZ25lZCBp
bnQgbUFwcGxpZWRJQk9mZnNldDsKKworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZFByb2dyYW1C
aW5hcnlTZXJpYWw7CisgICAgYm9vbCBtSXNHZW9tZXRyeVNoYWRlckFjdGl2ZTsKKworICAgIGR4
X1ZlcnRleENvbnN0YW50cyBtVmVydGV4Q29uc3RhbnRzOworICAgIGR4X1ZlcnRleENvbnN0YW50
cyBtQXBwbGllZFZlcnRleENvbnN0YW50czsKKyAgICBJRDNEMTFCdWZmZXIgKm1Ecml2ZXJDb25z
dGFudEJ1ZmZlclZTOworCisgICAgZHhfUGl4ZWxDb25zdGFudHMgbVBpeGVsQ29uc3RhbnRzOwor
ICAgIGR4X1BpeGVsQ29uc3RhbnRzIG1BcHBsaWVkUGl4ZWxDb25zdGFudHM7CisgICAgSUQzRDEx
QnVmZmVyICptRHJpdmVyQ29uc3RhbnRCdWZmZXJQUzsKKworICAgIC8vIFZlcnRleCwgaW5kZXgg
YW5kIGlucHV0IGxheW91dHMKKyAgICBWZXJ0ZXhEYXRhTWFuYWdlciAqbVZlcnRleERhdGFNYW5h
Z2VyOworICAgIEluZGV4RGF0YU1hbmFnZXIgKm1JbmRleERhdGFNYW5hZ2VyOworICAgIElucHV0
TGF5b3V0Q2FjaGUgbUlucHV0TGF5b3V0Q2FjaGU7CisKKyAgICBTdHJlYW1pbmdJbmRleEJ1ZmZl
ckludGVyZmFjZSAqbUxpbmVMb29wSUI7CisgICAgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZh
Y2UgKm1UcmlhbmdsZUZhbklCOworCisgICAgLy8gVGV4dHVyZSBjb3B5IHJlc291cmNlcworICAg
IGJvb2wgbUNvcHlSZXNvdXJjZXNJbml0aWFsaXplZDsKKyAgICBJRDNEMTFCdWZmZXIgKm1Db3B5
VkI7CisgICAgSUQzRDExU2FtcGxlclN0YXRlICptQ29weVNhbXBsZXI7CisgICAgSUQzRDExSW5w
dXRMYXlvdXQgKm1Db3B5SUw7CisgICAgSUQzRDExVmVydGV4U2hhZGVyICptQ29weVZTOworICAg
IElEM0QxMVBpeGVsU2hhZGVyICptQ29weVJHQkFQUzsKKyAgICBJRDNEMTFQaXhlbFNoYWRlciAq
bUNvcHlSR0JQUzsKKyAgICBJRDNEMTFQaXhlbFNoYWRlciAqbUNvcHlMdW1QUzsKKyAgICBJRDNE
MTFQaXhlbFNoYWRlciAqbUNvcHlMdW1BbHBoYVBTOworCisgICAgLy8gTWFza2VkIGNsZWFyIHJl
c291cmNlcworICAgIGJvb2wgbUNsZWFyUmVzb3VyY2VzSW5pdGlhbGl6ZWQ7CisgICAgSUQzRDEx
QnVmZmVyICptQ2xlYXJWQjsKKyAgICBJRDNEMTFJbnB1dExheW91dCAqbUNsZWFySUw7CisgICAg
SUQzRDExVmVydGV4U2hhZGVyICptQ2xlYXJWUzsKKyAgICBJRDNEMTFQaXhlbFNoYWRlciAqbUNs
ZWFyU2luZ2xlUFM7CisgICAgSUQzRDExUGl4ZWxTaGFkZXIgKm1DbGVhck11bHRpcGxlUFM7Cisg
ICAgSUQzRDExUmFzdGVyaXplclN0YXRlICptQ2xlYXJTY2lzc29yUlM7CisgICAgSUQzRDExUmFz
dGVyaXplclN0YXRlICptQ2xlYXJOb1NjaXNzb3JSUzsKKworICAgIC8vIFN5bmMgcXVlcnkKKyAg
ICBJRDNEMTFRdWVyeSAqbVN5bmNRdWVyeTsKKworICAgIElEM0QxMURldmljZSAqbURldmljZTsK
KyAgICBEM0RfRkVBVFVSRV9MRVZFTCBtRmVhdHVyZUxldmVsOworICAgIElEM0QxMURldmljZUNv
bnRleHQgKm1EZXZpY2VDb250ZXh0OworICAgIElEWEdJQWRhcHRlciAqbUR4Z2lBZGFwdGVyOwor
ICAgIERYR0lfQURBUFRFUl9ERVNDIG1BZGFwdGVyRGVzY3JpcHRpb247CisgICAgY2hhciBtRGVz
Y3JpcHRpb25bMTI4XTsKKyAgICBJRFhHSUZhY3RvcnkgKm1EeGdpRmFjdG9yeTsKKworICAgIC8v
IENhY2hlZCBkZXZpY2UgY2FwcworICAgIGJvb2wgbUJHUkFUZXh0dXJlU3VwcG9ydDsKK307CisK
K30KKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfUkVOREVSRVIxMV9IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9SZW5kZXJlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMjAgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAxMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gUmVuZGVyZXIuY3BwOiBJbXBsZW1lbnRzIEVHTCBkZXBlbmRlbmNpZXMgZm9yIGNyZWF0
aW5nIGFuZCBkZXN0cm95aW5nIFJlbmRlcmVyIGluc3RhbmNlcy4KKworI2luY2x1ZGUgPEVHTC9l
Z2xleHQuaD4KKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9Qcm9ncmFtLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGll
cy5oIgorCisjaWYgIWRlZmluZWQoQU5HTEVfRU5BQkxFX0QzRDExKQorLy8gRW5hYmxlcyB1c2Ug
b2YgdGhlIERpcmVjdDNEIDExIEFQSSBmb3IgYSBkZWZhdWx0IGRpc3BsYXksIHdoZW4gYXZhaWxh
YmxlCisjZGVmaW5lIEFOR0xFX0VOQUJMRV9EM0QxMSAwCisjZW5kaWYKKworbmFtZXNwYWNlIHJ4
Cit7CisKK1JlbmRlcmVyOjpSZW5kZXJlcihlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIDogbURpc3Bs
YXkoZGlzcGxheSkKK3sKKyAgICBtRDNkQ29tcGlsZXJNb2R1bGUgPSBOVUxMOworICAgIG1EM0RD
b21waWxlRnVuYyA9IE5VTEw7Cit9CisKK1JlbmRlcmVyOjp+UmVuZGVyZXIoKQoreworICAgIGlm
IChtRDNkQ29tcGlsZXJNb2R1bGUpCisgICAgeworICAgICAgICBGcmVlTGlicmFyeShtRDNkQ29t
cGlsZXJNb2R1bGUpOworICAgICAgICBtRDNkQ29tcGlsZXJNb2R1bGUgPSBOVUxMOworICAgIH0K
K30KKworYm9vbCBSZW5kZXJlcjo6aW5pdGlhbGl6ZUNvbXBpbGVyKCkKK3sKKyNpZiBkZWZpbmVk
KEFOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVMpCisgICAgLy8gRmluZCBh
IEQzRENvbXBpbGVyIG1vZHVsZSB0aGF0IGhhZCBhbHJlYWR5IGJlZW4gbG9hZGVkIGJhc2VkIG9u
IGEgcHJlZGVmaW5lZCBsaXN0IG9mIHZlcnNpb25zLgorICAgIHN0YXRpYyBUQ0hBUiogZDNkQ29t
cGlsZXJOYW1lc1tdID0gQU5HTEVfUFJFTE9BREVEX0QzRENPTVBJTEVSX01PRFVMRV9OQU1FUzsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQXJyYXlTaXplKGQzZENvbXBpbGVyTmFtZXMp
OyArK2kpCisgICAgeworICAgICAgICBpZiAoR2V0TW9kdWxlSGFuZGxlRXgoMCwgZDNkQ29tcGls
ZXJOYW1lc1tpXSwgJm1EM2RDb21waWxlck1vZHVsZSkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICAvLyBMb2FkIHRoZSB2ZXJzaW9u
IG9mIHRoZSBEM0RDb21waWxlciBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBEaXJlY3QzRCB2ZXJz
aW9uIEFOR0xFIHdhcyBidWlsdCB3aXRoLgorICAgIG1EM2RDb21waWxlck1vZHVsZSA9IExvYWRM
aWJyYXJ5KEQzRENPTVBJTEVSX0RMTCk7CisjZW5kaWYgIC8vIEFOR0xFX1BSRUxPQURFRF9EM0RD
T01QSUxFUl9NT0RVTEVfTkFNRVMKKworICAgIGlmICghbUQzZENvbXBpbGVyTW9kdWxlKQorICAg
IHsKKyAgICAgICAgRVJSKCJObyBEM0QgY29tcGlsZXIgbW9kdWxlIGZvdW5kIC0gYWJvcnRpbmch
XG4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1EM0RDb21waWxlRnVu
YyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cENvbXBpbGVGdW5jPihHZXRQcm9jQWRkcmVzcyhtRDNkQ29t
cGlsZXJNb2R1bGUsICJEM0RDb21waWxlIikpOworICAgIEFTU0VSVChtRDNEQ29tcGlsZUZ1bmMp
OworCisgICAgcmV0dXJuIG1EM0RDb21waWxlRnVuYyAhPSBOVUxMOworfQorCisvLyBDb21waWxl
cyBITFNMIGNvZGUgaW50byBleGVjdXRhYmxlIGJpbmFyaWVzCitTaGFkZXJCbG9iICpSZW5kZXJl
cjo6Y29tcGlsZVRvQmluYXJ5KGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpobHNs
LCBjb25zdCBjaGFyICpwcm9maWxlLCBVSU5UIG9wdGltaXphdGlvbkZsYWdzLCBib29sIGFsdGVy
bmF0ZUZsYWdzKQoreworICAgIGlmICghaGxzbCkKKyAgICB7CisgICAgICAgIHJldHVybiBOVUxM
OworICAgIH0KKworICAgIEhSRVNVTFQgcmVzdWx0ID0gU19PSzsKKyAgICBVSU5UIGZsYWdzID0g
MDsKKyAgICBzdGQ6OnN0cmluZyBzb3VyY2VUZXh0OworICAgIGlmIChnbDo6cGVyZkFjdGl2ZSgp
KQorICAgIHsKKyAgICAgICAgZmxhZ3MgfD0gRDNEQ09NUElMRV9ERUJVRzsKKworI2lmZGVmIE5E
RUJVRworICAgICAgICBmbGFncyB8PSBvcHRpbWl6YXRpb25GbGFnczsKKyNlbHNlCisgICAgICAg
IGZsYWdzIHw9IEQzRENPTVBJTEVfU0tJUF9PUFRJTUlaQVRJT047CisjZW5kaWYKKworICAgICAg
ICBzdGQ6OnN0cmluZyBzb3VyY2VQYXRoID0gZ2V0VGVtcFBhdGgoKTsKKyAgICAgICAgc291cmNl
VGV4dCA9IHN0ZDo6c3RyaW5nKCIjbGluZSAyIFwiIikgKyBzb3VyY2VQYXRoICsgc3RkOjpzdHJp
bmcoIlwiXG5cbiIpICsgc3RkOjpzdHJpbmcoaGxzbCk7CisgICAgICAgIHdyaXRlRmlsZShzb3Vy
Y2VQYXRoLmNfc3RyKCksIHNvdXJjZVRleHQuY19zdHIoKSwgc291cmNlVGV4dC5zaXplKCkpOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBmbGFncyB8PSBvcHRpbWl6YXRpb25GbGFn
czsKKyAgICAgICAgc291cmNlVGV4dCA9IGhsc2w7CisgICAgfQorCisgICAgLy8gU29tZXRpbWVz
IEQzRENvbXBpbGUgd2lsbCBmYWlsIHdpdGggdGhlIGRlZmF1bHQgY29tcGlsYXRpb24gZmxhZ3Mg
Zm9yIGNvbXBsaWNhdGVkIHNoYWRlcnMgd2hlbiBpdCB3b3VsZCBvdGhlcndpc2UgcGFzcyB3aXRo
IGFsdGVybmF0aXZlIG9wdGlvbnMuCisgICAgLy8gVHJ5IHRoZSBkZWZhdWx0IGZsYWdzIGZpcnN0
IGFuZCBpZiBjb21waWxhdGlvbiBmYWlscywgdHJ5IHNvbWUgYWx0ZXJuYXRpdmVzLgorICAgIGNv
bnN0IHN0YXRpYyBVSU5UIGV4dHJhRmxhZ3NbXSA9CisgICAgeworICAgICAgICAwLAorICAgICAg
ICBEM0RDT01QSUxFX0FWT0lEX0ZMT1dfQ09OVFJPTCwKKyAgICAgICAgRDNEQ09NUElMRV9QUkVG
RVJfRkxPV19DT05UUk9MCisgICAgfTsKKworICAgIGNvbnN0IHN0YXRpYyBjaGFyICogY29uc3Qg
ZXh0cmFGbGFnTmFtZXNbXSA9CisgICAgeworICAgICAgICAiZGVmYXVsdCIsCisgICAgICAgICJh
dm9pZCBmbG93IGNvbnRyb2wiLAorICAgICAgICAicHJlZmVyIGZsb3cgY29udHJvbCIKKyAgICB9
OworCisgICAgaW50IGF0dGVtcHRzID0gYWx0ZXJuYXRlRmxhZ3MgPyBBcnJheVNpemUoZXh0cmFG
bGFncykgOiAxOworICAgIHBEM0RDb21waWxlIGNvbXBpbGVGdW5jID0gcmVpbnRlcnByZXRfY2Fz
dDxwRDNEQ29tcGlsZT4obUQzRENvbXBpbGVGdW5jKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IGF0dGVtcHRzOyArK2kpCisgICAgeworICAgICAgICBJRDNEQmxvYiAqZXJyb3JNZXNzYWdlID0g
TlVMTDsKKyAgICAgICAgSUQzREJsb2IgKmJpbmFyeSA9IE5VTEw7CisKKyAgICAgICAgcmVzdWx0
ID0gY29tcGlsZUZ1bmMoaGxzbCwgc3RybGVuKGhsc2wpLCBnbDo6Z19mYWtlcGF0aCwgTlVMTCwg
TlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1haW4iLCBwcm9maWxlLCBmbGFn
cyB8IGV4dHJhRmxhZ3NbaV0sIDAsICZiaW5hcnksICZlcnJvck1lc3NhZ2UpOworICAgICAgICBp
ZiAoZXJyb3JNZXNzYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBjaGFyICptZXNz
YWdlID0gKGNvbnN0IGNoYXIqKWVycm9yTWVzc2FnZS0+R2V0QnVmZmVyUG9pbnRlcigpOworCisg
ICAgICAgICAgICBpbmZvTG9nLmFwcGVuZFNhbml0aXplZChtZXNzYWdlKTsKKyAgICAgICAgICAg
IFRSQUNFKCJcbiVzIiwgaGxzbCk7CisgICAgICAgICAgICBUUkFDRSgiXG4lcyIsIG1lc3NhZ2Up
OworCisgICAgICAgICAgICBlcnJvck1lc3NhZ2UtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgIGVy
cm9yTWVzc2FnZSA9IE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoU1VDQ0VFREVEKHJl
c3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAoU2hhZGVyQmxvYiopYmluYXJ5
OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHJl
c3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9S
WSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlksIChTaGFkZXJCbG9iKikgTlVMTCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGluZm9Mb2cuYXBwZW5kKCJXYXJuaW5nOiBEM0Qgc2hhZGVyIGNvbXBpbGF0aW9uIGZh
aWxlZCB3aXRoICIpOworICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoZXh0cmFGbGFnTmFtZXNb
aV0pOworICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIiBmbGFncy4iKTsKKyAgICAgICAgICAg
IGlmIChpICsgMSA8IGF0dGVtcHRzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlu
Zm9Mb2cuYXBwZW5kKCIgUmV0cnlpbmcgd2l0aCAiKTsKKyAgICAgICAgICAgICAgICBpbmZvTG9n
LmFwcGVuZChleHRyYUZsYWdOYW1lc1tpICsgMV0pOworICAgICAgICAgICAgICAgIGluZm9Mb2cu
YXBwZW5kKCIuXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiBOVUxMOworfQorCit9CisKK2V4dGVybiAiQyIKK3sKKworcng6OlJlbmRlcmVyICpnbENy
ZWF0ZVJlbmRlcmVyKGVnbDo6RGlzcGxheSAqZGlzcGxheSwgSERDIGhEYywgRUdMTmF0aXZlRGlz
cGxheVR5cGUgZGlzcGxheUlkKQoreworICAgIHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIgPSBOVUxM
OworICAgIEVHTGludCBzdGF0dXMgPSBFR0xfQkFEX0FMTE9DOworICAgIAorICAgIGlmIChBTkdM
RV9FTkFCTEVfRDNEMTEgfHwKKyAgICAgICAgZGlzcGxheUlkID09IEVHTF9EM0QxMV9FTFNFX0Qz
RDlfRElTUExBWV9BTkdMRSB8fAorICAgICAgICBkaXNwbGF5SWQgPT0gRUdMX0QzRDExX09OTFlf
RElTUExBWV9BTkdMRSkKKyAgICB7CisgICAgICAgIHJlbmRlcmVyID0gbmV3IHJ4OjpSZW5kZXJl
cjExKGRpc3BsYXksIGhEYyk7CisgICAgCisgICAgICAgIGlmIChyZW5kZXJlcikKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdHVzID0gcmVuZGVyZXItPmluaXRpYWxpemUoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChzdGF0dXMgPT0gRUdMX1NVQ0NFU1MpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChkaXNw
bGF5SWQgPT0gRUdMX0QzRDExX09OTFlfRElTUExBWV9BTkdMRSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICAvLyBGYWlsZWQgdG8gY3Jl
YXRlIGEgRDNEMTEgcmVuZGVyZXIsIHRyeSBjcmVhdGluZyBhIEQzRDkgcmVuZGVyZXIKKyAgICAg
ICAgZGVsZXRlIHJlbmRlcmVyOworICAgIH0KKworICAgIGJvb2wgc29mdHdhcmVEZXZpY2UgPSAo
ZGlzcGxheUlkID09IEVHTF9TT0ZUV0FSRV9ESVNQTEFZX0FOR0xFKTsKKyAgICByZW5kZXJlciA9
IG5ldyByeDo6UmVuZGVyZXI5KGRpc3BsYXksIGhEYywgc29mdHdhcmVEZXZpY2UpOworICAgIAor
ICAgIGlmIChyZW5kZXJlcikKKyAgICB7CisgICAgICAgIHN0YXR1cyA9IHJlbmRlcmVyLT5pbml0
aWFsaXplKCk7CisgICAgfQorCisgICAgaWYgKHN0YXR1cyA9PSBFR0xfU1VDQ0VTUykKKyAgICB7
CisgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsKK30K
Kwordm9pZCBnbERlc3Ryb3lSZW5kZXJlcihyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKQoreworICAg
IGRlbGV0ZSByZW5kZXJlcjsKK30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVy
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlcmVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjQ0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBSZW5kZXJlci5oOiBEZWZpbmVz
IGEgYmFjay1lbmQgc3BlY2lmaWMgY2xhc3MgdGhhdCBoaWRlcyB0aGUgZGV0YWlscyBvZiB0aGUK
Ky8vIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIHJlbmRlcmVyLgorCisjaWZuZGVmIExJQkdMRVNW
Ml9SRU5ERVJFUl9SRU5ERVJFUl9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJfUkVOREVS
RVJfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9Vbmlmb3JtLmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL2FuZ2xldHlwZXMuaCIKKworI2lmICFkZWZpbmVkKEFOR0xFX0NPTVBJTEVfT1BUSU1JWkFU
SU9OX0xFVkVMKQorI2RlZmluZSBBTkdMRV9DT01QSUxFX09QVElNSVpBVElPTl9MRVZFTCBEM0RD
T01QSUxFX09QVElNSVpBVElPTl9MRVZFTDMKKyNlbmRpZgorCitjb25zdCBpbnQgdmVyc2lvbldp
bmRvd3NWaXN0YSA9IE1BS0VXT1JEKDB4MDAsIDB4MDYpOworY29uc3QgaW50IHZlcnNpb25XaW5k
b3dzNyA9IE1BS0VXT1JEKDB4MDEsIDB4MDYpOworCisvLyBSZXR1cm4gdGhlIHZlcnNpb24gb2Yg
dGhlIG9wZXJhdGluZyBzeXN0ZW0gaW4gYSBmb3JtYXQgc3VpdGFibGUgZm9yIG9yZGVyaW5nCisv
LyBjb21wYXJpc29uLgoraW5saW5lIGludCBnZXRDb21wYXJhYmxlT1NWZXJzaW9uKCkKK3sKKyAg
ICBEV09SRCB2ZXJzaW9uID0gR2V0VmVyc2lvbigpOworICAgIGludCBtYWpvclZlcnNpb24gPSBM
T0JZVEUoTE9XT1JEKHZlcnNpb24pKTsKKyAgICBpbnQgbWlub3JWZXJzaW9uID0gSElCWVRFKExP
V09SRCh2ZXJzaW9uKSk7CisgICAgcmV0dXJuIE1BS0VXT1JEKG1pbm9yVmVyc2lvbiwgbWFqb3JW
ZXJzaW9uKTsKK30KKworbmFtZXNwYWNlIGVnbAoreworY2xhc3MgRGlzcGxheTsKK30KKworbmFt
ZXNwYWNlIGdsCit7CitjbGFzcyBJbmZvTG9nOworY2xhc3MgUHJvZ3JhbUJpbmFyeTsKK2NsYXNz
IFZlcnRleEF0dHJpYnV0ZTsKK2NsYXNzIEJ1ZmZlcjsKK2NsYXNzIFRleHR1cmU7CitjbGFzcyBG
cmFtZWJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBUZXh0dXJlU3RvcmFnZUlu
dGVyZmFjZTJEOworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlOworY2xhc3MgVmVy
dGV4QnVmZmVyOworY2xhc3MgSW5kZXhCdWZmZXI7CitjbGFzcyBRdWVyeUltcGw7CitjbGFzcyBG
ZW5jZUltcGw7CitjbGFzcyBCdWZmZXJTdG9yYWdlOworY2xhc3MgQmxpdDsKK3N0cnVjdCBUcmFu
c2xhdGVkSW5kZXhEYXRhOworY2xhc3MgU2hhZGVyRXhlY3V0YWJsZTsKK2NsYXNzIFN3YXBDaGFp
bjsKK2NsYXNzIFJlbmRlclRhcmdldDsKK2NsYXNzIEltYWdlOworY2xhc3MgVGV4dHVyZVN0b3Jh
Z2U7CisKK3R5cGVkZWYgdm9pZCAqIFNoYWRlckJsb2I7Cit0eXBlZGVmIHZvaWQgKCpwQ29tcGls
ZUZ1bmMpKCk7CisKK3N0cnVjdCBDb25maWdEZXNjCit7CisgICAgR0xlbnVtICByZW5kZXJUYXJn
ZXRGb3JtYXQ7CisgICAgR0xlbnVtICBkZXB0aFN0ZW5jaWxGb3JtYXQ7CisgICAgR0xpbnQgICBt
dWx0aVNhbXBsZTsKKyAgICBib29sICAgIGZhc3RDb25maWc7Cit9OworCitzdHJ1Y3QgZHhfVmVy
dGV4Q29uc3RhbnRzCit7CisgICAgZmxvYXQgZGVwdGhSYW5nZVs0XTsKKyAgICBmbG9hdCB2aWV3
QWRqdXN0WzRdOworfTsKKworc3RydWN0IGR4X1BpeGVsQ29uc3RhbnRzCit7CisgICAgZmxvYXQg
ZGVwdGhSYW5nZVs0XTsKKyAgICBmbG9hdCB2aWV3Q29vcmRzWzRdOworICAgIGZsb2F0IGRlcHRo
RnJvbnRbNF07Cit9OworCitlbnVtIFNoYWRlclR5cGUKK3sKKyAgICBTSEFERVJfVkVSVEVYLAor
ICAgIFNIQURFUl9QSVhFTCwKKyAgICBTSEFERVJfR0VPTUVUUlkKK307CisKK2NsYXNzIFJlbmRl
cmVyCit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBSZW5kZXJlcihlZ2w6OkRpc3BsYXkgKmRp
c3BsYXkpOworICAgIHZpcnR1YWwgflJlbmRlcmVyKCk7CisKKyAgICB2aXJ0dWFsIEVHTGludCBp
bml0aWFsaXplKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZXNldERldmljZSgpID0gMDsKKwor
ICAgIHZpcnR1YWwgaW50IGdlbmVyYXRlQ29uZmlncyhDb25maWdEZXNjICoqY29uZmlnRGVzY0xp
c3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29uZmlncyhDb25maWdEZXNjICpjb25m
aWdEZXNjTGlzdCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN5bmMoYm9vbCBibG9jaykgPSAw
OworCisgICAgdmlydHVhbCBTd2FwQ2hhaW4gKmNyZWF0ZVN3YXBDaGFpbihIV05EIHdpbmRvdywg
SEFORExFIHNoYXJlSGFuZGxlLCBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRo
QnVmZmVyRm9ybWF0KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2FtcGxlclN0YXRlKGds
OjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5kZXgsIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNh
bXBsZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZShnbDo6U2FtcGxlclR5cGUg
dHlwZSwgaW50IGluZGV4LCBnbDo6VGV4dHVyZSAqdGV4dHVyZSkgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIHNldFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVyaXplclN0YXRlICZyYXN0
ZXJTdGF0ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRCbGVuZFN0YXRlKGNvbnN0IGdsOjpC
bGVuZFN0YXRlICZibGVuZFN0YXRlLCBjb25zdCBnbDo6Q29sb3IgJmJsZW5kQ29sb3IsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZU1hc2spID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgZ2w6OkRlcHRoU3Rl
bmNpbFN0YXRlICZkZXB0aFN0ZW5jaWxTdGF0ZSwgaW50IHN0ZW5jaWxSZWYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGVuY2lsQmFja1JlZiwgYm9vbCBmcm9u
dEZhY2VDQ1cpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTY2lzc29yUmVjdGFuZ2xlKGNv
bnN0IGdsOjpSZWN0YW5nbGUgJnNjaXNzb3IsIGJvb2wgZW5hYmxlZCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBzZXRWaWV3cG9ydChjb25zdCBnbDo6UmVjdGFuZ2xlICZ2aWV3cG9ydCwgZmxvYXQg
ek5lYXIsIGZsb2F0IHpGYXIsIEdMZW51bSBkcmF3TW9kZSwgR0xlbnVtIGZyb250RmFjZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmVWaWV3cG9ydCkgPSAwOworCisg
ICAgdmlydHVhbCBib29sIGFwcGx5UmVuZGVyVGFyZ2V0KGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVC
dWZmZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTaGFkZXJzKGdsOjpQcm9ncmFtQmlu
YXJ5ICpwcm9ncmFtQmluYXJ5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5VW5pZm9ybXMo
Z2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnksIGdsOjpVbmlmb3JtQXJyYXkgKnVuaWZv
cm1BcnJheSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhcHBseVByaW1pdGl2ZVR5cGUoR0xlbnVt
IHByaW1pdGl2ZVR5cGUsIEdMc2l6ZWkgZWxlbWVudENvdW50KSA9IDA7CisgICAgdmlydHVhbCBH
TGVudW0gYXBwbHlWZXJ0ZXhCdWZmZXIoZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnks
IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgdmVydGV4QXR0cmlidXRlc1tdLCBHTGludCBmaXJzdCwgR0xz
aXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpID0gMDsKKyAgICB2aXJ0dWFsIEdMZW51bSBh
cHBseUluZGV4QnVmZmVyKGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVu
dEFycmF5QnVmZmVyLCBHTHNpemVpIGNvdW50LCBHTGVudW0gbW9kZSwgR0xlbnVtIHR5cGUsIFRy
YW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbykgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRy
YXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBj
b3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxl
bWVudEFycmF5QnVmZmVyLCBjb25zdCBUcmFuc2xhdGVkSW5kZXhEYXRhICZpbmRleEluZm8sIEdM
c2l6ZWkgaW5zdGFuY2VzKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoY29uc3QgZ2w6
OkNsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMsIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVCdWZm
ZXIpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBtYXJrQWxsU3RhdGVEaXJ0eSgpID0gMDsKKwor
ICAgIC8vIGxvc3QgZGV2aWNlCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeURldmljZUxvc3QoKSA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzRGV2aWNlTG9zdCgpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgdGVzdERldmljZUxvc3QoYm9vbCBub3RpZnkpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdGVz
dERldmljZVJlc2V0dGFibGUoKSA9IDA7CisKKyAgICAvLyBSZW5kZXJlciBjYXBhYmlsaXRpZXMK
KyAgICB2aXJ0dWFsIERXT1JEIGdldEFkYXB0ZXJWZW5kb3IoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgR1VJRCBnZXRBZGFwdGVySWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKworICAgIHZp
cnR1YWwgYm9vbCBnZXRCR1JBVGV4dHVyZVN1cHBvcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGdldERYVDFUZXh0dXJlU3VwcG9ydCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
RFhUM1RleHR1cmVTdXBwb3J0KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXREWFQ1VGV4dHVy
ZVN1cHBvcnQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGdldEV2ZW50UXVlcnlTdXBwb3J0KCkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQoYm9vbCAqZmls
dGVyaW5nLCBib29sICpyZW5kZXJhYmxlKSA9IDA7CisgICAgdmlydHVhbCBib29sIGdldEZsb2F0
MTZUZXh0dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wgKnJlbmRlcmFibGUpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0THVtaW5hbmNlVGV4dHVyZVN1cHBvcnQoKSA9IDA7CisgICAg
dmlydHVhbCBib29sIGdldEx1bWluYW5jZUFscGhhVGV4dHVyZVN1cHBvcnQoKSA9IDA7CisgICAg
Ym9vbCBnZXRWZXJ0ZXhUZXh0dXJlU3VwcG9ydCgpIGNvbnN0IHsgcmV0dXJuIGdldE1heFZlcnRl
eFRleHR1cmVJbWFnZVVuaXRzKCkgPiAwOyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0
TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNp
Z25lZCBpbnQgZ2V0TWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlc2VydmVkRnJhZ21lbnRV
bmlmb3JtVmVjdG9ycygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRN
YXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IGludCBnZXRNYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgdW5zaWduZWQgaW50IGdldE1heFZhcnlpbmdWZWN0b3JzKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBnZXROb25Qb3dlcjJUZXh0dXJlU3VwcG9ydCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0RGVwdGhUZXh0dXJlU3VwcG9ydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgZ2V0T2NjbHVzaW9uUXVlcnlTdXBwb3J0KCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBnZXRJbnN0YW5jaW5nU3VwcG9ydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0VGV4dHVyZUZpbHRlckFuaXNvdHJvcHlTdXBwb3J0KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgZmxvYXQgZ2V0VGV4dHVyZU1heEFuaXNvdHJvcHkoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGdldFNoYXJlSGFuZGxlU3VwcG9ydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0RGVyaXZhdGl2ZUluc3RydWN0aW9uU3VwcG9ydCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0UG9zdFN1YkJ1ZmZlclN1cHBvcnQoKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIGludCBnZXRNYWpvclNoYWRlck1vZGVsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
ZmxvYXQgZ2V0TWF4UG9pbnRTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGdldE1h
eFZpZXdwb3J0RGltZW5zaW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGdldE1heFRl
eHR1cmVXaWR0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBnZXRNYXhUZXh0dXJlSGVp
Z2h0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXQzMkJpdEluZGV4U3VwcG9ydCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBnZXRNaW5Td2FwSW50ZXJ2YWwoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBpbnQgZ2V0TWF4U3dhcEludGVydmFsKCkgY29uc3QgPSAwOworCisg
ICAgdmlydHVhbCBHTHNpemVpIGdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSBjb25zdCA9IDA7CisK
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhSZW5kZXJUYXJnZXRzKCkgY29uc3QgPSAw
OworCisgICAgLy8gUGl4ZWwgb3BlcmF0aW9ucworICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9SZW5k
ZXJUYXJnZXQoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqZGVzdCwgVGV4dHVyZVN0b3JhZ2VJ
bnRlcmZhY2UyRCAqc291cmNlKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNvcHlUb1JlbmRlclRh
cmdldChUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKmRlc3QsIFRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlQ3ViZSAqc291cmNlKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY29weUltYWdlKGds
OjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJl
Y3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc3RvcmFn
ZSwgR0xpbnQgbGV2ZWwpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29weUltYWdlKGdsOjpGcmFt
ZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdM
ZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGJsaXRS
ZWN0KGdsOjpGcmFtZWJ1ZmZlciAqcmVhZFRhcmdldCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmcmVh
ZFJlY3QsIGdsOjpGcmFtZWJ1ZmZlciAqZHJhd1RhcmdldCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAm
ZHJhd1JlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxpdFJlbmRlclRhcmdl
dCwgYm9vbCBibGl0RGVwdGhTdGVuY2lsKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhl
bHMoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgb3V0cHV0UGl0Y2gsIGJvb2wgcGFja1Jl
dmVyc2VSb3dPcmRlciwgR0xpbnQgcGFja0FsaWdubWVudCwgdm9pZCogcGl4ZWxzKSA9IDA7CisK
KyAgICAvLyBSZW5kZXJUYXJnZXQgY3JlYXRpb24KKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAq
Y3JlYXRlUmVuZGVyVGFyZ2V0KFN3YXBDaGFpbiAqc3dhcENoYWluLCBib29sIGRlcHRoKSA9IDA7
CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmNyZWF0ZVJlbmRlclRhcmdldChpbnQgd2lkdGgs
IGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywgYm9vbCBkZXB0aCkg
PSAwOworCisgICAgLy8gU2hhZGVyIG9wZXJhdGlvbnMKKyAgICB2aXJ0dWFsIFNoYWRlckV4ZWN1
dGFibGUgKmxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3Ro
LCByeDo6U2hhZGVyVHlwZSB0eXBlKSA9IDA7CisgICAgdmlydHVhbCBTaGFkZXJFeGVjdXRhYmxl
ICpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBjaGFyICpz
aGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0eXBlKSA9IDA7CisKKyAgICAvLyBJbWFnZSBvcGVy
YXRpb25zCisgICAgdmlydHVhbCBJbWFnZSAqY3JlYXRlSW1hZ2UoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGdlbmVyYXRlTWlwbWFwKEltYWdlICpkZXN0LCBJbWFnZSAqc291cmNlKSA9IDA7Cisg
ICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChTd2FwQ2hh
aW4gKnN3YXBDaGFpbikgPSAwOworICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRl
eHR1cmVTdG9yYWdlMkQoaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0g
dXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCkgPSAwOworICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdl
Q3ViZShpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2FnZSwgYm9v
bCBmb3JjZVJlbmRlcmFibGUsIGludCBzaXplKSA9IDA7CisKKyAgICAvLyBCdWZmZXIgY3JlYXRp
b24KKyAgICB2aXJ0dWFsIFZlcnRleEJ1ZmZlciAqY3JlYXRlVmVydGV4QnVmZmVyKCkgPSAwOwor
ICAgIHZpcnR1YWwgSW5kZXhCdWZmZXIgKmNyZWF0ZUluZGV4QnVmZmVyKCkgPSAwOworICAgIHZp
cnR1YWwgQnVmZmVyU3RvcmFnZSAqY3JlYXRlQnVmZmVyU3RvcmFnZSgpID0gMDsKKworICAgIC8v
IFF1ZXJ5IGFuZCBGZW5jZSBjcmVhdGlvbgorICAgIHZpcnR1YWwgUXVlcnlJbXBsICpjcmVhdGVR
dWVyeShHTGVudW0gdHlwZSkgPSAwOworICAgIHZpcnR1YWwgRmVuY2VJbXBsICpjcmVhdGVGZW5j
ZSgpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRMVUlEKExVSUQgKmFkYXB0ZXJMdWlkKSBj
b25zdCA9IDA7CisKKyAgcHJvdGVjdGVkOgorICAgIGJvb2wgaW5pdGlhbGl6ZUNvbXBpbGVyKCk7
CisgICAgU2hhZGVyQmxvYiAqY29tcGlsZVRvQmluYXJ5KGdsOjpJbmZvTG9nICZpbmZvTG9nLCBj
b25zdCBjaGFyICpobHNsLCBjb25zdCBjaGFyICpwcm9maWxlLCBVSU5UIG9wdGltaXphdGlvbkZs
YWdzLCBib29sIGFsdGVybmF0ZUZsYWdzKTsKKworICAgIGVnbDo6RGlzcGxheSAqbURpc3BsYXk7
CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVuZGVyZXIpOwor
CisgICAgSE1PRFVMRSBtRDNkQ29tcGlsZXJNb2R1bGU7CisgICAgcENvbXBpbGVGdW5jIG1EM0RD
b21waWxlRnVuYzsKK307CisKK30KKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfUkVOREVS
RVJfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvU2hhZGVyQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckNhY2hlLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckNhY2hlLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEy
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU2hhZGVy
Q2FjaGU6IERlZmluZXMgcng6OlNoYWRlckNhY2hlLCBhIGNhY2hlIG9mIERpcmVjdDNEIHNoYWRl
ciBvYmplY3RzCisvLyBrZXllZCBieSB0aGVpciBieXRlIGNvZGUuCisKKyNpZm5kZWYgTElCR0xF
U1YyX1JFTkRFUkVSX1NIQURFUl9DQUNIRV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJf
U0hBREVSX0NBQ0hFX0hfCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNl
IHJ4Cit7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgU2hhZGVyT2JqZWN0PgorY2xhc3MgU2hhZGVyQ2Fj
aGUKK3sKKyAgcHVibGljOgorICAgIFNoYWRlckNhY2hlKCkgOiBtRGV2aWNlKE5VTEwpCisgICAg
eworICAgIH0KKworICAgIH5TaGFkZXJDYWNoZSgpCisgICAgeworICAgICAgICAvLyBDYWxsIGNs
ZWFyIHdoaWxlIHRoZSBkZXZpY2UgaXMgc3RpbGwgdmFsaWQuCisgICAgICAgIEFTU0VSVChtTWFw
LmVtcHR5KCkpOworICAgIH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZShJRGlyZWN0M0REZXZpY2U5
KiBkZXZpY2UpCisgICAgeworICAgICAgICBtRGV2aWNlID0gZGV2aWNlOworICAgIH0KKworICAg
IFNoYWRlck9iamVjdCAqY3JlYXRlKGNvbnN0IERXT1JEICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0
aCkKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nIGtleShyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihmdW5jdGlvbiksIGxlbmd0aCk7CisgICAgICAgIHR5cGVuYW1lIE1hcDo6aXRlcmF0
b3IgaXQgPSBtTWFwLmZpbmQoa2V5KTsKKyAgICAgICAgaWYgKGl0ICE9IG1NYXAuZW5kKCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPkFkZFJlZigpOworICAgICAgICAgICAg
cmV0dXJuIGl0LT5zZWNvbmQ7CisgICAgICAgIH0KKworICAgICAgICBTaGFkZXJPYmplY3QgKnNo
YWRlcjsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBjcmVhdGVTaGFkZXIoZnVuY3Rpb24sICZz
aGFkZXIpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmFuZG9tIGV2aWN0aW9u
IHBvbGljeS4KKyAgICAgICAgaWYgKG1NYXAuc2l6ZSgpID49IGtNYXhNYXBTaXplKQorICAgICAg
ICB7CisgICAgICAgICAgICBtTWFwLmJlZ2luKCktPnNlY29uZC0+UmVsZWFzZSgpOworICAgICAg
ICAgICAgbU1hcC5lcmFzZShtTWFwLmJlZ2luKCkpOworICAgICAgICB9CisKKyAgICAgICAgc2hh
ZGVyLT5BZGRSZWYoKTsKKyAgICAgICAgbU1hcFtrZXldID0gc2hhZGVyOworCisgICAgICAgIHJl
dHVybiBzaGFkZXI7CisgICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBm
b3IgKHR5cGVuYW1lIE1hcDo6aXRlcmF0b3IgaXQgPSBtTWFwLmJlZ2luKCk7IGl0ICE9IG1NYXAu
ZW5kKCk7ICsraXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPlJlbGVhc2Uo
KTsKKyAgICAgICAgfQorCisgICAgICAgIG1NYXAuY2xlYXIoKTsKKyAgICB9CisKKyAgcHJpdmF0
ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oU2hhZGVyQ2FjaGUpOworCisgICAgY29u
c3Qgc3RhdGljIHNpemVfdCBrTWF4TWFwU2l6ZSA9IDEwMDsKKworICAgIEhSRVNVTFQgY3JlYXRl
U2hhZGVyKGNvbnN0IERXT1JEICpmdW5jdGlvbiwgSURpcmVjdDNEVmVydGV4U2hhZGVyOSAqKnNo
YWRlcikKKyAgICB7CisgICAgICAgIHJldHVybiBtRGV2aWNlLT5DcmVhdGVWZXJ0ZXhTaGFkZXIo
ZnVuY3Rpb24sIHNoYWRlcik7CisgICAgfQorCisgICAgSFJFU1VMVCBjcmVhdGVTaGFkZXIoY29u
c3QgRFdPUkQgKmZ1bmN0aW9uLCBJRGlyZWN0M0RQaXhlbFNoYWRlcjkgKipzaGFkZXIpCisgICAg
eworICAgICAgICByZXR1cm4gbURldmljZS0+Q3JlYXRlUGl4ZWxTaGFkZXIoZnVuY3Rpb24sIHNo
YWRlcik7CisgICAgfQorCisjaWZuZGVmIEhBU0hfTUFQCisjIGlmZGVmIF9NU0NfVkVSCisjICBk
ZWZpbmUgSEFTSF9NQVAgc3RkZXh0OjpoYXNoX21hcAorIyBlbHNlCisjICBkZWZpbmUgSEFTSF9N
QVAgc3RkOjp1bm9yZGVyZWRfbWFwCisjIGVuZGlmCisjZW5kaWYKKworICAgIHR5cGVkZWYgSEFT
SF9NQVA8c3RkOjpzdHJpbmcsIFNoYWRlck9iamVjdCo+IE1hcDsKKyAgICBNYXAgbU1hcDsKKwor
ICAgIElEaXJlY3QzRERldmljZTkgKm1EZXZpY2U7Cit9OworCit0eXBlZGVmIFNoYWRlckNhY2hl
PElEaXJlY3QzRFZlcnRleFNoYWRlcjk+IFZlcnRleFNoYWRlckNhY2hlOwordHlwZWRlZiBTaGFk
ZXJDYWNoZTxJRGlyZWN0M0RQaXhlbFNoYWRlcjk+IFBpeGVsU2hhZGVyQ2FjaGU7CisKK30KKwor
I2VuZGlmICAgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1NIQURFUl9DQUNIRV9IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRh
YmxlOS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlOS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFi
bGU5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorI2luY2x1ZGUgInByZWNvbXBp
bGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTaGFkZXJFeGVjdXRhYmxlOS5jcHA6IElt
cGxlbWVudHMgYSBEM0Q5LXNwZWNpZmljIGNsYXNzIHRvIGNvbnRhaW4gc2hhZGVyCisvLyBleGVj
dXRhYmxlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTkuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgor
CituYW1lc3BhY2UgcngKK3sKKworU2hhZGVyRXhlY3V0YWJsZTk6OlNoYWRlckV4ZWN1dGFibGU5
KGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCBJRGlyZWN0M0RQaXhlbFNoYWRl
cjkgKmV4ZWN1dGFibGUpCisgICAgOiBTaGFkZXJFeGVjdXRhYmxlKGZ1bmN0aW9uLCBsZW5ndGgp
Cit7CisgICAgbVBpeGVsRXhlY3V0YWJsZSA9IGV4ZWN1dGFibGU7CisgICAgbVZlcnRleEV4ZWN1
dGFibGUgPSBOVUxMOworfQorCitTaGFkZXJFeGVjdXRhYmxlOTo6U2hhZGVyRXhlY3V0YWJsZTko
Y29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIElEaXJlY3QzRFZlcnRleFNoYWRl
cjkgKmV4ZWN1dGFibGUpCisgICAgOiBTaGFkZXJFeGVjdXRhYmxlKGZ1bmN0aW9uLCBsZW5ndGgp
Cit7CisgICAgbVZlcnRleEV4ZWN1dGFibGUgPSBleGVjdXRhYmxlOworICAgIG1QaXhlbEV4ZWN1
dGFibGUgPSBOVUxMOworfQorCitTaGFkZXJFeGVjdXRhYmxlOTo6flNoYWRlckV4ZWN1dGFibGU5
KCkKK3sKKyAgICBpZiAobVZlcnRleEV4ZWN1dGFibGUpCisgICAgeworICAgICAgICBtVmVydGV4
RXhlY3V0YWJsZS0+UmVsZWFzZSgpOworICAgIH0KKyAgICBpZiAobVBpeGVsRXhlY3V0YWJsZSkK
KyAgICB7CisgICAgICAgIG1QaXhlbEV4ZWN1dGFibGUtPlJlbGVhc2UoKTsKKyAgICB9Cit9CisK
K1NoYWRlckV4ZWN1dGFibGU5ICpTaGFkZXJFeGVjdXRhYmxlOTo6bWFrZVNoYWRlckV4ZWN1dGFi
bGU5KFNoYWRlckV4ZWN1dGFibGUgKmV4ZWN1dGFibGUpCit7CisgICAgQVNTRVJUKEhBU19EWU5B
TUlDX1RZUEUoU2hhZGVyRXhlY3V0YWJsZTkqLCBleGVjdXRhYmxlKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFNoYWRlckV4ZWN1dGFibGU5Kj4oZXhlY3V0YWJsZSk7Cit9CisKK0lEaXJlY3Qz
RFZlcnRleFNoYWRlcjkgKlNoYWRlckV4ZWN1dGFibGU5OjpnZXRWZXJ0ZXhTaGFkZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtVmVydGV4RXhlY3V0YWJsZTsKK30KKworSURpcmVjdDNEUGl4ZWxT
aGFkZXI5ICpTaGFkZXJFeGVjdXRhYmxlOTo6Z2V0UGl4ZWxTaGFkZXIoKSBjb25zdAoreworICAg
IHJldHVybiBtUGl4ZWxFeGVjdXRhYmxlOworfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9TaGFkZXJFeGVjdXRhYmxlOS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTkuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hh
ZGVyRXhlY3V0YWJsZTkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gU2hhZGVyRXhlY3V0YWJsZTkuaDogRGVmaW5lcyBhIEQzRDktc3BlY2lm
aWMgY2xhc3MgdG8gY29udGFpbiBzaGFkZXIKKy8vIGV4ZWN1dGFibGUgaW1wbGVtZW50YXRpb24g
ZGV0YWlscy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VUQUJMRTlf
SF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1NIQURFUkVYRUNVVEFCTEU5X0hfCisKKyNp
bmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZS5oIgorCituYW1lc3Bh
Y2UgcngKK3sKKworY2xhc3MgU2hhZGVyRXhlY3V0YWJsZTkgOiBwdWJsaWMgU2hhZGVyRXhlY3V0
YWJsZQoreworICBwdWJsaWM6CisgICAgU2hhZGVyRXhlY3V0YWJsZTkoY29uc3Qgdm9pZCAqZnVu
Y3Rpb24sIHNpemVfdCBsZW5ndGgsIElEaXJlY3QzRFBpeGVsU2hhZGVyOSAqZXhlY3V0YWJsZSk7
CisgICAgU2hhZGVyRXhlY3V0YWJsZTkoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5n
dGgsIElEaXJlY3QzRFZlcnRleFNoYWRlcjkgKmV4ZWN1dGFibGUpOworICAgIHZpcnR1YWwgflNo
YWRlckV4ZWN1dGFibGU5KCk7CisKKyAgICBzdGF0aWMgU2hhZGVyRXhlY3V0YWJsZTkgKm1ha2VT
aGFkZXJFeGVjdXRhYmxlOShTaGFkZXJFeGVjdXRhYmxlICpleGVjdXRhYmxlKTsKKworICAgIElE
aXJlY3QzRFBpeGVsU2hhZGVyOSAqZ2V0UGl4ZWxTaGFkZXIoKSBjb25zdDsKKyAgICBJRGlyZWN0
M0RWZXJ0ZXhTaGFkZXI5ICpnZXRWZXJ0ZXhTaGFkZXIoKSBjb25zdDsKKworICBwcml2YXRlOgor
ICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTaGFkZXJFeGVjdXRhYmxlOSk7CisKKyAgICBJ
RGlyZWN0M0RQaXhlbFNoYWRlcjkgKm1QaXhlbEV4ZWN1dGFibGU7CisgICAgSURpcmVjdDNEVmVy
dGV4U2hhZGVyOSAqbVZlcnRleEV4ZWN1dGFibGU7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJH
TEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VUQUJMRTlfSF8KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL1NoYWRlckV4ZWN1dGFibGUxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOSBA
QAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTaGFk
ZXJFeGVjdXRhYmxlMTEuY3BwOiBJbXBsZW1lbnRzIGEgRDNEMTEtc3BlY2lmaWMgY2xhc3MgdG8g
Y29udGFpbiBzaGFkZXIKKy8vIGV4ZWN1dGFibGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KKwor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEuaCIKKworI2lu
Y2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworU2hhZGVyRXhlY3V0
YWJsZTExOjpTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVfdCBs
ZW5ndGgsIElEM0QxMVBpeGVsU2hhZGVyICpleGVjdXRhYmxlKQorICAgIDogU2hhZGVyRXhlY3V0
YWJsZShmdW5jdGlvbiwgbGVuZ3RoKQoreworICAgIG1QaXhlbEV4ZWN1dGFibGUgPSBleGVjdXRh
YmxlOworICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gTlVMTDsKKyAgICBtR2VvbWV0cnlFeGVjdXRh
YmxlID0gTlVMTDsKKworICAgIG1Db25zdGFudEJ1ZmZlciA9IE5VTEw7Cit9CisKK1NoYWRlckV4
ZWN1dGFibGUxMTo6U2hhZGVyRXhlY3V0YWJsZTExKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXpl
X3QgbGVuZ3RoLCBJRDNEMTFWZXJ0ZXhTaGFkZXIgKmV4ZWN1dGFibGUpCisgICAgOiBTaGFkZXJF
eGVjdXRhYmxlKGZ1bmN0aW9uLCBsZW5ndGgpCit7CisgICAgbVZlcnRleEV4ZWN1dGFibGUgPSBl
eGVjdXRhYmxlOworICAgIG1QaXhlbEV4ZWN1dGFibGUgPSBOVUxMOworICAgIG1HZW9tZXRyeUV4
ZWN1dGFibGUgPSBOVUxMOworCisgICAgbUNvbnN0YW50QnVmZmVyID0gTlVMTDsKK30KKworU2hh
ZGVyRXhlY3V0YWJsZTExOjpTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAqZnVuY3Rpb24s
IHNpemVfdCBsZW5ndGgsIElEM0QxMUdlb21ldHJ5U2hhZGVyICpleGVjdXRhYmxlKQorICAgIDog
U2hhZGVyRXhlY3V0YWJsZShmdW5jdGlvbiwgbGVuZ3RoKQoreworICAgIG1HZW9tZXRyeUV4ZWN1
dGFibGUgPSBleGVjdXRhYmxlOworICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gTlVMTDsKKyAgICBt
UGl4ZWxFeGVjdXRhYmxlID0gTlVMTDsKKworICAgIG1Db25zdGFudEJ1ZmZlciA9IE5VTEw7Cit9
CisKK1NoYWRlckV4ZWN1dGFibGUxMTo6flNoYWRlckV4ZWN1dGFibGUxMSgpCit7CisgICAgaWYg
KG1WZXJ0ZXhFeGVjdXRhYmxlKQorICAgIHsKKyAgICAgICAgbVZlcnRleEV4ZWN1dGFibGUtPlJl
bGVhc2UoKTsKKyAgICB9CisgICAgaWYgKG1QaXhlbEV4ZWN1dGFibGUpCisgICAgeworICAgICAg
ICBtUGl4ZWxFeGVjdXRhYmxlLT5SZWxlYXNlKCk7CisgICAgfQorICAgIGlmIChtR2VvbWV0cnlF
eGVjdXRhYmxlKQorICAgIHsKKyAgICAgICAgbUdlb21ldHJ5RXhlY3V0YWJsZS0+UmVsZWFzZSgp
OworICAgIH0KKyAgICAKKyAgICBpZiAobUNvbnN0YW50QnVmZmVyKQorICAgIHsKKyAgICAgICAg
bUNvbnN0YW50QnVmZmVyLT5SZWxlYXNlKCk7CisgICAgfQorfQorCitTaGFkZXJFeGVjdXRhYmxl
MTEgKlNoYWRlckV4ZWN1dGFibGUxMTo6bWFrZVNoYWRlckV4ZWN1dGFibGUxMShTaGFkZXJFeGVj
dXRhYmxlICpleGVjdXRhYmxlKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKFNoYWRl
ckV4ZWN1dGFibGUxMSosIGV4ZWN1dGFibGUpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2hh
ZGVyRXhlY3V0YWJsZTExKj4oZXhlY3V0YWJsZSk7Cit9CisKK0lEM0QxMVZlcnRleFNoYWRlciAq
U2hhZGVyRXhlY3V0YWJsZTExOjpnZXRWZXJ0ZXhTaGFkZXIoKSBjb25zdAoreworICAgIHJldHVy
biBtVmVydGV4RXhlY3V0YWJsZTsKK30KKworSUQzRDExUGl4ZWxTaGFkZXIgKlNoYWRlckV4ZWN1
dGFibGUxMTo6Z2V0UGl4ZWxTaGFkZXIoKSBjb25zdAoreworICAgIHJldHVybiBtUGl4ZWxFeGVj
dXRhYmxlOworfQorCitJRDNEMTFHZW9tZXRyeVNoYWRlciAqU2hhZGVyRXhlY3V0YWJsZTExOjpn
ZXRHZW9tZXRyeVNoYWRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1HZW9tZXRyeUV4ZWN1dGFi
bGU7Cit9CisKK0lEM0QxMUJ1ZmZlciAqU2hhZGVyRXhlY3V0YWJsZTExOjpnZXRDb25zdGFudEJ1
ZmZlcihJRDNEMTFEZXZpY2UgKmRldmljZSwgdW5zaWduZWQgaW50IHJlZ2lzdGVyQ291bnQpCit7
CisgICAgaWYgKCFtQ29uc3RhbnRCdWZmZXIgJiYgcmVnaXN0ZXJDb3VudCA+IDApCisgICAgewor
ICAgICAgICBEM0QxMV9CVUZGRVJfREVTQyBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uID0gezB9
OworICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLkJ5dGVXaWR0aCA9IHJlZ2lzdGVy
Q291bnQgKiBzaXplb2YoZmxvYXRbNF0pOworICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0
aW9uLlVzYWdlID0gRDNEMTFfVVNBR0VfRFlOQU1JQzsKKyAgICAgICAgY29uc3RhbnRCdWZmZXJE
ZXNjcmlwdGlvbi5CaW5kRmxhZ3MgPSBEM0QxMV9CSU5EX0NPTlNUQU5UX0JVRkZFUjsKKyAgICAg
ICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5DUFVBY2Nlc3NGbGFncyA9IEQzRDExX0NQVV9B
Q0NFU1NfV1JJVEU7CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uTWlzY0ZsYWdz
ID0gMDsKKyAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5TdHJ1Y3R1cmVCeXRlU3Ry
aWRlID0gMDsKKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVy
KCZjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLCBOVUxMLCAmbUNvbnN0YW50QnVmZmVyKTsKKyAg
ICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbUNv
bnN0YW50QnVmZmVyOworfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVj
dXRhYmxlMTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUxMS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRh
YmxlMTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAxMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gU2hhZGVyRXhlY3V0YWJsZTExLmg6IERlZmluZXMgYSBEM0QxMS1zcGVjaWZpYyBjbGFz
cyB0byBjb250YWluIHNoYWRlcgorLy8gZXhlY3V0YWJsZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxz
LgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9TSEFERVJFWEVDVVRBQkxFMTFfSF8KKyNk
ZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1NIQURFUkVYRUNVVEFCTEUxMV9IXworCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUuaCIKKworbmFtZXNwYWNlIHJ4
Cit7CisKK2NsYXNzIFNoYWRlckV4ZWN1dGFibGUxMSA6IHB1YmxpYyBTaGFkZXJFeGVjdXRhYmxl
Cit7CisgIHB1YmxpYzoKKyAgICBTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAqZnVuY3Rp
b24sIHNpemVfdCBsZW5ndGgsIElEM0QxMVBpeGVsU2hhZGVyICpleGVjdXRhYmxlKTsKKyAgICBT
aGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIElE
M0QxMVZlcnRleFNoYWRlciAqZXhlY3V0YWJsZSk7CisgICAgU2hhZGVyRXhlY3V0YWJsZTExKGNv
bnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCBJRDNEMTFHZW9tZXRyeVNoYWRlciAq
ZXhlY3V0YWJsZSk7CisKKyAgICB2aXJ0dWFsIH5TaGFkZXJFeGVjdXRhYmxlMTEoKTsKKworICAg
IHN0YXRpYyBTaGFkZXJFeGVjdXRhYmxlMTEgKm1ha2VTaGFkZXJFeGVjdXRhYmxlMTEoU2hhZGVy
RXhlY3V0YWJsZSAqZXhlY3V0YWJsZSk7CisKKyAgICBJRDNEMTFQaXhlbFNoYWRlciAqZ2V0UGl4
ZWxTaGFkZXIoKSBjb25zdDsKKyAgICBJRDNEMTFWZXJ0ZXhTaGFkZXIgKmdldFZlcnRleFNoYWRl
cigpIGNvbnN0OworICAgIElEM0QxMUdlb21ldHJ5U2hhZGVyICpnZXRHZW9tZXRyeVNoYWRlcigp
IGNvbnN0OworCisgICAgSUQzRDExQnVmZmVyICpnZXRDb25zdGFudEJ1ZmZlcihJRDNEMTFEZXZp
Y2UgKmRldmljZSwgdW5zaWduZWQgaW50IHJlZ2lzdGVyQ291bnQpOworCisgIHByaXZhdGU6Cisg
ICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNoYWRlckV4ZWN1dGFibGUxMSk7CisKKyAgICBJ
RDNEMTFQaXhlbFNoYWRlciAqbVBpeGVsRXhlY3V0YWJsZTsKKyAgICBJRDNEMTFWZXJ0ZXhTaGFk
ZXIgKm1WZXJ0ZXhFeGVjdXRhYmxlOworICAgIElEM0QxMUdlb21ldHJ5U2hhZGVyICptR2VvbWV0
cnlFeGVjdXRhYmxlOworCisgICAgSUQzRDExQnVmZmVyICptQ29uc3RhbnRCdWZmZXI7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VUQUJMRTExX0hf
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1No
YWRlckV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhl
Y3V0YWJsZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gU2hhZGVyRXhlY3V0YWJsZS5oOiBEZWZpbmVzIGEgcmVuZGVyZXItYWdub3N0aWMgY2xhc3Mg
dG8gY29udGFpbiBzaGFkZXIKKy8vIGV4ZWN1dGFibGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4K
KworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VUQUJMRV9IXworI2RlZmlu
ZSBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VUQUJMRV9IXworCisjaW5jbHVkZSAiY29t
bW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFNoYWRlckV4ZWN1
dGFibGUKK3sKKyAgcHVibGljOgorICAgIFNoYWRlckV4ZWN1dGFibGUoY29uc3Qgdm9pZCAqZnVu
Y3Rpb24sIHNpemVfdCBsZW5ndGgpIDogbUxlbmd0aChsZW5ndGgpCisgICAgeworICAgICAgICBt
RnVuY3Rpb24gPSBuZXcgY2hhcltsZW5ndGhdOworICAgICAgICBtZW1jcHkobUZ1bmN0aW9uLCBm
dW5jdGlvbiwgbGVuZ3RoKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB+U2hhZGVyRXhlY3V0
YWJsZSgpCisgICAgeworICAgICAgICBkZWxldGVbXSBtRnVuY3Rpb247CisgICAgfQorCisgICAg
dm9pZCAqZ2V0RnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1GdW5jdGlv
bjsKKyAgICB9CisKKyAgICBzaXplX3QgZ2V0TGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtTGVuZ3RoOworICAgIH0KKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihTaGFkZXJFeGVjdXRhYmxlKTsKKworICAgIHZvaWQgKm1GdW5jdGlvbjsKKyAg
ICBjb25zdCBzaXplX3QgbUxlbmd0aDsKK307CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9S
RU5ERVJFUl9TSEFERVJFWEVDVVRBQkxFOV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW45LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjku
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9Td2FwQ2hhaW45LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MzQgQEAK
KyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMi0yMDEz
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU3dhcENo
YWluOS5jcHA6IEltcGxlbWVudHMgYSBiYWNrLWVuZCBzcGVjaWZpYyBjbGFzcyBmb3IgdGhlIEQz
RDkgc3dhcCBjaGFpbi4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW45
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyOV91dGlscy5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuaCIKKworbmFtZXNwYWNlIHJ4Cit7
CisKK1N3YXBDaGFpbjk6OlN3YXBDaGFpbjkoUmVuZGVyZXI5ICpyZW5kZXJlciwgSFdORCB3aW5k
b3csIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJh
Y2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCkKKyAgICA6IG1SZW5kZXJl
cihyZW5kZXJlciksIFN3YXBDaGFpbih3aW5kb3csIHNoYXJlSGFuZGxlLCBiYWNrQnVmZmVyRm9y
bWF0LCBkZXB0aEJ1ZmZlckZvcm1hdCkKK3sKKyAgICBtU3dhcENoYWluID0gTlVMTDsKKyAgICBt
QmFja0J1ZmZlciA9IE5VTEw7CisgICAgbURlcHRoU3RlbmNpbCA9IE5VTEw7CisgICAgbVJlbmRl
clRhcmdldCA9IE5VTEw7CisgICAgbU9mZnNjcmVlblRleHR1cmUgPSBOVUxMOworICAgIG1XaWR0
aCA9IC0xOworICAgIG1IZWlnaHQgPSAtMTsKKyAgICBtU3dhcEludGVydmFsID0gLTE7Cit9CisK
K1N3YXBDaGFpbjk6On5Td2FwQ2hhaW45KCkKK3sKKyAgICByZWxlYXNlKCk7Cit9CisKK3ZvaWQg
U3dhcENoYWluOTo6cmVsZWFzZSgpCit7CisgICAgaWYgKG1Td2FwQ2hhaW4pCisgICAgeworICAg
ICAgICBtU3dhcENoYWluLT5SZWxlYXNlKCk7CisgICAgICAgIG1Td2FwQ2hhaW4gPSBOVUxMOwor
ICAgIH0KKworICAgIGlmIChtQmFja0J1ZmZlcikKKyAgICB7CisgICAgICAgIG1CYWNrQnVmZmVy
LT5SZWxlYXNlKCk7CisgICAgICAgIG1CYWNrQnVmZmVyID0gTlVMTDsKKyAgICB9CisKKyAgICBp
ZiAobURlcHRoU3RlbmNpbCkKKyAgICB7CisgICAgICAgIG1EZXB0aFN0ZW5jaWwtPlJlbGVhc2Uo
KTsKKyAgICAgICAgbURlcHRoU3RlbmNpbCA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1SZW5k
ZXJUYXJnZXQpCisgICAgeworICAgICAgICBtUmVuZGVyVGFyZ2V0LT5SZWxlYXNlKCk7CisgICAg
ICAgIG1SZW5kZXJUYXJnZXQgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtT2Zmc2NyZWVuVGV4
dHVyZSkKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlLT5SZWxlYXNlKCk7CisgICAg
ICAgIG1PZmZzY3JlZW5UZXh0dXJlID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobVdpbmRvdykK
KyAgICAgICAgbVNoYXJlSGFuZGxlID0gTlVMTDsKK30KKworc3RhdGljIERXT1JEIGNvbnZlcnRJ
bnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpCit7CisgICAgc3dpdGNoKGludGVydmFsKQorICAgIHsK
KyAgICAgIGNhc2UgMDogcmV0dXJuIEQzRFBSRVNFTlRfSU5URVJWQUxfSU1NRURJQVRFOworICAg
ICAgY2FzZSAxOiByZXR1cm4gRDNEUFJFU0VOVF9JTlRFUlZBTF9PTkU7CisgICAgICBjYXNlIDI6
IHJldHVybiBEM0RQUkVTRU5UX0lOVEVSVkFMX1RXTzsKKyAgICAgIGNhc2UgMzogcmV0dXJuIEQz
RFBSRVNFTlRfSU5URVJWQUxfVEhSRUU7CisgICAgICBjYXNlIDQ6IHJldHVybiBEM0RQUkVTRU5U
X0lOVEVSVkFMX0ZPVVI7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgIH0KKwor
ICAgIHJldHVybiBEM0RQUkVTRU5UX0lOVEVSVkFMX0RFRkFVTFQ7Cit9CisKK0VHTGludCBTd2Fw
Q2hhaW45OjpyZXNpemUoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQp
Cit7CisgICAgLy8gRDNEOSBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIHN3YXAgY2hhaW5zIHdp
dGhvdXQgcmVjcmVhdGluZyB0aGVtCisgICAgcmV0dXJuIHJlc2V0KGJhY2tidWZmZXJXaWR0aCwg
YmFja2J1ZmZlckhlaWdodCwgbVN3YXBJbnRlcnZhbCk7Cit9CisKK0VHTGludCBTd2FwQ2hhaW45
OjpyZXNldChpbnQgYmFja2J1ZmZlcldpZHRoLCBpbnQgYmFja2J1ZmZlckhlaWdodCwgRUdMaW50
IHN3YXBJbnRlcnZhbCkKK3sKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVy
ZXItPmdldERldmljZSgpOworCisgICAgaWYgKGRldmljZSA9PSBOVUxMKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEVHTF9CQURfQUNDRVNTOworICAgIH0KKworICAgIC8vIEV2aWN0IGFsbCBub24t
cmVuZGVyIHRhcmdldCB0ZXh0dXJlcyB0byBzeXN0ZW0gbWVtb3J5IGFuZCByZWxlYXNlIGFsbCBy
ZXNvdXJjZXMKKyAgICAvLyBiZWZvcmUgcmVhbGxvY2F0aW5nIHRoZW0gdG8gZnJlZSB1cCBhcyBt
dWNoIHZpZGVvIG1lbW9yeSBhcyBwb3NzaWJsZS4KKyAgICBkZXZpY2UtPkV2aWN0TWFuYWdlZFJl
c291cmNlcygpOworCisgICAgSFJFU1VMVCByZXN1bHQ7CisKKyAgICAvLyBSZWxlYXNlIHNwZWNp
ZmljIHJlc291cmNlcyB0byBmcmVlIHVwIG1lbW9yeSBmb3IgdGhlIG5ldyByZW5kZXIgdGFyZ2V0
LCB3aGlsZSB0aGUKKyAgICAvLyBvbGQgcmVuZGVyIHRhcmdldCBzdGlsbCBleGlzdHMgZm9yIHRo
ZSBwdXJwb3NlIG9mIHByZXNlcnZpbmcgaXRzIGNvbnRlbnRzLgorICAgIGlmIChtU3dhcENoYWlu
KQorICAgIHsKKyAgICAgICAgbVN3YXBDaGFpbi0+UmVsZWFzZSgpOworICAgICAgICBtU3dhcENo
YWluID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobUJhY2tCdWZmZXIpCisgICAgeworICAgICAg
ICBtQmFja0J1ZmZlci0+UmVsZWFzZSgpOworICAgICAgICBtQmFja0J1ZmZlciA9IE5VTEw7Cisg
ICAgfQorCisgICAgaWYgKG1PZmZzY3JlZW5UZXh0dXJlKQorICAgIHsKKyAgICAgICAgbU9mZnNj
cmVlblRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbU9mZnNjcmVlblRleHR1cmUgPSBOVUxM
OworICAgIH0KKworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgbURlcHRo
U3RlbmNpbC0+UmVsZWFzZSgpOworICAgICAgICBtRGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICB9
CisKKyAgICBIQU5ETEUgKnBTaGFyZUhhbmRsZSA9IE5VTEw7CisgICAgaWYgKCFtV2luZG93ICYm
IG1SZW5kZXJlci0+Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KCkpCisgICAgeworICAgICAgICBwU2hh
cmVIYW5kbGUgPSAmbVNoYXJlSGFuZGxlOworICAgIH0KKworICAgIHJlc3VsdCA9IGRldmljZS0+
Q3JlYXRlVGV4dHVyZShiYWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJIZWlnaHQsIDEsIEQzRFVT
QUdFX1JFTkRFUlRBUkdFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xf
ZDNkOTo6Q29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChtQmFja0J1ZmZlckZvcm1hdCksIEQzRFBP
T0xfREVGQVVMVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1PZmZzY3Jl
ZW5UZXh0dXJlLCBwU2hhcmVIYW5kbGUpOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7
CisgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBvZmZzY3JlZW4gdGV4dHVyZTogJTA4bFgi
LCByZXN1bHQpOworICAgICAgICByZWxlYXNlKCk7CisKKyAgICAgICAgaWYgKGQzZDk6OmlzRGV2
aWNlTG9zdEVycm9yKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xf
Q09OVEVYVF9MT1NUOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIEVHTF9CQURfQUxMT0M7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBJRGly
ZWN0M0RTdXJmYWNlOSAqb2xkUmVuZGVyVGFyZ2V0ID0gbVJlbmRlclRhcmdldDsKKworICAgIHJl
c3VsdCA9IG1PZmZzY3JlZW5UZXh0dXJlLT5HZXRTdXJmYWNlTGV2ZWwoMCwgJm1SZW5kZXJUYXJn
ZXQpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICBpZiAob2xkUmVuZGVy
VGFyZ2V0KQorICAgIHsKKyAgICAgICAgUkVDVCByZWN0ID0KKyAgICAgICAgeworICAgICAgICAg
ICAgMCwgMCwKKyAgICAgICAgICAgIG1XaWR0aCwgbUhlaWdodAorICAgICAgICB9OworCisgICAg
ICAgIGlmIChyZWN0LnJpZ2h0ID4gc3RhdGljX2Nhc3Q8TE9ORz4oYmFja2J1ZmZlcldpZHRoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmVjdC5yaWdodCA9IGJhY2tidWZmZXJXaWR0aDsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChyZWN0LmJvdHRvbSA+IHN0YXRpY19jYXN0PExPTkc+KGJh
Y2tidWZmZXJIZWlnaHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZWN0LmJvdHRvbSA9IGJh
Y2tidWZmZXJIZWlnaHQ7CisgICAgICAgIH0KKworICAgICAgICBtUmVuZGVyZXItPmVuZFNjZW5l
KCk7CisKKyAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5TdHJldGNoUmVjdChvbGRSZW5kZXJUYXJn
ZXQsICZyZWN0LCBtUmVuZGVyVGFyZ2V0LCAmcmVjdCwgRDNEVEVYRl9OT05FKTsKKyAgICAgICAg
QVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgICAgICBvbGRSZW5kZXJUYXJnZXQtPlJl
bGVhc2UoKTsKKyAgICB9CisKKyAgICBpZiAobVdpbmRvdykKKyAgICB7CisgICAgICAgIEQzRFBS
RVNFTlRfUEFSQU1FVEVSUyBwcmVzZW50UGFyYW1ldGVycyA9IHswfTsKKyAgICAgICAgcHJlc2Vu
dFBhcmFtZXRlcnMuQXV0b0RlcHRoU3RlbmNpbEZvcm1hdCA9IGdsX2QzZDk6OkNvbnZlcnRSZW5k
ZXJidWZmZXJGb3JtYXQobURlcHRoQnVmZmVyRm9ybWF0KTsKKyAgICAgICAgcHJlc2VudFBhcmFt
ZXRlcnMuQmFja0J1ZmZlckNvdW50ID0gMTsKKyAgICAgICAgcHJlc2VudFBhcmFtZXRlcnMuQmFj
a0J1ZmZlckZvcm1hdCA9IGdsX2QzZDk6OkNvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQobUJhY2tC
dWZmZXJGb3JtYXQpOworICAgICAgICBwcmVzZW50UGFyYW1ldGVycy5FbmFibGVBdXRvRGVwdGhT
dGVuY2lsID0gRkFMU0U7CisgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLkZsYWdzID0gMDsKKyAg
ICAgICAgcHJlc2VudFBhcmFtZXRlcnMuaERldmljZVdpbmRvdyA9IG1XaW5kb3c7CisgICAgICAg
IHByZXNlbnRQYXJhbWV0ZXJzLk11bHRpU2FtcGxlUXVhbGl0eSA9IDA7ICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQKKyAgICAgICAgcHJlc2VudFBhcmFtZXRlcnMuTXVs
dGlTYW1wbGVUeXBlID0gRDNETVVMVElTQU1QTEVfTk9ORTsgICAvLyBGSVhNRTogVW5pbXBsZW1l
bnRlZAorICAgICAgICBwcmVzZW50UGFyYW1ldGVycy5QcmVzZW50YXRpb25JbnRlcnZhbCA9IGNv
bnZlcnRJbnRlcnZhbChzd2FwSW50ZXJ2YWwpOworICAgICAgICBwcmVzZW50UGFyYW1ldGVycy5T
d2FwRWZmZWN0ID0gRDNEU1dBUEVGRkVDVF9ESVNDQVJEOworICAgICAgICBwcmVzZW50UGFyYW1l
dGVycy5XaW5kb3dlZCA9IFRSVUU7CisgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZm
ZXJXaWR0aCA9IGJhY2tidWZmZXJXaWR0aDsKKyAgICAgICAgcHJlc2VudFBhcmFtZXRlcnMuQmFj
a0J1ZmZlckhlaWdodCA9IGJhY2tidWZmZXJIZWlnaHQ7CisKKyAgICAgICAgLy8gaHR0cDovL2Ny
YnVnLmNvbS8xNDAyMzkKKyAgICAgICAgLy8gaHR0cDovL2NyYnVnLmNvbS8xNDM0MzQKKyAgICAg
ICAgLy8KKyAgICAgICAgLy8gU29tZSBBTUQvSW50ZWwgc3dpdGNoYWJsZSBzeXN0ZW1zIC8gZHJp
dmVycyBhcHBlYXIgdG8gcm91bmQgc3dhcCBjaGFpbiBzdXJmYWNlcyB0byBhIG11bHRpcGxlIG9m
IDY0IHBpeGVscyBpbiB3aWR0aAorICAgICAgICAvLyB3aGVuIHVzaW5nIHRoZSBpbnRlZ3JhdGVk
IEludGVsLiBUaGlzIHJvdW5kcyB0aGUgd2lkdGggdXAgcmF0aGVyIHRoYW4gZG93bi4KKyAgICAg
ICAgLy8KKyAgICAgICAgLy8gU29tZSBub24tc3dpdGNoYWJsZSBBTUQgR1BVcyAvIGRyaXZlcnMg
ZG8gbm90IHJlc3BlY3QgdGhlIHNvdXJjZSByZWN0YW5nbGUgdG8gUHJlc2VudC4gVGhlcmVmb3Jl
LCB3aGVuIHRoZSB2ZW5kb3IgSUQKKyAgICAgICAgLy8gaXMgbm90IEludGVsLCB0aGUgYmFjayBi
dWZmZXIgd2lkdGggbXVzdCBiZSBleGFjdGx5IHRoZSBzYW1lIHdpZHRoIGFzIHRoZSB3aW5kb3cg
b3IgaG9yaXpvbnRhbCBzY2FsaW5nIHdpbGwgb2NjdXIuCisgICAgICAgIGlmIChtUmVuZGVyZXIt
PmdldEFkYXB0ZXJWZW5kb3IoKSA9PSBWRU5ET1JfSURfSU5URUwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZmZXJXaWR0aCA9IChwcmVzZW50UGFyYW1l
dGVycy5CYWNrQnVmZmVyV2lkdGggKyA2MykgLyA2NCAqIDY0OworICAgICAgICB9CisKKyAgICAg
ICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVBZGRpdGlvbmFsU3dhcENoYWluKCZwcmVzZW50UGFy
YW1ldGVycywgJm1Td2FwQ2hhaW4pOworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01F
TU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCByZXN1bHQgPT0gRDNERVJSX0lOVkFM
SURDQUxMIHx8IHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTE9TVCk7CisKKyAgICAgICAgICAgIEVS
UigiQ291bGQgbm90IGNyZWF0ZSBhZGRpdGlvbmFsIHN3YXAgY2hhaW5zIG9yIG9mZnNjcmVlbiBz
dXJmYWNlczogJTA4bFgiLCByZXN1bHQpOworICAgICAgICAgICAgcmVsZWFzZSgpOworCisgICAg
ICAgICAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRUdMX0NPTlRFWFRfTE9TVDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gRUdMX0JBRF9BTExPQzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJl
c3VsdCA9IG1Td2FwQ2hhaW4tPkdldEJhY2tCdWZmZXIoMCwgRDNEQkFDS0JVRkZFUl9UWVBFX01P
Tk8sICZtQmFja0J1ZmZlcik7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7Cisg
ICAgICAgIEludmFsaWRhdGVSZWN0KG1XaW5kb3csIE5VTEwsIEZBTFNFKTsKKyAgICB9CisKKyAg
ICBpZiAobURlcHRoQnVmZmVyRm9ybWF0ICE9IEdMX05PTkUpCisgICAgeworICAgICAgICByZXN1
bHQgPSBkZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFN1cmZhY2UoYmFja2J1ZmZlcldpZHRoLCBi
YWNrYnVmZmVySGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2xfZDNkOTo6Q29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChtRGVwdGhCdWZm
ZXJGb3JtYXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRDNETVVMVElTQU1QTEVfTk9ORSwgMCwgRkFMU0UsICZtRGVwdGhTdGVuY2lsLCBOVUxM
KTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVf
T1VUT0ZNRU1PUlkgfHwgcmVzdWx0ID09IEQzREVSUl9JTlZBTElEQ0FMTCk7CisKKyAgICAgICAg
ICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBkZXB0aHN0ZW5jaWwgc3VyZmFjZSBmb3IgbmV3IHN3
YXAgY2hhaW46IDB4JTA4WCIsIHJlc3VsdCk7CisgICAgICAgICAgICByZWxlYXNlKCk7CisKKyAg
ICAgICAgICAgIGlmIChkM2Q5Ojppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NUOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgbVdpZHRoID0gYmFja2J1ZmZlcldpZHRoOworICAgIG1IZWlnaHQgPSBiYWNrYnVmZmVySGVp
Z2h0OworICAgIG1Td2FwSW50ZXJ2YWwgPSBzd2FwSW50ZXJ2YWw7CisKKyAgICByZXR1cm4gRUdM
X1NVQ0NFU1M7Cit9CisKKy8vIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHZhbGlkYXRlZC9jbGFtcGVk
IGJ5IGNhbGxlcgorRUdMaW50IFN3YXBDaGFpbjk6OnN3YXBSZWN0KEVHTGludCB4LCBFR0xpbnQg
eSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KQoreworICAgIGlmICghbVN3YXBDaGFpbikK
KyAgICB7CisgICAgICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKKyAgICB9CisKKyAgICBJRGlyZWN0
M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgLy8gRGlz
YWJsZSBhbGwgcGlwZWxpbmUgb3BlcmF0aW9ucworICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUo
RDNEUlNfWkVOQUJMRSwgRDNEWkJfRkFMU0UpOworICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUo
RDNEUlNfRklMTE1PREUsIEQzREZJTExfU09MSUQpOworICAgIGRldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfQUxQSEFURVNURU5BQkxFLCBGQUxTRSk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBGQUxTRSk7CisgICAgZGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19DVUxMTU9ERSwgRDNEQ1VMTF9OT05FKTsKKyAgICBkZXZpY2UtPlNldFJl
bmRlclN0YXRlKEQzRFJTX1NURU5DSUxFTkFCTEUsIEZBTFNFKTsKKyAgICBkZXZpY2UtPlNldFJl
bmRlclN0YXRlKEQzRFJTX0NMSVBQTEFORUVOQUJMRSwgMCk7CisgICAgZGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19DT0xPUldSSVRFRU5BQkxFLCBEM0RDT0xPUldSSVRFRU5BQkxFX0FMUEhB
IHwgRDNEQ09MT1JXUklURUVOQUJMRV9CTFVFIHwgRDNEQ09MT1JXUklURUVOQUJMRV9HUkVFTiB8
IEQzRENPTE9SV1JJVEVFTkFCTEVfUkVEKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQz
RFJTX1NSR0JXUklURUVOQUJMRSwgRkFMU0UpOworICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUo
RDNEUlNfU0NJU1NPUlRFU1RFTkFCTEUsIEZBTFNFKTsKKyAgICBkZXZpY2UtPlNldFBpeGVsU2hh
ZGVyKE5VTEwpOworICAgIGRldmljZS0+U2V0VmVydGV4U2hhZGVyKE5VTEwpOworCisgICAgZGV2
aWNlLT5TZXRSZW5kZXJUYXJnZXQoMCwgbUJhY2tCdWZmZXIpOworICAgIGRldmljZS0+U2V0RGVw
dGhTdGVuY2lsU3VyZmFjZShOVUxMKTsKKworICAgIGRldmljZS0+U2V0VGV4dHVyZSgwLCBtT2Zm
c2NyZWVuVGV4dHVyZSk7CisgICAgZGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RU
U1NfQ09MT1JPUCwgRDNEVE9QX1NFTEVDVEFSRzEpOworICAgIGRldmljZS0+U2V0VGV4dHVyZVN0
YWdlU3RhdGUoMCwgRDNEVFNTX0NPTE9SQVJHMSwgRDNEVEFfVEVYVFVSRSk7CisgICAgZGV2aWNl
LT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgxLCBEM0RUU1NfQ09MT1JPUCwgRDNEVE9QX0RJU0FCTEUp
OworICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfTUFHRklMVEVSLCBEM0RU
RVhGX1BPSU5UKTsKKyAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZSgwLCBEM0RTQU1QX01JTkZJ
TFRFUiwgRDNEVEVYRl9QT0lOVCk7CisgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNE
U0FNUF9BRERSRVNTVSwgRDNEVEFERFJFU1NfQ0xBTVApOworICAgIGRldmljZS0+U2V0U2FtcGxl
clN0YXRlKDAsIEQzRFNBTVBfQUREUkVTU1YsIEQzRFRBRERSRVNTX0NMQU1QKTsKKyAgICBkZXZp
Y2UtPlNldEZWRihEM0RGVkZfWFlaUkhXIHwgRDNERlZGX1RFWDEpOworCisgICAgRDNEVklFV1BP
UlQ5IHZpZXdwb3J0ID0gezAsIDAsIG1XaWR0aCwgbUhlaWdodCwgMC4wZiwgMS4wZn07CisgICAg
ZGV2aWNlLT5TZXRWaWV3cG9ydCgmdmlld3BvcnQpOworCisgICAgZmxvYXQgeDEgPSB4IC0gMC41
ZjsKKyAgICBmbG9hdCB5MSA9IChtSGVpZ2h0IC0geSAtIGhlaWdodCkgLSAwLjVmOworICAgIGZs
b2F0IHgyID0gKHggKyB3aWR0aCkgLSAwLjVmOworICAgIGZsb2F0IHkyID0gKG1IZWlnaHQgLSB5
KSAtIDAuNWY7CisKKyAgICBmbG9hdCB1MSA9IHggLyBmbG9hdChtV2lkdGgpOworICAgIGZsb2F0
IHYxID0geSAvIGZsb2F0KG1IZWlnaHQpOworICAgIGZsb2F0IHUyID0gKHggKyB3aWR0aCkgLyBm
bG9hdChtV2lkdGgpOworICAgIGZsb2F0IHYyID0gKHkgKyBoZWlnaHQpIC8gZmxvYXQobUhlaWdo
dCk7CisKKyAgICBmbG9hdCBxdWFkWzRdWzZdID0ge3t4MSwgeTEsIDAuMGYsIDEuMGYsIHUxLCB2
Mn0sCisgICAgICAgICAgICAgICAgICAgICAgICB7eDIsIHkxLCAwLjBmLCAxLjBmLCB1MiwgdjJ9
LAorICAgICAgICAgICAgICAgICAgICAgICAge3gyLCB5MiwgMC4wZiwgMS4wZiwgdTIsIHYxfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHt4MSwgeTIsIDAuMGYsIDEuMGYsIHUxLCB2MX19OyAg
IC8vIHgsIHksIHosIHJodywgdSwgdgorCisgICAgbVJlbmRlcmVyLT5zdGFydFNjZW5lKCk7Cisg
ICAgZGV2aWNlLT5EcmF3UHJpbWl0aXZlVVAoRDNEUFRfVFJJQU5HTEVGQU4sIDIsIHF1YWQsIDYg
KiBzaXplb2YoZmxvYXQpKTsKKyAgICBtUmVuZGVyZXItPmVuZFNjZW5lKCk7CisKKyAgICBkZXZp
Y2UtPlNldFRleHR1cmUoMCwgTlVMTCk7CisKKyAgICBSRUNUIHJlY3QgPQorICAgIHsKKyAgICAg
ICAgeCwgbUhlaWdodCAtIHkgLSBoZWlnaHQsCisgICAgICAgIHggKyB3aWR0aCwgbUhlaWdodCAt
IHkKKyAgICB9OworCisgICAgSFJFU1VMVCByZXN1bHQgPSBtU3dhcENoYWluLT5QcmVzZW50KCZy
ZWN0LCAmcmVjdCwgTlVMTCwgTlVMTCwgMCk7CisKKyAgICBtUmVuZGVyZXItPm1hcmtBbGxTdGF0
ZURpcnR5KCk7CisKKyAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NUOworICAgIH0KKworICAgIGlmIChy
ZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1P
UlkgfHwgcmVzdWx0ID09IEQzREVSUl9EUklWRVJJTlRFUk5BTEVSUk9SKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEVHTF9CQURfQUxMT0M7CisgICAgfQorCisgICAgQVNTRVJUKFNVQ0NFRURFRChy
ZXN1bHQpKTsKKworICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKK30KKworLy8gSW5jcmVtZW50cyBy
ZWZjb3VudCBvbiBzdXJmYWNlLgorLy8gY2FsbGVyIG11c3QgUmVsZWFzZSgpIHRoZSByZXR1cm5l
ZCBzdXJmYWNlCitJRGlyZWN0M0RTdXJmYWNlOSAqU3dhcENoYWluOTo6Z2V0UmVuZGVyVGFyZ2V0
KCkKK3sKKyAgICBpZiAobVJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIG1SZW5kZXJUYXJn
ZXQtPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0OworfQorCisv
LyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHN1cmZhY2UuCisvLyBjYWxsZXIgbXVzdCBSZWxlYXNl
KCkgdGhlIHJldHVybmVkIHN1cmZhY2UKK0lEaXJlY3QzRFN1cmZhY2U5ICpTd2FwQ2hhaW45Ojpn
ZXREZXB0aFN0ZW5jaWwoKQoreworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAg
ICAgbURlcHRoU3RlbmNpbC0+QWRkUmVmKCk7CisgICAgfQorCisgICAgcmV0dXJuIG1EZXB0aFN0
ZW5jaWw7Cit9CisKKy8vIEluY3JlbWVudHMgcmVmY291bnQgb24gdGV4dHVyZS4KKy8vIGNhbGxl
ciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJuZWQgdGV4dHVyZQorSURpcmVjdDNEVGV4dHVyZTkg
KlN3YXBDaGFpbjk6OmdldE9mZnNjcmVlblRleHR1cmUoKQoreworICAgIGlmIChtT2Zmc2NyZWVu
VGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlLT5BZGRSZWYoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbU9mZnNjcmVlblRleHR1cmU7Cit9CisKK1N3YXBDaGFpbjkgKlN3
YXBDaGFpbjk6Om1ha2VTd2FwQ2hhaW45KFN3YXBDaGFpbiAqc3dhcENoYWluKQoreworICAgIEFT
U0VSVChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpTd2FwQ2hhaW45Kiwgc3dhcENoYWluKSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHJ4OjpTd2FwQ2hhaW45Kj4oc3dhcENoYWluKTsKK30KKwordm9p
ZCBTd2FwQ2hhaW45OjpyZWNyZWF0ZSgpCit7CisgICAgaWYgKCFtU3dhcENoYWluKQorICAgIHsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9
IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgaWYgKGRldmljZSA9PSBOVUxMKQorICAgIHsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBwcmVz
ZW50UGFyYW1ldGVyczsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IG1Td2FwQ2hhaW4tPkdldFByZXNl
bnRQYXJhbWV0ZXJzKCZwcmVzZW50UGFyYW1ldGVycyk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChy
ZXN1bHQpKTsKKworICAgIElEaXJlY3QzRFN3YXBDaGFpbjkqIG5ld1N3YXBDaGFpbiA9IE5VTEw7
CisgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVBZGRpdGlvbmFsU3dhcENoYWluKCZwcmVzZW50
UGFyYW1ldGVycywgJm5ld1N3YXBDaGFpbik7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1Td2FwQ2hhaW4tPlJlbGVhc2UoKTsK
KyAgICBtU3dhcENoYWluID0gbmV3U3dhcENoYWluOworCisgICAgbUJhY2tCdWZmZXItPlJlbGVh
c2UoKTsKKyAgICByZXN1bHQgPSBtU3dhcENoYWluLT5HZXRCYWNrQnVmZmVyKDAsIEQzREJBQ0tC
VUZGRVJfVFlQRV9NT05PLCAmbUJhY2tCdWZmZXIpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVz
dWx0KSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvU3dhcENoYWluOS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hh
aW45LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBT
d2FwQ2hhaW45Lmg6IERlZmluZXMgYSBiYWNrLWVuZCBzcGVjaWZpYyBjbGFzcyBmb3IgdGhlIEQz
RDkgc3dhcCBjaGFpbi4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfU1dBUENIQUlOOV9I
XworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJfU1dBUENIQUlOOV9IXworCisjaW5jbHVkZSAi
Y29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvU3dhcENo
YWluLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI5OworCitjbGFzcyBTd2Fw
Q2hhaW45IDogcHVibGljIFN3YXBDaGFpbgoreworICBwdWJsaWM6CisgICAgU3dhcENoYWluOShS
ZW5kZXJlcjkgKnJlbmRlcmVyLCBIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLAorICAg
ICAgICAgICAgICAgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZv
cm1hdCk7CisgICAgdmlydHVhbCB+U3dhcENoYWluOSgpOworCisgICAgRUdMaW50IHJlc2l6ZShF
R0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1ZmZlckhlaWdodCk7CisgICAgdmly
dHVhbCBFR0xpbnQgcmVzZXQoRUdMaW50IGJhY2tidWZmZXJXaWR0aCwgRUdMaW50IGJhY2tidWZm
ZXJIZWlnaHQsIEVHTGludCBzd2FwSW50ZXJ2YWwpOworICAgIHZpcnR1YWwgRUdMaW50IHN3YXBS
ZWN0KEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGUoKTsKKworICAgIHZpcnR1YWwgSURpcmVjdDNEU3VyZmFj
ZTkgKmdldFJlbmRlclRhcmdldCgpOworICAgIHZpcnR1YWwgSURpcmVjdDNEU3VyZmFjZTkgKmdl
dERlcHRoU3RlbmNpbCgpOworICAgIHZpcnR1YWwgSURpcmVjdDNEVGV4dHVyZTkgKmdldE9mZnNj
cmVlblRleHR1cmUoKTsKKworICAgIHN0YXRpYyBTd2FwQ2hhaW45ICptYWtlU3dhcENoYWluOShT
d2FwQ2hhaW4gKnN3YXBDaGFpbik7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FO
RF9BU1NJR04oU3dhcENoYWluOSk7CisKKyAgICB2b2lkIHJlbGVhc2UoKTsKKworICAgIFJlbmRl
cmVyOSAqbVJlbmRlcmVyOworICAgIEVHTGludCBtSGVpZ2h0OworICAgIEVHTGludCBtV2lkdGg7
CisgICAgRUdMaW50IG1Td2FwSW50ZXJ2YWw7CisKKyAgICBJRGlyZWN0M0RTd2FwQ2hhaW45ICpt
U3dhcENoYWluOworICAgIElEaXJlY3QzRFN1cmZhY2U5ICptQmFja0J1ZmZlcjsKKyAgICBJRGly
ZWN0M0RTdXJmYWNlOSAqbVJlbmRlclRhcmdldDsKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqbURl
cHRoU3RlbmNpbDsKKyAgICBJRGlyZWN0M0RUZXh0dXJlOSogbU9mZnNjcmVlblRleHR1cmU7Cit9
OworCit9CisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1NXQVBDSEFJTjlfSF8KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWlu
MTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvU3dhcENoYWluMTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzY3IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIFN3YXBDaGFpbjExLmNwcDogSW1wbGVtZW50cyBhIGJhY2stZW5k
IHNwZWNpZmljIGNsYXNzIGZvciB0aGUgRDNEMTEgc3dhcCBjaGFpbi4KKworI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL3Jl
bmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyZXIxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBp
bGVkL3Bhc3N0aHJvdWdoMTF2cy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFk
ZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTExcHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisK
K1N3YXBDaGFpbjExOjpTd2FwQ2hhaW4xMShSZW5kZXJlcjExICpyZW5kZXJlciwgSFdORCB3aW5k
b3csIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
YmFja0J1ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KQorICAgIDogbVJlbmRl
cmVyKHJlbmRlcmVyKSwgU3dhcENoYWluKHdpbmRvdywgc2hhcmVIYW5kbGUsIGJhY2tCdWZmZXJG
b3JtYXQsIGRlcHRoQnVmZmVyRm9ybWF0KQoreworICAgIG1Td2FwQ2hhaW4gPSBOVUxMOworICAg
IG1CYWNrQnVmZmVyVGV4dHVyZSA9IE5VTEw7CisgICAgbUJhY2tCdWZmZXJSVFZpZXcgPSBOVUxM
OworICAgIG1PZmZzY3JlZW5UZXh0dXJlID0gTlVMTDsKKyAgICBtT2Zmc2NyZWVuUlRWaWV3ID0g
TlVMTDsKKyAgICBtT2Zmc2NyZWVuU1JWaWV3ID0gTlVMTDsKKyAgICBtRGVwdGhTdGVuY2lsVGV4
dHVyZSA9IE5VTEw7CisgICAgbURlcHRoU3RlbmNpbERTVmlldyA9IE5VTEw7CisgICAgbVF1YWRW
QiA9IE5VTEw7CisgICAgbVBhc3NUaHJvdWdoU2FtcGxlciA9IE5VTEw7CisgICAgbVBhc3NUaHJv
dWdoSUwgPSBOVUxMOworICAgIG1QYXNzVGhyb3VnaFZTID0gTlVMTDsKKyAgICBtUGFzc1Rocm91
Z2hQUyA9IE5VTEw7CisgICAgbVdpZHRoID0gLTE7CisgICAgbUhlaWdodCA9IC0xOworICAgIG1T
d2FwSW50ZXJ2YWwgPSAwOworICAgIG1BcHBDcmVhdGVkU2hhcmVIYW5kbGUgPSBtU2hhcmVIYW5k
bGUgIT0gTlVMTDsKKyAgICBtUGFzc1Rocm91Z2hSZXNvdXJjZXNJbml0ID0gZmFsc2U7Cit9CisK
K1N3YXBDaGFpbjExOjp+U3dhcENoYWluMTEoKQoreworICAgIHJlbGVhc2UoKTsKK30KKwordm9p
ZCBTd2FwQ2hhaW4xMTo6cmVsZWFzZSgpCit7CisgICAgaWYgKG1Td2FwQ2hhaW4pCisgICAgewor
ICAgICAgICBtU3dhcENoYWluLT5SZWxlYXNlKCk7CisgICAgICAgIG1Td2FwQ2hhaW4gPSBOVUxM
OworICAgIH0KKworICAgIGlmIChtQmFja0J1ZmZlclRleHR1cmUpCisgICAgeworICAgICAgICBt
QmFja0J1ZmZlclRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbUJhY2tCdWZmZXJUZXh0dXJl
ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobUJhY2tCdWZmZXJSVFZpZXcpCisgICAgeworICAg
ICAgICBtQmFja0J1ZmZlclJUVmlldy0+UmVsZWFzZSgpOworICAgICAgICBtQmFja0J1ZmZlclJU
VmlldyA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1PZmZzY3JlZW5UZXh0dXJlKQorICAgIHsK
KyAgICAgICAgbU9mZnNjcmVlblRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbU9mZnNjcmVl
blRleHR1cmUgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtT2Zmc2NyZWVuUlRWaWV3KQorICAg
IHsKKyAgICAgICAgbU9mZnNjcmVlblJUVmlldy0+UmVsZWFzZSgpOworICAgICAgICBtT2Zmc2Ny
ZWVuUlRWaWV3ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobU9mZnNjcmVlblNSVmlldykKKyAg
ICB7CisgICAgICAgIG1PZmZzY3JlZW5TUlZpZXctPlJlbGVhc2UoKTsKKyAgICAgICAgbU9mZnNj
cmVlblNSVmlldyA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1EZXB0aFN0ZW5jaWxUZXh0dXJl
KQorICAgIHsKKyAgICAgICAgbURlcHRoU3RlbmNpbFRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAg
ICAgbURlcHRoU3RlbmNpbFRleHR1cmUgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtRGVwdGhT
dGVuY2lsRFNWaWV3KQorICAgIHsKKyAgICAgICAgbURlcHRoU3RlbmNpbERTVmlldy0+UmVsZWFz
ZSgpOworICAgICAgICBtRGVwdGhTdGVuY2lsRFNWaWV3ID0gTlVMTDsKKyAgICB9CisKKyAgICBp
ZiAobVF1YWRWQikKKyAgICB7CisgICAgICAgIG1RdWFkVkItPlJlbGVhc2UoKTsKKyAgICAgICAg
bVF1YWRWQiA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1QYXNzVGhyb3VnaFNhbXBsZXIpCisg
ICAgeworICAgICAgICBtUGFzc1Rocm91Z2hTYW1wbGVyLT5SZWxlYXNlKCk7CisgICAgICAgIG1Q
YXNzVGhyb3VnaFNhbXBsZXIgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtUGFzc1Rocm91Z2hJ
TCkKKyAgICB7CisgICAgICAgIG1QYXNzVGhyb3VnaElMLT5SZWxlYXNlKCk7CisgICAgICAgIG1Q
YXNzVGhyb3VnaElMID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobVBhc3NUaHJvdWdoVlMpCisg
ICAgeworICAgICAgICBtUGFzc1Rocm91Z2hWUy0+UmVsZWFzZSgpOworICAgICAgICBtUGFzc1Ro
cm91Z2hWUyA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1QYXNzVGhyb3VnaFBTKQorICAgIHsK
KyAgICAgICAgbVBhc3NUaHJvdWdoUFMtPlJlbGVhc2UoKTsKKyAgICAgICAgbVBhc3NUaHJvdWdo
UFMgPSBOVUxMOworICAgIH0KKworICAgIGlmICghbUFwcENyZWF0ZWRTaGFyZUhhbmRsZSkKKyAg
ICB7CisgICAgICAgIG1TaGFyZUhhbmRsZSA9IE5VTEw7CisgICAgfQorfQorCit2b2lkIFN3YXBD
aGFpbjExOjpyZWxlYXNlT2Zmc2NyZWVuVGV4dHVyZSgpCit7CisgICAgaWYgKG1PZmZzY3JlZW5U
ZXh0dXJlKQorICAgIHsKKyAgICAgICAgbU9mZnNjcmVlblRleHR1cmUtPlJlbGVhc2UoKTsKKyAg
ICAgICAgbU9mZnNjcmVlblRleHR1cmUgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtT2Zmc2Ny
ZWVuUlRWaWV3KQorICAgIHsKKyAgICAgICAgbU9mZnNjcmVlblJUVmlldy0+UmVsZWFzZSgpOwor
ICAgICAgICBtT2Zmc2NyZWVuUlRWaWV3ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobU9mZnNj
cmVlblNSVmlldykKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5TUlZpZXctPlJlbGVhc2UoKTsK
KyAgICAgICAgbU9mZnNjcmVlblNSVmlldyA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1EZXB0
aFN0ZW5jaWxUZXh0dXJlKQorICAgIHsKKyAgICAgICAgbURlcHRoU3RlbmNpbFRleHR1cmUtPlJl
bGVhc2UoKTsKKyAgICAgICAgbURlcHRoU3RlbmNpbFRleHR1cmUgPSBOVUxMOworICAgIH0KKwor
ICAgIGlmIChtRGVwdGhTdGVuY2lsRFNWaWV3KQorICAgIHsKKyAgICAgICAgbURlcHRoU3RlbmNp
bERTVmlldy0+UmVsZWFzZSgpOworICAgICAgICBtRGVwdGhTdGVuY2lsRFNWaWV3ID0gTlVMTDsK
KyAgICB9Cit9CisKK0VHTGludCBTd2FwQ2hhaW4xMTo6cmVzZXRPZmZzY3JlZW5UZXh0dXJlKGlu
dCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmVySGVpZ2h0KQoreworICAgIElEM0QxMURl
dmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIEFTU0VSVChkZXZp
Y2UgIT0gTlVMTCk7CisKKyAgICAvLyBEM0QxMSBkb2VzIG5vdCBhbGxvdyB6ZXJvIHNpemUgdGV4
dHVyZXMKKyAgICBBU1NFUlQoYmFja2J1ZmZlcldpZHRoID49IDEpOworICAgIEFTU0VSVChiYWNr
YnVmZmVySGVpZ2h0ID49IDEpOworCisgICAgLy8gUHJlc2VydmUgdGhlIHJlbmRlciB0YXJnZXQg
Y29udGVudAorICAgIElEM0QxMVRleHR1cmUyRCAqcHJldmlvdXNPZmZzY3JlZW5UZXh0dXJlID0g
bU9mZnNjcmVlblRleHR1cmU7CisgICAgaWYgKHByZXZpb3VzT2Zmc2NyZWVuVGV4dHVyZSkKKyAg
ICB7CisgICAgICAgIHByZXZpb3VzT2Zmc2NyZWVuVGV4dHVyZS0+QWRkUmVmKCk7CisgICAgfQor
ICAgIGNvbnN0IGludCBwcmV2aW91c1dpZHRoID0gbVdpZHRoOworICAgIGNvbnN0IGludCBwcmV2
aW91c0hlaWdodCA9IG1IZWlnaHQ7CisKKyAgICByZWxlYXNlT2Zmc2NyZWVuVGV4dHVyZSgpOwor
CisgICAgLy8gSWYgdGhlIGFwcCBwYXNzZWQgaW4gYSBzaGFyZSBoYW5kbGUsIG9wZW4gdGhlIHJl
c291cmNlCisgICAgLy8gU2VlIEVHTF9BTkdMRV9kM2Rfc2hhcmVfaGFuZGxlX2NsaWVudF9idWZm
ZXIKKyAgICBpZiAobUFwcENyZWF0ZWRTaGFyZUhhbmRsZSkKKyAgICB7CisgICAgICAgIElEM0Qx
MVJlc291cmNlICp0ZW1wUmVzb3VyY2UxMTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZp
Y2UtPk9wZW5TaGFyZWRSZXNvdXJjZShtU2hhcmVIYW5kbGUsIF9fdXVpZG9mKElEM0QxMVJlc291
cmNlKSwgKHZvaWQqKikmdGVtcFJlc291cmNlMTEpOworCisgICAgICAgIGlmIChGQUlMRUQocmVz
dWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gb3BlbiB0aGUgc3dh
cCBjaGFpbiBwYnVmZmVyIHNoYXJlIGhhbmRsZTogJTA4bFgiLCByZXN1bHQpOworICAgICAgICAg
ICAgcmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIEVHTF9CQURfUEFSQU1FVEVSOworICAg
ICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gdGVtcFJlc291cmNlMTEtPlF1ZXJ5SW50ZXJmYWNl
KF9fdXVpZG9mKElEM0QxMVRleHR1cmUyRCksICh2b2lkKiopJm1PZmZzY3JlZW5UZXh0dXJlKTsK
KyAgICAgICAgdGVtcFJlc291cmNlMTEtPlJlbGVhc2UoKTsKKworICAgICAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIHF1ZXJ5IHRl
eHR1cmUyZCBpbnRlcmZhY2UgaW4gcGJ1ZmZlciBzaGFyZSBoYW5kbGU6ICUwOGxYIiwgcmVzdWx0
KTsKKyAgICAgICAgICAgIHJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBFR0xfQkFEX1BB
UkFNRVRFUjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFZhbGlkYXRlIG9mZnNjcmVlbiB0ZXh0
dXJlIHBhcmFtZXRlcnMKKyAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0Mgb2Zmc2NyZWVuVGV4
dHVyZURlc2MgPSB7MH07CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlLT5HZXREZXNjKCZvZmZz
Y3JlZW5UZXh0dXJlRGVzYyk7CisKKyAgICAgICAgaWYgKG9mZnNjcmVlblRleHR1cmVEZXNjLldp
ZHRoICE9IChVSU5UKWJhY2tidWZmZXJXaWR0aAorICAgICAgICAgICAgfHwgb2Zmc2NyZWVuVGV4
dHVyZURlc2MuSGVpZ2h0ICE9IChVSU5UKWJhY2tidWZmZXJIZWlnaHQKKyAgICAgICAgICAgIHx8
IG9mZnNjcmVlblRleHR1cmVEZXNjLkZvcm1hdCAhPSBnbF9kM2QxMTo6Q29udmVydFJlbmRlcmJ1
ZmZlckZvcm1hdChtQmFja0J1ZmZlckZvcm1hdCkKKyAgICAgICAgICAgIHx8IG9mZnNjcmVlblRl
eHR1cmVEZXNjLk1pcExldmVscyAhPSAxCisgICAgICAgICAgICB8fCBvZmZzY3JlZW5UZXh0dXJl
RGVzYy5BcnJheVNpemUgIT0gMSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJJbnZhbGlk
IHRleHR1cmUgcGFyYW1ldGVycyBpbiB0aGUgc2hhcmVkIG9mZnNjcmVlbiB0ZXh0dXJlIHBidWZm
ZXIiKTsKKyAgICAgICAgICAgIHJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBFR0xfQkFE
X1BBUkFNRVRFUjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBj
b25zdCBib29sIHVzZVNoYXJlZFJlc291cmNlID0gIW1XaW5kb3cgJiYgbVJlbmRlcmVyLT5nZXRT
aGFyZUhhbmRsZVN1cHBvcnQoKTsKKworICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyBvZmZz
Y3JlZW5UZXh0dXJlRGVzYyA9IHswfTsKKyAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuV2lk
dGggPSBiYWNrYnVmZmVyV2lkdGg7CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLkhlaWdo
dCA9IGJhY2tidWZmZXJIZWlnaHQ7CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLkZvcm1h
dCA9IGdsX2QzZDExOjpDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KG1CYWNrQnVmZmVyRm9ybWF0
KTsKKyAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuTWlwTGV2ZWxzID0gMTsKKyAgICAgICAg
b2Zmc2NyZWVuVGV4dHVyZURlc2MuQXJyYXlTaXplID0gMTsKKyAgICAgICAgb2Zmc2NyZWVuVGV4
dHVyZURlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVE
ZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNj
LlVzYWdlID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKKyAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURl
c2MuQmluZEZsYWdzID0gRDNEMTFfQklORF9SRU5ERVJfVEFSR0VUIHwgRDNEMTFfQklORF9TSEFE
RVJfUkVTT1VSQ0U7CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLkNQVUFjY2Vzc0ZsYWdz
ID0gMDsKKyAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuTWlzY0ZsYWdzID0gdXNlU2hhcmVk
UmVzb3VyY2UgPyBEM0QxMV9SRVNPVVJDRV9NSVNDX1NIQVJFRCA6IDA7CisKKyAgICAgICAgSFJF
U1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmb2Zmc2NyZWVuVGV4dHVyZURl
c2MsIE5VTEwsICZtT2Zmc2NyZWVuVGV4dHVyZSk7CisKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1
bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgb2Zmc2Ny
ZWVuIHRleHR1cmU6ICUwOGxYIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlbGVhc2UoKTsKKwor
ICAgICAgICAgICAgaWYgKGQzZDExOjppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NUOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgZDNkMTE6OlNldERlYnVnTmFtZShtT2Zmc2NyZWVuVGV4dHVyZSwgIk9mZnNjcmVlbiB0ZXh0
dXJlIik7CisKKyAgICAgICAgLy8gRUdMX0FOR0xFX3N1cmZhY2VfZDNkX3RleHR1cmVfMmRfc2hh
cmVfaGFuZGxlIHJlcXVpcmVzIHRoYXQgd2Ugc3RvcmUgYSBzaGFyZSBoYW5kbGUgZm9yIHRoZSBj
bGllbnQKKyAgICAgICAgaWYgKHVzZVNoYXJlZFJlc291cmNlKQorICAgICAgICB7CisgICAgICAg
ICAgICBJRFhHSVJlc291cmNlICpvZmZzY3JlZW5UZXh0dXJlUmVzb3VyY2UgPSBOVUxMOworICAg
ICAgICAgICAgcmVzdWx0ID0gbU9mZnNjcmVlblRleHR1cmUtPlF1ZXJ5SW50ZXJmYWNlKF9fdXVp
ZG9mKElEWEdJUmVzb3VyY2UpLCAodm9pZCoqKSZvZmZzY3JlZW5UZXh0dXJlUmVzb3VyY2UpOwor
CisgICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gbm8gc2hhcmUgaGFuZGxlIG9uIGZhaWx1cmUK
KyAgICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBFUlIoIkNvdWxkIG5vdCBxdWVyeSBvZmZzY3JlZW4gdGV4dHVyZSByZXNvdXJjZTog
JTA4bFgiLCByZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9mZnNjcmVlblRleHR1cmVSZXNvdXJj
ZS0+R2V0U2hhcmVkSGFuZGxlKCZtU2hhcmVIYW5kbGUpOworCisgICAgICAgICAgICAgICAgaWYg
KEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
bVNoYXJlSGFuZGxlID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgRVJSKCJDb3VsZCBub3Qg
Z2V0IG9mZnNjcmVlbiB0ZXh0dXJlIHNoYXJlZCBoYW5kbGU6ICUwOGxYIiwgcmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgICAg
IAorICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJnZXRWaWV3KG1P
ZmZzY3JlZW5UZXh0dXJlLCBOVUxMLCAmbU9mZnNjcmVlblJUVmlldyk7CisKKyAgICBBU1NFUlQo
U1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobU9mZnNjcmVlblJU
VmlldywgIk9mZnNjcmVlbiByZW5kZXIgdGFyZ2V0Iik7CisKKyAgICByZXN1bHQgPSBkZXZpY2Ut
PkNyZWF0ZVNoYWRlclJlc291cmNlVmlldyhtT2Zmc2NyZWVuVGV4dHVyZSwgTlVMTCwgJm1PZmZz
Y3JlZW5TUlZpZXcpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgZDNkMTE6
OlNldERlYnVnTmFtZShtT2Zmc2NyZWVuU1JWaWV3LCAiT2Zmc2NyZWVuIHNoYWRlciByZXNvdXJj
ZSIpOworCisgICAgaWYgKG1EZXB0aEJ1ZmZlckZvcm1hdCAhPSBHTF9OT05FKQorICAgIHsKKyAg
ICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVwdGhTdGVuY2lsRGVzYyA9IHswfTsKKyAgICAg
ICAgZGVwdGhTdGVuY2lsRGVzYy5XaWR0aCA9IGJhY2tidWZmZXJXaWR0aDsKKyAgICAgICAgZGVw
dGhTdGVuY2lsRGVzYy5IZWlnaHQgPSBiYWNrYnVmZmVySGVpZ2h0OworICAgICAgICBkZXB0aFN0
ZW5jaWxEZXNjLkZvcm1hdCA9IGdsX2QzZDExOjpDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KG1E
ZXB0aEJ1ZmZlckZvcm1hdCk7CisgICAgICAgIGRlcHRoU3RlbmNpbERlc2MuTWlwTGV2ZWxzID0g
MTsKKyAgICAgICAgZGVwdGhTdGVuY2lsRGVzYy5BcnJheVNpemUgPSAxOworICAgICAgICBkZXB0
aFN0ZW5jaWxEZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICBkZXB0aFN0ZW5jaWxE
ZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIGRlcHRoU3RlbmNpbERlc2MuVXNh
Z2UgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOworICAgICAgICBkZXB0aFN0ZW5jaWxEZXNjLkJpbmRG
bGFncyA9IEQzRDExX0JJTkRfREVQVEhfU1RFTkNJTDsKKyAgICAgICAgZGVwdGhTdGVuY2lsRGVz
Yy5DUFVBY2Nlc3NGbGFncyA9IDA7CisgICAgICAgIGRlcHRoU3RlbmNpbERlc2MuTWlzY0ZsYWdz
ID0gMDsKKworICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmZGVwdGhT
dGVuY2lsRGVzYywgTlVMTCwgJm1EZXB0aFN0ZW5jaWxUZXh0dXJlKTsKKyAgICAgICAgaWYgKEZB
SUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVh
dGUgZGVwdGhzdGVuY2lsIHN1cmZhY2UgZm9yIG5ldyBzd2FwIGNoYWluOiAweCUwOFgiLCByZXN1
bHQpOworICAgICAgICAgICAgcmVsZWFzZSgpOworCisgICAgICAgICAgICBpZiAoZDNkMTE6Omlz
RGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIEVHTF9DT05URVhUX0xPU1Q7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9CQURfQUxMT0M7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtRGVw
dGhTdGVuY2lsVGV4dHVyZSwgIkRlcHRoIHN0ZW5jaWwgdGV4dHVyZSIpOworCisgICAgICAgIHJl
c3VsdCA9IGRldmljZS0+Q3JlYXRlRGVwdGhTdGVuY2lsVmlldyhtRGVwdGhTdGVuY2lsVGV4dHVy
ZSwgTlVMTCwgJm1EZXB0aFN0ZW5jaWxEU1ZpZXcpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVE
KHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1EZXB0aFN0ZW5jaWxEU1Zp
ZXcsICJEZXB0aCBzdGVuY2lsIHZpZXciKTsKKyAgICB9CisKKyAgICBtV2lkdGggPSBiYWNrYnVm
ZmVyV2lkdGg7CisgICAgbUhlaWdodCA9IGJhY2tidWZmZXJIZWlnaHQ7CisKKyAgICBpZiAocHJl
dmlvdXNPZmZzY3JlZW5UZXh0dXJlICE9IE5VTEwpCisgICAgeworICAgICAgICBEM0QxMV9CT1gg
c291cmNlQm94ID0gezB9OworICAgICAgICBzb3VyY2VCb3gubGVmdCA9IDA7CisgICAgICAgIHNv
dXJjZUJveC5yaWdodCA9IHN0ZDo6bWluKHByZXZpb3VzV2lkdGgsIG1XaWR0aCk7CisgICAgICAg
IHNvdXJjZUJveC50b3AgPSBzdGQ6Om1heChwcmV2aW91c0hlaWdodCAtIG1IZWlnaHQsIDApOwor
ICAgICAgICBzb3VyY2VCb3guYm90dG9tID0gcHJldmlvdXNIZWlnaHQ7CisgICAgICAgIHNvdXJj
ZUJveC5mcm9udCA9IDA7CisgICAgICAgIHNvdXJjZUJveC5iYWNrID0gMTsKKworICAgICAgICBJ
RDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VD
b250ZXh0KCk7CisgICAgICAgIGNvbnN0IGludCB5b2Zmc2V0ID0gc3RkOjptYXgobUhlaWdodCAt
IHByZXZpb3VzSGVpZ2h0LCAwKTsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+Q29weVN1YnJlc291
cmNlUmVnaW9uKG1PZmZzY3JlZW5UZXh0dXJlLCAwLCAwLCB5b2Zmc2V0LCAwLCBwcmV2aW91c09m
ZnNjcmVlblRleHR1cmUsIDAsICZzb3VyY2VCb3gpOworCisgICAgICAgIHByZXZpb3VzT2Zmc2Ny
ZWVuVGV4dHVyZS0+UmVsZWFzZSgpOworCisgICAgICAgIGlmIChtU3dhcENoYWluKQorICAgICAg
ICB7CisgICAgICAgICAgICBzd2FwUmVjdCgwLCAwLCBtV2lkdGgsIG1IZWlnaHQpOworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIEVHTF9TVUNDRVNTOworfQorCitFR0xpbnQgU3dhcENo
YWluMTE6OnJlc2l6ZShFR0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1ZmZlckhl
aWdodCkKK3sKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNl
KCk7CisKKyAgICBpZiAoZGV2aWNlID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4gRUdM
X0JBRF9BQ0NFU1M7CisgICAgfQorCisgICAgLy8gQ2FuIG9ubHkgY2FsbCByZXNpemUgaWYgd2Ug
aGF2ZSBhbHJlYWR5IGNyZWF0ZWQgb3VyIHN3YXAgYnVmZmVyIGFuZCByZXNvdXJjZXMKKyAgICBB
U1NFUlQobVN3YXBDaGFpbiAmJiBtQmFja0J1ZmZlclRleHR1cmUgJiYgbUJhY2tCdWZmZXJSVFZp
ZXcpOworCisgICAgaWYgKG1CYWNrQnVmZmVyVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1CYWNr
QnVmZmVyVGV4dHVyZS0+UmVsZWFzZSgpOworICAgICAgICBtQmFja0J1ZmZlclRleHR1cmUgPSBO
VUxMOworICAgIH0KKworICAgIGlmIChtQmFja0J1ZmZlclJUVmlldykKKyAgICB7CisgICAgICAg
IG1CYWNrQnVmZmVyUlRWaWV3LT5SZWxlYXNlKCk7CisgICAgICAgIG1CYWNrQnVmZmVyUlRWaWV3
ID0gTlVMTDsKKyAgICB9CisKKyAgICAvLyBSZXNpemUgc3dhcCBjaGFpbgorICAgIERYR0lfRk9S
TUFUIGJhY2tidWZmZXJEWEdJRm9ybWF0ID0gZ2xfZDNkMTE6OkNvbnZlcnRSZW5kZXJidWZmZXJG
b3JtYXQobUJhY2tCdWZmZXJGb3JtYXQpOworICAgIEhSRVNVTFQgcmVzdWx0ID0gbVN3YXBDaGFp
bi0+UmVzaXplQnVmZmVycygyLCBiYWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJIZWlnaHQsIGJh
Y2tidWZmZXJEWEdJRm9ybWF0LCAwKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7
CisgICAgICAgIEVSUigiRXJyb3IgcmVzaXppbmcgc3dhcCBjaGFpbiBidWZmZXJzOiAweCUwOFgi
LCByZXN1bHQpOworICAgICAgICByZWxlYXNlKCk7CisKKyAgICAgICAgaWYgKGQzZDExOjppc0Rl
dmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRUdM
X0NPTlRFWFRfTE9TVDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICB9CisgICAgfQorCisgICAgcmVz
dWx0ID0gbVN3YXBDaGFpbi0+R2V0QnVmZmVyKDAsIF9fdXVpZG9mKElEM0QxMVRleHR1cmUyRCks
IChMUFZPSUQqKSZtQmFja0J1ZmZlclRleHR1cmUpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVz
dWx0KSk7CisgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgZDNkMTE6
OlNldERlYnVnTmFtZShtQmFja0J1ZmZlclRleHR1cmUsICJCYWNrIGJ1ZmZlciB0ZXh0dXJlIik7
CisgICAgfQorCisgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJnZXRWaWV3KG1C
YWNrQnVmZmVyVGV4dHVyZSwgTlVMTCwgJm1CYWNrQnVmZmVyUlRWaWV3KTsKKyAgICBBU1NFUlQo
U1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKKyAgICB7Cisg
ICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUJhY2tCdWZmZXJSVFZpZXcsICJCYWNrIGJ1ZmZl
ciByZW5kZXIgdGFyZ2V0Iik7CisgICAgfQorCisgICAgcmV0dXJuIHJlc2V0T2Zmc2NyZWVuVGV4
dHVyZShiYWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJIZWlnaHQpOworfQorCitFR0xpbnQgU3dh
cENoYWluMTE6OnJlc2V0KGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmVySGVpZ2h0
LCBFR0xpbnQgc3dhcEludGVydmFsKQoreworICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJl
bmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIGlmIChkZXZpY2UgPT0gTlVMTCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBFR0xfQkFEX0FDQ0VTUzsKKyAgICB9CisKKyAgICAvLyBSZWxlYXNlIHNw
ZWNpZmljIHJlc291cmNlcyB0byBmcmVlIHVwIG1lbW9yeSBmb3IgdGhlIG5ldyByZW5kZXIgdGFy
Z2V0LCB3aGlsZSB0aGUKKyAgICAvLyBvbGQgcmVuZGVyIHRhcmdldCBzdGlsbCBleGlzdHMgZm9y
IHRoZSBwdXJwb3NlIG9mIHByZXNlcnZpbmcgaXRzIGNvbnRlbnRzLgorICAgIGlmIChtU3dhcENo
YWluKQorICAgIHsKKyAgICAgICAgbVN3YXBDaGFpbi0+UmVsZWFzZSgpOworICAgICAgICBtU3dh
cENoYWluID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobUJhY2tCdWZmZXJUZXh0dXJlKQorICAg
IHsKKyAgICAgICAgbUJhY2tCdWZmZXJUZXh0dXJlLT5SZWxlYXNlKCk7CisgICAgICAgIG1CYWNr
QnVmZmVyVGV4dHVyZSA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1CYWNrQnVmZmVyUlRWaWV3
KQorICAgIHsKKyAgICAgICAgbUJhY2tCdWZmZXJSVFZpZXctPlJlbGVhc2UoKTsKKyAgICAgICAg
bUJhY2tCdWZmZXJSVFZpZXcgPSBOVUxMOworICAgIH0KKworICAgIG1Td2FwSW50ZXJ2YWwgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHN3YXBJbnRlcnZhbCk7CisgICAgaWYgKG1Td2FwSW50
ZXJ2YWwgPiA0KQorICAgIHsKKyAgICAgICAgLy8gSURYR0lTd2FwQ2hhaW46OlByZXNlbnQgZG9j
dW1lbnRhdGlvbiBzdGF0ZXMgdGhhdCB2YWxpZCBzeW5jIGludGVydmFscyBhcmUgaW4gdGhlIFsw
LDRdIHJhbmdlCisgICAgICAgIHJldHVybiBFR0xfQkFEX1BBUkFNRVRFUjsKKyAgICB9CisKKyAg
ICAvLyBFR0wgYWxsb3dzIGNyZWF0aW5nIGEgc3VyZmFjZSB3aXRoIDB4MCBkaW1lbnNpb24sIGhv
d2V2ZXIsIERYR0kgZG9lcyBub3QgbGlrZSAweDAgc3dhcGNoYWlucworICAgIGlmIChiYWNrYnVm
ZmVyV2lkdGggPCAxIHx8IGJhY2tidWZmZXJIZWlnaHQgPCAxKQorICAgIHsKKyAgICAgICAgcmVs
ZWFzZU9mZnNjcmVlblRleHR1cmUoKTsKKyAgICAgICAgcmV0dXJuIEVHTF9TVUNDRVNTOworICAg
IH0KKworICAgIGlmIChtV2luZG93KQorICAgIHsKKyAgICAgICAgLy8gV2UgY2Fubm90IGNyZWF0
ZSBhIHN3YXAgY2hhaW4gZm9yIGFuIEhXTkQgdGhhdCBpcyBvd25lZCBieSBhIGRpZmZlcmVudCBw
cm9jZXNzCisgICAgICAgIERXT1JEIGN1cnJlbnRQcm9jZXNzSWQgPSBHZXRDdXJyZW50UHJvY2Vz
c0lkKCk7CisgICAgICAgIERXT1JEIHduZFByb2Nlc3NJZDsKKyAgICAgICAgR2V0V2luZG93VGhy
ZWFkUHJvY2Vzc0lkKG1XaW5kb3csICZ3bmRQcm9jZXNzSWQpOworCisgICAgICAgIGlmIChjdXJy
ZW50UHJvY2Vzc0lkICE9IHduZFByb2Nlc3NJZCkKKyAgICAgICAgeworICAgICAgICAgICAgRVJS
KCJDb3VsZCBub3QgY3JlYXRlIHN3YXAgY2hhaW4sIHdpbmRvdyBvd25lZCBieSBkaWZmZXJlbnQg
cHJvY2VzcyIpOworICAgICAgICAgICAgcmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIEVH
TF9CQURfTkFUSVZFX1dJTkRPVzsKKyAgICAgICAgfQorCisgICAgICAgIElEWEdJRmFjdG9yeSAq
ZmFjdG9yeSA9IG1SZW5kZXJlci0+Z2V0RHhnaUZhY3RvcnkoKTsKKworICAgICAgICBEWEdJX1NX
QVBfQ0hBSU5fREVTQyBzd2FwQ2hhaW5EZXNjID0gezB9OworICAgICAgICBzd2FwQ2hhaW5EZXNj
LkJ1ZmZlckNvdW50ID0gMjsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLkZvcm1h
dCA9IGdsX2QzZDExOjpDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KG1CYWNrQnVmZmVyRm9ybWF0
KTsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLldpZHRoID0gYmFja2J1ZmZlcldp
ZHRoOworICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckRlc2MuSGVpZ2h0ID0gYmFja2J1ZmZl
ckhlaWdodDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLlNjYWxpbmcgPSBEWEdJ
X01PREVfU0NBTElOR19VTlNQRUNJRklFRDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJE
ZXNjLlNjYW5saW5lT3JkZXJpbmcgPSBEWEdJX01PREVfU0NBTkxJTkVfT1JERVJfVU5TUEVDSUZJ
RUQ7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5SZWZyZXNoUmF0ZS5OdW1lcmF0
b3IgPSAwOworICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckRlc2MuUmVmcmVzaFJhdGUuRGVu
b21pbmF0b3IgPSAxOworICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlclVzYWdlID0gRFhHSV9V
U0FHRV9SRU5ERVJfVEFSR0VUX09VVFBVVDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5GbGFncyA9
IDA7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuT3V0cHV0V2luZG93ID0gbVdpbmRvdzsKKyAgICAg
ICAgc3dhcENoYWluRGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKKyAgICAgICAgc3dhcENoYWlu
RGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAgICBzd2FwQ2hhaW5EZXNjLldpbmRv
d2VkID0gVFJVRTsKKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGZhY3RvcnktPkNyZWF0ZVN3
YXBDaGFpbihkZXZpY2UsICZzd2FwQ2hhaW5EZXNjLCAmbVN3YXBDaGFpbik7CisKKyAgICAgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNvdWxkIG5v
dCBjcmVhdGUgYWRkaXRpb25hbCBzd2FwIGNoYWlucyBvciBvZmZzY3JlZW4gc3VyZmFjZXM6ICUw
OGxYIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlbGVhc2UoKTsKKworICAgICAgICAgICAgaWYg
KGQzZDExOjppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NUOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFR0xfQkFE
X0FMTE9DOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gbVN3
YXBDaGFpbi0+R2V0QnVmZmVyKDAsIF9fdXVpZG9mKElEM0QxMVRleHR1cmUyRCksIChMUFZPSUQq
KSZtQmFja0J1ZmZlclRleHR1cmUpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkp
OworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1CYWNrQnVmZmVyVGV4dHVyZSwgIkJhY2sg
YnVmZmVyIHRleHR1cmUiKTsKKworICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJlbmRl
clRhcmdldFZpZXcobUJhY2tCdWZmZXJUZXh0dXJlLCBOVUxMLCAmbUJhY2tCdWZmZXJSVFZpZXcp
OworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0
RGVidWdOYW1lKG1CYWNrQnVmZmVyUlRWaWV3LCAiQmFjayBidWZmZXIgcmVuZGVyIHRhcmdldCIp
OworICAgIH0KKworICAgIC8vIElmIHdlIGFyZSByZXNpemluZyB0aGUgc3dhcCBjaGFpbiwgd2Ug
ZG9uJ3Qgd2lzaCB0byByZWNyZWF0ZSBhbGwgdGhlIHN0YXRpYyByZXNvdXJjZXMKKyAgICBpZiAo
IW1QYXNzVGhyb3VnaFJlc291cmNlc0luaXQpCisgICAgeworICAgICAgICBtUGFzc1Rocm91Z2hS
ZXNvdXJjZXNJbml0ID0gdHJ1ZTsKKyAgICAgICAgaW5pdFBhc3NUaHJvdWdoUmVzb3VyY2VzKCk7
CisgICAgfQorCisgICAgcmV0dXJuIHJlc2V0T2Zmc2NyZWVuVGV4dHVyZShiYWNrYnVmZmVyV2lk
dGgsIGJhY2tidWZmZXJIZWlnaHQpOworfQorCit2b2lkIFN3YXBDaGFpbjExOjppbml0UGFzc1Ro
cm91Z2hSZXNvdXJjZXMoKQoreworICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVy
LT5nZXREZXZpY2UoKTsKKworICAgIEFTU0VSVChkZXZpY2UgIT0gTlVMTCk7CisKKyAgICAvLyBN
YWtlIHN1cmUgb3VyIHJlc291cmNlcyBhcmUgYWxsIG5vdCBhbGxvY2F0ZWQsIHdoZW4gd2UgY3Jl
YXRlCisgICAgQVNTRVJUKG1RdWFkVkIgPT0gTlVMTCAmJiBtUGFzc1Rocm91Z2hTYW1wbGVyID09
IE5VTEwpOworICAgIEFTU0VSVChtUGFzc1Rocm91Z2hJTCA9PSBOVUxMICYmIG1QYXNzVGhyb3Vn
aFZTID09IE5VTEwgJiYgbVBhc3NUaHJvdWdoUFMgPT0gTlVMTCk7CisKKyAgICBEM0QxMV9CVUZG
RVJfREVTQyB2YkRlc2M7CisgICAgdmJEZXNjLkJ5dGVXaWR0aCA9IHNpemVvZihkM2QxMTo6UG9z
aXRpb25UZXhDb29yZFZlcnRleCkgKiA0OworICAgIHZiRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdF
X0RZTkFNSUM7CisgICAgdmJEZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfVkVSVEVYX0JVRkZF
UjsKKyAgICB2YkRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOwor
ICAgIHZiRGVzYy5NaXNjRmxhZ3MgPSAwOworICAgIHZiRGVzYy5TdHJ1Y3R1cmVCeXRlU3RyaWRl
ID0gMDsKKworICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVCdWZmZXIoJnZiRGVz
YywgTlVMTCwgJm1RdWFkVkIpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAg
ZDNkMTE6OlNldERlYnVnTmFtZShtUXVhZFZCLCAiU3dhcCBjaGFpbiBxdWFkIHZlcnRleCBidWZm
ZXIiKTsKKworICAgIEQzRDExX1NBTVBMRVJfREVTQyBzYW1wbGVyRGVzYzsKKyAgICBzYW1wbGVy
RGVzYy5GaWx0ZXIgPSBEM0QxMV9GSUxURVJfTUlOX01BR19NSVBfUE9JTlQ7CisgICAgc2FtcGxl
ckRlc2MuQWRkcmVzc1UgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7CisgICAgc2FtcGxl
ckRlc2MuQWRkcmVzc1YgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7CisgICAgc2FtcGxl
ckRlc2MuQWRkcmVzc1cgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7CisgICAgc2FtcGxl
ckRlc2MuTWlwTE9EQmlhcyA9IDAuMGY7CisgICAgc2FtcGxlckRlc2MuTWF4QW5pc290cm9weSA9
IDA7CisgICAgc2FtcGxlckRlc2MuQ29tcGFyaXNvbkZ1bmMgPSBEM0QxMV9DT01QQVJJU09OX05F
VkVSOworICAgIHNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzBdID0gMC4wZjsKKyAgICBzYW1wbGVy
RGVzYy5Cb3JkZXJDb2xvclsxXSA9IDAuMGY7CisgICAgc2FtcGxlckRlc2MuQm9yZGVyQ29sb3Jb
Ml0gPSAwLjBmOworICAgIHNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzNdID0gMC4wZjsKKyAgICBz
YW1wbGVyRGVzYy5NaW5MT0QgPSAwOworICAgIHNhbXBsZXJEZXNjLk1heExPRCA9IEQzRDExX0ZM
T0FUMzJfTUFYOworCisgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVTYW1wbGVyU3RhdGUoJnNh
bXBsZXJEZXNjLCAmbVBhc3NUaHJvdWdoU2FtcGxlcik7CisgICAgQVNTRVJUKFNVQ0NFRURFRChy
ZXN1bHQpKTsKKyAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1QYXNzVGhyb3VnaFNhbXBsZXIsICJT
d2FwIGNoYWluIHBhc3MgdGhyb3VnaCBzYW1wbGVyIik7CisKKyAgICBEM0QxMV9JTlBVVF9FTEVN
RU5UX0RFU0MgcXVhZExheW91dFtdID0KKyAgICB7CisgICAgICAgIHsgIlBPU0lUSU9OIiwgMCwg
RFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAwLCAwLCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RB
VEEsIDAgfSwKKyAgICAgICAgeyAiVEVYQ09PUkQiLCAwLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxP
QVQsIDAsIDgsIEQzRDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMCB9LAorICAgIH07CisKKyAg
ICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUlucHV0TGF5b3V0KHF1YWRMYXlvdXQsIDIsIGdfVlNf
UGFzc3Rocm91Z2gsIHNpemVvZihnX1ZTX1Bhc3N0aHJvdWdoKSwgJm1QYXNzVGhyb3VnaElMKTsK
KyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGQzZDExOjpTZXREZWJ1Z05hbWUo
bVBhc3NUaHJvdWdoSUwsICJTd2FwIGNoYWluIHBhc3MgdGhyb3VnaCBsYXlvdXQiKTsKKworICAg
IHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVmVydGV4U2hhZGVyKGdfVlNfUGFzc3Rocm91Z2gsIHNp
emVvZihnX1ZTX1Bhc3N0aHJvdWdoKSwgTlVMTCwgJm1QYXNzVGhyb3VnaFZTKTsKKyAgICBBU1NF
UlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVBhc3NUaHJv
dWdoVlMsICJTd2FwIGNoYWluIHBhc3MgdGhyb3VnaCB2ZXJ0ZXggc2hhZGVyIik7CisKKyAgICBy
ZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVBpeGVsU2hhZGVyKGdfUFNfUGFzc3Rocm91Z2hSR0JBLCBz
aXplb2YoZ19QU19QYXNzdGhyb3VnaFJHQkEpLCBOVUxMLCAmbVBhc3NUaHJvdWdoUFMpOworICAg
IEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgZDNkMTE6OlNldERlYnVnTmFtZShtUGFz
c1Rocm91Z2hQUywgIlN3YXAgY2hhaW4gcGFzcyB0aHJvdWdoIHBpeGVsIHNoYWRlciIpOworfQor
CisvLyBwYXJhbWV0ZXJzIHNob3VsZCBiZSB2YWxpZGF0ZWQvY2xhbXBlZCBieSBjYWxsZXIKK0VH
TGludCBTd2FwQ2hhaW4xMTo6c3dhcFJlY3QoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lk
dGgsIEVHTGludCBoZWlnaHQpCit7CisgICAgaWYgKCFtU3dhcENoYWluKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEVHTF9TVUNDRVNTOworICAgIH0KKworICAgIElEM0QxMURldmljZSAqZGV2aWNl
ID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKyAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZp
Y2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CisKKyAgICAvLyBTZXQg
dmVydGljZXMKKyAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7Cisg
ICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2VDb250ZXh0LT5NYXAobVF1YWRWQiwgMCwgRDNEMTFf
TUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXBwZWRSZXNvdXJjZSk7CisgICAgaWYgKEZBSUxFRChy
ZXN1bHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVHTF9CQURfQUNDRVNTOworICAgIH0KKwor
ICAgIGQzZDExOjpQb3NpdGlvblRleENvb3JkVmVydGV4ICp2ZXJ0aWNlcyA9IHN0YXRpY19jYXN0
PGQzZDExOjpQb3NpdGlvblRleENvb3JkVmVydGV4Kj4obWFwcGVkUmVzb3VyY2UucERhdGEpOwor
CisgICAgLy8gQ3JlYXRlIGEgcXVhZCBpbiBob21vZ2VuZW91cyBjb29yZGluYXRlcworICAgIGZs
b2F0IHgxID0gKHggLyBmbG9hdChtV2lkdGgpKSAqIDIuMGYgLSAxLjBmOworICAgIGZsb2F0IHkx
ID0gKHkgLyBmbG9hdChtSGVpZ2h0KSkgKiAyLjBmIC0gMS4wZjsKKyAgICBmbG9hdCB4MiA9ICgo
eCArIHdpZHRoKSAvIGZsb2F0KG1XaWR0aCkpICogMi4wZiAtIDEuMGY7CisgICAgZmxvYXQgeTIg
PSAoKHkgKyBoZWlnaHQpIC8gZmxvYXQobUhlaWdodCkpICogMi4wZiAtIDEuMGY7CisKKyAgICBm
bG9hdCB1MSA9IHggLyBmbG9hdChtV2lkdGgpOworICAgIGZsb2F0IHYxID0geSAvIGZsb2F0KG1I
ZWlnaHQpOworICAgIGZsb2F0IHUyID0gKHggKyB3aWR0aCkgLyBmbG9hdChtV2lkdGgpOworICAg
IGZsb2F0IHYyID0gKHkgKyBoZWlnaHQpIC8gZmxvYXQobUhlaWdodCk7CisKKyAgICBkM2QxMTo6
U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbMF0sIHgxLCB5MSwgdTEsIHYxKTsK
KyAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbMV0sIHgxLCB5
MiwgdTEsIHYyKTsKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGlj
ZXNbMl0sIHgyLCB5MSwgdTIsIHYxKTsKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZl
cnRleCgmdmVydGljZXNbM10sIHgyLCB5MiwgdTIsIHYyKTsKKworICAgIGRldmljZUNvbnRleHQt
PlVubWFwKG1RdWFkVkIsIDApOworCisgICAgc3RhdGljIFVJTlQgc3RyaWRlID0gc2l6ZW9mKGQz
ZDExOjpQb3NpdGlvblRleENvb3JkVmVydGV4KTsKKyAgICBzdGF0aWMgVUlOVCBzdGFydElkeCA9
IDA7CisgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIDEsICZtUXVhZFZC
LCAmc3RyaWRlLCAmc3RhcnRJZHgpOworCisgICAgLy8gQXBwbHkgc3RhdGUKKyAgICBkZXZpY2VD
b250ZXh0LT5PTVNldERlcHRoU3RlbmNpbFN0YXRlKE5VTEwsIDB4RkZGRkZGRkYpOworCisgICAg
c3RhdGljIGNvbnN0IGZsb2F0IGJsZW5kRmFjdG9yWzRdID0geyAxLjBmLCAxLjBmLCAxLjBmLCAx
LjBmIH07CisgICAgZGV2aWNlQ29udGV4dC0+T01TZXRCbGVuZFN0YXRlKE5VTEwsIGJsZW5kRmFj
dG9yLCAweEZGRkZGRkYpOworCisgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRTdGF0ZShOVUxMKTsK
KworICAgIC8vIEFwcGx5IHNoYWRlcnMKKyAgICBkZXZpY2VDb250ZXh0LT5JQVNldElucHV0TGF5
b3V0KG1QYXNzVGhyb3VnaElMKTsKKyAgICBkZXZpY2VDb250ZXh0LT5JQVNldFByaW1pdGl2ZVRv
cG9sb2d5KEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVTVFJJUCk7CisgICAgZGV2aWNl
Q29udGV4dC0+VlNTZXRTaGFkZXIobVBhc3NUaHJvdWdoVlMsIE5VTEwsIDApOworICAgIGRldmlj
ZUNvbnRleHQtPlBTU2V0U2hhZGVyKG1QYXNzVGhyb3VnaFBTLCBOVUxMLCAwKTsKKyAgICBkZXZp
Y2VDb250ZXh0LT5HU1NldFNoYWRlcihOVUxMLCBOVUxMLCAwKTsKKworICAgIC8vIEFwcGx5IHJl
bmRlciB0YXJnZXRzCisgICAgbVJlbmRlcmVyLT5zZXRPbmVUaW1lUmVuZGVyVGFyZ2V0KG1CYWNr
QnVmZmVyUlRWaWV3KTsKKworICAgIC8vIFNldCB0aGUgdmlld3BvcnQKKyAgICBEM0QxMV9WSUVX
UE9SVCB2aWV3cG9ydDsKKyAgICB2aWV3cG9ydC5Ub3BMZWZ0WCA9IDA7CisgICAgdmlld3BvcnQu
VG9wTGVmdFkgPSAwOworICAgIHZpZXdwb3J0LldpZHRoID0gbVdpZHRoOworICAgIHZpZXdwb3J0
LkhlaWdodCA9IG1IZWlnaHQ7CisgICAgdmlld3BvcnQuTWluRGVwdGggPSAwLjBmOworICAgIHZp
ZXdwb3J0Lk1heERlcHRoID0gMS4wZjsKKyAgICBkZXZpY2VDb250ZXh0LT5SU1NldFZpZXdwb3J0
cygxLCAmdmlld3BvcnQpOworCisgICAgLy8gQXBwbHkgdGV4dHVyZXMKKyAgICBkZXZpY2VDb250
ZXh0LT5QU1NldFNoYWRlclJlc291cmNlcygwLCAxLCAmbU9mZnNjcmVlblNSVmlldyk7CisgICAg
ZGV2aWNlQ29udGV4dC0+UFNTZXRTYW1wbGVycygwLCAxLCAmbVBhc3NUaHJvdWdoU2FtcGxlcik7
CisKKyAgICAvLyBEcmF3CisgICAgZGV2aWNlQ29udGV4dC0+RHJhdyg0LCAwKTsKKyAgICByZXN1
bHQgPSBtU3dhcENoYWluLT5QcmVzZW50KG1Td2FwSW50ZXJ2YWwsIDApOworCisgICAgaWYgKHJl
c3VsdCA9PSBEWEdJX0VSUk9SX0RFVklDRV9SRU1PVkVEKQorICAgIHsKKyAgICAgICAgSFJFU1VM
VCByZW1vdmVkUmVhc29uID0gZGV2aWNlLT5HZXREZXZpY2VSZW1vdmVkUmVhc29uKCk7CisgICAg
ICAgIEVSUigiUHJlc2VudCBmYWlsZWQ6IHRoZSBEM0QxMSBkZXZpY2Ugd2FzIHJlbW92ZWQ6IDB4
JTA4WCIsIHJlbW92ZWRSZWFzb24pOworICAgICAgICByZXR1cm4gRUdMX0NPTlRFWFRfTE9TVDsK
KyAgICB9CisgICAgZWxzZSBpZiAocmVzdWx0ID09IERYR0lfRVJST1JfREVWSUNFX1JFU0VUKQor
ICAgIHsKKyAgICAgICAgRVJSKCJQcmVzZW50IGZhaWxlZDogdGhlIEQzRDExIGRldmljZSB3YXMg
cmVzZXQgZnJvbSBhIGJhZCBjb21tYW5kLiIpOworICAgICAgICByZXR1cm4gRUdMX0NPTlRFWFRf
TE9TVDsKKyAgICB9CisgICAgZWxzZSBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAg
ICBFUlIoIlByZXNlbnQgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAweCUwOFgiLCByZXN1bHQpOwor
ICAgIH0KKworICAgIC8vIFVuYmluZAorICAgIHN0YXRpYyBJRDNEMTFTaGFkZXJSZXNvdXJjZVZp
ZXcgKmNvbnN0IG51bGxTUlYgPSBOVUxMOworICAgIGRldmljZUNvbnRleHQtPlBTU2V0U2hhZGVy
UmVzb3VyY2VzKDAsIDEsICZudWxsU1JWKTsKKworICAgIG1SZW5kZXJlci0+dW5hcHBseVJlbmRl
clRhcmdldHMoKTsKKyAgICBtUmVuZGVyZXItPm1hcmtBbGxTdGF0ZURpcnR5KCk7CisKKyAgICBy
ZXR1cm4gRUdMX1NVQ0NFU1M7Cit9CisKKy8vIEluY3JlbWVudHMgcmVmY291bnQgb24gdGV4dHVy
ZS4KKy8vIGNhbGxlciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJuZWQgdGV4dHVyZQorSUQzRDEx
VGV4dHVyZTJEICpTd2FwQ2hhaW4xMTo6Z2V0T2Zmc2NyZWVuVGV4dHVyZSgpCit7CisgICAgaWYg
KG1PZmZzY3JlZW5UZXh0dXJlKQorICAgIHsKKyAgICAgICAgbU9mZnNjcmVlblRleHR1cmUtPkFk
ZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtT2Zmc2NyZWVuVGV4dHVyZTsKK30KKworLy8g
SW5jcmVtZW50cyByZWZjb3VudCBvbiB2aWV3LgorLy8gY2FsbGVyIG11c3QgUmVsZWFzZSgpIHRo
ZSByZXR1cm5lZCB2aWV3CitJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpTd2FwQ2hhaW4xMTo6Z2V0
UmVuZGVyVGFyZ2V0KCkKK3sKKyAgICBpZiAobU9mZnNjcmVlblJUVmlldykKKyAgICB7CisgICAg
ICAgIG1PZmZzY3JlZW5SVFZpZXctPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtT2Zm
c2NyZWVuUlRWaWV3OworfQorCisvLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHZpZXcuCisvLyBj
YWxsZXIgbXVzdCBSZWxlYXNlKCkgdGhlIHJldHVybmVkIHZpZXcKK0lEM0QxMVNoYWRlclJlc291
cmNlVmlldyAqU3dhcENoYWluMTE6OmdldFJlbmRlclRhcmdldFNoYWRlclJlc291cmNlKCkKK3sK
KyAgICBpZiAobU9mZnNjcmVlblNSVmlldykKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5TUlZp
ZXctPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtT2Zmc2NyZWVuU1JWaWV3OworfQor
CisvLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHZpZXcuCisvLyBjYWxsZXIgbXVzdCBSZWxlYXNl
KCkgdGhlIHJldHVybmVkIHZpZXcKK0lEM0QxMURlcHRoU3RlbmNpbFZpZXcgKlN3YXBDaGFpbjEx
OjpnZXREZXB0aFN0ZW5jaWwoKQoreworICAgIGlmIChtRGVwdGhTdGVuY2lsRFNWaWV3KQorICAg
IHsKKyAgICAgICAgbURlcHRoU3RlbmNpbERTVmlldy0+QWRkUmVmKCk7CisgICAgfQorCisgICAg
cmV0dXJuIG1EZXB0aFN0ZW5jaWxEU1ZpZXc7Cit9CisKK0lEM0QxMVRleHR1cmUyRCAqU3dhcENo
YWluMTE6OmdldERlcHRoU3RlbmNpbFRleHR1cmUoKQoreworICAgIGlmIChtRGVwdGhTdGVuY2ls
VGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1EZXB0aFN0ZW5jaWxUZXh0dXJlLT5BZGRSZWYoKTsK
KyAgICB9CisKKyAgICByZXR1cm4gbURlcHRoU3RlbmNpbFRleHR1cmU7Cit9CisKK1N3YXBDaGFp
bjExICpTd2FwQ2hhaW4xMTo6bWFrZVN3YXBDaGFpbjExKFN3YXBDaGFpbiAqc3dhcENoYWluKQor
eworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpTd2FwQ2hhaW4xMSosIHN3YXBDaGFp
bikpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxyeDo6U3dhcENoYWluMTEqPihzd2FwQ2hhaW4p
OworfQorCit2b2lkIFN3YXBDaGFpbjExOjpyZWNyZWF0ZSgpCit7CisgICAgLy8gcG9zc2libHkg
c2hvdWxkIHVzZSB0aGlzIG1ldGhvZCBpbnN0ZWFkIG9mIHJlc2V0Cit9CisKK30KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluMTEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1N3YXBDaGFpbjExLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjExLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTd2FwQ2hhaW4xMS5oOiBEZWZpbmVz
IGEgYmFjay1lbmQgc3BlY2lmaWMgY2xhc3MgZm9yIHRoZSBEM0QxMSBzd2FwIGNoYWluLgorCisj
aWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9TV0FQQ0hBSU4xMV9IXworI2RlZmluZSBMSUJHTEVT
VjJfUkVOREVSRVJfU1dBUENIQUlOMTFfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxz
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oIgorCituYW1lc3Bh
Y2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyMTE7CisKK2NsYXNzIFN3YXBDaGFpbjExIDogcHVibGlj
IFN3YXBDaGFpbgoreworICBwdWJsaWM6CisgICAgU3dhcENoYWluMTEoUmVuZGVyZXIxMSAqcmVu
ZGVyZXIsIEhXTkQgd2luZG93LCBIQU5ETEUgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAg
R0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCk7CisgICAg
dmlydHVhbCB+U3dhcENoYWluMTEoKTsKKworICAgIEVHTGludCByZXNpemUoRUdMaW50IGJhY2ti
dWZmZXJXaWR0aCwgRUdMaW50IGJhY2tidWZmZXJIZWlnaHQpOworICAgIHZpcnR1YWwgRUdMaW50
IHJlc2V0KEVHTGludCBiYWNrYnVmZmVyV2lkdGgsIEVHTGludCBiYWNrYnVmZmVySGVpZ2h0LCBF
R0xpbnQgc3dhcEludGVydmFsKTsKKyAgICB2aXJ0dWFsIEVHTGludCBzd2FwUmVjdChFR0xpbnQg
eCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCk7CisgICAgdmlydHVhbCB2
b2lkIHJlY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIElEM0QxMVRleHR1cmUyRCAqZ2V0T2Zmc2Ny
ZWVuVGV4dHVyZSgpOworICAgIHZpcnR1YWwgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqZ2V0UmVu
ZGVyVGFyZ2V0KCk7CisgICAgdmlydHVhbCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmdldFJl
bmRlclRhcmdldFNoYWRlclJlc291cmNlKCk7CisKKyAgICB2aXJ0dWFsIElEM0QxMVRleHR1cmUy
RCAqZ2V0RGVwdGhTdGVuY2lsVGV4dHVyZSgpOworICAgIHZpcnR1YWwgSUQzRDExRGVwdGhTdGVu
Y2lsVmlldyAqZ2V0RGVwdGhTdGVuY2lsKCk7CisKKyAgICBFR0xpbnQgZ2V0V2lkdGgoKSBjb25z
dCB7IHJldHVybiBtV2lkdGg7IH0KKyAgICBFR0xpbnQgZ2V0SGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbUhlaWdodDsgfQorCisgICAgc3RhdGljIFN3YXBDaGFpbjExICptYWtlU3dhcENoYWluMTEo
U3dhcENoYWluICpzd2FwQ2hhaW4pOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOKFN3YXBDaGFpbjExKTsKKworICAgIHZvaWQgcmVsZWFzZSgpOworICAgIHZvaWQg
aW5pdFBhc3NUaHJvdWdoUmVzb3VyY2VzKCk7CisgICAgdm9pZCByZWxlYXNlT2Zmc2NyZWVuVGV4
dHVyZSgpOworICAgIEVHTGludCByZXNldE9mZnNjcmVlblRleHR1cmUoaW50IGJhY2tidWZmZXJX
aWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpOworCisgICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVy
OworICAgIEVHTGludCBtSGVpZ2h0OworICAgIEVHTGludCBtV2lkdGg7CisgICAgYm9vbCBtQXBw
Q3JlYXRlZFNoYXJlSGFuZGxlOworICAgIHVuc2lnbmVkIGludCBtU3dhcEludGVydmFsOworICAg
IGJvb2wgbVBhc3NUaHJvdWdoUmVzb3VyY2VzSW5pdDsKKworICAgIElEWEdJU3dhcENoYWluICpt
U3dhcENoYWluOworCisgICAgSUQzRDExVGV4dHVyZTJEICptQmFja0J1ZmZlclRleHR1cmU7Cisg
ICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqbUJhY2tCdWZmZXJSVFZpZXc7CisKKyAgICBJRDNE
MTFUZXh0dXJlMkQgKm1PZmZzY3JlZW5UZXh0dXJlOworICAgIElEM0QxMVJlbmRlclRhcmdldFZp
ZXcgKm1PZmZzY3JlZW5SVFZpZXc7CisgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICptT2Zm
c2NyZWVuU1JWaWV3OworCisgICAgSUQzRDExVGV4dHVyZTJEICptRGVwdGhTdGVuY2lsVGV4dHVy
ZTsKKyAgICBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICptRGVwdGhTdGVuY2lsRFNWaWV3OworCisg
ICAgSUQzRDExQnVmZmVyICptUXVhZFZCOworICAgIElEM0QxMVNhbXBsZXJTdGF0ZSAqbVBhc3NU
aHJvdWdoU2FtcGxlcjsKKyAgICBJRDNEMTFJbnB1dExheW91dCAqbVBhc3NUaHJvdWdoSUw7Cisg
ICAgSUQzRDExVmVydGV4U2hhZGVyICptUGFzc1Rocm91Z2hWUzsKKyAgICBJRDNEMTFQaXhlbFNo
YWRlciAqbVBhc3NUaHJvdWdoUFM7Cit9OworCit9CisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRF
UkVSX1NXQVBDSEFJTjExX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBD
aGFpbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
U3dhcENoYWluLmg6IERlZmluZXMgYSBiYWNrLWVuZCBzcGVjaWZpYyBjbGFzcyB0aGF0IGhpZGVz
IHRoZSBkZXRhaWxzIG9mIHRoZQorLy8gaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgc3dhcGNoYWlu
LgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9TV0FQQ0hBSU5fSF8KKyNkZWZpbmUgTElC
R0xFU1YyX1JFTkRFUkVSX1NXQVBDSEFJTl9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRp
bHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFN3YXBDaGFpbgoreworICBwdWJsaWM6
CisgICAgU3dhcENoYWluKEhXTkQgd2luZG93LCBIQU5ETEUgc2hhcmVIYW5kbGUsIEdMZW51bSBi
YWNrQnVmZmVyRm9ybWF0LCBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQpCisgICAgICAgIDogbVdp
bmRvdyh3aW5kb3cpLCBtU2hhcmVIYW5kbGUoc2hhcmVIYW5kbGUpLCBtQmFja0J1ZmZlckZvcm1h
dChiYWNrQnVmZmVyRm9ybWF0KSwgbURlcHRoQnVmZmVyRm9ybWF0KGRlcHRoQnVmZmVyRm9ybWF0
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Td2FwQ2hhaW4oKSB7fTsKKworICAgIHZp
cnR1YWwgRUdMaW50IHJlc2l6ZShFR0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1
ZmZlclNpemUpID0gMDsKKyAgICB2aXJ0dWFsIEVHTGludCByZXNldChFR0xpbnQgYmFja2J1ZmZl
cldpZHRoLCBFR0xpbnQgYmFja2J1ZmZlckhlaWdodCwgRUdMaW50IHN3YXBJbnRlcnZhbCkgPSAw
OworICAgIHZpcnR1YWwgRUdMaW50IHN3YXBSZWN0KEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50
IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlKCkg
PSAwOworCisgICAgdmlydHVhbCBIQU5ETEUgZ2V0U2hhcmVIYW5kbGUoKSB7cmV0dXJuIG1TaGFy
ZUhhbmRsZTt9OworCisgIHByb3RlY3RlZDoKKyAgICBjb25zdCBIV05EIG1XaW5kb3c7ICAgICAg
ICAgICAgLy8gV2luZG93IHRoYXQgdGhlIHN1cmZhY2UgaXMgY3JlYXRlZCBmb3IuCisgICAgY29u
c3QgR0xlbnVtIG1CYWNrQnVmZmVyRm9ybWF0OworICAgIGNvbnN0IEdMZW51bSBtRGVwdGhCdWZm
ZXJGb3JtYXQ7CisKKyAgICBIQU5ETEUgbVNoYXJlSGFuZGxlOworfTsKKworfQorI2VuZGlmIC8v
IExJQkdMRVNWMl9SRU5ERVJFUl9TV0FQQ0hBSU5fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Rl
eHR1cmVTdG9yYWdlOS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlOS5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzI4IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyBUZXh0dXJlU3RvcmFnZTkuY3BwOiBJbXBsZW1lbnRzIHRoZSBhYnN0cmFjdCByeDo6
VGV4dHVyZVN0b3JhZ2U5IGNsYXNzIGFuZCBpdHMgY29uY3JldGUgZGVyaXZlZAorLy8gY2xhc3Nl
cyBUZXh0dXJlU3RvcmFnZTlfMkQgYW5kIFRleHR1cmVTdG9yYWdlOV9DdWJlLCB3aGljaCBhY3Qg
YXMgdGhlIGludGVyZmFjZSB0byB0aGUKKy8vIEQzRDkgdGV4dHVyZS4KKworI2luY2x1ZGUgImxp
YkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTkuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQ5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L3JlbmRlcmVyOV91dGlscy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCisKK25h
bWVzcGFjZSByeAoreworVGV4dHVyZVN0b3JhZ2U5OjpUZXh0dXJlU3RvcmFnZTkoUmVuZGVyZXIg
KnJlbmRlcmVyLCBEV09SRCB1c2FnZSkKKyAgICA6IG1Mb2RPZmZzZXQoMCksCisgICAgICBtUmVu
ZGVyZXIoUmVuZGVyZXI5OjptYWtlUmVuZGVyZXI5KHJlbmRlcmVyKSksCisgICAgICBtRDNEVXNh
Z2UodXNhZ2UpLAorICAgICAgbUQzRFBvb2wobVJlbmRlcmVyLT5nZXRUZXh0dXJlUG9vbCh1c2Fn
ZSkpCit7Cit9CisKK1RleHR1cmVTdG9yYWdlOTo6flRleHR1cmVTdG9yYWdlOSgpCit7Cit9CisK
K1RleHR1cmVTdG9yYWdlOSAqVGV4dHVyZVN0b3JhZ2U5OjptYWtlVGV4dHVyZVN0b3JhZ2U5KFRl
eHR1cmVTdG9yYWdlICpzdG9yYWdlKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKFRl
eHR1cmVTdG9yYWdlOSosIHN0b3JhZ2UpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dHVy
ZVN0b3JhZ2U5Kj4oc3RvcmFnZSk7Cit9CisKK0RXT1JEIFRleHR1cmVTdG9yYWdlOTo6R2V0VGV4
dHVyZVVzYWdlKEQzREZPUk1BVCBkM2RmbXQsIEdMZW51bSBnbHVzYWdlLCBib29sIGZvcmNlUmVu
ZGVyYWJsZSkKK3sKKyAgICBEV09SRCBkM2R1c2FnZSA9IDA7CisKKyAgICBpZiAoZDNkZm10ID09
IEQzREZNVF9JTlRaKQorICAgIHsKKyAgICAgICAgZDNkdXNhZ2UgfD0gRDNEVVNBR0VfREVQVEhT
VEVOQ0lMOworICAgIH0KKyAgICBlbHNlIGlmKGZvcmNlUmVuZGVyYWJsZSB8fCAoVGV4dHVyZVN0
b3JhZ2U5OjpJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKGQzZGZtdCkgJiYgKGdsdXNhZ2UgPT0g
R0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRSkpKQorICAgIHsKKyAgICAgICAgZDNkdXNh
Z2UgfD0gRDNEVVNBR0VfUkVOREVSVEFSR0VUOworICAgIH0KKyAgICByZXR1cm4gZDNkdXNhZ2U7
Cit9CisKK2Jvb2wgVGV4dHVyZVN0b3JhZ2U5OjpJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKEQz
REZPUk1BVCBmb3JtYXQpCit7CisgICAgaWYgKGZvcm1hdCA9PSBEM0RGTVRfSU5UWikKKyAgICB7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBzd2l0Y2goZm9ybWF0KQorICAgIHsK
KyAgICAgIGNhc2UgRDNERk1UX0w4OgorICAgICAgY2FzZSBEM0RGTVRfQThMODoKKyAgICAgIGNh
c2UgRDNERk1UX0RYVDE6CisgICAgICBjYXNlIEQzREZNVF9EWFQzOgorICAgICAgY2FzZSBEM0RG
TVRfRFhUNToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgY2FzZSBEM0RGTVRfQThSOEc4
Qjg6CisgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKKyAgICAgIGNhc2UgRDNERk1UX0ExNkIx
NkcxNlIxNkY6CisgICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFRleHR1cmVTdG9yYWdlOTo6aXNSZW5kZXJU
YXJnZXQoKSBjb25zdAoreworICAgIHJldHVybiAobUQzRFVzYWdlICYgKEQzRFVTQUdFX1JFTkRF
UlRBUkdFVCB8IEQzRFVTQUdFX0RFUFRIU1RFTkNJTCkpICE9IDA7Cit9CisKK2Jvb2wgVGV4dHVy
ZVN0b3JhZ2U5Ojppc01hbmFnZWQoKSBjb25zdAoreworICAgIHJldHVybiAobUQzRFBvb2wgPT0g
RDNEUE9PTF9NQU5BR0VEKTsKK30KKworRDNEUE9PTCBUZXh0dXJlU3RvcmFnZTk6OmdldFBvb2wo
KSBjb25zdAoreworICAgIHJldHVybiBtRDNEUG9vbDsKK30KKworRFdPUkQgVGV4dHVyZVN0b3Jh
Z2U5OjpnZXRVc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EM0RVc2FnZTsKK30KKworaW50
IFRleHR1cmVTdG9yYWdlOTo6Z2V0TG9kT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUxv
ZE9mZnNldDsKK30KKworaW50IFRleHR1cmVTdG9yYWdlOTo6bGV2ZWxDb3VudCgpCit7CisgICAg
cmV0dXJuIGdldEJhc2VUZXh0dXJlKCkgPyBnZXRCYXNlVGV4dHVyZSgpLT5HZXRMZXZlbENvdW50
KCkgLSBnZXRMb2RPZmZzZXQoKSA6IDA7Cit9CisKK1RleHR1cmVTdG9yYWdlOV8yRDo6VGV4dHVy
ZVN0b3JhZ2U5XzJEKFJlbmRlcmVyICpyZW5kZXJlciwgU3dhcENoYWluOSAqc3dhcGNoYWluKSA6
IFRleHR1cmVTdG9yYWdlOShyZW5kZXJlciwgRDNEVVNBR0VfUkVOREVSVEFSR0VUKQoreworICAg
IElEaXJlY3QzRFRleHR1cmU5ICpzdXJmYWNlVGV4dHVyZSA9IHN3YXBjaGFpbi0+Z2V0T2Zmc2Ny
ZWVuVGV4dHVyZSgpOworICAgIG1UZXh0dXJlID0gc3VyZmFjZVRleHR1cmU7CisgICAgbVJlbmRl
clRhcmdldCA9IE5VTEw7CisKKyAgICBpbml0aWFsaXplUmVuZGVyVGFyZ2V0KCk7Cit9CisKK1Rl
eHR1cmVTdG9yYWdlOV8yRDo6VGV4dHVyZVN0b3JhZ2U5XzJEKFJlbmRlcmVyICpyZW5kZXJlciwg
aW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gdXNhZ2UsIGJvb2wgZm9y
Y2VSZW5kZXJhYmxlLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKKyAgICA6IFRleHR1
cmVTdG9yYWdlOShyZW5kZXJlciwgR2V0VGV4dHVyZVVzYWdlKFJlbmRlcmVyOTo6bWFrZVJlbmRl
cmVyOShyZW5kZXJlciktPkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3Jt
YXQpLCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxlKSkKK3sKKyAgICBtVGV4dHVyZSA9IE5VTEw7Cisg
ICAgbVJlbmRlclRhcmdldCA9IE5VTEw7CisgICAgLy8gaWYgdGhlIHdpZHRoIG9yIGhlaWdodCBp
cyBub3QgcG9zaXRpdmUgdGhpcyBzaG91bGQgYmUgdHJlYXRlZCBhcyBhbiBpbmNvbXBsZXRlIHRl
eHR1cmUKKyAgICAvLyB3ZSBoYW5kbGUgdGhhdCBoZXJlIGJ5IHNraXBwaW5nIHRoZSBkM2QgdGV4
dHVyZSBjcmVhdGlvbgorICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkKKyAgICB7Cisg
ICAgICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7
CisgICAgICAgIGdsOjpNYWtlVmFsaWRTaXplKGZhbHNlLCBnbDo6SXNDb21wcmVzc2VkKGludGVy
bmFsZm9ybWF0KSwgJndpZHRoLCAmaGVpZ2h0LCAmbUxvZE9mZnNldCk7CisgICAgICAgIEhSRVNV
TFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlKHdpZHRoLCBoZWlnaHQsIGxldmVscyA/
IGxldmVscyArIG1Mb2RPZmZzZXQgOiAwLCBnZXRVc2FnZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyZXItPkNvbnZlcnRUZXh0dXJlSW50
ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQpLCBnZXRQb29sKCksICZtVGV4dHVyZSwgTlVMTCk7
CisKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09V
VE9GTUVNT1JZKTsKKyAgICAgICAgICAgIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGluaXRpYWxpemVSZW5kZXJUYXJnZXQoKTsKK30KKworVGV4
dHVyZVN0b3JhZ2U5XzJEOjp+VGV4dHVyZVN0b3JhZ2U5XzJEKCkKK3sKKyAgICBpZiAobVRleHR1
cmUpCisgICAgeworICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOworICAgIH0KKworICAgIGRl
bGV0ZSBtUmVuZGVyVGFyZ2V0OworfQorCitUZXh0dXJlU3RvcmFnZTlfMkQgKlRleHR1cmVTdG9y
YWdlOV8yRDo6bWFrZVRleHR1cmVTdG9yYWdlOV8yRChUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSkK
K3sKKyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShUZXh0dXJlU3RvcmFnZTlfMkQqLCBzdG9y
YWdlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHR1cmVTdG9yYWdlOV8yRCo+KHN0b3Jh
Z2UpOworfQorCisvLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHN1cmZhY2UuCisvLyBjYWxsZXIg
bXVzdCBSZWxlYXNlKCkgdGhlIHJldHVybmVkIHN1cmZhY2UKK0lEaXJlY3QzRFN1cmZhY2U5ICpU
ZXh0dXJlU3RvcmFnZTlfMkQ6OmdldFN1cmZhY2VMZXZlbChpbnQgbGV2ZWwsIGJvb2wgZGlydHkp
Cit7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UgPSBOVUxMOworCisgICAgaWYgKG1U
ZXh0dXJlKQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtVGV4dHVyZS0+R2V0U3Vy
ZmFjZUxldmVsKGxldmVsICsgbUxvZE9mZnNldCwgJnN1cmZhY2UpOworICAgICAgICBBU1NFUlQo
U1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgICAgIC8vIFdpdGggbWFuYWdlZCB0ZXh0dXJlcyB0
aGUgZHJpdmVyIG5lZWRzIHRvIGJlIGluZm9ybWVkIG9mIHVwZGF0ZXMgdG8gdGhlIGxvd2VyIG1p
cG1hcCBsZXZlbHMKKyAgICAgICAgaWYgKGxldmVsICsgbUxvZE9mZnNldCAhPSAwICYmIGlzTWFu
YWdlZCgpICYmIGRpcnR5KQorICAgICAgICB7CisgICAgICAgICAgICBtVGV4dHVyZS0+QWRkRGly
dHlSZWN0KE5VTEwpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHN1cmZhY2U7Cit9
CisKK1JlbmRlclRhcmdldCAqVGV4dHVyZVN0b3JhZ2U5XzJEOjpnZXRSZW5kZXJUYXJnZXQoKQor
eworICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0OworfQorCit2b2lkIFRleHR1cmVTdG9yYWdlOV8y
RDo6Z2VuZXJhdGVNaXBtYXAoaW50IGxldmVsKQoreworICAgIElEaXJlY3QzRFN1cmZhY2U5ICp1
cHBlciA9IGdldFN1cmZhY2VMZXZlbChsZXZlbCAtIDEsIGZhbHNlKTsKKyAgICBJRGlyZWN0M0RT
dXJmYWNlOSAqbG93ZXIgPSBnZXRTdXJmYWNlTGV2ZWwobGV2ZWwsIHRydWUpOworCisgICAgaWYg
KHVwcGVyICE9IE5VTEwgJiYgbG93ZXIgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIG1SZW5kZXJl
ci0+Ym94RmlsdGVyKHVwcGVyLCBsb3dlcik7CisgICAgfQorCisgICAgaWYgKHVwcGVyICE9IE5V
TEwpIHVwcGVyLT5SZWxlYXNlKCk7CisgICAgaWYgKGxvd2VyICE9IE5VTEwpIGxvd2VyLT5SZWxl
YXNlKCk7Cit9CisKK0lEaXJlY3QzREJhc2VUZXh0dXJlOSAqVGV4dHVyZVN0b3JhZ2U5XzJEOjpn
ZXRCYXNlVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlOworfQorCit2b2lk
IFRleHR1cmVTdG9yYWdlOV8yRDo6aW5pdGlhbGl6ZVJlbmRlclRhcmdldCgpCit7CisgICAgQVNT
RVJUKG1SZW5kZXJUYXJnZXQgPT0gTlVMTCk7CisKKyAgICBpZiAobVRleHR1cmUgIT0gTlVMTCAm
JiBpc1JlbmRlclRhcmdldCgpKQorICAgIHsKKyAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1
cmZhY2UgPSBnZXRTdXJmYWNlTGV2ZWwoMCwgZmFsc2UpOworCisgICAgICAgIG1SZW5kZXJUYXJn
ZXQgPSBuZXcgUmVuZGVyVGFyZ2V0OShtUmVuZGVyZXIsIHN1cmZhY2UpOworICAgIH0KK30KKwor
VGV4dHVyZVN0b3JhZ2U5X0N1YmU6OlRleHR1cmVTdG9yYWdlOV9DdWJlKFJlbmRlcmVyICpyZW5k
ZXJlciwgaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gdXNhZ2UsIGJv
b2wgZm9yY2VSZW5kZXJhYmxlLCBpbnQgc2l6ZSkKKyAgICA6IFRleHR1cmVTdG9yYWdlOShyZW5k
ZXJlciwgR2V0VGV4dHVyZVVzYWdlKFJlbmRlcmVyOTo6bWFrZVJlbmRlcmVyOShyZW5kZXJlcikt
PkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQpLCB1c2FnZSwgZm9y
Y2VSZW5kZXJhYmxlKSkKK3sKKyAgICBtVGV4dHVyZSA9IE5VTEw7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCA2OyArK2kpCisgICAgeworICAgICAgICBtUmVuZGVyVGFyZ2V0W2ldID0gTlVMTDsK
KyAgICB9CisKKyAgICAvLyBpZiB0aGUgc2l6ZSBpcyBub3QgcG9zaXRpdmUgdGhpcyBzaG91bGQg
YmUgdHJlYXRlZCBhcyBhbiBpbmNvbXBsZXRlIHRleHR1cmUKKyAgICAvLyB3ZSBoYW5kbGUgdGhh
dCBoZXJlIGJ5IHNraXBwaW5nIHRoZSBkM2QgdGV4dHVyZSBjcmVhdGlvbgorICAgIGlmIChzaXpl
ID4gMCkKKyAgICB7CisgICAgICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJl
ci0+Z2V0RGV2aWNlKCk7CisgICAgICAgIGludCBoZWlnaHQgPSBzaXplOworICAgICAgICBnbDo6
TWFrZVZhbGlkU2l6ZShmYWxzZSwgZ2w6OklzQ29tcHJlc3NlZChpbnRlcm5hbGZvcm1hdCksICZz
aXplLCAmaGVpZ2h0LCAmbUxvZE9mZnNldCk7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2
aWNlLT5DcmVhdGVDdWJlVGV4dHVyZShzaXplLCBsZXZlbHMgPyBsZXZlbHMgKyBtTG9kT2Zmc2V0
IDogMCwgZ2V0VXNhZ2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1SZW5kZXJlci0+Q29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdChpbnRl
cm5hbGZvcm1hdCksIGdldFBvb2woKSwgJm1UZXh0dXJlLCBOVUxMKTsKKworICAgICAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0g
RDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOworICAg
ICAgICAgICAgZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICB9CisgICAgfQor
CisgICAgaW5pdGlhbGl6ZVJlbmRlclRhcmdldCgpOworfQorCitUZXh0dXJlU3RvcmFnZTlfQ3Vi
ZTo6flRleHR1cmVTdG9yYWdlOV9DdWJlKCkKK3sKKyAgICBpZiAobVRleHR1cmUpCisgICAgewor
ICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOworICAgIH0KKworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgNjsgKytpKQorICAgIHsKKyAgICAgICAgZGVsZXRlIG1SZW5kZXJUYXJnZXRbaV07Cisg
ICAgfQorfQorCitUZXh0dXJlU3RvcmFnZTlfQ3ViZSAqVGV4dHVyZVN0b3JhZ2U5X0N1YmU6Om1h
a2VUZXh0dXJlU3RvcmFnZTlfQ3ViZShUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSkKK3sKKyAgICBB
U1NFUlQoSEFTX0RZTkFNSUNfVFlQRShUZXh0dXJlU3RvcmFnZTlfQ3ViZSosIHN0b3JhZ2UpKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dHVyZVN0b3JhZ2U5X0N1YmUqPihzdG9yYWdlKTsK
K30KKworLy8gSW5jcmVtZW50cyByZWZjb3VudCBvbiBzdXJmYWNlLgorLy8gY2FsbGVyIG11c3Qg
UmVsZWFzZSgpIHRoZSByZXR1cm5lZCBzdXJmYWNlCitJRGlyZWN0M0RTdXJmYWNlOSAqVGV4dHVy
ZVN0b3JhZ2U5X0N1YmU6OmdldEN1YmVNYXBTdXJmYWNlKEdMZW51bSBmYWNlVGFyZ2V0LCBpbnQg
bGV2ZWwsIGJvb2wgZGlydHkpCit7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UgPSBO
VUxMOworCisgICAgaWYgKG1UZXh0dXJlKQorICAgIHsKKyAgICAgICAgRDNEQ1VCRU1BUF9GQUNF
UyBmYWNlID0gZ2xfZDNkOTo6Q29udmVydEN1YmVGYWNlKGZhY2VUYXJnZXQpOworICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9IG1UZXh0dXJlLT5HZXRDdWJlTWFwU3VyZmFjZShmYWNlLCBsZXZlbCAr
IG1Mb2RPZmZzZXQsICZzdXJmYWNlKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQp
KTsKKworICAgICAgICAvLyBXaXRoIG1hbmFnZWQgdGV4dHVyZXMgdGhlIGRyaXZlciBuZWVkcyB0
byBiZSBpbmZvcm1lZCBvZiB1cGRhdGVzIHRvIHRoZSBsb3dlciBtaXBtYXAgbGV2ZWxzCisgICAg
ICAgIGlmIChsZXZlbCAhPSAwICYmIGlzTWFuYWdlZCgpICYmIGRpcnR5KQorICAgICAgICB7Cisg
ICAgICAgICAgICBtVGV4dHVyZS0+QWRkRGlydHlSZWN0KGZhY2UsIE5VTEwpOworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIHN1cmZhY2U7Cit9CisKK1JlbmRlclRhcmdldCAqVGV4dHVy
ZVN0b3JhZ2U5X0N1YmU6OmdldFJlbmRlclRhcmdldChHTGVudW0gZmFjZVRhcmdldCkKK3sKKyAg
ICByZXR1cm4gbVJlbmRlclRhcmdldFtnbDo6VGV4dHVyZUN1YmVNYXA6OmZhY2VJbmRleChmYWNl
VGFyZ2V0KV07Cit9CisKK3ZvaWQgVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmdlbmVyYXRlTWlwbWFw
KGludCBmYWNlLCBpbnQgbGV2ZWwpCit7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnVwcGVyID0g
Z2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgZmFjZSwg
bGV2ZWwgLSAxLCBmYWxzZSk7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKmxvd2VyID0gZ2V0Q3Vi
ZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgZmFjZSwgbGV2ZWws
IHRydWUpOworCisgICAgaWYgKHVwcGVyICE9IE5VTEwgJiYgbG93ZXIgIT0gTlVMTCkKKyAgICB7
CisgICAgICAgIG1SZW5kZXJlci0+Ym94RmlsdGVyKHVwcGVyLCBsb3dlcik7CisgICAgfQorCisg
ICAgaWYgKHVwcGVyICE9IE5VTEwpIHVwcGVyLT5SZWxlYXNlKCk7CisgICAgaWYgKGxvd2VyICE9
IE5VTEwpIGxvd2VyLT5SZWxlYXNlKCk7Cit9CisKK0lEaXJlY3QzREJhc2VUZXh0dXJlOSAqVGV4
dHVyZVN0b3JhZ2U5X0N1YmU6OmdldEJhc2VUZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bVRleHR1cmU7Cit9CisKK3ZvaWQgVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmluaXRpYWxpemVSZW5k
ZXJUYXJnZXQoKQoreworICAgIGlmIChtVGV4dHVyZSAhPSBOVUxMICYmIGlzUmVuZGVyVGFyZ2V0
KCkpCisgICAgeworICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSA9IE5VTEw7CisK
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2OyArK2kpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtUmVuZGVyVGFyZ2V0W2ldID09IE5VTEwpOworCisgICAgICAgICAgICBzdXJm
YWNlID0gZ2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsg
aSwgMCwgZmFsc2UpOworCisgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0W2ldID0gbmV3IFJlbmRl
clRhcmdldDkobVJlbmRlcmVyLCBzdXJmYWNlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworfQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3Rv
cmFnZTkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTA5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVGV4dHVyZVN0b3JhZ2U5Lmg6IERlZmluZXMgdGhl
IGFic3RyYWN0IHJ4OjpUZXh0dXJlU3RvcmFnZTkgY2xhc3MgYW5kIGl0cyBjb25jcmV0ZSBkZXJp
dmVkCisvLyBjbGFzc2VzIFRleHR1cmVTdG9yYWdlOV8yRCBhbmQgVGV4dHVyZVN0b3JhZ2U5X0N1
YmUsIHdoaWNoIGFjdCBhcyB0aGUgaW50ZXJmYWNlIHRvIHRoZQorLy8gRDNEOSB0ZXh0dXJlLgor
CisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9URVhUVVJFU1RPUkFHRTlfSF8KKyNkZWZpbmUg
TElCR0xFU1YyX1JFTkRFUkVSX1RFWFRVUkVTVE9SQUdFOV9IXworCisjaW5jbHVkZSAibGliR0xF
U3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlLmgiCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgi
CisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI5OworY2xhc3MgU3dhcENoYWluOTsK
K2NsYXNzIFJlbmRlclRhcmdldDsKK2NsYXNzIFJlbmRlclRhcmdldDk7CitjbGFzcyBCbGl0Owor
CitjbGFzcyBUZXh0dXJlU3RvcmFnZTkgOiBwdWJsaWMgVGV4dHVyZVN0b3JhZ2UKK3sKKyAgcHVi
bGljOgorICAgIFRleHR1cmVTdG9yYWdlOShSZW5kZXJlciAqcmVuZGVyZXIsIERXT1JEIHVzYWdl
KTsKKyAgICB2aXJ0dWFsIH5UZXh0dXJlU3RvcmFnZTkoKTsKKworICAgIHN0YXRpYyBUZXh0dXJl
U3RvcmFnZTkgKm1ha2VUZXh0dXJlU3RvcmFnZTkoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UpOwor
CisgICAgc3RhdGljIERXT1JEIEdldFRleHR1cmVVc2FnZShEM0RGT1JNQVQgZDNkZm10LCBHTGVu
dW0gZ2x1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUpOworICAgIHN0YXRpYyBib29sIElzVGV4
dHVyZUZvcm1hdFJlbmRlcmFibGUoRDNERk9STUFUIGZvcm1hdCk7CisKKyAgICBEM0RQT09MIGdl
dFBvb2woKSBjb25zdDsKKyAgICBEV09SRCBnZXRVc2FnZSgpIGNvbnN0OworCisgICAgdmlydHVh
bCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKmdldEJhc2VUZXh0dXJlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoKSB7IHJldHVybiBOVUxMOyB9
CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChHTGVudW0gZmFjZVRh
cmdldCkgeyByZXR1cm4gTlVMTDsgfQorICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcChp
bnQgbGV2ZWwpIHt9OworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcChpbnQgZmFjZSwg
aW50IGxldmVsKSB7fTsKKworICAgIHZpcnR1YWwgaW50IGdldExvZE9mZnNldCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclRhcmdldCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBpc01hbmFnZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBsZXZlbENvdW50KCk7CisKKyAg
cHJvdGVjdGVkOgorICAgIGludCBtTG9kT2Zmc2V0OworICAgIFJlbmRlcmVyOSAqbVJlbmRlcmVy
OworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmVTdG9y
YWdlOSk7CisKKyAgICBjb25zdCBEV09SRCBtRDNEVXNhZ2U7CisgICAgY29uc3QgRDNEUE9PTCBt
RDNEUG9vbDsKK307CisKK2NsYXNzIFRleHR1cmVTdG9yYWdlOV8yRCA6IHB1YmxpYyBUZXh0dXJl
U3RvcmFnZTkKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlOV8yRChSZW5kZXJlciAq
cmVuZGVyZXIsIFN3YXBDaGFpbjkgKnN3YXBjaGFpbik7CisgICAgVGV4dHVyZVN0b3JhZ2U5XzJE
KFJlbmRlcmVyICpyZW5kZXJlciwgaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
TGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCk7CisgICAgdmlydHVhbCB+VGV4dHVyZVN0b3JhZ2U5XzJEKCk7CisKKyAgICBzdGF0
aWMgVGV4dHVyZVN0b3JhZ2U5XzJEICptYWtlVGV4dHVyZVN0b3JhZ2U5XzJEKFRleHR1cmVTdG9y
YWdlICpzdG9yYWdlKTsKKworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRTdXJmYWNlTGV2ZWwo
aW50IGxldmVsLCBib29sIGRpcnR5KTsKKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAqZ2V0UmVu
ZGVyVGFyZ2V0KCk7CisgICAgdmlydHVhbCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKmdldEJhc2VU
ZXh0dXJlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwKGludCBsZXZl
bCk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZVN0
b3JhZ2U5XzJEKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZVJlbmRlclRhcmdldCgpOworCisgICAg
SURpcmVjdDNEVGV4dHVyZTkgKm1UZXh0dXJlOworICAgIFJlbmRlclRhcmdldDkgKm1SZW5kZXJU
YXJnZXQ7Cit9OworCitjbGFzcyBUZXh0dXJlU3RvcmFnZTlfQ3ViZSA6IHB1YmxpYyBUZXh0dXJl
U3RvcmFnZTkKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlOV9DdWJlKFJlbmRlcmVy
ICpyZW5kZXJlciwgaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gdXNh
Z2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBpbnQgc2l6ZSk7CisgICAgdmlydHVhbCB+VGV4dHVy
ZVN0b3JhZ2U5X0N1YmUoKTsKKworICAgIHN0YXRpYyBUZXh0dXJlU3RvcmFnZTlfQ3ViZSAqbWFr
ZVRleHR1cmVTdG9yYWdlOV9DdWJlKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlKTsKKworICAgIElE
aXJlY3QzRFN1cmZhY2U5ICpnZXRDdWJlTWFwU3VyZmFjZShHTGVudW0gZmFjZVRhcmdldCwgaW50
IGxldmVsLCBib29sIGRpcnR5KTsKKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAqZ2V0UmVuZGVy
VGFyZ2V0KEdMZW51bSBmYWNlVGFyZ2V0KTsKKyAgICB2aXJ0dWFsIElEaXJlY3QzREJhc2VUZXh0
dXJlOSAqZ2V0QmFzZVRleHR1cmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVN
aXBtYXAoaW50IGZhY2UsIGludCBsZXZlbCk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19D
T1BZX0FORF9BU1NJR04oVGV4dHVyZVN0b3JhZ2U5X0N1YmUpOworCisgICAgdm9pZCBpbml0aWFs
aXplUmVuZGVyVGFyZ2V0KCk7CisKKyAgICBJRGlyZWN0M0RDdWJlVGV4dHVyZTkgKm1UZXh0dXJl
OworICAgIFJlbmRlclRhcmdldDkgKm1SZW5kZXJUYXJnZXRbNl07Cit9OworCit9CisKKyNlbmRp
ZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfVEVYVFVSRVNUT1JBR0U5X0hfCisKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2Ux
MS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UxMS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjc2IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQu
aCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBUZXh0dXJlU3RvcmFnZTExLmNwcDogSW1wbGVtZW50cyB0
aGUgYWJzdHJhY3Qgcng6OlRleHR1cmVTdG9yYWdlMTEgY2xhc3MgYW5kIGl0cyBjb25jcmV0ZSBk
ZXJpdmVkCisvLyBjbGFzc2VzIFRleHR1cmVTdG9yYWdlMTFfMkQgYW5kIFRleHR1cmVTdG9yYWdl
MTFfQ3ViZSwgd2hpY2ggYWN0IGFzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIEQzRDExIHRleHR1cmUu
CisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UxMS5oIgorCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0MTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvU3dhcENoYWluMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVy
ZXIxMV91dGlscy5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisKK25hbWVzcGFjZSByeAoreworCitUZXh0dXJlU3RvcmFn
ZTExOjpUZXh0dXJlU3RvcmFnZTExKFJlbmRlcmVyICpyZW5kZXJlciwgVUlOVCBiaW5kRmxhZ3Mp
CisgICAgOiBtQmluZEZsYWdzKGJpbmRGbGFncyksCisgICAgICBtTG9kT2Zmc2V0KDApLAorICAg
ICAgbU1pcExldmVscygwKSwKKyAgICAgIG1UZXh0dXJlKE5VTEwpLAorICAgICAgbVRleHR1cmVG
b3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBtU2hhZGVyUmVzb3VyY2VGb3JtYXQo
RFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBtUmVuZGVyVGFyZ2V0Rm9ybWF0KERYR0lfRk9S
TUFUX1VOS05PV04pLAorICAgICAgbURlcHRoU3RlbmNpbEZvcm1hdChEWEdJX0ZPUk1BVF9VTktO
T1dOKSwKKyAgICAgIG1TUlYoTlVMTCksCisgICAgICBtVGV4dHVyZVdpZHRoKDApLAorICAgICAg
bVRleHR1cmVIZWlnaHQoMCkKK3sKKyAgICBtUmVuZGVyZXIgPSBSZW5kZXJlcjExOjptYWtlUmVu
ZGVyZXIxMShyZW5kZXJlcik7Cit9CisKK1RleHR1cmVTdG9yYWdlMTE6On5UZXh0dXJlU3RvcmFn
ZTExKCkKK3sKK30KKworVGV4dHVyZVN0b3JhZ2UxMSAqVGV4dHVyZVN0b3JhZ2UxMTo6bWFrZVRl
eHR1cmVTdG9yYWdlMTEoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UpCit7CisgICAgQVNTRVJUKEhB
U19EWU5BTUlDX1RZUEUoVGV4dHVyZVN0b3JhZ2UxMSosIHN0b3JhZ2UpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dHVyZVN0b3JhZ2UxMSo+KHN0b3JhZ2UpOworfQorCitEV09SRCBUZXh0
dXJlU3RvcmFnZTExOjpHZXRUZXh0dXJlQmluZEZsYWdzKERYR0lfRk9STUFUIGZvcm1hdCwgR0xl
bnVtIGdsdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlKQoreworICAgIFVJTlQgYmluZEZsYWdz
ID0gRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0U7CisgICAgCisgICAgaWYgKGQzZDExOjpJc0Rl
cHRoU3RlbmNpbEZvcm1hdChmb3JtYXQpKQorICAgIHsKKyAgICAgICAgYmluZEZsYWdzIHw9IEQz
RDExX0JJTkRfREVQVEhfU1RFTkNJTDsKKyAgICB9CisgICAgZWxzZSBpZihmb3JjZVJlbmRlcmFi
bGUgfHwgKFRleHR1cmVTdG9yYWdlMTE6OklzVGV4dHVyZUZvcm1hdFJlbmRlcmFibGUoZm9ybWF0
KSAmJiAoZ2x1c2FnZSA9PSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFKSkpCisgICAg
eworICAgICAgICBiaW5kRmxhZ3MgfD0gRDNEMTFfQklORF9SRU5ERVJfVEFSR0VUOworICAgIH0K
KyAgICByZXR1cm4gYmluZEZsYWdzOworfQorCitib29sIFRleHR1cmVTdG9yYWdlMTE6OklzVGV4
dHVyZUZvcm1hdFJlbmRlcmFibGUoRFhHSV9GT1JNQVQgZm9ybWF0KQoreworICAgIHN3aXRjaChm
b3JtYXQpCisgICAgeworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQThfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX1Iz
MkczMkIzMkEzMl9GTE9BVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FU
OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6CisgICAgICBjYXNl
IERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9V
Tk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VTk9STToKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjE2X0ZMT0FUOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQ6
CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk06
CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9STTogCisgICAgICBjYXNlIERYR0lfRk9S
TUFUX0JDM19VTk9STToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwor
VUlOVCBUZXh0dXJlU3RvcmFnZTExOjpnZXRCaW5kRmxhZ3MoKSBjb25zdAoreworICAgIHJldHVy
biBtQmluZEZsYWdzOworfQorCitJRDNEMTFUZXh0dXJlMkQgKlRleHR1cmVTdG9yYWdlMTE6Omdl
dEJhc2VUZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmU7Cit9CisKK2ludCBU
ZXh0dXJlU3RvcmFnZTExOjpnZXRMb2RPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBtTG9k
T2Zmc2V0OworfQorCitib29sIFRleHR1cmVTdG9yYWdlMTE6OmlzUmVuZGVyVGFyZ2V0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gKG1CaW5kRmxhZ3MgJiAoRDNEMTFfQklORF9SRU5ERVJfVEFSR0VU
IHwgRDNEMTFfQklORF9ERVBUSF9TVEVOQ0lMKSkgIT0gMDsKK30KKyAgICAKK2Jvb2wgVGV4dHVy
ZVN0b3JhZ2UxMTo6aXNNYW5hZ2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2ludCBUZXh0dXJlU3RvcmFnZTExOjpsZXZlbENvdW50KCkKK3sKKyAgICBpbnQgbGV2ZWxzID0g
MDsKKyAgICBpZiAoZ2V0QmFzZVRleHR1cmUoKSkKKyAgICB7CisgICAgICAgIGxldmVscyA9IG1N
aXBMZXZlbHMgLSBnZXRMb2RPZmZzZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIGxldmVsczsKK30K
KworVUlOVCBUZXh0dXJlU3RvcmFnZTExOjpnZXRTdWJyZXNvdXJjZUluZGV4KGludCBsZXZlbCwg
aW50IGZhY2VJbmRleCkKK3sKKyAgICBVSU5UIGluZGV4ID0gMDsKKyAgICBpZiAoZ2V0QmFzZVRl
eHR1cmUoKSkKKyAgICB7CisgICAgICAgIGluZGV4ID0gRDNEMTFDYWxjU3VicmVzb3VyY2UobGV2
ZWwsIGZhY2VJbmRleCwgbU1pcExldmVscyk7CisgICAgfQorICAgIHJldHVybiBpbmRleDsKK30K
KworYm9vbCBUZXh0dXJlU3RvcmFnZTExOjp1cGRhdGVTdWJyZXNvdXJjZUxldmVsKElEM0QxMVRl
eHR1cmUyRCAqc3JjVGV4dHVyZSwgdW5zaWduZWQgaW50IHNvdXJjZVN1YnJlc291cmNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbCwgaW50
IGZhY2UsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
Cit7CisgICAgaWYgKHNyY1RleHR1cmUpCisgICAgeworICAgICAgICAvLyBSb3VuZCB1cCB0aGUg
d2lkdGggYW5kIGhlaWdodCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiBkaW1lbnNpb24gYWxp
Z25tZW50CisgICAgICAgIHVuc2lnbmVkIGludCBkaW1lbnNpb25BbGlnbm1lbnQgPSBkM2QxMTo6
R2V0VGV4dHVyZUZvcm1hdERpbWVuc2lvbkFsaWdubWVudChtVGV4dHVyZUZvcm1hdCk7CisgICAg
ICAgIHdpZHRoID0gd2lkdGggKyBkaW1lbnNpb25BbGlnbm1lbnQgLSAxIC0gKHdpZHRoIC0gMSkg
JSBkaW1lbnNpb25BbGlnbm1lbnQ7CisgICAgICAgIGhlaWdodCA9IGhlaWdodCArIGRpbWVuc2lv
bkFsaWdubWVudCAtIDEgLSAoaGVpZ2h0IC0gMSkgJSBkaW1lbnNpb25BbGlnbm1lbnQ7CisKKyAg
ICAgICAgRDNEMTFfQk9YIHNyY0JveDsKKyAgICAgICAgc3JjQm94LmxlZnQgPSB4b2Zmc2V0Owor
ICAgICAgICBzcmNCb3gudG9wID0geW9mZnNldDsKKyAgICAgICAgc3JjQm94LnJpZ2h0ID0geG9m
ZnNldCArIHdpZHRoOworICAgICAgICBzcmNCb3guYm90dG9tID0geW9mZnNldCArIGhlaWdodDsK
KyAgICAgICAgc3JjQm94LmZyb250ID0gMDsKKyAgICAgICAgc3JjQm94LmJhY2sgPSAxOworCisg
ICAgICAgIElEM0QxMURldmljZUNvbnRleHQgKmNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmlj
ZUNvbnRleHQoKTsKKyAgICAgICAgCisgICAgICAgIEFTU0VSVChnZXRCYXNlVGV4dHVyZSgpKTsK
KyAgICAgICAgY29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKGdldEJhc2VUZXh0dXJlKCks
IGdldFN1YnJlc291cmNlSW5kZXgobGV2ZWwgKyBtTG9kT2Zmc2V0LCBmYWNlKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvZmZzZXQsIHlvZmZzZXQsIDAsIHNyY1Rl
eHR1cmUsIHNvdXJjZVN1YnJlc291cmNlLCAmc3JjQm94KTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFRleHR1cmVTdG9yYWdlMTE6
OmdlbmVyYXRlTWlwbWFwTGF5ZXIoUmVuZGVyVGFyZ2V0MTEgKnNvdXJjZSwgUmVuZGVyVGFyZ2V0
MTEgKmRlc3QpCit7CisgICAgaWYgKHNvdXJjZSAmJiBkZXN0KQorICAgIHsKKyAgICAgICAgSUQz
RDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2VTUlYgPSBzb3VyY2UtPmdldFNoYWRlclJlc291
cmNlVmlldygpOworICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0UlRWID0gZGVz
dC0+Z2V0UmVuZGVyVGFyZ2V0VmlldygpOworCisgICAgICAgIGlmIChzb3VyY2VTUlYgJiYgZGVz
dFJUVikKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlJlY3RhbmdsZSBzb3VyY2VBcmVhOwor
ICAgICAgICAgICAgc291cmNlQXJlYS54ID0gMDsKKyAgICAgICAgICAgIHNvdXJjZUFyZWEueSA9
IDA7CisgICAgICAgICAgICBzb3VyY2VBcmVhLndpZHRoID0gc291cmNlLT5nZXRXaWR0aCgpOwor
ICAgICAgICAgICAgc291cmNlQXJlYS5oZWlnaHQgPSBzb3VyY2UtPmdldEhlaWdodCgpOworCisg
ICAgICAgICAgICBnbDo6UmVjdGFuZ2xlIGRlc3RBcmVhOworICAgICAgICAgICAgZGVzdEFyZWEu
eCA9IDA7CisgICAgICAgICAgICBkZXN0QXJlYS55ID0gMDsKKyAgICAgICAgICAgIGRlc3RBcmVh
LndpZHRoID0gZGVzdC0+Z2V0V2lkdGgoKTsKKyAgICAgICAgICAgIGRlc3RBcmVhLmhlaWdodCA9
IGRlc3QtPmdldEhlaWdodCgpOworCisgICAgICAgICAgICBtUmVuZGVyZXItPmNvcHlUZXh0dXJl
KHNvdXJjZVNSViwgc291cmNlQXJlYSwgc291cmNlLT5nZXRXaWR0aCgpLCBzb3VyY2UtPmdldEhl
aWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UlRWLCBkZXN0
QXJlYSwgZGVzdC0+Z2V0V2lkdGgoKSwgZGVzdC0+Z2V0SGVpZ2h0KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHNvdXJjZVNSVikKKyAgICAgICAgeworICAgICAgICAgICAgc291cmNlU1JWLT5SZWxlYXNlKCk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlc3RSVFYpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlc3RSVFYtPlJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworVGV4dHVyZVN0b3Jh
Z2UxMV8yRDo6VGV4dHVyZVN0b3JhZ2UxMV8yRChSZW5kZXJlciAqcmVuZGVyZXIsIFN3YXBDaGFp
bjExICpzd2FwY2hhaW4pCisgICAgOiBUZXh0dXJlU3RvcmFnZTExKHJlbmRlcmVyLCBEM0QxMV9C
SU5EX1JFTkRFUl9UQVJHRVQgfCBEM0QxMV9CSU5EX1NIQURFUl9SRVNPVVJDRSkKK3sKKyAgICBt
VGV4dHVyZSA9IHN3YXBjaGFpbi0+Z2V0T2Zmc2NyZWVuVGV4dHVyZSgpOworICAgIG1TUlYgPSBz
d2FwY2hhaW4tPmdldFJlbmRlclRhcmdldFNoYWRlclJlc291cmNlKCk7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZF
TFM7IGkrKykKKyAgICB7CisgICAgICAgIG1SZW5kZXJUYXJnZXRbaV0gPSBOVUxMOworICAgIH0K
KworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleERlc2M7CisgICAgbVRleHR1cmUtPkdldERl
c2MoJnRleERlc2MpOworICAgIG1NaXBMZXZlbHMgPSB0ZXhEZXNjLk1pcExldmVsczsKKyAgICBt
VGV4dHVyZUZvcm1hdCA9IHRleERlc2MuRm9ybWF0OworICAgIG1UZXh0dXJlV2lkdGggPSB0ZXhE
ZXNjLldpZHRoOworICAgIG1UZXh0dXJlSGVpZ2h0ID0gdGV4RGVzYy5IZWlnaHQ7CisKKyAgICBE
M0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHNydkRlc2M7CisgICAgbVNSVi0+R2V0RGVz
Yygmc3J2RGVzYyk7CisgICAgbVNoYWRlclJlc291cmNlRm9ybWF0ID0gc3J2RGVzYy5Gb3JtYXQ7
CisKKyAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3KiBvZmZzY3JlZW5SVFYgPSBzd2FwY2hhaW4t
PmdldFJlbmRlclRhcmdldCgpOworICAgIEQzRDExX1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0
dkRlc2M7CisgICAgb2Zmc2NyZWVuUlRWLT5HZXREZXNjKCZydHZEZXNjKTsKKyAgICBtUmVuZGVy
VGFyZ2V0Rm9ybWF0ID0gcnR2RGVzYy5Gb3JtYXQ7CisgICAgb2Zmc2NyZWVuUlRWLT5SZWxlYXNl
KCk7CisKKyAgICBtRGVwdGhTdGVuY2lsRm9ybWF0ID0gRFhHSV9GT1JNQVRfVU5LTk9XTjsKK30K
KworVGV4dHVyZVN0b3JhZ2UxMV8yRDo6VGV4dHVyZVN0b3JhZ2UxMV8yRChSZW5kZXJlciAqcmVu
ZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBi
b29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCisgICAg
OiBUZXh0dXJlU3RvcmFnZTExKHJlbmRlcmVyLCBHZXRUZXh0dXJlQmluZEZsYWdzKGdsX2QzZDEx
OjpDb252ZXJ0VGV4dHVyZUZvcm1hdChpbnRlcm5hbGZvcm1hdCksIHVzYWdlLCBmb3JjZVJlbmRl
cmFibGUpKQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2w6OklNUExFTUVO
VEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQorICAgIHsKKyAgICAgICAgbVJlbmRlclRh
cmdldFtpXSA9IE5VTEw7CisgICAgfQorCisgICAgRFhHSV9GT1JNQVQgY29udmVydGVkRm9ybWF0
ID0gZ2xfZDNkMTE6OkNvbnZlcnRUZXh0dXJlRm9ybWF0KGludGVybmFsZm9ybWF0KTsKKyAgICBp
ZiAoZDNkMTE6OklzRGVwdGhTdGVuY2lsRm9ybWF0KGNvbnZlcnRlZEZvcm1hdCkpCisgICAgewor
ICAgICAgICBtVGV4dHVyZUZvcm1hdCA9IGQzZDExOjpHZXREZXB0aFRleHR1cmVGb3JtYXQoY29u
dmVydGVkRm9ybWF0KTsKKyAgICAgICAgbVNoYWRlclJlc291cmNlRm9ybWF0ID0gZDNkMTE6Okdl
dERlcHRoU2hhZGVyUmVzb3VyY2VGb3JtYXQoY29udmVydGVkRm9ybWF0KTsKKyAgICAgICAgbURl
cHRoU3RlbmNpbEZvcm1hdCA9IGNvbnZlcnRlZEZvcm1hdDsKKyAgICAgICAgbVJlbmRlclRhcmdl
dEZvcm1hdCA9IERYR0lfRk9STUFUX1VOS05PV047CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIG1UZXh0dXJlRm9ybWF0ID0gY29udmVydGVkRm9ybWF0OworICAgICAgICBtU2hhZGVy
UmVzb3VyY2VGb3JtYXQgPSBjb252ZXJ0ZWRGb3JtYXQ7CisgICAgICAgIG1EZXB0aFN0ZW5jaWxG
b3JtYXQgPSBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAgICAgICBtUmVuZGVyVGFyZ2V0Rm9ybWF0
ID0gY29udmVydGVkRm9ybWF0OworICAgIH0KKworICAgIC8vIGlmIHRoZSB3aWR0aCBvciBoZWln
aHQgaXMgbm90IHBvc2l0aXZlIHRoaXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gaW5jb21wbGV0
ZSB0ZXh0dXJlCisgICAgLy8gd2UgaGFuZGxlIHRoYXQgaGVyZSBieSBza2lwcGluZyB0aGUgZDNk
IHRleHR1cmUgY3JlYXRpb24KKyAgICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApCisgICAg
eworICAgICAgICAvLyBhZGp1c3Qgc2l6ZSBpZiBuZWVkZWQgZm9yIGNvbXByZXNzZWQgdGV4dHVy
ZXMKKyAgICAgICAgZ2w6Ok1ha2VWYWxpZFNpemUoZmFsc2UsIGdsOjpJc0NvbXByZXNzZWQoaW50
ZXJuYWxmb3JtYXQpLCAmd2lkdGgsICZoZWlnaHQsICZtTG9kT2Zmc2V0KTsKKworICAgICAgICBJ
RDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICAgICAg
RDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVzYzsKKyAgICAgICAgZGVzYy5XaWR0aCA9IHdpZHRoOyAg
ICAgIC8vIENvbXByZXNzZWQgdGV4dHVyZSBzaXplIGNvbnN0cmFpbnRzPworICAgICAgICBkZXNj
LkhlaWdodCA9IGhlaWdodDsKKyAgICAgICAgZGVzYy5NaXBMZXZlbHMgPSAobGV2ZWxzID4gMCkg
PyBsZXZlbHMgKyBtTG9kT2Zmc2V0IDogMDsKKyAgICAgICAgZGVzYy5BcnJheVNpemUgPSAxOwor
ICAgICAgICBkZXNjLkZvcm1hdCA9IG1UZXh0dXJlRm9ybWF0OworICAgICAgICBkZXNjLlNhbXBs
ZURlc2MuQ291bnQgPSAxOworICAgICAgICBkZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7Cisg
ICAgICAgIGRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOworICAgICAgICBkZXNjLkJp
bmRGbGFncyA9IGdldEJpbmRGbGFncygpOworICAgICAgICBkZXNjLkNQVUFjY2Vzc0ZsYWdzID0g
MDsKKyAgICAgICAgZGVzYy5NaXNjRmxhZ3MgPSAwOworCisgICAgICAgIEhSRVNVTFQgcmVzdWx0
ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlc2MsIE5VTEwsICZtVGV4dHVyZSk7CisKKyAg
ICAgICAgLy8gdGhpcyBjYW4gaGFwcGVuIGZyb20gd2luZG93cyBURFIKKyAgICAgICAgaWYgKGQz
ZDExOjppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBt
UmVuZGVyZXItPm5vdGlmeURldmljZUxvc3QoKTsKKyAgICAgICAgICAgIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChGQUlMRUQocmVzdWx0
KSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZ
KTsKKyAgICAgICAgICAgIEVSUigiQ3JlYXRpbmcgaW1hZ2UgZmFpbGVkLiIpOworICAgICAgICAg
ICAgZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICB9CisgICAgICAgIGVsc2UK
KyAgICAgICAgeworICAgICAgICAgICAgbVRleHR1cmUtPkdldERlc2MoJmRlc2MpOworICAgICAg
ICAgICAgbU1pcExldmVscyA9IGRlc2MuTWlwTGV2ZWxzOworICAgICAgICAgICAgbVRleHR1cmVX
aWR0aCA9IGRlc2MuV2lkdGg7CisgICAgICAgICAgICBtVGV4dHVyZUhlaWdodCA9IGRlc2MuSGVp
Z2h0OworICAgICAgICB9CisgICAgfQorfQorCitUZXh0dXJlU3RvcmFnZTExXzJEOjp+VGV4dHVy
ZVN0b3JhZ2UxMV8yRCgpCit7CisgICAgaWYgKG1UZXh0dXJlKQorICAgIHsKKyAgICAgICAgbVRl
eHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbVRleHR1cmUgPSBOVUxMOworICAgIH0KKworICAg
IGlmIChtU1JWKQorICAgIHsKKyAgICAgICAgbVNSVi0+UmVsZWFzZSgpOworICAgICAgICBtU1JW
ID0gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpJ
TVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7IGkrKykKKyAgICB7CisgICAgICAgIGRl
bGV0ZSBtUmVuZGVyVGFyZ2V0W2ldOworICAgICAgICBtUmVuZGVyVGFyZ2V0W2ldID0gTlVMTDsK
KyAgICB9Cit9CisKK1RleHR1cmVTdG9yYWdlMTFfMkQgKlRleHR1cmVTdG9yYWdlMTFfMkQ6Om1h
a2VUZXh0dXJlU3RvcmFnZTExXzJEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlKQoreworICAgIEFT
U0VSVChIQVNfRFlOQU1JQ19UWVBFKFRleHR1cmVTdG9yYWdlMTFfMkQqLCBzdG9yYWdlKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHR1cmVTdG9yYWdlMTFfMkQqPihzdG9yYWdlKTsKK30K
KworUmVuZGVyVGFyZ2V0ICpUZXh0dXJlU3RvcmFnZTExXzJEOjpnZXRSZW5kZXJUYXJnZXQoaW50
IGxldmVsKQoreworICAgIGlmIChsZXZlbCA+PSAwICYmIGxldmVsIDwgc3RhdGljX2Nhc3Q8aW50
PihtTWlwTGV2ZWxzKSkKKyAgICB7CisgICAgICAgIGlmICghbVJlbmRlclRhcmdldFtsZXZlbF0p
CisgICAgICAgIHsKKyAgICAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVy
LT5nZXREZXZpY2UoKTsKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0OworCisgICAgICAgICAg
ICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHNydkRlc2M7CisgICAgICAgICAgICBz
cnZEZXNjLkZvcm1hdCA9IG1TaGFkZXJSZXNvdXJjZUZvcm1hdDsKKyAgICAgICAgICAgIHNydkRl
c2MuVmlld0RpbWVuc2lvbiA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJEOworICAgICAg
ICAgICAgc3J2RGVzYy5UZXh0dXJlMkQuTW9zdERldGFpbGVkTWlwID0gbGV2ZWw7CisgICAgICAg
ICAgICBzcnZEZXNjLlRleHR1cmUyRC5NaXBMZXZlbHMgPSAxOworCisgICAgICAgICAgICBJRDNE
MTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydjsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRldmljZS0+
Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KG1UZXh0dXJlLCAmc3J2RGVzYywgJnNydik7CisKKyAg
ICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIHN0YXRpY19j
YXN0PFJlbmRlclRhcmdldCo+KE5VTEwpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFT
U0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgICAgIGlmIChtUmVuZGVyVGFyZ2V0
Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKKyAgICAgICAgICAg
ICAgICBydHZEZXNjLkZvcm1hdCA9IG1SZW5kZXJUYXJnZXRGb3JtYXQ7CisgICAgICAgICAgICAg
ICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkQ7
CisgICAgICAgICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkQuTWlwU2xpY2UgPSBsZXZlbDsKKwor
ICAgICAgICAgICAgICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnJ0djsKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcobVRleHR1cmUsICZy
dHZEZXNjLCAmcnR2KTsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1F
TU9SWSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNydi0+UmVsZWFz
ZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlksIHN0YXRpY19jYXN0PFJlbmRlclRhcmdldCo+KE5VTEwpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgICAgICAg
ICAgICAgIC8vIFJlbmRlclRhcmdldDExIGV4cGVjdHMgdG8gYmUgdGhlIG93bmVyIG9mIHRoZSBy
ZXNvdXJjZXMgaXQgaXMgZ2l2ZW4gYnV0IFRleHR1cmVTdG9yYWdlMTEKKyAgICAgICAgICAgICAg
ICAvLyBhbHNvIG5lZWRzIHRvIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUuCisgICAg
ICAgICAgICAgICAgbVRleHR1cmUtPkFkZFJlZigpOworCisgICAgICAgICAgICAgICAgbVJlbmRl
clRhcmdldFtsZXZlbF0gPSBuZXcgUmVuZGVyVGFyZ2V0MTEobVJlbmRlcmVyLCBydHYsIG1UZXh0
dXJlLCBzcnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptYXgobVRleHR1cmVXaWR0aCA+PiBsZXZlbCwgMVUpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bWF4KG1UZXh0dXJlSGVpZ2h0ID4+IGxldmVsLCAxVSkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSBpZiAobURlcHRoU3RlbmNpbEZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dO
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEQzRDExX0RFUFRIX1NURU5DSUxfVklF
V19ERVNDIGRzdkRlc2M7CisgICAgICAgICAgICAgICAgZHN2RGVzYy5Gb3JtYXQgPSBtRGVwdGhT
dGVuY2lsRm9ybWF0OworICAgICAgICAgICAgICAgIGRzdkRlc2MuVmlld0RpbWVuc2lvbiA9IEQz
RDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJEOworICAgICAgICAgICAgICAgIGRzdkRlc2MuVGV4
dHVyZTJELk1pcFNsaWNlID0gbGV2ZWw7CisgICAgICAgICAgICAgICAgZHN2RGVzYy5GbGFncyA9
IDA7CisKKyAgICAgICAgICAgICAgICBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkc3Y7CisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVEZXB0aFN0ZW5jaWxWaWV3KG1UZXh0
dXJlLCAmZHN2RGVzYywgJmRzdik7CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEVf
T1VUT0ZNRU1PUlkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzcnYt
PlJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLCBzdGF0aWNfY2FzdDxSZW5kZXJUYXJnZXQqPihOVUxMKSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAg
ICAgICAgICAgICAgICAvLyBSZW5kZXJUYXJnZXQxMSBleHBlY3RzIHRvIGJlIHRoZSBvd25lciBv
ZiB0aGUgcmVzb3VyY2VzIGl0IGlzIGdpdmVuIGJ1dCBUZXh0dXJlU3RvcmFnZTExCisgICAgICAg
ICAgICAgICAgLy8gYWxzbyBuZWVkcyB0byBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJl
LgorICAgICAgICAgICAgICAgIG1UZXh0dXJlLT5BZGRSZWYoKTsKKworICAgICAgICAgICAgICAg
IG1SZW5kZXJUYXJnZXRbbGV2ZWxdID0gbmV3IFJlbmRlclRhcmdldDExKG1SZW5kZXJlciwgZHN2
LCBtVGV4dHVyZSwgc3J2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KG1UZXh0dXJlV2lkdGggPj4gbGV2ZWwsIDFVKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1heChtVGV4dHVyZUhlaWdodCA+PiBsZXZlbCwgMVUpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1SZW5k
ZXJUYXJnZXRbbGV2ZWxdOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICB9Cit9CisKK0lEM0QxMVNoYWRlclJlc291cmNlVmlldyAqVGV4dHVyZVN0b3Jh
Z2UxMV8yRDo6Z2V0U1JWKCkKK3sKKyAgICBpZiAoIW1TUlYpCisgICAgeworICAgICAgICBJRDNE
MTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICAgICAgRDNE
MTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZEZXNjOworICAgICAgICBzcnZEZXNjLkZv
cm1hdCA9IG1TaGFkZXJSZXNvdXJjZUZvcm1hdDsKKyAgICAgICAgc3J2RGVzYy5WaWV3RGltZW5z
aW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkQ7CisgICAgICAgIHNydkRlc2MuVGV4
dHVyZTJELk1pcExldmVscyA9IChtTWlwTGV2ZWxzID09IDAgPyAtMSA6IG1NaXBMZXZlbHMpOwor
ICAgICAgICBzcnZEZXNjLlRleHR1cmUyRC5Nb3N0RGV0YWlsZWRNaXAgPSAwOworCisgICAgICAg
IEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVTaGFkZXJSZXNvdXJjZVZpZXcobVRleHR1
cmUsICZzcnZEZXNjLCAmbVNSVik7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBFX09VVE9GTUVN
T1JZKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlksIHN0YXRpY19jYXN0PElEM0QxMVNoYWRlclJlc291cmNlVmlldyo+KE5VTEwpKTsKKyAg
ICAgICAgfQorICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIH0KKworICAg
IHJldHVybiBtU1JWOworfQorCit2b2lkIFRleHR1cmVTdG9yYWdlMTFfMkQ6OmdlbmVyYXRlTWlw
bWFwKGludCBsZXZlbCkKK3sKKyAgICBSZW5kZXJUYXJnZXQxMSAqc291cmNlID0gUmVuZGVyVGFy
Z2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShnZXRSZW5kZXJUYXJnZXQobGV2ZWwgLSAxKSk7Cisg
ICAgUmVuZGVyVGFyZ2V0MTEgKmRlc3QgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdl
dDExKGdldFJlbmRlclRhcmdldChsZXZlbCkpOworCisgICAgZ2VuZXJhdGVNaXBtYXBMYXllcihz
b3VyY2UsIGRlc3QpOworfQorCitUZXh0dXJlU3RvcmFnZTExX0N1YmU6OlRleHR1cmVTdG9yYWdl
MTFfQ3ViZShSZW5kZXJlciAqcmVuZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgaW50IHNpemUpCisgICAg
OiBUZXh0dXJlU3RvcmFnZTExKHJlbmRlcmVyLCBHZXRUZXh0dXJlQmluZEZsYWdzKGdsX2QzZDEx
OjpDb252ZXJ0VGV4dHVyZUZvcm1hdChpbnRlcm5hbGZvcm1hdCksIHVzYWdlLCBmb3JjZVJlbmRl
cmFibGUpKQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgNjsgaSsrKQorICAg
IHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCBnbDo6SU1QTEVNRU5UQVRJ
T05fTUFYX1RFWFRVUkVfTEVWRUxTOyBqKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG1SZW5k
ZXJUYXJnZXRbaV1bal0gPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgRFhHSV9GT1JN
QVQgY29udmVydGVkRm9ybWF0ID0gZ2xfZDNkMTE6OkNvbnZlcnRUZXh0dXJlRm9ybWF0KGludGVy
bmFsZm9ybWF0KTsKKyAgICBpZiAoZDNkMTE6OklzRGVwdGhTdGVuY2lsRm9ybWF0KGNvbnZlcnRl
ZEZvcm1hdCkpCisgICAgeworICAgICAgICBtVGV4dHVyZUZvcm1hdCA9IGQzZDExOjpHZXREZXB0
aFRleHR1cmVGb3JtYXQoY29udmVydGVkRm9ybWF0KTsKKyAgICAgICAgbVNoYWRlclJlc291cmNl
Rm9ybWF0ID0gZDNkMTE6OkdldERlcHRoU2hhZGVyUmVzb3VyY2VGb3JtYXQoY29udmVydGVkRm9y
bWF0KTsKKyAgICAgICAgbURlcHRoU3RlbmNpbEZvcm1hdCA9IGNvbnZlcnRlZEZvcm1hdDsKKyAg
ICAgICAgbVJlbmRlclRhcmdldEZvcm1hdCA9IERYR0lfRk9STUFUX1VOS05PV047CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1UZXh0dXJlRm9ybWF0ID0gY29udmVydGVkRm9ybWF0
OworICAgICAgICBtU2hhZGVyUmVzb3VyY2VGb3JtYXQgPSBjb252ZXJ0ZWRGb3JtYXQ7CisgICAg
ICAgIG1EZXB0aFN0ZW5jaWxGb3JtYXQgPSBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAgICAgICBt
UmVuZGVyVGFyZ2V0Rm9ybWF0ID0gY29udmVydGVkRm9ybWF0OworICAgIH0KKworICAgIC8vIGlm
IHRoZSBzaXplIGlzIG5vdCBwb3NpdGl2ZSB0aGlzIHNob3VsZCBiZSB0cmVhdGVkIGFzIGFuIGlu
Y29tcGxldGUgdGV4dHVyZQorICAgIC8vIHdlIGhhbmRsZSB0aGF0IGhlcmUgYnkgc2tpcHBpbmcg
dGhlIGQzZCB0ZXh0dXJlIGNyZWF0aW9uCisgICAgaWYgKHNpemUgPiAwKQorICAgIHsKKyAgICAg
ICAgLy8gYWRqdXN0IHNpemUgaWYgbmVlZGVkIGZvciBjb21wcmVzc2VkIHRleHR1cmVzCisgICAg
ICAgIGludCBoZWlnaHQgPSBzaXplOworICAgICAgICBnbDo6TWFrZVZhbGlkU2l6ZShmYWxzZSwg
Z2w6OklzQ29tcHJlc3NlZChpbnRlcm5hbGZvcm1hdCksICZzaXplLCAmaGVpZ2h0LCAmbUxvZE9m
ZnNldCk7CisKKyAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERl
dmljZSgpOworCisgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIGRlc2M7CisgICAgICAgIGRl
c2MuV2lkdGggPSBzaXplOworICAgICAgICBkZXNjLkhlaWdodCA9IHNpemU7CisgICAgICAgIGRl
c2MuTWlwTGV2ZWxzID0gKGxldmVscyA+IDApID8gbGV2ZWxzICsgbUxvZE9mZnNldCA6IDA7Cisg
ICAgICAgIGRlc2MuQXJyYXlTaXplID0gNjsKKyAgICAgICAgZGVzYy5Gb3JtYXQgPSBtVGV4dHVy
ZUZvcm1hdDsKKyAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKKyAgICAgICAgZGVz
Yy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAgICBkZXNjLlVzYWdlID0gRDNEMTFfVVNB
R0VfREVGQVVMVDsKKyAgICAgICAgZGVzYy5CaW5kRmxhZ3MgPSBnZXRCaW5kRmxhZ3MoKTsKKyAg
ICAgICAgZGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7CisgICAgICAgIGRlc2MuTWlzY0ZsYWdzID0g
RDNEMTFfUkVTT1VSQ0VfTUlTQ19URVhUVVJFQ1VCRTsKKworICAgICAgICBIUkVTVUxUIHJlc3Vs
dCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZkZXNjLCBOVUxMLCAmbVRleHR1cmUpOworCisg
ICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgICAgIEVSUigiQ3JlYXRpbmcgaW1h
Z2UgZmFpbGVkLiIpOworICAgICAgICAgICAgZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbVRleHR1cmUt
PkdldERlc2MoJmRlc2MpOworICAgICAgICAgICAgbU1pcExldmVscyA9IGRlc2MuTWlwTGV2ZWxz
OworICAgICAgICAgICAgbVRleHR1cmVXaWR0aCA9IGRlc2MuV2lkdGg7CisgICAgICAgICAgICBt
VGV4dHVyZUhlaWdodCA9IGRlc2MuSGVpZ2h0OworICAgICAgICB9CisgICAgfQorfQorCitUZXh0
dXJlU3RvcmFnZTExX0N1YmU6On5UZXh0dXJlU3RvcmFnZTExX0N1YmUoKQoreworICAgIGlmICht
VGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1UZXh0dXJlLT5SZWxlYXNlKCk7CisgICAgICAgIG1U
ZXh0dXJlID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobVNSVikKKyAgICB7CisgICAgICAgIG1T
UlYtPlJlbGVhc2UoKTsKKyAgICAgICAgbVNSViA9IE5VTEw7CisgICAgfQorCisgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCA2OyBpKyspCisgICAgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBqID0gMDsgaiA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7
IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgZGVsZXRlIG1SZW5kZXJUYXJnZXRbaV1bal07
CisgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0W2ldW2pdID0gTlVMTDsKKyAgICAgICAgfQorICAg
IH0KK30KKworVGV4dHVyZVN0b3JhZ2UxMV9DdWJlICpUZXh0dXJlU3RvcmFnZTExX0N1YmU6Om1h
a2VUZXh0dXJlU3RvcmFnZTExX0N1YmUoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UpCit7CisgICAg
QVNTRVJUKEhBU19EWU5BTUlDX1RZUEUoVGV4dHVyZVN0b3JhZ2UxMV9DdWJlKiwgc3RvcmFnZSkp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0dXJlU3RvcmFnZTExX0N1YmUqPihzdG9yYWdl
KTsKK30KKworUmVuZGVyVGFyZ2V0ICpUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmdldFJlbmRlclRh
cmdldChHTGVudW0gZmFjZVRhcmdldCwgaW50IGxldmVsKQoreworICAgIHVuc2lnbmVkIGludCBm
YWNlSWR4ID0gZ2w6OlRleHR1cmVDdWJlTWFwOjpmYWNlSW5kZXgoZmFjZVRhcmdldCk7CisgICAg
aWYgKGxldmVsID49IDAgJiYgbGV2ZWwgPCBzdGF0aWNfY2FzdDxpbnQ+KG1NaXBMZXZlbHMpKQor
ICAgIHsKKyAgICAgICAgaWYgKCFtUmVuZGVyVGFyZ2V0W2ZhY2VJZHhdW2xldmVsXSkKKyAgICAg
ICAgeworICAgICAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERl
dmljZSgpOworICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQ7CisKKyAgICAgICAgICAgIEQzRDEx
X1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc3J2RGVzYzsKKyAgICAgICAgICAgIHNydkRlc2Mu
Rm9ybWF0ID0gbVNoYWRlclJlc291cmNlRm9ybWF0OworICAgICAgICAgICAgc3J2RGVzYy5WaWV3
RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFQ1VCRTsKKyAgICAgICAgICAg
IHNydkRlc2MuVGV4dHVyZTJEQXJyYXkuTW9zdERldGFpbGVkTWlwID0gbGV2ZWw7CisgICAgICAg
ICAgICBzcnZEZXNjLlRleHR1cmUyREFycmF5Lk1pcExldmVscyA9IDE7CisgICAgICAgICAgICBz
cnZEZXNjLlRleHR1cmUyREFycmF5LkZpcnN0QXJyYXlTbGljZSA9IGZhY2VJZHg7CisgICAgICAg
ICAgICBzcnZEZXNjLlRleHR1cmUyREFycmF5LkFycmF5U2l6ZSA9IDE7CisKKyAgICAgICAgICAg
IElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2OworICAgICAgICAgICAgcmVzdWx0ID0gZGV2
aWNlLT5DcmVhdGVTaGFkZXJSZXNvdXJjZVZpZXcobVRleHR1cmUsICZzcnZEZXNjLCAmc3J2KTsK
KworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgc3Rh
dGljX2Nhc3Q8UmVuZGVyVGFyZ2V0Kj4oTlVMTCkpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgICAgICAgICAgaWYgKG1SZW5kZXJU
YXJnZXRGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNjOworICAgICAg
ICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ID0gbVJlbmRlclRhcmdldEZvcm1hdDsKKyAgICAgICAg
ICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gPSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRV
UkUyREFSUkFZOworICAgICAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJEQXJyYXkuTWlwU2xp
Y2UgPSBsZXZlbDsKKyAgICAgICAgICAgICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5LkZpcnN0
QXJyYXlTbGljZSA9IGZhY2VJZHg7CisgICAgICAgICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkRB
cnJheS5BcnJheVNpemUgPSAxOworCisgICAgICAgICAgICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0
VmlldyAqcnR2OworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlUmVuZGVy
VGFyZ2V0VmlldyhtVGV4dHVyZSwgJnJ0dkRlc2MsICZydHYpOworCisgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3J2LT5SZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgc3RhdGljX2Nhc3Q8UmVuZGVyVGFyZ2V0Kj4oTlVM
TCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBBU1NFUlQoU1VDQ0VFREVE
KHJlc3VsdCkpOworCisgICAgICAgICAgICAgICAgLy8gUmVuZGVyVGFyZ2V0MTEgZXhwZWN0cyB0
byBiZSB0aGUgb3duZXIgb2YgdGhlIHJlc291cmNlcyBpdCBpcyBnaXZlbiBidXQgVGV4dHVyZVN0
b3JhZ2UxMQorICAgICAgICAgICAgICAgIC8vIGFsc28gbmVlZHMgdG8ga2VlcCBhIHJlZmVyZW5j
ZSB0byB0aGUgdGV4dHVyZS4KKyAgICAgICAgICAgICAgICBtVGV4dHVyZS0+QWRkUmVmKCk7CisK
KyAgICAgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0W2ZhY2VJZHhdW2xldmVsXSA9IG5ldyBSZW5k
ZXJUYXJnZXQxMShtUmVuZGVyZXIsIHJ0diwgbVRleHR1cmUsIHNydiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1heChtVGV4dHVyZVdpZHRoID4+IGxldmVsLCAxVSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXgobVRl
eHR1cmVIZWlnaHQgPj4gbGV2ZWwsIDFVKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIGlmIChtRGVwdGhTdGVuY2lsRm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9WSUVXX0RFU0Mg
ZHN2RGVzYzsKKyAgICAgICAgICAgICAgICBkc3ZEZXNjLkZvcm1hdCA9IG1SZW5kZXJUYXJnZXRG
b3JtYXQ7CisgICAgICAgICAgICAgICAgZHN2RGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfRFNW
X0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWTsKKyAgICAgICAgICAgICAgICBkc3ZEZXNjLlRleHR1
cmUyREFycmF5Lk1pcFNsaWNlID0gbGV2ZWw7CisgICAgICAgICAgICAgICAgZHN2RGVzYy5UZXh0
dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSBmYWNlSWR4OworICAgICAgICAgICAgICAgIGRz
dkRlc2MuVGV4dHVyZTJEQXJyYXkuQXJyYXlTaXplID0gMTsKKworICAgICAgICAgICAgICAgIElE
M0QxMURlcHRoU3RlbmNpbFZpZXcgKmRzdjsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBkZXZp
Y2UtPkNyZWF0ZURlcHRoU3RlbmNpbFZpZXcobVRleHR1cmUsICZkc3ZEZXNjLCAmZHN2KTsKKwor
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNydi0+UmVsZWFzZSgpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIHN0YXRpY19jYXN0PFJl
bmRlclRhcmdldCo+KE5VTEwpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
QVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgICAgICAgICAgICAgIC8vIFJlbmRlclRh
cmdldDExIGV4cGVjdHMgdG8gYmUgdGhlIG93bmVyIG9mIHRoZSByZXNvdXJjZXMgaXQgaXMgZ2l2
ZW4gYnV0IFRleHR1cmVTdG9yYWdlMTEKKyAgICAgICAgICAgICAgICAvLyBhbHNvIG5lZWRzIHRv
IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUuCisgICAgICAgICAgICAgICAgbVRleHR1
cmUtPkFkZFJlZigpOworCisgICAgICAgICAgICAgICAgbVJlbmRlclRhcmdldFtmYWNlSWR4XVts
ZXZlbF0gPSBuZXcgUmVuZGVyVGFyZ2V0MTEobVJlbmRlcmVyLCBkc3YsIG1UZXh0dXJlLCBzcnYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptYXgobVRleHR1cmVXaWR0aCA+PiBsZXZlbCwgMVUpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWF4KG1UZXh0dXJlSGVpZ2h0ID4+IGxldmVsLCAxVSkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbVJl
bmRlclRhcmdldFtmYWNlSWR4XVtsZXZlbF07CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpU
ZXh0dXJlU3RvcmFnZTExX0N1YmU6OmdldFNSVigpCit7CisgICAgaWYgKCFtU1JWKQorICAgIHsK
KyAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwor
CisgICAgICAgIEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc3J2RGVzYzsKKyAgICAg
ICAgc3J2RGVzYy5Gb3JtYXQgPSBtU2hhZGVyUmVzb3VyY2VGb3JtYXQ7CisgICAgICAgIHNydkRl
c2MuVmlld0RpbWVuc2lvbiA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRUNVQkU7CisgICAg
ICAgIHNydkRlc2MuVGV4dHVyZUN1YmUuTWlwTGV2ZWxzID0gKG1NaXBMZXZlbHMgPT0gMCA/IC0x
IDogbU1pcExldmVscyk7CisgICAgICAgIHNydkRlc2MuVGV4dHVyZUN1YmUuTW9zdERldGFpbGVk
TWlwID0gMDsKKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlU2hhZGVy
UmVzb3VyY2VWaWV3KG1UZXh0dXJlLCAmc3J2RGVzYywgJm1TUlYpOworCisgICAgICAgIGlmIChy
ZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBzdGF0aWNfY2FzdDxJRDNEMTFTaGFkZXJSZXNvdXJj
ZVZpZXcqPihOVUxMKSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1
bHQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbVNSVjsKK30KKwordm9pZCBUZXh0dXJlU3RvcmFn
ZTExX0N1YmU6OmdlbmVyYXRlTWlwbWFwKGludCBmYWNlLCBpbnQgbGV2ZWwpCit7CisgICAgUmVu
ZGVyVGFyZ2V0MTEgKnNvdXJjZSA9IFJlbmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEo
Z2V0UmVuZGVyVGFyZ2V0KEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGZhY2UsIGxl
dmVsIC0gMSkpOworICAgIFJlbmRlclRhcmdldDExICpkZXN0ID0gUmVuZGVyVGFyZ2V0MTE6Om1h
a2VSZW5kZXJUYXJnZXQxMShnZXRSZW5kZXJUYXJnZXQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJ
VElWRV9YICsgZmFjZSwgbGV2ZWwpKTsKKworICAgIGdlbmVyYXRlTWlwbWFwTGF5ZXIoc291cmNl
LCBkZXN0KTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1RleHR1cmVTdG9yYWdlMTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjAgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisvLyBUZXh0dXJlU3RvcmFnZTExLmg6IERlZmluZXMgdGhlIGFic3Ry
YWN0IHJ4OjpUZXh0dXJlU3RvcmFnZTExIGNsYXNzIGFuZCBpdHMgY29uY3JldGUgZGVyaXZlZAor
Ly8gY2xhc3NlcyBUZXh0dXJlU3RvcmFnZTExXzJEIGFuZCBUZXh0dXJlU3RvcmFnZTExX0N1YmUs
IHdoaWNoIGFjdCBhcyB0aGUgaW50ZXJmYWNlIHRvIHRoZSBEM0QxMSB0ZXh0dXJlLgorCisjaWZu
ZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9URVhUVVJFU1RPUkFHRTExX0hfCisjZGVmaW5lIExJQkdM
RVNWMl9SRU5ERVJFUl9URVhUVVJFU1RPUkFHRTExX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIv
VGV4dHVyZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5o
IgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlclRhcmdldDsKK2NsYXNzIFJlbmRlclRh
cmdldDExOworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBSZW5kZXJlcjExOworY2xhc3MgU3dhcENo
YWluMTE7CisKK2NsYXNzIFRleHR1cmVTdG9yYWdlMTEgOiBwdWJsaWMgVGV4dHVyZVN0b3JhZ2UK
K3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlMTEoUmVuZGVyZXIgKnJlbmRlcmVyLCBV
SU5UIGJpbmRGbGFncyk7CisgICAgdmlydHVhbCB+VGV4dHVyZVN0b3JhZ2UxMSgpOworCisgICAg
c3RhdGljIFRleHR1cmVTdG9yYWdlMTEgKm1ha2VUZXh0dXJlU3RvcmFnZTExKFRleHR1cmVTdG9y
YWdlICpzdG9yYWdlKTsKKworICAgIHN0YXRpYyBEV09SRCBHZXRUZXh0dXJlQmluZEZsYWdzKERY
R0lfRk9STUFUIGQzZGZtdCwgR0xlbnVtIGdsdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlKTsK
KyAgICBzdGF0aWMgYm9vbCBJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKERYR0lfRk9STUFUIGZv
cm1hdCk7CisKKyAgICBVSU5UIGdldEJpbmRGbGFncygpIGNvbnN0OworCisgICAgdmlydHVhbCBJ
RDNEMTFUZXh0dXJlMkQgKmdldEJhc2VUZXh0dXJlKCkgY29uc3Q7CisgICAgdmlydHVhbCBJRDNE
MTFTaGFkZXJSZXNvdXJjZVZpZXcgKmdldFNSVigpID0gMDsKKyAgICB2aXJ0dWFsIFJlbmRlclRh
cmdldCAqZ2V0UmVuZGVyVGFyZ2V0KCkgeyByZXR1cm4gZ2V0UmVuZGVyVGFyZ2V0KDApOyB9Cisg
ICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChpbnQgbGV2ZWwpIHsgcmV0
dXJuIE5VTEw7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KEdM
ZW51bSBmYWNlVGFyZ2V0KSB7IHJldHVybiBnZXRSZW5kZXJUYXJnZXQoZmFjZVRhcmdldCwgMCk7
IH0KKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KEdMZW51bSBmYWNl
VGFyZ2V0LCBpbnQgbGV2ZWwpIHsgcmV0dXJuIE5VTEw7IH0KKworICAgIHZpcnR1YWwgdm9pZCBn
ZW5lcmF0ZU1pcG1hcChpbnQgbGV2ZWwpIHt9OworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1p
cG1hcChpbnQgZmFjZSwgaW50IGxldmVsKSB7fTsKKworICAgIHZpcnR1YWwgaW50IGdldExvZE9m
ZnNldCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclRhcmdldCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBpc01hbmFnZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBsZXZl
bENvdW50KCk7CisgICAgVUlOVCBnZXRTdWJyZXNvdXJjZUluZGV4KGludCBsZXZlbCwgaW50IGZh
Y2VUYXJnZXQpOworCisgICAgYm9vbCB1cGRhdGVTdWJyZXNvdXJjZUxldmVsKElEM0QxMVRleHR1
cmUyRCAqdGV4dHVyZSwgdW5zaWduZWQgaW50IHNvdXJjZVN1YnJlc291cmNlLCBpbnQgbGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmYWNlVGFyZ2V0LCBHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisK
KyAgcHJvdGVjdGVkOgorICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXBMYXllcihSZW5kZXJUYXJnZXQx
MSAqc291cmNlLCBSZW5kZXJUYXJnZXQxMSAqZGVzdCk7CisKKyAgICBSZW5kZXJlcjExICptUmVu
ZGVyZXI7CisgICAgaW50IG1Mb2RPZmZzZXQ7CisgICAgdW5zaWduZWQgaW50IG1NaXBMZXZlbHM7
CisKKyAgICBJRDNEMTFUZXh0dXJlMkQgKm1UZXh0dXJlOworICAgIERYR0lfRk9STUFUIG1UZXh0
dXJlRm9ybWF0OworICAgIERYR0lfRk9STUFUIG1TaGFkZXJSZXNvdXJjZUZvcm1hdDsKKyAgICBE
WEdJX0ZPUk1BVCBtUmVuZGVyVGFyZ2V0Rm9ybWF0OworICAgIERYR0lfRk9STUFUIG1EZXB0aFN0
ZW5jaWxGb3JtYXQ7CisgICAgdW5zaWduZWQgaW50IG1UZXh0dXJlV2lkdGg7CisgICAgdW5zaWdu
ZWQgaW50IG1UZXh0dXJlSGVpZ2h0OworCisgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpt
U1JWOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmVT
dG9yYWdlMTEpOworCisgICAgY29uc3QgVUlOVCBtQmluZEZsYWdzOworfTsKKworY2xhc3MgVGV4
dHVyZVN0b3JhZ2UxMV8yRCA6IHB1YmxpYyBUZXh0dXJlU3RvcmFnZTExCit7CisgIHB1YmxpYzoK
KyAgICBUZXh0dXJlU3RvcmFnZTExXzJEKFJlbmRlcmVyICpyZW5kZXJlciwgU3dhcENoYWluMTEg
KnN3YXBjaGFpbik7CisgICAgVGV4dHVyZVN0b3JhZ2UxMV8yRChSZW5kZXJlciAqcmVuZGVyZXIs
IGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBib29sIGZv
cmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworICAgIHZpcnR1
YWwgflRleHR1cmVTdG9yYWdlMTFfMkQoKTsKKworICAgIHN0YXRpYyBUZXh0dXJlU3RvcmFnZTEx
XzJEICptYWtlVGV4dHVyZVN0b3JhZ2UxMV8yRChUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSk7CisK
KyAgICB2aXJ0dWFsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqZ2V0U1JWKCk7CisgICAgdmly
dHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChpbnQgbGV2ZWwpOworCisgICAgdmly
dHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwKGludCBsZXZlbCk7CisKKyAgcHJpdmF0ZToKKyAgICBE
SVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZVN0b3JhZ2UxMV8yRCk7CisKKyAgICBSZW5k
ZXJUYXJnZXQxMSAqbVJlbmRlclRhcmdldFtnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVf
TEVWRUxTXTsKK307CisKK2NsYXNzIFRleHR1cmVTdG9yYWdlMTFfQ3ViZSA6IHB1YmxpYyBUZXh0
dXJlU3RvcmFnZTExCit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZTExX0N1YmUoUmVu
ZGVyZXIgKnJlbmRlcmVyLCBpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51
bSB1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIGludCBzaXplKTsKKyAgICB2aXJ0dWFsIH5U
ZXh0dXJlU3RvcmFnZTExX0N1YmUoKTsKKworICAgIHN0YXRpYyBUZXh0dXJlU3RvcmFnZTExX0N1
YmUgKm1ha2VUZXh0dXJlU3RvcmFnZTExX0N1YmUoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UpOwor
CisgICAgdmlydHVhbCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmdldFNSVigpOworICAgIHZp
cnR1YWwgUmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoR0xlbnVtIGZhY2VUYXJnZXQsIGlu
dCBsZXZlbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVNaXBtYXAoaW50IGZhY2UsIGlu
dCBsZXZlbCk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4
dHVyZVN0b3JhZ2UxMV9DdWJlKTsKKworICAgIFJlbmRlclRhcmdldDExICptUmVuZGVyVGFyZ2V0
WzZdW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFNdOworfTsKKworfQorCisj
ZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1RFWFRVUkVTVE9SQUdFMTFfSF8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3Jh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIyIEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFRleHR1cmVTdG9yYWdlLmNwcDogSW1wbGVtZW50cyB0
aGUgYWJzdHJhY3Qgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlIGNsYXNzIGFuZCBpdHMgY29u
Y3JldGUgZGVyaXZlZAorLy8gY2xhc3NlcyBUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEIGFuZCBU
ZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUsIHdoaWNoIGFjdCBhcyB0aGUgaW50ZXJmYWNlIHRv
IHRoZQorLy8gR1BVLXNpZGUgdGV4dHVyZS4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9UZXh0dXJlU3RvcmFnZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJl
ci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvVGV4dHVyZS5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFj
ZSByeAorewordW5zaWduZWQgaW50IFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlOjptQ3VycmVudFRl
eHR1cmVTZXJpYWwgPSAxOworCitUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6VGV4dHVyZVN0b3Jh
Z2VJbnRlcmZhY2UoKQorICAgIDogbVRleHR1cmVTZXJpYWwoaXNzdWVUZXh0dXJlU2VyaWFsKCkp
LAorICAgICAgbUluc3RhbmNlKE5VTEwpCit7Cit9CisKK1RleHR1cmVTdG9yYWdlSW50ZXJmYWNl
Ojp+VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UoKQoreworICAgIGRlbGV0ZSBtSW5zdGFuY2U7Cit9
CisKK2Jvb2wgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OmlzUmVuZGVyVGFyZ2V0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5pc1JlbmRlclRhcmdldCgpOworfQorCisKK2Jvb2wg
VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OmlzTWFuYWdlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1JbnN0YW5jZS0+aXNNYW5hZ2VkKCk7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0dXJlU3RvcmFn
ZUludGVyZmFjZTo6Z2V0VGV4dHVyZVNlcmlhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0
dXJlU2VyaWFsOworfQorCit1bnNpZ25lZCBpbnQgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6Omlz
c3VlVGV4dHVyZVNlcmlhbCgpCit7CisgICAgcmV0dXJuIG1DdXJyZW50VGV4dHVyZVNlcmlhbCsr
OworfQorCitpbnQgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OmdldExvZE9mZnNldCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0TG9kT2Zmc2V0KCk7Cit9CisKKworaW50IFRl
eHR1cmVTdG9yYWdlSW50ZXJmYWNlOjpsZXZlbENvdW50KCkKK3sKKyAgICByZXR1cm4gbUluc3Rh
bmNlLT5sZXZlbENvdW50KCk7Cit9CisKK1RleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ6OlRleHR1
cmVTdG9yYWdlSW50ZXJmYWNlMkQoUmVuZGVyZXIgKnJlbmRlcmVyLCBTd2FwQ2hhaW4gKnN3YXBj
aGFpbikgCisgICAgOiBtUmVuZGVyVGFyZ2V0U2VyaWFsKGdsOjpSZW5kZXJidWZmZXJTdG9yYWdl
Ojppc3N1ZVNlcmlhbCgpKQoreworICAgIG1JbnN0YW5jZSA9IHJlbmRlcmVyLT5jcmVhdGVUZXh0
dXJlU3RvcmFnZTJEKHN3YXBjaGFpbik7Cit9CisKK1RleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ6
OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQoUmVuZGVyZXIgKnJlbmRlcmVyLCBpbnQgbGV2ZWxz
LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFi
bGUsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQorICAgIDogbVJlbmRlclRhcmdldFNl
cmlhbChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNzdWVTZXJpYWwoKSkKK3sKKyAgICBtSW5z
dGFuY2UgPSByZW5kZXJlci0+Y3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChsZXZlbHMsIGludGVybmFs
Zm9ybWF0LCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxlLCB3aWR0aCwgaGVpZ2h0KTsKK30KKworVGV4
dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDo6flRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQoKQorewor
fQorCitSZW5kZXJUYXJnZXQgKlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ6OmdldFJlbmRlclRh
cmdldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0UmVuZGVyVGFyZ2V0KCk7
Cit9CisKK3ZvaWQgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDo6Z2VuZXJhdGVNaXBtYXAoaW50
IGxldmVsKQoreworICAgIG1JbnN0YW5jZS0+Z2VuZXJhdGVNaXBtYXAobGV2ZWwpOworfQorCit1
bnNpZ25lZCBpbnQgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDo6Z2V0UmVuZGVyVGFyZ2V0U2Vy
aWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJUYXJnZXRTZXJp
YWw7Cit9CisKK1RleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6VGV4dHVyZVN0b3JhZ2VJbnRl
cmZhY2VDdWJlKFJlbmRlcmVyICpyZW5kZXJlciwgaW50IGxldmVscywgR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHTGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBpbnQgc2l6ZSkKKyAg
ICA6IG1GaXJzdFJlbmRlclRhcmdldFNlcmlhbChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNz
dWVDdWJlU2VyaWFscygpKQoreworICAgIG1JbnN0YW5jZSA9IHJlbmRlcmVyLT5jcmVhdGVUZXh0
dXJlU3RvcmFnZUN1YmUobGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgdXNhZ2UsIGZvcmNlUmVuZGVy
YWJsZSwgc2l6ZSk7Cit9CisKK1RleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6flRleHR1cmVT
dG9yYWdlSW50ZXJmYWNlQ3ViZSgpCit7Cit9CisKK1JlbmRlclRhcmdldCAqVGV4dHVyZVN0b3Jh
Z2VJbnRlcmZhY2VDdWJlOjpnZXRSZW5kZXJUYXJnZXQoR0xlbnVtIGZhY2VUYXJnZXQpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0UmVuZGVyVGFyZ2V0KGZhY2VUYXJnZXQpOwor
fQorCit2b2lkIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6Z2VuZXJhdGVNaXBtYXAoaW50
IGZhY2UsIGludCBsZXZlbCkKK3sKKyAgICBtSW5zdGFuY2UtPmdlbmVyYXRlTWlwbWFwKGZhY2Us
IGxldmVsKTsKK30KKwordW5zaWduZWQgaW50IFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6
Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1GaXJzdFJlbmRlclRhcmdldFNlcmlhbCArIGdsOjpUZXh0dXJlQ3ViZU1hcDo6ZmFjZUluZGV4
KHRhcmdldCk7Cit9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDExMCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVGV4dHVyZVN0
b3JhZ2UuaDogRGVmaW5lcyB0aGUgYWJzdHJhY3Qgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
IGNsYXNzIGFuZCBpdHMgY29uY3JldGUgZGVyaXZlZAorLy8gY2xhc3NlcyBUZXh0dXJlU3RvcmFn
ZUludGVyZmFjZTJEIGFuZCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUsIHdoaWNoIGFjdCBh
cyB0aGUgaW50ZXJmYWNlIHRvIHRoZQorLy8gR1BVLXNpZGUgdGV4dHVyZS4KKworI2lmbmRlZiBM
SUJHTEVTVjJfUkVOREVSRVJfVEVYVFVSRVNUT1JBR0VfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JF
TkRFUkVSX1RFWFRVUkVTVE9SQUdFX0hfCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKwor
bmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKK2NsYXNzIFN3YXBDaGFpbjsKK2NsYXNz
IFJlbmRlclRhcmdldDsKK2NsYXNzIEJsaXQ7CisKK2NsYXNzIFRleHR1cmVTdG9yYWdlCit7Cisg
IHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZSgpIHt9OworICAgIHZpcnR1YWwgflRleHR1cmVT
dG9yYWdlKCkge307CisKKyAgICB2aXJ0dWFsIGludCBnZXRMb2RPZmZzZXQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyVGFyZ2V0KCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc01hbmFnZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbGV2ZWxDb3Vu
dCgpID0gMDsKKworICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoKSA9
IDA7CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChHTGVudW0gZmFj
ZVRhcmdldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcChpbnQgbGV2ZWwp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVNaXBtYXAoaW50IGZhY2UsIGludCBsZXZl
bCkgPSAwOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1
cmVTdG9yYWdlKTsKKworfTsKKworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UKK3sKKyAg
cHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlKCk7CisgICAgdmlydHVhbCB+VGV4
dHVyZVN0b3JhZ2VJbnRlcmZhY2UoKTsKKworICAgIFRleHR1cmVTdG9yYWdlICpnZXRTdG9yYWdl
SW5zdGFuY2UoKSB7IHJldHVybiBtSW5zdGFuY2U7IH0KKworICAgIHVuc2lnbmVkIGludCBnZXRU
ZXh0dXJlU2VyaWFsKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmVuZGVy
VGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgaW50
IGdldExvZE9mZnNldCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclRhcmdldCgp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc01hbmFnZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGludCBsZXZlbENvdW50KCk7CisKKyAgcHJvdGVjdGVkOgorICAgIFRleHR1cmVTdG9yYWdlICpt
SW5zdGFuY2U7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4
dHVyZVN0b3JhZ2VJbnRlcmZhY2UpOworCisgICAgY29uc3QgdW5zaWduZWQgaW50IG1UZXh0dXJl
U2VyaWFsOworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXNzdWVUZXh0dXJlU2VyaWFsKCk7CisK
KyAgICBzdGF0aWMgdW5zaWduZWQgaW50IG1DdXJyZW50VGV4dHVyZVNlcmlhbDsKK307CisKK2Ns
YXNzIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgOiBwdWJsaWMgVGV4dHVyZVN0b3JhZ2VJbnRl
cmZhY2UKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQoUmVuZGVy
ZXIgKnJlbmRlcmVyLCBTd2FwQ2hhaW4gKnN3YXBjaGFpbik7CisgICAgVGV4dHVyZVN0b3JhZ2VJ
bnRlcmZhY2UyRChSZW5kZXJlciAqcmVuZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQpOworICAgIHZpcnR1YWwgflRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
MkQoKTsKKworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAoaW50IGxldmVsKTsKKyAgICBSZW5kZXJU
YXJnZXQgKmdldFJlbmRlclRhcmdldCgpIGNvbnN0OworCisgICAgdmlydHVhbCB1bnNpZ25lZCBp
bnQgZ2V0UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0OworCisgIHByaXZh
dGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
MkQpOworCisgICAgY29uc3QgdW5zaWduZWQgaW50IG1SZW5kZXJUYXJnZXRTZXJpYWw7Cit9Owor
CitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgOiBwdWJsaWMgVGV4dHVyZVN0b3Jh
Z2VJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3Vi
ZShSZW5kZXJlciAqcmVuZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgaW50IHNpemUpOworICAgIHZpcnR1
YWwgflRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSgpOworCisgICAgdm9pZCBnZW5lcmF0ZU1p
cG1hcChpbnQgZmFjZSwgaW50IGxldmVsKTsKKyAgICBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRh
cmdldChHTGVudW0gZmFjZVRhcmdldCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGlu
dCBnZXRSZW5kZXJUYXJnZXRTZXJpYWwoR0xlbnVtIHRhcmdldCkgY29uc3Q7CisKKyAgcHJpdmF0
ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VD
dWJlKTsKKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBtRmlyc3RSZW5kZXJUYXJnZXRTZXJpYWw7
Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfVEVYVFVSRVNUT1JBR0Vf
SF8KKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9WZXJ0ZXhCdWZmZXI5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhC
dWZmZXI5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0ODYgQEAKKyNpbmNsdWRlICJwcmVj
b21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVmVydGV4QnVmZmVyOS5jcHA6IERl
ZmluZXMgdGhlIEQzRDkgVmVydGV4QnVmZmVyIGltcGxlbWVudGF0aW9uLgorCisjaW5jbHVkZSAi
bGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvdmVydGV4Y29udmVyc2lvbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9CdWZmZXJTdG9yYWdlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmgiCisKKyNpbmNsdWRlICJsaWJHTEVT
djIvQnVmZmVyLmgiCisKK25hbWVzcGFjZSByeAoreworCitib29sIFZlcnRleEJ1ZmZlcjk6Om1U
cmFuc2xhdGlvbnNJbml0aWFsaXplZCA9IGZhbHNlOworVmVydGV4QnVmZmVyOTo6Rm9ybWF0Q29u
dmVydGVyIFZlcnRleEJ1ZmZlcjk6Om1Gb3JtYXRDb252ZXJ0ZXJzW05VTV9HTF9WRVJURVhfQVRU
UklCX1RZUEVTXVsyXVs0XTsKKworVmVydGV4QnVmZmVyOTo6VmVydGV4QnVmZmVyOShyeDo6UmVu
ZGVyZXI5ICpjb25zdCByZW5kZXJlcikgOiBtUmVuZGVyZXIocmVuZGVyZXIpCit7CisgICAgbVZl
cnRleEJ1ZmZlciA9IE5VTEw7CisgICAgbUJ1ZmZlclNpemUgPSAwOworICAgIG1EeW5hbWljVXNh
Z2UgPSBmYWxzZTsKKworICAgIGlmICghbVRyYW5zbGF0aW9uc0luaXRpYWxpemVkKQorICAgIHsK
KyAgICAgICAgaW5pdGlhbGl6ZVRyYW5zbGF0aW9ucyhyZW5kZXJlci0+Z2V0Q2Fwc0RlY2xUeXBl
cygpKTsKKyAgICAgICAgbVRyYW5zbGF0aW9uc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICB9Cit9
CisKK1ZlcnRleEJ1ZmZlcjk6On5WZXJ0ZXhCdWZmZXI5KCkKK3sKKyAgICBpZiAobVZlcnRleEJ1
ZmZlcikKKyAgICB7CisgICAgICAgIG1WZXJ0ZXhCdWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAg
bVZlcnRleEJ1ZmZlciA9IE5VTEw7CisgICAgfQorfQorCitib29sIFZlcnRleEJ1ZmZlcjk6Omlu
aXRpYWxpemUodW5zaWduZWQgaW50IHNpemUsIGJvb2wgZHluYW1pY1VzYWdlKQoreworICAgIGlm
IChtVmVydGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgbVZlcnRleEJ1ZmZlci0+UmVsZWFzZSgp
OworICAgICAgICBtVmVydGV4QnVmZmVyID0gTlVMTDsKKyAgICB9CisKKyAgICB1cGRhdGVTZXJp
YWwoKTsKKworICAgIGlmIChzaXplID4gMCkKKyAgICB7CisgICAgICAgIERXT1JEIGZsYWdzID0g
RDNEVVNBR0VfV1JJVEVPTkxZOworICAgICAgICBpZiAoZHluYW1pY1VzYWdlKQorICAgICAgICB7
CisgICAgICAgICAgICBmbGFncyB8PSBEM0RVU0FHRV9EWU5BTUlDOworICAgICAgICB9CisKKyAg
ICAgICAgSFJFU1VMVCByZXN1bHQgPSBtUmVuZGVyZXItPmNyZWF0ZVZlcnRleEJ1ZmZlcihzaXpl
LCBmbGFncywgJm1WZXJ0ZXhCdWZmZXIpOworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
KyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJPdXQgb2YgbWVtb3J5IGFsbG9jYXRpbmcgYSB2
ZXJ0ZXggYnVmZmVyIG9mIHNpemUgJWx1LiIsIHNpemUpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgfQorCisgICAgbUJ1ZmZlclNpemUgPSBzaXplOworICAgIG1E
eW5hbWljVXNhZ2UgPSBkeW5hbWljVXNhZ2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1ZlcnRl
eEJ1ZmZlcjkgKlZlcnRleEJ1ZmZlcjk6Om1ha2VWZXJ0ZXhCdWZmZXI5KFZlcnRleEJ1ZmZlciAq
dmVydGV4QnVmZmVyKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKFZlcnRleEJ1ZmZl
cjkqLCB2ZXJ0ZXhCdWZmZXIpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmVydGV4QnVmZmVy
OSo+KHZlcnRleEJ1ZmZlcik7Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVyOTo6c3RvcmVWZXJ0ZXhB
dHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQs
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGluc3RhbmNlcywgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICBpZiAo
bVZlcnRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGF0dHJp
Yi5tQm91bmRCdWZmZXIuZ2V0KCk7CisKKyAgICAgICAgaW50IGlucHV0U3RyaWRlID0gYXR0cmli
LnN0cmlkZSgpOworICAgICAgICBpbnQgZWxlbWVudFNpemUgPSBhdHRyaWIudHlwZVNpemUoKTsK
KyAgICAgICAgY29uc3QgRm9ybWF0Q29udmVydGVyICZjb252ZXJ0ZXIgPSBmb3JtYXRDb252ZXJ0
ZXIoYXR0cmliKTsKKworICAgICAgICBEV09SRCBsb2NrRmxhZ3MgPSBtRHluYW1pY1VzYWdlID8g
RDNETE9DS19OT09WRVJXUklURSA6IDA7CisKKyAgICAgICAgdm9pZCAqbWFwUHRyID0gTlVMTDsK
KyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtVmVydGV4QnVmZmVyLT5Mb2NrKG9mZnNldCwgc3Bh
Y2VSZXF1aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMpLCAmbWFwUHRyLCBsb2NrRmxhZ3Mp
OworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAg
RVJSKCJMb2NrIGZhaWxlZCB3aXRoIGVycm9yIDB4JTA4eCIsIHJlc3VsdCk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBjaGFyICppbnB1dCA9
IE5VTEw7CisgICAgICAgIGlmIChidWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJ1ZmZl
clN0b3JhZ2UgKnN0b3JhZ2UgPSBidWZmZXItPmdldFN0b3JhZ2UoKTsKKyAgICAgICAgICAgIGlu
cHV0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHN0b3JhZ2UtPmdldERhdGEoKSkgKyBzdGF0
aWNfY2FzdDxpbnQ+KGF0dHJpYi5tT2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlucHV0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGF0
dHJpYi5tUG9pbnRlcik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW5zdGFuY2VzID09IDAg
fHwgYXR0cmliLm1EaXZpc29yID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlucHV0ICs9
IGlucHV0U3RyaWRlICogc3RhcnQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29udmVydGVy
LmlkZW50aXR5ICYmIGlucHV0U3RyaWRlID09IGVsZW1lbnRTaXplKQorICAgICAgICB7CisgICAg
ICAgICAgICBtZW1jcHkobWFwUHRyLCBpbnB1dCwgY291bnQgKiBpbnB1dFN0cmlkZSk7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBjb252ZXJ0ZXIuY29u
dmVydEFycmF5KGlucHV0LCBpbnB1dFN0cmlkZSwgY291bnQsIG1hcFB0cik7CisgICAgICAgIH0K
KworICAgICAgICBtVmVydGV4QnVmZmVyLT5VbmxvY2soKTsKKworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgRVJSKCJWZXJ0ZXggYnVmZmVyIG5v
dCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9v
bCBWZXJ0ZXhCdWZmZXI5OjpzdG9yZVJhd0RhdGEoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQg
aW50IHNpemUsIHVuc2lnbmVkIGludCBvZmZzZXQpCit7CisgICAgaWYgKG1WZXJ0ZXhCdWZmZXIp
CisgICAgeworICAgICAgICBEV09SRCBsb2NrRmxhZ3MgPSBtRHluYW1pY1VzYWdlID8gRDNETE9D
S19OT09WRVJXUklURSA6IDA7CisKKyAgICAgICAgdm9pZCAqbWFwUHRyID0gTlVMTDsKKyAgICAg
ICAgSFJFU1VMVCByZXN1bHQgPSBtVmVydGV4QnVmZmVyLT5Mb2NrKG9mZnNldCwgc2l6ZSwgJm1h
cFB0ciwgbG9ja0ZsYWdzKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEVSUigiTG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1
bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgbWVt
Y3B5KG1hcFB0ciwgZGF0YSwgc2l6ZSk7CisKKyAgICAgICAgbVZlcnRleEJ1ZmZlci0+VW5sb2Nr
KCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIEVSUigiVmVydGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXI5OjpnZXRTcGFj
ZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xzaXplaSBjb3Vu
dCwgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNwYWNlUmVxdWlyZWQo
YXR0cmliLCBjb3VudCwgaW5zdGFuY2VzKTsKK30KKworYm9vbCBWZXJ0ZXhCdWZmZXI5OjpyZXF1
aXJlc0NvbnZlcnNpb24oY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdAor
eworICAgIHJldHVybiBmb3JtYXRDb252ZXJ0ZXIoYXR0cmliKS5pZGVudGl0eTsKK30KKwordW5z
aWduZWQgaW50IFZlcnRleEJ1ZmZlcjk6OmdldFZlcnRleFNpemUoY29uc3QgZ2w6OlZlcnRleEF0
dHJpYnV0ZSAmYXR0cmliKSBjb25zdAoreworICAgIHJldHVybiBzcGFjZVJlcXVpcmVkKGF0dHJp
YiwgMSwgMCk7Cit9CisKK0QzRERFQ0xUWVBFIFZlcnRleEJ1ZmZlcjk6OmdldERlY2xUeXBlKGNv
bnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3QKK3sKKyAgICByZXR1cm4gZm9y
bWF0Q29udmVydGVyKGF0dHJpYikuZDNkRGVjbFR5cGU7Cit9CisKK3Vuc2lnbmVkIGludCBWZXJ0
ZXhCdWZmZXI5OjpnZXRCdWZmZXJTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUJ1ZmZlclNp
emU7Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVyOTo6c2V0QnVmZmVyU2l6ZSh1bnNpZ25lZCBpbnQg
c2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA+IG1CdWZmZXJTaXplKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGluaXRpYWxpemUoc2l6ZSwgbUR5bmFtaWNVc2FnZSk7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKworYm9vbCBWZXJ0ZXhCdWZmZXI5
OjpkaXNjYXJkKCkKK3sKKyAgICBpZiAobVZlcnRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIHZv
aWQgKmR1bW15OworICAgICAgICBIUkVTVUxUIHJlc3VsdDsKKworICAgICAgICByZXN1bHQgPSBt
VmVydGV4QnVmZmVyLT5Mb2NrKDAsIDEsICZkdW1teSwgRDNETE9DS19ESVNDQVJEKTsKKyAgICAg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkRpc2Nh
cmQgbG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gbVZlcnRleEJ1ZmZl
ci0+VW5sb2NrKCk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAg
ICAgICAgICAgRVJSKCJEaXNjYXJkIHVubG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCBy
ZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEVSUigiVmVydGV4
IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
Cit9CisKK0lEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKiBWZXJ0ZXhCdWZmZXI5OjpnZXRCdWZmZXIo
KSBjb25zdAoreworICAgIHJldHVybiBtVmVydGV4QnVmZmVyOworfQorCisvLyBNYXBwaW5nIGZy
b20gT3BlbkdMLUVTIHZlcnRleCBhdHRyaWIgdHlwZSB0byBEM0QgZGVjbCB0eXBlOgorLy8KKy8v
IEJZVEUgICAgICAgICAgICAgICAgIFNIT1JUIChDYXN0KQorLy8gQllURS1ub3JtICAgICAgICAg
ICAgRkxPQVQgKE5vcm1hbGl6ZSkgKGNhbid0IGJlIGV4YWN0bHkgcmVwcmVzZW50ZWQgYXMgU0hP
UlQtbm9ybSkKKy8vIFVOU0lHTkVEX0JZVEUgICAgICAgIFVCWVRFNCAoSWRlbnRpdHkpIG9yIFNI
T1JUIChDYXN0KQorLy8gVU5TSUdORURfQllURS1ub3JtICAgVUJZVEU0TiAoSWRlbnRpdHkpIG9y
IEZMT0FUIChOb3JtYWxpemUpCisvLyBTSE9SVCAgICAgICAgICAgICAgICBTSE9SVCAoSWRlbnRp
dHkpCisvLyBTSE9SVC1ub3JtICAgICAgICAgICBTSE9SVC1ub3JtIChJZGVudGl0eSkgb3IgRkxP
QVQgKE5vcm1hbGl6ZSkKKy8vIFVOU0lHTkVEX1NIT1JUICAgICAgIEZMT0FUIChDYXN0KQorLy8g
VU5TSUdORURfU0hPUlQtbm9ybSAgVVNIT1JULW5vcm0gKElkZW50aXR5KSBvciBGTE9BVCAoTm9y
bWFsaXplKQorLy8gRklYRUQgKG5vdCBpbiBXZWJHTCkgRkxPQVQgKEZpeGVkVG9GbG9hdCkKKy8v
IEZMT0FUICAgICAgICAgICAgICAgIEZMT0FUIChJZGVudGl0eSkKKworLy8gR0xUb0NUeXBlIG1h
cHMgZnJvbSBHTCB0eXBlIChhcyBHTGVudW0pIHRvIHRoZSBDIHR5cGVkZWYuCit0ZW1wbGF0ZSA8
R0xlbnVtIEdMVHlwZT4gc3RydWN0IEdMVG9DVHlwZSB7IH07CisKK3RlbXBsYXRlIDw+IHN0cnVj
dCBHTFRvQ1R5cGU8R0xfQllURT4gICAgICAgICAgIHsgdHlwZWRlZiBHTGJ5dGUgdHlwZTsgICAg
ICB9OwordGVtcGxhdGUgPD4gc3RydWN0IEdMVG9DVHlwZTxHTF9VTlNJR05FRF9CWVRFPiAgeyB0
eXBlZGVmIEdMdWJ5dGUgdHlwZTsgICAgIH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgR0xUb0NUeXBl
PEdMX1NIT1JUPiAgICAgICAgICB7IHR5cGVkZWYgR0xzaG9ydCB0eXBlOyAgICAgfTsKK3RlbXBs
YXRlIDw+IHN0cnVjdCBHTFRvQ1R5cGU8R0xfVU5TSUdORURfU0hPUlQ+IHsgdHlwZWRlZiBHTHVz
aG9ydCB0eXBlOyAgICB9OwordGVtcGxhdGUgPD4gc3RydWN0IEdMVG9DVHlwZTxHTF9GSVhFRD4g
ICAgICAgICAgeyB0eXBlZGVmIEdMdWludCB0eXBlOyAgICAgIH07Cit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgR0xUb0NUeXBlPEdMX0ZMT0FUPiAgICAgICAgICB7IHR5cGVkZWYgR0xmbG9hdCB0eXBlOyAg
ICAgfTsKKworLy8gVGhpcyBkaWZmZXJzIGZyb20gRDNEREVDTFRZUEUgaW4gdGhhdCBpdCBpcyB1
bnNpemVkLiAoU2l6ZSBleHBhbnNpb24gaXMgYXBwbGllZCBsYXN0LikKK2VudW0gRDNEVmVydGV4
VHlwZQoreworICAgIEQzRFZUX0ZMT0FULAorICAgIEQzRFZUX1NIT1JULAorICAgIEQzRFZUX1NI
T1JUX05PUk0sCisgICAgRDNEVlRfVUJZVEUsCisgICAgRDNEVlRfVUJZVEVfTk9STSwKKyAgICBE
M0RWVF9VU0hPUlRfTk9STQorfTsKKworLy8gRDNEVG9DVHlwZSBtYXBzIGZyb20gRDNEIHZlcnRl
eCB0eXBlIChhcyBlbnVtIEQzRFZlcnRleFR5cGUpIHRvIHRoZSBjb3JyZXNwb25kaW5nIEMgdHlw
ZS4KK3RlbXBsYXRlIDx1bnNpZ25lZCBpbnQgRDNEVHlwZT4gc3RydWN0IEQzRFRvQ1R5cGUgeyB9
OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNEVG9DVHlwZTxEM0RWVF9GTE9BVD4geyB0eXBlZGVm
IGZsb2F0IHR5cGU7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNEVG9DVHlwZTxEM0RWVF9TSE9S
VD4geyB0eXBlZGVmIHNob3J0IHR5cGU7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNEVG9DVHlw
ZTxEM0RWVF9TSE9SVF9OT1JNPiB7IHR5cGVkZWYgc2hvcnQgdHlwZTsgfTsKK3RlbXBsYXRlIDw+
IHN0cnVjdCBEM0RUb0NUeXBlPEQzRFZUX1VCWVRFPiB7IHR5cGVkZWYgdW5zaWduZWQgY2hhciB0
eXBlOyB9OwordGVtcGxhdGUgPD4gc3RydWN0IEQzRFRvQ1R5cGU8RDNEVlRfVUJZVEVfTk9STT4g
eyB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdHlwZTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBEM0RU
b0NUeXBlPEQzRFZUX1VTSE9SVF9OT1JNPiB7IHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdHlwZTsg
fTsKKworLy8gRW5jb2RlIHRoZSB0eXBlL3NpemUgY29tYmluYXRpb25zIHRoYXQgRDNEIHBlcm1p
dHMuIEZvciBlYWNoIHR5cGUvc2l6ZSBpdCBleHBhbmRzIHRvIGEgd2lkZW5lciB0aGF0IHdpbGwg
cHJvdmlkZSB0aGUgYXBwcm9wcmlhdGUgZmluYWwgc2l6ZS4KK3RlbXBsYXRlIDx1bnNpZ25lZCBp
bnQgdHlwZSwgaW50IHNpemU+IHN0cnVjdCBXaWRlblJ1bGUgeyB9OworCit0ZW1wbGF0ZSA8aW50
IHNpemU+IHN0cnVjdCBXaWRlblJ1bGU8RDNEVlRfRkxPQVQsIHNpemU+ICAgICAgICAgIDogTm9X
aWRlbjxzaXplPiB7IH07Cit0ZW1wbGF0ZSA8aW50IHNpemU+IHN0cnVjdCBXaWRlblJ1bGU8RDNE
VlRfU0hPUlQsIHNpemU+ICAgICAgICAgIDogV2lkZW5Ub0V2ZW48c2l6ZT4geyB9OwordGVtcGxh
dGUgPGludCBzaXplPiBzdHJ1Y3QgV2lkZW5SdWxlPEQzRFZUX1NIT1JUX05PUk0sIHNpemU+ICAg
ICA6IFdpZGVuVG9FdmVuPHNpemU+IHsgfTsKK3RlbXBsYXRlIDxpbnQgc2l6ZT4gc3RydWN0IFdp
ZGVuUnVsZTxEM0RWVF9VQllURSwgc2l6ZT4gICAgICAgICAgOiBXaWRlblRvRm91cjxzaXplPiB7
IH07Cit0ZW1wbGF0ZSA8aW50IHNpemU+IHN0cnVjdCBXaWRlblJ1bGU8RDNEVlRfVUJZVEVfTk9S
TSwgc2l6ZT4gICAgIDogV2lkZW5Ub0ZvdXI8c2l6ZT4geyB9OwordGVtcGxhdGUgPGludCBzaXpl
PiBzdHJ1Y3QgV2lkZW5SdWxlPEQzRFZUX1VTSE9SVF9OT1JNLCBzaXplPiAgICA6IFdpZGVuVG9F
dmVuPHNpemU+IHsgfTsKKworLy8gVmVydGV4VHlwZUZsYWdzIGVuY29kZXMgdGhlIEQzRENBUFM5
OjpEZWNsVHlwZSBmbGFnIGFuZCB2ZXJ0ZXggZGVjbGFyYXRpb24gZmxhZyBmb3IgZWFjaCBEM0Qg
dmVydGV4IHR5cGUgJiBzaXplIGNvbWJpbmF0aW9uLgordGVtcGxhdGUgPHVuc2lnbmVkIGludCBk
M2R0eXBlLCBpbnQgc2l6ZT4gc3RydWN0IFZlcnRleFR5cGVGbGFncyB7IH07CisKK3RlbXBsYXRl
IDx1bnNpZ25lZCBpbnQgX2NhcGZsYWcsIHVuc2lnbmVkIGludCBfZGVjbGZsYWc+CitzdHJ1Y3Qg
VmVydGV4VHlwZUZsYWdzSGVscGVyCit7CisgICAgZW51bSB7IGNhcGZsYWcgPSBfY2FwZmxhZyB9
OworICAgIGVudW0geyBkZWNsZmxhZyA9IF9kZWNsZmxhZyB9OworfTsKKwordGVtcGxhdGUgPD4g
c3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9GTE9BVCwgMT4gOiBWZXJ0ZXhUeXBlRmxhZ3NI
ZWxwZXI8MCwgRDNEREVDTFRZUEVfRkxPQVQxPiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVy
dGV4VHlwZUZsYWdzPEQzRFZUX0ZMT0FULCAyPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjwwLCBE
M0RERUNMVFlQRV9GTE9BVDI+IHsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlRmxh
Z3M8RDNEVlRfRkxPQVQsIDM+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPDAsIEQzRERFQ0xUWVBF
X0ZMT0FUMz4geyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9G
TE9BVCwgND4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxwZXI8MCwgRDNEREVDTFRZUEVfRkxPQVQ0PiB7
IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX1NIT1JULCAyPiA6
IFZlcnRleFR5cGVGbGFnc0hlbHBlcjwwLCBEM0RERUNMVFlQRV9TSE9SVDI+IHsgfTsKK3RlbXBs
YXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRfU0hPUlQsIDQ+IDogVmVydGV4VHlw
ZUZsYWdzSGVscGVyPDAsIEQzRERFQ0xUWVBFX1NIT1JUND4geyB9OwordGVtcGxhdGUgPD4gc3Ry
dWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9TSE9SVF9OT1JNLCAyPiA6IFZlcnRleFR5cGVGbGFn
c0hlbHBlcjxEM0REVENBUFNfU0hPUlQyTiwgRDNEREVDTFRZUEVfU0hPUlQyTj4geyB9OwordGVt
cGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9TSE9SVF9OT1JNLCA0PiA6IFZl
cnRleFR5cGVGbGFnc0hlbHBlcjxEM0REVENBUFNfU0hPUlQ0TiwgRDNEREVDTFRZUEVfU0hPUlQ0
Tj4geyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9VQllURSwg
ND4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxwZXI8RDNERFRDQVBTX1VCWVRFNCwgRDNEREVDTFRZUEVf
VUJZVEU0PiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX1VC
WVRFX05PUk0sIDQ+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPEQzRERUQ0FQU19VQllURTROLCBE
M0RERUNMVFlQRV9VQllURTROPiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZs
YWdzPEQzRFZUX1VTSE9SVF9OT1JNLCAyPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjxEM0REVENB
UFNfVVNIT1JUMk4sIEQzRERFQ0xUWVBFX1VTSE9SVDJOPiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX1VTSE9SVF9OT1JNLCA0PiA6IFZlcnRleFR5cGVGbGFn
c0hlbHBlcjxEM0REVENBUFNfVVNIT1JUNE4sIEQzRERFQ0xUWVBFX1VTSE9SVDROPiB7IH07CisK
KworLy8gVmVydGV4VHlwZU1hcHBpbmcgbWFwcyBHTCB0eXBlICYgbm9ybWFsaXplZCBmbGFnIHRv
IHByZWZlcnJlZCBhbmQgZmFsbGJhY2sgRDNEIHZlcnRleCB0eXBlcyAoYXMgRDNEVmVydGV4VHlw
ZSBlbnVtcykuCit0ZW1wbGF0ZSA8R0xlbnVtIEdMdHlwZSwgYm9vbCBub3JtYWxpemVkPiBzdHJ1
Y3QgVmVydGV4VHlwZU1hcHBpbmcgeyB9OworCit0ZW1wbGF0ZSA8RDNEVmVydGV4VHlwZSBQcmVm
ZXJyZWQsIEQzRFZlcnRleFR5cGUgRmFsbGJhY2sgPSBQcmVmZXJyZWQ+CitzdHJ1Y3QgVmVydGV4
VHlwZU1hcHBpbmdCYXNlCit7CisgICAgZW51bSB7IHByZWZlcnJlZCA9IFByZWZlcnJlZCB9Owor
ICAgIGVudW0geyBmYWxsYmFjayA9IEZhbGxiYWNrIH07Cit9OworCit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfQllURSwgZmFsc2U+ICAgICAgICAgICAgICAgICAgICAg
ICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfU0hPUlQ+IHsgfTsgICAgICAgICAgICAg
ICAgICAgICAgIC8vIENhc3QKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlTWFwcGluZzxH
TF9CWVRFLCB0cnVlPiAgICAgICAgICAgICAgICAgICAgICAgICA6IFZlcnRleFR5cGVNYXBwaW5n
QmFzZTxEM0RWVF9GTE9BVD4geyB9OyAgICAgICAgICAgICAgICAgICAgICAgLy8gTm9ybWFsaXpl
Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfVU5TSUdORURfQllURSwg
ZmFsc2U+ICAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfVUJZVEUs
IEQzRFZUX0ZMT0FUPiB7IH07ICAgICAgICAgIC8vIElkZW50aXR5LCBDYXN0Cit0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfVU5TSUdORURfQllURSwgdHJ1ZT4gICAgICAg
ICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfVUJZVEVfTk9STSwgRDNEVlRf
RkxPQVQ+IHsgfTsgICAgIC8vIElkZW50aXR5LCBOb3JtYWxpemUKK3RlbXBsYXRlIDw+IHN0cnVj
dCBWZXJ0ZXhUeXBlTWFwcGluZzxHTF9TSE9SVCwgZmFsc2U+ICAgICAgICAgICAgICAgICAgICAg
ICA6IFZlcnRleFR5cGVNYXBwaW5nQmFzZTxEM0RWVF9TSE9SVD4geyB9OyAgICAgICAgICAgICAg
ICAgICAgICAgLy8gSWRlbnRpdHkKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlTWFwcGlu
ZzxHTF9TSE9SVCwgdHJ1ZT4gICAgICAgICAgICAgICAgICAgICAgICA6IFZlcnRleFR5cGVNYXBw
aW5nQmFzZTxEM0RWVF9TSE9SVF9OT1JNLCBEM0RWVF9GTE9BVD4geyB9OyAgICAgLy8gQ2FzdCwg
Tm9ybWFsaXplCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfVU5TSUdO
RURfU0hPUlQsIGZhbHNlPiAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNE
VlRfRkxPQVQ+IHsgfTsgICAgICAgICAgICAgICAgICAgICAgIC8vIENhc3QKK3RlbXBsYXRlIDw+
IHN0cnVjdCBWZXJ0ZXhUeXBlTWFwcGluZzxHTF9VTlNJR05FRF9TSE9SVCwgdHJ1ZT4gICAgICAg
ICAgICAgICA6IFZlcnRleFR5cGVNYXBwaW5nQmFzZTxEM0RWVF9VU0hPUlRfTk9STSwgRDNEVlRf
RkxPQVQ+IHsgfTsgICAgLy8gQ2FzdCwgTm9ybWFsaXplCit0ZW1wbGF0ZSA8Ym9vbCBub3JtYWxp
emVkPiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfRklYRUQsIG5vcm1hbGl6ZWQ+ICAgOiBW
ZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfRkxPQVQ+IHsgfTsgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEZpeGVkVG9GbG9hdAordGVtcGxhdGUgPGJvb2wgbm9ybWFsaXplZD4gc3RydWN0IFZl
cnRleFR5cGVNYXBwaW5nPEdMX0ZMT0FULCBub3JtYWxpemVkPiAgIDogVmVydGV4VHlwZU1hcHBp
bmdCYXNlPEQzRFZUX0ZMT0FUPiB7IH07ICAgICAgICAgICAgICAgICAgICAgICAvLyBJZGVudGl0
eQorCisKKy8vIEdpdmVuIGEgR0wgdHlwZSAmIG5vcm0gZmxhZyBhbmQgYSBEM0QgdHlwZSwgQ29u
dmVyc2lvblJ1bGUgcHJvdmlkZXMgdGhlIHR5cGUgY29udmVyc2lvbiBydWxlIChDYXN0LCBOb3Jt
YWxpemUsIElkZW50aXR5LCBGaXhlZFRvRmxvYXQpLgorLy8gVGhlIGNvbnZlcnNpb24gcnVsZXMg
dGhlbXNlbHZlcyBhcmUgZGVmaW5lZCBpbiB2ZXJ0ZXhjb252ZXJzaW9uLmguCisKKy8vIEFsbW9z
dCBhbGwgY2FzZXMgYXJlIGNvdmVyZWQgYnkgQ2FzdCAoaW5jbHVkaW5nIHRob3NlIHRoYXQgYXJl
IGFjdHVhbGx5IElkZW50aXR5IHNpbmNlIENhc3Q8VCxUPiBrbm93cyBpdCdzIGFuIGlkZW50aXR5
IG1hcHBpbmcpLgordGVtcGxhdGUgPEdMZW51bSBmcm9tVHlwZSwgYm9vbCBub3JtYWxpemVkLCB1
bnNpZ25lZCBpbnQgdG9UeXBlPgorc3RydWN0IENvbnZlcnNpb25SdWxlIDogQ2FzdDx0eXBlbmFt
ZSBHTFRvQ1R5cGU8ZnJvbVR5cGU+Ojp0eXBlLCB0eXBlbmFtZSBEM0RUb0NUeXBlPHRvVHlwZT46
OnR5cGU+IHsgfTsKKworLy8gQWxsIGNvbnZlcnNpb25zIGZyb20gbm9ybWFsaXplZCB0eXBlcyB0
byBmbG9hdCB1c2UgdGhlIE5vcm1hbGl6ZSBvcGVyYXRvci4KK3RlbXBsYXRlIDxHTGVudW0gZnJv
bVR5cGU+IHN0cnVjdCBDb252ZXJzaW9uUnVsZTxmcm9tVHlwZSwgdHJ1ZSwgRDNEVlRfRkxPQVQ+
IDogTm9ybWFsaXplPHR5cGVuYW1lIEdMVG9DVHlwZTxmcm9tVHlwZT46OnR5cGU+IHsgfTsKKwor
Ly8gVXNlIGEgZnVsbCBzcGVjaWFsaXphdGlvbiBmb3IgdGhpcyBzbyB0aGF0IGl0IHByZWZlcmVu
dGlhbGx5IG1hdGNoZXMgYWhlYWQgb2YgdGhlIGdlbmVyaWMgbm9ybWFsaXplLXRvLWZsb2F0IHJ1
bGVzLgordGVtcGxhdGUgPD4gc3RydWN0IENvbnZlcnNpb25SdWxlPEdMX0ZJWEVELCB0cnVlLCBE
M0RWVF9GTE9BVD4gIDogRml4ZWRUb0Zsb2F0PEdMaW50LCAxNj4geyB9OwordGVtcGxhdGUgPD4g
c3RydWN0IENvbnZlcnNpb25SdWxlPEdMX0ZJWEVELCBmYWxzZSwgRDNEVlRfRkxPQVQ+IDogRml4
ZWRUb0Zsb2F0PEdMaW50LCAxNj4geyB9OworCisvLyBBIDItc3RhZ2UgY29uc3RydWN0aW9uIGlz
IHVzZWQgZm9yIERlZmF1bHRWZXJ0ZXhWYWx1ZXMgYmVjYXVzZSBmbG9hdCBtdXN0IHVzZSBTaW1w
bGVEZWZhdWx0VmFsdWVzIChpLmUuIDAvMSkKKy8vIHdoZXRoZXIgaXQgaXMgbm9ybWFsaXplZCBv
ciBub3QuCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgYm9vbCBub3JtYWxpemVkPiBzdHJ1Y3QgRGVmYXVs
dFZlcnRleFZhbHVlc1N0YWdlMiB7IH07CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgRGVm
YXVsdFZlcnRleFZhbHVlc1N0YWdlMjxULCB0cnVlPiAgOiBOb3JtYWxpemVkRGVmYXVsdFZhbHVl
czxUPiB7IH07Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IERlZmF1bHRWZXJ0ZXhWYWx1ZXNT
dGFnZTI8VCwgZmFsc2U+IDogU2ltcGxlRGVmYXVsdFZhbHVlczxUPiB7IH07CisKKy8vIFdvcmsg
b3V0IHRoZSBkZWZhdWx0IHZhbHVlIHJ1bGUgZm9yIGEgRDNEIHR5cGUgKGV4cHJlc3NlZCBhcyB0
aGUgQyB0eXBlKSBhbmQKK3RlbXBsYXRlIDxjbGFzcyBULCBib29sIG5vcm1hbGl6ZWQ+IHN0cnVj
dCBEZWZhdWx0VmVydGV4VmFsdWVzIDogRGVmYXVsdFZlcnRleFZhbHVlc1N0YWdlMjxULCBub3Jt
YWxpemVkPiB7IH07Cit0ZW1wbGF0ZSA8Ym9vbCBub3JtYWxpemVkPiBzdHJ1Y3QgRGVmYXVsdFZl
cnRleFZhbHVlczxmbG9hdCwgbm9ybWFsaXplZD4gOiBTaW1wbGVEZWZhdWx0VmFsdWVzPGZsb2F0
PiB7IH07CisKKy8vIFBvbGljeSBydWxlcyBmb3IgdXNlIHdpdGggQ29udmVydGVyLCB0byBjaG9v
c2Ugd2hldGhlciB0byB1c2UgdGhlIHByZWZlcnJlZCBvciBmYWxsYmFjayBjb252ZXJzaW9uLgor
Ly8gVGhlIGZhbGxiYWNrIGNvbnZlcnNpb24gcHJvZHVjZXMgYW4gb3V0cHV0IHRoYXQgYWxsIEQz
RDkgZGV2aWNlcyBtdXN0IHN1cHBvcnQuCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IFVzZVBy
ZWZlcnJlZCB7IGVudW0geyB0eXBlID0gVDo6cHJlZmVycmVkIH07IH07Cit0ZW1wbGF0ZSA8Y2xh
c3MgVD4gc3RydWN0IFVzZUZhbGxiYWNrIHsgZW51bSB7IHR5cGUgPSBUOjpmYWxsYmFjayB9OyB9
OworCisvLyBDb252ZXJ0ZXIgdGllcyBpdCBhbGwgdG9nZXRoZXIuIEdpdmVuIGFuIE9wZW5HTCB0
eXBlL25vcm0vc2l6ZSBhbmQgY2hvaWNlIG9mIHByZWZlcnJlZC9mYWxsYmFjayBjb252ZXJzaW9u
LAorLy8gaXQgcHJvdmlkZXMgYWxsIHRoZSBtZW1iZXJzIG9mIHRoZSBhcHByb3ByaWF0ZSBWZXJ0
ZXhEYXRhQ29udmVydGVyLCB0aGUgRDNEQ0FQUzk6OkRlY2xUeXBlcyBmbGFnIGluIGNhcCBmbGFn
CisvLyBhbmQgdGhlIEQzRERFQ0xUWVBFIG1lbWJlciBuZWVkZWQgZm9yIHRoZSB2ZXJ0ZXggZGVj
bGFyYXRpb24gaW4gZGVjbGZsYWcuCit0ZW1wbGF0ZSA8R0xlbnVtIGZyb21UeXBlLCBib29sIG5v
cm1hbGl6ZWQsIGludCBzaXplLCB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUHJlZmVyZW5jZVJ1
bGU+CitzdHJ1Y3QgQ29udmVydGVyCisgICAgOiBWZXJ0ZXhEYXRhQ29udmVydGVyPHR5cGVuYW1l
IEdMVG9DVHlwZTxmcm9tVHlwZT46OnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFdp
ZGVuUnVsZTxQcmVmZXJlbmNlUnVsZTwgVmVydGV4VHlwZU1hcHBpbmc8ZnJvbVR5cGUsIG5vcm1h
bGl6ZWQ+ID46OnR5cGUsIHNpemU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJz
aW9uUnVsZTxmcm9tVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UHJlZmVyZW5jZVJ1bGU8IFZlcnRleFR5cGVNYXBwaW5nPGZyb21UeXBlLCBub3JtYWxpemVkPiA+
Ojp0eXBlPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFZlcnRleFZhbHVlczx0
eXBlbmFtZSBEM0RUb0NUeXBlPFByZWZlcmVuY2VSdWxlPCBWZXJ0ZXhUeXBlTWFwcGluZzxmcm9t
VHlwZSwgbm9ybWFsaXplZD4gPjo6dHlwZT46OnR5cGUsIG5vcm1hbGl6ZWQgPiA+Cit7Citwcml2
YXRlOgorICAgIGVudW0geyBkM2R0eXBlID0gUHJlZmVyZW5jZVJ1bGU8IFZlcnRleFR5cGVNYXBw
aW5nPGZyb21UeXBlLCBub3JtYWxpemVkPiA+Ojp0eXBlIH07CisgICAgZW51bSB7IGQzZHNpemUg
PSBXaWRlblJ1bGU8ZDNkdHlwZSwgc2l6ZT46OmZpbmFsV2lkdGggfTsKKworcHVibGljOgorICAg
IGVudW0geyBjYXBmbGFnID0gVmVydGV4VHlwZUZsYWdzPGQzZHR5cGUsIGQzZHNpemU+OjpjYXBm
bGFnIH07CisgICAgZW51bSB7IGRlY2xmbGFnID0gVmVydGV4VHlwZUZsYWdzPGQzZHR5cGUsIGQz
ZHNpemU+OjpkZWNsZmxhZyB9OworfTsKKworLy8gSW5pdGlhbGl6ZSBhIFRyYW5zbGF0aW9uSW5m
bworI2RlZmluZSBUUkFOU0xBVElPTih0eXBlLCBub3JtLCBzaXplLCBwcmVmZXJyZWQpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBDb252ZXJ0ZXI8dHlwZSwgbm9ybSwgc2l6ZSwgcHJlZmVycmVkPjo6aWRl
bnRpdHksICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDb252ZXJ0ZXI8dHlw
ZSwgbm9ybSwgc2l6ZSwgcHJlZmVycmVkPjo6ZmluYWxTaXplLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBDb252ZXJ0ZXI8dHlwZSwgbm9ybSwgc2l6ZSwgcHJlZmVycmVkPjo6
Y29udmVydEFycmF5LCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0aWNfY2Fz
dDxEM0RERUNMVFlQRT4oQ29udmVydGVyPHR5cGUsIG5vcm0sIHNpemUsIHByZWZlcnJlZD46OmRl
Y2xmbGFnKSAgXAorICAgIH0KKworI2RlZmluZSBUUkFOU0xBVElPTl9GT1JfVFlQRV9OT1JNX1NJ
WkUodHlwZSwgbm9ybSwgc2l6ZSkgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDb252ZXJ0ZXI8dHlwZSwg
bm9ybSwgc2l6ZSwgVXNlUHJlZmVycmVkPjo6Y2FwZmxhZywgXAorICAgICAgICBUUkFOU0xBVElP
Tih0eXBlLCBub3JtLCBzaXplLCBVc2VQcmVmZXJyZWQpLCAgICAgICAgXAorICAgICAgICBUUkFO
U0xBVElPTih0eXBlLCBub3JtLCBzaXplLCBVc2VGYWxsYmFjaykgICAgICAgICAgXAorICAgIH0K
KworI2RlZmluZSBUUkFOU0xBVElPTlNfRk9SX1RZUEUodHlwZSkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICB7IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0la
RSh0eXBlLCBmYWxzZSwgMSksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBm
YWxzZSwgMiksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMyks
IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgNCkgfSwgXAorICAg
ICAgICB7IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCB0cnVlLCAxKSwgVFJB
TlNMQVRJT05fRk9SX1RZUEVfTk9STV9TSVpFKHR5cGUsIHRydWUsIDIpLCBUUkFOU0xBVElPTl9G
T1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgdHJ1ZSwgMyksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05P
Uk1fU0laRSh0eXBlLCB0cnVlLCA0KSB9LCAgICAgXAorICAgIH0KKworI2RlZmluZSBUUkFOU0xB
VElPTlNfRk9SX1RZUEVfTk9fTk9STSh0eXBlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICB7IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMSks
IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMiksIFRSQU5TTEFU
SU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMyksIFRSQU5TTEFUSU9OX0ZPUl9U
WVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgNCkgfSwgXAorICAgICAgICB7IFRSQU5TTEFUSU9O
X0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMSksIFRSQU5TTEFUSU9OX0ZPUl9UWVBF
X05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMiksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0la
RSh0eXBlLCBmYWxzZSwgMyksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBm
YWxzZSwgNCkgfSwgXAorICAgIH0KKworY29uc3QgVmVydGV4QnVmZmVyOTo6VHJhbnNsYXRpb25E
ZXNjcmlwdGlvbiBWZXJ0ZXhCdWZmZXI5OjptUG9zc2libGVUcmFuc2xhdGlvbnNbTlVNX0dMX1ZF
UlRFWF9BVFRSSUJfVFlQRVNdWzJdWzRdID0gLy8gW0dMIHR5cGVzIGFzIGVudW1lcmF0ZWQgYnkg
dHlwZUluZGV4KCldW25vcm1hbGl6ZWRdW3NpemUtMV0KK3sKKyAgICBUUkFOU0xBVElPTlNfRk9S
X1RZUEUoR0xfQllURSksCisgICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBFKEdMX1VOU0lHTkVEX0JZ
VEUpLAorICAgIFRSQU5TTEFUSU9OU19GT1JfVFlQRShHTF9TSE9SVCksCisgICAgVFJBTlNMQVRJ
T05TX0ZPUl9UWVBFKEdMX1VOU0lHTkVEX1NIT1JUKSwKKyAgICBUUkFOU0xBVElPTlNfRk9SX1RZ
UEVfTk9fTk9STShHTF9GSVhFRCksCisgICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBFX05PX05PUk0o
R0xfRkxPQVQpCit9OworCit2b2lkIFZlcnRleEJ1ZmZlcjk6OmluaXRpYWxpemVUcmFuc2xhdGlv
bnMoRFdPUkQgZGVjbFR5cGVzKQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
TlVNX0dMX1ZFUlRFWF9BVFRSSUJfVFlQRVM7IGkrKykKKyAgICB7CisgICAgICAgIGZvciAodW5z
aWduZWQgaW50IGogPSAwOyBqIDwgMjsgaisrKQorICAgICAgICB7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBrID0gMDsgayA8IDQ7IGsrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAobVBvc3NpYmxlVHJhbnNsYXRpb25zW2ldW2pdW2tdLmNhcHNGbGFnID09IDAg
fHwgKGRlY2xUeXBlcyAmIG1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tpXVtqXVtrXS5jYXBzRmxhZykg
IT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1Gb3JtYXRDb252
ZXJ0ZXJzW2ldW2pdW2tdID0gbVBvc3NpYmxlVHJhbnNsYXRpb25zW2ldW2pdW2tdLnByZWZlcnJl
ZENvbnZlcnNpb247CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1Gb3JtYXRDb252ZXJ0ZXJzW2ld
W2pdW2tdID0gbVBvc3NpYmxlVHJhbnNsYXRpb25zW2ldW2pdW2tdLmZhbGxiYWNrQ29udmVyc2lv
bjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3Vuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXI5Ojp0eXBlSW5kZXgoR0xlbnVtIHR5cGUpCit7
CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfQllURTogcmV0dXJuIDA7
CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6IHJldHVybiAxOworICAgICAgY2FzZSBHTF9T
SE9SVDogcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOiByZXR1cm4gMzsK
KyAgICAgIGNhc2UgR0xfRklYRUQ6IHJldHVybiA0OworICAgICAgY2FzZSBHTF9GTE9BVDogcmV0
dXJuIDU7CisKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IHJldHVybiA1OworICAgIH0K
K30KKworY29uc3QgVmVydGV4QnVmZmVyOTo6Rm9ybWF0Q29udmVydGVyICZWZXJ0ZXhCdWZmZXI5
Ojpmb3JtYXRDb252ZXJ0ZXIoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlKQor
eworICAgIHJldHVybiBtRm9ybWF0Q29udmVydGVyc1t0eXBlSW5kZXgoYXR0cmlidXRlLm1UeXBl
KV1bYXR0cmlidXRlLm1Ob3JtYWxpemVkXVthdHRyaWJ1dGUubVNpemUgLSAxXTsKK30KKwordW5z
aWduZWQgaW50IFZlcnRleEJ1ZmZlcjk6OnNwYWNlUmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0
dHJpYnV0ZSAmYXR0cmliLCBzdGQ6OnNpemVfdCBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpCit7
CisgICAgdW5zaWduZWQgaW50IGVsZW1lbnRTaXplID0gZm9ybWF0Q29udmVydGVyKGF0dHJpYiku
b3V0cHV0RWxlbWVudFNpemU7CisKKyAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmliLm1E
aXZpc29yID09IDApCisgICAgeworICAgICAgICByZXR1cm4gZWxlbWVudFNpemUgKiBjb3VudDsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRTaXplICogKChp
bnN0YW5jZXMgKyBhdHRyaWIubURpdmlzb3IgLSAxKSAvIGF0dHJpYi5tRGl2aXNvcik7CisgICAg
fQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1ZlcnRleEJ1ZmZlcjkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4
QnVmZmVyOS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkwIEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyBWZXJ0ZXhCdWZmZXI5Lmg6IERlZmluZXMgdGhlIEQzRDkgVmVydGV4QnVmZmVyIGlt
cGxlbWVudGF0aW9uLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVI5
X0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVI5X0hfCisKKyNpbmNs
dWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmgiCisKK25hbWVzcGFjZSByeAor
eworY2xhc3MgUmVuZGVyZXI5OworCitjbGFzcyBWZXJ0ZXhCdWZmZXI5IDogcHVibGljIFZlcnRl
eEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgVmVydGV4QnVmZmVyOShyeDo6UmVu
ZGVyZXI5ICpjb25zdCByZW5kZXJlcik7CisgICAgdmlydHVhbCB+VmVydGV4QnVmZmVyOSgpOwor
CisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUodW5zaWduZWQgaW50IHNpemUsIGJvb2wgZHlu
YW1pY1VzYWdlKTsKKworICAgIHN0YXRpYyBWZXJ0ZXhCdWZmZXI5ICptYWtlVmVydGV4QnVmZmVy
OShWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlcik7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3RvcmVW
ZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQg
c3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9mZnNldCk7CisgICAgdmlydHVh
bCBib29sIHN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwg
dW5zaWduZWQgaW50IG9mZnNldCk7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRTcGFj
ZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xzaXplaSBjb3Vu
dCwgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIHJlcXVpcmVz
Q29udmVyc2lvbihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0OworCisg
ICAgdW5zaWduZWQgaW50IGdldFZlcnRleFNpemUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAm
YXR0cmliKSBjb25zdDsKKyAgICBEM0RERUNMVFlQRSBnZXREZWNsVHlwZShjb25zdCBnbDo6VmVy
dGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0OworCisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQg
Z2V0QnVmZmVyU2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzZXRCdWZmZXJTaXplKHVu
c2lnbmVkIGludCBzaXplKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGlzY2FyZCgpOworCisgICAgSURp
cmVjdDNEVmVydGV4QnVmZmVyOSAqZ2V0QnVmZmVyKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVmVydGV4QnVmZmVyOSk7CisKKyAgICByeDo6UmVu
ZGVyZXI5ICpjb25zdCBtUmVuZGVyZXI7CisKKyAgICBJRGlyZWN0M0RWZXJ0ZXhCdWZmZXI5ICpt
VmVydGV4QnVmZmVyOworICAgIHVuc2lnbmVkIGludCBtQnVmZmVyU2l6ZTsKKyAgICBib29sIG1E
eW5hbWljVXNhZ2U7CisKKyAgICAvLyBBdHRyaWJ1dGUgZm9ybWF0IGNvbnZlcnNpb24KKyAgICBl
bnVtIHsgTlVNX0dMX1ZFUlRFWF9BVFRSSUJfVFlQRVMgPSA2IH07CisKKyAgICBzdHJ1Y3QgRm9y
bWF0Q29udmVydGVyCisgICAgeworICAgICAgICBib29sIGlkZW50aXR5OworICAgICAgICBzdGQ6
OnNpemVfdCBvdXRwdXRFbGVtZW50U2l6ZTsKKyAgICAgICAgdm9pZCAoKmNvbnZlcnRBcnJheSko
Y29uc3Qgdm9pZCAqaW4sIHN0ZDo6c2l6ZV90IHN0cmlkZSwgc3RkOjpzaXplX3Qgbiwgdm9pZCAq
b3V0KTsKKyAgICAgICAgRDNEREVDTFRZUEUgZDNkRGVjbFR5cGU7CisgICAgfTsKKworICAgIHN0
YXRpYyBib29sIG1UcmFuc2xhdGlvbnNJbml0aWFsaXplZDsKKyAgICBzdGF0aWMgdm9pZCBpbml0
aWFsaXplVHJhbnNsYXRpb25zKERXT1JEIGRlY2xUeXBlcyk7CisKKyAgICAvLyBbR0wgdHlwZXMg
YXMgZW51bWVyYXRlZCBieSB0eXBlSW5kZXgoKV1bbm9ybWFsaXplZF1bc2l6ZSAtIDFdCisgICAg
c3RhdGljIEZvcm1hdENvbnZlcnRlciBtRm9ybWF0Q29udmVydGVyc1tOVU1fR0xfVkVSVEVYX0FU
VFJJQl9UWVBFU11bMl1bNF07CisKKyAgICBzdHJ1Y3QgVHJhbnNsYXRpb25EZXNjcmlwdGlvbgor
ICAgIHsKKyAgICAgICAgRFdPUkQgY2Fwc0ZsYWc7CisgICAgICAgIEZvcm1hdENvbnZlcnRlciBw
cmVmZXJyZWRDb252ZXJzaW9uOworICAgICAgICBGb3JtYXRDb252ZXJ0ZXIgZmFsbGJhY2tDb252
ZXJzaW9uOworICAgIH07CisKKyAgICAvLyBUaGlzIHRhYmxlIGlzIHVzZWQgdG8gZ2VuZXJhdGUg
bUZvcm1hdENvbnZlcnRlcnMuCisgICAgLy8gW0dMIHR5cGVzIGFzIGVudW1lcmF0ZWQgYnkgdHlw
ZUluZGV4KCldW25vcm1hbGl6ZWRdW3NpemUgLSAxXQorICAgIHN0YXRpYyBjb25zdCBUcmFuc2xh
dGlvbkRlc2NyaXB0aW9uIG1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tOVU1fR0xfVkVSVEVYX0FUVFJJ
Ql9UWVBFU11bMl1bNF07CisKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IHR5cGVJbmRleChHTGVu
dW0gdHlwZSk7CisgICAgc3RhdGljIGNvbnN0IEZvcm1hdENvbnZlcnRlciAmZm9ybWF0Q29udmVy
dGVyKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSk7CisKKyAgICBzdGF0aWMg
dW5zaWduZWQgaW50IHNwYWNlUmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0
cmliLCBzdGQ6OnNpemVfdCBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworfTsKKworfQorCisj
ZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1ZFUlRFWEJVRkZFUjlfSF8KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDE4IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisvLyBWZXJ0ZXhCdWZmZXIxMS5jcHA6IERlZmluZXMgdGhlIEQzRDExIFZl
cnRleEJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9WZXJ0ZXhCdWZmZXIxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJT
dG9yYWdlLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvQnVmZmVyLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvQ29udGV4
dC5oIgorCituYW1lc3BhY2UgcngKK3sKKworVmVydGV4QnVmZmVyMTE6OlZlcnRleEJ1ZmZlcjEx
KHJ4OjpSZW5kZXJlcjExICpjb25zdCByZW5kZXJlcikgOiBtUmVuZGVyZXIocmVuZGVyZXIpCit7
CisgICAgbUJ1ZmZlciA9IE5VTEw7CisgICAgbUJ1ZmZlclNpemUgPSAwOworICAgIG1EeW5hbWlj
VXNhZ2UgPSBmYWxzZTsKK30KKworVmVydGV4QnVmZmVyMTE6On5WZXJ0ZXhCdWZmZXIxMSgpCit7
CisgICAgaWYgKG1CdWZmZXIpCisgICAgeworICAgICAgICBtQnVmZmVyLT5SZWxlYXNlKCk7Cisg
ICAgICAgIG1CdWZmZXIgPSBOVUxMOworICAgIH0KK30KKworYm9vbCBWZXJ0ZXhCdWZmZXIxMTo6
aW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQgc2l6ZSwgYm9vbCBkeW5hbWljVXNhZ2UpCit7CisgICAg
aWYgKG1CdWZmZXIpCisgICAgeworICAgICAgICBtQnVmZmVyLT5SZWxlYXNlKCk7CisgICAgICAg
IG1CdWZmZXIgPSBOVUxMOworICAgIH0KKworICAgIHVwZGF0ZVNlcmlhbCgpOworCisgICAgaWYg
KHNpemUgPiAwKQorICAgIHsKKyAgICAgICAgSUQzRDExRGV2aWNlKiBkeERldmljZSA9IG1SZW5k
ZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgYnVmZmVyRGVz
YzsKKyAgICAgICAgYnVmZmVyRGVzYy5CeXRlV2lkdGggPSBzaXplOworICAgICAgICBidWZmZXJE
ZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfRFlOQU1JQzsKKyAgICAgICAgYnVmZmVyRGVzYy5CaW5k
RmxhZ3MgPSBEM0QxMV9CSU5EX1ZFUlRFWF9CVUZGRVI7CisgICAgICAgIGJ1ZmZlckRlc2MuQ1BV
QWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOworICAgICAgICBidWZmZXJEZXNj
Lk1pc2NGbGFncyA9IDA7CisgICAgICAgIGJ1ZmZlckRlc2MuU3RydWN0dXJlQnl0ZVN0cmlkZSA9
IDA7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkeERldmljZS0+Q3JlYXRlQnVmZmVyKCZi
dWZmZXJEZXNjLCBOVUxMLCAmbUJ1ZmZlcik7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQor
CisgICAgbUJ1ZmZlclNpemUgPSBzaXplOworICAgIG1EeW5hbWljVXNhZ2UgPSBkeW5hbWljVXNh
Z2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1ZlcnRleEJ1ZmZlcjExICpWZXJ0ZXhCdWZmZXIx
MTo6bWFrZVZlcnRleEJ1ZmZlcjExKFZlcnRleEJ1ZmZlciAqdmV0ZXhCdWZmZXIpCit7CisgICAg
QVNTRVJUKEhBU19EWU5BTUlDX1RZUEUoVmVydGV4QnVmZmVyMTEqLCB2ZXRleEJ1ZmZlcikpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxWZXJ0ZXhCdWZmZXIxMSo+KHZldGV4QnVmZmVyKTsKK30K
KworYm9vbCBWZXJ0ZXhCdWZmZXIxMTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpW
ZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMs
IHVuc2lnbmVkIGludCBvZmZzZXQpCit7CisgICAgaWYgKG1CdWZmZXIpCisgICAgeworICAgICAg
ICBnbDo6QnVmZmVyICpidWZmZXIgPSBhdHRyaWIubUJvdW5kQnVmZmVyLmdldCgpOworCisgICAg
ICAgIGludCBpbnB1dFN0cmlkZSA9IGF0dHJpYi5zdHJpZGUoKTsKKyAgICAgICAgY29uc3QgVmVy
dGV4Q29udmVydGVyICZjb252ZXJ0ZXIgPSBnZXRWZXJ0ZXhDb252ZXJzaW9uKGF0dHJpYik7CisK
KyAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqZHhDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXRE
ZXZpY2VDb250ZXh0KCk7CisKKyAgICAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBl
ZFJlc291cmNlOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGR4Q29udGV4dC0+TWFwKG1CdWZm
ZXIsIDAsIEQzRDExX01BUF9XUklURV9OT19PVkVSV1JJVEUsIDAsICZtYXBwZWRSZXNvdXJjZSk7
CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJS
KCJWZXJ0ZXggYnVmZmVyIG1hcCBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgY2hhciogb3V0
cHV0ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFwcGVkUmVzb3VyY2UucERhdGEpICsgb2Zm
c2V0OworCisgICAgICAgIGNvbnN0IGNoYXIgKmlucHV0ID0gTlVMTDsKKyAgICAgICAgaWYgKGJ1
ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgQnVmZmVyU3RvcmFnZSAqc3RvcmFnZSA9IGJ1
ZmZlci0+Z2V0U3RvcmFnZSgpOworICAgICAgICAgICAgaW5wdXQgPSBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4oc3RvcmFnZS0+Z2V0RGF0YSgpKSArIHN0YXRpY19jYXN0PGludD4oYXR0cmliLm1P
ZmZzZXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
aW5wdXQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXR0cmliLm1Qb2ludGVyKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChpbnN0YW5jZXMgPT0gMCB8fCBhdHRyaWIubURpdmlzb3IgPT0g
MCkKKyAgICAgICAgeworICAgICAgICAgICAgaW5wdXQgKz0gaW5wdXRTdHJpZGUgKiBzdGFydDsK
KyAgICAgICAgfQorCisgICAgICAgIGNvbnZlcnRlci5jb252ZXJzaW9uRnVuYyhpbnB1dCwgaW5w
dXRTdHJpZGUsIGNvdW50LCBvdXRwdXQpOworCisgICAgICAgIGR4Q29udGV4dC0+VW5tYXAobUJ1
ZmZlciwgMCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIEVSUigiVmVydGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVyMTE6OnN0b3JlUmF3
RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50IG9m
ZnNldCkKK3sKKyAgICBpZiAobUJ1ZmZlcikKKyAgICB7CisgICAgICAgIElEM0QxMURldmljZUNv
bnRleHQgKmR4Q29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOworCisgICAg
ICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKKyAgICAgICAgSFJF
U1VMVCByZXN1bHQgPSBkeENvbnRleHQtPk1hcChtQnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVf
Tk9fT1ZFUldSSVRFLCAwLCAmbWFwcGVkUmVzb3VyY2UpOworICAgICAgICBpZiAoRkFJTEVEKHJl
c3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiVmVydGV4IGJ1ZmZlciBtYXAgZmFp
bGVkIHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGNoYXIqIGJ1ZmZlckRhdGEgPSBzdGF0aWNfY2FzdDxj
aGFyKj4obWFwcGVkUmVzb3VyY2UucERhdGEpOworICAgICAgICBtZW1jcHkoYnVmZmVyRGF0YSAr
IG9mZnNldCwgZGF0YSwgc2l6ZSk7CisKKyAgICAgICAgZHhDb250ZXh0LT5Vbm1hcChtQnVmZmVy
LCAwKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgRVJSKCJWZXJ0ZXggYnVmZmVyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKwordW5zaWduZWQgaW50IFZlcnRleEJ1ZmZlcjExOjpnZXRT
cGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xzaXplaSBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGluc3RhbmNlcykgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBpbnQgZWxlbWVudFNpemUgPSBn
ZXRWZXJ0ZXhDb252ZXJzaW9uKGF0dHJpYikub3V0cHV0RWxlbWVudFNpemU7CisKKyAgICBpZiAo
aW5zdGFuY2VzID09IDAgfHwgYXR0cmliLm1EaXZpc29yID09IDApCisgICAgeworICAgICAgICBy
ZXR1cm4gZWxlbWVudFNpemUgKiBjb3VudDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGVsZW1lbnRTaXplICogKChpbnN0YW5jZXMgKyBhdHRyaWIubURpdmlzb3IgLSAx
KSAvIGF0dHJpYi5tRGl2aXNvcik7CisgICAgfQorfQorCitib29sIFZlcnRleEJ1ZmZlcjExOjpy
ZXF1aXJlc0NvbnZlcnNpb24oY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25z
dAoreworICAgIHJldHVybiAhZ2V0VmVydGV4Q29udmVyc2lvbihhdHRyaWIpLmlkZW50aXR5Owor
fQorCit1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyMTE6OmdldEJ1ZmZlclNpemUoKSBjb25zdAor
eworICAgIHJldHVybiBtQnVmZmVyU2l6ZTsKK30KKworYm9vbCBWZXJ0ZXhCdWZmZXIxMTo6c2V0
QnVmZmVyU2l6ZSh1bnNpZ25lZCBpbnQgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA+IG1CdWZmZXJT
aXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluaXRpYWxpemUoc2l6ZSwgbUR5bmFtaWNVc2Fn
ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
K30KKworYm9vbCBWZXJ0ZXhCdWZmZXIxMTo6ZGlzY2FyZCgpCit7CisgICAgaWYgKG1CdWZmZXIp
CisgICAgeworICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkeENvbnRleHQgPSBtUmVuZGVy
ZXItPmdldERldmljZUNvbnRleHQoKTsKKworICAgICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VS
Q0UgbWFwcGVkUmVzb3VyY2U7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZHhDb250ZXh0LT5N
YXAobUJ1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXBwZWRSZXNvdXJj
ZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAg
RVJSKCJWZXJ0ZXggYnVmZmVyIG1hcCBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgZHhDb250
ZXh0LT5Vbm1hcChtQnVmZmVyLCAwKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgRVJSKCJWZXJ0ZXggYnVmZmVyIG5vdCBpbml0aWFsaXpl
ZC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordW5zaWduZWQgaW50IFZl
cnRleEJ1ZmZlcjExOjpnZXRWZXJ0ZXhTaXplKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0
dHJpYikgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0VmVydGV4Q29udmVyc2lvbihhdHRyaWIpLm91
dHB1dEVsZW1lbnRTaXplOworfQorCitEWEdJX0ZPUk1BVCBWZXJ0ZXhCdWZmZXIxMTo6Z2V0RFhH
SUZvcm1hdChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGdldFZlcnRleENvbnZlcnNpb24oYXR0cmliKS5keGdpRm9ybWF0OworfQorCitJRDNE
MTFCdWZmZXIgKlZlcnRleEJ1ZmZlcjExOjpnZXRCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVy
biBtQnVmZmVyOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdW5zaWduZWQgaW50IGNvbXBv
bmVudENvdW50LCBib29sIHdpZGVuLCBib29sIG5vcm1hbGl6ZWQ+CitzdGF0aWMgdm9pZCBjb3B5
VmVydGV4RGF0YShjb25zdCB2b2lkICppbnB1dCwgdW5zaWduZWQgaW50IHN0cmlkZSwgdW5zaWdu
ZWQgaW50IGNvdW50LCB2b2lkICpvdXRwdXQpCit7CisgICAgdW5zaWduZWQgaW50IGF0dHJpYlNp
emUgPSBzaXplb2YoVCkgKiBjb21wb25lbnRDb3VudDsKKworICAgIGlmIChhdHRyaWJTaXplID09
IHN0cmlkZSAmJiAhd2lkZW4pCisgICAgeworICAgICAgICBtZW1jcHkob3V0cHV0LCBpbnB1dCwg
Y291bnQgKiBhdHRyaWJTaXplKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgdW5z
aWduZWQgaW50IG91dHB1dFN0cmlkZSA9IHdpZGVuID8gNCA6IGNvbXBvbmVudENvdW50OworICAg
ICAgICBUIGRlZmF1bHRWYWwgPSBub3JtYWxpemVkID8gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6
bWF4KCkgOiBUKDEpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY291
bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgVCAqb2Zmc2V0SW5wdXQgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihp
bnB1dCkgKyBpICogc3RyaWRlKTsKKyAgICAgICAgICAgIFQgKm9mZnNldE91dHB1dCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8VCo+KG91dHB1dCkgKyBpICogb3V0cHV0U3RyaWRlOworCisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8IGNvbXBvbmVudENvdW50OyBqKyspCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgb2Zmc2V0T3V0cHV0W2pdID0gb2Zmc2V0SW5wdXRb
al07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aWRlbikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBvZmZzZXRPdXRwdXRbM10gPSBkZWZhdWx0VmFsOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dW5zaWduZWQgaW50IGNv
bXBvbmVudENvdW50Pgorc3RhdGljIHZvaWQgY29weUZpeGVkVmVydGV4RGF0YShjb25zdCB2b2lk
KiBpbnB1dCwgdW5zaWduZWQgaW50IHN0cmlkZSwgdW5zaWduZWQgaW50IGNvdW50LCB2b2lkKiBv
dXRwdXQpCit7CisgICAgc3RhdGljIGNvbnN0IGZsb2F0IGRpdmlzb3IgPSAxLjBmIC8gKDEgPDwg
MTYpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAg
IHsKKyAgICAgICAgY29uc3QgR0xmaXhlZCogb2Zmc2V0SW5wdXQgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IEdMZml4ZWQqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihpbnB1dCkgKyBz
dHJpZGUgKiBpKTsKKyAgICAgICAgZmxvYXQqIG9mZnNldE91dHB1dCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8ZmxvYXQqPihvdXRwdXQpICsgaSAqIGNvbXBvbmVudENvdW50OworCisgICAgICAgIGZvciAo
dW5zaWduZWQgaW50IGogPSAwOyBqIDwgY29tcG9uZW50Q291bnQ7IGorKykKKyAgICAgICAgewor
ICAgICAgICAgICAgb2Zmc2V0T3V0cHV0W2pdID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG9mZnNldElu
cHV0W2pdKSAqIGRpdmlzb3I7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCB1bnNpZ25lZCBpbnQgY29tcG9uZW50Q291bnQsIGJvb2wgbm9ybWFsaXplZD4KK3N0
YXRpYyB2b2lkIGNvcHlUb0Zsb2F0VmVydGV4RGF0YShjb25zdCB2b2lkKiBpbnB1dCwgdW5zaWdu
ZWQgaW50IHN0cmlkZSwgdW5zaWduZWQgaW50IGNvdW50LCB2b2lkKiBvdXRwdXQpCit7CisgICAg
dHlwZWRlZiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+IE5MOworCisgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgY29uc3QgVCAqb2Zmc2V0
SW5wdXQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihpbnB1dCkgKyBzdHJpZGUgKiBpKTsKKyAgICAgICAgZmxvYXQgKm9mZnNldE91dHB1
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihvdXRwdXQpICsgaSAqIGNvbXBvbmVudENvdW50
OworCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgY29tcG9uZW50Q291bnQ7
IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaWYgKE5MOjppc19zaWduZWQpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBkaXZpc29yID0gMS4wZiAvICgyICog
c3RhdGljX2Nhc3Q8ZmxvYXQ+KE5MOjptYXgoKSkgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0T3V0cHV0W2pdID0gKDIgKiBzdGF0aWNfY2FzdDxmbG9hdD4ob2Zmc2V0SW5wdXRbal0p
ICsgMSkgKiBkaXZpc29yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBvZmZzZXRPdXRwdXRbal0g
PSAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG9mZnNldElucHV0W2pdKSAvIE5MOjptYXgoKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgb2Zmc2V0T3V0cHV0W2pdID0gIHN0YXRpY19jYXN0PGZsb2F0
PihvZmZzZXRJbnB1dFtqXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisK
K2NvbnN0IFZlcnRleEJ1ZmZlcjExOjpWZXJ0ZXhDb252ZXJ0ZXIgVmVydGV4QnVmZmVyMTE6Om1Q
b3NzaWJsZVRyYW5zbGF0aW9uc1tOVU1fR0xfVkVSVEVYX0FUVFJJQl9UWVBFU11bMl1bNF0gPQor
eworICAgIHsgLy8gR0xfQllURQorICAgICAgICB7IC8vIHVubm9ybWFsaXplZAorICAgICAgICAg
ICAgeyAmY29weVRvRmxvYXRWZXJ0ZXhEYXRhPEdMYnl0ZSwgMSwgZmFsc2U+LCBmYWxzZSwgRFhH
SV9GT1JNQVRfUjMyX0ZMT0FULCA0IH0sCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9hdFZlcnRl
eERhdGE8R0xieXRlLCAyLCBmYWxzZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQs
IDggfSwKKyAgICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTGJ5dGUsIDMsIGZh
bHNlPiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgMTIgfSwKKyAgICAgICAg
ICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTGJ5dGUsIDQsIGZhbHNlPiwgZmFsc2UsIERY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgMTYgfSwKKyAgICAgICAgfSwKKyAgICAgICAg
eyAvLyBub3JtYWxpemVkCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxHTGJ5dGUsIDEs
IGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjhfU05PUk0sIDEgfSwKKyAgICAgICAg
ICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMYnl0ZSwgMiwgZmFsc2UsIHRydWU+LCB0cnVlLCBEWEdJ
X0ZPUk1BVF9SOEc4X1NOT1JNLCAyIH0sCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxH
TGJ5dGUsIDMsIHRydWUsIHRydWU+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0s
IDQgfSwKKyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMYnl0ZSwgNCwgZmFsc2UsIHRy
dWU+LCB0cnVlLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwgNCB9LAorICAgICAgICB9LAor
ICAgIH0sCisgICAgeyAvLyBHTF9VTlNJR05FRF9CWVRFCisgICAgICAgIHsgLy8gdW5ub3JtYWxp
emVkCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9hdFZlcnRleERhdGE8R0x1Ynl0ZSwgMSwgZmFs
c2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCA0IH0sCisgICAgICAgICAgICB7ICZj
b3B5VG9GbG9hdFZlcnRleERhdGE8R0x1Ynl0ZSwgMiwgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JN
QVRfUjMyRzMyX0ZMT0FULCA4IH0sCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9hdFZlcnRleERh
dGE8R0x1Ynl0ZSwgMywgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FU
LCAxMiB9LAorICAgICAgICAgICAgeyAmY29weVRvRmxvYXRWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDQs
IGZhbHNlPiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgMTYgfSwKKyAg
ICAgICAgfSwKKyAgICAgICAgeyAvLyBub3JtYWxpemVkCisgICAgICAgICAgICB7ICZjb3B5VmVy
dGV4RGF0YTxHTHVieXRlLCAxLCBmYWxzZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9STUFUX1I4X1VO
T1JNLCAxIH0sCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxHTHVieXRlLCAyLCBmYWxz
ZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9STUFUX1I4RzhfVU5PUk0sIDIgfSwKKyAgICAgICAgICAg
IHsgJmNvcHlWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDMsIHRydWUsIHRydWU+LCBmYWxzZSwgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk0sIDQgfSwKKyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRh
PEdMdWJ5dGUsIDQsIGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk0sIDQgfSwKKyAgICAgICAgfSwKKyAgICB9LAorICAgIHsgLy8gR0xfU0hPUlQKKyAgICAgICAg
eyAvLyB1bm5vcm1hbGl6ZWQKKyAgICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxH
THNob3J0LCAxLCBmYWxzZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsIDQgfSwKKyAg
ICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTHNob3J0LCAyLCBmYWxzZT4sIGZh
bHNlLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsIDggfSwKKyAgICAgICAgICAgIHsgJmNvcHlU
b0Zsb2F0VmVydGV4RGF0YTxHTHNob3J0LCAzLCBmYWxzZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJfRkxPQVQsIDEyIH0sCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9hdFZlcnRleERh
dGE8R0xzaG9ydCwgNCwgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZM
T0FULCAxNiB9LAorICAgICAgICB9LAorICAgICAgICB7IC8vIG5vcm1hbGl6ZWQKKyAgICAgICAg
ICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMc2hvcnQsIDEsIGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhH
SV9GT1JNQVRfUjE2X1NOT1JNLCAyIH0sCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxH
THNob3J0LCAyLCBmYWxzZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9STUFUX1IxNkcxNl9TTk9STSwg
NCB9LAorICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8R0xzaG9ydCwgMywgdHJ1ZSwgdHJ1
ZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sIDggfSwKKyAgICAgICAg
ICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMc2hvcnQsIDQsIGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNLCA4IH0sCisgICAgICAgIH0sCisgICAgfSwKKyAg
ICB7IC8vIEdMX1VOU0lHTkVEX1NIT1JUCisgICAgICAgIHsgLy8gdW5ub3JtYWxpemVkCisgICAg
ICAgICAgICB7ICZjb3B5VG9GbG9hdFZlcnRleERhdGE8R0x1c2hvcnQsIDEsIGZhbHNlPiwgZmFs
c2UsIERYR0lfRk9STUFUX1IzMl9GTE9BVCwgNCB9LAorICAgICAgICAgICAgeyAmY29weVRvRmxv
YXRWZXJ0ZXhEYXRhPEdMdXNob3J0LCAyLCBmYWxzZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJH
MzJfRkxPQVQsIDggfSwKKyAgICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTHVz
aG9ydCwgMywgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAxMiB9
LAorICAgICAgICAgICAgeyAmY29weVRvRmxvYXRWZXJ0ZXhEYXRhPEdMdXNob3J0LCA0LCBmYWxz
ZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsIDE2IH0sCisgICAgICAg
IH0sCisgICAgICAgIHsgLy8gbm9ybWFsaXplZAorICAgICAgICAgICAgeyAmY29weVZlcnRleERh
dGE8R0x1c2hvcnQsIDEsIGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjE2X1VOT1JN
LCAyIH0sCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxHTHVzaG9ydCwgMiwgZmFsc2Us
IHRydWU+LCB0cnVlLCBEWEdJX0ZPUk1BVF9SMTZHMTZfVU5PUk0sIDQgfSwKKyAgICAgICAgICAg
IHsgJmNvcHlWZXJ0ZXhEYXRhPEdMdXNob3J0LCAzLCB0cnVlLCB0cnVlPiwgZmFsc2UsIERYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwgOCB9LAorICAgICAgICAgICAgeyAmY29weVZlcnRl
eERhdGE8R0x1c2hvcnQsIDQsIGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X1VOT1JNLCA4IH0sCisgICAgICAgIH0sCisgICAgfSwKKyAgICB7IC8vIEdMX0ZJWEVE
CisgICAgICAgIHsgLy8gdW5ub3JtYWxpemVkCisgICAgICAgICAgICB7ICZjb3B5Rml4ZWRWZXJ0
ZXhEYXRhPDE+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCA0IH0sCisgICAgICAgICAg
ICB7ICZjb3B5Rml4ZWRWZXJ0ZXhEYXRhPDI+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZM
T0FULCA4IH0sCisgICAgICAgICAgICB7ICZjb3B5Rml4ZWRWZXJ0ZXhEYXRhPDM+LCBmYWxzZSwg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAxMiB9LAorICAgICAgICAgICAgeyAmY29weUZp
eGVkVmVydGV4RGF0YTw0PiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwg
MTYgfSwKKyAgICAgICAgfSwKKyAgICAgICAgeyAvLyBub3JtYWxpemVkCisgICAgICAgICAgICB7
ICZjb3B5Rml4ZWRWZXJ0ZXhEYXRhPDE+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCA0
IH0sCisgICAgICAgICAgICB7ICZjb3B5Rml4ZWRWZXJ0ZXhEYXRhPDI+LCBmYWxzZSwgRFhHSV9G
T1JNQVRfUjMyRzMyX0ZMT0FULCA4IH0sCisgICAgICAgICAgICB7ICZjb3B5Rml4ZWRWZXJ0ZXhE
YXRhPDM+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAxMiB9LAorICAgICAg
ICAgICAgeyAmY29weUZpeGVkVmVydGV4RGF0YTw0PiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkcz
MkIzMkEzMl9GTE9BVCwgMTYgfSwKKyAgICAgICAgfSwKKyAgICB9LAorICAgIHsgLy8gR0xfRkxP
QVQKKyAgICAgICAgeyAvLyB1bm5vcm1hbGl6ZWQKKyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhE
YXRhPEdMZmxvYXQsIDEsIGZhbHNlLCBmYWxzZT4sIHRydWUsIERYR0lfRk9STUFUX1IzMl9GTE9B
VCwgNCB9LAorICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8R0xmbG9hdCwgMiwgZmFsc2Us
IGZhbHNlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCA4IH0sCisgICAgICAgICAg
ICB7ICZjb3B5VmVydGV4RGF0YTxHTGZsb2F0LCAzLCBmYWxzZSwgZmFsc2U+LCB0cnVlLCBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsIDEyIH0sCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4
RGF0YTxHTGZsb2F0LCA0LCBmYWxzZSwgZmFsc2U+LCB0cnVlLCBEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJBMzJfRkxPQVQsIDE2IH0sCisgICAgICAgIH0sCisgICAgICAgIHsgLy8gbm9ybWFsaXplZAor
ICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8R0xmbG9hdCwgMSwgZmFsc2UsIGZhbHNlPiwg
dHJ1ZSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCA0IH0sCisgICAgICAgICAgICB7ICZjb3B5VmVy
dGV4RGF0YTxHTGZsb2F0LCAyLCBmYWxzZSwgZmFsc2U+LCB0cnVlLCBEWEdJX0ZPUk1BVF9SMzJH
MzJfRkxPQVQsIDggfSwKKyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMZmxvYXQsIDMs
IGZhbHNlLCBmYWxzZT4sIHRydWUsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgMTIgfSwK
KyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMZmxvYXQsIDQsIGZhbHNlLCBmYWxzZT4s
IHRydWUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgMTYgfSwKKyAgICAgICAgfSwK
KyAgICB9LAorfTsKKworY29uc3QgVmVydGV4QnVmZmVyMTE6OlZlcnRleENvbnZlcnRlciAmVmVy
dGV4QnVmZmVyMTE6OmdldFZlcnRleENvbnZlcnNpb24oY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0
ZSAmYXR0cmlidXRlKQoreworICAgIHVuc2lnbmVkIGludCB0eXBlSW5kZXggPSAwOworICAgIHN3
aXRjaCAoYXR0cmlidXRlLm1UeXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfQllURTogICAgICAg
ICAgICAgdHlwZUluZGV4ID0gMDsgYnJlYWs7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6
ICAgIHR5cGVJbmRleCA9IDE7IGJyZWFrOworICAgICAgY2FzZSBHTF9TSE9SVDogICAgICAgICAg
ICB0eXBlSW5kZXggPSAyOyBicmVhazsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6ICAg
dHlwZUluZGV4ID0gMzsgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZJWEVEOiAgICAgICAgICAgIHR5
cGVJbmRleCA9IDQ7IGJyZWFrOworICAgICAgY2FzZSBHTF9GTE9BVDogICAgICAgICAgICB0eXBl
SW5kZXggPSA1OyBicmVhazsKKyAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIG1Qb3NzaWJsZVRyYW5zbGF0aW9u
c1t0eXBlSW5kZXhdW2F0dHJpYnV0ZS5tTm9ybWFsaXplZCA/IDEgOiAwXVthdHRyaWJ1dGUubVNp
emUgLSAxXTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvVmVydGV4QnVmZmVyMTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIFZlcnRleEJ1ZmZlcjExLmg6IERlZmluZXMgdGhlIEQzRDExIFZlcnRleEJ1
ZmZlciBpbXBsZW1lbnRhdGlvbi4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfVkVSVEVY
QlVGRkVSMTFfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1ZFUlRFWEJVRkZFUjExX0hf
CisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmgiCisKK25hbWVz
cGFjZSByeAoreworY2xhc3MgUmVuZGVyZXIxMTsKKworY2xhc3MgVmVydGV4QnVmZmVyMTEgOiBw
dWJsaWMgVmVydGV4QnVmZmVyCit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBWZXJ0ZXhCdWZm
ZXIxMShyeDo6UmVuZGVyZXIxMSAqY29uc3QgcmVuZGVyZXIpOworICAgIHZpcnR1YWwgflZlcnRl
eEJ1ZmZlcjExKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQg
c2l6ZSwgYm9vbCBkeW5hbWljVXNhZ2UpOworCisgICAgc3RhdGljIFZlcnRleEJ1ZmZlcjExICpt
YWtlVmVydGV4QnVmZmVyMTEoVmVydGV4QnVmZmVyICp2ZXRleEJ1ZmZlcik7CisKKyAgICB2aXJ0
dWFsIGJvb2wgc3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUg
JmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9mZnNldCk7Cisg
ICAgdmlydHVhbCBib29sIHN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBp
bnQgc2l6ZSwgdW5zaWduZWQgaW50IG9mZnNldCk7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGlu
dCBnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xz
aXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0OworCisgICAgdmlydHVhbCBib29s
IHJlcXVpcmVzQ29udmVyc2lvbihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNv
bnN0OworCisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0QnVmZmVyU2l6ZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBzZXRCdWZmZXJTaXplKHVuc2lnbmVkIGludCBzaXplKTsKKyAgICB2
aXJ0dWFsIGJvb2wgZGlzY2FyZCgpOworCisgICAgdW5zaWduZWQgaW50IGdldFZlcnRleFNpemUo
Y29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdDsKKyAgICBEWEdJX0ZPUk1B
VCBnZXREWEdJRm9ybWF0KGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3Q7
CisKKyAgICBJRDNEMTFCdWZmZXIgKmdldEJ1ZmZlcigpIGNvbnN0OworCisgIHByaXZhdGU6Cisg
ICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFZlcnRleEJ1ZmZlcjExKTsKKworICAgIHJ4OjpS
ZW5kZXJlcjExICpjb25zdCBtUmVuZGVyZXI7CisKKyAgICBJRDNEMTFCdWZmZXIgKm1CdWZmZXI7
CisgICAgdW5zaWduZWQgaW50IG1CdWZmZXJTaXplOworICAgIGJvb2wgbUR5bmFtaWNVc2FnZTsK
KworICAgIHR5cGVkZWYgdm9pZCAoKlZlcnRleENvbnZlcnNpb25GdW5jdGlvbikoY29uc3Qgdm9p
ZCAqLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgdm9pZCAqKTsKKyAgICBzdHJ1Y3QgVmVy
dGV4Q29udmVydGVyCisgICAgeworICAgICAgICBWZXJ0ZXhDb252ZXJzaW9uRnVuY3Rpb24gY29u
dmVyc2lvbkZ1bmM7CisgICAgICAgIGJvb2wgaWRlbnRpdHk7CisgICAgICAgIERYR0lfRk9STUFU
IGR4Z2lGb3JtYXQ7CisgICAgICAgIHVuc2lnbmVkIGludCBvdXRwdXRFbGVtZW50U2l6ZTsKKyAg
ICB9OworCisgICAgZW51bSB7IE5VTV9HTF9WRVJURVhfQVRUUklCX1RZUEVTID0gNiB9OworCisg
ICAgLy8gVGhpcyB0YWJsZSBpcyB1c2VkIHRvIGdlbmVyYXRlIG1BdHRyaWJ1dGVUeXBlcy4KKyAg
ICBzdGF0aWMgY29uc3QgVmVydGV4Q29udmVydGVyIG1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tOVU1f
R0xfVkVSVEVYX0FUVFJJQl9UWVBFU11bMl1bNF07IC8vIFtHTCB0eXBlcyBhcyBlbnVtZXJhdGVk
IGJ5IHR5cGVJbmRleCgpXVtub3JtYWxpemVkXVtzaXplIC0gMV0KKworICAgIHN0YXRpYyBjb25z
dCBWZXJ0ZXhDb252ZXJ0ZXIgJmdldFZlcnRleENvbnZlcnNpb24oY29uc3QgZ2w6OlZlcnRleEF0
dHJpYnV0ZSAmYXR0cmlidXRlKTsKK307CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5E
RVJFUl9WRVJURVhCVUZGRVIxMV9IXwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVm
ZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjQ1IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIFZlcnRleEJ1ZmZlci5jcHA6IERlZmluZXMgdGhlIGFic3Ry
YWN0IFZlcnRleEJ1ZmZlciBjbGFzcyBhbmQgVmVydGV4QnVmZmVySW50ZXJmYWNlCisvLyBjbGFz
cyB3aXRoIGRlcml2YXRpb25zLCBjbGFzc2VzIHRoYXQgcGVyZm9ybSBncmFwaGljcyBBUEkgYWdu
b3N0aWMgdmVydGV4IGJ1ZmZlciBvcGVyYXRpb25zLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3Jl
bmRlcmVyL1ZlcnRleEJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5k
ZXJlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9Db250ZXh0LmgiCisKK25hbWVzcGFjZSByeAor
eworCit1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyOjptTmV4dFNlcmlhbCA9IDE7CisKK1ZlcnRl
eEJ1ZmZlcjo6VmVydGV4QnVmZmVyKCkKK3sKKyAgICB1cGRhdGVTZXJpYWwoKTsKK30KKworVmVy
dGV4QnVmZmVyOjp+VmVydGV4QnVmZmVyKCkKK3sKK30KKwordm9pZCBWZXJ0ZXhCdWZmZXI6OnVw
ZGF0ZVNlcmlhbCgpCit7CisgICAgbVNlcmlhbCA9IG1OZXh0U2VyaWFsKys7Cit9CisKK3Vuc2ln
bmVkIGludCBWZXJ0ZXhCdWZmZXI6OmdldFNlcmlhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1T
ZXJpYWw7Cit9CisKK1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6VmVydGV4QnVmZmVySW50ZXJmYWNl
KHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIGJvb2wgZHluYW1pYykgOiBtUmVuZGVyZXIocmVuZGVy
ZXIpCit7CisgICAgbUR5bmFtaWMgPSBkeW5hbWljOworICAgIG1Xcml0ZVBvc2l0aW9uID0gMDsK
KyAgICBtUmVzZXJ2ZWRTcGFjZSA9IDA7CisKKyAgICBtVmVydGV4QnVmZmVyID0gcmVuZGVyZXIt
PmNyZWF0ZVZlcnRleEJ1ZmZlcigpOworfQorCitWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6On5WZXJ0
ZXhCdWZmZXJJbnRlcmZhY2UoKQoreworICAgIGRlbGV0ZSBtVmVydGV4QnVmZmVyOworfQorCit1
bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVySW50ZXJmYWNlOjpnZXRTZXJpYWwoKSBjb25zdAorewor
ICAgIHJldHVybiBtVmVydGV4QnVmZmVyLT5nZXRTZXJpYWwoKTsKK30KKwordW5zaWduZWQgaW50
IFZlcnRleEJ1ZmZlckludGVyZmFjZTo6Z2V0QnVmZmVyU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1WZXJ0ZXhCdWZmZXItPmdldEJ1ZmZlclNpemUoKTsKK30KKworYm9vbCBWZXJ0ZXhCdWZm
ZXJJbnRlcmZhY2U6OnNldEJ1ZmZlclNpemUodW5zaWduZWQgaW50IHNpemUpCit7CisgICAgaWYg
KG1WZXJ0ZXhCdWZmZXItPmdldEJ1ZmZlclNpemUoKSA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1WZXJ0ZXhCdWZmZXItPmluaXRpYWxpemUoc2l6ZSwgbUR5bmFtaWMpOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gbVZlcnRleEJ1ZmZlci0+c2V0QnVmZmVyU2l6
ZShzaXplKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6
OmdldFdyaXRlUG9zaXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtV3JpdGVQb3NpdGlvbjsK
K30KKwordm9pZCBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnNldFdyaXRlUG9zaXRpb24odW5zaWdu
ZWQgaW50IHdyaXRlUG9zaXRpb24pCit7CisgICAgbVdyaXRlUG9zaXRpb24gPSB3cml0ZVBvc2l0
aW9uOworfQorCitib29sIFZlcnRleEJ1ZmZlckludGVyZmFjZTo6ZGlzY2FyZCgpCit7CisgICAg
cmV0dXJuIG1WZXJ0ZXhCdWZmZXItPmRpc2NhcmQoKTsKK30KKworaW50IFZlcnRleEJ1ZmZlcklu
dGVyZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUg
JmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKQor
eworICAgIGlmICghcmVzZXJ2ZVNwYWNlKG1SZXNlcnZlZFNwYWNlKSkKKyAgICB7CisgICAgICAg
IHJldHVybiAtMTsKKyAgICB9CisgICAgbVJlc2VydmVkU3BhY2UgPSAwOworCisgICAgaWYgKCFt
VmVydGV4QnVmZmVyLT5zdG9yZVZlcnRleEF0dHJpYnV0ZXMoYXR0cmliLCBzdGFydCwgY291bnQs
IGluc3RhbmNlcywgbVdyaXRlUG9zaXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJuIC0xOwor
ICAgIH0KKworICAgIGludCBvbGRXcml0ZVBvcyA9IHN0YXRpY19jYXN0PGludD4obVdyaXRlUG9z
aXRpb24pOworICAgIG1Xcml0ZVBvc2l0aW9uICs9IG1WZXJ0ZXhCdWZmZXItPmdldFNwYWNlUmVx
dWlyZWQoYXR0cmliLCBjb3VudCwgaW5zdGFuY2VzKTsKKworICAgIHJldHVybiBvbGRXcml0ZVBv
czsKK30KKworaW50IFZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVSYXdEYXRhKGNvbnN0IHZv
aWQqIGRhdGEsIHVuc2lnbmVkIGludCBzaXplKQoreworICAgIGlmICghcmVzZXJ2ZVNwYWNlKG1S
ZXNlcnZlZFNwYWNlKSkKKyAgICB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbVJl
c2VydmVkU3BhY2UgPSAwOworCisgICAgaWYgKCFtVmVydGV4QnVmZmVyLT5zdG9yZVJhd0RhdGEo
ZGF0YSwgc2l6ZSwgbVdyaXRlUG9zaXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJuIC0xOwor
ICAgIH0KKworICAgIGludCBvbGRXcml0ZVBvcyA9IHN0YXRpY19jYXN0PGludD4obVdyaXRlUG9z
aXRpb24pOworICAgIG1Xcml0ZVBvc2l0aW9uICs9IHNpemU7CisKKyAgICByZXR1cm4gb2xkV3Jp
dGVQb3M7Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZlVmVydGV4U3Bh
Y2UoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBHTHNpemVpIGNvdW50LCBH
THNpemVpIGluc3RhbmNlcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgcmVxdWlyZWRTcGFjZSA9IG1W
ZXJ0ZXhCdWZmZXItPmdldFNwYWNlUmVxdWlyZWQoYXR0cmlidXRlLCBjb3VudCwgaW5zdGFuY2Vz
KTsKKworICAgIC8vIFByb3RlY3QgYWdhaW5zdCBpbnRlZ2VyIG92ZXJmbG93CisgICAgaWYgKG1S
ZXNlcnZlZFNwYWNlICsgcmVxdWlyZWRTcGFjZSA8IG1SZXNlcnZlZFNwYWNlKQorICAgIHsKKyAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtUmVzZXJ2ZWRTcGFjZSArPSByZXF1
aXJlZFNwYWNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZlcnRleEJ1ZmZlckludGVy
ZmFjZTo6cmVzZXJ2ZVJhd0RhdGFTcGFjZSh1bnNpZ25lZCBpbnQgc2l6ZSkKK3sKKyAgICAvLyBQ
cm90ZWN0IGFnYWluc3QgaW50ZWdlciBvdmVyZmxvdworICAgIGlmIChtUmVzZXJ2ZWRTcGFjZSAr
IHNpemUgPCBtUmVzZXJ2ZWRTcGFjZSkKKyAgICB7CisgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgbVJlc2VydmVkU3BhY2UgKz0gc2l6ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworVmVydGV4QnVmZmVyKiBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OmdldFZlcnRleEJ1ZmZlcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1WZXJ0ZXhCdWZmZXI7Cit9CisKKworU3RyZWFtaW5nVmVy
dGV4QnVmZmVySW50ZXJmYWNlOjpTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2Uocng6OlJl
bmRlcmVyICpyZW5kZXJlciwgc3RkOjpzaXplX3QgaW5pdGlhbFNpemUpIDogVmVydGV4QnVmZmVy
SW50ZXJmYWNlKHJlbmRlcmVyLCB0cnVlKQoreworICAgIHNldEJ1ZmZlclNpemUoaW5pdGlhbFNp
emUpOworfQorCitTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6On5TdHJlYW1pbmdWZXJ0
ZXhCdWZmZXJJbnRlcmZhY2UoKQoreworfQorCitib29sIFN0cmVhbWluZ1ZlcnRleEJ1ZmZlcklu
dGVyZmFjZTo6cmVzZXJ2ZVNwYWNlKHVuc2lnbmVkIGludCBzaXplKQoreworICAgIGJvb2wgcmVz
dWx0ID0gdHJ1ZTsKKyAgICB1bnNpZ25lZCBpbnQgY3VyQnVmZmVyU2l6ZSA9IGdldEJ1ZmZlclNp
emUoKTsKKyAgICBpZiAoc2l6ZSA+IGN1ckJ1ZmZlclNpemUpCisgICAgeworICAgICAgICByZXN1
bHQgPSBzZXRCdWZmZXJTaXplKHN0ZDo6bWF4KHNpemUsIDMgKiBjdXJCdWZmZXJTaXplIC8gMikp
OworICAgICAgICBzZXRXcml0ZVBvc2l0aW9uKDApOworICAgIH0KKyAgICBlbHNlIGlmIChnZXRX
cml0ZVBvc2l0aW9uKCkgKyBzaXplID4gY3VyQnVmZmVyU2l6ZSkKKyAgICB7CisgICAgICAgIGlm
ICghZGlzY2FyZCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgc2V0V3JpdGVQb3NpdGlvbigwKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OlN0YXRpY1ZlcnRleEJ1
ZmZlckludGVyZmFjZShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKSA6IFZlcnRleEJ1ZmZlckludGVy
ZmFjZShyZW5kZXJlciwgZmFsc2UpCit7Cit9CisKK1N0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFj
ZTo6flN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSgpCit7Cit9CisKK2ludCBTdGF0aWNWZXJ0
ZXhCdWZmZXJJbnRlcmZhY2U6Omxvb2t1cEF0dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4QXR0cmli
dXRlICZhdHRyaWJ1dGUpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgZWxlbWVudCA9IDA7IGVs
ZW1lbnQgPCBtQ2FjaGUuc2l6ZSgpOyBlbGVtZW50KyspCisgICAgeworICAgICAgICBpZiAobUNh
Y2hlW2VsZW1lbnRdLnR5cGUgPT0gYXR0cmlidXRlLm1UeXBlICYmCisgICAgICAgICAgICBtQ2Fj
aGVbZWxlbWVudF0uc2l6ZSA9PSBhdHRyaWJ1dGUubVNpemUgJiYKKyAgICAgICAgICAgIG1DYWNo
ZVtlbGVtZW50XS5zdHJpZGUgPT0gYXR0cmlidXRlLnN0cmlkZSgpICYmCisgICAgICAgICAgICBt
Q2FjaGVbZWxlbWVudF0ubm9ybWFsaXplZCA9PSBhdHRyaWJ1dGUubU5vcm1hbGl6ZWQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChtQ2FjaGVbZWxlbWVudF0uYXR0cmlidXRlT2Zmc2V0ID09
IGF0dHJpYnV0ZS5tT2Zmc2V0ICUgYXR0cmlidXRlLnN0cmlkZSgpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBtQ2FjaGVbZWxlbWVudF0uc3RyZWFtT2Zmc2V0OworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCitib29s
IFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2ZVNwYWNlKHVuc2lnbmVkIGludCBz
aXplKQoreworICAgIHVuc2lnbmVkIGludCBjdXJTaXplID0gZ2V0QnVmZmVyU2l6ZSgpOworICAg
IGlmIChjdXJTaXplID09IDApCisgICAgeworICAgICAgICBzZXRCdWZmZXJTaXplKHNpemUpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZSBpZiAoY3VyU2l6ZSA+PSBzaXpl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7ICAgLy8gU3RhdGljIHZlcnRleCBidWZmZXJzIGNhbid0IGJl
IHJlc2l6ZWQKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW50IFN0YXRpY1Zl
cnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0
ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkg
aW5zdGFuY2VzKQoreworICAgIGludCBhdHRyaWJ1dGVPZmZzZXQgPSBhdHRyaWIubU9mZnNldCAl
IGF0dHJpYi5zdHJpZGUoKTsKKyAgICBWZXJ0ZXhFbGVtZW50IGVsZW1lbnQgPSB7IGF0dHJpYi5t
VHlwZSwgYXR0cmliLm1TaXplLCBhdHRyaWIuc3RyaWRlKCksIGF0dHJpYi5tTm9ybWFsaXplZCwg
YXR0cmlidXRlT2Zmc2V0LCBnZXRXcml0ZVBvc2l0aW9uKCkgfTsKKyAgICBtQ2FjaGUucHVzaF9i
YWNrKGVsZW1lbnQpOworCisgICAgcmV0dXJuIFZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVW
ZXJ0ZXhBdHRyaWJ1dGVzKGF0dHJpYiwgc3RhcnQsIGNvdW50LCBpbnN0YW5jZXMpOworfQorCit9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Zl
cnRleEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzOCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVmVy
dGV4QnVmZmVyLmg6IERlZmluZXMgdGhlIGFic3RyYWN0IFZlcnRleEJ1ZmZlciBjbGFzcyBhbmQg
VmVydGV4QnVmZmVySW50ZXJmYWNlCisvLyBjbGFzcyB3aXRoIGRlcml2YXRpb25zLCBjbGFzc2Vz
IHRoYXQgcGVyZm9ybSBncmFwaGljcyBBUEkgYWdub3N0aWMgdmVydGV4IGJ1ZmZlciBvcGVyYXRp
b25zLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVJfSF8KKyNkZWZp
bmUgTElCR0xFU1YyX1JFTkRFUkVSX1ZFUlRFWEJVRkZFUl9IXworCisjaW5jbHVkZSAiY29tbW9u
L2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGU7
Cit9CisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CisKK2NsYXNzIFZlcnRleEJ1
ZmZlcgoreworICBwdWJsaWM6CisgICAgVmVydGV4QnVmZmVyKCk7CisgICAgdmlydHVhbCB+VmVy
dGV4QnVmZmVyKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQg
c2l6ZSwgYm9vbCBkeW5hbWljVXNhZ2UpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzdG9yZVZl
cnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGludCBz
dGFydCwgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaW5zdGFuY2VzLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KSA9IDA7CisgICAgdmly
dHVhbCBib29sIHN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6
ZSwgdW5zaWduZWQgaW50IG9mZnNldCkgPSAwOworCisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQg
Z2V0U3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMc2l6
ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGluc3RhbmNlcykgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzQ29u
dmVyc2lvbihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldEJ1ZmZlclNpemUoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIHNldEJ1ZmZlclNpemUodW5zaWduZWQgaW50IHNpemUpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgZGlzY2FyZCgpID0gMDsKKworICAgIHVuc2lnbmVkIGludCBnZXRTZXJpYWwo
KSBjb25zdDsKKworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVTZXJpYWwoKTsKKworICBw
cml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihWZXJ0ZXhCdWZmZXIpOworCisg
ICAgdW5zaWduZWQgaW50IG1TZXJpYWw7CisgICAgc3RhdGljIHVuc2lnbmVkIGludCBtTmV4dFNl
cmlhbDsKK307CisKK2NsYXNzIFZlcnRleEJ1ZmZlckludGVyZmFjZQoreworICBwdWJsaWM6Cisg
ICAgVmVydGV4QnVmZmVySW50ZXJmYWNlKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIGJvb2wgZHlu
YW1pYyk7CisgICAgdmlydHVhbCB+VmVydGV4QnVmZmVySW50ZXJmYWNlKCk7CisKKyAgICBib29s
IHJlc2VydmVWZXJ0ZXhTcGFjZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUs
IEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKTsKKyAgICBib29sIHJlc2VydmVSYXdE
YXRhU3BhY2UodW5zaWduZWQgaW50IHNpemUpOworCisgICAgdW5zaWduZWQgaW50IGdldEJ1ZmZl
clNpemUoKSBjb25zdDsKKworICAgIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKKwor
ICAgIHZpcnR1YWwgaW50IHN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVydGV4QXR0
cmlidXRlICZhdHRyaWIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3Rh
bmNlcyk7CisgICAgdmlydHVhbCBpbnQgc3RvcmVSYXdEYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHVu
c2lnbmVkIGludCBzaXplKTsKKworICAgIFZlcnRleEJ1ZmZlciogZ2V0VmVydGV4QnVmZmVyKCkg
Y29uc3Q7CisKKyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgYm9vbCByZXNlcnZlU3BhY2UodW5z
aWduZWQgaW50IHNpemUpID0gMDsKKworICAgIHVuc2lnbmVkIGludCBnZXRXcml0ZVBvc2l0aW9u
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRXcml0ZVBvc2l0aW9uKHVuc2lnbmVkIGludCB3cml0ZVBv
c2l0aW9uKTsKKworICAgIGJvb2wgZGlzY2FyZCgpOworCisgICAgYm9vbCBzZXRCdWZmZXJTaXpl
KHVuc2lnbmVkIGludCBzaXplKTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTihWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UpOworCisgICAgcng6OlJlbmRlcmVyICpjb25z
dCBtUmVuZGVyZXI7CisKKyAgICBWZXJ0ZXhCdWZmZXIqIG1WZXJ0ZXhCdWZmZXI7CisKKyAgICB1
bnNpZ25lZCBpbnQgbVdyaXRlUG9zaXRpb247CisgICAgdW5zaWduZWQgaW50IG1SZXNlcnZlZFNw
YWNlOworICAgIGJvb2wgbUR5bmFtaWM7Cit9OworCitjbGFzcyBTdHJlYW1pbmdWZXJ0ZXhCdWZm
ZXJJbnRlcmZhY2UgOiBwdWJsaWMgVmVydGV4QnVmZmVySW50ZXJmYWNlCit7CisgIHB1YmxpYzoK
KyAgICBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2Uocng6OlJlbmRlcmVyICpyZW5kZXJl
ciwgc3RkOjpzaXplX3QgaW5pdGlhbFNpemUpOworICAgIH5TdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJ
bnRlcmZhY2UoKTsKKworICBwcm90ZWN0ZWQ6CisgICAgYm9vbCByZXNlcnZlU3BhY2UodW5zaWdu
ZWQgaW50IHNpemUpOworfTsKKworY2xhc3MgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlIDog
cHVibGljIFZlcnRleEJ1ZmZlckludGVyZmFjZQoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQg
U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIpOworICAg
IH5TdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoKTsKKworICAgIGludCBzdG9yZVZlcnRleEF0
dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGludCBzdGFydCwg
R0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworCisgICAgLy8gUmV0dXJucyB0aGUg
b2Zmc2V0IGludG8gdGhlIHZlcnRleCBidWZmZXIsIG9yIC0xIGlmIG5vdCBmb3VuZAorICAgIGlu
dCBsb29rdXBBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlKTsK
KworICBwcm90ZWN0ZWQ6CisgICAgYm9vbCByZXNlcnZlU3BhY2UodW5zaWduZWQgaW50IHNpemUp
OworCisgIHByaXZhdGU6CisgICAgc3RydWN0IFZlcnRleEVsZW1lbnQKKyAgICB7CisgICAgICAg
IEdMZW51bSB0eXBlOworICAgICAgICBHTGludCBzaXplOworICAgICAgICBHTHNpemVpIHN0cmlk
ZTsKKyAgICAgICAgYm9vbCBub3JtYWxpemVkOworICAgICAgICBpbnQgYXR0cmlidXRlT2Zmc2V0
OworCisgICAgICAgIHVuc2lnbmVkIGludCBzdHJlYW1PZmZzZXQ7CisgICAgfTsKKworICAgIHN0
ZDo6dmVjdG9yPFZlcnRleEVsZW1lbnQ+IG1DYWNoZTsKK307CisKK30KKworI2VuZGlmIC8vIExJ
QkdMRVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVJfSF8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1ZlcnRleERhdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERhdGFNYW5hZ2VyLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
VmVydGV4RGF0YU1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2NyBAQAorI2lu
Y2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBWZXJ0ZXhEYXRh
TWFuYWdlci5oOiBEZWZpbmVzIHRoZSBWZXJ0ZXhEYXRhTWFuYWdlciwgYSBjbGFzcyB0aGF0Cisv
LyBydW5zIHRoZSBCdWZmZXIgdHJhbnNsYXRpb24gcHJvY2Vzcy4KKworI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9y
ZW5kZXJlci9CdWZmZXJTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvQnVmZmVyLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIu
aCIKKworbmFtZXNwYWNlCit7CisgICAgZW51bSB7IElOSVRJQUxfU1RSRUFNX0JVRkZFUl9TSVpF
ID0gMTAyNCoxMDI0IH07CisgICAgLy8gVGhpcyBoYXMgdG8gYmUgYXQgbGVhc3QgNGsgb3IgZWxz
ZSBpdCBmYWlscyBvbiBBVEkgY2FyZHMuCisgICAgZW51bSB7IENPTlNUQU5UX1ZFUlRFWF9CVUZG
RVJfU0laRSA9IDQwOTYgfTsKK30KKworbmFtZXNwYWNlIHJ4Cit7CisKK3N0YXRpYyBpbnQgZWxl
bWVudHNJbkJ1ZmZlcihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUsIGludCBz
aXplKQoreworICAgIGludCBzdHJpZGUgPSBhdHRyaWJ1dGUuc3RyaWRlKCk7CisgICAgcmV0dXJu
IChzaXplIC0gYXR0cmlidXRlLm1PZmZzZXQgJSBzdHJpZGUgKyAoc3RyaWRlIC0gYXR0cmlidXRl
LnR5cGVTaXplKCkpKSAvIHN0cmlkZTsKK30KKworVmVydGV4RGF0YU1hbmFnZXI6OlZlcnRleERh
dGFNYW5hZ2VyKFJlbmRlcmVyICpyZW5kZXJlcikgOiBtUmVuZGVyZXIocmVuZGVyZXIpCit7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAg
eworICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzBdID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OnF1aWV0X05hTigpOworICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzFdID0gc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpOworICAgICAgICBtQ3VycmVudFZhbHVlW2ld
WzJdID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpOworICAgICAgICBt
Q3VycmVudFZhbHVlW2ldWzNdID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05h
TigpOworICAgICAgICBtQ3VycmVudFZhbHVlQnVmZmVyW2ldID0gTlVMTDsKKyAgICAgICAgbUN1
cnJlbnRWYWx1ZU9mZnNldHNbaV0gPSAwOworICAgIH0KKworICAgIG1TdHJlYW1pbmdCdWZmZXIg
PSBuZXcgU3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlKHJlbmRlcmVyLCBJTklUSUFMX1NU
UkVBTV9CVUZGRVJfU0laRSk7CisKKyAgICBpZiAoIW1TdHJlYW1pbmdCdWZmZXIpCisgICAgewor
ICAgICAgICBFUlIoIkZhaWxlZCB0byBhbGxvY2F0ZSB0aGUgc3RyZWFtaW5nIHZlcnRleCBidWZm
ZXIuIik7CisgICAgfQorfQorCitWZXJ0ZXhEYXRhTWFuYWdlcjo6flZlcnRleERhdGFNYW5hZ2Vy
KCkKK3sKKyAgICBkZWxldGUgbVN0cmVhbWluZ0J1ZmZlcjsKKworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgZGVsZXRl
IG1DdXJyZW50VmFsdWVCdWZmZXJbaV07CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBkaXJlY3RT
dG9yYWdlUG9zc2libGUoVmVydGV4QnVmZmVySW50ZXJmYWNlKiB2YiwgY29uc3QgZ2w6OlZlcnRl
eEF0dHJpYnV0ZSYgYXR0cmliKQoreworICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYi5t
Qm91bmRCdWZmZXIuZ2V0KCk7CisgICAgQnVmZmVyU3RvcmFnZSAqc3RvcmFnZSA9IGJ1ZmZlciA/
IGJ1ZmZlci0+Z2V0U3RvcmFnZSgpIDogTlVMTDsKKworICAgIGNvbnN0IGJvb2wgaXNBbGlnbmVk
ID0gKGF0dHJpYi5zdHJpZGUoKSAlIDQgPT0gMCkgJiYgKGF0dHJpYi5tT2Zmc2V0ICUgNCA9PSAw
KTsKKworICAgIHJldHVybiBzdG9yYWdlICYmIHN0b3JhZ2UtPnN1cHBvcnRzRGlyZWN0QmluZGlu
ZygpICYmICF2Yi0+Z2V0VmVydGV4QnVmZmVyKCktPnJlcXVpcmVzQ29udmVyc2lvbihhdHRyaWIp
ICYmIGlzQWxpZ25lZDsKK30KKworR0xlbnVtIFZlcnRleERhdGFNYW5hZ2VyOjpwcmVwYXJlVmVy
dGV4RGF0YShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlIGF0dHJpYnNbXSwgZ2w6OlByb2dyYW1C
aW5hcnkgKnByb2dyYW1CaW5hcnksIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBUcmFuc2xh
dGVkQXR0cmlidXRlICp0cmFuc2xhdGVkLCBHTHNpemVpIGluc3RhbmNlcykKK3sKKyAgICBpZiAo
IW1TdHJlYW1pbmdCdWZmZXIpCisgICAgeworICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9S
WTsKKyAgICB9CisKKyAgICBmb3IgKGludCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0dHJpYnV0ZUlu
ZGV4IDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgYXR0cmlidXRlSW5kZXgrKykKKyAgICB7Cisg
ICAgICAgIHRyYW5zbGF0ZWRbYXR0cmlidXRlSW5kZXhdLmFjdGl2ZSA9IChwcm9ncmFtQmluYXJ5
LT5nZXRTZW1hbnRpY0luZGV4KGF0dHJpYnV0ZUluZGV4KSAhPSAtMSk7CisgICAgfQorCisgICAg
Ly8gSW52YWxpZGF0ZSBzdGF0aWMgYnVmZmVycyB0aGF0IGRvbid0IGNvbnRhaW4gbWF0Y2hpbmcg
YXR0cmlidXRlcworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklC
UzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKHRyYW5zbGF0ZWRbaV0uYWN0aXZlICYmIGF0dHJp
YnNbaV0ubUFycmF5RW5hYmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkJ1ZmZlciAq
YnVmZmVyID0gYXR0cmlic1tpXS5tQm91bmRCdWZmZXIuZ2V0KCk7CisgICAgICAgICAgICBTdGF0
aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+
Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkgOiBOVUxMOworCisgICAgICAgICAgICBpZiAoc3RhdGlj
QnVmZmVyICYmIHN0YXRpY0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpID4gMCAmJiBzdGF0aWNCdWZm
ZXItPmxvb2t1cEF0dHJpYnV0ZShhdHRyaWJzW2ldKSA9PSAtMSAmJgorICAgICAgICAgICAgICAg
ICFkaXJlY3RTdG9yYWdlUG9zc2libGUoc3RhdGljQnVmZmVyLCBhdHRyaWJzW2ldKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBidWZmZXItPmludmFsaWRhdGVTdGF0aWNEYXRhKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBSZXNlcnZlIHRoZSBy
ZXF1aXJlZCBzcGFjZSBpbiB0aGUgYnVmZmVycworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6
Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKHRyYW5zbGF0ZWRb
aV0uYWN0aXZlICYmIGF0dHJpYnNbaV0ubUFycmF5RW5hYmxlZCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0gYXR0cmlic1tpXS5tQm91bmRCdWZmZXIuZ2V0KCk7
CisgICAgICAgICAgICBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKnN0YXRpY0J1ZmZlciA9
IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkgOiBOVUxMOworICAgICAg
ICAgICAgVmVydGV4QnVmZmVySW50ZXJmYWNlICp2ZXJ0ZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXIg
PyBzdGF0aWNCdWZmZXIgOiBzdGF0aWNfY2FzdDxWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UqPihtU3Ry
ZWFtaW5nQnVmZmVyKTsKKworICAgICAgICAgICAgaWYgKCFkaXJlY3RTdG9yYWdlUG9zc2libGUo
dmVydGV4QnVmZmVyLCBhdHRyaWJzW2ldKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc3RhdGljQnVmZmVyKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHN0YXRpY0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpID09IDApCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB0b3RhbENvdW50ID0gZWxlbWVu
dHNJbkJ1ZmZlcihhdHRyaWJzW2ldLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIXN0YXRpY0J1ZmZlci0+cmVzZXJ2ZVZlcnRleFNwYWNlKGF0dHJpYnNbaV0s
IHRvdGFsQ291bnQsIDApKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IGlmICghbVN0cmVhbWluZ0J1ZmZlci0+cmVzZXJ2ZVZlcnRleFNwYWNlKGF0dHJpYnNbaV0sIGNv
dW50LCBpbnN0YW5jZXMpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIFBlcmZvcm0gdGhlIHZlcnRleCBkYXRhIHRyYW5zbGF0aW9ucworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYg
KHRyYW5zbGF0ZWRbaV0uYWN0aXZlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoYXR0cmli
c1tpXS5tQXJyYXlFbmFibGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjpC
dWZmZXIgKmJ1ZmZlciA9IGF0dHJpYnNbaV0ubUJvdW5kQnVmZmVyLmdldCgpOworCisgICAgICAg
ICAgICAgICAgaWYgKCFidWZmZXIgJiYgYXR0cmlic1tpXS5tUG9pbnRlciA9PSBOVUxMKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBhcHBsaWNh
dGlvbiBlcnJvciB0aGF0IHdvdWxkIG5vcm1hbGx5IHJlc3VsdCBpbiBhIGNyYXNoLCBidXQgd2Ug
Y2F0Y2ggaXQgYW5kIHJldHVybiBhbiBlcnJvcgorICAgICAgICAgICAgICAgICAgICBFUlIoIkFu
IGVuYWJsZWQgdmVydGV4IGFycmF5IGhhcyBubyBidWZmZXIgYW5kIG5vIHBvaW50ZXIuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9JTlZBTElEX09QRVJBVElPTjsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2Ug
KnN0YXRpY0J1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkg
OiBOVUxMOworICAgICAgICAgICAgICAgIFZlcnRleEJ1ZmZlckludGVyZmFjZSAqdmVydGV4QnVm
ZmVyID0gc3RhdGljQnVmZmVyID8gc3RhdGljQnVmZmVyIDogc3RhdGljX2Nhc3Q8VmVydGV4QnVm
ZmVySW50ZXJmYWNlKj4obVN0cmVhbWluZ0J1ZmZlcik7CisKKyAgICAgICAgICAgICAgICBCdWZm
ZXJTdG9yYWdlICpzdG9yYWdlID0gYnVmZmVyID8gYnVmZmVyLT5nZXRTdG9yYWdlKCkgOiBOVUxM
OworICAgICAgICAgICAgICAgIGJvb2wgZGlyZWN0U3RvcmFnZSA9IGRpcmVjdFN0b3JhZ2VQb3Nz
aWJsZSh2ZXJ0ZXhCdWZmZXIsIGF0dHJpYnNbaV0pOworCisgICAgICAgICAgICAgICAgc3RkOjpz
aXplX3Qgc3RyZWFtT2Zmc2V0ID0gLTE7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG91
dHB1dEVsZW1lbnRTaXplID0gMDsKKworICAgICAgICAgICAgICAgIGlmIChkaXJlY3RTdG9yYWdl
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0RWxlbWVudFNp
emUgPSBhdHRyaWJzW2ldLnN0cmlkZSgpOworICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZz
ZXQgPSBhdHRyaWJzW2ldLm1PZmZzZXQgKyBvdXRwdXRFbGVtZW50U2l6ZSAqIHN0YXJ0OworICAg
ICAgICAgICAgICAgICAgICBzdG9yYWdlLT5tYXJrQnVmZmVyVXNhZ2UoKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGljQnVmZmVyKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0gc3RhdGljQnVmZmVy
LT5sb29rdXBBdHRyaWJ1dGUoYXR0cmlic1tpXSk7CisgICAgICAgICAgICAgICAgICAgIG91dHB1
dEVsZW1lbnRTaXplID0gc3RhdGljQnVmZmVyLT5nZXRWZXJ0ZXhCdWZmZXIoKS0+Z2V0U3BhY2VS
ZXF1aXJlZChhdHRyaWJzW2ldLCAxLCAwKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoc3Ry
ZWFtT2Zmc2V0ID09IC0xKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBDb252ZXJ0IHRoZSBlbnRpcmUgYnVmZmVyCisgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgdG90YWxDb3VudCA9IGVsZW1lbnRzSW5CdWZmZXIoYXR0cmlic1tpXSwgc3RvcmFn
ZS0+Z2V0U2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydEluZGV4ID0g
YXR0cmlic1tpXS5tT2Zmc2V0IC8gYXR0cmlic1tpXS5zdHJpZGUoKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0gc3RhdGljQnVmZmVyLT5zdG9yZVZlcnRleEF0dHJp
YnV0ZXMoYXR0cmlic1tpXSwgLXN0YXJ0SW5kZXgsIHRvdGFsQ291bnQsIDApOworICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmVhbU9mZnNldCAhPSAt
MSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFt
T2Zmc2V0ICs9IChhdHRyaWJzW2ldLm1PZmZzZXQgLyBhdHRyaWJzW2ldLnN0cmlkZSgpKSAqIG91
dHB1dEVsZW1lbnRTaXplOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2Vz
ID09IDAgfHwgYXR0cmlic1tpXS5tRGl2aXNvciA9PSAwKQorICAgICAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbU9mZnNldCArPSBzdGFydCAq
IG91dHB1dEVsZW1lbnRTaXplOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dEVsZW1lbnRTaXplID0g
bVN0cmVhbWluZ0J1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCktPmdldFNwYWNlUmVxdWlyZWQoYXR0
cmlic1tpXSwgMSwgMCk7CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9IG1TdHJl
YW1pbmdCdWZmZXItPnN0b3JlVmVydGV4QXR0cmlidXRlcyhhdHRyaWJzW2ldLCBzdGFydCwgY291
bnQsIGluc3RhbmNlcyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg
KHN0cmVhbU9mZnNldCA9PSAtMSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIHRyYW5zbGF0ZWRbaV0uc3RvcmFnZSA9IGRpcmVjdFN0b3JhZ2UgPyBzdG9yYWdl
IDogTlVMTDsKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnZlcnRleEJ1ZmZlciA9IHZl
cnRleEJ1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgdHJhbnNsYXRl
ZFtpXS5zZXJpYWwgPSBkaXJlY3RTdG9yYWdlID8gc3RvcmFnZS0+Z2V0U2VyaWFsKCkgOiB2ZXJ0
ZXhCdWZmZXItPmdldFNlcmlhbCgpOworICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0uZGl2
aXNvciA9IGF0dHJpYnNbaV0ubURpdmlzb3I7CisKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVk
W2ldLmF0dHJpYnV0ZSA9ICZhdHRyaWJzW2ldOworICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRb
aV0uc3RyaWRlID0gb3V0cHV0RWxlbWVudFNpemU7CisgICAgICAgICAgICAgICAgdHJhbnNsYXRl
ZFtpXS5vZmZzZXQgPSBzdHJlYW1PZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFtQ3VycmVudFZhbHVlQnVm
ZmVyW2ldKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRW
YWx1ZUJ1ZmZlcltpXSA9IG5ldyBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UobVJlbmRl
cmVyLCBDT05TVEFOVF9WRVJURVhfQlVGRkVSX1NJWkUpOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIFN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZSAqYnVmZmVyID0g
bUN1cnJlbnRWYWx1ZUJ1ZmZlcltpXTsKKworICAgICAgICAgICAgICAgIGlmIChtQ3VycmVudFZh
bHVlW2ldWzBdICE9IGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZVswXSB8fAorICAgICAgICAgICAg
ICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzFdICE9IGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZVsx
XSB8fAorICAgICAgICAgICAgICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzJdICE9IGF0dHJpYnNb
aV0ubUN1cnJlbnRWYWx1ZVsyXSB8fAorICAgICAgICAgICAgICAgICAgICBtQ3VycmVudFZhbHVl
W2ldWzNdICE9IGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZVszXSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByZXF1aXJlZFNwYWNlID0gc2l6ZW9m
KGZsb2F0KSAqIDQ7CisgICAgICAgICAgICAgICAgICAgIGlmICghYnVmZmVyLT5yZXNlcnZlUmF3
RGF0YVNwYWNlKHJlcXVpcmVkU3BhY2UpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpbnQgc3RyZWFtT2Zmc2V0ID0gYnVmZmVyLT5z
dG9yZVJhd0RhdGEoYXR0cmlic1tpXS5tQ3VycmVudFZhbHVlLCByZXF1aXJlZFNwYWNlKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHN0cmVhbU9mZnNldCA9PSAtMSkKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlk7
CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBtQ3VycmVudFZh
bHVlT2Zmc2V0c1tpXSA9IHN0cmVhbU9mZnNldDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnN0b3JhZ2UgPSBOVUxMOworICAgICAgICAgICAgICAg
IHRyYW5zbGF0ZWRbaV0udmVydGV4QnVmZmVyID0gbUN1cnJlbnRWYWx1ZUJ1ZmZlcltpXS0+Z2V0
VmVydGV4QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5zZXJpYWwgPSBt
Q3VycmVudFZhbHVlQnVmZmVyW2ldLT5nZXRTZXJpYWwoKTsKKyAgICAgICAgICAgICAgICB0cmFu
c2xhdGVkW2ldLmRpdmlzb3IgPSAwOworCisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5h
dHRyaWJ1dGUgPSAmYXR0cmlic1tpXTsKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnN0
cmlkZSA9IDA7CisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5vZmZzZXQgPSBtQ3VycmVu
dFZhbHVlT2Zmc2V0c1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsK
KyAgICAgICAgaWYgKHRyYW5zbGF0ZWRbaV0uYWN0aXZlICYmIGF0dHJpYnNbaV0ubUFycmF5RW5h
YmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0gYXR0cmli
c1tpXS5tQm91bmRCdWZmZXIuZ2V0KCk7CisKKyAgICAgICAgICAgIGlmIChidWZmZXIpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5wcm9tb3RlU3RhdGljVXNhZ2UoY291
bnQgKiBhdHRyaWJzW2ldLnR5cGVTaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIEdMX05PX0VSUk9SOworfQorCit9CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERhdGFNYW5hZ2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBWZXJ0ZXhE
YXRhTWFuYWdlci5oOiBEZWZpbmVzIHRoZSBWZXJ0ZXhEYXRhTWFuYWdlciwgYSBjbGFzcyB0aGF0
CisvLyBydW5zIHRoZSBCdWZmZXIgdHJhbnNsYXRpb24gcHJvY2Vzcy4KKworI2lmbmRlZiBMSUJH
TEVTVjJfUkVOREVSRVJfVkVSVEVYREFUQU1BTkFHRVJfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JF
TkRFUkVSX1ZFUlRFWERBVEFNQU5BR0VSX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvQ29uc3Rh
bnRzLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIGdsCit7
CitjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGU7CitjbGFzcyBQcm9ncmFtQmluYXJ5OworfQorCituYW1l
c3BhY2UgcngKK3sKK2NsYXNzIEJ1ZmZlclN0b3JhZ2U7CitjbGFzcyBTdHJlYW1pbmdWZXJ0ZXhC
dWZmZXJJbnRlcmZhY2U7CitjbGFzcyBWZXJ0ZXhCdWZmZXI7CitjbGFzcyBSZW5kZXJlcjsKKwor
c3RydWN0IFRyYW5zbGF0ZWRBdHRyaWJ1dGUKK3sKKyAgICBib29sIGFjdGl2ZTsKKworICAgIGNv
bnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgKmF0dHJpYnV0ZTsKKyAgICBVSU5UIG9mZnNldDsKKyAg
ICBVSU5UIHN0cmlkZTsgICAvLyAwIG1lYW5zIG5vdCB0byBhZHZhbmNlIHRoZSByZWFkIHBvaW50
ZXIgYXQgYWxsCisKKyAgICBWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlcjsKKyAgICBCdWZmZXJT
dG9yYWdlICpzdG9yYWdlOworICAgIHVuc2lnbmVkIGludCBzZXJpYWw7CisgICAgdW5zaWduZWQg
aW50IGRpdmlzb3I7Cit9OworCitjbGFzcyBWZXJ0ZXhEYXRhTWFuYWdlcgoreworICBwdWJsaWM6
CisgICAgVmVydGV4RGF0YU1hbmFnZXIocng6OlJlbmRlcmVyICpyZW5kZXJlcik7CisgICAgdmly
dHVhbCB+VmVydGV4RGF0YU1hbmFnZXIoKTsKKworICAgIEdMZW51bSBwcmVwYXJlVmVydGV4RGF0
YShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlIGF0dHJpYnNbXSwgZ2w6OlByb2dyYW1CaW5hcnkg
KnByb2dyYW1CaW5hcnksIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBUcmFuc2xhdGVkQXR0
cmlidXRlICpvdXRBdHRyaWJzLCBHTHNpemVpIGluc3RhbmNlcyk7CisKKyAgcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVmVydGV4RGF0YU1hbmFnZXIpOworCisgICAgcng6
OlJlbmRlcmVyICpjb25zdCBtUmVuZGVyZXI7CisKKyAgICBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJ
bnRlcmZhY2UgKm1TdHJlYW1pbmdCdWZmZXI7CisKKyAgICBmbG9hdCBtQ3VycmVudFZhbHVlW2ds
OjpNQVhfVkVSVEVYX0FUVFJJQlNdWzRdOworICAgIFN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVy
ZmFjZSAqbUN1cnJlbnRWYWx1ZUJ1ZmZlcltnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsKKyAgICBz
dGQ6OnNpemVfdCBtQ3VycmVudFZhbHVlT2Zmc2V0c1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsK
K307CisKK30KKworI2VuZGlmICAgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1ZFUlRFWERBVEFNQU5B
R0VSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGVjbGFyYXRpb25DYWNo
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIxNyBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gVmVydGV4RGVjbGFyYXRpb25DYWNoZS5jcHA6IEltcGxlbWVudHMgYSBoZWxwZXIgY2xhc3Mg
dG8gY29uc3RydWN0IGFuZCBjYWNoZSB2ZXJ0ZXggZGVjbGFyYXRpb25zLgorCisjaW5jbHVkZSAi
bGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvQ29udGV4dC5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuaCIKKworbmFtZXNw
YWNlIHJ4Cit7CisKK1ZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OlZlcnRleERlY2xhcmF0aW9uQ2Fj
aGUoKSA6IG1NYXhMcnUoMCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9WRVJURVhf
REVDTF9DQUNIRV9FTlRSSUVTOyBpKyspCisgICAgeworICAgICAgICBtVmVydGV4RGVjbENhY2hl
W2ldLnZlcnRleERlY2xhcmF0aW9uID0gTlVMTDsKKyAgICAgICAgbVZlcnRleERlY2xDYWNoZVtp
XS5scnVDb3VudCA9IDA7CisgICAgfQorCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6TUFY
X1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBtQXBwbGllZFZCc1tpXS5zZXJp
YWwgPSAwOworICAgIH0KKworICAgIG1MYXN0U2V0VkRlY2wgPSBOVUxMOworICAgIG1JbnN0YW5j
aW5nRW5hYmxlZCA9IHRydWU7Cit9CisKK1ZlcnRleERlY2xhcmF0aW9uQ2FjaGU6On5WZXJ0ZXhE
ZWNsYXJhdGlvbkNhY2hlKCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9WRVJURVhf
REVDTF9DQUNIRV9FTlRSSUVTOyBpKyspCisgICAgeworICAgICAgICBpZiAobVZlcnRleERlY2xD
YWNoZVtpXS52ZXJ0ZXhEZWNsYXJhdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgbVZlcnRl
eERlY2xDYWNoZVtpXS52ZXJ0ZXhEZWNsYXJhdGlvbi0+UmVsZWFzZSgpOworICAgICAgICB9Cisg
ICAgfQorfQorCitHTGVudW0gVmVydGV4RGVjbGFyYXRpb25DYWNoZTo6YXBwbHlEZWNsYXJhdGlv
bihJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UsIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRl
c1tdLCBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSwgR0xzaXplaSBpbnN0YW5jZXMs
IEdMc2l6ZWkgKnJlcGVhdERyYXcpCit7CisgICAgKnJlcGVhdERyYXcgPSAxOworCisgICAgaW50
IGluZGV4ZWRBdHRyaWJ1dGUgPSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOworICAgIGludCBpbnN0
YW5jZWRBdHRyaWJ1dGUgPSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOworCisgICAgaWYgKGluc3Rh
bmNlcyA+IDApCisgICAgeworICAgICAgICAvLyBGaW5kIGFuIGluZGV4ZWQgYXR0cmlidXRlIHRv
IGJlIG1hcHBlZCB0byBEM0Qgc3RyZWFtIDAKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBn
bDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChh
dHRyaWJ1dGVzW2ldLmFjdGl2ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAo
aW5kZXhlZEF0dHJpYnV0ZSA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTICYmIGF0dHJpYnV0ZXNb
aV0uZGl2aXNvciA9PSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
aW5kZXhlZEF0dHJpYnV0ZSA9IGk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGluc3RhbmNlZEF0dHJpYnV0ZSA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTICYm
IGF0dHJpYnV0ZXNbaV0uZGl2aXNvciAhPSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgaW5zdGFuY2VkQXR0cmlidXRlID0gaTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaWYgKGluZGV4ZWRBdHRyaWJ1dGUgIT0gZ2w6Ok1BWF9WRVJURVhfQVRU
UklCUyAmJiBpbnN0YW5jZWRBdHRyaWJ1dGUgIT0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgLy8gRm91bmQgYm90aCBhbiBpbmRleGVkIGFuZCBp
bnN0YW5jZWQgYXR0cmlidXRlCisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoaW5kZXhlZEF0dHJpYnV0ZSA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBEM0RWRVJURVhFTEVNRU5UOSBlbGVtZW50c1tnbDo6TUFYX1ZFUlRFWF9BVFRS
SUJTICsgMV07CisgICAgRDNEVkVSVEVYRUxFTUVOVDkgKmVsZW1lbnQgPSAmZWxlbWVudHNbMF07
CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykK
KyAgICB7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzW2ldLmFjdGl2ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgLy8gRGlyZWN0bHkgYmluZGluZyB0aGUgc3RvcmFnZSBidWZmZXIgaXMgbm90IHN1
cHBvcnRlZCBmb3IgZDNkOQorICAgICAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZXNbaV0uc3RvcmFn
ZSA9PSBOVUxMKTsKKworICAgICAgICAgICAgaW50IHN0cmVhbSA9IGk7CisKKyAgICAgICAgICAg
IGlmIChpbnN0YW5jZXMgPiAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIER1
ZSB0byBhIGJ1ZyBvbiBBVEkgY2FyZHMgd2UgY2FuJ3QgZW5hYmxlIGluc3RhbmNpbmcgd2hlbiBu
b25lIG9mIHRoZSBhdHRyaWJ1dGVzIGFyZSBpbnN0YW5jZWQuCisgICAgICAgICAgICAgICAgaWYg
KGluc3RhbmNlZEF0dHJpYnV0ZSA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKnJlcGVhdERyYXcgPSBpbnN0YW5jZXM7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChpID09IGluZGV4ZWRBdHRyaWJ1dGUpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSA9IDA7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaSA9PSAwKQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0gPSBp
bmRleGVkQXR0cmlidXRlOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgVUlOVCBmcmVxdWVuY3kgPSAxOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXNbaV0uZGl2aXNvciA9PSAwKQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3kgPSBEM0RTVFJFQU1T
T1VSQ0VfSU5ERVhFRERBVEEgfCBpbnN0YW5jZXM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmcmVxdWVuY3kgPSBEM0RTVFJFQU1TT1VSQ0VfSU5TVEFOQ0VEQVRBIHwg
YXR0cmlidXRlc1tpXS5kaXZpc29yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPlNldFN0cmVhbVNvdXJjZUZy
ZXEoc3RyZWFtLCBmcmVxdWVuY3kpOworICAgICAgICAgICAgICAgICAgICBtSW5zdGFuY2luZ0Vu
YWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgVmVydGV4QnVmZmVyOSAqdmVydGV4QnVmZmVyID0gVmVydGV4QnVmZmVyOTo6bWFrZVZl
cnRleEJ1ZmZlcjkoYXR0cmlidXRlc1tpXS52ZXJ0ZXhCdWZmZXIpOworCisgICAgICAgICAgICBp
ZiAobUFwcGxpZWRWQnNbc3RyZWFtXS5zZXJpYWwgIT0gYXR0cmlidXRlc1tpXS5zZXJpYWwgfHwK
KyAgICAgICAgICAgICAgICBtQXBwbGllZFZCc1tzdHJlYW1dLnN0cmlkZSAhPSBhdHRyaWJ1dGVz
W2ldLnN0cmlkZSB8fAorICAgICAgICAgICAgICAgIG1BcHBsaWVkVkJzW3N0cmVhbV0ub2Zmc2V0
ICE9IGF0dHJpYnV0ZXNbaV0ub2Zmc2V0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGRldmljZS0+U2V0U3RyZWFtU291cmNlKHN0cmVhbSwgdmVydGV4QnVmZmVyLT5nZXRCdWZmZXIo
KSwgYXR0cmlidXRlc1tpXS5vZmZzZXQsIGF0dHJpYnV0ZXNbaV0uc3RyaWRlKTsKKyAgICAgICAg
ICAgICAgICBtQXBwbGllZFZCc1tzdHJlYW1dLnNlcmlhbCA9IGF0dHJpYnV0ZXNbaV0uc2VyaWFs
OworICAgICAgICAgICAgICAgIG1BcHBsaWVkVkJzW3N0cmVhbV0uc3RyaWRlID0gYXR0cmlidXRl
c1tpXS5zdHJpZGU7CisgICAgICAgICAgICAgICAgbUFwcGxpZWRWQnNbc3RyZWFtXS5vZmZzZXQg
PSBhdHRyaWJ1dGVzW2ldLm9mZnNldDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZWxl
bWVudC0+U3RyZWFtID0gc3RyZWFtOworICAgICAgICAgICAgZWxlbWVudC0+T2Zmc2V0ID0gMDsK
KyAgICAgICAgICAgIGVsZW1lbnQtPlR5cGUgPSBhdHRyaWJ1dGVzW2ldLmF0dHJpYnV0ZS0+bUFy
cmF5RW5hYmxlZCA/IHZlcnRleEJ1ZmZlci0+Z2V0RGVjbFR5cGUoKmF0dHJpYnV0ZXNbaV0uYXR0
cmlidXRlKSA6IEQzRERFQ0xUWVBFX0ZMT0FUNDsKKyAgICAgICAgICAgIGVsZW1lbnQtPk1ldGhv
ZCA9IEQzRERFQ0xNRVRIT0RfREVGQVVMVDsKKyAgICAgICAgICAgIGVsZW1lbnQtPlVzYWdlID0g
RDNEREVDTFVTQUdFX1RFWENPT1JEOworICAgICAgICAgICAgZWxlbWVudC0+VXNhZ2VJbmRleCA9
IHByb2dyYW1CaW5hcnktPmdldFNlbWFudGljSW5kZXgoaSk7CisgICAgICAgICAgICBlbGVtZW50
Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgaW5zdGFu
Y2VkQXR0cmlidXRlID09IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgeworICAgICAgICBp
ZiAobUluc3RhbmNpbmdFbmFibGVkKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBkZXZpY2UtPlNldFN0cmVhbVNvdXJjZUZyZXEoaSwgMSk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIG1JbnN0YW5jaW5nRW5hYmxlZCA9IGZhbHNlOworICAgICAg
ICB9CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IEQzRFZFUlRFWEVMRU1FTlQ5IGVuZCA9IEQz
RERFQ0xfRU5EKCk7CisgICAgKihlbGVtZW50KyspID0gZW5kOworCisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBOVU1fVkVSVEVYX0RFQ0xfQ0FDSEVfRU5UUklFUzsgaSsrKQorICAgIHsKKyAgICAg
ICAgVmVydGV4RGVjbENhY2hlRW50cnkgKmVudHJ5ID0gJm1WZXJ0ZXhEZWNsQ2FjaGVbaV07Cisg
ICAgICAgIGlmIChtZW1jbXAoZW50cnktPmNhY2hlZEVsZW1lbnRzLCBlbGVtZW50cywgKGVsZW1l
bnQgLSBlbGVtZW50cykgKiBzaXplb2YoRDNEVkVSVEVYRUxFTUVOVDkpKSA9PSAwICYmIGVudHJ5
LT52ZXJ0ZXhEZWNsYXJhdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgZW50cnktPmxydUNv
dW50ID0gKyttTWF4THJ1OworICAgICAgICAgICAgaWYoZW50cnktPnZlcnRleERlY2xhcmF0aW9u
ICE9IG1MYXN0U2V0VkRlY2wpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGV2aWNl
LT5TZXRWZXJ0ZXhEZWNsYXJhdGlvbihlbnRyeS0+dmVydGV4RGVjbGFyYXRpb24pOworICAgICAg
ICAgICAgICAgIG1MYXN0U2V0VkRlY2wgPSBlbnRyeS0+dmVydGV4RGVjbGFyYXRpb247CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBHTF9OT19FUlJPUjsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIFZlcnRleERlY2xDYWNoZUVudHJ5ICpsYXN0Q2FjaGUgPSBtVmVydGV4RGVj
bENhY2hlOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fVkVSVEVYX0RFQ0xfQ0FDSEVf
RU5UUklFUzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKG1WZXJ0ZXhEZWNsQ2FjaGVbaV0ubHJ1
Q291bnQgPCBsYXN0Q2FjaGUtPmxydUNvdW50KQorICAgICAgICB7CisgICAgICAgICAgICBsYXN0
Q2FjaGUgPSAmbVZlcnRleERlY2xDYWNoZVtpXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChsYXN0Q2FjaGUtPnZlcnRleERlY2xhcmF0aW9uICE9IE5VTEwpCisgICAgeworICAgICAgICBs
YXN0Q2FjaGUtPnZlcnRleERlY2xhcmF0aW9uLT5SZWxlYXNlKCk7CisgICAgICAgIGxhc3RDYWNo
ZS0+dmVydGV4RGVjbGFyYXRpb24gPSBOVUxMOworICAgICAgICAvLyBtTGFzdFNldFZEZWNsIGlz
IHNldCB0byB0aGUgcmVwbGFjZW1lbnQsIHNvIHdlIGRvbid0IGhhdmUgdG8gd29ycnkKKyAgICAg
ICAgLy8gYWJvdXQgaXQuCisgICAgfQorCisgICAgbWVtY3B5KGxhc3RDYWNoZS0+Y2FjaGVkRWxl
bWVudHMsIGVsZW1lbnRzLCAoZWxlbWVudCAtIGVsZW1lbnRzKSAqIHNpemVvZihEM0RWRVJURVhF
TEVNRU5UOSkpOworICAgIGRldmljZS0+Q3JlYXRlVmVydGV4RGVjbGFyYXRpb24oZWxlbWVudHMs
ICZsYXN0Q2FjaGUtPnZlcnRleERlY2xhcmF0aW9uKTsKKyAgICBkZXZpY2UtPlNldFZlcnRleERl
Y2xhcmF0aW9uKGxhc3RDYWNoZS0+dmVydGV4RGVjbGFyYXRpb24pOworICAgIG1MYXN0U2V0VkRl
Y2wgPSBsYXN0Q2FjaGUtPnZlcnRleERlY2xhcmF0aW9uOworICAgIGxhc3RDYWNoZS0+bHJ1Q291
bnQgPSArK21NYXhMcnU7CisKKyAgICByZXR1cm4gR0xfTk9fRVJST1I7Cit9CisKK3ZvaWQgVmVy
dGV4RGVjbGFyYXRpb25DYWNoZTo6bWFya1N0YXRlRGlydHkoKQoreworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgbUFw
cGxpZWRWQnNbaV0uc2VyaWFsID0gMDsKKyAgICB9CisKKyAgICBtTGFzdFNldFZEZWNsID0gTlVM
TDsKKyAgICBtSW5zdGFuY2luZ0VuYWJsZWQgPSB0cnVlOyAgIC8vIEZvcmNlcyBpdCB0byBiZSBk
aXNhYmxlZCB3aGVuIG5vdCB1c2VkCit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGVjbGFyYXRpb25DYWNoZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
VmVydGV4RGVjbGFyYXRpb25DYWNoZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBWZXJ0ZXhE
ZWNsYXJhdGlvbkNhY2hlLmg6IERlZmluZXMgYSBoZWxwZXIgY2xhc3MgdG8gY29uc3RydWN0IGFu
ZCBjYWNoZSB2ZXJ0ZXggZGVjbGFyYXRpb25zLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJF
Ul9WRVJURVhERUNMQVJBVElPTkNBQ0hFX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9W
RVJURVhERUNMQVJBVElPTkNBQ0hFX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
VmVydGV4RGF0YU1hbmFnZXIuaCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBWZXJ0ZXhEYXRh
TWFuYWdlcjsKK30KKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFZlcnRleERlY2xhcmF0aW9u
Q2FjaGUKK3sKKyAgcHVibGljOgorICAgIFZlcnRleERlY2xhcmF0aW9uQ2FjaGUoKTsKKyAgICB+
VmVydGV4RGVjbGFyYXRpb25DYWNoZSgpOworCisgICAgR0xlbnVtIGFwcGx5RGVjbGFyYXRpb24o
SURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNb
XSwgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnksIEdMc2l6ZWkgaW5zdGFuY2VzLCBH
THNpemVpICpyZXBlYXREcmF3KTsKKworICAgIHZvaWQgbWFya1N0YXRlRGlydHkoKTsKKworICBw
cml2YXRlOgorICAgIFVJTlQgbU1heExydTsKKworICAgIGVudW0geyBOVU1fVkVSVEVYX0RFQ0xf
Q0FDSEVfRU5UUklFUyA9IDMyIH07CisKKyAgICBzdHJ1Y3QgVkJEYXRhCisgICAgeworICAgICAg
ICB1bnNpZ25lZCBpbnQgc2VyaWFsOworICAgICAgICB1bnNpZ25lZCBpbnQgc3RyaWRlOworICAg
ICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0OworICAgIH07CisKKyAgICBWQkRhdGEgbUFwcGxpZWRW
QnNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU107CisgICAgSURpcmVjdDNEVmVydGV4RGVjbGFyYXRp
b245ICptTGFzdFNldFZEZWNsOworICAgIGJvb2wgbUluc3RhbmNpbmdFbmFibGVkOworCisgICAg
c3RydWN0IFZlcnRleERlY2xDYWNoZUVudHJ5CisgICAgeworICAgICAgICBEM0RWRVJURVhFTEVN
RU5UOSBjYWNoZWRFbGVtZW50c1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTICsgMV07CisgICAgICAg
IFVJTlQgbHJ1Q291bnQ7CisgICAgICAgIElEaXJlY3QzRFZlcnRleERlY2xhcmF0aW9uOSAqdmVy
dGV4RGVjbGFyYXRpb247CisgICAgfSBtVmVydGV4RGVjbENhY2hlW05VTV9WRVJURVhfREVDTF9D
QUNIRV9FTlRSSUVTXTsKK307CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9W
RVJURVhERUNMQVJBVElPTkNBQ0hFX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL2dlbmVyYXRlbWlwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9nZW5lcmF0ZW1pcC5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9nZW5lcmF0ZW1pcC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwMyBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gZ2VuZXJhdGVtaXAuaDogRGVmaW5lcyB0aGUgR2VuZXJhdGVNaXAg
ZnVuY3Rpb24sIHRlbXBsYXRlZCBvbiB0aGUgZm9ybWF0CisvLyB0eXBlIG9mIHRoZSBpbWFnZSBm
b3Igd2hpY2ggbWlwIGxldmVscyBhcmUgYmVpbmcgZ2VuZXJhdGVkLgorCisjaWZuZGVmIExJQkdM
RVNWMl9SRU5ERVJFUl9HRU5FUkFURU1JUF9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJf
R0VORVJBVEVNSVBfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorCituYW1l
c3BhY2UgcngKK3sKK3N0cnVjdCBMOAoreworICAgIHVuc2lnbmVkIGNoYXIgTDsKKworICAgIHN0
YXRpYyB2b2lkIGF2ZXJhZ2UoTDggKmRzdCwgY29uc3QgTDggKnNyYzEsIGNvbnN0IEw4ICpzcmMy
KQorICAgIHsKKyAgICAgICAgZHN0LT5MID0gKChzcmMxLT5MIF4gc3JjMi0+TCkgPj4gMSkgKyAo
c3JjMS0+TCAmIHNyYzItPkwpOworICAgIH0KK307CisKK3R5cGVkZWYgTDggUjg7IC8vIFI4IHR5
cGUgaXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIG1pcCBwdXJwb3NlcwordHlwZWRlZiBM
OCBBODsgLy8gQTggdHlwZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgbWlwIHB1cnBv
c2VzCisKK3N0cnVjdCBBOEw4Cit7CisgICAgdW5zaWduZWQgY2hhciBMOworICAgIHVuc2lnbmVk
IGNoYXIgQTsKKworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQThMOCAqZHN0LCBjb25zdCBBOEw4
ICpzcmMxLCBjb25zdCBBOEw4ICpzcmMyKQorICAgIHsKKyAgICAgICAgKih1bnNpZ25lZCBzaG9y
dCopZHN0ID0gKCgoKih1bnNpZ25lZCBzaG9ydCopc3JjMSBeICoodW5zaWduZWQgc2hvcnQqKXNy
YzIpICYgMHhGRUZFKSA+PiAxKSArICgqKHVuc2lnbmVkIHNob3J0KilzcmMxICYgKih1bnNpZ25l
ZCBzaG9ydCopc3JjMik7CisgICAgfQorfTsKKwordHlwZWRlZiBBOEw4IFI4Rzg7IC8vIFI4Rzgg
dHlwZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgbWlwIHB1cnBvc2VzCisKK3N0cnVj
dCBBOFI4RzhCOAoreworICAgIHVuc2lnbmVkIGNoYXIgQjsKKyAgICB1bnNpZ25lZCBjaGFyIEc7
CisgICAgdW5zaWduZWQgY2hhciBSOworICAgIHVuc2lnbmVkIGNoYXIgQTsKKworICAgIHN0YXRp
YyB2b2lkIGF2ZXJhZ2UoQThSOEc4QjggKmRzdCwgY29uc3QgQThSOEc4QjggKnNyYzEsIGNvbnN0
IEE4UjhHOEI4ICpzcmMyKQorICAgIHsKKyAgICAgICAgKih1bnNpZ25lZCBpbnQqKWRzdCA9ICgo
KCoodW5zaWduZWQgaW50KilzcmMxIF4gKih1bnNpZ25lZCBpbnQqKXNyYzIpICYgMHhGRUZFRkVG
RSkgPj4gMSkgKyAoKih1bnNpZ25lZCBpbnQqKXNyYzEgJiAqKHVuc2lnbmVkIGludCopc3JjMik7
CisgICAgfQorfTsKKwordHlwZWRlZiBBOFI4RzhCOCBSOEc4QjhBODsgLy8gUjhHOEI4QTggdHlw
ZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgbWlwIHB1cnBvc2VzCisKK3N0cnVjdCBB
MTZCMTZHMTZSMTZGCit7CisgICAgdW5zaWduZWQgc2hvcnQgUjsKKyAgICB1bnNpZ25lZCBzaG9y
dCBHOworICAgIHVuc2lnbmVkIHNob3J0IEI7CisgICAgdW5zaWduZWQgc2hvcnQgQTsKKworICAg
IHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQTE2QjE2RzE2UjE2RiAqZHN0LCBjb25zdCBBMTZCMTZHMTZS
MTZGICpzcmMxLCBjb25zdCBBMTZCMTZHMTZSMTZGICpzcmMyKQorICAgIHsKKyAgICAgICAgZHN0
LT5SID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoKGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYzEtPlIp
ICsgZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjMi0+UikpICogMC41Zik7CisgICAgICAgIGRzdC0+
RyA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KChnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMxLT5HKSAr
IGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYzItPkcpKSAqIDAuNWYpOworICAgICAgICBkc3QtPkIg
PSBnbDo6ZmxvYXQzMlRvRmxvYXQxNigoZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjMS0+QikgKyBn
bDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMyLT5CKSkgKiAwLjVmKTsKKyAgICAgICAgZHN0LT5BID0g
Z2w6OmZsb2F0MzJUb0Zsb2F0MTYoKGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYzEtPkEpICsgZ2w6
OmZsb2F0MTZUb0Zsb2F0MzIoc3JjMi0+QSkpICogMC41Zik7CisgICAgfQorfTsKKworc3RydWN0
IFIxNkYKK3sKKyAgICB1bnNpZ25lZCBzaG9ydCBSOworCisgICAgc3RhdGljIHZvaWQgYXZlcmFn
ZShSMTZGICpkc3QsIGNvbnN0IFIxNkYgKnNyYzEsIGNvbnN0IFIxNkYgKnNyYzIpCisgICAgewor
ICAgICAgICBkc3QtPlIgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNigoZ2w6OmZsb2F0MTZUb0Zsb2F0
MzIoc3JjMS0+UikgKyBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMyLT5SKSkgKiAwLjVmKTsKKyAg
ICB9Cit9OworCitzdHJ1Y3QgUjE2RzE2RgoreworICAgIHVuc2lnbmVkIHNob3J0IFI7CisgICAg
dW5zaWduZWQgc2hvcnQgRzsKKworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjE2RzE2RiAqZHN0
LCBjb25zdCBSMTZHMTZGICpzcmMxLCBjb25zdCBSMTZHMTZGICpzcmMyKQorICAgIHsKKyAgICAg
ICAgZHN0LT5SID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoKGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNy
YzEtPlIpICsgZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjMi0+UikpICogMC41Zik7CisgICAgICAg
IGRzdC0+RyA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KChnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMx
LT5HKSArIGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYzItPkcpKSAqIDAuNWYpOworICAgIH0KK307
CisKK3N0cnVjdCBBMzJCMzJHMzJSMzJGCit7CisgICAgZmxvYXQgUjsKKyAgICBmbG9hdCBHOwor
ICAgIGZsb2F0IEI7CisgICAgZmxvYXQgQTsKKworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQTMy
QjMyRzMyUjMyRiAqZHN0LCBjb25zdCBBMzJCMzJHMzJSMzJGICpzcmMxLCBjb25zdCBBMzJCMzJH
MzJSMzJGICpzcmMyKQorICAgIHsKKyAgICAgICAgZHN0LT5SID0gKHNyYzEtPlIgKyBzcmMyLT5S
KSAqIDAuNWY7CisgICAgICAgIGRzdC0+RyA9IChzcmMxLT5HICsgc3JjMi0+RykgKiAwLjVmOwor
ICAgICAgICBkc3QtPkIgPSAoc3JjMS0+QiArIHNyYzItPkIpICogMC41ZjsKKyAgICAgICAgZHN0
LT5BID0gKHNyYzEtPkEgKyBzcmMyLT5BKSAqIDAuNWY7CisgICAgfQorfTsKKworc3RydWN0IFIz
MkYKK3sKKyAgICBmbG9hdCBSOworCisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMzJGICpkc3Qs
IGNvbnN0IFIzMkYgKnNyYzEsIGNvbnN0IFIzMkYgKnNyYzIpCisgICAgeworICAgICAgICBkc3Qt
PlIgPSAoc3JjMS0+UiArIHNyYzItPlIpICogMC41ZjsKKyAgICB9Cit9OworCitzdHJ1Y3QgUjMy
RzMyRgoreworICAgIGZsb2F0IFI7CisgICAgZmxvYXQgRzsKKworICAgIHN0YXRpYyB2b2lkIGF2
ZXJhZ2UoUjMyRzMyRiAqZHN0LCBjb25zdCBSMzJHMzJGICpzcmMxLCBjb25zdCBSMzJHMzJGICpz
cmMyKQorICAgIHsKKyAgICAgICAgZHN0LT5SID0gKHNyYzEtPlIgKyBzcmMyLT5SKSAqIDAuNWY7
CisgICAgICAgIGRzdC0+RyA9IChzcmMxLT5HICsgc3JjMi0+RykgKiAwLjVmOworICAgIH0KK307
CisKK3N0cnVjdCBSMzJHMzJCMzJGCit7CisgICAgZmxvYXQgUjsKKyAgICBmbG9hdCBHOworICAg
IGZsb2F0IEI7CisKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIzMkczMkIzMkYgKmRzdCwgY29u
c3QgUjMyRzMyQjMyRiAqc3JjMSwgY29uc3QgUjMyRzMyQjMyRiAqc3JjMikKKyAgICB7CisgICAg
ICAgIGRzdC0+UiA9IChzcmMxLT5SICsgc3JjMi0+UikgKiAwLjVmOworICAgICAgICBkc3QtPkcg
PSAoc3JjMS0+RyArIHNyYzItPkcpICogMC41ZjsKKyAgICAgICAgZHN0LT5CID0gKHNyYzEtPkIg
KyBzcmMyLT5CKSAqIDAuNWY7CisgICAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citz
dGF0aWMgdm9pZCBHZW5lcmF0ZU1pcCh1bnNpZ25lZCBpbnQgc291cmNlV2lkdGgsIHVuc2lnbmVk
IGludCBzb3VyY2VIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyICpzb3VyY2VEYXRhLCBpbnQgc291cmNlUGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyICpkZXN0RGF0YSwgaW50IGRlc3RQaXRjaCkKK3sKKyAgICB1bnNp
Z25lZCBpbnQgbWlwV2lkdGggPSBzdGQ6Om1heCgxVSwgc291cmNlV2lkdGggPj4gMSk7CisgICAg
dW5zaWduZWQgaW50IG1pcEhlaWdodCA9IHN0ZDo6bWF4KDFVLCBzb3VyY2VIZWlnaHQgPj4gMSk7
CisKKyAgICBpZiAoc291cmNlSGVpZ2h0ID09IDEpCisgICAgeworICAgICAgICBBU1NFUlQoc291
cmNlV2lkdGggIT0gMSk7CisKKyAgICAgICAgY29uc3QgVCAqc3JjID0gKGNvbnN0IFQqKXNvdXJj
ZURhdGE7CisgICAgICAgIFQgKmRzdCA9IChUKilkZXN0RGF0YTsKKworICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCB4ID0gMDsgeCA8IG1pcFdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIFQ6OmF2ZXJhZ2UoJmRzdFt4XSwgJnNyY1t4ICogMl0sICZzcmNbeCAqIDIgKyAxXSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoc291cmNlV2lkdGggPT0gMSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChzb3VyY2VIZWlnaHQgIT0gMSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgeSA9IDA7IHkgPCBtaXBIZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAg
Y29uc3QgVCAqc3JjMCA9IChjb25zdCBUKikoc291cmNlRGF0YSArIHkgKiAyICogc291cmNlUGl0
Y2gpOworICAgICAgICAgICAgY29uc3QgVCAqc3JjMSA9IChjb25zdCBUKikoc291cmNlRGF0YSAr
IHkgKiAyICogc291cmNlUGl0Y2ggKyBzb3VyY2VQaXRjaCk7CisgICAgICAgICAgICBUICpkc3Qg
PSAoVCopKGRlc3REYXRhICsgeSAqIGRlc3RQaXRjaCk7CisKKyAgICAgICAgICAgIFQ6OmF2ZXJh
Z2UoZHN0LCBzcmMwLCBzcmMxKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCB5ID0gMDsgeSA8IG1pcEhlaWdodDsgeSsrKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb25zdCBUICpzcmMwID0gKGNvbnN0IFQqKShzb3VyY2VEYXRh
ICsgeSAqIDIgKiBzb3VyY2VQaXRjaCk7CisgICAgICAgICAgICBjb25zdCBUICpzcmMxID0gKGNv
bnN0IFQqKShzb3VyY2VEYXRhICsgeSAqIDIgKiBzb3VyY2VQaXRjaCArIHNvdXJjZVBpdGNoKTsK
KyAgICAgICAgICAgIFQgKmRzdCA9IChUKikoZGVzdERhdGEgKyB5ICogZGVzdFBpdGNoKTsKKwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgeCA9IDA7IHggPCBtaXBXaWR0aDsgeCsrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFQgdG1wMDsKKyAgICAgICAgICAgICAgICBU
IHRtcDE7CisKKyAgICAgICAgICAgICAgICBUOjphdmVyYWdlKCZ0bXAwLCAmc3JjMFt4ICogMl0s
ICZzcmMwW3ggKiAyICsgMV0pOworICAgICAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoJnRtcDEsICZz
cmMxW3ggKiAyXSwgJnNyYzFbeCAqIDIgKyAxXSk7CisgICAgICAgICAgICAgICAgVDo6YXZlcmFn
ZSgmZHN0W3hdLCAmdG1wMCwgJnRtcDEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorfQorfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0dFTkVSQVRFTUlQX0hfCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRl
cmVyOV91dGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlf
dXRpbHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwMCBAQAorI2luY2x1ZGUgInByZWNv
bXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyByZW5kZXJlcjlfdXRpbHMuY3BwOiBD
b252ZXJzaW9uIGZ1bmN0aW9ucyBhbmQgb3RoZXIgdXRpbGl0eSByb3V0aW5lcworLy8gc3BlY2lm
aWMgdG8gdGhlIEQzRDkgcmVuZGVyZXIuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
cmVuZGVyZXI5X3V0aWxzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL21hdGh1dGlsLmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgor
CituYW1lc3BhY2UgZ2xfZDNkOQoreworCitEM0RDTVBGVU5DIENvbnZlcnRDb21wYXJpc29uKEdM
ZW51bSBjb21wYXJpc29uKQoreworICAgIEQzRENNUEZVTkMgZDNkQ29tcCA9IEQzRENNUF9BTFdB
WVM7CisgICAgc3dpdGNoIChjb21wYXJpc29uKQorICAgIHsKKyAgICAgIGNhc2UgR0xfTkVWRVI6
ICAgIGQzZENvbXAgPSBEM0RDTVBfTkVWRVI7ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
QUxXQVlTOiAgIGQzZENvbXAgPSBEM0RDTVBfQUxXQVlTOyAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfTEVTUzogICAgIGQzZENvbXAgPSBEM0RDTVBfTEVTUzsgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfTEVRVUFMOiAgIGQzZENvbXAgPSBEM0RDTVBfTEVTU0VRVUFMOyAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfRVFVQUw6ICAgIGQzZENvbXAgPSBEM0RDTVBfRVFVQUw7ICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfR1JFQVRFUjogIGQzZENvbXAgPSBEM0RDTVBfR1JFQVRF
UjsgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfR0VRVUFMOiAgIGQzZENvbXAgPSBEM0RDTVBf
R1JFQVRFUkVRVUFMOyBicmVhazsKKyAgICAgIGNhc2UgR0xfTk9URVFVQUw6IGQzZENvbXAgPSBE
M0RDTVBfTk9URVFVQUw7ICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7
CisgICAgfQorCisgICAgcmV0dXJuIGQzZENvbXA7Cit9CisKK0QzRENPTE9SIENvbnZlcnRDb2xv
cihnbDo6Q29sb3IgY29sb3IpCit7CisgICAgcmV0dXJuIEQzRENPTE9SX1JHQkEoZ2w6OnVub3Jt
PDg+KGNvbG9yLnJlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OnVub3JtPDg+KGNv
bG9yLmdyZWVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oY29sb3Iu
Ymx1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OnVub3JtPDg+KGNvbG9yLmFscGhh
KSk7Cit9CisKK0QzREJMRU5EIENvbnZlcnRCbGVuZEZ1bmMoR0xlbnVtIGJsZW5kKQoreworICAg
IEQzREJMRU5EIGQzZEJsZW5kID0gRDNEQkxFTkRfWkVSTzsKKworICAgIHN3aXRjaCAoYmxlbmQp
CisgICAgeworICAgICAgY2FzZSBHTF9aRVJPOiAgICAgICAgICAgICAgICAgICAgIGQzZEJsZW5k
ID0gRDNEQkxFTkRfWkVSTzsgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkU6ICAg
ICAgICAgICAgICAgICAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfT05FOyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9TUkNfQ09MT1I6ICAgICAgICAgICAgICAgIGQzZEJsZW5kID0g
RDNEQkxFTkRfU1JDQ09MT1I7ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNf
U1JDX0NPTE9SOiAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WU1JDQ09MT1I7ICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6ICAgICAgICAgICAgICAgIGQzZEJsZW5kID0gRDNE
QkxFTkRfREVTVENPTE9SOyAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNU
X0NPTE9SOiAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WREVTVENPTE9SOyAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9TUkNfQUxQSEE6ICAgICAgICAgICAgICAgIGQzZEJsZW5kID0gRDNEQkxF
TkRfU1JDQUxQSEE7ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0FM
UEhBOiAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WU1JDQUxQSEE7ICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9EU1RfQUxQSEE6ICAgICAgICAgICAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRf
REVTVEFMUEhBOyAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNUX0FMUEhB
OiAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WREVTVEFMUEhBOyAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9DT05TVEFOVF9DT0xPUjogICAgICAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfQkxF
TkRGQUNUT1I7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09M
T1I6IGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WQkxFTkRGQUNUT1I7IGJyZWFrOworICAgICAgY2Fz
ZSBHTF9DT05TVEFOVF9BTFBIQTogICAgICAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfQkxFTkRG
QUNUT1I7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6
IGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WQkxFTkRGQUNUT1I7IGJyZWFrOworICAgICAgY2FzZSBH
TF9TUkNfQUxQSEFfU0FUVVJBVEU6ICAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfU1JDQUxQSEFT
QVQ7ICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZDNkQmxlbmQ7Cit9CisKK0QzREJMRU5ET1AgQ29udmVydEJsZW5kT3AoR0xlbnVt
IGJsZW5kT3ApCit7CisgICAgRDNEQkxFTkRPUCBkM2RCbGVuZE9wID0gRDNEQkxFTkRPUF9BREQ7
CisKKyAgICBzd2l0Y2ggKGJsZW5kT3ApCisgICAgeworICAgICAgY2FzZSBHTF9GVU5DX0FERDog
ICAgICAgICAgICAgIGQzZEJsZW5kT3AgPSBEM0RCTEVORE9QX0FERDsgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfRlVOQ19TVUJUUkFDVDogICAgICAgICBkM2RCbGVuZE9wID0gRDNEQkxF
TkRPUF9TVUJUUkFDVDsgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZVTkNfUkVWRVJTRV9TVUJU
UkFDVDogZDNkQmxlbmRPcCA9IEQzREJMRU5ET1BfUkVWU1VCVFJBQ1Q7IGJyZWFrOworICAgICAg
ZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZDNkQmxlbmRPcDsK
K30KKworRDNEU1RFTkNJTE9QIENvbnZlcnRTdGVuY2lsT3AoR0xlbnVtIHN0ZW5jaWxPcCkKK3sK
KyAgICBEM0RTVEVOQ0lMT1AgZDNkU3RlbmNpbE9wID0gRDNEU1RFTkNJTE9QX0tFRVA7CisKKyAg
ICBzd2l0Y2ggKHN0ZW5jaWxPcCkKKyAgICB7CisgICAgICBjYXNlIEdMX1pFUk86ICAgICAgZDNk
U3RlbmNpbE9wID0gRDNEU1RFTkNJTE9QX1pFUk87ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9L
RUVQOiAgICAgIGQzZFN0ZW5jaWxPcCA9IEQzRFNURU5DSUxPUF9LRUVQOyAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfUkVQTEFDRTogICBkM2RTdGVuY2lsT3AgPSBEM0RTVEVOQ0lMT1BfUkVQTEFD
RTsgYnJlYWs7CisgICAgICBjYXNlIEdMX0lOQ1I6ICAgICAgZDNkU3RlbmNpbE9wID0gRDNEU1RF
TkNJTE9QX0lOQ1JTQVQ7IGJyZWFrOworICAgICAgY2FzZSBHTF9ERUNSOiAgICAgIGQzZFN0ZW5j
aWxPcCA9IEQzRFNURU5DSUxPUF9ERUNSU0FUOyBicmVhazsKKyAgICAgIGNhc2UgR0xfSU5WRVJU
OiAgICBkM2RTdGVuY2lsT3AgPSBEM0RTVEVOQ0lMT1BfSU5WRVJUOyAgYnJlYWs7CisgICAgICBj
YXNlIEdMX0lOQ1JfV1JBUDogZDNkU3RlbmNpbE9wID0gRDNEU1RFTkNJTE9QX0lOQ1I7ICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9ERUNSX1dSQVA6IGQzZFN0ZW5jaWxPcCA9IEQzRFNURU5DSUxP
UF9ERUNSOyAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgfQor
CisgICAgcmV0dXJuIGQzZFN0ZW5jaWxPcDsKK30KKworRDNEVEVYVFVSRUFERFJFU1MgQ29udmVy
dFRleHR1cmVXcmFwKEdMZW51bSB3cmFwKQoreworICAgIEQzRFRFWFRVUkVBRERSRVNTIGQzZFdy
YXAgPSBEM0RUQUREUkVTU19XUkFQOworCisgICAgc3dpdGNoICh3cmFwKQorICAgIHsKKyAgICAg
IGNhc2UgR0xfUkVQRUFUOiAgICAgICAgICAgIGQzZFdyYXAgPSBEM0RUQUREUkVTU19XUkFQOyAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9DTEFNUF9UT19FREdFOiAgICAgZDNkV3JhcCA9IEQzRFRB
RERSRVNTX0NMQU1QOyAgYnJlYWs7CisgICAgICBjYXNlIEdMX01JUlJPUkVEX1JFUEVBVDogICBk
M2RXcmFwID0gRDNEVEFERFJFU1NfTUlSUk9SOyBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVB
Q0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIGQzZFdyYXA7Cit9CisKK0QzRENVTEwgQ29u
dmVydEN1bGxNb2RlKEdMZW51bSBjdWxsRmFjZSwgR0xlbnVtIGZyb250RmFjZSkKK3sKKyAgICBE
M0RDVUxMIGN1bGwgPSBEM0RDVUxMX0NDVzsKKyAgICBzd2l0Y2ggKGN1bGxGYWNlKQorICAgIHsK
KyAgICAgIGNhc2UgR0xfRlJPTlQ6CisgICAgICAgIGN1bGwgPSAoZnJvbnRGYWNlID09IEdMX0ND
VyA/IEQzRENVTExfQ1cgOiBEM0RDVUxMX0NDVyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9CQUNLOgorICAgICAgICBjdWxsID0gKGZyb250RmFjZSA9PSBHTF9DQ1cgPyBEM0RDVUxM
X0NDVyA6IEQzRENVTExfQ1cpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfRlJPTlRf
QU5EX0JBQ0s6CisgICAgICAgIGN1bGwgPSBEM0RDVUxMX05PTkU7IC8vIGN1bGxpbmcgd2lsbCBi
ZSBoYW5kbGVkIGR1cmluZyBkcmF3CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gY3VsbDsKK30KKworRDNEQ1VCRU1BUF9G
QUNFUyBDb252ZXJ0Q3ViZUZhY2UoR0xlbnVtIGN1YmVGYWNlKQoreworICAgIEQzRENVQkVNQVBf
RkFDRVMgZmFjZSA9IEQzRENVQkVNQVBfRkFDRV9QT1NJVElWRV9YOworCisgICAgc3dpdGNoIChj
dWJlRmFjZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVf
WDoKKyAgICAgICAgZmFjZSA9IEQzRENVQkVNQVBfRkFDRV9QT1NJVElWRV9YOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgorICAgICAg
ICBmYWNlID0gRDNEQ1VCRU1BUF9GQUNFX05FR0FUSVZFX1g7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6CisgICAgICAgIGZhY2UgPSBE
M0RDVUJFTUFQX0ZBQ0VfUE9TSVRJVkVfWTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKKyAgICAgICAgZmFjZSA9IEQzRENVQkVNQVBf
RkFDRV9ORUdBVElWRV9ZOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9aOgorICAgICAgICBmYWNlID0gRDNEQ1VCRU1BUF9GQUNFX1BPU0lU
SVZFX1o7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05F
R0FUSVZFX1o6CisgICAgICAgIGZhY2UgPSBEM0RDVUJFTUFQX0ZBQ0VfTkVHQVRJVkVfWjsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAg
IHJldHVybiBmYWNlOworfQorCitEV09SRCBDb252ZXJ0Q29sb3JNYXNrKGJvb2wgcmVkLCBib29s
IGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCit7CisgICAgcmV0dXJuIChyZWQgICA/IEQz
RENPTE9SV1JJVEVFTkFCTEVfUkVEICAgOiAwKSB8CisgICAgICAgICAgIChncmVlbiA/IEQzRENP
TE9SV1JJVEVFTkFCTEVfR1JFRU4gOiAwKSB8CisgICAgICAgICAgIChibHVlICA/IEQzRENPTE9S
V1JJVEVFTkFCTEVfQkxVRSAgOiAwKSB8CisgICAgICAgICAgIChhbHBoYSA/IEQzRENPTE9SV1JJ
VEVFTkFCTEVfQUxQSEEgOiAwKTsKK30KKworRDNEVEVYVFVSRUZJTFRFUlRZUEUgQ29udmVydE1h
Z0ZpbHRlcihHTGVudW0gbWFnRmlsdGVyLCBmbG9hdCBtYXhBbmlzb3Ryb3B5KQoreworICAgIGlm
IChtYXhBbmlzb3Ryb3B5ID4gMS4wZikKKyAgICB7CisgICAgICAgIHJldHVybiBEM0RURVhGX0FO
SVNPVFJPUElDOworICAgIH0KKworICAgIEQzRFRFWFRVUkVGSUxURVJUWVBFIGQzZE1hZ0ZpbHRl
ciA9IEQzRFRFWEZfUE9JTlQ7CisgICAgc3dpdGNoIChtYWdGaWx0ZXIpCisgICAgeworICAgICAg
Y2FzZSBHTF9ORUFSRVNUOiBkM2RNYWdGaWx0ZXIgPSBEM0RURVhGX1BPSU5UOyAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX0xJTkVBUjogIGQzZE1hZ0ZpbHRlciA9IEQzRFRFWEZfTElORUFSOyBicmVh
azsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIGQz
ZE1hZ0ZpbHRlcjsKK30KKwordm9pZCBDb252ZXJ0TWluRmlsdGVyKEdMZW51bSBtaW5GaWx0ZXIs
IEQzRFRFWFRVUkVGSUxURVJUWVBFICpkM2RNaW5GaWx0ZXIsIEQzRFRFWFRVUkVGSUxURVJUWVBF
ICpkM2RNaXBGaWx0ZXIsIGZsb2F0IG1heEFuaXNvdHJvcHkpCit7CisgICAgc3dpdGNoIChtaW5G
aWx0ZXIpCisgICAgeworICAgICAgY2FzZSBHTF9ORUFSRVNUOgorICAgICAgICAqZDNkTWluRmls
dGVyID0gRDNEVEVYRl9QT0lOVDsKKyAgICAgICAgKmQzZE1pcEZpbHRlciA9IEQzRFRFWEZfTk9O
RTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJTkVBUjoKKyAgICAgICAgKmQzZE1p
bkZpbHRlciA9IEQzRFRFWEZfTElORUFSOworICAgICAgICAqZDNkTWlwRmlsdGVyID0gRDNEVEVY
Rl9OT05FOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBfTkVB
UkVTVDoKKyAgICAgICAgKmQzZE1pbkZpbHRlciA9IEQzRFRFWEZfUE9JTlQ7CisgICAgICAgICpk
M2RNaXBGaWx0ZXIgPSBEM0RURVhGX1BPSU5UOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfTElORUFSX01JUE1BUF9ORUFSRVNUOgorICAgICAgICAqZDNkTWluRmlsdGVyID0gRDNEVEVY
Rl9MSU5FQVI7CisgICAgICAgICpkM2RNaXBGaWx0ZXIgPSBEM0RURVhGX1BPSU5UOworICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSOgorICAgICAgICAq
ZDNkTWluRmlsdGVyID0gRDNEVEVYRl9QT0lOVDsKKyAgICAgICAgKmQzZE1pcEZpbHRlciA9IEQz
RFRFWEZfTElORUFSOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTElORUFSX01JUE1B
UF9MSU5FQVI6CisgICAgICAgICpkM2RNaW5GaWx0ZXIgPSBEM0RURVhGX0xJTkVBUjsKKyAgICAg
ICAgKmQzZE1pcEZpbHRlciA9IEQzRFRFWEZfTElORUFSOworICAgICAgICBicmVhazsKKyAgICAg
IGRlZmF1bHQ6CisgICAgICAgICpkM2RNaW5GaWx0ZXIgPSBEM0RURVhGX1BPSU5UOworICAgICAg
ICAqZDNkTWlwRmlsdGVyID0gRDNEVEVYRl9OT05FOworICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgIH0KKworICAgIGlmIChtYXhBbmlzb3Ryb3B5ID4gMS4wZikKKyAgICB7CisgICAgICAgICpk
M2RNaW5GaWx0ZXIgPSBEM0RURVhGX0FOSVNPVFJPUElDOworICAgIH0KK30KKworRDNERk9STUFU
IENvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQoR0xlbnVtIGZvcm1hdCkKK3sKKyAgICBzd2l0Y2gg
KGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX05PTkU6ICAgICAgICAgICAgICAgICByZXR1
cm4gRDNERk1UX05VTEw7CisgICAgICBjYXNlIEdMX1JHQkE0OgorICAgICAgY2FzZSBHTF9SR0I1
X0ExOgorICAgICAgY2FzZSBHTF9SR0JBOF9PRVM6ICAgICAgICAgICAgcmV0dXJuIEQzREZNVF9B
OFI4RzhCODsKKyAgICAgIGNhc2UgR0xfUkdCNTY1OiAgICAgICAgICAgICAgIHJldHVybiBEM0RG
TVRfUjVHNkI1OworICAgICAgY2FzZSBHTF9SR0I4X09FUzogICAgICAgICAgICAgcmV0dXJuIEQz
REZNVF9YOFI4RzhCODsKKyAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6CisgICAgICBj
YXNlIEdMX1NURU5DSUxfSU5ERVg4OiAgICAgICAKKyAgICAgIGNhc2UgR0xfREVQVEgyNF9TVEVO
Q0lMOF9PRVM6IHJldHVybiBEM0RGTVRfRDI0Uzg7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJM
RSgpOyAgICAgICByZXR1cm4gRDNERk1UX0E4UjhHOEI4OworICAgIH0KK30KKworRDNETVVMVElT
QU1QTEVfVFlQRSBHZXRNdWx0aXNhbXBsZVR5cGVGcm9tU2FtcGxlcyhHTHNpemVpIHNhbXBsZXMp
Cit7CisgICAgaWYgKHNhbXBsZXMgPD0gMSkKKyAgICAgICAgcmV0dXJuIEQzRE1VTFRJU0FNUExF
X05PTkU7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gKEQzRE1VTFRJU0FNUExFX1RZUEUpc2Ft
cGxlczsKK30KKworfQorCituYW1lc3BhY2UgZDNkOV9nbAoreworCit1bnNpZ25lZCBpbnQgR2V0
U3RlbmNpbFNpemUoRDNERk9STUFUIHN0ZW5jaWxGb3JtYXQpCit7CisgICAgaWYgKHN0ZW5jaWxG
b3JtYXQgPT0gRDNERk1UX0lOVFopCisgICAgeworICAgICAgICByZXR1cm4gODsKKyAgICB9Cisg
ICAgc3dpdGNoKHN0ZW5jaWxGb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEM0RGTVRfRDI0RlM4
OgorICAgICAgY2FzZSBEM0RGTVRfRDI0Uzg6CisgICAgICAgIHJldHVybiA4OworICAgICAgY2Fz
ZSBEM0RGTVRfRDI0WDRTNDoKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgICBjYXNlIEQzREZNVF9E
MTVTMToKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICBjYXNlIEQzREZNVF9EMTZfTE9DS0FCTEU6
CisgICAgICBjYXNlIEQzREZNVF9EMzI6CisgICAgICBjYXNlIEQzREZNVF9EMjRYODoKKyAgICAg
IGNhc2UgRDNERk1UX0QzMkZfTE9DS0FCTEU6CisgICAgICBjYXNlIEQzREZNVF9EMTY6CisgICAg
ICAgIHJldHVybiAwOworICAgIC8vY2FzZSBEM0RGTVRfRDMyX0xPQ0tBQkxFOiAgcmV0dXJuIDA7
ICAgLy8gRGlyZWN0WCA5RXggb25seQorICAgIC8vY2FzZSBEM0RGTVRfUzhfTE9DS0FCTEU6ICAg
cmV0dXJuIDg7ICAgLy8gRGlyZWN0WCA5RXggb25seQorICAgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgR2V0QWxwaGFTaXplKEQzREZPUk1B
VCBjb2xvckZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yRm9ybWF0KQorICAgIHsKKyAgICAg
IGNhc2UgRDNERk1UX0ExNkIxNkcxNlIxNkY6CisgICAgICAgIHJldHVybiAxNjsKKyAgICAgIGNh
c2UgRDNERk1UX0EzMkIzMkczMlIzMkY6CisgICAgICAgIHJldHVybiAzMjsKKyAgICAgIGNhc2Ug
RDNERk1UX0EyUjEwRzEwQjEwOgorICAgICAgICByZXR1cm4gMjsKKyAgICAgIGNhc2UgRDNERk1U
X0E4UjhHOEI4OgorICAgICAgICByZXR1cm4gODsKKyAgICAgIGNhc2UgRDNERk1UX0ExUjVHNUI1
OgorICAgICAgICByZXR1cm4gMTsKKyAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OgorICAgICAg
Y2FzZSBEM0RGTVRfUjVHNkI1OgorICAgICAgICByZXR1cm4gMDsKKyAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworR0xzaXplaSBHZXRTYW1wbGVzRnJvbU11bHRp
c2FtcGxlVHlwZShEM0RNVUxUSVNBTVBMRV9UWVBFIHR5cGUpCit7CisgICAgaWYgKHR5cGUgPT0g
RDNETVVMVElTQU1QTEVfTk9OTUFTS0FCTEUpCisgICAgICAgIHJldHVybiAwOworICAgIGVsc2UK
KyAgICAgICAgcmV0dXJuIHR5cGU7Cit9CisKK2Jvb2wgSXNGb3JtYXRDaGFubmVsRXF1aXZhbGVu
dChEM0RGT1JNQVQgZDNkZm9ybWF0LCBHTGVudW0gZm9ybWF0KQoreworICAgIHN3aXRjaCAoZDNk
Zm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRDNERk1UX0w4OgorICAgICAgICByZXR1cm4gKGZv
cm1hdCA9PSBHTF9MVU1JTkFOQ0UpOworICAgICAgY2FzZSBEM0RGTVRfQThMODoKKyAgICAgICAg
cmV0dXJuIChmb3JtYXQgPT0gR0xfTFVNSU5BTkNFX0FMUEhBKTsKKyAgICAgIGNhc2UgRDNERk1U
X0RYVDE6CisgICAgICAgIHJldHVybiAoZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhUIHx8IGZvcm1hdCA9PSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUKTsK
KyAgICAgIGNhc2UgRDNERk1UX0RYVDM6CisgICAgICAgIHJldHVybiAoZm9ybWF0ID09IEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUpOworICAgICAgY2FzZSBEM0RGTVRfRFhUNToK
KyAgICAgICAgcmV0dXJuIChmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9B
TkdMRSk7CisgICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKKyAgICAgIGNhc2UgRDNERk1UX0Ex
NkIxNkcxNlIxNkY6CisgICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOgorICAgICAgICBy
ZXR1cm4gKGZvcm1hdCA9PSBHTF9SR0JBIHx8IGZvcm1hdCA9PSBHTF9CR1JBX0VYVCk7CisgICAg
ICBjYXNlIEQzREZNVF9YOFI4RzhCODoKKyAgICAgICAgcmV0dXJuIChmb3JtYXQgPT0gR0xfUkdC
KTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChkM2Rmb3JtYXQgPT0gRDNERk1UX0lOVFog
JiYgZ2w6OklzRGVwdGhUZXh0dXJlKGZvcm1hdCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworR0xlbnVtIENvbnZlcnRCYWNrQnVm
ZmVyRm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAg
eworICAgICAgY2FzZSBEM0RGTVRfQTRSNEc0QjQ6IHJldHVybiBHTF9SR0JBNDsKKyAgICAgIGNh
c2UgRDNERk1UX0E4UjhHOEI4OiByZXR1cm4gR0xfUkdCQThfT0VTOworICAgICAgY2FzZSBEM0RG
TVRfQTFSNUc1QjU6IHJldHVybiBHTF9SR0I1X0ExOworICAgICAgY2FzZSBEM0RGTVRfUjVHNkI1
OiAgIHJldHVybiBHTF9SR0I1NjU7CisgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODogcmV0dXJu
IEdMX1JHQjhfT0VTOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gR0xfUkdCQTQ7Cit9CisKK0dMZW51bSBDb252ZXJ0RGVwdGhTdGVu
Y2lsRm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpCit7CisgICAgaWYgKGZvcm1hdCA9PSBEM0RGTVRf
SU5UWikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAg
ICB9CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEM0RGTVRfRDE2Ogor
ICAgICAgY2FzZSBEM0RGTVRfRDI0WDg6CisgICAgICAgIHJldHVybiBHTF9ERVBUSF9DT01QT05F
TlQxNjsKKyAgICAgIGNhc2UgRDNERk1UX0QyNFM4OgorICAgICAgICByZXR1cm4gR0xfREVQVEgy
NF9TVEVOQ0lMOF9PRVM7CisgICAgICBjYXNlIEQzREZNVF9VTktOT1dOOgorICAgICAgICByZXR1
cm4gR0xfTk9ORTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
fQorCisgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOworfQorCitHTGVudW0gQ29u
dmVydFJlbmRlclRhcmdldEZvcm1hdChEM0RGT1JNQVQgZm9ybWF0KQoreworICAgIGlmIChmb3Jt
YXQgPT0gRDNERk1UX0lOVFopCisgICAgeworICAgICAgICByZXR1cm4gR0xfREVQVEgyNF9TVEVO
Q0lMOF9PRVM7CisgICAgfQorICAgIAorICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsKKyAgICAg
IGNhc2UgRDNERk1UX0E0UjRHNEI0OiByZXR1cm4gR0xfUkdCQTQ7CisgICAgICBjYXNlIEQzREZN
VF9BOFI4RzhCODogcmV0dXJuIEdMX1JHQkE4X09FUzsKKyAgICAgIGNhc2UgRDNERk1UX0ExUjVH
NUI1OiByZXR1cm4gR0xfUkdCNV9BMTsKKyAgICAgIGNhc2UgRDNERk1UX1I1RzZCNTogICByZXR1
cm4gR0xfUkdCNTY1OworICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6IHJldHVybiBHTF9SR0I4
X09FUzsKKyAgICAgIGNhc2UgRDNERk1UX0QxNjoKKyAgICAgIGNhc2UgRDNERk1UX0QyNFg4Ogor
ICAgICAgICByZXR1cm4gR0xfREVQVEhfQ09NUE9ORU5UMTY7CisgICAgICBjYXNlIEQzREZNVF9E
MjRTODoKKyAgICAgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOworICAgICAgY2Fz
ZSBEM0RGTVRfVU5LTk9XTjoKKyAgICAgICAgcmV0dXJuIEdMX05PTkU7CisgICAgICBkZWZhdWx0
OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBHTF9SR0JBNDsK
K30KKworR0xlbnVtIEdldEVxdWl2YWxlbnRGb3JtYXQoRDNERk9STUFUIGZvcm1hdCkKK3sKKyAg
ICBpZiAoZm9ybWF0ID09IEQzREZNVF9JTlRaKQorICAgICAgICByZXR1cm4gR0xfREVQVEgyNF9T
VEVOQ0lMOF9PRVM7CisgICAgaWYgKGZvcm1hdCA9PSBEM0RGTVRfTlVMTCkKKyAgICAgICAgcmV0
dXJuIEdMX05PTkU7CisKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEQz
REZNVF9BNFI0RzRCNDogICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkE0OworICAgICAgY2FzZSBE
M0RGTVRfQThSOEc4Qjg6ICAgICAgICAgICAgIHJldHVybiBHTF9SR0JBOF9PRVM7CisgICAgICBj
YXNlIEQzREZNVF9BMVI1RzVCNTogICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjVfQTE7CisgICAg
ICBjYXNlIEQzREZNVF9SNUc2QjU6ICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjU2NTsKKyAg
ICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OiAgICAgICAgICAgICByZXR1cm4gR0xfUkdCOF9PRVM7
CisgICAgICBjYXNlIEQzREZNVF9EMTY6ICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0RFUFRI
X0NPTVBPTkVOVDE2OworICAgICAgY2FzZSBEM0RGTVRfRDI0Uzg6ICAgICAgICAgICAgICAgIHJl
dHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAgICAgIGNhc2UgRDNERk1UX1VOS05PV046
ICAgICAgICAgICAgICByZXR1cm4gR0xfTk9ORTsKKyAgICAgIGNhc2UgRDNERk1UX0RYVDE6ICAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7Cisg
ICAgICBjYXNlIEQzREZNVF9EWFQzOiAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0NPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDNfQU5HTEU7CisgICAgICBjYXNlIEQzREZNVF9EWFQ1OiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU7CisgICAg
ICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOiAgICAgICAgcmV0dXJuIEdMX1JHQkEzMkZfRVhU
OworICAgICAgY2FzZSBEM0RGTVRfQTE2QjE2RzE2UjE2RjogICAgICAgIHJldHVybiBHTF9SR0JB
MTZGX0VYVDsKKyAgICAgIGNhc2UgRDNERk1UX0w4OiAgICAgICAgICAgICAgICAgICByZXR1cm4g
R0xfTFVNSU5BTkNFOF9FWFQ7CisgICAgICBjYXNlIEQzREZNVF9BOEw4OiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDsKKyAgICAgIGRlZmF1bHQ6ICAgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gR0xfTk9ORTsKKyAgICB9Cit9
CisKK30KKworbmFtZXNwYWNlIGQzZDkKK3sKKworYm9vbCBJc0NvbXByZXNzZWRGb3JtYXQoRDNE
Rk9STUFUIHN1cmZhY2VGb3JtYXQpCit7CisgICAgc3dpdGNoKHN1cmZhY2VGb3JtYXQpCisgICAg
eworICAgICAgY2FzZSBEM0RGTVRfRFhUMToKKyAgICAgIGNhc2UgRDNERk1UX0RYVDI6CisgICAg
ICBjYXNlIEQzREZNVF9EWFQzOgorICAgICAgY2FzZSBEM0RGTVRfRFhUNDoKKyAgICAgIGNhc2Ug
RDNERk1UX0RYVDU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc2l6ZV90IENvbXB1dGVSb3dTaXplKEQzREZP
Uk1BVCBmb3JtYXQsIHVuc2lnbmVkIGludCB3aWR0aCkKK3sKKyAgICBpZiAoZm9ybWF0ID09IEQz
REZNVF9JTlRaKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDQgKiB3aWR0aDsKKyAgICB9CisgICAg
c3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEM0RGTVRfTDg6CisgICAgICAgICAg
cmV0dXJuIDEgKiB3aWR0aDsKKyAgICAgIGNhc2UgRDNERk1UX0E4TDg6CisgICAgICAgICAgcmV0
dXJuIDIgKiB3aWR0aDsKKyAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OgorICAgICAgY2FzZSBE
M0RGTVRfQThSOEc4Qjg6CisgICAgICAgIHJldHVybiA0ICogd2lkdGg7CisgICAgICBjYXNlIEQz
REZNVF9BMTZCMTZHMTZSMTZGOgorICAgICAgICByZXR1cm4gOCAqIHdpZHRoOworICAgICAgY2Fz
ZSBEM0RGTVRfQTMyQjMyRzMyUjMyRjoKKyAgICAgICAgcmV0dXJuIDE2ICogd2lkdGg7CisgICAg
ICBjYXNlIEQzREZNVF9EWFQxOgorICAgICAgICByZXR1cm4gOCAqICgod2lkdGggKyAzKSAvIDQp
OworICAgICAgY2FzZSBEM0RGTVRfRFhUMzoKKyAgICAgIGNhc2UgRDNERk1UX0RYVDU6CisgICAg
ICAgIHJldHVybiAxNiAqICgod2lkdGggKyAzKSAvIDQpOworICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVy
OV91dGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyOV91dGlscy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBy
ZW5kZXJlcjlfdXRpbHMuaDogQ29udmVyc2lvbiBmdW5jdGlvbnMgYW5kIG90aGVyIHV0aWxpdHkg
cm91dGluZXMgCisvLyBzcGVjaWZpYyB0byB0aGUgRDNEOSByZW5kZXJlcgorCisjaWZuZGVmIExJ
QkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUjlfVVRJTFNfSAorI2RlZmluZSBMSUJHTEVTVjJfUkVO
REVSRVJfUkVOREVSRVI5X1VUSUxTX0gKKworI2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMu
aCIKKworY29uc3QgRDNERk9STUFUIEQzREZNVF9JTlRaID0gKChEM0RGT1JNQVQpKE1BS0VGT1VS
Q0MoJ0knLCdOJywnVCcsJ1onKSkpOworY29uc3QgRDNERk9STUFUIEQzREZNVF9OVUxMID0gKChE
M0RGT1JNQVQpKE1BS0VGT1VSQ0MoJ04nLCdVJywnTCcsJ0wnKSkpOworCituYW1lc3BhY2UgZ2xf
ZDNkOQoreworCitEM0RDTVBGVU5DIENvbnZlcnRDb21wYXJpc29uKEdMZW51bSBjb21wYXJpc29u
KTsKK0QzRENPTE9SIENvbnZlcnRDb2xvcihnbDo6Q29sb3IgY29sb3IpOworRDNEQkxFTkQgQ29u
dmVydEJsZW5kRnVuYyhHTGVudW0gYmxlbmQpOworRDNEQkxFTkRPUCBDb252ZXJ0QmxlbmRPcChH
TGVudW0gYmxlbmRPcCk7CitEM0RTVEVOQ0lMT1AgQ29udmVydFN0ZW5jaWxPcChHTGVudW0gc3Rl
bmNpbE9wKTsKK0QzRFRFWFRVUkVBRERSRVNTIENvbnZlcnRUZXh0dXJlV3JhcChHTGVudW0gd3Jh
cCk7CitEM0RDVUxMIENvbnZlcnRDdWxsTW9kZShHTGVudW0gY3VsbEZhY2UsIEdMZW51bSBmcm9u
dEZhY2UpOworRDNEQ1VCRU1BUF9GQUNFUyBDb252ZXJ0Q3ViZUZhY2UoR0xlbnVtIGN1YmVGYWNl
KTsKK0RXT1JEIENvbnZlcnRDb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wgYmx1
ZSwgYm9vbCBhbHBoYSk7CitEM0RURVhUVVJFRklMVEVSVFlQRSBDb252ZXJ0TWFnRmlsdGVyKEdM
ZW51bSBtYWdGaWx0ZXIsIGZsb2F0IG1heEFuaXNvdHJvcHkpOwordm9pZCBDb252ZXJ0TWluRmls
dGVyKEdMZW51bSBtaW5GaWx0ZXIsIEQzRFRFWFRVUkVGSUxURVJUWVBFICpkM2RNaW5GaWx0ZXIs
IEQzRFRFWFRVUkVGSUxURVJUWVBFICpkM2RNaXBGaWx0ZXIsIGZsb2F0IG1heEFuaXNvdHJvcHkp
OworRDNERk9STUFUIENvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQoR0xlbnVtIGZvcm1hdCk7CitE
M0RNVUxUSVNBTVBMRV9UWVBFIEdldE11bHRpc2FtcGxlVHlwZUZyb21TYW1wbGVzKEdMc2l6ZWkg
c2FtcGxlcyk7CisKK30KKworbmFtZXNwYWNlIGQzZDlfZ2wKK3sKKworR0x1aW50IEdldEFscGhh
U2l6ZShEM0RGT1JNQVQgY29sb3JGb3JtYXQpOworR0x1aW50IEdldFN0ZW5jaWxTaXplKEQzREZP
Uk1BVCBzdGVuY2lsRm9ybWF0KTsKKworR0xzaXplaSBHZXRTYW1wbGVzRnJvbU11bHRpc2FtcGxl
VHlwZShEM0RNVUxUSVNBTVBMRV9UWVBFIHR5cGUpOworCitib29sIElzRm9ybWF0Q2hhbm5lbEVx
dWl2YWxlbnQoRDNERk9STUFUIGQzZGZvcm1hdCwgR0xlbnVtIGZvcm1hdCk7CitHTGVudW0gQ29u
dmVydEJhY2tCdWZmZXJGb3JtYXQoRDNERk9STUFUIGZvcm1hdCk7CitHTGVudW0gQ29udmVydERl
cHRoU3RlbmNpbEZvcm1hdChEM0RGT1JNQVQgZm9ybWF0KTsKK0dMZW51bSBDb252ZXJ0UmVuZGVy
VGFyZ2V0Rm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpOworR0xlbnVtIEdldEVxdWl2YWxlbnRGb3Jt
YXQoRDNERk9STUFUIGZvcm1hdCk7CisKK30KKworbmFtZXNwYWNlIGQzZDkKK3sKK2Jvb2wgSXND
b21wcmVzc2VkRm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpOworc2l6ZV90IENvbXB1dGVSb3dTaXpl
KEQzREZPUk1BVCBmb3JtYXQsIHVuc2lnbmVkIGludCB3aWR0aCk7CisKK2lubGluZSBib29sIGlz
RGV2aWNlTG9zdEVycm9yKEhSRVNVTFQgZXJyb3JDb2RlKQoreworICAgIHN3aXRjaCAoZXJyb3JD
b2RlKQorICAgIHsKKyAgICAgIGNhc2UgRDNERVJSX0RSSVZFUklOVEVSTkFMRVJST1I6CisgICAg
ICBjYXNlIEQzREVSUl9ERVZJQ0VMT1NUOgorICAgICAgY2FzZSBEM0RFUlJfREVWSUNFSFVORzoK
KyAgICAgIGNhc2UgRDNERVJSX0RFVklDRVJFTU9WRUQ6CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworfQorCisj
ZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUkVSOV9VVElMU19ICkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRp
bHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvcmVuZGVyZXIxMV91dGlscy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4OCBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVk
LmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworLy8gcmVuZGVyZXIxMV91dGlscy5jcHA6IENvbnZlcnNpb24g
ZnVuY3Rpb25zIGFuZCBvdGhlciB1dGlsaXR5IHJvdXRpbmVzCisvLyBzcGVjaWZpYyB0byB0aGUg
RDNEMTEgcmVuZGVyZXIuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXIx
MV91dGlscy5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSBnbF9k
M2QxMQoreworCitEM0QxMV9CTEVORCBDb252ZXJ0QmxlbmRGdW5jKEdMZW51bSBnbEJsZW5kLCBi
b29sIGlzQWxwaGEpCit7CisgICAgRDNEMTFfQkxFTkQgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9a
RVJPOworCisgICAgc3dpdGNoIChnbEJsZW5kKQorICAgIHsKKyAgICAgIGNhc2UgR0xfWkVSTzog
ICAgICAgICAgICAgICAgICAgICBkM2RCbGVuZCA9IEQzRDExX0JMRU5EX1pFUk87ICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkU6ICAgICAgICAgICAgICAgICAgICAgIGQz
ZEJsZW5kID0gRDNEMTFfQkxFTkRfT05FOyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1NSQ19DT0xPUjogICAgICAgICAgICAgICAgZDNkQmxlbmQgPSAoaXNBbHBoYSA/IEQz
RDExX0JMRU5EX1NSQ19BTFBIQSA6IEQzRDExX0JMRU5EX1NSQ19DT0xPUik7ICAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19DT0xPUjogICAgICBkM2RCbGVuZCA9
IChpc0FscGhhID8gRDNEMTFfQkxFTkRfSU5WX1NSQ19BTFBIQSA6IEQzRDExX0JMRU5EX0lOVl9T
UkNfQ09MT1IpOyAgIGJyZWFrOworICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6ICAgICAgICAgICAg
ICAgIGQzZEJsZW5kID0gKGlzQWxwaGEgPyBEM0QxMV9CTEVORF9ERVNUX0FMUEhBIDogRDNEMTFf
QkxFTkRfREVTVF9DT0xPUik7ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX09ORV9NSU5V
U19EU1RfQ09MT1I6ICAgICAgZDNkQmxlbmQgPSAoaXNBbHBoYSA/IEQzRDExX0JMRU5EX0lOVl9E
RVNUX0FMUEhBIDogRDNEMTFfQkxFTkRfSU5WX0RFU1RfQ09MT1IpOyBicmVhazsKKyAgICAgIGNh
c2UgR0xfU1JDX0FMUEhBOiAgICAgICAgICAgICAgICBkM2RCbGVuZCA9IEQzRDExX0JMRU5EX1NS
Q19BTFBIQTsgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0FM
UEhBOiAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfSU5WX1NSQ19BTFBIQTsgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX0RTVF9BTFBIQTogICAgICAgICAgICAgICAgZDNkQmxlbmQgPSBE
M0QxMV9CTEVORF9ERVNUX0FMUEhBOyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfT05F
X01JTlVTX0RTVF9BTFBIQTogICAgICBkM2RCbGVuZCA9IEQzRDExX0JMRU5EX0lOVl9ERVNUX0FM
UEhBOyAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjogICAgICAgICAg
IGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfQkxFTkRfRkFDVE9SOyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUjogZDNkQmxlbmQgPSBEM0QxMV9CTEVO
RF9JTlZfQkxFTkRfRkFDVE9SOyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQUxQ
SEE6ICAgICAgICAgICBkM2RCbGVuZCA9IEQzRDExX0JMRU5EX0JMRU5EX0ZBQ1RPUjsgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6IGQzZEJsZW5k
ID0gRDNEMTFfQkxFTkRfSU5WX0JMRU5EX0ZBQ1RPUjsgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X1NSQ19BTFBIQV9TQVRVUkFURTogICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9TUkNfQUxQ
SEFfU0FUOyAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAg
fQorCisgICAgcmV0dXJuIGQzZEJsZW5kOworfQorCitEM0QxMV9CTEVORF9PUCBDb252ZXJ0Qmxl
bmRPcChHTGVudW0gZ2xCbGVuZE9wKQoreworICAgIEQzRDExX0JMRU5EX09QIGQzZEJsZW5kT3Ag
PSBEM0QxMV9CTEVORF9PUF9BREQ7CisKKyAgICBzd2l0Y2ggKGdsQmxlbmRPcCkKKyAgICB7Cisg
ICAgICBjYXNlIEdMX0ZVTkNfQUREOiAgICAgICAgICAgICAgZDNkQmxlbmRPcCA9IEQzRDExX0JM
RU5EX09QX0FERDsgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9GVU5DX1NVQlRSQUNU
OiAgICAgICAgIGQzZEJsZW5kT3AgPSBEM0QxMV9CTEVORF9PUF9TVUJUUkFDVDsgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUOiBkM2RCbGVuZE9wID0gRDNE
MTFfQkxFTkRfT1BfUkVWX1NVQlRSQUNUOyAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNI
QUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBkM2RCbGVuZE9wOworfQorCitVSU5UOCBDb252
ZXJ0Q29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEp
Cit7CisgICAgVUlOVDggbWFzayA9IDA7CisgICAgaWYgKHJlZCkKKyAgICB7CisgICAgICAgIG1h
c2sgfD0gRDNEMTFfQ09MT1JfV1JJVEVfRU5BQkxFX1JFRDsKKyAgICB9CisgICAgaWYgKGdyZWVu
KQorICAgIHsKKyAgICAgICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFCTEVfR1JFRU47
CisgICAgfQorICAgIGlmIChibHVlKQorICAgIHsKKyAgICAgICAgbWFzayB8PSBEM0QxMV9DT0xP
Ul9XUklURV9FTkFCTEVfQkxVRTsKKyAgICB9CisgICAgaWYgKGFscGhhKQorICAgIHsKKyAgICAg
ICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFCTEVfQUxQSEE7CisgICAgfQorICAgIHJl
dHVybiBtYXNrOworfQorCitEM0QxMV9DVUxMX01PREUgQ29udmVydEN1bGxNb2RlKGJvb2wgY3Vs
bEVuYWJsZWQsIEdMZW51bSBjdWxsTW9kZSkKK3sKKyAgICBEM0QxMV9DVUxMX01PREUgY3VsbCA9
IEQzRDExX0NVTExfTk9ORTsKKworICAgIGlmIChjdWxsRW5hYmxlZCkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAoY3VsbE1vZGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0ZST05UOiAg
ICAgICAgICAgIGN1bGwgPSBEM0QxMV9DVUxMX0ZST05UOyAgICBicmVhazsKKyAgICAgICAgICBj
YXNlIEdMX0JBQ0s6ICAgICAgICAgICAgIGN1bGwgPSBEM0QxMV9DVUxMX0JBQ0s7ICAgICBicmVh
azsKKyAgICAgICAgICBjYXNlIEdMX0ZST05UX0FORF9CQUNLOiAgIGN1bGwgPSBEM0QxMV9DVUxM
X05PTkU7ICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAg
ICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGN1bGwgPSBEM0QxMV9DVUxM
X05PTkU7CisgICAgfQorCisgICAgcmV0dXJuIGN1bGw7Cit9CisKK0QzRDExX0NPTVBBUklTT05f
RlVOQyBDb252ZXJ0Q29tcGFyaXNvbihHTGVudW0gY29tcGFyaXNvbikKK3sKKyAgICBEM0QxMV9D
T01QQVJJU09OX0ZVTkMgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05fTkVWRVI7CisgICAgc3dp
dGNoIChjb21wYXJpc29uKQorICAgIHsKKyAgICAgIGNhc2UgR0xfTkVWRVI6ICAgIGQzZENvbXAg
PSBEM0QxMV9DT01QQVJJU09OX05FVkVSOyAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X0FMV0FZUzogICBkM2RDb21wID0gRDNEMTFfQ09NUEFSSVNPTl9BTFdBWVM7ICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9MRVNTOiAgICAgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05f
TEVTUzsgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTEVRVUFMOiAgIGQzZENvbXAg
PSBEM0QxMV9DT01QQVJJU09OX0xFU1NfRVFVQUw7ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X0VRVUFMOiAgICBkM2RDb21wID0gRDNEMTFfQ09NUEFSSVNPTl9FUVVBTDsgICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9HUkVBVEVSOiAgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05f
R1JFQVRFUjsgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfR0VRVUFMOiAgIGQzZENvbXAg
PSBEM0QxMV9DT01QQVJJU09OX0dSRUFURVJfRVFVQUw7ICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X05PVEVRVUFMOiBkM2RDb21wID0gRDNEMTFfQ09NUEFSSVNPTl9OT1RfRVFVQUw7ICAgICAgIGJy
ZWFrOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZDNkQ29tcDsKK30KKworRDNEMTFfREVQVEhfV1JJVEVfTUFTSyBDb252ZXJ0RGVwdGhNYXNrKGJv
b2wgZGVwdGhXcml0ZUVuYWJsZWQpCit7CisgICAgcmV0dXJuIGRlcHRoV3JpdGVFbmFibGVkID8g
RDNEMTFfREVQVEhfV1JJVEVfTUFTS19BTEwgOiBEM0QxMV9ERVBUSF9XUklURV9NQVNLX1pFUk87
Cit9CisKK1VJTlQ4IENvbnZlcnRTdGVuY2lsTWFzayhHTHVpbnQgc3RlbmNpbG1hc2spCit7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFVJTlQ4PihzdGVuY2lsbWFzayk7Cit9CisKK0QzRDExX1NU
RU5DSUxfT1AgQ29udmVydFN0ZW5jaWxPcChHTGVudW0gc3RlbmNpbE9wKQoreworICAgIEQzRDEx
X1NURU5DSUxfT1AgZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RFTkNJTF9PUF9LRUVQOworCisgICAg
c3dpdGNoIChzdGVuY2lsT3ApCisgICAgeworICAgICAgY2FzZSBHTF9aRVJPOiAgICAgIGQzZFN0
ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfWkVSTzsgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfS0VFUDogICAgICBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0tFRVA7ICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX1JFUExBQ0U6ICAgZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RF
TkNJTF9PUF9SRVBMQUNFOyAgIGJyZWFrOworICAgICAgY2FzZSBHTF9JTkNSOiAgICAgIGQzZFN0
ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfSU5DUl9TQVQ7ICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfREVDUjogICAgICBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0RFQ1JfU0FUOyAg
YnJlYWs7CisgICAgICBjYXNlIEdMX0lOVkVSVDogICAgZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RF
TkNJTF9PUF9JTlZFUlQ7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9JTkNSX1dSQVA6IGQzZFN0
ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfSU5DUjsgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfREVDUl9XUkFQOiBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0RFQ1I7ICAgICAg
YnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVy
biBkM2RTdGVuY2lsT3A7Cit9CisKK0QzRDExX0ZJTFRFUiBDb252ZXJ0RmlsdGVyKEdMZW51bSBt
aW5GaWx0ZXIsIEdMZW51bSBtYWdGaWx0ZXIsIGZsb2F0IG1heEFuaXNvdHJvcHkpCit7CisgICAg
aWYgKG1heEFuaXNvdHJvcHkgPiAxLjBmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEQzRDExX0VO
Q09ERV9BTklTT1RST1BJQ19GSUxURVIoZmFsc2UpOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBEM0QxMV9GSUxURVJfVFlQRSBkeE1pbiA9IEQzRDExX0ZJTFRFUl9UWVBFX1BPSU5U
OworICAgICAgICBEM0QxMV9GSUxURVJfVFlQRSBkeE1pcCA9IEQzRDExX0ZJTFRFUl9UWVBFX1BP
SU5UOworICAgICAgICBzd2l0Y2ggKG1pbkZpbHRlcikKKyAgICAgICAgeworICAgICAgICAgIGNh
c2UgR0xfTkVBUkVTVDogICAgICAgICAgICAgICAgZHhNaW4gPSBEM0QxMV9GSUxURVJfVFlQRV9Q
T0lOVDsgIGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7ICBicmVhazsKKyAgICAgICAg
ICBjYXNlIEdMX0xJTkVBUjogICAgICAgICAgICAgICAgIGR4TWluID0gRDNEMTFfRklMVEVSX1RZ
UEVfTElORUFSOyBkeE1pcCA9IEQzRDExX0ZJTFRFUl9UWVBFX1BPSU5UOyAgYnJlYWs7CisgICAg
ICAgICAgY2FzZSBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUOiBkeE1pbiA9IEQzRDExX0ZJTFRF
Ul9UWVBFX1BPSU5UOyAgZHhNaXAgPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsgIGJyZWFrOwor
ICAgICAgICAgIGNhc2UgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUOiAgZHhNaW4gPSBEM0QxMV9G
SUxURVJfVFlQRV9MSU5FQVI7IGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7ICBicmVh
azsKKyAgICAgICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUjogIGR4TWluID0gRDNE
MTFfRklMVEVSX1RZUEVfUE9JTlQ7ICBkeE1pcCA9IEQzRDExX0ZJTFRFUl9UWVBFX0xJTkVBUjsg
YnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUjogICBkeE1pbiA9
IEQzRDExX0ZJTFRFUl9UWVBFX0xJTkVBUjsgZHhNaXAgPSBEM0QxMV9GSUxURVJfVFlQRV9MSU5F
QVI7IGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgfQorCisgICAgICAgIEQzRDExX0ZJTFRFUl9UWVBFIGR4TWFn
ID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7CisgICAgICAgIHN3aXRjaCAobWFnRmlsdGVyKQor
ICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9ORUFSRVNUOiBkeE1hZyA9IEQzRDExX0ZJTFRF
Ul9UWVBFX1BPSU5UOyAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9MSU5FQVI6ICBkeE1hZyA9
IEQzRDExX0ZJTFRFUl9UWVBFX0xJTkVBUjsgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDogICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEQzRDExX0VO
Q09ERV9CQVNJQ19GSUxURVIoZHhNaW4sIGR4TWFnLCBkeE1pcCwgZmFsc2UpOworICAgIH0KK30K
KworRDNEMTFfVEVYVFVSRV9BRERSRVNTX01PREUgQ29udmVydFRleHR1cmVXcmFwKEdMZW51bSB3
cmFwKQoreworICAgIHN3aXRjaCAod3JhcCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JFUEVBVDog
ICAgICAgICAgcmV0dXJuIEQzRDExX1RFWFRVUkVfQUREUkVTU19XUkFQOworICAgICAgY2FzZSBH
TF9DTEFNUF9UT19FREdFOiAgIHJldHVybiBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7Cisg
ICAgICBjYXNlIEdMX01JUlJPUkVEX1JFUEVBVDogcmV0dXJuIEQzRDExX1RFWFRVUkVfQUREUkVT
U19NSVJST1I7CisgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICB9CisKKyAgICByZXR1cm4gRDNEMTFfVEVYVFVSRV9BRERSRVNTX1dSQVA7Cit9CisKK0ZM
T0FUIENvbnZlcnRNaW5MT0QoR0xlbnVtIG1pbkZpbHRlciwgdW5zaWduZWQgaW50IGxvZE9mZnNl
dCkKK3sKKyAgICByZXR1cm4gKG1pbkZpbHRlciA9PSBHTF9ORUFSRVNUIHx8IG1pbkZpbHRlciA9
PSBHTF9MSU5FQVIpID8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGxvZE9mZnNldCkgOiAtRkxUX01BWDsK
K30KKworRkxPQVQgQ29udmVydE1heExPRChHTGVudW0gbWluRmlsdGVyLCB1bnNpZ25lZCBpbnQg
bG9kT2Zmc2V0KQoreworICAgIHJldHVybiAobWluRmlsdGVyID09IEdMX05FQVJFU1QgfHwgbWlu
RmlsdGVyID09IEdMX0xJTkVBUikgPyBzdGF0aWNfY2FzdDxmbG9hdD4obG9kT2Zmc2V0KSA6IEZM
VF9NQVg7Cit9CisKK30KKworbmFtZXNwYWNlIGQzZDExX2dsCit7CisKK0dMZW51bSBDb252ZXJ0
QmFja0J1ZmZlckZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3Jt
YXQpCisgICAgeworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STTogcmV0dXJu
IEdMX1JHQkE4X09FUzsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk06IHJl
dHVybiBHTF9CR1JBOF9FWFQ7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgIH0KKworICAgIHJldHVybiBHTF9SR0JBOF9PRVM7Cit9CisKK0dMZW51bSBDb252ZXJ0
RGVwdGhTdGVuY2lsRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGZv
cm1hdCkKKyAgICB7CisgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046IHJldHVybiBHTF9O
T05FOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06IHJldHVybiBHTF9ERVBUSF9D
T01QT05FTlQxNjsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6IHJl
dHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VT
OworfQorCitHTGVudW0gQ29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChEWEdJX0ZPUk1BVCBmb3Jt
YXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9COEc4UjhBOF9VTk9STToKKyAgICAgICAgcmV0dXJuIEdMX0JHUkE4X0VYVDsKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk06CisgICAgICAgIHJldHVybiBHTF9SR0JBOF9P
RVM7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QxNl9VTk9STToKKyAgICAgICAgcmV0dXJuIEdM
X0RFUFRIX0NPTVBPTkVOVDE2OworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhf
VUlOVDoKKyAgICAgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOworICAgICAgZGVm
YXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfUkdC
QThfT0VTOworfQorCitHTGVudW0gQ29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdChEWEdJX0ZP
Uk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAgICAgICAgcmV0dXJuIEdMX1JHQkE4X09FUzsK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQThfVU5PUk06CisgICAgICAgIHJldHVybiBHTF9BTFBI
QThfRVhUOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk06CisgICAgICAgIHJldHVy
biBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDsKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkMyX1VOT1JNOgorICAgICAgICByZXR1cm4gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
M19BTkdMRTsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNOgorICAgICAgICByZXR1
cm4gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRTsKKyAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgorICAgICAgICByZXR1cm4gR0xfUkdCQTMyRl9FWFQ7
CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVDoKKyAgICAgICAgcmV0dXJu
IEdMX1JHQjMyRl9FWFQ7CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9B
VDoKKyAgICAgICAgcmV0dXJuIEdMX1JHQkExNkZfRVhUOworICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9COEc4UjhBOF9VTk9STToKKyAgICAgICAgcmV0dXJuIEdMX0JHUkE4X0VYVDsKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjhfVU5PUk06CisgICAgICAgIHJldHVybiBHTF9SOF9FWFQ7CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVU5PUk06CisgICAgICAgIHJldHVybiBHTF9SRzhfRVhU
OworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6CisgICAgICAgIHJldHVybiBHTF9S
MTZGX0VYVDsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FUOgorICAgICAgICBy
ZXR1cm4gR0xfUkcxNkZfRVhUOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06Cisg
ICAgICAgIHJldHVybiBHTF9ERVBUSF9DT01QT05FTlQxNjsKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfRDI0X1VOT1JNX1M4X1VJTlQ6CisgICAgICAgIHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4
X09FUzsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKKyAgICAgICAgcmV0dXJuIEdM
X05PTkU7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKwor
ICAgIHJldHVybiBHTF9SR0JBOF9PRVM7Cit9CisKK30KKworbmFtZXNwYWNlIGdsX2QzZDExCit7
CisKK0RYR0lfRk9STUFUIENvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQoR0xlbnVtIGZvcm1hdCkK
K3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQkE0OgorICAg
ICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgY2FzZSBHTF9SR0JBOF9PRVM6CisgICAgICBjYXNl
IEdMX1JHQjU2NToKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICAgIHJldHVybiBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STTsKKyAgICAgIGNhc2UgR0xfQkdSQThfRVhUOgorICAgICAg
ICByZXR1cm4gRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk07CisgICAgICBjYXNlIEdMX0RFUFRI
X0NPTVBPTkVOVDE2OgorICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfRDE2X1VOT1JNOworICAg
ICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKKyAgICAgIGNhc2UgR0xfREVQVEgyNF9TVEVOQ0lM
OF9PRVM6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDsKKyAg
ICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJu
IERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOworfQorCitEWEdJX0ZPUk1BVCBDb252ZXJ0VGV4
dHVyZUZvcm1hdChHTGVudW0gaW50ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5h
bGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2UgR0xfUkdC
QTQ6CisgICAgICBjYXNlIEdMX1JHQjVfQTE6CisgICAgICBjYXNlIEdMX1JHQjhfT0VTOgorICAg
ICAgY2FzZSBHTF9SR0JBOF9PRVM6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhUOgorICAg
ICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQ6CisgICAgICAgIHJldHVybiBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STTsKKyAgICAgIGNhc2UgR0xfQUxQSEE4X0VYVDoKKyAgICAgICAg
cmV0dXJuIERYR0lfRk9STUFUX0E4X1VOT1JNOworICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhUOgorICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVDoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX0JDMV9VTk9STTsKKyAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAgICAgcmV0dXJuIERYR0lf
Rk9STUFUX0JDMl9VTk9STTsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
NV9BTkdMRToKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX0JDM19VTk9STTsKKyAgICAgIGNh
c2UgR0xfUkdCQTMyRl9FWFQ6CisgICAgICBjYXNlIEdMX0FMUEhBMzJGX0VYVDoKKyAgICAgIGNh
c2UgR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVDoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFU
X1IzMkczMkIzMkEzMl9GTE9BVDsKKyAgICAgIGNhc2UgR0xfUkdCMzJGX0VYVDoKKyAgICAgIGNh
c2UgR0xfTFVNSU5BTkNFMzJGX0VYVDoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1IzMkcz
MkIzMl9GTE9BVDsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6CisgICAgICBjYXNlIEdMX0FM
UEhBMTZGX0VYVDoKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoKKyAgICAg
IGNhc2UgR0xfUkdCMTZGX0VYVDoKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMTZGX0VYVDoKKyAg
ICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDsKKyAgICAgIGNhc2Ug
R0xfQkdSQThfRVhUOgorICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk07
CisgICAgICBjYXNlIEdMX1I4X0VYVDoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1I4X1VO
T1JNOworICAgICAgY2FzZSBHTF9SRzhfRVhUOgorICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRf
UjhHOF9VTk9STTsKKyAgICAgIGNhc2UgR0xfUjE2Rl9FWFQ6CisgICAgICAgIHJldHVybiBEWEdJ
X0ZPUk1BVF9SMTZfRkxPQVQ7CisgICAgICBjYXNlIEdMX1JHMTZGX0VYVDoKKyAgICAgICAgcmV0
dXJuIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVDsKKyAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9O
RU5UMTY6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9EMTZfVU5PUk07CisgICAgICBjYXNl
IEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzoKKyAgICAgIGNhc2UgR0xfREVQVEgyNF9TVEVOQ0lM
OF9PRVM6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDsKKyAg
ICAgIGNhc2UgR0xfTk9ORToKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1VOS05PV047Cisg
ICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVy
biBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STTsKK30KKworfQorCituYW1lc3BhY2UgZDNkMTEK
K3sKKwordm9pZCBTZXRQb3NpdGlvblRleENvb3JkVmVydGV4KFBvc2l0aW9uVGV4Q29vcmRWZXJ0
ZXgqIHZlcnRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgdSwgZmxvYXQgdikKK3sKKyAgICB2
ZXJ0ZXgtPnggPSB4OworICAgIHZlcnRleC0+eSA9IHk7CisgICAgdmVydGV4LT51ID0gdTsKKyAg
ICB2ZXJ0ZXgtPnYgPSB2OworfQorCit2b2lkIFNldFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleChQ
b3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXgqIHZlcnRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
eiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDb2xvciAmY29s
b3IpCit7CisgICAgdmVydGV4LT54ID0geDsKKyAgICB2ZXJ0ZXgtPnkgPSB5OworICAgIHZlcnRl
eC0+eiA9IHo7CisgICAgdmVydGV4LT5yID0gY29sb3IucmVkOworICAgIHZlcnRleC0+ZyA9IGNv
bG9yLmdyZWVuOworICAgIHZlcnRleC0+YiA9IGNvbG9yLmJsdWU7CisgICAgdmVydGV4LT5hID0g
Y29sb3IuYWxwaGE7Cit9CisKK3NpemVfdCBDb21wdXRlUGl4ZWxTaXplQml0cyhEWEdJX0ZPUk1B
VCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMV9VTk9STToKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfQThfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1NJTlQ6CisgICAgICBj
YXNlIERYR0lfRk9STUFUX1I4X1NOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9UWVBF
TEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVUlOVDoKKyAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjhfVU5PUk06CisgICAgICAgIHJldHVybiA4OworCisgICAgICBjYXNlIERYR0lfRk9S
TUFUX0I1RzVSNUExX1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk06
CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QxNl9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjE2X0ZMT0FUOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfU0lOVDoKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjE2X1NOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVFlQ
RUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9VSU5UOgorICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMTZfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfU0lOVDoKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjhHOF9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VSU5UOgorICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNOgorICAgICAgICByZXR1cm4gMTY7CisKKyAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX0I4RzhSOFg4X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhYOF9VTk9S
TV9TUkdCOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDoKKyAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMzJf
RkxPQVRfUzhYMjRfVUlOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRzhSOF9HOEI4X1VOT1JN
OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBfWFJfQklBU19BMl9VTk9STToKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVFlQRUxFU1M6CisgICAgICBjYXNlIERY
R0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcx
MEIxMEEyX1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQ6Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjE2RzE2X1NJTlQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9TTk9STToKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SMTZHMTZfVUlOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNOgor
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1M6CisgICAgICBjYXNl
IERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJf
RkxPQVQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9GTE9BVF9YOFgyNF9UWVBFTEVTUzoK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1NJTlQ6CisgICAgICBjYXNlIERYR0lfRk9STUFU
X1IzMl9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1VJTlQ6CisgICAgICBj
YXNlIERYR0lfRk9STUFUX1I4RzhfQjhHOF9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjhHOEI4QThfU0lOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk06Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQjoKKyAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX0I4RzhSOEE4X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9S
TV9TUkdCOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFA6CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5UOgorICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9YMzJfVFlQRUxFU1NfRzhYMjRfVUlOVDoKKyAgICAgICAgcmV0dXJuIDMyOworCisg
ICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1RZUEVM
RVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVDoKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMzJHMzJfRkxPQVQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9TSU5UOgorICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IzMkczMl9VSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHOFgyNF9UWVBFTEVT
UzoKKyAgICAgICAgcmV0dXJuIDY0OworCisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIz
Ml9GTE9BVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1NJTlQ6CisgICAgICBj
YXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyX1VJTlQ6CisgICAgICAgIHJldHVybiA5NjsKKworICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkcz
MkIzMkEzMl9TSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVFlQRUxF
U1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5UOgorICAgICAgICBy
ZXR1cm4gMTI4OworCisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9UWVBFTEVTUzoKKyAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFf
VU5PUk1fU1JHQjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1NOT1JNOgorICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzRfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9V
Tk9STToKKyAgICAgICAgcmV0dXJuIDQ7CisKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1RZ
UEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk06CisgICAgICBjYXNlIERY
R0lfRk9STUFUX0JDMl9VTk9STV9TUkdCOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVFlQ
RUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STToKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQkMzX1VOT1JNX1NSR0I6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9TTk9S
TToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzVfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfU0YxNjoKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM2SF9VRjE2OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVFlQRUxFU1M6CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX0JDN19VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3
X1VOT1JNX1NSR0I6CisgICAgICAgIHJldHVybiA4OworCisgICAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3NpemVfdCBDb21wdXRlQmxvY2tTaXplQml0cyhEWEdJ
X0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzFfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9V
Tk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0I6CisgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDNF9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1RZUEVM
RVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVU5PUk06CisgICAgICBjYXNlIERYR0lf
Rk9STUFUX0JDMl9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1VOT1JNOgor
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQjoKKyAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfQkMzX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk06Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STV9TUkdCOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzVfU05PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9UWVBFTEVTUzoKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzZIX1NGMTY6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVFlQRUxFU1M6CisgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDNkhfVUYxNjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1RZ
UEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk06CisgICAgICBjYXNlIERY
R0lfRk9STUFUX0JDN19VTk9STV9TUkdCOgorICAgICAgICByZXR1cm4gQ29tcHV0ZVBpeGVsU2l6
ZUJpdHMoZm9ybWF0KSAqIDE2OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitib29sIElzQ29tcHJlc3NlZChEWEdJ
X0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzFfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9V
Tk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0I6CisgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDNF9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1RZUEVM
RVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVU5PUk06CisgICAgICBjYXNlIERYR0lf
Rk9STUFUX0JDMl9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1VOT1JNOgor
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQjoKKyAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfQkMzX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk06Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STV9TUkdCOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzVfU05PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9UWVBFTEVTUzoKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzZIX1NGMTY6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVFlQRUxFU1M6CisgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDNkhfVUYxNjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1RZ
UEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk06CisgICAgICBjYXNlIERY
R0lfRk9STUFUX0JDN19VTk9STV9TUkdCOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK30KKwordW5zaWduZWQgaW50IEdldFRleHR1cmVGb3JtYXREaW1lbnNpb25BbGlnbm1lbnQo
RFhHSV9GT1JNQVQgZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsKKyAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQkMxX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzFfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9VTk9STV9TUkdCOgorICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzRfU05PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9U
WVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1VOT1JNOgorICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CQzJfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9S
TToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1VOT1JNX1NSR0I6CisgICAgICBjYXNlIERY
R0lfRk9STUFUX0JDM19UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JN
OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQjoKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQkM1X1NOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVfVFlQRUxFU1M6
CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM2SF9TRjE2OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1RZUEVMRVNTOgorICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1VGMTY6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
N19UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1VOT1JNOgorICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk1fU1JHQjoKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgICBj
YXNlIERYR0lfRk9STUFUX1VOS05PV046CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
IHJldHVybiAxOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQor
Citib29sIElzRGVwdGhTdGVuY2lsRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCkKK3sKKyAgICBz
d2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QzMl9GTE9BVF9T
OFgyNF9VSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMzJfRkxPQVQ6CisgICAgICBjYXNl
IERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9E
MTZfVU5PUk06CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworRFhHSV9GT1JNQVQgR2V0RGVwdGhUZXh0dXJlRm9y
bWF0KERYR0lfRk9STUFUIGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX0QzMl9GTE9BVF9TOFgyNF9VSU5UOiByZXR1cm4gRFhHSV9G
T1JNQVRfUjMyRzhYMjRfVFlQRUxFU1M7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QzMl9GTE9B
VDogICAgICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjMyX1RZUEVMRVNTOworICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDogICAgcmV0dXJuIERYR0lfRk9STUFUX1Iy
NEc4X1RZUEVMRVNTOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06ICAgICAgICAg
ICAgcmV0dXJuIERYR0lfRk9STUFUX1IxNl9UWVBFTEVTUzsKKyAgICAgIGRlZmF1bHQ6IFVOUkVB
Q0hBQkxFKCk7ICAgICAgICAgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAg
IH0KK30KKworRFhHSV9GT1JNQVQgR2V0RGVwdGhTaGFkZXJSZXNvdXJjZUZvcm1hdChEWEdJX0ZP
Uk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVDogcmV0dXJuIERYR0lfRk9STUFUX1IzMl9G
TE9BVF9YOFgyNF9UWVBFTEVTUzsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUOiAg
ICAgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9SMzJfVUlOVDsKKyAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6ICAgIHJldHVybiBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1f
WDhfVFlQRUxFU1M7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QxNl9VTk9STTogICAgICAgICAg
ICByZXR1cm4gRFhHSV9GT1JNQVRfUjE2X1VOT1JNOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFC
TEUoKTsgICAgICAgICAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1VOS05PV047CisgICAgfQor
fQorCitIUkVTVUxUIFNldERlYnVnTmFtZShJRDNEMTFEZXZpY2VDaGlsZCAqcmVzb3VyY2UsIGNv
bnN0IGNoYXIgKm5hbWUpCit7CisjaWYgZGVmaW5lZChfREVCVUcpCisgICAgcmV0dXJuIHJlc291
cmNlLT5TZXRQcml2YXRlRGF0YShXS1BESURfRDNERGVidWdPYmplY3ROYW1lLCBzdHJsZW4obmFt
ZSksIG5hbWUpOworI2Vsc2UKKyAgICByZXR1cm4gU19PSzsKKyNlbmRpZgorfQorCit9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVy
MTFfdXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXIxMV91dGls
cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk1IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gcmVu
ZGVyZXIxMV91dGlscy5oOiBDb252ZXJzaW9uIGZ1bmN0aW9ucyBhbmQgb3RoZXIgdXRpbGl0eSBy
b3V0aW5lcworLy8gc3BlY2lmaWMgdG8gdGhlIEQzRDExIHJlbmRlcmVyLgorCisjaWZuZGVmIExJ
QkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUjExX1VUSUxTX0gKKyNkZWZpbmUgTElCR0xFU1YyX1JF
TkRFUkVSX1JFTkRFUkVSMTFfVVRJTFNfSAorCisjaW5jbHVkZSAibGliR0xFU3YyL2FuZ2xldHlw
ZXMuaCIKKworbmFtZXNwYWNlIGdsX2QzZDExCit7CisKK0QzRDExX0JMRU5EIENvbnZlcnRCbGVu
ZEZ1bmMoR0xlbnVtIGdsQmxlbmQsIGJvb2wgaXNBbHBoYSk7CitEM0QxMV9CTEVORF9PUCBDb252
ZXJ0QmxlbmRPcChHTGVudW0gZ2xCbGVuZE9wKTsKK1VJTlQ4IENvbnZlcnRDb2xvck1hc2soYm9v
bCBtYXNrUmVkLCBib29sIG1hc2tHcmVlbiwgYm9vbCBtYXNrQmx1ZSwgYm9vbCBtYXNrQWxwaGEp
OworCitEM0QxMV9DVUxMX01PREUgQ29udmVydEN1bGxNb2RlKGJvb2wgY3VsbEVuYWJsZWQsIEdM
ZW51bSBjdWxsTW9kZSk7CisKK0QzRDExX0NPTVBBUklTT05fRlVOQyBDb252ZXJ0Q29tcGFyaXNv
bihHTGVudW0gY29tcGFyaXNvbik7CitEM0QxMV9ERVBUSF9XUklURV9NQVNLIENvbnZlcnREZXB0
aE1hc2soYm9vbCBkZXB0aFdyaXRlRW5hYmxlZCk7CitVSU5UOCBDb252ZXJ0U3RlbmNpbE1hc2so
R0x1aW50IHN0ZW5jaWxtYXNrKTsKK0QzRDExX1NURU5DSUxfT1AgQ29udmVydFN0ZW5jaWxPcChH
TGVudW0gc3RlbmNpbE9wKTsKKworRDNEMTFfRklMVEVSIENvbnZlcnRGaWx0ZXIoR0xlbnVtIG1p
bkZpbHRlciwgR0xlbnVtIG1hZ0ZpbHRlciwgZmxvYXQgbWF4QW5pc290cm9weSk7CitEM0QxMV9U
RVhUVVJFX0FERFJFU1NfTU9ERSBDb252ZXJ0VGV4dHVyZVdyYXAoR0xlbnVtIHdyYXApOworRkxP
QVQgQ29udmVydE1pbkxPRChHTGVudW0gbWluRmlsdGVyLCB1bnNpZ25lZCBpbnQgbG9kT2Zmc2V0
KTsKK0ZMT0FUIENvbnZlcnRNYXhMT0QoR0xlbnVtIG1pbkZpbHRlciwgdW5zaWduZWQgaW50IGxv
ZE9mZnNldCk7CisKK0RYR0lfRk9STUFUIENvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQoR0xlbnVt
IGZvcm1hdCk7CitEWEdJX0ZPUk1BVCBDb252ZXJ0VGV4dHVyZUZvcm1hdChHTGVudW0gZm9ybWF0
KTsKK30KKworbmFtZXNwYWNlIGQzZDExX2dsCit7CisKK0dMZW51bSBDb252ZXJ0QmFja0J1ZmZl
ckZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpOworR0xlbnVtIENvbnZlcnREZXB0aFN0ZW5jaWxG
b3JtYXQoRFhHSV9GT1JNQVQgZm9ybWF0KTsKK0dMZW51bSBDb252ZXJ0UmVuZGVyYnVmZmVyRm9y
bWF0KERYR0lfRk9STUFUIGZvcm1hdCk7CitHTGVudW0gQ29udmVydFRleHR1cmVJbnRlcm5hbEZv
cm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpOworCit9CisKK25hbWVzcGFjZSBkM2QxMQoreworCitz
dHJ1Y3QgUG9zaXRpb25UZXhDb29yZFZlcnRleAoreworICAgIGZsb2F0IHgsIHk7CisgICAgZmxv
YXQgdSwgdjsKK307Cit2b2lkIFNldFBvc2l0aW9uVGV4Q29vcmRWZXJ0ZXgoUG9zaXRpb25UZXhD
b29yZFZlcnRleCogdmVydGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB1LCBmbG9hdCB2KTsK
Kworc3RydWN0IFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleAoreworICAgIGZsb2F0IHgsIHksIHo7
CisgICAgZmxvYXQgciwgZywgYiwgYTsKK307Cit2b2lkIFNldFBvc2l0aW9uRGVwdGhDb2xvclZl
cnRleChQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXgqIHZlcnRleCwgZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDb2xv
ciAmY29sb3IpOworCitzaXplX3QgQ29tcHV0ZVBpeGVsU2l6ZUJpdHMoRFhHSV9GT1JNQVQgZm9y
bWF0KTsKK3NpemVfdCBDb21wdXRlQmxvY2tTaXplQml0cyhEWEdJX0ZPUk1BVCBmb3JtYXQpOwor
Citib29sIElzQ29tcHJlc3NlZChEWEdJX0ZPUk1BVCBmb3JtYXQpOwordW5zaWduZWQgaW50IEdl
dFRleHR1cmVGb3JtYXREaW1lbnNpb25BbGlnbm1lbnQoRFhHSV9GT1JNQVQgZm9ybWF0KTsKKwor
Ym9vbCBJc0RlcHRoU3RlbmNpbEZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpOworRFhHSV9GT1JN
QVQgR2V0RGVwdGhUZXh0dXJlRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCk7CitEWEdJX0ZPUk1B
VCBHZXREZXB0aFNoYWRlclJlc291cmNlRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCk7CisKK0hS
RVNVTFQgU2V0RGVidWdOYW1lKElEM0QxMURldmljZUNoaWxkICpyZXNvdXJjZSwgY29uc3QgY2hh
ciAqbmFtZSk7CisKK2lubGluZSBib29sIGlzRGV2aWNlTG9zdEVycm9yKEhSRVNVTFQgZXJyb3JD
b2RlKQoreworICAgIHN3aXRjaCAoZXJyb3JDb2RlKQorICAgIHsKKyAgICAgIGNhc2UgRFhHSV9F
UlJPUl9ERVZJQ0VfSFVORzoKKyAgICAgIGNhc2UgRFhHSV9FUlJPUl9ERVZJQ0VfUkVNT1ZFRDoK
KyAgICAgIGNhc2UgRFhHSV9FUlJPUl9ERVZJQ0VfUkVTRVQ6CisgICAgICBjYXNlIERYR0lfRVJS
T1JfRFJJVkVSX0lOVEVSTkFMX0VSUk9SOgorICAgICAgY2FzZSBEWEdJX0VSUk9SX05PVF9DVVJS
RU5UTFlfQVZBSUxBQkxFOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNW
Ml9SRU5ERVJFUl9SRU5ERVJFUjExX1VUSUxTX0gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvdmVydGV4Y29udmVyc2lvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvdmVydGV4
Y29udmVyc2lvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci92ZXJ0ZXhjb252ZXJzaW9uLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjAzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyB2ZXJ0ZXhjb252ZXJzaW9uLmg6
IEEgbGlicmFyeSBvZiB2ZXJ0ZXggY29udmVyc2lvbiBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQg
dG8gYnVpbGQKKy8vIHRoZSBGb3JtYXRDb252ZXJ0ZXIgb2JqZWN0cyB1c2VkIGJ5IHRoZSBidWZm
ZXIgY29udmVyc2lvbiBzeXN0ZW0uCisKKyNpZm5kZWYgTElCR0xFU1YyX1ZFUlRFWENPTlZFUlNJ
T05fSF8KKyNkZWZpbmUgTElCR0xFU1YyX1ZFUlRFWENPTlZFUlNJT05fSF8KKworbmFtZXNwYWNl
IHJ4Cit7CisKKy8vIENvbnZlcnNpb24gdHlwZXM6CisvLyBzdGF0aWMgY29uc3QgYm9vbCBpZGVu
dGl0eTogdHJ1ZSBpZiB0aGlzIGlzIGFuIGlkZW50aXR5IHRyYW5zZm9ybSwgZmFsc2Ugb3RoZXJ3
aXNlCisvLyBzdGF0aWMgVSBjb252ZXJ0KFQpOiBjb252ZXJ0IGEgc2luZ2xlIGVsZW1lbnQgZnJv
bSB0aGUgaW5wdXQgdHlwZSB0byB0aGUgb3V0cHV0IHR5cGUKKy8vIHR5cGVkZWYgLi4uIE91dHB1
dFR5cGU6IHRoZSB0eXBlIHByb2R1Y2VkIGJ5IHRoaXMgY29udmVyc2lvbgorCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4KK3N0cnVjdCBJZGVudGl0eQoreworICAgIHN0YXRpYyBjb25zdCBib29sIGlkZW50
aXR5ID0gdHJ1ZTsKKworICAgIHR5cGVkZWYgVCBPdXRwdXRUeXBlOworCisgICAgc3RhdGljIFQg
Y29udmVydChUIHgpCisgICAgeworICAgICAgICByZXR1cm4geDsKKyAgICB9Cit9OworCit0ZW1w
bGF0ZSA8Y2xhc3MgRnJvbVQsIGNsYXNzIFRvVD4KK3N0cnVjdCBDYXN0Cit7CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaWRlbnRpdHkgPSBmYWxzZTsKKworICAgIHR5cGVkZWYgVG9UIE91dHB1dFR5
cGU7CisKKyAgICBzdGF0aWMgVG9UIGNvbnZlcnQoRnJvbVQgeCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUb1Q+KHgpOworICAgIH0KK307CisKK3RlbXBsYXRlIDxjbGFzcyBU
Pgorc3RydWN0IENhc3Q8VCwgVD4KK3sKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpZGVudGl0eSA9
IHRydWU7CisKKyAgICB0eXBlZGVmIFQgT3V0cHV0VHlwZTsKKworICAgIHN0YXRpYyBUIGNvbnZl
cnQoVCB4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHgpOworICAgIH0K
K307CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IE5vcm1hbGl6ZQoreworICAgIHN0YXRp
YyBjb25zdCBib29sIGlkZW50aXR5ID0gZmFsc2U7CisKKyAgICB0eXBlZGVmIGZsb2F0IE91dHB1
dFR5cGU7CisKKyAgICBzdGF0aWMgZmxvYXQgY29udmVydChUIHgpCisgICAgeworICAgICAgICB0
eXBlZGVmIHN0ZDo6bnVtZXJpY19saW1pdHM8VD4gTkw7CisgICAgICAgIGZsb2F0IGYgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oeCk7CisKKyAgICAgICAgaWYgKE5MOjppc19zaWduZWQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIGNvbnN0IGZsb2F0ID0+IFZDMjAwOCBjb21wdXRlcyBpdCBhdCBj
b21waWxlIHRpbWUKKyAgICAgICAgICAgIC8vIHN0YXRpYyBjb25zdCBmbG9hdCA9PiBWQzIwMDgg
Y29tcHV0ZXMgaXQgdGhlIGZpcnN0IHRpbWUgd2UgZ2V0IGhlcmUsIHN0b3JlcyBpdCB0byBtZW1v
cnkgd2l0aCBzdGF0aWMgZ3VhcmQgYW5kIGFsbCB0aGF0LgorICAgICAgICAgICAgY29uc3QgZmxv
YXQgZGl2aXNvciA9IDEuMGYvKDIqc3RhdGljX2Nhc3Q8ZmxvYXQ+KE5MOjptYXgoKSkrMSk7Cisg
ICAgICAgICAgICByZXR1cm4gKDIqZisxKSpkaXZpc29yOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGYvTkw6Om1heCgpOworICAgICAgICB9
CisgICAgfQorfTsKKwordGVtcGxhdGUgPGNsYXNzIEZyb21UeXBlLCBzdGQ6OnNpemVfdCBTY2Fs
ZUJpdHM+CitzdHJ1Y3QgRml4ZWRUb0Zsb2F0Cit7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaWRl
bnRpdHkgPSBmYWxzZTsKKworICAgIHR5cGVkZWYgZmxvYXQgT3V0cHV0VHlwZTsKKworICAgIHN0
YXRpYyBmbG9hdCBjb252ZXJ0KEZyb21UeXBlIHgpCisgICAgeworICAgICAgICBjb25zdCBmbG9h
dCBkaXZpc29yID0gMS4wZiAvIHN0YXRpY19jYXN0PGZsb2F0PihzdGF0aWNfY2FzdDxGcm9tVHlw
ZT4oMSkgPDwgU2NhbGVCaXRzKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih4
KSAqIGRpdmlzb3I7CisgICAgfQorfTsKKworLy8gV2lkZW4gdHlwZXM6CisvLyBzdGF0aWMgY29u
c3QgdW5zaWduZWQgaW50IGluaXRpYWxXaWR0aDogbnVtYmVyIG9mIGNvbXBvbmVudHMgYmVmb3Jl
IGNvbnZlcnNpb24KKy8vIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgZmluYWxXaWR0aDogbnVt
YmVyIG9mIGNvbXBvbmVudHMgYWZ0ZXIgY29udmVyc2lvbgorCisvLyBGbG9hdCBpcyBzdXBwb3J0
ZWQgYXQgYW55IHNpemUuCit0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KK3N0cnVjdCBOb1dpZGVu
Cit7CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGluaXRpYWxXaWR0aCA9IE47CisgICAg
c3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGZpbmFsV2lkdGggPSBOOworfTsKKworLy8gU0hPUlQs
IG5vcm0tU0hPUlQsIG5vcm0tVU5TSUdORURfU0hPUlQgYXJlIHN1cHBvcnRlZCBidXQgb25seSB3
aXRoIDIgb3IgNCBjb21wb25lbnRzCit0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KK3N0cnVjdCBX
aWRlblRvRXZlbgoreworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBpbml0aWFsV2lkdGgg
PSBOOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBmaW5hbFdpZHRoID0gTisoTiYxKTsK
K307CisKK3RlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgorc3RydWN0IFdpZGVuVG9Gb3VyCit7Cisg
ICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGluaXRpYWxXaWR0aCA9IE47CisgICAgc3RhdGlj
IGNvbnN0IHN0ZDo6c2l6ZV90IGZpbmFsV2lkdGggPSA0OworfTsKKworLy8gTW9zdCB0eXBlcyBo
YXZlIDAgYW5kIDEgdGhhdCBhcmUganVzdCB0aGF0LgordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1
Y3QgU2ltcGxlRGVmYXVsdFZhbHVlcworeworICAgIHN0YXRpYyBUIHplcm8oKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxUPigwKTsgfQorICAgIHN0YXRpYyBUIG9uZSgpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PFQ+KDEpOyB9Cit9OworCisvLyBCdXQgbm9ybWFsaXNlZCB0eXBlcyBvbmx5IHN0b3JlIFsw
LDFdIG9yIFstMSwxXSBzbyAxLjAgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIG1heCB2YWx1ZS4KK3Rl
bXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IE5vcm1hbGl6ZWREZWZhdWx0VmFsdWVzCit7CisgICAg
c3RhdGljIFQgemVybygpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KDApOyB9CisgICAgc3RhdGlj
IFQgb25lKCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCk7IH0KK307CisK
Ky8vIENvbnZlcnRlcjoKKy8vIHN0YXRpYyBjb25zdCBib29sIGlkZW50aXR5OiB0cnVlIGlmIHRo
aXMgaXMgYW4gaWRlbnRpdHkgdHJhbnNmb3JtICh3aXRoIG5vIHdpZGVuaW5nKQorLy8gc3RhdGlj
IGNvbnN0IHN0ZDo6c2l6ZV90IGZpbmFsU2l6ZTogbnVtYmVyIG9mIGJ5dGVzIHBlciBvdXRwdXQg
dmVydGV4CisvLyBzdGF0aWMgdm9pZCBjb252ZXJ0QXJyYXkoY29uc3Qgdm9pZCAqaW4sIHN0ZDo6
c2l6ZV90IHN0cmlkZSwgc3RkOjpzaXplX3Qgbiwgdm9pZCAqb3V0KTogY29udmVydCBhbiBhcnJh
eSBvZiB2ZXJ0aWNlcy4gSW5wdXQgbWF5IGJlIHN0cmlkZWQsIGJ1dCBvdXRwdXQgd2lsbCBiZSB1
bnN0cmlkZWQuCisKK3RlbXBsYXRlIDxjbGFzcyBJblQsIGNsYXNzIFdpZGVuUnVsZSwgY2xhc3Mg
Q29udmVydGVyLCBjbGFzcyBEZWZhdWx0VmFsdWVSdWxlID0gU2ltcGxlRGVmYXVsdFZhbHVlczxJ
blQ+ID4KK3N0cnVjdCBWZXJ0ZXhEYXRhQ29udmVydGVyCit7CisgICAgdHlwZWRlZiB0eXBlbmFt
ZSBDb252ZXJ0ZXI6Ok91dHB1dFR5cGUgT3V0cHV0VHlwZTsKKyAgICB0eXBlZGVmIEluVCBJbnB1
dFR5cGU7CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpZGVudGl0eSA9IChXaWRlblJ1bGU6Omlu
aXRpYWxXaWR0aCA9PSBXaWRlblJ1bGU6OmZpbmFsV2lkdGgpICYmIENvbnZlcnRlcjo6aWRlbnRp
dHk7CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGZpbmFsU2l6ZSA9IFdpZGVuUnVsZTo6
ZmluYWxXaWR0aCAqIHNpemVvZihPdXRwdXRUeXBlKTsKKworICAgIHN0YXRpYyB2b2lkIGNvbnZl
cnRBcnJheShjb25zdCBJbnB1dFR5cGUgKmluLCBzdGQ6OnNpemVfdCBzdHJpZGUsIHN0ZDo6c2l6
ZV90IG4sIE91dHB1dFR5cGUgKm91dCkKKyAgICB7CisgICAgICAgIGZvciAoc3RkOjpzaXplX3Qg
aSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IElucHV0VHlw
ZSAqZWluID0gcG9pbnRlckFkZEJ5dGVzKGluLCBpICogc3RyaWRlKTsKKworICAgICAgICAgICAg
Y29weUNvbXBvbmVudChvdXQsIGVpbiwgMCwgc3RhdGljX2Nhc3Q8T3V0cHV0VHlwZT4oRGVmYXVs
dFZhbHVlUnVsZTo6emVybygpKSk7CisgICAgICAgICAgICBjb3B5Q29tcG9uZW50KG91dCwgZWlu
LCAxLCBzdGF0aWNfY2FzdDxPdXRwdXRUeXBlPihEZWZhdWx0VmFsdWVSdWxlOjp6ZXJvKCkpKTsK
KyAgICAgICAgICAgIGNvcHlDb21wb25lbnQob3V0LCBlaW4sIDIsIHN0YXRpY19jYXN0PE91dHB1
dFR5cGU+KERlZmF1bHRWYWx1ZVJ1bGU6Onplcm8oKSkpOworICAgICAgICAgICAgY29weUNvbXBv
bmVudChvdXQsIGVpbiwgMywgc3RhdGljX2Nhc3Q8T3V0cHV0VHlwZT4oRGVmYXVsdFZhbHVlUnVs
ZTo6b25lKCkpKTsKKworICAgICAgICAgICAgb3V0ICs9IFdpZGVuUnVsZTo6ZmluYWxXaWR0aDsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRBcnJheShjb25zdCB2
b2lkICppbiwgc3RkOjpzaXplX3Qgc3RyaWRlLCBzdGQ6OnNpemVfdCBuLCB2b2lkICpvdXQpCisg
ICAgeworICAgICAgICByZXR1cm4gY29udmVydEFycmF5KHN0YXRpY19jYXN0PGNvbnN0IElucHV0
VHlwZSo+KGluKSwgc3RyaWRlLCBuLCBzdGF0aWNfY2FzdDxPdXRwdXRUeXBlKj4ob3V0KSk7Cisg
ICAgfQorCisgIHByaXZhdGU6CisgICAgLy8gQWR2YW5jZSB0aGUgZ2l2ZW4gcG9pbnRlciBieSBh
IG51bWJlciBvZiBieXRlcyAobm90IHBvaW50ZWQtdG8gZWxlbWVudHMpLgorICAgIHRlbXBsYXRl
IDxjbGFzcyBUPgorICAgIHN0YXRpYyBUICpwb2ludGVyQWRkQnl0ZXMoVCAqYmFzZVB0ciwgc3Rk
OjpzaXplX3QgbnVtQnl0ZXMpCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxUICo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihiYXNlUHRyKSArIG51bUJ5dGVzKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBjb3B5Q29tcG9uZW50KE91dHB1dFR5cGUgKm91dCwg
Y29uc3QgSW5wdXRUeXBlICppbiwgc3RkOjpzaXplX3QgZWxlbWVudGluZGV4LCBPdXRwdXRUeXBl
IGRlZmF1bHR2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChXaWRlblJ1bGU6OmZpbmFsV2lkdGgg
PiBlbGVtZW50aW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChXaWRlblJ1bGU6Omlu
aXRpYWxXaWR0aCA+IGVsZW1lbnRpbmRleCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBvdXRbZWxlbWVudGluZGV4XSA9IENvbnZlcnRlcjo6Y29udmVydChpbltlbGVtZW50aW5kZXhd
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBvdXRbZWxlbWVudGluZGV4XSA9IGRlZmF1bHR2YWx1ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK307CisKK30KKworI2VuZGlmICAgLy8gTElCR0xFU1YyX1ZF
UlRFWENPTlZFUlNJT05fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvc2hhZGVycy9CbGl0LnBzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9CbGl0LnBzCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9zaGFkZXJzL0JsaXQucHMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCitzYW1wbGVyMkQgdGV4IDogczA7CisKK3VuaWZvcm0gZmxvYXQ0IG1vZGUgOiBjMDsK
KworLy8gUGFzc3Rocm91Z2ggUGl4ZWwgU2hhZGVyCisvLyBPdXRwdXRzIHRleHR1cmUgMCBzYW1w
bGVkIGF0IHRleGNvb3JkIDAuCitmbG9hdDQgcGFzc3Rocm91Z2hwcyhmbG9hdDQgdGV4Y29vcmQg
OiBURVhDT09SRDApIDogQ09MT1IKK3sKKwlyZXR1cm4gdGV4MkQodGV4LCB0ZXhjb29yZC54eSk7
Cit9OworCisvLyBMdW1pbmFuY2UgQ29udmVyc2lvbiBQaXhlbCBTaGFkZXIKKy8vIE91dHB1dHMg
c2FtcGxlKHRleDAsIHRjMCkucnJyYS4KKy8vIEZvciBMQSBvdXRwdXQgKHBhc3MgQSkgc2V0IEMw
LlggPSAxLCBDMC5ZID0gMC4KKy8vIEZvciBMIG91dHB1dCAoQSA9IDEpIHNldCBDMC5YID0gMCwg
QzAuWSA9IDEuCitmbG9hdDQgbHVtaW5hbmNlcHMoZmxvYXQ0IHRleGNvb3JkIDogVEVYQ09PUkQw
KSA6IENPTE9SCit7CisJZmxvYXQ0IHRtcCA9IHRleDJEKHRleCwgdGV4Y29vcmQueHkpOworCXRt
cC53ID0gdG1wLncgKiBtb2RlLnggKyBtb2RlLnk7CisJcmV0dXJuIHRtcC54eHh3OworfTsKKwor
Ly8gUkdCL0EgQ29tcG9uZW50IE1hc2sgUGl4ZWwgU2hhZGVyCisvLyBPdXRwdXRzIHNhbXBsZSh0
ZXgwLCB0YzApIHdpdGggb3B0aW9ucyB0byBmb3JjZSBSR0IgPSAwIGFuZC9vciBBID0gMS4KKy8v
IFRvIGZvcmNlIFJHQiA9IDAsIHNldCBDMC5YID0gMCwgb3RoZXJ3aXNlIEMwLlggPSAxLgorLy8g
VG8gZm9yY2UgQSA9IDEsIHNldCBDMC5aID0gMCwgQzAuVyA9IDEsIG90aGVyd2lzZSBDMC5aID0g
MSwgQzAuVyA9IDAuCitmbG9hdDQgY29tcG9uZW50bWFza3BzKGZsb2F0NCB0ZXhjb29yZCA6IFRF
WENPT1JEMCkgOiBDT0xPUgoreworCWZsb2F0NCB0bXAgPSB0ZXgyRCh0ZXgsIHRleGNvb3JkLnh5
KTsKKwl0bXAueHl6ID0gdG1wLnh5eiAqIG1vZGUueDsKKwl0bXAudyA9IHRtcC53ICogbW9kZS56
ICsgbW9kZS53OworCXJldHVybiB0bXA7Cit9OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL0JsaXQudnMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL0Js
aXQudnMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL3NoYWRlcnMvQmxpdC52cwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKK3N0cnVjdCBWU19PVVRQVVQKK3sKKyAgICBmbG9hdDQgcG9zaXRp
b24gOiBQT1NJVElPTjsKKyAgICBmbG9hdDQgdGV4Y29vcmQgOiBURVhDT09SRDA7Cit9OworCit1
bmlmb3JtIGZsb2F0NCBoYWxmUGl4ZWxTaXplIDogYzA7CisKKy8vIFN0YW5kYXJkIFZlcnRleCBT
aGFkZXIKKy8vIElucHV0IDAgaXMgdGhlIGhvbW9nZW5vdXMgcG9zaXRpb24uCisvLyBPdXRwdXRz
IHRoZSBob21vZ2Vub3VzIHBvc2l0aW9uIGFzLWlzLgorLy8gT3V0cHV0cyBhIHRleCBjb29yZCB3
aXRoICgwLDApIGluIHRoZSB1cHBlci1sZWZ0IGNvcm5lciBvZiB0aGUgc2NyZWVuIGFuZCAoMSwx
KSBpbiB0aGUgYm90dG9tIHJpZ2h0LgorLy8gQzAuWCBtdXN0IGJlIG5lZ2F0aXZlIGhhbGYtcGl4
ZWwgd2lkdGgsIEMwLlkgbXVzdCBiZSBoYWxmLXBpeGVsIGhlaWdodC4gQzAuWlcgbXVzdCBiZSAw
LgorVlNfT1VUUFVUIHN0YW5kYXJkdnMoaW4gZmxvYXQ0IHBvc2l0aW9uIDogUE9TSVRJT04pCit7
CisgICAgVlNfT1VUUFVUIE91dDsKKworICAgIE91dC5wb3NpdGlvbiA9IHBvc2l0aW9uICsgaGFs
ZlBpeGVsU2l6ZTsKKyAgICBPdXQudGV4Y29vcmQgPSBwb3NpdGlvbiAqIGZsb2F0NCgwLjUsIC0w
LjUsIDEuMCwgMS4wKSArIGZsb2F0NCgwLjUsIDAuNSwgMCwgMCk7CisKKyAgICByZXR1cm4gT3V0
OworfTsKKworLy8gRmxpcCBZIFZlcnRleCBTaGFkZXIKKy8vIElucHV0IDAgaXMgdGhlIGhvbW9n
ZW5vdXMgcG9zaXRpb24uCisvLyBPdXRwdXRzIHRoZSBob21vZ2Vub3VzIHBvc2l0aW9uIGFzLWlz
LgorLy8gT3V0cHV0cyBhIHRleCBjb29yZCB3aXRoICgwLDEpIGluIHRoZSB1cHBlci1sZWZ0IGNv
cm5lciBvZiB0aGUgc2NyZWVuIGFuZCAoMSwwKSBpbiB0aGUgYm90dG9tIHJpZ2h0LgorLy8gQzAu
WFkgbXVzdCBiZSB0aGUgaGFsZi1waXhlbCB3aWR0aCBhbmQgaGVpZ2h0LiBDMC5aVyBtdXN0IGJl
IDAuCitWU19PVVRQVVQgZmxpcHl2cyhpbiBmbG9hdDQgcG9zaXRpb24gOiBQT1NJVElPTikKK3sK
KyAgICBWU19PVVRQVVQgT3V0OworCisgICAgT3V0LnBvc2l0aW9uID0gcG9zaXRpb24gKyBoYWxm
UGl4ZWxTaXplOworICAgIE91dC50ZXhjb29yZCA9IHBvc2l0aW9uICogZmxvYXQ0KDAuNSwgMC41
LCAxLjAsIDEuMCkgKyBmbG9hdDQoMC41LCAwLjUsIDAsIDApOworCisgICAgcmV0dXJuIE91dDsK
K307CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3NoYWRlcnMvQ2xlYXIxMS5obHNsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9DbGVhcjExLmhsc2wJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3No
YWRlcnMvQ2xlYXIxMS5obHNsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACit2b2lkIFZT
X0NsZWFyKCBpbiBmbG9hdDMgIGluUG9zaXRpb24gOiAgICBQT1NJVElPTiwgIGluIGZsb2F0NCAg
aW5Db2xvciA6IENPTE9SLAorICAgICAgICAgICAgICBvdXQgZmxvYXQ0IG91dFBvc2l0aW9uIDog
U1ZfUE9TSVRJT04sIG91dCBmbG9hdDQgb3V0Q29sb3IgOiBDT0xPUikKK3sKKyAgICBvdXRQb3Np
dGlvbiA9IGZsb2F0NChpblBvc2l0aW9uLCAxLjBmKTsKKyAgICBvdXRDb2xvciA9IGluQ29sb3I7
Cit9CisKKy8vIEFzc3VtZSB3ZSBhcmUgaW4gU000Kywgd2hpY2ggaGFzIDggY29sb3Igb3V0cHV0
cworc3RydWN0IFBTX091dHB1dE11bHRpcGxlCit7CisJZmxvYXQ0IGNvbG9yMCA6IFNWX1RBUkdF
VDA7CisJZmxvYXQ0IGNvbG9yMSA6IFNWX1RBUkdFVDE7CisJZmxvYXQ0IGNvbG9yMiA6IFNWX1RB
UkdFVDI7CisJZmxvYXQ0IGNvbG9yMyA6IFNWX1RBUkdFVDM7CisJZmxvYXQ0IGNvbG9yNCA6IFNW
X1RBUkdFVDQ7CisJZmxvYXQ0IGNvbG9yNSA6IFNWX1RBUkdFVDU7CisJZmxvYXQ0IGNvbG9yNiA6
IFNWX1RBUkdFVDY7CisJZmxvYXQ0IGNvbG9yNyA6IFNWX1RBUkdFVDc7Cit9OworCitQU19PdXRw
dXRNdWx0aXBsZSBQU19DbGVhck11bHRpcGxlKGluIGZsb2F0NCBpblBvc2l0aW9uIDogU1ZfUE9T
SVRJT04sIGluIGZsb2F0NCBpbkNvbG9yIDogQ09MT1IpCit7CisJUFNfT3V0cHV0TXVsdGlwbGUg
b3V0Q29sb3I7CisJb3V0Q29sb3IuY29sb3IwID0gaW5Db2xvcjsKKwlvdXRDb2xvci5jb2xvcjEg
PSBpbkNvbG9yOworCW91dENvbG9yLmNvbG9yMiA9IGluQ29sb3I7CisJb3V0Q29sb3IuY29sb3Iz
ID0gaW5Db2xvcjsKKwlvdXRDb2xvci5jb2xvcjQgPSBpbkNvbG9yOworCW91dENvbG9yLmNvbG9y
NSA9IGluQ29sb3I7CisJb3V0Q29sb3IuY29sb3I2ID0gaW5Db2xvcjsKKwlvdXRDb2xvci5jb2xv
cjcgPSBpbkNvbG9yOworCXJldHVybiBvdXRDb2xvcjsKK30KKworZmxvYXQ0IFBTX0NsZWFyU2lu
Z2xlKGluIGZsb2F0NCBpblBvc2l0aW9uIDogU1ZfUG9zaXRpb24sIGluIGZsb2F0NCBpbkNvbG9y
IDogQ09MT1IpIDogU1ZfVGFyZ2V0MAoreworCXJldHVybiBpbkNvbG9yOworfQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL1Bhc3N0
aHJvdWdoMTEuaGxzbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvUGFzc3Rocm91Z2gxMS5obHNsCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFk
ZXJzL1Bhc3N0aHJvdWdoMTEuaGxzbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorVGV4
dHVyZTJEIFRleHR1cmUgOiByZWdpc3Rlcih0MCk7CitTYW1wbGVyU3RhdGUgU2FtcGxlciA6IHJl
Z2lzdGVyKHMwKTsKKwordm9pZCBWU19QYXNzdGhyb3VnaCggaW4gZmxvYXQyICBpblBvc2l0aW9u
IDogICAgUE9TSVRJT04sICBpbiBmbG9hdDIgIGluVGV4Q29vcmQgOiBURVhDT09SRDAsCisgICAg
ICAgICAgICAgICAgICAgIG91dCBmbG9hdDQgb3V0UG9zaXRpb24gOiBTVl9QT1NJVElPTiwgb3V0
IGZsb2F0MiBvdXRUZXhDb29yZCA6IFRFWENPT1JEMCkKK3sKKyAgICBvdXRQb3NpdGlvbiA9IGZs
b2F0NChpblBvc2l0aW9uLCAwLjBmLCAxLjBmKTsKKyAgICBvdXRUZXhDb29yZCA9IGluVGV4Q29v
cmQ7Cit9CisKK2Zsb2F0NCBQU19QYXNzdGhyb3VnaFJHQkEoaW4gZmxvYXQ0IGluUG9zaXRpb24g
OiBTVl9QT1NJVElPTiwgaW4gZmxvYXQyIGluVGV4Q29vcmQgOiBURVhDT09SRDApIDogU1ZfVEFS
R0VUMAoreworICAgIHJldHVybiBUZXh0dXJlLlNhbXBsZShTYW1wbGVyLCBpblRleENvb3JkKS5y
Z2JhOworfQorCitmbG9hdDQgUFNfUGFzc3Rocm91Z2hSR0IoaW4gZmxvYXQ0IGluUG9zaXRpb24g
OiBTVl9QT1NJVElPTiwgaW4gZmxvYXQyIGluVGV4Q29vcmQgOiBURVhDT09SRDApIDogU1ZfVEFS
R0VUMAoreworICAgIHJldHVybiBmbG9hdDQoVGV4dHVyZS5TYW1wbGUoU2FtcGxlciwgaW5UZXhD
b29yZCkucmdiLCAxLjBmKTsKK30KKworZmxvYXQ0IFBTX1Bhc3N0aHJvdWdoTHVtKGluIGZsb2F0
NCBpblBvc2l0aW9uIDogU1ZfUE9TSVRJT04sIGluIGZsb2F0MiBpblRleENvb3JkIDogVEVYQ09P
UkQwKSA6IFNWX1RBUkdFVDAKK3sKKyAgICByZXR1cm4gZmxvYXQ0KFRleHR1cmUuU2FtcGxlKFNh
bXBsZXIsIGluVGV4Q29vcmQpLnJyciwgMS4wZik7Cit9CisKK2Zsb2F0NCBQU19QYXNzdGhyb3Vn
aEx1bUFscGhhKGluIGZsb2F0NCBpblBvc2l0aW9uIDogU1ZfUE9TSVRJT04sIGluIGZsb2F0MiBp
blRleENvb3JkIDogVEVYQ09PUkQwKSA6IFNWX1RBUkdFVDAKK3sKKyAgICByZXR1cm4gVGV4dHVy
ZS5TYW1wbGUoU2FtcGxlciwgaW5UZXhDb29yZCkucnJyYTsKK30KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9nZW5lcmF0ZV9zaGFk
ZXJzLmJhdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL3NoYWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5iYXQJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMv
Z2VuZXJhdGVfc2hhZGVycy5iYXQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKK0BFQ0hP
IE9GRg0KK1JFTQ0KK1JFTSBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCitSRU0gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KK1JFTSBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KK1JFTQ0KKw0KK1BBVEggJVBBVEglOyVEWFNES19ESVIl
XFV0aWxpdGllc1xiaW5ceDg2DQorDQorZnhjIC9FIHN0YW5kYXJkdnMgL1QgdnNfMl8wIC9GaCBj
b21waWxlZC9zdGFuZGFyZHZzLmggQmxpdC52cw0KK2Z4YyAvRSBmbGlweXZzIC9UIHZzXzJfMCAv
RmggY29tcGlsZWQvZmxpcHl2cy5oIEJsaXQudnMNCitmeGMgL0UgcGFzc3Rocm91Z2hwcyAvVCBw
c18yXzAgL0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdocHMuaCBCbGl0LnBzDQorZnhjIC9FIGx1bWlu
YW5jZXBzIC9UIHBzXzJfMCAvRmggY29tcGlsZWQvbHVtaW5hbmNlcHMuaCBCbGl0LnBzDQorZnhj
IC9FIGNvbXBvbmVudG1hc2twcyAvVCBwc18yXzAgL0ZoIGNvbXBpbGVkL2NvbXBvbmVudG1hc2tw
cy5oIEJsaXQucHMNCisNCitmeGMgL0UgVlNfUGFzc3Rocm91Z2ggL1QgdnNfNF8wIC9GaCBjb21w
aWxlZC9wYXNzdGhyb3VnaDExdnMuaCBQYXNzdGhyb3VnaDExLmhsc2wNCitmeGMgL0UgUFNfUGFz
c3Rocm91Z2hSR0JBIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhMTFwcy5o
IFBhc3N0aHJvdWdoMTEuaGxzbA0KK2Z4YyAvRSBQU19QYXNzdGhyb3VnaFJHQiAvVCBwc180XzAg
L0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMTFwcy5oIFBhc3N0aHJvdWdoMTEuaGxzbA0KK2Z4
YyAvRSBQU19QYXNzdGhyb3VnaEx1bSAvVCBwc180XzAgL0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdo
bHVtMTFwcy5oIFBhc3N0aHJvdWdoMTEuaGxzbA0KK2Z4YyAvRSBQU19QYXNzdGhyb3VnaEx1bUFs
cGhhIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaCBQYXNz
dGhyb3VnaDExLmhsc2wNCisNCitmeGMgL0UgVlNfQ2xlYXIgL1QgdnNfNF8wIC9GaCBjb21waWxl
ZC9jbGVhcjExdnMuaCBDbGVhcjExLmhsc2wNCitmeGMgL0UgUFNfQ2xlYXJTaW5nbGUgL1QgcHNf
NF8wIC9GaCBjb21waWxlZC9jbGVhcnNpbmdsZTExcHMuaCBDbGVhcjExLmhsc2wNCitmeGMgL0Ug
UFNfQ2xlYXJNdWx0aXBsZSAvVCBwc180XzAgL0ZoIGNvbXBpbGVkL2NsZWFybXVsdGlwbGUxMXBz
LmggQ2xlYXIxMS5obHNsDQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyMTF2cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9j
b21waWxlZC9jbGVhcjExdnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jbGVhcjExdnMuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzMgQEAKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQg
YnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQorLy8N
CisvLw0KKy8vICAgZnhjIC9FIFZTX0NsZWFyIC9UIHZzXzRfMCAvRmggY29tcGlsZWQvY2xlYXIx
MXZzLmggQ2xlYXIxMS5obHNsDQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0K
Ky8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1Zh
bHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFBPU0lUSU9OICAgICAgICAgICAg
ICAgICAwICAgeHl6ICAgICAgICAgMCAgICAgTk9ORSAgZmxvYXQgICB4eXogDQorLy8gQ09MT1Ig
ICAgICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5
encNCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAg
ICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAg
IDAgICAgICBQT1MgIGZsb2F0ICAgeHl6dw0KKy8vIENPTE9SICAgICAgICAgICAgICAgICAgICAw
ICAgeHl6dyAgICAgICAgMSAgICAgTk9ORSAgZmxvYXQgICB4eXp3DQorLy8NCit2c180XzANCitk
Y2xfaW5wdXQgdjAueHl6DQorZGNsX2lucHV0IHYxLnh5encNCitkY2xfb3V0cHV0X3NpdiBvMC54
eXp3LCBwb3NpdGlvbg0KK2RjbF9vdXRwdXQgbzEueHl6dw0KK21vdiBvMC54eXosIHYwLnh5engN
Cittb3YgbzAudywgbCgxLjAwMDAwMCkNCittb3YgbzEueHl6dywgdjEueHl6dw0KK3JldCANCisv
LyBBcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2Nv
bnN0IEJZVEUgZ19WU19DbGVhcltdID0NCit7DQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgMTA5
LCAxMzgsIA0KKyAgICAxMDUsICA4MywgIDg2LCAxOTAsICA4MywgMTI1LCANCisgICAgIDcyLCAx
MDIsIDE5NCwgMTM2LCAgNDYsICA2OSwgDQorICAgICAxNywgMTIxLCAgIDEsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgNDgsICAgMiwgICAwLCAgIDAsICAgNSwgICAwLCANCisgICAgICAwLCAgIDAs
ICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgIDE0MCwgICAwLCAgIDAsICAgMCwgMjIwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDQ4LCAgIDEsICAgMCwgICAwLCANCisgICAgMTgwLCAgIDEsICAg
MCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwgIDcwLCAgODAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIA0KKyAg
ICAyNTQsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwgICAw
LCAgNzcsIDEwNSwgDQorICAgICA5OSwgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIA0KKyAgICAx
MTYsICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCANCisgICAgIDcyLCAgNzYsICA4MywgIDc2LCAg
MzIsICA4MywgDQorICAgIDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsIA0KKyAgICAgNjcs
IDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCANCisgICAgMTAxLCAxMTQsICAzMiwgIDU3LCAgNDYs
ICA1MCwgDQorICAgICA1NywgIDQ2LCAgNTcsICA1MywgIDUwLCAgNDYsIA0KKyAgICAgNTEsICA0
OSwgIDQ5LCAgNDksICAgMCwgMTcxLCANCisgICAgMTcxLCAxNzEsICA3MywgIDgzLCAgNzEsICA3
OCwgDQorICAgICA3MiwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgNywgICA3LCAgIDAsICAgMCwgDQor
ICAgICA2NSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgMTUsICAxNSwgICAwLCAgIDAsIA0KKyAgICAgODAsICA3OSwgIDgzLCAgNzMs
ICA4NCwgIDczLCANCisgICAgIDc5LCAgNzgsICAgMCwgIDY3LCAgNzksICA3NiwgDQorICAgICA3
OSwgIDgyLCAgIDAsIDE3MSwgIDc5LCAgODMsIA0KKyAgICAgNzEsICA3OCwgIDc2LCAgIDAsICAg
MCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgNTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDE1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDY4LCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAxNSwgICAwLCAN
CisgICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4MCwgDQorICAgICA3OSwgIDgzLCAgNzMs
ICA4NCwgIDczLCAgNzksIA0KKyAgICAgNzgsICAgMCwgIDY3LCAgNzksICA3NiwgIDc5LCANCisg
ICAgIDgyLCAgIDAsIDE3MSwgMTcxLCAgODMsICA3MiwgDQorICAgICA2OCwgIDgyLCAxMjQsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgNjQsICAgMCwgICAxLCAgIDAsICAzMSwgICAwLCANCisgICAg
ICAwLCAgIDAsICA5NSwgICAwLCAgIDAsICAgMywgDQorICAgIDExNCwgIDE2LCAgMTYsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDk1LCAgIDAsICAgMCwgICAzLCANCisgICAgMjQy
LCAgMTYsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAxMDMsICAgMCwgICAw
LCAgIDQsIA0KKyAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwMSwgICAwLCAgIDAsICAgMywgMjQyLCAg
MzIsIA0KKyAgICAgMTYsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAs
ICAgMCwgICA1LCAxMTQsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgNzAsICAxOCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA1
NCwgICAwLCAgIDAsICAgNSwgDQorICAgIDEzMCwgIDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAxLCAgNjQsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDEyOCwg
IDYzLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAg
ICAgIDEsICAgMCwgICAwLCAgIDAsICA3MCwgIDMwLCANCisgICAgIDE2LCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgDQorICAgICA2MiwgICAwLCAgIDAsICAgMSwgIDgzLCAgODQsIA0KKyAgICAg
NjUsICA4NCwgMTE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDQs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJtdWx0aXBsZTExcHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRl
cnMvY29tcGlsZWQvY2xlYXJtdWx0aXBsZTExcHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9j
bGVhcm11bHRpcGxlMTFwcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5OSBAQAorI2lmIDAN
CisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVy
IDkuMjkuOTUyLjMxMTENCisvLw0KKy8vDQorLy8gICBmeGMgL0UgUFNfQ2xlYXJNdWx0aXBsZSAv
VCBwc180XzAgL0ZoIGNvbXBpbGVkL2NsZWFybXVsdGlwbGUxMXBzLmgNCisvLyAgICBDbGVhcjEx
Lmhsc2wNCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1l
ICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAg
VXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3
ICAgICAgICAwICAgICAgUE9TICBmbG9hdCAgICAgICANCisvLyBDT0xPUiAgICAgICAgICAgICAg
ICAgICAgMCAgIHh5encgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHl6dw0KKy8vDQorLy8N
CisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5k
ZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0K
Ky8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAg
ZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDEgICB4eXp3ICAgICAg
ICAxICAgVEFSR0VUICBmbG9hdCAgIHh5encNCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAg
MiAgIHh5encgICAgICAgIDIgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAg
ICAgICAgICAgICAgICAzICAgeHl6dyAgICAgICAgMyAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQor
Ly8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDQgICB4eXp3ICAgICAgICA0ICAgVEFSR0VUICBm
bG9hdCAgIHh5encNCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgNSAgIHh5encgICAgICAg
IDUgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICA2
ICAgeHl6dyAgICAgICAgNiAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAg
ICAgICAgICAgICAgIDcgICB4eXp3ICAgICAgICA3ICAgVEFSR0VUICBmbG9hdCAgIHh5encNCisv
Lw0KK3BzXzRfMA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHl6dw0KK2RjbF9vdXRwdXQgbzAu
eHl6dw0KK2RjbF9vdXRwdXQgbzEueHl6dw0KK2RjbF9vdXRwdXQgbzIueHl6dw0KK2RjbF9vdXRw
dXQgbzMueHl6dw0KK2RjbF9vdXRwdXQgbzQueHl6dw0KK2RjbF9vdXRwdXQgbzUueHl6dw0KK2Rj
bF9vdXRwdXQgbzYueHl6dw0KK2RjbF9vdXRwdXQgbzcueHl6dw0KK21vdiBvMC54eXp3LCB2MS54
eXp3DQorbW92IG8xLnh5encsIHYxLnh5encNCittb3YgbzIueHl6dywgdjEueHl6dw0KK21vdiBv
My54eXp3LCB2MS54eXp3DQorbW92IG80Lnh5encsIHYxLnh5encNCittb3YgbzUueHl6dywgdjEu
eHl6dw0KK21vdiBvNi54eXp3LCB2MS54eXp3DQorbW92IG83Lnh5encsIHYxLnh5encNCityZXQg
DQorLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisN
Citjb25zdCBCWVRFIGdfUFNfQ2xlYXJNdWx0aXBsZVtdID0NCit7DQorICAgICA2OCwgIDg4LCAg
NjYsICA2NywgMTQ2LCAyNDYsIA0KKyAgICAyMzYsIDI0MCwgIDUwLCAgNDAsICA4NywgIDU1LCAN
CisgICAgIDczLCAxNDAsIDI1MSwgMjAwLCAgIDgsICAyMiwgDQorICAgIDE3MywgMTE3LCAgIDEs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODgsICAgMywgICAwLCAgIDAsICAgNSwgICAwLCANCisg
ICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgIDE0MCwgICAwLCAgIDAsICAg
MCwgMjI0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTg4LCAgIDEsICAgMCwgICAwLCANCisgICAg
MjIwLCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwgIDcwLCAgODAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgIDI4LCAg
IDAsICAgMCwgICAwLCAgNzcsIDEwNSwgDQorICAgICA5OSwgMTE0LCAxMTEsIDExNSwgMTExLCAx
MDIsIA0KKyAgICAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCANCisgICAgIDcyLCAgNzYs
ICA4MywgIDc2LCAgMzIsICA4MywgDQorICAgIDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIs
IA0KKyAgICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCANCisgICAgMTAxLCAxMTQsICAz
MiwgIDU3LCAgNDYsICA1MCwgDQorICAgICA1NywgIDQ2LCAgNTcsICA1MywgIDUwLCAgNDYsIA0K
KyAgICAgNTEsICA0OSwgIDQ5LCAgNDksICAgMCwgMTcxLCANCisgICAgMTcxLCAxNzEsICA3Mywg
IDgzLCAgNzEsICA3OCwgDQorICAgICA3NiwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAg
IDAsICAgMCwgDQorICAgICA2OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDEs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAxNSwgICAwLCAgIDAsIA0KKyAgICAgODMsICA4
NiwgIDk1LCAgODAsICA3OSwgIDgzLCANCisgICAgIDczLCAgODQsICA3MywgIDc5LCAgNzgsICAg
MCwgDQorICAgICA2NywgIDc5LCAgNzYsICA3OSwgIDgyLCAgIDAsIA0KKyAgICAxNzEsIDE3MSwg
IDc5LCAgODMsICA3MSwgIDc4LCANCisgICAgMjEyLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAg
IDAsICAgMCwgICAwLCANCisgICAgMjAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAs
ICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgIDIw
MCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMCwgICAwLCAgIDAsICAgMywg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAw
LCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAw
LCANCisgICAgMjAwLCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgIDIwMCwgICAwLCAgIDAs
ICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMCwgICAwLCAgIDAsICAgNiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwg
ICA2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgMjAw
LCAgIDAsICAgMCwgICAwLCAgIDcsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgNywgICAwLCANCisgICAgICAwLCAg
IDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4NCwgIDY1LCAg
ODIsIA0KKyAgICAgNzEsICA2OSwgIDg0LCAgIDAsIDE3MSwgMTcxLCANCisgICAgIDgzLCAgNzIs
ICA2OCwgIDgyLCAgMjQsICAgMSwgDQorICAgICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgNzAsICAgMCwgICAwLCAgIDAsICA5OCwgIDE2LCANCisgICAgICAwLCAgIDMsIDI0
MiwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0K
KyAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAg
ICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0MiwgIDMy
LCAgMTYsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAgICAg
IDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAx
MDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDQs
ICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYs
ICAgMCwgDQorICAgICAgNSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAgICAgIDAsICAg
MywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICA2LCAgIDAsICAgMCwgICAwLCAxMDEsICAg
MCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDcsICAgMCwg
ICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDUsIDI0MiwgIDMyLCAgMTYsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgMzAsIA0KKyAgICAgMTYsICAgMCwgICAx
LCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA1LCAyNDIsICAzMiwgDQor
ICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAzMCwgIDE2LCAg
IDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNSwgDQorICAg
IDI0MiwgIDMyLCAgMTYsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAgMzAs
ICAxNiwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAg
MCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICA3
MCwgIDMwLCANCisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwg
ICAwLCAgIDAsICAgNSwgMjQyLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICA0LCAgIDAsICAgMCwg
ICAwLCANCisgICAgIDcwLCAgMzAsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAw
LCAgNTQsICAgMCwgICAwLCAgIDUsIA0KKyAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAgNSwgICAw
LCANCisgICAgICAwLCAgIDAsICA3MCwgIDMwLCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAg
IDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMjQyLCAgMzIsICAxNiwgICAwLCAN
CisgICAgICA2LCAgIDAsICAgMCwgICAwLCAgNzAsICAzMCwgDQorICAgICAxNiwgICAwLCAgIDEs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDI0MiwgIDMyLCANCisg
ICAgIDE2LCAgIDAsICAgNywgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgIDMwLCAgMTYsICAg
MCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDYyLCAgIDAsICAgMCwgICAxLCANCisgICAg
IDgzLCAgODQsICA2NSwgIDg0LCAxMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDksICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgOSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jbGVhcnNpbmdsZTExcHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW5nbGUxMXBzLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29t
cGlsZWQvY2xlYXJzaW5nbGUxMXBzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEzIEBACisj
aWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29t
cGlsZXIgOS4yOS45NTIuMzExMQ0KKy8vDQorLy8NCisvLyAgIGZ4YyAvRSBQU19DbGVhclNpbmds
ZSAvVCBwc180XzAgL0ZoIGNvbXBpbGVkL2NsZWFyc2luZ2xlMTFwcy5oDQorLy8gICAgQ2xlYXIx
MS5obHNsDQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFt
ZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAg
IFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1Bvc2l0aW9uICAgICAgICAgICAgICAwICAgeHl6
dyAgICAgICAgMCAgICAgIFBPUyAgZmxvYXQgICAgICAgDQorLy8gQ09MT1IgICAgICAgICAgICAg
ICAgICAgIDAgICB4eXp3ICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5encNCisvLw0KKy8v
DQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIElu
ZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0N
CisvLyBTVl9UYXJnZXQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQg
IGZsb2F0ICAgeHl6dw0KKy8vDQorcHNfNF8wDQorZGNsX2lucHV0X3BzIGxpbmVhciB2MS54eXp3
DQorZGNsX291dHB1dCBvMC54eXp3DQorbW92IG8wLnh5encsIHYxLnh5encNCityZXQgDQorLy8g
QXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25z
dCBCWVRFIGdfUFNfQ2xlYXJTaW5nbGVbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcs
ICAxMSwgIDQ5LCANCisgICAgMjIwLCAxNTcsICAzNSwgMTA2LCAxNzUsIDE2MSwgDQorICAgIDE4
MCwgMTc4LCAxNDcsIDE1MCwgMTM0LCAxNjIsIA0KKyAgICAyMjIsICA3OSwgICAxLCAgIDAsICAg
MCwgICAwLCANCisgICAgMjA4LCAgIDEsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNDAsICAgMCwgICAwLCAgIDAsIDIyNCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAyMCwgICAxLCAgIDAsICAgMCwgDQorICAgICA4NCwgICAx
LCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgIDgwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAN
CisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAs
ICAgMCwgIDc3LCAxMDUsIA0KKyAgICAgOTksIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCANCisg
ICAgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgDQorICAgICA3MiwgIDc2LCAgODMsICA3
NiwgIDMyLCAgODMsIA0KKyAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCANCisgICAg
IDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgDQorICAgIDEwMSwgMTE0LCAgMzIsICA1Nywg
IDQ2LCAgNTAsIA0KKyAgICAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgIDQ2LCANCisgICAgIDUx
LCAgNDksICA0OSwgIDQ5LCAgIDAsIDE3MSwgDQorICAgIDE3MSwgMTcxLCAgNzMsICA4MywgIDcx
LCAgNzgsIA0KKyAgICAgNzYsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NiwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgNjgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgIDE1LCAgMTUsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYsICA5NSwg
IDgwLCAxMTEsIDExNSwgDQorICAgIDEwNSwgMTE2LCAxMDUsIDExMSwgMTEwLCAgIDAsIA0KKyAg
ICAgNjcsICA3OSwgIDc2LCAgNzksICA4MiwgICAwLCANCisgICAgMTcxLCAxNzEsICA3OSwgIDgz
LCAgNzEsICA3OCwgDQorICAgICA0NCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAs
ICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4NCwgIDk3LCAxMTQsIA0KKyAgICAxMDMsIDEw
MSwgMTE2LCAgIDAsIDE3MSwgMTcxLCANCisgICAgIDgzLCAgNzIsICA2OCwgIDgyLCAgNTYsICAg
MCwgDQorICAgICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTQsICAgMCwg
ICAwLCAgIDAsICA5OCwgIDE2LCANCisgICAgICAwLCAgIDMsIDI0MiwgIDE2LCAgMTYsICAgMCwg
DQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAgICAgIDAsICAgMywgMjQy
LCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQor
ICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICA3MCwgIDMwLCANCisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAg
ICA2MiwgICAwLCAgIDAsICAgMSwgIDgzLCAgODQsIA0KKyAgICAgNjUsICA4NCwgMTE2LCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwDQorfTsNCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMv
Y29tcGlsZWQvY29tcG9uZW50bWFza3BzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVu
dG1hc2twcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2twcy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1p
Y3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KKy8vDQorLy8g
ICBmeGMgL0UgY29tcG9uZW50bWFza3BzIC9UIHBzXzJfMCAvRmggY29tcGlsZWQvY29tcG9uZW50
bWFza3BzLmggQmxpdC5wcw0KKy8vDQorLy8NCisvLyBQYXJhbWV0ZXJzOg0KKy8vDQorLy8gICBm
bG9hdDQgbW9kZTsNCisvLyAgIHNhbXBsZXIyRCB0ZXg7DQorLy8NCisvLw0KKy8vIFJlZ2lzdGVy
czoNCisvLw0KKy8vICAgTmFtZSAgICAgICAgIFJlZyAgIFNpemUNCisvLyAgIC0tLS0tLS0tLS0t
LSAtLS0tLSAtLS0tDQorLy8gICBtb2RlICAgICAgICAgYzAgICAgICAgMQ0KKy8vICAgdGV4ICAg
ICAgICAgIHMwICAgICAgIDENCisvLw0KKw0KKyAgICBwc18yXzANCisgICAgZGNsIHQwLnh5DQor
ICAgIGRjbF8yZCBzMA0KKyAgICB0ZXhsZCByMCwgdDAsIHMwDQorICAgIG11bCByMS54eXosIHIw
LCBjMC54DQorICAgIG1hZCByMS53LCByMC53LCBjMC56LCBjMC53DQorICAgIG1vdiBvQzAsIHIx
DQorDQorLy8gYXBwcm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4dHVy
ZSwgMyBhcml0aG1ldGljKQ0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19wczIwX2NvbXBvbmVu
dG1hc2twc1tdID0NCit7DQorICAgICAgMCwgICAyLCAyNTUsIDI1NSwgMjU0LCAyNTUsIA0KKyAg
ICAgNDMsICAgMCwgIDY3LCAgODQsICA2NSwgIDY2LCANCisgICAgIDI4LCAgIDAsICAgMCwgICAw
LCAxMTksICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1LCAyNTUsIA0KKyAgICAg
IDIsICAgMCwgICAwLCAgIDAsICAyOCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsICAgMCwgDQorICAgIDExMiwgICAwLCAgIDAsICAgMCwgIDY4LCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgNzYs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgOTIsICAg
MCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgDQorICAgICA5NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
MTA5LCAxMTEsIDEwMCwgMTAxLCANCisgICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgIDEsICAgMCwg
DQorICAgICAgMywgICAwLCAgIDEsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDExNiwgMTAxLCAxMjAsICAgMCwgDQor
ICAgICAgNCwgICAwLCAgMTIsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAxLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAxMTIsIDExNSwgDQorICAg
ICA5NSwgIDUwLCAgOTUsICA0OCwgICAwLCAgNzcsIA0KKyAgICAxMDUsICA5OSwgMTE0LCAxMTEs
IDExNSwgMTExLCANCisgICAgMTAyLCAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgDQorICAgICAz
MiwgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsIA0KKyAgICAgODMsIDEwNCwgIDk3LCAxMDAsIDEw
MSwgMTE0LCANCisgICAgIDMyLCAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgDQorICAgIDEwOCwg
MTAxLCAxMTQsICAzMiwgIDU3LCAgNDYsIA0KKyAgICAgNTAsICA1NywgIDQ2LCAgNTcsICA1Mywg
IDUwLCANCisgICAgIDQ2LCAgNTEsICA0OSwgIDQ5LCAgNDksICAgMCwgDQorICAgICAzMSwgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsIA0KKyAgICAgIDAsIDEyOCwgICAwLCAgIDAsICAgMywgMTc2
LCANCisgICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgDQorICAgICAgMCwgMTQ0LCAg
IDAsICAgOCwgIDE1LCAxNjAsIA0KKyAgICAgNjYsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAN
CisgICAgIDE1LCAxMjgsICAgMCwgICAwLCAyMjgsIDE3NiwgDQorICAgICAgMCwgICA4LCAyMjgs
IDE2MCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMywgICAxLCAgIDAsICAgNywgMTI4LCANCisg
ICAgICAwLCAgIDAsIDIyOCwgMTI4LCAgIDAsICAgMCwgDQorICAgICAgMCwgMTYwLCAgIDQsICAg
MCwgICAwLCAgIDQsIA0KKyAgICAgIDEsICAgMCwgICA4LCAxMjgsICAgMCwgICAwLCANCisgICAg
MjU1LCAxMjgsICAgMCwgICAwLCAxNzAsIDE2MCwgDQorICAgICAgMCwgICAwLCAyNTUsIDE2MCwg
ICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAwLCAgIDgsICAxNSwgMTI4LCANCisgICAgICAx
LCAgIDAsIDIyOCwgMTI4LCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAwDQorfTsNCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29t
cGlsZWQvZmxpcHl2cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9mbGlweXZzLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3No
YWRlcnMvY29tcGlsZWQvZmxpcHl2cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisj
aWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29t
cGlsZXIgOS4yOS45NTIuMzExMQ0KKy8vDQorLy8gICBmeGMgL0UgZmxpcHl2cyAvVCB2c18yXzAg
L0ZoIGNvbXBpbGVkL2ZsaXB5dnMuaCBCbGl0LnZzDQorLy8NCisvLw0KKy8vIFBhcmFtZXRlcnM6
DQorLy8NCisvLyAgIGZsb2F0NCBoYWxmUGl4ZWxTaXplOw0KKy8vDQorLy8NCisvLyBSZWdpc3Rl
cnM6DQorLy8NCisvLyAgIE5hbWUgICAgICAgICAgUmVnICAgU2l6ZQ0KKy8vICAgLS0tLS0tLS0t
LS0tLSAtLS0tLSAtLS0tDQorLy8gICBoYWxmUGl4ZWxTaXplIGMwICAgICAgIDENCisvLw0KKw0K
KyAgICB2c18yXzANCisgICAgZGVmIGMxLCAwLjUsIDEsIDAsIDANCisgICAgZGNsX3Bvc2l0aW9u
IHYwDQorICAgIGFkZCBvUG9zLCB2MCwgYzANCisgICAgbWFkIG9UMCwgdjAsIGMxLnh4eXksIGMx
Lnh4enoNCisNCisvLyBhcHByb3hpbWF0ZWx5IDIgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNl
bmRpZg0KKw0KK2NvbnN0IEJZVEUgZ192czIwX2ZsaXB5dnNbXSA9DQorew0KKyAgICAgIDAsICAg
MiwgMjU0LCAyNTUsIDI1NCwgMjU1LCANCisgICAgIDM1LCAgIDAsICA2NywgIDg0LCAgNjUsICA2
NiwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgIDg3LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDIsIDI1NCwgMjU1LCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjgsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgODAsICAgMCwgICAw
LCAgIDAsICA0OCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDY0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgMTA0LCAgOTcsIDEwOCwgMTAyLCAgODAsIDEwNSwgDQorICAg
IDEyMCwgMTAxLCAxMDgsICA4MywgMTA1LCAxMjIsIA0KKyAgICAxMDEsICAgMCwgMTcxLCAxNzEs
ICAgMSwgICAwLCANCisgICAgICAzLCAgIDAsICAgMSwgICAwLCAgIDQsICAgMCwgDQorICAgICAg
MSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTE4LCAxMTUsICA5
NSwgIDUwLCANCisgICAgIDk1LCAgNDgsICAgMCwgIDc3LCAxMDUsICA5OSwgDQorICAgIDExNCwg
MTExLCAxMTUsIDExMSwgMTAyLCAxMTYsIA0KKyAgICAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwg
IDcyLCANCisgICAgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwgDQorICAgICA5NywgMTAw
LCAxMDEsIDExNCwgIDMyLCAgNjcsIA0KKyAgICAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgMTAx
LCANCisgICAgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTAsICA1NywgDQorICAgICA0NiwgIDU3LCAg
NTMsICA1MCwgIDQ2LCAgNTEsIA0KKyAgICAgNDksICA0OSwgIDQ5LCAgIDAsICA4MSwgICAwLCAN
CisgICAgICAwLCAgIDUsICAgMSwgICAwLCAgMTUsIDE2MCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICA2MywgICAwLCAgIDAsIA0KKyAgICAxMjgsICA2MywgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgMzEsICAgMCwgDQorICAgICAgMCwgICAyLCAgIDAsICAg
MCwgICAwLCAxMjgsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAxNDQsICAgMiwgICAwLCANCisgICAg
ICAwLCAgIDMsICAgMCwgICAwLCAgMTUsIDE5MiwgDQorICAgICAgMCwgICAwLCAyMjgsIDE0NCwg
ICAwLCAgIDAsIA0KKyAgICAyMjgsIDE2MCwgICA0LCAgIDAsICAgMCwgICA0LCANCisgICAgICAw
LCAgIDAsICAxNSwgMjI0LCAgIDAsICAgMCwgDQorICAgIDIyOCwgMTQ0LCAgIDEsICAgMCwgIDgw
LCAxNjAsIA0KKyAgICAgIDEsICAgMCwgMTYwLCAxNjAsIDI1NSwgMjU1LCANCisgICAgICAwLCAg
IDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxl
ZC9sdW1pbmFuY2Vwcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2x1bWluYW5jZXBzLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkg
TWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQorLy8NCisv
LyAgIGZ4YyAvRSBsdW1pbmFuY2VwcyAvVCBwc18yXzAgL0ZoIGNvbXBpbGVkL2x1bWluYW5jZXBz
LmggQmxpdC5wcw0KKy8vDQorLy8NCisvLyBQYXJhbWV0ZXJzOg0KKy8vDQorLy8gICBmbG9hdDQg
bW9kZTsNCisvLyAgIHNhbXBsZXIyRCB0ZXg7DQorLy8NCisvLw0KKy8vIFJlZ2lzdGVyczoNCisv
Lw0KKy8vICAgTmFtZSAgICAgICAgIFJlZyAgIFNpemUNCisvLyAgIC0tLS0tLS0tLS0tLSAtLS0t
LSAtLS0tDQorLy8gICBtb2RlICAgICAgICAgYzAgICAgICAgMQ0KKy8vICAgdGV4ICAgICAgICAg
IHMwICAgICAgIDENCisvLw0KKw0KKyAgICBwc18yXzANCisgICAgZGNsIHQwLnh5DQorICAgIGRj
bF8yZCBzMA0KKyAgICB0ZXhsZCByMCwgdDAsIHMwDQorICAgIG1hZCByMS53LCByMC53LCBjMC54
LCBjMC55DQorICAgIG1vdiByMS54eXosIHIwLngNCisgICAgbW92IG9DMCwgcjENCisNCisvLyBh
cHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZCAoMSB0ZXh0dXJlLCAzIGFyaXRo
bWV0aWMpDQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX3BzMjBfbHVtaW5hbmNlcHNbXSA9DQor
ew0KKyAgICAgIDAsICAgMiwgMjU1LCAyNTUsIDI1NCwgMjU1LCANCisgICAgIDQzLCAgIDAsICA2
NywgIDg0LCAgNjUsICA2NiwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgMTE5LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NSwgMjU1LCANCisgICAgICAyLCAgIDAsICAgMCwg
ICAwLCAgMjgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAg
ICAxMTIsICAgMCwgICAwLCAgIDAsICA2OCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDc2LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDkyLCAgIDAsICAgMCwgICAwLCAg
IDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgOTYs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDEwOSwgMTExLCAxMDAs
IDEwMSwgDQorICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgICAxLCAgIDAsIA0KKyAgICAgIDMsICAg
MCwgICAxLCAgIDAsICAgNCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAxMTYsIDEwMSwgMTIwLCAgIDAsIA0KKyAgICAgIDQsICAgMCwg
IDEyLCAgIDAsICAgMSwgICAwLCANCisgICAgICAxLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTEyLCAxMTUsIA0KKyAgICAgOTUsICA1MCwgIDk1
LCAgNDgsICAgMCwgIDc3LCANCisgICAgMTA1LCAgOTksIDExNCwgMTExLCAxMTUsIDExMSwgDQor
ICAgIDEwMiwgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsIA0KKyAgICAgMzIsICA3MiwgIDc2LCAg
ODMsICA3NiwgIDMyLCANCisgICAgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgDQorICAg
ICAzMiwgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIA0KKyAgICAxMDgsIDEwMSwgMTE0LCAgMzIs
ICA1NywgIDQ2LCANCisgICAgIDUwLCAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgDQorICAgICA0
NiwgIDUxLCAgNDksICA0OSwgIDQ5LCAgIDAsIA0KKyAgICAgMzEsICAgMCwgICAwLCAgIDIsICAg
MCwgICAwLCANCisgICAgICAwLCAxMjgsICAgMCwgICAwLCAgIDMsIDE3NiwgDQorICAgICAzMSwg
ICAwLCAgIDAsICAgMiwgICAwLCAgIDAsIA0KKyAgICAgIDAsIDE0NCwgICAwLCAgIDgsICAxNSwg
MTYwLCANCisgICAgIDY2LCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgDQorICAgICAxNSwgMTI4
LCAgIDAsICAgMCwgMjI4LCAxNzYsIA0KKyAgICAgIDAsICAgOCwgMjI4LCAxNjAsICAgNCwgICAw
LCANCisgICAgICAwLCAgIDQsICAgMSwgICAwLCAgIDgsIDEyOCwgDQorICAgICAgMCwgICAwLCAy
NTUsIDEyOCwgICAwLCAgIDAsIA0KKyAgICAgIDAsIDE2MCwgICAwLCAgIDAsICA4NSwgMTYwLCAN
CisgICAgICAxLCAgIDAsICAgMCwgICAyLCAgIDEsICAgMCwgDQorICAgICAgNywgMTI4LCAgIDAs
ICAgMCwgICAwLCAxMjgsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDIsICAgMCwgICA4LCANCisg
ICAgIDE1LCAxMjgsICAgMSwgICAwLCAyMjgsIDEyOCwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAg
MA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdoMTF2cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21w
aWxlZC9wYXNzdGhyb3VnaDExdnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3Vn
aDExdnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzcgQEAKKyNpZiAwDQorLy8NCisvLyBH
ZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4z
MTExDQorLy8NCisvLw0KKy8vICAgZnhjIC9FIFZTX1Bhc3N0aHJvdWdoIC9UIHZzXzRfMCAvRmgg
Y29tcGlsZWQvcGFzc3Rocm91Z2gxMXZzLmgNCisvLyAgICBQYXNzdGhyb3VnaDExLmhsc2wNCisv
Lw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAg
ICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0gLS0tLS0tDQorLy8gUE9TSVRJT04gICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAw
ICAgICBOT05FICBmbG9hdCAgIHh5ICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAg
IHh5ICAgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8NCisvLyBPdXRw
dXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNr
IFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BP
U0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgZmxvYXQgICB4
eXp3DQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBO
T05FICBmbG9hdCAgIHh5ICANCisvLw0KK3ZzXzRfMA0KK2RjbF9pbnB1dCB2MC54eQ0KK2RjbF9p
bnB1dCB2MS54eQ0KK2RjbF9vdXRwdXRfc2l2IG8wLnh5encsIHBvc2l0aW9uDQorZGNsX291dHB1
dCBvMS54eQ0KK21vdiBvMC54eSwgdjAueHl4eA0KK21vdiBvMC56dywgbCgwLDAsMCwxLjAwMDAw
MCkNCittb3YgbzEueHksIHYxLnh5eHgNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSA0IGluc3Ry
dWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfVlNfUGFzc3Rocm91
Z2hbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDExNywgIDc0LCANCisgICAgIDM0
LCAgNzksIDE3NCwgMjI2LCAxNzAsICA3NCwgDQorICAgIDExMCwgIDE2LCAyMzcsICAxNCwgIDY3
LCAxODUsIA0KKyAgICAxMTksIDE2NywgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDY4LCAg
IDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAxNDAsICAgMCwgICAwLCAgIDAsIDIyNCwgICAwLCANCisgICAgICAwLCAgIDAs
ICA1NiwgICAxLCAgIDAsICAgMCwgDQorICAgIDIwMCwgICAxLCAgIDAsICAgMCwgIDgyLCAgNjgs
IA0KKyAgICAgNjksICA3MCwgIDgwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU0LCAyNTUsICAgMCwg
ICAxLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgIDc3LCAxMDUsIA0KKyAg
ICAgOTksIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCANCisgICAgMTE2LCAgMzIsICA0MCwgIDgy
LCAgNDEsICAzMiwgDQorICAgICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIA0KKyAgICAx
MDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCANCisgICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAx
MDUsIDEwOCwgDQorICAgIDEwMSwgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTAsIA0KKyAgICAgNTcs
ICA0NiwgIDU3LCAgNTMsICA1MCwgIDQ2LCANCisgICAgIDUxLCAgNDksICA0OSwgIDQ5LCAgIDAs
IDE3MSwgDQorICAgIDE3MSwgMTcxLCAgNzMsICA4MywgIDcxLCAgNzgsIA0KKyAgICAgNzYsICAg
MCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAg
MCwgDQorICAgICA1NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDMsICAgMywgICAwLCAgIDAsIA0KKyAgICAgNjUsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAg
IDMsICAgMCwgICAwLCANCisgICAgIDgwLCAgNzksICA4MywgIDczLCAgODQsICA3MywgDQorICAg
ICA3OSwgIDc4LCAgIDAsICA4NCwgIDY5LCAgODgsIA0KKyAgICAgNjcsICA3OSwgIDc5LCAgODIs
ICA2OCwgICAwLCANCisgICAgMTcxLCAxNzEsICA3OSwgIDgzLCAgNzEsICA3OCwgDQorICAgICA4
MCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAg
MCwgICAwLCANCisgICAgIDU2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDMsICAxMiwgICAwLCAgIDAsIA0KKyAgICAgODMsICA4NiwgIDk1LCAgODAsICA3OSwgIDgzLCAN
CisgICAgIDczLCAgODQsICA3MywgIDc5LCAgNzgsICAgMCwgDQorICAgICA4NCwgIDY5LCAgODgs
ICA2NywgIDc5LCAgNzksIA0KKyAgICAgODIsICA2OCwgICAwLCAxNzEsIDE3MSwgMTcxLCANCisg
ICAgIDgzLCAgNzIsICA2OCwgIDgyLCAxMzYsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjQsICAg
MCwgICAxLCAgIDAsIA0KKyAgICAgMzQsICAgMCwgICAwLCAgIDAsICA5NSwgICAwLCANCisgICAg
ICAwLCAgIDMsICA1MCwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDk1LCAgIDAsIA0KKyAgICAgIDAsICAgMywgIDUwLCAgMTYsICAxNiwgICAwLCANCisgICAgICAx
LCAgIDAsICAgMCwgICAwLCAxMDMsICAgMCwgDQorICAgICAgMCwgICA0LCAyNDIsICAzMiwgIDE2
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAg
IDAsIDEwMSwgICAwLCAgIDAsICAgMywgDQorICAgICA1MCwgIDMyLCAgMTYsICAgMCwgICAxLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA1LCANCisgICAgIDUwLCAgMzIs
ICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAxNiwgIDE2LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDgsIDE5
NCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgNjQsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTI4LCAgNjMsIA0KKyAg
ICAgNTQsICAgMCwgICAwLCAgIDUsICA1MCwgIDMyLCANCisgICAgIDE2LCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgDQorICAgICA3MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDYyLCAgIDAsICAgMCwgICAxLCANCisgICAgIDgzLCAgODQsICA2NSwgIDg0LCAx
MTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgNCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDANCit9
Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
c2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTExcHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGls
ZWQvcGFzc3Rocm91Z2hsdW0xMXBzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91
Z2hsdW0xMXBzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU1IEBACisjaWYgMA0KKy8vDQor
Ly8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45
NTIuMzExMQ0KKy8vDQorLy8NCisvLyAgIGZ4YyAvRSBQU19QYXNzdGhyb3VnaEx1bSAvVCBwc180
XzAgL0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdobHVtMTFwcy5oDQorLy8gICAgUGFzc3Rocm91Z2gx
MS5obHNsDQorLy8NCisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdzOg0KKy8vDQorLy8gTmFtZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBT
bG90IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0t
LS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQorLy8gU2FtcGxlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZXIgICAgICBOQSAgICAgICAgICBOQSAgICAwICAgICAg
ICAxDQorLy8gVGV4dHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0
NCAgICAgICAgICAyZCAgICAwICAgICAgICAxDQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2ln
bmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lz
dGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0t
LSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9O
ICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgZmxvYXQgICAgICAgDQor
Ly8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICBm
bG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5h
bWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQg
ICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0tIC0tLS0tLSAtLS0tLS0NCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5
encgICAgICAgIDAgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vDQorcHNfNF8wDQorZGNsX3Nh
bXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJlMmQgKGZsb2F0LGZs
b2F0LGZsb2F0LGZsb2F0KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHkNCitkY2xfb3V0
cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMQ0KK3NhbXBsZSByMC54eXp3LCB2MS54eXh4LCB0MC54
eXp3LCBzMA0KK21vdiBvMC54eXosIHIwLnh4eHgNCittb3YgbzAudywgbCgxLjAwMDAwMCkNCity
ZXQgDQorLy8gQXBwcm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYN
CisNCitjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hMdW1bXSA9DQorew0KKyAgICAgNjgsICA4
OCwgIDY2LCAgNjcsICA5NywgIDQxLCANCisgICAgIDM3LCAxNTQsICAgMCwgMTc0LCAxMzcsIDE1
NywgDQorICAgICA3NiwgMjE5LCAyMzAsICAyNiwgMjI3LCAxNzQsIA0KKyAgICAxODcsICA2Niwg
ICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTI4LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwg
DQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMjAsICAgMCwgICAw
LCAgIDAsICA1MiwgICAxLCANCisgICAgICAwLCAgIDAsIDEwNCwgICAxLCAgIDAsICAgMCwgDQor
ICAgICAgNCwgICAyLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgMTYwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAs
ICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgIDEw
OCwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwMCwgICAw
LCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA1LCAgIDAsICAgMCwgICAw
LCANCisgICAgICA0LCAgIDAsICAgMCwgICAwLCAyNTUsIDI1NSwgDQorICAgIDI1NSwgMjU1LCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAxMywgICAwLCAN
CisgICAgICAwLCAgIDAsICA4MywgIDk3LCAxMDksIDExMiwgDQorICAgIDEwOCwgMTAxLCAxMTQs
ICAgMCwgIDg0LCAxMDEsIA0KKyAgICAxMjAsIDExNiwgMTE3LCAxMTQsIDEwMSwgICAwLCANCisg
ICAgIDc3LCAxMDUsICA5OSwgMTE0LCAxMTEsIDExNSwgDQorICAgIDExMSwgMTAyLCAxMTYsICAz
MiwgIDQwLCAgODIsIA0KKyAgICAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LCANCisgICAg
IDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIDEwMSwgDQorICAgIDExNCwgIDMyLCAgNjcsIDExMSwg
MTA5LCAxMTIsIA0KKyAgICAxMDUsIDEwOCwgMTAxLCAxMTQsICAzMiwgIDU3LCANCisgICAgIDQ2
LCAgNTAsICA1NywgIDQ2LCAgNTcsICA1MywgDQorICAgICA1MCwgIDQ2LCAgNTEsICA0OSwgIDQ5
LCAgNDksIA0KKyAgICAgIDAsIDE3MSwgMTcxLCAxNzEsICA3MywgIDgzLCANCisgICAgIDcxLCAg
NzgsICA4MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgICA4LCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDU2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwgICAwLCANCisgICAgICAwLCAgIDAsICA2
OCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwg
ICAwLCAgIDMsICAgMywgDQorICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODAsIA0KKyAg
ICAgNzksICA4MywgIDczLCAgODQsICA3MywgIDc5LCANCisgICAgIDc4LCAgIDAsICA4NCwgIDY5
LCAgODgsICA2NywgDQorICAgICA3OSwgIDc5LCAgODIsICA2OCwgICAwLCAxNzEsIA0KKyAgICAx
NzEsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCANCisgICAgIDQ0LCAgIDAsICAgMCwgICAwLCAg
IDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMzIs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYsICA5NSwgIDg0LCAgNjUsICA4
MiwgDQorICAgICA3MSwgIDY5LCAgODQsICAgMCwgMTcxLCAxNzEsIA0KKyAgICAgODMsICA3Miwg
IDY4LCAgODIsIDE0OCwgICAwLCANCisgICAgICAwLCAgIDAsICA2NCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAzNywgICAwLCAgIDAsICAgMCwgIDkwLCAgIDAsIA0KKyAgICAgIDAsICAgMywgICAw
LCAgOTYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgODgsICAyNCwgDQor
ICAgICAgMCwgICA0LCAgIDAsIDExMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICA4NSwgIDg1LCANCisgICAgICAwLCAgIDAsICA5OCwgIDE2LCAgIDAsICAgMywgDQorICAg
ICA1MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTAxLCAgIDAs
ICAgMCwgICAzLCANCisgICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAxMDQsICAgMCwgICAwLCAgIDIsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICA2
OSwgICAwLCANCisgICAgICAwLCAgIDksIDI0MiwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDcwLCAgMTYsIA0KKyAgICAgMTYsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAwLCANCisgICAgIDcwLCAxMjYsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAw
LCANCisgICAgICAwLCAgIDUsIDExNCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICA2LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMzAsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgMTI4LCAgNjMsICA2MiwgICAwLCAgIDAsICAgMSwgDQorICAgICA4MywgIDg0LCAgNjUsICA4
NCwgMTE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
DQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21w
aWxlZC9wYXNzdGhyb3VnaGx1bWFscGhhMTFwcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1
MSBAQAorI2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hh
ZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTENCisvLw0KKy8vDQorLy8gICBmeGMgL0UgUFNfUGFz
c3Rocm91Z2hMdW1BbHBoYSAvVCBwc180XzAgL0ZoDQorLy8gICAgY29tcGlsZWQvcGFzc3Rocm91
Z2hsdW1hbHBoYTExcHMuaCBQYXNzdGhyb3VnaDExLmhsc2wNCisvLw0KKy8vDQorLy8gUmVzb3Vy
Y2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0g
LS0tLS0tLS0NCisvLyBTYW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAg
ICAgIE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dHVyZSAgZmxvYXQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDEN
CisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAg
ICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAg
ICAwICAgICAgUE9TICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAg
MCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8NCisvLyBP
dXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBN
YXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNW
X1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgZmxvYXQg
ICB4eXp3DQorLy8NCitwc180XzANCitkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0DQorZGNs
X3Jlc291cmNlX3RleHR1cmUyZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwDQorZGNsX2lu
cHV0X3BzIGxpbmVhciB2MS54eQ0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2RjbF90ZW1wcyAxDQor
c2FtcGxlIHIwLnh5encsIHYxLnh5eHgsIHQwLnh5encsIHMwDQorbW92IG8wLnh5encsIHIwLnh4
eHcNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSAzIGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisj
ZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hMdW1BbHBoYVtdID0NCit7DQor
ICAgICA2OCwgIDg4LCAgNjYsICA2NywgMTk3LCAgNzIsIA0KKyAgICAyNTEsIDIzNiwgIDUzLCAx
MDcsIDE4MiwgMTQ2LCANCisgICAgMTk2LCAyMTksIDEzMCwgMTg3LCAxNDAsIDE1OSwgDQorICAg
IDIxMSwgMTIzLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMDgsICAgMiwgICAwLCAgIDAs
ICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgIDIy
MCwgICAwLCAgIDAsICAgMCwgIDUyLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgMTA0LCAgIDEsICAg
MCwgICAwLCANCisgICAgMjQwLCAgIDEsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwg
IDcwLCAxNjAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAw
LCANCisgICAgMTA4LCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisg
ICAgMTAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDUsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsIDI1NSwgMjU1LCANCisgICAg
MjU1LCAyNTUsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwg
IDEzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgOTcsIDEwOSwgMTEyLCANCisgICAgMTA4
LCAxMDEsIDExNCwgICAwLCAgODQsIDEwMSwgDQorICAgIDEyMCwgMTE2LCAxMTcsIDExNCwgMTAx
LCAgIDAsIA0KKyAgICAgNzcsIDEwNSwgIDk5LCAxMTQsIDExMSwgMTE1LCANCisgICAgMTExLCAx
MDIsIDExNiwgIDMyLCAgNDAsICA4MiwgDQorICAgICA0MSwgIDMyLCAgNzIsICA3NiwgIDgzLCAg
NzYsIA0KKyAgICAgMzIsICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCANCisgICAgMTE0LCAgMzIs
ICA2NywgMTExLCAxMDksIDExMiwgDQorICAgIDEwNSwgMTA4LCAxMDEsIDExNCwgIDMyLCAgNTcs
IA0KKyAgICAgNDYsICA1MCwgIDU3LCAgNDYsICA1NywgIDUzLCANCisgICAgIDUwLCAgNDYsICA1
MSwgIDQ5LCAgNDksICA0OSwgDQorICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgIDczLCAgODMsIA0K
KyAgICAgNzEsICA3OCwgIDgwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwg
ICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDY4LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgMywgICAzLCANCisgICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUs
ICA4MCwgDQorICAgICA3OSwgIDgzLCAgNzMsICA4NCwgIDczLCAgNzksIA0KKyAgICAgNzgsICAg
MCwgIDg0LCAgNjksICA4OCwgIDY3LCANCisgICAgIDc5LCAgNzksICA4MiwgIDY4LCAgIDAsIDE3
MSwgDQorICAgIDE3MSwgMTcxLCAgNzksICA4MywgIDcxLCAgNzgsIA0KKyAgICAgNDQsICAgMCwg
ICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODMsICA4NiwgIDk1LCAg
ODQsICA2NSwgIDgyLCANCisgICAgIDcxLCAgNjksICA4NCwgICAwLCAxNzEsIDE3MSwgDQorICAg
ICA4MywgIDcyLCAgNjgsICA4MiwgMTI4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDY0LCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgOTAsICAgMCwgDQorICAgICAg
MCwgICAzLCAgIDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4
OCwgIDI0LCANCisgICAgICAwLCAgIDQsICAgMCwgMTEyLCAgMTYsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDg1LCAgODUsIA0KKyAgICAgIDAsICAgMCwgIDk4LCAgMTYsICAgMCwg
ICAzLCANCisgICAgIDUwLCAgMTYsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAw
LCAxMDEsICAgMCwgICAwLCAgIDMsIA0KKyAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsIDEwNCwgICAwLCAgIDAsICAgMiwgDQorICAgICAgMSwgICAwLCAg
IDAsICAgMCwgIDY5LCAgIDAsIA0KKyAgICAgIDAsICAgOSwgMjQyLCAgIDAsICAxNiwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAxNiwgDQorICAgICAxNiwgICAwLCAgIDEs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsIDEyNiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgIDk2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDYsICAxMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgNjIsICAgMCwgICAwLCAgIDEsICA4MywgIDg0LCANCisgICAgIDY1
LCAgODQsIDExNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29t
cGlsZWQvcGFzc3Rocm91Z2hwcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdo
cHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorI2lmIDANCisvLw0KKy8vIEdlbmVy
YXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTEN
CisvLw0KKy8vICAgZnhjIC9FIHBhc3N0aHJvdWdocHMgL1QgcHNfMl8wIC9GaCBjb21waWxlZC9w
YXNzdGhyb3VnaHBzLmggQmxpdC5wcw0KKy8vDQorLy8NCisvLyBQYXJhbWV0ZXJzOg0KKy8vDQor
Ly8gICBzYW1wbGVyMkQgdGV4Ow0KKy8vDQorLy8NCisvLyBSZWdpc3RlcnM6DQorLy8NCisvLyAg
IE5hbWUgICAgICAgICBSZWcgICBTaXplDQorLy8gICAtLS0tLS0tLS0tLS0gLS0tLS0gLS0tLQ0K
Ky8vICAgdGV4ICAgICAgICAgIHMwICAgICAgIDENCisvLw0KKw0KKyAgICBwc18yXzANCisgICAg
ZGNsIHQwLnh5DQorICAgIGRjbF8yZCBzMA0KKyAgICB0ZXhsZCByMCwgdDAsIHMwDQorICAgIG1v
diBvQzAsIHIwDQorDQorLy8gYXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQg
KDEgdGV4dHVyZSwgMSBhcml0aG1ldGljKQ0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19wczIw
X3Bhc3N0aHJvdWdocHNbXSA9DQorew0KKyAgICAgIDAsICAgMiwgMjU1LCAyNTUsIDI1NCwgMjU1
LCANCisgICAgIDMyLCAgIDAsICA2NywgIDg0LCAgNjUsICA2NiwgDQorICAgICAyOCwgICAwLCAg
IDAsICAgMCwgIDc1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NSwgMjU1LCAN
CisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMSwgICAwLCAgIDAsIA0KKyAgICAgNjgsICAgMCwgICAwLCAgIDAsICA0OCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAg
MCwgIDUyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
MTE2LCAxMDEsIDEyMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAxMiwgICAwLCAgIDEsICAgMCwg
ICAxLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsIDExMiwgMTE1LCAgOTUsICA1MCwgDQorICAgICA5NSwgIDQ4LCAgIDAsICA3NywgMTA1
LCAgOTksIA0KKyAgICAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCANCisgICAgIDMyLCAg
NDAsICA4MiwgIDQxLCAgMzIsICA3MiwgDQorICAgICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAx
MDQsIA0KKyAgICAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3LCANCisgICAgMTExLCAxMDks
IDExMiwgMTA1LCAxMDgsIDEwMSwgDQorICAgIDExNCwgIDMyLCAgNTcsICA0NiwgIDUwLCAgNTcs
IA0KKyAgICAgNDYsICA1NywgIDUzLCAgNTAsICA0NiwgIDUxLCANCisgICAgIDQ5LCAgNDksICA0
OSwgICAwLCAgMzEsICAgMCwgDQorICAgICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAxMjgsIA0K
KyAgICAgIDAsICAgMCwgICAzLCAxNzYsICAzMSwgICAwLCANCisgICAgICAwLCAgIDIsICAgMCwg
ICAwLCAgIDAsIDE0NCwgDQorICAgICAgMCwgICA4LCAgMTUsIDE2MCwgIDY2LCAgIDAsIA0KKyAg
ICAgIDAsICAgMywgICAwLCAgIDAsICAxNSwgMTI4LCANCisgICAgICAwLCAgIDAsIDIyOCwgMTc2
LCAgIDAsICAgOCwgDQorICAgIDIyOCwgMTYwLCAgIDEsICAgMCwgICAwLCAgIDIsIA0KKyAgICAg
IDAsICAgOCwgIDE1LCAxMjgsICAgMCwgICAwLCANCisgICAgMjI4LCAxMjgsIDI1NSwgMjU1LCAg
IDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMTFwcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hh
ZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjExcHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxl
ZC9wYXNzdGhyb3VnaHJnYjExcHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTUgQEAKKyNp
ZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21w
aWxlciA5LjI5Ljk1Mi4zMTExDQorLy8NCisvLw0KKy8vICAgZnhjIC9FIFBTX1Bhc3N0aHJvdWdo
UkdCIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IxMXBzLmgNCisvLyAgICBQ
YXNzdGhyb3VnaDExLmhsc2wNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8N
CisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAg
ICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0NCisvLyBTYW1w
bGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAgIE5BICAgICAgICAgIE5B
ICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4
dHVyZSAgZmxvYXQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDENCisvLw0KKy8vDQorLy8NCisv
LyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAg
IE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0gLS0tLS0tDQorLy8g
U1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICBmbG9h
dCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEg
ICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0K
Ky8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1Zh
bHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAg
ICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQorLy8NCitwc180
XzANCitkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0DQorZGNsX3Jlc291cmNlX3RleHR1cmUy
ZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwDQorZGNsX2lucHV0X3BzIGxpbmVhciB2MS54
eQ0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2RjbF90ZW1wcyAxDQorc2FtcGxlIHIwLnh5encsIHYx
Lnh5eHgsIHQwLnh5encsIHMwDQorbW92IG8wLnh5eiwgcjAueHl6eA0KK21vdiBvMC53LCBsKDEu
MDAwMDAwKQ0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNl
ZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQltdID0NCit7DQor
ICAgICA2OCwgIDg4LCAgNjYsICA2NywgMjUzLCAgNDUsIA0KKyAgICAgMTMsICAzNCwgMTI1LCAx
OTQsICA5NSwgMTQ5LCANCisgICAgICAxLCAgOTUsIDE5NCwgMjUyLCAxMTgsIDIyOCwgDQorICAg
IDE3OCwgMjAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMjgsICAgMiwgICAwLCAgIDAs
ICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgIDIy
MCwgICAwLCAgIDAsICAgMCwgIDUyLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgMTA0LCAgIDEsICAg
MCwgICAwLCANCisgICAgICA0LCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwg
IDcwLCAxNjAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAw
LCANCisgICAgMTA4LCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisg
ICAgMTAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDUsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsIDI1NSwgMjU1LCANCisgICAg
MjU1LCAyNTUsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwg
IDEzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgOTcsIDEwOSwgMTEyLCANCisgICAgMTA4
LCAxMDEsIDExNCwgICAwLCAgODQsIDEwMSwgDQorICAgIDEyMCwgMTE2LCAxMTcsIDExNCwgMTAx
LCAgIDAsIA0KKyAgICAgNzcsIDEwNSwgIDk5LCAxMTQsIDExMSwgMTE1LCANCisgICAgMTExLCAx
MDIsIDExNiwgIDMyLCAgNDAsICA4MiwgDQorICAgICA0MSwgIDMyLCAgNzIsICA3NiwgIDgzLCAg
NzYsIA0KKyAgICAgMzIsICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCANCisgICAgMTE0LCAgMzIs
ICA2NywgMTExLCAxMDksIDExMiwgDQorICAgIDEwNSwgMTA4LCAxMDEsIDExNCwgIDMyLCAgNTcs
IA0KKyAgICAgNDYsICA1MCwgIDU3LCAgNDYsICA1NywgIDUzLCANCisgICAgIDUwLCAgNDYsICA1
MSwgIDQ5LCAgNDksICA0OSwgDQorICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgIDczLCAgODMsIA0K
KyAgICAgNzEsICA3OCwgIDgwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwg
ICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDY4LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgMywgICAzLCANCisgICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUs
ICA4MCwgDQorICAgICA3OSwgIDgzLCAgNzMsICA4NCwgIDczLCAgNzksIA0KKyAgICAgNzgsICAg
MCwgIDg0LCAgNjksICA4OCwgIDY3LCANCisgICAgIDc5LCAgNzksICA4MiwgIDY4LCAgIDAsIDE3
MSwgDQorICAgIDE3MSwgMTcxLCAgNzksICA4MywgIDcxLCAgNzgsIA0KKyAgICAgNDQsICAgMCwg
ICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODMsICA4NiwgIDk1LCAg
ODQsICA2NSwgIDgyLCANCisgICAgIDcxLCAgNjksICA4NCwgICAwLCAxNzEsIDE3MSwgDQorICAg
ICA4MywgIDcyLCAgNjgsICA4MiwgMTQ4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDY0LCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDM3LCAgIDAsICAgMCwgICAwLCAgOTAsICAgMCwgDQorICAgICAg
MCwgICAzLCAgIDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4
OCwgIDI0LCANCisgICAgICAwLCAgIDQsICAgMCwgMTEyLCAgMTYsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDg1LCAgODUsIA0KKyAgICAgIDAsICAgMCwgIDk4LCAgMTYsICAgMCwg
ICAzLCANCisgICAgIDUwLCAgMTYsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAw
LCAxMDEsICAgMCwgICAwLCAgIDMsIA0KKyAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsIDEwNCwgICAwLCAgIDAsICAgMiwgDQorICAgICAgMSwgICAwLCAg
IDAsICAgMCwgIDY5LCAgIDAsIA0KKyAgICAgIDAsICAgOSwgMjQyLCAgIDAsICAxNiwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAxNiwgDQorICAgICAxNiwgICAwLCAgIDEs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsIDEyNiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgIDk2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMTE0LCAgMzIsICAxNiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDEzMCwgIDMyLCANCisgICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgIDY0LCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAxMjgsICA2MywgIDYyLCAgIDAsICAgMCwgICAxLCANCisgICAgIDgzLCAg
ODQsICA2NSwgIDg0LCAxMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmExMXBzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTExcHMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9j
b21waWxlZC9wYXNzdGhyb3VnaHJnYmExMXBzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ0
IEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFk
ZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KKy8vDQorLy8NCisvLyAgIGZ4YyAvRSBQU19QYXNz
dGhyb3VnaFJHQkEgL1QgcHNfNF8wIC9GaCBjb21waWxlZC9wYXNzdGhyb3VnaHJnYmExMXBzLmgN
CisvLyAgICBQYXNzdGhyb3VnaDExLmhsc2wNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGlu
Z3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAg
Rm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0N
CisvLyBTYW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAgIE5BICAg
ICAgICAgIE5BICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGV4dHVyZSAgZmxvYXQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDENCisvLw0KKy8v
DQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAg
ICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0gLS0t
LS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAg
UE9TICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAg
ICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2ln
bmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lz
dGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0t
LSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAg
ICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQor
Ly8NCitwc180XzANCitkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0DQorZGNsX3Jlc291cmNl
X3RleHR1cmUyZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwDQorZGNsX2lucHV0X3BzIGxp
bmVhciB2MS54eQ0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK3NhbXBsZSBvMC54eXp3LCB2MS54eXh4
LCB0MC54eXp3LCBzMA0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDIgaW5zdHJ1Y3Rpb24gc2xv
dHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQkFbXSA9
DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDE1MiwgIDg2LCANCisgICAgMjI1LCAxMDcs
IDE1NSwgIDgzLCAyMTYsICAxMywgDQorICAgIDE1NCwgMjEyLCAxNDQsICAgNSwgIDgyLCAgNzQs
IA0KKyAgICAgOTAsICA5OCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDgwLCAgIDIsICAg
MCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAyMjAsICAgMCwgICAwLCAgIDAsICA1MiwgICAxLCANCisgICAgICAwLCAgIDAsIDEwNCwg
ICAxLCAgIDAsICAgMCwgDQorICAgIDIxMiwgICAxLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAg
ICAgNjksICA3MCwgMTYwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
MjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAg
IDAsICAgMCwgDQorICAgIDEwOCwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgDQorICAgIDEwMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICA1LCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwgICAwLCAyNTUsIDI1NSwg
DQorICAgIDI1NSwgMjU1LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAw
LCAgIDAsICAxMywgICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDk3LCAxMDksIDExMiwgDQor
ICAgIDEwOCwgMTAxLCAxMTQsICAgMCwgIDg0LCAxMDEsIA0KKyAgICAxMjAsIDExNiwgMTE3LCAx
MTQsIDEwMSwgICAwLCANCisgICAgIDc3LCAxMDUsICA5OSwgMTE0LCAxMTEsIDExNSwgDQorICAg
IDExMSwgMTAyLCAxMTYsICAzMiwgIDQwLCAgODIsIA0KKyAgICAgNDEsICAzMiwgIDcyLCAgNzYs
ICA4MywgIDc2LCANCisgICAgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIDEwMSwgDQorICAgIDEx
NCwgIDMyLCAgNjcsIDExMSwgMTA5LCAxMTIsIA0KKyAgICAxMDUsIDEwOCwgMTAxLCAxMTQsICAz
MiwgIDU3LCANCisgICAgIDQ2LCAgNTAsICA1NywgIDQ2LCAgNTcsICA1MywgDQorICAgICA1MCwg
IDQ2LCAgNTEsICA0OSwgIDQ5LCAgNDksIA0KKyAgICAgIDAsIDE3MSwgMTcxLCAxNzEsICA3Mywg
IDgzLCANCisgICAgIDcxLCAgNzgsICA4MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAw
LCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU2LCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwgICAwLCAN
CisgICAgICAwLCAgIDAsICA2OCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMywgDQorICAgICAgMCwgICAwLCAgODMsICA4
NiwgIDk1LCAgODAsIA0KKyAgICAgNzksICA4MywgIDczLCAgODQsICA3MywgIDc5LCANCisgICAg
IDc4LCAgIDAsICA4NCwgIDY5LCAgODgsICA2NywgDQorICAgICA3OSwgIDc5LCAgODIsICA2OCwg
ICAwLCAxNzEsIA0KKyAgICAxNzEsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCANCisgICAgIDQ0
LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYs
ICA5NSwgIDg0LCAgNjUsICA4MiwgDQorICAgICA3MSwgIDY5LCAgODQsICAgMCwgMTcxLCAxNzEs
IA0KKyAgICAgODMsICA3MiwgIDY4LCAgODIsIDEwMCwgICAwLCANCisgICAgICAwLCAgIDAsICA2
NCwgICAwLCAgIDAsICAgMCwgDQorICAgICAyNSwgICAwLCAgIDAsICAgMCwgIDkwLCAgIDAsIA0K
KyAgICAgIDAsICAgMywgICAwLCAgOTYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgODgsICAyNCwgDQorICAgICAgMCwgICA0LCAgIDAsIDExMiwgIDE2LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICA4NSwgIDg1LCANCisgICAgICAwLCAgIDAsICA5OCwgIDE2
LCAgIDAsICAgMywgDQorICAgICA1MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgMTAxLCAgIDAsICAgMCwgICAzLCANCisgICAgMjQyLCAgMzIsICAxNiwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjksICAgMCwgICAwLCAgIDksIA0KKyAgICAyNDIs
ICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgIDE2LCAgMTYs
ICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDcwLCAxMjYsIA0KKyAgICAgMTYsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgOTYsICAxNiwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgNjIsICAgMCwgICAwLCAgIDEsIA0KKyAgICAgODMsICA4NCwg
IDY1LCAgODQsIDExNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAy
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3N0YW5kYXJkdnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29t
cGlsZWQvc3RhbmRhcmR2cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3N0YW5kYXJkdnMuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorI2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBi
eSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTENCisvLw0K
Ky8vICAgZnhjIC9FIHN0YW5kYXJkdnMgL1QgdnNfMl8wIC9GaCBjb21waWxlZC9zdGFuZGFyZHZz
LmggQmxpdC52cw0KKy8vDQorLy8NCisvLyBQYXJhbWV0ZXJzOg0KKy8vDQorLy8gICBmbG9hdDQg
aGFsZlBpeGVsU2l6ZTsNCisvLw0KKy8vDQorLy8gUmVnaXN0ZXJzOg0KKy8vDQorLy8gICBOYW1l
ICAgICAgICAgIFJlZyAgIFNpemUNCisvLyAgIC0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLQ0KKy8v
ICAgaGFsZlBpeGVsU2l6ZSBjMCAgICAgICAxDQorLy8NCisNCisgICAgdnNfMl8wDQorICAgIGRl
ZiBjMSwgMC41LCAtMC41LCAxLCAwDQorICAgIGRjbF9wb3NpdGlvbiB2MA0KKyAgICBhZGQgb1Bv
cywgdjAsIGMwDQorICAgIG1hZCBvVDAsIHYwLCBjMS54eXp6LCBjMS54eHd3DQorDQorLy8gYXBw
cm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBC
WVRFIGdfdnMyMF9zdGFuZGFyZHZzW10gPQ0KK3sNCisgICAgICAwLCAgIDIsIDI1NCwgMjU1LCAy
NTQsIDI1NSwgDQorICAgICAzNSwgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIA0KKyAgICAgMjgs
ICAgMCwgICAwLCAgIDAsICA4NywgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAyLCAyNTQs
IDI1NSwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI4LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgIDgwLCAgIDAsICAgMCwgICAwLCAgNDgsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwg
ICAwLCAgIDAsICA2NCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgIDEwNCwgIDk3LCAxMDgsIDEwMiwgIDgwLCAxMDUsIA0KKyAgICAxMjAsIDEwMSwgMTA4
LCAgODMsIDEwNSwgMTIyLCANCisgICAgMTAxLCAgIDAsIDE3MSwgMTcxLCAgIDEsICAgMCwgDQor
ICAgICAgMywgICAwLCAgIDEsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDExOCwgMTE1LCAgOTUsICA1MCwgDQorICAg
ICA5NSwgIDQ4LCAgIDAsICA3NywgMTA1LCAgOTksIA0KKyAgICAxMTQsIDExMSwgMTE1LCAxMTEs
IDEwMiwgMTE2LCANCisgICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgDQorICAgICA3
NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsIA0KKyAgICAgOTcsIDEwMCwgMTAxLCAxMTQsICAz
MiwgIDY3LCANCisgICAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgDQorICAgIDExNCwg
IDMyLCAgNTcsICA0NiwgIDUwLCAgNTcsIA0KKyAgICAgNDYsICA1NywgIDUzLCAgNTAsICA0Niwg
IDUxLCANCisgICAgIDQ5LCAgNDksICA0OSwgICAwLCAgODEsICAgMCwgDQorICAgICAgMCwgICA1
LCAgIDEsICAgMCwgIDE1LCAxNjAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgNjMsICAgMCwgICAw
LCANCisgICAgICAwLCAxOTEsICAgMCwgICAwLCAxMjgsICA2MywgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDMxLCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgMTI4LCAN
CisgICAgICAwLCAgIDAsICAxNSwgMTQ0LCAgIDIsICAgMCwgDQorICAgICAgMCwgICAzLCAgIDAs
ICAgMCwgIDE1LCAxOTIsIA0KKyAgICAgIDAsICAgMCwgMjI4LCAxNDQsICAgMCwgICAwLCANCisg
ICAgMjI4LCAxNjAsICAgNCwgICAwLCAgIDAsICAgNCwgDQorICAgICAgMCwgICAwLCAgMTUsIDIy
NCwgICAwLCAgIDAsIA0KKyAgICAyMjgsIDE0NCwgICAxLCAgIDAsIDE2NCwgMTYwLCANCisgICAg
ICAxLCAgIDAsIDI0MCwgMTYwLCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAwDQorfTsNCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9MSUNF
TlNFCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0
eS9tdXJtdXJoYXNoL0xJQ0VOU0UJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9MSUNFTlNFCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIgQEAKKy8vIE11cm11ckhhc2gzIHdhcyB3cml0dGVuIGJ5IEF1c3RpbiBBcHBsZWJ5
LCBhbmQgaXMgcGxhY2VkIGluIHRoZSBwdWJsaWMKKy8vIGRvbWFpbi4gVGhlIGF1dGhvciBoZXJl
YnkgZGlzY2xhaW1zIGNvcHlyaWdodCB0byB0aGlzIHNvdXJjZSBjb2RlLgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9w
YXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkv
bXVybXVyaGFzaC9NdXJtdXJIYXNoMy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzM0IEBA
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gTXVybXVySGFzaDMgd2FzIHdyaXR0ZW4gYnkg
QXVzdGluIEFwcGxlYnksIGFuZCBpcyBwbGFjZWQgaW4gdGhlIHB1YmxpYw0KKy8vIGRvbWFpbi4g
VGhlIGF1dGhvciBoZXJlYnkgZGlzY2xhaW1zIGNvcHlyaWdodCB0byB0aGlzIHNvdXJjZSBjb2Rl
Lg0KKw0KKy8vIE5vdGUgLSBUaGUgeDg2IGFuZCB4NjQgdmVyc2lvbnMgZG8gX25vdF8gcHJvZHVj
ZSB0aGUgc2FtZSByZXN1bHRzLCBhcyB0aGUNCisvLyBhbGdvcml0aG1zIGFyZSBvcHRpbWl6ZWQg
Zm9yIHRoZWlyIHJlc3BlY3RpdmUgcGxhdGZvcm1zLiBZb3UgY2FuIHN0aWxsDQorLy8gY29tcGls
ZSBhbmQgcnVuIGFueSBvZiB0aGVtIG9uIGFueSBwbGF0Zm9ybSwgYnV0IHlvdXIgcGVyZm9ybWFu
Y2Ugd2l0aCB0aGUNCisvLyBub24tbmF0aXZlIHZlcnNpb24gd2lsbCBiZSBsZXNzIHRoYW4gb3B0
aW1hbC4NCisNCisjaW5jbHVkZSAiTXVybXVySGFzaDMuaCINCisNCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQorLy8gUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtYWNyb3MNCisNCisv
LyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbw0KKw0KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQ0KKw0K
KyNkZWZpbmUgRk9SQ0VfSU5MSU5FCV9fZm9yY2VpbmxpbmUNCisNCisjaW5jbHVkZSA8c3RkbGli
Lmg+DQorDQorI2RlZmluZSBST1RMMzIoeCx5KQlfcm90bCh4LHkpDQorI2RlZmluZSBST1RMNjQo
eCx5KQlfcm90bDY0KHgseSkNCisNCisjZGVmaW5lIEJJR19DT05TVEFOVCh4KSAoeCkNCisNCisv
LyBPdGhlciBjb21waWxlcnMNCisNCisjZWxzZQkvLyBkZWZpbmVkKF9NU0NfVkVSKQ0KKw0KKyNk
ZWZpbmUJRk9SQ0VfSU5MSU5FIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQ0KKw0KK2lu
bGluZSB1aW50MzJfdCByb3RsMzIgKCB1aW50MzJfdCB4LCBpbnQ4X3QgciApDQorew0KKyAgcmV0
dXJuICh4IDw8IHIpIHwgKHggPj4gKDMyIC0gcikpOw0KK30NCisNCitpbmxpbmUgdWludDY0X3Qg
cm90bDY0ICggdWludDY0X3QgeCwgaW50OF90IHIgKQ0KK3sNCisgIHJldHVybiAoeCA8PCByKSB8
ICh4ID4+ICg2NCAtIHIpKTsNCit9DQorDQorI2RlZmluZQlST1RMMzIoeCx5KQlyb3RsMzIoeCx5
KQ0KKyNkZWZpbmUgUk9UTDY0KHgseSkJcm90bDY0KHgseSkNCisNCisjZGVmaW5lIEJJR19DT05T
VEFOVCh4KSAoeCMjTExVKQ0KKw0KKyNlbmRpZiAvLyAhZGVmaW5lZChfTVNDX1ZFUikNCisNCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQmxvY2sgcmVhZCAtIGlmIHlvdXIgcGxhdGZvcm0g
bmVlZHMgdG8gZG8gZW5kaWFuLXN3YXBwaW5nIG9yIGNhbiBvbmx5DQorLy8gaGFuZGxlIGFsaWdu
ZWQgcmVhZHMsIGRvIHRoZSBjb252ZXJzaW9uIGhlcmUNCisNCitGT1JDRV9JTkxJTkUgdWludDMy
X3QgZ2V0YmxvY2sgKCBjb25zdCB1aW50MzJfdCAqIHAsIGludCBpICkNCit7DQorICByZXR1cm4g
cFtpXTsNCit9DQorDQorRk9SQ0VfSU5MSU5FIHVpbnQ2NF90IGdldGJsb2NrICggY29uc3QgdWlu
dDY0X3QgKiBwLCBpbnQgaSApDQorew0KKyAgcmV0dXJuIHBbaV07DQorfQ0KKw0KKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCisvLyBGaW5hbGl6YXRpb24gbWl4IC0gZm9yY2UgYWxsIGJpdHMgb2Yg
YSBoYXNoIGJsb2NrIHRvIGF2YWxhbmNoZQ0KKw0KK0ZPUkNFX0lOTElORSB1aW50MzJfdCBmbWl4
ICggdWludDMyX3QgaCApDQorew0KKyAgaCBePSBoID4+IDE2Ow0KKyAgaCAqPSAweDg1ZWJjYTZi
Ow0KKyAgaCBePSBoID4+IDEzOw0KKyAgaCAqPSAweGMyYjJhZTM1Ow0KKyAgaCBePSBoID4+IDE2
Ow0KKw0KKyAgcmV0dXJuIGg7DQorfQ0KKw0KKy8vLS0tLS0tLS0tLQ0KKw0KK0ZPUkNFX0lOTElO
RSB1aW50NjRfdCBmbWl4ICggdWludDY0X3QgayApDQorew0KKyAgayBePSBrID4+IDMzOw0KKyAg
ayAqPSBCSUdfQ09OU1RBTlQoMHhmZjUxYWZkN2VkNTU4Y2NkKTsNCisgIGsgXj0gayA+PiAzMzsN
CisgIGsgKj0gQklHX0NPTlNUQU5UKDB4YzRjZWI5ZmUxYTg1ZWM1Myk7DQorICBrIF49IGsgPj4g
MzM7DQorDQorICByZXR1cm4gazsNCit9DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0K
K3ZvaWQgTXVybXVySGFzaDNfeDg2XzMyICggY29uc3Qgdm9pZCAqIGtleSwgaW50IGxlbiwNCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQgKQ0KK3sN
CisgIGNvbnN0IHVpbnQ4X3QgKiBkYXRhID0gKGNvbnN0IHVpbnQ4X3QqKWtleTsNCisgIGNvbnN0
IGludCBuYmxvY2tzID0gbGVuIC8gNDsNCisNCisgIHVpbnQzMl90IGgxID0gc2VlZDsNCisNCisg
IGNvbnN0IHVpbnQzMl90IGMxID0gMHhjYzllMmQ1MTsNCisgIGNvbnN0IHVpbnQzMl90IGMyID0g
MHgxYjg3MzU5MzsNCisNCisgIC8vLS0tLS0tLS0tLQ0KKyAgLy8gYm9keQ0KKw0KKyAgY29uc3Qg
dWludDMyX3QgKiBibG9ja3MgPSAoY29uc3QgdWludDMyX3QgKikoZGF0YSArIG5ibG9ja3MqNCk7
DQorDQorICBmb3IoaW50IGkgPSAtbmJsb2NrczsgaTsgaSsrKQ0KKyAgew0KKyAgICB1aW50MzJf
dCBrMSA9IGdldGJsb2NrKGJsb2NrcyxpKTsNCisNCisgICAgazEgKj0gYzE7DQorICAgIGsxID0g
Uk9UTDMyKGsxLDE1KTsNCisgICAgazEgKj0gYzI7DQorICAgIA0KKyAgICBoMSBePSBrMTsNCisg
ICAgaDEgPSBST1RMMzIoaDEsMTMpOyANCisgICAgaDEgPSBoMSo1KzB4ZTY1NDZiNjQ7DQorICB9
DQorDQorICAvLy0tLS0tLS0tLS0NCisgIC8vIHRhaWwNCisNCisgIGNvbnN0IHVpbnQ4X3QgKiB0
YWlsID0gKGNvbnN0IHVpbnQ4X3QqKShkYXRhICsgbmJsb2Nrcyo0KTsNCisNCisgIHVpbnQzMl90
IGsxID0gMDsNCisNCisgIHN3aXRjaChsZW4gJiAzKQ0KKyAgew0KKyAgY2FzZSAzOiBrMSBePSB0
YWlsWzJdIDw8IDE2Ow0KKyAgY2FzZSAyOiBrMSBePSB0YWlsWzFdIDw8IDg7DQorICBjYXNlIDE6
IGsxIF49IHRhaWxbMF07DQorICAgICAgICAgIGsxICo9IGMxOyBrMSA9IFJPVEwzMihrMSwxNSk7
IGsxICo9IGMyOyBoMSBePSBrMTsNCisgIH07DQorDQorICAvLy0tLS0tLS0tLS0NCisgIC8vIGZp
bmFsaXphdGlvbg0KKw0KKyAgaDEgXj0gbGVuOw0KKw0KKyAgaDEgPSBmbWl4KGgxKTsNCisNCisg
ICoodWludDMyX3QqKW91dCA9IGgxOw0KK30gDQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
Kw0KK3ZvaWQgTXVybXVySGFzaDNfeDg2XzEyOCAoIGNvbnN0IHZvaWQgKiBrZXksIGNvbnN0IGlu
dCBsZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2VlZCwgdm9pZCAq
IG91dCApDQorew0KKyAgY29uc3QgdWludDhfdCAqIGRhdGEgPSAoY29uc3QgdWludDhfdCopa2V5
Ow0KKyAgY29uc3QgaW50IG5ibG9ja3MgPSBsZW4gLyAxNjsNCisNCisgIHVpbnQzMl90IGgxID0g
c2VlZDsNCisgIHVpbnQzMl90IGgyID0gc2VlZDsNCisgIHVpbnQzMl90IGgzID0gc2VlZDsNCisg
IHVpbnQzMl90IGg0ID0gc2VlZDsNCisNCisgIGNvbnN0IHVpbnQzMl90IGMxID0gMHgyMzliOTYx
YjsgDQorICBjb25zdCB1aW50MzJfdCBjMiA9IDB4YWIwZTk3ODk7DQorICBjb25zdCB1aW50MzJf
dCBjMyA9IDB4MzhiMzRhZTU7IA0KKyAgY29uc3QgdWludDMyX3QgYzQgPSAweGExZTM4YjkzOw0K
Kw0KKyAgLy8tLS0tLS0tLS0tDQorICAvLyBib2R5DQorDQorICBjb25zdCB1aW50MzJfdCAqIGJs
b2NrcyA9IChjb25zdCB1aW50MzJfdCAqKShkYXRhICsgbmJsb2NrcyoxNik7DQorDQorICBmb3Io
aW50IGkgPSAtbmJsb2NrczsgaTsgaSsrKQ0KKyAgew0KKyAgICB1aW50MzJfdCBrMSA9IGdldGJs
b2NrKGJsb2NrcyxpKjQrMCk7DQorICAgIHVpbnQzMl90IGsyID0gZ2V0YmxvY2soYmxvY2tzLGkq
NCsxKTsNCisgICAgdWludDMyX3QgazMgPSBnZXRibG9jayhibG9ja3MsaSo0KzIpOw0KKyAgICB1
aW50MzJfdCBrNCA9IGdldGJsb2NrKGJsb2NrcyxpKjQrMyk7DQorDQorICAgIGsxICo9IGMxOyBr
MSAgPSBST1RMMzIoazEsMTUpOyBrMSAqPSBjMjsgaDEgXj0gazE7DQorDQorICAgIGgxID0gUk9U
TDMyKGgxLDE5KTsgaDEgKz0gaDI7IGgxID0gaDEqNSsweDU2MWNjZDFiOw0KKw0KKyAgICBrMiAq
PSBjMjsgazIgID0gUk9UTDMyKGsyLDE2KTsgazIgKj0gYzM7IGgyIF49IGsyOw0KKw0KKyAgICBo
MiA9IFJPVEwzMihoMiwxNyk7IGgyICs9IGgzOyBoMiA9IGgyKjUrMHgwYmNhYTc0NzsNCisNCisg
ICAgazMgKj0gYzM7IGszICA9IFJPVEwzMihrMywxNyk7IGszICo9IGM0OyBoMyBePSBrMzsNCisN
CisgICAgaDMgPSBST1RMMzIoaDMsMTUpOyBoMyArPSBoNDsgaDMgPSBoMyo1KzB4OTZjZDFjMzU7
DQorDQorICAgIGs0ICo9IGM0OyBrNCAgPSBST1RMMzIoazQsMTgpOyBrNCAqPSBjMTsgaDQgXj0g
azQ7DQorDQorICAgIGg0ID0gUk9UTDMyKGg0LDEzKTsgaDQgKz0gaDE7IGg0ID0gaDQqNSsweDMy
YWMzYjE3Ow0KKyAgfQ0KKw0KKyAgLy8tLS0tLS0tLS0tDQorICAvLyB0YWlsDQorDQorICBjb25z
dCB1aW50OF90ICogdGFpbCA9IChjb25zdCB1aW50OF90KikoZGF0YSArIG5ibG9ja3MqMTYpOw0K
Kw0KKyAgdWludDMyX3QgazEgPSAwOw0KKyAgdWludDMyX3QgazIgPSAwOw0KKyAgdWludDMyX3Qg
azMgPSAwOw0KKyAgdWludDMyX3QgazQgPSAwOw0KKw0KKyAgc3dpdGNoKGxlbiAmIDE1KQ0KKyAg
ew0KKyAgY2FzZSAxNTogazQgXj0gdGFpbFsxNF0gPDwgMTY7DQorICBjYXNlIDE0OiBrNCBePSB0
YWlsWzEzXSA8PCA4Ow0KKyAgY2FzZSAxMzogazQgXj0gdGFpbFsxMl0gPDwgMDsNCisgICAgICAg
ICAgIGs0ICo9IGM0OyBrNCAgPSBST1RMMzIoazQsMTgpOyBrNCAqPSBjMTsgaDQgXj0gazQ7DQor
DQorICBjYXNlIDEyOiBrMyBePSB0YWlsWzExXSA8PCAyNDsNCisgIGNhc2UgMTE6IGszIF49IHRh
aWxbMTBdIDw8IDE2Ow0KKyAgY2FzZSAxMDogazMgXj0gdGFpbFsgOV0gPDwgODsNCisgIGNhc2Ug
IDk6IGszIF49IHRhaWxbIDhdIDw8IDA7DQorICAgICAgICAgICBrMyAqPSBjMzsgazMgID0gUk9U
TDMyKGszLDE3KTsgazMgKj0gYzQ7IGgzIF49IGszOw0KKw0KKyAgY2FzZSAgODogazIgXj0gdGFp
bFsgN10gPDwgMjQ7DQorICBjYXNlICA3OiBrMiBePSB0YWlsWyA2XSA8PCAxNjsNCisgIGNhc2Ug
IDY6IGsyIF49IHRhaWxbIDVdIDw8IDg7DQorICBjYXNlICA1OiBrMiBePSB0YWlsWyA0XSA8PCAw
Ow0KKyAgICAgICAgICAgazIgKj0gYzI7IGsyICA9IFJPVEwzMihrMiwxNik7IGsyICo9IGMzOyBo
MiBePSBrMjsNCisNCisgIGNhc2UgIDQ6IGsxIF49IHRhaWxbIDNdIDw8IDI0Ow0KKyAgY2FzZSAg
MzogazEgXj0gdGFpbFsgMl0gPDwgMTY7DQorICBjYXNlICAyOiBrMSBePSB0YWlsWyAxXSA8PCA4
Ow0KKyAgY2FzZSAgMTogazEgXj0gdGFpbFsgMF0gPDwgMDsNCisgICAgICAgICAgIGsxICo9IGMx
OyBrMSAgPSBST1RMMzIoazEsMTUpOyBrMSAqPSBjMjsgaDEgXj0gazE7DQorICB9Ow0KKw0KKyAg
Ly8tLS0tLS0tLS0tDQorICAvLyBmaW5hbGl6YXRpb24NCisNCisgIGgxIF49IGxlbjsgaDIgXj0g
bGVuOyBoMyBePSBsZW47IGg0IF49IGxlbjsNCisNCisgIGgxICs9IGgyOyBoMSArPSBoMzsgaDEg
Kz0gaDQ7DQorICBoMiArPSBoMTsgaDMgKz0gaDE7IGg0ICs9IGgxOw0KKw0KKyAgaDEgPSBmbWl4
KGgxKTsNCisgIGgyID0gZm1peChoMik7DQorICBoMyA9IGZtaXgoaDMpOw0KKyAgaDQgPSBmbWl4
KGg0KTsNCisNCisgIGgxICs9IGgyOyBoMSArPSBoMzsgaDEgKz0gaDQ7DQorICBoMiArPSBoMTsg
aDMgKz0gaDE7IGg0ICs9IGgxOw0KKw0KKyAgKCh1aW50MzJfdCopb3V0KVswXSA9IGgxOw0KKyAg
KCh1aW50MzJfdCopb3V0KVsxXSA9IGgyOw0KKyAgKCh1aW50MzJfdCopb3V0KVsyXSA9IGgzOw0K
KyAgKCh1aW50MzJfdCopb3V0KVszXSA9IGg0Ow0KK30NCisNCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQorDQordm9pZCBNdXJtdXJIYXNoM194NjRfMTI4ICggY29uc3Qgdm9pZCAqIGtleSwgY29u
c3QgaW50IGxlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCBz
ZWVkLCB2b2lkICogb3V0ICkNCit7DQorICBjb25zdCB1aW50OF90ICogZGF0YSA9IChjb25zdCB1
aW50OF90KilrZXk7DQorICBjb25zdCBpbnQgbmJsb2NrcyA9IGxlbiAvIDE2Ow0KKw0KKyAgdWlu
dDY0X3QgaDEgPSBzZWVkOw0KKyAgdWludDY0X3QgaDIgPSBzZWVkOw0KKw0KKyAgY29uc3QgdWlu
dDY0X3QgYzEgPSBCSUdfQ09OU1RBTlQoMHg4N2MzN2I5MTExNDI1M2Q1KTsNCisgIGNvbnN0IHVp
bnQ2NF90IGMyID0gQklHX0NPTlNUQU5UKDB4NGNmNWFkNDMyNzQ1OTM3Zik7DQorDQorICAvLy0t
LS0tLS0tLS0NCisgIC8vIGJvZHkNCisNCisgIGNvbnN0IHVpbnQ2NF90ICogYmxvY2tzID0gKGNv
bnN0IHVpbnQ2NF90ICopKGRhdGEpOw0KKw0KKyAgZm9yKGludCBpID0gMDsgaSA8IG5ibG9ja3M7
IGkrKykNCisgIHsNCisgICAgdWludDY0X3QgazEgPSBnZXRibG9jayhibG9ja3MsaSoyKzApOw0K
KyAgICB1aW50NjRfdCBrMiA9IGdldGJsb2NrKGJsb2NrcyxpKjIrMSk7DQorDQorICAgIGsxICo9
IGMxOyBrMSAgPSBST1RMNjQoazEsMzEpOyBrMSAqPSBjMjsgaDEgXj0gazE7DQorDQorICAgIGgx
ID0gUk9UTDY0KGgxLDI3KTsgaDEgKz0gaDI7IGgxID0gaDEqNSsweDUyZGNlNzI5Ow0KKw0KKyAg
ICBrMiAqPSBjMjsgazIgID0gUk9UTDY0KGsyLDMzKTsgazIgKj0gYzE7IGgyIF49IGsyOw0KKw0K
KyAgICBoMiA9IFJPVEw2NChoMiwzMSk7IGgyICs9IGgxOyBoMiA9IGgyKjUrMHgzODQ5NWFiNTsN
CisgIH0NCisNCisgIC8vLS0tLS0tLS0tLQ0KKyAgLy8gdGFpbA0KKw0KKyAgY29uc3QgdWludDhf
dCAqIHRhaWwgPSAoY29uc3QgdWludDhfdCopKGRhdGEgKyBuYmxvY2tzKjE2KTsNCisNCisgIHVp
bnQ2NF90IGsxID0gMDsNCisgIHVpbnQ2NF90IGsyID0gMDsNCisNCisgIHN3aXRjaChsZW4gJiAx
NSkNCisgIHsNCisgIGNhc2UgMTU6IGsyIF49IHVpbnQ2NF90KHRhaWxbMTRdKSA8PCA0ODsNCisg
IGNhc2UgMTQ6IGsyIF49IHVpbnQ2NF90KHRhaWxbMTNdKSA8PCA0MDsNCisgIGNhc2UgMTM6IGsy
IF49IHVpbnQ2NF90KHRhaWxbMTJdKSA8PCAzMjsNCisgIGNhc2UgMTI6IGsyIF49IHVpbnQ2NF90
KHRhaWxbMTFdKSA8PCAyNDsNCisgIGNhc2UgMTE6IGsyIF49IHVpbnQ2NF90KHRhaWxbMTBdKSA8
PCAxNjsNCisgIGNhc2UgMTA6IGsyIF49IHVpbnQ2NF90KHRhaWxbIDldKSA8PCA4Ow0KKyAgY2Fz
ZSAgOTogazIgXj0gdWludDY0X3QodGFpbFsgOF0pIDw8IDA7DQorICAgICAgICAgICBrMiAqPSBj
MjsgazIgID0gUk9UTDY0KGsyLDMzKTsgazIgKj0gYzE7IGgyIF49IGsyOw0KKw0KKyAgY2FzZSAg
ODogazEgXj0gdWludDY0X3QodGFpbFsgN10pIDw8IDU2Ow0KKyAgY2FzZSAgNzogazEgXj0gdWlu
dDY0X3QodGFpbFsgNl0pIDw8IDQ4Ow0KKyAgY2FzZSAgNjogazEgXj0gdWludDY0X3QodGFpbFsg
NV0pIDw8IDQwOw0KKyAgY2FzZSAgNTogazEgXj0gdWludDY0X3QodGFpbFsgNF0pIDw8IDMyOw0K
KyAgY2FzZSAgNDogazEgXj0gdWludDY0X3QodGFpbFsgM10pIDw8IDI0Ow0KKyAgY2FzZSAgMzog
azEgXj0gdWludDY0X3QodGFpbFsgMl0pIDw8IDE2Ow0KKyAgY2FzZSAgMjogazEgXj0gdWludDY0
X3QodGFpbFsgMV0pIDw8IDg7DQorICBjYXNlICAxOiBrMSBePSB1aW50NjRfdCh0YWlsWyAwXSkg
PDwgMDsNCisgICAgICAgICAgIGsxICo9IGMxOyBrMSAgPSBST1RMNjQoazEsMzEpOyBrMSAqPSBj
MjsgaDEgXj0gazE7DQorICB9Ow0KKw0KKyAgLy8tLS0tLS0tLS0tDQorICAvLyBmaW5hbGl6YXRp
b24NCisNCisgIGgxIF49IGxlbjsgaDIgXj0gbGVuOw0KKw0KKyAgaDEgKz0gaDI7DQorICBoMiAr
PSBoMTsNCisNCisgIGgxID0gZm1peChoMSk7DQorICBoMiA9IGZtaXgoaDIpOw0KKw0KKyAgaDEg
Kz0gaDI7DQorICBoMiArPSBoMTsNCisNCisgICgodWludDY0X3QqKW91dClbMF0gPSBoMTsNCisg
ICgodWludDY0X3QqKW91dClbMV0gPSBoMjsNCit9DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJtdXJo
YXNoL011cm11ckhhc2gzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11
ckhhc2gzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCisvLyBNdXJtdXJIYXNoMyB3YXMgd3JpdHRlbiBieSBBdXN0aW4gQXBwbGVieSwgYW5k
IGlzIHBsYWNlZCBpbiB0aGUgcHVibGljDQorLy8gZG9tYWluLiBUaGUgYXV0aG9yIGhlcmVieSBk
aXNjbGFpbXMgY29weXJpZ2h0IHRvIHRoaXMgc291cmNlIGNvZGUuDQorDQorI2lmbmRlZiBfTVVS
TVVSSEFTSDNfSF8NCisjZGVmaW5lIF9NVVJNVVJIQVNIM19IXw0KKw0KKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCisvLyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG1hY3Jvcw0KKw0K
Ky8vIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvDQorDQorI2lmIGRlZmluZWQoX01TQ19WRVIpDQor
DQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7DQordHlwZWRlZiB1bnNpZ25lZCBsb25n
IHVpbnQzMl90Ow0KK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50NjRfdDsNCisNCisvLyBP
dGhlciBjb21waWxlcnMNCisNCisjZWxzZQkvLyBkZWZpbmVkKF9NU0NfVkVSKQ0KKw0KKyNpbmNs
dWRlIDxzdGRpbnQuaD4NCisNCisjZW5kaWYgLy8gIWRlZmluZWQoX01TQ19WRVIpDQorDQorLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK3ZvaWQgTXVybXVySGFzaDNfeDg2XzMyICAoIGNvbnN0
IHZvaWQgKiBrZXksIGludCBsZW4sIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQgKTsNCisNCit2
b2lkIE11cm11ckhhc2gzX3g4Nl8xMjggKCBjb25zdCB2b2lkICoga2V5LCBpbnQgbGVuLCB1aW50
MzJfdCBzZWVkLCB2b2lkICogb3V0ICk7DQorDQordm9pZCBNdXJtdXJIYXNoM194NjRfMTI4ICgg
Y29uc3Qgdm9pZCAqIGtleSwgaW50IGxlbiwgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91dCApOw0K
Kw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisjZW5kaWYgLy8gX01VUk1VUkhBU0gzX0hf
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUz
MDA4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTMtMDctMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgQU5HTEUgdG8gbGF0ZXN0IGdpdCBjb21taXQgKDA0
NzM3M2FhM2ViNDA4YmU2MmJlNTJhZGU4NDBmYTVmMTFlNzIzMzcpLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NTUwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogUmVuYW1l
ZCBEZXRlY3RSZWN1cnNpb24gdG8gRGV0ZWN0Q2FsbERlcHRoLgorCiAyMDEzLTA3LTIyICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEbyBub3QgYWxs
b2NhdGUgMiBBdG9taWNTdHJpbmcganVzdCB0byBkbyBhIGNvbXBhcmlzb24gaW4gSFRNTEFuY2hv
ckVsZW1lbnQ6OnNldFJlbCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTUy
OTc5KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTI4NzksOCArMjg3OSw4IEBAIGlmIChXVEZfVVNFXzNEX0dSQVBISUNTKQogICAgICAgICAke1RI
SVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBo
QnVpbGRlci5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVy
L2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaE91dHB1dC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZ
X0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaFRyYXZlcnNl
LmNwcAorICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0
Q2FsbERlcHRoLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGls
ZXIvRGV0ZWN0RGlzY29udGludWl0eS5jcHAKLSAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5H
TEUvc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZ
X0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCiAgICAgICAgICR7VEhJ
UkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAKICAgICAgICAgJHtU
SElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207343</attachid>
            <date>2013-07-23 13:14:21 -0700</date>
            <delta_ts>2013-07-23 15:12:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118550-20130723131421.patch</filename>
            <type>text/plain</type>
            <size>2565685</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzAxMikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE5NTYgQEAKKzIwMTMtMDctMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgQU5HTEUgdG8gbGF0ZXN0IGdpdCBjb21taXQgKDA0
NzM3M2FhM2ViNDA4YmU2MmJlNTJhZGU4NDBmYTVmMTFlNzIzMzcpLgorICAgICAgICBBZGRlZCBt
aXNzaW5nIEFOR0xFIGZpbGVzIGV4Y2VwdCB1bnVzZWQgdGVzdHMsIGV4dGVuc2lvbnMsIHNhbXBs
ZXMsIGJ1aWxkLCBhbmQgLmdpdCBkaXJlY3Rvcmllcy4KKyAgICAgICAgUmFuIEJpc29uIGFmdGVy
IG1ha2luZyBzb21lIGNoYW5nZXMgdG8gZml4IGNvbXBpbGUgZXJyb3JzIChzZWUgYmVsb3cpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg1NTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFOR0xF
LnBsaXN0OiBVcGRhdGVkIGZyb20gc3ZuIHRvIGdpdC4KKyAgICAgICAgKiBBTkdMRS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBSZW5hbWVkIERldGVjdFJlY3Vyc2lvbiB0byBEZXRlY3RDYWxs
RGVwdGguCisgICAgICAgICogQVVUSE9SUzogQWRkZWQuCisgICAgICAgICogQ09OVFJJQlVUT1JT
OiBBZGRlZC4KKyAgICAgICAgKiBERVBTOiBBZGRlZC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bTogUmVuYW1lZCBEZXRlY3RSZWN1cnNpb24gdG8gRGV0ZWN0Q2FsbERlcHRoIGFuZCBhZGRlZCBV
bmlmb3JtLmNwcC4KKyAgICAgICAgKiBMSUNFTlNFOiBBZGRlZC4KKyAgICAgICAgKiBSRUFETUUu
Y2hyb21pdW06IEFkZGVkLgorICAgICAgICAqIFRhcmdldC5wcmk6IFJlbmFtZWQgRGV0ZWN0UmVj
dXJzaW9uIHRvIERldGVjdENhbGxEZXB0aC4KKyAgICAgICAgKiBjb2RlcmV2aWV3LnNldHRpbmdz
OiBBZGRlZC4KKyAgICAgICAgKiBpbmNsdWRlL0VHTC9lZ2xleHQuaDoKKyAgICAgICAgKiBpbmNs
dWRlL0dMRVMyL2dsMmV4dC5oOgorICAgICAgICAqIGluY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5n
Lmg6CisgICAgICAgICogc3JjL0FOR0xFLnNsbjogQWRkZWQuCisgICAgICAgICogc3JjL2J1aWxk
X2FuZ2xlLmd5cDogQWRkZWQuCisgICAgICAgICogc3JjL2J1aWxkX2FuZ2xlLmd5cGk6IEFkZGVk
LgorICAgICAgICAqIHNyYy9jb21tb24vUmVmQ291bnRPYmplY3QuY3BwOgorICAgICAgICAqIHNy
Yy9jb21tb24vYW5nbGV1dGlscy5oOgorICAgICAgICAoQXJyYXlTaXplKToKKyAgICAgICAgKFNh
ZmVSZWxlYXNlKToKKyAgICAgICAgKiBzcmMvY29tbW9uL2RlYnVnLmNwcDoKKyAgICAgICAgKiBz
cmMvY29tbW9uL2RlYnVnLmg6CisgICAgICAgICogc3JjL2NvbW1vbi9zeXN0ZW0uaDoKKyAgICAg
ICAgKiBzcmMvY29tbW9uL3ZlcnNpb24uaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvNjRiaXQt
bGV4ZXItc2FmZXR5LnBhdGNoOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQmFzZVR5
cGVzLmg6CisgICAgICAgIChnZXRRdWFsaWZpZXJTdHJpbmcpOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9Db2RlR2VuSExTTC5jcHA6CisgICAgICAgIChDb25zdHJ1Y3RDb21waWxlcik6CisgICAg
ICAgICogc3JjL2NvbXBpbGVyL0NvbW1vbi5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9Db21w
aWxlci5jcHA6CisgICAgICAgIChUQ29tcGlsZXI6OlRDb21waWxlcik6CisgICAgICAgIChUQ29t
cGlsZXI6OkluaXQpOgorICAgICAgICAoVENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKFRD
b21waWxlcjo6SW5pdEJ1aWx0SW5TeW1ib2xUYWJsZSk6CisgICAgICAgIChUQ29tcGlsZXI6OmRl
dGVjdENhbGxEZXB0aCk6CisgICAgICAgIChUQ29tcGlsZXI6OmxpbWl0RXhwcmVzc2lvbkNvbXBs
ZXhpdHkpOgorICAgICAgICAoVENvbXBpbGVyOjpnZXRSZXNvdXJjZXMpOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9Db25zdGFudFVuaW9uLmg6CisgICAgICAgIChDb25zdGFudFVuaW9uOjpDb25z
dGFudFVuaW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcDog
QWRkZWQuCisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6RnVuY3Rpb25O
b2RlKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpnZXROYW1lKToK
KyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjphZGRDYWxsZWUpOgorICAg
ICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpGdW5jdGlvbk5vZGU6OmRldGVjdENhbGxEZXB0aCk6Cisg
ICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6cmVzZXQpOgorICAgICAgICAo
RGV0ZWN0Q2FsbERlcHRoOjpEZXRlY3RDYWxsRGVwdGgpOgorICAgICAgICAoRGV0ZWN0Q2FsbERl
cHRoOjp+RGV0ZWN0Q2FsbERlcHRoKToKKyAgICAgICAgKERldGVjdENhbGxEZXB0aDo6dmlzaXRB
Z2dyZWdhdGUpOgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpjaGVja0V4Y2VlZHNNYXhEZXB0
aCk6CisgICAgICAgIChEZXRlY3RDYWxsRGVwdGg6OnJlc2V0RnVuY3Rpb25Ob2Rlcyk6CisgICAg
ICAgIChEZXRlY3RDYWxsRGVwdGg6OmRldGVjdENhbGxEZXB0aEZvckZ1bmN0aW9uKToKKyAgICAg
ICAgKERldGVjdENhbGxEZXB0aDo6ZGV0ZWN0Q2FsbERlcHRoKToKKyAgICAgICAgKERldGVjdENh
bGxEZXB0aDo6ZmluZEZ1bmN0aW9uQnlOYW1lKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvRGV0
ZWN0Q2FsbERlcHRoLmg6IEFkZGVkLgorICAgICAgICAoRGV0ZWN0Q2FsbERlcHRoOjpnZXRJbmZv
U2luayk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHNyYy9jb21waWxlci9EaWFnbm9zdGljcy5jcHA6CisgICAgICAgIChURGlhZ25v
c3RpY3M6OndyaXRlSW5mbyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwu
Y3BwOgorICAgICAgICAoRm9yTG9vcFVucm9sbDo6ZXZhbHVhdGVJbnRDb25zdGFudCk6CisgICAg
ICAgICogc3JjL2NvbXBpbGVyL0luZm9TaW5rLmNwcDoKKyAgICAgICAgKFRJbmZvU2lua0Jhc2U6
OnByZWZpeCk6CisgICAgICAgIChUSW5mb1NpbmtCYXNlOjpsb2NhdGlvbik6CisgICAgICAgIChU
SW5mb1NpbmtCYXNlOjptZXNzYWdlKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW5mb1Npbmsu
aDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5jcHA6CisgICAgICAgIChJbnNl
cnRCdWlsdEluRnVuY3Rpb25zKToKKyAgICAgICAgKElkZW50aWZ5QnVpbHRJbnMpOgorICAgICAg
ICAoSW5pdEV4dGVuc2lvbkJlaGF2aW9yKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvSW5pdGlh
bGl6ZS5oOgorICAgICAgICAqIHNyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwOgorICAgICAg
ICAoVEludGVybWVkaWF0ZTo6YWRkU3ltYm9sKToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFk
ZEJpbmFyeU1hdGgpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKToKKyAgICAg
ICAgKFRJbnRlcm1lZGlhdGU6OmFkZEluZGV4KToKKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFk
ZFVuYXJ5TWF0aCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjpzZXRBZ2dyZWdhdGVPcGVyYXRv
cik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRDb252ZXJzaW9uKToKKyAgICAgICAgKFRJ
bnRlcm1lZGlhdGU6Omdyb3dBZ2dyZWdhdGUpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6bWFr
ZUFnZ3JlZ2F0ZSk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24pOgorICAg
ICAgICAoVEludGVybWVkaWF0ZTo6YWRkQ29tbWEpOgorICAgICAgICAoVEludGVybWVkaWF0ZTo6
YWRkQ29uc3RhbnRVbmlvbik6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKToK
KyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OmFkZExvb3ApOgorICAgICAgICAoVEludGVybWVkaWF0
ZTo6YWRkQnJhbmNoKToKKyAgICAgICAgKFRJbnRlcm1VbmFyeTo6cHJvbW90ZSk6CisgICAgICAg
IChUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKToKKyAgICAgICAgKENvbXBhcmVTdHJ1Y3QpOgorICAg
ICAgICAoQ29tcGFyZVN0cnVjdHVyZSk6CisgICAgICAgIChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6
Zm9sZCk6IEFkZGVkIGltcGxpZWQgc3RhdGljX2Nhc3RzIHRvIGZpeCBjb21waWxpbmcgZXJyb3Jz
IG9uIE1hYy4KKyAgICAgICAgKFRJbnRlcm1lZGlhdGU6OnByb21vdGVDb25zdGFudFVuaW9uKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHA6CisgICAgICAgIChUT3V0cHV0
R0xTTDo6dmlzaXRTeW1ib2wpOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRHTFNMLmg6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcDoKKyAgICAgICAgKFRP
dXRwdXRHTFNMQmFzZTo6d3JpdGVWYXJpYWJsZVR5cGUpOgorICAgICAgICAoVE91dHB1dEdMU0xC
YXNlOjp3cml0ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAoVE91dHB1dEdMU0xCYXNlOjp2aXNp
dEJpbmFyeSk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QWdncmVnYXRlKToKKyAg
ICAgICAgKFRPdXRwdXRHTFNMQmFzZTo6Z2V0VHlwZU5hbWUpOgorICAgICAgICAoVE91dHB1dEdM
U0xCYXNlOjpzdHJ1Y3REZWNsYXJlZCk6CisgICAgICAgIChUT3V0cHV0R0xTTEJhc2U6OmRlY2xh
cmVTdHJ1Y3QpOgorICAgICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5oOgorICAg
ICAgICAqIHNyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcDoKKyAgICAgICAgKHNoOjpPdXRwdXRI
TFNMOjpPdXRwdXRITFNMKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjpnZXRVbmlmb3Jtcyk6
CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6aGVhZGVyKToKKyAgICAgICAgKHNoOjpPdXRwdXRI
TFNMOjp2aXNpdFN5bWJvbCk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dmlzaXRCaW5hcnkp
OgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKHNo
OjpPdXRwdXRITFNMOjp2aXNpdFNlbGVjdGlvbik6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6
dmlzaXRMb29wKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29w
KToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjphcmd1bWVudFN0cmluZyk6CisgICAgICAgIChz
aDo6T3V0cHV0SExTTDo6dHlwZVN0cmluZyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6dGV4
dHVyZVN0cmluZyk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6aW5pdGlhbGl6ZXIpOgorICAg
ICAgICAoc2g6Ok91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKToKKyAgICAgICAgKHNoOjpPdXRw
dXRITFNMOjp3cml0ZUNvbnN0YW50VW5pb24pOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmRl
Y29yYXRlVW5pZm9ybSk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6ZGVjb3JhdGVGaWVsZCk6
CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6cmVnaXN0ZXJTdHJpbmcpOgorICAgICAgICAoc2g6
Ok91dHB1dEhMU0w6OnNhbXBsZXJSZWdpc3Rlcik6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6
dW5pZm9ybVJlZ2lzdGVyKToKKyAgICAgICAgKHNoOjpPdXRwdXRITFNMOjpkZWNsYXJlVW5pZm9y
bSk6CisgICAgICAgIChzaDo6T3V0cHV0SExTTDo6Z2xWYXJpYWJsZVR5cGUpOgorICAgICAgICAo
c2g6Ok91dHB1dEhMU0w6OmdsVmFyaWFibGVQcmVjaXNpb24pOgorICAgICAgICAqIHNyYy9jb21w
aWxlci9PdXRwdXRITFNMLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNw
cDoKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKToKKyAgICAgICAg
KFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0cml4RmllbGRzKToKKyAgICAgICAgKFRQYXJzZUNvbnRl
eHQ6OmVycm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Ondhcm5pbmcpOgorICAgICAgICAo
VFBhcnNlQ29udGV4dDo6YXNzaWduRXJyb3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6dW5h
cnlPcEVycm9yKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmJpbmFyeU9wRXJyb3IpOgorICAg
ICAgICAoVFBhcnNlQ29udGV4dDo6cHJlY2lzaW9uRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFy
c2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Omds
b2JhbEVycm9yQ2hlY2spOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNo
ZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayk6Cisg
ICAgICAgIChUUGFyc2VDb250ZXh0Ojp2b2lkRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VD
b250ZXh0Ojpib29sRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzYW1wbGVy
RXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpzdHJ1Y3RRdWFsaWZpZXJFcnJv
ckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJFcnJvckNo
ZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxlcik6CisgICAgICAg
IChUUGFyc2VDb250ZXh0OjphcnJheVNpemVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNv
bnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0
OjphcnJheVR5cGVFcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmFycmF5RXJy
b3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpub25Jbml0Q29uc3RFcnJvckNoZWNr
KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNrKToKKyAgICAgICAg
KFRQYXJzZUNvbnRleHQ6OnBhcmFtRXJyb3JDaGVjayk6CisgICAgICAgIChUUGFyc2VDb250ZXh0
OjpleHRlbnNpb25FcnJvckNoZWNrKToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmlzRXh0ZW5z
aW9uRW5hYmxlZCk6CisgICAgICAgIFJlcGxhY2VkIGF1dG8gd2l0aCBzdGQ6Om1hcDxzdGQ6OnN0
cmluZywgVEJlaGF2aW9yPjo6Y29uc3RfaXRlcmF0b3IgdG8gZml4IFF0IGFuZCBFRkwgY29tcGls
aW5nIGVycm9ycy4KKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbik6CisgICAg
ICAgIChUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIpOgorICAgICAgICAoVFBhcnNl
Q29udGV4dDo6YWRkQ29uc3RydWN0b3IpOgorICAgICAgICAoVFBhcnNlQ29udGV4dDo6Y29uc3Ry
dWN0QnVpbHRJbik6CisgICAgICAgIChUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QpOgor
ICAgICAgICAoVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RWZWN0b3JOb2RlKToKKyAgICAgICAgKFRQ
YXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0
OjphZGRDb25zdEFycmF5Tm9kZSk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0
cnVjdCk6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9uKToK
KyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKToKKyAgICAg
ICAgKFRQYXJzZUNvbnRleHQ6OmFkZEluZGV4RXhwcmVzc2lvbik6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL1BhcnNlSGVscGVyLmg6CisgICAgICAgIChUUGFyc2VDb250ZXh0OjpUUGFyc2VDb250
ZXh0KToKKyAgICAgICAgKFRQYXJzZUNvbnRleHQ6OnByYWdtYSk6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL1Bvb2xBbGxvYy5jcHA6CisgICAgICAgIChUUG9vbEFsbG9jYXRvcjo6YWxsb2NhdGUp
OgorICAgICAgICAqIHNyYy9jb21waWxlci9TaEhhbmRsZS5oOgorICAgICAgICAoVFNoSGFuZGxl
QmFzZTo6Z2V0QXNUcmFuc2xhdG9ySExTTCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1NoYWRl
ckxhbmcuY3BwOgorICAgICAgICAoU2hJbml0QnVpbHRJblJlc291cmNlcyk6CisgICAgICAgIChT
aEdldEluZm9Qb2ludGVyKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3Bw
OgorICAgICAgICAoVFR5cGU6OlRUeXBlKToKKyAgICAgICAgKFRUeXBlOjpidWlsZE1hbmdsZWRO
YW1lKToKKyAgICAgICAgKFRUeXBlOjpnZXRPYmplY3RTaXplKToKKyAgICAgICAgKFRTdHJ1Y3R1
cmU6OmNvbnRhaW5zQXJyYXlzKToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6OmJ1aWxkTWFuZ2xlZE5h
bWUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6Y2FsY3VsYXRlT2JqZWN0U2l6ZSk6CisgICAgICAg
IChUU3RydWN0dXJlOjpjYWxjdWxhdGVEZWVwZXN0TmVzdGluZyk6CisgICAgICAgIChUU3ltYm9s
VGFibGVMZXZlbDo6cmVsYXRlVG9FeHRlbnNpb24pOgorICAgICAgICAqIHNyYy9jb21waWxlci9T
eW1ib2xUYWJsZS5oOgorICAgICAgICAoVFN5bWJvbDo6cmVsYXRlVG9FeHRlbnNpb24pOgorICAg
ICAgICAoVFN5bWJvbDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFRWYXJpYWJsZTo6VFZhcmlh
YmxlKToKKyAgICAgICAgKFRWYXJpYWJsZTo6c2V0UXVhbGlmaWVyKToKKyAgICAgICAgKFRWYXJp
YWJsZTo6c2hhcmVDb25zdFBvaW50ZXIpOgorICAgICAgICAoVFN5bWJvbFRhYmxlTGV2ZWw6Omlu
c2VydCk6CisgICAgICAgIChUU3ltYm9sVGFibGU6Omluc2VydENvbnN0SW50KToKKyAgICAgICAg
KFRTeW1ib2xUYWJsZTo6aW5zZXJ0QnVpbHRJbik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1Ry
YW5zbGF0b3JITFNMLmNwcDoKKyAgICAgICAgKFRyYW5zbGF0b3JITFNMOjpUcmFuc2xhdG9ySExT
TCk6CisgICAgICAgIChUcmFuc2xhdG9ySExTTDo6dHJhbnNsYXRlKToKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvVHJhbnNsYXRvckhMU0wuaDoKKyAgICAgICAgKFRyYW5zbGF0b3JITFNMOjpnZXRB
c1RyYW5zbGF0b3JITFNMKToKKyAgICAgICAgKFRyYW5zbGF0b3JITFNMOjpnZXRVbmlmb3Jtcyk6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL1R5cGVzLmg6IFJlbW92ZWQgZW51bSBiaXQgZmllbGRz
IHRvIGZpeCBnY2MgY29tcGlsZXIgZXJyb3JzLgorICAgICAgICAoVEZpZWxkOjpURmllbGQpOgor
ICAgICAgICAoVEZpZWxkOjp0eXBlKToKKyAgICAgICAgKFRGaWVsZDo6bmFtZSk6CisgICAgICAg
IChOZXdQb29sVEZpZWxkTGlzdCk6CisgICAgICAgIChUU3RydWN0dXJlOjpUU3RydWN0dXJlKToK
KyAgICAgICAgKFRTdHJ1Y3R1cmU6Om5hbWUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6ZmllbGRz
KToKKyAgICAgICAgKFRTdHJ1Y3R1cmU6Om1hbmdsZWROYW1lKToKKyAgICAgICAgKFRTdHJ1Y3R1
cmU6Om9iamVjdFNpemUpOgorICAgICAgICAoVFN0cnVjdHVyZTo6ZGVlcGVzdE5lc3RpbmcpOgor
ICAgICAgICAoVFR5cGU6OlRUeXBlKToKKyAgICAgICAgKFRUeXBlOjplbGVtZW50UmVnaXN0ZXJD
b3VudCk6CisgICAgICAgIChUVHlwZTo6dG90YWxSZWdpc3RlckNvdW50KToKKyAgICAgICAgKFRU
eXBlOjpjbGVhckFycmF5bmVzcyk6CisgICAgICAgIChUVHlwZTo6Z2V0U3RydWN0KToKKyAgICAg
ICAgKFRUeXBlOjpzZXRTdHJ1Y3QpOgorICAgICAgICAoVFR5cGU6OmdldE1hbmdsZWROYW1lKToK
KyAgICAgICAgKFRUeXBlOjpnZXREZWVwZXN0U3RydWN0TmVzdGluZyk6CisgICAgICAgIChUVHlw
ZTo6aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKToKKyAgICAgICAgKFRQdWJsaWNUeXBlOjpz
ZXRCYXNpYyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL1VuaWZvcm0uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKHNoOjpVbmlmb3JtOjpVbmlmb3JtKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVW5p
Zm9ybS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcDoK
KyAgICAgICAgKGdldFVzZXJEZWZpbmVkVmFyaWFibGVJbmZvKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvZ2xzbGFuZy5sOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nLnk6IE1vdmVk
IFlZTFRZUEUgZGVmaW5pdGlvbiBpbnRvICV1bmlvbiB0byB3b3JrIHdpdGggQmlzb24gMi4zLgor
ICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHA6CisgICAgICAgICh5eV9nZXRf
cHJldmlvdXNfc3RhdGUpOgorICAgICAgICAoeXlfdHJ5X05VTF90cmFucyk6CisgICAgICAgICh5
eWdldF9sbG9jKToKKyAgICAgICAgKHl5c2V0X2xsb2MpOgorICAgICAgICAoc3RyaW5nX2lucHV0
KToKKyAgICAgICAgKGNoZWNrX3R5cGUpOgorICAgICAgICAocmVzZXJ2ZWRfd29yZCk6CisgICAg
ICAgIChnbHNsYW5nX3NjYW4pOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNsYW5nX3RhYi5j
cHA6CisgICAgICAgICh5eWVycm9yKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZ190
YWIuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvaW50ZXJtT3V0LmNwcDoKKyAgICAgICAgKFRP
dXRwdXRUcmF2ZXJzZXI6OnZpc2l0VW5hcnkpOgorICAgICAgICAoVE91dHB1dFRyYXZlcnNlcjo6
dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRDb25zdGFu
dFVuaW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmg6CisgICAgICAg
IChUSW50ZXJtTm9kZTo6VEludGVybU5vZGUpOgorICAgICAgICAoVEludGVybU5vZGU6On5USW50
ZXJtTm9kZSk6CisgICAgICAgIChUSW50ZXJtTm9kZTo6Z2V0TGluZSk6CisgICAgICAgIChUSW50
ZXJtTm9kZTo6c2V0TGluZSk6CisgICAgICAgIChUSW50ZXJtTm9kZTo6Z2V0QXNMb29wTm9kZSk6
CisgICAgICAgIChUSW50ZXJtVHlwZWQ6OnRvdGFsUmVnaXN0ZXJDb3VudCk6CisgICAgICAgIChU
SW50ZXJtVHlwZWQ6OmVsZW1lbnRSZWdpc3RlckNvdW50KToKKyAgICAgICAgKFRJbnRlcm1UeXBl
ZDo6Z2V0QXJyYXlTaXplKToKKyAgICAgICAgKFRJbnRlcm1Db25zdGFudFVuaW9uOjpnZXRJQ29u
c3QpOgorICAgICAgICAoVEludGVybUNvbnN0YW50VW5pb246OmdldEZDb25zdCk6CisgICAgICAg
IChUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Z2V0QkNvbnN0KToKKyAgICAgICAgKFRJbnRlcm1BZ2dy
ZWdhdGU6OlRJbnRlcm1BZ2dyZWdhdGUpOgorICAgICAgICAoVEludGVybVRyYXZlcnNlcjo6VElu
dGVybVRyYXZlcnNlcik6CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjpnZXRNYXhEZXB0aCk6
CisgICAgICAgIChUSW50ZXJtVHJhdmVyc2VyOjppbmNyZW1lbnREZXB0aCk6CisgICAgICAgICog
c3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L3BhcnNlQ29uc3QuY3BwOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdFN5bWJvbCk6
CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KToKKyAgICAgICAgKFRDb25z
dFRyYXZlcnNlcjo6dmlzaXRVbmFyeSk6CisgICAgICAgIChUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0
QWdncmVnYXRlKToKKyAgICAgICAgKFRDb25zdFRyYXZlcnNlcjo6dmlzaXRTZWxlY3Rpb24pOgor
ICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24pOgorICAgICAgICAo
VENvbnN0VHJhdmVyc2VyOjp2aXNpdExvb3ApOgorICAgICAgICAoVENvbnN0VHJhdmVyc2VyOjp2
aXNpdEJyYW5jaCk6CisgICAgICAgIChUSW50ZXJtZWRpYXRlOjpwYXJzZUNvbnN0VHJlZSk6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci82NGJpdC10b2tlbml6ZXItc2FmZXR5
LnBhdGNoOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2Vu
aXplci5jcHA6CisgICAgICAgICh5eV9nZXRfcHJldmlvdXNfc3RhdGUpOgorICAgICAgICAoeXlf
dHJ5X05VTF90cmFucyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tl
bml6ZXIubDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3ByZXByb2Nlc3Nv
ci52Y3hwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3By
ZXByb2Nlc3Nvci52Y3hwcm9qLmZpbHRlcnM6IEFkZGVkLgorICAgICAgICAqIHNyYy9jb21waWxl
ci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwOgorICAgICAgICAoUmVzdHJp
Y3RWZXJ0ZXhTaGFkZXJUaW1pbmc6OnZpc2l0U3ltYm9sKToKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvdHJhbnNsYXRvcl9jb21tb24udmN4cHJvajogQWRkZWQuCisgICAgICAgICogc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3JfY29tbW9uLnZjeHByb2ouZmlsdGVyczogQWRkZWQuCisgICAgICAgICog
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3JfaGxzbC52Y3hwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvdHJhbnNsYXRvcl9obHNsLnZjeHByb2ouZmlsdGVyczogQWRkZWQuCisgICAg
ICAgICogc3JjL2xpYkVHTC9Db25maWcuY3BwOiBBZGRlZC4KKyAgICAgICAgKGVnbDo6Q29uZmln
OjpDb25maWcpOgorICAgICAgICAoZWdsOjpDb25maWc6OmdldEhhbmRsZSk6CisgICAgICAgIChl
Z2w6OlNvcnRDb25maWc6OlNvcnRDb25maWcpOgorICAgICAgICAoZWdsOjpTb3J0Q29uZmlnOjpz
Y2FuRm9yV2FudGVkQ29tcG9uZW50cyk6CisgICAgICAgIChlZ2w6OlNvcnRDb25maWc6OndhbnRl
ZENvbXBvbmVudHNTaXplKToKKyAgICAgICAgKGVnbDo6U29ydENvbmZpZzo6b3BlcmF0b3IoKSk6
CisgICAgICAgIChlZ2w6OkNvbmZpZ1NldDo6Q29uZmlnU2V0KToKKyAgICAgICAgKGVnbDo6Q29u
ZmlnU2V0OjphZGQpOgorICAgICAgICAoZWdsOjpDb25maWdTZXQ6OnNpemUpOgorICAgICAgICAo
ZWdsOjpDb25maWdTZXQ6OmdldENvbmZpZ3MpOgorICAgICAgICAoZWdsOjpDb25maWdTZXQ6Omdl
dCk6CisgICAgICAgICogc3JjL2xpYkVHTC9Db25maWcuaDogQWRkZWQuCisgICAgICAgICogc3Jj
L2xpYkVHTC9EaXNwbGF5LmNwcDogQWRkZWQuCisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmdldERp
c3BsYXkpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpEaXNwbGF5KToKKyAgICAgICAgKGVnbDo6
RGlzcGxheTo6fkRpc3BsYXkpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojppbml0aWFsaXplKToK
KyAgICAgICAgKGVnbDo6RGlzcGxheTo6dGVybWluYXRlKToKKyAgICAgICAgKGVnbDo6RGlzcGxh
eTo6Z2V0Q29uZmlncyk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmdldENvbmZpZ0F0dHJpYik6
CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmNyZWF0ZVdpbmRvd1N1cmZhY2UpOgorICAgICAgICAo
ZWdsOjpEaXNwbGF5OjpjcmVhdGVPZmZzY3JlZW5TdXJmYWNlKToKKyAgICAgICAgKGVnbDo6RGlz
cGxheTo6Y3JlYXRlQ29udGV4dCk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OnJlc3RvcmVMb3N0
RGV2aWNlKToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6ZGVzdHJveVN1cmZhY2UpOgorICAgICAg
ICAoZWdsOjpEaXNwbGF5OjpkZXN0cm95Q29udGV4dCk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6
Om5vdGlmeURldmljZUxvc3QpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpyZWNyZWF0ZVN3YXBD
aGFpbnMpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojppc0luaXRpYWxpemVkKToKKyAgICAgICAg
KGVnbDo6RGlzcGxheTo6aXNWYWxpZENvbmZpZyk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6Omlz
VmFsaWRDb250ZXh0KToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6aXNWYWxpZFN1cmZhY2UpOgor
ICAgICAgICAoZWdsOjpEaXNwbGF5OjpoYXNFeGlzdGluZ1dpbmRvd1N1cmZhY2UpOgorICAgICAg
ICAoZWdsOjpEaXNwbGF5Ojppbml0RXh0ZW5zaW9uU3RyaW5nKToKKyAgICAgICAgKGVnbDo6RGlz
cGxheTo6Z2V0RXh0ZW5zaW9uU3RyaW5nKToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6aW5pdFZl
bmRvclN0cmluZyk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmdldFZlbmRvclN0cmluZyk6Cisg
ICAgICAgICogc3JjL2xpYkVHTC9EaXNwbGF5Lmg6IEFkZGVkLgorICAgICAgICAoZWdsOjpEaXNw
bGF5OjpnZXRSZW5kZXJlcik6CisgICAgICAgICogc3JjL2xpYkVHTC9TdXJmYWNlLmNwcDogQWRk
ZWQuCisgICAgICAgIChlZ2w6OlN1cmZhY2U6OlN1cmZhY2UpOgorICAgICAgICAoZWdsOjpTdXJm
YWNlOjp+U3VyZmFjZSk6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OmluaXRpYWxpemUpOgorICAg
ICAgICAoZWdsOjpTdXJmYWNlOjpyZWxlYXNlKToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6cmVz
ZXRTd2FwQ2hhaW4pOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpyZXNpemVTd2FwQ2hhaW4pOgor
ICAgICAgICAoZWdsOjpTdXJmYWNlOjpzd2FwUmVjdCk6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6
OmdldFdpbmRvd0hhbmRsZSk6CisgICAgICAgIChlZ2w6OlN1cmZhY2VXaW5kb3dQcm9jKToKKyAg
ICAgICAgKGVnbDo6U3VyZmFjZTo6c3ViY2xhc3NXaW5kb3cpOgorICAgICAgICAoZWdsOjpTdXJm
YWNlOjp1bnN1YmNsYXNzV2luZG93KToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6Y2hlY2tGb3JP
dXRPZkRhdGVTd2FwQ2hhaW4pOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpzd2FwKToKKyAgICAg
ICAgKGVnbDo6U3VyZmFjZTo6cG9zdFN1YkJ1ZmZlcik6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6
OmdldFdpZHRoKToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6Z2V0SGVpZ2h0KToKKyAgICAgICAg
KGVnbDo6U3VyZmFjZTo6aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKToKKyAgICAgICAgKGVnbDo6
U3VyZmFjZTo6Z2V0U3dhcENoYWluKToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6c2V0U3dhcElu
dGVydmFsKToKKyAgICAgICAgKGVnbDo6U3VyZmFjZTo6Z2V0VGV4dHVyZUZvcm1hdCk6CisgICAg
ICAgIChlZ2w6OlN1cmZhY2U6OmdldFRleHR1cmVUYXJnZXQpOgorICAgICAgICAoZWdsOjpTdXJm
YWNlOjpzZXRCb3VuZFRleHR1cmUpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpnZXRCb3VuZFRl
eHR1cmUpOgorICAgICAgICAoZWdsOjpTdXJmYWNlOjpnZXRGb3JtYXQpOgorICAgICAgICAqIHNy
Yy9saWJFR0wvU3VyZmFjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliRUdML2xpYkVHTC5j
cHA6IEFkZGVkLgorICAgICAgICAodmFsaWRhdGVEaXNwbGF5KToKKyAgICAgICAgKHZhbGlkYXRl
Q29uZmlnKToKKyAgICAgICAgKHZhbGlkYXRlQ29udGV4dCk6CisgICAgICAgICh2YWxpZGF0ZVN1
cmZhY2UpOgorICAgICAgICAqIHNyYy9saWJFR0wvbGliRUdMLmRlZjogQWRkZWQuCisgICAgICAg
ICogc3JjL2xpYkVHTC9saWJFR0wucmM6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJFR0wvbGli
RUdMLnZjeHByb2o6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJFR0wvbGliRUdMLnZjeHByb2ou
ZmlsdGVyczogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkVHTC9tYWluLmNwcDogQWRkZWQuCisg
ICAgICAgIChEbGxNYWluKToKKyAgICAgICAgKGVnbDo6c2V0Q3VycmVudEVycm9yKToKKyAgICAg
ICAgKGVnbDo6Z2V0Q3VycmVudEVycm9yKToKKyAgICAgICAgKGVnbDo6c2V0Q3VycmVudEFQSSk6
CisgICAgICAgIChlZ2w6OmdldEN1cnJlbnRBUEkpOgorICAgICAgICAoZWdsOjpzZXRDdXJyZW50
RGlzcGxheSk6CisgICAgICAgIChlZ2w6OmdldEN1cnJlbnREaXNwbGF5KToKKyAgICAgICAgKGVn
bDo6c2V0Q3VycmVudERyYXdTdXJmYWNlKToKKyAgICAgICAgKGVnbDo6Z2V0Q3VycmVudERyYXdT
dXJmYWNlKToKKyAgICAgICAgKGVnbDo6c2V0Q3VycmVudFJlYWRTdXJmYWNlKToKKyAgICAgICAg
KGVnbDo6Z2V0Q3VycmVudFJlYWRTdXJmYWNlKToKKyAgICAgICAgKGVnbDo6ZXJyb3IpOgorICAg
ICAgICAqIHNyYy9saWJFR0wvbWFpbi5oOiBBZGRlZC4KKyAgICAgICAgKGVnbDo6ZXJyb3IpOgor
ICAgICAgICAoZWdsOjpzdWNjZXNzKToKKyAgICAgICAgKiBzcmMvbGliRUdML3Jlc291cmNlLmg6
IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvQmluYXJ5U3RyZWFtLmg6IEFkZGVkLgor
ICAgICAgICAoZ2w6OkJpbmFyeUlucHV0U3RyZWFtOjpCaW5hcnlJbnB1dFN0cmVhbSk6CisgICAg
ICAgIChnbDo6QmluYXJ5SW5wdXRTdHJlYW06OnJlYWQpOgorICAgICAgICAoZ2w6OkJpbmFyeUlu
cHV0U3RyZWFtOjpza2lwKToKKyAgICAgICAgKGdsOjpCaW5hcnlJbnB1dFN0cmVhbTo6b2Zmc2V0
KToKKyAgICAgICAgKGdsOjpCaW5hcnlJbnB1dFN0cmVhbTo6ZXJyb3IpOgorICAgICAgICAoZ2w6
OkJpbmFyeUlucHV0U3RyZWFtOjplbmRPZlN0cmVhbSk6CisgICAgICAgIChnbDo6QmluYXJ5T3V0
cHV0U3RyZWFtOjpCaW5hcnlPdXRwdXRTdHJlYW0pOgorICAgICAgICAoZ2w6OkJpbmFyeU91dHB1
dFN0cmVhbTo6d3JpdGUpOgorICAgICAgICAoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbTo6bGVuZ3Ro
KToKKyAgICAgICAgKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW06OmRhdGEpOgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvQnVmZmVyLmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6QnVmZmVyOjpCdWZm
ZXIpOgorICAgICAgICAoZ2w6OkJ1ZmZlcjo6fkJ1ZmZlcik6CisgICAgICAgIChnbDo6QnVmZmVy
OjpidWZmZXJEYXRhKToKKyAgICAgICAgKGdsOjpCdWZmZXI6OmJ1ZmZlclN1YkRhdGEpOgorICAg
ICAgICAoZ2w6OkJ1ZmZlcjo6Z2V0U3RvcmFnZSk6CisgICAgICAgIChnbDo6QnVmZmVyOjpzaXpl
KToKKyAgICAgICAgKGdsOjpCdWZmZXI6OnVzYWdlKToKKyAgICAgICAgKGdsOjpCdWZmZXI6Omdl
dFN0YXRpY1ZlcnRleEJ1ZmZlcik6CisgICAgICAgIChnbDo6QnVmZmVyOjpnZXRTdGF0aWNJbmRl
eEJ1ZmZlcik6CisgICAgICAgIChnbDo6QnVmZmVyOjppbnZhbGlkYXRlU3RhdGljRGF0YSk6Cisg
ICAgICAgIChnbDo6QnVmZmVyOjpwcm9tb3RlU3RhdGljVXNhZ2UpOgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvQnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvQ29udGV4
dC5jcHA6IEFkZGVkLgorICAgICAgICAoZ2w6Om1ha2VTdGF0aWNTdHJpbmcpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6On5Db250ZXh0KToK
KyAgICAgICAgKGdsOjpDb250ZXh0OjptYWtlQ3VycmVudCk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6bWFya0NvbnRleHRMb3N0KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc0NvbnRleHRMb3N0
KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRDbGVhckNvbG9yKToKKyAgICAgICAgKGdsOjpD
b250ZXh0OjpzZXRDbGVhckRlcHRoKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRDbGVhclN0
ZW5jaWwpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldEN1bGxGYWNlKToKKyAgICAgICAgKGds
OjpDb250ZXh0Ojppc0N1bGxGYWNlRW5hYmxlZCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0
Q3VsbE1vZGUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldEZyb250RmFjZSk6CisgICAgICAg
IChnbDo6Q29udGV4dDo6c2V0RGVwdGhUZXN0KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc0Rl
cHRoVGVzdEVuYWJsZWQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldERlcHRoRnVuYyk6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6c2V0RGVwdGhSYW5nZSk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6c2V0QmxlbmQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzQmxlbmRFbmFibGVkKToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpzZXRCbGVuZEZhY3RvcnMpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OnNldEJsZW5kQ29sb3IpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldEJsZW5kRXF1YXRp
b24pOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFN0ZW5jaWxUZXN0KToKKyAgICAgICAgKGds
OjpDb250ZXh0Ojppc1N0ZW5jaWxUZXN0RW5hYmxlZCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6
c2V0U3RlbmNpbFBhcmFtcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0U3RlbmNpbEJhY2tQ
YXJhbXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFN0ZW5jaWxXcml0ZW1hc2spOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OnNldFN0ZW5jaWxCYWNrV3JpdGVtYXNrKToKKyAgICAgICAgKGds
OjpDb250ZXh0OjpzZXRTdGVuY2lsT3BlcmF0aW9ucyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6
c2V0U3RlbmNpbEJhY2tPcGVyYXRpb25zKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRQb2x5
Z29uT2Zmc2V0RmlsbCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6aXNQb2x5Z29uT2Zmc2V0Rmls
bEVuYWJsZWQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFBvbHlnb25PZmZzZXRQYXJhbXMp
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZSk6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6aXNTYW1wbGVBbHBoYVRvQ292ZXJhZ2VFbmFibGVkKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpzZXRTYW1wbGVDb3ZlcmFnZSk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6aXNTYW1wbGVDb3ZlcmFnZUVuYWJsZWQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFNh
bXBsZUNvdmVyYWdlUGFyYW1zKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRTY2lzc29yVGVz
dCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6aXNTY2lzc29yVGVzdEVuYWJsZWQpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OnNldERpdGhlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6aXNEaXRo
ZXJFbmFibGVkKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRMaW5lV2lkdGgpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OnNldEdlbmVyYXRlTWlwbWFwSGludCk6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6c2V0RnJhZ21lbnRTaGFkZXJEZXJpdmF0aXZlSGludCk6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6c2V0Vmlld3BvcnRQYXJhbXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFNjaXNz
b3JQYXJhbXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldENvbG9yTWFzayk6CisgICAgICAg
IChnbDo6Q29udGV4dDo6c2V0RGVwdGhNYXNrKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRB
Y3RpdmVTYW1wbGVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRSZWFkRnJhbWVidWZmZXJI
YW5kbGUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldERyYXdGcmFtZWJ1ZmZlckhhbmRsZSk6
CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0UmVuZGVyYnVmZmVySGFuZGxlKToKKyAgICAgICAg
KGdsOjpDb250ZXh0OjpnZXRBcnJheUJ1ZmZlckhhbmRsZSk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6Z2V0QWN0aXZlUXVlcnkpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldEVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJTdGF0
ZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0VmVydGV4QXR0cmliU3RhdGUpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmdldFZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OnNldFBhY2tBbGlnbm1lbnQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFBhY2tB
bGlnbm1lbnQpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFVucGFja0FsaWdubWVudCk6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6Z2V0VW5wYWNrQWxpZ25tZW50KToKKyAgICAgICAgKGdsOjpD
b250ZXh0OjpzZXRQYWNrUmV2ZXJzZVJvd09yZGVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpn
ZXRQYWNrUmV2ZXJzZVJvd09yZGVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpjcmVhdGVCdWZm
ZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoZ2w6
OkNvbnRleHQ6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Y3JlYXRlVGV4
dHVyZSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4
dDo6Y3JlYXRlRmVuY2UpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmNyZWF0ZVF1ZXJ5KToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpkZWxldGVCdWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6ZGVsZXRlUHJvZ3JhbSk6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6ZGVsZXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpkZWxldGVGcmFt
ZWJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6ZGVsZXRlRmVuY2UpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OmRlbGV0ZVF1ZXJ5KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRCdWZm
ZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFNoYWRlcik6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6Z2V0UHJvZ3JhbSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0VGV4dHVyZSk6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250
ZXh0OjpnZXRSZWFkRnJhbWVidWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldERyYXdG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6YmluZEFycmF5QnVmZmVyKToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpiaW5kRWxlbWVudEFycmF5QnVmZmVyKToKKyAgICAgICAgKGds
OjpDb250ZXh0OjpiaW5kVGV4dHVyZTJEKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpiaW5kVGV4
dHVyZUN1YmVNYXApOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmJpbmRSZWFkRnJhbWVidWZmZXIp
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmJpbmREcmF3RnJhbWVidWZmZXIpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnVz
ZVByb2dyYW0pOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmxpbmtQcm9ncmFtKToKKyAgICAgICAg
KGdsOjpDb250ZXh0OjpzZXRQcm9ncmFtQmluYXJ5KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpi
ZWdpblF1ZXJ5KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjplbmRRdWVyeSk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6c2V0RnJhbWVidWZmZXJaZXJvKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpz
ZXRSZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0RmVuY2UpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OmdldFF1ZXJ5KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRBcnJheUJ1ZmZlcik6
CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0RWxlbWVudEFycmF5QnVmZmVyKToKKyAgICAgICAg
KGdsOjpDb250ZXh0OjpnZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSk6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6Z2V0VGV4dHVyZTJEKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRUZXh0dXJlQ3Vi
ZU1hcCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0U2FtcGxlclRleHR1cmUpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmdldEJvb2xlYW52KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRG
bG9hdHYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEludGVnZXJ2KToKKyAgICAgICAgKGds
OjpDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlckluZm8pOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmFwcGx5UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjphcHBseVN0YXRlKToK
KyAgICAgICAgKGdsOjpDb250ZXh0OjphcHBseVNoYWRlcnMpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OmFwcGx5VGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnJlYWRQaXhlbHMpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OmNsZWFyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpkcmF3
QXJyYXlzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OnN5bmMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnJlY29yZEludmFsaWRF
bnVtKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpyZWNvcmRJbnZhbGlkVmFsdWUpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OnJlY29yZEludmFsaWRPcGVyYXRpb24pOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OnJlY29yZE91dE9mTWVtb3J5KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpyZWNvcmRJ
bnZhbGlkRnJhbWVidWZmZXJPcGVyYXRpb24pOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEVy
cm9yKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRSZXNldFN0YXR1cyk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6aXNSZXNldE5vdGlmaWNhdGlvbkVuYWJsZWQpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OmdldE1ham9yU2hhZGVyTW9kZWwpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldE1h
eGltdW1Qb2ludFNpemUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldE1heGltdW1Db21iaW5l
ZFRleHR1cmVJbWFnZVVuaXRzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRNYXhTdXBwb3J0
ZWRTYW1wbGVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRNYXhpbXVtUmVuZGVyVGFyZ2V0
cyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNFdmVudFF1ZXJpZXMpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzT2NjbHVzaW9uUXVlcmllcyk6CisgICAgICAgIChnbDo6
Q29udGV4dDo6c3VwcG9ydHNCR1JBVGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1
cHBvcnRzRFhUMVRleHR1cmVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0RYVDNU
ZXh0dXJlcyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHNEWFQ1VGV4dHVyZXMpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzRmxvYXQzMlRleHR1cmVzKToKKyAgICAgICAg
KGdsOjpDb250ZXh0OjpzdXBwb3J0c0Zsb2F0MzJMaW5lYXJGaWx0ZXIpOgorICAgICAgICAoZ2w6
OkNvbnRleHQ6OnN1cHBvcnRzRmxvYXQzMlJlbmRlcmFibGVUZXh0dXJlcyk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6c3VwcG9ydHNGbG9hdDE2VGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OnN1cHBvcnRzRmxvYXQxNkxpbmVhckZpbHRlcik6CisgICAgICAgIChnbDo6Q29udGV4dDo6
c3VwcG9ydHNGbG9hdDE2UmVuZGVyYWJsZVRleHR1cmVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0
OjpnZXRNYXhpbXVtUmVuZGVyYnVmZmVyRGltZW5zaW9uKToKKyAgICAgICAgKGdsOjpDb250ZXh0
OjpnZXRNYXhpbXVtVGV4dHVyZURpbWVuc2lvbik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0
TWF4aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRN
YXhpbXVtVGV4dHVyZUxldmVsKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0x1bWlu
YW5jZVRleHR1cmVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBwb3J0c0x1bWluYW5jZUFs
cGhhVGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzRGVwdGhUZXh0dXJl
cyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c3VwcG9ydHMzMmJpdEluZGljZXMpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OnN1cHBvcnRzTm9uUG93ZXIyVGV4dHVyZSk6CisgICAgICAgIChnbDo6
Q29udGV4dDo6c3VwcG9ydHNJbnN0YW5jaW5nKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdXBw
b3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRU
ZXh0dXJlTWF4QW5pc290cm9weSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0Q3VycmVudFJl
YWRGb3JtYXRUeXBlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpkZXRhY2hCdWZmZXIpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OmRldGFjaFRleHR1cmUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmRldGFjaEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpkZXRhY2hSZW5kZXJi
dWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEluY29tcGxldGVUZXh0dXJlKToKKyAg
ICAgICAgKGdsOjpDb250ZXh0Ojpza2lwRHJhdyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6c2V0
VmVydGV4QXR0cmliKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpzZXRWZXJ0ZXhBdHRyaWJEaXZp
c29yKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppbml0RXh0ZW5zaW9uU3RyaW5nKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0OjpnZXRFeHRlbnNpb25TdHJpbmcpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OmluaXRSZW5kZXJlclN0cmluZyk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0UmVuZGVy
ZXJTdHJpbmcpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmJsaXRGcmFtZWJ1ZmZlcik6CisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9Db250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoZ2w6OlZlcnRl
eEF0dHJpYnV0ZTo6VmVydGV4QXR0cmlidXRlKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJ1
dGU6OnR5cGVTaXplKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJ1dGU6OnN0cmlkZSk6Cisg
ICAgICAgICogc3JjL2xpYkdMRVN2Mi9GZW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoZ2w6OkZl
bmNlOjpGZW5jZSk6CisgICAgICAgIChnbDo6RmVuY2U6On5GZW5jZSk6CisgICAgICAgIChnbDo6
RmVuY2U6OmlzRmVuY2UpOgorICAgICAgICAoZ2w6OkZlbmNlOjpzZXRGZW5jZSk6CisgICAgICAg
IChnbDo6RmVuY2U6OnRlc3RGZW5jZSk6CisgICAgICAgIChnbDo6RmVuY2U6OmZpbmlzaEZlbmNl
KToKKyAgICAgICAgKGdsOjpGZW5jZTo6Z2V0RmVuY2Vpdik6CisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9GZW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0Zsb2F0MTZUb0Zs
b2F0MzIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdsOjpmbG9hdDE2VG9GbG9hdDMyKToKKyAgICAg
ICAgKiBzcmMvbGliR0xFU3YyL0Zsb2F0MTZUb0Zsb2F0MzIucHk6IEFkZGVkLgorICAgICAgICAo
Y29udmVydE1hbnRpc3NhKToKKyAgICAgICAgKGNvbnZlcnRFeHBvbmVudCk6CisgICAgICAgIChj
b252ZXJ0T2Zmc2V0KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0ZyYW1lYnVmZmVyLmNwcDog
QWRkZWQuCisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OkZyYW1lYnVmZmVyKToKKyAgICAgICAg
KGdsOjpGcmFtZWJ1ZmZlcjo6fkZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZl
cjo6bG9va3VwUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6c2V0Q29s
b3JidWZmZXIpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpzZXREZXB0aGJ1ZmZlcik6Cisg
ICAgICAgIChnbDo6RnJhbWVidWZmZXI6OnNldFN0ZW5jaWxidWZmZXIpOgorICAgICAgICAoZ2w6
OkZyYW1lYnVmZmVyOjpkZXRhY2hUZXh0dXJlKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6
ZGV0YWNoUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0UmVuZGVy
VGFyZ2V0U2VyaWFsKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0RGVwdGhidWZmZXJT
ZXJpYWwpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXRTdGVuY2lsYnVmZmVyU2VyaWFs
KToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0Q29sb3JidWZmZXIpOgorICAgICAgICAo
Z2w6OkZyYW1lYnVmZmVyOjpnZXREZXB0aGJ1ZmZlcik6CisgICAgICAgIChnbDo6RnJhbWVidWZm
ZXI6OmdldFN0ZW5jaWxidWZmZXIpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXREZXB0
aE9yU3RlbmNpbGJ1ZmZlcik6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmdldFJlYWRDb2xv
cmJ1ZmZlcik6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmdldFJlYWRDb2xvcmJ1ZmZlclR5
cGUpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpnZXRGaXJzdENvbG9yYnVmZmVyKToKKyAg
ICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0Q29sb3JidWZmZXJUeXBlKToKKyAgICAgICAgKGds
OjpGcmFtZWJ1ZmZlcjo6Z2V0RGVwdGhidWZmZXJUeXBlKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1
ZmZlcjo6Z2V0U3RlbmNpbGJ1ZmZlclR5cGUpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpn
ZXRDb2xvcmJ1ZmZlckhhbmRsZSk6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmdldERlcHRo
YnVmZmVySGFuZGxlKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0U3RlbmNpbGJ1ZmZl
ckhhbmRsZSk6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXJTdGF0ZSk6
CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OnNldERyYXdCdWZmZXJTdGF0ZSk6CisgICAgICAg
IChnbDo6RnJhbWVidWZmZXI6OmlzRW5hYmxlZENvbG9yQXR0YWNobWVudCk6CisgICAgICAgIChn
bDo6RnJhbWVidWZmZXI6Omhhc0VuYWJsZWRDb2xvckF0dGFjaG1lbnQpOgorICAgICAgICAoZ2w6
OkZyYW1lYnVmZmVyOjpoYXNTdGVuY2lsKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6dXNp
bmdFeHRlbmRlZERyYXdCdWZmZXJzKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Y29tcGxl
dGVuZXNzKToKKyAgICAgICAgKGdsOjpEZWZhdWx0RnJhbWVidWZmZXI6OkRlZmF1bHRGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmdldFNhbXBsZXMpOgorICAgICAgICAo
Z2w6OkRlZmF1bHRGcmFtZWJ1ZmZlcjo6Y29tcGxldGVuZXNzKToKKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL0ZyYW1lYnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvSGFu
ZGxlQWxsb2NhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6SGFuZGxlQWxsb2NhdG9yOjpI
YW5kbGVBbGxvY2F0b3IpOgorICAgICAgICAoZ2w6OkhhbmRsZUFsbG9jYXRvcjo6fkhhbmRsZUFs
bG9jYXRvcik6CisgICAgICAgIChnbDo6SGFuZGxlQWxsb2NhdG9yOjpzZXRCYXNlSGFuZGxlKToK
KyAgICAgICAgKGdsOjpIYW5kbGVBbGxvY2F0b3I6OmFsbG9jYXRlKToKKyAgICAgICAgKGdsOjpI
YW5kbGVBbGxvY2F0b3I6OnJlbGVhc2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvSGFuZGxl
QWxsb2NhdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUHJvZ3JhbS5jcHA6
IEFkZGVkLgorICAgICAgICAoZ2w6OkF0dHJpYnV0ZUJpbmRpbmdzOjpBdHRyaWJ1dGVCaW5kaW5n
cyk6CisgICAgICAgIChnbDo6QXR0cmlidXRlQmluZGluZ3M6On5BdHRyaWJ1dGVCaW5kaW5ncyk6
CisgICAgICAgIChnbDo6SW5mb0xvZzo6SW5mb0xvZyk6CisgICAgICAgIChnbDo6SW5mb0xvZzo6
fkluZm9Mb2cpOgorICAgICAgICAoZ2w6OkluZm9Mb2c6OmdldExlbmd0aCk6CisgICAgICAgIChn
bDo6SW5mb0xvZzo6Z2V0TG9nKToKKyAgICAgICAgKGdsOjpJbmZvTG9nOjphcHBlbmRTYW5pdGl6
ZWQpOgorICAgICAgICAoZ2w6OkluZm9Mb2c6OmFwcGVuZCk6CisgICAgICAgIChnbDo6SW5mb0xv
Zzo6cmVzZXQpOgorICAgICAgICAoZ2w6OlByb2dyYW06OlByb2dyYW0pOgorICAgICAgICAoZ2w6
OlByb2dyYW06On5Qcm9ncmFtKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjphdHRhY2hTaGFkZXIp
OgorICAgICAgICAoZ2w6OlByb2dyYW06OmRldGFjaFNoYWRlcik6CisgICAgICAgIChnbDo6UHJv
Z3JhbTo6Z2V0QXR0YWNoZWRTaGFkZXJzQ291bnQpOgorICAgICAgICAoZ2w6OkF0dHJpYnV0ZUJp
bmRpbmdzOjpiaW5kQXR0cmlidXRlTG9jYXRpb24pOgorICAgICAgICAoZ2w6OlByb2dyYW06OmJp
bmRBdHRyaWJ1dGVMb2NhdGlvbik6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6bGluayk6CisgICAg
ICAgIChnbDo6QXR0cmlidXRlQmluZGluZ3M6OmdldEF0dHJpYnV0ZUJpbmRpbmcpOgorICAgICAg
ICAoZ2w6OlByb2dyYW06OnVubGluayk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6aXNMaW5rZWQp
OgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldFByb2dyYW1CaW5hcnkpOgorICAgICAgICAoZ2w6
OlByb2dyYW06OnNldFByb2dyYW1CaW5hcnkpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnJlbGVh
c2UpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmFkZFJlZik6CisgICAgICAgIChnbDo6UHJvZ3Jh
bTo6Z2V0UmVmQ291bnQpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldFByb2dyYW1CaW5hcnlM
ZW5ndGgpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldEluZm9Mb2dMZW5ndGgpOgorICAgICAg
ICAoZ2w6OlByb2dyYW06OmdldEluZm9Mb2cpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldEF0
dGFjaGVkU2hhZGVycyk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0QWN0aXZlQXR0cmlidXRl
KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCk6CisgICAg
ICAgIChnbDo6UHJvZ3JhbTo6Z2V0QWN0aXZlQXR0cmlidXRlTWF4TGVuZ3RoKToKKyAgICAgICAg
KGdsOjpQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpn
ZXRBY3RpdmVVbmlmb3JtQ291bnQpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldEFjdGl2ZVVu
aWZvcm1NYXhMZW5ndGgpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmZsYWdGb3JEZWxldGlvbik6
CisgICAgICAgIChnbDo6UHJvZ3JhbTo6aXNGbGFnZ2VkRm9yRGVsZXRpb24pOgorICAgICAgICAo
Z2w6OlByb2dyYW06OnZhbGlkYXRlKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjppc1ZhbGlkYXRl
ZCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtLmg6IEFkZGVkLgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5jcHA6IEFkZGVkLgorICAgICAgICAoZ2w6OnN0
cik6CisgICAgICAgIChnbDo6VW5pZm9ybUxvY2F0aW9uOjpVbmlmb3JtTG9jYXRpb24pOgorICAg
ICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OlByb2dyYW1CaW5hcnkpOgorICAgICAgICAoZ2w6OlBy
b2dyYW1CaW5hcnk6On5Qcm9ncmFtQmluYXJ5KToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5
OjpnZXRTZXJpYWwpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6Omlzc3VlU2VyaWFsKToK
KyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRQaXhlbEV4ZWN1dGFibGUpOgorICAgICAg
ICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldFZlcnRleEV4ZWN1dGFibGUpOgorICAgICAgICAoZ2w6
OlByb2dyYW1CaW5hcnk6OmdldEdlb21ldHJ5RXhlY3V0YWJsZSk6CisgICAgICAgIChnbDo6UHJv
Z3JhbUJpbmFyeTo6Z2V0QXR0cmlidXRlTG9jYXRpb24pOgorICAgICAgICAoZ2w6OlByb2dyYW1C
aW5hcnk6OmdldFNlbWFudGljSW5kZXgpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6Omdl
dFVzZWRTYW1wbGVyUmFuZ2UpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OnVzZXNQb2lu
dFNpemUpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OnVzZXNQb2ludFNwcml0ZUVtdWxh
dGlvbik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6dXNlc0dlb21ldHJ5U2hhZGVyKToK
KyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRTYW1wbGVyTWFwcGluZyk6CisgICAgICAg
IChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2V0U2FtcGxlclRleHR1cmVUeXBlKToKKyAgICAgICAgKGds
OjpQcm9ncmFtQmluYXJ5OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoZ2w6OlByb2dy
YW1CaW5hcnk6OnNldFVuaWZvcm0xZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OnNl
dFVuaWZvcm0yZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm0zZnYp
OgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm00ZnYpOgorICAgICAgICAo
Z2w6OnRyYW5zcG9zZU1hdHJpeCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6c2V0VW5p
Zm9ybU1hdHJpeDJmdik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybU1h
dHJpeDNmdik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybU1hdHJpeDRm
dik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTFpdik6CisgICAgICAg
IChnbDo6UHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTJpdik6CisgICAgICAgIChnbDo6UHJvZ3Jh
bUJpbmFyeTo6c2V0VW5pZm9ybTNpdik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6c2V0
VW5pZm9ybTRpdik6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2V0VW5pZm9ybWZ2KToK
KyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoZ2w6
OlByb2dyYW1CaW5hcnk6OmRpcnR5QWxsVW5pZm9ybXMpOgorICAgICAgICAoZ2w6OlByb2dyYW1C
aW5hcnk6OmFwcGx5VW5pZm9ybXMpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OnBhY2tW
YXJ5aW5ncyk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6bGlua1ZhcnlpbmdzKToKKyAg
ICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5Ojpsb2FkKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmlu
YXJ5OjpzYXZlKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRMZW5ndGgpOgorICAg
ICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmxpbmspOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5h
cnk6OmxpbmtBdHRyaWJ1dGVzKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpsaW5rVW5p
Zm9ybXMpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmRlZmluZVVuaWZvcm0pOgorICAg
ICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdlbmVyYXRlR2VvbWV0cnlTaGFkZXJITFNMKToKKyAg
ICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZW5lcmF0ZVBvaW50U3ByaXRlSExTTCk6CisgICAg
ICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6ZGVjb3JhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoZ2w6
OlByb2dyYW1CaW5hcnk6OmlzVmFsaWRhdGVkKToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5
OjpnZXRBY3RpdmVBdHRyaWJ1dGUpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldEFj
dGl2ZUF0dHJpYnV0ZUNvdW50KToKKyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5OjpnZXRBY3Rp
dmVBdHRyaWJ1dGVNYXhMZW5ndGgpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldEFj
dGl2ZVVuaWZvcm0pOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OmdldEFjdGl2ZVVuaWZv
cm1Db3VudCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6Z2V0QWN0aXZlVW5pZm9ybU1h
eExlbmd0aCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeTo6dmFsaWRhdGUpOgorICAgICAg
ICAoZ2w6OlByb2dyYW1CaW5hcnk6OnZhbGlkYXRlU2FtcGxlcnMpOgorICAgICAgICAoZ2w6OlBy
b2dyYW1CaW5hcnk6OlNhbXBsZXI6OlNhbXBsZXIpOgorICAgICAgICAoZ2w6OkF0dHJpYnV0ZVNv
cnRlcjo6QXR0cmlidXRlU29ydGVyKToKKyAgICAgICAgKGdsOjpBdHRyaWJ1dGVTb3J0ZXI6Om9w
ZXJhdG9yKCkpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnk6OnNvcnRBdHRyaWJ1dGVzQnlM
YXlvdXQpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5oOiBBZGRlZC4K
KyAgICAgICAgKGdsOjpVbmlmb3JtTG9jYXRpb246OlVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAg
ICogc3JjL2xpYkdMRVN2Mi9RdWVyeS5jcHA6IEFkZGVkLgorICAgICAgICAoZ2w6OlF1ZXJ5OjpR
dWVyeSk6CisgICAgICAgIChnbDo6UXVlcnk6On5RdWVyeSk6CisgICAgICAgIChnbDo6UXVlcnk6
OmJlZ2luKToKKyAgICAgICAgKGdsOjpRdWVyeTo6ZW5kKToKKyAgICAgICAgKGdsOjpRdWVyeTo6
Z2V0UmVzdWx0KToKKyAgICAgICAgKGdsOjpRdWVyeTo6aXNSZXN1bHRBdmFpbGFibGUpOgorICAg
ICAgICAoZ2w6OlF1ZXJ5OjpnZXRUeXBlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1F1ZXJ5
Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVySW50ZXJmYWNlOjpSZW5kZXJidWZmZXJJbnRl
cmZhY2UpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVyZmFjZTo6YWRkUHJveHlSZWYp
OgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVyZmFjZTo6cmVsZWFzZVByb3h5KToKKyAg
ICAgICAgKGdsOjpSZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldFJlZFNpemUpOgorICAgICAgICAo
Z2w6OlJlbmRlcmJ1ZmZlckludGVyZmFjZTo6Z2V0R3JlZW5TaXplKToKKyAgICAgICAgKGdsOjpS
ZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldEJsdWVTaXplKToKKyAgICAgICAgKGdsOjpSZW5kZXJi
dWZmZXJJbnRlcmZhY2U6OmdldEFscGhhU2l6ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVy
SW50ZXJmYWNlOjpnZXREZXB0aFNpemUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVy
ZmFjZTo6Z2V0U3RlbmNpbFNpemUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmUy
RDo6UmVuZGVyYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0
dXJlMkQ6On5SZW5kZXJidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZl
clRleHR1cmUyRDo6YWRkUHJveHlSZWYpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1
cmUyRDo6cmVsZWFzZVByb3h5KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6
OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpn
ZXREZXB0aFN0ZW5jaWwpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6Z2V0
V2lkdGgpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmUyRDo6Z2V0SGVpZ2h0KToK
KyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldEludGVybmFsRm9ybWF0KToK
KyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldEFjdHVhbEZvcm1hdCk6Cisg
ICAgICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRTYW1wbGVzKToKKyAgICAgICAg
KGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldFNlcmlhbCk6CisgICAgICAgIChnbDo6UmVu
ZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6OlJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwKToKKyAg
ICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6flJlbmRlcmJ1ZmZlclRleHR1
cmVDdWJlTWFwKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6YWRk
UHJveHlSZWYpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpyZWxl
YXNlUHJveHkpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRS
ZW5kZXJUYXJnZXQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpn
ZXREZXB0aFN0ZW5jaWwpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFw
OjpnZXRXaWR0aCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6Omdl
dEhlaWdodCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6OmdldElu
dGVybmFsRm9ybWF0KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6
Z2V0QWN0dWFsRm9ybWF0KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1h
cDo6Z2V0U2FtcGxlcyk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6
OmdldFNlcmlhbCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpSZW5kZXJidWZmZXIpOgor
ICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6flJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChnbDo6
UmVuZGVyYnVmZmVyOjphZGRSZWYpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6cmVsZWFz
ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAg
ICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0RGVwdGhTdGVuY2lsKToKKyAgICAgICAgKGdsOjpSZW5k
ZXJidWZmZXI6OmdldFdpZHRoKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldEhlaWdo
dCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRJbnRlcm5hbEZvcm1hdCk6CisgICAg
ICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRBY3R1YWxGb3JtYXQpOgorICAgICAgICAoZ2w6OlJl
bmRlcmJ1ZmZlcjo6Z2V0UmVkU2l6ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRH
cmVlblNpemUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0Qmx1ZVNpemUpOgorICAg
ICAgICAoZ2w6OlJlbmRlcmJ1ZmZlcjo6Z2V0QWxwaGFTaXplKToKKyAgICAgICAgKGdsOjpSZW5k
ZXJidWZmZXI6OmdldERlcHRoU2l6ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRT
dGVuY2lsU2l6ZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjpnZXRTYW1wbGVzKToKKyAg
ICAgICAgKGdsOjpSZW5kZXJidWZmZXI6OmdldFNlcmlhbCk6CisgICAgICAgIChnbDo6UmVuZGVy
YnVmZmVyOjpzZXRTdG9yYWdlKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlOjpS
ZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlOjp+
UmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6
Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRE
ZXB0aFN0ZW5jaWwpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldFdpZHRo
KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRIZWlnaHQpOgorICAgICAg
ICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldEludGVybmFsRm9ybWF0KToKKyAgICAgICAg
KGdsOjpSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRBY3R1YWxGb3JtYXQpOgorICAgICAgICAoZ2w6
OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldFNhbXBsZXMpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1
ZmZlclN0b3JhZ2U6OmdldFNlcmlhbCk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyU3RvcmFn
ZTo6aXNzdWVTZXJpYWwpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2U6Omlzc3Vl
Q3ViZVNlcmlhbHMpOgorICAgICAgICAoZ2w6OkNvbG9yYnVmZmVyOjpDb2xvcmJ1ZmZlcik6Cisg
ICAgICAgIChnbDo6Q29sb3JidWZmZXI6On5Db2xvcmJ1ZmZlcik6CisgICAgICAgIChnbDo6Q29s
b3JidWZmZXI6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChnbDo6RGVwdGhTdGVuY2lsYnVm
ZmVyOjpEZXB0aFN0ZW5jaWxidWZmZXIpOgorICAgICAgICAoZ2w6OkRlcHRoU3RlbmNpbGJ1ZmZl
cjo6fkRlcHRoU3RlbmNpbGJ1ZmZlcik6CisgICAgICAgIChnbDo6RGVwdGhTdGVuY2lsYnVmZmVy
OjpnZXREZXB0aFN0ZW5jaWwpOgorICAgICAgICAoZ2w6OkRlcHRoYnVmZmVyOjpEZXB0aGJ1ZmZl
cik6CisgICAgICAgIChnbDo6RGVwdGhidWZmZXI6On5EZXB0aGJ1ZmZlcik6CisgICAgICAgIChn
bDo6U3RlbmNpbGJ1ZmZlcjo6U3RlbmNpbGJ1ZmZlcik6CisgICAgICAgIChnbDo6U3RlbmNpbGJ1
ZmZlcjo6flN0ZW5jaWxidWZmZXIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUmVuZGVyYnVm
ZmVyLmg6IEFkZGVkLgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVyZmFjZTo6flJlbmRl
cmJ1ZmZlckludGVyZmFjZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OlJlc291cmNlTWFu
YWdlcik6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjp+UmVzb3VyY2VNYW5hZ2VyKToK
KyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmFkZFJlZik6CisgICAgICAgIChnbDo6UmVz
b3VyY2VNYW5hZ2VyOjpyZWxlYXNlKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmNy
ZWF0ZUJ1ZmZlcik6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVTaGFkZXIp
OgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAg
IChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKGdsOjpSZXNv
dXJjZU1hbmFnZXI6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChnbDo6UmVzb3VyY2VN
YW5hZ2VyOjpkZWxldGVCdWZmZXIpOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6ZGVs
ZXRlU2hhZGVyKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZVByb2dyYW0p
OgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdlcjo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAg
IChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoZ2w6
OlJlc291cmNlTWFuYWdlcjo6Z2V0QnVmZmVyKToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFn
ZXI6OmdldFNoYWRlcik6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2VyOjpnZXRUZXh0dXJl
KToKKyAgICAgICAgKGdsOjpSZXNvdXJjZU1hbmFnZXI6OmdldFByb2dyYW0pOgorICAgICAgICAo
Z2w6OlJlc291cmNlTWFuYWdlcjo6Z2V0UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGdsOjpSZXNv
dXJjZU1hbmFnZXI6OnNldFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5h
Z2VyOjpjaGVja0J1ZmZlckFsbG9jYXRpb24pOgorICAgICAgICAoZ2w6OlJlc291cmNlTWFuYWdl
cjo6Y2hlY2tUZXh0dXJlQWxsb2NhdGlvbik6CisgICAgICAgIChnbDo6UmVzb3VyY2VNYW5hZ2Vy
OjpjaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24pOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
UmVzb3VyY2VNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvU2hhZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6U2hhZGVyOjpTaGFkZXIpOgorICAgICAgICAoZ2w6
OlNoYWRlcjo6flNoYWRlcik6CisgICAgICAgIChnbDo6U2hhZGVyOjpnZXRIYW5kbGUpOgorICAg
ICAgICAoZ2w6OlNoYWRlcjo6c2V0U291cmNlKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmdldElu
Zm9Mb2dMZW5ndGgpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6Z2V0SW5mb0xvZyk6CisgICAgICAg
IChnbDo6U2hhZGVyOjpnZXRTb3VyY2VMZW5ndGgpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6Z2V0
VHJhbnNsYXRlZFNvdXJjZUxlbmd0aCk6CisgICAgICAgIChnbDo6U2hhZGVyOjpnZXRTb3VyY2VJ
bXBsKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmdldFNvdXJjZSk6CisgICAgICAgIChnbDo6U2hh
ZGVyOjpnZXRUcmFuc2xhdGVkU291cmNlKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmdldFVuaWZv
cm1zKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmlzQ29tcGlsZWQpOgorICAgICAgICAoZ2w6OlNo
YWRlcjo6Z2V0SExTTCk6CisgICAgICAgIChnbDo6U2hhZGVyOjphZGRSZWYpOgorICAgICAgICAo
Z2w6OlNoYWRlcjo6cmVsZWFzZSk6CisgICAgICAgIChnbDo6U2hhZGVyOjpnZXRSZWZDb3VudCk6
CisgICAgICAgIChnbDo6U2hhZGVyOjppc0ZsYWdnZWRGb3JEZWxldGlvbik6CisgICAgICAgIChn
bDo6U2hhZGVyOjpmbGFnRm9yRGVsZXRpb24pOgorICAgICAgICAoZ2w6OlNoYWRlcjo6aW5pdGlh
bGl6ZUNvbXBpbGVyKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OnJlbGVhc2VDb21waWxlcik6Cisg
ICAgICAgIChnbDo6U2hhZGVyOjpwYXJzZVZhcnlpbmdzKToKKyAgICAgICAgKGdsOjpTaGFkZXI6
OnJlc2V0VmFyeWluZ3NSZWdpc3RlckFzc2lnbm1lbnQpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6
dW5jb21waWxlKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmNvbXBpbGVUb0hMU0wpOgorICAgICAg
ICAoZ2w6OlNoYWRlcjo6cGFyc2VUeXBlKToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmNvbXBhcmVW
YXJ5aW5nKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhTaGFkZXI6OlZlcnRleFNoYWRlcik6CisgICAg
ICAgIChnbDo6VmVydGV4U2hhZGVyOjp+VmVydGV4U2hhZGVyKToKKyAgICAgICAgKGdsOjpWZXJ0
ZXhTaGFkZXI6OmdldFR5cGUpOgorICAgICAgICAoZ2w6OlZlcnRleFNoYWRlcjo6dW5jb21waWxl
KToKKyAgICAgICAgKGdsOjpWZXJ0ZXhTaGFkZXI6OmNvbXBpbGUpOgorICAgICAgICAoZ2w6OlZl
cnRleFNoYWRlcjo6Z2V0U2VtYW50aWNJbmRleCk6CisgICAgICAgIChnbDo6VmVydGV4U2hhZGVy
OjpwYXJzZUF0dHJpYnV0ZXMpOgorICAgICAgICAoZ2w6OkZyYWdtZW50U2hhZGVyOjpGcmFnbWVu
dFNoYWRlcik6CisgICAgICAgIChnbDo6RnJhZ21lbnRTaGFkZXI6On5GcmFnbWVudFNoYWRlcik6
CisgICAgICAgIChnbDo6RnJhZ21lbnRTaGFkZXI6OmdldFR5cGUpOgorICAgICAgICAoZ2w6OkZy
YWdtZW50U2hhZGVyOjpjb21waWxlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1NoYWRlci5o
OiBBZGRlZC4KKyAgICAgICAgKGdsOjpWYXJ5aW5nOjpWYXJ5aW5nKToKKyAgICAgICAgKGdsOjpB
dHRyaWJ1dGU6OkF0dHJpYnV0ZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmNw
cDogQWRkZWQuCisgICAgICAgIChnbDo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChnbDo6
VGV4dHVyZTo6flRleHR1cmUpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OnNldE1pbkZpbHRlcik6
CisgICAgICAgIChnbDo6VGV4dHVyZTo6c2V0TWFnRmlsdGVyKToKKyAgICAgICAgKGdsOjpUZXh0
dXJlOjpzZXRXcmFwUyk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6c2V0V3JhcFQpOgorICAgICAg
ICAoZ2w6OlRleHR1cmU6OnNldE1heEFuaXNvdHJvcHkpOgorICAgICAgICAoZ2w6OlRleHR1cmU6
OnNldFVzYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpnZXRNaW5GaWx0ZXIpOgorICAgICAg
ICAoZ2w6OlRleHR1cmU6OmdldE1hZ0ZpbHRlcik6CisgICAgICAgIChnbDo6VGV4dHVyZTo6Z2V0
V3JhcFMpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmdldFdyYXBUKToKKyAgICAgICAgKGdsOjpU
ZXh0dXJlOjpnZXRNYXhBbmlzb3Ryb3B5KToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpnZXRMb2RP
ZmZzZXQpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmdldFNhbXBsZXJTdGF0ZSk6CisgICAgICAg
IChnbDo6VGV4dHVyZTo6Z2V0VXNhZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OmlzTWlwbWFw
RmlsdGVyZWQpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OnNldEltYWdlKToKKyAgICAgICAgKGds
OjpUZXh0dXJlOjpzZXRDb21wcmVzc2VkSW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmU6OnN1
YkltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpzdWJJbWFnZUNvbXByZXNzZWQpOgorICAg
ICAgICAoZ2w6OlRleHR1cmU6OmdldE5hdGl2ZVRleHR1cmUpOgorICAgICAgICAoZ2w6OlRleHR1
cmU6Omhhc0RpcnR5SW1hZ2VzKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpyZXNldERpcnR5KToK
KyAgICAgICAgKGdsOjpUZXh0dXJlOjpnZXRUZXh0dXJlU2VyaWFsKToKKyAgICAgICAgKGdsOjpU
ZXh0dXJlOjpnZXRSZW5kZXJUYXJnZXRTZXJpYWwpOgorICAgICAgICAoZ2w6OlRleHR1cmU6Omlz
SW1tdXRhYmxlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpjcmVhdGlvbkxldmVscyk6CisgICAg
ICAgIChnbDo6VGV4dHVyZTJEOjpUZXh0dXJlMkQpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6
flRleHR1cmUyRCk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjphZGRQcm94eVJlZik6CisgICAg
ICAgIChnbDo6VGV4dHVyZTJEOjpyZWxlYXNlUHJveHkpOgorICAgICAgICAoZ2w6OlRleHR1cmUy
RDo6Z2V0VGFyZ2V0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdldFdpZHRoKToKKyAgICAg
ICAgKGdsOjpUZXh0dXJlMkQ6OmdldEhlaWdodCk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpn
ZXRJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpnZXRBY3R1YWxGb3Jt
YXQpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6cmVkZWZpbmVJbWFnZSk6CisgICAgICAgIChn
bDo6VGV4dHVyZTJEOjpzZXRJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpiaW5kVGV4
SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6cmVsZWFzZVRleEltYWdlKToKKyAgICAg
ICAgKGdsOjpUZXh0dXJlMkQ6OnNldENvbXByZXNzZWRJbWFnZSk6CisgICAgICAgIChnbDo6VGV4
dHVyZTJEOjpjb21taXRSZWN0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnN1YkltYWdlKToK
KyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnN1YkltYWdlQ29tcHJlc3NlZCk6CisgICAgICAgIChn
bDo6VGV4dHVyZTJEOjpjb3B5SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Y29weVN1
YkltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnN0b3JhZ2UpOgorICAgICAgICAoZ2w6
OlRleHR1cmUyRDo6aXNTYW1wbGVyQ29tcGxldGUpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6
aXNNaXBtYXBDb21wbGV0ZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjppc0NvbXByZXNzZWQp
OgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6aXNEZXB0aCk6CisgICAgICAgIChnbDo6VGV4dHVy
ZTJEOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnVwZGF0ZVRleHR1
cmUpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Y29udmVydFRvUmVuZGVyVGFyZ2V0KToKKyAg
ICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdlbmVyYXRlTWlwbWFwcyk6CisgICAgICAgIChnbDo6VGV4
dHVyZTJEOjpnZXRSZW5kZXJidWZmZXIpOgorICAgICAgICAoZ2w6OlRleHR1cmUyRDo6Z2V0UmVu
ZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OmdldERlcHRoU3RlbmNpbCk6Cisg
ICAgICAgIChnbDo6VGV4dHVyZTJEOjpsZXZlbENvdW50KToKKyAgICAgICAgKGdsOjpUZXh0dXJl
MkQ6OmdldFN0b3JhZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpUZXh0dXJlQ3Vi
ZU1hcCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6On5UZXh0dXJlQ3ViZU1hcCk6Cisg
ICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmFkZFByb3h5UmVmKToKKyAgICAgICAgKGdsOjpU
ZXh0dXJlQ3ViZU1hcDo6cmVsZWFzZVByb3h5KToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1h
cDo6Z2V0VGFyZ2V0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Z2V0V2lkdGgpOgor
ICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpnZXRIZWlnaHQpOgorICAgICAgICAoZ2w6OlRl
eHR1cmVDdWJlTWFwOjpnZXRJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1
YmVNYXA6OmdldEFjdHVhbEZvcm1hdCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnNl
dEltYWdlUG9zWCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnNldEltYWdlTmVnWCk6
CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnNldEltYWdlUG9zWSk6CisgICAgICAgIChn
bDo6VGV4dHVyZUN1YmVNYXA6OnNldEltYWdlTmVnWSk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1
YmVNYXA6OnNldEltYWdlUG9zWik6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnNldElt
YWdlTmVnWik6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OnNldENvbXByZXNzZWRJbWFn
ZSk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmNvbW1pdFJlY3QpOgorICAgICAgICAo
Z2w6OlRleHR1cmVDdWJlTWFwOjpzdWJJbWFnZSk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVN
YXA6OnN1YkltYWdlQ29tcHJlc3NlZCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6Omlz
U2FtcGxlckNvbXBsZXRlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6aXNDdWJlQ29t
cGxldGUpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjppc01pcG1hcEN1YmVDb21wbGV0
ZSk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmlzQ29tcHJlc3NlZCk6CisgICAgICAg
IChnbDo6VGV4dHVyZUN1YmVNYXA6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoZ2w6OlRleHR1
cmVDdWJlTWFwOjp1cGRhdGVUZXh0dXJlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6
Y29udmVydFRvUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c2V0
SW1hZ2UpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpmYWNlSW5kZXgpOgorICAgICAg
ICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpyZWRlZmluZUltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0
dXJlQ3ViZU1hcDo6Y29weUltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6Y29w
eVN1YkltYWdlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6c3RvcmFnZSk6CisgICAg
ICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6OmdlbmVyYXRlTWlwbWFwcyk6CisgICAgICAgIChnbDo6
VGV4dHVyZUN1YmVNYXA6OmdldFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChnbDo6VGV4dHVyZUN1
YmVNYXA6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1YmVNYXA6Omxl
dmVsQ291bnQpOgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpnZXRTdG9yYWdlKToKKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL1RleHR1cmUuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xp
YkdMRVN2Mi9Vbmlmb3JtLmNwcDogQWRkZWQuCisgICAgICAgIChnbDo6VW5pZm9ybTo6VW5pZm9y
bSk6CisgICAgICAgIChnbDo6VW5pZm9ybTo6flVuaWZvcm0pOgorICAgICAgICAoZ2w6OlVuaWZv
cm06OmlzQXJyYXkpOgorICAgICAgICAoZ2w6OlVuaWZvcm06OmVsZW1lbnRDb3VudCk6CisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9Vbmlmb3JtLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJH
TEVTdjIvYW5nbGV0eXBlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2NvbnN0
YW50cy5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5jcHA6IEFk
ZGVkLgorICAgICAgICAodmFsaWRJbWFnZVNpemUpOgorICAgICAgICAoY2hlY2tUZXh0dXJlRm9y
bWF0VHlwZSk6CisgICAgICAgICh2YWxpZGF0ZVN1YkltYWdlUGFyYW1zMkQpOgorICAgICAgICAo
dmFsaWRhdGVTdWJJbWFnZVBhcmFtc0N1YmUpOgorICAgICAgICAodmFsaWRSZWFkRm9ybWF0VHlw
ZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVmOiBBZGRlZC4KKyAgICAg
ICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYzogQWRkZWQuCisgICAgICAgICogc3JjL2xp
YkdMRVN2Mi9saWJHTEVTdjIudmN4cHJvajogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9saWJHTEVTdjIudmN4cHJvai5maWx0ZXJzOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL21haW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKERsbE1haW4pOgorICAgICAgICAoZ2w6Om1h
a2VDdXJyZW50KToKKyAgICAgICAgKGdsOjpnZXRDb250ZXh0KToKKyAgICAgICAgKGdsOjpnZXRO
b25Mb3N0Q29udGV4dCk6CisgICAgICAgIChnbDo6Z2V0RGlzcGxheSk6CisgICAgICAgIChnbDo6
ZXJyb3IpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvbWFpbi5oOiBBZGRlZC4KKyAgICAgICAg
KGdsOjplcnJvcik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9tYXRodXRpbC5oOiBBZGRlZC4K
KyAgICAgICAgKGdsOjpWZWN0b3I0OjpWZWN0b3I0KToKKyAgICAgICAgKGdsOjppc1BvdzIpOgor
ICAgICAgICAoZ2w6OmxvZzIpOgorICAgICAgICAoZ2w6OmNlaWxQb3cyKToKKyAgICAgICAgKGds
OjpjbGFtcCk6CisgICAgICAgIChnbDo6Y2xhbXAwMSk6CisgICAgICAgIChnbDo6dW5vcm0pOgor
ICAgICAgICAoZ2w6OnN1cHBvcnRzU1NFMik6CisgICAgICAgIChnbDo6ZmxvYXQzMlRvRmxvYXQx
Nik6CisgICAgICAgIChyeDo6UmFuZ2U6OlJhbmdlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3Yy
L3ByZWNvbXBpbGVkLmNwcDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9wcmVjb21w
aWxlZC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKHJ4OjpCbGl0OjpCbGl0KToKKyAgICAgICAgKHJ4OjpCbGl0Ojp+QmxpdCk6CisgICAgICAg
IChyeDo6QmxpdDo6aW5pdEdlb21ldHJ5KToKKyAgICAgICAgKHJ4OjpCbGl0OjpzZXRTaGFkZXIp
OgorICAgICAgICAocng6OkJsaXQ6OnNldFZlcnRleFNoYWRlcik6CisgICAgICAgIChyeDo6Qmxp
dDo6c2V0UGl4ZWxTaGFkZXIpOgorICAgICAgICAocng6OkJsaXQ6OmdldFN1cmZhY2VSZWN0KToK
KyAgICAgICAgKHJ4OjpCbGl0Ojpib3hGaWx0ZXIpOgorICAgICAgICAocng6OkJsaXQ6OmNvcHkp
OgorICAgICAgICAocng6OkJsaXQ6OmZvcm1hdENvbnZlcnQpOgorICAgICAgICAocng6OkJsaXQ6
OnNldEZvcm1hdENvbnZlcnRTaGFkZXJzKToKKyAgICAgICAgKHJ4OjpCbGl0Ojpjb3B5U3VyZmFj
ZVRvVGV4dHVyZSk6CisgICAgICAgIChyeDo6QmxpdDo6c2V0Vmlld3BvcnQpOgorICAgICAgICAo
cng6OkJsaXQ6OnNldENvbW1vbkJsaXRTdGF0ZSk6CisgICAgICAgIChyeDo6QmxpdDo6cmVuZGVy
KToKKyAgICAgICAgKHJ4OjpCbGl0OjpzYXZlU3RhdGUpOgorICAgICAgICAocng6OkJsaXQ6OnJl
c3RvcmVTdGF0ZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CbGl0Lmg6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZS5jcHA6
IEFkZGVkLgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2U6OkJ1ZmZlclN0b3JhZ2UpOgorICAg
ICAgICAocng6OkJ1ZmZlclN0b3JhZ2U6On5CdWZmZXJTdG9yYWdlKToKKyAgICAgICAgKHJ4OjpC
dWZmZXJTdG9yYWdlOjpnZXRTZXJpYWwpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2U6OnVw
ZGF0ZVNlcmlhbCk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTo6bWFya0J1ZmZlclVzYWdl
KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2UuaDogQWRk
ZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlMTE6OkJ1ZmZlclN0b3JhZ2UxMSk6
CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTExOjp+QnVmZmVyU3RvcmFnZTExKToKKyAgICAg
ICAgKHJ4OjpCdWZmZXJTdG9yYWdlMTE6Om1ha2VCdWZmZXJTdG9yYWdlMTEpOgorICAgICAgICAo
cng6OkJ1ZmZlclN0b3JhZ2UxMTo6Z2V0RGF0YSk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFn
ZTExOjpzZXREYXRhKToKKyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlMTE6OmNsZWFyKToKKyAg
ICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlMTE6OmdldFNpemUpOgorICAgICAgICAocng6OkJ1ZmZl
clN0b3JhZ2UxMTo6c3VwcG9ydHNEaXJlY3RCaW5kaW5nKToKKyAgICAgICAgKHJ4OjpCdWZmZXJT
dG9yYWdlMTE6Om1hcmtCdWZmZXJVc2FnZSk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTEx
OjpnZXRCdWZmZXIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3Rv
cmFnZTExLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVy
U3RvcmFnZTkuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlOTo6QnVmZmVy
U3RvcmFnZTkpOgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2U5Ojp+QnVmZmVyU3RvcmFnZTkp
OgorICAgICAgICAocng6OkJ1ZmZlclN0b3JhZ2U5OjptYWtlQnVmZmVyU3RvcmFnZTkpOgorICAg
ICAgICAocng6OkJ1ZmZlclN0b3JhZ2U5OjpnZXREYXRhKToKKyAgICAgICAgKHJ4OjpCdWZmZXJT
dG9yYWdlOTo6c2V0RGF0YSk6CisgICAgICAgIChyeDo6QnVmZmVyU3RvcmFnZTk6OmNsZWFyKToK
KyAgICAgICAgKHJ4OjpCdWZmZXJTdG9yYWdlOTo6Z2V0U2l6ZSk6CisgICAgICAgIChyeDo6QnVm
ZmVyU3RvcmFnZTk6OnN1cHBvcnRzRGlyZWN0QmluZGluZyk6CisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGli
R0xFU3YyL3JlbmRlcmVyL0ZlbmNlMTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpGZW5jZTEx
OjpGZW5jZTExKToKKyAgICAgICAgKHJ4OjpGZW5jZTExOjp+RmVuY2UxMSk6CisgICAgICAgIChy
eDo6RmVuY2UxMTo6aXNGZW5jZSk6CisgICAgICAgIChyeDo6RmVuY2UxMTo6c2V0RmVuY2UpOgor
ICAgICAgICAocng6OkZlbmNlMTE6OnRlc3RGZW5jZSk6CisgICAgICAgIChyeDo6RmVuY2UxMTo6
ZmluaXNoRmVuY2UpOgorICAgICAgICAocng6OkZlbmNlMTE6OmdldEZlbmNlaXYpOgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2UxMS5oOiBBZGRlZC4KKyAgICAgICAgKiBz
cmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlOS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OkZl
bmNlOTo6RmVuY2U5KToKKyAgICAgICAgKHJ4OjpGZW5jZTk6On5GZW5jZTkpOgorICAgICAgICAo
cng6OkZlbmNlOTo6aXNGZW5jZSk6CisgICAgICAgIChyeDo6RmVuY2U5OjpzZXRGZW5jZSk6Cisg
ICAgICAgIChyeDo6RmVuY2U5Ojp0ZXN0RmVuY2UpOgorICAgICAgICAocng6OkZlbmNlOTo6Zmlu
aXNoRmVuY2UpOgorICAgICAgICAocng6OkZlbmNlOTo6Z2V0RmVuY2Vpdik6CisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9GZW5jZUltcGwuaDogQWRkZWQuCisgICAgICAgIChyeDo6RmVuY2VJ
bXBsOjpGZW5jZUltcGwpOgorICAgICAgICAocng6OkZlbmNlSW1wbDo6fkZlbmNlSW1wbCk6Cisg
ICAgICAgIChyeDo6RmVuY2VJbXBsOjpzZXRTdGF0dXMpOgorICAgICAgICAocng6OkZlbmNlSW1w
bDo6Z2V0U3RhdHVzKToKKyAgICAgICAgKHJ4OjpGZW5jZUltcGw6OnNldENvbmRpdGlvbik6Cisg
ICAgICAgIChyeDo6RmVuY2VJbXBsOjpnZXRDb25kaXRpb24pOgorICAgICAgICAqIHNyYy9saWJH
TEVTdjIvcmVuZGVyZXIvSW1hZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpJbWFnZTo6SW1h
Z2UpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkQWxwaGFEYXRhVG9CR1JBKToKKyAgICAgICAg
KHJ4OjpJbWFnZTo6bG9hZEFscGhhRGF0YVRvTmF0aXZlKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6
bG9hZEFscGhhRmxvYXREYXRhVG9SR0JBKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZEFscGhh
SGFsZkZsb2F0RGF0YVRvUkdCQSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRMdW1pbmFuY2VE
YXRhVG9OYXRpdmVPckJHUkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkTHVtaW5hbmNlRmxv
YXREYXRhVG9SR0JBKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZEx1bWluYW5jZUZsb2F0RGF0
YVRvUkdCKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZEx1bWluYW5jZUhhbGZGbG9hdERhdGFU
b1JHQkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkTHVtaW5hbmNlQWxwaGFEYXRhVG9OYXRp
dmVPckJHUkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkTHVtaW5hbmNlQWxwaGFGbG9hdERh
dGFUb1JHQkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkTHVtaW5hbmNlQWxwaGFIYWxmRmxv
YXREYXRhVG9SR0JBKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQlVCeXRlRGF0YVRvQkdS
WCk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRSR0JVQnl0ZURhdGFUb1JHQkEpOgorICAgICAg
ICAocng6OkltYWdlOjpsb2FkUkdCNTY1RGF0YVRvQkdSQSk6CisgICAgICAgIChyeDo6SW1hZ2U6
OmxvYWRSR0I1NjVEYXRhVG9SR0JBKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQkZsb2F0
RGF0YVRvUkdCQSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRSR0JGbG9hdERhdGFUb05hdGl2
ZSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRSR0JIYWxmRmxvYXREYXRhVG9SR0JBKToKKyAg
ICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQkFVQnl0ZURhdGFUb0JHUkEpOgorICAgICAgICAocng6
OkltYWdlOjpsb2FkUkdCQVVCeXRlRGF0YVRvTmF0aXZlKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6
bG9hZFJHQkE0NDQ0RGF0YVRvQkdSQSk6CisgICAgICAgIChyeDo6SW1hZ2U6OmxvYWRSR0JBNDQ0
NERhdGFUb1JHQkEpOgorICAgICAgICAocng6OkltYWdlOjpsb2FkUkdCQTU1NTFEYXRhVG9CR1JB
KToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9hZFJHQkE1NTUxRGF0YVRvUkdCQSk6CisgICAgICAg
IChyeDo6SW1hZ2U6OmxvYWRSR0JBRmxvYXREYXRhVG9SR0JBKToKKyAgICAgICAgKHJ4OjpJbWFn
ZTo6bG9hZFJHQkFIYWxmRmxvYXREYXRhVG9SR0JBKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bG9h
ZEJHUkFEYXRhVG9CR1JBKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdl
Lmg6IEFkZGVkLgorICAgICAgICAocng6OkltYWdlOjp+SW1hZ2UpOgorICAgICAgICAocng6Oklt
YWdlOjpnZXRXaWR0aCk6CisgICAgICAgIChyeDo6SW1hZ2U6OmdldEhlaWdodCk6CisgICAgICAg
IChyeDo6SW1hZ2U6OmdldEludGVybmFsRm9ybWF0KToKKyAgICAgICAgKHJ4OjpJbWFnZTo6Z2V0
QWN0dWFsRm9ybWF0KToKKyAgICAgICAgKHJ4OjpJbWFnZTo6bWFya0RpcnR5KToKKyAgICAgICAg
KHJ4OjpJbWFnZTo6bWFya0NsZWFuKToKKyAgICAgICAgKHJ4OjpJbWFnZTo6c2V0TWFuYWdlZFN1
cmZhY2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UxMS5jcHA6IEFk
ZGVkLgorICAgICAgICAocng6OkltYWdlMTE6OkltYWdlMTEpOgorICAgICAgICAocng6OkltYWdl
MTE6On5JbWFnZTExKToKKyAgICAgICAgKHJ4OjpJbWFnZTExOjptYWtlSW1hZ2UxMSk6CisgICAg
ICAgIChyeDo6SW1hZ2UxMTo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAocng6OkltYWdlMTE6
OmlzRGlydHkpOgorICAgICAgICAocng6OkltYWdlMTE6OnVwZGF0ZVN1cmZhY2UpOgorICAgICAg
ICAocng6OkltYWdlMTE6OnJlZGVmaW5lKToKKyAgICAgICAgKHJ4OjpJbWFnZTExOjppc1JlbmRl
cmFibGVGb3JtYXQpOgorICAgICAgICAocng6OkltYWdlMTE6OmdldERYR0lGb3JtYXQpOgorICAg
ICAgICAocng6OkltYWdlMTE6OmxvYWREYXRhKToKKyAgICAgICAgKHJ4OjpJbWFnZTExOjpsb2Fk
Q29tcHJlc3NlZERhdGEpOgorICAgICAgICAocng6OkltYWdlMTE6OmNvcHkpOgorICAgICAgICAo
cng6OkltYWdlMTE6OmdldFN0YWdpbmdUZXh0dXJlKToKKyAgICAgICAgKHJ4OjpJbWFnZTExOjpn
ZXRTdGFnaW5nU3VicmVzb3VyY2UpOgorICAgICAgICAocng6OkltYWdlMTE6OmNyZWF0ZVN0YWdp
bmdUZXh0dXJlKToKKyAgICAgICAgKHJ4OjpJbWFnZTExOjptYXApOgorICAgICAgICAocng6Oklt
YWdlMTE6OnVubWFwKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEu
aDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKHJ4OjpJbWFnZTk6OkltYWdlOSk6CisgICAgICAgIChyeDo6SW1hZ2U5
Ojp+SW1hZ2U5KToKKyAgICAgICAgKHJ4OjpJbWFnZTk6OmdlbmVyYXRlTWlwKToKKyAgICAgICAg
KHJ4OjpJbWFnZTk6Om1ha2VJbWFnZTkpOgorICAgICAgICAocng6OkltYWdlOTo6Z2VuZXJhdGVN
aXBtYXApOgorICAgICAgICAocng6OkltYWdlOTo6Y29weUxvY2thYmxlU3VyZmFjZXMpOgorICAg
ICAgICAocng6OkltYWdlOTo6cmVkZWZpbmUpOgorICAgICAgICAocng6OkltYWdlOTo6Y3JlYXRl
U3VyZmFjZSk6CisgICAgICAgIChyeDo6SW1hZ2U5Ojpsb2NrKToKKyAgICAgICAgKHJ4OjpJbWFn
ZTk6OnVubG9jayk6CisgICAgICAgIChyeDo6SW1hZ2U5Ojppc1JlbmRlcmFibGVGb3JtYXQpOgor
ICAgICAgICAocng6OkltYWdlOTo6Z2V0RDNERm9ybWF0KToKKyAgICAgICAgKHJ4OjpJbWFnZTk6
OmdldFN1cmZhY2UpOgorICAgICAgICAocng6OkltYWdlOTo6c2V0TWFuYWdlZFN1cmZhY2UpOgor
ICAgICAgICAocng6OkltYWdlOTo6dXBkYXRlU3VyZmFjZSk6CisgICAgICAgIChyeDo6SW1hZ2U5
Ojpsb2FkRGF0YSk6CisgICAgICAgIChyeDo6SW1hZ2U5Ojpsb2FkQ29tcHJlc3NlZERhdGEpOgor
ICAgICAgICAocng6OkltYWdlOTo6Y29weSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9JbWFnZTkuaDogQWRkZWQuCisgICAgICAgIChyeDo6SW1hZ2U5Ojppc0RpcnR5KToKKyAg
ICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlU1NFMi5jcHA6IEFkZGVkLgorICAg
ICAgICAocng6OkltYWdlOjpsb2FkUkdCQVVCeXRlRGF0YVRvQkdSQVNTRTIpOgorICAgICAgICAo
cng6OkltYWdlOjpsb2FkQWxwaGFEYXRhVG9CR1JBU1NFMik6CisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAocng6OkluZGV4
QnVmZmVyOjpJbmRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI6On5JbmRleEJ1
ZmZlcik6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI6OmdldFNlcmlhbCk6CisgICAgICAgIChy
eDo6SW5kZXhCdWZmZXI6OnVwZGF0ZVNlcmlhbCk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXJJ
bnRlcmZhY2U6OkluZGV4QnVmZmVySW50ZXJmYWNlKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZl
ckludGVyZmFjZTo6fkluZGV4QnVmZmVySW50ZXJmYWNlKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1
ZmZlckludGVyZmFjZTo6Z2V0SW5kZXhUeXBlKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcklu
dGVyZmFjZTo6Z2V0QnVmZmVyU2l6ZSk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXJJbnRlcmZh
Y2U6OmdldFNlcmlhbCk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXJJbnRlcmZhY2U6Om1hcEJ1
ZmZlcik6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXJJbnRlcmZhY2U6OnVubWFwQnVmZmVyKToK
KyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6Z2V0SW5kZXhCdWZmZXIpOgorICAg
ICAgICAocng6OkluZGV4QnVmZmVySW50ZXJmYWNlOjpnZXRXcml0ZVBvc2l0aW9uKToKKyAgICAg
ICAgKHJ4OjpJbmRleEJ1ZmZlckludGVyZmFjZTo6c2V0V3JpdGVQb3NpdGlvbik6CisgICAgICAg
IChyeDo6SW5kZXhCdWZmZXJJbnRlcmZhY2U6OmRpc2NhcmQpOgorICAgICAgICAocng6OkluZGV4
QnVmZmVySW50ZXJmYWNlOjpzZXRCdWZmZXJTaXplKToKKyAgICAgICAgKHJ4OjpTdHJlYW1pbmdJ
bmRleEJ1ZmZlckludGVyZmFjZTo6U3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2UpOgorICAg
ICAgICAocng6OlN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlOjp+U3RyZWFtaW5nSW5kZXhC
dWZmZXJJbnRlcmZhY2UpOgorICAgICAgICAocng6OlN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJm
YWNlOjpyZXNlcnZlQnVmZmVyU3BhY2UpOgorICAgICAgICAocng6OlN0YXRpY0luZGV4QnVmZmVy
SW50ZXJmYWNlOjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSk6CisgICAgICAgIChyeDo6U3Rh
dGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6On5TdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSk6Cisg
ICAgICAgIChyeDo6U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2VydmVCdWZmZXJTcGFj
ZSk6CisgICAgICAgIChyeDo6U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6Omxvb2t1cFJhbmdl
KToKKyAgICAgICAgKHJ4OjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZTo6YWRkUmFuZ2UpOgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXIuaDogQWRkZWQuCisg
ICAgICAgIChyeDo6U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6OkluZGV4UmFuZ2U6Om9wZXJh
dG9yPCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjExLmNw
cDogQWRkZWQuCisgICAgICAgIChyeDo6SW5kZXhCdWZmZXIxMTo6SW5kZXhCdWZmZXIxMSk6Cisg
ICAgICAgIChyeDo6SW5kZXhCdWZmZXIxMTo6fkluZGV4QnVmZmVyMTEpOgorICAgICAgICAocng6
OkluZGV4QnVmZmVyMTE6OmluaXRpYWxpemUpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyMTE6
Om1ha2VJbmRleEJ1ZmZlcjExKToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjExOjptYXBCdWZm
ZXIpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyMTE6OnVubWFwQnVmZmVyKToKKyAgICAgICAg
KHJ4OjpJbmRleEJ1ZmZlcjExOjpnZXRJbmRleFR5cGUpOgorICAgICAgICAocng6OkluZGV4QnVm
ZmVyMTE6OmdldEJ1ZmZlclNpemUpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyMTE6OnNldFNp
emUpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyMTE6OmRpc2NhcmQpOgorICAgICAgICAocng6
OkluZGV4QnVmZmVyMTE6OmdldEluZGV4Rm9ybWF0KToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZl
cjExOjpnZXRCdWZmZXIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhC
dWZmZXIxMS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4
QnVmZmVyOS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OkluZGV4QnVmZmVyOTo6SW5kZXhCdWZm
ZXI5KToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjk6On5JbmRleEJ1ZmZlcjkpOgorICAgICAg
ICAocng6OkluZGV4QnVmZmVyOTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChyeDo6SW5kZXhCdWZm
ZXI5OjptYWtlSW5kZXhCdWZmZXI5KToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjk6Om1hcEJ1
ZmZlcik6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI5Ojp1bm1hcEJ1ZmZlcik6CisgICAgICAg
IChyeDo6SW5kZXhCdWZmZXI5OjpnZXRJbmRleFR5cGUpOgorICAgICAgICAocng6OkluZGV4QnVm
ZmVyOTo6Z2V0QnVmZmVyU2l6ZSk6CisgICAgICAgIChyeDo6SW5kZXhCdWZmZXI5OjpzZXRTaXpl
KToKKyAgICAgICAgKHJ4OjpJbmRleEJ1ZmZlcjk6OmRpc2NhcmQpOgorICAgICAgICAocng6Oklu
ZGV4QnVmZmVyOTo6Z2V0SW5kZXhGb3JtYXQpOgorICAgICAgICAocng6OkluZGV4QnVmZmVyOTo6
Z2V0QnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVy
OS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0YU1h
bmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpJbmRleERhdGFNYW5hZ2VyOjpJbmRleERh
dGFNYW5hZ2VyKToKKyAgICAgICAgKHJ4OjpJbmRleERhdGFNYW5hZ2VyOjp+SW5kZXhEYXRhTWFu
YWdlcik6CisgICAgICAgIChyeDo6aW5kZXhUeXBlU2l6ZSk6CisgICAgICAgIChyeDo6Y29udmVy
dEluZGljZXMpOgorICAgICAgICAocng6OmNvbXB1dGVSYW5nZSk6CisgICAgICAgIChyeDo6SW5k
ZXhEYXRhTWFuYWdlcjo6cHJlcGFyZUluZGV4RGF0YSk6CisgICAgICAgIChyeDo6SW5kZXhEYXRh
TWFuYWdlcjo6Z2V0Q291bnRpbmdJbmRpY2VzKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9JbnB1dExheW91dENhY2hlLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6SW5w
dXRMYXlvdXRDYWNoZTo6SW5wdXRMYXlvdXRDYWNoZSk6CisgICAgICAgIChyeDo6SW5wdXRMYXlv
dXRDYWNoZTo6fklucHV0TGF5b3V0Q2FjaGUpOgorICAgICAgICAocng6OklucHV0TGF5b3V0Q2Fj
aGU6OmluaXRpYWxpemUpOgorICAgICAgICAocng6OklucHV0TGF5b3V0Q2FjaGU6OmNsZWFyKToK
KyAgICAgICAgKHJ4OjpJbnB1dExheW91dENhY2hlOjphcHBseVZlcnRleEJ1ZmZlcnMpOgorICAg
ICAgICAocng6OklucHV0TGF5b3V0Q2FjaGU6Omhhc2hJbnB1dExheW91dCk6CisgICAgICAgIChy
eDo6SW5wdXRMYXlvdXRDYWNoZTo6Y29tcGFyZUlucHV0TGF5b3V0cyk6CisgICAgICAgICogc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9JbnB1dExheW91dENhY2hlLmg6IEFkZGVkLgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnkxMS5jcHA6IEFkZGVkLgorICAgICAgICAocng6
OlF1ZXJ5MTE6OlF1ZXJ5MTEpOgorICAgICAgICAocng6OlF1ZXJ5MTE6On5RdWVyeTExKToKKyAg
ICAgICAgKHJ4OjpRdWVyeTExOjpiZWdpbik6CisgICAgICAgIChyeDo6UXVlcnkxMTo6ZW5kKToK
KyAgICAgICAgKHJ4OjpRdWVyeTExOjpnZXRSZXN1bHQpOgorICAgICAgICAocng6OlF1ZXJ5MTE6
OmlzUmVzdWx0QXZhaWxhYmxlKToKKyAgICAgICAgKHJ4OjpRdWVyeTExOjp0ZXN0UXVlcnkpOgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnkxMS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5OS5jcHA6IEFkZGVkLgorICAgICAgICAo
cng6OlF1ZXJ5OTo6UXVlcnk5KToKKyAgICAgICAgKHJ4OjpRdWVyeTk6On5RdWVyeTkpOgorICAg
ICAgICAocng6OlF1ZXJ5OTo6YmVnaW4pOgorICAgICAgICAocng6OlF1ZXJ5OTo6ZW5kKToKKyAg
ICAgICAgKHJ4OjpRdWVyeTk6OmdldFJlc3VsdCk6CisgICAgICAgIChyeDo6UXVlcnk5Ojppc1Jl
c3VsdEF2YWlsYWJsZSk6CisgICAgICAgIChyeDo6UXVlcnk5Ojp0ZXN0UXVlcnkpOgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnk5Lmg6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnlJbXBsLmg6IEFkZGVkLgorICAgICAgICAocng6OlF1
ZXJ5SW1wbDo6UXVlcnlJbXBsKToKKyAgICAgICAgKHJ4OjpRdWVyeUltcGw6On5RdWVyeUltcGwp
OgorICAgICAgICAocng6OlF1ZXJ5SW1wbDo6Z2V0VHlwZSk6CisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9SZW5kZXJTdGF0ZUNhY2hlLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6
UmVuZGVyU3RhdGVDYWNoZTo6UmVuZGVyU3RhdGVDYWNoZSk6CisgICAgICAgIChyeDo6UmVuZGVy
U3RhdGVDYWNoZTo6flJlbmRlclN0YXRlQ2FjaGUpOgorICAgICAgICAocng6OlJlbmRlclN0YXRl
Q2FjaGU6OmluaXRpYWxpemUpOgorICAgICAgICAocng6OlJlbmRlclN0YXRlQ2FjaGU6OmNsZWFy
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpoYXNoQmxlbmRTdGF0ZSk6CisgICAg
ICAgIChyeDo6UmVuZGVyU3RhdGVDYWNoZTo6Y29tcGFyZUJsZW5kU3RhdGVzKToKKyAgICAgICAg
KHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpnZXRCbGVuZFN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJTdGF0ZUNhY2hlOjpoYXNoUmFzdGVyaXplclN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJT
dGF0ZUNhY2hlOjpjb21wYXJlUmFzdGVyaXplclN0YXRlcyk6CisgICAgICAgIChyeDo6UmVuZGVy
U3RhdGVDYWNoZTo6Z2V0UmFzdGVyaXplclN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0
ZUNhY2hlOjpoYXNoRGVwdGhTdGVuY2lsU3RhdGUpOgorICAgICAgICAocng6OlJlbmRlclN0YXRl
Q2FjaGU6OmNvbXBhcmVEZXB0aFN0ZW5jaWxTdGF0ZXMpOgorICAgICAgICAocng6OlJlbmRlclN0
YXRlQ2FjaGU6OmdldERlcHRoU3RlbmNpbFN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0
ZUNhY2hlOjpoYXNoU2FtcGxlclN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hl
Ojpjb21wYXJlU2FtcGxlclN0YXRlcyk6CisgICAgICAgIChyeDo6UmVuZGVyU3RhdGVDYWNoZTo6
Z2V0U2FtcGxlclN0YXRlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRl
clN0YXRlQ2FjaGUuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9S
ZW5kZXJUYXJnZXQuaDogQWRkZWQuCisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0OjpSZW5kZXJU
YXJnZXQpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDo6flJlbmRlclRhcmdldCk6CisgICAg
ICAgIChyeDo6UmVuZGVyVGFyZ2V0OjpnZXRXaWR0aCk6CisgICAgICAgIChyeDo6UmVuZGVyVGFy
Z2V0OjpnZXRIZWlnaHQpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDo6Z2V0SW50ZXJuYWxG
b3JtYXQpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDo6Z2V0QWN0dWFsRm9ybWF0KToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQ6OmdldFNhbXBsZXMpOgorICAgICAgICAqIHNyYy9saWJH
TEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4Ojpn
ZXRSVFZTdWJyZXNvdXJjZUluZGV4KToKKyAgICAgICAgKHJ4OjpnZXREU1ZTdWJyZXNvdXJjZUlu
ZGV4KToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQxMTo6UmVuZGVyVGFyZ2V0MTEpOgorICAg
ICAgICAocng6OlJlbmRlclRhcmdldDExOjp+UmVuZGVyVGFyZ2V0MTEpOgorICAgICAgICAocng6
OlJlbmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEpOgorICAgICAgICAocng6OlJlbmRl
clRhcmdldDExOjpnZXRUZXh0dXJlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXQxMTo6Z2V0
UmVuZGVyVGFyZ2V0Vmlldyk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0MTE6OmdldERlcHRo
U3RlbmNpbFZpZXcpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDExOjpnZXRTaGFkZXJSZXNv
dXJjZVZpZXcpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldDExOjpnZXRTdWJyZXNvdXJjZUlu
ZGV4KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDExLmg6
IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0OS5j
cHA6IEFkZGVkLgorICAgICAgICAocng6OlJlbmRlclRhcmdldDk6OlJlbmRlclRhcmdldDkpOgor
ICAgICAgICAocng6OlJlbmRlclRhcmdldDk6On5SZW5kZXJUYXJnZXQ5KToKKyAgICAgICAgKHJ4
OjpSZW5kZXJUYXJnZXQ5OjptYWtlUmVuZGVyVGFyZ2V0OSk6CisgICAgICAgIChyeDo6UmVuZGVy
VGFyZ2V0OTo6Z2V0U3VyZmFjZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9S
ZW5kZXJUYXJnZXQ5Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpSZW5kZXJlcjo6UmVuZGVyZXIpOgor
ICAgICAgICAocng6OlJlbmRlcmVyOjp+UmVuZGVyZXIpOgorICAgICAgICAocng6OlJlbmRlcmVy
Ojppbml0aWFsaXplQ29tcGlsZXIpOgorICAgICAgICAocng6OlJlbmRlcmVyOjpjb21waWxlVG9C
aW5hcnkpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaDogQWRk
ZWQuCisgICAgICAgIChnZXRDb21wYXJhYmxlT1NWZXJzaW9uKToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjo6Z2V0VmVydGV4VGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
cmVuZGVyZXIvUmVuZGVyZXIxMS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OlJlbmRlcmVyMTE6
OlJlbmRlcmVyMTEpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6On5SZW5kZXJlcjExKToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJlcjExOjptYWtlUmVuZGVyZXIxMSk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXIxMTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6aW5pdGlhbGl6
ZURldmljZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2VuZXJhdGVDb25maWdzKToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJlcjExOjpkZWxldGVDb25maWdzKToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjExOjpzeW5jKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjcmVhdGVTd2FwQ2hhaW4p
OgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OnNldFNhbXBsZXJTdGF0ZSk6CisgICAgICAgIChy
eDo6UmVuZGVyZXIxMTo6c2V0VGV4dHVyZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6c2V0
UmFzdGVyaXplclN0YXRlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpzZXRCbGVuZFN0YXRl
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpzZXREZXB0aFN0ZW5jaWxTdGF0ZSk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXIxMTo6c2V0U2Npc3NvclJlY3RhbmdsZSk6CisgICAgICAgIChyeDo6
UmVuZGVyZXIxMTo6c2V0Vmlld3BvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmFwcGx5
UHJpbWl0aXZlVHlwZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6YXBwbHlSZW5kZXJUYXJn
ZXQpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmFwcGx5VmVydGV4QnVmZmVyKToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjExOjphcHBseUluZGV4QnVmZmVyKToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjExOjpkcmF3QXJyYXlzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpkcmF3RWxlbWVu
dHMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmRyYXdMaW5lTG9vcCk6CisgICAgICAgIChy
eDo6UmVuZGVyZXIxMTo6ZHJhd1RyaWFuZ2xlRmFuKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjEx
OjphcHBseVNoYWRlcnMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmFwcGx5VW5pZm9ybXMp
OgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmNsZWFyKToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjExOjptYXNrZWRDbGVhcik6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6bWFya0FsbFN0YXRl
RGlydHkpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OnJlbGVhc2VEZXZpY2VSZXNvdXJjZXMp
OgorICAgICAgICAocng6OlJlbmRlcmVyMTE6Om5vdGlmeURldmljZUxvc3QpOgorICAgICAgICAo
cng6OlJlbmRlcmVyMTE6OmlzRGV2aWNlTG9zdCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6
dGVzdERldmljZUxvc3QpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OnRlc3REZXZpY2VSZXNl
dHRhYmxlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpyZWxlYXNlKToKKyAgICAgICAgKHJ4
OjpSZW5kZXJlcjExOjpyZXNldERldmljZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0
QWRhcHRlclZlbmRvcik6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0UmVuZGVyZXJEZXNj
cmlwdGlvbik6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0QWRhcHRlcklkZW50aWZpZXIp
OgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldEJHUkFUZXh0dXJlU3VwcG9ydCk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0RFhUMVRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4
OjpSZW5kZXJlcjExOjpnZXREWFQzVGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OmdldERYVDVUZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6
Z2V0RGVwdGhUZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0Rmxv
YXQzMlRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRGbG9hdDE2
VGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldEx1bWluYW5jZVRl
eHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRMdW1pbmFuY2VBbHBo
YVRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRUZXh0dXJlRmls
dGVyQW5pc290cm9weVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldFRleHR1
cmVNYXhBbmlzb3Ryb3B5KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRFdmVudFF1ZXJ5
U3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0Vmlld3BvcnRCb3VuZHMpOgor
ICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldE1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRNYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRz
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0
b3JzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9y
bVZlY3RvcnMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldE1heFZlcnRleFVuaWZvcm1W
ZWN0b3JzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRNYXhGcmFnbWVudFVuaWZvcm1W
ZWN0b3JzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRNYXhWYXJ5aW5nVmVjdG9ycyk6
CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQpOgor
ICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydCk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0SW5zdGFuY2luZ1N1cHBvcnQpOgorICAgICAgICAocng6
OlJlbmRlcmVyMTE6OmdldFNoYXJlSGFuZGxlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXIxMTo6Z2V0RGVyaXZhdGl2ZUluc3RydWN0aW9uU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXIxMTo6Z2V0UG9zdFN1YkJ1ZmZlclN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVy
MTE6OmdldE1ham9yU2hhZGVyTW9kZWwpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldE1p
bm9yU2hhZGVyTW9kZWwpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldE1heFBvaW50U2l6
ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0TWF4Vmlld3BvcnREaW1lbnNpb24pOgor
ICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldE1heFRleHR1cmVXaWR0aCk6CisgICAgICAgIChy
eDo6UmVuZGVyZXIxMTo6Z2V0TWF4VGV4dHVyZUhlaWdodCk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXIxMTo6Z2V0MzJCaXRJbmRleFN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6Omdl
dE1pblN3YXBJbnRlcnZhbCk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0TWF4U3dhcElu
dGVydmFsKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRNYXhTdXBwb3J0ZWRTYW1wbGVz
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXROZWFyZXN0U3VwcG9ydGVkU2FtcGxlcyk6
CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Z2V0TWF4UmVuZGVyVGFyZ2V0cyk6CisgICAgICAg
IChyeDo6UmVuZGVyZXIxMTo6Y29weVRvUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjExOjpjb3B5SW1hZ2UpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmNvcHlUZXh0dXJl
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjp1bmFwcGx5UmVuZGVyVGFyZ2V0cyk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXIxMTo6c2V0T25lVGltZVJlbmRlclRhcmdldCk6CisgICAgICAgIChy
eDo6UmVuZGVyZXIxMTo6Y3JlYXRlUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjExOjpsb2FkRXhlY3V0YWJsZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y29tcGlsZVRv
RXhlY3V0YWJsZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6Y3JlYXRlVmVydGV4QnVmZmVy
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpjcmVhdGVJbmRleEJ1ZmZlcik6CisgICAgICAg
IChyeDo6UmVuZGVyZXIxMTo6Y3JlYXRlQnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXIxMTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmNyZWF0ZUZl
bmNlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZXRSZW5kZXJUYXJnZXRSZXNvdXJjZSk6
CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6YmxpdFJlY3QpOgorICAgICAgICAocng6OlJlbmRl
cmVyMTE6OnJlYWRQaXhlbHMpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmNyZWF0ZUltYWdl
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChy
eDo6UmVuZGVyZXIxMTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2UyRCk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXIxMTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2VDdWJlKToKKyAgICAgICAgKHJ4OjpnZXRGYXN0
UGl4ZWxDb3B5U2l6ZSk6CisgICAgICAgIChyeDo6cmVhZFBpeGVsQ29sb3IpOgorICAgICAgICAo
cng6OndyaXRlUGl4ZWxDb2xvcik6CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6cmVhZFRleHR1
cmVEYXRhKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjExOjpibGl0UmVuZGVyYnVmZmVyUmVjdCk6
CisgICAgICAgIChyeDo6UmVuZGVyZXIxMTo6cmVzb2x2ZU11bHRpc2FtcGxlZFRleHR1cmUpOgor
ICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldExVSUQpOgorICAgICAgICAqIHNyYy9saWJHTEVT
djIvcmVuZGVyZXIvUmVuZGVyZXIxMS5oOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpSZW5kZXJlcjEx
OjpnZXREZXZpY2UpOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldERldmljZUNvbnRleHQp
OgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmdldER4Z2lGYWN0b3J5KToKKyAgICAgICAgKiBz
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5jcHA6IEFkZGVkLgorICAgICAgICAocng6
OlJlbmRlcmVyOTo6UmVuZGVyZXI5KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6On5SZW5kZXJl
cjkpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6bWFrZVJlbmRlcmVyOSk6CisgICAgICAgIChy
eDo6UmVuZGVyZXI5Ojppbml0aWFsaXplKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmluaXRp
YWxpemVEZXZpY2UpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0RGVmYXVsdFByZXNlbnRQ
YXJhbWV0ZXJzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdlbmVyYXRlQ29uZmlncyk6Cisg
ICAgICAgIChyeDo6UmVuZGVyZXI5OjpkZWxldGVDb25maWdzKToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjk6OnN0YXJ0U2NlbmUpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6ZW5kU2NlbmUpOgor
ICAgICAgICAocng6OlJlbmRlcmVyOTo6c3luYyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpj
cmVhdGVTd2FwQ2hhaW4pOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6YWxsb2NhdGVFdmVudFF1
ZXJ5KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmZyZWVFdmVudFF1ZXJ5KToKKyAgICAgICAg
KHJ4OjpSZW5kZXJlcjk6OmNyZWF0ZVZlcnRleFNoYWRlcik6CisgICAgICAgIChyeDo6UmVuZGVy
ZXI5OjpjcmVhdGVQaXhlbFNoYWRlcik6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpjcmVhdGVW
ZXJ0ZXhCdWZmZXIpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Y3JlYXRlSW5kZXhCdWZmZXIp
OgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Y3JlYXRlQnVmZmVyU3RvcmFnZSk6CisgICAgICAg
IChyeDo6UmVuZGVyZXI5OjpjcmVhdGVRdWVyeSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpj
cmVhdGVGZW5jZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpzZXRTYW1wbGVyU3RhdGUpOgor
ICAgICAgICAocng6OlJlbmRlcmVyOTo6c2V0VGV4dHVyZSk6CisgICAgICAgIChyeDo6UmVuZGVy
ZXI5OjpzZXRSYXN0ZXJpemVyU3RhdGUpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6c2V0Qmxl
bmRTdGF0ZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpzZXREZXB0aFN0ZW5jaWxTdGF0ZSk6
CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpzZXRTY2lzc29yUmVjdGFuZ2xlKToKKyAgICAgICAg
KHJ4OjpSZW5kZXJlcjk6OnNldFZpZXdwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmFw
cGx5UHJpbWl0aXZlVHlwZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXROdWxsQ29sb3Ji
dWZmZXIpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6YXBwbHlSZW5kZXJUYXJnZXQpOgorICAg
ICAgICAocng6OlJlbmRlcmVyOTo6YXBwbHlWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAocng6OlJl
bmRlcmVyOTo6YXBwbHlJbmRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpkcmF3
QXJyYXlzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmRyYXdFbGVtZW50cyk6CisgICAgICAg
IChyeDo6UmVuZGVyZXI5OjpkcmF3TGluZUxvb3ApOgorICAgICAgICAocng6OmRyYXdQb2ludHMp
OgorICAgICAgICAocng6OlJlbmRlcmVyOTo6ZHJhd0luZGV4ZWRQb2ludHMpOgorICAgICAgICAo
cng6OlJlbmRlcmVyOTo6YXBwbHlTaGFkZXJzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmFw
cGx5VW5pZm9ybXMpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6YXBwbHlVbmlmb3JtbmZ2KToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmFwcGx5VW5pZm9ybW5pdik6CisgICAgICAgIChyeDo6
UmVuZGVyZXI5OjphcHBseVVuaWZvcm1uYnYpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Y2xl
YXIpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6bWFya0FsbFN0YXRlRGlydHkpOgorICAgICAg
ICAocng6OlJlbmRlcmVyOTo6cmVsZWFzZURldmljZVJlc291cmNlcyk6CisgICAgICAgIChyeDo6
UmVuZGVyZXI5Ojpub3RpZnlEZXZpY2VMb3N0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6Omlz
RGV2aWNlTG9zdCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojp0ZXN0RGV2aWNlTG9zdCk6Cisg
ICAgICAgIChyeDo6UmVuZGVyZXI5Ojp0ZXN0RGV2aWNlUmVzZXR0YWJsZSk6CisgICAgICAgIChy
eDo6UmVuZGVyZXI5OjpyZXNldERldmljZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRB
ZGFwdGVyVmVuZG9yKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldFJlbmRlcmVyRGVzY3Jp
cHRpb24pOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0QWRhcHRlcklkZW50aWZpZXIpOgor
ICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0TXVsdGlTYW1wbGVTdXBwb3J0KToKKyAgICAgICAg
KHJ4OjpSZW5kZXJlcjk6OmdldEJHUkFUZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXI5OjpnZXREWFQxVGV4dHVyZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6
Z2V0RFhUM1RleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldERYVDVU
ZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXREZXB0aFRleHR1cmVT
dXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldEZsb2F0MzJUZXh0dXJlU3VwcG9y
dCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRGbG9hdDE2VGV4dHVyZVN1cHBvcnQpOgor
ICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0THVtaW5hbmNlVGV4dHVyZVN1cHBvcnQpOgorICAg
ICAgICAocng6OlJlbmRlcmVyOTo6Z2V0THVtaW5hbmNlQWxwaGFUZXh0dXJlU3VwcG9ydCk6Cisg
ICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRUZXh0dXJlRmlsdGVyQW5pc290cm9weVN1cHBvcnQp
OgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0VGV4dHVyZU1heEFuaXNvdHJvcHkpOgorICAg
ICAgICAocng6OlJlbmRlcmVyOTo6Z2V0RXZlbnRRdWVyeVN1cHBvcnQpOgorICAgICAgICAocng6
OlJlbmRlcmVyOTo6Z2V0TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOgorICAgICAgICAocng6
OlJlbmRlcmVyOTo6Z2V0TWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk6CisgICAgICAgIChy
eDo6UmVuZGVyZXI5OjpnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKToKKyAgICAgICAg
KHJ4OjpSZW5kZXJlcjk6OmdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycyk6CisgICAg
ICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyk6CisgICAgICAg
IChyeDo6UmVuZGVyZXI5OjpnZXRNYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKToKKyAgICAgICAg
KHJ4OjpSZW5kZXJlcjk6OmdldE1heFZhcnlpbmdWZWN0b3JzKToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJlcjk6OmdldE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjk6OmdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5Ojpn
ZXRJbnN0YW5jaW5nU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRTaGFyZUhh
bmRsZVN1cHBvcnQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0RGVyaXZhdGl2ZUluc3Ry
dWN0aW9uU3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRQb3N0U3ViQnVmZmVy
U3VwcG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNYWpvclNoYWRlck1vZGVsKToK
KyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1heFBvaW50U2l6ZSk6CisgICAgICAgIChyeDo6
UmVuZGVyZXI5OjpnZXRNYXhWaWV3cG9ydERpbWVuc2lvbik6CisgICAgICAgIChyeDo6UmVuZGVy
ZXI5OjpnZXRNYXhUZXh0dXJlV2lkdGgpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0TWF4
VGV4dHVyZUhlaWdodCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXQzMkJpdEluZGV4U3Vw
cG9ydCk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRDYXBzRGVjbFR5cGVzKToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlcjk6OmdldE1pblN3YXBJbnRlcnZhbCk6CisgICAgICAgIChyeDo6UmVu
ZGVyZXI5OjpnZXRNYXhTd2FwSW50ZXJ2YWwpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0
TWF4U3VwcG9ydGVkU2FtcGxlcyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXROZWFyZXN0
U3VwcG9ydGVkU2FtcGxlcyk6CisgICAgICAgIChyeDo6UmVuZGVyZXI5OjpnZXRNYXhSZW5kZXJU
YXJnZXRzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxG
b3JtYXQpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Y29weVRvUmVuZGVyVGFyZ2V0KToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdldEJ1ZmZlclBvb2wpOgorICAgICAgICAocng6OlJlbmRl
cmVyOTo6Y29weUltYWdlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmJsaXRSZWN0KToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJlcjk6OnJlYWRQaXhlbHMpOgorICAgICAgICAocng6OlJlbmRlcmVy
OTo6Y3JlYXRlUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmxvYWRFeGVj
dXRhYmxlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmNvbXBpbGVUb0V4ZWN1dGFibGUpOgor
ICAgICAgICAocng6OlJlbmRlcmVyOTo6Ym94RmlsdGVyKToKKyAgICAgICAgKHJ4OjpSZW5kZXJl
cjk6OmdldFRleHR1cmVQb29sKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmNyZWF0ZUltYWdl
KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKHJ4
OjpSZW5kZXJlcjk6OmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQpOgorICAgICAgICAocng6OlJlbmRl
cmVyOTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2VDdWJlKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6
OmdldExVSUQpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5Lmg6
IEFkZGVkLgorICAgICAgICAocng6OlJlbmRlcmVyOTo6Z2V0RGV2aWNlKToKKyAgICAgICAgKiBz
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckNhY2hlLmg6IEFkZGVkLgorICAgICAgICAocng6
OlNoYWRlckNhY2hlOjpTaGFkZXJDYWNoZSk6CisgICAgICAgIChyeDo6U2hhZGVyQ2FjaGU6On5T
aGFkZXJDYWNoZSk6CisgICAgICAgIChyeDo6U2hhZGVyQ2FjaGU6OmluaXRpYWxpemUpOgorICAg
ICAgICAocng6OlNoYWRlckNhY2hlOjpjcmVhdGUpOgorICAgICAgICAocng6OlNoYWRlckNhY2hl
OjpjbGVhcik6CisgICAgICAgIChyeDo6U2hhZGVyQ2FjaGU6OmNyZWF0ZVNoYWRlcik6CisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlLmg6IEFkZGVkLgor
ICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGU6OlNoYWRlckV4ZWN1dGFibGUpOgorICAgICAg
ICAocng6OlNoYWRlckV4ZWN1dGFibGU6On5TaGFkZXJFeGVjdXRhYmxlKToKKyAgICAgICAgKHJ4
OjpTaGFkZXJFeGVjdXRhYmxlOjpnZXRGdW5jdGlvbik6CisgICAgICAgIChyeDo6U2hhZGVyRXhl
Y3V0YWJsZTo6Z2V0TGVuZ3RoKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1No
YWRlckV4ZWN1dGFibGUxMS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFi
bGUxMTo6U2hhZGVyRXhlY3V0YWJsZTExKToKKyAgICAgICAgKHJ4OjpTaGFkZXJFeGVjdXRhYmxl
MTE6On5TaGFkZXJFeGVjdXRhYmxlMTEpOgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGUx
MTo6bWFrZVNoYWRlckV4ZWN1dGFibGUxMSk6CisgICAgICAgIChyeDo6U2hhZGVyRXhlY3V0YWJs
ZTExOjpnZXRWZXJ0ZXhTaGFkZXIpOgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGUxMTo6
Z2V0UGl4ZWxTaGFkZXIpOgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGUxMTo6Z2V0R2Vv
bWV0cnlTaGFkZXIpOgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGUxMTo6Z2V0Q29uc3Rh
bnRCdWZmZXIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0
YWJsZTExLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVy
RXhlY3V0YWJsZTkuY3BwOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpTaGFkZXJFeGVjdXRhYmxlOTo6
U2hhZGVyRXhlY3V0YWJsZTkpOgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGU5Ojp+U2hh
ZGVyRXhlY3V0YWJsZTkpOgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGU5OjptYWtlU2hh
ZGVyRXhlY3V0YWJsZTkpOgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGU5OjpnZXRWZXJ0
ZXhTaGFkZXIpOgorICAgICAgICAocng6OlNoYWRlckV4ZWN1dGFibGU5OjpnZXRQaXhlbFNoYWRl
cik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlOS5o
OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oOiBB
ZGRlZC4KKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW46OlN3YXBDaGFpbik6CisgICAgICAgIChyeDo6
U3dhcENoYWluOjp+U3dhcENoYWluKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW46OmdldFNoYXJl
SGFuZGxlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjExLmNw
cDogQWRkZWQuCisgICAgICAgIChyeDo6U3dhcENoYWluMTE6OlN3YXBDaGFpbjExKToKKyAgICAg
ICAgKHJ4OjpTd2FwQ2hhaW4xMTo6flN3YXBDaGFpbjExKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hh
aW4xMTo6cmVsZWFzZSk6CisgICAgICAgIChyeDo6U3dhcENoYWluMTE6OnJlbGVhc2VPZmZzY3Jl
ZW5UZXh0dXJlKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6cmVzZXRPZmZzY3JlZW5UZXh0
dXJlKToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW4xMTo6cmVzaXplKToKKyAgICAgICAgKHJ4OjpT
d2FwQ2hhaW4xMTo6cmVzZXQpOgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjppbml0UGFzc1Ro
cm91Z2hSZXNvdXJjZXMpOgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjpzd2FwUmVjdCk6Cisg
ICAgICAgIChyeDo6U3dhcENoYWluMTE6OmdldE9mZnNjcmVlblRleHR1cmUpOgorICAgICAgICAo
cng6OlN3YXBDaGFpbjExOjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlN3YXBDaGFp
bjExOjpnZXRSZW5kZXJUYXJnZXRTaGFkZXJSZXNvdXJjZSk6CisgICAgICAgIChyeDo6U3dhcENo
YWluMTE6OmdldERlcHRoU3RlbmNpbCk6CisgICAgICAgIChyeDo6U3dhcENoYWluMTE6OmdldERl
cHRoU3RlbmNpbFRleHR1cmUpOgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjptYWtlU3dhcENo
YWluMTEpOgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjpyZWNyZWF0ZSk6CisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5oOiBBZGRlZC4KKyAgICAgICAgKHJ4
OjpTd2FwQ2hhaW4xMTo6Z2V0V2lkdGgpOgorICAgICAgICAocng6OlN3YXBDaGFpbjExOjpnZXRI
ZWlnaHQpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5jcHA6
IEFkZGVkLgorICAgICAgICAocng6OlN3YXBDaGFpbjk6OlN3YXBDaGFpbjkpOgorICAgICAgICAo
cng6OlN3YXBDaGFpbjk6On5Td2FwQ2hhaW45KToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW45Ojpy
ZWxlYXNlKToKKyAgICAgICAgKHJ4Ojpjb252ZXJ0SW50ZXJ2YWwpOgorICAgICAgICAocng6OlN3
YXBDaGFpbjk6OnJlc2l6ZSk6CisgICAgICAgIChyeDo6U3dhcENoYWluOTo6cmVzZXQpOgorICAg
ICAgICAocng6OlN3YXBDaGFpbjk6OnN3YXBSZWN0KToKKyAgICAgICAgKHJ4OjpTd2FwQ2hhaW45
OjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAgICAocng6OlN3YXBDaGFpbjk6OmdldERlcHRoU3Rl
bmNpbCk6CisgICAgICAgIChyeDo6U3dhcENoYWluOTo6Z2V0T2Zmc2NyZWVuVGV4dHVyZSk6Cisg
ICAgICAgIChyeDo6U3dhcENoYWluOTo6bWFrZVN3YXBDaGFpbjkpOgorICAgICAgICAocng6OlN3
YXBDaGFpbjk6OnJlY3JlYXRlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3
YXBDaGFpbjkuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0
dXJlU3RvcmFnZS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJm
YWNlOjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3Jh
Z2VJbnRlcmZhY2U6On5UZXh0dXJlU3RvcmFnZUludGVyZmFjZSk6CisgICAgICAgIChyeDo6VGV4
dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OmlzUmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4OjpUZXh0
dXJlU3RvcmFnZUludGVyZmFjZTo6aXNNYW5hZ2VkKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3Rv
cmFnZUludGVyZmFjZTo6Z2V0VGV4dHVyZVNlcmlhbCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0
b3JhZ2VJbnRlcmZhY2U6Omlzc3VlVGV4dHVyZVNlcmlhbCk6CisgICAgICAgIChyeDo6VGV4dHVy
ZVN0b3JhZ2VJbnRlcmZhY2U6OmdldExvZE9mZnNldCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0
b3JhZ2VJbnRlcmZhY2U6OmxldmVsQ291bnQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdl
SW50ZXJmYWNlMkQ6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQpOgorICAgICAgICAocng6OlRl
eHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ6On5UZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEKToKKyAg
ICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEOjpnZXRSZW5kZXJUYXJnZXQpOgor
ICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ6OmdlbmVyYXRlTWlwbWFwKToK
KyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEOjpnZXRSZW5kZXJUYXJnZXRT
ZXJpYWwpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6VGV4dHVy
ZVN0b3JhZ2VJbnRlcmZhY2VDdWJlKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZUludGVy
ZmFjZUN1YmU6On5UZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUpOgorICAgICAgICAocng6OlRl
eHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6Z2V0UmVuZGVyVGFyZ2V0KToKKyAgICAgICAgKHJ4
OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmU6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAg
KHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmU6OmdldFJlbmRlclRhcmdldFNlcmlhbCk6
CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5oOiBBZGRl
ZC4KKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTo6VGV4dHVyZVN0b3JhZ2UpOgorICAgICAg
ICAocng6OlRleHR1cmVTdG9yYWdlOjp+VGV4dHVyZVN0b3JhZ2UpOgorICAgICAgICAocng6OlRl
eHR1cmVTdG9yYWdlSW50ZXJmYWNlOjpnZXRTdG9yYWdlSW5zdGFuY2UpOgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UxMS5jcHA6IEFkZGVkLgorICAgICAg
ICAocng6OlRleHR1cmVTdG9yYWdlMTE6OlRleHR1cmVTdG9yYWdlMTEpOgorICAgICAgICAocng6
OlRleHR1cmVTdG9yYWdlMTE6On5UZXh0dXJlU3RvcmFnZTExKToKKyAgICAgICAgKHJ4OjpUZXh0
dXJlU3RvcmFnZTExOjptYWtlVGV4dHVyZVN0b3JhZ2UxMSk6CisgICAgICAgIChyeDo6VGV4dHVy
ZVN0b3JhZ2UxMTo6R2V0VGV4dHVyZUJpbmRGbGFncyk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0
b3JhZ2UxMTo6SXNUZXh0dXJlRm9ybWF0UmVuZGVyYWJsZSk6CisgICAgICAgIChyeDo6VGV4dHVy
ZVN0b3JhZ2UxMTo6Z2V0QmluZEZsYWdzKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTEx
OjpnZXRCYXNlVGV4dHVyZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2UxMTo6Z2V0TG9k
T2Zmc2V0KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjppc1JlbmRlclRhcmdldCk6
CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2UxMTo6aXNNYW5hZ2VkKToKKyAgICAgICAgKHJ4
OjpUZXh0dXJlU3RvcmFnZTExOjpsZXZlbENvdW50KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3Rv
cmFnZTExOjpnZXRTdWJyZXNvdXJjZUluZGV4KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFn
ZTExOjp1cGRhdGVTdWJyZXNvdXJjZUxldmVsKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFn
ZTExOjpnZW5lcmF0ZU1pcG1hcExheWVyKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTEx
XzJEOjpUZXh0dXJlU3RvcmFnZTExXzJEKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTEx
XzJEOjp+VGV4dHVyZVN0b3JhZ2UxMV8yRCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2Ux
MV8yRDo6bWFrZVRleHR1cmVTdG9yYWdlMTFfMkQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9y
YWdlMTFfMkQ6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2Ux
MV8yRDo6Z2V0U1JWKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExXzJEOjpnZW5lcmF0
ZU1pcG1hcCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpUZXh0dXJlU3Rv
cmFnZTExX0N1YmUpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6flRleHR1
cmVTdG9yYWdlMTFfQ3ViZSk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpt
YWtlVGV4dHVyZVN0b3JhZ2UxMV9DdWJlKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTEx
X0N1YmU6OmdldFJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2UxMV9D
dWJlOjpnZXRTUlYpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6Z2VuZXJh
dGVNaXBtYXApOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3Jh
Z2UxMS5oOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTExOjpnZXRSZW5kZXJU
YXJnZXQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlMTE6OmdlbmVyYXRlTWlwbWFwKToK
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlOS5jcHA6IEFk
ZGVkLgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOTo6VGV4dHVyZVN0b3JhZ2U5KToKKyAg
ICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTk6On5UZXh0dXJlU3RvcmFnZTkpOgorICAgICAgICAo
cng6OlRleHR1cmVTdG9yYWdlOTo6bWFrZVRleHR1cmVTdG9yYWdlOSk6CisgICAgICAgIChyeDo6
VGV4dHVyZVN0b3JhZ2U5OjpHZXRUZXh0dXJlVXNhZ2UpOgorICAgICAgICAocng6OlRleHR1cmVT
dG9yYWdlOTo6SXNUZXh0dXJlRm9ybWF0UmVuZGVyYWJsZSk6CisgICAgICAgIChyeDo6VGV4dHVy
ZVN0b3JhZ2U5Ojppc1JlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5
Ojppc01hbmFnZWQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOTo6Z2V0UG9vbCk6Cisg
ICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5OjpnZXRVc2FnZSk6CisgICAgICAgIChyeDo6VGV4
dHVyZVN0b3JhZ2U5OjpnZXRMb2RPZmZzZXQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdl
OTo6bGV2ZWxDb3VudCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5XzJEOjpUZXh0dXJl
U3RvcmFnZTlfMkQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOV8yRDo6flRleHR1cmVT
dG9yYWdlOV8yRCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5XzJEOjptYWtlVGV4dHVy
ZVN0b3JhZ2U5XzJEKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTlfMkQ6OmdldFN1cmZh
Y2VMZXZlbCk6CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5XzJEOjpnZXRSZW5kZXJUYXJn
ZXQpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOV8yRDo6Z2VuZXJhdGVNaXBtYXApOgor
ICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOV8yRDo6Z2V0QmFzZVRleHR1cmUpOgorICAgICAg
ICAocng6OlRleHR1cmVTdG9yYWdlOV8yRDo6aW5pdGlhbGl6ZVJlbmRlclRhcmdldCk6CisgICAg
ICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5X0N1YmU6OlRleHR1cmVTdG9yYWdlOV9DdWJlKToKKyAg
ICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6flRleHR1cmVTdG9yYWdlOV9DdWJlKToK
KyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6bWFrZVRleHR1cmVTdG9yYWdlOV9D
dWJlKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6Z2V0Q3ViZU1hcFN1cmZh
Y2UpOgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOV9DdWJlOjpnZXRSZW5kZXJUYXJnZXQp
OgorICAgICAgICAocng6OlRleHR1cmVTdG9yYWdlOV9DdWJlOjpnZW5lcmF0ZU1pcG1hcCk6Cisg
ICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmdldEJhc2VUZXh0dXJlKToKKyAgICAg
ICAgKHJ4OjpUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6aW5pdGlhbGl6ZVJlbmRlclRhcmdldCk6Cisg
ICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTkuaDogQWRkZWQu
CisgICAgICAgIChyeDo6VGV4dHVyZVN0b3JhZ2U5OjpnZXRSZW5kZXJUYXJnZXQpOgorICAgICAg
ICAocng6OlRleHR1cmVTdG9yYWdlOTo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6
VmVydGV4QnVmZmVyOjpWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjo6
flZlcnRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOjp1cGRhdGVTZXJpYWwp
OgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjo6Z2V0U2VyaWFsKToKKyAgICAgICAgKHJ4OjpW
ZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OlZlcnRleEJ1ZmZlckludGVyZmFjZSk6CisgICAgICAgIChy
eDo6VmVydGV4QnVmZmVySW50ZXJmYWNlOjp+VmVydGV4QnVmZmVySW50ZXJmYWNlKToKKyAgICAg
ICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OmdldFNlcmlhbCk6CisgICAgICAgIChyeDo6
VmVydGV4QnVmZmVySW50ZXJmYWNlOjpnZXRCdWZmZXJTaXplKToKKyAgICAgICAgKHJ4OjpWZXJ0
ZXhCdWZmZXJJbnRlcmZhY2U6OnNldEJ1ZmZlclNpemUpOgorICAgICAgICAocng6OlZlcnRleEJ1
ZmZlckludGVyZmFjZTo6Z2V0V3JpdGVQb3NpdGlvbik6CisgICAgICAgIChyeDo6VmVydGV4QnVm
ZmVySW50ZXJmYWNlOjpzZXRXcml0ZVBvc2l0aW9uKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZm
ZXJJbnRlcmZhY2U6OmRpc2NhcmQpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlckludGVyZmFj
ZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXJJbnRl
cmZhY2U6OnN0b3JlUmF3RGF0YSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVySW50ZXJmYWNl
OjpyZXNlcnZlVmVydGV4U3BhY2UpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlckludGVyZmFj
ZTo6cmVzZXJ2ZVJhd0RhdGFTcGFjZSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVySW50ZXJm
YWNlOjpnZXRWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAocng6OlN0cmVhbWluZ1ZlcnRleEJ1ZmZl
ckludGVyZmFjZTo6U3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlKToKKyAgICAgICAgKHJ4
OjpTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6On5TdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJ
bnRlcmZhY2UpOgorICAgICAgICAocng6OlN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6
cmVzZXJ2ZVNwYWNlKToKKyAgICAgICAgKHJ4OjpTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6
OlN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSk6CisgICAgICAgIChyeDo6U3RhdGljVmVydGV4
QnVmZmVySW50ZXJmYWNlOjp+U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlKToKKyAgICAgICAg
KHJ4OjpTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6Omxvb2t1cEF0dHJpYnV0ZSk6CisgICAg
ICAgIChyeDo6U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZlU3BhY2UpOgorICAg
ICAgICAocng6OlN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1
dGVzKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjExLmNw
cDogQWRkZWQuCisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyMTE6OlZlcnRleEJ1ZmZlcjExKToK
KyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6flZlcnRleEJ1ZmZlcjExKToKKyAgICAgICAg
KHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChyeDo6VmVydGV4QnVm
ZmVyMTE6Om1ha2VWZXJ0ZXhCdWZmZXIxMSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyMTE6
OnN0b3JlVmVydGV4QXR0cmlidXRlcyk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyMTE6OnN0
b3JlUmF3RGF0YSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyMTE6OmdldFNwYWNlUmVxdWly
ZWQpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjExOjpyZXF1aXJlc0NvbnZlcnNpb24pOgor
ICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjExOjpnZXRCdWZmZXJTaXplKToKKyAgICAgICAgKHJ4
OjpWZXJ0ZXhCdWZmZXIxMTo6c2V0QnVmZmVyU2l6ZSk6CisgICAgICAgIChyeDo6VmVydGV4QnVm
ZmVyMTE6OmRpc2NhcmQpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjExOjpnZXRWZXJ0ZXhT
aXplKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXIxMTo6Z2V0RFhHSUZvcm1hdCk6CisgICAg
ICAgIChyeDo6VmVydGV4QnVmZmVyMTE6OmdldEJ1ZmZlcik6CisgICAgICAgIChyeDo6Y29weVZl
cnRleERhdGEpOgorICAgICAgICAocng6OmNvcHlGaXhlZFZlcnRleERhdGEpOgorICAgICAgICAo
cng6OmNvcHlUb0Zsb2F0VmVydGV4RGF0YSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyMTE6
OmdldFZlcnRleENvbnZlcnNpb24pOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIv
VmVydGV4QnVmZmVyMTEuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9WZXJ0ZXhCdWZmZXI5LmNwcDogQWRkZWQuCisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6
VmVydGV4QnVmZmVyOSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6flZlcnRleEJ1ZmZl
cjkpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6OmluaXRpYWxpemUpOgorICAgICAgICAo
cng6OlZlcnRleEJ1ZmZlcjk6Om1ha2VWZXJ0ZXhCdWZmZXI5KToKKyAgICAgICAgKHJ4OjpWZXJ0
ZXhCdWZmZXI5OjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMpOgorICAgICAgICAocng6OlZlcnRleEJ1
ZmZlcjk6OnN0b3JlUmF3RGF0YSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6Z2V0U3Bh
Y2VSZXF1aXJlZCk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6cmVxdWlyZXNDb252ZXJz
aW9uKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5OjpnZXRWZXJ0ZXhTaXplKToKKyAgICAg
ICAgKHJ4OjpWZXJ0ZXhCdWZmZXI5OjpnZXREZWNsVHlwZSk6CisgICAgICAgIChyeDo6VmVydGV4
QnVmZmVyOTo6Z2V0QnVmZmVyU2l6ZSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6c2V0
QnVmZmVyU2l6ZSk6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6ZGlzY2FyZCk6CisgICAg
ICAgIChyeDo6VmVydGV4QnVmZmVyOTo6Z2V0QnVmZmVyKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhC
dWZmZXI5Ojppbml0aWFsaXplVHJhbnNsYXRpb25zKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhCdWZm
ZXI5Ojp0eXBlSW5kZXgpOgorICAgICAgICAocng6OlZlcnRleEJ1ZmZlcjk6OmZvcm1hdENvbnZl
cnRlcik6CisgICAgICAgIChyeDo6VmVydGV4QnVmZmVyOTo6c3BhY2VSZXF1aXJlZCk6CisgICAg
ICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5Lmg6IEFkZGVkLgorICAg
ICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKHJ4OjplbGVtZW50c0luQnVmZmVyKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhE
YXRhTWFuYWdlcjo6VmVydGV4RGF0YU1hbmFnZXIpOgorICAgICAgICAocng6OlZlcnRleERhdGFN
YW5hZ2VyOjp+VmVydGV4RGF0YU1hbmFnZXIpOgorICAgICAgICAocng6OmRpcmVjdFN0b3JhZ2VQ
b3NzaWJsZSk6CisgICAgICAgIChyeDo6VmVydGV4RGF0YU1hbmFnZXI6OnByZXBhcmVWZXJ0ZXhE
YXRhKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERhdGFNYW5hZ2Vy
Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGVjbGFy
YXRpb25DYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAocng6OlZlcnRleERlY2xhcmF0aW9uQ2Fj
aGU6OlZlcnRleERlY2xhcmF0aW9uQ2FjaGUpOgorICAgICAgICAocng6OlZlcnRleERlY2xhcmF0
aW9uQ2FjaGU6On5WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhE
ZWNsYXJhdGlvbkNhY2hlOjphcHBseURlY2xhcmF0aW9uKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhE
ZWNsYXJhdGlvbkNhY2hlOjptYXJrU3RhdGVEaXJ0eSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmg6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9saWJHTEVTdjIvcmVuZGVyZXIvZ2VuZXJhdGVtaXAuaDogQWRkZWQuCisgICAgICAgIChyeDo6
TDg6OmF2ZXJhZ2UpOgorICAgICAgICAocng6OkE4TDg6OmF2ZXJhZ2UpOgorICAgICAgICAocng6
OkE4UjhHOEI4OjphdmVyYWdlKToKKyAgICAgICAgKHJ4OjpBMTZCMTZHMTZSMTZGOjphdmVyYWdl
KToKKyAgICAgICAgKHJ4OjpSMTZGOjphdmVyYWdlKToKKyAgICAgICAgKHJ4OjpSMTZHMTZGOjph
dmVyYWdlKToKKyAgICAgICAgKHJ4OjpBMzJCMzJHMzJSMzJGOjphdmVyYWdlKToKKyAgICAgICAg
KHJ4OjpSMzJGOjphdmVyYWdlKToKKyAgICAgICAgKHJ4OjpSMzJHMzJGOjphdmVyYWdlKToKKyAg
ICAgICAgKHJ4OjpSMzJHMzJCMzJGOjphdmVyYWdlKToKKyAgICAgICAgKHJ4OjpHZW5lcmF0ZU1p
cCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmNw
cDogQWRkZWQuCisgICAgICAgIChnbF9kM2QxMTo6Q29udmVydEJsZW5kRnVuYyk6CisgICAgICAg
IChnbF9kM2QxMTo6Q29udmVydEJsZW5kT3ApOgorICAgICAgICAoZ2xfZDNkMTE6OkNvbnZlcnRD
b2xvck1hc2spOgorICAgICAgICAoZ2xfZDNkMTE6OkNvbnZlcnRDdWxsTW9kZSk6CisgICAgICAg
IChnbF9kM2QxMTo6Q29udmVydENvbXBhcmlzb24pOgorICAgICAgICAoZ2xfZDNkMTE6OkNvbnZl
cnREZXB0aE1hc2spOgorICAgICAgICAoZ2xfZDNkMTE6OkNvbnZlcnRTdGVuY2lsTWFzayk6Cisg
ICAgICAgIChnbF9kM2QxMTo6Q29udmVydFN0ZW5jaWxPcCk6CisgICAgICAgIChnbF9kM2QxMTo6
Q29udmVydEZpbHRlcik6CisgICAgICAgIChnbF9kM2QxMTo6Q29udmVydFRleHR1cmVXcmFwKToK
KyAgICAgICAgKGdsX2QzZDExOjpDb252ZXJ0TWluTE9EKToKKyAgICAgICAgKGdsX2QzZDExOjpD
b252ZXJ0TWF4TE9EKToKKyAgICAgICAgKGQzZDExX2dsOjpDb252ZXJ0QmFja0J1ZmZlckZvcm1h
dCk6CisgICAgICAgIChkM2QxMV9nbDo6Q29udmVydERlcHRoU3RlbmNpbEZvcm1hdCk6CisgICAg
ICAgIChkM2QxMV9nbDo6Q29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdCk6CisgICAgICAgIChkM2Qx
MV9nbDo6Q29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdCk6CisgICAgICAgIChnbF9kM2QxMTo6
Q29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdCk6CisgICAgICAgIChnbF9kM2QxMTo6Q29udmVydFRl
eHR1cmVGb3JtYXQpOgorICAgICAgICAoZDNkMTE6OlNldFBvc2l0aW9uVGV4Q29vcmRWZXJ0ZXgp
OgorICAgICAgICAoZDNkMTE6OlNldFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleCk6CisgICAgICAg
IChkM2QxMTo6Q29tcHV0ZVBpeGVsU2l6ZUJpdHMpOgorICAgICAgICAoZDNkMTE6OkNvbXB1dGVC
bG9ja1NpemVCaXRzKToKKyAgICAgICAgKGQzZDExOjpJc0NvbXByZXNzZWQpOgorICAgICAgICAo
ZDNkMTE6OkdldFRleHR1cmVGb3JtYXREaW1lbnNpb25BbGlnbm1lbnQpOgorICAgICAgICAoZDNk
MTE6OklzRGVwdGhTdGVuY2lsRm9ybWF0KToKKyAgICAgICAgKGQzZDExOjpHZXREZXB0aFRleHR1
cmVGb3JtYXQpOgorICAgICAgICAoZDNkMTE6OkdldERlcHRoU2hhZGVyUmVzb3VyY2VGb3JtYXQp
OgorICAgICAgICAoZDNkMTE6OlNldERlYnVnTmFtZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmg6IEFkZGVkLgorICAgICAgICAoZDNkMTE6Omlz
RGV2aWNlTG9zdEVycm9yKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRl
cmVyOV91dGlscy5jcHA6IEFkZGVkLgorICAgICAgICAoZ2xfZDNkOTo6Q29udmVydENvbXBhcmlz
b24pOgorICAgICAgICAoZ2xfZDNkOTo6Q29udmVydENvbG9yKToKKyAgICAgICAgKGdsX2QzZDk6
OkNvbnZlcnRCbGVuZEZ1bmMpOgorICAgICAgICAoZ2xfZDNkOTo6Q29udmVydEJsZW5kT3ApOgor
ICAgICAgICAoZ2xfZDNkOTo6Q29udmVydFN0ZW5jaWxPcCk6CisgICAgICAgIChnbF9kM2Q5OjpD
b252ZXJ0VGV4dHVyZVdyYXApOgorICAgICAgICAoZ2xfZDNkOTo6Q29udmVydEN1bGxNb2RlKToK
KyAgICAgICAgKGdsX2QzZDk6OkNvbnZlcnRDdWJlRmFjZSk6CisgICAgICAgIChnbF9kM2Q5OjpD
b252ZXJ0Q29sb3JNYXNrKToKKyAgICAgICAgKGdsX2QzZDk6OkNvbnZlcnRNYWdGaWx0ZXIpOgor
ICAgICAgICAoZ2xfZDNkOTo6Q29udmVydE1pbkZpbHRlcik6CisgICAgICAgIChnbF9kM2Q5OjpD
b252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KToKKyAgICAgICAgKGdsX2QzZDk6OkdldE11bHRpc2Ft
cGxlVHlwZUZyb21TYW1wbGVzKToKKyAgICAgICAgKGQzZDlfZ2w6OkdldFN0ZW5jaWxTaXplKToK
KyAgICAgICAgKGQzZDlfZ2w6OkdldEFscGhhU2l6ZSk6CisgICAgICAgIChkM2Q5X2dsOjpHZXRT
YW1wbGVzRnJvbU11bHRpc2FtcGxlVHlwZSk6CisgICAgICAgIChkM2Q5X2dsOjpJc0Zvcm1hdENo
YW5uZWxFcXVpdmFsZW50KToKKyAgICAgICAgKGQzZDlfZ2w6OkNvbnZlcnRCYWNrQnVmZmVyRm9y
bWF0KToKKyAgICAgICAgKGQzZDlfZ2w6OkNvbnZlcnREZXB0aFN0ZW5jaWxGb3JtYXQpOgorICAg
ICAgICAoZDNkOV9nbDo6Q29udmVydFJlbmRlclRhcmdldEZvcm1hdCk6CisgICAgICAgIChkM2Q5
X2dsOjpHZXRFcXVpdmFsZW50Rm9ybWF0KToKKyAgICAgICAgKGQzZDk6OklzQ29tcHJlc3NlZEZv
cm1hdCk6CisgICAgICAgIChkM2Q5OjpDb21wdXRlUm93U2l6ZSk6CisgICAgICAgICogc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaDogQWRkZWQuCisgICAgICAgIChkM2Q5
Ojppc0RldmljZUxvc3RFcnJvcik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9z
aGFkZXJzOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMv
QmxpdC5wczogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJz
L0JsaXQudnM6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVy
cy9DbGVhcjExLmhsc2w6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIv
c2hhZGVycy9QYXNzdGhyb3VnaDExLmhsc2w6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVT
djIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyMTF2cy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJtdWx0aXBs
ZTExcHMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJz
L2NvbXBpbGVkL2NsZWFyc2luZ2xlMTFwcy5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50bWFza3BzLmg6IEFkZGVkLgor
ICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9mbGlweXZz
Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21w
aWxlZC9sdW1pbmFuY2Vwcy5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2gxMXZzLmg6IEFkZGVkLgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTEx
cHMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2Nv
bXBpbGVkL3Bhc3N0aHJvdWdobHVtYWxwaGExMXBzLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHBzLmg6IEFkZGVk
LgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNz
dGhyb3VnaHJnYjExcHMuaDogQWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTExcHMuaDogQWRkZWQuCisgICAgICAg
ICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3N0YW5kYXJkdnMuaDog
QWRkZWQuCisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2dlbmVyYXRl
X3NoYWRlcnMuYmF0OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3JlbmRlcmVyL3Zl
cnRleGNvbnZlcnNpb24uaDogQWRkZWQuCisgICAgICAgIChyeDo6SWRlbnRpdHk6OmNvbnZlcnQp
OgorICAgICAgICAocng6OkNhc3Q6OmNvbnZlcnQpOgorICAgICAgICAocng6Ok5vcm1hbGl6ZTo6
Y29udmVydCk6CisgICAgICAgIChyeDo6Rml4ZWRUb0Zsb2F0Ojpjb252ZXJ0KToKKyAgICAgICAg
KHJ4OjpTaW1wbGVEZWZhdWx0VmFsdWVzOjp6ZXJvKToKKyAgICAgICAgKHJ4OjpTaW1wbGVEZWZh
dWx0VmFsdWVzOjpvbmUpOgorICAgICAgICAocng6Ok5vcm1hbGl6ZWREZWZhdWx0VmFsdWVzOjp6
ZXJvKToKKyAgICAgICAgKHJ4OjpOb3JtYWxpemVkRGVmYXVsdFZhbHVlczo6b25lKToKKyAgICAg
ICAgKHJ4OjpWZXJ0ZXhEYXRhQ29udmVydGVyOjpjb252ZXJ0QXJyYXkpOgorICAgICAgICAocng6
OlZlcnRleERhdGFDb252ZXJ0ZXI6OnBvaW50ZXJBZGRCeXRlcyk6CisgICAgICAgIChyeDo6VmVy
dGV4RGF0YUNvbnZlcnRlcjo6Y29weUNvbXBvbmVudCk6CisgICAgICAgICogc3JjL2xpYkdMRVN2
Mi9yZXNvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL3V0aWxpdGllcy5j
cHA6IEFkZGVkLgorICAgICAgICAoZ2w6OlVuaWZvcm1Db21wb25lbnRDb3VudCk6CisgICAgICAg
IChnbDo6VW5pZm9ybUNvbXBvbmVudFR5cGUpOgorICAgICAgICAoZ2w6OlVuaWZvcm1Db21wb25l
bnRTaXplKToKKyAgICAgICAgKGdsOjpVbmlmb3JtSW50ZXJuYWxTaXplKToKKyAgICAgICAgKGds
OjpVbmlmb3JtRXh0ZXJuYWxTaXplKToKKyAgICAgICAgKGdsOjpWYXJpYWJsZVJvd0NvdW50KToK
KyAgICAgICAgKGdsOjpWYXJpYWJsZUNvbHVtbkNvdW50KToKKyAgICAgICAgKGdsOjpBbGxvY2F0
ZUZpcnN0RnJlZUJpdHMpOgorICAgICAgICAoZ2w6OkNvbXB1dGVQaXRjaCk6CisgICAgICAgIChn
bDo6Q29tcHV0ZUNvbXByZXNzZWRQaXRjaCk6CisgICAgICAgIChnbDo6Q29tcHV0ZUNvbXByZXNz
ZWRTaXplKToKKyAgICAgICAgKGdsOjpJc0NvbXByZXNzZWQpOgorICAgICAgICAoZ2w6OklzRGVw
dGhUZXh0dXJlKToKKyAgICAgICAgKGdsOjpJc1N0ZW5jaWxUZXh0dXJlKToKKyAgICAgICAgKGds
OjpNYWtlVmFsaWRTaXplKToKKyAgICAgICAgKGdsOjpDb21wdXRlUGl4ZWxTaXplKToKKyAgICAg
ICAgKGdsOjpJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0KToKKyAgICAgICAgKGdsOjpJc0ludGVybmFs
VGV4dHVyZVRhcmdldCk6CisgICAgICAgIChnbDo6Q29udmVydFNpemVkSW50ZXJuYWxGb3JtYXQp
OgorICAgICAgICAoZ2w6OkV4dHJhY3RGb3JtYXQpOgorICAgICAgICAoZ2w6OkV4dHJhY3RUeXBl
KToKKyAgICAgICAgKGdsOjpJc0NvbG9yUmVuZGVyYWJsZSk6CisgICAgICAgIChnbDo6SXNEZXB0
aFJlbmRlcmFibGUpOgorICAgICAgICAoZ2w6OklzU3RlbmNpbFJlbmRlcmFibGUpOgorICAgICAg
ICAoZ2w6OklzRmxvYXQzMkZvcm1hdCk6CisgICAgICAgIChnbDo6SXNGbG9hdDE2Rm9ybWF0KToK
KyAgICAgICAgKGdsOjpHZXRBbHBoYVNpemUpOgorICAgICAgICAoZ2w6OkdldFJlZFNpemUpOgor
ICAgICAgICAoZ2w6OkdldEdyZWVuU2l6ZSk6CisgICAgICAgIChnbDo6R2V0Qmx1ZVNpemUpOgor
ICAgICAgICAoZ2w6OkdldERlcHRoU2l6ZSk6CisgICAgICAgIChnbDo6R2V0U3RlbmNpbFNpemUp
OgorICAgICAgICAoZ2w6OklzVHJpYW5nbGVNb2RlKToKKyAgICAgICAgKGdldFRlbXBQYXRoKToK
KyAgICAgICAgKHdyaXRlRmlsZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMu
aDogQWRkZWQuCisgICAgICAgICogc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2g6IEFkZGVkLgor
ICAgICAgICAqIHNyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL0xJQ0VOU0U6IEFkZGVkLgorICAg
ICAgICAqIHNyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmNwcDogQWRkZWQu
CisgICAgICAgIChyb3RsMzIpOgorICAgICAgICAocm90bDY0KToKKyAgICAgICAgKGdldGJsb2Nr
KToKKyAgICAgICAgKGZtaXgpOgorICAgICAgICAoTXVybXVySGFzaDNfeDg2XzMyKToKKyAgICAg
ICAgKE11cm11ckhhc2gzX3g4Nl8xMjgpOgorICAgICAgICAoTXVybXVySGFzaDNfeDY0XzEyOCk6
CisgICAgICAgICogc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuaDogQWRk
ZWQuCisKIDIwMTMtMDctMjAgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVwZGF0ZWQgQU5HTEUgaXMgbGVha2luZyBsaWtlIGEgc2lldmUKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL0FOR0xFLnBsaXN0CShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9BTkdMRS5wbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTAsOSArMTAsOSBAQAog
CQk8a2V5Pk9wZW5Tb3VyY2VXZWJzaXRlVVJMPC9rZXk+CiAJCTxzdHJpbmc+aHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVjdC88L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNlU0NN
PC9rZXk+Ci0JCTxzdHJpbmc+c3ZuIGNvIC1yMTY0MSBodHRwOi8vYW5nbGVwcm9qZWN0Lmdvb2ds
ZWNvZGUuY29tL3N2bi90cnVuay88L3N0cmluZz4KKwkJPHN0cmluZz5naXQgY2xvbmUgaHR0cHM6
Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXByb2plY3QvICYmIGNkIGFuZ2xlcHJvamVjdCAmJiBn
aXQgY2hlY2tvdXQgMDQ3MzczYWEzZWI0MDhiZTYyYmU1MmFkZTg0MGZhNWYxMWU3MjMzNzwvc3Ry
aW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VJbXBvcnREYXRlPC9rZXk+Ci0JCTxzdHJpbmc+MjAxMy0w
MS0wNDwvc3RyaW5nPgorCQk8c3RyaW5nPjIwMTMtMDctMjI8L3N0cmluZz4KIAkJPGtleT5PcGVu
U291cmNlTGljZW5zZTwva2V5PgogCQk8c3RyaW5nPkJTRDwvc3RyaW5nPgogCQk8a2V5Pk9wZW5T
b3VyY2VMaWNlbnNlRmlsZTwva2V5PgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQVVU
SE9SUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BVVRIT1JTCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQVVUSE9SUwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzMiBAQAorIyBUaGlzIGlzIHRoZSBvZmZpY2lhbCBsaXN0IG9mIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMKKyMgZm9yIGNvcHlyaWdodCBwdXJwb3Nlcy4KKyMgVGhpcyBmaWxl
IGlzIGRpc3RpbmN0IGZyb20gdGhlIENPTlRSSUJVVE9SUyBmaWxlcy4KKyMgU2VlIHRoZSBsYXR0
ZXIgZm9yIGFuIGV4cGxhbmF0aW9uLgorCisjIE5hbWVzIHNob3VsZCBiZSBhZGRlZCB0byB0aGlz
IGZpbGUgYXMKKyMJTmFtZSBvciBPcmdhbml6YXRpb24KKyMgRW1haWwgYWRkcmVzc2VzIGZvciBp
bmRpdmlkdWFscyBhcmUgdHJhY2tlZCBlbHNld2hlcmUgdG8gYXZvaWQgc3BhbS4KKworR29vZ2xl
IEluYy4KK1RyYW5zR2FtaW5nIEluYy4KKzNETGFicyBJbmMuIEx0ZC4KKworQWRvYmUgU3lzdGVt
cyBJbmMuCitBdXRvZGVzaywgSW5jLgorQ2xvdWQgUGFydHksIEluYy4KK0ludGVsIENvcnBvcmF0
aW9uCitNb3ppbGxhIENvcnBvcmF0aW9uCitUdXJidWxlbnoKK0tsYXLDpGx2ZGFsZW5zIERhdGFr
b25zdWx0IEFCCisKK0phY2VrIENhYmFuCitNYXJrIENhbGxvdworR2lubiBDaGVuCitKYW1lcyBI
YXV4d2VsbAorU2FtIEhvY2V2YXIKK1BpZXJyZSBMZXZlaWxsZQorSm9uYXRoYW4gTGl1CitCb3lp
bmcgTHUKK0FpdG9yIE1vcmVubworWXVyaSBPJ0Rvbm5lbGwKK0pvc2ggU29yZWYKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NPTlRSSUJVVE9SUwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9DT05UUklCVVRPUlMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9DT05UUklCVVRPUlMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAK
KyMgVGhpcyBpcyB0aGUgb2ZmaWNpYWwgbGlzdCBvZiBwZW9wbGUgd2hvIGNhbiBjb250cmlidXRl
DQorIyAoYW5kIHdobyBoYXZlIGNvbnRyaWJ1dGVkKSBjb2RlIHRvIHRoZSBBTkdMRSBwcm9qZWN0
DQorIyByZXBvc2l0b3J5Lg0KKyMgVGhlIEFVVEhPUlMgZmlsZSBsaXN0cyB0aGUgY29weXJpZ2h0
IGhvbGRlcnM7IHRoaXMgZmlsZQ0KKyMgbGlzdHMgcGVvcGxlLiAgRm9yIGV4YW1wbGUsIEdvb2ds
ZSBlbXBsb3llZXMgYXJlIGxpc3RlZCBoZXJlDQorIyBidXQgbm90IGluIEFVVEhPUlMsIGJlY2F1
c2UgR29vZ2xlIGhvbGRzIHRoZSBjb3B5cmlnaHQuDQorIw0KKw0KK1RyYW5zR2FtaW5nIEluYy4N
CisgTmljb2xhcyBDYXBlbnMNCisgRGFuaWVsIEtvY2gNCisgR2VvZmYgTGFuZw0KKyBBbmRyZXcg
TGV3eWNreQ0KKyBKYW1pZSBNYWRpbGwNCisgR2F2cmllbCBTdGF0ZQ0KKyBTaGFubm9uIFdvb2Rz
DQorDQorR29vZ2xlIEluYy4NCisgQnJlbnQgQXVzdGluDQorIE1pY2hhZWwgQmFpDQorIEpvaG4g
QmF1bWFuDQorIFBldGVyIEJldmVybG9vDQorIFN0ZXZlIEJsb2NrDQorIFJhY2hlbCBCbHVtDQor
IEVyaWMgQm9yZW4NCisgSGVucnkgQnJpZGdlDQorIE5hdCBEdWNhDQorIFBldGVyIEthc3RpbmcN
CisgVmFuZ2VsaXMgS29ra2V2aXMNCisgWmhlbnlhbyBNbw0KKyBEYW5pZWwgTmljb2FyYQ0KKyBB
bGFzdGFpciBQYXRyaWNrDQorIEFsb2sgUHJpeWFkYXJzaGkNCisgS2VubmV0aCBSdXNzZWxsDQor
IEJyaWFuIFNhbG9tb24NCisgR3JlZ2cgVGF2YXJlcw0KKyBKZWZmIFRpbWFudXMNCisgQmVuIFZh
bmlrDQorIEFkcmllbm5lIFdhbGtlcg0KKyB0aGVzdGlnQGNocm9taXVtLm9yZw0KKyBKdXN0aW4g
U2NodWgNCisNCitBZG9iZSBTeXN0ZW1zIEluYy4NCisgQWxleGFuZHJ1IENoaWN1bGl0YQ0KKyBT
dGV2ZSBNaW5ucw0KKyBNYXggVnVqb3ZpYw0KKw0KK0F1dG9kZXNrLCBJbmMuDQorIFJhbmdlciBI
YXJrZQ0KKw0KK0Nsb3VkIFBhcnR5LCBJbmMuDQorIENvbm9yIERpY2tpbnNvbg0KKw0KK0ludGVs
IENvcnBvcmF0aW9uDQorIEppbiBZYW5nDQorIEFuZHkgQ2hlbg0KKyBKb3NoIFRyaXBsZXR0DQor
DQorS2xhcsOkbHZkYWxlbnMgRGF0YWtvbnN1bHQgQUINCisgTWlsaWFuIFdvbGZmDQorDQorTW96
aWxsYSBDb3JwLg0KKyBFaHNhbiBBa2hnYXJpDQorIEplZmYgR2lsYmVydA0KKyBNaWtlIEhvbW1l
eQ0KKyBCZW5vaXQgSmFjb2INCisgTWFrb3RvIEthdG8NCisgVmxhZGltaXIgVnVraWNldmljDQor
DQorVHVyYnVsZW56DQorIE1pY2hhZWwgQnJhaXRod2FpdGUNCisNCitVbHJpayBQZXJzc29uIChk
ZGVmcm9zdHQpDQorTWFyayBCYW5uZXIgKHN0YW5kYXJkOG1icCkNCitEYXZpZCBLaWx6ZXINCisN
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9ERVBTCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL0RFUFMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9ERVBTCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACitkZXBzID0geworICAi
dHJ1bmsvdGhpcmRfcGFydHkvZ3lwIjoKKyAgICAgICJodHRwOi8vZ3lwLmdvb2dsZWNvZGUuY29t
L3N2bi90cnVua0AxNTY0IiwKKworICAidHJ1bmsvdGhpcmRfcGFydHkvZ29vZ2xldGVzdCI6Cisg
ICAgICAiaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rQDU3MyIsICNy
ZWxlYXNlIDEuNi4wCisKKyAgInRydW5rL3RoaXJkX3BhcnR5L2dvb2dsZW1vY2siOgorICAgICAg
Imh0dHA6Ly9nb29nbGVtb2NrLmdvb2dsZWNvZGUuY29tL3N2bi90cnVua0AzODciLCAjcmVsZWFz
ZSAxLjYuMAorfQorCitob29rcyA9IFsKKyAgeworICAgICMgQSBjaGFuZ2UgdG8gYSAuZ3lwLCAu
Z3lwaSwgb3IgdG8gR1lQIGl0c2VsZiBzaG91bGQgcnVuIHRoZSBnZW5lcmF0b3IuCisgICAgInBh
dHRlcm4iOiAiLiIsCisgICAgImFjdGlvbiI6IFsicHl0aG9uIiwgInRydW5rL2J1aWxkL2d5cF9h
bmdsZSJdLAorICB9LAorXQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvR05VbWFrZWZp
bGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvR05VbWFrZWZpbGUu
YW0JKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0dOVW1ha2Vm
aWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTAgQEAgbGliQU5HTEVfbGFfU09V
UkNFUyA9IFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgv
RGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwIFwKIAlTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoVHJhdmVy
c2UuY3BwIFwKKwlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0Q2Fs
bERlcHRoLmNwcCBcCisJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVj
dENhbGxEZXB0aC5oIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0
ZWN0RGlzY29udGludWl0eS5jcHAgXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9EZXRlY3REaXNjb250aW51aXR5LmggXAotCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwIFwKLQlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGljcy5jcHAgXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGljcy5oIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvRGlyZWN0aXZlSGFuZGxlci5jcHAgXApAQCAtMTM3LDYgKzEzNyw3IEBA
IGxpYkFOR0xFX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1RyYW5zbGF0b3JITFNMLmNwcCBcCiAJU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9UeXBlcy5oIFwKKwlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvVW5pZm9ybS5jcHAgXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9V
bmZvbGRTaG9ydENpcmN1aXQuY3BwIFwKIAlTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmggXAogCVNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci91dGlsLmNwcCBcCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9MSUNF
TlNFCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0xJQ0VOU0UJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9MSUNFTlNFCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMyIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiAKKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLworLy8gICAgIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorLy8KKy8vICAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIAorLy8gICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisvLyAgICAgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorLy8KKy8vICAgICBOZWl0aGVyIHRoZSBuYW1lIG9mIFRyYW5zR2FtaW5n
IEluYy4sIEdvb2dsZSBJbmMuLCAzRExhYnMgSW5jLgorLy8gICAgIEx0ZC4sIG5vciB0aGUgbmFt
ZXMgb2YgdGhlaXIgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2UKKy8vICAgICBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMKKy8vICAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUworLy8gRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIENPUFlSSUdIVCBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKy8v
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsCisvLyBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisvLyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOCisvLyBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUKKy8vIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvUkVBRE1FLmNocm9taXVtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL1JFQURNRS5jaHJvbWl1bQkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL1JFQURNRS5jaHJvbWl1bQkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMCBAQAorTmFtZTogQU5HTEUKK1VSTDogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9h
bmdsZXByb2plY3QvCitWZXJzaW9uOiAyNDIyCitMaWNlbnNlOiBCU0QKK0xpY2Vuc2UgRmlsZTog
TElDRU5TRQorCitEZXNjcmlwdGlvbjoKK0FOR0xFIGlzIGEgY29uZm9ybWFudCBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUgT3BlbkdMIEVTIDIuMAorc3BlY2lmaWNhdGlvbiB0aGF0IGlzIGhhcmR3YXJl
4oCQYWNjZWxlcmF0ZWQgdmlhIERpcmVjdDNELgorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1Rh
cmdldC5wcmkJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1Rh
cmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDggQEAgSEVBREVSUyArPSBcCiAg
ICAgc3JjL2NvbXBpbGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oIFwKICAgICBzcmMvY29t
cGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIFwKICAgICBzcmMvY29tcGls
ZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmggXAorICAgIHNyYy9jb21waWxlci9E
ZXRlY3RDYWxsRGVwdGguaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHku
aCBcCi0gICAgc3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oIFwKICAgICBzcmMvY29tcGls
ZXIvRGlhZ25vc3RpY3MuaCBcCiAgICAgc3JjL2NvbXBpbGVyL0RpcmVjdGl2ZUhhbmRsZXIuaCBc
CiAgICAgc3JjL2NvbXBpbGVyL0V4dGVuc2lvbkJlaGF2aW9yLmggXApAQCAtOTIsOCArOTIsOCBA
QCBTT1VSQ0VTICs9IFwKICAgICBzcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBo
QnVpbGRlci5jcHAgXAogICAgIHNyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhP
dXRwdXQuY3BwIFwKICAgICBzcmMvY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoVHJh
dmVyc2UuY3BwIFwKKyAgICBzcmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcCBcCiAgICAg
c3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwIFwKLSAgICBzcmMvY29tcGlsZXIv
RGV0ZWN0UmVjdXJzaW9uLmNwcCBcCiAgICAgc3JjL2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcCBc
CiAgICAgc3JjL2NvbXBpbGVyL0RpcmVjdGl2ZUhhbmRsZXIuY3BwIFwKICAgICBzcmMvY29tcGls
ZXIvRm9yTG9vcFVucm9sbC5jcHAgXApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvY29k
ZXJldmlldy5zZXR0aW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9j
b2RlcmV2aWV3LnNldHRpbmdzCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvY29kZXJldmlldy5zZXR0aW5ncwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACisjIFRo
aXMgZmlsZSBpcyB1c2VkIGJ5IGdjbCB0byBnZXQgcmVwb3NpdG9yeSBzcGVjaWZpYyBpbmZvcm1h
dGlvbi4NCitDT0RFX1JFVklFV19TRVJWRVI6IGNvZGVyZXZpZXcuYXBwc3BvdC5jb20NCitDQ19M
SVNUOiBhbmdsZXByb2plY3QtcmV2aWV3QGdvb2dsZWdyb3Vwcy5jb20NCitWSUVXX1ZDOiBodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L3NvdXJjZS9kZXRhaWw/cj0NCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEy
LDggKzEyLDggQEAKIAkJNDk5NTFDMDMxNEI3QUFCMzAwNjBFOTZFIC8qIGxlbmd0aF9saW1pdHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzAy
MTRCN0FBQjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRzLmggKi87IH07CiAJCTQ5OTUxQzA5MTRC
N0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk1MUMwNTE0QjdBQUQ3MDA2MEU5
NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwICovOyB9OwogCQk0OTk1MUMwQTE0QjdB
QUQ4MDA2MEU5NkUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA2MTRCN0FBRDgwMDYwRTk2RSAv
KiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oICovOyB9OwotCQk0OTk1MUMwQjE0QjdBQUQ4MDA2
MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2RSAvKiBEZXRlY3RSZWN1
cnNpb24uY3BwICovOyB9OwotCQk0OTk1MUMwQzE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVj
dXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OTk1MUMwODE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmggKi87IH07CisJCTVD
QjEzRkQ0MTc5REIzRkQwMDFGODUxRCAvKiBEZXRlY3RDYWxsRGVwdGguY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMTNGRDIxNzlEQjNGRDAwMUY4
NTFEIC8qIERldGVjdENhbGxEZXB0aC5jcHAgKi87IH07CisJCTVDQjEzRkQ1MTc5REIzRkQwMDFG
ODUxRCAvKiBEZXRlY3RDYWxsRGVwdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDQjEzRkQzMTc5REIzRkQwMDFGODUxRCAvKiBEZXRlY3RDYWxsRGVw
dGguaCAqLzsgfTsKIAkJOTBEOUIxMDIxMkUxMURDQjAwMkQ0MjU1IC8qIENvbXBpbGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwRDlCMEY5MTJF
MTFEQ0IwMDJENDI1NSAvKiBDb21waWxlci5jcHAgKi87IH07CiAJCTkwRDlCMTAzMTJFMTFEQ0Iw
MDJENDI1NSAvKiBFeHRlbnNpb25CZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTBEOUIwRkExMkUxMURDQjAwMkQ0MjU1IC8qIEV4dGVuc2lv
bkJlaGF2aW9yLmggKi87IH07CiAJCTkwRDlCMTA0MTJFMTFEQ0IwMDJENDI1NSAvKiBnbHNsYW5n
X2xleC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MEQ5QjBGQjEyRTExRENCMDAyRDQyNTUgLyogZ2xzbGFuZ19sZXguY3BwICovOyB9OwpAQCAtMTQw
LDggKzE0MCw4IEBACiAJCTQ5OTUxQzAyMTRCN0FBQjMwMDYwRTk2RSAvKiBsZW5ndGhfbGltaXRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGxlbmd0aF9saW1pdHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5NTFDMDUxNEI3QUFENzAwNjBFOTZFIC8qIEJ1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDk5NTFDMDYxNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5OTUxQzA3MTRCN0FBRDgw
MDYwRTk2RSAvKiBEZXRlY3RSZWN1cnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGV0ZWN0UmVjdXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDk5NTFDMDgxNEI3QUFEODAwNjBFOTZFIC8qIERldGVjdFJlY3Vyc2lvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXRlY3RSZWN1cnNpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCMTNGRDIxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENh
bGxEZXB0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXRlY3RD
YWxsRGVwdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0IxM0ZEMzE3OURC
M0ZEMDAxRjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERldGVjdENhbGxEZXB0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1RDdDNTlDNTEyMDhDNjhCMDAxQzg3M0UgLyogQU5HTEUueGNjb25maWcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gQU5HTEUueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVEN0M1OUM2MTIwOEM2OEIwMDFDODczRSAvKiBCYXNlLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVEN0M1OUM3MTIwOEM2OEIwMDFDODczRSAvKiBEZWJ1Z1JlbGVhc2Uu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzk5LDggKzM5OSw4IEBACiAJ
CQkJRkIzOUQyMjUxMjAwRjM1QTAwMDg4RTY5IC8qIENvbnN0YW50VW5pb24uaCAqLywKIAkJCQlG
QjM5RDIyNjEyMDBGMzVBMDAwODhFNjkgLyogZGVidWcuY3BwICovLAogCQkJCUZCMzlEMjI3MTIw
MEYzNUEwMDA4OEU2OSAvKiBkZWJ1Zy5oICovLAotCQkJCTQ5OTUxQzA3MTRCN0FBRDgwMDYwRTk2
RSAvKiBEZXRlY3RSZWN1cnNpb24uY3BwICovLAotCQkJCTQ5OTUxQzA4MTRCN0FBRDgwMDYwRTk2
RSAvKiBEZXRlY3RSZWN1cnNpb24uaCAqLywKKwkJCQk1Q0IxM0ZEMzE3OURCM0ZEMDAxRjg1MUQg
LyogRGV0ZWN0Q2FsbERlcHRoLmggKi8sCisJCQkJNUNCMTNGRDIxNzlEQjNGRDAwMUY4NTFEIC8q
IERldGVjdENhbGxEZXB0aC5jcHAgKi8sCiAJCQkJQTI2NTY3QjAxNTlDMjFCMTAwMzk4NTM5IC8q
IERpYWdub3N0aWNzLmNwcCAqLywKIAkJCQlBMjY1NjdCMTE1OUMyMUIxMDAzOTg1MzkgLyogRGlh
Z25vc3RpY3MuaCAqLywKIAkJCQlBMjY1NjdCMjE1OUMyMUIxMDAzOTg1MzkgLyogRGlyZWN0aXZl
SGFuZGxlci5jcHAgKi8sCkBAIC01MzAsNyArNTMwLDYgQEAKIAkJCQlBMjY1NjgzQTE1OUMyM0Ux
MDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1Njgz
QzE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTI2NTY4M0UxNTlDMjNFMTAwMzk4NTM5IC8qIERlcGVuZGVuY3lHcmFwaE91dHB1
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk5NTFDMEMxNEI3QUFEODAwNjBFOTZFIC8qIERldGVj
dFJlY3Vyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NTY3QkMxNTlDMjFCMTAwMzk4NTM5
IC8qIERpYWdub3N0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhBRDE2OTc0REVEMDA2
RkFBNUEgLyogRGlhZ25vc3RpY3NCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY1NjdCRTE1
OUMyMUIxMDAzOTg1MzkgLyogRGlyZWN0aXZlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC01
NjksNiArNTY4LDcgQEAKIAkJCQk5MEQ5QjExODEyRTExREQ2MDAyRDQyNTUgLyogVmFyaWFibGVJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhDQTE2OTc0RTJBMDA2RkFBNUEgLyogVmFy
aWFibGVQYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkwRDlCMTFBMTJFMTFERDYwMDJENDI1
NSAvKiBWZXJzaW9uR0xTTC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNCMTNGRDUxNzlEQjNGRDAw
MUY4NTFEIC8qIERldGVjdENhbGxEZXB0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC02MzUsNyArNjM1
LDYgQEAKIAkJCQlBMjY1NjgzQjE1OUMyM0UxMDAzOTg1MzkgLyogRGVwZW5kZW5jeUdyYXBoQnVp
bGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY1NjgzRDE1OUMyM0UxMDAzOTg1MzkgLyog
RGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2ODNGMTU5
QzIzRTEwMDM5ODUzOSAvKiBEZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk0OTk1MUMwQjE0QjdBQUQ4MDA2MEU5NkUgLyogRGV0ZWN0UmVjdXJzaW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUEyNjU2N0JCMTU5QzIxQjEwMDM5ODUzOSAvKiBEaWFnbm9zdGlj
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY0RjhBQzE2OTc0REVEMDA2RkFBNUEgLyogRGlh
Z25vc3RpY3NCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjU2N0JEMTU5QzIxQjEwMDM5
ODUzOSAvKiBEaXJlY3RpdmVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNjgxLDYgKzY4
MCw3IEBACiAJCQkJOTBEOUIxMTcxMkUxMURENjAwMkQ0MjU1IC8qIFZhcmlhYmxlSW5mby5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMjY0RjhDOTE2OTc0RTJBMDA2RkFBNUEgLyogVmFyaWFibGVQ
YWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTBEOUIxMTkxMkUxMURENjAwMkQ0MjU1IC8q
IFZlcnNpb25HTFNMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQjEzRkQ0MTc5REIzRkQwMDFG
ODUxRCAvKiBEZXRlY3RDYWxsRGVwdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xleHQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xleHQuaAkocmV2aXNpb24gMTUyOTc5
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwNiw2ICszMDYsMTIgQEAgdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElF
TlRSWVAgUEZORUdMUQogI2RlZmluZSBFR0xfU09GVFdBUkVfRElTUExBWV9BTkdMRSAoKEVHTE5h
dGl2ZURpc3BsYXlUeXBlKS0xKQogI2VuZGlmCiAKKyNpZm5kZWYgRUdMX0FOR0xFX2RpcmVjdDNk
X2Rpc3BsYXkKKyNkZWZpbmUgRUdMX0FOR0xFX2RpcmVjdDNkX2Rpc3BsYXkgMQorI2RlZmluZSBF
R0xfRDNEMTFfRUxTRV9EM0Q5X0RJU1BMQVlfQU5HTEUgKChFR0xOYXRpdmVEaXNwbGF5VHlwZSkt
MikKKyNkZWZpbmUgRUdMX0QzRDExX09OTFlfRElTUExBWV9BTkdMRSAoKEVHTE5hdGl2ZURpc3Bs
YXlUeXBlKS0zKQorI2VuZGlmCisKICNpZm5kZWYgRUdMX0FOR0xFX3N1cmZhY2VfZDNkX3RleHR1
cmVfMmRfc2hhcmVfaGFuZGxlCiAjZGVmaW5lIEVHTF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJl
XzJkX3NoYXJlX2hhbmRsZSAxCiAjZGVmaW5lIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5E
TEVfQU5HTEUJMHgzMjAwCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dM
RVMyL2dsMmV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1
ZGUvR0xFUzIvZ2wyZXh0LmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1Niw2ICs1
NTYsNDQgQEAgdHlwZWRlZiB2b2lkKiBHTGVnbEltYWdlT0VTOwogI2RlZmluZSBHTF9DT0xPUl9B
VFRBQ0hNRU5UMTVfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFRgogI2Vu
ZGlmCiAKKy8qIEdMX0VYVF9kcmF3X2J1ZmZlcnMgKi8KKyNpZm5kZWYgR0xfRVhUX2RyYXdfYnVm
ZmVycworI2RlZmluZSBHTF9NQVhfRFJBV19CVUZGRVJTX0VYVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDg4MjQKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIwX0VYVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI1CisjZGVmaW5lIEdMX0RSQVdfQlVG
RkVSMV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyNgorI2Rl
ZmluZSBHTF9EUkFXX0JVRkZFUjJfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDg4MjcKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIzX0VYVCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4ODI4CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSNF9FWFQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyOQorI2RlZmluZSBHTF9E
UkFXX0JVRkZFUjVfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4
MkEKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVI2X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4ODJCCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSN19FWFQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyQworI2RlZmluZSBHTF9EUkFXX0JVRkZF
UjhfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MkQKKyNkZWZp
bmUgR0xfRFJBV19CVUZGRVI5X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4ODJFCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTBfRVhUICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4ODgyRgorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjExX0VYVCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MzAKKyNkZWZpbmUgR0xfRFJB
V19CVUZGRVIxMl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODMx
CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTNfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4ODgzMgorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjE0X0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MzMKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIx
NV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODM0CisjZGVmaW5l
IEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4OENFMAorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMV9FWFQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDhDRTEKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDJfRVhU
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0UyCisjZGVmaW5lIEdMX0NPTE9S
X0FUVEFDSE1FTlQzX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFMwor
I2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UNF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDhDRTQKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDVfRVhUICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U1CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1F
TlQ2X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFNgorI2RlZmluZSBH
TF9DT0xPUl9BVFRBQ0hNRU5UN19FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDhDRTcKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDhfRVhUICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4Q0U4CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ5X0VYVCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFOQorI2RlZmluZSBHTF9DT0xPUl9B
VFRBQ0hNRU5UMTBfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRUEKKyNk
ZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDExX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4Q0VCCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxMl9FWFQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4OENFQworI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5U
MTNfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRUQKKyNkZWZpbmUgR0xf
Q09MT1JfQVRUQUNITUVOVDE0X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
Q0VFCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxNV9FWFQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4OENFRgorI2RlZmluZSBHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhU
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDREYKKyNlbmRpZgorCiAvKiBHTF9OVl9m
Ym9fY29sb3JfYXR0YWNobWVudHMgKi8KICNpZm5kZWYgR0xfTlZfZmJvX2NvbG9yX2F0dGFjaG1l
bnRzCiAjZGVmaW5lIEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UU19OViAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4Q0RGCkBAIC0xMzMxLDYgKzEzNjksMTQgQEAgR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsRHJhd0J1ZmZlcgogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xEUkFXQlVGRkVSU05WUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKTsKICNl
bmRpZgogCisjaWZuZGVmIEdMX0VYVF9kcmF3X2J1ZmZlcnMKKyNkZWZpbmUgR0xfRVhUX2RyYXdf
YnVmZmVycyAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsRHJhd0J1ZmZlcnNFWFQgKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZz
KTsKKyNlbmRpZgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFXQlVGRkVSU0VY
VFBST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcyk7CisjZW5kaWYKKwogLyogR0xf
TlZfZmJvX2NvbG9yX2F0dGFjaG1lbnRzICovCiAjaWZuZGVmIEdMX05WX2Zib19jb2xvcl9hdHRh
Y2htZW50cwogI2RlZmluZSBHTF9OVl9mYm9fY29sb3JfYXR0YWNobWVudHMgMQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFu
Zy5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRl
L0dMU0xBTkcvU2hhZGVyTGFuZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8K
LS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQog
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC03OCw5ICs3OCwxMSBAQCB0eXBl
ZGVmIGVudW0gewogfSBTaFNoYWRlclNwZWM7CiAKIHR5cGVkZWYgZW51bSB7Ci0gIFNIX0VTU0xf
T1VUUFVUID0gMHg4QjQ1LAotICBTSF9HTFNMX09VVFBVVCA9IDB4OEI0NiwKLSAgU0hfSExTTF9P
VVRQVVQgPSAweDhCNDcKKyAgU0hfRVNTTF9PVVRQVVQgICA9IDB4OEI0NSwKKyAgU0hfR0xTTF9P
VVRQVVQgICA9IDB4OEI0NiwKKyAgU0hfSExTTF9PVVRQVVQgICA9IDB4OEI0NywKKyAgU0hfSExT
TDlfT1VUUFVUICA9IDB4OEI0NywKKyAgU0hfSExTTDExX09VVFBVVCA9IDB4OEI0OAogfSBTaFNo
YWRlck91dHB1dDsKIAogdHlwZWRlZiBlbnVtIHsKQEAgLTExNiw3ICsxMTgsOCBAQCB0eXBlZGVm
IGVudW0gewogICBTSF9NQVBQRURfTkFNRV9NQVhfTEVOR1RIICAgICAgPSAgMHg2MDAwLAogICBT
SF9OQU1FX01BWF9MRU5HVEggICAgICAgICAgICAgPSAgMHg2MDAxLAogICBTSF9IQVNIRURfTkFN
RV9NQVhfTEVOR1RIICAgICAgPSAgMHg2MDAyLAotICBTSF9IQVNIRURfTkFNRVNfQ09VTlQgICAg
ICAgICAgPSAgMHg2MDAzCisgIFNIX0hBU0hFRF9OQU1FU19DT1VOVCAgICAgICAgICA9ICAweDYw
MDMsCisgIFNIX0FDVElWRV9VTklGT1JNU19BUlJBWSAgICAgICA9ICAweDYwMDQKIH0gU2hTaGFk
ZXJJbmZvOwogCiAvLyBDb21waWxlIG9wdGlvbnMuCkBAIC0xNTksNyArMTYyLDEzIEBAIHR5cGVk
ZWYgZW51bSB7CiAgIC8vIHZlYzIzNCwgb3IgbWF0MjM0IHR5cGUuIFRoZSBTaEFycmF5SW5kZXhD
bGFtcGluZ1N0cmF0ZWd5IGVudW0sCiAgIC8vIHNwZWNpZmllZCBpbiB0aGUgU2hCdWlsdEluUmVz
b3VyY2VzIHdoZW4gY29uc3RydWN0aW5nIHRoZQogICAvLyBjb21waWxlciwgc2VsZWN0cyB0aGUg
c3RyYXRlZ3kgZm9yIHRoZSBjbGFtcGluZyBpbXBsZW1lbnRhdGlvbi4KLSAgU0hfQ0xBTVBfSU5E
SVJFQ1RfQVJSQVlfQk9VTkRTID0gMHgxMDAwCisgIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JP
VU5EUyA9IDB4MTAwMCwKKworICAvLyBUaGlzIGZsYWcgbGltaXRzIHRoZSBjb21wbGV4aXR5IG9m
IGFuIGV4cHJlc3Npb24uCisgIFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSA9IDB4MjAw
MCwKKworICAvLyBUaGlzIGZsYWcgbGltaXRzIHRoZSBkZXB0aCBvZiB0aGUgY2FsbCBzdGFjay4K
KyAgU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSCA9IDB4NDAwMCwKIH0gU2hDb21waWxlT3B0aW9u
czsKIAogLy8gRGVmaW5lcyBhbHRlcm5hdGUgc3RyYXRlZ2llcyBmb3IgaW1wbGVtZW50aW5nIGFy
cmF5IGluZGV4IGNsYW1waW5nLgpAQCAtMjA5LDYgKzIxOCw3IEBAIHR5cGVkZWYgc3RydWN0CiAg
ICAgaW50IE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWw7CiAgICAgaW50IEFSQl90ZXh0dXJlX3JlY3Rh
bmdsZTsKICAgICBpbnQgRVhUX2RyYXdfYnVmZmVyczsKKyAgICBpbnQgRVhUX2ZyYWdfZGVwdGg7
CiAKICAgICAvLyBTZXQgdG8gMSBpZiBoaWdocCBwcmVjaXNpb24gaXMgc3VwcG9ydGVkIGluIHRo
ZSBmcmFnbWVudCBsYW5ndWFnZS4KICAgICAvLyBEZWZhdWx0IGlzIDAuCkBAIC0yMjIsNiArMjMy
LDEyIEBAIHR5cGVkZWYgc3RydWN0CiAgICAgLy8gU2VsZWN0cyBhIHN0cmF0ZWd5IHRvIHVzZSB3
aGVuIGltcGxlbWVudGluZyBhcnJheSBpbmRleCBjbGFtcGluZy4KICAgICAvLyBEZWZhdWx0IGlz
IFNIX0NMQU1QX1dJVEhfQ0xBTVBfSU5UUklOU0lDLgogICAgIFNoQXJyYXlJbmRleENsYW1waW5n
U3RyYXRlZ3kgQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3k7CisKKyAgICAvLyBUaGUgbWF4aW11
bSBjb21wbGV4aXR5IGFuIGV4cHJlc3Npb24gY2FuIGJlLgorICAgIGludCBNYXhFeHByZXNzaW9u
Q29tcGxleGl0eTsKKworICAgIC8vIFRoZSBtYXhpbXVtIGRlcHRoIGEgY2FsbCBzdGFjayBjYW4g
YmUuCisgICAgaW50IE1heENhbGxTdGFja0RlcHRoOwogfSBTaEJ1aWx0SW5SZXNvdXJjZXM7CiAK
IC8vCkBAIC0yNDgsNyArMjY0LDcgQEAgdHlwZWRlZiB2b2lkKiBTaEhhbmRsZTsKIC8vIHNwZWM6
IFNwZWNpZmllcyB0aGUgbGFuZ3VhZ2Ugc3BlYyB0aGUgY29tcGlsZXIgbXVzdCBjb25mb3JtIHRv
IC0KIC8vICAgICAgIFNIX0dMRVMyX1NQRUMgb3IgU0hfV0VCR0xfU1BFQy4KIC8vIG91dHB1dDog
U3BlY2lmaWVzIHRoZSBvdXRwdXQgY29kZSB0eXBlIC0gU0hfRVNTTF9PVVRQVVQsIFNIX0dMU0xf
T1VUUFVULAotLy8gICAgICAgICBvciBTSF9ITFNMX09VVFBVVC4KKy8vICAgICAgICAgU0hfSExT
TDlfT1VUUFVUIG9yIFNIX0hMU0wxMV9PVVRQVVQuCiAvLyByZXNvdXJjZXM6IFNwZWNpZmllcyB0
aGUgYnVpbHQtaW4gcmVzb3VyY2VzLgogQ09NUElMRVJfRVhQT1JUIFNoSGFuZGxlIFNoQ29uc3Ry
dWN0Q29tcGlsZXIoCiAgICAgU2hTaGFkZXJUeXBlIHR5cGUsCkBAIC00MTEsNiArNDI3LDE4IEBA
IENPTVBJTEVSX0VYUE9SVCB2b2lkIFNoR2V0TmFtZUhhc2hpbmdFbnQKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIGhhc2hlZE5hbWUpOwogCisvLyBSZXR1
cm5zIGEgcGFyYW1ldGVyIGZyb20gYSBjb21waWxlZCBzaGFkZXIuCisvLyBQYXJhbWV0ZXJzOgor
Ly8gaGFuZGxlOiBTcGVjaWZpZXMgdGhlIGNvbXBpbGVyCisvLyBwbmFtZTogU3BlY2lmaWVzIHRo
ZSBwYXJhbWV0ZXIgdG8gcXVlcnkuCisvLyBUaGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgYXJlIGRl
ZmluZWQ6CisvLyBTSF9BQ1RJVkVfVU5JRk9STVNfQVJSQVk6IGFuIFNUTCB2ZWN0b3Igb2YgYWN0
aXZlIHVuaWZvcm1zLiBWYWxpZCBvbmx5IGZvcgorLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICBITFNMIG91dHB1dC4KKy8vIHBhcmFtczogUmVxdWVzdGVkIHBhcmFtZXRlcgorQ09NUElMRVJf
RVhQT1JUIHZvaWQgU2hHZXRJbmZvUG9pbnRlcihjb25zdCBTaEhhbmRsZSBoYW5kbGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVySW5mbyBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCoqIHBhcmFtcyk7CisKICNp
ZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvQU5HTEUuc2xuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9BTkdMRS5zbG4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
QU5HTEUuc2xuCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACivvu78NCitNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMS4wMA0KKyMgVmlz
dWFsIEMrKyBFeHByZXNzIDIwMTANCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEt
MDBBMEM5MUJDOTQyfSIpID0gImxpYkVHTCIsICJsaWJFR0xcbGliRUdMLnZjeHByb2oiLCAie0U3
NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0iDQorRW5kUHJvamVjdA0KK1Byb2pl
Y3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibGliR0xFU3Yy
IiwgImxpYkdMRVN2MlxsaWJHTEVTdjIudmN4cHJvaiIsICJ7QjU4NzFBN0EtOTY4Qy00MkUzLUEz
M0ItOTgxRTZGNDQ4RTc4fSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEt
MTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0cmFuc2xhdG9yX2hsc2wiLCAiY29tcGlsZXJc
dHJhbnNsYXRvcl9obHNsLnZjeHByb2oiLCAiezU2MjBGMEU0LTZDNDMtNDlCQy1BMTc4LUI4MDRF
MUEwQzNBN30iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQx
MS0wMEEwQzkxQkM5NDJ9IikgPSAidHJhbnNsYXRvcl9jb21tb24iLCAiY29tcGlsZXJcdHJhbnNs
YXRvcl9jb21tb24udmN4cHJvaiIsICJ7NUIzQTZEQjgtMUU3RS00MEQ3LTkyQjktREE4QUFFNjE5
RkFEfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAw
QTBDOTFCQzk0Mn0iKSA9ICJwcmVwcm9jZXNzb3IiLCAiY29tcGlsZXJccHJlcHJvY2Vzc29yXHBy
ZXByb2Nlc3Nvci52Y3hwcm9qIiwgIntGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMz
MjV9Ig0KK0VuZFByb2plY3QNCitHbG9iYWwNCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZp
Z3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCisJCURlYnVnfFdpbjMyID0gRGVidWd8
V2luMzINCisJCURlYnVnfHg2NCA9IERlYnVnfHg2NA0KKwkJUmVsZWFzZXxXaW4zMiA9IFJlbGVh
c2V8V2luMzINCisJCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4NjQNCisJRW5kR2xvYmFsU2VjdGlv
bg0KKwlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RT
b2x1dGlvbg0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uRGVidWd8
V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtFNzQ2RkNBOS02NEMzLTQzM0UtODVF
OC05QTVBNjdBQjdFRDZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0U3
NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9
IERlYnVnfHg2NA0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uRGVi
dWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtFNzQ2RkNBOS02NEMzLTQzM0UtODVFOC05
QTVBNjdBQjdFRDZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJ
e0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FCN0VENn0uUmVsZWFzZXxXaW4zMi5CdWls
ZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U3NDZGQ0E5LTY0QzMtNDMzRS04NUU4LTlBNUE2N0FC
N0VENn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtFNzQ2RkNBOS02
NEMzLTQzM0UtODVFOC05QTVBNjdBQjdFRDZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNl
fHg2NA0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uRGVidWd8V2lu
MzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05
ODFFNkY0NDhFNzh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0I1ODcx
QTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERl
YnVnfHg2NA0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uRGVidWd8
eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtCNTg3MUE3QS05NjhDLTQyRTMtQTMzQi05ODFF
NkY0NDhFNzh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0I1
ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3OH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4w
ID0gUmVsZWFzZXxXaW4zMg0KKwkJe0I1ODcxQTdBLTk2OEMtNDJFMy1BMzNCLTk4MUU2RjQ0OEU3
OH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtCNTg3MUE3QS05NjhD
LTQyRTMtQTMzQi05ODFFNkY0NDhFNzh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2
NA0KKwkJezU2MjBGMEU0LTZDNDMtNDlCQy1BMTc4LUI4MDRFMUEwQzNBN30uRGVidWd8V2luMzIu
QWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs1NjIwRjBFNC02QzQzLTQ5QkMtQTE3OC1CODA0
RTFBMEMzQTd9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezU2MjBGMEU0
LTZDNDMtNDlCQy1BMTc4LUI4MDRFMUEwQzNBN30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVn
fHg2NA0KKwkJezU2MjBGMEU0LTZDNDMtNDlCQy1BMTc4LUI4MDRFMUEwQzNBN30uRGVidWd8eDY0
LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs1NjIwRjBFNC02QzQzLTQ5QkMtQTE3OC1CODA0RTFB
MEMzQTd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezU2MjBG
MEU0LTZDNDMtNDlCQy1BMTc4LUI4MDRFMUEwQzNBN30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0g
UmVsZWFzZXxXaW4zMg0KKwkJezU2MjBGMEU0LTZDNDMtNDlCQy1BMTc4LUI4MDRFMUEwQzNBN30u
UmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs1NjIwRjBFNC02QzQzLTQ5
QkMtQTE3OC1CODA0RTFBMEMzQTd9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0K
KwkJezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uRGVidWd8V2luMzIuQWN0
aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs1QjNBNkRCOC0xRTdFLTQwRDctOTJCOS1EQThBQUU2
MTlGQUR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezVCM0E2REI4LTFF
N0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2
NA0KKwkJezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uRGVidWd8eDY0LkJ1
aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs1QjNBNkRCOC0xRTdFLTQwRDctOTJCOS1EQThBQUU2MTlG
QUR9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezVCM0E2REI4
LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVs
ZWFzZXxXaW4zMg0KKwkJezVCM0E2REI4LTFFN0UtNDBENy05MkI5LURBOEFBRTYxOUZBRH0uUmVs
ZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs1QjNBNkRCOC0xRTdFLTQwRDct
OTJCOS1EQThBQUU2MTlGQUR9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJ
e0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uRGVidWd8V2luMzIuQWN0aXZl
Q2ZnID0gRGVidWd8V2luMzINCisJCXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMz
MjV9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0ZCRTMyREYzLTBGQjAt
NEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0K
KwkJe0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uRGVidWd8eDY0LkJ1aWxk
LjAgPSBEZWJ1Z3x4NjQNCisJCXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3QkMzMjV9
LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0ZCRTMyREYzLTBG
QjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFz
ZXxXaW4zMg0KKwkJe0ZCRTMyREYzLTBGQjAtNEYyRi1BNDI0LTJDMjFCRDdCQzMyNX0uUmVsZWFz
ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGQkUzMkRGMy0wRkIwLTRGMkYtQTQy
NC0yQzIxQkQ3QkMzMjV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwlFbmRH
bG9iYWxTZWN0aW9uDQorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNv
bHV0aW9uDQorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCisJRW5kR2xvYmFsU2VjdGlvbg0K
K0VuZEdsb2JhbA0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9idWlsZF9hbmds
ZS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2J1aWxkX2Fu
Z2xlLmd5cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9idWls
ZF9hbmdsZS5neXAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKyMgQ29weXJpZ2h0IChj
KSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworeworICAnaW5j
bHVkZXMnOiBbCisgICAgJ2J1aWxkX2FuZ2xlLmd5cGknLAorICBdLAorfQorCisjIExvY2FsIFZh
cmlhYmxlczoKKyMgdGFiLXdpZHRoOjIKKyMgaW5kZW50LXRhYnMtbW9kZTpuaWwKKyMgRW5kOgor
IyB2aW06IHNldCBleHBhbmR0YWIgdGFic3RvcD0yIHNoaWZ0d2lkdGg9MjoKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9idWlsZF9hbmdsZS5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9idWlsZF9hbmdsZS5neXBpCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2J1aWxkX2FuZ2xlLmd5cGkJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDIwIEBACisjIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK3sKKyAgJ3ZhcmlhYmxlcyc6IHsKKyAgICAnYW5n
bGVfY29kZSc6IDEsCisgIH0sCisgICd0YXJnZXRfZGVmYXVsdHMnOiB7CisgICAgJ2RlZmluZXMn
OiBbCisgICAgICAnQU5HTEVfRElTQUJMRV9UUkFDRScsCisgICAgICAnQU5HTEVfQ09NUElMRV9P
UFRJTUlaQVRJT05fTEVWRUw9RDNEQ09NUElMRV9PUFRJTUlaQVRJT05fTEVWRUwxJywKKyAgICAg
ICdBTkdMRV9QUkVMT0FERURfRDNEQ09NUElMRVJfTU9EVUxFX05BTUVTPXsgVEVYVCgiZDNkY29t
cGlsZXJfNDYuZGxsIiksIFRFWFQoImQzZGNvbXBpbGVyXzQzLmRsbCIpIH0nLAorICAgIF0sCisg
IH0sCisgICd0YXJnZXRzJzogWworICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICdwcmVwcm9j
ZXNzb3InLAorICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAorICAgICAgJ2luY2x1ZGVf
ZGlycyc6IFsKKyAgICAgIF0sCisgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAgJ2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9j
ZXNzb3IvRGlyZWN0aXZlSGFuZGxlckJhc2UuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9EaXJlY3RpdmVIYW5kbGVyQmFzZS5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9EaXJlY3RpdmVQYXJzZXIuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9EaXJlY3RpdmVQYXJzZXIuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3Iv
RXhwcmVzc2lvblBhcnNlci5jcHAnLAorICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4
cHJlc3Npb25QYXJzZXIuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQu
Y3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5oJywKKyAgICAgICAg
J2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9sZW5ndGhfbGltaXRzLmgnLAorICAgICAgICAnY29tcGls
ZXIvcHJlcHJvY2Vzc29yL0xleGVyLmNwcCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNz
b3IvTGV4ZXIuaCcsCisgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm8uY3BwJywK
KyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyby5oJywKKyAgICAgICAgJ2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmNwcCcsCisgICAgICAgICdjb21waWxlci9w
cmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9udW1lcmljX2xleC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcF91
dGlscy5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3Bw
JywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuaCcsCisgICAg
ICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvU291cmNlTG9jYXRpb24uaCcsCisgICAgICAgICdj
b21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9Ub2tlbi5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6
ZXIuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuaCcsCisg
ICAgICBdLAorICAgICAgIyBUT0RPKGpzY2h1aCk6IGh0dHA6Ly9jcmJ1Zy5jb20vMTY3MTg3Cisg
ICAgICAnbXN2c19kaXNhYmxlZF93YXJuaW5ncyc6IFsKKyAgICAgICAgNDI2NywKKyAgICAgIF0s
ICAgICAgCisgICAgfSwKKyAgICB7CisgICAgICAndGFyZ2V0X25hbWUnOiAndHJhbnNsYXRvcl9j
b21tb24nLAorICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAorICAgICAgJ2RlcGVuZGVu
Y2llcyc6IFsncHJlcHJvY2Vzc29yJ10sCisgICAgICAnaW5jbHVkZV9kaXJzJzogWworICAgICAg
ICAnLicsCisgICAgICAgICcuLi9pbmNsdWRlJywKKyAgICAgIF0sCisgICAgICAnZGVmaW5lcyc6
IFsKKyAgICAgICAgJ0NPTVBJTEVSX0lNUExFTUVOVEFUSU9OJywKKyAgICAgIF0sCisgICAgICAn
c291cmNlcyc6IFsKKyAgICAgICAgJ2NvbXBpbGVyL0Jhc2VUeXBlcy5oJywKKyAgICAgICAgJ2Nv
bXBpbGVyL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCcsCisgICAgICAgICdjb21waWxlci9C
dWlsdEluRnVuY3Rpb25FbXVsYXRvci5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0NvbW1vbi5oJywK
KyAgICAgICAgJ2NvbXBpbGVyL0NvbXBpbGVyLmNwcCcsCisgICAgICAgICdjb21waWxlci9Db25z
dGFudFVuaW9uLmgnLAorICAgICAgICAnY29tcGlsZXIvZGVidWcuY3BwJywKKyAgICAgICAgJ2Nv
bXBpbGVyL2RlYnVnLmgnLAorICAgICAgICAnY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmNwcCcs
CisgICAgICAgICdjb21waWxlci9EZXRlY3RDYWxsRGVwdGguaCcsCisgICAgICAgICdjb21waWxl
ci9EaWFnbm9zdGljcy5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0RpYWdub3N0aWNzLmNwcCcsCisg
ICAgICAgICdjb21waWxlci9EaXJlY3RpdmVIYW5kbGVyLmgnLAorICAgICAgICAnY29tcGlsZXIv
RGlyZWN0aXZlSGFuZGxlci5jcHAnLAorICAgICAgICAnY29tcGlsZXIvRXh0ZW5zaW9uQmVoYXZp
b3IuaCcsCisgICAgICAgICdjb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcCcsCisgICAgICAgICdj
b21waWxlci9Gb3JMb29wVW5yb2xsLmgnLAorICAgICAgICAnY29tcGlsZXIvZ2xzbGFuZy5oJywK
KyAgICAgICAgJ2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcCcsCisgICAgICAgICdjb21waWxlci9n
bHNsYW5nX3RhYi5jcHAnLAorICAgICAgICAnY29tcGlsZXIvZ2xzbGFuZ190YWIuaCcsCisgICAg
ICAgICdjb21waWxlci9IYXNoTmFtZXMuaCcsCisgICAgICAgICdjb21waWxlci9JbmZvU2luay5j
cHAnLAorICAgICAgICAnY29tcGlsZXIvSW5mb1NpbmsuaCcsCisgICAgICAgICdjb21waWxlci9J
bml0aWFsaXplLmNwcCcsCisgICAgICAgICdjb21waWxlci9Jbml0aWFsaXplLmgnLAorICAgICAg
ICAnY29tcGlsZXIvSW5pdGlhbGl6ZURsbC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvSW5pdGlh
bGl6ZURsbC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0luaXRpYWxpemVHbG9iYWxzLmgnLAorICAg
ICAgICAnY29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAnLAorICAgICAgICAnY29t
cGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oJywKKyAgICAgICAgJ2NvbXBpbGVyL0ludGVy
bWVkaWF0ZS5jcHAnLAorICAgICAgICAnY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgnLAorICAgICAg
ICAnY29tcGlsZXIvaW50ZXJtT3V0LmNwcCcsCisgICAgICAgICdjb21waWxlci9JbnRlcm1UcmF2
ZXJzZS5jcHAnLAorICAgICAgICAnY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaCcsCisgICAg
ICAgICdjb21waWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHAnLAorICAgICAgICAnY29tcGls
ZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaCcsCisgICAgICAgICdjb21waWxlci9NTWFwLmgnLAor
ICAgICAgICAnY29tcGlsZXIvb3NpbmNsdWRlLmgnLAorICAgICAgICAnY29tcGlsZXIvcGFyc2VD
b25zdC5jcHAnLAorICAgICAgICAnY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwJywKKyAgICAgICAg
J2NvbXBpbGVyL1BhcnNlSGVscGVyLmgnLAorICAgICAgICAnY29tcGlsZXIvUG9vbEFsbG9jLmNw
cCcsCisgICAgICAgICdjb21waWxlci9Qb29sQWxsb2MuaCcsCisgICAgICAgICdjb21waWxlci9R
dWFsaWZpZXJBbGl2ZS5jcHAnLAorICAgICAgICAnY29tcGlsZXIvUXVhbGlmaWVyQWxpdmUuaCcs
CisgICAgICAgICdjb21waWxlci9SZW1vdmVUcmVlLmNwcCcsCisgICAgICAgICdjb21waWxlci9S
ZW1vdmVUcmVlLmgnLAorICAgICAgICAnY29tcGlsZXIvUmVuYW1lRnVuY3Rpb24uaCcsCisgICAg
ICAgICdjb21waWxlci9TaEhhbmRsZS5oJywKKyAgICAgICAgJ2NvbXBpbGVyL1N5bWJvbFRhYmxl
LmNwcCcsCisgICAgICAgICdjb21waWxlci9TeW1ib2xUYWJsZS5oJywKKyAgICAgICAgJ2NvbXBp
bGVyL1R5cGVzLmgnLAorICAgICAgICAnY29tcGlsZXIvVW5pZm9ybS5jcHAnLAorICAgICAgICAn
Y29tcGlsZXIvVW5pZm9ybS5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3V0aWwuY3BwJywKKyAgICAg
ICAgJ2NvbXBpbGVyL3V0aWwuaCcsCisgICAgICAgICdjb21waWxlci9WYWxpZGF0ZUxpbWl0YXRp
b25zLmNwcCcsCisgICAgICAgICdjb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmgnLAorICAg
ICAgICAnY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcCcsCisgICAgICAgICdjb21waWxlci9WYXJp
YWJsZUluZm8uaCcsCisgICAgICAgICdjb21waWxlci9WYXJpYWJsZVBhY2tlci5jcHAnLAorICAg
ICAgICAnY29tcGlsZXIvVmFyaWFibGVQYWNrZXIuaCcsCisgICAgICAgICMgRGVwZW5kZW5jeSBn
cmFwaAorICAgICAgICAnY29tcGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmNwcCcsCisg
ICAgICAgICdjb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguaCcsCisgICAgICAgICdj
b21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCcsCisgICAgICAgICdj
b21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmgnLAorICAgICAgICAnY29t
cGlsZXIvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmNwcCcsCisgICAgICAgICdjb21w
aWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuaCcsCisgICAgICAgICdjb21waWxl
ci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAnLAorICAgICAgICAjIFRpbWlu
ZyByZXN0cmljdGlvbnMKKyAgICAgICAgJ2NvbXBpbGVyL3RpbWluZy9SZXN0cmljdEZyYWdtZW50
U2hhZGVyVGltaW5nLmNwcCcsCisgICAgICAgICdjb21waWxlci90aW1pbmcvUmVzdHJpY3RGcmFn
bWVudFNoYWRlclRpbWluZy5oJywKKyAgICAgICAgJ2NvbXBpbGVyL3RpbWluZy9SZXN0cmljdFZl
cnRleFNoYWRlclRpbWluZy5jcHAnLAorICAgICAgICAnY29tcGlsZXIvdGltaW5nL1Jlc3RyaWN0
VmVydGV4U2hhZGVyVGltaW5nLmgnLAorICAgICAgICAndGhpcmRfcGFydHkvY29tcGlsZXIvQXJy
YXlCb3VuZHNDbGFtcGVyLmNwcCcsCisgICAgICAgICd0aGlyZF9wYXJ0eS9jb21waWxlci9BcnJh
eUJvdW5kc0NsYW1wZXIuaCcsCisgICAgICBdLAorICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAg
ICAgIFsnT1M9PSJ3aW4iJywgeworICAgICAgICAgICMgVE9ETyhqc2NodWgpOiBodHRwOi8vY3Ji
dWcuY29tLzE2NzE4NyBzaXplX3QgLT4gaW50CisgICAgICAgICAgJ21zdnNfZGlzYWJsZWRfd2Fy
bmluZ3MnOiBbIDQyNjcgXSwKKyAgICAgICAgICAnc291cmNlcyc6IFsnY29tcGlsZXIvb3Nzb3Vy
Y2Vfd2luLmNwcCddLAorICAgICAgICB9LCB7ICMgZWxzZTogcG9zaXgKKyAgICAgICAgICAnc291
cmNlcyc6IFsnY29tcGlsZXIvb3Nzb3VyY2VfcG9zaXguY3BwJ10sCisgICAgICAgIH1dLAorICAg
ICAgXSwKKyAgICB9LAorICAgIHsKKyAgICAgICd0YXJnZXRfbmFtZSc6ICd0cmFuc2xhdG9yX2ds
c2wnLAorICAgICAgJ3R5cGUnOiAnPChjb21wb25lbnQpJywKKyAgICAgICdkZXBlbmRlbmNpZXMn
OiBbJ3RyYW5zbGF0b3JfY29tbW9uJ10sCisgICAgICAnaW5jbHVkZV9kaXJzJzogWworICAgICAg
ICAnLicsCisgICAgICAgICcuLi9pbmNsdWRlJywKKyAgICAgIF0sCisgICAgICAnZGVmaW5lcyc6
IFsKKyAgICAgICAgJ0NPTVBJTEVSX0lNUExFTUVOVEFUSU9OJywKKyAgICAgIF0sCisgICAgICAn
c291cmNlcyc6IFsKKyAgICAgICAgJ2NvbXBpbGVyL0NvZGVHZW5HTFNMLmNwcCcsCisgICAgICAg
ICdjb21waWxlci9PdXRwdXRFU1NMLmNwcCcsCisgICAgICAgICdjb21waWxlci9PdXRwdXRFU1NM
LmgnLCAgICAgICAgCisgICAgICAgICdjb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAnLAorICAg
ICAgICAnY29tcGlsZXIvT3V0cHV0R0xTTEJhc2UuaCcsCisgICAgICAgICdjb21waWxlci9PdXRw
dXRHTFNMLmNwcCcsCisgICAgICAgICdjb21waWxlci9PdXRwdXRHTFNMLmgnLAorICAgICAgICAn
Y29tcGlsZXIvU2hhZGVyTGFuZy5jcHAnLAorICAgICAgICAnY29tcGlsZXIvVHJhbnNsYXRvckVT
U0wuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1RyYW5zbGF0b3JFU1NMLmgnLAorICAgICAgICAn
Y29tcGlsZXIvVHJhbnNsYXRvckdMU0wuY3BwJywKKyAgICAgICAgJ2NvbXBpbGVyL1RyYW5zbGF0
b3JHTFNMLmgnLAorICAgICAgICAnY29tcGlsZXIvVmVyc2lvbkdMU0wuY3BwJywKKyAgICAgICAg
J2NvbXBpbGVyL1ZlcnNpb25HTFNMLmgnLAorICAgICAgXSwKKyAgICAgICMgVE9ETyhqc2NodWgp
OiBodHRwOi8vY3JidWcuY29tLzE2NzE4NyBzaXplX3QgLT4gaW50CisgICAgICAnbXN2c19kaXNh
YmxlZF93YXJuaW5ncyc6IFsgNDI2NyBdLAorICAgIH0sCisgIF0sCisgICdjb25kaXRpb25zJzog
WworICAgIFsnT1M9PSJ3aW4iJywgeworICAgICAgJ3RhcmdldHMnOiBbCisgICAgICAgIHsKKyAg
ICAgICAgICAndGFyZ2V0X25hbWUnOiAndHJhbnNsYXRvcl9obHNsJywKKyAgICAgICAgICAndHlw
ZSc6ICc8KGNvbXBvbmVudCknLAorICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbJ3RyYW5zbGF0
b3JfY29tbW9uJ10sCisgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKKyAgICAgICAgICAgICcu
JywKKyAgICAgICAgICAgICcuLi9pbmNsdWRlJywKKyAgICAgICAgICBdLAorICAgICAgICAgICdk
ZWZpbmVzJzogWworICAgICAgICAgICAgJ0NPTVBJTEVSX0lNUExFTUVOVEFUSU9OJywKKyAgICAg
ICAgICBdLAorICAgICAgICAgICdzb3VyY2VzJzogWworICAgICAgICAgICAgJ2NvbXBpbGVyL1No
YWRlckxhbmcuY3BwJywKKyAgICAgICAgICAgICdjb21waWxlci9EZXRlY3REaXNjb250aW51aXR5
LmNwcCcsCisgICAgICAgICAgICAnY29tcGlsZXIvRGV0ZWN0RGlzY29udGludWl0eS5oJywKKyAg
ICAgICAgICAgICdjb21waWxlci9Db2RlR2VuSExTTC5jcHAnLAorICAgICAgICAgICAgJ2NvbXBp
bGVyL091dHB1dEhMU0wuY3BwJywKKyAgICAgICAgICAgICdjb21waWxlci9PdXRwdXRITFNMLmgn
LAorICAgICAgICAgICAgJ2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmNwcCcsCisgICAgICAgICAg
ICAnY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuaCcsCisgICAgICAgICAgICAnY29tcGlsZXIvVW5m
b2xkU2hvcnRDaXJjdWl0LmNwcCcsCisgICAgICAgICAgICAnY29tcGlsZXIvVW5mb2xkU2hvcnRD
aXJjdWl0LmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL1NlYXJjaFN5bWJvbC5jcHAnLAorICAg
ICAgICAgICAgJ2NvbXBpbGVyL1NlYXJjaFN5bWJvbC5oJywKKyAgICAgICAgICBdLAorICAgICAg
ICAgICMgVE9ETyhqc2NodWgpOiBodHRwOi8vY3JidWcuY29tLzE2NzE4NyBzaXplX3QgLT4gaW50
CisgICAgICAgICAgJ21zdnNfZGlzYWJsZWRfd2FybmluZ3MnOiBbIDQyNjcgXSwKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdsaWJHTEVTdjInLAorICAg
ICAgICAgICd0eXBlJzogJ3NoYXJlZF9saWJyYXJ5JywKKyAgICAgICAgICAnZGVwZW5kZW5jaWVz
JzogWyd0cmFuc2xhdG9yX2hsc2wnXSwKKyAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWworICAg
ICAgICAgICAgJy4nLAorICAgICAgICAgICAgJy4uL2luY2x1ZGUnLAorICAgICAgICAgICAgJ2xp
YkdMRVN2MicsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnc291cmNlcyc6IFsKKyAgICAgICAg
ICAgICd0aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmgnLAorICAgICAgICAgICAg
J3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuY3BwJywKKyAgICAgICAgICAgICdj
b21tb24vYW5nbGV1dGlscy5oJywKKyAgICAgICAgICAgICdjb21tb24vZGVidWcuY3BwJywKKyAg
ICAgICAgICAgICdjb21tb24vZGVidWcuaCcsCisgICAgICAgICAgICAnY29tbW9uL1JlZkNvdW50
T2JqZWN0LmNwcCcsCisgICAgICAgICAgICAnY29tbW9uL1JlZkNvdW50T2JqZWN0LmgnLAorICAg
ICAgICAgICAgJ2NvbW1vbi92ZXJzaW9uLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9wcmVj
b21waWxlZC5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcHJlY29tcGlsZWQuY3BwJywKKyAg
ICAgICAgICAgICdsaWJHTEVTdjIvQmluYXJ5U3RyZWFtLmgnLAorICAgICAgICAgICAgJ2xpYkdM
RVN2Mi9CdWZmZXIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvQnVmZmVyLmgnLAorICAg
ICAgICAgICAgJ2xpYkdMRVN2Mi9jb25zdGFudHMuaCcsCisgICAgICAgICAgICAnbGliR0xFU3Yy
L0NvbnRleHQuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvQ29udGV4dC5oJywKKyAgICAg
ICAgICAgICdsaWJHTEVTdjIvYW5nbGV0eXBlcy5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIv
RmVuY2UuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvRmVuY2UuaCcsCisgICAgICAgICAg
ICAnbGliR0xFU3YyL0Zsb2F0MTZUb0Zsb2F0MzIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVT
djIvRnJhbWVidWZmZXIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvRnJhbWVidWZmZXIu
aCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL0hhbmRsZUFsbG9jYXRvci5jcHAnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuaCcsCisgICAgICAgICAgICAnbGliR0xF
U3YyL2xpYkdMRVN2Mi5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVm
JywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvbGliR0xFU3YyLnJjJywKKyAgICAgICAgICAgICds
aWJHTEVTdjIvbWFpbi5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9tYWluLmgnLAorICAg
ICAgICAgICAgJ2xpYkdMRVN2Mi9tYXRodXRpbC5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIv
UHJvZ3JhbS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9Qcm9ncmFtLmgnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2Mi9Qcm9ncmFtQmluYXJ5LmNwcCcsCisgICAgICAgICAgICAnbGliR0xF
U3YyL1Byb2dyYW1CaW5hcnkuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1F1ZXJ5LmgnLAor
ICAgICAgICAgICAgJ2xpYkdMRVN2Mi9RdWVyeS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2
Mi9SZW5kZXJidWZmZXIuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvUmVuZGVyYnVmZmVy
LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9CbGl0LmNwcCcsCisgICAgICAg
ICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuaCcsCisgICAgICAgICAgICAnbGliR0xFU3Yy
L3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2UuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRl
cmVyL0J1ZmZlclN0b3JhZ2UuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIv
QnVmZmVyU3RvcmFnZTkuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvQnVm
ZmVyU3RvcmFnZTkuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0
b3JhZ2UxMS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9y
YWdlMTEuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlSW1wbC5oJywK
KyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvRmVuY2U5LmNwcCcsCisgICAgICAgICAg
ICAnbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlOS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIv
cmVuZGVyZXIvRmVuY2UxMS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9G
ZW5jZTExLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9nZW5lcmF0ZW1pcC5o
JywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UuY3BwJywKKyAgICAgICAg
ICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UuaCcsCisgICAgICAgICAgICAnbGliR0xFU3Yy
L3JlbmRlcmVyL0ltYWdlMTEuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIv
SW1hZ2UxMS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2U5LmNwcCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlOS5oJywKKyAgICAgICAgICAg
ICdsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2VTU0UyLmNwcCcsCisgICAgICAgICAgICAnbGliR0xF
U3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3Jl
bmRlcmVyL0luZGV4QnVmZmVyLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9J
bmRleEJ1ZmZlcjkuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhC
dWZmZXI5LmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjEx
LmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuaCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuY3BwJywK
KyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5oJywKKyAg
ICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5jcHAnLAorICAg
ICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9JbnB1dExheW91dENhY2hlLmgnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeUltcGwuaCcsCisgICAgICAgICAgICAnbGli
R0xFU3YyL3JlbmRlcmVyL1F1ZXJ5OS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5k
ZXJlci9RdWVyeTkuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5MTEu
Y3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvUXVlcnkxMS5oJywKKyAgICAg
ICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuY3BwJywKKyAgICAgICAgICAgICds
aWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3Jl
bmRlcmVyL1JlbmRlcmVyMTEuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyZXIxMS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXIx
MV91dGlscy5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjEx
X3V0aWxzLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuY3Bw
JywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmgnLAorICAgICAg
ICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuY3BwJywKKyAgICAgICAg
ICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmgnLAorICAgICAgICAgICAg
J2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJTdGF0ZUNhY2hlLmNwcCcsCisgICAgICAgICAgICAn
bGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclN0YXRlQ2FjaGUuaCcsCisgICAgICAgICAgICAnbGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldC5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIv
cmVuZGVyZXIvUmVuZGVyVGFyZ2V0MTEuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRl
cmVyL1JlbmRlclRhcmdldDExLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVy
L1JlbmRlclRhcmdldDkuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRl
clRhcmdldDkuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyQ2Fj
aGUuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUu
aCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGU5LmNw
cCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGU5Lmgn
LAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEuY3Bw
JywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTExLmgn
LAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4uaCcsCisgICAgICAg
ICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjkuY3BwJywKKyAgICAgICAgICAgICds
aWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5oJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIv
cmVuZGVyZXIvU3dhcENoYWluMTEuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvcmVuZGVy
ZXIvU3dhcENoYWluMTEuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1
cmVTdG9yYWdlLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVT
dG9yYWdlLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFn
ZTExLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdl
MTEuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlOS5j
cHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTkuaCcs
CisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5jcHAnLAorICAg
ICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIuaCcsCisgICAgICAgICAg
ICAnbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuY3BwJywKKyAgICAgICAgICAgICds
aWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyOS5oJywKKyAgICAgICAgICAgICdsaWJHTEVT
djIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuY3BwJywKKyAgICAgICAgICAgICdsaWJHTEVTdjIv
cmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRl
cmVyL3ZlcnRleGNvbnZlcnNpb24uaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVy
L1ZlcnRleERhdGFNYW5hZ2VyLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRlcmVy
L1ZlcnRleERhdGFNYW5hZ2VyLmgnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9yZW5kZXJlci9W
ZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmNwcCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL3JlbmRl
cmVyL1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1Jl
c291cmNlTWFuYWdlci5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFn
ZXIuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1NoYWRlci5jcHAnLAorICAgICAgICAgICAg
J2xpYkdMRVN2Mi9TaGFkZXIuaCcsCisgICAgICAgICAgICAnbGliR0xFU3YyL1RleHR1cmUuY3Bw
JywKKyAgICAgICAgICAgICdsaWJHTEVTdjIvVGV4dHVyZS5oJywKKyAgICAgICAgICAgICdsaWJH
TEVTdjIvVW5pZm9ybS5jcHAnLAorICAgICAgICAgICAgJ2xpYkdMRVN2Mi9Vbmlmb3JtLmgnLAor
ICAgICAgICAgICAgJ2xpYkdMRVN2Mi91dGlsaXRpZXMuY3BwJywKKyAgICAgICAgICAgICdsaWJH
TEVTdjIvdXRpbGl0aWVzLmgnLAorICAgICAgICAgIF0sCisgICAgICAgICAgIyBUT0RPKGpzY2h1
aCk6IGh0dHA6Ly9jcmJ1Zy5jb20vMTY3MTg3IHNpemVfdCAtPiBpbnQKKyAgICAgICAgICAnbXN2
c19kaXNhYmxlZF93YXJuaW5ncyc6IFsgNDI2NyBdLAorICAgICAgICAgICdtc3ZzX3NldHRpbmdz
JzogeworICAgICAgICAgICAgJ1ZDTGlua2VyVG9vbCc6IHsKKyAgICAgICAgICAgICAgJ0FkZGl0
aW9uYWxEZXBlbmRlbmNpZXMnOiBbCisgICAgICAgICAgICAgICAgJ2QzZDkubGliJywKKyAgICAg
ICAgICAgICAgICAnZHhndWlkLmxpYicsCisgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICB9
CisgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICd0YXJnZXRf
bmFtZSc6ICdsaWJFR0wnLAorICAgICAgICAgICd0eXBlJzogJ3NoYXJlZF9saWJyYXJ5JywKKyAg
ICAgICAgICAnZGVwZW5kZW5jaWVzJzogWydsaWJHTEVTdjInXSwKKyAgICAgICAgICAnaW5jbHVk
ZV9kaXJzJzogWworICAgICAgICAgICAgJy4nLAorICAgICAgICAgICAgJy4uL2luY2x1ZGUnLAor
ICAgICAgICAgICAgJ2xpYkdMRVN2MicsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnc291cmNl
cyc6IFsKKyAgICAgICAgICAgICdjb21tb24vYW5nbGV1dGlscy5oJywKKyAgICAgICAgICAgICdj
b21tb24vZGVidWcuY3BwJywKKyAgICAgICAgICAgICdjb21tb24vZGVidWcuaCcsCisgICAgICAg
ICAgICAnY29tbW9uL1JlZkNvdW50T2JqZWN0LmNwcCcsCisgICAgICAgICAgICAnY29tbW9uL1Jl
ZkNvdW50T2JqZWN0LmgnLAorICAgICAgICAgICAgJ2NvbW1vbi92ZXJzaW9uLmgnLAorICAgICAg
ICAgICAgJ2xpYkVHTC9Db25maWcuY3BwJywKKyAgICAgICAgICAgICdsaWJFR0wvQ29uZmlnLmgn
LAorICAgICAgICAgICAgJ2xpYkVHTC9EaXNwbGF5LmNwcCcsCisgICAgICAgICAgICAnbGliRUdM
L0Rpc3BsYXkuaCcsCisgICAgICAgICAgICAnbGliRUdML2xpYkVHTC5jcHAnLAorICAgICAgICAg
ICAgJ2xpYkVHTC9saWJFR0wuZGVmJywKKyAgICAgICAgICAgICdsaWJFR0wvbGliRUdMLnJjJywK
KyAgICAgICAgICAgICdsaWJFR0wvbWFpbi5jcHAnLAorICAgICAgICAgICAgJ2xpYkVHTC9tYWlu
LmgnLAorICAgICAgICAgICAgJ2xpYkVHTC9TdXJmYWNlLmNwcCcsCisgICAgICAgICAgICAnbGli
RUdML1N1cmZhY2UuaCcsCisgICAgICAgICAgXSwKKyAgICAgICAgICAjIFRPRE8oanNjaHVoKTog
aHR0cDovL2NyYnVnLmNvbS8xNjcxODcgc2l6ZV90IC0+IGludAorICAgICAgICAgICdtc3ZzX2Rp
c2FibGVkX3dhcm5pbmdzJzogWyA0MjY3IF0sCisgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOiB7
CisgICAgICAgICAgICAnVkNMaW5rZXJUb29sJzogeworICAgICAgICAgICAgICAnQWRkaXRpb25h
bERlcGVuZGVuY2llcyc6IFsKKyAgICAgICAgICAgICAgICAnZDNkOS5saWInLAorICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgfQorICAgICAgICAgIH0sCisgICAgICAgIH0sCisgICAgICBd
LAorICAgIH1dLAorICBdLAorfQorCisjIExvY2FsIFZhcmlhYmxlczoKKyMgdGFiLXdpZHRoOjIK
KyMgaW5kZW50LXRhYnMtbW9kZTpuaWwKKyMgRW5kOgorIyB2aW06IHNldCBleHBhbmR0YWIgdGFi
c3RvcD0yIHNoaWZ0d2lkdGg9MjoKKyMgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vUmVmQ291bnRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vUmVmQ291bnRPYmplY3QuY3BwCShyZXZpc2lvbiAxNTI5Nzkp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL1JlZkNvdW50T2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5o
IgogLy8KIC8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaAkocmV2aXNpb24g
MTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0aWxz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTksMTIgKzksMzkgQEAKICNpZm5kZWYgQ09NTU9OX0FOR0xF
VVRJTFNfSF8KICNkZWZpbmUgQ09NTU9OX0FOR0xFVVRJTFNfSF8KIAorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorCiAvLyBBIG1hY3JvIHRvIGRpc2FsbG93IHRoZSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBv
cGVyYXRvcj0gZnVuY3Rpb25zCiAvLyBUaGlzIG11c3QgYmUgdXNlZCBpbiB0aGUgcHJpdmF0ZTog
ZGVjbGFyYXRpb25zIGZvciBhIGNsYXNzCiAjZGVmaW5lIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
TihUeXBlTmFtZSkgXAogICBUeXBlTmFtZShjb25zdCBUeXBlTmFtZSYpOyAgICAgICAgICAgICAg
IFwKICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVHlwZU5hbWUmKQogCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdW5zaWduZWQgaW50IE4+CitpbmxpbmUgdW5zaWduZWQgaW50IEFycmF5U2l6ZShUKCYp
W05dKQoreworICAgIHJldHVybiBOOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdW5zaWdu
ZWQgaW50IE4+Cit2b2lkIFNhZmVSZWxlYXNlKFQgKCZyZXNvdXJjZUJsb2NrKVtOXSkKK3sKKyAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IE47IGkrKykKKyAgICB7CisgICAgICAgIFNh
ZmVSZWxlYXNlKHJlc291cmNlQmxvY2tbaV0pOworICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cit2b2lkIFNhZmVSZWxlYXNlKFQmIHJlc291cmNlKQoreworICAgIGlmIChyZXNvdXJj
ZSkKKyAgICB7CisgICAgICAgIHJlc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIHJlc291cmNl
ID0gTlVMTDsKKyAgICB9Cit9CisKICNpZiBkZWZpbmVkKF9NU0NfVkVSKQogI2RlZmluZSBzbnBy
aW50ZiBfc25wcmludGYKICNlbmRpZgpAQCAtMjMsNCArNTAsNyBAQAogI2RlZmluZSBWRU5ET1Jf
SURfSU5URUwgMHg4MDg2CiAjZGVmaW5lIFZFTkRPUl9JRF9OVklESUEgMHgxMERFCiAKKyNkZWZp
bmUgR0xfQkdSQTRfQU5HTEVYIDB4NkFCQworI2RlZmluZSBHTF9CR1I1X0ExX0FOR0xFWCAweDZB
QkQKKwogI2VuZGlmIC8vIENPTU1PTl9BTkdMRVVUSUxTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcsMTAgKzcsNiBAQAogLy8gZGVidWcuY3BwOiBEZWJ1Z2dpbmcgdXRpbGl0aWVzLgog
CiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1
ZGUgPHN0ZGFyZy5oPgotCiAjaW5jbHVkZSAiY29tbW9uL3N5c3RlbS5oIgogI2luY2x1ZGUgPGQz
ZDkuaD4KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcu
aAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1v
bi9kZWJ1Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSwxMyBAQCBuYW1lc3BhY2UgZ2wK
ICAgICAjZGVmaW5lIFVOUkVBQ0hBQkxFKCkgRVJSKCJcdCEgVW5yZWFjaGFibGUgcmVhY2hlZDog
JXMoJWQpXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKQogI2VuZGlmCiAKKy8vIEEgbWFjcm8g
dGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHJ1bnRpbWUgdHlw
ZS4KKyNpZiAhZGVmaW5lZChOREVCVUcpICYmICghZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5l
ZChfQ1BQUlRUSSkpCisjZGVmaW5lIEhBU19EWU5BTUlDX1RZUEUodHlwZSwgb2JqKSAoZHluYW1p
Y19jYXN0PHR5cGUgPihvYmopICE9IE5VTEwpCisjZWxzZQorI2RlZmluZSBIQVNfRFlOQU1JQ19U
WVBFKHR5cGUsIG9iaikgdHJ1ZQorI2VuZGlmCisKIC8vIEEgbWFjcm8gZnVuY3Rpb25pbmcgYXMg
YSBjb21waWxlLXRpbWUgYXNzZXJ0IHRvIHZhbGlkYXRlIGNvbnN0YW50IGNvbmRpdGlvbnMKICNk
ZWZpbmUgTUVUQV9BU1NFUlQoY29uZGl0aW9uKSB0eXBlZGVmIGludCBDT01QSUxFX1RJTUVfQVNT
RVJUXyMjX19MSU5FX19bc3RhdGljX2Nhc3Q8Ym9vbD4oY29uZGl0aW9uKT8xOi0xXQogCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtLmgJKHJldmlzaW9u
IDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0LDEwICsxNCw2IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPHdp
bmRvd3MuaD4KLSNpbmNsdWRlIDxkM2Q5Lmg+Ci0jaW5jbHVkZSA8RDNEY29tcGlsZXIuaD4KLSNp
bmNsdWRlIDxkM2Q5dHlwZXMuaD4KLSNpbmNsdWRlIDxtbXN5c3RlbS5oPgogCiAjaWYgZGVmaW5l
ZChtaW4pCiAjdW5kZWYgbWluCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
bW9uL3ZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tbW9uL3ZlcnNpb24uaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBA
CiAjZGVmaW5lIE1BSk9SX1ZFUlNJT04gMQotI2RlZmluZSBNSU5PUl9WRVJTSU9OIDAKKyNkZWZp
bmUgTUlOT1JfVkVSU0lPTiAyCiAjZGVmaW5lIEJVSUxEX1ZFUlNJT04gMAotI2RlZmluZSBCVUlM
RF9SRVZJU0lPTiAxOTg3CisjZGVmaW5lIEJVSUxEX1JFVklTSU9OIDI0MjYKIAogI2RlZmluZSBT
VFJJTkdJRlkoeCkgI3gKICNkZWZpbmUgTUFDUk9fU1RSSU5HSUZZKHgpIFNUUklOR0lGWSh4KQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyLzY0Yml0LWxleGVyLXNh
ZmV0eS5wYXRjaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvNjRiaXQtbGV4ZXItc2FmZXR5LnBhdGNoCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyLzY0Yml0LWxleGVyLXNhZmV0eS5wYXRjaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNzcgQEAKKy0tLSBhL3NyYy9jb21waWxlci9nbHNsYW5nX2xl
eC5jcHAKKysrKyBiL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAKK0BAIC02OCw2ICs2OCw3
IEBAIHR5cGVkZWYgaW50MTZfdCBmbGV4X2ludDE2X3Q7CisgdHlwZWRlZiB1aW50MTZfdCBmbGV4
X3VpbnQxNl90OworIHR5cGVkZWYgaW50MzJfdCBmbGV4X2ludDMyX3Q7CisgdHlwZWRlZiB1aW50
MzJfdCBmbGV4X3VpbnQzMl90OworK3R5cGVkZWYgdWludDY0X3QgZmxleF91aW50NjRfdDsKKyAj
ZWxzZQorIHR5cGVkZWYgc2lnbmVkIGNoYXIgZmxleF9pbnQ4X3Q7CisgdHlwZWRlZiBzaG9ydCBp
bnQgZmxleF9pbnQxNl90OworQEAgLTE5MSw2ICsxOTIsMTEgQEAgdHlwZWRlZiB2b2lkKiB5eXNj
YW5fdDsKKyB0eXBlZGVmIHN0cnVjdCB5eV9idWZmZXJfc3RhdGUgKllZX0JVRkZFUl9TVEFURTsK
KyAjZW5kaWYKKyAKKysjaWZuZGVmIFlZX1RZUEVERUZfWVlfU0laRV9UCisrI2RlZmluZSBZWV9U
WVBFREVGX1lZX1NJWkVfVAorK3R5cGVkZWYgc2l6ZV90IHl5X3NpemVfdDsKKysjZW5kaWYKKysK
KyAjZGVmaW5lIEVPQl9BQ1RfQ09OVElOVUVfU0NBTiAwCisgI2RlZmluZSBFT0JfQUNUX0VORF9P
Rl9GSUxFIDEKKyAjZGVmaW5lIEVPQl9BQ1RfTEFTVF9NQVRDSCAyCitAQCAtMjA0LDcgKzIxMCw3
IEBAIHR5cGVkZWYgc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSAqWVlfQlVGRkVSX1NUQVRFOworICAg
ICAgKi8KKyAgICAgI2RlZmluZSAgWVlfTEVTU19MSU5FTk8obikgXAorICAgICAgICAgICAgIGRv
IHsgXAorLSAgICAgICAgICAgICAgICBpbnQgeXlsO1wKKysgICAgICAgICAgICAgICAgeXlfc2l6
ZV90IHl5bDtcCisgICAgICAgICAgICAgICAgIGZvciAoIHl5bCA9IG47IHl5bCA8IHl5bGVuZzsg
Kyt5eWwgKVwKKyAgICAgICAgICAgICAgICAgICAgIGlmICggeXl0ZXh0W3l5bF0gPT0gJ1xuJyAp
XAorICAgICAgICAgICAgICAgICAgICAgICAgIC0teXlsaW5lbm87XAorQEAgLTIyNiwxMSArMjMy
LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlICpZWV9CVUZGRVJfU1RBVEU7Cisg
CisgI2RlZmluZSB1bnB1dChjKSB5eXVucHV0KCBjLCB5eWctPnl5dGV4dF9wdHIgLCB5eXNjYW5u
ZXIgKQorIAorLSNpZm5kZWYgWVlfVFlQRURFRl9ZWV9TSVpFX1QKKy0jZGVmaW5lIFlZX1RZUEVE
RUZfWVlfU0laRV9UCistdHlwZWRlZiBzaXplX3QgeXlfc2l6ZV90OworLSNlbmRpZgorLQorICNp
Zm5kZWYgWVlfU1RSVUNUX1lZX0JVRkZFUl9TVEFURQorICNkZWZpbmUgWVlfU1RSVUNUX1lZX0JV
RkZFUl9TVEFURQorIHN0cnVjdCB5eV9idWZmZXJfc3RhdGUKK0BAIC0yNDgsNyArMjQ5LDcgQEAg
c3RydWN0IHl5X2J1ZmZlcl9zdGF0ZQorIAkvKiBOdW1iZXIgb2YgY2hhcmFjdGVycyByZWFkIGlu
dG8geXlfY2hfYnVmLCBub3QgaW5jbHVkaW5nIEVPQgorIAkgKiBjaGFyYWN0ZXJzLgorIAkgKi8K
Ky0JaW50IHl5X25fY2hhcnM7CisrCXl5X3NpemVfdCB5eV9uX2NoYXJzOworIAorIAkvKiBXaGV0
aGVyIHdlICJvd24iIHRoZSBidWZmZXIgLSBpLmUuLCB3ZSBrbm93IHdlIGNyZWF0ZWQgaXQsCisg
CSAqIGFuZCBjYW4gcmVhbGxvYygpIGl0IHRvIGdyb3cgaXQsIGFuZCBzaG91bGQgZnJlZSgpIGl0
IHRvCitAQCAtMzI3LDcgKzMyOCw3IEBAIHN0YXRpYyB2b2lkIHl5X2luaXRfYnVmZmVyIChZWV9C
VUZGRVJfU1RBVEUgYixGSUxFICpmaWxlICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAKKyBZWV9C
VUZGRVJfU1RBVEUgeXlfc2Nhbl9idWZmZXIgKGNoYXIgKmJhc2UseXlfc2l6ZV90IHNpemUgLHl5
c2Nhbl90IHl5c2Nhbm5lciApOworIFlZX0JVRkZFUl9TVEFURSB5eV9zY2FuX3N0cmluZyAoeXlj
b25zdCBjaGFyICp5eV9zdHIgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworLVlZX0JVRkZFUl9TVEFU
RSB5eV9zY2FuX2J5dGVzICh5eWNvbnN0IGNoYXIgKmJ5dGVzLGludCBsZW4gLHl5c2Nhbl90IHl5
c2Nhbm5lciApOworK1lZX0JVRkZFUl9TVEFURSB5eV9zY2FuX2J5dGVzICh5eWNvbnN0IGNoYXIg
KmJ5dGVzLHl5X3NpemVfdCBsZW4gLHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorIHZvaWQgKnl5
YWxsb2MgKHl5X3NpemVfdCAseXlzY2FuX3QgeXlzY2FubmVyICk7Cisgdm9pZCAqeXlyZWFsbG9j
ICh2b2lkICoseXlfc2l6ZV90ICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKK0BAIC0zNzgsNyArMzc5
LDcgQEAgc3RhdGljIHZvaWQgeXlfZmF0YWxfZXJyb3IgKHl5Y29uc3QgY2hhciBtc2dbXSAseXlz
Y2FuX3QgeXlzY2FubmVyICk7CisgICovCisgI2RlZmluZSBZWV9ET19CRUZPUkVfQUNUSU9OIFwK
KyAJeXlnLT55eXRleHRfcHRyID0geXlfYnA7IFwKKy0JeXlsZW5nID0gKHNpemVfdCkgKHl5X2Nw
IC0geXlfYnApOyBcCisrCXl5bGVuZyA9ICh5eV9zaXplX3QpICh5eV9jcCAtIHl5X2JwKTsgXAor
IAl5eWctPnl5X2hvbGRfY2hhciA9ICp5eV9jcDsgXAorIAkqeXlfY3AgPSAnXDAnOyBcCisgCXl5
Zy0+eXlfY19idWZfcCA9IHl5X2NwOworQEAgLTEwMzUsOCArMTAzNiw4IEBAIHN0cnVjdCB5eWd1
dHNfdAorICAgICBzaXplX3QgeXlfYnVmZmVyX3N0YWNrX21heDsgLyoqPCBjYXBhY2l0eSBvZiBz
dGFjay4gKi8KKyAgICAgWVlfQlVGRkVSX1NUQVRFICogeXlfYnVmZmVyX3N0YWNrOyAvKio8IFN0
YWNrIGFzIGFuIGFycmF5LiAqLworICAgICBjaGFyIHl5X2hvbGRfY2hhcjsKKy0gICAgaW50IHl5
X25fY2hhcnM7CistICAgIGludCB5eWxlbmdfcjsKKysgICAgeXlfc2l6ZV90IHl5X25fY2hhcnM7
CisrICAgIHl5X3NpemVfdCB5eWxlbmdfcjsKKyAgICAgY2hhciAqeXlfY19idWZfcDsKKyAgICAg
aW50IHl5X2luaXQ7CisgICAgIGludCB5eV9zdGFydDsKK0BAIC0xMDg5LDcgKzEwOTAsNyBAQCBG
SUxFICp5eWdldF9vdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorIHZvaWQgeXlzZXRfb3V0
ICAoRklMRSAqIG91dF9zdHIgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorLWludCB5eWdldF9s
ZW5nICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyt5eV9zaXplX3QgeXlnZXRfbGVuZyAoeXlzY2Fu
X3QgeXlzY2FubmVyICk7CisgCisgY2hhciAqeXlnZXRfdGV4dCAoeXlzY2FuX3QgeXlzY2FubmVy
ICk7CisgCitAQCAtMTE1OCw3ICsxMTU5LDcgQEAgc3RhdGljIGludCBpbnB1dCAoeXlzY2FuX3Qg
eXlzY2FubmVyICk7CisgCWlmICggWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9pc19pbnRl
cmFjdGl2ZSApIFwKKyAJCXsgXAorIAkJaW50IGMgPSAnKic7IFwKKy0JCWludCBuOyBcCisrCQl5
eV9zaXplX3QgbjsgXAorIAkJZm9yICggbiA9IDA7IG4gPCBtYXhfc2l6ZSAmJiBcCisgCQkJICAg
ICAoYyA9IGdldGMoIHl5aW4gKSkgIT0gRU9GICYmIGMgIT0gJ1xuJzsgKytuICkgXAorIAkJCWJ1
ZltuXSA9IChjaGFyKSBjOyBcCitAQCAtMTMxNyw3ICsxMzE4LDcgQEAgeXlfZmluZF9hY3Rpb246
CisgCisgCQlpZiAoIHl5X2FjdCAhPSBZWV9FTkRfT0ZfQlVGRkVSICYmIHl5X3J1bGVfY2FuX21h
dGNoX2VvbFt5eV9hY3RdICkKKyAJCQl7CistCQkJaW50IHl5bDsKKysJCQl5eV9zaXplX3QgeXls
OworIAkJCWZvciAoIHl5bCA9IDA7IHl5bCA8IHl5bGVuZzsgKyt5eWwgKQorIAkJCQlpZiAoIHl5
dGV4dFt5eWxdID09ICdcbicgKQorIAkJCQkJICAgCitAQCAtMjIwMyw3ICsyMjA0LDcgQEAgc3Rh
dGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAKKyAJZWxz
ZQorIAkJeworLQkJCWludCBudW1fdG9fcmVhZCA9CisrCQkJeXlfc2l6ZV90IG51bV90b19yZWFk
ID0KKyAJCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2J1Zl9zaXplIC0gbnVtYmVyX3Rv
X21vdmUgLSAxOworIAorIAkJd2hpbGUgKCBudW1fdG9fcmVhZCA8PSAwICkKK0BAIC0yMjE3LDcg
KzIyMTgsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2Fu
bmVyKQorIAorIAkJCWlmICggYi0+eXlfaXNfb3VyX2J1ZmZlciApCisgCQkJCXsKKy0JCQkJaW50
IG5ld19zaXplID0gYi0+eXlfYnVmX3NpemUgKiAyOworKwkJCQl5eV9zaXplX3QgbmV3X3NpemUg
PSBiLT55eV9idWZfc2l6ZSAqIDI7CisgCisgCQkJCWlmICggbmV3X3NpemUgPD0gMCApCisgCQkJ
CQliLT55eV9idWZfc2l6ZSArPSBiLT55eV9idWZfc2l6ZSAvIDg7CitAQCAtMjI0OCw3ICsyMjQ5
LDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikK
KyAKKyAJCS8qIFJlYWQgaW4gbW9yZSBkYXRhLiAqLworIAkJWVlfSU5QVVQoICgmWVlfQ1VSUkVO
VF9CVUZGRVJfTFZBTFVFLT55eV9jaF9idWZbbnVtYmVyX3RvX21vdmVdKSwKKy0JCQl5eWctPnl5
X25fY2hhcnMsIChzaXplX3QpIG51bV90b19yZWFkICk7CisrCQkJeXlnLT55eV9uX2NoYXJzLCBu
dW1fdG9fcmVhZCApOworIAorIAkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9uX2NoYXJz
ID0geXlnLT55eV9uX2NoYXJzOworIAkJfQorQEAgLTIzNzMsNyArMjM3NCw3IEBAIHN0YXRpYyBp
bnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgCisgCQllbHNlCisg
CQkJeyAvKiBuZWVkIG1vcmUgaW5wdXQgKi8KKy0JCQlpbnQgb2Zmc2V0ID0geXlnLT55eV9jX2J1
Zl9wIC0geXlnLT55eXRleHRfcHRyOworKwkJCXl5X3NpemVfdCBvZmZzZXQgPSB5eWctPnl5X2Nf
YnVmX3AgLSB5eWctPnl5dGV4dF9wdHI7CisgCQkJKyt5eWctPnl5X2NfYnVmX3A7CisgCisgCQkJ
c3dpdGNoICggeXlfZ2V0X25leHRfYnVmZmVyKCB5eXNjYW5uZXIgKSApCitAQCAtMjY2MCw3ICsy
NjYxLDcgQEAgdm9pZCB5eXBvcF9idWZmZXJfc3RhdGUgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAg
Ki8KKyBzdGF0aWMgdm9pZCB5eWVuc3VyZV9idWZmZXJfc3RhY2sgKHl5c2Nhbl90IHl5c2Nhbm5l
cikKKyB7CistCWludCBudW1fdG9fYWxsb2M7CisrCXl5X3NpemVfdCBudW1fdG9fYWxsb2M7Cisg
ICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsK
KyAKKyAJaWYgKCF5eWctPnl5X2J1ZmZlcl9zdGFjaykgeworQEAgLTI3NTgsMTIgKzI3NTksMTEg
QEAgWVlfQlVGRkVSX1NUQVRFIHl5X3NjYW5fc3RyaW5nICh5eWNvbnN0IGNoYXIgKiB5eXN0ciAs
IHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9i
amVjdC4KKyAgKiBAcmV0dXJuIHRoZSBuZXdseSBhbGxvY2F0ZWQgYnVmZmVyIHN0YXRlIG9iamVj
dC4KKyAgKi8KKy1ZWV9CVUZGRVJfU1RBVEUgeXlfc2Nhbl9ieXRlcyAgKHl5Y29uc3QgY2hhciAq
IHl5Ynl0ZXMsIGludCAgX3l5Ynl0ZXNfbGVuICwgeXlzY2FuX3QgeXlzY2FubmVyKQorK1lZX0JV
RkZFUl9TVEFURSB5eV9zY2FuX2J5dGVzICAoeXljb25zdCBjaGFyICogeXlieXRlcywgeXlfc2l6
ZV90ICBfeXlieXRlc19sZW4gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCisgeworIAlZWV9CVUZGRVJf
U1RBVEUgYjsKKyAJY2hhciAqYnVmOworLQl5eV9zaXplX3QgbjsKKy0JaW50IGk7CisrCXl5X3Np
emVfdCBuLCBpOworICAgICAKKyAJLyogR2V0IG1lbW9yeSBmb3IgZnVsbCBidWZmZXIsIGluY2x1
ZGluZyBzcGFjZSBmb3IgdHJhaWxpbmcgRU9CJ3MuICovCisgCW4gPSBfeXlieXRlc19sZW4gKyAy
OworQEAgLTI5MTMsNyArMjkxMyw3IEBAIEZJTEUgKnl5Z2V0X291dCAgKHl5c2Nhbl90IHl5c2Nh
bm5lcikKKyAvKiogR2V0IHRoZSBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4uCisgICogQHBh
cmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCisgICovCistaW50IHl5Z2V0X2xlbmcg
ICh5eXNjYW5fdCB5eXNjYW5uZXIpCisreXlfc2l6ZV90IHl5Z2V0X2xlbmcgICh5eXNjYW5fdCB5
eXNjYW5uZXIpCisgeworICAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0
c190Kil5eXNjYW5uZXI7CisgICAgIHJldHVybiB5eWxlbmc7CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQmFzZVR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCShyZXZpc2lvbiAxNTI5
NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQmFzZVR5cGVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkwLDEwICs5MCw2IEBAIGVudW0gVFF1YWxpZmllcgogICAgIEV2
cUludmFyaWFudFZhcnlpbmdPdXQsICAgIC8vIHZlcnRleCBzaGFkZXJzIG9ubHkgIHJlYWQvd3Jp
dGUKICAgICBFdnFVbmlmb3JtLCAgICAgICAvLyBSZWFkb25seSwgdmVydGV4IGFuZCBmcmFnbWVu
dAogCi0gICAgLy8gcGFjay91bnBhY2sgaW5wdXQgYW5kIG91dHB1dAotICAgIEV2cUlucHV0LAot
ICAgIEV2cU91dHB1dCwKLQogICAgIC8vIHBhcmFtZXRlcnMKICAgICBFdnFJbiwKICAgICBFdnFP
dXQsCkBAIC0xMTIsNiArMTA4LDcgQEAgZW51bSBUUXVhbGlmaWVyCiAgICAgLy8gYnVpbHQtaW5z
IHdyaXR0ZW4gYnkgZnJhZ21lbnQgc2hhZGVyCiAgICAgRXZxRnJhZ0NvbG9yLAogICAgIEV2cUZy
YWdEYXRhLAorICAgIEV2cUZyYWdEZXB0aCwKIAogICAgIC8vIGVuZCBvZiBsaXN0CiAgICAgRXZx
TGFzdApAQCAtMTM3LDE0ICsxMzQsMTMgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGdldFF1YWxpZmll
clN0cmluZyhUUQogICAgIGNhc2UgRXZxSW46ICAgICAgICAgICAgIHJldHVybiAiaW4iOyAgICAg
ICAgICAgICBicmVhazsKICAgICBjYXNlIEV2cU91dDogICAgICAgICAgICByZXR1cm4gIm91dCI7
ICAgICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFJbk91dDogICAgICAgICAgcmV0dXJuICJp
bm91dCI7ICAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxSW5wdXQ6ICAgICAgICAgIHJldHVy
biAiaW5wdXQiOyAgICAgICAgICBicmVhazsKLSAgICBjYXNlIEV2cU91dHB1dDogICAgICAgICBy
ZXR1cm4gIm91dHB1dCI7ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFQb3NpdGlvbjogICAg
ICAgcmV0dXJuICJQb3NpdGlvbiI7ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxUG9pbnRTaXpl
OiAgICAgIHJldHVybiAiUG9pbnRTaXplIjsgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdD
b29yZDogICAgICByZXR1cm4gIkZyYWdDb29yZCI7ICAgICAgYnJlYWs7CiAgICAgY2FzZSBFdnFG
cm9udEZhY2luZzogICAgcmV0dXJuICJGcm9udEZhY2luZyI7ICAgIGJyZWFrOwogICAgIGNhc2Ug
RXZxRnJhZ0NvbG9yOiAgICAgIHJldHVybiAiRnJhZ0NvbG9yIjsgICAgICBicmVhazsKICAgICBj
YXNlIEV2cUZyYWdEYXRhOiAgICAgICByZXR1cm4gIkZyYWdEYXRhIjsgICAgICBicmVhazsKKyAg
ICBjYXNlIEV2cUZyYWdEZXB0aDogICAgICByZXR1cm4gIkZyYWdEZXB0aCI7ICAgICBicmVhazsK
ICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICByZXR1cm4gInVua25vd24gcXVhbGlmaWVyIjsK
ICAgICB9CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29k
ZUdlbkhMU0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9Db2RlR2VuSExTTC5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuSExTTC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykg
MjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAg
LTE0LDkgKzE0LDExIEBACiBUQ29tcGlsZXIqIENvbnN0cnVjdENvbXBpbGVyKAogICAgIFNoU2hh
ZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KQog
ewotICBzd2l0Y2ggKG91dHB1dCkgewotICAgIGNhc2UgU0hfSExTTF9PVVRQVVQ6Ci0gICAgICBy
ZXR1cm4gbmV3IFRyYW5zbGF0b3JITFNMKHR5cGUsIHNwZWMpOworICBzd2l0Y2ggKG91dHB1dCkK
KyAgeworICAgIGNhc2UgU0hfSExTTDlfT1VUUFVUOgorICAgIGNhc2UgU0hfSExTTDExX09VVFBV
VDoKKyAgICAgIHJldHVybiBuZXcgVHJhbnNsYXRvckhMU0wodHlwZSwgc3BlYywgb3V0cHV0KTsK
ICAgICBkZWZhdWx0OgogICAgICAgcmV0dXJuIE5VTEw7CiAgIH0KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tbW9uLmgJKHJldmlzaW9uIDE1Mjk3OSkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21tb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQsMjQgKzE0LDEyIEBACiAKICNpbmNsdWRlICJjb21waWxlci9Qb29sQWxs
b2MuaCIKIAotLy8gV2UgbmVlZCB0d28gcGllY2VzIG9mIGluZm9ybWF0aW9uIHRvIHJlcG9ydCBl
cnJvcnMvd2FybmluZ3MgLSBzdHJpbmcgYW5kCi0vLyBsaW5lIG51bWJlci4gV2UgZW5jb2RlIHRo
ZXNlIGludG8gYSBzaW5nbGUgaW50IHNvIHRoYXQgaXQgY2FuIGJlIGVhc2lseQotLy8gaW5jcmVt
ZW50ZWQvZGVjcmVtZW50ZWQgYnkgbGV4ZXIuIFRoZSByaWdodCBTT1VSQ0VfTE9DX0xJTkVfU0la
RSBiaXRzIHN0b3JlCi0vLyBsaW5lIG51bWJlciB3aGlsZSB0aGUgcmVzdCBzdG9yZSB0aGUgc3Ry
aW5nIG51bWJlci4gU2luY2UgdGhlIHNoYWRlcnMgYXJlCi0vLyB1c3VhbGx5IHNtYWxsLCB3ZSBz
aG91bGQgbm90IHJ1biBvdXQgb2YgbWVtb3J5LiBTT1VSQ0VfTE9DX0xJTkVfU0laRQotLy8gY2Fu
IGJlIGluY3JlYXNlZCB0byBhbGxldmlhdGUgdGhpcyBpc3N1ZS4KLXR5cGVkZWYgaW50IFRTb3Vy
Y2VMb2M7Ci1jb25zdCB1bnNpZ25lZCBpbnQgU09VUkNFX0xPQ19MSU5FX1NJWkUgPSAxNjsgIC8v
IGluIGJpdHMuCi1jb25zdCB1bnNpZ25lZCBpbnQgU09VUkNFX0xPQ19MSU5FX01BU0sgPSAoMSA8
PCBTT1VSQ0VfTE9DX0xJTkVfU0laRSkgLSAxOwotCi1pbmxpbmUgVFNvdXJjZUxvYyBFbmNvZGVT
b3VyY2VMb2MoaW50IHN0cmluZywgaW50IGxpbmUpIHsKLSAgICByZXR1cm4gKHN0cmluZyA8PCBT
T1VSQ0VfTE9DX0xJTkVfU0laRSkgfCAobGluZSAmIFNPVVJDRV9MT0NfTElORV9NQVNLKTsKLX0K
LQotaW5saW5lIHZvaWQgRGVjb2RlU291cmNlTG9jKFRTb3VyY2VMb2MgbG9jLCBpbnQqIHN0cmlu
ZywgaW50KiBsaW5lKSB7Ci0gICAgaWYgKHN0cmluZykgKnN0cmluZyA9IGxvYyA+PiBTT1VSQ0Vf
TE9DX0xJTkVfU0laRTsKLSAgICBpZiAobGluZSkgKmxpbmUgPSBsb2MgJiBTT1VSQ0VfTE9DX0xJ
TkVfTUFTSzsKLX0KK3N0cnVjdCBUU291cmNlTG9jIHsKKyAgICBpbnQgZmlyc3RfZmlsZTsKKyAg
ICBpbnQgZmlyc3RfbGluZTsKKyAgICBpbnQgbGFzdF9maWxlOworICAgIGludCBsYXN0X2xpbmU7
Cit9OwogCiAvLwogLy8gUHV0IFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUgaW4gYmFzZSBjbGFz
c2VzIHRvIG1ha2UgdGhlbSB1c2UgdGhpcyBzY2hlbWUuCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxlci5jcHAJKHJldmlzaW9uIDE1Mjk3
OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTEgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIw
MDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCiAvLwogCiAjaW5jbHVkZSAiY29tcGlsZXIvQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IuaCIKLSNpbmNsdWRlICJjb21waWxlci9EZXRlY3RSZWN1cnNpb24uaCIKKyNpbmNsdWRlICJj
b21waWxlci9EZXRlY3RDYWxsRGVwdGguaCIKICNpbmNsdWRlICJjb21waWxlci9Gb3JMb29wVW5y
b2xsLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUgImNvbXBp
bGVyL0luaXRpYWxpemVQYXJzZUNvbnRleHQuaCIKQEAgLTI3LDUxICsyNyw2IEBAIGJvb2wgaXNX
ZWJHTEJhc2VkU3BlYyhTaFNoYWRlclNwZWMgc3BlYykKIH0KIAogbmFtZXNwYWNlIHsKLWJvb2wg
SW5pdGlhbGl6ZVN5bWJvbFRhYmxlKAotICAgIGNvbnN0IFRCdWlsdEluU3RyaW5ncyYgYnVpbHRJ
blN0cmluZ3MsCi0gICAgU2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBjb25z
dCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcywKLSAgICBUSW5mb1NpbmsmIGluZm9TaW5r
LCBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQotewotICAgIFRJbnRlcm1lZGlhdGUgaW50ZXJt
ZWRpYXRlKGluZm9TaW5rKTsKLSAgICBURXh0ZW5zaW9uQmVoYXZpb3IgZXh0QmVoYXZpb3I7Ci0g
ICAgSW5pdEV4dGVuc2lvbkJlaGF2aW9yKHJlc291cmNlcywgZXh0QmVoYXZpb3IpOwotICAgIC8v
IFRoZSBidWlsdGlucyBkZWxpYmVyYXRlbHkgZG9uJ3Qgc3BlY2lmeSBwcmVjaXNpb25zIGZvciB0
aGUgZnVuY3Rpb24KLSAgICAvLyBhcmd1bWVudHMgYW5kIHJldHVybiB0eXBlcy4gRm9yIHRoYXQg
cmVhc29uIHdlIGRvbid0IHRyeSB0byBjaGVjayB0aGVtLgotICAgIFRQYXJzZUNvbnRleHQgcGFy
c2VDb250ZXh0KHN5bWJvbFRhYmxlLCBleHRCZWhhdmlvciwgaW50ZXJtZWRpYXRlLCB0eXBlLCBz
cGVjLCAwLCBmYWxzZSwgTlVMTCwgaW5mb1NpbmspOwotICAgIHBhcnNlQ29udGV4dC5mcmFnbWVu
dFByZWNpc2lvbkhpZ2ggPSByZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID09IDE7Ci0K
LSAgICBHbG9iYWxQYXJzZUNvbnRleHQgPSAmcGFyc2VDb250ZXh0OwotCi0gICAgYXNzZXJ0KHN5
bWJvbFRhYmxlLmlzRW1wdHkoKSk7ICAgICAgIAotICAgIC8vCi0gICAgLy8gUGFyc2UgdGhlIGJ1
aWx0LWlucy4gIFRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIG9uY2UgcGVyCi0gICAgLy8gbGFuZ3Vh
Z2Ugc3ltYm9sIHRhYmxlLgotICAgIC8vCi0gICAgLy8gUHVzaCB0aGUgc3ltYm9sIHRhYmxlIHRv
IGdpdmUgaXQgYW4gaW5pdGlhbCBzY29wZS4gIFRoaXMKLSAgICAvLyBwdXNoIHNob3VsZCBub3Qg
aGF2ZSBhIGNvcnJlc3BvbmRpbmcgcG9wLCBzbyB0aGF0IGJ1aWx0LWlucwotICAgIC8vIGFyZSBw
cmVzZXJ2ZWQsIGFuZCB0aGUgdGVzdCBmb3IgYW4gZW1wdHkgdGFibGUgZmFpbHMuCi0gICAgLy8K
LSAgICBzeW1ib2xUYWJsZS5wdXNoKCk7Ci0KLSAgICBmb3IgKFRCdWlsdEluU3RyaW5nczo6Y29u
c3RfaXRlcmF0b3IgaSA9IGJ1aWx0SW5TdHJpbmdzLmJlZ2luKCk7IGkgIT0gYnVpbHRJblN0cmlu
Z3MuZW5kKCk7ICsraSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGJ1aWx0SW5TaGFkZXJz
ID0gaS0+Y19zdHIoKTsKLSAgICAgICAgaW50IGJ1aWx0SW5MZW5ndGhzID0gc3RhdGljX2Nhc3Q8
aW50PihpLT5zaXplKCkpOwotICAgICAgICBpZiAoYnVpbHRJbkxlbmd0aHMgPD0gMCkKLSAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoUGFQYXJzZVN0cmluZ3MoMSwgJmJ1aWx0SW5T
aGFkZXJzLCAmYnVpbHRJbkxlbmd0aHMsICZwYXJzZUNvbnRleHQpICE9IDApCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwg
IlVuYWJsZSB0byBwYXJzZSBidWlsdC1pbnMiKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIElkZW50aWZ5QnVpbHRJbnModHlwZSwgc3BlYywgcmVz
b3VyY2VzLCBzeW1ib2xUYWJsZSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogY2xhc3MgVFNj
b3BlZFBvb2xBbGxvY2F0b3IgewogcHVibGljOgogICAgIFRTY29wZWRQb29sQWxsb2NhdG9yKFRQ
b29sQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGJvb2wgcHVzaFBvcCkKQEAgLTEwMyw2ICs1OCw5IEBA
IFRTaEhhbmRsZUJhc2U6On5UU2hIYW5kbGVCYXNlKCkgewogVENvbXBpbGVyOjpUQ29tcGlsZXIo
U2hTaGFkZXJUeXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjKQogICAgIDogc2hhZGVyVHlwZSh0
eXBlKSwKICAgICAgIHNoYWRlclNwZWMoc3BlYyksCisgICAgICBtYXhVbmlmb3JtVmVjdG9ycygw
KSwKKyAgICAgIG1heEV4cHJlc3Npb25Db21wbGV4aXR5KDApLAorICAgICAgbWF4Q2FsbFN0YWNr
RGVwdGgoMCksCiAgICAgICBmcmFnbWVudFByZWNpc2lvbkhpZ2goZmFsc2UpLAogICAgICAgY2xh
bXBpbmdTdHJhdGVneShTSF9DTEFNUF9XSVRIX0NMQU1QX0lOVFJJTlNJQyksCiAgICAgICBidWls
dEluRnVuY3Rpb25FbXVsYXRvcih0eXBlKQpAQCAtMTIxLDYgKzc5LDggQEAgYm9vbCBUQ29tcGls
ZXI6OkluaXQoY29uc3QgU2hCdWlsdEluUmVzbwogICAgIG1heFVuaWZvcm1WZWN0b3JzID0gKHNo
YWRlclR5cGUgPT0gU0hfVkVSVEVYX1NIQURFUikgPwogICAgICAgICByZXNvdXJjZXMuTWF4VmVy
dGV4VW5pZm9ybVZlY3RvcnMgOgogICAgICAgICByZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3Jt
VmVjdG9yczsKKyAgICBtYXhFeHByZXNzaW9uQ29tcGxleGl0eSA9IHJlc291cmNlcy5NYXhFeHBy
ZXNzaW9uQ29tcGxleGl0eTsKKyAgICBtYXhDYWxsU3RhY2tEZXB0aCA9IHJlc291cmNlcy5NYXhD
YWxsU3RhY2tEZXB0aDsKICAgICBUU2NvcGVkUG9vbEFsbG9jYXRvciBzY29wZWRBbGxvYygmYWxs
b2NhdG9yLCBmYWxzZSk7CiAKICAgICAvLyBHZW5lcmF0ZSBidWlsdC1pbiBzeW1ib2wgdGFibGUu
CkBAIC0xNzAsOCArMTMwLDEwIEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIq
IGNvbnMKICAgICAvLyBXZSBwcmVzZXJ2ZSBzeW1ib2xzIGF0IHRoZSBidWlsdC1pbiBsZXZlbCBm
cm9tIGNvbXBpbGUtdG8tY29tcGlsZS4KICAgICAvLyBTdGFydCBwdXNoaW5nIHRoZSB1c2VyLWRl
ZmluZWQgc3ltYm9scyBhdCBnbG9iYWwgbGV2ZWwuCiAgICAgc3ltYm9sVGFibGUucHVzaCgpOwot
ICAgIGlmICghc3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpKQotICAgICAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJXcm9uZyBzeW1ib2wgdGFibGUgbGV2
ZWwiKTsKKyAgICBpZiAoIXN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSkgeworICAgICAgICBp
bmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4SW50ZXJuYWxFcnJvcik7CisgICAgICAgIGluZm9T
aW5rLmluZm8gPDwgIldyb25nIHN5bWJvbCB0YWJsZSBsZXZlbCI7CisgICAgfQogCiAgICAgLy8g
UGFyc2Ugc2hhZGVyLgogICAgIGJvb2wgc3VjY2VzcyA9CkBAIC0xODIsNyArMTQ0LDcgQEAgYm9v
bCBUQ29tcGlsZXI6OmNvbXBpbGUoY29uc3QgY2hhciogY29ucwogICAgICAgICBzdWNjZXNzID0g
aW50ZXJtZWRpYXRlLnBvc3RQcm9jZXNzKHJvb3QpOwogCiAgICAgICAgIGlmIChzdWNjZXNzKQot
ICAgICAgICAgICAgc3VjY2VzcyA9IGRldGVjdFJlY3Vyc2lvbihyb290KTsKKyAgICAgICAgICAg
IHN1Y2Nlc3MgPSBkZXRlY3RDYWxsRGVwdGgocm9vdCwgaW5mb1NpbmssIChjb21waWxlT3B0aW9u
cyAmIFNIX0xJTUlUX0NBTExfU1RBQ0tfREVQVEgpICE9IDApOwogCiAgICAgICAgIGlmIChzdWNj
ZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX1ZBTElEQVRFX0xPT1BfSU5ERVhJTkcpKQogICAg
ICAgICAgICAgc3VjY2VzcyA9IHZhbGlkYXRlTGltaXRhdGlvbnMocm9vdCk7CkBAIC0yMDUsNiAr
MTY3LDEwIEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAg
ICAgaWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfQ0xBTVBfSU5ESVJFQ1RfQVJS
QVlfQk9VTkRTKSkKICAgICAgICAgICAgIGFycmF5Qm91bmRzQ2xhbXBlci5NYXJrSW5kaXJlY3RB
cnJheUJvdW5kc0ZvckNsYW1waW5nKHJvb3QpOwogCisgICAgICAgIC8vIERpc2FsbG93IGV4cHJl
c3Npb25zIGRlZW1lZCB0b28gY29tcGxleC4KKyAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgKGNvbXBp
bGVPcHRpb25zICYgU0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVYSVRZKSkKKyAgICAgICAgICAg
IHN1Y2Nlc3MgPSBsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5KHJvb3QpOworCiAgICAgICAgIC8v
IENhbGwgbWFwTG9uZ1ZhcmlhYmxlTmFtZXMoKSBiZWZvcmUgY29sbGVjdEF0dHJpYnNVbmlmb3Jt
cygpIHNvIGluCiAgICAgICAgIC8vIGNvbGxlY3RBdHRyaWJzVW5pZm9ybXMoKSB3ZSBhbHJlYWR5
IGhhdmUgdGhlIG1hcHBlZCBzeW1ib2wgbmFtZXMgYW5kCiAgICAgICAgIC8vIHdlIGNvdWxkIGNv
bXBvc2l0ZSBtYXBwZWQgYW5kIG9yaWdpbmFsIHZhcmlhYmxlIG5hbWVzLgpAQCAtMjE3LDcgKzE4
Myw4IEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAgICAgICAg
ICAgIGlmIChjb21waWxlT3B0aW9ucyAmIFNIX0VORk9SQ0VfUEFDS0lOR19SRVNUUklDVElPTlMp
IHsKICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZW5mb3JjZVBhY2tpbmdSZXN0cmljdGlvbnMo
KTsKICAgICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwgInRvbyBtYW55IHVuaWZvcm1zIik7
CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ucHJlZml4KEVQcmVmaXhFcnJvcik7
CisgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgInRvbyBtYW55IHVuaWZvcm1z
IjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIzOSwx
MyArMjA2LDQyIEBAIGJvb2wgVENvbXBpbGVyOjpjb21waWxlKGNvbnN0IGNoYXIqIGNvbnMKICAg
ICByZXR1cm4gc3VjY2VzczsKIH0KIAotYm9vbCBUQ29tcGlsZXI6OkluaXRCdWlsdEluU3ltYm9s
VGFibGUoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCitib29sIFRDb21waWxl
cjo6SW5pdEJ1aWx0SW5TeW1ib2xUYWJsZShjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgJnJlc291
cmNlcykKIHsKLSAgICBUQnVpbHRJbnMgYnVpbHRJbnM7CisgICAgY29tcGlsZVJlc291cmNlcyA9
IHJlc291cmNlczsKKworICAgIGFzc2VydChzeW1ib2xUYWJsZS5pc0VtcHR5KCkpOworICAgIHN5
bWJvbFRhYmxlLnB1c2goKTsKIAotICAgIGJ1aWx0SW5zLmluaXRpYWxpemUoc2hhZGVyVHlwZSwg
c2hhZGVyU3BlYywgcmVzb3VyY2VzKTsKLSAgICByZXR1cm4gSW5pdGlhbGl6ZVN5bWJvbFRhYmxl
KGJ1aWx0SW5zLmdldEJ1aWx0SW5TdHJpbmdzKCksCi0gICAgICAgIHNoYWRlclR5cGUsIHNoYWRl
clNwZWMsIHJlc291cmNlcywgaW5mb1NpbmssIHN5bWJvbFRhYmxlKTsKKyAgICBUUHVibGljVHlw
ZSBpbnRlZ2VyOworICAgIGludGVnZXIudHlwZSA9IEVidEludDsKKyAgICBpbnRlZ2VyLnNpemUg
PSAxOworICAgIGludGVnZXIubWF0cml4ID0gZmFsc2U7CisgICAgaW50ZWdlci5hcnJheSA9IGZh
bHNlOworCisgICAgVFB1YmxpY1R5cGUgZmxvYXRpbmdQb2ludDsKKyAgICBmbG9hdGluZ1BvaW50
LnR5cGUgPSBFYnRGbG9hdDsKKyAgICBmbG9hdGluZ1BvaW50LnNpemUgPSAxOworICAgIGZsb2F0
aW5nUG9pbnQubWF0cml4ID0gZmFsc2U7CisgICAgZmxvYXRpbmdQb2ludC5hcnJheSA9IGZhbHNl
OworCisgICAgc3dpdGNoKHNoYWRlclR5cGUpCisgICAgeworICAgICAgY2FzZSBTSF9GUkFHTUVO
VF9TSEFERVI6CisgICAgICAgIHN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oaW50ZWdl
ciwgRWJwTWVkaXVtKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNIX1ZFUlRFWF9TSEFE
RVI6CisgICAgICAgIHN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oaW50ZWdlciwgRWJw
SGlnaCk7CisgICAgICAgIHN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oZmxvYXRpbmdQ
b2ludCwgRWJwSGlnaCk7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogYXNzZXJ0KGZh
bHNlICYmICJMYW5ndWFnZSBub3Qgc3VwcG9ydGVkIik7CisgICAgfQorCisgICAgSW5zZXJ0QnVp
bHRJbkZ1bmN0aW9ucyhzaGFkZXJUeXBlLCBzaGFkZXJTcGVjLCByZXNvdXJjZXMsIHN5bWJvbFRh
YmxlKTsKKworICAgIElkZW50aWZ5QnVpbHRJbnMoc2hhZGVyVHlwZSwgc2hhZGVyU3BlYywgcmVz
b3VyY2VzLCBzeW1ib2xUYWJsZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBUQ29t
cGlsZXI6OmNsZWFyUmVzdWx0cygpCkBAIC0yNjMsMTggKzI1OSwyNCBAQCB2b2lkIFRDb21waWxl
cjo6Y2xlYXJSZXN1bHRzKCkKICAgICBuYW1lTWFwLmNsZWFyKCk7CiB9CiAKLWJvb2wgVENvbXBp
bGVyOjpkZXRlY3RSZWN1cnNpb24oVEludGVybU5vZGUqIHJvb3QpCitib29sIFRDb21waWxlcjo6
ZGV0ZWN0Q2FsbERlcHRoKFRJbnRlcm1Ob2RlKiByb290LCBUSW5mb1NpbmsmIGluZm9TaW5rLCBi
b29sIGxpbWl0Q2FsbFN0YWNrRGVwdGgpCiB7Ci0gICAgRGV0ZWN0UmVjdXJzaW9uIGRldGVjdDsK
KyAgICBEZXRlY3RDYWxsRGVwdGggZGV0ZWN0KGluZm9TaW5rLCBsaW1pdENhbGxTdGFja0RlcHRo
LCBtYXhDYWxsU3RhY2tEZXB0aCk7CiAgICAgcm9vdC0+dHJhdmVyc2UoJmRldGVjdCk7Ci0gICAg
c3dpdGNoIChkZXRlY3QuZGV0ZWN0UmVjdXJzaW9uKCkpIHsKLSAgICAgICAgY2FzZSBEZXRlY3RS
ZWN1cnNpb246OmtFcnJvck5vbmU6CisgICAgc3dpdGNoIChkZXRlY3QuZGV0ZWN0Q2FsbERlcHRo
KCkpIHsKKyAgICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvck5vbmU6CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBEZXRlY3RSZWN1cnNpb246OmtFcnJvck1p
c3NpbmdNYWluOgotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJv
ciwgIk1pc3NpbmcgbWFpbigpIik7CisgICAgICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjprRXJy
b3JNaXNzaW5nTWFpbjoKKyAgICAgICAgICAgIGluZm9TaW5rLmluZm8ucHJlZml4KEVQcmVmaXhF
cnJvcik7CisgICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJNaXNzaW5nIG1haW4oKSI7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgRGV0ZWN0Q2FsbERlcHRoOjpr
RXJyb3JSZWN1cnNpb246CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4
RXJyb3IpOworICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24gcmVjdXJzaW9u
IGRldGVjdGVkIjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBEZXRl
Y3RSZWN1cnNpb246OmtFcnJvclJlY3Vyc2lvbjoKLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZShFUHJlZml4RXJyb3IsICJGdW5jdGlvbiByZWN1cnNpb24gZGV0ZWN0ZWQiKTsKKyAg
ICAgICAgY2FzZSBEZXRlY3RDYWxsRGVwdGg6OmtFcnJvck1heERlcHRoRXhjZWVkZWQ6CisgICAg
ICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAg
aW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24gY2FsbCBzdGFjayB0b28gZGVlcCI7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOwpAQCAtMzIwLDYgKzMyMiwyOCBAQCBib29sIFRDb21waWxlcjo6ZW5mb3JjZVRpbWlu
Z1Jlc3RyaWN0aW9uCiAgICAgfQogfQogCitib29sIFRDb21waWxlcjo6bGltaXRFeHByZXNzaW9u
Q29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCkKK3sKKyAgICBUSW50ZXJtVHJhdmVyc2VyIHRy
YXZlcnNlcjsKKyAgICByb290LT50cmF2ZXJzZSgmdHJhdmVyc2VyKTsKKyAgICBURGVwZW5kZW5j
eUdyYXBoIGdyYXBoKHJvb3QpOworCisgICAgZm9yIChURnVuY3Rpb25DYWxsVmVjdG9yOjpjb25z
dF9pdGVyYXRvciBpdGVyID0gZ3JhcGguYmVnaW5Vc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbHMoKTsK
KyAgICAgICAgIGl0ZXIgIT0gZ3JhcGguZW5kVXNlckRlZmluZWRGdW5jdGlvbkNhbGxzKCk7Cisg
ICAgICAgICArK2l0ZXIpCisgICAgeworICAgICAgICBUR3JhcGhGdW5jdGlvbkNhbGwqIHNhbXBs
ZXJTeW1ib2wgPSAqaXRlcjsKKyAgICAgICAgVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciBncmFw
aFRyYXZlcnNlcjsKKyAgICAgICAgc2FtcGxlclN5bWJvbC0+dHJhdmVyc2UoJmdyYXBoVHJhdmVy
c2VyKTsKKyAgICB9CisKKyAgICBpZiAodHJhdmVyc2VyLmdldE1heERlcHRoKCkgPiBtYXhFeHBy
ZXNzaW9uQ29tcGxleGl0eSkgeworICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJFeHByZXNzaW9u
IHRvbyBjb21wbGV4LiI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIGJvb2wgVENvbXBpbGVyOjplbmZvcmNlRnJhZ21lbnRTaGFkZXJUaW1pbmdS
ZXN0cmljdGlvbnMoY29uc3QgVERlcGVuZGVuY3lHcmFwaCYgZ3JhcGgpCiB7CiAgICAgUmVzdHJp
Y3RGcmFnbWVudFNoYWRlclRpbWluZyByZXN0cmljdG9yKGluZm9TaW5rLmluZm8pOwpAQCAtMzYz
LDYgKzM4NywxMSBAQCBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIFRDb21waWxlcjo6Z2V0CiAg
ICAgcmV0dXJuIGV4dGVuc2lvbkJlaGF2aW9yOwogfQogCitjb25zdCBTaEJ1aWx0SW5SZXNvdXJj
ZXMmIFRDb21waWxlcjo6Z2V0UmVzb3VyY2VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29tcGls
ZVJlc291cmNlczsKK30KKwogY29uc3QgQXJyYXlCb3VuZHNDbGFtcGVyJiBUQ29tcGlsZXI6Omdl
dEFycmF5Qm91bmRzQ2xhbXBlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFycmF5Qm91bmRzQ2xh
bXBlcjsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db25zdGFu
dFVuaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL0NvbnN0YW50VW5pb24uaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbnN0YW50VW5pb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTQs
NiArMTQsNyBAQCBwdWJsaWM6CiAgICAgQ29uc3RhbnRVbmlvbigpCiAgICAgewogICAgICAgICBp
Q29uc3QgPSAwOworICAgICAgICB0eXBlID0gRWJ0Vm9pZDsKICAgICB9CiAKICAgICBQT09MX0FM
TE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpICAgICAgICAKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RDYWxsRGVwdGguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RD
YWxsRGVwdGguY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTg1
IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiY29tcGlsZXIvRGV0ZWN0Q2FsbERl
cHRoLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvSW5mb1NpbmsuaCIKKworRGV0ZWN0Q2FsbERlcHRo
OjpGdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZShjb25zdCBUU3RyaW5nJiBmbmFtZSkKKyAgICA6
IG5hbWUoZm5hbWUpLAorICAgICAgdmlzaXQoUHJlVmlzaXQpCit7Cit9CisKK2NvbnN0IFRTdHJp
bmcmIERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpnZXROYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbmFtZTsKK30KKwordm9pZCBEZXRlY3RDYWxsRGVwdGg6OkZ1bmN0aW9uTm9kZTo6
YWRkQ2FsbGVlKAorICAgIERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlKiBjYWxsZWUpCit7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsZWVzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmIChjYWxsZWVzW2ldID09IGNhbGxlZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgY2FsbGVlcy5wdXNoX2JhY2soY2FsbGVlKTsKK30KKworaW50IERldGVjdENhbGxEZXB0
aDo6RnVuY3Rpb25Ob2RlOjpkZXRlY3RDYWxsRGVwdGgoRGV0ZWN0Q2FsbERlcHRoKiBkZXRlY3RD
YWxsRGVwdGgsIGludCBkZXB0aCkKK3sKKyAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOwor
ICAgIEFTU0VSVChkZXRlY3RDYWxsRGVwdGgpOworCisgICAgaW50IG1heERlcHRoID0gZGVwdGg7
CisgICAgdmlzaXQgPSBJblZpc2l0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVl
cy5zaXplKCk7ICsraSkgeworICAgICAgICBzd2l0Y2ggKGNhbGxlZXNbaV0tPnZpc2l0KSB7Cisg
ICAgICAgICAgICBjYXNlIEluVmlzaXQ6CisgICAgICAgICAgICAgICAgLy8gY3ljbGUgZGV0ZWN0
ZWQsIGkuZS4sIHJlY3Vyc2lvbiBkZXRlY3RlZC4KKyAgICAgICAgICAgICAgICByZXR1cm4ga0lu
ZmluaXRlQ2FsbERlcHRoOworICAgICAgICAgICAgY2FzZSBQb3N0VmlzaXQ6CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFByZVZpc2l0OiB7CisgICAgICAgICAgICAg
ICAgLy8gQ2hlY2sgYmVmb3JlIHdlIHJlY3Vyc2Ugc28gd2UgZG9uJ3QgZ28gdG9vIGRlcHRoCisg
ICAgICAgICAgICAgICAgaWYgKGRldGVjdENhbGxEZXB0aC0+Y2hlY2tFeGNlZWRzTWF4RGVwdGgo
ZGVwdGgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVwdGg7CisgICAgICAgICAgICAg
ICAgaW50IGNhbGxEZXB0aCA9IGNhbGxlZXNbaV0tPmRldGVjdENhbGxEZXB0aChkZXRlY3RDYWxs
RGVwdGgsIGRlcHRoICsgMSk7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgYWZ0ZXIgd2UgcmVj
dXJzZSBzbyB3ZSBjYW4gZXhpdCBpbW1lZGlhdGVseSBhbmQgcHJvdmlkZSBpbmZvLgorICAgICAg
ICAgICAgICAgIGlmIChkZXRlY3RDYWxsRGVwdGgtPmNoZWNrRXhjZWVkc01heERlcHRoKGNhbGxE
ZXB0aCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZGV0ZWN0Q2FsbERlcHRoLT5nZXRJbmZvU2lu
aygpLmluZm8gPDwgIjwtIiA8PCBjYWxsZWVzW2ldLT5nZXROYW1lKCk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBjYWxsRGVwdGg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIG1heERlcHRoID0gc3RkOjptYXgoY2FsbERlcHRoLCBtYXhEZXB0aCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisgICAgdmlzaXQgPSBQb3N0VmlzaXQ7CisgICAgcmV0dXJuIG1heERlcHRoOwor
fQorCit2b2lkIERldGVjdENhbGxEZXB0aDo6RnVuY3Rpb25Ob2RlOjpyZXNldCgpCit7CisgICAg
dmlzaXQgPSBQcmVWaXNpdDsKK30KKworRGV0ZWN0Q2FsbERlcHRoOjpEZXRlY3RDYWxsRGVwdGgo
VEluZm9TaW5rJiBpbmZvU2luaywgYm9vbCBsaW1pdENhbGxTdGFja0RlcHRoLCBpbnQgbWF4Q2Fs
bFN0YWNrRGVwdGgpCisgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCB0cnVlLCBm
YWxzZSksCisgICAgICBjdXJyZW50RnVuY3Rpb24oTlVMTCksCisgICAgICBpbmZvU2luayhpbmZv
U2luayksCisgICAgICBtYXhEZXB0aChsaW1pdENhbGxTdGFja0RlcHRoID8gbWF4Q2FsbFN0YWNr
RGVwdGggOiBGdW5jdGlvbk5vZGU6OmtJbmZpbml0ZUNhbGxEZXB0aCkKK3sKK30KKworRGV0ZWN0
Q2FsbERlcHRoOjp+RGV0ZWN0Q2FsbERlcHRoKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZ1bmN0aW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgZGVsZXRlIGZ1bmN0aW9uc1tpXTsK
K30KKworYm9vbCBEZXRlY3RDYWxsRGVwdGg6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBU
SW50ZXJtQWdncmVnYXRlKiBub2RlKQoreworICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAg
ICB7CisgICAgICAgIGNhc2UgRU9wUHJvdG90eXBlOgorICAgICAgICAgICAgLy8gRnVuY3Rpb24g
ZGVjbGFyYXRpb24uCisgICAgICAgICAgICAvLyBEb24ndCBhZGQgRnVuY3Rpb25Ob2RlIGhlcmUg
YmVjYXVzZSBub2RlLT5nZXROYW1lKCkgaXMgdGhlCisgICAgICAgICAgICAvLyB1bm1hbmdsZWQg
ZnVuY3Rpb24gbmFtZS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEZ1bmN0
aW9uOiB7CisgICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgorICAgICAgICAgICAg
aWYgKHZpc2l0ID09IFByZVZpc2l0KSB7CisgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9u
ID0gZmluZEZ1bmN0aW9uQnlOYW1lKG5vZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAg
aWYgKGN1cnJlbnRGdW5jdGlvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRGdW5jdGlvbiA9IG5ldyBGdW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb25zLnB1c2hfYmFjayhjdXJyZW50RnVuY3Rpb24pOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAodmlzaXQgPT0gUG9zdFZpc2l0KSB7
CisgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uID0gTlVMTDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRU9wRnVuY3Rpb25D
YWxsOiB7CisgICAgICAgICAgICAvLyBGdW5jdGlvbiBjYWxsLgorICAgICAgICAgICAgaWYgKHZp
c2l0ID09IFByZVZpc2l0KSB7CisgICAgICAgICAgICAgICAgRnVuY3Rpb25Ob2RlKiBmdW5jID0g
ZmluZEZ1bmN0aW9uQnlOYW1lKG5vZGUtPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgaWYg
KGZ1bmMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBmdW5jID0gbmV3IEZ1bmN0aW9u
Tm9kZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMucHVz
aF9iYWNrKGZ1bmMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY3Vy
cmVudEZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb24tPmFkZENh
bGxlZShmdW5jKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgRGV0ZWN0Q2FsbERlcHRoOjpjaGVja0V4Y2VlZHNNYXhEZXB0aChp
bnQgZGVwdGgpCit7CisgICAgcmV0dXJuIGRlcHRoID49IG1heERlcHRoOworfQorCit2b2lkIERl
dGVjdENhbGxEZXB0aDo6cmVzZXRGdW5jdGlvbk5vZGVzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZ1bmN0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBmdW5jdGlvbnNbaV0t
PnJlc2V0KCk7CisgICAgfQorfQorCitEZXRlY3RDYWxsRGVwdGg6OkVycm9yQ29kZSBEZXRlY3RD
YWxsRGVwdGg6OmRldGVjdENhbGxEZXB0aEZvckZ1bmN0aW9uKEZ1bmN0aW9uTm9kZSogZnVuYykK
K3sKKyAgICBjdXJyZW50RnVuY3Rpb24gPSBOVUxMOworICAgIHJlc2V0RnVuY3Rpb25Ob2Rlcygp
OworCisgICAgaW50IG1heENhbGxEZXB0aCA9IGZ1bmMtPmRldGVjdENhbGxEZXB0aCh0aGlzLCAx
KTsKKworICAgIGlmIChtYXhDYWxsRGVwdGggPT0gRnVuY3Rpb25Ob2RlOjprSW5maW5pdGVDYWxs
RGVwdGgpCisgICAgICAgIHJldHVybiBrRXJyb3JSZWN1cnNpb247CisKKyAgICBpZiAobWF4Q2Fs
bERlcHRoID49IG1heERlcHRoKQorICAgICAgICByZXR1cm4ga0Vycm9yTWF4RGVwdGhFeGNlZWRl
ZDsKKworICAgIHJldHVybiBrRXJyb3JOb25lOworfQorCitEZXRlY3RDYWxsRGVwdGg6OkVycm9y
Q29kZSBEZXRlY3RDYWxsRGVwdGg6OmRldGVjdENhbGxEZXB0aCgpCit7CisgICAgaWYgKG1heERl
cHRoICE9IEZ1bmN0aW9uTm9kZTo6a0luZmluaXRlQ2FsbERlcHRoKSB7CisgICAgICAgIC8vIENo
ZWNrIGFsbCBmdW5jdGlvbnMgYmVjYXVzZSB0aGUgZHJpdmVyIG1heSBmYWlsIG9uIHRoZW0KKyAg
ICAgICAgLy8gVE9ETzogQmVmb3JlIGRldGVjdGluZ1JlY3Vyc2lvbiwgc3RyaXAgdW51c2VkIGZ1
bmN0aW9ucy4KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbnMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgICAgIEVycm9yQ29kZSBlcnJvciA9IGRldGVjdENhbGxEZXB0aEZv
ckZ1bmN0aW9uKGZ1bmN0aW9uc1tpXSk7CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0ga0Vycm9y
Tm9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgICBGdW5jdGlvbk5vZGUqIG1haW4gPSBmaW5kRnVuY3Rpb25CeU5hbWUoIm1h
aW4oIik7CisgICAgICAgIGlmIChtYWluID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4ga0Vy
cm9yTWlzc2luZ01haW47CisKKyAgICAgICAgcmV0dXJuIGRldGVjdENhbGxEZXB0aEZvckZ1bmN0
aW9uKG1haW4pOworICAgIH0KKworICAgIHJldHVybiBrRXJyb3JOb25lOworfQorCitEZXRlY3RD
YWxsRGVwdGg6OkZ1bmN0aW9uTm9kZSogRGV0ZWN0Q2FsbERlcHRoOjpmaW5kRnVuY3Rpb25CeU5h
bWUoCisgICAgY29uc3QgVFN0cmluZyYgbmFtZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZ1bmN0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoZnVuY3Rpb25zW2ldLT5n
ZXROYW1lKCkgPT0gbmFtZSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbnNbaV07CisgICAg
fQorICAgIHJldHVybiBOVUxMOworfQorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvRGV0ZWN0Q2FsbERlcHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZu
ZGVmIENPTVBJTEVSX0RFVEVDVF9SRUNVUlNJT05fSF8KKyNkZWZpbmUgQ09NUElMRVJfREVURUNU
X1JFQ1VSU0lPTl9IXworCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCisKKyNpbmNs
dWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKKyNpbmNs
dWRlICJjb21waWxlci9WYXJpYWJsZUluZm8uaCIKKworY2xhc3MgVEluZm9TaW5rOworCisvLyBU
cmF2ZXJzZXMgaW50ZXJtZWRpYXRlIHRyZWUgdG8gZGV0ZWN0IGZ1bmN0aW9uIHJlY3Vyc2lvbi4K
K2NsYXNzIERldGVjdENhbGxEZXB0aCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyIHsKK3B1Ymxp
YzoKKyAgICBlbnVtIEVycm9yQ29kZSB7CisgICAgICAgIGtFcnJvck1pc3NpbmdNYWluLAorICAg
ICAgICBrRXJyb3JSZWN1cnNpb24sCisgICAgICAgIGtFcnJvck1heERlcHRoRXhjZWVkZWQsCisg
ICAgICAgIGtFcnJvck5vbmUKKyAgICB9OworCisgICAgRGV0ZWN0Q2FsbERlcHRoKFRJbmZvU2lu
ayYgaW5mb1N5bmMsIGJvb2wgbGltaXRDYWxsU3RhY2tEZXB0aCwgaW50IG1heENhbGxTdGFja0Rl
cHRoKTsKKyAgICB+RGV0ZWN0Q2FsbERlcHRoKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRB
Z2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqKTsKKworICAgIGJvb2wgY2hlY2tFeGNl
ZWRzTWF4RGVwdGgoaW50IGRlcHRoKTsKKworICAgIEVycm9yQ29kZSBkZXRlY3RDYWxsRGVwdGgo
KTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBGdW5jdGlvbk5vZGUgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgc3RhdGljIGNvbnN0IGludCBrSW5maW5pdGVDYWxsRGVwdGggPSBJTlRfTUFYOworCisg
ICAgICAgIEZ1bmN0aW9uTm9kZShjb25zdCBUU3RyaW5nJiBmbmFtZSk7CisKKyAgICAgICAgY29u
c3QgVFN0cmluZyYgZ2V0TmFtZSgpIGNvbnN0OworCisgICAgICAgIC8vIElmIGEgZnVuY3Rpb24g
aXMgYWxyZWFkeSBpbiB0aGUgY2FsbGVlIGxpc3QsIHRoaXMgYmVjb21lcyBhIG5vLW9wLgorICAg
ICAgICB2b2lkIGFkZENhbGxlZShGdW5jdGlvbk5vZGUqIGNhbGxlZSk7CisKKyAgICAgICAgLy8g
UmV0dXJucyBrSW5pZmluaXR5Q2FsbERlcHRoIGlmIHJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxscyBh
cmUgZGV0ZWN0ZWQuCisgICAgICAgIGludCBkZXRlY3RDYWxsRGVwdGgoRGV0ZWN0Q2FsbERlcHRo
KiBkZXRlY3RDYWxsRGVwdGgsIGludCBkZXB0aCk7CisKKyAgICAgICAgLy8gUmVzZXQgc3RhdGUu
CisgICAgICAgIHZvaWQgcmVzZXQoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIC8vIG1hbmds
ZWQgZnVuY3Rpb24gbmFtZSBpcyB1bmlxdWUuCisgICAgICAgIFRTdHJpbmcgbmFtZTsKKworICAg
ICAgICAvLyBmdW5jdGlvbnMgdGhhdCBhcmUgZGlyZWN0bHkgY2FsbGVkIGJ5IHRoaXMgZnVuY3Rp
b24uCisgICAgICAgIFRWZWN0b3I8RnVuY3Rpb25Ob2RlKj4gY2FsbGVlczsKKworICAgICAgICBW
aXNpdCB2aXNpdDsKKyAgICB9OworCisgICAgRXJyb3JDb2RlIGRldGVjdENhbGxEZXB0aEZvckZ1
bmN0aW9uKEZ1bmN0aW9uTm9kZSogZnVuYyk7CisgICAgRnVuY3Rpb25Ob2RlKiBmaW5kRnVuY3Rp
b25CeU5hbWUoY29uc3QgVFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCByZXNldEZ1bmN0aW9uTm9k
ZXMoKTsKKworICAgIFRJbmZvU2luayYgZ2V0SW5mb1NpbmsoKSB7IHJldHVybiBpbmZvU2luazsg
fQorCisgICAgVFZlY3RvcjxGdW5jdGlvbk5vZGUqPiBmdW5jdGlvbnM7CisgICAgRnVuY3Rpb25O
b2RlKiBjdXJyZW50RnVuY3Rpb247CisgICAgVEluZm9TaW5rJiBpbmZvU2luazsKKyAgICBpbnQg
bWF4RGVwdGg7CisKKyAgICBEZXRlY3RDYWxsRGVwdGgoY29uc3QgRGV0ZWN0Q2FsbERlcHRoJik7
CisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgRGV0ZWN0Q2FsbERlcHRoJik7Cit9OworCisjZW5k
aWYgIC8vIENPTVBJTEVSX0RFVEVDVF9SRUNVUlNJT05fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNpb24uY3Bw
CShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvRGV0ZWN0UmVjdXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjUgKzAsMCBAQAot
Ly8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgImNvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5o
IgotCi1EZXRlY3RSZWN1cnNpb246OkZ1bmN0aW9uTm9kZTo6RnVuY3Rpb25Ob2RlKGNvbnN0IFRT
dHJpbmcmIGZuYW1lKQotICAgIDogbmFtZShmbmFtZSksCi0gICAgICB2aXNpdChQcmVWaXNpdCkK
LXsKLX0KLQotY29uc3QgVFN0cmluZyYgRGV0ZWN0UmVjdXJzaW9uOjpGdW5jdGlvbk5vZGU6Omdl
dE5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBuYW1lOwotfQotCi12b2lkIERldGVjdFJlY3Vy
c2lvbjo6RnVuY3Rpb25Ob2RlOjphZGRDYWxsZWUoCi0gICAgRGV0ZWN0UmVjdXJzaW9uOjpGdW5j
dGlvbk5vZGUqIGNhbGxlZSkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxlZXMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGNhbGxlZXNbaV0gPT0gY2FsbGVlKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYWxsZWVzLnB1c2hfYmFjayhjYWxsZWUpOwotfQot
Ci1ib29sIERldGVjdFJlY3Vyc2lvbjo6RnVuY3Rpb25Ob2RlOjpkZXRlY3RSZWN1cnNpb24oKQot
ewotICAgIEFTU0VSVCh2aXNpdCA9PSBQcmVWaXNpdCk7Ci0gICAgdmlzaXQgPSBJblZpc2l0Owot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGVlcy5zaXplKCk7ICsraSkgewotICAgICAg
ICBzd2l0Y2ggKGNhbGxlZXNbaV0tPnZpc2l0KSB7Ci0gICAgICAgICAgICBjYXNlIEluVmlzaXQ6
Ci0gICAgICAgICAgICAgICAgLy8gY3ljbGUgZGV0ZWN0ZWQsIGkuZS4sIHJlY3Vyc2lvbiBkZXRl
Y3RlZC4KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIGNhc2UgUG9z
dFZpc2l0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQcmVWaXNp
dDogewotICAgICAgICAgICAgICAgIGJvb2wgcmVjdXJzaW9uID0gY2FsbGVlc1tpXS0+ZGV0ZWN0
UmVjdXJzaW9uKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2lvbikKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdmlzaXQgPSBQ
b3N0VmlzaXQ7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1EZXRlY3RSZWN1cnNpb246OkRldGVj
dFJlY3Vyc2lvbigpCi0gICAgOiBjdXJyZW50RnVuY3Rpb24oTlVMTCkKLXsKLX0KLQotRGV0ZWN0
UmVjdXJzaW9uOjp+RGV0ZWN0UmVjdXJzaW9uKCkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZ1bmN0aW9ucy5zaXplKCk7ICsraSkKLSAgICAgICAgZGVsZXRlIGZ1bmN0aW9uc1tpXTsK
LX0KLQotYm9vbCBEZXRlY3RSZWN1cnNpb246OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBU
SW50ZXJtQWdncmVnYXRlKiBub2RlKQotewotICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKLSAg
ICB7Ci0gICAgICAgIGNhc2UgRU9wUHJvdG90eXBlOgotICAgICAgICAgICAgLy8gRnVuY3Rpb24g
ZGVjbGFyYXRpb24uCi0gICAgICAgICAgICAvLyBEb24ndCBhZGQgRnVuY3Rpb25Ob2RlIGhlcmUg
YmVjYXVzZSBub2RlLT5nZXROYW1lKCkgaXMgdGhlCi0gICAgICAgICAgICAvLyB1bm1hbmdsZWQg
ZnVuY3Rpb24gbmFtZS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVPcEZ1bmN0
aW9uOiB7Ci0gICAgICAgICAgICAvLyBGdW5jdGlvbiBkZWZpbml0aW9uLgotICAgICAgICAgICAg
aWYgKHZpc2l0ID09IFByZVZpc2l0KSB7Ci0gICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9u
ID0gZmluZEZ1bmN0aW9uQnlOYW1lKG5vZGUtPmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKGN1cnJlbnRGdW5jdGlvbiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRGdW5jdGlvbiA9IG5ldyBGdW5jdGlvbk5vZGUobm9kZS0+Z2V0TmFtZSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb25zLnB1c2hfYmFjayhjdXJyZW50RnVuY3Rpb24pOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOiB7Ci0gICAgICAgICAgICAvLyBGdW5jdGlv
biBjYWxsLgotICAgICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KSB7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKGN1cnJlbnRGdW5jdGlvbiAhPSBOVUxMKTsKLSAgICAgICAgICAgICAgICBG
dW5jdGlvbk5vZGUqIGZ1bmMgPSBmaW5kRnVuY3Rpb25CeU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsK
LSAgICAgICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGZ1bmMgPSBuZXcgRnVuY3Rpb25Ob2RlKG5vZGUtPmdldE5hbWUoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9ucy5wdXNoX2JhY2soZnVuYyk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvbi0+YWRkQ2FsbGVlKGZ1bmMpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotRGV0ZWN0UmVj
dXJzaW9uOjpFcnJvckNvZGUgRGV0ZWN0UmVjdXJzaW9uOjpkZXRlY3RSZWN1cnNpb24oKQotewot
ICAgIEZ1bmN0aW9uTm9kZSogbWFpbiA9IGZpbmRGdW5jdGlvbkJ5TmFtZSgibWFpbigiKTsKLSAg
ICBpZiAobWFpbiA9PSBOVUxMKQotICAgICAgICByZXR1cm4ga0Vycm9yTWlzc2luZ01haW47Ci0g
ICAgaWYgKG1haW4tPmRldGVjdFJlY3Vyc2lvbigpKQotICAgICAgICByZXR1cm4ga0Vycm9yUmVj
dXJzaW9uOwotICAgIHJldHVybiBrRXJyb3JOb25lOwotfQotCi1EZXRlY3RSZWN1cnNpb246OkZ1
bmN0aW9uTm9kZSogRGV0ZWN0UmVjdXJzaW9uOjpmaW5kRnVuY3Rpb25CeU5hbWUoCi0gICAgY29u
c3QgVFN0cmluZyYgbmFtZSkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9u
cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoZnVuY3Rpb25zW2ldLT5nZXROYW1lKCkgPT0g
bmFtZSkKLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbnNbaV07Ci0gICAgfQotICAgIHJldHVy
biBOVUxMOwotfQotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
RGV0ZWN0UmVjdXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0RldGVjdFJlY3Vyc2lvbi5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRGV0ZWN0UmVjdXJzaW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNjAgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEx
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2lmbmRlZiBD
T01QSUxFUl9ERVRFQ1RfUkVDVVJTSU9OX0hfCi0jZGVmaW5lIENPTVBJTEVSX0RFVEVDVF9SRUNV
UlNJT05fSF8KLQotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotCi0jaW5jbHVkZSAi
Y29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvVmFyaWFibGVJbmZv
LmgiCi0KLS8vIFRyYXZlcnNlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBkZXRlY3QgZnVuY3Rpb24g
cmVjdXJzaW9uLgotY2xhc3MgRGV0ZWN0UmVjdXJzaW9uIDogcHVibGljIFRJbnRlcm1UcmF2ZXJz
ZXIgewotcHVibGljOgotICAgIGVudW0gRXJyb3JDb2RlIHsKLSAgICAgICAga0Vycm9yTWlzc2lu
Z01haW4sCi0gICAgICAgIGtFcnJvclJlY3Vyc2lvbiwKLSAgICAgICAga0Vycm9yTm9uZQotICAg
IH07Ci0KLSAgICBEZXRlY3RSZWN1cnNpb24oKTsKLSAgICB+RGV0ZWN0UmVjdXJzaW9uKCk7Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUq
KTsKLQotICAgIEVycm9yQ29kZSBkZXRlY3RSZWN1cnNpb24oKTsKLQotcHJpdmF0ZToKLSAgICBj
bGFzcyBGdW5jdGlvbk5vZGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25Ob2RlKGNv
bnN0IFRTdHJpbmcmIGZuYW1lKTsKLQotICAgICAgICBjb25zdCBUU3RyaW5nJiBnZXROYW1lKCkg
Y29uc3Q7Ci0KLSAgICAgICAgLy8gSWYgYSBmdW5jdGlvbiBpcyBhbHJlYWR5IGluIHRoZSBjYWxs
ZWUgbGlzdCwgdGhpcyBiZWNvbWVzIGEgbm8tb3AuCi0gICAgICAgIHZvaWQgYWRkQ2FsbGVlKEZ1
bmN0aW9uTm9kZSogY2FsbGVlKTsKLQotICAgICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiByZWN1cnNp
dmUgZnVuY3Rpb24gY2FsbHMgYXJlIGRldGVjdGVkLgotICAgICAgICBib29sIGRldGVjdFJlY3Vy
c2lvbigpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgLy8gbWFuZ2xlZCBmdW5jdGlvbiBuYW1l
IGlzIHVuaXF1ZS4KLSAgICAgICAgVFN0cmluZyBuYW1lOwotCi0gICAgICAgIC8vIGZ1bmN0aW9u
cyB0aGF0IGFyZSBkaXJlY3RseSBjYWxsZWQgYnkgdGhpcyBmdW5jdGlvbi4KLSAgICAgICAgVFZl
Y3RvcjxGdW5jdGlvbk5vZGUqPiBjYWxsZWVzOwotCi0gICAgICAgIFZpc2l0IHZpc2l0OwotICAg
IH07Ci0KLSAgICBGdW5jdGlvbk5vZGUqIGZpbmRGdW5jdGlvbkJ5TmFtZShjb25zdCBUU3RyaW5n
JiBuYW1lKTsKLQotICAgIFRWZWN0b3I8RnVuY3Rpb25Ob2RlKj4gZnVuY3Rpb25zOwotICAgIEZ1
bmN0aW9uTm9kZSogY3VycmVudEZ1bmN0aW9uOwotfTsKLQotI2VuZGlmICAvLyBDT01QSUxFUl9E
RVRFQ1RfUkVDVVJTSU9OX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvRGlhZ25vc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGljcy5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9EaWFnbm9zdGljcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBURGlhZ25vc3RpY3M6OndyaXRlSW5mbyhT
ZXZlcml0eSBzZQogICAgIFRJbmZvU2lua0Jhc2UmIHNpbmsgPSBtSW5mb1NpbmsuaW5mbzsKICAg
ICAvKiBWQysrIGZvcm1hdDogZmlsZShsaW5lbnVtKSA6IGVycm9yICM6ICd0b2tlbicgOiBleHRy
YWluZm8gKi8KICAgICBzaW5rLnByZWZpeChwcmVmaXgpOwotICAgIHNpbmsubG9jYXRpb24oRW5j
b2RlU291cmNlTG9jKGxvYy5maWxlLCBsb2MubGluZSkpOworICAgIHNpbmsubG9jYXRpb24obG9j
LmZpbGUsIGxvYy5saW5lKTsKICAgICBzaW5rIDw8ICInIiA8PCB0b2tlbiA8PCAgIicgOiAiIDw8
IHJlYXNvbiA8PCAiICIgPDwgZXh0cmEgPDwgIlxuIjsKIH0KIApJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Gb3JMb29wVW5yb2xsLmNwcAko
cmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L0Zvckxvb3BVbnJvbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0yMTAsNiArMjEwLDYgQEAgaW50IEZv
ckxvb3BVbnJvbGw6OmdldExvb3BJbmNyZW1lbnQoVEludAogaW50IEZvckxvb3BVbnJvbGw6OmV2
YWx1YXRlSW50Q29uc3RhbnQoVEludGVybUNvbnN0YW50VW5pb24qIG5vZGUpCiB7CiAgICAgQVNT
RVJUKChub2RlICE9IE5VTEwpICYmIChub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpICE9IE5V
TEwpKTsKLSAgICByZXR1cm4gbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0
KCk7CisgICAgcmV0dXJuIG5vZGUtPmdldElDb25zdCgwKTsKIH0KIApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwCShyZXZpc2lv
biAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1Np
bmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02LDggKzYsOCBAQAogCiAjaW5jbHVkZSAiY29tcGls
ZXIvSW5mb1NpbmsuaCIKIAotdm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoVFByZWZpeFR5cGUg
bWVzc2FnZSkgewotICAgIHN3aXRjaChtZXNzYWdlKSB7Cit2b2lkIFRJbmZvU2lua0Jhc2U6OnBy
ZWZpeChUUHJlZml4VHlwZSBwKSB7CisgICAgc3dpdGNoKHApIHsKICAgICAgICAgY2FzZSBFUHJl
Zml4Tm9uZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVQcmVmaXhXYXJuaW5n
OgpAQCAtMzEsMjkgKzMxLDI0IEBAIHZvaWQgVEluZm9TaW5rQmFzZTo6cHJlZml4KFRQcmVmaXhU
eXBlIG0KICAgICB9CiB9CiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6bG9jYXRpb24oVFNvdXJjZUxv
YyBsb2MpIHsKLSAgICBpbnQgc3RyaW5nID0gMCwgbGluZSA9IDA7Ci0gICAgRGVjb2RlU291cmNl
TG9jKGxvYywgJnN0cmluZywgJmxpbmUpOwotCit2b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9u
KGludCBmaWxlLCBpbnQgbGluZSkgewogICAgIFRQZXJzaXN0U3RyaW5nU3RyZWFtIHN0cmVhbTsK
ICAgICBpZiAobGluZSkKLSAgICAgICAgc3RyZWFtIDw8IHN0cmluZyA8PCAiOiIgPDwgbGluZTsK
KyAgICAgICAgc3RyZWFtIDw8IGZpbGUgPDwgIjoiIDw8IGxpbmU7CiAgICAgZWxzZQotICAgICAg
ICBzdHJlYW0gPDwgc3RyaW5nIDw8ICI6PyAiOworICAgICAgICBzdHJlYW0gPDwgZmlsZSA8PCAi
Oj8gIjsKICAgICBzdHJlYW0gPDwgIjogIjsKIAogICAgIHNpbmsuYXBwZW5kKHN0cmVhbS5zdHIo
KSk7CiB9CiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6bWVzc2FnZShUUHJlZml4VHlwZSBtZXNzYWdl
LCBjb25zdCBjaGFyKiBzKSB7Ci0gICAgcHJlZml4KG1lc3NhZ2UpOwotICAgIHNpbmsuYXBwZW5k
KHMpOwotICAgIHNpbmsuYXBwZW5kKCJcbiIpOwordm9pZCBUSW5mb1NpbmtCYXNlOjpsb2NhdGlv
bihjb25zdCBUU291cmNlTG9jJiBsb2MpIHsKKyAgICBsb2NhdGlvbihsb2MuZmlyc3RfZmlsZSwg
bG9jLmZpcnN0X2xpbmUpOwogfQogCi12b2lkIFRJbmZvU2lua0Jhc2U6Om1lc3NhZ2UoVFByZWZp
eFR5cGUgbWVzc2FnZSwgY29uc3QgY2hhciogcywgVFNvdXJjZUxvYyBsb2MpIHsKLSAgICBwcmVm
aXgobWVzc2FnZSk7Cit2b2lkIFRJbmZvU2lua0Jhc2U6Om1lc3NhZ2UoVFByZWZpeFR5cGUgcCwg
Y29uc3QgVFNvdXJjZUxvYyYgbG9jLCBjb25zdCBjaGFyKiBtKSB7CisgICAgcHJlZml4KHApOwog
ICAgIGxvY2F0aW9uKGxvYyk7Ci0gICAgc2luay5hcHBlbmQocyk7CisgICAgc2luay5hcHBlbmQo
bSk7CiAgICAgc2luay5hcHBlbmQoIlxuIik7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5mb1NpbmsuaAkocmV2aXNpb24gMTUyOTc5KQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luZm9TaW5rLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk2LDEwICs5NiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVFBlcnNpc3RTdHJp
bmcmIHN0cigpIGNvbnN0IHsgcmV0dXJuIHNpbms7IH0KICAgICBjb25zdCBjaGFyKiBjX3N0cigp
IGNvbnN0IHsgcmV0dXJuIHNpbmsuY19zdHIoKTsgfQogCi0gICAgdm9pZCBwcmVmaXgoVFByZWZp
eFR5cGUgbWVzc2FnZSk7Ci0gICAgdm9pZCBsb2NhdGlvbihUU291cmNlTG9jIGxvYyk7Ci0gICAg
dm9pZCBtZXNzYWdlKFRQcmVmaXhUeXBlIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHMpOwotICAgIHZv
aWQgbWVzc2FnZShUUHJlZml4VHlwZSBtZXNzYWdlLCBjb25zdCBjaGFyKiBzLCBUU291cmNlTG9j
IGxvYyk7CisgICAgdm9pZCBwcmVmaXgoVFByZWZpeFR5cGUgcCk7CisgICAgdm9pZCBsb2NhdGlv
bihpbnQgZmlsZSwgaW50IGxpbmUpOworICAgIHZvaWQgbG9jYXRpb24oY29uc3QgVFNvdXJjZUxv
YyYgbG9jKTsKKyAgICB2b2lkIG1lc3NhZ2UoVFByZWZpeFR5cGUgcCwgY29uc3QgVFNvdXJjZUxv
YyYgbG9jLCBjb25zdCBjaGFyKiBtKTsKIAogcHJpdmF0ZToKICAgICBUUGVyc2lzdFN0cmluZyBz
aW5rOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxp
emUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9Jbml0aWFsaXplLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0xNCw1MTMg
KzE0LDQxMyBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCiAKLS8vPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLy8KLS8vIFByb3RvdHlwZXMgZm9yIGJ1aWx0LWluIGZ1bmN0aW9u
cyBzZWVuIGJ5IGJvdGggdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJzLgotLy8KLS8vPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotc3RhdGljIFRTdHJpbmcgQnVpbHRJbkZ1bmN0aW9uc0NvbW1vbihjb25z
dCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcykKK3ZvaWQgSW5zZXJ0QnVpbHRJbkZ1bmN0
aW9ucyhTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0IFNoQnVpbHRJ
blJlc291cmNlcyAmcmVzb3VyY2VzLCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlKQogewotICAg
IFRTdHJpbmcgczsKKyAgICBUVHlwZSAqZmxvYXQxID0gbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBV
bmRlZmluZWQsIEV2cUdsb2JhbCwgMSk7CisgICAgVFR5cGUgKmZsb2F0MiA9IG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDIpOworICAgIFRUeXBlICpmbG9hdDMg
PSBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzKTsKKyAgICBU
VHlwZSAqZmxvYXQ0ID0gbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2Jh
bCwgNCk7CisKKyAgICBUVHlwZSAqaW50MiA9IG5ldyBUVHlwZShFYnRJbnQsIEVicFVuZGVmaW5l
ZCwgRXZxR2xvYmFsLCAyKTsKKyAgICBUVHlwZSAqaW50MyA9IG5ldyBUVHlwZShFYnRJbnQsIEVi
cFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAzKTsKKyAgICBUVHlwZSAqaW50NCA9IG5ldyBUVHlwZShF
YnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCA0KTsKIAogICAgIC8vCiAgICAgLy8gQW5n
bGUgYW5kIFRyaWdvbm9tZXRyaWMgRnVuY3Rpb25zLgogICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0
cmluZygiZmxvYXQgcmFkaWFucyhmbG9hdCBkZWdyZWVzKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMiAgcmFkaWFucyh2ZWMyICBkZWdyZWVzKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMyAgcmFkaWFucyh2ZWMzICBkZWdyZWVzKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjNCAgcmFkaWFucyh2ZWM0ICBkZWdyZWVzKTsiKSk7Ci0KLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJmbG9hdCBkZWdyZWVzKGZsb2F0IHJhZGlhbnMpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMyICBkZWdyZWVzKHZlYzIgIHJhZGlhbnMpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWMzICBkZWdyZWVzKHZlYzMgIHJhZGlhbnMpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0ICBkZWdyZWVzKHZlYzQgIHJhZGlhbnMpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImZsb2F0IHNpbihmbG9hdCBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzIgIHNpbih2ZWMyICBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzMgIHNpbih2ZWMzICBhbmdsZSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIHNp
bih2ZWM0ICBhbmdsZSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgY29zKGZs
b2F0IGFuZ2xlKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgY29zKHZlYzIgIGFu
Z2xlKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgY29zKHZlYzMgIGFuZ2xlKTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgY29zKHZlYzQgIGFuZ2xlKTsiKSk7Ci0K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCB0YW4oZmxvYXQgYW5nbGUpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJ2ZWMyICB0YW4odmVjMiAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWMzICB0YW4odmVjMyAgYW5nbGUpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWM0ICB0YW4odmVjNCAgYW5nbGUpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmco
ImZsb2F0IGFzaW4oZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGFz
aW4odmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGFzaW4odmVjMyAg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGFzaW4odmVjNCAgeCk7IikpOwot
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgYWNvcyhmbG9hdCB4KTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMiAgYWNvcyh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMyAgYWNvcyh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
NCAgYWNvcyh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBhdGFu
KGZsb2F0IHksIGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhdGFu
KHZlYzIgIHksIHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBhdGFu
KHZlYzMgIHksIHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhdGFu
KHZlYzQgIHksIHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGF0
YW4oZmxvYXQgeV9vdmVyX3gpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBhdGFu
KHZlYzIgIHlfb3Zlcl94KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgYXRhbih2
ZWMzICB5X292ZXJfeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGF0YW4odmVj
NCAgeV9vdmVyX3gpOyIpKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwg
InJhZGlhbnMiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQy
LCAicmFkaWFucyIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDMsICJyYWRpYW5zIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0NCwgInJhZGlhbnMiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDEsICJkZWdyZWVzIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0MiwgImRlZ3JlZXMiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQzLCAiZGVncmVlcyIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihmbG9hdDQsICJkZWdyZWVzIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQxLCAic2luIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0MiwgInNpbiIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihmbG9hdDMsICJzaW4iLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQ0LCAic2luIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQxLCAiY29zIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0MiwgImNvcyIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDMsICJjb3MiLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQ0LCAiY29zIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQxLCAidGFuIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MiwgInRhbiIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDMsICJ0YW4iLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0
LCAidGFuIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQx
LCAiYXNpbiIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIs
ICJhc2luIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0Mywg
ImFzaW4iLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAi
YXNpbiIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwg
ImFjb3MiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAi
YWNvcyIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJh
Y29zIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImFj
b3MiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJh
dGFuIiwgZmxvYXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQyLCAiYXRhbiIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0MywgImF0YW4iLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDQsICJhdGFuIiwgZmxvYXQ0LCBmbG9hdDQpOworCisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJhdGFuIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImF0YW4iLCBmbG9hdDIpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiYXRhbiIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJhdGFuIiwgZmxvYXQ0KTsKIAogICAgIC8vCiAgICAg
Ly8gRXhwb25lbnRpYWwgRnVuY3Rpb25zLgogICAgIC8vCi0gICAgcy5hcHBlbmQoVFN0cmluZygi
ZmxvYXQgcG93KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMyICBwb3codmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzMgIHBvdyh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
NCAgcG93KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZs
b2F0IGV4cChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZXhwKHZl
YzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBleHAodmVjMyAgeCk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGV4cCh2ZWM0ICB4KTsiKSk7Ci0KLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsb2coZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzIgIGxvZyh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgbG9nKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBsb2codmVj
NCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZXhwMihmbG9hdCB4KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZXhwMih2ZWMyICB4KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMyAgZXhwMih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCAgZXhwMih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJmbG9hdCBsb2cyKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBs
b2cyKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBsb2cyKHZlYzMg
IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBsb2cyKHZlYzQgIHgpOyIpKTsK
LQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IHNxcnQoZmxvYXQgeCk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoInZlYzIgIHNxcnQodmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRT
dHJpbmcoInZlYzMgIHNxcnQodmVjMyAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgIHNxcnQodmVjNCAgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgaW52
ZXJzZXNxcnQoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGludmVy
c2VzcXJ0KHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBpbnZlcnNl
c3FydCh2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgaW52ZXJzZXNx
cnQodmVjNCAgeCk7IikpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAi
cG93IiwgZmxvYXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQyLCAicG93IiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQzLCAicG93IiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQ0LCAicG93IiwgZmxvYXQ0LCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJleHAiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQyLCAiZXhwIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0MywgImV4cCIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDQsICJleHAiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDEsICJsb2ciLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQyLCAibG9nIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGZsb2F0MywgImxvZyIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDQsICJsb2ciLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDEsICJleHAyIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0MiwgImV4cDIiLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQzLCAiZXhwMiIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDQsICJleHAyIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQxLCAibG9nMiIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDIsICJsb2cyIiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0MywgImxvZzIiLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQ0LCAibG9nMiIsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGZsb2F0MSwgInNxcnQiLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQyLCAic3FydCIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDMsICJzcXJ0IiwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0NCwgInNxcnQiLCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDEsICJpbnZlcnNlc3FydCIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDIsICJpbnZlcnNlc3FydCIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDMsICJpbnZlcnNlc3FydCIsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJpbnZlcnNlc3FydCIsIGZsb2F0NCk7CiAKICAgICAv
LwogICAgIC8vIENvbW1vbiBGdW5jdGlvbnMuCiAgICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJmbG9hdCBhYnMoZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIGFi
cyh2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgYWJzKHZlYzMgIHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBhYnModmVjNCAgeCk7IikpOwotCi0g
ICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc2lnbihmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMiAgc2lnbih2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgc2lnbih2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAg
c2lnbih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBmbG9vcihm
bG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZmxvb3IodmVjMiAgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGZsb29yKHZlYzMgIHgpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBmbG9vcih2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJmbG9hdCBjZWlsKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMyICBjZWlsKHZlYzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMz
ICBjZWlsKHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBjZWlsKHZl
YzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGZyYWN0KGZsb2F0IHgp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBmcmFjdCh2ZWMyICB4KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgZnJhY3QodmVjMyAgeCk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzQgIGZyYWN0KHZlYzQgIHgpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRT
dHJpbmcoImZsb2F0IG1vZChmbG9hdCB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0
cmluZygidmVjMiAgbW9kKHZlYzIgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3Ry
aW5nKCJ2ZWMzICBtb2QodmVjMyAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzQgIG1vZCh2ZWM0ICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMiAgbW9kKHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMzICBtb2QodmVjMyAgeCwgdmVjMyAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzQgIG1vZCh2ZWM0ICB4LCB2ZWM0ICB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJmbG9hdCBtaW4oZmxvYXQgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzIgIG1pbih2ZWMyICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
dmVjMyAgbWluKHZlYzMgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0ICBtaW4odmVjNCAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzIgIG1pbih2ZWMyICB4LCB2ZWMyICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVj
MyAgbWluKHZlYzMgIHgsIHZlYzMgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0
ICBtaW4odmVjNCAgeCwgdmVjNCAgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxv
YXQgbWF4KGZsb2F0IHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMy
ICBtYXgodmVjMiAgeCwgZmxvYXQgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMg
IG1heCh2ZWMzICB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAg
bWF4KHZlYzQgIHgsIGZsb2F0IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBt
YXgodmVjMiAgeCwgdmVjMiAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG1h
eCh2ZWMzICB4LCB2ZWMzICB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbWF4
KHZlYzQgIHgsIHZlYzQgIHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGNs
YW1wKGZsb2F0IHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4VmFsKTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMiAgY2xhbXAodmVjMiAgeCwgZmxvYXQgbWluVmFsLCBmbG9hdCBtYXhW
YWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBjbGFtcCh2ZWMzICB4LCBmbG9h
dCBtaW5WYWwsIGZsb2F0IG1heFZhbCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQg
IGNsYW1wKHZlYzQgIHgsIGZsb2F0IG1pblZhbCwgZmxvYXQgbWF4VmFsKTsiKSk7Ci0gICAgcy5h
cHBlbmQoVFN0cmluZygidmVjMiAgY2xhbXAodmVjMiAgeCwgdmVjMiAgbWluVmFsLCB2ZWMyICBt
YXhWYWwpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzICBjbGFtcCh2ZWMzICB4LCB2
ZWMzICBtaW5WYWwsIHZlYzMgIG1heFZhbCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzQgIGNsYW1wKHZlYzQgIHgsIHZlYzQgIG1pblZhbCwgdmVjNCAgbWF4VmFsKTsiKSk7Ci0KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBtaXgoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgYSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIG1peCh2ZWMyICB4LCB2ZWMyICB5LCBm
bG9hdCBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgbWl4KHZlYzMgIHgsIHZl
YzMgIHksIGZsb2F0IGEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBtaXgodmVj
NCAgeCwgdmVjNCAgeSwgZmxvYXQgYSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIg
IG1peCh2ZWMyICB4LCB2ZWMyICB5LCB2ZWMyICBhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjMyAgbWl4KHZlYzMgIHgsIHZlYzMgIHksIHZlYzMgIGEpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWM0ICBtaXgodmVjNCAgeCwgdmVjNCAgeSwgdmVjNCAgYSk7IikpOwotCi0g
ICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgc3RlcChmbG9hdCBlZGdlLCBmbG9hdCB4KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc3RlcCh2ZWMyICBlZGdlLCB2ZWMyICB4KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc3RlcCh2ZWMzICBlZGdlLCB2ZWMzICB4
KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc3RlcCh2ZWM0ICBlZGdlLCB2ZWM0
ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgc3RlcChmbG9hdCBlZGdlLCB2
ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc3RlcChmbG9hdCBlZGdl
LCB2ZWMzICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgc3RlcChmbG9hdCBl
ZGdlLCB2ZWM0ICB4KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBzbW9vdGhz
dGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgZmxvYXQgeCk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoInZlYzIgIHNtb290aHN0ZXAodmVjMiAgZWRnZTAsIHZlYzIgIGVkZ2UxLCB2ZWMy
ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc21vb3Roc3RlcCh2ZWMzICBl
ZGdlMCwgdmVjMyAgZWRnZTEsIHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0ICBzbW9vdGhzdGVwKHZlYzQgIGVkZ2UwLCB2ZWM0ICBlZGdlMSwgdmVjNCAgeCk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzIgIHNtb290aHN0ZXAoZmxvYXQgZWRnZTAsIGZsb2F0
IGVkZ2UxLCB2ZWMyICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjMyAgc21vb3Ro
c3RlcChmbG9hdCBlZGdlMCwgZmxvYXQgZWRnZTEsIHZlYzMgIHgpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWM0ICBzbW9vdGhzdGVwKGZsb2F0IGVkZ2UwLCBmbG9hdCBlZGdlMSwgdmVj
NCAgeCk7IikpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiYWJzIiwg
ZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImFicyIsIGZs
b2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJhYnMiLCBmbG9h
dDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiYWJzIiwgZmxvYXQ0
KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAic2lnbiIsIGZsb2F0
MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJzaWduIiwgZmxvYXQy
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgInNpZ24iLCBmbG9hdDMp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAic2lnbiIsIGZsb2F0NCk7
CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImZsb29yIiwgZmxvYXQx
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImZsb29yIiwgZmxvYXQy
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImZsb29yIiwgZmxvYXQz
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImZsb29yIiwgZmxvYXQ0
KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiY2VpbCIsIGZsb2F0
MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJjZWlsIiwgZmxvYXQy
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImNlaWwiLCBmbG9hdDMp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiY2VpbCIsIGZsb2F0NCk7
CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImZyYWN0IiwgZmxvYXQx
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImZyYWN0IiwgZmxvYXQy
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImZyYWN0IiwgZmxvYXQz
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImZyYWN0IiwgZmxvYXQ0
KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAibW9kIiwgZmxvYXQx
LCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAibW9kIiwg
ZmxvYXQyLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAi
bW9kIiwgZmxvYXQzLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQ0LCAibW9kIiwgZmxvYXQ0LCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQyLCAibW9kIiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQzLCAibW9kIiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAibW9kIiwgZmxvYXQ0LCBmbG9hdDQpOworCisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJtaW4iLCBmbG9hdDEsIGZsb2F0MSk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJtaW4iLCBmbG9hdDIsIGZsb2F0
MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJtaW4iLCBmbG9hdDMs
IGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJtaW4iLCBm
bG9hdDQsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJt
aW4iLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDMsICJtaW4iLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDQsICJtaW4iLCBmbG9hdDQsIGZsb2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0MSwgIm1heCIsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgIm1heCIsIGZsb2F0MiwgZmxvYXQxKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgIm1heCIsIGZsb2F0MywgZmxvYXQxKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgIm1heCIsIGZsb2F0NCwgZmxvYXQx
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgIm1heCIsIGZsb2F0Miwg
ZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgIm1heCIsIGZs
b2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgIm1h
eCIsIGZsb2F0NCwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQxLCAiY2xhbXAiLCBmbG9hdDEsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0MiwgImNsYW1wIiwgZmxvYXQyLCBmbG9hdDEsIGZsb2F0MSk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJjbGFtcCIsIGZsb2F0MywgZmxv
YXQxLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiY2xh
bXAiLCBmbG9hdDQsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0MiwgImNsYW1wIiwgZmxvYXQyLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMsICJjbGFtcCIsIGZsb2F0MywgZmxvYXQzLCBmbG9h
dDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiY2xhbXAiLCBmbG9h
dDQsIGZsb2F0NCwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQxLCAibWl4IiwgZmxvYXQxLCBmbG9hdDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDIsICJtaXgiLCBmbG9hdDIsIGZsb2F0MiwgZmxvYXQxKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgIm1peCIsIGZsb2F0MywgZmxvYXQzLCBm
bG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAibWl4IiwgZmxv
YXQ0LCBmbG9hdDQsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDIsICJtaXgiLCBmbG9hdDIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0MywgIm1peCIsIGZsb2F0MywgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAibWl4IiwgZmxvYXQ0LCBmbG9hdDQsIGZs
b2F0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgInN0ZXAiLCBm
bG9hdDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJz
dGVwIiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxv
YXQzLCAic3RlcCIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0NCwgInN0ZXAiLCBmbG9hdDQsIGZsb2F0NCk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDIsICJzdGVwIiwgZmxvYXQxLCBmbG9hdDIpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAic3RlcCIsIGZsb2F0MSwgZmxvYXQzKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInN0ZXAiLCBmbG9hdDEsIGZsb2F0NCk7
CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgInNtb290aHN0ZXAiLCBm
bG9hdDEsIGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MiwgInNtb290aHN0ZXAiLCBmbG9hdDIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgInNtb290aHN0ZXAiLCBmbG9hdDMsIGZsb2F0Mywg
ZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInNtb290aHN0
ZXAiLCBmbG9hdDQsIGZsb2F0NCwgZmxvYXQ0KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0MiwgInNtb290aHN0ZXAiLCBmbG9hdDEsIGZsb2F0MSwgZmxvYXQyKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgInNtb290aHN0ZXAiLCBmbG9hdDEsIGZs
b2F0MSwgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInNt
b290aHN0ZXAiLCBmbG9hdDEsIGZsb2F0MSwgZmxvYXQ0KTsKIAogICAgIC8vCiAgICAgLy8gR2Vv
bWV0cmljIEZ1bmN0aW9ucy4KICAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxl
bmd0aChmbG9hdCB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbGVuZ3RoKHZl
YzIgIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBsZW5ndGgodmVjMyAgeCk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGxlbmd0aCh2ZWM0ICB4KTsiKSk7Ci0K
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkaXN0YW5jZShmbG9hdCBwMCwgZmxvYXQgcDEp
OyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkaXN0YW5jZSh2ZWMyICBwMCwgdmVj
MiAgcDEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkaXN0YW5jZSh2ZWMzICBw
MCwgdmVjMyAgcDEpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkaXN0YW5jZSh2
ZWM0ICBwMCwgdmVjNCAgcDEpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRv
dChmbG9hdCB4LCBmbG9hdCB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgZG90
KHZlYzIgIHgsIHZlYzIgIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkb3Qo
dmVjMyAgeCwgdmVjMyAgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGRvdCh2
ZWM0ICB4LCB2ZWM0ICB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMzIGNyb3Nz
KHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbm9ybWFs
aXplKGZsb2F0IHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBub3JtYWxpemUo
dmVjMiAgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIG5vcm1hbGl6ZSh2ZWMz
ICB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAgbm9ybWFsaXplKHZlYzQgIHgp
OyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0IGZhY2Vmb3J3YXJkKGZsb2F0IE4s
IGZsb2F0IEksIGZsb2F0IE5yZWYpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICBm
YWNlZm9yd2FyZCh2ZWMyICBOLCB2ZWMyICBJLCB2ZWMyICBOcmVmKTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjMyAgZmFjZWZvcndhcmQodmVjMyAgTiwgdmVjMyAgSSwgdmVjMyAgTnJl
Zik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgIGZhY2Vmb3J3YXJkKHZlYzQgIE4s
IHZlYzQgIEksIHZlYzQgIE5yZWYpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImZsb2F0
IHJlZmxlY3QoZmxvYXQgSSwgZmxvYXQgTik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZl
YzIgIHJlZmxlY3QodmVjMiAgSSwgdmVjMiAgTik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmco
InZlYzMgIHJlZmxlY3QodmVjMyAgSSwgdmVjMyAgTik7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzQgIHJlZmxlY3QodmVjNCAgSSwgdmVjNCAgTik7IikpOwotCi0gICAgcy5hcHBlbmQo
VFN0cmluZygiZmxvYXQgcmVmcmFjdChmbG9hdCBJLCBmbG9hdCBOLCBmbG9hdCBldGEpOyIpKTsK
LSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWMyICByZWZyYWN0KHZlYzIgIEksIHZlYzIgIE4sIGZs
b2F0IGV0YSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIHJlZnJhY3QodmVjMyAg
SSwgdmVjMyAgTiwgZmxvYXQgZXRhKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCAg
cmVmcmFjdCh2ZWM0ICBJLCB2ZWM0ICBOLCBmbG9hdCBldGEpOyIpKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImxlbmd0aCIsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJsZW5ndGgiLCBmbG9hdDIpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAibGVuZ3RoIiwgZmxvYXQzKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImxlbmd0aCIsIGZsb2F0NCk7CisKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImRpc3RhbmNlIiwgZmxvYXQxLCBmbG9hdDEp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAiZGlzdGFuY2UiLCBmbG9h
dDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJkaXN0
YW5jZSIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MSwgImRpc3RhbmNlIiwgZmxvYXQ0LCBmbG9hdDQpOworCisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihmbG9hdDEsICJkb3QiLCBmbG9hdDEsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJkb3QiLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJkb3QiLCBmbG9hdDMsIGZsb2F0Myk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDEsICJkb3QiLCBmbG9hdDQsIGZsb2F0
NCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImNyb3NzIiwgZmxv
YXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAibm9y
bWFsaXplIiwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0Miwg
Im5vcm1hbGl6ZSIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDMsICJub3JtYWxpemUiLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
ZmxvYXQ0LCAibm9ybWFsaXplIiwgZmxvYXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQxLCAiZmFjZWZvcndhcmQiLCBmbG9hdDEsIGZsb2F0MSwgZmxvYXQxKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImZhY2Vmb3J3YXJkIiwgZmxvYXQy
LCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDMs
ICJmYWNlZm9yd2FyZCIsIGZsb2F0MywgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAiZmFjZWZvcndhcmQiLCBmbG9hdDQsIGZsb2F0NCwgZmxv
YXQ0KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAicmVmbGVjdCIs
IGZsb2F0MSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0Miwg
InJlZmxlY3QiLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihmbG9hdDMsICJyZWZsZWN0IiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQ0LCAicmVmbGVjdCIsIGZsb2F0NCwgZmxvYXQ0KTsKKworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQxLCAicmVmcmFjdCIsIGZsb2F0MSwgZmxvYXQx
LCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQyLCAicmVmcmFj
dCIsIGZsb2F0MiwgZmxvYXQyLCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQzLCAicmVmcmFjdCIsIGZsb2F0MywgZmxvYXQzLCBmbG9hdDEpOworICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAicmVmcmFjdCIsIGZsb2F0NCwgZmxvYXQ0LCBm
bG9hdDEpOworCisgICAgVFR5cGUgKm1hdDIgPSBuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVm
aW5lZCwgRXZxR2xvYmFsLCAyLCB0cnVlKTsKKyAgICBUVHlwZSAqbWF0MyA9IG5ldyBUVHlwZShF
YnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIDMsIHRydWUpOworICAgIFRUeXBlICpt
YXQ0ID0gbmV3IFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCwgdHJ1
ZSk7CiAKICAgICAvLwogICAgIC8vIE1hdHJpeCBGdW5jdGlvbnMuCiAgICAgLy8KLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJtYXQyIG1hdHJpeENvbXBNdWx0KG1hdDIgeCwgbWF0MiB5KTsiKSk7Ci0g
ICAgcy5hcHBlbmQoVFN0cmluZygibWF0MyBtYXRyaXhDb21wTXVsdChtYXQzIHgsIG1hdDMgeSk7
IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoIm1hdDQgbWF0cml4Q29tcE11bHQobWF0NCB4LCBt
YXQ0IHkpOyIpKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKG1hdDIsICJtYXRyaXhD
b21wTXVsdCIsIG1hdDIsIG1hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4obWF0
MywgIm1hdHJpeENvbXBNdWx0IiwgbWF0MywgbWF0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihtYXQ0LCAibWF0cml4Q29tcE11bHQiLCBtYXQ0LCBtYXQ0KTsKKworICAgIFRUeXBl
ICpib29sMSA9IG5ldyBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgMSk7
CisgICAgVFR5cGUgKmJvb2wyID0gbmV3IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsLCAyKTsKKyAgICBUVHlwZSAqYm9vbDMgPSBuZXcgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5k
ZWZpbmVkLCBFdnFHbG9iYWwsIDMpOworICAgIFRUeXBlICpib29sNCA9IG5ldyBUVHlwZShFYnRC
b29sLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgNCk7CiAKICAgICAvLwogICAgIC8vIFZlY3Rv
ciByZWxhdGlvbmFsIGZ1bmN0aW9ucy4KICAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWMyIGxlc3NUaGFuKHZlYzIgeCwgdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygi
YnZlYzMgbGVzc1RoYW4odmVjMyB4LCB2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5n
KCJidmVjNCBsZXNzVGhhbih2ZWM0IHgsIHZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0
cmluZygiYnZlYzIgbGVzc1RoYW4oaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWMzIGxlc3NUaGFuKGl2ZWMzIHgsIGl2ZWMzIHkpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJidmVjNCBsZXNzVGhhbihpdmVjNCB4LCBpdmVjNCB5KTsiKSk7Ci0KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBsZXNzVGhhbkVxdWFsKHZlYzIgeCwgdmVjMiB5KTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgbGVzc1RoYW5FcXVhbCh2ZWMzIHgsIHZl
YzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGxlc3NUaGFuRXF1YWwodmVj
NCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIGxlc3NUaGFu
RXF1YWwoaXZlYzIgeCwgaXZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMz
IGxlc3NUaGFuRXF1YWwoaXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoImJ2ZWM0IGxlc3NUaGFuRXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5h
cHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW4odmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbih2ZWMzIHgsIHZlYzMgeSk7Iikp
OwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0ZXJUaGFuKHZlYzQgeCwgdmVjNCB5
KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBncmVhdGVyVGhhbihpdmVjMiB4
LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZ3JlYXRlclRoYW4o
aXZlYzMgeCwgaXZlYzMgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IGdyZWF0
ZXJUaGFuKGl2ZWM0IHgsIGl2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2
ZWMyIGdyZWF0ZXJUaGFuRXF1YWwodmVjMiB4LCB2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVuZChU
U3RyaW5nKCJidmVjMyBncmVhdGVyVGhhbkVxdWFsKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAg
cy5hcHBlbmQoVFN0cmluZygiYnZlYzQgZ3JlYXRlclRoYW5FcXVhbCh2ZWM0IHgsIHZlYzQgeSk7
IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgZ3JlYXRlclRoYW5FcXVhbChpdmVj
MiB4LCBpdmVjMiB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzMgZ3JlYXRlclRo
YW5FcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZl
YzQgZ3JlYXRlclRoYW5FcXVhbChpdmVjNCB4LCBpdmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJidmVjMiBlcXVhbCh2ZWMyIHgsIHZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWMzIGVxdWFsKHZlYzMgeCwgdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQo
VFN0cmluZygiYnZlYzQgZXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIpKTsKLQotICAgIHMuYXBwZW5k
KFRTdHJpbmcoImJ2ZWMyIGVxdWFsKGl2ZWMyIHgsIGl2ZWMyIHkpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJidmVjMyBlcXVhbChpdmVjMyB4LCBpdmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygiYnZlYzQgZXF1YWwoaXZlYzQgeCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5h
cHBlbmQoVFN0cmluZygiYnZlYzIgZXF1YWwoYnZlYzIgeCwgYnZlYzIgeSk7IikpOwotICAgIHMu
YXBwZW5kKFRTdHJpbmcoImJ2ZWMzIGVxdWFsKGJ2ZWMzIHgsIGJ2ZWMzIHkpOyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJidmVjNCBlcXVhbChidmVjNCB4LCBidmVjNCB5KTsiKSk7Ci0KLSAg
ICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMiBub3RFcXVhbCh2ZWMyIHgsIHZlYzIgeSk7IikpOwot
ICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5vdEVxdWFsKHZlYzMgeCwgdmVjMyB5KTsiKSk7
Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1YWwodmVjNCB4LCB2ZWM0IHkpOyIp
KTsKLQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMyIG5vdEVxdWFsKGl2ZWMyIHgsIGl2ZWMy
IHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBub3RFcXVhbChpdmVjMyB4LCBp
dmVjMyB5KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzQgbm90RXF1YWwoaXZlYzQg
eCwgaXZlYzQgeSk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIgbm90RXF1YWwo
YnZlYzIgeCwgYnZlYzIgeSk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWMzIG5vdEVx
dWFsKGJ2ZWMzIHgsIGJ2ZWMzIHkpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjNCBu
b3RFcXVhbChidmVjNCB4LCBidmVjNCB5KTsiKSk7Ci0KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJi
b29sIGFueShidmVjMiB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygiYm9vbCBhbnkoYnZl
YzMgeCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYW55KGJ2ZWM0IHgpOyIpKTsK
LQotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJvb2wgYWxsKGJ2ZWMyIHgpOyIpKTsKLSAgICBzLmFw
cGVuZChUU3RyaW5nKCJib29sIGFsbChidmVjMyB4KTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygiYm9vbCBhbGwoYnZlYzQgeCk7IikpOwotCi0gICAgcy5hcHBlbmQoVFN0cmluZygiYnZlYzIg
bm90KGJ2ZWMyIHgpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJidmVjMyBub3QoYnZlYzMg
eCk7IikpOwotICAgIHMuYXBwZW5kKFRTdHJpbmcoImJ2ZWM0IG5vdChidmVjNCB4KTsiKSk7Ci0K
LSAgICAvLwotICAgIC8vIFRleHR1cmUgRnVuY3Rpb25zLgotICAgIC8vCi0gICAgcy5hcHBlbmQo
VFN0cmluZygidmVjNCB0ZXh0dXJlMkQoc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzIgY29vcmQpOyIp
KTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlcjJEIHNh
bXBsZXIsIHZlYzMgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1
cmUyRFByb2ooc2FtcGxlcjJEIHNhbXBsZXIsIHZlYzQgY29vcmQpOyIpKTsKLSAgICBzLmFwcGVu
ZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmVDdWJlKHNhbXBsZXJDdWJlIHNhbXBsZXIsIHZlYzMgY29v
cmQpOyIpKTsKLQotICAgIGlmIChyZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbCkgewot
ICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRChzYW1wbGVyRXh0ZXJuYWxP
RVMgc2FtcGxlciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWM0IHRleHR1cmUyRFByb2ooc2FtcGxlckV4dGVybmFsT0VTIHNhbXBsZXIsIHZlYzMgY29vcmQp
OyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBs
ZXJFeHRlcm5hbE9FUyBzYW1wbGVyLCB2ZWM0IGNvb3JkKTsiKSk7Ci0gICAgfQorICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJsZXNzVGhhbiIsIGZsb2F0MiwgZmxvYXQyKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wzLCAibGVzc1RoYW4iLCBmbG9hdDMs
IGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwgImxlc3NUaGFu
IiwgZmxvYXQ0LCBmbG9hdDQpOwogCi0gICAgaWYgKHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0
YW5nbGUpIHsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRSZWN0KHNh
bXBsZXIyRFJlY3Qgc2FtcGxlciwgdmVjMiBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFJlY3RQcm9qKHNhbXBsZXIyRFJlY3Qgc2FtcGxlciwgdmVj
MyBjb29yZCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFJl
Y3RQcm9qKHNhbXBsZXIyRFJlY3Qgc2FtcGxlciwgdmVjNCBjb29yZCk7IikpOwotICAgIH0KKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAibGVzc1RoYW4iLCBpbnQyLCBpbnQy
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wzLCAibGVzc1RoYW4iLCBpbnQz
LCBpbnQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAibGVzc1RoYW4i
LCBpbnQ0LCBpbnQ0KTsKIAotICAgIC8vCi0gICAgLy8gTm9pc2UgZnVuY3Rpb25zLgotICAgIC8v
Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBub2lzZTEoZmxvYXQgeCk7IikpOwotICAg
IC8vcy5hcHBlbmQoVFN0cmluZygiZmxvYXQgbm9pc2UxKHZlYzIgIHgpOyIpKTsKLSAgICAvL3Mu
YXBwZW5kKFRTdHJpbmcoImZsb2F0IG5vaXNlMSh2ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVu
ZChUU3RyaW5nKCJmbG9hdCBub2lzZTEodmVjNCAgeCk7IikpOwotCi0gICAgLy9zLmFwcGVuZChU
U3RyaW5nKCJ2ZWMyIG5vaXNlMihmbG9hdCB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5n
KCJ2ZWMyIG5vaXNlMih2ZWMyICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMy
IG5vaXNlMih2ZWMzICB4KTsiKSk7Ci0gICAgLy9zLmFwcGVuZChUU3RyaW5nKCJ2ZWMyIG5vaXNl
Mih2ZWM0ICB4KTsiKSk7Ci0KLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKGZs
b2F0IHgpOyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKHZlYzIgIHgp
OyIpKTsKLSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKHZlYzMgIHgpOyIpKTsK
LSAgICAvL3MuYXBwZW5kKFRTdHJpbmcoInZlYzMgbm9pc2UzKHZlYzQgIHgpOyIpKTsKLQotICAg
IC8vcy5hcHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQoZmxvYXQgeCk7IikpOwotICAgIC8vcy5h
cHBlbmQoVFN0cmluZygidmVjNCBub2lzZTQodmVjMiAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQo
VFN0cmluZygidmVjNCBub2lzZTQodmVjMyAgeCk7IikpOwotICAgIC8vcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCBub2lzZTQodmVjNCAgeCk7IikpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oYm9vbDIsICJsZXNzVGhhbkVxdWFsIiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oYm9vbDMsICJsZXNzVGhhbkVxdWFsIiwgZmxvYXQzLCBmbG9hdDMp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDQsICJsZXNzVGhhbkVxdWFsIiwg
ZmxvYXQ0LCBmbG9hdDQpOwogCi0gICAgcmV0dXJuIHM7Ci19CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihib29sMiwgImxlc3NUaGFuRXF1YWwiLCBpbnQyLCBpbnQyKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wzLCAibGVzc1RoYW5FcXVhbCIsIGludDMsIGludDMp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDQsICJsZXNzVGhhbkVxdWFsIiwg
aW50NCwgaW50NCk7CiAKLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFByb3RvdHlwZXMg
Zm9yIGJ1aWx0LWluIGZ1bmN0aW9ucyBzZWVuIGJ5IHZlcnRleCBzaGFkZXJzIG9ubHkuCi0vLwot
Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBCdWlsdEluRnVuY3Rpb25zVmVy
dGV4KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQotewotICAgIFRTdHJpbmcg
czsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAiZ3JlYXRlclRoYW4iLCBm
bG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgImdy
ZWF0ZXJUaGFuIiwgZmxvYXQzLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oYm9vbDQsICJncmVhdGVyVGhhbiIsIGZsb2F0NCwgZmxvYXQ0KTsKIAotICAgIC8vCi0gICAg
Ly8gR2VvbWV0cmljIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIC8vcy5hcHBlbmQoVFN0cmluZygi
dmVjNCBmdHJhbnNmb3JtKCk7IikpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9v
bDIsICJncmVhdGVyVGhhbiIsIGludDIsIGludDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oYm9vbDMsICJncmVhdGVyVGhhbiIsIGludDMsIGludDMpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oYm9vbDQsICJncmVhdGVyVGhhbiIsIGludDQsIGludDQpOwogCi0gICAg
Ly8KLSAgICAvLyBUZXh0dXJlIEZ1bmN0aW9ucy4KLSAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJp
bmcoInZlYzQgdGV4dHVyZTJETG9kKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMyIGNvb3JkLCBmbG9h
dCBsb2QpOyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0IHRleHR1cmUyRFByb2pMb2Qo
c2FtcGxlcjJEIHNhbXBsZXIsIHZlYzMgY29vcmQsIGZsb2F0IGxvZCk7IikpOwotICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgc2FtcGxlciwgdmVj
NCBjb29yZCwgZmxvYXQgbG9kKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0
dXJlQ3ViZUxvZChzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9hdCBsb2QpOyIp
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wyLCAiZ3JlYXRlclRoYW5FcXVh
bCIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wz
LCAiZ3JlYXRlclRoYW5FcXVhbCIsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGJvb2w0LCAiZ3JlYXRlclRoYW5FcXVhbCIsIGZsb2F0NCwgZmxvYXQ0KTsK
IAotICAgIHJldHVybiBzOwotfQorICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIs
ICJncmVhdGVyVGhhbkVxdWFsIiwgaW50MiwgaW50Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihib29sMywgImdyZWF0ZXJUaGFuRXF1YWwiLCBpbnQzLCBpbnQzKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAiZ3JlYXRlclRoYW5FcXVhbCIsIGludDQsIGlu
dDQpOwogCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBQcm90b3R5cGVzIGZvciBidWls
dC1pbiBmdW5jdGlvbnMgc2VlbiBieSBmcmFnbWVudCBzaGFkZXJzIG9ubHkuCi0vLwotLy89PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBCdWlsdEluRnVuY3Rpb25zRnJhZ21lbnQo
Y29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCi17Ci0gICAgVFN0cmluZyBzOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJlcXVhbCIsIGZsb2F0MiwgZmxv
YXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wzLCAiZXF1YWwiLCBmbG9h
dDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sNCwgImVxdWFs
IiwgZmxvYXQ0LCBmbG9hdDQpOwogCi0gICAgLy8KLSAgICAvLyBUZXh0dXJlIEZ1bmN0aW9ucy4K
LSAgICAvLwotICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzQgdGV4dHVyZTJEKHNhbXBsZXIyRCBz
YW1wbGVyLCB2ZWMyIGNvb3JkLCBmbG9hdCBiaWFzKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmlu
ZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNhbXBsZXIyRCBzYW1wbGVyLCB2ZWMzIGNvb3JkLCBmbG9h
dCBiaWFzKTsiKSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidmVjNCB0ZXh0dXJlMkRQcm9qKHNh
bXBsZXIyRCBzYW1wbGVyLCB2ZWM0IGNvb3JkLCBmbG9hdCBiaWFzKTsiKSk7Ci0gICAgcy5hcHBl
bmQoVFN0cmluZygidmVjNCB0ZXh0dXJlQ3ViZShzYW1wbGVyQ3ViZSBzYW1wbGVyLCB2ZWMzIGNv
b3JkLCBmbG9hdCBiaWFzKTsiKSk7Ci0KLSAgICBpZiAocmVzb3VyY2VzLk9FU19zdGFuZGFyZF9k
ZXJpdmF0aXZlcykgewotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkRmR4KGZsb2F0
IHApOyIpKTsKLSAgICAgICAgcy5hcHBlbmQoVFN0cmluZygidmVjMiAgZEZkeCh2ZWMyICBwKTsi
KSk7Ci0gICAgICAgIHMuYXBwZW5kKFRTdHJpbmcoInZlYzMgIGRGZHgodmVjMyAgcCk7IikpOwot
ICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0ICBkRmR4KHZlYzQgIHApOyIpKTsKLQotICAg
ICAgICBzLmFwcGVuZChUU3RyaW5nKCJmbG9hdCBkRmR5KGZsb2F0IHApOyIpKTsKLSAgICAgICAg
cy5hcHBlbmQoVFN0cmluZygidmVjMiAgZEZkeSh2ZWMyICBwKTsiKSk7Ci0gICAgICAgIHMuYXBw
ZW5kKFRTdHJpbmcoInZlYzMgIGRGZHkodmVjMyAgcCk7IikpOwotICAgICAgICBzLmFwcGVuZChU
U3RyaW5nKCJ2ZWM0ICBkRmR5KHZlYzQgIHApOyIpKTsKLQotICAgICAgICBzLmFwcGVuZChUU3Ry
aW5nKCJmbG9hdCBmd2lkdGgoZmxvYXQgcCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5n
KCJ2ZWMyICBmd2lkdGgodmVjMiAgcCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2
ZWMzICBmd2lkdGgodmVjMyAgcCk7IikpOwotICAgICAgICBzLmFwcGVuZChUU3RyaW5nKCJ2ZWM0
ICBmd2lkdGgodmVjNCAgcCk7IikpOwotICAgIH0KKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGJvb2wyLCAiZXF1YWwiLCBpbnQyLCBpbnQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGJvb2wzLCAiZXF1YWwiLCBpbnQzLCBpbnQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGJvb2w0LCAiZXF1YWwiLCBpbnQ0LCBpbnQ0KTsKIAotICAgIHJldHVybiBzOwot
fQorICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJlcXVhbCIsIGJvb2wyLCBi
b29sMik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgImVxdWFsIiwgYm9v
bDMsIGJvb2wzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAiZXF1YWwi
LCBib29sNCwgYm9vbDQpOwogCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBTdGFuZGFy
ZCB1bmlmb3Jtcy4KLS8vCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLXN0YXRpYyBUU3RyaW5nIFN0
YW5kYXJkVW5pZm9ybXMoKQotewotICAgIFRTdHJpbmcgczsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGJvb2wyLCAibm90RXF1YWwiLCBmbG9hdDIsIGZsb2F0Mik7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgIm5vdEVxdWFsIiwgZmxvYXQzLCBmbG9hdDMpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDQsICJub3RFcXVhbCIsIGZsb2F0NCwg
ZmxvYXQ0KTsKIAotICAgIC8vCi0gICAgLy8gRGVwdGggcmFuZ2UgaW4gd2luZG93IGNvb3JkaW5h
dGVzCi0gICAgLy8KLSAgICBzLmFwcGVuZChUU3RyaW5nKCJzdHJ1Y3QgZ2xfRGVwdGhSYW5nZVBh
cmFtZXRlcnMgeyIpKTsKLSAgICBzLmFwcGVuZChUU3RyaW5nKCIgICAgaGlnaHAgZmxvYXQgbmVh
cjsiKSk7ICAgICAgICAvLyBuCi0gICAgcy5hcHBlbmQoVFN0cmluZygiICAgIGhpZ2hwIGZsb2F0
IGZhcjsiKSk7ICAgICAgICAgLy8gZgotICAgIHMuYXBwZW5kKFRTdHJpbmcoIiAgICBoaWdocCBm
bG9hdCBkaWZmOyIpKTsgICAgICAgIC8vIGYgLSBuCi0gICAgcy5hcHBlbmQoVFN0cmluZygifTsi
KSk7Ci0gICAgcy5hcHBlbmQoVFN0cmluZygidW5pZm9ybSBnbF9EZXB0aFJhbmdlUGFyYW1ldGVy
cyBnbF9EZXB0aFJhbmdlOyIpKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wy
LCAibm90RXF1YWwiLCBpbnQyLCBpbnQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KGJvb2wzLCAibm90RXF1YWwiLCBpbnQzLCBpbnQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKGJvb2w0LCAibm90RXF1YWwiLCBpbnQ0LCBpbnQ0KTsKIAotICAgIHJldHVybiBzOwot
fQorICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDIsICJub3RFcXVhbCIsIGJvb2wy
LCBib29sMik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMywgIm5vdEVxdWFs
IiwgYm9vbDMsIGJvb2wzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2w0LCAi
bm90RXF1YWwiLCBib29sNCwgYm9vbDQpOwogCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0v
LyBEZWZhdWx0IHByZWNpc2lvbiBmb3IgdmVydGV4IHNoYWRlcnMuCi0vLwotLy89PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci1zdGF0aWMgVFN0cmluZyBEZWZhdWx0UHJlY2lzaW9uVmVydGV4KCkKLXsKLSAg
ICBUU3RyaW5nIHM7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihib29sMSwgImFueSIs
IGJvb2wyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGJvb2wxLCAiYW55IiwgYm9v
bDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oYm9vbDEsICJhbnkiLCBib29sNCk7
CiAKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJwcmVjaXNpb24gaGlnaHAgaW50OyIpKTsKLSAgICBz
LmFwcGVuZChUU3RyaW5nKCJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7IikpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oYm9vbDEsICJhbGwiLCBib29sMik7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihib29sMSwgImFsbCIsIGJvb2wzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGJvb2wxLCAiYWxsIiwgYm9vbDQpOwogCi0gICAgcmV0dXJuIHM7Ci19Ci0KLS8v
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmcmFnbWVu
dCBzaGFkZXJzLgotLy8KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotc3RhdGljIFRTdHJpbmcgRGVm
YXVsdFByZWNpc2lvbkZyYWdtZW50KCkKLXsKLSAgICBUU3RyaW5nIHM7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihib29sMiwgIm5vdCIsIGJvb2wyKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGJvb2wzLCAibm90IiwgYm9vbDMpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oYm9vbDQsICJub3QiLCBib29sNCk7CiAKLSAgICBzLmFwcGVuZChUU3RyaW5nKCJw
cmVjaXNpb24gbWVkaXVtcCBpbnQ7IikpOwotICAgIC8vIE5vIGRlZmF1bHQgcHJlY2lzaW9uIGZv
ciBmbG9hdCBpbiBmcmFnbWVudCBzaGFkZXJzCisgICAgVFR5cGUgKnNhbXBsZXIyRCA9IG5ldyBU
VHlwZShFYnRTYW1wbGVyMkQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLCAxKTsKKyAgICBUVHlw
ZSAqc2FtcGxlckN1YmUgPSBuZXcgVFR5cGUoRWJ0U2FtcGxlckN1YmUsIEVicFVuZGVmaW5lZCwg
RXZxR2xvYmFsLCAxKTsKIAotICAgIHJldHVybiBzOwotfQorICAgIC8vCisgICAgLy8gVGV4dHVy
ZSBGdW5jdGlvbnMgZm9yIEdMU0wgRVMgMS4wCisgICAgLy8KKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRCIsIHNhbXBsZXIyRCwgZmxvYXQyKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRFByb2oiLCBzYW1wbGVy
MkQsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDQsICJ0ZXh0
dXJlMkRQcm9qIiwgc2FtcGxlcjJELCBmbG9hdDQpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oZmxvYXQ0LCAidGV4dHVyZUN1YmUiLCBzYW1wbGVyQ3ViZSwgZmxvYXQzKTsKIAotLy89
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0vLwotLy8gSW1wbGVtZW50YXRpb24gZGVwZW5kZW50IGJ1aWx0
LWluIGNvbnN0YW50cy4KLS8vCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLXN0YXRpYyBUU3RyaW5n
IEJ1aWx0SW5Db25zdGFudHMoU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0IFNoQnVpbHRJblJlc291
cmNlcyAmcmVzb3VyY2VzKQotewotICAgIFRTdHJpbmdTdHJlYW0gczsKKyAgICBpZiAocmVzb3Vy
Y2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwpCisgICAgeworICAgICAgICBUVHlwZSAqc2FtcGxl
ckV4dGVybmFsT0VTID0gbmV3IFRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUywgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsIDEpOwogCi0gICAgcyA8PCAiY29uc3QgaW50IGdsX01heFZlcnRleEF0
dHJpYnMgPSAiIDw8IHJlc291cmNlcy5NYXhWZXJ0ZXhBdHRyaWJzIDw8ICI7IjsKLSAgICBzIDw8
ICJjb25zdCBpbnQgZ2xfTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgPSAiIDw8IHJlc291cmNlcy5N
YXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA8PCAiOyI7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZTJEIiwgc2FtcGxlckV4dGVybmFsT0VTLCBmbG9hdDIp
OworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRFBy
b2oiLCBzYW1wbGVyRXh0ZXJuYWxPRVMsIGZsb2F0Myk7CisgICAgICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZTJEUHJvaiIsIHNhbXBsZXJFeHRlcm5hbE9FUywg
ZmxvYXQ0KTsKKyAgICB9CiAKLSAgICBzIDw8ICJjb25zdCBpbnQgZ2xfTWF4VmFyeWluZ1ZlY3Rv
cnMgPSAiIDw8IHJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyA8PCAiOyI7Ci0gICAgcyA8PCAi
Y29uc3QgaW50IGdsX01heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzID0gIiA8PCByZXNvdXJjZXMu
TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMgPDwgIjsiOwotICAgIHMgPDwgImNvbnN0IGludCBn
bF9NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0gIiA8PCByZXNvdXJjZXMuTWF4Q29tYmlu
ZWRUZXh0dXJlSW1hZ2VVbml0cyA8PCAiOyI7Ci0gICAgcyA8PCAiY29uc3QgaW50IGdsX01heFRl
eHR1cmVJbWFnZVVuaXRzID0gIiA8PCByZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMgPDwg
IjsiOwotICAgIHMgPDwgImNvbnN0IGludCBnbF9NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0g
IiA8PCByZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyA8PCAiOyI7CisgICAgaWYg
KHJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUpCisgICAgeworICAgICAgICBUVHlwZSAq
c2FtcGxlcjJEUmVjdCA9IG5ldyBUVHlwZShFYnRTYW1wbGVyMkRSZWN0LCBFYnBVbmRlZmluZWQs
IEV2cUdsb2JhbCwgMSk7CiAKLSAgICBpZiAoc3BlYyAhPSBTSF9DU1NfU0hBREVSU19TUEVDKQot
ICAgICAgICBzIDw8ICJjb25zdCBpbnQgZ2xfTWF4RHJhd0J1ZmZlcnMgPSAiIDw8IHJlc291cmNl
cy5NYXhEcmF3QnVmZmVycyA8PCAiOyI7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oZmxvYXQ0LCAidGV4dHVyZTJEUmVjdCIsIHNhbXBsZXIyRFJlY3QsIGZsb2F0Mik7CisgICAg
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZTJEUmVjdFByb2oi
LCBzYW1wbGVyMkRSZWN0LCBmbG9hdDMpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKGZsb2F0NCwgInRleHR1cmUyRFJlY3RQcm9qIiwgc2FtcGxlcjJEUmVjdCwgZmxvYXQ0KTsK
KyAgICB9CiAKLSAgICByZXR1cm4gcy5zdHIoKTsKLX0KKyAgICBpZiAodHlwZSA9PSBTSF9GUkFH
TUVOVF9TSEFERVIpCisgICAgeworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0NCwgInRleHR1cmUyRCIsIHNhbXBsZXIyRCwgZmxvYXQyLCBmbG9hdDEpOworICAgICAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRFByb2oiLCBzYW1wbGVy
MkQsIGZsb2F0MywgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihm
bG9hdDQsICJ0ZXh0dXJlMkRQcm9qIiwgc2FtcGxlcjJELCBmbG9hdDQsIGZsb2F0MSk7CisgICAg
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZUN1YmUiLCBzYW1w
bGVyQ3ViZSwgZmxvYXQzLCBmbG9hdDEpOworCisgICAgICAgIGlmIChyZXNvdXJjZXMuT0VTX3N0
YW5kYXJkX2Rlcml2YXRpdmVzKQorICAgICAgICB7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKGZsb2F0MSwgImRGZHgiLCBmbG9hdDEpOworICAgICAgICAgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihmbG9hdDIsICJkRmR4IiwgZmxvYXQyKTsKKyAgICAgICAgICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQzLCAiZEZkeCIsIGZsb2F0Myk7CisgICAg
ICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImRGZHgiLCBmbG9hdDQp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0MSwgImRGZHkiLCBmbG9hdDEpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihmbG9hdDIsICJkRmR5IiwgZmxvYXQyKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQzLCAiZEZkeSIsIGZsb2F0Myk7CisgICAgICAgICAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgImRGZHkiLCBmbG9hdDQpOworCisgICAgICAgICAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MSwgImZ3aWR0aCIsIGZsb2F0MSk7Cisg
ICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MiwgImZ3aWR0aCIsIGZs
b2F0Mik7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0MywgImZ3
aWR0aCIsIGZsb2F0Myk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKGZs
b2F0NCwgImZ3aWR0aCIsIGZsb2F0NCk7CisgICAgICAgIH0KKyAgICB9CiAKLXZvaWQgVEJ1aWx0
SW5zOjppbml0aWFsaXplKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3Vy
Y2VzKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgU0hfRlJBR01FTlRfU0hBREVS
OgotICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soRGVmYXVsdFByZWNpc2lvbkZyYWdt
ZW50KCkpOwotICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soQnVpbHRJbkZ1bmN0aW9u
c0NvbW1vbihyZXNvdXJjZXMpKTsKLSAgICAgICAgYnVpbHRJblN0cmluZ3MucHVzaF9iYWNrKEJ1
aWx0SW5GdW5jdGlvbnNGcmFnbWVudChyZXNvdXJjZXMpKTsKLSAgICAgICAgYnVpbHRJblN0cmlu
Z3MucHVzaF9iYWNrKFN0YW5kYXJkVW5pZm9ybXMoKSk7Ci0gICAgICAgIGJyZWFrOworICAgIGlm
KHR5cGUgPT0gU0hfVkVSVEVYX1NIQURFUikKKyAgICB7CisgICAgICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVyZTJETG9kIiwgc2FtcGxlcjJELCBmbG9hdDIsIGZs
b2F0MSk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oZmxvYXQ0LCAidGV4dHVy
ZTJEUHJvakxvZCIsIHNhbXBsZXIyRCwgZmxvYXQzLCBmbG9hdDEpOworICAgICAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKGZsb2F0NCwgInRleHR1cmUyRFByb2pMb2QiLCBzYW1wbGVyMkQs
IGZsb2F0NCwgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihmbG9h
dDQsICJ0ZXh0dXJlQ3ViZUxvZCIsIHNhbXBsZXJDdWJlLCBmbG9hdDMsIGZsb2F0MSk7CisgICAg
fQogCi0gICAgY2FzZSBTSF9WRVJURVhfU0hBREVSOgotICAgICAgICBidWlsdEluU3RyaW5ncy5w
dXNoX2JhY2soRGVmYXVsdFByZWNpc2lvblZlcnRleCgpKTsKLSAgICAgICAgYnVpbHRJblN0cmlu
Z3MucHVzaF9iYWNrKEJ1aWx0SW5GdW5jdGlvbnNDb21tb24ocmVzb3VyY2VzKSk7Ci0gICAgICAg
IGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluRnVuY3Rpb25zVmVydGV4KHJlc291cmNl
cykpOwotICAgICAgICBidWlsdEluU3RyaW5ncy5wdXNoX2JhY2soU3RhbmRhcmRVbmlmb3Jtcygp
KTsKLSAgICAgICAgYnJlYWs7CisgICAgLy8KKyAgICAvLyBEZXB0aCByYW5nZSBpbiB3aW5kb3cg
Y29vcmRpbmF0ZXMKKyAgICAvLworICAgIFRGaWVsZExpc3QgKmZpZWxkcyA9IE5ld1Bvb2xURmll
bGRMaXN0KCk7CisgICAgVEZpZWxkICpuZWFyID0gbmV3IFRGaWVsZChuZXcgVFR5cGUoRWJ0Rmxv
YXQsIEVicEhpZ2gsIEV2cUdsb2JhbCwgMSksIE5ld1Bvb2xUU3RyaW5nKCJuZWFyIikpOworICAg
IFRGaWVsZCAqZmFyID0gbmV3IFRGaWVsZChuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2
cUdsb2JhbCwgMSksIE5ld1Bvb2xUU3RyaW5nKCJmYXIiKSk7CisgICAgVEZpZWxkICpkaWZmID0g
bmV3IFRGaWVsZChuZXcgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUdsb2JhbCwgMSksIE5l
d1Bvb2xUU3RyaW5nKCJkaWZmIikpOworICAgIGZpZWxkcy0+cHVzaF9iYWNrKG5lYXIpOworICAg
IGZpZWxkcy0+cHVzaF9iYWNrKGZhcik7CisgICAgZmllbGRzLT5wdXNoX2JhY2soZGlmZik7Cisg
ICAgVFN0cnVjdHVyZSAqZGVwdGhSYW5nZVN0cnVjdCA9IG5ldyBUU3RydWN0dXJlKE5ld1Bvb2xU
U3RyaW5nKCJnbF9EZXB0aFJhbmdlUGFyYW1ldGVycyIpLCBmaWVsZHMpOworICAgIFRWYXJpYWJs
ZSAqZGVwdGhSYW5nZVBhcmFtZXRlcnMgPSBuZXcgVFZhcmlhYmxlKCZkZXB0aFJhbmdlU3RydWN0
LT5uYW1lKCksIGRlcHRoUmFuZ2VTdHJ1Y3QsIHRydWUpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dCgqZGVwdGhSYW5nZVBhcmFtZXRlcnMpOworICAgIFRWYXJpYWJsZSAqZGVwdGhSYW5nZSA9IG5l
dyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0RlcHRoUmFuZ2UiKSwgVFR5cGUoZGVwdGhS
YW5nZVN0cnVjdCkpOworICAgIGRlcHRoUmFuZ2UtPnNldFF1YWxpZmllcihFdnFVbmlmb3JtKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnQoKmRlcHRoUmFuZ2UpOworCisgICAgLy8KKyAgICAvLyBJ
bXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQgYnVpbHQtaW4gY29uc3RhbnRzLgorICAgIC8vCisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoImdsX01heFZlcnRleEF0dHJpYnMiLCByZXNvdXJj
ZXMuTWF4VmVydGV4QXR0cmlicyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoImds
X01heFZlcnRleFVuaWZvcm1WZWN0b3JzIiwgcmVzb3VyY2VzLk1heFZlcnRleFVuaWZvcm1WZWN0
b3JzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludCgiZ2xfTWF4VmFyeWluZ1ZlY3Rv
cnMiLCByZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dENvbnN0SW50KCJnbF9NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyIsIHJlc291cmNlcy5NYXhW
ZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQo
ImdsX01heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMiLCByZXNvdXJjZXMuTWF4Q29tYmluZWRU
ZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoImdsX01h
eFRleHR1cmVJbWFnZVVuaXRzIiwgcmVzb3VyY2VzLk1heFRleHR1cmVJbWFnZVVuaXRzKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdEludCgiZ2xfTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9y
cyIsIHJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKTsKIAotICAgIGRlZmF1bHQ6
IGFzc2VydChmYWxzZSAmJiAiTGFuZ3VhZ2Ugbm90IHN1cHBvcnRlZCIpOworICAgIGlmIChzcGVj
ICE9IFNIX0NTU19TSEFERVJTX1NQRUMpCisgICAgeworICAgICAgICBzeW1ib2xUYWJsZS5pbnNl
cnRDb25zdEludCgiZ2xfTWF4RHJhd0J1ZmZlcnMiLCByZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMp
OwogICAgIH0KLQotICAgIGJ1aWx0SW5TdHJpbmdzLnB1c2hfYmFjayhCdWlsdEluQ29uc3RhbnRz
KHNwZWMsIHJlc291cmNlcykpOwogfQogCiB2b2lkIElkZW50aWZ5QnVpbHRJbnMoU2hTaGFkZXJU
eXBlIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLAotICAgICAgICAgICAgICAgICAgICAgIFRT
eW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hC
dWlsdEluUmVzb3VyY2VzICZyZXNvdXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAgVFN5bWJv
bFRhYmxlICZzeW1ib2xUYWJsZSkKIHsKICAgICAvLwogICAgIC8vIEZpcnN0LCBpbnNlcnQgc29t
ZSBzcGVjaWFsIGJ1aWx0LWluIHZhcmlhYmxlcyB0aGF0IGFyZSBub3QgaW4gCkBAIC01MzksNiAr
NDM5LDEwIEBAIHZvaWQgSWRlbnRpZnlCdWlsdElucyhTaFNoYWRlclR5cGUgdHlwZSwKICAgICAg
ICAgaWYgKHNwZWMgIT0gU0hfQ1NTX1NIQURFUlNfU1BFQykgewogICAgICAgICAgICAgc3ltYm9s
VGFibGUuaW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnQ29sb3Ii
KSwgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0Nv
bG9yLCAgIDQpKSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFi
bGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdEYXRhW2dsX01heERyYXdCdWZmZXJzXSIpLCBUVHlw
ZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFGcmFnRGF0YSwgICAgNCkpKTsKKyAgICAgICAgICAg
IGlmIChyZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGgpIHsKKyAgICAgICAgICAgICAgICBzeW1ib2xU
YWJsZS5pbnNlcnQoKm5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdEZXB0aEVY
VCIpLCAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCByZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNp
b25IaWdoID8gRWJwSGlnaCA6IEVicE1lZGl1bSwgRXZxRnJhZ0RlcHRoLCAxKSkpOworICAgICAg
ICAgICAgICAgIHN5bWJvbFRhYmxlLnJlbGF0ZVRvRXh0ZW5zaW9uKCJnbF9GcmFnRGVwdGhFWFQi
LCAiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgqbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0
cmluZygiY3NzX01peENvbG9yIiksICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBF
YnBNZWRpdW0sIEV2cUdsb2JhbCwgICAgICA0KSkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0KCpuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJjc3NfQ29sb3JNYXRyaXgiKSwg
ICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxR2xvYmFsLCAgICAg
IDQsIHRydWUpKSk7CkBAIC01NjAsOCArNDY0LDYgQEAgdm9pZCBJZGVudGlmeUJ1aWx0SW5zKFNo
U2hhZGVyVHlwZSB0eXBlLAogICAgIC8vIGV4cGVjdGVkIHRvIGJlIHJlc29sdmVkIHRocm91Z2gg
YSBsaWJyYXJ5IG9mIGZ1bmN0aW9ucywgdmVyc3VzIGFzCiAgICAgLy8gb3BlcmF0aW9ucy4KICAg
ICAvLwotICAgIHN5bWJvbFRhYmxlLnJlbGF0ZVRvT3BlcmF0b3IoIm5vdCIsICAgICAgICAgICAg
ICBFT3BWZWN0b3JMb2dpY2FsTm90KTsKLQogICAgIHN5bWJvbFRhYmxlLnJlbGF0ZVRvT3BlcmF0
b3IoIm1hdHJpeENvbXBNdWx0IiwgICBFT3BNdWwpOwogCiAgICAgc3ltYm9sVGFibGUucmVsYXRl
VG9PcGVyYXRvcigiZXF1YWwiLCAgICAgICAgICAgIEVPcFZlY3RvckVxdWFsKTsKQEAgLTYxMiw2
ICs1MTQsNyBAQCB2b2lkIElkZW50aWZ5QnVpbHRJbnMoU2hTaGFkZXJUeXBlIHR5cGUsCiAgICAg
CiAgICAgc3ltYm9sVGFibGUucmVsYXRlVG9PcGVyYXRvcigiYW55IiwgICAgICAgICAgRU9wQW55
KTsKICAgICBzeW1ib2xUYWJsZS5yZWxhdGVUb09wZXJhdG9yKCJhbGwiLCAgICAgICAgICBFT3BB
bGwpOworICAgIHN5bWJvbFRhYmxlLnJlbGF0ZVRvT3BlcmF0b3IoIm5vdCIsICAgICAgICAgIEVP
cFZlY3RvckxvZ2ljYWxOb3QpOwogCiAgICAgLy8gTWFwIGxhbmd1YWdlLXNwZWNpZmljIG9wZXJh
dG9ycy4KICAgICBzd2l0Y2godHlwZSkgewpAQCAtNjU2LDQgKzU1OSw2IEBAIHZvaWQgSW5pdEV4
dGVuc2lvbkJlaGF2aW9yKGNvbnN0IFNoQnVpbHQKICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX0FS
Ql90ZXh0dXJlX3JlY3RhbmdsZSJdID0gRUJoVW5kZWZpbmVkOwogICAgIGlmIChyZXNvdXJjZXMu
RVhUX2RyYXdfYnVmZmVycykKICAgICAgICAgZXh0QmVoYXZpb3JbIkdMX0VYVF9kcmF3X2J1ZmZl
cnMiXSA9IEVCaFVuZGVmaW5lZDsKKyAgICBpZiAocmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoKQor
ICAgICAgICBleHRCZWhhdmlvclsiR0xfRVhUX2ZyYWdfZGVwdGgiXSA9IEVCaFVuZGVmaW5lZDsK
IH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXpl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0lu
aXRpYWxpemUuaAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL0luaXRpYWxpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTEsMTkgKzExLDcgQEAK
ICNpbmNsdWRlICJjb21waWxlci9TaEhhbmRsZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJv
bFRhYmxlLmgiCiAKLXR5cGVkZWYgVFZlY3RvcjxUU3RyaW5nPiBUQnVpbHRJblN0cmluZ3M7Ci0K
LWNsYXNzIFRCdWlsdElucyB7Ci1wdWJsaWM6Ci0gICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVU
RShHbG9iYWxQb29sQWxsb2NhdG9yKQotCi0gICAgdm9pZCBpbml0aWFsaXplKFNoU2hhZGVyVHlw
ZSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hC
dWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpOwotICAgIGNvbnN0IFRCdWlsdEluU3RyaW5ncyYg
Z2V0QnVpbHRJblN0cmluZ3MoKSB7IHJldHVybiBidWlsdEluU3RyaW5nczsgfQotCi1wcm90ZWN0
ZWQ6Ci0gICAgVEJ1aWx0SW5TdHJpbmdzIGJ1aWx0SW5TdHJpbmdzOwotfTsKK3ZvaWQgSW5zZXJ0
QnVpbHRJbkZ1bmN0aW9ucyhTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGNv
bnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzLCBUU3ltYm9sVGFibGUgJnRhYmxlKTsK
IAogdm9pZCBJZGVudGlmeUJ1aWx0SW5zKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRlclNwZWMg
c3BlYywKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJl
c291cmNlcywKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRl
cm1lZGlhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9JbnRlcm1lZGlhdGUuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChj
KSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpA
QCAtMTMxLDcgKzEzMSw3IEBAIGNvbnN0IGNoYXIqIGdldE9wZXJhdG9yU3RyaW5nKFRPcGVyYXRv
ciAKIC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8KLVRJbnRlcm1TeW1ib2wqIFRJ
bnRlcm1lZGlhdGU6OmFkZFN5bWJvbChpbnQgaWQsIGNvbnN0IFRTdHJpbmcmIG5hbWUsIGNvbnN0
IFRUeXBlJiB0eXBlLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtU3ltYm9sKiBUSW50ZXJtZWRp
YXRlOjphZGRTeW1ib2woaW50IGlkLCBjb25zdCBUU3RyaW5nJiBuYW1lLCBjb25zdCBUVHlwZSYg
dHlwZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJtU3ltYm9sKiBub2Rl
ID0gbmV3IFRJbnRlcm1TeW1ib2woaWQsIG5hbWUsIHR5cGUpOwogICAgIG5vZGUtPnNldExpbmUo
bGluZSk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgVEludGVybVN5bWJvbCogVEludGVybWVkaWF0ZTo6
YWRkU3ltYm9sKAogLy8KIC8vIFJldHVybnMgdGhlIGFkZGVkIG5vZGUuCiAvLwotVEludGVybVR5
cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybVR5
cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBUU291cmNlTG9jIGxpbmUsIFRTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUpCitUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEJpbmFy
eU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmln
aHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCiB7
CiAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIEVPcEVxdWFsOgpAQCAtMjAwLDggKzIw
MCw2IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQmluYXJ5TWEKICAgICAvLyBv
bmUgYW5kIHByb21vdGUgaXQgdG8gdGhlIHJpZ2h0IHR5cGUuCiAgICAgLy8KICAgICBUSW50ZXJt
QmluYXJ5KiBub2RlID0gbmV3IFRJbnRlcm1CaW5hcnkob3ApOwotICAgIGlmIChsaW5lID09IDAp
Ci0gICAgICAgIGxpbmUgPSByaWdodC0+Z2V0TGluZSgpOwogICAgIG5vZGUtPnNldExpbmUobGlu
ZSk7CiAKICAgICBub2RlLT5zZXRMZWZ0KGxlZnQpOwpAQCAtMjMwLDE1ICsyMjgsMTMgQEAgVElu
dGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRCaW5hcnlNYQogLy8KIC8vIFJldHVybnMgdGhl
IGFkZGVkIG5vZGUuCiAvLwotVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRBc3NpZ24o
VE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIFRT
b3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkQXNzaWduKFRP
cGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0LCBjb25z
dCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIC8vCiAgICAgLy8gTGlrZSBhZGRpbmcgYmluYXJ5
IG1hdGgsIGV4Y2VwdCB0aGUgY29udmVyc2lvbiBjYW4gb25seSBnbwogICAgIC8vIGZyb20gcmln
aHQgdG8gbGVmdC4KICAgICAvLwogICAgIFRJbnRlcm1CaW5hcnkqIG5vZGUgPSBuZXcgVEludGVy
bUJpbmFyeShvcCk7Ci0gICAgaWYgKGxpbmUgPT0gMCkKLSAgICAgICAgbGluZSA9IGxlZnQtPmdl
dExpbmUoKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAgVEludGVybVR5cGVkKiBj
aGlsZCA9IGFkZENvbnZlcnNpb24ob3AsIGxlZnQtPmdldFR5cGUoKSwgcmlnaHQpOwpAQCAtMjYw
LDExICsyNTYsOSBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZEFzc2lnbihUCiAv
LyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgogLy8gVGhlIGNhbGxlciBzaG91bGQgc2V0IHRoZSB0
eXBlIG9mIHRoZSByZXR1cm5lZCBub2RlLgogLy8KLVRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0
ZTo6YWRkSW5kZXgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBl
ZCogaW5kZXgsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6
YWRkSW5kZXgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGJhc2UsIFRJbnRlcm1UeXBlZCog
aW5kZXgsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybUJpbmFyeSogbm9k
ZSA9IG5ldyBUSW50ZXJtQmluYXJ5KG9wKTsKLSAgICBpZiAobGluZSA9PSAwKQotICAgICAgICBs
aW5lID0gaW5kZXgtPmdldExpbmUoKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwogICAgIG5v
ZGUtPnNldExlZnQoYmFzZSk7CiAgICAgbm9kZS0+c2V0UmlnaHQoaW5kZXgpOwpAQCAtMjc5LDEz
ICsyNzMsMTMgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRJbmRleChUTwogLy8K
IC8vIFJldHVybnMgdGhlIGFkZGVkIG5vZGUuCiAvLwotVEludGVybVR5cGVkKiBUSW50ZXJtZWRp
YXRlOjphZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtTm9kZSogY2hpbGROb2RlLCBU
U291cmNlTG9jIGxpbmUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCitUSW50ZXJtVHlwZWQq
IFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1Ob2RlKiBj
aGlsZE5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFi
bGUpCiB7CiAgICAgVEludGVybVVuYXJ5KiBub2RlOwogICAgIFRJbnRlcm1UeXBlZCogY2hpbGQg
PSBjaGlsZE5vZGUtPmdldEFzVHlwZWQoKTsKIAogICAgIGlmIChjaGlsZCA9PSAwKSB7Ci0gICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJhZCB0eXBl
IGluIEFkZFVuYXJ5TWF0aCIsIGxpbmUpOworICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEludGVybmFsRXJyb3IsIGxpbmUsICJCYWQgdHlwZSBpbiBBZGRVbmFyeU1hdGgiKTsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0zNDgsOCArMzQyLDYgQEAgVEludGVybVR5
cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRVbmFyeU1hdAogICAgIC8vIE1ha2UgYSBuZXcgbm9kZSBm
b3IgdGhlIG9wZXJhdG9yLgogICAgIC8vCiAgICAgbm9kZSA9IG5ldyBUSW50ZXJtVW5hcnkob3Ap
OwotICAgIGlmIChsaW5lID09IDApCi0gICAgICAgIGxpbmUgPSBjaGlsZC0+Z2V0TGluZSgpOwog
ICAgIG5vZGUtPnNldExpbmUobGluZSk7CiAgICAgbm9kZS0+c2V0T3BlcmFuZChjaGlsZCk7CiAK
QEAgLTM3Niw3ICszNjgsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZFVuYXJ5
TWF0CiAvLyBSZXR1cm5zIGFuIGFnZ3JlZ2F0ZSBub2RlLCB3aGljaCBjb3VsZCBiZSB0aGUgb25l
IHBhc3NlZCBpbiBpZgogLy8gaXQgd2FzIGFscmVhZHkgYW4gYWdncmVnYXRlIGJ1dCBubyBvcGVy
YXRvciB3YXMgc2V0LgogLy8KLVRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6OnNldEFn
Z3JlZ2F0ZU9wZXJhdG9yKFRJbnRlcm1Ob2RlKiBub2RlLCBUT3BlcmF0b3Igb3AsIFRTb3VyY2VM
b2MgbGluZSkKK1RJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKFRJbnRlcm1Ob2RlKiBub2RlLCBUT3BlcmF0b3Igb3AsIGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUpCiB7CiAgICAgVEludGVybUFnZ3JlZ2F0ZSogYWdnTm9kZTsKIApAQCAtMzkxLDggKzM4
Myw2IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRlcm1lZGlhdGU6OnNldEFnZ3IKICAgICAgICAg
ICAgIC8vCiAgICAgICAgICAgICBhZ2dOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoKTsKICAg
ICAgICAgICAgIGFnZ05vZGUtPmdldFNlcXVlbmNlKCkucHVzaF9iYWNrKG5vZGUpOwotICAgICAg
ICAgICAgaWYgKGxpbmUgPT0gMCkKLSAgICAgICAgICAgICAgICBsaW5lID0gbm9kZS0+Z2V0TGlu
ZSgpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIGFnZ05vZGUgPSBuZXcgVEludGVy
bUFnZ3JlZ2F0ZSgpOwpAQCAtNDAxLDggKzM5MSw3IEBAIFRJbnRlcm1BZ2dyZWdhdGUqIFRJbnRl
cm1lZGlhdGU6OnNldEFnZ3IKICAgICAvLyBTZXQgdGhlIG9wZXJhdG9yLgogICAgIC8vCiAgICAg
YWdnTm9kZS0+c2V0T3Aob3ApOwotICAgIGlmIChsaW5lICE9IDApCi0gICAgICAgIGFnZ05vZGUt
PnNldExpbmUobGluZSk7CisgICAgYWdnTm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAgIHJldHVy
biBhZ2dOb2RlOwogfQpAQCAtNDkxLDcgKzQ4MCw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVk
aWF0ZTo6YWRkQ29udmVyc2kKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6ICAgbmV3
T3AgPSBFT3BDb252SW50VG9GbG9hdDsgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNl
IEVidEJvb2w6ICBuZXdPcCA9IEVPcENvbnZCb29sVG9GbG9hdDsgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJCYWQgcHJvbW90aW9uIG5vZGUiLCBub2Rl
LT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJCYWQgcHJvbW90aW9u
IG5vZGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTUwMCw3ICs0ODksNyBAQCBUSW50ZXJt
VHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNpCiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgRWJ0SW50OiAgIG5ld09wID0gRU9wQ29udkludFRvQm9vbDsgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDogbmV3T3AgPSBFT3BDb252RmxvYXRUb0Jvb2w7IGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmFkIHByb21v
dGlvbiBub2RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgp
LCAiQmFkIHByb21vdGlvbiBub2RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01MDksMTIg
KzQ5OCwxMiBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OmFkZENvbnZlcnNpCiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDogICBuZXdPcCA9IEVPcENvbnZCb29sVG9JbnQ7
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDogIG5ld09wID0gRU9w
Q29udkZsb2F0VG9JbnQ7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5h
bEVycm9yLCAiQmFkIHByb21vdGlvbiBub2RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgbm9kZS0+Z2V0TGluZSgpLCAiQmFkIHByb21vdGlvbiBub2RlIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkJhZCBwcm9tb3Rpb24gdHlwZSIsIG5v
ZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJCYWQgcHJvbW90aW9uIHR5cGUi
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCkBAIC01MzQsNyArNTIz
LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb252ZXJzaQogLy8gUmV0dXJu
cyB0aGUgcmVzdWx0aW5nIGFnZ3JlZ2F0ZSwgdW5sZXNzIDAgd2FzIHBhc3NlZCBpbiBmb3IKIC8v
IGJvdGggZXhpc3Rpbmcgbm9kZXMuCiAvLwotVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0
ZTo6Z3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVmdCwgVEludGVybU5vZGUqIHJpZ2h0LCBU
U291cmNlTG9jIGxpbmUpCitUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJtZWRpYXRlOjpncm93QWdn
cmVnYXRlKFRJbnRlcm1Ob2RlKiBsZWZ0LCBUSW50ZXJtTm9kZSogcmlnaHQsIGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUpCiB7CiAgICAgaWYgKGxlZnQgPT0gMCAmJiByaWdodCA9PSAwKQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTU1MSw4ICs1NDAsNyBAQCBUSW50ZXJtQWdncmVnYXRlKiBUSW50ZXJt
ZWRpYXRlOjpncm93QWdnCiAgICAgaWYgKHJpZ2h0KQogICAgICAgICBhZ2dOb2RlLT5nZXRTZXF1
ZW5jZSgpLnB1c2hfYmFjayhyaWdodCk7CiAKLSAgICBpZiAobGluZSAhPSAwKQotICAgICAgICBh
Z2dOb2RlLT5zZXRMaW5lKGxpbmUpOworICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7CiAKICAg
ICByZXR1cm4gYWdnTm9kZTsKIH0KQEAgLTU2MiwxOCArNTUwLDE0IEBAIFRJbnRlcm1BZ2dyZWdh
dGUqIFRJbnRlcm1lZGlhdGU6Omdyb3dBZ2cKIC8vCiAvLyBSZXR1cm5zIGFuIGFnZ3JlZ2F0ZSwg
dW5sZXNzIDAgd2FzIHBhc3NlZCBpbiBmb3IgdGhlIGV4aXN0aW5nIG5vZGUuCiAvLwotVEludGVy
bUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6bWFrZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbm9k
ZSwgVFNvdXJjZUxvYyBsaW5lKQorVEludGVybUFnZ3JlZ2F0ZSogVEludGVybWVkaWF0ZTo6bWFr
ZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsK
ICAgICBpZiAobm9kZSA9PSAwKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFRJbnRlcm1BZ2dy
ZWdhdGUqIGFnZ05vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZTsKICAgICBhZ2dOb2RlLT5nZXRT
ZXF1ZW5jZSgpLnB1c2hfYmFjayhub2RlKTsKLQotICAgIGlmIChsaW5lICE9IDApCi0gICAgICAg
IGFnZ05vZGUtPnNldExpbmUobGluZSk7Ci0gICAgZWxzZQotICAgICAgICBhZ2dOb2RlLT5zZXRM
aW5lKG5vZGUtPmdldExpbmUoKSk7CisgICAgYWdnTm9kZS0+c2V0TGluZShsaW5lKTsKIAogICAg
IHJldHVybiBhZ2dOb2RlOwogfQpAQCAtNTg1LDcgKzU2OSw3IEBAIFRJbnRlcm1BZ2dyZWdhdGUq
IFRJbnRlcm1lZGlhdGU6Om1ha2VBZ2cKIC8vCiAvLyBSZXR1cm5zIHRoZSBzZWxlY3Rpb24gbm9k
ZSBjcmVhdGVkLgogLy8KLVRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24o
VEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBhaXIgbm9kZVBhaXIsIFRTb3VyY2VMb2Mg
bGluZSkKK1RJbnRlcm1Ob2RlKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24oVEludGVybVR5
cGVkKiBjb25kLCBUSW50ZXJtTm9kZVBhaXIgbm9kZVBhaXIsIGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUpCiB7CiAgICAgLy8KICAgICAvLyBGb3IgY29tcGlsZSB0aW1lIGNvbnN0YW50IHNlbGVjdGlv
bnMsIHBydW5lIHRoZSBjb2RlIGFuZApAQCAtNTkzLDcgKzU3Nyw3IEBAIFRJbnRlcm1Ob2RlKiBU
SW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24KICAgICAvLwogCiAgICAgaWYgKGNvbmQtPmdldEFz
VHlwZWQoKSAmJiBjb25kLT5nZXRBc1R5cGVkKCktPmdldEFzQ29uc3RhbnRVbmlvbigpKSB7Ci0g
ICAgICAgIGlmIChjb25kLT5nZXRBc1R5cGVkKCktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpLT5nZXRCQ29uc3QoKSA9PSB0cnVlKQorICAgICAgICBpZiAoY29u
ZC0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldEJDb25zdCgwKSA9PSB0cnVlKQogICAgICAgICAg
ICAgcmV0dXJuIG5vZGVQYWlyLm5vZGUxID8gc2V0QWdncmVnYXRlT3BlcmF0b3Iobm9kZVBhaXIu
bm9kZTEsIEVPcFNlcXVlbmNlLCBub2RlUGFpci5ub2RlMS0+Z2V0TGluZSgpKSA6IE5VTEw7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBub2RlUGFpci5ub2RlMiA/IHNldEFnZ3Jl
Z2F0ZU9wZXJhdG9yKG5vZGVQYWlyLm5vZGUyLCBFT3BTZXF1ZW5jZSwgbm9kZVBhaXIubm9kZTIt
PmdldExpbmUoKSkgOiBOVUxMOwpAQCAtNjA2LDcgKzU5MCw3IEBAIFRJbnRlcm1Ob2RlKiBUSW50
ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24KIH0KIAogCi1USW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlh
dGU6OmFkZENvbW1hKFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgVFNv
dXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRDb21tYShUSW50
ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmIGxp
bmUpCiB7CiAgICAgaWYgKGxlZnQtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25z
dCAmJiByaWdodC0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSB7CiAgICAg
ICAgIHJldHVybiByaWdodDsKQEAgLTYyNiw3ICs2MTAsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRl
cm1lZGlhdGU6OmFkZENvbW1hKFRJCiAvLwogLy8gUmV0dXJucyB0aGUgc2VsZWN0aW9uIG5vZGUg
Y3JlYXRlZCwgb3IgMCBpZiBvbmUgY291bGQgbm90IGJlLgogLy8KLVRJbnRlcm1UeXBlZCogVElu
dGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVk
KiB0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCogZmFsc2VCbG9jaywgVFNvdXJjZUxvYyBsaW5lKQor
VEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBj
b25kLCBUSW50ZXJtVHlwZWQqIHRydWVCbG9jaywgVEludGVybVR5cGVkKiBmYWxzZUJsb2NrLCBj
b25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIC8vCiAgICAgLy8gR2V0IGNvbXBhdGlibGUg
dHlwZXMuCkBAIC02NDcsNyArNjMxLDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjph
ZGRTZWxlY3RpbwogICAgIC8vCiAKICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCkg
JiYgdHJ1ZUJsb2NrLT5nZXRBc0NvbnN0YW50VW5pb24oKSAmJiBmYWxzZUJsb2NrLT5nZXRBc0Nv
bnN0YW50VW5pb24oKSkgewotICAgICAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCkt
PmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldEJDb25zdCgpKQorICAgICAgICBpZiAoY29uZC0+
Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldEJDb25zdCgwKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlQmxvY2s7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBmYWxzZUJsb2NrOwpA
QCAtNjY5LDcgKzY1Myw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0
aW8KIC8vIFJldHVybnMgdGhlIGNvbnN0YW50IHVuaW9uIG5vZGUgY3JlYXRlZC4KIC8vCiAKLVRJ
bnRlcm1Db25zdGFudFVuaW9uKiBUSW50ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9uKENvbnN0
YW50VW5pb24qIHVuaW9uQXJyYXlQb2ludGVyLCBjb25zdCBUVHlwZSYgdCwgVFNvdXJjZUxvYyBs
aW5lKQorVEludGVybUNvbnN0YW50VW5pb24qIFRJbnRlcm1lZGlhdGU6OmFkZENvbnN0YW50VW5p
b24oQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheVBvaW50ZXIsIGNvbnN0IFRUeXBlJiB0LCBjb25z
dCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKiBub2RlID0g
bmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHVuaW9uQXJyYXlQb2ludGVyLCB0KTsKICAgICBub2Rl
LT5zZXRMaW5lKGxpbmUpOwpAQCAtNjc3LDcgKzY2MSw3IEBAIFRJbnRlcm1Db25zdGFudFVuaW9u
KiBUSW50ZXJtZWRpYXRlOjphZGQKICAgICByZXR1cm4gbm9kZTsKIH0KIAotVEludGVybVR5cGVk
KiBUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKFRWZWN0b3JGaWVsZHMmIGZpZWxkcywgVFNvdXJj
ZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxlKFRWZWN0
b3JGaWVsZHMmIGZpZWxkcywgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKIAogICAgIFRJbnRl
cm1BZ2dyZWdhdGUqIG5vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CkBA
IC03MDAsNyArNjg0LDcgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjphZGRTd2l6emxl
KAogLy8KIC8vIENyZWF0ZSBsb29wIG5vZGVzLgogLy8KLVRJbnRlcm1Ob2RlKiBUSW50ZXJtZWRp
YXRlOjphZGRMb29wKFRMb29wVHlwZSB0eXBlLCBUSW50ZXJtTm9kZSogaW5pdCwgVEludGVybVR5
cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIGV4cHIsIFRJbnRlcm1Ob2RlKiBib2R5LCBUU291cmNl
TG9jIGxpbmUpCitUSW50ZXJtTm9kZSogVEludGVybWVkaWF0ZTo6YWRkTG9vcChUTG9vcFR5cGUg
dHlwZSwgVEludGVybU5vZGUqIGluaXQsIFRJbnRlcm1UeXBlZCogY29uZCwgVEludGVybVR5cGVk
KiBleHByLCBUSW50ZXJtTm9kZSogYm9keSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAg
ICBUSW50ZXJtTm9kZSogbm9kZSA9IG5ldyBUSW50ZXJtTG9vcCh0eXBlLCBpbml0LCBjb25kLCBl
eHByLCBib2R5KTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtNzExLDEyICs2OTUsMTIg
QEAgVEludGVybU5vZGUqIFRJbnRlcm1lZGlhdGU6OmFkZExvb3AoVExvbwogLy8KIC8vIEFkZCBi
cmFuY2hlcy4KIC8vCi1USW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9w
ZXJhdG9yIGJyYW5jaE9wLCBUU291cmNlTG9jIGxpbmUpCitUSW50ZXJtQnJhbmNoKiBUSW50ZXJt
ZWRpYXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9wLCBjb25zdCBUU291cmNlTG9jJiBs
aW5lKQogewogICAgIHJldHVybiBhZGRCcmFuY2goYnJhbmNoT3AsIDAsIGxpbmUpOwogfQogCi1U
SW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goVE9wZXJhdG9yIGJyYW5jaE9w
LCBUSW50ZXJtVHlwZWQqIGV4cHJlc3Npb24sIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1CcmFu
Y2gqIFRJbnRlcm1lZGlhdGU6OmFkZEJyYW5jaChUT3BlcmF0b3IgYnJhbmNoT3AsIFRJbnRlcm1U
eXBlZCogZXhwcmVzc2lvbiwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBUSW50ZXJt
QnJhbmNoKiBub2RlID0gbmV3IFRJbnRlcm1CcmFuY2goYnJhbmNoT3AsIGV4cHJlc3Npb24pOwog
ICAgIG5vZGUtPnNldExpbmUobGluZSk7CkBAIC04NDYsNiArODMwLDcgQEAgYm9vbCBUSW50ZXJt
VW5hcnk6OnByb21vdGUoVEluZm9TaW5rJikKICAgICB9CiAKICAgICBzZXRUeXBlKG9wZXJhbmQt
PmdldFR5cGUoKSk7CisgICAgdHlwZS5zZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKIAogICAg
IHJldHVybiB0cnVlOwogfQpAQCAtODYwLDcgKzg0NSw3IEBAIGJvb2wgVEludGVybUJpbmFyeTo6
cHJvbW90ZShUSW5mb1NpbmsmIGkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIG9ubHkgaGFuZGxl
cyBzY2FsYXJzLCB2ZWN0b3JzLCBhbmQgbWF0cmljZXMuCiAgICAgaWYgKGxlZnQtPmlzQXJyYXko
KSB8fCByaWdodC0+aXNBcnJheSgpKSB7Ci0gICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShF
UHJlZml4SW50ZXJuYWxFcnJvciwgIkludmFsaWQgb3BlcmF0aW9uIGZvciBhcnJheXMiLCBnZXRM
aW5lKCkpOworICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsIGdldExpbmUoKSwgIkludmFsaWQgb3BlcmF0aW9uIGZvciBhcnJheXMiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtOTY1LDcgKzk1MCw3IEBAIGJvb2wgVEludGVybUJp
bmFyeTo6cHJvbW90ZShUSW5mb1NpbmsmIGkKICAgICAgICAgICAgICAgICAgICAgc2V0VHlwZShU
VHlwZShiYXNpY1R5cGUsIGhpZ2hlclByZWNpc2lvbiwgRXZxVGVtcG9yYXJ5LCBzaXplLCBmYWxz
ZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiTWlzc2lu
ZyBlbHNlcyIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJNaXNzaW5nIGVsc2VzIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CkBAIC05OTQsNyArOTc5LDcgQEAgYm9vbCBUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKFRJ
bmZvU2luayYgaQogICAgICAgICAgICAgICAgICAgICBzZXRUeXBlKFRUeXBlKGJhc2ljVHlwZSwg
aGlnaGVyUHJlY2lzaW9uLCBFdnFUZW1wb3JhcnksIHNpemUsIGZhbHNlKSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJNaXNzaW5nIGVsc2VzIiwgZ2V0TGlu
ZSgpKTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVy
bmFsRXJyb3IsIGdldExpbmUoKSwgIk1pc3NpbmcgZWxzZXMiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwMzQs
MjMgKzEwMTksMjIgQEAgYm9vbCBUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKFRJbmZvU2luayYgaQog
CiBib29sIENvbXBhcmVTdHJ1Y3QoY29uc3QgVFR5cGUmIGxlZnROb2RlVHlwZSwgQ29uc3RhbnRV
bmlvbiogcmlnaHRVbmlvbkFycmF5LCBDb25zdGFudFVuaW9uKiBsZWZ0VW5pb25BcnJheSkKIHsK
LSAgICBjb25zdCBUVHlwZUxpc3QqIGZpZWxkcyA9IGxlZnROb2RlVHlwZS5nZXRTdHJ1Y3QoKTsK
KyAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSBsZWZ0Tm9kZVR5cGUuZ2V0U3RydWN0KCkt
PmZpZWxkcygpOwogCi0gICAgc2l6ZV90IHN0cnVjdFNpemUgPSBmaWVsZHMtPnNpemUoKTsKLSAg
ICBpbnQgaW5kZXggPSAwOworICAgIHNpemVfdCBzdHJ1Y3RTaXplID0gZmllbGRzLnNpemUoKTsK
KyAgICBzaXplX3QgaW5kZXggPSAwOwogCiAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBzdHJ1
Y3RTaXplOyBqKyspIHsKLSAgICAgICAgaW50IHNpemUgPSAoKmZpZWxkcylbal0udHlwZS0+Z2V0
T2JqZWN0U2l6ZSgpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewot
ICAgICAgICAgICAgaWYgKCgqZmllbGRzKVtqXS50eXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRT
dHJ1Y3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoIUNvbXBhcmVTdHJ1Y3R1cmUoKigqZmllbGRz
KVtqXS50eXBlLCAmcmlnaHRVbmlvbkFycmF5W2luZGV4XSwgJmxlZnRVbmlvbkFycmF5W2luZGV4
XSkpCisgICAgICAgIHNpemVfdCBzaXplID0gZmllbGRzW2pdLT50eXBlKCktPmdldE9iamVjdFNp
emUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAg
ICAgICAgIGlmIChmaWVsZHNbal0tPnR5cGUoKS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0
KSB7CisgICAgICAgICAgICAgICAgaWYgKCFDb21wYXJlU3RydWN0dXJlKCooZmllbGRzW2pdLT50
eXBlKCkpLCAmcmlnaHRVbmlvbkFycmF5W2luZGV4XSwgJmxlZnRVbmlvbkFycmF5W2luZGV4XSkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgaWYgKGxlZnRVbmlvbkFycmF5W2luZGV4XSAhPSByaWdodFVuaW9u
QXJyYXlbaW5kZXhdKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgaW5kZXgrKzsKICAgICAgICAgICAgIH0KLQogICAgICAgICB9CiAgICAgfQogICAg
IHJldHVybiB0cnVlOwpAQCAtMTA2MiwxMCArMTA0NiwxMCBAQCBib29sIENvbXBhcmVTdHJ1Y3R1
cmUoY29uc3QgVFR5cGUmIGxlZnROCiAgICAgICAgIFRUeXBlIHR5cGVXaXRob3V0QXJyYXluZXNz
ID0gbGVmdE5vZGVUeXBlOwogICAgICAgICB0eXBlV2l0aG91dEFycmF5bmVzcy5jbGVhckFycmF5
bmVzcygpOwogCi0gICAgICAgIGludCBhcnJheVNpemUgPSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlT
aXplKCk7CisgICAgICAgIHNpemVfdCBhcnJheVNpemUgPSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlT
aXplKCk7CiAKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkgewot
ICAgICAgICAgICAgaW50IG9mZnNldCA9IHR5cGVXaXRob3V0QXJyYXluZXNzLmdldE9iamVjdFNp
emUoKSAqIGk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kp
IHsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSB0eXBlV2l0aG91dEFycmF5bmVzcy5nZXRP
YmplY3RTaXplKCkgKiBpOwogICAgICAgICAgICAgaWYgKCFDb21wYXJlU3RydWN0KHR5cGVXaXRo
b3V0QXJyYXluZXNzLCAmcmlnaHRVbmlvbkFycmF5W29mZnNldF0sICZsZWZ0VW5pb25BcnJheVtv
ZmZzZXRdKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEw
ODUsNyArMTA2OSw3IEBAIGJvb2wgQ29tcGFyZVN0cnVjdHVyZShjb25zdCBUVHlwZSYgbGVmdE4K
IFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQoVE9wZXJhdG9yIG9wLCBU
SW50ZXJtVHlwZWQqIGNvbnN0YW50Tm9kZSwgVEluZm9TaW5rJiBpbmZvU2luaykKIHsKICAgICBD
b25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gZ2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICBp
bnQgb2JqZWN0U2l6ZSA9IGdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90IG9i
amVjdFNpemUgPSBnZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogCiAgICAgaWYgKGNvbnN0YW50
Tm9kZSkgeyAgLy8gYmluYXJ5IG9wZXJhdGlvbnMKICAgICAgICAgVEludGVybUNvbnN0YW50VW5p
b24gKm5vZGUgPSBjb25zdGFudE5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwpAQCAtMTA5NSwx
MyArMTA3OSwxMyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAg
ICAgICAgIC8vIGZvciBhIGNhc2UgbGlrZSBmbG9hdCBmID0gMS4yICsgdmVjNCgyLDMsNCw1KTsK
ICAgICAgICAgaWYgKGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSA9PSAx
ICYmIG9iamVjdFNpemUgPiAxKSB7CiAgICAgICAgICAgICByaWdodFVuaW9uQXJyYXkgPSBuZXcg
Q29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgb2JqZWN0U2l6ZTsgKytpKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBv
YmplY3RTaXplOyArK2kpCiAgICAgICAgICAgICAgICAgcmlnaHRVbmlvbkFycmF5W2ldID0gKm5v
ZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CiAgICAgICAgICAgICByZXR1cm5UeXBlID0gZ2V0
VHlwZSgpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9i
amVjdFNpemUoKSA+IDEgJiYgb2JqZWN0U2l6ZSA9PSAxKSB7CiAgICAgICAgICAgICAvLyBmb3Ig
YSBjYXNlIGxpa2UgZmxvYXQgZiA9IHZlYzQoMiwzLDQsNSkgKyAxLjI7CiAgICAgICAgICAgICB1
bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0
T2JqZWN0U2l6ZSgpXTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29uc3RhbnRO
b2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOyArK2kpCisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsg
KytpKQogICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlbaV0gPSAqZ2V0VW5pb25BcnJheVBvaW50
ZXIoKTsKICAgICAgICAgICAgIHJldHVyblR5cGUgPSBub2RlLT5nZXRUeXBlKCk7CiAgICAgICAg
ICAgICBvYmplY3RTaXplID0gY29uc3RhbnROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgp
OwpAQCAtMTExNSwxNCArMTA5OSwxNCBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVu
aW9uOjpmb2xkCiAgICAgICAgICAgICBjYXNlIEVPcEFkZDoKICAgICAgICAgICAgICAgICB0ZW1w
Q29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwogICAgICAgICAgICAg
ICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICB0
ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gKyByaWdodFVuaW9uQXJyYXlbaV07CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBFT3BTdWI6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRV
bmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAK
LSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKysp
CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsg
aSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFy
cmF5W2ldIC0gcmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTExMzIsMTMgKzExMTYsMTMgQEAgVEludGVybVR5cGVkKiBUSW50
ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAgICAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1Nj
YWxhcjoKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
W29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAg
ICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKysp
CiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlb
aV0gKiByaWdodFVuaW9uQXJyYXlbaV07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeDoKICAgICAg
ICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0IHx8IG5v
ZGUtPmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50IEZvbGRp
bmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCBtdWx0aXBseSIsIGdldExpbmUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgZ2V0TGluZSgpLCAiQ29uc3RhbnQgRm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgbWF0cml4
IG11bHRpcGx5Iik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKQEAgLTExNTcsMTEg
KzExNDEsMTEgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZAogICAg
ICAgICAgICAgY2FzZSBFT3BEaXY6CiAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBu
ZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9y
dCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmpl
Y3RTaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBvYmplY3RTaXplOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0
VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgogICAg
ICAgICAgICAgICAgIGlmIChyaWdodFVuaW9uQXJyYXlbaV0gPT0gMC4wZikgewotICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsICJEaXZpZGUg
YnkgemVybyBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9sZGluZyIsIGdldExpbmUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4V2FybmluZywgZ2V0
TGluZSgpLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciKTsK
ICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KHVuaW9uQXJy
YXlbaV0uZ2V0RkNvbnN0KCkgPCAwID8gLUZMVF9NQVggOiBGTFRfTUFYKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNv
bnN0KHVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgLyByaWdodFVuaW9uQXJyYXlbaV0uZ2V0RkNv
bnN0KCkpOwpAQCAtMTE2OSwxMyArMTE1MywxMyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25z
dGFudFVuaW9uOjpmb2xkCiAKICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgogICAgICAgICAgICAg
ICAgIGlmIChyaWdodFVuaW9uQXJyYXlbaV0gPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsICJEaXZpZGUgYnkgemVybyBlcnJv
ciBkdXJpbmcgY29uc3RhbnQgZm9sZGluZyIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4V2FybmluZywgZ2V0TGluZSgpLCAiRGl2
aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciKTsKICAgICAgICAgICAg
ICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0KElOVF9NQVgpOwogICAgICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJ
Q29uc3QodW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSAvIHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJ
Q29uc3QoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgIkNvbnN0YW50IGZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIFwiL1wiIiwgZ2V0TGluZSgp
KTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFs
RXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50IGZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIFwi
L1wiIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTExODQsNyArMTE2OCw3IEBAIFRJbnRlcm1U
eXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZvbGQKIAogICAgICAgICAgICAgY2FzZSBFT3BN
YXRyaXhUaW1lc1ZlY3RvcjoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0QmFzaWNUeXBl
KCkgIT0gRWJ0RmxvYXQpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQ29uc3RhbnQgRm9sZGluZyBjYW5ub3QgYmUgZG9u
ZSBmb3IgbWF0cml4IHRpbWVzIHZlY3RvciIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgp
LCAiQ29uc3RhbnQgRm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgbWF0cml4IHRpbWVzIHZlY3Rv
ciIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltnZXROb21p
bmFsU2l6ZSgpXTsKQEAgLTEyMDUsNyArMTE4OSw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNv
bnN0YW50VW5pb246OmZvbGQKIAogICAgICAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01hdHJp
eDoKICAgICAgICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidEZs
b2F0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4
SW50ZXJuYWxFcnJvciwgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIHZlY3Rv
ciB0aW1lcyBtYXRyaXgiLCBnZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIkNvbnN0YW50
IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIHZlY3RvciB0aW1lcyBtYXRyaXgiKTsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xMjIzLDcg
KzEyMDcsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAg
ICAgICAgICBjYXNlIEVPcExvZ2ljYWxBbmQ6IC8vIHRoaXMgY29kZSBpcyB3cml0dGVuIGZvciBw
b3NzaWJsZSBmdXR1cmUgdXNlLCB3aWxsIG5vdCBnZXQgZXhlY3V0ZWQgY3VycmVudGx5CiAgICAg
ICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvbltvYmplY3RTaXpl
XTsKICAgICAgICAgICAgICAgICB7Ly8gc3VwcG9ydCBNU1ZDKys2LjAKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAg
ICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldICYmIHJpZ2h0
VW5pb25BcnJheVtpXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMjMxLDcgKzEyMTUsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9u
Ojpmb2xkCiAgICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxPcjogLy8gdGhpcyBjb2RlIGlzIHdy
aXR0ZW4gZm9yIHBvc3NpYmxlIGZ1dHVyZSB1c2UsIHdpbGwgbm90IGdldCBleGVjdXRlZCBjdXJy
ZW50bHkKICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
W29iamVjdFNpemVdOwogICAgICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAg
ICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKysp
CiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlb
aV0gfHwgcmlnaHRVbmlvbkFycmF5W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTEyMzksNyArMTIyMyw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNv
bnN0YW50VW5pb246OmZvbGQKICAgICAgICAgICAgIGNhc2UgRU9wTG9naWNhbFhvcjoKICAgICAg
ICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBDb25zdGFudFVuaW9uW29iamVjdFNpemVd
OwogICAgICAgICAgICAgICAgIHsvLyBzdXBwb3J0IE1TVkMrKzYuMAotICAgICAgICAgICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCiAgICAgICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkgewogICAgICAg
ICAgICAgY2FzZSBFYnRCb29sOiB0ZW1wQ29uc3RBcnJheVtpXS5zZXRCQ29uc3QoKHVuaW9uQXJy
YXlbaV0gPT0gcmlnaHRVbmlvbkFycmF5W2ldKSA/IGZhbHNlIDogdHJ1ZSk7IGJyZWFrOwogICAg
ICAgICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlICYmICJEZWZhdWx0IG1pc3NpbmciKTsKQEAg
LTEyODUsNyArMTI2OSw3IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNvbnN0YW50VW5pb246OmZv
bGQKICAgICAgICAgICAgICAgICAgICAgaWYgKCFDb21wYXJlU3RydWN0dXJlKG5vZGUtPmdldFR5
cGUoKSwgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSwgdW5pb25BcnJheSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6
ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Jq
ZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pb25BcnJheVtp
XSAhPSByaWdodFVuaW9uQXJyYXlbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAg
Ly8gYnJlYWsgb3V0IG9mIGZvciBsb29wCkBAIC0xMzExLDcgKzEyOTUsNyBAQCBUSW50ZXJtVHlw
ZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICAgICAgICAgIGlmIChD
b21wYXJlU3RydWN0dXJlKG5vZGUtPmdldFR5cGUoKSwgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50
ZXIoKSwgdW5pb25BcnJheSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sTm9kZUZsYWcg
PSB0cnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodW5pb25BcnJheVtpXSA9PSByaWdodFVuaW9uQXJyYXlbaV0pIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgLy8gYnJlYWsgb3V0IG9mIGZvciBsb29wCkBAIC0x
MzMzLDcgKzEzMTcsNyBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xk
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXBOb2RlOwogCiAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxF
cnJvciwgIkludmFsaWQgb3BlcmF0b3IgZm9yIGNvbnN0YW50IGZvbGRpbmciLCBnZXRMaW5lKCkp
OworICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxF
cnJvciwgZ2V0TGluZSgpLCAiSW52YWxpZCBvcGVyYXRvciBmb3IgY29uc3RhbnQgZm9sZGluZyIp
OwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIHRlbXBOb2Rl
ID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHRlbXBDb25zdEFycmF5LCByZXR1cm5UeXBlKTsK
QEAgLTEzNDYsMTQgKzEzMzAsMTQgQEAgVEludGVybVR5cGVkKiBUSW50ZXJtQ29uc3RhbnRVbmlv
bjo6Zm9sZAogICAgICAgICAvLwogICAgICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbmV3Tm9k
ZSA9IDA7CiAgICAgICAgIENvbnN0YW50VW5pb24qIHRlbXBDb25zdEFycmF5ID0gbmV3IENvbnN0
YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2JqZWN0
U2l6ZTsgaSsrKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsg
aSsrKSB7CiAgICAgICAgICAgICBzd2l0Y2gob3ApIHsKICAgICAgICAgICAgICAgICBjYXNlIEVP
cE5lZ2F0aXZlOgogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNp
Y1R5cGUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDogdGVtcENv
bnN0QXJyYXlbaV0uc2V0RkNvbnN0KC11bmlvbkFycmF5W2ldLmdldEZDb25zdCgpKTsgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDogICB0ZW1wQ29uc3RBcnJheVtp
XS5zZXRJQ29uc3QoLXVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkpOyBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiVW5hcnkgb3BlcmF0aW9u
IG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBn
ZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzYxLDcgKzEzNDUsNyBAQCBUSW50
ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkCiAgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVidEJvb2w6ICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRCQ29uc3QoIXVuaW9uQXJy
YXlbaV0uZ2V0QkNvbnN0KCkpOyBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25z
dGFudCIsIGdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1Npbmsu
aW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVy
YXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xMzc3LDY1ICsxMzYxLDY0IEBAIFRJbnRlcm1UeXBlZCogVEludGVybUNv
bnN0YW50VW5pb246OmZvbGQKIAogVEludGVybVR5cGVkKiBUSW50ZXJtZWRpYXRlOjpwcm9tb3Rl
Q29uc3RhbnRVbmlvbihUQmFzaWNUeXBlIHByb21vdGVUbywgVEludGVybUNvbnN0YW50VW5pb24q
IG5vZGUpCiB7Ci0gICAgQ29uc3RhbnRVbmlvbiAqcmlnaHRVbmlvbkFycmF5ID0gbm9kZS0+Z2V0
VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICBpbnQgc2l6ZSA9IG5vZGUtPmdldFR5cGUoKS5nZXRP
YmplY3RTaXplKCk7CisgICAgc2l6ZV90IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0
U2l6ZSgpOwogCiAgICAgQ29uc3RhbnRVbmlvbiAqbGVmdFVuaW9uQXJyYXkgPSBuZXcgQ29uc3Rh
bnRVbmlvbltzaXplXTsKIAotICAgIGZvciAoaW50IGk9MDsgaSA8IHNpemU7IGkrKykgeworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAKICAgICAgICAgc3dpdGNoIChw
cm9tb3RlVG8pIHsKICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAg
c3dpdGNoIChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJh
eVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRJ
Q29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0
RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50
PihpKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJh
eVtpXS5zZXRGQ29uc3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRC
Q29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0
RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRCQ29uc3Qoc3RhdGljX2Nhc3Q8Ym9v
bD4oaSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFy
cmF5W2ldID0gcmlnaHRVbmlvbkFycmF5W2ldOworICAgICAgICAgICAgICAgICAgICAgICAgbGVm
dFVuaW9uQXJyYXlbaV0uc2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0Pihub2RlLT5nZXRGQ29u
c3Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJDYW5ub3QgcHJv
bW90ZSIsIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkNh
bm5vdCBwcm9tb3RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEVi
dEludDoKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5
cGUoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldID0gcmlnaHRVbmlvbkFycmF5W2ldOworICAgICAg
ICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0
PGludD4obm9kZS0+Z2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4oaSkpKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgot
ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRp
Y19jYXN0PGludD4ocmlnaHRVbmlvbkFycmF5W2ldLmdldEJDb25zdCgpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8aW50
Pihub2RlLT5nZXRCQ29uc3Qoc3RhdGljX2Nhc3Q8Ym9vbD4oaSkpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLnNldElDb25zdChzdGF0aWNf
Y2FzdDxpbnQ+KHJpZ2h0VW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludD4o
bm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0PihpKSkpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCAiQ2Fubm90IHByb21vdGUiLCBub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5n
ZXRMaW5lKCksICJDYW5ub3QgcHJvbW90ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBFYnRCb29sOgogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0VHlw
ZSgpLmdldEJhc2ljVHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50Ogot
ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbaV0uc2V0QkNvbnN0KHJpZ2h0
VW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSAhPSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxlZnRVbmlvbkFycmF5W2ldLnNldEJDb25zdChub2RlLT5nZXRJQ29uc3Qoc3RhdGljX2Nhc3Q8
aW50PihpKSkgIT0gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVu
aW9uQXJyYXlbaV0gPSByaWdodFVuaW9uQXJyYXlbaV07CisgICAgICAgICAgICAgICAgICAgICAg
ICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qobm9kZS0+Z2V0QkNvbnN0KHN0YXRpY19jYXN0
PGJvb2w+KGkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlv
bkFycmF5W2ldLnNldEJDb25zdChyaWdodFVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgIT0gMC4w
Zik7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0VW5pb25BcnJheVtpXS5zZXRCQ29uc3Qo
bm9kZS0+Z2V0RkNvbnN0KHN0YXRpY19jYXN0PGZsb2F0PihpKSkgIT0gMC4wZik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJu
YWxFcnJvciwgIkNhbm5vdCBwcm9tb3RlIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwg
bm9kZS0+Z2V0TGluZSgpLCAiQ2Fubm90IHByb21vdGUiKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1l
c3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsICJJbmNvcnJlY3QgZGF0YSB0eXBlIGZvdW5kIiwg
bm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIkluY29ycmVjdCBkYXRhIHR5
cGUgZm91bmQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdM
U0wuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvT3V0cHV0R0xTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5LDMgKzE5LDE3IEBA
IGJvb2wgVE91dHB1dEdMU0w6OndyaXRlVmFyaWFibGVQcmVjaXNpb24KIHsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CisKK3ZvaWQgVE91dHB1dEdMU0w6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wq
IG5vZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gb2JqU2luaygpOworCisgICAgaWYg
KG5vZGUtPmdldFN5bWJvbCgpID09ICJnbF9GcmFnRGVwdGhFWFQiKQorICAgIHsKKyAgICAgICAg
b3V0IDw8ICJnbF9GcmFnRGVwdGgiOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBU
T3V0cHV0R0xTTEJhc2U6OnZpc2l0U3ltYm9sKG5vZGUpOworICAgIH0KK30KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuaAkocmV2
aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091
dHB1dEdMU0wuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQCBwdWJsaWM6CiAKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgd3JpdGVWYXJpYWJsZVByZWNpc2lvbihUUHJlY2lz
aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCogbm9kZSk7
CiB9OwogCiAjZW5kaWYgIC8vIENST1NTQ09NUElMRVJHTFNMX09VVFBVVEdMU0xfSF8KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1
dEdMU0xCYXNlLmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzks
MjUgKzc5LDkgQEAgdm9pZCBUT3V0cHV0R0xTTEJhc2U6OndyaXRlVmFyaWFibGVUeXBlKAogICAg
IGlmICgocXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgJiYgKHF1YWxpZmllciAhPSBFdnFHbG9i
YWwpKQogICAgICAgICBvdXQgPDwgdHlwZS5nZXRRdWFsaWZpZXJTdHJpbmcoKSA8PCAiICI7CiAg
ICAgLy8gRGVjbGFyZSB0aGUgc3RydWN0IGlmIHdlIGhhdmUgbm90IGRvbmUgc28gYWxyZWFkeS4K
LSAgICBpZiAoKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSAmJgotICAgICAgICAo
bURlY2xhcmVkU3RydWN0cy5maW5kKHR5cGUuZ2V0VHlwZU5hbWUoKSkgPT0gbURlY2xhcmVkU3Ry
dWN0cy5lbmQoKSkpCisgICAgaWYgKCh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkg
JiYgIXN0cnVjdERlY2xhcmVkKHR5cGUuZ2V0U3RydWN0KCkpKQogICAgIHsKLSAgICAgICAgb3V0
IDw8ICJzdHJ1Y3QgIiA8PCBoYXNoTmFtZSh0eXBlLmdldFR5cGVOYW1lKCkpIDw8ICJ7XG4iOwot
ICAgICAgICBjb25zdCBUVHlwZUxpc3QqIHN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7Ci0g
ICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gTlVMTCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RydWN0dXJlLT5zaXplKCk7ICsraSkKLSAgICAgICAgewotICAgICAgICAgICAg
Y29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOwotICAgICAgICAg
ICAgQVNTRVJUKGZpZWxkVHlwZSAhPSBOVUxMKTsKLSAgICAgICAgICAgIGlmICh3cml0ZVZhcmlh
YmxlUHJlY2lzaW9uKGZpZWxkVHlwZS0+Z2V0UHJlY2lzaW9uKCkpKQotICAgICAgICAgICAgICAg
IG91dCA8PCAiICI7Ci0gICAgICAgICAgICBvdXQgPDwgZ2V0VHlwZU5hbWUoKmZpZWxkVHlwZSkg
PDwgIiAiIDw8IGhhc2hOYW1lKGZpZWxkVHlwZS0+Z2V0RmllbGROYW1lKCkpOwotICAgICAgICAg
ICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJheSgpKQotICAgICAgICAgICAgICAgIG91dCA8PCBhcnJh
eUJyYWNrZXRzKCpmaWVsZFR5cGUpOwotICAgICAgICAgICAgb3V0IDw8ICI7XG4iOwotICAgICAg
ICB9Ci0gICAgICAgIG91dCA8PCAifSI7Ci0gICAgICAgIG1EZWNsYXJlZFN0cnVjdHMuaW5zZXJ0
KHR5cGUuZ2V0VHlwZU5hbWUoKSk7CisgICAgICAgIGRlY2xhcmVTdHJ1Y3QodHlwZS5nZXRTdHJ1
Y3QoKSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0xMzgsMjQgKzEyMiwyNSBAQCBjb25z
dCBDb25zdGFudFVuaW9uKiBUT3V0cHV0R0xTTEJhc2U6OndyCiAKICAgICBpZiAodHlwZS5nZXRC
YXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCiAgICAgewotICAgICAgICBvdXQgPDwgaGFzaE5hbWUo
dHlwZS5nZXRUeXBlTmFtZSgpKSA8PCAiKCI7Ci0gICAgICAgIGNvbnN0IFRUeXBlTGlzdCogc3Ry
dWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSBO
VUxMKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJ1Y3R1cmUtPnNpemUoKTsg
KytpKQorICAgICAgICBjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVj
dCgpOworICAgICAgICBvdXQgPDwgaGFzaE5hbWUoc3RydWN0dXJlLT5uYW1lKCkpIDw8ICIoIjsK
KworICAgICAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSBzdHJ1Y3R1cmUtPmZpZWxkcygp
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkKICAg
ICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0dXJl
KVtpXS50eXBlOworICAgICAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9IGZpZWxkc1tp
XS0+dHlwZSgpOwogICAgICAgICAgICAgQVNTRVJUKGZpZWxkVHlwZSAhPSBOVUxMKTsKICAgICAg
ICAgICAgIHBDb25zdFVuaW9uID0gd3JpdGVDb25zdGFudFVuaW9uKCpmaWVsZFR5cGUsIHBDb25z
dFVuaW9uKTsKLSAgICAgICAgICAgIGlmIChpICE9IHN0cnVjdHVyZS0+c2l6ZSgpIC0gMSkgb3V0
IDw8ICIsICI7CisgICAgICAgICAgICBpZiAoaSAhPSBmaWVsZHMuc2l6ZSgpIC0gMSkgb3V0IDw8
ICIsICI7CiAgICAgICAgIH0KICAgICAgICAgb3V0IDw8ICIpIjsKICAgICB9CiAgICAgZWxzZQog
ICAgIHsKLSAgICAgICAgaW50IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAg
c2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKICAgICAgICAgYm9vbCB3cml0ZVR5
cGUgPSBzaXplID4gMTsKICAgICAgICAgaWYgKHdyaXRlVHlwZSkgb3V0IDw8IGdldFR5cGVOYW1l
KHR5cGUpIDw8ICIoIjsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2ksICsr
cENvbnN0VW5pb24pCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpLCAr
K3BDb25zdFVuaW9uKQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKHBDb25zdFVuaW9u
LT5nZXRUeXBlKCkpCiAgICAgICAgICAgICB7CkBAIC0yNjAsMTIgKzI0NSwxOCBAQCBib29sIFRP
dXRwdXRHTFNMQmFzZTo6dmlzaXRCaW5hcnkoVmlzaXQgCiAgICAgICAgIGNhc2UgRU9wSW5kZXhE
aXJlY3RTdHJ1Y3Q6CiAgICAgICAgICAgICBpZiAodmlzaXQgPT0gSW5WaXNpdCkKICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAvLyBIZXJlIHdlIGFyZSB3cml0aW5nIG91dCAiZm9vLmJh
ciIsIHdoZXJlICJmb28iIGlzIHN0cnVjdAorICAgICAgICAgICAgICAgIC8vIGFuZCAiYmFyIiBp
cyBmaWVsZC4gSW4gQVNULCBpdCBpcyByZXByZXNlbnRlZCBhcyBhIGJpbmFyeQorICAgICAgICAg
ICAgICAgIC8vIG5vZGUsIHdoZXJlIGxlZnQgY2hpbGQgcmVwcmVzZW50cyAiZm9vIiBhbmQgcmln
aHQgY2hpbGQgImJhciIuCisgICAgICAgICAgICAgICAgLy8gVGhlIG5vZGUgaXRzZWxmIHJlcHJl
c2VudHMgIi4iLiBUaGUgc3RydWN0IGZpZWxkICJiYXIiIGlzCisgICAgICAgICAgICAgICAgLy8g
YWN0dWFsbHkgc3RvcmVkIGFzIGFuIGluZGV4IGludG8gVFN0cnVjdHVyZTo6ZmllbGRzLgogICAg
ICAgICAgICAgICAgIG91dCA8PCAiLiI7Ci0gICAgICAgICAgICAgICAgLy8gVE9ETyhhbG9rcCk6
IEFTU0VSVAotICAgICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gbm9kZS0+Z2V0VHlw
ZSgpLmdldEZpZWxkTmFtZSgpOworICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOworICAgICAg
ICAgICAgICAgIGNvbnN0IFRJbnRlcm1Db25zdGFudFVuaW9uKiBpbmRleCA9IG5vZGUtPmdldFJp
Z2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAgICAgICAgICAgICAgIGNvbnN0IFRGaWVs
ZCogZmllbGQgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOwogCi0g
ICAgICAgICAgICAgICAgY29uc3QgVFR5cGUmIHN0cnVjdFR5cGUgPSBub2RlLT5nZXRMZWZ0KCkt
PmdldFR5cGUoKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJ
bihzdHJ1Y3RUeXBlLmdldFR5cGVOYW1lKCkpKQorICAgICAgICAgICAgICAgIFRTdHJpbmcgZmll
bGROYW1lID0gZmllbGQtPm5hbWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1TeW1ib2xUYWJs
ZS5maW5kQnVpbHRJbihzdHJ1Y3R1cmUtPm5hbWUoKSkpCiAgICAgICAgICAgICAgICAgICAgIGZp
ZWxkTmFtZSA9IGhhc2hOYW1lKGZpZWxkTmFtZSk7CiAKICAgICAgICAgICAgICAgICBvdXQgPDwg
ZmllbGROYW1lOwpAQCAtNTk2LDcgKzU4Nyw3IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNp
dEFnZ3JlZ2F0ZShWaXMKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjb25zdCBUVHlw
ZSYgdHlwZSA9IG5vZGUtPmdldFR5cGUoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5n
ZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpOwotICAgICAgICAgICAgICAgIG91dCA8PCBoYXNo
TmFtZSh0eXBlLmdldFR5cGVOYW1lKCkpIDw8ICIoIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwg
aGFzaE5hbWUodHlwZS5nZXRTdHJ1Y3QoKS0+bmFtZSgpKSA8PCAiKCI7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZpc2l0KQogICAgICAgICAgICAgewpA
QCAtNzY1LDcgKzc1Niw3IEBAIFRTdHJpbmcgVE91dHB1dEdMU0xCYXNlOjpnZXRUeXBlTmFtZShj
b24KICAgICBlbHNlCiAgICAgewogICAgICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBF
YnRTdHJ1Y3QpCi0gICAgICAgICAgICBvdXQgPDwgaGFzaE5hbWUodHlwZS5nZXRUeXBlTmFtZSgp
KTsKKyAgICAgICAgICAgIG91dCA8PCBoYXNoTmFtZSh0eXBlLmdldFN0cnVjdCgpLT5uYW1lKCkp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvdXQgPDwgdHlwZS5nZXRCYXNpY1N0cmluZygp
OwogICAgIH0KQEAgLTc5OCwzICs3ODksMjkgQEAgVFN0cmluZyBUT3V0cHV0R0xTTEJhc2U6Omhh
c2hGdW5jdGlvbk5hbQogICAgICAgICByZXR1cm4gbmFtZTsKICAgICByZXR1cm4gaGFzaE5hbWUo
bmFtZSk7CiB9CisKK2Jvb2wgVE91dHB1dEdMU0xCYXNlOjpzdHJ1Y3REZWNsYXJlZChjb25zdCBU
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EZWNsYXJlZFN0cnVj
dHMuZmluZChzdHJ1Y3R1cmUtPm5hbWUoKSkgIT0gbURlY2xhcmVkU3RydWN0cy5lbmQoKTsKK30K
Kwordm9pZCBUT3V0cHV0R0xTTEJhc2U6OmRlY2xhcmVTdHJ1Y3QoY29uc3QgVFN0cnVjdHVyZSog
c3RydWN0dXJlKQoreworICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IG9ialNpbmsoKTsKKworICAg
IG91dCA8PCAic3RydWN0ICIgPDwgaGFzaE5hbWUoc3RydWN0dXJlLT5uYW1lKCkpIDw8ICJ7XG4i
OworICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHN0cnVjdHVyZS0+ZmllbGRzKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpCisgICAgeworICAg
ICAgICBjb25zdCBURmllbGQqIGZpZWxkID0gZmllbGRzW2ldOworICAgICAgICBpZiAod3JpdGVW
YXJpYWJsZVByZWNpc2lvbihmaWVsZC0+dHlwZSgpLT5nZXRQcmVjaXNpb24oKSkpCisgICAgICAg
ICAgICBvdXQgPDwgIiAiOworICAgICAgICBvdXQgPDwgZ2V0VHlwZU5hbWUoKmZpZWxkLT50eXBl
KCkpIDw8ICIgIiA8PCBoYXNoTmFtZShmaWVsZC0+bmFtZSgpKTsKKyAgICAgICAgaWYgKGZpZWxk
LT50eXBlKCktPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKCpm
aWVsZC0+dHlwZSgpKTsKKyAgICAgICAgb3V0IDw8ICI7XG4iOworICAgIH0KKyAgICBvdXQgPDwg
In0iOworCisgICAgbURlY2xhcmVkU3RydWN0cy5pbnNlcnQoc3RydWN0dXJlLT5uYW1lKCkpOwor
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L091dHB1dEdMU0xCYXNlLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Miw2ICs1Miw5IEBAIHByb3RlY3RlZDoKICAgICBUU3RyaW5nIGhhc2hGdW5jdGlvbk5hbWUoY29u
c3QgVFN0cmluZyYgbWFuZ2xlZF9uYW1lKTsKIAogcHJpdmF0ZToKKyAgICBib29sIHN0cnVjdERl
Y2xhcmVkKGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3Q7CisgICAgdm9pZCBkZWNs
YXJlU3RydWN0KGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7CisKICAgICBUSW5mb1NpbmtC
YXNlJiBtT2JqU2luazsKICAgICBib29sIG1EZWNsYXJpbmdWYXJpYWJsZXM7CiAKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5j
cHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9PdXRwdXRITFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjcsNyArMjcsOCBAQCBUU3RyaW5n
IHN0cihpbnQgaSkKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1PdXRwdXRITFNMOjpPdXRwdXRI
TFNMKFRQYXJzZUNvbnRleHQgJmNvbnRleHQpIDogVEludGVybVRyYXZlcnNlcih0cnVlLCB0cnVl
LCB0cnVlKSwgbUNvbnRleHQoY29udGV4dCkKK091dHB1dEhMU0w6Ok91dHB1dEhMU0woVFBhcnNl
Q29udGV4dCAmY29udGV4dCwgY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsIFNo
U2hhZGVyT3V0cHV0IG91dHB1dFR5cGUpCisgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIHRy
dWUsIHRydWUpLCBtQ29udGV4dChjb250ZXh0KSwgbU91dHB1dFR5cGUob3V0cHV0VHlwZSkKIHsK
ICAgICBtVW5mb2xkU2hvcnRDaXJjdWl0ID0gbmV3IFVuZm9sZFNob3J0Q2lyY3VpdChjb250ZXh0
LCB0aGlzKTsKICAgICBtSW5zaWRlRnVuY3Rpb24gPSBmYWxzZTsKQEAgLTQ3LDExICs0OCwxNCBA
QCBPdXRwdXRITFNMOjpPdXRwdXRITFNMKFRQYXJzZUNvbnRleHQgJmNvCiAgICAgbVVzZXNUZXh0
dXJlMkRQcm9qTG9kMF9iaWFzID0gZmFsc2U7CiAgICAgbVVzZXNUZXh0dXJlQ3ViZUxvZDAgPSBm
YWxzZTsKICAgICBtVXNlc1RleHR1cmVDdWJlTG9kMF9iaWFzID0gZmFsc2U7CisgICAgbVVzZXNG
cmFnQ29sb3IgPSBmYWxzZTsKKyAgICBtVXNlc0ZyYWdEYXRhID0gZmFsc2U7CiAgICAgbVVzZXNE
ZXB0aFJhbmdlID0gZmFsc2U7CiAgICAgbVVzZXNGcmFnQ29vcmQgPSBmYWxzZTsKICAgICBtVXNl
c1BvaW50Q29vcmQgPSBmYWxzZTsKICAgICBtVXNlc0Zyb250RmFjaW5nID0gZmFsc2U7CiAgICAg
bVVzZXNQb2ludFNpemUgPSBmYWxzZTsKKyAgICBtVXNlc0ZyYWdEZXB0aCA9IGZhbHNlOwogICAg
IG1Vc2VzWG9yID0gZmFsc2U7CiAgICAgbVVzZXNNb2QxID0gZmFsc2U7CiAgICAgbVVzZXNNb2Qy
diA9IGZhbHNlOwpAQCAtODEsNiArODUsOCBAQCBPdXRwdXRITFNMOjpPdXRwdXRITFNMKFRQYXJz
ZUNvbnRleHQgJmNvCiAgICAgbVVzZXNBdGFuMl8zID0gZmFsc2U7CiAgICAgbVVzZXNBdGFuMl80
ID0gZmFsc2U7CiAKKyAgICBtTnVtUmVuZGVyVGFyZ2V0cyA9IHJlc291cmNlcy5FWFRfZHJhd19i
dWZmZXJzID8gcmVzb3VyY2VzLk1heERyYXdCdWZmZXJzIDogMTsKKwogICAgIG1TY29wZURlcHRo
ID0gMDsKIAogICAgIG1VbmlxdWVJbmRleCA9IDA7CkBAIC05MCw2ICs5NiwyNCBAQCBPdXRwdXRI
TFNMOjpPdXRwdXRITFNMKFRQYXJzZUNvbnRleHQgJmNvCiAgICAgbUluc2lkZURpc2NvbnRpbnVv
dXNMb29wID0gZmFsc2U7CiAKICAgICBtRXhjZXNzaXZlTG9vcEluZGV4ID0gTlVMTDsKKworICAg
IGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgeworICAgICAgICBpZiAo
bUNvbnRleHQuc2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1Vbmlmb3JtUmVnaXN0ZXIgPSAzOyAgIC8vIFJlc2VydmUgcmVnaXN0ZXJzIGZv
ciBkeF9EZXB0aFJhbmdlLCBkeF9WaWV3Q29vcmRzIGFuZCBkeF9EZXB0aEZyb250CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtVW5pZm9ybVJlZ2lzdGVy
ID0gMjsgICAvLyBSZXNlcnZlIHJlZ2lzdGVycyBmb3IgZHhfRGVwdGhSYW5nZSBhbmQgZHhfVmll
d0FkanVzdAorICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1Vbmlm
b3JtUmVnaXN0ZXIgPSAwOworICAgIH0KKworICAgIG1TYW1wbGVyUmVnaXN0ZXIgPSAwOwogfQog
CiBPdXRwdXRITFNMOjp+T3V0cHV0SExTTCgpCkBAIC0xMTMsNiArMTM3LDExIEBAIFRJbmZvU2lu
a0Jhc2UgJk91dHB1dEhMU0w6OmdldEJvZHlTdHJlYW0KICAgICByZXR1cm4gbUJvZHk7CiB9CiAK
K2NvbnN0IEFjdGl2ZVVuaWZvcm1zICZPdXRwdXRITFNMOjpnZXRVbmlmb3JtcygpCit7CisgICAg
cmV0dXJuIG1BY3RpdmVVbmlmb3JtczsKK30KKwogaW50IE91dHB1dEhMU0w6OnZlY3RvclNpemUo
Y29uc3QgVFR5cGUgJnR5cGUpIGNvbnN0CiB7CiAgICAgaW50IGVsZW1lbnRTaXplID0gdHlwZS5p
c01hdHJpeCgpID8gdHlwZS5nZXROb21pbmFsU2l6ZSgpIDogMTsKQEAgLTEzNiw1OCArMTY1LDc2
IEBAIHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKCkKICAgICAgICAgb3V0IDw8ICpjb25zdHJ1Y3Rv
cjsKICAgICB9CiAKLSAgICBpZiAoc2hhZGVyVHlwZSA9PSBTSF9GUkFHTUVOVF9TSEFERVIpCisg
ICAgVFN0cmluZyB1bmlmb3JtczsKKyAgICBUU3RyaW5nIHZhcnlpbmdzOworICAgIFRTdHJpbmcg
YXR0cmlidXRlczsKKworICAgIGZvciAoUmVmZXJlbmNlZFN5bWJvbHM6OmNvbnN0X2l0ZXJhdG9y
IHVuaWZvcm0gPSBtUmVmZXJlbmNlZFVuaWZvcm1zLmJlZ2luKCk7IHVuaWZvcm0gIT0gbVJlZmVy
ZW5jZWRVbmlmb3Jtcy5lbmQoKTsgdW5pZm9ybSsrKQogICAgIHsKLSAgICAgICAgVFN0cmluZyB1
bmlmb3JtczsKLSAgICAgICAgVFN0cmluZyB2YXJ5aW5nczsKKyAgICAgICAgY29uc3QgVFR5cGUg
JnR5cGUgPSB1bmlmb3JtLT5zZWNvbmQtPmdldFR5cGUoKTsKKyAgICAgICAgY29uc3QgVFN0cmlu
ZyAmbmFtZSA9IHVuaWZvcm0tPnNlY29uZC0+Z2V0U3ltYm9sKCk7CiAKLSAgICAgICAgVFN5bWJv
bFRhYmxlTGV2ZWwgKnN5bWJvbHMgPSBtQ29udGV4dC5zeW1ib2xUYWJsZS5nZXRHbG9iYWxMZXZl
bCgpOwotICAgICAgICBpbnQgc2VtYW50aWNJbmRleCA9IDA7CisgICAgICAgIGlmIChtT3V0cHV0
VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUICYmIElzU2FtcGxlcih0eXBlLmdldEJhc2ljVHlwZSgp
KSkgICAvLyBBbHNvIGRlY2xhcmUgdGhlIHRleHR1cmUKKyAgICAgICAgeworICAgICAgICAgICAg
aW50IGluZGV4ID0gc2FtcGxlclJlZ2lzdGVyKG1SZWZlcmVuY2VkVW5pZm9ybXNbbmFtZV0pOwog
Ci0gICAgICAgIGZvciAoVFN5bWJvbFRhYmxlTGV2ZWw6OmNvbnN0X2l0ZXJhdG9yIG5hbWVkU3lt
Ym9sID0gc3ltYm9scy0+YmVnaW4oKTsgbmFtZWRTeW1ib2wgIT0gc3ltYm9scy0+ZW5kKCk7IG5h
bWVkU3ltYm9sKyspCisgICAgICAgICAgICB1bmlmb3JtcyArPSAidW5pZm9ybSBTYW1wbGVyU3Rh
dGUgc2FtcGxlcl8iICsgZGVjb3JhdGVVbmlmb3JtKG5hbWUsIHR5cGUpICsgYXJyYXlTdHJpbmco
dHlwZSkgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICIgOiByZWdpc3RlcihzIiArIHN0cihp
bmRleCkgKyAiKTtcbiI7CisKKyAgICAgICAgICAgIHVuaWZvcm1zICs9ICJ1bmlmb3JtICIgKyB0
ZXh0dXJlU3RyaW5nKHR5cGUpICsgIiB0ZXh0dXJlXyIgKyBkZWNvcmF0ZVVuaWZvcm0obmFtZSwg
dHlwZSkgKyBhcnJheVN0cmluZyh0eXBlKSArIAorICAgICAgICAgICAgICAgICAgICAgICAgIiA6
IHJlZ2lzdGVyKHQiICsgc3RyKGluZGV4KSArICIpO1xuIjsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRTeW1ib2wgKnN5bWJvbCA9ICgqbmFt
ZWRTeW1ib2wpLnNlY29uZDsKLSAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJm5hbWUgPSBzeW1i
b2wtPmdldE5hbWUoKTsKKyAgICAgICAgICAgIHVuaWZvcm1zICs9ICJ1bmlmb3JtICIgKyB0eXBl
U3RyaW5nKHR5cGUpICsgIiAiICsgZGVjb3JhdGVVbmlmb3JtKG5hbWUsIHR5cGUpICsgYXJyYXlT
dHJpbmcodHlwZSkgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICIgOiByZWdpc3RlcigiICsg
cmVnaXN0ZXJTdHJpbmcobVJlZmVyZW5jZWRVbmlmb3Jtc1tuYW1lXSkgKyAiKTtcbiI7CisgICAg
ICAgIH0KKyAgICB9CiAKLSAgICAgICAgICAgIGlmIChzeW1ib2wtPmlzVmFyaWFibGUoKSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBUVmFyaWFibGUgKnZhcmlhYmxlID0g
c3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4oc3ltYm9sKTsKLSAgICAgICAgICAgICAgICBj
b25zdCBUVHlwZSAmdHlwZSA9IHZhcmlhYmxlLT5nZXRUeXBlKCk7Ci0gICAgICAgICAgICAgICAg
VFF1YWxpZmllciBxdWFsaWZpZXIgPSB0eXBlLmdldFF1YWxpZmllcigpOworICAgIGZvciAoUmVm
ZXJlbmNlZFN5bWJvbHM6OmNvbnN0X2l0ZXJhdG9yIHZhcnlpbmcgPSBtUmVmZXJlbmNlZFZhcnlp
bmdzLmJlZ2luKCk7IHZhcnlpbmcgIT0gbVJlZmVyZW5jZWRWYXJ5aW5ncy5lbmQoKTsgdmFyeWlu
ZysrKQorICAgIHsKKyAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgPSB2YXJ5aW5nLT5zZWNvbmQt
PmdldFR5cGUoKTsKKyAgICAgICAgY29uc3QgVFN0cmluZyAmbmFtZSA9IHZhcnlpbmctPnNlY29u
ZC0+Z2V0U3ltYm9sKCk7CiAKLSAgICAgICAgICAgICAgICBpZiAocXVhbGlmaWVyID09IEV2cVVu
aWZvcm0pCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAobVJlZmVy
ZW5jZWRVbmlmb3Jtcy5maW5kKG5hbWUuY19zdHIoKSkgIT0gbVJlZmVyZW5jZWRVbmlmb3Jtcy5l
bmQoKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgdW5p
Zm9ybXMgKz0gInVuaWZvcm0gIiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBkZWNvcmF0ZVVu
aWZvcm0obmFtZSwgdHlwZSkgKyBhcnJheVN0cmluZyh0eXBlKSArICI7XG4iOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4gfHwgcXVhbGlmaWVyID09IEV2cUludmFyaWFudFZh
cnlpbmdJbikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtUmVm
ZXJlbmNlZFZhcnlpbmdzLmZpbmQobmFtZS5jX3N0cigpKSAhPSBtUmVmZXJlbmNlZFZhcnlpbmdz
LmVuZCgpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBQcm9ncmFtIGxpbmtpbmcgZGVwZW5kcyBvbiB0aGlzIGV4YWN0IGZvcm1hdAotICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyeWluZ3MgKz0gInN0YXRpYyAiICsgdHlwZVN0cmluZyh0eXBlKSAr
ICIgIiArIGRlY29yYXRlKG5hbWUpICsgYXJyYXlTdHJpbmcodHlwZSkgKyAiID0gIiArIGluaXRp
YWxpemVyKHR5cGUpICsgIjtcbiI7CisgICAgICAgIC8vIFByb2dyYW0gbGlua2luZyBkZXBlbmRz
IG9uIHRoaXMgZXhhY3QgZm9ybWF0CisgICAgICAgIHZhcnlpbmdzICs9ICJzdGF0aWMgIiArIHR5
cGVTdHJpbmcodHlwZSkgKyAiICIgKyBkZWNvcmF0ZShuYW1lKSArIGFycmF5U3RyaW5nKHR5cGUp
ICsgIiA9ICIgKyBpbml0aWFsaXplcih0eXBlKSArICI7XG4iOworICAgIH0KIAotICAgICAgICAg
ICAgICAgICAgICAgICAgc2VtYW50aWNJbmRleCArPSB0eXBlLmlzQXJyYXkoKSA/IHR5cGUuZ2V0
QXJyYXlTaXplKCkgOiAxOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHF1YWxpZmllciA9PSBFdnFHbG9iYWwgfHwgcXVh
bGlmaWVyID09IEV2cVRlbXBvcmFyeSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIEdsb2JhbHMgYXJlIGRlY2xhcmVkIGFuZCBpbnRpYWxpemVkIGFzIGFuIGFnZ3Jl
Z2F0ZSBub2RlCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHF1
YWxpZmllciA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIENvbnN0YW50cyBhcmUgcmVwZWF0ZWQgYXMgbGl0ZXJhbHMgd2hlcmUgdXNlZAotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBmb3IgKFJlZmVyZW5jZWRTeW1ib2xzOjpjb25zdF9p
dGVyYXRvciBhdHRyaWJ1dGUgPSBtUmVmZXJlbmNlZEF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0cmli
dXRlICE9IG1SZWZlcmVuY2VkQXR0cmlidXRlcy5lbmQoKTsgYXR0cmlidXRlKyspCisgICAgewor
ICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSA9IGF0dHJpYnV0ZS0+c2Vjb25kLT5nZXRUeXBlKCk7
CisgICAgICAgIGNvbnN0IFRTdHJpbmcgJm5hbWUgPSBhdHRyaWJ1dGUtPnNlY29uZC0+Z2V0U3lt
Ym9sKCk7CisKKyAgICAgICAgYXR0cmlidXRlcyArPSAic3RhdGljICIgKyB0eXBlU3RyaW5nKHR5
cGUpICsgIiAiICsgZGVjb3JhdGUobmFtZSkgKyBhcnJheVN0cmluZyh0eXBlKSArICIgPSAiICsg
aW5pdGlhbGl6ZXIodHlwZSkgKyAiO1xuIjsKKyAgICB9CisKKyAgICBpZiAoc2hhZGVyVHlwZSA9
PSBTSF9GUkFHTUVOVF9TSEFERVIpCisgICAgeworICAgICAgICBURXh0ZW5zaW9uQmVoYXZpb3I6
OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtQ29udGV4dC5leHRlbnNpb25CZWhhdmlvcigpLmZpbmQo
IkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICAgICAgY29uc3QgYm9vbCB1c2luZ01SVEV4dGVu
c2lvbiA9IChpdGVyICE9IG1Db250ZXh0LmV4dGVuc2lvbkJlaGF2aW9yKCkuZW5kKCkgJiYgKGl0
ZXItPnNlY29uZCA9PSBFQmhFbmFibGUgfHwgaXRlci0+c2Vjb25kID09IEVCaFJlcXVpcmUpKTsK
KworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgbnVtQ29sb3JWYWx1ZXMgPSB1c2luZ01SVEV4
dGVuc2lvbiA/IG1OdW1SZW5kZXJUYXJnZXRzIDogMTsKIAogICAgICAgICBvdXQgPDwgIi8vIFZh
cnlpbmdzXG4iOwogICAgICAgICBvdXQgPDwgIHZhcnlpbmdzOwogICAgICAgICBvdXQgPDwgIlxu
IgotICAgICAgICAgICAgICAgInN0YXRpYyBmbG9hdDQgZ2xfQ29sb3JbMV0gPSB7ZmxvYXQ0KDAs
IDAsIDAsIDApfTtcbiI7CisgICAgICAgICAgICAgICAic3RhdGljIGZsb2F0NCBnbF9Db2xvclsi
IDw8IG51bUNvbG9yVmFsdWVzIDw8ICJdID1cbiIKKyAgICAgICAgICAgICAgICJ7XG4iOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bUNvbG9yVmFsdWVzOyBpKyspCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0NCgwLCAwLCAwLCAwKSI7Cisg
ICAgICAgICAgICBpZiAoaSArIDEgIT0gbnVtQ29sb3JWYWx1ZXMpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgb3V0IDw8ICIsIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91
dCA8PCAiXG4iOworICAgICAgICB9CisgICAgICAgIG91dCA8PCAifTtcbiI7CisKKyAgICAgICAg
aWYgKG1Vc2VzRnJhZ0RlcHRoKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgInN0YXRp
YyBmbG9hdCBnbF9EZXB0aCA9IDAuMDtcbiI7CisgICAgICAgIH0KIAogICAgICAgICBpZiAobVVz
ZXNGcmFnQ29vcmQpCiAgICAgICAgIHsKQEAgLTIwNiwyMDUgKzI1MywzNzkgQEAgdm9pZCBPdXRw
dXRITFNMOjpoZWFkZXIoKQogCiAgICAgICAgIG91dCA8PCAiXG4iOwogCi0gICAgICAgIGlmICht
VXNlc0ZyYWdDb29yZCkKKyAgICAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkKICAgICAgICAgewot
ICAgICAgICAgICAgb3V0IDw8ICJ1bmlmb3JtIGZsb2F0NCBkeF9Db29yZDtcbiIKLSAgICAgICAg
ICAgICAgICAgICAidW5pZm9ybSBmbG9hdDIgZHhfRGVwdGg7XG4iOworICAgICAgICAgICAgb3V0
IDw8ICJzdHJ1Y3QgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnNcbiIKKyAgICAgICAgICAgICAgICAg
ICAie1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgbmVhcjtcbiIKKyAgICAgICAg
ICAgICAgICAgICAiICAgIGZsb2F0IGZhcjtcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgIGZs
b2F0IGRpZmY7XG4iCisgICAgICAgICAgICAgICAgICAgIn07XG4iCisgICAgICAgICAgICAgICAg
ICAgIlxuIjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtVXNlc0Zyb250RmFjaW5nKQorICAg
ICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKICAgICAgICAgewotICAg
ICAgICAgICAgb3V0IDw8ICJ1bmlmb3JtIGJvb2wgZHhfUG9pbnRzT3JMaW5lcztcbiIKLSAgICAg
ICAgICAgICAgICAgICAidW5pZm9ybSBib29sIGR4X0Zyb250Q0NXO1xuIjsKKyAgICAgICAgICAg
IG91dCA8PCAiY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSlcbiIKKyAgICAg
ICAgICAgICAgICAgICAie1xuIjsKKworICAgICAgICAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDMgZHhfRGVw
dGhSYW5nZSA6IHBhY2tvZmZzZXQoYzApO1xuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKG1Vc2VzRnJhZ0Nvb3JkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91
dCA8PCAiICAgIGZsb2F0NCBkeF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMSk7XG4iOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobVVzZXNGcmFnQ29vcmQgfHwgbVVzZXNGcm9u
dEZhY2luZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9h
dDMgZHhfRGVwdGhGcm9udCA6IHBhY2tvZmZzZXQoYzIpO1xuIjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgb3V0IDw8ICJ9O1xuIjsKICAgICAgICAgfQotICAgICAgICAKKyAgICAgICAg
ZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAidW5pZm9ybSBmbG9hdDMgZHhfRGVwdGhS
YW5nZSA6IHJlZ2lzdGVyKGMwKTsiOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
bVVzZXNGcmFnQ29vcmQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJ1
bmlmb3JtIGZsb2F0NCBkeF9WaWV3Q29vcmRzIDogcmVnaXN0ZXIoYzEpO1xuIjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKG1Vc2VzRnJhZ0Nvb3JkIHx8IG1Vc2VzRnJvbnRGYWNp
bmcpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJ1bmlmb3JtIGZsb2F0
MyBkeF9EZXB0aEZyb250IDogcmVnaXN0ZXIoYzIpO1xuIjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCiAgICAgICAgIG91dCA8PCAiXG4iOworCisgICAgICAgIGlmIChtVXNlc0RlcHRoUmFu
Z2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAic3RhdGljIGdsX0RlcHRoUmFuZ2VQ
YXJhbWV0ZXJzIGdsX0RlcHRoUmFuZ2UgPSB7ZHhfRGVwdGhSYW5nZS54LCBkeF9EZXB0aFJhbmdl
LnksIGR4X0RlcHRoUmFuZ2Uuen07XG4iCisgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAg
ICAgfQorICAgICAgICAKICAgICAgICAgb3V0IDw8ICB1bmlmb3JtczsKICAgICAgICAgb3V0IDw8
ICJcbiI7CiAKICAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJEKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkQoc2FtcGxlcjJEIHMsIGZsb2F0MiB0KVxu
IgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1
cm4gdGV4MkQocywgdCk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAg
ICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09V
VFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90
ZXh0dXJlMkQoc2FtcGxlcjJEIHMsIGZsb2F0MiB0KVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRChzLCB0KTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09
IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8
ICJmbG9hdDQgZ2xfdGV4dHVyZTJEKFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQy
IHV2KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIHJldHVybiB0LlNhbXBsZShzLCB1dik7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bVVzZXNUZXh0dXJlMkRfYmlhcykKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9h
dDQgZ2xfdGV4dHVyZTJEKHNhbXBsZXIyRCBzLCBmbG9hdDIgdCwgZmxvYXQgYmlhcylcbiIKLSAg
ICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRl
eDJEYmlhcyhzLCBmbG9hdDQodC54LCB0LnksIDAsIGJpYXMpKTtcbiIKLSAgICAgICAgICAgICAg
ICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAobU91
dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRChzYW1wbGVyMkQgcywgZmxvYXQyIHQsIGZs
b2F0IGJpYXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEYmlhcyhzLCBmbG9hdDQodC54LCB0LnksIDAsIGJp
YXMpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRU
eXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
b3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEKFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywg
ZmxvYXQyIHV2LCBmbG9hdCBiaWFzKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUJpYXMocywgdXYsIGJp
YXMpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgp
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZTJEUHJvaikKICAgICAgICAg
ewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQg
cywgZmxvYXQzIHQpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAg
ICAgICAiICAgIHJldHVybiB0ZXgyRHByb2oocywgZmxvYXQ0KHQueCwgdC55LCAwLCB0LnopKTtc
biIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiIKLSAg
ICAgICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZs
b2F0NCB0KVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAg
IiAgICByZXR1cm4gdGV4MkRwcm9qKHMsIHQpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4i
Ci0gICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9
PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8
ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxvYXQzIHQpXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuIHRleDJEcHJvaihzLCBmbG9hdDQodC54LCB0LnksIDAsIHQueikpO1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxv
YXQ0IHQpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICIgICAgcmV0dXJuIHRleDJEcHJvaihzLCB0KTtcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJE
UHJvaihUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MyB1dncpXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJu
IHQuU2FtcGxlKHMsIGZsb2F0Mih1dncueCAvIHV2dy56LCB1dncueSAvIHV2dy56KSk7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKFRleHR1cmUy
RCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQ0IHV2dylcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGUocywg
ZmxvYXQyKHV2dy54IC8gdXZ3LncsIHV2dy55IC8gdXZ3LncpKTtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChtVXNlc1RleHR1cmUyRFByb2pfYmlhcykKICAgICAgICAgewotICAgICAgICAgICAgb3V0
IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxvYXQzIHQsIGZsb2F0
IGJpYXMpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAi
ICAgIHJldHVybiB0ZXgyRGJpYXMocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8gdC56LCAwLCBi
aWFzKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAi
XG4iCi0gICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKHNhbXBsZXIy
RCBzLCBmbG9hdDQgdCwgZmxvYXQgYmlhcylcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgot
ICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEYmlhcyhzLCBmbG9hdDQodC54IC8g
dC53LCB0LnkgLyB0LncsIDAsIGJpYXMpKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgot
ICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0g
U0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAi
ZmxvYXQ0IGdsX3RleHR1cmUyRFByb2ooc2FtcGxlcjJEIHMsIGZsb2F0MyB0LCBmbG9hdCBiaWFz
KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIHJldHVybiB0ZXgyRGJpYXMocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8gdC56LCAw
LCBiaWFzKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJl
MkRQcm9qKHNhbXBsZXIyRCBzLCBmbG9hdDQgdCwgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4
MkRiaWFzKHMsIGZsb2F0NCh0LnggLyB0LncsIHQueSAvIHQudywgMCwgYmlhcykpO1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExT
TDExX09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0
NCBnbF90ZXh0dXJlMkRQcm9qKFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2
dywgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVCaWFzKHMsIGZsb2F0Mih1dncueCAv
IHV2dy56LCB1dncueSAvIHV2dy56KSwgYmlhcyk7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywg
ZmxvYXQ0IHV2dywgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVCaWFzKHMsIGZsb2F0
Mih1dncueCAvIHV2dy53LCB1dncueSAvIHV2dy53KSwgYmlhcyk7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAobVVzZXNUZXh0dXJlQ3ViZSkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJm
bG9hdDQgZ2xfdGV4dHVyZUN1YmUoc2FtcGxlckNVQkUgcywgZmxvYXQzIHQpXG4iCi0gICAgICAg
ICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhDVUJF
KHMsIHQpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAg
IlxuIjsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1
YmUoc2FtcGxlckNVQkUgcywgZmxvYXQzIHQpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleENVQkUocywgdCk7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJc
biI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBT
SF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAi
ZmxvYXQ0IGdsX3RleHR1cmVDdWJlKFRleHR1cmVDdWJlIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9h
dDMgdXZ3KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZShzLCB1dncpO1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKG1Vc2VzVGV4dHVyZUN1YmVfYmlhcykKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8
ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmUoc2FtcGxlckNVQkUgcywgZmxvYXQzIHQsIGZsb2F0IGJp
YXMpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiB0ZXhDVUJFYmlhcyhzLCBmbG9hdDQodC54LCB0LnksIHQueiwgYmlhcykpO1xuIgot
ICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAg
ICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmUoc2FtcGxlckNV
QkUgcywgZmxvYXQzIHQsIGZsb2F0IGJpYXMpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleENVQkViaWFzKHMsIGZs
b2F0NCh0LngsIHQueSwgdC56LCBiaWFzKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlKFRleHR1
cmVDdWJlIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDMgdXZ3LCBmbG9hdCBiaWFzKVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJl
dHVybiB0LlNhbXBsZUJpYXMocywgdXZ3LCBiaWFzKTtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRo
ZXNlICpMb2QwIGludHJpbnNpY3MgYXJlIG5vdCBhdmFpbGFibGUgaW4gR0wgZnJhZ21lbnQgc2hh
ZGVycy4KICAgICAgICAgLy8gVGhleSBhcmUgdXNlZCB0byBzYW1wbGUgdXNpbmcgZGlzY29udGlu
dW91cyB0ZXh0dXJlIGNvb3JkaW5hdGVzLgogICAgICAgICBpZiAobVVzZXNUZXh0dXJlMkRMb2Qw
KQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRMb2Qw
KHNhbXBsZXIyRCBzLCBmbG9hdDIgdClcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAg
ICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LngsIHQueSwg
MCwgMCkpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAg
IlxuIjsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJE
TG9kMChzYW1wbGVyMkQgcywgZmxvYXQyIHQpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0
NCh0LngsIHQueSwgMCwgMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRMb2QwKFRleHR1cmUyRCB0
LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQyIHV2KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAi
e1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUxldmVsKHMs
IHV2LCAwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFC
TEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtVXNlc1RleHR1cmUyRExvZDBfYmlhcykK
ICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJETG9kMChz
YW1wbGVyMkQgcywgZmxvYXQyIHQsIGZsb2F0IGJpYXMpXG4iCi0gICAgICAgICAgICAgICAgICAg
IntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQo
dC54LCB0LnksIDAsIDApKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAg
ICAgICAgICAgICJcbiI7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlf
T1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGds
X3RleHR1cmUyRExvZDAoc2FtcGxlcjJEIHMsIGZsb2F0MiB0LCBmbG9hdCBiaWFzKVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJl
dHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54LCB0LnksIDAsIDApKTtcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQ
VVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4
dHVyZTJETG9kMChUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MiB1diwgZmxvYXQg
YmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCB1diwgMCk7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAobVVzZXNUZXh0dXJlMkRQcm9qTG9kMCkKICAgICAgICAgewotICAgICAgICAgICAg
b3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZDAoc2FtcGxlcjJEIHMsIGZsb2F0MyB0
KVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICBy
ZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8gdC56LCAwLCAwKSk7XG4i
Ci0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kKHNhbXBsZXIyRCBzLCBm
bG9hdDQgdClcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAg
ICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LncsIHQueSAvIHQudywgMCwg
MCkpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxu
IjsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJv
akxvZDAoc2FtcGxlcjJEIHMsIGZsb2F0MyB0KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAi
e1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9h
dDQodC54IC8gdC56LCB0LnkgLyB0LnosIDAsIDApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHMsIGZsb2F0NCB0KVxu
IgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC53LCB0LnkgLyB0LncsIDAsIDAp
KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBl
ID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0
IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZDAoVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0
ZSBzLCBmbG9hdDMgdXZ3KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0LlNhbXBsZUxldmVsKHMsIGZsb2F0Mih1dncu
eCAvIHV2dy56LCB1dncueSAvIHV2dy56KSwgMCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kMChUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRl
IHMsIGZsb2F0NCB1dncpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2FtcGxlTGV2ZWwocywgZmxvYXQyKHV2dy54
IC8gdXZ3LncsIHV2dy55IC8gdXZ3LncpLCAwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
In1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtVXNl
c1RleHR1cmUyRFByb2pMb2QwX2JpYXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAi
ZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2QwX2JpYXMoc2FtcGxlcjJEIHMsIGZsb2F0MyB0LCBm
bG9hdCBiaWFzKVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAg
ICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQueiwgdC55IC8gdC56LCAw
LCAwKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAi
XG4iCi0gICAgICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kX2JpYXMo
c2FtcGxlcjJEIHMsIGZsb2F0NCB0LCBmbG9hdCBiaWFzKVxuIgotICAgICAgICAgICAgICAgICAg
ICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0
KHQueCAvIHQudywgdC55IC8gdC53LCAwLCAwKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1c
biIKLSAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBl
ID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQg
PDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kMF9iaWFzKHNhbXBsZXIyRCBzLCBmbG9hdDMg
dCwgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQueiwg
dC55IC8gdC56LCAwLCAwKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0NCBn
bF90ZXh0dXJlMkRQcm9qTG9kX2JpYXMoc2FtcGxlcjJEIHMsIGZsb2F0NCB0LCBmbG9hdCBiaWFz
KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC53LCB0LnkgLyB0LncsIDAs
IDApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRU
eXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
b3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZF9iaWFzKFRleHR1cmUyRCB0LCBTYW1w
bGVyU3RhdGUgcywgZmxvYXQzIHV2dywgZmxvYXQgYmlhcylcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVM
ZXZlbChzLCBmbG9hdDIodXZ3LnggLyB1dncueiwgdXZ3LnkgLyB1dncueiksIDApO1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvakxvZF9iaWFzKFRl
eHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQ0IHV2dywgZmxvYXQgYmlhcylcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICBy
ZXR1cm4gdC5TYW1wbGVMZXZlbChzLCBmbG9hdDIodXZ3LnggLyB1dncudywgdXZ3LnkgLyB1dncu
dyksIDApO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJM
RSgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1Vc2VzVGV4dHVyZUN1YmVMb2QwKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZUxvZDAoc2Ft
cGxlckNVQkUgcywgZmxvYXQzIHQpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAg
ICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhDVUJFbG9kKHMsIGZsb2F0NCh0LngsIHQueSwg
dC56LCAwKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAg
ICAiXG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJl
Q3ViZUxvZDAoc2FtcGxlckNVQkUgcywgZmxvYXQzIHQpXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleENVQkVsb2Qo
cywgZmxvYXQ0KHQueCwgdC55LCB0LnosIDApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
In1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmVMb2Qw
KFRleHR1cmVDdWJlIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDMgdXZ3KVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0
LlNhbXBsZUxldmVsKHMsIHV2dywgMCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobVVzZXNUZXh0
dXJlQ3ViZUxvZDBfYmlhcykKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQg
Z2xfdGV4dHVyZUN1YmVMb2QwKHNhbXBsZXJDVUJFIHMsIGZsb2F0MyB0LCBmbG9hdCBiaWFzKVxu
IgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1
cm4gdGV4Q1VCRWxvZChzLCBmbG9hdDQodC54LCB0LnksIHQueiwgMCkpO1xuIgotICAgICAgICAg
ICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIGlm
IChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZUN1YmVMb2QwKHNhbXBsZXJDVUJFIHMs
IGZsb2F0MyB0LCBmbG9hdCBiaWFzKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhDVUJFbG9kKHMsIGZsb2F0NCh0
LngsIHQueSwgdC56LCAwKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlTG9kMChUZXh0dXJlQ3Vi
ZSB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dywgZmxvYXQgYmlhcylcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
dC5TYW1wbGVMZXZlbChzLCB1dncsIDApO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxu
IgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgICAvLyBW
ZXJ0ZXggc2hhZGVyCi0gICAgewotICAgICAgICBUU3RyaW5nIHVuaWZvcm1zOwotICAgICAgICBU
U3RyaW5nIGF0dHJpYnV0ZXM7Ci0gICAgICAgIFRTdHJpbmcgdmFyeWluZ3M7Ci0KLSAgICAgICAg
VFN5bWJvbFRhYmxlTGV2ZWwgKnN5bWJvbHMgPSBtQ29udGV4dC5zeW1ib2xUYWJsZS5nZXRHbG9i
YWxMZXZlbCgpOwogCi0gICAgICAgIGZvciAoVFN5bWJvbFRhYmxlTGV2ZWw6OmNvbnN0X2l0ZXJh
dG9yIG5hbWVkU3ltYm9sID0gc3ltYm9scy0+YmVnaW4oKTsgbmFtZWRTeW1ib2wgIT0gc3ltYm9s
cy0+ZW5kKCk7IG5hbWVkU3ltYm9sKyspCisgICAgICAgIGlmICh1c2luZ01SVEV4dGVuc2lvbiAm
JiBtTnVtUmVuZGVyVGFyZ2V0cyA+IDEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRT
eW1ib2wgKnN5bWJvbCA9ICgqbmFtZWRTeW1ib2wpLnNlY29uZDsKLSAgICAgICAgICAgIGNvbnN0
IFRTdHJpbmcgJm5hbWUgPSBzeW1ib2wtPmdldE5hbWUoKTsKLQotICAgICAgICAgICAgaWYgKHN5
bWJvbC0+aXNWYXJpYWJsZSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0
IFRWYXJpYWJsZSAqdmFyaWFibGUgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1i
b2wpOwotICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gdmFyaWFibGUtPmdldFR5
cGUoKTsKLSAgICAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9IHR5cGUuZ2V0UXVh
bGlmaWVyKCk7CisgICAgICAgICAgICBvdXQgPDwgIiNkZWZpbmUgR0xfVVNFU19NUlRcbiI7Cisg
ICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmIChxdWFsaWZpZXIgPT0gRXZxVW5pZm9ybSkK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtUmVmZXJlbmNlZFVu
aWZvcm1zLmZpbmQobmFtZS5jX3N0cigpKSAhPSBtUmVmZXJlbmNlZFVuaWZvcm1zLmVuZCgpKQot
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtcyAr
PSAidW5pZm9ybSAiICsgdHlwZVN0cmluZyh0eXBlKSArICIgIiArIGRlY29yYXRlVW5pZm9ybShu
YW1lLCB0eXBlKSArIGFycmF5U3RyaW5nKHR5cGUpICsgIjtcbiI7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocXVhbGlm
aWVyID09IEV2cUF0dHJpYnV0ZSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChtUmVmZXJlbmNlZEF0dHJpYnV0ZXMuZmluZChuYW1lLmNfc3RyKCkpICE9IG1SZWZl
cmVuY2VkQXR0cmlidXRlcy5lbmQoKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlcyArPSAic3RhdGljICIgKyB0eXBlU3RyaW5nKHR5cGUp
ICsgIiAiICsgZGVjb3JhdGUobmFtZSkgKyBhcnJheVN0cmluZyh0eXBlKSArICIgPSAiICsgaW5p
dGlhbGl6ZXIodHlwZSkgKyAiO1xuIjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxVmFyeWlu
Z091dCB8fCBxdWFsaWZpZXIgPT0gRXZxSW52YXJpYW50VmFyeWluZ091dCkKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtUmVmZXJlbmNlZFZhcnlpbmdzLmZpbmQo
bmFtZS5jX3N0cigpKSAhPSBtUmVmZXJlbmNlZFZhcnlpbmdzLmVuZCgpKQotICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBQcm9ncmFtIGxpbmtpbmcgZGVw
ZW5kcyBvbiB0aGlzIGV4YWN0IGZvcm1hdAotICAgICAgICAgICAgICAgICAgICAgICAgdmFyeWlu
Z3MgKz0gInN0YXRpYyAiICsgdHlwZVN0cmluZyh0eXBlKSArICIgIiArIGRlY29yYXRlKG5hbWUp
ICsgYXJyYXlTdHJpbmcodHlwZSkgKyAiID0gIiArIGluaXRpYWxpemVyKHR5cGUpICsgIjtcbiI7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAocXVhbGlmaWVyID09IEV2cUdsb2JhbCB8fCBxdWFsaWZpZXIgPT0gRXZxVGVt
cG9yYXJ5KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gR2xvYmFs
cyBhcmUgZGVjbGFyZWQgYW5kIGludGlhbGl6ZWQgYXMgYW4gYWdncmVnYXRlIG5vZGUKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVyID09IEV2cUNv
bnN0KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29uc3RhbnRz
IGFyZSByZXBlYXRlZCBhcyBsaXRlcmFscyB3aGVyZSB1c2VkCi0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgaWYgKG1Vc2VzRnJhZ0NvbG9yKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgIiNk
ZWZpbmUgR0xfVVNFU19GUkFHX0NPTE9SXG4iOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKG1V
c2VzRnJhZ0RhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiI2RlZmluZSBHTF9V
U0VTX0ZSQUdfREFUQVxuIjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlICAgLy8gVmVydGV4
IHNoYWRlcgorICAgIHsKICAgICAgICAgb3V0IDw8ICIvLyBBdHRyaWJ1dGVzXG4iOwogICAgICAg
ICBvdXQgPDwgIGF0dHJpYnV0ZXM7CiAgICAgICAgIG91dCA8PCAiXG4iCkBAIC00MTgsNzQgKzYz
OSwxOTQgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoKQogICAgICAgICBvdXQgPDwgIlxuIgog
ICAgICAgICAgICAgICAgIi8vIFZhcnlpbmdzXG4iOwogICAgICAgICBvdXQgPDwgIHZhcnlpbmdz
OwotICAgICAgICBvdXQgPDwgIlxuIgotICAgICAgICAgICAgICAgInVuaWZvcm0gZmxvYXQyIGR4
X0hhbGZQaXhlbFNpemU7XG4iCi0gICAgICAgICAgICAgICAiXG4iOwotICAgICAgICBvdXQgPDwg
IHVuaWZvcm1zOwogICAgICAgICBvdXQgPDwgIlxuIjsKLSAgICAgICAgCi0gICAgICAgIGlmICht
VXNlc1RleHR1cmUyRCkKKworICAgICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQogICAgICAgICB7
Ci0gICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkQoc2FtcGxlcjJEIHMsIGZs
b2F0MiB0KVxuIgorICAgICAgICAgICAgb3V0IDw8ICJzdHJ1Y3QgZ2xfRGVwdGhSYW5nZVBhcmFt
ZXRlcnNcbiIKICAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIg
ICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LngsIHQueSwgMCwgMCkpO1xuIgotICAgICAg
ICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBuZWFyO1xu
IgorICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZmFyO1xuIgorICAgICAgICAgICAgICAg
ICAgICIgICAgZmxvYXQgZGlmZjtcbiIKKyAgICAgICAgICAgICAgICAgICAifTtcbiIKICAgICAg
ICAgICAgICAgICAgICAiXG4iOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1Vc2VzVGV4dHVy
ZTJETG9kKQorICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKICAg
ICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJETG9kKHNhbXBs
ZXIyRCBzLCBmbG9hdDIgdCwgZmxvYXQgbG9kKVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4i
Ci0gICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCwg
dC55LCAwLCBsb2QpKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAg
aWYgKG1Vc2VzRGVwdGhSYW5nZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQg
PDwgImNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQzIGR4
X0RlcHRoUmFuZ2UgOiBwYWNrb2Zmc2V0KGMwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
In07XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobVVzZXNEZXB0
aFJhbmdlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAidW5pZm9ybSBm
bG9hdDMgZHhfRGVwdGhSYW5nZSA6IHJlZ2lzdGVyKGMwKTtcbiI7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIG91dCA8PCAidW5pZm9ybSBmbG9hdDQgZHhfVmlld0FkanVzdCA6IHJlZ2lz
dGVyKGMxKTtcbiIKICAgICAgICAgICAgICAgICAgICAiXG4iOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKG1Vc2VzVGV4dHVyZTJEUHJvaikKKyAgICAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkK
ICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihz
YW1wbGVyMkQgcywgZmxvYXQzIHQpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAg
ICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC56LCB0
LnkgLyB0LnosIDAsIDApKTtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAg
ICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IGdsX3RleHR1cmUyRFBy
b2ooc2FtcGxlcjJEIHMsIGZsb2F0NCB0KVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iCi0g
ICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQu
dywgdC55IC8gdC53LCAwLCAwKSk7XG4iCi0gICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAg
ICAgICAgIG91dCA8PCAic3RhdGljIGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIGdsX0RlcHRoUmFu
Z2UgPSB7ZHhfRGVwdGhSYW5nZS54LCBkeF9EZXB0aFJhbmdlLnksIGR4X0RlcHRoUmFuZ2Uuen07
XG4iCiAgICAgICAgICAgICAgICAgICAgIlxuIjsKICAgICAgICAgfQogCisgICAgICAgIG91dCA8
PCB1bmlmb3JtczsKKyAgICAgICAgb3V0IDw8ICJcbiI7CisgICAgICAgIAorICAgICAgICBpZiAo
bVVzZXNUZXh0dXJlMkQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9
PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8
ICJmbG9hdDQgZ2xfdGV4dHVyZTJEKHNhbXBsZXIyRCBzLCBmbG9hdDIgdClcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
dGV4MkRsb2QocywgZmxvYXQ0KHQueCwgdC55LCAwLCAwKSk7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUy
RChUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0MiB1dilcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5T
YW1wbGVMZXZlbChzLCB1diwgMCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobVVzZXNUZXh0dXJl
MkRMb2QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNM
OV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJmbG9hdDQg
Z2xfdGV4dHVyZTJETG9kKHNhbXBsZXIyRCBzLCBmbG9hdDIgdCwgZmxvYXQgbG9kKVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJl
dHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54LCB0LnksIDAsIGxvZCkpO1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09V
VFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90
ZXh0dXJlMkRMb2QoVGV4dHVyZTJEIHQsIFNhbXBsZXJTdGF0ZSBzLCBmbG9hdDIgdXYsIGZsb2F0
IGxvZClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCB1diwgbG9kKTtcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChtVXNlc1RleHR1cmUyRFByb2opCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgb3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihzYW1wbGVyMkQgcywgZmxv
YXQzIHQpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZsb2F0NCh0LnggLyB0LnosIHQueSAvIHQu
eiwgMCwgMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVy
ZTJEUHJvaihzYW1wbGVyMkQgcywgZmxvYXQ0IHQpXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMsIGZs
b2F0NCh0LnggLyB0LncsIHQueSAvIHQudywgMCwgMCkpO1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQ
cm9qKFRleHR1cmUyRCB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dylcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
dC5TYW1wbGVMZXZlbChzLCBmbG9hdDIodXZ3LnggLyB1dncueiwgdXZ3LnkgLyB1dncueiksIDAp
O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihU
ZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRlIHMsIGZsb2F0NCB1dncpXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHQuU2Ft
cGxlTGV2ZWwocywgZmxvYXQyKHV2dy54IC8gdXZ3LncsIHV2dy55IC8gdXZ3LncpLCAwKTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxu
IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIGlmIChtVXNlc1RleHR1cmUyRFByb2pMb2QpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmUyRFByb2pMb2Qoc2FtcGxlcjJEIHMs
IGZsb2F0MyB0LCBmbG9hdCBsb2QpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAg
ICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC56LCB0
LnkgLyB0LnosIDAsIGxvZCkpO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAg
ICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICJmbG9hdDQgZ2xfdGV4dHVyZTJE
UHJvakxvZChzYW1wbGVyMkQgcywgZmxvYXQ0IHQsIGZsb2F0IGxvZClcbiIKLSAgICAgICAgICAg
ICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleDJEbG9kKHMs
IGZsb2F0NCh0LnggLyB0LncsIHQueSAvIHQudywgMCwgbG9kKSk7XG4iCi0gICAgICAgICAgICAg
ICAgICAgIn1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYgKG1P
dXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qTG9kKHNhbXBsZXIyRCBzLCBmbG9h
dDMgdCwgZmxvYXQgbG9kKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXgyRGxvZChzLCBmbG9hdDQodC54IC8gdC56
LCB0LnkgLyB0LnosIDAsIGxvZCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAifVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICJmbG9h
dDQgZ2xfdGV4dHVyZTJEUHJvakxvZChzYW1wbGVyMkQgcywgZmxvYXQ0IHQsIGZsb2F0IGxvZClc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
IiAgICByZXR1cm4gdGV4MkRsb2QocywgZmxvYXQ0KHQueCAvIHQudywgdC55IC8gdC53LCAwLCBs
b2QpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRU
eXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
b3V0IDw8ICJmbG9hdDQgZ2xfdGV4dHVyZTJEUHJvaihUZXh0dXJlMkQgdCwgU2FtcGxlclN0YXRl
IHMsIGZsb2F0MyB1dncsIGZsb2F0IGxvZClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCBm
bG9hdDIodXZ3LnggLyB1dncueiwgdXZ3LnkgLyB1dncueiksIGxvZCk7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgImZsb2F0NCBnbF90ZXh0dXJlMkRQcm9qKFRleHR1cmUyRCB0LCBTYW1w
bGVyU3RhdGUgcywgZmxvYXQ0IHV2dylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCBmbG9h
dDIodXZ3LnggLyB1dncudywgdXZ3LnkgLyB1dncudyksIGxvZCk7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAobVVzZXNUZXh0dXJlQ3ViZSkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICJm
bG9hdDQgZ2xfdGV4dHVyZUN1YmUoc2FtcGxlckNVQkUgcywgZmxvYXQzIHQpXG4iCi0gICAgICAg
ICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB0ZXhDVUJF
bG9kKHMsIGZsb2F0NCh0LngsIHQueSwgdC56LCAwKSk7XG4iCi0gICAgICAgICAgICAgICAgICAg
In1cbiIKLSAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgaWYgKG1PdXRwdXRU
eXBlID09IFNIX0hMU0w5X09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBv
dXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZShzYW1wbGVyQ1VCRSBzLCBmbG9hdDMgdClcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICByZXR1cm4gdGV4Q1VCRWxvZChzLCBmbG9hdDQodC54LCB0LnksIHQueiwgMCkpO1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExT
TDExX09VVFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0
NCBnbF90ZXh0dXJlQ3ViZShUZXh0dXJlQ3ViZSB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2
dylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIiAgICByZXR1cm4gdC5TYW1wbGVMZXZlbChzLCB1dncsIDApO1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKG1Vc2VzVGV4dHVyZUN1YmVMb2QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8
PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlTG9kKHNhbXBsZXJDVUJFIHMsIGZsb2F0MyB0LCBmbG9h
dCBsb2QpXG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAgICAi
ICAgIHJldHVybiB0ZXhDVUJFbG9kKHMsIGZsb2F0NCh0LngsIHQueSwgdC56LCBsb2QpKTtcbiIK
LSAgICAgICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgICAgICJcbiI7CisgICAg
ICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIG91dCA8PCAiZmxvYXQ0IGdsX3RleHR1cmVDdWJlTG9kKHNhbXBs
ZXJDVUJFIHMsIGZsb2F0MyB0LCBmbG9hdCBsb2QpXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHRleENVQkVsb2Qocywg
ZmxvYXQ0KHQueCwgdC55LCB0LnosIGxvZCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAi
fVxuIgorICAgICAgICAgICAgICAgICAgICAgICAiXG4iOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBVVCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgImZsb2F0NCBnbF90ZXh0dXJlQ3ViZUxvZChU
ZXh0dXJlQ3ViZSB0LCBTYW1wbGVyU3RhdGUgcywgZmxvYXQzIHV2dywgZmxvYXQgbG9kKVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiB0LlNhbXBsZUxldmVsKHMsIHV2dywgbG9kKTtcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
NTA5LDE4ICs4NTAsMTQgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoKQogICAgICAgICBvdXQg
PDwgIiNkZWZpbmUgR0xfVVNFU19QT0lOVF9TSVpFXG4iOwogICAgIH0KIAorICAgIGlmIChtVXNl
c0ZyYWdEZXB0aCkKKyAgICB7CisgICAgICAgIG91dCA8PCAiI2RlZmluZSBHTF9VU0VTX0ZSQUdf
REVQVEhcbiI7CisgICAgfQorCiAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkKICAgICB7Ci0gICAg
ICAgIG91dCA8PCAic3RydWN0IGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzXG4iCi0gICAgICAgICAg
ICAgICAie1xuIgotICAgICAgICAgICAgICAgIiAgICBmbG9hdCBuZWFyO1xuIgotICAgICAgICAg
ICAgICAgIiAgICBmbG9hdCBmYXI7XG4iCi0gICAgICAgICAgICAgICAiICAgIGZsb2F0IGRpZmY7
XG4iCi0gICAgICAgICAgICAgICAifTtcbiIKLSAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAg
ICAgICAgICJ1bmlmb3JtIGZsb2F0MyBkeF9EZXB0aFJhbmdlOyIKLSAgICAgICAgICAgICAgICJz
dGF0aWMgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnMgZ2xfRGVwdGhSYW5nZSA9IHtkeF9EZXB0aFJh
bmdlLngsIGR4X0RlcHRoUmFuZ2UueSwgZHhfRGVwdGhSYW5nZS56fTtcbiIKLSAgICAgICAgICAg
ICAgICJcbiI7CisgICAgICAgIG91dCA8PCAiI2RlZmluZSBHTF9VU0VTX0RFUFRIX1JBTkdFXG4i
OwogICAgIH0KIAogICAgIGlmIChtVXNlc1hvcikKQEAgLTgxMywxMCArMTE1MCwxMiBAQCB2b2lk
IE91dHB1dEhMU0w6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1iCiAgICAgaWYgKG5hbWUgPT0gImds
X0ZyYWdDb2xvciIpCiAgICAgewogICAgICAgICBvdXQgPDwgImdsX0NvbG9yWzBdIjsKKyAgICAg
ICAgbVVzZXNGcmFnQ29sb3IgPSB0cnVlOwogICAgIH0KICAgICBlbHNlIGlmIChuYW1lID09ICJn
bF9GcmFnRGF0YSIpCiAgICAgewogICAgICAgICBvdXQgPDwgImdsX0NvbG9yIjsKKyAgICAgICAg
bVVzZXNGcmFnRGF0YSA9IHRydWU7CiAgICAgfQogICAgIGVsc2UgaWYgKG5hbWUgPT0gImdsX0Rl
cHRoUmFuZ2UiKQogICAgIHsKQEAgLTg0MywyMyArMTE4MiwyOCBAQCB2b2lkIE91dHB1dEhMU0w6
OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1iCiAgICAgICAgIG1Vc2VzUG9pbnRTaXplID0gdHJ1ZTsK
ICAgICAgICAgb3V0IDw8IG5hbWU7CiAgICAgfQorICAgIGVsc2UgaWYgKG5hbWUgPT0gImdsX0Zy
YWdEZXB0aEVYVCIpCisgICAgeworICAgICAgICBtVXNlc0ZyYWdEZXB0aCA9IHRydWU7CisgICAg
ICAgIG91dCA8PCAiZ2xfRGVwdGgiOworICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgICBU
UXVhbGlmaWVyIHF1YWxpZmllciA9IG5vZGUtPmdldFF1YWxpZmllcigpOwogCiAgICAgICAgIGlm
IChxdWFsaWZpZXIgPT0gRXZxVW5pZm9ybSkKICAgICAgICAgewotICAgICAgICAgICAgbVJlZmVy
ZW5jZWRVbmlmb3Jtcy5pbnNlcnQobmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIG1SZWZlcmVu
Y2VkVW5pZm9ybXNbbmFtZV0gPSBub2RlOwogICAgICAgICAgICAgb3V0IDw8IGRlY29yYXRlVW5p
Zm9ybShuYW1lLCBub2RlLT5nZXRUeXBlKCkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYg
KHF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1SZWZl
cmVuY2VkQXR0cmlidXRlcy5pbnNlcnQobmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIG1SZWZl
cmVuY2VkQXR0cmlidXRlc1tuYW1lXSA9IG5vZGU7CiAgICAgICAgICAgICBvdXQgPDwgZGVjb3Jh
dGUobmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVyID09IEV2cVZh
cnlpbmdPdXQgfHwgcXVhbGlmaWVyID09IEV2cUludmFyaWFudFZhcnlpbmdPdXQgfHwgcXVhbGlm
aWVyID09IEV2cVZhcnlpbmdJbiB8fCBxdWFsaWZpZXIgPT0gRXZxSW52YXJpYW50VmFyeWluZ0lu
KQogICAgICAgICB7Ci0gICAgICAgICAgICBtUmVmZXJlbmNlZFZhcnlpbmdzLmluc2VydChuYW1l
LmNfc3RyKCkpOworICAgICAgICAgICAgbVJlZmVyZW5jZWRWYXJ5aW5nc1tuYW1lXSA9IG5vZGU7
CiAgICAgICAgICAgICBvdXQgPDwgZGVjb3JhdGUobmFtZSk7CiAgICAgICAgIH0KICAgICAgICAg
ZWxzZQpAQCAtOTUyLDcgKzEyOTYsMTAgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShW
aXNpdCB2aXNpdAogICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKICAgICAgICAgaWYg
KHZpc2l0ID09IEluVmlzaXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAiLiIgKyBk
ZWNvcmF0ZUZpZWxkKG5vZGUtPmdldFR5cGUoKS5nZXRGaWVsZE5hbWUoKSwgbm9kZS0+Z2V0TGVm
dCgpLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7CisgICAgICAgICAgICBj
b25zdCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogaW5kZXggPSBub2RlLT5nZXRSaWdodCgpLT5nZXRB
c0NvbnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgIGNvbnN0IFRGaWVsZCogZmllbGQgPSBzdHJ1
Y3R1cmUtPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOworICAgICAgICAgICAgb3V0IDw8
ICIuIiArIGRlY29yYXRlRmllbGQoZmllbGQtPm5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRU
eXBlKCkpOwogCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTk3NCw3
ICsxMzIxLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdAogCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KQogICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgaSA9IGVsZW1lbnQtPmdldFVuaW9uQXJyYXlQb2lu
dGVyKClbMF0uZ2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaSA9IGVs
ZW1lbnQtPmdldElDb25zdCgwKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChp
KQogICAgICAgICAgICAgICAgICAgICAgICAgewpAQCAtMTAyMSwxOCArMTM2OCwxOCBAQCBib29s
IE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0CiAgICAgICAgICAgICAgICAgb3V0
IDw8ICIhKCI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlTGlzdCAq
ZmllbGRzID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7CisgICAgICAg
ICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUo
KS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZmllbGRzLT5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNvbnN0IFRUeXBlICpmaWVsZFR5cGUgPSAoKmZpZWxkcylbaV0udHlwZTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ldOwogCiAgICAgICAgICAgICAgICAg
bm9kZS0+Z2V0TGVmdCgpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgICAgICBvdXQgPDwg
Ii4iICsgZGVjb3JhdGVGaWVsZChmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpLCBub2RlLT5nZXRM
ZWZ0KCktPmdldFR5cGUoKSkgKyAiID09ICI7CisgICAgICAgICAgICAgICAgb3V0IDw8ICIuIiAr
IGRlY29yYXRlRmllbGQoZmllbGQtPm5hbWUoKSwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkp
ICsgIiA9PSAiOwogICAgICAgICAgICAgICAgIG5vZGUtPmdldFJpZ2h0KCktPnRyYXZlcnNlKHRo
aXMpOwotICAgICAgICAgICAgICAgIG91dCA8PCAiLiIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkVHlw
ZS0+Z2V0RmllbGROYW1lKCksIG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpKTsKKyAgICAgICAg
ICAgICAgICBvdXQgPDwgIi4iICsgZGVjb3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCBub2RlLT5n
ZXRMZWZ0KCktPmdldFR5cGUoKSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoaSA8IGZpZWxkcy0+
c2l6ZSgpIC0gMSkKKyAgICAgICAgICAgICAgICBpZiAoaSA8IGZpZWxkcy5zaXplKCkgLSAxKQog
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgJiYgIjsKICAg
ICAgICAgICAgICAgICB9CkBAIC0xMjM4LDcgKzE1ODUsNyBAQCBib29sIE91dHB1dEhMU0w6OnZp
c2l0QWdncmVnYXRlKFZpc2l0IHZpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtSW5zaWRl
RnVuY3Rpb24pCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVj
dGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3Rp
dmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAi
e1xuIjsKIAogICAgICAgICAgICAgICAgIG1TY29wZURlcHRoKys7CkBAIC0xMjU1LDcgKzE2MDIs
NyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpCiAKICAgICAgICAg
ICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBzaXQgPSBub2RlLT5nZXRTZXF1ZW5j
ZSgpLmJlZ2luKCk7IHNpdCAhPSBub2RlLT5nZXRTZXF1ZW5jZSgpLmVuZCgpOyBzaXQrKykKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKCgqc2l0KS0+
Z2V0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKCgqc2l0KS0+
Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogCiAgICAgICAgICAgICAgICAgdHJhdmVyc2VTdGF0ZW1l
bnRzKCpzaXQpOwogCkBAIC0xMjY0LDcgKzE2MTEsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0
QWdncmVnYXRlKFZpc2l0IHZpCiAKICAgICAgICAgICAgIGlmIChtSW5zaWRlRnVuY3Rpb24pCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5n
ZXRFbmRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+
Z2V0TGluZSgpLmxhc3RfbGluZSk7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICJ9XG4iOwogCiAg
ICAgICAgICAgICAgICAgbVNjb3BlRGVwdGgtLTsKQEAgLTEyNzcsMTMgKzE2MjQsMTIgQEAgYm9v
bCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICB7CiAgICAgICAg
ICAgICBUSW50ZXJtU2VxdWVuY2UgJnNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKICAg
ICAgICAgICAgIFRJbnRlcm1UeXBlZCAqdmFyaWFibGUgPSBzZXF1ZW5jZVswXS0+Z2V0QXNUeXBl
ZCgpOwotICAgICAgICAgICAgYm9vbCB2aXNpdCA9IHRydWU7CiAKICAgICAgICAgICAgIGlmICh2
YXJpYWJsZSAmJiAodmFyaWFibGUtPmdldFF1YWxpZmllcigpID09IEV2cVRlbXBvcmFyeSB8fCB2
YXJpYWJsZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxR2xvYmFsKSkKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBpZiAodmFyaWFibGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSkKICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZENvbnN0cnVjdG9yKHZhcmlhYmxl
LT5nZXRUeXBlKCksIHNjb3BlZFN0cnVjdCh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFR5cGVOYW1l
KCkpLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RydWN0b3IodmFyaWFibGUt
PmdldFR5cGUoKSwgc2NvcGVkU3RydWN0KHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkt
Pm5hbWUoKSksIE5VTEwpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlm
ICghdmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpIHx8IHZhcmlhYmxlLT5nZXRBc1N5bWJvbE5v
ZGUoKS0+Z2V0U3ltYm9sKCkgIT0gIiIpICAgLy8gVmFyaWFibGUgZGVjbGFyYXRpb24KQEAgLTEz
MTAsMTkgKzE2NTYsMTEgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2
aQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqc2l0KS0+dHJhdmVyc2UodGhpcyk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2
aXNpdCAmJiB0aGlzLT5pblZpc2l0KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpzaXQg
IT0gc2VxdWVuY2UuYmFjaygpKQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgqc2l0ICE9IHNlcXVlbmNlLmJhY2soKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZp
c2l0ID0gdGhpcy0+dmlzaXRBZ2dyZWdhdGUoSW5WaXNpdCwgbm9kZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLCAi
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0ICYmIHRoaXMtPnBvc3RWaXNpdCkKLSAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+dmlzaXRBZ2dyZWdh
dGUoUG9zdFZpc2l0LCBub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2Rl
KCkgJiYgdmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKSA9PSAiIikgICAv
LyBUeXBlIChzdHJ1Y3QpIGRlY2xhcmF0aW9uCiAgICAgICAgICAgICAgICAgewpAQCAtMTMzMCw3
ICsxNjY4LDI0IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmkKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgCisgICAgICAgICAgICBlbHNlIGlmICh2YXJpYWJsZSAm
JiAodmFyaWFibGUtPmdldFF1YWxpZmllcigpID09IEV2cVZhcnlpbmdPdXQgfHwgdmFyaWFibGUt
PmdldFF1YWxpZmllcigpID09IEV2cUludmFyaWFudFZhcnlpbmdPdXQpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBzaXQgPSBz
ZXF1ZW5jZS5iZWdpbigpOyBzaXQgIT0gc2VxdWVuY2UuZW5kKCk7IHNpdCsrKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gKCpz
aXQpLT5nZXRBc1N5bWJvbE5vZGUoKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoc3ltYm9s
KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBWZXJ0
ZXggKG91dHB1dCkgdmFyeWluZ3Mgd2hpY2ggYXJlIGRlY2xhcmVkIGJ1dCBub3Qgd3JpdHRlbiB0
byBzaG91bGQgc3RpbGwgYmUgZGVjbGFyZWQgdG8gYWxsb3cgc3VjY2Vzc2Z1bCBsaW5raW5nCisg
ICAgICAgICAgICAgICAgICAgICAgICBtUmVmZXJlbmNlZFZhcnlpbmdzW3N5bWJvbC0+Z2V0U3lt
Ym9sKCldID0gc3ltYm9sOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
KCpzaXQpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHZpc2l0ID09IEluVmlzaXQpCkBAIC0xNDAxLDcgKzE3
NTYsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpCiAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sLT5nZXRUeXBlKCkuZ2V0
U3RydWN0KCkpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGFkZENvbnN0cnVjdG9yKHN5bWJvbC0+Z2V0VHlwZSgpLCBzY29wZWRTdHJ1Y3Qoc3ltYm9sLT5n
ZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSksIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAg
YWRkQ29uc3RydWN0b3Ioc3ltYm9sLT5nZXRUeXBlKCksIHNjb3BlZFN0cnVjdChzeW1ib2wtPmdl
dFR5cGUoKS5nZXRTdHJ1Y3QoKS0+bmFtZSgpKSwgTlVMTCk7CiAgICAgICAgICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgICAgICAgICBvdXQgPDwgYXJndW1lbnRTdHJpbmcoc3ltYm9sKTsK
QEAgLTE0NDEsMTUxICsxNzk2LDE2MyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRl
KFZpc2l0IHZpCiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BGdW5jdGlvbkNhbGw6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBUU3RyaW5nIG5hbWUgPSBURnVuY3Rpb246OnVubWFuZ2xlTmFt
ZShub2RlLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgIGJvb2wgbG9kMCA9IG1JbnNpZGVE
aXNjb250aW51b3VzTG9vcCB8fCBtT3V0cHV0TG9kMEZ1bmN0aW9uOworICAgICAgICAgICAgVFN0
cmluZyBuYW1lID0gVEZ1bmN0aW9uOjp1bm1hbmdsZU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKKyAg
ICAgICAgICAgIGJvb2wgbG9kMCA9IG1JbnNpZGVEaXNjb250aW51b3VzTG9vcCB8fCBtT3V0cHV0
TG9kMEZ1bmN0aW9uOwogCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmlzVXNlckRlZmluZWQo
KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG91dCA8PCBkZWNvcmF0
ZShuYW1lKSA8PCAobG9kMCA/ICJMb2QwKCIgOiAiKCIpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAobm9kZS0+aXNVc2VyRGVmaW5lZCgp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCBkZWNvcmF0ZShuYW1lKSA8
PCAobG9kMCA/ICJMb2QwKCIgOiAiKCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChuYW1lID09ICJ0ZXh0dXJlMkQi
KQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gInRl
eHR1cmUyRCIpCisgICAgICAgICAgICAgICAgICAgIGlmICghbG9kMCkKICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2QwKQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDIpCiAgICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNl
c1RleHR1cmUyRF9iaWFzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlMkQoIjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUyRCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQogICAgICAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRMb2QwID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1Vc2VzVGV4dHVyZTJETG9kMF9iaWFzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlMkRMb2QwKCI7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRfYmlhcyA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IFVOUkVBQ0hBQkxFKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4
dHVyZTJEKCI7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAobmFtZSA9PSAidGV4dHVyZTJEUHJvaiIpCisgICAgICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2Qw
KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgp
ID09IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDIpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1Rl
eHR1cmUyRFByb2ogPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUo
KSA9PSAzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRQcm9qX2JpYXMgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVO
UkVBQ0hBQkxFKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3Rl
eHR1cmUyRFByb2ooIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUy
RExvZDAgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0
U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0g
MikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1Vc2VzVGV4dHVyZTJEUHJvakxvZDAgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChub2Rl
LT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlMkRQcm9qTG9k
MF9iaWFzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlMkRQcm9qTG9kMCgiOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJETG9kMF9iaWFzID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFC
TEUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlMkRMb2Qw
KCI7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
bmFtZSA9PSAidGV4dHVyZUN1YmUiKQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlMkRQcm9qIikKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghbG9kMCkKICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2QwKQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDIpCiAgICAgICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNl
KCkuc2l6ZSgpID09IDIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmVDdWJlID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZUN1
YmVfYmlhcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZUN1YmUoIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtVXNlc1RleHR1cmUyRFByb2ogPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZUN1YmVMb2QwID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1Vc2VzVGV4dHVyZUN1YmVMb2QwX2JpYXMgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImdsX3RleHR1cmVDdWJlTG9k
MCgiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJEUHJval9iaWFz
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8
ICJnbF90ZXh0dXJlMkRQcm9qKCI7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAidGV4dHVyZTJETG9kIikKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJE
UHJvakxvZDAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKICAg
ICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNl
c1RleHR1cmUyRExvZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNU
ZXh0dXJlMkRQcm9qTG9kMF9iaWFzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKIAotICAgICAgICAg
ICAgICAgICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlMkRMb2QoIjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJEUHJvakxvZDAoIjsKICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlMkRQ
cm9qTG9kIikKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobmFt
ZSA9PSAidGV4dHVyZUN1YmUiKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFsb2QwKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKQorICAgICAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVy
ZUN1YmUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1Rl
eHR1cmUyRFByb2pMb2QgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2Vz
VGV4dHVyZUN1YmVfYmlhcyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZTJEUHJvakxvZCgiOworICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0IDw8ICJnbF90ZXh0dXJlQ3ViZSgiOwogICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gInRleHR1cmVDdWJlTG9kIikK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAy
KQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1Vc2VzVGV4dHVyZUN1YmVMb2QwID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6
ZSgpID09IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbVVzZXNUZXh0dXJlQ3ViZUxvZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbVVzZXNUZXh0dXJlQ3ViZUxvZDBfYmlhcyA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7
CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZUN1YmVMb2QoIjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4dHVyZUN1YmVMb2QwKCI7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAobmFtZSA9PSAidGV4dHVyZTJETG9kIikKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAzKQorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBtVXNlc1RleHR1cmUy
RExvZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ZWxzZSBVTlJFQUNIQUJMRSgpOworCisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4
dHVyZTJETG9kKCI7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYg
KG5hbWUgPT0gInRleHR1cmUyRFByb2pMb2QiKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmdldFNlcXVlbmNlKCkuc2l6ZSgpID09IDMpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VzVGV4dHVyZTJEUHJv
akxvZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ZWxzZSBVTlJFQUNIQUJMRSgpOworCisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4
dHVyZTJEUHJvakxvZCgiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChuYW1lID09ICJ0ZXh0dXJlQ3ViZUxvZCIpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0U2VxdWVuY2UoKS5zaXplKCkgPT0gMykKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgbVVzZXNUZXh0dXJlQ3Vi
ZUxvZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ZWxzZSBVTlJFQUNIQUJMRSgpOworCisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiZ2xfdGV4
dHVyZUN1YmVMb2QoIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBV
TlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAodmlzaXQg
PT0gSW5WaXNpdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKKworICAgICAgICAgICAgVEludGVybVNl
cXVlbmNlICZhcmd1bWVudHMgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOworCisgICAgICAgICAgICBm
b3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3IgYXJnID0gYXJndW1lbnRzLmJlZ2luKCk7IGFy
ZyAhPSBhcmd1bWVudHMuZW5kKCk7IGFyZysrKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIG91dCA8PCAiKSI7CisgICAgICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hM
U0wxMV9PVVRQVVQgJiYgSXNTYW1wbGVyKCgqYXJnKS0+Z2V0QXNUeXBlZCgpLT5nZXRCYXNpY1R5
cGUoKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBvdXQgPDwgInRl
eHR1cmVfIjsKKyAgICAgICAgICAgICAgICAgICAgKCphcmcpLT50cmF2ZXJzZSh0aGlzKTsKKyAg
ICAgICAgICAgICAgICAgICAgb3V0IDw8ICIsIHNhbXBsZXJfIjsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAoKmFyZyktPnRyYXZlcnNlKHRoaXMpOworCisgICAgICAgICAg
ICAgICAgaWYgKGFyZyA8IGFyZ3VtZW50cy5lbmQoKSAtIDEpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIG91dCA8PCAiKSI7CisKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wUGFyYW1l
dGVyczogICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIigiLCAiLCAiLCAiKVxue1xuIik7ICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTY1MCw4ICsyMDE3LDggQEAgYm9vbCBPdXRwdXRITFNMOjp2
aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aQogICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAibWF0
NCgiLCAiLCAiLCAiKSIpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wQ29uc3RydWN0
U3RydWN0OgotICAgICAgICBhZGRDb25zdHJ1Y3Rvcihub2RlLT5nZXRUeXBlKCksIHNjb3BlZFN0
cnVjdChub2RlLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSksICZub2RlLT5nZXRTZXF1ZW5jZSgp
KTsKLSAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgc3RydWN0TG9va3VwKG5vZGUtPmdldFR5
cGUoKS5nZXRUeXBlTmFtZSgpKSArICJfY3RvcigiLCAiLCAiLCAiKSIpOworICAgICAgICBhZGRD
b25zdHJ1Y3Rvcihub2RlLT5nZXRUeXBlKCksIHNjb3BlZFN0cnVjdChub2RlLT5nZXRUeXBlKCku
Z2V0U3RydWN0KCktPm5hbWUoKSksICZub2RlLT5nZXRTZXF1ZW5jZSgpKTsKKyAgICAgICAgb3V0
cHV0VHJpcGxldCh2aXNpdCwgc3RydWN0TG9va3VwKG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3Qo
KS0+bmFtZSgpKSArICJfY3RvcigiLCAiLCAiLCAiKSIpOwogICAgICAgICBicmVhazsKICAgICAg
IGNhc2UgRU9wTGVzc1RoYW46ICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIigiLCAiIDwg
IiwgIikiKTsgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BHcmVhdGVyVGhh
bjogICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgPiAiLCAiKSIpOyAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xNzQxLDcgKzIxMDgsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0
U2VsZWN0aW9uKFZpc2l0IHZpCiAKICAgICAgICAgb3V0IDw8ICIpXG4iOwogICAgICAgICAKLSAg
ICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRw
dXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0
IDw8ICJ7XG4iOwogCiAgICAgICAgIGlmIChub2RlLT5nZXRUcnVlQmxvY2soKSkKQEAgLTE3NDks
MjAgKzIxMTYsMjAgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdFNlbGVjdGlvbihWaXNpdCB2aQog
ICAgICAgICAgICAgdHJhdmVyc2VTdGF0ZW1lbnRzKG5vZGUtPmdldFRydWVCbG9jaygpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsK
KyAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7
CiAgICAgICAgIG91dCA8PCAiO1xufVxuIjsKIAogICAgICAgICBpZiAobm9kZS0+Z2V0RmFsc2VC
bG9jaygpKQogICAgICAgICB7CiAgICAgICAgICAgICBvdXQgPDwgImVsc2VcbiI7CiAKLSAgICAg
ICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5l
KCkpOworICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2Nr
KCktPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgICAgIG91dCA8PCAie1xuIjsKIAot
ICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdl
dExpbmUoKSk7CisgICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNl
QmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgdHJhdmVyc2VTdGF0
ZW1lbnRzKG5vZGUtPmdldEZhbHNlQmxvY2soKSk7CiAKLSAgICAgICAgICAgIG91dHB1dExpbmVE
aXJlY3RpdmUobm9kZS0+Z2V0RmFsc2VCbG9jaygpLT5nZXRMaW5lKCkpOworICAgICAgICAgICAg
b3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKS5maXJz
dF9saW5lKTsKICAgICAgICAgICAgIG91dCA8PCAiO1xufVxuIjsKICAgICAgICAgfQogICAgIH0K
QEAgLTE3ODQsOSArMjE1MSwxMiBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2
aXNpdCwgCiAgICAgICAgIG1JbnNpZGVEaXNjb250aW51b3VzTG9vcCA9IGNvbnRhaW5zTG9vcERp
c2NvbnRpbnVpdHkobm9kZSk7CiAgICAgfQogCi0gICAgaWYgKGhhbmRsZUV4Y2Vzc2l2ZUxvb3Ao
bm9kZSkpCisgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGhhbmRsZUV4Y2Vzc2l2ZUxvb3Aobm9k
ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG1Cb2R5OwpAQCAtMTc5NSw3ICsyMTY1LDcg
QEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIAogICAgIHsKICAgICAg
ICAgb3V0IDw8ICJ7ZG9cbiI7CiAKLSAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5n
ZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5m
aXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8ICJ7XG4iOwogICAgIH0KICAgICBlbHNlCkBAIC0x
ODIzLDcgKzIxOTMsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwg
CiAKICAgICAgICAgb3V0IDw8ICIpXG4iOwogICAgICAgICAKLSAgICAgICAgb3V0cHV0TGluZURp
cmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5v
ZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICAgICAgb3V0IDw8ICJ7XG4iOwogICAgIH0K
IApAQCAtMTgzMiwxMiArMjIwMiwxMiBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0TG9vcChWaXNp
dCB2aXNpdCwgCiAgICAgICAgIHRyYXZlcnNlU3RhdGVtZW50cyhub2RlLT5nZXRCb2R5KCkpOwog
ICAgIH0KIAotICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICBv
dXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKICAgICBvdXQg
PDwgIjt9XG4iOwogCiAgICAgaWYgKG5vZGUtPmdldFR5cGUoKSA9PSBFTG9vcERvV2hpbGUpCiAg
ICAgewotICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENvbmRpdGlvbigpLT5n
ZXRMaW5lKCkpOworICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldENvbmRpdGlv
bigpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAid2hpbGUoXG4iOwog
CiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKQEAgLTE5Nzcs
NyArMjM0Nyw3IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcChUSW4KICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0
SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBzeW1ib2w7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbCA9IGNvbnN0YW50LT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpWzBdLmdldElDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluaXRpYWwgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTk5OSw3
ICsyMzY5LDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgogICAg
ICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50ICYmIGNv
bnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICBjb21wYXJhdG9yID0gdGVzdC0+Z2V0T3AoKTsKLSAgICAgICAgICAgICAg
ICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29u
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgbGltaXQgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDAp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjAyMCw3
ICsyMzkwLDcgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbgogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkg
PT0gRWJ0SW50ICYmIGNvbnN0YW50LT5nZXROb21pbmFsU2l6ZSgpID09IDEpCiAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSBjb25zdGFudC0+Z2V0VW5p
b25BcnJheVBvaW50ZXIoKVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50
IHZhbHVlID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKG9wKQogICAgICAgICAgICAgICAgICAgICB7CkBAIC0yMTA5LDcgKzI0NzksNyBAQCBi
b29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAgICAg
b3V0IDw8IGluY3JlbWVudDsKICAgICAgICAgICAgICAgICBvdXQgPDwgIilcbiI7CiAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRM
aW5lKCkpOworICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGlu
ZSgpLmZpcnN0X2xpbmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAie1xuIjsKIAogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5nZXRCb2R5KCkpCkBAIC0yMTE3LDcgKzI0ODcsNyBAQCBib29s
IE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluCiAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmdldEJvZHkoKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkpOworICAg
ICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xp
bmUpOwogICAgICAgICAgICAgICAgIG91dCA8PCAiO31cbiI7CiAKICAgICAgICAgICAgICAgICBp
ZiAoIWZpcnN0TG9vcEZyYWdtZW50KQpAQCAtMjE5Miw2ICsyNTYyLDEyIEBAIFRTdHJpbmcgT3V0
cHV0SExTTDo6YXJndW1lbnRTdHJpbmcoY29uc3QKICAgICAgICAgbmFtZSA9IGRlY29yYXRlKG5h
bWUpOwogICAgIH0KIAorICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUICYm
IElzU2FtcGxlcih0eXBlLmdldEJhc2ljVHlwZSgpKSkKKyAgICB7CisgICAgICAgcmV0dXJuIHF1
YWxpZmllclN0cmluZyhxdWFsaWZpZXIpICsgIiAiICsgdGV4dHVyZVN0cmluZyh0eXBlKSArICIg
dGV4dHVyZV8iICsgbmFtZSArIGFycmF5U3RyaW5nKHR5cGUpICsgIiwgIiArCisgICAgICAgICAg
ICAgIHF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpICsgIiBTYW1wbGVyU3RhdGUgc2FtcGxlcl8i
ICsgbmFtZSArIGFycmF5U3RyaW5nKHR5cGUpOworICAgIH0KKwogICAgIHJldHVybiBxdWFsaWZp
ZXJTdHJpbmcocXVhbGlmaWVyKSArICIgIiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBuYW1l
ICsgYXJyYXlTdHJpbmcodHlwZSk7CiB9CiAKQEAgLTIyMTMsMjIgKzI1ODksMjMgQEAgVFN0cmlu
ZyBPdXRwdXRITFNMOjp0eXBlU3RyaW5nKGNvbnN0IFRUeQogewogICAgIGlmICh0eXBlLmdldEJh
c2ljVHlwZSgpID09IEVidFN0cnVjdCkKICAgICB7Ci0gICAgICAgIGlmICh0eXBlLmdldFR5cGVO
YW1lKCkgIT0gIiIpCisgICAgICAgIGNvbnN0IFRTdHJpbmcmIHR5cGVOYW1lID0gdHlwZS5nZXRT
dHJ1Y3QoKS0+bmFtZSgpOworICAgICAgICBpZiAodHlwZU5hbWUgIT0gIiIpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBzdHJ1Y3RMb29rdXAodHlwZS5nZXRUeXBlTmFtZSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBzdHJ1Y3RMb29rdXAodHlwZU5hbWUpOwogICAgICAgICB9CiAgICAg
ICAgIGVsc2UgICAvLyBOYW1lbGVzcyBzdHJ1Y3R1cmUsIGRlZmluZSBpbiBwbGFjZQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZUxpc3QgJmZpZWxkcyA9ICp0eXBlLmdldFN0cnVj
dCgpOworICAgICAgICAgICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1
Y3QoKS0+ZmllbGRzKCk7CiAKICAgICAgICAgICAgIFRTdHJpbmcgc3RyaW5nID0gInN0cnVjdFxu
IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIjsKIAogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJmZpZWxkID0gKmZpZWxkc1tpXS50eXBl
OworICAgICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CiAKLSAg
ICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAgICAiICsgdHlwZVN0cmluZyhmaWVsZCkgKyAiICIg
KyBkZWNvcmF0ZShmaWVsZC5nZXRGaWVsZE5hbWUoKSkgKyBhcnJheVN0cmluZyhmaWVsZCkgKyAi
O1xuIjsKKyAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAgICAiICsgdHlwZVN0cmluZygqZmll
bGQtPnR5cGUoKSkgKyAiICIgKyBkZWNvcmF0ZShmaWVsZC0+bmFtZSgpKSArIGFycmF5U3RyaW5n
KCpmaWVsZC0+dHlwZSgpKSArICI7XG4iOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBz
dHJpbmcgKz0gIn0gIjsKQEAgLTIyODYsMTAgKzI2NjMsMjggQEAgVFN0cmluZyBPdXRwdXRITFNM
Ojp0eXBlU3RyaW5nKGNvbnN0IFRUeQogICAgICAgICB9CiAgICAgfQogCi0gICAgVU5JTVBMRU1F
TlRFRCgpOyAgIC8vIEZJWE1FCisgICAgVU5SRUFDSEFCTEUoKTsKICAgICByZXR1cm4gIjx1bmtu
b3duIHR5cGU+IjsKIH0KIAorVFN0cmluZyBPdXRwdXRITFNMOjp0ZXh0dXJlU3RyaW5nKGNvbnN0
IFRUeXBlICZ0eXBlKQoreworICAgIHN3aXRjaCAodHlwZS5nZXRCYXNpY1R5cGUoKSkKKyAgICB7
CisgICAgICBjYXNlIEVidFNhbXBsZXIyRDoKKyAgICAgICAgcmV0dXJuICJUZXh0dXJlMkQiOwor
ICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZToKKyAgICAgICAgcmV0dXJuICJUZXh0dXJlQ3ViZSI7
CisgICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzoKKyAgICAgICAgcmV0dXJuICJUZXh0
dXJlMkQiOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICByZXR1cm4gIjx1bmtub3duIHRleHR1cmUgdHlwZT4iOworfQorCiBU
U3RyaW5nIE91dHB1dEhMU0w6OmFycmF5U3RyaW5nKGNvbnN0IFRUeXBlICZ0eXBlKQogewogICAg
IGlmICghdHlwZS5pc0FycmF5KCkpCkBAIC0yMzA0LDExICsyNjk5LDEyIEBAIFRTdHJpbmcgT3V0
cHV0SExTTDo6aW5pdGlhbGl6ZXIoY29uc3QgVFQKIHsKICAgICBUU3RyaW5nIHN0cmluZzsKIAot
ICAgIGZvciAoaW50IGNvbXBvbmVudCA9IDA7IGNvbXBvbmVudCA8IHR5cGUuZ2V0T2JqZWN0U2l6
ZSgpOyBjb21wb25lbnQrKykKKyAgICBzaXplX3Qgc2l6ZSA9IHR5cGUuZ2V0T2JqZWN0U2l6ZSgp
OworICAgIGZvciAoc2l6ZV90IGNvbXBvbmVudCA9IDA7IGNvbXBvbmVudCA8IHNpemU7IGNvbXBv
bmVudCsrKQogICAgIHsKICAgICAgICAgc3RyaW5nICs9ICIwIjsKIAotICAgICAgICBpZiAoY29t
cG9uZW50IDwgdHlwZS5nZXRPYmplY3RTaXplKCkgLSAxKQorICAgICAgICBpZiAoY29tcG9uZW50
ICsgMSA8IHNpemUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHN0cmluZyArPSAiLCAiOwogICAg
ICAgICB9CkBAIC0yMzQ3LDEzICsyNzQzLDEzIEBAIHZvaWQgT3V0cHV0SExTTDo6YWRkQ29uc3Ry
dWN0b3IoY29uc3QgVFQKICAgICAgICAgc3RydWN0dXJlICs9ICJzdHJ1Y3QgIiArIGRlY29yYXRl
KG5hbWUpICsgIlxuIgogICAgICAgICAgICAgICAgICAgICAgIntcbiI7CiAKLSAgICAgICAgY29u
c3QgVFR5cGVMaXN0ICZmaWVsZHMgPSAqdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgY29uc3Qg
VEZpZWxkTGlzdCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CiAKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlICZmaWVsZCA9ICpmaWVsZHNbaV0udHlwZTsK
KyAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CiAKLSAgICAgICAg
ICAgIHN0cnVjdHVyZSArPSAiICAgICIgKyB0eXBlU3RyaW5nKGZpZWxkKSArICIgIiArIGRlY29y
YXRlRmllbGQoZmllbGQuZ2V0RmllbGROYW1lKCksIHR5cGUpICsgYXJyYXlTdHJpbmcoZmllbGQp
ICsgIjtcbiI7CisgICAgICAgICAgICBzdHJ1Y3R1cmUgKz0gIiAgICAiICsgdHlwZVN0cmluZygq
ZmllbGQtPnR5cGUoKSkgKyAiICIgKyBkZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksIHR5cGUp
ICsgYXJyYXlTdHJpbmcoKmZpZWxkLT50eXBlKCkpICsgIjtcbiI7CiAgICAgICAgIH0KIAogICAg
ICAgICBzdHJ1Y3R1cmUgKz0gIn07XG4iOwpAQCAtMjM2NSw3ICsyNzYxLDcgQEAgdm9pZCBPdXRw
dXRITFNMOjphZGRDb25zdHJ1Y3Rvcihjb25zdCBUVAogCiAgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjdG9yUGFyYW1ldGVycy5wdXNoX2JhY2soKmZpZWxkc1tpXS50eXBlKTsKKyAgICAgICAgICAg
IGN0b3JQYXJhbWV0ZXJzLnB1c2hfYmFjaygqZmllbGRzW2ldLT50eXBlKCkpOwogICAgICAgICB9
CiAgICAgfQogICAgIGVsc2UgaWYgKHBhcmFtZXRlcnMpCkBAIC0yNDU4LDI3ICsyODU0LDMwIEBA
IHZvaWQgT3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFQKICAgICB9CiAgICAgZWxz
ZQogICAgIHsKLSAgICAgICAgaW50IHJlbWFpbmluZ0NvbXBvbmVudHMgPSBjdG9yVHlwZS5nZXRP
YmplY3RTaXplKCk7Ci0gICAgICAgIGludCBwYXJhbWV0ZXJJbmRleCA9IDA7CisgICAgICAgIHNp
emVfdCByZW1haW5pbmdDb21wb25lbnRzID0gY3RvclR5cGUuZ2V0T2JqZWN0U2l6ZSgpOworICAg
ICAgICBzaXplX3QgcGFyYW1ldGVySW5kZXggPSAwOwogCiAgICAgICAgIHdoaWxlIChyZW1haW5p
bmdDb21wb25lbnRzID4gMCkKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgVFR5cGUgJnBh
cmFtZXRlciA9IGN0b3JQYXJhbWV0ZXJzW3BhcmFtZXRlckluZGV4XTsKLSAgICAgICAgICAgIGJv
b2wgbW9yZVBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJJbmRleCA8IChpbnQpY3RvclBhcmFtZXRlcnMu
c2l6ZSgpIC0gMTsKKyAgICAgICAgICAgIGNvbnN0IHNpemVfdCBwYXJhbWV0ZXJTaXplID0gcGFy
YW1ldGVyLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgICAgIGJvb2wgbW9yZVBhcmFtZXRlcnMg
PSBwYXJhbWV0ZXJJbmRleCArIDEgPCBjdG9yUGFyYW1ldGVycy5zaXplKCk7CiAKICAgICAgICAg
ICAgIGNvbnN0cnVjdG9yICs9ICJ4IiArIHN0cihwYXJhbWV0ZXJJbmRleCk7CiAKICAgICAgICAg
ICAgIGlmIChwYXJhbWV0ZXIuaXNTY2FsYXIoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZW1haW5pbmdDb21wb25lbnRzIC09IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtZXRlclNpemUgPD0gcmVtYWluaW5nQ29tcG9uZW50
cyk7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXJTaXpl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAocGFyYW1ldGVyLmlzVmVjdG9y
KCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZ0NvbXBvbmVu
dHMgPT0gcGFyYW1ldGVyLmdldE9iamVjdFNpemUoKSB8fCBtb3JlUGFyYW1ldGVycykKKyAgICAg
ICAgICAgICAgICBpZiAocmVtYWluaW5nQ29tcG9uZW50cyA9PSBwYXJhbWV0ZXJTaXplIHx8IG1v
cmVQYXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmVt
YWluaW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXIuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQocGFyYW1ldGVyU2l6ZSA8PSByZW1haW5pbmdDb21wb25lbnRzKTsK
KyAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nQ29tcG9uZW50cyAtPSBwYXJhbWV0ZXJTaXpl
OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChyZW1haW5pbmdD
b21wb25lbnRzIDwgcGFyYW1ldGVyLmdldE5vbWluYWxTaXplKCkpCisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAocmVtYWluaW5nQ29tcG9uZW50cyA8IHN0YXRpY19jYXN0PHNpemVfdD4ocGFyYW1l
dGVyLmdldE5vbWluYWxTaXplKCkpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChyZW1haW5pbmdDb21wb25lbnRzKQogICAgICAgICAgICAgICAgICAgICB7
CkBAIC0yNDk1LDkgKzI4OTQsMTAgQEAgdm9pZCBPdXRwdXRITFNMOjphZGRDb25zdHJ1Y3Rvcihj
b25zdCBUVAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAocGFyYW1ldGVyLmlz
TWF0cml4KCkgfHwgcGFyYW1ldGVyLmdldFN0cnVjdCgpKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIEFTU0VSVChyZW1haW5pbmdDb21wb25lbnRzID09IHBhcmFtZXRlci5nZXRPYmpl
Y3RTaXplKCkgfHwgbW9yZVBhcmFtZXRlcnMpOworICAgICAgICAgICAgICAgIEFTU0VSVChyZW1h
aW5pbmdDb21wb25lbnRzID09IHBhcmFtZXRlclNpemUgfHwgbW9yZVBhcmFtZXRlcnMpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJTaXplIDw9IHJlbWFpbmluZ0NvbXBvbmVudHMp
OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMg
LT0gcGFyYW1ldGVyLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmdD
b21wb25lbnRzIC09IHBhcmFtZXRlclNpemU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBl
bHNlIFVOUkVBQ0hBQkxFKCk7CiAKQEAgLTI1MzQsMTcgKzI5MzQsMTcgQEAgY29uc3QgQ29uc3Rh
bnRVbmlvbiAqT3V0cHV0SExTTDo6d3JpdGVDbwogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBl
KCkgPT0gRWJ0U3RydWN0KQogICAgIHsKLSAgICAgICAgb3V0IDw8IHN0cnVjdExvb2t1cCh0eXBl
LmdldFR5cGVOYW1lKCkpICsgIl9jdG9yKCI7CisgICAgICAgIG91dCA8PCBzdHJ1Y3RMb29rdXAo
dHlwZS5nZXRTdHJ1Y3QoKS0+bmFtZSgpKSArICJfY3RvcigiOwogICAgICAgICAKLSAgICAgICAg
Y29uc3QgVFR5cGVMaXN0ICpzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOworICAgICAgICBj
b25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKIAot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyBpKyspCisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZSAqZmllbGRUeXBlID0gKCpzdHJ1Y3R1cmUpW2ld
LnR5cGU7CisgICAgICAgICAgICBjb25zdCBUVHlwZSAqZmllbGRUeXBlID0gZmllbGRzW2ldLT50
eXBlKCk7CiAKICAgICAgICAgICAgIGNvbnN0VW5pb24gPSB3cml0ZUNvbnN0YW50VW5pb24oKmZp
ZWxkVHlwZSwgY29uc3RVbmlvbik7CiAKLSAgICAgICAgICAgIGlmIChpICE9IHN0cnVjdHVyZS0+
c2l6ZSgpIC0gMSkKKyAgICAgICAgICAgIGlmIChpICE9IGZpZWxkcy5zaXplKCkgLSAxKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIG91dCA8PCAiLCAiOwogICAgICAgICAgICAgfQpA
QCAtMjU1NCw3ICsyOTU0LDcgQEAgY29uc3QgQ29uc3RhbnRVbmlvbiAqT3V0cHV0SExTTDo6d3Jp
dGVDbwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBpbnQgc2l6ZSA9IHR5cGUuZ2V0
T2JqZWN0U2l6ZSgpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IHR5cGUuZ2V0T2JqZWN0U2l6ZSgp
OwogICAgICAgICBib29sIHdyaXRlVHlwZSA9IHNpemUgPiAxOwogICAgICAgICAKICAgICAgICAg
aWYgKHdyaXRlVHlwZSkKQEAgLTI1NjIsNyArMjk2Miw3IEBAIGNvbnN0IENvbnN0YW50VW5pb24g
Kk91dHB1dEhMU0w6OndyaXRlQ28KICAgICAgICAgICAgIG91dCA8PCB0eXBlU3RyaW5nKHR5cGUp
IDw8ICIoIjsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsg
aSsrLCBjb25zdFVuaW9uKyspCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
aSsrLCBjb25zdFVuaW9uKyspCiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaCAoY29uc3RV
bmlvbi0+Z2V0VHlwZSgpKQogICAgICAgICAgICAgewpAQCAtMjY0MSwxMSArMzA0MSw3IEBAIFRT
dHJpbmcgT3V0cHV0SExTTDo6ZGVjb3JhdGUoY29uc3QgVFN0cmkKIAogVFN0cmluZyBPdXRwdXRI
TFNMOjpkZWNvcmF0ZVVuaWZvcm0oY29uc3QgVFN0cmluZyAmc3RyaW5nLCBjb25zdCBUVHlwZSAm
dHlwZSkKIHsKLSAgICBpZiAodHlwZS5pc0FycmF5KCkpCi0gICAgewotICAgICAgICByZXR1cm4g
ImFyXyIgKyBzdHJpbmc7ICAgLy8gQWxsb3dzIGlkZW50aWZ5aW5nIGFycmF5cyBvZiBzaXplIDEK
LSAgICB9Ci0gICAgZWxzZSBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTYW1wbGVyRXh0
ZXJuYWxPRVMpCisgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U2FtcGxlckV4dGVy
bmFsT0VTKQogICAgIHsKICAgICAgICAgcmV0dXJuICJleF8iICsgc3RyaW5nOwogICAgIH0KQEAg
LTI2NTUsMTEgKzMwNTEsMjAyIEBAIFRTdHJpbmcgT3V0cHV0SExTTDo6ZGVjb3JhdGVVbmlmb3Jt
KGNvbnMKIAogVFN0cmluZyBPdXRwdXRITFNMOjpkZWNvcmF0ZUZpZWxkKGNvbnN0IFRTdHJpbmcg
JnN0cmluZywgY29uc3QgVFR5cGUgJnN0cnVjdHVyZSkKIHsKLSAgICBpZiAoc3RydWN0dXJlLmdl
dFR5cGVOYW1lKCkuY29tcGFyZSgwLCAzLCAiZ2xfIikgIT0gMCkKKyAgICBpZiAoc3RydWN0dXJl
LmdldFN0cnVjdCgpLT5uYW1lKCkuY29tcGFyZSgwLCAzLCAiZ2xfIikgIT0gMCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBkZWNvcmF0ZShzdHJpbmcpOwogICAgIH0KIAogICAgIHJldHVybiBzdHJp
bmc7CiB9CisKK1RTdHJpbmcgT3V0cHV0SExTTDo6cmVnaXN0ZXJTdHJpbmcoVEludGVybVN5bWJv
bCAqb3BlcmFuZCkKK3sKKyAgICBBU1NFUlQob3BlcmFuZC0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZx
VW5pZm9ybSk7CisKKyAgICBpZiAoSXNTYW1wbGVyKG9wZXJhbmQtPmdldEJhc2ljVHlwZSgpKSkK
KyAgICB7CisgICAgICAgIHJldHVybiAicyIgKyBzdHIoc2FtcGxlclJlZ2lzdGVyKG9wZXJhbmQp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gImMiICsgc3RyKHVuaWZvcm1SZWdpc3RlcihvcGVyYW5k
KSk7Cit9CisKK2ludCBPdXRwdXRITFNMOjpzYW1wbGVyUmVnaXN0ZXIoVEludGVybVN5bWJvbCAq
c2FtcGxlcikKK3sKKyAgICBjb25zdCBUVHlwZSAmdHlwZSA9IHNhbXBsZXItPmdldFR5cGUoKTsK
KyAgICBBU1NFUlQoSXNTYW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKTsKKworICAgIGludCBp
bmRleCA9IG1TYW1wbGVyUmVnaXN0ZXI7CisgICAgbVNhbXBsZXJSZWdpc3RlciArPSBzYW1wbGVy
LT50b3RhbFJlZ2lzdGVyQ291bnQoKTsKKworICAgIGRlY2xhcmVVbmlmb3JtKHR5cGUsIHNhbXBs
ZXItPmdldFN5bWJvbCgpLCBpbmRleCk7CisKKyAgICByZXR1cm4gaW5kZXg7Cit9CisKK2ludCBP
dXRwdXRITFNMOjp1bmlmb3JtUmVnaXN0ZXIoVEludGVybVN5bWJvbCAqdW5pZm9ybSkKK3sKKyAg
ICBjb25zdCBUVHlwZSAmdHlwZSA9IHVuaWZvcm0tPmdldFR5cGUoKTsKKyAgICBBU1NFUlQoIUlz
U2FtcGxlcih0eXBlLmdldEJhc2ljVHlwZSgpKSk7CisKKyAgICBpbnQgaW5kZXggPSBtVW5pZm9y
bVJlZ2lzdGVyOworICAgIG1Vbmlmb3JtUmVnaXN0ZXIgKz0gdW5pZm9ybS0+dG90YWxSZWdpc3Rl
ckNvdW50KCk7CisKKyAgICBkZWNsYXJlVW5pZm9ybSh0eXBlLCB1bmlmb3JtLT5nZXRTeW1ib2wo
KSwgaW5kZXgpOworCisgICAgcmV0dXJuIGluZGV4OworfQorCit2b2lkIE91dHB1dEhMU0w6OmRl
Y2xhcmVVbmlmb3JtKGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBUU3RyaW5nICZuYW1lLCBpbnQg
aW5kZXgpCit7CisgICAgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsK
KworICAgIGlmICghc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgbUFjdGl2ZVVuaWZvcm1zLnB1
c2hfYmFjayhVbmlmb3JtKGdsVmFyaWFibGVUeXBlKHR5cGUpLCBnbFZhcmlhYmxlUHJlY2lzaW9u
KHR5cGUpLCBuYW1lLmNfc3RyKCksIHR5cGUuZ2V0QXJyYXlTaXplKCksIGluZGV4KSk7CisgICAg
fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IHN0
cnVjdHVyZS0+ZmllbGRzKCk7CisKKyAgICAgICAgaWYgKHR5cGUuaXNBcnJheSgpKQorICAgICAg
ICB7CisgICAgICAgICAgICBpbnQgZWxlbWVudEluZGV4ID0gaW5kZXg7CisKKyAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgdHlwZS5nZXRBcnJheVNpemUoKTsgaSsrKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZmllbGRzLnNpemUo
KTsgaisrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5
cGUgJmZpZWxkVHlwZSA9ICpmaWVsZHNbal0tPnR5cGUoKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFN0cmluZyB1bmlmb3JtTmFtZSA9IG5hbWUgKyAiWyIgKyBzdHIoaSkgKyAiXS4iICsg
ZmllbGRzW2pdLT5uYW1lKCk7CisgICAgICAgICAgICAgICAgICAgIGRlY2xhcmVVbmlmb3JtKGZp
ZWxkVHlwZSwgdW5pZm9ybU5hbWUsIGVsZW1lbnRJbmRleCk7CisgICAgICAgICAgICAgICAgICAg
IGVsZW1lbnRJbmRleCArPSBmaWVsZFR5cGUudG90YWxSZWdpc3RlckNvdW50KCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgaW50IGZpZWxkSW5kZXggPSBpbmRleDsKKworICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJmZpZWxkVHlwZSA9ICpmaWVsZHNbaV0tPnR5
cGUoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nIHVuaWZvcm1OYW1lID0gbmFtZSAr
ICIuIiArIGZpZWxkc1tpXS0+bmFtZSgpOworICAgICAgICAgICAgICAgIGRlY2xhcmVVbmlmb3Jt
KGZpZWxkVHlwZSwgdW5pZm9ybU5hbWUsIGZpZWxkSW5kZXgpOworICAgICAgICAgICAgICAgIGZp
ZWxkSW5kZXggKz0gZmllbGRUeXBlLnRvdGFsUmVnaXN0ZXJDb3VudCgpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorfQorCitHTGVudW0gT3V0cHV0SExTTDo6Z2xWYXJpYWJsZVR5
cGUoY29uc3QgVFR5cGUgJnR5cGUpCit7CisgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0g
RWJ0RmxvYXQpCisgICAgeworICAgICAgICBpZiAodHlwZS5pc1NjYWxhcigpKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gR0xfRkxPQVQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBp
ZiAodHlwZS5pc1ZlY3RvcigpKQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2godHlwZS5n
ZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIDI6IHJl
dHVybiBHTF9GTE9BVF9WRUMyOworICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBHTF9GTE9B
VF9WRUMzOworICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBHTF9GTE9BVF9WRUM0OworICAg
ICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGVsc2UgaWYgKHR5cGUuaXNNYXRyaXgoKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgc3dpdGNoKHR5cGUuZ2V0Tm9taW5hbFNpemUoKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgY2FzZSAyOiByZXR1cm4gR0xfRkxPQVRfTUFUMjsKKyAgICAgICAgICAgICAgY2Fz
ZSAzOiByZXR1cm4gR0xfRkxPQVRfTUFUMzsKKyAgICAgICAgICAgICAgY2FzZSA0OiByZXR1cm4g
R0xfRkxPQVRfTUFUNDsKKyAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisgICAg
fQorICAgIGVsc2UgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KQorICAgIHsKKyAg
ICAgICAgaWYgKHR5cGUuaXNTY2FsYXIoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IEdMX0lOVDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh0eXBlLmlzVmVjdG9yKCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCh0eXBlLmdldE5vbWluYWxTaXplKCkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIEdMX0lOVF9WRUMyOworICAg
ICAgICAgICAgICBjYXNlIDM6IHJldHVybiBHTF9JTlRfVkVDMzsKKyAgICAgICAgICAgICAgY2Fz
ZSA0OiByZXR1cm4gR0xfSU5UX1ZFQzQ7CisgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBVTlJFQUNIQUJM
RSgpOworICAgIH0KKyAgICBlbHNlIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidEJvb2wp
CisgICAgeworICAgICAgICBpZiAodHlwZS5pc1NjYWxhcigpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gR0xfQk9PTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh0eXBlLmlz
VmVjdG9yKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCh0eXBlLmdldE5vbWluYWxT
aXplKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIEdMX0JP
T0xfVkVDMjsKKyAgICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gR0xfQk9PTF9WRUMzOworICAg
ICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBHTF9CT09MX1ZFQzQ7CisgICAgICAgICAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSBVTlJFQUNIQUJMRSgpOworICAgIH0KKyAgICBlbHNlIGlmICh0eXBlLmdldEJhc2ljVHlw
ZSgpID09IEVidFNhbXBsZXIyRCkKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9TQU1QTEVSXzJE
OworICAgIH0KKyAgICBlbHNlIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFNhbXBsZXJD
dWJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX1NBTVBMRVJfQ1VCRTsKKyAgICB9CisgICAg
ZWxzZSBVTlJFQUNIQUJMRSgpOworCisgICAgcmV0dXJuIEdMX05PTkU7Cit9CisKK0dMZW51bSBP
dXRwdXRITFNMOjpnbFZhcmlhYmxlUHJlY2lzaW9uKGNvbnN0IFRUeXBlICZ0eXBlKQoreworICAg
IGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQorICAgIHsKKyAgICAgICAgc3dp
dGNoICh0eXBlLmdldFByZWNpc2lvbigpKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBFYnBI
aWdoOiAgIHJldHVybiBHTF9ISUdIX0ZMT0FUOworICAgICAgICAgIGNhc2UgRWJwTWVkaXVtOiBy
ZXR1cm4gR0xfTUVESVVNX0ZMT0FUOworICAgICAgICAgIGNhc2UgRWJwTG93OiAgICByZXR1cm4g
R0xfTE9XX0ZMT0FUOworICAgICAgICAgIGNhc2UgRWJwVW5kZWZpbmVkOgorICAgICAgICAgICAg
Ly8gU2hvdWxkIGJlIGRlZmluZWQgYXMgdGhlIGRlZmF1bHQgcHJlY2lzaW9uIGJ5IHRoZSBwYXJz
ZXIKKyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQor
ICAgIGVsc2UgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KQorICAgIHsKKyAgICAg
ICAgc3dpdGNoICh0eXBlLmdldFByZWNpc2lvbigpKQorICAgICAgICB7CisgICAgICAgICAgY2Fz
ZSBFYnBIaWdoOiAgIHJldHVybiBHTF9ISUdIX0lOVDsKKyAgICAgICAgICBjYXNlIEVicE1lZGl1
bTogcmV0dXJuIEdMX01FRElVTV9JTlQ7CisgICAgICAgICAgY2FzZSBFYnBMb3c6ICAgIHJldHVy
biBHTF9MT1dfSU5UOworICAgICAgICAgIGNhc2UgRWJwVW5kZWZpbmVkOgorICAgICAgICAgICAg
Ly8gU2hvdWxkIGJlIGRlZmluZWQgYXMgdGhlIGRlZmF1bHQgcHJlY2lzaW9uIGJ5IHRoZSBwYXJz
ZXIKKyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gT3RoZXIgdHlwZXMgKGJvb2xlYW4sIHNhbXBsZXIpIGRvbid0IGhhdmUgYSBwcmVj
aXNpb24KKyAgICByZXR1cm4gR0xfTk9ORTsKK30KKwogfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5oCShyZXZpc2lvbiAxNTI5
NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAw
Mi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KIC8vCkBAIC05LDkgKzksMTQgQEAKIAogI2luY2x1ZGUgPGxpc3Q+CiAjaW5jbHVk
ZSA8c2V0PgorI2luY2x1ZGUgPG1hcD4KKworI2RlZmluZSBHTF9BUElDQUxMCisjaW5jbHVkZSA8
R0xFUzIvZ2wyLmg+CiAKICNpbmNsdWRlICJjb21waWxlci9pbnRlcm1lZGlhdGUuaCIKICNpbmNs
dWRlICJjb21waWxlci9QYXJzZUhlbHBlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL1VuaWZvcm0u
aCIKIAogbmFtZXNwYWNlIHNoCiB7CkBAIC0yMCwxNCArMjUsMTYgQEAgY2xhc3MgVW5mb2xkU2hv
cnRDaXJjdWl0OwogY2xhc3MgT3V0cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7
CiAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBPdXRwdXRITFNMKFRQYXJzZUNvbnRleHQgJmNvbnRl
eHQpOworICAgIE91dHB1dEhMU0woVFBhcnNlQ29udGV4dCAmY29udGV4dCwgY29uc3QgU2hCdWls
dEluUmVzb3VyY2VzJiByZXNvdXJjZXMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5cGUpOwogICAg
IH5PdXRwdXRITFNMKCk7CiAKICAgICB2b2lkIG91dHB1dCgpOwogCiAgICAgVEluZm9TaW5rQmFz
ZSAmZ2V0Qm9keVN0cmVhbSgpOworICAgIGNvbnN0IEFjdGl2ZVVuaWZvcm1zICZnZXRVbmlmb3Jt
cygpOwogCiAgICAgVFN0cmluZyB0eXBlU3RyaW5nKGNvbnN0IFRUeXBlICZ0eXBlKTsKKyAgICBU
U3RyaW5nIHRleHR1cmVTdHJpbmcoY29uc3QgVFR5cGUgJnR5cGUpOwogICAgIHN0YXRpYyBUU3Ry
aW5nIHF1YWxpZmllclN0cmluZyhUUXVhbGlmaWVyIHF1YWxpZmllcik7CiAgICAgc3RhdGljIFRT
dHJpbmcgYXJyYXlTdHJpbmcoY29uc3QgVFR5cGUgJnR5cGUpOwogICAgIHN0YXRpYyBUU3RyaW5n
IGluaXRpYWxpemVyKGNvbnN0IFRUeXBlICZ0eXBlKTsKQEAgLTY0LDYgKzcxLDcgQEAgY2xhc3Mg
T3V0cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVycwogICAgIFRTdHJpbmcgc3RydWN0TG9v
a3VwKGNvbnN0IFRTdHJpbmcgJnR5cGVOYW1lKTsKIAogICAgIFRQYXJzZUNvbnRleHQgJm1Db250
ZXh0OworICAgIGNvbnN0IFNoU2hhZGVyT3V0cHV0IG1PdXRwdXRUeXBlOwogICAgIFVuZm9sZFNo
b3J0Q2lyY3VpdCAqbVVuZm9sZFNob3J0Q2lyY3VpdDsKICAgICBib29sIG1JbnNpZGVGdW5jdGlv
bjsKIApAQCAtNzIsOSArODAsMTAgQEAgY2xhc3MgT3V0cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJt
VHJhdmVycwogICAgIFRJbmZvU2lua0Jhc2UgbUJvZHk7CiAgICAgVEluZm9TaW5rQmFzZSBtRm9v
dGVyOwogCi0gICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1SZWZlcmVuY2VkVW5pZm9ybXM7Ci0g
ICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1SZWZlcmVuY2VkQXR0cmlidXRlczsKLSAgICBzdGQ6
OnNldDxzdGQ6OnN0cmluZz4gbVJlZmVyZW5jZWRWYXJ5aW5nczsKKyAgICB0eXBlZGVmIHN0ZDo6
bWFwPFRTdHJpbmcsIFRJbnRlcm1TeW1ib2wqPiBSZWZlcmVuY2VkU3ltYm9sczsKKyAgICBSZWZl
cmVuY2VkU3ltYm9scyBtUmVmZXJlbmNlZFVuaWZvcm1zOworICAgIFJlZmVyZW5jZWRTeW1ib2xz
IG1SZWZlcmVuY2VkQXR0cmlidXRlczsKKyAgICBSZWZlcmVuY2VkU3ltYm9scyBtUmVmZXJlbmNl
ZFZhcnlpbmdzOwogCiAgICAgLy8gUGFyYW1ldGVycyBkZXRlcm1pbmluZyB3aGF0IGdvZXMgaW4g
dGhlIGhlYWRlciBvdXRwdXQKICAgICBib29sIG1Vc2VzVGV4dHVyZTJEOwpAQCAtOTIsMTEgKzEw
MSwxNCBAQCBjbGFzcyBPdXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzCiAgICAgYm9v
bCBtVXNlc1RleHR1cmUyRFByb2pMb2QwX2JpYXM7CiAgICAgYm9vbCBtVXNlc1RleHR1cmVDdWJl
TG9kMDsKICAgICBib29sIG1Vc2VzVGV4dHVyZUN1YmVMb2QwX2JpYXM7CisgICAgYm9vbCBtVXNl
c0ZyYWdDb2xvcjsKKyAgICBib29sIG1Vc2VzRnJhZ0RhdGE7CiAgICAgYm9vbCBtVXNlc0RlcHRo
UmFuZ2U7CiAgICAgYm9vbCBtVXNlc0ZyYWdDb29yZDsKICAgICBib29sIG1Vc2VzUG9pbnRDb29y
ZDsKICAgICBib29sIG1Vc2VzRnJvbnRGYWNpbmc7CiAgICAgYm9vbCBtVXNlc1BvaW50U2l6ZTsK
KyAgICBib29sIG1Vc2VzRnJhZ0RlcHRoOwogICAgIGJvb2wgbVVzZXNYb3I7CiAgICAgYm9vbCBt
VXNlc01vZDE7CiAgICAgYm9vbCBtVXNlc01vZDJ2OwpAQCAtMTI2LDYgKzEzOCw4IEBAIGNsYXNz
IE91dHB1dEhMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnMKICAgICBib29sIG1Vc2VzQXRhbjJf
MzsKICAgICBib29sIG1Vc2VzQXRhbjJfNDsKIAorICAgIGludCBtTnVtUmVuZGVyVGFyZ2V0czsK
KwogICAgIHR5cGVkZWYgc3RkOjpzZXQ8VFN0cmluZz4gQ29uc3RydWN0b3JzOwogICAgIENvbnN0
cnVjdG9ycyBtQ29uc3RydWN0b3JzOwogCkBAIC0xNDYsNiArMTYwLDE4IEBAIGNsYXNzIE91dHB1
dEhMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnMKICAgICBib29sIG1JbnNpZGVEaXNjb250aW51
b3VzTG9vcDsKIAogICAgIFRJbnRlcm1TeW1ib2wgKm1FeGNlc3NpdmVMb29wSW5kZXg7CisKKyAg
ICBpbnQgbVVuaWZvcm1SZWdpc3RlcjsKKyAgICBpbnQgbVNhbXBsZXJSZWdpc3RlcjsKKworICAg
IFRTdHJpbmcgcmVnaXN0ZXJTdHJpbmcoVEludGVybVN5bWJvbCAqb3BlcmFuZCk7CisgICAgaW50
IHNhbXBsZXJSZWdpc3RlcihUSW50ZXJtU3ltYm9sICpzYW1wbGVyKTsKKyAgICBpbnQgdW5pZm9y
bVJlZ2lzdGVyKFRJbnRlcm1TeW1ib2wgKnVuaWZvcm0pOworICAgIHZvaWQgZGVjbGFyZVVuaWZv
cm0oY29uc3QgVFR5cGUgJnR5cGUsIGNvbnN0IFRTdHJpbmcgJm5hbWUsIGludCBpbmRleCk7Cisg
ICAgc3RhdGljIEdMZW51bSBnbFZhcmlhYmxlVHlwZShjb25zdCBUVHlwZSAmdHlwZSk7CisgICAg
c3RhdGljIEdMZW51bSBnbFZhcmlhYmxlUHJlY2lzaW9uKGNvbnN0IFRUeXBlICZ0eXBlKTsKKwor
ICAgIEFjdGl2ZVVuaWZvcm1zIG1BY3RpdmVVbmlmb3JtczsKIH07CiB9CiAKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmNw
cAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1BhcnNlSGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjIsNyArMjIsNyBAQAogLy8gTG9v
ayBhdCBhICcuJyBmaWVsZCBzZWxlY3RvciBzdHJpbmcgYW5kIGNoYW5nZSBpdCBpbnRvIG9mZnNl
dHMKIC8vIGZvciBhIHZlY3Rvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9y
RmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCB2ZWNTaXplLCBUVmVjdG9yRmll
bGRzJiBmaWVsZHMsIGludCBsaW5lKQorYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJzZVZlY3RvckZp
ZWxkcyhjb25zdCBUU3RyaW5nJiBjb21wU3RyaW5nLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxk
cyYgZmllbGRzLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKQogewogICAgIGZpZWxkcy5udW0gPSAo
aW50KSBjb21wU3RyaW5nLnNpemUoKTsKICAgICBpZiAoZmllbGRzLm51bSA+IDQpIHsKQEAgLTEx
NSw3ICsxMTUsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKGNvCiAv
LyBMb29rIGF0IGEgJy4nIGZpZWxkIHNlbGVjdG9yIHN0cmluZyBhbmQgY2hhbmdlIGl0IGludG8g
b2Zmc2V0cwogLy8gZm9yIGEgbWF0cml4LgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VN
YXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IG1hdFNpemUsIFRNYXRy
aXhGaWVsZHMmIGZpZWxkcywgaW50IGxpbmUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlTWF0
cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmIGNvbXBTdHJpbmcsIGludCBtYXRTaXplLCBUTWF0cml4
RmllbGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgZmllbGRzLndo
b2xlUm93ID0gZmFsc2U7CiAgICAgZmllbGRzLndob2xlQ29sID0gZmFsc2U7CkBAIC0xNzUsMjIg
KzE3NSwyNCBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnJlY292ZXIoKQogLy8KIC8vIFVzZWQgYnkg
ZmxleC9iaXNvbiB0byBvdXRwdXQgYWxsIHN5bnRheCBhbmQgcGFyc2luZyBlcnJvcnMuCiAvLwot
dm9pZCBUUGFyc2VDb250ZXh0OjplcnJvcihUU291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29u
dGV4dDo6ZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiByZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvKQogewogICAgIHBwOjpTb3VyY2VM
b2NhdGlvbiBzcmNMb2M7Ci0gICAgRGVjb2RlU291cmNlTG9jKGxvYywgJnNyY0xvYy5maWxlLCAm
c3JjTG9jLmxpbmUpOworICAgIHNyY0xvYy5maWxlID0gbG9jLmZpcnN0X2ZpbGU7CisgICAgc3Jj
TG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKICAgICBkaWFnbm9zdGljcy53cml0ZUluZm8ocHA6
OkRpYWdub3N0aWNzOjpFUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCBy
ZWFzb24sIHRva2VuLCBleHRyYUluZm8pOwogCiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6d2Fy
bmluZyhUU291cmNlTG9jIGxvYywKK3ZvaWQgVFBhcnNlQ29udGV4dDo6d2FybmluZyhjb25zdCBU
U291cmNlTG9jJiBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
cmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBleHRyYUluZm8pIHsKICAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwot
ICAgIERlY29kZVNvdXJjZUxvYyhsb2MsICZzcmNMb2MuZmlsZSwgJnNyY0xvYy5saW5lKTsKKyAg
ICBzcmNMb2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOworICAgIHNyY0xvYy5saW5lID0gbG9jLmZp
cnN0X2xpbmU7CiAgICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9zdGljczo6V0FS
TklORywKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9jLCByZWFzb24sIHRva2VuLCBl
eHRyYUluZm8pOwogfQpAQCAtMjAzLDcgKzIwNSw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dHJh
Y2UoY29uc3QgY2hhciogc3QKIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBwbGFj
ZXMgYXNzaWdubWVudHMgZG9uJ3Qgd29yay4KIC8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OmFzc2ln
bkVycm9yKGludCBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJp
Z2h0KQordm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jJiBs
aW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0g
PDwgImNhbm5vdCBjb252ZXJ0IGZyb20gJyIgPDwgcmlnaHQgPDwgIicgdG8gJyIgPDwgbGVmdCA8
PCAiJyI7CkBAIC0yMTQsNyArMjE2LDcgQEAgdm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25FcnJv
cihpbnQgbGluZQogLy8KIC8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxsIHBsYWNlcyB1bmFy
eSBvcGVyYXRpb25zIGRvbid0IHdvcmsuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0Ojp1bmFyeU9w
RXJyb3IoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpCit2b2lkIFRQ
YXJzZUNvbnRleHQ6OnVuYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBj
aGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKQogewogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJh
SW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBv
cCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhbiBvcGVyYW5kIG9mIHR5cGUgIiA8PCBvcGVyYW5k
IApAQCAtMjI2LDcgKzIyOCw3IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKGlu
dCBsaW4KIC8vCiAvLyBTYW1lIGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBiaW5hcnkgb3BlcmF0aW9u
cyBkb24ndCB3b3JrLgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihpbnQg
bGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCkKK3ZvaWQg
VFBhcnNlQ29udGV4dDo6YmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25z
dCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KQogewogICAgIHN0ZDo6c3Ry
aW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9w
ZXJhdGlvbiAnIiA8PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhIGxlZnQtaGFuZCBvcGVy
YW5kIG9mIHR5cGUgJyIgPDwgbGVmdCAKQEAgLTIzNSw3ICsyMzcsNyBAQCB2b2lkIFRQYXJzZUNv
bnRleHQ6OmJpbmFyeU9wRXJyb3IoaW50IGxpCiAgICAgZXJyb3IobGluZSwgIiB3cm9uZyBvcGVy
YW5kIHR5cGVzICIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7IAogfQogCi1ib29sIFRQYXJzZUNv
bnRleHQ6OnByZWNpc2lvbkVycm9yQ2hlY2soaW50IGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9u
LCBUQmFzaWNUeXBlIHR5cGUpeworYm9vbCBUUGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFzaWNU
eXBlIHR5cGUpewogICAgIGlmICghY2hlY2tzUHJlY2lzaW9uRXJyb3JzKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgc3dpdGNoKCB0eXBlICl7CkBAIC0yNjMsNyArMjY1LDcgQEAgYm9vbCBU
UGFyc2VDb250ZXh0OjpwcmVjaXNpb25FcnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JD
aGVjayhpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRlcm1UeXBlZCogbm9kZSkKK2Jvb2wg
VFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBj
b25zdCBjaGFyKiBvcCwgVEludGVybVR5cGVkKiBub2RlKQogewogICAgIFRJbnRlcm1TeW1ib2wq
IHN5bU5vZGUgPSBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsKICAgICBUSW50ZXJtQmluYXJ5KiBi
aW5hcnlOb2RlID0gbm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7CkBAIC0yODYsNyArMjg4LDcgQEAg
Ym9vbCBUUGFyc2VDb250ZXh0OjpsVmFsdWVFcnJvckNoZWNrKGludAogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBwID0gYWdn
ck5vZGUtPmdldFNlcXVlbmNlKCkuYmVnaW4oKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHAgIT0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCkuZW5kKCk7
IHArKykgewotICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSAoKnApLT5nZXRBc1R5cGVk
KCktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29u
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gKCpwKS0+Z2V0QXNUeXBlZCgp
LT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgICAg
ICBvZmZzZXRbdmFsdWVdKys7ICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldFt2
YWx1ZV0gPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFs
dWUgb2Ygc3dpenpsZSBjYW5ub3QgaGF2ZSBkdXBsaWNhdGUgY29tcG9uZW50cyIsIG9wKTsKQEAg
LTMxNyw3ICszMTksNiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1ZUVycm9yQ2hlY2soaW50
CiAgICAgY2FzZSBFdnFBdHRyaWJ1dGU6ICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYW4g
YXR0cmlidXRlIjsgICBicmVhazsKICAgICBjYXNlIEV2cVVuaWZvcm06ICAgICAgICBtZXNzYWdl
ID0gImNhbid0IG1vZGlmeSBhIHVuaWZvcm0iOyAgICAgIGJyZWFrOwogICAgIGNhc2UgRXZxVmFy
eWluZ0luOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGEgdmFyeWluZyI7ICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFdnFJbnB1dDogICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkg
YW4gaW5wdXQiOyAgICAgICBicmVhazsKICAgICBjYXNlIEV2cUZyYWdDb29yZDogICAgICBtZXNz
YWdlID0gImNhbid0IG1vZGlmeSBnbF9GcmFnQ29vcmQiOyAgIGJyZWFrOwogICAgIGNhc2UgRXZx
RnJvbnRGYWNpbmc6ICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGdsX0Zyb250RmFjaW5nIjsg
YnJlYWs7CiAgICAgY2FzZSBFdnFQb2ludENvb3JkOiAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2Rp
ZnkgZ2xfUG9pbnRDb29yZCI7ICBicmVhazsKQEAgLTQwOSw3ICs0MTAsNyBAQCBib29sIFRQYXJz
ZUNvbnRleHQ6OmludGVnZXJFcnJvckNoZWNrKFRJCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpnbG9iYWxFcnJvckNoZWNr
KGludCBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pCitib29sIFRQYXJzZUNv
bnRleHQ6Omdsb2JhbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgYm9vbCBnbG9i
YWwsIGNvbnN0IGNoYXIqIHRva2VuKQogewogICAgIGlmIChnbG9iYWwpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTQyOCw3ICs0MjksNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6Omdsb2JhbEVy
cm9yQ2hlY2soaW50CiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4K
IC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JDaGVjayhpbnQgbGluZSwgY29u
c3QgVFN0cmluZyYgaWRlbnRpZmllcikKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIp
CiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc2VydmVkRXJyTXNnID0gInJlc2VydmVkIGJ1
aWx0LWluIG5hbWUiOwogICAgIGlmICghc3ltYm9sVGFibGUuYXRCdWlsdEluTGV2ZWwoKSkgewpA
QCAtNDY2LDcgKzQ2Nyw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cmVzZXJ2ZWRFcnJvckNoZWNr
KGkKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGluIGNvbnN0cnVj
dGlvbi4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVjayhpbnQg
bGluZSwgVEludGVybU5vZGUqIG5vZGUsIFRGdW5jdGlvbiYgZnVuY3Rpb24sIFRPcGVyYXRvciBv
cCwgVFR5cGUqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdG9yRXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogbm9kZSwgVEZ1bmN0aW9uJiBm
dW5jdGlvbiwgVE9wZXJhdG9yIG9wLCBUVHlwZSogdHlwZSkKIHsKICAgICAqdHlwZSA9IGZ1bmN0
aW9uLmdldFJldHVyblR5cGUoKTsKIApAQCAtNDg3LDcgKzQ4OCw3IEBAIGJvb2wgVFBhcnNlQ29u
dGV4dDo6Y29uc3RydWN0b3JFcnJvckNoZWMKICAgICAvLyBhZ2FpbiwgdGhlcmUgaXMgYW4gZXh0
cmEgYXJndW1lbnQsIHNvICdvdmVyZnVsbCcgd2lsbCBiZWNvbWUgdHJ1ZS4KICAgICAvLwogCi0g
ICAgaW50IHNpemUgPSAwOworICAgIHNpemVfdCBzaXplID0gMDsKICAgICBib29sIGNvbnN0VHlw
ZSA9IHRydWU7CiAgICAgYm9vbCBmdWxsID0gZmFsc2U7CiAgICAgYm9vbCBvdmVyRnVsbCA9IGZh
bHNlOwpAQCAtNTM0LDcgKzUzNSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0b3JF
cnJvckNoZWMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGlmIChvcCA9
PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5cGUtPmlzQXJyYXkoKSAmJiBpbnQodHlwZS0+Z2V0
U3RydWN0KCktPnNpemUoKSkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSB7CisgICAgaWYg
KG9wID09IEVPcENvbnN0cnVjdFN0cnVjdCAmJiAhdHlwZS0+aXNBcnJheSgpICYmIGludCh0eXBl
LT5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCkuc2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50
KCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgIk51bWJlciBvZiBjb25zdHJ1Y3RvciBwYXJhbWV0
ZXJzIGRvZXMgbm90IG1hdGNoIHRoZSBudW1iZXIgb2Ygc3RydWN0dXJlIGZpZWxkcyIsICJjb25z
dHJ1Y3RvciIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC01NjgsNyArNTY5LDcg
QEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlYwogLy8KIC8vIHJldHVy
bnMgdHJ1ZSBpbiBjYXNlIG9mIGFuIGVycm9yCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojp2b2lk
RXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgVFB1
YmxpY1R5cGUmIHB1YlR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnZvaWRFcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFRQ
dWJsaWNUeXBlJiBwdWJUeXBlKQogewogICAgIGlmIChwdWJUeXBlLnR5cGUgPT0gRWJ0Vm9pZCkg
ewogICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCB1c2Ugb2YgdHlwZSAndm9pZCciLCBpZGVu
dGlmaWVyLmNfc3RyKCkpOwpAQCAtNTgyLDcgKzU4Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
dm9pZEVycm9yQ2hlY2soaW50IGwKIC8vCiAvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBl
cnJvcgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soaW50IGxpbmUsIGNv
bnN0IFRJbnRlcm1UeXBlZCogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hl
Y2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEludGVybVR5cGVkKiB0eXBlKQogewog
ICAgIGlmICh0eXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRCb29sIHx8IHR5cGUtPmlzQXJyYXko
KSB8fCB0eXBlLT5pc01hdHJpeCgpIHx8IHR5cGUtPmlzVmVjdG9yKCkpIHsKICAgICAgICAgZXJy
b3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3RlZCIsICIiKTsKQEAgLTU5Niw3ICs1
OTcsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGludCBsCiAvLwogLy8g
cmV0dXJucyB0cnVlIGluIGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6
OmJvb2xFcnJvckNoZWNrKGludCBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUpCitib29s
IFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNv
bnN0IFRQdWJsaWNUeXBlJiBwVHlwZSkKIHsKICAgICBpZiAocFR5cGUudHlwZSAhPSBFYnRCb29s
IHx8IHBUeXBlLmFycmF5IHx8IHBUeXBlLm1hdHJpeCB8fCAocFR5cGUuc2l6ZSA+IDEpKSB7CiAg
ICAgICAgIGVycm9yKGxpbmUsICJib29sZWFuIGV4cHJlc3Npb24gZXhwZWN0ZWQiLCAiIik7CkBA
IC02MDYsNyArNjA3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJyb3JDaGVjayhpbnQg
bAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpzYW1wbGVyRXJy
b3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFyKiBy
ZWFzb24pCitib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciogcmVhc29u
KQogewogICAgIGlmIChwVHlwZS50eXBlID09IEVidFN0cnVjdCkgewogICAgICAgICBpZiAoY29u
dGFpbnNTYW1wbGVyKCpwVHlwZS51c2VyRGVmKSkgewpAQCAtNjI1LDcgKzYyNiw3IEBAIGJvb2wg
VFBhcnNlQ29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2soaW4KICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGlu
ZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0OjpzdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNU
eXBlJiBwVHlwZSkKIHsKICAgICBpZiAoKHBUeXBlLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5nSW4g
fHwgcFR5cGUucXVhbGlmaWVyID09IEV2cVZhcnlpbmdPdXQgfHwgcFR5cGUucXVhbGlmaWVyID09
IEV2cUF0dHJpYnV0ZSkgJiYKICAgICAgICAgcFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpIHsKQEAg
LTY0MCw3ICs2NDEsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdFF1YWxpZmllckVycm9y
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNh
bXBsZXJFcnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgY29uc3QgVFR5
cGUmIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBjb25zdCBUVHlw
ZSYgdHlwZSkKIHsKICAgICBpZiAoKHF1YWxpZmllciA9PSBFdnFPdXQgfHwgcXVhbGlmaWVyID09
IEV2cUluT3V0KSAmJiAKICAgICAgICAgICAgICB0eXBlLmdldEJhc2ljVHlwZSgpICE9IEVidFN0
cnVjdCAmJiBJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpIHsKQEAgLTY1Nyw5ICs2NTgs
OSBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNvbnRhaW5zU2FtcGxlcihUVHlwCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KSB7
Ci0gICAgICAgIFRUeXBlTGlzdCYgc3RydWN0dXJlID0gKnR5cGUuZ2V0U3RydWN0KCk7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3RydWN0dXJlLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpzdHJ1Y3R1cmVbaV0udHlwZSkpCisg
ICAgICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZpZWxk
cygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxlcigqZmllbGRzW2ldLT50eXBl
KCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAt
NjcyLDcgKzY3Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y29udGFpbnNTYW1wbGVyKFRUeXAK
IC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBh
cnNlQ29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjayhpbnQgbGluZSwgVEludGVybVR5cGVkKiBl
eHByLCBpbnQmIHNpemUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5U2l6ZUVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybVR5cGVkKiBleHByLCBpbnQmIHNpemUpCiB7
CiAgICAgVEludGVybUNvbnN0YW50VW5pb24qIGNvbnN0YW50ID0gZXhwci0+Z2V0QXNDb25zdGFu
dFVuaW9uKCk7CiAgICAgaWYgKGNvbnN0YW50ID09IDAgfHwgY29uc3RhbnQtPmdldEJhc2ljVHlw
ZSgpICE9IEVidEludCkgewpAQCAtNjgwLDcgKzY4MSw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
YXJyYXlTaXplRXJyb3JDaGVjaygKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
c2l6ZSA9IGNvbnN0YW50LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAg
ICBzaXplID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKIAogICAgIGlmIChzaXplIDw9IDApIHsK
ICAgICAgICAgZXJyb3IobGluZSwgImFycmF5IHNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVn
ZXIiLCAiIik7CkBAIC02OTYsNyArNjk3LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNp
emVFcnJvckNoZWNrKAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4K
IC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGlu
ZSwgVFB1YmxpY1R5cGUgdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlRdWFsaWZpZXJF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRQdWJsaWNUeXBlIHR5cGUpCiB7CiAg
ICAgaWYgKCh0eXBlLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUpIHx8ICh0eXBlLnF1YWxpZmll
ciA9PSBFdnFDb25zdCkpIHsKICAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBkZWNsYXJlIGFy
cmF5cyBvZiB0aGlzIHF1YWxpZmllciIsIFRUeXBlKHR5cGUpLmdldENvbXBsZXRlU3RyaW5nKCku
Y19zdHIoKSk7CkBAIC03MTEsNyArNzEyLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVF1
YWxpZmllckVycm9yQwogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlcnJvci4K
IC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soaW50IGxpbmUsIFRQ
dWJsaWNUeXBlIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSkKIHsKICAgICAvLwogICAg
IC8vIENhbiB0aGUgdHlwZSBiZSBhbiBhcnJheT8KQEAgLTczMiw3ICs3MzMsNyBAQCBib29sIFRQ
YXJzZUNvbnRleHQ6OmFycmF5VHlwZUVycm9yQ2hlY2soCiAvLwogLy8gUmV0dXJucyB0cnVlIGlm
IHRoZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JD
aGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZh
cmlhYmxlKiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmFycmF5RXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSB0
eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICAvLwogICAgIC8vIERvbid0IGNoZWNr
IGZvciByZXNlcnZlZCB3b3JkIHVzZSB1bnRpbCBhZnRlciB3ZSBrbm93IGl0J3Mgbm90IGluIHRo
ZSBzeW1ib2wgdGFibGUsCkBAIC03NzcsMTYgKzc3OCw2IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
YXJyYXlFcnJvckNoZWNrKGludCAKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAKLSAgICAgICAgVFR5cGUqIHQgPSB2YXJpYWJsZS0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUo
KTsKLSAgICAgICAgd2hpbGUgKHQgIT0gMCkgewotICAgICAgICAgICAgaWYgKHQtPmdldE1heEFy
cmF5U2l6ZSgpID4gdHlwZS5hcnJheVNpemUpIHsKLSAgICAgICAgICAgICAgICBlcnJvcihsaW5l
LCAiaGlnaGVyIGluZGV4IHZhbHVlIGFscmVhZHkgdXNlZCBmb3IgdGhlIGFycmF5IiwgaWRlbnRp
Zmllci5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHQtPnNldEFycmF5U2l6ZSh0eXBlLmFycmF5U2l6ZSk7Ci0gICAgICAg
ICAgICB0ID0gdC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKTsKLSAgICAgICAgfQotCiAgICAg
ICAgIGlmICh0eXBlLmFycmF5U2l6ZSkKICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCku
c2V0QXJyYXlTaXplKHR5cGUuYXJyYXlTaXplKTsKICAgICB9IApAQCAtNzk3LDU2ICs3ODgsMTIg
QEAgYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheUVycm9yQ2hlY2soaW50IAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVNldE1heFNpemUoVEludGVybVN5
bWJvbCAqbm9kZSwgVFR5cGUqIHR5cGUsIGludCBzaXplLCBib29sIHVwZGF0ZUZsYWcsIFRTb3Vy
Y2VMb2MgbGluZSkKLXsKLSAgICBib29sIGJ1aWx0SW4gPSBmYWxzZTsKLSAgICBUU3ltYm9sKiBz
eW1ib2wgPSBzeW1ib2xUYWJsZS5maW5kKG5vZGUtPmdldFN5bWJvbCgpLCAmYnVpbHRJbik7Ci0g
ICAgaWYgKHN5bWJvbCA9PSAwKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICIgdW5kZWNsYXJlZCBp
ZGVudGlmaWVyIiwgbm9kZS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8VFZhcmlh
YmxlKj4oc3ltYm9sKTsKLQotICAgIHR5cGUtPnNldEFycmF5SW5mb3JtYXRpb25UeXBlKHZhcmlh
YmxlLT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpKTsKLSAgICB2YXJpYWJsZS0+dXBkYXRlQXJy
YXlJbmZvcm1hdGlvblR5cGUodHlwZSk7Ci0KLSAgICAvLyBzcGVjaWFsIGNhc2luZyB0byB0ZXN0
IGluZGV4IHZhbHVlIG9mIGdsX0ZyYWdEYXRhLiBJZiB0aGUgYWNjZXNzZWQgaW5kZXggaXMgPj0g
Z2xfTWF4RHJhd0J1ZmZlcnMKLSAgICAvLyBpdHMgYW4gZXJyb3IKLSAgICBpZiAobm9kZS0+Z2V0
U3ltYm9sKCkgPT0gImdsX0ZyYWdEYXRhIikgewotICAgICAgICBUU3ltYm9sKiBmcmFnRGF0YSA9
IHN5bWJvbFRhYmxlLmZpbmQoImdsX01heERyYXdCdWZmZXJzIiwgJmJ1aWx0SW4pOwotICAgICAg
ICBBU1NFUlQoZnJhZ0RhdGEpOwotCi0gICAgICAgIGludCBmcmFnRGF0YVZhbHVlID0gc3RhdGlj
X2Nhc3Q8VFZhcmlhYmxlKj4oZnJhZ0RhdGEpLT5nZXRDb25zdFBvaW50ZXIoKVswXS5nZXRJQ29u
c3QoKTsKLSAgICAgICAgaWYgKGZyYWdEYXRhVmFsdWUgPD0gc2l6ZSkgewotICAgICAgICAgICAg
ZXJyb3IobGluZSwgIiIsICJbIiwgImdsX0ZyYWdEYXRhIGNhbiBvbmx5IGhhdmUgYSBtYXggYXJy
YXkgc2l6ZSBvZiB1cCB0byBnbF9NYXhEcmF3QnVmZmVycyIpOwotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyB3ZSBkb250IHdhbnQgdG8gdXBkYXRl
IHRoZSBtYXhBcnJheVNpemUgd2hlbiB0aGlzIGZsYWcgaXMgbm90IHNldCwgd2UganVzdCB3YW50
IHRvIGluY2x1ZGUgdGhpcyAKLSAgICAvLyBub2RlIHR5cGUgaW4gdGhlIGNoYWluIG9mIG5vZGUg
dHlwZXMgc28gdGhhdCBpdHMgdXBkYXRlZCB3aGVuIGEgaGlnaGVyIG1heEFycmF5U2l6ZSBjb21l
cyBpbi4KLSAgICBpZiAoIXVwZGF0ZUZsYWcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHNpemUrKzsKLSAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldE1heEFycmF5U2l6ZShzaXplKTsK
LSAgICB0eXBlLT5zZXRNYXhBcnJheVNpemUoc2l6ZSk7Ci0gICAgVFR5cGUqIHR0ID0gdHlwZTsK
LQotICAgIHdoaWxlKHR0LT5nZXRBcnJheUluZm9ybWF0aW9uVHlwZSgpICE9IDApIHsKLSAgICAg
ICAgdHQgPSB0dC0+Z2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoKTsKLSAgICAgICAgdHQtPnNldE1h
eEFycmF5U2l6ZShzaXplKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIC8vCiAv
LyBFbmZvcmNlIG5vbi1pbml0aWFsaXplciB0eXBlL3F1YWxpZmllciBydWxlcy4KIC8vCiAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNlQ29udGV4
dDo6bm9uSW5pdENvbnN0RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwg
VFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpCitib29sIFRQYXJzZUNvbnRleHQ6Om5vbklu
aXRDb25zdEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRp
ZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpCiB7CiAgICAgaWYgKHR5cGUucXVh
bGlmaWVyID09IEV2cUNvbnN0KQogICAgIHsKQEAgLTg3OCw3ICs4MjUsNyBAQCBib29sIFRQYXJz
ZUNvbnRleHQ6Om5vbkluaXRDb25zdEVycm9yQ2hlCiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNo
ZWNrKGludCBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgdHlwZSwgVFZh
cmlhYmxlKiYgdmFyaWFibGUpCitib29sIFRQYXJzZUNvbnRleHQ6Om5vbkluaXRFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJsaWNUeXBl
JiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSkKIHsKICAgICBpZiAocmVzZXJ2ZWRFcnJvckNo
ZWNrKGxpbmUsIGlkZW50aWZpZXIpKQogICAgICAgICByZWNvdmVyKCk7CkBAIC04OTgsNyArODQ1
LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhpbgogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0OjpwYXJhbUVycm9yQ2hlY2soaW50IGxp
bmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVhbGlmaWVyLCBUVHlw
ZSogdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVhbGlm
aWVyLCBUVHlwZSogdHlwZSkKIHsgICAgCiAgICAgaWYgKHF1YWxpZmllciAhPSBFdnFDb25zdCAm
JiBxdWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5KSB7CiAgICAgICAgIGVycm9yKGxpbmUsICJxdWFs
aWZpZXIgbm90IGFsbG93ZWQgb24gZnVuY3Rpb24gcGFyYW1ldGVyIiwgZ2V0UXVhbGlmaWVyU3Ry
aW5nKHF1YWxpZmllcikpOwpAQCAtOTE3LDcgKzg2NCw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
cGFyYW1FcnJvckNoZWNrKGludCAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNl
Q29udGV4dDo6ZXh0ZW5zaW9uRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgZXh0
ZW5zaW9uKQorYm9vbCBUUGFyc2VDb250ZXh0OjpleHRlbnNpb25FcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICBjb25zdCBU
RXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gZXh0ZW5zaW9uQmVoYXZpb3IoKTsKICAg
ICBURXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBleHRCZWhhdmlvci5m
aW5kKGV4dGVuc2lvbi5jX3N0cigpKTsKQEAgLTk0NSwxOCArODkyLDE3IEBAIGJvb2wgVFBhcnNl
Q29udGV4dDo6c3VwcG9ydHNFeHRlbnNpb24oY28KICAgICByZXR1cm4gKGl0ZXIgIT0gZXh0YmVo
YXZpb3IuZW5kKCkpOwogfQogCi12b2lkIFRQYXJzZUNvbnRleHQ6OmhhbmRsZUV4dGVuc2lvbkRp
cmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogZXh0TmFtZSwgY29uc3QgY2hhciogYmVoYXZp
b3IpCitib29sIFRQYXJzZUNvbnRleHQ6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBjaGFyKiBl
eHRlbnNpb24pIGNvbnN0CiB7Ci0gICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYzsKLSAgICBEZWNv
ZGVTb3VyY2VMb2MobGluZSwgJmxvYy5maWxlLCAmbG9jLmxpbmUpOwotICAgIGRpcmVjdGl2ZUhh
bmRsZXIuaGFuZGxlRXh0ZW5zaW9uKGxvYywgZXh0TmFtZSwgYmVoYXZpb3IpOwotfQorICAgIGNv
bnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZXh0YmVoYXZpb3IgPSBleHRlbnNpb25CZWhhdmlvcigp
OworICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBUQmVoYXZpb3I+Ojpjb25zdF9pdGVyYXRvciBp
dGVyID0gZXh0YmVoYXZpb3IuZmluZChleHRlbnNpb24pOwogCi12b2lkIFRQYXJzZUNvbnRleHQ6
OmhhbmRsZVByYWdtYURpcmVjdGl2ZShpbnQgbGluZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3Qg
Y2hhciogdmFsdWUpCi17Ci0gICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYzsKLSAgICBEZWNvZGVT
b3VyY2VMb2MobGluZSwgJmxvYy5maWxlLCAmbG9jLmxpbmUpOwotICAgIGRpcmVjdGl2ZUhhbmRs
ZXIuaGFuZGxlUHJhZ21hKGxvYywgbmFtZSwgdmFsdWUpOworICAgIGlmIChpdGVyID09IGV4dGJl
aGF2aW9yLmVuZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiAoaXRlci0+c2Vjb25kID09IEVCaEVuYWJsZSB8fCBpdGVyLT5zZWNvbmQgPT0gRUJo
UmVxdWlyZSk7CiB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtOTcwLDEyICs5MTYs
MTMgQEAgdm9pZCBUUGFyc2VDb250ZXh0OjpoYW5kbGVQcmFnbWFEaXJlY3RpdgogLy8KIC8vIFJl
dHVybiB0aGUgZnVuY3Rpb24gc3ltYm9sIGlmIGZvdW5kLCBvdGhlcndpc2UgMC4KIC8vCi1jb25z
dCBURnVuY3Rpb24qIFRQYXJzZUNvbnRleHQ6OmZpbmRGdW5jdGlvbihpbnQgbGluZSwgVEZ1bmN0
aW9uKiBjYWxsLCBib29sICpidWlsdEluKQorY29uc3QgVEZ1bmN0aW9uKiBUUGFyc2VDb250ZXh0
OjpmaW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBjYWxsLCBi
b29sICpidWlsdEluKQogewogICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8g
Y2hlY2sgd2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgogICAgIC8vIGhpZGRlbiBi
eSBhIHZhcmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVuYW1lLgorICAgIC8vIElmIGEgZnVuY3Rp
b24gaXMgZm91bmQsIGNoZWNrIGZvciBvbmUgd2l0aCBhIG1hdGNoaW5nIGFyZ3VtZW50IGxpc3Qu
CiAgICAgY29uc3QgVFN5bWJvbCogc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZChjYWxsLT5nZXRO
YW1lKCksIGJ1aWx0SW4pOwotICAgIGlmIChzeW1ib2wgPT0gMCkgeworICAgIGlmIChzeW1ib2wg
PT0gMCB8fCBzeW1ib2wtPmlzRnVuY3Rpb24oKSkgewogICAgICAgICBzeW1ib2wgPSBzeW1ib2xU
YWJsZS5maW5kKGNhbGwtPmdldE1hbmdsZWROYW1lKCksIGJ1aWx0SW4pOwogICAgIH0KIApAQCAt
OTk2LDcgKzk0Myw3IEBAIGNvbnN0IFRGdW5jdGlvbiogVFBhcnNlQ29udGV4dDo6ZmluZEZ1bmMK
IC8vIEluaXRpYWxpemVycyBzaG93IHVwIGluIHNldmVyYWwgcGxhY2VzIGluIHRoZSBncmFtbWFy
LiAgSGF2ZSBvbmUgc2V0IG9mCiAvLyBjb2RlIHRvIGhhbmRsZSB0aGVtIGhlcmUuCiAvLwotYm9v
bCBUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIoVFNvdXJjZUxvYyBsaW5lLCBUU3Ry
aW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYgcFR5cGUsIAorYm9vbCBUUGFyc2VDb250ZXh0
OjpleGVjdXRlSW5pdGlhbGl6ZXIoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRl
bnRpZmllciwgVFB1YmxpY1R5cGUmIHBUeXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5pdGlhbGl6ZXIsIFRJbnRlcm1Ob2RlKiYgaW50
ZXJtTm9kZSwgVFZhcmlhYmxlKiB2YXJpYWJsZSkKIHsKICAgICBUVHlwZSB0eXBlID0gVFR5cGUo
cFR5cGUpOwpAQCAtMTA0OCwxMyArOTk1LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpleGVjdXRl
SW5pdGlhbGl6ZXIoVAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgeyAKLSAgICAgICAgICAg
IENvbnN0YW50VW5pb24qIHVuaW9uQXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29uc3RQb2ludGVyKCk7
Ci0KLSAgICAgICAgICAgIGlmICh0eXBlLmdldE9iamVjdFNpemUoKSA9PSAxICYmIHR5cGUuZ2V0
QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KSB7Ci0gICAgICAgICAgICAgICAgKnVuaW9uQXJyYXkg
PSAoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpKVswXTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUt
PnNoYXJlQ29uc3RQb2ludGVyKGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0
VW5pb25BcnJheVBvaW50ZXIoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB2YXJpYWJs
ZS0+c2hhcmVDb25zdFBvaW50ZXIoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigpLT5n
ZXRVbmlvbkFycmF5UG9pbnRlcigpKTsKICAgICAgICAgfSBlbHNlIGlmIChpbml0aWFsaXplci0+
Z2V0QXNTeW1ib2xOb2RlKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9
IHN5bWJvbFRhYmxlLmZpbmQoaW5pdGlhbGl6ZXItPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1i
b2woKSk7CiAgICAgICAgICAgICBjb25zdCBUVmFyaWFibGUqIHRWYXIgPSBzdGF0aWNfY2FzdDxj
b25zdCBUVmFyaWFibGUqPihzeW1ib2wpOwpAQCAtMTEwOCwxNiArMTA0OSwxNiBAQCBib29sIFRQ
YXJzZUNvbnRleHQ6OmFyZUFsbENoaWxkQ29uc3QoVEluCiAvLwogLy8gUmV0dXJucyAwIGZvciBh
biBlcnJvciBvciB0aGUgY29uc3RydWN0ZWQgbm9kZSAoYWdncmVnYXRlIG9yIHR5cGVkKSBmb3Ig
bm8gZXJyb3IuCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdHJ1Y3Rv
cihUSW50ZXJtTm9kZSogbm9kZSwgY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVEZ1
bmN0aW9uKiBmbkNhbGwsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29u
dGV4dDo6YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUqIG5vZGUsIGNvbnN0IFRUeXBlKiB0eXBl
LCBUT3BlcmF0b3Igb3AsIFRGdW5jdGlvbiogZm5DYWxsLCBjb25zdCBUU291cmNlTG9jJiBsaW5l
KQogewogICAgIGlmIChub2RlID09IDApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgVEludGVy
bUFnZ3JlZ2F0ZSogYWdnck5vZGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOwogICAgIAotICAg
IFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyVHlwZXM7CisgICAgVEZpZWxkTGlzdDo6
Y29uc3RfaXRlcmF0b3IgbWVtYmVyRmllbGRzOwogICAgIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RT
dHJ1Y3QpCi0gICAgICAgIG1lbWJlclR5cGVzID0gdHlwZS0+Z2V0U3RydWN0KCktPmJlZ2luKCk7
CisgICAgICAgIG1lbWJlckZpZWxkcyA9IHR5cGUtPmdldFN0cnVjdCgpLT5maWVsZHMoKS5iZWdp
bigpOwogICAgIAogICAgIFRUeXBlIGVsZW1lbnRUeXBlID0gKnR5cGU7CiAgICAgaWYgKHR5cGUt
PmlzQXJyYXkoKSkKQEAgLTExMzksNyArMTA4MCw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29u
dGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKICAgICAgICAg
ICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgJmVsZW1lbnRUeXBlLCAxLCBub2Rl
LT5nZXRMaW5lKCksIGZhbHNlKTsKICAgICAgICAgZWxzZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0
U3RydWN0KQotICAgICAgICAgICAgbmV3Tm9kZSA9IGNvbnN0cnVjdFN0cnVjdChub2RlLCAoKm1l
bWJlclR5cGVzKS50eXBlLCAxLCBub2RlLT5nZXRMaW5lKCksIGZhbHNlKTsKKyAgICAgICAgICAg
IG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3Qobm9kZSwgKCptZW1iZXJGaWVsZHMpLT50eXBlKCks
IDEsIG5vZGUtPmdldExpbmUoKSwgZmFsc2UpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBu
ZXdOb2RlID0gY29uc3RydWN0QnVpbHRJbih0eXBlLCBvcCwgbm9kZSwgbm9kZS0+Z2V0TGluZSgp
LCBmYWxzZSk7CiAKQEAgLTExNzAsNyArMTExMSw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29u
dGV4dDo6YWRkQ29uc3RydWMKICAgICAgICAgaWYgKHR5cGUtPmlzQXJyYXkoKSkKICAgICAgICAg
ICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAsICZlbGVtZW50VHlwZSwgcGFyYW1Db3Vu
dCsxLCBub2RlLT5nZXRMaW5lKCksIHRydWUpOwogICAgICAgICBlbHNlIGlmIChvcCA9PSBFT3BD
b25zdHJ1Y3RTdHJ1Y3QpCi0gICAgICAgICAgICBuZXdOb2RlID0gY29uc3RydWN0U3RydWN0KCpw
LCAobWVtYmVyVHlwZXNbcGFyYW1Db3VudF0pLnR5cGUsIHBhcmFtQ291bnQrMSwgbm9kZS0+Z2V0
TGluZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG5ld05vZGUgPSBjb25zdHJ1Y3RTdHJ1Y3QoKnAs
IG1lbWJlckZpZWxkc1twYXJhbUNvdW50XS0+dHlwZSgpLCBwYXJhbUNvdW50KzEsIG5vZGUtPmdl
dExpbmUoKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5ld05vZGUgPSBjb25z
dHJ1Y3RCdWlsdEluKHR5cGUsIG9wLCAqcCwgbm9kZS0+Z2V0TGluZSgpLCB0cnVlKTsKICAgICAg
ICAgCkBAIC0xMjE2LDcgKzExNTcsNyBAQCBUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmZv
bGRDb25zdENvCiAvLwogLy8gUmV0dXJucyAwIGZvciBhbiBlcnJvciBvciB0aGUgY29uc3RydWN0
ZWQgbm9kZS4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVjdEJ1aWx0
SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVEludGVybU5vZGUqIG5vZGUsIFRT
b3VyY2VMb2MgbGluZSwgYm9vbCBzdWJzZXQpCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6
OmNvbnN0cnVjdEJ1aWx0SW4oY29uc3QgVFR5cGUqIHR5cGUsIFRPcGVyYXRvciBvcCwgVEludGVy
bU5vZGUqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGJvb2wgc3Vic2V0KQogewogICAg
IFRJbnRlcm1UeXBlZCogbmV3Tm9kZTsKICAgICBUT3BlcmF0b3IgYmFzaWNPcDsKQEAgLTEyNzgs
NyArMTIxOSw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0QnUKIC8v
CiAvLyBSZXR1cm5zIDAgZm9yIGFuIGVycm9yIG9yIHRoZSBpbnB1dCBub2RlIGl0c2VsZiBpZiB0
aGUgZXhwZWN0ZWQgYW5kIHRoZSBnaXZlbiBwYXJhbWV0ZXIgdHlwZXMgbWF0Y2guCiAvLwotVElu
dGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdHJ1Y3QoVEludGVybU5vZGUqIG5v
ZGUsIFRUeXBlKiB0eXBlLCBpbnQgcGFyYW1Db3VudCwgVFNvdXJjZUxvYyBsaW5lLCBib29sIHN1
YnNldCkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Y29uc3RydWN0U3RydWN0KFRJbnRl
cm1Ob2RlKiBub2RlLCBUVHlwZSogdHlwZSwgaW50IHBhcmFtQ291bnQsIGNvbnN0IFRTb3VyY2VM
b2MmIGxpbmUsIGJvb2wgc3Vic2V0KQogewogICAgIGlmICgqdHlwZSA9PSBub2RlLT5nZXRBc1R5
cGVkKCktPmdldFR5cGUoKSkgewogICAgICAgICBpZiAoc3Vic2V0KQpAQCAtMTMwNSw3ICsxMjQ2
LDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RTdAogLy8gbm9kZSBv
ciBpdCBjb3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRyZWUgcmVwcmVzZW50YXRpb24gb2YgYWNj
ZXNzaW5nIGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVjdHVyZSBvciBjb2x1bW4gb2YgCiAvLyBh
IGNvbnN0YW50IG1hdHJpeC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENv
bnN0VmVjdG9yTm9kZShUVmVjdG9yRmllbGRzJiBmaWVsZHMsIFRJbnRlcm1UeXBlZCogbm9kZSwg
VFNvdXJjZUxvYyBsaW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFZl
Y3Rvck5vZGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0eXBlZE5vZGU7CiAgICAg
VEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0
YW50VW5pb24oKTsKQEAgLTEzMTMsNyArMTI1NCw2IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29u
dGV4dDo6YWRkQ29uc3RWZWMKICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5OwogICAgIGlm
ICh0ZW1wQ29uc3RhbnROb2RlKSB7CiAgICAgICAgIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnRO
b2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAgICAgICBBU1NFUlQodW5pb25BcnJheSk7
CiAKICAgICAgICAgaWYgKCF1bmlvbkFycmF5KSB7CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsK
QEAgLTEzMjgsNyArMTI2OCw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29u
c3RWZWMKICAgICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gbmV3IENvbnN0YW50VW5pb25b
ZmllbGRzLm51bV07CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpZWxkcy5udW07IGkrKykg
ewotICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0gPj0gbm9kZS0+Z2V0VHlwZSgpLmdldE9i
amVjdFNpemUoKSkgeworICAgICAgICBpZiAoZmllbGRzLm9mZnNldHNbaV0gPj0gbm9kZS0+Z2V0
VHlwZSgpLmdldE5vbWluYWxTaXplKCkpIHsKICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAidmVjdG9y
IGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgZmllbGRzLm9mZnNldHNbaV0gPDwg
IiciOwogICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFt
LnN0cigpOwpAQCAtMTM1MCw3ICsxMjkwLDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0
OjphZGRDb25zdFZlYwogLy8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJv
bCBub2RlIChtWzBdIHdoZXJlIG0gaXMgYSBjb25zdGFudCBtYXRyaXgpdGhhdCByZXByZXNlbnRz
IGEgCiAvLyBjb25zdGFudCBtYXRyaXggb3IgaXQgY291bGQgYmUgdGhlIHRyZWUgcmVwcmVzZW50
YXRpb24gb2YgdGhlIGNvbnN0YW50IG1hdHJpeCAocy5tMVswXSB3aGVyZSBzIGlzIGEgY29uc3Rh
bnQgc3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RN
YXRyaXhOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBUU291cmNlTG9jIGxpbmUp
CitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0TWF0cml4Tm9kZShpbnQgaW5k
ZXgsIFRJbnRlcm1UeXBlZCogbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSkKIHsKICAgICBU
SW50ZXJtVHlwZWQqIHR5cGVkTm9kZTsKICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogdGVtcENv
bnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwpAQCAtMTM4NSw3ICsxMzI1
LDcgQEAgVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdE1hdAogLy8gdG8gdGhl
IGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChhWzBdIHdoZXJlIGEgaXMg
YSBjb25zdGFudCBhcnJheSl0aGF0IHJlcHJlc2VudHMgYSAKIC8vIGNvbnN0YW50IGFycmF5IG9y
IGl0IGNvdWxkIGJlIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25zdGFudCBhcnJh
eSAocy5hMVswXSB3aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQogLy8KLVRJbnRlcm1U
eXBlZCogVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJt
VHlwZWQqIG5vZGUsIFRTb3VyY2VMb2MgbGluZSkKK1RJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4
dDo6YWRkQ29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpCiB7CiAgICAgVEludGVybVR5cGVkKiB0eXBlZE5vZGU7CiAgICAg
VEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0
YW50VW5pb24oKTsKQEAgLTE0MDEsOSArMTM0MSw4IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29u
dGV4dDo6YWRkQ29uc3RBcnIKICAgICAgICAgaW5kZXggPSAwOwogICAgIH0KIAotICAgIGludCBh
cnJheUVsZW1lbnRTaXplID0gYXJyYXlFbGVtZW50VHlwZS5nZXRPYmplY3RTaXplKCk7Ci0KICAg
ICBpZiAodGVtcENvbnN0YW50Tm9kZSkgeworICAgICAgICAgc2l6ZV90IGFycmF5RWxlbWVudFNp
emUgPSBhcnJheUVsZW1lbnRUeXBlLmdldE9iamVjdFNpemUoKTsKICAgICAgICAgIENvbnN0YW50
VW5pb24qIHVuaW9uQXJyYXkgPSB0ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpOwogICAgICAgICAgdHlwZWROb2RlID0gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
JnVuaW9uQXJyYXlbYXJyYXlFbGVtZW50U2l6ZSAqIGluZGV4XSwgdGVtcENvbnN0YW50Tm9kZS0+
Z2V0VHlwZSgpLCBsaW5lKTsKICAgICB9IGVsc2UgewpAQCAtMTQyMiwyMiArMTM2MSwyMSBAQCBU
SW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0QXJyCiAvLyBJZiB0aGVyZSBpcyBh
biBlbWJlZGRlZC9uZXN0ZWQgc3RydWN0LCBpdCBhcHByb3ByaWF0ZWx5IGNhbGxzIGFkZENvbnN0
U3RydWN0TmVzdGVkIG9yIGFkZENvbnN0U3RydWN0RnJvbUFnZ3IKIC8vIGZ1bmN0aW9uIGFuZCBy
ZXR1cm5zIHRoZSBwYXJzZS10cmVlIHdpdGggdGhlIHZhbHVlcyBvZiB0aGUgZW1iZWRkZWQvbmVz
dGVkIHN0cnVjdC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENvbnN0U3Ry
dWN0KFRTdHJpbmcmIGlkZW50aWZpZXIsIFRJbnRlcm1UeXBlZCogbm9kZSwgVFNvdXJjZUxvYyBs
aW5lKQorVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFN0cnVjdChUU3RyaW5n
JiBpZGVudGlmaWVyLCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUp
CiB7Ci0gICAgY29uc3QgVFR5cGVMaXN0KiBmaWVsZHMgPSBub2RlLT5nZXRUeXBlKCkuZ2V0U3Ry
dWN0KCk7Ci0gICAgVEludGVybVR5cGVkICp0eXBlZE5vZGU7Ci0gICAgaW50IGluc3RhbmNlU2l6
ZSA9IDA7Ci0gICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKLSAgICBUSW50ZXJtQ29uc3RhbnRV
bmlvbiAqdGVtcENvbnN0YW50Tm9kZSA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAg
IGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IG5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+
ZmllbGRzKCk7CiAKLSAgICBmb3IgKCBpbmRleCA9IDA7IGluZGV4IDwgZmllbGRzLT5zaXplKCk7
ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKCgqZmllbGRzKVtpbmRleF0udHlwZS0+Z2V0RmllbGRO
YW1lKCkgPT0gaWRlbnRpZmllcikgeworICAgIHNpemVfdCBpbnN0YW5jZVNpemUgPSAwOworICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZHMuc2l6ZSgpOyArK2luZGV4KSB7
CisgICAgICAgIGlmIChmaWVsZHNbaW5kZXhdLT5uYW1lKCkgPT0gaWRlbnRpZmllcikgewogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbnN0YW5jZVNp
emUgKz0gKCpmaWVsZHMpW2luZGV4XS50eXBlLT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAg
ICBpbnN0YW5jZVNpemUgKz0gZmllbGRzW2luZGV4XS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBUSW50ZXJtVHlwZWQqIHR5cGVkTm9kZSA9IDA7Cisg
ICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5nZXRBc0Nv
bnN0YW50VW5pb24oKTsKICAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgewogICAgICAgICAgQ29u
c3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHRlbXBDb25zdGFudE5vZGUtPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCk7CiAKQEAgLTE0NTIsNyArMTM5MCw3IEBAIFRJbnRlcm1UeXBlZCogVFBhcnNlQ29u
dGV4dDo6YWRkQ29uc3RTdHIKICAgICByZXR1cm4gdHlwZWROb2RlOwogfQogCi1ib29sIFRQYXJz
ZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24oaW50IGxpbmUsIGNvbnN0IFRTdHJpbmcm
IGlkZW50aWZpZXIpCitib29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24o
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKIHsKICAg
ICArK3N0cnVjdE5lc3RpbmdMZXZlbDsKIApAQCAtMTQ3OCwyMSArMTQxNiwyMSBAQCBjb25zdCBp
bnQga1dlYkdMTWF4U3RydWN0TmVzdGluZyA9IDQ7CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1ib29s
IFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKFRTb3VyY2VMb2MgbGluZSwg
Y29uc3QgVFR5cGUmIGZpZWxkVHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6c3RydWN0TmVzdGlu
Z0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEZpZWxkJiBmaWVsZCkK
IHsKICAgICBpZiAoIWlzV2ViR0xCYXNlZFNwZWMoc2hhZGVyU3BlYykpIHsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChmaWVsZFR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0g
RWJ0U3RydWN0KSB7CisgICAgaWYgKGZpZWxkLnR5cGUoKS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0
U3RydWN0KSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAvLyBXZSdyZSBh
bHJlYWR5IGluc2lkZSBhIHN0cnVjdHVyZSBkZWZpbml0aW9uIGF0IHRoaXMgcG9pbnQsIHNvIGFk
ZAogICAgIC8vIG9uZSB0byB0aGUgZmllbGQncyBzdHJ1Y3QgbmVzdGluZy4KLSAgICBpZiAoMSAr
IGZpZWxkVHlwZS5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpID4ga1dlYkdMTWF4U3RydWN0TmVz
dGluZykgeworICAgIGlmICgxICsgZmllbGQudHlwZSgpLT5nZXREZWVwZXN0U3RydWN0TmVzdGlu
ZygpID4ga1dlYkdMTWF4U3RydWN0TmVzdGluZykgewogICAgICAgICBzdGQ6OnN0cmluZ3N0cmVh
bSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNl
IG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGRUeXBlLmdldFR5cGVOYW1lKCkgCisgICAgICAgIGV4
dHJhSW5mb1N0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0cnVjdCB0eXBlICIgPDwgZmllbGQubmFt
ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGV4Y2VlZHMgbWF4aW11bSBzdHJ1Y3Qg
bmVzdGluZyBvZiAiIDw8IGtXZWJHTE1heFN0cnVjdE5lc3Rpbmc7CiAgICAgICAgIHN0ZDo6c3Ry
aW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKICAgICAgICAgZXJyb3IobGlu
ZSwgIiIsICIiLCBleHRyYUluZm8uY19zdHIoKSk7CkBAIC0xNTAzLDYgKzE0NDEsMTQwIEBAIGJv
b2wgVFBhcnNlQ29udGV4dDo6c3RydWN0TmVzdGluZ0Vycm9yQ2gKIH0KIAogLy8KKy8vIFBhcnNl
IGFuIGFycmF5IGluZGV4IGV4cHJlc3Npb24KKy8vCitUSW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRl
eHQ6OmFkZEluZGV4RXhwcmVzc2lvbihUSW50ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9uLCBjb25z
dCBUU291cmNlTG9jJiBsb2NhdGlvbiwgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24pCit7
CisgICAgVEludGVybVR5cGVkICppbmRleGVkRXhwcmVzc2lvbiA9IE5VTEw7CisKKyAgICBpZiAo
IWJhc2VFeHByZXNzaW9uLT5pc0FycmF5KCkgJiYgIWJhc2VFeHByZXNzaW9uLT5pc01hdHJpeCgp
ICYmICFiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKKyAgICB7CisgICAgICAgIGlmIChiYXNl
RXhwcmVzc2lvbi0+Z2V0QXNTeW1ib2xOb2RlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVy
cm9yKGxvY2F0aW9uLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgs
IG9yIHZlY3RvciAiLCBiYXNlRXhwcmVzc2lvbi0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJv
bCgpLmNfc3RyKCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAg
ICAgICAgZXJyb3IobG9jYXRpb24sICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJyYXks
IG1hdHJpeCwgb3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7CisgICAgICAgIH0KKyAgICAgICAg
cmVjb3ZlcigpOworICAgIH0KKworICAgIGlmIChpbmRleEV4cHJlc3Npb24tPmdldFF1YWxpZmll
cigpID09IEV2cUNvbnN0KQorICAgIHsKKyAgICAgICAgaW50IGluZGV4ID0gaW5kZXhFeHByZXNz
aW9uLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOworICAgICAgICBpZiAoaW5k
ZXggPCAwKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBpbmZvU3Ry
ZWFtOworICAgICAgICAgICAgaW5mb1N0cmVhbSA8PCBpbmRleDsKKyAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIGluZm8gPSBpbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgZXJyb3IobG9jYXRp
b24sICJuZWdhdGl2ZSBpbmRleCIsIGluZm8uY19zdHIoKSk7CisgICAgICAgICAgICByZWNvdmVy
KCk7CisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJhc2VF
eHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNBcnJheSgpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIGFycmF5cworICAg
ICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYWRkQ29uc3RBcnJheU5vZGUoaW5kZXgs
IGJhc2VFeHByZXNzaW9uLCBsb2NhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAgICAg
ICAgVFZlY3RvckZpZWxkcyBmaWVsZHM7CisgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7
CisgICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVlZCB0byBk
byBpdCB0aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkKKyAg
ICAgICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGFkZENvbnN0VmVjdG9yTm9kZShmaWVs
ZHMsIGJhc2VFeHByZXNzaW9uLCBsb2NhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgoKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBtYXRyaWNlcworICAgICAgICAg
ICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYWRkQ29uc3RNYXRyaXhOb2RlKGluZGV4LCBiYXNl
RXhwcmVzc2lvbiwgbG9jYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5pc0FycmF5
KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IGJhc2VFeHBy
ZXNzaW9uLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CisgICAg
ICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJh
bmdlICciIDw8IGluZGV4IDw8ICInIjsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcg
ZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOworICAgICAgICAgICAgICAgICAgICBl
cnJvcihsb2NhdGlvbiwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAgICAgICAgICAg
ICAgICAgICByZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gYmFzZUV4cHJl
c3Npb24tPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9
PSBFdnFGcmFnRGF0YSAmJiBpbmRleCA+IDAgJiYgIWlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X2RyYXdfYnVmZmVycyIpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ZXJyb3IobG9jYXRpb24sICIiLCAiWyIsICJhcnJheSBpbmRleGVzIGZvciBnbF9GcmFnRGF0YSBt
dXN0IGJlIHplcm8gd2hlbiBHTF9FWFRfZHJhd19idWZmZXJzIGlzIGRpc2FibGVkIik7CisgICAg
ICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAw
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYg
KChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSB8fCBiYXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgo
KSkgJiYgYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIDw9IGluZGV4
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJh
SW5mb1N0cmVhbTsKKyAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImZpZWxkIHNl
bGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKKyAgICAgICAg
ICAgICAgICBlcnJvcihsb2NhdGlvbiwgIiIsICJbIiwgZXh0cmFJbmZvLmNfc3RyKCkpOworICAg
ICAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICBpbmRleCA9IGJhc2VFeHBy
ZXNzaW9uLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSAtIDE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGluZGV4RXhwcmVzc2lvbi0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVu
aW9uQXJyYXlQb2ludGVyKCktPnNldElDb25zdChpbmRleCk7CisgICAgICAgICAgICBpbmRleGVk
RXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgYmFzZUV4
cHJlc3Npb24sIGluZGV4RXhwcmVzc2lvbiwgbG9jYXRpb24pOworICAgICAgICB9CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gaW50ZXJtZWRpYXRl
LmFkZEluZGV4KEVPcEluZGV4SW5kaXJlY3QsIGJhc2VFeHByZXNzaW9uLCBpbmRleEV4cHJlc3Np
b24sIGxvY2F0aW9uKTsKKyAgICB9CisKKyAgICBpZiAoaW5kZXhlZEV4cHJlc3Npb24gPT0gMCkK
KyAgICB7CisgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRV
bmlvblsxXTsKKyAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOworICAgICAgICBp
bmRleGVkRXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCksIGxvY2F0aW9uKTsKKyAgICB9
CisgICAgZWxzZSBpZiAoYmFzZUV4cHJlc3Npb24tPmlzQXJyYXkoKSkKKyAgICB7CisgICAgICAg
IGNvbnN0IFRUeXBlICZiYXNlVHlwZSA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCk7CisgICAg
ICAgIGlmIChiYXNlVHlwZS5nZXRTdHJ1Y3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAgVFR5
cGUgY29weU9mVHlwZShiYXNlVHlwZS5nZXRTdHJ1Y3QoKSk7CisgICAgICAgICAgICBpbmRleGVk
RXhwcmVzc2lvbi0+c2V0VHlwZShjb3B5T2ZUeXBlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKFRUeXBl
KGJhc2VFeHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFzZUV4cHJlc3Npb24tPmdldFByZWNp
c2lvbigpLCBFdnFUZW1wb3JhcnksIGJhc2VFeHByZXNzaW9uLT5nZXROb21pbmFsU2l6ZSgpLCBi
YXNlRXhwcmVzc2lvbi0+aXNNYXRyaXgoKSkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJh
c2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5nZXRUeXBlUG9pbnRlcigpLT5z
ZXRRdWFsaWZpZXIoRXZxQ29uc3QpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGJh
c2VFeHByZXNzaW9uLT5pc01hdHJpeCgpKQorICAgIHsKKyAgICAgICAgVFF1YWxpZmllciBxdWFs
aWZpZXIgPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNv
bnN0ID8gRXZxQ29uc3QgOiBFdnFUZW1wb3Jhcnk7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9u
LT5zZXRUeXBlKFRUeXBlKGJhc2VFeHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFzZUV4cHJl
c3Npb24tPmdldFByZWNpc2lvbigpLCBxdWFsaWZpZXIsIGJhc2VFeHByZXNzaW9uLT5nZXROb21p
bmFsU2l6ZSgpKSk7CisgICAgfQorICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5pc1ZlY3Rv
cigpKQorICAgIHsKKyAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBiYXNlRXhwcmVzc2lv
bi0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0ID8gRXZxQ29uc3QgOiBFdnFU
ZW1wb3Jhcnk7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKFRUeXBlKGJhc2VF
eHByZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFzZUV4cHJlc3Npb24tPmdldFByZWNpc2lvbigp
LCBxdWFsaWZpZXIpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaW5kZXhlZEV4
cHJlc3Npb24tPnNldFR5cGUoYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKSk7CisgICAgfQorCisg
ICAgcmV0dXJuIGluZGV4ZWRFeHByZXNzaW9uOworfQorCisvLwogLy8gUGFyc2UgYW4gYXJyYXkg
b2Ygc3RyaW5ncyB1c2luZyB5eXBhcnNlLgogLy8KIC8vIFJldHVybnMgMCBmb3Igc3VjY2Vzcy4K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9QYXJz
ZUhlbHBlci5oCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMzMsMTAgKzMzLDggQEAg
c3RydWN0IFRQYXJzZUNvbnRleHQgewogICAgICAgICAgICAgY29tcGlsZU9wdGlvbnMob3B0aW9u
cyksCiAgICAgICAgICAgICBzb3VyY2VQYXRoKHNvdXJjZVBhdGgpLAogICAgICAgICAgICAgdHJl
ZVJvb3QoMCksCi0gICAgICAgICAgICBsZXhBZnRlclR5cGUoZmFsc2UpLAogICAgICAgICAgICAg
bG9vcE5lc3RpbmdMZXZlbCgwKSwKICAgICAgICAgICAgIHN0cnVjdE5lc3RpbmdMZXZlbCgwKSwK
LSAgICAgICAgICAgIGluVHlwZVBhcmVuKGZhbHNlKSwKICAgICAgICAgICAgIGN1cnJlbnRGdW5j
dGlvblR5cGUoTlVMTCksCiAgICAgICAgICAgICBmdW5jdGlvblJldHVybnNWYWx1ZShmYWxzZSks
CiAgICAgICAgICAgICBjaGVja3NQcmVjaXNpb25FcnJvcnMoY2hlY2tzUHJlY0Vycm9ycyksCkBA
IC01MSwxNiArNDksMTMgQEAgc3RydWN0IFRQYXJzZUNvbnRleHQgewogICAgIGludCBjb21waWxl
T3B0aW9uczsKICAgICBjb25zdCBjaGFyKiBzb3VyY2VQYXRoOyAgICAgIC8vIFBhdGggb2Ygc291
cmNlIGZpbGUgb3IgTlVMTC4KICAgICBUSW50ZXJtTm9kZSogdHJlZVJvb3Q7ICAgICAgIC8vIHJv
b3Qgb2YgcGFyc2UgdHJlZSBiZWluZyBjcmVhdGVkCi0gICAgYm9vbCBsZXhBZnRlclR5cGU7ICAg
ICAgICAgICAvLyB0cnVlIGlmIHdlJ3ZlIHJlY29nbml6ZWQgYSB0eXBlLCBzbyBjYW4gb25seSBi
ZSBsb29raW5nIGZvciBhbiBpZGVudGlmaWVyCiAgICAgaW50IGxvb3BOZXN0aW5nTGV2ZWw7ICAg
ICAgICAvLyAwIGlmIG91dHNpZGUgYWxsIGxvb3BzCiAgICAgaW50IHN0cnVjdE5lc3RpbmdMZXZl
bDsgICAgICAvLyBpbmNyZW1lbnRlZCB3aGlsZSBwYXJzaW5nIGEgc3RydWN0IGRlY2xhcmF0aW9u
Ci0gICAgYm9vbCBpblR5cGVQYXJlbjsgICAgICAgICAgICAvLyB0cnVlIGlmIGluIHBhcmVudGhl
c2VzLCBsb29raW5nIG9ubHkgZm9yIGFuIGlkZW50aWZpZXIKICAgICBjb25zdCBUVHlwZSogY3Vy
cmVudEZ1bmN0aW9uVHlwZTsgIC8vIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gdGhh
dCdzIGN1cnJlbnRseSBiZWluZyBwYXJzZWQKICAgICBib29sIGZ1bmN0aW9uUmV0dXJuc1ZhbHVl
OyAgIC8vIHRydWUgaWYgYSBub24tdm9pZCBmdW5jdGlvbiBoYXMgYSByZXR1cm4KICAgICBib29s
IGNoZWNrc1ByZWNpc2lvbkVycm9yczsgIC8vIHRydWUgaWYgYW4gZXJyb3Igd2lsbCBiZSBnZW5l
cmF0ZWQgd2hlbiBhIHZhcmlhYmxlIGlzIGRlY2xhcmVkIHdpdGhvdXQgcHJlY2lzaW9uLCBleHBs
aWNpdCBvciBpbXBsaWNpdC4KICAgICBib29sIGZyYWdtZW50UHJlY2lzaW9uSGlnaDsgIC8vIHRy
dWUgaWYgaGlnaHAgcHJlY2lzaW9uIGlzIHN1cHBvcnRlZCBpbiB0aGUgZnJhZ21lbnQgbGFuZ3Vh
Z2UuCiAgICAgVFN0cmluZyBIYXNoRXJyTXNnOwotICAgIGJvb2wgQWZ0ZXJFT0Y7CiAgICAgVERp
YWdub3N0aWNzIGRpYWdub3N0aWNzOwogICAgIFREaXJlY3RpdmVIYW5kbGVyIGRpcmVjdGl2ZUhh
bmRsZXI7CiAgICAgcHA6OlByZXByb2Nlc3NvciBwcmVwcm9jZXNzb3I7CkBAIC02OCw3MSArNjMs
NjkgQEAgc3RydWN0IFRQYXJzZUNvbnRleHQgewogCiAgICAgaW50IG51bUVycm9ycygpIGNvbnN0
IHsgcmV0dXJuIGRpYWdub3N0aWNzLm51bUVycm9ycygpOyB9CiAgICAgVEluZm9TaW5rJiBpbmZv
U2luaygpIHsgcmV0dXJuIGRpYWdub3N0aWNzLmluZm9TaW5rKCk7IH0KLSAgICB2b2lkIGVycm9y
KFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLAor
ICAgIHZvaWQgZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLCBjb25zdCBjaGFyICpyZWFzb24s
IGNvbnN0IGNoYXIqIHRva2VuLAogICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZv
PSIiKTsKLSAgICB2b2lkIHdhcm5pbmcoVFNvdXJjZUxvYyBsb2MsIGNvbnN0IGNoYXIqIHJlYXNv
biwgY29uc3QgY2hhciogdG9rZW4sCisgICAgdm9pZCB3YXJuaW5nKGNvbnN0IFRTb3VyY2VMb2Mm
IGxvYywgY29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbiwKICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvPSIiKTsKICAgICB2b2lkIHRyYWNlKGNvbnN0IGNo
YXIqIHN0cik7CiAgICAgdm9pZCByZWNvdmVyKCk7CiAKLSAgICBib29sIHBhcnNlVmVjdG9yRmll
bGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYsIGludCBsaW5l
KTsKLSAgICBib29sIHBhcnNlTWF0cml4RmllbGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgbWF0U2l6
ZSwgVE1hdHJpeEZpZWxkcyYsIGludCBsaW5lKTsKKyAgICBib29sIHBhcnNlVmVjdG9yRmllbGRz
KGNvbnN0IFRTdHJpbmcmLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYsIGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUpOworICAgIGJvb2wgcGFyc2VNYXRyaXhGaWVsZHMoY29uc3QgVFN0cmluZyYs
IGludCBtYXRTaXplLCBUTWF0cml4RmllbGRzJiwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSk7CiAK
LSAgICBib29sIHJlc2VydmVkRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFN0cmluZyYgaWRl
bnRpZmllcik7Ci0gICAgdm9pZCBhc3NpZ25FcnJvcihpbnQgbGluZSwgY29uc3QgY2hhciogb3As
IFRTdHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCk7Ci0gICAgdm9pZCB1bmFyeU9wRXJyb3IoaW50
IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpOwotICAgIHZvaWQgYmluYXJ5
T3BFcnJvcihpbnQgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmluZyBy
aWdodCk7Ci0gICAgYm9vbCBwcmVjaXNpb25FcnJvckNoZWNrKGludCBsaW5lLCBUUHJlY2lzaW9u
IHByZWNpc2lvbiwgVEJhc2ljVHlwZSB0eXBlKTsKLSAgICBib29sIGxWYWx1ZUVycm9yQ2hlY2so
aW50IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50ZXJtVHlwZWQqKTsKKyAgICBib29sIHJlc2Vy
dmVkRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVu
dGlmaWVyKTsKKyAgICB2b2lkIGFzc2lnbkVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNv
bnN0IGNoYXIqIG9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpOworICAgIHZvaWQgdW5h
cnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5n
IG9wZXJhbmQpOworICAgIHZvaWQgYmluYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKKyAgICBib29s
IHByZWNpc2lvbkVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFByZWNpc2lvbiBw
cmVjaXNpb24sIFRCYXNpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBsVmFsdWVFcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUSW50ZXJtVHlwZWQqKTsKICAg
ICBib29sIGNvbnN0RXJyb3JDaGVjayhUSW50ZXJtVHlwZWQqIG5vZGUpOwogICAgIGJvb2wgaW50
ZWdlckVycm9yQ2hlY2soVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBjaGFyKiB0b2tlbik7Ci0g
ICAgYm9vbCBnbG9iYWxFcnJvckNoZWNrKGludCBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hh
ciogdG9rZW4pOwotICAgIGJvb2wgY29uc3RydWN0b3JFcnJvckNoZWNrKGludCBsaW5lLCBUSW50
ZXJtTm9kZSosIFRGdW5jdGlvbiYsIFRPcGVyYXRvciwgVFR5cGUqKTsKLSAgICBib29sIGFycmF5
U2l6ZUVycm9yQ2hlY2soaW50IGxpbmUsIFRJbnRlcm1UeXBlZCogZXhwciwgaW50JiBzaXplKTsK
LSAgICBib29sIGFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhpbnQgbGluZSwgVFB1YmxpY1R5cGUg
dHlwZSk7Ci0gICAgYm9vbCBhcnJheVR5cGVFcnJvckNoZWNrKGludCBsaW5lLCBUUHVibGljVHlw
ZSB0eXBlKTsKLSAgICBib29sIGFycmF5RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0cmluZyYgaWRl
bnRpZmllciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOwotICAgIGJv
b2wgdm9pZEVycm9yQ2hlY2soaW50LCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFB1YmxpY1R5cGUm
KTsKLSAgICBib29sIGJvb2xFcnJvckNoZWNrKGludCwgY29uc3QgVEludGVybVR5cGVkKik7Ci0g
ICAgYm9vbCBib29sRXJyb3JDaGVjayhpbnQsIGNvbnN0IFRQdWJsaWNUeXBlJik7Ci0gICAgYm9v
bCBzYW1wbGVyRXJyb3JDaGVjayhpbnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBj
b25zdCBjaGFyKiByZWFzb24pOwotICAgIGJvb2wgc3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhp
bnQgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKTsKLSAgICBib29sIHBhcmFtZXRlclNh
bXBsZXJFcnJvckNoZWNrKGludCBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgY29uc3QgVFR5
cGUmIHR5cGUpOwotICAgIGJvb2wgbm9uSW5pdENvbnN0RXJyb3JDaGVjayhpbnQgbGluZSwgVFN0
cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHR5cGUsIGJvb2wgYXJyYXkpOwotICAgIGJv
b2wgbm9uSW5pdEVycm9yQ2hlY2soaW50IGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJs
aWNUeXBlJiB0eXBlLCBUVmFyaWFibGUqJiB2YXJpYWJsZSk7Ci0gICAgYm9vbCBwYXJhbUVycm9y
Q2hlY2soaW50IGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBhcmFtUXVh
bGlmaWVyLCBUVHlwZSogdHlwZSk7Ci0gICAgYm9vbCBleHRlbnNpb25FcnJvckNoZWNrKGludCBs
aW5lLCBjb25zdCBUU3RyaW5nJik7CisgICAgYm9vbCBnbG9iYWxFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIGJvb2wgZ2xvYmFsLCBjb25zdCBjaGFyKiB0b2tlbik7CisgICAgYm9v
bCBjb25zdHJ1Y3RvckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVEludGVybU5v
ZGUqLCBURnVuY3Rpb24mLCBUT3BlcmF0b3IsIFRUeXBlKik7CisgICAgYm9vbCBhcnJheVNpemVF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJbnRlcm1UeXBlZCogZXhwciwgaW50
JiBzaXplKTsKKyAgICBib29sIGFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBUUHVibGljVHlwZSB0eXBlKTsKKyAgICBib29sIGFycmF5VHlwZUVycm9yQ2hl
Y2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFB1YmxpY1R5cGUgdHlwZSk7CisgICAgYm9vbCBh
cnJheUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFN0cmluZyYgaWRlbnRpZmll
ciwgVFB1YmxpY1R5cGUgdHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOworICAgIGJvb2wgdm9p
ZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYsIGNvbnN0IFRTdHJpbmcmLCBjb25zdCBUUHVi
bGljVHlwZSYpOworICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYsIGNv
bnN0IFRJbnRlcm1UeXBlZCopOworICAgIGJvb2wgYm9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYsIGNvbnN0IFRQdWJsaWNUeXBlJik7CisgICAgYm9vbCBzYW1wbGVyRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSYgcFR5cGUsIGNvbnN0IGNo
YXIqIHJlYXNvbik7CisgICAgYm9vbCBzdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSk7CisgICAgYm9vbCBwYXJh
bWV0ZXJTYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVy
IHF1YWxpZmllciwgY29uc3QgVFR5cGUmIHR5cGUpOworICAgIGJvb2wgbm9uSW5pdENvbnN0RXJy
b3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVi
bGljVHlwZSYgdHlwZSwgYm9vbCBhcnJheSk7CisgICAgYm9vbCBub25Jbml0RXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBUU3RyaW5nJiBpZGVudGlmaWVyLCBUUHVibGljVHlwZSYg
dHlwZSwgVFZhcmlhYmxlKiYgdmFyaWFibGUpOworICAgIGJvb2wgcGFyYW1FcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBh
cmFtUXVhbGlmaWVyLCBUVHlwZSogdHlwZSk7CisgICAgYm9vbCBleHRlbnNpb25FcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRTdHJpbmcmKTsKIAorICAgIGNvbnN0IFRQ
cmFnbWEmIHByYWdtYSgpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGl2ZUhhbmRsZXIucHJhZ21hKCk7
IH0KICAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dGVuc2lvbkJlaGF2aW9yKCkgY29u
c3QgeyByZXR1cm4gZGlyZWN0aXZlSGFuZGxlci5leHRlbnNpb25CZWhhdmlvcigpOyB9CiAgICAg
Ym9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBjaGFyKiBleHRlbnNpb24pOwotICAgIHZvaWQg
aGFuZGxlRXh0ZW5zaW9uRGlyZWN0aXZlKGludCBsaW5lLCBjb25zdCBjaGFyKiBleHROYW1lLCBj
b25zdCBjaGFyKiBiZWhhdmlvcik7Ci0KLSAgICBjb25zdCBUUHJhZ21hJiBwcmFnbWEoKSBjb25z
dCB7IHJldHVybiBkaXJlY3RpdmVIYW5kbGVyLnByYWdtYSgpOyB9Ci0gICAgdm9pZCBoYW5kbGVQ
cmFnbWFEaXJlY3RpdmUoaW50IGxpbmUsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZh
bHVlKTsKKyAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBjaGFyKiBleHRlbnNpb24p
IGNvbnN0OwogCiAgICAgYm9vbCBjb250YWluc1NhbXBsZXIoVFR5cGUmIHR5cGUpOwogICAgIGJv
b2wgYXJlQWxsQ2hpbGRDb25zdChUSW50ZXJtQWdncmVnYXRlKiBhZ2dyTm9kZSk7Ci0gICAgY29u
c3QgVEZ1bmN0aW9uKiBmaW5kRnVuY3Rpb24oaW50IGxpbmUsIFRGdW5jdGlvbiogcGZuQ2FsbCwg
Ym9vbCAqYnVpbHRJbiA9IDApOwotICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxpemVyKFRTb3VyY2VM
b2MgbGluZSwgVFN0cmluZyYgaWRlbnRpZmllciwgVFB1YmxpY1R5cGUmIHBUeXBlLAorICAgIGNv
bnN0IFRGdW5jdGlvbiogZmluZEZ1bmN0aW9uKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRGdW5j
dGlvbiogcGZuQ2FsbCwgYm9vbCAqYnVpbHRJbiA9IDApOworICAgIGJvb2wgZXhlY3V0ZUluaXRp
YWxpemVyKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRTdHJpbmcmIGlkZW50aWZpZXIsIFRQdWJs
aWNUeXBlJiBwVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQq
IGluaXRpYWxpemVyLCBUSW50ZXJtTm9kZSomIGludGVybU5vZGUsIFRWYXJpYWJsZSogdmFyaWFi
bGUgPSAwKTsKLSAgICBib29sIGFycmF5U2V0TWF4U2l6ZShUSW50ZXJtU3ltYm9sKiwgVFR5cGUq
LCBpbnQsIGJvb2wsIFRTb3VyY2VMb2MpOwogCi0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdHJ1
Y3RvcihUSW50ZXJtTm9kZSosIGNvbnN0IFRUeXBlKiwgVE9wZXJhdG9yLCBURnVuY3Rpb24qLCBU
U291cmNlTG9jKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0cnVjdG9yKFRJbnRlcm1Ob2Rl
KiwgY29uc3QgVFR5cGUqLCBUT3BlcmF0b3IsIFRGdW5jdGlvbiosIGNvbnN0IFRTb3VyY2VMb2Mm
KTsKICAgICBUSW50ZXJtVHlwZWQqIGZvbGRDb25zdENvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdh
dGUqIGFnZ3JOb2RlLCBjb25zdCBUVHlwZSYgdHlwZSk7Ci0gICAgVEludGVybVR5cGVkKiBjb25z
dHJ1Y3RTdHJ1Y3QoVEludGVybU5vZGUqLCBUVHlwZSosIGludCwgVFNvdXJjZUxvYywgYm9vbCBz
dWJzZXQpOwotICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0QnVpbHRJbihjb25zdCBUVHlwZSos
IFRPcGVyYXRvciwgVEludGVybU5vZGUqLCBUU291cmNlTG9jLCBib29sIHN1YnNldCk7Ci0gICAg
VEludGVybVR5cGVkKiBhZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRlcm1U
eXBlZCosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhOb2Rl
KGludCAsIFRJbnRlcm1UeXBlZCosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRk
Q29uc3RBcnJheU5vZGUoaW50IGluZGV4LCBUSW50ZXJtVHlwZWQqIG5vZGUsIFRTb3VyY2VMb2Mg
bGluZSk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRDb25zdFN0cnVjdChUU3RyaW5nJiAsIFRJbnRl
cm1UeXBlZCosIFRTb3VyY2VMb2MpOworICAgIFRJbnRlcm1UeXBlZCogY29uc3RydWN0U3RydWN0
KFRJbnRlcm1Ob2RlKiwgVFR5cGUqLCBpbnQsIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNl
dCk7CisgICAgVEludGVybVR5cGVkKiBjb25zdHJ1Y3RCdWlsdEluKGNvbnN0IFRUeXBlKiwgVE9w
ZXJhdG9yLCBUSW50ZXJtTm9kZSosIGNvbnN0IFRTb3VyY2VMb2MmLCBib29sIHN1YnNldCk7Cisg
ICAgVEludGVybVR5cGVkKiBhZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyYsIFRJbnRl
cm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0
TWF0cml4Tm9kZShpbnQgLCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAg
VEludGVybVR5cGVkKiBhZGRDb25zdEFycmF5Tm9kZShpbnQgaW5kZXgsIFRJbnRlcm1UeXBlZCog
bm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSk7CisgICAgVEludGVybVR5cGVkKiBhZGRDb25z
dFN0cnVjdChUU3RyaW5nJiAsIFRJbnRlcm1UeXBlZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAg
ICBUSW50ZXJtVHlwZWQqIGFkZEluZGV4RXhwcmVzc2lvbihUSW50ZXJtVHlwZWQgKmJhc2VFeHBy
ZXNzaW9uLCBjb25zdCBUU291cmNlTG9jJiBsb2NhdGlvbiwgVEludGVybVR5cGVkICppbmRleEV4
cHJlc3Npb24pOwogCiAgICAgLy8gUGVyZm9ybXMgYW4gZXJyb3IgY2hlY2sgZm9yIGVtYmVkZGVk
IHN0cnVjdCBkZWNsYXJhdGlvbnMuCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFuIGVycm9yIHdh
cyByYWlzZWQgZHVlIHRvIHRoZSBkZWNsYXJhdGlvbiBvZgogICAgIC8vIHRoaXMgc3RydWN0Lgot
ICAgIGJvb2wgZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihUU291cmNlTG9jIGxpbmUsIGNvbnN0IFRT
dHJpbmcmIGlkZW50aWZpZXIpOworICAgIGJvb2wgZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKTsKICAgICB2b2lk
IGV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwogCi0gICAgYm9vbCBzdHJ1Y3ROZXN0aW5nRXJyb3JD
aGVjayhUU291cmNlTG9jIGxpbmUsIGNvbnN0IFRUeXBlJiBmaWVsZFR5cGUpOworICAgIGJvb2wg
c3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVEZp
ZWxkJiBmaWVsZCk7CiB9OwogCiBpbnQgUGFQYXJzZVN0cmluZ3Moc2l6ZV90IGNvdW50LCBjb25z
dCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHAJKHJl
dmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Q
b29sQWxsb2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsMjQgKzIyOCwyNyBAQCB2b2lkIFRQ
b29sQWxsb2NhdG9yOjpwb3BBbGwoKQogCiB2b2lkKiBUUG9vbEFsbG9jYXRvcjo6YWxsb2NhdGUo
c2l6ZV90IG51bUJ5dGVzKQogeworICAgIC8vCisgICAgLy8gSnVzdCBrZWVwIHNvbWUgaW50ZXJl
c3Rpbmcgc3RhdGlzdGljcy4KKyAgICAvLworICAgICsrbnVtQ2FsbHM7CisgICAgdG90YWxCeXRl
cyArPSBudW1CeXRlczsKKwogICAgIC8vIElmIHdlIGFyZSB1c2luZyBndWFyZCBibG9ja3MsIGFs
bCBhbGxvY2F0aW9ucyBhcmUgYnJhY2tldGVkIGJ5CiAgICAgLy8gdGhlbTogW2d1YXJkYmxvY2td
W2FsbG9jYXRpb25dW2d1YXJkYmxvY2tdLiAgbnVtQnl0ZXMgaXMgaG93CiAgICAgLy8gbXVjaCBt
ZW1vcnkgdGhlIGNhbGxlciBhc2tlZCBmb3IuICBhbGxvY2F0aW9uU2l6ZSBpcyB0aGUgdG90YWwK
ICAgICAvLyBzaXplIGluY2x1ZGluZyBndWFyZCBibG9ja3MuICBJbiByZWxlYXNlIGJ1aWxkLAog
ICAgIC8vIGd1YXJkQmxvY2tTaXplPTAgYW5kIHRoaXMgYWxsIGdldHMgb3B0aW1pemVkIGF3YXku
CiAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gVEFsbG9jYXRpb246OmFsbG9jYXRpb25TaXpl
KG51bUJ5dGVzKTsKLSAgICAKLSAgICAvLwotICAgIC8vIEp1c3Qga2VlcCBzb21lIGludGVyZXN0
aW5nIHN0YXRpc3RpY3MuCi0gICAgLy8KLSAgICArK251bUNhbGxzOwotICAgIHRvdGFsQnl0ZXMg
Kz0gbnVtQnl0ZXM7CisgICAgLy8gRGV0ZWN0IGludGVnZXIgb3ZlcmZsb3cuCisgICAgaWYgKGFs
bG9jYXRpb25TaXplIDwgbnVtQnl0ZXMpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8KICAg
ICAvLyBEbyB0aGUgYWxsb2NhdGlvbiwgbW9zdCBsaWtlbHkgY2FzZSBmaXJzdCwgZm9yIGVmZmlj
aWVuY3kuCiAgICAgLy8gVGhpcyBzdGVwIGNvdWxkIGJlIG1vdmVkIHRvIGJlIGlubGluZSBzb21l
dGltZS4KICAgICAvLwotICAgIGlmIChjdXJyZW50UGFnZU9mZnNldCArIGFsbG9jYXRpb25TaXpl
IDw9IHBhZ2VTaXplKSB7CisgICAgaWYgKGFsbG9jYXRpb25TaXplIDw9IHBhZ2VTaXplIC0gY3Vy
cmVudFBhZ2VPZmZzZXQpIHsKICAgICAgICAgLy8KICAgICAgICAgLy8gU2FmZSB0byBhbGxvY2F0
ZSBmcm9tIGN1cnJlbnRQYWdlT2Zmc2V0LgogICAgICAgICAvLwpAQCAtMjU2LDEyICsyNTksMTYg
QEAgdm9pZCogVFBvb2xBbGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBudQogICAgICAgICByZXR1
cm4gaW5pdGlhbGl6ZUFsbG9jYXRpb24oaW5Vc2VMaXN0LCBtZW1vcnksIG51bUJ5dGVzKTsKICAg
ICB9CiAKLSAgICBpZiAoYWxsb2NhdGlvblNpemUgKyBoZWFkZXJTa2lwID4gcGFnZVNpemUpIHsK
KyAgICBpZiAoYWxsb2NhdGlvblNpemUgPiBwYWdlU2l6ZSAtIGhlYWRlclNraXApIHsKICAgICAg
ICAgLy8KICAgICAgICAgLy8gRG8gYSBtdWx0aS1wYWdlIGFsbG9jYXRpb24uICBEb24ndCBtaXgg
dGhlc2Ugd2l0aCB0aGUgb3RoZXJzLgogICAgICAgICAvLyBUaGUgT1MgaXMgZWZmaWNpZW50IGFu
ZCBhbGxvY2F0aW5nIGFuZCBmcmVlLWluZyBtdWx0aXBsZSBwYWdlcy4KICAgICAgICAgLy8KICAg
ICAgICAgc2l6ZV90IG51bUJ5dGVzVG9BbGxvYyA9IGFsbG9jYXRpb25TaXplICsgaGVhZGVyU2tp
cDsKKyAgICAgICAgLy8gRGV0ZWN0IGludGVnZXIgb3ZlcmZsb3cuCisgICAgICAgIGlmIChudW1C
eXRlc1RvQWxsb2MgPCBhbGxvY2F0aW9uU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiAwOworCiAg
ICAgICAgIHRIZWFkZXIqIG1lbW9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dEhlYWRlcio+KDo6bmV3
IGNoYXJbbnVtQnl0ZXNUb0FsbG9jXSk7CiAgICAgICAgIGlmIChtZW1vcnkgPT0gMCkKICAgICAg
ICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1NoSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL1NoSGFuZGxlLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9TaEhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiBjbGFzcyBMb25nTmFtZU1hcDsKIGNsYXNzIFRDb21waWxlcjsKIGNsYXNzIFRE
ZXBlbmRlbmN5R3JhcGg7CitjbGFzcyBUcmFuc2xhdG9ySExTTDsKIAogLy8KIC8vIEhlbHBlciBm
dW5jdGlvbiB0byBpZGVudGlmeSBzcGVjcyB0aGF0IGFyZSBiYXNlZCBvbiB0aGUgV2ViR0wgc3Bl
YywKQEAgLTQyLDYgKzQzLDcgQEAgcHVibGljOgogICAgIFRTaEhhbmRsZUJhc2UoKTsKICAgICB2
aXJ0dWFsIH5UU2hIYW5kbGVCYXNlKCk7CiAgICAgdmlydHVhbCBUQ29tcGlsZXIqIGdldEFzQ29t
cGlsZXIoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBUcmFuc2xhdG9ySExTTCogZ2V0QXNU
cmFuc2xhdG9ySExTTCgpIHsgcmV0dXJuIDA7IH0KIAogcHJvdGVjdGVkOgogICAgIC8vIE1lbW9y
eSBhbGxvY2F0b3IuIEFsbG9jYXRlcyBhbmQgdHJhY2tzIG1lbW9yeSByZXF1aXJlZCBieSB0aGUg
Y29tcGlsZXIuCkBAIC04MSw4ICs4Myw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIEluaXRCdWls
dEluU3ltYm9sVGFibGUoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpOwogICAg
IC8vIENsZWFycyB0aGUgcmVzdWx0cyBmcm9tIHRoZSBwcmV2aW91cyBjb21waWxhdGlvbi4KICAg
ICB2b2lkIGNsZWFyUmVzdWx0cygpOwotICAgIC8vIFJldHVybiB0cnVlIGlmIGZ1bmN0aW9uIHJl
Y3Vyc2lvbiBpcyBkZXRlY3RlZC4KLSAgICBib29sIGRldGVjdFJlY3Vyc2lvbihUSW50ZXJtTm9k
ZSogcm9vdCk7CisgICAgLy8gUmV0dXJuIHRydWUgaWYgZnVuY3Rpb24gcmVjdXJzaW9uIGlzIGRl
dGVjdGVkIG9yIGNhbGwgZGVwdGggZXhjZWVkZWQuCisgICAgYm9vbCBkZXRlY3RDYWxsRGVwdGgo
VEludGVybU5vZGUqIHJvb3QsIFRJbmZvU2luayYgaW5mb1NpbmssIGJvb2wgbGltaXRDYWxsU3Rh
Y2tEZXB0aCk7CiAgICAgLy8gUmV3cml0ZXMgYSBzaGFkZXIncyBpbnRlcm1lZGlhdGUgdHJlZSBh
Y2NvcmRpbmcgdG8gdGhlIENTUyBTaGFkZXJzIHNwZWMuCiAgICAgdm9pZCByZXdyaXRlQ1NTU2hh
ZGVyKFRJbnRlcm1Ob2RlKiByb290KTsKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVu
IHNoYWRlciBkb2VzIG5vdCBleGNlZWQgdGhlIG1pbmltdW0KQEAgLTEwNCw4ICsxMDYsMTIgQEAg
cHJvdGVjdGVkOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2hhZGVyIGRvZXMgbm90IHVz
ZSBzYW1wbGVyIGRlcGVuZGVudCB2YWx1ZXMgdG8gYWZmZWN0IGNvbnRyb2wgCiAgICAgLy8gZmxv
dyBvciBpbiBvcGVyYXRpb25zIHdob3NlIHRpbWUgY2FuIGRlcGVuZCBvbiB0aGUgaW5wdXQgdmFs
dWVzLgogICAgIGJvb2wgZW5mb3JjZUZyYWdtZW50U2hhZGVyVGltaW5nUmVzdHJpY3Rpb25zKGNv
bnN0IFREZXBlbmRlbmN5R3JhcGgmIGdyYXBoKTsKKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUg
bWF4aW11bSBleHByZXNzaW9uIGNvbXBsZXhpdHkgYmVsb3cgdGhlIGxpbWl0LgorICAgIGJvb2wg
bGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCk7CiAgICAgLy8gR2V0
IGJ1aWx0LWluIGV4dGVuc2lvbnMgd2l0aCBkZWZhdWx0IGJlaGF2aW9yLgogICAgIGNvbnN0IFRF
eHRlbnNpb25CZWhhdmlvciYgZ2V0RXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdDsKKyAgICAvLyBH
ZXQgdGhlIHJlc291cmNlcyBzZXQgYnkgSW5pdEJ1aWx0SW5TeW1ib2xUYWJsZQorICAgIGNvbnN0
IFNoQnVpbHRJblJlc291cmNlcyYgZ2V0UmVzb3VyY2VzKCkgY29uc3Q7CiAKICAgICBjb25zdCBB
cnJheUJvdW5kc0NsYW1wZXImIGdldEFycmF5Qm91bmRzQ2xhbXBlcigpIGNvbnN0OwogICAgIFNo
QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgZ2V0QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3ko
KSBjb25zdDsKQEAgLTExNiw2ICsxMjIsMTAgQEAgcHJpdmF0ZToKICAgICBTaFNoYWRlclNwZWMg
c2hhZGVyU3BlYzsKIAogICAgIGludCBtYXhVbmlmb3JtVmVjdG9yczsKKyAgICBpbnQgbWF4RXhw
cmVzc2lvbkNvbXBsZXhpdHk7CisgICAgaW50IG1heENhbGxTdGFja0RlcHRoOworCisgICAgU2hC
dWlsdEluUmVzb3VyY2VzIGNvbXBpbGVSZXNvdXJjZXM7CiAKICAgICAvLyBCdWlsdC1pbiBzeW1i
b2wgdGFibGUgZm9yIHRoZSBnaXZlbiBsYW5ndWFnZSwgc3BlYywgYW5kIHJlc291cmNlcy4KICAg
ICAvLyBJdCBpcyBwcmVzZXJ2ZWQgZnJvbSBjb21waWxlLXRvLWNvbXBpbGUuCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3Bw
CShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvU2hhZGVyTGFuZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE0LDYgKzE0LDcgQEAKICNpbmNsdWRl
ICJjb21waWxlci9Jbml0aWFsaXplRGxsLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vz
c29yL2xlbmd0aF9saW1pdHMuaCIKICNpbmNsdWRlICJjb21waWxlci9TaEhhbmRsZS5oIgorI2lu
Y2x1ZGUgImNvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmgiCiAKIC8vCiAvLyBUaGlzIGlzIHRoZSBw
bGF0Zm9ybSBpbmRlcGVuZGVudCBpbnRlcmZhY2UgYmV0d2VlbiBhbiBPR0wgZHJpdmVyCkBAIC0x
MjYsNiArMTI3LDcgQEAgdm9pZCBTaEluaXRCdWlsdEluUmVzb3VyY2VzKFNoQnVpbHRJblJlcwog
ICAgIHJlc291cmNlcy0+T0VTX0VHTF9pbWFnZV9leHRlcm5hbCA9IDA7CiAgICAgcmVzb3VyY2Vz
LT5BUkJfdGV4dHVyZV9yZWN0YW5nbGUgPSAwOwogICAgIHJlc291cmNlcy0+RVhUX2RyYXdfYnVm
ZmVycyA9IDA7CisgICAgcmVzb3VyY2VzLT5FWFRfZnJhZ19kZXB0aCA9IDA7CiAKICAgICAvLyBE
aXNhYmxlIGhpZ2hwIHByZWNpc2lvbiBpbiBmcmFnbWVudCBzaGFkZXIgYnkgZGVmYXVsdC4KICAg
ICByZXNvdXJjZXMtPkZyYWdtZW50UHJlY2lzaW9uSGlnaCA9IDA7CkBAIC0zNTEsMyArMzUzLDIx
IEBAIHZvaWQgU2hHZXROYW1lSGFzaGluZ0VudHJ5KGNvbnN0IFNoSGFuZGwKICAgICAvLyBUbyBi
ZSBvbiB0aGUgc2FmZSBzaWRlIGluIGNhc2UgdGhlIHNvdXJjZSBpcyBsb25nZXIgdGhhbiBleHBl
Y3RlZC4KICAgICBoYXNoZWROYW1lW2xlbiAtIDFdID0gJ1wwJzsKIH0KKwordm9pZCBTaEdldElu
Zm9Qb2ludGVyKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwgU2hTaGFkZXJJbmZvIHBuYW1lLCB2b2lk
KiogcGFyYW1zKQoreworICAgIGlmICghaGFuZGxlIHx8ICFwYXJhbXMpCisgICAgICAgIHJldHVy
bjsKKworICAgIFRTaEhhbmRsZUJhc2UqIGJhc2UgPSBzdGF0aWNfY2FzdDxUU2hIYW5kbGVCYXNl
Kj4oaGFuZGxlKTsKKyAgICBUcmFuc2xhdG9ySExTTCogdHJhbnNsYXRvciA9IGJhc2UtPmdldEFz
VHJhbnNsYXRvckhMU0woKTsKKyAgICBpZiAoIXRyYW5zbGF0b3IpIHJldHVybjsKKworICAgIHN3
aXRjaChwbmFtZSkKKyAgICB7CisgICAgY2FzZSBTSF9BQ1RJVkVfVU5JRk9STVNfQVJSQVk6Cisg
ICAgICAgICpwYXJhbXMgPSAodm9pZCopJnRyYW5zbGF0b3ItPmdldFVuaWZvcm1zKCk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFi
bGUuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw0OCArMTcsMzQg
QEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVk
ZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlIDxjbGltaXRzPgogCiBUVHlwZTo6VFR5
cGUoY29uc3QgVFB1YmxpY1R5cGUgJnApIDoKLSAgICAgICAgICAgIHR5cGUocC50eXBlKSwgcHJl
Y2lzaW9uKHAucHJlY2lzaW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwgc2l6ZShwLnNpemUp
LCBtYXRyaXgocC5tYXRyaXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXplKHAuYXJyYXlTaXpl
KSwKLSAgICAgICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJbmZvcm1hdGlvblR5cGUoMCks
IHN0cnVjdHVyZSgwKSwgc3RydWN0dXJlU2l6ZSgwKSwgZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCks
IGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKSwgdHlwZU5hbWUoMCkKKyAgICAgICAgICAgIHR5cGUo
cC50eXBlKSwgcHJlY2lzaW9uKHAucHJlY2lzaW9uKSwgcXVhbGlmaWVyKHAucXVhbGlmaWVyKSwg
c2l6ZShwLnNpemUpLCBtYXRyaXgocC5tYXRyaXgpLCBhcnJheShwLmFycmF5KSwgYXJyYXlTaXpl
KHAuYXJyYXlTaXplKSwgc3RydWN0dXJlKDApCiB7Ci0gICAgaWYgKHAudXNlckRlZikgeworICAg
IGlmIChwLnVzZXJEZWYpCiAgICAgICAgIHN0cnVjdHVyZSA9IHAudXNlckRlZi0+Z2V0U3RydWN0
KCk7Ci0gICAgICAgIHR5cGVOYW1lID0gTmV3UG9vbFRTdHJpbmcocC51c2VyRGVmLT5nZXRUeXBl
TmFtZSgpLmNfc3RyKCkpOwotICAgICAgICBjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsK
LSAgICB9CiB9CiAKIC8vCiAvLyBSZWN1cnNpdmVseSBnZW5lcmF0ZSBtYW5nbGVkIG5hbWVzLgog
Ly8KLXZvaWQgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmluZyYgbWFuZ2xlZE5hbWUpCitU
U3RyaW5nIFRUeXBlOjpidWlsZE1hbmdsZWROYW1lKCkgY29uc3QKIHsKKyAgICBUU3RyaW5nIG1h
bmdsZWROYW1lOwogICAgIGlmIChpc01hdHJpeCgpKQogICAgICAgICBtYW5nbGVkTmFtZSArPSAn
bSc7CiAgICAgZWxzZSBpZiAoaXNWZWN0b3IoKSkKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ3Yn
OwogCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBFYnRGbG9hdDogICAgICAgICAgICAg
IG1hbmdsZWROYW1lICs9ICdmJzsgICAgICBicmVhazsKLSAgICBjYXNlIEVidEludDogICAgICAg
ICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ2knOyAgICAgIGJyZWFrOwotICAgIGNhc2UgRWJ0Qm9v
bDogICAgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAnYic7ICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBFYnRTYW1wbGVyMkQ6ICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJzMiI7ICAgICBicmVhazsK
LSAgICBjYXNlIEVidFNhbXBsZXJDdWJlOiAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInNDIjsgICAg
IGJyZWFrOwotICAgIGNhc2UgRWJ0U3RydWN0OgotICAgICAgICBtYW5nbGVkTmFtZSArPSAic3Ry
dWN0LSI7Ci0gICAgICAgIGlmICh0eXBlTmFtZSkKLSAgICAgICAgICAgIG1hbmdsZWROYW1lICs9
ICp0eXBlTmFtZTsKLSAgICAgICAgey8vIHN1cHBvcnQgTVNWQysrNi4wCi0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAnLSc7Ci0gICAgICAgICAgICAgICAgKCpzdHJ1
Y3R1cmUpW2ldLnR5cGUtPmJ1aWxkTWFuZ2xlZE5hbWUobWFuZ2xlZE5hbWUpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgY2FzZSBF
YnRGbG9hdDogICAgICAgbWFuZ2xlZE5hbWUgKz0gJ2YnOyAgICAgIGJyZWFrOworICAgIGNhc2Ug
RWJ0SW50OiAgICAgICAgIG1hbmdsZWROYW1lICs9ICdpJzsgICAgICBicmVhazsKKyAgICBjYXNl
IEVidEJvb2w6ICAgICAgICBtYW5nbGVkTmFtZSArPSAnYic7ICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBFYnRTYW1wbGVyMkQ6ICAgbWFuZ2xlZE5hbWUgKz0gInMyIjsgICAgIGJyZWFrOworICAgIGNh
c2UgRWJ0U2FtcGxlckN1YmU6IG1hbmdsZWROYW1lICs9ICJzQyI7ICAgICBicmVhazsKKyAgICBj
YXNlIEVidFN0cnVjdDogICAgICBtYW5nbGVkTmFtZSArPSBzdHJ1Y3R1cmUtPm1hbmdsZWROYW1l
KCk7IGJyZWFrOworICAgIGRlZmF1bHQ6ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAg
IG1hbmdsZWROYW1lICs9IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIGdldE5vbWluYWxTaXplKCkp
OwpAQCAtNjksNTMgKzU1LDcyIEBAIHZvaWQgVFR5cGU6OmJ1aWxkTWFuZ2xlZE5hbWUoVFN0cmlu
ZyYgbWEKICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gYnVmOwogICAgICAgICBtYW5nbGVkTmFtZSAr
PSAnXSc7CiAgICAgfQorICAgIHJldHVybiBtYW5nbGVkTmFtZTsKIH0KIAotaW50IFRUeXBlOjpn
ZXRTdHJ1Y3RTaXplKCkgY29uc3QKK3NpemVfdCBUVHlwZTo6Z2V0T2JqZWN0U2l6ZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKCFnZXRTdHJ1Y3QoKSkgewotICAgICAgICBhc3NlcnQoZmFsc2UgJiYgIk5v
dCBhIHN0cnVjdCIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgc2l6ZV90IHRvdGFs
U2l6ZSA9IDA7CiAKLSAgICBpZiAoc3RydWN0dXJlU2l6ZSA9PSAwKQotICAgICAgICBmb3IgKFRU
eXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgdGwgPSBnZXRTdHJ1Y3QoKS0+YmVnaW4oKTsgdGwgIT0g
Z2V0U3RydWN0KCktPmVuZCgpOyB0bCsrKQotICAgICAgICAgICAgc3RydWN0dXJlU2l6ZSArPSAo
KCp0bCkudHlwZSktPmdldE9iamVjdFNpemUoKTsKKyAgICBpZiAoZ2V0QmFzaWNUeXBlKCkgPT0g
RWJ0U3RydWN0KQorICAgICAgICB0b3RhbFNpemUgPSBzdHJ1Y3R1cmUtPm9iamVjdFNpemUoKTsK
KyAgICBlbHNlIGlmIChtYXRyaXgpCisgICAgICAgIHRvdGFsU2l6ZSA9IHNpemUgKiBzaXplOwor
ICAgIGVsc2UKKyAgICAgICAgdG90YWxTaXplID0gc2l6ZTsKKworICAgIGlmIChpc0FycmF5KCkp
IHsKKyAgICAgICAgc2l6ZV90IGFycmF5U2l6ZSA9IGdldEFycmF5U2l6ZSgpOworICAgICAgICBp
ZiAoYXJyYXlTaXplID4gSU5UX01BWCAvIHRvdGFsU2l6ZSkKKyAgICAgICAgICAgIHRvdGFsU2l6
ZSA9IElOVF9NQVg7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRvdGFsU2l6ZSAqPSBhcnJh
eVNpemU7CisgICAgfQogCi0gICAgcmV0dXJuIHN0cnVjdHVyZVNpemU7CisgICAgcmV0dXJuIHRv
dGFsU2l6ZTsKIH0KIAotdm9pZCBUVHlwZTo6Y29tcHV0ZURlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkK
K2Jvb2wgVFN0cnVjdHVyZTo6Y29udGFpbnNBcnJheXMoKSBjb25zdAogewotICAgIGlmICghZ2V0
U3RydWN0KCkpIHsKLSAgICAgICAgcmV0dXJuOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bUZpZWxkcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9
ICgqbUZpZWxkcylbaV0tPnR5cGUoKTsKKyAgICAgICAgaWYgKGZpZWxkVHlwZS0+aXNBcnJheSgp
IHx8IGZpZWxkVHlwZS0+aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQogCi0gICAgaW50IG1h
eE5lc3RpbmcgPSAwOwotICAgIGZvciAoVFR5cGVMaXN0Ojpjb25zdF9pdGVyYXRvciB0bCA9IGdl
dFN0cnVjdCgpLT5iZWdpbigpOyB0bCAhPSBnZXRTdHJ1Y3QoKS0+ZW5kKCk7ICsrdGwpIHsKLSAg
ICAgICAgbWF4TmVzdGluZyA9IHN0ZDo6bWF4KG1heE5lc3RpbmcsICgoKnRsKS50eXBlKS0+Z2V0
RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSk7CitUU3RyaW5nIFRTdHJ1Y3R1cmU6OmJ1aWxkTWFuZ2xl
ZE5hbWUoKSBjb25zdAoreworICAgIFRTdHJpbmcgbWFuZ2xlZE5hbWUoInN0cnVjdC0iKTsKKyAg
ICBtYW5nbGVkTmFtZSArPSAqbU5hbWU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmll
bGRzLT5zaXplKCk7ICsraSkgeworICAgICAgICBtYW5nbGVkTmFtZSArPSAnLSc7CisgICAgICAg
IG1hbmdsZWROYW1lICs9ICgqbUZpZWxkcylbaV0tPnR5cGUoKS0+Z2V0TWFuZ2xlZE5hbWUoKTsK
ICAgICB9Ci0KLSAgICBkZWVwZXN0U3RydWN0TmVzdGluZyA9IDEgKyBtYXhOZXN0aW5nOworICAg
IHJldHVybiBtYW5nbGVkTmFtZTsKIH0KIAotYm9vbCBUVHlwZTo6aXNTdHJ1Y3R1cmVDb250YWlu
aW5nQXJyYXlzKCkgY29uc3QKK3NpemVfdCBUU3RydWN0dXJlOjpjYWxjdWxhdGVPYmplY3RTaXpl
KCkgY29uc3QKIHsKLSAgICBpZiAoIXN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
RmllbGRzLT5zaXplKCk7ICsraSkgeworICAgICAgICBzaXplX3QgZmllbGRTaXplID0gKCptRmll
bGRzKVtpXS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIGlmIChmaWVsZFNpemUg
PiBJTlRfTUFYIC0gc2l6ZSkKKyAgICAgICAgICAgIHNpemUgPSBJTlRfTUFYOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBzaXplICs9IGZpZWxkU2l6ZTsKICAgICB9CisgICAgcmV0dXJuIHNp
emU7Cit9CiAKLSAgICBmb3IgKFRUeXBlTGlzdDo6Y29uc3RfaXRlcmF0b3IgbWVtYmVyID0gc3Ry
dWN0dXJlLT5iZWdpbigpOyBtZW1iZXIgIT0gc3RydWN0dXJlLT5lbmQoKTsgbWVtYmVyKyspCi0g
ICAgewotICAgICAgICBpZiAobWVtYmVyLT50eXBlLT5pc0FycmF5KCkgfHwKLSAgICAgICAgICAg
IG1lbWJlci0+dHlwZS0+aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CitpbnQgVFN0cnVjdHVyZTo6Y2Fs
Y3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBjb25zdAoreworICAgIGludCBtYXhOZXN0aW5nID0gMDsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1GaWVsZHMtPnNpemUoKTsgKytpKSB7CisgICAg
ICAgIG1heE5lc3RpbmcgPSBzdGQ6Om1heChtYXhOZXN0aW5nLCAoKm1GaWVsZHMpW2ldLT50eXBl
KCktPmdldERlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkpOwogICAgIH0KLQotICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gMSArIG1heE5lc3Rpbmc7CiB9CiAKIC8vCkBAIC0xOTYsODQgKzIwMSw4
IEBAIHZvaWQgVFN5bWJvbFRhYmxlTGV2ZWw6OnJlbGF0ZVRvT3BlcmF0b3IKIHZvaWQgVFN5bWJv
bFRhYmxlTGV2ZWw6OnJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFRT
dHJpbmcmIGV4dCkKIHsKICAgICBmb3IgKHRMZXZlbDo6aXRlcmF0b3IgaXQgPSBsZXZlbC5iZWdp
bigpOyBpdCAhPSBsZXZlbC5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoaXQtPnNlY29uZC0+
aXNGdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uID0gc3RhdGlj
X2Nhc3Q8VEZ1bmN0aW9uKj4oaXQtPnNlY29uZCk7Ci0gICAgICAgICAgICBpZiAoZnVuY3Rpb24t
PmdldE5hbWUoKSA9PSBuYW1lKQotICAgICAgICAgICAgICAgIGZ1bmN0aW9uLT5yZWxhdGVUb0V4
dGVuc2lvbihleHQpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1UU3ltYm9sOjpUU3ltYm9sKGNv
bnN0IFRTeW1ib2wmIGNvcHlPZikKLXsKLSAgICBuYW1lID0gTmV3UG9vbFRTdHJpbmcoY29weU9m
Lm5hbWUtPmNfc3RyKCkpOwotICAgIHVuaXF1ZUlkID0gY29weU9mLnVuaXF1ZUlkOwotfQotCi1U
VmFyaWFibGU6OlRWYXJpYWJsZShjb25zdCBUVmFyaWFibGUmIGNvcHlPZiwgVFN0cnVjdHVyZU1h
cCYgcmVtYXBwZXIpIDogVFN5bWJvbChjb3B5T2YpCi17Ci0gICAgdHlwZS5jb3B5VHlwZShjb3B5
T2YudHlwZSwgcmVtYXBwZXIpOwotICAgIHVzZXJUeXBlID0gY29weU9mLnVzZXJUeXBlOwotICAg
IC8vIGZvciBidWlsdEluIHN5bWJvbCB0YWJsZSBsZXZlbCwgdW5pb25BcnJheSBhbmQgYXJyYXlJ
bmZvcm1hdGlvbiBwb2ludGVycyBzaG91bGQgYmUgTlVMTAotICAgIGFzc2VydChjb3B5T2YuYXJy
YXlJbmZvcm1hdGlvblR5cGUgPT0gMCk7Ci0gICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOwot
Ci0gICAgaWYgKGNvcHlPZi51bmlvbkFycmF5KSB7Ci0gICAgICAgIGFzc2VydCghY29weU9mLnR5
cGUuZ2V0U3RydWN0KCkpOwotICAgICAgICBhc3NlcnQoY29weU9mLnR5cGUuZ2V0T2JqZWN0U2l6
ZSgpID09IDEpOwotICAgICAgICB1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0g
ICAgICAgIHVuaW9uQXJyYXlbMF0gPSBjb3B5T2YudW5pb25BcnJheVswXTsKLSAgICB9IGVsc2UK
LSAgICAgICAgdW5pb25BcnJheSA9IDA7Ci19Ci0KLVRWYXJpYWJsZSogVFZhcmlhYmxlOjpjbG9u
ZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLXsKLSAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0g
bmV3IFRWYXJpYWJsZSgqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgcmV0dXJuIHZhcmlhYmxlOwot
fQotCi1URnVuY3Rpb246OlRGdW5jdGlvbihjb25zdCBURnVuY3Rpb24mIGNvcHlPZiwgVFN0cnVj
dHVyZU1hcCYgcmVtYXBwZXIpIDogVFN5bWJvbChjb3B5T2YpCi17Ci0gICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBjb3B5T2YucGFyYW1ldGVycy5zaXplKCk7ICsraSkgewotICAgICAg
ICBUUGFyYW1ldGVyIHBhcmFtOwotICAgICAgICBwYXJhbWV0ZXJzLnB1c2hfYmFjayhwYXJhbSk7
Ci0gICAgICAgIHBhcmFtZXRlcnMuYmFjaygpLmNvcHlQYXJhbShjb3B5T2YucGFyYW1ldGVyc1tp
XSwgcmVtYXBwZXIpOwotICAgIH0KLQotICAgIHJldHVyblR5cGUuY29weVR5cGUoY29weU9mLnJl
dHVyblR5cGUsIHJlbWFwcGVyKTsKLSAgICBtYW5nbGVkTmFtZSA9IGNvcHlPZi5tYW5nbGVkTmFt
ZTsKLSAgICBvcCA9IGNvcHlPZi5vcDsKLSAgICBkZWZpbmVkID0gY29weU9mLmRlZmluZWQ7Ci19
Ci0KLVRGdW5jdGlvbiogVEZ1bmN0aW9uOjpjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcikK
LXsKLSAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigqdGhpcywgcmVtYXBw
ZXIpOwotCi0gICAgcmV0dXJuIGZ1bmN0aW9uOwotfQotCi1UU3ltYm9sVGFibGVMZXZlbCogVFN5
bWJvbFRhYmxlTGV2ZWw6OmNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKQotewotICAgIFRT
eW1ib2xUYWJsZUxldmVsICpzeW1UYWJsZUxldmVsID0gbmV3IFRTeW1ib2xUYWJsZUxldmVsKCk7
Ci0gICAgdExldmVsOjppdGVyYXRvciBpdGVyOwotICAgIGZvciAoaXRlciA9IGxldmVsLmJlZ2lu
KCk7IGl0ZXIgIT0gbGV2ZWwuZW5kKCk7ICsraXRlcikgewotICAgICAgICBzeW1UYWJsZUxldmVs
LT5pbnNlcnQoKml0ZXItPnNlY29uZC0+Y2xvbmUocmVtYXBwZXIpKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gc3ltVGFibGVMZXZlbDsKLX0KLQotdm9pZCBUU3ltYm9sVGFibGU6OmNvcHlUYWJsZShj
b25zdCBUU3ltYm9sVGFibGUmIGNvcHlPZikKLXsKLSAgICBUU3RydWN0dXJlTWFwIHJlbWFwcGVy
OwotICAgIHVuaXF1ZUlkID0gY29weU9mLnVuaXF1ZUlkOwotICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgY29weU9mLnRhYmxlLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHRhYmxlLnB1
c2hfYmFjayhjb3B5T2YudGFibGVbaV0tPmNsb25lKHJlbWFwcGVyKSk7Ci0gICAgfQotICAgIGZv
ciggdW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY29weU9mLnByZWNpc2lvblN0YWNrLnNpemUoKTsg
aSsrKSB7Ci0gICAgICAgIHByZWNpc2lvblN0YWNrLnB1c2hfYmFjayggY29weU9mLnByZWNpc2lv
blN0YWNrW2ldICk7CisgICAgICAgIFRTeW1ib2wqIHN5bWJvbCA9IGl0LT5zZWNvbmQ7CisgICAg
ICAgIGlmIChzeW1ib2wtPmdldE5hbWUoKSA9PSBuYW1lKQorICAgICAgICAgICAgc3ltYm9sLT5y
ZWxhdGVUb0V4dGVuc2lvbihleHQpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNTI5
NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIw
MDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCiAvLwpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAK
KyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL0luZm9T
aW5rLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgiCiAKQEAgLTQ5LDEzICs1
MCwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZvaWQgc2V0VW5pcXVlSWQoaW50IGlkKSB7IHVuaXF1ZUlkID0g
aWQ7IH0KICAgICBpbnQgZ2V0VW5pcXVlSWQoKSBjb25zdCB7IHJldHVybiB1bmlxdWVJZDsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0ID0gMDsJCi0g
ICAgVFN5bWJvbChjb25zdCBUU3ltYm9sJik7Ci0gICAgdmlydHVhbCBUU3ltYm9sKiBjbG9uZShU
U3RydWN0dXJlTWFwJiByZW1hcHBlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRJbmZv
U2luayAmaW5mb1NpbmspIGNvbnN0ID0gMDsKKyAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNv
bnN0IFRTdHJpbmcmIGV4dCkgeyBleHRlbnNpb24gPSBleHQ7IH0KKyAgICBjb25zdCBUU3RyaW5n
JiBnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBleHRlbnNpb247IH0KKworcHJpdmF0ZToK
KyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFN5bWJvbCk7CiAKLXByb3RlY3RlZDoKICAg
ICBjb25zdCBUU3RyaW5nICpuYW1lOwogICAgIHVuc2lnbmVkIGludCB1bmlxdWVJZDsgICAgICAv
LyBGb3IgcmVhbCBjb21wYXJpbmcgZHVyaW5nIGNvZGUgZ2VuZXJhdGlvbgorICAgIFRTdHJpbmcg
ZXh0ZW5zaW9uOwogfTsKIAogLy8KQEAgLTcwLDE1ICs3NCwxMyBAQCBwcm90ZWN0ZWQ6CiAvLwog
Y2xhc3MgVFZhcmlhYmxlIDogcHVibGljIFRTeW1ib2wgewogcHVibGljOgotICAgIFRWYXJpYWJs
ZShjb25zdCBUU3RyaW5nICpuYW1lLCBjb25zdCBUVHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkg
OiBUU3ltYm9sKG5hbWUpLCB0eXBlKHQpLCB1c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCksIGFy
cmF5SW5mb3JtYXRpb25UeXBlKDApIHsgfQorICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpu
YW1lLCBjb25zdCBUVHlwZSYgdCwgYm9vbCB1VCA9IGZhbHNlICkgOiBUU3ltYm9sKG5hbWUpLCB0
eXBlKHQpLCB1c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCkgeyB9CiAgICAgdmlydHVhbCB+VFZh
cmlhYmxlKCkgeyB9CiAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGUoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9ICAgIAogICAgIFRUeXBlJiBnZXRUeXBlKCkgeyByZXR1cm4gdHlwZTsgfSAgICAK
ICAgICBjb25zdCBUVHlwZSYgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KICAgICBi
b29sIGlzVXNlclR5cGUoKSBjb25zdCB7IHJldHVybiB1c2VyVHlwZTsgfQogICAgIHZvaWQgc2V0
UXVhbGlmaWVyKFRRdWFsaWZpZXIgcXVhbGlmaWVyKSB7IHR5cGUuc2V0UXVhbGlmaWVyKHF1YWxp
Zmllcik7IH0KLSAgICB2b2lkIHVwZGF0ZUFycmF5SW5mb3JtYXRpb25UeXBlKFRUeXBlICp0KSB7
IGFycmF5SW5mb3JtYXRpb25UeXBlID0gdDsgfQotICAgIFRUeXBlKiBnZXRBcnJheUluZm9ybWF0
aW9uVHlwZSgpIHsgcmV0dXJuIGFycmF5SW5mb3JtYXRpb25UeXBlOyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgZHVtcChUSW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKIApAQCAtMTAwLDE2ICsxMDIs
MTUgQEAgcHVibGljOgogICAgICAgICBkZWxldGVbXSB1bmlvbkFycmF5OwogICAgICAgICB1bmlv
bkFycmF5ID0gY29uc3RBcnJheTsgIAogICAgIH0KLSAgICBUVmFyaWFibGUoY29uc3QgVFZhcmlh
YmxlJiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpOyAvLyBjb3B5IGNvbnN0cnVjdG9yCi0gICAg
dmlydHVhbCBUVmFyaWFibGUqIGNsb25lKFRTdHJ1Y3R1cmVNYXAmIHJlbWFwcGVyKTsKIAotcHJv
dGVjdGVkOgorcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVFZhcmlhYmxl
KTsKKwogICAgIFRUeXBlIHR5cGU7CiAgICAgYm9vbCB1c2VyVHlwZTsKICAgICAvLyB3ZSBhcmUg
YXNzdW1pbmcgdGhhdCBQb29sIEFsbG9jYXRvciB3aWxsIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0
ZWQgdG8gdW5pb25BcnJheQogICAgIC8vIHdoZW4gdGhpcyBvYmplY3QgaXMgZGVzdHJveWVkCiAg
ICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheTsKLSAgICBUVHlwZSAqYXJyYXlJbmZvcm1hdGlv
blR5cGU7ICAvLyB0aGlzIGlzIHVzZWQgZm9yIHVwZGF0aW5nIG1heEFycmF5U2l6ZSBpbiBhbGwg
dGhlIHJlZmVyZW5jZXMgdG8gYSBnaXZlbiBzeW1ib2wKIH07CiAKIC8vCkBAIC0xMTksMTEgKzEy
MCw2IEBAIHByb3RlY3RlZDoKIHN0cnVjdCBUUGFyYW1ldGVyIHsKICAgICBUU3RyaW5nICpuYW1l
OwogICAgIFRUeXBlKiB0eXBlOwotICAgIHZvaWQgY29weVBhcmFtKGNvbnN0IFRQYXJhbWV0ZXIm
IHBhcmFtLCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIG5hbWUgPSBO
ZXdQb29sVFN0cmluZyhwYXJhbS5uYW1lLT5jX3N0cigpKTsKLSAgICAgICAgdHlwZSA9IHBhcmFt
LnR5cGUtPmNsb25lKHJlbWFwcGVyKTsKLSAgICB9CiB9OwogCiAvLwpAQCAtMTYzLDkgKzE1OSw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbGF0ZVRvT3BlcmF0b3IoVE9wZXJhdG9yIG8pIHsgb3Ag
PSBvOyB9CiAgICAgVE9wZXJhdG9yIGdldEJ1aWx0SW5PcCgpIGNvbnN0IHsgcmV0dXJuIG9wOyB9
CiAKLSAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcmIGV4dCkgeyBleHRl
bnNpb24gPSBleHQ7IH0KLSAgICBjb25zdCBUU3RyaW5nJiBnZXRFeHRlbnNpb24oKSBjb25zdCB7
IHJldHVybiBleHRlbnNpb247IH0KLQogICAgIHZvaWQgc2V0RGVmaW5lZCgpIHsgZGVmaW5lZCA9
IHRydWU7IH0KICAgICBib29sIGlzRGVmaW5lZCgpIHsgcmV0dXJuIGRlZmluZWQ7IH0KIApAQCAt
MTczLDE2ICsxNjYsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IFRQYXJhbWV0ZXImIGdldFBhcmFt
KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBwYXJhbWV0ZXJzW2ldOyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgZHVtcChUSW5mb1NpbmsgJmluZm9TaW5rKSBjb25zdDsKLSAgICBURnVuY3Rpb24oY29u
c3QgVEZ1bmN0aW9uJiwgVFN0cnVjdHVyZU1hcCYgcmVtYXBwZXIpOwotICAgIHZpcnR1YWwgVEZ1
bmN0aW9uKiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcik7CiAKLXByb3RlY3RlZDoKK3By
aXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRGdW5jdGlvbik7CisKICAgICB0
eXBlZGVmIFRWZWN0b3I8VFBhcmFtZXRlcj4gVFBhcmFtTGlzdDsKICAgICBUUGFyYW1MaXN0IHBh
cmFtZXRlcnM7CiAgICAgVFR5cGUgcmV0dXJuVHlwZTsKICAgICBUU3RyaW5nIG1hbmdsZWROYW1l
OwogICAgIFRPcGVyYXRvciBvcDsKLSAgICBUU3RyaW5nIGV4dGVuc2lvbjsKICAgICBib29sIGRl
ZmluZWQ7CiB9OwogCkBAIC0xOTgsMTcgKzE5MCwyMiBAQCBwdWJsaWM6CiAgICAgVFN5bWJvbFRh
YmxlTGV2ZWwoKSB7IH0KICAgICB+VFN5bWJvbFRhYmxlTGV2ZWwoKTsKIAotICAgIGJvb2wgaW5z
ZXJ0KFRTeW1ib2wmIHN5bWJvbCkgCisgICAgYm9vbCBpbnNlcnQoY29uc3QgVFN0cmluZyAmbmFt
ZSwgVFN5bWJvbCAmc3ltYm9sKQogICAgIHsKICAgICAgICAgLy8KICAgICAgICAgLy8gcmV0dXJu
aW5nIHRydWUgbWVhbnMgc3ltYm9sIHdhcyBhZGRlZCB0byB0aGUgdGFibGUKICAgICAgICAgLy8K
ICAgICAgICAgdEluc2VydFJlc3VsdCByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdCA9IGxldmVsLmlu
c2VydCh0TGV2ZWxQYWlyKHN5bWJvbC5nZXRNYW5nbGVkTmFtZSgpLCAmc3ltYm9sKSk7CisgICAg
ICAgIHJlc3VsdCA9IGxldmVsLmluc2VydCh0TGV2ZWxQYWlyKG5hbWUsICZzeW1ib2wpKTsKIAog
ICAgICAgICByZXR1cm4gcmVzdWx0LnNlY29uZDsKICAgICB9CiAKKyAgICBib29sIGluc2VydChU
U3ltYm9sICZzeW1ib2wpCisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0KHN5bWJvbC5nZXRN
YW5nbGVkTmFtZSgpLCBzeW1ib2wpOworICAgIH0KKwogICAgIFRTeW1ib2wqIGZpbmQoY29uc3Qg
VFN0cmluZyYgbmFtZSkgY29uc3QKICAgICB7CiAgICAgICAgIHRMZXZlbDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBsZXZlbC5maW5kKG5hbWUpOwpAQCAtMjMxLDcgKzIyOCw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlbGF0ZVRvT3BlcmF0b3IoY29uc3QgY2hhciogbmFtZSwgVE9wZXJhdG9yIG9wKTsK
ICAgICB2b2lkIHJlbGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFRTdHJp
bmcmIGV4dCk7CiAgICAgdm9pZCBkdW1wKFRJbmZvU2luayAmaW5mb1NpbmspIGNvbnN0OwotICAg
IFRTeW1ib2xUYWJsZUxldmVsKiBjbG9uZShUU3RydWN0dXJlTWFwJiByZW1hcHBlcik7CiAKIHBy
b3RlY3RlZDoKICAgICB0TGV2ZWwgbGV2ZWw7CkBAIC0yODIsNiArMjc4LDM1IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHRhYmxlW2N1cnJlbnRMZXZlbCgpXS0+aW5zZXJ0KHN5bWJvbCk7CiAg
ICAgfQogCisgICAgYm9vbCBpbnNlcnRDb25zdEludChjb25zdCBjaGFyICpuYW1lLCBpbnQgdmFs
dWUpCisgICAgeworICAgICAgICBUVmFyaWFibGUgKmNvbnN0YW50ID0gbmV3IFRWYXJpYWJsZShO
ZXdQb29sVFN0cmluZyhuYW1lKSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0
LCAxKSk7CisgICAgICAgIGNvbnN0YW50LT5nZXRDb25zdFBvaW50ZXIoKS0+c2V0SUNvbnN0KHZh
bHVlKTsKKyAgICAgICAgcmV0dXJuIGluc2VydCgqY29uc3RhbnQpOworICAgIH0KKworICAgIGJv
b2wgaW5zZXJ0QnVpbHRJbihUVHlwZSAqcnZhbHVlLCBjb25zdCBjaGFyICpuYW1lLCBUVHlwZSAq
cHR5cGUxLCBUVHlwZSAqcHR5cGUyID0gMCwgVFR5cGUgKnB0eXBlMyA9IDApCisgICAgeworICAg
ICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbihOZXdQb29sVFN0cmluZyhu
YW1lKSwgKnJ2YWx1ZSk7CisKKyAgICAgICAgVFBhcmFtZXRlciBwYXJhbTEgPSB7TlVMTCwgcHR5
cGUxfTsKKyAgICAgICAgZnVuY3Rpb24tPmFkZFBhcmFtZXRlcihwYXJhbTEpOworCisgICAgICAg
IGlmKHB0eXBlMikKKyAgICAgICAgeworICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTIgPSB7
TlVMTCwgcHR5cGUyfTsKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5hZGRQYXJhbWV0ZXIocGFyYW0y
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmKHB0eXBlMykKKyAgICAgICAgeworICAgICAgICAg
ICAgVFBhcmFtZXRlciBwYXJhbTMgPSB7TlVMTCwgcHR5cGUzfTsKKyAgICAgICAgICAgIGZ1bmN0
aW9uLT5hZGRQYXJhbWV0ZXIocGFyYW0zKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBp
bnNlcnQoKmZ1bmN0aW9uKTsKKyAgICB9CisKICAgICBUU3ltYm9sKiBmaW5kKGNvbnN0IFRTdHJp
bmcmIG5hbWUsIGJvb2wqIGJ1aWx0SW4gPSAwLCBib29sICpzYW1lU2NvcGUgPSAwKSAKICAgICB7
CiAgICAgICAgIGludCBsZXZlbCA9IGN1cnJlbnRMZXZlbCgpOwpAQCAtMzIxLDcgKzM0Niw2IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgaW50IGdldE1heFN5bWJvbElkKCkgeyByZXR1cm4gdW5pcXVl
SWQ7IH0KICAgICB2b2lkIGR1bXAoVEluZm9TaW5rICZpbmZvU2luaykgY29uc3Q7Ci0gICAgdm9p
ZCBjb3B5VGFibGUoY29uc3QgVFN5bWJvbFRhYmxlJiBjb3B5T2YpOwogCiAgICAgYm9vbCBzZXRE
ZWZhdWx0UHJlY2lzaW9uKCBjb25zdCBUUHVibGljVHlwZSYgdHlwZSwgVFByZWNpc2lvbiBwcmVj
ICl7CiAgICAgICAgIGlmIChJc1NhbXBsZXIodHlwZS50eXBlKSkKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xhdG9ySExTTC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmNw
cAkocmV2aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1RyYW5zbGF0b3JITFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8v
Ci0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
IC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtOSwxNSArOSwxNiBAQAogI2lu
Y2x1ZGUgImNvbXBpbGVyL0luaXRpYWxpemVQYXJzZUNvbnRleHQuaCIKICNpbmNsdWRlICJjb21w
aWxlci9PdXRwdXRITFNMLmgiCiAKLVRyYW5zbGF0b3JITFNMOjpUcmFuc2xhdG9ySExTTChTaFNo
YWRlclR5cGUgdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMpCi0gICAgOiBUQ29tcGlsZXIodHlwZSwg
c3BlYykKK1RyYW5zbGF0b3JITFNMOjpUcmFuc2xhdG9ySExTTChTaFNoYWRlclR5cGUgdHlwZSwg
U2hTaGFkZXJTcGVjIHNwZWMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKKyAgICA6IFRDb21waWxl
cih0eXBlLCBzcGVjKSwgbU91dHB1dFR5cGUob3V0cHV0KQogewogfQogCiB2b2lkIFRyYW5zbGF0
b3JITFNMOjp0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QpCiB7CiAgICAgVFBhcnNlQ29udGV4
dCYgcGFyc2VDb250ZXh0ID0gKkdldEdsb2JhbFBhcnNlQ29udGV4dCgpOwotICAgIHNoOjpPdXRw
dXRITFNMIG91dHB1dEhMU0wocGFyc2VDb250ZXh0KTsKKyAgICBzaDo6T3V0cHV0SExTTCBvdXRw
dXRITFNMKHBhcnNlQ29udGV4dCwgZ2V0UmVzb3VyY2VzKCksIG1PdXRwdXRUeXBlKTsKIAogICAg
IG91dHB1dEhMU0wub3V0cHV0KCk7CisgICAgbUFjdGl2ZVVuaWZvcm1zID0gb3V0cHV0SExTTC5n
ZXRVbmlmb3JtcygpOwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1RyYW5zbGF0b3JITFNMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xhdG9ySExTTC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEw
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KIC8vCkBAIC04LDEzICs4LDIwIEBACiAjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JITFNM
X0hfCiAKICNpbmNsdWRlICJjb21waWxlci9TaEhhbmRsZS5oIgorI2luY2x1ZGUgImNvbXBpbGVy
L1VuaWZvcm0uaCIKIAogY2xhc3MgVHJhbnNsYXRvckhMU0wgOiBwdWJsaWMgVENvbXBpbGVyIHsK
IHB1YmxpYzoKLSAgICBUcmFuc2xhdG9ySExTTChTaFNoYWRlclR5cGUgdHlwZSwgU2hTaGFkZXJT
cGVjIHNwZWMpOworICAgIFRyYW5zbGF0b3JITFNMKFNoU2hhZGVyVHlwZSB0eXBlLCBTaFNoYWRl
clNwZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KTsKKworICAgIHZpcnR1YWwgVHJhbnNs
YXRvckhMU0wgKmdldEFzVHJhbnNsYXRvckhMU0woKSB7IHJldHVybiB0aGlzOyB9CisgICAgY29u
c3Qgc2g6OkFjdGl2ZVVuaWZvcm1zICZnZXRVbmlmb3JtcygpIHsgcmV0dXJuIG1BY3RpdmVVbmlm
b3JtczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zbGF0ZShUSW50ZXJt
Tm9kZSogcm9vdCk7CisKKyAgICBzaDo6QWN0aXZlVW5pZm9ybXMgbUFjdGl2ZVVuaWZvcm1zOwor
ICAgIFNoU2hhZGVyT3V0cHV0IG1PdXRwdXRUeXBlOwogfTsKIAogI2VuZGlmICAvLyBDT01QSUxF
Ul9UUkFOU0xBVE9SSExTTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL1R5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL1R5cGVzLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9UeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDMwICs3LDg1
IEBACiAjaWZuZGVmIF9UWVBFU19JTkNMVURFRAogI2RlZmluZSBfVFlQRVNfSU5DTFVERUQKIAor
I2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKICNpbmNsdWRlICJjb21waWxlci9CYXNl
VHlwZXMuaCIKICNpbmNsdWRlICJjb21waWxlci9Db21tb24uaCIKICNpbmNsdWRlICJjb21waWxl
ci9kZWJ1Zy5oIgogCi1jbGFzcyBUVHlwZTsKIHN0cnVjdCBUUHVibGljVHlwZTsKK2NsYXNzIFRU
eXBlOwogCi0vLwotLy8gTmVlZCB0byBoYXZlIGFzc29jaWF0aW9uIG9mIGxpbmUgbnVtYmVycyB0
byB0eXBlcyBpbiBhIGxpc3QgZm9yIGJ1aWxkaW5nIHN0cnVjdHMuCi0vLwotc3RydWN0IFRUeXBl
TGluZSB7Ci0gICAgVFR5cGUqIHR5cGU7Ci0gICAgaW50IGxpbmU7CitjbGFzcyBURmllbGQKK3sK
K3B1YmxpYzoKKyAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0
b3IpOworICAgIFRGaWVsZChUVHlwZSogdHlwZSwgVFN0cmluZyogbmFtZSkgOiBtVHlwZSh0eXBl
KSwgbU5hbWUobmFtZSkge30KKworICAgIC8vIFRPRE8oYWxva3ApOiBXZSBzaG91bGQgb25seSBy
ZXR1cm4gY29uc3QgdHlwZS4KKyAgICAvLyBGaXggaXQgYnkgdHdlYWtpbmcgZ3JhbW1hci4KKyAg
ICBUVHlwZSogdHlwZSgpIHsgcmV0dXJuIG1UeXBlOyB9CisgICAgY29uc3QgVFR5cGUqIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtVHlwZTsgfQorCisgICAgY29uc3QgVFN0cmluZyYgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuICptTmFtZTsgfQorCitwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTihURmllbGQpOworICAgIFRUeXBlKiBtVHlwZTsKKyAgICBUU3RyaW5nKiBtTmFtZTsK
IH07Ci10eXBlZGVmIFRWZWN0b3I8VFR5cGVMaW5lPiBUVHlwZUxpc3Q7CiAKLWlubGluZSBUVHlw
ZUxpc3QqIE5ld1Bvb2xUVHlwZUxpc3QoKQordHlwZWRlZiBUVmVjdG9yPFRGaWVsZCo+IFRGaWVs
ZExpc3Q7CitpbmxpbmUgVEZpZWxkTGlzdCogTmV3UG9vbFRGaWVsZExpc3QoKQogewotICAgIHZv
aWQqIG1lbW9yeSA9IEdsb2JhbFBvb2xBbGxvY2F0b3IuYWxsb2NhdGUoc2l6ZW9mKFRUeXBlTGlz
dCkpOwotICAgIHJldHVybiBuZXcobWVtb3J5KSBUVHlwZUxpc3Q7CisgICAgdm9pZCogbWVtb3J5
ID0gR2xvYmFsUG9vbEFsbG9jYXRvci5hbGxvY2F0ZShzaXplb2YoVEZpZWxkTGlzdCkpOworICAg
IHJldHVybiBuZXcobWVtb3J5KSBURmllbGRMaXN0OwogfQogCi10eXBlZGVmIFRNYXA8VFR5cGVM
aXN0KiwgVFR5cGVMaXN0Kj4gVFN0cnVjdHVyZU1hcDsKLXR5cGVkZWYgVE1hcDxUVHlwZUxpc3Qq
LCBUVHlwZUxpc3QqPjo6aXRlcmF0b3IgVFN0cnVjdHVyZU1hcEl0ZXJhdG9yOworY2xhc3MgVFN0
cnVjdHVyZQoreworcHVibGljOgorICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFs
UG9vbEFsbG9jYXRvcik7CisgICAgVFN0cnVjdHVyZShUU3RyaW5nKiBuYW1lLCBURmllbGRMaXN0
KiBmaWVsZHMpCisgICAgICAgIDogbU5hbWUobmFtZSksCisgICAgICAgICAgbUZpZWxkcyhmaWVs
ZHMpLAorICAgICAgICAgIG1PYmplY3RTaXplKDApLAorICAgICAgICAgIG1EZWVwZXN0TmVzdGlu
ZygwKSB7CisgICAgfQorCisgICAgY29uc3QgVFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICptTmFtZTsgfQorICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcygpIGNvbnN0IHsgcmV0dXJu
ICptRmllbGRzOyB9CisKKyAgICBjb25zdCBUU3RyaW5nJiBtYW5nbGVkTmFtZSgpIGNvbnN0IHsK
KyAgICAgICAgaWYgKG1NYW5nbGVkTmFtZS5lbXB0eSgpKQorICAgICAgICAgICAgbU1hbmdsZWRO
YW1lID0gYnVpbGRNYW5nbGVkTmFtZSgpOworICAgICAgICByZXR1cm4gbU1hbmdsZWROYW1lOwor
ICAgIH0KKyAgICBzaXplX3Qgb2JqZWN0U2l6ZSgpIGNvbnN0IHsKKyAgICAgICAgaWYgKG1PYmpl
Y3RTaXplID09IDApCisgICAgICAgICAgICBtT2JqZWN0U2l6ZSA9IGNhbGN1bGF0ZU9iamVjdFNp
emUoKTsKKyAgICAgICAgcmV0dXJuIG1PYmplY3RTaXplOworICAgIH07CisgICAgaW50IGRlZXBl
c3ROZXN0aW5nKCkgY29uc3QgeworICAgICAgICBpZiAobURlZXBlc3ROZXN0aW5nID09IDApCisg
ICAgICAgICAgICBtRGVlcGVzdE5lc3RpbmcgPSBjYWxjdWxhdGVEZWVwZXN0TmVzdGluZygpOwor
ICAgICAgICByZXR1cm4gbURlZXBlc3ROZXN0aW5nOworICAgIH0KKyAgICBib29sIGNvbnRhaW5z
QXJyYXlzKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
KFRTdHJ1Y3R1cmUpOworICAgIFRTdHJpbmcgYnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0OworICAg
IHNpemVfdCBjYWxjdWxhdGVPYmplY3RTaXplKCkgY29uc3Q7CisgICAgaW50IGNhbGN1bGF0ZURl
ZXBlc3ROZXN0aW5nKCkgY29uc3Q7CisKKyAgICBUU3RyaW5nKiBtTmFtZTsKKyAgICBURmllbGRM
aXN0KiBtRmllbGRzOworCisgICAgbXV0YWJsZSBUU3RyaW5nIG1NYW5nbGVkTmFtZTsKKyAgICBt
dXRhYmxlIHNpemVfdCBtT2JqZWN0U2l6ZTsKKyAgICBtdXRhYmxlIGludCBtRGVlcGVzdE5lc3Rp
bmc7Cit9OwogCiAvLwogLy8gQmFzZSBjbGFzcyBmb3IgdGhpbmdzIHRoYXQgaGF2ZSBhIHR5cGUu
CkBAIC00MSw2OSArOTYsMTMgQEAgcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxF
VEUoR2xvYmFsUG9vbEFsbG9jYXRvcikKICAgICBUVHlwZSgpIHt9CiAgICAgVFR5cGUoVEJhc2lj
VHlwZSB0LCBUUHJlY2lzaW9uIHAsIFRRdWFsaWZpZXIgcSA9IEV2cVRlbXBvcmFyeSwgaW50IHMg
PSAxLCBib29sIG0gPSBmYWxzZSwgYm9vbCBhID0gZmFsc2UpIDoKLSAgICAgICAgICAgIHR5cGUo
dCksIHByZWNpc2lvbihwKSwgcXVhbGlmaWVyKHEpLCBzaXplKHMpLCBtYXRyaXgobSksIGFycmF5
KGEpLCBhcnJheVNpemUoMCksCi0gICAgICAgICAgICBtYXhBcnJheVNpemUoMCksIGFycmF5SW5m
b3JtYXRpb25UeXBlKDApLCBzdHJ1Y3R1cmUoMCksIHN0cnVjdHVyZVNpemUoMCksIGRlZXBlc3RT
dHJ1Y3ROZXN0aW5nKDApLCBmaWVsZE5hbWUoMCksIG1hbmdsZWQoMCksIHR5cGVOYW1lKDApCisg
ICAgICAgICAgICB0eXBlKHQpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihxKSwgc2l6ZShzKSwg
bWF0cml4KG0pLCBhcnJheShhKSwgYXJyYXlTaXplKDApLCBzdHJ1Y3R1cmUoMCkKICAgICB7CiAg
ICAgfQogICAgIGV4cGxpY2l0IFRUeXBlKGNvbnN0IFRQdWJsaWNUeXBlICZwKTsKLSAgICBUVHlw
ZShUVHlwZUxpc3QqIHVzZXJEZWYsIGNvbnN0IFRTdHJpbmcmIG4sIFRQcmVjaXNpb24gcCA9IEVi
cFVuZGVmaW5lZCkgOgotICAgICAgICAgICAgdHlwZShFYnRTdHJ1Y3QpLCBwcmVjaXNpb24ocCks
IHF1YWxpZmllcihFdnFUZW1wb3JhcnkpLCBzaXplKDEpLCBtYXRyaXgoZmFsc2UpLCBhcnJheShm
YWxzZSksIGFycmF5U2l6ZSgwKSwKLSAgICAgICAgICAgIG1heEFycmF5U2l6ZSgwKSwgYXJyYXlJ
bmZvcm1hdGlvblR5cGUoMCksIHN0cnVjdHVyZSh1c2VyRGVmKSwgc3RydWN0dXJlU2l6ZSgwKSwg
ZGVlcGVzdFN0cnVjdE5lc3RpbmcoMCksIGZpZWxkTmFtZSgwKSwgbWFuZ2xlZCgwKQorICAgIFRU
eXBlKFRTdHJ1Y3R1cmUqIHVzZXJEZWYsIFRQcmVjaXNpb24gcCA9IEVicFVuZGVmaW5lZCkgOgor
ICAgICAgICAgICAgdHlwZShFYnRTdHJ1Y3QpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihFdnFU
ZW1wb3JhcnkpLCBzaXplKDEpLCBtYXRyaXgoZmFsc2UpLCBhcnJheShmYWxzZSksIGFycmF5U2l6
ZSgwKSwgc3RydWN0dXJlKHVzZXJEZWYpCiAgICAgewotICAgICAgICB0eXBlTmFtZSA9IE5ld1Bv
b2xUU3RyaW5nKG4uY19zdHIoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb3B5VHlwZShjb25zdCBU
VHlwZSYgY29weU9mLCBUU3RydWN0dXJlTWFwJiByZW1hcHBlcikKLSAgICB7Ci0gICAgICAgIHR5
cGUgPSBjb3B5T2YudHlwZTsKLSAgICAgICAgcHJlY2lzaW9uID0gY29weU9mLnByZWNpc2lvbjsK
LSAgICAgICAgcXVhbGlmaWVyID0gY29weU9mLnF1YWxpZmllcjsKLSAgICAgICAgc2l6ZSA9IGNv
cHlPZi5zaXplOwotICAgICAgICBtYXRyaXggPSBjb3B5T2YubWF0cml4OwotICAgICAgICBhcnJh
eSA9IGNvcHlPZi5hcnJheTsKLSAgICAgICAgYXJyYXlTaXplID0gY29weU9mLmFycmF5U2l6ZTsK
LQotICAgICAgICBUU3RydWN0dXJlTWFwSXRlcmF0b3IgaXRlcjsKLSAgICAgICAgaWYgKGNvcHlP
Zi5zdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIGlmICgoaXRlciA9IHJlbWFwcGVyLmZpbmQoc3Ry
dWN0dXJlKSkgPT0gcmVtYXBwZXIuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBjcmVhdGUg
dGhlIG5ldyBzdHJ1Y3R1cmUgaGVyZQotICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IE5ld1Bv
b2xUVHlwZUxpc3QoKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IGNvcHlPZi5zdHJ1Y3R1cmUtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxpbmUubGluZSA9
ICgqY29weU9mLnN0cnVjdHVyZSlbaV0ubGluZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUxp
bmUudHlwZSA9ICgqY29weU9mLnN0cnVjdHVyZSlbaV0udHlwZS0+Y2xvbmUocmVtYXBwZXIpOwot
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnB1c2hfYmFjayh0eXBlTGluZSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJ1
Y3R1cmUgPSBpdGVyLT5zZWNvbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgc3RydWN0dXJlID0gMDsKLQotICAgICAgICBmaWVsZE5hbWUgPSAwOwotICAgICAg
ICBpZiAoY29weU9mLmZpZWxkTmFtZSkKLSAgICAgICAgICAgIGZpZWxkTmFtZSA9IE5ld1Bvb2xU
U3RyaW5nKGNvcHlPZi5maWVsZE5hbWUtPmNfc3RyKCkpOwotICAgICAgICB0eXBlTmFtZSA9IDA7
Ci0gICAgICAgIGlmIChjb3B5T2YudHlwZU5hbWUpCi0gICAgICAgICAgICB0eXBlTmFtZSA9IE5l
d1Bvb2xUU3RyaW5nKGNvcHlPZi50eXBlTmFtZS0+Y19zdHIoKSk7Ci0KLSAgICAgICAgbWFuZ2xl
ZCA9IDA7Ci0gICAgICAgIGlmIChjb3B5T2YubWFuZ2xlZCkKLSAgICAgICAgICAgIG1hbmdsZWQg
PSBOZXdQb29sVFN0cmluZyhjb3B5T2YubWFuZ2xlZC0+Y19zdHIoKSk7Ci0KLSAgICAgICAgc3Ry
dWN0dXJlU2l6ZSA9IGNvcHlPZi5zdHJ1Y3R1cmVTaXplOwotICAgICAgICBtYXhBcnJheVNpemUg
PSBjb3B5T2YubWF4QXJyYXlTaXplOwotICAgICAgICBkZWVwZXN0U3RydWN0TmVzdGluZyA9IGNv
cHlPZi5kZWVwZXN0U3RydWN0TmVzdGluZzsKLSAgICAgICAgYXNzZXJ0KGNvcHlPZi5hcnJheUlu
Zm9ybWF0aW9uVHlwZSA9PSAwKTsKLSAgICAgICAgYXJyYXlJbmZvcm1hdGlvblR5cGUgPSAwOyAv
LyBhcnJheUluZm9ybWF0aW9uVHlwZSBzaG91bGQgbm90IGJlIHNldCBmb3IgYnVpbHRJbiBzeW1i
b2wgdGFibGUgbGV2ZWwKLSAgICB9Ci0KLSAgICBUVHlwZSogY2xvbmUoVFN0cnVjdHVyZU1hcCYg
cmVtYXBwZXIpCi0gICAgewotICAgICAgICBUVHlwZSAqbmV3VHlwZSA9IG5ldyBUVHlwZSgpOwot
ICAgICAgICBuZXdUeXBlLT5jb3B5VHlwZSgqdGhpcywgcmVtYXBwZXIpOwotCi0gICAgICAgIHJl
dHVybiBuZXdUeXBlOwogICAgIH0KIAogICAgIFRCYXNpY1R5cGUgZ2V0QmFzaWNUeXBlKCkgY29u
c3QgeyByZXR1cm4gdHlwZTsgfQpAQCAtMTE5LDIxICsxMTgsNDIgQEAgcHVibGljOgogICAgIGlu
dCBnZXROb21pbmFsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemU7IH0KICAgICB2b2lkIHNldE5v
bWluYWxTaXplKGludCBzKSB7IHNpemUgPSBzOyB9CiAgICAgLy8gRnVsbCBzaXplIG9mIHNpbmds
ZSBpbnN0YW5jZSBvZiB0eXBlCi0gICAgaW50IGdldE9iamVjdFNpemUoKSBjb25zdAorICAgIHNp
emVfdCBnZXRPYmplY3RTaXplKCkgY29uc3Q7CisKKyAgICBpbnQgZWxlbWVudFJlZ2lzdGVyQ291
bnQoKSBjb25zdAogICAgIHsKLSAgICAgICAgaW50IHRvdGFsU2l6ZTsKKyAgICAgICAgaWYgKHN0
cnVjdHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRz
ID0gZ2V0U3RydWN0KCktPmZpZWxkcygpOworICAgICAgICAgICAgaW50IHJlZ2lzdGVyQ291bnQg
PSAwOwogCi0gICAgICAgIGlmIChnZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCi0gICAgICAg
ICAgICB0b3RhbFNpemUgPSBnZXRTdHJ1Y3RTaXplKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1hdHJp
eCkKLSAgICAgICAgICAgIHRvdGFsU2l6ZSA9IHNpemUgKiBzaXplOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB0b3RhbFNpemUgPSBzaXplOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJDb3VudCArPSBmaWVsZHNbaV0tPnR5cGUoKS0+dG90YWxSZWdpc3RlckNvdW50
KCk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKGlzQXJyYXkoKSkKLSAgICAgICAgICAg
IHRvdGFsU2l6ZSAqPSBzdGQ6Om1heChnZXRBcnJheVNpemUoKSwgZ2V0TWF4QXJyYXlTaXplKCkp
OworICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdGVyQ291bnQ7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSBpZiAoaXNNYXRyaXgoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdldE5v
bWluYWxTaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KIAotICAgICAgICByZXR1cm4gdG90YWxT
aXplOworICAgIGludCB0b3RhbFJlZ2lzdGVyQ291bnQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKGFycmF5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYXJyYXlTaXplICogZWxl
bWVudFJlZ2lzdGVyQ291bnQoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBlbGVtZW50UmVnaXN0ZXJDb3VudCgpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgYm9vbCBpc01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1hdHJpeCA/IHRydWUg
OiBmYWxzZTsgfQpAQCAtMTQyLDQ3ICsxNjIsMjAgQEAgcHVibGljOgogICAgIGJvb2wgaXNBcnJh
eSgpIGNvbnN0ICB7IHJldHVybiBhcnJheSA/IHRydWUgOiBmYWxzZTsgfQogICAgIGludCBnZXRB
cnJheVNpemUoKSBjb25zdCB7IHJldHVybiBhcnJheVNpemU7IH0KICAgICB2b2lkIHNldEFycmF5
U2l6ZShpbnQgcykgeyBhcnJheSA9IHRydWU7IGFycmF5U2l6ZSA9IHM7IH0KLSAgICBpbnQgZ2V0
TWF4QXJyYXlTaXplICgpIGNvbnN0IHsgcmV0dXJuIG1heEFycmF5U2l6ZTsgfQotICAgIHZvaWQg
c2V0TWF4QXJyYXlTaXplIChpbnQgcykgeyBtYXhBcnJheVNpemUgPSBzOyB9Ci0gICAgdm9pZCBj
bGVhckFycmF5bmVzcygpIHsgYXJyYXkgPSBmYWxzZTsgYXJyYXlTaXplID0gMDsgbWF4QXJyYXlT
aXplID0gMDsgfQotICAgIHZvaWQgc2V0QXJyYXlJbmZvcm1hdGlvblR5cGUoVFR5cGUqIHQpIHsg
YXJyYXlJbmZvcm1hdGlvblR5cGUgPSB0OyB9Ci0gICAgVFR5cGUqIGdldEFycmF5SW5mb3JtYXRp
b25UeXBlKCkgY29uc3QgeyByZXR1cm4gYXJyYXlJbmZvcm1hdGlvblR5cGU7IH0KKyAgICB2b2lk
IGNsZWFyQXJyYXluZXNzKCkgeyBhcnJheSA9IGZhbHNlOyBhcnJheVNpemUgPSAwOyB9CiAKICAg
ICBib29sIGlzVmVjdG9yKCkgY29uc3QgeyByZXR1cm4gc2l6ZSA+IDEgJiYgIW1hdHJpeDsgfQog
ICAgIGJvb2wgaXNTY2FsYXIoKSBjb25zdCB7IHJldHVybiBzaXplID09IDEgJiYgIW1hdHJpeCAm
JiAhc3RydWN0dXJlOyB9CiAKLSAgICBUVHlwZUxpc3QqIGdldFN0cnVjdCgpIGNvbnN0IHsgcmV0
dXJuIHN0cnVjdHVyZTsgfQotICAgIHZvaWQgc2V0U3RydWN0KFRUeXBlTGlzdCogcykgeyBzdHJ1
Y3R1cmUgPSBzOyBjb21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsgfQorICAgIFRTdHJ1Y3R1
cmUqIGdldFN0cnVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0cnVjdHVyZTsgfQorICAgIHZvaWQgc2V0
U3RydWN0KFRTdHJ1Y3R1cmUqIHMpIHsgc3RydWN0dXJlID0gczsgfQogCi0gICAgY29uc3QgVFN0
cmluZyYgZ2V0VHlwZU5hbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgYXNzZXJ0KHR5cGVOYW1l
KTsKLSAgICAgICAgcmV0dXJuICp0eXBlTmFtZTsKLSAgICB9Ci0gICAgdm9pZCBzZXRUeXBlTmFt
ZShjb25zdCBUU3RyaW5nJiBuKQotICAgIHsKLSAgICAgICAgdHlwZU5hbWUgPSBOZXdQb29sVFN0
cmluZyhuLmNfc3RyKCkpOwotICAgIH0KLQotICAgIGJvb2wgaXNGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIGZpZWxkTmFtZSAhPSAwOyB9Ci0gICAgY29uc3QgVFN0cmluZyYgZ2V0RmllbGROYW1lKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIGFzc2VydChmaWVsZE5hbWUpOwotICAgICAgICByZXR1cm4g
KmZpZWxkTmFtZTsKLSAgICB9Ci0gICAgdm9pZCBzZXRGaWVsZE5hbWUoY29uc3QgVFN0cmluZyYg
bikKLSAgICB7Ci0gICAgICAgIGZpZWxkTmFtZSA9IE5ld1Bvb2xUU3RyaW5nKG4uY19zdHIoKSk7
Ci0gICAgfQotCi0gICAgVFN0cmluZyYgZ2V0TWFuZ2xlZE5hbWUoKSB7Ci0gICAgICAgIGlmICgh
bWFuZ2xlZCkgewotICAgICAgICAgICAgbWFuZ2xlZCA9IE5ld1Bvb2xUU3RyaW5nKCIiKTsKLSAg
ICAgICAgICAgIGJ1aWxkTWFuZ2xlZE5hbWUoKm1hbmdsZWQpOwotICAgICAgICAgICAgKm1hbmds
ZWQgKz0gJzsnIDsKKyAgICBjb25zdCBUU3RyaW5nJiBnZXRNYW5nbGVkTmFtZSgpIGNvbnN0IHsK
KyAgICAgICAgaWYgKG1hbmdsZWQuZW1wdHkoKSkgeworICAgICAgICAgICAgbWFuZ2xlZCA9IGJ1
aWxkTWFuZ2xlZE5hbWUoKTsKKyAgICAgICAgICAgIG1hbmdsZWQgKz0gJzsnOwogICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuICptYW5nbGVkOworICAgICAgICByZXR1cm4gbWFuZ2xlZDsKICAg
ICB9CiAKICAgICBib29sIHNhbWVFbGVtZW50VHlwZShjb25zdCBUVHlwZSYgcmlnaHQpIGNvbnN0
IHsKQEAgLTIzMCwzMiArMjIzLDM0IEBAIHB1YmxpYzoKICAgICAvLyBGb3IgdHlwZSAibmVzdGlu
ZzIiLCB0aGlzIG1ldGhvZCB3b3VsZCByZXR1cm4gMiAtLSB0aGUgbnVtYmVyCiAgICAgLy8gb2Yg
c3RydWN0dXJlcyB0aHJvdWdoIHdoaWNoIGluZGlyZWN0aW9uIG11c3Qgb2NjdXIgdG8gcmVhY2gg
dGhlCiAgICAgLy8gZGVlcGVzdCBmaWVsZCAobmVzdGluZzIuZmllbGQxLnBvc2l0aW9uKS4KLSAg
ICBpbnQgZ2V0RGVlcGVzdFN0cnVjdE5lc3RpbmcoKSBjb25zdCB7IHJldHVybiBkZWVwZXN0U3Ry
dWN0TmVzdGluZzsgfQorICAgIGludCBnZXREZWVwZXN0U3RydWN0TmVzdGluZygpIGNvbnN0IHsK
KyAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSA/IHN0cnVjdHVyZS0+ZGVlcGVzdE5lc3RpbmcoKSA6
IDA7CisgICAgfQogCi0gICAgYm9vbCBpc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSBjb25z
dDsKKyAgICBib29sIGlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygpIGNvbnN0IHsKKyAgICAg
ICAgcmV0dXJuIHN0cnVjdHVyZSA/IHN0cnVjdHVyZS0+Y29udGFpbnNBcnJheXMoKSA6IGZhbHNl
OworICAgIH0KIAotcHJvdGVjdGVkOgotICAgIHZvaWQgYnVpbGRNYW5nbGVkTmFtZShUU3RyaW5n
Jik7Ci0gICAgaW50IGdldFN0cnVjdFNpemUoKSBjb25zdDsKLSAgICB2b2lkIGNvbXB1dGVEZWVw
ZXN0U3RydWN0TmVzdGluZygpOworcHJpdmF0ZToKKyAgICBUU3RyaW5nIGJ1aWxkTWFuZ2xlZE5h
bWUoKSBjb25zdDsKIAorI2lmZGVmIF9fR05VQ19fCisgICAgVEJhc2ljVHlwZSB0eXBlOworICAg
IFRQcmVjaXNpb24gcHJlY2lzaW9uOworICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyOworI2Vsc2UK
ICAgICBUQmFzaWNUeXBlIHR5cGUgICAgICA6IDY7CiAgICAgVFByZWNpc2lvbiBwcmVjaXNpb247
CiAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgOiA3OworI2VuZGlmCiAgICAgaW50IHNpemUgICAg
ICAgICAgICAgOiA4OyAvLyBzaXplIG9mIHZlY3RvciBvciBtYXRyaXgsIG5vdCBzaXplIG9mIGFy
cmF5CiAgICAgdW5zaWduZWQgaW50IG1hdHJpeCAgOiAxOwogICAgIHVuc2lnbmVkIGludCBhcnJh
eSAgIDogMTsKICAgICBpbnQgYXJyYXlTaXplOwotICAgIGludCBtYXhBcnJheVNpemU7Ci0gICAg
VFR5cGUqIGFycmF5SW5mb3JtYXRpb25UeXBlOwogCi0gICAgVFR5cGVMaXN0KiBzdHJ1Y3R1cmU7
ICAgICAgLy8gMCB1bmxlc3MgdGhpcyBpcyBhIHN0cnVjdAotICAgIG11dGFibGUgaW50IHN0cnVj
dHVyZVNpemU7Ci0gICAgaW50IGRlZXBlc3RTdHJ1Y3ROZXN0aW5nOwotCi0gICAgVFN0cmluZyAq
ZmllbGROYW1lOyAgICAgICAgIC8vIGZvciBzdHJ1Y3R1cmUgZmllbGQgbmFtZXMKLSAgICBUU3Ry
aW5nICptYW5nbGVkOwotICAgIFRTdHJpbmcgKnR5cGVOYW1lOyAgICAgICAgICAvLyBmb3Igc3Ry
dWN0dXJlIGZpZWxkIHR5cGUgbmFtZQorICAgIFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsgICAgICAv
LyAwIHVubGVzcyB0aGlzIGlzIGEgc3RydWN0CisKKyAgICBtdXRhYmxlIFRTdHJpbmcgbWFuZ2xl
ZDsKIH07CiAKIC8vCkBAIC0yNzcsOSArMjcyLDkgQEAgc3RydWN0IFRQdWJsaWNUeXBlCiAgICAg
Ym9vbCBhcnJheTsKICAgICBpbnQgYXJyYXlTaXplOwogICAgIFRUeXBlKiB1c2VyRGVmOwotICAg
IGludCBsaW5lOworICAgIFRTb3VyY2VMb2MgbGluZTsKIAotICAgIHZvaWQgc2V0QmFzaWMoVEJh
c2ljVHlwZSBidCwgVFF1YWxpZmllciBxLCBpbnQgbG4gPSAwKQorICAgIHZvaWQgc2V0QmFzaWMo
VEJhc2ljVHlwZSBidCwgVFF1YWxpZmllciBxLCBjb25zdCBUU291cmNlTG9jJiBsbikKICAgICB7
CiAgICAgICAgIHR5cGUgPSBidDsKICAgICAgICAgcXVhbGlmaWVyID0gcTsKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Vbmlmb3JtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5pZm9ybS5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5pZm9ybS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjEgQEAKKy8vDQorLy8gQ29weXJpZ2h0IChjKSAy
MDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQ0KKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuDQorLy8NCisNCisj
aW5jbHVkZSAiY29tcGlsZXIvVW5pZm9ybS5oIg0KKw0KK25hbWVzcGFjZSBzaA0KK3sNCisNCitV
bmlmb3JtOjpVbmlmb3JtKEdMZW51bSB0eXBlLCBHTGVudW0gcHJlY2lzaW9uLCBjb25zdCBjaGFy
ICpuYW1lLCBpbnQgYXJyYXlTaXplLCBpbnQgcmVnaXN0ZXJJbmRleCkNCit7DQorICAgIHRoaXMt
PnR5cGUgPSB0eXBlOw0KKyAgICB0aGlzLT5wcmVjaXNpb24gPSBwcmVjaXNpb247DQorICAgIHRo
aXMtPm5hbWUgPSBuYW1lOw0KKyAgICB0aGlzLT5hcnJheVNpemUgPSBhcnJheVNpemU7DQorICAg
IHRoaXMtPnJlZ2lzdGVySW5kZXggPSByZWdpc3RlckluZGV4Ow0KK30NCisNCit9DQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuaWZvcm0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVW5pZm9ybS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1VuaWZvcm0u
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLy8NCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4NCisvLw0KKw0KKyNp
Zm5kZWYgQ09NUElMRVJfVU5JRk9STV9IXw0KKyNkZWZpbmUgQ09NUElMRVJfVU5JRk9STV9IXw0K
Kw0KKyNpbmNsdWRlIDxzdHJpbmc+DQorI2luY2x1ZGUgPHZlY3Rvcj4NCisNCisjZGVmaW5lIEdM
X0FQSUNBTEwNCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+DQorDQorbmFtZXNwYWNlIHNoDQorew0K
Kw0KK3N0cnVjdCBVbmlmb3JtDQorew0KKyAgICBVbmlmb3JtKEdMZW51bSB0eXBlLCBHTGVudW0g
cHJlY2lzaW9uLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgYXJyYXlTaXplLCBpbnQgcmVnaXN0ZXJJ
bmRleCk7DQorDQorICAgIEdMZW51bSB0eXBlOw0KKyAgICBHTGVudW0gcHJlY2lzaW9uOw0KKyAg
ICBzdGQ6OnN0cmluZyBuYW1lOw0KKyAgICB1bnNpZ25lZCBpbnQgYXJyYXlTaXplOw0KKyAgICAN
CisgICAgaW50IHJlZ2lzdGVySW5kZXg7DQorfTsNCisNCit0eXBlZGVmIHN0ZDo6dmVjdG9yPFVu
aWZvcm0+IEFjdGl2ZVVuaWZvcm1zOw0KKw0KK30NCisNCisjZW5kaWYgICAvLyBDT01QSUxFUl9V
TklGT1JNX0hfDQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Zh
cmlhYmxlSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzEsMTIgKzEzMSwxMyBAQCB2b2lkIGdldFVzZXJEZWZpbmVkVmFyaWFibGVJbmZv
KGNvbnN0IFRUCiB7CiAgICAgQVNTRVJUKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0
KTsKIAotICAgIGNvbnN0IFRUeXBlTGlzdCogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cnVjdHVyZS0+c2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgY29uc3QgVFR5cGUqIGZpZWxkVHlwZSA9ICgqc3RydWN0dXJlKVtpXS50eXBlOwotICAg
ICAgICBnZXRWYXJpYWJsZUluZm8oKmZpZWxkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5hbWUgKyAiLiIgKyBmaWVsZFR5cGUtPmdldEZpZWxkTmFtZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbWFwcGVkTmFtZSArICIuIiArIFRJbnRlcm1UcmF2ZXJzZXI6Omhhc2goZmllbGRU
eXBlLT5nZXRGaWVsZE5hbWUoKSwgaGFzaEZ1bmN0aW9uKSwKKyAgICBjb25zdCBURmllbGRMaXN0
JiBmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBUVHlwZSYgZmll
bGRUeXBlID0gKihmaWVsZHNbaV0tPnR5cGUoKSk7CisgICAgICAgIGNvbnN0IFRTdHJpbmcmIGZp
ZWxkTmFtZSA9IGZpZWxkc1tpXS0+bmFtZSgpOworICAgICAgICBnZXRWYXJpYWJsZUluZm8oZmll
bGRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArICIuIiArIGZpZWxkTmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgKyAiLiIgKyBUSW50ZXJtVHJhdmVy
c2VyOjpoYXNoKGZpZWxkTmFtZSwgaGFzaEZ1bmN0aW9uKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZm9MaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgaGFzaEZ1bmN0aW9uKTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy5s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNs
YW5nLmwJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9nbHNsYW5nLmwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDEwIEBAIFdISUNI
IEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNwcmFnbWEgd2FybmluZyhkaXNh
YmxlIDogNDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJfQUNUSU9OIHl5bHZhbC0+bGV4
LmxpbmUgPSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9maWxlID0geXlsbG9jLT5sYXN0
X2ZpbGUgPSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGxvYy0+bGFz
dF9saW5lID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1heF9z
aXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1ZiwgbWF4X3NpemUsIHl5c2Nhbm5l
cik7CiAKQEAgLTU3LDEwICs2MCw4IEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5f
dCB5eXNjYW4KICV9CiAKICVvcHRpb24gbm95eXdyYXAgbm91bnB1dCBuZXZlci1pbnRlcmFjdGl2
ZQotJW9wdGlvbiB5eWxpbmVubyByZWVudHJhbnQgYmlzb24tYnJpZGdlCi0lb3B0aW9uIHN0YWNr
Cislb3B0aW9uIHl5bGluZW5vIHJlZW50cmFudCBiaXNvbi1icmlkZ2UgYmlzb24tbG9jYXRpb25z
CiAlb3B0aW9uIGV4dHJhLXR5cGU9IlRQYXJzZUNvbnRleHQqIgotJXggQ09NTUVOVCBGSUVMRFMK
IAogRCAgICAgICAgICAgWzAtOV0KIEwgICAgICAgICAgIFthLXpBLVpfXQpAQCAtNzAsNzMgKzcx
LDYwIEBAIE8gICAgICAgICAgIFswLTddCiAKICUlCiAKLSV7Ci0gICAgVFBhcnNlQ29udGV4dCog
Y29udGV4dCA9IHl5ZXh0cmE7Ci0lfQotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMgKi8K
LSIvLyJbXlxuXSogOworImludmFyaWFudCIgICAgeyByZXR1cm4gSU5WQVJJQU5UOyB9CisiaGln
aHAiICAgICAgICB7IHJldHVybiBISUdIX1BSRUNJU0lPTjsgfQorIm1lZGl1bXAiICAgICAgeyBy
ZXR1cm4gTUVESVVNX1BSRUNJU0lPTjsgfQorImxvd3AiICAgICAgICAgeyByZXR1cm4gTE9XX1BS
RUNJU0lPTjsgfQorInByZWNpc2lvbiIgICAgeyByZXR1cm4gUFJFQ0lTSU9OOyB9CisKKyJhdHRy
aWJ1dGUiICAgIHsgcmV0dXJuIEFUVFJJQlVURTsgfQorImNvbnN0IiAgICAgICAgeyByZXR1cm4g
Q09OU1RfUVVBTDsgfQorInVuaWZvcm0iICAgICAgeyByZXR1cm4gVU5JRk9STTsgfQorInZhcnlp
bmciICAgICAgeyByZXR1cm4gVkFSWUlORzsgfQorCisiYnJlYWsiICAgICAgICB7IHJldHVybiBC
UkVBSzsgfQorImNvbnRpbnVlIiAgICAgeyByZXR1cm4gQ09OVElOVUU7IH0KKyJkbyIgICAgICAg
ICAgIHsgcmV0dXJuIERPOyB9CisiZm9yIiAgICAgICAgICB7IHJldHVybiBGT1I7IH0KKyJ3aGls
ZSIgICAgICAgIHsgcmV0dXJuIFdISUxFOyB9CisKKyJpZiIgICAgICAgICAgIHsgcmV0dXJuIElG
OyB9CisiZWxzZSIgICAgICAgICB7IHJldHVybiBFTFNFOyB9CisKKyJpbiIgICAgICAgICAgIHsg
cmV0dXJuIElOX1FVQUw7IH0KKyJvdXQiICAgICAgICAgIHsgcmV0dXJuIE9VVF9RVUFMOyB9Cisi
aW5vdXQiICAgICAgICB7IHJldHVybiBJTk9VVF9RVUFMOyB9CisKKyJmbG9hdCIgICAgICAgIHsg
cmV0dXJuIEZMT0FUX1RZUEU7IH0KKyJpbnQiICAgICAgICAgIHsgcmV0dXJuIElOVF9UWVBFOyB9
Cisidm9pZCIgICAgICAgICB7IHJldHVybiBWT0lEX1RZUEU7IH0KKyJib29sIiAgICAgICAgIHsg
cmV0dXJuIEJPT0xfVFlQRTsgfQorInRydWUiICAgICAgICAgeyB5eWx2YWwtPmxleC5iID0gdHJ1
ZTsgIHJldHVybiBCT09MQ09OU1RBTlQ7IH0KKyJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXgu
YiA9IGZhbHNlOyByZXR1cm4gQk9PTENPTlNUQU5UOyB9CisKKyJkaXNjYXJkIiAgICAgIHsgcmV0
dXJuIERJU0NBUkQ7IH0KKyJyZXR1cm4iICAgICAgIHsgcmV0dXJuIFJFVFVSTjsgfQorCisibWF0
MiIgICAgICAgICB7IHJldHVybiBNQVRSSVgyOyB9CisibWF0MyIgICAgICAgICB7IHJldHVybiBN
QVRSSVgzOyB9CisibWF0NCIgICAgICAgICB7IHJldHVybiBNQVRSSVg0OyB9CisKKyJ2ZWMyIiAg
ICAgICAgIHsgcmV0dXJuIFZFQzI7IH0KKyJ2ZWMzIiAgICAgICAgIHsgcmV0dXJuIFZFQzM7IH0K
KyJ2ZWM0IiAgICAgICAgIHsgcmV0dXJuIFZFQzQ7IH0KKyJpdmVjMiIgICAgICAgIHsgcmV0dXJu
IElWRUMyOyB9CisiaXZlYzMiICAgICAgICB7IHJldHVybiBJVkVDMzsgfQorIml2ZWM0IiAgICAg
ICAgeyByZXR1cm4gSVZFQzQ7IH0KKyJidmVjMiIgICAgICAgIHsgcmV0dXJuIEJWRUMyOyB9Cisi
YnZlYzMiICAgICAgICB7IHJldHVybiBCVkVDMzsgfQorImJ2ZWM0IiAgICAgICAgeyByZXR1cm4g
QlZFQzQ7IH0KKworInNhbXBsZXIyRCIgICAgICAgICAgeyByZXR1cm4gU0FNUExFUjJEOyB9Cisi
c2FtcGxlckN1YmUiICAgICAgICB7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQorInNhbXBsZXJFeHRl
cm5hbE9FUyIgeyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KKyJzYW1wbGVyMkRSZWN0
IiAgICAgIHsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAotICAgIC8qIE11bHRpLWxpbmUgY29t
bWVudHMgKi8KLSIvKiIgICAgICAgICAgIHsgeXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNjYW5u
ZXIpOyB9Ci08Q09NTUVOVD4uIHwKLTxDT01NRU5UPlxuIDsKLTxDT01NRU5UPiIqLyIgIHsgeXlf
cG9wX3N0YXRlKHl5c2Nhbm5lcik7IH0KLQotImludmFyaWFudCIgICAgeyByZXR1cm4oSU5WQVJJ
QU5UKTsgfQotImhpZ2hwIiAgICAgICAgeyByZXR1cm4oSElHSF9QUkVDSVNJT04pOyB9Ci0ibWVk
aXVtcCIgICAgICB7IHJldHVybihNRURJVU1fUFJFQ0lTSU9OKTsgfQotImxvd3AiICAgICAgICAg
eyByZXR1cm4oTE9XX1BSRUNJU0lPTik7IH0KLSJwcmVjaXNpb24iICAgIHsgcmV0dXJuKFBSRUNJ
U0lPTik7IH0KLQotImF0dHJpYnV0ZSIgICAgeyByZXR1cm4oQVRUUklCVVRFKTsgfQotImNvbnN0
IiAgICAgICAgeyByZXR1cm4oQ09OU1RfUVVBTCk7IH0KLSJ1bmlmb3JtIiAgICAgIHsgcmV0dXJu
KFVOSUZPUk0pOyB9Ci0idmFyeWluZyIgICAgICB7IHJldHVybihWQVJZSU5HKTsgfQotCi0iYnJl
YWsiICAgICAgICB7IHJldHVybihCUkVBSyk7IH0KLSJjb250aW51ZSIgICAgIHsgcmV0dXJuKENP
TlRJTlVFKTsgfQotImRvIiAgICAgICAgICAgeyByZXR1cm4oRE8pOyB9Ci0iZm9yIiAgICAgICAg
ICB7IHJldHVybihGT1IpOyB9Ci0id2hpbGUiICAgICAgICB7IHJldHVybihXSElMRSk7IH0KLQot
ImlmIiAgICAgICAgICAgeyByZXR1cm4oSUYpOyB9Ci0iZWxzZSIgICAgICAgICB7IHJldHVybihF
TFNFKTsgfQotCi0iaW4iICAgICAgICAgICB7IHJldHVybihJTl9RVUFMKTsgfQotIm91dCIgICAg
ICAgICAgeyByZXR1cm4oT1VUX1FVQUwpOyB9Ci0iaW5vdXQiICAgICAgICB7IHJldHVybihJTk9V
VF9RVUFMKTsgfQotCi0iZmxvYXQiICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRy
dWU7IHJldHVybihGTE9BVF9UWVBFKTsgfQotImludCIgICAgICAgICAgeyBjb250ZXh0LT5sZXhB
ZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oSU5UX1RZUEUpOyB9Ci0idm9pZCIgICAgICAgICB7IGNv
bnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihWT0lEX1RZUEUpOyB9Ci0iYm9vbCIg
ICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihCT09MX1RZUEUp
OyB9Ci0idHJ1ZSIgICAgICAgICB7IHl5bHZhbC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuKEJPT0xD
T05TVEFOVCk7IH0KLSJmYWxzZSIgICAgICAgIHsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyByZXR1
cm4oQk9PTENPTlNUQU5UKTsgfQotCi0iZGlzY2FyZCIgICAgICB7IHJldHVybihESVNDQVJEKTsg
fQotInJldHVybiIgICAgICAgeyByZXR1cm4oUkVUVVJOKTsgfQotCi0ibWF0MiIgICAgICAgICB7
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybihNQVRSSVgyKTsgfQotIm1hdDMi
ICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMyk7
IH0KLSJtYXQ0IiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJu
KE1BVFJJWDQpOyB9Ci0KLSJ2ZWMyIiAgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0g
dHJ1ZTsgcmV0dXJuIChWRUMyKTsgfQotInZlYzMiICAgICAgICAgeyBjb250ZXh0LT5sZXhBZnRl
clR5cGUgPSB0cnVlOyByZXR1cm4gKFZFQzMpOyB9Ci0idmVjNCIgICAgICAgICB7IGNvbnRleHQt
PmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KLSJpdmVjMiIgICAgICAgIHsg
Y29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMik7IH0KLSJpdmVjMyIg
ICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJVkVDMyk7IH0K
LSJpdmVjNCIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChJ
VkVDNCk7IH0KLSJidmVjMiIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsg
cmV0dXJuIChCVkVDMik7IH0KLSJidmVjMyIgICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gdHJ1ZTsgcmV0dXJuIChCVkVDMyk7IH0KLSJidmVjNCIgICAgICAgIHsgY29udGV4dC0+bGV4
QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KLQotInNhbXBsZXIyRCIgICAgICAg
eyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Ci0ic2Ft
cGxlckN1YmUiICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1Q
TEVSQ1VCRTsgfQotInNhbXBsZXJFeHRlcm5hbE9FUyIgeyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4gU0FNUExFUl9FWFRFUk5BTF9PRVM7IH0KLSJzYW1wbGVyMkRSZWN0IiB7
IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9Ci0K
LSJzdHJ1Y3QiICAgICAgIHsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKFNU
UlVDVCk7IH0KKyJzdHJ1Y3QiICAgICAgIHsgcmV0dXJuIFNUUlVDVDsgfQogCiAiYXNtIiAgICAg
ICAgICB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIApAQCAtMTgzLDEzICsx
NzEsMTEgQEAgTyAgICAgICAgICAgWzAtN10KICJmdmVjMyIgICAgICAgIHsgcmV0dXJuIHJlc2Vy
dmVkX3dvcmQoeXlzY2FubmVyKTsgfQogImZ2ZWM0IiAgICAgICAgeyByZXR1cm4gcmVzZXJ2ZWRf
d29yZCh5eXNjYW5uZXIpOyB9CiAKLSJzYW1wbGVyMUQiICAgIHsgcmV0dXJuIHJlc2VydmVkX3dv
cmQoeXlzY2FubmVyKTsgfQotInNhbXBsZXIzRCIgICAgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5
eXNjYW5uZXIpOyB9Ci0KLSJzYW1wbGVyMURTaGFkb3ciIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQo
eXlzY2FubmVyKTsgfQotInNhbXBsZXIyRFNoYWRvdyIgeyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5
eXNjYW5uZXIpOyB9Ci0KLSJzYW1wbGVyM0RSZWN0IiB7IHJldHVybiByZXNlcnZlZF93b3JkKHl5
c2Nhbm5lcik7IH0KKyJzYW1wbGVyMUQiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93b3Jk
KHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0QiICAgICAgICAgICB7IHJldHVybiByZXNlcnZlZF93
b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMURTaGFkb3ciICAgICB7IHJldHVybiByZXNlcnZl
ZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyMkRTaGFkb3ciICAgICB7IHJldHVybiByZXNl
cnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KKyJzYW1wbGVyM0RSZWN0IiAgICAgICB7IHJldHVybiBy
ZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KICJzYW1wbGVyMkRSZWN0U2hhZG93IiB7IHJldHVy
biByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAogInNpemVvZiIgICAgICAgeyByZXR1cm4g
cmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CkBAIC0yMDMsNzIgKzE4OSw2NCBAQCBPICAgICAg
ICAgICBbMC03XQogICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKIH0KIAotMFt4WF17
SH0rICAgICAgICAgeyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0
ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KLTB7T30rICAgICAgICAgICAgIHsg
eXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyBy
ZXR1cm4oSU5UQ09OU1RBTlQpOyB9Ci0we0R9KyAgICAgICAgICAgICB7IGNvbnRleHQtPmVycm9y
KHl5bGluZW5vLCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4dC0+cmVj
b3ZlcigpOyByZXR1cm4gMDt9Ci17RH0rICAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBz
dGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuKElOVENPTlNUQU5U
KTsgfQotCi17RH0re0V9ICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxm
bG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQote0R9KyIu
IntEfSooe0V9KT8geyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90
KHl5dGV4dCkpOyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KLSIuIntEfSsoe0V9KT8gICAgIHsg
eXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0
dXJuKEZMT0FUQ09OU1RBTlQpOyB9Ci0KLSIrPSIgICAgICAgICAgICB7ICByZXR1cm4oQUREX0FT
U0lHTik7IH0KLSItPSIgICAgICAgICAgICB7ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KLSIqPSIg
ICAgICAgICAgICB7ICByZXR1cm4oTVVMX0FTU0lHTik7IH0KLSIvPSIgICAgICAgICAgICB7ICBy
ZXR1cm4oRElWX0FTU0lHTik7IH0KLSIlPSIgICAgICAgICAgICB7ICByZXR1cm4oTU9EX0FTU0lH
Tik7IH0KLSI8PD0iICAgICAgICAgICB7ICByZXR1cm4oTEVGVF9BU1NJR04pOyB9Ci0iPj49IiAg
ICAgICAgICAgeyAgcmV0dXJuKFJJR0hUX0FTU0lHTik7IH0KLSImPSIgICAgICAgICAgICB7ICBy
ZXR1cm4oQU5EX0FTU0lHTik7IH0KLSJePSIgICAgICAgICAgICB7ICByZXR1cm4oWE9SX0FTU0lH
Tik7IH0KLSJ8PSIgICAgICAgICAgICB7ICByZXR1cm4oT1JfQVNTSUdOKTsgfQotCi0iKysiICAg
ICAgICAgICAgeyAgcmV0dXJuKElOQ19PUCk7IH0KLSItLSIgICAgICAgICAgICB7ICByZXR1cm4o
REVDX09QKTsgfQotIiYmIiAgICAgICAgICAgIHsgIHJldHVybihBTkRfT1ApOyB9Ci0ifHwiICAg
ICAgICAgICAgeyAgcmV0dXJuKE9SX09QKTsgfQotIl5eIiAgICAgICAgICAgIHsgIHJldHVybihY
T1JfT1ApOyB9Ci0iPD0iICAgICAgICAgICAgeyAgcmV0dXJuKExFX09QKTsgfQotIj49IiAgICAg
ICAgICAgIHsgIHJldHVybihHRV9PUCk7IH0KLSI9PSIgICAgICAgICAgICB7ICByZXR1cm4oRVFf
T1ApOyB9Ci0iIT0iICAgICAgICAgICAgeyAgcmV0dXJuKE5FX09QKTsgfQotIjw8IiAgICAgICAg
ICAgIHsgIHJldHVybihMRUZUX09QKTsgfQotIj4+IiAgICAgICAgICAgIHsgIHJldHVybihSSUdI
VF9PUCk7IH0KLSI7IiAgICAgICAgICAgICB7IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNl
OyByZXR1cm4oU0VNSUNPTE9OKTsgfQotKCJ7InwiPCUiKSAgICAgIHsgY29udGV4dC0+bGV4QWZ0
ZXJUeXBlID0gZmFsc2U7IHJldHVybihMRUZUX0JSQUNFKTsgfQotKCJ9InwiJT4iKSAgICAgIHsg
cmV0dXJuKFJJR0hUX0JSQUNFKTsgfQotIiwiICAgICAgICAgeyBpZiAoY29udGV4dC0+aW5UeXBl
UGFyZW4pIGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Ci0i
OiIgICAgICAgICB7IHJldHVybihDT0xPTik7IH0KLSI9IiAgICAgICAgIHsgY29udGV4dC0+bGV4
QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihFUVVBTCk7IH0KLSIoIiAgICAgICAgIHsgY29udGV4
dC0+bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IGNvbnRleHQtPmluVHlwZVBhcmVuID0gdHJ1ZTsgcmV0
dXJuKExFRlRfUEFSRU4pOyB9Ci0iKSIgICAgICAgICB7IGNvbnRleHQtPmluVHlwZVBhcmVuID0g
ZmFsc2U7IHJldHVybihSSUdIVF9QQVJFTik7IH0KLSgiWyJ8Ijw6IikgICAgICB7IHJldHVybihM
RUZUX0JSQUNLRVQpOyB9Ci0oIl0ifCI6PiIpICAgICAgeyByZXR1cm4oUklHSFRfQlJBQ0tFVCk7
IH0KLSIuIiAgICAgICAgIHsgQkVHSU4oRklFTERTKTsgIHJldHVybihET1QpOyB9Ci0iISIgICAg
ICAgICB7IHJldHVybihCQU5HKTsgfQotIi0iICAgICAgICAgeyByZXR1cm4oREFTSCk7IH0KLSJ+
IiAgICAgICAgIHsgcmV0dXJuKFRJTERFKTsgfQotIisiICAgICAgICAgeyByZXR1cm4oUExVUyk7
IH0KLSIqIiAgICAgICAgIHsgcmV0dXJuKFNUQVIpOyB9Ci0iLyIgICAgICAgICB7IHJldHVybihT
TEFTSCk7IH0KLSIlIiAgICAgICAgIHsgcmV0dXJuKFBFUkNFTlQpOyB9Ci0iPCIgICAgICAgICB7
IHJldHVybihMRUZUX0FOR0xFKTsgfQotIj4iICAgICAgICAgeyByZXR1cm4oUklHSFRfQU5HTEUp
OyB9Ci0ifCIgICAgICAgICB7IHJldHVybihWRVJUSUNBTF9CQVIpOyB9Ci0iXiIgICAgICAgICB7
IHJldHVybihDQVJFVCk7IH0KLSImIiAgICAgICAgIHsgcmV0dXJuKEFNUEVSU0FORCk7IH0KLSI/
IiAgICAgICAgIHsgcmV0dXJuKFFVRVNUSU9OKTsgfQotCi08RklFTERTPntMfSh7TH18e0R9KSog
eyAKLSAgICBCRUdJTihJTklUSUFMKTsKLSAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29s
VFN0cmluZyh5eXRleHQpOyAKLSAgICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwotfQotPEZJRUxE
Uz5bIFx0XHZcZlxyXSB7fQotCi1bIFx0XHZcblxmXHJdICAgeyAgfQotPCo+PDxFT0Y+PiAgICAg
IHsgY29udGV4dC0+QWZ0ZXJFT0YgPSB0cnVlOyB5eXRlcm1pbmF0ZSgpOyB9Ci08Kj4uICAgICAg
ICAgICAgeyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5rbm93biBjaGFyIiwgeXl0ZXh0
LCAiIik7IHJldHVybiAwOyB9CiswW3hYXXtIfSsgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBz
dGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5U
OyB9Ciswe099KyAgICAgICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+
KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9Cit7RH0rICAgICAg
ICAgICAgICB7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbCh5eXRleHQs
IDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CisKK3tEfSt7RX0gICAgICAgICAgIHsgeXls
dmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJu
IEZMT0FUQ09OU1RBTlQ7IH0KK3tEfSsiLiJ7RH0qKHtFfSk/IHsgeXlsdmFsLT5sZXguZiA9IHN0
YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7
IH0KKyIuIntEfSsoe0V9KT8gICAgIHsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0
PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KKworIis9IiAgICAg
ICAgICAgIHsgcmV0dXJuIEFERF9BU1NJR047IH0KKyItPSIgICAgICAgICAgICB7IHJldHVybiBT
VUJfQVNTSUdOOyB9CisiKj0iICAgICAgICAgICAgeyByZXR1cm4gTVVMX0FTU0lHTjsgfQorIi89
IiAgICAgICAgICAgIHsgcmV0dXJuIERJVl9BU1NJR047IH0KKyIlPSIgICAgICAgICAgICB7IHJl
dHVybiBNT0RfQVNTSUdOOyB9CisiPDw9IiAgICAgICAgICAgeyByZXR1cm4gTEVGVF9BU1NJR047
IH0KKyI+Pj0iICAgICAgICAgICB7IHJldHVybiBSSUdIVF9BU1NJR047IH0KKyImPSIgICAgICAg
ICAgICB7IHJldHVybiBBTkRfQVNTSUdOOyB9CisiXj0iICAgICAgICAgICAgeyByZXR1cm4gWE9S
X0FTU0lHTjsgfQorInw9IiAgICAgICAgICAgIHsgcmV0dXJuIE9SX0FTU0lHTjsgfQorCisiKysi
ICAgICAgICAgICAgeyByZXR1cm4gSU5DX09QOyB9CisiLS0iICAgICAgICAgICAgeyByZXR1cm4g
REVDX09QOyB9CisiJiYiICAgICAgICAgICAgeyByZXR1cm4gQU5EX09QOyB9CisifHwiICAgICAg
ICAgICAgeyByZXR1cm4gT1JfT1A7IH0KKyJeXiIgICAgICAgICAgICB7IHJldHVybiBYT1JfT1A7
IH0KKyI8PSIgICAgICAgICAgICB7IHJldHVybiBMRV9PUDsgfQorIj49IiAgICAgICAgICAgIHsg
cmV0dXJuIEdFX09QOyB9CisiPT0iICAgICAgICAgICAgeyByZXR1cm4gRVFfT1A7IH0KKyIhPSIg
ICAgICAgICAgICB7IHJldHVybiBORV9PUDsgfQorIjw8IiAgICAgICAgICAgIHsgcmV0dXJuIExF
RlRfT1A7IH0KKyI+PiIgICAgICAgICAgICB7IHJldHVybiBSSUdIVF9PUDsgfQorIjsiICAgICAg
ICAgICAgIHsgcmV0dXJuIFNFTUlDT0xPTjsgfQorKCJ7InwiPCUiKSAgICAgIHsgcmV0dXJuIExF
RlRfQlJBQ0U7IH0KKygifSJ8IiU+IikgICAgICB7IHJldHVybiBSSUdIVF9CUkFDRTsgfQorIiwi
ICAgICAgICAgeyByZXR1cm4gQ09NTUE7IH0KKyI6IiAgICAgICAgIHsgcmV0dXJuIENPTE9OOyB9
CisiPSIgICAgICAgICB7IHJldHVybiBFUVVBTDsgfQorIigiICAgICAgICAgeyByZXR1cm4gTEVG
VF9QQVJFTjsgfQorIikiICAgICAgICAgeyByZXR1cm4gUklHSFRfUEFSRU47IH0KKygiWyJ8Ijw6
IikgIHsgcmV0dXJuIExFRlRfQlJBQ0tFVDsgfQorKCJdInwiOj4iKSAgeyByZXR1cm4gUklHSFRf
QlJBQ0tFVDsgfQorIi4iICAgICAgICAgeyByZXR1cm4gRE9UOyB9CisiISIgICAgICAgICB7IHJl
dHVybiBCQU5HOyB9CisiLSIgICAgICAgICB7IHJldHVybiBEQVNIOyB9CisifiIgICAgICAgICB7
IHJldHVybiBUSUxERTsgfQorIisiICAgICAgICAgeyByZXR1cm4gUExVUzsgfQorIioiICAgICAg
ICAgeyByZXR1cm4gU1RBUjsgfQorIi8iICAgICAgICAgeyByZXR1cm4gU0xBU0g7IH0KKyIlIiAg
ICAgICAgIHsgcmV0dXJuIFBFUkNFTlQ7IH0KKyI8IiAgICAgICAgIHsgcmV0dXJuIExFRlRfQU5H
TEU7IH0KKyI+IiAgICAgICAgIHsgcmV0dXJuIFJJR0hUX0FOR0xFOyB9CisifCIgICAgICAgICB7
IHJldHVybiBWRVJUSUNBTF9CQVI7IH0KKyJeIiAgICAgICAgIHsgcmV0dXJuIENBUkVUOyB9Cisi
JiIgICAgICAgICB7IHJldHVybiBBTVBFUlNBTkQ7IH0KKyI/IiAgICAgICAgIHsgcmV0dXJuIFFV
RVNUSU9OOyB9CisKK1sgXHRcdlxuXGZccl0geyB9Cis8PEVPRj4+ICAgIHsgeXl0ZXJtaW5hdGUo
KTsgfQorLiAgICAgICAgICB7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAKICUlCiAKQEAg
LTI3OCw3ICsyNTYsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0KGNoYXIqIGJ1ZiwgeXlfc2l6
CiAgICAgeXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6OlRva2VuOjpMQVNUID8gMCA6
IHRva2VuLnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhfc2l6ZSkKICAgICAgICAgbWVt
Y3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAgIHl5c2V0X2xpbmVubyhFbmNv
ZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24ubGluZSksIHl5
c2Nhbm5lcik7CisgICAgeXlzZXRfY29sdW1uKHRva2VuLmxvY2F0aW9uLmZpbGUsIHl5c2Nhbm5l
cik7CisgICAgeXlzZXRfbGluZW5vKHRva2VuLmxvY2F0aW9uLmxpbmUsIHl5c2Nhbm5lcik7CiAK
ICAgICBpZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRBTF9FUlJPUigiSW5wdXQg
YnVmZmVyIG92ZXJmbG93Iik7CkBAIC0yOTIsMTIgKzI3MSwxMCBAQCBpbnQgY2hlY2tfdHlwZSh5
eXNjYW5fdCB5eXNjYW5uZXIpIHsKICAgICAKICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVSOwog
ICAgIFRTeW1ib2wqIHN5bWJvbCA9IHl5ZXh0cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0KTsK
LSAgICBpZiAoeXlleHRyYS0+bGV4QWZ0ZXJUeXBlID09IGZhbHNlICYmIHN5bWJvbCAmJiBzeW1i
b2wtPmlzVmFyaWFibGUoKSkgeworICAgIGlmIChzeW1ib2wgJiYgc3ltYm9sLT5pc1ZhcmlhYmxl
KCkpIHsKICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PFRWYXJpYWJs
ZSo+KHN5bWJvbCk7Ci0gICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKSB7Ci0gICAg
ICAgICAgICB5eWV4dHJhLT5sZXhBZnRlclR5cGUgPSB0cnVlOworICAgICAgICBpZiAodmFyaWFi
bGUtPmlzVXNlclR5cGUoKSkKICAgICAgICAgICAgIHRva2VuID0gVFlQRV9OQU1FOwotICAgICAg
ICB9CiAgICAgfQogICAgIHl5bHZhbC0+bGV4LnN5bWJvbCA9IHN5bWJvbDsKICAgICByZXR1cm4g
dG9rZW47CkBAIC0zMDYsMjIgKzI4MywxMSBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNj
YW5uZXIpIHsKIGludCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHN0
cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKIAotICAg
IHl5ZXh0cmEtPmVycm9yKHl5bGluZW5vLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIs
IHl5dGV4dCwgIiIpOworICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbGxlZ2FsIHVzZSBv
ZiByZXNlcnZlZCB3b3JkIiwgeXl0ZXh0LCAiIik7CiAgICAgeXlleHRyYS0+cmVjb3ZlcigpOwog
ICAgIHJldHVybiAwOwogfQogCi12b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGV4dCwg
Y29uc3QgY2hhciogcmVhc29uKSB7Ci0gICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0
IHl5Z3V0c190KikgY29udGV4dC0+c2Nhbm5lcjsKLQotICAgIGlmIChjb250ZXh0LT5BZnRlckVP
RikgewotICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywgcmVhc29uLCAidW5leHBlY3Rl
ZCBFT0YiKTsKLSAgICB9IGVsc2UgewotICAgICAgICBjb250ZXh0LT5lcnJvcih5eWxpbmVubywg
cmVhc29uLCB5eXRleHQpOwotICAgIH0KLSAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci19Ci0KIGlu
dCBnbHNsYW5nX2luaXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5c2Nh
bl90IHNjYW5uZXIgPSBOVUxMOwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQsICZz
Y2FubmVyKSkKQEAgLTM0NCw4ICszMTAsOCBAQCBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFyc2VD
b250ZXh0KiBjb250CiBpbnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciog
Y29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKICAgICAgICAgICAgICAgICAgVFBh
cnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5cmVzdGFydChOVUxMLCBjb250ZXh0LT5zY2Fu
bmVyKTsKLSAgICB5eXNldF9saW5lbm8oRW5jb2RlU291cmNlTG9jKDAsIDEpLCBjb250ZXh0LT5z
Y2FubmVyKTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNlOworICAgIHl5c2V0X2NvbHVt
bigwLCBjb250ZXh0LT5zY2FubmVyKTsKKyAgICB5eXNldF9saW5lbm8oMSwgY29udGV4dC0+c2Nh
bm5lcik7CiAKICAgICAvLyBJbml0aWFsaXplIHByZXByb2Nlc3Nvci4KICAgICBpZiAoIWNvbnRl
eHQtPnByZXByb2Nlc3Nvci5pbml0KGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZy55Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkJKHJldmlzaW9u
IDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5n
LnkJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogLy8KLS8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0zOSw3ICszOSw2IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUg
R0xTTCBFUyBQQVJTRVIgKGdsc2wKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKIAog
I2RlZmluZSBZWUVOQUJMRV9OTFMgMAotI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQogCiAj
ZGVmaW5lIFlZTEVYX1BBUkFNIGNvbnRleHQtPnNjYW5uZXIKICV9CkBAIC00NywxMCArNDYsMTIg
QEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbAogJWV4cGVjdCAxIC8q
IE9uZSBzaGlmdCByZWR1Y2UgY29uZmxpY3QgYmVjYXVzZSBvZiBpZiB8IGVsc2UgKi8KICVwdXJl
LXBhcnNlcgogJXBhcnNlLXBhcmFtIHtUUGFyc2VDb250ZXh0KiBjb250ZXh0fQorJWxvY2F0aW9u
cwogCiAldW5pb24geworI2RlZmluZSBZWUxUWVBFIFRTb3VyY2VMb2MKKyNkZWZpbmUgWVlMVFlQ
RV9JU19ERUNMQVJFRCAxCiAgICAgc3RydWN0IHsKLSAgICAgICAgVFNvdXJjZUxvYyBsaW5lOwog
ICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUU3RyaW5nICpzdHJpbmc7CiAgICAgICAgICAg
ICBmbG9hdCBmOwpAQCAtNjAsNyArNjEsNiBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMg
UEFSU0VSIChnbHNsCiAgICAgICAgIFRTeW1ib2wqIHN5bWJvbDsKICAgICB9IGxleDsKICAgICBz
dHJ1Y3QgewotICAgICAgICBUU291cmNlTG9jIGxpbmU7CiAgICAgICAgIFRPcGVyYXRvciBvcDsK
ICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7CkBA
IC03NCwyMyArNzQsMzEgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xz
bAogICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgICAgICAgICBURnVuY3Rp
b24qIGZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsKLSAgICAgICAgICAg
IFRUeXBlTGluZSB0eXBlTGluZTsKLSAgICAgICAgICAgIFRUeXBlTGlzdCogdHlwZUxpc3Q7Cisg
ICAgICAgICAgICBURmllbGQqIGZpZWxkOworICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRM
aXN0OwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwogfQogCiAlewotZXh0ZXJuIGludCB5eWxl
eChZWVNUWVBFKiB5eWx2YWxfcGFyYW0sIHZvaWQqIHl5c2Nhbm5lcik7Ci1leHRlcm4gdm9pZCB5
eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CitleHRl
cm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbCwgWVlMVFlQRSogeXlsbG9jLCB2b2lkKiB5eXNj
YW5uZXIpOworc3RhdGljIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAKLSNkZWZpbmUgRlJBR19WRVJUX09O
TFkoUywgTCkgeyAgXAotICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX0ZSQUdNRU5U
X1NIQURFUiAmJiAgXAotICAgICAgICBjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNIX1ZFUlRFWF9T
SEFERVIpIHsgIFwKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBwb3J0ZWQgaW4gdmVy
dGV4L2ZyYWdtZW50IHNoYWRlcnMgb25seSAiLCBTKTsgIFwKLSAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOyAgXAotICAgIH0gIFwKLX0KKyNkZWZpbmUgWVlMTE9DX0RFRkFVTFQoQ3VycmVudCwg
UmhzLCBOKSAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgaWYgKFlZSUQoTikp
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKEN1
cnJlbnQpLmZpcnN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDEpLmZpcnN0X2ZpbGU7ICBcCisgICAg
ICAgIChDdXJyZW50KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAxKS5maXJzdF9saW5lOyAg
XAorICAgICAgICAoQ3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCBOKS5sYXN0X2Zp
bGU7ICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywgTiku
bGFzdF9saW5lOyAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmZpcnN0X2Zp
bGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfZmlsZTsgICBcCisgICAgICAgIChDdXJyZW50KS5m
aXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2xpbmU7ICAgXAorICAgICAgICAoQ3Vy
cmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2ZpbGU7ICAgIFwKKyAgICAg
ICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9saW5lOyAgICBc
CisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICB9IHdoaWxlICgwKQogCiAjZGVmaW5lIFZFUlRFWF9PTkxZKFMsIEwpIHsgIFwK
ICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVSKSB7ICBcCkBA
IC0xMTYsNyArMTI0LDYgQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihUUGFyc2VDb250ZXh0KiBjb250
ZQogJXRva2VuIDxsZXg+IFNBTVBMRVIyRCBTQU1QTEVSQ1VCRSBTQU1QTEVSX0VYVEVSTkFMX09F
UyBTQU1QTEVSMkRSRUNUCiAKICV0b2tlbiA8bGV4PiBJREVOVElGSUVSIFRZUEVfTkFNRSBGTE9B
VENPTlNUQU5UIElOVENPTlNUQU5UIEJPT0xDT05TVEFOVAotJXRva2VuIDxsZXg+IEZJRUxEX1NF
TEVDVElPTgogJXRva2VuIDxsZXg+IExFRlRfT1AgUklHSFRfT1AKICV0b2tlbiA8bGV4PiBJTkNf
T1AgREVDX09QIExFX09QIEdFX09QIEVRX09QIE5FX09QCiAldG9rZW4gPGxleD4gQU5EX09QIE9S
X09QIFhPUl9PUCBNVUxfQVNTSUdOIERJVl9BU1NJR04gQUREX0FTU0lHTgpAQCAtMTI3LDYgKzEz
NCw3IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoVFBhcnNlQ29udGV4dCogY29udGUKICV0b2tlbiA8
bGV4PiBDT01NQSBDT0xPTiBFUVVBTCBTRU1JQ09MT04gQkFORyBEQVNIIFRJTERFIFBMVVMgU1RB
UiBTTEFTSCBQRVJDRU5UCiAldG9rZW4gPGxleD4gTEVGVF9BTkdMRSBSSUdIVF9BTkdMRSBWRVJU
SUNBTF9CQVIgQ0FSRVQgQU1QRVJTQU5EIFFVRVNUSU9OCiAKKyV0eXBlIDxsZXg+IGlkZW50aWZp
ZXIKICV0eXBlIDxpbnRlcm0+IGFzc2lnbm1lbnRfb3BlcmF0b3IgdW5hcnlfb3BlcmF0b3IKICV0
eXBlIDxpbnRlcm0uaW50ZXJtVHlwZWROb2RlPiB2YXJpYWJsZV9pZGVudGlmaWVyIHByaW1hcnlf
ZXhwcmVzc2lvbiBwb3N0Zml4X2V4cHJlc3Npb24KICV0eXBlIDxpbnRlcm0uaW50ZXJtVHlwZWRO
b2RlPiBleHByZXNzaW9uIGludGVnZXJfZXhwcmVzc2lvbiBhc3NpZ25tZW50X2V4cHJlc3Npb24K
QEAgLTE1NCw4ICsxNjIsOCBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNv
bnRlCiAldHlwZSA8aW50ZXJtLnR5cGU+IHR5cGVfcXVhbGlmaWVyIGZ1bGx5X3NwZWNpZmllZF90
eXBlIHR5cGVfc3BlY2lmaWVyCiAldHlwZSA8aW50ZXJtLnR5cGU+IHR5cGVfc3BlY2lmaWVyX25v
X3ByZWMgdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICV0eXBlIDxpbnRlcm0udHlwZT4gc3RydWN0
X3NwZWNpZmllcgotJXR5cGUgPGludGVybS50eXBlTGluZT4gc3RydWN0X2RlY2xhcmF0b3IKLSV0
eXBlIDxpbnRlcm0udHlwZUxpc3Q+IHN0cnVjdF9kZWNsYXJhdG9yX2xpc3Qgc3RydWN0X2RlY2xh
cmF0aW9uIHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0CisldHlwZSA8aW50ZXJtLmZpZWxkPiBzdHJ1
Y3RfZGVjbGFyYXRvcgorJXR5cGUgPGludGVybS5maWVsZExpc3Q+IHN0cnVjdF9kZWNsYXJhdG9y
X2xpc3Qgc3RydWN0X2RlY2xhcmF0aW9uIHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0CiAldHlwZSA8
aW50ZXJtLmZ1bmN0aW9uPiBmdW5jdGlvbl9oZWFkZXIgZnVuY3Rpb25fZGVjbGFyYXRvciBmdW5j
dGlvbl9pZGVudGlmaWVyCiAldHlwZSA8aW50ZXJtLmZ1bmN0aW9uPiBmdW5jdGlvbl9oZWFkZXJf
d2l0aF9wYXJhbWV0ZXJzIGZ1bmN0aW9uX2NhbGxfaGVhZGVyCiAldHlwZSA8aW50ZXJtPiBmdW5j
dGlvbl9jYWxsX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMgZnVuY3Rpb25fY2FsbF9oZWFkZXJfbm9f
cGFyYW1ldGVycyBmdW5jdGlvbl9jYWxsX2dlbmVyaWMgZnVuY3Rpb25fcHJvdG90eXBlCkBAIC0x
NjQsMTMgKzE3MiwxNyBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRl
CiAlc3RhcnQgdHJhbnNsYXRpb25fdW5pdAogJSUKIAoraWRlbnRpZmllcgorICAgIDogSURFTlRJ
RklFUgorICAgIHwgVFlQRV9OQU1FCisKIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICA6IElERU5U
SUZJRVIgewogICAgICAgICAvLyBUaGUgc3ltYm9sIHRhYmxlIHNlYXJjaCB3YXMgZG9uZSBpbiB0
aGUgbGV4aWNhbCBwaGFzZQogICAgICAgICBjb25zdCBUU3ltYm9sKiBzeW1ib2wgPSAkMS5zeW1i
b2w7CiAgICAgICAgIGNvbnN0IFRWYXJpYWJsZSogdmFyaWFibGU7CiAgICAgICAgIGlmIChzeW1i
b2wgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgInVuZGVjbGFy
ZWQgaWRlbnRpZmllciIsICQxLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcihAMSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciIsICQxLnN0cmluZy0+Y19zdHIoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBl
KEVidEZsb2F0LCBFYnBVbmRlZmluZWQpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiBmYWtlVmFy
aWFibGUgPSBuZXcgVFZhcmlhYmxlKCQxLnN0cmluZywgdHlwZSk7CkBAIC0xNzksMTAgKzE5MSwx
NyBAQCB2YXJpYWJsZV9pZGVudGlmaWVyCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAv
LyBUaGlzIGlkZW50aWZpZXIgY2FuIG9ubHkgYmUgYSB2YXJpYWJsZSB0eXBlIHN5bWJvbAogICAg
ICAgICAgICAgaWYgKCEgc3ltYm9sLT5pc1ZhcmlhYmxlKCkpIHsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigkMS5saW5lLCAidmFyaWFibGUgZXhwZWN0ZWQiLCAkMS5zdHJpbmctPmNf
c3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidmFyaWFibGUgZXhw
ZWN0ZWQiLCAkMS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgdmFyaWFi
bGUgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOworCisgICAgICAgICAg
ICBpZiAoY29udGV4dC0+c3ltYm9sVGFibGUuZmluZEJ1aWx0SW4odmFyaWFibGUtPmdldE5hbWUo
KSkgJiYKKyAgICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkg
JiYKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKEAxLCB2YXJp
YWJsZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gZG9uJ3QgZGVsZXRl
ICQxLnN0cmluZywgaXQncyB1c2VkIGJ5IGVycm9yIHJlY292ZXJ5LCBhbmQgdGhlIHBvb2wKQEAg
LTE5MSwxMSArMjEwLDEyIEBAIHZhcmlhYmxlX2lkZW50aWZpZXIKICAgICAgICAgaWYgKHZhcmlh
YmxlLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgKSB7CiAgICAgICAgICAg
ICBDb25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gdmFyaWFibGUtPmdldENvbnN0UG9pbnRlcigp
OwogICAgICAgICAgICAgVFR5cGUgdCh2YXJpYWJsZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwg
dCwgJDEubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRD
b25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsIEAxKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVu
aXF1ZUlkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksICQxLmxpbmUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5nZXROYW1lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBAMSk7CiAgICAgfQogICAgIDsKIApAQCAtMjA5LDIyICsyMjks
MjIgQEAgcHJpbWFyeV9leHByZXNzaW9uCiAgICAgICAgIC8vIGNoZWNrIGZvciBvdmVyZmxvdyBm
b3IgY29uc3RhbnRzCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChhYnMoJDEuaSkgPj0gKDEgPDwg
MTYpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiIGludGVnZXIgY29u
c3RhbnQgb3ZlcmZsb3ciLCAiIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIiBp
bnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93IiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBu
ZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KCQxLmkp
OwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQxLmxpbmUp
OworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAxKTsKICAg
ICB9CiAgICAgfCBGTE9BVENPTlNUQU5UIHsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29u
c3QoJDEuZik7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3Qp
LCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3Rh
bnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkLCBFdnFDb25z
dCksIEAxKTsKICAgICB9CiAgICAgfCBCT09MQ09OU1RBTlQgewogICAgICAgICBDb25zdGFudFVu
aW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJy
YXktPnNldEJDb25zdCgkMS5iKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFDb25zdCksIEAxKTsKICAgICB9CiAgICAgfCBMRUZUX1BBUkVOIGV4cHJlc3Npb24gUklH
SFRfUEFSRU4gewogICAgICAgICAkJCA9ICQyOwpAQCAtMjM2LDEwMyArMjU2LDI3IEBAIHBvc3Rm
aXhfZXhwcmVzc2lvbgogICAgICAgICAkJCA9ICQxOwogICAgIH0KICAgICB8IHBvc3RmaXhfZXhw
cmVzc2lvbiBMRUZUX0JSQUNLRVQgaW50ZWdlcl9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewot
ICAgICAgICBpZiAoISQxLT5pc0FycmF5KCkgJiYgISQxLT5pc01hdHJpeCgpICYmICEkMS0+aXNW
ZWN0b3IoKSkgewotICAgICAgICAgICAgaWYgKCQxLT5nZXRBc1N5bWJvbE5vZGUoKSkKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBv
ZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAkMS0+Z2V0QXNTeW1ib2xOb2RlKCkt
PmdldFN5bWJvbCgpLmNfc3RyKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5cGUgYXJy
YXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICJleHByZXNzaW9uIik7Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0
UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYgJDMtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0
KSB7Ci0gICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSkgeyAvLyBjb25zdGFudCBmb2xkaW5n
IGZvciBhcnJheXMKLSAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0QXJyYXlO
b2RlKCQzLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0
SUNvbnN0KCksICQxLCAkMi5saW5lKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzVmVj
dG9yKCkpIHsgIC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIHZlY3RvcnMKLSAgICAgICAgICAgICAg
ICBUVmVjdG9yRmllbGRzIGZpZWxkczsKLSAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsK
LSAgICAgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1swXSA9ICQzLT5nZXRBc0NvbnN0YW50VW5p
b24oKS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7IC8vIG5lZWQgdG8gZG8g
aXQgdGhpcyB3YXkgYmVjYXVzZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5Ci0gICAg
ICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwg
JDIubGluZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpKSB7IC8vIGNv
bnN0YW50IGZvbGRpbmcgZm9yIG1hdHJpY2VzCi0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0
LT5hZGRDb25zdE1hdHJpeE5vZGUoJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSwgJDEsICQyLmxpbmUpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKCQzLT5nZXRRdWFsaWZpZXIoKSA9PSBF
dnFDb25zdCkgewotICAgICAgICAgICAgICAgIGlmICgoJDEtPmlzVmVjdG9yKCkgfHwgJDEtPmlz
TWF0cml4KCkpICYmICQxLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSA8PSAkMy0+Z2V0QXND
b25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpICYmICEk
MS0+aXNBcnJheSgpICkgewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBl
eHRyYUluZm9TdHJlYW07Ci0gICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAi
ZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8PCAkMy0+Z2V0QXNDb25zdGFudFVuaW9u
KCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpIDw8ICInIjsKLSAgICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigp
OwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIiwgIlsiLCBl
eHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoJDEt
PmlzQXJyYXkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCku
Z2V0QXJyYXlTaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgk
MS0+Z2V0VHlwZSgpLmdldE1heEFycmF5U2l6ZSgpIDw9ICQzLT5nZXRBc0NvbnN0YW50VW5pb24o
KS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgkMS0+Z2V0QXNT
eW1ib2xOb2RlKCksICQxLT5nZXRUeXBlUG9pbnRlcigpLCAkMy0+Z2V0QXNDb25zdGFudFVuaW9u
KCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpLCB0cnVlLCAkMi5saW5lKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTZXRNYXhTaXplKCQxLT5nZXRBc1N5bWJv
bE5vZGUoKSwgJDEtPmdldFR5cGVQb2ludGVyKCksIDAsIGZhbHNlLCAkMi5saW5lKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKCAkMy0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdl
dElDb25zdCgpID49ICQxLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJhcnJheSBpbmRleCBv
dXQgb2YgcmFuZ2UgJyIgPDwgJDMtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICIiLCAiWyIsIGV4
dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5k
ZXgoRU9wSW5kZXhEaXJlY3QsICQxLCAkMywgJDIubGluZSk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoJDEtPmlzQXJyYXkoKSAm
JiAkMS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIiIsICJbIiwgImFycmF5IG11c3QgYmUgcmVkZWNs
YXJlZCB3aXRoIGEgc2l6ZSBiZWZvcmUgYmVpbmcgaW5kZXhlZCB3aXRoIGEgdmFyaWFibGUiKTsK
LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4
KEVPcEluZGV4SW5kaXJlY3QsICQxLCAkMywgJDIubGluZSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIENvbnN0YW50VW5pb24g
KnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgICAgIHVuaW9uQXJy
YXktPnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gs
IEV2cUNvbnN0KSwgJDIubGluZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoJDEtPmlzQXJyYXkoKSkg
ewotICAgICAgICAgICAgaWYgKCQxLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpCi0gICAgICAgICAg
ICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSwgJDEtPmdl
dFR5cGUoKS5nZXRUeXBlTmFtZSgpKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+Z2V0UHJlY2lzaW9u
KCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCksICQxLT5pc01hdHJpeCgpKSk7
Ci0KLSAgICAgICAgICAgIGlmICgkMS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNv
bnN0KQotICAgICAgICAgICAgICAgICQkLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIo
RXZxQ29uc3QpOwotICAgICAgICB9IGVsc2UgaWYgKCQxLT5pc01hdHJpeCgpICYmICQxLT5nZXRU
eXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAkJC0+c2V0VHlw
ZShUVHlwZSgkMS0+Z2V0QmFzaWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3Qs
ICQxLT5nZXROb21pbmFsU2l6ZSgpKSk7Ci0gICAgICAgIGVsc2UgaWYgKCQxLT5pc01hdHJpeCgp
KQotICAgICAgICAgICAgJCQtPnNldFR5cGUoVFR5cGUoJDEtPmdldEJhc2ljVHlwZSgpLCAkMS0+
Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgJDEtPmdldE5vbWluYWxTaXplKCkpKTsKLSAg
ICAgICAgZWxzZSBpZiAoJDEtPmlzVmVjdG9yKCkgJiYgJDEtPmdldFR5cGUoKS5nZXRRdWFsaWZp
ZXIoKSA9PSBFdnFDb25zdCkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRC
YXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCkpOwotICAgICAgICBlbHNl
IGlmICgkMS0+aXNWZWN0b3IoKSkKLSAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5n
ZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnkpKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgJCQtPnNldFR5cGUoJDEtPmdldFR5cGUoKSk7CisgICAgICAg
ICQkID0gY29udGV4dC0+YWRkSW5kZXhFeHByZXNzaW9uKCQxLCBAMiwgJDMpOwogICAgIH0KICAg
ICB8IGZ1bmN0aW9uX2NhbGwgewogICAgICAgICAkJCA9ICQxOwogICAgIH0KLSAgICB8IHBvc3Rm
aXhfZXhwcmVzc2lvbiBET1QgRklFTERfU0VMRUNUSU9OIHsKKyAgICB8IHBvc3RmaXhfZXhwcmVz
c2lvbiBET1QgaWRlbnRpZmllciB7CiAgICAgICAgIGlmICgkMS0+aXNBcnJheSgpKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMy5saW5lLCAiY2Fubm90IGFwcGx5IGRvdCBvcGVyYXRv
ciB0byBhbiBhcnJheSIsICIuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMywgImNh
bm5vdCBhcHBseSBkb3Qgb3BlcmF0b3IgdG8gYW4gYXJyYXkiLCAiLiIpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCQxLT5pc1ZlY3Rv
cigpKSB7CiAgICAgICAgICAgICBUVmVjdG9yRmllbGRzIGZpZWxkczsKLSAgICAgICAgICAgIGlm
ICghIGNvbnRleHQtPnBhcnNlVmVjdG9yRmllbGRzKCokMy5zdHJpbmcsICQxLT5nZXROb21pbmFs
U2l6ZSgpLCBmaWVsZHMsICQzLmxpbmUpKSB7CisgICAgICAgICAgICBpZiAoISBjb250ZXh0LT5w
YXJzZVZlY3RvckZpZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRz
LCBAMykpIHsKICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0gMTsKICAgICAgICAgICAgICAg
ICBmaWVsZHMub2Zmc2V0c1swXSA9IDA7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJDEtPmdldFR5cGUoKS5nZXRR
dWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3Ig
ZmllbGRzCi0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRDb25zdFZlY3Rvck5vZGUo
ZmllbGRzLCAkMSwgJDMubGluZSk7CisgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRD
b25zdFZlY3Rvck5vZGUoZmllbGRzLCAkMSwgQDMpOwogICAgICAgICAgICAgICAgIGlmICgkJCA9
PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICAgICAgICAgJCQgPSAkMTsKQEAgLTM0MSwxMyArMjg1LDEzIEBAIHBvc3RmaXhfZXhwcmVz
c2lvbgogICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFzaWNU
eXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSwgRXZxQ29uc3QsIChpbnQpICgqJDMuc3RyaW5nKS5z
aXplKCkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgVFN0cmluZyB2
ZWN0b3JTdHJpbmcgPSAqJDMuc3RyaW5nOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCog
aW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVsZHMsICQzLmxpbmUp
OwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVP
cFZlY3RvclN3aXp6bGUsICQxLCBpbmRleCwgJDIubGluZSk7CisgICAgICAgICAgICAgICAgVElu
dGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxlKGZpZWxk
cywgQDMpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZElu
ZGV4KEVPcFZlY3RvclN3aXp6bGUsICQxLCBpbmRleCwgQDIpOwogICAgICAgICAgICAgICAgICQk
LT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5cGUoKSwgJDEtPmdldFByZWNpc2lvbigpLCBF
dnFUZW1wb3JhcnksIChpbnQpIHZlY3RvclN0cmluZy5zaXplKCkpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIGlmICgkMS0+aXNNYXRyaXgoKSkgewogICAgICAgICAgICAgVE1hdHJp
eEZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICBpZiAoISBjb250ZXh0LT5wYXJzZU1hdHJpeEZp
ZWxkcygqJDMuc3RyaW5nLCAkMS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAkMy5saW5lKSkg
eworICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKiQzLnN0cmlu
ZywgJDEtPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgQDMpKSB7CiAgICAgICAgICAgICAgICAg
ZmllbGRzLndob2xlUm93ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLndob2xlQ29s
ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLnJvdyA9IDA7CkBAIC0zNTYsODQgKzMw
MCw3OCBAQCBwb3N0Zml4X2V4cHJlc3Npb24KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKGZpZWxkcy53aG9sZVJvdyB8fCBmaWVsZHMud2hvbGVDb2wpIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIG5vbi1zY2FsYXIgZmllbGRzIG5vdCBpbXBsZW1l
bnRlZCB5ZXQiLCAiLiIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiIG5v
bi1zY2FsYXIgZmllbGRzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiLCAiLiIpOwogICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1
bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICAgICAgdW5pb25B
cnJheS0+c2V0SUNvbnN0KDApOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXgg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMy5saW5lKTsKLSAgICAgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwg
JDEsIGluZGV4LCAkMi5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDMpOworICAgICAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwg
aW5kZXgsIEAyKTsKICAgICAgICAgICAgICAgICAkJC0+c2V0VHlwZShUVHlwZSgkMS0+Z2V0QmFz
aWNUeXBlKCksICQxLT5nZXRQcmVjaXNpb24oKSxFdnFUZW1wb3JhcnksICQxLT5nZXROb21pbmFs
U2l6ZSgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIENvbnN0YW50
VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgICAg
ICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoZmllbGRzLmNvbCAqICQxLT5nZXROb21pbmFsU2l6ZSgp
ICsgZmllbGRzLnJvdyk7Ci0gICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVi
dEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICQzLmxpbmUpOwotICAgICAgICAgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0LCAkMSwg
aW5kZXgsICQyLmxpbmUpOworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMyk7CisgICAgICAgICAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICQxLCBpbmRl
eCwgQDIpOwogICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKFRUeXBlKCQxLT5nZXRCYXNpY1R5
cGUoKSwgJDEtPmdldFByZWNpc2lvbigpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSBpZiAoJDEtPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkgewogICAgICAgICAgICAgYm9v
bCBmaWVsZEZvdW5kID0gZmFsc2U7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZUxpc3QqIGZpZWxk
cyA9ICQxLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7Ci0gICAgICAgICAgICBpZiAoZmllbGRzID09
IDApIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAic3RydWN0dXJl
IGhhcyBubyBmaWVsZHMiLCAiSW50ZXJuYWwgRXJyb3IiKTsKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7Ci0gICAgICAgICAgICAgICAg
Zm9yIChpID0gMDsgaSA8IGZpZWxkcy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCgqZmllbGRzKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSA9PSAqJDMuc3RyaW5nKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBj
b25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSAkMS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVs
ZHMoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICAgICAgZm9yIChpID0g
MDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChmaWVsZHNb
aV0tPm5hbWUoKSA9PSAqJDMuc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGZpZWxkRm91
bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgaWYgKGZpZWxkRm91bmQpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCQxLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+YWRkQ29uc3RTdHJ1Y3QoKiQzLnN0cmluZywg
JDEsICQyLmxpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQkID09IDApIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICQkLT5zZXRUeXBlKCooKmZpZWxkcylbaV0udHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2YgdGhlIHJldHVybiB0eXBlLCBub3Qgb2Yg
dGhlIHN0cnVjdHVyZSBmaWVsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIHRo
ZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyBzaGFyZWQgYmV0d2VlbiB2YXJpb3VzIHN0cnVjdHVy
ZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQtPmdldFR5cGVQb2ludGVyKCktPnNl
dFF1YWxpZmllcihFdnFDb25zdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudFVu
aW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50
VW5pb24odW5pb25BcnJheSwgKigqZmllbGRzKVtpXS50eXBlLCAkMy5saW5lKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcElu
ZGV4RGlyZWN0U3RydWN0LCAkMSwgaW5kZXgsICQyLmxpbmUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgJCQtPnNldFR5cGUoKigqZmllbGRzKVtpXS50eXBlKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChmaWVsZEZvdW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKCQxLT5nZXRU
eXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAgICAgICAgICAgICAgICAgICAg
JCQgPSBjb250ZXh0LT5hZGRDb25zdFN0cnVjdCgqJDMuc3RyaW5nLCAkMSwgQDIpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoJCQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICQkLT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBjaGFuZ2UgdGhlIHF1YWxpZmllciBvZiB0aGUgcmV0dXJuIHR5cGUs
IG5vdCBvZiB0aGUgc3RydWN0dXJlIGZpZWxkCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBh
cyB0aGUgc3RydWN0dXJlIGRlZmluaXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1
Y3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgJCQtPmdldFR5cGVQb2ludGVyKCktPnNl
dFF1YWxpZmllcihFdnFDb25zdCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5l
LCAiIG5vIHN1Y2ggZmllbGQgaW4gc3RydWN0dXJlIiwgJDMuc3RyaW5nLT5jX3N0cigpKTsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAg
ICAkJCA9ICQxOworICAgICAgICAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
ID0gbmV3IENvbnN0YW50VW5pb25bMV07CisgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXkt
PnNldElDb25zdChpKTsKKyAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksICpmaWVs
ZHNbaV0tPnR5cGUoKSwgQDMpOworICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdFN0cnVjdCwgJDEsIGluZGV4LCBAMik7
CisgICAgICAgICAgICAgICAgICAgICQkLT5zZXRUeXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7CiAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcihAMiwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICQzLnN0cmlu
Zy0+Y19zdHIoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAg
ICAgICAgICAgICQkID0gJDE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiIGZpZWxkIHNlbGVjdGlvbiByZXF1aXJl
cyBzdHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFuZCBzaWRlIiwgJDMuc3Ry
aW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAiIGZpZWxkIHNl
bGVjdGlvbiByZXF1aXJlcyBzdHJ1Y3R1cmUsIHZlY3Rvciwgb3IgbWF0cml4IG9uIGxlZnQgaGFu
ZCBzaWRlIiwgJDMuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICAgICAgLy8gZG9uJ3Qg
ZGVsZXRlICQzLnN0cmluZywgaXQncyBmcm9tIHRoZSBwb29sCiAgICAgfQogICAgIHwgcG9zdGZp
eF9leHByZXNzaW9uIElOQ19PUCB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNo
ZWNrKCQyLmxpbmUsICIrKyIsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9y
Q2hlY2soQDIsICIrKyIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3RJbmNy
ZW1lbnQsICQxLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVtZW50LCAkMSwg
QDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigkMi5saW5lLCAiKysiLCAkMS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoQDIsICIrKyIs
ICQxLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBwb3N0Zml4
X2V4cHJlc3Npb24gREVDX09QIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hl
Y2soJDIubGluZSwgIi0tIiwgJDEpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JD
aGVjayhAMiwgIi0tIiwgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdERlY3Jl
bWVudCwgJDEsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNyZW1lbnQsICQxLCBA
MiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQyLmxpbmUsICItLSIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihAMiwgIi0tIiwg
JDEtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpAQCAtNDYxLDE4ICszOTksMTggQEAg
ZnVuY3Rpb25fY2FsbAogICAgICAgICAgICAgLy8gVGhlaXIgcGFyYW1ldGVycyB3aWxsIGJlIHZl
cmlmaWVkIGFsZ29yaXRobWljYWxseS4KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICBUVHlw
ZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7ICAvLyB1c2UgdGhpcyB0byBnZXQgdGhlIHR5
cGUgYmFjawotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmNvbnN0cnVjdG9yRXJyb3JDaGVjaygk
MS5saW5lLCAkMS5pbnRlcm1Ob2RlLCAqZm5DYWxsLCBvcCwgJnR5cGUpKSB7CisgICAgICAgICAg
ICBpZiAoY29udGV4dC0+Y29uc3RydWN0b3JFcnJvckNoZWNrKEAxLCAkMS5pbnRlcm1Ob2RlLCAq
Zm5DYWxsLCBvcCwgJnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgJCQgPSAwOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEl0J3Mg
YSBjb25zdHJ1Y3Rvciwgb2YgdHlwZSAndHlwZScuCiAgICAgICAgICAgICAgICAgLy8KLSAgICAg
ICAgICAgICAgICAkJCA9IGNvbnRleHQtPmFkZENvbnN0cnVjdG9yKCQxLmludGVybU5vZGUsICZ0
eXBlLCBvcCwgZm5DYWxsLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQt
PmFkZENvbnN0cnVjdG9yKCQxLmludGVybU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxsLCBAMSk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7CiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKDAsIG9wLCAkMS5saW5lKTsKKyAgICAgICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigw
LCBvcCwgQDEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgJCQtPnNldFR5cGUodHlwZSk7
CiAgICAgICAgIH0gZWxzZSB7CkBAIC00ODEsMTMgKzQxOSwxMyBAQCBmdW5jdGlvbl9jYWxsCiAg
ICAgICAgICAgICAvLwogICAgICAgICAgICAgY29uc3QgVEZ1bmN0aW9uKiBmbkNhbmRpZGF0ZTsK
ICAgICAgICAgICAgIGJvb2wgYnVpbHRJbjsKLSAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0gY29u
dGV4dC0+ZmluZEZ1bmN0aW9uKCQxLmxpbmUsIGZuQ2FsbCwgJmJ1aWx0SW4pOworICAgICAgICAg
ICAgZm5DYW5kaWRhdGUgPSBjb250ZXh0LT5maW5kRnVuY3Rpb24oQDEsIGZuQ2FsbCwgJmJ1aWx0
SW4pOwogICAgICAgICAgICAgaWYgKGZuQ2FuZGlkYXRlKSB7CiAgICAgICAgICAgICAgICAgLy8K
ICAgICAgICAgICAgICAgICAvLyBBIGRlY2xhcmVkIGZ1bmN0aW9uLgogICAgICAgICAgICAgICAg
IC8vCiAgICAgICAgICAgICAgICAgaWYgKGJ1aWx0SW4gJiYgIWZuQ2FuZGlkYXRlLT5nZXRFeHRl
bnNpb24oKS5lbXB0eSgpICYmCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmV4dGVuc2lv
bkVycm9yQ2hlY2soJDEubGluZSwgZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpKSkgeworICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKEAxLCBmbkNhbmRp
ZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3AgPSBmbkNhbmRp
ZGF0ZS0+Z2V0QnVpbHRJbk9wKCk7CkBAIC00OTksNyArNDM3LDcgQEAgZnVuY3Rpb25fY2FsbAog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRy
ZWF0IGl0IGxpa2UgYSBidWlsdC1pbiB1bmFyeSBvcGVyYXRvci4KICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRVbmFyeU1hdGgob3AsICQxLmludGVybU5vZGUsIDAsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZFVuYXJ5TWF0aChvcCwgJDEuaW50ZXJtTm9kZSwgQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkJCA9PSAwKSAgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImJ1aWx0IGluIHVuYXJ5
IG9wZXJhdG9yIGZ1bmN0aW9uLiAgVHlwZTogIiA8PCBzdGF0aWNfY2FzdDxUSW50ZXJtVHlwZWQq
PigkMS5pbnRlcm1Ob2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKTsKQEAgLTUwOCwxMiArNDQ2LDEy
IEBAIGZ1bmN0aW9uX2NhbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZWUVSUk9SOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdn
cmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRlLCBvcCwgJDEubGluZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVP
cGVyYXRvcigkMS5pbnRlcm1BZ2dyZWdhdGUsIG9wLCBAMSk7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlz
IGlzIGEgcmVhbCBmdW5jdGlvbiBjYWxsCiAKLSAgICAgICAgICAgICAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJDEuaW50ZXJtQWdncmVnYXRl
LCBFT3BGdW5jdGlvbkNhbGwsICQxLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigkMS5pbnRlcm1BZ2dyZWdh
dGUsIEVPcEZ1bmN0aW9uQ2FsbCwgQDEpOwogICAgICAgICAgICAgICAgICAgICAkJC0+c2V0VHlw
ZShmbkNhbmRpZGF0ZS0+Z2V0UmV0dXJuVHlwZSgpKTsKIAogICAgICAgICAgICAgICAgICAgICAv
LyB0aGlzIGlzIGhvdyB3ZSBrbm93IHdoZXRoZXIgdGhlIGdpdmVuIGZ1bmN0aW9uIGlzIGEgYnVp
bHRJbiBmdW5jdGlvbiBvciBhIHVzZXIgZGVmaW5lZCBmdW5jdGlvbgpAQCAtNTQwLDcgKzQ3OCw3
IEBAIGZ1bmN0aW9uX2NhbGwKICAgICAgICAgICAgICAgICAvLyBQdXQgb24gYSBkdW1teSBub2Rl
IGZvciBlcnJvciByZWNvdmVyeQogICAgICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9u
QXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5
LT5zZXRGQ29uc3QoMC4wZik7Ci0gICAgICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5k
ZWZpbmVkLCBFdnFDb25zdCksICQxLmxpbmUpOworICAgICAgICAgICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Rmxv
YXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CiAgICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01NTMsNyArNDkxLDcg
QEAgZnVuY3Rpb25fY2FsbF9vcl9tZXRob2QKICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAg
fCBwb3N0Zml4X2V4cHJlc3Npb24gRE9UIGZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyB7Ci0gICAgICAg
IGNvbnRleHQtPmVycm9yKCQzLmxpbmUsICJtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkIiwgIiIp
OworICAgICAgICBjb250ZXh0LT5lcnJvcihAMywgIm1ldGhvZHMgYXJlIG5vdCBzdXBwb3J0ZWQi
LCAiIik7CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgJCQgPSAkMzsKICAg
ICB9CkBAIC01NjIsMTEgKzUwMCw5IEBAIGZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9kCiBmdW5jdGlv
bl9jYWxsX2dlbmVyaWMKICAgICA6IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVy
cyBSSUdIVF9QQVJFTiB7CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICQkLmxpbmUgPSAkMi5s
aW5lOwogICAgIH0KICAgICB8IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX25vX3BhcmFtZXRlcnMgUklH
SFRfUEFSRU4gewogICAgICAgICAkJCA9ICQxOwotICAgICAgICAkJC5saW5lID0gJDIubGluZTsK
ICAgICB9CiAgICAgOwogCkBAIC01OTIsNyArNTI4LDcgQEAgZnVuY3Rpb25fY2FsbF9oZWFkZXJf
d2l0aF9wYXJhbWV0ZXJzCiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBUVHlw
ZSgkMy0+Z2V0VHlwZSgpKSB9OwogICAgICAgICAkMS5mdW5jdGlvbi0+YWRkUGFyYW1ldGVyKHBh
cmFtKTsKICAgICAgICAgJCQuZnVuY3Rpb24gPSAkMS5mdW5jdGlvbjsKLSAgICAgICAgJCQuaW50
ZXJtTm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5v
ZGUsICQzLCAkMi5saW5lKTsKKyAgICAgICAgJCQuaW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUsICQzLCBAMik7CiAgICAgfQogICAg
IDsKIApAQCAtNjE3LDM5ICs1NTMsMzkgQEAgZnVuY3Rpb25faWRlbnRpZmllcgogICAgICAgICAg
ICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICBpZiAoJDEubWF0cml4KSB7CiAgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCgkMS5zaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1
Y3RNYXQyOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RNYXQyOyAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RNYXQzOyAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2goJDEuc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7IGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjMjsgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9w
Q29uc3RydWN0VmVjMzsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjNDsgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0VmVj
MjsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0
VmVjMzsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3Ry
dWN0VmVjNDsgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CiAgICAg
ICAgICAgICAgICAgc3dpdGNoKCQxLnNpemUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdElu
dDsgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZ
KCJpdmVjMiIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWMyOyBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIDM6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjMyIsICQxLmxpbmUp
OyBvcCA9IEVPcENvbnN0cnVjdElWZWMzOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6
ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJpdmVjNCIsICQxLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVj
dElWZWM0OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0
SW50OyAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RJ
VmVjMjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdElW
ZWMzOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0SVZl
YzQ7IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKICAgICAgICAgICAgICAgICBzd2l0Y2goJDEuc2l6ZSkg
ewotICAgICAgICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0Qm9vbDsgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgMjogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWMyIiwgJDEubGluZSk7IG9wID0gRU9w
Q29uc3RydWN0QlZlYzI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgRlJB
R19WRVJUX09OTFkoImJ2ZWMzIiwgJDEubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7IGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWM0
IiwgJDEubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzQ7IGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgMTogb3AgPSBFT3BDb25zdHJ1Y3RCb29sOyAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSAyOiBvcCA9IEVPcENvbnN0cnVjdEJWZWMyOyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7IGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjNDsgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAob3AgPT0gRU9wTnVsbCkgewotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJjYW5ub3QgY29uc3RydWN0IHRoaXMgdHlw
ZSIsIGdldEJhc2ljU3RyaW5nKCQxLnR5cGUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcihAMSwgImNhbm5vdCBjb25zdHJ1Y3QgdGhpcyB0eXBlIiwgZ2V0QmFzaWNTdHJpbmcoJDEu
dHlwZSkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
ICAgICAkMS50eXBlID0gRWJ0RmxvYXQ7CiAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1
Y3RGbG9hdDsKQEAgLTY2MSwxNCArNTk3LDcgQEAgZnVuY3Rpb25faWRlbnRpZmllcgogICAgICAg
ICAkJCA9IGZ1bmN0aW9uOwogICAgIH0KICAgICB8IElERU5USUZJRVIgewotICAgICAgICBpZiAo
Y29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5zdHJpbmcpKQotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVi
cFVuZGVmaW5lZCk7Ci0gICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9u
KCQxLnN0cmluZywgdHlwZSk7Ci0gICAgICAgICQkID0gZnVuY3Rpb247Ci0gICAgfQotICAgIHwg
RklFTERfU0VMRUNUSU9OIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVj
aygkMS5saW5lLCAqJDEuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJy
b3JDaGVjayhAMSwgKiQxLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgVEZ1
bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oJDEuc3RyaW5nLCB0eXBlKTsKQEAgLTY4
MSwyOCArNjEwLDI4IEBAIHVuYXJ5X2V4cHJlc3Npb24KICAgICAgICAgJCQgPSAkMTsKICAgICB9
CiAgICAgfCBJTkNfT1AgdW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5s
VmFsdWVFcnJvckNoZWNrKCQxLmxpbmUsICIrKyIsICQyKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PmxWYWx1ZUVycm9yQ2hlY2soQDEsICIrKyIsICQyKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRo
KEVPcFByZUluY3JlbWVudCwgJDIsICQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFByZUluY3Jl
bWVudCwgJDIsIEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDEubGluZSwgIisrIiwgJDIt
PmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9y
KEAxLCAiKysiLCAkMi0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQyOwogICAgICAgICB9CiAgICAgfQogICAg
IHwgREVDX09QIHVuYXJ5X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVl
RXJyb3JDaGVjaygkMS5saW5lLCAiLS0iLCAkMikpCisgICAgICAgIGlmIChjb250ZXh0LT5sVmFs
dWVFcnJvckNoZWNrKEAxLCAiLS0iLCAkMikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQ
cmVEZWNyZW1lbnQsICQyLCAkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQcmVEZWNyZW1lbnQs
ICQyLCBAMSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewot
ICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCQxLmxpbmUsICItLSIsICQyLT5nZXRD
b21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihAMSwg
Ii0tIiwgJDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgfQogICAgIH0KICAgICB8IHVu
YXJ5X29wZXJhdG9yIHVuYXJ5X2V4cHJlc3Npb24gewogICAgICAgICBpZiAoJDEub3AgIT0gRU9w
TnVsbCkgewotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlN
YXRoKCQxLm9wLCAkMiwgJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKCQxLm9wLCAkMiwgQDEs
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgICAgIGlmICgkJCA9PSAwKSB7CiAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogZXJyb3JPcCA9ICIiOwogICAgICAgICAgICAgICAgIHN3
aXRjaCgkMS5vcCkgewpAQCAtNzEwLDcgKzYzOSw3IEBAIHVuYXJ5X2V4cHJlc3Npb24KICAgICAg
ICAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxOb3Q6IGVycm9yT3AgPSAiISI7IGJyZWFrOwogICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoJDEubGluZSwgZXJyb3JPcCwgJDItPmdldENv
bXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcihA
MSwgZXJyb3JPcCwgJDItPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAkJCA9ICQyOwogICAgICAgICAgICAg
fQpAQCAtNzIxLDI4ICs2NTAsMjYgQEAgdW5hcnlfZXhwcmVzc2lvbgogLy8gR3JhbW1hciBOb3Rl
OiAgTm8gdHJhZGl0aW9uYWwgc3R5bGUgdHlwZSBjYXN0cy4KIAogdW5hcnlfb3BlcmF0b3IKLSAg
ICA6IFBMVVMgIHsgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wTnVsbDsgfQotICAgIHwg
REFTSCAgeyAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BOZWdhdGl2ZTsgfQotICAgIHwg
QkFORyAgeyAkJC5saW5lID0gJDEubGluZTsgJCQub3AgPSBFT3BMb2dpY2FsTm90OyB9CisgICAg
OiBQTFVTICB7ICQkLm9wID0gRU9wTnVsbDsgfQorICAgIHwgREFTSCAgeyAkJC5vcCA9IEVPcE5l
Z2F0aXZlOyB9CisgICAgfCBCQU5HICB7ICQkLm9wID0gRU9wTG9naWNhbE5vdDsgfQogICAgIDsK
IC8vIEdyYW1tYXIgTm90ZTogIE5vICcqJyBvciAnJicgdW5hcnkgb3BzLiAgUG9pbnRlcnMgYXJl
IG5vdCBzdXBwb3J0ZWQuCiAKIG11bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24KICAgICA6IHVuYXJ5
X2V4cHJlc3Npb24geyAkJCA9ICQxOyB9CiAgICAgfCBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9u
IFNUQVIgdW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIqIiwgJDIu
bGluZSk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wTXVsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BNdWwsICQxLCAkMywg
QDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIioiLCAkMS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcihAMiwgIioiLCAkMS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdl
dENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQogICAgIH0KICAgICB8IG11bHRpcGxpY2F0aXZl
X2V4cHJlc3Npb24gU0xBU0ggdW5hcnlfZXhwcmVzc2lvbiB7Ci0gICAgICAgIEZSQUdfVkVSVF9P
TkxZKCIvIiwgJDIubGluZSk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEJpbmFyeU1hdGgoRU9wRGl2LCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
KTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BE
aXYsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09
IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIi8iLCAk
MS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIi8iLCAkMS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgfQpAQCAtNzUyLDE3ICs2Nzks
MTcgQEAgbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbgogYWRkaXRpdmVfZXhwcmVzc2lvbgogICAg
IDogbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGFkZGl0aXZl
X2V4cHJlc3Npb24gUExVUyBtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIHsKLSAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICQxLCAkMywgJDIu
bGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEFkZCwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9s
VGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+Ymlu
YXJ5T3BFcnJvcigkMi5saW5lLCAiKyIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAy
LCAiKyIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwog
ICAgICAgICB9CiAgICAgfQogICAgIHwgYWRkaXRpdmVfZXhwcmVzc2lvbiBEQVNIIG11bHRpcGxp
Y2F0aXZlX2V4cHJlc3Npb24gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCaW5hcnlNYXRoKEVPcFN1YiwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9w
U3ViLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgkJCA9
PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICItIiwg
JDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICItIiwgJDEtPmdldENvbXBsZXRlU3Ry
aW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAgIH0KQEAgLTc3Niw0MyArNzAz
LDQzIEBAIHNoaWZ0X2V4cHJlc3Npb24KIHJlbGF0aW9uYWxfZXhwcmVzc2lvbgogICAgIDogc2hp
ZnRfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IHJlbGF0aW9uYWxfZXhwcmVzc2lvbiBM
RUZUX0FOR0xFIHNoaWZ0X2V4cHJlc3Npb24gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRl
eHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QmluYXJ5TWF0aChFT3BMZXNzVGhhbiwgJDEsICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUp
OwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BF
cnJvcigkMi5saW5lLCAiPCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiPCIs
ICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1
bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5
LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmlu
ZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCByZWxhdGlv
bmFsX2V4cHJlc3Npb24gUklHSFRfQU5HTEUgc2hpZnRfZXhwcmVzc2lvbiAgewotICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuLCAk
MSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgJDEsICQzLCBA
MiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewotICAgICAg
ICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiPiIsICQxLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKEAyLCAiPiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07
CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAg
IH0KICAgICB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJlc3Npb24gTEVfT1Agc2hpZnRfZXhwcmVz
c2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRo
KEVPcExlc3NUaGFuRXF1YWwsICQxLCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUp
OworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExl
c3NUaGFuRXF1YWwsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAg
aWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGlu
ZSwgIjw9IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICI8PSIsICQxLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29u
c3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNv
bnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCByZWxhdGlvbmFsX2V4cHJl
c3Npb24gR0VfT1Agc2hpZnRfZXhwcmVzc2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuRXF1YWwsICQxLCAkMywgJDIu
bGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuRXF1YWwsICQxLCAkMywgQDIsIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIj49IiwgJDEtPmdldENvbXBsZXRlU3Ry
aW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoQDIsICI+PSIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAg
ICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAgICAg
ICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgOwpAQCAtODIwLDIzICs3NDcsMjMgQEAgcmVsYXRpb25hbF9leHByZXNzaW9u
CiBlcXVhbGl0eV9leHByZXNzaW9uCiAgICAgOiByZWxhdGlvbmFsX2V4cHJlc3Npb24geyAkJCA9
ICQxOyB9CiAgICAgfCBlcXVhbGl0eV9leHByZXNzaW9uIEVRX09QIHJlbGF0aW9uYWxfZXhwcmVz
c2lvbiAgewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRo
KEVPcEVxdWFsLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BFcXVhbCwgJDEs
ICQzLCBAMiwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoJCQgPT0gMCkgewot
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigkMi5saW5lLCAiPT0iLCAkMS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAg
Y29udGV4dC0+YmluYXJ5T3BFcnJvcihAMiwgIj09IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCks
ICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRV
bmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAg
ICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAkMi5saW5lKTsK
KyAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAyKTsK
ICAgICAgICAgfQogICAgIH0KICAgICB8IGVxdWFsaXR5X2V4cHJlc3Npb24gTkVfT1AgcmVsYXRp
b25hbF9leHByZXNzaW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QmluYXJ5TWF0aChFT3BOb3RFcXVhbCwgJDEsICQzLCAkMi5saW5lLCBjb250ZXh0LT5zeW1ib2xU
YWJsZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgo
RU9wTm90RXF1YWwsICQxLCAkMywgQDIsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAg
aWYgKCQkID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGlu
ZSwgIiE9IiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygp
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIhPSIsICQxLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29u
c3QoZmFsc2UpOwotICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNv
bnN0KSwgJDIubGluZSk7CisgICAgICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxQ29uc3QpLCBAMik7CiAgICAgICAgIH0KICAgICB9CiAgICAgOwpAQCAtODU2LDEzICs3ODMs
MTMgQEAgaW5jbHVzaXZlX29yX2V4cHJlc3Npb24KIGxvZ2ljYWxfYW5kX2V4cHJlc3Npb24KICAg
ICA6IGluY2x1c2l2ZV9vcl9leHByZXNzaW9uIHsgJCQgPSAkMTsgfQogICAgIHwgbG9naWNhbF9h
bmRfZXhwcmVzc2lvbiBBTkRfT1AgaW5jbHVzaXZlX29yX2V4cHJlc3Npb24gewotICAgICAgICAk
JCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICQx
LCAkMywgJDIubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQsICQxLCAkMywgQDIs
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgIiYmIiwgJDEtPmdldENvbXBsZXRl
U3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmJpbmFyeU9wRXJyb3IoQDIsICImJiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07
CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAg
IH0KICAgICB9CiAgICAgOwpAQCAtODcwLDEzICs3OTcsMTMgQEAgbG9naWNhbF9hbmRfZXhwcmVz
c2lvbgogbG9naWNhbF94b3JfZXhwcmVzc2lvbgogICAgIDogbG9naWNhbF9hbmRfZXhwcmVzc2lv
biB7ICQkID0gJDE7IH0KICAgICB8IGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24gWE9SX09QIGxvZ2lj
YWxfYW5kX2V4cHJlc3Npb24gIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsWG9yLCAkMSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5
TWF0aChFT3BMb2dpY2FsWG9yLCAkMSwgJDMsIEAyLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAg
ICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9y
KCQyLmxpbmUsICJeXiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKEAyLCAiXl4iLCAk
MS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5p
b25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+
c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCBFdnFDb25zdCksICQyLmxpbmUpOworICAgICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cUNvbnN0KSwgQDIpOwogICAgICAgICB9CiAgICAgfQogICAgIDsKQEAgLTg4NCwx
MyArODExLDEzIEBAIGxvZ2ljYWxfeG9yX2V4cHJlc3Npb24KIGxvZ2ljYWxfb3JfZXhwcmVzc2lv
bgogICAgIDogbG9naWNhbF94b3JfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IGxvZ2lj
YWxfb3JfZXhwcmVzc2lvbiBPUl9PUCBsb2dpY2FsX3hvcl9leHByZXNzaW9uICB7Ci0gICAgICAg
ICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAk
MSwgJDMsICQyLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKKyAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsT3IsICQxLCAkMywgQDIs
IGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCQkID09IDApIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoJDIubGluZSwgInx8IiwgJDEtPmdldENvbXBsZXRl
U3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmJpbmFyeU9wRXJyb3IoQDIsICJ8fCIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07
CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAg
JCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgJDIubGluZSk7CisgICAgICAg
ICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMik7CiAgICAgICAg
IH0KICAgICB9CiAgICAgOwpAQCAtODk4LDE1ICs4MjUsMTUgQEAgbG9naWNhbF9vcl9leHByZXNz
aW9uCiBjb25kaXRpb25hbF9leHByZXNzaW9uCiAgICAgOiBsb2dpY2FsX29yX2V4cHJlc3Npb24g
eyAkJCA9ICQxOyB9CiAgICAgfCBsb2dpY2FsX29yX2V4cHJlc3Npb24gUVVFU1RJT04gZXhwcmVz
c2lvbiBDT0xPTiBhc3NpZ25tZW50X2V4cHJlc3Npb24gewotICAgICAgIGlmIChjb250ZXh0LT5i
b29sRXJyb3JDaGVjaygkMi5saW5lLCAkMSkpCisgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJv
ckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCQxLCAkMywgJDUsICQy
LmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24o
JDEsICQzLCAkNSwgQDIpOwogICAgICAgICBpZiAoJDMtPmdldFR5cGUoKSAhPSAkNS0+Z2V0VHlw
ZSgpKQogICAgICAgICAgICAgJCQgPSAwOwogCiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICI6IiwgJDMtPmdldENvbXBs
ZXRlU3RyaW5nKCksICQ1LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoQDIsICI6IiwgJDMtPmdldENvbXBsZXRlU3RyaW5nKCksICQ1LT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICQkID0gJDU7CiAgICAgICAgIH0KQEAgLTkxNiwxMSArODQzLDExIEBAIGNvbmRp
dGlvbmFsX2V4cHJlc3Npb24KIGFzc2lnbm1lbnRfZXhwcmVzc2lvbgogICAgIDogY29uZGl0aW9u
YWxfZXhwcmVzc2lvbiB7ICQkID0gJDE7IH0KICAgICB8IHVuYXJ5X2V4cHJlc3Npb24gYXNzaWdu
bWVudF9vcGVyYXRvciBhc3NpZ25tZW50X2V4cHJlc3Npb24gewotICAgICAgICBpZiAoY29udGV4
dC0+bFZhbHVlRXJyb3JDaGVjaygkMi5saW5lLCAiYXNzaWduIiwgJDEpKQorICAgICAgICBpZiAo
Y29udGV4dC0+bFZhbHVlRXJyb3JDaGVjayhAMiwgImFzc2lnbiIsICQxKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQXNzaWduKCQyLm9wLCAkMSwgJDMsICQyLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRBc3NpZ24oJDIub3AsICQxLCAkMywgQDIpOwogICAgICAgICBpZiAo
JCQgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YXNzaWduRXJyb3IoJDIubGluZSwgImFz
c2lnbiIsICQxLT5nZXRDb21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5hc3NpZ25FcnJvcihAMiwgImFzc2lnbiIsICQxLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAkMy0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAgICAgICB9CkBAIC05
MjgsMTEgKzg1NSwxMSBAQCBhc3NpZ25tZW50X2V4cHJlc3Npb24KICAgICA7CiAKIGFzc2lnbm1l
bnRfb3BlcmF0b3IKLSAgICA6IEVRVUFMICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wQXNzaWduOyB9Ci0gICAg
fCBNVUxfQVNTSUdOICAgeyBGUkFHX1ZFUlRfT05MWSgiKj0iLCAkMS5saW5lKTsgICAgICQkLmxp
bmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcE11bEFzc2lnbjsgfQotICAgIHwgRElWX0FTU0lHTiAg
IHsgRlJBR19WRVJUX09OTFkoIi89IiwgJDEubGluZSk7ICAgICAkJC5saW5lID0gJDEubGluZTsg
JCQub3AgPSBFT3BEaXZBc3NpZ247IH0KLSAgICB8IEFERF9BU1NJR04gICB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJCQubGluZSA9ICQxLmxpbmU7ICQkLm9wID0gRU9wQWRk
QXNzaWduOyB9Ci0gICAgfCBTVUJfQVNTSUdOICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICQkLmxpbmUgPSAkMS5saW5lOyAkJC5vcCA9IEVPcFN1YkFzc2lnbjsgfQorICAg
IDogRVFVQUwgICAgICAgIHsgJCQub3AgPSBFT3BBc3NpZ247IH0KKyAgICB8IE1VTF9BU1NJR04g
ICB7ICQkLm9wID0gRU9wTXVsQXNzaWduOyB9CisgICAgfCBESVZfQVNTSUdOICAgeyAkJC5vcCA9
IEVPcERpdkFzc2lnbjsgfQorICAgIHwgQUREX0FTU0lHTiAgIHsgJCQub3AgPSBFT3BBZGRBc3Np
Z247IH0KKyAgICB8IFNVQl9BU1NJR04gICB7ICQkLm9wID0gRU9wU3ViQXNzaWduOyB9CiAgICAg
OwogCiBleHByZXNzaW9uCkBAIC05NDAsOSArODY3LDkgQEAgZXhwcmVzc2lvbgogICAgICAgICAk
JCA9ICQxOwogICAgIH0KICAgICB8IGV4cHJlc3Npb24gQ09NTUEgYXNzaWdubWVudF9leHByZXNz
aW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29tbWEoJDEsICQz
LCAkMi5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29tbWEo
JDEsICQzLCBAMik7CiAgICAgICAgIGlmICgkJCA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5iaW5hcnlPcEVycm9yKCQyLmxpbmUsICIsIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQz
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJy
b3IoQDIsICIsIiwgJDEtPmdldENvbXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICQkID0g
JDM7CiAgICAgICAgIH0KQEAgLTk3MCwxMyArODk3LDEzIEBAIGRlY2xhcmF0aW9uCiAgICAgICAg
ICAgICBjb25zdCBUUGFyYW1ldGVyICZwYXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOwogICAg
ICAgICAgICAgaWYgKHBhcmFtLm5hbWUgIT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZShwYXJhbS5uYW1lLCAqcGFy
YW0udHlwZSk7CisgICAgICAgICAgICAgICAgVFZhcmlhYmxlIHZhcmlhYmxlKHBhcmFtLm5hbWUs
ICpwYXJhbS50eXBlKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBwcm90b3R5
cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksIHZhcmlh
YmxlLT5nZXROYW1lKCksIHZhcmlhYmxlLT5nZXRUeXBlKCksICQxLmxpbmUpLCAkMS5saW5lKTsK
KyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0Fn
Z3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFi
bGUuZ2V0VW5pcXVlSWQoKSwgdmFyaWFibGUuZ2V0TmFtZSgpLCB2YXJpYWJsZS5nZXRUeXBlKCks
IEAxKSwgQDEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93
QWdncmVnYXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAi
IiwgKnBhcmFtLnR5cGUsICQxLmxpbmUpLCAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICBwcm90
b3R5cGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCBAMSksIEAx
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTk5MiwxMSArOTE5LDEx
IEBAIGRlY2xhcmF0aW9uCiAgICAgfQogICAgIHwgUFJFQ0lTSU9OIHByZWNpc2lvbl9xdWFsaWZp
ZXIgdHlwZV9zcGVjaWZpZXJfbm9fcHJlYyBTRU1JQ09MT04gewogICAgICAgICBpZiAoKCQyID09
IEVicEhpZ2gpICYmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX0ZSQUdNRU5UX1NIQURFUikg
JiYgIWNvbnRleHQtPmZyYWdtZW50UHJlY2lzaW9uSGlnaCkgewotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoJDEubGluZSwgInByZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGZyYWdtZW50
IHNoYWRlciIsICJoaWdocCIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJwcmVj
aXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWNv
bnRleHQtPnN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oICQzLCAkMiApKSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiaWxsZWdhbCB0eXBlIGFyZ3VtZW50IGZv
ciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmluZygkMy50eXBlKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImlsbGVnYWwgdHlwZSBhcmd1bWVudCBm
b3IgZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlmaWVyIiwgZ2V0QmFzaWNTdHJpbmcoJDMudHlwZSkp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgICQk
ID0gMDsKQEAgLTEwMTYsMjQgKzk0Myw0MSBAQCBmdW5jdGlvbl9wcm90b3R5cGUKICAgICAgICAg
VEZ1bmN0aW9uKiBwcmV2RGVjID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uKj4oY29udGV4dC0+c3lt
Ym9sVGFibGUuZmluZCgkMS0+Z2V0TWFuZ2xlZE5hbWUoKSkpOwogICAgICAgICBpZiAocHJldkRl
YykgewogICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdldFJldHVyblR5cGUoKSAhPSAkMS0+Z2V0
UmV0dXJuVHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwg
Im92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSByZXR1cm4gdHlwZSIsICQx
LT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoQDIsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUg
cmV0dXJuIHR5cGUiLCAkMS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCkpOwogICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFyYW1Db3VudCgpOyArK2kp
IHsKICAgICAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVh
bGlmaWVyKCkgIT0gJDEtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmllcigpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJvdmVybG9hZGVkIGZ1bmN0
aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAkMS0+Z2V0UGFy
YW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5lcnJvcihAMiwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2Ft
ZSBwYXJhbWV0ZXIgcXVhbGlmaWVycyIsICQxLT5nZXRQYXJhbShpKS50eXBlLT5nZXRRdWFsaWZp
ZXJTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLwor
ICAgICAgICAvLyBDaGVjayBmb3IgcHJldmlvdXNseSBkZWNsYXJlZCB2YXJpYWJsZXMgdXNpbmcg
dGhlIHNhbWUgbmFtZS4KKyAgICAgICAgLy8KKyAgICAgICAgVFN5bWJvbCAqcHJldlN5bSA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmZpbmQoJDEtPmdldE5hbWUoKSk7CisgICAgICAgIGlmIChwcmV2
U3ltKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXByZXZTeW0tPmlzRnVuY3Rpb24oKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInJlZGVm
aW5pdGlvbiIsICQxLT5nZXROYW1lKCkuY19zdHIoKSwgImZ1bmN0aW9uIik7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgLy8gSW5zZXJ0IHRoZSB1bm1hbmdsZWQg
bmFtZSB0byBkZXRlY3QgcG90ZW50aWFsIGZ1dHVyZSByZWRlZmluaXRpb24gYXMgYSB2YXJpYWJs
ZS4KKyAgICAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLmdldE91dGVyTGV2ZWwoKS0+aW5z
ZXJ0KCQxLT5nZXROYW1lKCksICokMSk7CisgICAgICAgIH0KKworICAgICAgICAvLwogICAgICAg
ICAvLyBJZiB0aGlzIGlzIGEgcmVkZWNsYXJhdGlvbiwgaXQgY291bGQgYWxzbyBiZSBhIGRlZmlu
aXRpb24sCiAgICAgICAgIC8vIGluIHdoaWNoIGNhc2UsIHdlIHdhbnQgdG8gdXNlIHRoZSB2YXJp
YWJsZSBuYW1lcyBmcm9tIHRoaXMgb25lLCBhbmQgbm90IHRoZSBvbmUgdGhhdCdzCiAgICAgICAg
IC8vIGJlaW5nIHJlZGVjbGFyZWQuICBTbywgcGFzcyBiYWNrIHVwIHRoaXMgZGVjbGFyYXRpb24s
IG5vdCB0aGUgb25lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgIC8vCiAgICAgICAgICQk
LmZ1bmN0aW9uID0gJDE7Ci0gICAgICAgICQkLmxpbmUgPSAkMi5saW5lOwogCiAgICAgICAgIC8v
IFdlJ3JlIGF0IHRoZSBpbm5lciBzY29wZSBsZXZlbCBvZiB0aGUgZnVuY3Rpb24ncyBhcmd1bWVu
dHMgYW5kIGJvZHkgc3RhdGVtZW50LgogICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9uIHByb3Rv
dHlwZSB0byB0aGUgc3Vycm91bmRpbmcgc2NvcGUgaW5zdGVhZC4KQEAgLTEwNjksNyArMTAxMyw3
IEBAIGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMKICAgICAgICAgICAgIC8vCiAgICAg
ICAgICAgICAvLyBUaGlzIHBhcmFtZXRlciA+IGZpcnN0IGlzIHZvaWQKICAgICAgICAgICAgIC8v
Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGFuIGFyZ3Vt
ZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMiwgImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2
b2lkKSciLCAidm9pZCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgZGVsZXRlICQzLnBhcmFtLnR5cGU7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMDgzLDEx
ICsxMDI3LDExIEBAIGZ1bmN0aW9uX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMKIGZ1bmN0aW9uX2hl
YWRlcgogICAgIDogZnVsbHlfc3BlY2lmaWVkX3R5cGUgSURFTlRJRklFUiBMRUZUX1BBUkVOIHsK
ICAgICAgICAgaWYgKCQxLnF1YWxpZmllciAhPSBFdnFHbG9iYWwgJiYgJDEucXVhbGlmaWVyICE9
IEV2cVRlbXBvcmFyeSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm5v
IHF1YWxpZmllcnMgYWxsb3dlZCBmb3IgZnVuY3Rpb24gcmV0dXJuIiwgZ2V0UXVhbGlmaWVyU3Ry
aW5nKCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJubyBx
dWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9uIHJldHVybiIsIGdldFF1YWxpZmllclN0cmlu
ZygkMS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAg
ICAgfQogICAgICAgICAvLyBtYWtlIHN1cmUgYSBzYW1wbGVyIGlzIG5vdCBpbnZvbHZlZCBhcyB3
ZWxsLi4uCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCQy
LmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hl
Y2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAv
LyBBZGQgdGhlIGZ1bmN0aW9uIGFzIGEgcHJvdG90eXBlIGFmdGVyIHBhcnNpbmcgaXQgKHdlIGRv
IG5vdCBzdXBwb3J0IHJlY3Vyc2lvbikKQEAgLTExMDIsMzMgKzEwNDYsMzEgQEAgZnVuY3Rpb25f
aGVhZGVyCiAKIHBhcmFtZXRlcl9kZWNsYXJhdG9yCiAgICAgLy8gVHlwZSArIG5hbWUKLSAgICA6
IHR5cGVfc3BlY2lmaWVyIElERU5USUZJRVIgeworICAgIDogdHlwZV9zcGVjaWZpZXIgaWRlbnRp
ZmllciB7CiAgICAgICAgIGlmICgkMS50eXBlID09IEVidFZvaWQpIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCQyLmxpbmUsICJpbGxlZ2FsIHVzZSBvZiB0eXBlICd2b2lkJyIsICQyLnN0
cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgImlsbGVnYWwg
dXNlIG9mIHR5cGUgJ3ZvaWQnIiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2
ZWRFcnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+
cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHskMi5zdHJpbmcsIG5ldyBU
VHlwZSgkMSl9OwotICAgICAgICAkJC5saW5lID0gJDIubGluZTsKICAgICAgICAgJCQucGFyYW0g
PSBwYXJhbTsKICAgICB9Ci0gICAgfCB0eXBlX3NwZWNpZmllciBJREVOVElGSUVSIExFRlRfQlJB
Q0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgeworICAgIHwgdHlwZV9zcGVj
aWZpZXIgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9C
UkFDS0VUIHsKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gbWFrZSBhbiBhcnJheSBvdXQg
b2YgdGhpcyB0eXBlCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQz
LmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDMs
ICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29u
dGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQyLmxpbmUsICokMi5zdHJpbmcpKQorICAgICAgICBp
ZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDMubGluZSwgJDQsIHNpemUpKQorICAgICAg
ICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhAMywgJDQsIHNpemUpKQogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAkMS5zZXRBcnJheSh0cnVlLCBzaXpl
KTsKIAogICAgICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZSgkMSk7CiAgICAgICAgIFRQYXJh
bWV0ZXIgcGFyYW0gPSB7ICQyLnN0cmluZywgdHlwZSB9OwotICAgICAgICAkJC5saW5lID0gJDIu
bGluZTsKICAgICAgICAgJCQucGFyYW0gPSBwYXJhbTsKICAgICB9CiAgICAgOwpAQCAtMTE0NCwx
NCArMTA4NiwxNCBAQCBwYXJhbWV0ZXJfZGVjbGFyYXRpb24KICAgICAvLwogICAgIDogdHlwZV9x
dWFsaWZpZXIgcGFyYW1ldGVyX3F1YWxpZmllciBwYXJhbWV0ZXJfZGVjbGFyYXRvciB7CiAgICAg
ICAgICQkID0gJDM7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soJDMubGlu
ZSwgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChjb250ZXh0
LT5wYXJhbUVycm9yQ2hlY2soQDMsICQxLnF1YWxpZmllciwgJDIsICQkLnBhcmFtLnR5cGUpKQog
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgIH0KICAgICB8IHBhcmFtZXRlcl9x
dWFsaWZpZXIgcGFyYW1ldGVyX2RlY2xhcmF0b3IgewogICAgICAgICAkJCA9ICQyOwotICAgICAg
ICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soJDIubGluZSwgJDEsICok
Mi5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJv
ckNoZWNrKEAyLCAkMSwgKiQyLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCQyLmxpbmUsIEV2
cVRlbXBvcmFyeSwgJDEsICQkLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+cGFy
YW1FcnJvckNoZWNrKEAyLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9CiAgICAgLy8KQEAgLTExNTksMTQgKzEx
MDEsMTQgQEAgcGFyYW1ldGVyX2RlY2xhcmF0aW9uCiAgICAgLy8KICAgICB8IHR5cGVfcXVhbGlm
aWVyIHBhcmFtZXRlcl9xdWFsaWZpZXIgcGFyYW1ldGVyX3R5cGVfc3BlY2lmaWVyIHsKICAgICAg
ICAgJCQgPSAkMzsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtRXJyb3JDaGVjaygkMy5saW5l
LCAkMS5xdWFsaWZpZXIsICQyLCAkJC5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PnBhcmFtRXJyb3JDaGVjayhAMywgJDEucXVhbGlmaWVyLCAkMiwgJCQucGFyYW0udHlwZSkpCiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgfQogICAgIHwgcGFyYW1ldGVyX3F1
YWxpZmllciBwYXJhbWV0ZXJfdHlwZV9zcGVjaWZpZXIgewogICAgICAgICAkJCA9ICQyOwotICAg
ICAgICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soJDIubGluZSwgJDEs
ICokMi5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJF
cnJvckNoZWNrKEAyLCAkMSwgKiQyLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCQyLmxpbmUs
IEV2cVRlbXBvcmFyeSwgJDEsICQkLnBhcmFtLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+
cGFyYW1FcnJvckNoZWNrKEAyLCBFdnFUZW1wb3JhcnksICQxLCAkJC5wYXJhbS50eXBlKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICB9CiAgICAgOwpAQCAtMTE5Nyw4MyAr
MTEzOSw4MyBAQCBpbml0X2RlY2xhcmF0b3JfbGlzdAogICAgIDogc2luZ2xlX2RlY2xhcmF0aW9u
IHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9Ci0gICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBD
T01NQSBJREVOVElGSUVSIHsKKyAgICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENPTU1BIGlkZW50
aWZpZXIgewogICAgICAgICBpZiAoJDEudHlwZS50eXBlID09IEVidEludmFyaWFudCAmJiAhJDMu
c3ltYm9sKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMy5saW5lLCAi
dW5kZWNsYXJlZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICQzLnN0cmluZy0+
Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMywgInVuZGVjbGFyZWQgaWRl
bnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMy5zdHJpbmctPmNfc3RyKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAKLSAgICAgICAgVEludGVy
bVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDMu
c3RyaW5nLCBUVHlwZSgkMS50eXBlKSwgJDMubGluZSk7Ci0gICAgICAgICQkLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybU5vZGUs
IHN5bWJvbCwgJDMubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQzLnN0cmluZywgVFR5cGUoJDEudHlwZSks
IEAzKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgc3ltYm9sLCBAMyk7CiAgICAgICAgIAotICAg
ICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygkMy5saW5lLCAkJC50
eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMs
ICQkLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlm
IChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQk
LnR5cGUsIGZhbHNlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hl
Y2soQDMsICokMy5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKIAogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gMDsKLSAgICAgICAg
aWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQkLnR5
cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNrKEAz
LCAqJDMuc3RyaW5nLCAkJC50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIGlmIChzeW1ib2wgJiYgdmFyaWFibGUpCiAgICAgICAgICAgICBz
eW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKICAgICB9Ci0gICAgfCBpbml0
X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFD
S0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDMu
bGluZSwgJDEudHlwZSkpCisgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlm
aWVyIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0
cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNo
ZWNrKCQzLmxpbmUsICokMy5zdHJpbmcsICQxLnR5cGUsIHRydWUpKQorICAgICAgICBpZiAoY29u
dGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjayhAMywgKiQzLnN0cmluZywgJDEudHlwZSwgdHJ1
ZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgJCQgPSAkMTsK
IAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygkNC5saW5lLCAkMS50
eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDQubGluZSwgJDEudHlw
ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKEA0LCAkMS50eXBl
KSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soQDQsICQxLnR5cGUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICQxLnR5cGUuc2V0QXJyYXkodHJ1ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxl
OwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygkNC5saW5lLCAqJDMu
c3RyaW5nLCAkMS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlFcnJvckNoZWNrKEA0LCAqJDMuc3RyaW5nLCAkMS50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgfQotICAgIHwgaW5p
dF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiBMRUZUX0JSQUNLRVQgY29uc3RhbnRf
ZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1
YWxpZmllckVycm9yQ2hlY2soJDMubGluZSwgJDEudHlwZSkpCisgICAgfCBpbml0X2RlY2xhcmF0
b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9u
IFJJR0hUX0JSQUNLRVQgeworICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJy
b3JDaGVjayhAMywgJDEudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAK
LSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soJDMubGluZSwgKiQz
LnN0cmluZywgJDEudHlwZSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29u
c3RFcnJvckNoZWNrKEAzLCAqJDMuc3RyaW5nLCAkMS50eXBlLCB0cnVlKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAkJCA9ICQxOwogCi0gICAgICAgIGlmIChj
b250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQ0LmxpbmUsICQxLnR5cGUpIHx8IGNvbnRleHQt
PmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygkNC5saW5lLCAkMS50eXBlKSkKKyAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDQsICQxLnR5cGUpIHx8IGNvbnRleHQtPmFy
cmF5UXVhbGlmaWVyRXJyb3JDaGVjayhANCwgJDEudHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHNpemU7Ci0gICAg
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygkNC5saW5lLCAkNSwgc2l6
ZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjayhANCwgJDUs
IHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAg
ICQxLnR5cGUuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAgICAgICAgICBUVmFyaWFibGUqIHZh
cmlhYmxlID0gMDsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soJDQu
bGluZSwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUpKQorICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5RXJyb3JDaGVjayhANCwgKiQzLnN0cmluZywgJDEudHlwZSwgdmFyaWFibGUp
KQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIFRUeXBl
IHR5cGUgPSBUVHlwZSgkMS50eXBlKTsKICAgICAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNp
emUpOwotICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpIDogMCwgKiQzLnN0cmlu
ZywgdHlwZSwgJDMubGluZSksICQzLmxpbmUpOworICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwg
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZSA/IHZhcmlhYmxlLT5nZXRV
bmlxdWVJZCgpIDogMCwgKiQzLnN0cmluZywgdHlwZSwgQDMpLCBAMyk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBJREVOVElGSUVSIEVRVUFMIGlu
aXRpYWxpemVyIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hl
Y2soJDMubGluZSwgJDEudHlwZSkpCisgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBp
ZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVyIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVj
dFF1YWxpZmllckVycm9yQ2hlY2soQDMsICQxLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogCiAgICAgICAgICQkID0gJDE7CiAKICAgICAgICAgVEludGVybU5vZGUqIGlu
dGVybU5vZGU7Ci0gICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCQzLmxp
bmUsICokMy5zdHJpbmcsICQxLnR5cGUsICQ1LCBpbnRlcm1Ob2RlKSkgeworICAgICAgICBpZiAo
IWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcihAMywgKiQzLnN0cmluZywgJDEudHlwZSwgJDUs
IGludGVybU5vZGUpKSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gYnVpbGQgdGhl
IGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICAgICAgICAgLy8KICAgICAgICAgICAg
IGlmIChpbnRlcm1Ob2RlKQotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1Ob2RlLCBpbnRlcm1Ob2RlLCAkNC5s
aW5lKTsKKyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
Lmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgaW50ZXJtTm9kZSwgQDQpOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9ICQxLmludGVybUFn
Z3JlZ2F0ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTEyODYsNzkgKzEyMjgsNzkgQEAgaW5pdF9k
ZWNsYXJhdG9yX2xpc3QKIHNpbmdsZV9kZWNsYXJhdGlvbgogICAgIDogZnVsbHlfc3BlY2lmaWVk
X3R5cGUgewogICAgICAgICAkJC50eXBlID0gJDE7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0
ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2woMCwgIiIsIFRUeXBlKCQxKSwgJDEubGluZSksICQxLmxpbmUpOworICAg
ICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3Jl
Z2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCBUVHlwZSgkMSksIEAx
KSwgQDEpOwogICAgIH0KLSAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIElERU5USUZJRVIgewot
ICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
U3ltYm9sKDAsICokMi5zdHJpbmcsIFRUeXBlKCQxKSwgJDIubGluZSk7Ci0gICAgICAgICQkLmlu
dGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJv
bCwgJDIubGluZSk7CisgICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIHsKKyAg
ICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5
bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkMSksIEAyKTsKKyAgICAgICAgJCQuaW50ZXJtQWdn
cmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7
CiAgICAgICAgIAotICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVj
aygkMi5saW5lLCAkJC50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmll
ckVycm9yQ2hlY2soQDIsICQkLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCQyLmxpbmUs
ICokMi5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbklu
aXRDb25zdEVycm9yQ2hlY2soQDIsICokMi5zdHJpbmcsICQkLnR5cGUsIGZhbHNlKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgJCQu
dHlwZSA9ICQxOwogCiAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICBp
ZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZywgJCQudHlw
ZSwgdmFyaWFibGUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soQDIs
ICokMi5zdHJpbmcsICQkLnR5cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgICAgIHN5
bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogICAgIH0KLSAgICB8IGZ1bGx5
X3NwZWNpZmllZF90eXBlIElERU5USUZJRVIgTEVGVF9CUkFDS0VUIFJJR0hUX0JSQUNLRVQgewot
ICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlv
bnMgbm90IHN1cHBvcnRlZCIsICQyLnN0cmluZy0+Y19zdHIoKSk7CisgICAgfCBmdWxseV9zcGVj
aWZpZWRfdHlwZSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBSSUdIVF9CUkFDS0VUIHsKKyAgICAg
ICAgY29udGV4dC0+ZXJyb3IoQDIsICJ1bnNpemVkIGFycmF5IGRlY2xhcmF0aW9ucyBub3Qgc3Vw
cG9ydGVkIiwgJDIuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgVFR5cGUoJDEpLCAkMi5saW5lKTsKLSAgICAgICAg
JCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUo
c3ltYm9sLCAkMi5saW5lKTsKKyAgICAgICAgVEludGVybVN5bWJvbCogc3ltYm9sID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkMSksIEAyKTsK
KyAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VB
Z2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgICQkLnR5cGUgPSAkMTsKICAgICB9Ci0gICAg
fCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIExFRlRfQlJBQ0tFVCBjb25zdGFudF9l
eHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgeworICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRl
bnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsK
ICAgICAgICAgVFR5cGUgdHlwZSA9IFRUeXBlKCQxKTsKICAgICAgICAgaW50IHNpemU7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCQyLmxpbmUsICQ0LCBzaXplKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDIsICQ0LCBzaXplKSkK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgdHlwZS5zZXRBcnJheVNp
emUoc2l6ZSk7Ci0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgdHlwZSwgJDIubGluZSk7Ci0gICAgICAg
ICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRl
KHN5bWJvbCwgJDIubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKiQyLnN0cmluZywgdHlwZSwgQDIpOworICAg
ICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3Jl
Z2F0ZShzeW1ib2wsIEAyKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCQyLmxpbmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0
cnVjdFF1YWxpZmllckVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygk
Mi5saW5lLCAqJDIuc3RyaW5nLCAkMSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25J
bml0Q29uc3RFcnJvckNoZWNrKEAyLCAqJDIuc3RyaW5nLCAkMSwgdHJ1ZSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgJCQudHlwZSA9ICQxOwogCi0gICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQzLmxpbmUsICQxKSB8fCBjb250ZXh0
LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soJDMubGluZSwgJDEpKQorICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjayhAMywgJDEpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlm
aWVyRXJyb3JDaGVjayhAMywgJDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soJDMubGluZSwgJDQsIHNpemUpKQorICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQ0LCBzaXplKSkKICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgICAgICQxLnNldEFycmF5
KHRydWUsIHNpemUpOwogICAgICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAg
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCQzLmxpbmUsICokMi5zdHJpbmcs
ICQxLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNr
KEAzLCAqJDIuc3RyaW5nLCAkMSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAgICAgICAg
ICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVSIEVRVUFMIGlu
aXRpYWxpemVyIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hl
Y2soJDIubGluZSwgJDEpKQorICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmllciBF
UVVBTCBpbml0aWFsaXplciB7CisgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RRdWFsaWZpZXJF
cnJvckNoZWNrKEAyLCAkMSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAg
ICAgICAgJCQudHlwZSA9ICQxOwogCiAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOwot
ICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMi5saW5lLCAqJDIuc3Ry
aW5nLCAkMSwgJDQsIGludGVybU5vZGUpKSB7CisgICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0
ZUluaXRpYWxpemVyKEAyLCAqJDIuc3RyaW5nLCAkMSwgJDQsIGludGVybU5vZGUpKSB7CiAgICAg
ICAgIC8vCiAgICAgICAgIC8vIEJ1aWxkIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbgogICAg
ICAgICAvLwogICAgICAgICAgICAgaWYoaW50ZXJtTm9kZSkKLSAgICAgICAgICAgICAgICAkJC5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRl
cm1Ob2RlLCAkMy5saW5lKTsKKyAgICAgICAgICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCBAMyk7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gMDsKICAg
ICAgICAgfSBlbHNlIHsKQEAgLTEzNjcsMTE4ICsxMzA5LDUwIEBAIHNpbmdsZV9kZWNsYXJhdGlv
bgogICAgICAgICB9CiAgICAgfQogICAgIHwgSU5WQVJJQU5UIElERU5USUZJRVIgewotICAgICAg
ICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgJDEubGluZSk7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgIFZFUlRF
WF9PTkxZKCJpbnZhcmlhbnQgZGVjbGFyYXRpb24iLCBAMSk7CisgICAgICAgIGlmIChjb250ZXh0
LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwotICAgICAgICAkJC50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFy
eWluZ091dCwgJDIubGluZSk7CisgICAgICAgICQkLnR5cGUuc2V0QmFzaWMoRWJ0SW52YXJpYW50
LCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCBAMik7CiAgICAgICAgIGlmICghJDIuc3ltYm9sKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMi5saW5lLCAidW5kZWNsYXJl
ZCBpZGVudGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICQyLnN0cmluZy0+Y19zdHIoKSk7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBk
ZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAkMi5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAkJC5pbnRlcm1B
Z2dyZWdhdGUgPSAwOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAg
ICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5
bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkJC50eXBlKSwgJDIubGluZSk7Ci0gICAgICAgICAg
ICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0
ZShzeW1ib2wsICQyLmxpbmUpOworICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqJDIuc3RyaW5nLCBUVHlwZSgkJC50
eXBlKSwgQDIpOworICAgICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCBAMik7CiAgICAgICAgIH0KICAgICB9Ci0K
LS8vCi0vLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBsYW5ndWFnZXMuCi0vLwot
Ly8gICAgfCBidWZmZXJfc3BlY2lmaWVyIHsKLS8vICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUg
PSAwOwotLy8gICAgfQogICAgIDsKIAotLy8gR3JhbW1hciBOb3RlOiAgTm8gJ2VudW0nLCBvciAn
dHlwZWRlZicuCi0KLS8vCi0vLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBsYW5n
dWFnZXMuCi0vLwotLy8ldHlwZSA8aW50ZXJtPiBidWZmZXJfZGVjbGFyYXRpb24KLS8vJXR5cGUg
PGludGVybS50eXBlPiBidWZmZXJfc3BlY2lmaWVyIGlucHV0X29yX291dHB1dCBidWZmZXJfZGVj
bGFyYXRpb25fbGlzdAotLy9idWZmZXJfc3BlY2lmaWVyCi0vLyAgICA6IGlucHV0X29yX291dHB1
dCBMRUZUX0JSQUNFIGJ1ZmZlcl9kZWNsYXJhdGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKLS8vICAg
IH0KLS8vICAgIDsKLS8vCi0vL2lucHV0X29yX291dHB1dAotLy8gICAgOiBJTlBVVCB7Ci0vLyAg
ICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soJDEubGluZSwgY29udGV4dC0+c3lt
Ym9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiaW5wdXQiKSkKLS8vICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwotLy8gICAgICAgIFVOUEFDS19PTkxZKCJpbnB1dCIsICQxLmxpbmUpOwot
Ly8gICAgICAgICQkLnF1YWxpZmllciA9IEV2cUlucHV0OwotLy8gICAgfQotLy8gICAgfCBPVVRQ
VVQgewotLy8gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgIm91dHB1dCIpKQotLy8gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0vLyAgICAgICAgUEFDS19PTkxZKCJvdXRwdXQiLCAk
MS5saW5lKTsKLS8vICAgICAgICAkJC5xdWFsaWZpZXIgPSBFdnFPdXRwdXQ7Ci0vLyAgICB9Ci0v
LyAgICA7Ci0KLS8vCi0vLyBQbGFjZSBob2xkZXIgZm9yIHRoZSBwYWNrL3VucGFjayBsYW5ndWFn
ZXMuCi0vLwotLy9idWZmZXJfZGVjbGFyYXRpb25fbGlzdAotLy8gICAgOiBidWZmZXJfZGVjbGFy
YXRpb24gewotLy8gICAgfQotLy8gICAgfCBidWZmZXJfZGVjbGFyYXRpb25fbGlzdCBidWZmZXJf
ZGVjbGFyYXRpb24gewotLy8gICAgfQotLy8gICAgOwotCi0vLwotLy8gSW5wdXQvb3V0cHV0IHNl
bWFudGljczoKLS8vICAgZmxvYXQgbXVzdCBiZSAxNiBvciAzMiBiaXRzCi0vLyAgIGZsb2F0IGFs
aWdubWVudCByZXN0cmljdGlvbnM/Ci0vLyAgIGNoZWNrIGZvciBvbmx5IG9uZSBpbnB1dCBhbmQg
b25seSBvbmUgb3V0cHV0Ci0vLyAgIHN1bSBvZiBiaXRmaWVsZHMgaGFzIHRvIGJlIG11bHRpcGxl
IG9mIDMyCi0vLwotCi0vLwotLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUgcGFjay91bnBhY2sgbGFu
Z3VhZ2VzLgotLy8KLS8vYnVmZmVyX2RlY2xhcmF0aW9uCi0vLyAgICA6IHR5cGVfc3BlY2lmaWVy
IElERU5USUZJRVIgQ09MT04gY29uc3RhbnRfZXhwcmVzc2lvbiBTRU1JQ09MT04gewotLy8gICAg
ICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soJDIubGluZSwgKiQyLnN0cmluZywg
Y29udGV4dCkpCi0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLS8vICAgICAgICAk
JC52YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJDIuc3RyaW5nLCAkMSk7Ci0vLyAgICAgICAgaWYg
KCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0KCokJC52YXJpYWJsZSkpIHsKLS8vICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgInJlZGVmaW5pdGlvbiIsICQkLnZhcmlhYmxl
LT5nZXROYW1lKCkuY19zdHIoKSk7Ci0vLyAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LS8vICAgICAgICAgICAgLy8gZG9uJ3QgaGF2ZSB0byBkZWxldGUgJCQudmFyaWFibGUsIHRoZSBw
b29sIHBvcCB3aWxsIHRha2UgY2FyZSBvZiBpdAotLy8gICAgICAgIH0KLS8vICAgIH0KLS8vICAg
IDsKLQogZnVsbHlfc3BlY2lmaWVkX3R5cGUKICAgICA6IHR5cGVfc3BlY2lmaWVyIHsKICAgICAg
ICAgJCQgPSAkMTsKIAogICAgICAgICBpZiAoJDEuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCQxLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3Qt
Y2xhc3MgYXJyYXkiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
ICAgICQxLnNldEFycmF5KGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KICAgICB8IHR5cGVfcXVh
bGlmaWVyIHR5cGVfc3BlY2lmaWVyICB7CiAgICAgICAgIGlmICgkMi5hcnJheSkgewotICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDIubGluZSwgIm5vdCBzdXBwb3J0ZWQiLCAiZmlyc3QtY2xh
c3MgYXJyYXkiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAibm90IHN1cHBvcnRl
ZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICAgICAgJDIuc2V0QXJyYXkoZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCQxLnF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgJiYKICAgICAgICAgICAgICgkMi50eXBl
ID09IEVidEJvb2wgfHwgJDIudHlwZSA9PSBFYnRJbnQpKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigkMi5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3Ry
aW5nKCQxLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJjYW5u
b3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCgk
MS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ0luIHx8ICQxLnF1YWxpZmllciA9PSBFdnFWYXJ5aW5n
T3V0KSAmJgogICAgICAgICAgICAgKCQyLnR5cGUgPT0gRWJ0Qm9vbCB8fCAkMi50eXBlID09IEVi
dEludCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxpbmUsICJjYW5ub3QgYmUg
Ym9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcihAMiwgImNhbm5vdCBiZSBib29sIG9yIGludCIsIGdldFF1YWxp
ZmllclN0cmluZygkMS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgfQogICAgICAgICAkJCA9ICQyOwpAQCAtMTQ4OCwzNCArMTM2MiwzNCBAQCBm
dWxseV9zcGVjaWZpZWRfdHlwZQogCiB0eXBlX3F1YWxpZmllcgogICAgIDogQ09OU1RfUVVBTCB7
Ci0gICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUNvbnN0LCAkMS5saW5lKTsKKyAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQ29uc3QsIEAxKTsKICAgICB9CiAgICAgfCBBVFRS
SUJVVEUgewotICAgICAgICBWRVJURVhfT05MWSgiYXR0cmlidXRlIiwgJDEubGluZSk7Ci0gICAg
ICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQorICAgICAgICBWRVJURVhfT05M
WSgiYXR0cmlidXRlIiwgQDEpOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVj
ayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAiYXR0cmlidXRlIikp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkLnNldEJhc2ljKEVi
dFZvaWQsIEV2cUF0dHJpYnV0ZSwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFZv
aWQsIEV2cUF0dHJpYnV0ZSwgQDEpOwogICAgIH0KICAgICB8IFZBUllJTkcgewotICAgICAgICBp
ZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5hdEdsb2JhbExldmVsKCksICJ2YXJ5aW5nIikpCisgICAgICAgIGlmIChjb250ZXh0LT5nbG9i
YWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ2
YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChj
b250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nT3V0LCAkMS5saW5lKTsKKyAgICAgICAgICAgICQk
LnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsIEAxKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCAkMS5saW5lKTsKKyAg
ICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdJbiwgQDEpOwogICAgIH0K
ICAgICB8IElOVkFSSUFOVCBWQVJZSU5HIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVy
cm9yQ2hlY2soJDEubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpLCAi
aW52YXJpYW50IHZhcnlpbmciKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hl
Y2soQDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2
YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGlmIChj
b250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAkMS5saW5lKTsKKyAgICAg
ICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsIEAxKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJp
YW50VmFyeWluZ0luLCAkMS5saW5lKTsKKyAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQs
IEV2cUludmFyaWFudFZhcnlpbmdJbiwgQDEpOwogICAgIH0KICAgICB8IFVOSUZPUk0gewotICAg
ICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygkMS5saW5lLCBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJ1bmlmb3JtIikpCisgICAgICAgIGlmIChjb250ZXh0
LT5nbG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCksICJ1bmlmb3JtIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cVVuaWZvcm0sICQxLmxpbmUpOworICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlmb3JtLCBAMSk7CiAgICAgfQogICAgIDsKIApAQCAtMTUy
NSw3ICsxMzk5LDcgQEAgdHlwZV9zcGVjaWZpZXIKIAogICAgICAgICBpZiAoJCQucHJlY2lzaW9u
ID09IEVicFVuZGVmaW5lZCkgewogICAgICAgICAgICAgJCQucHJlY2lzaW9uID0gY29udGV4dC0+
c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigkMS50eXBlKTsKLSAgICAgICAgICAgIGlm
IChjb250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKCQxLmxpbmUsICQkLnByZWNpc2lvbiwgJDEu
dHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5wcmVjaXNpb25FcnJvckNoZWNrKEAx
LCAkJC5wcmVjaXNpb24sICQxLnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNTU1LDExICsxNDI5LDExIEBA
IHR5cGVfc3BlY2lmaWVyX25vX3ByZWMKICAgICB8IHR5cGVfc3BlY2lmaWVyX25vbmFycmF5IExF
RlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewogICAgICAgICAk
JCA9ICQxOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCQyLmxp
bmUsICQxKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDIsICQx
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJv
ckNoZWNrKCQyLmxpbmUsICQzLCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJh
eVNpemVFcnJvckNoZWNrKEAyLCAkMywgc2l6ZSkpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICAgICAgJCQuc2V0QXJyYXkodHJ1ZSwgc2l6ZSk7CiAgICAgICAg
IH0KQEAgLTE1NjksMTE4ICsxNDQzLDEwNSBAQCB0eXBlX3NwZWNpZmllcl9ub19wcmVjCiB0eXBl
X3NwZWNpZmllcl9ub25hcnJheQogICAgIDogVk9JRF9UWVBFIHsKICAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBxdWFsLCAkMS5s
aW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgcXVhbCwgQDEpOwogICAgIH0KICAg
ICB8IEZMT0FUX1RZUEUgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAg
ICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0RmxvYXQsIHF1YWwsIEAxKTsKICAgICB9CiAgICAgfCBJTlRfVFlQRSB7CiAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwo
KSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50
LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCBAMSk7
CiAgICAgfQogICAgIHwgQk9PTF9UWVBFIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAkMS5saW5lKTsKKyAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgIH0KLS8vICAgIHwgVU5TSUdO
RUQgSU5UX1RZUEUgewotLy8gICAgICAgIFBBQ0tfVU5QQUNLX09OTFkoInVuc2lnbmVkIiwgJDEu
bGluZSk7Ci0vLyAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotLy8gICAgICAgICQk
LnNldEJhc2ljKEVidEludCwgcXVhbCwgJDEubGluZSk7Ci0vLyAgICB9CiAgICAgfCBWRUMyIHsK
ICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBx
dWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9CiAgICAgfCBWRUMz
IHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNp
YyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0
LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICB9CiAgICAgfCBW
RUM0IHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRC
YXNpYyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZs
b2F0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICB9CiAgICAg
fCBCVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQu
c2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVi
dEJvb2wsIHF1YWwsIEAxKTsKICAgICAgICAgJCQuc2V0QWdncmVnYXRlKDIpOwogICAgIH0KICAg
ICB8IEJWRUMzIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAk
JC5zZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMo
RWJ0Qm9vbCwgcXVhbCwgQDEpOwogICAgICAgICAkJC5zZXRBZ2dyZWdhdGUoMyk7CiAgICAgfQog
ICAgIHwgQlZFQzQgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAg
ICQkLnNldEJhc2ljKEVidEJvb2wsIHF1YWwsICQxLmxpbmUpOworICAgICAgICAkJC5zZXRCYXNp
YyhFYnRCb29sLCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICB9
CiAgICAgfCBJVkVDMiB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyKTsKICAgICB9
CiAgICAgfCBJVkVDMyB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICB9
CiAgICAgfCBJVkVDNCB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0SW50LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICB9
CiAgICAgfCBNQVRSSVgyIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDIiLCAkMS5saW5l
KTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9i
YWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNp
YyhFYnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0
LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgyLCB0cnVlKTsKICAgICB9CiAg
ICAgfCBNQVRSSVgzIHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDMiLCAkMS5saW5lKTsK
ICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxM
ZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhF
YnRGbG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBx
dWFsLCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSgzLCB0cnVlKTsKICAgICB9CiAgICAg
fCBNQVRSSVg0IHsKLSAgICAgICAgRlJBR19WRVJUX09OTFkoIm1hdDQiLCAkMS5saW5lKTsKICAg
ICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRG
bG9hdCwgcXVhbCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidEZsb2F0LCBxdWFs
LCBAMSk7CiAgICAgICAgICQkLnNldEFnZ3JlZ2F0ZSg0LCB0cnVlKTsKICAgICB9CiAgICAgfCBT
QU1QTEVSMkQgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEIiwgJDEubGluZSk7
CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgJCQuc2V0QmFzaWMo
RWJ0U2FtcGxlcjJELCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U2Ft
cGxlcjJELCBxdWFsLCBAMSk7CiAgICAgfQogICAgIHwgU0FNUExFUkNVQkUgewotICAgICAgICBG
UkFHX1ZFUlRfT05MWSgic2FtcGxlckN1YmUiLCAkMS5saW5lKTsKICAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVh
bCwgJDEubGluZSk7CisgICAgICAgICQkLnNldEJhc2ljKEVidFNhbXBsZXJDdWJlLCBxdWFsLCBA
MSk7CiAgICAgfQogICAgIHwgU0FNUExFUl9FWFRFUk5BTF9PRVMgewogICAgICAgICBpZiAoIWNv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1bnN1cHBvcnRlZCB0eXBlIiwg
InNhbXBsZXJFeHRlcm5hbE9FUyIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJ1
bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXJFeHRlcm5hbE9FUyIpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1w
bGVyRXh0ZXJuYWxPRVMiLCAkMS5saW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29u
dGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9y
YXJ5OwotICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICQx
LmxpbmUpOworICAgICAgICAkJC5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWws
IEAxKTsKICAgICB9CiAgICAgfCBTQU1QTEVSMkRSRUNUIHsKICAgICAgICAgaWYgKCFjb250ZXh0
LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIikpIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBs
ZXIyRFJlY3QiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAidW5zdXBwb3J0ZWQg
dHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgIH0KLSAgICAgICAgRlJBR19WRVJUX09OTFkoInNhbXBsZXIyRFJlY3QiLCAkMS5s
aW5lKTsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRH
bG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAkJC5zZXRC
YXNpYyhFYnRTYW1wbGVyMkRSZWN0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0QmFz
aWMoRWJ0U2FtcGxlcjJEUmVjdCwgcXVhbCwgQDEpOwogICAgIH0KICAgICB8IHN0cnVjdF9zcGVj
aWZpZXIgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic3RydWN0IiwgJDEubGluZSk7CiAgICAg
ICAgICQkID0gJDE7CiAgICAgICAgICQkLnF1YWxpZmllciA9IGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKICAgICB9CkBAIC0x
NjkxLDI5ICsxNTUyLDI5IEBAIHR5cGVfc3BlY2lmaWVyX25vbmFycmF5CiAgICAgICAgIC8vCiAg
ICAgICAgIFRUeXBlJiBzdHJ1Y3R1cmUgPSBzdGF0aWNfY2FzdDxUVmFyaWFibGUqPigkMS5zeW1i
b2wpLT5nZXRUeXBlKCk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCAkMS5saW5lKTsKKyAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCBAMSk7CiAgICAgICAgICQkLnVzZXJEZWYgPSAmc3RydWN0
dXJlOwogICAgIH0KICAgICA7CiAKIHN0cnVjdF9zcGVjaWZpZXIKLSAgICA6IFNUUlVDVCBJREVO
VElGSUVSIExFRlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigk
Mi5saW5lLCAqJDIuc3RyaW5nKSkgY29udGV4dC0+cmVjb3ZlcigpOyB9IHN0cnVjdF9kZWNsYXJh
dGlvbl9saXN0IFJJR0hUX0JSQUNFIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJy
b3JDaGVjaygkMi5saW5lLCAqJDIuc3RyaW5nKSkKKyAgICA6IFNUUlVDVCBpZGVudGlmaWVyIExF
RlRfQlJBQ0UgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihAMiwgKiQyLnN0
cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgfSBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdCBSSUdI
VF9CUkFDRSB7CisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDIsICok
Mi5zdHJpbmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRU
eXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5cGUoJDUsICokMi5zdHJpbmcpOworICAgICAgICBUVHlw
ZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKG5ldyBUU3RydWN0dXJlKCQyLnN0cmluZywgJDUpKTsK
ICAgICAgICAgVFZhcmlhYmxlKiB1c2VyVHlwZURlZiA9IG5ldyBUVmFyaWFibGUoJDIuc3RyaW5n
LCAqc3RydWN0dXJlLCB0cnVlKTsKICAgICAgICAgaWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUu
aW5zZXJ0KCp1c2VyVHlwZURlZikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQyLmxp
bmUsICJyZWRlZmluaXRpb24iLCAkMi5zdHJpbmctPmNfc3RyKCksICJzdHJ1Y3QiKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAicmVkZWZpbml0aW9uIiwgJDIuc3RyaW5nLT5jX3N0
cigpLCAic3RydWN0Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IH0KLSAgICAgICAgJCQuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksICQxLmxpbmUp
OworICAgICAgICAkJC5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgQDEpOwogICAg
ICAgICAkJC51c2VyRGVmID0gc3RydWN0dXJlOwogICAgICAgICBjb250ZXh0LT5leGl0U3RydWN0
RGVjbGFyYXRpb24oKTsKICAgICB9Ci0gICAgfCBTVFJVQ1QgTEVGVF9CUkFDRSB7IGlmIChjb250
ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCQyLmxpbmUsICokMi5zdHJpbmcpKSBjb250ZXh0
LT5yZWNvdmVyKCk7IH0gc3RydWN0X2RlY2xhcmF0aW9uX2xpc3QgUklHSFRfQlJBQ0UgewotICAg
ICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCQ0LCBUU3RyaW5nKCIiKSk7Ci0gICAg
ICAgICQkLnNldEJhc2ljKEVidFN0cnVjdCwgRXZxVGVtcG9yYXJ5LCAkMS5saW5lKTsKKyAgICB8
IFNUUlVDVCBMRUZUX0JSQUNFIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24o
QDIsICokMi5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IH0gc3RydWN0X2RlY2xhcmF0aW9u
X2xpc3QgUklHSFRfQlJBQ0UgeworICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBl
KG5ldyBUU3RydWN0dXJlKE5ld1Bvb2xUU3RyaW5nKCIiKSwgJDQpKTsKKyAgICAgICAgJCQuc2V0
QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksIEAxKTsKICAgICAgICAgJCQudXNlckRlZiA9
IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CiAg
ICAgfQpAQCAtMTcyNSwxNCArMTU4NiwxNSBAQCBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdAogICAg
IH0KICAgICB8IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IHN0cnVjdF9kZWNsYXJhdGlvbiB7CiAg
ICAgICAgICQkID0gJDE7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgJDIt
PnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8
ICQkLT5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIGlmICgoKiQkKVtqXS50eXBlLT5n
ZXRGaWVsZE5hbWUoKSA9PSAoKiQyKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSkgewotICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoKiQyKVtpXS5saW5lLCAiZHVwbGljYXRlIGZp
ZWxkIG5hbWUgaW4gc3RydWN0dXJlOiIsICJzdHJ1Y3QiLCAoKiQyKVtpXS50eXBlLT5nZXRGaWVs
ZE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAkMi0+c2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQgPSAoKiQyKVtpXTsKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgJCQtPnNpemUoKTsgKytqKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCgqJCQpW2pdLT5uYW1lKCkgPT0gZmllbGQtPm5hbWUoKSkgeworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMiwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGlu
IHN0cnVjdHVyZToiLCAic3RydWN0IiwgZmllbGQtPm5hbWUoKS5jX3N0cigpKTsKICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICQkLT5wdXNoX2JhY2soKCokMilbaV0pOworICAgICAgICAg
ICAgJCQtPnB1c2hfYmFjayhmaWVsZCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgOwpAQCAtMTc0
MSwxNCArMTYwMywxNCBAQCBzdHJ1Y3RfZGVjbGFyYXRpb24KICAgICA6IHR5cGVfc3BlY2lmaWVy
IHN0cnVjdF9kZWNsYXJhdG9yX2xpc3QgU0VNSUNPTE9OIHsKICAgICAgICAgJCQgPSAkMjsKIAot
ICAgICAgICBpZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2soJDEubGluZSwgKCokMilbMF0udHlw
ZS0+Z2V0RmllbGROYW1lKCksICQxKSkgeworICAgICAgICBpZiAoY29udGV4dC0+dm9pZEVycm9y
Q2hlY2soQDEsICgqJDIpWzBdLT5uYW1lKCksICQxKSkgewogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgJCQtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gQ2Fy
ZWZ1bCBub3QgdG8gcmVwbGFjZSBhbHJlYWR5IGtub3duIGFzcGVjdHMgb2YgdHlwZSwgbGlrZSBh
cnJheS1uZXNzCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKiQk
KVtpXS50eXBlOworICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKiQkKVtpXS0+dHlwZSgpOwog
ICAgICAgICAgICAgdHlwZS0+c2V0QmFzaWNUeXBlKCQxLnR5cGUpOwogICAgICAgICAgICAgdHlw
ZS0+c2V0Tm9taW5hbFNpemUoJDEuc2l6ZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXRNYXRyaXgo
JDEubWF0cml4KTsKQEAgLTE3NTYsMjYgKzE2MTgsMjMgQEAgc3RydWN0X2RlY2xhcmF0aW9uCiAK
ICAgICAgICAgICAgIC8vIGRvbid0IGFsbG93IGFycmF5cyBvZiBhcnJheXMKICAgICAgICAgICAg
IGlmICh0eXBlLT5pc0FycmF5KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJy
YXlUeXBlRXJyb3JDaGVjaygkMS5saW5lLCAkMSkpCisgICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5VHlwZUVycm9yQ2hlY2soQDEsICQxKSkKICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCQxLmFycmF5
KQogICAgICAgICAgICAgICAgIHR5cGUtPnNldEFycmF5U2l6ZSgkMS5hcnJheVNpemUpOwotICAg
ICAgICAgICAgaWYgKCQxLnVzZXJEZWYpIHsKKyAgICAgICAgICAgIGlmICgkMS51c2VyRGVmKQog
ICAgICAgICAgICAgICAgIHR5cGUtPnNldFN0cnVjdCgkMS51c2VyRGVmLT5nZXRTdHJ1Y3QoKSk7
Ci0gICAgICAgICAgICAgICAgdHlwZS0+c2V0VHlwZU5hbWUoJDEudXNlckRlZi0+Z2V0VHlwZU5h
bWUoKSk7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RO
ZXN0aW5nRXJyb3JDaGVjaygkMS5saW5lLCAqdHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250
ZXh0LT5zdHJ1Y3ROZXN0aW5nRXJyb3JDaGVjayhAMSwgKigqJCQpW2ldKSkKICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CiAgICAgOwogCiBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0CiAgICAgOiBzdHJ1Y3RfZGVjbGFyYXRv
ciB7Ci0gICAgICAgICQkID0gTmV3UG9vbFRUeXBlTGlzdCgpOworICAgICAgICAkJCA9IE5ld1Bv
b2xURmllbGRMaXN0KCk7CiAgICAgICAgICQkLT5wdXNoX2JhY2soJDEpOwogICAgIH0KICAgICB8
IHN0cnVjdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgc3RydWN0X2RlY2xhcmF0b3IgewpAQCAtMTc4
NCwyNiArMTY0MywyNCBAQCBzdHJ1Y3RfZGVjbGFyYXRvcl9saXN0CiAgICAgOwogCiBzdHJ1Y3Rf
ZGVjbGFyYXRvcgotICAgIDogSURFTlRJRklFUiB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNl
cnZlZEVycm9yQ2hlY2soJDEubGluZSwgKiQxLnN0cmluZykpCisgICAgOiBpZGVudGlmaWVyIHsK
KyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMSwgKiQxLnN0cmluZykp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgJCQudHlwZSA9IG5l
dyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICAkJC5saW5lID0gJDEubGlu
ZTsKLSAgICAgICAgJCQudHlwZS0+c2V0RmllbGROYW1lKCokMS5zdHJpbmcpOworICAgICAgICBU
VHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAgICAgICAk
JCA9IG5ldyBURmllbGQodHlwZSwgJDEuc3RyaW5nKTsKICAgICB9Ci0gICAgfCBJREVOVElGSUVS
IExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewotICAgICAg
ICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCQxLmxpbmUsICokMS5zdHJpbmcpKQor
ICAgIHwgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9C
UkFDS0VUIHsKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMSwgKiQx
LnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgJCQu
dHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICAkJC5saW5l
ID0gJDEubGluZTsKLSAgICAgICAgJCQudHlwZS0+c2V0RmllbGROYW1lKCokMS5zdHJpbmcpOwot
Ci0gICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JD
aGVjaygkMi5saW5lLCAkMywgc2l6ZSkpCisgICAgICAgIFRUeXBlKiB0eXBlID0gbmV3IFRUeXBl
KEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CisgICAgICAgIGludCBzaXplID0gMDsKKyAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soQDMsICQzLCBzaXplKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgJCQudHlwZS0+c2V0QXJyYXlTaXplKHNp
emUpOworICAgICAgICB0eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7CisKKyAgICAgICAgJCQgPSBu
ZXcgVEZpZWxkKHR5cGUsICQxLnN0cmluZyk7CiAgICAgfQogICAgIDsKIApAQCAtMTgzNSw3ICsx
NjkyLDcgQEAgY29tcG91bmRfc3RhdGVtZW50CiAgICAgfCBMRUZUX0JSQUNFIHsgY29udGV4dC0+
c3ltYm9sVGFibGUucHVzaCgpOyB9IHN0YXRlbWVudF9saXN0IHsgY29udGV4dC0+c3ltYm9sVGFi
bGUucG9wKCk7IH0gUklHSFRfQlJBQ0UgewogICAgICAgICBpZiAoJDMgIT0gMCkgewogICAgICAg
ICAgICAgJDMtPnNldE9wKEVPcFNlcXVlbmNlKTsKLSAgICAgICAgICAgICQzLT5zZXRFbmRMaW5l
KCQ1LmxpbmUpOworICAgICAgICAgICAgJDMtPnNldExpbmUoQCQpOwogICAgICAgICB9CiAgICAg
ICAgICQkID0gJDM7CiAgICAgfQpAQCAtMTg1OSw3ICsxNzE2LDcgQEAgY29tcG91bmRfc3RhdGVt
ZW50X25vX25ld19zY29wZQogICAgIHwgTEVGVF9CUkFDRSBzdGF0ZW1lbnRfbGlzdCBSSUdIVF9C
UkFDRSB7CiAgICAgICAgIGlmICgkMikgewogICAgICAgICAgICAgJDItPnNldE9wKEVPcFNlcXVl
bmNlKTsKLSAgICAgICAgICAgICQyLT5zZXRFbmRMaW5lKCQzLmxpbmUpOworICAgICAgICAgICAg
JDItPnNldExpbmUoQCQpOwogICAgICAgICB9CiAgICAgICAgICQkID0gJDI7CiAgICAgfQpAQCAt
MTg2NywxMCArMTcyNCwxMCBAQCBjb21wb3VuZF9zdGF0ZW1lbnRfbm9fbmV3X3Njb3BlCiAKIHN0
YXRlbWVudF9saXN0CiAgICAgOiBzdGF0ZW1lbnQgewotICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKCQxLCAwKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMSwgQCQpOwogICAgIH0KICAgICB8IHN0YXRlbWVu
dF9saXN0IHN0YXRlbWVudCB7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdy
b3dBZ2dyZWdhdGUoJDEsICQyLCAwKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZSgkMSwgJDIsIEAkKTsKICAgICB9CiAgICAgOwogCkBAIC0xODgxLDkg
KzE3MzgsOSBAQCBleHByZXNzaW9uX3N0YXRlbWVudAogCiBzZWxlY3Rpb25fc3RhdGVtZW50CiAg
ICAgOiBJRiBMRUZUX1BBUkVOIGV4cHJlc3Npb24gUklHSFRfUEFSRU4gc2VsZWN0aW9uX3Jlc3Rf
c3RhdGVtZW50IHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCQxLmxpbmUs
ICQzKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKEAxLCAkMykpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFNlbGVjdGlvbigkMywgJDUsICQxLmxpbmUpOworICAgICAgICAkJCA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRTZWxlY3Rpb24oJDMsICQ1LCBAMSk7CiAgICAgfQogICAgIDsK
IApAQCAtMTkwNywxNCArMTc2NCwxNCBAQCBjb25kaXRpb24KICAgICAgICAgaWYgKGNvbnRleHQt
PmJvb2xFcnJvckNoZWNrKCQxLT5nZXRMaW5lKCksICQxKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICB9Ci0gICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBJREVOVElGSUVS
IEVRVUFMIGluaXRpYWxpemVyIHsKKyAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZp
ZXIgRVFVQUwgaW5pdGlhbGl6ZXIgewogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9kZTsK
LSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soJDIubGluZSwg
JDEpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjayhAMiwg
JDEpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAoY29udGV4
dC0+Ym9vbEVycm9yQ2hlY2soJDIubGluZSwgJDEpKQorICAgICAgICBpZiAoY29udGV4dC0+Ym9v
bEVycm9yQ2hlY2soQDIsICQxKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAot
ICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcigkMi5saW5lLCAqJDIuc3Ry
aW5nLCAkMSwgJDQsIGludGVybU5vZGUpKQorICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJ
bml0aWFsaXplcihAMiwgKiQyLnN0cmluZywgJDEsICQ0LCBpbnRlcm1Ob2RlKSkKICAgICAgICAg
ICAgICQkID0gJDQ7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwpAQCAtMTkyNiwxOSArMTc4MywxOSBAQCBjb25kaXRpb24KIGl0ZXJhdGlvbl9zdGF0ZW1l
bnQKICAgICA6IFdISUxFIExFRlRfUEFSRU4geyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7
ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgfSBjb25kaXRpb24gUklHSFRfUEFSRU4gc3Rh
dGVtZW50X25vX25ld19zY29wZSB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgp
OwotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVMb29wV2hpbGUs
IDAsICQ0LCAwLCAkNiwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZExvb3AoRUxvb3BXaGlsZSwgMCwgJDQsIDAsICQ2LCBAMSk7CiAgICAgICAgIC0tY29u
dGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICB9CiAgICAgfCBETyB7ICsrY29udGV4dC0+bG9v
cE5lc3RpbmdMZXZlbDsgfSBzdGF0ZW1lbnRfd2l0aF9zY29wZSBXSElMRSBMRUZUX1BBUkVOIGV4
cHJlc3Npb24gUklHSFRfUEFSRU4gU0VNSUNPTE9OIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmJv
b2xFcnJvckNoZWNrKCQ4LmxpbmUsICQ2KSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJv
ckNoZWNrKEA4LCAkNikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICQ2
LCAwLCAkMywgJDQubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZExvb3AoRUxvb3BEb1doaWxlLCAwLCAkNiwgMCwgJDMsIEA0KTsKICAgICAgICAgLS1jb250ZXh0
LT5sb29wTmVzdGluZ0xldmVsOwogICAgIH0KICAgICB8IEZPUiBMRUZUX1BBUkVOIHsgY29udGV4
dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IH0gZm9y
X2luaXRfc3RhdGVtZW50IGZvcl9yZXN0X3N0YXRlbWVudCBSSUdIVF9QQVJFTiBzdGF0ZW1lbnRf
bm9fbmV3X3Njb3BlIHsKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7Ci0gICAg
ICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BGb3IsICQ0LCByZWlu
dGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+KCQ1Lm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxU
SW50ZXJtVHlwZWQqPigkNS5ub2RlMiksICQ3LCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcEZvciwgJDQsIHJlaW50ZXJwcmV0X2Nhc3Q8
VEludGVybVR5cGVkKj4oJDUubm9kZTEpLCByZWludGVycHJldF9jYXN0PFRJbnRlcm1UeXBlZCo+
KCQ1Lm5vZGUyKSwgJDcsIEAxKTsKICAgICAgICAgLS1jb250ZXh0LT5sb29wTmVzdGluZ0xldmVs
OwogICAgIH0KICAgICA7CkBAIC0xOTc1LDM5ICsxODMyLDM5IEBAIGZvcl9yZXN0X3N0YXRlbWVu
dAoganVtcF9zdGF0ZW1lbnQKICAgICA6IENPTlRJTlVFIFNFTUlDT0xPTiB7CiAgICAgICAgIGlm
IChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCQxLmxpbmUsICJjb250aW51ZSBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3Bz
IiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJjb250aW51ZSBzdGF0ZW1l
bnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEJyYW5jaChFT3BDb250aW51ZSwgJDEubGluZSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BDb250aW51ZSwgQDEpOwogICAgIH0KICAgICB8IEJSRUFL
IFNFTUlDT0xPTiB7CiAgICAgICAgIGlmIChjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsIDw9IDAp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJicmVhayBzdGF0ZW1lbnQg
b25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDEsICJicmVhayBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgICQkID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgJDEubGluZSk7CisgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgQDEpOwogICAgIH0K
ICAgICB8IFJFVFVSTiBTRU1JQ09MT04gewotICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJldHVybiwgQDEpOwogICAgICAgICBpZiAoY29u
dGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11
c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cihAMSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
fCBSRVRVUk4gZXhwcmVzc2lvbiBTRU1JQ09MT04gewotICAgICAgICAkJCA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAkMiwgJDEubGluZSk7CisgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICQyLCBAMSk7CiAg
ICAgICAgIGNvbnRleHQtPmZ1bmN0aW9uUmV0dXJuc1ZhbHVlID0gdHJ1ZTsKICAgICAgICAgaWYg
KGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpID09IEVidFZvaWQp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICJ2b2lkIGZ1bmN0aW9uIGNh
bm5vdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKEAxLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoKihj
b250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlKSAhPSAkMi0+Z2V0VHlwZSgpKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBtYXRj
aGluZyB0eXBlOiIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAi
ZnVuY3Rpb24gcmV0dXJuIGlzIG5vdCBtYXRjaGluZyB0eXBlOiIsICJyZXR1cm4iKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgIH0KICAgICB8IERJU0NB
UkQgU0VNSUNPTE9OIHsKLSAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgJDEubGluZSk7Ci0g
ICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BLaWxsLCAkMS5s
aW5lKTsKKyAgICAgICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgQDEpOworICAgICAgICAkJCA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wS2lsbCwgQDEpOwogICAgIH0KICAgICA7
CiAKQEAgLTIwMTksNyArMTg3Niw3IEBAIHRyYW5zbGF0aW9uX3VuaXQKICAgICAgICAgY29udGV4
dC0+dHJlZVJvb3QgPSAkJDsKICAgICB9CiAgICAgfCB0cmFuc2xhdGlvbl91bml0IGV4dGVybmFs
X2RlY2xhcmF0aW9uIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0Fn
Z3JlZ2F0ZSgkMSwgJDIsIDApOworICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5n
cm93QWdncmVnYXRlKCQxLCAkMiwgQCQpOwogICAgICAgICBjb250ZXh0LT50cmVlUm9vdCA9ICQk
OwogICAgIH0KICAgICA7CkBAIC0yMDQxLDcgKzE4OTgsNyBAQCBmdW5jdGlvbl9kZWZpbml0aW9u
CiAgICAgICAgIAogICAgICAgICBpZiAoYnVpbHRJbikKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoJDEubGluZSwgImJ1aWx0LWluIGZ1bmN0aW9ucyBjYW5ub3QgYmUgcmVk
ZWZpbmVkIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKEAxLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBm
dW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjA1NSw3ICsxOTEyLDcgQEAgZnVuY3Rpb25f
ZGVmaW5pdGlvbgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIFRoZW4gdGhpcyBmdW5j
dGlvbiBhbHJlYWR5IGhhcyBhIGJvZHkuCiAgICAgICAgICAgICAvLwotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1bmN0
aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwg
ImZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIo
KSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAgICAgICAg
cHJldkRlYy0+c2V0RGVmaW5lZCgpOwpAQCAtMjA2NSwxMSArMTkyMiwxMSBAQCBmdW5jdGlvbl9k
ZWZpbml0aW9uCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0TmFtZSgpID09
ICJtYWluIikgewogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCkgPiAw
KSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIGNh
bm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkp
OworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiZnVuY3Rpb24gY2Fubm90IHRh
a2UgYW55IHBhcmFtZXRlcihzKSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAg
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9p
ZCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCQxLmxpbmUsICIiLCBmdW5jdGlv
bi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCksICJtYWluIGZ1bmN0aW9uIGNhbm5v
dCByZXR1cm4gYSB2YWx1ZSIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAi
IiwgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpLCAibWFpbiBmdW5j
dGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIwOTcsNyArMTk1NCw3IEBA
IGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHBhcmFt
ZXRlcnMgd2l0aCBuYW1lIGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgICAgICAgICAgLy8K
ICAgICAgICAgICAgICAgICBpZiAoISBjb250ZXh0LT5zeW1ib2xUYWJsZS5pbnNlcnQoKnZhcmlh
YmxlKSkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAicmVk
ZWZpbml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFt
ZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsKICAgICAgICAgICAgICAgICB9CkBA
IC0yMTA4LDE0ICsxOTY1LDE1IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgICAgICAg
ICBwYXJhbU5vZGVzID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhcmlhYmxlLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBl
KCksICQxLmxpbmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkMS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBAMSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBhcmFt
Tm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgJDEubGlu
ZSksICQxLmxpbmUpOworICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgQDEpLCBAMSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJh
dG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsICQxLmxpbmUpOworICAgICAgICBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2RlcywgRU9wUGFyYW1l
dGVycywgQDEpOwogICAgICAgICAkMS5pbnRlcm1BZ2dyZWdhdGUgPSBwYXJhbU5vZGVzOwogICAg
ICAgICBjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsID0gMDsKICAgICB9CkBAIC0yMTIzLDEyICsx
OTgxLDEyIEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgLy8/PyBDaGVjayB0aGF0IGFs
bCBwYXRocyByZXR1cm4gYSB2YWx1ZSBpZiByZXR1cm4gdHlwZSAhPSB2b2lkID8KICAgICAgICAg
Ly8gICBNYXkgYmUgYmVzdCBkb25lIGFzIHBvc3QgcHJvY2VzcyBwaGFzZSBvbiBpbnRlcm1lZGlh
dGUgY29kZQogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZS0+Z2V0QmFz
aWNUeXBlKCkgIT0gRWJ0Vm9pZCAmJiAhIGNvbnRleHQtPmZ1bmN0aW9uUmV0dXJuc1ZhbHVlKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigkMS5saW5lLCAiZnVuY3Rpb24gZG9lcyBub3Qg
cmV0dXJuIGEgdmFsdWU6IiwgIiIsICQxLmZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBh
IHZhbHVlOiIsICIiLCAkMS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICAkJCA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLmludGVybUFnZ3JlZ2F0ZSwg
JDMsIDApOwotICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0
b3IoJCQsIEVPcEZ1bmN0aW9uLCAkMS5saW5lKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1BZ2dyZWdhdGUsICQzLCBAJCk7CisgICAg
ICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcigkJCwgRU9wRnVu
Y3Rpb24sIEAxKTsKICAgICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldE5hbWUoJDEuZnVu
Y3Rpb24tPmdldE1hbmdsZWROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICQkLT5nZXRBc0FnZ3Jl
Z2F0ZSgpLT5zZXRUeXBlKCQxLmZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkpOwogCkBAIC0yMTM3
LDE1ICsxOTk1LDE3IEBAIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICAgICAgJCQtPmdldEFzQWdn
cmVnYXRlKCktPnNldE9wdGltaXplKGNvbnRleHQtPnByYWdtYSgpLm9wdGltaXplKTsKICAgICAg
ICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnByYWdtYSgpLmRlYnVn
KTsKIAotICAgICAgICBpZiAoJDMgJiYgJDMtPmdldEFzQWdncmVnYXRlKCkpCi0gICAgICAgICAg
ICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0RW5kTGluZSgkMy0+Z2V0QXNBZ2dyZWdhdGUoKS0+
Z2V0RW5kTGluZSgpKTsKLQogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKICAg
ICB9CiAgICAgOwogCiAlJQogCit2b2lkIHl5ZXJyb3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiByZWFzb24pIHsKKyAgICBjb250ZXh0LT5lcnJv
cigqeXlsbG9jLCByZWFzb24sICIiKTsKKyAgICBjb250ZXh0LT5yZWNvdmVyKCk7Cit9CisKIGlu
dCBnbHNsYW5nX3BhcnNlKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICByZXR1cm4geXlw
YXJzZShjb250ZXh0KTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9nbHNsYW5nX2xleC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAkocmV2aXNpb24gMTUyOTc5KQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzg0LDggKzM4NCw4IEBAIHN0YXRpYyB2b2lkIHl5X2ZhdGFsX2Vycm9yICh5
eWNvbnN0IGNoYXIKIAkqeXlfY3AgPSAnXDAnOyBcCiAJeXlnLT55eV9jX2J1Zl9wID0geXlfY3A7
CiAKLSNkZWZpbmUgWVlfTlVNX1JVTEVTIDE1NQotI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSIDE1
NgorI2RlZmluZSBZWV9OVU1fUlVMRVMgMTQ3CisjZGVmaW5lIFlZX0VORF9PRl9CVUZGRVIgMTQ4
CiAvKiBUaGlzIHN0cnVjdCBpcyBub3QgdXNlZCBpbiB0aGlzIHNjYW5uZXIsCiAgICBidXQgaXRz
IHByZXNlbmNlIGlzIG5lY2Vzc2FyeS4gKi8KIHN0cnVjdCB5eV90cmFuc19pbmZvCkBAIC0zOTMs
NTggKzM5Myw1NyBAQCBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwogCWZsZXhfaW50MzJfdCB5eV92ZXJp
Znk7CiAJZmxleF9pbnQzMl90IHl5X254dDsKIAl9Owotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQx
Nl90IHl5X2FjY2VwdFs0NTldID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2Nl
cHRbNDQzXSA9CiAgICAgeyAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAs
ICAgIDAsICAxNTYsICAxNTQsICAxNTMsICAxNTMsCi0gICAgICAxMzgsICAxNDQsICAxNDksICAx
MzMsICAxMzQsICAxNDIsICAxNDEsICAxMzAsICAxMzksICAxMzcsCi0gICAgICAxNDMsICAxMDIs
ICAxMDIsICAxMzEsICAxMjcsICAxNDUsICAxMzIsICAxNDYsICAxNTAsICAgOTgsCi0gICAgICAx
MzUsICAxMzYsICAxNDgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgs
Ci0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAxMjgsICAxNDcsICAxMjksICAxNDAs
ICAgIDMsICAgIDQsICAgIDMsCi0gICAgICAxNTIsICAxNTUsICAxNTEsICAxMjQsICAxMTAsICAx
MjksICAxMTgsICAxMTMsICAxMDgsICAxMTYsCi0gICAgICAxMDYsICAxMTcsICAxMDcsICAxMDUs
ICAgIDIsICAgIDEsICAxMDksICAxMDQsICAxMDAsICAxMDEsCi0gICAgICAgIDAsICAgIDAsICAx
MDIsICAxMzYsICAxMjgsICAxMzUsICAxMjUsICAxMjEsICAxMjMsICAxMjIsCi0gICAgICAxMjYs
ICAgOTgsICAxMTQsICAxMjAsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0K
LSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICAxNywgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICAyMCwgICAyMiwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgIDExNSwgIDExOSwgICAgNSwKLSAgICAgIDE1MSwg
ICAgMCwgICAgMSwgIDEwNCwgICAgMCwgICAgMCwgIDEwMywgICA5OSwgIDExMSwgIDExMiwKLSAg
ICAgICA1MCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICAxOCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICAyNiwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICAyMywgICA5OCwgICA5OCwKLQotICAgICAgIDk4LCAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAg
ICAgIDk4LCAgICAwLCAgMTA1LCAgICAwLCAgMTA0LCAgIDk4LCAgIDI4LCAgIDk4LCAgIDk4LCAg
IDk1LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDIx
LCAgIDUzLCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDY5LCAgIDk4LCAgIDk4LCAgIDU4LCAg
IDczLCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4
LCAgIDcwLCAgICA5LCAgIDMzLCAgIDM0LCAgIDM1LAotICAgICAgIDk4LCAgIDk4LCAgIDk4LCAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LAotICAgICAgIDk4LCAgIDk4
LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDU2LCAgIDI5LCAgIDk4LCAgIDk4LAotICAgICAg
IDk4LCAgIDk4LCAgIDk4LCAgIDk4LCAgIDM2LCAgIDM3LCAgIDM4LCAgIDI3LCAgIDk4LCAgIDk4
LAotICAgICAgIDk4LCAgIDE1LCAgIDQyLCAgIDQzLCAgIDQ0LCAgIDUxLCAgIDEyLCAgIDk4LCAg
IDk4LCAgIDk4LAotCi0gICAgICAgOTgsICAgODIsICAgODMsICAgODQsICAgOTgsICAgMzAsICAg
NzQsICAgMjUsICAgODUsICAgODYsCi0gICAgICAgODcsICAgIDcsICAgNzksICAgODAsICAgODEs
ICAgOTgsICAgMjQsICAgNzcsICAgOTgsICAgOTgsCi0gICAgICAgMzksICAgNDAsICAgNDEsICAg
OTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAgOTgsICAgOTgs
ICAgNzEsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsCi0gICAgICAg
OTgsICAgNTIsICAgOTgsICAgOTcsICAgOTgsICAgOTgsICAgMTksICAgOTgsICAgOTgsICAgOTgs
Ci0gICAgICAgOTgsICAgNzIsICAgNjYsICAgNjEsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgNzgsCi0gICAgICAgNTcsICAgOTgsICAgNjQsICAgMzIsICAgOTgsICAgOTQsICAgNjUs
ICAgNDksICAgNzYsICAgNTksCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAg
OTgsICAgOTgsICAgOTgsICAgNjAsICAgMzEsCi0gICAgICAgOTgsICAgOTgsICAgOTgsICAgIDgs
ICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgOTgsICAgNTQsCi0gICAgICAgMTMsICAgOTgsICAg
MTQsICAgOTgsICAgOTgsICAgMTYsICAgNjcsICAgOTgsICAgOTgsICAgOTgsCi0KLSAgICAgICA2
MiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA1NSwgICA3NSwgICA2MywK
LSAgICAgICAxMSwgICA2OCwgICAgNiwgICA5NiwgICAxMCwgICA4OCwgICA0NSwgICA4OSwgICA5
OCwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5OCwKLSAgICAgICA0NiwgICA5OCwgICA5OCwgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA0OCwgICA5OCwKLSAgICAgICA5MiwgICA5OCwgICA5OCwgICA5OCwg
ICA5OCwgICA5OCwgICA5MCwgICA5OCwgICA5MSwgICA5OCwKLSAgICAgICA5OCwgICA5OCwgICA5
OCwgICA5OCwgICA5OCwgICA0NywgICA5MywgICAgMAorICAgICAgICAwLCAgICAwLCAgMTQ4LCAg
MTQ2LCAgMTQ1LCAgMTQ1LCAgMTMyLCAgMTM4LCAgMTQzLCAgMTI3LAorICAgICAgMTI4LCAgMTM2
LCAgMTM1LCAgMTI0LCAgMTMzLCAgMTMxLCAgMTM3LCAgIDk2LCAgIDk2LCAgMTI1LAorICAgICAg
MTIxLCAgMTM5LCAgMTI2LCAgMTQwLCAgMTQ0LCAgIDkzLCAgMTI5LCAgMTMwLCAgMTQyLCAgIDkz
LAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgMTIyLAorICAgICAgMTQxLCAgMTIzLCAgMTM0LCAgMTE4LCAgMTA0LCAg
MTIzLCAgMTEyLCAgMTA3LCAgMTAyLCAgMTEwLAorICAgICAgMTAwLCAgMTExLCAgMTAxLCAgIDk5
LCAgMTAzLCAgIDk4LCAgIDk1LCAgIDk2LCAgICAwLCAgICAwLAorICAgICAgMTMwLCAgMTIyLCAg
MTI5LCAgMTE5LCAgMTE1LCAgMTE3LCAgMTE2LCAgMTIwLCAgIDkzLCAgMTA4LAorICAgICAgMTE0
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAor
ICAgICAgIDkzLCAgIDEyLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLAorCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgMTUsICAgMTcs
ICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAxMDksICAxMTMsICAgIDAsICAgOTgsICAgIDAsICAgIDAsCisgICAgICAgOTcs
ICAgOTQsICAxMDUsICAxMDYsICAgNDUsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisg
ICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgMTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgMjEsICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgMTgsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisKKyAgICAgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICAgMCwgICA5OSwgICAgMCwgICA5OCwgICA5MywKKyAg
ICAgICAyMywgICA5MywgICA5MywgICA5MCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA5MywKKyAgICAgICA5MywgICAxNiwgICA0OCwgICA5MywgICA5MywgICA5MywgICA2NCwgICA5
MywgICA5MywgICA1MywKKyAgICAgICA2OCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA2NSwKKyAgICAgICAgNCwgICAyOCwgICAyOSwgICAzMCwgICA5
MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA5MywgICA5MywgICA5Mywg
ICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywKKyAgICAgICA1MSwgICAy
NCwgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICA5MywgICAzMSwgICAzMiwKKyAgICAg
ICAzMywgICAyMiwgICA5MywgICA5MywgICA5MywgICAxMCwgICAzNywgICAzOCwgICAzOSwgICA0
NiwKKyAgICAgICAgNywgICA5MywgICA5MywgICA5MywgICA5MywgICA3NywgICA3OCwgICA3OSwg
ICA5MywgICAyNSwKKyAgICAgICA2OSwgICAyMCwgICA4MCwgICA4MSwgICA4MiwgICAgMiwgICA3
NCwgICA3NSwgICA3NiwgICA5MywKKworICAgICAgIDE5LCAgIDcyLCAgIDkzLCAgIDkzLCAgIDM0
LCAgIDM1LCAgIDM2LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDkzLCAgIDY2LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDQ3LCAgIDkzLCAgIDkyLCAgIDkzLCAgIDkzLAorICAgICAg
IDE0LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDY3LCAgIDYxLCAgIDU2LCAgIDkzLCAgIDkz
LAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDczLCAgIDUyLCAgIDkzLCAgIDU5LCAgIDI3LCAg
IDkzLCAgIDg5LAorICAgICAgIDYwLCAgIDQ0LCAgIDcxLCAgIDU0LCAgIDkzLCAgIDkzLCAgIDkz
LCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDU1LCAgIDI2LCAgIDkzLCAg
IDkzLCAgIDkzLCAgICAzLCAgIDkzLCAgIDkzLAorICAgICAgIDkzLCAgIDkzLCAgIDkzLCAgIDQ5
LCAgICA4LCAgIDkzLCAgICA5LCAgIDkzLCAgIDkzLCAgIDExLAorICAgICAgIDYyLCAgIDkzLCAg
IDkzLCAgIDkzLCAgIDU3LCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLCAgIDkzLAorICAgICAgIDkz
LCAgIDUwLCAgIDcwLCAgIDU4LCAgICA2LCAgIDYzLCAgICAxLCAgIDkxLCAgICA1LCAgIDgzLAor
CisgICAgICAgNDAsICAgODQsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAg
OTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNDEsICAgOTMsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgOTMsICAgOTMsICAgNDMsICAgOTMsICAgODcsICAg
OTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsCisgICAgICAgODUsICAgOTMsICAgODYsICAgOTMs
ICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgOTMsICAgNDIsCisgICAgICAgODgsICAgIDAKICAg
ICB9IDsKIAogc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQpAQCAtNDgx
LDIxMiArNDgwLDE5OCBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfZWNbMjU2XSA9
CiAKIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9tZXRhWzY4XSA9CiAgICAgeyAgIDAs
Ci0gICAgICAgIDEsICAgIDEsICAgIDIsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsCi0gICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMsICAgIDMsICAgIDMs
ICAgIDMsICAgIDMsICAgIDMsCi0gICAgICAgIDMsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDMsICAgIDMsICAgIDMsCi0gICAgICAgIDMsICAgIDQsICAgIDQsICAgIDQs
ICAgIDQsICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAgIDMsCi0gICAgICAgIDMsICAgIDMsICAg
IDMsICAgIDMsICAgIDMsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsCi0gICAgICAgIDQs
ICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsCi0g
ICAgICAgIDQsICAgIDQsICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAgIDEKKyAgICAgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKKyAg
ICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAgMiwg
ICAgMiwKKyAgICAgICAgMiwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MiwgICAgMiwgICAgMiwKKyAgICAgICAgMiwgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywg
ICAgMSwgICAgMSwgICAgMSwgICAgMiwKKyAgICAgICAgMiwgICAgMiwgICAgMiwgICAgMiwgICAg
MiwgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAgMywgICAgMywg
ICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAg
MywgICAgMywgICAgMSwgICAgMSwgICAgMSwgICAgMQogICAgIH0gOwogCi1zdGF0aWMgeXljb25z
dCBmbGV4X2ludDE2X3QgeXlfYmFzZVs0NjRdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZf
dCB5eV9iYXNlWzQ0NV0gPQogICAgIHsgICAwLAotICAgICAgICAwLCAgICAwLCAgIDY1LCAgIDY2
LCAgIDc1LCAgICAwLCAgNjgwLCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjU0LCAgIDQ1LCAg
MTM3LCAgNjgxLCAgNjgxLCAgNjUzLCAgMTM0LCAgNjgxLCAgMTMzLCAgMTMxLAotICAgICAgMTQ2
LCAgMTU5LCAgMTY4LCAgNjUxLCAgNjgxLCAgMTg2LCAgNjUxLCAgIDQ3LCAgNjgxLCAgICAwLAot
ICAgICAgNjgxLCAgNjgxLCAgMTI4LCAgMTAwLCAgMTEwLCAgMTUyLCAgMTU2LCAgMTQ2LCAgMTY2
LCAgNjIyLAotICAgICAgMTczLCAgMTA5LCAgNjIxLCAgMTI2LCAgMTc3LCAgNjE1LCAgMTc4LCAg
NjI4LCAgMTg3LCAgMTg0LAotICAgICAgMTQxLCAgMTk3LCAgNjI0LCAgNjgxLCAgMTU3LCAgNjgx
LCAgNjgxLCAgNjgxLCAgNjgxLCAgNjU2LAotICAgICAgNjgxLCAgNjgxLCAgICAwLCAgNjgxLCAg
NjgxLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgxLCAgNjgxLAotICAgICAgNjgxLCAgNjgxLCAgNjgx
LCAgMjM2LCAgNjgxLCAgICAwLCAgNjgxLCAgMjQzLCAgMjczLCAgMjgyLAotICAgICAgMzA0LCAg
ICAwLCAgMzE0LCAgNjgxLCAgNjgxLCAgNjgxLCAgNjQ0LCAgNjgxLCAgNjgxLCAgNjgxLAotICAg
ICAgNjQzLCAgICAwLCAgNjgxLCAgNjgxLCAgNjE2LCAgNjA5LCAgNjEyLCAgNjIwLCAgNjE5LCAg
NjA2LAotCi0gICAgICA2MjEsICA2MDgsICA2MTQsICA2MDIsICA1OTksICA2MTIsICA1OTksICA1
OTYsICA1OTYsICA2MDIsCi0gICAgICA1OTAsICAxODksICA1OTUsICA2MDUsICA1OTEsICA1OTcs
ICA2MDAsICA2MDEsICAgIDAsICAyMTYsCi0gICAgICA2MDAsICAxODgsICA1ODYsICA1OTksICA1
OTAsICA1OTIsICA1ODIsICA1OTYsICA1OTMsICA1OTUsCi0gICAgICA1NzgsICA1ODMsICA1ODAs
ICA1NjksICAxODMsICA1NzcsICA1ODIsICA1NzgsICA1ODAsICA1NjksCi0gICAgICA1NzIsICAy
MjAsICA1NzcsICA1NjksICA1ODEsICAxNzYsICA1NzQsICA2ODEsICA2ODEsICA2ODEsCi0gICAg
ICAgIDAsICAzMzEsICAgIDAsICAzNDQsICAzNjEsICAyOTAsICAzNzQsICAgIDAsICA2ODEsICA2
ODEsCi0gICAgICAgIDAsICA1NjYsICA1NzAsICA1NzksICA1NzYsICA1NjAsICA1NjAsICAyMTUs
ICA1NzUsICA1NzIsCi0gICAgICA1NzIsICA1NzAsICA1NjcsICA1NTksICA1NjUsICA1NTIsICA1
NjMsICA1NDksICA1NjUsICAgIDAsCi0gICAgICA1NjIsICA1NTAsICA1NTcsICA1NTQsICA1NTgs
ICA1NTEsICA1NDAsICA1MzksICA1NTIsICA1NTUsCi0gICAgICA1NTIsICA1NDcsICA1MzgsICAy
NjAsICA1NDMsICA1NDYsICA1MzcsICA1MzQsICA1MzgsICA1NDQsCi0KLSAgICAgIDUzNSwgIDUy
NiwgIDUyOSwgIDUyNywgIDUzNywgIDUyMywgIDUyMSwgIDUzNCwgIDUyMCwgIDUyMiwKLSAgICAg
IDUxOSwgIDUzMCwgIDUyOSwgIDI4MywgIDUyNCwgIDUxOSwgIDUwOCwgIDI2NCwgIDUyNiwgIDUy
OCwKLSAgICAgIDUxNywgIDM4MSwgIDM4OCwgIDM5NSwgIDQwMiwgIDUxOCwgICAgMCwgIDUxNiwg
IDMyMCwgICAgMCwKLSAgICAgIDUwOCwgIDUwNiwgIDUxNCwgIDUwMywgIDUyMCwgIDUwOSwgIDMz
NiwgICAgMCwgICAgMCwgIDUwMywKLSAgICAgIDUxMywgIDUxMywgICAgMCwgIDQ5OCwgIDM0OSwg
ICAgMCwgICAgMCwgIDUwMCwgIDM2NiwgIDUwMSwKLSAgICAgIDQ5NSwgIDQ5NCwgIDQ5NSwgIDQ5
NCwgIDQwNywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAgICAgIDQ5MCwgIDQ5MSwg
IDQ5NiwgIDQ4NywgIDUwMCwgIDQ5NSwgIDQ5NCwgIDQ4NiwgIDQ5MCwgIDQ4MiwKLSAgICAgIDQ4
NSwgIDQ4OSwgIDQ5NCwgIDQ4MCwgIDQ5MiwgIDQ4MywgICAgMCwgICAgMCwgIDQ4OSwgIDQ3OCwK
LSAgICAgIDQ3OCwgIDQ4MywgIDQ4MiwgIDQ3OSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDQ2
OSwgIDQ4MSwKLSAgICAgIDQ4MywgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwg
IDQ3MSwgIDQ3MiwgIDQ2NiwKLQotICAgICAgNDc2LCAgICAwLCAgICAwLCAgICAwLCAgNDY3LCAg
ICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAgICAw
LCAgICAwLCAgNDc0LCAgICAwLCAgICAwLCAgNDcyLCAgNDY4LAotICAgICAgICAwLCAgICAwLCAg
ICAwLCAgNDY0LCAgNDYwLCAgNDY1LCAgNDU1LCAgNDY4LCAgNDU0LCAgNDY3LAotICAgICAgNDU2
LCAgNDYzLCAgICAwLCAgNDYxLCAgNDYzLCAgNDQ3LCAgNDQ5LCAgNDU1LCAgNDYxLCAgNDU2LAot
ICAgICAgNDQ0LCAgICAwLCAgNDQ2LCAgICAwLCAgNDQ1LCAgNDQ4LCAgICAwLCAgNDM3LCAgNDM2
LCAgNDM2LAotICAgICAgNDQ5LCAgICAwLCAgNDUxLCAgICAwLCAgNDUwLCAgNDQ5LCAgNDM0LCAg
NDQ3LCAgNDM0LCAgICAwLAotICAgICAgICAwLCAgNDM3LCAgICAwLCAgICAwLCAgNDI5LCAgICAw
LCAgICAwLCAgICAwLCAgICAwLCAgICAwLAotICAgICAgNDI2LCAgNDM3LCAgNDMwLCAgNDM2LCAg
NDMzLCAgNDI4LCAgNDIwLCAgNDMyLCAgICAwLCAgICAwLAotICAgICAgNDI1LCAgNDMyLCAgNDIx
LCAgICAwLCAgNDMwLCAgNDI3LCAgNDE3LCAgNDExLCAgNDI1LCAgICAwLAotICAgICAgICAwLCAg
NDI1LCAgICAwLCAgNDIzLCAgNDIyLCAgICAwLCAgICAwLCAgNDIxLCAgNDA3LCAgNDE5LAotCi0g
ICAgICAgIDAsICA0MTAsICA0MzEsICA0MzAsICA0MjksICA0MDAsICAzOTYsICAgIDAsICAgIDAs
ICAgIDAsCi0gICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA0MjEsICAyNTAsICA0
MjEsICA0MTEsICAzODQsCi0gICAgICAzOTIsICAzOTQsICAzOTAsICAzOTIsICAzOTEsICAzOTAs
ICAzOTMsICAzOTAsICAzOTEsICAzODgsCi0gICAgICAgIDAsICAzMzIsICAzNDMsICAzMTcsICAz
MjksICAzMTMsICAzMTcsICAzMDQsICAzMjEsICAyOTEsCi0gICAgICAgIDAsICAzMDIsICAyODAs
ICAyNzEsICAyNTUsICAyNjIsICAgIDAsICAyNTYsICAgIDAsICAyMzIsCi0gICAgICAyMDYsICAy
MTIsICAxNDgsICAxNTksICAxMTMsICAgIDAsICAgIDAsICA2ODEsICA0NDIsICA0NDQsCi0gICAg
ICA0NDYsICA0NTAsICAxNjEKKyAgICAgICAgMCwgICAgMCwgIDU4NywgIDU4OCwgIDU4OCwgIDU4
OCwgIDU2MSwgICA0MywgICA2NCwgIDU4OCwKKyAgICAgIDU4OCwgIDU2MCwgICA2MSwgIDU4OCwg
ICA2MCwgICA1OCwgIDU1OSwgICA3NywgICA4NiwgIDU1NywKKyAgICAgIDU4OCwgIDEwNCwgIDU1
NywgICA1NSwgIDU4OCwgICAgMCwgIDU4OCwgIDU4OCwgICA3NSwgICAyNiwKKyAgICAgICA1Nywg
ICA4MiwgICA4MywgICA3MywgICA5MywgIDUyOCwgICA5NywgICA5NSwgIDUyNywgICA0NCwKKyAg
ICAgICA3MSwgIDUyMSwgIDEwNCwgIDUzNCwgIDExMCwgIDExNiwgICAzNSwgIDExMSwgIDUzMCwg
IDU4OCwKKyAgICAgIDExNCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4OCwgIDU4
OCwgIDU4OCwgIDU4OCwKKyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDE2NSwgIDU4OCwgIDE3Miwg
IDIwMiwgIDIxMSwgIDIzMywgICAgMCwKKyAgICAgIDU4OCwgIDU4OCwgIDU4OCwgIDU1MSwgIDU4
OCwgIDU4OCwgIDU4OCwgIDU1MCwgICAgMCwgIDU4OCwKKyAgICAgIDU4OCwgIDUyMywgIDUxNiwg
IDUxOSwgIDUyNywgIDUyNiwgIDUxMywgIDUyOCwgIDUxNSwgIDUyMSwKKyAgICAgIDUwOSwgIDUw
NiwgIDUxOSwgIDUwNiwgIDUwMywgIDUwMywgIDUwOSwgIDQ5NywgIDEwOCwgIDUwMiwKKworICAg
ICAgNTEyLCAgNDk4LCAgNTA0LCAgNTA3LCAgNTA4LCAgICAwLCAgMTQ1LCAgNTA3LCAgMTEzLCAg
NDkzLAorICAgICAgNTA2LCAgNDk3LCAgNDk5LCAgNDg5LCAgNTAzLCAgNTAwLCAgNTAyLCAgNDg1
LCAgNDkwLCAgNDg3LAorICAgICAgNDc2LCAgMTU3LCAgNDg0LCAgNDg5LCAgNDg1LCAgNDg3LCAg
NDc2LCAgNDc5LCAgMTE4LCAgNDg0LAorICAgICAgNDc2LCAgNDg4LCAgIDcwLCAgNDgxLCAgNTg4
LCAgNTg4LCAgMjQ2LCAgMjUzLCAgMjcwLCAgMjE5LAorICAgICAgMjgzLCAgICAwLCAgNTg4LCAg
NTg4LCAgICAwLCAgNDczLCAgNDc3LCAgNDg2LCAgNDgzLCAgNDY3LAorICAgICAgNDY3LCAgMTE5
LCAgNDgyLCAgNDc5LCAgNDc5LCAgNDc3LCAgNDc0LCAgNDY2LCAgNDcyLCAgNDU5LAorICAgICAg
NDcwLCAgNDU2LCAgNDcyLCAgICAwLCAgNDY5LCAgNDU3LCAgNDY0LCAgNDYxLCAgNDY1LCAgNDU4
LAorICAgICAgNDQ3LCAgNDQ2LCAgNDU5LCAgNDYyLCAgNDU5LCAgNDU0LCAgNDQ1LCAgMTg4LCAg
NDUwLCAgNDUzLAorICAgICAgNDQ0LCAgNDQxLCAgNDQ1LCAgNDUxLCAgNDQyLCAgNDMzLCAgNDM2
LCAgNDM0LCAgNDQ0LCAgNDMwLAorICAgICAgNDI4LCAgNDQxLCAgNDI3LCAgNDI5LCAgNDI2LCAg
NDM3LCAgNDM2LCAgMTI0LCAgNDMxLCAgNDI2LAorCisgICAgICA0MTUsICAyNTgsICA0MzMsICA0
MzUsICA0MjQsICAyOTAsICAyOTcsICAzMDQsICAzMTEsICA0MjUsCisgICAgICAgIDAsICA0MjMs
ICAyNzUsICAgIDAsICA0MTUsICA0MTMsICA0MjEsICA0MTAsICA0MjcsICA0MTYsCisgICAgICAz
MTYsICAgIDAsICAgIDAsICA0MTAsICA0MjAsICA0MjAsICAgIDAsICA0MDUsICAzMTksICAgIDAs
CisgICAgICAgIDAsICA0MDcsICAzMjIsICA0MDgsICA0MDIsICA0MDEsICA0MDIsICA0MDEsICAz
MjUsICAgIDAsCisgICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAzOTcsICAzOTgsICA0MDMs
ICAzOTQsICA0MDcsICA0MDIsCisgICAgICA0MDEsICAzOTMsICAzOTcsICAzODksICAzOTIsICAz
OTYsICA0MDEsICAzODcsICAzOTksICAzOTAsCisgICAgICAgIDAsICAgIDAsICAzOTYsICAzODUs
ICAzODUsICAzOTAsICAzODksICAzODYsICAgIDAsICAgIDAsCisgICAgICAgIDAsICAgIDAsICAz
NzYsICAzODgsICAzOTAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsCisgICAgICAgIDAs
ICAzNzgsICAzNzksICAzNzMsICAzODMsICAgIDAsICAgIDAsICAgIDAsICAzNzQsICAgIDAsCisg
ICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAs
ICAzODEsCisKKyAgICAgICAgMCwgICAgMCwgIDM3OSwgIDM3NSwgICAgMCwgICAgMCwgICAgMCwg
IDM3MSwgIDM2NywgIDM3MiwKKyAgICAgIDM2MiwgIDM3NSwgIDM2MSwgIDM3NCwgIDM2MywgIDM3
MCwgICAgMCwgIDM2OCwgIDM3MCwgIDM1NCwKKyAgICAgIDM1NiwgIDM2MiwgIDM2OCwgIDM2Mywg
IDM1MSwgICAgMCwgIDM1MywgICAgMCwgIDM1MiwgIDM1NSwKKyAgICAgICAgMCwgIDM0NCwgIDM0
MywgIDM0MywgIDM1NiwgICAgMCwgIDM1OCwgICAgMCwgIDM1NywgIDM1NiwKKyAgICAgIDM0MSwg
IDM1NCwgIDM0MSwgICAgMCwgICAgMCwgIDM0NCwgICAgMCwgICAgMCwgIDMzNiwgICAgMCwKKyAg
ICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDMzMywgIDM0NCwgIDMzNywgIDM0MywgIDM0MCwg
IDMzNSwKKyAgICAgIDMyNywgIDMzOSwgICAgMCwgICAgMCwgIDMzMiwgIDMzOSwgIDMyOCwgICAg
MCwgIDMzNywgIDMzNCwKKyAgICAgIDMyNCwgIDMyOSwgIDMzMiwgICAgMCwgICAgMCwgIDMzMiwg
ICAgMCwgIDMzMCwgIDMyOSwgICAgMCwKKyAgICAgICAgMCwgIDMyOCwgIDMxNCwgIDMyNiwgICAg
MCwgIDMxNywgIDMzOCwgIDMzNywgIDMzNiwgIDMwNywKKyAgICAgIDMwMywgICAgMCwgICAgMCwg
ICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDMyOCwKKworICAgICAgMTY2LCAg
MzI1LCAgMzE2LCAgMjk5LCAgMzA4LCAgMzEwLCAgMzA2LCAgMzA4LCAgMzA3LCAgMzA2LAorICAg
ICAgMzA5LCAgMzA2LCAgMjU2LCAgMjUzLCAgICAwLCAgMjI4LCAgMjM4LCAgMjIyLCAgMjM1LCAg
MjAzLAorICAgICAgMjA3LCAgMjA0LCAgMjEyLCAgMTkxLCAgICAwLCAgMjAxLCAgMTY1LCAgMTY3
LCAgMTUzLCAgMTYxLAorICAgICAgICAwLCAgMTcwLCAgICAwLCAgMTc1LCAgMTUxLCAgMTQxLCAg
MTAwLCAgMTE0LCAgIDU5LCAgICAwLAorICAgICAgICAwLCAgNTg4LCAgMzU5LCAgMTEzCiAgICAg
fSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9kZWZbNDY0XSA9CitzdGF0aWMg
eXljb25zdCBmbGV4X2ludDE2X3QgeXlfZGVmWzQ0NV0gPQogICAgIHsgICAwLAotICAgICAgNDU4
LCAgICAxLCAgNDU5LCAgNDU5LCAgNDU4LCAgICA1LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAot
ICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDYwLAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYw
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAg
NDU4LCAgNDYxLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAg
ICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDYyLCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LAotICAgICAgNDU4LCAgNDYzLCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDYwLCAgNDU4LCAgNDU4LCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAg
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NTgs
ICA0NTgsICA0NTgsCi0gICAgICA0NjEsICA0NTgsICA0NjIsICA0NTgsICA0NTgsICA0NTgsICA0
NTgsICA0NjMsICA0NTgsICA0NTgsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
Ci0KLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwK
LSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2
MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLSAgICAgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwg
IDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwgIDQ2MCwKLQotICAgICAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAot
ICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAgICAgNDYwLCAg
NDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLAotICAg
ICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAg
NDYwLAotICAgICAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYwLCAgNDYw
LCAgNDYwLCAgNDYwLAotCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAs
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAgICA0NjAsICA0
NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsCi0gICAg
ICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0
NjAsCi0gICAgICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICA0NjAsICAgIDAs
ICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgKKyAgICAgIDQ0MiwgICAgMSwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAg
ICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0NCwKKyAgICAgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MywgIDQ0MiwKKyAgICAg
IDQ0MiwgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywKKworICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAg
NDQyLCAgNDQ0LCAgNDQyLCAgNDQyLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorCisgICAgICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDMs
CisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisg
ICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0
NDMsICA0NDMsICA0NDMsCisgICAgICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMsICA0NDMs
ICA0NDMsICA0NDMsICA0NDMsICA0NDMsCisKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAg
ICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0MywgIDQ0Mywg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAgIDQ0MywgIDQ0
MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywKKyAgICAg
IDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0MywgIDQ0
MywKKworICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQz
LCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgNDQzLCAgNDQzLCAg
NDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLCAgNDQzLAorICAgICAgNDQzLCAgICAw
LCAgNDQyLCAgNDQyCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9u
eHRbNzQ5XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0WzY1Nl0gPQogICAg
IHsgICAwLAotICAgICAgICA4LCAgICA5LCAgIDEwLCAgIDExLCAgIDEyLCAgIDEzLCAgIDE0LCAg
IDE1LCAgIDE2LCAgIDE3LAotICAgICAgIDE4LCAgIDE5LCAgIDIwLCAgIDIxLCAgIDIyLCAgIDIz
LCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLAotICAgICAgIDIzLCAgIDI0LCAgIDI1LCAgIDI2LCAg
IDI3LCAgIDI4LCAgIDI5LCAgIDMwLCAgIDMwLCAgIDMwLAotICAgICAgIDMwLCAgIDMwLCAgIDMw
LCAgIDMwLCAgIDMwLCAgIDMwLCAgIDMxLCAgIDMyLCAgIDMzLCAgIDM0LAotICAgICAgIDM1LCAg
IDM2LCAgIDM3LCAgIDM4LCAgIDM5LCAgIDQwLCAgIDQxLCAgIDQyLCAgIDMwLCAgIDQzLAotICAg
ICAgIDQ0LCAgIDQ1LCAgIDQ2LCAgIDQ3LCAgIDQ4LCAgIDQ5LCAgIDUwLCAgIDUxLCAgIDUyLCAg
IDUzLAotICAgICAgIDMwLCAgIDMwLCAgIDMwLCAgIDU0LCAgIDU1LCAgIDU2LCAgIDU3LCAgIDU5
LCAgIDU5LCAgIDY1LAotICAgICAgIDY2LCAgIDkwLCAgIDkxLCAgIDYwLCAgIDYwLCAgICA4LCAg
IDYxLCAgIDYyLCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4
LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAotICAgICAgICA4LCAgICA4LCAgICA4LCAg
ICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LCAgICA4LAotCi0gICAgICAgIDgsICAg
IDgsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsCi0gICAg
ICAgNjMsICAgIDgsICAgIDgsICAgIDgsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAg
NjMsCi0gICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMs
ICAgNjMsICAgNjMsCi0gICAgICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAgNjMsICAg
NjMsICAgNjMsICAgIDgsICAgIDgsCi0gICAgICAgIDgsICAgIDgsICAgNjcsICAgNzAsICAgNzIs
ICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsCi0gICAgICAgNzQsICAgNzQsICAgOTMsICAx
MTksICAgNzUsICAgOTUsICAgOTYsICAgNzMsICAgNzEsICAgNzYsCi0gICAgICAxMjAsICAgNjgs
ICAgOTcsICAxNTgsICAgOTgsICAxMjMsICAgOTQsICAxMjEsICAgOTksICAxMjQsCi0gICAgICAg
NzcsICAgNzgsICA0NTcsICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAgNzksICAgODAs
Ci0gICAgICAgNzgsICAxNDgsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAgODMsICAg
ODMsICAgODEsCi0gICAgICAgODUsICAxMDAsICAxNDIsICA0NTYsICAgODIsICAxMDcsICAxNDMs
ICAxMDgsICAgODEsICAxMDMsCi0KLSAgICAgIDQ1NSwgIDEwMSwgICA4MSwgIDEwNCwgIDEwMiwg
IDExMCwgIDEwOSwgICA4NiwgIDEwNSwgICA4NywKLSAgICAgICA4OCwgICA4MSwgIDExNiwgIDEx
MSwgIDEwNiwgIDExMiwgIDEyNSwgIDEyOCwgIDExMywgICA4MiwKLSAgICAgIDExNywgIDE0OSwg
IDIwNiwgIDIxOSwgIDExNCwgIDIyMCwgIDEzMiwgIDEzOCwgIDE3OCwgIDEyNiwKLSAgICAgIDEz
OSwgIDExOCwgIDEyOSwgIDEzMywgIDEzNCwgIDEzMCwgIDE0NCwgIDIwNywgIDE0MCwgIDE5MiwK
LSAgICAgIDE0NSwgIDE3OSwgIDQ1NCwgIDEzNSwgIDEzNiwgIDE0MSwgIDEzNywgIDE5MywgIDQ1
MywgIDE0NiwKLSAgICAgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwg
IDE1NCwgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDQ1MiwgIDE4
NiwgIDE1MiwgIDIxNCwgIDE4NywgIDE4OCwKLSAgICAgIDIzMiwgIDIzMywgIDE4OSwgIDE1NSwg
IDE5MCwgIDIxNSwgIDI1OCwgIDI1OSwgIDI2MCwgIDE1MiwKLSAgICAgIDI4NSwgIDI4NiwgIDI4
NywgIDQyMiwgIDQyMywgICA3OCwgIDE1NSwgICA3OSwgICA3OSwgICA3OSwKLSAgICAgICA3OSwg
ICA3OSwgICA3OSwgICA4MCwgICA3OCwgIDQ1MSwgICA4MCwgICA4MCwgICA4MCwgICA4MCwKLQot
ICAgICAgIDgwLCAgIDgwLCAgIDgwLCAgIDgxLCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3
LCAgMTU3LAotICAgICAgMTU3LCAgNDUwLCAgIDgxLCAgMTU2LCAgNDQ5LCAgMTU2LCAgIDgxLCAg
NDQ4LCAgMTU3LCAgMTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgIDgx
LCAgIDc4LCAgMjgwLCAgIDgzLCAgIDgzLAotICAgICAgIDgzLCAgIDgzLCAgIDgzLCAgIDgzLCAg
IDgzLCAgMjgxLCAgMjkzLCAgMjk0LCAgMjk1LCAgNDQ3LAotICAgICAgMjIyLCAgNDQ2LCAgMjIy
LCAgNDQ1LCAgIDgxLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLAotICAgICAgMjIzLCAg
MjIzLCAgMzAyLCAgMzAzLCAgMzA0LCAgNDQ0LCAgNDQzLCAgIDgxLCAgMTU0LCAgMTU0LAotICAg
ICAgMTU0LCAgMTU0LCAgMTU0LCAgMTU0LCAgMTU0LCAgMzA5LCAgMzEwLCAgMzExLCAgNDQyLCAg
NDQxLAotICAgICAgMjI0LCAgNDQwLCAgMjI0LCAgNDM5LCAgMTU1LCAgMjI1LCAgMjI1LCAgMjI1
LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAgMjI1LCAgMzEzLCAgMzE0LCAgMzE1LCAgNDM4LCAg
NDM3LCAgMTU1LCAgMTU3LCAgMTU3LAotICAgICAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3LCAgMTU3
LCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLAotCi0gICAgICAyMjMsICAyMjMsICAyMjMs
ICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjMsICAyMjUsCi0gICAgICAyMjUsICAy
MjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsICAyMjUsCi0gICAg
ICAyMjUsICAyMjUsICAyMjUsICAzMjEsICAzMjIsICAzMjMsICA0MDMsICA0MDQsICA0MDUsICA0
MzYsCi0gICAgICA0MzUsICA0MzQsICA0MzMsICA0MzIsICA0MzEsICA0MzAsICA0MjksICA0Mjgs
ICA0MjcsICA0MDYsCi0gICAgICA0MjYsICA0MDcsICAgNTgsICAgNTgsICAgNTgsICAgNTgsICAg
OTIsICAgOTIsICAxNTEsICAxNTEsCi0gICAgICAxNTMsICA0MjUsICAxNTMsICAxNTMsICA0MjQs
ICA0MjEsICA0MjAsICA0MTksICA0MTgsICA0MTcsCi0gICAgICA0MTYsICA0MTUsICA0MTQsICA0
MTMsICA0MTIsICA0MTEsICA0MTAsICA0MDksICA0MDgsICA0MDIsCi0gICAgICA0MDEsICA0MDAs
ICAzOTksICAzOTgsICAzOTcsICAzOTYsICAzOTUsICAzOTQsICAzOTMsICAzOTIsCi0gICAgICAz
OTEsICAzOTAsICAzODksICAzODgsICAzODcsICAzODYsICAzODUsICAzODQsICAzODMsICAzODIs
Ci0gICAgICAzODEsICAzODAsICAzNzksICAzNzgsICAzNzcsICAzNzYsICAzNzUsICAzNzQsICAz
NzMsICAzNzIsCi0KLSAgICAgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2NywgIDM2NiwgIDM2
NSwgIDM2NCwgIDM2MywgIDM2MiwKLSAgICAgIDM2MSwgIDM2MCwgIDM1OSwgIDM1OCwgIDM1Nywg
IDM1NiwgIDM1NSwgIDM1NCwgIDM1MywgIDM1MiwKLSAgICAgIDM1MSwgIDM1MCwgIDM0OSwgIDM0
OCwgIDM0NywgIDM0NiwgIDM0NSwgIDM0NCwgIDM0MywgIDM0MiwKLSAgICAgIDM0MSwgIDM0MCwg
IDMzOSwgIDMzOCwgIDMzNywgIDMzNiwgIDMzNSwgIDMzNCwgIDMzMywgIDMzMiwKLSAgICAgIDMz
MSwgIDMzMCwgIDMyOSwgIDMyOCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMCwgIDMxOSwK
LSAgICAgIDMxOCwgIDMxNywgIDMxNiwgIDMxMiwgIDMwOCwgIDMwNywgIDMwNiwgIDMwNSwgIDMw
MSwgIDMwMCwKLSAgICAgIDI5OSwgIDI5OCwgIDI5NywgIDI5NiwgIDI5MiwgIDI5MSwgIDI5MCwg
IDI4OSwgIDI4OCwgIDI4NCwKLSAgICAgIDI4MywgIDI4MiwgIDI3OSwgIDI3OCwgIDI3NywgIDI3
NiwgIDI3NSwgIDI3NCwgIDI3MywgIDI3MiwKLSAgICAgIDI3MSwgIDI3MCwgIDI2OSwgIDI2OCwg
IDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2MiwKLSAgICAgIDI2MSwgIDI1NywgIDI1
NiwgIDI1NSwgIDI1NCwgIDI1MywgIDI1MiwgIDI1MSwgIDI1MCwgIDI0OSwKLQotICAgICAgMjQ4
LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAgMjQ0LCAgMjQzLCAgMjQyLCAgMjQxLCAgMjQwLCAgMjM5LAot
ICAgICAgMjM4LCAgMjM3LCAgMjM2LCAgMjM1LCAgMjM0LCAgMjMxLCAgMjMwLCAgMjI5LCAgMjI4
LCAgMjI3LAotICAgICAgMjI2LCAgMjIxLCAgMjE4LCAgMjE3LCAgMjE2LCAgMjEzLCAgMjEyLCAg
MjExLCAgMjEwLCAgMjA5LAotICAgICAgMjA4LCAgMjA1LCAgMjA0LCAgMjAzLCAgMjAyLCAgMjAx
LCAgMjAwLCAgMTk5LCAgMTk4LCAgMTk3LAotICAgICAgMTk2LCAgMTk1LCAgMTk0LCAgMTkxLCAg
MTg1LCAgMTg0LCAgMTgzLCAgMTgyLCAgMTgxLCAgMTgwLAotICAgICAgMTc3LCAgMTc2LCAgMTc1
LCAgMTc0LCAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LAotICAgICAgMTY3LCAg
MTY2LCAgMTY1LCAgMTY0LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTUwLAotICAg
ICAgMTQ3LCAgMTMxLCAgMTI3LCAgMTIyLCAgMTE1LCAgIDg5LCAgIDg0LCAgIDY5LCAgIDY0LCAg
NDU4LAotICAgICAgICA3LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgs
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAgICA0NTgsICA0
NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsCi0gICAg
ICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0
NTgsCi0gICAgICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgsICA0NTgK
KyAgICAgICAgNCwgICAgNSwgICAgNiwgICAgNywgICAgOCwgICAgOSwgICAxMCwgICAxMSwgICAx
MiwgICAxMywKKyAgICAgICAxNCwgICAxNSwgICAxNiwgICAxNywgICAxOCwgICAxOSwgICAxOSwg
ICAxOSwgICAxOSwgICAxOSwKKyAgICAgICAxOSwgICAyMCwgICAyMSwgICAyMiwgICAyMywgICAy
NCwgICAyNSwgICAyNiwgICAyNiwgICAyNiwKKyAgICAgICAyNiwgICAyNiwgICAyNiwgICAyNiwg
ICAyNiwgICAyNiwgICAyNywgICAyOCwgICAyOSwgICAzMCwKKyAgICAgICAzMSwgICAzMiwgICAz
MywgICAzNCwgICAzNSwgICAzNiwgICAzNywgICAzOCwgICAyNiwgICAzOSwKKyAgICAgICA0MCwg
ICA0MSwgICA0MiwgICA0MywgICA0NCwgICA0NSwgICA0NiwgICA0NywgICA0OCwgICA0OSwKKyAg
ICAgICAyNiwgICAyNiwgICAyNiwgICA1MCwgICA1MSwgICA1MiwgICA1MywgICA1NSwgICA1Niwg
ICA1NywKKyAgICAgICA2MCwgICA2MiwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2
NCwgICA2NCwgICA3NywKKyAgICAgICA3OCwgICA4MiwgICA4MywgIDExMCwgICA2MywgICA2MSwg
IDEyOSwgIDExMSwgICA1OCwgICA2NiwKKyAgICAgIDEzMCwgICA2NywgICA2NywgICA2NywgICA2
NywgICA2NywgICA2NywgICA2OCwgICA2NiwgICA4MCwKKworICAgICAgIDY4LCAgIDY4LCAgIDY4
LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY5LCAgIDcyLCAgIDg0LAorICAgICAgMTEyLCAg
IDg1LCAgIDcwLCAgIDgxLCAgMTQyLCAgIDg2LCAgIDY5LCAgMjAzLCAgNDQxLCAgMjA0LAorICAg
ICAgIDY5LCAgIDg3LCAgIDk0LCAgMTEzLCAgIDk1LCAgIDczLCAgIDkwLCAgIDc0LCAgIDc1LCAg
IDY5LAorICAgICAgIDkxLCAgIDg4LCAgIDk3LCAgIDk2LCAgIDg5LCAgIDkyLCAgMTAzLCAgIDcw
LCAgMTM1LCAgMTA2LAorICAgICAgIDk4LCAgIDkzLCAgIDk5LCAgMTE1LCAgMTA0LCAgMTAwLCAg
MTA3LCAgMTYyLCAgNDQwLCAgMTE5LAorICAgICAgMTMxLCAgMTAxLCAgNDM5LCAgMTA4LCAgMTMy
LCAgMTA1LCAgMTIwLCAgMTIxLCAgMTE2LCAgMTI1LAorICAgICAgMTYzLCAgMTE3LCAgMTI2LCAg
MTMzLCAgMTc2LCAgMTk4LCAgMTIyLCAgMTIzLCAgMjY0LCAgMTI0LAorICAgICAgMTI3LCAgNDM4
LCAgMTc3LCAgMTk5LCAgMjE2LCAgMjE3LCAgMjY1LCAgMTI4LCAgMTM2LCAgIDY0LAorICAgICAg
IDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgIDY0LCAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4
LAorICAgICAgMTM4LCAgMTM4LCAgMTM4LCAgNDM3LCAgMTcwLCAgMTM3LCAgMTkwLCAgMTcxLCAg
MTcyLCAgNDA2LAorCisgICAgICA0MDcsICAxNzMsICAxMzksICAxNzQsICAyNDIsICAyNDMsICAy
NDQsICA0MzYsICAxMzcsICA0MzUsCisgICAgICA0MzQsICAxOTEsICA0MzMsICA0MzIsICAgNjYs
ICAxMzksICAgNjcsICAgNjcsICAgNjcsICAgNjcsCisgICAgICAgNjcsICAgNjcsICAgNjgsICAg
NjYsICA0MzEsICAgNjgsICAgNjgsICAgNjgsICAgNjgsICAgNjgsCisgICAgICAgNjgsICAgNjgs
ICAgNjksICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAxNDEsCisgICAgICA0
MzAsICAgNjksICAxNDAsICA0MjksICAxNDAsICAgNjksICA0MjgsICAxNDEsICAxNDEsICAxNDEs
CisgICAgICAxNDEsICAxNDEsICAxNDEsICAxNDEsICAgNjksICAyMDYsICA0MjcsICAyMDYsICA0
MjYsICA0MjUsCisgICAgICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcs
ICAxMzgsICAxMzgsICAxMzgsCisgICAgICAxMzgsICAxMzgsICAxMzgsICAxMzgsICAyNjksICAy
NzAsICAyNzEsICA0MjQsICA0MjMsICAyMDgsCisgICAgICA0MjIsICAyMDgsICA0MjEsICAxMzks
ICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksICAyMDksCisgICAgICAyMDksICAyNzcsICAy
NzgsICAyNzksICA0MjAsICA0MTksICAxMzksICAxNDEsICAxNDEsICAxNDEsCisKKyAgICAgIDE0
MSwgIDE0MSwgIDE0MSwgIDE0MSwgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywK
KyAgICAgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIwNywgIDIw
OSwgIDIwOSwKKyAgICAgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwgIDIwOSwg
IDIwOSwgIDIwOSwgIDIwOSwKKyAgICAgIDIwOSwgIDIwOSwgIDI4NiwgIDI4NywgIDI4OCwgIDI5
MywgIDI5NCwgIDI5NSwgIDI5NywgIDI5OCwKKyAgICAgIDI5OSwgIDMwNSwgIDMwNiwgIDMwNywg
IDM4NywgIDM4OCwgIDM4OSwgIDQxOCwgIDQxNywgIDQxNiwKKyAgICAgIDQxNSwgIDQxNCwgIDQx
MywgIDQxMiwgIDQxMSwgIDQxMCwgIDQwOSwgIDM5MCwgIDQwOCwgIDM5MSwKKyAgICAgICA3OSwg
ICA3OSwgIDQwNSwgIDQwNCwgIDQwMywgIDQwMiwgIDQwMSwgIDQwMCwgIDM5OSwgIDM5OCwKKyAg
ICAgIDM5NywgIDM5NiwgIDM5NSwgIDM5NCwgIDM5MywgIDM5MiwgIDM4NiwgIDM4NSwgIDM4NCwg
IDM4MywKKyAgICAgIDM4MiwgIDM4MSwgIDM4MCwgIDM3OSwgIDM3OCwgIDM3NywgIDM3NiwgIDM3
NSwgIDM3NCwgIDM3MywKKyAgICAgIDM3MiwgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwgIDM2Nywg
IDM2NiwgIDM2NSwgIDM2NCwgIDM2MywKKworICAgICAgMzYyLCAgMzYxLCAgMzYwLCAgMzU5LCAg
MzU4LCAgMzU3LCAgMzU2LCAgMzU1LCAgMzU0LCAgMzUzLAorICAgICAgMzUyLCAgMzUxLCAgMzUw
LCAgMzQ5LCAgMzQ4LCAgMzQ3LCAgMzQ2LCAgMzQ1LCAgMzQ0LCAgMzQzLAorICAgICAgMzQyLCAg
MzQxLCAgMzQwLCAgMzM5LCAgMzM4LCAgMzM3LCAgMzM2LCAgMzM1LCAgMzM0LCAgMzMzLAorICAg
ICAgMzMyLCAgMzMxLCAgMzMwLCAgMzI5LCAgMzI4LCAgMzI3LCAgMzI2LCAgMzI1LCAgMzI0LCAg
MzIzLAorICAgICAgMzIyLCAgMzIxLCAgMzIwLCAgMzE5LCAgMzE4LCAgMzE3LCAgMzE2LCAgMzE1
LCAgMzE0LCAgMzEzLAorICAgICAgMzEyLCAgMzExLCAgMzEwLCAgMzA5LCAgMzA4LCAgMzA0LCAg
MzAzLCAgMzAyLCAgMzAxLCAgMzAwLAorICAgICAgMjk2LCAgMjkyLCAgMjkxLCAgMjkwLCAgMjg5
LCAgMjg1LCAgMjg0LCAgMjgzLCAgMjgyLCAgMjgxLAorICAgICAgMjgwLCAgMjc2LCAgMjc1LCAg
Mjc0LCAgMjczLCAgMjcyLCAgMjY4LCAgMjY3LCAgMjY2LCAgMjYzLAorICAgICAgMjYyLCAgMjYx
LCAgMjYwLCAgMjU5LCAgMjU4LCAgMjU3LCAgMjU2LCAgMjU1LCAgMjU0LCAgMjUzLAorICAgICAg
MjUyLCAgMjUxLCAgMjUwLCAgMjQ5LCAgMjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAgMjQxLCAgMjQw
LAorCisgICAgICAyMzksICAyMzgsICAyMzcsICAyMzYsICAyMzUsICAyMzQsICAyMzMsICAyMzIs
ICAyMzEsICAyMzAsCisgICAgICAyMjksICAyMjgsICAyMjcsICAyMjYsICAyMjUsICAyMjQsICAy
MjMsICAyMjIsICAyMjEsICAyMjAsCisgICAgICAyMTksICAyMTgsICAyMTUsICAyMTQsICAyMTMs
ICAyMTIsICAyMTEsICAyMTAsICAyMDUsICAyMDIsCisgICAgICAyMDEsICAyMDAsICAxOTcsICAx
OTYsICAxOTUsICAxOTQsICAxOTMsICAxOTIsICAxODksICAxODgsCisgICAgICAxODcsICAxODYs
ICAxODUsICAxODQsICAxODMsICAxODIsICAxODEsICAxODAsICAxNzksICAxNzgsCisgICAgICAx
NzUsICAxNjksICAxNjgsICAxNjcsICAxNjYsICAxNjUsICAxNjQsICAxNjEsICAxNjAsICAxNTks
CisgICAgICAxNTgsICAxNTcsICAxNTYsICAxNTUsICAxNTQsICAxNTMsICAxNTIsICAxNTEsICAx
NTAsICAxNDksCisgICAgICAxNDgsICAxNDcsICAxNDYsICAxNDUsICAxNDQsICAxNDMsICAxMzQs
ICAxMTgsICAxMTQsICAxMDksCisgICAgICAxMDIsICAgNzYsICAgNzEsICAgNjUsICAgNTksICAg
NTQsICA0NDIsICAgIDMsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisKKyAgICAgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwK
KyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0
MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0MiwKKyAgICAgIDQ0MiwgIDQ0MiwgIDQ0MiwgIDQ0Miwg
IDQ0MgogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzc0OV0g
PQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1s2NTZdID0KICAgICB7ICAgMCwK
ICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwKQEAgLTY5NCw5NSArNjc5LDg1IEBAIHN0YXRpYyB5eWNvbnN0IGZs
ZXhfaW50MTZfdCB5eV9jaGtbNzQ5XSAKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKLSAgICAg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAgNCwgICAx
MiwKLSAgICAgICAxMiwgICAyOCwgICAyOCwgICAgMywgICAgNCwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAg
NSwgICAgNSwgICAgNSwgICAgNSwKLSAgICAgICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwg
ICAgNSwgICAgNSwgICAgNSwgICAgNSwgICAgNSwKLQotICAgICAgICA1LCAgICA1LCAgICA1LCAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAgICA1LCAgICA1
LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LAotICAgICAg
ICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1
LAotICAgICAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAgICA1LCAg
ICA1LCAgICA1LAotICAgICAgICA1LCAgICA1LCAgIDEzLCAgIDE3LCAgIDE5LCAgIDIwLCAgIDIw
LCAgIDIwLCAgIDIwLCAgIDIwLAotICAgICAgIDIwLCAgIDIwLCAgIDMzLCAgIDQyLCAgIDIxLCAg
IDM0LCAgIDM0LCAgIDE5LCAgIDE3LCAgIDIxLAotICAgICAgIDQyLCAgIDEzLCAgIDM1LCAgNDYz
LCAgIDM1LCAgIDQ0LCAgIDMzLCAgIDQyLCAgIDM1LCAgIDQ0LAotICAgICAgIDIxLCAgIDIyLCAg
NDU1LCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLCAgIDIyLAotICAgICAgIDIz
LCAgIDU1LCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIyLAot
ICAgICAgIDI2LCAgIDM2LCAgIDUxLCAgNDU0LCAgIDIyLCAgIDM4LCAgIDUxLCAgIDM4LCAgIDIz
LCAgIDM3LAotCi0gICAgICA0NTMsICAgMzYsICAgMjIsICAgMzcsICAgMzYsICAgMzksICAgMzgs
ICAgMjYsICAgMzcsICAgMjYsCi0gICAgICAgMjYsICAgMjMsICAgNDEsICAgMzksICAgMzcsICAg
MzksICAgNDUsICAgNDcsICAgMzksICAgMjIsCi0gICAgICAgNDEsICAgNTUsICAxMzUsICAxNDYs
ICAgMzksICAxNDYsICAgNDksICAgNTAsICAxMTIsICAgNDUsCi0gICAgICAgNTAsICAgNDEsICAg
NDcsICAgNDksICAgNDksICAgNDcsICAgNTIsICAxMzUsICAgNTAsICAxMjIsCi0gICAgICAgNTIs
ICAxMTIsICA0NTIsICAgNDksICAgNDksICAgNTAsICAgNDksICAxMjIsICA0NTEsICAgNTIsCi0g
ICAgICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzQsICAgNzgsICAgNzgs
ICAgNzgsCi0gICAgICAgNzgsICAgNzgsICAgNzgsICAgNzgsICA0NTAsICAxMjAsICAgNzQsICAx
NDIsICAxMjAsICAxMjAsCi0gICAgICAxNjgsICAxNjgsICAxMjAsICAgNzgsICAxMjAsICAxNDIs
ICAxOTQsICAxOTQsICAxOTQsICAgNzQsCi0gICAgICAyMTgsICAyMTgsICAyMTgsICA0MTcsICA0
MTcsICAgNzksICAgNzgsICAgNzksICAgNzksICAgNzksCi0gICAgICAgNzksICAgNzksICAgNzks
ICAgNzksICAgODAsICA0NDgsICAgODAsICAgODAsICAgODAsICAgODAsCi0KLSAgICAgICA4MCwg
ICA4MCwgICA4MCwgICA3OSwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwgIDE1NiwKLSAg
ICAgIDE1NiwgIDQ0NiwgICA4MCwgICA4MSwgIDQ0NSwgICA4MSwgICA3OSwgIDQ0NCwgICA4MSwg
ICA4MSwKLSAgICAgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MSwgICA4MCwgICA4MywgIDIx
NCwgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgIDIxNCwg
IDIyOSwgIDIyOSwgIDIyOSwgIDQ0MywKLSAgICAgIDE1MiwgIDQ0MiwgIDE1MiwgIDQ0MCwgICA4
MywgIDE1MiwgIDE1MiwgIDE1MiwgIDE1MiwgIDE1MiwKLSAgICAgIDE1MiwgIDE1MiwgIDIzNywg
IDIzNywgIDIzNywgIDQzOSwgIDQzOCwgICA4MywgIDE1NCwgIDE1NCwKLSAgICAgIDE1NCwgIDE1
NCwgIDE1NCwgIDE1NCwgIDE1NCwgIDI0NSwgIDI0NSwgIDI0NSwgIDQzNywgIDQzNiwKLSAgICAg
IDE1NSwgIDQzNSwgIDE1NSwgIDQzNCwgIDE1NCwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1NSwgIDE1
NSwKLSAgICAgIDE1NSwgIDE1NSwgIDI0OSwgIDI0OSwgIDI0OSwgIDQzMywgIDQzMiwgIDE1NCwg
IDE1NywgIDE1NywKLSAgICAgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDE1NywgIDIyMiwgIDIy
MiwgIDIyMiwgIDIyMiwgIDIyMiwKLQotICAgICAgMjIyLCAgMjIyLCAgMjIzLCAgMjIzLCAgMjIz
LCAgMjIzLCAgMjIzLCAgMjIzLCAgMjIzLCAgMjI0LAotICAgICAgMjI0LCAgMjI0LCAgMjI0LCAg
MjI0LCAgMjI0LCAgMjI0LCAgMjI1LCAgMjI1LCAgMjI1LCAgMjI1LAotICAgICAgMjI1LCAgMjI1
LCAgMjI1LCAgMjU1LCAgMjU1LCAgMjU1LCAgMzg4LCAgMzg4LCAgMzg4LCAgNDMwLAotICAgICAg
NDI5LCAgNDI4LCAgNDI3LCAgNDI2LCAgNDI1LCAgNDI0LCAgNDIzLCAgNDIyLCAgNDIxLCAgMzg4
LAotICAgICAgNDIwLCAgMzg4LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDU5LCAgNDYwLCAgNDYwLCAg
NDYxLCAgNDYxLAotICAgICAgNDYyLCAgNDE5LCAgNDYyLCAgNDYyLCAgNDE4LCAgNDE2LCAgNDA3
LCAgNDA2LCAgNDA1LCAgNDA0LAotICAgICAgNDAzLCAgNDAyLCAgNDAwLCAgMzk5LCAgMzk4LCAg
Mzk1LCAgMzk0LCAgMzkyLCAgMzg5LCAgMzg3LAotICAgICAgMzg2LCAgMzg1LCAgMzgzLCAgMzgy
LCAgMzgxLCAgMzc4LCAgMzc3LCAgMzc2LCAgMzc1LCAgMzc0LAotICAgICAgMzczLCAgMzcyLCAg
MzcxLCAgMzY1LCAgMzYyLCAgMzU5LCAgMzU4LCAgMzU3LCAgMzU2LCAgMzU1LAotICAgICAgMzUz
LCAgMzUxLCAgMzUwLCAgMzQ5LCAgMzQ4LCAgMzQ2LCAgMzQ1LCAgMzQzLCAgMzQxLCAgMzQwLAot
Ci0gICAgICAzMzksICAzMzgsICAzMzcsICAzMzYsICAzMzUsICAzMzQsICAzMzIsICAzMzEsICAz
MzAsICAzMjksCi0gICAgICAzMjgsICAzMjcsICAzMjYsICAzMjUsICAzMjQsICAzMjAsICAzMTks
ICAzMTYsICAzMDUsICAzMDEsCi0gICAgICAzMDAsICAyOTksICAyOTgsICAyOTEsICAyOTAsICAy
ODksICAyODQsICAyODMsICAyODIsICAyODEsCi0gICAgICAyODAsICAyNzksICAyNzYsICAyNzUs
ICAyNzQsICAyNzMsICAyNzIsICAyNzEsICAyNzAsICAyNjksCi0gICAgICAyNjgsICAyNjcsICAy
NjYsICAyNjUsICAyNjQsICAyNjMsICAyNjIsICAyNjEsICAyNTQsICAyNTMsCi0gICAgICAyNTIs
ICAyNTEsICAyNTAsICAyNDgsICAyNDQsICAyNDIsICAyNDEsICAyNDAsICAyMzYsICAyMzUsCi0g
ICAgICAyMzQsICAyMzMsICAyMzIsICAyMzEsICAyMjgsICAyMjYsICAyMjEsICAyMjAsICAyMTks
ICAyMTcsCi0gICAgICAyMTYsICAyMTUsICAyMTMsICAyMTIsICAyMTEsICAyMTAsICAyMDksICAy
MDgsICAyMDcsICAyMDYsCi0gICAgICAyMDUsICAyMDQsICAyMDMsICAyMDIsICAyMDEsICAyMDAs
ICAxOTksICAxOTgsICAxOTcsICAxOTYsCi0gICAgICAxOTUsICAxOTMsICAxOTIsICAxOTEsICAx
OTAsICAxODksICAxODgsICAxODcsICAxODYsICAxODUsCi0KLSAgICAgIDE4NCwgIDE4MywgIDE4
MiwgIDE4MSwgIDE3OSwgIDE3OCwgIDE3NywgIDE3NiwgIDE3NSwgIDE3NCwKLSAgICAgIDE3Mywg
IDE3MiwgIDE3MSwgIDE3MCwgIDE2OSwgIDE2NywgIDE2NiwgIDE2NSwgIDE2NCwgIDE2MywKLSAg
ICAgIDE2MiwgIDE0NywgIDE0NSwgIDE0NCwgIDE0MywgIDE0MSwgIDE0MCwgIDEzOSwgIDEzOCwg
IDEzNywKLSAgICAgIDEzNiwgIDEzNCwgIDEzMywgIDEzMiwgIDEzMSwgIDEzMCwgIDEyOSwgIDEy
OCwgIDEyNywgIDEyNiwKLSAgICAgIDEyNSwgIDEyNCwgIDEyMywgIDEyMSwgIDExOCwgIDExNywg
IDExNiwgIDExNSwgIDExNCwgIDExMywKLSAgICAgIDExMSwgIDExMCwgIDEwOSwgIDEwOCwgIDEw
NywgIDEwNiwgIDEwNSwgIDEwNCwgIDEwMywgIDEwMiwKLSAgICAgIDEwMSwgIDEwMCwgICA5OSwg
ICA5OCwgICA5NywgICA5NiwgICA5NSwgICA5MSwgICA4NywgICA2MCwKLSAgICAgICA1MywgICA0
OCwgICA0NiwgICA0MywgICA0MCwgICAyNywgICAyNCwgICAxNiwgICAxMSwgICAgNywKLSAgICAg
IDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1
OCwKLSAgICAgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwgIDQ1OCwg
IDQ1OCwgIDQ1OCwKLQotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4LCAgNDU4LCAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAgNDU4LCAgNDU4
LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LAotICAgICAg
NDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4LCAgNDU4CisgICAgICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDgsICAgIDgsICAgIDksCisg
ICAgICAgMTMsICAgMTUsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYsICAgMTYs
ICAgMjQsCisgICAgICAgMjQsICAgMzAsICAgMzAsICAgNDAsICAgMTUsICAgMTMsICAgNDcsICAg
NDAsICAgIDksICAgMTgsCisgICAgICAgNDcsICAgMTgsICAgMTgsICAgMTgsICAgMTgsICAgMTgs
ICAgMTgsICAgMTgsICAgMTksICAgMjksCisKKyAgICAgICAxOSwgICAxOSwgICAxOSwgICAxOSwg
ICAxOSwgICAxOSwgICAxOSwgICAxOCwgICAyMiwgICAzMSwKKyAgICAgICA0MSwgICAzMSwgICAx
OCwgICAyOSwgIDQ0NCwgICAzMSwgICAxOSwgIDEzMywgIDQzOSwgIDEzMywKKyAgICAgICAxOCwg
ICAzMiwgICAzNCwgICA0MSwgICAzNCwgICAyMiwgICAzMywgICAyMiwgICAyMiwgICAxOSwKKyAg
ICAgICAzMywgICAzMiwgICAzNSwgICAzNCwgICAzMiwgICAzMywgICAzNywgICAxOCwgICA1MSwg
ICAzOCwKKyAgICAgICAzNSwgICAzMywgICAzNSwgICA0MywgICAzNywgICAzNSwgICAzOCwgICA5
OSwgIDQzOCwgICA0NSwKKyAgICAgICA0OCwgICAzNSwgIDQzNywgICAzOCwgICA0OCwgICAzNywg
ICA0NSwgICA0NSwgICA0MywgICA0NiwKKyAgICAgICA5OSwgICA0MywgICA0NiwgICA0OCwgIDEw
OSwgIDEyOSwgICA0NSwgICA0NSwgIDE5OCwgICA0NSwKKyAgICAgICA0NiwgIDQzNiwgIDEwOSwg
IDEyOSwgIDE1MiwgIDE1MiwgIDE5OCwgICA0NiwgICA1MSwgICA2NCwKKyAgICAgICA2NCwgICA2
NCwgICA2NCwgICA2NCwgICA2NCwgICA2NCwgICA2NiwgICA2NiwgICA2NiwgICA2NiwKKyAgICAg
ICA2NiwgICA2NiwgICA2NiwgIDQzNSwgIDEwNywgICA2NCwgIDEyMiwgIDEwNywgIDEwNywgIDQw
MSwKKworICAgICAgNDAxLCAgMTA3LCAgIDY2LCAgMTA3LCAgMTc4LCAgMTc4LCAgMTc4LCAgNDM0
LCAgIDY0LCAgNDMyLAorICAgICAgNDMwLCAgMTIyLCAgNDI5LCAgNDI4LCAgIDY3LCAgIDY2LCAg
IDY3LCAgIDY3LCAgIDY3LCAgIDY3LAorICAgICAgIDY3LCAgIDY3LCAgIDY3LCAgIDY4LCAgNDI3
LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LCAgIDY4LAorICAgICAgIDY4LCAgIDY4LCAgIDY3LCAg
MTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLCAgMTQwLAorICAgICAgNDI2LCAgIDY4
LCAgIDY5LCAgNDI0LCAgIDY5LCAgIDY3LCAgNDIzLCAgIDY5LCAgIDY5LCAgIDY5LAorICAgICAg
IDY5LCAgIDY5LCAgIDY5LCAgIDY5LCAgIDY4LCAgMTM3LCAgNDIyLCAgMTM3LCAgNDIxLCAgNDIw
LAorICAgICAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM3LCAgMTM4LCAg
MTM4LCAgMTM4LAorICAgICAgMTM4LCAgMTM4LCAgMTM4LCAgMTM4LCAgMjAyLCAgMjAyLCAgMjAy
LCAgNDE5LCAgNDE4LCAgMTM5LAorICAgICAgNDE3LCAgMTM5LCAgNDE2LCAgMTM4LCAgMTM5LCAg
MTM5LCAgMTM5LCAgMTM5LCAgMTM5LCAgMTM5LAorICAgICAgMTM5LCAgMjEzLCAgMjEzLCAgMjEz
LCAgNDE0LCAgNDEzLCAgMTM4LCAgMTQxLCAgMTQxLCAgMTQxLAorCisgICAgICAxNDEsICAxNDEs
ICAxNDEsICAxNDEsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsICAyMDYsCisgICAgICAy
MDYsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDcsICAyMDgsICAyMDgs
CisgICAgICAyMDgsICAyMDgsICAyMDgsICAyMDgsICAyMDgsICAyMDksICAyMDksICAyMDksICAy
MDksICAyMDksCisgICAgICAyMDksICAyMDksICAyMjEsICAyMjEsICAyMjEsICAyMjksICAyMjks
ICAyMjksICAyMzMsICAyMzMsCisgICAgICAyMzMsICAyMzksICAyMzksICAyMzksICAzNzIsICAz
NzIsICAzNzIsICA0MTIsICA0MTEsICA0MTAsCisgICAgICA0MDksICA0MDgsICA0MDcsICA0MDYs
ICA0MDUsICA0MDQsICA0MDMsICAzNzIsICA0MDIsICAzNzIsCisgICAgICA0NDMsICA0NDMsICA0
MDAsICAzOTEsICAzOTAsICAzODksICAzODgsICAzODcsICAzODYsICAzODQsCisgICAgICAzODMs
ICAzODIsICAzNzksICAzNzgsICAzNzYsICAzNzMsICAzNzEsICAzNzAsICAzNjksICAzNjcsCisg
ICAgICAzNjYsICAzNjUsICAzNjIsICAzNjEsICAzNjAsICAzNTksICAzNTgsICAzNTcsICAzNTYs
ICAzNTUsCisgICAgICAzNDksICAzNDYsICAzNDMsICAzNDIsICAzNDEsICAzNDAsICAzMzksICAz
MzcsICAzMzUsICAzMzQsCisKKyAgICAgIDMzMywgIDMzMiwgIDMzMCwgIDMyOSwgIDMyNywgIDMy
NSwgIDMyNCwgIDMyMywgIDMyMiwgIDMyMSwKKyAgICAgIDMyMCwgIDMxOSwgIDMxOCwgIDMxNiwg
IDMxNSwgIDMxNCwgIDMxMywgIDMxMiwgIDMxMSwgIDMxMCwKKyAgICAgIDMwOSwgIDMwOCwgIDMw
NCwgIDMwMywgIDMwMCwgIDI4OSwgIDI4NSwgIDI4NCwgIDI4MywgIDI4MiwKKyAgICAgIDI3NSwg
IDI3NCwgIDI3MywgIDI2OCwgIDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI2MywgIDI2MCwKKyAg
ICAgIDI1OSwgIDI1OCwgIDI1NywgIDI1NiwgIDI1NSwgIDI1NCwgIDI1MywgIDI1MiwgIDI1MSwg
IDI1MCwKKyAgICAgIDI0OSwgIDI0OCwgIDI0NywgIDI0NiwgIDI0NSwgIDIzOCwgIDIzNywgIDIz
NiwgIDIzNSwgIDIzNCwKKyAgICAgIDIzMiwgIDIyOCwgIDIyNiwgIDIyNSwgIDIyNCwgIDIyMCwg
IDIxOSwgIDIxOCwgIDIxNywgIDIxNiwKKyAgICAgIDIxNSwgIDIxMiwgIDIxMCwgIDIwNSwgIDIw
NCwgIDIwMywgIDIwMSwgIDIwMCwgIDE5OSwgIDE5NywKKyAgICAgIDE5NiwgIDE5NSwgIDE5NCwg
IDE5MywgIDE5MiwgIDE5MSwgIDE5MCwgIDE4OSwgIDE4OCwgIDE4NywKKyAgICAgIDE4NiwgIDE4
NSwgIDE4NCwgIDE4MywgIDE4MiwgIDE4MSwgIDE4MCwgIDE3OSwgIDE3NywgIDE3NiwKKworICAg
ICAgMTc1LCAgMTc0LCAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTY4LCAgMTY3LCAg
MTY2LAorICAgICAgMTY1LCAgMTYzLCAgMTYyLCAgMTYxLCAgMTYwLCAgMTU5LCAgMTU4LCAgMTU3
LCAgMTU2LCAgMTU1LAorICAgICAgMTU0LCAgMTUzLCAgMTUxLCAgMTUwLCAgMTQ5LCAgMTQ4LCAg
MTQ3LCAgMTQ2LCAgMTM0LCAgMTMyLAorICAgICAgMTMxLCAgMTMwLCAgMTI4LCAgMTI3LCAgMTI2
LCAgMTI1LCAgMTI0LCAgMTIzLCAgMTIxLCAgMTIwLAorICAgICAgMTE5LCAgMTE4LCAgMTE3LCAg
MTE2LCAgMTE1LCAgMTE0LCAgMTEzLCAgMTEyLCAgMTExLCAgMTEwLAorICAgICAgMTA4LCAgMTA1
LCAgMTA0LCAgMTAzLCAgMTAyLCAgMTAxLCAgMTAwLCAgIDk4LCAgIDk3LCAgIDk2LAorICAgICAg
IDk1LCAgIDk0LCAgIDkzLCAgIDkyLCAgIDkxLCAgIDkwLCAgIDg5LCAgIDg4LCAgIDg3LCAgIDg2
LAorICAgICAgIDg1LCAgIDg0LCAgIDgzLCAgIDgyLCAgIDc4LCAgIDc0LCAgIDQ5LCAgIDQ0LCAg
IDQyLCAgIDM5LAorICAgICAgIDM2LCAgIDIzLCAgIDIwLCAgIDE3LCAgIDEyLCAgICA3LCAgICAz
LCAgNDQyLCAgNDQyLCAgNDQyLAorICAgICAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAg
NDQyLCAgNDQyLCAgNDQyLCAgNDQyLCAgNDQyLAorCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0
NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
CisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0
NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIs
ICA0NDIsICA0NDIsICA0NDIsCisgICAgICA0NDIsICA0NDIsICA0NDIsICA0NDIsICA0NDIKICAg
ICB9IDsKIAogLyogVGFibGUgb2YgYm9vbGVhbnMsIHRydWUgaWYgcnVsZSBjb3VsZCBtYXRjaCBl
b2wuICovCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfcnVsZV9jYW5fbWF0Y2hfZW9s
WzE1Nl0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X3J1bGVfY2FuX21hdGNoX2Vv
bFsxNDhdID0KICAgICB7ICAgMCwKLTAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMSwgMCwgMCwgICAgIH07CisgICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgICAg
IH07CiAKIC8qIFRoZSBpbnRlbnQgYmVoaW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB0aGF0IGl0J2xs
IGNhdGNoCiAgKiBhbnkgdXNlcyBvZiBSRUpFQ1Qgd2hpY2ggZmxleCBtaXNzZWQuCkBAIC04MTcs
NyArNzkyLDEwIEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGEKICNw
cmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDEwMikKICNlbmRpZgogCi0jZGVmaW5lIFlZX1VTRVJf
QUNUSU9OIHl5bHZhbC0+bGV4LmxpbmUgPSB5eWxpbmVubzsKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJ
T04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlsbG9jLT5maXJzdF9m
aWxlID0geXlsbG9jLT5sYXN0X2ZpbGUgPSB5eWNvbHVtbjsgXAorICAgIHl5bGxvYy0+Zmlyc3Rf
bGluZSA9IHl5bGxvYy0+bGFzdF9saW5lID0geXlsaW5lbm87CisKICNkZWZpbmUgWVlfSU5QVVQo
YnVmLCByZXN1bHQsIG1heF9zaXplKSBcCiAgICAgcmVzdWx0ID0gc3RyaW5nX2lucHV0KGJ1Ziwg
bWF4X3NpemUsIHl5c2Nhbm5lcik7CiAKQEAgLTgyNiw4ICs4MDQsNiBAQCBzdGF0aWMgaW50IGNo
ZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyCiBzdGF0aWMgaW50IHJlc2VydmVkX3dvcmQoeXlz
Y2FuX3QgeXlzY2FubmVyKTsKIAogI2RlZmluZSBJTklUSUFMIDAKLSNkZWZpbmUgQ09NTUVOVCAx
Ci0jZGVmaW5lIEZJRUxEUyAyCiAKICNkZWZpbmUgWVlfRVhUUkFfVFlQRSBUUGFyc2VDb250ZXh0
KgogCkBAIC04NjUsNiArODQxLDggQEAgc3RydWN0IHl5Z3V0c190CiAKICAgICBZWVNUWVBFICog
eXlsdmFsX3I7CiAKKyAgICBZWUxUWVBFICogeXlsbG9jX3I7CisKICAgICB9OyAvKiBlbmQgc3Ry
dWN0IHl5Z3V0c190ICovCiAKIHN0YXRpYyBpbnQgeXlfaW5pdF9nbG9iYWxzICh5eXNjYW5fdCB5
eXNjYW5uZXIgKTsKQEAgLTg3Myw2ICs4NTEsOCBAQCBzdGF0aWMgaW50IHl5X2luaXRfZ2xvYmFs
cyAoeXlzY2FuX3QgeXlzCiAgICAgICogZnJvbSBiaXNvbiBvdXRwdXQgaW4gc2VjdGlvbiAxLiov
CiAgICAgIyAgICBkZWZpbmUgeXlsdmFsIHl5Zy0+eXlsdmFsX3IKICAgICAKKyAgICAjICAgIGRl
ZmluZSB5eWxsb2MgeXlnLT55eWxsb2NfcgorICAgIAogaW50IHl5bGV4X2luaXQgKHl5c2Nhbl90
KiBzY2FubmVyKTsKIAogaW50IHl5bGV4X2luaXRfZXh0cmEgKFlZX0VYVFJBX1RZUEUgdXNlcl9k
ZWZpbmVkLHl5c2Nhbl90KiBzY2FubmVyKTsKQEAgLTkxMCw2ICs4OTAsMTAgQEAgWVlTVFlQRSAq
IHl5Z2V0X2x2YWwgKHl5c2Nhbl90IHl5c2Nhbm5lcgogCiB2b2lkIHl5c2V0X2x2YWwgKFlZU1RZ
UEUgKiB5eWx2YWxfcGFyYW0gLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCisgICAgICAgWVlMVFlQ
RSAqeXlnZXRfbGxvYyAoeXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAgCisgICAgICAgIHZvaWQg
eXlzZXRfbGxvYyAoWVlMVFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyICk7
CisgICAgCiAvKiBNYWNyb3MgYWZ0ZXIgdGhpcyBwb2ludCBjYW4gYWxsIGJlIG92ZXJyaWRkZW4g
YnkgdXNlciBkZWZpbml0aW9ucyBpbgogICogc2VjdGlvbiAxLgogICovCkBAIC05NDAsMTIgKzky
NCw2IEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCiAjZW5kaWYK
IAotICAgIHN0YXRpYyB2b2lkIHl5X3B1c2hfc3RhdGUgKGludCBuZXdfc3RhdGUgLHl5c2Nhbl90
IHl5c2Nhbm5lcik7Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgeXlfcG9wX3N0YXRlICh5eXNjYW5f
dCB5eXNjYW5uZXIgKTsKLSAgICAKLSAgICBzdGF0aWMgaW50IHl5X3RvcF9zdGF0ZSAoeXlzY2Fu
X3QgeXlzY2FubmVyICk7Ci0gICAgCiAvKiBBbW91bnQgb2Ygc3R1ZmYgdG8gc2x1cnAgdXAgd2l0
aCBlYWNoIHJlYWQuICovCiAjaWZuZGVmIFlZX1JFQURfQlVGX1NJWkUKICNkZWZpbmUgWVlfUkVB
RF9CVUZfU0laRSA4MTkyCkBAIC0xMDIyLDEwICsxMDAwLDEwIEBAIHN0YXRpYyBpbnQgaW5wdXQg
KHl5c2Nhbl90IHl5c2Nhbm5lciApOwogI2RlZmluZSBZWV9ERUNMX0lTX09VUlMgMQogCiBleHRl
cm4gaW50IHl5bGV4IFwKLSAgICAgICAgICAgICAgIChZWVNUWVBFICogeXlsdmFsX3BhcmFtICx5
eXNjYW5fdCB5eXNjYW5uZXIpOworICAgICAgICAgICAgICAgKFlZU1RZUEUgKiB5eWx2YWxfcGFy
YW0sWVlMVFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyKTsKIAogI2RlZmlu
ZSBZWV9ERUNMIGludCB5eWxleCBcCi0gICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5bHZhbF9w
YXJhbSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAgICAgICAgICAgICAgIChZWVNUWVBFICogeXls
dmFsX3BhcmFtLCBZWUxUWVBFICogeXlsbG9jX3BhcmFtICwgeXlzY2FuX3QgeXlzY2FubmVyKQog
I2VuZGlmIC8qICFZWV9ERUNMICovCiAKIC8qIENvZGUgZXhlY3V0ZWQgYXQgdGhlIGJlZ2lubmlu
ZyBvZiBlYWNoIHJ1bGUsIGFmdGVyIHl5dGV4dCBhbmQgeXlsZW5nCkBAIC0xMDUyLDEyICsxMDMw
LDEwIEBAIFlZX0RFQ0wKIAlyZWdpc3RlciBpbnQgeXlfYWN0OwogICAgIHN0cnVjdCB5eWd1dHNf
dCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKIAotICAgIFRQYXJzZUNvbnRl
eHQqIGNvbnRleHQgPSB5eWV4dHJhOwotCi0gICAgLyogU2luZ2xlLWxpbmUgY29tbWVudHMgKi8K
LQogICAgIHl5bHZhbCA9IHl5bHZhbF9wYXJhbTsKIAorICAgIHl5bGxvYyA9IHl5bGxvY19wYXJh
bTsKKwogCWlmICggIXl5Zy0+eXlfaW5pdCApCiAJCXsKIAkJeXlnLT55eV9pbml0ID0gMTsKQEAg
LTExMDksMTMgKzEwODUsMTMgQEAgeXlfbWF0Y2g6CiAJCQl3aGlsZSAoIHl5X2Noa1t5eV9iYXNl
W3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQkJewog
CQkJCXl5X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0J
CQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ1OSApCisJCQkJaWYgKCB5eV9jdXJyZW50X3N0
YXRlID49IDQ0MyApCiAJCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwog
CQkJCX0KIAkJCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0
YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJKyt5eV9jcDsKIAkJCX0KLQkJd2hpbGUg
KCB5eV9jdXJyZW50X3N0YXRlICE9IDQ1OCApOworCQl3aGlsZSAoIHl5X2N1cnJlbnRfc3RhdGUg
IT0gNDQyICk7CiAJCXl5X2NwID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19jcG9zOwogCQl5eV9j
dXJyZW50X3N0YXRlID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19zdGF0ZTsKIApAQCAtMTE0OSwx
OTggKzExMjUsMTk5IEBAIGRvX2FjdGlvbjoJLyogVGhpcyBsYWJlbCBpcyB1c2VkIG9ubHkgdG8K
IAogY2FzZSAxOgogWVlfUlVMRV9TRVRVUAotOworeyByZXR1cm4gSU5WQVJJQU5UOyB9CiAJWVlf
QlJFQUsKLS8qIE11bHRpLWxpbmUgY29tbWVudHMgKi8KIGNhc2UgMjoKIFlZX1JVTEVfU0VUVVAK
LXsgeXlfcHVzaF9zdGF0ZShDT01NRU5ULCB5eXNjYW5uZXIpOyB9Cit7IHJldHVybiBISUdIX1BS
RUNJU0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDM6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBN
RURJVU1fUFJFQ0lTSU9OOyB9CisJWVlfQlJFQUsKIGNhc2UgNDoKLS8qIHJ1bGUgNCBjYW4gbWF0
Y2ggZW9sICovCiBZWV9SVUxFX1NFVFVQCi07Cit7IHJldHVybiBMT1dfUFJFQ0lTSU9OOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgNToKIFlZX1JVTEVfU0VUVVAKLXsgeXlfcG9wX3N0YXRlKHl5c2Nhbm5l
cik7IH0KK3sgcmV0dXJuIFBSRUNJU0lPTjsgfQogCVlZX0JSRUFLCiBjYXNlIDY6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybihJTlZBUklBTlQpOyB9Cit7IHJldHVybiBBVFRSSUJVVEU7IH0KIAlZ
WV9CUkVBSwogY2FzZSA3OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSElHSF9QUkVDSVNJT04p
OyB9Cit7IHJldHVybiBDT05TVF9RVUFMOyB9CiAJWVlfQlJFQUsKIGNhc2UgODoKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuKE1FRElVTV9QUkVDSVNJT04pOyB9Cit7IHJldHVybiBVTklGT1JNOyB9
CiAJWVlfQlJFQUsKIGNhc2UgOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKExPV19QUkVDSVNJ
T04pOyB9Cit7IHJldHVybiBWQVJZSU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybihQUkVDSVNJT04pOyB9Cit7IHJldHVybiBCUkVBSzsgfQogCVlZX0JS
RUFLCiBjYXNlIDExOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oQVRUUklCVVRFKTsgfQoreyBy
ZXR1cm4gQ09OVElOVUU7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjoKIFlZX1JVTEVfU0VUVVAKLXsg
cmV0dXJuKENPTlNUX1FVQUwpOyB9Cit7IHJldHVybiBETzsgfQogCVlZX0JSRUFLCiBjYXNlIDEz
OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oVU5JRk9STSk7IH0KK3sgcmV0dXJuIEZPUjsgfQog
CVlZX0JSRUFLCiBjYXNlIDE0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oVkFSWUlORyk7IH0K
K3sgcmV0dXJuIFdISUxFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTU6CiBZWV9SVUxFX1NFVFVQCi17
IHJldHVybihCUkVBSyk7IH0KK3sgcmV0dXJuIElGOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTY6CiBZ
WV9SVUxFX1NFVFVQCi17IHJldHVybihDT05USU5VRSk7IH0KK3sgcmV0dXJuIEVMU0U7IH0KIAlZ
WV9CUkVBSwogY2FzZSAxNzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKERPKTsgfQoreyByZXR1
cm4gSU5fUVVBTDsgfQogCVlZX0JSRUFLCiBjYXNlIDE4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1
cm4oRk9SKTsgfQoreyByZXR1cm4gT1VUX1FVQUw7IH0KIAlZWV9CUkVBSwogY2FzZSAxOToKIFlZ
X1JVTEVfU0VUVVAKLXsgcmV0dXJuKFdISUxFKTsgfQoreyByZXR1cm4gSU5PVVRfUVVBTDsgfQog
CVlZX0JSRUFLCiBjYXNlIDIwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oSUYpOyB9Cit7IHJl
dHVybiBGTE9BVF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjE6CiBZWV9SVUxFX1NFVFVQCi17
IHJldHVybihFTFNFKTsgfQoreyByZXR1cm4gSU5UX1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAy
MjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKElOX1FVQUwpOyB9Cit7IHJldHVybiBWT0lEX1RZ
UEU7IH0KIAlZWV9CUkVBSwogY2FzZSAyMzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKE9VVF9R
VUFMKTsgfQoreyByZXR1cm4gQk9PTF9UWVBFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMjQ6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybihJTk9VVF9RVUFMKTsgfQoreyB5eWx2YWwtPmxleC5iID0gdHJ1
ZTsgIHJldHVybiBCT09MQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAyNToKIFlZX1JVTEVf
U0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuKEZMT0FUX1RZUEUp
OyB9Cit7IHl5bHZhbC0+bGV4LmIgPSBmYWxzZTsgcmV0dXJuIEJPT0xDT05TVEFOVDsgfQogCVlZ
X0JSRUFLCiBjYXNlIDI2OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUg
PSB0cnVlOyByZXR1cm4oSU5UX1RZUEUpOyB9Cit7IHJldHVybiBESVNDQVJEOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMjc6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRy
dWU7IHJldHVybihWT0lEX1RZUEUpOyB9Cit7IHJldHVybiBSRVRVUk47IH0KIAlZWV9CUkVBSwog
Y2FzZSAyODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsg
cmV0dXJuKEJPT0xfVFlQRSk7IH0KK3sgcmV0dXJuIE1BVFJJWDI7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAyOToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4oQk9P
TENPTlNUQU5UKTsgfQoreyByZXR1cm4gTUFUUklYMzsgfQogCVlZX0JSRUFLCiBjYXNlIDMwOgog
WVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5iID0gZmFsc2U7IHJldHVybihCT09MQ09OU1RB
TlQpOyB9Cit7IHJldHVybiBNQVRSSVg0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzE6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybihESVNDQVJEKTsgfQoreyByZXR1cm4gVkVDMjsgfQogCVlZX0JSRUFL
CiBjYXNlIDMyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUkVUVVJOKTsgfQoreyByZXR1cm4g
VkVDMzsgfQogCVlZX0JSRUFLCiBjYXNlIDMzOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5s
ZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oTUFUUklYMik7IH0KK3sgcmV0dXJuIFZFQzQ7IH0K
IAlZWV9CUkVBSwogY2FzZSAzNDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJU
eXBlID0gdHJ1ZTsgcmV0dXJuKE1BVFJJWDMpOyB9Cit7IHJldHVybiBJVkVDMjsgfQogCVlZX0JS
RUFLCiBjYXNlIDM1OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSB0
cnVlOyByZXR1cm4oTUFUUklYNCk7IH0KK3sgcmV0dXJuIElWRUMzOyB9CiAJWVlfQlJFQUsKIGNh
c2UgMzY6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJl
dHVybiAoVkVDMik7IH0KK3sgcmV0dXJuIElWRUM0OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzc6CiBZ
WV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVD
Myk7IH0KK3sgcmV0dXJuIEJWRUMyOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzg6CiBZWV9SVUxFX1NF
VFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoVkVDNCk7IH0KK3sg
cmV0dXJuIEJWRUMzOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzk6CiBZWV9SVUxFX1NFVFVQCi17IGNv
bnRleHQtPmxleEFmdGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzIpOyB9Cit7IHJldHVybiBC
VkVDNDsgfQogCVlZX0JSRUFLCiBjYXNlIDQwOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5s
ZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4gKElWRUMzKTsgfQoreyByZXR1cm4gU0FNUExFUjJE
OyB9CiAJWVlfQlJFQUsKIGNhc2UgNDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFm
dGVyVHlwZSA9IHRydWU7IHJldHVybiAoSVZFQzQpOyB9Cit7IHJldHVybiBTQU1QTEVSQ1VCRTsg
fQogCVlZX0JSRUFLCiBjYXNlIDQyOgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRl
clR5cGUgPSB0cnVlOyByZXR1cm4gKEJWRUMyKTsgfQoreyByZXR1cm4gU0FNUExFUl9FWFRFUk5B
TF9PRVM7IH0KIAlZWV9CUkVBSwogY2FzZSA0MzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDMyk7IH0KK3sgcmV0dXJuIFNBTVBMRVIy
RFJFQ1Q7IH0KIAlZWV9CUkVBSwogY2FzZSA0NDoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIChCVkVDNCk7IH0KK3sgcmV0dXJuIFNUUlVDVDsg
fQogCVlZX0JSRUFLCiBjYXNlIDQ1OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT5sZXhBZnRl
clR5cGUgPSB0cnVlOyByZXR1cm4gU0FNUExFUjJEOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3Jk
KHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NjoKIFlZX1JVTEVfU0VUVVAKLXsgY29u
dGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJDVUJFOyB9Cit7IHJldHVy
biByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NzoKIFlZX1JV
TEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBlID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVJf
RVhURVJOQUxfT0VTOyB9Cit7IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KIAlZ
WV9CUkVBSwogY2FzZSA0ODoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+bGV4QWZ0ZXJUeXBl
ID0gdHJ1ZTsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KK3sgcmV0dXJuIHJlc2VydmVkX3dvcmQo
eXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCiBjYXNlIDQ5OgogWVlfUlVMRV9TRVRVUAoteyBjb250
ZXh0LT5sZXhBZnRlclR5cGUgPSB0cnVlOyByZXR1cm4oU1RSVUNUKTsgfQoreyByZXR1cm4gcmVz
ZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNTA6CiBZWV9SVUxFX1NF
VFVQCkBAIC0xNTE2LDI2NiArMTQ5MywyMjggQEAgWVlfUlVMRV9TRVRVUAogCVlZX0JSRUFLCiBj
YXNlIDkzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIp
OyB9Cit7CisgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOyAK
KyAgIHJldHVybiBjaGVja190eXBlKHl5c2Nhbm5lcik7Cit9CiAJWVlfQlJFQUsKIGNhc2UgOTQ6
CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5lcik7IH0KK3sg
eXlsdmFsLT5sZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyBy
ZXR1cm4gSU5UQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5NToKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQoreyB5eWx2YWwtPmxleC5pID0g
c3RhdGljX2Nhc3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybiBJTlRDT05TVEFO
VDsgfQogCVlZX0JSRUFLCiBjYXNlIDk2OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gcmVzZXJ2
ZWRfd29yZCh5eXNjYW5uZXIpOyB9Cit7IHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+
KHN0cnRvbCh5eXRleHQsIDAsIDApKTsgcmV0dXJuIElOVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsK
IGNhc2UgOTc6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5l
cik7IH0KK3sgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRl
eHQpKTsgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5ODoKIFlZX1JV
TEVfU0VUVVAKLXsKLSAgIHl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5nKHl5dGV4
dCk7IAotICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKLX0KK3sgeXlsdmFsLT5sZXgu
ZiA9IHN0YXRpY19jYXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuIEZMT0FUQ09O
U1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSA5OToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5s
ZXguaSA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKHl5dGV4dCwgMCwgMCkpOyByZXR1cm4oSU5U
Q09OU1RBTlQpOyB9Cit7IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9k
b3QoeXl0ZXh0KSk7IHJldHVybiBGTE9BVENPTlNUQU5UOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTAw
OgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0
b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIEFERF9B
U1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDE6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQt
PmVycm9yKHl5bGluZW5vLCAiSW52YWxpZCBPY3RhbCBudW1iZXIuIiwgeXl0ZXh0KTsgY29udGV4
dC0+cmVjb3ZlcigpOyByZXR1cm4gMDt9Cit7IHJldHVybiBTVUJfQVNTSUdOOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMTAyOgogWVlfUlVMRV9TRVRVUAoteyB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nh
c3Q8aW50PihzdHJ0b2woeXl0ZXh0LCAwLCAwKSk7IHJldHVybihJTlRDT05TVEFOVCk7IH0KK3sg
cmV0dXJuIE1VTF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDM6CiBZWV9SVUxFX1NFVFVQ
Ci17IHl5bHZhbC0+bGV4LmYgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZl9kb3QoeXl0ZXh0KSk7
IHJldHVybihGTE9BVENPTlNUQU5UKTsgfQoreyByZXR1cm4gRElWX0FTU0lHTjsgfQogCVlZX0JS
RUFLCiBjYXNlIDEwNDoKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguZiA9IHN0YXRpY19j
YXN0PGZsb2F0PihhdG9mX2RvdCh5eXRleHQpKTsgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOyB9Cit7
IHJldHVybiBNT0RfQVNTSUdOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTA1OgogWVlfUlVMRV9TRVRV
UAoteyB5eWx2YWwtPmxleC5mID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2ZfZG90KHl5dGV4dCkp
OyByZXR1cm4oRkxPQVRDT05TVEFOVCk7IH0KK3sgcmV0dXJuIExFRlRfQVNTSUdOOyB9CiAJWVlf
QlJFQUsKIGNhc2UgMTA2OgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKEFERF9BU1NJR04pOyB9
Cit7IHJldHVybiBSSUdIVF9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDc6CiBZWV9SVUxF
X1NFVFVQCi17ICByZXR1cm4oU1VCX0FTU0lHTik7IH0KK3sgcmV0dXJuIEFORF9BU1NJR047IH0K
IAlZWV9CUkVBSwogY2FzZSAxMDg6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTVVMX0FTU0lH
Tik7IH0KK3sgcmV0dXJuIFhPUl9BU1NJR047IH0KIAlZWV9CUkVBSwogY2FzZSAxMDk6CiBZWV9S
VUxFX1NFVFVQCi17ICByZXR1cm4oRElWX0FTU0lHTik7IH0KK3sgcmV0dXJuIE9SX0FTU0lHTjsg
fQogCVlZX0JSRUFLCiBjYXNlIDExMDoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihNT0RfQVNT
SUdOKTsgfQoreyByZXR1cm4gSU5DX09QOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTExOgogWVlfUlVM
RV9TRVRVUAoteyAgcmV0dXJuKExFRlRfQVNTSUdOKTsgfQoreyByZXR1cm4gREVDX09QOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMTEyOgogWVlfUlVMRV9TRVRVUAoteyAgcmV0dXJuKFJJR0hUX0FTU0lH
Tik7IH0KK3sgcmV0dXJuIEFORF9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExMzoKIFlZX1JVTEVf
U0VUVVAKLXsgIHJldHVybihBTkRfQVNTSUdOKTsgfQoreyByZXR1cm4gT1JfT1A7IH0KIAlZWV9C
UkVBSwogY2FzZSAxMTQ6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oWE9SX0FTU0lHTik7IH0K
K3sgcmV0dXJuIFhPUl9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNToKIFlZX1JVTEVfU0VUVVAK
LXsgIHJldHVybihPUl9BU1NJR04pOyB9Cit7IHJldHVybiBMRV9PUDsgfQogCVlZX0JSRUFLCiBj
YXNlIDExNjoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihJTkNfT1ApOyB9Cit7IHJldHVybiBH
RV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExNzoKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihE
RUNfT1ApOyB9Cit7IHJldHVybiBFUV9PUDsgfQogCVlZX0JSRUFLCiBjYXNlIDExODoKIFlZX1JV
TEVfU0VUVVAKLXsgIHJldHVybihBTkRfT1ApOyB9Cit7IHJldHVybiBORV9PUDsgfQogCVlZX0JS
RUFLCiBjYXNlIDExOToKIFlZX1JVTEVfU0VUVVAKLXsgIHJldHVybihPUl9PUCk7IH0KK3sgcmV0
dXJuIExFRlRfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAxMjA6CiBZWV9SVUxFX1NFVFVQCi17ICBy
ZXR1cm4oWE9SX09QKTsgfQoreyByZXR1cm4gUklHSFRfT1A7IH0KIAlZWV9CUkVBSwogY2FzZSAx
MjE6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTEVfT1ApOyB9Cit7IHJldHVybiBTRU1JQ09M
T047IH0KIAlZWV9CUkVBSwogY2FzZSAxMjI6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oR0Vf
T1ApOyB9Cit7IHJldHVybiBMRUZUX0JSQUNFOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTIzOgogWVlf
UlVMRV9TRVRVUAoteyAgcmV0dXJuKEVRX09QKTsgfQoreyByZXR1cm4gUklHSFRfQlJBQ0U7IH0K
IAlZWV9CUkVBSwogY2FzZSAxMjQ6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oTkVfT1ApOyB9
Cit7IHJldHVybiBDT01NQTsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNToKIFlZX1JVTEVfU0VUVVAK
LXsgIHJldHVybihMRUZUX09QKTsgfQoreyByZXR1cm4gQ09MT047IH0KIAlZWV9CUkVBSwogY2Fz
ZSAxMjY6CiBZWV9SVUxFX1NFVFVQCi17ICByZXR1cm4oUklHSFRfT1ApOyB9Cit7IHJldHVybiBF
UVVBTDsgfQogCVlZX0JSRUFLCiBjYXNlIDEyNzoKIFlZX1JVTEVfU0VUVVAKLXsgY29udGV4dC0+
bGV4QWZ0ZXJUeXBlID0gZmFsc2U7IHJldHVybihTRU1JQ09MT04pOyB9Cit7IHJldHVybiBMRUZU
X1BBUkVOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTI4OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0
LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgcmV0dXJuKExFRlRfQlJBQ0UpOyB9Cit7IHJldHVybiBS
SUdIVF9QQVJFTjsgfQogCVlZX0JSRUFLCiBjYXNlIDEyOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0
dXJuKFJJR0hUX0JSQUNFKTsgfQoreyByZXR1cm4gTEVGVF9CUkFDS0VUOyB9CiAJWVlfQlJFQUsK
IGNhc2UgMTMwOgogWVlfUlVMRV9TRVRVUAoteyBpZiAoY29udGV4dC0+aW5UeXBlUGFyZW4pIGNv
bnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oQ09NTUEpOyB9Cit7IHJldHVybiBS
SUdIVF9CUkFDS0VUOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMxOgogWVlfUlVMRV9TRVRVUAoteyBy
ZXR1cm4oQ09MT04pOyB9Cit7IHJldHVybiBET1Q7IH0KIAlZWV9CUkVBSwogY2FzZSAxMzI6CiBZ
WV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmxleEFmdGVyVHlwZSA9IGZhbHNlOyByZXR1cm4oRVFV
QUwpOyB9Cit7IHJldHVybiBCQU5HOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTMzOgogWVlfUlVMRV9T
RVRVUAoteyBjb250ZXh0LT5sZXhBZnRlclR5cGUgPSBmYWxzZTsgY29udGV4dC0+aW5UeXBlUGFy
ZW4gPSB0cnVlOyByZXR1cm4oTEVGVF9QQVJFTik7IH0KK3sgcmV0dXJuIERBU0g7IH0KIAlZWV9C
UkVBSwogY2FzZSAxMzQ6CiBZWV9SVUxFX1NFVFVQCi17IGNvbnRleHQtPmluVHlwZVBhcmVuID0g
ZmFsc2U7IHJldHVybihSSUdIVF9QQVJFTik7IH0KK3sgcmV0dXJuIFRJTERFOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMTM1OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oTEVGVF9CUkFDS0VUKTsgfQor
eyByZXR1cm4gUExVUzsgfQogCVlZX0JSRUFLCiBjYXNlIDEzNjoKIFlZX1JVTEVfU0VUVVAKLXsg
cmV0dXJuKFJJR0hUX0JSQUNLRVQpOyB9Cit7IHJldHVybiBTVEFSOyB9CiAJWVlfQlJFQUsKIGNh
c2UgMTM3OgogWVlfUlVMRV9TRVRVUAoteyBCRUdJTihGSUVMRFMpOyAgcmV0dXJuKERPVCk7IH0K
K3sgcmV0dXJuIFNMQVNIOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTM4OgogWVlfUlVMRV9TRVRVUAot
eyByZXR1cm4oQkFORyk7IH0KK3sgcmV0dXJuIFBFUkNFTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAx
Mzk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihEQVNIKTsgfQoreyByZXR1cm4gTEVGVF9BTkdM
RTsgfQogCVlZX0JSRUFLCiBjYXNlIDE0MDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFRJTERF
KTsgfQoreyByZXR1cm4gUklHSFRfQU5HTEU7IH0KIAlZWV9CUkVBSwogY2FzZSAxNDE6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybihQTFVTKTsgfQoreyByZXR1cm4gVkVSVElDQUxfQkFSOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgMTQyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oU1RBUik7IH0KK3sg
cmV0dXJuIENBUkVUOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTQzOgogWVlfUlVMRV9TRVRVUAoteyBy
ZXR1cm4oU0xBU0gpOyB9Cit7IHJldHVybiBBTVBFUlNBTkQ7IH0KIAlZWV9CUkVBSwogY2FzZSAx
NDQ6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihQRVJDRU5UKTsgfQoreyByZXR1cm4gUVVFU1RJ
T047IH0KIAlZWV9CUkVBSwogY2FzZSAxNDU6CisvKiBydWxlIDE0NSBjYW4gbWF0Y2ggZW9sICov
CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybihMRUZUX0FOR0xFKTsgfQotCVlZX0JSRUFLCi1jYXNl
IDE0NjoKLVlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFJJR0hUX0FOR0xFKTsgfQotCVlZX0JSRUFL
Ci1jYXNlIDE0NzoKLVlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuKFZFUlRJQ0FMX0JBUik7IH0KLQlZ
WV9CUkVBSwotY2FzZSAxNDg6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihDQVJFVCk7IH0KLQlZ
WV9CUkVBSwotY2FzZSAxNDk6Ci1ZWV9SVUxFX1NFVFVQCi17IHJldHVybihBTVBFUlNBTkQpOyB9
Ci0JWVlfQlJFQUsKLWNhc2UgMTUwOgotWVlfUlVMRV9TRVRVUAoteyByZXR1cm4oUVVFU1RJT04p
OyB9Ci0JWVlfQlJFQUsKLWNhc2UgMTUxOgotWVlfUlVMRV9TRVRVUAoteyAKLSAgICBCRUdJTihJ
TklUSUFMKTsKLSAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQp
OyAKLSAgICByZXR1cm4gRklFTERfU0VMRUNUSU9OOwotfQotCVlZX0JSRUFLCi1jYXNlIDE1MjoK
LVlZX1JVTEVfU0VUVVAKLXt9Ci0JWVlfQlJFQUsKLWNhc2UgMTUzOgotLyogcnVsZSAxNTMgY2Fu
IG1hdGNoIGVvbCAqLwotWVlfUlVMRV9TRVRVUAoteyAgfQoreyB9CiAJWVlfQlJFQUsKIGNhc2Ug
WVlfU1RBVEVfRU9GKElOSVRJQUwpOgotY2FzZSBZWV9TVEFURV9FT0YoQ09NTUVOVCk6Ci1jYXNl
IFlZX1NUQVRFX0VPRihGSUVMRFMpOgoteyBjb250ZXh0LT5BZnRlckVPRiA9IHRydWU7IHl5dGVy
bWluYXRlKCk7IH0KK3sgeXl0ZXJtaW5hdGUoKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE1NDoKK2Nh
c2UgMTQ2OgogWVlfUlVMRV9TRVRVUAoteyBjb250ZXh0LT53YXJuaW5nKHl5bGluZW5vLCAiVW5r
bm93biBjaGFyIiwgeXl0ZXh0LCAiIik7IHJldHVybiAwOyB9Cit7IGFzc2VydChmYWxzZSk7IHJl
dHVybiAwOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTU1OgorY2FzZSAxNDc6CiBZWV9SVUxFX1NFVFVQ
CiBFQ0hPOwogCVlZX0JSRUFLCkBAIC0yMDcxLDcgKzIwMTAsNyBAQCBzdGF0aWMgaW50IHl5X2dl
dF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgCiAJCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3Vy
cmVudF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJCXsKIAkJCXl5X2N1
cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCQlpZiAoIHl5
X2N1cnJlbnRfc3RhdGUgPj0gNDU5ICkKKwkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA0NDMg
KQogCQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJfQogCQl5eV9j
dXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWdu
ZWQgaW50KSB5eV9jXTsKQEAgLTIxMDAsMTEgKzIwMzksMTEgQEAgc3RhdGljIGludCB5eV9nZXRf
bmV4dF9idWZmZXIgKHl5c2Nhbl90IAogCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3VycmVu
dF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJewogCQl5eV9jdXJyZW50
X3N0YXRlID0gKGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQlpZiAoIHl5X2N1cnJl
bnRfc3RhdGUgPj0gNDU5ICkKKwkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDQ0MyApCiAJCQl5
eV9jID0geXlfbWV0YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJfQogCXl5X2N1cnJlbnRfc3Rh
dGUgPSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5
X2NdOwotCXl5X2lzX2phbSA9ICh5eV9jdXJyZW50X3N0YXRlID09IDQ1OCk7CisJeXlfaXNfamFt
ID0gKHl5X2N1cnJlbnRfc3RhdGUgPT0gNDQyKTsKIAogCXJldHVybiB5eV9pc19qYW0gPyAwIDog
eXlfY3VycmVudF9zdGF0ZTsKIH0KQEAgLTI1NDgsNDYgKzI0ODcsNiBAQCBZWV9CVUZGRVJfU1RB
VEUgeXlfc2Nhbl9ieXRlcyAgKHl5Y29uc3QgCiAJcmV0dXJuIGI7CiB9CiAKLSAgICBzdGF0aWMg
dm9pZCB5eV9wdXNoX3N0YXRlIChpbnQgIG5ld19zdGF0ZSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikK
LXsKLSAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5u
ZXI7Ci0JaWYgKCB5eWctPnl5X3N0YXJ0X3N0YWNrX3B0ciA+PSB5eWctPnl5X3N0YXJ0X3N0YWNr
X2RlcHRoICkKLQkJewotCQl5eV9zaXplX3QgbmV3X3NpemU7Ci0KLQkJeXlnLT55eV9zdGFydF9z
dGFja19kZXB0aCArPSBZWV9TVEFSVF9TVEFDS19JTkNSOwotCQluZXdfc2l6ZSA9IHl5Zy0+eXlf
c3RhcnRfc3RhY2tfZGVwdGggKiBzaXplb2YoIGludCApOwotCi0JCWlmICggISB5eWctPnl5X3N0
YXJ0X3N0YWNrICkKLQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sgPSAoaW50ICopIHl5YWxsb2MobmV3
X3NpemUgLHl5c2Nhbm5lciApOwotCi0JCWVsc2UKLQkJCXl5Zy0+eXlfc3RhcnRfc3RhY2sgPSAo
aW50ICopIHl5cmVhbGxvYygodm9pZCAqKSB5eWctPnl5X3N0YXJ0X3N0YWNrLG5ld19zaXplICx5
eXNjYW5uZXIgKTsKLQotCQlpZiAoICEgeXlnLT55eV9zdGFydF9zdGFjayApCi0JCQlZWV9GQVRB
TF9FUlJPUiggIm91dCBvZiBtZW1vcnkgZXhwYW5kaW5nIHN0YXJ0LWNvbmRpdGlvbiBzdGFjayIg
KTsKLQkJfQotCi0JeXlnLT55eV9zdGFydF9zdGFja1t5eWctPnl5X3N0YXJ0X3N0YWNrX3B0cisr
XSA9IFlZX1NUQVJUOwotCi0JQkVHSU4obmV3X3N0YXRlKTsKLX0KLQotICAgIHN0YXRpYyB2b2lk
IHl5X3BvcF9zdGF0ZSAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKLXsKLSAgICBzdHJ1Y3QgeXlndXRz
X3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Ci0JaWYgKCAtLXl5Zy0+eXlf
c3RhcnRfc3RhY2tfcHRyIDwgMCApCi0JCVlZX0ZBVEFMX0VSUk9SKCAic3RhcnQtY29uZGl0aW9u
IHN0YWNrIHVuZGVyZmxvdyIgKTsKLQotCUJFR0lOKHl5Zy0+eXlfc3RhcnRfc3RhY2tbeXlnLT55
eV9zdGFydF9zdGFja19wdHJdKTsKLX0KLQotICAgIHN0YXRpYyBpbnQgeXlfdG9wX3N0YXRlICAo
eXlzY2FuX3QgeXlzY2FubmVyKQotewotICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1
Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKLQlyZXR1cm4geXlnLT55eV9zdGFydF9zdGFja1t5eWct
Pnl5X3N0YXJ0X3N0YWNrX3B0ciAtIDFdOwotfQotCiAjaWZuZGVmIFlZX0VYSVRfRkFJTFVSRQog
I2RlZmluZSBZWV9FWElUX0ZBSUxVUkUgMgogI2VuZGlmCkBAIC0yNzczLDYgKzI2NzIsMTggQEAg
dm9pZCB5eXNldF9sdmFsIChZWVNUWVBFICogIHl5bHZhbF9wYXJhbQogICAgIHl5bHZhbCA9IHl5
bHZhbF9wYXJhbTsKIH0KIAorWVlMVFlQRSAqeXlnZXRfbGxvYyAgKHl5c2Nhbl90IHl5c2Nhbm5l
cikKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNj
YW5uZXI7CisgICAgcmV0dXJuIHl5bGxvYzsKK30KKyAgICAKK3ZvaWQgeXlzZXRfbGxvYyAoWVlM
VFlQRSAqICB5eWxsb2NfcGFyYW0gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0
IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAgIHl5bGxv
YyA9IHl5bGxvY19wYXJhbTsKK30KKyAgICAKIC8qIFVzZXItdmlzaWJsZSBBUEkgKi8KIAogLyog
eXlsZXhfaW5pdCBpcyBzcGVjaWFsIGJlY2F1c2UgaXQgY3JlYXRlcyB0aGUgc2Nhbm5lciBpdHNl
bGYsIHNvIGl0IGlzCkBAIC0yOTU0LDcgKzI4NjUsOCBAQCB5eV9zaXplX3Qgc3RyaW5nX2lucHV0
KGNoYXIqIGJ1ZiwgeXlfc2l6CiAgICAgeXlfc2l6ZV90IGxlbiA9IHRva2VuLnR5cGUgPT0gcHA6
OlRva2VuOjpMQVNUID8gMCA6IHRva2VuLnRleHQuc2l6ZSgpOwogICAgIGlmIChsZW4gPCBtYXhf
c2l6ZSkKICAgICAgICAgbWVtY3B5KGJ1ZiwgdG9rZW4udGV4dC5jX3N0cigpLCBsZW4pOwotICAg
IHl5c2V0X2xpbmVubyhFbmNvZGVTb3VyY2VMb2ModG9rZW4ubG9jYXRpb24uZmlsZSwgdG9rZW4u
bG9jYXRpb24ubGluZSkseXlzY2FubmVyKTsKKyAgICB5eXNldF9jb2x1bW4odG9rZW4ubG9jYXRp
b24uZmlsZSx5eXNjYW5uZXIpOworICAgIHl5c2V0X2xpbmVubyh0b2tlbi5sb2NhdGlvbi5saW5l
LHl5c2Nhbm5lcik7CiAKICAgICBpZiAobGVuID49IG1heF9zaXplKQogICAgICAgICBZWV9GQVRB
TF9FUlJPUigiSW5wdXQgYnVmZmVyIG92ZXJmbG93Iik7CkBAIC0yOTY4LDEyICsyODgwLDEwIEBA
IGludCBjaGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIAogICAgIGludCB0b2tl
biA9IElERU5USUZJRVI7CiAgICAgVFN5bWJvbCogc3ltYm9sID0geXlleHRyYS0+c3ltYm9sVGFi
bGUuZmluZCh5eXRleHQpOwotICAgIGlmICh5eWV4dHJhLT5sZXhBZnRlclR5cGUgPT0gZmFsc2Ug
JiYgc3ltYm9sICYmIHN5bWJvbC0+aXNWYXJpYWJsZSgpKSB7CisgICAgaWYgKHN5bWJvbCAmJiBz
eW1ib2wtPmlzVmFyaWFibGUoKSkgewogICAgICAgICBUVmFyaWFibGUqIHZhcmlhYmxlID0gc3Rh
dGljX2Nhc3Q8VFZhcmlhYmxlKj4oc3ltYm9sKTsKLSAgICAgICAgaWYgKHZhcmlhYmxlLT5pc1Vz
ZXJUeXBlKCkpIHsKLSAgICAgICAgICAgIHl5ZXh0cmEtPmxleEFmdGVyVHlwZSA9IHRydWU7Cisg
ICAgICAgIGlmICh2YXJpYWJsZS0+aXNVc2VyVHlwZSgpKQogICAgICAgICAgICAgdG9rZW4gPSBU
WVBFX05BTUU7Ci0gICAgICAgIH0KICAgICB9CiAgICAgeXlsdmFsLT5sZXguc3ltYm9sID0gc3lt
Ym9sOwogICAgIHJldHVybiB0b2tlbjsKQEAgLTI5ODIsMjIgKzI4OTIsMTEgQEAgaW50IGNoZWNr
X3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5
eXNjYW5uZXIpIHsKICAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3Qq
KSB5eXNjYW5uZXI7CiAKLSAgICB5eWV4dHJhLT5lcnJvcih5eWxpbmVubywgIklsbGVnYWwgdXNl
IG9mIHJlc2VydmVkIHdvcmQiLCB5eXRleHQsICIiKTsKKyAgICB5eWV4dHJhLT5lcnJvcigqeXls
bG9jLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwgIiIpOwogICAgIHl5
ZXh0cmEtPnJlY292ZXIoKTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCB5eWVycm9yKFRQYXJz
ZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbikgewotICAgIHN0cnVjdCB5eWd1
dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPnNjYW5uZXI7Ci0KLSAgICBp
ZiAoY29udGV4dC0+QWZ0ZXJFT0YpIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoeXlsaW5lbm8s
IHJlYXNvbiwgInVuZXhwZWN0ZWQgRU9GIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29udGV4
dC0+ZXJyb3IoeXlsaW5lbm8sIHJlYXNvbiwgeXl0ZXh0KTsKLSAgICB9Ci0gICAgY29udGV4dC0+
cmVjb3ZlcigpOwotfQotCiBpbnQgZ2xzbGFuZ19pbml0aWFsaXplKFRQYXJzZUNvbnRleHQqIGNv
bnRleHQpIHsKICAgICB5eXNjYW5fdCBzY2FubmVyID0gTlVMTDsKICAgICBpZiAoeXlsZXhfaW5p
dF9leHRyYShjb250ZXh0LCZzY2FubmVyKSkKQEAgLTMwMjAsOCArMjkxOSw4IEBAIGludCBnbHNs
YW5nX2ZpbmFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnQKIGludCBnbHNsYW5nX3NjYW4oc2l6ZV90
IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAog
ICAgICAgICAgICAgICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAgeXlyZXN0YXJ0
KE5VTEwsY29udGV4dC0+c2Nhbm5lcik7Ci0gICAgeXlzZXRfbGluZW5vKEVuY29kZVNvdXJjZUxv
YygwLCAxKSxjb250ZXh0LT5zY2FubmVyKTsKLSAgICBjb250ZXh0LT5BZnRlckVPRiA9IGZhbHNl
OworICAgIHl5c2V0X2NvbHVtbigwLGNvbnRleHQtPnNjYW5uZXIpOworICAgIHl5c2V0X2xpbmVu
bygxLGNvbnRleHQtPnNjYW5uZXIpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBwcmVwcm9jZXNzb3Iu
CiAgICAgaWYgKCFjb250ZXh0LT5wcmVwcm9jZXNzb3IuaW5pdChjb3VudCwgc3RyaW5nLCBsZW5n
dGgpKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdf
dGFiLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvZ2xzbGFuZ190YWIuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Niw3ICs1Niw3IEBACiAjZGVmaW5lIFlZUFVSRSAxCiAKIC8qIFVzaW5nIGxvY2F0aW9ucy4gICov
Ci0jZGVmaW5lIFlZTFNQX05FRURFRCAwCisjZGVmaW5lIFlZTFNQX05FRURFRCAxCiAKIAogCkBA
IC0xMTMsNTIgKzExMyw1MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0gMzAyLAogICAgICBJTlRD
T05TVEFOVCA9IDMwMywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAotICAgICBGSUVMRF9TRUxF
Q1RJT04gPSAzMDUsCi0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJR0hUX09QID0gMzA3LAot
ICAgICBJTkNfT1AgPSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAgICAgTEVfT1AgPSAzMTAs
Ci0gICAgIEdFX09QID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAgICAgTkVfT1AgPSAzMTMs
Ci0gICAgIEFORF9PUCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0gICAgIFhPUl9PUCA9IDMx
NiwKLSAgICAgTVVMX0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lHTiA9IDMxOCwKLSAgICAg
QUREX0FTU0lHTiA9IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwKLSAgICAgTEVGVF9BU1NJ
R04gPSAzMjEsCi0gICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAgQU5EX0FTU0lHTiA9IDMy
MywKLSAgICAgWE9SX0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdOID0gMzI1LAotICAgICBT
VUJfQVNTSUdOID0gMzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAotICAgICBSSUdIVF9QQVJF
TiA9IDMyOCwKLSAgICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBSSUdIVF9CUkFDS0VUID0g
MzMwLAotICAgICBMRUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9CUkFDRSA9IDMzMiwKLSAg
ICAgRE9UID0gMzMzLAotICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09MT04gPSAzMzUsCi0gICAg
IEVRVUFMID0gMzM2LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAgIEJBTkcgPSAzMzgsCi0g
ICAgIERBU0ggPSAzMzksCi0gICAgIFRJTERFID0gMzQwLAotICAgICBQTFVTID0gMzQxLAotICAg
ICBTVEFSID0gMzQyLAotICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVSQ0VOVCA9IDM0NCwKLSAg
ICAgTEVGVF9BTkdMRSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAzNDYsCi0gICAgIFZFUlRJ
Q0FMX0JBUiA9IDM0NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFNUEVSU0FORCA9IDM0OSwK
LSAgICAgUVVFU1RJT04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwKKyAgICAgUklHSFRfT1Ag
PSAzMDYsCisgICAgIElOQ19PUCA9IDMwNywKKyAgICAgREVDX09QID0gMzA4LAorICAgICBMRV9P
UCA9IDMwOSwKKyAgICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0gMzExLAorICAgICBORV9P
UCA9IDMxMiwKKyAgICAgQU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9IDMxNCwKKyAgICAgWE9S
X09QID0gMzE1LAorICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBESVZfQVNTSUdOID0gMzE3
LAorICAgICBBRERfQVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdOID0gMzE5LAorICAgICBM
RUZUX0FTU0lHTiA9IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIxLAorICAgICBBTkRfQVNT
SUdOID0gMzIyLAorICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBPUl9BU1NJR04gPSAzMjQs
CisgICAgIFNVQl9BU1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4gPSAzMjYsCisgICAgIFJJ
R0hUX1BBUkVOID0gMzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgsCisgICAgIFJJR0hUX0JS
QUNLRVQgPSAzMjksCisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAgIFJJR0hUX0JSQUNFID0g
MzMxLAorICAgICBET1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMzLAorICAgICBDT0xPTiA9IDMz
NCwKKyAgICAgRVFVQUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMzNiwKKyAgICAgQkFORyA9
IDMzNywKKyAgICAgREFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzksCisgICAgIFBMVVMgPSAz
NDAsCisgICAgIFNUQVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAorICAgICBQRVJDRU5UID0g
MzQzLAorICAgICBMRUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9BTkdMRSA9IDM0NSwKKyAg
ICAgVkVSVElDQUxfQkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywKKyAgICAgQU1QRVJTQU5E
ID0gMzQ4LAorICAgICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRpZgogLyogVG9rZW5zLiAg
Ki8KQEAgLTIwOSw1MiArMjA4LDUxIEBACiAjZGVmaW5lIEZMT0FUQ09OU1RBTlQgMzAyCiAjZGVm
aW5lIElOVENPTlNUQU5UIDMwMwogI2RlZmluZSBCT09MQ09OU1RBTlQgMzA0Ci0jZGVmaW5lIEZJ
RUxEX1NFTEVDVElPTiAzMDUKLSNkZWZpbmUgTEVGVF9PUCAzMDYKLSNkZWZpbmUgUklHSFRfT1Ag
MzA3Ci0jZGVmaW5lIElOQ19PUCAzMDgKLSNkZWZpbmUgREVDX09QIDMwOQotI2RlZmluZSBMRV9P
UCAzMTAKLSNkZWZpbmUgR0VfT1AgMzExCi0jZGVmaW5lIEVRX09QIDMxMgotI2RlZmluZSBORV9P
UCAzMTMKLSNkZWZpbmUgQU5EX09QIDMxNAotI2RlZmluZSBPUl9PUCAzMTUKLSNkZWZpbmUgWE9S
X09QIDMxNgotI2RlZmluZSBNVUxfQVNTSUdOIDMxNwotI2RlZmluZSBESVZfQVNTSUdOIDMxOAot
I2RlZmluZSBBRERfQVNTSUdOIDMxOQotI2RlZmluZSBNT0RfQVNTSUdOIDMyMAotI2RlZmluZSBM
RUZUX0FTU0lHTiAzMjEKLSNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMgotI2RlZmluZSBBTkRfQVNT
SUdOIDMyMwotI2RlZmluZSBYT1JfQVNTSUdOIDMyNAotI2RlZmluZSBPUl9BU1NJR04gMzI1Ci0j
ZGVmaW5lIFNVQl9BU1NJR04gMzI2Ci0jZGVmaW5lIExFRlRfUEFSRU4gMzI3Ci0jZGVmaW5lIFJJ
R0hUX1BBUkVOIDMyOAotI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI5Ci0jZGVmaW5lIFJJR0hUX0JS
QUNLRVQgMzMwCi0jZGVmaW5lIExFRlRfQlJBQ0UgMzMxCi0jZGVmaW5lIFJJR0hUX0JSQUNFIDMz
MgotI2RlZmluZSBET1QgMzMzCi0jZGVmaW5lIENPTU1BIDMzNAotI2RlZmluZSBDT0xPTiAzMzUK
LSNkZWZpbmUgRVFVQUwgMzM2Ci0jZGVmaW5lIFNFTUlDT0xPTiAzMzcKLSNkZWZpbmUgQkFORyAz
MzgKLSNkZWZpbmUgREFTSCAzMzkKLSNkZWZpbmUgVElMREUgMzQwCi0jZGVmaW5lIFBMVVMgMzQx
Ci0jZGVmaW5lIFNUQVIgMzQyCi0jZGVmaW5lIFNMQVNIIDM0MwotI2RlZmluZSBQRVJDRU5UIDM0
NAotI2RlZmluZSBMRUZUX0FOR0xFIDM0NQotI2RlZmluZSBSSUdIVF9BTkdMRSAzNDYKLSNkZWZp
bmUgVkVSVElDQUxfQkFSIDM0NwotI2RlZmluZSBDQVJFVCAzNDgKLSNkZWZpbmUgQU1QRVJTQU5E
IDM0OQotI2RlZmluZSBRVUVTVElPTiAzNTAKKyNkZWZpbmUgTEVGVF9PUCAzMDUKKyNkZWZpbmUg
UklHSFRfT1AgMzA2CisjZGVmaW5lIElOQ19PUCAzMDcKKyNkZWZpbmUgREVDX09QIDMwOAorI2Rl
ZmluZSBMRV9PUCAzMDkKKyNkZWZpbmUgR0VfT1AgMzEwCisjZGVmaW5lIEVRX09QIDMxMQorI2Rl
ZmluZSBORV9PUCAzMTIKKyNkZWZpbmUgQU5EX09QIDMxMworI2RlZmluZSBPUl9PUCAzMTQKKyNk
ZWZpbmUgWE9SX09QIDMxNQorI2RlZmluZSBNVUxfQVNTSUdOIDMxNgorI2RlZmluZSBESVZfQVNT
SUdOIDMxNworI2RlZmluZSBBRERfQVNTSUdOIDMxOAorI2RlZmluZSBNT0RfQVNTSUdOIDMxOQor
I2RlZmluZSBMRUZUX0FTU0lHTiAzMjAKKyNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMQorI2RlZmlu
ZSBBTkRfQVNTSUdOIDMyMgorI2RlZmluZSBYT1JfQVNTSUdOIDMyMworI2RlZmluZSBPUl9BU1NJ
R04gMzI0CisjZGVmaW5lIFNVQl9BU1NJR04gMzI1CisjZGVmaW5lIExFRlRfUEFSRU4gMzI2Cisj
ZGVmaW5lIFJJR0hUX1BBUkVOIDMyNworI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI4CisjZGVmaW5l
IFJJR0hUX0JSQUNLRVQgMzI5CisjZGVmaW5lIExFRlRfQlJBQ0UgMzMwCisjZGVmaW5lIFJJR0hU
X0JSQUNFIDMzMQorI2RlZmluZSBET1QgMzMyCisjZGVmaW5lIENPTU1BIDMzMworI2RlZmluZSBD
T0xPTiAzMzQKKyNkZWZpbmUgRVFVQUwgMzM1CisjZGVmaW5lIFNFTUlDT0xPTiAzMzYKKyNkZWZp
bmUgQkFORyAzMzcKKyNkZWZpbmUgREFTSCAzMzgKKyNkZWZpbmUgVElMREUgMzM5CisjZGVmaW5l
IFBMVVMgMzQwCisjZGVmaW5lIFNUQVIgMzQxCisjZGVmaW5lIFNMQVNIIDM0MgorI2RlZmluZSBQ
RVJDRU5UIDM0MworI2RlZmluZSBMRUZUX0FOR0xFIDM0NAorI2RlZmluZSBSSUdIVF9BTkdMRSAz
NDUKKyNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NgorI2RlZmluZSBDQVJFVCAzNDcKKyNkZWZpbmUg
QU1QRVJTQU5EIDM0OAorI2RlZmluZSBRVUVTVElPTiAzNDkKIAogCiAKQEAgLTI4Nyw3ICsyODUs
NiBAQAogI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgogCiAjZGVmaW5lIFlZRU5BQkxF
X05MUyAwCi0jZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCiAKICNkZWZpbmUgWVlMRVhfUEFS
QU0gY29udGV4dC0+c2Nhbm5lcgogCkBAIC0zMTQsOCArMzExLDkgQEAKIHR5cGVkZWYgdW5pb24g
WVlTVFlQRQogCiB7CisjZGVmaW5lIFlZTFRZUEUgVFNvdXJjZUxvYworI2RlZmluZSBZWUxUWVBF
X0lTX0RFQ0xBUkVEIDEKICAgICBzdHJ1Y3QgewotICAgICAgICBUU291cmNlTG9jIGxpbmU7CiAg
ICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRTdHJpbmcgKnN0cmluZzsKICAgICAgICAgICAg
IGZsb2F0IGY7CkBAIC0zMjUsNyArMzIzLDYgQEAgdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAgICAg
ICAgIFRTeW1ib2wqIHN5bWJvbDsKICAgICB9IGxleDsKICAgICBzdHJ1Y3QgewotICAgICAgICBU
U291cmNlTG9jIGxpbmU7CiAgICAgICAgIFRPcGVyYXRvciBvcDsKICAgICAgICAgdW5pb24gewog
ICAgICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7CkBAIC0zMzksOCArMzM2LDggQEAg
dHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsK
ICAgICAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAgICAgICBUUGFyYW1ldGVy
IHBhcmFtOwotICAgICAgICAgICAgVFR5cGVMaW5lIHR5cGVMaW5lOwotICAgICAgICAgICAgVFR5
cGVMaXN0KiB0eXBlTGlzdDsKKyAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7CisgICAgICAgICAg
ICBURmllbGRMaXN0KiBmaWVsZExpc3Q7CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07CiB9CkBA
IC0zNTIsMjEgKzM0OSw0MSBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICMgZGVmaW5lIFlZU1RZ
UEVfSVNfVFJJVklBTCAxCiAjZW5kaWYKIAorI2lmICEgZGVmaW5lZCBZWUxUWVBFICYmICEgZGVm
aW5lZCBZWUxUWVBFX0lTX0RFQ0xBUkVECit0eXBlZGVmIHN0cnVjdCBZWUxUWVBFCit7CisgIGlu
dCBmaXJzdF9saW5lOworICBpbnQgZmlyc3RfY29sdW1uOworICBpbnQgbGFzdF9saW5lOworICBp
bnQgbGFzdF9jb2x1bW47Cit9IFlZTFRZUEU7CisjIGRlZmluZSB5eWx0eXBlIFlZTFRZUEUgLyog
b2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCisjIGRlZmluZSBZWUxUWVBFX0lTX0RF
Q0xBUkVEIDEKKyMgZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCisjZW5kaWYKIAogCiAvKiBD
b3B5IHRoZSBzZWNvbmQgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCiAKIAotZXh0ZXJu
IGludCB5eWxleChZWVNUWVBFKiB5eWx2YWxfcGFyYW0sIHZvaWQqIHl5c2Nhbm5lcik7Ci1leHRl
cm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNv
bik7CitleHRlcm4gaW50IHl5bGV4KFlZU1RZUEUqIHl5bHZhbCwgWVlMVFlQRSogeXlsbG9jLCB2
b2lkKiB5eXNjYW5uZXIpOworc3RhdGljIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQ
YXJzZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAKLSNkZWZpbmUgRlJB
R19WRVJUX09OTFkoUywgTCkgeyAgXAotICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNI
X0ZSQUdNRU5UX1NIQURFUiAmJiAgXAotICAgICAgICBjb250ZXh0LT5zaGFkZXJUeXBlICE9IFNI
X1ZFUlRFWF9TSEFERVIpIHsgIFwKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBwb3J0
ZWQgaW4gdmVydGV4L2ZyYWdtZW50IHNoYWRlcnMgb25seSAiLCBTKTsgIFwKLSAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOyAgXAotICAgIH0gIFwKLX0KKyNkZWZpbmUgWVlMTE9DX0RFRkFVTFQo
Q3VycmVudCwgUmhzLCBOKSAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgaWYg
KFlZSUQoTikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgKEN1cnJlbnQpLmZpcnN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDEpLmZpcnN0X2ZpbGU7
ICBcCisgICAgICAgIChDdXJyZW50KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAxKS5maXJz
dF9saW5lOyAgXAorICAgICAgICAoQ3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCBO
KS5sYXN0X2ZpbGU7ICAgIFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9D
KFJocywgTikubGFzdF9saW5lOyAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZWxzZSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKEN1cnJlbnQp
LmZpcnN0X2ZpbGUgPSBZWVJIU0xPQyhSaHMsIDApLmxhc3RfZmlsZTsgICBcCisgICAgICAgIChD
dXJyZW50KS5maXJzdF9saW5lID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2xpbmU7ICAgXAorICAg
ICAgICAoQ3VycmVudCkubGFzdF9maWxlID0gWVlSSFNMT0MoUmhzLCAwKS5sYXN0X2ZpbGU7ICAg
IFwKKyAgICAgICAgKEN1cnJlbnQpLmxhc3RfbGluZSA9IFlZUkhTTE9DKFJocywgMCkubGFzdF9s
aW5lOyAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICB9IHdoaWxlICgwKQogCiAjZGVmaW5lIFZFUlRFWF9PTkxZKFMs
IEwpIHsgIFwKICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSAhPSBTSF9WRVJURVhfU0hBREVS
KSB7ICBcCkBAIC01NDIsMTQgKzU1OSwxNiBAQCB2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJ
TkdFUyBPTiBVU0VSCiAKICNpZiAoISBkZWZpbmVkIHl5b3ZlcmZsb3cgXAogICAgICAmJiAoISBk
ZWZpbmVkIF9fY3BsdXNwbHVzIFwKLQkgfHwgKGRlZmluZWQgWVlTVFlQRV9JU19UUklWSUFMICYm
IFlZU1RZUEVfSVNfVFJJVklBTCkpKQorCSB8fCAoZGVmaW5lZCBZWUxUWVBFX0lTX1RSSVZJQUwg
JiYgWVlMVFlQRV9JU19UUklWSUFMIFwKKwkgICAgICYmIGRlZmluZWQgWVlTVFlQRV9JU19UUklW
SUFMICYmIFlZU1RZUEVfSVNfVFJJVklBTCkpKQogCiAvKiBBIHR5cGUgdGhhdCBpcyBwcm9wZXJs
eSBhbGlnbmVkIGZvciBhbnkgc3RhY2sgbWVtYmVyLiAgKi8KIHVuaW9uIHl5YWxsb2MKIHsKICAg
eXl0eXBlX2ludDE2IHl5c3M7CiAgIFlZU1RZUEUgeXl2czsKLSAgfTsKKyAgICBZWUxUWVBFIHl5
bHM7Cit9OwogCiAvKiBUaGUgc2l6ZSBvZiB0aGUgbWF4aW11bSBnYXAgYmV0d2VlbiBvbmUgYWxp
Z25lZCBzdGFjayBhbmQgdGhlIG5leHQuICAqLwogIyBkZWZpbmUgWVlTVEFDS19HQVBfTUFYSU1V
TSAoc2l6ZW9mICh1bmlvbiB5eWFsbG9jKSAtIDEpCkBAIC01NTcsOCArNTc2LDggQEAgdW5pb24g
eXlhbGxvYwogLyogVGhlIHNpemUgb2YgYW4gYXJyYXkgbGFyZ2UgdG8gZW5vdWdoIHRvIGhvbGQg
YWxsIHN0YWNrcywgZWFjaCB3aXRoCiAgICBOIGVsZW1lbnRzLiAgKi8KICMgZGVmaW5lIFlZU1RB
Q0tfQllURVMoTikgXAotICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNpemVv
ZiAoWVlTVFlQRSkpIFwKLSAgICAgICsgWVlTVEFDS19HQVBfTUFYSU1VTSkKKyAgICAgKChOKSAq
IChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUpICsgc2l6ZW9mIChZWUxU
WVBFKSkgXAorICAgICAgKyAyICogWVlTVEFDS19HQVBfTUFYSU1VTSkKIAogLyogQ29weSBDT1VO
VCBvYmplY3RzIGZyb20gRlJPTSB0byBUTy4gIFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRv
CiAgICBub3Qgb3ZlcmxhcC4gICovCkBAIC01OTcsMjIgKzYxNiwyMiBAQCB1bmlvbiB5eWFsbG9j
CiAjZW5kaWYKIAogLyogWVlGSU5BTCAtLSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0aW9u
IHN0YXRlLiAgKi8KLSNkZWZpbmUgWVlGSU5BTCAgNzEKKyNkZWZpbmUgWVlGSU5BTCAgNzQKIC8q
IFlZTEFTVCAtLSBMYXN0IGluZGV4IGluIFlZVEFCTEUuICAqLwotI2RlZmluZSBZWUxBU1QgICAx
NDE2CisjZGVmaW5lIFlZTEFTVCAgIDE0OTAKIAogLyogWVlOVE9LRU5TIC0tIE51bWJlciBvZiB0
ZXJtaW5hbHMuICAqLwotI2RlZmluZSBZWU5UT0tFTlMgIDk2CisjZGVmaW5lIFlZTlRPS0VOUyAg
OTUKIC8qIFlZTk5UUyAtLSBOdW1iZXIgb2Ygbm9udGVybWluYWxzLiAgKi8KLSNkZWZpbmUgWVlO
TlRTICA4MworI2RlZmluZSBZWU5OVFMgIDg0CiAvKiBZWU5SVUxFUyAtLSBOdW1iZXIgb2YgcnVs
ZXMuICAqLwotI2RlZmluZSBZWU5SVUxFUyAgMjAxCisjZGVmaW5lIFlZTlJVTEVTICAyMDIKIC8q
IFlZTlJVTEVTIC0tIE51bWJlciBvZiBzdGF0ZXMuICAqLwotI2RlZmluZSBZWU5TVEFURVMgIDMw
NAorI2RlZmluZSBZWU5TVEFURVMgIDMwNwogCiAvKiBZWVRSQU5TTEFURShZWUxFWCkgLS0gQmlz
b24gc3ltYm9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZTEVYLiAgKi8KICNkZWZpbmUgWVlV
TkRFRlRPSyAgMgotI2RlZmluZSBZWU1BWFVUT0sgICAzNTAKKyNkZWZpbmUgWVlNQVhVVE9LICAg
MzQ5CiAKICNkZWZpbmUgWVlUUkFOU0xBVEUoWVlYKQkJCQkJCVwKICAgKCh1bnNpZ25lZCBpbnQp
IChZWVgpIDw9IFlZTUFYVVRPSyA/IHl5dHJhbnNsYXRlW1lZWF0gOiBZWVVOREVGVE9LKQpAQCAt
NjU0LDggKzY3Myw3IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXl0cmFuc2xhdGVbXSAK
ICAgICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2
MiwgICAgNjMsICAgIDY0LAogICAgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAg
ICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsCiAgICAgICA3NSwgICAgNzYsICAgIDc3
LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIDgzLCAgICA4NCwKLSAgICAg
IDg1LCAgICA4NiwgICAgODcsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICA5MiwgICAg
OTMsICAgIDk0LAotICAgICAgOTUKKyAgICAgIDg1LCAgICA4NiwgICAgODcsICAgIDg4LCAgICA4
OSwgICAgOTAsICAgIDkxLCAgICA5MiwgICAgOTMsICAgIDk0CiB9OwogCiAjaWYgWVlERUJVRwpA
QCAtNjYzLDExNSArNjgxLDExNiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJhbnNs
YXRlW10gCiAgICBZWVJIUy4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXByaHNb
XSA9CiB7Ci0gICAgICAgMCwgICAgIDAsICAgICAzLCAgICAgNSwgICAgIDcsICAgICA5LCAgICAx
MSwgICAgMTMsICAgIDE3LCAgICAxOSwKLSAgICAgIDI0LCAgICAyNiwgICAgMzAsICAgIDMzLCAg
ICAzNiwgICAgMzgsICAgIDQwLCAgICA0MiwgICAgNDYsICAgIDQ5LAotICAgICAgNTIsICAgIDU1
LCAgICA1NywgICAgNjAsICAgIDY0LCAgICA2NywgICAgNjksICAgIDcxLCAgICA3MywgICAgNzUs
Ci0gICAgICA3OCwgICAgODEsICAgIDg0LCAgICA4NiwgICAgODgsICAgIDkwLCAgICA5MiwgICAg
OTYsICAgMTAwLCAgIDEwMiwKLSAgICAgMTA2LCAgIDExMCwgICAxMTIsICAgMTE0LCAgIDExOCwg
ICAxMjIsICAgMTI2LCAgIDEzMCwgICAxMzIsICAgMTM2LAotICAgICAxNDAsICAgMTQyLCAgIDE0
NCwgICAxNDYsICAgMTQ4LCAgIDE1MiwgICAxNTQsICAgMTU4LCAgIDE2MCwgICAxNjQsCi0gICAg
IDE2NiwgICAxNzIsICAgMTc0LCAgIDE3OCwgICAxODAsICAgMTgyLCAgIDE4NCwgICAxODYsICAg
MTg4LCAgIDE5MCwKLSAgICAgMTk0LCAgIDE5NiwgICAxOTksICAgMjAyLCAgIDIwNywgICAyMTAs
ICAgMjEyLCAgIDIxNCwgICAyMTcsICAgMjIxLAotICAgICAyMjUsICAgMjI4LCAgIDIzNCwgICAy
MzgsICAgMjQxLCAgIDI0NSwgICAyNDgsICAgMjQ5LCAgIDI1MSwgICAyNTMsCi0gICAgIDI1NSwg
ICAyNTcsICAgMjU5LCAgIDI2MywgICAyNjksICAgMjc2LCAgIDI4MiwgICAyODQsICAgMjg3LCAg
IDI5MiwKLSAgICAgMjk4LCAgIDMwMywgICAzMDYsICAgMzA4LCAgIDMxMSwgICAzMTMsICAgMzE1
LCAgIDMxNywgICAzMjAsICAgMzIyLAotICAgICAzMjQsICAgMzI3LCAgIDMyOSwgICAzMzEsICAg
MzMzLCAgIDMzNSwgICAzNDAsICAgMzQyLCAgIDM0NCwgICAzNDYsCisgICAgICAgMCwgICAgIDAs
ICAgICAzLCAgICAgNSwgICAgIDcsICAgICA5LCAgICAxMSwgICAgMTMsICAgIDE1LCAgICAxNywK
KyAgICAgIDIxLCAgICAyMywgICAgMjgsICAgIDMwLCAgICAzNCwgICAgMzcsICAgIDQwLCAgICA0
MiwgICAgNDQsICAgIDQ2LAorICAgICAgNTAsICAgIDUzLCAgICA1NiwgICAgNTksICAgIDYxLCAg
ICA2NCwgICAgNjgsICAgIDcxLCAgICA3MywgICAgNzUsCisgICAgICA3NywgICAgODAsICAgIDgz
LCAgICA4NiwgICAgODgsICAgIDkwLCAgICA5MiwgICAgOTQsICAgIDk4LCAgIDEwMiwKKyAgICAg
MTA0LCAgIDEwOCwgICAxMTIsICAgMTE0LCAgIDExNiwgICAxMjAsICAgMTI0LCAgIDEyOCwgICAx
MzIsICAgMTM0LAorICAgICAxMzgsICAgMTQyLCAgIDE0NCwgICAxNDYsICAgMTQ4LCAgIDE1MCwg
ICAxNTQsICAgMTU2LCAgIDE2MCwgICAxNjIsCisgICAgIDE2NiwgICAxNjgsICAgMTc0LCAgIDE3
NiwgICAxODAsICAgMTgyLCAgIDE4NCwgICAxODYsICAgMTg4LCAgIDE5MCwKKyAgICAgMTkyLCAg
IDE5NiwgICAxOTgsICAgMjAxLCAgIDIwNCwgICAyMDksICAgMjEyLCAgIDIxNCwgICAyMTYsICAg
MjE5LAorICAgICAyMjMsICAgMjI3LCAgIDIzMCwgICAyMzYsICAgMjQwLCAgIDI0MywgICAyNDcs
ICAgMjUwLCAgIDI1MSwgICAyNTMsCisgICAgIDI1NSwgICAyNTcsICAgMjU5LCAgIDI2MSwgICAy
NjUsICAgMjcxLCAgIDI3OCwgICAyODQsICAgMjg2LCAgIDI4OSwKKyAgICAgMjk0LCAgIDMwMCwg
ICAzMDUsICAgMzA4LCAgIDMxMCwgICAzMTMsICAgMzE1LCAgIDMxNywgICAzMTksICAgMzIyLAor
ICAgICAzMjQsICAgMzI2LCAgIDMyOSwgICAzMzEsICAgMzMzLCAgIDMzNSwgICAzMzcsICAgMzQy
LCAgIDM0NCwgICAzNDYsCiAgICAgIDM0OCwgICAzNTAsICAgMzUyLCAgIDM1NCwgICAzNTYsICAg
MzU4LCAgIDM2MCwgICAzNjIsICAgMzY0LCAgIDM2NiwKLSAgICAgMzY4LCAgIDM3MCwgICAzNzIs
ICAgMzc0LCAgIDM3NiwgICAzNzgsICAgMzgwLCAgIDM4MiwgICAzODQsICAgMzg1LAotICAgICAz
OTIsICAgMzkzLCAgIDM5OSwgICA0MDEsICAgNDA0LCAgIDQwOCwgICA0MTAsICAgNDE0LCAgIDQx
NiwgICA0MjEsCi0gICAgIDQyMywgICA0MjUsICAgNDI3LCAgIDQyOSwgICA0MzEsICAgNDMzLCAg
IDQzNSwgICA0MzcsICAgNDM5LCAgIDQ0MiwKLSAgICAgNDQzLCAgIDQ0NCwgICA0NTAsICAgNDUy
LCAgIDQ1NCwgICA0NTUsICAgNDU4LCAgIDQ1OSwgICA0NjIsICAgNDY1LAotICAgICA0NjksICAg
NDcxLCAgIDQ3NCwgICA0NzYsICAgNDc5LCAgIDQ4NSwgICA0ODksICAgNDkxLCAgIDQ5MywgICA0
OTgsCi0gICAgIDQ5OSwgICA1MDYsICAgNTA3LCAgIDUxNiwgICA1MTcsICAgNTI1LCAgIDUyNywg
ICA1MjksICAgNTMxLCAgIDUzMiwKLSAgICAgNTM1LCAgIDUzOSwgICA1NDIsICAgNTQ1LCAgIDU0
OCwgICA1NTIsICAgNTU1LCAgIDU1NywgICA1NjAsICAgNTYyLAotICAgICA1NjQsICAgNTY1Cisg
ICAgIDM2OCwgICAzNzAsICAgMzcyLCAgIDM3NCwgICAzNzYsICAgMzc4LCAgIDM4MCwgICAzODIs
ICAgMzg0LCAgIDM4NiwKKyAgICAgMzg3LCAgIDM5NCwgICAzOTUsICAgNDAxLCAgIDQwMywgICA0
MDYsICAgNDEwLCAgIDQxMiwgICA0MTYsICAgNDE4LAorICAgICA0MjMsICAgNDI1LCAgIDQyNywg
ICA0MjksICAgNDMxLCAgIDQzMywgICA0MzUsICAgNDM3LCAgIDQzOSwgICA0NDEsCisgICAgIDQ0
NCwgICA0NDUsICAgNDQ2LCAgIDQ1MiwgICA0NTQsICAgNDU2LCAgIDQ1NywgICA0NjAsICAgNDYx
LCAgIDQ2NCwKKyAgICAgNDY3LCAgIDQ3MSwgICA0NzMsICAgNDc2LCAgIDQ3OCwgICA0ODEsICAg
NDg3LCAgIDQ5MSwgICA0OTMsICAgNDk1LAorICAgICA1MDAsICAgNTAxLCAgIDUwOCwgICA1MDks
ICAgNTE4LCAgIDUxOSwgICA1MjcsICAgNTI5LCAgIDUzMSwgICA1MzMsCisgICAgIDUzNCwgICA1
MzcsICAgNTQxLCAgIDU0NCwgICA1NDcsICAgNTUwLCAgIDU1NCwgICA1NTcsICAgNTU5LCAgIDU2
MiwKKyAgICAgNTY0LCAgIDU2NiwgICA1NjcKIH07CiAKIC8qIFlZUkhTIC0tIEEgYC0xJy1zZXBh
cmF0ZWQgbGlzdCBvZiB0aGUgcnVsZXMnIFJIUy4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX2lu
dDE2IHl5cmhzW10gPQogewotICAgICAxNzUsICAgICAwLCAgICAtMSwgICAgNDUsICAgIC0xLCAg
ICA5NywgICAgLTEsICAgIDQ4LCAgICAtMSwgICAgNDcsCi0gICAgICAtMSwgICAgNDksICAgIC0x
LCAgICA3MiwgICAxMjQsICAgIDczLCAgICAtMSwgICAgOTgsICAgIC0xLCAgICA5OSwKLSAgICAg
IDc0LCAgIDEwMCwgICAgNzUsICAgIC0xLCAgIDEwMSwgICAgLTEsICAgIDk5LCAgICA3OCwgICAg
NTAsICAgIC0xLAotICAgICAgOTksICAgIDUzLCAgICAtMSwgICAgOTksICAgIDU0LCAgICAtMSwg
ICAxMjQsICAgIC0xLCAgIDEwMiwgICAgLTEsCi0gICAgIDEwMywgICAgLTEsICAgIDk5LCAgICA3
OCwgICAxMDMsICAgIC0xLCAgIDEwNSwgICAgNzMsICAgIC0xLCAgIDEwNCwKLSAgICAgIDczLCAg
ICAtMSwgICAxMDYsICAgIDM5LCAgICAtMSwgICAxMDYsICAgIC0xLCAgIDEwNiwgICAxMjIsICAg
IC0xLAotICAgICAxMDUsICAgIDc5LCAgIDEyMiwgICAgLTEsICAgMTA3LCAgICA3MiwgICAgLTEs
ICAgMTQyLCAgICAtMSwgICAgNDUsCi0gICAgICAtMSwgICAgNTAsICAgIC0xLCAgICA5OSwgICAg
LTEsICAgIDUzLCAgIDEwOCwgICAgLTEsICAgIDU0LCAgIDEwOCwKLSAgICAgIC0xLCAgIDEwOSwg
ICAxMDgsICAgIC0xLCAgICA4NiwgICAgLTEsICAgIDg0LCAgICAtMSwgICAgODMsICAgIC0xLAot
ICAgICAxMDgsICAgIC0xLCAgIDExMCwgICAgODcsICAgMTA4LCAgICAtMSwgICAxMTAsICAgIDg4
LCAgIDEwOCwgICAgLTEsCi0gICAgIDExMCwgICAgLTEsICAgMTExLCAgICA4NiwgICAxMTAsICAg
IC0xLCAgIDExMSwgICAgODQsICAgMTEwLCAgICAtMSwKLSAgICAgMTExLCAgICAtMSwgICAxMTIs
ICAgIC0xLCAgIDExMywgICAgOTAsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDkxLAotICAgICAx
MTIsICAgIC0xLCAgIDExMywgICAgNTUsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDU2LCAgIDEx
MiwgICAgLTEsCi0gICAgIDExMywgICAgLTEsICAgMTE0LCAgICA1NywgICAxMTMsICAgIC0xLCAg
IDExNCwgICAgNTgsICAgMTEzLCAgICAtMSwKLSAgICAgMTE0LCAgICAtMSwgICAxMTUsICAgIC0x
LCAgIDExNiwgICAgLTEsICAgMTE3LCAgICAtMSwgICAxMTgsICAgIDU5LAotICAgICAxMTcsICAg
IC0xLCAgIDExOCwgICAgLTEsICAgMTE5LCAgICA2MSwgICAxMTgsICAgIC0xLCAgIDExOSwgICAg
LTEsCi0gICAgIDEyMCwgICAgNjAsICAgMTE5LCAgICAtMSwgICAxMjAsICAgIC0xLCAgIDEyMCwg
ICAgOTUsICAgMTI0LCAgICA4MCwKLSAgICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEw
OCwgICAxMjMsICAgMTIyLCAgICAtMSwgICAgODEsICAgIC0xLAotICAgICAgNjIsICAgIC0xLCAg
ICA2MywgICAgLTEsICAgIDY0LCAgICAtMSwgICAgNzEsICAgIC0xLCAgIDEyMiwgICAgLTEsCi0g
ICAgIDEyNCwgICAgNzksICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEyNywgICAgODIs
ICAgIC0xLCAgIDEzNSwKLSAgICAgIDgyLCAgICAtMSwgICAgIDcsICAgMTQwLCAgIDE0MSwgICAg
ODIsICAgIC0xLCAgIDEyOCwgICAgNzMsICAgIC0xLAotICAgICAxMzAsICAgIC0xLCAgIDEyOSwg
ICAgLTEsICAgMTMwLCAgIDEzMiwgICAgLTEsICAgMTI5LCAgICA3OSwgICAxMzIsCi0gICAgICAt
MSwgICAxMzcsICAgIDQ1LCAgICA3MiwgICAgLTEsICAgMTM5LCAgICA0NSwgICAgLTEsICAgMTM5
LCAgICA0NSwKLSAgICAgIDc0LCAgIDEyNSwgICAgNzUsICAgIC0xLCAgIDEzOCwgICAxMzMsICAg
MTMxLCAgICAtMSwgICAxMzMsICAgMTMxLAotICAgICAgLTEsICAgMTM4LCAgIDEzMywgICAxMzQs
ICAgIC0xLCAgIDEzMywgICAxMzQsICAgIC0xLCAgICAtMSwgICAgMzMsCi0gICAgICAtMSwgICAg
MzQsICAgIC0xLCAgICAzNSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAxMzYsICAgIC0xLCAgIDEz
NSwKLSAgICAgIDc5LCAgICA0NSwgICAgLTEsICAgMTM1LCAgICA3OSwgICAgNDUsICAgIDc0LCAg
ICA3NSwgICAgLTEsICAgMTM1LAotICAgICAgNzksICAgIDQ1LCAgICA3NCwgICAxMjUsICAgIDc1
LCAgICAtMSwgICAxMzUsICAgIDc5LCAgICA0NSwgICAgODEsCi0gICAgIDE1MCwgICAgLTEsICAg
MTM3LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3NCwKLSAg
ICAgIDc1LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3NCwgICAxMjUsICAgIDc1LCAgICAtMSwg
ICAxMzcsICAgIDQ1LAotICAgICAgODEsICAgMTUwLCAgICAtMSwgICAgIDMsICAgIDQ1LCAgICAt
MSwgICAxMzksICAgIC0xLCAgIDEzOCwgICAxMzksCi0gICAgICAtMSwgICAgIDksICAgIC0xLCAg
ICAgOCwgICAgLTEsICAgIDM3LCAgICAtMSwgICAgIDMsICAgIDM3LCAgICAtMSwKLSAgICAgIDM2
LCAgICAtMSwgICAxNDEsICAgIC0xLCAgIDE0MCwgICAxNDEsICAgIC0xLCAgICAgNCwgICAgLTEs
ICAgICA1LAotICAgICAgLTEsICAgICA2LCAgICAtMSwgICAxNDIsICAgIC0xLCAgIDE0MiwgICAg
NzQsICAgMTI1LCAgICA3NSwgICAgLTEsCi0gICAgICAzOSwgICAgLTEsICAgIDExLCAgICAtMSwg
ICAgMTIsICAgIC0xLCAgICAxMCwgICAgLTEsICAgIDI3LCAgICAtMSwKLSAgICAgIDI4LCAgICAt
MSwgICAgMjksICAgIC0xLCAgICAyMSwgICAgLTEsICAgIDIyLCAgICAtMSwgICAgMjMsICAgIC0x
LAotICAgICAgMjQsICAgIC0xLCAgICAyNSwgICAgLTEsICAgIDI2LCAgICAtMSwgICAgMzAsICAg
IC0xLCAgICAzMSwgICAgLTEsCi0gICAgICAzMiwgICAgLTEsICAgIDQxLCAgICAtMSwgICAgNDIs
ICAgIC0xLCAgICA0MywgICAgLTEsICAgIDQ0LCAgICAtMSwKLSAgICAgMTQzLCAgICAtMSwgICAg
NDYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDQ1LCAgICA3NiwgICAxNDQsICAgMTQ2LAotICAg
ICAgNzcsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDc2LCAgIDE0NSwgICAxNDYsICAgIDc3LCAg
ICAtMSwgICAxNDcsCi0gICAgICAtMSwgICAxNDYsICAgMTQ3LCAgICAtMSwgICAxMzksICAgMTQ4
LCAgICA4MiwgICAgLTEsICAgMTQ5LCAgICAtMSwKLSAgICAgMTQ4LCAgICA3OSwgICAxNDksICAg
IC0xLCAgICA0NSwgICAgLTEsICAgIDQ1LCAgICA3NCwgICAxMjUsICAgIDc1LAotICAgICAgLTEs
ICAgMTIyLCAgICAtMSwgICAxMjYsICAgIC0xLCAgIDE1NCwgICAgLTEsICAgMTUzLCAgICAtMSwg
ICAxNTEsCi0gICAgICAtMSwgICAxNjMsICAgIC0xLCAgIDE2NCwgICAgLTEsICAgMTY3LCAgICAt
MSwgICAxNzQsICAgIC0xLCAgICA3NiwKLSAgICAgIDc3LCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICA3NiwgICAxNTUsICAgMTYyLCAgIDE1NiwgICAgNzcsICAgIC0xLAotICAgICAxNjEsICAgIC0x
LCAgIDE1MywgICAgLTEsICAgIC0xLCAgIDE1OSwgICAxNjEsICAgIC0xLCAgICAtMSwgICAxNjAs
Ci0gICAgIDE1MywgICAgLTEsICAgIDc2LCAgICA3NywgICAgLTEsICAgIDc2LCAgIDE2MiwgICAg
NzcsICAgIC0xLCAgIDE1MiwKLSAgICAgIC0xLCAgIDE2MiwgICAxNTIsICAgIC0xLCAgICA4Miwg
ICAgLTEsICAgMTI0LCAgICA4MiwgICAgLTEsICAgIDE4LAotICAgICAgNzIsICAgMTI0LCAgICA3
MywgICAxNjUsICAgIC0xLCAgIDE1OCwgICAgMTYsICAgMTU4LCAgICAtMSwgICAxNTgsCi0gICAg
ICAtMSwgICAxMjQsICAgIC0xLCAgIDEzNywgICAgNDUsICAgIDgxLCAgIDE1MCwgICAgLTEsICAg
IC0xLCAgICA0MCwKLSAgICAgIDcyLCAgIDE2OCwgICAxNjYsICAgIDczLCAgIDE1NywgICAgLTEs
ICAgIC0xLCAgICAxNSwgICAxNjksICAgMTU4LAotICAgICAgNDAsICAgIDcyLCAgIDEyNCwgICAg
NzMsICAgIDgyLCAgICAtMSwgICAgLTEsICAgIDE3LCAgICA3MiwgICAxNzAsCi0gICAgIDE3MSwg
ICAxNzMsICAgIDczLCAgIDE1NywgICAgLTEsICAgMTYzLCAgICAtMSwgICAxNTEsICAgIC0xLCAg
IDE2NiwKLSAgICAgIC0xLCAgICAtMSwgICAxNzIsICAgIDgyLCAgICAtMSwgICAxNzIsICAgIDgy
LCAgIDEyNCwgICAgLTEsICAgIDE0LAotICAgICAgODIsICAgIC0xLCAgICAxMywgICAgODIsICAg
IC0xLCAgICAyMCwgICAgODIsICAgIC0xLCAgICAyMCwgICAxMjQsCi0gICAgICA4MiwgICAgLTEs
ICAgIDE5LCAgICA4MiwgICAgLTEsICAgMTc2LCAgICAtMSwgICAxNzUsICAgMTc2LCAgICAtMSwK
LSAgICAgMTc3LCAgICAtMSwgICAxMjYsICAgIC0xLCAgICAtMSwgICAxMjcsICAgMTc4LCAgIDE2
MSwgICAgLTEKKyAgICAgMTc1LCAgICAgMCwgICAgLTEsICAgIDQ1LCAgICAtMSwgICAgNDYsICAg
IC0xLCAgICA0NSwgICAgLTEsICAgIDk3LAorICAgICAgLTEsICAgIDQ4LCAgICAtMSwgICAgNDcs
ICAgIC0xLCAgICA0OSwgICAgLTEsICAgIDcxLCAgIDEyNCwgICAgNzIsCisgICAgICAtMSwgICAg
OTgsICAgIC0xLCAgICA5OSwgICAgNzMsICAgMTAwLCAgICA3NCwgICAgLTEsICAgMTAxLCAgICAt
MSwKKyAgICAgIDk5LCAgICA3NywgICAgOTYsICAgIC0xLCAgICA5OSwgICAgNTIsICAgIC0xLCAg
ICA5OSwgICAgNTMsICAgIC0xLAorICAgICAxMjQsICAgIC0xLCAgIDEwMiwgICAgLTEsICAgMTAz
LCAgICAtMSwgICAgOTksICAgIDc3LCAgIDEwMywgICAgLTEsCisgICAgIDEwNSwgICAgNzIsICAg
IC0xLCAgIDEwNCwgICAgNzIsICAgIC0xLCAgIDEwNiwgICAgMzksICAgIC0xLCAgIDEwNiwKKyAg
ICAgIC0xLCAgIDEwNiwgICAxMjIsICAgIC0xLCAgIDEwNSwgICAgNzgsICAgMTIyLCAgICAtMSwg
ICAxMDcsICAgIDcxLAorICAgICAgLTEsICAgMTQyLCAgICAtMSwgICAgNDUsICAgIC0xLCAgICA5
OSwgICAgLTEsICAgIDUyLCAgIDEwOCwgICAgLTEsCisgICAgICA1MywgICAxMDgsICAgIC0xLCAg
IDEwOSwgICAxMDgsICAgIC0xLCAgICA4NSwgICAgLTEsICAgIDgzLCAgICAtMSwKKyAgICAgIDgy
LCAgICAtMSwgICAxMDgsICAgIC0xLCAgIDExMCwgICAgODYsICAgMTA4LCAgICAtMSwgICAxMTAs
ICAgIDg3LAorICAgICAxMDgsICAgIC0xLCAgIDExMCwgICAgLTEsICAgMTExLCAgICA4NSwgICAx
MTAsICAgIC0xLCAgIDExMSwgICAgODMsCisgICAgIDExMCwgICAgLTEsICAgMTExLCAgICAtMSwg
ICAxMTIsICAgIC0xLCAgIDExMywgICAgODksICAgMTEyLCAgICAtMSwKKyAgICAgMTEzLCAgICA5
MCwgICAxMTIsICAgIC0xLCAgIDExMywgICAgNTQsICAgMTEyLCAgICAtMSwgICAxMTMsICAgIDU1
LAorICAgICAxMTIsICAgIC0xLCAgIDExMywgICAgLTEsICAgMTE0LCAgICA1NiwgICAxMTMsICAg
IC0xLCAgIDExNCwgICAgNTcsCisgICAgIDExMywgICAgLTEsICAgMTE0LCAgICAtMSwgICAxMTUs
ICAgIC0xLCAgIDExNiwgICAgLTEsICAgMTE3LCAgICAtMSwKKyAgICAgMTE4LCAgICA1OCwgICAx
MTcsICAgIC0xLCAgIDExOCwgICAgLTEsICAgMTE5LCAgICA2MCwgICAxMTgsICAgIC0xLAorICAg
ICAxMTksICAgIC0xLCAgIDEyMCwgICAgNTksICAgMTE5LCAgICAtMSwgICAxMjAsICAgIC0xLCAg
IDEyMCwgICAgOTQsCisgICAgIDEyNCwgICAgNzksICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0x
LCAgIDEwOCwgICAxMjMsICAgMTIyLCAgICAtMSwKKyAgICAgIDgwLCAgICAtMSwgICAgNjEsICAg
IC0xLCAgICA2MiwgICAgLTEsICAgIDYzLCAgICAtMSwgICAgNzAsICAgIC0xLAorICAgICAxMjIs
ICAgIC0xLCAgIDEyNCwgICAgNzgsICAgMTIyLCAgICAtMSwgICAxMjEsICAgIC0xLCAgIDEyNywg
ICAgODEsCisgICAgICAtMSwgICAxMzUsICAgIDgxLCAgICAtMSwgICAgIDcsICAgMTQwLCAgIDE0
MSwgICAgODEsICAgIC0xLCAgIDEyOCwKKyAgICAgIDcyLCAgICAtMSwgICAxMzAsICAgIC0xLCAg
IDEyOSwgICAgLTEsICAgMTMwLCAgIDEzMiwgICAgLTEsICAgMTI5LAorICAgICAgNzgsICAgMTMy
LCAgICAtMSwgICAxMzcsICAgIDQ1LCAgICA3MSwgICAgLTEsICAgMTM5LCAgICA5NiwgICAgLTEs
CisgICAgIDEzOSwgICAgOTYsICAgIDczLCAgIDEyNSwgICAgNzQsICAgIC0xLCAgIDEzOCwgICAx
MzMsICAgMTMxLCAgICAtMSwKKyAgICAgMTMzLCAgIDEzMSwgICAgLTEsICAgMTM4LCAgIDEzMywg
ICAxMzQsICAgIC0xLCAgIDEzMywgICAxMzQsICAgIC0xLAorICAgICAgLTEsICAgIDMzLCAgICAt
MSwgICAgMzQsICAgIC0xLCAgICAzNSwgICAgLTEsICAgMTM5LCAgICAtMSwgICAxMzYsCisgICAg
ICAtMSwgICAxMzUsICAgIDc4LCAgICA5NiwgICAgLTEsICAgMTM1LCAgICA3OCwgICAgOTYsICAg
IDczLCAgICA3NCwKKyAgICAgIC0xLCAgIDEzNSwgICAgNzgsICAgIDk2LCAgICA3MywgICAxMjUs
ICAgIDc0LCAgICAtMSwgICAxMzUsICAgIDc4LAorICAgICAgOTYsICAgIDgwLCAgIDE1MCwgICAg
LTEsICAgMTM3LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICAtMSwgICAxMzcsCisgICAgICA5Niwg
ICAgNzMsICAgIDc0LCAgICAtMSwgICAxMzcsICAgIDk2LCAgICA3MywgICAxMjUsICAgIDc0LCAg
ICAtMSwKKyAgICAgMTM3LCAgICA5NiwgICAgODAsICAgMTUwLCAgICAtMSwgICAgIDMsICAgIDQ1
LCAgICAtMSwgICAxMzksICAgIC0xLAorICAgICAxMzgsICAgMTM5LCAgICAtMSwgICAgIDksICAg
IC0xLCAgICAgOCwgICAgLTEsICAgIDM3LCAgICAtMSwgICAgIDMsCisgICAgICAzNywgICAgLTEs
ICAgIDM2LCAgICAtMSwgICAxNDEsICAgIC0xLCAgIDE0MCwgICAxNDEsICAgIC0xLCAgICAgNCwK
KyAgICAgIC0xLCAgICAgNSwgICAgLTEsICAgICA2LCAgICAtMSwgICAxNDIsICAgIC0xLCAgIDE0
MiwgICAgNzMsICAgMTI1LAorICAgICAgNzQsICAgIC0xLCAgICAzOSwgICAgLTEsICAgIDExLCAg
ICAtMSwgICAgMTIsICAgIC0xLCAgICAxMCwgICAgLTEsCisgICAgICAyNywgICAgLTEsICAgIDI4
LCAgICAtMSwgICAgMjksICAgIC0xLCAgICAyMSwgICAgLTEsICAgIDIyLCAgICAtMSwKKyAgICAg
IDIzLCAgICAtMSwgICAgMjQsICAgIC0xLCAgICAyNSwgICAgLTEsICAgIDI2LCAgICAtMSwgICAg
MzAsICAgIC0xLAorICAgICAgMzEsICAgIC0xLCAgICAzMiwgICAgLTEsICAgIDQxLCAgICAtMSwg
ICAgNDIsICAgIC0xLCAgICA0MywgICAgLTEsCisgICAgICA0NCwgICAgLTEsICAgMTQzLCAgICAt
MSwgICAgNDYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDk2LCAgICA3NSwKKyAgICAgMTQ0LCAg
IDE0NiwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDc1LCAgIDE0NSwgICAxNDYsICAg
IDc2LAorICAgICAgLTEsICAgMTQ3LCAgICAtMSwgICAxNDYsICAgMTQ3LCAgICAtMSwgICAxMzks
ICAgMTQ4LCAgICA4MSwgICAgLTEsCisgICAgIDE0OSwgICAgLTEsICAgMTQ4LCAgICA3OCwgICAx
NDksICAgIC0xLCAgICA5NiwgICAgLTEsICAgIDk2LCAgICA3MywKKyAgICAgMTI1LCAgICA3NCwg
ICAgLTEsICAgMTIyLCAgICAtMSwgICAxMjYsICAgIC0xLCAgIDE1NCwgICAgLTEsICAgMTUzLAor
ICAgICAgLTEsICAgMTUxLCAgICAtMSwgICAxNjMsICAgIC0xLCAgIDE2NCwgICAgLTEsICAgMTY3
LCAgICAtMSwgICAxNzQsCisgICAgICAtMSwgICAgNzUsICAgIDc2LCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA3NSwgICAxNTUsICAgMTYyLCAgIDE1NiwKKyAgICAgIDc2LCAgICAtMSwgICAxNjEs
ICAgIC0xLCAgIDE1MywgICAgLTEsICAgIC0xLCAgIDE1OSwgICAxNjEsICAgIC0xLAorICAgICAg
LTEsICAgMTYwLCAgIDE1MywgICAgLTEsICAgIDc1LCAgICA3NiwgICAgLTEsICAgIDc1LCAgIDE2
MiwgICAgNzYsCisgICAgICAtMSwgICAxNTIsICAgIC0xLCAgIDE2MiwgICAxNTIsICAgIC0xLCAg
ICA4MSwgICAgLTEsICAgMTI0LCAgICA4MSwKKyAgICAgIC0xLCAgICAxOCwgICAgNzEsICAgMTI0
LCAgICA3MiwgICAxNjUsICAgIC0xLCAgIDE1OCwgICAgMTYsICAgMTU4LAorICAgICAgLTEsICAg
MTU4LCAgICAtMSwgICAxMjQsICAgIC0xLCAgIDEzNywgICAgOTYsICAgIDgwLCAgIDE1MCwgICAg
LTEsCisgICAgICAtMSwgICAgNDAsICAgIDcxLCAgIDE2OCwgICAxNjYsICAgIDcyLCAgIDE1Nywg
ICAgLTEsICAgIC0xLCAgICAxNSwKKyAgICAgMTY5LCAgIDE1OCwgICAgNDAsICAgIDcxLCAgIDEy
NCwgICAgNzIsICAgIDgxLCAgICAtMSwgICAgLTEsICAgIDE3LAorICAgICAgNzEsICAgMTcwLCAg
IDE3MSwgICAxNzMsICAgIDcyLCAgIDE1NywgICAgLTEsICAgMTYzLCAgICAtMSwgICAxNTEsCisg
ICAgICAtMSwgICAxNjYsICAgIC0xLCAgICAtMSwgICAxNzIsICAgIDgxLCAgICAtMSwgICAxNzIs
ICAgIDgxLCAgIDEyNCwKKyAgICAgIC0xLCAgICAxNCwgICAgODEsICAgIC0xLCAgICAxMywgICAg
ODEsICAgIC0xLCAgICAyMCwgICAgODEsICAgIC0xLAorICAgICAgMjAsICAgMTI0LCAgICA4MSwg
ICAgLTEsICAgIDE5LCAgICA4MSwgICAgLTEsICAgMTc2LCAgICAtMSwgICAxNzUsCisgICAgIDE3
NiwgICAgLTEsICAgMTc3LCAgICAtMSwgICAxMjYsICAgIC0xLCAgICAtMSwgICAxMjcsICAgMTc4
LCAgIDE2MSwKKyAgICAgIC0xCiB9OwogCiAvKiBZWVJMSU5FW1lZTl0gLS0gc291cmNlIGxpbmUg
d2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5
cGVfdWludDE2IHl5cmxpbmVbXSA9CiB7Ci0gICAgICAgMCwgICAxNjgsICAgMTY4LCAgIDIwMywg
ICAyMDYsICAgMjE5LCAgIDIyNCwgICAyMjksICAgMjM1LCAgIDIzOCwKLSAgICAgMzE3LCAgIDMy
MCwgICA0MjEsICAgNDMxLCAgIDQ0NCwgICA0NTIsICAgNTUyLCAgIDU1NSwgICA1NjMsICAgNTY3
LAotICAgICA1NzQsICAgNTc4LCAgIDU4NSwgICA1OTEsICAgNjAwLCAgIDYwOCwgICA2NjMsICAg
NjcwLCAgIDY4MCwgICA2ODMsCi0gICAgIDY5MywgICA3MDMsICAgNzI0LCAgIDcyNSwgICA3MjYs
ICAgNzMxLCAgIDczMiwgICA3NDEsICAgNzUzLCAgIDc1NCwKLSAgICAgNzYyLCAgIDc3MywgICA3
NzcsICAgNzc4LCAgIDc4OCwgICA3OTgsICAgODA4LCAgIDgyMSwgICA4MjIsICAgODMyLAotICAg
ICA4NDUsICAgODQ5LCAgIDg1MywgICA4NTcsICAgODU4LCAgIDg3MSwgICA4NzIsICAgODg1LCAg
IDg4NiwgICA4OTksCi0gICAgIDkwMCwgICA5MTcsICAgOTE4LCAgIDkzMSwgICA5MzIsICAgOTMz
LCAgIDkzNCwgICA5MzUsICAgOTM5LCAgIDk0MiwKLSAgICAgOTUzLCAgIDk2MSwgICA5ODgsICAg
OTkzLCAgMTAwNywgIDEwNDUsICAxMDQ4LCAgMTA1NSwgIDEwNjMsICAxMDg0LAotICAgIDExMDUs
ICAxMTE2LCAgMTE0NSwgIDExNTAsICAxMTYwLCAgMTE2NSwgIDExNzUsICAxMTc4LCAgMTE4MSwg
IDExODQsCi0gICAgMTE5MCwgIDExOTcsICAxMjAwLCAgMTIyMiwgIDEyNDAsICAxMjY0LCAgMTI4
NywgIDEyOTEsICAxMzA5LCAgMTMxNywKLSAgICAxMzQ5LCAgMTM2OSwgIDE0NTgsICAxNDY3LCAg
MTQ5MCwgIDE0OTMsICAxNDk5LCAgMTUwNywgIDE1MTUsICAxNTIzLAotICAgIDE1MzMsICAxNTQw
LCAgMTU0MywgIDE1NDYsICAxNTUyLCAgMTU1NSwgIDE1NzAsICAxNTc0LCAgMTU3OCwgIDE1ODIs
Ci0gICAgMTU5MSwgIDE1OTYsICAxNjAxLCAgMTYwNiwgIDE2MTEsICAxNjE2LCAgMTYyMSwgIDE2
MjYsICAxNjMxLCAgMTYzNiwKLSAgICAxNjQyLCAgMTY0OCwgIDE2NTQsICAxNjU5LCAgMTY2NCwg
IDE2NzMsICAxNjgyLCAgMTY4NywgIDE3MDAsICAxNzAwLAotICAgIDE3MTQsICAxNzE0LCAgMTcy
MywgIDE3MjYsICAxNzQxLCAgMTc3NywgIDE3ODEsICAxNzg3LCAgMTc5NSwgIDE4MTEsCi0gICAg
MTgxNSwgIDE4MTksICAxODIwLCAgMTgyNiwgIDE4MjcsICAxODI4LCAgMTgyOSwgIDE4MzAsICAx
ODM0LCAgMTgzNSwKLSAgICAxODM1LCAgMTgzNSwgIDE4NDUsICAxODQ2LCAgMTg1MCwgIDE4NTAs
ICAxODUxLCAgMTg1MSwgIDE4NTYsICAxODU5LAotICAgIDE4NjksICAxODcyLCAgMTg3OCwgIDE4
NzksICAxODgzLCAgMTg5MSwgIDE4OTUsICAxOTA1LCAgMTkxMCwgIDE5MjcsCi0gICAgMTkyNywg
IDE5MzIsICAxOTMyLCAgMTkzOSwgIDE5MzksICAxOTQ3LCAgMTk1MCwgIDE5NTYsICAxOTU5LCAg
MTk2NSwKLSAgICAxOTY5LCAgMTk3NiwgIDE5ODMsICAxOTkwLCAgMTk5NywgIDIwMDgsICAyMDE3
LCAgMjAyMSwgIDIwMjgsICAyMDMxLAotICAgIDIwMzcsICAyMDM3CisgICAgICAgMCwgICAxNzYs
ICAgMTc2LCAgIDE3NywgICAxODAsICAgMjIzLCAgIDIyNiwgICAyMzksICAgMjQ0LCAgIDI0OSwK
KyAgICAgMjU1LCAgIDI1OCwgICAyNjEsICAgMjY0LCAgIDM1OSwgICAzNjksICAgMzgyLCAgIDM5
MCwgICA0OTAsICAgNDkzLAorICAgICA1MDEsICAgNTA0LCAgIDUxMCwgICA1MTQsICAgNTIxLCAg
IDUyNywgICA1MzYsICAgNTQ0LCAgIDU5OSwgICA2MDksCisgICAgIDYxMiwgICA2MjIsICAgNjMy
LCAgIDY1MywgICA2NTQsICAgNjU1LCAgIDY2MCwgICA2NjEsICAgNjY5LCAgIDY4MCwKKyAgICAg
NjgxLCAgIDY4OSwgICA3MDAsICAgNzA0LCAgIDcwNSwgICA3MTUsICAgNzI1LCAgIDczNSwgICA3
NDgsICAgNzQ5LAorICAgICA3NTksICAgNzcyLCAgIDc3NiwgICA3ODAsICAgNzg0LCAgIDc4NSwg
ICA3OTgsICAgNzk5LCAgIDgxMiwgICA4MTMsCisgICAgIDgyNiwgICA4MjcsICAgODQ0LCAgIDg0
NSwgICA4NTgsICAgODU5LCAgIDg2MCwgICA4NjEsICAgODYyLCAgIDg2NiwKKyAgICAgODY5LCAg
IDg4MCwgICA4ODgsICAgOTE1LCAgIDkyMCwgICA5MzQsICAgOTg5LCAgIDk5MiwgICA5OTksICAx
MDA3LAorICAgIDEwMjgsICAxMDQ5LCAgMTA1OSwgIDEwODcsICAxMDkyLCAgMTEwMiwgIDExMDcs
ICAxMTE3LCAgMTEyMCwgIDExMjMsCisgICAgMTEyNiwgIDExMzIsICAxMTM5LCAgMTE0MiwgIDEx
NjQsICAxMTgyLCAgMTIwNiwgIDEyMjksICAxMjMzLCAgMTI1MSwKKyAgICAxMjU5LCAgMTI5MSwg
IDEzMTEsICAxMzMyLCAgMTM0MSwgIDEzNjQsICAxMzY3LCAgMTM3MywgIDEzODEsICAxMzg5LAor
ICAgIDEzOTcsICAxNDA3LCAgMTQxNCwgIDE0MTcsICAxNDIwLCAgMTQyNiwgIDE0MjksICAxNDQ0
LCAgMTQ0OCwgIDE0NTIsCisgICAgMTQ1NiwgIDE0NjAsICAxNDY1LCAgMTQ3MCwgIDE0NzUsICAx
NDgwLCAgMTQ4NSwgIDE0OTAsICAxNDk1LCAgMTUwMCwKKyAgICAxNTA1LCAgMTUxMCwgIDE1MTUs
ICAxNTIwLCAgMTUyNCwgIDE1MjgsICAxNTM2LCAgMTU0NCwgIDE1NDgsICAxNTYxLAorICAgIDE1
NjEsICAxNTc1LCAgMTU3NSwgIDE1ODQsICAxNTg3LCAgMTYwMywgIDE2MzYsICAxNjQwLCAgMTY0
NiwgIDE2NTMsCisgICAgMTY2OCwgIDE2NzIsICAxNjc2LCAgMTY3NywgIDE2ODMsICAxNjg0LCAg
MTY4NSwgIDE2ODYsICAxNjg3LCAgMTY5MSwKKyAgICAxNjkyLCAgMTY5MiwgIDE2OTIsICAxNzAy
LCAgMTcwMywgIDE3MDcsICAxNzA3LCAgMTcwOCwgIDE3MDgsICAxNzEzLAorICAgIDE3MTYsICAx
NzI2LCAgMTcyOSwgIDE3MzUsICAxNzM2LCAgMTc0MCwgIDE3NDgsICAxNzUyLCAgMTc2MiwgIDE3
NjcsCisgICAgMTc4NCwgIDE3ODQsICAxNzg5LCAgMTc4OSwgIDE3OTYsICAxNzk2LCAgMTgwNCwg
IDE4MDcsICAxODEzLCAgMTgxNiwKKyAgICAxODIyLCAgMTgyNiwgIDE4MzMsICAxODQwLCAgMTg0
NywgIDE4NTQsICAxODY1LCAgMTg3NCwgIDE4NzgsICAxODg1LAorICAgIDE4ODgsICAxODk0LCAg
MTg5NAogfTsKICNlbmRpZgogCkBAIC03ODgsMTUgKzgwNywxNSBAQCBzdGF0aWMgY29uc3QgY2hh
ciAqY29uc3QgeXl0bmFtZVtdID0KICAgIk1BVFJJWDMiLCAiTUFUUklYNCIsICJJTl9RVUFMIiwg
Ik9VVF9RVUFMIiwgIklOT1VUX1FVQUwiLCAiVU5JRk9STSIsCiAgICJWQVJZSU5HIiwgIlNUUlVD
VCIsICJWT0lEX1RZUEUiLCAiV0hJTEUiLCAiU0FNUExFUjJEIiwgIlNBTVBMRVJDVUJFIiwKICAg
IlNBTVBMRVJfRVhURVJOQUxfT0VTIiwgIlNBTVBMRVIyRFJFQ1QiLCAiSURFTlRJRklFUiIsICJU
WVBFX05BTUUiLAotICAiRkxPQVRDT05TVEFOVCIsICJJTlRDT05TVEFOVCIsICJCT09MQ09OU1RB
TlQiLCAiRklFTERfU0VMRUNUSU9OIiwKLSAgIkxFRlRfT1AiLCAiUklHSFRfT1AiLCAiSU5DX09Q
IiwgIkRFQ19PUCIsICJMRV9PUCIsICJHRV9PUCIsICJFUV9PUCIsCi0gICJORV9PUCIsICJBTkRf
T1AiLCAiT1JfT1AiLCAiWE9SX09QIiwgIk1VTF9BU1NJR04iLCAiRElWX0FTU0lHTiIsCi0gICJB
RERfQVNTSUdOIiwgIk1PRF9BU1NJR04iLCAiTEVGVF9BU1NJR04iLCAiUklHSFRfQVNTSUdOIiwg
IkFORF9BU1NJR04iLAotICAiWE9SX0FTU0lHTiIsICJPUl9BU1NJR04iLCAiU1VCX0FTU0lHTiIs
ICJMRUZUX1BBUkVOIiwgIlJJR0hUX1BBUkVOIiwKLSAgIkxFRlRfQlJBQ0tFVCIsICJSSUdIVF9C
UkFDS0VUIiwgIkxFRlRfQlJBQ0UiLCAiUklHSFRfQlJBQ0UiLCAiRE9UIiwKLSAgIkNPTU1BIiwg
IkNPTE9OIiwgIkVRVUFMIiwgIlNFTUlDT0xPTiIsICJCQU5HIiwgIkRBU0giLCAiVElMREUiLCAi
UExVUyIsCi0gICJTVEFSIiwgIlNMQVNIIiwgIlBFUkNFTlQiLCAiTEVGVF9BTkdMRSIsICJSSUdI
VF9BTkdMRSIsICJWRVJUSUNBTF9CQVIiLAotICAiQ0FSRVQiLCAiQU1QRVJTQU5EIiwgIlFVRVNU
SU9OIiwgIiRhY2NlcHQiLCAidmFyaWFibGVfaWRlbnRpZmllciIsCisgICJGTE9BVENPTlNUQU5U
IiwgIklOVENPTlNUQU5UIiwgIkJPT0xDT05TVEFOVCIsICJMRUZUX09QIiwgIlJJR0hUX09QIiwK
KyAgIklOQ19PUCIsICJERUNfT1AiLCAiTEVfT1AiLCAiR0VfT1AiLCAiRVFfT1AiLCAiTkVfT1Ai
LCAiQU5EX09QIiwKKyAgIk9SX09QIiwgIlhPUl9PUCIsICJNVUxfQVNTSUdOIiwgIkRJVl9BU1NJ
R04iLCAiQUREX0FTU0lHTiIsCisgICJNT0RfQVNTSUdOIiwgIkxFRlRfQVNTSUdOIiwgIlJJR0hU
X0FTU0lHTiIsICJBTkRfQVNTSUdOIiwgIlhPUl9BU1NJR04iLAorICAiT1JfQVNTSUdOIiwgIlNV
Ql9BU1NJR04iLCAiTEVGVF9QQVJFTiIsICJSSUdIVF9QQVJFTiIsICJMRUZUX0JSQUNLRVQiLAor
ICAiUklHSFRfQlJBQ0tFVCIsICJMRUZUX0JSQUNFIiwgIlJJR0hUX0JSQUNFIiwgIkRPVCIsICJD
T01NQSIsICJDT0xPTiIsCisgICJFUVVBTCIsICJTRU1JQ09MT04iLCAiQkFORyIsICJEQVNIIiwg
IlRJTERFIiwgIlBMVVMiLCAiU1RBUiIsICJTTEFTSCIsCisgICJQRVJDRU5UIiwgIkxFRlRfQU5H
TEUiLCAiUklHSFRfQU5HTEUiLCAiVkVSVElDQUxfQkFSIiwgIkNBUkVUIiwKKyAgIkFNUEVSU0FO
RCIsICJRVUVTVElPTiIsICIkYWNjZXB0IiwgImlkZW50aWZpZXIiLCAidmFyaWFibGVfaWRlbnRp
ZmllciIsCiAgICJwcmltYXJ5X2V4cHJlc3Npb24iLCAicG9zdGZpeF9leHByZXNzaW9uIiwgImlu
dGVnZXJfZXhwcmVzc2lvbiIsCiAgICJmdW5jdGlvbl9jYWxsIiwgImZ1bmN0aW9uX2NhbGxfb3Jf
bWV0aG9kIiwgImZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyIsCiAgICJmdW5jdGlvbl9jYWxsX2hlYWRl
cl9ub19wYXJhbWV0ZXJzIiwKQEAgLTg0Miw2MCArODYxLDYwIEBAIHN0YXRpYyBjb25zdCB5eXR5
cGVfdWludDE2IHl5dG9rbnVtW10gPQogICAgICAzMTUsICAgMzE2LCAgIDMxNywgICAzMTgsICAg
MzE5LCAgIDMyMCwgICAzMjEsICAgMzIyLCAgIDMyMywgICAzMjQsCiAgICAgIDMyNSwgICAzMjYs
ICAgMzI3LCAgIDMyOCwgICAzMjksICAgMzMwLCAgIDMzMSwgICAzMzIsICAgMzMzLCAgIDMzNCwK
ICAgICAgMzM1LCAgIDMzNiwgICAzMzcsICAgMzM4LCAgIDMzOSwgICAzNDAsICAgMzQxLCAgIDM0
MiwgICAzNDMsICAgMzQ0LAotICAgICAzNDUsICAgMzQ2LCAgIDM0NywgICAzNDgsICAgMzQ5LCAg
IDM1MAorICAgICAzNDUsICAgMzQ2LCAgIDM0NywgICAzNDgsICAgMzQ5CiB9OwogIyBlbmRpZgog
CiAvKiBZWVIxW1lZTl0gLS0gU3ltYm9sIG51bWJlciBvZiBzeW1ib2wgdGhhdCBydWxlIFlZTiBk
ZXJpdmVzLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMVtdID0KIHsKLSAgICAg
ICAwLCAgICA5NiwgICAgOTcsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk4LCAgICA5OCwgICAg
OTksICAgIDk5LAotICAgICAgOTksICAgIDk5LCAgICA5OSwgICAgOTksICAgMTAwLCAgIDEwMSwg
ICAxMDIsICAgMTAyLCAgIDEwMywgICAxMDMsCi0gICAgIDEwNCwgICAxMDQsICAgMTA1LCAgIDEw
NSwgICAxMDYsICAgMTA3LCAgIDEwNywgICAxMDcsICAgMTA4LCAgIDEwOCwKLSAgICAgMTA4LCAg
IDEwOCwgICAxMDksICAgMTA5LCAgIDEwOSwgICAxMTAsICAgMTEwLCAgIDExMCwgICAxMTEsICAg
MTExLAotICAgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTMs
ICAgMTE0LCAgIDExNCwgICAxMTQsCi0gICAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwgICAx
MTgsICAgMTE5LCAgIDExOSwgICAxMjAsICAgMTIwLCAgIDEyMSwKLSAgICAgMTIxLCAgIDEyMiwg
ICAxMjIsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTIzLCAgIDEyMywgICAxMjQsICAgMTI0LAot
ICAgICAxMjUsICAgMTI2LCAgIDEyNiwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjgsICAgMTI5
LCAgIDEyOSwgICAxMzAsCi0gICAgIDEzMSwgICAxMzEsICAgMTMyLCAgIDEzMiwgICAxMzIsICAg
MTMyLCAgIDEzMywgICAxMzMsICAgMTMzLCAgIDEzMywKLSAgICAgMTM0LCAgIDEzNSwgICAxMzUs
ICAgMTM1LCAgIDEzNSwgICAxMzUsICAgMTM2LCAgIDEzNiwgICAxMzYsICAgMTM2LAotICAgICAx
MzYsICAgMTM2LCAgIDEzNywgICAxMzcsICAgMTM4LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEz
OCwgICAxMzksCi0gICAgIDEzOSwgICAxNDAsICAgMTQwLCAgIDE0MCwgICAxNDEsICAgMTQxLCAg
IDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwKKyAgICAgICAwLCAgICA5NSwgICAgOTYsICAgIDk2
LCAgICA5NywgICAgOTgsICAgIDk4LCAgICA5OCwgICAgOTgsICAgIDk4LAorICAgICAgOTksICAg
IDk5LCAgICA5OSwgICAgOTksICAgIDk5LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAx
MDIsCisgICAgIDEwMywgICAxMDMsICAgMTA0LCAgIDEwNCwgICAxMDUsICAgMTA1LCAgIDEwNiwg
ICAxMDcsICAgMTA3LCAgIDEwOCwKKyAgICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA5LCAgIDEw
OSwgICAxMDksICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTExLAorICAgICAxMTEsICAgMTExLCAg
IDExMiwgICAxMTMsICAgMTEzLCAgIDExMywgICAxMTMsICAgMTEzLCAgIDExNCwgICAxMTQsCisg
ICAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE4LCAgIDExOSwgICAxMTks
ICAgMTIwLCAgIDEyMCwKKyAgICAgMTIxLCAgIDEyMSwgICAxMjIsICAgMTIyLCAgIDEyMywgICAx
MjMsICAgMTIzLCAgIDEyMywgICAxMjMsICAgMTI0LAorICAgICAxMjQsICAgMTI1LCAgIDEyNiwg
ICAxMjYsICAgMTI2LCAgIDEyNywgICAxMjgsICAgMTI4LCAgIDEyOSwgICAxMjksCisgICAgIDEz
MCwgICAxMzEsICAgMTMxLCAgIDEzMiwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzMsICAgMTMz
LCAgIDEzMywKKyAgICAgMTMzLCAgIDEzNCwgICAxMzUsICAgMTM1LCAgIDEzNSwgICAxMzUsICAg
MTM1LCAgIDEzNiwgICAxMzYsICAgMTM2LAorICAgICAxMzYsICAgMTM2LCAgIDEzNiwgICAxMzcs
ICAgMTM3LCAgIDEzOCwgICAxMzgsICAgMTM4LCAgIDEzOCwgICAxMzgsCisgICAgIDEzOSwgICAx
MzksICAgMTQwLCAgIDE0MCwgICAxNDAsICAgMTQxLCAgIDE0MSwgICAxNDIsICAgMTQyLCAgIDE0
MiwKICAgICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAg
IDE0MiwgICAxNDIsICAgMTQyLAotICAgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQy
LCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0NCwgICAxNDMsCi0gICAgIDE0NSwgICAxNDMsICAg
MTQ2LCAgIDE0NiwgICAxNDcsICAgMTQ4LCAgIDE0OCwgICAxNDksICAgMTQ5LCAgIDE1MCwKLSAg
ICAgMTUxLCAgIDE1MiwgICAxNTIsICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1Mywg
ICAxNTQsICAgMTU1LAotICAgICAxNTYsICAgMTU0LCAgIDE1NywgICAxNTcsICAgMTU5LCAgIDE1
OCwgICAxNjAsICAgMTU4LCAgIDE2MSwgICAxNjEsCi0gICAgIDE2MiwgICAxNjIsICAgMTYzLCAg
IDE2MywgICAxNjQsICAgMTY1LCAgIDE2NSwgICAxNjYsICAgMTY2LCAgIDE2OCwKLSAgICAgMTY3
LCAgIDE2OSwgICAxNjcsICAgMTcwLCAgIDE2NywgICAxNzEsICAgMTcxLCAgIDE3MiwgICAxNzIs
ICAgMTczLAotICAgICAxNzMsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAx
NzUsICAgMTc1LCAgIDE3NiwgICAxNzYsCi0gICAgIDE3OCwgICAxNzcKKyAgICAgMTQyLCAgIDE0
MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQ0
LAorICAgICAxNDMsICAgMTQ1LCAgIDE0MywgICAxNDYsICAgMTQ2LCAgIDE0NywgICAxNDgsICAg
MTQ4LCAgIDE0OSwgICAxNDksCisgICAgIDE1MCwgICAxNTEsICAgMTUyLCAgIDE1MiwgICAxNTMs
ICAgMTUzLCAgIDE1MywgICAxNTMsICAgMTUzLCAgIDE1NCwKKyAgICAgMTU1LCAgIDE1NiwgICAx
NTQsICAgMTU3LCAgIDE1NywgICAxNTksICAgMTU4LCAgIDE2MCwgICAxNTgsICAgMTYxLAorICAg
ICAxNjEsICAgMTYyLCAgIDE2MiwgICAxNjMsICAgMTYzLCAgIDE2NCwgICAxNjUsICAgMTY1LCAg
IDE2NiwgICAxNjYsCisgICAgIDE2OCwgICAxNjcsICAgMTY5LCAgIDE2NywgICAxNzAsICAgMTY3
LCAgIDE3MSwgICAxNzEsICAgMTcyLCAgIDE3MiwKKyAgICAgMTczLCAgIDE3MywgICAxNzQsICAg
MTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NSwgICAxNzUsICAgMTc2LAorICAgICAxNzYs
ICAgMTc4LCAgIDE3NwogfTsKIAogLyogWVlSMltZWU5dIC0tIE51bWJlciBvZiBzeW1ib2xzIGNv
bXBvc2luZyByaWdodCBoYW5kIHNpZGUgb2YgcnVsZSBZWU4uICAqLwogc3RhdGljIGNvbnN0IHl5
dHlwZV91aW50OCB5eXIyW10gPQogewotICAgICAgIDAsICAgICAyLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDQsCi0gICAgICAgMSwgICAgIDMs
ICAgICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAyLCAgICAgMiwK
LSAgICAgICAyLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAyLAotICAgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDMsCi0gICAgICAgMywgICAgIDEsICAgICAx
LCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMywKLSAgICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwgICAg
IDMsICAgICAxLAotICAgICAgIDUsICAgICAxLCAgICAgMywgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsCi0gICAgICAgMSwgICAgIDIsICAgICAyLCAgICAg
NCwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMywKLSAgICAgICAyLCAg
ICAgNSwgICAgIDMsICAgICAyLCAgICAgMywgICAgIDIsICAgICAwLCAgICAgMSwgICAgIDEsICAg
ICAxLAotICAgICAgIDEsICAgICAxLCAgICAgMywgICAgIDUsICAgICA2LCAgICAgNSwgICAgIDEs
ICAgICAyLCAgICAgNCwgICAgIDUsCi0gICAgICAgNCwgICAgIDIsICAgICAxLCAgICAgMiwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwKLSAgICAgICAyLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDQsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAor
ICAgICAgIDAsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDMsCisgICAgICAgMSwgICAgIDQsICAgICAxLCAgICAgMywgICAgIDIsICAg
ICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywKKyAgICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAxLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLAorICAgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAg
MywgICAgIDEsCisgICAgICAgMywgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAzLCAg
ICAgMywgICAgIDMsICAgICAxLCAgICAgMywKKyAgICAgICAzLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLAorICAgICAgIDEsICAg
ICA1LCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsCisgICAgICAgMywgICAgIDEsICAgICAyLCAgICAgMiwgICAgIDQsICAgICAyLCAgICAgMSwg
ICAgIDEsICAgICAyLCAgICAgMywKKyAgICAgICAzLCAgICAgMiwgICAgIDUsICAgICAzLCAgICAg
MiwgICAgIDMsICAgICAyLCAgICAgMCwgICAgIDEsICAgICAxLAorICAgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDMsICAgICA1LCAgICAgNiwgICAgIDUsICAgICAxLCAgICAgMiwgICAgIDQsCisg
ICAgICAgNSwgICAgIDQsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAyLCAgICAgMSwKKyAgICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICA0LCAgICAgMSwgICAgIDEsICAgICAxLAogICAgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAw
LCAgICAgNiwKLSAgICAgICAwLCAgICAgNSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDEsICAg
ICAzLCAgICAgMSwgICAgIDQsICAgICAxLAotICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDAsCi0gICAgICAgMCwgICAg
IDUsICAgICAxLCAgICAgMSwgICAgIDAsICAgICAyLCAgICAgMCwgICAgIDIsICAgICAyLCAgICAg
MywKLSAgICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgNSwgICAgIDMsICAgICAxLCAg
ICAgMSwgICAgIDQsICAgICAwLAotICAgICAgIDYsICAgICAwLCAgICAgOCwgICAgIDAsICAgICA3
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDIsCi0gICAgICAgMywgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwKLSAg
ICAgICAwLCAgICAgMworICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDAsCisgICAgICAgNiwgICAgIDAsICAgICA1LCAg
ICAgMSwgICAgIDIsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgNCwKKyAgICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAyLAorICAgICAgIDAsICAgICAwLCAgICAgNSwgICAgIDEsICAgICAxLCAgICAgMCwgICAg
IDIsICAgICAwLCAgICAgMiwgICAgIDIsCisgICAgICAgMywgICAgIDEsICAgICAyLCAgICAgMSwg
ICAgIDIsICAgICA1LCAgICAgMywgICAgIDEsICAgICAxLCAgICAgNCwKKyAgICAgICAwLCAgICAg
NiwgICAgIDAsICAgICA4LCAgICAgMCwgICAgIDcsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAw
LAorICAgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMywgICAgIDIsICAg
ICAxLCAgICAgMiwgICAgIDEsCisgICAgICAgMSwgICAgIDAsICAgICAzCiB9OwogCiAvKiBZWURF
RkFDVFtTVEFURS1OQU1FXSAtLSBEZWZhdWx0IHJ1bGUgdG8gcmVkdWNlIHdpdGggaW4gc3RhdGUK
QEAgLTkwMyw0MDAgKzkyMiw0MTYgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIyW10g
PQogICAgbWVhbnMgdGhlIGRlZmF1bHQgaXMgYW4gZXJyb3IuICAqLwogc3RhdGljIGNvbnN0IHl5
dHlwZV91aW50OCB5eWRlZmFjdFtdID0KIHsKLSAgICAgICAwLCAgICAgMCwgICAxMTEsICAgMTEy
LCAgIDExMywgICAgIDAsICAgMTA1LCAgIDEwNCwgICAxMTksICAgMTE3LAotICAgICAxMTgsICAg
MTIzLCAgIDEyNCwgICAxMjUsICAgMTI2LCAgIDEyNywgICAxMjgsICAgMTIwLCAgIDEyMSwgICAx
MjIsCi0gICAgIDEyOSwgICAxMzAsICAgMTMxLCAgIDEwOCwgICAxMDYsICAgICAwLCAgIDExNiwg
ICAxMzIsICAgMTMzLCAgIDEzNCwKLSAgICAgMTM1LCAgIDEzNywgICAxOTksICAgMjAwLCAgICAg
MCwgICAgNzYsICAgIDg2LCAgICAgMCwgICAgOTEsICAgIDk2LAotICAgICAgIDAsICAgMTAyLCAg
ICAgMCwgICAxMDksICAgMTE0LCAgIDEzNiwgICAgIDAsICAgMTk2LCAgIDE5OCwgICAxMDcsCi0g
ICAgIDEwMSwgICAgIDAsICAgICAwLCAgIDE0MCwgICAgNzEsICAgICAwLCAgICA3NCwgICAgODYs
ICAgICAwLCAgICA4NywKLSAgICAgIDg4LCAgICA4OSwgICAgNzcsICAgICAwLCAgICA4NiwgICAg
IDAsICAgIDcyLCAgICA5NywgICAxMDMsICAgMTEwLAotICAgICAgIDAsICAgICAxLCAgIDE5Nywg
ICAgIDAsICAgMTM4LCAgICAgMCwgICAgIDAsICAgMjAxLCAgICA3OCwgICAgODMsCi0gICAgICA4
NSwgICAgOTAsICAgICAwLCAgICA5MiwgICAgNzksICAgICAwLCAgICAgMCwgICAgIDIsICAgICA1
LCAgICAgNCwKLSAgICAgICA2LCAgICAyNywgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzQsICAg
IDMzLCAgICAzMiwgICAgIDMsICAgICA4LAotICAgICAgMjgsICAgIDEwLCAgICAxNSwgICAgMTYs
ICAgICAwLCAgICAgMCwgICAgMjEsICAgICAwLCAgICAzNSwgICAgIDAsCi0gICAgICAzOCwgICAg
NDEsICAgIDQyLCAgICA0NywgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU1LCAgICA1
NywKLSAgICAgIDU5LCAgICA3MCwgICAgIDAsICAgIDI1LCAgICA3MywgICAgIDAsICAgICAwLCAg
ICAgMCwgICAxNDIsICAgICAwLAotICAgICAgIDAsICAgMTgxLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgMTU5LCAgIDE2OCwgICAxNzIsCi0gICAgICAzNSwgICAgNjEsICAg
IDY4LCAgICAgMCwgICAxNTAsICAgICAwLCAgIDExNCwgICAxNTMsICAgMTcwLCAgIDE1MiwKLSAg
ICAgMTUxLCAgICAgMCwgICAxNTQsICAgMTU1LCAgIDE1NiwgICAxNTcsICAgIDgwLCAgICA4Miwg
ICAgODQsICAgICAwLAotICAgICAgIDAsICAgIDk4LCAgICAgMCwgICAxNDksICAgMTAwLCAgICAy
OSwgICAgMzAsICAgICAwLCAgICAxMiwgICAgMTMsCi0gICAgICAgMCwgICAgIDAsICAgIDE5LCAg
ICAxOCwgICAgIDAsICAgIDIwLCAgICAyMiwgICAgMjQsICAgIDMxLCAgICAgMCwKLSAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxMTUsICAgICAwLCAgIDE0NywgICAg
IDAsICAgMTQ1LCAgIDE0MSwgICAxNDMsCi0gICAgIDE5MiwgICAxOTEsICAgMTY2LCAgIDE4Mywg
ICAgIDAsICAgMTk1LCAgIDE5MywgICAgIDAsICAgMTc5LCAgIDE1OCwKLSAgICAgICAwLCAgICA2
NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjMsICAgICAwLCAgICAgMCwgICAxNzMsICAgMTY5
LAotICAgICAxNzEsICAgICAwLCAgICA5MywgICAgIDAsICAgIDk1LCAgICA5OSwgICAgIDcsICAg
ICAwLCAgICAxNCwgICAgMjYsCi0gICAgICAxMSwgICAgMTcsICAgIDIzLCAgICAzNiwgICAgMzcs
ICAgIDQwLCAgICAzOSwgICAgNDUsICAgIDQ2LCAgICA0MywKLSAgICAgIDQ0LCAgICA0OCwgICAg
NDksICAgIDU0LCAgICA1NiwgICAgNTgsICAgICAwLCAgIDEzOSwgICAgIDAsICAgICAwLAotICAg
ICAxNDQsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTQsICAgICAwLCAg
IDE2MCwgICAgNjIsCi0gICAgICA2OSwgICAgIDAsICAgIDk0LCAgICAgOSwgICAgIDAsICAgICAw
LCAgIDE0NiwgICAgIDAsICAgMTY1LCAgIDE2NywKLSAgICAgMTg2LCAgIDE4NSwgICAxODgsICAg
MTY2LCAgIDE3NywgICAgIDAsICAgICAwLCAgICAgMCwgICAgODEsICAgIDYwLAotICAgICAxNDgs
ICAgICAwLCAgIDE4NywgICAgIDAsICAgICAwLCAgIDE3NiwgICAxNzQsICAgICAwLCAgICAgMCwg
ICAxNjEsCi0gICAgICAgMCwgICAxODksICAgICAwLCAgIDE2NiwgICAgIDAsICAgMTYzLCAgIDE4
MCwgICAxNjIsICAgICAwLCAgIDE5MCwKLSAgICAgMTg0LCAgIDE3NSwgICAxNzgsICAgMTgyCisg
ICAgICAgMCwgICAgIDAsICAgMTEyLCAgIDExMywgICAxMTQsICAgICAwLCAgIDEwNiwgICAxMDUs
ICAgMTIwLCAgIDExOCwKKyAgICAgMTE5LCAgIDEyNCwgICAxMjUsICAgMTI2LCAgIDEyNywgICAx
MjgsICAgMTI5LCAgIDEyMSwgICAxMjIsICAgMTIzLAorICAgICAxMzAsICAgMTMxLCAgIDEzMiwg
ICAxMDksICAgMTA3LCAgICAgMCwgICAxMTcsICAgMTMzLCAgIDEzNCwgICAxMzUsCisgICAgIDEz
NiwgICAxMzgsICAgMjAwLCAgIDIwMSwgICAgIDAsICAgIDc3LCAgICA4NywgICAgIDAsICAgIDky
LCAgICA5NywKKyAgICAgICAwLCAgIDEwMywgICAgIDAsICAgMTEwLCAgIDExNSwgICAxMzcsICAg
ICAwLCAgIDE5NywgICAxOTksICAgMTA4LAorICAgICAxMDIsICAgICAwLCAgICAgMiwgICAgIDMs
ICAgMTQxLCAgICAgMCwgICAgNzIsICAgICAwLCAgICA3NSwgICAgODcsCisgICAgICAgMCwgICAg
ODgsICAgIDg5LCAgICA5MCwgICAgNzgsICAgICAwLCAgICA4NywgICAgIDAsICAgIDczLCAgICAg
MiwKKyAgICAgIDk4LCAgIDEwNCwgICAxMTEsICAgICAwLCAgICAgMSwgICAxOTgsICAgICAwLCAg
ICAgMCwgICAxMzksICAgICAwLAorICAgICAyMDIsICAgIDc5LCAgICA4NCwgICAgODYsICAgIDkx
LCAgICAgMCwgICAgOTMsICAgIDgwLCAgICAgMCwgICAgIDAsCisgICAgICAgNCwgICAgIDcsICAg
ICA2LCAgICAgOCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzUsICAgIDM0LCAgICAzMywKKyAg
ICAgICA1LCAgICAxMCwgICAgMjksICAgIDEyLCAgICAxNywgICAgMTgsICAgICAwLCAgICAgMCwg
ICAgMjMsICAgICAwLAorICAgICAgMzYsICAgICAwLCAgICAzOSwgICAgNDIsICAgIDQzLCAgICA0
OCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsCisgICAgICA1NiwgICAgNTgsICAgIDYwLCAg
ICA3MSwgICAgIDAsICAgIDI3LCAgICA3NCwgICAgIDAsICAgICAwLCAgIDE0MywKKyAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgMTgyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMTYwLAorICAgICAxNjksICAgMTczLCAgICAzNiwgICAgNjIsICAgIDY5LCAgICAgMCwgICAx
NTEsICAgICAwLCAgIDExNSwgICAxNTQsCisgICAgIDE3MSwgICAxNTMsICAgMTUyLCAgICAgMCwg
ICAxNTUsICAgMTU2LCAgIDE1NywgICAxNTgsICAgIDgxLCAgICA4MywKKyAgICAgIDg1LCAgICAg
MCwgICAgIDAsICAgIDk5LCAgICAgMCwgICAxNTAsICAgMTAxLCAgICAzMCwgICAgMzEsICAgICAw
LAorICAgICAgMTQsICAgIDE1LCAgICAgMCwgICAgIDAsICAgIDIxLCAgICAyMCwgICAgIDAsICAg
IDIyLCAgICAyNCwgICAgMjYsCisgICAgICAzMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAxMTYsICAgMTQ4LCAgICAgMCwgICAxNDYsICAgMTQyLAorICAg
ICAxNDQsICAgICAwLCAgIDE5MywgICAxOTIsICAgMTY3LCAgIDE4NCwgICAgIDAsICAgMTk2LCAg
IDE5NCwgICAgIDAsCisgICAgIDE4MCwgICAxNTksICAgICAwLCAgICA2NSwgICAgNjYsICAgIDY3
LCAgICA2OCwgICAgNjQsICAgICAwLCAgICAgMCwKKyAgICAgMTc0LCAgIDE3MCwgICAxNzIsICAg
ICAwLCAgICA5NCwgICAgIDAsICAgIDk2LCAgIDEwMCwgICAgIDksICAgICAwLAorICAgICAgMTYs
ICAgICAyLCAgICAgMywgICAgMTMsICAgIDE5LCAgICAyNSwgICAgMzcsICAgIDM4LCAgICA0MSwg
ICAgNDAsCisgICAgICA0NiwgICAgNDcsICAgIDQ0LCAgICA0NSwgICAgNDksICAgIDUwLCAgICA1
NSwgICAgNTcsICAgIDU5LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAxNDUsICAgMTQwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTk1LAorICAgICAgIDAsICAgMTYx
LCAgICA2MywgICAgNzAsICAgICAwLCAgICA5NSwgICAgMTEsICAgICAwLCAgICAgMCwgICAxNDcs
CisgICAgICAgMCwgICAxNjYsICAgMTY4LCAgIDE4NywgICAxODYsICAgMTg5LCAgIDE2NywgICAx
NzgsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICA4MiwgICAgNjEsICAgMTQ5LCAgICAgMCwg
ICAxODgsICAgICAwLCAgICAgMCwgICAxNzcsICAgMTc1LAorICAgICAgIDAsICAgICAwLCAgIDE2
MiwgICAgIDAsICAgMTkwLCAgICAgMCwgICAxNjcsICAgICAwLCAgIDE2NCwgICAxODEsCisgICAg
IDE2MywgICAgIDAsICAgMTkxLCAgIDE4NSwgICAxNzYsICAgMTc5LCAgIDE4MwogfTsKIAogLyog
WVlERUZHT1RPW05URVJNLU5VTV0uICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWRl
ZmdvdG9bXSA9CiB7Ci0gICAgICAtMSwgICAgOTgsICAgIDk5LCAgIDEwMCwgICAyMjcsICAgMTAx
LCAgIDEwMiwgICAxMDMsICAgMTA0LCAgIDEwNSwKLSAgICAgMTA2LCAgIDEwNywgICAxNDAsICAg
MTA5LCAgIDExMCwgICAxMTEsICAgMTEyLCAgIDExMywgICAxMTQsICAgMTE1LAotICAgICAxMTYs
ICAgMTE3LCAgIDExOCwgICAxMTksICAgMTIwLCAgIDE0MSwgICAxNDIsICAgMjE2LCAgIDE0Mywg
ICAxMjIsCi0gICAgIDE0NCwgICAxNDUsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDc5LCAgICA2
MiwgICAgNjMsICAgIDgwLCAgICAzNywKLSAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAg
ICA0MiwgICAgNDMsICAgMTIzLCAgICA0NSwgICAxMjUsICAgIDc1LAotICAgICAxMjcsICAgMTI4
LCAgIDE5NiwgICAxOTcsICAgMTY0LCAgIDE0NywgICAxNDgsICAgMTQ5LCAgIDE1MCwgICAyMTAs
Ci0gICAgIDI3NywgICAyOTYsICAgMjUxLCAgIDI1MiwgICAyNTMsICAgMjk3LCAgIDE1MSwgICAx
NTIsICAgMTUzLCAgIDI4NiwKLSAgICAgMjc2LCAgIDE1NCwgICAyNTcsICAgMjAyLCAgIDI1NCwg
ICAyNzIsICAgMjgzLCAgIDI4NCwgICAxNTUsICAgIDQ2LAotICAgICAgNDcsICAgIDQ4LCAgICA1
NQorICAgICAgLTEsICAgMTk2LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDIyOSwgICAxMDMsICAg
MTA0LCAgIDEwNSwgICAxMDYsCisgICAgIDEwNywgICAxMDgsICAgMTA5LCAgIDE0MiwgICAxMTEs
ICAgMTEyLCAgIDExMywgICAxMTQsICAgMTE1LCAgIDExNiwKKyAgICAgMTE3LCAgIDExOCwgICAx
MTksICAgMTIwLCAgIDEyMSwgICAxMjIsICAgMTQzLCAgIDE0NCwgICAyMTgsICAgMTQ1LAorICAg
ICAxMjQsICAgMTQ2LCAgIDE0NywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgODIsICAgIDY0LCAg
ICA2NSwgICAgODMsCisgICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQy
LCAgICA0MywgICAxMjUsICAgIDQ1LCAgIDEzMCwKKyAgICAgIDc3LCAgIDEyOCwgICAxMjksICAg
MTk3LCAgIDE5OCwgICAxNjYsICAgMTQ5LCAgIDE1MCwgICAxNTEsICAgMTUyLAorICAgICAyMTIs
ICAgMjgwLCAgIDI5OSwgICAyNTQsICAgMjU1LCAgIDI1NiwgICAzMDAsICAgMTUzLCAgIDE1NCwg
ICAxNTUsCisgICAgIDI4OSwgICAyNzksICAgMTU2LCAgIDI2MCwgICAyMDQsICAgMjU3LCAgIDI3
NSwgICAyODYsICAgMjg3LCAgIDE1NywKKyAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDU3CiB9
OwogCiAvKiBZWVBBQ1RbU1RBVEUtTlVNXSAtLSBJbmRleCBpbiBZWVRBQkxFIG9mIHRoZSBwb3J0
aW9uIGRlc2NyaWJpbmcKICAgIFNUQVRFLU5VTS4gICovCi0jZGVmaW5lIFlZUEFDVF9OSU5GIC0y
NjYKKyNkZWZpbmUgWVlQQUNUX05JTkYgLTI2MQogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5
eXBhY3RbXSA9CiB7Ci0gICAgMTI1MywgICAtMjAsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTQ4
LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAt
MjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYs
ICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIC0zOSwgIC0yNjYsICAtMjY2LCAgLTI2Niwg
IC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIC0xOCwgICAgLTIsICAgICA2LCAgICAy
MSwgICAtNjEsICAtMjY2LCAgICA1MSwKLSAgICAxMjk2LCAgLTI2NiwgIDEzNzAsICAtMjY2LCAg
ICAyNSwgIC0yNjYsICAxMjA5LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAxMzcw
LCAgICA0MiwgIC0yNjYsICAtMjY2LCAgICA1MCwgIC0yNjYsICAgIDcxLCAgICA5NSwgIC0yNjYs
Ci0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgMTI5NiwgICAxMjMsICAgMTA1LCAgLTI2NiwgICAg
IDksICAtMjY2LCAgLTI2NiwKLSAgICAgOTc0LCAgLTI2NiwgIC0yNjYsICAgIDgxLCAgLTI2Niwg
IDEyOTYsICAgMjkwLCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgMTI1LCAgMTI5
NiwgICAtMTMsICAtMjY2LCAgIDc3NiwgICA5NzQsICAgIDk5LCAgLTI2NiwgIC0yNjYsCi0gICAg
LTI2NiwgIC0yNjYsICAgOTc0LCAgIDk3NCwgICA5NzQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAt
MjY2LCAgLTI2NiwKLSAgICAgIDM1LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDEwMCwgICAgLTYs
ICAxMDQwLCAgIDEwNCwgIC0yNjYsICAgOTc0LAotICAgICAgMzYsICAgLTY0LCAgLTI2NiwgICAt
MjEsICAgMTAyLCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDExMywgICAxMTcsCi0gICAgIC01MSwg
IC0yNjYsICAgMTA4LCAgLTI2NiwgIC0yNjYsICAxMjk2LCAgIDEyOSwgIDExMDksICAtMjY2LCAg
ICA5NywKLSAgICAgMTAzLCAgLTI2NiwgICAxMTIsICAgMTE0LCAgIDEwNiwgICA4NDIsICAgMTE1
LCAgIDExNiwgIC0yNjYsICAtMjY2LAotICAgICAgMzksICAtMjY2LCAgLTI2NiwgICAtNDMsICAt
MjY2LCAgIC0xOCwgICAgNDcsICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICAzNzQs
ICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDExOCwgIC0yNjYsICAtMjY2LCAgIDkwOCwK
LSAgICAgOTc0LCAgLTI2NiwgICAxMjAsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgICAx
OSwgIC0yNjYsICAtMjY2LAotICAgICA5NzQsICAxMzMzLCAgLTI2NiwgIC0yNjYsICAgOTc0LCAg
IDExOSwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICA5NzQsCi0gICAgIDk3NCwgICA5NzQsICAgOTc0
LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwKLSAgICAg
OTc0LCAgIDk3NCwgICA5NzQsICAtMjY2LCAgMTE1MiwgICAxMjIsICAgLTI5LCAgLTI2NiwgIC0y
NjYsICAtMjY2LAotICAgIC0yNjYsICAtMjY2LCAgIDEyMSwgIC0yNjYsICAgOTc0LCAgLTI2Niwg
IC0yNjYsICAgICA1LCAgLTI2NiwgIC0yNjYsCi0gICAgIDQ1OCwgIC0yNjYsICAtMjY2LCAgLTI2
NiwgIC0yNjYsICAtMjY2LCAgIDk3NCwgICA5NzQsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAg
IDk3NCwgIC0yNjYsICAgMTM3LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDEzOCwgICAxMTEsICAt
MjY2LAotICAgICAxNDIsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgICAzNiwgICAgMzYs
ICAtMjY2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICAtMjEsICAgLTIxLCAgLTI2NiwgICAx
MTMsICAgMTE3LCAgICA4MiwgIC0yNjYsICAgOTc0LCAgIDEyOSwKLSAgICAtMjY2LCAgIDE3NSwg
ICAgNTAsICAgNjI2LCAgIDcxMCwgICAgMzgsICAtMjY2LCAgIDE5NywgICA0NTgsICAtMjY2LAot
ICAgIC0yNjYsICAgMTQxLCAgLTI2NiwgIC0yNjYsICAgOTc0LCAgIDE1NSwgIC0yNjYsICAgMTQ1
LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgIC0yNjYsICAgMTk3LCAgIDEyMSwgICAxMTEsICAg
MTg2LCAgIDE1OSwgICAxNjAsICAtMjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgIDk3NCwgIC0yNjYs
ICAgMTY2LCAgIDE3NiwgICAyMzYsICAtMjY2LCAgIDE3NCwgICA1NDIsICAtMjY2LAotICAgICAg
NDMsICAgOTc0LCAgIDU0MiwgICAxMjEsICAgOTc0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDE3
NywgICAxMTEsCi0gICAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NgorICAgIDEzMjcsICAgLTIw
LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDExMywgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEs
CisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0y
NjEsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwg
ICAtMTksICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgLTI2
MSwgICAtNjEsICAgLTQwLCAgIC0yOCwgICAgNzUsICAgIC03LCAgLTI2MSwgICAgMjQsCisgICAg
MTM3MCwgIC0yNjEsICAxNDQ0LCAgLTI2MSwgICAtMTEsICAtMjYxLCAgMTI4MywgIC0yNjEsICAt
MjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgMTQ0NCwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAgIDYs
ICAtMjYxLCAgICA1NCwgIC0yNjEsICAgIDg4LAorICAgICAgNjIsICAtMjYxLCAgLTI2MSwgIC0y
NjEsICAtMjYxLCAgMTM3MCwgICAgNTksICAgIDkxLCAgLTI2MSwgICAgMzYsCisgICAgIC01MCwg
IC0yNjEsICAtMjYxLCAgMTA1MSwgIC0yNjEsICAtMjYxLCAgICA2MywgIDEzNzAsICAtMjYxLCAg
IDI5MywKKyAgICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICA5MSwgIDEzNzAsICAgLTEy
LCAgLTI2MSwgICA4NTYsICAxMDUxLAorICAgICAgNzcsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAx
MDUxLCAgMTA1MSwgIDEwNTEsICAtMjYxLCAgLTI2MSwgIC0yNjEsCisgICAgLTI2MSwgIC0yNjEs
ICAgLTE0LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICA4NCwgICAtNDQsICAxMTE2LCAgICA5NSwK
KyAgICAtMjYxLCAgMTA1MSwgICAgNTMsICAgICAzLCAgLTI2MSwgICAtMzYsICAgIDg5LCAgLTI2
MSwgIC0yNjEsICAtMjYxLAorICAgICAxMDQsICAgMTA3LCAgIC00NSwgIC0yNjEsICAgIDk2LCAg
LTI2MSwgIC0yNjEsICAgIDkxLCAgMTE4NCwgIC0yNjEsCisgICAgMTM3MCwgICAgOTIsICAgIDkz
LCAgLTI2MSwgICAgOTgsICAgMTAxLCAgICA5NCwgICA5MjEsICAgMTA1LCAgIDEwMiwKKyAgICAt
MjYxLCAgLTI2MSwgICAgNzIsICAtMjYxLCAgLTI2MSwgICAgIDksICAtMjYxLCAgIC02MSwgICAg
NDIsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAzNzYsICAtMjYxLCAgLTI2MSwg
IC0yNjEsICAtMjYxLCAgIDEwNiwgIC0yNjEsCisgICAgLTI2MSwgICA5ODYsICAxMDUxLCAgLTI2
MSwgICAxMDMsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIC00MSwKKyAgICAtMjYxLCAg
LTI2MSwgIDEwNTEsICAxNDA3LCAgLTI2MSwgIC0yNjEsICAxMDUxLCAgIDExMCwgIC0yNjEsICAt
MjYxLAorICAgIC0yNjEsICAxMDUxLCAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEwNTEs
ICAxMDUxLCAgMTA1MSwgIDEwNTEsCisgICAgMTA1MSwgIDEwNTEsICAxMDUxLCAgMTA1MSwgIDEw
NTEsICAtMjYxLCAgIDEwOSwgICAgMjMsICAtMjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgMTIyNywg
IC0yNjEsICAtMjYxLCAgIDExMSwgIC0yNjEsICAxMDUxLCAgLTI2MSwgIC0yNjEsICAgIDI1LAor
ICAgIC0yNjEsICAtMjYxLCAgIDQ1OSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYx
LCAgMTA1MSwgIDEwNTEsCisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgMTA1MSwgIC0yNjEsICAg
MTE0LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDExNSwKKyAgICAgMTEyLCAgICA3NywgICAxMTYs
ICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAgNTMsICAgIDUzLAorICAgIC0y
NjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAgLTM2LCAgIC0zNiwgIC0yNjEsICAgMTA0LCAgIDEw
NywgICAgNzYsCisgICAgMTA1MSwgICAgOTEsICAtMjYxLCAgLTI2MSwgICAxNDUsICAgIDU0LCAg
IDYyNSwgICA3MDgsICAgIC02LCAgLTI2MSwKKyAgICAgNzkxLCAgIDQ1OSwgIC0yNjEsICAtMjYx
LCAgIDExNywgIC0yNjEsICAtMjYxLCAgMTA1MSwgICAxMjAsICAtMjYxLAorICAgICAxMjQsICAt
MjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgIDc5MSwgICAxMTEsICAgMTEyLCAgICA5MSwgICAx
MjUsCisgICAgIDEyMiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIDEwNTEsICAtMjYxLCAgIDExOCwg
ICAxMjgsICAgMTgwLCAgLTI2MSwKKyAgICAgMTI2LCAgIDU0MiwgIC0yNjEsICAgIC01LCAgMTA1
MSwgICA1NDIsICAgMTExLCAgMTA1MSwgIC0yNjEsICAtMjYxLAorICAgIC0yNjEsICAgMTIzLCAg
IDExMiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEKIH07CiAKIC8qIFlZUEdPVE9bTlRFUk0t
TlVNXS4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5cGdvdG9bXSA9CiB7Ci0gICAg
LTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAgODUsICAt
MjY2LCAgLTI2NiwKLSAgICAtMjY2LCAgLTI2NiwgICAtNDQsICAtMjY2LCAgIC0xNSwgIC0yNjYs
ICAgLTU1LCAgIC0xOSwgIC0yNjYsICAtMjY2LAotICAgIC0yNjYsICAgIDcyLCAgICA3MCwgICAg
NzMsICAtMjY2LCAgIC02NiwgICAtODMsICAtMjY2LCAgIC05MiwgICAtNzMsCi0gICAgICAxMywg
ICAgMTQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTgwLCAgIDIwNiwgICAyMDEsICAgMTg0LCAg
LTI2NiwKLSAgICAtMjY2LCAgLTI0MSwgICAtMjUsICAgLTMwLCAgIDI2MiwgICAgLTQsICAgICAw
LCAgLTI2NiwgIC0yNjYsICAtMjY2LAotICAgICAxNDMsICAtMTIyLCAgLTI2NiwgICAgMjIsICAt
MTQ1LCAgICAxNiwgIC0xNDQsICAtMjI2LCAgLTI2NiwgIC0yNjYsCi0gICAgLTI2NiwgICAtMTcs
ICAtMjY1LCAgLTI2NiwgIC0yNjYsICAgLTU0LCAgICA2MywgICAgMjAsICAtMjY2LCAgLTI2NiwK
LSAgICAgICA0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2
NiwgIC0yNjYsICAtMjY2LAotICAgICAyMzEsICAtMjY2LCAgLTI2NgorICAgIC0yNjEsICAgLTI0
LCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICAzNCwgIC0yNjEs
CisgICAgLTI2MSwgIC0yNjEsICAtMjYxLCAgICAzMiwgIC0yNjEsICAgLTMzLCAgLTI2MSwgICAt
MjcsICAgLTI2LCAgLTI2MSwKKyAgICAtMjYxLCAgLTI2MSwgICAgMTQsICAgIDE2LCAgICAxOCwg
IC0yNjEsICAgLTY2LCAgIC04NywgIC0yNjEsICAgLTkyLAorICAgICAtODUsICAgIDExLCAgICAx
MiwgIC0yNjEsICAtMjYxLCAgLTI2MSwgICAxNDEsICAgMTUwLCAgIDE2MSwgICAxNDMsCisgICAg
LTI2MSwgIC0yNjEsICAtMjMxLCAgICAgNSwgICAtMzAsICAgMjI0LCAgIC0xOCwgICAgIDAsICAt
MjYxLCAgLTI2MSwKKyAgICAtMjYxLCAgIDEwMCwgIC0xMTksICAtMjYxLCAgIC0xNywgIC0xNTYs
ICAgLTI1LCAgLTE0NSwgIC0yNDMsICAtMjYxLAorICAgIC0yNjEsICAtMjYxLCAgIC02NCwgIC0y
NjAsICAtMjYxLCAgLTI2MSwgICAtNTIsICAgIDIxLCAgIC0yMiwgIC0yNjEsCisgICAgLTI2MSwg
ICAtMzksICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAgLTI2MSwgIC0yNjEsICAtMjYxLCAg
LTI2MSwKKyAgICAtMjYxLCAgIDE5MSwgIC0yNjEsICAtMjYxCiB9OwogCiAvKiBZWVRBQkxFW1lZ
UEFDVFtTVEFURS1OVU1dXS4gIFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUtTlVNLiAgSWYKICAg
IHBvc2l0aXZlLCBzaGlmdCB0aGF0IHRva2VuLiAgSWYgbmVnYXRpdmUsIHJlZHVjZSB0aGUgcnVs
ZSB3aGljaAogICAgbnVtYmVyIGlzIHRoZSBvcHBvc2l0ZS4gIElmIHplcm8sIGRvIHdoYXQgWVlE
RUZBQ1Qgc2F5cy4KICAgIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8KLSNkZWZp
bmUgWVlUQUJMRV9OSU5GIC0xNjUKKyNkZWZpbmUgWVlUQUJMRV9OSU5GIC0xNjYKIHN0YXRpYyBj
b25zdCB5eXR5cGVfaW50MTYgeXl0YWJsZVtdID0KIHsKLSAgICAgIDQ0LCAgICA3NywgICAxNjcs
ICAgMTYzLCAgIDEyMSwgICAxOTksICAgIDUyLCAgIDIyMCwgICAyODUsICAgMTkxLAotICAgICAg
NjgsICAgIDY0LCAgIDE2MiwgICAgMzIsICAgIDMzLCAgIDIyNCwgICAyNzUsICAgIDQ5LCAgICA2
NSwgICAxMjEsCi0gICAgIDE4MSwgICAgNjYsICAgMTgyLCAgIDE3NiwgICAgNTgsICAgIDUwLCAg
IDEwOCwgICAyNjksICAgMzAxLCAgICAgNiwKLSAgICAgICA3LCAgIDI3NSwgICAgNjQsICAgIDgx
LCAgIDE4MywgICAxODQsICAgMjE3LCAgICA1MywgICAgNjksICAgMjE4LAotICAgICAgNDQsICAg
MTA4LCAgICA0NCwgICAyMDcsICAgMTkyLCAgIDEyNiwgICAgNDQsICAgIDczLCAgIDE2NSwgICAx
NjYsCi0gICAgIDI0OSwgICAgNDQsICAgIDgxLCAgIDI1MCwgICAgNTksICAgIDYwLCAgICA2MSwg
ICAgMjMsICAgIDI0LCAgICAzMiwKLSAgICAgIDMzLCAgIDE1OSwgICAyOTUsICAgIDQ0LCAgICA1
NCwgICAxNzgsICAgMjk1LCAgIDE3MywgICAxNjAsICAgMTg1LAotICAgICAxODYsICAgIDU2LCAg
IDE5OSwgICAxNzQsICAgIDU4LCAgICA0NCwgICAxNDYsICAgMTYzLCAgIDIyOCwgICAgIDYsCi0g
ICAgICAgNywgICAgODQsICAgIDQ0LCAgICA4NSwgICAyMTcsICAgIDU3LCAgIDIyMywgICAyNTYs
ICAgMTY4LCAgIDE2OSwKLSAgICAgIDg2LCAgIDIzMiwgICAyMjYsICAgMTIxLCAgIC03NSwgICAx
MjYsICAgIDY3LCAgIDEyNiwgICAyMTcsICAgIDcwLAotICAgICAyNDYsICAgMjExLCAgIDIxMiwg
ICAyMTMsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDIzLCAgICAyNCwgICAxNzAsCi0gICAgIDIx
NCwgICAyNzMsICAgMjU1LCAgIDE3MSwgICAyMjAsICAgMTA4LCAgIDI5OCwgICAyMTcsICAgIDc0
LCAgIC0yNSwKLSAgICAgMjE1LCAgICA3MCwgICAyMTcsICAgMTc5LCAgIDE4MCwgICAgNDQsICAg
IDc2LCAgICA0NCwgICAyMzcsICAgMjM4LAotICAgICAyMzksICAgMjQwLCAgICA0OSwgICAyNTks
ICAgMjYwLCAgIDIzMywgICAyMzQsICAgMTA4LCAgIDEwOCwgICAxMDgsCi0gICAgIDEwOCwgICAx
MDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMjYxLCAgIDMw
MiwKLSAgICAgIDgzLCAgIDE0NiwgICAgIDIsICAgICAzLCAgICAgNCwgICAxMjEsICAgIDU5LCAg
ICA2MCwgICAgNjEsICAgMTg3LAotICAgICAxODgsICAgMjE3LCAgIDI2NCwgICAxMjQsICAgMTI2
LCAgIDI3NCwgICAyMzUsICAgMjM2LCAgIDI0MSwgICAyNDIsCi0gICAgIDE1NiwgICAtMjYsICAg
MTg5LCAgIDE3MiwgICAxOTUsICAgMjY1LCAgIDE3NywgICAxMDgsICAgMTkwLCAgIDIwMCwKLSAg
ICAgMjc0LCAgIDI3OSwgICAxMjEsICAgMTkzLCAgIDIwMywgICAyMDEsICAgMjA0LCAgIDIwOCwg
ICAyMDUsICAgMjkwLAotICAgICAyMTcsICAtMTE2LCAgIDIyMSwgICAyMDksICAgIDQ0LCAgIDIy
NSwgICAyNDgsICAtMTY0LCAgIDI2OCwgICAyOTksCi0gICAgICA1OCwgICAgIDIsICAgICAzLCAg
ICAgNCwgICAxMDgsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAgMTQ2
LCAgIDE2MywgICAyNjIsICAgMjYzLCAgIC0yNywgICAyNjcsICAgMjc4LCAgIDI4MSwgICAgMTEs
ICAgIDEyLAotICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAg
MTksICAgIDIwLCAgICAyMSwgICAgMjIsCi0gICAgIDI4MCwgICAyODcsICAgMjg4LCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAyODksICAgIDI3LCAgICAyOCwKLSAgICAgIDI5LCAgICAz
MCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAyOTEsICAgMjky
LAotICAgICAgOTIsICAgIDkzLCAgIDI5MywgICAxNDYsICAgMTQ2LCAgIDI5NCwgICAyMzEsICAg
MTQ2LCAgIDE0NiwgICAzMDMsCi0gICAgIDI0NCwgICAyNDMsICAgMTU3LCAgICA3OCwgICAyNDUs
ICAgIDgyLCAgIDE1OCwgICAgNTEsICAgMTk0LCAgICA5NCwKLSAgICAgMjcwLCAgIDI2NiwgICAx
NDYsICAgMjU4LCAgIDI3MSwgICAzMDAsICAgMjgyLCAgICA3MiwgICAgIDAsICAgICAwLAotICAg
ICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDE0NiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgMTQ2LCAgICAgMSwgICAgIDIsICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKLSAgICAgICA4LCAgICAgOSwgICAgMTAsICAg
MTI5LCAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LAotICAgICAxMzUs
ICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgMTM2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLAotICAgICAgOTEsICAgICAw
LCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICA0NCwgICAgNTUsICAgMTY1LCAgIDE2NCwgICAxNjksICAgIDgwLCAgIDIyNiwgICAx
MjMsICAgMjIyLCAgIDIwMCwKKyAgICAgIDcxLCAgICAzMiwgICAgMzMsICAgMjcyLCAgIDE5Mywg
ICAgNzAsICAgMjg4LCAgICA0OSwgICAxODUsICAgMTg2LAorICAgICAgNTYsICAgMTc4LCAgIDEy
MywgICAgODgsICAgIDcyLCAgICA1MCwgICAgNTIsICAgIDUzLCAgIDE3NSwgICAyNzgsCisgICAg
ICA4OSwgICAyMjgsICAgIDU4LCAgICA3NiwgICAxNzYsICAgIDg0LCAgIDMwNCwgICAyMTksICAg
MTcwLCAgIDE3MSwKKyAgICAgIDQ0LCAgICA2NiwgICAgNDQsICAgIDg2LCAgIDI3OCwgICAyMDks
ICAgIDQ0LCAgIDEyNywgICAyOTgsICAgMTk0LAorICAgICAgNTksICAgIDQ0LCAgIDI5OCwgICAx
ODcsICAgMTg4LCAgICA4NCwgICAgNTQsICAgIDMyLCAgICAzMywgICAxNzIsCisgICAgIDE1OCwg
ICAxNjEsICAgIDczLCAgIDE3MywgICAgNjYsICAgIDQ0LCAgIDI3NiwgICAzMDEsICAgMTYyLCAg
ICA2OSwKKyAgICAgIDUzLCAgICA2NywgICAyMTksICAgMjE5LCAgICA2OCwgICAxNjUsICAgMjI1
LCAgICA0NCwgICAgNjAsICAgMTQ4LAorICAgICAyMzAsICAgIDc4LCAgIDIwMCwgICAgIDYsICAg
ICA3LCAgICA0NCwgICAxODMsICAgMjE5LCAgIDE4NCwgICAyMzUsCisgICAgIDIyMCwgICAgNjAs
ICAgIDYxLCAgICA2MiwgICAgNjMsICAgMTIzLCAgICAgNiwgICAgIDcsICAgMTI3LCAgICA0OSwK
KyAgICAgMTI3LCAgIDI1MSwgICAyNDksICAgMjE5LCAgIDI1MiwgICAxMTAsICAgMjU5LCAgICA4
NywgICAgNjEsICAgIDYyLAorICAgICAgNjMsICAgIDIzLCAgICAyNCwgICAtMjcsICAgMjU4LCAg
ICA3MywgICAyMjIsICAgICAyLCAgICAgMywgICAgIDQsCisgICAgIDExMCwgICAgNjEsICAgIDYy
LCAgICA2MywgICAgMjMsICAgIDI0LCAgIDE2NywgICAxNjgsICAgIDQ0LCAgICA3OSwKKyAgICAg
IDQ0LCAgIDI2MiwgICAyNjMsICAgMjEzLCAgIDIxNCwgICAyMTUsICAgIDUyLCAgICA1MywgICAy
NjQsICAgMTgxLAorICAgICAxODIsICAgMzA1LCAgIDIxNiwgICAxODAsICAgMTI2LCAgIDE4OSwg
ICAxOTAsICAgLTc2LCAgIC0yOCwgICAyMzMsCisgICAgIDIzOCwgICAyMzksICAgMjE3LCAgIDE0
OCwgICAyMTksICAgMjY3LCAgIDE3NCwgICAxMjMsICAgMjQwLCAgIDI0MSwKKyAgICAgMjQyLCAg
IDI0MywgICAxOTEsICAgMjQ0LCAgIDI0NSwgICAyNjgsICAgMTc5LCAgIDE5MiwgICAyNzcsICAg
MjA1LAorICAgICAxOTUsICAgMTI3LCAgIDIwNiwgICAyMDIsICAgMjAzLCAgIDIwNywgICAyMTAs
ICAgMjI3LCAgIDIxMSwgICAyMjMsCisgICAgIDI4MiwgIC0xMTcsICAgMjUwLCAgIDI3NywgICAx
MjMsICAgMjcwLCAgLTE2NSwgIC0xMzgsICAgMjY1LCAgIDI2NiwKKyAgICAgMjE5LCAgIDI4MSwg
ICAyOTMsICAgMTEwLCAgIDI4MywgICAyODQsICAgMjk2LCAgIDI5MSwgICAyOTIsICAgMjk0LAor
ICAgICAyOTUsICAgIDQ0LCAgIDMwMiwgICAyNzEsICAgMzA2LCAgIDI0NiwgICAyOTcsICAgMjM0
LCAgIDI0NywgICAgODEsCisgICAgIDE2NSwgICAyNDgsICAgMTQ4LCAgIDIzNiwgICAyMzcsICAg
MTEwLCAgIDExMCwgICAxMTAsICAgMTEwLCAgIDExMCwKKyAgICAgMTEwLCAgIDExMCwgICAxMTAs
ICAgMTEwLCAgIDExMCwgICAxMTAsICAgMTU5LCAgICA4NSwgICAxNjAsICAgIDUxLAorICAgICAy
MDEsICAgMzAzLCAgIDI3MywgICAyNjEsICAgMjY5LCAgIDI3NCwgICAyODUsICAgIDc1LCAgICAg
MCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgOTQsICAgICAw
LCAgICAgMCwgICAgIDAsICAgMTM3LCAgIDEzOCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAg
ICAwLCAgIDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAg
IDMsCi0gICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAxMjksICAgMTMwLCAgIDEzMSwKLSAgICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LCAgIDEz
NSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgMTYsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsCi0g
ICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzYsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICA4NywKLSAgICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAg
IDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgMjkwLCAgIDExMCwgICAxNDgsICAgMTQ4LCAgICAgMCwgICAgIDAsCisgICAgIDE0
OCwgICAxNDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDgsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDExMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAx
NDgsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ4LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAg
NCwKKyAgICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgMTMxLCAg
IDEzMiwgICAxMzMsICAgICAwLAorICAgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCisgICAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywKKyAg
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM4LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwg
ICAgOTAsICAgIDMxLAorICAgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5
NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAs
ICAgICAwLAotICAgICAxMzcsICAgMjE5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAx
MzksICAgIDk1LCAgICA5NiwgICAgIDAsCi0gICAgICA5NywgICAgIDEsICAgICAyLCAgICAgMywg
ICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgIDEy
OSwgICAxMzAsICAgMTMxLCAgICAgMCwgICAxMzIsICAgMTMzLCAgIDEzNCwgICAxMzUsICAgIDEx
LAotICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAg
IDE5LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMs
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM2LCAgICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAg
MzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLAotICAg
ICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAw
LCAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgICAxLAorICAgICAgIDIs
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAxMzEsCisgICAgIDEzMiwgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEz
NywgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAorICAgICAgIDAsICAgICAw
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjks
CisgICAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAg
IDAsICAgIDk0LCAgICA5NSwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgOTQsICAgICAwLCAgICAg
MCwgICAgIDAsICAgMTM3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAg
IDEzOSwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsICAg
ICA0LCAgICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMjks
ICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLAotICAgICAxMzMsICAgMTM0LCAgIDEzNSwgICAg
MTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAg
ICAgMCwKKyAgICAgICAwLCAgIDEzOSwgICAyMjEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgIDE0MSwgICAgOTcsICAgIDk4LAorICAgICAgIDAsICAgIDk5LCAgICAgMSwgICAgIDIsICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsCisgICAgICAgOSwgICAgMTAs
ICAgMTMxLCAgIDEzMiwgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywK
KyAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLAorICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgsCisgICAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwKKyAgICAg
ICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICA5NiwgICAgIDAsICAgICAwLCAgICAg
MCwgICAxMzksICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgMTQxLCAg
ICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAg
ICA1LAorICAgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEzMSwgICAxMzIs
ICAgMTMzLCAgICAgMCwgICAxMzQsCisgICAgIDEzNSwgICAxMzYsICAgMTM3LCAgICAxMSwgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKICAgICAgIDE4LCAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LAot
ICAgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3
LCAgICAzMSwgICAgODgsCi0gICAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAg
IDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgIDI1LCAgICAyNiwgICAxMzgs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLAorICAgICAg
OTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzYsICAgICAwLAotICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTM5LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAg
IDEsCi0gICAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwg
ICAgIDksICAgIDEwLCAgIDEyOSwKLSAgICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLCAgIDEz
MywgICAxMzQsICAgMTM1LCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAg
ICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCi0g
ICAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcs
ICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAg
OTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLAotICAgICAgOTMsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0
LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAxMzksICAgIDk1LAotICAgICAgOTYsICAgICAwLCAgICA5NywgICAgIDEs
ICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsCi0gICAgICAgOCwgICAg
IDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKLSAgICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAg
ICAxNywgICAgMTgsICAgIDE5LAotICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCi0gICAgICAgMCwgICAgMjcsICAg
IDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwKLSAg
ICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTYsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDc5LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
IDE0MSwgICAgOTcsICAgIDk4LCAgICAgMCwgICAgOTksICAgICAxLCAgICAgMiwKKyAgICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMzEs
ICAgMTMyLAorICAgICAxMzMsICAgICAwLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAg
MTEsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzgsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LAorICAgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAg
IDk0LCAgICA5NSwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMCwgICAgIDAsICAgICAwLAorICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgIDk3LCAg
ICA5OCwgICAgIDAsCisgICAgICA5OSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1
LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKKyAgICAgIDEwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLAorICAgICAgMTIs
ICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsCisgICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgICAwLCAgICAyNywKKyAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDkwLCAg
ICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLAorICAgICAgOTQsICAgIDk1
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICA5NiwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLAorICAgICAgOTcsICAgIDk4LCAgICAg
MCwgICAgOTksICAgIDYwLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDYsCisgICAg
ICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAorICAgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsCisgICAgICAyNiwg
ICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA5MCwgICAgMzEsICAgIDkxLCAg
ICA5MiwKKyAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAs
ICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwK
LSAgICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAx
MSwgICAgMTIsICAgIDEzLAorICAgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAw
LCAgICA5NywgICAgOTgsICAgICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywKICAgICAg
IDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwg
ICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgODcsICAgIDMxLCAgICA4
OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwKLSAgICAgIDkzLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICA5NCwgICAgIDAsCi0gICAgICAgMCwgICAxNjEsICAgICA4LCAgICAgOSwgICAg
MTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwKLSAgICAgIDk2LCAgICAgMCwg
ICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAot
ICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCi0gICAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwKLSAgICAgIDg5LCAgICA5MCwgICAgOTEs
ICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAg
MzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICA5
NCwgICAgOTUsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LAotICAgICAgMTAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMjA2LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAg
MTEsCi0gICAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwKLSAgICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LAotICAgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsCi0g
ICAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLAorICAgICAxNjMsICAgICA4LCAgICAgOSwg
ICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsCisgICAgICAg
MCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAgICA5MywgICAg
IDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAotICAgICAgOTQsICAgICAwLCAgICAgMCwgICAyMjIsICAgICA4
LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgOTUsICAg
IDk2LCAgICAgMCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKLSAg
ICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwg
ICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsCi0gICAgICAzMSwgICAgODgsICAgIDg5LCAg
ICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwKKyAgICAgICAw
LCAgICAgMCwgICAgOTYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwgICAgMTAs
ICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDIwOCwgICAgOTcsICAgIDk4LCAgICAgMCwgICAg
OTksICAgIDExLCAgICAxMiwgICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywg
ICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKKyAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5
LAorICAgICAgMzAsICAgIDkwLCAgICAzMSwgICAgOTEsICAgIDkyLCAgICA5MywgICAgIDAsICAg
ICAwLCAgICA5NCwgICAgOTUsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLAotICAg
ICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk1LCAg
ICA5NiwgICAgIDAsCi0gICAgICA5NywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1
LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKLSAgICAgIDIwLCAgICAyMSwgICAgMjIsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgMTc1LAotICAgICAgIDAs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwg
ICAgOTAsCi0gICAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLAorICAgICAyMjQsICAgICA4
LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgs
CisgICAgICAgMCwgICAgOTksICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAg
MTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LAorICAgICAgMjYsICAgICAwLCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsCisgICAg
ICA5MywgICAgIDAsICAgICAwLCAgICA5NCwgICAgOTUsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICA5NCwgICAg
IDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsCi0gICAgICAgOSwg
ICAgMTAsICAgICAwLCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDAsICAgICAwLCAg
ICAgMCwKLSAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLAotICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsCi0gICAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwK
LSAgICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAg
ICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCi0gICAgICAxOCwgICAgMTksICAgIDIw
LCAgICAyMSwgICAgMjIsICAgICAwLCAgIDE5OCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAg
IDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAg
MzEsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgNzEsCi0gICAgICAgMCwgICAgIDAsICAgICAxLCAgICAg
MiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKLSAgICAgICA5LCAg
ICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
MjQ3LAotICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsCi0gICAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwKLSAgICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LAor
ICAgICAgIDAsICAgICAwLCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5
LCAgICAxMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NywgICAgOTgsICAg
ICAwLCAgICA5OSwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgMTYs
ICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAorICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgIDE3NywgICAgIDAsICAgIDI3LCAgICAy
OCwgICAgMjksCisgICAgICAzMCwgICAgOTAsICAgIDMxLCAgICA5MSwgICAgOTIsICAgIDkzLCAg
ICAgMCwgICAgIDAsICAgIDk0LCAgICA5NSwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk2LCAgICAgMiwgICAg
IDMsCisgICAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgIDAsICAgIDk3LCAgICA5OCwKKyAgICAgICAwLCAgICA5OSwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAorICAgICAgMTYsICAgIDE3LCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsCisg
ICAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICAgMCwKKyAgICAgIDMxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsCisgICAgICAx
MywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIx
LCAgICAyMiwKKyAgICAgMTk5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAg
IDI2LCAgICAgMCwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAg
IDAsICAgICAwLCAgICA3NCwgICAgIDAsICAgICAwLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAg
NCwKICAgICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDI1MywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwKICAg
ICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDIzLAogICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsCi0gICAgICAgMiwgICAgIDMsICAgICA0LCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKLSAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIs
ICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAg
MCwgICAgMzEsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAgMTMsICAg
IDE0LCAgICAxNSwgICAgMTYsCi0gICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
ICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAyNSwgICAg
MjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAyMjksICAgIDMxLAotICAg
ICAgIDgsICAgICA5LCAgICAxMCwgICAyMzAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2
LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLAorICAgICAgMTMs
ICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwgICAgIDAsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAg
ICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDgsICAgICA5
LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
CiAgICAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAg
MTcsICAgIDE4LCAgICAxOSwKICAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LAotICAgICAgIDAsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEKKyAgICAgICAwLCAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwg
ICAgMTIsCisgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAx
OSwgICAgMjAsICAgIDIxLCAgICAyMiwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMw
LCAgIDIzMSwgICAyMzIsICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwKKyAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAy
NSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsCisgICAg
ICAzMQogfTsKIAogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWNoZWNrW10gPQogewotICAg
ICAgIDAsICAgIDU1LCAgICA5NCwgICAgODYsICAgIDcwLCAgIDEyNywgICAgNDUsICAgMTUxLCAg
IDI3MywgICAgNjAsCi0gICAgICA0MCwgICAgMzYsICAgIDg1LCAgICAgMCwgICAgIDAsICAgMTYw
LCAgIDI1NywgICAgMzcsICAgIDc5LCAgICA4NSwKLSAgICAgIDg0LCAgICA4MiwgICAgODYsICAg
MTA2LCAgICAgMywgICAgNDUsICAgIDcwLCAgIDI1MywgICAyOTMsICAgICA4LAotICAgICAgIDks
ICAgMjcyLCAgICA1NywgICAgNjMsICAgIDU1LCAgICA1NiwgICAgNzksICAgIDc2LCAgICA0Miwg
ICAgODIsCi0gICAgICA0MCwgICAgODUsICAgIDQyLCAgIDEzNSwgICAgOTUsICAgIDc1LCAgICA0
NiwgICAgNTEsICAgIDkyLCAgICA5MywKLSAgICAgIDc5LCAgICA1MSwgICAgODIsICAgIDgyLCAg
ICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDQ2LAotICAgICAgNDYsICAgIDc0
LCAgIDI4OCwgICAgNjMsICAgIDgyLCAgIDEwOSwgICAyOTIsICAgIDczLCAgICA4MSwgICAgOTAs
Ci0gICAgICA5MSwgICAgNzMsICAgMTk0LCAgICA3OSwgICAgIDMsICAgIDc1LCAgICA3NiwgICAx
NjAsICAgMTcwLCAgICAgOCwKLSAgICAgICA5LCAgICA3MiwgICAgODIsICAgIDc0LCAgICA3OSwg
ICAgNzksICAgMTU5LCAgICA4MiwgICAgNTMsICAgIDU0LAotICAgICAgODEsICAgMTc0LCAgICA3
MywgICAxNTksICAgIDczLCAgIDEyNSwgICAgNDUsICAgMTI3LCAgICA3OSwgICAgNzQsCi0gICAg
IDE5MiwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAg
IDM3LCAgICA3NCwKLSAgICAgIDcxLCAgICA3MywgICAyMDQsICAgIDc4LCAgIDI1OCwgICAxNTks
ICAgIDczLCAgICA3OSwgICAgNzYsICAgIDcyLAotICAgICAgODEsICAgIDc0LCAgICA3OSwgICAg
ODcsICAgIDg4LCAgIDEyNSwgICAgNzYsICAgMTI3LCAgIDE4MywgICAxODQsCi0gICAgIDE4NSwg
ICAxODYsICAgIDM3LCAgIDIxNiwgICAyMTcsICAgMTc5LCAgIDE4MCwgICAxODEsICAgMTgyLCAg
IDE4MywKLSAgICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LCAgIDE4OCwgICAxODksICAgMTkw
LCAgIDE5MSwgICAyMjEsICAgMjk0LAotICAgICAgNDUsICAgMTUxLCAgICAgNCwgICAgIDUsICAg
ICA2LCAgIDIyMSwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgNTcsCi0gICAgICA1OCwgICAgNzks
ICAgIDgwLCAgICA4MiwgICAxOTQsICAgMjU3LCAgIDE4MSwgICAxODIsICAgMTg3LCAgIDE4OCwK
LSAgICAgIDQ1LCAgICA3MiwgICAgNTksICAgIDczLCAgICA0NSwgICAyNDgsICAgIDcyLCAgIDIy
MSwgICAgNjEsICAgIDgyLAotICAgICAyNzIsICAgMjY0LCAgIDI0OCwgICAgNzUsICAgIDcyLCAg
ICA4MiwgICAgNzIsICAgIDcyLCAgICA4MiwgICAyODEsCi0gICAgICA3OSwgICAgNzIsICAgIDc0
LCAgICA3NywgICAxOTQsICAgIDc1LCAgICA3NCwgICAgNzYsICAgMjUyLCAgIDI5MSwKLSAgICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgIDI0OCwgICAgIDgsICAgICA5LCAgICAxMCwgICAg
MTEsICAgIDEyLAotICAgICAyMTAsICAgMjk0LCAgICA3NSwgICAgNzUsICAgIDcyLCAgICA0MCwg
ICAgNzUsICAgIDcyLCAgICAyMSwgICAgMjIsCi0gICAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKLSAgICAgIDc1LCAg
ICA0NSwgICAgNzMsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA3NywgICAgNDEsICAg
IDQyLAotICAgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDks
ICAgIDUwLCAgICA4MiwgICAgNzMsCi0gICAgICA1MywgICAgNTQsICAgIDE2LCAgIDI1MywgICAy
NTQsICAgIDgxLCAgIDE3MSwgICAyNTcsICAgMjU4LCAgICA4MiwKLSAgICAgMTkwLCAgIDE4OSwg
ICAgODIsICAgIDU3LCAgIDE5MSwgICAgNjQsICAgIDgyLCAgICAgNSwgICAxMjUsICAgIDcyLAot
ICAgICAyNTQsICAgMjQ5LCAgIDI3MiwgICAyMTAsICAgMjU0LCAgIDI5MiwgICAyNzIsICAgIDQ2
LCAgICAtMSwgICAgLTEsCi0gICAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgMjg4LCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAyOTIs
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LAotICAgICAg
MTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAgICAx
OCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LAotICAgICAgNDAsICAg
IDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksCi0gICAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgICAwLCAgICAyNSwgICAgODksICAgIDg4LCAgICA5
NiwgICAgNTcsICAgMTYyLCAgICA3MywgICAxNTMsICAgMTI4LAorICAgICAgNDAsICAgICAwLCAg
ICAgMCwgICAyNTYsICAgIDU5LCAgICAzOSwgICAyNzYsICAgIDM3LCAgICA1NCwgICAgNTUsCisg
ICAgICA4MSwgICAxMDgsICAgIDg4LCAgICA3MywgICAgNDIsICAgIDQ1LCAgICA0NSwgICAgNDYs
ICAgIDcyLCAgIDI2MCwKKyAgICAgIDgwLCAgICA3MiwgICAgNzIsICAgIDUxLCAgICA3OCwgICAg
NjUsICAgMjk2LCAgICA3OCwgICAgNTIsICAgIDUzLAorICAgICAgNDAsICAgIDM2LCAgICA0Miwg
ICAgNjcsICAgMjc1LCAgIDEzNywgICAgNDYsICAgIDc3LCAgIDI5MSwgICAgOTQsCisgICAgICA3
OCwgICAgNTEsICAgMjk1LCAgICA4OSwgICAgOTAsICAgIDg1LCAgICA3NSwgICAgNDYsICAgIDQ2
LCAgICA3MywKKyAgICAgIDg0LCAgICA3MywgICAgNzMsICAgIDc3LCAgICA1OSwgICAgNjUsICAg
IDcyLCAgICA3MiwgICAgODAsICAgIDQ1LAorICAgICAgNDYsICAgIDc4LCAgICA3OCwgICAgNzgs
ICAgIDgxLCAgIDE2MiwgICAxNjEsICAgIDc3LCAgICAgMywgICAgNzksCisgICAgIDE3MiwgICAg
NzUsICAgMjAxLCAgICAgOCwgICAgIDksICAgIDg1LCAgICA4MywgICAgNzgsICAgIDg1LCAgIDE3
NiwKKyAgICAgIDgxLCAgICAgMywgICAgMzMsICAgIDM0LCAgICAzNSwgICAxNjEsICAgICA4LCAg
ICAgOSwgICAxMjgsICAgIDM3LAorICAgICAxMzAsICAgIDc4LCAgIDE5NCwgICAgNzgsICAgIDgx
LCAgICA3MywgICAgODEsICAgIDcxLCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYsICAg
IDM3LCAgICA3MSwgICAyMDYsICAgIDczLCAgIDI2MSwgICAgIDQsICAgICA1LCAgICAgNiwKKyAg
ICAgIDg4LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDk0LCAgICA5NSwg
ICAxMjgsICAgIDc1LAorICAgICAxMzAsICAgMjE4LCAgIDIxOSwgICAgNjEsICAgIDYyLCAgICA2
MywgICAgNDUsICAgIDQ2LCAgIDIyMywgICAgODYsCisgICAgICA4NywgICAyOTcsICAgIDcwLCAg
IDExMSwgICAgODEsICAgIDU2LCAgICA1NywgICAgNzIsICAgIDcxLCAgIDE3MywKKyAgICAgMTgz
LCAgIDE4NCwgICAgODAsICAgMTUzLCAgICA3OCwgICAgNzksICAgIDcyLCAgIDIyMywgICAxODUs
ICAgMTg2LAorICAgICAxODcsICAgMTg4LCAgICA1OCwgICAxODksICAgMTkwLCAgIDI1MCwgICAg
NzEsICAgIDYwLCAgIDI2MCwgICAgNzEsCisgICAgICA3NCwgICAyMDEsICAgIDcxLCAgICA4MSwg
ICAgODEsICAgIDgxLCAgICA3MSwgICAgNzQsICAgIDc2LCAgICA3MywKKyAgICAgMjY3LCAgICA3
MSwgICAgNzMsICAgMjc1LCAgIDI1MCwgICAgNDAsICAgIDc1LCAgICA3MSwgICAgNzQsICAgIDc0
LAorICAgICAgNzgsICAgIDc0LCAgIDI4NCwgICAxNjEsICAgIDc0LCAgICA3MSwgICAgMTYsICAg
IDcyLCAgICA3NiwgICAgODEsCisgICAgICA3MiwgICAyMDEsICAgMjk0LCAgIDI1NSwgICAgODEs
ICAgMTkxLCAgICA4MCwgICAxNzMsICAgMTkyLCAgICA1OSwKKyAgICAgMjk3LCAgIDE5MywgICAy
MTIsICAgMTgxLCAgIDE4MiwgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LAorICAg
ICAxODgsICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTkyLCAgIDE5MywgICAgODUsICAgIDY2LCAg
ICA4NSwgICAgIDUsCisgICAgIDEzMCwgICAyOTUsICAgMjU3LCAgIDIxMiwgICAyNTEsICAgMjU3
LCAgIDI3NSwgICAgNDYsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEs
ICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIDc3LCAgICAtMSwg
ICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4
NiwgICAgIDMsICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAg
ICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgLTEsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUs
Ci0gICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
LTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwg
ICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAotICAgICAgNDYsICAgIDQ3LCAgICA0
OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsCisgICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyNzgsICAgMjIzLCAgIDI1NiwgICAyNTcsICAg
IC0xLCAgICAtMSwKKyAgICAgMjYwLCAgIDI2MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgIDI3NSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwg
ICAgLTEsICAgMjUwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKKyAgICAgIC0xLCAgIDI5MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAyOTUsICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LAorICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAg
IDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEsCisgICAgICAxNywgICAgMTgs
ICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwK
KyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDM2LAorICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCisgICAgICA0NywgICAgNDgsICAgIDQ5
LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3NiwgICAgNzcsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwKLSAgICAgIDg2LCAg
ICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAg
IDExLAotICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgs
ICAgIDE5LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAg
MjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLAot
ICAgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5
LCAgICA1MCwgICAgLTEsCi0gICAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgIDc2LAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4
NSwgICAgIDMsCisgICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAg
ICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAorICAgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
LTEsCisgICAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwg
ICAgNDEsICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0
OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAorICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisg
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzEs
ICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICA3NSwgICAgNzYsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLAorICAgICAgLTEsICAgIDg1LCAgICAgMywg
ICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCisgICAgICAx
MSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLAorICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCisgICAgICA0MSwgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICAt
MSwKKyAgICAgIC0xLCAgICA1MiwgICAgNTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3MiwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAg
ICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgIDMsICAgICA0LCAgICAgNSwg
ICAgIDYsICAgICA3LAorICAgICAgNzEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc1LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA4MSwgICAgODIsICAgIDgzLCAg
ICAtMSwgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKICAgICAgICA4
LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgLTEs
ICAgIDE3LAogICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwgICAgMjcsCiAgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywKICAgICAgIDM4LCAgICAz
OSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3
LAotICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAg
IC0xLCAgICAtMSwgICAgLTEsCisgICAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIs
ICAgIDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICA3NiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgz
LCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAgMywKLSAgICAgICA0LCAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQs
ICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwg
ICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsICAgIDMyLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAg
ICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLAotICAgICAgNDQsICAgIDQ1
LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMs
Ci0gICAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsCi0gICAg
ICA4NCwgICAgLTEsICAgIDg2LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIDIxLCAgICAyMiwgICAg
MjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwg
ICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAg
ICAzOSwKLSAgICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2
LCAgICA0NywgICAgNDgsICAgIDQ5LAotICAgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAg
IDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzUsICAgIC0xLCAgICAtMSwK
KyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4
NSwgICAgIDMsICAgICA0LAorICAgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAg
ICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgLTEsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwKKyAgICAg
IDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
LTEsICAgIC0xLAorICAgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwg
ICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsCisgICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0
OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLCAgICAtMSwKICAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAotICAgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAs
ICAgIDExLCAgICAxMiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAg
ODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0xLAor
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODEsICAgIDgy
LCAgICA4MywgICAgLTEsCisgICAgICA4NSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKKyAgICAgIDEyLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLAorICAgICAg
MjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsCisgICAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAg
ICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwKKyAgICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1
LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgLTEsICAgIC0xLAorICAgICAgNTIsICAg
IDUzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA3MSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgxLAorICAgICAgODIsICAgIDgzLCAg
ICAtMSwgICAgODUsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgIDgsCisg
ICAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsCisgICAgICAz
OSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3
LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAg
LTEsICAgIDcxLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAt
MSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAg
ICAyMSwgICAgMjIsICAgIDIzLAogICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKLSAg
ICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwg
ICAgLTEsICAgIDUzLAotICAgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwKLSAgICAgIC0x
LCAgICA3NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDgzLAotICAgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDM4LCAgICAz
OSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3
LAotICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAg
IC0xLCAgICAtMSwgICAgLTEsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgs
ICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKICAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAxMCwgICAgMTEsCi0gICAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgz
LCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAyMSwKLSAgICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLAotICAgICAgMzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwg
ICAgNDEsCi0gICAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0
OCwgICAgNDksICAgIDUwLCAgICAtMSwKLSAgICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwgICAgLTEs
CisgICAgICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsCisgICAg
ICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICA3Miwg
ICAgLTEsICAgIC0xLCAgICA3NSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAg
ICAtMSwKLSAgICAgIC0xLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAgIDIy
LCAgICAyMywgICAgMjQsICAgIDI1LAotICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAg
IDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEs
ICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwK
LSAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICA1
MywgICAgNTQsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICA3MSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDgx
LCAgICA4MiwgICAgODMsICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAg
IDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAg
MzIsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwg
ICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1MywKICAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIs
ICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgODMsICAgIDg0LCAgICAtMSwKLSAgICAgIDg2LCAgICAyMSwg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAot
ICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAzOCwgICAgMzksCi0gICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwKLSAgICAgIDUwLCAgICAtMSwgICAgLTEs
ICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcxLCAgICAt
MSwgICAgLTEsCisgICAgICA3NCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywKKyAgICAgIC0xLCAgICA4NSwgICAgMjEsICAgIDIy
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAg
IDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MzgsCisgICAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwg
ICAgNDYsICAgIDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICAtMSwgICAgLTEsICAgIDUyLCAgICA1
MywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0g
ICAgICAtMSwgICAgLTEsICAgIDcyLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAxMCwKLSAgICAgIDExLCAgICAxMiwgICAgLTEsICAgIDgzLCAgICA4NCwgICAg
LTEsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAz
MSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5
LCAgICAtMSwKLSAgICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAg
ICA0LCAgICAgNSwgICAgIDYsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEs
ICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywKLSAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIDc3LCAg
ICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQy
LCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMCwKLSAg
ICAgIC0xLCAgICAtMSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwg
ICAgIDksICAgIDEwLAotICAgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzcsCi0gICAgICAyMSwgICAgMjIsICAgIDIzLCAg
ICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKLSAgICAgIDMx
LCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzks
ICAgIC0xLAotICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAg
IDMsICAgICA0LCAgICAgNSwgICAgIDYsCisgICAgICAtMSwgICAgLTEsICAgIDcxLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKKyAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgLTEsICAgIDg1LCAgICAyMSwgICAgMjIsICAgIDIz
LAorICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAg
IDMxLCAgICAzMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgs
ICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAg
NDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIC0xLCAgICAtMSwgICAgNTIsICAgIDUzLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgNzEsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgODIsICAgIDgzLAorICAgICAgLTEs
ICAgIDg1LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwg
ICAgMjUsCisgICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAz
MiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAg
ICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLAorICAgICAgNDYsICAgICA0
LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAgMTIs
CisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywg
ICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgNzYsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsCisgICAg
ICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAwLCAgICAtMSwgICAgLTEs
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LAogICAgICAgIDcsICAgICA4LCAgICAgOSwgICAg
MTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAgICAyMSwgICAgMjIsICAgIDIz
LCAgICAyNCwgICAgMjUsICAgIDI2LAogICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAg
IDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsCiAgICAgICAzNywgICAgMzgs
ICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwK
LSAgICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAx
MSwgICAgMTIsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKLSAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAg
NDIsICAgIDQzLAotICAgICAgNDQsICAgIC0xLCAgICA0NiwgICAgMTAsICAgIDExLCAgICAxMiwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAotICAgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMs
ICAgIDQ0LCAgICA0NSwgICAgNDYsCi0gICAgICAxMCwgICAgMTEsICAgIDEyLCAgICA1MCwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgICAzLCAgICAgNCwg
ICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLAor
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAyMSwgICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAg
IDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLAorICAgICAg
NDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAt
MSwgICAgLTEsCisgICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIz
LCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAogICAgICAgMzAsICAg
IDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAg
MzksCi0gICAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0Ngor
ICAgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgIDEw
LCAgICAxMSwgICAgMTIsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUs
ICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0
MSwgICAgNDIsCisgICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgMTAsICAgIDExLCAg
ICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYsICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0Miwg
ICAgNDMsICAgIDQ0LCAgICAtMSwKKyAgICAgIDQ2CiB9OwogCiAvKiBZWVNUT1NbU1RBVEUtTlVN
XSAtLSBUaGUgKGludGVybmFsIG51bWJlciBvZiB0aGUpIGFjY2Vzc2luZwpAQCAtMTMwOCwzMiAr
MTM0MywzMiBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KICAgICAgIDMw
LCAgICAzMSwgICAgMzIsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MSwgICAgNDIs
ICAgIDQzLAogICAgICAgNDQsICAgIDQ2LCAgIDEyNiwgICAxMjcsICAgMTI4LCAgIDEyOSwgICAx
MzAsICAgMTM1LCAgIDEzNiwgICAxMzcsCiAgICAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MSwg
ICAxNDIsICAgMTQzLCAgIDE3NSwgICAxNzYsICAgMTc3LCAgICAzNywKLSAgICAgIDQ1LCAgIDE0
MCwgICAgNDUsICAgIDc2LCAgICA4MiwgICAxNzgsICAgIDczLCAgICA3OSwgICAgIDMsICAgIDMz
LAotICAgICAgMzQsICAgIDM1LCAgIDEzMiwgICAxMzMsICAgMTM4LCAgICA3OSwgICAgODIsICAg
IDQ1LCAgIDEzOSwgICAxNDEsCi0gICAgICA3NCwgICAgIDAsICAgMTc2LCAgIDE0MSwgICAgNzYs
ICAgMTQ1LCAgICA3NiwgICAxNjEsICAgMTMyLCAgIDEzMSwKLSAgICAgMTM0LCAgIDEzOSwgICAx
MzMsICAgIDQ1LCAgICA3MiwgICAgNzQsICAgIDgxLCAgICA0NSwgICAgNDcsICAgIDQ4LAotICAg
ICAgNDksICAgIDUwLCAgICA1MywgICAgNTQsICAgIDcyLCAgICA4MywgICAgODQsICAgIDg2LCAg
ICA5NywgICAgOTgsCi0gICAgICA5OSwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1
LCAgIDEwNiwgICAxMDcsICAgMTA4LCAgIDEwOSwKLSAgICAgMTEwLCAgIDExMSwgICAxMTIsICAg
MTEzLCAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTE5LAotICAgICAxMjAs
ICAgMTIxLCAgIDEyNSwgICAxNDIsICAgIDgyLCAgIDE0NCwgICAxMzksICAgMTQ2LCAgIDE0Nywg
ICAgMTMsCi0gICAgICAxNCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICA0
MCwgICAgNzYsICAgIDc3LCAgICA4MiwKLSAgICAgMTA4LCAgIDEyMSwgICAxMjIsICAgMTI0LCAg
IDEyNiwgICAxMjcsICAgMTQyLCAgIDE1MSwgICAxNTIsICAgMTUzLAotICAgICAxNTQsICAgMTYy
LCAgIDE2MywgICAxNjQsICAgMTY3LCAgIDE3NCwgICAgNDUsICAgMTMxLCAgIDEzNCwgICAgNzQs
Ci0gICAgICA4MSwgICAgNzUsICAgMTI1LCAgIDEyMiwgICAxNTAsICAgMTA4LCAgIDEwOCwgICAx
MjQsICAgIDUzLCAgICA1NCwKLSAgICAgIDc0LCAgICA3OCwgICAgNzMsICAgIDczLCAgICA3OSwg
ICAgMzksICAgMTIyLCAgICA3MiwgICAxMDgsICAgIDg3LAotICAgICAgODgsICAgIDg0LCAgICA4
NiwgICAgNTUsICAgIDU2LCAgICA5MCwgICAgOTEsICAgIDU3LCAgICA1OCwgICAgNTksCi0gICAg
ICA2MSwgICAgNjAsICAgIDk1LCAgICA3NSwgICAxNDYsICAgIDQ1LCAgIDE0OCwgICAxNDksICAg
IDc3LCAgIDE0NywKLSAgICAgIDgyLCAgICA4MiwgICAxNjksICAgIDcyLCAgICA3MiwgICAgODIs
ICAgIDgyLCAgIDEyNCwgICAgNzIsICAgIDc3LAotICAgICAxNTUsICAgIDYyLCAgICA2MywgICAg
NjQsICAgIDcxLCAgICA4MSwgICAxMjMsICAgIDc5LCAgICA4MiwgICAgNzcsCi0gICAgIDE1Miwg
ICAgNzQsICAgIDc1LCAgIDEyNSwgICAxNTAsICAgIDc1LCAgICA3MywgICAxMDAsICAgMTI0LCAg
ICA0NSwKLSAgICAgIDUwLCAgIDEwMywgICAxMjIsICAgMTA4LCAgIDEwOCwgICAxMTAsICAgMTEw
LCAgIDExMiwgICAxMTIsICAgMTEyLAotICAgICAxMTIsICAgMTEzLCAgIDExMywgICAxMTcsICAg
MTE4LCAgIDExOSwgICAxMjQsICAgIDc3LCAgICA3NCwgICAgNzksCi0gICAgICA4MiwgICAxNTgs
ICAgMTU5LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4MiwgICAxNjgsICAgMTYyLCAgIDEyMiwK
LSAgICAgMTIyLCAgIDEyNSwgICAgNzUsICAgIDc1LCAgICA4MCwgICAxMjUsICAgMTQ5LCAgICA0
MCwgICAxNjEsICAgMTUzLAotICAgICAxNTEsICAgMTYzLCAgIDE3MSwgICAgNzMsICAgMTI0LCAg
IDEzNywgICAxNjYsICAgMTU2LCAgICA3NSwgICAxMjIsCi0gICAgICA3NSwgICAgNzIsICAgMTY2
LCAgIDE3MiwgICAxNzMsICAgMTU4LCAgIDE2NSwgICAgNDUsICAgIDczLCAgICA3NywKLSAgICAg
MTI0LCAgICA4MiwgICAgNzMsICAgIDE2LCAgICA4MSwgICAxNTMsICAgMTU3LCAgIDE2MSwgICAg
NzMsICAgMTI0LAotICAgICAxNTcsICAgMTU4LCAgIDE1MCwgICAgODIKKyAgICAgIDQ1LCAgIDE0
MCwgICAgNDUsICAgIDQ2LCAgICA3NSwgICAgOTYsICAgIDgxLCAgIDE3OCwgICAgNzIsICAgIDc4
LAorICAgICAgIDMsICAgIDMzLCAgICAzNCwgICAgMzUsICAgMTMyLCAgIDEzMywgICAxMzgsICAg
IDc4LCAgICA4MSwgICAgNDUsCisgICAgICA5NiwgICAxMzksICAgMTQxLCAgICA3MywgICAgIDAs
ICAgMTc2LCAgIDE0MSwgICAxNDUsICAgIDc1LCAgICA3NSwKKyAgICAgMTYxLCAgIDEzMiwgICAx
MzEsICAgMTM0LCAgIDEzOSwgICAxMzMsICAgIDk2LCAgICA3MSwgICAgNzMsICAgIDgwLAorICAg
ICAgNDUsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUyLCAgICA1MywgICAgNzEsICAgIDgyLCAg
ICA4MywgICAgODUsCisgICAgICA5NywgICAgOTgsICAgIDk5LCAgIDEwMSwgICAxMDIsICAgMTAz
LCAgIDEwNCwgICAxMDUsICAgMTA2LCAgIDEwNywKKyAgICAgMTA4LCAgIDEwOSwgICAxMTAsICAg
MTExLCAgIDExMiwgICAxMTMsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LAorICAgICAxMTgs
ICAgMTE5LCAgIDEyMCwgICAxMjEsICAgMTI1LCAgIDE0MiwgICAgODEsICAgMTM5LCAgIDE0Niwg
ICAxNDcsCisgICAgIDE0NCwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTcsICAgIDE4LCAgICAx
OSwgICAgMjAsICAgIDQwLCAgICA3NSwKKyAgICAgIDc2LCAgICA4MSwgICAxMDgsICAgMTIxLCAg
IDEyMiwgICAxMjQsICAgMTI2LCAgIDEyNywgICAxNDIsICAgMTUxLAorICAgICAxNTIsICAgMTUz
LCAgIDE1NCwgICAxNjIsICAgMTYzLCAgIDE2NCwgICAxNjcsICAgMTc0LCAgICA5NiwgICAxMzEs
CisgICAgIDEzNCwgICAgNzMsICAgIDgwLCAgICA3NCwgICAxMjUsICAgMTIyLCAgIDE1MCwgICAx
MDgsICAgMTA4LCAgIDEyNCwKKyAgICAgIDUyLCAgICA1MywgICAgNzMsICAgIDc3LCAgICA3Miwg
ICAgNzIsICAgIDc4LCAgICAzOSwgICAxMjIsICAgIDcxLAorICAgICAxMDgsICAgIDg2LCAgICA4
NywgICAgODMsICAgIDg1LCAgICA1NCwgICAgNTUsICAgIDg5LCAgICA5MCwgICAgNTYsCisgICAg
ICA1NywgICAgNTgsICAgIDYwLCAgICA1OSwgICAgOTQsICAgIDc0LCAgICA5NiwgICAxNDgsICAg
MTQ5LCAgICA3NiwKKyAgICAgMTQ3LCAgIDE0NiwgICAgODEsICAgIDgxLCAgIDE2OSwgICAgNzEs
ICAgIDcxLCAgICA4MSwgICAgODEsICAgMTI0LAorICAgICAgNzEsICAgIDc2LCAgIDE1NSwgICAg
NjEsICAgIDYyLCAgICA2MywgICAgNzAsICAgIDgwLCAgIDEyMywgICAgNzgsCisgICAgICA4MSwg
ICAgNzYsICAgMTUyLCAgICA3MywgICAgNzQsICAgMTI1LCAgIDE1MCwgICAgNzQsICAgIDcyLCAg
IDEwMCwKKyAgICAgMTI0LCAgICA0NSwgICAgNDYsICAgIDk2LCAgIDEwMywgICAxMjIsICAgMTA4
LCAgIDEwOCwgICAxMTAsICAgMTEwLAorICAgICAxMTIsICAgMTEyLCAgIDExMiwgICAxMTIsICAg
MTEzLCAgIDExMywgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjQsCisgICAgICA3MywgICAgNzgs
ICAgIDgxLCAgICA3NiwgICAxNTgsICAgMTU5LCAgIDE2MCwgICAxNzAsICAgMTI0LCAgICA4MSwK
KyAgICAgMTY4LCAgIDE2MiwgICAxMjIsICAgMTIyLCAgIDEyNSwgICAgNzQsICAgIDc0LCAgICA3
OSwgICAxMjUsICAgMTQ5LAorICAgICAgNDAsICAgMTYxLCAgIDE1MywgICAxNTEsICAgMTYzLCAg
IDE3MSwgICAgNzIsICAgMTI0LCAgIDEzNywgICAxNjYsCisgICAgIDE1NiwgICAgNzQsICAgMTIy
LCAgICA3NCwgICAgNzEsICAgMTY2LCAgIDE3MiwgICAxNzMsICAgMTU4LCAgIDE2NSwKKyAgICAg
IDk2LCAgICA3MiwgICAgNzYsICAgMTI0LCAgICA4MSwgICAgNzIsICAgIDE2LCAgICA4MCwgICAx
NTMsICAgMTU3LAorICAgICAxNjEsICAgIDcyLCAgIDEyNCwgICAxNTcsICAgMTU4LCAgIDE1MCwg
ICAgODEKIH07CiAKICNkZWZpbmUgeXllcnJvawkJKHl5ZXJyc3RhdHVzID0gMCkKQEAgLTEzNjYs
NyArMTQwMSw3IEBAIGRvCQkJCQkJCQlcCiAgICAgfQkJCQkJCQkJXAogICBlbHNlCQkJCQkJCQlc
CiAgICAgewkJCQkJCQkJXAotICAgICAgeXllcnJvciAoY29udGV4dCwgWVlfKCJzeW50YXggZXJy
b3I6IGNhbm5vdCBiYWNrIHVwIikpOyBcCisgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0
LCBZWV8oInN5bnRheCBlcnJvcjogY2Fubm90IGJhY2sgdXAiKSk7IFwKICAgICAgIFlZRVJST1I7
CQkJCQkJCVwKICAgICB9CQkJCQkJCQlcCiB3aGlsZSAoWVlJRCAoMCkpCkBAIC0xNDIxLDkgKzE0
NTYsOSBAQCB3aGlsZSAoWVlJRCAoMCkpCiAvKiBZWUxFWCAtLSBjYWxsaW5nIGB5eWxleCcgd2l0
aCB0aGUgcmlnaHQgYXJndW1lbnRzLiAgKi8KIAogI2lmZGVmIFlZTEVYX1BBUkFNCi0jIGRlZmlu
ZSBZWUxFWCB5eWxleCAoJnl5bHZhbCwgWVlMRVhfUEFSQU0pCisjIGRlZmluZSBZWUxFWCB5eWxl
eCAoJnl5bHZhbCwgJnl5bGxvYywgWVlMRVhfUEFSQU0pCiAjZWxzZQotIyBkZWZpbmUgWVlMRVgg
eXlsZXggKCZ5eWx2YWwpCisjIGRlZmluZSBZWUxFWCB5eWxleCAoJnl5bHZhbCwgJnl5bGxvYykK
ICNlbmRpZgogCiAvKiBFbmFibGUgZGVidWdnaW5nIGlmIHJlcXVlc3RlZC4gICovCkBAIC0xNDQ2
LDcgKzE0ODEsNyBAQCBkbyB7CQkJCQkJCQkJICBcCiAgICAgewkJCQkJCQkJCSAgXAogICAgICAg
WVlGUFJJTlRGIChzdGRlcnIsICIlcyAiLCBUaXRsZSk7CQkJCQkgIFwKICAgICAgIHl5X3N5bWJv
bF9wcmludCAoc3RkZXJyLAkJCQkJCSAgXAotCQkgIFR5cGUsIFZhbHVlLCBjb250ZXh0KTsgXAor
CQkgIFR5cGUsIFZhbHVlLCBMb2NhdGlvbiwgY29udGV4dCk7IFwKICAgICAgIFlZRlBSSU5URiAo
c3RkZXJyLCAiXG4iKTsJCQkJCQkgIFwKICAgICB9CQkJCQkJCQkJICBcCiB9IHdoaWxlIChZWUlE
ICgwKSkKQEAgLTE0NjAsMTggKzE0OTUsMjAgQEAgZG8gewkJCQkJCQkJCSAgXAogI2lmIChkZWZp
bmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmluZWQg
X19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9zeW1ib2xf
dmFsdWVfcHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICog
Y29uc3QgeXl2YWx1ZXAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eV9zeW1ib2xfdmFsdWVf
cHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29uc3Qg
eXl2YWx1ZXAsIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucCwgVFBhcnNlQ29udGV4
dCogY29udGV4dCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5
eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCkKK3l5X3N5bWJvbF92YWx1ZV9wcmlu
dCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIHl5bG9jYXRpb25wLCBjb250ZXh0KQogICAg
IEZJTEUgKnl5b3V0cHV0OwogICAgIGludCB5eXR5cGU7CiAgICAgWVlTVFlQRSBjb25zdCAqIGNv
bnN0IHl5dmFsdWVwOworICAgIFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucDsKICAg
ICBUUGFyc2VDb250ZXh0KiBjb250ZXh0OwogI2VuZGlmCiB7CiAgIGlmICgheXl2YWx1ZXApCiAg
ICAgcmV0dXJuOworICBZWVVTRSAoeXlsb2NhdGlvbnApOwogICBZWVVTRSAoY29udGV4dCk7CiAj
IGlmZGVmIFlZUFJJTlQKICAgaWYgKHl5dHlwZSA8IFlZTlRPS0VOUykKQEAgLTE0OTQsMTMgKzE1
MzEsMTQgQEAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLAogI2lmIChk
ZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8IGRlZmlu
ZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15eV9zeW1i
b2xfcHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29u
c3QgeXl2YWx1ZXAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eV9zeW1ib2xfcHJpbnQgKEZJ
TEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXAs
IFlZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucCwgVFBhcnNlQ29udGV4dCogY29udGV4
dCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfc3ltYm9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBl
LCB5eXZhbHVlcCwgY29udGV4dCkKK3l5X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwg
eXl2YWx1ZXAsIHl5bG9jYXRpb25wLCBjb250ZXh0KQogICAgIEZJTEUgKnl5b3V0cHV0OwogICAg
IGludCB5eXR5cGU7CiAgICAgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwOworICAgIFlZ
TFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucDsKICAgICBUUGFyc2VDb250ZXh0KiBjb250
ZXh0OwogI2VuZGlmCiB7CkBAIC0xNTA5LDcgKzE1NDcsOSBAQCB5eV9zeW1ib2xfcHJpbnQgKHl5
b3V0cHV0LCB5eXR5cGUsIHl5dmFsCiAgIGVsc2UKICAgICBZWUZQUklOVEYgKHl5b3V0cHV0LCAi
bnRlcm0gJXMgKCIsIHl5dG5hbWVbeXl0eXBlXSk7CiAKLSAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50
ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCk7CisgIFlZX0xPQ0FUSU9OX1BS
SU5UICh5eW91dHB1dCwgKnl5bG9jYXRpb25wKTsKKyAgWVlGUFJJTlRGICh5eW91dHB1dCwgIjog
Iik7CisgIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAs
IHl5bG9jYXRpb25wLCBjb250ZXh0KTsKICAgWVlGUFJJTlRGICh5eW91dHB1dCwgIikiKTsKIH0K
IApAQCAtMTU0OSwxMSArMTU4OSwxMiBAQCBkbyB7CQkJCQkJCQlcCiAjaWYgKGRlZmluZWQgX19T
VERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKICAgICAgfHwgZGVmaW5lZCBfX2NwbHVz
cGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKLXl5X3JlZHVjZV9wcmludCAo
WVlTVFlQRSAqeXl2c3AsIGludCB5eXJ1bGUsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eV9y
ZWR1Y2VfcHJpbnQgKFlZU1RZUEUgKnl5dnNwLCBZWUxUWVBFICp5eWxzcCwgaW50IHl5cnVsZSwg
VFBhcnNlQ29udGV4dCogY29udGV4dCkKICNlbHNlCiBzdGF0aWMgdm9pZAoteXlfcmVkdWNlX3By
aW50ICh5eXZzcCwgeXlydWxlLCBjb250ZXh0KQoreXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXls
c3AsIHl5cnVsZSwgY29udGV4dCkKICAgICBZWVNUWVBFICp5eXZzcDsKKyAgICBZWUxUWVBFICp5
eWxzcDsKICAgICBpbnQgeXlydWxlOwogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5k
aWYKQEAgLTE1NjksNyArMTYxMCw3IEBAIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5cnVsZSwg
Y29udGV4dCkKICAgICAgIGZwcmludGYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOwog
ICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVdICsgeXlp
XSwKIAkJICAgICAgICYoeXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQotCQkgICAgICAgCQkg
ICAgICAgLCBjb250ZXh0KTsKKwkJICAgICAgICwgJih5eWxzcFsoeXlpICsgMSkgLSAoeXlucmhz
KV0pCQkgICAgICAgLCBjb250ZXh0KTsKICAgICAgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7CiAg
ICAgfQogfQpAQCAtMTU3Nyw3ICsxNjE4LDcgQEAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXly
dWxlLCBjb250ZXh0KQogIyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpCQlcCiBkbyB7CQkJ
CQlcCiAgIGlmICh5eWRlYnVnKQkJCQlcCi0gICAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgUnVs
ZSwgY29udGV4dCk7IFwKKyAgICB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCB5eWxzcCwgUnVsZSwg
Y29udGV4dCk7IFwKIH0gd2hpbGUgKFlZSUQgKDApKQogCiAvKiBOb256ZXJvIG1lYW5zIHByaW50
IHBhcnNlIHRyYWNlLiAgSXQgaXMgbGVmdCB1bmluaXRpYWxpemVkIHNvIHRoYXQKQEAgLTE4Mjgs
MTcgKzE4NjksMTkgQEAgeXlzeW50YXhfZXJyb3IgKGNoYXIgKnl5cmVzdWx0LCBpbnQgeXlzdAog
I2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCiAgICAgIHx8
IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15
eWRlc3RydWN0IChjb25zdCBjaGFyICp5eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2YWx1
ZXAsIFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCit5eWRlc3RydWN0IChjb25zdCBjaGFyICp5eW1z
ZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFlZTFRZUEUgKnl5bG9jYXRpb25wLCBU
UGFyc2VDb250ZXh0KiBjb250ZXh0KQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15eWRlc3RydWN0ICh5
eW1zZywgeXl0eXBlLCB5eXZhbHVlcCwgY29udGV4dCkKK3l5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5
cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCkKICAgICBjb25zdCBjaGFyICp5eW1z
ZzsKICAgICBpbnQgeXl0eXBlOwogICAgIFlZU1RZUEUgKnl5dmFsdWVwOworICAgIFlZTFRZUEUg
Knl5bG9jYXRpb25wOwogICAgIFRQYXJzZUNvbnRleHQqIGNvbnRleHQ7CiAjZW5kaWYKIHsKICAg
WVlVU0UgKHl5dmFsdWVwKTsKKyAgWVlVU0UgKHl5bG9jYXRpb25wKTsKICAgWVlVU0UgKGNvbnRl
eHQpOwogCiAgIGlmICgheXltc2cpCkBAIC0xOTA5LDYgKzE5NTIsOCBAQCBZWVNUWVBFIHl5bHZh
bDsKIAogLyogTnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KIGludCB5eW5lcnJz
OworLyogTG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KK1lZTFRZ
UEUgeXlsbG9jOwogCiAgIGludCB5eXN0YXRlOwogICBpbnQgeXluOwpAQCAtMTk0MiwxNiArMTk4
NywyMSBAQCBpbnQgeXluZXJyczsKICAgWVlTVFlQRSAqeXl2cyA9IHl5dnNhOwogICBZWVNUWVBF
ICp5eXZzcDsKIAorICAvKiBUaGUgbG9jYXRpb24gc3RhY2suICAqLworICBZWUxUWVBFIHl5bHNh
W1lZSU5JVERFUFRIXTsKKyAgWVlMVFlQRSAqeXlscyA9IHl5bHNhOworICBZWUxUWVBFICp5eWxz
cDsKKyAgLyogVGhlIGxvY2F0aW9ucyB3aGVyZSB0aGUgZXJyb3Igc3RhcnRlZCBhbmQgZW5kZWQu
ICAqLworICBZWUxUWVBFIHl5ZXJyb3JfcmFuZ2VbMl07CiAKLQotI2RlZmluZSBZWVBPUFNUQUNL
KE4pICAgKHl5dnNwIC09IChOKSwgeXlzc3AgLT0gKE4pKQorI2RlZmluZSBZWVBPUFNUQUNLKE4p
ICAgKHl5dnNwIC09IChOKSwgeXlzc3AgLT0gKE4pLCB5eWxzcCAtPSAoTikpCiAKICAgWVlTSVpF
X1QgeXlzdGFja3NpemUgPSBZWUlOSVRERVBUSDsKIAogICAvKiBUaGUgdmFyaWFibGVzIHVzZWQg
dG8gcmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQogICAgICBhY3Rp
b24gcm91dGluZXMuICAqLwogICBZWVNUWVBFIHl5dmFsOwotCisgIFlZTFRZUEUgeXlsb2M7CiAK
ICAgLyogVGhlIG51bWJlciBvZiBzeW1ib2xzIG9uIHRoZSBSSFMgb2YgdGhlIHJlZHVjZWQgcnVs
ZS4KICAgICAgS2VlcCB0byB6ZXJvIHdoZW4gbm8gc3ltYm9sIHNob3VsZCBiZSBwb3BwZWQuICAq
LwpAQCAtMTk3MSw2ICsyMDIxLDEyIEBAIGludCB5eW5lcnJzOwogCiAgIHl5c3NwID0geXlzczsK
ICAgeXl2c3AgPSB5eXZzOworICB5eWxzcCA9IHl5bHM7CisjaWYgZGVmaW5lZCBZWUxUWVBFX0lT
X1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFMCisgIC8qIEluaXRpYWxpemUgdGhlIGRlZmF1
bHQgbG9jYXRpb24gYmVmb3JlIHBhcnNpbmcgc3RhcnRzLiAgKi8KKyAgeXlsbG9jLmZpcnN0X2xp
bmUgICA9IHl5bGxvYy5sYXN0X2xpbmUgICA9IDE7CisgIHl5bGxvYy5maXJzdF9jb2x1bW4gPSB5
eWxsb2MubGFzdF9jb2x1bW4gPSAwOworI2VuZGlmCiAKICAgZ290byB5eXNldHN0YXRlOwogCkBA
IC0xOTk3LDcgKzIwNTMsNyBAQCBpbnQgeXluZXJyczsKIAkgICBtZW1vcnkuICAqLwogCVlZU1RZ
UEUgKnl5dnMxID0geXl2czsKIAl5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKLQorCVlZTFRZ
UEUgKnl5bHMxID0geXlsczsKIAogCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZv
bGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQogCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQgc3RhY2ss
IGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKQEAgLTIwMDYsOSArMjA2Miw5IEBAIGludCB5
eW5lcnJzOwogCXl5b3ZlcmZsb3cgKFlZXygibWVtb3J5IGV4aGF1c3RlZCIpLAogCQkgICAgJnl5
c3MxLCB5eXNpemUgKiBzaXplb2YgKCp5eXNzcCksCiAJCSAgICAmeXl2czEsIHl5c2l6ZSAqIHNp
emVvZiAoKnl5dnNwKSwKLQorCQkgICAgJnl5bHMxLCB5eXNpemUgKiBzaXplb2YgKCp5eWxzcCks
CiAJCSAgICAmeXlzdGFja3NpemUpOwotCisJeXlscyA9IHl5bHMxOwogCXl5c3MgPSB5eXNzMTsK
IAl5eXZzID0geXl2czE7CiAgICAgICB9CkBAIC0yMDMxLDcgKzIwODcsNyBAQCBpbnQgeXluZXJy
czsKIAkgIGdvdG8geXlleGhhdXN0ZWRsYWI7CiAJWVlTVEFDS19SRUxPQ0FURSAoeXlzcyk7CiAJ
WVlTVEFDS19SRUxPQ0FURSAoeXl2cyk7Ci0KKwlZWVNUQUNLX1JFTE9DQVRFICh5eWxzKTsKICMg
IHVuZGVmIFlZU1RBQ0tfUkVMT0NBVEUKIAlpZiAoeXlzczEgIT0geXlzc2EpCiAJICBZWVNUQUNL
X0ZSRUUgKHl5c3MxKTsKQEAgLTIwNDEsNyArMjA5Nyw3IEBAIGludCB5eW5lcnJzOwogCiAgICAg
ICB5eXNzcCA9IHl5c3MgKyB5eXNpemUgLSAxOwogICAgICAgeXl2c3AgPSB5eXZzICsgeXlzaXpl
IC0gMTsKLQorICAgICAgeXlsc3AgPSB5eWxzICsgeXlzaXplIC0gMTsKIAogICAgICAgWVlEUFJJ
TlRGICgoc3RkZXJyLCAiU3RhY2sgc2l6ZSBpbmNyZWFzZWQgdG8gJWx1XG4iLAogCQkgICh1bnNp
Z25lZCBsb25nIGludCkgeXlzdGFja3NpemUpKTsKQEAgLTIxMTgsNyArMjE3NCw3IEBAIHl5YmFj
a3VwOgogCiAgIHl5c3RhdGUgPSB5eW47CiAgICorK3l5dnNwID0geXlsdmFsOwotCisgICorK3l5
bHNwID0geXlsbG9jOwogICBnb3RvIHl5bmV3c3RhdGU7CiAKIApAQCAtMjE0OSwxOCArMjIwNSwx
OSBAQCB5eXJlZHVjZToKICAgICAgR0NDIHdhcm5pbmcgdGhhdCBZWVZBTCBtYXkgYmUgdXNlZCB1
bmluaXRpYWxpemVkLiAgKi8KICAgeXl2YWwgPSB5eXZzcFsxLXl5bGVuXTsKIAotCisgIC8qIERl
ZmF1bHQgbG9jYXRpb24uICAqLworICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWxzcCAtIHl5
bGVuKSwgeXlsZW4pOwogICBZWV9SRURVQ0VfUFJJTlQgKHl5bik7CiAgIHN3aXRjaCAoeXluKQog
ICAgIHsKLSAgICAgICAgY2FzZSAyOgorICAgICAgICBjYXNlIDQ6CiAKICAgICB7CiAgICAgICAg
IC8vIFRoZSBzeW1ib2wgdGFibGUgc2VhcmNoIHdhcyBkb25lIGluIHRoZSBsZXhpY2FsIHBoYXNl
CiAgICAgICAgIGNvbnN0IFRTeW1ib2wqIHN5bWJvbCA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCku
c3ltYm9sOwogICAgICAgICBjb25zdCBUVmFyaWFibGUqIHZhcmlhYmxlOwogICAgICAgICBpZiAo
c3ltYm9sID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMSkgLSAo
MSldLmxleCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciIsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxz
cFsoMSkgLSAoMSldKSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciIsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkuc3RyaW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAg
ICAgICBUVmFyaWFibGUqIGZha2VWYXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5zdHJpbmcsIHR5cGUpOwpAQCAtMjE2OSwxMCArMjIyNiwxNyBAQCB5eXJlZHVj
ZToKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoaXMgaWRlbnRpZmllciBjYW4g
b25seSBiZSBhIHZhcmlhYmxlIHR5cGUgc3ltYm9sCiAgICAgICAgICAgICBpZiAoISBzeW1ib2wt
PmlzVmFyaWFibGUoKSkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MSkgLSAoMSldLmxleCkubGluZSwgInZhcmlhYmxlIGV4cGVjdGVkIiwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eWxzcFsoMSkgLSAoMSldKSwgInZhcmlhYmxlIGV4cGVjdGVkIiwgKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgdmFyaWFibGUg
PSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUqPihzeW1ib2wpOworCisgICAgICAgICAgICBp
ZiAoY29udGV4dC0+c3ltYm9sVGFibGUuZmluZEJ1aWx0SW4odmFyaWFibGUtPmdldE5hbWUoKSkg
JiYKKyAgICAgICAgICAgICAgICAhdmFyaWFibGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkgJiYK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5leHRlbnNpb25FcnJvckNoZWNrKCh5eWxzcFsoMSkg
LSAoMSldKSwgdmFyaWFibGUtPmdldEV4dGVuc2lvbigpKSkgeworICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8v
IGRvbid0IGRlbGV0ZSAkMS5zdHJpbmcsIGl0J3MgdXNlZCBieSBlcnJvciByZWNvdmVyeSwgYW5k
IHRoZSBwb29sCkBAIC0yMTgxLDIyICsyMjQ1LDIzIEBAIHl5cmVkdWNlOgogICAgICAgICBpZiAo
dmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCApIHsKICAgICAg
ICAgICAgIENvbnN0YW50VW5pb24qIGNvbnN0QXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29uc3RQb2lu
dGVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0KHZhcmlhYmxlLT5nZXRUeXBlKCkpOwotICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwgKHl5dnNwWygxKSAtICgxKV0ubGV4
KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHQsICh5eWxz
cFsoMSkgLSAoMSldKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJp
YWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5bHNw
WygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzoKKyAgY2FzZSA1
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQogICAgIGJyZWFr
OwogCi0gIGNhc2UgNDoKKyAgY2FzZSA2OgogCiAgICAgewogICAgICAgICAvLwpAQCAtMjIwNCwx
NTUgKzIyNjksNzkgQEAgeXlyZWR1Y2U6CiAgICAgICAgIC8vIGNoZWNrIGZvciBvdmVyZmxvdyBm
b3IgY29uc3RhbnRzCiAgICAgICAgIC8vCiAgICAgICAgIGlmIChhYnMoKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5pKSA+PSAoMSA8PCAxNikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgIiBpbnRlZ2VyIGNvbnN0YW50IG92ZXJmbG93Iiwg
IiIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiIGlu
dGVnZXIgY29uc3RhbnQgb3ZlcmZsb3ciLCAiIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgIH0KICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5l
dyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5pKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygxKSAtICgxKV0u
bGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0
SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNToKKyAgY2FzZSA3OgogCiAgICAgewogICAgICAgICBD
b25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAg
IHVuaW9uQXJyYXktPnNldEZDb25zdCgoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmYpOwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVk
LCBFdnFDb25zdCksICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNv
bnN0KSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
NjoKKyAgY2FzZSA4OgogCiAgICAgewogICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5
ID0gbmV3IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdCgo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLmIpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygxKSAt
ICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDc6CisgIGNhc2UgOToKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDg6
CisgIGNhc2UgMTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5OgorICBjYXNlIDExOgogCiAgICAgewotICAgICAgICBp
ZiAoISh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkg
JiYgISh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgp
ICYmICEoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3Io
KSkgewotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRBc1N5bWJvbE5vZGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUsICIgbGVmdCBvZiAnWycgaXMgbm90IG9mIHR5
cGUgYXJyYXksIG1hdHJpeCwgb3IgdmVjdG9yICIsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNw
WygyKSAtICg0KV0ubGV4KS5saW5lLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5
LCBtYXRyaXgsIG9yIHZlY3RvciAiLCAiZXhwcmVzc2lvbiIpOwotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNv
bnN0ICYmICh5eXZzcFsoMykgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRRdWFs
aWZpZXIoKSA9PSBFdnFDb25zdCkgewotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc0FycmF5KCkpIHsgLy8gY29uc3RhbnQgZm9sZGlu
ZyBmb3IgYXJyYXlzCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+YWRkQ29uc3RBcnJheU5vZGUoKHl5dnNwWygzKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9p
bnRlcigpLT5nZXRJQ29uc3QoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7Ci0gICAgICAgICAgICB9IGVsc2Ug
aWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc1ZlY3Rvcigp
KSB7ICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCi0gICAgICAgICAgICAgICAgVFZl
Y3RvckZpZWxkcyBmaWVsZHM7Ci0gICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7Ci0gICAg
ICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2lu
dGVyKCktPmdldElDb25zdCgpOyAvLyBuZWVkIHRvIGRvIGl0IHRoaXMgd2F5IGJlY2F1c2Ugdi54
eSBzZW5kcyBmaWVsZHMgaW50ZWdlciBhcnJheQotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0VmVjdG9yTm9kZShmaWVsZHMs
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0g
KDQpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNNYXRyaXgoKSkgeyAvLyBjb25zdGFudCBmb2xk
aW5nIGZvciBtYXRyaWNlcwotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0TWF0cml4Tm9kZSgoeXl2c3BbKDMpIC0gKDQpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJy
YXlQb2ludGVyKCktPmdldElDb25zdCgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDQpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5pc1ZlY3RvcigpIHx8ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LT5pc01hdHJpeCgpKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0gKHl5dnNwWygzKSAtICg0KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9p
bnRlcigpLT5nZXRJQ29uc3QoKSAmJiAhKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmlzQXJyYXkoKSApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdz
dHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJl
YW0gPDwgImZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgKHl5dnNwWygzKSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA8PCAiJyI7Ci0gICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAi
IiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXko
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgPT0gMCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldE1heEFycmF5U2l6ZSgpIDw9ICh5eXZzcFsoMykg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0
VW5pb25BcnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2V0TWF4U2l6ZSgoeXl2c3BbKDEpIC0gKDQp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNTeW1ib2xOb2RlKCksICh5eXZzcFsoMSkg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlUG9pbnRlcigpLCAoeXl2c3Bb
KDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QXNDb25zdGFudFVuaW9uKCkt
PmdldFVuaW9uQXJyYXlQb2ludGVyKCktPmdldElDb25zdCgpLCB0cnVlLCAoeXl2c3BbKDIpIC0g
KDQpXS5sZXgpLmxpbmUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNldE1heFNp
emUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzU3ltYm9s
Tm9kZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlw
ZVBvaW50ZXIoKSwgMCwgZmFsc2UsICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IGlmICggKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEFzQ29u
c3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLT5nZXRJQ29uc3QoKSA+PSAoeXl2
c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldEFycmF5
U2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0g
ZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0
cmVhbSA8PCAiYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlICciIDw8ICh5eXZzcFsoMykgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0VW5pb25B
cnJheVBvaW50ZXIoKS0+Z2V0SUNvbnN0KCkgPDwgIiciOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDQp
XS5sZXgpLmxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVP
cEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAo
NCldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmlzQXJyYXkoKSAmJiAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAiIiwgIlsiLCAi
YXJyYXkgbXVzdCBiZSByZWRlY2xhcmVkIHdpdGggYSBzaXplIGJlZm9yZSBiZWluZyBpbmRleGVk
IHdpdGggYSB2YXJpYWJsZSIpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4
SW5kaXJlY3QsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2
c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICg0KV0u
bGV4KS5saW5lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIENvbnN0YW50VW5p
b24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgICAgIHVuaW9u
QXJyYXktPnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9u
QXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAo
NCldLmxleCkubGluZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoKHl5dnNwWygxKSAtICg0KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmlzQXJyYXkoKSkgewotICAgICAgICAgICAgaWYgKCh5eXZz
cFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0U3RydWN0
KCkpCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRU
eXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRU
eXBlKCkuZ2V0U3RydWN0KCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSkpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCks
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24o
KSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Tm9taW5hbFNpemUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmlzTWF0cml4KCkpKTsKLQotICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZx
Q29uc3QpCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICB9IGVsc2Ug
aWYgKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgp
ICYmICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCku
Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0LCAoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOwotICAgICAg
ICBlbHNlIGlmICgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNN
YXRyaXgoKSkKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0
VHlwZShUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
QmFzaWNUeXBlKCksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSkpOwotICAgICAgICBlbHNlIGlmICgoeXl2
c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSAmJiAoeXl2
c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpLmdldFF1YWxp
ZmllcigpID09IEV2cUNvbnN0KQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldFByZWNpc2lvbigpLCBFdnFDb25zdCkpOwotICAgICAgICBlbHNlIGlmICgo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+aXNWZWN0b3IoKSkKLSAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShUVHlwZSgo
eXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCks
ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRQcmVjaXNpb24o
KSwgRXZxVGVtcG9yYXJ5KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+YWRkSW5kZXhFeHByZXNzaW9uKCh5eXZzcFsoMSkgLSAoNCld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMykg
LSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTA6CisgIGNhc2UgMTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMToKKyAgY2FzZSAxMzoKIAogICAgIHsK
ICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5p
c0FycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMykgLSAoMyld
LmxleCkubGluZSwgImNhbm5vdCBhcHBseSBkb3Qgb3BlcmF0b3IgdG8gYW4gYXJyYXkiLCAiLiIp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAiY2Fubm90
IGFwcGx5IGRvdCBvcGVyYXRvciB0byBhbiBhcnJheSIsICIuIik7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmlzVmVjdG9yKCkpIHsKICAgICAgICAgICAgIFRW
ZWN0b3JGaWVsZHMgZmllbGRzOwotICAgICAgICAgICAgaWYgKCEgY29udGV4dC0+cGFyc2VWZWN0
b3JGaWVsZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNpemUoKSwgZmllbGRzLCAoeXl2
c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpKSB7CisgICAgICAgICAgICBpZiAoISBjb250ZXh0LT5w
YXJzZVZlY3RvckZpZWxkcygqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVs
ZHMsICh5eWxzcFsoMykgLSAoMyldKSkpIHsKICAgICAgICAgICAgICAgICBmaWVsZHMubnVtID0g
MTsKICAgICAgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1swXSA9IDA7CiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRR
dWFsaWZpZXIoKSA9PSBFdnFDb25zdCkgeyAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3Ig
ZmllbGRzCi0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
Y29udGV4dC0+YWRkQ29uc3RWZWN0b3JOb2RlKGZpZWxkcywgKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7CisgICAg
ICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRk
Q29uc3RWZWN0b3JOb2RlKGZpZWxkcywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFsoMykgLSAoMyldKSk7CiAgICAgICAgICAgICAgICAgaWYgKCh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
CkBAIC0yMzYxLDEzICsyMzUwLDEzIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cUNvbnN0
LCAoaW50KSAoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nKS5zaXplKCkpKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgVFN0cmluZyB2ZWN0b3JTdHJpbmcgPSAq
KHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmc7Ci0gICAgICAgICAgICAgICAgVEludGVybVR5
cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTd2l6emxlKGZpZWxkcywgKHl5
dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wVmVj
dG9yU3dpenpsZSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGlu
ZGV4LCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3dpenpsZShmaWVsZHMs
ICh5eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcFZlY3RvclN3
aXp6bGUsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwg
KHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPnNldFR5cGUoVFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldEJhc2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0UHJlY2lzaW9uKCksIEV2cVRlbXBvcmFyeSwgKGludCkgdmVjdG9y
U3RyaW5nLnNpemUoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKCh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5pc01hdHJpeCgpKSB7CiAgICAg
ICAgICAgICBUTWF0cml4RmllbGRzIGZpZWxkczsKLSAgICAgICAgICAgIGlmICghIGNvbnRleHQt
PnBhcnNlTWF0cml4RmllbGRzKCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCksIGZp
ZWxkcywgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKSkgeworICAgICAgICAgICAgaWYgKCEg
Y29udGV4dC0+cGFyc2VNYXRyaXhGaWVsZHMoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5n
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Tm9taW5hbFNp
emUoKSwgZmllbGRzLCAoeXlsc3BbKDMpIC0gKDMpXSkpKSB7CiAgICAgICAgICAgICAgICAgZmll
bGRzLndob2xlUm93ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLndob2xlQ29sID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgZmllbGRzLnJvdyA9IDA7CkBAIC0yMzc2LDYzICsyMzY1
LDU3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZmllbGRz
Lndob2xlUm93IHx8IGZpZWxkcy53aG9sZUNvbCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIiBub24tc2NhbGFyIGZpZWxkcyBu
b3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXlsc3BbKDIpIC0gKDMpXSksICIgbm9uLXNjYWxhciBmaWVsZHMgbm90IGltcGxlbWVudGVk
IHlldCIsICIuIik7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsx
XTsKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoMCk7Ci0gICAgICAgICAg
ICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25z
dCksICh5eXZzcFsoMykgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4
KEVPcEluZGV4RGlyZWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAgICAg
VEludGVybVR5cGVkKiBpbmRleCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5
eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW5kZXgsICh5eWxz
cFsoMikgLSAoMyldKSk7CiAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5zZXRUeXBlKFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRCYXNpY1R5cGUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldFByZWNpc2lvbigpLEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldE5vbWluYWxTaXplKCkpKTsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5l
dyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25z
dChmaWVsZHMuY29sICogKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldE5vbWluYWxTaXplKCkgKyBmaWVsZHMucm93KTsKLSAgICAgICAgICAgICAgICBUSW50ZXJt
VHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5p
b25BcnJheSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygz
KSAtICgzKV0ubGV4KS5saW5lKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJl
Y3QsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQq
IGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygzKSAtICgz
KV0pKTsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsICh5eXZzcFsoMSkg
LSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbmRleCwgKHl5bHNwWygyKSAtICgzKV0p
KTsKICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5
cGUoVFR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldEJh
c2ljVHlwZSgpLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
UHJlY2lzaW9uKCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0
U3RydWN0KSB7CiAgICAgICAgICAgICBib29sIGZpZWxkRm91bmQgPSBmYWxzZTsKLSAgICAgICAg
ICAgIGNvbnN0IFRUeXBlTGlzdCogZmllbGRzID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKLSAgICAgICAgICAgIGlmIChm
aWVsZHMgPT0gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikg
LSAoMyldLmxleCkubGluZSwgInN0cnVjdHVyZSBoYXMgbm8gZmllbGRzIiwgIkludGVybmFsIEVy
cm9yIik7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZmll
bGRzLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKCpmaWVsZHMpW2ld
LnR5cGUtPmdldEZpZWxkTmFtZSgpID09ICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZykg
ewotICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3VuZCA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
Y29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmllbGRzW2ldLT5uYW1lKCkgPT0gKih5
eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGZpZWxk
Rm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKGZpZWxkRm91bmQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBl
KCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0U3RydWN0
KCooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0g
KHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUo
KigqZmllbGRzKVtpXS50eXBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFu
Z2UgdGhlIHF1YWxpZmllciBvZiB0aGUgcmV0dXJuIHR5cGUsIG5vdCBvZiB0aGUgc3RydWN0dXJl
IGZpZWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgdGhlIHN0cnVjdHVyZSBk
ZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3ZWVuIHZhcmlvdXMgc3RydWN0dXJlcy4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5
cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFDb25zdCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGluZGV4ID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgKigqZmllbGRzKVtpXS50eXBlLCAoeXl2
c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEluZGV4
KEVPcEluZGV4RGlyZWN0U3RydWN0LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgaW5kZXgsICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoKigq
ZmllbGRzKVtpXS50eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmaWVsZEZv
dW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpIHsKKyAg
ICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+YWRkQ29uc3RTdHJ1Y3QoKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZSgqZmllbGRzW2ldLT50eXBl
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBxdWFsaWZpZXIgb2Yg
dGhlIHJldHVybiB0eXBlLCBub3Qgb2YgdGhlIHN0cnVjdHVyZSBmaWVsZAorICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gYXMgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIGlzIHNoYXJlZCBiZXR3
ZWVuIHZhcmlvdXMgc3RydWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2
cUNvbnN0KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxl
eCkubGluZSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIsICh5eXZzcFsoMykgLSAoMyld
LmxleCkuc3RyaW5nLT5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKKyAgICAgICAg
ICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9u
WzFdOworICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoaSk7CisgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW5kZXggPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAqZmllbGRzW2ldLT50eXBlKCksICh5eWxz
cFsoMykgLSAoMyldKSk7CisgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVj
dFN0cnVjdCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGluZGV4
LCAoeXlsc3BbKDIpIC0gKDMpXSkpOworICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPnNldFR5cGUoKmZpZWxkc1tpXS0+dHlwZSgpKTsKICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiBubyBzdWNoIGZpZWxkIGluIHN0cnVjdHVyZSIs
ICh5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIgZmllbGQgc2VsZWN0aW9uIHJlcXVp
cmVzIHN0cnVjdHVyZSwgdmVjdG9yLCBvciBtYXRyaXggb24gbGVmdCBoYW5kIHNpZGUiLCAoeXl2
c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICIgZmllbGQgc2VsZWN0aW9uIHJlcXVpcmVzIHN0
cnVjdHVyZSwgdmVjdG9yLCBvciBtYXRyaXggb24gbGVmdCBoYW5kIHNpZGUiLCAoeXl2c3BbKDMp
IC0gKDMpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQpAQCAtMjQ0
MCwzNSArMjQyMywzNSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTI6CisgIGNhc2UgMTQ6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJv
ckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgIisrIiwgKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVl
RXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICIrKyIsICh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZFVuYXJ5TWF0aChFT3BQb3N0SW5jcmVtZW50LCAoeXl2c3BbKDEpIC0gKDIpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUG9zdEluY3JlbWVudCwg
KHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAo
MildKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJv
cigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICIrKyIsICh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICIrKyIsICh5eXZzcFso
MSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzOgorICBj
YXNlIDE1OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5eXZzcFsoMSkgLSAoMildLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hl
Y2soKHl5bHNwWygyKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRVbmFyeU1hdGgoRU9wUG9zdERlY3JlbWVudCwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3lt
Ym9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFBvc3REZWNyZW1lbnQsICh5eXZzcFso
MSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDIpXSksIGNv
bnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJyb3IoKHl5dnNw
WygyKSAtICgyKV0ubGV4KS5saW5lLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT51bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiLS0iLCAoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsK
ICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDoKKyAgY2FzZSAxNjoK
IAogICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQtPmludGVnZXJFcnJvckNoZWNrKCh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAiW10iKSkKQEAgLTI0NzcsNyArMjQ2
MCw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNToKKyAgY2Fz
ZSAxNzoKIAogICAgIHsKICAgICAgICAgVEZ1bmN0aW9uKiBmbkNhbGwgPSAoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0pLmZ1bmN0aW9uOwpAQCAtMjQ5MSwxOCArMjQ3NCwxOCBAQCB5eXJlZHVjZToK
ICAgICAgICAgICAgIC8vIFRoZWlyIHBhcmFtZXRlcnMgd2lsbCBiZSB2ZXJpZmllZCBhbGdvcml0
aG1pY2FsbHkuCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgVFR5cGUgdHlwZShFYnRWb2lk
LCBFYnBVbmRlZmluZWQpOyAgLy8gdXNlIHRoaXMgdG8gZ2V0IHRoZSB0eXBlIGJhY2sKLSAgICAg
ICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1Y3RvckVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtKS5saW5lLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsICpm
bkNhbGwsIG9wLCAmdHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5jb25zdHJ1Y3Rv
ckVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0p
LmludGVybU5vZGUsICpmbkNhbGwsIG9wLCAmdHlwZSkpIHsKICAgICAgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEl0J3MgYSBjb25zdHJ1Y3Rvciwg
b2YgdHlwZSAndHlwZScuCiAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvcigoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsICZ0eXBlLCBvcCwgZm5DYWxsLCAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbnN0cnVjdG9yKCh5eXZzcFsoMSkg
LSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgJnR5cGUsIG9wLCBmbkNhbGwsICh5eWxzcFsoMSkg
LSAoMSldKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPT0gMCkgewogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoMCwgb3AsICh5eXZzcFso
MSkgLSAoMSldLmludGVybSkubGluZSk7CisgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJh
dG9yKDAsIG9wLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5zZXRUeXBlKHR5cGUpOwogICAgICAg
ICB9IGVsc2UgewpAQCAtMjUxMSwxMyArMjQ5NCwxMyBAQCB5eXJlZHVjZToKICAgICAgICAgICAg
IC8vCiAgICAgICAgICAgICBjb25zdCBURnVuY3Rpb24qIGZuQ2FuZGlkYXRlOwogICAgICAgICAg
ICAgYm9vbCBidWlsdEluOwotICAgICAgICAgICAgZm5DYW5kaWRhdGUgPSBjb250ZXh0LT5maW5k
RnVuY3Rpb24oKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lLCBmbkNhbGwsICZidWlsdElu
KTsKKyAgICAgICAgICAgIGZuQ2FuZGlkYXRlID0gY29udGV4dC0+ZmluZEZ1bmN0aW9uKCh5eWxz
cFsoMSkgLSAoMSldKSwgZm5DYWxsLCAmYnVpbHRJbik7CiAgICAgICAgICAgICBpZiAoZm5DYW5k
aWRhdGUpIHsKICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEEgZGVjbGFy
ZWQgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICBpZiAoYnVp
bHRJbiAmJiAhZm5DYW5kaWRhdGUtPmdldEV4dGVuc2lvbigpLmVtcHR5KCkgJiYKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0pLmxpbmUsIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZXh0ZW5zaW9uRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEp
XSksIGZuQ2FuZGlkYXRlLT5nZXRFeHRlbnNpb24oKSkpIHsKICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBv
cCA9IGZuQ2FuZGlkYXRlLT5nZXRCdWlsdEluT3AoKTsKQEAgLTI1MjksNyArMjUxMiw3IEBAIHl5
cmVkdWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFRyZWF0IGl0IGxpa2UgYSBidWlsdC1pbiB1bmFyeSBvcGVyYXRvci4KICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKG9w
LCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmludGVybU5vZGUsIDAsIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgob3AsICh5eXZzcFso
MSkgLSAoMSldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0
LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID09IDApICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiYnVpbHQgaW4gdW5hcnkgb3BlcmF0b3IgZnVuY3Rp
b24uICBUeXBlOiAiIDw8IHN0YXRpY19jYXN0PFRJbnRlcm1UeXBlZCo+KCh5eXZzcFsoMSkgLSAo
MSldLmludGVybSkuaW50ZXJtTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCk7CkBAIC0yNTM4LDEy
ICsyNTIxLDEyIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlZRVJS
T1I7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIG9wLCAoeXl2c3BbKDEpIC0gKDEpXS5p
bnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9y
KCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCBvcCwgKHl5bHNwWygx
KSAtICgxKV0pKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSByZWFsIGZ1bmN0aW9uIGNhbGwK
IAotICAgICAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsIEVPcEZ1bmN0aW9uQ2FsbCwgKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJh
dG9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCBFT3BGdW5jdGlv
bkNhbGwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+c2V0VHlwZShmbkNhbmRpZGF0ZS0+Z2V0UmV0dXJuVHlw
ZSgpKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGhvdyB3ZSBrbm93IHdoZXRo
ZXIgdGhlIGdpdmVuIGZ1bmN0aW9uIGlzIGEgYnVpbHRJbiBmdW5jdGlvbiBvciBhIHVzZXIgZGVm
aW5lZCBmdW5jdGlvbgpAQCAtMjU3MCw3ICsyNTUzLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAg
ICAgICAgLy8gUHV0IG9uIGEgZHVtbXkgbm9kZSBmb3IgZXJyb3IgcmVjb3ZlcnkKICAgICAgICAg
ICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07
CiAgICAgICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRl
ZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsKKyAgICAg
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRGbG9hdCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNTc4
LDM5ICsyNTYxLDM3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
NjoKKyAgY2FzZSAxODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0pOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzoKKyAg
Y2FzZSAxOToKIAogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtKS5saW5lLCAibWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZCIsICIiKTsKKyAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAibWV0aG9kcyBhcmUgbm90IHN1
cHBvcnRlZCIsICIiKTsKICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAoeXl2
YWwuaW50ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE4OgorICBjYXNlIDIwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtKSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0p
LmxpbmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDE5OgorICBjYXNlIDIxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
KSA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxp
bmUgPSAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmU7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDIwOgorICBjYXNlIDIyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS5m
dW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbik7CkBAIC0yNjE4LDcg
KzI1OTksNyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjE6Cisg
IGNhc2UgMjM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmZ1bmN0aW9uKTsKQEAgLTI2MjYsNyArMjYwNyw3IEBAIHl5
cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjoKKyAgY2FzZSAyNDoKIAog
ICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgMCwgbmV3IFRUeXBlKCh5eXZzcFso
MikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpIH07CkBAIC0yNjM2
LDI0ICsyNjE3LDI0IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAy
MzoKKyAgY2FzZSAyNToKIAogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9IHsgMCwg
bmV3IFRUeXBlKCh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRU
eXBlKCkpIH07CiAgICAgICAgICh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24tPmFk
ZFBhcmFtZXRlcihwYXJhbSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5
dnNwWygxKSAtICgzKV0uaW50ZXJtKS5mdW5jdGlvbjsKLSAgICAgICAgKHl5dmFsLmludGVybSku
aW50ZXJtTm9kZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFso
MSkgLSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0pLmludGVybU5vZGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3Jl
Z2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVybU5vZGUsICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDoKKyAgY2FzZSAyNjoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rp
b24pOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNToKKyAgY2FzZSAyNzoKIAogICAg
IHsKICAgICAgICAgLy8KQEAgLTI2NjcsMzkgKzI2NDgsMzkgQEAgeXlyZWR1Y2U6CiAgICAgICAg
ICAgICBjYXNlIEVidEZsb2F0OgogICAgICAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0udHlwZSkubWF0cml4KSB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCgoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBj
YXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3Ry
dWN0TWF0MjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDM6IG9wID0gRU9wQ29uc3RydWN0TWF0MzsgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0TWF0NDsgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5zaXplKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3AgPSBFT3BDb25zdHJ1Y3RGbG9hdDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
MjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RW
ZWMyOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RWZWMzOyAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3AgPSBFT3BDb25zdHJ1Y3RWZWM0OyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMTogb3AgPSBFT3BDb25zdHJ1Y3RGbG9hdDsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RWZWMyOyAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RWZWMzOyAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RWZWM0OyAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIEVidEludDoKICAgICAgICAgICAgICAgICBzd2l0Y2goKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdElu
dDsgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZ
KCJpdmVjMiIsICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BD
b25zdHJ1Y3RJVmVjMjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiAgICAgICBGUkFH
X1ZFUlRfT05MWSgiaXZlYzMiLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7
IG9wID0gRU9wQ29uc3RydWN0SVZlYzM7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDog
ICAgICAgRlJBR19WRVJUX09OTFkoIml2ZWM0IiwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5
cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdElWZWM0OyBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0SW50OyAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RJVmVjMjsgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdElWZWMzOyBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0SVZlYzQ7IGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKICAgICAg
ICAgICAgICAgICBzd2l0Y2goKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnNpemUpIHsK
LSAgICAgICAgICAgICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEJvb2w7ICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIDI6ICAgICAgIEZSQUdfVkVSVF9PTkxZKCJidmVjMiIsICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS50eXBlKS5saW5lKTsgb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMjsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAzOiAgICAgICBGUkFHX1ZFUlRfT05MWSgiYnZlYzMiLCAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSk7IG9wID0gRU9wQ29uc3RydWN0QlZlYzM7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgNDogICAgICAgRlJBR19WRVJUX09OTFkoImJ2ZWM0Iiwg
KHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLmxpbmUpOyBvcCA9IEVPcENvbnN0cnVjdEJW
ZWM0OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29uc3RydWN0Qm9v
bDsgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RCVmVj
MjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdEJWZWMz
OyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9wQ29uc3RydWN0QlZlYzQ7
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9w
ID09IEVPcE51bGwpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSwgImNhbm5vdCBjb25zdHJ1Y3QgdGhpcyB0eXBlIiwg
Z2V0QmFzaWNTdHJpbmcoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKTsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJjYW5ub3Qg
Y29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5nKCh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS50eXBlKS50eXBlKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKS50eXBlID0gRWJ0
RmxvYXQ7CiAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RGbG9hdDsKQEAgLTI3MTIs
MjEgKzI2OTMsMTAgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDI2
OgotCi0gICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShFYnRW
b2lkLCBFYnBVbmRlZmluZWQpOwotICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRG
dW5jdGlvbigoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZywgdHlwZSk7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gZnVuY3Rpb247Ci0gICAgO30KLSAgICBicmVhazsKLQot
ICBjYXNlIDI3OgorICBjYXNlIDI4OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+cmVz
ZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSwgKih5eXZzcFsoMSkg
LSAoMSldLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JD
aGVjaygoeXlsc3BbKDEpIC0gKDEpXSksICooeXl2c3BbKDEpIC0gKDEpXS5sZXgpLnN0cmluZykp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIFRUeXBlIHR5cGUoRWJ0
Vm9pZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBU
RnVuY3Rpb24oKHl5dnNwWygxKSAtICgxKV0ubGV4KS5zdHJpbmcsIHR5cGUpOwpAQCAtMjczNCw0
NiArMjcwNCw0NiBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMjg6
CisgIGNhc2UgMjk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyOToKKyAgY2FzZSAzMDoKIAogICAgIHsKLSAgICAgICAg
aWYgKGNvbnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5l
LCAiKysiLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCisgICAg
ICAgIGlmIChjb250ZXh0LT5sVmFsdWVFcnJvckNoZWNrKCh5eWxzcFsoMSkgLSAoMildKSwgIisr
IiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlNYXRoKEVPcFByZUluY3JlbWVu
dCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMSkg
LSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkVW5hcnlN
YXRoKEVPcFByZUluY3JlbWVudCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eWxzcFsoMSkgLSAoMildKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAg
ICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICIrKyIs
ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXlsc3BbKDEpIC0g
KDIpXSksICIrKyIsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMikgLSAo
MildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDMwOgorICBjYXNlIDMxOgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4
dC0+bFZhbHVlRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICItLSIsICh5
eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCAiLS0iLCAoeXl2c3Bb
KDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJlRGVjcmVtZW50LCAoeXl2c3Bb
KDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgyKV0ubGV4
KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoRU9wUHJl
RGVjcmVtZW50LCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+
dW5hcnlPcEVycm9yKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgIi0tIiwgKHl5dnNwWygy
KSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwor
ICAgICAgICAgICAgY29udGV4dC0+dW5hcnlPcEVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgIi0t
IiwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygyKSAtICgyKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMzE6CisgIGNhc2UgMzI6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDIp
XS5pbnRlcm0pLm9wICE9IEVPcE51bGwpIHsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgoKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtKS5vcCwgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoMSkgLSAoMildLmludGVybSkubGluZSwgY29udGV4dC0+c3ltYm9s
VGFibGUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFVuYXJ5TWF0aCgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0p
Lm9wLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygx
KSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgICAgICBpZiAoKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBlcnJvck9wID0gIiI7CiAgICAgICAgICAgICAgICAgc3dpdGNoKCh5eXZzcFsoMSkgLSAo
MildLmludGVybSkub3ApIHsKQEAgLTI3ODEsNyArMjc1MSw3IEBAIHl5cmVkdWNlOgogICAgICAg
ICAgICAgICAgIGNhc2UgRU9wTG9naWNhbE5vdDogZXJyb3JPcCA9ICIhIjsgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnVuYXJ5T3BFcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxp
bmUsIGVycm9yT3AsICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT51bmFyeU9wRXJy
b3IoKHl5bHNwWygxKSAtICgyKV0pLCBlcnJvck9wLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwog
ICAgICAgICAgICAgfQpAQCAtMjc5MCwxODUgKzI3NjAsMTc4IEBAIHl5cmVkdWNlOgogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzMjoKLQotICAgIHsgKHl5dmFsLmludGVybSkubGluZSA9
ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BOdWxs
OyA7fQotICAgIGJyZWFrOwotCiAgIGNhc2UgMzM6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0pLmxp
bmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9w
TmVnYXRpdmU7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE51bGw7IDt9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAzNDoKIAotICAgIHsgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BMb2dpY2FsTm90
OyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BOZWdhdGl2ZTsgO30KICAgICBicmVh
azsKIAogICBjYXNlIDM1OgogCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICB7ICh5
eXZhbC5pbnRlcm0pLm9wID0gRU9wTG9naWNhbE5vdDsgO30KICAgICBicmVhazsKIAogICBjYXNl
IDM2OgogCisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICBicmVhazsKKworICBjYXNl
IDM3OgorCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgiKiIsICh5eXZzcFsoMikgLSAo
MyldLmxleCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE11bCwgKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5
bWJvbFRhYmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwog
ICAgICAgICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5l
LCAiKiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21w
bGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9y
KCh5eWxzcFsoMikgLSAoMyldKSwgIioiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAg
IH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMzc6CisgIGNhc2UgMzg6CiAKICAgICB7
Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCIvIiwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5l
KTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wRGl2LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BEaXYsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIvIiwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCks
ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAt
ICgzKV0pLCAiLyIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAzODoKKyAgY2FzZSAzOToKIAogICAgIHsgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzOToKKyAgY2FzZSA0MDoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wQWRkLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BBZGQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+
YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICIrIiwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgz
KV0pLCAiKyIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRD
b21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CiAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSA0MDoKKyAgY2FzZSA0MToKIAogICAgIHsKLSAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZEJpbmFy
eU1hdGgoRU9wU3ViLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAo
MyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0
aChFT3BTdWIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2
c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0p
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigo
eXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICItIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiLSIsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA0MToKKyAgY2FzZSA0MjoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAgYnJl
YWs7CiAKLSAgY2FzZSA0MjoKKyAgY2FzZSA0MzoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0MzoKKyAgY2FzZSA0NDoKIAogICAgIHsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRl
LmFkZEJpbmFyeU1hdGgoRU9wTGVzc1RoYW4sICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRCaW5hcnlNYXRoKEVPcExlc3NUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAo
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiPCIsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikg
LSAoMyldKSwgIjwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+
Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBDb25zdGFu
dFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUpOworICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7CiAgICAgICAgIH0KICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgNDQ6CisgIGNhc2UgNDU6CiAKICAgICB7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRC
aW5hcnlNYXRoKEVPcEdyZWF0ZXJUaGFuLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BHcmVhdGVyVGhhbiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRhYmxlKTsKICAgICAgICAgaWYg
KCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgIj4iLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmco
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIp
IC0gKDMpXSksICI+IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3Rh
bnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0g
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDQ1OgorICBjYXNlIDQ2OgogCiAgICAgewotICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
QmluYXJ5TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuYWRkQmluYXJ5TWF0aChFT3BMZXNzVGhhbkVxdWFsLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eWxzcFsoMikgLSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAg
ICBpZiAoKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiPD0i
LCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENv
bXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXls
c3BbKDIpIC0gKDMpXSksICI8PSIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3
IENvbnN0YW50VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFs
c2UpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7
CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBF
YnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0NjoKKyAgY2FzZSA0NzoKIAogICAgIHsKLSAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW5FcXVhbCwgKHl5dnNwWygxKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgoRU9wR3JlYXRlclRoYW5FcXVhbCwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxl
eCkubGluZSwgIj49IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiPj0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5p
b25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+
c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMp
XS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7
CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDc6CisgIGNhc2UgNDg6
CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDg6
CisgIGNhc2UgNDk6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcEVxdWFsLCAoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29u
dGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BFcXVhbCwgKHl5dnNw
WygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJv
bFRhYmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAw
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyld
LmxleCkubGluZSwgIj09IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJp
bmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiPT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAt
ICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJh
eS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0g
KDMpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyld
KSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNDk6CisgIGNhc2Ug
NTA6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcE5vdEVxdWFsLCAoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+
c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChFT3BOb3RFcXVhbCwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMykgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbKDIpIC0gKDMpXSksIGNvbnRleHQtPnN5bWJvbFRh
YmxlKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxl
eCkubGluZSwgIiE9IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmFy
eU9wRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiIT0iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgQ29uc3RhbnRVbmlvbiAqdW5p
b25BcnJheSA9IG5ldyBDb25zdGFudFVuaW9uWzFdOwogICAgICAgICAgICAgdW5pb25BcnJheS0+
c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXks
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXl2c3BbKDIpIC0gKDMp
XS5sZXgpLmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksICh5eWxzcFsoMikgLSAoMyldKSk7
CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNTA6Ci0KLSAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpOyA7fQotICAgIGJyZWFrOwotCiAgIGNhc2UgNTE6CiAKICAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpOyA7fQpAQCAtMjk4NiwxNDMgKzI5NDksMTQ4IEBAIHl5cmVkdWNlOgog
CiAgIGNhc2UgNTQ6CiAKKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyA7fQorICAgIGJyZWFrOwor
CisgIGNhc2UgNTU6CisKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxBbmQs
ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0g
KDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5l
LCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCaW5hcnlNYXRoKEVPcExvZ2ljYWxB
bmQsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pLCBjb250
ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXl2c3Bb
KDIpIC0gKDMpXS5sZXgpLmxpbmUsICImJiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikgLSAoMyldKSwgIiYmIiwgKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5
eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIENvbnN0
YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3RhbnRVbmlvblsxXTsKICAgICAgICAgICAg
IHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlv
bih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVu
aW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3Bb
KDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDU1
OgorICBjYXNlIDU2OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KICAgICBicmVhazsK
IAotICBjYXNlIDU2OgorICBjYXNlIDU3OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0aChF
T3BMb2dpY2FsWG9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFsoMikgLSAo
MyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQmluYXJ5TWF0
aChFT3BMb2dpY2FsWG9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFsoMikg
LSAoMyldKSwgY29udGV4dC0+c3ltYm9sVGFibGUpOwogICAgICAgICBpZiAoKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID09IDApIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9w
RXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAiXl4iLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOwor
ICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigoeXlsc3BbKDIpIC0gKDMpXSksICJe
XiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0
ZVN0cmluZygpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0
Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgICAgICBDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IENvbnN0YW50VW5pb25bMV07
CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBF
dnFDb25zdCksICh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29u
c3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNv
bnN0KSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA1NzoKKyAgY2FzZSA1ODoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1ODoKKyAgY2FzZSA1OToKIAogICAgIHsKLSAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFk
ZEJpbmFyeU1hdGgoRU9wTG9naWNhbE9yLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQmluYXJ5TWF0aChFT3BMb2dpY2FsT3IsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5bHNwWygyKSAtICgzKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZSk7CiAgICAgICAgIGlmICgo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4
dC0+YmluYXJ5T3BFcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5sZXgpLmxpbmUsICJ8fCIsICh5eXZz
cFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygp
LCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVT
dHJpbmcoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFsoMikg
LSAoMyldKSwgInx8IiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkt
PmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgICAgIENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgQ29uc3Rh
bnRVbmlvblsxXTsKICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0g
ICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBV
bmRlZmluZWQsIEV2cUNvbnN0KSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpLCAoeXlsc3BbKDIpIC0gKDMpXSkpOwogICAgICAgICB9CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDU5OgorICBjYXNlIDYwOgogCiAgICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDYwOgorICBjYXNlIDYxOgogCiAgICAg
ewotICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAg
ICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAoeXl2
c3BbKDEpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFsoNSkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2
c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU2VsZWN0aW9uKCh5eXZzcFsoMSkg
LSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eWxzcFsoMikgLSAoNSldKSk7CiAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDUpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpICE9ICh5eXZzcFsoNSkgLSAoNSldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpCiAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwogCiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPT0gMCkgewotICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJv
cigoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICI6IiwgKHl5dnNwWygzKSAtICg1KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoNSkgLSAo
NSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoKHl5bHNwWygyKSAtICg1KV0pLCAiOiIsICh5
eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmlu
ZygpLCAoeXl2c3BbKDUpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDUpIC0gKDUpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA2MToKKyAgY2FzZSA2MjoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSA2MjoKKyAgY2FzZSA2MzoKIAogICAgIHsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmxWYWx1ZUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgzKV0uaW50ZXJtKS5saW5lLCAi
YXNzaWduIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpKQorICAg
ICAgICBpZiAoY29udGV4dC0+bFZhbHVlRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDMpXSksICJh
c3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSkpCiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRBc3NpZ24oKHl5dnNwWygyKSAt
ICgzKV0uaW50ZXJtKS5vcCwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDIp
IC0gKDMpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQXNzaWduKCh5eXZzcFsoMikgLSAoMyld
LmludGVybSkub3AsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgz
KV0pKTsKICAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5hc3NpZ25FcnJvcigoeXl2c3BbKDIpIC0gKDMpXS5pbnRl
cm0pLmxpbmUsICJhc3NpZ24iLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+
YXNzaWduRXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiYXNzaWduIiwgKHl5dnNwWygxKSAtICgz
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFso
MykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDYzOgotCi0g
ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmxp
bmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9w
QXNzaWduOyA7fQotICAgIGJyZWFrOwotCiAgIGNhc2UgNjQ6CiAKLSAgICB7IEZSQUdfVkVSVF9P
TkxZKCIqPSIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50ZXJt
KS5saW5lID0gKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9
IEVPcE11bEFzc2lnbjsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQXNzaWduOyA7
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjU6CiAKLSAgICB7IEZSQUdfVkVSVF9PTkxZKCIvPSIs
ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7ICAgICAoeXl2YWwuaW50ZXJtKS5saW5lID0g
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcERpdkFz
c2lnbjsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTXVsQXNzaWduOyA7fQogICAg
IGJyZWFrOwogCiAgIGNhc2UgNjY6CiAKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGlu
ZTsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBZGRBc3NpZ247IDt9CisgICAgeyAoeXl2YWwuaW50
ZXJtKS5vcCA9IEVPcERpdkFzc2lnbjsgO30KICAgICBicmVhazsKIAogICBjYXNlIDY3OgogCi0g
ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmxp
bmUgPSAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmU7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9w
U3ViQXNzaWduOyA7fQorICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBZGRBc3NpZ247IDt9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2ODoKIAotICAgIHsKKyAgICB7ICh5eXZhbC5pbnRlcm0p
Lm9wID0gRU9wU3ViQXNzaWduOyA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNjk6CisKKyAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA2OToKKyAgY2FzZSA3MDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbW1hKCh5eXZzcFsoMSkgLSAo
MyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENv
bW1hKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDMp
IC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWygyKSAtICgzKV0pKTsKICAg
ICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwg
IiwiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluYXJ5T3BFcnJvcigo
eXlsc3BbKDIpIC0gKDMpXSksICIsIiwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZzcFsoMykgLSAoMyldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgICAgICB9
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDcwOgorICBjYXNlIDcxOgogCiAgICAgewog
ICAgICAgICBpZiAoY29udGV4dC0+Y29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKQEAgLTMxMzEsNyArMzA5OSw3IEBAIHl5cmVkdWNlOgog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3MToKKyAgY2FzZSA3MjoKIAogICAgIHsKICAg
ICAgICAgVEZ1bmN0aW9uICZmdW5jdGlvbiA9ICooKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtKS5m
dW5jdGlvbik7CkBAIC0zMTQ1LDEzICszMTEzLDEzIEBAIHl5cmVkdWNlOgogICAgICAgICAgICAg
Y29uc3QgVFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJhbShpKTsKICAgICAgICAg
ICAgIGlmIChwYXJhbS5uYW1lICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
VFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFyaWFibGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5
cGUpOworICAgICAgICAgICAgICAgIFRWYXJpYWJsZSB2YXJpYWJsZShwYXJhbS5uYW1lLCAqcGFy
YW0udHlwZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcHJvdG90eXBlID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS0+
Z2V0TmFtZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0p
LmxpbmUpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAg
IHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3RvdHlw
ZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS5nZXRVbmlxdWVJZCgp
LCB2YXJpYWJsZS5nZXROYW1lKCksIHZhcmlhYmxlLmdldFR5cGUoKSwgKHl5bHNwWygxKSAtICgy
KV0pKSwgKHl5bHNwWygxKSAtICgyKV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0p
LmxpbmUpLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAg
IHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3RvdHlw
ZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsICh5
eWxzcFsoMSkgLSAoMildKSksICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgCkBAIC0zMTYyLDcgKzMxMzAsNyBAQCB5eXJlZHVjZToKICAgICA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzI6CisgIGNhc2UgNzM6CiAKICAgICB7CiAgICAgICAg
IGlmICgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSkKQEAgLTMxNzEs
MjIgKzMxMzksMjIgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDcz
OgorICBjYXNlIDc0OgogCiAgICAgewogICAgICAgICBpZiAoKCh5eXZzcFsoMikgLSAoNCldLmlu
dGVybS5wcmVjaXNpb24pID09IEVicEhpZ2gpICYmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNI
X0ZSQUdNRU5UX1NIQURFUikgJiYgIWNvbnRleHQtPmZyYWdtZW50UHJlY2lzaW9uSGlnaCkgewot
ICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICg0KV0ubGV4KS5saW5lLCAi
cHJlY2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVyIiwgImhpZ2hwIik7
CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDQpXSksICJwcmVjaXNp
b24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWNvbnRl
eHQtPnN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oICh5eXZzcFsoMykgLSAoNCldLmlu
dGVybS50eXBlKSwgKHl5dnNwWygyKSAtICg0KV0uaW50ZXJtLnByZWNpc2lvbikgKSkgewotICAg
ICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICg0KV0ubGV4KS5saW5lLCAiaWxs
ZWdhbCB0eXBlIGFyZ3VtZW50IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRC
YXNpY1N0cmluZygoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0udHlwZSkudHlwZSkpOworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICg0KV0pLCAiaWxsZWdhbCB0eXBlIGFy
Z3VtZW50IGZvciBkZWZhdWx0IHByZWNpc2lvbiBxdWFsaWZpZXIiLCBnZXRCYXNpY1N0cmluZygo
eXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0udHlwZSkudHlwZSkpOwogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3NDoKKyAgY2FzZSA3NToKIAog
ICAgIHsKICAgICAgICAgLy8KQEAgLTMyMDAsMjQgKzMxNjgsNDEgQEAgeXlyZWR1Y2U6CiAgICAg
ICAgIFRGdW5jdGlvbiogcHJldkRlYyA9IHN0YXRpY19jYXN0PFRGdW5jdGlvbio+KGNvbnRleHQt
PnN5bWJvbFRhYmxlLmZpbmQoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0
TWFuZ2xlZE5hbWUoKSkpOwogICAgICAgICBpZiAocHJldkRlYykgewogICAgICAgICAgICAgaWYg
KHByZXZEZWMtPmdldFJldHVyblR5cGUoKSAhPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVu
Y3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cigoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0
IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVu
Y3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAib3ZlcmxvYWRlZCBmdW5jdGlv
bnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0eXBlIiwgKHl5dnNwWygxKSAtICgyKV0uaW50
ZXJtLmZ1bmN0aW9uKS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3RyaW5nKCkpOwogICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJldkRlYy0+Z2V0UGFyYW1Db3VudCgpOyArK2kpIHsK
ICAgICAgICAgICAgICAgICBpZiAocHJldkRlYy0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlm
aWVyKCkgIT0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSku
dHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVz
dCBoYXZlIHRoZSBzYW1lIHBhcmFtZXRlciBxdWFsaWZpZXJzIiwgKHl5dnNwWygxKSAtICgyKV0u
aW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkp
OworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSks
ICJvdmVybG9hZGVkIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxp
ZmllcnMiLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pLT5nZXRQYXJhbShpKS50
eXBlLT5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
IAogICAgICAgICAvLworICAgICAgICAvLyBDaGVjayBmb3IgcHJldmlvdXNseSBkZWNsYXJlZCB2
YXJpYWJsZXMgdXNpbmcgdGhlIHNhbWUgbmFtZS4KKyAgICAgICAgLy8KKyAgICAgICAgVFN5bWJv
bCAqcHJldlN5bSA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmQoKHl5dnNwWygxKSAtICgyKV0u
aW50ZXJtLmZ1bmN0aW9uKS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgaWYgKHByZXZTeW0pCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghcHJldlN5bS0+aXNGdW5jdGlvbigpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwg
InJlZGVmaW5pdGlvbiIsICh5eXZzcFsoMSkgLSAoMildLmludGVybS5mdW5jdGlvbiktPmdldE5h
bWUoKS5jX3N0cigpLCAiZnVuY3Rpb24iKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7
CisgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHVubWFuZ2xlZCBuYW1lIHRvIGRldGVjdCBwb3Rl
bnRpYWwgZnV0dXJlIHJlZGVmaW5pdGlvbiBhcyBhIHZhcmlhYmxlLgorICAgICAgICAgICAgY29u
dGV4dC0+c3ltYm9sVGFibGUuZ2V0T3V0ZXJMZXZlbCgpLT5pbnNlcnQoKHl5dnNwWygxKSAtICgy
KV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0TmFtZSgpLCAqKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LmZ1bmN0aW9uKSk7CisgICAgICAgIH0KKworICAgICAgICAvLwogICAgICAgICAvLyBJZiB0aGlz
IGlzIGEgcmVkZWNsYXJhdGlvbiwgaXQgY291bGQgYWxzbyBiZSBhIGRlZmluaXRpb24sCiAgICAg
ICAgIC8vIGluIHdoaWNoIGNhc2UsIHdlIHdhbnQgdG8gdXNlIHRoZSB2YXJpYWJsZSBuYW1lcyBm
cm9tIHRoaXMgb25lLCBhbmQgbm90IHRoZSBvbmUgdGhhdCdzCiAgICAgICAgIC8vIGJlaW5nIHJl
ZGVjbGFyZWQuICBTbywgcGFzcyBiYWNrIHVwIHRoaXMgZGVjbGFyYXRpb24sIG5vdCB0aGUgb25l
IGluIHRoZSBzeW1ib2wgdGFibGUuCiAgICAgICAgIC8vCiAgICAgICAgICh5eXZhbC5pbnRlcm0p
LmZ1bmN0aW9uID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmZ1bmN0aW9uKTsKLSAgICAgICAg
KHl5dmFsLmludGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKIAogICAg
ICAgICAvLyBXZSdyZSBhdCB0aGUgaW5uZXIgc2NvcGUgbGV2ZWwgb2YgdGhlIGZ1bmN0aW9uJ3Mg
YXJndW1lbnRzIGFuZCBib2R5IHN0YXRlbWVudC4KICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlv
biBwcm90b3R5cGUgdG8gdGhlIHN1cnJvdW5kaW5nIHNjb3BlIGluc3RlYWQuCkBAIC0zMjI1LDIx
ICszMjEwLDIxIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3NToK
KyAgY2FzZSA3NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA3NjoKKyAgY2FzZSA3NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5m
dW5jdGlvbikgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgIDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA3NzoKKyAgY2FzZSA3ODoKIAogICAgIHsKICAgICAgICAgLy8g
QWRkIHRoZSBwYXJhbWV0ZXIKQEAgLTMyNTEsNyArMzIzNiw3IEBAIHl5cmVkdWNlOgogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3ODoKKyAgY2FzZSA3OToKIAogICAgIHsKICAgICAgICAg
Ly8KQEAgLTMyNjIsNyArMzI0Nyw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgLy8KICAgICAg
ICAgICAgIC8vIFRoaXMgcGFyYW1ldGVyID4gZmlyc3QgaXMgdm9pZAogICAgICAgICAgICAgLy8K
LSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMyldLmxleCkubGluZSwg
ImNhbm5vdCBiZSBhbiBhcmd1bWVudCB0eXBlIGV4Y2VwdCBmb3IgJyh2b2lkKSciLCAidm9pZCIp
OworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgzKV0pLCAiY2Fubm90
IGJlIGFuIGFyZ3VtZW50IHR5cGUgZXhjZXB0IGZvciAnKHZvaWQpJyIsICJ2b2lkIik7CiAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBkZWxldGUgKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtKS5wYXJhbS50eXBlOwogICAgICAgICB9IGVsc2UgewpAQCAtMzI3Mywx
NSArMzI1OCwxNSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgNzk6
CisgIGNhc2UgODA6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0udHlwZSkucXVhbGlmaWVyICE9IEV2cUdsb2JhbCAmJiAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0udHlwZSkucXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgewotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAibm8gcXVhbGlmaWVycyBhbGxv
d2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAt
ICgzKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5bHNwWygyKSAtICgzKV0pLCAibm8gcXVhbGlmaWVycyBhbGxvd2VkIGZvciBmdW5jdGlv
biByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5
cGUpLnF1YWxpZmllcikpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAg
ICB9CiAgICAgICAgIC8vIG1ha2Ugc3VyZSBhIHNhbXBsZXIgaXMgbm90IGludm9sdmVkIGFzIHdl
bGwuLi4KLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5
dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkp
KQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3Bb
KDIpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBhcyBh
IHByb3RvdHlwZSBhZnRlciBwYXJzaW5nIGl0ICh3ZSBkbyBub3Qgc3VwcG9ydCByZWN1cnNpb24p
CkBAIC0zMjk0LDExMiArMzI3OSwxMTAgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDgwOgorICBjYXNlIDgxOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygx
KSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lLCAiaWxsZWdhbCB1c2Ugb2Yg
dHlwZSAndm9pZCciLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJpbGxlZ2FsIHVz
ZSBvZiB0eXBlICd2b2lkJyIsICh5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLT5jX3N0cigp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQotICAgICAgICBp
ZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGlu
ZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PnJlc2VydmVkRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICooeXl2c3BbKDIpIC0gKDIp
XS5sZXgpLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IFRQYXJhbWV0ZXIgcGFyYW0gPSB7KHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsIG5ldyBU
VHlwZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkpfTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybSkubGluZSA9ICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZTsKICAgICAgICAgKHl5dmFs
LmludGVybSkucGFyYW0gPSBwYXJhbTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODE6
CisgIGNhc2UgODI6CiAKICAgICB7CiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIG1ha2Ug
YW4gYXJyYXkgb3V0IG9mIHRoaXMgdHlwZQotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBl
RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSld
LmludGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNr
KCh5eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+cmVz
ZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNSldLmxleCkubGluZSwgKih5eXZzcFsoMikg
LSAoNSldLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JD
aGVjaygoeXlsc3BbKDIpIC0gKDUpXSksICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZykp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgaW50IHNpemU7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSld
LmxleCkubGluZSwgKHl5dnNwWyg0KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNp
emUpKQorICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDMp
IC0gKDUpXSksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXpl
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgKHl5dnNwWygxKSAt
ICg1KV0uaW50ZXJtLnR5cGUpLnNldEFycmF5KHRydWUsIHNpemUpOwogCiAgICAgICAgIFRUeXBl
KiB0eXBlID0gbmV3IFRUeXBlKCh5eXZzcFsoMSkgLSAoNSldLmludGVybS50eXBlKSk7CiAgICAg
ICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7ICh5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCB0
eXBlIH07Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmxpbmUgPSAoeXl2c3BbKDIpIC0gKDUpXS5s
ZXgpLmxpbmU7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnBhcmFtID0gcGFyYW07CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDgyOgorICBjYXNlIDgzOgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMykgLSAoMyldLmludGVybSk7Ci0gICAgICAgIGlmIChj
b250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKS5saW5lLCAo
eXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMp
XS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCisgICAgICAg
IGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygzKSAtICgzKV0pLCAoeXl2c3Bb
KDEpIC0gKDMpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRl
cm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDgzOgorICBj
YXNlIDg0OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFsoMikgLSAo
MildLmludGVybSk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbWV0ZXJTYW1wbGVyRXJyb3JD
aGVjaygoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLmxpbmUsICh5eXZzcFsoMSkgLSAoMildLmlu
dGVybS5xdWFsaWZpZXIpLCAqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtKS5wYXJhbS50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCh5eWxzcFso
MikgLSAoMildKSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICooeXl2c3Bb
KDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVj
b3ZlcigpOwotICAgICAgICBpZiAoY29udGV4dC0+cGFyYW1FcnJvckNoZWNrKCh5eXZzcFsoMikg
LSAoMildLmludGVybSkubGluZSwgRXZxVGVtcG9yYXJ5LCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0ucXVhbGlmaWVyKSwgKHl5dmFsLmludGVybSkucGFyYW0udHlwZSkpCisgICAgICAgIGlmIChj
b250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgyKV0pLCBFdnFUZW1wb3Jhcnks
ICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJh
bS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICA7fQogICAgIGJy
ZWFrOwogCi0gIGNhc2UgODQ6CisgIGNhc2UgODU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0pID0gKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRleHQt
PnBhcmFtRXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDMpXS5pbnRlcm0pLmxpbmUsICh5eXZzcFso
MSkgLSAoMyldLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFsoMikgLSAoMyldLmludGVy
bS5xdWFsaWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNv
bnRleHQtPnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSksICh5eXZzcFsoMSkgLSAo
MyldLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFsoMikgLSAoMyldLmludGVybS5xdWFs
aWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY292ZXIoKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODU6CisgIGNhc2UgODY6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygyKSAtICgyKV0uaW50
ZXJtKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNrKCh5
eXZzcFsoMikgLSAoMildLmludGVybSkubGluZSwgKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnF1
YWxpZmllciksICooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0pLnBhcmFtLnR5cGUpKQorICAgICAg
ICBpZiAoY29udGV4dC0+cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2soKHl5bHNwWygyKSAtICgy
KV0pLCAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0ucXVhbGlmaWVyKSwgKih5eXZzcFsoMikgLSAo
MildLmludGVybSkucGFyYW0udHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
Ci0gICAgICAgIGlmIChjb250ZXh0LT5wYXJhbUVycm9yQ2hlY2soKHl5dnNwWygyKSAtICgyKV0u
aW50ZXJtKS5saW5lLCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoMildLmludGVybS5xdWFs
aWZpZXIpLCAoeXl2YWwuaW50ZXJtKS5wYXJhbS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
PnBhcmFtRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksIEV2cVRlbXBvcmFyeSwgKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLnF1YWxpZmllciksICh5eXZhbC5pbnRlcm0pLnBhcmFtLnR5cGUp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA4NjoKKyAgY2FzZSA4NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5x
dWFsaWZpZXIpID0gRXZxSW47CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDg3OgorICBj
YXNlIDg4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFJ
bjsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgODg6CisgIGNhc2UgODk6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cU91dDsKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgODk6CisgIGNhc2UgOTA6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUluT3V0OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA5MDoKKyAgY2FzZSA5MToKIAogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJhbSA9
IHsgMCwgbmV3IFRUeXBlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKSkgfTsKQEAgLTM0
MDcsMTA0ICszMzkwLDEwNCBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgOTE6CisgIGNhc2UgOTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgOTI6
CisgIGNhc2UgOTM6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0pLnR5cGUudHlwZSA9PSBFYnRJbnZhcmlhbnQgJiYgISh5eXZzcFsoMykgLSAoMyldLmxleCku
c3ltYm9sKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDMp
IC0gKDMpXS5sZXgpLmxpbmUsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52
YXJpYW50IiwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygzKSAtICgzKV0pLCAidW5kZWNsYXJlZCBpZGVu
dGlmaWVyIGRlY2xhcmVkIGFzIGludmFyaWFudCIsICh5eXZzcFsoMykgLSAoMyldLmxleCkuc3Ry
aW5nLT5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
fQogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2
c3BbKDEpIC0gKDMpXS5pbnRlcm0pLnR5cGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUp
OwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRl
cm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVybU5v
ZGUsIHN5bWJvbCwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgVEludGVy
bVN5bWJvbCogc3ltYm9sID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5
dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVy
bSkudHlwZSksICh5eWxzcFsoMykgLSAoMyldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmlu
dGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZz
cFsoMSkgLSAoMyldLmludGVybSkuaW50ZXJtTm9kZSwgc3ltYm9sLCAoeXlsc3BbKDMpIC0gKDMp
XSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9y
Q2hlY2soKHl5dnNwWygzKSAtICgzKV0ubGV4KS5saW5lLCAoeXl2YWwuaW50ZXJtKS50eXBlKSkK
KyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygz
KSAtICgzKV0pLCAoeXl2YWwuaW50ZXJtKS50eXBlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0RXJyb3JDaGVjaygo
eXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDMpXS5sZXgpLnN0cmlu
ZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9u
SW5pdENvbnN0RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDMpXSksICooeXl2c3BbKDMpIC0gKDMp
XS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgZmFsc2UpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwot
ICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICgzKV0u
bGV4KS5saW5lLCAqKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0p
LnR5cGUsIHZhcmlhYmxlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRFcnJvckNoZWNr
KCh5eWxzcFsoMykgLSAoMyldKSwgKih5eXZzcFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCAoeXl2
YWwuaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIGlmIChzeW1ib2wgJiYgdmFyaWFibGUpCiAgICAgICAgICAgICBzeW1ib2wt
PnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgOTM6CisgIGNhc2UgOTQ6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1
Y3RRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxleCkubGluZSwgKHl5dnNw
WygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1
YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0pLnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAg
IGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMykgLSAoNSldLmxl
eCkubGluZSwgKih5eXZzcFsoMykgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUp
XS5pbnRlcm0pLnR5cGUsIHRydWUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdENvbnN0
RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICooeXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0
cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCB0cnVlKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFso
MSkgLSAoNSldLmludGVybSk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9y
Q2hlY2soKHl5dnNwWyg0KSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRl
cm0pLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDQp
IC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSkpCisgICAg
ICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNSldKSwg
KHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlKSB8fCBjb250ZXh0LT5hcnJheVF1YWxpZmll
ckVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg1KV0pLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0p
LnR5cGUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZS5zZXRBcnJheSh0cnVl
KTsKICAgICAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGU7Ci0gICAgICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSwgKih5eXZz
cFsoMykgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLnR5cGUs
IHZhcmlhYmxlKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJheUVycm9yQ2hlY2soKHl5
bHNwWyg0KSAtICg1KV0pLCAqKHl5dnNwWygzKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFso
MSkgLSAoNSldLmludGVybSkudHlwZSwgdmFyaWFibGUpKQogICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5
NDoKKyAgY2FzZSA5NToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0g
KDYpXS5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVy
RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVybSku
dHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAgICAgICAgaWYgKGNv
bnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg2KV0ubGV4KS5saW5l
LCAqKHl5dnNwWygzKSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNildLmludGVy
bSkudHlwZSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNo
ZWNrKCh5eWxzcFsoMykgLSAoNildKSwgKih5eXZzcFsoMykgLSAoNildLmxleCkuc3RyaW5nLCAo
eXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHRydWUpKQogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWygxKSAtICg2
KV0uaW50ZXJtKTsKIAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygo
eXl2c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlw
ZSkgfHwgY29udGV4dC0+YXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoNCkgLSAoNild
LmxleCkubGluZSwgKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlKSkKKyAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5bHNwWyg0KSAtICg2KV0pLCAoeXl2c3Bb
KDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJyb3JD
aGVjaygoeXlsc3BbKDQpIC0gKDYpXSksICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgaW50IHNpemU7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JD
aGVjaygoeXl2c3BbKDQpIC0gKDYpXS5sZXgpLmxpbmUsICh5eXZzcFsoNSkgLSAoNildLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5hcnJh
eVNpemVFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKHl5dnNwWyg1KSAtICg2KV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKICAgICAgICAgICAgICh5eXZzcFsoMSkgLSAoNildLmludGVybSkudHlwZS5zZXRB
cnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwot
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5RXJyb3JDaGVjaygoeXl2c3BbKDQpIC0gKDYp
XS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDYpXS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAt
ICg2KV0uaW50ZXJtKS50eXBlLCB2YXJpYWJsZSkpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+
YXJyYXlFcnJvckNoZWNrKCh5eWxzcFsoNCkgLSAoNildKSwgKih5eXZzcFsoMykgLSAoNildLmxl
eCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDYpXS5pbnRlcm0pLnR5cGUsIHZhcmlhYmxlKSkKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICBUVHlwZSB0eXBl
ID0gVFR5cGUoKHl5dnNwWygxKSAtICg2KV0uaW50ZXJtKS50eXBlKTsKICAgICAgICAgICAgIHR5
cGUuc2V0QXJyYXlTaXplKHNpemUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJt
QWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygx
KSAtICg2KV0uaW50ZXJtKS5pbnRlcm1Ob2RlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3lt
Ym9sKHZhcmlhYmxlID8gdmFyaWFibGUtPmdldFVuaXF1ZUlkKCkgOiAwLCAqKHl5dnNwWygzKSAt
ICg2KV0ubGV4KS5zdHJpbmcsIHR5cGUsICh5eXZzcFsoMykgLSAoNildLmxleCkubGluZSksICh5
eXZzcFsoMykgLSAoNildLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2
c3BbKDEpIC0gKDYpXS5pbnRlcm0pLmludGVybU5vZGUsIGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRTeW1ib2wodmFyaWFibGUgPyB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSA6IDAsICooeXl2c3Bb
KDMpIC0gKDYpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5bHNwWygzKSAtICg2KV0pKSwgKHl5bHNw
WygzKSAtICg2KV0pKTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5
NToKKyAgY2FzZSA5NjoKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0g
KDUpXS5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVy
RXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUpXSksICh5eXZzcFsoMSkgLSAoNSldLmludGVybSku
dHlwZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFs
LmludGVybSkgPSAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pOwogCiAgICAgICAgIFRJbnRlcm1O
b2RlKiBpbnRlcm1Ob2RlOwotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXpl
cigoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDMpIC0gKDUpXS5sZXgpLnN0
cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtKS50eXBlLCAoeXl2c3BbKDUpIC0gKDUpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgaW50ZXJtTm9kZSkpIHsKKyAgICAgICAgaWYgKCFjb250
ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWygzKSAtICg1KV0pLCAqKHl5dnNwWygzKSAt
ICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNSldLmludGVybSkudHlwZSwgKHl5dnNw
Wyg1KSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CiAgICAg
ICAgICAgICAvLwogICAgICAgICAgICAgLy8gYnVpbGQgdGhlIGludGVybWVkaWF0ZSByZXByZXNl
bnRhdGlvbgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIGlmIChpbnRlcm1Ob2RlKQotICAg
ICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLmludGVybU5vZGUsIGlu
dGVybU5vZGUsICh5eXZzcFsoNCkgLSAoNSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVn
YXRlKCh5eXZzcFsoMSkgLSAoNSldLmludGVybSkuaW50ZXJtTm9kZSwgaW50ZXJtTm9kZSwgKHl5
bHNwWyg0KSAtICg1KV0pKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAoeXl2
YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0pLmlu
dGVybUFnZ3JlZ2F0ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTM1MTQsNzcgKzM0OTcsNzcgQEAg
eXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDk2OgorICBjYXNlIDk3Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLnR5cGUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKDAsICIiLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkpLCAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSksICh5eXZzcFsoMSkgLSAoMSldLmlu
dGVybS50eXBlKS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRl
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoY29udGV4dC0+aW50ZXJtZWRp
YXRlLmFkZFN5bWJvbCgwLCAiIiwgVFR5cGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGUp
KSwgKHl5bHNwWygxKSAtICgxKV0pKSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgOTc6CisgIGNhc2UgOTg6CiAKICAgICB7Ci0gICAgICAgIFRJbnRl
cm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5
eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0udHlwZSkpLCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwu
aW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3Jl
Z2F0ZShzeW1ib2wsICh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSk7CisgICAgICAgIFRJbnRl
cm1TeW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5
eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDIpXS5pbnRl
cm0udHlwZSkpLCAoeXlsc3BbKDIpIC0gKDIpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1i
b2wsICh5eWxzcFsoMikgLSAoMildKSk7CiAgICAgICAgIAotICAgICAgICBpZiAoY29udGV4dC0+
c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICh5
eXZhbC5pbnRlcm0pLnR5cGUpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVy
RXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDIpXSksICh5eXZhbC5pbnRlcm0pLnR5cGUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmIChjb250ZXh0LT5ub25J
bml0Q29uc3RFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoMildLmxleCkubGluZSwgKih5eXZzcFso
MikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCBmYWxzZSkpCisgICAg
ICAgIGlmIChjb250ZXh0LT5ub25Jbml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoMild
KSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS50eXBlLCBm
YWxzZSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0u
dHlwZSk7CiAKICAgICAgICAgVFZhcmlhYmxlKiB2YXJpYWJsZSA9IDA7Ci0gICAgICAgIGlmIChj
b250ZXh0LT5ub25Jbml0RXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDIpXS5sZXgpLmxpbmUsICoo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZywgKHl5dmFsLmludGVybSkudHlwZSwgdmFyaWFi
bGUpKQorICAgICAgICBpZiAoY29udGV4dC0+bm9uSW5pdEVycm9yQ2hlY2soKHl5bHNwWygyKSAt
ICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRlcm0pLnR5
cGUsIHZhcmlhYmxlKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAg
aWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgICAgIHN5bWJvbC0+c2V0SWQodmFyaWFi
bGUtPmdldFVuaXF1ZUlkKCkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5ODoKKyAg
Y2FzZSA5OToKIAogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICg0
KV0ubGV4KS5saW5lLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMgbm90IHN1cHBvcnRlZCIs
ICh5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsKKyAgICAgICAgY29udGV4
dC0+ZXJyb3IoKHl5bHNwWygyKSAtICg0KV0pLCAidW5zaXplZCBhcnJheSBkZWNsYXJhdGlvbnMg
bm90IHN1cHBvcnRlZCIsICh5eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLT5jX3N0cigpKTsK
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5
bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAo
NCldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpLCAo
eXl2c3BbKDIpIC0gKDQpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2ws
ICh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSk7CisgICAgICAgIFRJbnRlcm1TeW1ib2wqIHN5
bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAo
NCldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpLCAo
eXlsc3BbKDIpIC0gKDQpXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdh
dGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShzeW1ib2wsICh5eWxzcFso
MikgLSAoNCldKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbKDEpIC0g
KDQpXS5pbnRlcm0udHlwZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDk5OgorICBj
YXNlIDEwMDoKIAogICAgIHsKICAgICAgICAgVFR5cGUgdHlwZSA9IFRUeXBlKCh5eXZzcFsoMSkg
LSAoNSldLmludGVybS50eXBlKSk7CiAgICAgICAgIGludCBzaXplOwotICAgICAgICBpZiAoY29u
dGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0gKDUpXS5sZXgpLmxpbmUsICh5
eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKKyAgICAgICAg
aWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg1KV0pLCAoeXl2
c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHNpemUpOwot
ICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRk
U3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgpLnN0cmluZywgdHlwZSwgKHl5dnNwWygy
KSAtICg1KV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVn
YXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXl2c3Bb
KDIpIC0gKDUpXS5sZXgpLmxpbmUpOworICAgICAgICBUSW50ZXJtU3ltYm9sKiBzeW1ib2wgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICooeXl2c3BbKDIpIC0gKDUpXS5sZXgp
LnN0cmluZywgdHlwZSwgKHl5bHNwWygyKSAtICg1KV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVy
bSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUo
c3ltYm9sLCAoeXlsc3BbKDIpIC0gKDUpXSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnN0cnVjdFF1YWxpZmllckVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg1KV0ubGV4KS5saW5l
LCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+
c3RydWN0UXVhbGlmaWVyRXJyb3JDaGVjaygoeXlsc3BbKDIpIC0gKDUpXSksICh5eXZzcFsoMSkg
LSAoNSldLmludGVybS50eXBlKSkpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAK
LSAgICAgICAgaWYgKGNvbnRleHQtPm5vbkluaXRDb25zdEVycm9yQ2hlY2soKHl5dnNwWygyKSAt
ICg1KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg1KV0ubGV4KS5zdHJpbmcsICh5eXZzcFso
MSkgLSAoNSldLmludGVybS50eXBlKSwgdHJ1ZSkpCisgICAgICAgIGlmIChjb250ZXh0LT5ub25J
bml0Q29uc3RFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNSldKSwgKih5eXZzcFsoMikgLSAoNSld
LmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSksIHRydWUpKQogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5
cGUgPSAoeXl2c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSk7CiAKLSAgICAgICAgaWYgKGNvbnRl
eHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5lLCAoeXl2
c3BbKDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpIHx8IGNvbnRleHQtPmFycmF5UXVhbGlmaWVyRXJy
b3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNSldLmlu
dGVybS50eXBlKSkpCisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5
eWxzcFsoMykgLSAoNSldKSwgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpKSB8fCBjb250
ZXh0LT5hcnJheVF1YWxpZmllckVycm9yQ2hlY2soKHl5bHNwWygzKSAtICg1KV0pLCAoeXl2c3Bb
KDEpIC0gKDUpXS5pbnRlcm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGludCBzaXplOwotICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5dnNwWygzKSAtICg1KV0ubGV4KS5saW5l
LCAoeXl2c3BbKDQpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkpCisgICAg
ICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlTaXplRXJyb3JDaGVjaygoeXlsc3BbKDMpIC0gKDUp
XSksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBzaXplKSkKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgICAgICh5eXZzcFso
MSkgLSAoNSldLmludGVybS50eXBlKS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgICAg
IFRWYXJpYWJsZSogdmFyaWFibGUgPSAwOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5
RXJyb3JDaGVjaygoeXl2c3BbKDMpIC0gKDUpXS5sZXgpLmxpbmUsICooeXl2c3BbKDIpIC0gKDUp
XS5sZXgpLnN0cmluZywgKHl5dnNwWygxKSAtICg1KV0uaW50ZXJtLnR5cGUpLCB2YXJpYWJsZSkp
CisgICAgICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlFcnJvckNoZWNrKCh5eWxzcFsoMykgLSAo
NSldKSwgKih5eXZzcFsoMikgLSAoNSldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDUpXS5p
bnRlcm0udHlwZSksIHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgICAgICBpZiAodmFyaWFibGUgJiYgc3ltYm9sKQogICAgICAgICAgICAgICAg
IHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwpAQCAtMzU5MiwyMSArMzU3
NSwyMSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAwOgorICBj
YXNlIDEwMToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxpZmllckVy
cm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2c3BbKDEpIC0gKDQpXS5p
bnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+c3RydWN0UXVhbGlmaWVyRXJyb3JD
aGVjaygoeXlsc3BbKDIpIC0gKDQpXSksICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkp
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKICAgICAgICAgKHl5dmFsLmludGVy
bSkudHlwZSA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKTsKIAogICAgICAgICBUSW50
ZXJtTm9kZSogaW50ZXJtTm9kZTsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlh
bGl6ZXIoKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4
KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAtICg0
KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIGludGVybU5vZGUpKSB7CisgICAgICAgIGlmICgh
Y29udGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eWxzcFsoMikgLSAoNCldKSwgKih5eXZzcFso
MikgLSAoNCldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSksICh5
eXZzcFsoNCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2RlKSkgewog
ICAgICAgICAvLwogICAgICAgICAvLyBCdWlsZCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24K
ICAgICAgICAgLy8KICAgICAgICAgICAgIGlmKGludGVybU5vZGUpCi0gICAgICAgICAgICAgICAg
KHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1h
a2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwgKHl5dnNwWygzKSAtICg0KV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCAoeXlsc3BbKDMpIC0gKDQpXSkp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVy
bUFnZ3JlZ2F0ZSA9IDA7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zNjE2LDU4ICszNTk5LDU4IEBA
IHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDE6CisgIGNhc2UgMTAy
OgogCiAgICAgewotICAgICAgICBWRVJURVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwg
KHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdsb2Jh
bEVycm9yQ2hlY2soKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQorICAgICAgICBWRVJU
RVhfT05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgKHl5bHNwWygxKSAtICgyKV0pKTsKKyAg
ICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCBj
b250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIp
KQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
KS50eXBlLnNldEJhc2ljKEVidEludmFyaWFudCwgRXZxSW52YXJpYW50VmFyeWluZ091dCwgKHl5
dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkudHlwZS5z
ZXRCYXNpYyhFYnRJbnZhcmlhbnQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsICh5eWxzcFsoMikg
LSAoMildKSk7CiAgICAgICAgIGlmICghKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zeW1ib2wpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMildLmxl
eCkubGluZSwgInVuZGVjbGFyZWQgaWRlbnRpZmllciBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLCAo
eXl2c3BbKDIpIC0gKDIpXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoeXlsc3BbKDIpIC0gKDIpXSksICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVj
bGFyZWQgYXMgaW52YXJpYW50IiwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmctPmNfc3Ry
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAwOwogICAgICAgICB9CiAg
ICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9s
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICgyKV0u
bGV4KS5zdHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXl2c3BbKDIpIC0gKDIp
XS5sZXgpLmxpbmUpOwotICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRl
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXl2c3BbKDIp
IC0gKDIpXS5sZXgpLmxpbmUpOworICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4
KS5zdHJpbmcsIFRUeXBlKCh5eXZhbC5pbnRlcm0pLnR5cGUpLCAoeXlsc3BbKDIpIC0gKDIpXSkp
OworICAgICAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoc3ltYm9sLCAoeXlsc3BbKDIpIC0gKDIpXSkpOwog
ICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEwMjoKKyAgY2FzZSAxMDM6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0udHlwZSk7CiAKICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS50
eXBlKS5hcnJheSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgx
KV0uaW50ZXJtLnR5cGUpLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5
Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJub3Qg
c3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgICAgICAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkuc2V0
QXJyYXkoZmFsc2UpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEw
MzoKKyAgY2FzZSAxMDQ6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDIpIC0gKDIpXS5p
bnRlcm0udHlwZSkuYXJyYXkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFso
MikgLSAoMildLmludGVybS50eXBlKS5saW5lLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFz
cyBhcnJheSIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0p
LCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOwogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5
cGUpLnNldEFycmF5KGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyID09IEV2cUF0dHJpYnV0ZSAmJgogICAgICAg
ICAgICAgKCh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS50eXBlID09IEVidEJvb2wgfHwg
KHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLnR5cGUgPT0gRWJ0SW50KSkgewotICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLnR5cGUpLmxpbmUs
ICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWygxKSAt
ICgyKV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllcikpOworICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5bHNwWygyKSAtICgyKV0pLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlm
aWVyU3RyaW5nKCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIpKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoKCh5
eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ0luIHx8
ICh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIgPT0gRXZxVmFyeWluZ091
dCkgJiYKICAgICAgICAgICAgICgoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSkudHlwZSA9
PSBFYnRCb29sIHx8ICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlKS50eXBlID09IEVidElu
dCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikgLSAoMildLmludGVy
bS50eXBlKS5saW5lLCAiY2Fubm90IGJlIGJvb2wgb3IgaW50IiwgZ2V0UXVhbGlmaWVyU3RyaW5n
KCh5eXZzcFsoMSkgLSAoMildLmludGVybS50eXBlKS5xdWFsaWZpZXIpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMikgLSAoMildKSwgImNhbm5vdCBiZSBib29sIG9yIGlu
dCIsIGdldFF1YWxpZmllclN0cmluZygoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0udHlwZSkucXVh
bGlmaWVyKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMikgLSAoMildLmludGVybS50eXBl
KTsKQEAgLTM2NzUsNzEgKzM2NTgsNzEgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDEwNDoKKyAgY2FzZSAxMDU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQ29uc3QsICh5eXZzcFsoMSkgLSAoMSldLmxl
eCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwg
RXZxQ29uc3QsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBj
YXNlIDEwNToKKyAgY2FzZSAxMDY6CiAKICAgICB7Ci0gICAgICAgIFZFUlRFWF9PTkxZKCJhdHRy
aWJ1dGUiLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICBpZiAoY29udGV4
dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsIGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImF0dHJpYnV0ZSIpKQorICAgICAgICBWRVJU
RVhfT05MWSgiYXR0cmlidXRlIiwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgaWYgKGNv
bnRleHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJhdHRyaWJ1dGUiKSkKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRW
b2lkLCBFdnFBdHRyaWJ1dGUsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxQXR0cmlidXRlLCAoeXls
c3BbKDEpIC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDY6CisgIGNh
c2UgMTA3OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygo
eXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFs
TGV2ZWwoKSwgInZhcnlpbmciKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hl
Y2soKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCksICJ2YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IGlmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IFNIX1ZFUlRFWF9TSEFERVIpCi0gICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsICh5
eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2cVZhcnlpbmdPdXQsICh5eWxzcFsoMSkgLSAoMSldKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMo
RWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAg
ICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5n
SW4sICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEw
NzoKKyAgY2FzZSAxMDg6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJv
ckNoZWNrKCh5eXZzcFsoMSkgLSAoMildLmxleCkubGluZSwgY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpLCAiaW52YXJpYW50IHZhcnlpbmciKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgyKV0pLCBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZhcmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBT
SF9WRVJURVhfU0hBREVSKQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgp
LmxpbmUpOworICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lk
LCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2
cUludmFyaWFudFZhcnlpbmdJbiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxSW52YXJpYW50
VmFyeWluZ0luLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxMDg6CisgIGNhc2UgMTA5OgogCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2xv
YmFsRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgInVuaWZvcm0iKSkKKyAgICAgICAgaWYgKGNvbnRleHQt
Pmdsb2JhbEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgxKV0pLCBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5hdEdsb2JhbExldmVsKCksICJ1bmlmb3JtIikpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZx
VW5pZm9ybSwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFVbmlmb3JtLCAoeXlsc3BbKDEpIC0gKDEp
XSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDk6CisgIGNhc2UgMTEwOgogCiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtLnR5cGUpOwogCiAgICAgICAgIGlmICgoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiA9
PSBFYnBVbmRlZmluZWQpIHsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucHJlY2lz
aW9uID0gY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigoeXl2c3BbKDEp
IC0gKDEpXS5pbnRlcm0udHlwZSkudHlwZSk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+cHJl
Y2lzaW9uRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSkubGluZSwgKHl5
dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24sICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBl
KS50eXBlKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPnByZWNpc2lvbkVycm9yQ2hlY2so
KHl5bHNwWygxKSAtICgxKV0pLCAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiwgKHl5dnNw
WygxKSAtICgxKV0uaW50ZXJtLnR5cGUpLnR5cGUpKSB7CiAgICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDExMDoKKyAgY2FzZSAxMTE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZSk7CkBAIC0zNzQ3LDYz
ICszNzMwLDU1IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTE6
CisgIGNhc2UgMTEyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikg
PSBFYnBIaWdoOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTI6CisgIGNhc2UgMTEz
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBNZWRpdW07
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDExMzoKKyAgY2FzZSAxMTQ6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVicExvdzsKICAgICA7fQogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTE0OgorICBjYXNlIDExNToKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS50eXBlKTsKICAgICA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTE1OgorICBjYXNlIDExNjoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKTsK
IAotICAgICAgICBpZiAoY29udGV4dC0+YXJyYXlUeXBlRXJyb3JDaGVjaygoeXl2c3BbKDIpIC0g
KDQpXS5sZXgpLmxpbmUsICh5eXZzcFsoMSkgLSAoNCldLmludGVybS50eXBlKSkpCisgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVR5cGVFcnJvckNoZWNrKCh5eWxzcFsoMikgLSAoNCldKSwgKHl5
dnNwWygxKSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgICAg
IGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCku
bGluZSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQor
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5U2l6ZUVycm9yQ2hlY2soKHl5bHNwWygyKSAt
ICg0KV0pLCAoeXl2c3BbKDMpIC0gKDQpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgc2l6ZSkp
CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRBcnJheSh0cnVlLCBzaXplKTsKICAgICAgICAgfQogICAgIDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxMTY6Ci0KLSAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lk
LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgIDt9Ci0gICAgYnJlYWs7
Ci0KICAgY2FzZSAxMTc6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwg
KHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRWb2lkLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwogICAgIDt9CiAg
ICAgYnJlYWs7CiAKQEAgLTM4MTEsNyArMzc4Niw3IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAg
ICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXls
c3BbKDEpIC0gKDEpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4MTksNyArMzc5NCw3
IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRJbnQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAgICBi
cmVhazsKIApAQCAtMzgyNyw4ICszODAyLDcgQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAg
IFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/
IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0p
KTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0zODM2LDggKzM4MTAsOCBAQCB5eXJlZHVjZToK
IAogICAgIHsKICAgICAgICAgVFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUu
YXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEp
XS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgz
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwg
KHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dy
ZWdhdGUoMik7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzg0NSw4ICszODE5LDggQEAgeXly
ZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5dnNwWygx
KSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dy
ZWdhdGUoNCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQs
IHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QWdncmVnYXRlKDMpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4NTQsOCArMzgyOCw4
IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRBZ2dyZWdhdGUoMik7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QWdncmVnYXRlKDQpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTM4NjMsOCAr
MzgzNyw4IEBAIHl5cmVkdWNlOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBj
b250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1w
b3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVh
bCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50
eXBlKS5zZXRBZ2dyZWdhdGUoMyk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFz
aWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzg3
Miw4ICszODQ2LDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRCb29s
LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRCb29sLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICA7fQogICAgIGJyZWFrOwogCkBA
IC0zODgxLDggKzM4NTUsOCBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVi
dEludCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuc2V0QmFzaWMoRWJ0Qm9vbCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CiAgICAgO30KICAgICBicmVhazsK
IApAQCAtMzg5MCw4ICszODY0LDggQEAgeXlyZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFRRdWFs
aWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUds
b2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNp
YyhFYnRJbnQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDMpOworICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnNldEJhc2ljKEVidEludCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMik7CiAgICAgO30KICAgICBicmVh
azsKIApAQCAtMzg5OSw5NSArMzg3Myw5NiBAQCB5eXJlZHVjZToKIAogICAgIHsKICAgICAgICAg
VFF1YWxpZmllciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8g
RXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNl
dEJhc2ljKEVidEludCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoNCk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSgzKTsKICAgICA7fQogICAg
IGJyZWFrOwogCiAgIGNhc2UgMTI5OgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgi
bWF0MiIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6
IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRG
bG9hdCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMiwgdHJ1ZSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QmFzaWMoRWJ0SW50LCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0KTsKICAgICA7fQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTMwOgogCiAgICAgewotICAgICAgICBGUkFHX1ZFUlRfT05MWSgibWF0
MyIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVh
bCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2
cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9h
dCwgcXVhbCwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVnYXRlKDIsIHRydWUpOwogICAgIDt9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxMzE6CiAKICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZ
KCJtYXQ0IiwgKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lKTsKICAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFs
IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVi
dEZsb2F0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnNldEFnZ3JlZ2F0ZSg0LCB0cnVlKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRGbG9hdCwgcXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRBZ2dyZWdhdGUoMywgdHJ1ZSk7CiAgICAg
O30KICAgICBicmVhazsKIAogICBjYXNlIDEzMjoKIAogICAgIHsKLSAgICAgICAgRlJBR19WRVJU
X09OTFkoInNhbXBsZXIyRCIsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAg
IFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/
IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRCYXNpYyhFYnRTYW1wbGVyMkQsIHF1YWwsICh5eXZzcFsoMSkgLSAoMSldLmxleCkubGluZSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0RmxvYXQsIHF1YWwsICh5
eWxzcFsoMSkgLSAoMSldKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QWdncmVn
YXRlKDQsIHRydWUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzM6CiAKICAgICB7
Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzYW1wbGVyQ3ViZSIsICh5eXZzcFsoMSkgLSAoMSld
LmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyQ3ViZSwgcXVhbCwgKHl5dnNw
WygxKSAtICgxKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRC
YXNpYyhFYnRTYW1wbGVyMkQsIHF1YWwsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgO30KICAg
ICBicmVhazsKIAogICBjYXNlIDEzNDoKIAogICAgIHsKKyAgICAgICAgVFF1YWxpZmllciBxdWFs
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZx
VGVtcG9yYXJ5OworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBs
ZXJDdWJlLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOworICAgIDt9CisgICAgYnJlYWs7CisK
KyAgY2FzZSAxMzU6CisKKyAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRl
bnNpb24oIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkgewotICAgICAgICAgICAgY29udGV4
dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0ubGV4KS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIs
ICJzYW1wbGVyRXh0ZXJuYWxPRVMiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxz
cFsoMSkgLSAoMSldKSwgInVuc3VwcG9ydGVkIHR5cGUiLCAic2FtcGxlckV4dGVybmFsT0VTIik7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgRlJB
R19WRVJUX09OTFkoInNhbXBsZXJFeHRlcm5hbE9FUyIsICh5eXZzcFsoMSkgLSAoMSldLmxleCku
bGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsIHF1YWwsICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0U2FtcGxlckV4dGVybmFsT0VTLCBxdWFsLCAoeXlsc3BbKDEpIC0gKDEpXSkpOwog
ICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzU6CisgIGNhc2UgMTM2OgogCiAgICAgewog
ICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfdGV4dHVyZV9y
ZWN0YW5nbGUiKSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgx
KV0ubGV4KS5saW5lLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CisgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJ1bnN1cHBvcnRlZCB0
eXBlIiwgInNhbXBsZXIyRFJlY3QiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgfQotICAgICAgICBGUkFHX1ZFUlRfT05MWSgic2FtcGxlcjJEUmVjdCIsICh5eXZz
cFsoMSkgLSAoMSldLmxleCkubGluZSk7CiAgICAgICAgIFRRdWFsaWZpZXIgcXVhbCA9IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFy
eTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRTYW1wbGVyMkRSZWN0
LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgpLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGUpLnNldEJhc2ljKEVidFNhbXBsZXIyRFJlY3QsIHF1YWwsICh5eWxzcFsoMSkgLSAo
MSldKSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDEzNjoKKyAgY2FzZSAxMzc6CiAK
ICAgICB7Ci0gICAgICAgIEZSQUdfVkVSVF9PTkxZKCJzdHJ1Y3QiLCAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0udHlwZSkubGluZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2
c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
cXVhbGlmaWVyID0gY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xv
YmFsIDogRXZxVGVtcG9yYXJ5OwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzc6Cisg
IGNhc2UgMTM4OgogCiAgICAgewogICAgICAgICAvLwpAQCAtMzk5Niw4NSArMzk3MSw4NiBAQCB5
eXJlZHVjZToKICAgICAgICAgLy8KICAgICAgICAgVFR5cGUmIHN0cnVjdHVyZSA9IHN0YXRpY19j
YXN0PFRWYXJpYWJsZSo+KCh5eXZzcFsoMSkgLSAoMSldLmxleCkuc3ltYm9sKS0+Z2V0VHlwZSgp
OwogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBxdWFsLCAoeXl2c3BbKDEpIC0gKDEpXS5sZXgp
LmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFN0cnVjdCwg
cXVhbCwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS51
c2VyRGVmID0gJnN0cnVjdHVyZTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM4Ogor
ICBjYXNlIDEzOToKIAotICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24o
KHl5dnNwWygyKSAtICgzKV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICgzKV0ubGV4KS5zdHJp
bmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IDt9CisgICAgeyBpZiAoY29udGV4dC0+ZW50ZXJTdHJ1
Y3REZWNsYXJhdGlvbigoeXlsc3BbKDIpIC0gKDMpXSksICooeXl2c3BbKDIpIC0gKDMpXS5sZXgp
LnN0cmluZykpIGNvbnRleHQtPnJlY292ZXIoKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDEz
OToKKyAgY2FzZSAxNDA6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVy
cm9yQ2hlY2soKHl5dnNwWygyKSAtICg2KV0ubGV4KS5saW5lLCAqKHl5dnNwWygyKSAtICg2KV0u
bGV4KS5zdHJpbmcpKQorICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5
eWxzcFsoMikgLSAoNildKSwgKih5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nKSkKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0g
bmV3IFRUeXBlKCh5eXZzcFsoNSkgLSAoNildLmludGVybS50eXBlTGlzdCksICooeXl2c3BbKDIp
IC0gKDYpXS5sZXgpLnN0cmluZyk7CisgICAgICAgIFRUeXBlKiBzdHJ1Y3R1cmUgPSBuZXcgVFR5
cGUobmV3IFRTdHJ1Y3R1cmUoKHl5dnNwWygyKSAtICg2KV0ubGV4KS5zdHJpbmcsICh5eXZzcFso
NSkgLSAoNildLmludGVybS5maWVsZExpc3QpKSk7CiAgICAgICAgIFRWYXJpYWJsZSogdXNlclR5
cGVEZWYgPSBuZXcgVFZhcmlhYmxlKCh5eXZzcFsoMikgLSAoNildLmxleCkuc3RyaW5nLCAqc3Ry
dWN0dXJlLCB0cnVlKTsKICAgICAgICAgaWYgKCEgY29udGV4dC0+c3ltYm9sVGFibGUuaW5zZXJ0
KCp1c2VyVHlwZURlZikpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eXZzcFsoMikg
LSAoNildLmxleCkubGluZSwgInJlZGVmaW5pdGlvbiIsICh5eXZzcFsoMikgLSAoNildLmxleCku
c3RyaW5nLT5jX3N0cigpLCAic3RydWN0Iik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigo
eXlsc3BbKDIpIC0gKDYpXSksICJyZWRlZmluaXRpb24iLCAoeXl2c3BbKDIpIC0gKDYpXS5sZXgp
LnN0cmluZy0+Y19zdHIoKSwgInN0cnVjdCIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3Zl
cigpOwogICAgICAgICB9Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
U3RydWN0LCBFdnFUZW1wb3JhcnksICh5eXZzcFsoMSkgLSAoNildLmxleCkubGluZSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3Jhcnks
ICh5eWxzcFsoMSkgLSAoNildKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkudXNlckRl
ZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7
CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0MDoKKyAgY2FzZSAxNDE6CiAKLSAgICB7
IGlmIChjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eXZzcFsoMikgLSAoMildLmxl
eCkubGluZSwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nKSkgY29udGV4dC0+cmVjb3Zl
cigpOyA7fQorICAgIHsgaWYgKGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24oKHl5bHNw
WygyKSAtICgyKV0pLCAqKHl5dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmcpKSBjb250ZXh0LT5y
ZWNvdmVyKCk7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDE6CisgIGNhc2UgMTQyOgogCiAg
ICAgewotICAgICAgICBUVHlwZSogc3RydWN0dXJlID0gbmV3IFRUeXBlKCh5eXZzcFsoNCkgLSAo
NSldLmludGVybS50eXBlTGlzdCksIFRTdHJpbmcoIiIpKTsKLSAgICAgICAgKHl5dmFsLmludGVy
bS50eXBlKS5zZXRCYXNpYyhFYnRTdHJ1Y3QsIEV2cVRlbXBvcmFyeSwgKHl5dnNwWygxKSAtICg1
KV0ubGV4KS5saW5lKTsKKyAgICAgICAgVFR5cGUqIHN0cnVjdHVyZSA9IG5ldyBUVHlwZShuZXcg
VFN0cnVjdHVyZShOZXdQb29sVFN0cmluZygiIiksICh5eXZzcFsoNCkgLSAoNSldLmludGVybS5m
aWVsZExpc3QpKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0U3Ry
dWN0LCBFdnFUZW1wb3JhcnksICh5eWxzcFsoMSkgLSAoNSldKSk7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkudXNlckRlZiA9IHN0cnVjdHVyZTsKICAgICAgICAgY29udGV4dC0+ZXhpdFN0
cnVjdERlY2xhcmF0aW9uKCk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0MjoKKyAg
Y2FzZSAxNDM6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLnR5cGVMaXN0KTsKKyAgICAgICAgKHl5dmFsLmludGVybS5m
aWVsZExpc3QpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZpZWxkTGlzdCk7CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDE0MzoKKyAgY2FzZSAxNDQ6CiAKICAgICB7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLnR5cGVM
aXN0KTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0udHlwZUxpc3QpLT5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaiA9IDA7IGogPCAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KS0+c2l6ZSgpOyAr
K2opIHsKLSAgICAgICAgICAgICAgICBpZiAoKCooeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSlbal0u
dHlwZS0+Z2V0RmllbGROYW1lKCkgPT0gKCooeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0udHlwZUxp
c3QpKVtpXS50eXBlLT5nZXRGaWVsZE5hbWUoKSkgewotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcigoKih5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCkpW2ldLmxpbmUs
ICJkdXBsaWNhdGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsICgqKHl5dnNw
WygyKSAtICgyKV0uaW50ZXJtLnR5cGVMaXN0KSlbaV0udHlwZS0+Z2V0RmllbGROYW1lKCkuY19z
dHIoKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSA9ICh5eXZzcFsoMSkgLSAo
MildLmludGVybS5maWVsZExpc3QpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICh5
eXZzcFsoMikgLSAoMildLmludGVybS5maWVsZExpc3QpLT5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgVEZpZWxkKiBmaWVsZCA9ICgqKHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmZpZWxkTGlz
dCkpW2ldOworICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCAoeXl2YWwuaW50ZXJt
LmZpZWxkTGlzdCktPnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgaWYgKCgqKHl5dmFs
LmludGVybS5maWVsZExpc3QpKVtqXS0+bmFtZSgpID09IGZpZWxkLT5uYW1lKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWygyKSAtICgyKV0pLCAiZHVwbGlj
YXRlIGZpZWxkIG5hbWUgaW4gc3RydWN0dXJlOiIsICJzdHJ1Y3QiLCBmaWVsZC0+bmFtZSgpLmNf
c3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
TGlzdCktPnB1c2hfYmFjaygoKih5eXZzcFsoMikgLSAoMildLmludGVybS50eXBlTGlzdCkpW2ld
KTsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+cHVzaF9iYWNrKGZpZWxk
KTsKICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDQ6CisgIGNhc2Ug
MTQ1OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9ICh5eXZzcFso
MikgLSAoMyldLmludGVybS50eXBlTGlzdCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRM
aXN0KSA9ICh5eXZzcFsoMikgLSAoMyldLmludGVybS5maWVsZExpc3QpOwogCi0gICAgICAgIGlm
IChjb250ZXh0LT52b2lkRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSku
bGluZSwgKCooeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0udHlwZUxpc3QpKVswXS50eXBlLT5nZXRG
aWVsZE5hbWUoKSwgKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpKSkgeworICAgICAgICBp
ZiAoY29udGV4dC0+dm9pZEVycm9yQ2hlY2soKHl5bHNwWygxKSAtICgzKV0pLCAoKih5eXZzcFso
MikgLSAoMyldLmludGVybS5maWVsZExpc3QpKVswXS0+bmFtZSgpLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0udHlwZSkpKSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoeXl2YWwuaW50ZXJt
LnR5cGVMaXN0KS0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnNpemUoKTsgKytpKSB7CiAgICAgICAg
ICAgICAvLwogICAgICAgICAgICAgLy8gQ2FyZWZ1bCBub3QgdG8gcmVwbGFjZSBhbHJlYWR5IGtu
b3duIGFzcGVjdHMgb2YgdHlwZSwgbGlrZSBhcnJheS1uZXNzCiAgICAgICAgICAgICAvLwotICAg
ICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0udHlwZUxpc3QpKVtpXS50eXBl
OworICAgICAgICAgICAgVFR5cGUqIHR5cGUgPSAoKih5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSlb
aV0tPnR5cGUoKTsKICAgICAgICAgICAgIHR5cGUtPnNldEJhc2ljVHlwZSgoeXl2c3BbKDEpIC0g
KDMpXS5pbnRlcm0udHlwZSkudHlwZSk7CiAgICAgICAgICAgICB0eXBlLT5zZXROb21pbmFsU2l6
ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkuc2l6ZSk7CiAgICAgICAgICAgICB0eXBl
LT5zZXRNYXRyaXgoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLm1hdHJpeCk7CkBAIC00
MDgyLDg1ICs0MDU4LDc1IEBAIHl5cmVkdWNlOgogCiAgICAgICAgICAgICAvLyBkb24ndCBhbGxv
dyBhcnJheXMgb2YgYXJyYXlzCiAgICAgICAgICAgICBpZiAodHlwZS0+aXNBcnJheSgpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5dnNwWygx
KSAtICgzKV0uaW50ZXJtLnR5cGUpLmxpbmUsICh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBl
KSkpCisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmFycmF5VHlwZUVycm9yQ2hlY2soKHl5
bHNwWygxKSAtICgzKV0pLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSkpKQogICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBpZiAoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5cGUpLmFycmF5KQogICAgICAgICAg
ICAgICAgIHR5cGUtPnNldEFycmF5U2l6ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlwZSku
YXJyYXlTaXplKTsKLSAgICAgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0udHlw
ZSkudXNlckRlZikgeworICAgICAgICAgICAgaWYgKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50
eXBlKS51c2VyRGVmKQogICAgICAgICAgICAgICAgIHR5cGUtPnNldFN0cnVjdCgoeXl2c3BbKDEp
IC0gKDMpXS5pbnRlcm0udHlwZSkudXNlckRlZi0+Z2V0U3RydWN0KCkpOwotICAgICAgICAgICAg
ICAgIHR5cGUtPnNldFR5cGVOYW1lKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50eXBlKS51c2Vy
RGVmLT5nZXRUeXBlTmFtZSgpKTsKLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGNv
bnRleHQtPnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMyldLmludGVybS50
eXBlKS5saW5lLCAqdHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3ROZXN0
aW5nRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDMpXSksICooKih5eXZhbC5pbnRlcm0uZmllbGRM
aXN0KSlbaV0pKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDU6CisgIGNh
c2UgMTQ2OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaXN0KSA9IE5ld1Bv
b2xUVHlwZUxpc3QoKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlTGlzdCktPnB1c2hfYmFj
aygoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0udHlwZUxpbmUpKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5maWVsZExpc3QpID0gTmV3UG9vbFRGaWVsZExpc3QoKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS5maWVsZExpc3QpLT5wdXNoX2JhY2soKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmZpZWxk
KSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE0NjoKKyAgY2FzZSAxNDc6CiAKICAg
ICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpc3QpLT5wdXNoX2JhY2soKHl5dnNwWygz
KSAtICgzKV0uaW50ZXJtLnR5cGVMaW5lKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRM
aXN0KS0+cHVzaF9iYWNrKCh5eXZzcFsoMykgLSAoMyldLmludGVybS5maWVsZCkpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNDc6CisgIGNhc2UgMTQ4OgogCiAgICAgewotICAgICAg
ICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNoZWNrKCh5eXZzcFsoMSkgLSAoMSldLmxleCku
bGluZSwgKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKSkKKyAgICAgICAgaWYgKGNvbnRl
eHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXlsc3BbKDEpIC0gKDEpXSksICooeXl2c3BbKDEpIC0g
KDEpXS5sZXgpLnN0cmluZykpCiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSkudHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBF
YnBVbmRlZmluZWQpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS5saW5lID0gKHl5
dnNwWygxKSAtICgxKV0ubGV4KS5saW5lOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5l
KS50eXBlLT5zZXRGaWVsZE5hbWUoKih5eXZzcFsoMSkgLSAoMSldLmxleCkuc3RyaW5nKTsKKyAg
ICAgICAgVFR5cGUqIHR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5eXZzcFsoMSkg
LSAoMSldLmxleCkuc3RyaW5nKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ4Ogor
ICBjYXNlIDE0OToKIAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JD
aGVjaygoeXl2c3BbKDEpIC0gKDQpXS5sZXgpLmxpbmUsICooeXl2c3BbKDEpIC0gKDQpXS5sZXgp
LnN0cmluZykpCisgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soKHl5bHNw
WygxKSAtICg0KV0pLCAqKHl5dnNwWygxKSAtICg0KV0ubGV4KS5zdHJpbmcpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZUxpbmUp
LnR5cGUgPSBuZXcgVFR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZpbmVkKTsKLSAgICAgICAgKHl5dmFs
LmludGVybS50eXBlTGluZSkubGluZSA9ICh5eXZzcFsoMSkgLSAoNCldLmxleCkubGluZTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlTGluZSkudHlwZS0+c2V0RmllbGROYW1lKCooeXl2c3Bb
KDEpIC0gKDQpXS5sZXgpLnN0cmluZyk7Ci0KLSAgICAgICAgaW50IHNpemU7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5hcnJheVNpemVFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGlu
ZSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksIHNpemUpKQorICAg
ICAgICBUVHlwZSogdHlwZSA9IG5ldyBUVHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAg
ICAgICBpbnQgc2l6ZSA9IDA7CisgICAgICAgIGlmIChjb250ZXh0LT5hcnJheVNpemVFcnJvckNo
ZWNrKCh5eWxzcFsoMykgLSAoNCldKSwgKHl5dnNwWygzKSAtICg0KV0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksIHNpemUpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGVMaW5lKS50eXBlLT5zZXRBcnJheVNpemUoc2l6ZSk7Ci0gICAg
O30KLSAgICBicmVhazsKKyAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKHNpemUpOwogCi0gIGNh
c2UgMTQ5OgotCi0gICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgO30KKyAgICAgICAgKHl5dmFsLmlu
dGVybS5maWVsZCkgPSBuZXcgVEZpZWxkKHR5cGUsICh5eXZzcFsoMSkgLSAoNCldLmxleCkuc3Ry
aW5nKTsKKyAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTUwOgogCi0gICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUp
OyA7fQorICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAt
ICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
NTE6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKTsgO30KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxNTI6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0
ZSk7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTM6CkBAIC00MTkwLDExMiArNDE1NiwxMTcg
QEAgeXlyZWR1Y2U6CiAKICAgY2FzZSAxNTg6CiAKLSAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
QWdncmVnYXRlKSA9IDA7IDt9CisgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTU5OgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IDt9CisgICAgeyAo
eXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAwOyA7fQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMTYwOgogCi0gICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgO30KKyAgICB7IGNv
bnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgO30KICAgICBicmVhazsKIAogICBjYXNlIDE2MToK
IAorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7IDt9CisgICAgYnJlYWs7CisKKyAg
Y2FzZSAxNjI6CisKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0u
aW50ZXJtQWdncmVnYXRlKSAhPSAwKSB7CiAgICAgICAgICAgICAoeXl2c3BbKDMpIC0gKDUpXS5p
bnRlcm0uaW50ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAgICAg
KHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldEVuZExpbmUoKHl5
dnNwWyg1KSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZzcFsoMykgLSAoNSld
LmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykpOwogICAgICAgICB9CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9ICh5eXZzcFsoMykgLSAoNSld
LmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
NjI6CisgIGNhc2UgMTYzOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5
dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTYzOgorICBjYXNlIDE2NDoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDE2NDoKKyAgY2FzZSAxNjU6CiAKICAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1
c2goKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE2NToKKyAgY2FzZSAxNjY6CiAKICAgICB7
IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0g
KHl5dnNwWygyKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpOyA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTY2OgorICBjYXNlIDE2NzoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVz
aCgpOyA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY3OgorICBjYXNlIDE2ODoKIAogICAgIHsg
Y29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAo
eXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxNjg6CisgIGNhc2UgMTY5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gMDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTY5OgorICBjYXNl
IDE3MDoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFsoMikgLSAoMyldLmludGVybS5pbnRl
cm1BZ2dyZWdhdGUpKSB7CiAgICAgICAgICAgICAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50
ZXJtQWdncmVnYXRlKS0+c2V0T3AoRU9wU2VxdWVuY2UpOwotICAgICAgICAgICAgKHl5dnNwWygy
KSAtICgzKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSktPnNldEVuZExpbmUoKHl5dnNwWygzKSAt
ICgzKV0ubGV4KS5saW5lKTsKKyAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMyldLmludGVybS5p
bnRlcm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykpOwogICAgICAgICB9CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJt
QWdncmVnYXRlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTcwOgorICBjYXNlIDE3
MToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybU5vZGUpLCAwKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1BZ2dyZWdhdGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtLmludGVybU5vZGUpLCAoeXlsb2MpKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTcxOgorICBjYXNlIDE3MjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1BZ2dyZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSksICh5eXZzcFsoMikgLSAoMildLmlu
dGVybS5pbnRlcm1Ob2RlKSwgMCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVn
YXRlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAo
MildLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50
ZXJtTm9kZSksICh5eWxvYykpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzI6Cisg
IGNhc2UgMTczOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsgO30KICAg
ICBicmVhazsKIAotICBjYXNlIDE3MzoKKyAgY2FzZSAxNzQ6CiAKICAgICB7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSBzdGF0aWNfY2FzdDxUSW50ZXJtTm9kZSo+KCh5eXZzcFsoMSkgLSAo
MildLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE3
NDoKKyAgY2FzZSAxNzU6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JD
aGVjaygoeXl2c3BbKDEpIC0gKDUpXS5sZXgpLmxpbmUsICh5eXZzcFsoMykgLSAoNSldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNr
KCh5eWxzcFsoMSkgLSAoNSldKSwgKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFNlbGVjdGlvbigo
eXl2c3BbKDMpIC0gKDUpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWyg1KSAtICg1
KV0uaW50ZXJtLm5vZGVQYWlyKSwgKHl5dnNwWygxKSAtICg1KV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRT
ZWxlY3Rpb24oKHl5dnNwWygzKSAtICg1KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFsoNSkgLSAoNSldLmludGVybS5ub2RlUGFpciksICh5eWxzcFsoMSkgLSAoNSldKSk7CiAgICAg
O30KICAgICBicmVhazsKIAotICBjYXNlIDE3NToKKyAgY2FzZSAxNzY6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgzKV0uaW50
ZXJtLmludGVybU5vZGUpOwpAQCAtNDMwMyw3ICs0Mjc0LDcgQEAgeXlyZWR1Y2U6CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDE3NjoKKyAgY2FzZSAxNzc6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJt
LmludGVybU5vZGUpOwpAQCAtNDMxMSw3ICs0MjgyLDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAg
ICBicmVhazsKIAotICBjYXNlIDE3NzoKKyAgY2FzZSAxNzg6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpOwpAQCAtNDMyMCwxNiArNDI5MSwxNiBAQCB5eXJlZHVjZToKICAgICA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc4OgorICBjYXNlIDE3OToKIAogICAgIHsKICAgICAg
ICAgVEludGVybU5vZGUqIGludGVybU5vZGU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zdHJ1Y3RR
dWFsaWZpZXJFcnJvckNoZWNrKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKHl5dnNwWygx
KSAtICg0KV0uaW50ZXJtLnR5cGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPnN0cnVjdFF1YWxp
ZmllckVycm9yQ2hlY2soKHl5bHNwWygyKSAtICg0KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRl
cm0udHlwZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBpZiAo
Y29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5dnNwWygyKSAtICg0KV0ubGV4KS5saW5lLCAoeXl2
c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlwZSkpKQorICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVy
cm9yQ2hlY2soKHl5bHNwWygyKSAtICg0KV0pLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlw
ZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0gICAgICAgIGlmICghY29u
dGV4dC0+ZXhlY3V0ZUluaXRpYWxpemVyKCh5eXZzcFsoMikgLSAoNCldLmxleCkubGluZSwgKih5
eXZzcFsoMikgLSAoNCldLmxleCkuc3RyaW5nLCAoeXl2c3BbKDEpIC0gKDQpXS5pbnRlcm0udHlw
ZSksICh5eXZzcFsoNCkgLSAoNCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCBpbnRlcm1Ob2Rl
KSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWygyKSAt
ICg0KV0pLCAqKHl5dnNwWygyKSAtICg0KV0ubGV4KS5zdHJpbmcsICh5eXZzcFsoMSkgLSAoNCld
LmludGVybS50eXBlKSwgKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
IGludGVybU5vZGUpKQogICAgICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWyg0KSAtICg0KV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwpAQCAtNDMzOCw3OSArNDMwOSw3
OSBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc5OgorICBjYXNl
IDE4MDoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPmxv
b3BOZXN0aW5nTGV2ZWw7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODA6CisgIGNhc2UgMTgx
OgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKLSAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29w
KEVMb29wV2hpbGUsIDAsICh5eXZzcFsoNCkgLSAoNildLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAwLCAoeXl2c3BbKDYpIC0gKDYpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZzcFsoMSkgLSAo
NildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAoeXl2c3BbKDQpIC0gKDYp
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgMCwgKHl5dnNwWyg2KSAtICg2KV0uaW50ZXJtLmlu
dGVybU5vZGUpLCAoeXlsc3BbKDEpIC0gKDYpXSkpOwogICAgICAgICAtLWNvbnRleHQtPmxvb3BO
ZXN0aW5nTGV2ZWw7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4MToKKyAgY2FzZSAx
ODI6CiAKICAgICB7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KICAgICBicmVhazsK
IAotICBjYXNlIDE4MjoKKyAgY2FzZSAxODM6CiAKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDgpIC0gKDgpXS5sZXgpLmxpbmUsICh5eXZzcFsoNikg
LSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKKyAgICAgICAgaWYgKGNvbnRleHQtPmJv
b2xFcnJvckNoZWNrKCh5eWxzcFsoOCkgLSAoOCldKSwgKHl5dnNwWyg2KSAtICg4KV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSkpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCi0g
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICh5eXZzcFsoNikgLSAoOCldLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAwLCAoeXl2c3BbKDMpIC0gKDgpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eXZz
cFsoNCkgLSAoOCldLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcERvV2hpbGUsIDAsICh5eXZz
cFsoNikgLSAoOCldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbKDMpIC0gKDgp
XS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxzcFsoNCkgLSAoOCldKSk7CiAgICAgICAgIC0tY29u
dGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTgz
OgorICBjYXNlIDE4NDoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2Nv
bnRleHQtPmxvb3BOZXN0aW5nTGV2ZWw7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODQ6Cisg
IGNhc2UgMTg1OgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsK
LSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRMb29wKEVMb29wRm9yLCAoeXl2c3BbKDQpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9kZSks
IHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAtICg3KV0uaW50ZXJt
Lm5vZGVQYWlyKS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNw
Wyg1KSAtICg3KV0uaW50ZXJtLm5vZGVQYWlyKS5ub2RlMiksICh5eXZzcFsoNykgLSAoNyldLmlu
dGVybS5pbnRlcm1Ob2RlKSwgKHl5dnNwWygxKSAtICg3KV0ubGV4KS5saW5lKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29w
KEVMb29wRm9yLCAoeXl2c3BbKDQpIC0gKDcpXS5pbnRlcm0uaW50ZXJtTm9kZSksIHJlaW50ZXJw
cmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAtICg3KV0uaW50ZXJtLm5vZGVQYWly
KS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWyg1KSAtICg3
KV0uaW50ZXJtLm5vZGVQYWlyKS5ub2RlMiksICh5eXZzcFsoNykgLSAoNyldLmludGVybS5pbnRl
cm1Ob2RlKSwgKHl5bHNwWygxKSAtICg3KV0pKTsKICAgICAgICAgLS1jb250ZXh0LT5sb29wTmVz
dGluZ0xldmVsOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODU6CisgIGNhc2UgMTg2
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWygx
KSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxODY6CisgIGNhc2UgMTg3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybU5vZGUpOwogICAgIDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxODc6CisgIGNhc2UgMTg4OgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg4OgorICBj
YXNlIDE4OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gMDsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg5OgorICBjYXNlIDE5MDoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEp
IC0gKDIpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTQ0MTgsNyArNDM4OSw3IEBAIHl5
cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTA6CisgIGNhc2UgMTkxOgog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFso
MSkgLSAoMyldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtNDQyNiw2MyArNDM5Nyw2MyBA
QCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkxOgorICBjYXNlIDE5
MjoKIAogICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWwgPD0gMCkg
ewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5l
LCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29wcyIsICIiKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgImNvbnRpbnVlIHN0YXRl
bWVudCBvbmx5IGFsbG93ZWQgaW4gbG9vcHMiLCAiIik7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wQ29udGludWUsICh5eXZzcFsoMSkg
LSAoMildLmxleCkubGluZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcENvbnRpbnVlLCAoeXlsc3BbKDEpIC0g
KDIpXSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTI6CisgIGNhc2UgMTkzOgog
CiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsICJi
cmVhayBzdGF0ZW1lbnQgb25seSBhbGxvd2VkIGluIGxvb3BzIiwgIiIpOworICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgyKV0pLCAiYnJlYWsgc3RhdGVtZW50IG9ubHkg
YWxsb3dlZCBpbiBsb29wcyIsICIiKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
ICAgICAgICAgfQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BCcmVhaywgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5s
aW5lKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5hZGRCcmFuY2goRU9wQnJlYWssICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDE5MzoKKyAgY2FzZSAxOTQ6CiAKICAgICB7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJh
bmNoKEVPcFJldHVybiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2go
RU9wUmV0dXJuLCAoeXlsc3BbKDEpIC0gKDIpXSkpOwogICAgICAgICBpZiAoY29udGV4dC0+Y3Vy
cmVudEZ1bmN0aW9uVHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCkgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lLCAibm9uLXZvaWQg
ZnVuY3Rpb24gbXVzdCByZXR1cm4gYSB2YWx1ZSIsICJyZXR1cm4iKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMildKSwgIm5vbi12b2lkIGZ1bmN0aW9uIG11c3Qg
cmV0dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk0OgorICBjYXNl
IDE5NToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRl
eHQtPmludGVybWVkaWF0ZS5hZGRCcmFuY2goRU9wUmV0dXJuLCAoeXl2c3BbKDIpIC0gKDMpXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWygxKSAtICgzKV0ubGV4KS5saW5lKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5h
ZGRCcmFuY2goRU9wUmV0dXJuLCAoeXl2c3BbKDIpIC0gKDMpXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSwgKHl5bHNwWygxKSAtICgzKV0pKTsKICAgICAgICAgY29udGV4dC0+ZnVuY3Rpb25SZXR1
cm5zVmFsdWUgPSB0cnVlOwogICAgICAgICBpZiAoY29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlw
ZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Vm9pZCkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5dnNwWygxKSAtICgzKV0ubGV4KS5saW5lLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0
dXJuIGEgdmFsdWUiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbKDEpIC0gKDMpXSksICJ2b2lkIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIsICJy
ZXR1cm4iKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfSBlbHNl
IGlmICgqKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUpICE9ICh5eXZzcFsoMikgLSAoMyld
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmVycm9yKCh5eXZzcFsoMSkgLSAoMyldLmxleCkubGluZSwgImZ1bmN0aW9uIHJldHVybiBp
cyBub3QgbWF0Y2hpbmcgdHlwZToiLCAicmV0dXJuIik7CisgICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXlsc3BbKDEpIC0gKDMpXSksICJmdW5jdGlvbiByZXR1cm4gaXMgbm90IG1hdGNoaW5n
IHR5cGU6IiwgInJldHVybiIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICB9CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5NToKKyAgY2FzZSAxOTY6CiAK
ICAgICB7Ci0gICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICh5eXZzcFsoMSkgLSAoMildLmxl
eCkubGluZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcEtpbGwsICh5eXZzcFsoMSkgLSAoMildLmxleCkubGlu
ZSk7CisgICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICh5eWxzcFsoMSkgLSAoMildKSk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkQnJhbmNoKEVPcEtpbGwsICh5eWxzcFsoMSkgLSAoMildKSk7CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE5NjoKKyAgY2FzZSAxOTc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7
CkBAIC00NDkwLDI5ICs0NDYxLDI5IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxOTc6CisgIGNhc2UgMTk4OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNw
WygxKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0u
aW50ZXJtTm9kZSksIDApOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LmludGVybU5vZGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksICh5eWxv
YykpOwogICAgICAgICBjb250ZXh0LT50cmVlUm9vdCA9ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5ODoKKyAgY2FzZSAxOTk6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEp
XS5pbnRlcm0uaW50ZXJtTm9kZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5OToK
KyAgY2FzZSAyMDA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkg
PSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtTm9kZSk7CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDIwMDoKKyAgY2FzZSAyMDE6CiAKICAgICB7CiAgICAgICAgIFRGdW5jdGlv
biogZnVuY3Rpb24gPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmZ1bmN0aW9uOwpAQCAtNDUy
MSw3ICs0NDkyLDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgIAogICAgICAgICBpZiAoYnVpbHRJbikK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgxKV0u
aW50ZXJtKS5saW5lLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBm
dW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KHl5bHNwWygxKSAtICgxKV0pLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmlu
ZWQiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDUzNSw3ICs0NTA2LDcgQEAgeXly
ZWR1Y2U6CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhlbiB0aGlzIGZ1bmN0aW9u
IGFscmVhZHkgaGFzIGEgYm9keS4KICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICJmdW5jdGlvbiBhbHJlYWR5
IGhhcyBhIGJvZHkiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAg
Y29udGV4dC0+ZXJyb3IoKHl5bHNwWygxKSAtICgxKV0pLCAiZnVuY3Rpb24gYWxyZWFkeSBoYXMg
YSBib2R5IiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKICAgICAgICAgfQogICAgICAgICBwcmV2RGVjLT5zZXREZWZpbmVkKCk7
CkBAIC00NTQ1LDExICs0NTE2LDExIEBAIHl5cmVkdWNlOgogICAgICAgICAvLwogICAgICAgICBp
ZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAibWFpbiIpIHsKICAgICAgICAgICAgIGlmIChmdW5j
dGlvbi0+Z2V0UGFyYW1Db3VudCgpID4gMCkgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCh5eXZzcFsoMSkgLSAoMSldLmludGVybSkubGluZSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtl
IGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgImZ1bmN0aW9uIGNh
bm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkp
OwogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9
IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0g
KDEpXS5pbnRlcm0pLmxpbmUsICIiLCBmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2lj
U3RyaW5nKCksICJtYWluIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMSldKSwgIiIsIGZ1bmN0aW9u
LT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90
IHJldHVybiBhIHZhbHVlIik7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NTc3LDcgKzQ1NDgsNyBAQCB5eXJlZHVjZToK
ICAgICAgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHBhcmFtZXRlcnMgd2l0aCBuYW1lIGluIHRo
ZSBzeW1ib2wgdGFibGUuCiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICBpZiAo
ISBjb250ZXh0LT5zeW1ib2xUYWJsZS5pbnNlcnQoKnZhcmlhYmxlKSkgewotICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUsICJy
ZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbKDEpIC0gKDEpXSksICJyZWRlZmluaXRpb24i
LCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsKICAg
ICAgICAgICAgICAgICB9CkBAIC00NTg4LDMxICs0NTU5LDMyIEBAIHl5cmVkdWNlOgogICAgICAg
ICAgICAgICAgIHBhcmFtTm9kZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0
ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1O
b2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUt
PmdldFR5cGUoKSwgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uaW50
ZXJtKS5saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHl5bHNwWygxKSAtICgxKV0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5ncm93QWdncmVnYXRlKHBhcmFtTm9kZXMsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1i
b2woMCwgIiIsICpwYXJhbS50eXBlLCAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpLCAo
eXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0pLmxpbmUpOworICAgICAgICAgICAgICAgIHBhcmFtTm9k
ZXMgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBjb250
ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgKHl5bHNwWygx
KSAtICgxKV0pKSwgKHl5bHNwWygxKSAtICgxKV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFy
YW1Ob2RlcywgRU9wUGFyYW1ldGVycywgKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtKS5saW5lKTsK
KyAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBhcmFt
Tm9kZXMsIEVPcFBhcmFtZXRlcnMsICh5eWxzcFsoMSkgLSAoMSldKSk7CiAgICAgICAgICh5eXZz
cFsoMSkgLSAoMSldLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gcGFyYW1Ob2RlczsKICAgICAg
ICAgY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA9IDA7CiAgICAgO30KICAgICBicmVhazsKIAot
ICBjYXNlIDIwMToKKyAgY2FzZSAyMDI6CiAKICAgICB7CiAgICAgICAgIC8vPz8gQ2hlY2sgdGhh
dCBhbGwgcGF0aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0dXJuIHR5cGUgIT0gdm9pZCA/CiAgICAg
ICAgIC8vICAgTWF5IGJlIGJlc3QgZG9uZSBhcyBwb3N0IHByb2Nlc3MgcGhhc2Ugb24gaW50ZXJt
ZWRpYXRlIGNvZGUKICAgICAgICAgaWYgKGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUtPmdl
dEJhc2ljVHlwZSgpICE9IEVidFZvaWQgJiYgISBjb250ZXh0LT5mdW5jdGlvblJldHVybnNWYWx1
ZSkgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
KS5saW5lLCAiZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWU6IiwgIiIsICh5eXZzcFso
MSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFsoMSkgLSAoMyldKSwgImZ1bmN0aW9uIGRvZXMgbm90
IHJldHVybiBhIHZhbHVlOiIsICIiLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9u
LT5nZXROYW1lKCkuY19zdHIoKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUp
LCAwKTsKLSAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9y
KCh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSksIEVPcEZ1bmN0aW9uLCAoeXl2c3BbKDEpIC0gKDMp
XS5pbnRlcm0pLmxpbmUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJt
KS5pbnRlcm1BZ2dyZWdhdGUsICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKSwg
KHl5bG9jKSk7CisgICAgICAgIGNvbnRleHQtPmludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVy
YXRvcigoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLCBFT3BGdW5jdGlvbiwgKHl5bHNwWygxKSAt
ICgzKV0pKTsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdh
dGUoKS0+c2V0TmFtZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmZ1bmN0aW9uLT5nZXRNYW5n
bGVkTmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5n
ZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRUeXBlKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rp
b24tPmdldFJldHVyblR5cGUoKSk7CiAKQEAgLTQ2MjEsOSArNDU5Myw2IEBAIHl5cmVkdWNlOgog
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRP
cHRpbWl6ZShjb250ZXh0LT5wcmFnbWEoKS5vcHRpbWl6ZSk7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQtPnByYWdt
YSgpLmRlYnVnKTsKIAotICAgICAgICBpZiAoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVy
bU5vZGUpICYmICh5eXZzcFsoMykgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dy
ZWdhdGUoKSkKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdn
cmVnYXRlKCktPnNldEVuZExpbmUoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUp
LT5nZXRBc0FnZ3JlZ2F0ZSgpLT5nZXRFbmRMaW5lKCkpOwotCiAgICAgICAgIGNvbnRleHQtPnN5
bWJvbFRhYmxlLnBvcCgpOwogICAgIDt9CiAgICAgYnJlYWs7CkBAIC00NjQwLDcgKzQ2MDksNyBA
QCB5eXJlZHVjZToKICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKIAogICAqKyt5eXZz
cCA9IHl5dmFsOwotCisgICorK3l5bHNwID0geXlsb2M7CiAKICAgLyogTm93IGBzaGlmdCcgdGhl
IHJlc3VsdCBvZiB0aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKICAgICAgdGhh
dCBnb2VzIHRvLCBiYXNlZCBvbiB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRoZSBy
dWxlCkBAIC00NjY2LDcgKzQ2MzUsNyBAQCB5eWVycmxhYjoKICAgICB7CiAgICAgICArK3l5bmVy
cnM7CiAjaWYgISBZWUVSUk9SX1ZFUkJPU0UKLSAgICAgIHl5ZXJyb3IgKGNvbnRleHQsIFlZXygi
c3ludGF4IGVycm9yIikpOworICAgICAgeXllcnJvciAoJnl5bGxvYywgY29udGV4dCwgWVlfKCJz
eW50YXggZXJyb3IiKSk7CiAjZWxzZQogICAgICAgewogCVlZU0laRV9UIHl5c2l6ZSA9IHl5c3lu
dGF4X2Vycm9yICgwLCB5eXN0YXRlLCB5eWNoYXIpOwpAQCAtNDY5MCwxMSArNDY1OSwxMSBAQCB5
eWVycmxhYjoKIAlpZiAoMCA8IHl5c2l6ZSAmJiB5eXNpemUgPD0geXltc2dfYWxsb2MpCiAJICB7
CiAJICAgICh2b2lkKSB5eXN5bnRheF9lcnJvciAoeXltc2csIHl5c3RhdGUsIHl5Y2hhcik7Ci0J
ICAgIHl5ZXJyb3IgKGNvbnRleHQsIHl5bXNnKTsKKwkgICAgeXllcnJvciAoJnl5bGxvYywgY29u
dGV4dCwgeXltc2cpOwogCSAgfQogCWVsc2UKIAkgIHsKLQkgICAgeXllcnJvciAoY29udGV4dCwg
WVlfKCJzeW50YXggZXJyb3IiKSk7CisJICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIFlZ
Xygic3ludGF4IGVycm9yIikpOwogCSAgICBpZiAoeXlzaXplICE9IDApCiAJICAgICAgZ290byB5
eWV4aGF1c3RlZGxhYjsKIAkgIH0KQEAgLTQ3MDIsNyArNDY3MSw3IEBAIHl5ZXJybGFiOgogI2Vu
ZGlmCiAgICAgfQogCi0KKyAgeXllcnJvcl9yYW5nZVswXSA9IHl5bGxvYzsKIAogICBpZiAoeXll
cnJzdGF0dXMgPT0gMykKICAgICB7CkBAIC00NzE4LDcgKzQ2ODcsNyBAQCB5eWVycmxhYjoKICAg
ICAgIGVsc2UKIAl7CiAJICB5eWRlc3RydWN0ICgiRXJyb3I6IGRpc2NhcmRpbmciLAotCQkgICAg
ICB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKKwkJICAgICAgeXl0b2tlbiwgJnl5bHZhbCwg
Jnl5bGxvYywgY29udGV4dCk7CiAJICB5eWNoYXIgPSBZWUVNUFRZOwogCX0KICAgICB9CkBAIC00
NzM5LDYgKzQ3MDgsNyBAQCB5eWVycm9ybGFiOgogICBpZiAoLypDT05TVENPTkQqLyAwKQogICAg
ICBnb3RvIHl5ZXJyb3JsYWI7CiAKKyAgeXllcnJvcl9yYW5nZVswXSA9IHl5bHNwWzEteXlsZW5d
OwogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rp
b24gdHJpZ2dlcmVkCiAgICAgIHRoaXMgWVlFUlJPUi4gICovCiAgIFlZUE9QU1RBQ0sgKHl5bGVu
KTsKQEAgLTQ3NzIsOSArNDc0Miw5IEBAIHl5ZXJybGFiMToKICAgICAgIGlmICh5eXNzcCA9PSB5
eXNzKQogCVlZQUJPUlQ7CiAKLQorICAgICAgeXllcnJvcl9yYW5nZVswXSA9ICp5eWxzcDsKICAg
ICAgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogcG9wcGluZyIsCi0JCSAgeXlzdG9zW3l5c3RhdGVdLCB5
eXZzcCwgY29udGV4dCk7CisJCSAgeXlzdG9zW3l5c3RhdGVdLCB5eXZzcCwgeXlsc3AsIGNvbnRl
eHQpOwogICAgICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgICB5eXN0YXRlID0gKnl5c3NwOwogICAg
ICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKQEAgLTQ3ODUsNiArNDc1NSwxMSBAQCB5
eWVycmxhYjE6CiAKICAgKisreXl2c3AgPSB5eWx2YWw7CiAKKyAgeXllcnJvcl9yYW5nZVsxXSA9
IHl5bGxvYzsKKyAgLyogVXNpbmcgWVlMTE9DIGlzIHRlbXB0aW5nLCBidXQgd291bGQgY2hhbmdl
IHRoZSBsb2NhdGlvbiBvZgorICAgICB0aGUgbG9vay1haGVhZC4gIFlZTE9DIGlzIGF2YWlsYWJs
ZSB0aG91Z2guICAqLworICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWVycm9yX3JhbmdlIC0g
MSksIDIpOworICAqKyt5eWxzcCA9IHl5bG9jOwogCiAgIC8qIFNoaWZ0IHRoZSBlcnJvciB0b2tl
bi4gICovCiAgIFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0aW5nIiwgeXlzdG9zW3l5bl0sIHl5dnNw
LCB5eWxzcCk7CkBAIC00ODEyLDcgKzQ3ODcsNyBAQCB5eWFib3J0bGFiOgogfCB5eWV4aGF1c3Rl
ZGxhYiAtLSBtZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJlLiAgfAogYC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogeXlleGhhdXN0ZWRsYWI6Ci0g
IHl5ZXJyb3IgKGNvbnRleHQsIFlZXygibWVtb3J5IGV4aGF1c3RlZCIpKTsKKyAgeXllcnJvciAo
Jnl5bGxvYywgY29udGV4dCwgWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOwogICB5eXJlc3VsdCA9
IDI7CiAgIC8qIEZhbGwgdGhyb3VnaC4gICovCiAjZW5kaWYKQEAgLTQ4MjAsNyArNDc5NSw3IEBA
IHl5ZXhoYXVzdGVkbGFiOgogeXlyZXR1cm46CiAgIGlmICh5eWNoYXIgIT0gWVlFT0YgJiYgeXlj
aGFyICE9IFlZRU1QVFkpCiAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxv
b2thaGVhZCIsCi0JCSB5eXRva2VuLCAmeXlsdmFsLCBjb250ZXh0KTsKKwkJIHl5dG9rZW4sICZ5
eWx2YWwsICZ5eWxsb2MsIGNvbnRleHQpOwogICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9s
cyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCiAgICAgIHRoaXMgWVlBQk9SVCBv
ciBZWUFDQ0VQVC4gICovCiAgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKQEAgLTQ4MjgsNyArNDgwMyw3
IEBAIHl5cmV0dXJuOgogICB3aGlsZSAoeXlzc3AgIT0geXlzcykKICAgICB7CiAgICAgICB5eWRl
c3RydWN0ICgiQ2xlYW51cDogcG9wcGluZyIsCi0JCSAgeXlzdG9zWyp5eXNzcF0sIHl5dnNwLCBj
b250ZXh0KTsKKwkJICB5eXN0b3NbKnl5c3NwXSwgeXl2c3AsIHl5bHNwLCBjb250ZXh0KTsKICAg
ICAgIFlZUE9QU1RBQ0sgKDEpOwogICAgIH0KICNpZm5kZWYgeXlvdmVyZmxvdwpAQCAtNDg0Nyw2
ICs0ODIyLDExIEBAIHl5cmV0dXJuOgogCiAKIAordm9pZCB5eWVycm9yKFlZTFRZUEUqIHl5bGxv
YywgVFBhcnNlQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKSB7CisgICAgY29u
dGV4dC0+ZXJyb3IoKnl5bGxvYywgcmVhc29uLCAiIik7CisgICAgY29udGV4dC0+cmVjb3Zlcigp
OworfQorCiBpbnQgZ2xzbGFuZ19wYXJzZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7CiAgICAg
cmV0dXJuIHl5cGFyc2UoY29udGV4dCk7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaAkocmV2aXNpb24gMTUyOTc5KQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDUyICs4Niw1MSBAQAogICAgICBGTE9BVENPTlNUQU5UID0gMzAy
LAogICAgICBJTlRDT05TVEFOVCA9IDMwMywKICAgICAgQk9PTENPTlNUQU5UID0gMzA0LAotICAg
ICBGSUVMRF9TRUxFQ1RJT04gPSAzMDUsCi0gICAgIExFRlRfT1AgPSAzMDYsCi0gICAgIFJJR0hU
X09QID0gMzA3LAotICAgICBJTkNfT1AgPSAzMDgsCi0gICAgIERFQ19PUCA9IDMwOSwKLSAgICAg
TEVfT1AgPSAzMTAsCi0gICAgIEdFX09QID0gMzExLAotICAgICBFUV9PUCA9IDMxMiwKLSAgICAg
TkVfT1AgPSAzMTMsCi0gICAgIEFORF9PUCA9IDMxNCwKLSAgICAgT1JfT1AgPSAzMTUsCi0gICAg
IFhPUl9PUCA9IDMxNiwKLSAgICAgTVVMX0FTU0lHTiA9IDMxNywKLSAgICAgRElWX0FTU0lHTiA9
IDMxOCwKLSAgICAgQUREX0FTU0lHTiA9IDMxOSwKLSAgICAgTU9EX0FTU0lHTiA9IDMyMCwKLSAg
ICAgTEVGVF9BU1NJR04gPSAzMjEsCi0gICAgIFJJR0hUX0FTU0lHTiA9IDMyMiwKLSAgICAgQU5E
X0FTU0lHTiA9IDMyMywKLSAgICAgWE9SX0FTU0lHTiA9IDMyNCwKLSAgICAgT1JfQVNTSUdOID0g
MzI1LAotICAgICBTVUJfQVNTSUdOID0gMzI2LAotICAgICBMRUZUX1BBUkVOID0gMzI3LAotICAg
ICBSSUdIVF9QQVJFTiA9IDMyOCwKLSAgICAgTEVGVF9CUkFDS0VUID0gMzI5LAotICAgICBSSUdI
VF9CUkFDS0VUID0gMzMwLAotICAgICBMRUZUX0JSQUNFID0gMzMxLAotICAgICBSSUdIVF9CUkFD
RSA9IDMzMiwKLSAgICAgRE9UID0gMzMzLAotICAgICBDT01NQSA9IDMzNCwKLSAgICAgQ09MT04g
PSAzMzUsCi0gICAgIEVRVUFMID0gMzM2LAotICAgICBTRU1JQ09MT04gPSAzMzcsCi0gICAgIEJB
TkcgPSAzMzgsCi0gICAgIERBU0ggPSAzMzksCi0gICAgIFRJTERFID0gMzQwLAotICAgICBQTFVT
ID0gMzQxLAotICAgICBTVEFSID0gMzQyLAotICAgICBTTEFTSCA9IDM0MywKLSAgICAgUEVSQ0VO
VCA9IDM0NCwKLSAgICAgTEVGVF9BTkdMRSA9IDM0NSwKLSAgICAgUklHSFRfQU5HTEUgPSAzNDYs
Ci0gICAgIFZFUlRJQ0FMX0JBUiA9IDM0NywKLSAgICAgQ0FSRVQgPSAzNDgsCi0gICAgIEFNUEVS
U0FORCA9IDM0OSwKLSAgICAgUVVFU1RJT04gPSAzNTAKKyAgICAgTEVGVF9PUCA9IDMwNSwKKyAg
ICAgUklHSFRfT1AgPSAzMDYsCisgICAgIElOQ19PUCA9IDMwNywKKyAgICAgREVDX09QID0gMzA4
LAorICAgICBMRV9PUCA9IDMwOSwKKyAgICAgR0VfT1AgPSAzMTAsCisgICAgIEVRX09QID0gMzEx
LAorICAgICBORV9PUCA9IDMxMiwKKyAgICAgQU5EX09QID0gMzEzLAorICAgICBPUl9PUCA9IDMx
NCwKKyAgICAgWE9SX09QID0gMzE1LAorICAgICBNVUxfQVNTSUdOID0gMzE2LAorICAgICBESVZf
QVNTSUdOID0gMzE3LAorICAgICBBRERfQVNTSUdOID0gMzE4LAorICAgICBNT0RfQVNTSUdOID0g
MzE5LAorICAgICBMRUZUX0FTU0lHTiA9IDMyMCwKKyAgICAgUklHSFRfQVNTSUdOID0gMzIxLAor
ICAgICBBTkRfQVNTSUdOID0gMzIyLAorICAgICBYT1JfQVNTSUdOID0gMzIzLAorICAgICBPUl9B
U1NJR04gPSAzMjQsCisgICAgIFNVQl9BU1NJR04gPSAzMjUsCisgICAgIExFRlRfUEFSRU4gPSAz
MjYsCisgICAgIFJJR0hUX1BBUkVOID0gMzI3LAorICAgICBMRUZUX0JSQUNLRVQgPSAzMjgsCisg
ICAgIFJJR0hUX0JSQUNLRVQgPSAzMjksCisgICAgIExFRlRfQlJBQ0UgPSAzMzAsCisgICAgIFJJ
R0hUX0JSQUNFID0gMzMxLAorICAgICBET1QgPSAzMzIsCisgICAgIENPTU1BID0gMzMzLAorICAg
ICBDT0xPTiA9IDMzNCwKKyAgICAgRVFVQUwgPSAzMzUsCisgICAgIFNFTUlDT0xPTiA9IDMzNiwK
KyAgICAgQkFORyA9IDMzNywKKyAgICAgREFTSCA9IDMzOCwKKyAgICAgVElMREUgPSAzMzksCisg
ICAgIFBMVVMgPSAzNDAsCisgICAgIFNUQVIgPSAzNDEsCisgICAgIFNMQVNIID0gMzQyLAorICAg
ICBQRVJDRU5UID0gMzQzLAorICAgICBMRUZUX0FOR0xFID0gMzQ0LAorICAgICBSSUdIVF9BTkdM
RSA9IDM0NSwKKyAgICAgVkVSVElDQUxfQkFSID0gMzQ2LAorICAgICBDQVJFVCA9IDM0NywKKyAg
ICAgQU1QRVJTQU5EID0gMzQ4LAorICAgICBRVUVTVElPTiA9IDM0OQogICAgfTsKICNlbmRpZgog
LyogVG9rZW5zLiAgKi8KQEAgLTE4Miw1MiArMTgxLDUxIEBACiAjZGVmaW5lIEZMT0FUQ09OU1RB
TlQgMzAyCiAjZGVmaW5lIElOVENPTlNUQU5UIDMwMwogI2RlZmluZSBCT09MQ09OU1RBTlQgMzA0
Ci0jZGVmaW5lIEZJRUxEX1NFTEVDVElPTiAzMDUKLSNkZWZpbmUgTEVGVF9PUCAzMDYKLSNkZWZp
bmUgUklHSFRfT1AgMzA3Ci0jZGVmaW5lIElOQ19PUCAzMDgKLSNkZWZpbmUgREVDX09QIDMwOQot
I2RlZmluZSBMRV9PUCAzMTAKLSNkZWZpbmUgR0VfT1AgMzExCi0jZGVmaW5lIEVRX09QIDMxMgot
I2RlZmluZSBORV9PUCAzMTMKLSNkZWZpbmUgQU5EX09QIDMxNAotI2RlZmluZSBPUl9PUCAzMTUK
LSNkZWZpbmUgWE9SX09QIDMxNgotI2RlZmluZSBNVUxfQVNTSUdOIDMxNwotI2RlZmluZSBESVZf
QVNTSUdOIDMxOAotI2RlZmluZSBBRERfQVNTSUdOIDMxOQotI2RlZmluZSBNT0RfQVNTSUdOIDMy
MAotI2RlZmluZSBMRUZUX0FTU0lHTiAzMjEKLSNkZWZpbmUgUklHSFRfQVNTSUdOIDMyMgotI2Rl
ZmluZSBBTkRfQVNTSUdOIDMyMwotI2RlZmluZSBYT1JfQVNTSUdOIDMyNAotI2RlZmluZSBPUl9B
U1NJR04gMzI1Ci0jZGVmaW5lIFNVQl9BU1NJR04gMzI2Ci0jZGVmaW5lIExFRlRfUEFSRU4gMzI3
Ci0jZGVmaW5lIFJJR0hUX1BBUkVOIDMyOAotI2RlZmluZSBMRUZUX0JSQUNLRVQgMzI5Ci0jZGVm
aW5lIFJJR0hUX0JSQUNLRVQgMzMwCi0jZGVmaW5lIExFRlRfQlJBQ0UgMzMxCi0jZGVmaW5lIFJJ
R0hUX0JSQUNFIDMzMgotI2RlZmluZSBET1QgMzMzCi0jZGVmaW5lIENPTU1BIDMzNAotI2RlZmlu
ZSBDT0xPTiAzMzUKLSNkZWZpbmUgRVFVQUwgMzM2Ci0jZGVmaW5lIFNFTUlDT0xPTiAzMzcKLSNk
ZWZpbmUgQkFORyAzMzgKLSNkZWZpbmUgREFTSCAzMzkKLSNkZWZpbmUgVElMREUgMzQwCi0jZGVm
aW5lIFBMVVMgMzQxCi0jZGVmaW5lIFNUQVIgMzQyCi0jZGVmaW5lIFNMQVNIIDM0MwotI2RlZmlu
ZSBQRVJDRU5UIDM0NAotI2RlZmluZSBMRUZUX0FOR0xFIDM0NQotI2RlZmluZSBSSUdIVF9BTkdM
RSAzNDYKLSNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NwotI2RlZmluZSBDQVJFVCAzNDgKLSNkZWZp
bmUgQU1QRVJTQU5EIDM0OQotI2RlZmluZSBRVUVTVElPTiAzNTAKKyNkZWZpbmUgTEVGVF9PUCAz
MDUKKyNkZWZpbmUgUklHSFRfT1AgMzA2CisjZGVmaW5lIElOQ19PUCAzMDcKKyNkZWZpbmUgREVD
X09QIDMwOAorI2RlZmluZSBMRV9PUCAzMDkKKyNkZWZpbmUgR0VfT1AgMzEwCisjZGVmaW5lIEVR
X09QIDMxMQorI2RlZmluZSBORV9PUCAzMTIKKyNkZWZpbmUgQU5EX09QIDMxMworI2RlZmluZSBP
Ul9PUCAzMTQKKyNkZWZpbmUgWE9SX09QIDMxNQorI2RlZmluZSBNVUxfQVNTSUdOIDMxNgorI2Rl
ZmluZSBESVZfQVNTSUdOIDMxNworI2RlZmluZSBBRERfQVNTSUdOIDMxOAorI2RlZmluZSBNT0Rf
QVNTSUdOIDMxOQorI2RlZmluZSBMRUZUX0FTU0lHTiAzMjAKKyNkZWZpbmUgUklHSFRfQVNTSUdO
IDMyMQorI2RlZmluZSBBTkRfQVNTSUdOIDMyMgorI2RlZmluZSBYT1JfQVNTSUdOIDMyMworI2Rl
ZmluZSBPUl9BU1NJR04gMzI0CisjZGVmaW5lIFNVQl9BU1NJR04gMzI1CisjZGVmaW5lIExFRlRf
UEFSRU4gMzI2CisjZGVmaW5lIFJJR0hUX1BBUkVOIDMyNworI2RlZmluZSBMRUZUX0JSQUNLRVQg
MzI4CisjZGVmaW5lIFJJR0hUX0JSQUNLRVQgMzI5CisjZGVmaW5lIExFRlRfQlJBQ0UgMzMwCisj
ZGVmaW5lIFJJR0hUX0JSQUNFIDMzMQorI2RlZmluZSBET1QgMzMyCisjZGVmaW5lIENPTU1BIDMz
MworI2RlZmluZSBDT0xPTiAzMzQKKyNkZWZpbmUgRVFVQUwgMzM1CisjZGVmaW5lIFNFTUlDT0xP
TiAzMzYKKyNkZWZpbmUgQkFORyAzMzcKKyNkZWZpbmUgREFTSCAzMzgKKyNkZWZpbmUgVElMREUg
MzM5CisjZGVmaW5lIFBMVVMgMzQwCisjZGVmaW5lIFNUQVIgMzQxCisjZGVmaW5lIFNMQVNIIDM0
MgorI2RlZmluZSBQRVJDRU5UIDM0MworI2RlZmluZSBMRUZUX0FOR0xFIDM0NAorI2RlZmluZSBS
SUdIVF9BTkdMRSAzNDUKKyNkZWZpbmUgVkVSVElDQUxfQkFSIDM0NgorI2RlZmluZSBDQVJFVCAz
NDcKKyNkZWZpbmUgQU1QRVJTQU5EIDM0OAorI2RlZmluZSBRVUVTVElPTiAzNDkKIAogCiAKQEAg
LTIzNiw4ICsyMzQsOSBAQAogdHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAKIHsKKyNkZWZpbmUgWVlM
VFlQRSBUU291cmNlTG9jCisjZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQgMQogICAgIHN0cnVj
dCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgVFN0cmluZyAqc3RyaW5nOwogICAgICAgICAgICAgZmxvYXQgZjsKQEAgLTI0Nyw3ICsyNDYs
NiBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAgICAgICAgVFN5bWJvbCogc3ltYm9sOwogICAg
IH0gbGV4OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFRTb3VyY2VMb2MgbGluZTsKICAgICAgICAg
VE9wZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUSW50ZXJtTm9kZSog
aW50ZXJtTm9kZTsKQEAgLTI2MSw4ICsyNTksOCBAQCB0eXBlZGVmIHVuaW9uIFlZU1RZUEUKICAg
ICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyOwogICAgICAgICAgICAgVEZ1bmN0aW9uKiBm
dW5jdGlvbjsKICAgICAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW07Ci0gICAgICAgICAgICBUVHlw
ZUxpbmUgdHlwZUxpbmU7Ci0gICAgICAgICAgICBUVHlwZUxpc3QqIHR5cGVMaXN0OworICAgICAg
ICAgICAgVEZpZWxkKiBmaWVsZDsKKyAgICAgICAgICAgIFRGaWVsZExpc3QqIGZpZWxkTGlzdDsK
ICAgICAgICAgfTsKICAgICB9IGludGVybTsKIH0KQEAgLTI3NiwzICsyNzQsMTcgQEAgdHlwZWRl
ZiB1bmlvbiBZWVNUWVBFCiAKIAogCisjaWYgISBkZWZpbmVkIFlZTFRZUEUgJiYgISBkZWZpbmVk
IFlZTFRZUEVfSVNfREVDTEFSRUQKK3R5cGVkZWYgc3RydWN0IFlZTFRZUEUKK3sKKyAgaW50IGZp
cnN0X2xpbmU7CisgIGludCBmaXJzdF9jb2x1bW47CisgIGludCBsYXN0X2xpbmU7CisgIGludCBs
YXN0X2NvbHVtbjsKK30gWVlMVFlQRTsKKyMgZGVmaW5lIHl5bHR5cGUgWVlMVFlQRSAvKiBvYnNv
bGVzY2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KKyMgZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFS
RUQgMQorIyBkZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKKyNlbmRpZgorCisKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9pbnRlcm1PdXQuY3Bw
CShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvaW50ZXJtT3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDcgKzE4OSw5IEBAIGJvb2wg
VE91dHB1dFRyYXZlcnNlcjo6dmlzaXRVbmFyeShWaXNpdCAKICAgICAgICAgY2FzZSBFT3BBbnk6
ICAgICAgICAgICAgb3V0IDw8ICJhbnkiOyAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEVPcEFsbDogICAgICAgICAgICBvdXQgPDwgImFsbCI7ICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgZGVmYXVsdDogb3V0Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCAiQmFk
IHVuYXJ5IG9wIik7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBvdXQucHJlZml4KEVQ
cmVmaXhFcnJvcik7CisgICAgICAgICAgICBvdXQgPDwgIkJhZCB1bmFyeSBvcCI7CiAgICAgfQog
CiAgICAgb3V0IDw8ICIgKCIgPDwgbm9kZS0+Z2V0Q29tcGxldGVTdHJpbmcoKSA8PCAiKSI7CkBA
IC0yMDQsNyArMjA2LDggQEAgYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShW
aQogICAgIFRJbmZvU2lua0Jhc2UmIG91dCA9IHNpbms7CiAKICAgICBpZiAobm9kZS0+Z2V0T3Ao
KSA9PSBFT3BOdWxsKSB7Ci0gICAgICAgIG91dC5tZXNzYWdlKEVQcmVmaXhFcnJvciwgIm5vZGUg
aXMgc3RpbGwgRU9wTnVsbCEiKTsKKyAgICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3IpOwor
ICAgICAgICBvdXQgPDwgIm5vZGUgaXMgc3RpbGwgRU9wTnVsbCEiOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKQEAgLTI2Myw3ICsyNjYsOSBAQCBib29sIFRPdXRwdXRUcmF2ZXJzZXI6
OnZpc2l0QWdncmVnYXRlKFZpCiAKICAgICAgICAgY2FzZSBFT3BEZWNsYXJhdGlvbjogICBvdXQg
PDwgIkRlY2xhcmF0aW9uOiAiOyAgIGJyZWFrOwogCi0gICAgICAgIGRlZmF1bHQ6IG91dC5tZXNz
YWdlKEVQcmVmaXhFcnJvciwgIkJhZCBhZ2dyZWdhdGlvbiBvcCIpOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgb3V0LnByZWZpeChFUHJlZml4RXJyb3IpOworICAgICAgICAgICAgb3V0
IDw8ICJCYWQgYWdncmVnYXRpb24gb3AiOwogICAgIH0KIAogICAgIGlmIChub2RlLT5nZXRPcCgp
ICE9IEVPcFNlcXVlbmNlICYmIG5vZGUtPmdldE9wKCkgIT0gRU9wUGFyYW1ldGVycykKQEAgLTMx
MSw5ICszMTYsOSBAQCB2b2lkIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvCiB7
CiAgICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gc2luazsKIAotICAgIGludCBzaXplID0gbm9kZS0+
Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKKyAgICBzaXplX3Qgc2l6ZSA9IG5vZGUtPmdldFR5
cGUoKS5nZXRPYmplY3RTaXplKCk7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkr
KykgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgIE91
dHB1dFRyZWVUZXh0KG91dCwgbm9kZSwgZGVwdGgpOwogICAgICAgICBzd2l0Y2ggKG5vZGUtPmdl
dFVuaW9uQXJyYXlQb2ludGVyKClbaV0uZ2V0VHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEVi
dEJvb2w6CkBAIC0zMzQsNyArMzM5LDcgQEAgdm9pZCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdENv
bnN0YW50VW5pbwogICAgICAgICAgICAgICAgIG91dCA8PCAiIChjb25zdCBpbnQpXG4iOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICBvdXQubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgIlVua25vd24gY29uc3RhbnQiLCBu
b2RlLT5nZXRMaW5lKCkpOworICAgICAgICAgICAgICAgIG91dC5tZXNzYWdlKEVQcmVmaXhJbnRl
cm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJVbmtub3duIGNvbnN0YW50Iik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oCShyZXZpc2lvbiAx
NTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvaW50ZXJtZWRp
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChj
KSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgogLy8KQEAgLTE4LDYgKzE4LDcgQEAKIAogI2luY2x1ZGUgIkdMU0xBTkcv
U2hhZGVyTGFuZy5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgImNvbXBpbGVy
L0NvbW1vbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL1R5cGVzLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvQ29uc3RhbnRVbmlvbi5oIgpAQCAtMjA2LDEwICsyMDcsMTYgQEAgY2xhc3MgVEludGVybU5v
ZGUgewogcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoR2xvYmFsUG9vbEFs
bG9jYXRvcikKIAotICAgIFRJbnRlcm1Ob2RlKCkgOiBsaW5lKDApIHt9CisgICAgVEludGVybU5v
ZGUoKSB7CisgICAgICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBUU291cmNlTG9jIGNvbnN0cnVj
dG9yCisgICAgICAgIC8vIGFmdGVyIGdldHRpbmcgcmlkIG9mIFRQdWJsaWNUeXBlLgorICAgICAg
ICBsaW5lLmZpcnN0X2ZpbGUgPSBsaW5lLmxhc3RfZmlsZSA9IDA7CisgICAgICAgIGxpbmUuZmly
c3RfbGluZSA9IGxpbmUubGFzdF9saW5lID0gMDsKKyAgICB9CisgICAgdmlydHVhbCB+VEludGVy
bU5vZGUoKSB7IH0KIAotICAgIFRTb3VyY2VMb2MgZ2V0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxp
bmU7IH0KLSAgICB2b2lkIHNldExpbmUoVFNvdXJjZUxvYyBsKSB7IGxpbmUgPSBsOyB9CisgICAg
Y29uc3QgVFNvdXJjZUxvYyYgZ2V0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmU7IH0KKyAgICB2
b2lkIHNldExpbmUoY29uc3QgVFNvdXJjZUxvYyYgbCkgeyBsaW5lID0gbDsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIqKSA9IDA7CiAgICAgdmlydHVhbCBU
SW50ZXJtVHlwZWQqIGdldEFzVHlwZWQoKSB7IHJldHVybiAwOyB9CkBAIC0yMjAsNyArMjI3LDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgVEludGVybVNlbGVjdGlvbiogZ2V0QXNTZWxlY3Rpb25O
b2RlKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgVEludGVybVN5bWJvbCogZ2V0QXNTeW1i
b2xOb2RlKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgVEludGVybUxvb3AqIGdldEFzTG9v
cE5vZGUoKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB+VEludGVybU5vZGUoKSB7IH0KIAog
cHJvdGVjdGVkOgogICAgIFRTb3VyY2VMb2MgbGluZTsKQEAgLTI1OSw2ICsyNjUsMTAgQEAgcHVi
bGljOgogICAgIGNvbnN0IGNoYXIqIGdldFF1YWxpZmllclN0cmluZygpIGNvbnN0IHsgcmV0dXJu
IHR5cGUuZ2V0UXVhbGlmaWVyU3RyaW5nKCk7IH0KICAgICBUU3RyaW5nIGdldENvbXBsZXRlU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gdHlwZS5nZXRDb21wbGV0ZVN0cmluZygpOyB9CiAKKyAgICBp
bnQgdG90YWxSZWdpc3RlckNvdW50KCkgY29uc3QgeyByZXR1cm4gdHlwZS50b3RhbFJlZ2lzdGVy
Q291bnQoKTsgfQorICAgIGludCBlbGVtZW50UmVnaXN0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IHR5cGUuZWxlbWVudFJlZ2lzdGVyQ291bnQoKTsgfQorICAgIGludCBnZXRBcnJheVNpemUoKSBj
b25zdCB7IHJldHVybiB0eXBlLmdldEFycmF5U2l6ZSgpOyB9CisKIHByb3RlY3RlZDoKICAgICBU
VHlwZSB0eXBlOwogfTsKQEAgLTM1OCw3ICszNjgsMTAgQEAgcHVibGljOgogICAgIFRJbnRlcm1D
b25zdGFudFVuaW9uKENvbnN0YW50VW5pb24gKnVuaW9uUG9pbnRlciwgY29uc3QgVFR5cGUmIHQp
IDogVEludGVybVR5cGVkKHQpLCB1bmlvbkFycmF5UG9pbnRlcih1bmlvblBvaW50ZXIpIHsgfQog
CiAgICAgQ29uc3RhbnRVbmlvbiogZ2V0VW5pb25BcnJheVBvaW50ZXIoKSBjb25zdCB7IHJldHVy
biB1bmlvbkFycmF5UG9pbnRlcjsgfQotICAgIHZvaWQgc2V0VW5pb25BcnJheVBvaW50ZXIoQ29u
c3RhbnRVbmlvbiAqYykgeyB1bmlvbkFycmF5UG9pbnRlciA9IGM7IH0KKyAgICAKKyAgICBpbnQg
Z2V0SUNvbnN0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXIgPyB1
bmlvbkFycmF5UG9pbnRlcltpbmRleF0uZ2V0SUNvbnN0KCkgOiAwOyB9CisgICAgZmxvYXQgZ2V0
RkNvbnN0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheVBvaW50ZXIgPyB1bmlv
bkFycmF5UG9pbnRlcltpbmRleF0uZ2V0RkNvbnN0KCkgOiAwLjBmOyB9CisgICAgYm9vbCBnZXRC
Q29uc3QoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiB1bmlvbkFycmF5UG9pbnRlciA/IHVuaW9u
QXJyYXlQb2ludGVyW2luZGV4XS5nZXRCQ29uc3QoKSA6IGZhbHNlOyB9CiAKICAgICB2aXJ0dWFs
IFRJbnRlcm1Db25zdGFudFVuaW9uKiBnZXRBc0NvbnN0YW50VW5pb24oKSAgeyByZXR1cm4gdGhp
czsgfQogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyKik7CkBAIC00
NDcsNyArNDYwLDcgQEAgdHlwZWRlZiBUVmVjdG9yPGludD4gVFF1YWxpZmllckxpc3Q7CiAvLwog
Y2xhc3MgVEludGVybUFnZ3JlZ2F0ZSA6IHB1YmxpYyBUSW50ZXJtT3BlcmF0b3IgewogcHVibGlj
OgotICAgIFRJbnRlcm1BZ2dyZWdhdGUoKSA6IFRJbnRlcm1PcGVyYXRvcihFT3BOdWxsKSwgdXNl
ckRlZmluZWQoZmFsc2UpLCBlbmRMaW5lKDApLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKGZhbHNlKSB7
IH0KKyAgICBUSW50ZXJtQWdncmVnYXRlKCkgOiBUSW50ZXJtT3BlcmF0b3IoRU9wTnVsbCksIHVz
ZXJEZWZpbmVkKGZhbHNlKSwgdXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSkgeyB9CiAgICAgVElu
dGVybUFnZ3JlZ2F0ZShUT3BlcmF0b3IgbykgOiBUSW50ZXJtT3BlcmF0b3IobyksIHVzZUVtdWxh
dGVkRnVuY3Rpb24oZmFsc2UpIHsgfQogICAgIH5USW50ZXJtQWdncmVnYXRlKCkgeyB9CiAKQEAg
LTQ2Nyw5ICs0ODAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREZWJ1Zyhib29sIGQpIHsgZGVi
dWcgPSBkOyB9CiAgICAgYm9vbCBnZXREZWJ1ZygpIHsgcmV0dXJuIGRlYnVnOyB9CiAKLSAgICB2
b2lkIHNldEVuZExpbmUoVFNvdXJjZUxvYyBsaW5lKSB7IGVuZExpbmUgPSBsaW5lOyB9Ci0gICAg
VFNvdXJjZUxvYyBnZXRFbmRMaW5lKCkgY29uc3QgeyByZXR1cm4gZW5kTGluZTsgfQotCiAgICAg
dm9pZCBzZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkgeyB1c2VFbXVsYXRlZEZ1bmN0aW9uID0gdHJ1
ZTsgfQogICAgIGJvb2wgZ2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpIHsgcmV0dXJuIHVzZUVtdWxh
dGVkRnVuY3Rpb247IH0KIApAQCAtNDgyLDcgKzQ5Miw2IEBAIHByb3RlY3RlZDoKIAogICAgIGJv
b2wgb3B0aW1pemU7CiAgICAgYm9vbCBkZWJ1ZzsKLSAgICBUU291cmNlTG9jIGVuZExpbmU7CiAK
ICAgICAvLyBJZiBzZXQgdG8gdHJ1ZSwgcmVwbGFjZSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gY2Fs
bCB3aXRoIGFuIGVtdWxhdGVkIG9uZQogICAgIC8vIHRvIHdvcmsgYXJvdW5kIGRyaXZlciBidWdz
LgpAQCAtNTM4LDcgKzU0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGluVmlzaXQoaW5WaXNp
dCksCiAgICAgICAgICAgICBwb3N0VmlzaXQocG9zdFZpc2l0KSwKICAgICAgICAgICAgIHJpZ2h0
VG9MZWZ0KHJpZ2h0VG9MZWZ0KSwKLSAgICAgICAgICAgIGRlcHRoKDApIHt9CisgICAgICAgICAg
ICBkZXB0aCgwKSwKKyAgICAgICAgICAgIG1heERlcHRoKDApIHt9CiAgICAgdmlydHVhbCB+VElu
dGVybVRyYXZlcnNlcigpIHt9OwogCiAgICAgdmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJbnRl
cm1TeW1ib2wqKSB7fQpAQCAtNTUwLDcgKzU2MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCopIHtyZXR1cm4gdHJ1ZTt9CiAg
ICAgdmlydHVhbCBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKikg
e3JldHVybiB0cnVlO30KIAotICAgIHZvaWQgaW5jcmVtZW50RGVwdGgoKSB7ZGVwdGgrKzt9Cisg
ICAgaW50IGdldE1heERlcHRoKCkgY29uc3Qge3JldHVybiBtYXhEZXB0aDt9CisgICAgdm9pZCBp
bmNyZW1lbnREZXB0aCgpIHtkZXB0aCsrOyBtYXhEZXB0aCA9IHN0ZDo6bWF4KG1heERlcHRoLCBk
ZXB0aCk7IH0KICAgICB2b2lkIGRlY3JlbWVudERlcHRoKCkge2RlcHRoLS07fQogCiAgICAgLy8g
UmV0dXJuIHRoZSBvcmlnaW5hbCBuYW1lIGlmIGhhc2ggZnVuY3Rpb24gcG9pbnRlciBpcyBOVUxM
OwpAQCAtNTY0LDYgKzU3NSw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIGludCBkZXB0
aDsKKyAgICBpbnQgbWF4RGVwdGg7CiB9OwogCiAjZW5kaWYgLy8gX19JTlRFUk1FRElBVEVfSApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRp
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L2xvY2FsaW50ZXJtZWRpYXRlLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9sb2NhbGludGVybWVkaWF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSwzNCArMjUsMzMgQEAgcHVibGljOiAgICAKICAgICBQT09MX0FMTE9DQVRPUl9ORVdf
REVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpCiAKICAgICBUSW50ZXJtZWRpYXRlKFRJbmZvU2lu
ayYgaSkgOiBpbmZvU2luayhpKSB7IH0KLSAgICBUSW50ZXJtU3ltYm9sKiBhZGRTeW1ib2woaW50
IElkLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFR5cGUmLCBUU291cmNlTG9jKTsKKyAgICBUSW50
ZXJtU3ltYm9sKiBhZGRTeW1ib2woaW50IElkLCBjb25zdCBUU3RyaW5nJiwgY29uc3QgVFR5cGUm
LCBjb25zdCBUU291cmNlTG9jJik7CiAgICAgVEludGVybVR5cGVkKiBhZGRDb252ZXJzaW9uKFRP
cGVyYXRvciwgY29uc3QgVFR5cGUmLCBUSW50ZXJtVHlwZWQqKTsKLSAgICBUSW50ZXJtVHlwZWQq
IGFkZEJpbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1U
eXBlZCogcmlnaHQsIFRTb3VyY2VMb2MsIFRTeW1ib2xUYWJsZSYpOwotICAgIFRJbnRlcm1UeXBl
ZCogYWRkQXNzaWduKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlw
ZWQqIHJpZ2h0LCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZEluZGV4KFRPcGVy
YXRvciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBUU291cmNl
TG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZFVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRl
cm1Ob2RlKiBjaGlsZCwgVFNvdXJjZUxvYywgVFN5bWJvbFRhYmxlJik7Ci0gICAgVEludGVybUFn
Z3JlZ2F0ZSogZ3Jvd0FnZ3JlZ2F0ZShUSW50ZXJtTm9kZSogbGVmdCwgVEludGVybU5vZGUqIHJp
Z2h0LCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlKiBtYWtlQWdncmVnYXRlKFRJ
bnRlcm1Ob2RlKiBub2RlLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlKiBzZXRB
Z2dyZWdhdGVPcGVyYXRvcihUSW50ZXJtTm9kZSosIFRPcGVyYXRvciwgVFNvdXJjZUxvYyk7Ci0g
ICAgVEludGVybU5vZGUqICBhZGRTZWxlY3Rpb24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJt
Tm9kZVBhaXIgY29kZSwgVFNvdXJjZUxvYyk7Ci0gICAgVEludGVybVR5cGVkKiBhZGRTZWxlY3Rp
b24oVEludGVybVR5cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIHRydWVCbG9jaywgVEludGVybVR5
cGVkKiBmYWxzZUJsb2NrLCBUU291cmNlTG9jKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbW1h
KFRJbnRlcm1UeXBlZCogbGVmdCwgVEludGVybVR5cGVkKiByaWdodCwgVFNvdXJjZUxvYyk7Ci0g
ICAgVEludGVybUNvbnN0YW50VW5pb24qIGFkZENvbnN0YW50VW5pb24oQ29uc3RhbnRVbmlvbios
IGNvbnN0IFRUeXBlJiwgVFNvdXJjZUxvYyk7CisgICAgVEludGVybVR5cGVkKiBhZGRCaW5hcnlN
YXRoKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBsZWZ0LCBUSW50ZXJtVHlwZWQqIHJpZ2h0
LCBjb25zdCBUU291cmNlTG9jJiwgVFN5bWJvbFRhYmxlJik7CisgICAgVEludGVybVR5cGVkKiBh
ZGRBc3NpZ24oVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCog
cmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtVHlwZWQqIGFkZEluZGV4KFRP
cGVyYXRvciBvcCwgVEludGVybVR5cGVkKiBiYXNlLCBUSW50ZXJtVHlwZWQqIGluZGV4LCBjb25z
dCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRVbmFyeU1hdGgoVE9wZXJhdG9y
IG9wLCBUSW50ZXJtTm9kZSogY2hpbGQsIGNvbnN0IFRTb3VyY2VMb2MmLCBUU3ltYm9sVGFibGUm
KTsKKyAgICBUSW50ZXJtQWdncmVnYXRlKiBncm93QWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBsZWZ0
LCBUSW50ZXJtTm9kZSogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtQWdn
cmVnYXRlKiBtYWtlQWdncmVnYXRlKFRJbnRlcm1Ob2RlKiBub2RlLCBjb25zdCBUU291cmNlTG9j
Jik7CisgICAgVEludGVybUFnZ3JlZ2F0ZSogc2V0QWdncmVnYXRlT3BlcmF0b3IoVEludGVybU5v
ZGUqLCBUT3BlcmF0b3IsIGNvbnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtTm9kZSogIGFk
ZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQqIGNvbmQsIFRJbnRlcm1Ob2RlUGFpciBjb2RlLCBjb25z
dCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRTZWxlY3Rpb24oVEludGVybVR5
cGVkKiBjb25kLCBUSW50ZXJtVHlwZWQqIHRydWVCbG9jaywgVEludGVybVR5cGVkKiBmYWxzZUJs
b2NrLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBhZGRDb21tYShUSW50
ZXJtVHlwZWQqIGxlZnQsIFRJbnRlcm1UeXBlZCogcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MmKTsK
KyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogYWRkQ29uc3RhbnRVbmlvbihDb25zdGFudFVuaW9u
KiwgY29uc3QgVFR5cGUmLCBjb25zdCBUU291cmNlTG9jJik7CiAgICAgVEludGVybVR5cGVkKiBw
cm9tb3RlQ29uc3RhbnRVbmlvbihUQmFzaWNUeXBlLCBUSW50ZXJtQ29uc3RhbnRVbmlvbiopIDsK
LSAgICBib29sIHBhcnNlQ29uc3RUcmVlKFRTb3VyY2VMb2MsIFRJbnRlcm1Ob2RlKiwgQ29uc3Rh
bnRVbmlvbiosIFRPcGVyYXRvciwgVFN5bWJvbFRhYmxlJiwgVFR5cGUsIGJvb2wgc2luZ2xlQ29u
c3RhbnRQYXJhbSA9IGZhbHNlKTsgICAgICAgIAotICAgIFRJbnRlcm1Ob2RlKiBhZGRMb29wKFRM
b29wVHlwZSwgVEludGVybU5vZGUqLCBUSW50ZXJtVHlwZWQqLCBUSW50ZXJtVHlwZWQqLCBUSW50
ZXJtTm9kZSosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3Bl
cmF0b3IsIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3BlcmF0
b3IsIFRJbnRlcm1UeXBlZCosIFRTb3VyY2VMb2MpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkU3dp
enpsZShUVmVjdG9yRmllbGRzJiwgVFNvdXJjZUxvYyk7CisgICAgYm9vbCBwYXJzZUNvbnN0VHJl
ZShjb25zdCBUU291cmNlTG9jJiwgVEludGVybU5vZGUqLCBDb25zdGFudFVuaW9uKiwgVE9wZXJh
dG9yLCBUU3ltYm9sVGFibGUmLCBUVHlwZSwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFtID0gZmFs
c2UpOyAgICAgICAgCisgICAgVEludGVybU5vZGUqIGFkZExvb3AoVExvb3BUeXBlLCBUSW50ZXJt
Tm9kZSosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1UeXBlZCosIFRJbnRlcm1Ob2RlKiwgY29uc3Qg
VFNvdXJjZUxvYyYpOworICAgIFRJbnRlcm1CcmFuY2gqIGFkZEJyYW5jaChUT3BlcmF0b3IsIGNv
bnN0IFRTb3VyY2VMb2MmKTsKKyAgICBUSW50ZXJtQnJhbmNoKiBhZGRCcmFuY2goVE9wZXJhdG9y
LCBUSW50ZXJtVHlwZWQqLCBjb25zdCBUU291cmNlTG9jJik7CisgICAgVEludGVybVR5cGVkKiBh
ZGRTd2l6emxlKFRWZWN0b3JGaWVsZHMmLCBjb25zdCBUU291cmNlTG9jJik7CiAgICAgYm9vbCBw
b3N0UHJvY2VzcyhUSW50ZXJtTm9kZSopOwotCXZvaWQgcmVtb3ZlKFRJbnRlcm1Ob2RlKik7Cisg
ICAgdm9pZCByZW1vdmUoVEludGVybU5vZGUqKTsKICAgICB2b2lkIG91dHB1dFRyZWUoVEludGVy
bU5vZGUqKTsKLSAgICAKLXByb3RlY3RlZDoKLSAgICBUSW5mb1NpbmsmIGluZm9TaW5rOwogCiBw
cml2YXRlOgogICAgIHZvaWQgb3BlcmF0b3I9KFRJbnRlcm1lZGlhdGUmKTsgLy8gcHJldmVudCBh
c3NpZ25tZW50cworCisgICAgVEluZm9TaW5rJiBpbmZvU2luazsKIH07CiAKICNlbmRpZiAvLyBf
TE9DQUxfSU5URVJNRURJQVRFX0lOQ0xVREVEXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wYXJzZUNvbnN0LmNwcAkocmV2aXNpb24gMTUyOTc5
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3BhcnNlQ29uc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNiArMzgsMTYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
dmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCopOwogICAgIGJvb2wgdmlzaXRCcmFu
Y2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqKTsKIAotICAgIGludCBpbmRleDsKKyAgICBz
aXplX3QgaW5kZXg7CiAgICAgQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheTsKICAgICBUVHlwZSB0
eXBlOwogICAgIFRPcGVyYXRvciBjb25zdHJ1Y3RvclR5cGU7CiAgICAgYm9vbCBzaW5nbGVDb25z
dGFudFBhcmFtOwogICAgIFRJbmZvU2luayYgaW5mb1Npbms7CiAgICAgVFN5bWJvbFRhYmxlJiBz
eW1ib2xUYWJsZTsKLSAgICBpbnQgc2l6ZTsgLy8gc2l6ZSBvZiB0aGUgY29uc3RydWN0b3IgKCA0
IGZvciB2ZWM0KQorICAgIHNpemVfdCBzaXplOyAvLyBzaXplIG9mIHRoZSBjb25zdHJ1Y3RvciAo
IDQgZm9yIHZlYzQpCiAgICAgYm9vbCBpc01hdHJpeDsKLSAgICBpbnQgbWF0cml4U2l6ZTsgLy8g
ZGltZW5zaW9uIG9mIHRoZSBtYXRyaXggKG5vbWluYWwgc2l6ZSBhbmQgbm90IHRoZSBpbnN0YW5j
ZSBzaXplKQorICAgIHNpemVfdCBtYXRyaXhTaXplOyAvLyBkaW1lbnNpb24gb2YgdGhlIG1hdHJp
eCAobm9taW5hbCBzaXplIGFuZCBub3QgdGhlIGluc3RhbmNlIHNpemUpCiB9OwogCiAvLwpAQCAt
NjEsNyArNjEsNyBAQCBwcm90ZWN0ZWQ6CiAKIHZvaWQgVENvbnN0VHJhdmVyc2VyOjp2aXNpdFN5
bWJvbChUSW50ZXJtU3ltYm9sKiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShF
UHJlZml4SW50ZXJuYWxFcnJvciwgIlN5bWJvbCBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0
cnVjdG9yIiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVBy
ZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIlN5bWJvbCBOb2RlIGZvdW5kIGlu
IGNvbnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgcmV0dXJuOwogCiB9CkBAIC03NCwxMiArNzQs
MTIgQEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KFZpc2l0IAogICAgICAgICBU
U3RyaW5nIGJ1ZjsKICAgICAgICAgYnVmLmFwcGVuZCgiJ2NvbnN0cnVjdG9yJyA6IGFzc2lnbmlu
ZyBub24tY29uc3RhbnQgdG8gIik7CiAgICAgICAgIGJ1Zi5hcHBlbmQodHlwZS5nZXRDb21wbGV0
ZVN0cmluZygpKTsKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwg
YnVmLmNfc3RyKCksIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4RXJyb3IsIG5vZGUtPmdldExpbmUoKSwgYnVmLmNfc3RyKCkpOwogICAgICAg
ICBlcnJvciA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsgIAogICAgIH0KIAotICAgaW5m
b1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQmluYXJ5IE5vZGUgZm91
bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5lKCkpOworICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksICJC
aW5hcnkgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIpOwogICAgIAogICAgIHJl
dHVybiBmYWxzZTsKIH0KQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZp
c2l0VW5hcnkoVmlzaXQgdgogICAgIFRTdHJpbmcgYnVmOwogICAgIGJ1Zi5hcHBlbmQoIidjb25z
dHJ1Y3RvcicgOiBhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvICIpOwogICAgIGJ1Zi5hcHBlbmQo
dHlwZS5nZXRDb21wbGV0ZVN0cmluZygpKTsKLSAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVBy
ZWZpeEVycm9yLCBidWYuY19zdHIoKSwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoRVByZWZpeEVycm9yLCBub2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigpKTsK
ICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOyAgCiB9CkBAIC0xMDAsNyArMTAw
LDcgQEAgYm9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpcwogICAgICAgICBU
U3RyaW5nIGJ1ZjsKICAgICAgICAgYnVmLmFwcGVuZCgiJ2NvbnN0cnVjdG9yJyA6IGFzc2lnbmlu
ZyBub24tY29uc3RhbnQgdG8gIik7CiAgICAgICAgIGJ1Zi5hcHBlbmQodHlwZS5nZXRDb21wbGV0
ZVN0cmluZygpKTsKLSAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJvciwg
YnVmLmNfc3RyKCksIG5vZGUtPmdldExpbmUoKSk7CisgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZShFUHJlZml4RXJyb3IsIG5vZGUtPmdldExpbmUoKSwgYnVmLmNfc3RyKCkpOwogICAgICAg
ICBlcnJvciA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsgIAogICAgIH0KQEAgLTE0NCwy
NCArMTQ0LDMxIEBAIGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXMKIAog
Ym9vbCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJt
U2VsZWN0aW9uKiBub2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50
ZXJuYWxFcnJvciwgIlNlbGVjdGlvbiBOb2RlIGZvdW5kIGluIGNvbnN0YW50IGNvbnN0cnVjdG9y
Iiwgbm9kZS0+Z2V0TGluZSgpKTsKKyAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeElu
dGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwgIlNlbGVjdGlvbiBOb2RlIGZvdW5kIGluIGNv
bnN0YW50IGNvbnN0cnVjdG9yIik7CiAgICAgZXJyb3IgPSB0cnVlOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbihUSW50ZXJt
Q29uc3RhbnRVbmlvbiogbm9kZSkKIHsKKyAgICBpZiAoIW5vZGUtPmdldFVuaW9uQXJyYXlQb2lu
dGVyKCkpCisgICAgeworICAgICAgICAvLyBUaGUgY29uc3RhbnQgd2FzIG5vdCBpbml0aWFsaXpl
ZCwgdGhpcyBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gbG9nZ2VkCisgICAgICAgIGFzc2VydChp
bmZvU2luay5pbmZvLnNpemUoKSAhPSAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IENvbnN0YW50VW5pb24qIGxlZnRVbmlvbkFycmF5ID0gdW5pb25BcnJheTsKLSAgICBpbnQgaW5z
dGFuY2VTaXplID0gdHlwZS5nZXRPYmplY3RTaXplKCk7CisgICAgc2l6ZV90IGluc3RhbmNlU2l6
ZSA9IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwogCiAgICAgaWYgKGluZGV4ID49IGluc3RhbmNlU2l6
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFzaW5nbGVDb25zdGFudFBhcmFtKSB7Ci0g
ICAgICAgIGludCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKKyAgICAg
ICAgc2l6ZV90IHNpemUgPSBub2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogICAgIAog
ICAgICAgICBDb25zdGFudFVuaW9uICpyaWdodFVuaW9uQXJyYXkgPSBub2RlLT5nZXRVbmlvbkFy
cmF5UG9pbnRlcigpOwotICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzaXplOyBpKyspIHsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgICAgIGlm
IChpbmRleCA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgbGVmdFVuaW9uQXJyYXlbaW5kZXhdID0gcmlnaHRVbmlvbkFycmF5W2ldOwpAQCAtMTY5
LDExICsxNzYsMTEgQEAgdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbgog
ICAgICAgICAgICAgKGluZGV4KSsrOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
aW50IHRvdGFsU2l6ZSA9IGluZGV4ICsgc2l6ZTsKKyAgICAgICAgc2l6ZV90IHRvdGFsU2l6ZSA9
IGluZGV4ICsgc2l6ZTsKICAgICAgICAgQ29uc3RhbnRVbmlvbiAqcmlnaHRVbmlvbkFycmF5ID0g
bm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKICAgICAgICAgaWYgKCFpc01hdHJpeCkgewot
ICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSBpbmRl
eDsgaSA8IHRvdGFsU2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBzaXplX3QgY291bnQgPSAwOwor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGluZGV4OyBpIDwgdG90YWxTaXplOyBpKyspIHsK
ICAgICAgICAgICAgICAgICBpZiAoaSA+PSBpbnN0YW5jZVNpemUpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMTg1LDkgKzE5Miw5IEBAIHZvaWQgVENvbnN0VHJhdmVyc2VyOjp2
aXNpdENvbnN0YW50VW5pb24KICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIHsgIC8vIGZvciBtYXRyaXggY29uc3RydWN0b3JzCi0gICAg
ICAgICAgICBpbnQgY291bnQgPSAwOwotICAgICAgICAgICAgaW50IGVsZW1lbnQgPSBpbmRleDsK
LSAgICAgICAgICAgIGZvciAoaW50IGkgPSBpbmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsrKSB7Cisg
ICAgICAgICAgICBzaXplX3QgY291bnQgPSAwOworICAgICAgICAgICAgc2l6ZV90IGVsZW1lbnQg
PSBpbmRleDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBpbmRleDsgaSA8IHRvdGFsU2l6
ZTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYgKGkgPj0gaW5zdGFuY2VTaXplKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgLSBpID09
IDAgfHwgKGkgLSBlbGVtZW50KSAlIChtYXRyaXhTaXplICsgMSkgPT0gMCApCkBAIC0yMDYsMTQg
KzIxMywxNCBAQCB2b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uCiAKIGJv
b2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wKiBu
b2RlKQogewotICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwg
Ikxvb3AgTm9kZSBmb3VuZCBpbiBjb25zdGFudCBjb25zdHJ1Y3RvciIsIG5vZGUtPmdldExpbmUo
KSk7CisgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBub2Rl
LT5nZXRMaW5lKCksICJMb29wIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiKTsK
ICAgICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFRDb25zdFRy
YXZlcnNlcjo6dmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2gqIG5vZGUpCiB7
Ci0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCAiQnJhbmNo
IE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiLCBub2RlLT5nZXRMaW5lKCkpOwor
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0
TGluZSgpLCAiQnJhbmNoIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiKTsKICAg
ICBlcnJvciA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjIzLDcgKzIzMCw3IEBA
IGJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdEJyYW5jaChWaXNpdCAKIC8vIEluZGl2aWR1YWwg
ZnVuY3Rpb25zIGNhbiBiZSBpbml0aWFsaXplZCB0byAwIHRvIHNraXAgcHJvY2Vzc2luZyBvZiB0
aGF0CiAvLyB0eXBlIG9mIG5vZGUuICBJdCdzIGNoaWxkcmVuIHdpbGwgc3RpbGwgYmUgcHJvY2Vz
c2VkLgogLy8KLWJvb2wgVEludGVybWVkaWF0ZTo6cGFyc2VDb25zdFRyZWUoVFNvdXJjZUxvYyBs
aW5lLCBUSW50ZXJtTm9kZSogcm9vdCwgQ29uc3RhbnRVbmlvbiogdW5pb25BcnJheSwgVE9wZXJh
dG9yIGNvbnN0cnVjdG9yVHlwZSwgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSwgVFR5cGUgdCwg
Ym9vbCBzaW5nbGVDb25zdGFudFBhcmFtKQorYm9vbCBUSW50ZXJtZWRpYXRlOjpwYXJzZUNvbnN0
VHJlZShjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtTm9kZSogcm9vdCwgQ29uc3RhbnRV
bmlvbiogdW5pb25BcnJheSwgVE9wZXJhdG9yIGNvbnN0cnVjdG9yVHlwZSwgVFN5bWJvbFRhYmxl
JiBzeW1ib2xUYWJsZSwgVFR5cGUgdCwgYm9vbCBzaW5nbGVDb25zdGFudFBhcmFtKQogewogICAg
IGlmIChyb290ID09IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yX2NvbW1vbi52Y3hwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
X2NvbW1vbi52Y3hwcm9qCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3JfY29tbW9uLnZjeHByb2oJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjczIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0K
KzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5z
PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0K
KyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFByb2pl
Y3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmlndXJh
dGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRm
b3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3Vy
YXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1Zzwv
Q29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAgPC9Q
cm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9
IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3Vy
YXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9qZWN0
Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVh
c2V8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0K
KyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0
aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+
DQorICAgIDxQcm9qZWN0R3VpZD57NUIzQTZEQjgtMUU3RS00MEQ3LTkyQjktREE4QUFFNjE5RkFE
fTwvUHJvamVjdEd1aWQ+DQorICAgIDxSb290TmFtZXNwYWNlPmNvbXBpbGVyPC9Sb290TmFtZXNw
YWNlPg0KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQorICA8L1Byb3BlcnR5R3Jv
dXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5E
ZWZhdWx0LnByb3BzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRp
b24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlv
blR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxX
aG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0K
KyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0
aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRp
b25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0Pg0KKyAgPC9Q
cm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4N
CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBl
Pg0KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0Pg0KKyAgICA8V2hvbGVQ
cm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCisgIDwv
UHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0K
KyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+
DQorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5
R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNw
cC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0K
KyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVl
dHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBE
YXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJl
bD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMo
JyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBM
YWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPElt
cG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9
IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29u
ZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9y
dEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPElt
cG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAv
Pg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9z
IiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAu
NDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRp
cikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKENvbmZpZ3VyYXRp
b24pXGNvbW1vblw8L0ludERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9y
bSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQo
Q29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikk
KENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlv
bilcY29tbW9uXDwvSW50RGlyPg0KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZv
cm0pXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQorICAgIDxJbnREaXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoUGxhdGZvcm0p
XCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SXRl
bURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlv
bj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9qZWN0RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4v
aW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVC
VUc7X0xJQjtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVi
dWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVu
YWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJh
cnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGls
ZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xl
dmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRy
dWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxl
U3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7
NDcxODslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1E
ZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2
NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4NCisg
ICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKTskKFByb2plY3REaXIpLi4vOyQo
UHJvamVjdERpcikuLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmlu
aXRpb25zPldJTjMyO19ERUJVRztfTElCO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1B
WDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQor
ICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAgIDxCYXNp
Y1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KKyAg
ICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5Pg0K
KyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0K
KyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0
V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+
DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0
NDs0MjQ1OzQyNjc7NDUxMjs0NzAyOzQ3MTg7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rp
c2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxl
Pg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8
SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5z
aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcik7
JChQcm9qZWN0RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9O
T19ERVBSRUNBVEU7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmluaXRp
b25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11
bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4N
CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0
PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRX
YXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0
YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dh
cm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0NzE4OyUoRGlz
YWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgPC9D
bENvbXBpbGU+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25H
cm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyI+DQorICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1Rhcmdl
dEVudmlyb25tZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9w
dGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlv
bkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKTskKFByb2plY3REaXIp
Li4vOyQoUHJvamVjdERpcikuLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfTElCO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtO
T01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwv
UnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJl
Y29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZl
bD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9y
Pg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0
MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDI2Nzs0NTEyOzQ3MDI7NDcxODslKERpc2FibGVTcGVj
aWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAiIC8+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iQ29tcGlsZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
ImRlYnVnLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEZXRlY3RDYWxsRGVwdGgu
Y3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpYWdub3N0aWNzLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXJlY3RpdmVIYW5kbGVyLmNwcCIgLz4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJGb3JMb29wVW5yb2xsLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJJbmZvU2luay5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlh
bGl6ZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZURsbC5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW50ZXJtZWRpYXRlLmNwcCIgLz4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJpbnRlcm1PdXQuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IkludGVybVRyYXZlcnNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJN
YXBMb25nVmFyaWFibGVOYW1lcy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ib3Nz
b3VyY2Vfd2luLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJwYXJzZUNvbnN0LmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQYXJzZUhlbHBlci5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iUG9vbEFsbG9jLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJRdWFsaWZpZXJBbGl2ZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
UmVtb3ZlVHJlZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2hhZGVyTGFuZy5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU3ltYm9sVGFibGUuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9InV0aWwuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IlZhbGlkYXRlTGltaXRhdGlvbnMuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IlZhcmlhYmxlSW5mby5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVmFyaWFibGVQ
YWNrZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Imdsc2xhbmdfbGV4LmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJnbHNsYW5nX3RhYi5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoLmNwcCIgLz4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhCdWlsZGVyLmNwcCIg
Lz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhPdXRw
dXQuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lH
cmFwaFRyYXZlcnNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJ0aW1pbmdcUmVz
dHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0idGltaW5nXFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxjb21waWxlclxBcnJheUJvdW5kc0NsYW1wZXIu
Y3BwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q3VzdG9tQnVp
bGQgSW5jbHVkZT0iZ2xzbGFuZy5sIj4NCisgICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+DQorICAgICAgPC9NZXNz
YWdlPg0KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgICA8L0NvbW1hbmQ+DQorICAgICAgPEFkZGl0
aW9uYWxJbnB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciPiUoQWRkaXRpb25hbElucHV0cyk8L0FkZGl0aW9uYWxJbnB1dHM+DQorICAg
ICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciPiUoT3V0cHV0cyk8L091dHB1dHM+DQorICAgICAgPE1lc3NhZ2UgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAg
ICA8L01lc3NhZ2U+DQorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgICA8L0NvbW1hbmQ+DQorICAgICAg
PEFkZGl0aW9uYWxJbnB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj4lKEFkZGl0aW9uYWxJbnB1dHMpPC9BZGRpdGlvbmFsSW5wdXRzPg0K
KyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8eDY0JyI+JShPdXRwdXRzKTwvT3V0cHV0cz4NCisgICAgICA8TWVzc2FnZSBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4N
CisgICAgICA8L01lc3NhZ2U+DQorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgICAgPC9Db21tYW5k
Pg0KKyAgICAgIDxBZGRpdGlvbmFsSW5wdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiUoQWRkaXRpb25hbElucHV0cyk8L0FkZGl0
aW9uYWxJbnB1dHM+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JShPdXRwdXRzKTwvT3V0cHV0cz4NCisg
ICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAgIDxDb21tYW5kIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCisg
ICAgICA8L0NvbW1hbmQ+DQorICAgICAgPEFkZGl0aW9uYWxJbnB1dHMgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiUoQWRkaXRpb25hbElu
cHV0cyk8L0FkZGl0aW9uYWxJbnB1dHM+DQorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiUoT3V0cHV0cyk8L091
dHB1dHM+DQorICAgIDwvQ3VzdG9tQnVpbGQ+DQorICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSJn
bHNsYW5nLnkiPg0KKyAgICAgIDxNZXNzYWdlIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCisgICAgICA8L01lc3NhZ2U+DQorICAgICAg
PENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPg0KKyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JShPdXRwdXRz
KTwvT3V0cHV0cz4NCisgICAgICA8TWVzc2FnZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICAgIDwvTWVzc2FnZT4NCisgICAgICA8
Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fHg2NCciPg0KKyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiUoT3V0cHV0cyk8L091
dHB1dHM+DQorICAgICAgPE1lc3NhZ2UgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgICAgPC9NZXNzYWdlPg0KKyAgICAgIDxD
b21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPg0KKyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4lKE91dHB1
dHMpPC9PdXRwdXRzPg0KKyAgICAgIDxNZXNzYWdlIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCisgICAgICA8L01lc3NhZ2U+DQorICAg
ICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfHg2NCciPg0KKyAgICAgIDwvQ29tbWFuZD4NCisgICAgICA8T3V0cHV0cyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JShPdXRw
dXRzKTwvT3V0cHV0cz4NCisgICAgPC9DdXN0b21CdWlsZD4NCisgIDwvSXRlbUdyb3VwPg0KKyAg
PEl0ZW1Hcm91cD4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCYXNlVHlwZXMuaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkNvbW1vbi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IkNvbnN0YW50VW5pb24uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJkZWJ1Zy5o
IiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRldGVjdENhbGxEZXB0aC5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpYWdub3N0aWNzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iRGlyZWN0aXZlSGFuZGxlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IkZvckxvb3BVbnJvbGwuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJIYXNoTmFtZXMu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbmZvU2luay5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IkluaXRpYWxpemUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJJbml0aWFsaXplRGxsLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6
ZUdsb2JhbHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbml0aWFsaXplUGFyc2VD
b250ZXh0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iaW50ZXJtZWRpYXRlLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibG9jYWxpbnRlcm1lZGlhdGUuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJNYXBMb25nVmFyaWFibGVOYW1lcy5oIiAvPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ik1NYXAuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJvc2lu
Y2x1ZGUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJQYXJzZUhlbHBlci5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlBvb2xBbGxvYy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IlF1YWxpZmllckFsaXZlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
UmVtb3ZlVHJlZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlbmFtZUZ1bmN0aW9u
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxHTFNMQU5HXFNo
YWRlckxhbmcuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTaEhhbmRsZS5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlN5bWJvbFRhYmxlLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iVHlwZXMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJ1dGlsLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVmFsaWRhdGVMaW1pdGF0aW9ucy5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlZhcmlhYmxlSW5mby5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IlZhcmlhYmxlUGFja2VyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iZ2xzbGFuZ190YWIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJ0aW1pbmdcUmVz
dHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
InRpbWluZ1xSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhPdXRwdXQuaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx0aGlyZF9wYXJ0eVxjb21waWxlclxBcnJheUJvdW5k
c0NsYW1wZXIuaCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZD
VGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRHcm91cCBM
YWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJvamVjdD4K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yX2Nv
bW1vbi52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3JfY29tbW9uLnZjeHByb2ouZmlsdGVycwkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
X2NvbW1vbi52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcxIEBACivv
u788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IFRvb2xz
VmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9w
ZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0i
U291cmNlIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00
Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5z
aW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9u
cz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzXGdl
bmVyYXRlZCI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2ViOGRhMTU3LWIyOWMtNDNjMy04
ODBkLTU0Njc5ZTE3NmRjNX08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAg
ICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlc1xkZXBncmFwaCI+DQorICAgICAgPFVuaXF1
ZUlkZW50aWZpZXI+e2I1NDEwZDNhLWMzYzgtNGFlNi04NDNhLWIwMDBkNjUyNjMyZX08L1VuaXF1
ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJj
ZSBGaWxlc1x0aW1pbmciPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnthOTg0NzYxMS1kY2Q1
LTRjODktODI2Mi1hMjJiOTZjN2M5OGR9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRl
cj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPg0KKyAgICAgIDxVbmlxdWVJ
ZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJ
ZGVudGlmaWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwv
RXh0ZW5zaW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVy
IEZpbGVzXGdlbmVyYXRlZCI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezA5NGY3MTE1LTM1
ZDMtNGM2My04NzBjLWFiNWYzOTNkYzJjMn08L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmls
dGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlc1x0aW1pbmciPg0KKyAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPns1ZjU3NDJlOS0xNWUxLTQzYjQtYjFlNy0wYzExOGJlMTRlMDR9
PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRl
PSJIZWFkZXIgRmlsZXNcZGVwZ3JhcGgiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntjNDAw
N2UzNS0zYzExLTQ0ZDYtOTVmNy1iYjgxZGI1MjgwNjh9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAg
ICA8L0ZpbHRlcj4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IkNvbXBpbGVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iZGVi
dWcuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEZXRlY3RDYWxsRGVwdGguY3BwIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaWFnbm9zdGljcy5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IkRpcmVjdGl2ZUhhbmRsZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJj
ZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJGb3JMb29wVW5yb2xsLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSW5mb1Np
bmsuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbml0aWFsaXplLmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iSW5pdGlhbGl6ZURsbC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IkluaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJJbnRlcm1lZGlhdGUuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJpbnRl
cm1PdXQuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbnRlcm1UcmF2ZXJzZS5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxl
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ik1hcExvbmdWYXJpYWJsZU5hbWVzLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ib3Nzb3VyY2Vfd2luLmNwcCI+DQorICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0icGFyc2VDb25zdC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlBh
cnNlSGVscGVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUG9vbEFsbG9jLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUXVhbGlmaWVyQWxpdmUuY3BwIj4NCisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJSZW1vdmVUcmVlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2Ug
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iU2hhZGVyTGFuZy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlN5bWJvbFRhYmxl
LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0idXRpbC5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IlZhbGlkYXRlTGltaXRhdGlvbnMuY3BwIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJWYXJpYWJsZUluZm8uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwv
RmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJWYXJp
YWJsZVBhY2tlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQor
ICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Imdsc2xhbmdfbGV4LmNw
cCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcZ2VuZXJhdGVkPC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Imdsc2xhbmdfdGFiLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcZ2VuZXJhdGVkPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERlcGVuZGVuY3lH
cmFwaC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRlcGdyYXBoXERl
cGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xk
ZXBncmFwaDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlc1xkZXBncmFwaDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJkZXBncmFwaFxEZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQorICAgIDwv
Q2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InRpbWluZ1xSZXN0cmljdEZyYWdt
ZW50U2hhZGVyVGltaW5nLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcdGltaW5n
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InRp
bWluZ1xSZXN0cmljdFZlcnRleFNoYWRlclRpbWluZy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzXHRpbWluZzwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSJBcnJheUJvdW5kc0NsYW1wZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNv
dXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbUdyb3VwPg0K
KyAgPEl0ZW1Hcm91cD4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCYXNlVHlwZXMuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCI+DQorICAg
ICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iQ29tbW9uLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IkNvbnN0YW50VW5pb24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVidWcuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGV0ZWN0Q2FsbERlcHRoLmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IkRpYWdub3N0aWNzLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRp
cmVjdGl2ZUhhbmRsZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRm9yTG9vcFVucm9s
bC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbmZvU2luay5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJJbml0aWFsaXplLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Iklu
aXRpYWxpemVEbGwuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZUdsb2Jh
bHMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVk
ZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJpbnRlcm1lZGlhdGUuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0ibG9jYWxpbnRlcm1lZGlhdGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
TU1hcC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJvc2luY2x1ZGUuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iUGFyc2VIZWxwZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iUG9vbEFsbG9jLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQor
ICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlF1YWxpZmllckFsaXZl
LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlJlbW92ZVRyZWUuaCI+DQorICAgICAgPEZp
bHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iUmVuYW1lRnVuY3Rpb24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cLi5caW5jbHVkZVxHTFNMQU5HXFNoYWRlckxhbmcuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iU2hIYW5kbGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU3ltYm9sVGFi
bGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVHlwZXMuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0idXRpbC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJWYWxpZGF0ZUxp
bWl0YXRpb25zLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAg
IDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlZhcmlhYmxlSW5mby5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJWYXJpYWJsZVBhY2tlci5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJnbHNsYW5nX3RhYi5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
c1xnZW5lcmF0ZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0idGltaW5nXFJlc3RyaWN0RnJhZ21lbnRTaGFkZXJUaW1pbmcuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXNcdGltaW5nPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InRpbWluZ1xSZXN0cmljdFZlcnRleFNoYWRlclRpbWlu
Zy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1x0aW1pbmc8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iZGVwZ3JhcGhcRGVwZW5kZW5j
eUdyYXBoLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImRlcGdyYXBoXERl
cGVuZGVuY3lHcmFwaEJ1aWxkZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcZGVw
Z3JhcGg8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iZGVwZ3JhcGhcRGVwZW5kZW5jeUdyYXBoT3V0cHV0LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzXGRlcGdyYXBoPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ikhhc2hOYW1lcy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJB
cnJheUJvdW5kc0NsYW1wZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQor
ICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSJnbHNsYW5nLmwiPg0KKyAgICAgIDxGaWx0ZXI+U291
cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ3VzdG9tQnVpbGQ+DQorICAgIDxDdXN0b21CdWls
ZCBJbmNsdWRlPSJnbHNsYW5nLnkiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0
ZXI+DQorICAgIDwvQ3VzdG9tQnVpbGQ+DQorICA8L0l0ZW1Hcm91cD4NCis8L1Byb2plY3Q+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3JfaGxzbC52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yX2hsc2wudmN4cHJvagko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yX2hsc2wudmN4cHJvagkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjQgQEAKK++7vzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFByb2plY3QgRGVmYXVsdFRh
cmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1p
Y3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQorICA8SXRlbUdyb3VwIExhYmVs
PSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5j
bHVkZT0iRGVidWd8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1
cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVj
dENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1
Z3x4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAg
ICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9u
Pg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQor
ICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxh
dGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAg
ICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPg0KKyAgICAgIDxD
b25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPng2
NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICA8L0l0ZW1Hcm91
cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4NCisgICAgPFByb2plY3RHdWlk
Pns1NjIwRjBFNC02QzQzLTQ5QkMtQTE3OC1CODA0RTFBMEMzQTd9PC9Qcm9qZWN0R3VpZD4NCisg
ICAgPFJvb3ROYW1lc3BhY2U+Q3Jvc3NDb21waWxlckhMU0w8L1Jvb3ROYW1lc3BhY2U+DQorICAg
IDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJ
bXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJv
cHMiIC8+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAg
IDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisg
ICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dy
YW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCisg
ICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPg0K
KyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCisgIDwvUHJvcGVydHlH
cm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxD
b25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAg
PENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICAgIDxXaG9sZVByb2dyYW1P
cHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KKyAgPC9Qcm9wZXJ0
eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+DQorICAgIDxD
b25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCisgICAg
PENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+
DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9w
cyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0KKyAgPC9J
bXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0K
KyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJv
cGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0i
TG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4
NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3Vw
Pg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQ
cm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxh
dGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAg
PC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPg0K
KyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTku
MTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENv
bmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKENvbmZpZ3VyYXRpb24pXGhs
c2xcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRp
b24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlvbilcaGxzbFw8L0lu
dERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0
aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilc
PC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25m
aWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25maWd1
cmF0aW9uKVw8L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJdGVtRGVmaW5pdGlv
bkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVk
PC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQ
cm9qZWN0RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9OT19X
QVJOSU5HUztOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxk
Pg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50
aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1
bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+
DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4N
CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEy
Nzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdz
KTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVt
RGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENv
bXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAg
ICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25F
eHBhbnNpb24+DQorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5j
dGlvbnM+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGly
KS4uLzskKFByb2plY3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUztO
T01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwv
UnVudGltZUxpYnJhcnk+DQorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0
aW9uTGV2ZWxMaW5raW5nPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2
ZWw+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJv
cj4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7
NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjslKERpc2FibGVTcGVjaWZpY1dhcm5p
bmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9J
dGVtRGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4NCisgICAgPE1pZGw+
DQorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAg
IDwvTWlkbD4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVk
PC9PcHRpbWl6YXRpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQ
cm9qZWN0RGlyKS4uLzskKFByb2plY3REaXIpLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0xJQjtfQ1JUX1NFQ1VSRV9OT19X
QVJOSU5HUztOT01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxk
Pg0KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50
aW1lQ2hlY2tzPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1
bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNv
bXBpbGVkSGVhZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+
DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0
NDs0MjQ1OzQ1MTI7NDcwMjslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNp
ZmljV2FybmluZ3M+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9y
PnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVt
RGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8TWlkbD4N
CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAg
PC9NaWRsPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8
L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFi
bGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+
dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPiQoUHJvamVjdERpcikuLi87JChQcm9qZWN0RGlyKS4uLy4uL2luY2x1ZGU7JShBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4N
CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19MSUI7X0NSVF9T
RUNVUkVfTk9fV0FSTklOR1M7Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MDslKFByZXByb2Nlc3NvckRl
ZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQorICAgICAgPFJ1bnRpbWVMaWJy
YXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KKyAgICAgIDxGdW5jdGlvbkxldmVs
TGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4NCisgICAgICA8UHJlY29tcGlsZWRI
ZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVs
PkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40
MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7JShEaXNhYmxlU3BlY2lmaWNX
YXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAg
ICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29kZUdlbkhMU0wuY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IkRldGVjdERpc2NvbnRpbnVpdHkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ik91dHB1dEhMU0wuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlNl
YXJjaFN5bWJvbC5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVHJhbnNsYXRvckhM
U0wuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdC5j
cHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVW5pZm9ybS5jcHAiIC8+DQorICA8L0l0
ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGV0ZWN0
RGlzY29udGludWl0eS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ik91dHB1dEhMU0wu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTZWFyY2hTeW1ib2wuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJUcmFuc2xhdG9ySExTTC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IlVuaWZvcm0uaCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIk
KFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCisgIDxJbXBvcnRHcm91
cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQorICA8L0ltcG9ydEdyb3VwPg0KKzwvUHJvamVj
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9obHNsLnZjeHByb2ouZmlsdGVycwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvcl9o
bHNsLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yX2hsc2wudmN4cHJvai5maWx0ZXJzCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1
dGYtOCI/Pg0KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVt
YXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXA+
DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRl
bnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRl
bnRpZmllcj4NCisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBq
O2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIg
SW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUz
ODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAg
ICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+DQorICAg
IDwvRmlsdGVyPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IkNvZGVHZW5ITFNMLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
RGV0ZWN0RGlzY29udGludWl0eS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ik91dHB1
dEhMU0wuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTZWFyY2hTeW1ib2wuY3BwIj4N
CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJUcmFuc2xhdG9ySExTTC5jcHAiPg0KKyAgICAgIDxG
aWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdC5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+
U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IlVuaWZvcm0uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmls
dGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJEZXRlY3REaXNjb250aW51aXR5LmgiPg0KKyAgICAg
IDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ik91dHB1dEhMU0wuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIg
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iU2VhcmNoU3ltYm9sLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRyYW5zbGF0b3JI
TFNMLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuZm9sZFNob3J0Q2lyY3VpdC5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJVbmlmb3JtLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgPC9JdGVtR3JvdXA+DQor
PC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvNjRiaXQtdG9rZW5pemVyLXNh
ZmV0eS5wYXRjaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yLzY0Yml0LXRva2VuaXplci1zYWZldHkucGF0Y2gJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
LzY0Yml0LXRva2VuaXplci1zYWZldHkucGF0Y2gJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU5
IEBACistLS0gYS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAKKysrKyBi
L3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAorQEAgLTU2LDYgKzU2LDcg
QEAgdHlwZWRlZiBpbnQxNl90IGZsZXhfaW50MTZfdDsKKyB0eXBlZGVmIHVpbnQxNl90IGZsZXhf
dWludDE2X3Q7CisgdHlwZWRlZiBpbnQzMl90IGZsZXhfaW50MzJfdDsKKyB0eXBlZGVmIHVpbnQz
Ml90IGZsZXhfdWludDMyX3Q7CisrdHlwZWRlZiB1aW50NjRfdCBmbGV4X3VpbnQ2NF90OworICNl
bHNlCisgdHlwZWRlZiBzaWduZWQgY2hhciBmbGV4X2ludDhfdDsKKyB0eXBlZGVmIHNob3J0IGlu
dCBmbGV4X2ludDE2X3Q7CitAQCAtMTc5LDYgKzE4MCwxMSBAQCB0eXBlZGVmIHZvaWQqIHl5c2Nh
bl90OworIHR5cGVkZWYgc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSAqWVlfQlVGRkVSX1NUQVRFOwor
ICNlbmRpZgorIAorKyNpZm5kZWYgWVlfVFlQRURFRl9ZWV9TSVpFX1QKKysjZGVmaW5lIFlZX1RZ
UEVERUZfWVlfU0laRV9UCisrdHlwZWRlZiBzaXplX3QgeXlfc2l6ZV90OworKyNlbmRpZgorKwor
ICNkZWZpbmUgRU9CX0FDVF9DT05USU5VRV9TQ0FOIDAKKyAjZGVmaW5lIEVPQl9BQ1RfRU5EX09G
X0ZJTEUgMQorICNkZWZpbmUgRU9CX0FDVF9MQVNUX01BVENIIDIKK0BAIC0yMDEsMTEgKzIwNyw2
IEBAIHR5cGVkZWYgc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSAqWVlfQlVGRkVSX1NUQVRFOworIAor
ICNkZWZpbmUgdW5wdXQoYykgeXl1bnB1dCggYywgeXlnLT55eXRleHRfcHRyICwgeXlzY2FubmVy
ICkKKyAKKy0jaWZuZGVmIFlZX1RZUEVERUZfWVlfU0laRV9UCistI2RlZmluZSBZWV9UWVBFREVG
X1lZX1NJWkVfVAorLXR5cGVkZWYgc2l6ZV90IHl5X3NpemVfdDsKKy0jZW5kaWYKKy0KKyAjaWZu
ZGVmIFlZX1NUUlVDVF9ZWV9CVUZGRVJfU1RBVEUKKyAjZGVmaW5lIFlZX1NUUlVDVF9ZWV9CVUZG
RVJfU1RBVEUKKyBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlCitAQCAtMjIzLDcgKzIyNCw3IEBAIHN0
cnVjdCB5eV9idWZmZXJfc3RhdGUKKyAJLyogTnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZCBpbnRv
IHl5X2NoX2J1Ziwgbm90IGluY2x1ZGluZyBFT0IKKyAJICogY2hhcmFjdGVycy4KKyAJICovCist
CWludCB5eV9uX2NoYXJzOworKwl5eV9zaXplX3QgeXlfbl9jaGFyczsKKyAKKyAJLyogV2hldGhl
ciB3ZSAib3duIiB0aGUgYnVmZmVyIC0gaS5lLiwgd2Uga25vdyB3ZSBjcmVhdGVkIGl0LAorIAkg
KiBhbmQgY2FuIHJlYWxsb2MoKSBpdCB0byBncm93IGl0LCBhbmQgc2hvdWxkIGZyZWUoKSBpdCB0
bworQEAgLTMwMiw3ICszMDMsNyBAQCBzdGF0aWMgdm9pZCBwcF9pbml0X2J1ZmZlciAoWVlfQlVG
RkVSX1NUQVRFIGIsRklMRSAqZmlsZSAseXlzY2FuX3QgeXlzY2FubmVyICk7CisgCisgWVlfQlVG
RkVSX1NUQVRFIHBwX3NjYW5fYnVmZmVyIChjaGFyICpiYXNlLHl5X3NpemVfdCBzaXplICx5eXNj
YW5fdCB5eXNjYW5uZXIgKTsKKyBZWV9CVUZGRVJfU1RBVEUgcHBfc2Nhbl9zdHJpbmcgKHl5Y29u
c3QgY2hhciAqeXlfc3RyICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKy1ZWV9CVUZGRVJfU1RBVEUg
cHBfc2Nhbl9ieXRlcyAoeXljb25zdCBjaGFyICpieXRlcyxpbnQgbGVuICx5eXNjYW5fdCB5eXNj
YW5uZXIgKTsKKytZWV9CVUZGRVJfU1RBVEUgcHBfc2Nhbl9ieXRlcyAoeXljb25zdCBjaGFyICpi
eXRlcyx5eV9zaXplX3QgbGVuICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAKKyB2b2lkICpwcGFs
bG9jICh5eV9zaXplX3QgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworIHZvaWQgKnBwcmVhbGxvYyAo
dm9pZCAqLHl5X3NpemVfdCAseXlzY2FuX3QgeXlzY2FubmVyICk7CitAQCAtMzUzLDcgKzM1NCw3
IEBAIHN0YXRpYyB2b2lkIHl5X2ZhdGFsX2Vycm9yICh5eWNvbnN0IGNoYXIgbXNnW10gLHl5c2Nh
bl90IHl5c2Nhbm5lciApOworICAqLworICNkZWZpbmUgWVlfRE9fQkVGT1JFX0FDVElPTiBcCisg
CXl5Zy0+eXl0ZXh0X3B0ciA9IHl5X2JwOyBcCistCXl5bGVuZyA9IChzaXplX3QpICh5eV9jcCAt
IHl5X2JwKTsgXAorKwl5eWxlbmcgPSAoeXlfc2l6ZV90KSAoeXlfY3AgLSB5eV9icCk7IFwKKyAJ
eXlnLT55eV9ob2xkX2NoYXIgPSAqeXlfY3A7IFwKKyAJKnl5X2NwID0gJ1wwJzsgXAorIAl5eWct
Pnl5X2NfYnVmX3AgPSB5eV9jcDsKK0BAIC01NzksOCArNTgwLDggQEAgc3RydWN0IHl5Z3V0c190
CisgICAgIHNpemVfdCB5eV9idWZmZXJfc3RhY2tfbWF4OyAvKio8IGNhcGFjaXR5IG9mIHN0YWNr
LiAqLworICAgICBZWV9CVUZGRVJfU1RBVEUgKiB5eV9idWZmZXJfc3RhY2s7IC8qKjwgU3RhY2sg
YXMgYW4gYXJyYXkuICovCisgICAgIGNoYXIgeXlfaG9sZF9jaGFyOworLSAgICBpbnQgeXlfbl9j
aGFyczsKKy0gICAgaW50IHl5bGVuZ19yOworKyAgICB5eV9zaXplX3QgeXlfbl9jaGFyczsKKysg
ICAgeXlfc2l6ZV90IHl5bGVuZ19yOworICAgICBjaGFyICp5eV9jX2J1Zl9wOworICAgICBpbnQg
eXlfaW5pdDsKKyAgICAgaW50IHl5X3N0YXJ0OworQEAgLTYzNyw3ICs2MzgsNyBAQCBGSUxFICpw
cGdldF9vdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorIHZvaWQgcHBzZXRfb3V0ICAoRklM
RSAqIG91dF9zdHIgLHl5c2Nhbl90IHl5c2Nhbm5lciApOworIAorLWludCBwcGdldF9sZW5nICh5
eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyt5eV9zaXplX3QgcHBnZXRfbGVuZyAoeXlzY2FuX3QgeXlz
Y2FubmVyICk7CisgCisgY2hhciAqcHBnZXRfdGV4dCAoeXlzY2FuX3QgeXlzY2FubmVyICk7Cisg
CitAQCAtNzA0LDcgKzcwNSw3IEBAIHN0YXRpYyBpbnQgaW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5l
ciApOworIAlpZiAoIFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfaXNfaW50ZXJhY3RpdmUg
KSBcCisgCQl7IFwKKyAJCWludCBjID0gJyonOyBcCistCQlpbnQgbjsgXAorKwkJeXlfc2l6ZV90
IG47IFwKKyAJCWZvciAoIG4gPSAwOyBuIDwgbWF4X3NpemUgJiYgXAorIAkJCSAgICAgKGMgPSBn
ZXRjKCB5eWluICkpICE9IEVPRiAmJiBjICE9ICdcbic7ICsrbiApIFwKKyAJCQlidWZbbl0gPSAo
Y2hhcikgYzsgXAorQEAgLTEzMzgsNyArMTMzOSw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRf
YnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgCisgCWVsc2UKKyAJCXsKKy0JCQlpbnQgbnVt
X3RvX3JlYWQgPQorKwkJCXl5X3NpemVfdCBudW1fdG9fcmVhZCA9CisgCQkJWVlfQ1VSUkVOVF9C
VUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJlcl90b19tb3ZlIC0gMTsKKyAKKyAJCXdo
aWxlICggbnVtX3RvX3JlYWQgPD0gMCApCitAQCAtMTM1Miw3ICsxMzUzLDcgQEAgc3RhdGljIGlu
dCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAKKyAJCQlpZiAoIGIt
Pnl5X2lzX291cl9idWZmZXIgKQorIAkJCQl7CistCQkJCWludCBuZXdfc2l6ZSA9IGItPnl5X2J1
Zl9zaXplICogMjsKKysJCQkJeXlfc2l6ZV90IG5ld19zaXplID0gYi0+eXlfYnVmX3NpemUgKiAy
OworIAorIAkJCQlpZiAoIG5ld19zaXplIDw9IDAgKQorIAkJCQkJYi0+eXlfYnVmX3NpemUgKz0g
Yi0+eXlfYnVmX3NpemUgLyA4OworQEAgLTEzODMsNyArMTM4NCw3IEBAIHN0YXRpYyBpbnQgeXlf
Z2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgCisgCQkvKiBSZWFkIGluIG1v
cmUgZGF0YS4gKi8KKyAJCVlZX0lOUFVUKCAoJllZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlf
Y2hfYnVmW251bWJlcl90b19tb3ZlXSksCistCQkJeXlnLT55eV9uX2NoYXJzLCAoc2l6ZV90KSBu
dW1fdG9fcmVhZCApOworKwkJCXl5Zy0+eXlfbl9jaGFycywgbnVtX3RvX3JlYWQgKTsKKyAKKyAJ
CVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfbl9jaGFycyA9IHl5Zy0+eXlfbl9jaGFyczsK
KyAJCX0KK0BAIC0xNTA4LDcgKzE1MDksNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZl
ciAoeXlzY2FuX3QgeXlzY2FubmVyKQorIAorIAkJZWxzZQorIAkJCXsgLyogbmVlZCBtb3JlIGlu
cHV0ICovCistCQkJaW50IG9mZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0X3B0
cjsKKysJCQl5eV9zaXplX3Qgb2Zmc2V0ID0geXlnLT55eV9jX2J1Zl9wIC0geXlnLT55eXRleHRf
cHRyOworIAkJCSsreXlnLT55eV9jX2J1Zl9wOworIAorIAkJCXN3aXRjaCAoIHl5X2dldF9uZXh0
X2J1ZmZlciggeXlzY2FubmVyICkgKQorQEAgLTE3ODgsNyArMTc4OSw3IEBAIHZvaWQgcHBwb3Bf
YnVmZmVyX3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgICovCisgc3RhdGljIHZvaWQgcHBl
bnN1cmVfYnVmZmVyX3N0YWNrICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgeworLQlpbnQgbnVtX3Rv
X2FsbG9jOworKwl5eV9zaXplX3QgbnVtX3RvX2FsbG9jOworICAgICBzdHJ1Y3QgeXlndXRzX3Qg
KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisgCisgCWlmICgheXlnLT55eV9i
dWZmZXJfc3RhY2spIHsKK0BAIC0xODg2LDEyICsxODg3LDExIEBAIFlZX0JVRkZFUl9TVEFURSBw
cF9zY2FuX3N0cmluZyAoeXljb25zdCBjaGFyICogeXlzdHIgLCB5eXNjYW5fdCB5eXNjYW5uZXIp
CisgICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCisgICogQHJldHVybiB0
aGUgbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlciBzdGF0ZSBvYmplY3QuCisgICovCistWVlfQlVGRkVS
X1NUQVRFIHBwX3NjYW5fYnl0ZXMgICh5eWNvbnN0IGNoYXIgKiB5eWJ5dGVzLCBpbnQgIF95eWJ5
dGVzX2xlbiAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKKytZWV9CVUZGRVJfU1RBVEUgcHBfc2Nhbl9i
eXRlcyAgKHl5Y29uc3QgY2hhciAqIHl5Ynl0ZXMsIHl5X3NpemVfdCAgX3l5Ynl0ZXNfbGVuICwg
eXlzY2FuX3QgeXlzY2FubmVyKQorIHsKKyAJWVlfQlVGRkVSX1NUQVRFIGI7CisgCWNoYXIgKmJ1
ZjsKKy0JeXlfc2l6ZV90IG47CistCWludCBpOworKwl5eV9zaXplX3QgbiwgaTsKKyAgICAgCisg
CS8qIEdldCBtZW1vcnkgZm9yIGZ1bGwgYnVmZmVyLCBpbmNsdWRpbmcgc3BhY2UgZm9yIHRyYWls
aW5nIEVPQidzLiAqLworIAluID0gX3l5Ynl0ZXNfbGVuICsgMjsKK0BAIC0yMDAxLDcgKzIwMDEs
NyBAQCBGSUxFICpwcGdldF9vdXQgICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgLyoqIEdldCB0aGUg
bGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuLgorICAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNj
YW5uZXIgb2JqZWN0LgorICAqLworLWludCBwcGdldF9sZW5nICAoeXlzY2FuX3QgeXlzY2FubmVy
KQorK3l5X3NpemVfdCBwcGdldF9sZW5nICAoeXlzY2FuX3QgeXlzY2FubmVyKQorIHsKKyAgICAg
c3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAg
ICByZXR1cm4geXlsZW5nOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAkocmV2
aXNpb24gMTUyOTc5KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
I2xpbmUgMTYgIi4vVG9rZW5pemVyLmwiCiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDExIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQg
KGMpIDIwMTEtMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8v
CkBAIC0zNTksOCArMzU5LDggQEAgc3RhdGljIHZvaWQgeXlfZmF0YWxfZXJyb3IgKHl5Y29uc3Qg
Y2hhcgogCSp5eV9jcCA9ICdcMCc7IFwKIAl5eWctPnl5X2NfYnVmX3AgPSB5eV9jcDsKIAotI2Rl
ZmluZSBZWV9OVU1fUlVMRVMgMzcKLSNkZWZpbmUgWVlfRU5EX09GX0JVRkZFUiAzOAorI2RlZmlu
ZSBZWV9OVU1fUlVMRVMgMzgKKyNkZWZpbmUgWVlfRU5EX09GX0JVRkZFUiAzOQogLyogVGhpcyBz
dHJ1Y3QgaXMgbm90IHVzZWQgaW4gdGhpcyBzY2FubmVyLAogICAgYnV0IGl0cyBwcmVzZW5jZSBp
cyBuZWNlc3NhcnkuICovCiBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwpAQCAtMzY4LDE3ICszNjgsMTcg
QEAgc3RydWN0IHl5X3RyYW5zX2luZm8KIAlmbGV4X2ludDMyX3QgeXlfdmVyaWZ5OwogCWZsZXhf
aW50MzJfdCB5eV9ueHQ7CiAJfTsKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2Nl
cHRbODRdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2NlcHRbODddID0KICAg
ICB7ICAgMCwKLSAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAzOCwgICAzNiwgICAzNCwg
ICAzNSwgICAzNSwgICAzMywKKyAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAzOSwgICAz
NywgICAzNCwgICAzNSwgICAzNSwgICAzMywKICAgICAgICAgNywgICAzMywgICAzMywgICAzMywg
ICAzMywgICAzMywgICAzMywgICAzMywgICAzMywgICAgOSwKLSAgICAgICAgOSwgICAzMywgICAz
MywgICAzMywgICAgOCwgICAzMywgICAzMywgICAgMywgICAgNSwgICAgNSwKLSAgICAgICAgNCwg
ICAzNCwgICAzNSwgICAxOSwgICAyNywgICAyMCwgICAzMCwgICAyNSwgICAxMiwgICAyMywKLSAg
ICAgICAxMywgICAyNCwgICAxMCwgICAgMiwgICAgMSwgICAyNiwgICAxMCwgICAgOSwgICAxMSwg
ICAxMSwKLSAgICAgICAxMSwgICAxMSwgICAgOSwgICAxNCwgICAxNiwgICAxOCwgICAxNywgICAx
NSwgICAgOCwgICAzMSwKLSAgICAgICAyMSwgICAzMiwgICAyMiwgICAgMywgICAgNSwgICAgNiwg
ICAxMSwgICAxMCwgICAxMSwgICAgMSwKLSAgICAgICAxMCwgICAxMSwgICAgMCwgICAxMCwgICAg
OSwgICAyOCwgICAyOSwgICAgMCwgICAxMCwgICAxMCwKLSAgICAgICAxMCwgICAxMCwgICAgMAor
ICAgICAgICA5LCAgIDMzLCAgIDMzLCAgIDMzLCAgICA4LCAgIDM3LCAgIDMzLCAgIDMzLCAgICAz
LCAgICA1LAorICAgICAgICA1LCAgICA0LCAgIDM0LCAgIDM1LCAgIDE5LCAgIDI3LCAgIDIwLCAg
IDMwLCAgIDI1LCAgIDEyLAorICAgICAgIDIzLCAgIDEzLCAgIDI0LCAgIDEwLCAgICAyLCAgICAx
LCAgIDI2LCAgIDEwLCAgICA5LCAgIDExLAorICAgICAgIDExLCAgIDExLCAgIDExLCAgICA5LCAg
IDE0LCAgIDE2LCAgIDE4LCAgIDE3LCAgIDE1LCAgICA4LAorICAgICAgIDM2LCAgIDM2LCAgIDMx
LCAgIDIxLCAgIDMyLCAgIDIyLCAgICAzLCAgICA1LCAgICA2LCAgIDExLAorICAgICAgIDEwLCAg
IDExLCAgICAxLCAgIDEwLCAgIDExLCAgICAwLCAgIDEwLCAgICA5LCAgIDI4LCAgIDI5LAorICAg
ICAgICAwLCAgIDEwLCAgIDEwLCAgIDEwLCAgIDEwLCAgICAwCiAgICAgfSA7CiAKIHN0YXRpYyB5
eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9lY1syNTZdID0KQEAgLTM5MiwxMSArMzkyLDExIEBAIHN0
YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9lY1syNTZdID0KICAgICAgICAxOSwgICAyMCwg
ICAgOSwgICAgMSwgICAyMSwgICAyMSwgICAyMSwgICAyMSwgICAyMiwgICAyMSwKICAgICAgICAy
MywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywK
ICAgICAgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyMywgICAyNCwgICAy
MywgICAyMywKLSAgICAgICAgOSwgICAgMSwgICAgOSwgICAyNSwgICAyMywgICAgMSwgICAyMSwg
ICAyMSwgICAyMSwgICAyMSwKKyAgICAgICAgOSwgICAyNSwgICAgOSwgICAyNiwgICAyMywgICAg
MSwgICAyMSwgICAyMSwgICAyMSwgICAyMSwKIAogICAgICAgIDIyLCAgIDIxLCAgIDIzLCAgIDIz
LCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLAogICAgICAgIDIzLCAgIDIzLCAg
IDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDIzLCAgIDI0LAotICAgICAgIDIz
LCAgIDIzLCAgICA5LCAgIDI2LCAgICA5LCAgICA5LCAgICAxLCAgICAxLCAgICAxLCAgICAxLAor
ICAgICAgIDIzLCAgIDIzLCAgICA5LCAgIDI3LCAgICA5LCAgICA5LCAgICAxLCAgICAxLCAgICAx
LCAgICAxLAogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAxLAogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLCAgICAxLAogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLApAQCAtNDEzLDg1ICs0MTMsODkgQEAg
c3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQogICAgICAgICAxLCAgICAx
LCAgICAxLCAgICAxLCAgICAxCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJf
dCB5eV9tZXRhWzI3XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfbWV0YVsyOF0g
PQogICAgIHsgICAwLAogICAgICAgICAxLCAgICAxLCAgICAyLCAgICAyLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAxLCAgICAzLAogICAgICAgICAxLCAgICAxLCAgICA0LCAgICAxLCAgICA1
LCAgICA1LCAgICA1LCAgICAxLCAgICAxLCAgICAxLAotICAgICAgICA1LCAgICA1LCAgICA1LCAg
ICA1LCAgICAxLCAgICAxCisgICAgICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDEsICAgIDEs
ICAgIDEKICAgICB9IDsKIAotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Jhc2VbODld
ID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9iYXNlWzkyXSA9CiAgICAgeyAgIDAs
Ci0gICAgICAgIDAsICAgIDAsICAgMjQsICAgMjYsICAxNTgsICAxNTksICAxNTAsICAxNTksICAx
NDUsICAxMjgsCi0gICAgICAxNTksICAxMTIsICAgMjMsICAxNTksICAxMTEsICAgMjEsICAgMjUs
ICAgMzAsICAgMjksICAgMzYsCi0gICAgICAgNDYsICAgMzYsICAxMDAsICAgNDUsICAgIDAsICAg
MTYsICAgNDcsICAgIDAsICAxNTksICAgODQsCi0gICAgICAgNjUsICAgNzMsICAxNTksICAxNTks
ICAxNTksICAxNTksICAxNTksICAxNTksICAxNTksICAxNTksCi0gICAgICAxNTksICAxNTksICAg
NjEsICAxNTksICAgIDAsICAxNTksICAgNzMsICAgMzIsICAgNTYsICAgODMsCi0gICAgICAgOTUs
ICAgNjgsICAgIDAsICAgMzEsICAxNTksICAxNTksICAxNTksICAgMTksICAgIDAsICAxNTksCi0g
ICAgICAxNTksICAxNTksICAxNTksICAgIDAsICAxNTksICAxNTksICAgOTgsICAgIDAsICAxMTAs
ICAgIDAsCi0gICAgICAgIDAsICAxMTcsICAgNTIsICAgOTAsICAgODAsICAxNTksICAxNTksICAx
MDEsICAgOTcsICAxMTIsCi0gICAgICAxMjAsICAxMjMsICAxNTksICAxNDAsICAgMjgsICAxNDUs
ICAxNTAsICAxNTIKKyAgICAgICAgMCwgICAgMCwgICAyNSwgICAyNywgIDE2MiwgIDE2MywgIDE1
OSwgIDE2MywgIDE1MiwgIDEzMiwKKyAgICAgIDE2MywgIDEzMSwgICAyNCwgIDE2MywgIDExNiwg
ICAyMiwgICAyNiwgICAzMSwgICAzMCwgICAzNywKKyAgICAgICA0MCwgICA0NCwgIDExNSwgICA0
NiwgICAgMCwgICA2NCwgICA1MCwgICAxNSwgICAgMCwgIDE2MywKKyAgICAgIDEyNCwgICA5MSwg
ICA4OCwgIDE2MywgIDE2MywgIDE2MywgIDE2MywgIDE2MywgIDE2MywgIDE2MywKKyAgICAgIDE2
MywgIDE2MywgIDE2MywgICA2NCwgIDE2MywgICAgMCwgIDE2MywgICA3NiwgICA1NCwgICA1OCwK
KyAgICAgICA3OSwgICA5MSwgICA5MSwgICAgMCwgICA1NiwgIDE2MywgIDE2MywgIDE2MywgICAz
MiwgICAgMCwKKyAgICAgIDE2MywgICAzNiwgIDE2MywgIDE2MywgIDE2MywgIDE2MywgICAgMCwg
IDE2MywgIDE2MywgICA5NCwKKyAgICAgICAgMCwgIDEwNiwgICAgMCwgICAgMCwgIDExMywgICA1
NSwgICA3MiwgIDExMywgIDE2MywgIDE2MywKKyAgICAgIDExNiwgIDEwMSwgIDEwOCwgIDEyMywg
IDEyNiwgIDE2MywgIDE0MywgICAzMSwgIDE0OCwgIDE1MywKKyAgICAgIDE1NQorCiAgICAgfSA7
CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9kZWZbODldID0KK3N0YXRpYyB5eWNv
bnN0IGZsZXhfaW50MTZfdCB5eV9kZWZbOTJdID0KICAgICB7ICAgMCwKLSAgICAgICA4MywgICAg
MSwgICA4NCwgICA4NCwgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywKLSAgICAg
ICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4
MywKLSAgICAgICAyMCwgICA4MywgICA4MywgICA4MywgICA4NSwgICA4MywgICA4MywgICA4Niwg
ICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4
MywgICA4MywgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4Nywg
ICA4MywgICA4MywgICAyMCwgICAyMCwgICA0NywKLSAgICAgICA1MCwgICA4OCwgICAyMSwgICA4
MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4NSwgICA4MywKLSAgICAgICA4MywgICA4Mywg
ICA4MywgICA4NiwgICA4MywgICA4MywgICA0MywgICA0MywgICA2NywgICA4NywKLSAgICAgICA0
NywgICA1MCwgICA4MywgICA1MSwgICA4OCwgICA4MywgICA4MywgICA4MywgICA2OSwgICA3MiwK
LSAgICAgICA4MywgICA4MywgICAgMCwgICA4MywgICA4MywgICA4MywgICA4MywgICA4MworICAg
ICAgIDg2LCAgICAxLCAgIDg3LCAgIDg3LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAg
IDg2LAorICAgICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2
LCAgIDg2LCAgIDg2LAorICAgICAgIDIwLCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg4LCAgIDg2LCAg
IDg2LCAgIDg2LCAgIDg5LCAgIDg2LAorICAgICAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2
LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LAorICAgICAgIDg2LCAgIDg2LCAgIDg2LCAg
IDg2LCAgIDg2LCAgIDkwLCAgIDg2LCAgIDg2LCAgIDIwLCAgIDIwLAorICAgICAgIDQ4LCAgIDUx
LCAgIDkxLCAgIDIxLCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg4LAorICAgICAg
IDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg2LCAgIDg5LCAgIDg2LCAgIDg2LCAgIDQ0
LAorICAgICAgIDQ0LCAgIDcwLCAgIDkwLCAgIDQ4LCAgIDUxLCAgIDg2LCAgIDUyLCAgIDkxLCAg
IDg2LCAgIDg2LAorICAgICAgIDg2LCAgIDcyLCAgIDc1LCAgIDg2LCAgIDg2LCAgICAwLCAgIDg2
LCAgIDg2LCAgIDg2LCAgIDg2LAorICAgICAgIDg2CisKICAgICB9IDsKIAotc3RhdGljIHl5Y29u
c3QgZmxleF9pbnQxNl90IHl5X254dFsxODZdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZf
dCB5eV9ueHRbMTkxXSA9CiAgICAgeyAgIDAsCiAgICAgICAgIDYsICAgIDcsICAgIDgsICAgIDks
ICAgMTAsICAgMTEsICAgMTIsICAgMTMsICAgMTQsICAgMTUsCiAgICAgICAgMTYsICAgMTcsICAg
MTgsICAgMTksICAgMjAsICAgMjEsICAgMjEsICAgMjIsICAgMjMsICAgMjQsCi0gICAgICAgMjUs
ICAgMjUsICAgMjUsICAgMjUsICAgMjYsICAgMjcsICAgMjksICAgMzAsICAgMjksICAgMzAsCi0g
ICAgICAgMzYsICAgMzksICAgNTksICAgMzEsICAgNjAsICAgMzEsICAgNDEsICAgNzcsICAgNDQs
ICAgNDAsCi0gICAgICAgNjEsICAgMzcsICAgNDUsICAgNDIsICAgNDMsICAgNDMsICAgNDMsICAg
NDYsICAgNDcsICAgNzYsCi0gICAgICAgNDgsICAgNDgsICAgNDksICAgNTQsICAgNTUsICAgNTAs
ICAgNTAsICAgNTEsICAgNTAsICAgNTIsCi0gICAgICAgNTMsICAgNTMsICAgNTMsICAgNTcsICAg
NTgsICAgNjIsICAgODEsICAgODEsICAgODEsICAgNTAsCi0gICAgICAgNDksICAgNDksICAgNjMs
ICAgNjcsICAgMzIsICAgNjgsICAgNjgsICAgNjgsICAgNjYsICAgNTAsCi0gICAgICAgNTAsICAg
NjcsICAgNjksICAgNjcsICAgNjcsICAgNTAsICAgNjUsICAgNzEsICAgNzEsICAgNzEsCi0gICAg
ICAgNTAsICAgNTAsICAgNTAsICAgNTAsICAgNzIsICAgNTAsICAgNTAsICAgNTAsICAgNTAsICAg
NTAsCi0KLSAgICAgICA4MywgICA4MywgICA1MCwgICA1MCwgICA1MCwgICA3MywgICA3MywgICA4
MywgICA4MywgICA3NCwKLSAgICAgICA3NCwgICA3NCwgICA2NywgICA2NywgICA2NywgICA4Miwg
ICA4MiwgICA4MiwgICA1NiwgICA2NywKLSAgICAgICA3OCwgICA3OCwgICA4MywgICA4MywgICA3
OSwgICA3OSwgICA3OSwgICA3OCwgICA3OCwgICAzOCwKLSAgICAgICAzNSwgICA4MCwgICA4MCwg
ICA4MCwgICA4MSwgICA4MSwgICA4MSwgICA4MiwgICA4MiwgICA4MiwKLSAgICAgICAyOCwgICAy
OCwgICAyOCwgICAyOCwgICAyOCwgICA2NCwgICAzNCwgICAzMywgICA2NCwgICA2NCwKLSAgICAg
ICA3MCwgICAzMiwgICA3MCwgICA3MCwgICA3MCwgICA3NSwgICA3NSwgICA4MywgICAgNSwgICA4
MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4Mywg
ICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4
MywgICA4MywgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4Mwor
ICAgICAgIDI1LCAgIDI1LCAgIDI1LCAgIDI1LCAgIDI2LCAgIDI3LCAgIDI4LCAgIDMwLCAgIDMx
LCAgIDMwLAorICAgICAgIDMxLCAgIDM3LCAgIDQwLCAgIDY1LCAgIDMyLCAgIDYwLCAgIDMyLCAg
IDQyLCAgIDYxLCAgIDQ1LAorICAgICAgIDQxLCAgIDY2LCAgIDM4LCAgIDQ2LCAgIDQzLCAgIDQ0
LCAgIDQ0LCAgIDQ0LCAgIDQ3LCAgIDQ4LAorICAgICAgIDgwLCAgIDQ5LCAgIDQ5LCAgIDUwLCAg
IDU0LCAgIDU0LCAgIDU0LCAgIDUxLCAgIDUyLCAgIDUxLAorICAgICAgIDUzLCAgIDU1LCAgIDU2
LCAgIDUxLCAgIDU4LCAgIDU5LCAgIDYxLCAgIDYyLCAgIDYzLCAgIDg0LAorICAgICAgIDg0LCAg
IDg0LCAgIDUwLCAgIDUwLCAgIDc5LCAgIDY0LCAgIDcwLCAgIDUxLCAgIDcxLCAgIDcxLAorICAg
ICAgIDcxLCAgIDUxLCAgIDg2LCAgIDg2LCAgIDcwLCAgIDcyLCAgIDcwLCAgIDcwLCAgIDUxLCAg
IDMzLAorICAgICAgIDc0LCAgIDc0LCAgIDc0LCAgIDUxLCAgIDUxLCAgIDUxLCAgIDUxLCAgIDc1
LCAgIDUxLCAgIDUxLAorCisgICAgICAgNTEsICAgNzYsICAgNzYsICAgNTEsICAgNjksICAgNzcs
ICAgNzcsICAgNzcsICAgNzAsICAgNzAsCisgICAgICAgNzAsICAgODYsICAgODYsICAgNTEsICAg
NTEsICAgNzAsICAgODEsICAgODEsICAgODYsICAgODYsCisgICAgICAgODIsICAgODIsICAgODIs
ICAgODEsICAgODEsICAgNTEsICAgNjgsICAgODMsICAgODMsICAgODMsCisgICAgICAgODUsICAg
ODUsICAgODUsICAgNTcsICAgMzksICAgNTEsICAgNTEsICAgODQsICAgODQsICAgODQsCisgICAg
ICAgODUsICAgODUsICAgODUsICAgMjksICAgMjksICAgMjksICAgMjksICAgMjksICAgNjcsICAg
MzYsCisgICAgICAgMzUsICAgNjcsICAgNjcsICAgNzMsICAgMzQsICAgNzMsICAgNzMsICAgNzMs
ICAgNzgsICAgNzgsCisgICAgICAgMzMsICAgODYsICAgIDUsICAgODYsICAgODYsICAgODYsICAg
ODYsICAgODYsICAgODYsICAgODYsCisgICAgICAgODYsICAgODYsICAgODYsICAgODYsICAgODYs
ICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsCisgICAgICAgODYsICAgODYsICAgODYsICAg
ODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYKICAgICB9IDsKIAotc3RhdGlj
IHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1sxODZdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhf
aW50MTZfdCB5eV9jaGtbMTkxXSA9CiAgICAgeyAgIDAsCiAgICAgICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCiAgICAgICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCi0gICAg
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDMsICAgIDMsICAgIDQsICAg
IDQsCi0gICAgICAgMTMsICAgMTYsICAgODUsICAgIDMsICAgMjYsICAgIDQsICAgMTcsICAgNTgs
ICAgMTksICAgMTYsCi0gICAgICAgMjYsICAgMTMsICAgMTksICAgMTcsICAgMTgsICAgMTgsICAg
MTgsICAgMTksICAgMjAsICAgNTQsCi0gICAgICAgMjAsICAgMjAsICAgMjAsICAgMjIsICAgMjIs
ICAgNDgsICAgMjAsICAgMjAsICAgMjAsICAgMjAsCi0gICAgICAgMjEsICAgMjEsICAgMjEsICAg
MjQsICAgMjQsICAgMjcsICAgNzMsICAgNzMsICAgNzMsICAgMjEsCi0gICAgICAgNDksICAgNDks
ICAgMjcsICAgNDMsICAgMzIsICAgNDMsICAgNDMsICAgNDMsICAgMzEsICAgNDksCi0gICAgICAg
NTIsICAgNDMsICAgNDMsICAgNDMsICAgNDMsICAgNDcsICAgMzAsICAgNDcsICAgNDcsICAgNDcs
Ci0gICAgICAgNTIsICAgNTIsICAgNzUsICAgNDcsICAgNDcsICAgNDcsICAgNDcsICAgNTAsICAg
NTAsICAgNTAsCi0KLSAgICAgICA3NCwgICA3NCwgICA3NSwgICA3NSwgICA1MCwgICA1MSwgICA1
MSwgICA3OSwgICA3OSwgICA1MSwKLSAgICAgICA1MSwgICA1MSwgICA2NywgICA2NywgICA2Nywg
ICA3OCwgICA3OCwgICA3OCwgICAyMywgICA2NywKLSAgICAgICA2OSwgICA2OSwgICA4MCwgICA4
MCwgICA2OSwgICA2OSwgICA2OSwgICA3MiwgICA3MiwgICAxNSwKLSAgICAgICAxMiwgICA3Miwg
ICA3MiwgICA3MiwgICA4MSwgICA4MSwgICA4MSwgICA4MiwgICA4MiwgICA4MiwKLSAgICAgICA4
NCwgICA4NCwgICA4NCwgICA4NCwgICA4NCwgICA4NiwgICAxMCwgICAgOSwgICA4NiwgICA4NiwK
LSAgICAgICA4NywgICAgNywgICA4NywgICA4NywgICA4NywgICA4OCwgICA4OCwgICAgNSwgICA4
MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4Mywg
ICA4MywgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4MywgICA4MywgICA4
MywgICA4MywgICA4MywgICA4MywgICA4MywKLSAgICAgICA4MywgICA4MywgICA4MywgICA4Mywg
ICA4MworICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAz
LCAgICAzLCAgICA0LAorICAgICAgICA0LCAgIDEzLCAgIDE2LCAgIDI4LCAgICAzLCAgIDg4LCAg
ICA0LCAgIDE3LCAgIDYyLCAgIDE5LAorICAgICAgIDE2LCAgIDI4LCAgIDEzLCAgIDE5LCAgIDE3
LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE5LCAgIDIwLAorICAgICAgIDU5LCAgIDIwLCAgIDIwLCAg
IDIwLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIwLCAgIDIwLCAgIDIwLAorICAgICAgIDIwLCAgIDIy
LCAgIDIyLCAgIDIxLCAgIDI0LCAgIDI0LCAgIDI2LCAgIDI2LCAgIDI3LCAgIDc2LAorICAgICAg
IDc2LCAgIDc2LCAgIDUwLCAgIDUwLCAgIDU1LCAgIDI3LCAgIDQ0LCAgIDQ5LCAgIDQ0LCAgIDQ0
LAorICAgICAgIDQ0LCAgIDUwLCAgIDc3LCAgIDc3LCAgIDQ0LCAgIDQ0LCAgIDQ0LCAgIDQ0LCAg
IDQ4LCAgIDMzLAorICAgICAgIDQ4LCAgIDQ4LCAgIDQ4LCAgIDUxLCAgIDUxLCAgIDUxLCAgIDQ4
LCAgIDQ4LCAgIDQ4LCAgIDQ4LAorCisgICAgICAgNTEsICAgNTIsICAgNTIsICAgNTMsICAgMzIs
ICAgNTIsICAgNTIsICAgNTIsICAgNzAsICAgNzAsCisgICAgICAgNzAsICAgODIsICAgODIsICAg
NTMsICAgNTMsICAgNzAsICAgNzIsICAgNzIsICAgODMsICAgODMsCisgICAgICAgNzIsICAgNzIs
ICAgNzIsICAgNzUsICAgNzUsICAgNzgsICAgMzEsICAgNzUsICAgNzUsICAgNzUsCisgICAgICAg
ODEsICAgODEsICAgODEsICAgMjMsICAgMTUsICAgNzgsICAgNzgsICAgODQsICAgODQsICAgODQs
CisgICAgICAgODUsICAgODUsICAgODUsICAgODcsICAgODcsICAgODcsICAgODcsICAgODcsICAg
ODksICAgMTIsCisgICAgICAgMTAsICAgODksICAgODksICAgOTAsICAgIDksICAgOTAsICAgOTAs
ICAgOTAsICAgOTEsICAgOTEsCisgICAgICAgIDcsICAgIDUsICAgODYsICAgODYsICAgODYsICAg
ODYsICAgODYsICAgODYsICAgODYsICAgODYsCisgICAgICAgODYsICAgODYsICAgODYsICAgODYs
ICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsCisgICAgICAgODYsICAgODYsICAg
ODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYsICAgODYKICAgICB9IDsKIAog
LyogVGhlIGludGVudCBiZWhpbmQgdGhpcyBkZWZpbml0aW9uIGlzIHRoYXQgaXQnbGwgY2F0Y2gK
QEAgLTUwMyw3ICs1MDcsNyBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzE4
Nl0gCiAjZGVmaW5lIFlZX1JFU1RPUkVfWVlfTU9SRV9PRkZTRVQKIC8qCiAvLwotLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTg0MywxMyArODQ3LDEzIEBAIHl5X21hdGNoOgog
CQkJd2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9IHl5
X2N1cnJlbnRfc3RhdGUgKQogCQkJCXsKIAkJCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkgeXlf
ZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4NCAp
CisJCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDg3ICkKIAkJCQkJeXlfYyA9IHl5X21ldGFb
KHVuc2lnbmVkIGludCkgeXlfY107CiAJCQkJfQogCQkJeXlfY3VycmVudF9zdGF0ZSA9IHl5X254
dFt5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlfY107CiAJCQkr
K3l5X2NwOwogCQkJfQotCQl3aGlsZSAoIHl5X2N1cnJlbnRfc3RhdGUgIT0gODMgKTsKKwkJd2hp
bGUgKCB5eV9jdXJyZW50X3N0YXRlICE9IDg2ICk7CiAJCXl5X2NwID0geXlnLT55eV9sYXN0X2Fj
Y2VwdGluZ19jcG9zOwogCQl5eV9jdXJyZW50X3N0YXRlID0geXlnLT55eV9sYXN0X2FjY2VwdGlu
Z19zdGF0ZTsKIApAQCAtMTEwNiw2ICsxMTEwLDExIEBAIFlZX1JVTEVfU0VUVVAKIH0KIAlZWV9C
UkVBSwogY2FzZSAzNjoKKy8qIHJ1bGUgMzYgY2FuIG1hdGNoIGVvbCAqLworWVlfUlVMRV9TRVRV
UAoreyArK3l5bGluZW5vOyB9CisJWVlfQlJFQUsKK2Nhc2UgMzc6CiBZWV9SVUxFX1NFVFVQCiB7
CiAgICAgeXlsdmFsLT5hc3NpZ24oMSwgeXl0ZXh0WzBdKTsKQEAgLTExNDEsNyArMTE1MCw3IEBA
IGNhc2UgWVlfU1RBVEVfRU9GKENPTU1FTlQpOgogICAgIHl5dGVybWluYXRlKCk7CiB9CiAJWVlf
QlJFQUsKLWNhc2UgMzc6CitjYXNlIDM4OgogWVlfUlVMRV9TRVRVUAogRUNITzsKIAlZWV9CUkVB
SwpAQCAtMTQzNyw3ICsxNDQ2LDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5
c2Nhbl90IAogCQl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlf
Y10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQl7CiAJCQl5eV9jdXJyZW50X3N0YXRlID0gKGlu
dCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49
IDg0ICkKKwkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4NyApCiAJCQkJeXlfYyA9IHl5X21l
dGFbKHVuc2lnbmVkIGludCkgeXlfY107CiAJCQl9CiAJCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9u
eHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwpAQCAt
MTQ2NiwxMSArMTQ3NSwxMSBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2Fu
X3QgCiAJd2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9
IHl5X2N1cnJlbnRfc3RhdGUgKQogCQl7CiAJCXl5X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9k
ZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4NCApCisJ
CWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4NyApCiAJCQl5eV9jID0geXlfbWV0YVsodW5zaWdu
ZWQgaW50KSB5eV9jXTsKIAkJfQogCXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9ueHRbeXlfYmFzZVt5
eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2NdOwotCXl5X2lzX2phbSA9ICh5
eV9jdXJyZW50X3N0YXRlID09IDgzKTsKKwl5eV9pc19qYW0gPSAoeXlfY3VycmVudF9zdGF0ZSA9
PSA4Nik7CiAKIAlyZXR1cm4geXlfaXNfamFtID8gMCA6IHl5X2N1cnJlbnRfc3RhdGU7CiB9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rv
a2VuaXplci5sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmwJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogLy8KLS8vIENvcHlyaWdodCAoYykg
MjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KIC8vCkBAIC0xNCw3ICsxNCw3IEBAIElGIFlPVSBNT0RJRlkgVEhJUyBGSUxF
IFlPVSBBTFNPIE5FRUQgVE8KIAogJXRvcHsKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTEgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdo
dCAoYykgMjAxMS0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgog
Ly8KQEAgLTIyOSw2ICsyMjksOCBAQCBGUkFDVElPTkFMX0NPTlNUQU5UICAoe0RJR0lUfSoiLiJ7
RElHSVR9CiAgICAgcmV0dXJuICdcbic7CiB9CiAKK1xce05FV0xJTkV9IHsgKyt5eWxpbmVubzsg
fQorCiAuIHsKICAgICB5eWx2YWwtPmFzc2lnbigxLCB5eXRleHRbMF0pOwogICAgIHJldHVybiBw
cDo6VG9rZW46OlBQX09USEVSOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9wcmVwcm9jZXNzb3IudmN4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3ByZXByb2Nl
c3Nvci52Y3hwcm9qCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcmVwcm9jZXNzb3IudmN4cHJvagkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04
Ij8+DQorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIg
eG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAw
MyI+DQorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPg0KKyAgICA8
UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPg0KKyAgICAgIDxDb25m
aWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwv
UGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQorICAgIDxQcm9qZWN0Q29u
ZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPkRl
YnVnPC9Db25maWd1cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAg
ICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5j
bHVkZT0iUmVsZWFzZXxXaW4zMiI+DQorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29u
ZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KKyAgICA8L1By
b2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0i
UmVsZWFzZXx4NjQiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRp
b24+DQorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+DQorICAgIDwvUHJvamVjdENvbmZp
Z3VyYXRpb24+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9i
YWxzIj4NCisgICAgPFByb2plY3RHdWlkPntGQkUzMkRGMy0wRkIwLTRGMkYtQTQyNC0yQzIxQkQ3
QkMzMjV9PC9Qcm9qZWN0R3VpZD4NCisgICAgPFJvb3ROYW1lc3BhY2U+cHJlcHJvY2Vzc29yPC9S
b290TmFtZXNwYWNlPg0KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQorICA8L1By
b3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9z
b2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNv
bmZpZ3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29u
ZmlndXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0
Pg0KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGlt
aXphdGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0i
Q29uZmlndXJhdGlvbiI+DQorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9D
b25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJT
ZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmln
dXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0K
KyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXph
dGlvbj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmln
dXJhdGlvblR5cGU+DQorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0K
KyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgp
XE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lv
blNldHRpbmdzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9
IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCck
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFi
ZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIk
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRp
dGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRH
cm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCisgICAgPElt
cG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAv
Pg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0
cyI+DQorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4k
KFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilc
TWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERh
dGFQbGF0Zm9ybSIgLz4NCisgIDwvSW1wb3J0R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJl
bD0iVXNlck1hY3JvcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwPg0KKyAgICA8X1Byb2plY3RGaWxl
VmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQorICAgIDxPdXREaXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
JChDb25maWd1cmF0aW9uKVw8L0ludERpcj4NCisgICAgPE91dERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQ
bGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZv
cm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlv
bkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmln
dXJhdGlvbilcPC9JbnREaXI+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9y
bSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChQbGF0Zm9ybSlc
JChDb25maWd1cmF0aW9uKVw8L0ludERpcj4NCisgIDwvUHJvcGVydHlHcm91cD4NCisgIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj4NCisgICAgPENsQ29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9u
PkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25z
PldJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtO
T01JTk1BWDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+DQorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KKyAgICAg
IDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tz
Pg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJy
YXJ5Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVh
ZGVyPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAg
PFRyZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8
RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25G
b3JtYXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQy
Mzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0MjY3OyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9E
aXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1EZWZp
bml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAg
ICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRs
Pg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGlt
aXphdGlvbj4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19X
SU5ET1dTO19VU1JETEw7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUoUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWlu
aW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNo
ZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRp
bWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFBy
ZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdh
cm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNF
cnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9u
Rm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8
RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUx
Mjs0NzAyOzQ3MTg7NDI2NzslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNp
ZmljV2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3Vw
Pg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAg
PE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5j
dGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAg
ICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExM
O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01JTk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVu
dGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5p
bmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJv
cj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8RGlz
YWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0
NzAyOzQ3MTg7NDI2NzslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmlj
V2FybmluZ3M+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0K
KyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52
aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xD
b21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisg
ICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9u
RXhwYW5zaW9uPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7
X1dJTkRPV1M7X1VTUkRMTDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7X1NFQ1VS
RV9TQ0w9MDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5
Pg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVy
Pg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+DQorICAgICAgPFRy
ZWF0V2FybmluZ0FzRXJyb3I+dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgICA8RGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+DQorICAgICAgPERpc2FibGVTcGVjaWZpY1dhcm5pbmdzPjQxMDA7NDEyNzs0MTg5OzQyMzk7
NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0NzE4OzQyNjc7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8
L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
RGlhZ25vc3RpY3NCYXNlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXJlY3Rp
dmVIYW5kbGVyQmFzZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRGlyZWN0aXZl
UGFyc2VyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJFeHByZXNzaW9uUGFyc2Vy
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJJbnB1dC5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iTGV4ZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ik1hY3JvLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJNYWNyb0V4cGFuZGVyLmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQcmVwcm9jZXNzb3IuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IlRva2VuLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJUb2tlbml6ZXIuY3BwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Imxlbmd0aF9saW1pdHMuaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJEaWFnbm9zdGljc0Jhc2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJEaXJlY3RpdmVIYW5kbGVyQmFzZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IkRpcmVjdGl2ZVBhcnNlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkV4cHJlc3Np
b25QYXJzZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJJbnB1dC5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkxleGVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iTWFjcm8uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJNYWNyb0V4cGFuZGVyLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibnVtZXJpY19sZXguaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJwcF91dGlscy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IlByZXByb2Nlc3Nvci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNvdXJjZUxvY2F0
aW9uLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVG9rZW4uaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJUb2tlbml6ZXIuaCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0
ZW1Hcm91cD4NCisgICAgPE5vbmUgSW5jbHVkZT0iVG9rZW5pemVyLmwiIC8+DQorICA8L0l0ZW1H
cm91cD4NCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3Bw
LnRhcmdldHMiIC8+DQorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0K
KyAgPC9JbXBvcnRHcm91cD4NCis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9wcmVwcm9jZXNzb3IudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHBy
b2ouZmlsdGVycwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzc29yLnZjeHByb2ouZmlsdGVycwkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMDAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
InV0Zi04Ij8+DQorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2No
ZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KKyAgPEl0ZW1Hcm91
cD4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPg0KKyAgICAgIDxVbmlxdWVJ
ZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJ
ZGVudGlmaWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDto
cGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRl
ciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPg0KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5
NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAg
ICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4NCisg
ICAgPC9GaWx0ZXI+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iRGlyZWN0aXZlUGFyc2VyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iRXhwcmVzc2lvblBhcnNlci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Iklu
cHV0LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iTGV4ZXIuY3BwIj4NCisgICAgICA8
RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSJNYWNyby5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ik1h
Y3JvRXhwYW5kZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQcmVwcm9jZXNzb3Iu
Y3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJUb2tlbi5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IlRva2VuaXplci5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVz
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRp
YWdub3N0aWNzQmFzZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkRpcmVjdGl2ZUhh
bmRsZXJCYXNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iRGlyZWN0aXZlUGFyc2VyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IkV4cHJlc3Npb25QYXJzZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSW5w
dXQuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTGV4ZXIuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iTWFjcm8uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iTWFjcm9FeHBh
bmRlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJudW1lcmljX2xleC5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJwcF91dGlscy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJQcmVwcm9jZXNzb3IuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iU291cmNlTG9jYXRp
b24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVG9rZW4uaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iVG9rZW5pemVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Imxlbmd0
aF9saW1pdHMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRGlhZ25vc3RpY3NCYXNlLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkRpcmVjdGl2ZUhhbmRsZXJCYXNlLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
PC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJUb2tlbml6
ZXIubCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9Ob25l
Pg0KKyAgPC9JdGVtR3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90aW1pbmcvUmVz
dHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcu
Y3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdGltaW5nL1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAsOCArMTAsOCBAQCB2b2lkIFJlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nOjp2aXNp
dFN5CiB7CiAgICAgaWYgKElzU2FtcGxlcihub2RlLT5nZXRCYXNpY1R5cGUoKSkpIHsKICAgICAg
ICAgKyttTnVtRXJyb3JzOwotICAgICAgICBtU2luay5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAg
ICAgICAgbVNpbmsubG9jYXRpb24obm9kZS0+Z2V0TGluZSgpKTsKLSAgICAgICAgbVNpbmsgPDwg
IlNhbXBsZXJzIGFyZSBub3QgcGVybWl0dGVkIGluIHZlcnRleCBzaGFkZXJzLlxuIjsKKyAgICAg
ICAgbVNpbmsubWVzc2FnZShFUHJlZml4RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+Z2V0TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICJTYW1wbGVycyBhcmUgbm90IHBl
cm1pdHRlZCBpbiB2ZXJ0ZXggc2hhZGVycyIpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvQ29uZmlnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0NvbmZpZy5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0NvbmZpZy5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzQwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBDb25maWcuY3BwOiBJ
bXBsZW1lbnRzIHRoZSBlZ2w6OkNvbmZpZyBjbGFzcywgZGVzY3JpYmluZyB0aGUgZm9ybWF0LCB0
eXBlCisvLyBhbmQgc2l6ZSBmb3IgYW4gZWdsOjpTdXJmYWNlLiBJbXBsZW1lbnRzIEVHTENvbmZp
ZyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LgorLy8gW0VHTCAxLjRdIHNlY3Rpb24gMy40IHBh
Z2UgMTUuCisKKyNpbmNsdWRlICJsaWJFR0wvQ29uZmlnLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0
aG0+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVk
ZSA8R0xFUzIvZ2wyZXh0Lmg+CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKwordXNpbmcg
bmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIGVnbAoreworQ29uZmlnOjpDb25maWcocng6OkNv
bmZpZ0Rlc2MgZGVzYywgRUdMaW50IG1pbkludGVydmFsLCBFR0xpbnQgbWF4SW50ZXJ2YWwsIEVH
TGludCB0ZXhXaWR0aCwgRUdMaW50IHRleEhlaWdodCkKKyAgICA6IG1SZW5kZXJUYXJnZXRGb3Jt
YXQoZGVzYy5yZW5kZXJUYXJnZXRGb3JtYXQpLCBtRGVwdGhTdGVuY2lsRm9ybWF0KGRlc2MuZGVw
dGhTdGVuY2lsRm9ybWF0KSwgbU11bHRpU2FtcGxlKGRlc2MubXVsdGlTYW1wbGUpCit7CisgICAg
bUJpbmRUb1RleHR1cmVSR0IgPSBFR0xfRkFMU0U7CisgICAgbUJpbmRUb1RleHR1cmVSR0JBID0g
RUdMX0ZBTFNFOworICAgIHN3aXRjaCAoZGVzYy5yZW5kZXJUYXJnZXRGb3JtYXQpCisgICAgewor
ICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgICBtQnVmZmVyU2l6ZSA9IDE2OworICAgICAg
ICBtUmVkU2l6ZSA9IDU7CisgICAgICAgIG1HcmVlblNpemUgPSA1OworICAgICAgICBtQmx1ZVNp
emUgPSA1OworICAgICAgICBtQWxwaGFTaXplID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1JHQkE4X09FUzoKKyAgICAgICAgbUJ1ZmZlclNpemUgPSAzMjsKKyAgICAgICAgbVJl
ZFNpemUgPSA4OworICAgICAgICBtR3JlZW5TaXplID0gODsKKyAgICAgICAgbUJsdWVTaXplID0g
ODsKKyAgICAgICAgbUFscGhhU2l6ZSA9IDg7CisgICAgICAgIG1CaW5kVG9UZXh0dXJlUkdCQSA9
IHRydWU7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0I1NjU6CisgICAgICAgIG1C
dWZmZXJTaXplID0gMTY7CisgICAgICAgIG1SZWRTaXplID0gNTsKKyAgICAgICAgbUdyZWVuU2l6
ZSA9IDY7CisgICAgICAgIG1CbHVlU2l6ZSA9IDU7CisgICAgICAgIG1BbHBoYVNpemUgPSAwOwor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICAgIG1CdWZmZXJT
aXplID0gMzI7CisgICAgICAgIG1SZWRTaXplID0gODsKKyAgICAgICAgbUdyZWVuU2l6ZSA9IDg7
CisgICAgICAgIG1CbHVlU2l6ZSA9IDg7CisgICAgICAgIG1BbHBoYVNpemUgPSAwOworICAgICAg
ICBtQmluZFRvVGV4dHVyZVJHQiA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9CR1JBOF9FWFQ6CisgICAgICAgIG1CdWZmZXJTaXplID0gMzI7CisgICAgICAgIG1SZWRTaXpl
ID0gODsKKyAgICAgICAgbUdyZWVuU2l6ZSA9IDg7CisgICAgICAgIG1CbHVlU2l6ZSA9IDg7Cisg
ICAgICAgIG1BbHBoYVNpemUgPSA4OworICAgICAgICBtQmluZFRvVGV4dHVyZVJHQkEgPSB0cnVl
OworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7
ICAgLy8gT3RoZXIgZm9ybWF0cyBzaG91bGQgbm90IGJlIHZhbGlkCisgICAgfQorCisgICAgbUx1
bWluYW5jZVNpemUgPSAwOworICAgIG1BbHBoYU1hc2tTaXplID0gMDsKKyAgICBtQ29sb3JCdWZm
ZXJUeXBlID0gRUdMX1JHQl9CVUZGRVI7CisgICAgbUNvbmZpZ0NhdmVhdCA9IChkZXNjLmZhc3RD
b25maWcpID8gRUdMX05PTkUgOiBFR0xfU0xPV19DT05GSUc7CisgICAgbUNvbmZpZ0lEID0gMDsK
KyAgICBtQ29uZm9ybWFudCA9IEVHTF9PUEVOR0xfRVMyX0JJVDsKKworICAgIHN3aXRjaCAoZGVz
Yy5kZXB0aFN0ZW5jaWxGb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9OT05FOgorICAgICAg
ICBtRGVwdGhTaXplID0gMDsKKyAgICAgICAgbVN0ZW5jaWxTaXplID0gMDsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzoKKyAgICAgICAgbURlcHRo
U2l6ZSA9IDMyOworICAgICAgICBtU3RlbmNpbFNpemUgPSAwOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM6CisgICAgICAgIG1EZXB0aFNpemUgPSAy
NDsKKyAgICAgICAgbVN0ZW5jaWxTaXplID0gODsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX0RFUFRIX0NPTVBPTkVOVDI0X09FUzoKKyAgICAgICAgbURlcHRoU2l6ZSA9IDI0OworICAg
ICAgICBtU3RlbmNpbFNpemUgPSAwOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfREVQ
VEhfQ09NUE9ORU5UMTY6CisgICAgICAgIG1EZXB0aFNpemUgPSAxNjsKKyAgICAgICAgbVN0ZW5j
aWxTaXplID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgIH0KKworICAgIG1MZXZlbCA9IDA7CisgICAgbU1hdGNoTmF0aXZlUGl4
bWFwID0gRUdMX05PTkU7CisgICAgbU1heFBCdWZmZXJXaWR0aCA9IHRleFdpZHRoOworICAgIG1N
YXhQQnVmZmVySGVpZ2h0ID0gdGV4SGVpZ2h0OworICAgIG1NYXhQQnVmZmVyUGl4ZWxzID0gdGV4
V2lkdGgqdGV4SGVpZ2h0OworICAgIG1NYXhTd2FwSW50ZXJ2YWwgPSBtYXhJbnRlcnZhbDsKKyAg
ICBtTWluU3dhcEludGVydmFsID0gbWluSW50ZXJ2YWw7CisgICAgbU5hdGl2ZVJlbmRlcmFibGUg
PSBFR0xfRkFMU0U7CisgICAgbU5hdGl2ZVZpc3VhbElEID0gMDsKKyAgICBtTmF0aXZlVmlzdWFs
VHlwZSA9IDA7CisgICAgbVJlbmRlcmFibGVUeXBlID0gRUdMX09QRU5HTF9FUzJfQklUOworICAg
IG1TYW1wbGVCdWZmZXJzID0gZGVzYy5tdWx0aVNhbXBsZSA/IDEgOiAwOworICAgIG1TYW1wbGVz
ID0gZGVzYy5tdWx0aVNhbXBsZTsKKyAgICBtU3VyZmFjZVR5cGUgPSBFR0xfUEJVRkZFUl9CSVQg
fCBFR0xfV0lORE9XX0JJVCB8IEVHTF9TV0FQX0JFSEFWSU9SX1BSRVNFUlZFRF9CSVQ7CisgICAg
bVRyYW5zcGFyZW50VHlwZSA9IEVHTF9OT05FOworICAgIG1UcmFuc3BhcmVudFJlZFZhbHVlID0g
MDsKKyAgICBtVHJhbnNwYXJlbnRHcmVlblZhbHVlID0gMDsKKyAgICBtVHJhbnNwYXJlbnRCbHVl
VmFsdWUgPSAwOworfQorCitFR0xDb25maWcgQ29uZmlnOjpnZXRIYW5kbGUoKSBjb25zdAorewor
ICAgIHJldHVybiAoRUdMQ29uZmlnKShzaXplX3QpbUNvbmZpZ0lEOworfQorCitTb3J0Q29uZmln
OjpTb3J0Q29uZmlnKGNvbnN0IEVHTGludCAqYXR0cmliTGlzdCkKKyAgICA6IG1XYW50UmVkKGZh
bHNlKSwgbVdhbnRHcmVlbihmYWxzZSksIG1XYW50Qmx1ZShmYWxzZSksIG1XYW50QWxwaGEoZmFs
c2UpLCBtV2FudEx1bWluYW5jZShmYWxzZSkKK3sKKyAgICBzY2FuRm9yV2FudGVkQ29tcG9uZW50
cyhhdHRyaWJMaXN0KTsKK30KKwordm9pZCBTb3J0Q29uZmlnOjpzY2FuRm9yV2FudGVkQ29tcG9u
ZW50cyhjb25zdCBFR0xpbnQgKmF0dHJpYkxpc3QpCit7CisgICAgLy8gW0VHTF0gc2VjdGlvbiAz
LjQuMSBwYWdlIDI0CisgICAgLy8gU29ydGluZyBydWxlICMzOiBieSBsYXJnZXIgdG90YWwgbnVt
YmVyIG9mIGNvbG9yIGJpdHMsIG5vdCBjb25zaWRlcmluZworICAgIC8vIGNvbXBvbmVudHMgdGhh
dCBhcmUgMCBvciBkb24ndC1jYXJlLgorICAgIGZvciAoY29uc3QgRUdMaW50ICphdHRyID0gYXR0
cmliTGlzdDsgYXR0clswXSAhPSBFR0xfTk9ORTsgYXR0ciArPSAyKQorICAgIHsKKyAgICAgICAg
aWYgKGF0dHJbMV0gIT0gMCAmJiBhdHRyWzFdICE9IEVHTF9ET05UX0NBUkUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHN3aXRjaCAoYXR0clswXSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgY2FzZSBFR0xfUkVEX1NJWkU6ICAgICAgIG1XYW50UmVkID0gdHJ1ZTsgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgRUdMX0dSRUVOX1NJWkU6ICAgICBtV2FudEdyZWVuID0gdHJ1ZTsgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0JMVUVfU0laRTogICAgICBtV2FudEJsdWUgPSB0
cnVlOyBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfQUxQSEFfU0laRTogICAgIG1XYW50
QWxwaGEgPSB0cnVlOyBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfTFVNSU5BTkNFX1NJ
WkU6IG1XYW50THVtaW5hbmNlID0gdHJ1ZTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9Cit9CisKK0VHTGludCBTb3J0Q29uZmlnOjp3YW50ZWRDb21wb25lbnRzU2l6ZShj
b25zdCBDb25maWcgJmNvbmZpZykgY29uc3QKK3sKKyAgICBFR0xpbnQgdG90YWwgPSAwOworCisg
ICAgaWYgKG1XYW50UmVkKSAgICAgICB0b3RhbCArPSBjb25maWcubVJlZFNpemU7CisgICAgaWYg
KG1XYW50R3JlZW4pICAgICB0b3RhbCArPSBjb25maWcubUdyZWVuU2l6ZTsKKyAgICBpZiAobVdh
bnRCbHVlKSAgICAgIHRvdGFsICs9IGNvbmZpZy5tQmx1ZVNpemU7CisgICAgaWYgKG1XYW50QWxw
aGEpICAgICB0b3RhbCArPSBjb25maWcubUFscGhhU2l6ZTsKKyAgICBpZiAobVdhbnRMdW1pbmFu
Y2UpIHRvdGFsICs9IGNvbmZpZy5tTHVtaW5hbmNlU2l6ZTsKKworICAgIHJldHVybiB0b3RhbDsK
K30KKworYm9vbCBTb3J0Q29uZmlnOjpvcGVyYXRvcigpKGNvbnN0IENvbmZpZyAqeCwgY29uc3Qg
Q29uZmlnICp5KSBjb25zdAoreworICAgIHJldHVybiAoKnRoaXMpKCp4LCAqeSk7Cit9CisKK2Jv
b2wgU29ydENvbmZpZzo6b3BlcmF0b3IoKShjb25zdCBDb25maWcgJngsIGNvbnN0IENvbmZpZyAm
eSkgY29uc3QKK3sKKyAgICAjZGVmaW5lIFNPUlQoYXR0cmlidXRlKSAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgaWYgKHguYXR0cmlidXRlICE9IHkuYXR0cmlidXRlKSAgICAgICAg
ICAgIFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIHJldHVybiB4LmF0dHJpYnV0ZSA8IHkuYXR0cmlidXRlOyAgICAgIFwK
KyAgICAgICAgfQorCisgICAgTUVUQV9BU1NFUlQoRUdMX05PTkUgPCBFR0xfU0xPV19DT05GSUcg
JiYgRUdMX1NMT1dfQ09ORklHIDwgRUdMX05PTl9DT05GT1JNQU5UX0NPTkZJRyk7CisgICAgU09S
VChtQ29uZmlnQ2F2ZWF0KTsKKworICAgIE1FVEFfQVNTRVJUKEVHTF9SR0JfQlVGRkVSIDwgRUdM
X0xVTUlOQU5DRV9CVUZGRVIpOworICAgIFNPUlQobUNvbG9yQnVmZmVyVHlwZSk7CisKKyAgICAv
LyBCeSBsYXJnZXIgdG90YWwgbnVtYmVyIG9mIGNvbG9yIGJpdHMsIG9ubHkgY29uc2lkZXJpbmcg
dGhvc2UgdGhhdCBhcmUgcmVxdWVzdGVkIHRvIGJlID4gMC4KKyAgICBFR0xpbnQgeENvbXBvbmVu
dHNTaXplID0gd2FudGVkQ29tcG9uZW50c1NpemUoeCk7CisgICAgRUdMaW50IHlDb21wb25lbnRz
U2l6ZSA9IHdhbnRlZENvbXBvbmVudHNTaXplKHkpOworICAgIGlmICh4Q29tcG9uZW50c1NpemUg
IT0geUNvbXBvbmVudHNTaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHhDb21wb25lbnRzU2l6
ZSA+IHlDb21wb25lbnRzU2l6ZTsKKyAgICB9CisKKyAgICBTT1JUKG1CdWZmZXJTaXplKTsKKyAg
ICBTT1JUKG1TYW1wbGVCdWZmZXJzKTsKKyAgICBTT1JUKG1TYW1wbGVzKTsKKyAgICBTT1JUKG1E
ZXB0aFNpemUpOworICAgIFNPUlQobVN0ZW5jaWxTaXplKTsKKyAgICBTT1JUKG1BbHBoYU1hc2tT
aXplKTsKKyAgICBTT1JUKG1OYXRpdmVWaXN1YWxUeXBlKTsKKyAgICBTT1JUKG1Db25maWdJRCk7
CisKKyAgICAjdW5kZWYgU09SVAorCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBXZSdkIGxp
a2UgdG8gdXNlIFNvcnRDb25maWcgdG8gYWxzbyBlbGltaW5hdGUgZHVwbGljYXRlIGNvbmZpZ3Mu
CisvLyBUaGlzIHdvcmtzIGFzIGxvbmcgYXMgd2UgbmV2ZXIgaGF2ZSB0d28gY29uZmlncyB3aXRo
IGRpZmZlcmVudCBwZXItUkdCLWNvbXBvbmVudCBsYXlvdXRzLAorLy8gYnV0IHRoZSBzYW1lIHRv
dGFsLgorLy8gNTU1MSBhbmQgNTY1IGFyZSBkaWZmZXJlbnQgYmVjYXVzZSBSK0crQiBpcyBkaWZm
ZXJlbnQuCisvLyA1NTUxIGFuZCA1NTUgYXJlIGRpZmZlcmVudCBiZWNhdXNlIGJ1ZmZlclNpemUg
aXMgZGlmZmVyZW50LgorY29uc3QgRUdMaW50IENvbmZpZ1NldDo6bVNvcnRBdHRyaWJzW10gPQor
eworICAgIEVHTF9SRURfU0laRSwgMSwKKyAgICBFR0xfR1JFRU5fU0laRSwgMSwKKyAgICBFR0xf
QkxVRV9TSVpFLCAxLAorICAgIEVHTF9MVU1JTkFOQ0VfU0laRSwgMSwKKyAgICAvLyBCVVQgTk9U
IEFMUEhBCisgICAgRUdMX05PTkUKK307CisKK0NvbmZpZ1NldDo6Q29uZmlnU2V0KCkKKyAgICA6
IG1TZXQoU29ydENvbmZpZyhtU29ydEF0dHJpYnMpKQoreworfQorCit2b2lkIENvbmZpZ1NldDo6
YWRkKHJ4OjpDb25maWdEZXNjIGRlc2MsIEVHTGludCBtaW5Td2FwSW50ZXJ2YWwsIEVHTGludCBt
YXhTd2FwSW50ZXJ2YWwsIEVHTGludCB0ZXhXaWR0aCwgRUdMaW50IHRleEhlaWdodCkKK3sKKyAg
ICBDb25maWcgY29uZmlnKGRlc2MsIG1pblN3YXBJbnRlcnZhbCwgbWF4U3dhcEludGVydmFsLCB0
ZXhXaWR0aCwgdGV4SGVpZ2h0KTsKKyAgICBtU2V0Lmluc2VydChjb25maWcpOworfQorCitzaXpl
X3QgQ29uZmlnU2V0OjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNldC5zaXplKCk7Cit9
CisKK2Jvb2wgQ29uZmlnU2V0OjpnZXRDb25maWdzKEVHTENvbmZpZyAqY29uZmlncywgY29uc3Qg
RUdMaW50ICphdHRyaWJMaXN0LCBFR0xpbnQgY29uZmlnU2l6ZSwgRUdMaW50ICpudW1Db25maWcp
Cit7CisgICAgdmVjdG9yPGNvbnN0IENvbmZpZyo+IHBhc3NlZDsKKyAgICBwYXNzZWQucmVzZXJ2
ZShtU2V0LnNpemUoKSk7CisKKyAgICBmb3IgKEl0ZXJhdG9yIGNvbmZpZyA9IG1TZXQuYmVnaW4o
KTsgY29uZmlnICE9IG1TZXQuZW5kKCk7IGNvbmZpZysrKQorICAgIHsKKyAgICAgICAgYm9vbCBt
YXRjaCA9IHRydWU7CisgICAgICAgIGNvbnN0IEVHTGludCAqYXR0cmlidXRlID0gYXR0cmliTGlz
dDsKKworICAgICAgICB3aGlsZSAoYXR0cmlidXRlWzBdICE9IEVHTF9OT05FKQorICAgICAgICB7
CisgICAgICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0ZVswXSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgY2FzZSBFR0xfQlVGRkVSX1NJWkU6ICAgICAgICAgICAgICAgbWF0Y2ggPSBjb25m
aWctPm1CdWZmZXJTaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0FMUEhBX1NJWkU6ICAgICAgICAgICAgICAgIG1h
dGNoID0gY29uZmlnLT5tQWxwaGFTaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9CTFVFX1NJWkU6ICAgICAgICAg
ICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bUJsdWVTaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfR1JFRU5fU0la
RTogICAgICAgICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1HcmVlblNpemUgPj0gYXR0cmlidXRl
WzFdOyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdM
X1JFRF9TSVpFOiAgICAgICAgICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tUmVkU2l6ZSA+PSBh
dHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIEVHTF9ERVBUSF9TSVpFOiAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bURl
cHRoU2l6ZSA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSBFR0xfU1RFTkNJTF9TSVpFOiAgICAgICAgICAgICAgbWF0Y2ggPSBj
b25maWctPm1TdGVuY2lsU2l6ZSA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0NPTkZJR19DQVZFQVQ6ICAgICAgICAgICAg
IG1hdGNoID0gY29uZmlnLT5tQ29uZmlnQ2F2ZWF0ID09IChFR0xlbnVtKSBhdHRyaWJ1dGVbMV07
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9DT05GSUdfSUQ6ICAgICAg
ICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bUNvbmZpZ0lEID09IGF0dHJpYnV0ZVsxXTsgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfTEVWRUw6
ICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1MZXZlbCA+PSBhdHRyaWJ1dGVb
MV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
RUdMX05BVElWRV9SRU5ERVJBQkxFOiAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tTmF0aXZlUmVu
ZGVyYWJsZSA9PSAoRUdMQm9vbGVhbikgYXR0cmlidXRlWzFdOyAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIEVHTF9OQVRJVkVfVklTVUFMX1RZUEU6ICAgICAgICBtYXRjaCA9IGNvbmZpZy0+
bU5hdGl2ZVZpc3VhbFR5cGUgPT0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBFR0xfU0FNUExFUzogICAgICAgICAgICAgICAgICAgbWF0Y2gg
PSBjb25maWctPm1TYW1wbGVzID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX1NBTVBMRV9CVUZGRVJTOiAgICAgICAg
ICAgIG1hdGNoID0gY29uZmlnLT5tU2FtcGxlQnVmZmVycyA+PSBhdHRyaWJ1dGVbMV07ICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9TVVJGQUNFX1RZUEU6
ICAgICAgICAgICAgICBtYXRjaCA9IChjb25maWctPm1TdXJmYWNlVHlwZSAmIGF0dHJpYnV0ZVsx
XSkgPT0gYXR0cmlidXRlWzFdOyAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfVFJB
TlNQQVJFTlRfVFlQRTogICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1UcmFuc3BhcmVudFR5cGUg
PT0gKEVHTGVudW0pIGF0dHJpYnV0ZVsxXTsgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgRUdMX1RSQU5TUEFSRU5UX0JMVUVfVkFMVUU6ICAgIG1hdGNoID0gY29uZmlnLT5tVHJhbnNw
YXJlbnRCbHVlVmFsdWUgPT0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIEVHTF9UUkFOU1BBUkVOVF9HUkVFTl9WQUxVRTogICBtYXRjaCA9IGNvbmZp
Zy0+bVRyYW5zcGFyZW50R3JlZW5WYWx1ZSA9PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfVFJBTlNQQVJFTlRfUkVEX1ZBTFVFOiAgICAgbWF0
Y2ggPSBjb25maWctPm1UcmFuc3BhcmVudFJlZFZhbHVlID09IGF0dHJpYnV0ZVsxXTsgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0I6
ICAgICAgIG1hdGNoID0gY29uZmlnLT5tQmluZFRvVGV4dHVyZVJHQiA9PSAoRUdMQm9vbGVhbikg
YXR0cmlidXRlWzFdOyAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9CSU5EX1RPX1RF
WFRVUkVfUkdCQTogICAgICBtYXRjaCA9IGNvbmZpZy0+bUJpbmRUb1RleHR1cmVSR0JBID09IChF
R0xCb29sZWFuKSBhdHRyaWJ1dGVbMV07ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xf
TUlOX1NXQVBfSU5URVJWQUw6ICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1NaW5Td2FwSW50ZXJ2
YWwgPT0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgRUdMX01BWF9TV0FQX0lOVEVSVkFMOiAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tTWF4
U3dhcEludGVydmFsID09IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIEVHTF9MVU1JTkFOQ0VfU0laRTogICAgICAgICAgICBtYXRjaCA9IGNv
bmZpZy0+bUx1bWluYW5jZVNpemUgPj0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfQUxQSEFfTUFTS19TSVpFOiAgICAgICAgICAg
bWF0Y2ggPSBjb25maWctPm1BbHBoYU1hc2tTaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0NPTE9SX0JVRkZFUl9UWVBF
OiAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tQ29sb3JCdWZmZXJUeXBlID09IChFR0xlbnVtKSBh
dHRyaWJ1dGVbMV07ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9SRU5ERVJB
QkxFX1RZUEU6ICAgICAgICAgICBtYXRjaCA9IChjb25maWctPm1SZW5kZXJhYmxlVHlwZSAmIGF0
dHJpYnV0ZVsxXSkgPT0gYXR0cmlidXRlWzFdOyBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBF
R0xfTUFUQ0hfTkFUSVZFX1BJWE1BUDogICAgICAgbWF0Y2ggPSBmYWxzZTsgVU5JTVBMRU1FTlRF
RCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgRUdMX0NPTkZPUk1BTlQ6ICAgICAgICAgICAgICAgIG1hdGNoID0gKGNvbmZpZy0+
bUNvbmZvcm1hbnQgJiBhdHRyaWJ1dGVbMV0pID09IGF0dHJpYnV0ZVsxXTsgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9XSURUSDogICAgICAgICBtYXRjaCA9
IGNvbmZpZy0+bU1heFBCdWZmZXJXaWR0aCA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfTUFYX1BCVUZGRVJfSEVJR0hUOiAgICAg
ICAgbWF0Y2ggPSBjb25maWctPm1NYXhQQnVmZmVySGVpZ2h0ID49IGF0dHJpYnV0ZVsxXTsgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX1BJ
WEVMUzogICAgICAgIG1hdGNoID0gY29uZmlnLT5tTWF4UEJ1ZmZlclBpeGVscyA+PSBhdHRyaWJ1
dGVbMV07ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCFtYXRjaCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgYXR0cmlidXRlICs9IDI7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAobWF0Y2gpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBhc3NlZC5wdXNoX2JhY2so
Jipjb25maWcpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGNvbmZpZ3MpCisgICAgewor
ICAgICAgICBzb3J0KHBhc3NlZC5iZWdpbigpLCBwYXNzZWQuZW5kKCksIFNvcnRDb25maWcoYXR0
cmliTGlzdCkpOworCisgICAgICAgIEVHTGludCBpbmRleDsKKyAgICAgICAgZm9yIChpbmRleCA9
IDA7IGluZGV4IDwgY29uZmlnU2l6ZSAmJiBpbmRleCA8IHN0YXRpY19jYXN0PEVHTGludD4ocGFz
c2VkLnNpemUoKSk7IGluZGV4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbmZpZ3NbaW5k
ZXhdID0gcGFzc2VkW2luZGV4XS0+Z2V0SGFuZGxlKCk7CisgICAgICAgIH0KKworICAgICAgICAq
bnVtQ29uZmlnID0gaW5kZXg7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgICpudW1D
b25maWcgPSBwYXNzZWQuc2l6ZSgpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitj
b25zdCBlZ2w6OkNvbmZpZyAqQ29uZmlnU2V0OjpnZXQoRUdMQ29uZmlnIGNvbmZpZ0hhbmRsZSkK
K3sKKyAgICBmb3IgKEl0ZXJhdG9yIGNvbmZpZyA9IG1TZXQuYmVnaW4oKTsgY29uZmlnICE9IG1T
ZXQuZW5kKCk7IGNvbmZpZysrKQorICAgIHsKKyAgICAgICAgaWYgKGNvbmZpZy0+Z2V0SGFuZGxl
KCkgPT0gY29uZmlnSGFuZGxlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gJigqY29u
ZmlnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9Db25maWcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0NvbmZpZy5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9Db25maWcuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMTUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIENvbmZpZy5o
OiBEZWZpbmVzIHRoZSBlZ2w6OkNvbmZpZyBjbGFzcywgZGVzY3JpYmluZyB0aGUgZm9ybWF0LCB0
eXBlCisvLyBhbmQgc2l6ZSBmb3IgYW4gZWdsOjpTdXJmYWNlLiBJbXBsZW1lbnRzIEVHTENvbmZp
ZyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LgorLy8gW0VHTCAxLjRdIHNlY3Rpb24gMy40IHBh
Z2UgMTUuCisKKyNpZm5kZWYgSU5DTFVERV9DT05GSUdfSF8KKyNkZWZpbmUgSU5DTFVERV9DT05G
SUdfSF8KKworI2RlZmluZSBFR0xBUEkKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisKKyNpbmNsdWRl
IDxzZXQ+CisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaCIKKyNpbmNs
dWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBEaXNw
bGF5OworCitjbGFzcyBDb25maWcKK3sKKyAgcHVibGljOgorICAgIENvbmZpZyhyeDo6Q29uZmln
RGVzYyBkZXNjLCBFR0xpbnQgbWluU3dhcEludGVydmFsLCBFR0xpbnQgbWF4U3dhcEludGVydmFs
LCBFR0xpbnQgdGV4V2lkdGgsIEVHTGludCB0ZXhIZWlnaHQpOworCisgICAgRUdMQ29uZmlnIGdl
dEhhbmRsZSgpIGNvbnN0OworCisgICAgY29uc3QgR0xlbnVtIG1SZW5kZXJUYXJnZXRGb3JtYXQ7
CisgICAgY29uc3QgR0xlbnVtIG1EZXB0aFN0ZW5jaWxGb3JtYXQ7CisgICAgY29uc3QgR0xpbnQg
bU11bHRpU2FtcGxlOworCisgICAgRUdMaW50IG1CdWZmZXJTaXplOyAgICAgICAgICAgICAgLy8g
RGVwdGggb2YgdGhlIGNvbG9yIGJ1ZmZlcgorICAgIEVHTGludCBtUmVkU2l6ZTsgICAgICAgICAg
ICAgICAgIC8vIEJpdHMgb2YgUmVkIGluIHRoZSBjb2xvciBidWZmZXIKKyAgICBFR0xpbnQgbUdy
ZWVuU2l6ZTsgICAgICAgICAgICAgICAvLyBCaXRzIG9mIEdyZWVuIGluIHRoZSBjb2xvciBidWZm
ZXIKKyAgICBFR0xpbnQgbUJsdWVTaXplOyAgICAgICAgICAgICAgICAvLyBCaXRzIG9mIEJsdWUg
aW4gdGhlIGNvbG9yIGJ1ZmZlcgorICAgIEVHTGludCBtTHVtaW5hbmNlU2l6ZTsgICAgICAgICAg
IC8vIEJpdHMgb2YgTHVtaW5hbmNlIGluIHRoZSBjb2xvciBidWZmZXIKKyAgICBFR0xpbnQgbUFs
cGhhU2l6ZTsgICAgICAgICAgICAgICAvLyBCaXRzIG9mIEFscGhhIGluIHRoZSBjb2xvciBidWZm
ZXIKKyAgICBFR0xpbnQgbUFscGhhTWFza1NpemU7ICAgICAgICAgICAvLyBCaXRzIG9mIEFscGhh
IE1hc2sgaW4gdGhlIG1hc2sgYnVmZmVyCisgICAgRUdMQm9vbGVhbiBtQmluZFRvVGV4dHVyZVJH
QjsgICAgLy8gVHJ1ZSBpZiBiaW5kYWJsZSB0byBSR0IgdGV4dHVyZXMuCisgICAgRUdMQm9vbGVh
biBtQmluZFRvVGV4dHVyZVJHQkE7ICAgLy8gVHJ1ZSBpZiBiaW5kYWJsZSB0byBSR0JBIHRleHR1
cmVzLgorICAgIEVHTGVudW0gbUNvbG9yQnVmZmVyVHlwZTsgICAgICAgIC8vIENvbG9yIGJ1ZmZl
ciB0eXBlCisgICAgRUdMZW51bSBtQ29uZmlnQ2F2ZWF0OyAgICAgICAgICAgLy8gQW55IGNhdmVh
dHMgZm9yIHRoZSBjb25maWd1cmF0aW9uCisgICAgRUdMaW50IG1Db25maWdJRDsgICAgICAgICAg
ICAgICAgLy8gVW5pcXVlIEVHTENvbmZpZyBpZGVudGlmaWVyCisgICAgRUdMaW50IG1Db25mb3Jt
YW50OyAgICAgICAgICAgICAgLy8gV2hldGhlciBjb250ZXh0cyBjcmVhdGVkIHdpdGggdGhpcyBj
b25maWcgYXJlIGNvbmZvcm1hbnQKKyAgICBFR0xpbnQgbURlcHRoU2l6ZTsgICAgICAgICAgICAg
ICAvLyBCaXRzIG9mIFogaW4gdGhlIGRlcHRoIGJ1ZmZlcgorICAgIEVHTGludCBtTGV2ZWw7ICAg
ICAgICAgICAgICAgICAgIC8vIEZyYW1lIGJ1ZmZlciBsZXZlbAorICAgIEVHTEJvb2xlYW4gbU1h
dGNoTmF0aXZlUGl4bWFwOyAgIC8vIE1hdGNoIHRoZSBuYXRpdmUgcGl4bWFwIGZvcm1hdAorICAg
IEVHTGludCBtTWF4UEJ1ZmZlcldpZHRoOyAgICAgICAgIC8vIE1heGltdW0gd2lkdGggb2YgcGJ1
ZmZlcgorICAgIEVHTGludCBtTWF4UEJ1ZmZlckhlaWdodDsgICAgICAgIC8vIE1heGltdW0gaGVp
Z2h0IG9mIHBidWZmZXIKKyAgICBFR0xpbnQgbU1heFBCdWZmZXJQaXhlbHM7ICAgICAgICAvLyBN
YXhpbXVtIHNpemUgb2YgcGJ1ZmZlcgorICAgIEVHTGludCBtTWF4U3dhcEludGVydmFsOyAgICAg
ICAgIC8vIE1heGltdW0gc3dhcCBpbnRlcnZhbAorICAgIEVHTGludCBtTWluU3dhcEludGVydmFs
OyAgICAgICAgIC8vIE1pbmltdW0gc3dhcCBpbnRlcnZhbAorICAgIEVHTEJvb2xlYW4gbU5hdGl2
ZVJlbmRlcmFibGU7ICAgIC8vIEVHTF9UUlVFIGlmIG5hdGl2ZSByZW5kZXJpbmcgQVBJcyBjYW4g
cmVuZGVyIHRvIHN1cmZhY2UKKyAgICBFR0xpbnQgbU5hdGl2ZVZpc3VhbElEOyAgICAgICAgICAv
LyBIYW5kbGUgb2YgY29ycmVzcG9uZGluZyBuYXRpdmUgdmlzdWFsCisgICAgRUdMaW50IG1OYXRp
dmVWaXN1YWxUeXBlOyAgICAgICAgLy8gTmF0aXZlIHZpc3VhbCB0eXBlIG9mIHRoZSBhc3NvY2lh
dGVkIHZpc3VhbAorICAgIEVHTGludCBtUmVuZGVyYWJsZVR5cGU7ICAgICAgICAgIC8vIFdoaWNo
IGNsaWVudCByZW5kZXJpbmcgQVBJcyBhcmUgc3VwcG9ydGVkLgorICAgIEVHTGludCBtU2FtcGxl
QnVmZmVyczsgICAgICAgICAgIC8vIE51bWJlciBvZiBtdWx0aXNhbXBsZSBidWZmZXJzCisgICAg
RUdMaW50IG1TYW1wbGVzOyAgICAgICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHNhbXBsZXMgcGVy
IHBpeGVsCisgICAgRUdMaW50IG1TdGVuY2lsU2l6ZTsgICAgICAgICAgICAgLy8gQml0cyBvZiBT
dGVuY2lsIGluIHRoZSBzdGVuY2lsIGJ1ZmZlcgorICAgIEVHTGludCBtU3VyZmFjZVR5cGU7ICAg
ICAgICAgICAgIC8vIFdoaWNoIHR5cGVzIG9mIEVHTCBzdXJmYWNlcyBhcmUgc3VwcG9ydGVkLgor
ICAgIEVHTGVudW0gbVRyYW5zcGFyZW50VHlwZTsgICAgICAgIC8vIFR5cGUgb2YgdHJhbnNwYXJl
bmN5IHN1cHBvcnRlZAorICAgIEVHTGludCBtVHJhbnNwYXJlbnRSZWRWYWx1ZTsgICAgIC8vIFRy
YW5zcGFyZW50IHJlZCB2YWx1ZQorICAgIEVHTGludCBtVHJhbnNwYXJlbnRHcmVlblZhbHVlOyAg
IC8vIFRyYW5zcGFyZW50IGdyZWVuIHZhbHVlCisgICAgRUdMaW50IG1UcmFuc3BhcmVudEJsdWVW
YWx1ZTsgICAgLy8gVHJhbnNwYXJlbnQgYmx1ZSB2YWx1ZQorfTsKKworLy8gRnVuY3Rpb24gb2Jq
ZWN0IHVzZWQgYnkgU1RMIHNvcnRpbmcgcm91dGluZXMgZm9yIG9yZGVyaW5nIENvbmZpZ3MgYWNj
b3JkaW5nIHRvIFtFR0xdIHNlY3Rpb24gMy40LjEgcGFnZSAyNC4KK2NsYXNzIFNvcnRDb25maWcK
K3sKKyAgcHVibGljOgorICAgIGV4cGxpY2l0IFNvcnRDb25maWcoY29uc3QgRUdMaW50ICphdHRy
aWJMaXN0KTsKKworICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBDb25maWcgKngsIGNvbnN0IENv
bmZpZyAqeSkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IENvbmZpZyAmeCwgY29u
c3QgQ29uZmlnICZ5KSBjb25zdDsKKworICBwcml2YXRlOgorICAgIHZvaWQgc2NhbkZvcldhbnRl
ZENvbXBvbmVudHMoY29uc3QgRUdMaW50ICphdHRyaWJMaXN0KTsKKyAgICBFR0xpbnQgd2FudGVk
Q29tcG9uZW50c1NpemUoY29uc3QgQ29uZmlnICZjb25maWcpIGNvbnN0OworCisgICAgYm9vbCBt
V2FudFJlZDsKKyAgICBib29sIG1XYW50R3JlZW47CisgICAgYm9vbCBtV2FudEJsdWU7CisgICAg
Ym9vbCBtV2FudEFscGhhOworICAgIGJvb2wgbVdhbnRMdW1pbmFuY2U7Cit9OworCitjbGFzcyBD
b25maWdTZXQKK3sKKyAgICBmcmllbmQgRGlzcGxheTsKKworICBwdWJsaWM6CisgICAgQ29uZmln
U2V0KCk7CisKKyAgICB2b2lkIGFkZChyeDo6Q29uZmlnRGVzYyBkZXNjLCBFR0xpbnQgbWluU3dh
cEludGVydmFsLCBFR0xpbnQgbWF4U3dhcEludGVydmFsLCBFR0xpbnQgdGV4V2lkdGgsIEVHTGlu
dCB0ZXhIZWlnaHQpOworICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CisgICAgYm9vbCBnZXRDb25m
aWdzKEVHTENvbmZpZyAqY29uZmlncywgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0LCBFR0xpbnQg
Y29uZmlnU2l6ZSwgRUdMaW50ICpudW1Db25maWcpOworICAgIGNvbnN0IGVnbDo6Q29uZmlnICpn
ZXQoRUdMQ29uZmlnIGNvbmZpZ0hhbmRsZSk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19D
T1BZX0FORF9BU1NJR04oQ29uZmlnU2V0KTsKKworICAgIHR5cGVkZWYgc3RkOjpzZXQ8Q29uZmln
LCBTb3J0Q29uZmlnPiBTZXQ7CisgICAgdHlwZWRlZiBTZXQ6Oml0ZXJhdG9yIEl0ZXJhdG9yOwor
ICAgIFNldCBtU2V0OworCisgICAgc3RhdGljIGNvbnN0IEVHTGludCBtU29ydEF0dHJpYnNbXTsK
K307Cit9CisKKyNlbmRpZiAgIC8vIElOQ0xVREVfQ09ORklHX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0Rpc3BsYXkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvRGlzcGxheS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0Rpc3BsYXkuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUzNyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRGlzcGxheS5j
cHA6IEltcGxlbWVudHMgdGhlIGVnbDo6RGlzcGxheSBjbGFzcywgcmVwcmVzZW50aW5nIHRoZSBh
YnN0cmFjdAorLy8gZGlzcGxheSBvbiB3aGljaCBncmFwaGljcyBhcmUgZHJhd24uIEltcGxlbWVu
dHMgRUdMRGlzcGxheS4KKy8vIFtFR0wgMS40XSBzZWN0aW9uIDIuMS4yIHBhZ2UgMy4KKworI2lu
Y2x1ZGUgImxpYkVHTC9EaXNwbGF5LmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVk
ZSA8bWFwPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWlu
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvU3dhcENoYWluLmgiCisKKyNpbmNsdWRlICJsaWJFR0wvbWFpbi5oIgorI2luY2x1
ZGUgImxpYkVHTC9TdXJmYWNlLmgiCisKK25hbWVzcGFjZSBlZ2wKK3sKK25hbWVzcGFjZQorewor
ICAgIHR5cGVkZWYgc3RkOjptYXA8RUdMTmF0aXZlRGlzcGxheVR5cGUsIERpc3BsYXkqPiBEaXNw
bGF5TWFwOyAKKyAgICBEaXNwbGF5TWFwIGRpc3BsYXlzOworfQorCitlZ2w6OkRpc3BsYXkgKkRp
c3BsYXk6OmdldERpc3BsYXkoRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheUlkKQoreworICAg
IGlmIChkaXNwbGF5cy5maW5kKGRpc3BsYXlJZCkgIT0gZGlzcGxheXMuZW5kKCkpCisgICAgewor
ICAgICAgICByZXR1cm4gZGlzcGxheXNbZGlzcGxheUlkXTsKKyAgICB9CisgICAgCisgICAgLy8g
RklYTUU6IENoZWNrIGlmIGRpc3BsYXlJZCBpcyBhIHZhbGlkIGRpc3BsYXkgZGV2aWNlIGNvbnRl
eHQKKworICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IG5ldyBlZ2w6OkRpc3BsYXkoZGlzcGxh
eUlkLCAoSERDKWRpc3BsYXlJZCk7CisKKyAgICBkaXNwbGF5c1tkaXNwbGF5SWRdID0gZGlzcGxh
eTsKKyAgICByZXR1cm4gZGlzcGxheTsKK30KKworRGlzcGxheTo6RGlzcGxheShFR0xOYXRpdmVE
aXNwbGF5VHlwZSBkaXNwbGF5SWQsIEhEQyBkZXZpY2VDb250ZXh0KSA6IG1EYyhkZXZpY2VDb250
ZXh0KQoreworICAgIG1EaXNwbGF5SWQgPSBkaXNwbGF5SWQ7CisgICAgbVJlbmRlcmVyID0gTlVM
TDsKK30KKworRGlzcGxheTo6fkRpc3BsYXkoKQoreworICAgIHRlcm1pbmF0ZSgpOworCisgICAg
RGlzcGxheU1hcDo6aXRlcmF0b3IgdGhpc0Rpc3BsYXkgPSBkaXNwbGF5cy5maW5kKG1EaXNwbGF5
SWQpOworCisgICAgaWYgKHRoaXNEaXNwbGF5ICE9IGRpc3BsYXlzLmVuZCgpKQorICAgIHsKKyAg
ICAgICAgZGlzcGxheXMuZXJhc2UodGhpc0Rpc3BsYXkpOworICAgIH0KK30KKworYm9vbCBEaXNw
bGF5Ojppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgbVJlbmRlcmVyID0gZ2xDcmVhdGVSZW5k
ZXJlcih0aGlzLCBtRGMsIG1EaXNwbGF5SWQpOworICAgIAorICAgIGlmICghbVJlbmRlcmVyKQor
ICAgIHsKKyAgICAgICAgdGVybWluYXRlKCk7CisgICAgICAgIHJldHVybiBlcnJvcihFR0xfTk9U
X0lOSVRJQUxJWkVELCBmYWxzZSk7CisgICAgfQorCisgICAgRUdMaW50IG1pblN3YXBJbnRlcnZh
bCA9IG1SZW5kZXJlci0+Z2V0TWluU3dhcEludGVydmFsKCk7CisgICAgRUdMaW50IG1heFN3YXBJ
bnRlcnZhbCA9IG1SZW5kZXJlci0+Z2V0TWF4U3dhcEludGVydmFsKCk7CisgICAgRUdMaW50IG1h
eFRleHR1cmVXaWR0aCA9IG1SZW5kZXJlci0+Z2V0TWF4VGV4dHVyZVdpZHRoKCk7CisgICAgRUdM
aW50IG1heFRleHR1cmVIZWlnaHQgPSBtUmVuZGVyZXItPmdldE1heFRleHR1cmVIZWlnaHQoKTsK
KworICAgIHJ4OjpDb25maWdEZXNjICpkZXNjTGlzdDsKKyAgICBpbnQgbnVtQ29uZmlncyA9IG1S
ZW5kZXJlci0+Z2VuZXJhdGVDb25maWdzKCZkZXNjTGlzdCk7CisgICAgQ29uZmlnU2V0IGNvbmZp
Z1NldDsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29uZmlnczsgKytpKQorICAgICAg
ICBjb25maWdTZXQuYWRkKGRlc2NMaXN0W2ldLCBtaW5Td2FwSW50ZXJ2YWwsIG1heFN3YXBJbnRl
cnZhbCwKKyAgICAgICAgICAgICAgICAgICAgICBtYXhUZXh0dXJlV2lkdGgsIG1heFRleHR1cmVI
ZWlnaHQpOworCisgICAgLy8gR2l2ZSB0aGUgc29ydGVkIGNvbmZpZ3MgYSB1bmlxdWUgSUQgYW5k
IHN0b3JlIHRoZW0gaW50ZXJuYWxseQorICAgIEVHTGludCBpbmRleCA9IDE7CisgICAgZm9yIChD
b25maWdTZXQ6Okl0ZXJhdG9yIGNvbmZpZyA9IGNvbmZpZ1NldC5tU2V0LmJlZ2luKCk7IGNvbmZp
ZyAhPSBjb25maWdTZXQubVNldC5lbmQoKTsgY29uZmlnKyspCisgICAgeworICAgICAgICBDb25m
aWcgY29uZmlndXJhdGlvbiA9ICpjb25maWc7CisgICAgICAgIGNvbmZpZ3VyYXRpb24ubUNvbmZp
Z0lEID0gaW5kZXg7CisgICAgICAgIGluZGV4Kys7CisKKyAgICAgICAgbUNvbmZpZ1NldC5tU2V0
Lmluc2VydChjb25maWd1cmF0aW9uKTsKKyAgICB9CisKKyAgICBtUmVuZGVyZXItPmRlbGV0ZUNv
bmZpZ3MoZGVzY0xpc3QpOworICAgIGRlc2NMaXN0ID0gTlVMTDsKKworICAgIGlmICghaXNJbml0
aWFsaXplZCgpKQorICAgIHsKKyAgICAgICAgdGVybWluYXRlKCk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBpbml0RXh0ZW5zaW9uU3RyaW5nKCk7CisgICAgaW5pdFZlbmRv
clN0cmluZygpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRGlzcGxheTo6dGVybWlu
YXRlKCkKK3sKKyAgICB3aGlsZSAoIW1TdXJmYWNlU2V0LmVtcHR5KCkpCisgICAgeworICAgICAg
ICBkZXN0cm95U3VyZmFjZSgqbVN1cmZhY2VTZXQuYmVnaW4oKSk7CisgICAgfQorCisgICAgd2hp
bGUgKCFtQ29udGV4dFNldC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVzdHJveUNvbnRleHQo
Km1Db250ZXh0U2V0LmJlZ2luKCkpOworICAgIH0KKworICAgIGdsRGVzdHJveVJlbmRlcmVyKG1S
ZW5kZXJlcik7CisgICAgbVJlbmRlcmVyID0gTlVMTDsKK30KKworYm9vbCBEaXNwbGF5OjpnZXRD
b25maWdzKEVHTENvbmZpZyAqY29uZmlncywgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0LCBFR0xp
bnQgY29uZmlnU2l6ZSwgRUdMaW50ICpudW1Db25maWcpCit7CisgICAgcmV0dXJuIG1Db25maWdT
ZXQuZ2V0Q29uZmlncyhjb25maWdzLCBhdHRyaWJMaXN0LCBjb25maWdTaXplLCBudW1Db25maWcp
OworfQorCitib29sIERpc3BsYXk6OmdldENvbmZpZ0F0dHJpYihFR0xDb25maWcgY29uZmlnLCBF
R0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKQoreworICAgIGNvbnN0IGVnbDo6Q29uZmln
ICpjb25maWd1cmF0aW9uID0gbUNvbmZpZ1NldC5nZXQoY29uZmlnKTsKKworICAgIHN3aXRjaCAo
YXR0cmlidXRlKQorICAgIHsKKyAgICAgIGNhc2UgRUdMX0JVRkZFUl9TSVpFOiAgICAgICAgICAg
ICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1CdWZmZXJTaXplOyAgICAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgRUdMX0FMUEhBX1NJWkU6ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNv
bmZpZ3VyYXRpb24tPm1BbHBoYVNpemU7ICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
RUdMX0JMVUVfU0laRTogICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1C
bHVlU2l6ZTsgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0dSRUVOX1NJWkU6
ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1HcmVlblNpemU7ICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1JFRF9TSVpFOiAgICAgICAgICAgICAgICAg
ICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1SZWRTaXplOyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgRUdMX0RFUFRIX1NJWkU6ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZp
Z3VyYXRpb24tPm1EZXB0aFNpemU7ICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdM
X1NURU5DSUxfU0laRTogICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1TdGVu
Y2lsU2l6ZTsgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0NPTkZJR19DQVZFQVQ6
ICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1Db25maWdDYXZlYXQ7ICAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0NPTkZJR19JRDogICAgICAgICAgICAgICAgICp2
YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1Db25maWdJRDsgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgRUdMX0xFVkVMOiAgICAgICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3Vy
YXRpb24tPm1MZXZlbDsgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX05B
VElWRV9SRU5ERVJBQkxFOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1OYXRpdmVS
ZW5kZXJhYmxlOyAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX05BVElWRV9WSVNVQUxfVFlQ
RTogICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1OYXRpdmVWaXN1YWxUeXBlOyAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1NBTVBMRVM6ICAgICAgICAgICAgICAgICAgICp2YWx1
ZSA9IGNvbmZpZ3VyYXRpb24tPm1TYW1wbGVzOyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgRUdMX1NBTVBMRV9CVUZGRVJTOiAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRp
b24tPm1TYW1wbGVCdWZmZXJzOyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1NVUkZB
Q0VfVFlQRTogICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1TdXJmYWNlVHlw
ZTsgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX1RZUEU6ICAg
ICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1UcmFuc3BhcmVudFR5cGU7ICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX0JMVUVfVkFMVUU6ICAgICp2YWx1ZSA9
IGNvbmZpZ3VyYXRpb24tPm1UcmFuc3BhcmVudEJsdWVWYWx1ZTsgICBicmVhazsKKyAgICAgIGNh
c2UgRUdMX1RSQU5TUEFSRU5UX0dSRUVOX1ZBTFVFOiAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24t
Pm1UcmFuc3BhcmVudEdyZWVuVmFsdWU7ICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1RSQU5TUEFS
RU5UX1JFRF9WQUxVRTogICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1UcmFuc3BhcmVudFJl
ZFZhbHVlOyAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0I6ICAg
ICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1CaW5kVG9UZXh0dXJlUkdCOyAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0JBOiAgICAgICp2YWx1ZSA9IGNv
bmZpZ3VyYXRpb24tPm1CaW5kVG9UZXh0dXJlUkdCQTsgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
RUdMX01JTl9TV0FQX0lOVEVSVkFMOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1N
aW5Td2FwSW50ZXJ2YWw7ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01BWF9TV0FQX0lO
VEVSVkFMOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1NYXhTd2FwSW50ZXJ2YWw7
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX0xVTUlOQU5DRV9TSVpFOiAgICAgICAgICAg
ICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1MdW1pbmFuY2VTaXplOyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgRUdMX0FMUEhBX01BU0tfU0laRTogICAgICAgICAgICp2YWx1ZSA9IGNvbmZp
Z3VyYXRpb24tPm1BbHBoYU1hc2tTaXplOyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdM
X0NPTE9SX0JVRkZFUl9UWVBFOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1Db2xv
ckJ1ZmZlclR5cGU7ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1JFTkRFUkFCTEVfVFlQ
RTogICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1SZW5kZXJhYmxlVHlwZTsgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01BVENIX05BVElWRV9QSVhNQVA6ICAgICAgICp2
YWx1ZSA9IGZhbHNlOyBVTklNUExFTUVOVEVEKCk7ICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgRUdMX0NPTkZPUk1BTlQ6ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3Vy
YXRpb24tPm1Db25mb3JtYW50OyAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01B
WF9QQlVGRkVSX1dJRFRIOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1NYXhQQnVm
ZmVyV2lkdGg7ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX0hFSUdI
VDogICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1NYXhQQnVmZmVySGVpZ2h0OyAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX1BJWEVMUzogICAgICAgICp2YWx1
ZSA9IGNvbmZpZ3VyYXRpb24tPm1NYXhQQnVmZmVyUGl4ZWxzOyAgICAgICBicmVhazsKKyAgICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworCisKK0VHTFN1cmZhY2UgRGlzcGxheTo6Y3JlYXRlV2luZG93U3VyZmFjZShIV05E
IHdpbmRvdywgRUdMQ29uZmlnIGNvbmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0KQorewor
ICAgIGNvbnN0IENvbmZpZyAqY29uZmlndXJhdGlvbiA9IG1Db25maWdTZXQuZ2V0KGNvbmZpZyk7
CisgICAgRUdMaW50IHBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQgPSBFR0xfRkFMU0U7CisKKyAgICBp
ZiAoYXR0cmliTGlzdCkKKyAgICB7CisgICAgICAgIHdoaWxlICgqYXR0cmliTGlzdCAhPSBFR0xf
Tk9ORSkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhdHRyaWJMaXN0WzBdKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEVHTF9SRU5ERVJfQlVGRkVSOgorICAgICAg
ICAgICAgICAgIHN3aXRjaCAoYXR0cmliTGlzdFsxXSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICBjYXNlIEVHTF9CQUNLX0JVRkZFUjoKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9TSU5HTEVfQlVGRkVSOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX05PX1NVUkZBQ0Up
OyAgIC8vIFJlbmRlcmluZyBkaXJlY3RseSB0byBmcm9udCBidWZmZXIgbm90IHN1cHBvcnRlZAor
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yKEVHTF9CQURfQVRUUklCVVRFLCBFR0xfTk9fU1VSRkFDRSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9QT1NUX1NV
Ql9CVUZGRVJfU1VQUE9SVEVEX05WOgorICAgICAgICAgICAgICAgIHBvc3RTdWJCdWZmZXJTdXBw
b3J0ZWQgPSBhdHRyaWJMaXN0WzFdOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIEVHTF9WR19DT0xPUlNQQUNFOgorICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cihFR0xfQkFEX01BVENILCBFR0xfTk9fU1VSRkFDRSk7CisgICAgICAgICAgICAgIGNhc2UgRUdM
X1ZHX0FMUEhBX0ZPUk1BVDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9N
QVRDSCwgRUdMX05PX1NVUkZBQ0UpOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdHRyaWJMaXN0ICs9IDI7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoaGFzRXhpc3RpbmdXaW5kb3dTdXJmYWNlKHdpbmRvdykpCisgICAg
eworICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX05PX1NVUkZBQ0UpOwor
ICAgIH0KKworICAgIGlmIChtUmVuZGVyZXItPnRlc3REZXZpY2VMb3N0KGZhbHNlKSkKKyAgICB7
CisgICAgICAgIGlmICghcmVzdG9yZUxvc3REZXZpY2UoKSkKKyAgICAgICAgICAgIHJldHVybiBF
R0xfTk9fU1VSRkFDRTsKKyAgICB9CisKKyAgICBTdXJmYWNlICpzdXJmYWNlID0gbmV3IFN1cmZh
Y2UodGhpcywgY29uZmlndXJhdGlvbiwgd2luZG93LCBwb3N0U3ViQnVmZmVyU3VwcG9ydGVkKTsK
KworICAgIGlmICghc3VyZmFjZS0+aW5pdGlhbGl6ZSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRl
IHN1cmZhY2U7CisgICAgICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKKyAgICB9CisKKyAgICBt
U3VyZmFjZVNldC5pbnNlcnQoc3VyZmFjZSk7CisKKyAgICByZXR1cm4gc3VjY2VzcyhzdXJmYWNl
KTsKK30KKworRUdMU3VyZmFjZSBEaXNwbGF5OjpjcmVhdGVPZmZzY3JlZW5TdXJmYWNlKEVHTENv
bmZpZyBjb25maWcsIEhBTkRMRSBzaGFyZUhhbmRsZSwgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0
KQoreworICAgIEVHTGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7CisgICAgRUdMZW51bSB0ZXh0
dXJlRm9ybWF0ID0gRUdMX05PX1RFWFRVUkU7CisgICAgRUdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0g
RUdMX05PX1RFWFRVUkU7CisgICAgY29uc3QgQ29uZmlnICpjb25maWd1cmF0aW9uID0gbUNvbmZp
Z1NldC5nZXQoY29uZmlnKTsKKworICAgIGlmIChhdHRyaWJMaXN0KQorICAgIHsKKyAgICAgICAg
d2hpbGUgKCphdHRyaWJMaXN0ICE9IEVHTF9OT05FKQorICAgICAgICB7CisgICAgICAgICAgICBz
d2l0Y2ggKGF0dHJpYkxpc3RbMF0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2Ug
RUdMX1dJRFRIOgorICAgICAgICAgICAgICAgIHdpZHRoID0gYXR0cmliTGlzdFsxXTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfSEVJR0hUOgorICAgICAg
ICAgICAgICAgIGhlaWdodCA9IGF0dHJpYkxpc3RbMV07CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgRUdMX0xBUkdFU1RfUEJVRkZFUjoKKyAgICAgICAgICAgICAg
ICBpZiAoYXR0cmliTGlzdFsxXSAhPSBFR0xfRkFMU0UpCisgICAgICAgICAgICAgICAgICBVTklN
UExFTUVOVEVEKCk7IC8vIEZJWE1FCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgRUdMX1RFWFRVUkVfRk9STUFUOgorICAgICAgICAgICAgICAgIHN3aXRjaCAoYXR0
cmliTGlzdFsxXSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlIEVH
TF9OT19URVhUVVJFOgorICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfVEVYVFVSRV9SR0I6Cisg
ICAgICAgICAgICAgICAgICBjYXNlIEVHTF9URVhUVVJFX1JHQkE6CisgICAgICAgICAgICAgICAg
ICAgIHRleHR1cmVGb3JtYXQgPSBhdHRyaWJMaXN0WzFdOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xf
VEVYVFVSRV9UQVJHRVQ6CisgICAgICAgICAgICAgICAgc3dpdGNoIChhdHRyaWJMaXN0WzFdKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX05PX1RFWFRVUkU6
CisgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9URVhUVVJFXzJEOgorICAgICAgICAgICAgICAg
ICAgICB0ZXh0dXJlVGFyZ2V0ID0gYXR0cmliTGlzdFsxXTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdM
X01JUE1BUF9URVhUVVJFOgorICAgICAgICAgICAgICAgIGlmIChhdHRyaWJMaXN0WzFdICE9IEVH
TF9GQUxTRSkKKyAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVU
RSwgRUdMX05PX1NVUkZBQ0UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIEVHTF9WR19DT0xPUlNQQUNFOgorICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihF
R0xfQkFEX01BVENILCBFR0xfTk9fU1VSRkFDRSk7CisgICAgICAgICAgICAgIGNhc2UgRUdMX1ZH
X0FMUEhBX0ZPUk1BVDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9NQVRD
SCwgRUdMX05PX1NVUkZBQ0UpOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBhdHRyaWJMaXN0ICs9IDI7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisgICAgeworICAgICAgICBy
ZXR1cm4gZXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsIEVHTF9OT19TVVJGQUNFKTsKKyAgICB9CisK
KyAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVy
biBlcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgRUdMX05PX1NVUkZBQ0UpOworICAgIH0KKworICAg
IGlmICh0ZXh0dXJlRm9ybWF0ICE9IEVHTF9OT19URVhUVVJFICYmICFtUmVuZGVyZXItPmdldE5v
blBvd2VyMlRleHR1cmVTdXBwb3J0KCkgJiYgKCFnbDo6aXNQb3cyKHdpZHRoKSB8fCAhZ2w6Omlz
UG93MihoZWlnaHQpKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX01BVENI
LCBFR0xfTk9fU1VSRkFDRSk7CisgICAgfQorCisgICAgaWYgKCh0ZXh0dXJlRm9ybWF0ICE9IEVH
TF9OT19URVhUVVJFICYmIHRleHR1cmVUYXJnZXQgPT0gRUdMX05PX1RFWFRVUkUpIHx8CisgICAg
ICAgICh0ZXh0dXJlRm9ybWF0ID09IEVHTF9OT19URVhUVVJFICYmIHRleHR1cmVUYXJnZXQgIT0g
RUdMX05PX1RFWFRVUkUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfTUFU
Q0gsIEVHTF9OT19TVVJGQUNFKTsKKyAgICB9CisKKyAgICBpZiAoIShjb25maWd1cmF0aW9uLT5t
U3VyZmFjZVR5cGUgJiBFR0xfUEJVRkZFUl9CSVQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVy
cm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9OT19TVVJGQUNFKTsKKyAgICB9CisKKyAgICBpZiAoKHRl
eHR1cmVGb3JtYXQgPT0gRUdMX1RFWFRVUkVfUkdCICYmIGNvbmZpZ3VyYXRpb24tPm1CaW5kVG9U
ZXh0dXJlUkdCICE9IEVHTF9UUlVFKSB8fAorICAgICAgICAodGV4dHVyZUZvcm1hdCA9PSBFR0xf
VEVYVFVSRV9SR0JBICYmIGNvbmZpZ3VyYXRpb24tPm1CaW5kVG9UZXh0dXJlUkdCQSAhPSBFR0xf
VFJVRSkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVH
TF9OT19TVVJGQUNFKTsKKyAgICB9CisKKyAgICBpZiAobVJlbmRlcmVyLT50ZXN0RGV2aWNlTG9z
dChmYWxzZSkpCisgICAgeworICAgICAgICBpZiAoIXJlc3RvcmVMb3N0RGV2aWNlKCkpCisgICAg
ICAgICAgICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7CisgICAgfQorCisgICAgU3VyZmFjZSAqc3Vy
ZmFjZSA9IG5ldyBTdXJmYWNlKHRoaXMsIGNvbmZpZ3VyYXRpb24sIHNoYXJlSGFuZGxlLCB3aWR0
aCwgaGVpZ2h0LCB0ZXh0dXJlRm9ybWF0LCB0ZXh0dXJlVGFyZ2V0KTsKKworICAgIGlmICghc3Vy
ZmFjZS0+aW5pdGlhbGl6ZSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHN1cmZhY2U7CisgICAg
ICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKKyAgICB9CisKKyAgICBtU3VyZmFjZVNldC5pbnNl
cnQoc3VyZmFjZSk7CisKKyAgICByZXR1cm4gc3VjY2VzcyhzdXJmYWNlKTsKK30KKworRUdMQ29u
dGV4dCBEaXNwbGF5OjpjcmVhdGVDb250ZXh0KEVHTENvbmZpZyBjb25maWdIYW5kbGUsIGNvbnN0
IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsIGJvb2wgbm90aWZ5UmVzZXRzLCBib29sIHJvYnVz
dEFjY2VzcykKK3sKKyAgICBpZiAoIW1SZW5kZXJlcikKKyAgICB7CisgICAgICAgIHJldHVybiBO
VUxMOworICAgIH0KKyAgICBlbHNlIGlmIChtUmVuZGVyZXItPnRlc3REZXZpY2VMb3N0KGZhbHNl
KSkgICAvLyBMb3N0IGRldmljZQorICAgIHsKKyAgICAgICAgaWYgKCFyZXN0b3JlTG9zdERldmlj
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbENyZWF0ZUNvbnRleHQoc2hhcmVDb250ZXh0LCBtUmVuZGVyZXIsIG5vdGlm
eVJlc2V0cywgcm9idXN0QWNjZXNzKTsKKyAgICBtQ29udGV4dFNldC5pbnNlcnQoY29udGV4dCk7
CisKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworYm9vbCBEaXNwbGF5OjpyZXN0b3JlTG9zdERl
dmljZSgpCit7CisgICAgZm9yIChDb250ZXh0U2V0OjppdGVyYXRvciBjdHggPSBtQ29udGV4dFNl
dC5iZWdpbigpOyBjdHggIT0gbUNvbnRleHRTZXQuZW5kKCk7IGN0eCsrKQorICAgIHsKKyAgICAg
ICAgaWYgKCgqY3R4KS0+aXNSZXNldE5vdGlmaWNhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsgICAvLyBJZiByZXNldCBub3RpZmljYXRpb25zIGhhdmUgYmVlbiByZXF1
ZXN0ZWQsIGFwcGxpY2F0aW9uIG11c3QgZGVsZXRlIGFsbCBjb250ZXh0cyBmaXJzdAorICAgIH0K
KyAKKyAgICAvLyBSZWxlYXNlIHN1cmZhY2UgcmVzb3VyY2VzIHRvIG1ha2UgdGhlIFJlc2V0KCkg
c3VjY2VlZAorICAgIGZvciAoU3VyZmFjZVNldDo6aXRlcmF0b3Igc3VyZmFjZSA9IG1TdXJmYWNl
U2V0LmJlZ2luKCk7IHN1cmZhY2UgIT0gbVN1cmZhY2VTZXQuZW5kKCk7IHN1cmZhY2UrKykKKyAg
ICB7CisgICAgICAgICgqc3VyZmFjZSktPnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBpZiAoIW1S
ZW5kZXJlci0+cmVzZXREZXZpY2UoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihFR0xf
QkFEX0FMTE9DLCBmYWxzZSk7CisgICAgfQorCisgICAgLy8gUmVzdG9yZSBhbnkgc3VyZmFjZXMg
dGhhdCBtYXkgaGF2ZSBiZWVuIGxvc3QKKyAgICBmb3IgKFN1cmZhY2VTZXQ6Oml0ZXJhdG9yIHN1
cmZhY2UgPSBtU3VyZmFjZVNldC5iZWdpbigpOyBzdXJmYWNlICE9IG1TdXJmYWNlU2V0LmVuZCgp
OyBzdXJmYWNlKyspCisgICAgeworICAgICAgICAoKnN1cmZhY2UpLT5yZXNldFN3YXBDaGFpbigp
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisKK3ZvaWQgRGlzcGxheTo6ZGVzdHJv
eVN1cmZhY2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKQoreworICAgIGRlbGV0ZSBzdXJmYWNlOwor
ICAgIG1TdXJmYWNlU2V0LmVyYXNlKHN1cmZhY2UpOworfQorCit2b2lkIERpc3BsYXk6OmRlc3Ry
b3lDb250ZXh0KGdsOjpDb250ZXh0ICpjb250ZXh0KQoreworICAgIGdsRGVzdHJveUNvbnRleHQo
Y29udGV4dCk7CisgICAgbUNvbnRleHRTZXQuZXJhc2UoY29udGV4dCk7Cit9CisKK3ZvaWQgRGlz
cGxheTo6bm90aWZ5RGV2aWNlTG9zdCgpCit7CisgICAgZm9yIChDb250ZXh0U2V0OjppdGVyYXRv
ciBjb250ZXh0ID0gbUNvbnRleHRTZXQuYmVnaW4oKTsgY29udGV4dCAhPSBtQ29udGV4dFNldC5l
bmQoKTsgY29udGV4dCsrKQorICAgIHsKKyAgICAgICAgKCpjb250ZXh0KS0+bWFya0NvbnRleHRM
b3N0KCk7CisgICAgfQorICAgIGVnbDo6ZXJyb3IoRUdMX0NPTlRFWFRfTE9TVCk7Cit9CisKK3Zv
aWQgRGlzcGxheTo6cmVjcmVhdGVTd2FwQ2hhaW5zKCkKK3sKKyAgICBmb3IgKFN1cmZhY2VTZXQ6
Oml0ZXJhdG9yIHN1cmZhY2UgPSBtU3VyZmFjZVNldC5iZWdpbigpOyBzdXJmYWNlICE9IG1TdXJm
YWNlU2V0LmVuZCgpOyBzdXJmYWNlKyspCisgICAgeworICAgICAgICAoKnN1cmZhY2UpLT5nZXRT
d2FwQ2hhaW4oKS0+cmVjcmVhdGUoKTsKKyAgICB9Cit9CisKK2Jvb2wgRGlzcGxheTo6aXNJbml0
aWFsaXplZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlciAhPSBOVUxMICYmIG1Db25m
aWdTZXQuc2l6ZSgpID4gMDsKK30KKworYm9vbCBEaXNwbGF5Ojppc1ZhbGlkQ29uZmlnKEVHTENv
bmZpZyBjb25maWcpCit7CisgICAgcmV0dXJuIG1Db25maWdTZXQuZ2V0KGNvbmZpZykgIT0gTlVM
TDsKK30KKworYm9vbCBEaXNwbGF5Ojppc1ZhbGlkQ29udGV4dChnbDo6Q29udGV4dCAqY29udGV4
dCkKK3sKKyAgICByZXR1cm4gbUNvbnRleHRTZXQuZmluZChjb250ZXh0KSAhPSBtQ29udGV4dFNl
dC5lbmQoKTsKK30KKworYm9vbCBEaXNwbGF5Ojppc1ZhbGlkU3VyZmFjZShlZ2w6OlN1cmZhY2Ug
KnN1cmZhY2UpCit7CisgICAgcmV0dXJuIG1TdXJmYWNlU2V0LmZpbmQoc3VyZmFjZSkgIT0gbVN1
cmZhY2VTZXQuZW5kKCk7Cit9CisKK2Jvb2wgRGlzcGxheTo6aGFzRXhpc3RpbmdXaW5kb3dTdXJm
YWNlKEhXTkQgd2luZG93KQoreworICAgIGZvciAoU3VyZmFjZVNldDo6aXRlcmF0b3Igc3VyZmFj
ZSA9IG1TdXJmYWNlU2V0LmJlZ2luKCk7IHN1cmZhY2UgIT0gbVN1cmZhY2VTZXQuZW5kKCk7IHN1
cmZhY2UrKykKKyAgICB7CisgICAgICAgIGlmICgoKnN1cmZhY2UpLT5nZXRXaW5kb3dIYW5kbGUo
KSA9PSB3aW5kb3cpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIERpc3BsYXk6OmluaXRF
eHRlbnNpb25TdHJpbmcoKQoreworICAgIEhNT0RVTEUgc3dpZnRTaGFkZXIgPSBHZXRNb2R1bGVI
YW5kbGUoVEVYVCgic3dpZnRzaGFkZXJfZDNkOS5kbGwiKSk7CisgICAgYm9vbCBzaGFyZUhhbmRs
ZVN1cHBvcnRlZCA9IG1SZW5kZXJlci0+Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KCk7CisKKyAgICBt
RXh0ZW5zaW9uU3RyaW5nID0gIiI7CisKKyAgICAvLyBNdWx0aS12ZW5kb3IgKEVYVCkgZXh0ZW5z
aW9ucworICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9i
dXN0bmVzcyAiOworCisgICAgLy8gQU5HTEUtc3BlY2lmaWMgZXh0ZW5zaW9ucworICAgIGlmIChz
aGFyZUhhbmRsZVN1cHBvcnRlZCkKKyAgICB7CisgICAgICAgIG1FeHRlbnNpb25TdHJpbmcgKz0g
IkVHTF9BTkdMRV9kM2Rfc2hhcmVfaGFuZGxlX2NsaWVudF9idWZmZXIgIjsKKyAgICB9CisKKyAg
ICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJFR0xfQU5HTEVfcXVlcnlfc3VyZmFjZV9wb2ludGVyICI7
CisKKyAgICBpZiAoc3dpZnRTaGFkZXIpCisgICAgeworICAgICAgICBtRXh0ZW5zaW9uU3RyaW5n
ICs9ICJFR0xfQU5HTEVfc29mdHdhcmVfZGlzcGxheSAiOworICAgIH0KKworICAgIGlmIChzaGFy
ZUhhbmRsZVN1cHBvcnRlZCkKKyAgICB7CisgICAgICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkVH
TF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZSAiOworICAgIH0KKwor
ICAgIGlmIChtUmVuZGVyZXItPmdldFBvc3RTdWJCdWZmZXJTdXBwb3J0KCkpCisgICAgeworICAg
ICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJFR0xfTlZfcG9zdF9zdWJfYnVmZmVyIjsKKyAgICB9
CisKKyAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGVuZCA9IG1FeHRlbnNpb25TdHJpbmcuZmlu
ZF9sYXN0X25vdF9vZignICcpOworICAgIGlmIChlbmQgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCisg
ICAgeworICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nLnJlc2l6ZShlbmQrMSk7CisgICAgfQorfQor
Citjb25zdCBjaGFyICpEaXNwbGF5OjpnZXRFeHRlbnNpb25TdHJpbmcoKSBjb25zdAoreworICAg
IHJldHVybiBtRXh0ZW5zaW9uU3RyaW5nLmNfc3RyKCk7Cit9CisKK3ZvaWQgRGlzcGxheTo6aW5p
dFZlbmRvclN0cmluZygpCit7CisgICAgbVZlbmRvclN0cmluZyA9ICJHb29nbGUgSW5jLiI7CisK
KyAgICBMVUlEIGFkYXB0ZXJMdWlkID0gezB9OworCisgICAgaWYgKG1SZW5kZXJlciAmJiBtUmVu
ZGVyZXItPmdldExVSUQoJmFkYXB0ZXJMdWlkKSkKKyAgICB7CisgICAgICAgIGNoYXIgYWRhcHRl
ckx1aWRTdHJpbmdbNjRdOworICAgICAgICBzcHJpbnRmX3MoYWRhcHRlckx1aWRTdHJpbmcsIHNp
emVvZihhZGFwdGVyTHVpZFN0cmluZyksICIgKGFkYXB0ZXIgTFVJRDogJTA4eCUwOHgpIiwgYWRh
cHRlckx1aWQuSGlnaFBhcnQsIGFkYXB0ZXJMdWlkLkxvd1BhcnQpOworCisgICAgICAgIG1WZW5k
b3JTdHJpbmcgKz0gYWRhcHRlckx1aWRTdHJpbmc7CisgICAgfQorfQorCitjb25zdCBjaGFyICpE
aXNwbGF5OjpnZXRWZW5kb3JTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtVmVuZG9yU3Ry
aW5nLmNfc3RyKCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJFR0wvRGlzcGxheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJFR0wvRGlzcGxheS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkVHTC9EaXNwbGF5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTQgQEAKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIERpc3BsYXkuaDogRGVmaW5lcyB0aGUgZWdsOjpEaXNwbGF5
IGNsYXNzLCByZXByZXNlbnRpbmcgdGhlIGFic3RyYWN0CisvLyBkaXNwbGF5IG9uIHdoaWNoIGdy
YXBoaWNzIGFyZSBkcmF3bi4gSW1wbGVtZW50cyBFR0xEaXNwbGF5LgorLy8gW0VHTCAxLjRdIHNl
Y3Rpb24gMi4xLjIgcGFnZSAzLgorCisjaWZuZGVmIExJQkVHTF9ESVNQTEFZX0hfCisjZGVmaW5l
IExJQkVHTF9ESVNQTEFZX0hfCisKKyNpbmNsdWRlICJjb21tb24vc3lzdGVtLmgiCisKKyNpbmNs
dWRlIDxzZXQ+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAibGliRUdML0NvbmZpZy5o
IgorCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIENvbnRleHQ7Cit9CisKK25hbWVzcGFjZSBlZ2wK
K3sKK2NsYXNzIFN1cmZhY2U7CisKK2NsYXNzIERpc3BsYXkKK3sKKyAgcHVibGljOgorICAgIH5E
aXNwbGF5KCk7CisKKyAgICBib29sIGluaXRpYWxpemUoKTsKKyAgICB2b2lkIHRlcm1pbmF0ZSgp
OworCisgICAgc3RhdGljIGVnbDo6RGlzcGxheSAqZ2V0RGlzcGxheShFR0xOYXRpdmVEaXNwbGF5
VHlwZSBkaXNwbGF5SWQpOworCisgICAgYm9vbCBnZXRDb25maWdzKEVHTENvbmZpZyAqY29uZmln
cywgY29uc3QgRUdMaW50ICphdHRyaWJMaXN0LCBFR0xpbnQgY29uZmlnU2l6ZSwgRUdMaW50ICpu
dW1Db25maWcpOworICAgIGJvb2wgZ2V0Q29uZmlnQXR0cmliKEVHTENvbmZpZyBjb25maWcsIEVH
TGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpOworCisgICAgRUdMU3VyZmFjZSBjcmVhdGVX
aW5kb3dTdXJmYWNlKEhXTkQgd2luZG93LCBFR0xDb25maWcgY29uZmlnLCBjb25zdCBFR0xpbnQg
KmF0dHJpYkxpc3QpOworICAgIEVHTFN1cmZhY2UgY3JlYXRlT2Zmc2NyZWVuU3VyZmFjZShFR0xD
b25maWcgY29uZmlnLCBIQU5ETEUgc2hhcmVIYW5kbGUsIGNvbnN0IEVHTGludCAqYXR0cmliTGlz
dCk7CisgICAgRUdMQ29udGV4dCBjcmVhdGVDb250ZXh0KEVHTENvbmZpZyBjb25maWdIYW5kbGUs
IGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsIGJvb2wgbm90aWZ5UmVzZXRzLCBib29s
IHJvYnVzdEFjY2Vzcyk7CisKKyAgICB2b2lkIGRlc3Ryb3lTdXJmYWNlKGVnbDo6U3VyZmFjZSAq
c3VyZmFjZSk7CisgICAgdm9pZCBkZXN0cm95Q29udGV4dChnbDo6Q29udGV4dCAqY29udGV4dCk7
CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsKKyAgICBib29sIGlzVmFsaWRDb25m
aWcoRUdMQ29uZmlnIGNvbmZpZyk7CisgICAgYm9vbCBpc1ZhbGlkQ29udGV4dChnbDo6Q29udGV4
dCAqY29udGV4dCk7CisgICAgYm9vbCBpc1ZhbGlkU3VyZmFjZShlZ2w6OlN1cmZhY2UgKnN1cmZh
Y2UpOworICAgIGJvb2wgaGFzRXhpc3RpbmdXaW5kb3dTdXJmYWNlKEhXTkQgd2luZG93KTsKKwor
ICAgIHJ4OjpSZW5kZXJlciAqZ2V0UmVuZGVyZXIoKSB7IHJldHVybiBtUmVuZGVyZXI7IH07CisK
KyAgICAvLyBleHBvcnRlZCBtZXRob2RzIG11c3QgYmUgdmlydHVhbAorICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlEZXZpY2VMb3N0KCk7CisgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlU3dhcENoYWlu
cygpOworCisgICAgY29uc3QgY2hhciAqZ2V0RXh0ZW5zaW9uU3RyaW5nKCkgY29uc3Q7CisgICAg
Y29uc3QgY2hhciAqZ2V0VmVuZG9yU3RyaW5nKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBE
SVNBTExPV19DT1BZX0FORF9BU1NJR04oRGlzcGxheSk7CisKKyAgICBEaXNwbGF5KEVHTE5hdGl2
ZURpc3BsYXlUeXBlIGRpc3BsYXlJZCwgSERDIGRldmljZUNvbnRleHQpOworCisgICAgYm9vbCBy
ZXN0b3JlTG9zdERldmljZSgpOworCisgICAgRUdMTmF0aXZlRGlzcGxheVR5cGUgbURpc3BsYXlJ
ZDsKKyAgICBjb25zdCBIREMgbURjOworCisgICAgYm9vbCBtU29mdHdhcmVEZXZpY2U7CisgICAg
CisgICAgdHlwZWRlZiBzdGQ6OnNldDxTdXJmYWNlKj4gU3VyZmFjZVNldDsKKyAgICBTdXJmYWNl
U2V0IG1TdXJmYWNlU2V0OworCisgICAgQ29uZmlnU2V0IG1Db25maWdTZXQ7CisKKyAgICB0eXBl
ZGVmIHN0ZDo6c2V0PGdsOjpDb250ZXh0Kj4gQ29udGV4dFNldDsKKyAgICBDb250ZXh0U2V0IG1D
b250ZXh0U2V0OworCisgICAgcng6OlJlbmRlcmVyICptUmVuZGVyZXI7CisKKyAgICB2b2lkIGlu
aXRFeHRlbnNpb25TdHJpbmcoKTsKKyAgICB2b2lkIGluaXRWZW5kb3JTdHJpbmcoKTsKKyAgICBz
dGQ6OnN0cmluZyBtRXh0ZW5zaW9uU3RyaW5nOworICAgIHN0ZDo6c3RyaW5nIG1WZW5kb3JTdHJp
bmc7Cit9OworfQorCisjZW5kaWYgICAvLyBMSUJFR0xfRElTUExBWV9IXwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9TdXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1N1cmZhY2UuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9TdXJmYWNlLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0MDggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN1cmZh
Y2UuY3BwOiBJbXBsZW1lbnRzIHRoZSBlZ2w6OlN1cmZhY2UgY2xhc3MsIHJlcHJlc2VudGluZyBh
IGRyYXdpbmcgc3VyZmFjZQorLy8gc3VjaCBhcyB0aGUgY2xpZW50IGFyZWEgb2YgYSB3aW5kb3cs
IGluY2x1ZGluZyBhbnkgYmFjayBidWZmZXJzLgorLy8gSW1wbGVtZW50cyBFR0xTdXJmYWNlIGFu
ZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIFtFR0wgMS40XSBzZWN0aW9uIDIuMiBwYWdlIDMuCisK
KyNpbmNsdWRlIDx0Y2hhci5oPgorCisjaW5jbHVkZSAibGliRUdML1N1cmZhY2UuaCIKKworI2lu
Y2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi9tYWluLmgiCisKKyNpbmNsdWRlICJsaWJFR0wvbWFpbi5oIgorI2luY2x1ZGUgImxpYkVH
TC9EaXNwbGF5LmgiCisKK25hbWVzcGFjZSBlZ2wKK3sKKworU3VyZmFjZTo6U3VyZmFjZShEaXNw
bGF5ICpkaXNwbGF5LCBjb25zdCBDb25maWcgKmNvbmZpZywgSFdORCB3aW5kb3csIEVHTGludCBw
b3N0U3ViQnVmZmVyU3VwcG9ydGVkKSAKKyAgICA6IG1EaXNwbGF5KGRpc3BsYXkpLCBtQ29uZmln
KGNvbmZpZyksIG1XaW5kb3cod2luZG93KSwgbVBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQocG9zdFN1
YkJ1ZmZlclN1cHBvcnRlZCkKK3sKKyAgICBtUmVuZGVyZXIgPSBtRGlzcGxheS0+Z2V0UmVuZGVy
ZXIoKTsKKyAgICBtU3dhcENoYWluID0gTlVMTDsKKyAgICBtU2hhcmVIYW5kbGUgPSBOVUxMOwor
ICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICBtVGV4dHVyZUZvcm1hdCA9IEVHTF9OT19URVhUVVJF
OworICAgIG1UZXh0dXJlVGFyZ2V0ID0gRUdMX05PX1RFWFRVUkU7CisKKyAgICBtUGl4ZWxBc3Bl
Y3RSYXRpbyA9IChFR0xpbnQpKDEuMCAqIEVHTF9ESVNQTEFZX1NDQUxJTkcpOyAgIC8vIEZJWE1F
OiBEZXRlcm1pbmUgYWN0dWFsIHBpeGVsIGFzcGVjdCByYXRpbworICAgIG1SZW5kZXJCdWZmZXIg
PSBFR0xfQkFDS19CVUZGRVI7CisgICAgbVN3YXBCZWhhdmlvciA9IEVHTF9CVUZGRVJfUFJFU0VS
VkVEOworICAgIG1Td2FwSW50ZXJ2YWwgPSAtMTsKKyAgICBtV2lkdGggPSAtMTsKKyAgICBtSGVp
Z2h0ID0gLTE7CisgICAgc2V0U3dhcEludGVydmFsKDEpOworCisgICAgc3ViY2xhc3NXaW5kb3co
KTsKK30KKworU3VyZmFjZTo6U3VyZmFjZShEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBDb25maWcg
KmNvbmZpZywgSEFORExFIHNoYXJlSGFuZGxlLCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQs
IEVHTGVudW0gdGV4dHVyZUZvcm1hdCwgRUdMZW51bSB0ZXh0dXJlVHlwZSkKKyAgICA6IG1EaXNw
bGF5KGRpc3BsYXkpLCBtV2luZG93KE5VTEwpLCBtQ29uZmlnKGNvbmZpZyksIG1TaGFyZUhhbmRs
ZShzaGFyZUhhbmRsZSksIG1XaWR0aCh3aWR0aCksIG1IZWlnaHQoaGVpZ2h0KSwgbVBvc3RTdWJC
dWZmZXJTdXBwb3J0ZWQoRUdMX0ZBTFNFKQoreworICAgIG1SZW5kZXJlciA9IG1EaXNwbGF5LT5n
ZXRSZW5kZXJlcigpOworICAgIG1Td2FwQ2hhaW4gPSBOVUxMOworICAgIG1XaW5kb3dTdWJjbGFz
c2VkID0gZmFsc2U7CisgICAgbVRleHR1cmUgPSBOVUxMOworICAgIG1UZXh0dXJlRm9ybWF0ID0g
dGV4dHVyZUZvcm1hdDsKKyAgICBtVGV4dHVyZVRhcmdldCA9IHRleHR1cmVUeXBlOworCisgICAg
bVBpeGVsQXNwZWN0UmF0aW8gPSAoRUdMaW50KSgxLjAgKiBFR0xfRElTUExBWV9TQ0FMSU5HKTsg
ICAvLyBGSVhNRTogRGV0ZXJtaW5lIGFjdHVhbCBwaXhlbCBhc3BlY3QgcmF0aW8KKyAgICBtUmVu
ZGVyQnVmZmVyID0gRUdMX0JBQ0tfQlVGRkVSOworICAgIG1Td2FwQmVoYXZpb3IgPSBFR0xfQlVG
RkVSX1BSRVNFUlZFRDsKKyAgICBtU3dhcEludGVydmFsID0gLTE7CisgICAgc2V0U3dhcEludGVy
dmFsKDEpOworfQorCitTdXJmYWNlOjp+U3VyZmFjZSgpCit7CisgICAgdW5zdWJjbGFzc1dpbmRv
dygpOworICAgIHJlbGVhc2UoKTsKK30KKworYm9vbCBTdXJmYWNlOjppbml0aWFsaXplKCkKK3sK
KyAgICBpZiAoIXJlc2V0U3dhcENoYWluKCkpCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTdXJmYWNlOjpyZWxlYXNlKCkKK3sKKyAgICBkZWxldGUg
bVN3YXBDaGFpbjsKKyAgICBtU3dhcENoYWluID0gTlVMTDsKKworICAgIGlmIChtVGV4dHVyZSkK
KyAgICB7CisgICAgICAgIG1UZXh0dXJlLT5yZWxlYXNlVGV4SW1hZ2UoKTsKKyAgICAgICAgbVRl
eHR1cmUgPSBOVUxMOworICAgIH0KK30KKworYm9vbCBTdXJmYWNlOjpyZXNldFN3YXBDaGFpbigp
Cit7CisgICAgQVNTRVJUKCFtU3dhcENoYWluKTsKKworICAgIGludCB3aWR0aDsKKyAgICBpbnQg
aGVpZ2h0OworCisgICAgaWYgKG1XaW5kb3cpCisgICAgeworICAgICAgICBSRUNUIHdpbmRvd1Jl
Y3Q7CisgICAgICAgIGlmICghR2V0Q2xpZW50UmVjdChnZXRXaW5kb3dIYW5kbGUoKSwgJndpbmRv
d1JlY3QpKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoZmFsc2UpOworCisgICAgICAg
ICAgICBFUlIoIkNvdWxkIG5vdCByZXRyaWV2ZSB0aGUgd2luZG93IGRpbWVuc2lvbnMiKTsKKyAg
ICAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX1NVUkZBQ0UsIGZhbHNlKTsKKyAgICAgICAg
fQorCisgICAgICAgIHdpZHRoID0gd2luZG93UmVjdC5yaWdodCAtIHdpbmRvd1JlY3QubGVmdDsK
KyAgICAgICAgaGVpZ2h0ID0gd2luZG93UmVjdC5ib3R0b20gLSB3aW5kb3dSZWN0LnRvcDsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gbm9uLXdpbmRvdyBzdXJmYWNlIC0gc2l6
ZSBpcyBkZXRlcm1pbmVkIGF0IGNyZWF0aW9uCisgICAgICAgIHdpZHRoID0gbVdpZHRoOworICAg
ICAgICBoZWlnaHQgPSBtSGVpZ2h0OworICAgIH0KKworICAgIG1Td2FwQ2hhaW4gPSBtUmVuZGVy
ZXItPmNyZWF0ZVN3YXBDaGFpbihtV2luZG93LCBtU2hhcmVIYW5kbGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db25maWctPm1SZW5kZXJUYXJnZXRGb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db25maWct
Pm1EZXB0aFN0ZW5jaWxGb3JtYXQpOworICAgIGlmICghbVN3YXBDaGFpbikKKyAgICB7CisgICAg
ICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCBmYWxzZSk7CisgICAgfQorCisgICAgaWYg
KCFyZXNldFN3YXBDaGFpbih3aWR0aCwgaGVpZ2h0KSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBt
U3dhcENoYWluOworICAgICAgICBtU3dhcENoYWluID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFN1cmZhY2U6OnJlc2l6
ZVN3YXBDaGFpbihpbnQgYmFja2J1ZmZlcldpZHRoLCBpbnQgYmFja2J1ZmZlckhlaWdodCkKK3sK
KyAgICBBU1NFUlQoYmFja2J1ZmZlcldpZHRoID49IDAgJiYgYmFja2J1ZmZlckhlaWdodCA+PSAw
KTsKKyAgICBBU1NFUlQobVN3YXBDaGFpbik7CisKKyAgICBFR0xpbnQgc3RhdHVzID0gbVN3YXBD
aGFpbi0+cmVzaXplKGJhY2tidWZmZXJXaWR0aCwgYmFja2J1ZmZlckhlaWdodCk7CisKKyAgICBp
ZiAoc3RhdHVzID09IEVHTF9DT05URVhUX0xPU1QpCisgICAgeworICAgICAgICBtRGlzcGxheS0+
bm90aWZ5RGV2aWNlTG9zdCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGVs
c2UgaWYgKHN0YXR1cyAhPSBFR0xfU1VDQ0VTUykKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJv
cihzdGF0dXMsIGZhbHNlKTsKKyAgICB9CisKKyAgICBtV2lkdGggPSBiYWNrYnVmZmVyV2lkdGg7
CisgICAgbUhlaWdodCA9IGJhY2tidWZmZXJIZWlnaHQ7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBTdXJmYWNlOjpyZXNldFN3YXBDaGFpbihpbnQgYmFja2J1ZmZlcldpZHRoLCBpbnQg
YmFja2J1ZmZlckhlaWdodCkKK3sKKyAgICBBU1NFUlQoYmFja2J1ZmZlcldpZHRoID49IDAgJiYg
YmFja2J1ZmZlckhlaWdodCA+PSAwKTsKKyAgICBBU1NFUlQobVN3YXBDaGFpbik7CisKKyAgICBF
R0xpbnQgc3RhdHVzID0gbVN3YXBDaGFpbi0+cmVzZXQoYmFja2J1ZmZlcldpZHRoLCBiYWNrYnVm
ZmVySGVpZ2h0LCBtU3dhcEludGVydmFsKTsKKworICAgIGlmIChzdGF0dXMgPT0gRUdMX0NPTlRF
WFRfTE9TVCkKKyAgICB7CisgICAgICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNlTG9zdCgpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGVsc2UgaWYgKHN0YXR1cyAhPSBFR0xf
U1VDQ0VTUykKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihzdGF0dXMsIGZhbHNlKTsKKyAg
ICB9CisKKyAgICBtV2lkdGggPSBiYWNrYnVmZmVyV2lkdGg7CisgICAgbUhlaWdodCA9IGJhY2ti
dWZmZXJIZWlnaHQ7CisgICAgbVN3YXBJbnRlcnZhbERpcnR5ID0gZmFsc2U7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBTdXJmYWNlOjpzd2FwUmVjdChFR0xpbnQgeCwgRUdMaW50IHks
IEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkKK3sKKyAgICBpZiAoIW1Td2FwQ2hhaW4pCisg
ICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoeCArIHdpZHRoID4g
bVdpZHRoKQorICAgIHsKKyAgICAgICAgd2lkdGggPSBtV2lkdGggLSB4OworICAgIH0KKworICAg
IGlmICh5ICsgaGVpZ2h0ID4gbUhlaWdodCkKKyAgICB7CisgICAgICAgIGhlaWdodCA9IG1IZWln
aHQgLSB5OworICAgIH0KKworICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgRUdMaW50IHN0YXR1cyA9IG1T
d2FwQ2hhaW4tPnN3YXBSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworCisgICAgaWYgKHN0YXR1
cyA9PSBFR0xfQ09OVEVYVF9MT1NUKQorICAgIHsKKyAgICAgICAgbVJlbmRlcmVyLT5ub3RpZnlE
ZXZpY2VMb3N0KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZWxzZSBpZiAo
c3RhdHVzICE9IEVHTF9TVUNDRVNTKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yKHN0YXR1
cywgZmFsc2UpOworICAgIH0KKworICAgIGNoZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCk7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworSFdORCBTdXJmYWNlOjpnZXRXaW5kb3dIYW5kbGUoKQor
eworICAgIHJldHVybiBtV2luZG93OworfQorCisKKyNkZWZpbmUga1N1cmZhY2VQcm9wZXJ0eSBf
VEVYVCgiRWdsOjpTdXJmYWNlT3duZXIiKQorI2RlZmluZSBrUGFyZW50V25kUHJvYyBfVEVYVCgi
RWdsOjpTdXJmYWNlUGFyZW50V25kUHJvYyIpCisKK3N0YXRpYyBMUkVTVUxUIENBTExCQUNLIFN1
cmZhY2VXaW5kb3dQcm9jKEhXTkQgaHduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd3BhcmFtLCBM
UEFSQU0gbHBhcmFtKQoreworICBpZiAobWVzc2FnZSA9PSBXTV9TSVpFKQorICB7CisgICAgICBT
dXJmYWNlKiBzdXJmID0gcmVpbnRlcnByZXRfY2FzdDxTdXJmYWNlKj4oR2V0UHJvcChod25kLCBr
U3VyZmFjZVByb3BlcnR5KSk7CisgICAgICBpZihzdXJmKQorICAgICAgeworICAgICAgICAgIHN1
cmYtPmNoZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCk7CisgICAgICB9CisgIH0KKyAgV05EUFJP
QyBwcmV2V25kRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V05EUFJPQyA+KEdldFByb3AoaHduZCwg
a1BhcmVudFduZFByb2MpKTsKKyAgcmV0dXJuIENhbGxXaW5kb3dQcm9jKHByZXZXbmRGdW5jLCBo
d25kLCBtZXNzYWdlLCB3cGFyYW0sIGxwYXJhbSk7Cit9CisKK3ZvaWQgU3VyZmFjZTo6c3ViY2xh
c3NXaW5kb3coKQoreworICAgIGlmICghbVdpbmRvdykKKyAgICB7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBEV09SRCBwcm9jZXNzSWQ7CisgICAgRFdPUkQgdGhyZWFkSWQgPSBHZXRX
aW5kb3dUaHJlYWRQcm9jZXNzSWQobVdpbmRvdywgJnByb2Nlc3NJZCk7CisgICAgaWYgKHByb2Nl
c3NJZCAhPSBHZXRDdXJyZW50UHJvY2Vzc0lkKCkgfHwgdGhyZWFkSWQgIT0gR2V0Q3VycmVudFRo
cmVhZElkKCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU2V0TGFzdEVy
cm9yKDApOworICAgIExPTkdfUFRSIG9sZFduZFByb2MgPSBTZXRXaW5kb3dMb25nUHRyKG1XaW5k
b3csIEdXTFBfV05EUFJPQywgcmVpbnRlcnByZXRfY2FzdDxMT05HX1BUUj4oU3VyZmFjZVdpbmRv
d1Byb2MpKTsKKyAgICBpZihvbGRXbmRQcm9jID09IDAgJiYgR2V0TGFzdEVycm9yKCkgIT0gRVJS
T1JfU1VDQ0VTUykKKyAgICB7CisgICAgICAgIG1XaW5kb3dTdWJjbGFzc2VkID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTZXRQcm9wKG1XaW5kb3csIGtTdXJmYWNlUHJv
cGVydHksIHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPih0aGlzKSk7CisgICAgU2V0UHJvcChtV2lu
ZG93LCBrUGFyZW50V25kUHJvYywgcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KG9sZFduZFByb2Mp
KTsKKyAgICBtV2luZG93U3ViY2xhc3NlZCA9IHRydWU7Cit9CisKK3ZvaWQgU3VyZmFjZTo6dW5z
dWJjbGFzc1dpbmRvdygpCit7CisgICAgaWYoIW1XaW5kb3dTdWJjbGFzc2VkKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIHVuLXN1YmNsYXNzCisgICAgTE9OR19QVFIg
cGFyZW50V25kRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TE9OR19QVFI+KEdldFByb3AobVdpbmRv
dywga1BhcmVudFduZFByb2MpKTsKKworICAgIC8vIENoZWNrIHRoZSB3aW5kb3dwcm9jIGlzIHN0
aWxsIFN1cmZhY2VXaW5kb3dQcm9jLgorICAgIC8vIElmIHRoaXMgYXNzZXJ0IGZhaWxzLCB0aGVu
IGl0IGlzIGxpa2VseSB0aGUgYXBwbGljYXRpb24gaGFzIHN1YmNsYXNzZWQgdGhlCisgICAgLy8g
aHduZCBhcyB3ZWxsIGFuZCBkaWQgbm90IHVuc3ViY2xhc3MgYmVmb3JlIGRlc3Ryb3lpbmcgaXRz
IEVHTCBjb250ZXh0LiBUaGUKKyAgICAvLyBhcHBsaWNhdGlvbiBzaG91bGQgYmUgbW9kaWZpZWQg
dG8gZWl0aGVyIHN1YmNsYXNzIGJlZm9yZSBpbml0aWFsaXppbmcgdGhlCisgICAgLy8gRUdMIGNv
bnRleHQsIG9yIHRvIHVuc3ViY2xhc3MgYmVmb3JlIGRlc3Ryb3lpbmcgdGhlIEVHTCBjb250ZXh0
LgorICAgIGlmKHBhcmVudFduZEZ1bmMpCisgICAgeworICAgICAgICBMT05HX1BUUiBwcmV2V25k
RnVuYyA9IFNldFdpbmRvd0xvbmdQdHIobVdpbmRvdywgR1dMUF9XTkRQUk9DLCBwYXJlbnRXbmRG
dW5jKTsKKyAgICAgICAgQVNTRVJUKHByZXZXbmRGdW5jID09IHJlaW50ZXJwcmV0X2Nhc3Q8TE9O
R19QVFI+KFN1cmZhY2VXaW5kb3dQcm9jKSk7CisgICAgfQorCisgICAgUmVtb3ZlUHJvcChtV2lu
ZG93LCBrU3VyZmFjZVByb3BlcnR5KTsKKyAgICBSZW1vdmVQcm9wKG1XaW5kb3csIGtQYXJlbnRX
bmRQcm9jKTsKKyAgICBtV2luZG93U3ViY2xhc3NlZCA9IGZhbHNlOworfQorCitib29sIFN1cmZh
Y2U6OmNoZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCkKK3sKKyAgICBSRUNUIGNsaWVudDsKKyAg
ICBpZiAoIUdldENsaWVudFJlY3QoZ2V0V2luZG93SGFuZGxlKCksICZjbGllbnQpKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIC8vIEdyb3cgdGhlIGJ1ZmZlciBub3csIGlmIHRoZSB3aW5kb3cgaGFzIGdyb3duLiBXZSBu
ZWVkIHRvIGdyb3cgbm93IHRvIGF2b2lkIGxvc2luZyBpbmZvcm1hdGlvbi4KKyAgICBpbnQgY2xp
ZW50V2lkdGggPSBjbGllbnQucmlnaHQgLSBjbGllbnQubGVmdDsKKyAgICBpbnQgY2xpZW50SGVp
Z2h0ID0gY2xpZW50LmJvdHRvbSAtIGNsaWVudC50b3A7CisgICAgYm9vbCBzaXplRGlydHkgPSBj
bGllbnRXaWR0aCAhPSBnZXRXaWR0aCgpIHx8IGNsaWVudEhlaWdodCAhPSBnZXRIZWlnaHQoKTsK
KworICAgIGlmIChtU3dhcEludGVydmFsRGlydHkpCisgICAgeworICAgICAgICByZXNldFN3YXBD
aGFpbihjbGllbnRXaWR0aCwgY2xpZW50SGVpZ2h0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoc2l6
ZURpcnR5KQorICAgIHsKKyAgICAgICAgcmVzaXplU3dhcENoYWluKGNsaWVudFdpZHRoLCBjbGll
bnRIZWlnaHQpOworICAgIH0KKworICAgIGlmIChtU3dhcEludGVydmFsRGlydHkgfHwgc2l6ZURp
cnR5KQorICAgIHsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KGdldEN1
cnJlbnREcmF3U3VyZmFjZSgpKSA9PSB0aGlzKQorICAgICAgICB7CisgICAgICAgICAgICBnbE1h
a2VDdXJyZW50KGdsR2V0Q3VycmVudENvbnRleHQoKSwgc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5
Kj4oZ2V0Q3VycmVudERpc3BsYXkoKSksIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFN1cmZhY2U6
OnN3YXAoKQoreworICAgIHJldHVybiBzd2FwUmVjdCgwLCAwLCBtV2lkdGgsIG1IZWlnaHQpOwor
fQorCitib29sIFN1cmZhY2U6OnBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5LCBFR0xp
bnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCit7CisgICAgaWYgKCFtUG9zdFN1YkJ1ZmZlclN1cHBv
cnRlZCkKKyAgICB7CisgICAgICAgIC8vIFNwZWMgaXMgbm90IGNsZWFyIGFib3V0IGhvdyB0aGlz
IHNob3VsZCBiZSBoYW5kbGVkLgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIHN3YXBSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworfQorCitFR0xpbnQgU3Vy
ZmFjZTo6Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtV2lkdGg7Cit9CisKK0VHTGlu
dCBTdXJmYWNlOjpnZXRIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBtSGVpZ2h0OworfQor
CitFR0xpbnQgU3VyZmFjZTo6aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVBvc3RTdWJCdWZmZXJTdXBwb3J0ZWQ7Cit9CisKK3J4OjpTd2FwQ2hhaW4gKlN1
cmZhY2U6OmdldFN3YXBDaGFpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Td2FwQ2hhaW47Cit9
CisKK3ZvaWQgU3VyZmFjZTo6c2V0U3dhcEludGVydmFsKEVHTGludCBpbnRlcnZhbCkKK3sKKyAg
ICBpZiAobVN3YXBJbnRlcnZhbCA9PSBpbnRlcnZhbCkKKyAgICB7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgbVN3YXBJbnRlcnZhbCA9IGludGVydmFsOworICAgIG1Td2FwSW50
ZXJ2YWwgPSBzdGQ6Om1heChtU3dhcEludGVydmFsLCBtUmVuZGVyZXItPmdldE1pblN3YXBJbnRl
cnZhbCgpKTsKKyAgICBtU3dhcEludGVydmFsID0gc3RkOjptaW4obVN3YXBJbnRlcnZhbCwgbVJl
bmRlcmVyLT5nZXRNYXhTd2FwSW50ZXJ2YWwoKSk7CisKKyAgICBtU3dhcEludGVydmFsRGlydHkg
PSB0cnVlOworfQorCitFR0xlbnVtIFN1cmZhY2U6OmdldFRleHR1cmVGb3JtYXQoKSBjb25zdAor
eworICAgIHJldHVybiBtVGV4dHVyZUZvcm1hdDsKK30KKworRUdMZW51bSBTdXJmYWNlOjpnZXRU
ZXh0dXJlVGFyZ2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmVUYXJnZXQ7Cit9CisK
K3ZvaWQgU3VyZmFjZTo6c2V0Qm91bmRUZXh0dXJlKGdsOjpUZXh0dXJlMkQgKnRleHR1cmUpCit7
CisgICAgbVRleHR1cmUgPSB0ZXh0dXJlOworfQorCitnbDo6VGV4dHVyZTJEICpTdXJmYWNlOjpn
ZXRCb3VuZFRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZTsKK30KKworRUdM
ZW51bSBTdXJmYWNlOjpnZXRGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBtQ29uZmlnLT5t
UmVuZGVyVGFyZ2V0Rm9ybWF0OworfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkVHTC9TdXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkVHTC9TdXJmYWNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliRUdML1N1cmZhY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDgg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN1cmZhY2UuaDogRGVmaW5lcyB0aGUgZWdsOjpT
dXJmYWNlIGNsYXNzLCByZXByZXNlbnRpbmcgYSBkcmF3aW5nIHN1cmZhY2UKKy8vIHN1Y2ggYXMg
dGhlIGNsaWVudCBhcmVhIG9mIGEgd2luZG93LCBpbmNsdWRpbmcgYW55IGJhY2sgYnVmZmVycy4K
Ky8vIEltcGxlbWVudHMgRUdMU3VyZmFjZSBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBbRUdM
IDEuNF0gc2VjdGlvbiAyLjIgcGFnZSAzLgorCisjaWZuZGVmIExJQkVHTF9TVVJGQUNFX0hfCisj
ZGVmaW5lIExJQkVHTF9TVVJGQUNFX0hfCisKKyNkZWZpbmUgRUdMQVBJCisjaW5jbHVkZSA8RUdM
L2VnbC5oPgorCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIGds
Cit7CitjbGFzcyBUZXh0dXJlMkQ7Cit9CituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVy
OworY2xhc3MgU3dhcENoYWluOworfQorCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBEaXNwbGF5
OworY2xhc3MgQ29uZmlnOworCitjbGFzcyBTdXJmYWNlCit7CisgIHB1YmxpYzoKKyAgICBTdXJm
YWNlKERpc3BsYXkgKmRpc3BsYXksIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsIEhXTkQgd2lu
ZG93LCBFR0xpbnQgcG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCk7CisgICAgU3VyZmFjZShEaXNwbGF5
ICpkaXNwbGF5LCBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLCBIQU5ETEUgc2hhcmVIYW5kbGUs
IEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCwgRUdMZW51bSB0ZXh0dXJlRm9ybWF0LCBFR0xl
bnVtIHRleHR1cmVUYXJnZXQpOworCisgICAgflN1cmZhY2UoKTsKKworICAgIGJvb2wgaW5pdGlh
bGl6ZSgpOworICAgIHZvaWQgcmVsZWFzZSgpOworICAgIGJvb2wgcmVzZXRTd2FwQ2hhaW4oKTsK
KworICAgIEhXTkQgZ2V0V2luZG93SGFuZGxlKCk7CisgICAgYm9vbCBzd2FwKCk7CisgICAgYm9v
bCBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQg
aGVpZ2h0KTsKKworICAgIHZpcnR1YWwgRUdMaW50IGdldFdpZHRoKCkgY29uc3Q7CisgICAgdmly
dHVhbCBFR0xpbnQgZ2V0SGVpZ2h0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEVHTGludCBpc1Bv
c3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdDsKKworICAgIHZpcnR1YWwgcng6OlN3YXBDaGFp
biAqZ2V0U3dhcENoYWluKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldFN3YXBJbnRlcnZhbChFR0xp
bnQgaW50ZXJ2YWwpOworICAgIGJvb2wgY2hlY2tGb3JPdXRPZkRhdGVTd2FwQ2hhaW4oKTsgICAv
LyBSZXR1cm5zIHRydWUgaWYgc3dhcGNoYWluIGNoYW5nZWQgZHVlIHRvIHJlc2l6ZSBvciBpbnRl
cnZhbCB1cGRhdGUKKworICAgIHZpcnR1YWwgRUdMZW51bSBnZXRUZXh0dXJlRm9ybWF0KCkgY29u
c3Q7CisgICAgdmlydHVhbCBFR0xlbnVtIGdldFRleHR1cmVUYXJnZXQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIEVHTGVudW0gZ2V0Rm9ybWF0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Qm91bmRUZXh0dXJlKGdsOjpUZXh0dXJlMkQgKnRleHR1cmUpOworICAgIHZpcnR1YWwgZ2w6OlRl
eHR1cmUyRCAqZ2V0Qm91bmRUZXh0dXJlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOKFN1cmZhY2UpOworCisgICAgRGlzcGxheSAqY29uc3QgbURpc3Bs
YXk7CisgICAgcng6OlJlbmRlcmVyICptUmVuZGVyZXI7CisKKyAgICBIQU5ETEUgbVNoYXJlSGFu
ZGxlOworICAgIHJ4OjpTd2FwQ2hhaW4gKm1Td2FwQ2hhaW47CisKKyAgICB2b2lkIHN1YmNsYXNz
V2luZG93KCk7CisgICAgdm9pZCB1bnN1YmNsYXNzV2luZG93KCk7CisgICAgYm9vbCByZXNpemVT
d2FwQ2hhaW4oaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpOworICAg
IGJvb2wgcmVzZXRTd2FwQ2hhaW4oaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJI
ZWlnaHQpOworICAgIGJvb2wgc3dhcFJlY3QoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lk
dGgsIEVHTGludCBoZWlnaHQpOworCisgICAgY29uc3QgSFdORCBtV2luZG93OyAgICAgICAgICAg
IC8vIFdpbmRvdyB0aGF0IHRoZSBzdXJmYWNlIGlzIGNyZWF0ZWQgZm9yLgorICAgIGJvb2wgbVdp
bmRvd1N1YmNsYXNzZWQ7ICAgICAgICAvLyBJbmRpY2F0ZXMgd2hldGhlciB3ZSBzdWNjZXNzZnVs
bHkgc3ViY2xhc3NlZCBtV2luZG93IGZvciBXTV9SRVNJWkUgaG9va2luZworICAgIGNvbnN0IGVn
bDo6Q29uZmlnICptQ29uZmlnOyAgICAvLyBFR0wgY29uZmlnIHN1cmZhY2Ugd2FzIGNyZWF0ZWQg
d2l0aAorICAgIEVHTGludCBtSGVpZ2h0OyAgICAgICAgICAgICAgICAvLyBIZWlnaHQgb2Ygc3Vy
ZmFjZQorICAgIEVHTGludCBtV2lkdGg7ICAgICAgICAgICAgICAgICAvLyBXaWR0aCBvZiBzdXJm
YWNlCisvLyAgRUdMaW50IGhvcml6b250YWxSZXNvbHV0aW9uOyAgIC8vIEhvcml6b250YWwgZG90
IHBpdGNoCisvLyAgRUdMaW50IHZlcnRpY2FsUmVzb2x1dGlvbjsgICAgIC8vIFZlcnRpY2FsIGRv
dCBwaXRjaAorLy8gIEVHTEJvb2xlYW4gbGFyZ2VzdFBCdWZmZXI7ICAgICAvLyBJZiB0cnVlLCBj
cmVhdGUgbGFyZ2VzdCBwYnVmZmVyIHBvc3NpYmxlCisvLyAgRUdMQm9vbGVhbiBtaXBtYXBUZXh0
dXJlOyAgICAgIC8vIFRydWUgaWYgdGV4dHVyZSBoYXMgbWlwbWFwcworLy8gIEVHTGludCBtaXBt
YXBMZXZlbDsgICAgICAgICAgICAvLyBNaXBtYXAgbGV2ZWwgdG8gcmVuZGVyIHRvCisvLyAgRUdM
ZW51bSBtdWx0aXNhbXBsZVJlc29sdmU7ICAgIC8vIE11bHRpc2FtcGxlIHJlc29sdmUgYmVoYXZp
b3IKKyAgICBFR0xpbnQgbVBpeGVsQXNwZWN0UmF0aW87ICAgICAgLy8gRGlzcGxheSBhc3BlY3Qg
cmF0aW8KKyAgICBFR0xlbnVtIG1SZW5kZXJCdWZmZXI7ICAgICAgICAgLy8gUmVuZGVyIGJ1ZmZl
cgorICAgIEVHTGVudW0gbVN3YXBCZWhhdmlvcjsgICAgICAgICAvLyBCdWZmZXIgc3dhcCBiZWhh
dmlvcgorICAgIEVHTGVudW0gbVRleHR1cmVGb3JtYXQ7ICAgICAgICAvLyBGb3JtYXQgb2YgdGV4
dHVyZTogUkdCLCBSR0JBLCBvciBubyB0ZXh0dXJlCisgICAgRUdMZW51bSBtVGV4dHVyZVRhcmdl
dDsgICAgICAgIC8vIFR5cGUgb2YgdGV4dHVyZTogMkQgb3Igbm8gdGV4dHVyZQorLy8gIEVHTGVu
dW0gdmdBbHBoYUZvcm1hdDsgICAgICAgICAvLyBBbHBoYSBmb3JtYXQgZm9yIE9wZW5WRworLy8g
IEVHTGVudW0gdmdDb2xvclNwYWNlOyAgICAgICAgICAvLyBDb2xvciBzcGFjZSBmb3IgT3BlblZH
CisgICAgRUdMaW50IG1Td2FwSW50ZXJ2YWw7CisgICAgRUdMaW50IG1Qb3N0U3ViQnVmZmVyU3Vw
cG9ydGVkOworICAgIAorICAgIGJvb2wgbVN3YXBJbnRlcnZhbERpcnR5OworICAgIGdsOjpUZXh0
dXJlMkQgKm1UZXh0dXJlOworfTsKK30KKworI2VuZGlmICAgLy8gTElCRUdMX1NVUkZBQ0VfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVH
TC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE4NSBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gbGliRUdMLmNwcDogSW1wbGVtZW50cyB0aGUgZXhwb3J0ZWQgRUdMIGZ1bmN0aW9ucy4K
KworI2luY2x1ZGUgPGV4Y2VwdGlvbj4KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2lu
Y2x1ZGUgImNvbW1vbi92ZXJzaW9uLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvVGV4dHVyZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWlu
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oIgorCisjaW5jbHVk
ZSAibGliRUdML21haW4uaCIKKyNpbmNsdWRlICJsaWJFR0wvRGlzcGxheS5oIgorI2luY2x1ZGUg
ImxpYkVHTC9TdXJmYWNlLmgiCisKK2Jvb2wgdmFsaWRhdGVEaXNwbGF5KGVnbDo6RGlzcGxheSAq
ZGlzcGxheSkKK3sKKyAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfRElTUExBWSwgZmFsc2UpOworICAgIH0K
KworICAgIGlmICghZGlzcGxheS0+aXNJbml0aWFsaXplZCgpKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGVnbDo6ZXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgZmFsc2UpOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIHZhbGlkYXRlQ29uZmlnKGVnbDo6RGlzcGxheSAqZGlz
cGxheSwgRUdMQ29uZmlnIGNvbmZpZykKK3sKKyAgICBpZiAoIXZhbGlkYXRlRGlzcGxheShkaXNw
bGF5KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIWRp
c3BsYXktPmlzVmFsaWRDb25maWcoY29uZmlnKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6
OmVycm9yKEVHTF9CQURfQ09ORklHLCBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgdmFsaWRhdGVDb250ZXh0KGVnbDo6RGlzcGxheSAqZGlzcGxheSwgZ2w6OkNv
bnRleHQgKmNvbnRleHQpCit7CisgICAgaWYgKCF2YWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFkaXNwbGF5LT5p
c1ZhbGlkQ29udGV4dChjb250ZXh0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9y
KEVHTF9CQURfQ09OVEVYVCwgZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIHZhbGlkYXRlU3VyZmFjZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGVnbDo6U3VyZmFj
ZSAqc3VyZmFjZSkKK3sKKyAgICBpZiAoIXZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSkKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIWRpc3BsYXktPmlzVmFs
aWRTdXJmYWNlKHN1cmZhY2UpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdM
X0JBRF9TVVJGQUNFLCBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2V4
dGVybiAiQyIKK3sKK0VHTGludCBfX3N0ZGNhbGwgZWdsR2V0RXJyb3Iodm9pZCkKK3sKKyAgICBF
VkVOVCgiKCkiKTsKKworICAgIEVHTGludCBlcnJvciA9IGVnbDo6Z2V0Q3VycmVudEVycm9yKCk7
CisKKyAgICBpZiAoZXJyb3IgIT0gRUdMX1NVQ0NFU1MpCisgICAgeworICAgICAgICBlZ2w6OnNl
dEN1cnJlbnRFcnJvcihFR0xfU1VDQ0VTUyk7CisgICAgfQorCisgICAgcmV0dXJuIGVycm9yOwor
fQorCitFR0xEaXNwbGF5IF9fc3RkY2FsbCBlZ2xHZXREaXNwbGF5KEVHTE5hdGl2ZURpc3BsYXlU
eXBlIGRpc3BsYXlfaWQpCit7CisgICAgRVZFTlQoIihFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNw
bGF5X2lkID0gMHglMC44cCkiLCBkaXNwbGF5X2lkKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGVnbDo6RGlzcGxheTo6Z2V0RGlzcGxheShkaXNwbGF5X2lkKTsKKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJy
b3IoRUdMX0JBRF9BTExPQywgRUdMX05PX0RJU1BMQVkpOworICAgIH0KK30KKworRUdMQm9vbGVh
biBfX3N0ZGNhbGwgZWdsSW5pdGlhbGl6ZShFR0xEaXNwbGF5IGRweSwgRUdMaW50ICptYWpvciwg
RUdMaW50ICptaW5vcikKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwg
RUdMaW50ICptYWpvciA9IDB4JTAuOHAsIEVHTGludCAqbWlub3IgPSAweCUwLjhwKSIsCisgICAg
ICAgICAgZHB5LCBtYWpvciwgbWlub3IpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAo
ZHB5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWds
OjplcnJvcihFR0xfQkFEX0RJU1BMQVksIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAg
ICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkp
OworCisgICAgICAgIGlmICghZGlzcGxheS0+aW5pdGlhbGl6ZSgpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCBFR0xfRkFMU0Up
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1ham9yKSAqbWFqb3IgPSAxOworICAgICAgICBp
ZiAobWlub3IpICptaW5vciA9IDQ7CisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhFR0xf
VFJVRSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAg
IHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQor
CitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xUZXJtaW5hdGUoRUdMRGlzcGxheSBkcHkpCit7Cisg
ICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHApIiwgZHB5KTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgaWYgKGRweSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9ESVNQTEFZLCBFR0xfRkFMU0UpOwor
ICAgICAgICB9CisKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8
ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKworICAgICAgICBkaXNwbGF5LT50ZXJtaW5hdGUoKTsKKwor
ICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JB
RF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIgKl9fc3RkY2FsbCBl
Z2xRdWVyeVN0cmluZyhFR0xEaXNwbGF5IGRweSwgRUdMaW50IG5hbWUpCit7CisgICAgRVZFTlQo
IihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTGludCBuYW1lID0gJWQpIiwgZHB5LCBuYW1l
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3Rh
dGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlRGlz
cGxheShkaXNwbGF5KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg
ICAgIH0KKworICAgICAgICBzd2l0Y2ggKG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNl
IEVHTF9DTElFTlRfQVBJUzoKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoIk9wZW5H
TF9FUyIpOworICAgICAgICAgIGNhc2UgRUdMX0VYVEVOU0lPTlM6CisgICAgICAgICAgICByZXR1
cm4gZWdsOjpzdWNjZXNzKGRpc3BsYXktPmdldEV4dGVuc2lvblN0cmluZygpKTsKKyAgICAgICAg
ICBjYXNlIEVHTF9WRU5ET1I6CisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGRpc3Bs
YXktPmdldFZlbmRvclN0cmluZygpKTsKKyAgICAgICAgICBjYXNlIEVHTF9WRVJTSU9OOgorICAg
ICAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcygiMS40IChBTkdMRSAiIFZFUlNJT05fU1RSSU5H
ICIpIik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX1BB
UkFNRVRFUiwgKGNvbnN0IGNoYXIqKU5VTEwpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCAo
Y29uc3QgY2hhciopTlVMTCk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xH
ZXRDb25maWdzKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgKmNvbmZpZ3MsIEVHTGludCBjb25m
aWdfc2l6ZSwgRUdMaW50ICpudW1fY29uZmlnKQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBk
cHkgPSAweCUwLjhwLCBFR0xDb25maWcgKmNvbmZpZ3MgPSAweCUwLjhwLCAiCisgICAgICAgICAg
IkVHTGludCBjb25maWdfc2l6ZSA9ICVkLCBFR0xpbnQgKm51bV9jb25maWcgPSAweCUwLjhwKSIs
CisgICAgICAgICAgZHB5LCBjb25maWdzLCBjb25maWdfc2l6ZSwgbnVtX2NvbmZpZyk7CisKKyAg
ICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0
PGVnbDo6RGlzcGxheSo+KGRweSk7CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZURpc3BsYXkoZGlz
cGxheSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoIW51bV9jb25maWcpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBlZ2w6OmVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCBFR0xfRkFMU0UpOworICAgICAgICB9
CisKKyAgICAgICAgY29uc3QgRUdMaW50IGF0dHJpYkxpc3RbXSA9ICAgIHtFR0xfTk9ORX07CisK
KyAgICAgICAgaWYgKCFkaXNwbGF5LT5nZXRDb25maWdzKGNvbmZpZ3MsIGF0dHJpYkxpc3QsIGNv
bmZpZ19zaXplLCBudW1fY29uZmlnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVn
bDo6ZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9B
TExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbENo
b29zZUNvbmZpZyhFR0xEaXNwbGF5IGRweSwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCwgRUdM
Q29uZmlnICpjb25maWdzLCBFR0xpbnQgY29uZmlnX3NpemUsIEVHTGludCAqbnVtX2NvbmZpZykK
K3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgY29uc3QgRUdMaW50ICph
dHRyaWJfbGlzdCA9IDB4JTAuOHAsICIKKyAgICAgICAgICAiRUdMQ29uZmlnICpjb25maWdzID0g
MHglMC44cCwgRUdMaW50IGNvbmZpZ19zaXplID0gJWQsIEVHTGludCAqbnVtX2NvbmZpZyA9IDB4
JTAuOHApIiwKKyAgICAgICAgICBkcHksIGF0dHJpYl9saXN0LCBjb25maWdzLCBjb25maWdfc2l6
ZSwgbnVtX2NvbmZpZyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxheSAq
ZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisKKyAgICAgICAgaWYg
KCF2YWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBFR0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW51bV9jb25maWcpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCBF
R0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgRUdMaW50IGF0dHJpYkxpc3Rb
XSA9ICAgIHtFR0xfTk9ORX07CisKKyAgICAgICAgaWYgKCFhdHRyaWJfbGlzdCkKKyAgICAgICAg
eworICAgICAgICAgICAgYXR0cmliX2xpc3QgPSBhdHRyaWJMaXN0OworICAgICAgICB9CisKKyAg
ICAgICAgZGlzcGxheS0+Z2V0Q29uZmlncyhjb25maWdzLCBhdHRyaWJfbGlzdCwgY29uZmlnX3Np
emUsIG51bV9jb25maWcpOworCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdMX1RSVUUp
OworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1
cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30KKworRUdM
Qm9vbGVhbiBfX3N0ZGNhbGwgZWdsR2V0Q29uZmlnQXR0cmliKEVHTERpc3BsYXkgZHB5LCBFR0xD
b25maWcgY29uZmlnLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKQoreworICAgIEVW
RU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44
cCwgRUdMaW50IGF0dHJpYnV0ZSA9ICVkLCBFR0xpbnQgKnZhbHVlID0gMHglMC44cCkiLAorICAg
ICAgICAgIGRweSwgY29uZmlnLCBhdHRyaWJ1dGUsIHZhbHVlKTsKKworICAgIHRyeQorICAgIHsK
KyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5
Kj4oZHB5KTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZykp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIWRpc3BsYXktPmdldENvbmZpZ0F0dHJpYihjb25maWcsIGF0dHJpYnV0ZSwg
dmFsdWUpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFE
X0FUVFJJQlVURSwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBlZ2w6
OnN1Y2Nlc3MoRUdMX1RSVUUpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0Up
OworICAgIH0KK30KKworRUdMU3VyZmFjZSBfX3N0ZGNhbGwgZWdsQ3JlYXRlV2luZG93U3VyZmFj
ZShFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMTmF0aXZlV2luZG93VHlwZSB3
aW4sIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5
IGRweSA9IDB4JTAuOHAsIEVHTENvbmZpZyBjb25maWcgPSAweCUwLjhwLCBFR0xOYXRpdmVXaW5k
b3dUeXBlIHdpbiA9IDB4JTAuOHAsICIKKyAgICAgICAgICAiY29uc3QgRUdMaW50ICphdHRyaWJf
bGlzdCA9IDB4JTAuOHApIiwgZHB5LCBjb25maWcsIHdpbiwgYXR0cmliX2xpc3QpOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxl
Z2w6OkRpc3BsYXkqPihkcHkpOworCisgICAgICAgIGlmICghdmFsaWRhdGVDb25maWcoZGlzcGxh
eSwgY29uZmlnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNF
OworICAgICAgICB9CisKKyAgICAgICAgSFdORCB3aW5kb3cgPSAoSFdORCl3aW47CisKKyAgICAg
ICAgaWYgKCFJc1dpbmRvdyh3aW5kb3cpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
ZWdsOjplcnJvcihFR0xfQkFEX05BVElWRV9XSU5ET1csIEVHTF9OT19TVVJGQUNFKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBkaXNwbGF5LT5jcmVhdGVXaW5kb3dTdXJmYWNlKHdpbmRv
dywgY29uZmlnLCBhdHRyaWJfbGlzdCk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9j
JikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9O
T19TVVJGQUNFKTsKKyAgICB9Cit9CisKK0VHTFN1cmZhY2UgX19zdGRjYWxsIGVnbENyZWF0ZVBi
dWZmZXJTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBjb25zdCBFR0xp
bnQgKmF0dHJpYl9saXN0KQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhw
LCBFR0xDb25maWcgY29uZmlnID0gMHglMC44cCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCA9
IDB4JTAuOHApIiwKKyAgICAgICAgICBkcHksIGNvbmZpZywgYXR0cmliX2xpc3QpOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxl
Z2w6OkRpc3BsYXkqPihkcHkpOworCisgICAgICAgIGlmICghdmFsaWRhdGVDb25maWcoZGlzcGxh
eSwgY29uZmlnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNF
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGRpc3BsYXktPmNyZWF0ZU9mZnNjcmVlblN1
cmZhY2UoY29uZmlnLCBOVUxMLCBhdHRyaWJfbGlzdCk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxM
T0MsIEVHTF9OT19TVVJGQUNFKTsKKyAgICB9Cit9CisKK0VHTFN1cmZhY2UgX19zdGRjYWxsIGVn
bENyZWF0ZVBpeG1hcFN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVH
TE5hdGl2ZVBpeG1hcFR5cGUgcGl4bWFwLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KQorewor
ICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0g
MHglMC44cCwgRUdMTmF0aXZlUGl4bWFwVHlwZSBwaXhtYXAgPSAweCUwLjhwLCAiCisgICAgICAg
ICAgImNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUwLjhwKSIsIGRweSwgY29uZmlnLCBw
aXhtYXAsIGF0dHJpYl9saXN0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNw
bGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKworICAgICAg
ICBpZiAoIXZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZykpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKKyAgICAgICAgfQorCisgICAgICAgIFVOSU1Q
TEVNRU5URUQoKTsgICAvLyBGSVhNRQorCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdM
X05PX1NVUkZBQ0UpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgewor
ICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfTk9fU1VSRkFDRSk7
CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xEZXN0cm95U3VyZmFjZShFR0xE
aXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlKQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxh
eSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwKSIsIGRweSwgc3Vy
ZmFjZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9
IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisgICAgICAgIGVnbDo6U3VyZmFjZSAq
ZWdsU3VyZmFjZSA9IHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KHN1cmZhY2UpOworCisgICAg
ICAgIGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBlZ2w6OmVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGRpc3BsYXktPmRlc3Ryb3lTdXJmYWNlKChlZ2w6OlN1cmZhY2UqKXN1cmZhY2UpOwor
CisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdMX1RSVUUpOworICAgIH0KKyAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xf
QkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30KKworRUdMQm9vbGVhbiBfX3N0ZGNhbGwg
ZWdsUXVlcnlTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGlu
dCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRw
eSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCBhdHRyaWJ1
dGUgPSAlZCwgRUdMaW50ICp2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBkcHksIHN1cmZh
Y2UsIGF0dHJpYnV0ZSwgdmFsdWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBlZ2w6OkRp
c3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOworICAgICAg
ICBlZ2w6OlN1cmZhY2UgKmVnbFN1cmZhY2UgPSAoZWdsOjpTdXJmYWNlKilzdXJmYWNlOworCisg
ICAgICAgIGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBlZ2w6OmVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQor
CisgICAgICAgIHN3aXRjaCAoYXR0cmlidXRlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBF
R0xfVkdfQUxQSEFfRk9STUFUOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJ
WE1FCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9WR19DT0xPUlNQQUNF
OgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9DT05GSUdfSUQ6CisgICAgICAgICAgICBVTklNUExF
TUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2Ug
RUdMX0hFSUdIVDoKKyAgICAgICAgICAgICp2YWx1ZSA9IGVnbFN1cmZhY2UtPmdldEhlaWdodCgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFR0xfSE9SSVpPTlRBTF9SRVNP
TFVUSU9OOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9MQVJHRVNUX1BCVUZGRVI6CisgICAgICAg
ICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgIGNhc2UgRUdMX01JUE1BUF9URVhUVVJFOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9N
SVBNQVBfTEVWRUw6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRUdMX01VTFRJU0FNUExFX1JFU09MVkU6
CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgIGNhc2UgRUdMX1BJWEVMX0FTUEVDVF9SQVRJTzoKKyAgICAgICAgICAg
IFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgY2FzZSBFR0xfUkVOREVSX0JVRkZFUjoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsg
ICAvLyBGSVhNRQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFR0xfU1dBUF9C
RUhBVklPUjoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFR0xfVEVYVFVSRV9GT1JNQVQ6CisgICAgICAg
ICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgIGNhc2UgRUdMX1RFWFRVUkVfVEFSR0VUOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9W
RVJUSUNBTF9SRVNPTFVUSU9OOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJ
WE1FCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVHTF9XSURUSDoKKyAgICAg
ICAgICAgICp2YWx1ZSA9IGVnbFN1cmZhY2UtPmdldFdpZHRoKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICBjYXNlIEVHTF9QT1NUX1NVQl9CVUZGRVJfU1VQUE9SVEVEX05WOgorICAg
ICAgICAgICAgKnZhbHVlID0gZWdsU3VyZmFjZS0+aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9GQUxTRSk7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdM
X0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxs
IGVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBz
dXJmYWNlLCBFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpCit7CisgICAgVFJBQ0UoIihF
R0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVH
TGludCBhdHRyaWJ1dGUgPSAlZCwgdm9pZCAqKnZhbHVlID0gMHglMC44cCkiLAorICAgICAgICAg
IGRweSwgc3VyZmFjZSwgYXR0cmlidXRlLCB2YWx1ZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAg
ICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRw
eSk7CisgICAgICAgIGVnbDo6U3VyZmFjZSAqZWdsU3VyZmFjZSA9IChlZ2w6OlN1cmZhY2UqKXN1
cmZhY2U7CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgZWdsU3VyZmFj
ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9TVVJGQUNFLCBFR0xfRkFMU0UpOwor
ICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpCisgICAgICAgIHsKKyAgICAg
ICAgICBjYXNlIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEU6CisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcng6OlN3YXBDaGFpbiAqc3dhcGNoYWluID0gZWdsU3Vy
ZmFjZS0+Z2V0U3dhcENoYWluKCk7CisgICAgICAgICAgICAgICAgKnZhbHVlID0gKHZvaWQqKSAo
c3dhcGNoYWluID8gc3dhcGNoYWluLT5nZXRTaGFyZUhhbmRsZSgpIDogTlVMTCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9GQUxTRSk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJy
b3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19z
dGRjYWxsIGVnbEJpbmRBUEkoRUdMZW51bSBhcGkpCit7CisgICAgRVZFTlQoIihFR0xlbnVtIGFw
aSA9IDB4JVgpIiwgYXBpKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgc3dpdGNoIChhcGkp
CisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEVHTF9PUEVOR0xfQVBJOgorICAgICAgICAgIGNh
c2UgRUdMX09QRU5WR19BUEk6CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFE
X1BBUkFNRVRFUiwgRUdMX0ZBTFNFKTsgICAvLyBOb3Qgc3VwcG9ydGVkIGJ5IHRoaXMgaW1wbGVt
ZW50YXRpb24KKyAgICAgICAgICBjYXNlIEVHTF9PUEVOR0xfRVNfQVBJOgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9y
KEVHTF9CQURfUEFSQU1FVEVSLCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgZWds
OjpzZXRDdXJyZW50QVBJKGFwaSk7CisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhFR0xf
VFJVRSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAg
IHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQor
CitFR0xlbnVtIF9fc3RkY2FsbCBlZ2xRdWVyeUFQSSh2b2lkKQoreworICAgIEVWRU5UKCIoKSIp
OworCisgICAgdHJ5CisgICAgeworICAgICAgICBFR0xlbnVtIEFQSSA9IGVnbDo6Z2V0Q3VycmVu
dEFQSSgpOworCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoQVBJKTsKKyAgICB9CisgICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3Io
RUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRj
YWxsIGVnbFdhaXRDbGllbnQodm9pZCkKK3sKKyAgICBFVkVOVCgiKCkiKTsKKworICAgIHRyeQor
ICAgIHsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisKKyAgICAgICAgcmV0
dXJuIGVnbDo6c3VjY2VzcygwKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNF
KTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFJlbGVhc2VUaHJlYWQodm9p
ZCkKK3sKKyAgICBFVkVOVCgiKCkiKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWdsTWFr
ZUN1cnJlbnQoRUdMX05PX0RJU1BMQVksIEVHTF9OT19DT05URVhULCBFR0xfTk9fU1VSRkFDRSwg
RUdMX05PX1NVUkZBQ0UpOworCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoRUdMX1RSVUUp
OworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1
cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30KKworRUdM
U3VyZmFjZSBfX3N0ZGNhbGwgZWdsQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoRUdMRGlz
cGxheSBkcHksIEVHTGVudW0gYnVmdHlwZSwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwgRUdMQ29u
ZmlnIGNvbmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkKK3sKKyAgICBFVkVOVCgiKEVH
TERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMZW51bSBidWZ0eXBlID0gMHglWCwgRUdMQ2xpZW50
QnVmZmVyIGJ1ZmZlciA9IDB4JTAuOHAsICIKKyAgICAgICAgICAiRUdMQ29uZmlnIGNvbmZpZyA9
IDB4JTAuOHAsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUwLjhwKSIsCisgICAgICAg
ICAgZHB5LCBidWZ0eXBlLCBidWZmZXIsIGNvbmZpZywgYXR0cmliX2xpc3QpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6
OkRpc3BsYXkqPihkcHkpOworCisgICAgICAgIGlmICghdmFsaWRhdGVDb25maWcoZGlzcGxheSwg
Y29uZmlnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGJ1ZnR5cGUgIT0gRUdMX0QzRF9URVhUVVJFXzJEX1NI
QVJFX0hBTkRMRV9BTkdMRSB8fCAhYnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZWdsOjplcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgRUdMX05PX1NVUkZBQ0UpOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIGRpc3BsYXktPmNyZWF0ZU9mZnNjcmVlblN1cmZhY2UoY29u
ZmlnLCAoSEFORExFKWJ1ZmZlciwgYXR0cmliX2xpc3QpOworICAgIH0KKyAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FM
TE9DLCBFR0xfTk9fU1VSRkFDRSk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBl
Z2xTdXJmYWNlQXR0cmliKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGlu
dCBhdHRyaWJ1dGUsIEVHTGludCB2YWx1ZSkKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5
ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCwgRUdMaW50IGF0dHJpYnV0
ZSA9ICVkLCBFR0xpbnQgdmFsdWUgPSAlZCkiLAorICAgICAgICAgIGRweSwgc3VyZmFjZSwgYXR0
cmlidXRlLCB2YWx1ZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGVnbDo6RGlzcGxheSAq
ZGlzcGxheSA9IHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSo+KGRweSk7CisgICAgICAgIGVnbDo6
U3VyZmFjZSAqZWdsU3VyZmFjZSA9IHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KHN1cmZhY2Up
OworCisgICAgICAgIGlmICghdmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAg
ICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisKKyAgICAgICAgcmV0dXJuIGVnbDo6
c3VjY2VzcyhFR0xfVFJVRSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAg
ICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7
CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xCaW5kVGV4SW1hZ2UoRUdMRGlz
cGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcikKK3sKKyAgICBFVkVO
VCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44
cCwgRUdMaW50IGJ1ZmZlciA9ICVkKSIsIGRweSwgc3VyZmFjZSwgYnVmZmVyKTsKKworICAgIHRy
eQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWds
OjpEaXNwbGF5Kj4oZHB5KTsKKyAgICAgICAgZWdsOjpTdXJmYWNlICplZ2xTdXJmYWNlID0gc3Rh
dGljX2Nhc3Q8ZWdsOjpTdXJmYWNlKj4oc3VyZmFjZSk7CisKKyAgICAgICAgaWYgKCF2YWxpZGF0
ZVN1cmZhY2UoZGlzcGxheSwgZWdsU3VyZmFjZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYnVmZmVyICE9IEVHTF9C
QUNLX0JVRkZFUikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdM
X0JBRF9QQVJBTUVURVIsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3Vy
ZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSB8fCBlZ2xTdXJmYWNlLT5nZXRXaW5kb3dIYW5kbGUoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9TVVJGQUNF
LCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVnbFN1cmZhY2UtPmdldEJv
dW5kVGV4dHVyZSgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihF
R0xfQkFEX0FDQ0VTUywgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChlZ2xT
dXJmYWNlLT5nZXRUZXh0dXJlRm9ybWF0KCkgPT0gRUdMX05PX1RFWFRVUkUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfTUFUQ0gsIEVHTF9GQUxTRSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWdsQmluZFRleEltYWdlKGVnbFN1cmZhY2UpKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX01BVENILCBF
R0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcyhFR0xf
VFJVRSk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAg
IHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQor
CitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xSZWxlYXNlVGV4SW1hZ2UoRUdMRGlzcGxheSBkcHks
IEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcikKK3sKKyAgICBFVkVOVCgiKEVHTERp
c3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCwgRUdMaW50
IGJ1ZmZlciA9ICVkKSIsIGRweSwgc3VyZmFjZSwgYnVmZmVyKTsKKworICAgIHRyeQorICAgIHsK
KyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5
Kj4oZHB5KTsKKyAgICAgICAgZWdsOjpTdXJmYWNlICplZ2xTdXJmYWNlID0gc3RhdGljX2Nhc3Q8
ZWdsOjpTdXJmYWNlKj4oc3VyZmFjZSk7CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVN1cmZhY2Uo
ZGlzcGxheSwgZWdsU3VyZmFjZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xf
RkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYnVmZmVyICE9IEVHTF9CQUNLX0JVRkZF
UikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9QQVJB
TUVURVIsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3VyZmFjZSA9PSBF
R0xfTk9fU1VSRkFDRSB8fCBlZ2xTdXJmYWNlLT5nZXRXaW5kb3dIYW5kbGUoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9TVVJGQUNFLCBFR0xfRkFM
U0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGVnbFN1cmZhY2UtPmdldFRleHR1cmVGb3Jt
YXQoKSA9PSBFR0xfTk9fVEVYVFVSRSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVn
bDo6ZXJyb3IoRUdMX0JBRF9NQVRDSCwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAg
IGdsOjpUZXh0dXJlMkQgKnRleHR1cmUgPSBlZ2xTdXJmYWNlLT5nZXRCb3VuZFRleHR1cmUoKTsK
KworICAgICAgICBpZiAodGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgdGV4dHVyZS0+
cmVsZWFzZVRleEltYWdlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZWdsOjpzdWNj
ZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAg
ICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFN3YXBJbnRlcnZhbChFR0xEaXNwbGF5
IGRweSwgRUdMaW50IGludGVydmFsKQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAw
eCUwLjhwLCBFR0xpbnQgaW50ZXJ2YWwgPSAlZCkiLCBkcHksIGludGVydmFsKTsKKworICAgIHRy
eQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWds
OjpEaXNwbGF5Kj4oZHB5KTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlRGlzcGxheShkaXNwbGF5
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgfQor
CisgICAgICAgIGVnbDo6U3VyZmFjZSAqZHJhd19zdXJmYWNlID0gc3RhdGljX2Nhc3Q8ZWdsOjpT
dXJmYWNlKj4oZWdsOjpnZXRDdXJyZW50RHJhd1N1cmZhY2UoKSk7CisKKyAgICAgICAgaWYgKGRy
YXdfc3VyZmFjZSA9PSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpl
cnJvcihFR0xfQkFEX1NVUkZBQ0UsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGRyYXdfc3VyZmFjZS0+c2V0U3dhcEludGVydmFsKGludGVydmFsKTsKKworICAgICAg
ICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExP
QywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTENvbnRleHQgX19zdGRjYWxsIGVnbENyZWF0
ZUNvbnRleHQoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTENvbnRleHQgc2hh
cmVfY29udGV4dCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkKK3sKKyAgICBFVkVOVCgiKEVH
TERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29uZmlnIGNvbmZpZyA9IDB4JTAuOHAsIEVHTENv
bnRleHQgc2hhcmVfY29udGV4dCA9IDB4JTAuOHAsICIKKyAgICAgICAgICAiY29uc3QgRUdMaW50
ICphdHRyaWJfbGlzdCA9IDB4JTAuOHApIiwgZHB5LCBjb25maWcsIHNoYXJlX2NvbnRleHQsIGF0
dHJpYl9saXN0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgLy8gR2V0IHRoZSByZXF1ZXN0
ZWQgY2xpZW50IHZlcnNpb24gKGRlZmF1bHQgaXMgMSkgYW5kIGNoZWNrIGl0IGlzIHR3by4KKyAg
ICAgICAgRUdMaW50IGNsaWVudF92ZXJzaW9uID0gMTsKKyAgICAgICAgYm9vbCByZXNldF9ub3Rp
ZmljYXRpb24gPSBmYWxzZTsKKyAgICAgICAgYm9vbCByb2J1c3RfYWNjZXNzID0gZmFsc2U7CisK
KyAgICAgICAgaWYgKGF0dHJpYl9saXN0KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGNv
bnN0IEVHTGludCogYXR0cmlidXRlID0gYXR0cmliX2xpc3Q7IGF0dHJpYnV0ZVswXSAhPSBFR0xf
Tk9ORTsgYXR0cmlidXRlICs9IDIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dp
dGNoIChhdHRyaWJ1dGVbMF0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
Y2FzZSBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTjoKKyAgICAgICAgICAgICAgICAgICAgY2xp
ZW50X3ZlcnNpb24gPSBhdHRyaWJ1dGVbMV07CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNUX0FDQ0VTU19F
WFQ6CisgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVbMV0gPT0gRUdMX1RSVUUpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlZ2w6
OmVycm9yKEVHTF9CQURfQ09ORklHLCBFR0xfTk9fQ09OVEVYVCk7ICAgLy8gVW5pbXBsZW1lbnRl
ZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm9idXN0X2FjY2VzcyA9IHRydWU7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRl
WzFdICE9IEVHTF9GQUxTRSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlZ2w6OmVy
cm9yKEVHTF9CQURfQVRUUklCVVRFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfQ09OVEVYVF9PUEVOR0xfUkVT
RVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0VYVDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF0
dHJpYnV0ZVsxXSA9PSBFR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc2V0X25vdGlmaWNhdGlvbiA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGF0dHJpYnV0ZVsxXSAhPSBFR0xfTk9fUkVTRVRfTk9USUZJQ0FUSU9OX0VY
VCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQVRU
UklCVVRFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVnbDo6
ZXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsIEVHTF9OT19DT05URVhUKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2xpZW50X3ZlcnNp
b24gIT0gMikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JB
RF9DT05GSUcsIEVHTF9OT19DT05URVhUKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzaGFy
ZV9jb250ZXh0ICYmIHN0YXRpY19jYXN0PGdsOjpDb250ZXh0Kj4oc2hhcmVfY29udGV4dCktPmlz
UmVzZXROb3RpZmljYXRpb25FbmFibGVkKCkgIT0gcmVzZXRfbm90aWZpY2F0aW9uKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX01BVENILCBFR0xfTk9f
Q09OVEVYVCk7CisgICAgICAgIH0KKworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBz
dGF0aWNfY2FzdDxlZ2w6OkRpc3BsYXkqPihkcHkpOworCisgICAgICAgIGlmICghdmFsaWRhdGVD
b25maWcoZGlzcGxheSwgY29uZmlnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVH
TF9OT19DT05URVhUOworICAgICAgICB9CisKKyAgICAgICAgRUdMQ29udGV4dCBjb250ZXh0ID0g
ZGlzcGxheS0+Y3JlYXRlQ29udGV4dChjb25maWcsIHN0YXRpY19jYXN0PGdsOjpDb250ZXh0Kj4o
c2hhcmVfY29udGV4dCksIHJlc2V0X25vdGlmaWNhdGlvbiwgcm9idXN0X2FjY2Vzcyk7CisKKyAg
ICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGNvbnRl
eHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQ09O
VEVYVF9MT1NULCBFR0xfTk9fQ09OVEVYVCk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVH
TF9OT19DT05URVhUKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbERlc3Ry
b3lDb250ZXh0KEVHTERpc3BsYXkgZHB5LCBFR0xDb250ZXh0IGN0eCkKK3sKKyAgICBFVkVOVCgi
KEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29udGV4dCBjdHggPSAweCUwLjhwKSIsIGRw
eSwgY3R4KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5
ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKyAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCo+KGN0eCk7CisKKyAgICAgICAgaWYg
KCF2YWxpZGF0ZUNvbnRleHQoZGlzcGxheSwgY29udGV4dCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3R4ID09IEVH
TF9OT19DT05URVhUKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihF
R0xfQkFEX0NPTlRFWFQsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBkaXNwbGF5
LT5kZXN0cm95Q29udGV4dChjb250ZXh0KTsKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNz
KEVHTF9UUlVFKTsKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9
Cit9CisKK0VHTEJvb2xlYW4gX19zdGRjYWxsIGVnbE1ha2VDdXJyZW50KEVHTERpc3BsYXkgZHB5
LCBFR0xTdXJmYWNlIGRyYXcsIEVHTFN1cmZhY2UgcmVhZCwgRUdMQ29udGV4dCBjdHgpCit7Cisg
ICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2UgZHJhdyA9IDB4
JTAuOHAsIEVHTFN1cmZhY2UgcmVhZCA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHglMC44
cCkiLAorICAgICAgICAgIGRweSwgZHJhdywgcmVhZCwgY3R4KTsKKworICAgIHRyeQorICAgIHsK
KyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5
Kj4oZHB5KTsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6
Q29udGV4dCo+KGN0eCk7CisKKyAgICAgICAgaWYgKGN0eCAhPSBFR0xfTk9fQ09OVEVYVCAmJiAh
dmFsaWRhdGVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgcng6OlJlbmRlcmVyICpy
ZW5kZXJlciA9IGRpc3BsYXktPmdldFJlbmRlcmVyKCk7CisgICAgICAgIGlmIChyZW5kZXJlci0+
dGVzdERldmljZUxvc3QodHJ1ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xf
RkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVuZGVyZXItPmlzRGV2aWNlTG9zdCgp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQ09OVEVYVF9M
T1NULCBFR0xfRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKChkcmF3ICE9IEVHTF9O
T19TVVJGQUNFICYmICF2YWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgc3RhdGljX2Nhc3Q8ZWdsOjpT
dXJmYWNlKj4oZHJhdykpKSB8fAorICAgICAgICAgICAgKHJlYWQgIT0gRUdMX05PX1NVUkZBQ0Ug
JiYgIXZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihy
ZWFkKSkpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGRyYXcgIT0gcmVhZCkKKyAgICAgICAgeworICAgICAgICAgICAg
VU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgIH0KKworICAgICAgICBlZ2w6OnNl
dEN1cnJlbnREaXNwbGF5KGRweSk7CisgICAgICAgIGVnbDo6c2V0Q3VycmVudERyYXdTdXJmYWNl
KGRyYXcpOworICAgICAgICBlZ2w6OnNldEN1cnJlbnRSZWFkU3VyZmFjZShyZWFkKTsKKworICAg
ICAgICBnbE1ha2VDdXJyZW50KGNvbnRleHQsIGRpc3BsYXksIHN0YXRpY19jYXN0PGVnbDo6U3Vy
ZmFjZSo+KGRyYXcpKTsKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVHTF9UUlVFKTsK
KyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGVnbDo6ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTENv
bnRleHQgX19zdGRjYWxsIGVnbEdldEN1cnJlbnRDb250ZXh0KHZvaWQpCit7CisgICAgRVZFTlQo
IigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIEVHTENvbnRleHQgY29udGV4dCA9IGds
R2V0Q3VycmVudENvbnRleHQoKTsKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGNvbnRl
eHQpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICBy
ZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgfQor
fQorCitFR0xTdXJmYWNlIF9fc3RkY2FsbCBlZ2xHZXRDdXJyZW50U3VyZmFjZShFR0xpbnQgcmVh
ZGRyYXcpCit7CisgICAgRVZFTlQoIihFR0xpbnQgcmVhZGRyYXcgPSAlZCkiLCByZWFkZHJhdyk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChyZWFkZHJhdyA9PSBFR0xfUkVBRCkKKyAg
ICAgICAgeworICAgICAgICAgICAgRUdMU3VyZmFjZSByZWFkID0gZWdsOjpnZXRDdXJyZW50UmVh
ZFN1cmZhY2UoKTsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MocmVhZCk7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmVhZGRyYXcgPT0gRUdMX0RSQVcpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEVHTFN1cmZhY2UgZHJhdyA9IGVnbDo6Z2V0Q3VycmVudERyYXdTdXJmYWNl
KCk7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGRyYXcpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdM
X0JBRF9QQVJBTUVURVIsIEVHTF9OT19TVVJGQUNFKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihF
R0xfQkFEX0FMTE9DLCBFR0xfTk9fU1VSRkFDRSk7CisgICAgfQorfQorCitFR0xEaXNwbGF5IF9f
c3RkY2FsbCBlZ2xHZXRDdXJyZW50RGlzcGxheSh2b2lkKQoreworICAgIEVWRU5UKCIoKSIpOwor
CisgICAgdHJ5CisgICAgeworICAgICAgICBFR0xEaXNwbGF5IGRweSA9IGVnbDo6Z2V0Q3VycmVu
dERpc3BsYXkoKTsKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKGRweSk7CisgICAgfQor
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVy
cm9yKEVHTF9CQURfQUxMT0MsIEVHTF9OT19ESVNQTEFZKTsKKyAgICB9Cit9CisKK0VHTEJvb2xl
YW4gX19zdGRjYWxsIGVnbFF1ZXJ5Q29udGV4dChFR0xEaXNwbGF5IGRweSwgRUdMQ29udGV4dCBj
dHgsIEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpCit7CisgICAgRVZFTlQoIihFR0xE
aXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHglMC44cCwgRUdMaW50IGF0
dHJpYnV0ZSA9ICVkLCBFR0xpbnQgKnZhbHVlID0gMHglMC44cCkiLAorICAgICAgICAgIGRweSwg
Y3R4LCBhdHRyaWJ1dGUsIHZhbHVlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZWdsOjpE
aXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5KTsKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCo+KGN0eCk7
CisKKyAgICAgICAgaWYgKCF2YWxpZGF0ZUNvbnRleHQoZGlzcGxheSwgY29udGV4dCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAg
ICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKworICAgICAgICByZXR1cm4gZWdsOjpzdWNj
ZXNzKDApOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAg
ICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOworICAgIH0KK30K
KworRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsV2FpdEdMKHZvaWQpCit7CisgICAgRVZFTlQoIigp
Iik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhN
RQorCisgICAgICAgIHJldHVybiBlZ2w6OnN1Y2Nlc3MoMCk7CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURf
QUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQorfQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xX
YWl0TmF0aXZlKEVHTGludCBlbmdpbmUpCit7CisgICAgRVZFTlQoIihFR0xpbnQgZW5naW5lID0g
JWQpIiwgZW5naW5lKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OyAgIC8vIEZJWE1FCisKKyAgICAgICAgcmV0dXJuIGVnbDo6c3VjY2VzcygwKTsKKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJy
b3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKKyAgICB9Cit9CisKK0VHTEJvb2xlYW4gX19z
dGRjYWxsIGVnbFN3YXBCdWZmZXJzKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2Up
Cit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3Vy
ZmFjZSA9IDB4JTAuOHApIiwgZHB5LCBzdXJmYWNlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8ZWdsOjpEaXNwbGF5Kj4oZHB5
KTsKKyAgICAgICAgZWdsOjpTdXJmYWNlICplZ2xTdXJmYWNlID0gKGVnbDo6U3VyZmFjZSopc3Vy
ZmFjZTsKKworICAgICAgICBpZiAoIXZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNl
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChkaXNwbGF5LT5nZXRSZW5kZXJlcigpLT5pc0RldmljZUxvc3QoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0NPTlRFWFRfTE9TVCwg
RUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19T
VVJGQUNFKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFE
X1NVUkZBQ0UsIEVHTF9GQUxTRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZWdsU3VyZmFj
ZS0+c3dhcCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNzKEVH
TF9UUlVFKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0Up
OworICAgIH0KKworICAgIHJldHVybiBFR0xfRkFMU0U7Cit9CisKK0VHTEJvb2xlYW4gX19zdGRj
YWxsIGVnbENvcHlCdWZmZXJzKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVH
TE5hdGl2ZVBpeG1hcFR5cGUgdGFyZ2V0KQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkg
PSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwLCBFR0xOYXRpdmVQaXhtYXBU
eXBlIHRhcmdldCA9IDB4JTAuOHApIiwgZHB5LCBzdXJmYWNlLCB0YXJnZXQpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxlZ2w6
OkRpc3BsYXkqPihkcHkpOworICAgICAgICBlZ2w6OlN1cmZhY2UgKmVnbFN1cmZhY2UgPSBzdGF0
aWNfY2FzdDxlZ2w6OlN1cmZhY2UqPihzdXJmYWNlKTsKKworICAgICAgICBpZiAoIXZhbGlkYXRl
U3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNlKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkaXNwbGF5LT5nZXRSZW5k
ZXJlcigpLT5pc0RldmljZUxvc3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVn
bDo6ZXJyb3IoRUdMX0NPTlRFWFRfTE9TVCwgRUdMX0ZBTFNFKTsKKyAgICAgICAgfQorCisgICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorCisgICAgICAgIHJldHVybiBlZ2w6OnN1
Y2Nlc3MoMCk7CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAg
ICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CisgICAgfQor
fQorCitFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xQb3N0U3ViQnVmZmVyTlYoRUdMRGlzcGxheSBk
cHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgs
IEVHTGludCBoZWlnaHQpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAs
IEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCB4ID0gJWQsIEVHTGludCB5ID0g
JWQsIEVHTGludCB3aWR0aCA9ICVkLCBFR0xpbnQgaGVpZ2h0ID0gJWQpIiwgZHB5LCBzdXJmYWNl
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHgg
PCAwIHx8IHkgPCAwIHx8IHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgRUdMX0ZBTFNFKTsK
KyAgICAgICAgfQorCisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0
PGVnbDo6RGlzcGxheSo+KGRweSk7CisgICAgICAgIGVnbDo6U3VyZmFjZSAqZWdsU3VyZmFjZSA9
IHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSo+KHN1cmZhY2UpOworCisgICAgICAgIGlmICghdmFs
aWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRpc3BsYXktPmdl
dFJlbmRlcmVyKCktPmlzRGV2aWNlTG9zdCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZWdsOjplcnJvcihFR0xfQ09OVEVYVF9MT1NULCBFR0xfRkFMU0UpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBlZ2w6OmVycm9yKEVHTF9CQURfU1VSRkFDRSwgRUdMX0ZBTFNFKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChlZ2xTdXJmYWNlLT5wb3N0U3ViQnVmZmVyKHgsIHksIHdp
ZHRoLCBoZWlnaHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpzdWNjZXNz
KEVHTF9UUlVFKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZWdsOjplcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFM
U0UpOworICAgIH0KKworICAgIHJldHVybiBFR0xfRkFMU0U7Cit9CisKK19fZWdsTXVzdENhc3RU
b1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUgX19zdGRjYWxsIGVnbEdldFByb2NBZGRyZXNzKGNv
bnN0IGNoYXIgKnByb2NuYW1lKQoreworICAgIEVWRU5UKCIoY29uc3QgY2hhciAqcHJvY25hbWUg
PSBcIiVzXCIpIiwgcHJvY25hbWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBzdHJ1Y3Qg
RXh0ZW5zaW9uCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAg
ICAgICAgICBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlIGFkZHJlc3M7
CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGljIGNvbnN0IEV4dGVuc2lvbiBlZ2xFeHRlbnNp
b25zW10gPQorICAgICAgICB7CisgICAgICAgICAgICB7ImVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJB
TkdMRSIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWVnbFF1ZXJ5
U3VyZmFjZVBvaW50ZXJBTkdMRX0sCisgICAgICAgICAgICB7ImVnbFBvc3RTdWJCdWZmZXJOViIs
IChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWVnbFBvc3RTdWJCdWZm
ZXJOVn0sCisgICAgICAgICAgICB7IiIsIE5VTEx9LAorICAgICAgICB9OworCisgICAgICAgIGZv
ciAodW5zaWduZWQgaW50IGV4dCA9IDA7IGV4dCA8IEFycmF5U2l6ZShlZ2xFeHRlbnNpb25zKTsg
ZXh0KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAocHJvY25hbWUsIGVnbEV4
dGVuc2lvbnNbZXh0XS5uYW1lKSA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSllZ2xFeHRl
bnNpb25zW2V4dF0uYWRkcmVzczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBnbEdldFByb2NBZGRyZXNzKHByb2NuYW1lKTsKKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6ZXJyb3IoRUdMX0JBRF9B
TExPQywgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpTlVMTCk7Cisg
ICAgfQorfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJF
R0wuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wv
bGliRUdMLmRlZgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJFR0wvbGliRUdMLmRlZgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorTElCUkFSWQls
aWJFR0wKK0VYUE9SVFMKKwllZ2xCaW5kQVBJICAgICAgICAgICAgICAgICAgICAgIEAxNAorCWVn
bEJpbmRUZXhJbWFnZSAgICAgICAgICAgICAgICAgQDIwCisJZWdsQ2hvb3NlQ29uZmlnICAgICAg
ICAgICAgICAgICBANworCWVnbENvcHlCdWZmZXJzICAgICAgICAgICAgICAgICAgQDMzCisJZWds
Q3JlYXRlQ29udGV4dCAgICAgICAgICAgICAgICBAMjMKKwllZ2xDcmVhdGVQYnVmZmVyRnJvbUNs
aWVudEJ1ZmZlciAgICAgICAgQDE4CisJZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UgICAgICAgICBA
MTAKKwllZ2xDcmVhdGVQaXhtYXBTdXJmYWNlICAgICAgICAgIEAxMQorCWVnbENyZWF0ZVdpbmRv
d1N1cmZhY2UgICAgICAgICAgQDkKKwllZ2xEZXN0cm95Q29udGV4dCAgICAgICAgICAgICAgIEAy
NAorCWVnbERlc3Ryb3lTdXJmYWNlICAgICAgICAgICAgICAgQDEyCisJZWdsR2V0Q29uZmlnQXR0
cmliICAgICAgICAgICAgICBAOAorCWVnbEdldENvbmZpZ3MgICAgICAgICAgICAgICAgICAgQDYK
KwllZ2xHZXRDdXJyZW50Q29udGV4dCAgICAgICAgICAgIEAyNgorCWVnbEdldEN1cnJlbnREaXNw
bGF5ICAgICAgICAgICAgQDI4CisJZWdsR2V0Q3VycmVudFN1cmZhY2UgICAgICAgICAgICBAMjcK
KwllZ2xHZXREaXNwbGF5ICAgICAgICAgICAgICAgICAgIEAyCisJZWdsR2V0RXJyb3IgICAgICAg
ICAgICAgICAgICAgICBAMQorCWVnbEdldFByb2NBZGRyZXNzICAgICAgICAgICAgICAgQDM0CisJ
ZWdsSW5pdGlhbGl6ZSAgICAgICAgICAgICAgICAgICBAMworCWVnbE1ha2VDdXJyZW50ICAgICAg
ICAgICAgICAgICAgQDI1CisJZWdsUXVlcnlBUEkgICAgICAgICAgICAgICAgICAgICBAMTUKKwll
Z2xRdWVyeUNvbnRleHQgICAgICAgICAgICAgICAgIEAyOQorCWVnbFF1ZXJ5U3RyaW5nICAgICAg
ICAgICAgICAgICAgQDUKKwllZ2xRdWVyeVN1cmZhY2UgICAgICAgICAgICAgICAgIEAxMworCWVn
bFJlbGVhc2VUZXhJbWFnZSAgICAgICAgICAgICAgQDIxCisJZWdsUmVsZWFzZVRocmVhZCAgICAg
ICAgICAgICAgICBAMTcKKwllZ2xTdXJmYWNlQXR0cmliICAgICAgICAgICAgICAgIEAxOQorCWVn
bFN3YXBCdWZmZXJzICAgICAgICAgICAgICAgICAgQDMyCisJZWdsU3dhcEludGVydmFsICAgICAg
ICAgICAgICAgICBAMjIKKwllZ2xUZXJtaW5hdGUgICAgICAgICAgICAgICAgICAgIEA0CisJZWds
V2FpdENsaWVudCAgICAgICAgICAgICAgICAgICBAMTYKKwllZ2xXYWl0R0wgICAgICAgICAgICAg
ICAgICAgICAgIEAzMAorCWVnbFdhaXROYXRpdmUgICAgICAgICAgICAgICAgICAgQDMxClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkVHTC9saWJFR0wucmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkVHTC9saWJFR0wucmMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliRUdML2xpYkVHTC5yYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDIgQEAK
Ky8vIE1pY3Jvc29mdCBWaXN1YWwgQysrIGdlbmVyYXRlZCByZXNvdXJjZSBzY3JpcHQuCisvLwor
I2luY2x1ZGUgInJlc291cmNlLmgiCisKKyNkZWZpbmUgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9M
UworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBHZW5lcmF0ZWQgZnJvbSB0aGUgVEVYVElO
Q0xVREUgMiByZXNvdXJjZS4KKy8vCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgIi4u
L2NvbW1vbi92ZXJzaW9uLmgiCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisjdW5kZWYgQVBTVFVE
SU9fUkVBRE9OTFlfU1lNQk9MUworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gRW5nbGlzaCAo
VS5TLikgcmVzb3VyY2VzCisKKyNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZp
bmVkKEFGWF9UQVJHX0VOVSkKKyNpZmRlZiBfV0lOMzIKK0xBTkdVQUdFIExBTkdfRU5HTElTSCwg
U1VCTEFOR19FTkdMSVNIX1VTCisjcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQorI2VuZGlmIC8vX1dJ
TjMyCisKKyNpZmRlZiBBUFNUVURJT19JTlZPS0VECisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8K
Ky8vIFRFWFRJTkNMVURFCisvLworCisxIFRFWFRJTkNMVURFIAorQkVHSU4KKyAgICAicmVzb3Vy
Y2UuaFwwIgorRU5ECisKKzIgVEVYVElOQ0xVREUgCitCRUdJTgorICAgICIjaW5jbHVkZSAiImFm
eHJlcy5oIiJcclxuIgorICAgICIjaW5jbHVkZSAiIi4uL2NvbW1vbi92ZXJzaW9uLmgiIlwwIgor
RU5ECisKKzMgVEVYVElOQ0xVREUgCitCRUdJTgorICAgICJcclxuIgorICAgICJcMCIKK0VORAor
CisjZW5kaWYgICAgLy8gQVBTVFVESU9fSU5WT0tFRAorCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CisvLworLy8gVmVyc2lvbgorLy8KKworVlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPCisgRklM
RVZFUlNJT04gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9OLEJVSUxEX1ZFUlNJT04sQlVJTERf
UkVWSVNJT04KKyBQUk9EVUNUVkVSU0lPTiBNQUpPUl9WRVJTSU9OLE1JTk9SX1ZFUlNJT04sQlVJ
TERfVkVSU0lPTixCVUlMRF9SRVZJU0lPTgorIEZJTEVGTEFHU01BU0sgMHgxN0wKKyNpZmRlZiBf
REVCVUcKKyBGSUxFRkxBR1MgMHgxTAorI2Vsc2UKKyBGSUxFRkxBR1MgMHgwTAorI2VuZGlmCisg
RklMRU9TIDB4NEwKKyBGSUxFVFlQRSAweDJMCisgRklMRVNVQlRZUEUgMHgwTAorQkVHSU4KKyAg
ICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgQkxPQ0sgIjA0MDkw
NGIwIgorICAgICAgICBCRUdJTgorICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIs
ICJBTkdMRSBsaWJFR0wgRHluYW1pYyBMaW5rIExpYnJhcnkiCisgICAgICAgICAgICBWQUxVRSAi
RmlsZVZlcnNpb24iLCBWRVJTSU9OX1NUUklORworICAgICAgICAgICAgVkFMVUUgIkludGVybmFs
TmFtZSIsICJsaWJFR0wiCisgICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIgorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFs
RmlsZW5hbWUiLCAibGliRUdMLmRsbCIKKyAgICAgICAgICAgIFZBTFVFICJQcml2YXRlQnVpbGQi
LCBWRVJTSU9OX1NUUklORworICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIkFOR0xF
IGxpYkVHTCBEeW5hbWljIExpbmsgTGlicmFyeSIKKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0
VmVyc2lvbiIsIFZFUlNJT05fU1RSSU5HCisgICAgICAgIEVORAorICAgIEVORAorICAgIEJMT0NL
ICJWYXJGaWxlSW5mbyIKKyAgICBCRUdJTgorICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAw
eDQwOSwgMTIwMAorICAgIEVORAorRU5ECisKKyNlbmRpZiAgICAvLyBFbmdsaXNoIChVLlMuKSBy
ZXNvdXJjZXMKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKworCisjaWZuZGVmIEFQU1RVRElPX0lO
Vk9LRUQKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRF
WFRJTkNMVURFIDMgcmVzb3VyY2UuCisvLworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisjZW5k
aWYgICAgLy8gbm90IEFQU1RVRElPX0lOVk9LRUQKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJFR0wvbGliRUdMLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wudmN4cHJvagkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLnZjeHByb2oJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjU4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1
dGYtOCI/Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0
LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxk
LzIwMDMiPg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisg
ICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8
Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2lu
MzI8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVj
dENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlv
bj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4N
CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9u
IEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8
L0NvbmZpZ3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IlJlbGVhc2V8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1
cmF0aW9uPg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RD
b25maWd1cmF0aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0i
R2xvYmFscyI+DQorICAgIDxQcm9qZWN0R3VpZD57RTc0NkZDQTktNjRDMy00MzNFLTg1RTgtOUE1
QTY3QUI3RUQ2fTwvUHJvamVjdEd1aWQ+DQorICAgIDxSb290TmFtZXNwYWNlPmxpYkVHTDwvUm9v
dE5hbWVzcGFjZT4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAgPC9Qcm9w
ZXJ0eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29m
dC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25m
aWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25m
aWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+
DQorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1p
emF0aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJD
b25maWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9D
b25maWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJT
ZXQ+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZp
Z3VyYXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZp
Z3VyYXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4N
CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6
YXRpb24+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25m
aWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25m
aWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+
DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0
aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5z
aW9uU2V0dGluZ3MiPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJl
bD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIp
XE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMo
JyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBM
YWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPElt
cG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9
IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29u
ZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9y
dEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8
SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0i
IC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hl
ZXRzIj4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3Bw
LiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGly
KVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBw
RGF0YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExh
YmVsPSJVc2VyTWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZp
bGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERp
ciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMy
JyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGly
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4kKENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVl
PC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZp
Z3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlvbilcPC9J
bnREaXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4N
CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8
L091dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnRE
aXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxP
dXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091dERp
cj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L0ludERpcj4N
CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPExp
YnJhcnlQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgICAgPExpYnJhcnlQ
YXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2lu
MzInIj4kKERYU0RLX0RJUilcbGliXHg4NjskKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQor
ICAgIDxMaWJyYXJ5UGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfHg2NCciPiQoTGlicmFyeVBhdGgpPC9MaWJyYXJ5UGF0aD4NCisgICAgPExpYnJh
cnlQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj4kKExpYnJhcnlQYXRoKTwvTGlicmFyeVBhdGg+DQorICAgIDxJbmNsdWRlUGF0aCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
JChEWFNES19ESVIpXGluY2x1ZGU7JChWQ0luc3RhbGxEaXIpaW5jbHVkZTskKFZDSW5zdGFsbERp
cilhdGxtZmNcaW5jbHVkZTskKFdpbmRvd3NTZGtEaXIpaW5jbHVkZTskKEZyYW1ld29ya1NES0Rp
cilcaW5jbHVkZTs8L0luY2x1ZGVQYXRoPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPEl0ZW1E
ZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRpbWl6YXRpb24+
RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4kKFByb2plY3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4N
CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19XSU5ET1dTO19V
U1JETEw7TElCRUdMX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUo
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAg
ICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVu
dGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAg
PFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAg
ICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAg
ICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8VHJlYXRXYXJu
aW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxEZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisg
ICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQy
NDU7NDUxMjs0NzAyOyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNX
YXJuaW5ncz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlv
bmFsRGVwZW5kZW5jaWVzPmQzZDkubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0
aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkVHTC5k
ZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KKyAgICAgIDxEZWxheUxvYWRETExzPiUoRGVsYXlM
b2FkRExMcyk8L0RlbGF5TG9hZERMTHM+DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlv
bj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5XaW5k
b3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAg
IDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGlu
ZVg4NjwvVGFyZ2V0TWFjaGluZT4NCisgICAgPC9MaW5rPg0KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+
DQorICAgICAgPENvbW1hbmQ+JTQwZWNobyBvbg0KK21rZGlyICIkKFByb2plY3REaXIpLi5cLi5c
bGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxpYkVHTC5kbGwiICIkKFBy
b2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KK2NvcHkgIiQoT3V0RGlyKWxp
YkVHTC5saWIiICIkKFByb2plY3REaXIpLi5cLi5cbGliXCQoQ29uZmlndXJhdGlvbilcIg0KKyU0
MGVjaG8gb2ZmDQorPC9Db21tYW5kPg0KKyAgICA8L1Bvc3RCdWlsZEV2ZW50Pg0KKyAgPC9JdGVt
RGVmaW5pdGlvbkdyb3VwPg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQorICAgIDxDbENv
bXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KKyAg
ICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVuY3Rpb25F
eHBhbnNpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0
RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXBy
b2Nlc3NvckRlZmluaXRpb25zPkFOR0xFX0RJU0FCTEVfVFJBQ0U7V0lOMzI7TkRFQlVHO19XSU5E
T1dTO19VU1JETEw7TElCRUdMX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlO
TUFYO19TRUNVUkVfU0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50
aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21w
aWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0K
KyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQor
ICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7
NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8
L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+
DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7JShBZGRpdGlvbmFsRGVw
ZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8TW9kdWxlRGVmaW5p
dGlvbkZpbGU+bGliRUdMLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAgICAgPERlbGF5
TG9hZERMTHM+JShEZWxheUxvYWRETExzKTwvRGVsYXlMb2FkRExMcz4NCisgICAgICA8R2VuZXJh
dGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAg
ICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8T3B0aW1pemVSZWZlcmVu
Y2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4NCisgICAgICA8RW5hYmxlQ09NREFURm9sZGlu
Zz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPg0KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVu
dGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPg0KKyAgICAgIDxUYXJnZXRN
YWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAgIDwvTGluaz4NCisgICAgPFBv
c3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxDb21tYW5kPiU0MGVjaG8gb24NCitta2RpciAiJChQcm9q
ZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJF
R0wuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitjb3B5
ICIkKE91dERpcilsaWJFR0wubGliIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3Vy
YXRpb24pXCINCislNDBlY2hvIG9mZg0KKzwvQ29tbWFuZD4NCisgICAgPC9Qb3N0QnVpbGRFdmVu
dD4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+DQor
ICAgIDxNaWRsPg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25t
ZW50Pg0KKyAgICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlv
bj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPiQoUHJvamVjdERpcikvLi47ICQoUHJvamVjdERpcikvLi4vLi4vaW5jbHVkZTslKEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
Pg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X1dJTkRPV1M7
X1VTUkRMTDtMSUJFR0xfRVhQT1JUUztfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7
JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAg
ICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNS
dW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAg
ICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCisg
ICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCisg
ICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEaXNhYmxl
U3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7
JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAg
ICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1h
dGlvbkZvcm1hdD4NCisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5p
bmdBc0Vycm9yPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPExpbms+DQorICAgICAgPEFkZGl0
aW9uYWxEZXBlbmRlbmNpZXM+ZDNkOS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRk
aXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZpbGU+bGliRUdM
LmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAgICAgPERlbGF5TG9hZERMTHM+JShEZWxh
eUxvYWRETExzKTwvRGVsYXlMb2FkRExMcz4NCisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0
aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCisgICAgICA8U3ViU3lzdGVtPldp
bmRvd3M8L1N1YlN5c3RlbT4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAg
ICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNo
aW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQb3N0QnVpbGRFdmVu
dD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJvamVjdERpcikuLlwu
LlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliRUdMLmRsbCIgIiQo
UHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIp
bGliRUdMLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQor
JTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0
ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+DQorICAgIDxNaWRs
Pg0KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50Pg0KKyAg
ICA8L01pZGw+DQorICAgIDxDbENvbXBpbGU+DQorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVl
ZDwvT3B0aW1pemF0aW9uPg0KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0
YWJsZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS8uLjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRl
OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfV0lO
RE9XUztfVVNSRExMO0xJQkVHTF9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtOT01J
Tk1BWDtfU0VDVVJFX1NDTD0wOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVu
dGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAgIDwvUHJlY29t
cGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4N
CisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0
OzQyNDU7NDUxMjs0NzAyOyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lm
aWNXYXJuaW5ncz4NCisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJh
c2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQorICAgICAgPFRyZWF0V2FybmluZ0FzRXJyb3I+
dHJ1ZTwvVHJlYXRXYXJuaW5nQXNFcnJvcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5r
Pg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQzZDkubGliOyUoQWRkaXRpb25hbERl
cGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE1vZHVsZURlZmlu
aXRpb25GaWxlPmxpYkVHTC5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0KKyAgICAgIDxEZWxh
eUxvYWRETExzPiUoRGVsYXlMb2FkRExMcyk8L0RlbGF5TG9hZERMTHM+DQorICAgICAgPEdlbmVy
YXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQorICAg
ICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVmZXJl
bmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZvbGRp
bmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZl
bnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFyZ2V0
TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAgIDxQ
b3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQoUHJv
amVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGli
RUdMLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29w
eSAiJChPdXREaXIpbGliRUdMLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1
cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9zdEJ1aWxkRXZl
bnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9IkNvbmZpZy5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cQ29tbW9uXGRlYnVnLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJEaXNwbGF5
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJsaWJFR0wuY3BwIiAvPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Im1haW4uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IlN1cmZhY2UuY3BwIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IkNvbmZpZy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IkRpc3BsYXkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVH
TFxlZ2wuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxl
Z2xleHQuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxl
Z2xwbGF0Zm9ybS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Im1haW4uaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZXNvdXJjZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IlN1cmZhY2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25c
dmVyc2lvbi5oIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Tm9u
ZSBJbmNsdWRlPSJsaWJFR0wuZGVmIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3Vw
Pg0KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9ImxpYkVHTC5yYyIgLz4NCisgIDwvSXRl
bUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0i
Li5cbGliR0xFU3YyXGxpYkdMRVN2Mi52Y3hwcm9qIj4NCisgICAgICA8UHJvamVjdD57YjU4NzFh
N2EtOTY4Yy00MmUzLWEzM2ItOTgxZTZmNDQ4ZTc4fTwvUHJvamVjdD4NCisgICAgPC9Qcm9qZWN0
UmVmZXJlbmNlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJn
ZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVs
PSJFeHRlbnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJFR0wvbGliRUdMLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3hwcm9q
LmZpbHRlcnMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKK++7vzw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHht
bG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMi
Pg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPg0K
KyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1
MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4
eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPg0KKyAgICA8L0ZpbHRl
cj4NCisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPg0KKyAgICAgIDxVbmlxdWVJ
ZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJ
ZGVudGlmaWVyPg0KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwv
RXh0ZW5zaW9ucz4NCisgICAgPC9GaWx0ZXI+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3Jv
dXA+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29uZmlnLmNwcCI+DQorICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cQ29tbW9uXGRlYnVnLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2Ug
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iRGlzcGxheS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQor
ICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImxpYkVHTC5jcHAiPg0K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im1haW4uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJj
ZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJTdXJmYWNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iQ29uZmlnLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IkRpc3BsYXkuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxFR0xc
ZWdsLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcRUdMXGVnbGV4
dC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEVHTFxlZ2xwbGF0
Zm9ybS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJtYWluLmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlc291cmNlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlN1cmZh
Y2UuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbElu
Y2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXHZlcnNpb24uaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5j
bHVkZT0ibGliRUdMLnJjIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAg
ICA8Tm9uZSBJbmNsdWRlPSJsaWJFR0wuZGVmIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorPC9Qcm9q
ZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJFR0wvbWFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkVHTC9tYWluLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbWFpbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTY2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBtYWluLmNwcDogRExMIGVudHJ5IHBvaW50
IGFuZCBtYW5hZ2VtZW50IG9mIHRocmVhZC1sb2NhbCBkYXRhLgorCisjaW5jbHVkZSAibGliRUdM
L21haW4uaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCitzdGF0aWMgRFdPUkQgY3Vy
cmVudFRMUyA9IFRMU19PVVRfT0ZfSU5ERVhFUzsKKworZXh0ZXJuICJDIiBCT09MIFdJTkFQSSBE
bGxNYWluKEhJTlNUQU5DRSBpbnN0YW5jZSwgRFdPUkQgcmVhc29uLCBMUFZPSUQgcmVzZXJ2ZWQp
Cit7CisgICAgc3dpdGNoIChyZWFzb24pCisgICAgeworICAgICAgY2FzZSBETExfUFJPQ0VTU19B
VFRBQ0g6CisgICAgICAgIHsKKyNpZiAhZGVmaW5lZChBTkdMRV9ESVNBQkxFX1RSQUNFKQorICAg
ICAgICAgICAgRklMRSAqZGVidWcgPSBmb3BlbihUUkFDRV9PVVRQVVRfRklMRSwgInJ0Iik7CisK
KyAgICAgICAgICAgIGlmIChkZWJ1ZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBm
Y2xvc2UoZGVidWcpOworICAgICAgICAgICAgICAgIGRlYnVnID0gZm9wZW4oVFJBQ0VfT1VUUFVU
X0ZJTEUsICJ3dCIpOyAgIC8vIEVyYXNlCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgaWYgKGRlYnVnKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZmNs
b3NlKGRlYnVnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisjZW5kaWYKKwor
ICAgICAgICAgICAgY3VycmVudFRMUyA9IFRsc0FsbG9jKCk7CisKKyAgICAgICAgICAgIGlmIChj
dXJyZW50VExTID09IFRMU19PVVRfT0ZfSU5ERVhFUykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Ly8gRmFsbCB0aHJvdWdodCB0byBpbml0aWFsaXplIGluZGV4CisgICAgICBjYXNlIERMTF9USFJF
QURfQVRUQUNIOgorICAgICAgICB7CisgICAgICAgICAgICBlZ2w6OkN1cnJlbnQgKmN1cnJlbnQg
PSAoZWdsOjpDdXJyZW50KilMb2NhbEFsbG9jKExQVFIsIHNpemVvZihlZ2w6OkN1cnJlbnQpKTsK
KworICAgICAgICAgICAgaWYgKGN1cnJlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgVGxzU2V0VmFsdWUoY3VycmVudFRMUywgY3VycmVudCk7CisKKyAgICAgICAgICAgICAgICBj
dXJyZW50LT5lcnJvciA9IEVHTF9TVUNDRVNTOworICAgICAgICAgICAgICAgIGN1cnJlbnQtPkFQ
SSA9IEVHTF9PUEVOR0xfRVNfQVBJOworICAgICAgICAgICAgICAgIGN1cnJlbnQtPmRpc3BsYXkg
PSBFR0xfTk9fRElTUExBWTsKKyAgICAgICAgICAgICAgICBjdXJyZW50LT5kcmF3U3VyZmFjZSA9
IEVHTF9OT19TVVJGQUNFOworICAgICAgICAgICAgICAgIGN1cnJlbnQtPnJlYWRTdXJmYWNlID0g
RUdMX05PX1NVUkZBQ0U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIERMTF9USFJFQURfREVUQUNIOgorICAgICAgICB7CisgICAgICAgICAgICB2
b2lkICpjdXJyZW50ID0gVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7CisKKyAgICAgICAgICAgIGlm
IChjdXJyZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIExvY2FsRnJlZSgoSExP
Q0FMKWN1cnJlbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBETExfUFJPQ0VTU19ERVRBQ0g6CisgICAgICAgIHsKKyAgICAgICAgICAgIHZv
aWQgKmN1cnJlbnQgPSBUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKKworICAgICAgICAgICAgaWYg
KGN1cnJlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTG9jYWxGcmVlKChITE9D
QUwpY3VycmVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFRsc0ZyZWUoY3VycmVu
dFRMUyk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworbmFtZXNwYWNlIGVnbAor
ewordm9pZCBzZXRDdXJyZW50RXJyb3IoRUdMaW50IGVycm9yKQoreworICAgIEN1cnJlbnQgKmN1
cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7CisKKyAgICBjdXJyZW50
LT5lcnJvciA9IGVycm9yOworfQorCitFR0xpbnQgZ2V0Q3VycmVudEVycm9yKCkKK3sKKyAgICBD
dXJyZW50ICpjdXJyZW50ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisg
ICAgcmV0dXJuIGN1cnJlbnQtPmVycm9yOworfQorCit2b2lkIHNldEN1cnJlbnRBUEkoRUdMZW51
bSBBUEkpCit7CisgICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1ZShj
dXJyZW50VExTKTsKKworICAgIGN1cnJlbnQtPkFQSSA9IEFQSTsKK30KKworRUdMZW51bSBnZXRD
dXJyZW50QVBJKCkKK3sKKyAgICBDdXJyZW50ICpjdXJyZW50ID0gKEN1cnJlbnQqKVRsc0dldFZh
bHVlKGN1cnJlbnRUTFMpOworCisgICAgcmV0dXJuIGN1cnJlbnQtPkFQSTsKK30KKwordm9pZCBz
ZXRDdXJyZW50RGlzcGxheShFR0xEaXNwbGF5IGRweSkKK3sKKyAgICBDdXJyZW50ICpjdXJyZW50
ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgY3VycmVudC0+ZGlz
cGxheSA9IGRweTsKK30KKworRUdMRGlzcGxheSBnZXRDdXJyZW50RGlzcGxheSgpCit7CisgICAg
Q3VycmVudCAqY3VycmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKKwor
ICAgIHJldHVybiBjdXJyZW50LT5kaXNwbGF5OworfQorCit2b2lkIHNldEN1cnJlbnREcmF3U3Vy
ZmFjZShFR0xTdXJmYWNlIHN1cmZhY2UpCit7CisgICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJy
ZW50KilUbHNHZXRWYWx1ZShjdXJyZW50VExTKTsKKworICAgIGN1cnJlbnQtPmRyYXdTdXJmYWNl
ID0gc3VyZmFjZTsKK30KKworRUdMU3VyZmFjZSBnZXRDdXJyZW50RHJhd1N1cmZhY2UoKQorewor
ICAgIEN1cnJlbnQgKmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7
CisKKyAgICByZXR1cm4gY3VycmVudC0+ZHJhd1N1cmZhY2U7Cit9CisKK3ZvaWQgc2V0Q3VycmVu
dFJlYWRTdXJmYWNlKEVHTFN1cmZhY2Ugc3VyZmFjZSkKK3sKKyAgICBDdXJyZW50ICpjdXJyZW50
ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgY3VycmVudC0+cmVh
ZFN1cmZhY2UgPSBzdXJmYWNlOworfQorCitFR0xTdXJmYWNlIGdldEN1cnJlbnRSZWFkU3VyZmFj
ZSgpCit7CisgICAgQ3VycmVudCAqY3VycmVudCA9IChDdXJyZW50KilUbHNHZXRWYWx1ZShjdXJy
ZW50VExTKTsKKworICAgIHJldHVybiBjdXJyZW50LT5yZWFkU3VyZmFjZTsKK30KKwordm9pZCBl
cnJvcihFR0xpbnQgZXJyb3JDb2RlKQoreworICAgIGVnbDo6c2V0Q3VycmVudEVycm9yKGVycm9y
Q29kZSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wv
bWFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wv
bWFpbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVH
TC9tYWluLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKy8vIG1haW4uaDogTWFuYWdlbWVudCBvZiB0aHJlYWQtbG9jYWwgZGF0YS4KKworI2lmbmRl
ZiBMSUJFR0xfTUFJTl9IXworI2RlZmluZSBMSUJFR0xfTUFJTl9IXworCisjZGVmaW5lIEVHTEFQ
SQorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisKK25hbWVz
cGFjZSBlZ2wKK3sKK3N0cnVjdCBDdXJyZW50Cit7CisgICAgRUdMaW50IGVycm9yOworICAgIEVH
TGVudW0gQVBJOworICAgIEVHTERpc3BsYXkgZGlzcGxheTsKKyAgICBFR0xTdXJmYWNlIGRyYXdT
dXJmYWNlOworICAgIEVHTFN1cmZhY2UgcmVhZFN1cmZhY2U7Cit9OworCit2b2lkIHNldEN1cnJl
bnRFcnJvcihFR0xpbnQgZXJyb3IpOworRUdMaW50IGdldEN1cnJlbnRFcnJvcigpOworCit2b2lk
IHNldEN1cnJlbnRBUEkoRUdMZW51bSBBUEkpOworRUdMZW51bSBnZXRDdXJyZW50QVBJKCk7CisK
K3ZvaWQgc2V0Q3VycmVudERpc3BsYXkoRUdMRGlzcGxheSBkcHkpOworRUdMRGlzcGxheSBnZXRD
dXJyZW50RGlzcGxheSgpOworCit2b2lkIHNldEN1cnJlbnREcmF3U3VyZmFjZShFR0xTdXJmYWNl
IHN1cmZhY2UpOworRUdMU3VyZmFjZSBnZXRDdXJyZW50RHJhd1N1cmZhY2UoKTsKKwordm9pZCBz
ZXRDdXJyZW50UmVhZFN1cmZhY2UoRUdMU3VyZmFjZSBzdXJmYWNlKTsKK0VHTFN1cmZhY2UgZ2V0
Q3VycmVudFJlYWRTdXJmYWNlKCk7CisKK3ZvaWQgZXJyb3IoRUdMaW50IGVycm9yQ29kZSk7CisK
K3RlbXBsYXRlPGNsYXNzIFQ+Citjb25zdCBUICZlcnJvcihFR0xpbnQgZXJyb3JDb2RlLCBjb25z
dCBUICZyZXR1cm5WYWx1ZSkKK3sKKyAgICBlcnJvcihlcnJvckNvZGUpOworCisgICAgcmV0dXJu
IHJldHVyblZhbHVlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBUPgorY29uc3QgVCAmc3VjY2Vzcyhj
b25zdCBUICZyZXR1cm5WYWx1ZSkKK3sKKyAgICBlZ2w6OnNldEN1cnJlbnRFcnJvcihFR0xfU1VD
Q0VTUyk7CisKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK30KKworI2VuZGlmICAvLyBM
SUJFR0xfTUFJTl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9y
ZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJF
R0wvcmVzb3VyY2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJFR0wvcmVzb3VyY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorLy97e05P
X0RFUEVOREVOQ0lFU319CisvLyBNaWNyb3NvZnQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgaW5jbHVk
ZSBmaWxlLgorLy8gVXNlZCBieSBsaWJFR0wucmMKKworLy8gTmV4dCBkZWZhdWx0IHZhbHVlcyBm
b3IgbmV3IG9iamVjdHMKKy8vIAorI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQKKyNpZm5kZWYgQVBT
VFVESU9fUkVBRE9OTFlfU1lNQk9MUworI2RlZmluZSBfQVBTX05FWFRfUkVTT1VSQ0VfVkFMVUUg
ICAgICAgIDEwMQorI2RlZmluZSBfQVBTX05FWFRfQ09NTUFORF9WQUxVRSAgICAgICAgIDQwMDAx
CisjZGVmaW5lIF9BUFNfTkVYVF9DT05UUk9MX1ZBTFVFICAgICAgICAgMTAwMQorI2RlZmluZSBf
QVBTX05FWFRfU1lNRURfVkFMVUUgICAgICAgICAgIDEwMQorI2VuZGlmCisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQmluYXJ5U3RyZWFtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9CaW5hcnlT
dHJlYW0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvQmluYXJ5U3RyZWFtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTY0IEBACisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gQmluYXJ5U3RyZWFtLmg6IFByb3ZpZGVzIGJpbmFyeSBzZXJpYWxpemF0
aW9uIG9mIHNpbXBsZSB0eXBlcy4KKworI2lmbmRlZiBMSUJHTEVTVjJfQklOQVJZU1RSRUFNX0hf
CisjZGVmaW5lIExJQkdMRVNWMl9CSU5BUllTVFJFQU1fSF8KKworI2luY2x1ZGUgImNvbW1vbi9h
bmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSBnbAoreworCitjbGFzcyBCaW5hcnlJbnB1dFN0cmVh
bQoreworICBwdWJsaWM6CisgICAgQmluYXJ5SW5wdXRTdHJlYW0oY29uc3Qgdm9pZCAqZGF0YSwg
c2l6ZV90IGxlbmd0aCkKKyAgICB7CisgICAgICAgIG1FcnJvciA9IGZhbHNlOworICAgICAgICBt
T2Zmc2V0ID0gMDsKKyAgICAgICAgbURhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSk7CisgICAgICAgIG1MZW5ndGggPSBsZW5ndGg7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CisgICAgdm9pZCByZWFkKFQgKnYsIHNpemVfdCBudW0pCisgICAgeworICAgICAg
ICB1bmlvbgorICAgICAgICB7CisgICAgICAgICAgICBUIGR1bW15OyAgLy8gQ29tcGlsYXRpb24g
ZXJyb3IgZm9yIG5vbi10cml2aWFsIHR5cGVzCisgICAgICAgIH0gZHVtbXk7CisgICAgICAgICh2
b2lkKSBkdW1teTsKKworICAgICAgICBpZiAobUVycm9yKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgbGVuZ3RoID0gbnVtICogc2l6
ZW9mKFQpOworCisgICAgICAgIGlmIChtT2Zmc2V0ICsgbGVuZ3RoID4gbUxlbmd0aCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbUVycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIG1lbWNweSh2LCBtRGF0YSArIG1PZmZzZXQsIGxlbmd0aCk7Cisg
ICAgICAgIG1PZmZzZXQgKz0gbGVuZ3RoOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICAgIHZvaWQgcmVhZChUICogdikKKyAgICB7CisgICAgICAgIHJlYWQodiwgMSk7Cisg
ICAgfQorCisgICAgdm9pZCByZWFkKHN0ZDo6c3RyaW5nICp2KQorICAgIHsKKyAgICAgICAgc2l6
ZV90IGxlbmd0aDsKKyAgICAgICAgcmVhZCgmbGVuZ3RoKTsKKworICAgICAgICBpZiAobUVycm9y
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBp
ZiAobU9mZnNldCArIGxlbmd0aCA+IG1MZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1F
cnJvciA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2
LT5hc3NpZ24obURhdGEgKyBtT2Zmc2V0LCBsZW5ndGgpOworICAgICAgICBtT2Zmc2V0ICs9IGxl
bmd0aDsKKyAgICB9CisKKyAgICB2b2lkIHNraXAoc2l6ZV90IGxlbmd0aCkKKyAgICB7CisgICAg
ICAgIGlmIChtT2Zmc2V0ICsgbGVuZ3RoID4gbUxlbmd0aCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbUVycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIG1PZmZzZXQgKz0gbGVuZ3RoOworICAgIH0KKworICAgIHNpemVfdCBvZmZzZXQoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1PZmZzZXQ7CisgICAgfQorCisgICAgYm9vbCBlcnJv
cigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbUVycm9yOworICAgIH0KKworICAgIGJv
b2wgZW5kT2ZTdHJlYW0oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1PZmZzZXQgPT0g
bUxlbmd0aDsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oQmluYXJ5SW5wdXRTdHJlYW0pOworICAgIGJvb2wgbUVycm9yOworICAgIHNpemVfdCBtT2Zm
c2V0OworICAgIGNvbnN0IGNoYXIgKm1EYXRhOworICAgIHNpemVfdCBtTGVuZ3RoOworfTsKKwor
Y2xhc3MgQmluYXJ5T3V0cHV0U3RyZWFtCit7CisgIHB1YmxpYzoKKyAgICBCaW5hcnlPdXRwdXRT
dHJlYW0oKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2
b2lkIHdyaXRlKGNvbnN0IFQgKnYsIHNpemVfdCBudW0pCisgICAgeworICAgICAgICB1bmlvbgor
ICAgICAgICB7CisgICAgICAgICAgICBUIGR1bW15OyAgLy8gQ29tcGlsYXRpb24gZXJyb3IgZm9y
IG5vbi10cml2aWFsIHR5cGVzCisgICAgICAgIH0gZHVtbXk7CisgICAgICAgICh2b2lkKSBkdW1t
eTsKKworICAgICAgICBjb25zdCBjaGFyICphc0J5dGVzID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4odik7CisgICAgICAgIG1EYXRhLmluc2VydChtRGF0YS5lbmQoKSwgYXNCeXRlcywg
YXNCeXRlcyArIG51bSAqIHNpemVvZihUKSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisgICAgdm9pZCB3cml0ZShjb25zdCBUICZ2KQorICAgIHsKKyAgICAgICAgd3JpdGUo
JnYsIDEpOworICAgIH0KKworICAgIHZvaWQgd3JpdGUoY29uc3Qgc3RkOjpzdHJpbmcgJnYpCisg
ICAgeworICAgICAgICBzaXplX3QgbGVuZ3RoID0gdi5sZW5ndGgoKTsKKyAgICAgICAgd3JpdGUo
bGVuZ3RoKTsKKworICAgICAgICB3cml0ZSh2LmNfc3RyKCksIGxlbmd0aCk7CisgICAgfQorCisg
ICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbURhdGEuc2l6
ZSgpOworICAgIH0KKworICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1EYXRhLnNpemUoKSA/ICZtRGF0YVswXSA6IE5VTEw7CisgICAgfQorCisgIHBy
aXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEJpbmFyeU91dHB1dFN0cmVhbSk7
CisgICAgc3RkOjp2ZWN0b3I8Y2hhcj4gbURhdGE7Cit9OworfQorCisjZW5kaWYgIC8vIExJQkdM
RVNWMl9CSU5BUllTVFJFQU1fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL0J1ZmZlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0J1ZmZlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTE5IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIEJ1ZmZlci5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpCdWZmZXIgY2xhc3MsIHJlcHJlc2Vu
dGluZyBzdG9yYWdlIG9mIHZlcnRleCBhbmQvb3IKKy8vIGluZGV4IGRhdGEuIEltcGxlbWVudHMg
R0wgYnVmZmVyIG9iamVjdHMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4KKy8vIFtPcGVuR0wg
RVMgMi4wLjI0XSBzZWN0aW9uIDIuOSBwYWdlIDIxLgorCisjaW5jbHVkZSAibGliR0xFU3YyL0J1
ZmZlci5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlci5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3Jl
bmRlcmVyL1JlbmRlcmVyLmgiCisKK25hbWVzcGFjZSBnbAoreworCitCdWZmZXI6OkJ1ZmZlcihy
eDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHVpbnQgaWQpIDogUmVmQ291bnRPYmplY3QoaWQpCit7
CisgICAgbVJlbmRlcmVyID0gcmVuZGVyZXI7CisgICAgbVVzYWdlID0gR0xfRFlOQU1JQ19EUkFX
OworCisgICAgbUJ1ZmZlclN0b3JhZ2UgPSByZW5kZXJlci0+Y3JlYXRlQnVmZmVyU3RvcmFnZSgp
OworICAgIG1TdGF0aWNWZXJ0ZXhCdWZmZXIgPSBOVUxMOworICAgIG1TdGF0aWNJbmRleEJ1ZmZl
ciA9IE5VTEw7CisgICAgbVVubW9kaWZpZWREYXRhVXNlID0gMDsKK30KKworQnVmZmVyOjp+QnVm
ZmVyKCkKK3sKKyAgICBkZWxldGUgbUJ1ZmZlclN0b3JhZ2U7CisgICAgZGVsZXRlIG1TdGF0aWNW
ZXJ0ZXhCdWZmZXI7CisgICAgZGVsZXRlIG1TdGF0aWNJbmRleEJ1ZmZlcjsKK30KKwordm9pZCBC
dWZmZXI6OmJ1ZmZlckRhdGEoY29uc3Qgdm9pZCAqZGF0YSwgR0xzaXplaXB0ciBzaXplLCBHTGVu
dW0gdXNhZ2UpCit7CisgICAgbUJ1ZmZlclN0b3JhZ2UtPmNsZWFyKCk7CisgICAgbUJ1ZmZlclN0
b3JhZ2UtPnNldERhdGEoZGF0YSwgc2l6ZSwgMCk7CisKKyAgICBtVXNhZ2UgPSB1c2FnZTsKKwor
ICAgIGludmFsaWRhdGVTdGF0aWNEYXRhKCk7CisKKyAgICBpZiAodXNhZ2UgPT0gR0xfU1RBVElD
X0RSQVcpCisgICAgeworICAgICAgICBtU3RhdGljVmVydGV4QnVmZmVyID0gbmV3IHJ4OjpTdGF0
aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UobVJlbmRlcmVyKTsKKyAgICAgICAgbVN0YXRpY0luZGV4
QnVmZmVyID0gbmV3IHJ4OjpTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZShtUmVuZGVyZXIpOwor
ICAgIH0KK30KKwordm9pZCBCdWZmZXI6OmJ1ZmZlclN1YkRhdGEoY29uc3Qgdm9pZCAqZGF0YSwg
R0xzaXplaXB0ciBzaXplLCBHTGludHB0ciBvZmZzZXQpCit7CisgICAgbUJ1ZmZlclN0b3JhZ2Ut
PnNldERhdGEoZGF0YSwgc2l6ZSwgb2Zmc2V0KTsKKworICAgIGlmICgobVN0YXRpY1ZlcnRleEJ1
ZmZlciAmJiBtU3RhdGljVmVydGV4QnVmZmVyLT5nZXRCdWZmZXJTaXplKCkgIT0gMCkgfHwgKG1T
dGF0aWNJbmRleEJ1ZmZlciAmJiBtU3RhdGljSW5kZXhCdWZmZXItPmdldEJ1ZmZlclNpemUoKSAh
PSAwKSkKKyAgICB7CisgICAgICAgIGludmFsaWRhdGVTdGF0aWNEYXRhKCk7CisgICAgfQorCisg
ICAgbVVubW9kaWZpZWREYXRhVXNlID0gMDsKK30KKworcng6OkJ1ZmZlclN0b3JhZ2UgKkJ1ZmZl
cjo6Z2V0U3RvcmFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1CdWZmZXJTdG9yYWdlOworfQor
Cit1bnNpZ25lZCBpbnQgQnVmZmVyOjpzaXplKCkKK3sKKyAgICByZXR1cm4gbUJ1ZmZlclN0b3Jh
Z2UtPmdldFNpemUoKTsKK30KKworR0xlbnVtIEJ1ZmZlcjo6dXNhZ2UoKSBjb25zdAoreworICAg
IHJldHVybiBtVXNhZ2U7Cit9CisKK3J4OjpTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKkJ1
ZmZlcjo6Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbVN0YXRpY1ZlcnRl
eEJ1ZmZlcjsKK30KKworcng6OlN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlICpCdWZmZXI6Omdl
dFN0YXRpY0luZGV4QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbVN0YXRpY0luZGV4QnVmZmVyOwor
fQorCit2b2lkIEJ1ZmZlcjo6aW52YWxpZGF0ZVN0YXRpY0RhdGEoKQoreworICAgIGRlbGV0ZSBt
U3RhdGljVmVydGV4QnVmZmVyOworICAgIG1TdGF0aWNWZXJ0ZXhCdWZmZXIgPSBOVUxMOworCisg
ICAgZGVsZXRlIG1TdGF0aWNJbmRleEJ1ZmZlcjsKKyAgICBtU3RhdGljSW5kZXhCdWZmZXIgPSBO
VUxMOworCisgICAgbVVubW9kaWZpZWREYXRhVXNlID0gMDsKK30KKworLy8gQ3JlYXRlcyBzdGF0
aWMgYnVmZmVycyBpZiBzdWZmaWNpZW50IHVzZWQgZGF0YSBoYXMgYmVlbiBsZWZ0IHVubW9kaWZp
ZWQKK3ZvaWQgQnVmZmVyOjpwcm9tb3RlU3RhdGljVXNhZ2UoaW50IGRhdGFTaXplKQoreworICAg
IGlmICghbVN0YXRpY1ZlcnRleEJ1ZmZlciAmJiAhbVN0YXRpY0luZGV4QnVmZmVyKQorICAgIHsK
KyAgICAgICAgbVVubW9kaWZpZWREYXRhVXNlICs9IGRhdGFTaXplOworCisgICAgICAgIGlmICht
VW5tb2RpZmllZERhdGFVc2UgPiAzICogbUJ1ZmZlclN0b3JhZ2UtPmdldFNpemUoKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgbVN0YXRpY1ZlcnRleEJ1ZmZlciA9IG5ldyByeDo6U3RhdGljVmVy
dGV4QnVmZmVySW50ZXJmYWNlKG1SZW5kZXJlcik7CisgICAgICAgICAgICBtU3RhdGljSW5kZXhC
dWZmZXIgPSBuZXcgcng6OlN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlKG1SZW5kZXJlcik7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9CdWZmZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQnVmZmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJ1ZmZlci5oOiBEZWZpbmVzIHRoZSBnbDo6
QnVmZmVyIGNsYXNzLCByZXByZXNlbnRpbmcgc3RvcmFnZSBvZiB2ZXJ0ZXggYW5kL29yCisvLyBp
bmRleCBkYXRhLiBJbXBsZW1lbnRzIEdMIGJ1ZmZlciBvYmplY3RzIGFuZCByZWxhdGVkIGZ1bmN0
aW9uYWxpdHkuCisvLyBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAyLjkgcGFnZSAyMS4KKwor
I2lmbmRlZiBMSUJHTEVTVjJfQlVGRkVSX0hfCisjZGVmaW5lIExJQkdMRVNWMl9CVUZGRVJfSF8K
KworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL1JlZkNv
dW50T2JqZWN0LmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBC
dWZmZXJTdG9yYWdlOworY2xhc3MgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U7CitjbGFzcyBT
dGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U7Cit9OworCituYW1lc3BhY2UgZ2wKK3sKKworY2xh
c3MgQnVmZmVyIDogcHVibGljIFJlZkNvdW50T2JqZWN0Cit7CisgIHB1YmxpYzoKKyAgICBCdWZm
ZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGlkKTsKKworICAgIHZpcnR1YWwgfkJ1
ZmZlcigpOworCisgICAgdm9pZCBidWZmZXJEYXRhKGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlw
dHIgc2l6ZSwgR0xlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoY29uc3Qgdm9p
ZCAqZGF0YSwgR0xzaXplaXB0ciBzaXplLCBHTGludHB0ciBvZmZzZXQpOworCisgICAgR0xlbnVt
IHVzYWdlKCkgY29uc3Q7CisKKyAgICByeDo6QnVmZmVyU3RvcmFnZSAqZ2V0U3RvcmFnZSgpIGNv
bnN0OworICAgIHVuc2lnbmVkIGludCBzaXplKCk7CisKKyAgICByeDo6U3RhdGljVmVydGV4QnVm
ZmVySW50ZXJmYWNlICpnZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoKTsKKyAgICByeDo6U3RhdGljSW5k
ZXhCdWZmZXJJbnRlcmZhY2UgKmdldFN0YXRpY0luZGV4QnVmZmVyKCk7CisgICAgdm9pZCBpbnZh
bGlkYXRlU3RhdGljRGF0YSgpOworICAgIHZvaWQgcHJvbW90ZVN0YXRpY1VzYWdlKGludCBkYXRh
U2l6ZSk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oQnVmZmVy
KTsKKworICAgIHJ4OjpSZW5kZXJlciAqbVJlbmRlcmVyOworICAgIEdMZW51bSBtVXNhZ2U7CisK
KyAgICByeDo6QnVmZmVyU3RvcmFnZSAqbUJ1ZmZlclN0b3JhZ2U7CisKKyAgICByeDo6U3RhdGlj
VmVydGV4QnVmZmVySW50ZXJmYWNlICptU3RhdGljVmVydGV4QnVmZmVyOworICAgIHJ4OjpTdGF0
aWNJbmRleEJ1ZmZlckludGVyZmFjZSAqbVN0YXRpY0luZGV4QnVmZmVyOworICAgIHVuc2lnbmVk
IGludCBtVW5tb2RpZmllZERhdGFVc2U7Cit9OworCit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNW
Ml9CVUZGRVJfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9Db250ZXh0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvQ29udGV4dC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjk3
MiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBD
b250ZXh0LmNwcDogSW1wbGVtZW50cyB0aGUgZ2w6OkNvbnRleHQgY2xhc3MsIG1hbmFnaW5nIGFs
bCBHTCBzdGF0ZSBhbmQgcGVyZm9ybWluZworLy8gcmVuZGVyaW5nIG9wZXJhdGlvbnMuIEl0IGlz
IHRoZSBHTEVTMiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiBFR0xDb250ZXh0LgorCisjaW5j
bHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9C
dWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvRmVuY2UuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW0uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3Jh
bUJpbmFyeS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9RdWVyeS5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi9UZXh0dXJlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1Jlc291cmNlTWFuYWdlci5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldC5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9SZW5kZXJlci5oIgorCisjaW5jbHVkZSAibGliRUdML1N1cmZhY2UuaCIKKwor
I3VuZGVmIG5lYXIKKyN1bmRlZiBmYXIKKworbmFtZXNwYWNlIGdsCit7CitzdGF0aWMgY29uc3Qg
Y2hhciogbWFrZVN0YXRpY1N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKQoreworICAgIHN0
YXRpYyBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gc3RyaW5nczsKKyAgICBzdGQ6OnNldDxzdGQ6OnN0
cmluZz46Oml0ZXJhdG9yIGl0ID0gc3RyaW5ncy5maW5kKHN0cik7CisgICAgaWYgKGl0ICE9IHN0
cmluZ3MuZW5kKCkpCisgICAgICByZXR1cm4gaXQtPmNfc3RyKCk7CisKKyAgICByZXR1cm4gc3Ry
aW5ncy5pbnNlcnQoc3RyKS5maXJzdC0+Y19zdHIoKTsKK30KKworQ29udGV4dDo6Q29udGV4dChj
b25zdCBnbDo6Q29udGV4dCAqc2hhcmVDb250ZXh0LCByeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBi
b29sIG5vdGlmeVJlc2V0cywgYm9vbCByb2J1c3RBY2Nlc3MpIDogbVJlbmRlcmVyKHJlbmRlcmVy
KQoreworICAgIEFTU0VSVChyb2J1c3RBY2Nlc3MgPT0gZmFsc2UpOyAgIC8vIFVuaW1wbGVtZW50
ZWQKKworICAgIG1GZW5jZUhhbmRsZUFsbG9jYXRvci5zZXRCYXNlSGFuZGxlKDApOworCisgICAg
c2V0Q2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKKworICAgIG1TdGF0ZS5kZXB0
aENsZWFyVmFsdWUgPSAxLjBmOworICAgIG1TdGF0ZS5zdGVuY2lsQ2xlYXJWYWx1ZSA9IDA7CisK
KyAgICBtU3RhdGUucmFzdGVyaXplci5jdWxsRmFjZSA9IGZhbHNlOworICAgIG1TdGF0ZS5yYXN0
ZXJpemVyLmN1bGxNb2RlID0gR0xfQkFDSzsKKyAgICBtU3RhdGUucmFzdGVyaXplci5mcm9udEZh
Y2UgPSBHTF9DQ1c7CisgICAgbVN0YXRlLnJhc3Rlcml6ZXIucG9seWdvbk9mZnNldEZpbGwgPSBm
YWxzZTsKKyAgICBtU3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0RmFjdG9yID0gMC4wZjsK
KyAgICBtU3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0VW5pdHMgPSAwLjBmOworICAgIG1T
dGF0ZS5yYXN0ZXJpemVyLnBvaW50RHJhd01vZGUgPSBmYWxzZTsKKyAgICBtU3RhdGUucmFzdGVy
aXplci5tdWx0aVNhbXBsZSA9IGZhbHNlOworICAgIG1TdGF0ZS5zY2lzc29yVGVzdCA9IGZhbHNl
OworICAgIG1TdGF0ZS5zY2lzc29yLnggPSAwOworICAgIG1TdGF0ZS5zY2lzc29yLnkgPSAwOwor
ICAgIG1TdGF0ZS5zY2lzc29yLndpZHRoID0gMDsKKyAgICBtU3RhdGUuc2Npc3Nvci5oZWlnaHQg
PSAwOworCisgICAgbVN0YXRlLmJsZW5kLmJsZW5kID0gZmFsc2U7CisgICAgbVN0YXRlLmJsZW5k
LnNvdXJjZUJsZW5kUkdCID0gR0xfT05FOworICAgIG1TdGF0ZS5ibGVuZC5zb3VyY2VCbGVuZEFs
cGhhID0gR0xfT05FOworICAgIG1TdGF0ZS5ibGVuZC5kZXN0QmxlbmRSR0IgPSBHTF9aRVJPOwor
ICAgIG1TdGF0ZS5ibGVuZC5kZXN0QmxlbmRBbHBoYSA9IEdMX1pFUk87CisgICAgbVN0YXRlLmJs
ZW5kLmJsZW5kRXF1YXRpb25SR0IgPSBHTF9GVU5DX0FERDsKKyAgICBtU3RhdGUuYmxlbmQuYmxl
bmRFcXVhdGlvbkFscGhhID0gR0xfRlVOQ19BREQ7CisgICAgbVN0YXRlLmJsZW5kLnNhbXBsZUFs
cGhhVG9Db3ZlcmFnZSA9IGZhbHNlOworICAgIG1TdGF0ZS5ibGVuZC5kaXRoZXIgPSB0cnVlOwor
CisgICAgbVN0YXRlLmJsZW5kQ29sb3IucmVkID0gMDsKKyAgICBtU3RhdGUuYmxlbmRDb2xvci5n
cmVlbiA9IDA7CisgICAgbVN0YXRlLmJsZW5kQ29sb3IuYmx1ZSA9IDA7CisgICAgbVN0YXRlLmJs
ZW5kQ29sb3IuYWxwaGEgPSAwOworCisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5kZXB0aFRlc3Qg
PSBmYWxzZTsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLmRlcHRoRnVuYyA9IEdMX0xFU1M7Cisg
ICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5kZXB0aE1hc2sgPSB0cnVlOworICAgIG1TdGF0ZS5kZXB0
aFN0ZW5jaWwuc3RlbmNpbFRlc3QgPSBmYWxzZTsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0
ZW5jaWxGdW5jID0gR0xfQUxXQVlTOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbE1h
c2sgPSAtMTsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxXcml0ZW1hc2sgPSAtMTsK
KyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxCYWNrRnVuYyA9IEdMX0FMV0FZUzsKKyAg
ICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxCYWNrTWFzayA9IC0gMTsKKyAgICBtU3RhdGUu
ZGVwdGhTdGVuY2lsLnN0ZW5jaWxCYWNrV3JpdGVtYXNrID0gLTE7CisgICAgbVN0YXRlLmRlcHRo
U3RlbmNpbC5zdGVuY2lsRmFpbCA9IEdMX0tFRVA7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5z
dGVuY2lsUGFzc0RlcHRoRmFpbCA9IEdMX0tFRVA7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5z
dGVuY2lsUGFzc0RlcHRoUGFzcyA9IEdMX0tFRVA7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5z
dGVuY2lsQmFja0ZhaWwgPSBHTF9LRUVQOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNp
bEJhY2tQYXNzRGVwdGhGYWlsID0gR0xfS0VFUDsKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0
ZW5jaWxCYWNrUGFzc0RlcHRoUGFzcyA9IEdMX0tFRVA7CisKKyAgICBtU3RhdGUuc3RlbmNpbFJl
ZiA9IDA7CisgICAgbVN0YXRlLnN0ZW5jaWxCYWNrUmVmID0gMDsKKworICAgIG1TdGF0ZS5zYW1w
bGVDb3ZlcmFnZSA9IGZhbHNlOworICAgIG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZVZhbHVlID0gMS4w
ZjsKKyAgICBtU3RhdGUuc2FtcGxlQ292ZXJhZ2VJbnZlcnQgPSBmYWxzZTsKKyAgICBtU3RhdGUu
Z2VuZXJhdGVNaXBtYXBIaW50ID0gR0xfRE9OVF9DQVJFOworICAgIG1TdGF0ZS5mcmFnbWVudFNo
YWRlckRlcml2YXRpdmVIaW50ID0gR0xfRE9OVF9DQVJFOworCisgICAgbVN0YXRlLmxpbmVXaWR0
aCA9IDEuMGY7CisKKyAgICBtU3RhdGUudmlld3BvcnQueCA9IDA7CisgICAgbVN0YXRlLnZpZXdw
b3J0LnkgPSAwOworICAgIG1TdGF0ZS52aWV3cG9ydC53aWR0aCA9IDA7CisgICAgbVN0YXRlLnZp
ZXdwb3J0LmhlaWdodCA9IDA7CisgICAgbVN0YXRlLnpOZWFyID0gMC4wZjsKKyAgICBtU3RhdGUu
ekZhciA9IDEuMGY7CisKKyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrUmVkID0gdHJ1ZTsKKyAg
ICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrR3JlZW4gPSB0cnVlOworICAgIG1TdGF0ZS5ibGVuZC5j
b2xvck1hc2tCbHVlID0gdHJ1ZTsKKyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQWxwaGEgPSB0
cnVlOworCisgICAgaWYgKHNoYXJlQ29udGV4dCAhPSBOVUxMKQorICAgIHsKKyAgICAgICAgbVJl
c291cmNlTWFuYWdlciA9IHNoYXJlQ29udGV4dC0+bVJlc291cmNlTWFuYWdlcjsKKyAgICAgICAg
bVJlc291cmNlTWFuYWdlci0+YWRkUmVmKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIG1SZXNvdXJjZU1hbmFnZXIgPSBuZXcgUmVzb3VyY2VNYW5hZ2VyKG1SZW5kZXJlcik7Cisg
ICAgfQorCisgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMy43IHBhZ2UgODM6Cisg
ICAgLy8gSW4gdGhlIGluaXRpYWwgc3RhdGUsIFRFWFRVUkVfMkQgYW5kIFRFWFRVUkVfQ1VCRV9N
QVAgaGF2ZSB0d29kaW1lbnNpb25hbAorICAgIC8vIGFuZCBjdWJlIG1hcCB0ZXh0dXJlIHN0YXRl
IHZlY3RvcnMgcmVzcGVjdGl2ZWx5IGFzc29jaWF0ZWQgd2l0aCB0aGVtLgorICAgIC8vIEluIG9y
ZGVyIHRoYXQgYWNjZXNzIHRvIHRoZXNlIGluaXRpYWwgdGV4dHVyZXMgbm90IGJlIGxvc3QsIHRo
ZXkgYXJlIHRyZWF0ZWQgYXMgdGV4dHVyZQorICAgIC8vIG9iamVjdHMgYWxsIG9mIHdob3NlIG5h
bWVzIGFyZSAwLgorCisgICAgbVRleHR1cmUyRFplcm8uc2V0KG5ldyBUZXh0dXJlMkQobVJlbmRl
cmVyLCAwKSk7CisgICAgbVRleHR1cmVDdWJlTWFwWmVyby5zZXQobmV3IFRleHR1cmVDdWJlTWFw
KG1SZW5kZXJlciwgMCkpOworCisgICAgbVN0YXRlLmFjdGl2ZVNhbXBsZXIgPSAwOworICAgIGJp
bmRBcnJheUJ1ZmZlcigwKTsKKyAgICBiaW5kRWxlbWVudEFycmF5QnVmZmVyKDApOworICAgIGJp
bmRUZXh0dXJlQ3ViZU1hcCgwKTsKKyAgICBiaW5kVGV4dHVyZTJEKDApOworICAgIGJpbmRSZWFk
RnJhbWVidWZmZXIoMCk7CisgICAgYmluZERyYXdGcmFtZWJ1ZmZlcigwKTsKKyAgICBiaW5kUmVu
ZGVyYnVmZmVyKDApOworCisgICAgbVN0YXRlLmN1cnJlbnRQcm9ncmFtID0gMDsKKyAgICBtQ3Vy
cmVudFByb2dyYW1CaW5hcnkuc2V0KE5VTEwpOworCisgICAgbVN0YXRlLnBhY2tBbGlnbm1lbnQg
PSA0OworICAgIG1TdGF0ZS51bnBhY2tBbGlnbm1lbnQgPSA0OworICAgIG1TdGF0ZS5wYWNrUmV2
ZXJzZVJvd09yZGVyID0gZmFsc2U7CisKKyAgICBtRXh0ZW5zaW9uU3RyaW5nID0gTlVMTDsKKyAg
ICBtUmVuZGVyZXJTdHJpbmcgPSBOVUxMOworCisgICAgbUludmFsaWRFbnVtID0gZmFsc2U7Cisg
ICAgbUludmFsaWRWYWx1ZSA9IGZhbHNlOworICAgIG1JbnZhbGlkT3BlcmF0aW9uID0gZmFsc2U7
CisgICAgbU91dE9mTWVtb3J5ID0gZmFsc2U7CisgICAgbUludmFsaWRGcmFtZWJ1ZmZlck9wZXJh
dGlvbiA9IGZhbHNlOworCisgICAgbUhhc0JlZW5DdXJyZW50ID0gZmFsc2U7CisgICAgbUNvbnRl
eHRMb3N0ID0gZmFsc2U7CisgICAgbVJlc2V0U3RhdHVzID0gR0xfTk9fRVJST1I7CisgICAgbVJl
c2V0U3RyYXRlZ3kgPSAobm90aWZ5UmVzZXRzID8gR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0VY
VCA6IEdMX05PX1JFU0VUX05PVElGSUNBVElPTl9FWFQpOworICAgIG1Sb2J1c3RBY2Nlc3MgPSBy
b2J1c3RBY2Nlc3M7CisKKyAgICBtU3VwcG9ydHNCR1JBVGV4dHVyZXMgPSBmYWxzZTsKKyAgICBt
U3VwcG9ydHNEWFQxVGV4dHVyZXMgPSBmYWxzZTsKKyAgICBtU3VwcG9ydHNEWFQzVGV4dHVyZXMg
PSBmYWxzZTsKKyAgICBtU3VwcG9ydHNEWFQ1VGV4dHVyZXMgPSBmYWxzZTsKKyAgICBtU3VwcG9y
dHNFdmVudFF1ZXJpZXMgPSBmYWxzZTsKKyAgICBtU3VwcG9ydHNPY2NsdXNpb25RdWVyaWVzID0g
ZmFsc2U7CisgICAgbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cyA9IDA7Cit9CisKK0NvbnRl
eHQ6On5Db250ZXh0KCkKK3sKKyAgICBpZiAobVN0YXRlLmN1cnJlbnRQcm9ncmFtICE9IDApCisg
ICAgeworICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gbVJlc291cmNlTWFuYWdlci0+
Z2V0UHJvZ3JhbShtU3RhdGUuY3VycmVudFByb2dyYW0pOworICAgICAgICBpZiAocHJvZ3JhbU9i
amVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgcHJvZ3JhbU9iamVjdC0+cmVsZWFzZSgpOwor
ICAgICAgICB9CisgICAgICAgIG1TdGF0ZS5jdXJyZW50UHJvZ3JhbSA9IDA7CisgICAgfQorICAg
IG1DdXJyZW50UHJvZ3JhbUJpbmFyeS5zZXQoTlVMTCk7CisKKyAgICB3aGlsZSAoIW1GcmFtZWJ1
ZmZlck1hcC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlRnJhbWVidWZmZXIobUZyYW1l
YnVmZmVyTWFwLmJlZ2luKCktPmZpcnN0KTsKKyAgICB9CisKKyAgICB3aGlsZSAoIW1GZW5jZU1h
cC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlRmVuY2UobUZlbmNlTWFwLmJlZ2luKCkt
PmZpcnN0KTsKKyAgICB9CisKKyAgICB3aGlsZSAoIW1RdWVyeU1hcC5lbXB0eSgpKQorICAgIHsK
KyAgICAgICAgZGVsZXRlUXVlcnkobVF1ZXJ5TWFwLmJlZ2luKCktPmZpcnN0KTsKKyAgICB9CisK
KyAgICBmb3IgKGludCB0eXBlID0gMDsgdHlwZSA8IFRFWFRVUkVfVFlQRV9DT1VOVDsgdHlwZSsr
KQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgc2FtcGxlciA9IDA7IHNhbXBsZXIgPCBJTVBMRU1F
TlRBVElPTl9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUzsgc2FtcGxlcisrKQorICAg
ICAgICB7CisgICAgICAgICAgICBtU3RhdGUuc2FtcGxlclRleHR1cmVbdHlwZV1bc2FtcGxlcl0u
c2V0KE5VTEwpOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChpbnQgdHlwZSA9IDA7IHR5
cGUgPCBURVhUVVJFX1RZUEVfQ09VTlQ7IHR5cGUrKykKKyAgICB7CisgICAgICAgIG1JbmNvbXBs
ZXRlVGV4dHVyZXNbdHlwZV0uc2V0KE5VTEwpOworICAgIH0KKworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBtU3RhdGUudmVy
dGV4QXR0cmlidXRlW2ldLm1Cb3VuZEJ1ZmZlci5zZXQoTlVMTCk7CisgICAgfQorCisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBRVUVSWV9UWVBFX0NPVU5UOyBpKyspCisgICAgeworICAgICAgICBt
U3RhdGUuYWN0aXZlUXVlcnlbaV0uc2V0KE5VTEwpOworICAgIH0KKworICAgIG1TdGF0ZS5hcnJh
eUJ1ZmZlci5zZXQoTlVMTCk7CisgICAgbVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZlci5zZXQoTlVM
TCk7CisgICAgbVN0YXRlLnJlbmRlcmJ1ZmZlci5zZXQoTlVMTCk7CisKKyAgICBtVGV4dHVyZTJE
WmVyby5zZXQoTlVMTCk7CisgICAgbVRleHR1cmVDdWJlTWFwWmVyby5zZXQoTlVMTCk7CisKKyAg
ICBtUmVzb3VyY2VNYW5hZ2VyLT5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6bWFrZUN1
cnJlbnQoZWdsOjpTdXJmYWNlICpzdXJmYWNlKQoreworICAgIGlmICghbUhhc0JlZW5DdXJyZW50
KQorICAgIHsKKyAgICAgICAgbU1ham9yU2hhZGVyTW9kZWwgPSBtUmVuZGVyZXItPmdldE1ham9y
U2hhZGVyTW9kZWwoKTsKKyAgICAgICAgbU1heGltdW1Qb2ludFNpemUgPSBtUmVuZGVyZXItPmdl
dE1heFBvaW50U2l6ZSgpOworICAgICAgICBtU3VwcG9ydHNWZXJ0ZXhUZXh0dXJlID0gbVJlbmRl
cmVyLT5nZXRWZXJ0ZXhUZXh0dXJlU3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNOb25Qb3dl
cjJUZXh0dXJlID0gbVJlbmRlcmVyLT5nZXROb25Qb3dlcjJUZXh0dXJlU3VwcG9ydCgpOworICAg
ICAgICBtU3VwcG9ydHNJbnN0YW5jaW5nID0gbVJlbmRlcmVyLT5nZXRJbnN0YW5jaW5nU3VwcG9y
dCgpOworCisgICAgICAgIG1NYXhWaWV3cG9ydERpbWVuc2lvbiA9IG1SZW5kZXJlci0+Z2V0TWF4
Vmlld3BvcnREaW1lbnNpb24oKTsKKyAgICAgICAgbU1heFRleHR1cmVEaW1lbnNpb24gPSBzdGQ6
Om1pbihzdGQ6Om1pbihtUmVuZGVyZXItPmdldE1heFRleHR1cmVXaWR0aCgpLCBtUmVuZGVyZXIt
PmdldE1heFRleHR1cmVIZWlnaHQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGludClnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfU0laRSk7CisgICAg
ICAgIG1NYXhDdWJlVGV4dHVyZURpbWVuc2lvbiA9IHN0ZDo6bWluKG1NYXhUZXh0dXJlRGltZW5z
aW9uLCAoaW50KWdsOjpJTVBMRU1FTlRBVElPTl9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFKTsK
KyAgICAgICAgbU1heFJlbmRlcmJ1ZmZlckRpbWVuc2lvbiA9IG1NYXhUZXh0dXJlRGltZW5zaW9u
OworICAgICAgICBtTWF4VGV4dHVyZUxldmVsID0gbG9nMihtTWF4VGV4dHVyZURpbWVuc2lvbikg
KyAxOworICAgICAgICBtTWF4VGV4dHVyZUFuaXNvdHJvcHkgPSBtUmVuZGVyZXItPmdldFRleHR1
cmVNYXhBbmlzb3Ryb3B5KCk7CisgICAgICAgIFRSQUNFKCJNYXhUZXh0dXJlRGltZW5zaW9uPSVk
LCBNYXhDdWJlVGV4dHVyZURpbWVuc2lvbj0lZCwgTWF4UmVuZGVyYnVmZmVyRGltZW5zaW9uPSVk
LCBNYXhUZXh0dXJlTGV2ZWw9JWQsIE1heFRleHR1cmVBbmlzb3Ryb3B5PSVmIiwKKyAgICAgICAg
ICAgICAgbU1heFRleHR1cmVEaW1lbnNpb24sIG1NYXhDdWJlVGV4dHVyZURpbWVuc2lvbiwgbU1h
eFJlbmRlcmJ1ZmZlckRpbWVuc2lvbiwgbU1heFRleHR1cmVMZXZlbCwgbU1heFRleHR1cmVBbmlz
b3Ryb3B5KTsKKworICAgICAgICBtU3VwcG9ydHNFdmVudFF1ZXJpZXMgPSBtUmVuZGVyZXItPmdl
dEV2ZW50UXVlcnlTdXBwb3J0KCk7CisgICAgICAgIG1TdXBwb3J0c09jY2x1c2lvblF1ZXJpZXMg
PSBtUmVuZGVyZXItPmdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydCgpOworICAgICAgICBtU3VwcG9y
dHNCR1JBVGV4dHVyZXMgPSBtUmVuZGVyZXItPmdldEJHUkFUZXh0dXJlU3VwcG9ydCgpOworICAg
ICAgICBtU3VwcG9ydHNEWFQxVGV4dHVyZXMgPSBtUmVuZGVyZXItPmdldERYVDFUZXh0dXJlU3Vw
cG9ydCgpOworICAgICAgICBtU3VwcG9ydHNEWFQzVGV4dHVyZXMgPSBtUmVuZGVyZXItPmdldERY
VDNUZXh0dXJlU3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNEWFQ1VGV4dHVyZXMgPSBtUmVu
ZGVyZXItPmdldERYVDVUZXh0dXJlU3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNGbG9hdDMy
VGV4dHVyZXMgPSBtUmVuZGVyZXItPmdldEZsb2F0MzJUZXh0dXJlU3VwcG9ydCgmbVN1cHBvcnRz
RmxvYXQzMkxpbmVhckZpbHRlciwgJm1TdXBwb3J0c0Zsb2F0MzJSZW5kZXJhYmxlVGV4dHVyZXMp
OworICAgICAgICBtU3VwcG9ydHNGbG9hdDE2VGV4dHVyZXMgPSBtUmVuZGVyZXItPmdldEZsb2F0
MTZUZXh0dXJlU3VwcG9ydCgmbVN1cHBvcnRzRmxvYXQxNkxpbmVhckZpbHRlciwgJm1TdXBwb3J0
c0Zsb2F0MTZSZW5kZXJhYmxlVGV4dHVyZXMpOworICAgICAgICBtU3VwcG9ydHNMdW1pbmFuY2VU
ZXh0dXJlcyA9IG1SZW5kZXJlci0+Z2V0THVtaW5hbmNlVGV4dHVyZVN1cHBvcnQoKTsKKyAgICAg
ICAgbVN1cHBvcnRzTHVtaW5hbmNlQWxwaGFUZXh0dXJlcyA9IG1SZW5kZXJlci0+Z2V0THVtaW5h
bmNlQWxwaGFUZXh0dXJlU3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNEZXB0aFRleHR1cmVz
ID0gbVJlbmRlcmVyLT5nZXREZXB0aFRleHR1cmVTdXBwb3J0KCk7CisgICAgICAgIG1TdXBwb3J0
c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5ID0gbVJlbmRlcmVyLT5nZXRUZXh0dXJlRmlsdGVyQW5p
c290cm9weVN1cHBvcnQoKTsKKyAgICAgICAgbVN1cHBvcnRzMzJiaXRJbmRpY2VzID0gbVJlbmRl
cmVyLT5nZXQzMkJpdEluZGV4U3VwcG9ydCgpOworCisgICAgICAgIG1OdW1Db21wcmVzc2VkVGV4
dHVyZUZvcm1hdHMgPSAwOworICAgICAgICBpZiAoc3VwcG9ydHNEWFQxVGV4dHVyZXMoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cyArPSAyOwor
ICAgICAgICB9CisgICAgICAgIGlmIChzdXBwb3J0c0RYVDNUZXh0dXJlcygpKQorICAgICAgICB7
CisgICAgICAgICAgICBtTnVtQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRzICs9IDE7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1OdW1Db21wcmVzc2VkVGV4dHVyZUZvcm1hdHMgKz0gMTsKKyAgICAgICAgfQorCisg
ICAgICAgIGluaXRFeHRlbnNpb25TdHJpbmcoKTsKKyAgICAgICAgaW5pdFJlbmRlcmVyU3RyaW5n
KCk7CisKKyAgICAgICAgbVN0YXRlLnZpZXdwb3J0LnggPSAwOworICAgICAgICBtU3RhdGUudmll
d3BvcnQueSA9IDA7CisgICAgICAgIG1TdGF0ZS52aWV3cG9ydC53aWR0aCA9IHN1cmZhY2UtPmdl
dFdpZHRoKCk7CisgICAgICAgIG1TdGF0ZS52aWV3cG9ydC5oZWlnaHQgPSBzdXJmYWNlLT5nZXRI
ZWlnaHQoKTsKKworICAgICAgICBtU3RhdGUuc2Npc3Nvci54ID0gMDsKKyAgICAgICAgbVN0YXRl
LnNjaXNzb3IueSA9IDA7CisgICAgICAgIG1TdGF0ZS5zY2lzc29yLndpZHRoID0gc3VyZmFjZS0+
Z2V0V2lkdGgoKTsKKyAgICAgICAgbVN0YXRlLnNjaXNzb3IuaGVpZ2h0ID0gc3VyZmFjZS0+Z2V0
SGVpZ2h0KCk7CisKKyAgICAgICAgbUhhc0JlZW5DdXJyZW50ID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICAvLyBXcmFwIHRoZSBleGlzdGluZyBzd2FwY2hhaW4gcmVzb3VyY2VzIGludG8gR0wgb2JqZWN0
cyBhbmQgYXNzaWduIHRoZW0gdG8gdGhlICcwJyBuYW1lcworICAgIHJ4OjpTd2FwQ2hhaW4gKnN3
YXBjaGFpbiA9IHN1cmZhY2UtPmdldFN3YXBDaGFpbigpOworCisgICAgQ29sb3JidWZmZXIgKmNv
bG9yYnVmZmVyWmVybyA9IG5ldyBDb2xvcmJ1ZmZlcihtUmVuZGVyZXIsIHN3YXBjaGFpbik7Cisg
ICAgRGVwdGhTdGVuY2lsYnVmZmVyICpkZXB0aFN0ZW5jaWxidWZmZXJaZXJvID0gbmV3IERlcHRo
U3RlbmNpbGJ1ZmZlcihtUmVuZGVyZXIsIHN3YXBjaGFpbik7CisgICAgRnJhbWVidWZmZXIgKmZy
YW1lYnVmZmVyWmVybyA9IG5ldyBEZWZhdWx0RnJhbWVidWZmZXIobVJlbmRlcmVyLCBjb2xvcmJ1
ZmZlclplcm8sIGRlcHRoU3RlbmNpbGJ1ZmZlclplcm8pOworCisgICAgc2V0RnJhbWVidWZmZXJa
ZXJvKGZyYW1lYnVmZmVyWmVybyk7Cit9CisKKy8vIE5PVEU6IHRoaXMgZnVuY3Rpb24gc2hvdWxk
IG5vdCBhc3N1bWUgdGhhdCB0aGlzIGNvbnRleHQgaXMgY3VycmVudCEKK3ZvaWQgQ29udGV4dDo6
bWFya0NvbnRleHRMb3N0KCkKK3sKKyAgICBpZiAobVJlc2V0U3RyYXRlZ3kgPT0gR0xfTE9TRV9D
T05URVhUX09OX1JFU0VUX0VYVCkKKyAgICAgICAgbVJlc2V0U3RhdHVzID0gR0xfVU5LTk9XTl9D
T05URVhUX1JFU0VUX0VYVDsKKyAgICBtQ29udGV4dExvc3QgPSB0cnVlOworfQorCitib29sIENv
bnRleHQ6OmlzQ29udGV4dExvc3QoKQoreworICAgIHJldHVybiBtQ29udGV4dExvc3Q7Cit9CisK
K3ZvaWQgQ29udGV4dDo6c2V0Q2xlYXJDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9h
dCBibHVlLCBmbG9hdCBhbHBoYSkKK3sKKyAgICBtU3RhdGUuY29sb3JDbGVhclZhbHVlLnJlZCA9
IHJlZDsKKyAgICBtU3RhdGUuY29sb3JDbGVhclZhbHVlLmdyZWVuID0gZ3JlZW47CisgICAgbVN0
YXRlLmNvbG9yQ2xlYXJWYWx1ZS5ibHVlID0gYmx1ZTsKKyAgICBtU3RhdGUuY29sb3JDbGVhclZh
bHVlLmFscGhhID0gYWxwaGE7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0Q2xlYXJEZXB0aChmbG9h
dCBkZXB0aCkKK3sKKyAgICBtU3RhdGUuZGVwdGhDbGVhclZhbHVlID0gZGVwdGg7Cit9CisKK3Zv
aWQgQ29udGV4dDo6c2V0Q2xlYXJTdGVuY2lsKGludCBzdGVuY2lsKQoreworICAgIG1TdGF0ZS5z
dGVuY2lsQ2xlYXJWYWx1ZSA9IHN0ZW5jaWw7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0Q3VsbEZh
Y2UoYm9vbCBlbmFibGVkKQoreworICAgIG1TdGF0ZS5yYXN0ZXJpemVyLmN1bGxGYWNlID0gZW5h
YmxlZDsKK30KKworYm9vbCBDb250ZXh0Ojppc0N1bGxGYWNlRW5hYmxlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1TdGF0ZS5yYXN0ZXJpemVyLmN1bGxGYWNlOworfQorCit2b2lkIENvbnRleHQ6
OnNldEN1bGxNb2RlKEdMZW51bSBtb2RlKQoreworICAgIG1TdGF0ZS5yYXN0ZXJpemVyLmN1bGxN
b2RlID0gbW9kZTsKK30KKwordm9pZCBDb250ZXh0OjpzZXRGcm9udEZhY2UoR0xlbnVtIGZyb250
KQoreworICAgIG1TdGF0ZS5yYXN0ZXJpemVyLmZyb250RmFjZSA9IGZyb250OworfQorCit2b2lk
IENvbnRleHQ6OnNldERlcHRoVGVzdChib29sIGVuYWJsZWQpCit7CisgICAgbVN0YXRlLmRlcHRo
U3RlbmNpbC5kZXB0aFRlc3QgPSBlbmFibGVkOworfQorCitib29sIENvbnRleHQ6OmlzRGVwdGhU
ZXN0RW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuZGVw
dGhUZXN0OworfQorCit2b2lkIENvbnRleHQ6OnNldERlcHRoRnVuYyhHTGVudW0gZGVwdGhGdW5j
KQoreworICAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLmRlcHRoRnVuYyA9IGRlcHRoRnVuYzsKK30K
Kwordm9pZCBDb250ZXh0OjpzZXREZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKQor
eworICAgIG1TdGF0ZS56TmVhciA9IHpOZWFyOworICAgIG1TdGF0ZS56RmFyID0gekZhcjsKK30K
Kwordm9pZCBDb250ZXh0OjpzZXRCbGVuZChib29sIGVuYWJsZWQpCit7CisgICAgbVN0YXRlLmJs
ZW5kLmJsZW5kID0gZW5hYmxlZDsKK30KKworYm9vbCBDb250ZXh0Ojppc0JsZW5kRW5hYmxlZCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5ibGVuZC5ibGVuZDsKK30KKwordm9pZCBDb250
ZXh0OjpzZXRCbGVuZEZhY3RvcnMoR0xlbnVtIHNvdXJjZVJHQiwgR0xlbnVtIGRlc3RSR0IsIEdM
ZW51bSBzb3VyY2VBbHBoYSwgR0xlbnVtIGRlc3RBbHBoYSkKK3sKKyAgICBtU3RhdGUuYmxlbmQu
c291cmNlQmxlbmRSR0IgPSBzb3VyY2VSR0I7CisgICAgbVN0YXRlLmJsZW5kLmRlc3RCbGVuZFJH
QiA9IGRlc3RSR0I7CisgICAgbVN0YXRlLmJsZW5kLnNvdXJjZUJsZW5kQWxwaGEgPSBzb3VyY2VB
bHBoYTsKKyAgICBtU3RhdGUuYmxlbmQuZGVzdEJsZW5kQWxwaGEgPSBkZXN0QWxwaGE7Cit9CisK
K3ZvaWQgQ29udGV4dDo6c2V0QmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9h
dCBibHVlLCBmbG9hdCBhbHBoYSkKK3sKKyAgICBtU3RhdGUuYmxlbmRDb2xvci5yZWQgPSByZWQ7
CisgICAgbVN0YXRlLmJsZW5kQ29sb3IuZ3JlZW4gPSBncmVlbjsKKyAgICBtU3RhdGUuYmxlbmRD
b2xvci5ibHVlID0gYmx1ZTsKKyAgICBtU3RhdGUuYmxlbmRDb2xvci5hbHBoYSA9IGFscGhhOwor
fQorCit2b2lkIENvbnRleHQ6OnNldEJsZW5kRXF1YXRpb24oR0xlbnVtIHJnYkVxdWF0aW9uLCBH
TGVudW0gYWxwaGFFcXVhdGlvbikKK3sKKyAgICBtU3RhdGUuYmxlbmQuYmxlbmRFcXVhdGlvblJH
QiA9IHJnYkVxdWF0aW9uOworICAgIG1TdGF0ZS5ibGVuZC5ibGVuZEVxdWF0aW9uQWxwaGEgPSBh
bHBoYUVxdWF0aW9uOworfQorCit2b2lkIENvbnRleHQ6OnNldFN0ZW5jaWxUZXN0KGJvb2wgZW5h
YmxlZCkKK3sKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxUZXN0ID0gZW5hYmxlZDsK
K30KKworYm9vbCBDb250ZXh0Ojppc1N0ZW5jaWxUZXN0RW5hYmxlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbFRlc3Q7Cit9CisKK3ZvaWQgQ29udGV4
dDo6c2V0U3RlbmNpbFBhcmFtcyhHTGVudW0gc3RlbmNpbEZ1bmMsIEdMaW50IHN0ZW5jaWxSZWYs
IEdMdWludCBzdGVuY2lsTWFzaykKK3sKKyAgICBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxG
dW5jID0gc3RlbmNpbEZ1bmM7CisgICAgbVN0YXRlLnN0ZW5jaWxSZWYgPSAoc3RlbmNpbFJlZiA+
IDApID8gc3RlbmNpbFJlZiA6IDA7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsTWFz
ayA9IHN0ZW5jaWxNYXNrOworfQorCit2b2lkIENvbnRleHQ6OnNldFN0ZW5jaWxCYWNrUGFyYW1z
KEdMZW51bSBzdGVuY2lsQmFja0Z1bmMsIEdMaW50IHN0ZW5jaWxCYWNrUmVmLCBHTHVpbnQgc3Rl
bmNpbEJhY2tNYXNrKQoreworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tGdW5j
ID0gc3RlbmNpbEJhY2tGdW5jOworICAgIG1TdGF0ZS5zdGVuY2lsQmFja1JlZiA9IChzdGVuY2ls
QmFja1JlZiA+IDApID8gc3RlbmNpbEJhY2tSZWYgOiAwOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5j
aWwuc3RlbmNpbEJhY2tNYXNrID0gc3RlbmNpbEJhY2tNYXNrOworfQorCit2b2lkIENvbnRleHQ6
OnNldFN0ZW5jaWxXcml0ZW1hc2soR0x1aW50IHN0ZW5jaWxXcml0ZW1hc2spCit7CisgICAgbVN0
YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsV3JpdGVtYXNrID0gc3RlbmNpbFdyaXRlbWFzazsKK30K
Kwordm9pZCBDb250ZXh0OjpzZXRTdGVuY2lsQmFja1dyaXRlbWFzayhHTHVpbnQgc3RlbmNpbEJh
Y2tXcml0ZW1hc2spCit7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsQmFja1dyaXRl
bWFzayA9IHN0ZW5jaWxCYWNrV3JpdGVtYXNrOworfQorCit2b2lkIENvbnRleHQ6OnNldFN0ZW5j
aWxPcGVyYXRpb25zKEdMZW51bSBzdGVuY2lsRmFpbCwgR0xlbnVtIHN0ZW5jaWxQYXNzRGVwdGhG
YWlsLCBHTGVudW0gc3RlbmNpbFBhc3NEZXB0aFBhc3MpCit7CisgICAgbVN0YXRlLmRlcHRoU3Rl
bmNpbC5zdGVuY2lsRmFpbCA9IHN0ZW5jaWxGYWlsOworICAgIG1TdGF0ZS5kZXB0aFN0ZW5jaWwu
c3RlbmNpbFBhc3NEZXB0aEZhaWwgPSBzdGVuY2lsUGFzc0RlcHRoRmFpbDsKKyAgICBtU3RhdGUu
ZGVwdGhTdGVuY2lsLnN0ZW5jaWxQYXNzRGVwdGhQYXNzID0gc3RlbmNpbFBhc3NEZXB0aFBhc3M7
Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0U3RlbmNpbEJhY2tPcGVyYXRpb25zKEdMZW51bSBzdGVu
Y2lsQmFja0ZhaWwsIEdMZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwsIEdMZW51bSBzdGVu
Y2lsQmFja1Bhc3NEZXB0aFBhc3MpCit7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2ls
QmFja0ZhaWwgPSBzdGVuY2lsQmFja0ZhaWw7CisgICAgbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVu
Y2lsQmFja1Bhc3NEZXB0aEZhaWwgPSBzdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWw7CisgICAgbVN0
YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MgPSBzdGVuY2lsQmFja1Bh
c3NEZXB0aFBhc3M7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0UG9seWdvbk9mZnNldEZpbGwoYm9v
bCBlbmFibGVkKQoreworICAgICBtU3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0RmlsbCA9
IGVuYWJsZWQ7Cit9CisKK2Jvb2wgQ29udGV4dDo6aXNQb2x5Z29uT2Zmc2V0RmlsbEVuYWJsZWQo
KSBjb25zdAoreworICAgIHJldHVybiBtU3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0Rmls
bDsKK30KKwordm9pZCBDb250ZXh0OjpzZXRQb2x5Z29uT2Zmc2V0UGFyYW1zKEdMZmxvYXQgZmFj
dG9yLCBHTGZsb2F0IHVuaXRzKQoreworICAgIC8vIEFuIGFwcGxpY2F0aW9uIGNhbiBwYXNzIE5h
TiB2YWx1ZXMgaGVyZSwgc28gaGFuZGxlIHRoaXMgZ3JhY2VmdWxseQorICAgIG1TdGF0ZS5yYXN0
ZXJpemVyLnBvbHlnb25PZmZzZXRGYWN0b3IgPSBmYWN0b3IgIT0gZmFjdG9yID8gMC4wZiA6IGZh
Y3RvcjsKKyAgICBtU3RhdGUucmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0VW5pdHMgPSB1bml0cyAh
PSB1bml0cyA/IDAuMGYgOiB1bml0czsKK30KKwordm9pZCBDb250ZXh0OjpzZXRTYW1wbGVBbHBo
YVRvQ292ZXJhZ2UoYm9vbCBlbmFibGVkKQoreworICAgIG1TdGF0ZS5ibGVuZC5zYW1wbGVBbHBo
YVRvQ292ZXJhZ2UgPSBlbmFibGVkOworfQorCitib29sIENvbnRleHQ6OmlzU2FtcGxlQWxwaGFU
b0NvdmVyYWdlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5ibGVuZC5zYW1w
bGVBbHBoYVRvQ292ZXJhZ2U7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0U2FtcGxlQ292ZXJhZ2Uo
Ym9vbCBlbmFibGVkKQoreworICAgIG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZSA9IGVuYWJsZWQ7Cit9
CisKK2Jvb2wgQ29udGV4dDo6aXNTYW1wbGVDb3ZlcmFnZUVuYWJsZWQoKSBjb25zdAoreworICAg
IHJldHVybiBtU3RhdGUuc2FtcGxlQ292ZXJhZ2U7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0U2Ft
cGxlQ292ZXJhZ2VQYXJhbXMoR0xjbGFtcGYgdmFsdWUsIGJvb2wgaW52ZXJ0KQoreworICAgIG1T
dGF0ZS5zYW1wbGVDb3ZlcmFnZVZhbHVlID0gdmFsdWU7CisgICAgbVN0YXRlLnNhbXBsZUNvdmVy
YWdlSW52ZXJ0ID0gaW52ZXJ0OworfQorCit2b2lkIENvbnRleHQ6OnNldFNjaXNzb3JUZXN0KGJv
b2wgZW5hYmxlZCkKK3sKKyAgICBtU3RhdGUuc2Npc3NvclRlc3QgPSBlbmFibGVkOworfQorCiti
b29sIENvbnRleHQ6OmlzU2Npc3NvclRlc3RFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bVN0YXRlLnNjaXNzb3JUZXN0OworfQorCit2b2lkIENvbnRleHQ6OnNldERpdGhlcihib29sIGVu
YWJsZWQpCit7CisgICAgbVN0YXRlLmJsZW5kLmRpdGhlciA9IGVuYWJsZWQ7Cit9CisKK2Jvb2wg
Q29udGV4dDo6aXNEaXRoZXJFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLmJs
ZW5kLmRpdGhlcjsKK30KKwordm9pZCBDb250ZXh0OjpzZXRMaW5lV2lkdGgoR0xmbG9hdCB3aWR0
aCkKK3sKKyAgICBtU3RhdGUubGluZVdpZHRoID0gd2lkdGg7Cit9CisKK3ZvaWQgQ29udGV4dDo6
c2V0R2VuZXJhdGVNaXBtYXBIaW50KEdMZW51bSBoaW50KQoreworICAgIG1TdGF0ZS5nZW5lcmF0
ZU1pcG1hcEhpbnQgPSBoaW50OworfQorCit2b2lkIENvbnRleHQ6OnNldEZyYWdtZW50U2hhZGVy
RGVyaXZhdGl2ZUhpbnQoR0xlbnVtIGhpbnQpCit7CisgICAgbVN0YXRlLmZyYWdtZW50U2hhZGVy
RGVyaXZhdGl2ZUhpbnQgPSBoaW50OworICAgIC8vIFRPRE86IFByb3BhZ2F0ZSB0aGUgaGludCB0
byBzaGFkZXIgdHJhbnNsYXRvciBzbyB3ZSBjYW4gd3JpdGUKKyAgICAvLyBkZHgsIGRkeF9jb2Fy
c2UsIG9yIGRkeF9maW5lIGRlcGVuZGluZyBvbiB0aGUgaGludC4KKyAgICAvLyBJZ25vcmUgZm9y
IG5vdy4gSXQgaXMgdmFsaWQgZm9yIGltcGxlbWVudGF0aW9ucyB0byBpZ25vcmUgaGludC4KK30K
Kwordm9pZCBDb250ZXh0OjpzZXRWaWV3cG9ydFBhcmFtcyhHTGludCB4LCBHTGludCB5LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBtU3RhdGUudmlld3BvcnQueCA9IHg7
CisgICAgbVN0YXRlLnZpZXdwb3J0LnkgPSB5OworICAgIG1TdGF0ZS52aWV3cG9ydC53aWR0aCA9
IHdpZHRoOworICAgIG1TdGF0ZS52aWV3cG9ydC5oZWlnaHQgPSBoZWlnaHQ7Cit9CisKK3ZvaWQg
Q29udGV4dDo6c2V0U2Npc3NvclBhcmFtcyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBtU3RhdGUuc2Npc3Nvci54ID0geDsKKyAgICBtU3Rh
dGUuc2Npc3Nvci55ID0geTsKKyAgICBtU3RhdGUuc2Npc3Nvci53aWR0aCA9IHdpZHRoOworICAg
IG1TdGF0ZS5zY2lzc29yLmhlaWdodCA9IGhlaWdodDsKK30KKwordm9pZCBDb250ZXh0OjpzZXRD
b2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSkKK3sK
KyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrUmVkID0gcmVkOworICAgIG1TdGF0ZS5ibGVuZC5j
b2xvck1hc2tHcmVlbiA9IGdyZWVuOworICAgIG1TdGF0ZS5ibGVuZC5jb2xvck1hc2tCbHVlID0g
Ymx1ZTsKKyAgICBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQWxwaGEgPSBhbHBoYTsKK30KKwordm9p
ZCBDb250ZXh0OjpzZXREZXB0aE1hc2soYm9vbCBtYXNrKQoreworICAgIG1TdGF0ZS5kZXB0aFN0
ZW5jaWwuZGVwdGhNYXNrID0gbWFzazsKK30KKwordm9pZCBDb250ZXh0OjpzZXRBY3RpdmVTYW1w
bGVyKHVuc2lnbmVkIGludCBhY3RpdmUpCit7CisgICAgbVN0YXRlLmFjdGl2ZVNhbXBsZXIgPSBh
Y3RpdmU7Cit9CisKK0dMdWludCBDb250ZXh0OjpnZXRSZWFkRnJhbWVidWZmZXJIYW5kbGUoKSBj
b25zdAoreworICAgIHJldHVybiBtU3RhdGUucmVhZEZyYW1lYnVmZmVyOworfQorCitHTHVpbnQg
Q29udGV4dDo6Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bVN0YXRlLmRyYXdGcmFtZWJ1ZmZlcjsKK30KKworR0x1aW50IENvbnRleHQ6OmdldFJlbmRlcmJ1
ZmZlckhhbmRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5yZW5kZXJidWZmZXIuaWQo
KTsKK30KKworR0x1aW50IENvbnRleHQ6OmdldEFycmF5QnVmZmVySGFuZGxlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbVN0YXRlLmFycmF5QnVmZmVyLmlkKCk7Cit9CisKK0dMdWludCBDb250ZXh0
OjpnZXRBY3RpdmVRdWVyeShHTGVudW0gdGFyZ2V0KSBjb25zdAoreworICAgIFF1ZXJ5ICpxdWVy
eU9iamVjdCA9IE5VTEw7CisgICAgCisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAg
Y2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhUOgorICAgICAgICBxdWVyeU9iamVjdCA9IG1T
dGF0ZS5hY3RpdmVRdWVyeVtRVUVSWV9BTllfU0FNUExFU19QQVNTRURdLmdldCgpOworICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9F
WFQ6CisgICAgICAgIHF1ZXJ5T2JqZWN0ID0gbVN0YXRlLmFjdGl2ZVF1ZXJ5W1FVRVJZX0FOWV9T
QU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVdLmdldCgpOworICAgICAgICBicmVhazsKKyAgICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVChmYWxzZSk7CisgICAgfQorCisgICAgaWYgKHF1ZXJ5
T2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHF1ZXJ5T2JqZWN0LT5pZCgpOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3ZvaWQgQ29u
dGV4dDo6c2V0RW5hYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgaW50IGF0dHJpYk51bSwg
Ym9vbCBlbmFibGVkKQoreworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmliTnVtXS5t
QXJyYXlFbmFibGVkID0gZW5hYmxlZDsKK30KKworY29uc3QgVmVydGV4QXR0cmlidXRlICZDb250
ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJTdGF0ZSh1bnNpZ25lZCBpbnQgYXR0cmliTnVtKQoreworICAg
IHJldHVybiBtU3RhdGUudmVydGV4QXR0cmlidXRlW2F0dHJpYk51bV07Cit9CisKK3ZvaWQgQ29u
dGV4dDo6c2V0VmVydGV4QXR0cmliU3RhdGUodW5zaWduZWQgaW50IGF0dHJpYk51bSwgQnVmZmVy
ICpib3VuZEJ1ZmZlciwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIGJvb2wgbm9ybWFsaXplZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsIGNvbnN0
IHZvaWQgKnBvaW50ZXIpCit7CisgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVthdHRyaWJOdW1d
Lm1Cb3VuZEJ1ZmZlci5zZXQoYm91bmRCdWZmZXIpOworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1
dGVbYXR0cmliTnVtXS5tU2l6ZSA9IHNpemU7CisgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVth
dHRyaWJOdW1dLm1UeXBlID0gdHlwZTsKKyAgICBtU3RhdGUudmVydGV4QXR0cmlidXRlW2F0dHJp
Yk51bV0ubU5vcm1hbGl6ZWQgPSBub3JtYWxpemVkOworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1
dGVbYXR0cmliTnVtXS5tU3RyaWRlID0gc3RyaWRlOworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1
dGVbYXR0cmliTnVtXS5tUG9pbnRlciA9IHBvaW50ZXI7Cit9CisKK2NvbnN0IHZvaWQgKkNvbnRl
eHQ6OmdldFZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQgaW50IGF0dHJpYk51bSkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVthdHRyaWJOdW1dLm1Qb2ludGVy
OworfQorCit2b2lkIENvbnRleHQ6OnNldFBhY2tBbGlnbm1lbnQoR0xpbnQgYWxpZ25tZW50KQor
eworICAgIG1TdGF0ZS5wYWNrQWxpZ25tZW50ID0gYWxpZ25tZW50OworfQorCitHTGludCBDb250
ZXh0OjpnZXRQYWNrQWxpZ25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLnBhY2tB
bGlnbm1lbnQ7Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0VW5wYWNrQWxpZ25tZW50KEdMaW50IGFs
aWdubWVudCkKK3sKKyAgICBtU3RhdGUudW5wYWNrQWxpZ25tZW50ID0gYWxpZ25tZW50OworfQor
CitHTGludCBDb250ZXh0OjpnZXRVbnBhY2tBbGlnbm1lbnQoKSBjb25zdAoreworICAgIHJldHVy
biBtU3RhdGUudW5wYWNrQWxpZ25tZW50OworfQorCit2b2lkIENvbnRleHQ6OnNldFBhY2tSZXZl
cnNlUm93T3JkZXIoYm9vbCByZXZlcnNlUm93T3JkZXIpCit7CisgICAgbVN0YXRlLnBhY2tSZXZl
cnNlUm93T3JkZXIgPSByZXZlcnNlUm93T3JkZXI7Cit9CisKK2Jvb2wgQ29udGV4dDo6Z2V0UGFj
a1JldmVyc2VSb3dPcmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5wYWNrUmV2ZXJz
ZVJvd09yZGVyOworfQorCitHTHVpbnQgQ29udGV4dDo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICBy
ZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Y3JlYXRlQnVmZmVyKCk7Cit9CisKK0dMdWludCBDb250
ZXh0OjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Y3Jl
YXRlUHJvZ3JhbSgpOworfQorCitHTHVpbnQgQ29udGV4dDo6Y3JlYXRlU2hhZGVyKEdMZW51bSB0
eXBlKQoreworICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVTaGFkZXIodHlwZSk7
Cit9CisKK0dMdWludCBDb250ZXh0OjpjcmVhdGVUZXh0dXJlKCkKK3sKKyAgICByZXR1cm4gbVJl
c291cmNlTWFuYWdlci0+Y3JlYXRlVGV4dHVyZSgpOworfQorCitHTHVpbnQgQ29udGV4dDo6Y3Jl
YXRlUmVuZGVyYnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Y3JlYXRl
UmVuZGVyYnVmZmVyKCk7Cit9CisKKy8vIFJldHVybnMgYW4gdW51c2VkIGZyYW1lYnVmZmVyIG5h
bWUKK0dMdWludCBDb250ZXh0OjpjcmVhdGVGcmFtZWJ1ZmZlcigpCit7CisgICAgR0x1aW50IGhh
bmRsZSA9IG1GcmFtZWJ1ZmZlckhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworCisgICAgbUZy
YW1lYnVmZmVyTWFwW2hhbmRsZV0gPSBOVUxMOworCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKwor
R0x1aW50IENvbnRleHQ6OmNyZWF0ZUZlbmNlKCkKK3sKKyAgICBHTHVpbnQgaGFuZGxlID0gbUZl
bmNlSGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7CisKKyAgICBtRmVuY2VNYXBbaGFuZGxlXSA9
IG5ldyBGZW5jZShtUmVuZGVyZXIpOworCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKworLy8gUmV0
dXJucyBhbiB1bnVzZWQgcXVlcnkgbmFtZQorR0x1aW50IENvbnRleHQ6OmNyZWF0ZVF1ZXJ5KCkK
K3sKKyAgICBHTHVpbnQgaGFuZGxlID0gbVF1ZXJ5SGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7
CisKKyAgICBtUXVlcnlNYXBbaGFuZGxlXSA9IE5VTEw7CisKKyAgICByZXR1cm4gaGFuZGxlOwor
fQorCit2b2lkIENvbnRleHQ6OmRlbGV0ZUJ1ZmZlcihHTHVpbnQgYnVmZmVyKQoreworICAgIGlm
IChtUmVzb3VyY2VNYW5hZ2VyLT5nZXRCdWZmZXIoYnVmZmVyKSkKKyAgICB7CisgICAgICAgIGRl
dGFjaEJ1ZmZlcihidWZmZXIpOworICAgIH0KKyAgICAKKyAgICBtUmVzb3VyY2VNYW5hZ2VyLT5k
ZWxldGVCdWZmZXIoYnVmZmVyKTsKK30KKwordm9pZCBDb250ZXh0OjpkZWxldGVTaGFkZXIoR0x1
aW50IHNoYWRlcikKK3sKKyAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVTaGFkZXIoc2hhZGVy
KTsKK30KKwordm9pZCBDb250ZXh0OjpkZWxldGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQorewor
ICAgIG1SZXNvdXJjZU1hbmFnZXItPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Cit9CisKK3ZvaWQg
Q29udGV4dDo6ZGVsZXRlVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKK3sKKyAgICBpZiAobVJlc291
cmNlTWFuYWdlci0+Z2V0VGV4dHVyZSh0ZXh0dXJlKSkKKyAgICB7CisgICAgICAgIGRldGFjaFRl
eHR1cmUodGV4dHVyZSk7CisgICAgfQorCisgICAgbVJlc291cmNlTWFuYWdlci0+ZGVsZXRlVGV4
dHVyZSh0ZXh0dXJlKTsKK30KKwordm9pZCBDb250ZXh0OjpkZWxldGVSZW5kZXJidWZmZXIoR0x1
aW50IHJlbmRlcmJ1ZmZlcikKK3sKKyAgICBpZiAobVJlc291cmNlTWFuYWdlci0+Z2V0UmVuZGVy
YnVmZmVyKHJlbmRlcmJ1ZmZlcikpCisgICAgeworICAgICAgICBkZXRhY2hSZW5kZXJidWZmZXIo
cmVuZGVyYnVmZmVyKTsKKyAgICB9CisgICAgCisgICAgbVJlc291cmNlTWFuYWdlci0+ZGVsZXRl
UmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZGVsZXRlRnJh
bWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKQoreworICAgIEZyYW1lYnVmZmVyTWFwOjppdGVy
YXRvciBmcmFtZWJ1ZmZlck9iamVjdCA9IG1GcmFtZWJ1ZmZlck1hcC5maW5kKGZyYW1lYnVmZmVy
KTsKKworICAgIGlmIChmcmFtZWJ1ZmZlck9iamVjdCAhPSBtRnJhbWVidWZmZXJNYXAuZW5kKCkp
CisgICAgeworICAgICAgICBkZXRhY2hGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisKKyAgICAg
ICAgbUZyYW1lYnVmZmVySGFuZGxlQWxsb2NhdG9yLnJlbGVhc2UoZnJhbWVidWZmZXJPYmplY3Qt
PmZpcnN0KTsKKyAgICAgICAgZGVsZXRlIGZyYW1lYnVmZmVyT2JqZWN0LT5zZWNvbmQ7CisgICAg
ICAgIG1GcmFtZWJ1ZmZlck1hcC5lcmFzZShmcmFtZWJ1ZmZlck9iamVjdCk7CisgICAgfQorfQor
Cit2b2lkIENvbnRleHQ6OmRlbGV0ZUZlbmNlKEdMdWludCBmZW5jZSkKK3sKKyAgICBGZW5jZU1h
cDo6aXRlcmF0b3IgZmVuY2VPYmplY3QgPSBtRmVuY2VNYXAuZmluZChmZW5jZSk7CisKKyAgICBp
ZiAoZmVuY2VPYmplY3QgIT0gbUZlbmNlTWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgbUZlbmNl
SGFuZGxlQWxsb2NhdG9yLnJlbGVhc2UoZmVuY2VPYmplY3QtPmZpcnN0KTsKKyAgICAgICAgZGVs
ZXRlIGZlbmNlT2JqZWN0LT5zZWNvbmQ7CisgICAgICAgIG1GZW5jZU1hcC5lcmFzZShmZW5jZU9i
amVjdCk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmRlbGV0ZVF1ZXJ5KEdMdWludCBxdWVy
eSkKK3sKKyAgICBRdWVyeU1hcDo6aXRlcmF0b3IgcXVlcnlPYmplY3QgPSBtUXVlcnlNYXAuZmlu
ZChxdWVyeSk7CisgICAgaWYgKHF1ZXJ5T2JqZWN0ICE9IG1RdWVyeU1hcC5lbmQoKSkKKyAgICB7
CisgICAgICAgIG1RdWVyeUhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKHF1ZXJ5T2JqZWN0LT5maXJz
dCk7CisgICAgICAgIGlmIChxdWVyeU9iamVjdC0+c2Vjb25kKQorICAgICAgICB7CisgICAgICAg
ICAgICBxdWVyeU9iamVjdC0+c2Vjb25kLT5yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICAgICAg
bVF1ZXJ5TWFwLmVyYXNlKHF1ZXJ5T2JqZWN0KTsKKyAgICB9Cit9CisKK0J1ZmZlciAqQ29udGV4
dDo6Z2V0QnVmZmVyKEdMdWludCBoYW5kbGUpCit7CisgICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFn
ZXItPmdldEJ1ZmZlcihoYW5kbGUpOworfQorCitTaGFkZXIgKkNvbnRleHQ6OmdldFNoYWRlcihH
THVpbnQgaGFuZGxlKQoreworICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRTaGFkZXIo
aGFuZGxlKTsKK30KKworUHJvZ3JhbSAqQ29udGV4dDo6Z2V0UHJvZ3JhbShHTHVpbnQgaGFuZGxl
KQoreworICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQcm9ncmFtKGhhbmRsZSk7Cit9
CisKK1RleHR1cmUgKkNvbnRleHQ6OmdldFRleHR1cmUoR0x1aW50IGhhbmRsZSkKK3sKKyAgICBy
ZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Z2V0VGV4dHVyZShoYW5kbGUpOworfQorCitSZW5kZXJi
dWZmZXIgKkNvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlcihHTHVpbnQgaGFuZGxlKQoreworICAgIHJl
dHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRSZW5kZXJidWZmZXIoaGFuZGxlKTsKK30KKworRnJh
bWVidWZmZXIgKkNvbnRleHQ6OmdldFJlYWRGcmFtZWJ1ZmZlcigpCit7CisgICAgcmV0dXJuIGdl
dEZyYW1lYnVmZmVyKG1TdGF0ZS5yZWFkRnJhbWVidWZmZXIpOworfQorCitGcmFtZWJ1ZmZlciAq
Q29udGV4dDo6Z2V0RHJhd0ZyYW1lYnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbUJvdW5kRHJhd0Zy
YW1lYnVmZmVyOworfQorCit2b2lkIENvbnRleHQ6OmJpbmRBcnJheUJ1ZmZlcih1bnNpZ25lZCBp
bnQgYnVmZmVyKQoreworICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlv
bihidWZmZXIpOworCisgICAgbVN0YXRlLmFycmF5QnVmZmVyLnNldChnZXRCdWZmZXIoYnVmZmVy
KSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6YmluZEVsZW1lbnRBcnJheUJ1ZmZlcih1bnNpZ25lZCBp
bnQgYnVmZmVyKQoreworICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlv
bihidWZmZXIpOworCisgICAgbVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZlci5zZXQoZ2V0QnVmZmVy
KGJ1ZmZlcikpOworfQorCit2b2lkIENvbnRleHQ6OmJpbmRUZXh0dXJlMkQoR0x1aW50IHRleHR1
cmUpCit7CisgICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tUZXh0dXJlQWxsb2NhdGlvbih0ZXh0
dXJlLCBURVhUVVJFXzJEKTsKKworICAgIG1TdGF0ZS5zYW1wbGVyVGV4dHVyZVtURVhUVVJFXzJE
XVttU3RhdGUuYWN0aXZlU2FtcGxlcl0uc2V0KGdldFRleHR1cmUodGV4dHVyZSkpOworfQorCit2
b2lkIENvbnRleHQ6OmJpbmRUZXh0dXJlQ3ViZU1hcChHTHVpbnQgdGV4dHVyZSkKK3sKKyAgICBt
UmVzb3VyY2VNYW5hZ2VyLT5jaGVja1RleHR1cmVBbGxvY2F0aW9uKHRleHR1cmUsIFRFWFRVUkVf
Q1VCRSk7CisKKyAgICBtU3RhdGUuc2FtcGxlclRleHR1cmVbVEVYVFVSRV9DVUJFXVttU3RhdGUu
YWN0aXZlU2FtcGxlcl0uc2V0KGdldFRleHR1cmUodGV4dHVyZSkpOworfQorCit2b2lkIENvbnRl
eHQ6OmJpbmRSZWFkRnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKQoreworICAgIGlmICgh
Z2V0RnJhbWVidWZmZXIoZnJhbWVidWZmZXIpKQorICAgIHsKKyAgICAgICAgbUZyYW1lYnVmZmVy
TWFwW2ZyYW1lYnVmZmVyXSA9IG5ldyBGcmFtZWJ1ZmZlcihtUmVuZGVyZXIpOworICAgIH0KKwor
ICAgIG1TdGF0ZS5yZWFkRnJhbWVidWZmZXIgPSBmcmFtZWJ1ZmZlcjsKK30KKwordm9pZCBDb250
ZXh0OjpiaW5kRHJhd0ZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlcikKK3sKKyAgICBpZiAo
IWdldEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKSkKKyAgICB7CisgICAgICAgIG1GcmFtZWJ1ZmZl
ck1hcFtmcmFtZWJ1ZmZlcl0gPSBuZXcgRnJhbWVidWZmZXIobVJlbmRlcmVyKTsKKyAgICB9CisK
KyAgICBtU3RhdGUuZHJhd0ZyYW1lYnVmZmVyID0gZnJhbWVidWZmZXI7CisKKyAgICBtQm91bmRE
cmF3RnJhbWVidWZmZXIgPSBnZXRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7Cit9CisKK3ZvaWQg
Q29udGV4dDo6YmluZFJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVyKQoreworICAgIG1S
ZXNvdXJjZU1hbmFnZXItPmNoZWNrUmVuZGVyYnVmZmVyQWxsb2NhdGlvbihyZW5kZXJidWZmZXIp
OworCisgICAgbVN0YXRlLnJlbmRlcmJ1ZmZlci5zZXQoZ2V0UmVuZGVyYnVmZmVyKHJlbmRlcmJ1
ZmZlcikpOworfQorCit2b2lkIENvbnRleHQ6OnVzZVByb2dyYW0oR0x1aW50IHByb2dyYW0pCit7
CisgICAgR0x1aW50IHByaW9yUHJvZ3JhbSA9IG1TdGF0ZS5jdXJyZW50UHJvZ3JhbTsKKyAgICBt
U3RhdGUuY3VycmVudFByb2dyYW0gPSBwcm9ncmFtOyAgICAgICAgICAgICAgIC8vIE11c3Qgc3dp
dGNoIGJlZm9yZSB0cnlpbmcgdG8gZGVsZXRlLCBvdGhlcndpc2UgaXQgb25seSBnZXRzIGZsYWdn
ZWQuCisKKyAgICBpZiAocHJpb3JQcm9ncmFtICE9IHByb2dyYW0pCisgICAgeworICAgICAgICBQ
cm9ncmFtICpuZXdQcm9ncmFtID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UHJvZ3JhbShwcm9ncmFt
KTsKKyAgICAgICAgUHJvZ3JhbSAqb2xkUHJvZ3JhbSA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFBy
b2dyYW0ocHJpb3JQcm9ncmFtKTsKKyAgICAgICAgbUN1cnJlbnRQcm9ncmFtQmluYXJ5LnNldChO
VUxMKTsKKworICAgICAgICBpZiAobmV3UHJvZ3JhbSkKKyAgICAgICAgeworICAgICAgICAgICAg
bmV3UHJvZ3JhbS0+YWRkUmVmKCk7CisgICAgICAgICAgICBtQ3VycmVudFByb2dyYW1CaW5hcnku
c2V0KG5ld1Byb2dyYW0tPmdldFByb2dyYW1CaW5hcnkoKSk7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGlmIChvbGRQcm9ncmFtKQorICAgICAgICB7CisgICAgICAgICAgICBvbGRQcm9n
cmFtLT5yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6bGlu
a1Byb2dyYW0oR0x1aW50IHByb2dyYW0pCit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9
IG1SZXNvdXJjZU1hbmFnZXItPmdldFByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBib29sIGxpbmtl
ZCA9IHByb2dyYW1PYmplY3QtPmxpbmsoKTsKKworICAgIC8vIGlmIHRoZSBjdXJyZW50IHByb2dy
YW0gd2FzIHJlbGlua2VkIHN1Y2Nlc3NmdWxseSB3ZQorICAgIC8vIG5lZWQgdG8gaW5zdGFsbCB0
aGUgbmV3IGV4ZWN1dGFibGVzCisgICAgaWYgKGxpbmtlZCAmJiBwcm9ncmFtID09IG1TdGF0ZS5j
dXJyZW50UHJvZ3JhbSkKKyAgICB7CisgICAgICAgIG1DdXJyZW50UHJvZ3JhbUJpbmFyeS5zZXQo
cHJvZ3JhbU9iamVjdC0+Z2V0UHJvZ3JhbUJpbmFyeSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29u
dGV4dDo6c2V0UHJvZ3JhbUJpbmFyeShHTHVpbnQgcHJvZ3JhbSwgY29uc3Qgdm9pZCAqYmluYXJ5
LCBHTGludCBsZW5ndGgpCit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IG1SZXNvdXJj
ZU1hbmFnZXItPmdldFByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBib29sIGxvYWRlZCA9IHByb2dy
YW1PYmplY3QtPnNldFByb2dyYW1CaW5hcnkoYmluYXJ5LCBsZW5ndGgpOworCisgICAgLy8gaWYg
dGhlIGN1cnJlbnQgcHJvZ3JhbSB3YXMgcmVsb2FkZWQgc3VjY2Vzc2Z1bGx5IHdlCisgICAgLy8g
bmVlZCB0byBpbnN0YWxsIHRoZSBuZXcgZXhlY3V0YWJsZXMKKyAgICBpZiAobG9hZGVkICYmIHBy
b2dyYW0gPT0gbVN0YXRlLmN1cnJlbnRQcm9ncmFtKQorICAgIHsKKyAgICAgICAgbUN1cnJlbnRQ
cm9ncmFtQmluYXJ5LnNldChwcm9ncmFtT2JqZWN0LT5nZXRQcm9ncmFtQmluYXJ5KCkpOworICAg
IH0KKworfQorCit2b2lkIENvbnRleHQ6OmJlZ2luUXVlcnkoR0xlbnVtIHRhcmdldCwgR0x1aW50
IHF1ZXJ5KQoreworICAgIC8vIEZyb20gRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuOiBJZiBC
ZWdpblF1ZXJ5RVhUIGlzIGNhbGxlZCB3aXRoIGFuIDxpZD4gIAorICAgIC8vIG9mIHplcm8sIGlm
IHRoZSBhY3RpdmUgcXVlcnkgb2JqZWN0IG5hbWUgZm9yIDx0YXJnZXQ+IGlzIG5vbi16ZXJvIChm
b3IgdGhlICAKKyAgICAvLyB0YXJnZXRzIEFOWV9TQU1QTEVTX1BBU1NFRF9FWFQgYW5kIEFOWV9T
QU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhULCBpZiAgCisgICAgLy8gdGhlIGFjdGl2ZSBx
dWVyeSBmb3IgZWl0aGVyIHRhcmdldCBpcyBub24temVybyksIGlmIDxpZD4gaXMgdGhlIG5hbWUg
b2YgYW4gCisgICAgLy8gZXhpc3RpbmcgcXVlcnkgb2JqZWN0IHdob3NlIHR5cGUgZG9lcyBub3Qg
bWF0Y2ggPHRhcmdldD4sIG9yIGlmIDxpZD4gaXMgdGhlCisgICAgLy8gYWN0aXZlIHF1ZXJ5IG9i
amVjdCBuYW1lIGZvciBhbnkgcXVlcnkgdHlwZSwgdGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9O
IGlzCisgICAgLy8gZ2VuZXJhdGVkLgorCisgICAgLy8gRW5zdXJlIG5vIG90aGVyIHF1ZXJpZXMg
YXJlIGFjdGl2ZQorICAgIC8vIE5PVEU6IElmIG90aGVyIHF1ZXJpZXMgdGhhbiBvY2NsdXNpb24g
YXJlIHN1cHBvcnRlZCwgd2Ugd2lsbCBuZWVkIHRvIGNoZWNrCisgICAgLy8gc2VwYXJhdGVseSB0
aGF0OgorICAgIC8vICAgIGEpIFRoZSBxdWVyeSBJRCBwYXNzZWQgaXMgbm90IHRoZSBjdXJyZW50
IGFjdGl2ZSBxdWVyeSBmb3IgYW55IHRhcmdldC90eXBlCisgICAgLy8gICAgYikgVGhlcmUgYXJl
IG5vIGFjdGl2ZSBxdWVyaWVzIGZvciB0aGUgcmVxdWVzdGVkIHRhcmdldCAoYW5kIGluIHRoZSBj
YXNlCisgICAgLy8gICAgICAgb2YgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCBhbmQgR0xfQU5Z
X1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQsCisgICAgLy8gICAgICAgbm8gcXVlcnkg
bWF5IGJlIGFjdGl2ZSBmb3IgZWl0aGVyIGlmIGdsQmVnaW5RdWVyeSB0YXJnZXRzIGVpdGhlci4K
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IFFVRVJZX1RZUEVfQ09VTlQ7IGkrKykKKyAgICB7Cisg
ICAgICAgIGlmIChtU3RhdGUuYWN0aXZlUXVlcnlbaV0uZ2V0KCkgIT0gTlVMTCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBRdWVyeVR5cGUgcVR5cGU7CisgICAgc3dpdGNoICh0YXJn
ZXQpCisgICAgeworICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhUOiAKKyAgICAg
ICAgcVR5cGUgPSBRVUVSWV9BTllfU0FNUExFU19QQVNTRUQ7IAorICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQ6IAorICAgICAg
ICBxVHlwZSA9IFFVRVJZX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkU7IAorICAgICAg
ICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IAorICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgUXVlcnkgKnF1ZXJ5T2JqZWN0ID0gZ2V0UXVlcnkocXVl
cnksIHRydWUsIHRhcmdldCk7CisKKyAgICAvLyBjaGVjayB0aGF0IG5hbWUgd2FzIG9idGFpbmVk
IHdpdGggZ2xHZW5RdWVyaWVzCisgICAgaWYgKCFxdWVyeU9iamVjdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAgIC8v
IGNoZWNrIGZvciB0eXBlIG1pc21hdGNoCisgICAgaWYgKHF1ZXJ5T2JqZWN0LT5nZXRUeXBlKCkg
IT0gdGFyZ2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgfQorCisgICAgLy8gc2V0IHF1ZXJ5IGFzIGFjdGl2ZSBmb3Igc3BlY2lm
aWVkIHRhcmdldAorICAgIG1TdGF0ZS5hY3RpdmVRdWVyeVtxVHlwZV0uc2V0KHF1ZXJ5T2JqZWN0
KTsKKworICAgIC8vIGJlZ2luIHF1ZXJ5CisgICAgcXVlcnlPYmplY3QtPmJlZ2luKCk7Cit9CisK
K3ZvaWQgQ29udGV4dDo6ZW5kUXVlcnkoR0xlbnVtIHRhcmdldCkKK3sKKyAgICBRdWVyeVR5cGUg
cVR5cGU7CisKKyAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICB7CisgICAgICBjYXNlIEdMX0FOWV9T
QU1QTEVTX1BBU1NFRF9FWFQ6IAorICAgICAgICBxVHlwZSA9IFFVRVJZX0FOWV9TQU1QTEVTX1BB
U1NFRDsgCisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURf
Q09OU0VSVkFUSVZFX0VYVDogCisgICAgICAgIHFUeXBlID0gUVVFUllfQU5ZX1NBTVBMRVNfUEFT
U0VEX0NPTlNFUlZBVElWRTsgCisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogCisgICAg
ICAgIEFTU0VSVChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBRdWVyeSAq
cXVlcnlPYmplY3QgPSBtU3RhdGUuYWN0aXZlUXVlcnlbcVR5cGVdLmdldCgpOworCisgICAgaWYg
KHF1ZXJ5T2JqZWN0ID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICBxdWVyeU9iamVjdC0+ZW5kKCk7CisK
KyAgICBtU3RhdGUuYWN0aXZlUXVlcnlbcVR5cGVdLnNldChOVUxMKTsKK30KKwordm9pZCBDb250
ZXh0OjpzZXRGcmFtZWJ1ZmZlclplcm8oRnJhbWVidWZmZXIgKmJ1ZmZlcikKK3sKKyAgICBkZWxl
dGUgbUZyYW1lYnVmZmVyTWFwWzBdOworICAgIG1GcmFtZWJ1ZmZlck1hcFswXSA9IGJ1ZmZlcjsK
KyAgICBpZiAobVN0YXRlLmRyYXdGcmFtZWJ1ZmZlciA9PSAwKQorICAgIHsKKyAgICAgICAgbUJv
dW5kRHJhd0ZyYW1lYnVmZmVyID0gYnVmZmVyOworICAgIH0KK30KKwordm9pZCBDb250ZXh0Ojpz
ZXRSZW5kZXJidWZmZXJTdG9yYWdlKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcykKK3sKKyAgICBSZW5kZXJidWZmZXJT
dG9yYWdlICpyZW5kZXJidWZmZXIgPSBOVUxMOworICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQp
CisgICAgeworICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQxNjoKKyAgICAgICAgcmVuZGVy
YnVmZmVyID0gbmV3IGdsOjpEZXB0aGJ1ZmZlcihtUmVuZGVyZXIsIHdpZHRoLCBoZWlnaHQsIHNh
bXBsZXMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICBjYXNl
IEdMX1JHQjVfQTE6CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2UgR0xfUkdCOF9P
RVM6CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzoKKyAgICAgICAgcmVuZGVyYnVmZmVyID0gbmV3
IGdsOjpDb2xvcmJ1ZmZlcihtUmVuZGVyZXIsd2lkdGgsIGhlaWdodCwgaW50ZXJuYWxmb3JtYXQs
IHNhbXBsZXMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9JTkRFWDg6
CisgICAgICAgIHJlbmRlcmJ1ZmZlciA9IG5ldyBnbDo6U3RlbmNpbGJ1ZmZlcihtUmVuZGVyZXIs
IHdpZHRoLCBoZWlnaHQsIHNhbXBsZXMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
REVQVEgyNF9TVEVOQ0lMOF9PRVM6CisgICAgICAgIHJlbmRlcmJ1ZmZlciA9IG5ldyBnbDo6RGVw
dGhTdGVuY2lsYnVmZmVyKG1SZW5kZXJlciwgd2lkdGgsIGhlaWdodCwgc2FtcGxlcyk7CisgICAg
ICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsgcmV0dXJu
OworICAgIH0KKworICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyT2JqZWN0ID0gbVN0YXRl
LnJlbmRlcmJ1ZmZlci5nZXQoKTsKKyAgICByZW5kZXJidWZmZXJPYmplY3QtPnNldFN0b3JhZ2Uo
cmVuZGVyYnVmZmVyKTsKK30KKworRnJhbWVidWZmZXIgKkNvbnRleHQ6OmdldEZyYW1lYnVmZmVy
KHVuc2lnbmVkIGludCBoYW5kbGUpCit7CisgICAgRnJhbWVidWZmZXJNYXA6Oml0ZXJhdG9yIGZy
YW1lYnVmZmVyID0gbUZyYW1lYnVmZmVyTWFwLmZpbmQoaGFuZGxlKTsKKworICAgIGlmIChmcmFt
ZWJ1ZmZlciA9PSBtRnJhbWVidWZmZXJNYXAuZW5kKCkpCisgICAgeworICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZyYW1lYnVmZmVy
LT5zZWNvbmQ7CisgICAgfQorfQorCitGZW5jZSAqQ29udGV4dDo6Z2V0RmVuY2UodW5zaWduZWQg
aW50IGhhbmRsZSkKK3sKKyAgICBGZW5jZU1hcDo6aXRlcmF0b3IgZmVuY2UgPSBtRmVuY2VNYXAu
ZmluZChoYW5kbGUpOworCisgICAgaWYgKGZlbmNlID09IG1GZW5jZU1hcC5lbmQoKSkKKyAgICB7
CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBy
ZXR1cm4gZmVuY2UtPnNlY29uZDsKKyAgICB9Cit9CisKK1F1ZXJ5ICpDb250ZXh0OjpnZXRRdWVy
eSh1bnNpZ25lZCBpbnQgaGFuZGxlLCBib29sIGNyZWF0ZSwgR0xlbnVtIHR5cGUpCit7CisgICAg
UXVlcnlNYXA6Oml0ZXJhdG9yIHF1ZXJ5ID0gbVF1ZXJ5TWFwLmZpbmQoaGFuZGxlKTsKKworICAg
IGlmIChxdWVyeSA9PSBtUXVlcnlNYXAuZW5kKCkpCisgICAgeworICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKCFxdWVyeS0+c2Vjb25kICYm
IGNyZWF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcXVlcnktPnNlY29uZCA9IG5ldyBRdWVy
eShtUmVuZGVyZXIsIHR5cGUsIGhhbmRsZSk7CisgICAgICAgICAgICBxdWVyeS0+c2Vjb25kLT5h
ZGRSZWYoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcXVlcnktPnNlY29uZDsKKyAgICB9
Cit9CisKK0J1ZmZlciAqQ29udGV4dDo6Z2V0QXJyYXlCdWZmZXIoKQoreworICAgIHJldHVybiBt
U3RhdGUuYXJyYXlCdWZmZXIuZ2V0KCk7Cit9CisKK0J1ZmZlciAqQ29udGV4dDo6Z2V0RWxlbWVu
dEFycmF5QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZlci5n
ZXQoKTsKK30KKworUHJvZ3JhbUJpbmFyeSAqQ29udGV4dDo6Z2V0Q3VycmVudFByb2dyYW1CaW5h
cnkoKQoreworICAgIHJldHVybiBtQ3VycmVudFByb2dyYW1CaW5hcnkuZ2V0KCk7Cit9CisKK1Rl
eHR1cmUyRCAqQ29udGV4dDo6Z2V0VGV4dHVyZTJEKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VGV4dHVyZTJEKj4oZ2V0U2FtcGxlclRleHR1cmUobVN0YXRlLmFjdGl2ZVNhbXBsZXIsIFRF
WFRVUkVfMkQpKTsKK30KKworVGV4dHVyZUN1YmVNYXAgKkNvbnRleHQ6OmdldFRleHR1cmVDdWJl
TWFwKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dHVyZUN1YmVNYXAqPihnZXRTYW1w
bGVyVGV4dHVyZShtU3RhdGUuYWN0aXZlU2FtcGxlciwgVEVYVFVSRV9DVUJFKSk7Cit9CisKK1Rl
eHR1cmUgKkNvbnRleHQ6OmdldFNhbXBsZXJUZXh0dXJlKHVuc2lnbmVkIGludCBzYW1wbGVyLCBU
ZXh0dXJlVHlwZSB0eXBlKQoreworICAgIEdMdWludCB0ZXhpZCA9IG1TdGF0ZS5zYW1wbGVyVGV4
dHVyZVt0eXBlXVtzYW1wbGVyXS5pZCgpOworCisgICAgaWYgKHRleGlkID09IDApICAgLy8gU3Bl
Y2lhbCBjYXNlOiAwIHJlZmVycyB0byBkaWZmZXJlbnQgaW5pdGlhbCB0ZXh0dXJlcyBiYXNlZCBv
biB0aGUgdGFyZ2V0CisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAg
ICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgIGNhc2UgVEVYVFVSRV8y
RDogcmV0dXJuIG1UZXh0dXJlMkRaZXJvLmdldCgpOworICAgICAgICAgIGNhc2UgVEVYVFVSRV9D
VUJFOiByZXR1cm4gbVRleHR1cmVDdWJlTWFwWmVyby5nZXQoKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBtU3RhdGUuc2FtcGxlclRleHR1cmVbdHlwZV1bc2FtcGxlcl0uZ2V0KCk7
Cit9CisKK2Jvb2wgQ29udGV4dDo6Z2V0Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4g
KnBhcmFtcykKK3sKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgIGNhc2UgR0xfU0hB
REVSX0NPTVBJTEVSOiAgICAgICAgICAgKnBhcmFtcyA9IEdMX1RSVUU7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVS
VDogICAgKnBhcmFtcyA9IG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZUludmVydDsgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfREVQVEhfV1JJVEVNQVNLOiAgICAgICAgICAgKnBhcmFtcyA9IG1T
dGF0ZS5kZXB0aFN0ZW5jaWwuZGVwdGhNYXNrOyAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
Q09MT1JfV1JJVEVNQVNLOgorICAgICAgICBwYXJhbXNbMF0gPSBtU3RhdGUuYmxlbmQuY29sb3JN
YXNrUmVkOworICAgICAgICBwYXJhbXNbMV0gPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrR3JlZW47
CisgICAgICAgIHBhcmFtc1syXSA9IG1TdGF0ZS5ibGVuZC5jb2xvck1hc2tCbHVlOworICAgICAg
ICBwYXJhbXNbM10gPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQWxwaGE7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0
YXRlLnJhc3Rlcml6ZXIuY3VsbEZhY2U7ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9Q
T0xZR09OX09GRlNFVF9GSUxMOiAgICAgICAqcGFyYW1zID0gbVN0YXRlLnJhc3Rlcml6ZXIucG9s
eWdvbk9mZnNldEZpbGw7IGJyZWFrOworICAgICAgY2FzZSBHTF9TQU1QTEVfQUxQSEFfVE9fQ09W
RVJBR0U6ICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLnNhbXBsZUFscGhhVG9Db3ZlcmFnZTsgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9TQU1QTEVfQ09WRVJBR0U6ICAgICAgICAgICAqcGFyYW1zID0g
bVN0YXRlLnNhbXBsZUNvdmVyYWdlOyAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9TQ0lTU09SX1RFU1Q6ICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnNjaXNzb3JUZXN0
OyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lMX1RFU1Q6ICAg
ICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsVGVzdDsgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9ERVBUSF9URVNUOiAgICAgICAgICAgICAgICAqcGFyYW1z
ID0gbVN0YXRlLmRlcHRoU3RlbmNpbC5kZXB0aFRlc3Q7ICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9CTEVORDogICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLmJs
ZW5kOyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9ESVRIRVI6ICAgICAg
ICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLmRpdGhlcjsgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1NfRVhUOiAqcGFy
YW1zID0gbVJvYnVzdEFjY2VzcyA/IEdMX1RSVUUgOiBHTF9GQUxTRTsgIGJyZWFrOworICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIENvbnRleHQ6OmdldEZsb2F0dihHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBh
cmFtcykKK3sKKyAgICAvLyBQbGVhc2Ugbm90ZTogREVQVEhfQ0xFQVJfVkFMVUUgaXMgaW5jbHVk
ZWQgaW4gb3VyIGludGVybmFsIGdldEZsb2F0diBpbXBsZW1lbnRhdGlvbgorICAgIC8vIGJlY2F1
c2UgaXQgaXMgc3RvcmVkIGFzIGEgZmxvYXQsIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCB0aGUgR0wg
RVMgMi4wIHNwZWMgbmFtZXMKKyAgICAvLyBHZXRJbnRlZ2VydiBhcyBpdHMgbmF0aXZlIHF1ZXJ5
IGZ1bmN0aW9uLiBBcyBpdCB3b3VsZCByZXF1aXJlIGNvbnZlcnNpb24gaW4gYW55CisgICAgLy8g
Y2FzZSwgdGhpcyBzaG91bGQgbWFrZSBubyBkaWZmZXJlbmNlIHRvIHRoZSBjYWxsaW5nIGFwcGxp
Y2F0aW9uLgorICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgY2FzZSBHTF9MSU5FX1dJ
RFRIOiAgICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUubGluZVdpZHRoOyAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVF
OiAgICAqcGFyYW1zID0gbVN0YXRlLnNhbXBsZUNvdmVyYWdlVmFsdWU7ICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX0RFUFRIX0NMRUFSX1ZBTFVFOiAgICAgICAgKnBhcmFtcyA9
IG1TdGF0ZS5kZXB0aENsZWFyVmFsdWU7ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9QT0xZR09OX09GRlNFVF9GQUNUT1I6ICAgICpwYXJhbXMgPSBtU3RhdGUucmFzdGVy
aXplci5wb2x5Z29uT2Zmc2V0RmFjdG9yOyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUE9MWUdP
Tl9PRkZTRVRfVU5JVFM6ICAgICAqcGFyYW1zID0gbVN0YXRlLnJhc3Rlcml6ZXIucG9seWdvbk9m
ZnNldFVuaXRzOyAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FMSUFTRURfTElORV9XSURUSF9S
QU5HRToKKyAgICAgICAgcGFyYW1zWzBdID0gZ2w6OkFMSUFTRURfTElORV9XSURUSF9SQU5HRV9N
SU47CisgICAgICAgIHBhcmFtc1sxXSA9IGdsOjpBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VfTUFY
OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdF
OgorICAgICAgICBwYXJhbXNbMF0gPSBnbDo6QUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFX01JTjsK
KyAgICAgICAgcGFyYW1zWzFdID0gZ2V0TWF4aW11bVBvaW50U2l6ZSgpOworICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfREVQVEhfUkFOR0U6CisgICAgICAgIHBhcmFtc1swXSA9IG1TdGF0
ZS56TmVhcjsKKyAgICAgICAgcGFyYW1zWzFdID0gbVN0YXRlLnpGYXI7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9DT0xPUl9DTEVBUl9WQUxVRToKKyAgICAgICAgcGFyYW1zWzBdID0g
bVN0YXRlLmNvbG9yQ2xlYXJWYWx1ZS5yZWQ7CisgICAgICAgIHBhcmFtc1sxXSA9IG1TdGF0ZS5j
b2xvckNsZWFyVmFsdWUuZ3JlZW47CisgICAgICAgIHBhcmFtc1syXSA9IG1TdGF0ZS5jb2xvckNs
ZWFyVmFsdWUuYmx1ZTsKKyAgICAgICAgcGFyYW1zWzNdID0gbVN0YXRlLmNvbG9yQ2xlYXJWYWx1
ZS5hbHBoYTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX0NPTE9SOgorICAg
ICAgICBwYXJhbXNbMF0gPSBtU3RhdGUuYmxlbmRDb2xvci5yZWQ7CisgICAgICAgIHBhcmFtc1sx
XSA9IG1TdGF0ZS5ibGVuZENvbG9yLmdyZWVuOworICAgICAgICBwYXJhbXNbMl0gPSBtU3RhdGUu
YmxlbmRDb2xvci5ibHVlOworICAgICAgICBwYXJhbXNbM10gPSBtU3RhdGUuYmxlbmRDb2xvci5h
bHBoYTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9URVhUVVJFX01BWF9BTklT
T1RST1BZX0VYVDoKKyAgICAgICAgaWYgKCFzdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5
KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICAqcGFyYW1zID0gbU1heFRleHR1cmVBbmlzb3Ryb3B5OworICAgICAgICBicmVhazsKKyAg
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBDb250ZXh0OjpnZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIEdMaW50
ICpwYXJhbXMpCit7CisgICAgaWYgKHBuYW1lID49IEdMX0RSQVdfQlVGRkVSMF9FWFQgJiYgcG5h
bWUgPD0gR0xfRFJBV19CVUZGRVIxNV9FWFQpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQg
Y29sb3JBdHRhY2htZW50ID0gKHBuYW1lIC0gR0xfRFJBV19CVUZGRVIwX0VYVCk7CisKKyAgICAg
ICAgaWYgKGNvbG9yQXR0YWNobWVudCA+PSBtUmVuZGVyZXItPmdldE1heFJlbmRlclRhcmdldHMo
KSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gcmV0dXJuIHRydWUgdG8gc3RvcCBmdXJ0aGVy
IG9wZXJhdGlvbiBpbiB0aGUgcGFyZW50IGNhbGwKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgRnJh
bWVidWZmZXIgKmZyYW1lYnVmZmVyID0gZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisKKyAgICAgICAg
KnBhcmFtcyA9IGZyYW1lYnVmZmVyLT5nZXREcmF3QnVmZmVyU3RhdGUoY29sb3JBdHRhY2htZW50
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gUGxlYXNlIG5vdGU6IERF
UFRIX0NMRUFSX1ZBTFVFIGlzIG5vdCBpbmNsdWRlZCBpbiBvdXIgaW50ZXJuYWwgZ2V0SW50ZWdl
cnYgaW1wbGVtZW50YXRpb24KKyAgICAvLyBiZWNhdXNlIGl0IGlzIHN0b3JlZCBhcyBhIGZsb2F0
LCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgdGhlIEdMIEVTIDIuMCBzcGVjIG5hbWVzCisgICAgLy8g
R2V0SW50ZWdlcnYgYXMgaXRzIG5hdGl2ZSBxdWVyeSBmdW5jdGlvbi4gQXMgaXQgd291bGQgcmVx
dWlyZSBjb252ZXJzaW9uIGluIGFueQorICAgIC8vIGNhc2UsIHRoaXMgc2hvdWxkIG1ha2Ugbm8g
ZGlmZmVyZW5jZSB0byB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4gWW91IG1heSBmaW5kIGl0IGlu
IAorICAgIC8vIENvbnRleHQ6OmdldEZsb2F0di4KKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsK
KyAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9BVFRSSUJTOiAgICAgICAgICAgICAgICpwYXJhbXMg
PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzogICAgICAgKnBhcmFtcyA9IG1SZW5kZXJl
ci0+Z2V0TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMoKTsgYnJlYWs7CisgICAgICBjYXNlIEdMX01B
WF9WQVJZSU5HX1ZFQ1RPUlM6ICAgICAgICAgICAgICAqcGFyYW1zID0gbVJlbmRlcmVyLT5nZXRN
YXhWYXJ5aW5nVmVjdG9ycygpOyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVE
X1RFWFRVUkVfSU1BR0VfVU5JVFM6ICpwYXJhbXMgPSBtUmVuZGVyZXItPmdldE1heENvbWJpbmVk
VGV4dHVyZUltYWdlVW5pdHMoKTsgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9WRVJURVhfVEVY
VFVSRV9JTUFHRV9VTklUUzogICAqcGFyYW1zID0gbVJlbmRlcmVyLT5nZXRNYXhWZXJ0ZXhUZXh0
dXJlSW1hZ2VVbml0cygpOyBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX1RFWFRVUkVfSU1BR0Vf
VU5JVFM6ICAgICAgICAgICpwYXJhbXMgPSBnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7ICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JT
OiAgICAgKnBhcmFtcyA9IG1SZW5kZXJlci0+Z2V0TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycygp
OyBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFOiAgICAgICAgICAg
ICpwYXJhbXMgPSBnZXRNYXhpbXVtUmVuZGVyYnVmZmVyRGltZW5zaW9uKCk7ICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFNfRVhUOiAgICAgICAgKnBhcmFtcyA9
IG1SZW5kZXJlci0+Z2V0TWF4UmVuZGVyVGFyZ2V0cygpOyAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX01BWF9EUkFXX0JVRkZFUlNfRVhUOiAgICAgICAgICAgICAqcGFyYW1zID0gbVJlbmRlcmVy
LT5nZXRNYXhSZW5kZXJUYXJnZXRzKCk7ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTlVNX1NI
QURFUl9CSU5BUllfRk9STUFUUzogICAgICAgICpwYXJhbXMgPSAwOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TSEFERVJfQklOQVJZX0ZP
Uk1BVFM6ICAgICAgLyogbm8gc2hhZGVyIGJpbmFyeSBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQgKi8g
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HOiAgICAg
ICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmFycmF5QnVmZmVyLmlkKCk7ICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORzogICAgICpw
YXJhbXMgPSBtU3RhdGUuZWxlbWVudEFycmF5QnVmZmVyLmlkKCk7ICAgICAgIGJyZWFrOworICAg
ICAgLy9jYXNlIEdMX0ZSQU1FQlVGRkVSX0JJTkRJTkc6ICAgICAgICAgICAgLy8gbm93IGVxdWl2
YWxlbnQgdG8gR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFCisgICAgICBjYXNlIEdM
X0RSQVdfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRTogICAqcGFyYW1zID0gbVN0YXRlLmRyYXdG
cmFtZWJ1ZmZlcjsgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkVBRF9GUkFN
RUJVRkZFUl9CSU5ESU5HX0FOR0xFOiAgICpwYXJhbXMgPSBtU3RhdGUucmVhZEZyYW1lYnVmZmVy
OyAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfQklORElO
RzogICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5yZW5kZXJidWZmZXIuaWQoKTsgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0NVUlJFTlRfUFJPR1JBTTogICAgICAgICAgICAg
ICAgICAqcGFyYW1zID0gbVN0YXRlLmN1cnJlbnRQcm9ncmFtOyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfUEFDS19BTElHTk1FTlQ6ICAgICAgICAgICAgICAgICAgICpwYXJh
bXMgPSBtU3RhdGUucGFja0FsaWdubWVudDsgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9QQUNLX1JFVkVSU0VfUk9XX09SREVSX0FOR0xFOiAgICAgKnBhcmFtcyA9IG1TdGF0
ZS5wYWNrUmV2ZXJzZVJvd09yZGVyOyAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1VO
UEFDS19BTElHTk1FTlQ6ICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnVucGFja0Fs
aWdubWVudDsgICAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfR0VORVJBVEVfTUlQ
TUFQX0hJTlQ6ICAgICAgICAgICAgICpwYXJhbXMgPSBtU3RhdGUuZ2VuZXJhdGVNaXBtYXBIaW50
OyAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZB
VElWRV9ISU5UX09FUzogKnBhcmFtcyA9IG1TdGF0ZS5mcmFnbWVudFNoYWRlckRlcml2YXRpdmVI
aW50OyBicmVhazsKKyAgICAgIGNhc2UgR0xfQUNUSVZFX1RFWFRVUkU6ICAgICAgICAgICAgICAg
ICAgICpwYXJhbXMgPSAobVN0YXRlLmFjdGl2ZVNhbXBsZXIgKyBHTF9URVhUVVJFMCk7IGJyZWFr
OworICAgICAgY2FzZSBHTF9TVEVOQ0lMX0ZVTkM6ICAgICAgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEZ1bmM7ICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9TVEVOQ0lMX1JFRjogICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9
IG1TdGF0ZS5zdGVuY2lsUmVmOyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9TVEVOQ0lMX1ZBTFVFX01BU0s6ICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1T
dGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbE1hc2s7ICAgICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9TVEVOQ0lMX0JBQ0tfRlVOQzogICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0
ZS5kZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tGdW5jOyAgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9TVEVOQ0lMX0JBQ0tfUkVGOiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5z
dGVuY2lsQmFja1JlZjsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSzogICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0
aFN0ZW5jaWwuc3RlbmNpbEJhY2tNYXNrOyAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9T
VEVOQ0lMX0ZBSUw6ICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0
ZW5jaWwuc3RlbmNpbEZhaWw7ICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVO
Q0lMX1BBU1NfREVQVEhfRkFJTDogICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5j
aWwuc3RlbmNpbFBhc3NEZXB0aEZhaWw7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lM
X1BBU1NfREVQVEhfUEFTUzogICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5jaWwu
c3RlbmNpbFBhc3NEZXB0aFBhc3M7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JB
Q0tfRkFJTDogICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3Rl
bmNpbEJhY2tGYWlsOyAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tf
UEFTU19ERVBUSF9GQUlMOiAgICAgKnBhcmFtcyA9IG1TdGF0ZS5kZXB0aFN0ZW5jaWwuc3RlbmNp
bEJhY2tQYXNzRGVwdGhGYWlsOyBicmVhazsKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1BB
U1NfREVQVEhfUEFTUzogICAgICpwYXJhbXMgPSBtU3RhdGUuZGVwdGhTdGVuY2lsLnN0ZW5jaWxC
YWNrUGFzc0RlcHRoUGFzczsgYnJlYWs7CisgICAgICBjYXNlIEdMX0RFUFRIX0ZVTkM6ICAgICAg
ICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmRlcHRoU3RlbmNpbC5kZXB0aEZ1bmM7
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX1NSQ19SR0I6ICAgICAg
ICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLnNvdXJjZUJsZW5kUkdCOyAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX1NSQ19BTFBIQTogICAgICAg
ICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLnNvdXJjZUJsZW5kQWxwaGE7ICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX0RTVF9SR0I6ICAgICAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLmRlc3RCbGVuZFJHQjsgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX0RTVF9BTFBIQTogICAgICAgICAgICAg
ICAgICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLmRlc3RCbGVuZEFscGhhOyAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX1JHQjogICAgICAgICAgICAg
ICAqcGFyYW1zID0gbVN0YXRlLmJsZW5kLmJsZW5kRXF1YXRpb25SR0I7ICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBOiAgICAgICAgICAgICAq
cGFyYW1zID0gbVN0YXRlLmJsZW5kLmJsZW5kRXF1YXRpb25BbHBoYTsgICAgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX1NURU5DSUxfV1JJVEVNQVNLOiAgICAgICAgICAgICAgICAqcGFy
YW1zID0gbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsV3JpdGVtYXNrOyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19XUklURU1BU0s6ICAgICAgICAgICAqcGFyYW1z
ID0gbVN0YXRlLmRlcHRoU3RlbmNpbC5zdGVuY2lsQmFja1dyaXRlbWFzazsgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX1NURU5DSUxfQ0xFQVJfVkFMVUU6ICAgICAgICAgICAgICAqcGFyYW1zID0g
bVN0YXRlLnN0ZW5jaWxDbGVhclZhbHVlOyAgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfU1VCUElYRUxfQklUUzogICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSA0OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfVEVY
VFVSRV9TSVpFOiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGdldE1heGltdW1UZXh0dXJlRGlt
ZW5zaW9uKCk7ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9DVUJFX01BUF9URVhU
VVJFX1NJWkU6ICAgICAgICAqcGFyYW1zID0gZ2V0TWF4aW11bUN1YmVUZXh0dXJlRGltZW5zaW9u
KCk7ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JN
QVRTOiAgIAorICAgICAgICBwYXJhbXNbMF0gPSBtTnVtQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRz
OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX1NBTVBMRVNfQU5HTEU6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIEdMc2l6ZWkgbWF4U2FtcGxlcyA9IGdldE1heFN1cHBvcnRlZFNh
bXBsZXMoKTsKKyAgICAgICAgICAgIGlmIChtYXhTYW1wbGVzICE9IDApCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1heFNhbXBsZXM7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgY2FzZSBHTF9TQU1QTEVfQlVGRkVSUzogICAgICAgICAgICAgICAgICAgCisgICAgICBjYXNl
IEdMX1NBTVBMRVM6CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJh
bWVidWZmZXIgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIGlmIChmcmFtZWJ1
ZmZlci0+Y29tcGxldGVuZXNzKCkgPT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRV9CVUZGRVJTOgorICAgICAgICAgICAg
ICAgICAgICBpZiAoZnJhbWVidWZmZXItPmdldFNhbXBsZXMoKSAhPSAwKQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSAwOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
Y2FzZSBHTF9TQU1QTEVTOgorICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gZnJhbWVidWZm
ZXItPmdldFNhbXBsZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAqcGFyYW1zID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9U
WVBFOgorICAgICAgY2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVDoKKyAg
ICAgICAgeworICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgdHlwZTsKKyAgICAgICAgICAgIGlm
IChnZXRDdXJyZW50UmVhZEZvcm1hdFR5cGUoJmZvcm1hdCwgJnR5cGUpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGlmIChwbmFtZSA9PSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9S
RUFEX0ZPUk1BVCkKKyAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGZvcm1hdDsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0eXBlOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhf
VklFV1BPUlRfRElNUzoKKyAgICAgICAgeworICAgICAgICAgICAgcGFyYW1zWzBdID0gbU1heFZp
ZXdwb3J0RGltZW5zaW9uOworICAgICAgICAgICAgcGFyYW1zWzFdID0gbU1heFZpZXdwb3J0RGlt
ZW5zaW9uOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1RFWFRVUkVfRk9STUFUUzoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHN1cHBvcnRz
RFhUMVRleHR1cmVzKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKnBhcmFtcysr
ID0gR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDsKKyAgICAgICAgICAgICAgICAqcGFy
YW1zKysgPSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChzdXBwb3J0c0RYVDNUZXh0dXJlcygpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICpwYXJhbXMrKyA9IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNf
QU5HTEU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3VwcG9ydHNEWFQ1VGV4dHVy
ZXMoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAqcGFyYW1zKysgPSBHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9WSUVXUE9SVDoKKyAgICAgICAgcGFyYW1zWzBd
ID0gbVN0YXRlLnZpZXdwb3J0Lng7CisgICAgICAgIHBhcmFtc1sxXSA9IG1TdGF0ZS52aWV3cG9y
dC55OworICAgICAgICBwYXJhbXNbMl0gPSBtU3RhdGUudmlld3BvcnQud2lkdGg7CisgICAgICAg
IHBhcmFtc1szXSA9IG1TdGF0ZS52aWV3cG9ydC5oZWlnaHQ7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9TQ0lTU09SX0JPWDoKKyAgICAgICAgcGFyYW1zWzBdID0gbVN0YXRlLnNjaXNz
b3IueDsKKyAgICAgICAgcGFyYW1zWzFdID0gbVN0YXRlLnNjaXNzb3IueTsKKyAgICAgICAgcGFy
YW1zWzJdID0gbVN0YXRlLnNjaXNzb3Iud2lkdGg7CisgICAgICAgIHBhcmFtc1szXSA9IG1TdGF0
ZS5zY2lzc29yLmhlaWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0NVTExfRkFD
RV9NT0RFOiAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnJhc3Rlcml6ZXIuY3Vs
bE1vZGU7ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZST05UX0ZBQ0U6ICAgICAgICAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnJhc3Rlcml6ZXIuZnJvbnRGYWNlOyAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX1JFRF9CSVRTOgorICAgICAgY2FzZSBHTF9HUkVFTl9CSVRTOgorICAgICAg
Y2FzZSBHTF9CTFVFX0JJVFM6CisgICAgICBjYXNlIEdMX0FMUEhBX0JJVFM6CisgICAgICAgIHsK
KyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBnZXREcmF3RnJhbWVi
dWZmZXIoKTsKKyAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVyID0gZnJh
bWVidWZmZXItPmdldEZpcnN0Q29sb3JidWZmZXIoKTsKKworICAgICAgICAgICAgaWYgKGNvbG9y
YnVmZmVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SRURfQklUUzogICAq
cGFyYW1zID0gY29sb3JidWZmZXItPmdldFJlZFNpemUoKTsgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgIGNhc2UgR0xfR1JFRU5fQklUUzogKnBhcmFtcyA9IGNvbG9yYnVmZmVyLT5nZXRH
cmVlblNpemUoKTsgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX0JMVUVfQklU
UzogICpwYXJhbXMgPSBjb2xvcmJ1ZmZlci0+Z2V0Qmx1ZVNpemUoKTsgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgY2FzZSBHTF9BTFBIQV9CSVRTOiAqcGFyYW1zID0gY29sb3JidWZmZXIt
PmdldEFscGhhU2l6ZSgpOyAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKnBh
cmFtcyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0RFUFRIX0JJVFM6CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXIgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIGds
OjpSZW5kZXJidWZmZXIgKmRlcHRoYnVmZmVyID0gZnJhbWVidWZmZXItPmdldERlcHRoYnVmZmVy
KCk7CisKKyAgICAgICAgICAgIGlmIChkZXB0aGJ1ZmZlcikKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAqcGFyYW1zID0gZGVwdGhidWZmZXItPmdldERlcHRoU2l6ZSgpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICpwYXJhbXMgPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JJVFM6CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpG
cmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICAgICAg
ICAgIGdsOjpSZW5kZXJidWZmZXIgKnN0ZW5jaWxidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0U3Rl
bmNpbGJ1ZmZlcigpOworCisgICAgICAgICAgICBpZiAoc3RlbmNpbGJ1ZmZlcikKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gc3RlbmNpbGJ1ZmZlci0+Z2V0U3RlbmNp
bFNpemUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAqcGFyYW1zID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HXzJEOgorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAobVN0YXRlLmFjdGl2ZVNhbXBsZXIgPiBtUmVuZGVyZXItPmdl
dE1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKSAtIDEpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICpwYXJhbXMg
PSBtU3RhdGUuc2FtcGxlclRleHR1cmVbVEVYVFVSRV8yRF1bbVN0YXRlLmFjdGl2ZVNhbXBsZXJd
LmlkKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RFWFRVUkVf
QklORElOR19DVUJFX01BUDoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1TdGF0ZS5hY3Rp
dmVTYW1wbGVyID4gbVJlbmRlcmVyLT5nZXRNYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCkg
LSAxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLnNhbXBsZXJUZXh0dXJlW1RFWFRVUkVf
Q1VCRV1bbVN0YXRlLmFjdGl2ZVNhbXBsZXJdLmlkKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQ6CisgICAg
ICAgICpwYXJhbXMgPSBtUmVzZXRTdHJhdGVneTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09FUzoKKyAgICAgICAgKnBhcmFtcyA9IDE7
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09F
UzoKKyAgICAgICAgKnBhcmFtcyA9IEdMX1BST0dSQU1fQklOQVJZX0FOR0xFOworICAgICAgICBi
cmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDb250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlckluZm8o
R0xlbnVtIHBuYW1lLCBHTGVudW0gKnR5cGUsIHVuc2lnbmVkIGludCAqbnVtUGFyYW1zKQorewor
ICAgIGlmIChwbmFtZSA+PSBHTF9EUkFXX0JVRkZFUjBfRVhUICYmIHBuYW1lIDw9IEdMX0RSQVdf
QlVGRkVSMTVfRVhUKQorICAgIHsKKyAgICAgICAgKnR5cGUgPSBHTF9JTlQ7CisgICAgICAgICpu
dW1QYXJhbXMgPSAxOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBQbGVh
c2Ugbm90ZTogdGhlIHF1ZXJ5IHR5cGUgcmV0dXJuZWQgZm9yIERFUFRIX0NMRUFSX1ZBTFVFIGlu
IHRoaXMgaW1wbGVtZW50YXRpb24KKyAgICAvLyBpcyBGTE9BVCByYXRoZXIgdGhhbiBJTlQsIGFz
IHdvdWxkIGJlIHN1Z2dlc3RlZCBieSB0aGUgR0wgRVMgMi4wIHNwZWMuIFRoaXMgaXMgZHVlCisg
ICAgLy8gdG8gdGhlIGZhY3QgdGhhdCBpdCBpcyBzdG9yZWQgaW50ZXJuYWxseSBhcyBhIGZsb2F0
LCBhbmQgc28gd291bGQgcmVxdWlyZSBjb252ZXJzaW9uCisgICAgLy8gaWYgcmV0dXJuZWQgZnJv
bSBDb250ZXh0OjpnZXRJbnRlZ2Vydi4gU2luY2UgdGhpcyBjb252ZXJzaW9uIGlzIGFscmVhZHkg
aW1wbGVtZW50ZWQgCisgICAgLy8gaW4gdGhlIGNhc2UgdGhhdCBvbmUgY2FsbHMgZ2xHZXRJbnRl
Z2VydiB0byByZXRyaWV2ZSBhIGZsb2F0LXR5cGVkIHN0YXRlIHZhcmlhYmxlLCB3ZQorICAgIC8v
IHBsYWNlIERFUFRIX0NMRUFSX1ZBTFVFIHdpdGggdGhlIGZsb2F0cy4gVGhpcyBzaG91bGQgbWFr
ZSBubyBkaWZmZXJlbmNlIHRvIHRoZSBjYWxsaW5nCisgICAgLy8gYXBwbGljYXRpb24uCisgICAg
c3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfVEVYVFVSRV9G
T1JNQVRTOgorICAgICAgICB7CisgICAgICAgICAgICAqdHlwZSA9IEdMX0lOVDsKKyAgICAgICAg
ICAgICpudW1QYXJhbXMgPSBtTnVtQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRzOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TSEFERVJfQklOQVJZX0ZPUk1BVFM6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlID0gR0xfSU5UOworICAgICAgICAgICAgKm51bVBh
cmFtcyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9W
RVJURVhfQVRUUklCUzoKKyAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6
CisgICAgICBjYXNlIEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlM6CisgICAgICBjYXNlIEdMX01BWF9D
T01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTOgorICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX1RF
WFRVUkVfSU1BR0VfVU5JVFM6CisgICAgICBjYXNlIEdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRT
OgorICAgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOgorICAgICAgY2Fz
ZSBHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkU6CisgICAgICBjYXNlIEdMX01BWF9DT0xPUl9BVFRB
Q0hNRU5UU19FWFQ6CisgICAgICBjYXNlIEdMX01BWF9EUkFXX0JVRkZFUlNfRVhUOgorICAgICAg
Y2FzZSBHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTOgorICAgICAgY2FzZSBHTF9OVU1fQ09N
UFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6CisgICAgICBjYXNlIEdMX0FSUkFZX0JVRkZFUl9CSU5E
SU5HOgorICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9CSU5ESU5HOgorICAgICAgY2FzZSBHTF9S
RU5ERVJCVUZGRVJfQklORElORzoKKyAgICAgIGNhc2UgR0xfQ1VSUkVOVF9QUk9HUkFNOgorICAg
ICAgY2FzZSBHTF9QQUNLX0FMSUdOTUVOVDoKKyAgICAgIGNhc2UgR0xfUEFDS19SRVZFUlNFX1JP
V19PUkRFUl9BTkdMRToKKyAgICAgIGNhc2UgR0xfVU5QQUNLX0FMSUdOTUVOVDoKKyAgICAgIGNh
c2UgR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQ6CisgICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NIQURF
Ul9ERVJJVkFUSVZFX0hJTlRfT0VTOgorICAgICAgY2FzZSBHTF9SRURfQklUUzoKKyAgICAgIGNh
c2UgR0xfR1JFRU5fQklUUzoKKyAgICAgIGNhc2UgR0xfQkxVRV9CSVRTOgorICAgICAgY2FzZSBH
TF9BTFBIQV9CSVRTOgorICAgICAgY2FzZSBHTF9ERVBUSF9CSVRTOgorICAgICAgY2FzZSBHTF9T
VEVOQ0lMX0JJVFM6CisgICAgICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkc6
CisgICAgICBjYXNlIEdMX0NVTExfRkFDRV9NT0RFOgorICAgICAgY2FzZSBHTF9GUk9OVF9GQUNF
OgorICAgICAgY2FzZSBHTF9BQ1RJVkVfVEVYVFVSRToKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9G
VU5DOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX1ZBTFVFX01BU0s6CisgICAgICBjYXNlIEdMX1NU
RU5DSUxfUkVGOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0ZBSUw6CisgICAgICBjYXNlIEdMX1NU
RU5DSUxfUEFTU19ERVBUSF9GQUlMOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX1BBU1NfREVQVEhf
UEFTUzoKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX0ZVTkM6CisgICAgICBjYXNlIEdMX1NU
RU5DSUxfQkFDS19WQUxVRV9NQVNLOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfUkVGOgor
ICAgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfRkFJTDoKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9C
QUNLX1BBU1NfREVQVEhfRkFJTDoKKyAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQ
VEhfUEFTUzoKKyAgICAgIGNhc2UgR0xfREVQVEhfRlVOQzoKKyAgICAgIGNhc2UgR0xfQkxFTkRf
U1JDX1JHQjoKKyAgICAgIGNhc2UgR0xfQkxFTkRfU1JDX0FMUEhBOgorICAgICAgY2FzZSBHTF9C
TEVORF9EU1RfUkdCOgorICAgICAgY2FzZSBHTF9CTEVORF9EU1RfQUxQSEE6CisgICAgICBjYXNl
IEdMX0JMRU5EX0VRVUFUSU9OX1JHQjoKKyAgICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJT05fQUxQ
SEE6CisgICAgICBjYXNlIEdMX1NURU5DSUxfV1JJVEVNQVNLOgorICAgICAgY2FzZSBHTF9TVEVO
Q0lMX0JBQ0tfV1JJVEVNQVNLOgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFOgor
ICAgICAgY2FzZSBHTF9TVUJQSVhFTF9CSVRTOgorICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9T
SVpFOgorICAgICAgY2FzZSBHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgorICAgICAgY2Fz
ZSBHTF9TQU1QTEVfQlVGRkVSUzoKKyAgICAgIGNhc2UgR0xfU0FNUExFUzoKKyAgICAgIGNhc2Ug
R0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFOgorICAgICAgY2FzZSBHTF9JTVBMRU1F
TlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVDoKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5H
XzJEOgorICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVA6CisgICAgICBjYXNl
IEdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQ6CisgICAgICBjYXNlIEdMX05VTV9Q
Uk9HUkFNX0JJTkFSWV9GT1JNQVRTX09FUzoKKyAgICAgIGNhc2UgR0xfUFJPR1JBTV9CSU5BUllf
Rk9STUFUU19PRVM6CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlID0gR0xfSU5UOworICAg
ICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX01BWF9TQU1QTEVTX0FOR0xFOgorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
Z2V0TWF4U3VwcG9ydGVkU2FtcGxlcygpICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgKnR5cGUgPSBHTF9JTlQ7CisgICAgICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9NQVhfVklFV1BPUlRfRElNUzoKKyAgICAgICAgeworICAgICAg
ICAgICAgKnR5cGUgPSBHTF9JTlQ7CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gMjsKKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVklFV1BPUlQ6CisgICAgICBjYXNl
IEdMX1NDSVNTT1JfQk9YOgorICAgICAgICB7CisgICAgICAgICAgICAqdHlwZSA9IEdMX0lOVDsK
KyAgICAgICAgICAgICpudW1QYXJhbXMgPSA0OworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9TSEFERVJfQ09NUElMRVI6CisgICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZF
UkFHRV9JTlZFUlQ6CisgICAgICBjYXNlIEdMX0RFUFRIX1dSSVRFTUFTSzoKKyAgICAgIGNhc2Ug
R0xfQ1VMTF9GQUNFOiAgICAgICAgICAgICAgICAvLyBDVUxMX0ZBQ0UgdGhyb3VnaCBESVRIRVIg
YXJlIG5hdHVyYWwgdG8gSXNFbmFibGVkLAorICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9G
SUxMOiAgICAgIC8vIGJ1dCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIEdldHtUeXBlfXYg
cXVlcmllcy4KKyAgICAgIGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOiAvLyBGb3Ig
dGhpcyBwdXJwb3NlLCB0aGV5IGFyZSB0cmVhdGVkIGhlcmUgYXMgYm9vbC1uYXR1cmFsCisgICAg
ICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFHRToKKyAgICAgIGNhc2UgR0xfU0NJU1NPUl9URVNUOgor
ICAgICAgY2FzZSBHTF9TVEVOQ0lMX1RFU1Q6CisgICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6Cisg
ICAgICBjYXNlIEdMX0JMRU5EOgorICAgICAgY2FzZSBHTF9ESVRIRVI6CisgICAgICBjYXNlIEdM
X0NPTlRFWFRfUk9CVVNUX0FDQ0VTU19FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgICp0eXBl
ID0gR0xfQk9PTDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9DT0xPUl9XUklURU1BU0s6CisgICAgICAgIHsKKyAg
ICAgICAgICAgICp0eXBlID0gR0xfQk9PTDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSA0Owor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9G
QUNUT1I6CisgICAgICBjYXNlIEdMX1BPTFlHT05fT0ZGU0VUX1VOSVRTOgorICAgICAgY2FzZSBH
TF9TQU1QTEVfQ09WRVJBR0VfVkFMVUU6CisgICAgICBjYXNlIEdMX0RFUFRIX0NMRUFSX1ZBTFVF
OgorICAgICAgY2FzZSBHTF9MSU5FX1dJRFRIOgorICAgICAgICB7CisgICAgICAgICAgICAqdHlw
ZSA9IEdMX0ZMT0FUOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRToKKyAg
ICAgIGNhc2UgR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFOgorICAgICAgY2FzZSBHTF9ERVBU
SF9SQU5HRToKKyAgICAgICAgeworICAgICAgICAgICAgKnR5cGUgPSBHTF9GTE9BVDsKKyAgICAg
ICAgICAgICpudW1QYXJhbXMgPSAyOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9DT0xPUl9DTEVBUl9WQUxVRToKKyAgICAgIGNhc2UgR0xfQkxFTkRfQ09MT1I6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgICp0eXBlID0gR0xfRkxPQVQ7CisgICAgICAgICAgICAqbnVt
UGFyYW1zID0gNDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFY
X1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOgorICAgICAgICBpZiAoIXN1cHBvcnRzVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcHkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgICAgICp0eXBlID0gR0xfRkxPQVQ7CisgICAgICAgICpudW1QYXJh
bXMgPSAxOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gQXBwbGllcyB0aGUgcmVu
ZGVyIHRhcmdldCBzdXJmYWNlLCBkZXB0aCBzdGVuY2lsIHN1cmZhY2UsIHZpZXdwb3J0IHJlY3Rh
bmdsZSBhbmQKKy8vIHNjaXNzb3IgcmVjdGFuZ2xlIHRvIHRoZSByZW5kZXJlcgorYm9vbCBDb250
ZXh0OjphcHBseVJlbmRlclRhcmdldChHTGVudW0gZHJhd01vZGUsIGJvb2wgaWdub3JlVmlld3Bv
cnQpCit7CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0gZ2V0RHJhd0ZyYW1l
YnVmZmVyKCk7CisKKyAgICBpZiAoIWZyYW1lYnVmZmVyT2JqZWN0IHx8IGZyYW1lYnVmZmVyT2Jq
ZWN0LT5jb21wbGV0ZW5lc3MoKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04s
IGZhbHNlKTsKKyAgICB9CisKKyAgICBtUmVuZGVyZXItPmFwcGx5UmVuZGVyVGFyZ2V0KGZyYW1l
YnVmZmVyT2JqZWN0KTsKKworICAgIGlmICghbVJlbmRlcmVyLT5zZXRWaWV3cG9ydChtU3RhdGUu
dmlld3BvcnQsIG1TdGF0ZS56TmVhciwgbVN0YXRlLnpGYXIsIGRyYXdNb2RlLCBtU3RhdGUucmFz
dGVyaXplci5mcm9udEZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9y
ZVZpZXdwb3J0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBt
UmVuZGVyZXItPnNldFNjaXNzb3JSZWN0YW5nbGUobVN0YXRlLnNjaXNzb3IsIG1TdGF0ZS5zY2lz
c29yVGVzdCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gQXBwbGllcyB0aGUgZml4ZWQt
ZnVuY3Rpb24gc3RhdGUgKGN1bGxpbmcsIGRlcHRoIHRlc3QsIGFscGhhIGJsZW5kaW5nLCBzdGVu
Y2lsaW5nLCBldGMpIHRvIHRoZSBEaXJlY3QzRCA5IGRldmljZQordm9pZCBDb250ZXh0OjphcHBs
eVN0YXRlKEdMZW51bSBkcmF3TW9kZSkKK3sKKyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJP
YmplY3QgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICBpbnQgc2FtcGxlcyA9IGZyYW1lYnVm
ZmVyT2JqZWN0LT5nZXRTYW1wbGVzKCk7CisKKyAgICBtU3RhdGUucmFzdGVyaXplci5wb2ludERy
YXdNb2RlID0gKGRyYXdNb2RlID09IEdMX1BPSU5UUyk7CisgICAgbVN0YXRlLnJhc3Rlcml6ZXIu
bXVsdGlTYW1wbGUgPSAoc2FtcGxlcyAhPSAwKTsKKyAgICBtUmVuZGVyZXItPnNldFJhc3Rlcml6
ZXJTdGF0ZShtU3RhdGUucmFzdGVyaXplcik7CisKKyAgICB1bnNpZ25lZCBpbnQgbWFzayA9IDA7
CisgICAgaWYgKG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZSkKKyAgICB7CisgICAgICAgIGlmIChtU3Rh
dGUuc2FtcGxlQ292ZXJhZ2VWYWx1ZSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGZsb2F0IHRocmVzaG9sZCA9IDAuNWY7CisKKyAgICAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgc2FtcGxlczsgKytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IG1hc2sgPDw9IDE7CisKKyAgICAgICAgICAgICAgICBpZiAoKGkgKyAxKSAqIG1TdGF0ZS5zYW1w
bGVDb3ZlcmFnZVZhbHVlID49IHRocmVzaG9sZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHRocmVzaG9sZCArPSAxLjBmOworICAgICAgICAgICAgICAgICAgICBtYXNr
IHw9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgaWYgKG1TdGF0ZS5zYW1wbGVDb3ZlcmFnZUludmVydCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbWFzayA9IH5tYXNrOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIG1hc2sgPSAweEZGRkZGRkZGOworICAgIH0KKyAgICBtUmVuZGVyZXItPnNldEJsZW5k
U3RhdGUobVN0YXRlLmJsZW5kLCBtU3RhdGUuYmxlbmRDb2xvciwgbWFzayk7CisKKyAgICBtUmVu
ZGVyZXItPnNldERlcHRoU3RlbmNpbFN0YXRlKG1TdGF0ZS5kZXB0aFN0ZW5jaWwsIG1TdGF0ZS5z
dGVuY2lsUmVmLCBtU3RhdGUuc3RlbmNpbEJhY2tSZWYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtU3RhdGUucmFzdGVyaXplci5mcm9udEZhY2UgPT0gR0xfQ0NXKTsKK30K
KworLy8gQXBwbGllcyB0aGUgc2hhZGVycyBhbmQgc2hhZGVyIGNvbnN0YW50cyB0byB0aGUgRGly
ZWN0M0QgOSBkZXZpY2UKK3ZvaWQgQ29udGV4dDo6YXBwbHlTaGFkZXJzKCkKK3sKKyAgICBQcm9n
cmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gZ2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKwor
ICAgIG1SZW5kZXJlci0+YXBwbHlTaGFkZXJzKHByb2dyYW1CaW5hcnkpOworICAgIAorICAgIHBy
b2dyYW1CaW5hcnktPmFwcGx5VW5pZm9ybXMoKTsKK30KKworLy8gQXBwbGllcyB0aGUgdGV4dHVy
ZXMgYW5kIHNhbXBsZXIgc3RhdGVzIHRvIHRoZSBEaXJlY3QzRCA5IGRldmljZQordm9pZCBDb250
ZXh0OjphcHBseVRleHR1cmVzKCkKK3sKKyAgICBhcHBseVRleHR1cmVzKFNBTVBMRVJfUElYRUwp
OworCisgICAgaWYgKG1TdXBwb3J0c1ZlcnRleFRleHR1cmUpCisgICAgeworICAgICAgICBhcHBs
eVRleHR1cmVzKFNBTVBMRVJfVkVSVEVYKTsKKyAgICB9Cit9CisKKy8vIEZvciBlYWNoIERpcmVj
dDNEIDkgc2FtcGxlciBvZiBlaXRoZXIgdGhlIHBpeGVsIG9yIHZlcnRleCBzdGFnZSwKKy8vIGxv
b2tzIHVwIHRoZSBjb3JyZXNwb25kaW5nIE9wZW5HTCB0ZXh0dXJlIGltYWdlIHVuaXQgYW5kIHRl
eHR1cmUgdHlwZSwKKy8vIGFuZCBzZXRzIHRoZSB0ZXh0dXJlIGFuZCBpdHMgYWRkcmVzc2luZy9m
aWx0ZXJpbmcgc3RhdGUgKG9yIE5VTEwgd2hlbiBpbmFjdGl2ZSkuCit2b2lkIENvbnRleHQ6OmFw
cGx5VGV4dHVyZXMoU2FtcGxlclR5cGUgdHlwZSkKK3sKKyAgICBQcm9ncmFtQmluYXJ5ICpwcm9n
cmFtQmluYXJ5ID0gZ2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKworICAgIC8vIFJhbmdlIG9m
IERpcmVjdDNEIHNhbXBsZXJzIG9mIGdpdmVuIHNhbXBsZXIgdHlwZQorICAgIGludCBzYW1wbGVy
Q291bnQgPSAodHlwZSA9PSBTQU1QTEVSX1BJWEVMKSA/IE1BWF9URVhUVVJFX0lNQUdFX1VOSVRT
IDogbVJlbmRlcmVyLT5nZXRNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpOworICAgIGludCBz
YW1wbGVyUmFuZ2UgPSBwcm9ncmFtQmluYXJ5LT5nZXRVc2VkU2FtcGxlclJhbmdlKHR5cGUpOwor
CisgICAgZm9yIChpbnQgc2FtcGxlckluZGV4ID0gMDsgc2FtcGxlckluZGV4IDwgc2FtcGxlclJh
bmdlOyBzYW1wbGVySW5kZXgrKykKKyAgICB7CisgICAgICAgIGludCB0ZXh0dXJlVW5pdCA9IHBy
b2dyYW1CaW5hcnktPmdldFNhbXBsZXJNYXBwaW5nKHR5cGUsIHNhbXBsZXJJbmRleCk7ICAgLy8g
T3BlbkdMIHRleHR1cmUgaW1hZ2UgdW5pdCBpbmRleAorCisgICAgICAgIGlmICh0ZXh0dXJlVW5p
dCAhPSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUg
PSBwcm9ncmFtQmluYXJ5LT5nZXRTYW1wbGVyVGV4dHVyZVR5cGUodHlwZSwgc2FtcGxlckluZGV4
KTsKKyAgICAgICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBnZXRTYW1wbGVyVGV4dHVyZSh0ZXh0
dXJlVW5pdCwgdGV4dHVyZVR5cGUpOworCisgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNTYW1w
bGVyQ29tcGxldGUoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBTYW1wbGVyU3Rh
dGUgc2FtcGxlclN0YXRlOworICAgICAgICAgICAgICAgIHRleHR1cmUtPmdldFNhbXBsZXJTdGF0
ZSgmc2FtcGxlclN0YXRlKTsKKyAgICAgICAgICAgICAgICBtUmVuZGVyZXItPnNldFNhbXBsZXJT
dGF0ZSh0eXBlLCBzYW1wbGVySW5kZXgsIHNhbXBsZXJTdGF0ZSk7CisKKyAgICAgICAgICAgICAg
ICBtUmVuZGVyZXItPnNldFRleHR1cmUodHlwZSwgc2FtcGxlckluZGV4LCB0ZXh0dXJlKTsKKwor
ICAgICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0RGlydHkoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtUmVuZGVyZXIt
PnNldFRleHR1cmUodHlwZSwgc2FtcGxlckluZGV4LCBnZXRJbmNvbXBsZXRlVGV4dHVyZSh0ZXh0
dXJlVHlwZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgbVJlbmRlcmVyLT5zZXRUZXh0dXJlKHR5cGUsIHNhbXBsZXJJbmRl
eCwgTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGludCBzYW1wbGVySW5kZXgg
PSBzYW1wbGVyUmFuZ2U7IHNhbXBsZXJJbmRleCA8IHNhbXBsZXJDb3VudDsgc2FtcGxlckluZGV4
KyspCisgICAgeworICAgICAgICBtUmVuZGVyZXItPnNldFRleHR1cmUodHlwZSwgc2FtcGxlcklu
ZGV4LCBOVUxMKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVhZFBpeGVscyhHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSAqYnVmU2l6ZSwg
dm9pZCogcGl4ZWxzKQoreworICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGdldFJlYWRG
cmFtZWJ1ZmZlcigpOworCisgICAgaWYgKGZyYW1lYnVmZmVyLT5jb21wbGV0ZW5lc3MoKSAhPSBH
TF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOworICAgIH0KKworICAgIGlmIChnZXRS
ZWFkRnJhbWVidWZmZXJIYW5kbGUoKSAhPSAwICYmIGZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKCkg
IT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgIH0KKworICAgIEdMc2l6ZWkgb3V0cHV0UGl0Y2ggPSBDb21wdXRlUGl0Y2god2lk
dGgsIENvbnZlcnRTaXplZEludGVybmFsRm9ybWF0KGZvcm1hdCwgdHlwZSksIGdldFBhY2tBbGln
bm1lbnQoKSk7CisgICAgLy8gc2l6ZWQgcXVlcnkgc2FuaXR5IGNoZWNrCisgICAgaWYgKGJ1ZlNp
emUpCisgICAgeworICAgICAgICBpbnQgcmVxdWlyZWRTaXplID0gb3V0cHV0UGl0Y2ggKiBoZWln
aHQ7CisgICAgICAgIGlmIChyZXF1aXJlZFNpemUgPiAqYnVmU2l6ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBtUmVuZGVyZXItPnJlYWRQaXhlbHMoZnJhbWVidWZmZXIsIHgsIHks
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgb3V0cHV0UGl0Y2gsIGdldFBhY2tSZXZlcnNl
Um93T3JkZXIoKSwgZ2V0UGFja0FsaWdubWVudCgpLCBwaXhlbHMpOworfQorCit2b2lkIENvbnRl
eHQ6OmNsZWFyKEdMYml0ZmllbGQgbWFzaykKK3sKKyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZm
ZXJPYmplY3QgPSBnZXREcmF3RnJhbWVidWZmZXIoKTsKKworICAgIGlmICghZnJhbWVidWZmZXJP
YmplY3QgfHwgZnJhbWVidWZmZXJPYmplY3QtPmNvbXBsZXRlbmVzcygpICE9IEdMX0ZSQU1FQlVG
RkVSX0NPTVBMRVRFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X0ZSQU1FQlVGRkVSX09QRVJBVElPTik7CisgICAgfQorCisgICAgRFdPUkQgZmxhZ3MgPSAwOwor
ICAgIEdMYml0ZmllbGQgZmluYWxNYXNrID0gMDsKKworICAgIGlmIChtYXNrICYgR0xfQ09MT1Jf
QlVGRkVSX0JJVCkKKyAgICB7CisgICAgICAgIG1hc2sgJj0gfkdMX0NPTE9SX0JVRkZFUl9CSVQ7
CisKKyAgICAgICAgaWYgKGZyYW1lYnVmZmVyT2JqZWN0LT5oYXNFbmFibGVkQ29sb3JBdHRhY2ht
ZW50KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZpbmFsTWFzayB8PSBHTF9DT0xPUl9CVUZG
RVJfQklUOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1hc2sgJiBHTF9ERVBUSF9CVUZG
RVJfQklUKQorICAgIHsKKyAgICAgICAgbWFzayAmPSB+R0xfREVQVEhfQlVGRkVSX0JJVDsKKyAg
ICAgICAgaWYgKG1TdGF0ZS5kZXB0aFN0ZW5jaWwuZGVwdGhNYXNrICYmIGZyYW1lYnVmZmVyT2Jq
ZWN0LT5nZXREZXB0aGJ1ZmZlclR5cGUoKSAhPSBHTF9OT05FKQorICAgICAgICB7CisgICAgICAg
ICAgICBmaW5hbE1hc2sgfD0gR0xfREVQVEhfQlVGRkVSX0JJVDsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmIChtYXNrICYgR0xfU1RFTkNJTF9CVUZGRVJfQklUKQorICAgIHsKKyAgICAgICAg
bWFzayAmPSB+R0xfU1RFTkNJTF9CVUZGRVJfQklUOworICAgICAgICBpZiAoZnJhbWVidWZmZXJP
YmplY3QtPmdldFN0ZW5jaWxidWZmZXJUeXBlKCkgIT0gR0xfTk9ORSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcng6OlJlbmRlclRhcmdldCAqZGVwdGhTdGVuY2lsID0gZnJhbWVidWZmZXJPYmpl
Y3QtPmdldFN0ZW5jaWxidWZmZXIoKS0+Z2V0RGVwdGhTdGVuY2lsKCk7CisgICAgICAgICAgICBp
ZiAoIWRlcHRoU3RlbmNpbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFUlIoIkRl
cHRoIHN0ZW5jaWwgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChHZXRTdGVuY2lsU2l6
ZShkZXB0aFN0ZW5jaWwtPmdldEFjdHVhbEZvcm1hdCgpKSA+IDApCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgZmluYWxNYXNrIHw9IEdMX1NURU5DSUxfQlVGRkVSX0JJVDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtYXNrICE9IDApCisgICAgewor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgIH0KKworICAg
IGlmICghYXBwbHlSZW5kZXJUYXJnZXQoR0xfVFJJQU5HTEVTLCB0cnVlKSkgICAvLyBDbGlwcyB0
aGUgY2xlYXIgdG8gdGhlIHNjaXNzb3IgcmVjdGFuZ2xlIGJ1dCBub3QgdGhlIHZpZXdwb3J0Cisg
ICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2xlYXJQYXJhbWV0ZXJzIGNsZWFy
UGFyYW1zOworICAgIGNsZWFyUGFyYW1zLm1hc2sgPSBmaW5hbE1hc2s7CisgICAgY2xlYXJQYXJh
bXMuY29sb3JDbGVhclZhbHVlID0gbVN0YXRlLmNvbG9yQ2xlYXJWYWx1ZTsKKyAgICBjbGVhclBh
cmFtcy5jb2xvck1hc2tSZWQgPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrUmVkOworICAgIGNsZWFy
UGFyYW1zLmNvbG9yTWFza0dyZWVuID0gbVN0YXRlLmJsZW5kLmNvbG9yTWFza0dyZWVuOworICAg
IGNsZWFyUGFyYW1zLmNvbG9yTWFza0JsdWUgPSBtU3RhdGUuYmxlbmQuY29sb3JNYXNrQmx1ZTsK
KyAgICBjbGVhclBhcmFtcy5jb2xvck1hc2tBbHBoYSA9IG1TdGF0ZS5ibGVuZC5jb2xvck1hc2tB
bHBoYTsKKyAgICBjbGVhclBhcmFtcy5kZXB0aENsZWFyVmFsdWUgPSBtU3RhdGUuZGVwdGhDbGVh
clZhbHVlOworICAgIGNsZWFyUGFyYW1zLnN0ZW5jaWxDbGVhclZhbHVlID0gbVN0YXRlLnN0ZW5j
aWxDbGVhclZhbHVlOworICAgIGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1hc2sgPSBtU3RhdGUu
ZGVwdGhTdGVuY2lsLnN0ZW5jaWxXcml0ZW1hc2s7CisKKyAgICBtUmVuZGVyZXItPmNsZWFyKGNs
ZWFyUGFyYW1zLCBmcmFtZWJ1ZmZlck9iamVjdCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZHJhd0Fy
cmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5z
dGFuY2VzKQoreworICAgIGlmICghbVN0YXRlLmN1cnJlbnRQcm9ncmFtKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisgICAg
aWYgKCFtUmVuZGVyZXItPmFwcGx5UHJpbWl0aXZlVHlwZShtb2RlLCBjb3VudCkpCisgICAgewor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFhcHBseVJlbmRlclRhcmdldChtb2Rl
LCBmYWxzZSkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXBwbHlTdGF0
ZShtb2RlKTsKKworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBnZXRDdXJyZW50
UHJvZ3JhbUJpbmFyeSgpOworCisgICAgR0xlbnVtIGVyciA9IG1SZW5kZXJlci0+YXBwbHlWZXJ0
ZXhCdWZmZXIocHJvZ3JhbUJpbmFyeSwgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZSwgZmlyc3QsIGNv
dW50LCBpbnN0YW5jZXMpOworICAgIGlmIChlcnIgIT0gR0xfTk9fRVJST1IpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKGVycik7CisgICAgfQorCisgICAgYXBwbHlTaGFkZXJzKCk7
CisgICAgYXBwbHlUZXh0dXJlcygpOworCisgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT52YWxpZGF0
ZVNhbXBsZXJzKE5VTEwpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgfQorCisgICAgaWYgKCFza2lwRHJhdyhtb2RlKSkKKyAgICB7
CisgICAgICAgIG1SZW5kZXJlci0+ZHJhd0FycmF5cyhtb2RlLCBjb3VudCwgaW5zdGFuY2VzKTsK
KyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNp
emVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBHTHNpemVpIGlu
c3RhbmNlcykKK3sKKyAgICBpZiAoIW1TdGF0ZS5jdXJyZW50UHJvZ3JhbSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAg
IGlmICghaW5kaWNlcyAmJiAhbVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZlcikKKyAgICB7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKyAgICAK
KyAgICBpZiAoIW1SZW5kZXJlci0+YXBwbHlQcmltaXRpdmVUeXBlKG1vZGUsIGNvdW50KSkKKyAg
ICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWFwcGx5UmVuZGVyVGFyZ2V0
KG1vZGUsIGZhbHNlKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhcHBs
eVN0YXRlKG1vZGUpOworCisgICAgcng6OlRyYW5zbGF0ZWRJbmRleERhdGEgaW5kZXhJbmZvOwor
ICAgIEdMZW51bSBlcnIgPSBtUmVuZGVyZXItPmFwcGx5SW5kZXhCdWZmZXIoaW5kaWNlcywgbVN0
YXRlLmVsZW1lbnRBcnJheUJ1ZmZlci5nZXQoKSwgY291bnQsIG1vZGUsIHR5cGUsICZpbmRleElu
Zm8pOworICAgIGlmIChlcnIgIT0gR0xfTk9fRVJST1IpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKGVycik7CisgICAgfQorCisgICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFy
eSA9IGdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7CisKKyAgICBHTHNpemVpIHZlcnRleENvdW50
ID0gaW5kZXhJbmZvLm1heEluZGV4IC0gaW5kZXhJbmZvLm1pbkluZGV4ICsgMTsKKyAgICBlcnIg
PSBtUmVuZGVyZXItPmFwcGx5VmVydGV4QnVmZmVyKHByb2dyYW1CaW5hcnksIG1TdGF0ZS52ZXJ0
ZXhBdHRyaWJ1dGUsIGluZGV4SW5mby5taW5JbmRleCwgdmVydGV4Q291bnQsIGluc3RhbmNlcyk7
CisgICAgaWYgKGVyciAhPSBHTF9OT19FUlJPUikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoZXJyKTsKKyAgICB9CisKKyAgICBhcHBseVNoYWRlcnMoKTsKKyAgICBhcHBseVRleHR1
cmVzKCk7CisKKyAgICBpZiAoIXByb2dyYW1CaW5hcnktPnZhbGlkYXRlU2FtcGxlcnMoTlVMTCkp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICB9CisKKyAgICBpZiAoIXNraXBEcmF3KG1vZGUpKQorICAgIHsKKyAgICAgICAgbVJlbmRl
cmVyLT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIG1TdGF0ZS5lbGVt
ZW50QXJyYXlCdWZmZXIuZ2V0KCksIGluZGV4SW5mbywgaW5zdGFuY2VzKTsKKyAgICB9Cit9CisK
Ky8vIEltcGxlbWVudHMgZ2xGbHVzaCB3aGVuIGJsb2NrIGlzIGZhbHNlLCBnbEZpbmlzaCB3aGVu
IGJsb2NrIGlzIHRydWUKK3ZvaWQgQ29udGV4dDo6c3luYyhib29sIGJsb2NrKQoreworICAgIG1S
ZW5kZXJlci0+c3luYyhibG9jayk7Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVjb3JkSW52YWxpZEVu
dW0oKQoreworICAgIG1JbnZhbGlkRW51bSA9IHRydWU7Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVj
b3JkSW52YWxpZFZhbHVlKCkKK3sKKyAgICBtSW52YWxpZFZhbHVlID0gdHJ1ZTsKK30KKwordm9p
ZCBDb250ZXh0OjpyZWNvcmRJbnZhbGlkT3BlcmF0aW9uKCkKK3sKKyAgICBtSW52YWxpZE9wZXJh
dGlvbiA9IHRydWU7Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVjb3JkT3V0T2ZNZW1vcnkoKQorewor
ICAgIG1PdXRPZk1lbW9yeSA9IHRydWU7Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVjb3JkSW52YWxp
ZEZyYW1lYnVmZmVyT3BlcmF0aW9uKCkKK3sKKyAgICBtSW52YWxpZEZyYW1lYnVmZmVyT3BlcmF0
aW9uID0gdHJ1ZTsKK30KKworLy8gR2V0IG9uZSBvZiB0aGUgcmVjb3JkZWQgZXJyb3JzIGFuZCBj
bGVhciBpdHMgZmxhZywgaWYgYW55LgorLy8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMi41
IHBhZ2UgMTMuCitHTGVudW0gQ29udGV4dDo6Z2V0RXJyb3IoKQoreworICAgIGlmIChtSW52YWxp
ZEVudW0pCisgICAgeworICAgICAgICBtSW52YWxpZEVudW0gPSBmYWxzZTsKKworICAgICAgICBy
ZXR1cm4gR0xfSU5WQUxJRF9FTlVNOworICAgIH0KKworICAgIGlmIChtSW52YWxpZFZhbHVlKQor
ICAgIHsKKyAgICAgICAgbUludmFsaWRWYWx1ZSA9IGZhbHNlOworCisgICAgICAgIHJldHVybiBH
TF9JTlZBTElEX1ZBTFVFOworICAgIH0KKworICAgIGlmIChtSW52YWxpZE9wZXJhdGlvbikKKyAg
ICB7CisgICAgICAgIG1JbnZhbGlkT3BlcmF0aW9uID0gZmFsc2U7CisKKyAgICAgICAgcmV0dXJu
IEdMX0lOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIGlmIChtT3V0T2ZNZW1vcnkpCisg
ICAgeworICAgICAgICBtT3V0T2ZNZW1vcnkgPSBmYWxzZTsKKworICAgICAgICByZXR1cm4gR0xf
T1VUX09GX01FTU9SWTsKKyAgICB9CisKKyAgICBpZiAobUludmFsaWRGcmFtZWJ1ZmZlck9wZXJh
dGlvbikKKyAgICB7CisgICAgICAgIG1JbnZhbGlkRnJhbWVidWZmZXJPcGVyYXRpb24gPSBmYWxz
ZTsKKworICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT047Cisg
ICAgfQorCisgICAgcmV0dXJuIEdMX05PX0VSUk9SOworfQorCitHTGVudW0gQ29udGV4dDo6Z2V0
UmVzZXRTdGF0dXMoKQoreworICAgIGlmIChtUmVzZXRTdGF0dXMgPT0gR0xfTk9fRVJST1IgJiYg
IW1Db250ZXh0TG9zdCkKKyAgICB7CisgICAgICAgIC8vIG1SZXNldFN0YXR1cyB3aWxsIGJlIHNl
dCBieSB0aGUgbWFya0NvbnRleHRMb3N0IGNhbGxiYWNrCisgICAgICAgIC8vIGluIHRoZSBjYXNl
IGEgbm90aWZpY2F0aW9uIGlzIHNlbnQKKyAgICAgICAgbVJlbmRlcmVyLT50ZXN0RGV2aWNlTG9z
dCh0cnVlKTsKKyAgICB9CisKKyAgICBHTGVudW0gc3RhdHVzID0gbVJlc2V0U3RhdHVzOworCisg
ICAgaWYgKG1SZXNldFN0YXR1cyAhPSBHTF9OT19FUlJPUikKKyAgICB7CisgICAgICAgIEFTU0VS
VChtQ29udGV4dExvc3QpOworCisgICAgICAgIGlmIChtUmVuZGVyZXItPnRlc3REZXZpY2VSZXNl
dHRhYmxlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1SZXNldFN0YXR1cyA9IEdMX05PX0VS
Uk9SOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBzdGF0dXM7Cit9CisKK2Jv
b2wgQ29udGV4dDo6aXNSZXNldE5vdGlmaWNhdGlvbkVuYWJsZWQoKQoreworICAgIHJldHVybiAo
bVJlc2V0U3RyYXRlZ3kgPT0gR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCk7Cit9CisKK2lu
dCBDb250ZXh0OjpnZXRNYWpvclNoYWRlck1vZGVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbU1h
am9yU2hhZGVyTW9kZWw7Cit9CisKK2Zsb2F0IENvbnRleHQ6OmdldE1heGltdW1Qb2ludFNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBtTWF4aW11bVBvaW50U2l6ZTsKK30KKwordW5zaWduZWQg
aW50IENvbnRleHQ6OmdldE1heGltdW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRNYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRz
KCk7Cit9CisKK2ludCBDb250ZXh0OjpnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCk7Cit9CisKK3Vu
c2lnbmVkIGludCBDb250ZXh0OjpnZXRNYXhpbXVtUmVuZGVyVGFyZ2V0cygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TWF4UmVuZGVyVGFyZ2V0cygpOworfQorCitib29sIENv
bnRleHQ6OnN1cHBvcnRzRXZlbnRRdWVyaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBv
cnRzRXZlbnRRdWVyaWVzOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzT2NjbHVzaW9uUXVl
cmllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdXBwb3J0c09jY2x1c2lvblF1ZXJpZXM7Cit9
CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNCR1JBVGV4dHVyZXMoKSBjb25zdAoreworICAgIHJl
dHVybiBtU3VwcG9ydHNCR1JBVGV4dHVyZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNE
WFQxVGV4dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNEWFQxVGV4dHVyZXM7
Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNEWFQzVGV4dHVyZXMoKSBjb25zdAoreworICAg
IHJldHVybiBtU3VwcG9ydHNEWFQzVGV4dHVyZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9y
dHNEWFQ1VGV4dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNEWFQ1VGV4dHVy
ZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNGbG9hdDMyVGV4dHVyZXMoKSBjb25zdAor
eworICAgIHJldHVybiBtU3VwcG9ydHNGbG9hdDMyVGV4dHVyZXM7Cit9CisKK2Jvb2wgQ29udGV4
dDo6c3VwcG9ydHNGbG9hdDMyTGluZWFyRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1
cHBvcnRzRmxvYXQzMkxpbmVhckZpbHRlcjsKK30KKworYm9vbCBDb250ZXh0OjpzdXBwb3J0c0Zs
b2F0MzJSZW5kZXJhYmxlVGV4dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNG
bG9hdDMyUmVuZGVyYWJsZVRleHR1cmVzOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzRmxv
YXQxNlRleHR1cmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzRmxvYXQxNlRleHR1
cmVzOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzRmxvYXQxNkxpbmVhckZpbHRlcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1TdXBwb3J0c0Zsb2F0MTZMaW5lYXJGaWx0ZXI7Cit9CisKK2Jv
b2wgQ29udGV4dDo6c3VwcG9ydHNGbG9hdDE2UmVuZGVyYWJsZVRleHR1cmVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbVN1cHBvcnRzRmxvYXQxNlJlbmRlcmFibGVUZXh0dXJlczsKK30KKworaW50
IENvbnRleHQ6OmdldE1heGltdW1SZW5kZXJidWZmZXJEaW1lbnNpb24oKSBjb25zdAoreworICAg
IHJldHVybiBtTWF4UmVuZGVyYnVmZmVyRGltZW5zaW9uOworfQorCitpbnQgQ29udGV4dDo6Z2V0
TWF4aW11bVRleHR1cmVEaW1lbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBtTWF4VGV4dHVy
ZURpbWVuc2lvbjsKK30KKworaW50IENvbnRleHQ6OmdldE1heGltdW1DdWJlVGV4dHVyZURpbWVu
c2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1NYXhDdWJlVGV4dHVyZURpbWVuc2lvbjsKK30K
KworaW50IENvbnRleHQ6OmdldE1heGltdW1UZXh0dXJlTGV2ZWwoKSBjb25zdAoreworICAgIHJl
dHVybiBtTWF4VGV4dHVyZUxldmVsOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzTHVtaW5h
bmNlVGV4dHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNMdW1pbmFuY2VUZXh0
dXJlczsKK30KKworYm9vbCBDb250ZXh0OjpzdXBwb3J0c0x1bWluYW5jZUFscGhhVGV4dHVyZXMo
KSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNMdW1pbmFuY2VBbHBoYVRleHR1cmVzOwor
fQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzRGVwdGhUZXh0dXJlcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1TdXBwb3J0c0RlcHRoVGV4dHVyZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9y
dHMzMmJpdEluZGljZXMoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHMzMmJpdEluZGlj
ZXM7Cit9CisKK2Jvb2wgQ29udGV4dDo6c3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVN1cHBvcnRzTm9uUG93ZXIyVGV4dHVyZTsKK30KKworYm9vbCBDb250
ZXh0OjpzdXBwb3J0c0luc3RhbmNpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNJ
bnN0YW5jaW5nOworfQorCitib29sIENvbnRleHQ6OnN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNv
dHJvcHkoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290
cm9weTsKK30KKworZmxvYXQgQ29udGV4dDo6Z2V0VGV4dHVyZU1heEFuaXNvdHJvcHkoKSBjb25z
dAoreworICAgIHJldHVybiBtTWF4VGV4dHVyZUFuaXNvdHJvcHk7Cit9CisKK2Jvb2wgQ29udGV4
dDo6Z2V0Q3VycmVudFJlYWRGb3JtYXRUeXBlKEdMZW51bSAqZm9ybWF0LCBHTGVudW0gKnR5cGUp
Cit7CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gZ2V0UmVhZEZyYW1lYnVmZmVyKCk7
CisgICAgaWYgKCFmcmFtZWJ1ZmZlciB8fCBmcmFtZWJ1ZmZlci0+Y29tcGxldGVuZXNzKCkgIT0g
R0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgfQorCisgICAgUmVuZGVyYnVmZmVy
ICpyZW5kZXJidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7CisgICAg
aWYgKCFyZW5kZXJidWZmZXIpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgfQorCisgICAgKmZvcm1hdCA9IGdsOjpFeHRy
YWN0Rm9ybWF0KHJlbmRlcmJ1ZmZlci0+Z2V0QWN0dWFsRm9ybWF0KCkpOyAKKyAgICAqdHlwZSA9
IGdsOjpFeHRyYWN0VHlwZShyZW5kZXJidWZmZXItPmdldEFjdHVhbEZvcm1hdCgpKTsKKworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIENvbnRleHQ6OmRldGFjaEJ1ZmZlcihHTHVpbnQgYnVm
ZmVyKQoreworICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDIuOSBwYWdlIDIyOgor
ICAgIC8vIElmIGEgYnVmZmVyIG9iamVjdCBpcyBkZWxldGVkIHdoaWxlIGl0IGlzIGJvdW5kLCBh
bGwgYmluZGluZ3MgdG8gdGhhdCBvYmplY3QgaW4gdGhlIGN1cnJlbnQgY29udGV4dAorICAgIC8v
IChpLmUuIGluIHRoZSB0aHJlYWQgdGhhdCBjYWxsZWQgRGVsZXRlLUJ1ZmZlcnMpIGFyZSByZXNl
dCB0byB6ZXJvLgorCisgICAgaWYgKG1TdGF0ZS5hcnJheUJ1ZmZlci5pZCgpID09IGJ1ZmZlcikK
KyAgICB7CisgICAgICAgIG1TdGF0ZS5hcnJheUJ1ZmZlci5zZXQoTlVMTCk7CisgICAgfQorCisg
ICAgaWYgKG1TdGF0ZS5lbGVtZW50QXJyYXlCdWZmZXIuaWQoKSA9PSBidWZmZXIpCisgICAgewor
ICAgICAgICBtU3RhdGUuZWxlbWVudEFycmF5QnVmZmVyLnNldChOVUxMKTsKKyAgICB9CisKKyAg
ICBmb3IgKGludCBhdHRyaWJ1dGUgPSAwOyBhdHRyaWJ1dGUgPCBNQVhfVkVSVEVYX0FUVFJJQlM7
IGF0dHJpYnV0ZSsrKQorICAgIHsKKyAgICAgICAgaWYgKG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVb
YXR0cmlidXRlXS5tQm91bmRCdWZmZXIuaWQoKSA9PSBidWZmZXIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbYXR0cmlidXRlXS5tQm91bmRCdWZmZXIuc2V0
KE5VTEwpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmRldGFjaFRleHR1
cmUoR0x1aW50IHRleHR1cmUpCit7CisgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24g
My44IHBhZ2UgODQ6CisgICAgLy8gSWYgYSB0ZXh0dXJlIG9iamVjdCBpcyBkZWxldGVkLCBpdCBp
cyBhcyBpZiBhbGwgdGV4dHVyZSB1bml0cyB3aGljaCBhcmUgYm91bmQgdG8gdGhhdCB0ZXh0dXJl
IG9iamVjdCBhcmUKKyAgICAvLyByZWJvdW5kIHRvIHRleHR1cmUgb2JqZWN0IHplcm8KKworICAg
IGZvciAoaW50IHR5cGUgPSAwOyB0eXBlIDwgVEVYVFVSRV9UWVBFX0NPVU5UOyB0eXBlKyspCisg
ICAgeworICAgICAgICBmb3IgKGludCBzYW1wbGVyID0gMDsgc2FtcGxlciA8IElNUExFTUVOVEFU
SU9OX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTOyBzYW1wbGVyKyspCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChtU3RhdGUuc2FtcGxlclRleHR1cmVbdHlwZV1bc2FtcGxlcl0u
aWQoKSA9PSB0ZXh0dXJlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1TdGF0ZS5z
YW1wbGVyVGV4dHVyZVt0eXBlXVtzYW1wbGVyXS5zZXQoTlVMTCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiA0LjQg
cGFnZSAxMTI6CisgICAgLy8gSWYgYSB0ZXh0dXJlIG9iamVjdCBpcyBkZWxldGVkIHdoaWxlIGl0
cyBpbWFnZSBpcyBhdHRhY2hlZCB0byB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVyLCB0
aGVuIGl0IGlzCisgICAgLy8gYXMgaWYgRnJhbWVidWZmZXJUZXh0dXJlMkQgaGFkIGJlZW4gY2Fs
bGVkLCB3aXRoIGEgdGV4dHVyZSBvZiAwLCBmb3IgZWFjaCBhdHRhY2htZW50IHBvaW50IHRvIHdo
aWNoIHRoaXMKKyAgICAvLyBpbWFnZSB3YXMgYXR0YWNoZWQgaW4gdGhlIGN1cnJlbnRseSBib3Vu
ZCBmcmFtZWJ1ZmZlci4KKworICAgIEZyYW1lYnVmZmVyICpyZWFkRnJhbWVidWZmZXIgPSBnZXRS
ZWFkRnJhbWVidWZmZXIoKTsKKyAgICBGcmFtZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0gZ2V0
RHJhd0ZyYW1lYnVmZmVyKCk7CisKKyAgICBpZiAocmVhZEZyYW1lYnVmZmVyKQorICAgIHsKKyAg
ICAgICAgcmVhZEZyYW1lYnVmZmVyLT5kZXRhY2hUZXh0dXJlKHRleHR1cmUpOworICAgIH0KKwor
ICAgIGlmIChkcmF3RnJhbWVidWZmZXIgJiYgZHJhd0ZyYW1lYnVmZmVyICE9IHJlYWRGcmFtZWJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGRyYXdGcmFtZWJ1ZmZlci0+ZGV0YWNoVGV4dHVyZSh0ZXh0
dXJlKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6ZGV0YWNoRnJhbWVidWZmZXIoR0x1aW50
IGZyYW1lYnVmZmVyKQoreworICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDQuNCBw
YWdlIDEwNzoKKyAgICAvLyBJZiBhIGZyYW1lYnVmZmVyIHRoYXQgaXMgY3VycmVudGx5IGJvdW5k
IHRvIHRoZSB0YXJnZXQgRlJBTUVCVUZGRVIgaXMgZGVsZXRlZCwgaXQgaXMgYXMgdGhvdWdoCisg
ICAgLy8gQmluZEZyYW1lYnVmZmVyIGhhZCBiZWVuIGV4ZWN1dGVkIHdpdGggdGhlIHRhcmdldCBv
ZiBGUkFNRUJVRkZFUiBhbmQgZnJhbWVidWZmZXIgb2YgemVyby4KKworICAgIGlmIChtU3RhdGUu
cmVhZEZyYW1lYnVmZmVyID09IGZyYW1lYnVmZmVyKQorICAgIHsKKyAgICAgICAgYmluZFJlYWRG
cmFtZWJ1ZmZlcigwKTsKKyAgICB9CisKKyAgICBpZiAobVN0YXRlLmRyYXdGcmFtZWJ1ZmZlciA9
PSBmcmFtZWJ1ZmZlcikKKyAgICB7CisgICAgICAgIGJpbmREcmF3RnJhbWVidWZmZXIoMCk7Cisg
ICAgfQorfQorCit2b2lkIENvbnRleHQ6OmRldGFjaFJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVy
YnVmZmVyKQoreworICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDQuNCBwYWdlIDEw
OToKKyAgICAvLyBJZiBhIHJlbmRlcmJ1ZmZlciB0aGF0IGlzIGN1cnJlbnRseSBib3VuZCB0byBS
RU5ERVJCVUZGRVIgaXMgZGVsZXRlZCwgaXQgaXMgYXMgdGhvdWdoIEJpbmRSZW5kZXJidWZmZXIK
KyAgICAvLyBoYWQgYmVlbiBleGVjdXRlZCB3aXRoIHRoZSB0YXJnZXQgUkVOREVSQlVGRkVSIGFu
ZCBuYW1lIG9mIHplcm8uCisKKyAgICBpZiAobVN0YXRlLnJlbmRlcmJ1ZmZlci5pZCgpID09IHJl
bmRlcmJ1ZmZlcikKKyAgICB7CisgICAgICAgIGJpbmRSZW5kZXJidWZmZXIoMCk7CisgICAgfQor
CisgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gNC40IHBhZ2UgMTExOgorICAgIC8v
IElmIGEgcmVuZGVyYnVmZmVyIG9iamVjdCBpcyBkZWxldGVkIHdoaWxlIGl0cyBpbWFnZSBpcyBh
dHRhY2hlZCB0byB0aGUgY3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVyLAorICAgIC8vIHRoZW4g
aXQgaXMgYXMgaWYgRnJhbWVidWZmZXJSZW5kZXJidWZmZXIgaGFkIGJlZW4gY2FsbGVkLCB3aXRo
IGEgcmVuZGVyYnVmZmVyIG9mIDAsIGZvciBlYWNoIGF0dGFjaG1lbnQKKyAgICAvLyBwb2ludCB0
byB3aGljaCB0aGlzIGltYWdlIHdhcyBhdHRhY2hlZCBpbiB0aGUgY3VycmVudGx5IGJvdW5kIGZy
YW1lYnVmZmVyLgorCisgICAgRnJhbWVidWZmZXIgKnJlYWRGcmFtZWJ1ZmZlciA9IGdldFJlYWRG
cmFtZWJ1ZmZlcigpOworICAgIEZyYW1lYnVmZmVyICpkcmF3RnJhbWVidWZmZXIgPSBnZXREcmF3
RnJhbWVidWZmZXIoKTsKKworICAgIGlmIChyZWFkRnJhbWVidWZmZXIpCisgICAgeworICAgICAg
ICByZWFkRnJhbWVidWZmZXItPmRldGFjaFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworICAg
IH0KKworICAgIGlmIChkcmF3RnJhbWVidWZmZXIgJiYgZHJhd0ZyYW1lYnVmZmVyICE9IHJlYWRG
cmFtZWJ1ZmZlcikKKyAgICB7CisgICAgICAgIGRyYXdGcmFtZWJ1ZmZlci0+ZGV0YWNoUmVuZGVy
YnVmZmVyKHJlbmRlcmJ1ZmZlcik7CisgICAgfQorfQorCitUZXh0dXJlICpDb250ZXh0OjpnZXRJ
bmNvbXBsZXRlVGV4dHVyZShUZXh0dXJlVHlwZSB0eXBlKQoreworICAgIFRleHR1cmUgKnQgPSBt
SW5jb21wbGV0ZVRleHR1cmVzW3R5cGVdLmdldCgpOworCisgICAgaWYgKHQgPT0gTlVMTCkKKyAg
ICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBHTHVieXRlIGNvbG9yW10gPSB7IDAsIDAsIDAsIDI1
NSB9OworCisgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgLy8gZGVmYXVsdCBm
YWxscyB0aHJvdWdoIHRvIFRFWFRVUkVfMkQKKworICAgICAgICAgIGNhc2UgVEVYVFVSRV8yRDoK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBUZXh0dXJlMkQgKmluY29tcGxldGUyZCA9
IG5ldyBUZXh0dXJlMkQobVJlbmRlcmVyLCBUZXh0dXJlOjpJTkNPTVBMRVRFX1RFWFRVUkVfSUQp
OworICAgICAgICAgICAgICAgIGluY29tcGxldGUyZC0+c2V0SW1hZ2UoMCwgMSwgMSwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgMSwgY29sb3IpOworICAgICAgICAgICAgICAgIHQgPSBpbmNv
bXBsZXRlMmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
IGNhc2UgVEVYVFVSRV9DVUJFOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICBUZXh0dXJl
Q3ViZU1hcCAqaW5jb21wbGV0ZUN1YmUgPSBuZXcgVGV4dHVyZUN1YmVNYXAobVJlbmRlcmVyLCBU
ZXh0dXJlOjpJTkNPTVBMRVRFX1RFWFRVUkVfSUQpOworCisgICAgICAgICAgICAgIGluY29tcGxl
dGVDdWJlLT5zZXRJbWFnZVBvc1goMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
MSwgY29sb3IpOworICAgICAgICAgICAgICBpbmNvbXBsZXRlQ3ViZS0+c2V0SW1hZ2VOZWdYKDAs
IDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDEsIGNvbG9yKTsKKyAgICAgICAgICAg
ICAgaW5jb21wbGV0ZUN1YmUtPnNldEltYWdlUG9zWSgwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCAxLCBjb2xvcik7CisgICAgICAgICAgICAgIGluY29tcGxldGVDdWJlLT5zZXRJ
bWFnZU5lZ1koMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMSwgY29sb3IpOwor
ICAgICAgICAgICAgICBpbmNvbXBsZXRlQ3ViZS0+c2V0SW1hZ2VQb3NaKDAsIDEsIDEsIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsIDEsIGNvbG9yKTsKKyAgICAgICAgICAgICAgaW5jb21wbGV0
ZUN1YmUtPnNldEltYWdlTmVnWigwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAx
LCBjb2xvcik7CisKKyAgICAgICAgICAgICAgdCA9IGluY29tcGxldGVDdWJlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtSW5jb21wbGV0
ZVRleHR1cmVzW3R5cGVdLnNldCh0KTsKKyAgICB9CisKKyAgICByZXR1cm4gdDsKK30KKworYm9v
bCBDb250ZXh0Ojpza2lwRHJhdyhHTGVudW0gZHJhd01vZGUpCit7CisgICAgaWYgKGRyYXdNb2Rl
ID09IEdMX1BPSU5UUykKKyAgICB7CisgICAgICAgIC8vIFByb2dyYW1CaW5hcnkgYXNzdW1lcyBu
b24tcG9pbnQgcmVuZGVyaW5nIGlmIGdsX1BvaW50U2l6ZSBpc24ndCB3cml0dGVuLAorICAgICAg
ICAvLyB3aGljaCBhZmZlY3RzIHZhcnlpbmcgaW50ZXJwb2xhdGlvbi4gU2luY2UgdGhlIHZhbHVl
IG9mIGdsX1BvaW50U2l6ZSBpcworICAgICAgICAvLyB1bmRlZmluZWQgd2hlbiBub3Qgd3JpdHRl
biwganVzdCBza2lwIGRyYXdpbmcgdG8gYXZvaWQgdW5leHBlY3RlZCByZXN1bHRzLgorICAgICAg
ICBpZiAoIWdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCktPnVzZXNQb2ludFNpemUoKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgLy8gVGhpcyBpcyBzdGljdGx5IHNwZWFraW5nIG5vdCBhbiBlcnJv
ciwgYnV0IGRldmVsb3BlcnMgc2hvdWxkIGJlIAorICAgICAgICAgICAgLy8gbm90aWZpZWQgb2Yg
cmlza2luZyB1bmRlZmluZWQgYmVoYXZpb3IuCisgICAgICAgICAgICBFUlIoIlBvaW50IHJlbmRl
cmluZyB3aXRob3V0IHdyaXRpbmcgdG8gZ2xfUG9pbnRTaXplLiIpOworCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChJc1RyaWFuZ2xlTW9k
ZShkcmF3TW9kZSkpCisgICAgeworICAgICAgICBpZiAobVN0YXRlLnJhc3Rlcml6ZXIuY3VsbEZh
Y2UgJiYgbVN0YXRlLnJhc3Rlcml6ZXIuY3VsbE1vZGUgPT0gR0xfRlJPTlRfQU5EX0JBQ0spCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENvbnRleHQ6OnNldFZlcnRleEF0dHJpYihHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBn
bDo6TUFYX1ZFUlRFWF9BVFRSSUJTKTsKKworICAgIG1TdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbaW5k
ZXhdLm1DdXJyZW50VmFsdWVbMF0gPSB2YWx1ZXNbMF07CisgICAgbVN0YXRlLnZlcnRleEF0dHJp
YnV0ZVtpbmRleF0ubUN1cnJlbnRWYWx1ZVsxXSA9IHZhbHVlc1sxXTsKKyAgICBtU3RhdGUudmVy
dGV4QXR0cmlidXRlW2luZGV4XS5tQ3VycmVudFZhbHVlWzJdID0gdmFsdWVzWzJdOworICAgIG1T
dGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVbaW5kZXhdLm1DdXJyZW50VmFsdWVbM10gPSB2YWx1ZXNbM107
Cit9CisKK3ZvaWQgQ29udGV4dDo6c2V0VmVydGV4QXR0cmliRGl2aXNvcihHTHVpbnQgaW5kZXgs
IEdMdWludCBkaXZpc29yKQoreworICAgIEFTU0VSVChpbmRleCA8IGdsOjpNQVhfVkVSVEVYX0FU
VFJJQlMpOworCisgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVtpbmRleF0ubURpdmlzb3IgPSBk
aXZpc29yOworfQorCisvLyBrZWVwIGxpc3Qgc29ydGVkIGluIGZvbGxvd2luZyBvcmRlcgorLy8g
T0VTIGV4dGVuc2lvbnMKKy8vIEVYVCBleHRlbnNpb25zCisvLyBWZW5kb3IgZXh0ZW5zaW9ucwor
dm9pZCBDb250ZXh0Ojppbml0RXh0ZW5zaW9uU3RyaW5nKCkKK3sKKyAgICBzdGQ6OnN0cmluZyBl
eHRlbnNpb25TdHJpbmcgPSAiIjsKKworICAgIC8vIE9FUyBleHRlbnNpb25zCisgICAgaWYgKHN1
cHBvcnRzMzJiaXRJbmRpY2VzKCkpCisgICAgeworICAgICAgICBleHRlbnNpb25TdHJpbmcgKz0g
IkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQgIjsKKyAgICB9CisKKyAgICBleHRlbnNpb25TdHJp
bmcgKz0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCAiOworICAgIGV4dGVuc2lvblN0cmlu
ZyArPSAiR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFyeSAiOworICAgIGV4dGVuc2lvblN0cmluZyAr
PSAiR0xfT0VTX3JnYjhfcmdiYTggIjsKKyAgICBpZiAobVJlbmRlcmVyLT5nZXREZXJpdmF0aXZl
SW5zdHJ1Y3Rpb25TdXBwb3J0KCkpCisgICAgeworICAgICAgICBleHRlbnNpb25TdHJpbmcgKz0g
IkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyAiOworICAgIH0KKworICAgIGlmIChzdXBwb3J0
c0Zsb2F0MTZUZXh0dXJlcygpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0ICI7CisgICAgfQorICAgIGlmIChzdXBwb3J0c0Zsb2F0
MTZMaW5lYXJGaWx0ZXIoKSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xf
T0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgIjsKKyAgICB9CisgICAgaWYgKHN1cHBvcnRz
RmxvYXQzMlRleHR1cmVzKCkpCisgICAgeworICAgICAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdM
X09FU190ZXh0dXJlX2Zsb2F0ICI7CisgICAgfQorICAgIGlmIChzdXBwb3J0c0Zsb2F0MzJMaW5l
YXJGaWx0ZXIoKSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfT0VTX3Rl
eHR1cmVfZmxvYXRfbGluZWFyICI7CisgICAgfQorCisgICAgaWYgKHN1cHBvcnRzTm9uUG93ZXIy
VGV4dHVyZSgpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9PRVNfdGV4
dHVyZV9ucG90ICI7CisgICAgfQorCisgICAgLy8gTXVsdGktdmVuZG9yIChFWFQpIGV4dGVuc2lv
bnMKKyAgICBpZiAoc3VwcG9ydHNPY2NsdXNpb25RdWVyaWVzKCkpCisgICAgeworICAgICAgICBl
eHRlbnNpb25TdHJpbmcgKz0gIkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiAiOworICAg
IH0KKworICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgIjsK
KyAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX0VYVF9yb2J1c3RuZXNzICI7CisKKyAgICBpZiAo
c3VwcG9ydHNEWFQxVGV4dHVyZXMoKSkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZyAr
PSAiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSAiOworICAgIH0KKworICAgIGlmIChz
dXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5KCkpCisgICAgeworICAgICAgICBleHRlbnNp
b25TdHJpbmcgKz0gIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyAiOworICAgIH0K
KworICAgIGlmIChzdXBwb3J0c0JHUkFUZXh0dXJlcygpKQorICAgIHsKKyAgICAgICAgZXh0ZW5z
aW9uU3RyaW5nICs9ICJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggIjsKKyAgICB9CisK
KyAgICBpZiAobVJlbmRlcmVyLT5nZXRNYXhSZW5kZXJUYXJnZXRzKCkgPiAxKQorICAgIHsKKyAg
ICAgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9FWFRfZHJhd19idWZmZXJzICI7CisgICAgfQor
CisgICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlICI7CisgICAg
ZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9FWFRfZnJhZ19kZXB0aCAiOworCisgICAgLy8gQU5HTEUt
c3BlY2lmaWMgZXh0ZW5zaW9ucworICAgIGlmIChzdXBwb3J0c0RlcHRoVGV4dHVyZXMoKSkKKyAg
ICB7CisgICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSAi
OworICAgIH0KKworICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfZnJhbWVidWZmZXJf
YmxpdCAiOworICAgIGlmIChnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgIT0gMCkKKyAgICB7Cisg
ICAgICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1w
bGUgIjsKKyAgICB9CisKKyAgICBpZiAoc3VwcG9ydHNJbnN0YW5jaW5nKCkpCisgICAgeworICAg
ICAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMgIjsKKyAg
ICB9CisKKyAgICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX3BhY2tfcmV2ZXJzZV9yb3df
b3JkZXIgIjsKKworICAgIGlmIChzdXBwb3J0c0RYVDNUZXh0dXJlcygpKQorICAgIHsKKyAgICAg
ICAgZXh0ZW5zaW9uU3RyaW5nICs9ICJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMg
IjsKKyAgICB9CisgICAgaWYgKHN1cHBvcnRzRFhUNVRleHR1cmVzKCkpCisgICAgeworICAgICAg
ICBleHRlbnNpb25TdHJpbmcgKz0gIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSAi
OworICAgIH0KKworICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfdGV4dHVyZV91c2Fn
ZSAiOworICAgIGV4dGVuc2lvblN0cmluZyArPSAiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJf
c291cmNlICI7CisKKyAgICAvLyBPdGhlciB2ZW5kb3Itc3BlY2lmaWMgZXh0ZW5zaW9ucworICAg
IGlmIChzdXBwb3J0c0V2ZW50UXVlcmllcygpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3Ry
aW5nICs9ICJHTF9OVl9mZW5jZSAiOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5
cGUgZW5kID0gZXh0ZW5zaW9uU3RyaW5nLmZpbmRfbGFzdF9ub3Rfb2YoJyAnKTsKKyAgICBpZiAo
ZW5kICE9IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU3RyaW5n
LnJlc2l6ZShlbmQrMSk7CisgICAgfQorCisgICAgbUV4dGVuc2lvblN0cmluZyA9IG1ha2VTdGF0
aWNTdHJpbmcoZXh0ZW5zaW9uU3RyaW5nKTsKK30KKworY29uc3QgY2hhciAqQ29udGV4dDo6Z2V0
RXh0ZW5zaW9uU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUV4dGVuc2lvblN0cmluZzsK
K30KKwordm9pZCBDb250ZXh0Ojppbml0UmVuZGVyZXJTdHJpbmcoKQoreworICAgIHN0ZDo6b3N0
cmluZ3N0cmVhbSByZW5kZXJlclN0cmluZzsKKyAgICByZW5kZXJlclN0cmluZyA8PCAiQU5HTEUg
KCI7CisgICAgcmVuZGVyZXJTdHJpbmcgPDwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlckRlc2NyaXB0
aW9uKCk7CisgICAgcmVuZGVyZXJTdHJpbmcgPDwgIikiOworCisgICAgbVJlbmRlcmVyU3RyaW5n
ID0gbWFrZVN0YXRpY1N0cmluZyhyZW5kZXJlclN0cmluZy5zdHIoKSk7Cit9CisKK2NvbnN0IGNo
YXIgKkNvbnRleHQ6OmdldFJlbmRlcmVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJl
bmRlcmVyU3RyaW5nOworfQorCit2b2lkIENvbnRleHQ6OmJsaXRGcmFtZWJ1ZmZlcihHTGludCBz
cmNYMCwgR0xpbnQgc3JjWTAsIEdMaW50IHNyY1gxLCBHTGludCBzcmNZMSwgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRzdFgx
LCBHTGludCBkc3RZMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQg
bWFzaykKK3sKKyAgICBGcmFtZWJ1ZmZlciAqcmVhZEZyYW1lYnVmZmVyID0gZ2V0UmVhZEZyYW1l
YnVmZmVyKCk7CisgICAgRnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciA9IGdldERyYXdGcmFt
ZWJ1ZmZlcigpOworCisgICAgaWYgKCFyZWFkRnJhbWVidWZmZXIgfHwgcmVhZEZyYW1lYnVmZmVy
LT5jb21wbGV0ZW5lc3MoKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSB8fAorICAgICAgICAh
ZHJhd0ZyYW1lYnVmZmVyIHx8IGRyYXdGcmFtZWJ1ZmZlci0+Y29tcGxldGVuZXNzKCkgIT0gR0xf
RlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICBpZiAoZHJhd0Zy
YW1lYnVmZmVyLT5nZXRTYW1wbGVzKCkgIT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAgIFJlbmRlcmJ1ZmZlciAq
cmVhZENvbG9yQnVmZmVyID0gcmVhZEZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKTsK
KyAgICBSZW5kZXJidWZmZXIgKmRyYXdDb2xvckJ1ZmZlciA9IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0
Rmlyc3RDb2xvcmJ1ZmZlcigpOworCisgICAgaWYgKGRyYXdDb2xvckJ1ZmZlciA9PSBOVUxMKQor
ICAgIHsKKyAgICAgICAgRVJSKCJEcmF3IGJ1ZmZlcnMgZm9ybWF0cyBkb24ndCBtYXRjaCwgd2hp
Y2ggaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGltcGxlbWVudGF0aW9uIG9mIEJsaXRGcmFtZWJ1
ZmZlckFOR0xFIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgIH0KKworICAgIGludCByZWFkQnVmZmVyV2lkdGggPSByZWFkQ29sb3JCdWZmZXIt
PmdldFdpZHRoKCk7CisgICAgaW50IHJlYWRCdWZmZXJIZWlnaHQgPSByZWFkQ29sb3JCdWZmZXIt
PmdldEhlaWdodCgpOworICAgIGludCBkcmF3QnVmZmVyV2lkdGggPSBkcmF3Q29sb3JCdWZmZXIt
PmdldFdpZHRoKCk7CisgICAgaW50IGRyYXdCdWZmZXJIZWlnaHQgPSBkcmF3Q29sb3JCdWZmZXIt
PmdldEhlaWdodCgpOworCisgICAgUmVjdGFuZ2xlIHNvdXJjZVJlY3Q7CisgICAgUmVjdGFuZ2xl
IGRlc3RSZWN0OworCisgICAgaWYgKHNyY1gwIDwgc3JjWDEpCisgICAgeworICAgICAgICBzb3Vy
Y2VSZWN0LnggPSBzcmNYMDsKKyAgICAgICAgZGVzdFJlY3QueCA9IGRzdFgwOworICAgICAgICBz
b3VyY2VSZWN0LndpZHRoID0gc3JjWDEgLSBzcmNYMDsKKyAgICAgICAgZGVzdFJlY3Qud2lkdGgg
PSBkc3RYMSAtIGRzdFgwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBzb3VyY2VS
ZWN0LnggPSBzcmNYMTsKKyAgICAgICAgZGVzdFJlY3QueCA9IGRzdFgxOworICAgICAgICBzb3Vy
Y2VSZWN0LndpZHRoID0gc3JjWDAgLSBzcmNYMTsKKyAgICAgICAgZGVzdFJlY3Qud2lkdGggPSBk
c3RYMCAtIGRzdFgxOworICAgIH0KKworICAgIGlmIChzcmNZMCA8IHNyY1kxKQorICAgIHsKKyAg
ICAgICAgc291cmNlUmVjdC5oZWlnaHQgPSBzcmNZMSAtIHNyY1kwOworICAgICAgICBkZXN0UmVj
dC5oZWlnaHQgPSBkc3RZMSAtIGRzdFkwOworICAgICAgICBzb3VyY2VSZWN0LnkgPSBzcmNZMDsK
KyAgICAgICAgZGVzdFJlY3QueSA9IGRzdFkwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBzb3VyY2VSZWN0LmhlaWdodCA9IHNyY1kwIC0gc3JjWTE7CisgICAgICAgIGRlc3RSZWN0
LmhlaWdodCA9IGRzdFkwIC0gc3JjWTE7CisgICAgICAgIHNvdXJjZVJlY3QueSA9IHNyY1kxOwor
ICAgICAgICBkZXN0UmVjdC55ID0gZHN0WTE7CisgICAgfQorCisgICAgUmVjdGFuZ2xlIHNvdXJj
ZVNjaXNzb3JlZFJlY3QgPSBzb3VyY2VSZWN0OworICAgIFJlY3RhbmdsZSBkZXN0U2Npc3NvcmVk
UmVjdCA9IGRlc3RSZWN0OworCisgICAgaWYgKG1TdGF0ZS5zY2lzc29yVGVzdCkKKyAgICB7Cisg
ICAgICAgIC8vIE9ubHkgd3JpdGUgdG8gcGFydHMgb2YgdGhlIGRlc3RpbmF0aW9uIGZyYW1lYnVm
ZmVyIHdoaWNoIHBhc3MgdGhlIHNjaXNzb3IgdGVzdC4KKyAgICAgICAgaWYgKGRlc3RSZWN0Lngg
PCBtU3RhdGUuc2Npc3Nvci54KQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgeERpZmYgPSBt
U3RhdGUuc2Npc3Nvci54IC0gZGVzdFJlY3QueDsKKyAgICAgICAgICAgIGRlc3RTY2lzc29yZWRS
ZWN0LnggPSBtU3RhdGUuc2Npc3Nvci54OworICAgICAgICAgICAgZGVzdFNjaXNzb3JlZFJlY3Qu
d2lkdGggLT0geERpZmY7CisgICAgICAgICAgICBzb3VyY2VTY2lzc29yZWRSZWN0LnggKz0geERp
ZmY7CisgICAgICAgICAgICBzb3VyY2VTY2lzc29yZWRSZWN0LndpZHRoIC09IHhEaWZmOworCisg
ICAgICAgIH0KKworICAgICAgICBpZiAoZGVzdFJlY3QueCArIGRlc3RSZWN0LndpZHRoID4gbVN0
YXRlLnNjaXNzb3IueCArIG1TdGF0ZS5zY2lzc29yLndpZHRoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpbnQgeERpZmYgPSAoZGVzdFJlY3QueCArIGRlc3RSZWN0LndpZHRoKSAtIChtU3RhdGUu
c2Npc3Nvci54ICsgbVN0YXRlLnNjaXNzb3Iud2lkdGgpOworICAgICAgICAgICAgZGVzdFNjaXNz
b3JlZFJlY3Qud2lkdGggLT0geERpZmY7CisgICAgICAgICAgICBzb3VyY2VTY2lzc29yZWRSZWN0
LndpZHRoIC09IHhEaWZmOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlc3RSZWN0LnkgPCBt
U3RhdGUuc2Npc3Nvci55KQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgeURpZmYgPSBtU3Rh
dGUuc2Npc3Nvci55IC0gZGVzdFJlY3QueTsKKyAgICAgICAgICAgIGRlc3RTY2lzc29yZWRSZWN0
LnkgPSBtU3RhdGUuc2Npc3Nvci55OworICAgICAgICAgICAgZGVzdFNjaXNzb3JlZFJlY3QuaGVp
Z2h0IC09IHlEaWZmOworICAgICAgICAgICAgc291cmNlU2Npc3NvcmVkUmVjdC55ICs9IHlEaWZm
OworICAgICAgICAgICAgc291cmNlU2Npc3NvcmVkUmVjdC5oZWlnaHQgLT0geURpZmY7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoZGVzdFJlY3QueSArIGRlc3RSZWN0LmhlaWdodCA+IG1TdGF0
ZS5zY2lzc29yLnkgKyBtU3RhdGUuc2Npc3Nvci5oZWlnaHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGludCB5RGlmZiA9IChkZXN0UmVjdC55ICsgZGVzdFJlY3QuaGVpZ2h0KSAtIChtU3RhdGUu
c2Npc3Nvci55ICsgbVN0YXRlLnNjaXNzb3IuaGVpZ2h0KTsKKyAgICAgICAgICAgIGRlc3RTY2lz
c29yZWRSZWN0LmhlaWdodCAgLT0geURpZmY7CisgICAgICAgICAgICBzb3VyY2VTY2lzc29yZWRS
ZWN0LmhlaWdodCAtPSB5RGlmZjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgYmxpdFJl
bmRlclRhcmdldCA9IGZhbHNlOworICAgIGJvb2wgYmxpdERlcHRoU3RlbmNpbCA9IGZhbHNlOwor
CisgICAgUmVjdGFuZ2xlIHNvdXJjZVRyaW1tZWRSZWN0ID0gc291cmNlU2Npc3NvcmVkUmVjdDsK
KyAgICBSZWN0YW5nbGUgZGVzdFRyaW1tZWRSZWN0ID0gZGVzdFNjaXNzb3JlZFJlY3Q7CisKKyAg
ICAvLyBUaGUgc291cmNlICYgZGVzdGluYXRpb24gcmVjdGFuZ2xlcyBhbHNvIG1heSBuZWVkIHRv
IGJlIHRyaW1tZWQgaWYgdGhleSBmYWxsIG91dCBvZiB0aGUgYm91bmRzIG9mIAorICAgIC8vIHRo
ZSBhY3R1YWwgZHJhdyBhbmQgcmVhZCBzdXJmYWNlcy4KKyAgICBpZiAoc291cmNlVHJpbW1lZFJl
Y3QueCA8IDApCisgICAgeworICAgICAgICBpbnQgeERpZmYgPSAwIC0gc291cmNlVHJpbW1lZFJl
Y3QueDsKKyAgICAgICAgc291cmNlVHJpbW1lZFJlY3QueCA9IDA7CisgICAgICAgIHNvdXJjZVRy
aW1tZWRSZWN0LndpZHRoIC09IHhEaWZmOworICAgICAgICBkZXN0VHJpbW1lZFJlY3QueCArPSB4
RGlmZjsKKyAgICAgICAgZGVzdFRyaW1tZWRSZWN0LndpZHRoIC09IHhEaWZmOworICAgIH0KKwor
ICAgIGlmIChzb3VyY2VUcmltbWVkUmVjdC54ICsgc291cmNlVHJpbW1lZFJlY3Qud2lkdGggPiBy
ZWFkQnVmZmVyV2lkdGgpCisgICAgeworICAgICAgICBpbnQgeERpZmYgPSAoc291cmNlVHJpbW1l
ZFJlY3QueCArIHNvdXJjZVRyaW1tZWRSZWN0LndpZHRoKSAtIHJlYWRCdWZmZXJXaWR0aDsKKyAg
ICAgICAgc291cmNlVHJpbW1lZFJlY3Qud2lkdGggLT0geERpZmY7CisgICAgICAgIGRlc3RUcmlt
bWVkUmVjdC53aWR0aCAtPSB4RGlmZjsKKyAgICB9CisKKyAgICBpZiAoc291cmNlVHJpbW1lZFJl
Y3QueSA8IDApCisgICAgeworICAgICAgICBpbnQgeURpZmYgPSAwIC0gc291cmNlVHJpbW1lZFJl
Y3QueTsKKyAgICAgICAgc291cmNlVHJpbW1lZFJlY3QueSA9IDA7CisgICAgICAgIHNvdXJjZVRy
aW1tZWRSZWN0LmhlaWdodCAtPSB5RGlmZjsKKyAgICAgICAgZGVzdFRyaW1tZWRSZWN0LnkgKz0g
eURpZmY7CisgICAgICAgIGRlc3RUcmltbWVkUmVjdC5oZWlnaHQgLT0geURpZmY7CisgICAgfQor
CisgICAgaWYgKHNvdXJjZVRyaW1tZWRSZWN0LnkgKyBzb3VyY2VUcmltbWVkUmVjdC5oZWlnaHQg
PiByZWFkQnVmZmVySGVpZ2h0KQorICAgIHsKKyAgICAgICAgaW50IHlEaWZmID0gKHNvdXJjZVRy
aW1tZWRSZWN0LnkgKyBzb3VyY2VUcmltbWVkUmVjdC5oZWlnaHQpIC0gcmVhZEJ1ZmZlckhlaWdo
dDsKKyAgICAgICAgc291cmNlVHJpbW1lZFJlY3QuaGVpZ2h0IC09IHlEaWZmOworICAgICAgICBk
ZXN0VHJpbW1lZFJlY3QuaGVpZ2h0IC09IHlEaWZmOworICAgIH0KKworICAgIGlmIChkZXN0VHJp
bW1lZFJlY3QueCA8IDApCisgICAgeworICAgICAgICBpbnQgeERpZmYgPSAwIC0gZGVzdFRyaW1t
ZWRSZWN0Lng7CisgICAgICAgIGRlc3RUcmltbWVkUmVjdC54ID0gMDsKKyAgICAgICAgZGVzdFRy
aW1tZWRSZWN0LndpZHRoIC09IHhEaWZmOworICAgICAgICBzb3VyY2VUcmltbWVkUmVjdC54ICs9
IHhEaWZmOworICAgICAgICBzb3VyY2VUcmltbWVkUmVjdC53aWR0aCAtPSB4RGlmZjsKKyAgICB9
CisKKyAgICBpZiAoZGVzdFRyaW1tZWRSZWN0LnggKyBkZXN0VHJpbW1lZFJlY3Qud2lkdGggPiBk
cmF3QnVmZmVyV2lkdGgpCisgICAgeworICAgICAgICBpbnQgeERpZmYgPSAoZGVzdFRyaW1tZWRS
ZWN0LnggKyBkZXN0VHJpbW1lZFJlY3Qud2lkdGgpIC0gZHJhd0J1ZmZlcldpZHRoOworICAgICAg
ICBkZXN0VHJpbW1lZFJlY3Qud2lkdGggLT0geERpZmY7CisgICAgICAgIHNvdXJjZVRyaW1tZWRS
ZWN0LndpZHRoIC09IHhEaWZmOworICAgIH0KKworICAgIGlmIChkZXN0VHJpbW1lZFJlY3QueSA8
IDApCisgICAgeworICAgICAgICBpbnQgeURpZmYgPSAwIC0gZGVzdFRyaW1tZWRSZWN0Lnk7Cisg
ICAgICAgIGRlc3RUcmltbWVkUmVjdC55ID0gMDsKKyAgICAgICAgZGVzdFRyaW1tZWRSZWN0Lmhl
aWdodCAtPSB5RGlmZjsKKyAgICAgICAgc291cmNlVHJpbW1lZFJlY3QueSArPSB5RGlmZjsKKyAg
ICAgICAgc291cmNlVHJpbW1lZFJlY3QuaGVpZ2h0IC09IHlEaWZmOworICAgIH0KKworICAgIGlm
IChkZXN0VHJpbW1lZFJlY3QueSArIGRlc3RUcmltbWVkUmVjdC5oZWlnaHQgPiBkcmF3QnVmZmVy
SGVpZ2h0KQorICAgIHsKKyAgICAgICAgaW50IHlEaWZmID0gKGRlc3RUcmltbWVkUmVjdC55ICsg
ZGVzdFRyaW1tZWRSZWN0LmhlaWdodCkgLSBkcmF3QnVmZmVySGVpZ2h0OworICAgICAgICBkZXN0
VHJpbW1lZFJlY3QuaGVpZ2h0IC09IHlEaWZmOworICAgICAgICBzb3VyY2VUcmltbWVkUmVjdC5o
ZWlnaHQgLT0geURpZmY7CisgICAgfQorCisgICAgYm9vbCBwYXJ0aWFsQnVmZmVyQ29weSA9IGZh
bHNlOworICAgIGlmIChzb3VyY2VUcmltbWVkUmVjdC5oZWlnaHQgPCByZWFkQnVmZmVySGVpZ2h0
IHx8CisgICAgICAgIHNvdXJjZVRyaW1tZWRSZWN0LndpZHRoIDwgcmVhZEJ1ZmZlcldpZHRoIHx8
IAorICAgICAgICBkZXN0VHJpbW1lZFJlY3QuaGVpZ2h0IDwgZHJhd0J1ZmZlckhlaWdodCB8fAor
ICAgICAgICBkZXN0VHJpbW1lZFJlY3Qud2lkdGggPCBkcmF3QnVmZmVyV2lkdGggfHwKKyAgICAg
ICAgc291cmNlVHJpbW1lZFJlY3QueSAhPSAwIHx8IGRlc3RUcmltbWVkUmVjdC55ICE9IDAgfHwg
c291cmNlVHJpbW1lZFJlY3QueCAhPSAwIHx8IGRlc3RUcmltbWVkUmVjdC54ICE9IDApCisgICAg
eworICAgICAgICBwYXJ0aWFsQnVmZmVyQ29weSA9IHRydWU7CisgICAgfQorCisgICAgaWYgKG1h
c2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKQorICAgIHsKKyAgICAgICAgY29uc3QgR0xlbnVtIHJl
YWRDb2xvcmJ1ZmZlclR5cGUgPSByZWFkRnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlclR5
cGUoKTsKKyAgICAgICAgY29uc3QgYm9vbCB2YWxpZFJlYWRUeXBlID0gKHJlYWRDb2xvcmJ1ZmZl
clR5cGUgPT0gR0xfVEVYVFVSRV8yRCkgfHwgKHJlYWRDb2xvcmJ1ZmZlclR5cGUgPT0gR0xfUkVO
REVSQlVGRkVSKTsKKyAgICAgICAgYm9vbCB2YWxpZERyYXdUeXBlID0gdHJ1ZTsKKyAgICAgICAg
Ym9vbCB2YWxpZERyYXdGb3JtYXQgPSB0cnVlOworCisgICAgICAgIGZvciAodW5zaWduZWQgaW50
IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IGdsOjpJTVBMRU1FTlRBVElP
Tl9NQVhfRFJBV19CVUZGRVJTOyBjb2xvckF0dGFjaG1lbnQrKykKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGRyYXdGcmFtZWJ1ZmZlci0+aXNFbmFibGVkQ29sb3JBdHRhY2htZW50KGNvbG9y
QXR0YWNobWVudCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGRyYXdGcmFt
ZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXJUeXBlKGNvbG9yQXR0YWNobWVudCkgIT0gR0xfVEVYVFVS
RV8yRCAmJgorICAgICAgICAgICAgICAgICAgICBkcmF3RnJhbWVidWZmZXItPmdldENvbG9yYnVm
ZmVyVHlwZShjb2xvckF0dGFjaG1lbnQpICE9IEdMX1JFTkRFUkJVRkZFUikKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHZhbGlkRHJhd1R5cGUgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZHJhd0ZyYW1lYnVmZmVyLT5nZXRD
b2xvcmJ1ZmZlcihjb2xvckF0dGFjaG1lbnQpLT5nZXRBY3R1YWxGb3JtYXQoKSAhPSByZWFkQ29s
b3JCdWZmZXItPmdldEFjdHVhbEZvcm1hdCgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgdmFsaWREcmF3Rm9ybWF0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCF2YWxpZFJlYWRUeXBlIHx8
ICF2YWxpZERyYXdUeXBlIHx8ICF2YWxpZERyYXdGb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEVSUigiQ29sb3IgYnVmZmVyIGZvcm1hdCBjb252ZXJzaW9uIGluIEJsaXRGcmFtZWJ1ZmZl
ckFOR0xFIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbiIpOworICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGlmIChwYXJ0aWFsQnVmZmVyQ29weSAmJiByZWFkRnJhbWVidWZmZXIt
PmdldFNhbXBsZXMoKSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgfQorCisgICAgICAgIGJsaXRSZW5k
ZXJUYXJnZXQgPSB0cnVlOworCisgICAgfQorCisgICAgaWYgKG1hc2sgJiAoR0xfREVQVEhfQlVG
RkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCkpCisgICAgeworICAgICAgICBSZW5kZXJi
dWZmZXIgKnJlYWREU0J1ZmZlciA9IE5VTEw7CisgICAgICAgIFJlbmRlcmJ1ZmZlciAqZHJhd0RT
QnVmZmVyID0gTlVMTDsKKworICAgICAgICAvLyBXZSBzdXBwb3J0IE9FU19wYWNrZWRfZGVwdGhf
c3RlbmNpbCwgYW5kIGRvIG5vdCBzdXBwb3J0IGEgc2VwYXJhdGVseSBhdHRhY2hlZCBkZXB0aCBh
bmQgc3RlbmNpbCBidWZmZXIsIHNvIGlmIHdlIGhhdmUKKyAgICAgICAgLy8gYm90aCBhIGRlcHRo
IGFuZCBzdGVuY2lsIGJ1ZmZlciwgaXQgd2lsbCBiZSB0aGUgc2FtZSBidWZmZXIuCisKKyAgICAg
ICAgaWYgKG1hc2sgJiBHTF9ERVBUSF9CVUZGRVJfQklUKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAocmVhZEZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1ZmZlcigpICYmIGRyYXdGcmFtZWJ1ZmZl
ci0+Z2V0RGVwdGhidWZmZXIoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAo
cmVhZEZyYW1lYnVmZmVyLT5nZXREZXB0aGJ1ZmZlclR5cGUoKSAhPSBkcmF3RnJhbWVidWZmZXIt
PmdldERlcHRoYnVmZmVyVHlwZSgpIHx8CisgICAgICAgICAgICAgICAgICAgIHJlYWRGcmFtZWJ1
ZmZlci0+Z2V0RGVwdGhidWZmZXIoKS0+Z2V0QWN0dWFsRm9ybWF0KCkgIT0gZHJhd0ZyYW1lYnVm
ZmVyLT5nZXREZXB0aGJ1ZmZlcigpLT5nZXRBY3R1YWxGb3JtYXQoKSkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJsaXREZXB0aFN0
ZW5jaWwgPSB0cnVlOworICAgICAgICAgICAgICAgIHJlYWREU0J1ZmZlciA9IHJlYWRGcmFtZWJ1
ZmZlci0+Z2V0RGVwdGhidWZmZXIoKTsKKyAgICAgICAgICAgICAgICBkcmF3RFNCdWZmZXIgPSBk
cmF3RnJhbWVidWZmZXItPmdldERlcHRoYnVmZmVyKCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBpZiAobWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHJlYWRGcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlcigpICYm
IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlcigpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmIChyZWFkRnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXJUeXBlKCkg
IT0gZHJhd0ZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyVHlwZSgpIHx8CisgICAgICAgICAg
ICAgICAgICAgIHJlYWRGcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlcigpLT5nZXRBY3R1YWxG
b3JtYXQoKSAhPSBkcmF3RnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXIoKS0+Z2V0QWN0dWFs
Rm9ybWF0KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBibGl0RGVwdGhTdGVuY2lsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBy
ZWFkRFNCdWZmZXIgPSByZWFkRnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZmZXIoKTsKKyAgICAg
ICAgICAgICAgICBkcmF3RFNCdWZmZXIgPSBkcmF3RnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZm
ZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChwYXJ0aWFsQnVm
ZmVyQ29weSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJPbmx5IHdob2xlLWJ1ZmZlciBk
ZXB0aCBhbmQgc3RlbmNpbCBibGl0cyBhcmUgc3VwcG9ydGVkIGJ5IHRoaXMgaW1wbGVtZW50YXRp
b24uIik7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsgLy8gb25seSB3aG9sZS1idWZmZXIgY29waWVzIGFyZSBwZXJtaXR0ZWQKKyAgICAgICAgfQor
CisgICAgICAgIGlmICgoZHJhd0RTQnVmZmVyICYmIGRyYXdEU0J1ZmZlci0+Z2V0U2FtcGxlcygp
ICE9IDApIHx8IAorICAgICAgICAgICAgKHJlYWREU0J1ZmZlciAmJiByZWFkRFNCdWZmZXItPmdl
dFNhbXBsZXMoKSAhPSAwKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYmxp
dFJlbmRlclRhcmdldCB8fCBibGl0RGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgbVJlbmRl
cmVyLT5ibGl0UmVjdChyZWFkRnJhbWVidWZmZXIsIHNvdXJjZVRyaW1tZWRSZWN0LCBkcmF3RnJh
bWVidWZmZXIsIGRlc3RUcmltbWVkUmVjdCwgYmxpdFJlbmRlclRhcmdldCwgYmxpdERlcHRoU3Rl
bmNpbCk7CisgICAgfQorfQorCit9CisKK2V4dGVybiAiQyIKK3sKK2dsOjpDb250ZXh0ICpnbENy
ZWF0ZUNvbnRleHQoY29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwgcng6OlJlbmRlcmVy
ICpyZW5kZXJlciwgYm9vbCBub3RpZnlSZXNldHMsIGJvb2wgcm9idXN0QWNjZXNzKQoreworICAg
IHJldHVybiBuZXcgZ2w6OkNvbnRleHQoc2hhcmVDb250ZXh0LCByZW5kZXJlciwgbm90aWZ5UmVz
ZXRzLCByb2J1c3RBY2Nlc3MpOworfQorCit2b2lkIGdsRGVzdHJveUNvbnRleHQoZ2w6OkNvbnRl
eHQgKmNvbnRleHQpCit7CisgICAgZGVsZXRlIGNvbnRleHQ7CisKKyAgICBpZiAoY29udGV4dCA9
PSBnbDo6Z2V0Q29udGV4dCgpKQorICAgIHsKKyAgICAgICAgZ2w6Om1ha2VDdXJyZW50KE5VTEws
IE5VTEwsIE5VTEwpOworICAgIH0KK30KKwordm9pZCBnbE1ha2VDdXJyZW50KGdsOjpDb250ZXh0
ICpjb250ZXh0LCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkK
K3sKKyAgICBnbDo6bWFrZUN1cnJlbnQoY29udGV4dCwgZGlzcGxheSwgc3VyZmFjZSk7Cit9CisK
K2dsOjpDb250ZXh0ICpnbEdldEN1cnJlbnRDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gZ2w6Omdl
dENvbnRleHQoKTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9Db250ZXh0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL0NvbnRleHQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
MDUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIENvbnRleHQuaDogRGVmaW5lcyB0aGUgZ2w6
OkNvbnRleHQgY2xhc3MsIG1hbmFnaW5nIGFsbCBHTCBzdGF0ZSBhbmQgcGVyZm9ybWluZworLy8g
cmVuZGVyaW5nIG9wZXJhdGlvbnMuIEl0IGlzIHRoZSBHTEVTMiBzcGVjaWZpYyBpbXBsZW1lbnRh
dGlvbiBvZiBFR0xDb250ZXh0LgorCisjaWZuZGVmIExJQkdMRVNWMl9DT05URVhUX0hfCisjZGVm
aW5lIExJQkdMRVNWMl9DT05URVhUX0hfCisKKyNkZWZpbmUgR0xfQVBJQ0FMTAorI2luY2x1ZGUg
PEdMRVMyL2dsMi5oPgorI2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgorI2RlZmluZSBFR0xBUEkK
KyNpbmNsdWRlIDxFR0wvZWdsLmg+CisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8bWFw
PgorI2lmZGVmIF9NU0NfVkVSCisjaW5jbHVkZSA8aGFzaF9tYXA+CisjZWxzZQorI2luY2x1ZGUg
PHVub3JkZXJlZF9tYXA+CisjZW5kaWYKKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgi
CisjaW5jbHVkZSAiY29tbW9uL1JlZkNvdW50T2JqZWN0LmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L0hhbmRsZUFsbG9jYXRvci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9hbmdsZXR5cGVzLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL0NvbnN0YW50cy5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNz
IFJlbmRlcmVyOworfQorCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBEaXNwbGF5OworY2xhc3Mg
U3VyZmFjZTsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBTaGFkZXI7CitjbGFzcyBQcm9n
cmFtOworY2xhc3MgUHJvZ3JhbUJpbmFyeTsKK2NsYXNzIFRleHR1cmU7CitjbGFzcyBUZXh0dXJl
MkQ7CitjbGFzcyBUZXh0dXJlQ3ViZU1hcDsKK2NsYXNzIEZyYW1lYnVmZmVyOworY2xhc3MgUmVu
ZGVyYnVmZmVyOworY2xhc3MgUmVuZGVyYnVmZmVyU3RvcmFnZTsKK2NsYXNzIENvbG9yYnVmZmVy
OworY2xhc3MgRGVwdGhidWZmZXI7CitjbGFzcyBTdGVuY2lsYnVmZmVyOworY2xhc3MgRGVwdGhT
dGVuY2lsYnVmZmVyOworY2xhc3MgRmVuY2U7CitjbGFzcyBRdWVyeTsKK2NsYXNzIFJlc291cmNl
TWFuYWdlcjsKK2NsYXNzIEJ1ZmZlcjsKKworZW51bSBRdWVyeVR5cGUKK3sKKyAgICBRVUVSWV9B
TllfU0FNUExFU19QQVNTRUQsCisgICAgUVVFUllfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZB
VElWRSwKKworICAgIFFVRVJZX1RZUEVfQ09VTlQKK307CisKKy8vIEhlbHBlciBzdHJ1Y3R1cmUg
ZGVzY3JpYmluZyBhIHNpbmdsZSB2ZXJ0ZXggYXR0cmlidXRlCitjbGFzcyBWZXJ0ZXhBdHRyaWJ1
dGUKK3sKKyAgcHVibGljOgorICAgIFZlcnRleEF0dHJpYnV0ZSgpIDogbVR5cGUoR0xfRkxPQVQp
LCBtU2l6ZSgwKSwgbU5vcm1hbGl6ZWQoZmFsc2UpLCBtU3RyaWRlKDApLCBtUG9pbnRlcihOVUxM
KSwgbUFycmF5RW5hYmxlZChmYWxzZSksIG1EaXZpc29yKDApCisgICAgeworICAgICAgICBtQ3Vy
cmVudFZhbHVlWzBdID0gMC4wZjsKKyAgICAgICAgbUN1cnJlbnRWYWx1ZVsxXSA9IDAuMGY7Cisg
ICAgICAgIG1DdXJyZW50VmFsdWVbMl0gPSAwLjBmOworICAgICAgICBtQ3VycmVudFZhbHVlWzNd
ID0gMS4wZjsKKyAgICB9CisKKyAgICBpbnQgdHlwZVNpemUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgc3dpdGNoIChtVHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfQllURTogICAg
ICAgICAgIHJldHVybiBtU2l6ZSAqIHNpemVvZihHTGJ5dGUpOworICAgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfQllURTogIHJldHVybiBtU2l6ZSAqIHNpemVvZihHTHVieXRlKTsKKyAgICAgICAg
ICBjYXNlIEdMX1NIT1JUOiAgICAgICAgICByZXR1cm4gbVNpemUgKiBzaXplb2YoR0xzaG9ydCk7
CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDogcmV0dXJuIG1TaXplICogc2l6ZW9m
KEdMdXNob3J0KTsKKyAgICAgICAgICBjYXNlIEdMX0ZJWEVEOiAgICAgICAgICByZXR1cm4gbVNp
emUgKiBzaXplb2YoR0xmaXhlZCk7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVDogICAgICAgICAg
cmV0dXJuIG1TaXplICogc2l6ZW9mKEdMZmxvYXQpOworICAgICAgICAgIGRlZmF1bHQ6IFVOUkVB
Q0hBQkxFKCk7IHJldHVybiBtU2l6ZSAqIHNpemVvZihHTGZsb2F0KTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIEdMc2l6ZWkgc3RyaWRlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
U3RyaWRlID8gbVN0cmlkZSA6IHR5cGVTaXplKCk7CisgICAgfQorCisgICAgLy8gRnJvbSBnbFZl
cnRleEF0dHJpYlBvaW50ZXIKKyAgICBHTGVudW0gbVR5cGU7CisgICAgR0xpbnQgbVNpemU7Cisg
ICAgYm9vbCBtTm9ybWFsaXplZDsKKyAgICBHTHNpemVpIG1TdHJpZGU7ICAgLy8gMCBtZWFucyBu
YXR1cmFsIHN0cmlkZQorCisgICAgdW5pb24KKyAgICB7CisgICAgICAgIGNvbnN0IHZvaWQgKm1Q
b2ludGVyOworICAgICAgICBpbnRwdHJfdCBtT2Zmc2V0OworICAgIH07CisKKyAgICBCaW5kaW5n
UG9pbnRlcjxCdWZmZXI+IG1Cb3VuZEJ1ZmZlcjsgICAvLyBDYXB0dXJlZCB3aGVuIGdsVmVydGV4
QXR0cmliUG9pbnRlciBpcyBjYWxsZWQuCisKKyAgICBib29sIG1BcnJheUVuYWJsZWQ7ICAgLy8g
RnJvbSBnbEVuYWJsZS9EaXNhYmxlVmVydGV4QXR0cmliQXJyYXkKKyAgICBmbG9hdCBtQ3VycmVu
dFZhbHVlWzRdOyAgIC8vIEZyb20gZ2xWZXJ0ZXhBdHRyaWIKKyAgICB1bnNpZ25lZCBpbnQgbURp
dmlzb3I7Cit9OworCisvLyBIZWxwZXIgc3RydWN0dXJlIHRvIHN0b3JlIGFsbCByYXcgc3RhdGUK
K3N0cnVjdCBTdGF0ZQoreworICAgIENvbG9yIGNvbG9yQ2xlYXJWYWx1ZTsKKyAgICBHTGNsYW1w
ZiBkZXB0aENsZWFyVmFsdWU7CisgICAgaW50IHN0ZW5jaWxDbGVhclZhbHVlOworCisgICAgUmFz
dGVyaXplclN0YXRlIHJhc3Rlcml6ZXI7CisgICAgYm9vbCBzY2lzc29yVGVzdDsKKyAgICBSZWN0
YW5nbGUgc2Npc3NvcjsKKworICAgIEJsZW5kU3RhdGUgYmxlbmQ7CisgICAgQ29sb3IgYmxlbmRD
b2xvcjsKKyAgICBib29sIHNhbXBsZUNvdmVyYWdlOworICAgIEdMY2xhbXBmIHNhbXBsZUNvdmVy
YWdlVmFsdWU7CisgICAgYm9vbCBzYW1wbGVDb3ZlcmFnZUludmVydDsKKworICAgIERlcHRoU3Rl
bmNpbFN0YXRlIGRlcHRoU3RlbmNpbDsKKyAgICBHTGludCBzdGVuY2lsUmVmOworICAgIEdMaW50
IHN0ZW5jaWxCYWNrUmVmOworCisgICAgR0xmbG9hdCBsaW5lV2lkdGg7CisKKyAgICBHTGVudW0g
Z2VuZXJhdGVNaXBtYXBIaW50OworICAgIEdMZW51bSBmcmFnbWVudFNoYWRlckRlcml2YXRpdmVI
aW50OworCisgICAgUmVjdGFuZ2xlIHZpZXdwb3J0OworICAgIGZsb2F0IHpOZWFyOworICAgIGZs
b2F0IHpGYXI7CisKKyAgICB1bnNpZ25lZCBpbnQgYWN0aXZlU2FtcGxlcjsgICAvLyBBY3RpdmUg
dGV4dHVyZSB1bml0IHNlbGVjdG9yIC0gR0xfVEVYVFVSRTAKKyAgICBCaW5kaW5nUG9pbnRlcjxC
dWZmZXI+IGFycmF5QnVmZmVyOworICAgIEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gZWxlbWVudEFy
cmF5QnVmZmVyOworICAgIEdMdWludCByZWFkRnJhbWVidWZmZXI7CisgICAgR0x1aW50IGRyYXdG
cmFtZWJ1ZmZlcjsKKyAgICBCaW5kaW5nUG9pbnRlcjxSZW5kZXJidWZmZXI+IHJlbmRlcmJ1ZmZl
cjsKKyAgICBHTHVpbnQgY3VycmVudFByb2dyYW07CisKKyAgICBWZXJ0ZXhBdHRyaWJ1dGUgdmVy
dGV4QXR0cmlidXRlW01BWF9WRVJURVhfQVRUUklCU107CisgICAgQmluZGluZ1BvaW50ZXI8VGV4
dHVyZT4gc2FtcGxlclRleHR1cmVbVEVYVFVSRV9UWVBFX0NPVU5UXVtJTVBMRU1FTlRBVElPTl9N
QVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU107CisgICAgQmluZGluZ1BvaW50ZXI8UXVl
cnk+IGFjdGl2ZVF1ZXJ5W1FVRVJZX1RZUEVfQ09VTlRdOworCisgICAgR0xpbnQgdW5wYWNrQWxp
Z25tZW50OworICAgIEdMaW50IHBhY2tBbGlnbm1lbnQ7CisgICAgYm9vbCBwYWNrUmV2ZXJzZVJv
d09yZGVyOworfTsKKworY2xhc3MgQ29udGV4dAoreworICBwdWJsaWM6CisgICAgQ29udGV4dChj
b25zdCBnbDo6Q29udGV4dCAqc2hhcmVDb250ZXh0LCByeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBi
b29sIG5vdGlmeVJlc2V0cywgYm9vbCByb2J1c3RBY2Nlc3MpOworCisgICAgfkNvbnRleHQoKTsK
KworICAgIHZvaWQgbWFrZUN1cnJlbnQoZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKKworICAgIHZp
cnR1YWwgdm9pZCBtYXJrQ29udGV4dExvc3QoKTsKKyAgICBib29sIGlzQ29udGV4dExvc3QoKTsK
KworICAgIC8vIFN0YXRlIG1hbmlwdWxhdGlvbgorICAgIHZvaWQgc2V0Q2xlYXJDb2xvcihmbG9h
dCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSk7CisKKyAgICB2b2lk
IHNldENsZWFyRGVwdGgoZmxvYXQgZGVwdGgpOworCisgICAgdm9pZCBzZXRDbGVhclN0ZW5jaWwo
aW50IHN0ZW5jaWwpOworCisgICAgdm9pZCBzZXRDdWxsRmFjZShib29sIGVuYWJsZWQpOworICAg
IGJvb2wgaXNDdWxsRmFjZUVuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0Q3VsbE1vZGUo
R0xlbnVtIG1vZGUpOworCisgICAgdm9pZCBzZXRGcm9udEZhY2UoR0xlbnVtIGZyb250KTsKKwor
ICAgIHZvaWQgc2V0RGVwdGhUZXN0KGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCBpc0RlcHRoVGVz
dEVuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0RGVwdGhGdW5jKEdMZW51bSBkZXB0aEZ1
bmMpOworCisgICAgdm9pZCBzZXREZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKTsK
KyAgICAKKyAgICB2b2lkIHNldEJsZW5kKGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCBpc0JsZW5k
RW5hYmxlZCgpIGNvbnN0OworCisgICAgdm9pZCBzZXRCbGVuZEZhY3RvcnMoR0xlbnVtIHNvdXJj
ZVJHQiwgR0xlbnVtIGRlc3RSR0IsIEdMZW51bSBzb3VyY2VBbHBoYSwgR0xlbnVtIGRlc3RBbHBo
YSk7CisgICAgdm9pZCBzZXRCbGVuZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0
IGJsdWUsIGZsb2F0IGFscGhhKTsKKyAgICB2b2lkIHNldEJsZW5kRXF1YXRpb24oR0xlbnVtIHJn
YkVxdWF0aW9uLCBHTGVudW0gYWxwaGFFcXVhdGlvbik7CisKKyAgICB2b2lkIHNldFN0ZW5jaWxU
ZXN0KGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCBpc1N0ZW5jaWxUZXN0RW5hYmxlZCgpIGNvbnN0
OworCisgICAgdm9pZCBzZXRTdGVuY2lsUGFyYW1zKEdMZW51bSBzdGVuY2lsRnVuYywgR0xpbnQg
c3RlbmNpbFJlZiwgR0x1aW50IHN0ZW5jaWxNYXNrKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxCYWNr
UGFyYW1zKEdMZW51bSBzdGVuY2lsQmFja0Z1bmMsIEdMaW50IHN0ZW5jaWxCYWNrUmVmLCBHTHVp
bnQgc3RlbmNpbEJhY2tNYXNrKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxXcml0ZW1hc2soR0x1aW50
IHN0ZW5jaWxXcml0ZW1hc2spOworICAgIHZvaWQgc2V0U3RlbmNpbEJhY2tXcml0ZW1hc2soR0x1
aW50IHN0ZW5jaWxCYWNrV3JpdGVtYXNrKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxPcGVyYXRpb25z
KEdMZW51bSBzdGVuY2lsRmFpbCwgR0xlbnVtIHN0ZW5jaWxQYXNzRGVwdGhGYWlsLCBHTGVudW0g
c3RlbmNpbFBhc3NEZXB0aFBhc3MpOworICAgIHZvaWQgc2V0U3RlbmNpbEJhY2tPcGVyYXRpb25z
KEdMZW51bSBzdGVuY2lsQmFja0ZhaWwsIEdMZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWws
IEdMZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MpOworCisgICAgdm9pZCBzZXRQb2x5Z29u
T2Zmc2V0RmlsbChib29sIGVuYWJsZWQpOworICAgIGJvb2wgaXNQb2x5Z29uT2Zmc2V0RmlsbEVu
YWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0UG9seWdvbk9mZnNldFBhcmFtcyhHTGZsb2F0
IGZhY3RvciwgR0xmbG9hdCB1bml0cyk7CisKKyAgICB2b2lkIHNldFNhbXBsZUFscGhhVG9Db3Zl
cmFnZShib29sIGVuYWJsZWQpOworICAgIGJvb2wgaXNTYW1wbGVBbHBoYVRvQ292ZXJhZ2VFbmFi
bGVkKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldFNhbXBsZUNvdmVyYWdlKGJvb2wgZW5hYmxlZCk7
CisgICAgYm9vbCBpc1NhbXBsZUNvdmVyYWdlRW5hYmxlZCgpIGNvbnN0OworCisgICAgdm9pZCBz
ZXRTYW1wbGVDb3ZlcmFnZVBhcmFtcyhHTGNsYW1wZiB2YWx1ZSwgYm9vbCBpbnZlcnQpOworCisg
ICAgdm9pZCBzZXRTY2lzc29yVGVzdChib29sIGVuYWJsZWQpOworICAgIGJvb2wgaXNTY2lzc29y
VGVzdEVuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0RGl0aGVyKGJvb2wgZW5hYmxlZCk7
CisgICAgYm9vbCBpc0RpdGhlckVuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0TGluZVdp
ZHRoKEdMZmxvYXQgd2lkdGgpOworCisgICAgdm9pZCBzZXRHZW5lcmF0ZU1pcG1hcEhpbnQoR0xl
bnVtIGhpbnQpOworICAgIHZvaWQgc2V0RnJhZ21lbnRTaGFkZXJEZXJpdmF0aXZlSGludChHTGVu
dW0gaGludCk7CisKKyAgICB2b2lkIHNldFZpZXdwb3J0UGFyYW1zKEdMaW50IHgsIEdMaW50IHks
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKworICAgIHZvaWQgc2V0U2Npc3NvclBh
cmFtcyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisK
KyAgICB2b2lkIHNldENvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBi
b29sIGFscGhhKTsKKyAgICB2b2lkIHNldERlcHRoTWFzayhib29sIG1hc2spOworCisgICAgdm9p
ZCBzZXRBY3RpdmVTYW1wbGVyKHVuc2lnbmVkIGludCBhY3RpdmUpOworCisgICAgR0x1aW50IGdl
dFJlYWRGcmFtZWJ1ZmZlckhhbmRsZSgpIGNvbnN0OworICAgIEdMdWludCBnZXREcmF3RnJhbWVi
dWZmZXJIYW5kbGUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0UmVuZGVyYnVmZmVySGFuZGxlKCkg
Y29uc3Q7CisKKyAgICBHTHVpbnQgZ2V0QXJyYXlCdWZmZXJIYW5kbGUoKSBjb25zdDsKKworICAg
IEdMdWludCBnZXRBY3RpdmVRdWVyeShHTGVudW0gdGFyZ2V0KSBjb25zdDsKKworICAgIHZvaWQg
c2V0RW5hYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgaW50IGF0dHJpYk51bSwgYm9vbCBl
bmFibGVkKTsKKyAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmdldFZlcnRleEF0dHJpYlN0YXRl
KHVuc2lnbmVkIGludCBhdHRyaWJOdW0pOworICAgIHZvaWQgc2V0VmVydGV4QXR0cmliU3RhdGUo
dW5zaWduZWQgaW50IGF0dHJpYk51bSwgQnVmZmVyICpib3VuZEJ1ZmZlciwgR0xpbnQgc2l6ZSwg
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG5vcm1hbGl6
ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkICpwb2ludGVyKTsKKyAgICBjb25zdCB2b2lk
ICpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVyKHVuc2lnbmVkIGludCBhdHRyaWJOdW0pIGNvbnN0Owor
CisgICAgdm9pZCBzZXRVbnBhY2tBbGlnbm1lbnQoR0xpbnQgYWxpZ25tZW50KTsKKyAgICBHTGlu
dCBnZXRVbnBhY2tBbGlnbm1lbnQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0UGFja0FsaWdubWVu
dChHTGludCBhbGlnbm1lbnQpOworICAgIEdMaW50IGdldFBhY2tBbGlnbm1lbnQoKSBjb25zdDsK
KworICAgIHZvaWQgc2V0UGFja1JldmVyc2VSb3dPcmRlcihib29sIHJldmVyc2VSb3dPcmRlcik7
CisgICAgYm9vbCBnZXRQYWNrUmV2ZXJzZVJvd09yZGVyKCkgY29uc3Q7CisKKyAgICAvLyBUaGVz
ZSBjcmVhdGUgIGFuZCBkZXN0cm95IG1ldGhvZHMgYXJlIG1lcmVseSBwYXNzLXRocm91Z2hzIHRv
IAorICAgIC8vIFJlc291cmNlTWFuYWdlciwgd2hpY2ggb3ducyB0aGVzZSBvYmplY3QgdHlwZXMK
KyAgICBHTHVpbnQgY3JlYXRlQnVmZmVyKCk7CisgICAgR0x1aW50IGNyZWF0ZVNoYWRlcihHTGVu
dW0gdHlwZSk7CisgICAgR0x1aW50IGNyZWF0ZVByb2dyYW0oKTsKKyAgICBHTHVpbnQgY3JlYXRl
VGV4dHVyZSgpOworICAgIEdMdWludCBjcmVhdGVSZW5kZXJidWZmZXIoKTsKKworICAgIHZvaWQg
ZGVsZXRlQnVmZmVyKEdMdWludCBidWZmZXIpOworICAgIHZvaWQgZGVsZXRlU2hhZGVyKEdMdWlu
dCBzaGFkZXIpOworICAgIHZvaWQgZGVsZXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSk7CisgICAg
dm9pZCBkZWxldGVUZXh0dXJlKEdMdWludCB0ZXh0dXJlKTsKKyAgICB2b2lkIGRlbGV0ZVJlbmRl
cmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVyKTsKKworICAgIC8vIEZyYW1lYnVmZmVycyBhcmUg
b3duZWQgYnkgdGhlIENvbnRleHQsIHNvIHRoZXNlIG1ldGhvZHMgZG8gbm90IHBhc3MgdGhyb3Vn
aAorICAgIEdMdWludCBjcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIHZvaWQgZGVsZXRlRnJhbWVi
dWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKTsKKworICAgIC8vIEZlbmNlcyBhcmUgb3duZWQgYnkg
dGhlIENvbnRleHQuCisgICAgR0x1aW50IGNyZWF0ZUZlbmNlKCk7CisgICAgdm9pZCBkZWxldGVG
ZW5jZShHTHVpbnQgZmVuY2UpOworICAgIAorICAgIC8vIFF1ZXJpZXMgYXJlIG93bmVkIGJ5IHRo
ZSBDb250ZXh0OworICAgIEdMdWludCBjcmVhdGVRdWVyeSgpOworICAgIHZvaWQgZGVsZXRlUXVl
cnkoR0x1aW50IHF1ZXJ5KTsKKworICAgIHZvaWQgYmluZEFycmF5QnVmZmVyKEdMdWludCBidWZm
ZXIpOworICAgIHZvaWQgYmluZEVsZW1lbnRBcnJheUJ1ZmZlcihHTHVpbnQgYnVmZmVyKTsKKyAg
ICB2b2lkIGJpbmRUZXh0dXJlMkQoR0x1aW50IHRleHR1cmUpOworICAgIHZvaWQgYmluZFRleHR1
cmVDdWJlTWFwKEdMdWludCB0ZXh0dXJlKTsKKyAgICB2b2lkIGJpbmRSZWFkRnJhbWVidWZmZXIo
R0x1aW50IGZyYW1lYnVmZmVyKTsKKyAgICB2b2lkIGJpbmREcmF3RnJhbWVidWZmZXIoR0x1aW50
IGZyYW1lYnVmZmVyKTsKKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1
ZmZlcik7CisgICAgdm9pZCB1c2VQcm9ncmFtKEdMdWludCBwcm9ncmFtKTsKKyAgICB2b2lkIGxp
bmtQcm9ncmFtKEdMdWludCBwcm9ncmFtKTsKKyAgICB2b2lkIHNldFByb2dyYW1CaW5hcnkoR0x1
aW50IHByb2dyYW0sIGNvbnN0IHZvaWQgKmJpbmFyeSwgR0xpbnQgbGVuZ3RoKTsKKworICAgIHZv
aWQgYmVnaW5RdWVyeShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcXVlcnkpOworICAgIHZvaWQgZW5k
UXVlcnkoR0xlbnVtIHRhcmdldCk7CisKKyAgICB2b2lkIHNldEZyYW1lYnVmZmVyWmVybyhGcmFt
ZWJ1ZmZlciAqZnJhbWVidWZmZXIpOworCisgICAgdm9pZCBzZXRSZW5kZXJidWZmZXJTdG9yYWdl
KEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdM
c2l6ZWkgc2FtcGxlcyk7CisKKyAgICB2b2lkIHNldFZlcnRleEF0dHJpYihHTHVpbnQgaW5kZXgs
IGNvbnN0IEdMZmxvYXQgKnZhbHVlcyk7CisgICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJEaXZpc29y
KEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpOworCisgICAgQnVmZmVyICpnZXRCdWZmZXIo
R0x1aW50IGhhbmRsZSk7CisgICAgRmVuY2UgKmdldEZlbmNlKEdMdWludCBoYW5kbGUpOworICAg
IFNoYWRlciAqZ2V0U2hhZGVyKEdMdWludCBoYW5kbGUpOworICAgIFByb2dyYW0gKmdldFByb2dy
YW0oR0x1aW50IGhhbmRsZSk7CisgICAgVGV4dHVyZSAqZ2V0VGV4dHVyZShHTHVpbnQgaGFuZGxl
KTsKKyAgICBGcmFtZWJ1ZmZlciAqZ2V0RnJhbWVidWZmZXIoR0x1aW50IGhhbmRsZSk7CisgICAg
UmVuZGVyYnVmZmVyICpnZXRSZW5kZXJidWZmZXIoR0x1aW50IGhhbmRsZSk7CisgICAgUXVlcnkg
KmdldFF1ZXJ5KEdMdWludCBoYW5kbGUsIGJvb2wgY3JlYXRlLCBHTGVudW0gdHlwZSk7CisKKyAg
ICBCdWZmZXIgKmdldEFycmF5QnVmZmVyKCk7CisgICAgQnVmZmVyICpnZXRFbGVtZW50QXJyYXlC
dWZmZXIoKTsKKyAgICBQcm9ncmFtQmluYXJ5ICpnZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpOwor
ICAgIFRleHR1cmUyRCAqZ2V0VGV4dHVyZTJEKCk7CisgICAgVGV4dHVyZUN1YmVNYXAgKmdldFRl
eHR1cmVDdWJlTWFwKCk7CisgICAgVGV4dHVyZSAqZ2V0U2FtcGxlclRleHR1cmUodW5zaWduZWQg
aW50IHNhbXBsZXIsIFRleHR1cmVUeXBlIHR5cGUpOworICAgIEZyYW1lYnVmZmVyICpnZXRSZWFk
RnJhbWVidWZmZXIoKTsKKyAgICBGcmFtZWJ1ZmZlciAqZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisK
KyAgICBib29sIGdldEZsb2F0dihHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CisgICAg
Ym9vbCBnZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworICAgIGJvb2wg
Z2V0Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcyk7CisKKyAgICBib29s
IGdldFF1ZXJ5UGFyYW1ldGVySW5mbyhHTGVudW0gcG5hbWUsIEdMZW51bSAqdHlwZSwgdW5zaWdu
ZWQgaW50ICpudW1QYXJhbXMpOworCisgICAgdm9pZCByZWFkUGl4ZWxzKEdMaW50IHgsIEdMaW50
IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSwgR0xzaXplaSAqYnVmU2l6ZSwgdm9pZCogcGl4ZWxzKTsKKyAgICB2b2lkIGNsZWFyKEdM
Yml0ZmllbGQgbWFzayk7CisgICAgdm9pZCBkcmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTGludCBm
aXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworICAgIHZvaWQgZHJhd0Vs
ZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2
b2lkICppbmRpY2VzLCBHTHNpemVpIGluc3RhbmNlcyk7CisgICAgdm9pZCBzeW5jKGJvb2wgYmxv
Y2spOyAgIC8vIGZsdXNoL2ZpbmlzaAorCisgICAgdm9pZCByZWNvcmRJbnZhbGlkRW51bSgpOwor
ICAgIHZvaWQgcmVjb3JkSW52YWxpZFZhbHVlKCk7CisgICAgdm9pZCByZWNvcmRJbnZhbGlkT3Bl
cmF0aW9uKCk7CisgICAgdm9pZCByZWNvcmRPdXRPZk1lbW9yeSgpOworICAgIHZvaWQgcmVjb3Jk
SW52YWxpZEZyYW1lYnVmZmVyT3BlcmF0aW9uKCk7CisKKyAgICBHTGVudW0gZ2V0RXJyb3IoKTsK
KyAgICBHTGVudW0gZ2V0UmVzZXRTdGF0dXMoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZXNldE5v
dGlmaWNhdGlvbkVuYWJsZWQoKTsKKworICAgIGludCBnZXRNYWpvclNoYWRlck1vZGVsKCkgY29u
c3Q7CisgICAgZmxvYXQgZ2V0TWF4aW11bVBvaW50U2l6ZSgpIGNvbnN0OworICAgIHVuc2lnbmVk
IGludCBnZXRNYXhpbXVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0OworICAgIGlu
dCBnZXRNYXhpbXVtUmVuZGVyYnVmZmVyRGltZW5zaW9uKCkgY29uc3Q7CisgICAgaW50IGdldE1h
eGltdW1UZXh0dXJlRGltZW5zaW9uKCkgY29uc3Q7CisgICAgaW50IGdldE1heGltdW1DdWJlVGV4
dHVyZURpbWVuc2lvbigpIGNvbnN0OworICAgIGludCBnZXRNYXhpbXVtVGV4dHVyZUxldmVsKCkg
Y29uc3Q7CisgICAgdW5zaWduZWQgaW50IGdldE1heGltdW1SZW5kZXJUYXJnZXRzKCkgY29uc3Q7
CisgICAgR0xzaXplaSBnZXRNYXhTdXBwb3J0ZWRTYW1wbGVzKCkgY29uc3Q7CisgICAgY29uc3Qg
Y2hhciAqZ2V0RXh0ZW5zaW9uU3RyaW5nKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciAqZ2V0UmVu
ZGVyZXJTdHJpbmcoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzRXZlbnRRdWVyaWVzKCkgY29u
c3Q7CisgICAgYm9vbCBzdXBwb3J0c09jY2x1c2lvblF1ZXJpZXMoKSBjb25zdDsKKyAgICBib29s
IHN1cHBvcnRzQkdSQVRleHR1cmVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0RYVDFUZXh0
dXJlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNEWFQzVGV4dHVyZXMoKSBjb25zdDsKKyAg
ICBib29sIHN1cHBvcnRzRFhUNVRleHR1cmVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0Zs
b2F0MzJUZXh0dXJlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNGbG9hdDMyTGluZWFyRmls
dGVyKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0Zsb2F0MzJSZW5kZXJhYmxlVGV4dHVyZXMo
KSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzRmxvYXQxNlRleHR1cmVzKCkgY29uc3Q7CisgICAg
Ym9vbCBzdXBwb3J0c0Zsb2F0MTZMaW5lYXJGaWx0ZXIoKSBjb25zdDsKKyAgICBib29sIHN1cHBv
cnRzRmxvYXQxNlJlbmRlcmFibGVUZXh0dXJlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNM
dW1pbmFuY2VUZXh0dXJlcygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNMdW1pbmFuY2VBbHBo
YVRleHR1cmVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoVGV4dHVyZXMoKSBjb25z
dDsKKyAgICBib29sIHN1cHBvcnRzMzJiaXRJbmRpY2VzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBw
b3J0c05vblBvd2VyMlRleHR1cmUoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzSW5zdGFuY2lu
ZygpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9weSgpIGNv
bnN0OworCisgICAgYm9vbCBnZXRDdXJyZW50UmVhZEZvcm1hdFR5cGUoR0xlbnVtICpmb3JtYXQs
IEdMZW51bSAqdHlwZSk7CisKKyAgICBmbG9hdCBnZXRUZXh0dXJlTWF4QW5pc290cm9weSgpIGNv
bnN0OworCisgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoR0xpbnQgc3JjWDAsIEdMaW50IHNyY1kw
LCBHTGludCBzcmNYMSwgR0xpbnQgc3JjWTEsIAorICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGRzdFgwLCBHTGludCBkc3RZMCwgR0xpbnQgZHN0WDEsIEdMaW50IGRzdFkxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzayk7CisKKyAgcHJpdmF0ZToKKyAgICBE
SVNBTExPV19DT1BZX0FORF9BU1NJR04oQ29udGV4dCk7CisKKyAgICBib29sIGFwcGx5UmVuZGVy
VGFyZ2V0KEdMZW51bSBkcmF3TW9kZSwgYm9vbCBpZ25vcmVWaWV3cG9ydCk7CisgICAgdm9pZCBh
cHBseVN0YXRlKEdMZW51bSBkcmF3TW9kZSk7CisgICAgdm9pZCBhcHBseVNoYWRlcnMoKTsKKyAg
ICB2b2lkIGFwcGx5VGV4dHVyZXMoKTsKKyAgICB2b2lkIGFwcGx5VGV4dHVyZXMoU2FtcGxlclR5
cGUgdHlwZSk7CisKKyAgICB2b2lkIGRldGFjaEJ1ZmZlcihHTHVpbnQgYnVmZmVyKTsKKyAgICB2
b2lkIGRldGFjaFRleHR1cmUoR0x1aW50IHRleHR1cmUpOworICAgIHZvaWQgZGV0YWNoRnJhbWVi
dWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKTsKKyAgICB2b2lkIGRldGFjaFJlbmRlcmJ1ZmZlcihH
THVpbnQgcmVuZGVyYnVmZmVyKTsKKworICAgIFRleHR1cmUgKmdldEluY29tcGxldGVUZXh0dXJl
KFRleHR1cmVUeXBlIHR5cGUpOworCisgICAgYm9vbCBza2lwRHJhdyhHTGVudW0gZHJhd01vZGUp
OworCisgICAgdm9pZCBpbml0RXh0ZW5zaW9uU3RyaW5nKCk7CisgICAgdm9pZCBpbml0UmVuZGVy
ZXJTdHJpbmcoKTsKKworICAgIHJ4OjpSZW5kZXJlciAqY29uc3QgbVJlbmRlcmVyOworCisgICAg
U3RhdGUgbVN0YXRlOworCisgICAgQmluZGluZ1BvaW50ZXI8VGV4dHVyZTJEPiBtVGV4dHVyZTJE
WmVybzsKKyAgICBCaW5kaW5nUG9pbnRlcjxUZXh0dXJlQ3ViZU1hcD4gbVRleHR1cmVDdWJlTWFw
WmVybzsKKworI2lmbmRlZiBIQVNIX01BUAorIyBpZmRlZiBfTVNDX1ZFUgorIyAgZGVmaW5lIEhB
U0hfTUFQIHN0ZGV4dDo6aGFzaF9tYXAKKyMgZWxzZQorIyAgZGVmaW5lIEhBU0hfTUFQIHN0ZDo6
dW5vcmRlcmVkX21hcAorIyBlbmRpZgorI2VuZGlmCisKKyAgICB0eXBlZGVmIEhBU0hfTUFQPEdM
dWludCwgRnJhbWVidWZmZXIqPiBGcmFtZWJ1ZmZlck1hcDsKKyAgICBGcmFtZWJ1ZmZlck1hcCBt
RnJhbWVidWZmZXJNYXA7CisgICAgSGFuZGxlQWxsb2NhdG9yIG1GcmFtZWJ1ZmZlckhhbmRsZUFs
bG9jYXRvcjsKKworICAgIHR5cGVkZWYgSEFTSF9NQVA8R0x1aW50LCBGZW5jZSo+IEZlbmNlTWFw
OworICAgIEZlbmNlTWFwIG1GZW5jZU1hcDsKKyAgICBIYW5kbGVBbGxvY2F0b3IgbUZlbmNlSGFu
ZGxlQWxsb2NhdG9yOworCisgICAgdHlwZWRlZiBIQVNIX01BUDxHTHVpbnQsIFF1ZXJ5Kj4gUXVl
cnlNYXA7CisgICAgUXVlcnlNYXAgbVF1ZXJ5TWFwOworICAgIEhhbmRsZUFsbG9jYXRvciBtUXVl
cnlIYW5kbGVBbGxvY2F0b3I7CisKKyAgICBjb25zdCBjaGFyICptRXh0ZW5zaW9uU3RyaW5nOwor
ICAgIGNvbnN0IGNoYXIgKm1SZW5kZXJlclN0cmluZzsKKyAgICAKKyAgICBCaW5kaW5nUG9pbnRl
cjxUZXh0dXJlPiBtSW5jb21wbGV0ZVRleHR1cmVzW1RFWFRVUkVfVFlQRV9DT1VOVF07CisKKyAg
ICAvLyBSZWNvcmRlZCBlcnJvcnMKKyAgICBib29sIG1JbnZhbGlkRW51bTsKKyAgICBib29sIG1J
bnZhbGlkVmFsdWU7CisgICAgYm9vbCBtSW52YWxpZE9wZXJhdGlvbjsKKyAgICBib29sIG1PdXRP
Zk1lbW9yeTsKKyAgICBib29sIG1JbnZhbGlkRnJhbWVidWZmZXJPcGVyYXRpb247CisKKyAgICAv
LyBDdXJyZW50L2xvc3QgY29udGV4dCBmbGFncworICAgIGJvb2wgbUhhc0JlZW5DdXJyZW50Owor
ICAgIGJvb2wgbUNvbnRleHRMb3N0OworICAgIEdMZW51bSBtUmVzZXRTdGF0dXM7CisgICAgR0xl
bnVtIG1SZXNldFN0cmF0ZWd5OworICAgIGJvb2wgbVJvYnVzdEFjY2VzczsKKworICAgIEJpbmRp
bmdQb2ludGVyPFByb2dyYW1CaW5hcnk+IG1DdXJyZW50UHJvZ3JhbUJpbmFyeTsKKyAgICBGcmFt
ZWJ1ZmZlciAqbUJvdW5kRHJhd0ZyYW1lYnVmZmVyOworCisgICAgaW50IG1NYWpvclNoYWRlck1v
ZGVsOworICAgIGZsb2F0IG1NYXhpbXVtUG9pbnRTaXplOworICAgIGJvb2wgbVN1cHBvcnRzVmVy
dGV4VGV4dHVyZTsKKyAgICBib29sIG1TdXBwb3J0c05vblBvd2VyMlRleHR1cmU7CisgICAgYm9v
bCBtU3VwcG9ydHNJbnN0YW5jaW5nOworICAgIGludCAgbU1heFZpZXdwb3J0RGltZW5zaW9uOwor
ICAgIGludCAgbU1heFJlbmRlcmJ1ZmZlckRpbWVuc2lvbjsKKyAgICBpbnQgIG1NYXhUZXh0dXJl
RGltZW5zaW9uOworICAgIGludCAgbU1heEN1YmVUZXh0dXJlRGltZW5zaW9uOworICAgIGludCAg
bU1heFRleHR1cmVMZXZlbDsKKyAgICBmbG9hdCBtTWF4VGV4dHVyZUFuaXNvdHJvcHk7CisgICAg
Ym9vbCBtU3VwcG9ydHNFdmVudFF1ZXJpZXM7CisgICAgYm9vbCBtU3VwcG9ydHNPY2NsdXNpb25R
dWVyaWVzOworICAgIGJvb2wgbVN1cHBvcnRzQkdSQVRleHR1cmVzOworICAgIGJvb2wgbVN1cHBv
cnRzRFhUMVRleHR1cmVzOworICAgIGJvb2wgbVN1cHBvcnRzRFhUM1RleHR1cmVzOworICAgIGJv
b2wgbVN1cHBvcnRzRFhUNVRleHR1cmVzOworICAgIGJvb2wgbVN1cHBvcnRzRmxvYXQzMlRleHR1
cmVzOworICAgIGJvb2wgbVN1cHBvcnRzRmxvYXQzMkxpbmVhckZpbHRlcjsKKyAgICBib29sIG1T
dXBwb3J0c0Zsb2F0MzJSZW5kZXJhYmxlVGV4dHVyZXM7CisgICAgYm9vbCBtU3VwcG9ydHNGbG9h
dDE2VGV4dHVyZXM7CisgICAgYm9vbCBtU3VwcG9ydHNGbG9hdDE2TGluZWFyRmlsdGVyOworICAg
IGJvb2wgbVN1cHBvcnRzRmxvYXQxNlJlbmRlcmFibGVUZXh0dXJlczsKKyAgICBib29sIG1TdXBw
b3J0c0x1bWluYW5jZVRleHR1cmVzOworICAgIGJvb2wgbVN1cHBvcnRzTHVtaW5hbmNlQWxwaGFU
ZXh0dXJlczsKKyAgICBib29sIG1TdXBwb3J0c0RlcHRoVGV4dHVyZXM7CisgICAgYm9vbCBtU3Vw
cG9ydHMzMmJpdEluZGljZXM7CisgICAgYm9vbCBtU3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290
cm9weTsKKyAgICBpbnQgbU51bUNvbXByZXNzZWRUZXh0dXJlRm9ybWF0czsKKworICAgIFJlc291
cmNlTWFuYWdlciAqbVJlc291cmNlTWFuYWdlcjsKK307Cit9CisKKyNlbmRpZiAgIC8vIElOQ0xV
REVfQ09OVEVYVF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9GZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9GZW5jZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL0ZlbmNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAor
I2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBGZW5jZS5j
cHA6IEltcGxlbWVudHMgdGhlIGdsOjpGZW5jZSBjbGFzcywgd2hpY2ggc3VwcG9ydHMgdGhlIEdM
X05WX2ZlbmNlIGV4dGVuc2lvbi4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9GZW5jZS5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZUltcGwuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvUmVuZGVyZXIuaCIKKworbmFtZXNwYWNlIGdsCit7CisKK0ZlbmNlOjpGZW5j
ZShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKQoreworICAgIG1GZW5jZSA9IHJlbmRlcmVyLT5jcmVh
dGVGZW5jZSgpOworfQorCitGZW5jZTo6fkZlbmNlKCkKK3sKKyAgICBkZWxldGUgbUZlbmNlOwor
fQorCitHTGJvb2xlYW4gRmVuY2U6OmlzRmVuY2UoKQoreworICAgIHJldHVybiBtRmVuY2UtPmlz
RmVuY2UoKTsKK30KKwordm9pZCBGZW5jZTo6c2V0RmVuY2UoR0xlbnVtIGNvbmRpdGlvbikKK3sK
KyAgICBtRmVuY2UtPnNldEZlbmNlKGNvbmRpdGlvbik7Cit9CisKK0dMYm9vbGVhbiBGZW5jZTo6
dGVzdEZlbmNlKCkKK3sKKyAgICByZXR1cm4gbUZlbmNlLT50ZXN0RmVuY2UoKTsKK30KKwordm9p
ZCBGZW5jZTo6ZmluaXNoRmVuY2UoKQoreworICAgIG1GZW5jZS0+ZmluaXNoRmVuY2UoKTsKK30K
Kwordm9pZCBGZW5jZTo6Z2V0RmVuY2VpdihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7
CisgICAgbUZlbmNlLT5nZXRGZW5jZWl2KHBuYW1lLCBwYXJhbXMpOworfQorCit9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZlbmNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GZW5jZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GZW5jZS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBGZW5j
ZS5oOiBEZWZpbmVzIHRoZSBnbDo6RmVuY2UgY2xhc3MsIHdoaWNoIHN1cHBvcnRzIHRoZSBHTF9O
Vl9mZW5jZSBleHRlbnNpb24uCisKKyNpZm5kZWYgTElCR0xFU1YyX0ZFTkNFX0hfCisjZGVmaW5l
IExJQkdMRVNWMl9GRU5DRV9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKwor
bmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKK2NsYXNzIEZlbmNlSW1wbDsKK30KKwor
bmFtZXNwYWNlIGdsCit7CisKK2NsYXNzIEZlbmNlCit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNp
dCBGZW5jZShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKTsKKyAgICB2aXJ0dWFsIH5GZW5jZSgpOwor
CisgICAgR0xib29sZWFuIGlzRmVuY2UoKTsKKyAgICB2b2lkIHNldEZlbmNlKEdMZW51bSBjb25k
aXRpb24pOworICAgIEdMYm9vbGVhbiB0ZXN0RmVuY2UoKTsKKyAgICB2b2lkIGZpbmlzaEZlbmNl
KCk7CisgICAgdm9pZCBnZXRGZW5jZWl2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CisK
KyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oRmVuY2UpOworCisgICAg
cng6OkZlbmNlSW1wbCAqbUZlbmNlOworfTsKKworfQorCisjZW5kaWYgICAvLyBMSUJHTEVTVjJf
RkVOQ0VfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRmxv
YXQxNlRvRmxvYXQzMi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9GbG9hdDE2VG9GbG9hdDMyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRmxvYXQxNlRvRmxvYXQzMi5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjIwNCBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLgor
CituYW1lc3BhY2UgZ2wKK3sKKworY29uc3Qgc3RhdGljIHVuc2lnbmVkIGdfbWFudGlzc2FbMjA0
OF0gPSB7CisgICAgMHgwMDAwMDAwMCwKKyAgICAweDMzODAwMDAwLAorICAgIDB4MzQwMDAwMDAs
CisgICAgMHgzNDQwMDAwMCwKKyAgICAweDM0ODAwMDAwLAorICAgIDB4MzRhMDAwMDAsCisgICAg
MHgzNGMwMDAwMCwKKyAgICAweDM0ZTAwMDAwLAorICAgIDB4MzUwMDAwMDAsCisgICAgMHgzNTEw
MDAwMCwKKyAgICAweDM1MjAwMDAwLAorICAgIDB4MzUzMDAwMDAsCisgICAgMHgzNTQwMDAwMCwK
KyAgICAweDM1NTAwMDAwLAorICAgIDB4MzU2MDAwMDAsCisgICAgMHgzNTcwMDAwMCwKKyAgICAw
eDM1ODAwMDAwLAorICAgIDB4MzU4ODAwMDAsCisgICAgMHgzNTkwMDAwMCwKKyAgICAweDM1OTgw
MDAwLAorICAgIDB4MzVhMDAwMDAsCisgICAgMHgzNWE4MDAwMCwKKyAgICAweDM1YjAwMDAwLAor
ICAgIDB4MzViODAwMDAsCisgICAgMHgzNWMwMDAwMCwKKyAgICAweDM1YzgwMDAwLAorICAgIDB4
MzVkMDAwMDAsCisgICAgMHgzNWQ4MDAwMCwKKyAgICAweDM1ZTAwMDAwLAorICAgIDB4MzVlODAw
MDAsCisgICAgMHgzNWYwMDAwMCwKKyAgICAweDM1ZjgwMDAwLAorICAgIDB4MzYwMDAwMDAsCisg
ICAgMHgzNjA0MDAwMCwKKyAgICAweDM2MDgwMDAwLAorICAgIDB4MzYwYzAwMDAsCisgICAgMHgz
NjEwMDAwMCwKKyAgICAweDM2MTQwMDAwLAorICAgIDB4MzYxODAwMDAsCisgICAgMHgzNjFjMDAw
MCwKKyAgICAweDM2MjAwMDAwLAorICAgIDB4MzYyNDAwMDAsCisgICAgMHgzNjI4MDAwMCwKKyAg
ICAweDM2MmMwMDAwLAorICAgIDB4MzYzMDAwMDAsCisgICAgMHgzNjM0MDAwMCwKKyAgICAweDM2
MzgwMDAwLAorICAgIDB4MzYzYzAwMDAsCisgICAgMHgzNjQwMDAwMCwKKyAgICAweDM2NDQwMDAw
LAorICAgIDB4MzY0ODAwMDAsCisgICAgMHgzNjRjMDAwMCwKKyAgICAweDM2NTAwMDAwLAorICAg
IDB4MzY1NDAwMDAsCisgICAgMHgzNjU4MDAwMCwKKyAgICAweDM2NWMwMDAwLAorICAgIDB4MzY2
MDAwMDAsCisgICAgMHgzNjY0MDAwMCwKKyAgICAweDM2NjgwMDAwLAorICAgIDB4MzY2YzAwMDAs
CisgICAgMHgzNjcwMDAwMCwKKyAgICAweDM2NzQwMDAwLAorICAgIDB4MzY3ODAwMDAsCisgICAg
MHgzNjdjMDAwMCwKKyAgICAweDM2ODAwMDAwLAorICAgIDB4MzY4MjAwMDAsCisgICAgMHgzNjg0
MDAwMCwKKyAgICAweDM2ODYwMDAwLAorICAgIDB4MzY4ODAwMDAsCisgICAgMHgzNjhhMDAwMCwK
KyAgICAweDM2OGMwMDAwLAorICAgIDB4MzY4ZTAwMDAsCisgICAgMHgzNjkwMDAwMCwKKyAgICAw
eDM2OTIwMDAwLAorICAgIDB4MzY5NDAwMDAsCisgICAgMHgzNjk2MDAwMCwKKyAgICAweDM2OTgw
MDAwLAorICAgIDB4MzY5YTAwMDAsCisgICAgMHgzNjljMDAwMCwKKyAgICAweDM2OWUwMDAwLAor
ICAgIDB4MzZhMDAwMDAsCisgICAgMHgzNmEyMDAwMCwKKyAgICAweDM2YTQwMDAwLAorICAgIDB4
MzZhNjAwMDAsCisgICAgMHgzNmE4MDAwMCwKKyAgICAweDM2YWEwMDAwLAorICAgIDB4MzZhYzAw
MDAsCisgICAgMHgzNmFlMDAwMCwKKyAgICAweDM2YjAwMDAwLAorICAgIDB4MzZiMjAwMDAsCisg
ICAgMHgzNmI0MDAwMCwKKyAgICAweDM2YjYwMDAwLAorICAgIDB4MzZiODAwMDAsCisgICAgMHgz
NmJhMDAwMCwKKyAgICAweDM2YmMwMDAwLAorICAgIDB4MzZiZTAwMDAsCisgICAgMHgzNmMwMDAw
MCwKKyAgICAweDM2YzIwMDAwLAorICAgIDB4MzZjNDAwMDAsCisgICAgMHgzNmM2MDAwMCwKKyAg
ICAweDM2YzgwMDAwLAorICAgIDB4MzZjYTAwMDAsCisgICAgMHgzNmNjMDAwMCwKKyAgICAweDM2
Y2UwMDAwLAorICAgIDB4MzZkMDAwMDAsCisgICAgMHgzNmQyMDAwMCwKKyAgICAweDM2ZDQwMDAw
LAorICAgIDB4MzZkNjAwMDAsCisgICAgMHgzNmQ4MDAwMCwKKyAgICAweDM2ZGEwMDAwLAorICAg
IDB4MzZkYzAwMDAsCisgICAgMHgzNmRlMDAwMCwKKyAgICAweDM2ZTAwMDAwLAorICAgIDB4MzZl
MjAwMDAsCisgICAgMHgzNmU0MDAwMCwKKyAgICAweDM2ZTYwMDAwLAorICAgIDB4MzZlODAwMDAs
CisgICAgMHgzNmVhMDAwMCwKKyAgICAweDM2ZWMwMDAwLAorICAgIDB4MzZlZTAwMDAsCisgICAg
MHgzNmYwMDAwMCwKKyAgICAweDM2ZjIwMDAwLAorICAgIDB4MzZmNDAwMDAsCisgICAgMHgzNmY2
MDAwMCwKKyAgICAweDM2ZjgwMDAwLAorICAgIDB4MzZmYTAwMDAsCisgICAgMHgzNmZjMDAwMCwK
KyAgICAweDM2ZmUwMDAwLAorICAgIDB4MzcwMDAwMDAsCisgICAgMHgzNzAxMDAwMCwKKyAgICAw
eDM3MDIwMDAwLAorICAgIDB4MzcwMzAwMDAsCisgICAgMHgzNzA0MDAwMCwKKyAgICAweDM3MDUw
MDAwLAorICAgIDB4MzcwNjAwMDAsCisgICAgMHgzNzA3MDAwMCwKKyAgICAweDM3MDgwMDAwLAor
ICAgIDB4MzcwOTAwMDAsCisgICAgMHgzNzBhMDAwMCwKKyAgICAweDM3MGIwMDAwLAorICAgIDB4
MzcwYzAwMDAsCisgICAgMHgzNzBkMDAwMCwKKyAgICAweDM3MGUwMDAwLAorICAgIDB4MzcwZjAw
MDAsCisgICAgMHgzNzEwMDAwMCwKKyAgICAweDM3MTEwMDAwLAorICAgIDB4MzcxMjAwMDAsCisg
ICAgMHgzNzEzMDAwMCwKKyAgICAweDM3MTQwMDAwLAorICAgIDB4MzcxNTAwMDAsCisgICAgMHgz
NzE2MDAwMCwKKyAgICAweDM3MTcwMDAwLAorICAgIDB4MzcxODAwMDAsCisgICAgMHgzNzE5MDAw
MCwKKyAgICAweDM3MWEwMDAwLAorICAgIDB4MzcxYjAwMDAsCisgICAgMHgzNzFjMDAwMCwKKyAg
ICAweDM3MWQwMDAwLAorICAgIDB4MzcxZTAwMDAsCisgICAgMHgzNzFmMDAwMCwKKyAgICAweDM3
MjAwMDAwLAorICAgIDB4MzcyMTAwMDAsCisgICAgMHgzNzIyMDAwMCwKKyAgICAweDM3MjMwMDAw
LAorICAgIDB4MzcyNDAwMDAsCisgICAgMHgzNzI1MDAwMCwKKyAgICAweDM3MjYwMDAwLAorICAg
IDB4MzcyNzAwMDAsCisgICAgMHgzNzI4MDAwMCwKKyAgICAweDM3MjkwMDAwLAorICAgIDB4Mzcy
YTAwMDAsCisgICAgMHgzNzJiMDAwMCwKKyAgICAweDM3MmMwMDAwLAorICAgIDB4MzcyZDAwMDAs
CisgICAgMHgzNzJlMDAwMCwKKyAgICAweDM3MmYwMDAwLAorICAgIDB4MzczMDAwMDAsCisgICAg
MHgzNzMxMDAwMCwKKyAgICAweDM3MzIwMDAwLAorICAgIDB4MzczMzAwMDAsCisgICAgMHgzNzM0
MDAwMCwKKyAgICAweDM3MzUwMDAwLAorICAgIDB4MzczNjAwMDAsCisgICAgMHgzNzM3MDAwMCwK
KyAgICAweDM3MzgwMDAwLAorICAgIDB4MzczOTAwMDAsCisgICAgMHgzNzNhMDAwMCwKKyAgICAw
eDM3M2IwMDAwLAorICAgIDB4MzczYzAwMDAsCisgICAgMHgzNzNkMDAwMCwKKyAgICAweDM3M2Uw
MDAwLAorICAgIDB4MzczZjAwMDAsCisgICAgMHgzNzQwMDAwMCwKKyAgICAweDM3NDEwMDAwLAor
ICAgIDB4Mzc0MjAwMDAsCisgICAgMHgzNzQzMDAwMCwKKyAgICAweDM3NDQwMDAwLAorICAgIDB4
Mzc0NTAwMDAsCisgICAgMHgzNzQ2MDAwMCwKKyAgICAweDM3NDcwMDAwLAorICAgIDB4Mzc0ODAw
MDAsCisgICAgMHgzNzQ5MDAwMCwKKyAgICAweDM3NGEwMDAwLAorICAgIDB4Mzc0YjAwMDAsCisg
ICAgMHgzNzRjMDAwMCwKKyAgICAweDM3NGQwMDAwLAorICAgIDB4Mzc0ZTAwMDAsCisgICAgMHgz
NzRmMDAwMCwKKyAgICAweDM3NTAwMDAwLAorICAgIDB4Mzc1MTAwMDAsCisgICAgMHgzNzUyMDAw
MCwKKyAgICAweDM3NTMwMDAwLAorICAgIDB4Mzc1NDAwMDAsCisgICAgMHgzNzU1MDAwMCwKKyAg
ICAweDM3NTYwMDAwLAorICAgIDB4Mzc1NzAwMDAsCisgICAgMHgzNzU4MDAwMCwKKyAgICAweDM3
NTkwMDAwLAorICAgIDB4Mzc1YTAwMDAsCisgICAgMHgzNzViMDAwMCwKKyAgICAweDM3NWMwMDAw
LAorICAgIDB4Mzc1ZDAwMDAsCisgICAgMHgzNzVlMDAwMCwKKyAgICAweDM3NWYwMDAwLAorICAg
IDB4Mzc2MDAwMDAsCisgICAgMHgzNzYxMDAwMCwKKyAgICAweDM3NjIwMDAwLAorICAgIDB4Mzc2
MzAwMDAsCisgICAgMHgzNzY0MDAwMCwKKyAgICAweDM3NjUwMDAwLAorICAgIDB4Mzc2NjAwMDAs
CisgICAgMHgzNzY3MDAwMCwKKyAgICAweDM3NjgwMDAwLAorICAgIDB4Mzc2OTAwMDAsCisgICAg
MHgzNzZhMDAwMCwKKyAgICAweDM3NmIwMDAwLAorICAgIDB4Mzc2YzAwMDAsCisgICAgMHgzNzZk
MDAwMCwKKyAgICAweDM3NmUwMDAwLAorICAgIDB4Mzc2ZjAwMDAsCisgICAgMHgzNzcwMDAwMCwK
KyAgICAweDM3NzEwMDAwLAorICAgIDB4Mzc3MjAwMDAsCisgICAgMHgzNzczMDAwMCwKKyAgICAw
eDM3NzQwMDAwLAorICAgIDB4Mzc3NTAwMDAsCisgICAgMHgzNzc2MDAwMCwKKyAgICAweDM3Nzcw
MDAwLAorICAgIDB4Mzc3ODAwMDAsCisgICAgMHgzNzc5MDAwMCwKKyAgICAweDM3N2EwMDAwLAor
ICAgIDB4Mzc3YjAwMDAsCisgICAgMHgzNzdjMDAwMCwKKyAgICAweDM3N2QwMDAwLAorICAgIDB4
Mzc3ZTAwMDAsCisgICAgMHgzNzdmMDAwMCwKKyAgICAweDM3ODAwMDAwLAorICAgIDB4Mzc4MDgw
MDAsCisgICAgMHgzNzgxMDAwMCwKKyAgICAweDM3ODE4MDAwLAorICAgIDB4Mzc4MjAwMDAsCisg
ICAgMHgzNzgyODAwMCwKKyAgICAweDM3ODMwMDAwLAorICAgIDB4Mzc4MzgwMDAsCisgICAgMHgz
Nzg0MDAwMCwKKyAgICAweDM3ODQ4MDAwLAorICAgIDB4Mzc4NTAwMDAsCisgICAgMHgzNzg1ODAw
MCwKKyAgICAweDM3ODYwMDAwLAorICAgIDB4Mzc4NjgwMDAsCisgICAgMHgzNzg3MDAwMCwKKyAg
ICAweDM3ODc4MDAwLAorICAgIDB4Mzc4ODAwMDAsCisgICAgMHgzNzg4ODAwMCwKKyAgICAweDM3
ODkwMDAwLAorICAgIDB4Mzc4OTgwMDAsCisgICAgMHgzNzhhMDAwMCwKKyAgICAweDM3OGE4MDAw
LAorICAgIDB4Mzc4YjAwMDAsCisgICAgMHgzNzhiODAwMCwKKyAgICAweDM3OGMwMDAwLAorICAg
IDB4Mzc4YzgwMDAsCisgICAgMHgzNzhkMDAwMCwKKyAgICAweDM3OGQ4MDAwLAorICAgIDB4Mzc4
ZTAwMDAsCisgICAgMHgzNzhlODAwMCwKKyAgICAweDM3OGYwMDAwLAorICAgIDB4Mzc4ZjgwMDAs
CisgICAgMHgzNzkwMDAwMCwKKyAgICAweDM3OTA4MDAwLAorICAgIDB4Mzc5MTAwMDAsCisgICAg
MHgzNzkxODAwMCwKKyAgICAweDM3OTIwMDAwLAorICAgIDB4Mzc5MjgwMDAsCisgICAgMHgzNzkz
MDAwMCwKKyAgICAweDM3OTM4MDAwLAorICAgIDB4Mzc5NDAwMDAsCisgICAgMHgzNzk0ODAwMCwK
KyAgICAweDM3OTUwMDAwLAorICAgIDB4Mzc5NTgwMDAsCisgICAgMHgzNzk2MDAwMCwKKyAgICAw
eDM3OTY4MDAwLAorICAgIDB4Mzc5NzAwMDAsCisgICAgMHgzNzk3ODAwMCwKKyAgICAweDM3OTgw
MDAwLAorICAgIDB4Mzc5ODgwMDAsCisgICAgMHgzNzk5MDAwMCwKKyAgICAweDM3OTk4MDAwLAor
ICAgIDB4Mzc5YTAwMDAsCisgICAgMHgzNzlhODAwMCwKKyAgICAweDM3OWIwMDAwLAorICAgIDB4
Mzc5YjgwMDAsCisgICAgMHgzNzljMDAwMCwKKyAgICAweDM3OWM4MDAwLAorICAgIDB4Mzc5ZDAw
MDAsCisgICAgMHgzNzlkODAwMCwKKyAgICAweDM3OWUwMDAwLAorICAgIDB4Mzc5ZTgwMDAsCisg
ICAgMHgzNzlmMDAwMCwKKyAgICAweDM3OWY4MDAwLAorICAgIDB4MzdhMDAwMDAsCisgICAgMHgz
N2EwODAwMCwKKyAgICAweDM3YTEwMDAwLAorICAgIDB4MzdhMTgwMDAsCisgICAgMHgzN2EyMDAw
MCwKKyAgICAweDM3YTI4MDAwLAorICAgIDB4MzdhMzAwMDAsCisgICAgMHgzN2EzODAwMCwKKyAg
ICAweDM3YTQwMDAwLAorICAgIDB4MzdhNDgwMDAsCisgICAgMHgzN2E1MDAwMCwKKyAgICAweDM3
YTU4MDAwLAorICAgIDB4MzdhNjAwMDAsCisgICAgMHgzN2E2ODAwMCwKKyAgICAweDM3YTcwMDAw
LAorICAgIDB4MzdhNzgwMDAsCisgICAgMHgzN2E4MDAwMCwKKyAgICAweDM3YTg4MDAwLAorICAg
IDB4MzdhOTAwMDAsCisgICAgMHgzN2E5ODAwMCwKKyAgICAweDM3YWEwMDAwLAorICAgIDB4Mzdh
YTgwMDAsCisgICAgMHgzN2FiMDAwMCwKKyAgICAweDM3YWI4MDAwLAorICAgIDB4MzdhYzAwMDAs
CisgICAgMHgzN2FjODAwMCwKKyAgICAweDM3YWQwMDAwLAorICAgIDB4MzdhZDgwMDAsCisgICAg
MHgzN2FlMDAwMCwKKyAgICAweDM3YWU4MDAwLAorICAgIDB4MzdhZjAwMDAsCisgICAgMHgzN2Fm
ODAwMCwKKyAgICAweDM3YjAwMDAwLAorICAgIDB4MzdiMDgwMDAsCisgICAgMHgzN2IxMDAwMCwK
KyAgICAweDM3YjE4MDAwLAorICAgIDB4MzdiMjAwMDAsCisgICAgMHgzN2IyODAwMCwKKyAgICAw
eDM3YjMwMDAwLAorICAgIDB4MzdiMzgwMDAsCisgICAgMHgzN2I0MDAwMCwKKyAgICAweDM3YjQ4
MDAwLAorICAgIDB4MzdiNTAwMDAsCisgICAgMHgzN2I1ODAwMCwKKyAgICAweDM3YjYwMDAwLAor
ICAgIDB4MzdiNjgwMDAsCisgICAgMHgzN2I3MDAwMCwKKyAgICAweDM3Yjc4MDAwLAorICAgIDB4
MzdiODAwMDAsCisgICAgMHgzN2I4ODAwMCwKKyAgICAweDM3YjkwMDAwLAorICAgIDB4MzdiOTgw
MDAsCisgICAgMHgzN2JhMDAwMCwKKyAgICAweDM3YmE4MDAwLAorICAgIDB4MzdiYjAwMDAsCisg
ICAgMHgzN2JiODAwMCwKKyAgICAweDM3YmMwMDAwLAorICAgIDB4MzdiYzgwMDAsCisgICAgMHgz
N2JkMDAwMCwKKyAgICAweDM3YmQ4MDAwLAorICAgIDB4MzdiZTAwMDAsCisgICAgMHgzN2JlODAw
MCwKKyAgICAweDM3YmYwMDAwLAorICAgIDB4MzdiZjgwMDAsCisgICAgMHgzN2MwMDAwMCwKKyAg
ICAweDM3YzA4MDAwLAorICAgIDB4MzdjMTAwMDAsCisgICAgMHgzN2MxODAwMCwKKyAgICAweDM3
YzIwMDAwLAorICAgIDB4MzdjMjgwMDAsCisgICAgMHgzN2MzMDAwMCwKKyAgICAweDM3YzM4MDAw
LAorICAgIDB4MzdjNDAwMDAsCisgICAgMHgzN2M0ODAwMCwKKyAgICAweDM3YzUwMDAwLAorICAg
IDB4MzdjNTgwMDAsCisgICAgMHgzN2M2MDAwMCwKKyAgICAweDM3YzY4MDAwLAorICAgIDB4Mzdj
NzAwMDAsCisgICAgMHgzN2M3ODAwMCwKKyAgICAweDM3YzgwMDAwLAorICAgIDB4MzdjODgwMDAs
CisgICAgMHgzN2M5MDAwMCwKKyAgICAweDM3Yzk4MDAwLAorICAgIDB4MzdjYTAwMDAsCisgICAg
MHgzN2NhODAwMCwKKyAgICAweDM3Y2IwMDAwLAorICAgIDB4MzdjYjgwMDAsCisgICAgMHgzN2Nj
MDAwMCwKKyAgICAweDM3Y2M4MDAwLAorICAgIDB4MzdjZDAwMDAsCisgICAgMHgzN2NkODAwMCwK
KyAgICAweDM3Y2UwMDAwLAorICAgIDB4MzdjZTgwMDAsCisgICAgMHgzN2NmMDAwMCwKKyAgICAw
eDM3Y2Y4MDAwLAorICAgIDB4MzdkMDAwMDAsCisgICAgMHgzN2QwODAwMCwKKyAgICAweDM3ZDEw
MDAwLAorICAgIDB4MzdkMTgwMDAsCisgICAgMHgzN2QyMDAwMCwKKyAgICAweDM3ZDI4MDAwLAor
ICAgIDB4MzdkMzAwMDAsCisgICAgMHgzN2QzODAwMCwKKyAgICAweDM3ZDQwMDAwLAorICAgIDB4
MzdkNDgwMDAsCisgICAgMHgzN2Q1MDAwMCwKKyAgICAweDM3ZDU4MDAwLAorICAgIDB4MzdkNjAw
MDAsCisgICAgMHgzN2Q2ODAwMCwKKyAgICAweDM3ZDcwMDAwLAorICAgIDB4MzdkNzgwMDAsCisg
ICAgMHgzN2Q4MDAwMCwKKyAgICAweDM3ZDg4MDAwLAorICAgIDB4MzdkOTAwMDAsCisgICAgMHgz
N2Q5ODAwMCwKKyAgICAweDM3ZGEwMDAwLAorICAgIDB4MzdkYTgwMDAsCisgICAgMHgzN2RiMDAw
MCwKKyAgICAweDM3ZGI4MDAwLAorICAgIDB4MzdkYzAwMDAsCisgICAgMHgzN2RjODAwMCwKKyAg
ICAweDM3ZGQwMDAwLAorICAgIDB4MzdkZDgwMDAsCisgICAgMHgzN2RlMDAwMCwKKyAgICAweDM3
ZGU4MDAwLAorICAgIDB4MzdkZjAwMDAsCisgICAgMHgzN2RmODAwMCwKKyAgICAweDM3ZTAwMDAw
LAorICAgIDB4MzdlMDgwMDAsCisgICAgMHgzN2UxMDAwMCwKKyAgICAweDM3ZTE4MDAwLAorICAg
IDB4MzdlMjAwMDAsCisgICAgMHgzN2UyODAwMCwKKyAgICAweDM3ZTMwMDAwLAorICAgIDB4Mzdl
MzgwMDAsCisgICAgMHgzN2U0MDAwMCwKKyAgICAweDM3ZTQ4MDAwLAorICAgIDB4MzdlNTAwMDAs
CisgICAgMHgzN2U1ODAwMCwKKyAgICAweDM3ZTYwMDAwLAorICAgIDB4MzdlNjgwMDAsCisgICAg
MHgzN2U3MDAwMCwKKyAgICAweDM3ZTc4MDAwLAorICAgIDB4MzdlODAwMDAsCisgICAgMHgzN2U4
ODAwMCwKKyAgICAweDM3ZTkwMDAwLAorICAgIDB4MzdlOTgwMDAsCisgICAgMHgzN2VhMDAwMCwK
KyAgICAweDM3ZWE4MDAwLAorICAgIDB4MzdlYjAwMDAsCisgICAgMHgzN2ViODAwMCwKKyAgICAw
eDM3ZWMwMDAwLAorICAgIDB4MzdlYzgwMDAsCisgICAgMHgzN2VkMDAwMCwKKyAgICAweDM3ZWQ4
MDAwLAorICAgIDB4MzdlZTAwMDAsCisgICAgMHgzN2VlODAwMCwKKyAgICAweDM3ZWYwMDAwLAor
ICAgIDB4MzdlZjgwMDAsCisgICAgMHgzN2YwMDAwMCwKKyAgICAweDM3ZjA4MDAwLAorICAgIDB4
MzdmMTAwMDAsCisgICAgMHgzN2YxODAwMCwKKyAgICAweDM3ZjIwMDAwLAorICAgIDB4MzdmMjgw
MDAsCisgICAgMHgzN2YzMDAwMCwKKyAgICAweDM3ZjM4MDAwLAorICAgIDB4MzdmNDAwMDAsCisg
ICAgMHgzN2Y0ODAwMCwKKyAgICAweDM3ZjUwMDAwLAorICAgIDB4MzdmNTgwMDAsCisgICAgMHgz
N2Y2MDAwMCwKKyAgICAweDM3ZjY4MDAwLAorICAgIDB4MzdmNzAwMDAsCisgICAgMHgzN2Y3ODAw
MCwKKyAgICAweDM3ZjgwMDAwLAorICAgIDB4MzdmODgwMDAsCisgICAgMHgzN2Y5MDAwMCwKKyAg
ICAweDM3Zjk4MDAwLAorICAgIDB4MzdmYTAwMDAsCisgICAgMHgzN2ZhODAwMCwKKyAgICAweDM3
ZmIwMDAwLAorICAgIDB4MzdmYjgwMDAsCisgICAgMHgzN2ZjMDAwMCwKKyAgICAweDM3ZmM4MDAw
LAorICAgIDB4MzdmZDAwMDAsCisgICAgMHgzN2ZkODAwMCwKKyAgICAweDM3ZmUwMDAwLAorICAg
IDB4MzdmZTgwMDAsCisgICAgMHgzN2ZmMDAwMCwKKyAgICAweDM3ZmY4MDAwLAorICAgIDB4Mzgw
MDAwMDAsCisgICAgMHgzODAwNDAwMCwKKyAgICAweDM4MDA4MDAwLAorICAgIDB4MzgwMGMwMDAs
CisgICAgMHgzODAxMDAwMCwKKyAgICAweDM4MDE0MDAwLAorICAgIDB4MzgwMTgwMDAsCisgICAg
MHgzODAxYzAwMCwKKyAgICAweDM4MDIwMDAwLAorICAgIDB4MzgwMjQwMDAsCisgICAgMHgzODAy
ODAwMCwKKyAgICAweDM4MDJjMDAwLAorICAgIDB4MzgwMzAwMDAsCisgICAgMHgzODAzNDAwMCwK
KyAgICAweDM4MDM4MDAwLAorICAgIDB4MzgwM2MwMDAsCisgICAgMHgzODA0MDAwMCwKKyAgICAw
eDM4MDQ0MDAwLAorICAgIDB4MzgwNDgwMDAsCisgICAgMHgzODA0YzAwMCwKKyAgICAweDM4MDUw
MDAwLAorICAgIDB4MzgwNTQwMDAsCisgICAgMHgzODA1ODAwMCwKKyAgICAweDM4MDVjMDAwLAor
ICAgIDB4MzgwNjAwMDAsCisgICAgMHgzODA2NDAwMCwKKyAgICAweDM4MDY4MDAwLAorICAgIDB4
MzgwNmMwMDAsCisgICAgMHgzODA3MDAwMCwKKyAgICAweDM4MDc0MDAwLAorICAgIDB4MzgwNzgw
MDAsCisgICAgMHgzODA3YzAwMCwKKyAgICAweDM4MDgwMDAwLAorICAgIDB4MzgwODQwMDAsCisg
ICAgMHgzODA4ODAwMCwKKyAgICAweDM4MDhjMDAwLAorICAgIDB4MzgwOTAwMDAsCisgICAgMHgz
ODA5NDAwMCwKKyAgICAweDM4MDk4MDAwLAorICAgIDB4MzgwOWMwMDAsCisgICAgMHgzODBhMDAw
MCwKKyAgICAweDM4MGE0MDAwLAorICAgIDB4MzgwYTgwMDAsCisgICAgMHgzODBhYzAwMCwKKyAg
ICAweDM4MGIwMDAwLAorICAgIDB4MzgwYjQwMDAsCisgICAgMHgzODBiODAwMCwKKyAgICAweDM4
MGJjMDAwLAorICAgIDB4MzgwYzAwMDAsCisgICAgMHgzODBjNDAwMCwKKyAgICAweDM4MGM4MDAw
LAorICAgIDB4MzgwY2MwMDAsCisgICAgMHgzODBkMDAwMCwKKyAgICAweDM4MGQ0MDAwLAorICAg
IDB4MzgwZDgwMDAsCisgICAgMHgzODBkYzAwMCwKKyAgICAweDM4MGUwMDAwLAorICAgIDB4Mzgw
ZTQwMDAsCisgICAgMHgzODBlODAwMCwKKyAgICAweDM4MGVjMDAwLAorICAgIDB4MzgwZjAwMDAs
CisgICAgMHgzODBmNDAwMCwKKyAgICAweDM4MGY4MDAwLAorICAgIDB4MzgwZmMwMDAsCisgICAg
MHgzODEwMDAwMCwKKyAgICAweDM4MTA0MDAwLAorICAgIDB4MzgxMDgwMDAsCisgICAgMHgzODEw
YzAwMCwKKyAgICAweDM4MTEwMDAwLAorICAgIDB4MzgxMTQwMDAsCisgICAgMHgzODExODAwMCwK
KyAgICAweDM4MTFjMDAwLAorICAgIDB4MzgxMjAwMDAsCisgICAgMHgzODEyNDAwMCwKKyAgICAw
eDM4MTI4MDAwLAorICAgIDB4MzgxMmMwMDAsCisgICAgMHgzODEzMDAwMCwKKyAgICAweDM4MTM0
MDAwLAorICAgIDB4MzgxMzgwMDAsCisgICAgMHgzODEzYzAwMCwKKyAgICAweDM4MTQwMDAwLAor
ICAgIDB4MzgxNDQwMDAsCisgICAgMHgzODE0ODAwMCwKKyAgICAweDM4MTRjMDAwLAorICAgIDB4
MzgxNTAwMDAsCisgICAgMHgzODE1NDAwMCwKKyAgICAweDM4MTU4MDAwLAorICAgIDB4MzgxNWMw
MDAsCisgICAgMHgzODE2MDAwMCwKKyAgICAweDM4MTY0MDAwLAorICAgIDB4MzgxNjgwMDAsCisg
ICAgMHgzODE2YzAwMCwKKyAgICAweDM4MTcwMDAwLAorICAgIDB4MzgxNzQwMDAsCisgICAgMHgz
ODE3ODAwMCwKKyAgICAweDM4MTdjMDAwLAorICAgIDB4MzgxODAwMDAsCisgICAgMHgzODE4NDAw
MCwKKyAgICAweDM4MTg4MDAwLAorICAgIDB4MzgxOGMwMDAsCisgICAgMHgzODE5MDAwMCwKKyAg
ICAweDM4MTk0MDAwLAorICAgIDB4MzgxOTgwMDAsCisgICAgMHgzODE5YzAwMCwKKyAgICAweDM4
MWEwMDAwLAorICAgIDB4MzgxYTQwMDAsCisgICAgMHgzODFhODAwMCwKKyAgICAweDM4MWFjMDAw
LAorICAgIDB4MzgxYjAwMDAsCisgICAgMHgzODFiNDAwMCwKKyAgICAweDM4MWI4MDAwLAorICAg
IDB4MzgxYmMwMDAsCisgICAgMHgzODFjMDAwMCwKKyAgICAweDM4MWM0MDAwLAorICAgIDB4Mzgx
YzgwMDAsCisgICAgMHgzODFjYzAwMCwKKyAgICAweDM4MWQwMDAwLAorICAgIDB4MzgxZDQwMDAs
CisgICAgMHgzODFkODAwMCwKKyAgICAweDM4MWRjMDAwLAorICAgIDB4MzgxZTAwMDAsCisgICAg
MHgzODFlNDAwMCwKKyAgICAweDM4MWU4MDAwLAorICAgIDB4MzgxZWMwMDAsCisgICAgMHgzODFm
MDAwMCwKKyAgICAweDM4MWY0MDAwLAorICAgIDB4MzgxZjgwMDAsCisgICAgMHgzODFmYzAwMCwK
KyAgICAweDM4MjAwMDAwLAorICAgIDB4MzgyMDQwMDAsCisgICAgMHgzODIwODAwMCwKKyAgICAw
eDM4MjBjMDAwLAorICAgIDB4MzgyMTAwMDAsCisgICAgMHgzODIxNDAwMCwKKyAgICAweDM4MjE4
MDAwLAorICAgIDB4MzgyMWMwMDAsCisgICAgMHgzODIyMDAwMCwKKyAgICAweDM4MjI0MDAwLAor
ICAgIDB4MzgyMjgwMDAsCisgICAgMHgzODIyYzAwMCwKKyAgICAweDM4MjMwMDAwLAorICAgIDB4
MzgyMzQwMDAsCisgICAgMHgzODIzODAwMCwKKyAgICAweDM4MjNjMDAwLAorICAgIDB4MzgyNDAw
MDAsCisgICAgMHgzODI0NDAwMCwKKyAgICAweDM4MjQ4MDAwLAorICAgIDB4MzgyNGMwMDAsCisg
ICAgMHgzODI1MDAwMCwKKyAgICAweDM4MjU0MDAwLAorICAgIDB4MzgyNTgwMDAsCisgICAgMHgz
ODI1YzAwMCwKKyAgICAweDM4MjYwMDAwLAorICAgIDB4MzgyNjQwMDAsCisgICAgMHgzODI2ODAw
MCwKKyAgICAweDM4MjZjMDAwLAorICAgIDB4MzgyNzAwMDAsCisgICAgMHgzODI3NDAwMCwKKyAg
ICAweDM4Mjc4MDAwLAorICAgIDB4MzgyN2MwMDAsCisgICAgMHgzODI4MDAwMCwKKyAgICAweDM4
Mjg0MDAwLAorICAgIDB4MzgyODgwMDAsCisgICAgMHgzODI4YzAwMCwKKyAgICAweDM4MjkwMDAw
LAorICAgIDB4MzgyOTQwMDAsCisgICAgMHgzODI5ODAwMCwKKyAgICAweDM4MjljMDAwLAorICAg
IDB4MzgyYTAwMDAsCisgICAgMHgzODJhNDAwMCwKKyAgICAweDM4MmE4MDAwLAorICAgIDB4Mzgy
YWMwMDAsCisgICAgMHgzODJiMDAwMCwKKyAgICAweDM4MmI0MDAwLAorICAgIDB4MzgyYjgwMDAs
CisgICAgMHgzODJiYzAwMCwKKyAgICAweDM4MmMwMDAwLAorICAgIDB4MzgyYzQwMDAsCisgICAg
MHgzODJjODAwMCwKKyAgICAweDM4MmNjMDAwLAorICAgIDB4MzgyZDAwMDAsCisgICAgMHgzODJk
NDAwMCwKKyAgICAweDM4MmQ4MDAwLAorICAgIDB4MzgyZGMwMDAsCisgICAgMHgzODJlMDAwMCwK
KyAgICAweDM4MmU0MDAwLAorICAgIDB4MzgyZTgwMDAsCisgICAgMHgzODJlYzAwMCwKKyAgICAw
eDM4MmYwMDAwLAorICAgIDB4MzgyZjQwMDAsCisgICAgMHgzODJmODAwMCwKKyAgICAweDM4MmZj
MDAwLAorICAgIDB4MzgzMDAwMDAsCisgICAgMHgzODMwNDAwMCwKKyAgICAweDM4MzA4MDAwLAor
ICAgIDB4MzgzMGMwMDAsCisgICAgMHgzODMxMDAwMCwKKyAgICAweDM4MzE0MDAwLAorICAgIDB4
MzgzMTgwMDAsCisgICAgMHgzODMxYzAwMCwKKyAgICAweDM4MzIwMDAwLAorICAgIDB4MzgzMjQw
MDAsCisgICAgMHgzODMyODAwMCwKKyAgICAweDM4MzJjMDAwLAorICAgIDB4MzgzMzAwMDAsCisg
ICAgMHgzODMzNDAwMCwKKyAgICAweDM4MzM4MDAwLAorICAgIDB4MzgzM2MwMDAsCisgICAgMHgz
ODM0MDAwMCwKKyAgICAweDM4MzQ0MDAwLAorICAgIDB4MzgzNDgwMDAsCisgICAgMHgzODM0YzAw
MCwKKyAgICAweDM4MzUwMDAwLAorICAgIDB4MzgzNTQwMDAsCisgICAgMHgzODM1ODAwMCwKKyAg
ICAweDM4MzVjMDAwLAorICAgIDB4MzgzNjAwMDAsCisgICAgMHgzODM2NDAwMCwKKyAgICAweDM4
MzY4MDAwLAorICAgIDB4MzgzNmMwMDAsCisgICAgMHgzODM3MDAwMCwKKyAgICAweDM4Mzc0MDAw
LAorICAgIDB4MzgzNzgwMDAsCisgICAgMHgzODM3YzAwMCwKKyAgICAweDM4MzgwMDAwLAorICAg
IDB4MzgzODQwMDAsCisgICAgMHgzODM4ODAwMCwKKyAgICAweDM4MzhjMDAwLAorICAgIDB4Mzgz
OTAwMDAsCisgICAgMHgzODM5NDAwMCwKKyAgICAweDM4Mzk4MDAwLAorICAgIDB4MzgzOWMwMDAs
CisgICAgMHgzODNhMDAwMCwKKyAgICAweDM4M2E0MDAwLAorICAgIDB4MzgzYTgwMDAsCisgICAg
MHgzODNhYzAwMCwKKyAgICAweDM4M2IwMDAwLAorICAgIDB4MzgzYjQwMDAsCisgICAgMHgzODNi
ODAwMCwKKyAgICAweDM4M2JjMDAwLAorICAgIDB4MzgzYzAwMDAsCisgICAgMHgzODNjNDAwMCwK
KyAgICAweDM4M2M4MDAwLAorICAgIDB4MzgzY2MwMDAsCisgICAgMHgzODNkMDAwMCwKKyAgICAw
eDM4M2Q0MDAwLAorICAgIDB4MzgzZDgwMDAsCisgICAgMHgzODNkYzAwMCwKKyAgICAweDM4M2Uw
MDAwLAorICAgIDB4MzgzZTQwMDAsCisgICAgMHgzODNlODAwMCwKKyAgICAweDM4M2VjMDAwLAor
ICAgIDB4MzgzZjAwMDAsCisgICAgMHgzODNmNDAwMCwKKyAgICAweDM4M2Y4MDAwLAorICAgIDB4
MzgzZmMwMDAsCisgICAgMHgzODQwMDAwMCwKKyAgICAweDM4NDA0MDAwLAorICAgIDB4Mzg0MDgw
MDAsCisgICAgMHgzODQwYzAwMCwKKyAgICAweDM4NDEwMDAwLAorICAgIDB4Mzg0MTQwMDAsCisg
ICAgMHgzODQxODAwMCwKKyAgICAweDM4NDFjMDAwLAorICAgIDB4Mzg0MjAwMDAsCisgICAgMHgz
ODQyNDAwMCwKKyAgICAweDM4NDI4MDAwLAorICAgIDB4Mzg0MmMwMDAsCisgICAgMHgzODQzMDAw
MCwKKyAgICAweDM4NDM0MDAwLAorICAgIDB4Mzg0MzgwMDAsCisgICAgMHgzODQzYzAwMCwKKyAg
ICAweDM4NDQwMDAwLAorICAgIDB4Mzg0NDQwMDAsCisgICAgMHgzODQ0ODAwMCwKKyAgICAweDM4
NDRjMDAwLAorICAgIDB4Mzg0NTAwMDAsCisgICAgMHgzODQ1NDAwMCwKKyAgICAweDM4NDU4MDAw
LAorICAgIDB4Mzg0NWMwMDAsCisgICAgMHgzODQ2MDAwMCwKKyAgICAweDM4NDY0MDAwLAorICAg
IDB4Mzg0NjgwMDAsCisgICAgMHgzODQ2YzAwMCwKKyAgICAweDM4NDcwMDAwLAorICAgIDB4Mzg0
NzQwMDAsCisgICAgMHgzODQ3ODAwMCwKKyAgICAweDM4NDdjMDAwLAorICAgIDB4Mzg0ODAwMDAs
CisgICAgMHgzODQ4NDAwMCwKKyAgICAweDM4NDg4MDAwLAorICAgIDB4Mzg0OGMwMDAsCisgICAg
MHgzODQ5MDAwMCwKKyAgICAweDM4NDk0MDAwLAorICAgIDB4Mzg0OTgwMDAsCisgICAgMHgzODQ5
YzAwMCwKKyAgICAweDM4NGEwMDAwLAorICAgIDB4Mzg0YTQwMDAsCisgICAgMHgzODRhODAwMCwK
KyAgICAweDM4NGFjMDAwLAorICAgIDB4Mzg0YjAwMDAsCisgICAgMHgzODRiNDAwMCwKKyAgICAw
eDM4NGI4MDAwLAorICAgIDB4Mzg0YmMwMDAsCisgICAgMHgzODRjMDAwMCwKKyAgICAweDM4NGM0
MDAwLAorICAgIDB4Mzg0YzgwMDAsCisgICAgMHgzODRjYzAwMCwKKyAgICAweDM4NGQwMDAwLAor
ICAgIDB4Mzg0ZDQwMDAsCisgICAgMHgzODRkODAwMCwKKyAgICAweDM4NGRjMDAwLAorICAgIDB4
Mzg0ZTAwMDAsCisgICAgMHgzODRlNDAwMCwKKyAgICAweDM4NGU4MDAwLAorICAgIDB4Mzg0ZWMw
MDAsCisgICAgMHgzODRmMDAwMCwKKyAgICAweDM4NGY0MDAwLAorICAgIDB4Mzg0ZjgwMDAsCisg
ICAgMHgzODRmYzAwMCwKKyAgICAweDM4NTAwMDAwLAorICAgIDB4Mzg1MDQwMDAsCisgICAgMHgz
ODUwODAwMCwKKyAgICAweDM4NTBjMDAwLAorICAgIDB4Mzg1MTAwMDAsCisgICAgMHgzODUxNDAw
MCwKKyAgICAweDM4NTE4MDAwLAorICAgIDB4Mzg1MWMwMDAsCisgICAgMHgzODUyMDAwMCwKKyAg
ICAweDM4NTI0MDAwLAorICAgIDB4Mzg1MjgwMDAsCisgICAgMHgzODUyYzAwMCwKKyAgICAweDM4
NTMwMDAwLAorICAgIDB4Mzg1MzQwMDAsCisgICAgMHgzODUzODAwMCwKKyAgICAweDM4NTNjMDAw
LAorICAgIDB4Mzg1NDAwMDAsCisgICAgMHgzODU0NDAwMCwKKyAgICAweDM4NTQ4MDAwLAorICAg
IDB4Mzg1NGMwMDAsCisgICAgMHgzODU1MDAwMCwKKyAgICAweDM4NTU0MDAwLAorICAgIDB4Mzg1
NTgwMDAsCisgICAgMHgzODU1YzAwMCwKKyAgICAweDM4NTYwMDAwLAorICAgIDB4Mzg1NjQwMDAs
CisgICAgMHgzODU2ODAwMCwKKyAgICAweDM4NTZjMDAwLAorICAgIDB4Mzg1NzAwMDAsCisgICAg
MHgzODU3NDAwMCwKKyAgICAweDM4NTc4MDAwLAorICAgIDB4Mzg1N2MwMDAsCisgICAgMHgzODU4
MDAwMCwKKyAgICAweDM4NTg0MDAwLAorICAgIDB4Mzg1ODgwMDAsCisgICAgMHgzODU4YzAwMCwK
KyAgICAweDM4NTkwMDAwLAorICAgIDB4Mzg1OTQwMDAsCisgICAgMHgzODU5ODAwMCwKKyAgICAw
eDM4NTljMDAwLAorICAgIDB4Mzg1YTAwMDAsCisgICAgMHgzODVhNDAwMCwKKyAgICAweDM4NWE4
MDAwLAorICAgIDB4Mzg1YWMwMDAsCisgICAgMHgzODViMDAwMCwKKyAgICAweDM4NWI0MDAwLAor
ICAgIDB4Mzg1YjgwMDAsCisgICAgMHgzODViYzAwMCwKKyAgICAweDM4NWMwMDAwLAorICAgIDB4
Mzg1YzQwMDAsCisgICAgMHgzODVjODAwMCwKKyAgICAweDM4NWNjMDAwLAorICAgIDB4Mzg1ZDAw
MDAsCisgICAgMHgzODVkNDAwMCwKKyAgICAweDM4NWQ4MDAwLAorICAgIDB4Mzg1ZGMwMDAsCisg
ICAgMHgzODVlMDAwMCwKKyAgICAweDM4NWU0MDAwLAorICAgIDB4Mzg1ZTgwMDAsCisgICAgMHgz
ODVlYzAwMCwKKyAgICAweDM4NWYwMDAwLAorICAgIDB4Mzg1ZjQwMDAsCisgICAgMHgzODVmODAw
MCwKKyAgICAweDM4NWZjMDAwLAorICAgIDB4Mzg2MDAwMDAsCisgICAgMHgzODYwNDAwMCwKKyAg
ICAweDM4NjA4MDAwLAorICAgIDB4Mzg2MGMwMDAsCisgICAgMHgzODYxMDAwMCwKKyAgICAweDM4
NjE0MDAwLAorICAgIDB4Mzg2MTgwMDAsCisgICAgMHgzODYxYzAwMCwKKyAgICAweDM4NjIwMDAw
LAorICAgIDB4Mzg2MjQwMDAsCisgICAgMHgzODYyODAwMCwKKyAgICAweDM4NjJjMDAwLAorICAg
IDB4Mzg2MzAwMDAsCisgICAgMHgzODYzNDAwMCwKKyAgICAweDM4NjM4MDAwLAorICAgIDB4Mzg2
M2MwMDAsCisgICAgMHgzODY0MDAwMCwKKyAgICAweDM4NjQ0MDAwLAorICAgIDB4Mzg2NDgwMDAs
CisgICAgMHgzODY0YzAwMCwKKyAgICAweDM4NjUwMDAwLAorICAgIDB4Mzg2NTQwMDAsCisgICAg
MHgzODY1ODAwMCwKKyAgICAweDM4NjVjMDAwLAorICAgIDB4Mzg2NjAwMDAsCisgICAgMHgzODY2
NDAwMCwKKyAgICAweDM4NjY4MDAwLAorICAgIDB4Mzg2NmMwMDAsCisgICAgMHgzODY3MDAwMCwK
KyAgICAweDM4Njc0MDAwLAorICAgIDB4Mzg2NzgwMDAsCisgICAgMHgzODY3YzAwMCwKKyAgICAw
eDM4NjgwMDAwLAorICAgIDB4Mzg2ODQwMDAsCisgICAgMHgzODY4ODAwMCwKKyAgICAweDM4Njhj
MDAwLAorICAgIDB4Mzg2OTAwMDAsCisgICAgMHgzODY5NDAwMCwKKyAgICAweDM4Njk4MDAwLAor
ICAgIDB4Mzg2OWMwMDAsCisgICAgMHgzODZhMDAwMCwKKyAgICAweDM4NmE0MDAwLAorICAgIDB4
Mzg2YTgwMDAsCisgICAgMHgzODZhYzAwMCwKKyAgICAweDM4NmIwMDAwLAorICAgIDB4Mzg2YjQw
MDAsCisgICAgMHgzODZiODAwMCwKKyAgICAweDM4NmJjMDAwLAorICAgIDB4Mzg2YzAwMDAsCisg
ICAgMHgzODZjNDAwMCwKKyAgICAweDM4NmM4MDAwLAorICAgIDB4Mzg2Y2MwMDAsCisgICAgMHgz
ODZkMDAwMCwKKyAgICAweDM4NmQ0MDAwLAorICAgIDB4Mzg2ZDgwMDAsCisgICAgMHgzODZkYzAw
MCwKKyAgICAweDM4NmUwMDAwLAorICAgIDB4Mzg2ZTQwMDAsCisgICAgMHgzODZlODAwMCwKKyAg
ICAweDM4NmVjMDAwLAorICAgIDB4Mzg2ZjAwMDAsCisgICAgMHgzODZmNDAwMCwKKyAgICAweDM4
NmY4MDAwLAorICAgIDB4Mzg2ZmMwMDAsCisgICAgMHgzODcwMDAwMCwKKyAgICAweDM4NzA0MDAw
LAorICAgIDB4Mzg3MDgwMDAsCisgICAgMHgzODcwYzAwMCwKKyAgICAweDM4NzEwMDAwLAorICAg
IDB4Mzg3MTQwMDAsCisgICAgMHgzODcxODAwMCwKKyAgICAweDM4NzFjMDAwLAorICAgIDB4Mzg3
MjAwMDAsCisgICAgMHgzODcyNDAwMCwKKyAgICAweDM4NzI4MDAwLAorICAgIDB4Mzg3MmMwMDAs
CisgICAgMHgzODczMDAwMCwKKyAgICAweDM4NzM0MDAwLAorICAgIDB4Mzg3MzgwMDAsCisgICAg
MHgzODczYzAwMCwKKyAgICAweDM4NzQwMDAwLAorICAgIDB4Mzg3NDQwMDAsCisgICAgMHgzODc0
ODAwMCwKKyAgICAweDM4NzRjMDAwLAorICAgIDB4Mzg3NTAwMDAsCisgICAgMHgzODc1NDAwMCwK
KyAgICAweDM4NzU4MDAwLAorICAgIDB4Mzg3NWMwMDAsCisgICAgMHgzODc2MDAwMCwKKyAgICAw
eDM4NzY0MDAwLAorICAgIDB4Mzg3NjgwMDAsCisgICAgMHgzODc2YzAwMCwKKyAgICAweDM4Nzcw
MDAwLAorICAgIDB4Mzg3NzQwMDAsCisgICAgMHgzODc3ODAwMCwKKyAgICAweDM4NzdjMDAwLAor
ICAgIDB4Mzg3ODAwMDAsCisgICAgMHgzODc4NDAwMCwKKyAgICAweDM4Nzg4MDAwLAorICAgIDB4
Mzg3OGMwMDAsCisgICAgMHgzODc5MDAwMCwKKyAgICAweDM4Nzk0MDAwLAorICAgIDB4Mzg3OTgw
MDAsCisgICAgMHgzODc5YzAwMCwKKyAgICAweDM4N2EwMDAwLAorICAgIDB4Mzg3YTQwMDAsCisg
ICAgMHgzODdhODAwMCwKKyAgICAweDM4N2FjMDAwLAorICAgIDB4Mzg3YjAwMDAsCisgICAgMHgz
ODdiNDAwMCwKKyAgICAweDM4N2I4MDAwLAorICAgIDB4Mzg3YmMwMDAsCisgICAgMHgzODdjMDAw
MCwKKyAgICAweDM4N2M0MDAwLAorICAgIDB4Mzg3YzgwMDAsCisgICAgMHgzODdjYzAwMCwKKyAg
ICAweDM4N2QwMDAwLAorICAgIDB4Mzg3ZDQwMDAsCisgICAgMHgzODdkODAwMCwKKyAgICAweDM4
N2RjMDAwLAorICAgIDB4Mzg3ZTAwMDAsCisgICAgMHgzODdlNDAwMCwKKyAgICAweDM4N2U4MDAw
LAorICAgIDB4Mzg3ZWMwMDAsCisgICAgMHgzODdmMDAwMCwKKyAgICAweDM4N2Y0MDAwLAorICAg
IDB4Mzg3ZjgwMDAsCisgICAgMHgzODdmYzAwMCwKKyAgICAweDM4MDAwMDAwLAorICAgIDB4Mzgw
MDIwMDAsCisgICAgMHgzODAwNDAwMCwKKyAgICAweDM4MDA2MDAwLAorICAgIDB4MzgwMDgwMDAs
CisgICAgMHgzODAwYTAwMCwKKyAgICAweDM4MDBjMDAwLAorICAgIDB4MzgwMGUwMDAsCisgICAg
MHgzODAxMDAwMCwKKyAgICAweDM4MDEyMDAwLAorICAgIDB4MzgwMTQwMDAsCisgICAgMHgzODAx
NjAwMCwKKyAgICAweDM4MDE4MDAwLAorICAgIDB4MzgwMWEwMDAsCisgICAgMHgzODAxYzAwMCwK
KyAgICAweDM4MDFlMDAwLAorICAgIDB4MzgwMjAwMDAsCisgICAgMHgzODAyMjAwMCwKKyAgICAw
eDM4MDI0MDAwLAorICAgIDB4MzgwMjYwMDAsCisgICAgMHgzODAyODAwMCwKKyAgICAweDM4MDJh
MDAwLAorICAgIDB4MzgwMmMwMDAsCisgICAgMHgzODAyZTAwMCwKKyAgICAweDM4MDMwMDAwLAor
ICAgIDB4MzgwMzIwMDAsCisgICAgMHgzODAzNDAwMCwKKyAgICAweDM4MDM2MDAwLAorICAgIDB4
MzgwMzgwMDAsCisgICAgMHgzODAzYTAwMCwKKyAgICAweDM4MDNjMDAwLAorICAgIDB4MzgwM2Uw
MDAsCisgICAgMHgzODA0MDAwMCwKKyAgICAweDM4MDQyMDAwLAorICAgIDB4MzgwNDQwMDAsCisg
ICAgMHgzODA0NjAwMCwKKyAgICAweDM4MDQ4MDAwLAorICAgIDB4MzgwNGEwMDAsCisgICAgMHgz
ODA0YzAwMCwKKyAgICAweDM4MDRlMDAwLAorICAgIDB4MzgwNTAwMDAsCisgICAgMHgzODA1MjAw
MCwKKyAgICAweDM4MDU0MDAwLAorICAgIDB4MzgwNTYwMDAsCisgICAgMHgzODA1ODAwMCwKKyAg
ICAweDM4MDVhMDAwLAorICAgIDB4MzgwNWMwMDAsCisgICAgMHgzODA1ZTAwMCwKKyAgICAweDM4
MDYwMDAwLAorICAgIDB4MzgwNjIwMDAsCisgICAgMHgzODA2NDAwMCwKKyAgICAweDM4MDY2MDAw
LAorICAgIDB4MzgwNjgwMDAsCisgICAgMHgzODA2YTAwMCwKKyAgICAweDM4MDZjMDAwLAorICAg
IDB4MzgwNmUwMDAsCisgICAgMHgzODA3MDAwMCwKKyAgICAweDM4MDcyMDAwLAorICAgIDB4Mzgw
NzQwMDAsCisgICAgMHgzODA3NjAwMCwKKyAgICAweDM4MDc4MDAwLAorICAgIDB4MzgwN2EwMDAs
CisgICAgMHgzODA3YzAwMCwKKyAgICAweDM4MDdlMDAwLAorICAgIDB4MzgwODAwMDAsCisgICAg
MHgzODA4MjAwMCwKKyAgICAweDM4MDg0MDAwLAorICAgIDB4MzgwODYwMDAsCisgICAgMHgzODA4
ODAwMCwKKyAgICAweDM4MDhhMDAwLAorICAgIDB4MzgwOGMwMDAsCisgICAgMHgzODA4ZTAwMCwK
KyAgICAweDM4MDkwMDAwLAorICAgIDB4MzgwOTIwMDAsCisgICAgMHgzODA5NDAwMCwKKyAgICAw
eDM4MDk2MDAwLAorICAgIDB4MzgwOTgwMDAsCisgICAgMHgzODA5YTAwMCwKKyAgICAweDM4MDlj
MDAwLAorICAgIDB4MzgwOWUwMDAsCisgICAgMHgzODBhMDAwMCwKKyAgICAweDM4MGEyMDAwLAor
ICAgIDB4MzgwYTQwMDAsCisgICAgMHgzODBhNjAwMCwKKyAgICAweDM4MGE4MDAwLAorICAgIDB4
MzgwYWEwMDAsCisgICAgMHgzODBhYzAwMCwKKyAgICAweDM4MGFlMDAwLAorICAgIDB4MzgwYjAw
MDAsCisgICAgMHgzODBiMjAwMCwKKyAgICAweDM4MGI0MDAwLAorICAgIDB4MzgwYjYwMDAsCisg
ICAgMHgzODBiODAwMCwKKyAgICAweDM4MGJhMDAwLAorICAgIDB4MzgwYmMwMDAsCisgICAgMHgz
ODBiZTAwMCwKKyAgICAweDM4MGMwMDAwLAorICAgIDB4MzgwYzIwMDAsCisgICAgMHgzODBjNDAw
MCwKKyAgICAweDM4MGM2MDAwLAorICAgIDB4MzgwYzgwMDAsCisgICAgMHgzODBjYTAwMCwKKyAg
ICAweDM4MGNjMDAwLAorICAgIDB4MzgwY2UwMDAsCisgICAgMHgzODBkMDAwMCwKKyAgICAweDM4
MGQyMDAwLAorICAgIDB4MzgwZDQwMDAsCisgICAgMHgzODBkNjAwMCwKKyAgICAweDM4MGQ4MDAw
LAorICAgIDB4MzgwZGEwMDAsCisgICAgMHgzODBkYzAwMCwKKyAgICAweDM4MGRlMDAwLAorICAg
IDB4MzgwZTAwMDAsCisgICAgMHgzODBlMjAwMCwKKyAgICAweDM4MGU0MDAwLAorICAgIDB4Mzgw
ZTYwMDAsCisgICAgMHgzODBlODAwMCwKKyAgICAweDM4MGVhMDAwLAorICAgIDB4MzgwZWMwMDAs
CisgICAgMHgzODBlZTAwMCwKKyAgICAweDM4MGYwMDAwLAorICAgIDB4MzgwZjIwMDAsCisgICAg
MHgzODBmNDAwMCwKKyAgICAweDM4MGY2MDAwLAorICAgIDB4MzgwZjgwMDAsCisgICAgMHgzODBm
YTAwMCwKKyAgICAweDM4MGZjMDAwLAorICAgIDB4MzgwZmUwMDAsCisgICAgMHgzODEwMDAwMCwK
KyAgICAweDM4MTAyMDAwLAorICAgIDB4MzgxMDQwMDAsCisgICAgMHgzODEwNjAwMCwKKyAgICAw
eDM4MTA4MDAwLAorICAgIDB4MzgxMGEwMDAsCisgICAgMHgzODEwYzAwMCwKKyAgICAweDM4MTBl
MDAwLAorICAgIDB4MzgxMTAwMDAsCisgICAgMHgzODExMjAwMCwKKyAgICAweDM4MTE0MDAwLAor
ICAgIDB4MzgxMTYwMDAsCisgICAgMHgzODExODAwMCwKKyAgICAweDM4MTFhMDAwLAorICAgIDB4
MzgxMWMwMDAsCisgICAgMHgzODExZTAwMCwKKyAgICAweDM4MTIwMDAwLAorICAgIDB4MzgxMjIw
MDAsCisgICAgMHgzODEyNDAwMCwKKyAgICAweDM4MTI2MDAwLAorICAgIDB4MzgxMjgwMDAsCisg
ICAgMHgzODEyYTAwMCwKKyAgICAweDM4MTJjMDAwLAorICAgIDB4MzgxMmUwMDAsCisgICAgMHgz
ODEzMDAwMCwKKyAgICAweDM4MTMyMDAwLAorICAgIDB4MzgxMzQwMDAsCisgICAgMHgzODEzNjAw
MCwKKyAgICAweDM4MTM4MDAwLAorICAgIDB4MzgxM2EwMDAsCisgICAgMHgzODEzYzAwMCwKKyAg
ICAweDM4MTNlMDAwLAorICAgIDB4MzgxNDAwMDAsCisgICAgMHgzODE0MjAwMCwKKyAgICAweDM4
MTQ0MDAwLAorICAgIDB4MzgxNDYwMDAsCisgICAgMHgzODE0ODAwMCwKKyAgICAweDM4MTRhMDAw
LAorICAgIDB4MzgxNGMwMDAsCisgICAgMHgzODE0ZTAwMCwKKyAgICAweDM4MTUwMDAwLAorICAg
IDB4MzgxNTIwMDAsCisgICAgMHgzODE1NDAwMCwKKyAgICAweDM4MTU2MDAwLAorICAgIDB4Mzgx
NTgwMDAsCisgICAgMHgzODE1YTAwMCwKKyAgICAweDM4MTVjMDAwLAorICAgIDB4MzgxNWUwMDAs
CisgICAgMHgzODE2MDAwMCwKKyAgICAweDM4MTYyMDAwLAorICAgIDB4MzgxNjQwMDAsCisgICAg
MHgzODE2NjAwMCwKKyAgICAweDM4MTY4MDAwLAorICAgIDB4MzgxNmEwMDAsCisgICAgMHgzODE2
YzAwMCwKKyAgICAweDM4MTZlMDAwLAorICAgIDB4MzgxNzAwMDAsCisgICAgMHgzODE3MjAwMCwK
KyAgICAweDM4MTc0MDAwLAorICAgIDB4MzgxNzYwMDAsCisgICAgMHgzODE3ODAwMCwKKyAgICAw
eDM4MTdhMDAwLAorICAgIDB4MzgxN2MwMDAsCisgICAgMHgzODE3ZTAwMCwKKyAgICAweDM4MTgw
MDAwLAorICAgIDB4MzgxODIwMDAsCisgICAgMHgzODE4NDAwMCwKKyAgICAweDM4MTg2MDAwLAor
ICAgIDB4MzgxODgwMDAsCisgICAgMHgzODE4YTAwMCwKKyAgICAweDM4MThjMDAwLAorICAgIDB4
MzgxOGUwMDAsCisgICAgMHgzODE5MDAwMCwKKyAgICAweDM4MTkyMDAwLAorICAgIDB4MzgxOTQw
MDAsCisgICAgMHgzODE5NjAwMCwKKyAgICAweDM4MTk4MDAwLAorICAgIDB4MzgxOWEwMDAsCisg
ICAgMHgzODE5YzAwMCwKKyAgICAweDM4MTllMDAwLAorICAgIDB4MzgxYTAwMDAsCisgICAgMHgz
ODFhMjAwMCwKKyAgICAweDM4MWE0MDAwLAorICAgIDB4MzgxYTYwMDAsCisgICAgMHgzODFhODAw
MCwKKyAgICAweDM4MWFhMDAwLAorICAgIDB4MzgxYWMwMDAsCisgICAgMHgzODFhZTAwMCwKKyAg
ICAweDM4MWIwMDAwLAorICAgIDB4MzgxYjIwMDAsCisgICAgMHgzODFiNDAwMCwKKyAgICAweDM4
MWI2MDAwLAorICAgIDB4MzgxYjgwMDAsCisgICAgMHgzODFiYTAwMCwKKyAgICAweDM4MWJjMDAw
LAorICAgIDB4MzgxYmUwMDAsCisgICAgMHgzODFjMDAwMCwKKyAgICAweDM4MWMyMDAwLAorICAg
IDB4MzgxYzQwMDAsCisgICAgMHgzODFjNjAwMCwKKyAgICAweDM4MWM4MDAwLAorICAgIDB4Mzgx
Y2EwMDAsCisgICAgMHgzODFjYzAwMCwKKyAgICAweDM4MWNlMDAwLAorICAgIDB4MzgxZDAwMDAs
CisgICAgMHgzODFkMjAwMCwKKyAgICAweDM4MWQ0MDAwLAorICAgIDB4MzgxZDYwMDAsCisgICAg
MHgzODFkODAwMCwKKyAgICAweDM4MWRhMDAwLAorICAgIDB4MzgxZGMwMDAsCisgICAgMHgzODFk
ZTAwMCwKKyAgICAweDM4MWUwMDAwLAorICAgIDB4MzgxZTIwMDAsCisgICAgMHgzODFlNDAwMCwK
KyAgICAweDM4MWU2MDAwLAorICAgIDB4MzgxZTgwMDAsCisgICAgMHgzODFlYTAwMCwKKyAgICAw
eDM4MWVjMDAwLAorICAgIDB4MzgxZWUwMDAsCisgICAgMHgzODFmMDAwMCwKKyAgICAweDM4MWYy
MDAwLAorICAgIDB4MzgxZjQwMDAsCisgICAgMHgzODFmNjAwMCwKKyAgICAweDM4MWY4MDAwLAor
ICAgIDB4MzgxZmEwMDAsCisgICAgMHgzODFmYzAwMCwKKyAgICAweDM4MWZlMDAwLAorICAgIDB4
MzgyMDAwMDAsCisgICAgMHgzODIwMjAwMCwKKyAgICAweDM4MjA0MDAwLAorICAgIDB4MzgyMDYw
MDAsCisgICAgMHgzODIwODAwMCwKKyAgICAweDM4MjBhMDAwLAorICAgIDB4MzgyMGMwMDAsCisg
ICAgMHgzODIwZTAwMCwKKyAgICAweDM4MjEwMDAwLAorICAgIDB4MzgyMTIwMDAsCisgICAgMHgz
ODIxNDAwMCwKKyAgICAweDM4MjE2MDAwLAorICAgIDB4MzgyMTgwMDAsCisgICAgMHgzODIxYTAw
MCwKKyAgICAweDM4MjFjMDAwLAorICAgIDB4MzgyMWUwMDAsCisgICAgMHgzODIyMDAwMCwKKyAg
ICAweDM4MjIyMDAwLAorICAgIDB4MzgyMjQwMDAsCisgICAgMHgzODIyNjAwMCwKKyAgICAweDM4
MjI4MDAwLAorICAgIDB4MzgyMmEwMDAsCisgICAgMHgzODIyYzAwMCwKKyAgICAweDM4MjJlMDAw
LAorICAgIDB4MzgyMzAwMDAsCisgICAgMHgzODIzMjAwMCwKKyAgICAweDM4MjM0MDAwLAorICAg
IDB4MzgyMzYwMDAsCisgICAgMHgzODIzODAwMCwKKyAgICAweDM4MjNhMDAwLAorICAgIDB4Mzgy
M2MwMDAsCisgICAgMHgzODIzZTAwMCwKKyAgICAweDM4MjQwMDAwLAorICAgIDB4MzgyNDIwMDAs
CisgICAgMHgzODI0NDAwMCwKKyAgICAweDM4MjQ2MDAwLAorICAgIDB4MzgyNDgwMDAsCisgICAg
MHgzODI0YTAwMCwKKyAgICAweDM4MjRjMDAwLAorICAgIDB4MzgyNGUwMDAsCisgICAgMHgzODI1
MDAwMCwKKyAgICAweDM4MjUyMDAwLAorICAgIDB4MzgyNTQwMDAsCisgICAgMHgzODI1NjAwMCwK
KyAgICAweDM4MjU4MDAwLAorICAgIDB4MzgyNWEwMDAsCisgICAgMHgzODI1YzAwMCwKKyAgICAw
eDM4MjVlMDAwLAorICAgIDB4MzgyNjAwMDAsCisgICAgMHgzODI2MjAwMCwKKyAgICAweDM4MjY0
MDAwLAorICAgIDB4MzgyNjYwMDAsCisgICAgMHgzODI2ODAwMCwKKyAgICAweDM4MjZhMDAwLAor
ICAgIDB4MzgyNmMwMDAsCisgICAgMHgzODI2ZTAwMCwKKyAgICAweDM4MjcwMDAwLAorICAgIDB4
MzgyNzIwMDAsCisgICAgMHgzODI3NDAwMCwKKyAgICAweDM4Mjc2MDAwLAorICAgIDB4MzgyNzgw
MDAsCisgICAgMHgzODI3YTAwMCwKKyAgICAweDM4MjdjMDAwLAorICAgIDB4MzgyN2UwMDAsCisg
ICAgMHgzODI4MDAwMCwKKyAgICAweDM4MjgyMDAwLAorICAgIDB4MzgyODQwMDAsCisgICAgMHgz
ODI4NjAwMCwKKyAgICAweDM4Mjg4MDAwLAorICAgIDB4MzgyOGEwMDAsCisgICAgMHgzODI4YzAw
MCwKKyAgICAweDM4MjhlMDAwLAorICAgIDB4MzgyOTAwMDAsCisgICAgMHgzODI5MjAwMCwKKyAg
ICAweDM4Mjk0MDAwLAorICAgIDB4MzgyOTYwMDAsCisgICAgMHgzODI5ODAwMCwKKyAgICAweDM4
MjlhMDAwLAorICAgIDB4MzgyOWMwMDAsCisgICAgMHgzODI5ZTAwMCwKKyAgICAweDM4MmEwMDAw
LAorICAgIDB4MzgyYTIwMDAsCisgICAgMHgzODJhNDAwMCwKKyAgICAweDM4MmE2MDAwLAorICAg
IDB4MzgyYTgwMDAsCisgICAgMHgzODJhYTAwMCwKKyAgICAweDM4MmFjMDAwLAorICAgIDB4Mzgy
YWUwMDAsCisgICAgMHgzODJiMDAwMCwKKyAgICAweDM4MmIyMDAwLAorICAgIDB4MzgyYjQwMDAs
CisgICAgMHgzODJiNjAwMCwKKyAgICAweDM4MmI4MDAwLAorICAgIDB4MzgyYmEwMDAsCisgICAg
MHgzODJiYzAwMCwKKyAgICAweDM4MmJlMDAwLAorICAgIDB4MzgyYzAwMDAsCisgICAgMHgzODJj
MjAwMCwKKyAgICAweDM4MmM0MDAwLAorICAgIDB4MzgyYzYwMDAsCisgICAgMHgzODJjODAwMCwK
KyAgICAweDM4MmNhMDAwLAorICAgIDB4MzgyY2MwMDAsCisgICAgMHgzODJjZTAwMCwKKyAgICAw
eDM4MmQwMDAwLAorICAgIDB4MzgyZDIwMDAsCisgICAgMHgzODJkNDAwMCwKKyAgICAweDM4MmQ2
MDAwLAorICAgIDB4MzgyZDgwMDAsCisgICAgMHgzODJkYTAwMCwKKyAgICAweDM4MmRjMDAwLAor
ICAgIDB4MzgyZGUwMDAsCisgICAgMHgzODJlMDAwMCwKKyAgICAweDM4MmUyMDAwLAorICAgIDB4
MzgyZTQwMDAsCisgICAgMHgzODJlNjAwMCwKKyAgICAweDM4MmU4MDAwLAorICAgIDB4MzgyZWEw
MDAsCisgICAgMHgzODJlYzAwMCwKKyAgICAweDM4MmVlMDAwLAorICAgIDB4MzgyZjAwMDAsCisg
ICAgMHgzODJmMjAwMCwKKyAgICAweDM4MmY0MDAwLAorICAgIDB4MzgyZjYwMDAsCisgICAgMHgz
ODJmODAwMCwKKyAgICAweDM4MmZhMDAwLAorICAgIDB4MzgyZmMwMDAsCisgICAgMHgzODJmZTAw
MCwKKyAgICAweDM4MzAwMDAwLAorICAgIDB4MzgzMDIwMDAsCisgICAgMHgzODMwNDAwMCwKKyAg
ICAweDM4MzA2MDAwLAorICAgIDB4MzgzMDgwMDAsCisgICAgMHgzODMwYTAwMCwKKyAgICAweDM4
MzBjMDAwLAorICAgIDB4MzgzMGUwMDAsCisgICAgMHgzODMxMDAwMCwKKyAgICAweDM4MzEyMDAw
LAorICAgIDB4MzgzMTQwMDAsCisgICAgMHgzODMxNjAwMCwKKyAgICAweDM4MzE4MDAwLAorICAg
IDB4MzgzMWEwMDAsCisgICAgMHgzODMxYzAwMCwKKyAgICAweDM4MzFlMDAwLAorICAgIDB4Mzgz
MjAwMDAsCisgICAgMHgzODMyMjAwMCwKKyAgICAweDM4MzI0MDAwLAorICAgIDB4MzgzMjYwMDAs
CisgICAgMHgzODMyODAwMCwKKyAgICAweDM4MzJhMDAwLAorICAgIDB4MzgzMmMwMDAsCisgICAg
MHgzODMyZTAwMCwKKyAgICAweDM4MzMwMDAwLAorICAgIDB4MzgzMzIwMDAsCisgICAgMHgzODMz
NDAwMCwKKyAgICAweDM4MzM2MDAwLAorICAgIDB4MzgzMzgwMDAsCisgICAgMHgzODMzYTAwMCwK
KyAgICAweDM4MzNjMDAwLAorICAgIDB4MzgzM2UwMDAsCisgICAgMHgzODM0MDAwMCwKKyAgICAw
eDM4MzQyMDAwLAorICAgIDB4MzgzNDQwMDAsCisgICAgMHgzODM0NjAwMCwKKyAgICAweDM4MzQ4
MDAwLAorICAgIDB4MzgzNGEwMDAsCisgICAgMHgzODM0YzAwMCwKKyAgICAweDM4MzRlMDAwLAor
ICAgIDB4MzgzNTAwMDAsCisgICAgMHgzODM1MjAwMCwKKyAgICAweDM4MzU0MDAwLAorICAgIDB4
MzgzNTYwMDAsCisgICAgMHgzODM1ODAwMCwKKyAgICAweDM4MzVhMDAwLAorICAgIDB4MzgzNWMw
MDAsCisgICAgMHgzODM1ZTAwMCwKKyAgICAweDM4MzYwMDAwLAorICAgIDB4MzgzNjIwMDAsCisg
ICAgMHgzODM2NDAwMCwKKyAgICAweDM4MzY2MDAwLAorICAgIDB4MzgzNjgwMDAsCisgICAgMHgz
ODM2YTAwMCwKKyAgICAweDM4MzZjMDAwLAorICAgIDB4MzgzNmUwMDAsCisgICAgMHgzODM3MDAw
MCwKKyAgICAweDM4MzcyMDAwLAorICAgIDB4MzgzNzQwMDAsCisgICAgMHgzODM3NjAwMCwKKyAg
ICAweDM4Mzc4MDAwLAorICAgIDB4MzgzN2EwMDAsCisgICAgMHgzODM3YzAwMCwKKyAgICAweDM4
MzdlMDAwLAorICAgIDB4MzgzODAwMDAsCisgICAgMHgzODM4MjAwMCwKKyAgICAweDM4Mzg0MDAw
LAorICAgIDB4MzgzODYwMDAsCisgICAgMHgzODM4ODAwMCwKKyAgICAweDM4MzhhMDAwLAorICAg
IDB4MzgzOGMwMDAsCisgICAgMHgzODM4ZTAwMCwKKyAgICAweDM4MzkwMDAwLAorICAgIDB4Mzgz
OTIwMDAsCisgICAgMHgzODM5NDAwMCwKKyAgICAweDM4Mzk2MDAwLAorICAgIDB4MzgzOTgwMDAs
CisgICAgMHgzODM5YTAwMCwKKyAgICAweDM4MzljMDAwLAorICAgIDB4MzgzOWUwMDAsCisgICAg
MHgzODNhMDAwMCwKKyAgICAweDM4M2EyMDAwLAorICAgIDB4MzgzYTQwMDAsCisgICAgMHgzODNh
NjAwMCwKKyAgICAweDM4M2E4MDAwLAorICAgIDB4MzgzYWEwMDAsCisgICAgMHgzODNhYzAwMCwK
KyAgICAweDM4M2FlMDAwLAorICAgIDB4MzgzYjAwMDAsCisgICAgMHgzODNiMjAwMCwKKyAgICAw
eDM4M2I0MDAwLAorICAgIDB4MzgzYjYwMDAsCisgICAgMHgzODNiODAwMCwKKyAgICAweDM4M2Jh
MDAwLAorICAgIDB4MzgzYmMwMDAsCisgICAgMHgzODNiZTAwMCwKKyAgICAweDM4M2MwMDAwLAor
ICAgIDB4MzgzYzIwMDAsCisgICAgMHgzODNjNDAwMCwKKyAgICAweDM4M2M2MDAwLAorICAgIDB4
MzgzYzgwMDAsCisgICAgMHgzODNjYTAwMCwKKyAgICAweDM4M2NjMDAwLAorICAgIDB4MzgzY2Uw
MDAsCisgICAgMHgzODNkMDAwMCwKKyAgICAweDM4M2QyMDAwLAorICAgIDB4MzgzZDQwMDAsCisg
ICAgMHgzODNkNjAwMCwKKyAgICAweDM4M2Q4MDAwLAorICAgIDB4MzgzZGEwMDAsCisgICAgMHgz
ODNkYzAwMCwKKyAgICAweDM4M2RlMDAwLAorICAgIDB4MzgzZTAwMDAsCisgICAgMHgzODNlMjAw
MCwKKyAgICAweDM4M2U0MDAwLAorICAgIDB4MzgzZTYwMDAsCisgICAgMHgzODNlODAwMCwKKyAg
ICAweDM4M2VhMDAwLAorICAgIDB4MzgzZWMwMDAsCisgICAgMHgzODNlZTAwMCwKKyAgICAweDM4
M2YwMDAwLAorICAgIDB4MzgzZjIwMDAsCisgICAgMHgzODNmNDAwMCwKKyAgICAweDM4M2Y2MDAw
LAorICAgIDB4MzgzZjgwMDAsCisgICAgMHgzODNmYTAwMCwKKyAgICAweDM4M2ZjMDAwLAorICAg
IDB4MzgzZmUwMDAsCisgICAgMHgzODQwMDAwMCwKKyAgICAweDM4NDAyMDAwLAorICAgIDB4Mzg0
MDQwMDAsCisgICAgMHgzODQwNjAwMCwKKyAgICAweDM4NDA4MDAwLAorICAgIDB4Mzg0MGEwMDAs
CisgICAgMHgzODQwYzAwMCwKKyAgICAweDM4NDBlMDAwLAorICAgIDB4Mzg0MTAwMDAsCisgICAg
MHgzODQxMjAwMCwKKyAgICAweDM4NDE0MDAwLAorICAgIDB4Mzg0MTYwMDAsCisgICAgMHgzODQx
ODAwMCwKKyAgICAweDM4NDFhMDAwLAorICAgIDB4Mzg0MWMwMDAsCisgICAgMHgzODQxZTAwMCwK
KyAgICAweDM4NDIwMDAwLAorICAgIDB4Mzg0MjIwMDAsCisgICAgMHgzODQyNDAwMCwKKyAgICAw
eDM4NDI2MDAwLAorICAgIDB4Mzg0MjgwMDAsCisgICAgMHgzODQyYTAwMCwKKyAgICAweDM4NDJj
MDAwLAorICAgIDB4Mzg0MmUwMDAsCisgICAgMHgzODQzMDAwMCwKKyAgICAweDM4NDMyMDAwLAor
ICAgIDB4Mzg0MzQwMDAsCisgICAgMHgzODQzNjAwMCwKKyAgICAweDM4NDM4MDAwLAorICAgIDB4
Mzg0M2EwMDAsCisgICAgMHgzODQzYzAwMCwKKyAgICAweDM4NDNlMDAwLAorICAgIDB4Mzg0NDAw
MDAsCisgICAgMHgzODQ0MjAwMCwKKyAgICAweDM4NDQ0MDAwLAorICAgIDB4Mzg0NDYwMDAsCisg
ICAgMHgzODQ0ODAwMCwKKyAgICAweDM4NDRhMDAwLAorICAgIDB4Mzg0NGMwMDAsCisgICAgMHgz
ODQ0ZTAwMCwKKyAgICAweDM4NDUwMDAwLAorICAgIDB4Mzg0NTIwMDAsCisgICAgMHgzODQ1NDAw
MCwKKyAgICAweDM4NDU2MDAwLAorICAgIDB4Mzg0NTgwMDAsCisgICAgMHgzODQ1YTAwMCwKKyAg
ICAweDM4NDVjMDAwLAorICAgIDB4Mzg0NWUwMDAsCisgICAgMHgzODQ2MDAwMCwKKyAgICAweDM4
NDYyMDAwLAorICAgIDB4Mzg0NjQwMDAsCisgICAgMHgzODQ2NjAwMCwKKyAgICAweDM4NDY4MDAw
LAorICAgIDB4Mzg0NmEwMDAsCisgICAgMHgzODQ2YzAwMCwKKyAgICAweDM4NDZlMDAwLAorICAg
IDB4Mzg0NzAwMDAsCisgICAgMHgzODQ3MjAwMCwKKyAgICAweDM4NDc0MDAwLAorICAgIDB4Mzg0
NzYwMDAsCisgICAgMHgzODQ3ODAwMCwKKyAgICAweDM4NDdhMDAwLAorICAgIDB4Mzg0N2MwMDAs
CisgICAgMHgzODQ3ZTAwMCwKKyAgICAweDM4NDgwMDAwLAorICAgIDB4Mzg0ODIwMDAsCisgICAg
MHgzODQ4NDAwMCwKKyAgICAweDM4NDg2MDAwLAorICAgIDB4Mzg0ODgwMDAsCisgICAgMHgzODQ4
YTAwMCwKKyAgICAweDM4NDhjMDAwLAorICAgIDB4Mzg0OGUwMDAsCisgICAgMHgzODQ5MDAwMCwK
KyAgICAweDM4NDkyMDAwLAorICAgIDB4Mzg0OTQwMDAsCisgICAgMHgzODQ5NjAwMCwKKyAgICAw
eDM4NDk4MDAwLAorICAgIDB4Mzg0OWEwMDAsCisgICAgMHgzODQ5YzAwMCwKKyAgICAweDM4NDll
MDAwLAorICAgIDB4Mzg0YTAwMDAsCisgICAgMHgzODRhMjAwMCwKKyAgICAweDM4NGE0MDAwLAor
ICAgIDB4Mzg0YTYwMDAsCisgICAgMHgzODRhODAwMCwKKyAgICAweDM4NGFhMDAwLAorICAgIDB4
Mzg0YWMwMDAsCisgICAgMHgzODRhZTAwMCwKKyAgICAweDM4NGIwMDAwLAorICAgIDB4Mzg0YjIw
MDAsCisgICAgMHgzODRiNDAwMCwKKyAgICAweDM4NGI2MDAwLAorICAgIDB4Mzg0YjgwMDAsCisg
ICAgMHgzODRiYTAwMCwKKyAgICAweDM4NGJjMDAwLAorICAgIDB4Mzg0YmUwMDAsCisgICAgMHgz
ODRjMDAwMCwKKyAgICAweDM4NGMyMDAwLAorICAgIDB4Mzg0YzQwMDAsCisgICAgMHgzODRjNjAw
MCwKKyAgICAweDM4NGM4MDAwLAorICAgIDB4Mzg0Y2EwMDAsCisgICAgMHgzODRjYzAwMCwKKyAg
ICAweDM4NGNlMDAwLAorICAgIDB4Mzg0ZDAwMDAsCisgICAgMHgzODRkMjAwMCwKKyAgICAweDM4
NGQ0MDAwLAorICAgIDB4Mzg0ZDYwMDAsCisgICAgMHgzODRkODAwMCwKKyAgICAweDM4NGRhMDAw
LAorICAgIDB4Mzg0ZGMwMDAsCisgICAgMHgzODRkZTAwMCwKKyAgICAweDM4NGUwMDAwLAorICAg
IDB4Mzg0ZTIwMDAsCisgICAgMHgzODRlNDAwMCwKKyAgICAweDM4NGU2MDAwLAorICAgIDB4Mzg0
ZTgwMDAsCisgICAgMHgzODRlYTAwMCwKKyAgICAweDM4NGVjMDAwLAorICAgIDB4Mzg0ZWUwMDAs
CisgICAgMHgzODRmMDAwMCwKKyAgICAweDM4NGYyMDAwLAorICAgIDB4Mzg0ZjQwMDAsCisgICAg
MHgzODRmNjAwMCwKKyAgICAweDM4NGY4MDAwLAorICAgIDB4Mzg0ZmEwMDAsCisgICAgMHgzODRm
YzAwMCwKKyAgICAweDM4NGZlMDAwLAorICAgIDB4Mzg1MDAwMDAsCisgICAgMHgzODUwMjAwMCwK
KyAgICAweDM4NTA0MDAwLAorICAgIDB4Mzg1MDYwMDAsCisgICAgMHgzODUwODAwMCwKKyAgICAw
eDM4NTBhMDAwLAorICAgIDB4Mzg1MGMwMDAsCisgICAgMHgzODUwZTAwMCwKKyAgICAweDM4NTEw
MDAwLAorICAgIDB4Mzg1MTIwMDAsCisgICAgMHgzODUxNDAwMCwKKyAgICAweDM4NTE2MDAwLAor
ICAgIDB4Mzg1MTgwMDAsCisgICAgMHgzODUxYTAwMCwKKyAgICAweDM4NTFjMDAwLAorICAgIDB4
Mzg1MWUwMDAsCisgICAgMHgzODUyMDAwMCwKKyAgICAweDM4NTIyMDAwLAorICAgIDB4Mzg1MjQw
MDAsCisgICAgMHgzODUyNjAwMCwKKyAgICAweDM4NTI4MDAwLAorICAgIDB4Mzg1MmEwMDAsCisg
ICAgMHgzODUyYzAwMCwKKyAgICAweDM4NTJlMDAwLAorICAgIDB4Mzg1MzAwMDAsCisgICAgMHgz
ODUzMjAwMCwKKyAgICAweDM4NTM0MDAwLAorICAgIDB4Mzg1MzYwMDAsCisgICAgMHgzODUzODAw
MCwKKyAgICAweDM4NTNhMDAwLAorICAgIDB4Mzg1M2MwMDAsCisgICAgMHgzODUzZTAwMCwKKyAg
ICAweDM4NTQwMDAwLAorICAgIDB4Mzg1NDIwMDAsCisgICAgMHgzODU0NDAwMCwKKyAgICAweDM4
NTQ2MDAwLAorICAgIDB4Mzg1NDgwMDAsCisgICAgMHgzODU0YTAwMCwKKyAgICAweDM4NTRjMDAw
LAorICAgIDB4Mzg1NGUwMDAsCisgICAgMHgzODU1MDAwMCwKKyAgICAweDM4NTUyMDAwLAorICAg
IDB4Mzg1NTQwMDAsCisgICAgMHgzODU1NjAwMCwKKyAgICAweDM4NTU4MDAwLAorICAgIDB4Mzg1
NWEwMDAsCisgICAgMHgzODU1YzAwMCwKKyAgICAweDM4NTVlMDAwLAorICAgIDB4Mzg1NjAwMDAs
CisgICAgMHgzODU2MjAwMCwKKyAgICAweDM4NTY0MDAwLAorICAgIDB4Mzg1NjYwMDAsCisgICAg
MHgzODU2ODAwMCwKKyAgICAweDM4NTZhMDAwLAorICAgIDB4Mzg1NmMwMDAsCisgICAgMHgzODU2
ZTAwMCwKKyAgICAweDM4NTcwMDAwLAorICAgIDB4Mzg1NzIwMDAsCisgICAgMHgzODU3NDAwMCwK
KyAgICAweDM4NTc2MDAwLAorICAgIDB4Mzg1NzgwMDAsCisgICAgMHgzODU3YTAwMCwKKyAgICAw
eDM4NTdjMDAwLAorICAgIDB4Mzg1N2UwMDAsCisgICAgMHgzODU4MDAwMCwKKyAgICAweDM4NTgy
MDAwLAorICAgIDB4Mzg1ODQwMDAsCisgICAgMHgzODU4NjAwMCwKKyAgICAweDM4NTg4MDAwLAor
ICAgIDB4Mzg1OGEwMDAsCisgICAgMHgzODU4YzAwMCwKKyAgICAweDM4NThlMDAwLAorICAgIDB4
Mzg1OTAwMDAsCisgICAgMHgzODU5MjAwMCwKKyAgICAweDM4NTk0MDAwLAorICAgIDB4Mzg1OTYw
MDAsCisgICAgMHgzODU5ODAwMCwKKyAgICAweDM4NTlhMDAwLAorICAgIDB4Mzg1OWMwMDAsCisg
ICAgMHgzODU5ZTAwMCwKKyAgICAweDM4NWEwMDAwLAorICAgIDB4Mzg1YTIwMDAsCisgICAgMHgz
ODVhNDAwMCwKKyAgICAweDM4NWE2MDAwLAorICAgIDB4Mzg1YTgwMDAsCisgICAgMHgzODVhYTAw
MCwKKyAgICAweDM4NWFjMDAwLAorICAgIDB4Mzg1YWUwMDAsCisgICAgMHgzODViMDAwMCwKKyAg
ICAweDM4NWIyMDAwLAorICAgIDB4Mzg1YjQwMDAsCisgICAgMHgzODViNjAwMCwKKyAgICAweDM4
NWI4MDAwLAorICAgIDB4Mzg1YmEwMDAsCisgICAgMHgzODViYzAwMCwKKyAgICAweDM4NWJlMDAw
LAorICAgIDB4Mzg1YzAwMDAsCisgICAgMHgzODVjMjAwMCwKKyAgICAweDM4NWM0MDAwLAorICAg
IDB4Mzg1YzYwMDAsCisgICAgMHgzODVjODAwMCwKKyAgICAweDM4NWNhMDAwLAorICAgIDB4Mzg1
Y2MwMDAsCisgICAgMHgzODVjZTAwMCwKKyAgICAweDM4NWQwMDAwLAorICAgIDB4Mzg1ZDIwMDAs
CisgICAgMHgzODVkNDAwMCwKKyAgICAweDM4NWQ2MDAwLAorICAgIDB4Mzg1ZDgwMDAsCisgICAg
MHgzODVkYTAwMCwKKyAgICAweDM4NWRjMDAwLAorICAgIDB4Mzg1ZGUwMDAsCisgICAgMHgzODVl
MDAwMCwKKyAgICAweDM4NWUyMDAwLAorICAgIDB4Mzg1ZTQwMDAsCisgICAgMHgzODVlNjAwMCwK
KyAgICAweDM4NWU4MDAwLAorICAgIDB4Mzg1ZWEwMDAsCisgICAgMHgzODVlYzAwMCwKKyAgICAw
eDM4NWVlMDAwLAorICAgIDB4Mzg1ZjAwMDAsCisgICAgMHgzODVmMjAwMCwKKyAgICAweDM4NWY0
MDAwLAorICAgIDB4Mzg1ZjYwMDAsCisgICAgMHgzODVmODAwMCwKKyAgICAweDM4NWZhMDAwLAor
ICAgIDB4Mzg1ZmMwMDAsCisgICAgMHgzODVmZTAwMCwKKyAgICAweDM4NjAwMDAwLAorICAgIDB4
Mzg2MDIwMDAsCisgICAgMHgzODYwNDAwMCwKKyAgICAweDM4NjA2MDAwLAorICAgIDB4Mzg2MDgw
MDAsCisgICAgMHgzODYwYTAwMCwKKyAgICAweDM4NjBjMDAwLAorICAgIDB4Mzg2MGUwMDAsCisg
ICAgMHgzODYxMDAwMCwKKyAgICAweDM4NjEyMDAwLAorICAgIDB4Mzg2MTQwMDAsCisgICAgMHgz
ODYxNjAwMCwKKyAgICAweDM4NjE4MDAwLAorICAgIDB4Mzg2MWEwMDAsCisgICAgMHgzODYxYzAw
MCwKKyAgICAweDM4NjFlMDAwLAorICAgIDB4Mzg2MjAwMDAsCisgICAgMHgzODYyMjAwMCwKKyAg
ICAweDM4NjI0MDAwLAorICAgIDB4Mzg2MjYwMDAsCisgICAgMHgzODYyODAwMCwKKyAgICAweDM4
NjJhMDAwLAorICAgIDB4Mzg2MmMwMDAsCisgICAgMHgzODYyZTAwMCwKKyAgICAweDM4NjMwMDAw
LAorICAgIDB4Mzg2MzIwMDAsCisgICAgMHgzODYzNDAwMCwKKyAgICAweDM4NjM2MDAwLAorICAg
IDB4Mzg2MzgwMDAsCisgICAgMHgzODYzYTAwMCwKKyAgICAweDM4NjNjMDAwLAorICAgIDB4Mzg2
M2UwMDAsCisgICAgMHgzODY0MDAwMCwKKyAgICAweDM4NjQyMDAwLAorICAgIDB4Mzg2NDQwMDAs
CisgICAgMHgzODY0NjAwMCwKKyAgICAweDM4NjQ4MDAwLAorICAgIDB4Mzg2NGEwMDAsCisgICAg
MHgzODY0YzAwMCwKKyAgICAweDM4NjRlMDAwLAorICAgIDB4Mzg2NTAwMDAsCisgICAgMHgzODY1
MjAwMCwKKyAgICAweDM4NjU0MDAwLAorICAgIDB4Mzg2NTYwMDAsCisgICAgMHgzODY1ODAwMCwK
KyAgICAweDM4NjVhMDAwLAorICAgIDB4Mzg2NWMwMDAsCisgICAgMHgzODY1ZTAwMCwKKyAgICAw
eDM4NjYwMDAwLAorICAgIDB4Mzg2NjIwMDAsCisgICAgMHgzODY2NDAwMCwKKyAgICAweDM4NjY2
MDAwLAorICAgIDB4Mzg2NjgwMDAsCisgICAgMHgzODY2YTAwMCwKKyAgICAweDM4NjZjMDAwLAor
ICAgIDB4Mzg2NmUwMDAsCisgICAgMHgzODY3MDAwMCwKKyAgICAweDM4NjcyMDAwLAorICAgIDB4
Mzg2NzQwMDAsCisgICAgMHgzODY3NjAwMCwKKyAgICAweDM4Njc4MDAwLAorICAgIDB4Mzg2N2Ew
MDAsCisgICAgMHgzODY3YzAwMCwKKyAgICAweDM4NjdlMDAwLAorICAgIDB4Mzg2ODAwMDAsCisg
ICAgMHgzODY4MjAwMCwKKyAgICAweDM4Njg0MDAwLAorICAgIDB4Mzg2ODYwMDAsCisgICAgMHgz
ODY4ODAwMCwKKyAgICAweDM4NjhhMDAwLAorICAgIDB4Mzg2OGMwMDAsCisgICAgMHgzODY4ZTAw
MCwKKyAgICAweDM4NjkwMDAwLAorICAgIDB4Mzg2OTIwMDAsCisgICAgMHgzODY5NDAwMCwKKyAg
ICAweDM4Njk2MDAwLAorICAgIDB4Mzg2OTgwMDAsCisgICAgMHgzODY5YTAwMCwKKyAgICAweDM4
NjljMDAwLAorICAgIDB4Mzg2OWUwMDAsCisgICAgMHgzODZhMDAwMCwKKyAgICAweDM4NmEyMDAw
LAorICAgIDB4Mzg2YTQwMDAsCisgICAgMHgzODZhNjAwMCwKKyAgICAweDM4NmE4MDAwLAorICAg
IDB4Mzg2YWEwMDAsCisgICAgMHgzODZhYzAwMCwKKyAgICAweDM4NmFlMDAwLAorICAgIDB4Mzg2
YjAwMDAsCisgICAgMHgzODZiMjAwMCwKKyAgICAweDM4NmI0MDAwLAorICAgIDB4Mzg2YjYwMDAs
CisgICAgMHgzODZiODAwMCwKKyAgICAweDM4NmJhMDAwLAorICAgIDB4Mzg2YmMwMDAsCisgICAg
MHgzODZiZTAwMCwKKyAgICAweDM4NmMwMDAwLAorICAgIDB4Mzg2YzIwMDAsCisgICAgMHgzODZj
NDAwMCwKKyAgICAweDM4NmM2MDAwLAorICAgIDB4Mzg2YzgwMDAsCisgICAgMHgzODZjYTAwMCwK
KyAgICAweDM4NmNjMDAwLAorICAgIDB4Mzg2Y2UwMDAsCisgICAgMHgzODZkMDAwMCwKKyAgICAw
eDM4NmQyMDAwLAorICAgIDB4Mzg2ZDQwMDAsCisgICAgMHgzODZkNjAwMCwKKyAgICAweDM4NmQ4
MDAwLAorICAgIDB4Mzg2ZGEwMDAsCisgICAgMHgzODZkYzAwMCwKKyAgICAweDM4NmRlMDAwLAor
ICAgIDB4Mzg2ZTAwMDAsCisgICAgMHgzODZlMjAwMCwKKyAgICAweDM4NmU0MDAwLAorICAgIDB4
Mzg2ZTYwMDAsCisgICAgMHgzODZlODAwMCwKKyAgICAweDM4NmVhMDAwLAorICAgIDB4Mzg2ZWMw
MDAsCisgICAgMHgzODZlZTAwMCwKKyAgICAweDM4NmYwMDAwLAorICAgIDB4Mzg2ZjIwMDAsCisg
ICAgMHgzODZmNDAwMCwKKyAgICAweDM4NmY2MDAwLAorICAgIDB4Mzg2ZjgwMDAsCisgICAgMHgz
ODZmYTAwMCwKKyAgICAweDM4NmZjMDAwLAorICAgIDB4Mzg2ZmUwMDAsCisgICAgMHgzODcwMDAw
MCwKKyAgICAweDM4NzAyMDAwLAorICAgIDB4Mzg3MDQwMDAsCisgICAgMHgzODcwNjAwMCwKKyAg
ICAweDM4NzA4MDAwLAorICAgIDB4Mzg3MGEwMDAsCisgICAgMHgzODcwYzAwMCwKKyAgICAweDM4
NzBlMDAwLAorICAgIDB4Mzg3MTAwMDAsCisgICAgMHgzODcxMjAwMCwKKyAgICAweDM4NzE0MDAw
LAorICAgIDB4Mzg3MTYwMDAsCisgICAgMHgzODcxODAwMCwKKyAgICAweDM4NzFhMDAwLAorICAg
IDB4Mzg3MWMwMDAsCisgICAgMHgzODcxZTAwMCwKKyAgICAweDM4NzIwMDAwLAorICAgIDB4Mzg3
MjIwMDAsCisgICAgMHgzODcyNDAwMCwKKyAgICAweDM4NzI2MDAwLAorICAgIDB4Mzg3MjgwMDAs
CisgICAgMHgzODcyYTAwMCwKKyAgICAweDM4NzJjMDAwLAorICAgIDB4Mzg3MmUwMDAsCisgICAg
MHgzODczMDAwMCwKKyAgICAweDM4NzMyMDAwLAorICAgIDB4Mzg3MzQwMDAsCisgICAgMHgzODcz
NjAwMCwKKyAgICAweDM4NzM4MDAwLAorICAgIDB4Mzg3M2EwMDAsCisgICAgMHgzODczYzAwMCwK
KyAgICAweDM4NzNlMDAwLAorICAgIDB4Mzg3NDAwMDAsCisgICAgMHgzODc0MjAwMCwKKyAgICAw
eDM4NzQ0MDAwLAorICAgIDB4Mzg3NDYwMDAsCisgICAgMHgzODc0ODAwMCwKKyAgICAweDM4NzRh
MDAwLAorICAgIDB4Mzg3NGMwMDAsCisgICAgMHgzODc0ZTAwMCwKKyAgICAweDM4NzUwMDAwLAor
ICAgIDB4Mzg3NTIwMDAsCisgICAgMHgzODc1NDAwMCwKKyAgICAweDM4NzU2MDAwLAorICAgIDB4
Mzg3NTgwMDAsCisgICAgMHgzODc1YTAwMCwKKyAgICAweDM4NzVjMDAwLAorICAgIDB4Mzg3NWUw
MDAsCisgICAgMHgzODc2MDAwMCwKKyAgICAweDM4NzYyMDAwLAorICAgIDB4Mzg3NjQwMDAsCisg
ICAgMHgzODc2NjAwMCwKKyAgICAweDM4NzY4MDAwLAorICAgIDB4Mzg3NmEwMDAsCisgICAgMHgz
ODc2YzAwMCwKKyAgICAweDM4NzZlMDAwLAorICAgIDB4Mzg3NzAwMDAsCisgICAgMHgzODc3MjAw
MCwKKyAgICAweDM4Nzc0MDAwLAorICAgIDB4Mzg3NzYwMDAsCisgICAgMHgzODc3ODAwMCwKKyAg
ICAweDM4NzdhMDAwLAorICAgIDB4Mzg3N2MwMDAsCisgICAgMHgzODc3ZTAwMCwKKyAgICAweDM4
NzgwMDAwLAorICAgIDB4Mzg3ODIwMDAsCisgICAgMHgzODc4NDAwMCwKKyAgICAweDM4Nzg2MDAw
LAorICAgIDB4Mzg3ODgwMDAsCisgICAgMHgzODc4YTAwMCwKKyAgICAweDM4NzhjMDAwLAorICAg
IDB4Mzg3OGUwMDAsCisgICAgMHgzODc5MDAwMCwKKyAgICAweDM4NzkyMDAwLAorICAgIDB4Mzg3
OTQwMDAsCisgICAgMHgzODc5NjAwMCwKKyAgICAweDM4Nzk4MDAwLAorICAgIDB4Mzg3OWEwMDAs
CisgICAgMHgzODc5YzAwMCwKKyAgICAweDM4NzllMDAwLAorICAgIDB4Mzg3YTAwMDAsCisgICAg
MHgzODdhMjAwMCwKKyAgICAweDM4N2E0MDAwLAorICAgIDB4Mzg3YTYwMDAsCisgICAgMHgzODdh
ODAwMCwKKyAgICAweDM4N2FhMDAwLAorICAgIDB4Mzg3YWMwMDAsCisgICAgMHgzODdhZTAwMCwK
KyAgICAweDM4N2IwMDAwLAorICAgIDB4Mzg3YjIwMDAsCisgICAgMHgzODdiNDAwMCwKKyAgICAw
eDM4N2I2MDAwLAorICAgIDB4Mzg3YjgwMDAsCisgICAgMHgzODdiYTAwMCwKKyAgICAweDM4N2Jj
MDAwLAorICAgIDB4Mzg3YmUwMDAsCisgICAgMHgzODdjMDAwMCwKKyAgICAweDM4N2MyMDAwLAor
ICAgIDB4Mzg3YzQwMDAsCisgICAgMHgzODdjNjAwMCwKKyAgICAweDM4N2M4MDAwLAorICAgIDB4
Mzg3Y2EwMDAsCisgICAgMHgzODdjYzAwMCwKKyAgICAweDM4N2NlMDAwLAorICAgIDB4Mzg3ZDAw
MDAsCisgICAgMHgzODdkMjAwMCwKKyAgICAweDM4N2Q0MDAwLAorICAgIDB4Mzg3ZDYwMDAsCisg
ICAgMHgzODdkODAwMCwKKyAgICAweDM4N2RhMDAwLAorICAgIDB4Mzg3ZGMwMDAsCisgICAgMHgz
ODdkZTAwMCwKKyAgICAweDM4N2UwMDAwLAorICAgIDB4Mzg3ZTIwMDAsCisgICAgMHgzODdlNDAw
MCwKKyAgICAweDM4N2U2MDAwLAorICAgIDB4Mzg3ZTgwMDAsCisgICAgMHgzODdlYTAwMCwKKyAg
ICAweDM4N2VjMDAwLAorICAgIDB4Mzg3ZWUwMDAsCisgICAgMHgzODdmMDAwMCwKKyAgICAweDM4
N2YyMDAwLAorICAgIDB4Mzg3ZjQwMDAsCisgICAgMHgzODdmNjAwMCwKKyAgICAweDM4N2Y4MDAw
LAorICAgIDB4Mzg3ZmEwMDAsCisgICAgMHgzODdmYzAwMCwKKyAgICAweDM4N2ZlMDAwLAorfTsK
KworY29uc3Qgc3RhdGljIHVuc2lnbmVkIGdfZXhwb25lbnRbNjRdID0geworICAgIDB4MDAwMDAw
MDAsCisgICAgMHgwMDgwMDAwMCwKKyAgICAweDAxMDAwMDAwLAorICAgIDB4MDE4MDAwMDAsCisg
ICAgMHgwMjAwMDAwMCwKKyAgICAweDAyODAwMDAwLAorICAgIDB4MDMwMDAwMDAsCisgICAgMHgw
MzgwMDAwMCwKKyAgICAweDA0MDAwMDAwLAorICAgIDB4MDQ4MDAwMDAsCisgICAgMHgwNTAwMDAw
MCwKKyAgICAweDA1ODAwMDAwLAorICAgIDB4MDYwMDAwMDAsCisgICAgMHgwNjgwMDAwMCwKKyAg
ICAweDA3MDAwMDAwLAorICAgIDB4MDc4MDAwMDAsCisgICAgMHgwODAwMDAwMCwKKyAgICAweDA4
ODAwMDAwLAorICAgIDB4MDkwMDAwMDAsCisgICAgMHgwOTgwMDAwMCwKKyAgICAweDBhMDAwMDAw
LAorICAgIDB4MGE4MDAwMDAsCisgICAgMHgwYjAwMDAwMCwKKyAgICAweDBiODAwMDAwLAorICAg
IDB4MGMwMDAwMDAsCisgICAgMHgwYzgwMDAwMCwKKyAgICAweDBkMDAwMDAwLAorICAgIDB4MGQ4
MDAwMDAsCisgICAgMHgwZTAwMDAwMCwKKyAgICAweDBlODAwMDAwLAorICAgIDB4MGYwMDAwMDAs
CisgICAgMHg0NzgwMDAwMCwKKyAgICAweDgwMDAwMDAwLAorICAgIDB4ODA4MDAwMDAsCisgICAg
MHg4MTAwMDAwMCwKKyAgICAweDgxODAwMDAwLAorICAgIDB4ODIwMDAwMDAsCisgICAgMHg4Mjgw
MDAwMCwKKyAgICAweDgzMDAwMDAwLAorICAgIDB4ODM4MDAwMDAsCisgICAgMHg4NDAwMDAwMCwK
KyAgICAweDg0ODAwMDAwLAorICAgIDB4ODUwMDAwMDAsCisgICAgMHg4NTgwMDAwMCwKKyAgICAw
eDg2MDAwMDAwLAorICAgIDB4ODY4MDAwMDAsCisgICAgMHg4NzAwMDAwMCwKKyAgICAweDg3ODAw
MDAwLAorICAgIDB4ODgwMDAwMDAsCisgICAgMHg4ODgwMDAwMCwKKyAgICAweDg5MDAwMDAwLAor
ICAgIDB4ODk4MDAwMDAsCisgICAgMHg4YTAwMDAwMCwKKyAgICAweDhhODAwMDAwLAorICAgIDB4
OGIwMDAwMDAsCisgICAgMHg4YjgwMDAwMCwKKyAgICAweDhjMDAwMDAwLAorICAgIDB4OGM4MDAw
MDAsCisgICAgMHg4ZDAwMDAwMCwKKyAgICAweDhkODAwMDAwLAorICAgIDB4OGUwMDAwMDAsCisg
ICAgMHg4ZTgwMDAwMCwKKyAgICAweDhmMDAwMDAwLAorICAgIDB4Yzc4MDAwMDAsCit9OworCitj
b25zdCBzdGF0aWMgdW5zaWduZWQgZ19vZmZzZXRbNjRdID0geworICAgIDB4MDAwMDAwMDAsCisg
ICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgw
MDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQw
MCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAg
ICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAw
MDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAw
LAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAg
IDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAw
MDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAs
CisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAg
MHgwMDAwMDQwMCwKKyAgICAweDAwMDAwMDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAw
MDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwK
KyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAw
eDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAw
NDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAor
ICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4
MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0
MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisg
ICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgw
MDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCit9OworCitmbG9hdCBm
bG9hdDE2VG9GbG9hdDMyKHVuc2lnbmVkIHNob3J0IGgpCit7CisgICAgdW5zaWduZWQgaTMyID0g
Z19tYW50aXNzYVtnX29mZnNldFtoID4+IDEwXSArIChoICYgMHgzZmYpXSArIGdfZXhwb25lbnRb
aCA+PiAxMF07CisgICAgcmV0dXJuICooZmxvYXQqKSAmaTMyOworfQorfQorCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0Zsb2F0MTZUb0Zsb2F0MzIucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GbG9hdDE2
VG9GbG9hdDMyLnB5CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9GbG9hdDE2VG9GbG9hdDMyLnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4
IEBACisjIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisjCisKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIGEgZnVuY3Rpb24gdGhhdCBjb252
ZXJ0cyAxNi1iaXQgcHJlY2lzaW9uIGZsb2F0aW5nCisjIHBvaW50IG51bWJlcnMgdG8gMzItYml0
LgorIyBJdCBpcyBiYXNlZCBvbiBmdHA6Ly9mdHAuZm94LXRvb2xraXQub3JnL3B1Yi9mYXN0aGFs
ZmZsb2F0Y29udmVyc2lvbi5wZGYuCisKK2RlZiBjb252ZXJ0TWFudGlzc2EoaSk6CisgICAgaWYg
aSA9PSAwOgorICAgICAgICByZXR1cm4gMAorICAgIGVsaWYgaSA8IDEwMjQ6CisgICAgICAgIG0g
PSBpIDw8IDEzCisgICAgICAgIGUgPSAwCisgICAgICAgIHdoaWxlIG5vdCAobSAmIDB4MDA4MDAw
MDApOgorICAgICAgICAgICAgZSAtPSAweDAwODAwMDAwCisgICAgICAgICAgICBtID0gbSA8PCAx
CisgICAgICAgIG0gJj0gfjB4MDA4MDAwMDAKKyAgICAgICAgZSArPSAweDM4ODAwMDAwCisgICAg
ICAgIHJldHVybiBtIHwgZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAweDM4MDAwMDAwICsg
KChpIC0gMTAyNCkgPDwgMTMpCisKK2RlZiBjb252ZXJ0RXhwb25lbnQoaSk6CisgICAgaWYgaSA9
PSAwOgorICAgICAgICByZXR1cm4gMAorICAgIGVsaWYgaSBpbiByYW5nZSgxLCAzMSk6CisgICAg
ICAgIHJldHVybiBpIDw8IDIzCisgICAgZWxpZiBpID09IDMxOgorICAgICAgICByZXR1cm4gMHg0
NzgwMDAwMAorICAgIGVsaWYgaSA9PSAzMjoKKyAgICAgICAgcmV0dXJuIDB4ODAwMDAwMDAKKyAg
ICBlbGlmIGkgaW4gcmFuZ2UoMzMsIDYzKToKKyAgICAgICAgcmV0dXJuIDB4ODAwMDAwMDAgKyAo
KGkgLSAzMikgPDwgMjMpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIDB4Qzc4MDAwMDAKKwor
ZGVmIGNvbnZlcnRPZmZzZXQoaSk6CisgICAgaWYgaSA9PSAwIG9yIGkgPT0gMzI6CisgICAgICAg
IHJldHVybiAwCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIDEwMjQKKworcHJpbnQgIiIiLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKy8vIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC4KKwor
bmFtZXNwYWNlIGdsCit7CisiIiIKKworcHJpbnQgImNvbnN0IHN0YXRpYyB1bnNpZ25lZCBnX21h
bnRpc3NhWzIwNDhdID0geyIKK2ZvciBpIGluIHJhbmdlKDAsIDIwNDgpOgorICAgIHByaW50ICIg
ICAgJSMwMTB4LCIgJSBjb252ZXJ0TWFudGlzc2EoaSkKK3ByaW50ICJ9O1xuIgorCitwcmludCAi
Y29uc3Qgc3RhdGljIHVuc2lnbmVkIGdfZXhwb25lbnRbNjRdID0geyIKK2ZvciBpIGluIHJhbmdl
KDAsIDY0KToKKyAgICBwcmludCAiICAgICUjMDEweCwiICUgY29udmVydEV4cG9uZW50KGkpCitw
cmludCAifTtcbiIKKworcHJpbnQgImNvbnN0IHN0YXRpYyB1bnNpZ25lZCBnX29mZnNldFs2NF0g
PSB7IgorZm9yIGkgaW4gcmFuZ2UoMCwgNjQpOgorICAgIHByaW50ICIgICAgJSMwMTB4LCIgJSBj
b252ZXJ0T2Zmc2V0KGkpCitwcmludCAifTtcbiIKKworcHJpbnQgIiIiZmxvYXQgZmxvYXQxNlRv
RmxvYXQzMih1bnNpZ25lZCBzaG9ydCBoKQoreworICAgIHVuc2lnbmVkIGkzMiA9IGdfbWFudGlz
c2FbZ19vZmZzZXRbaCA+PiAxMF0gKyAoaCAmIDB4M2ZmKV0gKyBnX2V4cG9uZW50W2ggPj4gMTBd
OworICAgIHJldHVybiAqKGZsb2F0KikgJmkzMjsKK30KK30KKyIiIgpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0Zy
YW1lYnVmZmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MDMgQEAKKyNpbmNsdWRlICJw
cmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRnJhbWVidWZmZXIuY3BwOiBJ
bXBsZW1lbnRzIHRoZSBnbDo6RnJhbWVidWZmZXIgY2xhc3MuIEltcGxlbWVudHMgR0wgZnJhbWVi
dWZmZXIKKy8vIG9iamVjdHMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBFUyAy
LjAuMjRdIHNlY3Rpb24gNC40IHBhZ2UgMTA1LgorCisjaW5jbHVkZSAibGliR0xFU3YyL0ZyYW1l
YnVmZmVyLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvVGV4dHVyZS5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9Db250ZXh0LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlcmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgorCituYW1lc3Bh
Y2UgZ2wKK3sKKworRnJhbWVidWZmZXI6OkZyYW1lYnVmZmVyKHJ4OjpSZW5kZXJlciAqcmVuZGVy
ZXIpCisgICAgOiBtUmVuZGVyZXIocmVuZGVyZXIpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
Y29sb3JBdHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgSU1QTEVNRU5UQVRJT05fTUFY
X0RSQVdfQlVGRkVSUzsgY29sb3JBdHRhY2htZW50KyspCisgICAgeworICAgICAgICBtQ29sb3Ji
dWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdID0gR0xfTk9ORTsKKyAgICAgICAgbURyYXdCdWZm
ZXJTdGF0ZXNbY29sb3JBdHRhY2htZW50XSA9IEdMX05PTkU7CisgICAgfQorICAgIG1EcmF3QnVm
ZmVyU3RhdGVzWzBdID0gR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUOworICAgIG1SZWFkQnVmZmVy
U3RhdGUgPSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQ7CisKKyAgICBtRGVwdGhidWZmZXJUeXBl
ID0gR0xfTk9ORTsKKyAgICBtU3RlbmNpbGJ1ZmZlclR5cGUgPSBHTF9OT05FOworfQorCitGcmFt
ZWJ1ZmZlcjo6fkZyYW1lYnVmZmVyKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBjb2xvckF0
dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19C
VUZGRVJTOyBjb2xvckF0dGFjaG1lbnQrKykKKyAgICB7CisgICAgICAgIG1Db2xvcmJ1ZmZlclBv
aW50ZXJzW2NvbG9yQXR0YWNobWVudF0uc2V0KE5VTEwpOworICAgIH0KKyAgICBtRGVwdGhidWZm
ZXJQb2ludGVyLnNldChOVUxMKTsKKyAgICBtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuc2V0KE5VTEwp
OworfQorCitSZW5kZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpsb29rdXBSZW5kZXJidWZmZXIoR0xl
bnVtIHR5cGUsIEdMdWludCBoYW5kbGUpIGNvbnN0Cit7CisgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Q29udGV4dCgpOworICAgIFJlbmRlcmJ1ZmZlciAqYnVmZmVyID0gTlVMTDsK
KworICAgIGlmICh0eXBlID09IEdMX05PTkUpCisgICAgeworICAgICAgICBidWZmZXIgPSBOVUxM
OworICAgIH0KKyAgICBlbHNlIGlmICh0eXBlID09IEdMX1JFTkRFUkJVRkZFUikKKyAgICB7Cisg
ICAgICAgIGJ1ZmZlciA9IGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlcihoYW5kbGUpOworICAgIH0K
KyAgICBlbHNlIGlmIChJc0ludGVybmFsVGV4dHVyZVRhcmdldCh0eXBlKSkKKyAgICB7CisgICAg
ICAgIGJ1ZmZlciA9IGNvbnRleHQtPmdldFRleHR1cmUoaGFuZGxlKS0+Z2V0UmVuZGVyYnVmZmVy
KHR5cGUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgIH0KKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3ZvaWQgRnJhbWVidWZmZXI6OnNldENv
bG9yYnVmZmVyKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQsIEdMZW51bSB0eXBlLCBHTHVp
bnQgY29sb3JidWZmZXIpCit7CisgICAgQVNTRVJUKGNvbG9yQXR0YWNobWVudCA8IElNUExFTUVO
VEFUSU9OX01BWF9EUkFXX0JVRkZFUlMpOworICAgIG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9yQXR0
YWNobWVudF0gPSAoY29sb3JidWZmZXIgIT0gMCkgPyB0eXBlIDogR0xfTk9ORTsKKyAgICBtQ29s
b3JidWZmZXJQb2ludGVyc1tjb2xvckF0dGFjaG1lbnRdLnNldChsb29rdXBSZW5kZXJidWZmZXIo
dHlwZSwgY29sb3JidWZmZXIpKTsKK30KKwordm9pZCBGcmFtZWJ1ZmZlcjo6c2V0RGVwdGhidWZm
ZXIoR0xlbnVtIHR5cGUsIEdMdWludCBkZXB0aGJ1ZmZlcikKK3sKKyAgICBtRGVwdGhidWZmZXJU
eXBlID0gKGRlcHRoYnVmZmVyICE9IDApID8gdHlwZSA6IEdMX05PTkU7CisgICAgbURlcHRoYnVm
ZmVyUG9pbnRlci5zZXQobG9va3VwUmVuZGVyYnVmZmVyKHR5cGUsIGRlcHRoYnVmZmVyKSk7Cit9
CisKK3ZvaWQgRnJhbWVidWZmZXI6OnNldFN0ZW5jaWxidWZmZXIoR0xlbnVtIHR5cGUsIEdMdWlu
dCBzdGVuY2lsYnVmZmVyKQoreworICAgIG1TdGVuY2lsYnVmZmVyVHlwZSA9IChzdGVuY2lsYnVm
ZmVyICE9IDApID8gdHlwZSA6IEdMX05PTkU7CisgICAgbVN0ZW5jaWxidWZmZXJQb2ludGVyLnNl
dChsb29rdXBSZW5kZXJidWZmZXIodHlwZSwgc3RlbmNpbGJ1ZmZlcikpOworfQorCit2b2lkIEZy
YW1lYnVmZmVyOjpkZXRhY2hUZXh0dXJlKEdMdWludCB0ZXh0dXJlKQoreworICAgIGZvciAodW5z
aWduZWQgaW50IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IElNUExFTUVO
VEFUSU9OX01BWF9EUkFXX0JVRkZFUlM7IGNvbG9yQXR0YWNobWVudCsrKQorICAgIHsKKyAgICAg
ICAgaWYgKG1Db2xvcmJ1ZmZlclBvaW50ZXJzW2NvbG9yQXR0YWNobWVudF0uaWQoKSA9PSB0ZXh0
dXJlICYmIElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9yQXR0
YWNobWVudF0pKQorICAgICAgICB7CisgICAgICAgICAgICBtQ29sb3JidWZmZXJUeXBlc1tjb2xv
ckF0dGFjaG1lbnRdID0gR0xfTk9ORTsKKyAgICAgICAgICAgIG1Db2xvcmJ1ZmZlclBvaW50ZXJz
W2NvbG9yQXR0YWNobWVudF0uc2V0KE5VTEwpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KG1EZXB0aGJ1ZmZlclBvaW50ZXIuaWQoKSA9PSB0ZXh0dXJlICYmIElzSW50ZXJuYWxUZXh0dXJl
VGFyZ2V0KG1EZXB0aGJ1ZmZlclR5cGUpKQorICAgIHsKKyAgICAgICAgbURlcHRoYnVmZmVyVHlw
ZSA9IEdMX05PTkU7CisgICAgICAgIG1EZXB0aGJ1ZmZlclBvaW50ZXIuc2V0KE5VTEwpOworICAg
IH0KKworICAgIGlmIChtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuaWQoKSA9PSB0ZXh0dXJlICYmIElz
SW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1TdGVuY2lsYnVmZmVyVHlwZSkpCisgICAgeworICAgICAg
ICBtU3RlbmNpbGJ1ZmZlclR5cGUgPSBHTF9OT05FOworICAgICAgICBtU3RlbmNpbGJ1ZmZlclBv
aW50ZXIuc2V0KE5VTEwpOworICAgIH0KK30KKwordm9pZCBGcmFtZWJ1ZmZlcjo6ZGV0YWNoUmVu
ZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
Y29sb3JBdHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgSU1QTEVNRU5UQVRJT05fTUFY
X0RSQVdfQlVGRkVSUzsgY29sb3JBdHRhY2htZW50KyspCisgICAgeworICAgICAgICBpZiAobUNv
bG9yYnVmZmVyUG9pbnRlcnNbY29sb3JBdHRhY2htZW50XS5pZCgpID09IHJlbmRlcmJ1ZmZlciAm
JiBtQ29sb3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdID09IEdMX1JFTkRFUkJVRkZFUikK
KyAgICAgICAgeworICAgICAgICAgICAgbUNvbG9yYnVmZmVyVHlwZXNbY29sb3JBdHRhY2htZW50
XSA9IEdMX05PTkU7CisgICAgICAgICAgICBtQ29sb3JidWZmZXJQb2ludGVyc1tjb2xvckF0dGFj
aG1lbnRdLnNldChOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtRGVwdGhidWZm
ZXJQb2ludGVyLmlkKCkgPT0gcmVuZGVyYnVmZmVyICYmIG1EZXB0aGJ1ZmZlclR5cGUgPT0gR0xf
UkVOREVSQlVGRkVSKQorICAgIHsKKyAgICAgICAgbURlcHRoYnVmZmVyVHlwZSA9IEdMX05PTkU7
CisgICAgICAgIG1EZXB0aGJ1ZmZlclBvaW50ZXIuc2V0KE5VTEwpOworICAgIH0KKworICAgIGlm
IChtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuaWQoKSA9PSByZW5kZXJidWZmZXIgJiYgbVN0ZW5jaWxi
dWZmZXJUeXBlID09IEdMX1JFTkRFUkJVRkZFUikKKyAgICB7CisgICAgICAgIG1TdGVuY2lsYnVm
ZmVyVHlwZSA9IEdMX05PTkU7CisgICAgICAgIG1TdGVuY2lsYnVmZmVyUG9pbnRlci5zZXQoTlVM
TCk7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgRnJhbWVidWZmZXI6OmdldFJlbmRlclRhcmdl
dFNlcmlhbCh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25zdAoreworICAgIEFTU0VS
VChjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTKTsKKwor
ICAgIFJlbmRlcmJ1ZmZlciAqY29sb3JidWZmZXIgPSBtQ29sb3JidWZmZXJQb2ludGVyc1tjb2xv
ckF0dGFjaG1lbnRdLmdldCgpOworCisgICAgaWYgKGNvbG9yYnVmZmVyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGNvbG9yYnVmZmVyLT5nZXRTZXJpYWwoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
MDsKK30KKwordW5zaWduZWQgaW50IEZyYW1lYnVmZmVyOjpnZXREZXB0aGJ1ZmZlclNlcmlhbCgp
IGNvbnN0Cit7CisgICAgUmVuZGVyYnVmZmVyICpkZXB0aGJ1ZmZlciA9IG1EZXB0aGJ1ZmZlclBv
aW50ZXIuZ2V0KCk7CisKKyAgICBpZiAoZGVwdGhidWZmZXIpCisgICAgeworICAgICAgICByZXR1
cm4gZGVwdGhidWZmZXItPmdldFNlcmlhbCgpOworICAgIH0KKworICAgIHJldHVybiAwOworfQor
Cit1bnNpZ25lZCBpbnQgRnJhbWVidWZmZXI6OmdldFN0ZW5jaWxidWZmZXJTZXJpYWwoKSBjb25z
dAoreworICAgIFJlbmRlcmJ1ZmZlciAqc3RlbmNpbGJ1ZmZlciA9IG1TdGVuY2lsYnVmZmVyUG9p
bnRlci5nZXQoKTsKKworICAgIGlmIChzdGVuY2lsYnVmZmVyKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN0ZW5jaWxidWZmZXItPmdldFNlcmlhbCgpOworICAgIH0KKworICAgIHJldHVybiAwOwor
fQorCitSZW5kZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpnZXRDb2xvcmJ1ZmZlcih1bnNpZ25lZCBp
bnQgY29sb3JBdHRhY2htZW50KSBjb25zdAoreworICAgIEFTU0VSVChjb2xvckF0dGFjaG1lbnQg
PCBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTKTsKKyAgICByZXR1cm4gbUNvbG9yYnVm
ZmVyUG9pbnRlcnNbY29sb3JBdHRhY2htZW50XS5nZXQoKTsKK30KKworUmVuZGVyYnVmZmVyICpG
cmFtZWJ1ZmZlcjo6Z2V0RGVwdGhidWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBtRGVwdGhi
dWZmZXJQb2ludGVyLmdldCgpOworfQorCitSZW5kZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpnZXRT
dGVuY2lsYnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0ZW5jaWxidWZmZXJQb2ludGVy
LmdldCgpOworfQorCitSZW5kZXJidWZmZXIgKkZyYW1lYnVmZmVyOjpnZXREZXB0aE9yU3RlbmNp
bGJ1ZmZlcigpIGNvbnN0Cit7CisgICAgUmVuZGVyYnVmZmVyICpkZXB0aHN0ZW5jaWxidWZmZXIg
PSBtRGVwdGhidWZmZXJQb2ludGVyLmdldCgpOworICAgIAorICAgIGlmICghZGVwdGhzdGVuY2ls
YnVmZmVyKQorICAgIHsKKyAgICAgICAgZGVwdGhzdGVuY2lsYnVmZmVyID0gbVN0ZW5jaWxidWZm
ZXJQb2ludGVyLmdldCgpOworICAgIH0KKworICAgIHJldHVybiBkZXB0aHN0ZW5jaWxidWZmZXI7
Cit9CisKK1JlbmRlcmJ1ZmZlciAqRnJhbWVidWZmZXI6OmdldFJlYWRDb2xvcmJ1ZmZlcigpIGNv
bnN0Cit7CisgICAgLy8gV2lsbCByZXF1aXJlIG1vcmUgbG9naWMgaWYgZ2xSZWFkQnVmZmVycyBp
cyBzdXBwb3J0ZWQKKyAgICByZXR1cm4gbUNvbG9yYnVmZmVyUG9pbnRlcnNbMF0uZ2V0KCk7Cit9
CisKK0dMZW51bSBGcmFtZWJ1ZmZlcjo6Z2V0UmVhZENvbG9yYnVmZmVyVHlwZSgpIGNvbnN0Cit7
CisgICAgLy8gV2lsbCByZXF1aXJlIG1vcmUgbG9naWMgaWYgZ2xSZWFkQnVmZmVycyBpcyBzdXBw
b3J0ZWQKKyAgICByZXR1cm4gbUNvbG9yYnVmZmVyVHlwZXNbMF07Cit9CisKK1JlbmRlcmJ1ZmZl
ciAqRnJhbWVidWZmZXI6OmdldEZpcnN0Q29sb3JidWZmZXIoKSBjb25zdAoreworICAgIGZvciAo
dW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IElNUExF
TUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM7IGNvbG9yQXR0YWNobWVudCsrKQorICAgIHsKKyAg
ICAgICAgaWYgKG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9yQXR0YWNobWVudF0gIT0gR0xfTk9ORSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1Db2xvcmJ1ZmZlclBvaW50ZXJzW2NvbG9y
QXR0YWNobWVudF0uZ2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsK
K30KKworR0xlbnVtIEZyYW1lYnVmZmVyOjpnZXRDb2xvcmJ1ZmZlclR5cGUodW5zaWduZWQgaW50
IGNvbG9yQXR0YWNobWVudCkgY29uc3QKK3sKKyAgICBBU1NFUlQoY29sb3JBdHRhY2htZW50IDwg
SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUyk7CisgICAgcmV0dXJuIG1Db2xvcmJ1ZmZl
clR5cGVzW2NvbG9yQXR0YWNobWVudF07Cit9CisKK0dMZW51bSBGcmFtZWJ1ZmZlcjo6Z2V0RGVw
dGhidWZmZXJUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbURlcHRoYnVmZmVyVHlwZTsKK30K
KworR0xlbnVtIEZyYW1lYnVmZmVyOjpnZXRTdGVuY2lsYnVmZmVyVHlwZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1TdGVuY2lsYnVmZmVyVHlwZTsKK30KKworR0x1aW50IEZyYW1lYnVmZmVyOjpn
ZXRDb2xvcmJ1ZmZlckhhbmRsZSh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25zdAor
eworICAgIEFTU0VSVChjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19C
VUZGRVJTKTsKKyAgICByZXR1cm4gbUNvbG9yYnVmZmVyUG9pbnRlcnNbY29sb3JBdHRhY2htZW50
XS5pZCgpOworfQorCitHTHVpbnQgRnJhbWVidWZmZXI6OmdldERlcHRoYnVmZmVySGFuZGxlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbURlcHRoYnVmZmVyUG9pbnRlci5pZCgpOworfQorCitHTHVp
bnQgRnJhbWVidWZmZXI6OmdldFN0ZW5jaWxidWZmZXJIYW5kbGUoKSBjb25zdAoreworICAgIHJl
dHVybiBtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuaWQoKTsKK30KKworR0xlbnVtIEZyYW1lYnVmZmVy
OjpnZXREcmF3QnVmZmVyU3RhdGUodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbURyYXdCdWZmZXJTdGF0ZXNbY29sb3JBdHRhY2htZW50XTsKK30KKwor
dm9pZCBGcmFtZWJ1ZmZlcjo6c2V0RHJhd0J1ZmZlclN0YXRlKHVuc2lnbmVkIGludCBjb2xvckF0
dGFjaG1lbnQsIEdMZW51bSBkcmF3QnVmZmVyKQoreworICAgIG1EcmF3QnVmZmVyU3RhdGVzW2Nv
bG9yQXR0YWNobWVudF0gPSBkcmF3QnVmZmVyOworfQorCitib29sIEZyYW1lYnVmZmVyOjppc0Vu
YWJsZWRDb2xvckF0dGFjaG1lbnQodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29uc3QK
K3sKKyAgICByZXR1cm4gKG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9yQXR0YWNobWVudF0gIT0gR0xf
Tk9ORSAmJiBtRHJhd0J1ZmZlclN0YXRlc1tjb2xvckF0dGFjaG1lbnRdICE9IEdMX05PTkUpOwor
fQorCitib29sIEZyYW1lYnVmZmVyOjpoYXNFbmFibGVkQ29sb3JBdHRhY2htZW50KCkgY29uc3QK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFj
aG1lbnQgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUzsgY29sb3JBdHRhY2ht
ZW50KyspCisgICAgeworICAgICAgICBpZiAoaXNFbmFibGVkQ29sb3JBdHRhY2htZW50KGNvbG9y
QXR0YWNobWVudCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZyYW1lYnVmZmVyOjpo
YXNTdGVuY2lsKCkgY29uc3QKK3sKKyAgICBpZiAobVN0ZW5jaWxidWZmZXJUeXBlICE9IEdMX05P
TkUpCisgICAgeworICAgICAgICBjb25zdCBSZW5kZXJidWZmZXIgKnN0ZW5jaWxidWZmZXJPYmpl
Y3QgPSBnZXRTdGVuY2lsYnVmZmVyKCk7CisKKyAgICAgICAgaWYgKHN0ZW5jaWxidWZmZXJPYmpl
Y3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzdGVuY2lsYnVmZmVyT2JqZWN0LT5n
ZXRTdGVuY2lsU2l6ZSgpID4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBGcmFtZWJ1ZmZlcjo6dXNpbmdFeHRlbmRlZERyYXdCdWZmZXJzKCkgY29u
c3QKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAxOyBjb2xvckF0
dGFjaG1lbnQgPCBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTOyBjb2xvckF0dGFjaG1l
bnQrKykKKyAgICB7CisgICAgICAgIGlmIChpc0VuYWJsZWRDb2xvckF0dGFjaG1lbnQoY29sb3JB
dHRhY2htZW50KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0dMZW51bSBGcmFtZWJ1ZmZlcjo6
Y29tcGxldGVuZXNzKCkgY29uc3QKK3sKKyAgICBpbnQgd2lkdGggPSAwOworICAgIGludCBoZWln
aHQgPSAwOworICAgIGludCBjb2xvcmJ1ZmZlclNpemUgPSAwOworICAgIGludCBzYW1wbGVzID0g
LTE7CisgICAgYm9vbCBtaXNzaW5nQXR0YWNobWVudCA9IHRydWU7CisKKyAgICBmb3IgKHVuc2ln
bmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBJTVBMRU1FTlRB
VElPTl9NQVhfRFJBV19CVUZGRVJTOyBjb2xvckF0dGFjaG1lbnQrKykKKyAgICB7CisgICAgICAg
IGlmIChtQ29sb3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdICE9IEdMX05PTkUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFJlbmRlcmJ1ZmZlciAqY29sb3JidWZmZXIgPSBnZXRD
b2xvcmJ1ZmZlcihjb2xvckF0dGFjaG1lbnQpOworCisgICAgICAgICAgICBpZiAoIWNvbG9yYnVm
ZmVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChjb2xvcmJ1ZmZlci0+Z2V0V2lkdGgoKSA9PSAwIHx8IGNvbG9yYnVmZmVyLT5nZXRIZWlnaHQo
KSA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJV
RkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChtQ29sb3JidWZmZXJUeXBlc1tjb2xvckF0dGFjaG1lbnRdID09IEdMX1JFTkRFUkJVRkZF
UikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIWdsOjpJc0NvbG9yUmVuZGVy
YWJsZShjb2xvcmJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKSkpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9B
VFRBQ0hNRU5UOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UgaWYgKElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1Db2xvcmJ1ZmZlclR5cGVzW2NvbG9y
QXR0YWNobWVudF0pKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEdMaW50IGludGVy
bmFsZm9ybWF0ID0gY29sb3JidWZmZXItPmdldEludGVybmFsRm9ybWF0KCk7CisgICAgICAgICAg
ICAgICAgR0xlbnVtIGZvcm1hdCA9IGdsOjpFeHRyYWN0Rm9ybWF0KGludGVybmFsZm9ybWF0KTsK
KworICAgICAgICAgICAgICAgIGlmIChJc0NvbXByZXNzZWQoZm9ybWF0KSB8fAorICAgICAgICAg
ICAgICAgICAgICBmb3JtYXQgPT0gR0xfQUxQSEEgfHwKKyAgICAgICAgICAgICAgICAgICAgZm9y
bWF0ID09IEdMX0xVTUlOQU5DRSB8fAorICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPT0gR0xf
TFVNSU5BTkNFX0FMUEhBKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGJvb2wgZmlsdGVyaW5nLCByZW5kZXJhYmxlOworCisgICAgICAgICAg
ICAgICAgaWYgKChnbDo6SXNGbG9hdDMyRm9ybWF0KGludGVybmFsZm9ybWF0KSAmJiAhbVJlbmRl
cmVyLT5nZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQoJmZpbHRlcmluZywgJnJlbmRlcmFibGUpKSB8
fAorICAgICAgICAgICAgICAgICAgICAoZ2w6OklzRmxvYXQxNkZvcm1hdChpbnRlcm5hbGZvcm1h
dCkgJiYgIW1SZW5kZXJlci0+Z2V0RmxvYXQxNlRleHR1cmVTdXBwb3J0KCZmaWx0ZXJpbmcsICZy
ZW5kZXJhYmxlKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKGdsOjpJc0RlcHRoVGV4dHVyZShpbnRlcm5hbGZvcm1hdCkgfHwgZ2w6
OklzU3RlbmNpbFRleHR1cmUoaW50ZXJuYWxmb3JtYXQpKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNI
TUVOVDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIW1pc3NpbmdBdHRhY2htZW50KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIC8vIGFsbCBjb2xvciBhdHRhY2htZW50cyBtdXN0IGhh
dmUgdGhlIHNhbWUgd2lkdGggYW5kIGhlaWdodAorICAgICAgICAgICAgICAgIGlmIChjb2xvcmJ1
ZmZlci0+Z2V0V2lkdGgoKSAhPSB3aWR0aCB8fCBjb2xvcmJ1ZmZlci0+Z2V0SGVpZ2h0KCkgIT0g
aGVpZ2h0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdM
X0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUzsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAvLyBBUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSwgd2hpY2gg
RVhUX2RyYXdfYnVmZmVycyByZWZlcnMgdG8sIHJlcXVpcmVzIHRoYXQKKyAgICAgICAgICAgICAg
ICAvLyBhbGwgY29sb3IgYXR0YWNobWVudHMgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Ygc2FtcGxl
cyBmb3IgdGhlIEZCTyB0byBiZSBjb21wbGV0ZS4KKyAgICAgICAgICAgICAgICBpZiAoY29sb3Ji
dWZmZXItPmdldFNhbXBsZXMoKSAhPSBzYW1wbGVzKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1Q
TEVfRVhUOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGFsbCBjb2xv
ciBhdHRhY2htZW50cyBhdHRhY2htZW50cyBtdXN0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGJp
dHBsYW5lcworICAgICAgICAgICAgICAgIGlmIChnbDo6Q29tcHV0ZVBpeGVsU2l6ZShjb2xvcmJ1
ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKSkgIT0gY29sb3JidWZmZXJTaXplKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX1VOU1VQ
UE9SVEVEOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEQzRDExIGRv
ZXMgbm90IGFsbG93IGZvciBvdmVybGFwcGluZyBSZW5kZXJUYXJnZXRWaWV3cywgc28gZW5zdXJl
IHVuaXF1ZW5lc3MKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBwcmV2aW91c0Nv
bG9yQXR0YWNobWVudCA9IDA7IHByZXZpb3VzQ29sb3JBdHRhY2htZW50IDwgY29sb3JBdHRhY2ht
ZW50OyBwcmV2aW91c0NvbG9yQXR0YWNobWVudCsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKG1Db2xvcmJ1ZmZlclBvaW50ZXJzW2NvbG9yQXR0YWNobWVudF0u
Z2V0KCkgPT0gbUNvbG9yYnVmZmVyUG9pbnRlcnNbcHJldmlvdXNDb2xvckF0dGFjaG1lbnRdLmdl
dCgpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgd2lkdGggPSBjb2xvcmJ1ZmZlci0+Z2V0V2lkdGgoKTsK
KyAgICAgICAgICAgICAgICBoZWlnaHQgPSBjb2xvcmJ1ZmZlci0+Z2V0SGVpZ2h0KCk7CisgICAg
ICAgICAgICAgICAgc2FtcGxlcyA9IGNvbG9yYnVmZmVyLT5nZXRTYW1wbGVzKCk7CisgICAgICAg
ICAgICAgICAgY29sb3JidWZmZXJTaXplID0gZ2w6OkNvbXB1dGVQaXhlbFNpemUoY29sb3JidWZm
ZXItPmdldEludGVybmFsRm9ybWF0KCkpOworICAgICAgICAgICAgICAgIG1pc3NpbmdBdHRhY2ht
ZW50ID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25z
dCBSZW5kZXJidWZmZXIgKmRlcHRoYnVmZmVyID0gTlVMTDsKKyAgICBjb25zdCBSZW5kZXJidWZm
ZXIgKnN0ZW5jaWxidWZmZXIgPSBOVUxMOworCisgICAgaWYgKG1EZXB0aGJ1ZmZlclR5cGUgIT0g
R0xfTk9ORSkKKyAgICB7CisgICAgICAgIGRlcHRoYnVmZmVyID0gZ2V0RGVwdGhidWZmZXIoKTsK
KworICAgICAgICBpZiAoIWRlcHRoYnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGRlcHRoYnVmZmVyLT5nZXRXaWR0aCgpID09IDAgfHwgZGVwdGhidWZmZXItPmdl
dEhlaWdodCgpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJV
RkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAobURl
cHRoYnVmZmVyVHlwZSA9PSBHTF9SRU5ERVJCVUZGRVIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICghZ2w6OklzRGVwdGhSZW5kZXJhYmxlKGRlcHRoYnVmZmVyLT5nZXRJbnRlcm5hbEZvcm1h
dCgpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZG
RVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UgaWYgKElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1EZXB0aGJ1ZmZlclR5cGUpKQor
ICAgICAgICB7CisgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCA9IGRlcHRoYnVmZmVy
LT5nZXRJbnRlcm5hbEZvcm1hdCgpOworCisgICAgICAgICAgICAvLyBkZXB0aCB0ZXh0dXJlIGF0
dGFjaG1lbnRzIHJlcXVpcmUgT0VTL0FOR0xFX2RlcHRoX3RleHR1cmUKKyAgICAgICAgICAgIGlm
ICghbVJlbmRlcmVyLT5nZXREZXB0aFRleHR1cmVTdXBwb3J0KCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVO
VDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFnbDo6SXNEZXB0aFRleHR1cmUo
aW50ZXJuYWxmb3JtYXQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBH
TF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVO
VDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtaXNzaW5nQXR0YWNobWVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgd2lkdGggPSBkZXB0aGJ1ZmZlci0+Z2V0V2lkdGgoKTsKKyAgICAgICAg
ICAgIGhlaWdodCA9IGRlcHRoYnVmZmVyLT5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIHNhbXBs
ZXMgPSBkZXB0aGJ1ZmZlci0+Z2V0U2FtcGxlcygpOworICAgICAgICAgICAgbWlzc2luZ0F0dGFj
aG1lbnQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh3aWR0aCAhPSBkZXB0
aGJ1ZmZlci0+Z2V0V2lkdGgoKSB8fCBoZWlnaHQgIT0gZGVwdGhidWZmZXItPmdldEhlaWdodCgp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVU
RV9ESU1FTlNJT05TOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNhbXBsZXMgIT0gZGVw
dGhidWZmZXItPmdldFNhbXBsZXMoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEdM
X0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfQU5HTEU7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAobVN0ZW5jaWxidWZmZXJUeXBlICE9IEdMX05PTkUpCisgICAgeworICAg
ICAgICBzdGVuY2lsYnVmZmVyID0gZ2V0U3RlbmNpbGJ1ZmZlcigpOworCisgICAgICAgIGlmICgh
c3RlbmNpbGJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVG
RkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGVu
Y2lsYnVmZmVyLT5nZXRXaWR0aCgpID09IDAgfHwgc3RlbmNpbGJ1ZmZlci0+Z2V0SGVpZ2h0KCkg
PT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfQVRUQUNITUVOVDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtU3RlbmNpbGJ1ZmZl
clR5cGUgPT0gR0xfUkVOREVSQlVGRkVSKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWds
OjpJc1N0ZW5jaWxSZW5kZXJhYmxlKHN0ZW5jaWxidWZmZXItPmdldEludGVybmFsRm9ybWF0KCkp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9J
TkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSBpZiAoSXNJbnRlcm5hbFRleHR1cmVUYXJnZXQobVN0ZW5jaWxidWZmZXJUeXBlKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQgPSBzdGVuY2lsYnVmZmVy
LT5nZXRJbnRlcm5hbEZvcm1hdCgpOworCisgICAgICAgICAgICAvLyB0ZXh0dXJlIHN0ZW5jaWwg
YXR0YWNobWVudHMgY29tZSBhbG9uZyBhcyBwYXJ0CisgICAgICAgICAgICAvLyBvZiBPRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwgKyBPRVMvQU5HTEVfZGVwdGhfdGV4dHVyZQorICAgICAgICAgICAg
aWYgKCFtUmVuZGVyZXItPmdldERlcHRoVGV4dHVyZVN1cHBvcnQoKSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hN
RU5UOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWdsOjpJc1N0ZW5jaWxUZXh0
dXJlKGludGVybmFsZm9ybWF0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFD
SE1FTlQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWlzc2luZ0F0dGFjaG1lbnQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHdpZHRoID0gc3RlbmNpbGJ1ZmZlci0+Z2V0V2lkdGgoKTsKKyAg
ICAgICAgICAgIGhlaWdodCA9IHN0ZW5jaWxidWZmZXItPmdldEhlaWdodCgpOworICAgICAgICAg
ICAgc2FtcGxlcyA9IHN0ZW5jaWxidWZmZXItPmdldFNhbXBsZXMoKTsKKyAgICAgICAgICAgIG1p
c3NpbmdBdHRhY2htZW50ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAod2lk
dGggIT0gc3RlbmNpbGJ1ZmZlci0+Z2V0V2lkdGgoKSB8fCBoZWlnaHQgIT0gc3RlbmNpbGJ1ZmZl
ci0+Z2V0SGVpZ2h0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJV
RkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAo
c2FtcGxlcyAhPSBzdGVuY2lsYnVmZmVyLT5nZXRTYW1wbGVzKCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0FOR0xF
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gaWYgd2UgaGF2ZSBib3RoIGEgZGVwdGggYW5k
IHN0ZW5jaWwgYnVmZmVyLCB0aGV5IG11c3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0CisgICAg
Ly8gc2luY2Ugd2Ugb25seSBzdXBwb3J0IHBhY2tlZF9kZXB0aF9zdGVuY2lsIGFuZCBub3Qgc2Vw
YXJhdGUgZGVwdGggYW5kIHN0ZW5jaWwKKyAgICBpZiAoZGVwdGhidWZmZXIgJiYgc3RlbmNpbGJ1
ZmZlciAmJiAoZGVwdGhidWZmZXIgIT0gc3RlbmNpbGJ1ZmZlcikpCisgICAgeworICAgICAgICBy
ZXR1cm4gR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CisgICAgfQorCisgICAgLy8gd2UgbmVl
ZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBhdHRhY2htZW50IHRvIGJlIGNvbXBsZXRlCisgICAgaWYg
KG1pc3NpbmdBdHRhY2htZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVS
X0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UOworICAgIH0KKworICAgIHJldHVybiBHTF9G
UkFNRUJVRkZFUl9DT01QTEVURTsKK30KKworRGVmYXVsdEZyYW1lYnVmZmVyOjpEZWZhdWx0RnJh
bWVidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgQ29sb3JidWZmZXIgKmNvbG9yYnVmZmVy
LCBEZXB0aFN0ZW5jaWxidWZmZXIgKmRlcHRoU3RlbmNpbCkKKyAgICA6IEZyYW1lYnVmZmVyKHJl
bmRlcmVyKQoreworICAgIG1Db2xvcmJ1ZmZlclBvaW50ZXJzWzBdLnNldChuZXcgUmVuZGVyYnVm
ZmVyKG1SZW5kZXJlciwgMCwgY29sb3JidWZmZXIpKTsKKworICAgIFJlbmRlcmJ1ZmZlciAqZGVw
dGhTdGVuY2lsUmVuZGVyYnVmZmVyID0gbmV3IFJlbmRlcmJ1ZmZlcihtUmVuZGVyZXIsIDAsIGRl
cHRoU3RlbmNpbCk7CisgICAgbURlcHRoYnVmZmVyUG9pbnRlci5zZXQoZGVwdGhTdGVuY2lsUmVu
ZGVyYnVmZmVyKTsKKyAgICBtU3RlbmNpbGJ1ZmZlclBvaW50ZXIuc2V0KGRlcHRoU3RlbmNpbFJl
bmRlcmJ1ZmZlcik7CisKKyAgICBtQ29sb3JidWZmZXJUeXBlc1swXSA9IEdMX1JFTkRFUkJVRkZF
UjsKKyAgICBtRGVwdGhidWZmZXJUeXBlID0gKGRlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlci0+Z2V0
RGVwdGhTaXplKCkgIT0gMCkgPyBHTF9SRU5ERVJCVUZGRVIgOiBHTF9OT05FOworICAgIG1TdGVu
Y2lsYnVmZmVyVHlwZSA9IChkZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXItPmdldFN0ZW5jaWxTaXpl
KCkgIT0gMCkgPyBHTF9SRU5ERVJCVUZGRVIgOiBHTF9OT05FOworCisgICAgbURyYXdCdWZmZXJT
dGF0ZXNbMF0gPSBHTF9CQUNLOworICAgIG1SZWFkQnVmZmVyU3RhdGUgPSBHTF9CQUNLOworfQor
CitpbnQgRnJhbWVidWZmZXI6OmdldFNhbXBsZXMoKSBjb25zdAoreworICAgIGlmIChjb21wbGV0
ZW5lc3MoKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICB7CisgICAgICAgIC8vIGZv
ciBhIGNvbXBsZXRlIGZyYW1lYnVmZmVyLCBhbGwgYXR0YWNobWVudHMgbXVzdCBoYXZlIHRoZSBz
YW1lIHNhbXBsZSBjb3VudAorICAgICAgICAvLyBpbiB0aGlzIGNhc2UgcmV0dXJuIHRoZSBmaXJz
dCBub256ZXJvIHNhbXBsZSBzaXplCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGNvbG9yQXR0
YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IElNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JV
RkZFUlM7IGNvbG9yQXR0YWNobWVudCsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobUNv
bG9yYnVmZmVyVHlwZXNbY29sb3JBdHRhY2htZW50XSAhPSBHTF9OT05FKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBnZXRDb2xvcmJ1ZmZlcihjb2xvckF0dGFjaG1lbnQp
LT5nZXRTYW1wbGVzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gMDsKK30KKworR0xlbnVtIERlZmF1bHRGcmFtZWJ1ZmZlcjo6Y29tcGxldGVuZXNzKCkg
Y29uc3QKK3sKKyAgICAvLyBUaGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciAqbXVzdCogYWx3YXlzIGJl
IGNvbXBsZXRlLCB0aG91Z2ggaXQgbWF5IG5vdCBiZQorICAgIC8vIHN1YmplY3QgdG8gdGhlIHNh
bWUgcnVsZXMgYXMgYXBwbGljYXRpb24gRkJPcy4gaWUsIGl0IGNvdWxkIGhhdmUgMHgwIHNpemUu
CisgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFOworfQorCit9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZyYW1lYnVmZmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9G
cmFtZWJ1ZmZlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOCBAQAorLy8KKy8vIENvcHly
aWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gRnJhbWVidWZmZXIuaDogRGVmaW5lcyB0aGUgZ2w6OkZyYW1lYnVmZmVyIGNs
YXNzLiBJbXBsZW1lbnRzIEdMIGZyYW1lYnVmZmVyCisvLyBvYmplY3RzIGFuZCByZWxhdGVkIGZ1
bmN0aW9uYWxpdHkuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDQuNCBwYWdlIDEwNS4KKwor
I2lmbmRlZiBMSUJHTEVTVjJfRlJBTUVCVUZGRVJfSF8KKyNkZWZpbmUgTElCR0xFU1YyX0ZSQU1F
QlVGRkVSX0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNv
bW1vbi9SZWZDb3VudE9iamVjdC5oIgorI2luY2x1ZGUgImNvbnN0YW50cy5oIgorCituYW1lc3Bh
Y2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOworfQorCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIFJl
bmRlcmJ1ZmZlcjsKK2NsYXNzIENvbG9yYnVmZmVyOworY2xhc3MgRGVwdGhidWZmZXI7CitjbGFz
cyBTdGVuY2lsYnVmZmVyOworY2xhc3MgRGVwdGhTdGVuY2lsYnVmZmVyOworCitjbGFzcyBGcmFt
ZWJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgRnJhbWVidWZmZXIocng6OlJlbmRl
cmVyICpyZW5kZXJlcik7CisKKyAgICB2aXJ0dWFsIH5GcmFtZWJ1ZmZlcigpOworCisgICAgdm9p
ZCBzZXRDb2xvcmJ1ZmZlcih1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50LCBHTGVudW0gdHlw
ZSwgR0x1aW50IGNvbG9yYnVmZmVyKTsKKyAgICB2b2lkIHNldERlcHRoYnVmZmVyKEdMZW51bSB0
eXBlLCBHTHVpbnQgZGVwdGhidWZmZXIpOworICAgIHZvaWQgc2V0U3RlbmNpbGJ1ZmZlcihHTGVu
dW0gdHlwZSwgR0x1aW50IHN0ZW5jaWxidWZmZXIpOworCisgICAgdm9pZCBkZXRhY2hUZXh0dXJl
KEdMdWludCB0ZXh0dXJlKTsKKyAgICB2b2lkIGRldGFjaFJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVu
ZGVyYnVmZmVyKTsKKworICAgIHVuc2lnbmVkIGludCBnZXRSZW5kZXJUYXJnZXRTZXJpYWwodW5z
aWduZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29uc3Q7CisgICAgdW5zaWduZWQgaW50IGdldERl
cHRoYnVmZmVyU2VyaWFsKCkgY29uc3Q7CisgICAgdW5zaWduZWQgaW50IGdldFN0ZW5jaWxidWZm
ZXJTZXJpYWwoKSBjb25zdDsKKworICAgIFJlbmRlcmJ1ZmZlciAqZ2V0Q29sb3JidWZmZXIodW5z
aWduZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29uc3Q7CisgICAgUmVuZGVyYnVmZmVyICpnZXRE
ZXB0aGJ1ZmZlcigpIGNvbnN0OworICAgIFJlbmRlcmJ1ZmZlciAqZ2V0U3RlbmNpbGJ1ZmZlcigp
IGNvbnN0OworICAgIFJlbmRlcmJ1ZmZlciAqZ2V0RGVwdGhPclN0ZW5jaWxidWZmZXIoKSBjb25z
dDsKKyAgICBSZW5kZXJidWZmZXIgKmdldFJlYWRDb2xvcmJ1ZmZlcigpIGNvbnN0OworICAgIEdM
ZW51bSBnZXRSZWFkQ29sb3JidWZmZXJUeXBlKCkgY29uc3Q7CisgICAgUmVuZGVyYnVmZmVyICpn
ZXRGaXJzdENvbG9yYnVmZmVyKCkgY29uc3Q7CisKKyAgICBHTGVudW0gZ2V0Q29sb3JidWZmZXJU
eXBlKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQpIGNvbnN0OworICAgIEdMZW51bSBnZXRE
ZXB0aGJ1ZmZlclR5cGUoKSBjb25zdDsKKyAgICBHTGVudW0gZ2V0U3RlbmNpbGJ1ZmZlclR5cGUo
KSBjb25zdDsKKworICAgIEdMdWludCBnZXRDb2xvcmJ1ZmZlckhhbmRsZSh1bnNpZ25lZCBpbnQg
Y29sb3JBdHRhY2htZW50KSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0RGVwdGhidWZmZXJIYW5kbGUo
KSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0U3RlbmNpbGJ1ZmZlckhhbmRsZSgpIGNvbnN0OworCisg
ICAgR0xlbnVtIGdldERyYXdCdWZmZXJTdGF0ZSh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50
KSBjb25zdDsKKyAgICB2b2lkIHNldERyYXdCdWZmZXJTdGF0ZSh1bnNpZ25lZCBpbnQgY29sb3JB
dHRhY2htZW50LCBHTGVudW0gZHJhd0J1ZmZlcik7CisKKyAgICBib29sIGlzRW5hYmxlZENvbG9y
QXR0YWNobWVudCh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25zdDsKKyAgICBib29s
IGhhc0VuYWJsZWRDb2xvckF0dGFjaG1lbnQoKSBjb25zdDsKKyAgICBib29sIGhhc1N0ZW5jaWwo
KSBjb25zdDsKKyAgICBpbnQgZ2V0U2FtcGxlcygpIGNvbnN0OworICAgIGJvb2wgdXNpbmdFeHRl
bmRlZERyYXdCdWZmZXJzKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEdMZW51bSBjb21wbGV0ZW5l
c3MoKSBjb25zdDsKKworICBwcm90ZWN0ZWQ6CisgICAgR0xlbnVtIG1Db2xvcmJ1ZmZlclR5cGVz
W0lNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlNdOworICAgIEJpbmRpbmdQb2ludGVyPFJl
bmRlcmJ1ZmZlcj4gbUNvbG9yYnVmZmVyUG9pbnRlcnNbSU1QTEVNRU5UQVRJT05fTUFYX0RSQVdf
QlVGRkVSU107CisgICAgR0xlbnVtIG1EcmF3QnVmZmVyU3RhdGVzW0lNUExFTUVOVEFUSU9OX01B
WF9EUkFXX0JVRkZFUlNdOworICAgIEdMZW51bSBtUmVhZEJ1ZmZlclN0YXRlOworCisgICAgR0xl
bnVtIG1EZXB0aGJ1ZmZlclR5cGU7CisgICAgQmluZGluZ1BvaW50ZXI8UmVuZGVyYnVmZmVyPiBt
RGVwdGhidWZmZXJQb2ludGVyOworCisgICAgR0xlbnVtIG1TdGVuY2lsYnVmZmVyVHlwZTsKKyAg
ICBCaW5kaW5nUG9pbnRlcjxSZW5kZXJidWZmZXI+IG1TdGVuY2lsYnVmZmVyUG9pbnRlcjsKKwor
ICAgIHJ4OjpSZW5kZXJlciAqbVJlbmRlcmVyOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOKEZyYW1lYnVmZmVyKTsKKworICAgIFJlbmRlcmJ1ZmZlciAqbG9va3Vw
UmVuZGVyYnVmZmVyKEdMZW51bSB0eXBlLCBHTHVpbnQgaGFuZGxlKSBjb25zdDsKK307CisKK2Ns
YXNzIERlZmF1bHRGcmFtZWJ1ZmZlciA6IHB1YmxpYyBGcmFtZWJ1ZmZlcgoreworICBwdWJsaWM6
CisgICAgRGVmYXVsdEZyYW1lYnVmZmVyKHJ4OjpSZW5kZXJlciAqUmVuZGVyZXIsIENvbG9yYnVm
ZmVyICpjb2xvcmJ1ZmZlciwgRGVwdGhTdGVuY2lsYnVmZmVyICpkZXB0aFN0ZW5jaWwpOworCisg
ICAgdmlydHVhbCBHTGVudW0gY29tcGxldGVuZXNzKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oRGVmYXVsdEZyYW1lYnVmZmVyKTsKK307CisKK30K
KworI2VuZGlmICAgLy8gTElCR0xFU1YyX0ZSQU1FQlVGRkVSX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0hhbmRsZUFsbG9jYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0
b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9IYW5kbGVBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisj
aW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEhhbmRsZUFs
bG9jYXRvci5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpIYW5kbGVBbGxvY2F0b3IgY2xhc3MsIHdo
aWNoIGlzIHVzZWQKKy8vIHRvIGFsbG9jYXRlIEdMIGhhbmRsZXMuCisKKyNpbmNsdWRlICJsaWJH
TEVTdjIvSGFuZGxlQWxsb2NhdG9yLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgor
CituYW1lc3BhY2UgZ2wKK3sKKworSGFuZGxlQWxsb2NhdG9yOjpIYW5kbGVBbGxvY2F0b3IoKSA6
IG1CYXNlVmFsdWUoMSksIG1OZXh0VmFsdWUoMSkKK3sKK30KKworSGFuZGxlQWxsb2NhdG9yOjp+
SGFuZGxlQWxsb2NhdG9yKCkKK3sKK30KKwordm9pZCBIYW5kbGVBbGxvY2F0b3I6OnNldEJhc2VI
YW5kbGUoR0x1aW50IHZhbHVlKQoreworICAgIEFTU0VSVChtQmFzZVZhbHVlID09IG1OZXh0VmFs
dWUpOworICAgIG1CYXNlVmFsdWUgPSB2YWx1ZTsKKyAgICBtTmV4dFZhbHVlID0gdmFsdWU7Cit9
CisKK0dMdWludCBIYW5kbGVBbGxvY2F0b3I6OmFsbG9jYXRlKCkKK3sKKyAgICBpZiAobUZyZWVW
YWx1ZXMuc2l6ZSgpKQorICAgIHsKKyAgICAgICAgR0x1aW50IGhhbmRsZSA9IG1GcmVlVmFsdWVz
LmJhY2soKTsKKyAgICAgICAgbUZyZWVWYWx1ZXMucG9wX2JhY2soKTsKKyAgICAgICAgcmV0dXJu
IGhhbmRsZTsKKyAgICB9CisgICAgcmV0dXJuIG1OZXh0VmFsdWUrKzsKK30KKwordm9pZCBIYW5k
bGVBbGxvY2F0b3I6OnJlbGVhc2UoR0x1aW50IGhhbmRsZSkKK3sKKyAgICBpZiAoaGFuZGxlID09
IG1OZXh0VmFsdWUgLSAxKQorICAgIHsKKyAgICAgICAgLy8gRG9uJ3QgZHJvcCBiZWxvdyBiYXNl
IHZhbHVlCisgICAgICAgIGlmKG1OZXh0VmFsdWUgPiBtQmFzZVZhbHVlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtTmV4dFZhbHVlLS07CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgLy8gT25seSBmcmVlIGhhbmRsZXMgdGhhdCB3ZSBvd24gLSBkb24ndCBkcm9w
IGJlbG93IHRoZSBiYXNlIHZhbHVlCisgICAgICAgIGlmIChoYW5kbGUgPj0gbUJhc2VWYWx1ZSkK
KyAgICAgICAgeworICAgICAgICAgICAgbUZyZWVWYWx1ZXMucHVzaF9iYWNrKGhhbmRsZSk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvSGFuZGxlQWxsb2NhdG9y
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IEhhbmRsZUFsbG9jYXRvci5oOiBEZWZpbmVzIHRoZSBnbDo6SGFuZGxlQWxsb2NhdG9yIGNsYXNz
LCB3aGljaCBpcyB1c2VkIHRvCisvLyBhbGxvY2F0ZSBHTCBoYW5kbGVzLgorCisjaWZuZGVmIExJ
QkdMRVNWMl9IQU5ETEVBTExPQ0FUT1JfSF8KKyNkZWZpbmUgTElCR0xFU1YyX0hBTkRMRUFMTE9D
QVRPUl9IXworCisjZGVmaW5lIEdMX0FQSUNBTEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKwor
I2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25h
bWVzcGFjZSBnbAoreworCitjbGFzcyBIYW5kbGVBbGxvY2F0b3IKK3sKKyAgcHVibGljOgorICAg
IEhhbmRsZUFsbG9jYXRvcigpOworICAgIHZpcnR1YWwgfkhhbmRsZUFsbG9jYXRvcigpOworCisg
ICAgdm9pZCBzZXRCYXNlSGFuZGxlKEdMdWludCB2YWx1ZSk7CisKKyAgICBHTHVpbnQgYWxsb2Nh
dGUoKTsKKyAgICB2b2lkIHJlbGVhc2UoR0x1aW50IGhhbmRsZSk7CisKKyAgcHJpdmF0ZToKKyAg
ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oSGFuZGxlQWxsb2NhdG9yKTsKKworICAgIEdMdWlu
dCBtQmFzZVZhbHVlOworICAgIEdMdWludCBtTmV4dFZhbHVlOworICAgIHR5cGVkZWYgc3RkOjp2
ZWN0b3I8R0x1aW50PiBIYW5kbGVMaXN0OworICAgIEhhbmRsZUxpc3QgbUZyZWVWYWx1ZXM7Cit9
OworCit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9IQU5ETEVBTExPQ0FUT1JfSF8KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
UHJvZ3JhbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTI1IEBACisjaW5jbHVkZSAicHJl
Y29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFByb2dyYW0uY3BwOiBJbXBsZW1l
bnRzIHRoZSBnbDo6UHJvZ3JhbSBjbGFzcy4gSW1wbGVtZW50cyBHTCBwcm9ncmFtIG9iamVjdHMK
Ky8vIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9u
IDIuMTAuMyBwYWdlIDI4LgorCisjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW0uaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9SZXNv
dXJjZU1hbmFnZXIuaCIKKworbmFtZXNwYWNlIGdsCit7Citjb25zdCBjaGFyICogY29uc3QgZ19m
YWtlcGF0aCA9ICJDOlxcZmFrZXBhdGgiOworCitBdHRyaWJ1dGVCaW5kaW5nczo6QXR0cmlidXRl
QmluZGluZ3MoKQoreworfQorCitBdHRyaWJ1dGVCaW5kaW5nczo6fkF0dHJpYnV0ZUJpbmRpbmdz
KCkKK3sKK30KKworSW5mb0xvZzo6SW5mb0xvZygpIDogbUluZm9Mb2coTlVMTCkKK3sKK30KKwor
SW5mb0xvZzo6fkluZm9Mb2coKQoreworICAgIGRlbGV0ZVtdIG1JbmZvTG9nOworfQorCisKK2lu
dCBJbmZvTG9nOjpnZXRMZW5ndGgoKSBjb25zdAoreworICAgIGlmICghbUluZm9Mb2cpCisgICAg
eworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICByZXR1
cm4gc3RybGVuKG1JbmZvTG9nKSArIDE7CisgICAgfQorfQorCit2b2lkIEluZm9Mb2c6OmdldExv
ZyhHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZykKK3sKKyAg
ICBpbnQgaW5kZXggPSAwOworCisgICAgaWYgKGJ1ZlNpemUgPiAwKQorICAgIHsKKyAgICAgICAg
aWYgKG1JbmZvTG9nKQorICAgICAgICB7CisgICAgICAgICAgICBpbmRleCA9IHN0ZDo6bWluKGJ1
ZlNpemUgLSAxLCAoaW50KXN0cmxlbihtSW5mb0xvZykpOworICAgICAgICAgICAgbWVtY3B5KGlu
Zm9Mb2csIG1JbmZvTG9nLCBpbmRleCk7CisgICAgICAgIH0KKworICAgICAgICBpbmZvTG9nW2lu
ZGV4XSA9ICdcMCc7CisgICAgfQorCisgICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICAgICps
ZW5ndGggPSBpbmRleDsKKyAgICB9Cit9CisKKy8vIGFwcGVuZCBhIHNhbnRpemVkIG1lc3NhZ2Ug
dG8gdGhlIHByb2dyYW0gaW5mbyBsb2cuCisvLyBUaGUgRDNEIGNvbXBpbGVyIGluY2x1ZGVzIGEg
ZmFrZSBmaWxlIHBhdGggaW4gc29tZSBvZiB0aGUgd2FybmluZyBvciBlcnJvciAKKy8vIG1lc3Nh
Z2VzLCBzbyBsZXRzIHJlbW92ZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhpcyBmYWtlIGZpbGUgcGF0
aCBmcm9tIHRoZSBsb2cuCit2b2lkIEluZm9Mb2c6OmFwcGVuZFNhbml0aXplZChjb25zdCBjaGFy
ICptZXNzYWdlKQoreworICAgIHN0ZDo6c3RyaW5nIG1zZyhtZXNzYWdlKTsKKworICAgIHNpemVf
dCBmb3VuZDsKKyAgICBkbworICAgIHsKKyAgICAgICAgZm91bmQgPSBtc2cuZmluZChnX2Zha2Vw
YXRoKTsKKyAgICAgICAgaWYgKGZvdW5kICE9IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgICB7
CisgICAgICAgICAgICBtc2cuZXJhc2UoZm91bmQsIHN0cmxlbihnX2Zha2VwYXRoKSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgd2hpbGUgKGZvdW5kICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsKKwor
ICAgIGFwcGVuZCgiJXMiLCBtc2cuY19zdHIoKSk7Cit9CisKK3ZvaWQgSW5mb0xvZzo6YXBwZW5k
KGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIGlmICghZm9ybWF0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNoYXIgaW5mb1sxMDI0XTsKKworICAgIHZhX2xp
c3QgdmFyYXJnOworICAgIHZhX3N0YXJ0KHZhcmFyZywgZm9ybWF0KTsKKyAgICB2c25wcmludGYo
aW5mbywgc2l6ZW9mKGluZm8pLCBmb3JtYXQsIHZhcmFyZyk7CisgICAgdmFfZW5kKHZhcmFyZyk7
CisKKyAgICBzaXplX3QgaW5mb0xlbmd0aCA9IHN0cmxlbihpbmZvKTsKKworICAgIGlmICghbUlu
Zm9Mb2cpCisgICAgeworICAgICAgICBtSW5mb0xvZyA9IG5ldyBjaGFyW2luZm9MZW5ndGggKyAy
XTsKKyAgICAgICAgc3RyY3B5KG1JbmZvTG9nLCBpbmZvKTsKKyAgICAgICAgc3RyY3B5KG1JbmZv
TG9nICsgaW5mb0xlbmd0aCwgIlxuIik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IHNpemVfdCBsb2dMZW5ndGggPSBzdHJsZW4obUluZm9Mb2cpOworICAgICAgICBjaGFyICpuZXdM
b2cgPSBuZXcgY2hhcltsb2dMZW5ndGggKyBpbmZvTGVuZ3RoICsgMl07CisgICAgICAgIHN0cmNw
eShuZXdMb2csIG1JbmZvTG9nKTsKKyAgICAgICAgc3RyY3B5KG5ld0xvZyArIGxvZ0xlbmd0aCwg
aW5mbyk7CisgICAgICAgIHN0cmNweShuZXdMb2cgKyBsb2dMZW5ndGggKyBpbmZvTGVuZ3RoLCAi
XG4iKTsKKworICAgICAgICBkZWxldGVbXSBtSW5mb0xvZzsKKyAgICAgICAgbUluZm9Mb2cgPSBu
ZXdMb2c7CisgICAgfQorfQorCit2b2lkIEluZm9Mb2c6OnJlc2V0KCkKK3sKKyAgICBpZiAobUlu
Zm9Mb2cpCisgICAgeworICAgICAgICBkZWxldGUgW10gbUluZm9Mb2c7CisgICAgICAgIG1JbmZv
TG9nID0gTlVMTDsKKyAgICB9Cit9CisKK1Byb2dyYW06OlByb2dyYW0ocng6OlJlbmRlcmVyICpy
ZW5kZXJlciwgUmVzb3VyY2VNYW5hZ2VyICptYW5hZ2VyLCBHTHVpbnQgaGFuZGxlKSA6IG1SZXNv
dXJjZU1hbmFnZXIobWFuYWdlciksIG1IYW5kbGUoaGFuZGxlKQoreworICAgIG1GcmFnbWVudFNo
YWRlciA9IE5VTEw7CisgICAgbVZlcnRleFNoYWRlciA9IE5VTEw7CisgICAgbVByb2dyYW1CaW5h
cnkuc2V0KE5VTEwpOworICAgIG1EZWxldGVTdGF0dXMgPSBmYWxzZTsKKyAgICBtTGlua2VkID0g
ZmFsc2U7CisgICAgbVJlZkNvdW50ID0gMDsKKyAgICBtUmVuZGVyZXIgPSByZW5kZXJlcjsKK30K
KworUHJvZ3JhbTo6flByb2dyYW0oKQoreworICAgIHVubGluayh0cnVlKTsKKworICAgIGlmICht
VmVydGV4U2hhZGVyICE9IE5VTEwpCisgICAgeworICAgICAgICBtVmVydGV4U2hhZGVyLT5yZWxl
YXNlKCk7CisgICAgfQorCisgICAgaWYgKG1GcmFnbWVudFNoYWRlciAhPSBOVUxMKQorICAgIHsK
KyAgICAgICAgbUZyYWdtZW50U2hhZGVyLT5yZWxlYXNlKCk7CisgICAgfQorfQorCitib29sIFBy
b2dyYW06OmF0dGFjaFNoYWRlcihTaGFkZXIgKnNoYWRlcikKK3sKKyAgICBpZiAoc2hhZGVyLT5n
ZXRUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICB7CisgICAgICAgIGlmIChtVmVydGV4
U2hhZGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KworICAgICAgICBtVmVydGV4U2hhZGVyID0gKFZlcnRleFNoYWRlciopc2hhZGVyOworICAgICAg
ICBtVmVydGV4U2hhZGVyLT5hZGRSZWYoKTsKKyAgICB9CisgICAgZWxzZSBpZiAoc2hhZGVyLT5n
ZXRUeXBlKCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAgaWYgKG1GcmFn
bWVudFNoYWRlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisKKyAgICAgICAgbUZyYWdtZW50U2hhZGVyID0gKEZyYWdtZW50U2hhZGVyKilzaGFkZXI7
CisgICAgICAgIG1GcmFnbWVudFNoYWRlci0+YWRkUmVmKCk7CisgICAgfQorICAgIGVsc2UgVU5S
RUFDSEFCTEUoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dyYW06OmRldGFj
aFNoYWRlcihTaGFkZXIgKnNoYWRlcikKK3sKKyAgICBpZiAoc2hhZGVyLT5nZXRUeXBlKCkgPT0g
R0xfVkVSVEVYX1NIQURFUikKKyAgICB7CisgICAgICAgIGlmIChtVmVydGV4U2hhZGVyICE9IHNo
YWRlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisK
KyAgICAgICAgbVZlcnRleFNoYWRlci0+cmVsZWFzZSgpOworICAgICAgICBtVmVydGV4U2hhZGVy
ID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoc2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfRlJB
R01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAgaWYgKG1GcmFnbWVudFNoYWRlciAhPSBzaGFk
ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisg
ICAgICAgIG1GcmFnbWVudFNoYWRlci0+cmVsZWFzZSgpOworICAgICAgICBtRnJhZ21lbnRTaGFk
ZXIgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworaW50IFByb2dyYW06OmdldEF0dGFjaGVkU2hhZGVyc0NvdW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gKG1WZXJ0ZXhTaGFkZXIgPyAxIDogMCkgKyAobUZyYWdtZW50U2hhZGVy
ID8gMSA6IDApOworfQorCit2b2lkIEF0dHJpYnV0ZUJpbmRpbmdzOjpiaW5kQXR0cmlidXRlTG9j
YXRpb24oR0x1aW50IGluZGV4LCBjb25zdCBjaGFyICpuYW1lKQoreworICAgIGlmIChpbmRleCA8
IE1BWF9WRVJURVhfQVRUUklCUykKKyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG1BdHRyaWJ1
dGVCaW5kaW5nW2ldLmVyYXNlKG5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgbUF0dHJpYnV0
ZUJpbmRpbmdbaW5kZXhdLmluc2VydChuYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgUHJvZ3JhbTo6
YmluZEF0dHJpYnV0ZUxvY2F0aW9uKEdMdWludCBpbmRleCwgY29uc3QgY2hhciAqbmFtZSkKK3sK
KyAgICBtQXR0cmlidXRlQmluZGluZ3MuYmluZEF0dHJpYnV0ZUxvY2F0aW9uKGluZGV4LCBuYW1l
KTsKK30KKworLy8gTGlua3MgdGhlIEhMU0wgY29kZSBvZiB0aGUgdmVydGV4IGFuZCBwaXhlbCBz
aGFkZXIgYnkgbWF0Y2hpbmcgdXAgdGhlaXIgdmFyeWluZ3MsCisvLyBjb21waWxpbmcgdGhlbSBp
bnRvIGJpbmFyaWVzLCBkZXRlcm1pbmluZyB0aGUgYXR0cmlidXRlIG1hcHBpbmdzLCBhbmQgY29s
bGVjdGluZworLy8gYSBsaXN0IG9mIHVuaWZvcm1zCitib29sIFByb2dyYW06OmxpbmsoKQorewor
ICAgIHVubGluayhmYWxzZSk7CisKKyAgICBtSW5mb0xvZy5yZXNldCgpOworCisgICAgbVByb2dy
YW1CaW5hcnkuc2V0KG5ldyBQcm9ncmFtQmluYXJ5KG1SZW5kZXJlcikpOworICAgIG1MaW5rZWQg
PSBtUHJvZ3JhbUJpbmFyeS0+bGluayhtSW5mb0xvZywgbUF0dHJpYnV0ZUJpbmRpbmdzLCBtRnJh
Z21lbnRTaGFkZXIsIG1WZXJ0ZXhTaGFkZXIpOworCisgICAgcmV0dXJuIG1MaW5rZWQ7Cit9CisK
K2ludCBBdHRyaWJ1dGVCaW5kaW5nczo6Z2V0QXR0cmlidXRlQmluZGluZyhjb25zdCBzdGQ6OnN0
cmluZyAmbmFtZSkgY29uc3QKK3sKKyAgICBmb3IgKGludCBsb2NhdGlvbiA9IDA7IGxvY2F0aW9u
IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBsb2NhdGlvbisrKQorICAgIHsKKyAgICAgICAgaWYgKG1B
dHRyaWJ1dGVCaW5kaW5nW2xvY2F0aW9uXS5maW5kKG5hbWUpICE9IG1BdHRyaWJ1dGVCaW5kaW5n
W2xvY2F0aW9uXS5lbmQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9u
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCisvLyBSZXR1cm5zIHRo
ZSBwcm9ncmFtIG9iamVjdCB0byBhbiB1bmxpbmtlZCBzdGF0ZSwgYmVmb3JlIHJlLWxpbmtpbmcs
IG9yIGF0IGRlc3RydWN0aW9uCit2b2lkIFByb2dyYW06OnVubGluayhib29sIGRlc3Ryb3kpCit7
CisgICAgaWYgKGRlc3Ryb3kpICAgLy8gT2JqZWN0IGJlaW5nIGRlc3RydWN0ZWQKKyAgICB7Cisg
ICAgICAgIGlmIChtRnJhZ21lbnRTaGFkZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1GcmFn
bWVudFNoYWRlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgbUZyYWdtZW50U2hhZGVyID0gTlVM
TDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtVmVydGV4U2hhZGVyKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtVmVydGV4U2hhZGVyLT5yZWxlYXNlKCk7CisgICAgICAgICAgICBtVmVydGV4
U2hhZGVyID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1Qcm9ncmFtQmluYXJ5LnNl
dChOVUxMKTsKKyAgICBtTGlua2VkID0gZmFsc2U7Cit9CisKK2Jvb2wgUHJvZ3JhbTo6aXNMaW5r
ZWQoKQoreworICAgIHJldHVybiBtTGlua2VkOworfQorCitQcm9ncmFtQmluYXJ5KiBQcm9ncmFt
OjpnZXRQcm9ncmFtQmluYXJ5KCkKK3sKKyAgICByZXR1cm4gbVByb2dyYW1CaW5hcnkuZ2V0KCk7
Cit9CisKK2Jvb2wgUHJvZ3JhbTo6c2V0UHJvZ3JhbUJpbmFyeShjb25zdCB2b2lkICpiaW5hcnks
IEdMc2l6ZWkgbGVuZ3RoKQoreworICAgIHVubGluayhmYWxzZSk7CisKKyAgICBtSW5mb0xvZy5y
ZXNldCgpOworCisgICAgbVByb2dyYW1CaW5hcnkuc2V0KG5ldyBQcm9ncmFtQmluYXJ5KG1SZW5k
ZXJlcikpOworICAgIG1MaW5rZWQgPSBtUHJvZ3JhbUJpbmFyeS0+bG9hZChtSW5mb0xvZywgYmlu
YXJ5LCBsZW5ndGgpOworICAgIGlmICghbUxpbmtlZCkKKyAgICB7CisgICAgICAgIG1Qcm9ncmFt
QmluYXJ5LnNldChOVUxMKTsKKyAgICB9CisKKyAgICByZXR1cm4gbUxpbmtlZDsKK30KKwordm9p
ZCBQcm9ncmFtOjpyZWxlYXNlKCkKK3sKKyAgICBtUmVmQ291bnQtLTsKKworICAgIGlmIChtUmVm
Q291bnQgPT0gMCAmJiBtRGVsZXRlU3RhdHVzKQorICAgIHsKKyAgICAgICAgbVJlc291cmNlTWFu
YWdlci0+ZGVsZXRlUHJvZ3JhbShtSGFuZGxlKTsKKyAgICB9Cit9CisKK3ZvaWQgUHJvZ3JhbTo6
YWRkUmVmKCkKK3sKKyAgICBtUmVmQ291bnQrKzsKK30KKwordW5zaWduZWQgaW50IFByb2dyYW06
OmdldFJlZkNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlZkNvdW50OworfQorCitHTGlu
dCBQcm9ncmFtOjpnZXRQcm9ncmFtQmluYXJ5TGVuZ3RoKCkgY29uc3QKK3sKKyAgICBQcm9ncmFt
QmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gbVByb2dyYW1CaW5hcnkuZ2V0KCk7CisgICAgaWYgKHBy
b2dyYW1CaW5hcnkpCisgICAgeworICAgICAgICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0TGVu
Z3RoKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
K30KKworaW50IFByb2dyYW06OmdldEluZm9Mb2dMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVy
biBtSW5mb0xvZy5nZXRMZW5ndGgoKTsKK30KKwordm9pZCBQcm9ncmFtOjpnZXRJbmZvTG9nKEdM
c2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICppbmZvTG9nKQoreworICAgIHJl
dHVybiBtSW5mb0xvZy5nZXRMb2coYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKTsKK30KKwordm9p
ZCBQcm9ncmFtOjpnZXRBdHRhY2hlZFNoYWRlcnMoR0xzaXplaSBtYXhDb3VudCwgR0xzaXplaSAq
Y291bnQsIEdMdWludCAqc2hhZGVycykKK3sKKyAgICBpbnQgdG90YWwgPSAwOworCisgICAgaWYg
KG1WZXJ0ZXhTaGFkZXIpCisgICAgeworICAgICAgICBpZiAodG90YWwgPCBtYXhDb3VudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgc2hhZGVyc1t0b3RhbF0gPSBtVmVydGV4U2hhZGVyLT5nZXRI
YW5kbGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRvdGFsKys7CisgICAgfQorCisgICAgaWYg
KG1GcmFnbWVudFNoYWRlcikKKyAgICB7CisgICAgICAgIGlmICh0b3RhbCA8IG1heENvdW50KQor
ICAgICAgICB7CisgICAgICAgICAgICBzaGFkZXJzW3RvdGFsXSA9IG1GcmFnbWVudFNoYWRlci0+
Z2V0SGFuZGxlKCk7CisgICAgICAgIH0KKworICAgICAgICB0b3RhbCsrOworICAgIH0KKworICAg
IGlmIChjb3VudCkKKyAgICB7CisgICAgICAgICpjb3VudCA9IHRvdGFsOworICAgIH0KK30KKwor
dm9pZCBQcm9ncmFtOjpnZXRBY3RpdmVBdHRyaWJ1dGUoR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1
ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFy
ICpuYW1lKQoreworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBnZXRQcm9ncmFt
QmluYXJ5KCk7CisgICAgaWYgKHByb2dyYW1CaW5hcnkpCisgICAgeworICAgICAgICBwcm9ncmFt
QmluYXJ5LT5nZXRBY3RpdmVBdHRyaWJ1dGUoaW5kZXgsIGJ1ZnNpemUsIGxlbmd0aCwgc2l6ZSwg
dHlwZSwgbmFtZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmIChidWZzaXpl
ID4gMCkKKyAgICAgICAgeworICAgICAgICAgICAgbmFtZVswXSA9ICdcMCc7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGlmIChsZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAgICps
ZW5ndGggPSAwOworICAgICAgICB9CisKKyAgICAgICAgKnR5cGUgPSBHTF9OT05FOworICAgICAg
ICAqc2l6ZSA9IDE7CisgICAgfQorfQorCitHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVBdHRyaWJ1
dGVDb3VudCgpCit7CisgICAgUHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGdldFByb2dy
YW1CaW5hcnkoKTsKKyAgICBpZiAocHJvZ3JhbUJpbmFyeSkKKyAgICB7CisgICAgICAgIHJldHVy
biBwcm9ncmFtQmluYXJ5LT5nZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgpOworICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK0dMaW50IFByb2dyYW06
OmdldEFjdGl2ZUF0dHJpYnV0ZU1heExlbmd0aCgpCit7CisgICAgUHJvZ3JhbUJpbmFyeSAqcHJv
Z3JhbUJpbmFyeSA9IGdldFByb2dyYW1CaW5hcnkoKTsKKyAgICBpZiAocHJvZ3JhbUJpbmFyeSkK
KyAgICB7CisgICAgICAgIHJldHVybiBwcm9ncmFtQmluYXJ5LT5nZXRBY3RpdmVBdHRyaWJ1dGVN
YXhMZW5ndGgoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorfQorCit2b2lkIFByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm0oR0x1aW50IGluZGV4LCBH
THNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlw
ZSwgR0xjaGFyICpuYW1lKQoreworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBn
ZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgaWYgKHByb2dyYW1CaW5hcnkpCisgICAgeworICAgICAg
ICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0QWN0aXZlVW5pZm9ybShpbmRleCwgYnVmc2l6ZSwg
bGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgaWYgKGJ1ZnNpemUgPiAwKQorICAgICAgICB7CisgICAgICAgICAgICBuYW1lWzBdID0gJ1ww
JzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgICpsZW5ndGggPSAwOworICAgICAgICB9CisKKyAgICAgICAgKnNpemUgPSAwOworICAgICAg
ICAqdHlwZSA9IEdMX05PTkU7CisgICAgfQorfQorCitHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVV
bmlmb3JtQ291bnQoKQoreworICAgIFByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBnZXRQ
cm9ncmFtQmluYXJ5KCk7CisgICAgaWYgKHByb2dyYW1CaW5hcnkpCisgICAgeworICAgICAgICBy
ZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0QWN0aXZlVW5pZm9ybUNvdW50KCk7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworR0xpbnQgUHJvZ3Jh
bTo6Z2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aCgpCit7CisgICAgUHJvZ3JhbUJpbmFyeSAqcHJv
Z3JhbUJpbmFyeSA9IGdldFByb2dyYW1CaW5hcnkoKTsKKyAgICBpZiAocHJvZ3JhbUJpbmFyeSkK
KyAgICB7CisgICAgICAgIHJldHVybiBwcm9ncmFtQmluYXJ5LT5nZXRBY3RpdmVVbmlmb3JtTWF4
TGVuZ3RoKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KK30KKwordm9pZCBQcm9ncmFtOjpmbGFnRm9yRGVsZXRpb24oKQoreworICAgIG1EZWxldGVT
dGF0dXMgPSB0cnVlOworfQorCitib29sIFByb2dyYW06OmlzRmxhZ2dlZEZvckRlbGV0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbURlbGV0ZVN0YXR1czsKK30KKwordm9pZCBQcm9ncmFtOjp2
YWxpZGF0ZSgpCit7CisgICAgbUluZm9Mb2cucmVzZXQoKTsKKworICAgIFByb2dyYW1CaW5hcnkg
KnByb2dyYW1CaW5hcnkgPSBnZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgaWYgKGlzTGlua2VkKCkg
JiYgcHJvZ3JhbUJpbmFyeSkKKyAgICB7CisgICAgICAgIHByb2dyYW1CaW5hcnktPnZhbGlkYXRl
KG1JbmZvTG9nKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbUluZm9Mb2cuYXBw
ZW5kKCJQcm9ncmFtIGhhcyBub3QgYmVlbiBzdWNjZXNzZnVsbHkgbGlua2VkLiIpOworICAgIH0K
K30KKworYm9vbCBQcm9ncmFtOjppc1ZhbGlkYXRlZCgpIGNvbnN0Cit7CisgICAgUHJvZ3JhbUJp
bmFyeSAqcHJvZ3JhbUJpbmFyeSA9IG1Qcm9ncmFtQmluYXJ5LmdldCgpOworICAgIGlmIChwcm9n
cmFtQmluYXJ5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb2dyYW1CaW5hcnktPmlzVmFsaWRh
dGVkKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
UHJvZ3JhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvUHJvZ3JhbS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9Qcm9ncmFtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMwIEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBQcm9ncmFtLmg6IERlZmluZXMgdGhlIGdsOjpQcm9ncmFt
IGNsYXNzLiBJbXBsZW1lbnRzIEdMIHByb2dyYW0gb2JqZWN0cworLy8gYW5kIHJlbGF0ZWQgZnVu
Y3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMi4xMC4zIHBhZ2UgMjguCisK
KyNpZm5kZWYgTElCR0xFU1YyX1BST0dSQU1fSF8KKyNkZWZpbmUgTElCR0xFU1YyX1BST0dSQU1f
SF8KKworI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDxzZXQ+CisKKyNpbmNsdWRlICJjb21t
b24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9Db25zdGFudHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBS
ZW5kZXJlcjsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBSZXNvdXJjZU1hbmFnZXI7Citj
bGFzcyBGcmFnbWVudFNoYWRlcjsKK2NsYXNzIFZlcnRleFNoYWRlcjsKK2NsYXNzIFByb2dyYW1C
aW5hcnk7CitjbGFzcyBTaGFkZXI7CisKK2V4dGVybiBjb25zdCBjaGFyICogY29uc3QgZ19mYWtl
cGF0aDsKKworY2xhc3MgQXR0cmlidXRlQmluZGluZ3MKK3sKKyAgcHVibGljOgorICAgIEF0dHJp
YnV0ZUJpbmRpbmdzKCk7CisgICAgfkF0dHJpYnV0ZUJpbmRpbmdzKCk7CisKKyAgICB2b2lkIGJp
bmRBdHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpOworICAg
IGludCBnZXRBdHRyaWJ1dGVCaW5kaW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsK
KworICBwcml2YXRlOgorICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtQXR0cmlidXRlQmluZGlu
Z1tNQVhfVkVSVEVYX0FUVFJJQlNdOworfTsKKworY2xhc3MgSW5mb0xvZworeworICBwdWJsaWM6
CisgICAgSW5mb0xvZygpOworICAgIH5JbmZvTG9nKCk7CisKKyAgICBpbnQgZ2V0TGVuZ3RoKCkg
Y29uc3Q7CisgICAgdm9pZCBnZXRMb2coR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgs
IGNoYXIgKmluZm9Mb2cpOworCisgICAgdm9pZCBhcHBlbmRTYW5pdGl6ZWQoY29uc3QgY2hhciAq
bWVzc2FnZSk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciAqaW5mbywgLi4uKTsKKyAgICB2
b2lkIHJlc2V0KCk7CisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKElu
Zm9Mb2cpOworICAgIGNoYXIgKm1JbmZvTG9nOworfTsKKworY2xhc3MgUHJvZ3JhbQoreworICBw
dWJsaWM6CisgICAgUHJvZ3JhbShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBSZXNvdXJjZU1hbmFn
ZXIgKm1hbmFnZXIsIEdMdWludCBoYW5kbGUpOworCisgICAgflByb2dyYW0oKTsKKworICAgIGJv
b2wgYXR0YWNoU2hhZGVyKFNoYWRlciAqc2hhZGVyKTsKKyAgICBib29sIGRldGFjaFNoYWRlcihT
aGFkZXIgKnNoYWRlcik7CisgICAgaW50IGdldEF0dGFjaGVkU2hhZGVyc0NvdW50KCkgY29uc3Q7
CisKKyAgICB2b2lkIGJpbmRBdHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNo
YXIgKm5hbWUpOworCisgICAgYm9vbCBsaW5rKCk7CisgICAgYm9vbCBpc0xpbmtlZCgpOworICAg
IGJvb2wgc2V0UHJvZ3JhbUJpbmFyeShjb25zdCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3Ro
KTsKKyAgICBQcm9ncmFtQmluYXJ5ICpnZXRQcm9ncmFtQmluYXJ5KCk7CisKKyAgICBpbnQgZ2V0
SW5mb0xvZ0xlbmd0aCgpIGNvbnN0OworICAgIHZvaWQgZ2V0SW5mb0xvZyhHTHNpemVpIGJ1ZlNp
emUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZyk7CisgICAgdm9pZCBnZXRBdHRhY2hl
ZFNoYWRlcnMoR0xzaXplaSBtYXhDb3VudCwgR0xzaXplaSAqY291bnQsIEdMdWludCAqc2hhZGVy
cyk7CisKKyAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYnV0ZShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkg
YnVmc2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNo
YXIgKm5hbWUpOworICAgIEdMaW50IGdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCk7CisgICAgR0xp
bnQgZ2V0QWN0aXZlQXR0cmlidXRlTWF4TGVuZ3RoKCk7CisKKyAgICB2b2lkIGdldEFjdGl2ZVVu
aWZvcm0oR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xp
bnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKTsKKyAgICBHTGludCBnZXRBY3Rp
dmVVbmlmb3JtQ291bnQoKTsKKyAgICBHTGludCBnZXRBY3RpdmVVbmlmb3JtTWF4TGVuZ3RoKCk7
CisKKyAgICB2b2lkIGFkZFJlZigpOworICAgIHZvaWQgcmVsZWFzZSgpOworICAgIHVuc2lnbmVk
IGludCBnZXRSZWZDb3VudCgpIGNvbnN0OworICAgIHZvaWQgZmxhZ0ZvckRlbGV0aW9uKCk7Cisg
ICAgYm9vbCBpc0ZsYWdnZWRGb3JEZWxldGlvbigpIGNvbnN0OworCisgICAgdm9pZCB2YWxpZGF0
ZSgpOworICAgIGJvb2wgaXNWYWxpZGF0ZWQoKSBjb25zdDsKKworICAgIEdMaW50IGdldFByb2dy
YW1CaW5hcnlMZW5ndGgoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTihQcm9ncmFtKTsKKworICAgIHZvaWQgdW5saW5rKGJvb2wgZGVzdHJveSA9IGZh
bHNlKTsKKworICAgIEZyYWdtZW50U2hhZGVyICptRnJhZ21lbnRTaGFkZXI7CisgICAgVmVydGV4
U2hhZGVyICptVmVydGV4U2hhZGVyOworCisgICAgQXR0cmlidXRlQmluZGluZ3MgbUF0dHJpYnV0
ZUJpbmRpbmdzOworCisgICAgQmluZGluZ1BvaW50ZXI8UHJvZ3JhbUJpbmFyeT4gbVByb2dyYW1C
aW5hcnk7CisgICAgYm9vbCBtTGlua2VkOworICAgIGJvb2wgbURlbGV0ZVN0YXR1czsgICAvLyBG
bGFnIHRvIGluZGljYXRlIHRoYXQgdGhlIHByb2dyYW0gY2FuIGJlIGRlbGV0ZWQgd2hlbiBubyBs
b25nZXIgaW4gdXNlCisKKyAgICB1bnNpZ25lZCBpbnQgbVJlZkNvdW50OworCisgICAgUmVzb3Vy
Y2VNYW5hZ2VyICptUmVzb3VyY2VNYW5hZ2VyOworICAgIHJ4OjpSZW5kZXJlciAqbVJlbmRlcmVy
OworICAgIGNvbnN0IEdMdWludCBtSGFuZGxlOworCisgICAgSW5mb0xvZyBtSW5mb0xvZzsKK307
Cit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9QUk9HUkFNX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L1Byb2dyYW1CaW5hcnkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2MjAgQEAKKyNpbmNs
dWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUHJvZ3JhbS5jcHA6
IEltcGxlbWVudHMgdGhlIGdsOjpQcm9ncmFtIGNsYXNzLiBJbXBsZW1lbnRzIEdMIHByb2dyYW0g
b2JqZWN0cworLy8gYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRd
IHNlY3Rpb24gMi4xMC4zIHBhZ2UgMjguCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvQmluYXJ5U3Ry
ZWFtLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIKKyNpbmNsdWRlICJs
aWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZS5oIgorCisjaW5jbHVkZSAiY29tbW9u
L2RlYnVnLmgiCisjaW5jbHVkZSAiY29tbW9uL3ZlcnNpb24uaCIKKyNpbmNsdWRlICJ1dGlsaXRp
ZXMuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L1NoYWRlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9Qcm9ncmFtLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L1ZlcnRleERhdGFNYW5hZ2VyLmgiCisKKyN1bmRlZiBuZWFyCisjdW5kZWYgZmFyCisKK25hbWVz
cGFjZSBnbAoreworc3RkOjpzdHJpbmcgc3RyKGludCBpKQoreworICAgIGNoYXIgYnVmZmVyWzIw
XTsKKyAgICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJWQiLCBpKTsKKyAgICBy
ZXR1cm4gYnVmZmVyOworfQorCitVbmlmb3JtTG9jYXRpb246OlVuaWZvcm1Mb2NhdGlvbihjb25z
dCBzdGQ6OnN0cmluZyAmbmFtZSwgdW5zaWduZWQgaW50IGVsZW1lbnQsIHVuc2lnbmVkIGludCBp
bmRleCkgCisgICAgOiBuYW1lKG5hbWUpLCBlbGVtZW50KGVsZW1lbnQpLCBpbmRleChpbmRleCkK
K3sKK30KKwordW5zaWduZWQgaW50IFByb2dyYW1CaW5hcnk6Om1DdXJyZW50U2VyaWFsID0gMTsK
KworUHJvZ3JhbUJpbmFyeTo6UHJvZ3JhbUJpbmFyeShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKSA6
IG1SZW5kZXJlcihyZW5kZXJlciksIFJlZkNvdW50T2JqZWN0KDApLCBtU2VyaWFsKGlzc3VlU2Vy
aWFsKCkpCit7CisgICAgbVBpeGVsRXhlY3V0YWJsZSA9IE5VTEw7CisgICAgbVZlcnRleEV4ZWN1
dGFibGUgPSBOVUxMOworICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgPSBOVUxMOworCisgICAgbVZh
bGlkYXRlZCA9IGZhbHNlOworCisgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IE1BWF9W
RVJURVhfQVRUUklCUzsgaW5kZXgrKykKKyAgICB7CisgICAgICAgIG1TZW1hbnRpY0luZGV4W2lu
ZGV4XSA9IC0xOworICAgIH0KKworICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBNQVhf
VEVYVFVSRV9JTUFHRV9VTklUUzsgaW5kZXgrKykKKyAgICB7CisgICAgICAgIG1TYW1wbGVyc1BT
W2luZGV4XS5hY3RpdmUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKGludCBpbmRleCA9IDA7
IGluZGV4IDwgSU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOyBp
bmRleCsrKQorICAgIHsKKyAgICAgICAgbVNhbXBsZXJzVlNbaW5kZXhdLmFjdGl2ZSA9IGZhbHNl
OworICAgIH0KKworICAgIG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlID0gMDsKKyAgICBtVXNlZFBp
eGVsU2FtcGxlclJhbmdlID0gMDsKKyAgICBtVXNlc1BvaW50U2l6ZSA9IGZhbHNlOworfQorCitQ
cm9ncmFtQmluYXJ5Ojp+UHJvZ3JhbUJpbmFyeSgpCit7CisgICAgZGVsZXRlIG1QaXhlbEV4ZWN1
dGFibGU7CisgICAgbVBpeGVsRXhlY3V0YWJsZSA9IE5VTEw7CisKKyAgICBkZWxldGUgbVZlcnRl
eEV4ZWN1dGFibGU7CisgICAgbVZlcnRleEV4ZWN1dGFibGUgPSBOVUxMOworCisgICAgZGVsZXRl
IG1HZW9tZXRyeUV4ZWN1dGFibGU7CisgICAgbUdlb21ldHJ5RXhlY3V0YWJsZSA9IE5VTEw7CisK
KyAgICB3aGlsZSAoIW1Vbmlmb3Jtcy5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlIG1V
bmlmb3Jtcy5iYWNrKCk7CisgICAgICAgIG1Vbmlmb3Jtcy5wb3BfYmFjaygpOworICAgIH0KK30K
KwordW5zaWduZWQgaW50IFByb2dyYW1CaW5hcnk6OmdldFNlcmlhbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1TZXJpYWw7Cit9CisKK3Vuc2lnbmVkIGludCBQcm9ncmFtQmluYXJ5Ojppc3N1ZVNl
cmlhbCgpCit7CisgICAgcmV0dXJuIG1DdXJyZW50U2VyaWFsKys7Cit9CisKK3J4OjpTaGFkZXJF
eGVjdXRhYmxlICpQcm9ncmFtQmluYXJ5OjpnZXRQaXhlbEV4ZWN1dGFibGUoKQoreworICAgIHJl
dHVybiBtUGl4ZWxFeGVjdXRhYmxlOworfQorCityeDo6U2hhZGVyRXhlY3V0YWJsZSAqUHJvZ3Jh
bUJpbmFyeTo6Z2V0VmVydGV4RXhlY3V0YWJsZSgpCit7CisgICAgcmV0dXJuIG1WZXJ0ZXhFeGVj
dXRhYmxlOworfQorCityeDo6U2hhZGVyRXhlY3V0YWJsZSAqUHJvZ3JhbUJpbmFyeTo6Z2V0R2Vv
bWV0cnlFeGVjdXRhYmxlKCkKK3sKKyAgICByZXR1cm4gbUdlb21ldHJ5RXhlY3V0YWJsZTsKK30K
KworR0x1aW50IFByb2dyYW1CaW5hcnk6OmdldEF0dHJpYnV0ZUxvY2F0aW9uKGNvbnN0IGNoYXIg
Km5hbWUpCit7CisgICAgaWYgKG5hbWUpCisgICAgeworICAgICAgICBmb3IgKGludCBpbmRleCA9
IDA7IGluZGV4IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpbmRleCsrKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAobUxpbmtlZEF0dHJpYnV0ZVtpbmRleF0ubmFtZSA9PSBzdGQ6OnN0cmluZyhu
YW1lKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gLTE7Cit9CisKK2ludCBQ
cm9ncmFtQmluYXJ5OjpnZXRTZW1hbnRpY0luZGV4KGludCBhdHRyaWJ1dGVJbmRleCkKK3sKKyAg
ICBBU1NFUlQoYXR0cmlidXRlSW5kZXggPj0gMCAmJiBhdHRyaWJ1dGVJbmRleCA8IE1BWF9WRVJU
RVhfQVRUUklCUyk7CisgICAgCisgICAgcmV0dXJuIG1TZW1hbnRpY0luZGV4W2F0dHJpYnV0ZUlu
ZGV4XTsKK30KKworLy8gUmV0dXJucyBvbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0IHNhbXBsZXIg
aW5kZXggdXNlZC4KK0dMaW50IFByb2dyYW1CaW5hcnk6OmdldFVzZWRTYW1wbGVyUmFuZ2UoU2Ft
cGxlclR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgY2FzZSBT
QU1QTEVSX1BJWEVMOgorICAgICAgICByZXR1cm4gbVVzZWRQaXhlbFNhbXBsZXJSYW5nZTsKKyAg
ICAgIGNhc2UgU0FNUExFUl9WRVJURVg6CisgICAgICAgIHJldHVybiBtVXNlZFZlcnRleFNhbXBs
ZXJSYW5nZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KK30KKworYm9vbCBQcm9ncmFtQmluYXJ5Ojp1c2VzUG9pbnRTaXpl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVVzZXNQb2ludFNpemU7Cit9CisKK2Jvb2wgUHJvZ3Jh
bUJpbmFyeTo6dXNlc1BvaW50U3ByaXRlRW11bGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bVVzZXNQb2ludFNpemUgJiYgbVJlbmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVsKCkgPj0gNDsK
K30KKworYm9vbCBQcm9ncmFtQmluYXJ5Ojp1c2VzR2VvbWV0cnlTaGFkZXIoKSBjb25zdAorewor
ICAgIHJldHVybiB1c2VzUG9pbnRTcHJpdGVFbXVsYXRpb24oKTsKK30KKworLy8gUmV0dXJucyB0
aGUgaW5kZXggb2YgdGhlIHRleHR1cmUgaW1hZ2UgdW5pdCAoMC0xOSkgY29ycmVzcG9uZGluZyB0
byBhIERpcmVjdDNEIDkgc2FtcGxlcgorLy8gaW5kZXggKDAtMTUgZm9yIHRoZSBwaXhlbCBzaGFk
ZXIgYW5kIDAtMyBmb3IgdGhlIHZlcnRleCBzaGFkZXIpLgorR0xpbnQgUHJvZ3JhbUJpbmFyeTo6
Z2V0U2FtcGxlck1hcHBpbmcoU2FtcGxlclR5cGUgdHlwZSwgdW5zaWduZWQgaW50IHNhbXBsZXJJ
bmRleCkKK3sKKyAgICBHTGludCBsb2dpY2FsVGV4dHVyZVVuaXQgPSAtMTsKKworICAgIHN3aXRj
aCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIFNBTVBMRVJfUElYRUw6CisgICAgICAgIEFTU0VS
VChzYW1wbGVySW5kZXggPCBzaXplb2YobVNhbXBsZXJzUFMpL3NpemVvZihtU2FtcGxlcnNQU1sw
XSkpOworCisgICAgICAgIGlmIChtU2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgbG9naWNhbFRleHR1cmVVbml0ID0gbVNhbXBsZXJzUFNbc2Ft
cGxlckluZGV4XS5sb2dpY2FsVGV4dHVyZVVuaXQ7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIFNBTVBMRVJfVkVSVEVYOgorICAgICAgICBBU1NFUlQoc2FtcGxlckluZGV4
IDwgc2l6ZW9mKG1TYW1wbGVyc1ZTKS9zaXplb2YobVNhbXBsZXJzVlNbMF0pKTsKKworICAgICAg
ICBpZiAobVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5hY3RpdmUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGxvZ2ljYWxUZXh0dXJlVW5pdCA9IG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0ubG9n
aWNhbFRleHR1cmVVbml0OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVs
dDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICBpZiAobG9naWNhbFRleHR1cmVVbml0ID49
IDAgJiYgbG9naWNhbFRleHR1cmVVbml0IDwgKEdMaW50KW1SZW5kZXJlci0+Z2V0TWF4Q29tYmlu
ZWRUZXh0dXJlSW1hZ2VVbml0cygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxvZ2ljYWxUZXh0
dXJlVW5pdDsKKyAgICB9CisKKyAgICByZXR1cm4gLTE7Cit9CisKKy8vIFJldHVybnMgdGhlIHRl
eHR1cmUgdHlwZSBmb3IgYSBnaXZlbiBEaXJlY3QzRCA5IHNhbXBsZXIgdHlwZSBhbmQKKy8vIGlu
ZGV4ICgwLTE1IGZvciB0aGUgcGl4ZWwgc2hhZGVyIGFuZCAwLTMgZm9yIHRoZSB2ZXJ0ZXggc2hh
ZGVyKS4KK1RleHR1cmVUeXBlIFByb2dyYW1CaW5hcnk6OmdldFNhbXBsZXJUZXh0dXJlVHlwZShT
YW1wbGVyVHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4KQoreworICAgIHN3aXRj
aCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIFNBTVBMRVJfUElYRUw6CisgICAgICAgIEFTU0VS
VChzYW1wbGVySW5kZXggPCBzaXplb2YobVNhbXBsZXJzUFMpL3NpemVvZihtU2FtcGxlcnNQU1sw
XSkpOworICAgICAgICBBU1NFUlQobVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS5hY3RpdmUpOwor
ICAgICAgICByZXR1cm4gbVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS50ZXh0dXJlVHlwZTsKKyAg
ICAgIGNhc2UgU0FNUExFUl9WRVJURVg6CisgICAgICAgIEFTU0VSVChzYW1wbGVySW5kZXggPCBz
aXplb2YobVNhbXBsZXJzVlMpL3NpemVvZihtU2FtcGxlcnNWU1swXSkpOworICAgICAgICBBU1NF
UlQobVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5hY3RpdmUpOworICAgICAgICByZXR1cm4gbVNh
bXBsZXJzVlNbc2FtcGxlckluZGV4XS50ZXh0dXJlVHlwZTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVB
Q0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIFRFWFRVUkVfMkQ7Cit9CisKK0dMaW50IFBy
b2dyYW1CaW5hcnk6OmdldFVuaWZvcm1Mb2NhdGlvbihzdGQ6OnN0cmluZyBuYW1lKQoreworICAg
IHVuc2lnbmVkIGludCBzdWJzY3JpcHQgPSAwOworCisgICAgLy8gU3RyaXAgYW55IHRyYWlsaW5n
IGFycmF5IG9wZXJhdG9yIGFuZCByZXRyaWV2ZSB0aGUgc3Vic2NyaXB0CisgICAgc2l6ZV90IG9w
ZW4gPSBuYW1lLmZpbmRfbGFzdF9vZignWycpOworICAgIHNpemVfdCBjbG9zZSA9IG5hbWUuZmlu
ZF9sYXN0X29mKCddJyk7CisgICAgaWYgKG9wZW4gIT0gc3RkOjpzdHJpbmc6Om5wb3MgJiYgY2xv
c2UgPT0gbmFtZS5sZW5ndGgoKSAtIDEpCisgICAgeworICAgICAgICBzdWJzY3JpcHQgPSBhdG9p
KG5hbWUuc3Vic3RyKG9wZW4gKyAxKS5jX3N0cigpKTsKKyAgICAgICAgbmFtZS5lcmFzZShvcGVu
KTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbnQgbnVtVW5pZm9ybXMgPSBtVW5pZm9ybUluZGV4
LnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBsb2NhdGlvbiA9IDA7IGxvY2F0aW9uIDwg
bnVtVW5pZm9ybXM7IGxvY2F0aW9uKyspCisgICAgeworICAgICAgICBpZiAobVVuaWZvcm1JbmRl
eFtsb2NhdGlvbl0ubmFtZSA9PSBuYW1lICYmCisgICAgICAgICAgICBtVW5pZm9ybUluZGV4W2xv
Y2F0aW9uXS5lbGVtZW50ID09IHN1YnNjcmlwdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGxvY2F0aW9uOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCiti
b29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMZmxvYXQqIHYpCit7CisgICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBsb2Nh
dGlvbiA+PSAoaW50KW1Vbmlmb3JtSW5kZXguc2l6ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNb
bVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uaW5kZXhdOworICAgIHRhcmdldFVuaWZvcm0tPmRpcnR5
ID0gdHJ1ZTsKKworICAgIGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVtZW50
Q291bnQoKTsKKworICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSAmJiBjb3VudCA+IDEpCisgICAg
ICAgIHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBhIG5v
bi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisKKyAgICBjb3VudCA9IHN0
ZDo6bWluKGVsZW1lbnRDb3VudCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVu
dCwgY291bnQpOworCisgICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfRkxPQVQpCisg
ICAgeworICAgICAgICBHTGZsb2F0ICp0YXJnZXQgPSAoR0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+
ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgdGFy
Z2V0WzBdID0gdlswXTsKKyAgICAgICAgICAgIHRhcmdldFsxXSA9IDA7CisgICAgICAgICAgICB0
YXJnZXRbMl0gPSAwOworICAgICAgICAgICAgdGFyZ2V0WzNdID0gMDsKKyAgICAgICAgICAgIHRh
cmdldCArPSA0OworICAgICAgICAgICAgdiArPSAxOworICAgICAgICB9CisgICAgfQorICAgIGVs
c2UgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfQk9PTCkKKyAgICB7CisgICAgICAgIEdM
aW50ICpib29sUGFyYW1zID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1J
bmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBib29sUGFyYW1zWzBdID0gKHZb
MF0gPT0gMC4wZikgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1z
WzFdID0gR0xfRkFMU0U7CisgICAgICAgICAgICBib29sUGFyYW1zWzJdID0gR0xfRkFMU0U7Cisg
ICAgICAgICAgICBib29sUGFyYW1zWzNdID0gR0xfRkFMU0U7CisgICAgICAgICAgICBib29sUGFy
YW1zICs9IDQ7CisgICAgICAgICAgICB2ICs9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm0yZnYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCit7CisgICAgaWYgKGxvY2F0aW9uIDwg
MCB8fCBsb2NhdGlvbiA+PSAoaW50KW1Vbmlmb3JtSW5kZXguc2l6ZSgpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBt
VW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uaW5kZXhdOworICAgIHRhcmdldFVuaWZv
cm0tPmRpcnR5ID0gdHJ1ZTsKKworICAgIGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlmb3Jt
LT5lbGVtZW50Q291bnQoKTsKKworICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSAmJiBjb3VudCA+
IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJh
eSB0byBhIG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisKKyAgICBj
b3VudCA9IHN0ZDo6bWluKGVsZW1lbnRDb3VudCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlv
bl0uZWxlbWVudCwgY291bnQpOworCisgICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xf
RkxPQVRfVkVDMikKKyAgICB7CisgICAgICAgIEdMZmxvYXQgKnRhcmdldCA9IChHTGZsb2F0Kil0
YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7
CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICB0YXJnZXRbMF0gPSB2WzBdOworICAgICAgICAgICAgdGFyZ2V0WzFdID0gdlsx
XTsKKyAgICAgICAgICAgIHRhcmdldFsyXSA9IDA7CisgICAgICAgICAgICB0YXJnZXRbM10gPSAw
OworICAgICAgICAgICAgdGFyZ2V0ICs9IDQ7CisgICAgICAgICAgICB2ICs9IDI7CisgICAgICAg
IH0KKyAgICB9CisgICAgZWxzZSBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9CT09MX1ZF
QzIpCisgICAgeworICAgICAgICBHTGludCAqYm9vbFBhcmFtcyA9IChHTGludCopdGFyZ2V0VW5p
Zm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAg
ICAgYm9vbFBhcmFtc1swXSA9ICh2WzBdID09IDAuMGYpID8gR0xfRkFMU0UgOiBHTF9UUlVFOwor
ICAgICAgICAgICAgYm9vbFBhcmFtc1sxXSA9ICh2WzFdID09IDAuMGYpID8gR0xfRkFMU0UgOiBH
TF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFtc1syXSA9IEdMX0ZBTFNFOworICAgICAgICAg
ICAgYm9vbFBhcmFtc1szXSA9IEdMX0ZBTFNFOworICAgICAgICAgICAgYm9vbFBhcmFtcyArPSA0
OworICAgICAgICAgICAgdiArPSAyOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgUHJvZ3JhbUJpbmFyeTo6c2V0VW5pZm9ybTNmdihHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKK3sKKyAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxv
Y2F0aW9uID49IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jt
c1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07CisgICAgdGFyZ2V0VW5pZm9ybS0+ZGly
dHkgPSB0cnVlOworCisgICAgaW50IGVsZW1lbnRDb3VudCA9IHRhcmdldFVuaWZvcm0tPmVsZW1l
bnRDb3VudCgpOworCisgICAgaWYgKGVsZW1lbnRDb3VudCA9PSAxICYmIGNvdW50ID4gMSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFycmF5IHRvIGEg
bm9uLWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KKworICAgIGNvdW50ID0g
c3RkOjptaW4oZWxlbWVudENvdW50IC0gKGludCltVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVt
ZW50LCBjb3VudCk7CisKKyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9GTE9BVF9W
RUMzKQorICAgIHsKKyAgICAgICAgR0xmbG9hdCAqdGFyZ2V0ID0gKEdMZmxvYXQqKXRhcmdldFVu
aWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHRhcmdldFswXSA9IHZbMF07CisgICAgICAgICAgICB0YXJnZXRbMV0gPSB2WzFdOworICAg
ICAgICAgICAgdGFyZ2V0WzJdID0gdlsyXTsKKyAgICAgICAgICAgIHRhcmdldFszXSA9IDA7Cisg
ICAgICAgICAgICB0YXJnZXQgKz0gNDsKKyAgICAgICAgICAgIHYgKz0gMzsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBlbHNlIGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0JPT0xfVkVDMykK
KyAgICB7CisgICAgICAgIEdMaW50ICpib29sUGFyYW1zID0gKEdMaW50Kil0YXJnZXRVbmlmb3Jt
LT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBi
b29sUGFyYW1zWzBdID0gKHZbMF0gPT0gMC4wZikgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAg
ICAgICAgICBib29sUGFyYW1zWzFdID0gKHZbMV0gPT0gMC4wZikgPyBHTF9GQUxTRSA6IEdMX1RS
VUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzJdID0gKHZbMl0gPT0gMC4wZikgPyBHTF9GQUxT
RSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzNdID0gR0xfRkFMU0U7CisgICAg
ICAgICAgICBib29sUGFyYW1zICs9IDQ7CisgICAgICAgICAgICB2ICs9IDM7CisgICAgICAgIH0K
KyAgICB9CisgICAgZWxzZSAKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtNGZ2
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQoreworICAg
IGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUo
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBVbmlmb3JtICp0
YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsK
KyAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IHRydWU7CisKKyAgICBpbnQgZWxlbWVudENvdW50
ID0gdGFyZ2V0VW5pZm9ybS0+ZWxlbWVudENvdW50KCk7CisKKyAgICBpZiAoZWxlbWVudENvdW50
ID09IDEgJiYgY291bnQgPiAxKQorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRpbmcg
dG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09Q
RVJBVElPTgorCisgICAgY291bnQgPSBzdGQ6Om1pbihlbGVtZW50Q291bnQgLSAoaW50KW1Vbmlm
b3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsKKworICAgIGlmICh0YXJnZXRVbmlm
b3JtLT50eXBlID09IEdMX0ZMT0FUX1ZFQzQpCisgICAgeworICAgICAgICBHTGZsb2F0ICp0YXJn
ZXQgPSAoR0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRp
b25dLmVsZW1lbnQgKiA0OworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkr
KykKKyAgICAgICAgeworICAgICAgICAgICAgdGFyZ2V0WzBdID0gdlswXTsKKyAgICAgICAgICAg
IHRhcmdldFsxXSA9IHZbMV07CisgICAgICAgICAgICB0YXJnZXRbMl0gPSB2WzJdOworICAgICAg
ICAgICAgdGFyZ2V0WzNdID0gdlszXTsKKyAgICAgICAgICAgIHRhcmdldCArPSA0OworICAgICAg
ICAgICAgdiArPSA0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHRhcmdldFVuaWZv
cm0tPnR5cGUgPT0gR0xfQk9PTF9WRUM0KQorICAgIHsKKyAgICAgICAgR0xpbnQgKmJvb2xQYXJh
bXMgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9u
XS5lbGVtZW50ICogNDsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbMF0gPSAodlswXSA9PSAwLjBmKSA/
IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbMV0gPSAodlsxXSA9
PSAwLjBmKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbMl0g
PSAodlsyXSA9PSAwLjBmKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJvb2xQ
YXJhbXNbM10gPSAodlszXSA9PSAwLjBmKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAg
ICAgIGJvb2xQYXJhbXMgKz0gNDsKKyAgICAgICAgICAgIHYgKz0gNDsKKyAgICAgICAgfQorICAg
IH0KKyAgICBlbHNlIAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBpbnQgdGFyZ2V0V2lkdGgs
IGludCB0YXJnZXRIZWlnaHQsIGludCBzcmNXaWR0aCwgaW50IHNyY0hlaWdodD4KK3ZvaWQgdHJh
bnNwb3NlTWF0cml4KFQgKnRhcmdldCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgaW50
IGNvcHlXaWR0aCA9IHN0ZDo6bWluKHRhcmdldFdpZHRoLCBzcmNXaWR0aCk7CisgICAgaW50IGNv
cHlIZWlnaHQgPSBzdGQ6Om1pbih0YXJnZXRIZWlnaHQsIHNyY0hlaWdodCk7CisKKyAgICBmb3Ig
KGludCB4ID0gMDsgeCA8IGNvcHlXaWR0aDsgeCsrKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQg
eSA9IDA7IHkgPCBjb3B5SGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHRhcmdl
dFt4ICogdGFyZ2V0V2lkdGggKyB5XSA9IChUKXZhbHVlW3kgKiBzcmNXaWR0aCArIHhdOworICAg
ICAgICB9CisgICAgfQorICAgIC8vIGNsZWFyIHVuZmlsbGVkIHJpZ2h0IHNpZGUKKyAgICBmb3Ig
KGludCB5ID0gMDsgeSA8IGNvcHlIZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIGZvciAoaW50
IHggPSBzcmNXaWR0aDsgeCA8IHRhcmdldFdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHRhcmdldFt5ICogdGFyZ2V0V2lkdGggKyB4XSA9IChUKTA7CisgICAgICAgIH0KKyAgICB9
CisgICAgLy8gY2xlYXIgdW5maWxsZWQgYm90dG9tLgorICAgIGZvciAoaW50IHkgPSBzcmNIZWln
aHQ7IHkgPCB0YXJnZXRIZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIGZvciAoaW50IHggPSAw
OyB4IDwgdGFyZ2V0V2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgdGFyZ2V0W3kg
KiB0YXJnZXRXaWR0aCArIHhdID0gKFQpMDsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBQ
cm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3sKKyAgICBpZiAobG9jYXRpb24gPCAwIHx8
IGxvY2F0aW9uID49IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlm
b3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07CisgICAgdGFyZ2V0VW5pZm9ybS0+
ZGlydHkgPSB0cnVlOworCisgICAgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgIT0gR0xfRkxPQVRf
TUFUMikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbnQgZWxl
bWVudENvdW50ID0gdGFyZ2V0VW5pZm9ybS0+ZWxlbWVudENvdW50KCk7CisKKyAgICBpZiAoZWxl
bWVudENvdW50ID09IDEgJiYgY291bnQgPiAxKQorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0
dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJ
TlZBTElEX09QRVJBVElPTgorCisgICAgY291bnQgPSBzdGQ6Om1pbihlbGVtZW50Q291bnQgLSAo
aW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsKKyAgICBHTGZsb2F0
ICp0YXJnZXQgPSAoR0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhb
bG9jYXRpb25dLmVsZW1lbnQgKiA4OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsg
aSsrKQorICAgIHsKKyAgICAgICAgdHJhbnNwb3NlTWF0cml4PEdMZmxvYXQsNCwyLDIsMj4odGFy
Z2V0LCB2YWx1ZSk7CisgICAgICAgIHRhcmdldCArPSA4OworICAgICAgICB2YWx1ZSArPSA0Owor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dyYW1CaW5hcnk6OnNldFVu
aWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKQoreworICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludClt
VW5pZm9ybUluZGV4LnNpemUoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhb
bG9jYXRpb25dLmluZGV4XTsKKyAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IHRydWU7CisKKyAg
ICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSAhPSBHTF9GTE9BVF9NQVQzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRV
bmlmb3JtLT5lbGVtZW50Q291bnQoKTsKKworICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSAmJiBj
b3VudCA+IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBh
biBhcnJheSB0byBhIG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisK
KyAgICBjb3VudCA9IHN0ZDo6bWluKGVsZW1lbnRDb3VudCAtIChpbnQpbVVuaWZvcm1JbmRleFts
b2NhdGlvbl0uZWxlbWVudCwgY291bnQpOworICAgIEdMZmxvYXQgKnRhcmdldCA9IChHTGZsb2F0
Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAq
IDEyOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgIHsKKyAgICAg
ICAgdHJhbnNwb3NlTWF0cml4PEdMZmxvYXQsNCwzLDMsMz4odGFyZ2V0LCB2YWx1ZSk7CisgICAg
ICAgIHRhcmdldCArPSAxMjsKKyAgICAgICAgdmFsdWUgKz0gOTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworCitib29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm1NYXRyaXg0ZnYo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQorewor
ICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNp
emUoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBVbmlmb3Jt
ICp0YXJnZXRVbmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4
XTsKKyAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IHRydWU7CisKKyAgICBpZiAodGFyZ2V0VW5p
Zm9ybS0+dHlwZSAhPSBHTF9GTE9BVF9NQVQ0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVtZW50
Q291bnQoKTsKKworICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSAmJiBjb3VudCA+IDEpCisgICAg
ICAgIHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBhIG5v
bi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisKKyAgICBjb3VudCA9IHN0
ZDo6bWluKGVsZW1lbnRDb3VudCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVu
dCwgY291bnQpOworICAgIEdMZmxvYXQgKnRhcmdldCA9IChHTGZsb2F0KikodGFyZ2V0VW5pZm9y
bS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiBzaXplb2YoR0xmbG9h
dCkgKiAxNik7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgewor
ICAgICAgICB0cmFuc3Bvc2VNYXRyaXg8R0xmbG9hdCw0LDQsNCw0Pih0YXJnZXQsIHZhbHVlKTsK
KyAgICAgICAgdGFyZ2V0ICs9IDE2OworICAgICAgICB2YWx1ZSArPSAxNjsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9ncmFtQmluYXJ5OjpzZXRVbmlmb3JtMWl2KEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKK3sKKyAgICBpZiAo
bG9jYXRpb24gPCAwIHx8IGxvY2F0aW9uID49IChpbnQpbVVuaWZvcm1JbmRleC5zaXplKCkpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVW5pZm9ybSAqdGFyZ2V0
VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07CisgICAg
dGFyZ2V0VW5pZm9ybS0+ZGlydHkgPSB0cnVlOworCisgICAgaW50IGVsZW1lbnRDb3VudCA9IHRh
cmdldFVuaWZvcm0tPmVsZW1lbnRDb3VudCgpOworCisgICAgaWYgKGVsZW1lbnRDb3VudCA9PSAx
ICYmIGNvdW50ID4gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdy
aXRlIGFuIGFycmF5IHRvIGEgbm9uLWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJ
T04KKworICAgIGNvdW50ID0gc3RkOjptaW4oZWxlbWVudENvdW50IC0gKGludCltVW5pZm9ybUlu
ZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBjb3VudCk7CisKKyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+
dHlwZSA9PSBHTF9JTlQgfHwKKyAgICAgICAgdGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9TQU1Q
TEVSXzJEIHx8CisgICAgICAgIHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfU0FNUExFUl9DVUJF
KQorICAgIHsKKyAgICAgICAgR0xpbnQgKnRhcmdldCA9IChHTGludCopdGFyZ2V0VW5pZm9ybS0+
ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgdGFy
Z2V0WzBdID0gdlswXTsKKyAgICAgICAgICAgIHRhcmdldFsxXSA9IDA7CisgICAgICAgICAgICB0
YXJnZXRbMl0gPSAwOworICAgICAgICAgICAgdGFyZ2V0WzNdID0gMDsKKyAgICAgICAgICAgIHRh
cmdldCArPSA0OworICAgICAgICAgICAgdiArPSAxOworICAgICAgICB9CisgICAgfQorICAgIGVs
c2UgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfQk9PTCkKKyAgICB7CisgICAgICAgIEdM
aW50ICpib29sUGFyYW1zID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1J
bmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBib29sUGFyYW1zWzBdID0gKHZb
MF0gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzFd
ID0gR0xfRkFMU0U7CisgICAgICAgICAgICBib29sUGFyYW1zWzJdID0gR0xfRkFMU0U7CisgICAg
ICAgICAgICBib29sUGFyYW1zWzNdID0gR0xfRkFMU0U7CisgICAgICAgICAgICBib29sUGFyYW1z
ICs9IDQ7CisgICAgICAgICAgICB2ICs9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIFByb2dyYW1CaW5hcnk6OnNldFVuaWZvcm0yaXYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQoreworICAgIGlmIChsb2NhdGlvbiA8IDAgfHwg
bG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUoKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gbVVuaWZv
cm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKKyAgICB0YXJnZXRVbmlmb3JtLT5k
aXJ0eSA9IHRydWU7CisKKyAgICBpbnQgZWxlbWVudENvdW50ID0gdGFyZ2V0VW5pZm9ybS0+ZWxl
bWVudENvdW50KCk7CisKKyAgICBpZiAoZWxlbWVudENvdW50ID09IDEgJiYgY291bnQgPiAxKQor
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8g
YSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgorCisgICAgY291bnQg
PSBzdGQ6Om1pbihlbGVtZW50Q291bnQgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVs
ZW1lbnQsIGNvdW50KTsKKworICAgIGlmICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0lOVF9W
RUMyKQorICAgIHsKKyAgICAgICAgR0xpbnQgKnRhcmdldCA9IChHTGludCopdGFyZ2V0VW5pZm9y
bS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAg
dGFyZ2V0WzBdID0gdlswXTsKKyAgICAgICAgICAgIHRhcmdldFsxXSA9IHZbMV07CisgICAgICAg
ICAgICB0YXJnZXRbMl0gPSAwOworICAgICAgICAgICAgdGFyZ2V0WzNdID0gMDsKKyAgICAgICAg
ICAgIHRhcmdldCArPSA0OworICAgICAgICAgICAgdiArPSAyOworICAgICAgICB9CisgICAgfQor
ICAgIGVsc2UgaWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfQk9PTF9WRUMyKQorICAgIHsK
KyAgICAgICAgR0xpbnQgKmJvb2xQYXJhbXMgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEg
KyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2xQYXJh
bXNbMF0gPSAodlswXSA9PSAwKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAgICAgIGJv
b2xQYXJhbXNbMV0gPSAodlsxXSA9PSAwKSA/IEdMX0ZBTFNFIDogR0xfVFJVRTsKKyAgICAgICAg
ICAgIGJvb2xQYXJhbXNbMl0gPSBHTF9GQUxTRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXNbM10g
PSBHTF9GQUxTRTsKKyAgICAgICAgICAgIGJvb2xQYXJhbXMgKz0gNDsKKyAgICAgICAgICAgIHYg
Kz0gMjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFy
eTo6c2V0VW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xp
bnQgKnYpCit7CisgICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBsb2NhdGlvbiA+PSAoaW50KW1Vbmlm
b3JtSW5kZXguc2l6ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSBtVW5pZm9ybXNbbVVuaWZvcm1JbmRleFtsb2Nh
dGlvbl0uaW5kZXhdOworICAgIHRhcmdldFVuaWZvcm0tPmRpcnR5ID0gdHJ1ZTsKKworICAgIGlu
dCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVtZW50Q291bnQoKTsKKworICAgIGlm
IChlbGVtZW50Q291bnQgPT0gMSAmJiBjb3VudCA+IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsg
Ly8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBhIG5vbi1hcnJheSB1bmlmb3JtIGlz
IGFuIElOVkFMSURfT1BFUkFUSU9OCisKKyAgICBjb3VudCA9IHN0ZDo6bWluKGVsZW1lbnRDb3Vu
dCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCwgY291bnQpOworCisgICAg
aWYgKHRhcmdldFVuaWZvcm0tPnR5cGUgPT0gR0xfSU5UX1ZFQzMpCisgICAgeworICAgICAgICBH
TGludCAqdGFyZ2V0ID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRl
eFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXRbMF0gPSB2WzBdOworICAg
ICAgICAgICAgdGFyZ2V0WzFdID0gdlsxXTsKKyAgICAgICAgICAgIHRhcmdldFsyXSA9IHZbMl07
CisgICAgICAgICAgICB0YXJnZXRbM10gPSAwOworICAgICAgICAgICAgdGFyZ2V0ICs9IDQ7Cisg
ICAgICAgICAgICB2ICs9IDM7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAodGFyZ2V0
VW5pZm9ybS0+dHlwZSA9PSBHTF9CT09MX1ZFQzMpCisgICAgeworICAgICAgICBHTGludCAqYm9v
bFBhcmFtcyA9IChHTGludCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9j
YXRpb25dLmVsZW1lbnQgKiA0OworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7
IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgYm9vbFBhcmFtc1swXSA9ICh2WzBdID09IDAp
ID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFtc1sxXSA9ICh2WzFd
ID09IDApID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFtc1syXSA9
ICh2WzJdID09IDApID8gR0xfRkFMU0UgOiBHTF9UUlVFOworICAgICAgICAgICAgYm9vbFBhcmFt
c1szXSA9IEdMX0ZBTFNFOworICAgICAgICAgICAgYm9vbFBhcmFtcyArPSA0OworICAgICAgICAg
ICAgdiArPSAzOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm9ncmFt
QmluYXJ5OjpzZXRVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGludCAqdikKK3sKKyAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0aW9uID49IChpbnQp
bVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4
W2xvY2F0aW9uXS5pbmRleF07CisgICAgdGFyZ2V0VW5pZm9ybS0+ZGlydHkgPSB0cnVlOworCisg
ICAgaW50IGVsZW1lbnRDb3VudCA9IHRhcmdldFVuaWZvcm0tPmVsZW1lbnRDb3VudCgpOworCisg
ICAgaWYgKGVsZW1lbnRDb3VudCA9PSAxICYmIGNvdW50ID4gMSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFycmF5IHRvIGEgbm9uLWFycmF5IHVuaWZv
cm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KKworICAgIGNvdW50ID0gc3RkOjptaW4oZWxlbWVu
dENvdW50IC0gKGludCltVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBjb3VudCk7CisK
KyAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSBHTF9JTlRfVkVDNCkKKyAgICB7CisgICAg
ICAgIEdMaW50ICp0YXJnZXQgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9y
bUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHRhcmdldFswXSA9IHZbMF07
CisgICAgICAgICAgICB0YXJnZXRbMV0gPSB2WzFdOworICAgICAgICAgICAgdGFyZ2V0WzJdID0g
dlsyXTsKKyAgICAgICAgICAgIHRhcmdldFszXSA9IHZbM107CisgICAgICAgICAgICB0YXJnZXQg
Kz0gNDsKKyAgICAgICAgICAgIHYgKz0gNDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlm
ICh0YXJnZXRVbmlmb3JtLT50eXBlID09IEdMX0JPT0xfVkVDNCkKKyAgICB7CisgICAgICAgIEdM
aW50ICpib29sUGFyYW1zID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1J
bmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBib29sUGFyYW1zWzBdID0gKHZb
MF0gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFyYW1zWzFd
ID0gKHZbMV0gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBib29sUGFy
YW1zWzJdID0gKHZbMl0gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAgICAgICBi
b29sUGFyYW1zWzNdID0gKHZbM10gPT0gMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUU7CisgICAgICAg
ICAgICBib29sUGFyYW1zICs9IDQ7CisgICAgICAgICAgICB2ICs9IDQ7CisgICAgICAgIH0KKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIFByb2dyYW1CaW5hcnk6OmdldFVuaWZvcm1mdihHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSAqYnVmU2l6ZSwgR0xmbG9hdCAqcGFyYW1zKQoreworICAgIGlm
IChsb2NhdGlvbiA8IDAgfHwgbG9jYXRpb24gPj0gKGludCltVW5pZm9ybUluZGV4LnNpemUoKSkK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBVbmlmb3JtICp0YXJn
ZXRVbmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmluZGV4XTsKKwor
ICAgIC8vIHNpemVkIHF1ZXJpZXMgLS0gZW5zdXJlIHRoZSBwcm92aWRlZCBidWZmZXIgaXMgbGFy
Z2UgZW5vdWdoCisgICAgaWYgKGJ1ZlNpemUpCisgICAgeworICAgICAgICBpbnQgcmVxdWlyZWRC
eXRlcyA9IFVuaWZvcm1FeHRlcm5hbFNpemUodGFyZ2V0VW5pZm9ybS0+dHlwZSk7CisgICAgICAg
IGlmICgqYnVmU2l6ZSA8IHJlcXVpcmVkQnl0ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3aXRjaCAodGFyZ2V0VW5pZm9y
bS0+dHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6CisgICAgICAgIHRyYW5z
cG9zZU1hdHJpeDxHTGZsb2F0LDIsMiw0LDI+KHBhcmFtcywgKEdMZmxvYXQqKXRhcmdldFVuaWZv
cm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogOCk7CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOgorICAgICAgICB0cmFuc3Bvc2VNYXRy
aXg8R0xmbG9hdCwzLDMsNCwzPihwYXJhbXMsIChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRh
ICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDEyKTsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgIHRyYW5zcG9zZU1hdHJpeDxHTGZs
b2F0LDQsNCw0LDQ+KHBhcmFtcywgKEdMZmxvYXQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5p
Zm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogMTYpOworICAgICAgICBicmVhazsKKyAgICAg
IGRlZmF1bHQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBzaXplID0gVW5p
Zm9ybUNvbXBvbmVudENvdW50KHRhcmdldFVuaWZvcm0tPnR5cGUpOworCisgICAgICAgICAgICBz
d2l0Y2ggKFVuaWZvcm1Db21wb25lbnRUeXBlKHRhcmdldFVuaWZvcm0tPnR5cGUpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0JPT0w6CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBHTGludCAqYm9vbFBhcmFtcyA9IChHTGludCopdGFyZ2V0VW5p
Zm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OworCisgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbaV0g
PSAoYm9vbFBhcmFtc1tpXSA9PSBHTF9GQUxTRSkgPyAwLjBmIDogMS4wZjsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgICAgICBtZW1jcHkocGFyYW1z
LCB0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAq
IDQgKiBzaXplb2YoR0xmbG9hdCksCisgICAgICAgICAgICAgICAgICAgICAgIHNpemUgKiBzaXpl
b2YoR0xmbG9hdCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IEdMX0lOVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEdMaW50ICpp
bnRQYXJhbXMgPSAoR0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xv
Y2F0aW9uXS5lbGVtZW50ICogNDsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gKGZsb2F0KWludFBhcmFtc1tpXTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dyYW1C
aW5hcnk6OmdldFVuaWZvcm1pdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSAqYnVmU2l6ZSwgR0xp
bnQgKnBhcmFtcykKK3sKKyAgICBpZiAobG9jYXRpb24gPCAwIHx8IGxvY2F0aW9uID49IChpbnQp
bVVuaWZvcm1JbmRleC5zaXplKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1Vbmlmb3Jtc1ttVW5pZm9ybUluZGV4
W2xvY2F0aW9uXS5pbmRleF07CisKKyAgICAvLyBzaXplZCBxdWVyaWVzIC0tIGVuc3VyZSB0aGUg
cHJvdmlkZWQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaAorICAgIGlmIChidWZTaXplKQorICAgIHsK
KyAgICAgICAgaW50IHJlcXVpcmVkQnl0ZXMgPSBVbmlmb3JtRXh0ZXJuYWxTaXplKHRhcmdldFVu
aWZvcm0tPnR5cGUpOworICAgICAgICBpZiAoKmJ1ZlNpemUgPCByZXF1aXJlZEJ5dGVzKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBzd2l0Y2ggKHRhcmdldFVuaWZvcm0tPnR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9GTE9B
VF9NQVQyOgorICAgICAgICB0cmFuc3Bvc2VNYXRyaXg8R0xpbnQsMiwyLDQsMj4ocGFyYW1zLCAo
R0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVs
ZW1lbnQgKiA4KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6Cisg
ICAgICAgIHRyYW5zcG9zZU1hdHJpeDxHTGludCwzLDMsNCwzPihwYXJhbXMsIChHTGZsb2F0Kil0
YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDEy
KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgIHRy
YW5zcG9zZU1hdHJpeDxHTGludCw0LDQsNCw0PihwYXJhbXMsIChHTGZsb2F0Kil0YXJnZXRVbmlm
b3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDE2KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgc2l6ZSA9IFZhcmlhYmxlQ29sdW1uQ291bnQodGFyZ2V0VW5pZm9ybS0+dHlwZSk7CisK
KyAgICAgICAgICAgIHN3aXRjaCAoVW5pZm9ybUNvbXBvbmVudFR5cGUodGFyZ2V0VW5pZm9ybS0+
dHlwZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfQk9PTDoKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEdMaW50ICpib29sUGFyYW1zID0gKEdM
aW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVu
dCAqIDQ7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBzaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtc1tpXSA9IGJvb2xQYXJhbXNbaV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0ICpmbG9hdFBhcmFtcyA9IChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZv
cm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisKKyAgICAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IChHTGludClmbG9hdFBhcmFt
c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICAg
ICAgbWVtY3B5KHBhcmFtcywgdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9j
YXRpb25dLmVsZW1lbnQgKiA0ICogc2l6ZW9mKEdMaW50KSwKKyAgICAgICAgICAgICAgICAgICAg
c2l6ZSAqIHNpemVvZihHTGludCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUHJvZ3JhbUJpbmFyeTo6ZGlydHlB
bGxVbmlmb3JtcygpCit7CisgICAgdW5zaWduZWQgaW50IG51bVVuaWZvcm1zID0gbVVuaWZvcm1z
LnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpbmRleCA9IDA7IGluZGV4IDwgbnVtVW5p
Zm9ybXM7IGluZGV4KyspCisgICAgeworICAgICAgICBtVW5pZm9ybXNbaW5kZXhdLT5kaXJ0eSA9
IHRydWU7CisgICAgfQorfQorCisvLyBBcHBsaWVzIGFsbCB0aGUgdW5pZm9ybXMgc2V0IGZvciB0
aGlzIHByb2dyYW0gb2JqZWN0IHRvIHRoZSByZW5kZXJlcgordm9pZCBQcm9ncmFtQmluYXJ5Ojph
cHBseVVuaWZvcm1zKCkKK3sKKyAgICAvLyBSZXRyaWV2ZSBzYW1wbGVyIHVuaWZvcm0gdmFsdWVz
CisgICAgZm9yIChzdGQ6OnZlY3RvcjxVbmlmb3JtKj46Oml0ZXJhdG9yIHViID0gbVVuaWZvcm1z
LmJlZ2luKCksIHVlID0gbVVuaWZvcm1zLmVuZCgpOyB1YiAhPSB1ZTsgKyt1YikKKyAgICB7Cisg
ICAgICAgIFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSAqdWI7CisKKyAgICAgICAgaWYgKHRhcmdl
dFVuaWZvcm0tPmRpcnR5KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGFyZ2V0VW5pZm9y
bS0+dHlwZSA9PSBHTF9TQU1QTEVSXzJEIHx8IAorICAgICAgICAgICAgICAgIHRhcmdldFVuaWZv
cm0tPnR5cGUgPT0gR0xfU0FNUExFUl9DVUJFKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGludCBjb3VudCA9IHRhcmdldFVuaWZvcm0tPmVsZW1lbnRDb3VudCgpOworICAgICAgICAg
ICAgICAgIEdMaW50ICgqdilbNF0gPSAoR0xpbnQoKilbNF0pdGFyZ2V0VW5pZm9ybS0+ZGF0YTsK
KworICAgICAgICAgICAgICAgIGlmICh0YXJnZXRVbmlmb3JtLT5wc1JlZ2lzdGVySW5kZXggPj0g
MCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBm
aXJzdEluZGV4ID0gdGFyZ2V0VW5pZm9ybS0+cHNSZWdpc3RlckluZGV4OworCisgICAgICAgICAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZXJJbmRl
eCA9IGZpcnN0SW5kZXggKyBpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2FtcGxl
ckluZGV4IDwgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMpCisgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1TYW1wbGVyc1BTW3NhbXBs
ZXJJbmRleF0uYWN0aXZlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2FtcGxlcnNQ
U1tzYW1wbGVySW5kZXhdLmxvZ2ljYWxUZXh0dXJlVW5pdCA9IHZbaV1bMF07CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0VW5pZm9ybS0+dnNSZWdpc3RlckluZGV4ID49
IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
Zmlyc3RJbmRleCA9IHRhcmdldFVuaWZvcm0tPnZzUmVnaXN0ZXJJbmRleDsKKworICAgICAgICAg
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVySW5k
ZXggPSBmaXJzdEluZGV4ICsgaTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNhbXBs
ZXJJbmRleCA8IElNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUykK
KyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQobVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5hY3RpdmUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0ubG9naWNhbFRleHR1cmVVbml0
ID0gdltpXVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIG1SZW5kZXJlci0+YXBwbHlVbmlmb3Jtcyh0aGlzLCAmbVVuaWZvcm1zKTsKK30KKwor
Ly8gUGFja3MgdmFyeWluZ3MgaW50byBnZW5lcmljIHZhcnlpbmcgcmVnaXN0ZXJzLCB1c2luZyB0
aGUgYWxnb3JpdGhtIGZyb20gW09wZW5HTCBFUyBTaGFkaW5nIExhbmd1YWdlIDEuMDAgcmV2LiAx
N10gYXBwZW5kaXggQSBzZWN0aW9uIDcgcGFnZSAxMTEKKy8vIFJldHVybnMgdGhlIG51bWJlciBv
ZiB1c2VkIHZhcnlpbmcgcmVnaXN0ZXJzLCBvciAtMSBpZiB1bnN1Y2Nlc2Z1bAoraW50IFByb2dy
YW1CaW5hcnk6OnBhY2tWYXJ5aW5ncyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBWYXJ5aW5nICpw
YWNraW5nW11bNF0sIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlcikKK3sKKyAgICBjb25z
dCBpbnQgbWF4VmFyeWluZ1ZlY3RvcnMgPSBtUmVuZGVyZXItPmdldE1heFZhcnlpbmdWZWN0b3Jz
KCk7CisKKyAgICBmcmFnbWVudFNoYWRlci0+cmVzZXRWYXJ5aW5nc1JlZ2lzdGVyQXNzaWdubWVu
dCgpOworCisgICAgZm9yIChWYXJ5aW5nTGlzdDo6aXRlcmF0b3IgdmFyeWluZyA9IGZyYWdtZW50
U2hhZGVyLT5tVmFyeWluZ3MuYmVnaW4oKTsgdmFyeWluZyAhPSBmcmFnbWVudFNoYWRlci0+bVZh
cnlpbmdzLmVuZCgpOyB2YXJ5aW5nKyspCisgICAgeworICAgICAgICBpbnQgbiA9IFZhcmlhYmxl
Um93Q291bnQodmFyeWluZy0+dHlwZSkgKiB2YXJ5aW5nLT5zaXplOworICAgICAgICBpbnQgbSA9
IFZhcmlhYmxlQ29sdW1uQ291bnQodmFyeWluZy0+dHlwZSk7CisgICAgICAgIGJvb2wgc3VjY2Vz
cyA9IGZhbHNlOworCisgICAgICAgIGlmIChtID09IDIgfHwgbSA9PSAzIHx8IG0gPT0gNCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgciA9IDA7IHIgPD0gbWF4VmFyeWluZ1ZlY3Rv
cnMgLSBuICYmICFzdWNjZXNzOyByKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ym9vbCBhdmFpbGFibGUgPSB0cnVlOworCisgICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7
IHkgPCBuICYmIGF2YWlsYWJsZTsgeSsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBtICYmIGF2YWlsYWJsZTsgeCsrKQorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFja2luZ1tyICsg
eV1beF0pCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXZhaWxhYmxlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBp
ZiAoYXZhaWxhYmxlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdmFy
eWluZy0+cmVnID0gcjsKKyAgICAgICAgICAgICAgICAgICAgdmFyeWluZy0+Y29sID0gMDsKKwor
ICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IG47IHkrKykKKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHgg
PCBtOyB4KyspCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFja2luZ1tyICsgeV1beF0gPSAmKnZhcnlpbmc7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBz
dWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICghc3VjY2VzcyAmJiBtID09IDIpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZm9yIChpbnQgciA9IG1heFZhcnlpbmdWZWN0b3JzIC0gbjsgciA+PSAwICYmICFzdWNj
ZXNzOyByLS0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBib29sIGF2
YWlsYWJsZSA9IHRydWU7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkg
PCBuICYmIGF2YWlsYWJsZTsgeSsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMjsgeCA8IDQgJiYgYXZhaWxhYmxlOyB4KyspCisg
ICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHBhY2tpbmdbciArIHldW3hdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJsZSkKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyeWluZy0+cmVnID0g
cjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcnlpbmctPmNvbCA9IDI7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbjsgeSsrKQorICAgICAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAy
OyB4IDwgNDsgeCsrKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFja2luZ1tyICsgeV1beF0gPSAmKnZhcnlpbmc7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBlbHNlIGlmIChtID09IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBzcGFjZVs0XSA9
IHswfTsKKworICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBtYXhWYXJ5aW5nVmVjdG9y
czsgeSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4
IDwgNDsgeCsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3BhY2Vb
eF0gKz0gcGFja2luZ1t5XVt4XSA/IDAgOiAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaW50IGNvbHVtbiA9IDA7CisKKyAgICAgICAgICAgIGZvciAo
aW50IHggPSAwOyB4IDwgNDsgeCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
IChzcGFjZVt4XSA+PSBuICYmIHNwYWNlW3hdIDwgc3BhY2VbY29sdW1uXSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IHg7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc3BhY2VbY29sdW1uXSA+PSBuKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoaW50IHIgPSAwOyByIDwgbWF4VmFy
eWluZ1ZlY3RvcnM7IHIrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IGlmICghcGFja2luZ1tyXVtjb2x1bW5dKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXJ5aW5nLT5yZWcgPSByOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgKGludCB5ID0gcjsgeSA8IHIgKyBuOyB5KyspCisgICAgICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2luZ1t5XVtjb2x1bW5dID0g
Jip2YXJ5aW5nOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIHZhcnlpbmctPmNvbCA9IGNvbHVtbjsKKworICAgICAgICAgICAg
ICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UgVU5SRUFDSEFCTEUoKTsKKworICAgICAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJDb3VsZCBub3QgcGFjayB2YXJ5aW5nICVzIiwgdmFy
eWluZy0+bmFtZS5jX3N0cigpKTsKKworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgdXNlZCByZWdpc3RlcnMKKyAg
ICBpbnQgcmVnaXN0ZXJzID0gMDsKKworICAgIGZvciAoaW50IHIgPSAwOyByIDwgbWF4VmFyeWlu
Z1ZlY3RvcnM7IHIrKykKKyAgICB7CisgICAgICAgIGlmIChwYWNraW5nW3JdWzBdIHx8IHBhY2tp
bmdbcl1bMV0gfHwgcGFja2luZ1tyXVsyXSB8fCBwYWNraW5nW3JdWzNdKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZWdpc3RlcnMrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBy
ZWdpc3RlcnM7Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6bGlua1ZhcnlpbmdzKEluZm9Mb2cg
JmluZm9Mb2csIGludCByZWdpc3RlcnMsIGNvbnN0IFZhcnlpbmcgKnBhY2tpbmdbXVs0XSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nJiBwaXhlbEhMU0wsIHN0
ZDo6c3RyaW5nJiB2ZXJ0ZXhITFNMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBWZXJ0ZXhTaGFkZXIgKnZlcnRleFNoYWRl
cikKK3sKKyAgICBpZiAocGl4ZWxITFNMLmVtcHR5KCkgfHwgdmVydGV4SExTTC5lbXB0eSgpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGJvb2wgdXNlc01SVCA9
IGZyYWdtZW50U2hhZGVyLT5tVXNlc011bHRpcGxlUmVuZGVyVGFyZ2V0czsKKyAgICBib29sIHVz
ZXNGcmFnQ29sb3IgPSBmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnQ29sb3I7CisgICAgYm9vbCB1
c2VzRnJhZ0RhdGEgPSBmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnRGF0YTsKKyAgICBpZiAodXNl
c0ZyYWdDb2xvciAmJiB1c2VzRnJhZ0RhdGEpCisgICAgeworICAgICAgICBpbmZvTG9nLmFwcGVu
ZCgiQ2Fubm90IHVzZSBib3RoIGdsX0ZyYWdDb2xvciBhbmQgZ2xfRnJhZ0RhdGEgaW4gdGhlIHNh
bWUgZnJhZ21lbnQgc2hhZGVyLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgLy8gV3JpdGUgdGhlIEhMU0wgaW5wdXQvb3V0cHV0IGRlY2xhcmF0aW9ucworICAgIGNvbnN0
IGludCBzaGFkZXJNb2RlbCA9IG1SZW5kZXJlci0+Z2V0TWFqb3JTaGFkZXJNb2RlbCgpOworICAg
IGNvbnN0IGludCBtYXhWYXJ5aW5nVmVjdG9ycyA9IG1SZW5kZXJlci0+Z2V0TWF4VmFyeWluZ1Zl
Y3RvcnMoKTsKKworICAgIGNvbnN0IGludCByZWdpc3RlcnNOZWVkZWQgPSByZWdpc3RlcnMgKyAo
ZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nvb3JkID8gMSA6IDApICsgKGZyYWdtZW50U2hhZGVy
LT5tVXNlc1BvaW50Q29vcmQgPyAxIDogMCk7CisKKyAgICAvLyBUaGUgb3V0cHV0IGNvbG9yIGlz
IGJyb2FkY2FzdCB0byBhbGwgZW5hYmxlZCBkcmF3IGJ1ZmZlcnMgd2hlbiB3cml0aW5nIHRvIGds
X0ZyYWdDb2xvciAKKyAgICBjb25zdCBib29sIGJyb2FkY2FzdCA9IGZyYWdtZW50U2hhZGVyLT5t
VXNlc0ZyYWdDb2xvcjsKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgbnVtUmVuZGVyVGFyZ2V0cyA9
IChicm9hZGNhc3QgfHwgdXNlc01SVCA/IG1SZW5kZXJlci0+Z2V0TWF4UmVuZGVyVGFyZ2V0cygp
IDogMSk7CisKKyAgICBpZiAocmVnaXN0ZXJzTmVlZGVkID4gbWF4VmFyeWluZ1ZlY3RvcnMpCisg
ICAgeworICAgICAgICBpbmZvTG9nLmFwcGVuZCgiTm8gdmFyeWluZyByZWdpc3RlcnMgbGVmdCB0
byBzdXBwb3J0IGdsX0ZyYWdDb29yZC9nbF9Qb2ludENvb3JkIik7CisKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHZlcnRleFNoYWRlci0+cmVzZXRWYXJ5aW5nc1JlZ2lzdGVy
QXNzaWdubWVudCgpOworCisgICAgZm9yIChWYXJ5aW5nTGlzdDo6aXRlcmF0b3IgaW5wdXQgPSBm
cmFnbWVudFNoYWRlci0+bVZhcnlpbmdzLmJlZ2luKCk7IGlucHV0ICE9IGZyYWdtZW50U2hhZGVy
LT5tVmFyeWluZ3MuZW5kKCk7IGlucHV0KyspCisgICAgeworICAgICAgICBib29sIG1hdGNoZWQg
PSBmYWxzZTsKKworICAgICAgICBmb3IgKFZhcnlpbmdMaXN0OjppdGVyYXRvciBvdXRwdXQgPSB2
ZXJ0ZXhTaGFkZXItPm1WYXJ5aW5ncy5iZWdpbigpOyBvdXRwdXQgIT0gdmVydGV4U2hhZGVyLT5t
VmFyeWluZ3MuZW5kKCk7IG91dHB1dCsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAob3V0
cHV0LT5uYW1lID09IGlucHV0LT5uYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGlmIChvdXRwdXQtPnR5cGUgIT0gaW5wdXQtPnR5cGUgfHwgb3V0cHV0LT5zaXplICE9IGlucHV0
LT5zaXplKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW5mb0xvZy5h
cHBlbmQoIlR5cGUgb2YgdmVydGV4IHZhcnlpbmcgJXMgZG9lcyBub3QgbWF0Y2ggdGhhdCBvZiB0
aGUgZnJhZ21lbnQgdmFyeWluZyIsIG91dHB1dC0+bmFtZS5jX3N0cigpKTsKKworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgb3V0cHV0LT5yZWcgPSBpbnB1dC0+cmVnOworICAgICAgICAgICAgICAgIG91dHB1dC0+
Y29sID0gaW5wdXQtPmNvbDsKKworICAgICAgICAgICAgICAgIG1hdGNoZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
aWYgKCFtYXRjaGVkKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiRnJh
Z21lbnQgdmFyeWluZyAlcyBkb2VzIG5vdCBtYXRjaCBhbnkgdmVydGV4IHZhcnlpbmciLCBpbnB1
dC0+bmFtZS5jX3N0cigpKTsKKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfQorCisgICAgbVVzZXNQb2ludFNpemUgPSB2ZXJ0ZXhTaGFkZXItPm1Vc2VzUG9pbnRT
aXplOworICAgIHN0ZDo6c3RyaW5nIHZhcnlpbmdTZW1hbnRpYyA9IChtVXNlc1BvaW50U2l6ZSAm
JiBzaGFkZXJNb2RlbCA9PSAzKSA/ICJDT0xPUiIgOiAiVEVYQ09PUkQiOworICAgIHN0ZDo6c3Ry
aW5nIHRhcmdldFNlbWFudGljID0gKHNoYWRlck1vZGVsID49IDQpID8gIlNWX1RhcmdldCIgOiAi
Q09MT1IiOworICAgIHN0ZDo6c3RyaW5nIHBvc2l0aW9uU2VtYW50aWMgPSAoc2hhZGVyTW9kZWwg
Pj0gNCkgPyAiU1ZfUG9zaXRpb24iIDogIlBPU0lUSU9OIjsKKyAgICBzdGQ6OnN0cmluZyBkZXB0
aFNlbWFudGljID0gKHNoYWRlck1vZGVsID49IDQpID8gIlNWX0RlcHRoIiA6ICJERVBUSCI7CisK
KyAgICAvLyBzcGVjaWFsIHZhcnlpbmdzIHRoYXQgdXNlIHJlc2VydmVkIHJlZ2lzdGVycworICAg
IGludCByZXNlcnZlZFJlZ2lzdGVySW5kZXggPSByZWdpc3RlcnM7CisgICAgc3RkOjpzdHJpbmcg
ZnJhZ0Nvb3JkU2VtYW50aWM7CisgICAgc3RkOjpzdHJpbmcgcG9pbnRDb29yZFNlbWFudGljOwor
CisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0ZyYWdDb29yZCkKKyAgICB7CisgICAgICAg
IGZyYWdDb29yZFNlbWFudGljID0gdmFyeWluZ1NlbWFudGljICsgc3RyKHJlc2VydmVkUmVnaXN0
ZXJJbmRleCsrKTsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzUG9pbnRD
b29yZCkKKyAgICB7CisgICAgICAgIC8vIFNoYWRlciBtb2RlbCAzIHVzZXMgYSBzcGVjaWFsIFRF
WENPT1JEIHNlbWFudGljIGZvciBwb2ludCBzcHJpdGUgdGV4Y29vcmRzLgorICAgICAgICAvLyBJ
biBEWDExIHdlIGNvbXB1dGUgdGhpcyBpbiB0aGUgR1MuCisgICAgICAgIGlmIChzaGFkZXJNb2Rl
bCA9PSAzKQorICAgICAgICB7CisgICAgICAgICAgICBwb2ludENvb3JkU2VtYW50aWMgPSAiVEVY
Q09PUkQwIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzaGFkZXJNb2RlbCA+PSA0KQor
ICAgICAgICB7CisgICAgICAgICAgICBwb2ludENvb3JkU2VtYW50aWMgPSB2YXJ5aW5nU2VtYW50
aWMgKyBzdHIocmVzZXJ2ZWRSZWdpc3RlckluZGV4KyspOyAKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHZlcnRleEhMU0wgKz0gInN0cnVjdCBWU19JTlBVVFxuIgorICAgICAgICAgICAgICAgICAg
IntcbiI7CisKKyAgICBpbnQgc2VtYW50aWNJbmRleCA9IDA7CisgICAgZm9yIChBdHRyaWJ1dGVB
cnJheTo6aXRlcmF0b3IgYXR0cmlidXRlID0gdmVydGV4U2hhZGVyLT5tQXR0cmlidXRlcy5iZWdp
bigpOyBhdHRyaWJ1dGUgIT0gdmVydGV4U2hhZGVyLT5tQXR0cmlidXRlcy5lbmQoKTsgYXR0cmli
dXRlKyspCisgICAgeworICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0ZS0+dHlwZSkKKyAgICAgICAg
eworICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgdmVydGV4SExTTCArPSAiICAgIGZsb2F0
ICI7ICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjogdmVydGV4SExTTCAr
PSAiICAgIGZsb2F0MiAiOyAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMzog
dmVydGV4SExTTCArPSAiICAgIGZsb2F0MyAiOyAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xf
RkxPQVRfVkVDNDogdmVydGV4SExTTCArPSAiICAgIGZsb2F0NCAiOyAgIGJyZWFrOworICAgICAg
ICAgIGNhc2UgR0xfRkxPQVRfTUFUMjogdmVydGV4SExTTCArPSAiICAgIGZsb2F0MngyICI7IGJy
ZWFrOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzogdmVydGV4SExTTCArPSAiICAgIGZs
b2F0M3gzICI7IGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNDogdmVydGV4SExT
TCArPSAiICAgIGZsb2F0NHg0ICI7IGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6ICBVTlJFQUNI
QUJMRSgpOworICAgICAgICB9CisKKyAgICAgICAgdmVydGV4SExTTCArPSBkZWNvcmF0ZUF0dHJp
YnV0ZShhdHRyaWJ1dGUtPm5hbWUpICsgIiA6IFRFWENPT1JEIiArIHN0cihzZW1hbnRpY0luZGV4
KSArICI7XG4iOworCisgICAgICAgIHNlbWFudGljSW5kZXggKz0gVmFyaWFibGVSb3dDb3VudChh
dHRyaWJ1dGUtPnR5cGUpOworICAgIH0KKworICAgIHZlcnRleEhMU0wgKz0gIn07XG4iCisgICAg
ICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAic3RydWN0IFZTX09VVFBVVFxu
IgorICAgICAgICAgICAgICAgICAgIntcbiI7CisKKyAgICBpZiAoc2hhZGVyTW9kZWwgPCA0KQor
ICAgIHsKKyAgICAgICAgdmVydGV4SExTTCArPSAiICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6ICIg
KyBwb3NpdGlvblNlbWFudGljICsgIjtcbiI7CisgICAgfQorCisgICAgZm9yIChpbnQgciA9IDA7
IHIgPCByZWdpc3RlcnM7IHIrKykKKyAgICB7CisgICAgICAgIGludCByZWdpc3RlclNpemUgPSBw
YWNraW5nW3JdWzNdID8gNCA6IChwYWNraW5nW3JdWzJdID8gMyA6IChwYWNraW5nW3JdWzFdID8g
MiA6IDEpKTsKKworICAgICAgICB2ZXJ0ZXhITFNMICs9ICIgICAgZmxvYXQiICsgc3RyKHJlZ2lz
dGVyU2l6ZSkgKyAiIHYiICsgc3RyKHIpICsgIiA6ICIgKyB2YXJ5aW5nU2VtYW50aWMgKyBzdHIo
cikgKyAiO1xuIjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nv
b3JkKQorICAgIHsKKyAgICAgICAgdmVydGV4SExTTCArPSAiICAgIGZsb2F0NCBnbF9GcmFnQ29v
cmQgOiAiICsgZnJhZ0Nvb3JkU2VtYW50aWMgKyAiO1xuIjsKKyAgICB9CisKKyAgICBpZiAodmVy
dGV4U2hhZGVyLT5tVXNlc1BvaW50U2l6ZSAmJiBzaGFkZXJNb2RlbCA+PSAzKQorICAgIHsKKyAg
ICAgICAgdmVydGV4SExTTCArPSAiICAgIGZsb2F0IGdsX1BvaW50U2l6ZSA6IFBTSVpFO1xuIjsK
KyAgICB9CisKKyAgICBpZiAoc2hhZGVyTW9kZWwgPj0gNCkKKyAgICB7CisgICAgICAgIHZlcnRl
eEhMU0wgKz0gIiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiAiICsgcG9zaXRpb25TZW1hbnRpYyAr
ICI7XG4iOworICAgIH0KKworICAgIHZlcnRleEhMU0wgKz0gIn07XG4iCisgICAgICAgICAgICAg
ICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAiVlNfT1VUUFVUIG1haW4oVlNfSU5QVVQgaW5w
dXQpXG4iCisgICAgICAgICAgICAgICAgICAie1xuIjsKKworICAgIGZvciAoQXR0cmlidXRlQXJy
YXk6Oml0ZXJhdG9yIGF0dHJpYnV0ZSA9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuYmVnaW4o
KTsgYXR0cmlidXRlICE9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0
ZSsrKQorICAgIHsKKyAgICAgICAgdmVydGV4SExTTCArPSAiICAgICIgKyBkZWNvcmF0ZUF0dHJp
YnV0ZShhdHRyaWJ1dGUtPm5hbWUpICsgIiA9ICI7CisKKyAgICAgICAgaWYgKFZhcmlhYmxlUm93
Q291bnQoYXR0cmlidXRlLT50eXBlKSA+IDEpICAgLy8gTWF0cml4CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZlcnRleEhMU0wgKz0gInRyYW5zcG9zZSI7CisgICAgICAgIH0KKworICAgICAgICB2
ZXJ0ZXhITFNMICs9ICIoaW5wdXQuIiArIGRlY29yYXRlQXR0cmlidXRlKGF0dHJpYnV0ZS0+bmFt
ZSkgKyAiKTtcbiI7CisgICAgfQorCisgICAgaWYgKHNoYWRlck1vZGVsID49IDQpCisgICAgewor
ICAgICAgICB2ZXJ0ZXhITFNMICs9ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIGds
X21haW4oKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgIiAgICBWU19PVVRQVVQgb3V0cHV0O1xuIgorICAgICAgICAgICAgICAgICAgICAgICIg
ICAgb3V0cHV0LmdsX1Bvc2l0aW9uLnggPSBnbF9Qb3NpdGlvbi54O1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICIgICAgb3V0cHV0LmdsX1Bvc2l0aW9uLnkgPSAtZ2xfUG9zaXRpb24ueTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAiICAgIG91dHB1dC5nbF9Qb3NpdGlvbi56ID0gKGdsX1Bv
c2l0aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAiICAgIG91dHB1dC5nbF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udztcbiI7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIHZlcnRleEhMU0wgKz0gIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICIgICAgZ2xfbWFpbigpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAiICAgIFZTX09VVFBVVCBvdXRwdXQ7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgIiAgICBvdXRwdXQuZ2xfUG9zaXRpb24ueCA9IGdsX1Bvc2l0aW9uLngg
KiBkeF9WaWV3QWRqdXN0LnogKyBkeF9WaWV3QWRqdXN0LnggKiBnbF9Qb3NpdGlvbi53O1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICIgICAgb3V0cHV0LmdsX1Bvc2l0aW9uLnkgPSAtKGdsX1Bv
c2l0aW9uLnkgKiBkeF9WaWV3QWRqdXN0LncgKyBkeF9WaWV3QWRqdXN0LnkgKiBnbF9Qb3NpdGlv
bi53KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIG91dHB1dC5nbF9Qb3NpdGlvbi56
ID0gKGdsX1Bvc2l0aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTtcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAiICAgIG91dHB1dC5nbF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udztcbiI7
CisgICAgfQorCisgICAgaWYgKHZlcnRleFNoYWRlci0+bVVzZXNQb2ludFNpemUgJiYgc2hhZGVy
TW9kZWwgPj0gMykKKyAgICB7CisgICAgICAgIHZlcnRleEhMU0wgKz0gIiAgICBvdXRwdXQuZ2xf
UG9pbnRTaXplID0gZ2xfUG9pbnRTaXplO1xuIjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRT
aGFkZXItPm1Vc2VzRnJhZ0Nvb3JkKQorICAgIHsKKyAgICAgICAgdmVydGV4SExTTCArPSAiICAg
IG91dHB1dC5nbF9GcmFnQ29vcmQgPSBnbF9Qb3NpdGlvbjtcbiI7CisgICAgfQorCisgICAgZm9y
IChWYXJ5aW5nTGlzdDo6aXRlcmF0b3IgdmFyeWluZyA9IHZlcnRleFNoYWRlci0+bVZhcnlpbmdz
LmJlZ2luKCk7IHZhcnlpbmcgIT0gdmVydGV4U2hhZGVyLT5tVmFyeWluZ3MuZW5kKCk7IHZhcnlp
bmcrKykKKyAgICB7CisgICAgICAgIGlmICh2YXJ5aW5nLT5yZWcgPj0gMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YXJ5aW5nLT5zaXplOyBpKyspCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50IHJvd3MgPSBWYXJpYWJsZVJvd0NvdW50KHZh
cnlpbmctPnR5cGUpOworCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCByb3dz
OyBqKyspCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpbnQgciA9IHZh
cnlpbmctPnJlZyArIGkgKiByb3dzICsgajsKKyAgICAgICAgICAgICAgICAgICAgdmVydGV4SExT
TCArPSAiICAgIG91dHB1dC52IiArIHN0cihyKTsKKworICAgICAgICAgICAgICAgICAgICBib29s
IHNoYXJlZFJlZ2lzdGVyID0gZmFsc2U7ICAgLy8gUmVnaXN0ZXIgdXNlZCBieSBtdWx0aXBsZSB2
YXJ5aW5ncworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZm9yIChp
bnQgeCA9IDA7IHggPCA0OyB4KyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChwYWNraW5nW3JdW3hdICYmIHBhY2tpbmdbcl1beF0gIT0gcGFja2lu
Z1tyXVswXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaGFyZWRSZWdpc3RlciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICBpZihzaGFyZWRSZWdpc3RlcikKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4SExTTCArPSAiLiI7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgNDsgeCsrKQorICAg
ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChw
YWNraW5nW3JdW3hdID09ICYqdmFyeWluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCh4KQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSAwOiB2ZXJ0ZXhITFNMICs9ICJ4IjsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAxOiB2ZXJ0ZXhITFNMICs9ICJ5IjsgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiB2ZXJ0ZXhITFNMICs9ICJ6IjsgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiB2ZXJ0ZXhITFNMICs9
ICJ3IjsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhITFNMICs9ICIgPSAi
ICsgdmFyeWluZy0+bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgIGlmICh2YXJ5aW5nLT5hcnJheSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdmVydGV4SExTTCArPSAiWyIgKyBzdHIoaSkgKyAiXSI7CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAocm93cyA+IDEpCisgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEhMU0wgKz0g
IlsiICsgc3RyKGopICsgIl0iOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhITFNMICs9ICI7XG4iOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZlcnRl
eEhMU0wgKz0gIlxuIgorICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gb3V0cHV0O1xuIgor
ICAgICAgICAgICAgICAgICAgIn1cbiI7CisKKyAgICBwaXhlbEhMU0wgKz0gInN0cnVjdCBQU19J
TlBVVFxuIgorICAgICAgICAgICAgICAgICAie1xuIjsKKyAgICAKKyAgICBmb3IgKFZhcnlpbmdM
aXN0OjppdGVyYXRvciB2YXJ5aW5nID0gZnJhZ21lbnRTaGFkZXItPm1WYXJ5aW5ncy5iZWdpbigp
OyB2YXJ5aW5nICE9IGZyYWdtZW50U2hhZGVyLT5tVmFyeWluZ3MuZW5kKCk7IHZhcnlpbmcrKykK
KyAgICB7CisgICAgICAgIGlmICh2YXJ5aW5nLT5yZWcgPj0gMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YXJ5aW5nLT5zaXplOyBpKyspCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaW50IHJvd3MgPSBWYXJpYWJsZVJvd0NvdW50KHZhcnlpbmct
PnR5cGUpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcm93czsgaisrKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgbiA9IHN0
cih2YXJ5aW5nLT5yZWcgKyBpICogcm93cyArIGopOworICAgICAgICAgICAgICAgICAgICBwaXhl
bEhMU0wgKz0gIiAgICBmbG9hdCIgKyBzdHIoVmFyaWFibGVDb2x1bW5Db3VudCh2YXJ5aW5nLT50
eXBlKSkgKyAiIHYiICsgbiArICIgOiAiICsgdmFyeWluZ1NlbWFudGljICsgbiArICI7XG4iOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNl
IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0Zy
YWdDb29yZCkKKyAgICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0NCBnbF9GcmFn
Q29vcmQgOiAiICsgZnJhZ0Nvb3JkU2VtYW50aWMgKyAiO1xuIjsKKyAgICB9CisgICAgICAgIAor
ICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNQb2ludENvb3JkICYmIHNoYWRlck1vZGVsID49
IDMpCisgICAgeworICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBmbG9hdDIgZ2xfUG9pbnRDb29y
ZCA6ICIgKyBwb2ludENvb3JkU2VtYW50aWMgKyAiO1xuIjsKKyAgICB9CisKKyAgICAvLyBNdXN0
IGNvbnN1bWUgdGhlIFBTSVpFIGVsZW1lbnQgaWYgdGhlIGdlb21ldHJ5IHNoYWRlciBpcyBub3Qg
YWN0aXZlCisgICAgLy8gV2Ugd29uJ3Qga25vdyBpZiB3ZSB1c2UgYSBHUyB1bnRpbCB3ZSBkcmF3
CisgICAgaWYgKHZlcnRleFNoYWRlci0+bVVzZXNQb2ludFNpemUgJiYgc2hhZGVyTW9kZWwgPj0g
NCkKKyAgICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0IGdsX1BvaW50U2l6ZSA6
IFBTSVpFO1xuIjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nv
b3JkKQorICAgIHsKKyAgICAgICAgaWYgKHNoYWRlck1vZGVsID49IDQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0NCBkeF9WUG9zIDogU1ZfUG9zaXRpb247
XG4iOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNoYWRlck1vZGVsID49IDMpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0MiBkeF9WUG9zIDogVlBP
UztcbiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwaXhlbEhMU0wgKz0gIn07XG4iCisgICAg
ICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgInN0cnVjdCBQU19PVVRQVVRcbiIK
KyAgICAgICAgICAgICAgICAgIntcbiI7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCByZW5kZXJU
YXJnZXRJbmRleCA9IDA7IHJlbmRlclRhcmdldEluZGV4IDwgbnVtUmVuZGVyVGFyZ2V0czsgcmVu
ZGVyVGFyZ2V0SW5kZXgrKykKKyAgICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGZsb2F0
NCBnbF9Db2xvciIgKyBzdHIocmVuZGVyVGFyZ2V0SW5kZXgpICsgIiA6ICIgKyB0YXJnZXRTZW1h
bnRpYyArIHN0cihyZW5kZXJUYXJnZXRJbmRleCkgKyAiO1xuIjsKKyAgICB9CisKKyAgICBpZiAo
ZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0RlcHRoKQorICAgIHsKKyAgICAgICAgcGl4ZWxITFNM
ICs9ICIgICAgZmxvYXQgZ2xfRGVwdGggOiAiICsgZGVwdGhTZW1hbnRpYyArICI7XG4iOworICAg
IH0KKworICAgIHBpeGVsSExTTCArPSAifTtcbiIKKyAgICAgICAgICAgICAgICAgIlxuIjsKKwor
ICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNGcm9udEZhY2luZykKKyAgICB7CisgICAgICAg
IGlmIChzaGFkZXJNb2RlbCA+PSA0KQorICAgICAgICB7CisgICAgICAgICAgICBwaXhlbEhMU0wg
Kz0gIlBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0LCBib29sIGlzRnJvbnRGYWNlIDogU1Zf
SXNGcm9udEZhY2UpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiI7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBwaXhlbEhMU0wgKz0gIlBT
X09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0LCBmbG9hdCB2RmFjZSA6IFZGQUNFKVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIHBpeGVsSExTTCArPSAiUFNfT1VUUFVUIG1haW4oUFNfSU5QVVQgaW5w
dXQpXG4iCisgICAgICAgICAgICAgICAgICAgICAie1xuIjsKKyAgICB9CisKKyAgICBpZiAoZnJh
Z21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nvb3JkKQorICAgIHsKKyAgICAgICAgcGl4ZWxITFNMICs9
ICIgICAgZmxvYXQgcmh3ID0gMS4wIC8gaW5wdXQuZ2xfRnJhZ0Nvb3JkLnc7XG4iOworICAgICAg
ICAKKyAgICAgICAgaWYgKHNoYWRlck1vZGVsID49IDQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHBpeGVsSExTTCArPSAiICAgIGdsX0ZyYWdDb29yZC54ID0gaW5wdXQuZHhfVlBvcy54O1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xfRnJhZ0Nvb3JkLnkgPSBpbnB1dC5keF9W
UG9zLnk7XG4iOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNoYWRlck1vZGVsID49IDMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHBpeGVsSExTTCArPSAiICAgIGdsX0ZyYWdDb29yZC54
ID0gaW5wdXQuZHhfVlBvcy54ICsgMC41O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgZ2xfRnJhZ0Nvb3JkLnkgPSBpbnB1dC5keF9WUG9zLnkgKyAwLjU7XG4iOworICAgICAgICB9
CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgLy8gZHhfVmlld0Nvb3JkcyBj
b250YWlucyB0aGUgdmlld3BvcnQgd2lkdGgvMiwgaGVpZ2h0LzIsIGNlbnRlci54IGFuZCBjZW50
ZXIueS4gU2VlIFJlbmRlcmVyOjpzZXRWaWV3cG9ydCgpCisgICAgICAgICAgICBwaXhlbEhMU0wg
Kz0gIiAgICBnbF9GcmFnQ29vcmQueCA9IChpbnB1dC5nbF9GcmFnQ29vcmQueCAqIHJodykgKiBk
eF9WaWV3Q29vcmRzLnggKyBkeF9WaWV3Q29vcmRzLno7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICBnbF9GcmFnQ29vcmQueSA9IChpbnB1dC5nbF9GcmFnQ29vcmQueSAqIHJodykg
KiBkeF9WaWV3Q29vcmRzLnkgKyBkeF9WaWV3Q29vcmRzLnc7XG4iOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBnbF9GcmFnQ29vcmQueiA9IChpbnB1dC5n
bF9GcmFnQ29vcmQueiAqIHJodykgKiBkeF9EZXB0aEZyb250LnggKyBkeF9EZXB0aEZyb250Lnk7
XG4iCisgICAgICAgICAgICAgICAgICAgICAiICAgIGdsX0ZyYWdDb29yZC53ID0gcmh3O1xuIjsK
KyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzUG9pbnRDb29yZCAmJiBzaGFk
ZXJNb2RlbCA+PSAzKQorICAgIHsKKyAgICAgICAgcGl4ZWxITFNMICs9ICIgICAgZ2xfUG9pbnRD
b29yZC54ID0gaW5wdXQuZ2xfUG9pbnRDb29yZC54O1xuIjsKKyAgICAgICAgcGl4ZWxITFNMICs9
ICIgICAgZ2xfUG9pbnRDb29yZC55ID0gMS4wIC0gaW5wdXQuZ2xfUG9pbnRDb29yZC55O1xuIjsK
KyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJvbnRGYWNpbmcpCisgICAg
eworICAgICAgICBpZiAoc2hhZGVyTW9kZWwgPD0gMykKKyAgICAgICAgeworICAgICAgICAgICAg
cGl4ZWxITFNMICs9ICIgICAgZ2xfRnJvbnRGYWNpbmcgPSAodkZhY2UgKiBkeF9EZXB0aEZyb250
LnogPj0gMC4wKTtcbiI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBnbF9Gcm9udEZhY2luZyA9IGlzRnJvbnRGYWNlO1xu
IjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoVmFyeWluZ0xpc3Q6Oml0ZXJhdG9yIHZh
cnlpbmcgPSBmcmFnbWVudFNoYWRlci0+bVZhcnlpbmdzLmJlZ2luKCk7IHZhcnlpbmcgIT0gZnJh
Z21lbnRTaGFkZXItPm1WYXJ5aW5ncy5lbmQoKTsgdmFyeWluZysrKQorICAgIHsKKyAgICAgICAg
aWYgKHZhcnlpbmctPnJlZyA+PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHZhcnlpbmctPnNpemU7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpbnQgcm93cyA9IFZhcmlhYmxlUm93Q291bnQodmFyeWluZy0+dHlwZSk7CisgICAgICAg
ICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCByb3dzOyBqKyspCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBuID0gc3RyKHZhcnlpbmctPnJlZyAr
IGkgKiByb3dzICsgaik7CisgICAgICAgICAgICAgICAgICAgIHBpeGVsSExTTCArPSAiICAgICIg
KyB2YXJ5aW5nLT5uYW1lOworCisgICAgICAgICAgICAgICAgICAgIGlmICh2YXJ5aW5nLT5hcnJh
eSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxI
TFNMICs9ICJbIiArIHN0cihpKSArICJdIjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIGlmIChyb3dzID4gMSkKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcGl4ZWxITFNMICs9ICJbIiArIHN0cihqKSArICJdIjsKKyAg
ICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoVmFyaWFi
bGVDb2x1bW5Db3VudCh2YXJ5aW5nLT50eXBlKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMTogcGl4ZWxITFNMICs9ICIgPSBpbnB1dC52IiArIG4g
KyAiLng7XG4iOyAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjogcGl4ZWxI
TFNMICs9ICIgPSBpbnB1dC52IiArIG4gKyAiLnh5O1xuIjsgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMzogcGl4ZWxITFNMICs9ICIgPSBpbnB1dC52IiArIG4gKyAiLnh5ejtc
biI7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogcGl4ZWxITFNMICs9ICIg
PSBpbnB1dC52IiArIG4gKyAiO1xuIjsgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBVTlJFQUNI
QUJMRSgpOworICAgIH0KKworICAgIHBpeGVsSExTTCArPSAiXG4iCisgICAgICAgICAgICAgICAg
ICIgICAgZ2xfbWFpbigpO1xuIgorICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAg
ICAgICIgICAgUFNfT1VUUFVUIG91dHB1dDtcbiI7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBy
ZW5kZXJUYXJnZXRJbmRleCA9IDA7IHJlbmRlclRhcmdldEluZGV4IDwgbnVtUmVuZGVyVGFyZ2V0
czsgcmVuZGVyVGFyZ2V0SW5kZXgrKykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBzb3Vy
Y2VDb2xvckluZGV4ID0gYnJvYWRjYXN0ID8gMCA6IHJlbmRlclRhcmdldEluZGV4OworCisgICAg
ICAgIHBpeGVsSExTTCArPSAiICAgIG91dHB1dC5nbF9Db2xvciIgKyBzdHIocmVuZGVyVGFyZ2V0
SW5kZXgpICsgIiA9IGdsX0NvbG9yWyIgKyBzdHIoc291cmNlQ29sb3JJbmRleCkgKyAiXTtcbiI7
CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0ZyYWdEZXB0aCkKKyAgICB7
CisgICAgICAgIHBpeGVsSExTTCArPSAiICAgIG91dHB1dC5nbF9EZXB0aCA9IGdsX0RlcHRoO1xu
IjsKKyAgICB9CisKKyAgICBwaXhlbEhMU0wgKz0gIlxuIgorICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiBvdXRwdXQ7XG4iCisgICAgICAgICAgICAgICAgICJ9XG4iOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6bG9hZChJbmZvTG9nICZpbmZvTG9nLCBj
b25zdCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKQoreworICAgIEJpbmFyeUlucHV0U3Ry
ZWFtIHN0cmVhbShiaW5hcnksIGxlbmd0aCk7CisKKyAgICBpbnQgZm9ybWF0ID0gMDsKKyAgICBz
dHJlYW0ucmVhZCgmZm9ybWF0KTsKKyAgICBpZiAoZm9ybWF0ICE9IEdMX1BST0dSQU1fQklOQVJZ
X0FOR0xFKQorICAgIHsKKyAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkludmFsaWQgcHJvZ3JhbSBi
aW5hcnkgZm9ybWF0LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaW50
IHZlcnNpb24gPSAwOworICAgIHN0cmVhbS5yZWFkKCZ2ZXJzaW9uKTsKKyAgICBpZiAodmVyc2lv
biAhPSBWRVJTSU9OX0RXT1JEKQorICAgIHsKKyAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkludmFs
aWQgcHJvZ3JhbSBiaW5hcnkgdmVyc2lvbi4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGludCBjb21waWxlRmxhZ3MgPSAwOworICAgIHN0cmVhbS5yZWFkKCZjb21waWxl
RmxhZ3MpOworICAgIGlmIChjb21waWxlRmxhZ3MgIT0gQU5HTEVfQ09NUElMRV9PUFRJTUlaQVRJ
T05fTEVWRUwpCisgICAgeworICAgICAgICBpbmZvTG9nLmFwcGVuZCgiTWlzbWF0Y2hlZCBjb21w
aWxhdGlvbiBmbGFncy4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyArK2kpCisgICAgeworICAgICAg
ICBzdHJlYW0ucmVhZCgmbUxpbmtlZEF0dHJpYnV0ZVtpXS50eXBlKTsKKyAgICAgICAgc3RkOjpz
dHJpbmcgbmFtZTsKKyAgICAgICAgc3RyZWFtLnJlYWQoJm5hbWUpOworICAgICAgICBtTGlua2Vk
QXR0cmlidXRlW2ldLm5hbWUgPSBuYW1lOworICAgICAgICBzdHJlYW0ucmVhZCgmbVNlbWFudGlj
SW5kZXhbaV0pOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgTUFY
X1RFWFRVUkVfSU1BR0VfVU5JVFM7ICsraSkKKyAgICB7CisgICAgICAgIHN0cmVhbS5yZWFkKCZt
U2FtcGxlcnNQU1tpXS5hY3RpdmUpOworICAgICAgICBzdHJlYW0ucmVhZCgmbVNhbXBsZXJzUFNb
aV0ubG9naWNhbFRleHR1cmVVbml0KTsKKyAgICAgICAgCisgICAgICAgIGludCB0ZXh0dXJlVHlw
ZTsKKyAgICAgICAgc3RyZWFtLnJlYWQoJnRleHR1cmVUeXBlKTsKKyAgICAgICAgbVNhbXBsZXJz
UFNbaV0udGV4dHVyZVR5cGUgPSAoVGV4dHVyZVR5cGUpIHRleHR1cmVUeXBlOworICAgIH0KKwor
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgSU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRF
WF9URVhUVVJFX0lNQUdFX1VOSVRTOyArK2kpCisgICAgeworICAgICAgICBzdHJlYW0ucmVhZCgm
bVNhbXBsZXJzVlNbaV0uYWN0aXZlKTsKKyAgICAgICAgc3RyZWFtLnJlYWQoJm1TYW1wbGVyc1ZT
W2ldLmxvZ2ljYWxUZXh0dXJlVW5pdCk7CisgICAgICAgIAorICAgICAgICBpbnQgdGV4dHVyZVR5
cGU7CisgICAgICAgIHN0cmVhbS5yZWFkKCZ0ZXh0dXJlVHlwZSk7CisgICAgICAgIG1TYW1wbGVy
c1ZTW2ldLnRleHR1cmVUeXBlID0gKFRleHR1cmVUeXBlKSB0ZXh0dXJlVHlwZTsKKyAgICB9CisK
KyAgICBzdHJlYW0ucmVhZCgmbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2UpOworICAgIHN0cmVhbS5y
ZWFkKCZtVXNlZFBpeGVsU2FtcGxlclJhbmdlKTsKKyAgICBzdHJlYW0ucmVhZCgmbVVzZXNQb2lu
dFNpemUpOworCisgICAgc2l6ZV90IHNpemU7CisgICAgc3RyZWFtLnJlYWQoJnNpemUpOworICAg
IGlmIChzdHJlYW0uZXJyb3IoKSkKKyAgICB7CisgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJJbnZh
bGlkIHByb2dyYW0gYmluYXJ5LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgbVVuaWZvcm1zLnJlc2l6ZShzaXplKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHNpemU7ICsraSkKKyAgICB7CisgICAgICAgIEdMZW51bSB0eXBlOworICAgICAgICBHTGVu
dW0gcHJlY2lzaW9uOworICAgICAgICBzdGQ6OnN0cmluZyBuYW1lOworICAgICAgICB1bnNpZ25l
ZCBpbnQgYXJyYXlTaXplOworCisgICAgICAgIHN0cmVhbS5yZWFkKCZ0eXBlKTsKKyAgICAgICAg
c3RyZWFtLnJlYWQoJnByZWNpc2lvbik7CisgICAgICAgIHN0cmVhbS5yZWFkKCZuYW1lKTsKKyAg
ICAgICAgc3RyZWFtLnJlYWQoJmFycmF5U2l6ZSk7CisKKyAgICAgICAgbVVuaWZvcm1zW2ldID0g
bmV3IFVuaWZvcm0odHlwZSwgcHJlY2lzaW9uLCBuYW1lLCBhcnJheVNpemUpOworICAgICAgICAK
KyAgICAgICAgc3RyZWFtLnJlYWQoJm1Vbmlmb3Jtc1tpXS0+cHNSZWdpc3RlckluZGV4KTsKKyAg
ICAgICAgc3RyZWFtLnJlYWQoJm1Vbmlmb3Jtc1tpXS0+dnNSZWdpc3RlckluZGV4KTsKKyAgICAg
ICAgc3RyZWFtLnJlYWQoJm1Vbmlmb3Jtc1tpXS0+cmVnaXN0ZXJDb3VudCk7CisgICAgfQorCisg
ICAgc3RyZWFtLnJlYWQoJnNpemUpOworICAgIGlmIChzdHJlYW0uZXJyb3IoKSkKKyAgICB7Cisg
ICAgICAgIGluZm9Mb2cuYXBwZW5kKCJJbnZhbGlkIHByb2dyYW0gYmluYXJ5LiIpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbVVuaWZvcm1JbmRleC5yZXNpemUoc2l6ZSk7
CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgeworICAg
ICAgICBzdHJlYW0ucmVhZCgmbVVuaWZvcm1JbmRleFtpXS5uYW1lKTsKKyAgICAgICAgc3RyZWFt
LnJlYWQoJm1Vbmlmb3JtSW5kZXhbaV0uZWxlbWVudCk7CisgICAgICAgIHN0cmVhbS5yZWFkKCZt
VW5pZm9ybUluZGV4W2ldLmluZGV4KTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbnQgcGl4ZWxT
aGFkZXJTaXplOworICAgIHN0cmVhbS5yZWFkKCZwaXhlbFNoYWRlclNpemUpOworCisgICAgdW5z
aWduZWQgaW50IHZlcnRleFNoYWRlclNpemU7CisgICAgc3RyZWFtLnJlYWQoJnZlcnRleFNoYWRl
clNpemUpOworCisgICAgdW5zaWduZWQgaW50IGdlb21ldHJ5U2hhZGVyU2l6ZTsKKyAgICBzdHJl
YW0ucmVhZCgmZ2VvbWV0cnlTaGFkZXJTaXplKTsKKworICAgIGNvbnN0IGNoYXIgKnB0ciA9IChj
b25zdCBjaGFyKikgYmluYXJ5ICsgc3RyZWFtLm9mZnNldCgpOworCisgICAgY29uc3QgR1VJRCAq
YmluYXJ5SWRlbnRpZmllciA9IChjb25zdCBHVUlEICopIHB0cjsKKyAgICBwdHIgKz0gc2l6ZW9m
KEdVSUQpOworCisgICAgR1VJRCBpZGVudGlmaWVyID0gbVJlbmRlcmVyLT5nZXRBZGFwdGVySWRl
bnRpZmllcigpOworICAgIGlmIChtZW1jbXAoJmlkZW50aWZpZXIsIGJpbmFyeUlkZW50aWZpZXIs
IHNpemVvZihHVUlEKSkgIT0gMCkKKyAgICB7CisgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJJbnZh
bGlkIHByb2dyYW0gYmluYXJ5LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgY29uc3QgY2hhciAqcGl4ZWxTaGFkZXJGdW5jdGlvbiA9IHB0cjsKKyAgICBwdHIgKz0gcGl4
ZWxTaGFkZXJTaXplOworCisgICAgY29uc3QgY2hhciAqdmVydGV4U2hhZGVyRnVuY3Rpb24gPSBw
dHI7CisgICAgcHRyICs9IHZlcnRleFNoYWRlclNpemU7CisKKyAgICBjb25zdCBjaGFyICpnZW9t
ZXRyeVNoYWRlckZ1bmN0aW9uID0gZ2VvbWV0cnlTaGFkZXJTaXplID4gMCA/IHB0ciA6IE5VTEw7
CisgICAgcHRyICs9IGdlb21ldHJ5U2hhZGVyU2l6ZTsKKworICAgIG1QaXhlbEV4ZWN1dGFibGUg
PSBtUmVuZGVyZXItPmxvYWRFeGVjdXRhYmxlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRFdPUkQq
PihwaXhlbFNoYWRlckZ1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwaXhlbFNoYWRlclNpemUsIHJ4OjpTSEFERVJfUElYRUwpOworICAg
IGlmICghbVBpeGVsRXhlY3V0YWJsZSkKKyAgICB7CisgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJD
b3VsZCBub3QgY3JlYXRlIHBpeGVsIHNoYWRlci4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gbVJlbmRlcmVyLT5sb2FkRXhlY3V0YWJs
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IERXT1JEKj4odmVydGV4U2hhZGVyRnVuY3Rpb24pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhT
aGFkZXJTaXplLCByeDo6U0hBREVSX1ZFUlRFWCk7CisgICAgaWYgKCFtVmVydGV4RXhlY3V0YWJs
ZSkKKyAgICB7CisgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJDb3VsZCBub3QgY3JlYXRlIHZlcnRl
eCBzaGFkZXIuIik7CisgICAgICAgIGRlbGV0ZSBtUGl4ZWxFeGVjdXRhYmxlOworICAgICAgICBt
UGl4ZWxFeGVjdXRhYmxlID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmIChnZW9tZXRyeVNoYWRlckZ1bmN0aW9uICE9IE5VTEwgJiYgZ2VvbWV0cnlTaGFkZXJT
aXplID4gMCkKKyAgICB7CisgICAgICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgPSBtUmVuZGVyZXIt
PmxvYWRFeGVjdXRhYmxlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRFdPUkQqPihnZW9tZXRyeVNo
YWRlckZ1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2VvbWV0cnlTaGFkZXJTaXplLCByeDo6U0hBREVSX0dFT01FVFJZKTsK
KyAgICAgICAgaWYgKCFtR2VvbWV0cnlFeGVjdXRhYmxlKQorICAgICAgICB7CisgICAgICAgICAg
ICBpbmZvTG9nLmFwcGVuZCgiQ291bGQgbm90IGNyZWF0ZSBnZW9tZXRyeSBzaGFkZXIuIik7Cisg
ICAgICAgICAgICBkZWxldGUgbVBpeGVsRXhlY3V0YWJsZTsKKyAgICAgICAgICAgIG1QaXhlbEV4
ZWN1dGFibGUgPSBOVUxMOworICAgICAgICAgICAgZGVsZXRlIG1WZXJ0ZXhFeGVjdXRhYmxlOwor
ICAgICAgICAgICAgbVZlcnRleEV4ZWN1dGFibGUgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1HZW9t
ZXRyeUV4ZWN1dGFibGUgPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFByb2dyYW1CaW5hcnk6OnNhdmUodm9pZCogYmluYXJ5LCBHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKmxlbmd0aCkKK3sKKyAgICBCaW5hcnlPdXRwdXRTdHJlYW0gc3RyZWFtOworCisgICAg
c3RyZWFtLndyaXRlKEdMX1BST0dSQU1fQklOQVJZX0FOR0xFKTsKKyAgICBzdHJlYW0ud3JpdGUo
VkVSU0lPTl9EV09SRCk7CisgICAgc3RyZWFtLndyaXRlKEFOR0xFX0NPTVBJTEVfT1BUSU1JWkFU
SU9OX0xFVkVMKTsKKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgTUFYX1ZFUlRF
WF9BVFRSSUJTOyArK2kpCisgICAgeworICAgICAgICBzdHJlYW0ud3JpdGUobUxpbmtlZEF0dHJp
YnV0ZVtpXS50eXBlKTsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1MaW5rZWRBdHRyaWJ1dGVbaV0u
bmFtZSk7CisgICAgICAgIHN0cmVhbS53cml0ZShtU2VtYW50aWNJbmRleFtpXSk7CisgICAgfQor
CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBNQVhfVEVYVFVSRV9JTUFHRV9VTklU
UzsgKytpKQorICAgIHsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1TYW1wbGVyc1BTW2ldLmFjdGl2
ZSk7CisgICAgICAgIHN0cmVhbS53cml0ZShtU2FtcGxlcnNQU1tpXS5sb2dpY2FsVGV4dHVyZVVu
aXQpOworICAgICAgICBzdHJlYW0ud3JpdGUoKGludCkgbVNhbXBsZXJzUFNbaV0udGV4dHVyZVR5
cGUpOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgSU1QTEVNRU5U
QVRJT05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOyArK2kpCisgICAgeworICAgICAg
ICBzdHJlYW0ud3JpdGUobVNhbXBsZXJzVlNbaV0uYWN0aXZlKTsKKyAgICAgICAgc3RyZWFtLndy
aXRlKG1TYW1wbGVyc1ZTW2ldLmxvZ2ljYWxUZXh0dXJlVW5pdCk7CisgICAgICAgIHN0cmVhbS53
cml0ZSgoaW50KSBtU2FtcGxlcnNWU1tpXS50ZXh0dXJlVHlwZSk7CisgICAgfQorCisgICAgc3Ry
ZWFtLndyaXRlKG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlKTsKKyAgICBzdHJlYW0ud3JpdGUobVVz
ZWRQaXhlbFNhbXBsZXJSYW5nZSk7CisgICAgc3RyZWFtLndyaXRlKG1Vc2VzUG9pbnRTaXplKTsK
KworICAgIHN0cmVhbS53cml0ZShtVW5pZm9ybXMuc2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IG1Vbmlmb3Jtcy5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIHN0
cmVhbS53cml0ZShtVW5pZm9ybXNbaV0tPnR5cGUpOworICAgICAgICBzdHJlYW0ud3JpdGUobVVu
aWZvcm1zW2ldLT5wcmVjaXNpb24pOworICAgICAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1zW2ld
LT5uYW1lKTsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1Vbmlmb3Jtc1tpXS0+YXJyYXlTaXplKTsK
KworICAgICAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1zW2ldLT5wc1JlZ2lzdGVySW5kZXgpOwor
ICAgICAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1zW2ldLT52c1JlZ2lzdGVySW5kZXgpOworICAg
ICAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1zW2ldLT5yZWdpc3RlckNvdW50KTsKKyAgICB9CisK
KyAgICBzdHJlYW0ud3JpdGUobVVuaWZvcm1JbmRleC5zaXplKCkpOworICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgbVVuaWZvcm1JbmRleC5zaXplKCk7ICsraSkKKyAgICB7CisgICAg
ICAgIHN0cmVhbS53cml0ZShtVW5pZm9ybUluZGV4W2ldLm5hbWUpOworICAgICAgICBzdHJlYW0u
d3JpdGUobVVuaWZvcm1JbmRleFtpXS5lbGVtZW50KTsKKyAgICAgICAgc3RyZWFtLndyaXRlKG1V
bmlmb3JtSW5kZXhbaV0uaW5kZXgpOworICAgIH0KKworICAgIFVJTlQgcGl4ZWxTaGFkZXJTaXpl
ID0gbVBpeGVsRXhlY3V0YWJsZS0+Z2V0TGVuZ3RoKCk7CisgICAgc3RyZWFtLndyaXRlKHBpeGVs
U2hhZGVyU2l6ZSk7CisKKyAgICBVSU5UIHZlcnRleFNoYWRlclNpemUgPSBtVmVydGV4RXhlY3V0
YWJsZS0+Z2V0TGVuZ3RoKCk7CisgICAgc3RyZWFtLndyaXRlKHZlcnRleFNoYWRlclNpemUpOwor
CisgICAgVUlOVCBnZW9tZXRyeVNoYWRlclNpemUgPSAobUdlb21ldHJ5RXhlY3V0YWJsZSAhPSBO
VUxMKSA/IG1HZW9tZXRyeUV4ZWN1dGFibGUtPmdldExlbmd0aCgpIDogMDsKKyAgICBzdHJlYW0u
d3JpdGUoZ2VvbWV0cnlTaGFkZXJTaXplKTsKKworICAgIEdVSUQgaWRlbnRpZmllciA9IG1SZW5k
ZXJlci0+Z2V0QWRhcHRlcklkZW50aWZpZXIoKTsKKworICAgIEdMc2l6ZWkgc3RyZWFtTGVuZ3Ro
ID0gc3RyZWFtLmxlbmd0aCgpOworICAgIGNvbnN0IHZvaWQgKnN0cmVhbURhdGEgPSBzdHJlYW0u
ZGF0YSgpOworCisgICAgR0xzaXplaSB0b3RhbExlbmd0aCA9IHN0cmVhbUxlbmd0aCArIHNpemVv
ZihHVUlEKSArIHBpeGVsU2hhZGVyU2l6ZSArIHZlcnRleFNoYWRlclNpemUgKyBnZW9tZXRyeVNo
YWRlclNpemU7CisgICAgaWYgKHRvdGFsTGVuZ3RoID4gYnVmU2l6ZSkKKyAgICB7CisgICAgICAg
IGlmIChsZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAgICpsZW5ndGggPSAwOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChiaW5hcnkpCisg
ICAgeworICAgICAgICBjaGFyICpwdHIgPSAoY2hhciopIGJpbmFyeTsKKworICAgICAgICBtZW1j
cHkocHRyLCBzdHJlYW1EYXRhLCBzdHJlYW1MZW5ndGgpOworICAgICAgICBwdHIgKz0gc3RyZWFt
TGVuZ3RoOworCisgICAgICAgIG1lbWNweShwdHIsICZpZGVudGlmaWVyLCBzaXplb2YoR1VJRCkp
OworICAgICAgICBwdHIgKz0gc2l6ZW9mKEdVSUQpOworCisgICAgICAgIG1lbWNweShwdHIsIG1Q
aXhlbEV4ZWN1dGFibGUtPmdldEZ1bmN0aW9uKCksIHBpeGVsU2hhZGVyU2l6ZSk7CisgICAgICAg
IHB0ciArPSBwaXhlbFNoYWRlclNpemU7CisKKyAgICAgICAgbWVtY3B5KHB0ciwgbVZlcnRleEV4
ZWN1dGFibGUtPmdldEZ1bmN0aW9uKCksIHZlcnRleFNoYWRlclNpemUpOworICAgICAgICBwdHIg
Kz0gdmVydGV4U2hhZGVyU2l6ZTsKKworICAgICAgICBpZiAobUdlb21ldHJ5RXhlY3V0YWJsZSAh
PSBOVUxMICYmIGdlb21ldHJ5U2hhZGVyU2l6ZSA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1lbWNweShwdHIsIG1HZW9tZXRyeUV4ZWN1dGFibGUtPmdldEZ1bmN0aW9uKCksIGdlb21ldHJ5
U2hhZGVyU2l6ZSk7CisgICAgICAgICAgICBwdHIgKz0gZ2VvbWV0cnlTaGFkZXJTaXplOworICAg
ICAgICB9CisKKyAgICAgICAgQVNTRVJUKHB0ciAtIHRvdGFsTGVuZ3RoID09IGJpbmFyeSk7Cisg
ICAgfQorCisgICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICAgICpsZW5ndGggPSB0b3RhbExl
bmd0aDsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworR0xpbnQgUHJvZ3JhbUJpbmFy
eTo6Z2V0TGVuZ3RoKCkKK3sKKyAgICBHTGludCBsZW5ndGg7CisgICAgaWYgKHNhdmUoTlVMTCwg
SU5UX01BWCwgJmxlbmd0aCkpCisgICAgeworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2Jvb2wgUHJv
Z3JhbUJpbmFyeTo6bGluayhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBBdHRyaWJ1dGVCaW5kaW5n
cyAmYXR0cmlidXRlQmluZGluZ3MsIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlciwgVmVy
dGV4U2hhZGVyICp2ZXJ0ZXhTaGFkZXIpCit7CisgICAgaWYgKCFmcmFnbWVudFNoYWRlciB8fCAh
ZnJhZ21lbnRTaGFkZXItPmlzQ29tcGlsZWQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAoIXZlcnRleFNoYWRlciB8fCAhdmVydGV4U2hhZGVyLT5pc0Nv
bXBpbGVkKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3Rk
OjpzdHJpbmcgcGl4ZWxITFNMID0gZnJhZ21lbnRTaGFkZXItPmdldEhMU0woKTsKKyAgICBzdGQ6
OnN0cmluZyB2ZXJ0ZXhITFNMID0gdmVydGV4U2hhZGVyLT5nZXRITFNMKCk7CisKKyAgICAvLyBN
YXAgdGhlIHZhcnlpbmdzIHRvIHRoZSByZWdpc3RlciBmaWxlCisgICAgY29uc3QgVmFyeWluZyAq
cGFja2luZ1tJTVBMRU1FTlRBVElPTl9NQVhfVkFSWUlOR19WRUNUT1JTXVs0XSA9IHtOVUxMfTsK
KyAgICBpbnQgcmVnaXN0ZXJzID0gcGFja1ZhcnlpbmdzKGluZm9Mb2csIHBhY2tpbmcsIGZyYWdt
ZW50U2hhZGVyKTsKKworICAgIGlmIChyZWdpc3RlcnMgPCAwKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbGlua1ZhcnlpbmdzKGluZm9Mb2csIHJlZ2lz
dGVycywgcGFja2luZywgcGl4ZWxITFNMLCB2ZXJ0ZXhITFNMLCBmcmFnbWVudFNoYWRlciwgdmVy
dGV4U2hhZGVyKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBi
b29sIHN1Y2Nlc3MgPSB0cnVlOworCisgICAgaWYgKCFsaW5rQXR0cmlidXRlcyhpbmZvTG9nLCBh
dHRyaWJ1dGVCaW5kaW5ncywgZnJhZ21lbnRTaGFkZXIsIHZlcnRleFNoYWRlcikpCisgICAgewor
ICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFsaW5rVW5pZm9ybXMo
aW5mb0xvZywgdmVydGV4U2hhZGVyLT5nZXRVbmlmb3JtcygpLCBmcmFnbWVudFNoYWRlci0+Z2V0
VW5pZm9ybXMoKSkpCisgICAgeworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgfQorCisg
ICAgLy8gc3BlY2lhbCBjYXNlIGZvciBnbF9EZXB0aFJhbmdlLCB0aGUgb25seSBidWlsdC1pbiB1
bmlmb3JtIChhbHNvIGEgc3RydWN0KQorICAgIGlmICh2ZXJ0ZXhTaGFkZXItPm1Vc2VzRGVwdGhS
YW5nZSB8fCBmcmFnbWVudFNoYWRlci0+bVVzZXNEZXB0aFJhbmdlKQorICAgIHsKKyAgICAgICAg
bVVuaWZvcm1zLnB1c2hfYmFjayhuZXcgVW5pZm9ybShHTF9GTE9BVCwgR0xfSElHSF9GTE9BVCwg
ImdsX0RlcHRoUmFuZ2UubmVhciIsIDApKTsKKyAgICAgICAgbVVuaWZvcm1zLnB1c2hfYmFjayhu
ZXcgVW5pZm9ybShHTF9GTE9BVCwgR0xfSElHSF9GTE9BVCwgImdsX0RlcHRoUmFuZ2UuZmFyIiwg
MCkpOworICAgICAgICBtVW5pZm9ybXMucHVzaF9iYWNrKG5ldyBVbmlmb3JtKEdMX0ZMT0FULCBH
TF9ISUdIX0ZMT0FULCAiZ2xfRGVwdGhSYW5nZS5kaWZmIiwgMCkpOworICAgIH0KKworICAgIGlm
IChzdWNjZXNzKQorICAgIHsKKyAgICAgICAgbVZlcnRleEV4ZWN1dGFibGUgPSBtUmVuZGVyZXIt
PmNvbXBpbGVUb0V4ZWN1dGFibGUoaW5mb0xvZywgdmVydGV4SExTTC5jX3N0cigpLCByeDo6U0hB
REVSX1ZFUlRFWCk7CisgICAgICAgIG1QaXhlbEV4ZWN1dGFibGUgPSBtUmVuZGVyZXItPmNvbXBp
bGVUb0V4ZWN1dGFibGUoaW5mb0xvZywgcGl4ZWxITFNMLmNfc3RyKCksIHJ4OjpTSEFERVJfUElY
RUwpOworCisgICAgICAgIGlmICh1c2VzR2VvbWV0cnlTaGFkZXIoKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RkOjpzdHJpbmcgZ2VvbWV0cnlITFNMID0gZ2VuZXJhdGVHZW9tZXRyeVNoYWRl
ckhMU0wocmVnaXN0ZXJzLCBwYWNraW5nLCBmcmFnbWVudFNoYWRlciwgdmVydGV4U2hhZGVyKTsK
KyAgICAgICAgICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgPSBtUmVuZGVyZXItPmNvbXBpbGVUb0V4
ZWN1dGFibGUoaW5mb0xvZywgZ2VvbWV0cnlITFNMLmNfc3RyKCksIHJ4OjpTSEFERVJfR0VPTUVU
UlkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtVmVydGV4RXhlY3V0YWJsZSB8fCAhbVBp
eGVsRXhlY3V0YWJsZSB8fCAodXNlc0dlb21ldHJ5U2hhZGVyKCkgJiYgIW1HZW9tZXRyeUV4ZWN1
dGFibGUpKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiRmFpbGVkIHRv
IGNyZWF0ZSBEM0Qgc2hhZGVycy4iKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKwor
ICAgICAgICAgICAgZGVsZXRlIG1WZXJ0ZXhFeGVjdXRhYmxlOworICAgICAgICAgICAgbVZlcnRl
eEV4ZWN1dGFibGUgPSBOVUxMOworICAgICAgICAgICAgZGVsZXRlIG1QaXhlbEV4ZWN1dGFibGU7
CisgICAgICAgICAgICBtUGl4ZWxFeGVjdXRhYmxlID0gTlVMTDsKKyAgICAgICAgICAgIGRlbGV0
ZSBtR2VvbWV0cnlFeGVjdXRhYmxlOworICAgICAgICAgICAgbUdlb21ldHJ5RXhlY3V0YWJsZSA9
IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKworLy8g
RGV0ZXJtaW5lcyB0aGUgbWFwcGluZyBiZXR3ZWVuIEdMIGF0dHJpYnV0ZXMgYW5kIERpcmVjdDNE
IDkgdmVydGV4IHN0cmVhbSB1c2FnZSBpbmRpY2VzCitib29sIFByb2dyYW1CaW5hcnk6OmxpbmtB
dHRyaWJ1dGVzKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IEF0dHJpYnV0ZUJpbmRpbmdzICZhdHRy
aWJ1dGVCaW5kaW5ncywgRnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBWZXJ0ZXhTaGFk
ZXIgKnZlcnRleFNoYWRlcikKK3sKKyAgICB1bnNpZ25lZCBpbnQgdXNlZExvY2F0aW9ucyA9IDA7
CisKKyAgICAvLyBMaW5rIGF0dHJpYnV0ZXMgdGhhdCBoYXZlIGEgYmluZGluZyBsb2NhdGlvbgor
ICAgIGZvciAoQXR0cmlidXRlQXJyYXk6Oml0ZXJhdG9yIGF0dHJpYnV0ZSA9IHZlcnRleFNoYWRl
ci0+bUF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0cmlidXRlICE9IHZlcnRleFNoYWRlci0+bUF0dHJp
YnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQorICAgIHsKKyAgICAgICAgaW50IGxvY2F0aW9uID0g
YXR0cmlidXRlQmluZGluZ3MuZ2V0QXR0cmlidXRlQmluZGluZyhhdHRyaWJ1dGUtPm5hbWUpOwor
CisgICAgICAgIGlmIChsb2NhdGlvbiAhPSAtMSkgICAvLyBTZXQgYnkgZ2xCaW5kQXR0cmliTG9j
YXRpb24KKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtTGlua2VkQXR0cmlidXRlW2xvY2F0
aW9uXS5uYW1lLmVtcHR5KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gTXVs
dGlwbGUgYWN0aXZlIGF0dHJpYnV0ZXMgYm91bmQgdG8gdGhlIHNhbWUgbG9jYXRpb247IG5vdCBh
biBlcnJvcgorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtTGlua2VkQXR0cmlidXRlW2xv
Y2F0aW9uXSA9ICphdHRyaWJ1dGU7CisKKyAgICAgICAgICAgIGludCByb3dzID0gVmFyaWFibGVS
b3dDb3VudChhdHRyaWJ1dGUtPnR5cGUpOworCisgICAgICAgICAgICBpZiAocm93cyArIGxvY2F0
aW9uID4gTUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGluZm9Mb2cuYXBwZW5kKCJBY3RpdmUgYXR0cmlidXRlICglcykgYXQgbG9jYXRpb24gJWQgaXMg
dG9vIGJpZyB0byBmaXQiLCBhdHRyaWJ1dGUtPm5hbWUuY19zdHIoKSwgbG9jYXRpb24pOworCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICB1c2VkTG9jYXRpb25zIHw9IDEgPDwgKGxvY2F0aW9uICsgaSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBMaW5rIGF0dHJpYnV0ZXMgdGhhdCBkb24n
dCBoYXZlIGEgYmluZGluZyBsb2NhdGlvbgorICAgIGZvciAoQXR0cmlidXRlQXJyYXk6Oml0ZXJh
dG9yIGF0dHJpYnV0ZSA9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0cmli
dXRlICE9IHZlcnRleFNoYWRlci0+bUF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQorICAg
IHsKKyAgICAgICAgaW50IGxvY2F0aW9uID0gYXR0cmlidXRlQmluZGluZ3MuZ2V0QXR0cmlidXRl
QmluZGluZyhhdHRyaWJ1dGUtPm5hbWUpOworCisgICAgICAgIGlmIChsb2NhdGlvbiA9PSAtMSkg
ICAvLyBOb3Qgc2V0IGJ5IGdsQmluZEF0dHJpYkxvY2F0aW9uCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGludCByb3dzID0gVmFyaWFibGVSb3dDb3VudChhdHRyaWJ1dGUtPnR5cGUpOworICAgICAg
ICAgICAgaW50IGF2YWlsYWJsZUluZGV4ID0gQWxsb2NhdGVGaXJzdEZyZWVCaXRzKCZ1c2VkTG9j
YXRpb25zLCByb3dzLCBNQVhfVkVSVEVYX0FUVFJJQlMpOworCisgICAgICAgICAgICBpZiAoYXZh
aWxhYmxlSW5kZXggPT0gLTEgfHwgYXZhaWxhYmxlSW5kZXggKyByb3dzID4gTUFYX1ZFUlRFWF9B
VFRSSUJTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJU
b28gbWFueSBhY3RpdmUgYXR0cmlidXRlcyAoJXMpIiwgYXR0cmlidXRlLT5uYW1lLmNfc3RyKCkp
OworCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8vIEZhaWwgdG8gbGluaworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBtTGlua2VkQXR0cmlidXRlW2F2YWlsYWJsZUluZGV4
XSA9ICphdHRyaWJ1dGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGludCBhdHRyaWJ1
dGVJbmRleCA9IDA7IGF0dHJpYnV0ZUluZGV4IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyApCisgICAg
eworICAgICAgICBpbnQgaW5kZXggPSB2ZXJ0ZXhTaGFkZXItPmdldFNlbWFudGljSW5kZXgobUxp
bmtlZEF0dHJpYnV0ZVthdHRyaWJ1dGVJbmRleF0ubmFtZSk7CisgICAgICAgIGludCByb3dzID0g
c3RkOjptYXgoVmFyaWFibGVSb3dDb3VudChtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZUluZGV4
XS50eXBlKSwgMSk7CisKKyAgICAgICAgZm9yIChpbnQgciA9IDA7IHIgPCByb3dzOyByKyspCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1TZW1hbnRpY0luZGV4W2F0dHJpYnV0ZUluZGV4KytdID0g
aW5kZXgrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFByb2dyYW1CaW5hcnk6OmxpbmtVbmlmb3JtcyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBzaDo6
QWN0aXZlVW5pZm9ybXMgJnZlcnRleFVuaWZvcm1zLCBjb25zdCBzaDo6QWN0aXZlVW5pZm9ybXMg
JmZyYWdtZW50VW5pZm9ybXMpCit7CisgICAgZm9yIChzaDo6QWN0aXZlVW5pZm9ybXM6OmNvbnN0
X2l0ZXJhdG9yIHVuaWZvcm0gPSB2ZXJ0ZXhVbmlmb3Jtcy5iZWdpbigpOyB1bmlmb3JtICE9IHZl
cnRleFVuaWZvcm1zLmVuZCgpOyB1bmlmb3JtKyspCisgICAgeworICAgICAgICBpZiAoIWRlZmlu
ZVVuaWZvcm0oR0xfVkVSVEVYX1NIQURFUiwgKnVuaWZvcm0sIGluZm9Mb2cpKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3Ig
KHNoOjpBY3RpdmVVbmlmb3Jtczo6Y29uc3RfaXRlcmF0b3IgdW5pZm9ybSA9IGZyYWdtZW50VW5p
Zm9ybXMuYmVnaW4oKTsgdW5pZm9ybSAhPSBmcmFnbWVudFVuaWZvcm1zLmVuZCgpOyB1bmlmb3Jt
KyspCisgICAgeworICAgICAgICBpZiAoIWRlZmluZVVuaWZvcm0oR0xfRlJBR01FTlRfU0hBREVS
LCAqdW5pZm9ybSwgaW5mb0xvZykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFByb2dy
YW1CaW5hcnk6OmRlZmluZVVuaWZvcm0oR0xlbnVtIHNoYWRlciwgY29uc3Qgc2g6OlVuaWZvcm0g
JmNvbnN0YW50LCBJbmZvTG9nICZpbmZvTG9nKQoreworICAgIGlmIChjb25zdGFudC50eXBlID09
IEdMX1NBTVBMRVJfMkQgfHwKKyAgICAgICAgY29uc3RhbnQudHlwZSA9PSBHTF9TQU1QTEVSX0NV
QkUpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4ID0gY29uc3RhbnQu
cmVnaXN0ZXJJbmRleDsKKyAgICAgICAgICAgIAorICAgICAgICBkbworICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoc2hhZGVyID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaWYgKHNhbXBsZXJJbmRleCA8IG1SZW5kZXJlci0+Z2V0TWF4VmVydGV4
VGV4dHVyZUltYWdlVW5pdHMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0uYWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgbVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS50ZXh0dXJlVHlwZSA9IChjb25zdGFu
dC50eXBlID09IEdMX1NBTVBMRVJfQ1VCRSkgPyBURVhUVVJFX0NVQkUgOiBURVhUVVJFXzJEOwor
ICAgICAgICAgICAgICAgICAgICBtU2FtcGxlcnNWU1tzYW1wbGVySW5kZXhdLmxvZ2ljYWxUZXh0
dXJlVW5pdCA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1Vc2VkVmVydGV4U2FtcGxlclJhbmdl
ID0gc3RkOjptYXgoc2FtcGxlckluZGV4ICsgMSwgbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2UpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiVmVydGV4IHNoYWRlciBzYW1w
bGVyIGNvdW50IGV4Y2VlZHMgdGhlIG1heGltdW0gdmVydGV4IHRleHR1cmUgdW5pdHMgKCVkKS4i
LCBtUmVuZGVyZXItPmdldE1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKCkpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZSBpZiAoc2hhZGVyID09IEdMX0ZSQUdNRU5UX1NIQURFUikKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc2FtcGxlckluZGV4IDwgTUFYX1RFWFRV
UkVfSU1BR0VfVU5JVFMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBt
U2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIG1TYW1wbGVyc1BTW3NhbXBsZXJJbmRleF0udGV4dHVyZVR5cGUgPSAoY29uc3RhbnQudHlw
ZSA9PSBHTF9TQU1QTEVSX0NVQkUpID8gVEVYVFVSRV9DVUJFIDogVEVYVFVSRV8yRDsKKyAgICAg
ICAgICAgICAgICAgICAgbVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS5sb2dpY2FsVGV4dHVyZVVu
aXQgPSAwOworICAgICAgICAgICAgICAgICAgICBtVXNlZFBpeGVsU2FtcGxlclJhbmdlID0gc3Rk
OjptYXgoc2FtcGxlckluZGV4ICsgMSwgbVVzZWRQaXhlbFNhbXBsZXJSYW5nZSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJQaXhlbCBzaGFkZXIgc2FtcGxlciBjb3Vu
dCBleGNlZWRzIE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTICglZCkuIiwgTUFYX1RFWFRVUkVfSU1B
R0VfVU5JVFMpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwor
CisgICAgICAgICAgICBzYW1wbGVySW5kZXgrKzsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAo
c2FtcGxlckluZGV4IDwgY29uc3RhbnQucmVnaXN0ZXJJbmRleCArIGNvbnN0YW50LmFycmF5U2l6
ZSk7CisgICAgfQorCisgICAgVW5pZm9ybSAqdW5pZm9ybSA9IE5VTEw7CisgICAgR0xpbnQgbG9j
YXRpb24gPSBnZXRVbmlmb3JtTG9jYXRpb24oY29uc3RhbnQubmFtZSk7CisKKyAgICBpZiAobG9j
YXRpb24gPj0gMCkgICAvLyBQcmV2aW91c2x5IGRlZmluZWQsIHR5cGUgYW5kIHByZWNpc2lvbiBt
dXN0IG1hdGNoCisgICAgeworICAgICAgICB1bmlmb3JtID0gbVVuaWZvcm1zW21Vbmlmb3JtSW5k
ZXhbbG9jYXRpb25dLmluZGV4XTsKKworICAgICAgICBpZiAodW5pZm9ybS0+dHlwZSAhPSBjb25z
dGFudC50eXBlKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiVHlwZXMg
Zm9yIHVuaWZvcm0gJXMgZG8gbm90IG1hdGNoIGJldHdlZW4gdGhlIHZlcnRleCBhbmQgZnJhZ21l
bnQgc2hhZGVyIiwgdW5pZm9ybS0+bmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh1bmlmb3JtLT5wcmVjaXNpb24gIT0gY29u
c3RhbnQucHJlY2lzaW9uKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgi
UHJlY2lzaW9ucyBmb3IgdW5pZm9ybSAlcyBkbyBub3QgbWF0Y2ggYmV0d2VlbiB0aGUgdmVydGV4
IGFuZCBmcmFnbWVudCBzaGFkZXIiLCB1bmlmb3JtLT5uYW1lLmNfc3RyKCkpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIHVuaWZvcm0gPSBuZXcgVW5pZm9ybShjb25zdGFudC50eXBlLCBjb25zdGFudC5wcmVjaXNp
b24sIGNvbnN0YW50Lm5hbWUsIGNvbnN0YW50LmFycmF5U2l6ZSk7CisgICAgfQorCisgICAgaWYg
KCF1bmlmb3JtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
IChzaGFkZXIgPT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAgdW5pZm9ybS0+
cHNSZWdpc3RlckluZGV4ID0gY29uc3RhbnQucmVnaXN0ZXJJbmRleDsKKyAgICB9CisgICAgZWxz
ZSBpZiAoc2hhZGVyID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgeworICAgICAgICB1bmlmb3Jt
LT52c1JlZ2lzdGVySW5kZXggPSBjb25zdGFudC5yZWdpc3RlckluZGV4OworICAgIH0KKyAgICBl
bHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICBpZiAobG9jYXRpb24gPj0gMCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB1bmlmb3JtLT50eXBlID09IGNvbnN0YW50LnR5cGU7CisgICAgfQorCisgICAg
bVVuaWZvcm1zLnB1c2hfYmFjayh1bmlmb3JtKTsKKyAgICB1bnNpZ25lZCBpbnQgdW5pZm9ybUlu
ZGV4ID0gbVVuaWZvcm1zLnNpemUoKSAtIDE7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IHVuaWZvcm0tPmVsZW1lbnRDb3VudCgpOyBpKyspCisgICAgeworICAgICAgICBtVW5p
Zm9ybUluZGV4LnB1c2hfYmFjayhVbmlmb3JtTG9jYXRpb24oY29uc3RhbnQubmFtZSwgaSwgdW5p
Zm9ybUluZGV4KSk7CisgICAgfQorCisgICAgaWYgKHNoYWRlciA9PSBHTF9WRVJURVhfU0hBREVS
KQorICAgIHsKKyAgICAgICAgaWYgKGNvbnN0YW50LnJlZ2lzdGVySW5kZXggKyB1bmlmb3JtLT5y
ZWdpc3RlckNvdW50ID4gbVJlbmRlcmVyLT5nZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3Jz
KCkgKyBtUmVuZGVyZXItPmdldE1heFZlcnRleFVuaWZvcm1WZWN0b3JzKCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJWZXJ0ZXggc2hhZGVyIGFjdGl2ZSB1bmlmb3Jt
cyBleGNlZWQgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMgKCV1KSIsIG1SZW5kZXJlci0+
Z2V0TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoc2hhZGVyID09IEdMX0ZSQUdNRU5UX1NI
QURFUikKKyAgICB7CisgICAgICAgIGlmIChjb25zdGFudC5yZWdpc3RlckluZGV4ICsgdW5pZm9y
bS0+cmVnaXN0ZXJDb3VudCA+IG1SZW5kZXJlci0+Z2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1W
ZWN0b3JzKCkgKyBtUmVuZGVyZXItPmdldE1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkZyYWdtZW50IHNoYWRlciBhY3Rp
dmUgdW5pZm9ybXMgZXhjZWVkIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMgKCV1KSIs
IG1SZW5kZXJlci0+Z2V0TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RkOjpzdHJpbmcgUHJvZ3JhbUJpbmFyeTo6Z2Vu
ZXJhdGVHZW9tZXRyeVNoYWRlckhMU0woaW50IHJlZ2lzdGVycywgY29uc3QgVmFyeWluZyAqcGFj
a2luZ1tdWzRdLCBGcmFnbWVudFNoYWRlciAqZnJhZ21lbnRTaGFkZXIsIFZlcnRleFNoYWRlciAq
dmVydGV4U2hhZGVyKSBjb25zdAoreworICAgIC8vIGZvciBub3cgd2Ugb25seSBoYW5kbGUgcG9p
bnQgc3ByaXRlIGVtdWxhdGlvbgorICAgIEFTU0VSVCh1c2VzUG9pbnRTcHJpdGVFbXVsYXRpb24o
KSk7CisgICAgcmV0dXJuIGdlbmVyYXRlUG9pbnRTcHJpdGVITFNMKHJlZ2lzdGVycywgcGFja2lu
ZywgZnJhZ21lbnRTaGFkZXIsIHZlcnRleFNoYWRlcik7Cit9CisKK3N0ZDo6c3RyaW5nIFByb2dy
YW1CaW5hcnk6OmdlbmVyYXRlUG9pbnRTcHJpdGVITFNMKGludCByZWdpc3RlcnMsIGNvbnN0IFZh
cnlpbmcgKnBhY2tpbmdbXVs0XSwgRnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBWZXJ0
ZXhTaGFkZXIgKnZlcnRleFNoYWRlcikgY29uc3QKK3sKKyAgICBBU1NFUlQocmVnaXN0ZXJzID49
IDApOworICAgIEFTU0VSVCh2ZXJ0ZXhTaGFkZXItPm1Vc2VzUG9pbnRTaXplKTsKKyAgICBBU1NF
UlQobVJlbmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVsKCkgPj0gNCk7CisKKyAgICBzdGQ6OnN0
cmluZyBnZW9tSExTTDsKKworICAgIHN0ZDo6c3RyaW5nIHZhcnlpbmdTZW1hbnRpYyA9ICJURVhD
T09SRCI7CisKKyAgICBzdGQ6OnN0cmluZyBmcmFnQ29vcmRTZW1hbnRpYzsKKyAgICBzdGQ6OnN0
cmluZyBwb2ludENvb3JkU2VtYW50aWM7CisKKyAgICBpbnQgcmVzZXJ2ZWRSZWdpc3RlckluZGV4
ID0gcmVnaXN0ZXJzOworCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0ZyYWdDb29yZCkK
KyAgICB7CisgICAgICAgIGZyYWdDb29yZFNlbWFudGljID0gdmFyeWluZ1NlbWFudGljICsgc3Ry
KHJlc2VydmVkUmVnaXN0ZXJJbmRleCsrKTsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFk
ZXItPm1Vc2VzUG9pbnRDb29yZCkKKyAgICB7CisgICAgICAgIHBvaW50Q29vcmRTZW1hbnRpYyA9
IHZhcnlpbmdTZW1hbnRpYyArIHN0cihyZXNlcnZlZFJlZ2lzdGVySW5kZXgrKyk7CisgICAgfQor
CisgICAgZ2VvbUhMU0wgKz0gInVuaWZvcm0gZmxvYXQ0IGR4X1ZpZXdDb29yZHMgOiByZWdpc3Rl
cihjMSk7XG4iCisgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICJzdHJ1Y3Qg
R1NfSU5QVVRcbiIKKyAgICAgICAgICAgICAgICAie1xuIjsKKworICAgIGZvciAoaW50IHIgPSAw
OyByIDwgcmVnaXN0ZXJzOyByKyspCisgICAgeworICAgICAgICBpbnQgcmVnaXN0ZXJTaXplID0g
cGFja2luZ1tyXVszXSA/IDQgOiAocGFja2luZ1tyXVsyXSA/IDMgOiAocGFja2luZ1tyXVsxXSA/
IDIgOiAxKSk7CisKKyAgICAgICAgZ2VvbUhMU0wgKz0gIiAgICBmbG9hdCIgKyBzdHIocmVnaXN0
ZXJTaXplKSArICIgdiIgKyBzdHIocikgKyAiIDogIiArIHZhcnlpbmdTZW1hbnRpYyArIHN0cihy
KSArICI7XG4iOworICAgIH0KKworICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnQ29v
cmQpCisgICAgeworICAgICAgICBnZW9tSExTTCArPSAiICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQg
OiAiICsgZnJhZ0Nvb3JkU2VtYW50aWMgKyAiO1xuIjsKKyAgICB9CisKKyAgICBnZW9tSExTTCAr
PSAiICAgIGZsb2F0IGdsX1BvaW50U2l6ZSA6IFBTSVpFO1xuIgorICAgICAgICAgICAgICAgICIg
ICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247XG4iCisgICAgICAgICAgICAgICAg
In07XG4iCisgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICJzdHJ1Y3QgR1Nf
T1VUUFVUXG4iCisgICAgICAgICAgICAgICAgIntcbiI7CisKKyAgICBmb3IgKGludCByID0gMDsg
ciA8IHJlZ2lzdGVyczsgcisrKQorICAgIHsKKyAgICAgICAgaW50IHJlZ2lzdGVyU2l6ZSA9IHBh
Y2tpbmdbcl1bM10gPyA0IDogKHBhY2tpbmdbcl1bMl0gPyAzIDogKHBhY2tpbmdbcl1bMV0gPyAy
IDogMSkpOworCisgICAgICAgIGdlb21ITFNMICs9ICIgICAgZmxvYXQiICsgc3RyKHJlZ2lzdGVy
U2l6ZSkgKyAiIHYiICsgc3RyKHIpICsgIiA6ICIgKyB2YXJ5aW5nU2VtYW50aWMgKyBzdHIocikg
KyAiO1xuIjsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nvb3Jk
KQorICAgIHsKKyAgICAgICAgZ2VvbUhMU0wgKz0gIiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3JkIDog
IiArIGZyYWdDb29yZFNlbWFudGljICsgIjtcbiI7CisgICAgfQorCisgICAgaWYgKGZyYWdtZW50
U2hhZGVyLT5tVXNlc1BvaW50Q29vcmQpCisgICAgeworICAgICAgICBnZW9tSExTTCArPSAiICAg
IGZsb2F0MiBnbF9Qb2ludENvb3JkIDogIiArIHBvaW50Q29vcmRTZW1hbnRpYyArICI7XG4iOwor
ICAgIH0KKworICAgIGdlb21ITFNMICs9ICAgIiAgICBmbG9hdCBnbF9Qb2ludFNpemUgOiBQU0la
RTtcbiIKKyAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogU1ZfUG9z
aXRpb247XG4iCisgICAgICAgICAgICAgICAgICAifTtcbiIKKyAgICAgICAgICAgICAgICAgICJc
biIKKyAgICAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQyIHBvaW50U3ByaXRlQ29ybmVyc1td
ID0gXG4iCisgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgIiAgICBm
bG9hdDIoIDAuNWYsIC0wLjVmKSxcbiIKKyAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyKCAw
LjVmLCAgMC41ZiksXG4iCisgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MigtMC41ZiwgLTAu
NWYpLFxuIgorICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIoLTAuNWYsICAwLjVmKVxuIgor
ICAgICAgICAgICAgICAgICAgIn07XG4iCisgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAg
ICAgICAgICAgICAic3RhdGljIGZsb2F0MiBwb2ludFNwcml0ZVRleGNvb3Jkc1tdID0gXG4iCisg
ICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIoMS4w
ZiwgMS4wZiksXG4iCisgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MigxLjBmLCAwLjBmKSxc
biIKKyAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyKDAuMGYsIDEuMGYpLFxuIgorICAgICAg
ICAgICAgICAgICAgIiAgICBmbG9hdDIoMC4wZiwgMC4wZilcbiIKKyAgICAgICAgICAgICAgICAg
ICJ9O1xuIgorICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgInN0YXRp
YyBmbG9hdCBtaW5Qb2ludFNpemUgPSAiICsgc3RyKEFMSUFTRURfUE9JTlRfU0laRV9SQU5HRV9N
SU4pICsgIi4wZjtcbiIKKyAgICAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQgbWF4UG9pbnRT
aXplID0gIiArIHN0cihtUmVuZGVyZXItPmdldE1heFBvaW50U2l6ZSgpKSArICIuMGY7XG4iCisg
ICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAiW21heHZlcnRleGNvdW50
KDQpXVxuIgorICAgICAgICAgICAgICAgICAgInZvaWQgbWFpbihwb2ludCBHU19JTlBVVCBpbnB1
dFsxXSwgaW5vdXQgVHJpYW5nbGVTdHJlYW08R1NfT1VUUFVUPiBvdXRTdHJlYW0pXG4iCisgICAg
ICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgIiAgICBHU19PVVRQVVQgb3V0
cHV0ID0gKEdTX09VVFBVVCkwO1xuIgorICAgICAgICAgICAgICAgICAgIiAgICBvdXRwdXQuZ2xf
UG9pbnRTaXplID0gaW5wdXRbMF0uZ2xfUG9pbnRTaXplO1xuIjsKKworICAgIGZvciAoaW50IHIg
PSAwOyByIDwgcmVnaXN0ZXJzOyByKyspCisgICAgeworICAgICAgICBnZW9tSExTTCArPSAiICAg
IG91dHB1dC52IiArIHN0cihyKSArICIgPSBpbnB1dFswXS52IiArIHN0cihyKSArICI7XG4iOwor
ICAgIH0KKworICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnQ29vcmQpCisgICAgewor
ICAgICAgICBnZW9tSExTTCArPSAiICAgIG91dHB1dC5nbF9GcmFnQ29vcmQgPSBpbnB1dFswXS5n
bF9GcmFnQ29vcmQ7XG4iOworICAgIH0KKworICAgIGdlb21ITFNMICs9ICIgICAgXG4iCisgICAg
ICAgICAgICAgICAgIiAgICBmbG9hdCBnbF9Qb2ludFNpemUgPSBjbGFtcChpbnB1dFswXS5nbF9Q
b2ludFNpemUsIG1pblBvaW50U2l6ZSwgbWF4UG9pbnRTaXplKTtcbiIKKyAgICAgICAgICAgICAg
ICAiICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA9IGlucHV0WzBdLmdsX1Bvc2l0aW9uO1xuIgorICAg
ICAgICAgICAgICAgICIgICAgZmxvYXQyIHZpZXdwb3J0U2NhbGUgPSBmbG9hdDIoMS4wZiAvIGR4
X1ZpZXdDb29yZHMueCwgMS4wZiAvIGR4X1ZpZXdDb29yZHMueSkgKiBnbF9Qb3NpdGlvbi53O1xu
IjsKKworICAgIGZvciAoaW50IGNvcm5lciA9IDA7IGNvcm5lciA8IDQ7IGNvcm5lcisrKQorICAg
IHsKKyAgICAgICAgZ2VvbUhMU0wgKz0gIiAgICBcbiIKKyAgICAgICAgICAgICAgICAgICAgIiAg
ICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbiArIGZsb2F0NChwb2ludFNwcml0ZUNv
cm5lcnNbIiArIHN0cihjb3JuZXIpICsgIl0gKiB2aWV3cG9ydFNjYWxlICogZ2xfUG9pbnRTaXpl
LCAwLjBmLCAwLjBmKTtcbiI7CisKKyAgICAgICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc1Bv
aW50Q29vcmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdlb21ITFNMICs9ICIgICAgb3V0cHV0
LmdsX1BvaW50Q29vcmQgPSBwb2ludFNwcml0ZVRleGNvb3Jkc1siICsgc3RyKGNvcm5lcikgKyAi
XTtcbiI7CisgICAgICAgIH0KKworICAgICAgICBnZW9tSExTTCArPSAiICAgIG91dFN0cmVhbS5B
cHBlbmQob3V0cHV0KTtcbiI7CisgICAgfQorCisgICAgZ2VvbUhMU0wgKz0gIiAgICBcbiIKKyAg
ICAgICAgICAgICAgICAiICAgIG91dFN0cmVhbS5SZXN0YXJ0U3RyaXAoKTtcbiIKKyAgICAgICAg
ICAgICAgICAifVxuIjsKKworICAgIHJldHVybiBnZW9tSExTTDsKK30KKworLy8gVGhpcyBtZXRo
b2QgbmVlZHMgdG8gbWF0Y2ggT3V0cHV0SExTTDo6ZGVjb3JhdGUKK3N0ZDo6c3RyaW5nIFByb2dy
YW1CaW5hcnk6OmRlY29yYXRlQXR0cmlidXRlKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKQorewor
ICAgIGlmIChuYW1lLmNvbXBhcmUoMCwgMywgImdsXyIpICE9IDAgJiYgbmFtZS5jb21wYXJlKDAs
IDMsICJkeF8iKSAhPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJfIiArIG5hbWU7CisgICAg
fQorICAgIAorICAgIHJldHVybiBuYW1lOworfQorCitib29sIFByb2dyYW1CaW5hcnk6OmlzVmFs
aWRhdGVkKCkgY29uc3QgCit7CisgICAgcmV0dXJuIG1WYWxpZGF0ZWQ7Cit9CisKK3ZvaWQgUHJv
Z3JhbUJpbmFyeTo6Z2V0QWN0aXZlQXR0cmlidXRlKEdMdWludCBpbmRleCwgR0xzaXplaSBidWZz
aXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAq
bmFtZSkgY29uc3QKK3sKKyAgICAvLyBTa2lwIG92ZXIgaW5hY3RpdmUgYXR0cmlidXRlcworICAg
IHVuc2lnbmVkIGludCBhY3RpdmVBdHRyaWJ1dGUgPSAwOworICAgIHVuc2lnbmVkIGludCBhdHRy
aWJ1dGU7CisgICAgZm9yIChhdHRyaWJ1dGUgPSAwOyBhdHRyaWJ1dGUgPCBNQVhfVkVSVEVYX0FU
VFJJQlM7IGF0dHJpYnV0ZSsrKQorICAgIHsKKyAgICAgICAgaWYgKG1MaW5rZWRBdHRyaWJ1dGVb
YXR0cmlidXRlXS5uYW1lLmVtcHR5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFjdGl2ZUF0dHJpYnV0ZSA9PSBpbmRleCkKKyAg
ICAgICAgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBhY3RpdmVB
dHRyaWJ1dGUrKzsKKyAgICB9CisKKyAgICBpZiAoYnVmc2l6ZSA+IDApCisgICAgeworICAgICAg
ICBjb25zdCBjaGFyICpzdHJpbmcgPSBtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZV0ubmFtZS5j
X3N0cigpOworCisgICAgICAgIHN0cm5jcHkobmFtZSwgc3RyaW5nLCBidWZzaXplKTsKKyAgICAg
ICAgbmFtZVtidWZzaXplIC0gMV0gPSAnXDAnOworCisgICAgICAgIGlmIChsZW5ndGgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgICpsZW5ndGggPSBzdHJsZW4obmFtZSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAqc2l6ZSA9IDE7ICAgLy8gQWx3YXlzIGEgc2luZ2xlICd0eXBlJyBpbnN0YW5j
ZQorCisgICAgKnR5cGUgPSBtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZV0udHlwZTsKK30KKwor
R0xpbnQgUHJvZ3JhbUJpbmFyeTo6Z2V0QWN0aXZlQXR0cmlidXRlQ291bnQoKSBjb25zdAorewor
ICAgIGludCBjb3VudCA9IDA7CisKKyAgICBmb3IgKGludCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0
dHJpYnV0ZUluZGV4IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBhdHRyaWJ1dGVJbmRleCsrKQorICAg
IHsKKyAgICAgICAgaWYgKCFtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZUluZGV4XS5uYW1lLmVt
cHR5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK0dMaW50IFByb2dyYW1CaW5hcnk6OmdldEFjdGl2
ZUF0dHJpYnV0ZU1heExlbmd0aCgpIGNvbnN0Cit7CisgICAgaW50IG1heExlbmd0aCA9IDA7CisK
KyAgICBmb3IgKGludCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0dHJpYnV0ZUluZGV4IDwgTUFYX1ZF
UlRFWF9BVFRSSUJTOyBhdHRyaWJ1dGVJbmRleCsrKQorICAgIHsKKyAgICAgICAgaWYgKCFtTGlu
a2VkQXR0cmlidXRlW2F0dHJpYnV0ZUluZGV4XS5uYW1lLmVtcHR5KCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1heExlbmd0aCA9IHN0ZDo6bWF4KChpbnQpKG1MaW5rZWRBdHRyaWJ1dGVbYXR0
cmlidXRlSW5kZXhdLm5hbWUubGVuZ3RoKCkgKyAxKSwgbWF4TGVuZ3RoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBtYXhMZW5ndGg7Cit9CisKK3ZvaWQgUHJvZ3JhbUJpbmFyeTo6
Z2V0QWN0aXZlVW5pZm9ybShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUpIGNvbnN0Cit7
CisgICAgQVNTRVJUKGluZGV4IDwgbVVuaWZvcm1zLnNpemUoKSk7ICAgLy8gaW5kZXggbXVzdCBi
ZSBzbWFsbGVyIHRoYW4gZ2V0QWN0aXZlVW5pZm9ybUNvdW50KCkKKworICAgIGlmIChidWZzaXpl
ID4gMCkKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nIHN0cmluZyA9IG1Vbmlmb3Jtc1tpbmRl
eF0tPm5hbWU7CisKKyAgICAgICAgaWYgKG1Vbmlmb3Jtc1tpbmRleF0tPmlzQXJyYXkoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RyaW5nICs9ICJbMF0iOworICAgICAgICB9CisKKyAgICAg
ICAgc3RybmNweShuYW1lLCBzdHJpbmcuY19zdHIoKSwgYnVmc2l6ZSk7CisgICAgICAgIG5hbWVb
YnVmc2l6ZSAtIDFdID0gJ1wwJzsKKworICAgICAgICBpZiAobGVuZ3RoKQorICAgICAgICB7Cisg
ICAgICAgICAgICAqbGVuZ3RoID0gc3RybGVuKG5hbWUpOworICAgICAgICB9CisgICAgfQorCisg
ICAgKnNpemUgPSBtVW5pZm9ybXNbaW5kZXhdLT5lbGVtZW50Q291bnQoKTsKKworICAgICp0eXBl
ID0gbVVuaWZvcm1zW2luZGV4XS0+dHlwZTsKK30KKworR0xpbnQgUHJvZ3JhbUJpbmFyeTo6Z2V0
QWN0aXZlVW5pZm9ybUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVVuaWZvcm1zLnNpemUo
KTsKK30KKworR0xpbnQgUHJvZ3JhbUJpbmFyeTo6Z2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aCgp
IGNvbnN0Cit7CisgICAgaW50IG1heExlbmd0aCA9IDA7CisKKyAgICB1bnNpZ25lZCBpbnQgbnVt
VW5pZm9ybXMgPSBtVW5pZm9ybXMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaW50IHVuaWZv
cm1JbmRleCA9IDA7IHVuaWZvcm1JbmRleCA8IG51bVVuaWZvcm1zOyB1bmlmb3JtSW5kZXgrKykK
KyAgICB7CisgICAgICAgIGlmICghbVVuaWZvcm1zW3VuaWZvcm1JbmRleF0tPm5hbWUuZW1wdHko
KSkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IGxlbmd0aCA9IChpbnQpKG1Vbmlmb3Jtc1t1
bmlmb3JtSW5kZXhdLT5uYW1lLmxlbmd0aCgpICsgMSk7CisgICAgICAgICAgICBpZiAobVVuaWZv
cm1zW3VuaWZvcm1JbmRleF0tPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBsZW5ndGggKz0gMzsgIC8vIENvdW50aW5nIGluICJbMF0iLgorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgbWF4TGVuZ3RoID0gc3RkOjptYXgobGVuZ3RoLCBtYXhMZW5ndGgpOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG1heExlbmd0aDsKK30KKwordm9pZCBQcm9ncmFt
QmluYXJ5Ojp2YWxpZGF0ZShJbmZvTG9nICZpbmZvTG9nKQoreworICAgIGFwcGx5VW5pZm9ybXMo
KTsKKyAgICBpZiAoIXZhbGlkYXRlU2FtcGxlcnMoJmluZm9Mb2cpKQorICAgIHsKKyAgICAgICAg
bVZhbGlkYXRlZCA9IGZhbHNlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtVmFs
aWRhdGVkID0gdHJ1ZTsKKyAgICB9Cit9CisKK2Jvb2wgUHJvZ3JhbUJpbmFyeTo6dmFsaWRhdGVT
YW1wbGVycyhJbmZvTG9nICppbmZvTG9nKQoreworICAgIC8vIGlmIGFueSB0d28gYWN0aXZlIHNh
bXBsZXJzIGluIGEgcHJvZ3JhbSBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBidXQgcmVmZXIgdG8g
dGhlIHNhbWUKKyAgICAvLyB0ZXh0dXJlIGltYWdlIHVuaXQsIGFuZCB0aGlzIGlzIHRoZSBjdXJy
ZW50IHByb2dyYW0sIHRoZW4gVmFsaWRhdGVQcm9ncmFtIHdpbGwgZmFpbCwgYW5kCisgICAgLy8g
RHJhd0FycmF5cyBhbmQgRHJhd0VsZW1lbnRzIHdpbGwgaXNzdWUgdGhlIElOVkFMSURfT1BFUkFU
SU9OIGVycm9yLgorCisgICAgY29uc3QgdW5zaWduZWQgaW50IG1heENvbWJpbmVkVGV4dHVyZUlt
YWdlVW5pdHMgPSBtUmVuZGVyZXItPmdldE1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKTsK
KyAgICBUZXh0dXJlVHlwZSB0ZXh0dXJlVW5pdFR5cGVbSU1QTEVNRU5UQVRJT05fTUFYX0NPTUJJ
TkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBJTVBMRU1FTlRBVElPTl9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUzsgKytp
KQorICAgIHsKKyAgICAgICAgdGV4dHVyZVVuaXRUeXBlW2ldID0gVEVYVFVSRV9VTktOT1dOOwor
ICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbVVzZWRQaXhlbFNhbXBs
ZXJSYW5nZTsgKytpKQorICAgIHsKKyAgICAgICAgaWYgKG1TYW1wbGVyc1BTW2ldLmFjdGl2ZSkK
KyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW50IHVuaXQgPSBtU2FtcGxlcnNQU1tp
XS5sb2dpY2FsVGV4dHVyZVVuaXQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh1bml0
ID49IG1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgaWYgKGluZm9Mb2cpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBpbmZvTG9nLT5hcHBlbmQoIlNhbXBsZXIgdW5pZm9ybSAoJWQpIGV4Y2VlZHMgSU1QTEVN
RU5UQVRJT05fTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMgKCVkKSIsIHVuaXQsIG1h
eENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KHRleHR1cmVVbml0VHlwZVt1bml0XSAhPSBURVhUVVJFX1VOS05PV04pCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKG1TYW1wbGVyc1BTW2ldLnRleHR1cmVUeXBlICE9IHRleHR1
cmVVbml0VHlwZVt1bml0XSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChpbmZvTG9nKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpbmZvTG9nLT5hcHBlbmQoIlNhbXBsZXJzIG9mIGNvbmZsaWN0aW5nIHR5cGVzIHJlZmVy
IHRvIHRoZSBzYW1lIHRleHR1cmUgaW1hZ2UgdW5pdCAoJWQpLiIsIHVuaXQpOworICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlVW5pdFR5cGVbdW5pdF0gPSBtU2FtcGxlcnNQU1tp
XS50ZXh0dXJlVHlwZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2U7ICsraSkK
KyAgICB7CisgICAgICAgIGlmIChtU2FtcGxlcnNWU1tpXS5hY3RpdmUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGludCB1bml0ID0gbVNhbXBsZXJzVlNbaV0ubG9naWNhbFRleHR1
cmVVbml0OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodW5pdCA+PSBtYXhDb21iaW5l
ZFRleHR1cmVJbWFnZVVuaXRzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChp
bmZvTG9nKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW5mb0xvZy0+
YXBwZW5kKCJTYW1wbGVyIHVuaWZvcm0gKCVkKSBleGNlZWRzIElNUExFTUVOVEFUSU9OX01BWF9D
T01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTICglZCkiLCB1bml0LCBtYXhDb21iaW5lZFRleHR1
cmVJbWFnZVVuaXRzKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlVW5pdFR5
cGVbdW5pdF0gIT0gVEVYVFVSRV9VTktOT1dOKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGlmIChtU2FtcGxlcnNWU1tpXS50ZXh0dXJlVHlwZSAhPSB0ZXh0dXJlVW5pdFR5cGVbdW5p
dF0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoaW5mb0xvZykK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb0xvZy0+
YXBwZW5kKCJTYW1wbGVycyBvZiBjb25mbGljdGluZyB0eXBlcyByZWZlciB0byB0aGUgc2FtZSB0
ZXh0dXJlIGltYWdlIHVuaXQgKCVkKS4iLCB1bml0KTsKKyAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgdGV4dHVyZVVuaXRUeXBlW3VuaXRdID0gbVNhbXBsZXJzVlNbaV0udGV4dHVyZVR5cGU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworUHJvZ3JhbUJpbmFyeTo6U2FtcGxlcjo6U2FtcGxlcigpIDogYWN0aXZlKGZhbHNlKSwgbG9n
aWNhbFRleHR1cmVVbml0KDApLCB0ZXh0dXJlVHlwZShURVhUVVJFXzJEKQoreworfQorCitzdHJ1
Y3QgQXR0cmlidXRlU29ydGVyCit7CisgICAgQXR0cmlidXRlU29ydGVyKGNvbnN0IGludCAoJnNl
bWFudGljSW5kaWNlcylbTUFYX1ZFUlRFWF9BVFRSSUJTXSkKKyAgICAgICAgOiBvcmlnaW5hbElu
ZGljZXMoc2VtYW50aWNJbmRpY2VzKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgaW5kaWNl
c1tpXSA9IGk7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6OnNvcnQoJmluZGljZXNbMF0sICZp
bmRpY2VzW01BWF9WRVJURVhfQVRUUklCU10sICp0aGlzKTsKKyAgICB9CisKKyAgICBib29sIG9w
ZXJhdG9yKCkoaW50IGEsIGludCBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsSW5k
aWNlc1thXSA9PSAtMSA/IGZhbHNlIDogb3JpZ2luYWxJbmRpY2VzW2FdIDwgb3JpZ2luYWxJbmRp
Y2VzW2JdOworICAgIH0KKworICAgIGludCBpbmRpY2VzW01BWF9WRVJURVhfQVRUUklCU107Cisg
ICAgY29uc3QgaW50ICgmb3JpZ2luYWxJbmRpY2VzKVtNQVhfVkVSVEVYX0FUVFJJQlNdOworfTsK
Kwordm9pZCBQcm9ncmFtQmluYXJ5Ojpzb3J0QXR0cmlidXRlc0J5TGF5b3V0KHJ4OjpUcmFuc2xh
dGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNbTUFYX1ZFUlRFWF9BVFRSSUJTXSwgaW50IHNvcnRlZFNl
bWFudGljSW5kaWNlc1tNQVhfVkVSVEVYX0FUVFJJQlNdKSBjb25zdAoreworICAgIEF0dHJpYnV0
ZVNvcnRlciBzb3J0ZXIobVNlbWFudGljSW5kZXgpOworCisgICAgaW50IG9sZEluZGljZXNbTUFY
X1ZFUlRFWF9BVFRSSUJTXTsKKyAgICByeDo6VHJhbnNsYXRlZEF0dHJpYnV0ZSBvbGRUcmFuc2xh
dGVkQXR0cmlidXRlc1tNQVhfVkVSVEVYX0FUVFJJQlNdOworCisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7CisgICAgICAgIG9sZEluZGljZXNb
aV0gPSBtU2VtYW50aWNJbmRleFtpXTsKKyAgICAgICAgb2xkVHJhbnNsYXRlZEF0dHJpYnV0ZXNb
aV0gPSBhdHRyaWJ1dGVzW2ldOworICAgIH0KKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFY
X1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBpbnQgb2xkSW5kZXggPSBzb3J0
ZXIuaW5kaWNlc1tpXTsKKyAgICAgICAgc29ydGVkU2VtYW50aWNJbmRpY2VzW2ldID0gb2xkSW5k
aWNlc1tvbGRJbmRleF07CisgICAgICAgIGF0dHJpYnV0ZXNbaV0gPSBvbGRUcmFuc2xhdGVkQXR0
cmlidXRlc1tvbGRJbmRleF07CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbUJp
bmFyeS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3NCBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gUHJvZ3JhbS5oOiBEZWZpbmVzIHRoZSBnbDo6UHJvZ3JhbSBjbGFzcy4gSW1wbGVtZW50
cyBHTCBwcm9ncmFtIG9iamVjdHMKKy8vIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIFtPcGVu
R0wgRVMgMi4wLjI0XSBzZWN0aW9uIDIuMTAuMyBwYWdlIDI4LgorCisjaWZuZGVmIExJQkdMRVNW
Ml9QUk9HUkFNX0JJTkFSWV9IXworI2RlZmluZSBMSUJHTEVTVjJfUFJPR1JBTV9CSU5BUllfSF8K
KworI2RlZmluZSBHTF9BUElDQUxMCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8
R0xFUzIvZ2wyZXh0Lmg+CisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgor
CisjaW5jbHVkZSAiY29tbW9uL1JlZkNvdW50T2JqZWN0LmgiCisjaW5jbHVkZSAiYW5nbGV0eXBl
cy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9Vbmlmb3JtLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1NoYWRlci5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9Db25zdGFudHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBTaGFkZXJFeGVj
dXRhYmxlOworY2xhc3MgUmVuZGVyZXI7CitzdHJ1Y3QgVHJhbnNsYXRlZEF0dHJpYnV0ZTsKK30K
KworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBGcmFnbWVudFNoYWRlcjsKK2NsYXNzIFZlcnRleFNo
YWRlcjsKK2NsYXNzIEluZm9Mb2c7CitjbGFzcyBBdHRyaWJ1dGVCaW5kaW5nczsKK3N0cnVjdCBW
YXJ5aW5nOworCisvLyBTdHJ1Y3QgdXNlZCBmb3IgY29ycmVsYXRpbmcgdW5pZm9ybXMvZWxlbWVu
dHMgb2YgdW5pZm9ybSBhcnJheXMgdG8gaGFuZGxlcworc3RydWN0IFVuaWZvcm1Mb2NhdGlvbgor
eworICAgIFVuaWZvcm1Mb2NhdGlvbigpCisgICAgeworICAgIH0KKworICAgIFVuaWZvcm1Mb2Nh
dGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgdW5zaWduZWQgaW50IGVsZW1lbnQsIHVuc2ln
bmVkIGludCBpbmRleCk7CisKKyAgICBzdGQ6OnN0cmluZyBuYW1lOworICAgIHVuc2lnbmVkIGlu
dCBlbGVtZW50OworICAgIHVuc2lnbmVkIGludCBpbmRleDsKK307CisKKy8vIFRoaXMgaXMgdGhl
IHJlc3VsdCBvZiBsaW5raW5nIGEgcHJvZ3JhbS4gSXQgaXMgdGhlIHN0YXRlIHRoYXQgd291bGQg
YmUgcGFzc2VkIHRvIFByb2dyYW1CaW5hcnkuCitjbGFzcyBQcm9ncmFtQmluYXJ5IDogcHVibGlj
IFJlZkNvdW50T2JqZWN0Cit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBQcm9ncmFtQmluYXJ5
KHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIpOworICAgIH5Qcm9ncmFtQmluYXJ5KCk7CisKKyAgICBy
eDo6U2hhZGVyRXhlY3V0YWJsZSAqZ2V0UGl4ZWxFeGVjdXRhYmxlKCk7CisgICAgcng6OlNoYWRl
ckV4ZWN1dGFibGUgKmdldFZlcnRleEV4ZWN1dGFibGUoKTsKKyAgICByeDo6U2hhZGVyRXhlY3V0
YWJsZSAqZ2V0R2VvbWV0cnlFeGVjdXRhYmxlKCk7CisKKyAgICBHTHVpbnQgZ2V0QXR0cmlidXRl
TG9jYXRpb24oY29uc3QgY2hhciAqbmFtZSk7CisgICAgaW50IGdldFNlbWFudGljSW5kZXgoaW50
IGF0dHJpYnV0ZUluZGV4KTsKKworICAgIEdMaW50IGdldFNhbXBsZXJNYXBwaW5nKFNhbXBsZXJU
eXBlIHR5cGUsIHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXgpOworICAgIFRleHR1cmVUeXBlIGdl
dFNhbXBsZXJUZXh0dXJlVHlwZShTYW1wbGVyVHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgc2FtcGxl
ckluZGV4KTsKKyAgICBHTGludCBnZXRVc2VkU2FtcGxlclJhbmdlKFNhbXBsZXJUeXBlIHR5cGUp
OworICAgIGJvb2wgdXNlc1BvaW50U2l6ZSgpIGNvbnN0OworICAgIGJvb2wgdXNlc1BvaW50U3By
aXRlRW11bGF0aW9uKCkgY29uc3Q7CisgICAgYm9vbCB1c2VzR2VvbWV0cnlTaGFkZXIoKSBjb25z
dDsKKworICAgIEdMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihzdGQ6OnN0cmluZyBuYW1lKTsKKyAg
ICBib29sIHNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZmxvYXQgKnYpOworICAgIGJvb2wgc2V0VW5pZm9ybTJmdihHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7CisgICAgYm9vbCBzZXRVbmlmb3JtM2Z2KEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsKKyAgICBib29s
IHNldFVuaWZvcm00ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxv
YXQgKnYpOworICAgIGJvb2wgc2V0VW5pZm9ybU1hdHJpeDJmdihHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworICAgIGJvb2wgc2V0VW5pZm9ybU1h
dHJpeDNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFs
dWUpOworICAgIGJvb2wgc2V0VW5pZm9ybU1hdHJpeDRmdihHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworICAgIGJvb2wgc2V0VW5pZm9ybTFpdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOworICAgIGJvb2wg
c2V0VW5pZm9ybTJpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQg
KnYpOworICAgIGJvb2wgc2V0VW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xpbnQgKnYpOworICAgIGJvb2wgc2V0VW5pZm9ybTRpdihHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOworCisgICAgYm9vbCBnZXRVbmlmb3Jt
ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgKmJ1ZlNpemUsIEdMZmxvYXQgKnBhcmFtcyk7Cisg
ICAgYm9vbCBnZXRVbmlmb3JtaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgKmJ1ZlNpemUsIEdM
aW50ICpwYXJhbXMpOworCisgICAgdm9pZCBkaXJ0eUFsbFVuaWZvcm1zKCk7CisgICAgdm9pZCBh
cHBseVVuaWZvcm1zKCk7CisKKyAgICBib29sIGxvYWQoSW5mb0xvZyAmaW5mb0xvZywgY29uc3Qg
dm9pZCAqYmluYXJ5LCBHTHNpemVpIGxlbmd0aCk7CisgICAgYm9vbCBzYXZlKHZvaWQqIGJpbmFy
eSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgpOworICAgIEdMaW50IGdldExlbmd0
aCgpOworCisgICAgYm9vbCBsaW5rKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IEF0dHJpYnV0ZUJp
bmRpbmdzICZhdHRyaWJ1dGVCaW5kaW5ncywgRnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVy
LCBWZXJ0ZXhTaGFkZXIgKnZlcnRleFNoYWRlcik7CisgICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRl
cnMoR0xzaXplaSBtYXhDb3VudCwgR0xzaXplaSAqY291bnQsIEdMdWludCAqc2hhZGVycyk7CisK
KyAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYnV0ZShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6
ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5h
bWUpIGNvbnN0OworICAgIEdMaW50IGdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCkgY29uc3Q7Cisg
ICAgR0xpbnQgZ2V0QWN0aXZlQXR0cmlidXRlTWF4TGVuZ3RoKCkgY29uc3Q7CisKKyAgICB2b2lk
IGdldEFjdGl2ZVVuaWZvcm0oR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKSBjb25zdDsK
KyAgICBHTGludCBnZXRBY3RpdmVVbmlmb3JtQ291bnQoKSBjb25zdDsKKyAgICBHTGludCBnZXRB
Y3RpdmVVbmlmb3JtTWF4TGVuZ3RoKCkgY29uc3Q7CisKKyAgICB2b2lkIHZhbGlkYXRlKEluZm9M
b2cgJmluZm9Mb2cpOworICAgIGJvb2wgdmFsaWRhdGVTYW1wbGVycyhJbmZvTG9nICppbmZvTG9n
KTsKKyAgICBib29sIGlzVmFsaWRhdGVkKCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCBpbnQgZ2V0
U2VyaWFsKCkgY29uc3Q7CisKKyAgICB2b2lkIHNvcnRBdHRyaWJ1dGVzQnlMYXlvdXQocng6OlRy
YW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSwgaW50
IHNvcnRlZFNlbWFudGljSW5kaWNlc1tNQVhfVkVSVEVYX0FUVFJJQlNdKSBjb25zdDsKKworICAg
IHN0YXRpYyBzdGQ6OnN0cmluZyBkZWNvcmF0ZUF0dHJpYnV0ZShjb25zdCBzdGQ6OnN0cmluZyAm
bmFtZSk7ICAgIC8vIFByZXBlbmQgYW4gdW5kZXJzY29yZQorCisgIHByaXZhdGU6CisgICAgRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKFByb2dyYW1CaW5hcnkpOworCisgICAgaW50IHBhY2tWYXJ5
aW5ncyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBWYXJ5aW5nICpwYWNraW5nW11bNF0sIEZyYWdt
ZW50U2hhZGVyICpmcmFnbWVudFNoYWRlcik7CisgICAgYm9vbCBsaW5rVmFyeWluZ3MoSW5mb0xv
ZyAmaW5mb0xvZywgaW50IHJlZ2lzdGVycywgY29uc3QgVmFyeWluZyAqcGFja2luZ1tdWzRdLAor
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nJiBwaXhlbEhMU0wsIHN0ZDo6c3RyaW5n
JiB2ZXJ0ZXhITFNMLAorICAgICAgICAgICAgICAgICAgICAgIEZyYWdtZW50U2hhZGVyICpmcmFn
bWVudFNoYWRlciwgVmVydGV4U2hhZGVyICp2ZXJ0ZXhTaGFkZXIpOworCisgICAgYm9vbCBsaW5r
QXR0cmlidXRlcyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBBdHRyaWJ1dGVCaW5kaW5ncyAmYXR0
cmlidXRlQmluZGluZ3MsIEZyYWdtZW50U2hhZGVyICpmcmFnbWVudFNoYWRlciwgVmVydGV4U2hh
ZGVyICp2ZXJ0ZXhTaGFkZXIpOworCisgICAgYm9vbCBsaW5rVW5pZm9ybXMoSW5mb0xvZyAmaW5m
b0xvZywgY29uc3Qgc2g6OkFjdGl2ZVVuaWZvcm1zICZ2ZXJ0ZXhVbmlmb3JtcywgY29uc3Qgc2g6
OkFjdGl2ZVVuaWZvcm1zICZmcmFnbWVudFVuaWZvcm1zKTsKKyAgICBib29sIGRlZmluZVVuaWZv
cm0oR0xlbnVtIHNoYWRlciwgY29uc3Qgc2g6OlVuaWZvcm0gJmNvbnN0YW50LCBJbmZvTG9nICZp
bmZvTG9nKTsKKyAgICAKKyAgICBzdGQ6OnN0cmluZyBnZW5lcmF0ZUdlb21ldHJ5U2hhZGVySExT
TChpbnQgcmVnaXN0ZXJzLCBjb25zdCBWYXJ5aW5nICpwYWNraW5nW11bNF0sIEZyYWdtZW50U2hh
ZGVyICpmcmFnbWVudFNoYWRlciwgVmVydGV4U2hhZGVyICp2ZXJ0ZXhTaGFkZXIpIGNvbnN0Owor
ICAgIHN0ZDo6c3RyaW5nIGdlbmVyYXRlUG9pbnRTcHJpdGVITFNMKGludCByZWdpc3RlcnMsIGNv
bnN0IFZhcnlpbmcgKnBhY2tpbmdbXVs0XSwgRnJhZ21lbnRTaGFkZXIgKmZyYWdtZW50U2hhZGVy
LCBWZXJ0ZXhTaGFkZXIgKnZlcnRleFNoYWRlcikgY29uc3Q7CisKKyAgICByeDo6UmVuZGVyZXIg
KmNvbnN0IG1SZW5kZXJlcjsKKworICAgIHJ4OjpTaGFkZXJFeGVjdXRhYmxlICptUGl4ZWxFeGVj
dXRhYmxlOworICAgIHJ4OjpTaGFkZXJFeGVjdXRhYmxlICptVmVydGV4RXhlY3V0YWJsZTsKKyAg
ICByeDo6U2hhZGVyRXhlY3V0YWJsZSAqbUdlb21ldHJ5RXhlY3V0YWJsZTsKKworICAgIEF0dHJp
YnV0ZSBtTGlua2VkQXR0cmlidXRlW01BWF9WRVJURVhfQVRUUklCU107CisgICAgaW50IG1TZW1h
bnRpY0luZGV4W01BWF9WRVJURVhfQVRUUklCU107CisKKyAgICBzdHJ1Y3QgU2FtcGxlcgorICAg
IHsKKyAgICAgICAgU2FtcGxlcigpOworCisgICAgICAgIGJvb2wgYWN0aXZlOworICAgICAgICBH
TGludCBsb2dpY2FsVGV4dHVyZVVuaXQ7CisgICAgICAgIFRleHR1cmVUeXBlIHRleHR1cmVUeXBl
OworICAgIH07CisKKyAgICBTYW1wbGVyIG1TYW1wbGVyc1BTW01BWF9URVhUVVJFX0lNQUdFX1VO
SVRTXTsKKyAgICBTYW1wbGVyIG1TYW1wbGVyc1ZTW0lNUExFTUVOVEFUSU9OX01BWF9WRVJURVhf
VEVYVFVSRV9JTUFHRV9VTklUU107CisgICAgR0x1aW50IG1Vc2VkVmVydGV4U2FtcGxlclJhbmdl
OworICAgIEdMdWludCBtVXNlZFBpeGVsU2FtcGxlclJhbmdlOworICAgIGJvb2wgbVVzZXNQb2lu
dFNpemU7CisKKyAgICBVbmlmb3JtQXJyYXkgbVVuaWZvcm1zOworICAgIHR5cGVkZWYgc3RkOjp2
ZWN0b3I8VW5pZm9ybUxvY2F0aW9uPiBVbmlmb3JtSW5kZXg7CisgICAgVW5pZm9ybUluZGV4IG1V
bmlmb3JtSW5kZXg7CisKKyAgICBib29sIG1WYWxpZGF0ZWQ7CisKKyAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgbVNlcmlhbDsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXNzdWVTZXJpYWwoKTsK
KyAgICBzdGF0aWMgdW5zaWduZWQgaW50IG1DdXJyZW50U2VyaWFsOworfTsKK30KKworI2VuZGlm
ICAgLy8gTElCR0xFU1YyX1BST0dSQU1fQklOQVJZX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL1F1ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1F1ZXJ5LmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUXVlcnkuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDUyIEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyBRdWVyeS5jcHA6IEltcGxlbWVudHMgdGhlIGdsOjpRdWVyeSBjbGFzcworCisjaW5j
bHVkZSAibGliR0xFU3YyL1F1ZXJ5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1F1
ZXJ5SW1wbC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oIgorCitu
YW1lc3BhY2UgZ2wKK3sKKworUXVlcnk6OlF1ZXJ5KHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIEdM
ZW51bSB0eXBlLCBHTHVpbnQgaWQpIDogUmVmQ291bnRPYmplY3QoaWQpCit7IAorICAgIG1RdWVy
eSA9IHJlbmRlcmVyLT5jcmVhdGVRdWVyeSh0eXBlKTsKK30KKworUXVlcnk6On5RdWVyeSgpCit7
CisgICAgZGVsZXRlIG1RdWVyeTsKK30KKwordm9pZCBRdWVyeTo6YmVnaW4oKQoreworICAgIG1R
dWVyeS0+YmVnaW4oKTsKK30KKwordm9pZCBRdWVyeTo6ZW5kKCkKK3sKKyAgICBtUXVlcnktPmVu
ZCgpOworfQorCitHTHVpbnQgUXVlcnk6OmdldFJlc3VsdCgpCit7CisgICAgcmV0dXJuIG1RdWVy
eS0+Z2V0UmVzdWx0KCk7Cit9CisKK0dMYm9vbGVhbiBRdWVyeTo6aXNSZXN1bHRBdmFpbGFibGUo
KQoreworICAgIHJldHVybiBtUXVlcnktPmlzUmVzdWx0QXZhaWxhYmxlKCk7Cit9CisKK0dMZW51
bSBRdWVyeTo6Z2V0VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1RdWVyeS0+Z2V0VHlwZSgp
OworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1F1
ZXJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9RdWVyeS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9RdWVyeS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gUXVlcnkuaDogRGVmaW5lcyB0aGUgZ2w6OlF1ZXJ5IGNsYXNzCisKKyNpZm5kZWYg
TElCR0xFU1YyX1FVRVJZX0hfCisjZGVmaW5lIExJQkdMRVNWMl9RVUVSWV9IXworCisjZGVmaW5l
IEdMX0FQSUNBTEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKworI2luY2x1ZGUgImNvbW1vbi9h
bmdsZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL1JlZkNvdW50T2JqZWN0LmgiCisKK25hbWVz
cGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBRdWVyeUltcGw7Cit9CisKK25hbWVz
cGFjZSBnbAoreworCitjbGFzcyBRdWVyeSA6IHB1YmxpYyBSZWZDb3VudE9iamVjdAoreworICBw
dWJsaWM6CisgICAgUXVlcnkocng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0xlbnVtIHR5cGUsIEdM
dWludCBpZCk7CisgICAgdmlydHVhbCB+UXVlcnkoKTsKKworICAgIHZvaWQgYmVnaW4oKTsKKyAg
ICB2b2lkIGVuZCgpOworCisgICAgR0x1aW50IGdldFJlc3VsdCgpOworICAgIEdMYm9vbGVhbiBp
c1Jlc3VsdEF2YWlsYWJsZSgpOworCisgICAgR0xlbnVtIGdldFR5cGUoKSBjb25zdDsKKworICBw
cml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihRdWVyeSk7CisKKyAgICByeDo6
UXVlcnlJbXBsICptUXVlcnk7Cit9OworCit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9RVUVS
WV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZW5kZXJi
dWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvUmVuZGVyYnVmZmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0ODUgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gUmVuZGVyYnVmZmVyLmNwcDogdGhlIGdsOjpSZW5kZXJidWZmZXIgY2xhc3MgYW5kIGl0
cyBkZXJpdmVkIGNsYXNzZXMKKy8vIENvbG9yYnVmZmVyLCBEZXB0aGJ1ZmZlciBhbmQgU3RlbmNp
bGJ1ZmZlci4gSW1wbGVtZW50cyBHTCByZW5kZXJidWZmZXIKKy8vIG9iamVjdHMgYW5kIHJlbGF0
ZWQgZnVuY3Rpb25hbGl0eS4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gNC40LjMgcGFnZSAx
MDguCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldC5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL1Rl
eHR1cmUuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIuaCIKKyNpbmNs
dWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBnbAorewordW5zaWduZWQg
aW50IFJlbmRlcmJ1ZmZlclN0b3JhZ2U6Om1DdXJyZW50U2VyaWFsID0gMTsKKworUmVuZGVyYnVm
ZmVySW50ZXJmYWNlOjpSZW5kZXJidWZmZXJJbnRlcmZhY2UoKQoreworfQorCisvLyBUaGUgZGVm
YXVsdCBjYXNlIGZvciBjbGFzc2VzIGluaGVyaXRlZCBmcm9tIFJlbmRlcmJ1ZmZlckludGVyZmFj
ZSBpcyBub3QgdG8KKy8vIG5lZWQgdG8gZG8gYW55dGhpbmcgdXBvbiB0aGUgcmVmZXJlbmNlIGNv
dW50IHRvIHRoZSBwYXJlbnQgUmVuZGVyYnVmZmVyIGluY3JlbWVudGluZworLy8gb3IgZGVjcmVt
ZW50aW5nLiAKK3ZvaWQgUmVuZGVyYnVmZmVySW50ZXJmYWNlOjphZGRQcm94eVJlZihjb25zdCBS
ZW5kZXJidWZmZXIgKnByb3h5KQoreworfQorCit2b2lkIFJlbmRlcmJ1ZmZlckludGVyZmFjZTo6
cmVsZWFzZVByb3h5KGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCit7Cit9CisKK0dMdWludCBS
ZW5kZXJidWZmZXJJbnRlcmZhY2U6OmdldFJlZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBn
bDo6R2V0UmVkU2l6ZShnZXRBY3R1YWxGb3JtYXQoKSk7Cit9CisKK0dMdWludCBSZW5kZXJidWZm
ZXJJbnRlcmZhY2U6OmdldEdyZWVuU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdsOjpHZXRH
cmVlblNpemUoZ2V0QWN0dWFsRm9ybWF0KCkpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVySW50
ZXJmYWNlOjpnZXRCbHVlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdsOjpHZXRCbHVlU2l6
ZShnZXRBY3R1YWxGb3JtYXQoKSk7Cit9CisKK0dMdWludCBSZW5kZXJidWZmZXJJbnRlcmZhY2U6
OmdldEFscGhhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdsOjpHZXRBbHBoYVNpemUoZ2V0
QWN0dWFsRm9ybWF0KCkpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVySW50ZXJmYWNlOjpnZXRE
ZXB0aFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBnbDo6R2V0RGVwdGhTaXplKGdldEFjdHVh
bEZvcm1hdCgpKTsKK30KKworR0x1aW50IFJlbmRlcmJ1ZmZlckludGVyZmFjZTo6Z2V0U3RlbmNp
bFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBnbDo6R2V0U3RlbmNpbFNpemUoZ2V0QWN0dWFs
Rm9ybWF0KCkpOworfQorCisvLy8vLyBSZW5kZXJidWZmZXJUZXh0dXJlMkQgSW1wbGVtZW50YXRp
b24gLy8vLy8vLy8KKworUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpSZW5kZXJidWZmZXJUZXh0dXJl
MkQoVGV4dHVyZTJEICp0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0KSA6IG1UYXJnZXQodGFyZ2V0KQor
eworICAgIG1UZXh0dXJlMkQuc2V0KHRleHR1cmUpOworfQorCitSZW5kZXJidWZmZXJUZXh0dXJl
MkQ6On5SZW5kZXJidWZmZXJUZXh0dXJlMkQoKQoreworICAgIG1UZXh0dXJlMkQuc2V0KE5VTEwp
OworfQorCisvLyBUZXh0dXJlcyBuZWVkIHRvIG1haW50YWluIHRoZWlyIG93biByZWZlcmVuY2Ug
Y291bnQgZm9yIHJlZmVyZW5jZXMgdmlhCisvLyBSZW5kZXJidWZmZXJzIGFjdGluZyBhcyBwcm94
aWVzLiBIZXJlLCB3ZSBub3RpZnkgdGhlIHRleHR1cmUgb2YgYSByZWZlcmVuY2UuCit2b2lkIFJl
bmRlcmJ1ZmZlclRleHR1cmUyRDo6YWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94
eSkKK3sKKyAgICBtVGV4dHVyZTJELT5hZGRQcm94eVJlZihwcm94eSk7Cit9CisKK3ZvaWQgUmVu
ZGVyYnVmZmVyVGV4dHVyZTJEOjpyZWxlYXNlUHJveHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94
eSkKK3sKKyAgICBtVGV4dHVyZTJELT5yZWxlYXNlUHJveHkocHJveHkpOworfQorCityeDo6UmVu
ZGVyVGFyZ2V0ICpSZW5kZXJidWZmZXJUZXh0dXJlMkQ6OmdldFJlbmRlclRhcmdldCgpCit7Cisg
ICAgcmV0dXJuIG1UZXh0dXJlMkQtPmdldFJlbmRlclRhcmdldChtVGFyZ2V0KTsKK30KKworcng6
OlJlbmRlclRhcmdldCAqUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXREZXB0aFN0ZW5jaWwoKQor
eworICAgIHJldHVybiBtVGV4dHVyZTJELT5nZXREZXB0aFN0ZW5jaWwobVRhcmdldCk7Cit9CisK
K0dMc2l6ZWkgUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRXaWR0aCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1UZXh0dXJlMkQtPmdldFdpZHRoKDApOworfQorCitHTHNpemVpIFJlbmRlcmJ1ZmZl
clRleHR1cmUyRDo6Z2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmUyRC0+
Z2V0SGVpZ2h0KDApOworfQorCitHTGVudW0gUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRJbnRl
cm5hbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlMkQtPmdldEludGVybmFs
Rm9ybWF0KDApOworfQorCitHTGVudW0gUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRBY3R1YWxG
b3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZTJELT5nZXRBY3R1YWxGb3JtYXQo
MCk7Cit9CisKK0dMc2l6ZWkgUmVuZGVyYnVmZmVyVGV4dHVyZTJEOjpnZXRTYW1wbGVzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmJ1ZmZlclRleHR1
cmUyRDo6Z2V0U2VyaWFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmUyRC0+Z2V0UmVu
ZGVyVGFyZ2V0U2VyaWFsKG1UYXJnZXQpOworfQorCisvLy8vLyBSZW5kZXJidWZmZXJUZXh0dXJl
Q3ViZU1hcCBJbXBsZW1lbnRhdGlvbiAvLy8vLy8vLworCitSZW5kZXJidWZmZXJUZXh0dXJlQ3Vi
ZU1hcDo6UmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXAoVGV4dHVyZUN1YmVNYXAgKnRleHR1cmUs
IEdMZW51bSB0YXJnZXQpIDogbVRhcmdldCh0YXJnZXQpCit7CisgICAgbVRleHR1cmVDdWJlTWFw
LnNldCh0ZXh0dXJlKTsKK30KKworUmVuZGVyYnVmZmVyVGV4dHVyZUN1YmVNYXA6On5SZW5kZXJi
dWZmZXJUZXh0dXJlQ3ViZU1hcCgpCit7CisgICAgbVRleHR1cmVDdWJlTWFwLnNldChOVUxMKTsK
K30KKworLy8gVGV4dHVyZXMgbmVlZCB0byBtYWludGFpbiB0aGVpciBvd24gcmVmZXJlbmNlIGNv
dW50IGZvciByZWZlcmVuY2VzIHZpYQorLy8gUmVuZGVyYnVmZmVycyBhY3RpbmcgYXMgcHJveGll
cy4gSGVyZSwgd2Ugbm90aWZ5IHRoZSB0ZXh0dXJlIG9mIGEgcmVmZXJlbmNlLgordm9pZCBSZW5k
ZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6YWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpw
cm94eSkKK3sKKyAgICBtVGV4dHVyZUN1YmVNYXAtPmFkZFByb3h5UmVmKHByb3h5KTsKK30KKwor
dm9pZCBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6cmVsZWFzZVByb3h5KGNvbnN0IFJlbmRl
cmJ1ZmZlciAqcHJveHkpCit7CisgICAgbVRleHR1cmVDdWJlTWFwLT5yZWxlYXNlUHJveHkocHJv
eHkpOworfQorCityeDo6UmVuZGVyVGFyZ2V0ICpSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcDo6
Z2V0UmVuZGVyVGFyZ2V0KCkKK3sKKyAgICByZXR1cm4gbVRleHR1cmVDdWJlTWFwLT5nZXRSZW5k
ZXJUYXJnZXQobVRhcmdldCk7Cit9CisKK3J4OjpSZW5kZXJUYXJnZXQgKlJlbmRlcmJ1ZmZlclRl
eHR1cmVDdWJlTWFwOjpnZXREZXB0aFN0ZW5jaWwoKQoreworICAgIHJldHVybiBOVUxMOworfQor
CitHTHNpemVpIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRXaWR0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1UZXh0dXJlQ3ViZU1hcC0+Z2V0V2lkdGgoR0xfVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9YLCAwKTsKK30KKworR0xzaXplaSBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1h
cDo6Z2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmVDdWJlTWFwLT5nZXRI
ZWlnaHQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwKTsKK30KKworR0xlbnVtIFJl
bmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1UZXh0dXJlQ3ViZU1hcC0+Z2V0SW50ZXJuYWxGb3JtYXQoR0xfVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9YLCAwKTsKK30KKworR0xlbnVtIFJlbmRlcmJ1ZmZlclRleHR1cmVD
dWJlTWFwOjpnZXRBY3R1YWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZUN1
YmVNYXAtPmdldEFjdHVhbEZvcm1hdChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAp
OworfQorCitHTHNpemVpIFJlbmRlcmJ1ZmZlclRleHR1cmVDdWJlTWFwOjpnZXRTYW1wbGVzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmJ1ZmZlclRl
eHR1cmVDdWJlTWFwOjpnZXRTZXJpYWwoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZUN1
YmVNYXAtPmdldFJlbmRlclRhcmdldFNlcmlhbChtVGFyZ2V0KTsKK30KKworLy8vLy8vIFJlbmRl
cmJ1ZmZlciBJbXBsZW1lbnRhdGlvbiAvLy8vLy8KKworUmVuZGVyYnVmZmVyOjpSZW5kZXJidWZm
ZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGlkLCBSZW5kZXJidWZmZXJJbnRlcmZh
Y2UgKmluc3RhbmNlKSA6IFJlZkNvdW50T2JqZWN0KGlkKQoreworICAgIEFTU0VSVChpbnN0YW5j
ZSAhPSBOVUxMKTsKKyAgICBtSW5zdGFuY2UgPSBpbnN0YW5jZTsKK30KKworUmVuZGVyYnVmZmVy
Ojp+UmVuZGVyYnVmZmVyKCkKK3sKKyAgICBkZWxldGUgbUluc3RhbmNlOworfQorCisvLyBUaGUg
UmVuZGVyYnVmZmVySW50ZXJmYWNlIGNvbnRhaW5lZCBpbiB0aGlzIFJlbmRlcmJ1ZmZlciBtYXkg
bmVlZCB0byBtYWludGFpbgorLy8gaXRzIG93biByZWZlcmVuY2UgY291bnQsIHNvIHdlIHBhc3Mg
aXQgb24gaGVyZS4KK3ZvaWQgUmVuZGVyYnVmZmVyOjphZGRSZWYoKSBjb25zdAoreworICAgIG1J
bnN0YW5jZS0+YWRkUHJveHlSZWYodGhpcyk7CisKKyAgICBSZWZDb3VudE9iamVjdDo6YWRkUmVm
KCk7Cit9CisKK3ZvaWQgUmVuZGVyYnVmZmVyOjpyZWxlYXNlKCkgY29uc3QKK3sKKyAgICBtSW5z
dGFuY2UtPnJlbGVhc2VQcm94eSh0aGlzKTsKKworICAgIFJlZkNvdW50T2JqZWN0OjpyZWxlYXNl
KCk7Cit9CisKK3J4OjpSZW5kZXJUYXJnZXQgKlJlbmRlcmJ1ZmZlcjo6Z2V0UmVuZGVyVGFyZ2V0
KCkKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRSZW5kZXJUYXJnZXQoKTsKK30KKworcng6
OlJlbmRlclRhcmdldCAqUmVuZGVyYnVmZmVyOjpnZXREZXB0aFN0ZW5jaWwoKQoreworICAgIHJl
dHVybiBtSW5zdGFuY2UtPmdldERlcHRoU3RlbmNpbCgpOworfQorCitHTHNpemVpIFJlbmRlcmJ1
ZmZlcjo6Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtSW5zdGFuY2UtPmdldFdpZHRo
KCk7Cit9CisKK0dMc2l6ZWkgUmVuZGVyYnVmZmVyOjpnZXRIZWlnaHQoKSBjb25zdAoreworICAg
IHJldHVybiBtSW5zdGFuY2UtPmdldEhlaWdodCgpOworfQorCitHTGVudW0gUmVuZGVyYnVmZmVy
OjpnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0
SW50ZXJuYWxGb3JtYXQoKTsKK30KKworR0xlbnVtIFJlbmRlcmJ1ZmZlcjo6Z2V0QWN0dWFsRm9y
bWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRBY3R1YWxGb3JtYXQoKTsK
K30KKworR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0UmVkU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1JbnN0YW5jZS0+Z2V0UmVkU2l6ZSgpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVyOjpn
ZXRHcmVlblNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtSW5zdGFuY2UtPmdldEdyZWVuU2l6
ZSgpOworfQorCitHTHVpbnQgUmVuZGVyYnVmZmVyOjpnZXRCbHVlU2l6ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0Qmx1ZVNpemUoKTsKK30KKworR0x1aW50IFJlbmRlcmJ1
ZmZlcjo6Z2V0QWxwaGFTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRB
bHBoYVNpemUoKTsKK30KKworR0x1aW50IFJlbmRlcmJ1ZmZlcjo6Z2V0RGVwdGhTaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXREZXB0aFNpemUoKTsKK30KKworR0x1aW50
IFJlbmRlcmJ1ZmZlcjo6Z2V0U3RlbmNpbFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtSW5z
dGFuY2UtPmdldFN0ZW5jaWxTaXplKCk7Cit9CisKK0dMc2l6ZWkgUmVuZGVyYnVmZmVyOjpnZXRT
YW1wbGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5nZXRTYW1wbGVzKCk7Cit9
CisKK3Vuc2lnbmVkIGludCBSZW5kZXJidWZmZXI6OmdldFNlcmlhbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1JbnN0YW5jZS0+Z2V0U2VyaWFsKCk7Cit9CisKK3ZvaWQgUmVuZGVyYnVmZmVyOjpz
ZXRTdG9yYWdlKFJlbmRlcmJ1ZmZlclN0b3JhZ2UgKm5ld1N0b3JhZ2UpCit7CisgICAgQVNTRVJU
KG5ld1N0b3JhZ2UgIT0gTlVMTCk7CisKKyAgICBkZWxldGUgbUluc3RhbmNlOworICAgIG1JbnN0
YW5jZSA9IG5ld1N0b3JhZ2U7Cit9CisKK1JlbmRlcmJ1ZmZlclN0b3JhZ2U6OlJlbmRlcmJ1ZmZl
clN0b3JhZ2UoKSA6IG1TZXJpYWwoaXNzdWVTZXJpYWwoKSkKK3sKKyAgICBtV2lkdGggPSAwOwor
ICAgIG1IZWlnaHQgPSAwOworICAgIG1JbnRlcm5hbEZvcm1hdCA9IEdMX1JHQkE0OworICAgIG1B
Y3R1YWxGb3JtYXQgPSBHTF9SR0JBOF9PRVM7CisgICAgbVNhbXBsZXMgPSAwOworfQorCitSZW5k
ZXJidWZmZXJTdG9yYWdlOjp+UmVuZGVyYnVmZmVyU3RvcmFnZSgpCit7Cit9CisKK3J4OjpSZW5k
ZXJUYXJnZXQgKlJlbmRlcmJ1ZmZlclN0b3JhZ2U6OmdldFJlbmRlclRhcmdldCgpCit7CisgICAg
cmV0dXJuIE5VTEw7Cit9CisKK3J4OjpSZW5kZXJUYXJnZXQgKlJlbmRlcmJ1ZmZlclN0b3JhZ2U6
OmdldERlcHRoU3RlbmNpbCgpCit7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK0dMc2l6ZWkgUmVu
ZGVyYnVmZmVyU3RvcmFnZTo6Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtV2lkdGg7
Cit9CisKK0dMc2l6ZWkgUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0SGVpZ2h0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbUhlaWdodDsKK30KKworR0xlbnVtIFJlbmRlcmJ1ZmZlclN0b3JhZ2U6Omdl
dEludGVybmFsRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUludGVybmFsRm9ybWF0Owor
fQorCitHTGVudW0gUmVuZGVyYnVmZmVyU3RvcmFnZTo6Z2V0QWN0dWFsRm9ybWF0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbUFjdHVhbEZvcm1hdDsKK30KKworR0xzaXplaSBSZW5kZXJidWZmZXJT
dG9yYWdlOjpnZXRTYW1wbGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBsZXM7Cit9CisK
K3Vuc2lnbmVkIGludCBSZW5kZXJidWZmZXJTdG9yYWdlOjpnZXRTZXJpYWwoKSBjb25zdAorewor
ICAgIHJldHVybiBtU2VyaWFsOworfQorCit1bnNpZ25lZCBpbnQgUmVuZGVyYnVmZmVyU3RvcmFn
ZTo6aXNzdWVTZXJpYWwoKQoreworICAgIHJldHVybiBtQ3VycmVudFNlcmlhbCsrOworfQorCit1
bnNpZ25lZCBpbnQgUmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNzdWVDdWJlU2VyaWFscygpCit7Cisg
ICAgdW5zaWduZWQgaW50IGZpcnN0U2VyaWFsID0gbUN1cnJlbnRTZXJpYWw7CisgICAgbUN1cnJl
bnRTZXJpYWwgKz0gNjsKKyAgICByZXR1cm4gZmlyc3RTZXJpYWw7Cit9CisKK0NvbG9yYnVmZmVy
OjpDb2xvcmJ1ZmZlcihyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCByeDo6U3dhcENoYWluICpzd2Fw
Q2hhaW4pCit7CisgICAgbVJlbmRlclRhcmdldCA9IHJlbmRlcmVyLT5jcmVhdGVSZW5kZXJUYXJn
ZXQoc3dhcENoYWluLCBmYWxzZSk7IAorCisgICAgaWYgKG1SZW5kZXJUYXJnZXQpCisgICAgewor
ICAgICAgICBtV2lkdGggPSBtUmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpOworICAgICAgICBtSGVp
Z2h0ID0gbVJlbmRlclRhcmdldC0+Z2V0SGVpZ2h0KCk7CisgICAgICAgIG1JbnRlcm5hbEZvcm1h
dCA9IG1SZW5kZXJUYXJnZXQtPmdldEludGVybmFsRm9ybWF0KCk7CisgICAgICAgIG1BY3R1YWxG
b3JtYXQgPSBtUmVuZGVyVGFyZ2V0LT5nZXRBY3R1YWxGb3JtYXQoKTsKKyAgICAgICAgbVNhbXBs
ZXMgPSBtUmVuZGVyVGFyZ2V0LT5nZXRTYW1wbGVzKCk7CisgICAgfQorfQorCitDb2xvcmJ1ZmZl
cjo6Q29sb3JidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMpIDogbVJlbmRlclRhcmdldChOVUxM
KQoreworICAgIG1SZW5kZXJUYXJnZXQgPSByZW5kZXJlci0+Y3JlYXRlUmVuZGVyVGFyZ2V0KHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgc2FtcGxlcywgZmFsc2UpOworCisgICAgaWYgKG1SZW5kZXJU
YXJnZXQpCisgICAgeworICAgICAgICBtV2lkdGggPSB3aWR0aDsKKyAgICAgICAgbUhlaWdodCA9
IGhlaWdodDsKKyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gZm9ybWF0OworICAgICAgICBtQWN0
dWFsRm9ybWF0ID0gbVJlbmRlclRhcmdldC0+Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAgICAgIG1T
YW1wbGVzID0gbVJlbmRlclRhcmdldC0+Z2V0U2FtcGxlcygpOworICAgIH0KK30KKworQ29sb3Ji
dWZmZXI6On5Db2xvcmJ1ZmZlcigpCit7CisgICAgaWYgKG1SZW5kZXJUYXJnZXQpCisgICAgewor
ICAgICAgICBkZWxldGUgbVJlbmRlclRhcmdldDsKKyAgICB9Cit9CisKK3J4OjpSZW5kZXJUYXJn
ZXQgKkNvbG9yYnVmZmVyOjpnZXRSZW5kZXJUYXJnZXQoKQoreworICAgIGlmIChtUmVuZGVyVGFy
Z2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1SZW5kZXJUYXJnZXQ7CisgICAgfQorCisgICAg
cmV0dXJuIE5VTEw7Cit9CisKK0RlcHRoU3RlbmNpbGJ1ZmZlcjo6RGVwdGhTdGVuY2lsYnVmZmVy
KHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIHJ4OjpTd2FwQ2hhaW4gKnN3YXBDaGFpbikKK3sKKyAg
ICBtRGVwdGhTdGVuY2lsID0gcmVuZGVyZXItPmNyZWF0ZVJlbmRlclRhcmdldChzd2FwQ2hhaW4s
IHRydWUpOworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgbVdpZHRoID0g
bURlcHRoU3RlbmNpbC0+Z2V0V2lkdGgoKTsKKyAgICAgICAgbUhlaWdodCA9IG1EZXB0aFN0ZW5j
aWwtPmdldEhlaWdodCgpOworICAgICAgICBtSW50ZXJuYWxGb3JtYXQgPSBtRGVwdGhTdGVuY2ls
LT5nZXRJbnRlcm5hbEZvcm1hdCgpOworICAgICAgICBtU2FtcGxlcyA9IG1EZXB0aFN0ZW5jaWwt
PmdldFNhbXBsZXMoKTsKKyAgICAgICAgbUFjdHVhbEZvcm1hdCA9IG1EZXB0aFN0ZW5jaWwtPmdl
dEFjdHVhbEZvcm1hdCgpOworICAgIH0KK30KKworRGVwdGhTdGVuY2lsYnVmZmVyOjpEZXB0aFN0
ZW5jaWxidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBHTHNpemVpIHNhbXBsZXMpCit7CisKKyAgICBtRGVwdGhTdGVuY2lsID0gcmVuZGVyZXItPmNy
ZWF0ZVJlbmRlclRhcmdldCh3aWR0aCwgaGVpZ2h0LCBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywg
c2FtcGxlcywgdHJ1ZSk7CisKKyAgICBtV2lkdGggPSBtRGVwdGhTdGVuY2lsLT5nZXRXaWR0aCgp
OworICAgIG1IZWlnaHQgPSBtRGVwdGhTdGVuY2lsLT5nZXRIZWlnaHQoKTsKKyAgICBtSW50ZXJu
YWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAgICBtQWN0dWFsRm9ybWF0ID0g
bURlcHRoU3RlbmNpbC0+Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAgbVNhbXBsZXMgPSBtRGVwdGhT
dGVuY2lsLT5nZXRTYW1wbGVzKCk7Cit9CisKK0RlcHRoU3RlbmNpbGJ1ZmZlcjo6fkRlcHRoU3Rl
bmNpbGJ1ZmZlcigpCit7CisgICAgaWYgKG1EZXB0aFN0ZW5jaWwpCisgICAgeworICAgICAgICBk
ZWxldGUgbURlcHRoU3RlbmNpbDsKKyAgICB9Cit9CisKK3J4OjpSZW5kZXJUYXJnZXQgKkRlcHRo
U3RlbmNpbGJ1ZmZlcjo6Z2V0RGVwdGhTdGVuY2lsKCkKK3sKKyAgICBpZiAobURlcHRoU3RlbmNp
bCkKKyAgICB7CisgICAgICAgIHJldHVybiBtRGVwdGhTdGVuY2lsOworICAgIH0KKworICAgIHJl
dHVybiBOVUxMOworfQorCitEZXB0aGJ1ZmZlcjo6RGVwdGhidWZmZXIocng6OlJlbmRlcmVyICpy
ZW5kZXJlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTHNpemVpIHNhbXBsZXMpIDogRGVwdGhT
dGVuY2lsYnVmZmVyKHJlbmRlcmVyLCB3aWR0aCwgaGVpZ2h0LCBzYW1wbGVzKQoreworICAgIGlm
IChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gR0xfREVQ
VEhfQ09NUE9ORU5UMTY7ICAgLy8gSWYgdGhlIHJlbmRlcmJ1ZmZlciBwYXJhbWV0ZXJzIGFyZSBx
dWVyaWVkLCB0aGUgY2FsbGluZyBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGV4cGVjdCBvbmUgb2YgdGhlIHZhbGlkIHJl
bmRlcmJ1ZmZlciBmb3JtYXRzIGZvciB1c2UgaW4gCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdsUmVuZGVyYnVmZmVyU3RvcmFnZQorICAgIH0K
K30KKworRGVwdGhidWZmZXI6On5EZXB0aGJ1ZmZlcigpCit7Cit9CisKK1N0ZW5jaWxidWZmZXI6
OlN0ZW5jaWxidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCBHTHNpemVpIHNhbXBsZXMpIDogRGVwdGhTdGVuY2lsYnVmZmVyKHJlbmRlcmVyLCB3aWR0
aCwgaGVpZ2h0LCBzYW1wbGVzKQoreworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAg
ICAgICAgbUludGVybmFsRm9ybWF0ID0gR0xfU1RFTkNJTF9JTkRFWDg7ICAgLy8gSWYgdGhlIHJl
bmRlcmJ1ZmZlciBwYXJhbWV0ZXJzIGFyZSBxdWVyaWVkLCB0aGUgY2FsbGluZyBmdW5jdGlvbgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGV4
cGVjdCBvbmUgb2YgdGhlIHZhbGlkIHJlbmRlcmJ1ZmZlciBmb3JtYXRzIGZvciB1c2UgaW4gCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdsUmVuZGVy
YnVmZmVyU3RvcmFnZQorICAgIH0KK30KKworU3RlbmNpbGJ1ZmZlcjo6flN0ZW5jaWxidWZmZXIo
KQoreworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L1JlbmRlcmJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI2MSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVyYnVmZmVyLmg6IERl
ZmluZXMgdGhlIHdyYXBwZXIgY2xhc3MgZ2w6OlJlbmRlcmJ1ZmZlciwgYXMgd2VsbCBhcyB0aGUK
Ky8vIGNsYXNzIGhpZXJhcmNoeSB1c2VkIHRvIHN0b3JlIGl0cyBjb250ZW50czogUmVuZGVyYnVm
ZmVyU3RvcmFnZSwgQ29sb3JidWZmZXIsCisvLyBEZXB0aFN0ZW5jaWxidWZmZXIsIERlcHRoYnVm
ZmVyIGFuZCBTdGVuY2lsYnVmZmVyLiBJbXBsZW1lbnRzIEdMIHJlbmRlcmJ1ZmZlcgorLy8gb2Jq
ZWN0cyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlv
biA0LjQuMyBwYWdlIDEwOC4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSQlVGRkVSX0hfCisj
ZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJCVUZGRVJfSF8KKworI2RlZmluZSBHTF9BUElDQUxMCisj
aW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgor
I2luY2x1ZGUgImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgorCituYW1lc3BhY2UgcngKK3sKK2Ns
YXNzIFJlbmRlcmVyOworY2xhc3MgU3dhcENoYWluOworY2xhc3MgUmVuZGVyVGFyZ2V0OworfQor
CituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIFRleHR1cmUyRDsKK2NsYXNzIFRleHR1cmVDdWJlTWFw
OworY2xhc3MgUmVuZGVyYnVmZmVyOworY2xhc3MgQ29sb3JidWZmZXI7CitjbGFzcyBEZXB0aFN0
ZW5jaWxidWZmZXI7CisKK2NsYXNzIFJlbmRlcmJ1ZmZlckludGVyZmFjZQoreworICBwdWJsaWM6
CisgICAgUmVuZGVyYnVmZmVySW50ZXJmYWNlKCk7CisKKyAgICB2aXJ0dWFsIH5SZW5kZXJidWZm
ZXJJbnRlcmZhY2UoKSB7fTsKKworICAgIHZpcnR1YWwgdm9pZCBhZGRQcm94eVJlZihjb25zdCBS
ZW5kZXJidWZmZXIgKnByb3h5KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVByb3h5KGNvbnN0
IFJlbmRlcmJ1ZmZlciAqcHJveHkpOworCisgICAgdmlydHVhbCByeDo6UmVuZGVyVGFyZ2V0ICpn
ZXRSZW5kZXJUYXJnZXQoKSA9IDA7CisgICAgdmlydHVhbCByeDo6UmVuZGVyVGFyZ2V0ICpnZXRE
ZXB0aFN0ZW5jaWwoKSA9IDA7CisKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0V2lkdGgoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBHTHNpemVpIGdldEhlaWdodCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIEdMZW51bSBnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IEdMZW51bSBnZXRBY3R1YWxGb3JtYXQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBHTHNpemVp
IGdldFNhbXBsZXMoKSBjb25zdCA9IDA7CisKKyAgICBHTHVpbnQgZ2V0UmVkU2l6ZSgpIGNvbnN0
OworICAgIEdMdWludCBnZXRHcmVlblNpemUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0Qmx1ZVNp
emUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0QWxwaGFTaXplKCkgY29uc3Q7CisgICAgR0x1aW50
IGdldERlcHRoU2l6ZSgpIGNvbnN0OworICAgIEdMdWludCBnZXRTdGVuY2lsU2l6ZSgpIGNvbnN0
OworCisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3QgPSAwOworCisg
IHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlcmJ1ZmZlckludGVy
ZmFjZSk7Cit9OworCitjbGFzcyBSZW5kZXJidWZmZXJUZXh0dXJlMkQgOiBwdWJsaWMgUmVuZGVy
YnVmZmVySW50ZXJmYWNlCit7CisgIHB1YmxpYzoKKyAgICBSZW5kZXJidWZmZXJUZXh0dXJlMkQo
VGV4dHVyZTJEICp0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0KTsKKworICAgIHZpcnR1YWwgflJlbmRl
cmJ1ZmZlclRleHR1cmUyRCgpOworCisgICAgdm9pZCBhZGRQcm94eVJlZihjb25zdCBSZW5kZXJi
dWZmZXIgKnByb3h5KTsKKyAgICB2b2lkIHJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZmZXIg
KnByb3h5KTsKKworICAgIHJ4OjpSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldCgpOworICAg
IHJ4OjpSZW5kZXJUYXJnZXQgKmdldERlcHRoU3RlbmNpbCgpOworCisgICAgdmlydHVhbCBHTHNp
emVpIGdldFdpZHRoKCkgY29uc3Q7CisgICAgdmlydHVhbCBHTHNpemVpIGdldEhlaWdodCgpIGNv
bnN0OworICAgIHZpcnR1YWwgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3Q7CisgICAg
dmlydHVhbCBHTGVudW0gZ2V0QWN0dWFsRm9ybWF0KCkgY29uc3Q7CisgICAgdmlydHVhbCBHTHNp
emVpIGdldFNhbXBsZXMoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNl
cmlhbCgpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
KFJlbmRlcmJ1ZmZlclRleHR1cmUyRCk7CisKKyAgICBCaW5kaW5nUG9pbnRlciA8VGV4dHVyZTJE
PiBtVGV4dHVyZTJEOworICAgIEdMZW51bSBtVGFyZ2V0OworfTsKKworY2xhc3MgUmVuZGVyYnVm
ZmVyVGV4dHVyZUN1YmVNYXAgOiBwdWJsaWMgUmVuZGVyYnVmZmVySW50ZXJmYWNlCit7CisgIHB1
YmxpYzoKKyAgICBSZW5kZXJidWZmZXJUZXh0dXJlQ3ViZU1hcChUZXh0dXJlQ3ViZU1hcCAqdGV4
dHVyZSwgR0xlbnVtIHRhcmdldCk7CisKKyAgICB2aXJ0dWFsIH5SZW5kZXJidWZmZXJUZXh0dXJl
Q3ViZU1hcCgpOworCisgICAgdm9pZCBhZGRQcm94eVJlZihjb25zdCBSZW5kZXJidWZmZXIgKnBy
b3h5KTsKKyAgICB2b2lkIHJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KTsK
KworICAgIHJ4OjpSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldCgpOworICAgIHJ4OjpSZW5k
ZXJUYXJnZXQgKmdldERlcHRoU3RlbmNpbCgpOworCisgICAgdmlydHVhbCBHTHNpemVpIGdldFdp
ZHRoKCkgY29uc3Q7CisgICAgdmlydHVhbCBHTHNpemVpIGdldEhlaWdodCgpIGNvbnN0OworICAg
IHZpcnR1YWwgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3Q7CisgICAgdmlydHVhbCBH
TGVudW0gZ2V0QWN0dWFsRm9ybWF0KCkgY29uc3Q7CisgICAgdmlydHVhbCBHTHNpemVpIGdldFNh
bXBsZXMoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNv
bnN0OworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlcmJ1
ZmZlclRleHR1cmVDdWJlTWFwKTsKKworICAgIEJpbmRpbmdQb2ludGVyIDxUZXh0dXJlQ3ViZU1h
cD4gbVRleHR1cmVDdWJlTWFwOworICAgIEdMZW51bSBtVGFyZ2V0OworfTsKKworLy8gQSBjbGFz
cyBkZXJpdmVkIGZyb20gUmVuZGVyYnVmZmVyU3RvcmFnZSBpcyBjcmVhdGVkIHdoZW5ldmVyIGds
UmVuZGVyYnVmZmVyU3RvcmFnZQorLy8gaXMgY2FsbGVkLiBUaGUgc3BlY2lmaWMgY29uY3JldGUg
dHlwZSBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGludGVybmFsIGZvcm1hdCBpcworLy8gY29sb3Vy
IGRlcHRoLCBzdGVuY2lsIG9yIHBhY2tlZCBkZXB0aC9zdGVuY2lsLgorY2xhc3MgUmVuZGVyYnVm
ZmVyU3RvcmFnZSA6IHB1YmxpYyBSZW5kZXJidWZmZXJJbnRlcmZhY2UKK3sKKyAgcHVibGljOgor
ICAgIFJlbmRlcmJ1ZmZlclN0b3JhZ2UoKTsKKworICAgIHZpcnR1YWwgflJlbmRlcmJ1ZmZlclN0
b3JhZ2UoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHJ4OjpSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRh
cmdldCgpOworICAgIHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0RGVwdGhTdGVuY2lsKCk7
CisKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0V2lkdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEdM
c2l6ZWkgZ2V0SGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBHTGVudW0gZ2V0SW50ZXJuYWxG
b3JtYXQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEdMZW51bSBnZXRBY3R1YWxGb3JtYXQoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0U2FtcGxlcygpIGNvbnN0OworCisgICAgdmlydHVh
bCB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgdW5zaWduZWQg
aW50IGlzc3VlU2VyaWFsKCk7CisgICAgc3RhdGljIHVuc2lnbmVkIGludCBpc3N1ZUN1YmVTZXJp
YWxzKCk7CisKKyAgcHJvdGVjdGVkOgorICAgIEdMc2l6ZWkgbVdpZHRoOworICAgIEdMc2l6ZWkg
bUhlaWdodDsKKyAgICBHTGVudW0gbUludGVybmFsRm9ybWF0OworICAgIEdMZW51bSBtQWN0dWFs
Rm9ybWF0OworICAgIEdMc2l6ZWkgbVNhbXBsZXM7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExP
V19DT1BZX0FORF9BU1NJR04oUmVuZGVyYnVmZmVyU3RvcmFnZSk7CisKKyAgICBjb25zdCB1bnNp
Z25lZCBpbnQgbVNlcmlhbDsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgbUN1cnJlbnRTZXJp
YWw7Cit9OworCisvLyBSZW5kZXJidWZmZXIgaW1wbGVtZW50cyB0aGUgR0wgcmVuZGVyYnVmZmVy
IG9iamVjdC4KKy8vIEl0J3Mgb25seSBhIHByb3h5IGZvciBhIFJlbmRlcmJ1ZmZlckludGVyZmFj
ZSBpbnN0YW5jZTsgdGhlIGludGVybmFsIG9iamVjdAorLy8gY2FuIGNoYW5nZSB3aGVuZXZlciBn
bFJlbmRlcmJ1ZmZlclN0b3JhZ2UgaXMgY2FsbGVkLgorY2xhc3MgUmVuZGVyYnVmZmVyIDogcHVi
bGljIFJlZkNvdW50T2JqZWN0Cit7CisgIHB1YmxpYzoKKyAgICBSZW5kZXJidWZmZXIocng6OlJl
bmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGlkLCBSZW5kZXJidWZmZXJJbnRlcmZhY2UgKnN0b3Jh
Z2UpOworCisgICAgdmlydHVhbCB+UmVuZGVyYnVmZmVyKCk7CisKKyAgICAvLyBUaGVzZSBmdW5j
dGlvbnMgZnJvbSBSZWZDb3VudE9iamVjdCBhcmUgb3ZlcmxvYWRlZCBoZXJlIGJlY2F1c2UKKyAg
ICAvLyBUZXh0dXJlcyBuZWVkIHRvIG1haW50YWluIHRoZWlyIG93biBjb3VudCBvZiByZWZlcmVu
Y2VzIHRvIHRoZW0gdmlhCisgICAgLy8gUmVuZGVyYnVmZmVycy9SZW5kZXJidWZmZXJUZXh0dXJl
cy4gVGhlc2UgZnVuY3Rpb25zIGludm9rZSB0aG9zZQorICAgIC8vIHJlZmVyZW5jZSBjb3VudGlu
ZyBmdW5jdGlvbnMgb24gdGhlIFJlbmRlcmJ1ZmZlckludGVyZmFjZS4KKyAgICB2b2lkIGFkZFJl
ZigpIGNvbnN0OworICAgIHZvaWQgcmVsZWFzZSgpIGNvbnN0OworCisgICAgcng6OlJlbmRlclRh
cmdldCAqZ2V0UmVuZGVyVGFyZ2V0KCk7CisgICAgcng6OlJlbmRlclRhcmdldCAqZ2V0RGVwdGhT
dGVuY2lsKCk7CisKKyAgICBHTHNpemVpIGdldFdpZHRoKCkgY29uc3Q7CisgICAgR0xzaXplaSBn
ZXRIZWlnaHQoKSBjb25zdDsKKyAgICBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdDsK
KyAgICBHTGVudW0gZ2V0QWN0dWFsRm9ybWF0KCkgY29uc3Q7CisgICAgR0x1aW50IGdldFJlZFNp
emUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0R3JlZW5TaXplKCkgY29uc3Q7CisgICAgR0x1aW50
IGdldEJsdWVTaXplKCkgY29uc3Q7CisgICAgR0x1aW50IGdldEFscGhhU2l6ZSgpIGNvbnN0Owor
ICAgIEdMdWludCBnZXREZXB0aFNpemUoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0U3RlbmNpbFNp
emUoKSBjb25zdDsKKyAgICBHTHNpemVpIGdldFNhbXBsZXMoKSBjb25zdDsKKworICAgIHVuc2ln
bmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKKworICAgIHZvaWQgc2V0U3RvcmFnZShSZW5kZXJi
dWZmZXJTdG9yYWdlICpuZXdTdG9yYWdlKTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTihSZW5kZXJidWZmZXIpOworCisgICAgUmVuZGVyYnVmZmVySW50ZXJmYWNl
ICptSW5zdGFuY2U7Cit9OworCitjbGFzcyBDb2xvcmJ1ZmZlciA6IHB1YmxpYyBSZW5kZXJidWZm
ZXJTdG9yYWdlCit7CisgIHB1YmxpYzoKKyAgICBDb2xvcmJ1ZmZlcihyeDo6UmVuZGVyZXIgKnJl
bmRlcmVyLCByeDo6U3dhcENoYWluICpzd2FwQ2hhaW4pOworICAgIENvbG9yYnVmZmVyKHJ4OjpS
ZW5kZXJlciAqcmVuZGVyZXIsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0g
Zm9ybWF0LCBHTHNpemVpIHNhbXBsZXMpOworCisgICAgdmlydHVhbCB+Q29sb3JidWZmZXIoKTsK
KworICAgIHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KCk7CisKKyAg
cHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oQ29sb3JidWZmZXIpOworCisg
ICAgcng6OlJlbmRlclRhcmdldCAqbVJlbmRlclRhcmdldDsKK307CisKK2NsYXNzIERlcHRoU3Rl
bmNpbGJ1ZmZlciA6IHB1YmxpYyBSZW5kZXJidWZmZXJTdG9yYWdlCit7CisgIHB1YmxpYzoKKyAg
ICBEZXB0aFN0ZW5jaWxidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgcng6OlN3YXBDaGFp
biAqc3dhcENoYWluKTsKKyAgICBEZXB0aFN0ZW5jaWxidWZmZXIocng6OlJlbmRlcmVyICpyZW5k
ZXJlciwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgc2FtcGxlcyk7CisK
KyAgICB+RGVwdGhTdGVuY2lsYnVmZmVyKCk7CisKKyAgICB2aXJ0dWFsIHJ4OjpSZW5kZXJUYXJn
ZXQgKmdldERlcHRoU3RlbmNpbCgpOworCisgIHByb3RlY3RlZDoKKyAgICByeDo6UmVuZGVyVGFy
Z2V0ICAqbURlcHRoU3RlbmNpbDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTihEZXB0aFN0ZW5jaWxidWZmZXIpOworfTsKKworY2xhc3MgRGVwdGhidWZmZXIgOiBw
dWJsaWMgRGVwdGhTdGVuY2lsYnVmZmVyCit7CisgIHB1YmxpYzoKKyAgICBEZXB0aGJ1ZmZlcihy
eDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xz
aXplaSBzYW1wbGVzKTsKKworICAgIHZpcnR1YWwgfkRlcHRoYnVmZmVyKCk7CisKKyAgcHJpdmF0
ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oRGVwdGhidWZmZXIpOworfTsKKworY2xh
c3MgU3RlbmNpbGJ1ZmZlciA6IHB1YmxpYyBEZXB0aFN0ZW5jaWxidWZmZXIKK3sKKyAgcHVibGlj
OgorICAgIFN0ZW5jaWxidWZmZXIocng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgc2FtcGxlcyk7CisKKyAgICB2aXJ0dWFsIH5TdGVu
Y2lsYnVmZmVyKCk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04o
U3RlbmNpbGJ1ZmZlcik7Cit9OworfQorCisjZW5kaWYgICAvLyBMSUJHTEVTVjJfUkVOREVSQlVG
RkVSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Jlc291
cmNlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDMyMiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisvLyBSZXNvdXJjZU1hbmFnZXIuY3BwOiBJbXBsZW1lbnRzIHRoZSBnbDo6
UmVzb3VyY2VNYW5hZ2VyIGNsYXNzLCB3aGljaCB0cmFja3MgYW5kIAorLy8gcmV0cmlldmVzIG9i
amVjdHMgd2hpY2ggbWF5IGJlIHNoYXJlZCBieSBtdWx0aXBsZSBDb250ZXh0cy4KKworI2luY2x1
ZGUgImxpYkdMRVN2Mi9SZXNvdXJjZU1hbmFnZXIuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9C
dWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbS5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi9SZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvU2hhZGVyLmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL1RleHR1cmUuaCIKKworbmFtZXNwYWNlIGdsCit7CitSZXNvdXJjZU1h
bmFnZXI6OlJlc291cmNlTWFuYWdlcihyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKQoreworICAgIG1S
ZWZDb3VudCA9IDE7CisgICAgbVJlbmRlcmVyID0gcmVuZGVyZXI7Cit9CisKK1Jlc291cmNlTWFu
YWdlcjo6flJlc291cmNlTWFuYWdlcigpCit7CisgICAgd2hpbGUgKCFtQnVmZmVyTWFwLmVtcHR5
KCkpCisgICAgeworICAgICAgICBkZWxldGVCdWZmZXIobUJ1ZmZlck1hcC5iZWdpbigpLT5maXJz
dCk7CisgICAgfQorCisgICAgd2hpbGUgKCFtUHJvZ3JhbU1hcC5lbXB0eSgpKQorICAgIHsKKyAg
ICAgICAgZGVsZXRlUHJvZ3JhbShtUHJvZ3JhbU1hcC5iZWdpbigpLT5maXJzdCk7CisgICAgfQor
CisgICAgd2hpbGUgKCFtU2hhZGVyTWFwLmVtcHR5KCkpCisgICAgeworICAgICAgICBkZWxldGVT
aGFkZXIobVNoYWRlck1hcC5iZWdpbigpLT5maXJzdCk7CisgICAgfQorCisgICAgd2hpbGUgKCFt
UmVuZGVyYnVmZmVyTWFwLmVtcHR5KCkpCisgICAgeworICAgICAgICBkZWxldGVSZW5kZXJidWZm
ZXIobVJlbmRlcmJ1ZmZlck1hcC5iZWdpbigpLT5maXJzdCk7CisgICAgfQorCisgICAgd2hpbGUg
KCFtVGV4dHVyZU1hcC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVsZXRlVGV4dHVyZShtVGV4
dHVyZU1hcC5iZWdpbigpLT5maXJzdCk7CisgICAgfQorfQorCit2b2lkIFJlc291cmNlTWFuYWdl
cjo6YWRkUmVmKCkKK3sKKyAgICBtUmVmQ291bnQrKzsKK30KKwordm9pZCBSZXNvdXJjZU1hbmFn
ZXI6OnJlbGVhc2UoKQoreworICAgIGlmICgtLW1SZWZDb3VudCA9PSAwKQorICAgIHsKKyAgICAg
ICAgZGVsZXRlIHRoaXM7CisgICAgfQorfQorCisvLyBSZXR1cm5zIGFuIHVudXNlZCBidWZmZXIg
bmFtZQorR0x1aW50IFJlc291cmNlTWFuYWdlcjo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICBHTHVp
bnQgaGFuZGxlID0gbUJ1ZmZlckhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworCisgICAgbUJ1
ZmZlck1hcFtoYW5kbGVdID0gTlVMTDsKKworICAgIHJldHVybiBoYW5kbGU7Cit9CisKKy8vIFJl
dHVybnMgYW4gdW51c2VkIHNoYWRlci9wcm9ncmFtIG5hbWUKK0dMdWludCBSZXNvdXJjZU1hbmFn
ZXI6OmNyZWF0ZVNoYWRlcihHTGVudW0gdHlwZSkKK3sKKyAgICBHTHVpbnQgaGFuZGxlID0gbVBy
b2dyYW1TaGFkZXJIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKKworICAgIGlmICh0eXBlID09
IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgeworICAgICAgICBtU2hhZGVyTWFwW2hhbmRsZV0gPSBu
ZXcgVmVydGV4U2hhZGVyKHRoaXMsIG1SZW5kZXJlciwgaGFuZGxlKTsKKyAgICB9CisgICAgZWxz
ZSBpZiAodHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCisgICAgeworICAgICAgICBtU2hhZGVy
TWFwW2hhbmRsZV0gPSBuZXcgRnJhZ21lbnRTaGFkZXIodGhpcywgbVJlbmRlcmVyLCBoYW5kbGUp
OworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICByZXR1cm4gaGFuZGxlOwor
fQorCisvLyBSZXR1cm5zIGFuIHVudXNlZCBwcm9ncmFtL3NoYWRlciBuYW1lCitHTHVpbnQgUmVz
b3VyY2VNYW5hZ2VyOjpjcmVhdGVQcm9ncmFtKCkKK3sKKyAgICBHTHVpbnQgaGFuZGxlID0gbVBy
b2dyYW1TaGFkZXJIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKKworICAgIG1Qcm9ncmFtTWFw
W2hhbmRsZV0gPSBuZXcgUHJvZ3JhbShtUmVuZGVyZXIsIHRoaXMsIGhhbmRsZSk7CisKKyAgICBy
ZXR1cm4gaGFuZGxlOworfQorCisvLyBSZXR1cm5zIGFuIHVudXNlZCB0ZXh0dXJlIG5hbWUKK0dM
dWludCBSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIEdMdWludCBoYW5k
bGUgPSBtVGV4dHVyZUhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworCisgICAgbVRleHR1cmVN
YXBbaGFuZGxlXSA9IE5VTEw7CisKKyAgICByZXR1cm4gaGFuZGxlOworfQorCisvLyBSZXR1cm5z
IGFuIHVudXNlZCByZW5kZXJidWZmZXIgbmFtZQorR0x1aW50IFJlc291cmNlTWFuYWdlcjo6Y3Jl
YXRlUmVuZGVyYnVmZmVyKCkKK3sKKyAgICBHTHVpbnQgaGFuZGxlID0gbVJlbmRlcmJ1ZmZlckhh
bmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworCisgICAgbVJlbmRlcmJ1ZmZlck1hcFtoYW5kbGVd
ID0gTlVMTDsKKworICAgIHJldHVybiBoYW5kbGU7Cit9CisKK3ZvaWQgUmVzb3VyY2VNYW5hZ2Vy
OjpkZWxldGVCdWZmZXIoR0x1aW50IGJ1ZmZlcikKK3sKKyAgICBCdWZmZXJNYXA6Oml0ZXJhdG9y
IGJ1ZmZlck9iamVjdCA9IG1CdWZmZXJNYXAuZmluZChidWZmZXIpOworCisgICAgaWYgKGJ1ZmZl
ck9iamVjdCAhPSBtQnVmZmVyTWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgbUJ1ZmZlckhhbmRs
ZUFsbG9jYXRvci5yZWxlYXNlKGJ1ZmZlck9iamVjdC0+Zmlyc3QpOworICAgICAgICBpZiAoYnVm
ZmVyT2JqZWN0LT5zZWNvbmQpIGJ1ZmZlck9iamVjdC0+c2Vjb25kLT5yZWxlYXNlKCk7CisgICAg
ICAgIG1CdWZmZXJNYXAuZXJhc2UoYnVmZmVyT2JqZWN0KTsKKyAgICB9Cit9CisKK3ZvaWQgUmVz
b3VyY2VNYW5hZ2VyOjpkZWxldGVTaGFkZXIoR0x1aW50IHNoYWRlcikKK3sKKyAgICBTaGFkZXJN
YXA6Oml0ZXJhdG9yIHNoYWRlck9iamVjdCA9IG1TaGFkZXJNYXAuZmluZChzaGFkZXIpOworCisg
ICAgaWYgKHNoYWRlck9iamVjdCAhPSBtU2hhZGVyTWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAg
aWYgKHNoYWRlck9iamVjdC0+c2Vjb25kLT5nZXRSZWZDb3VudCgpID09IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1Qcm9ncmFtU2hhZGVySGFuZGxlQWxsb2NhdG9yLnJlbGVhc2Uoc2hhZGVy
T2JqZWN0LT5maXJzdCk7CisgICAgICAgICAgICBkZWxldGUgc2hhZGVyT2JqZWN0LT5zZWNvbmQ7
CisgICAgICAgICAgICBtU2hhZGVyTWFwLmVyYXNlKHNoYWRlck9iamVjdCk7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBzaGFkZXJPYmplY3QtPnNlY29u
ZC0+ZmxhZ0ZvckRlbGV0aW9uKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUmVzb3Vy
Y2VNYW5hZ2VyOjpkZWxldGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQoreworICAgIFByb2dyYW1N
YXA6Oml0ZXJhdG9yIHByb2dyYW1PYmplY3QgPSBtUHJvZ3JhbU1hcC5maW5kKHByb2dyYW0pOwor
CisgICAgaWYgKHByb2dyYW1PYmplY3QgIT0gbVByb2dyYW1NYXAuZW5kKCkpCisgICAgeworICAg
ICAgICBpZiAocHJvZ3JhbU9iamVjdC0+c2Vjb25kLT5nZXRSZWZDb3VudCgpID09IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1Qcm9ncmFtU2hhZGVySGFuZGxlQWxsb2NhdG9yLnJlbGVhc2Uo
cHJvZ3JhbU9iamVjdC0+Zmlyc3QpOworICAgICAgICAgICAgZGVsZXRlIHByb2dyYW1PYmplY3Qt
PnNlY29uZDsKKyAgICAgICAgICAgIG1Qcm9ncmFtTWFwLmVyYXNlKHByb2dyYW1PYmplY3QpOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHByb2dyYW1P
YmplY3QtPnNlY29uZC0+ZmxhZ0ZvckRlbGV0aW9uKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZvaWQgUmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVUZXh0dXJlKEdMdWludCB0ZXh0dXJlKQorewor
ICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIHRleHR1cmVPYmplY3QgPSBtVGV4dHVyZU1hcC5maW5k
KHRleHR1cmUpOworCisgICAgaWYgKHRleHR1cmVPYmplY3QgIT0gbVRleHR1cmVNYXAuZW5kKCkp
CisgICAgeworICAgICAgICBtVGV4dHVyZUhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKHRleHR1cmVP
YmplY3QtPmZpcnN0KTsKKyAgICAgICAgaWYgKHRleHR1cmVPYmplY3QtPnNlY29uZCkgdGV4dHVy
ZU9iamVjdC0+c2Vjb25kLT5yZWxlYXNlKCk7CisgICAgICAgIG1UZXh0dXJlTWFwLmVyYXNlKHRl
eHR1cmVPYmplY3QpOworICAgIH0KK30KKwordm9pZCBSZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZVJl
bmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVyKQoreworICAgIFJlbmRlcmJ1ZmZlck1hcDo6
aXRlcmF0b3IgcmVuZGVyYnVmZmVyT2JqZWN0ID0gbVJlbmRlcmJ1ZmZlck1hcC5maW5kKHJlbmRl
cmJ1ZmZlcik7CisKKyAgICBpZiAocmVuZGVyYnVmZmVyT2JqZWN0ICE9IG1SZW5kZXJidWZmZXJN
YXAuZW5kKCkpCisgICAgeworICAgICAgICBtUmVuZGVyYnVmZmVySGFuZGxlQWxsb2NhdG9yLnJl
bGVhc2UocmVuZGVyYnVmZmVyT2JqZWN0LT5maXJzdCk7CisgICAgICAgIGlmIChyZW5kZXJidWZm
ZXJPYmplY3QtPnNlY29uZCkgcmVuZGVyYnVmZmVyT2JqZWN0LT5zZWNvbmQtPnJlbGVhc2UoKTsK
KyAgICAgICAgbVJlbmRlcmJ1ZmZlck1hcC5lcmFzZShyZW5kZXJidWZmZXJPYmplY3QpOworICAg
IH0KK30KKworQnVmZmVyICpSZXNvdXJjZU1hbmFnZXI6OmdldEJ1ZmZlcih1bnNpZ25lZCBpbnQg
aGFuZGxlKQoreworICAgIEJ1ZmZlck1hcDo6aXRlcmF0b3IgYnVmZmVyID0gbUJ1ZmZlck1hcC5m
aW5kKGhhbmRsZSk7CisKKyAgICBpZiAoYnVmZmVyID09IG1CdWZmZXJNYXAuZW5kKCkpCisgICAg
eworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci0+c2Vjb25kOworICAgIH0KK30KKworU2hhZGVyICpSZXNvdXJjZU1hbmFn
ZXI6OmdldFNoYWRlcih1bnNpZ25lZCBpbnQgaGFuZGxlKQoreworICAgIFNoYWRlck1hcDo6aXRl
cmF0b3Igc2hhZGVyID0gbVNoYWRlck1hcC5maW5kKGhhbmRsZSk7CisKKyAgICBpZiAoc2hhZGVy
ID09IG1TaGFkZXJNYXAuZW5kKCkpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNoYWRlci0+c2Vjb25kOworICAgIH0K
K30KKworVGV4dHVyZSAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRUZXh0dXJlKHVuc2lnbmVkIGludCBo
YW5kbGUpCit7CisgICAgaWYgKGhhbmRsZSA9PSAwKSByZXR1cm4gTlVMTDsKKworICAgIFRleHR1
cmVNYXA6Oml0ZXJhdG9yIHRleHR1cmUgPSBtVGV4dHVyZU1hcC5maW5kKGhhbmRsZSk7CisKKyAg
ICBpZiAodGV4dHVyZSA9PSBtVGV4dHVyZU1hcC5lbmQoKSkKKyAgICB7CisgICAgICAgIHJldHVy
biBOVUxMOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gdGV4dHVyZS0+
c2Vjb25kOworICAgIH0KK30KKworUHJvZ3JhbSAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRQcm9ncmFt
KHVuc2lnbmVkIGludCBoYW5kbGUpCit7CisgICAgUHJvZ3JhbU1hcDo6aXRlcmF0b3IgcHJvZ3Jh
bSA9IG1Qcm9ncmFtTWFwLmZpbmQoaGFuZGxlKTsKKworICAgIGlmIChwcm9ncmFtID09IG1Qcm9n
cmFtTWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9ncmFtLT5zZWNvbmQ7CisgICAgfQorfQorCitS
ZW5kZXJidWZmZXIgKlJlc291cmNlTWFuYWdlcjo6Z2V0UmVuZGVyYnVmZmVyKHVuc2lnbmVkIGlu
dCBoYW5kbGUpCit7CisgICAgUmVuZGVyYnVmZmVyTWFwOjppdGVyYXRvciByZW5kZXJidWZmZXIg
PSBtUmVuZGVyYnVmZmVyTWFwLmZpbmQoaGFuZGxlKTsKKworICAgIGlmIChyZW5kZXJidWZmZXIg
PT0gbVJlbmRlcmJ1ZmZlck1hcC5lbmQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBOVUxMOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gcmVuZGVyYnVmZmVyLT5zZWNv
bmQ7CisgICAgfQorfQorCit2b2lkIFJlc291cmNlTWFuYWdlcjo6c2V0UmVuZGVyYnVmZmVyKEdM
dWludCBoYW5kbGUsIFJlbmRlcmJ1ZmZlciAqYnVmZmVyKQoreworICAgIG1SZW5kZXJidWZmZXJN
YXBbaGFuZGxlXSA9IGJ1ZmZlcjsKK30KKwordm9pZCBSZXNvdXJjZU1hbmFnZXI6OmNoZWNrQnVm
ZmVyQWxsb2NhdGlvbih1bnNpZ25lZCBpbnQgYnVmZmVyKQoreworICAgIGlmIChidWZmZXIgIT0g
MCAmJiAhZ2V0QnVmZmVyKGJ1ZmZlcikpCisgICAgeworICAgICAgICBCdWZmZXIgKmJ1ZmZlck9i
amVjdCA9IG5ldyBCdWZmZXIobVJlbmRlcmVyLCBidWZmZXIpOworICAgICAgICBtQnVmZmVyTWFw
W2J1ZmZlcl0gPSBidWZmZXJPYmplY3Q7CisgICAgICAgIGJ1ZmZlck9iamVjdC0+YWRkUmVmKCk7
CisgICAgfQorfQorCit2b2lkIFJlc291cmNlTWFuYWdlcjo6Y2hlY2tUZXh0dXJlQWxsb2NhdGlv
bihHTHVpbnQgdGV4dHVyZSwgVGV4dHVyZVR5cGUgdHlwZSkKK3sKKyAgICBpZiAoIWdldFRleHR1
cmUodGV4dHVyZSkgJiYgdGV4dHVyZSAhPSAwKQorICAgIHsKKyAgICAgICAgVGV4dHVyZSAqdGV4
dHVyZU9iamVjdDsKKworICAgICAgICBpZiAodHlwZSA9PSBURVhUVVJFXzJEKQorICAgICAgICB7
CisgICAgICAgICAgICB0ZXh0dXJlT2JqZWN0ID0gbmV3IFRleHR1cmUyRChtUmVuZGVyZXIsIHRl
eHR1cmUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gVEVYVFVSRV9DVUJF
KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXh0dXJlT2JqZWN0ID0gbmV3IFRleHR1cmVDdWJl
TWFwKG1SZW5kZXJlciwgdGV4dHVyZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgbVRleHR1cmVNYXBbdGV4dHVyZV0gPSB0ZXh0dXJlT2JqZWN0Owor
ICAgICAgICB0ZXh0dXJlT2JqZWN0LT5hZGRSZWYoKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVzb3Vy
Y2VNYW5hZ2VyOjpjaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24oR0x1aW50IHJlbmRlcmJ1ZmZl
cikKK3sKKyAgICBpZiAocmVuZGVyYnVmZmVyICE9IDAgJiYgIWdldFJlbmRlcmJ1ZmZlcihyZW5k
ZXJidWZmZXIpKQorICAgIHsKKyAgICAgICAgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXJPYmpl
Y3QgPSBuZXcgUmVuZGVyYnVmZmVyKG1SZW5kZXJlciwgcmVuZGVyYnVmZmVyLCBuZXcgQ29sb3Ji
dWZmZXIobVJlbmRlcmVyLCAwLCAwLCBHTF9SR0JBNCwgMCkpOworICAgICAgICBtUmVuZGVyYnVm
ZmVyTWFwW3JlbmRlcmJ1ZmZlcl0gPSByZW5kZXJidWZmZXJPYmplY3Q7CisgICAgICAgIHJlbmRl
cmJ1ZmZlck9iamVjdC0+YWRkUmVmKCk7CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Jlc291cmNlTWFuYWdlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVzb3VyY2VNYW5hZ2Vy
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L1Jlc291cmNlTWFuYWdlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOCBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKworLy8gUmVzb3VyY2VNYW5hZ2VyLmggOiBEZWZpbmVzIHRoZSBSZXNvdXJj
ZU1hbmFnZXIgY2xhc3MsIHdoaWNoIHRyYWNrcyBvYmplY3RzCisvLyBzaGFyZWQgYnkgbXVsdGlw
bGUgR0wgY29udGV4dHMuCisKKyNpZm5kZWYgTElCR0xFU1YyX1JFU09VUkNFTUFOQUdFUl9IXwor
I2RlZmluZSBMSUJHTEVTVjJfUkVTT1VSQ0VNQU5BR0VSX0hfCisKKyNkZWZpbmUgR0xfQVBJQ0FM
TAorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorCisjaWZkZWYgX01TQ19WRVIKKyNpbmNsdWRlIDxo
YXNoX21hcD4KKyNlbHNlCisjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyNlbmRpZgorCisjaW5j
bHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvYW5nbGV0eXBl
cy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9IYW5kbGVBbGxvY2F0b3IuaCIKKworbmFtZXNwYWNl
IHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBCdWZm
ZXI7CitjbGFzcyBTaGFkZXI7CitjbGFzcyBQcm9ncmFtOworY2xhc3MgVGV4dHVyZTsKK2NsYXNz
IFJlbmRlcmJ1ZmZlcjsKKworY2xhc3MgUmVzb3VyY2VNYW5hZ2VyCit7CisgIHB1YmxpYzoKKyAg
ICBleHBsaWNpdCBSZXNvdXJjZU1hbmFnZXIocng6OlJlbmRlcmVyICpyZW5kZXJlcik7CisgICAg
flJlc291cmNlTWFuYWdlcigpOworCisgICAgdm9pZCBhZGRSZWYoKTsKKyAgICB2b2lkIHJlbGVh
c2UoKTsKKworICAgIEdMdWludCBjcmVhdGVCdWZmZXIoKTsKKyAgICBHTHVpbnQgY3JlYXRlU2hh
ZGVyKEdMZW51bSB0eXBlKTsKKyAgICBHTHVpbnQgY3JlYXRlUHJvZ3JhbSgpOworICAgIEdMdWlu
dCBjcmVhdGVUZXh0dXJlKCk7CisgICAgR0x1aW50IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworCisg
ICAgdm9pZCBkZWxldGVCdWZmZXIoR0x1aW50IGJ1ZmZlcik7CisgICAgdm9pZCBkZWxldGVTaGFk
ZXIoR0x1aW50IHNoYWRlcik7CisgICAgdm9pZCBkZWxldGVQcm9ncmFtKEdMdWludCBwcm9ncmFt
KTsKKyAgICB2b2lkIGRlbGV0ZVRleHR1cmUoR0x1aW50IHRleHR1cmUpOworICAgIHZvaWQgZGVs
ZXRlUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpOworCisgICAgQnVmZmVyICpnZXRC
dWZmZXIoR0x1aW50IGhhbmRsZSk7CisgICAgU2hhZGVyICpnZXRTaGFkZXIoR0x1aW50IGhhbmRs
ZSk7CisgICAgUHJvZ3JhbSAqZ2V0UHJvZ3JhbShHTHVpbnQgaGFuZGxlKTsKKyAgICBUZXh0dXJl
ICpnZXRUZXh0dXJlKEdMdWludCBoYW5kbGUpOworICAgIFJlbmRlcmJ1ZmZlciAqZ2V0UmVuZGVy
YnVmZmVyKEdMdWludCBoYW5kbGUpOworICAgIAorICAgIHZvaWQgc2V0UmVuZGVyYnVmZmVyKEdM
dWludCBoYW5kbGUsIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyKTsKKworICAgIHZvaWQgY2hl
Y2tCdWZmZXJBbGxvY2F0aW9uKHVuc2lnbmVkIGludCBidWZmZXIpOworICAgIHZvaWQgY2hlY2tU
ZXh0dXJlQWxsb2NhdGlvbihHTHVpbnQgdGV4dHVyZSwgVGV4dHVyZVR5cGUgdHlwZSk7CisgICAg
dm9pZCBjaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24oR0x1aW50IHJlbmRlcmJ1ZmZlcik7CisK
KyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVzb3VyY2VNYW5hZ2Vy
KTsKKworICAgIHN0ZDo6c2l6ZV90IG1SZWZDb3VudDsKKyAgICByeDo6UmVuZGVyZXIgKm1SZW5k
ZXJlcjsKKworI2lmbmRlZiBIQVNIX01BUAorIyBpZmRlZiBfTVNDX1ZFUgorIyAgZGVmaW5lIEhB
U0hfTUFQIHN0ZGV4dDo6aGFzaF9tYXAKKyMgZWxzZQorIyAgZGVmaW5lIEhBU0hfTUFQIHN0ZDo6
dW5vcmRlcmVkX21hcAorIyBlbmRpZgorI2VuZGlmCisKKyAgICB0eXBlZGVmIEhBU0hfTUFQPEdM
dWludCwgQnVmZmVyKj4gQnVmZmVyTWFwOworICAgIEJ1ZmZlck1hcCBtQnVmZmVyTWFwOworICAg
IEhhbmRsZUFsbG9jYXRvciBtQnVmZmVySGFuZGxlQWxsb2NhdG9yOworCisgICAgdHlwZWRlZiBI
QVNIX01BUDxHTHVpbnQsIFNoYWRlcio+IFNoYWRlck1hcDsKKyAgICBTaGFkZXJNYXAgbVNoYWRl
ck1hcDsKKworICAgIHR5cGVkZWYgSEFTSF9NQVA8R0x1aW50LCBQcm9ncmFtKj4gUHJvZ3JhbU1h
cDsKKyAgICBQcm9ncmFtTWFwIG1Qcm9ncmFtTWFwOworICAgIEhhbmRsZUFsbG9jYXRvciBtUHJv
Z3JhbVNoYWRlckhhbmRsZUFsbG9jYXRvcjsKKworICAgIHR5cGVkZWYgSEFTSF9NQVA8R0x1aW50
LCBUZXh0dXJlKj4gVGV4dHVyZU1hcDsKKyAgICBUZXh0dXJlTWFwIG1UZXh0dXJlTWFwOworICAg
IEhhbmRsZUFsbG9jYXRvciBtVGV4dHVyZUhhbmRsZUFsbG9jYXRvcjsKKworICAgIHR5cGVkZWYg
SEFTSF9NQVA8R0x1aW50LCBSZW5kZXJidWZmZXIqPiBSZW5kZXJidWZmZXJNYXA7CisgICAgUmVu
ZGVyYnVmZmVyTWFwIG1SZW5kZXJidWZmZXJNYXA7CisgICAgSGFuZGxlQWxsb2NhdG9yIG1SZW5k
ZXJidWZmZXJIYW5kbGVBbGxvY2F0b3I7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJf
UkVTT1VSQ0VNQU5BR0VSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL1NoYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9TaGFkZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9TaGFkZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDYyMiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisv
LyBTaGFkZXIuY3BwOiBJbXBsZW1lbnRzIHRoZSBnbDo6U2hhZGVyIGNsYXNzIGFuZCBpdHMgIGRl
cml2ZWQgY2xhc3NlcworLy8gVmVydGV4U2hhZGVyIGFuZCBGcmFnbWVudFNoYWRlci4gSW1wbGVt
ZW50cyBHTCBzaGFkZXIgb2JqZWN0cyBhbmQgcmVsYXRlZAorLy8gZnVuY3Rpb25hbGl0eS4gW09w
ZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMi4xMCBwYWdlIDI0IGFuZCBzZWN0aW9uIDMuOCBwYWdl
IDg0LgorCisjaW5jbHVkZSAibGliR0xFU3YyL1NoYWRlci5oIgorCisjaW5jbHVkZSAiR0xTTEFO
Ry9TaGFkZXJMYW5nLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9D
b25zdGFudHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVzb3VyY2VNYW5hZ2VyLmgiCisKK25h
bWVzcGFjZSBnbAorewordm9pZCAqU2hhZGVyOjptRnJhZ21lbnRDb21waWxlciA9IE5VTEw7Cit2
b2lkICpTaGFkZXI6Om1WZXJ0ZXhDb21waWxlciA9IE5VTEw7CisKK1NoYWRlcjo6U2hhZGVyKFJl
c291cmNlTWFuYWdlciAqbWFuYWdlciwgY29uc3Qgcng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1
aW50IGhhbmRsZSkKKyAgICA6IG1IYW5kbGUoaGFuZGxlKSwgbVJlbmRlcmVyKHJlbmRlcmVyKSwg
bVJlc291cmNlTWFuYWdlcihtYW5hZ2VyKQoreworICAgIG1Tb3VyY2UgPSBOVUxMOworICAgIG1I
bHNsID0gTlVMTDsKKyAgICBtSW5mb0xvZyA9IE5VTEw7CisKKyAgICB1bmNvbXBpbGUoKTsKKyAg
ICBpbml0aWFsaXplQ29tcGlsZXIoKTsKKworICAgIG1SZWZDb3VudCA9IDA7CisgICAgbURlbGV0
ZVN0YXR1cyA9IGZhbHNlOworfQorCitTaGFkZXI6On5TaGFkZXIoKQoreworICAgIGRlbGV0ZVtd
IG1Tb3VyY2U7CisgICAgZGVsZXRlW10gbUhsc2w7CisgICAgZGVsZXRlW10gbUluZm9Mb2c7Cit9
CisKK0dMdWludCBTaGFkZXI6OmdldEhhbmRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1IYW5k
bGU7Cit9CisKK3ZvaWQgU2hhZGVyOjpzZXRTb3VyY2UoR0xzaXplaSBjb3VudCwgY29uc3QgY2hh
ciAqKnN0cmluZywgY29uc3QgR0xpbnQgKmxlbmd0aCkKK3sKKyAgICBkZWxldGVbXSBtU291cmNl
OworICAgIGludCB0b3RhbExlbmd0aCA9IDA7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNv
dW50OyBpKyspCisgICAgeworICAgICAgICBpZiAobGVuZ3RoICYmIGxlbmd0aFtpXSA+PSAwKQor
ICAgICAgICB7CisgICAgICAgICAgICB0b3RhbExlbmd0aCArPSBsZW5ndGhbaV07CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICB0b3RhbExlbmd0aCArPSAo
aW50KXN0cmxlbihzdHJpbmdbaV0pOworICAgICAgICB9CisgICAgfQorCisgICAgbVNvdXJjZSA9
IG5ldyBjaGFyW3RvdGFsTGVuZ3RoICsgMV07CisgICAgY2hhciAqY29kZSA9IG1Tb3VyY2U7CisK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgeworICAgICAgICBpbnQg
c3RyaW5nTGVuZ3RoOworCisgICAgICAgIGlmIChsZW5ndGggJiYgbGVuZ3RoW2ldID49IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9IGxlbmd0aFtpXTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9IChp
bnQpc3RybGVuKHN0cmluZ1tpXSk7CisgICAgICAgIH0KKworICAgICAgICBzdHJuY3B5KGNvZGUs
IHN0cmluZ1tpXSwgc3RyaW5nTGVuZ3RoKTsKKyAgICAgICAgY29kZSArPSBzdHJpbmdMZW5ndGg7
CisgICAgfQorCisgICAgbVNvdXJjZVt0b3RhbExlbmd0aF0gPSAnXDAnOworfQorCitpbnQgU2hh
ZGVyOjpnZXRJbmZvTG9nTGVuZ3RoKCkgY29uc3QKK3sKKyAgICBpZiAoIW1JbmZvTG9nKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgcmV0
dXJuIHN0cmxlbihtSW5mb0xvZykgKyAxOworICAgIH0KK30KKwordm9pZCBTaGFkZXI6OmdldElu
Zm9Mb2coR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmluZm9Mb2cpCit7
CisgICAgaW50IGluZGV4ID0gMDsKKworICAgIGlmIChidWZTaXplID4gMCkKKyAgICB7CisgICAg
ICAgIGlmIChtSW5mb0xvZykKKyAgICAgICAgeworICAgICAgICAgICAgaW5kZXggPSBzdGQ6Om1p
bihidWZTaXplIC0gMSwgKGludClzdHJsZW4obUluZm9Mb2cpKTsKKyAgICAgICAgICAgIG1lbWNw
eShpbmZvTG9nLCBtSW5mb0xvZywgaW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgaW5mb0xv
Z1tpbmRleF0gPSAnXDAnOworICAgIH0KKworICAgIGlmIChsZW5ndGgpCisgICAgeworICAgICAg
ICAqbGVuZ3RoID0gaW5kZXg7CisgICAgfQorfQorCitpbnQgU2hhZGVyOjpnZXRTb3VyY2VMZW5n
dGgoKSBjb25zdAoreworICAgIGlmICghbVNvdXJjZSkKKyAgICB7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgIHJldHVybiBzdHJsZW4obVNvdXJjZSkg
KyAxOworICAgIH0KK30KKworaW50IFNoYWRlcjo6Z2V0VHJhbnNsYXRlZFNvdXJjZUxlbmd0aCgp
IGNvbnN0Cit7CisgICAgaWYgKCFtSGxzbCkKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgIHJldHVybiBzdHJsZW4obUhsc2wpICsgMTsKKyAg
ICB9Cit9CisKK3ZvaWQgU2hhZGVyOjpnZXRTb3VyY2VJbXBsKGNoYXIgKnNvdXJjZSwgR0xzaXpl
aSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1ZmZlcikKK3sKKyAgICBpbnQgaW5k
ZXggPSAwOworCisgICAgaWYgKGJ1ZlNpemUgPiAwKQorICAgIHsKKyAgICAgICAgaWYgKHNvdXJj
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgaW5kZXggPSBzdGQ6Om1pbihidWZTaXplIC0gMSwg
KGludClzdHJsZW4oc291cmNlKSk7CisgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCBzb3VyY2Us
IGluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlcltpbmRleF0gPSAnXDAnOworICAg
IH0KKworICAgIGlmIChsZW5ndGgpCisgICAgeworICAgICAgICAqbGVuZ3RoID0gaW5kZXg7Cisg
ICAgfQorfQorCit2b2lkIFNoYWRlcjo6Z2V0U291cmNlKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXpl
aSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpCit7CisgICAgZ2V0U291cmNlSW1wbChtU291cmNlLCBi
dWZTaXplLCBsZW5ndGgsIGJ1ZmZlcik7Cit9CisKK3ZvaWQgU2hhZGVyOjpnZXRUcmFuc2xhdGVk
U291cmNlKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpCit7
CisgICAgZ2V0U291cmNlSW1wbChtSGxzbCwgYnVmU2l6ZSwgbGVuZ3RoLCBidWZmZXIpOworfQor
Citjb25zdCBzaDo6QWN0aXZlVW5pZm9ybXMgJlNoYWRlcjo6Z2V0VW5pZm9ybXMoKQoreworICAg
IHJldHVybiBtQWN0aXZlVW5pZm9ybXM7Cit9CisKK2Jvb2wgU2hhZGVyOjppc0NvbXBpbGVkKCkK
K3sKKyAgICByZXR1cm4gbUhsc2wgIT0gTlVMTDsKK30KKworY29uc3QgY2hhciAqU2hhZGVyOjpn
ZXRITFNMKCkKK3sKKyAgICByZXR1cm4gbUhsc2w7Cit9CisKK3ZvaWQgU2hhZGVyOjphZGRSZWYo
KQoreworICAgIG1SZWZDb3VudCsrOworfQorCit2b2lkIFNoYWRlcjo6cmVsZWFzZSgpCit7Cisg
ICAgbVJlZkNvdW50LS07CisKKyAgICBpZiAobVJlZkNvdW50ID09IDAgJiYgbURlbGV0ZVN0YXR1
cykKKyAgICB7CisgICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPmRlbGV0ZVNoYWRlcihtSGFuZGxl
KTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBTaGFkZXI6OmdldFJlZkNvdW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVJlZkNvdW50OworfQorCitib29sIFNoYWRlcjo6aXNGbGFnZ2VkRm9y
RGVsZXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtRGVsZXRlU3RhdHVzOworfQorCit2b2lk
IFNoYWRlcjo6ZmxhZ0ZvckRlbGV0aW9uKCkKK3sKKyAgICBtRGVsZXRlU3RhdHVzID0gdHJ1ZTsK
K30KKworLy8gUGVyZm9ybSBhIG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG9mIHRoZSBzaGFkZXIg
Y29tcGlsZXIgKG9yIGFmdGVyIGJlaW5nIGRlc3RydWN0ZWQgYnkgcmVsZWFzZUNvbXBpbGVyKQor
dm9pZCBTaGFkZXI6OmluaXRpYWxpemVDb21waWxlcigpCit7CisgICAgaWYgKCFtRnJhZ21lbnRD
b21waWxlcikKKyAgICB7CisgICAgICAgIGludCByZXN1bHQgPSBTaEluaXRpYWxpemUoKTsKKwor
ICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICBTaFNoYWRlck91dHB1
dCBobHNsVmVyc2lvbiA9IChtUmVuZGVyZXItPmdldE1ham9yU2hhZGVyTW9kZWwoKSA+PSA0KSA/
IFNIX0hMU0wxMV9PVVRQVVQgOiBTSF9ITFNMOV9PVVRQVVQ7CisKKyAgICAgICAgICAgIFNoQnVp
bHRJblJlc291cmNlcyByZXNvdXJjZXM7CisgICAgICAgICAgICBTaEluaXRCdWlsdEluUmVzb3Vy
Y2VzKCZyZXNvdXJjZXMpOworCisgICAgICAgICAgICByZXNvdXJjZXMuTWF4VmVydGV4QXR0cmli
cyA9IE1BWF9WRVJURVhfQVRUUklCUzsKKyAgICAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhV
bmlmb3JtVmVjdG9ycyA9IG1SZW5kZXJlci0+Z2V0TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMoKTsK
KyAgICAgICAgICAgIHJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyA9IG1SZW5kZXJlci0+Z2V0
TWF4VmFyeWluZ1ZlY3RvcnMoKTsKKyAgICAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0
dXJlSW1hZ2VVbml0cyA9IG1SZW5kZXJlci0+Z2V0TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMo
KTsKKyAgICAgICAgICAgIHJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0g
bVJlbmRlcmVyLT5nZXRNYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKCk7CisgICAgICAgICAg
ICByZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMgPSBNQVhfVEVYVFVSRV9JTUFHRV9VTklU
UzsKKyAgICAgICAgICAgIHJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0gbVJl
bmRlcmVyLT5nZXRNYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKCk7CisgICAgICAgICAgICByZXNv
dXJjZXMuTWF4RHJhd0J1ZmZlcnMgPSBtUmVuZGVyZXItPmdldE1heFJlbmRlclRhcmdldHMoKTsK
KyAgICAgICAgICAgIHJlc291cmNlcy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgPSBtUmVuZGVy
ZXItPmdldERlcml2YXRpdmVJbnN0cnVjdGlvblN1cHBvcnQoKTsKKyAgICAgICAgICAgIHJlc291
cmNlcy5FWFRfZHJhd19idWZmZXJzID0gbVJlbmRlcmVyLT5nZXRNYXhSZW5kZXJUYXJnZXRzKCkg
PiAxOworICAgICAgICAgICAgLy8gcmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgPSBt
UmVuZGVyZXItPmdldFNoYXJlSGFuZGxlU3VwcG9ydCgpID8gMSA6IDA7IC8vIFRPRE86IGNvbW1l
bnRlZCBvdXQgdW50aWwgdGhlIGV4dGVuc2lvbiBpcyBhY3R1YWxseSBzdXBwb3J0ZWQuCisgICAg
ICAgICAgICByZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID0gMTsgICAvLyBTaGFkZXIg
TW9kZWwgMisgYWx3YXlzIHN1cHBvcnRzIEZQMjQgKHMxNmU3KSB3aGljaCBjb3JyZXNwb25kcyB0
byBoaWdocAorICAgICAgICAgICAgcmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoID0gMTsgLy8gU2hh
ZGVyIE1vZGVsIDIrIGFsd2F5cyBzdXBwb3J0cyBleHBsaWNpdCBkZXB0aCBvdXRwdXQKKworICAg
ICAgICAgICAgbUZyYWdtZW50Q29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKFNIX0ZSQUdN
RU5UX1NIQURFUiwgU0hfR0xFUzJfU1BFQywgaGxzbFZlcnNpb24sICZyZXNvdXJjZXMpOworICAg
ICAgICAgICAgbVZlcnRleENvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihTSF9WRVJURVhf
U0hBREVSLCBTSF9HTEVTMl9TUEVDLCBobHNsVmVyc2lvbiwgJnJlc291cmNlcyk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZvaWQgU2hhZGVyOjpyZWxlYXNlQ29tcGlsZXIoKQoreworICAgIFNo
RGVzdHJ1Y3QobUZyYWdtZW50Q29tcGlsZXIpOworICAgIFNoRGVzdHJ1Y3QobVZlcnRleENvbXBp
bGVyKTsKKworICAgIG1GcmFnbWVudENvbXBpbGVyID0gTlVMTDsKKyAgICBtVmVydGV4Q29tcGls
ZXIgPSBOVUxMOworCisgICAgU2hGaW5hbGl6ZSgpOworfQorCit2b2lkIFNoYWRlcjo6cGFyc2VW
YXJ5aW5ncygpCit7CisgICAgaWYgKG1IbHNsKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAq
aW5wdXQgPSBzdHJzdHIobUhsc2wsICIvLyBWYXJ5aW5ncyIpICsgMTI7CisKKyAgICAgICAgd2hp
bGUodHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2hhciB2YXJ5aW5nVHlwZVsyNTZdOwor
ICAgICAgICAgICAgY2hhciB2YXJ5aW5nTmFtZVsyNTZdOworCisgICAgICAgICAgICBpbnQgbWF0
Y2hlcyA9IHNzY2FuZihpbnB1dCwgInN0YXRpYyAlMjU1cyAlMjU1cyIsIHZhcnlpbmdUeXBlLCB2
YXJ5aW5nTmFtZSk7CisKKyAgICAgICAgICAgIGlmIChtYXRjaGVzICE9IDIpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGNoYXIgKmFycmF5ID0gc3Ryc3RyKHZhcnlpbmdOYW1lLCAiWyIpOworICAgICAgICAgICAgaW50
IHNpemUgPSAxOworCisgICAgICAgICAgICBpZiAoYXJyYXkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgc2l6ZSA9IGF0b2koYXJyYXkgKyAxKTsKKyAgICAgICAgICAgICAgICAqYXJy
YXkgPSAnXDAnOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtVmFyeWluZ3MucHVzaF9i
YWNrKFZhcnlpbmcocGFyc2VUeXBlKHZhcnlpbmdUeXBlKSwgdmFyeWluZ05hbWUsIHNpemUsIGFy
cmF5ICE9IE5VTEwpKTsKKworICAgICAgICAgICAgaW5wdXQgPSBzdHJzdHIoaW5wdXQsICI7Iikg
KyAyOworICAgICAgICB9CisKKyAgICAgICAgbVVzZXNNdWx0aXBsZVJlbmRlclRhcmdldHMgPSBz
dHJzdHIobUhsc2wsICJHTF9VU0VTX01SVCIpICE9IE5VTEw7CisgICAgICAgIG1Vc2VzRnJhZ0Nv
bG9yID0gc3Ryc3RyKG1IbHNsLCAiR0xfVVNFU19GUkFHX0NPTE9SIikgIT0gTlVMTDsKKyAgICAg
ICAgbVVzZXNGcmFnRGF0YSA9IHN0cnN0cihtSGxzbCwgIkdMX1VTRVNfRlJBR19EQVRBIikgIT0g
TlVMTDsKKyAgICAgICAgbVVzZXNGcmFnQ29vcmQgPSBzdHJzdHIobUhsc2wsICJHTF9VU0VTX0ZS
QUdfQ09PUkQiKSAhPSBOVUxMOworICAgICAgICBtVXNlc0Zyb250RmFjaW5nID0gc3Ryc3RyKG1I
bHNsLCAiR0xfVVNFU19GUk9OVF9GQUNJTkciKSAhPSBOVUxMOworICAgICAgICBtVXNlc1BvaW50
U2l6ZSA9IHN0cnN0cihtSGxzbCwgIkdMX1VTRVNfUE9JTlRfU0laRSIpICE9IE5VTEw7CisgICAg
ICAgIG1Vc2VzUG9pbnRDb29yZCA9IHN0cnN0cihtSGxzbCwgIkdMX1VTRVNfUE9JTlRfQ09PUkQi
KSAhPSBOVUxMOworICAgICAgICBtVXNlc0RlcHRoUmFuZ2UgPSBzdHJzdHIobUhsc2wsICJHTF9V
U0VTX0RFUFRIX1JBTkdFIikgIT0gTlVMTDsKKyAgICAgICAgbVVzZXNGcmFnRGVwdGggPSBzdHJz
dHIobUhsc2wsICJHTF9VU0VTX0ZSQUdfREVQVEgiKSAhPSBOVUxMOworICAgIH0KK30KKwordm9p
ZCBTaGFkZXI6OnJlc2V0VmFyeWluZ3NSZWdpc3RlckFzc2lnbm1lbnQoKQoreworICAgIGZvciAo
VmFyeWluZ0xpc3Q6Oml0ZXJhdG9yIHZhciA9IG1WYXJ5aW5ncy5iZWdpbigpOyB2YXIgIT0gbVZh
cnlpbmdzLmVuZCgpOyB2YXIrKykKKyAgICB7CisgICAgICAgIHZhci0+cmVnID0gLTE7CisgICAg
ICAgIHZhci0+Y29sID0gLTE7CisgICAgfQorfQorCisvLyBpbml0aWFsaXplL2NsZWFuIHVwIHBy
ZXZpb3VzIHN0YXRlCit2b2lkIFNoYWRlcjo6dW5jb21waWxlKCkKK3sKKyAgICAvLyBzZXQgYnkg
Y29tcGlsZVRvSExTTAorICAgIGRlbGV0ZVtdIG1IbHNsOworICAgIG1IbHNsID0gTlVMTDsKKyAg
ICBkZWxldGVbXSBtSW5mb0xvZzsKKyAgICBtSW5mb0xvZyA9IE5VTEw7CisKKyAgICAvLyBzZXQg
YnkgcGFyc2VWYXJ5aW5ncworICAgIG1WYXJ5aW5ncy5jbGVhcigpOworCisgICAgbVVzZXNNdWx0
aXBsZVJlbmRlclRhcmdldHMgPSBmYWxzZTsKKyAgICBtVXNlc0ZyYWdDb2xvciA9IGZhbHNlOwor
ICAgIG1Vc2VzRnJhZ0RhdGEgPSBmYWxzZTsKKyAgICBtVXNlc0ZyYWdDb29yZCA9IGZhbHNlOwor
ICAgIG1Vc2VzRnJvbnRGYWNpbmcgPSBmYWxzZTsKKyAgICBtVXNlc1BvaW50U2l6ZSA9IGZhbHNl
OworICAgIG1Vc2VzUG9pbnRDb29yZCA9IGZhbHNlOworICAgIG1Vc2VzRGVwdGhSYW5nZSA9IGZh
bHNlOworICAgIG1Vc2VzRnJhZ0RlcHRoID0gZmFsc2U7CisKKyAgICBtQWN0aXZlVW5pZm9ybXMu
Y2xlYXIoKTsKK30KKwordm9pZCBTaGFkZXI6OmNvbXBpbGVUb0hMU0wodm9pZCAqY29tcGlsZXIp
Cit7CisgICAgLy8gZW5zdXJlIHdlIGRvbid0IHBhc3MgYSBOVUxMIHNvdXJjZSB0byB0aGUgY29t
cGlsZXIKKyAgICBjb25zdCBjaGFyICpzb3VyY2UgPSAiXDAiOworICAgIGlmIChtU291cmNlKQor
ICAgIHsKKyAgICAgICAgc291cmNlID0gbVNvdXJjZTsKKyAgICB9CisKKyAgICAvLyBlbnN1cmUg
dGhlIGNvbXBpbGVyIGlzIGxvYWRlZAorICAgIGluaXRpYWxpemVDb21waWxlcigpOworCisgICAg
aW50IGNvbXBpbGVPcHRpb25zID0gU0hfT0JKRUNUX0NPREU7CisgICAgc3RkOjpzdHJpbmcgc291
cmNlUGF0aDsKKyAgICBpZiAocGVyZkFjdGl2ZSgpKQorICAgIHsKKyAgICAgICAgc291cmNlUGF0
aCA9IGdldFRlbXBQYXRoKCk7CisgICAgICAgIHdyaXRlRmlsZShzb3VyY2VQYXRoLmNfc3RyKCks
IHNvdXJjZSwgc3RybGVuKHNvdXJjZSkpOworICAgICAgICBjb21waWxlT3B0aW9ucyB8PSBTSF9M
SU5FX0RJUkVDVElWRVM7CisgICAgfQorCisgICAgaW50IHJlc3VsdDsKKyAgICBpZiAoc291cmNl
UGF0aC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gU2hDb21waWxlKGNvbXBpbGVy
LCAmc291cmNlLCAxLCBjb21waWxlT3B0aW9ucyk7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIGNvbnN0IGNoYXIqIHNvdXJjZVN0cmluZ3NbMl0gPQorICAgICAgICB7CisgICAgICAg
ICAgICBzb3VyY2VQYXRoLmNfc3RyKCksCisgICAgICAgICAgICBzb3VyY2UKKyAgICAgICAgfTsK
KworICAgICAgICByZXN1bHQgPSBTaENvbXBpbGUoY29tcGlsZXIsIHNvdXJjZVN0cmluZ3MsIDIs
IGNvbXBpbGVPcHRpb25zIHwgU0hfU09VUkNFX1BBVEgpOworICAgIH0KKworICAgIGlmIChyZXN1
bHQpCisgICAgeworICAgICAgICBzaXplX3Qgb2JqQ29kZUxlbiA9IDA7CisgICAgICAgIFNoR2V0
SW5mbyhjb21waWxlciwgU0hfT0JKRUNUX0NPREVfTEVOR1RILCAmb2JqQ29kZUxlbik7CisgICAg
ICAgIG1IbHNsID0gbmV3IGNoYXJbb2JqQ29kZUxlbl07CisgICAgICAgIFNoR2V0T2JqZWN0Q29k
ZShjb21waWxlciwgbUhsc2wpOworCisgICAgICAgIHZvaWQgKmFjdGl2ZVVuaWZvcm1zOworICAg
ICAgICBTaEdldEluZm9Qb2ludGVyKGNvbXBpbGVyLCBTSF9BQ1RJVkVfVU5JRk9STVNfQVJSQVks
ICZhY3RpdmVVbmlmb3Jtcyk7CisgICAgICAgIG1BY3RpdmVVbmlmb3JtcyA9ICooc2g6OkFjdGl2
ZVVuaWZvcm1zKilhY3RpdmVVbmlmb3JtczsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgc2l6ZV90IGluZm9Mb2dMZW4gPSAwOworICAgICAgICBTaEdldEluZm8oY29tcGlsZXIsIFNI
X0lORk9fTE9HX0xFTkdUSCwgJmluZm9Mb2dMZW4pOworICAgICAgICBtSW5mb0xvZyA9IG5ldyBj
aGFyW2luZm9Mb2dMZW5dOworICAgICAgICBTaEdldEluZm9Mb2coY29tcGlsZXIsIG1JbmZvTG9n
KTsKKworICAgICAgICBUUkFDRSgiXG4lcyIsIG1JbmZvTG9nKTsKKyAgICB9Cit9CisKK0dMZW51
bSBTaGFkZXI6OnBhcnNlVHlwZShjb25zdCBzdGQ6OnN0cmluZyAmdHlwZSkKK3sKKyAgICBpZiAo
dHlwZSA9PSAiZmxvYXQiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOworICAgIH0K
KyAgICBlbHNlIGlmICh0eXBlID09ICJmbG9hdDIiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdM
X0ZMT0FUX1ZFQzI7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUgPT0gImZsb2F0MyIpCisgICAg
eworICAgICAgICByZXR1cm4gR0xfRkxPQVRfVkVDMzsKKyAgICB9CisgICAgZWxzZSBpZiAodHlw
ZSA9PSAiZmxvYXQ0IikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GTE9BVF9WRUM0OworICAg
IH0KKyAgICBlbHNlIGlmICh0eXBlID09ICJmbG9hdDJ4MiIpCisgICAgeworICAgICAgICByZXR1
cm4gR0xfRkxPQVRfTUFUMjsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSAiZmxvYXQzeDMi
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX0ZMT0FUX01BVDM7CisgICAgfQorICAgIGVsc2Ug
aWYgKHR5cGUgPT0gImZsb2F0NHg0IikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GTE9BVF9N
QVQ0OworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisKKyAgICByZXR1cm4gR0xfTk9O
RTsKK30KKworLy8gdHJ1ZSBpZiB2YXJ5aW5nIHggaGFzIGEgaGlnaGVyIHByaW9yaXR5IGluIHBh
Y2tpbmcgdGhhbiB5Citib29sIFNoYWRlcjo6Y29tcGFyZVZhcnlpbmcoY29uc3QgVmFyeWluZyAm
eCwgY29uc3QgVmFyeWluZyAmeSkKK3sKKyAgICBpZih4LnR5cGUgPT0geS50eXBlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHguc2l6ZSA+IHkuc2l6ZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHgu
dHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6IHJldHVybiB0cnVlOworICAg
ICAgY2FzZSBHTF9GTE9BVF9NQVQyOgorICAgICAgICBzd2l0Y2goeS50eXBlKQorICAgICAgICB7
CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OiByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
Y2FzZSBHTF9GTE9BVF9NQVQyOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FU
X1ZFQzQ6IHJldHVybiB0cnVlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzogcmV0dXJu
IHRydWU7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMzOiByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6IHJldHVybiB0cnVlOworICAgICAgICAgIGNhc2UgR0xf
RkxPQVQ6ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoK
KyAgICAgICAgc3dpdGNoKHkudHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfRkxP
QVRfTUFUNDogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjogcmV0
dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDogcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBjYXNl
IEdMX0ZMT0FUX1ZFQzM6IHJldHVybiB0cnVlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVD
MjogcmV0dXJuIHRydWU7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVDogICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOgorICAgICAgICBzd2l0Y2goeS50eXBl
KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OiByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOiByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
Y2FzZSBHTF9GTE9BVF9WRUM0OiByZXR1cm4gZmFsc2U7CisgICAgICAgICAgY2FzZSBHTF9GTE9B
VF9NQVQzOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6IHJldHVy
biB0cnVlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjogcmV0dXJuIHRydWU7CisgICAg
ICAgICAgY2FzZSBHTF9GTE9BVDogICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9GTE9BVF9WRUMzOgorICAgICAgICBzd2l0Y2goeS50eXBlKQorICAgICAgICB7CisgICAgICAg
ICAgY2FzZSBHTF9GTE9BVF9NQVQ0OiByZXR1cm4gZmFsc2U7CisgICAgICAgICAgY2FzZSBHTF9G
TE9BVF9NQVQyOiByZXR1cm4gZmFsc2U7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0OiBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOiByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMzOiByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBj
YXNlIEdMX0ZMT0FUX1ZFQzI6IHJldHVybiB0cnVlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKKyAgICAg
ICAgc3dpdGNoKHkudHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFU
NDogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjogcmV0dXJuIGZh
bHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDogcmV0dXJuIGZhbHNlOworICAgICAg
ICAgIGNhc2UgR0xfRkxPQVRfTUFUMzogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xf
RkxPQVRfVkVDMzogcmV0dXJuIGZhbHNlOworICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjog
cmV0dXJuIHRydWU7CisgICAgICAgICAgY2FzZSBHTF9GTE9BVDogICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9GTE9BVDogcmV0dXJuIGZhbHNlOworICAgICAgZGVmYXVsdDog
VU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1ZlcnRleFNo
YWRlcjo6VmVydGV4U2hhZGVyKFJlc291cmNlTWFuYWdlciAqbWFuYWdlciwgY29uc3Qgcng6OlJl
bmRlcmVyICpyZW5kZXJlciwgR0x1aW50IGhhbmRsZSkKKyAgICA6IFNoYWRlcihtYW5hZ2VyLCBy
ZW5kZXJlciwgaGFuZGxlKQoreworfQorCitWZXJ0ZXhTaGFkZXI6On5WZXJ0ZXhTaGFkZXIoKQor
eworfQorCitHTGVudW0gVmVydGV4U2hhZGVyOjpnZXRUeXBlKCkKK3sKKyAgICByZXR1cm4gR0xf
VkVSVEVYX1NIQURFUjsKK30KKwordm9pZCBWZXJ0ZXhTaGFkZXI6OnVuY29tcGlsZSgpCit7Cisg
ICAgU2hhZGVyOjp1bmNvbXBpbGUoKTsKKworICAgIC8vIHNldCBieSBQYXJzZUF0dHJpYnV0ZXMK
KyAgICBtQXR0cmlidXRlcy5jbGVhcigpOworfQorCit2b2lkIFZlcnRleFNoYWRlcjo6Y29tcGls
ZSgpCit7CisgICAgdW5jb21waWxlKCk7CisKKyAgICBjb21waWxlVG9ITFNMKG1WZXJ0ZXhDb21w
aWxlcik7CisgICAgcGFyc2VBdHRyaWJ1dGVzKCk7CisgICAgcGFyc2VWYXJ5aW5ncygpOworfQor
CitpbnQgVmVydGV4U2hhZGVyOjpnZXRTZW1hbnRpY0luZGV4KGNvbnN0IHN0ZDo6c3RyaW5nICZh
dHRyaWJ1dGVOYW1lKQoreworICAgIGlmICghYXR0cmlidXRlTmFtZS5lbXB0eSgpKQorICAgIHsK
KyAgICAgICAgaW50IHNlbWFudGljSW5kZXggPSAwOworICAgICAgICBmb3IgKEF0dHJpYnV0ZUFy
cmF5OjppdGVyYXRvciBhdHRyaWJ1dGUgPSBtQXR0cmlidXRlcy5iZWdpbigpOyBhdHRyaWJ1dGUg
IT0gbUF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoYXR0cmlidXRlLT5uYW1lID09IGF0dHJpYnV0ZU5hbWUpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHNlbWFudGljSW5kZXg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHNlbWFudGljSW5kZXggKz0gVmFyaWFibGVSb3dDb3VudChhdHRyaWJ1dGUtPnR5
cGUpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCit2b2lkIFZlcnRl
eFNoYWRlcjo6cGFyc2VBdHRyaWJ1dGVzKCkKK3sKKyAgICBjb25zdCBjaGFyICpobHNsID0gZ2V0
SExTTCgpOworICAgIGlmIChobHNsKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqaW5wdXQg
PSBzdHJzdHIoaGxzbCwgIi8vIEF0dHJpYnV0ZXMiKSArIDE0OworCisgICAgICAgIHdoaWxlKHRy
dWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoYXIgYXR0cmlidXRlVHlwZVsyNTZdOworICAg
ICAgICAgICAgY2hhciBhdHRyaWJ1dGVOYW1lWzI1Nl07CisKKyAgICAgICAgICAgIGludCBtYXRj
aGVzID0gc3NjYW5mKGlucHV0LCAic3RhdGljICUyNTVzIF8lMjU1cyIsIGF0dHJpYnV0ZVR5cGUs
IGF0dHJpYnV0ZU5hbWUpOworCisgICAgICAgICAgICBpZiAobWF0Y2hlcyAhPSAyKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBtQXR0cmlidXRlcy5wdXNoX2JhY2soQXR0cmlidXRlKHBhcnNlVHlwZShhdHRyaWJ1dGVU
eXBlKSwgYXR0cmlidXRlTmFtZSkpOworCisgICAgICAgICAgICBpbnB1dCA9IHN0cnN0cihpbnB1
dCwgIjsiKSArIDI7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0ZyYWdtZW50U2hhZGVyOjpGcmFn
bWVudFNoYWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsIGNvbnN0IHJ4OjpSZW5kZXJlciAq
cmVuZGVyZXIsIEdMdWludCBoYW5kbGUpCisgICAgOiBTaGFkZXIobWFuYWdlciwgcmVuZGVyZXIs
IGhhbmRsZSkKK3sKK30KKworRnJhZ21lbnRTaGFkZXI6On5GcmFnbWVudFNoYWRlcigpCit7Cit9
CisKK0dMZW51bSBGcmFnbWVudFNoYWRlcjo6Z2V0VHlwZSgpCit7CisgICAgcmV0dXJuIEdMX0ZS
QUdNRU5UX1NIQURFUjsKK30KKwordm9pZCBGcmFnbWVudFNoYWRlcjo6Y29tcGlsZSgpCit7Cisg
ICAgdW5jb21waWxlKCk7CisKKyAgICBjb21waWxlVG9ITFNMKG1GcmFnbWVudENvbXBpbGVyKTsK
KyAgICBwYXJzZVZhcnlpbmdzKCk7CisgICAgbVZhcnlpbmdzLnNvcnQoY29tcGFyZVZhcnlpbmcp
OworfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9TaGFk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L1NoYWRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9TaGFkZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODQgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKy8vIFNoYWRlci5oOiBEZWZpbmVzIHRoZSBhYnN0cmFjdCBnbDo6U2hhZGVy
IGNsYXNzIGFuZCBpdHMgY29uY3JldGUgZGVyaXZlZAorLy8gY2xhc3NlcyBWZXJ0ZXhTaGFkZXIg
YW5kIEZyYWdtZW50U2hhZGVyLiBJbXBsZW1lbnRzIEdMIHNoYWRlciBvYmplY3RzIGFuZAorLy8g
cmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAyLjEwIHBh
Z2UgMjQgYW5kIHNlY3Rpb24KKy8vIDMuOCBwYWdlIDg0LgorCisjaWZuZGVmIExJQkdMRVNWMl9T
SEFERVJfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1NIQURFUl9IXworCisjZGVmaW5lIEdMX0FQSUNB
TEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8
bGlzdD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJjb21waWxlci9Vbmlmb3JtLmgi
CisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFz
cyBSZW5kZXJlcjsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBSZXNvdXJjZU1hbmFnZXI7
CisKK3N0cnVjdCBWYXJ5aW5nCit7CisgICAgVmFyeWluZyhHTGVudW0gdHlwZSwgY29uc3Qgc3Rk
OjpzdHJpbmcgJm5hbWUsIGludCBzaXplLCBib29sIGFycmF5KQorICAgICAgICA6IHR5cGUodHlw
ZSksIG5hbWUobmFtZSksIHNpemUoc2l6ZSksIGFycmF5KGFycmF5KSwgcmVnKC0xKSwgY29sKC0x
KQorICAgIHsKKyAgICB9CisKKyAgICBHTGVudW0gdHlwZTsKKyAgICBzdGQ6OnN0cmluZyBuYW1l
OworICAgIGludCBzaXplOyAgIC8vIE51bWJlciBvZiAndHlwZScgZWxlbWVudHMKKyAgICBib29s
IGFycmF5OworCisgICAgaW50IHJlZzsgICAgLy8gRmlyc3QgdmFyeWluZyByZWdpc3RlciwgYXNz
aWduZWQgZHVyaW5nIGxpbmsKKyAgICBpbnQgY29sOyAgICAvLyBGaXJzdCByZWdpc3RlciBlbGVt
ZW50LCBhc3NpZ25lZCBkdXJpbmcgbGluaworfTsKKwordHlwZWRlZiBzdGQ6Omxpc3Q8VmFyeWlu
Zz4gVmFyeWluZ0xpc3Q7CisKK2NsYXNzIFNoYWRlcgoreworICAgIGZyaWVuZCBjbGFzcyBQcm9n
cmFtQmluYXJ5OworCisgIHB1YmxpYzoKKyAgICBTaGFkZXIoUmVzb3VyY2VNYW5hZ2VyICptYW5h
Z2VyLCBjb25zdCByeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHVpbnQgaGFuZGxlKTsKKworICAg
IHZpcnR1YWwgflNoYWRlcigpOworCisgICAgdmlydHVhbCBHTGVudW0gZ2V0VHlwZSgpID0gMDsK
KyAgICBHTHVpbnQgZ2V0SGFuZGxlKCkgY29uc3Q7CisKKyAgICB2b2lkIGRlbGV0ZVNvdXJjZSgp
OworICAgIHZvaWQgc2V0U291cmNlKEdMc2l6ZWkgY291bnQsIGNvbnN0IGNoYXIgKipzdHJpbmcs
IGNvbnN0IEdMaW50ICpsZW5ndGgpOworICAgIGludCBnZXRJbmZvTG9nTGVuZ3RoKCkgY29uc3Q7
CisgICAgdm9pZCBnZXRJbmZvTG9nKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBj
aGFyICppbmZvTG9nKTsKKyAgICBpbnQgZ2V0U291cmNlTGVuZ3RoKCkgY29uc3Q7CisgICAgdm9p
ZCBnZXRTb3VyY2UoR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1ZmZl
cik7CisgICAgaW50IGdldFRyYW5zbGF0ZWRTb3VyY2VMZW5ndGgoKSBjb25zdDsKKyAgICB2b2lk
IGdldFRyYW5zbGF0ZWRTb3VyY2UoR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNo
YXIgKmJ1ZmZlcik7CisgICAgY29uc3Qgc2g6OkFjdGl2ZVVuaWZvcm1zICZnZXRVbmlmb3Jtcygp
OworCisgICAgdmlydHVhbCB2b2lkIGNvbXBpbGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVu
Y29tcGlsZSgpOworICAgIGJvb2wgaXNDb21waWxlZCgpOworICAgIGNvbnN0IGNoYXIgKmdldEhM
U0woKTsKKworICAgIHZvaWQgYWRkUmVmKCk7CisgICAgdm9pZCByZWxlYXNlKCk7CisgICAgdW5z
aWduZWQgaW50IGdldFJlZkNvdW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0ZsYWdnZWRGb3JEZWxl
dGlvbigpIGNvbnN0OworICAgIHZvaWQgZmxhZ0ZvckRlbGV0aW9uKCk7CisKKyAgICBzdGF0aWMg
dm9pZCByZWxlYXNlQ29tcGlsZXIoKTsKKworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBwYXJzZVZh
cnlpbmdzKCk7CisgICAgdm9pZCByZXNldFZhcnlpbmdzUmVnaXN0ZXJBc3NpZ25tZW50KCk7CisK
KyAgICB2b2lkIGNvbXBpbGVUb0hMU0wodm9pZCAqY29tcGlsZXIpOworCisgICAgdm9pZCBnZXRT
b3VyY2VJbXBsKGNoYXIgKnNvdXJjZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgs
IGNoYXIgKmJ1ZmZlcik7CisKKyAgICBzdGF0aWMgR0xlbnVtIHBhcnNlVHlwZShjb25zdCBzdGQ6
OnN0cmluZyAmdHlwZSk7CisgICAgc3RhdGljIGJvb2wgY29tcGFyZVZhcnlpbmcoY29uc3QgVmFy
eWluZyAmeCwgY29uc3QgVmFyeWluZyAmeSk7CisKKyAgICBjb25zdCByeDo6UmVuZGVyZXIgKmNv
bnN0IG1SZW5kZXJlcjsKKworICAgIFZhcnlpbmdMaXN0IG1WYXJ5aW5nczsKKworICAgIGJvb2wg
bVVzZXNNdWx0aXBsZVJlbmRlclRhcmdldHM7CisgICAgYm9vbCBtVXNlc0ZyYWdDb2xvcjsKKyAg
ICBib29sIG1Vc2VzRnJhZ0RhdGE7CisgICAgYm9vbCBtVXNlc0ZyYWdDb29yZDsKKyAgICBib29s
IG1Vc2VzRnJvbnRGYWNpbmc7CisgICAgYm9vbCBtVXNlc1BvaW50U2l6ZTsKKyAgICBib29sIG1V
c2VzUG9pbnRDb29yZDsKKyAgICBib29sIG1Vc2VzRGVwdGhSYW5nZTsKKyAgICBib29sIG1Vc2Vz
RnJhZ0RlcHRoOworCisgICAgc3RhdGljIHZvaWQgKm1GcmFnbWVudENvbXBpbGVyOworICAgIHN0
YXRpYyB2b2lkICptVmVydGV4Q29tcGlsZXI7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19D
T1BZX0FORF9BU1NJR04oU2hhZGVyKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbXBpbGVyKCk7
CisKKyAgICBjb25zdCBHTHVpbnQgbUhhbmRsZTsKKyAgICB1bnNpZ25lZCBpbnQgbVJlZkNvdW50
OyAgICAgLy8gTnVtYmVyIG9mIHByb2dyYW0gb2JqZWN0cyB0aGlzIHNoYWRlciBpcyBhdHRhY2hl
ZCB0bworICAgIGJvb2wgbURlbGV0ZVN0YXR1czsgICAgICAgICAvLyBGbGFnIHRvIGluZGljYXRl
IHRoYXQgdGhlIHNoYWRlciBjYW4gYmUgZGVsZXRlZCB3aGVuIG5vIGxvbmdlciBpbiB1c2UKKwor
ICAgIGNoYXIgKm1Tb3VyY2U7CisgICAgY2hhciAqbUhsc2w7CisgICAgY2hhciAqbUluZm9Mb2c7
CisgICAgc2g6OkFjdGl2ZVVuaWZvcm1zIG1BY3RpdmVVbmlmb3JtczsKKworICAgIFJlc291cmNl
TWFuYWdlciAqbVJlc291cmNlTWFuYWdlcjsKK307CisKK3N0cnVjdCBBdHRyaWJ1dGUKK3sKKyAg
ICBBdHRyaWJ1dGUoKSA6IHR5cGUoR0xfTk9ORSksIG5hbWUoIiIpCisgICAgeworICAgIH0KKwor
ICAgIEF0dHJpYnV0ZShHTGVudW0gdHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIDogdHlw
ZSh0eXBlKSwgbmFtZShuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBHTGVudW0gdHlwZTsKKyAg
ICBzdGQ6OnN0cmluZyBuYW1lOworfTsKKwordHlwZWRlZiBzdGQ6OnZlY3RvcjxBdHRyaWJ1dGU+
IEF0dHJpYnV0ZUFycmF5OworCitjbGFzcyBWZXJ0ZXhTaGFkZXIgOiBwdWJsaWMgU2hhZGVyCit7
CisgICAgZnJpZW5kIGNsYXNzIFByb2dyYW1CaW5hcnk7CisKKyAgcHVibGljOgorICAgIFZlcnRl
eFNoYWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsIGNvbnN0IHJ4OjpSZW5kZXJlciAqcmVu
ZGVyZXIsIEdMdWludCBoYW5kbGUpOworCisgICAgflZlcnRleFNoYWRlcigpOworCisgICAgdmly
dHVhbCBHTGVudW0gZ2V0VHlwZSgpOworICAgIHZpcnR1YWwgdm9pZCBjb21waWxlKCk7CisgICAg
dmlydHVhbCB2b2lkIHVuY29tcGlsZSgpOworICAgIGludCBnZXRTZW1hbnRpY0luZGV4KGNvbnN0
IHN0ZDo6c3RyaW5nICZhdHRyaWJ1dGVOYW1lKTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTihWZXJ0ZXhTaGFkZXIpOworCisgICAgdm9pZCBwYXJzZUF0dHJpYnV0
ZXMoKTsKKworICAgIEF0dHJpYnV0ZUFycmF5IG1BdHRyaWJ1dGVzOworfTsKKworY2xhc3MgRnJh
Z21lbnRTaGFkZXIgOiBwdWJsaWMgU2hhZGVyCit7CisgIHB1YmxpYzoKKyAgICBGcmFnbWVudFNo
YWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsY29uc3Qgcng6OlJlbmRlcmVyICpyZW5kZXJl
ciwgR0x1aW50IGhhbmRsZSk7CisKKyAgICB+RnJhZ21lbnRTaGFkZXIoKTsKKworICAgIHZpcnR1
YWwgR0xlbnVtIGdldFR5cGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZSgpOworCisgIHBy
aXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEZyYWdtZW50U2hhZGVyKTsKK307
Cit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNWMl9TSEFERVJfSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ5NSBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgi
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBUZXh0dXJlLmNwcDogSW1wbGVtZW50cyB0aGUgZ2w6
OlRleHR1cmUgY2xhc3MgYW5kIGl0cyBkZXJpdmVkIGNsYXNzZXMKKy8vIFRleHR1cmUyRCBhbmQg
VGV4dHVyZUN1YmVNYXAuIEltcGxlbWVudHMgR0wgdGV4dHVyZSBvYmplY3RzIGFuZCByZWxhdGVk
CisvLyBmdW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAzLjcgcGFnZSA2
My4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCisKKyNpbmNsdWRlICJsaWJHTEVT
djIvbWFpbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvQmxpdC5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvSW1hZ2UuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVy
ZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UuaCIKKyNp
bmNsdWRlICJsaWJFR0wvU3VyZmFjZS5oIgorCituYW1lc3BhY2UgZ2wKK3sKKworVGV4dHVyZTo6
VGV4dHVyZShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHVpbnQgaWQpIDogUmVmQ291bnRPYmpl
Y3QoaWQpCit7CisgICAgbVJlbmRlcmVyID0gcmVuZGVyZXI7CisKKyAgICBtU2FtcGxlclN0YXRl
Lm1pbkZpbHRlciA9IEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUjsKKyAgICBtU2FtcGxlclN0YXRl
Lm1hZ0ZpbHRlciA9IEdMX0xJTkVBUjsKKyAgICBtU2FtcGxlclN0YXRlLndyYXBTID0gR0xfUkVQ
RUFUOworICAgIG1TYW1wbGVyU3RhdGUud3JhcFQgPSBHTF9SRVBFQVQ7CisgICAgbVNhbXBsZXJT
dGF0ZS5tYXhBbmlzb3Ryb3B5ID0gMS4wZjsKKyAgICBtU2FtcGxlclN0YXRlLmxvZE9mZnNldCA9
IDA7CisgICAgbVVzYWdlID0gR0xfTk9ORTsKKyAgICAKKyAgICBtRGlydHlJbWFnZXMgPSB0cnVl
OworCisgICAgbUltbXV0YWJsZSA9IGZhbHNlOworfQorCitUZXh0dXJlOjp+VGV4dHVyZSgpCit7
Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzZnVsIGZpbHRlciBzdGF0ZSB1cGRhdGUg
KHZhbGlkIGVudW0gcGFyYW1ldGVyKQorYm9vbCBUZXh0dXJlOjpzZXRNaW5GaWx0ZXIoR0xlbnVt
IGZpbHRlcikKK3sKKyAgICBzd2l0Y2ggKGZpbHRlcikKKyAgICB7CisgICAgICBjYXNlIEdMX05F
QVJFU1Q6CisgICAgICBjYXNlIEdMX0xJTkVBUjoKKyAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBN
QVBfTkVBUkVTVDoKKyAgICAgIGNhc2UgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUOgorICAgICAg
Y2FzZSBHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVI6CisgICAgICBjYXNlIEdMX0xJTkVBUl9NSVBN
QVBfTElORUFSOgorICAgICAgICBtU2FtcGxlclN0YXRlLm1pbkZpbHRlciA9IGZpbHRlcjsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorfQorCisvLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzc2Z1bCBmaWx0ZXIgc3RhdGUg
dXBkYXRlICh2YWxpZCBlbnVtIHBhcmFtZXRlcikKK2Jvb2wgVGV4dHVyZTo6c2V0TWFnRmlsdGVy
KEdMZW51bSBmaWx0ZXIpCit7CisgICAgc3dpdGNoIChmaWx0ZXIpCisgICAgeworICAgICAgY2Fz
ZSBHTF9ORUFSRVNUOgorICAgICAgY2FzZSBHTF9MSU5FQVI6CisgICAgICAgIG1TYW1wbGVyU3Rh
dGUubWFnRmlsdGVyID0gZmlsdGVyOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBv
biBzdWNjZXNzZnVsIHdyYXAgc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVtIHBhcmFtZXRlcikKK2Jv
b2wgVGV4dHVyZTo6c2V0V3JhcFMoR0xlbnVtIHdyYXApCit7CisgICAgc3dpdGNoICh3cmFwKQor
ICAgIHsKKyAgICAgIGNhc2UgR0xfUkVQRUFUOgorICAgICAgY2FzZSBHTF9DTEFNUF9UT19FREdF
OgorICAgICAgY2FzZSBHTF9NSVJST1JFRF9SRVBFQVQ6CisgICAgICAgIG1TYW1wbGVyU3RhdGUu
d3JhcFMgPSB3cmFwOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNz
ZnVsIHdyYXAgc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVtIHBhcmFtZXRlcikKK2Jvb2wgVGV4dHVy
ZTo6c2V0V3JhcFQoR0xlbnVtIHdyYXApCit7CisgICAgc3dpdGNoICh3cmFwKQorICAgIHsKKyAg
ICAgIGNhc2UgR0xfUkVQRUFUOgorICAgICAgY2FzZSBHTF9DTEFNUF9UT19FREdFOgorICAgICAg
Y2FzZSBHTF9NSVJST1JFRF9SRVBFQVQ6CisgICAgICAgIG1TYW1wbGVyU3RhdGUud3JhcFQgPSB3
cmFwOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzZnVsIG1heCBh
bmlzb3Ryb3B5IHVwZGF0ZSAodmFsaWQgYW5pc290cm9weSB2YWx1ZSkKK2Jvb2wgVGV4dHVyZTo6
c2V0TWF4QW5pc290cm9weShmbG9hdCB0ZXh0dXJlTWF4QW5pc290cm9weSwgZmxvYXQgY29udGV4
dE1heEFuaXNvdHJvcHkpCit7CisgICAgdGV4dHVyZU1heEFuaXNvdHJvcHkgPSBzdGQ6Om1pbih0
ZXh0dXJlTWF4QW5pc290cm9weSwgY29udGV4dE1heEFuaXNvdHJvcHkpOworICAgIGlmICh0ZXh0
dXJlTWF4QW5pc290cm9weSA8IDEuMGYpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgbVNhbXBsZXJTdGF0ZS5tYXhBbmlzb3Ryb3B5ID0gdGV4dHVyZU1heEFuaXNv
dHJvcHk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nl
c3NmdWwgdXNhZ2Ugc3RhdGUgdXBkYXRlICh2YWxpZCBlbnVtIHBhcmFtZXRlcikKK2Jvb2wgVGV4
dHVyZTo6c2V0VXNhZ2UoR0xlbnVtIHVzYWdlKQoreworICAgIHN3aXRjaCAodXNhZ2UpCisgICAg
eworICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX0FOR0xFOgorICAgICAgICBtVXNhZ2UgPSB1c2FnZTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitHTGVu
dW0gVGV4dHVyZTo6Z2V0TWluRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBsZXJT
dGF0ZS5taW5GaWx0ZXI7Cit9CisKK0dMZW51bSBUZXh0dXJlOjpnZXRNYWdGaWx0ZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtU2FtcGxlclN0YXRlLm1hZ0ZpbHRlcjsKK30KKworR0xlbnVtIFRl
eHR1cmU6OmdldFdyYXBTKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBsZXJTdGF0ZS53cmFw
UzsKK30KKworR0xlbnVtIFRleHR1cmU6OmdldFdyYXBUKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bVNhbXBsZXJTdGF0ZS53cmFwVDsKK30KKworZmxvYXQgVGV4dHVyZTo6Z2V0TWF4QW5pc290cm9w
eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TYW1wbGVyU3RhdGUubWF4QW5pc290cm9weTsKK30K
KworaW50IFRleHR1cmU6OmdldExvZE9mZnNldCgpCit7CisgICAgcng6OlRleHR1cmVTdG9yYWdl
SW50ZXJmYWNlICp0ZXh0dXJlID0gZ2V0U3RvcmFnZShmYWxzZSk7CisgICAgcmV0dXJuIHRleHR1
cmUgPyB0ZXh0dXJlLT5nZXRMb2RPZmZzZXQoKSA6IDA7Cit9CisKK3ZvaWQgVGV4dHVyZTo6Z2V0
U2FtcGxlclN0YXRlKFNhbXBsZXJTdGF0ZSAqc2FtcGxlcikKK3sKKyAgICAqc2FtcGxlciA9IG1T
YW1wbGVyU3RhdGU7CisgICAgc2FtcGxlci0+bG9kT2Zmc2V0ID0gZ2V0TG9kT2Zmc2V0KCk7Cit9
CisKK0dMZW51bSBUZXh0dXJlOjpnZXRVc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Vc2Fn
ZTsKK30KKworYm9vbCBUZXh0dXJlOjppc01pcG1hcEZpbHRlcmVkKCkgY29uc3QKK3sKKyAgICBz
d2l0Y2ggKG1TYW1wbGVyU3RhdGUubWluRmlsdGVyKQorICAgIHsKKyAgICAgIGNhc2UgR0xfTkVB
UkVTVDoKKyAgICAgIGNhc2UgR0xfTElORUFSOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1Q6CisgICAgICBjYXNlIEdMX0xJTkVBUl9N
SVBNQVBfTkVBUkVTVDoKKyAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSOgorICAg
ICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUjoKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCit2b2lkIFRleHR1cmU6OnNldEltYWdlKEdMaW50IHVucGFja0FsaWdubWVudCwgY29u
c3Qgdm9pZCAqcGl4ZWxzLCByeDo6SW1hZ2UgKmltYWdlKQoreworICAgIGlmIChwaXhlbHMgIT0g
TlVMTCkKKyAgICB7CisgICAgICAgIGltYWdlLT5sb2FkRGF0YSgwLCAwLCBpbWFnZS0+Z2V0V2lk
dGgoKSwgaW1hZ2UtPmdldEhlaWdodCgpLCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscyk7CisgICAg
ICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CisgICAgfQorfQorCit2b2lkIFRleHR1cmU6OnNldENv
bXByZXNzZWRJbWFnZShHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzLCByeDo6
SW1hZ2UgKmltYWdlKQoreworICAgIGlmIChwaXhlbHMgIT0gTlVMTCkKKyAgICB7CisgICAgICAg
IGltYWdlLT5sb2FkQ29tcHJlc3NlZERhdGEoMCwgMCwgaW1hZ2UtPmdldFdpZHRoKCksIGltYWdl
LT5nZXRIZWlnaHQoKSwgcGl4ZWxzKTsKKyAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKKyAg
ICB9Cit9CisKK2Jvb2wgVGV4dHVyZTo6c3ViSW1hZ2UoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscywgcng6Oklt
YWdlICppbWFnZSkKK3sKKyAgICBpZiAocGl4ZWxzICE9IE5VTEwpCisgICAgeworICAgICAgICBp
bWFnZS0+bG9hZERhdGEoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgdW5wYWNrQWxp
Z25tZW50LCBwaXhlbHMpOworICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworICAgIH0KKwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFRleHR1cmU6OnN1YkltYWdlQ29tcHJlc3NlZChH
TGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscywg
cng6OkltYWdlICppbWFnZSkKK3sKKyAgICBpZiAocGl4ZWxzICE9IE5VTEwpCisgICAgeworICAg
ICAgICBpbWFnZS0+bG9hZENvbXByZXNzZWREYXRhKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIHBpeGVscyk7CisgICAgICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3J4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZSAqVGV4dHVy
ZTo6Z2V0TmF0aXZlVGV4dHVyZSgpCit7CisgICAgLy8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHRl
eHR1cmUgaXMgY3JlYXRlZAorCisgICAgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlICpzdG9y
YWdlID0gZ2V0U3RvcmFnZShmYWxzZSk7CisgICAgaWYgKHN0b3JhZ2UpCisgICAgeworICAgICAg
ICB1cGRhdGVUZXh0dXJlKCk7CisgICAgfQorCisgICAgcmV0dXJuIHN0b3JhZ2U7Cit9CisKK2Jv
b2wgVGV4dHVyZTo6aGFzRGlydHlJbWFnZXMoKSBjb25zdAoreworICAgIHJldHVybiBtRGlydHlJ
bWFnZXM7Cit9CisKK3ZvaWQgVGV4dHVyZTo6cmVzZXREaXJ0eSgpCit7CisgICAgbURpcnR5SW1h
Z2VzID0gZmFsc2U7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0dXJlOjpnZXRUZXh0dXJlU2VyaWFs
KCkKK3sKKyAgICByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UgKnRleHR1cmUgPSBnZXRTdG9y
YWdlKGZhbHNlKTsKKyAgICByZXR1cm4gdGV4dHVyZSA/IHRleHR1cmUtPmdldFRleHR1cmVTZXJp
YWwoKSA6IDA7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0dXJlOjpnZXRSZW5kZXJUYXJnZXRTZXJp
YWwoR0xlbnVtIHRhcmdldCkKK3sKKyAgICByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UgKnRl
eHR1cmUgPSBnZXRTdG9yYWdlKHRydWUpOworICAgIHJldHVybiB0ZXh0dXJlID8gdGV4dHVyZS0+
Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKHRhcmdldCkgOiAwOworfQorCitib29sIFRleHR1cmU6Omlz
SW1tdXRhYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUltbXV0YWJsZTsKK30KKworR0xpbnQg
VGV4dHVyZTo6Y3JlYXRpb25MZXZlbHMoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpIGNv
bnN0Cit7CisgICAgaWYgKChpc1BvdzIod2lkdGgpICYmIGlzUG93MihoZWlnaHQpKSB8fCBtUmVu
ZGVyZXItPmdldE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KCkpCisgICAgeworICAgICAgICByZXR1
cm4gMDsgICAvLyBNYXhpbXVtIG51bWJlciBvZiBsZXZlbHMKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgLy8gT3BlbkdMIEVTIDIuMCB3aXRob3V0IEdMX09FU190ZXh0dXJlX25wb3Qg
ZG9lcyBub3QgcGVybWl0IE5QT1QgbWlwbWFwcy4KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQor
fQorCitHTGludCBUZXh0dXJlOjpjcmVhdGlvbkxldmVscyhHTHNpemVpIHNpemUpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGNyZWF0aW9uTGV2ZWxzKHNpemUsIHNpemUpOworfQorCitUZXh0dXJlMkQ6
OlRleHR1cmUyRChyeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBHTHVpbnQgaWQpIDogVGV4dHVyZShy
ZW5kZXJlciwgaWQpCit7CisgICAgbVRleFN0b3JhZ2UgPSBOVUxMOworICAgIG1TdXJmYWNlID0g
TlVMTDsKKyAgICBtQ29sb3JidWZmZXJQcm94eSA9IE5VTEw7CisgICAgbVByb3h5UmVmcyA9IDA7
CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xF
VkVMUzsgKytpKQorICAgIHsKKyAgICAgICAgbUltYWdlQXJyYXlbaV0gPSByZW5kZXJlci0+Y3Jl
YXRlSW1hZ2UoKTsKKyAgICB9Cit9CisKK1RleHR1cmUyRDo6flRleHR1cmUyRCgpCit7CisgICAg
bUNvbG9yYnVmZmVyUHJveHkgPSBOVUxMOworCisgICAgZGVsZXRlIG1UZXhTdG9yYWdlOworICAg
IG1UZXhTdG9yYWdlID0gTlVMTDsKKyAgICAKKyAgICBpZiAobVN1cmZhY2UpCisgICAgeworICAg
ICAgICBtU3VyZmFjZS0+c2V0Qm91bmRUZXh0dXJlKE5VTEwpOworICAgICAgICBtU3VyZmFjZSA9
IE5VTEw7CisgICAgfQorCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBJTVBMRU1FTlRBVElPTl9N
QVhfVEVYVFVSRV9MRVZFTFM7ICsraSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtSW1hZ2VBcnJh
eVtpXTsKKyAgICB9Cit9CisKKy8vIFdlIG5lZWQgdG8gbWFpbnRhaW4gYSBjb3VudCBvZiByZWZl
cmVuY2VzIHRvIHJlbmRlcmJ1ZmZlcnMgYWN0aW5nIGFzIAorLy8gcHJveGllcyBmb3IgdGhpcyB0
ZXh0dXJlLCBzbyB0aGF0IHdlIGRvIG5vdCBhdHRlbXB0IHRvIHVzZSBhIHBvaW50ZXIgCisvLyB0
byBhIHJlbmRlcmJ1ZmZlciBwcm94eSB3aGljaCBoYXMgYmVlbiBkZWxldGVkLgordm9pZCBUZXh0
dXJlMkQ6OmFkZFByb3h5UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCit7CisgICAgbVBy
b3h5UmVmcysrOworfQorCit2b2lkIFRleHR1cmUyRDo6cmVsZWFzZVByb3h5KGNvbnN0IFJlbmRl
cmJ1ZmZlciAqcHJveHkpCit7CisgICAgaWYgKG1Qcm94eVJlZnMgPiAwKQorICAgICAgICBtUHJv
eHlSZWZzLS07CisKKyAgICBpZiAobVByb3h5UmVmcyA9PSAwKQorICAgICAgICBtQ29sb3JidWZm
ZXJQcm94eSA9IE5VTEw7Cit9CisKK0dMZW51bSBUZXh0dXJlMkQ6OmdldFRhcmdldCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIEdMX1RFWFRVUkVfMkQ7Cit9CisKK0dMc2l6ZWkgVGV4dHVyZTJEOjpn
ZXRXaWR0aChHTGludCBsZXZlbCkgY29uc3QKK3sKKyAgICBpZiAobGV2ZWwgPCBJTVBMRU1FTlRB
VElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCisgICAgICAgIHJldHVybiBtSW1hZ2VBcnJheVtsZXZl
bF0tPmdldFdpZHRoKCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKworR0xzaXpl
aSBUZXh0dXJlMkQ6OmdldEhlaWdodChHTGludCBsZXZlbCkgY29uc3QKK3sKKyAgICBpZiAobGV2
ZWwgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpCisgICAgICAgIHJldHVybiBt
SW1hZ2VBcnJheVtsZXZlbF0tPmdldEhlaWdodCgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJu
IDA7Cit9CisKK0dMZW51bSBUZXh0dXJlMkQ6OmdldEludGVybmFsRm9ybWF0KEdMaW50IGxldmVs
KSBjb25zdAoreworICAgIGlmIChsZXZlbCA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xF
VkVMUykKKyAgICAgICAgcmV0dXJuIG1JbWFnZUFycmF5W2xldmVsXS0+Z2V0SW50ZXJuYWxGb3Jt
YXQoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBHTF9OT05FOworfQorCitHTGVudW0gVGV4
dHVyZTJEOjpnZXRBY3R1YWxGb3JtYXQoR0xpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAgaWYgKGxl
dmVsIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQorICAgICAgICByZXR1cm4g
bUltYWdlQXJyYXlbbGV2ZWxdLT5nZXRBY3R1YWxGb3JtYXQoKTsKKyAgICBlbHNlCisgICAgICAg
IHJldHVybiBEM0RGTVRfVU5LTk9XTjsKK30KKwordm9pZCBUZXh0dXJlMkQ6OnJlZGVmaW5lSW1h
Z2UoR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCkKK3sKKyAgICByZWxlYXNlVGV4SW1hZ2UoKTsKKworICAgIC8vIElmIHRoZXJl
IGN1cnJlbnRseSBpcyBhIGNvcnJlc3BvbmRpbmcgc3RvcmFnZSB0ZXh0dXJlIGltYWdlLCBpdCBo
YXMgdGhlc2UgcGFyYW1ldGVycworICAgIGNvbnN0IGludCBzdG9yYWdlV2lkdGggPSBzdGQ6Om1h
eCgxLCBtSW1hZ2VBcnJheVswXS0+Z2V0V2lkdGgoKSA+PiBsZXZlbCk7CisgICAgY29uc3QgaW50
IHN0b3JhZ2VIZWlnaHQgPSBzdGQ6Om1heCgxLCBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCkg
Pj4gbGV2ZWwpOworICAgIGNvbnN0IGludCBzdG9yYWdlRm9ybWF0ID0gbUltYWdlQXJyYXlbMF0t
PmdldEludGVybmFsRm9ybWF0KCk7CisKKyAgICBtSW1hZ2VBcnJheVtsZXZlbF0tPnJlZGVmaW5l
KG1SZW5kZXJlciwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGZhbHNlKTsKKworICAg
IGlmIChtVGV4U3RvcmFnZSkKKyAgICB7CisgICAgICAgIGNvbnN0IGludCBzdG9yYWdlTGV2ZWxz
ID0gbVRleFN0b3JhZ2UtPmxldmVsQ291bnQoKTsKKyAgICAgICAgCisgICAgICAgIGlmICgobGV2
ZWwgPj0gc3RvcmFnZUxldmVscyAmJiBzdG9yYWdlTGV2ZWxzICE9IDApIHx8CisgICAgICAgICAg
ICB3aWR0aCAhPSBzdG9yYWdlV2lkdGggfHwKKyAgICAgICAgICAgIGhlaWdodCAhPSBzdG9yYWdl
SGVpZ2h0IHx8CisgICAgICAgICAgICBpbnRlcm5hbGZvcm1hdCAhPSBzdG9yYWdlRm9ybWF0KSAg
IC8vIERpc2NhcmQgbWlzbWF0Y2hlZCBzdG9yYWdlCisgICAgICAgIHsKKyAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBpKysp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbaV0tPm1hcmtEaXJ0
eSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkZWxldGUgbVRleFN0b3JhZ2U7Cisg
ICAgICAgICAgICBtVGV4U3RvcmFnZSA9IE5VTEw7CisgICAgICAgICAgICBtRGlydHlJbWFnZXMg
PSB0cnVlOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRleHR1cmUyRDo6c2V0SW1hZ2Uo
R0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMp
Cit7CisgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQgPSBDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1h
dChmb3JtYXQsIHR5cGUpOworICAgIHJlZGVmaW5lSW1hZ2UobGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIFRleHR1cmU6OnNldEltYWdlKHVucGFja0FsaWdubWVu
dCwgcGl4ZWxzLCBtSW1hZ2VBcnJheVtsZXZlbF0pOworfQorCit2b2lkIFRleHR1cmUyRDo6Ymlu
ZFRleEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKK3sKKyAgICByZWxlYXNlVGV4SW1hZ2Uo
KTsKKworICAgIEdMaW50IGludGVybmFsZm9ybWF0ID0gc3VyZmFjZS0+Z2V0Rm9ybWF0KCk7CisK
KyAgICBtSW1hZ2VBcnJheVswXS0+cmVkZWZpbmUobVJlbmRlcmVyLCBpbnRlcm5hbGZvcm1hdCwg
c3VyZmFjZS0+Z2V0V2lkdGgoKSwgc3VyZmFjZS0+Z2V0SGVpZ2h0KCksIHRydWUpOworCisgICAg
ZGVsZXRlIG1UZXhTdG9yYWdlOworICAgIG1UZXhTdG9yYWdlID0gbmV3IHJ4OjpUZXh0dXJlU3Rv
cmFnZUludGVyZmFjZTJEKG1SZW5kZXJlciwgc3VyZmFjZS0+Z2V0U3dhcENoYWluKCkpOworCisg
ICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKKyAgICBtU3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbVN1
cmZhY2UtPnNldEJvdW5kVGV4dHVyZSh0aGlzKTsKK30KKwordm9pZCBUZXh0dXJlMkQ6OnJlbGVh
c2VUZXhJbWFnZSgpCit7CisgICAgaWYgKG1TdXJmYWNlKQorICAgIHsKKyAgICAgICAgbVN1cmZh
Y2UtPnNldEJvdW5kVGV4dHVyZShOVUxMKTsKKyAgICAgICAgbVN1cmZhY2UgPSBOVUxMOworCisg
ICAgICAgIGlmIChtVGV4U3RvcmFnZSkKKyAgICAgICAgeworICAgICAgICAgICAgZGVsZXRlIG1U
ZXhTdG9yYWdlOworICAgICAgICAgICAgbVRleFN0b3JhZ2UgPSBOVUxMOworICAgICAgICB9CisK
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9M
RVZFTFM7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgbUltYWdlQXJyYXlbaV0tPnJlZGVm
aW5lKG1SZW5kZXJlciwgR0xfTk9ORSwgMCwgMCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgVGV4dHVyZTJEOjpzZXRDb21wcmVzc2VkSW1hZ2UoR0xpbnQgbGV2ZWwsIEdMZW51
bSBmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGltYWdlU2l6
ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIC8vIGNvbXByZXNzZWQgZm9ybWF0cyBkb24n
dCBoYXZlIHNlcGFyYXRlIHNpemVkIGludGVybmFsIGZvcm1hdHMtLSB3ZSBjYW4ganVzdCB1c2Ug
dGhlIGNvbXByZXNzZWQgZm9ybWF0IGRpcmVjdGx5CisgICAgcmVkZWZpbmVJbWFnZShsZXZlbCwg
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIFRleHR1cmU6OnNldENvbXByZXNzZWRJbWFn
ZShpbWFnZVNpemUsIHBpeGVscywgbUltYWdlQXJyYXlbbGV2ZWxdKTsKK30KKwordm9pZCBUZXh0
dXJlMkQ6OmNvbW1pdFJlY3QoR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZz
ZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIGlmIChsZXZlbCA8IGxl
dmVsQ291bnQoKSkKKyAgICB7CisgICAgICAgIHJ4OjpJbWFnZSAqaW1hZ2UgPSBtSW1hZ2VBcnJh
eVtsZXZlbF07CisgICAgICAgIGlmIChpbWFnZS0+dXBkYXRlU3VyZmFjZShtVGV4U3RvcmFnZSwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpKQorICAgICAgICB7CisgICAg
ICAgICAgICBpbWFnZS0+bWFya0NsZWFuKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
VGV4dHVyZTJEOjpzdWJJbWFnZShHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscykKK3sKKyAg
ICBpZiAoVGV4dHVyZTo6c3ViSW1hZ2UoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCB1bnBhY2tBbGlnbm1lbnQsIHBpeGVscywgbUltYWdlQXJyYXlbbGV2ZWxd
KSkKKyAgICB7CisgICAgICAgIGNvbW1pdFJlY3QobGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQpOworICAgIH0KK30KKwordm9pZCBUZXh0dXJlMkQ6OnN1YkltYWdlQ29tcHJl
c3NlZChHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBj
b25zdCB2b2lkICpwaXhlbHMpCit7CisgICAgaWYgKFRleHR1cmU6OnN1YkltYWdlQ29tcHJlc3Nl
ZCh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgcGl4
ZWxzLCBtSW1hZ2VBcnJheVtsZXZlbF0pKQorICAgIHsKKyAgICAgICAgY29tbWl0UmVjdChsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorfQorCit2b2lkIFRl
eHR1cmUyRDo6Y29weUltYWdlKEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTGludCB4LCBH
TGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgRnJhbWVidWZmZXIgKnNvdXJj
ZSkKK3sKKyAgICBHTGludCBpbnRlcm5hbGZvcm1hdCA9IENvbnZlcnRTaXplZEludGVybmFsRm9y
bWF0KGZvcm1hdCwgR0xfVU5TSUdORURfQllURSk7CisgICAgcmVkZWZpbmVJbWFnZShsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworCisgICAgaWYgKCFtSW1hZ2VBcnJheVts
ZXZlbF0tPmlzUmVuZGVyYWJsZUZvcm1hdCgpKQorICAgIHsKKyAgICAgICAgbUltYWdlQXJyYXlb
bGV2ZWxdLT5jb3B5KDAsIDAsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZSk7CisgICAgICAg
IG1EaXJ0eUltYWdlcyA9IHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlm
ICghbVRleFN0b3JhZ2UgfHwgIW1UZXhTdG9yYWdlLT5pc1JlbmRlclRhcmdldCgpKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb252ZXJ0VG9SZW5kZXJUYXJnZXQoKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgbUltYWdlQXJyYXlbbGV2ZWxdLT5tYXJrQ2xlYW4oKTsKKworICAgICAg
ICBpZiAod2lkdGggIT0gMCAmJiBoZWlnaHQgIT0gMCAmJiBsZXZlbCA8IGxldmVsQ291bnQoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlJlY3RhbmdsZSBzb3VyY2VSZWN0OworICAgICAg
ICAgICAgc291cmNlUmVjdC54ID0geDsKKyAgICAgICAgICAgIHNvdXJjZVJlY3Qud2lkdGggPSB3
aWR0aDsKKyAgICAgICAgICAgIHNvdXJjZVJlY3QueSA9IHk7CisgICAgICAgICAgICBzb3VyY2VS
ZWN0LmhlaWdodCA9IGhlaWdodDsKKworICAgICAgICAgICAgbVJlbmRlcmVyLT5jb3B5SW1hZ2Uo
c291cmNlLCBzb3VyY2VSZWN0LCBmb3JtYXQsIDAsIDAsIG1UZXhTdG9yYWdlLCBsZXZlbCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZTJEOjpjb3B5U3ViSW1hZ2UoR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50
IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZlciAq
c291cmNlKQoreworICAgIGlmICh4b2Zmc2V0ICsgd2lkdGggPiBtSW1hZ2VBcnJheVtsZXZlbF0t
PmdldFdpZHRoKCkgfHwgeW9mZnNldCArIGhlaWdodCA+IG1JbWFnZUFycmF5W2xldmVsXS0+Z2V0
SGVpZ2h0KCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFM
VUUpOworICAgIH0KKworICAgIGlmICghbUltYWdlQXJyYXlbbGV2ZWxdLT5pc1JlbmRlcmFibGVG
b3JtYXQoKSB8fCAoIW1UZXhTdG9yYWdlICYmICFpc1NhbXBsZXJDb21wbGV0ZSgpKSkKKyAgICB7
CisgICAgICAgIG1JbWFnZUFycmF5W2xldmVsXS0+Y29weSh4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2UpOworICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoIW1UZXhTdG9yYWdlIHx8ICFtVGV4
U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udmVy
dFRvUmVuZGVyVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVwZGF0ZVRl
eHR1cmUoKTsKKworICAgICAgICBpZiAobGV2ZWwgPCBsZXZlbENvdW50KCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGdsOjpSZWN0YW5nbGUgc291cmNlUmVjdDsKKyAgICAgICAgICAgIHNvdXJj
ZVJlY3QueCA9IHg7CisgICAgICAgICAgICBzb3VyY2VSZWN0LndpZHRoID0gd2lkdGg7CisgICAg
ICAgICAgICBzb3VyY2VSZWN0LnkgPSB5OworICAgICAgICAgICAgc291cmNlUmVjdC5oZWlnaHQg
PSBoZWlnaHQ7CisKKyAgICAgICAgICAgIG1SZW5kZXJlci0+Y29weUltYWdlKHNvdXJjZSwgc291
cmNlUmVjdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6RXh0cmFjdEZv
cm1hdChtSW1hZ2VBcnJheVswXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4b2Zmc2V0LCB5b2Zmc2V0LCBtVGV4U3RvcmFnZSwgbGV2ZWwp
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRleHR1cmUyRDo6c3RvcmFnZShHTHNpemVp
IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCkKK3sKKyAgICBkZWxldGUgbVRleFN0b3JhZ2U7CisgICAgbVRleFN0b3JhZ2UgPSBuZXcg
cng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQobVJlbmRlcmVyLCBsZXZlbHMsIGludGVybmFs
Zm9ybWF0LCBtVXNhZ2UsIGZhbHNlLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBtSW1tdXRhYmxlID0g
dHJ1ZTsKKworICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKysp
CisgICAgeworICAgICAgICBtSW1hZ2VBcnJheVtsZXZlbF0tPnJlZGVmaW5lKG1SZW5kZXJlciwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHRydWUpOworICAgICAgICB3aWR0aCA9IHN0
ZDo6bWF4KDEsIHdpZHRoID4+IDEpOworICAgICAgICBoZWlnaHQgPSBzdGQ6Om1heCgxLCBoZWln
aHQgPj4gMSk7CisgICAgfQorCisgICAgZm9yIChpbnQgbGV2ZWwgPSBsZXZlbHM7IGxldmVsIDwg
SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBsZXZlbCsrKQorICAgIHsKKyAgICAg
ICAgbUltYWdlQXJyYXlbbGV2ZWxdLT5yZWRlZmluZShtUmVuZGVyZXIsIEdMX05PTkUsIDAsIDAs
IHRydWUpOworICAgIH0KKworICAgIGlmIChtVGV4U3RvcmFnZS0+aXNNYW5hZ2VkKCkpCisgICAg
eworICAgICAgICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgpOworCisgICAgICAgIGZvciAoaW50
IGxldmVsID0gMDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1JbWFnZUFycmF5W2xldmVsXS0+c2V0TWFuYWdlZFN1cmZhY2UobVRleFN0b3JhZ2UsIGxl
dmVsKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVGVzdHMgZm9yIDJEIHRleHR1cmUgc2Ft
cGxpbmcgY29tcGxldGVuZXNzLiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAzLjguMiBwYWdl
IDg1LgorYm9vbCBUZXh0dXJlMkQ6OmlzU2FtcGxlckNvbXBsZXRlKCkgY29uc3QKK3sKKyAgICBH
THNpemVpIHdpZHRoID0gbUltYWdlQXJyYXlbMF0tPmdldFdpZHRoKCk7CisgICAgR0xzaXplaSBo
ZWlnaHQgPSBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCk7CisKKyAgICBpZiAod2lkdGggPD0g
MCB8fCBoZWlnaHQgPD0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBib29sIG1pcG1hcHBpbmcgPSBpc01pcG1hcEZpbHRlcmVkKCk7CisgICAgYm9vbCBmaWx0
ZXJpbmcsIHJlbmRlcmFibGU7CisKKyAgICBpZiAoKElzRmxvYXQzMkZvcm1hdChnZXRJbnRlcm5h
bEZvcm1hdCgwKSkgJiYgIW1SZW5kZXJlci0+Z2V0RmxvYXQzMlRleHR1cmVTdXBwb3J0KCZmaWx0
ZXJpbmcsICZyZW5kZXJhYmxlKSkgfHwKKyAgICAgICAgKElzRmxvYXQxNkZvcm1hdChnZXRJbnRl
cm5hbEZvcm1hdCgwKSkgJiYgIW1SZW5kZXJlci0+Z2V0RmxvYXQxNlRleHR1cmVTdXBwb3J0KCZm
aWx0ZXJpbmcsICZyZW5kZXJhYmxlKSkpCisgICAgeworICAgICAgICBpZiAobVNhbXBsZXJTdGF0
ZS5tYWdGaWx0ZXIgIT0gR0xfTkVBUkVTVCB8fAorICAgICAgICAgICAgKG1TYW1wbGVyU3RhdGUu
bWluRmlsdGVyICE9IEdMX05FQVJFU1QgJiYgbVNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIgIT0gR0xf
TkVBUkVTVF9NSVBNQVBfTkVBUkVTVCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgbnBvdFN1cHBvcnQgPSBtUmVuZGVy
ZXItPmdldE5vblBvd2VyMlRleHR1cmVTdXBwb3J0KCk7CisKKyAgICBpZiAoIW5wb3RTdXBwb3J0
KQorICAgIHsKKyAgICAgICAgaWYgKChtU2FtcGxlclN0YXRlLndyYXBTICE9IEdMX0NMQU1QX1RP
X0VER0UgJiYgIWlzUG93Mih3aWR0aCkpIHx8CisgICAgICAgICAgICAobVNhbXBsZXJTdGF0ZS53
cmFwVCAhPSBHTF9DTEFNUF9UT19FREdFICYmICFpc1BvdzIoaGVpZ2h0KSkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICht
aXBtYXBwaW5nKQorICAgIHsKKyAgICAgICAgaWYgKCFucG90U3VwcG9ydCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKCFpc1BvdzIod2lkdGgpIHx8ICFpc1BvdzIoaGVpZ2h0KSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIWlzTWlwbWFwQ29tcGxldGUoKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKKy8vIFRlc3RzIGZvciAyRCB0ZXh0dXJlIChtaXBtYXApIGNvbXBsZXRlbmVz
cy4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMy43LjEwIHBhZ2UgODEuCitib29sIFRleHR1
cmUyRDo6aXNNaXBtYXBDb21wbGV0ZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzSW1tdXRhYmxlKCkp
CisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBHTHNpemVpIHdpZHRo
ID0gbUltYWdlQXJyYXlbMF0tPmdldFdpZHRoKCk7CisgICAgR0xzaXplaSBoZWlnaHQgPSBtSW1h
Z2VBcnJheVswXS0+Z2V0SGVpZ2h0KCk7CisKKyAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQg
PD0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbnQgcSA9
IGxvZzIoc3RkOjptYXgod2lkdGgsIGhlaWdodCkpOworCisgICAgZm9yIChpbnQgbGV2ZWwgPSAx
OyBsZXZlbCA8PSBxOyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAgaWYgKG1JbWFnZUFycmF5W2xl
dmVsXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSAhPSBtSW1hZ2VBcnJheVswXS0+Z2V0SW50ZXJuYWxG
b3JtYXQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKG1JbWFnZUFycmF5W2xldmVsXS0+Z2V0V2lkdGgoKSAhPSBzdGQ6Om1h
eCgxLCB3aWR0aCA+PiBsZXZlbCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtSW1hZ2VBcnJheVtsZXZlbF0tPmdldEhlaWdo
dCgpICE9IHN0ZDo6bWF4KDEsIGhlaWdodCA+PiBsZXZlbCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIFRleHR1cmUyRDo6aXNDb21wcmVzc2VkKEdMaW50IGxldmVsKSBjb25zdAorewor
ICAgIHJldHVybiBJc0NvbXByZXNzZWQoZ2V0SW50ZXJuYWxGb3JtYXQobGV2ZWwpKTsKK30KKwor
Ym9vbCBUZXh0dXJlMkQ6OmlzRGVwdGgoR0xpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAgcmV0dXJu
IElzRGVwdGhUZXh0dXJlKGdldEludGVybmFsRm9ybWF0KGxldmVsKSk7Cit9CisKKy8vIENvbnN0
cnVjdHMgYSBuYXRpdmUgdGV4dHVyZSByZXNvdXJjZSBmcm9tIHRoZSB0ZXh0dXJlIGltYWdlcwor
dm9pZCBUZXh0dXJlMkQ6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIEdMc2l6ZWkgd2lkdGggPSBt
SW1hZ2VBcnJheVswXS0+Z2V0V2lkdGgoKTsKKyAgICBHTHNpemVpIGhlaWdodCA9IG1JbWFnZUFy
cmF5WzBdLT5nZXRIZWlnaHQoKTsKKworICAgIGlmICghKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAw
KSkKKyAgICAgICAgcmV0dXJuOyAvLyBkbyBub3QgYXR0ZW1wdCB0byBjcmVhdGUgbmF0aXZlIHRl
eHR1cmVzIGZvciBub25leGlzdGFudCBkYXRhCisKKyAgICBHTGludCBsZXZlbHMgPSBjcmVhdGlv
bkxldmVscyh3aWR0aCwgaGVpZ2h0KTsKKyAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSBtSW1h
Z2VBcnJheVswXS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKKworICAgIGRlbGV0ZSBtVGV4U3RvcmFn
ZTsKKyAgICBtVGV4U3RvcmFnZSA9IG5ldyByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCht
UmVuZGVyZXIsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIG1Vc2FnZSwgZmFsc2UsIHdpZHRoLCBo
ZWlnaHQpOworICAgIAorICAgIGlmIChtVGV4U3RvcmFnZS0+aXNNYW5hZ2VkKCkpCisgICAgewor
ICAgICAgICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgpOworCisgICAgICAgIGZvciAoaW50IGxl
dmVsID0gMDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1JbWFnZUFycmF5W2xldmVsXS0+c2V0TWFuYWdlZFN1cmZhY2UobVRleFN0b3JhZ2UsIGxldmVs
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7Cit9CisKK3Zv
aWQgVGV4dHVyZTJEOjp1cGRhdGVUZXh0dXJlKCkKK3sKKyAgICBib29sIG1pcG1hcHBpbmcgPSAo
aXNNaXBtYXBGaWx0ZXJlZCgpICYmIGlzTWlwbWFwQ29tcGxldGUoKSk7CisKKyAgICBpbnQgbGV2
ZWxzID0gKG1pcG1hcHBpbmcgPyBsZXZlbENvdW50KCkgOiAxKTsKKworICAgIGZvciAoaW50IGxl
dmVsID0gMDsgbGV2ZWwgPCBsZXZlbHM7IGxldmVsKyspCisgICAgeworICAgICAgICByeDo6SW1h
Z2UgKmltYWdlID0gbUltYWdlQXJyYXlbbGV2ZWxdOworCisgICAgICAgIGlmIChpbWFnZS0+aXNE
aXJ0eSgpKQorICAgICAgICB7CisgICAgICAgICAgICBjb21taXRSZWN0KGxldmVsLCAwLCAwLCBt
SW1hZ2VBcnJheVtsZXZlbF0tPmdldFdpZHRoKCksIG1JbWFnZUFycmF5W2xldmVsXS0+Z2V0SGVp
Z2h0KCkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRleHR1cmUyRDo6Y29udmVydFRv
UmVuZGVyVGFyZ2V0KCkKK3sKKyAgICByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqbmV3
VGV4U3RvcmFnZSA9IE5VTEw7CisKKyAgICBpZiAobUltYWdlQXJyYXlbMF0tPmdldFdpZHRoKCkg
IT0gMCAmJiBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCkgIT0gMCkKKyAgICB7CisgICAgICAg
IEdMc2l6ZWkgd2lkdGggPSBtSW1hZ2VBcnJheVswXS0+Z2V0V2lkdGgoKTsKKyAgICAgICAgR0xz
aXplaSBoZWlnaHQgPSBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCk7CisgICAgICAgIEdMaW50
IGxldmVscyA9IG1UZXhTdG9yYWdlICE9IE5VTEwgPyBtVGV4U3RvcmFnZS0+bGV2ZWxDb3VudCgp
IDogY3JlYXRpb25MZXZlbHMod2lkdGgsIGhlaWdodCk7CisgICAgICAgIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCA9IG1JbWFnZUFycmF5WzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpOworCisgICAgICAg
IG5ld1RleFN0b3JhZ2UgPSBuZXcgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQobVJlbmRl
cmVyLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FO
R0xFLCB0cnVlLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICBpZiAobVRleFN0b3JhZ2UgIT0g
TlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtUmVuZGVyZXItPmNvcHlUb1JlbmRl
clRhcmdldChuZXdUZXhTdG9yYWdlLCBtVGV4U3RvcmFnZSkpCisgICAgICAgICAgICB7ICAgCisg
ICAgICAgICAgICAgICAgZGVsZXRlIG5ld1RleFN0b3JhZ2U7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIGRlbGV0ZSBtVGV4U3RvcmFnZTsKKyAgICBtVGV4U3RvcmFnZSA9IG5l
d1RleFN0b3JhZ2U7CisKKyAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworfQorCit2b2lkIFRleHR1
cmUyRDo6Z2VuZXJhdGVNaXBtYXBzKCkKK3sKKyAgICBpZiAoIW1SZW5kZXJlci0+Z2V0Tm9uUG93
ZXIyVGV4dHVyZVN1cHBvcnQoKSkKKyAgICB7CisgICAgICAgIGlmICghaXNQb3cyKG1JbWFnZUFy
cmF5WzBdLT5nZXRXaWR0aCgpKSB8fCAhaXNQb3cyKG1JbWFnZUFycmF5WzBdLT5nZXRIZWlnaHQo
KSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUHVyZ2UgYXJyYXkgbGV2ZWxz
IDEgdGhyb3VnaCBxIGFuZCByZXNldCB0aGVtIHRvIHJlcHJlc2VudCB0aGUgZ2VuZXJhdGVkIG1p
cG1hcCBsZXZlbHMuCisgICAgdW5zaWduZWQgaW50IHEgPSBsb2cyKHN0ZDo6bWF4KG1JbWFnZUFy
cmF5WzBdLT5nZXRXaWR0aCgpLCBtSW1hZ2VBcnJheVswXS0+Z2V0SGVpZ2h0KCkpKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8PSBxOyBpKyspCisgICAgeworICAgICAgICByZWRl
ZmluZUltYWdlKGksIG1JbWFnZUFycmF5WzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpLAorICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWF4KG1JbWFnZUFycmF5WzBdLT5nZXRXaWR0aCgpID4+IGks
IDEpLAorICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KG1JbWFnZUFycmF5WzBdLT5nZXRI
ZWlnaHQoKSA+PiBpLCAxKSk7CisgICAgfQorCisgICAgaWYgKG1UZXhTdG9yYWdlICYmIG1UZXhT
dG9yYWdlLT5pc1JlbmRlclRhcmdldCgpKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDE7IGkgPD0gcTsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBtVGV4U3RvcmFn
ZS0+Z2VuZXJhdGVNaXBtYXAoaSk7CisKKyAgICAgICAgICAgIG1JbWFnZUFycmF5W2ldLT5tYXJr
Q2xlYW4oKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMTsgaSA8PSBxOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1SZW5kZXJlci0+Z2VuZXJhdGVNaXBtYXAobUltYWdlQXJyYXlbaV0sIG1JbWFnZUFycmF5W2kg
LSAxXSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1JlbmRlcmJ1ZmZlciAqVGV4dHVyZTJEOjpn
ZXRSZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdldCkKK3sKKyAgICBpZiAodGFyZ2V0ICE9IEdMX1RF
WFRVUkVfMkQpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAoUmVuZGVyYnVmZmVyICopTlVMTCk7CisgICAgfQorCisgICAgaWYgKG1Db2xvcmJ1
ZmZlclByb3h5ID09IE5VTEwpCisgICAgeworICAgICAgICBtQ29sb3JidWZmZXJQcm94eSA9IG5l
dyBSZW5kZXJidWZmZXIobVJlbmRlcmVyLCBpZCgpLCBuZXcgUmVuZGVyYnVmZmVyVGV4dHVyZTJE
KHRoaXMsIHRhcmdldCkpOworICAgIH0KKworICAgIHJldHVybiBtQ29sb3JidWZmZXJQcm94eTsK
K30KKworcng6OlJlbmRlclRhcmdldCAqVGV4dHVyZTJEOjpnZXRSZW5kZXJUYXJnZXQoR0xlbnVt
IHRhcmdldCkKK3sKKyAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpOworCisgICAg
Ly8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHRleHR1cmUgaXMgY3JlYXRlZAorICAgIGlmIChnZXRT
dG9yYWdlKHRydWUpID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9
CisKKyAgICB1cGRhdGVUZXh0dXJlKCk7CisgICAgCisgICAgLy8gZW5zdXJlIHRoaXMgaXMgTk9U
IGEgZGVwdGggdGV4dHVyZQorICAgIGlmIChpc0RlcHRoKDApKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIG1UZXhTdG9yYWdlLT5nZXRSZW5kZXJUYXJn
ZXQoKTsKK30KKworcng6OlJlbmRlclRhcmdldCAqVGV4dHVyZTJEOjpnZXREZXB0aFN0ZW5jaWwo
R0xlbnVtIHRhcmdldCkKK3sKKyAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpOwor
CisgICAgLy8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHRleHR1cmUgaXMgY3JlYXRlZAorICAgIGlm
IChnZXRTdG9yYWdlKHRydWUpID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsK
KyAgICB9CisKKyAgICB1cGRhdGVUZXh0dXJlKCk7CisKKyAgICAvLyBlbnN1cmUgdGhpcyBpcyBh
Y3R1YWxseSBhIGRlcHRoIHRleHR1cmUKKyAgICBpZiAoIWlzRGVwdGgoMCkpCisgICAgeworICAg
ICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIG1UZXhTdG9yYWdlLT5nZXRSZW5k
ZXJUYXJnZXQoKTsKK30KKworaW50IFRleHR1cmUyRDo6bGV2ZWxDb3VudCgpCit7CisgICAgcmV0
dXJuIG1UZXhTdG9yYWdlID8gbVRleFN0b3JhZ2UtPmxldmVsQ291bnQoKSA6IDA7Cit9CisKK3J4
OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZSAqVGV4dHVyZTJEOjpnZXRTdG9yYWdlKGJvb2wgcmVu
ZGVyVGFyZ2V0KQoreworICAgIGlmICghbVRleFN0b3JhZ2UgfHwgKHJlbmRlclRhcmdldCAmJiAh
bVRleFN0b3JhZ2UtPmlzUmVuZGVyVGFyZ2V0KCkpKQorICAgIHsKKyAgICAgICAgaWYgKHJlbmRl
clRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBjcmVhdGVU
ZXh0dXJlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbVRleFN0b3JhZ2U7Cit9
CisKK1RleHR1cmVDdWJlTWFwOjpUZXh0dXJlQ3ViZU1hcChyeDo6UmVuZGVyZXIgKnJlbmRlcmVy
LCBHTHVpbnQgaWQpIDogVGV4dHVyZShyZW5kZXJlciwgaWQpCit7CisgICAgbVRleFN0b3JhZ2Ug
PSBOVUxMOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgaSsrKQorICAgIHsKKyAgICAgICAg
bUZhY2VQcm94aWVzW2ldID0gTlVMTDsKKyAgICAgICAgbUZhY2VQcm94eVJlZnNbaV0gPSAwOwor
CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVf
TEVWRUxTOyArK2opCisgICAgICAgIHsKKyAgICAgICAgICAgIG1JbWFnZUFycmF5W2ldW2pdID0g
cmVuZGVyZXItPmNyZWF0ZUltYWdlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1RleHR1cmVD
dWJlTWFwOjp+VGV4dHVyZUN1YmVNYXAoKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsg
aSsrKQorICAgIHsKKyAgICAgICAgbUZhY2VQcm94aWVzW2ldID0gTlVMTDsKKworICAgICAgICBm
b3IgKGludCBqID0gMDsgaiA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgKytq
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGUgbUltYWdlQXJyYXlbaV1bal07CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBkZWxldGUgbVRleFN0b3JhZ2U7CisgICAgbVRleFN0b3JhZ2Ug
PSBOVUxMOworfQorCisvLyBXZSBuZWVkIHRvIG1haW50YWluIGEgY291bnQgb2YgcmVmZXJlbmNl
cyB0byByZW5kZXJidWZmZXJzIGFjdGluZyBhcyAKKy8vIHByb3hpZXMgZm9yIHRoaXMgdGV4dHVy
ZSwgc28gdGhhdCB0aGUgdGV4dHVyZSBpcyBub3QgZGVsZXRlZCB3aGlsZSAKKy8vIHByb3h5IHJl
ZmVyZW5jZXMgc3RpbGwgZXhpc3QuIElmIHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8gemVy
bywKKy8vIHdlIHNldCBvdXIgcHJveHkgcG9pbnRlciBOVUxMLCBzbyB0aGF0IGEgbmV3IGF0dGVt
cHQgYXQgcmVmZXJlbmNpbmcKKy8vIHdpbGwgY2F1c2UgcmVjcmVhdGlvbi4KK3ZvaWQgVGV4dHVy
ZUN1YmVNYXA6OmFkZFByb3h5UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCit7CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCA2OyBpKyspCisgICAgeworICAgICAgICBpZiAobUZhY2VQcm94
aWVzW2ldID09IHByb3h5KQorICAgICAgICAgICAgbUZhY2VQcm94eVJlZnNbaV0rKzsKKyAgICB9
Cit9CisKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OnJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZm
ZXIgKnByb3h5KQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgaSsrKQorICAgIHsKKyAg
ICAgICAgaWYgKG1GYWNlUHJveGllc1tpXSA9PSBwcm94eSkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKG1GYWNlUHJveHlSZWZzW2ldID4gMCkKKyAgICAgICAgICAgICAgICBtRmFjZVByb3h5
UmVmc1tpXS0tOworCisgICAgICAgICAgICBpZiAobUZhY2VQcm94eVJlZnNbaV0gPT0gMCkKKyAg
ICAgICAgICAgICAgICBtRmFjZVByb3hpZXNbaV0gPSBOVUxMOworICAgICAgICB9CisgICAgfQor
fQorCitHTGVudW0gVGV4dHVyZUN1YmVNYXA6OmdldFRhcmdldCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIEdMX1RFWFRVUkVfQ1VCRV9NQVA7Cit9CisKK0dMc2l6ZWkgVGV4dHVyZUN1YmVNYXA6Omdl
dFdpZHRoKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdAoreworICAgIGlmIChsZXZl
bCA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykKKyAgICAgICAgcmV0dXJuIG1J
bWFnZUFycmF5W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZlbF0tPmdldFdpZHRoKCk7CisgICAgZWxz
ZQorICAgICAgICByZXR1cm4gMDsKK30KKworR0xzaXplaSBUZXh0dXJlQ3ViZU1hcDo6Z2V0SGVp
Z2h0KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdAoreworICAgIGlmIChsZXZlbCA8
IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykKKyAgICAgICAgcmV0dXJuIG1JbWFn
ZUFycmF5W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZlbF0tPmdldEhlaWdodCgpOworICAgIGVsc2UK
KyAgICAgICAgcmV0dXJuIDA7Cit9CisKK0dMZW51bSBUZXh0dXJlQ3ViZU1hcDo6Z2V0SW50ZXJu
YWxGb3JtYXQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAgaWYgKGxl
dmVsIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQorICAgICAgICByZXR1cm4g
bUltYWdlQXJyYXlbZmFjZUluZGV4KHRhcmdldCldW2xldmVsXS0+Z2V0SW50ZXJuYWxGb3JtYXQo
KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBHTF9OT05FOworfQorCitHTGVudW0gVGV4dHVy
ZUN1YmVNYXA6OmdldEFjdHVhbEZvcm1hdChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkgY29u
c3QKK3sKKyAgICBpZiAobGV2ZWwgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMp
CisgICAgICAgIHJldHVybiBtSW1hZ2VBcnJheVtmYWNlSW5kZXgodGFyZ2V0KV1bbGV2ZWxdLT5n
ZXRBY3R1YWxGb3JtYXQoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBEM0RGTVRfVU5LTk9X
TjsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VQb3NYKEdMaW50IGxldmVsLCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs
IEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIHNldElt
YWdlKDAsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVu
dCwgcGl4ZWxzKTsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWdYKEdMaW50
IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQorewor
ICAgIHNldEltYWdlKDEsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFj
a0FsaWdubWVudCwgcGl4ZWxzKTsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VQ
b3NZKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZv
cm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4
ZWxzKQoreworICAgIHNldEltYWdlKDIsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzKTsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6
c2V0SW1hZ2VOZWdZKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwg
R0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qg
dm9pZCAqcGl4ZWxzKQoreworICAgIHNldEltYWdlKDMsIGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzKTsKK30KKwordm9pZCBUZXh0dXJl
Q3ViZU1hcDo6c2V0SW1hZ2VQb3NaKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVu
dCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIHNldEltYWdlKDQsIGxldmVsLCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzKTsKK30KKwordm9p
ZCBUZXh0dXJlQ3ViZU1hcDo6c2V0SW1hZ2VOZWdaKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFj
a0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIHNldEltYWdlKDUsIGxldmVs
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHVucGFja0FsaWdubWVudCwgcGl4ZWxzKTsK
K30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSBmYWNl
LCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpCit7CisgICAgLy8gY29t
cHJlc3NlZCBmb3JtYXRzIGRvbid0IGhhdmUgc2VwYXJhdGUgc2l6ZWQgaW50ZXJuYWwgZm9ybWF0
cy0tIHdlIGNhbiBqdXN0IHVzZSB0aGUgY29tcHJlc3NlZCBmb3JtYXQgZGlyZWN0bHkKKyAgICBy
ZWRlZmluZUltYWdlKGZhY2VJbmRleChmYWNlKSwgbGV2ZWwsIGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCk7CisKKyAgICBUZXh0dXJlOjpzZXRDb21wcmVzc2VkSW1hZ2UoaW1hZ2VTaXplLCBwaXhlbHMs
IG1JbWFnZUFycmF5W2ZhY2VJbmRleChmYWNlKV1bbGV2ZWxdKTsKK30KKwordm9pZCBUZXh0dXJl
Q3ViZU1hcDo6Y29tbWl0UmVjdChpbnQgZmFjZSwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIGlm
IChsZXZlbCA8IGxldmVsQ291bnQoKSkKKyAgICB7CisgICAgICAgIHJ4OjpJbWFnZSAqaW1hZ2Ug
PSBtSW1hZ2VBcnJheVtmYWNlXVtsZXZlbF07CisgICAgICAgIGlmIChpbWFnZS0+dXBkYXRlU3Vy
ZmFjZShtVGV4U3RvcmFnZSwgZmFjZSwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQpKQorICAgICAgICAgICAgaW1hZ2UtPm1hcmtDbGVhbigpOworICAgIH0KK30KKwordm9p
ZCBUZXh0dXJlQ3ViZU1hcDo6c3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25z
dCB2b2lkICpwaXhlbHMpCit7CisgICAgaWYgKFRleHR1cmU6OnN1YkltYWdlKHhvZmZzZXQsIHlv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgdW5wYWNrQWxpZ25tZW50LCBwaXhl
bHMsIG1JbWFnZUFycmF5W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZlbF0pKQorICAgIHsKKyAgICAg
ICAgY29tbWl0UmVjdChmYWNlSW5kZXgodGFyZ2V0KSwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQpOworICAgIH0KK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c3ViSW1h
Z2VDb21wcmVzc2VkKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1h
dCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscykKK3sKKyAgICBpZiAoVGV4
dHVyZTo6c3ViSW1hZ2VDb21wcmVzc2VkKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgaW1hZ2VTaXplLCBwaXhlbHMsIG1JbWFnZUFycmF5W2ZhY2VJbmRleCh0YXJnZXQp
XVtsZXZlbF0pKQorICAgIHsKKyAgICAgICAgY29tbWl0UmVjdChmYWNlSW5kZXgodGFyZ2V0KSwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KK30KKworLy8g
VGVzdHMgZm9yIGN1YmUgbWFwIHNhbXBsaW5nIGNvbXBsZXRlbmVzcy4gW09wZW5HTCBFUyAyLjAu
MjRdIHNlY3Rpb24gMy44LjIgcGFnZSA4Ni4KK2Jvb2wgVGV4dHVyZUN1YmVNYXA6OmlzU2FtcGxl
ckNvbXBsZXRlKCkgY29uc3QKK3sKKyAgICBpbnQgc2l6ZSA9IG1JbWFnZUFycmF5WzBdWzBdLT5n
ZXRXaWR0aCgpOworCisgICAgYm9vbCBtaXBtYXBwaW5nID0gaXNNaXBtYXBGaWx0ZXJlZCgpOwor
ICAgIGJvb2wgZmlsdGVyaW5nLCByZW5kZXJhYmxlOworCisgICAgaWYgKChnbDo6RXh0cmFjdFR5
cGUoZ2V0SW50ZXJuYWxGb3JtYXQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwKSkg
PT0gR0xfRkxPQVQgJiYgIW1SZW5kZXJlci0+Z2V0RmxvYXQzMlRleHR1cmVTdXBwb3J0KCZmaWx0
ZXJpbmcsICZyZW5kZXJhYmxlKSkgfHwKKyAgICAgICAgKGdsOjpFeHRyYWN0VHlwZShnZXRJbnRl
cm5hbEZvcm1hdChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDApID09IEdMX0hBTEZf
RkxPQVRfT0VTKSAmJiAhbVJlbmRlcmVyLT5nZXRGbG9hdDE2VGV4dHVyZVN1cHBvcnQoJmZpbHRl
cmluZywgJnJlbmRlcmFibGUpKSkKKyAgICB7CisgICAgICAgIGlmIChtU2FtcGxlclN0YXRlLm1h
Z0ZpbHRlciAhPSBHTF9ORUFSRVNUIHx8CisgICAgICAgICAgICAobVNhbXBsZXJTdGF0ZS5taW5G
aWx0ZXIgIT0gR0xfTkVBUkVTVCAmJiBtU2FtcGxlclN0YXRlLm1pbkZpbHRlciAhPSBHTF9ORUFS
RVNUX01JUE1BUF9ORUFSRVNUKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFpc1BvdzIoc2l6ZSkgJiYgIW1SZW5kZXJl
ci0+Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQoKSkKKyAgICB7CisgICAgICAgIGlmIChtU2Ft
cGxlclN0YXRlLndyYXBTICE9IEdMX0NMQU1QX1RPX0VER0UgfHwgbVNhbXBsZXJTdGF0ZS53cmFw
VCAhPSBHTF9DTEFNUF9UT19FREdFIHx8IG1pcG1hcHBpbmcpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbWlwbWFwcGlu
ZykKKyAgICB7CisgICAgICAgIGlmICghaXNDdWJlQ29tcGxldGUoKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIGlmICghaXNNaXBtYXBDdWJlQ29tcGxldGUoKSkgICAvLyBBbHNvIHRlc3RzIGZv
ciBpc0N1YmVDb21wbGV0ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisvLyBUZXN0cyBmb3Ig
Y3ViZSB0ZXh0dXJlIGNvbXBsZXRlbmVzcy4gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMy43
LjEwIHBhZ2UgODEuCitib29sIFRleHR1cmVDdWJlTWFwOjppc0N1YmVDb21wbGV0ZSgpIGNvbnN0
Cit7CisgICAgaWYgKG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgpIDw9IDAgfHwgbUltYWdl
QXJyYXlbMF1bMF0tPmdldEhlaWdodCgpICE9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZvciAodW5zaWdu
ZWQgaW50IGZhY2UgPSAxOyBmYWNlIDwgNjsgZmFjZSsrKQorICAgIHsKKyAgICAgICAgaWYgKG1J
bWFnZUFycmF5W2ZhY2VdWzBdLT5nZXRXaWR0aCgpICE9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRX
aWR0aCgpIHx8CisgICAgICAgICAgICBtSW1hZ2VBcnJheVtmYWNlXVswXS0+Z2V0V2lkdGgoKSAh
PSBtSW1hZ2VBcnJheVswXVswXS0+Z2V0SGVpZ2h0KCkgfHwKKyAgICAgICAgICAgIG1JbWFnZUFy
cmF5W2ZhY2VdWzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpICE9IG1JbWFnZUFycmF5WzBdWzBdLT5n
ZXRJbnRlcm5hbEZvcm1hdCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBUZXh0dXJl
Q3ViZU1hcDo6aXNNaXBtYXBDdWJlQ29tcGxldGUoKSBjb25zdAoreworICAgIGlmIChpc0ltbXV0
YWJsZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKCFp
c0N1YmVDb21wbGV0ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIEdMc2l6ZWkgc2l6ZSA9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgpOworCisgICAg
aW50IHEgPSBsb2cyKHNpemUpOworCisgICAgZm9yIChpbnQgZmFjZSA9IDA7IGZhY2UgPCA2OyBm
YWNlKyspCisgICAgeworICAgICAgICBmb3IgKGludCBsZXZlbCA9IDE7IGxldmVsIDw9IHE7IGxl
dmVsKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtSW1hZ2VBcnJheVtmYWNlXVtsZXZl
bF0tPmdldEludGVybmFsRm9ybWF0KCkgIT0gbUltYWdlQXJyYXlbMF1bMF0tPmdldEludGVybmFs
Rm9ybWF0KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxd
LT5nZXRXaWR0aCgpICE9IHN0ZDo6bWF4KDEsIHNpemUgPj4gbGV2ZWwpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFRleHR1cmVDdWJlTWFwOjpp
c0NvbXByZXNzZWQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpIGNvbnN0Cit7CisgICAgcmV0
dXJuIElzQ29tcHJlc3NlZChnZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSk7Cit9CisK
Ky8vIENvbnN0cnVjdHMgYSBuYXRpdmUgdGV4dHVyZSByZXNvdXJjZSBmcm9tIHRoZSB0ZXh0dXJl
IGltYWdlcywgb3IgcmV0dXJucyBhbiBleGlzdGluZyBvbmUKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6
OmNyZWF0ZVRleHR1cmUoKQoreworICAgIEdMc2l6ZWkgc2l6ZSA9IG1JbWFnZUFycmF5WzBdWzBd
LT5nZXRXaWR0aCgpOworCisgICAgaWYgKCEoc2l6ZSA+IDApKQorICAgICAgICByZXR1cm47IC8v
IGRvIG5vdCBhdHRlbXB0IHRvIGNyZWF0ZSBuYXRpdmUgdGV4dHVyZXMgZm9yIG5vbmV4aXN0YW50
IGRhdGEKKworICAgIEdMaW50IGxldmVscyA9IGNyZWF0aW9uTGV2ZWxzKHNpemUpOworICAgIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCA9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRJbnRlcm5hbEZvcm1h
dCgpOworCisgICAgZGVsZXRlIG1UZXhTdG9yYWdlOworICAgIG1UZXhTdG9yYWdlID0gbmV3IHJ4
OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUobVJlbmRlcmVyLCBsZXZlbHMsIGludGVybmFs
Zm9ybWF0LCBtVXNhZ2UsIGZhbHNlLCBzaXplKTsKKworICAgIGlmIChtVGV4U3RvcmFnZS0+aXNN
YW5hZ2VkKCkpCisgICAgeworICAgICAgICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgpOworCisg
ICAgICAgIGZvciAoaW50IGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZhY2VdW2xldmVsXS0+
c2V0TWFuYWdlZFN1cmZhY2UobVRleFN0b3JhZ2UsIGZhY2UsIGxldmVsKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7Cit9CisKK3Zv
aWQgVGV4dHVyZUN1YmVNYXA6OnVwZGF0ZVRleHR1cmUoKQoreworICAgIGJvb2wgbWlwbWFwcGlu
ZyA9IGlzTWlwbWFwRmlsdGVyZWQoKSAmJiBpc01pcG1hcEN1YmVDb21wbGV0ZSgpOworCisgICAg
Zm9yIChpbnQgZmFjZSA9IDA7IGZhY2UgPCA2OyBmYWNlKyspCisgICAgeworICAgICAgICBpbnQg
bGV2ZWxzID0gKG1pcG1hcHBpbmcgPyBsZXZlbENvdW50KCkgOiAxKTsKKworICAgICAgICBmb3Ig
KGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQorICAgICAgICB7CisgICAg
ICAgICAgICByeDo6SW1hZ2UgKmltYWdlID0gbUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdOworCisg
ICAgICAgICAgICBpZiAoaW1hZ2UtPmlzRGlydHkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb21taXRSZWN0KGZhY2UsIGxldmVsLCAwLCAwLCBpbWFnZS0+Z2V0V2lkdGgoKSwg
aW1hZ2UtPmdldEhlaWdodCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6Y29udmVydFRvUmVuZGVyVGFyZ2V0KCkKK3sKKyAgICBy
eDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpuZXdUZXhTdG9yYWdlID0gTlVMTDsKKwor
ICAgIGlmIChtSW1hZ2VBcnJheVswXVswXS0+Z2V0V2lkdGgoKSAhPSAwKQorICAgIHsKKyAgICAg
ICAgR0xzaXplaSBzaXplID0gbUltYWdlQXJyYXlbMF1bMF0tPmdldFdpZHRoKCk7CisgICAgICAg
IEdMaW50IGxldmVscyA9IG1UZXhTdG9yYWdlICE9IE5VTEwgPyBtVGV4U3RvcmFnZS0+bGV2ZWxD
b3VudCgpIDogY3JlYXRpb25MZXZlbHMoc2l6ZSk7CisgICAgICAgIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCA9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgpOworCisgICAgICAg
IG5ld1RleFN0b3JhZ2UgPSBuZXcgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZShtUmVu
ZGVyZXIsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
QU5HTEUsIHRydWUsIHNpemUpOworCisgICAgICAgIGlmIChtVGV4U3RvcmFnZSAhPSBOVUxMKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1SZW5kZXJlci0+Y29weVRvUmVuZGVyVGFyZ2V0
KG5ld1RleFN0b3JhZ2UsIG1UZXhTdG9yYWdlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBkZWxldGUgbmV3VGV4U3RvcmFnZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgZGVsZXRlIG1UZXhTdG9yYWdlOworICAgIG1UZXhTdG9yYWdlID0gbmV3VGV4U3RvcmFn
ZTsKKworICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7Cit9CisKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6
OnNldEltYWdlKGludCBmYWNlSW5kZXgsIEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdu
bWVudCwgY29uc3Qgdm9pZCAqcGl4ZWxzKQoreworICAgIEdMaW50IGludGVybmFsZm9ybWF0ID0g
Q29udmVydFNpemVkSW50ZXJuYWxGb3JtYXQoZm9ybWF0LCB0eXBlKTsKKyAgICByZWRlZmluZUlt
YWdlKGZhY2VJbmRleCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKwor
ICAgIFRleHR1cmU6OnNldEltYWdlKHVucGFja0FsaWdubWVudCwgcGl4ZWxzLCBtSW1hZ2VBcnJh
eVtmYWNlSW5kZXhdW2xldmVsXSk7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0dXJlQ3ViZU1hcDo6
ZmFjZUluZGV4KEdMZW51bSBmYWNlKQoreworICAgIE1FVEFfQVNTRVJUKEdMX1RFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWCAtIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCA9PSAxKTsK
KyAgICBNRVRBX0FTU0VSVChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1kgLSBHTF9URVhU
VVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggPT0gMik7CisgICAgTUVUQV9BU1NFUlQoR0xfVEVYVFVS
RV9DVUJFX01BUF9ORUdBVElWRV9ZIC0gR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YID09
IDMpOworICAgIE1FVEFfQVNTRVJUKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiAtIEdM
X1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCA9PSA0KTsKKyAgICBNRVRBX0FTU0VSVChHTF9U
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ogLSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZF
X1ggPT0gNSk7CisKKyAgICByZXR1cm4gZmFjZSAtIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWDsKK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6cmVkZWZpbmVJbWFnZShpbnQgZmFjZSwg
R0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCkKK3sKKyAgICAvLyBJZiB0aGVyZSBjdXJyZW50bHkgaXMgYSBjb3JyZXNwb25kaW5n
IHN0b3JhZ2UgdGV4dHVyZSBpbWFnZSwgaXQgaGFzIHRoZXNlIHBhcmFtZXRlcnMKKyAgICBjb25z
dCBpbnQgc3RvcmFnZVdpZHRoID0gc3RkOjptYXgoMSwgbUltYWdlQXJyYXlbMF1bMF0tPmdldFdp
ZHRoKCkgPj4gbGV2ZWwpOworICAgIGNvbnN0IGludCBzdG9yYWdlSGVpZ2h0ID0gc3RkOjptYXgo
MSwgbUltYWdlQXJyYXlbMF1bMF0tPmdldEhlaWdodCgpID4+IGxldmVsKTsKKyAgICBjb25zdCBp
bnQgc3RvcmFnZUZvcm1hdCA9IG1JbWFnZUFycmF5WzBdWzBdLT5nZXRJbnRlcm5hbEZvcm1hdCgp
OworCisgICAgbUltYWdlQXJyYXlbZmFjZV1bbGV2ZWxdLT5yZWRlZmluZShtUmVuZGVyZXIsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBmYWxzZSk7CisKKyAgICBpZiAobVRleFN0b3Jh
Z2UpCisgICAgeworICAgICAgICBjb25zdCBpbnQgc3RvcmFnZUxldmVscyA9IG1UZXhTdG9yYWdl
LT5sZXZlbENvdW50KCk7CisgICAgICAgIAorICAgICAgICBpZiAoKGxldmVsID49IHN0b3JhZ2VM
ZXZlbHMgJiYgc3RvcmFnZUxldmVscyAhPSAwKSB8fAorICAgICAgICAgICAgd2lkdGggIT0gc3Rv
cmFnZVdpZHRoIHx8CisgICAgICAgICAgICBoZWlnaHQgIT0gc3RvcmFnZUhlaWdodCB8fAorICAg
ICAgICAgICAgaW50ZXJuYWxmb3JtYXQgIT0gc3RvcmFnZUZvcm1hdCkgICAvLyBEaXNjYXJkIG1p
c21hdGNoZWQgc3RvcmFnZQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGZvciAoaW50IGYgPSAwOyBmIDwgNjsgZisrKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbZl1baV0tPm1hcmtEaXJ0
eSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVs
ZXRlIG1UZXhTdG9yYWdlOworICAgICAgICAgICAgbVRleFN0b3JhZ2UgPSBOVUxMOworCisgICAg
ICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IFRleHR1cmVDdWJlTWFwOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM
ZW51bSBmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKQoreworICAgIHVuc2lnbmVkIGludCBmYWNlaW5kZXgg
PSBmYWNlSW5kZXgodGFyZ2V0KTsKKyAgICBHTGludCBpbnRlcm5hbGZvcm1hdCA9IGdsOjpDb252
ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUpOworICAgIHJl
ZGVmaW5lSW1hZ2UoZmFjZWluZGV4LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpOworCisgICAgaWYgKCFtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS0+aXNSZW5kZXJh
YmxlRm9ybWF0KCkpCisgICAgeworICAgICAgICBtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVs
XS0+Y29weSgwLCAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2UpOworICAgICAgICBtRGly
dHlJbWFnZXMgPSB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoIW1U
ZXhTdG9yYWdlIHx8ICFtVGV4U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQoKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgY29udmVydFRvUmVuZGVyVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIG1JbWFnZUFycmF5W2ZhY2VpbmRleF1bbGV2ZWxdLT5tYXJrQ2xlYW4oKTsKKwor
ICAgICAgICBBU1NFUlQod2lkdGggPT0gaGVpZ2h0KTsKKworICAgICAgICBpZiAod2lkdGggPiAw
ICYmIGxldmVsIDwgbGV2ZWxDb3VudCgpKQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6UmVj
dGFuZ2xlIHNvdXJjZVJlY3Q7CisgICAgICAgICAgICBzb3VyY2VSZWN0LnggPSB4OworICAgICAg
ICAgICAgc291cmNlUmVjdC53aWR0aCA9IHdpZHRoOworICAgICAgICAgICAgc291cmNlUmVjdC55
ID0geTsKKyAgICAgICAgICAgIHNvdXJjZVJlY3QuaGVpZ2h0ID0gaGVpZ2h0OworCisgICAgICAg
ICAgICBtUmVuZGVyZXItPmNvcHlJbWFnZShzb3VyY2UsIHNvdXJjZVJlY3QsIGZvcm1hdCwgMCwg
MCwgbVRleFN0b3JhZ2UsIHRhcmdldCwgbGV2ZWwpOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIFRleHR1cmVDdWJlTWFwOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFtZWJ1ZmZlciAqc291cmNlKQoreworICAgIEdM
c2l6ZWkgc2l6ZSA9IG1JbWFnZUFycmF5W2ZhY2VJbmRleCh0YXJnZXQpXVtsZXZlbF0tPmdldFdp
ZHRoKCk7CisKKyAgICBpZiAoeG9mZnNldCArIHdpZHRoID4gc2l6ZSB8fCB5b2Zmc2V0ICsgaGVp
Z2h0ID4gc2l6ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSk7CisgICAgfQorCisgICAgdW5zaWduZWQgaW50IGZhY2VpbmRleCA9IGZhY2VJbmRleCh0
YXJnZXQpOworCisgICAgaWYgKCFtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS0+aXNSZW5k
ZXJhYmxlRm9ybWF0KCkgfHwgKCFtVGV4U3RvcmFnZSAmJiAhaXNTYW1wbGVyQ29tcGxldGUoKSkp
CisgICAgeworICAgICAgICBtSW1hZ2VBcnJheVtmYWNlaW5kZXhdW2xldmVsXS0+Y29weSgwLCAw
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2UpOworICAgICAgICBtRGlydHlJbWFnZXMgPSB0
cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoIW1UZXhTdG9yYWdlIHx8
ICFtVGV4U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
Y29udmVydFRvUmVuZGVyVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVw
ZGF0ZVRleHR1cmUoKTsKKworICAgICAgICBpZiAobGV2ZWwgPCBsZXZlbENvdW50KCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdsOjpSZWN0YW5nbGUgc291cmNlUmVjdDsKKyAgICAgICAgICAg
IHNvdXJjZVJlY3QueCA9IHg7CisgICAgICAgICAgICBzb3VyY2VSZWN0LndpZHRoID0gd2lkdGg7
CisgICAgICAgICAgICBzb3VyY2VSZWN0LnkgPSB5OworICAgICAgICAgICAgc291cmNlUmVjdC5o
ZWlnaHQgPSBoZWlnaHQ7CisKKyAgICAgICAgICAgIG1SZW5kZXJlci0+Y29weUltYWdlKHNvdXJj
ZSwgc291cmNlUmVjdCwgZ2w6OkV4dHJhY3RGb3JtYXQobUltYWdlQXJyYXlbMF1bMF0tPmdldElu
dGVybmFsRm9ybWF0KCkpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvZmZz
ZXQsIHlvZmZzZXQsIG1UZXhTdG9yYWdlLCB0YXJnZXQsIGxldmVsKTsKKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6c3RvcmFnZShHTHNpemVpIGxldmVscywgR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHNpemUpCit7CisgICAgZGVsZXRlIG1UZXhTdG9y
YWdlOworICAgIG1UZXhTdG9yYWdlID0gbmV3IHJ4OjpUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1
YmUobVJlbmRlcmVyLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCBtVXNhZ2UsIGZhbHNlLCBzaXpl
KTsKKyAgICBtSW1tdXRhYmxlID0gdHJ1ZTsKKworICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2
ZWwgPCBsZXZlbHM7IGxldmVsKyspCisgICAgeworICAgICAgICBmb3IgKGludCBmYWNlID0gMDsg
ZmFjZSA8IDY7IGZhY2UrKykKKyAgICAgICAgeworICAgICAgICAgICAgbUltYWdlQXJyYXlbZmFj
ZV1bbGV2ZWxdLT5yZWRlZmluZShtUmVuZGVyZXIsIGludGVybmFsZm9ybWF0LCBzaXplLCBzaXpl
LCB0cnVlKTsKKyAgICAgICAgICAgIHNpemUgPSBzdGQ6Om1heCgxLCBzaXplID4+IDEpOworICAg
ICAgICB9CisgICAgfQorCisgICAgZm9yIChpbnQgbGV2ZWwgPSBsZXZlbHM7IGxldmVsIDwgSU1Q
TEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAg
Zm9yIChpbnQgZmFjZSA9IDA7IGZhY2UgPCA2OyBmYWNlKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1JbWFnZUFycmF5W2ZhY2VdW2xldmVsXS0+cmVkZWZpbmUobVJlbmRlcmVyLCBHTF9OT05F
LCAwLCAwLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtVGV4U3RvcmFnZS0+
aXNNYW5hZ2VkKCkpCisgICAgeworICAgICAgICBpbnQgbGV2ZWxzID0gbGV2ZWxDb3VudCgpOwor
CisgICAgICAgIGZvciAoaW50IGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQorICAgICAgICB7
CisgICAgICAgICAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZhY2VdW2xldmVs
XS0+c2V0TWFuYWdlZFN1cmZhY2UobVRleFN0b3JhZ2UsIGZhY2UsIGxldmVsKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBUZXh0dXJlQ3ViZU1hcDo6Z2VuZXJh
dGVNaXBtYXBzKCkKK3sKKyAgICBpZiAoIWlzQ3ViZUNvbXBsZXRlKCkpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICB9CisKKyAgICBp
ZiAoIW1SZW5kZXJlci0+Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBvcnQoKSkKKyAgICB7CisgICAg
ICAgIGlmICghaXNQb3cyKG1JbWFnZUFycmF5WzBdWzBdLT5nZXRXaWR0aCgpKSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBQdXJnZSBhcnJheSBsZXZlbHMgMSB0aHJvdWdoIHEg
YW5kIHJlc2V0IHRoZW0gdG8gcmVwcmVzZW50IHRoZSBnZW5lcmF0ZWQgbWlwbWFwIGxldmVscy4K
KyAgICB1bnNpZ25lZCBpbnQgcSA9IGxvZzIobUltYWdlQXJyYXlbMF1bMF0tPmdldFdpZHRoKCkp
OworICAgIGZvciAodW5zaWduZWQgaW50IGYgPSAwOyBmIDwgNjsgZisrKQorICAgIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKQorICAgICAgICB7CisgICAg
ICAgICAgICByZWRlZmluZUltYWdlKGYsIGksIG1JbWFnZUFycmF5W2ZdWzBdLT5nZXRJbnRlcm5h
bEZvcm1hdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1heChtSW1hZ2VBcnJh
eVtmXVswXS0+Z2V0V2lkdGgoKSA+PiBpLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXgobUltYWdlQXJyYXlbZl1bMF0tPmdldFdpZHRoKCkgPj4gaSwgMSkpOworICAgICAg
ICB9CisgICAgfQorCisgICAgaWYgKG1UZXhTdG9yYWdlICYmIG1UZXhTdG9yYWdlLT5pc1JlbmRl
clRhcmdldCgpKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZiA9IDA7IGYgPCA2
OyBmKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBp
IDw9IHE7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtVGV4U3RvcmFnZS0+
Z2VuZXJhdGVNaXBtYXAoZiwgaSk7CisKKyAgICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtmXVtp
XS0+bWFya0NsZWFuKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZiA9IDA7IGYgPCA2OyBmKyspCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDw9IHE7IGkr
KykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtUmVuZGVyZXItPmdlbmVyYXRlTWlw
bWFwKG1JbWFnZUFycmF5W2ZdW2ldLCBtSW1hZ2VBcnJheVtmXVtpIC0gMV0pOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorfQorCitSZW5kZXJidWZmZXIgKlRleHR1cmVDdWJlTWFw
OjpnZXRSZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdldCkKK3sKKyAgICBpZiAoIUlzQ3ViZW1hcFRl
eHR1cmVUYXJnZXQodGFyZ2V0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sIChSZW5kZXJidWZmZXIgKilOVUxMKTsKKyAgICB9CisKKyAgICB1
bnNpZ25lZCBpbnQgZmFjZSA9IGZhY2VJbmRleCh0YXJnZXQpOworCisgICAgaWYgKG1GYWNlUHJv
eGllc1tmYWNlXSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgbUZhY2VQcm94aWVzW2ZhY2VdID0g
bmV3IFJlbmRlcmJ1ZmZlcihtUmVuZGVyZXIsIGlkKCksIG5ldyBSZW5kZXJidWZmZXJUZXh0dXJl
Q3ViZU1hcCh0aGlzLCB0YXJnZXQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbUZhY2VQcm94aWVz
W2ZhY2VdOworfQorCityeDo6UmVuZGVyVGFyZ2V0ICpUZXh0dXJlQ3ViZU1hcDo6Z2V0UmVuZGVy
VGFyZ2V0KEdMZW51bSB0YXJnZXQpCit7CisgICAgQVNTRVJUKElzQ3ViZW1hcFRleHR1cmVUYXJn
ZXQodGFyZ2V0KSk7CisKKyAgICAvLyBlbnN1cmUgdGhlIHVuZGVybHlpbmcgdGV4dHVyZSBpcyBj
cmVhdGVkCisgICAgaWYgKGdldFN0b3JhZ2UodHJ1ZSkgPT0gTlVMTCkKKyAgICB7CisgICAgICAg
IHJldHVybiBOVUxMOworICAgIH0KKworICAgIHVwZGF0ZVRleHR1cmUoKTsKKyAgICAKKyAgICBy
ZXR1cm4gbVRleFN0b3JhZ2UtPmdldFJlbmRlclRhcmdldCh0YXJnZXQpOworfQorCitpbnQgVGV4
dHVyZUN1YmVNYXA6OmxldmVsQ291bnQoKQoreworICAgIHJldHVybiBtVGV4U3RvcmFnZSA/IG1U
ZXhTdG9yYWdlLT5sZXZlbENvdW50KCkgLSBnZXRMb2RPZmZzZXQoKSA6IDA7Cit9CisKK3J4OjpU
ZXh0dXJlU3RvcmFnZUludGVyZmFjZSAqVGV4dHVyZUN1YmVNYXA6OmdldFN0b3JhZ2UoYm9vbCBy
ZW5kZXJUYXJnZXQpCit7CisgICAgaWYgKCFtVGV4U3RvcmFnZSB8fCAocmVuZGVyVGFyZ2V0ICYm
ICFtVGV4U3RvcmFnZS0+aXNSZW5kZXJUYXJnZXQoKSkpCisgICAgeworICAgICAgICBpZiAocmVu
ZGVyVGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgICBjb252ZXJ0VG9SZW5kZXJUYXJnZXQo
KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGNyZWF0
ZVRleHR1cmUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtVGV4U3RvcmFnZTsK
K30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0
dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9UZXh0dXJlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL1RleHR1cmUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNzUgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIFRleHR1cmUuaDogRGVmaW5lcyB0aGUgYWJzdHJhY3QgZ2w6OlRl
eHR1cmUgY2xhc3MgYW5kIGl0cyBjb25jcmV0ZSBkZXJpdmVkCisvLyBjbGFzc2VzIFRleHR1cmUy
RCBhbmQgVGV4dHVyZUN1YmVNYXAuIEltcGxlbWVudHMgR0wgdGV4dHVyZSBvYmplY3RzIGFuZAor
Ly8gcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAzLjcg
cGFnZSA2My4KKworI2lmbmRlZiBMSUJHTEVTVjJfVEVYVFVSRV9IXworI2RlZmluZSBMSUJHTEVT
VjJfVEVYVFVSRV9IXworCisjaW5jbHVkZSA8dmVjdG9yPgorCisjZGVmaW5lIEdMX0FQSUNBTEwK
KyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2lu
Y2x1ZGUgImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9hbmds
ZXR5cGVzLmgiCisKK25hbWVzcGFjZSBlZ2wKK3sKK2NsYXNzIFN1cmZhY2U7Cit9CisKK25hbWVz
cGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVyZmFj
ZTsKK2NsYXNzIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ7CitjbGFzcyBUZXh0dXJlU3RvcmFn
ZUludGVyZmFjZUN1YmU7CitjbGFzcyBSZW5kZXJUYXJnZXQ7CitjbGFzcyBJbWFnZTsKK30KKwor
bmFtZXNwYWNlIGdsCit7CitjbGFzcyBGcmFtZWJ1ZmZlcjsKK2NsYXNzIFJlbmRlcmJ1ZmZlcjsK
KworZW51bQoreworICAgIC8vIFRoZXNlIGFyZSB0aGUgbWF4aW11bXMgdGhlIGltcGxlbWVudGF0
aW9uIGNhbiBzdXBwb3J0CisgICAgLy8gVGhlIGFjdHVhbCBHTCBjYXBzIGFyZSBsaW1pdGVkIGJ5
IHRoZSBkZXZpY2UgY2FwcworICAgIC8vIGFuZCBzaG91bGQgYmUgcXVlcmllZCBmcm9tIHRoZSBD
b250ZXh0CisgICAgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfU0laRSA9IDE2Mzg0LAorICAg
IElNUExFTUVOVEFUSU9OX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUgPSAxNjM4NCwKKworICAg
IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUyA9IDE1ICAgLy8gMStsb2cyIG9mIE1B
WF9URVhUVVJFX1NJWkUKK307CisKK2NsYXNzIFRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRPYmpl
Y3QKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmUocng6OlJlbmRlcmVyICpyZW5kZXJlciwgR0x1
aW50IGlkKTsKKworICAgIHZpcnR1YWwgflRleHR1cmUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBh
ZGRQcm94eVJlZihjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KSA9IDA7CisKKyAgICB2
aXJ0dWFsIEdMZW51bSBnZXRUYXJnZXQoKSBjb25zdCA9IDA7CisKKyAgICBib29sIHNldE1pbkZp
bHRlcihHTGVudW0gZmlsdGVyKTsKKyAgICBib29sIHNldE1hZ0ZpbHRlcihHTGVudW0gZmlsdGVy
KTsKKyAgICBib29sIHNldFdyYXBTKEdMZW51bSB3cmFwKTsKKyAgICBib29sIHNldFdyYXBUKEdM
ZW51bSB3cmFwKTsKKyAgICBib29sIHNldE1heEFuaXNvdHJvcHkoZmxvYXQgdGV4dHVyZU1heEFu
aXNvdHJvcHksIGZsb2F0IGNvbnRleHRNYXhBbmlzb3Ryb3B5KTsKKyAgICBib29sIHNldFVzYWdl
KEdMZW51bSB1c2FnZSk7CisKKyAgICBHTGVudW0gZ2V0TWluRmlsdGVyKCkgY29uc3Q7CisgICAg
R0xlbnVtIGdldE1hZ0ZpbHRlcigpIGNvbnN0OworICAgIEdMZW51bSBnZXRXcmFwUygpIGNvbnN0
OworICAgIEdMZW51bSBnZXRXcmFwVCgpIGNvbnN0OworICAgIGZsb2F0IGdldE1heEFuaXNvdHJv
cHkoKSBjb25zdDsKKyAgICBpbnQgZ2V0TG9kT2Zmc2V0KCk7CisgICAgdm9pZCBnZXRTYW1wbGVy
U3RhdGUoU2FtcGxlclN0YXRlICpzYW1wbGVyKTsKKyAgICBHTGVudW0gZ2V0VXNhZ2UoKSBjb25z
dDsKKyAgICBib29sIGlzTWlwbWFwRmlsdGVyZWQoKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9v
bCBpc1NhbXBsZXJDb21wbGV0ZSgpIGNvbnN0ID0gMDsKKworICAgIHJ4OjpUZXh0dXJlU3RvcmFn
ZUludGVyZmFjZSAqZ2V0TmF0aXZlVGV4dHVyZSgpOworICAgIHZpcnR1YWwgUmVuZGVyYnVmZmVy
ICpnZXRSZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdldCkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IGdlbmVyYXRlTWlwbWFwcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVN1YkltYWdlKEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBH
TGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgRnJhbWVidWZm
ZXIgKnNvdXJjZSkgPSAwOworCisgICAgYm9vbCBoYXNEaXJ0eVBhcmFtZXRlcnMoKSBjb25zdDsK
KyAgICBib29sIGhhc0RpcnR5SW1hZ2VzKCkgY29uc3Q7CisgICAgdm9pZCByZXNldERpcnR5KCk7
CisgICAgdW5zaWduZWQgaW50IGdldFRleHR1cmVTZXJpYWwoKTsKKyAgICB1bnNpZ25lZCBpbnQg
Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpOworCisgICAgYm9vbCBpc0ltbXV0
YWJsZSgpIGNvbnN0OworCisgICAgc3RhdGljIGNvbnN0IEdMdWludCBJTkNPTVBMRVRFX1RFWFRV
UkVfSUQgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KC0xKTsgICAvLyBFdmVyeSB0ZXh0dXJlIHRha2Vz
IGFuIGlkIGF0IGNyZWF0aW9uIHRpbWUuIFRoZSB2YWx1ZSBpcyBhcmJpdHJhcnkgYmVjYXVzZSBp
dCBpcyBuZXZlciByZWdpc3RlcmVkIHdpdGggdGhlIHJlc291cmNlIG1hbmFnZXIuCisKKyAgcHJv
dGVjdGVkOgorICAgIHZvaWQgc2V0SW1hZ2UoR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2
b2lkICpwaXhlbHMsIHJ4OjpJbWFnZSAqaW1hZ2UpOworICAgIGJvb2wgc3ViSW1hZ2UoR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZv
aWQgKnBpeGVscywgcng6OkltYWdlICppbWFnZSk7CisgICAgdm9pZCBzZXRDb21wcmVzc2VkSW1h
Z2UoR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscywgcng6OkltYWdlICppbWFn
ZSk7CisgICAgYm9vbCBzdWJJbWFnZUNvbXByZXNzZWQoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6
ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMsIHJ4OjpJbWFnZSAqaW1hZ2UpOworCisg
ICAgR0xpbnQgY3JlYXRpb25MZXZlbHMoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpIGNv
bnN0OworICAgIEdMaW50IGNyZWF0aW9uTGV2ZWxzKEdMc2l6ZWkgc2l6ZSkgY29uc3Q7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlVGV4dHVyZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29udmVydFRvUmVuZGVyVGFyZ2V0
KCkgPSAwOworICAgIHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KEdM
ZW51bSB0YXJnZXQpID0gMDsKKworICAgIHZpcnR1YWwgaW50IGxldmVsQ291bnQoKSA9IDA7CisK
KyAgICByeDo6UmVuZGVyZXIgKm1SZW5kZXJlcjsKKworICAgIFNhbXBsZXJTdGF0ZSBtU2FtcGxl
clN0YXRlOworICAgIEdMZW51bSBtVXNhZ2U7CisKKyAgICBib29sIG1EaXJ0eUltYWdlczsKKwor
ICAgIGJvb2wgbUltbXV0YWJsZTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTihUZXh0dXJlKTsKKworICAgIHZpcnR1YWwgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJm
YWNlICpnZXRTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KSA9IDA7Cit9OworCitjbGFzcyBUZXh0
dXJlMkQgOiBwdWJsaWMgVGV4dHVyZQoreworICBwdWJsaWM6CisgICAgVGV4dHVyZTJEKHJ4OjpS
ZW5kZXJlciAqcmVuZGVyZXIsIEdMdWludCBpZCk7CisKKyAgICB+VGV4dHVyZTJEKCk7CisKKyAg
ICB2b2lkIGFkZFByb3h5UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpOworICAgIHZvaWQg
cmVsZWFzZVByb3h5KGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpOworCisgICAgdmlydHVhbCBH
TGVudW0gZ2V0VGFyZ2V0KCkgY29uc3Q7CisKKyAgICBHTHNpemVpIGdldFdpZHRoKEdMaW50IGxl
dmVsKSBjb25zdDsKKyAgICBHTHNpemVpIGdldEhlaWdodChHTGludCBsZXZlbCkgY29uc3Q7Cisg
ICAgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBHTGVu
dW0gZ2V0QWN0dWFsRm9ybWF0KEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBib29sIGlzQ29tcHJl
c3NlZChHTGludCBsZXZlbCkgY29uc3Q7CisgICAgYm9vbCBpc0RlcHRoKEdMaW50IGxldmVsKSBj
b25zdDsKKworICAgIHZvaWQgc2V0SW1hZ2UoR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxp
Z25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOworICAgIHZvaWQgc2V0Q29tcHJlc3NlZEltYWdl
KEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKnBpeGVscyk7CisgICAgdm9pZCBzdWJJ
bWFnZShHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1
bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7CisgICAgdm9pZCBzdWJJbWFnZUNv
bXByZXNzZWQoR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6
ZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKKyAgICB2b2lkIGNvcHlJbWFnZShHTGludCBsZXZlbCwg
R0xlbnVtIGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEZyYW1lYnVmZmVyICpzb3VyY2UpOworICAgIHZpcnR1YWwgdm9pZCBjb3B5U3ViSW1h
Z2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZz
ZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFt
ZWJ1ZmZlciAqc291cmNlKTsKKyAgICB2b2lkIHN0b3JhZ2UoR0xzaXplaSBsZXZlbHMsIEdMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworCisgICAg
dmlydHVhbCBib29sIGlzU2FtcGxlckNvbXBsZXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IGJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOworICAgIHZpcnR1YWwgdm9pZCBy
ZWxlYXNlVGV4SW1hZ2UoKTsKKworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcHMoKTsK
KworICAgIHZpcnR1YWwgUmVuZGVyYnVmZmVyICpnZXRSZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdl
dCk7CisKKyAgcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJidWZmZXJUZXh0dXJl
MkQ7CisgICAgdmlydHVhbCByeDo6UmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoR0xlbnVt
IHRhcmdldCk7CisgICAgdmlydHVhbCByeDo6UmVuZGVyVGFyZ2V0ICpnZXREZXB0aFN0ZW5jaWwo
R0xlbnVtIHRhcmdldCk7CisgICAgdmlydHVhbCBpbnQgbGV2ZWxDb3VudCgpOworCisgIHByaXZh
dGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmUyRCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlVGV4dHVyZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJl
KCk7CisgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb1JlbmRlclRhcmdldCgpOworICAgIHZpcnR1
YWwgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlICpnZXRTdG9yYWdlKGJvb2wgcmVuZGVyVGFy
Z2V0KTsKKworICAgIGJvb2wgaXNNaXBtYXBDb21wbGV0ZSgpIGNvbnN0OworCisgICAgdm9pZCBy
ZWRlZmluZUltYWdlKEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQpOworICAgIHZvaWQgY29tbWl0UmVjdChHTGludCBsZXZlbCwg
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQpOworCisgICAgcng6OkltYWdlICptSW1hZ2VBcnJheVtJTVBMRU1FTlRBVElPTl9NQVhfVEVY
VFVSRV9MRVZFTFNdOworCisgICAgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKm1UZXhT
dG9yYWdlOworICAgIGVnbDo6U3VyZmFjZSAqbVN1cmZhY2U7CisKKyAgICAvLyBBIHNwZWNpZmlj
IGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBpcyBrZXB0IGZvciBjb2xvcmJ1ZmZlciBwcm94eSBy
ZWZlcmVuY2VzLAorICAgIC8vIGJlY2F1c2UsIGFzIHRoZSByZW5kZXJidWZmZXIgYWN0aW5nIGFz
IHByb3h5IHdpbGwgbWFpbnRhaW4gYSBiaW5kaW5nIHBvaW50ZXIKKyAgICAvLyBiYWNrIHRvIHRo
aXMgdGV4dHVyZSwgdGhlcmUgd291bGQgYmUgYSBjaXJjdWxhciByZWZlcmVuY2UgaWYgd2UgdXNl
ZCBhIGJpbmRpbmcKKyAgICAvLyBwb2ludGVyIGhlcmUuIFRoaXMgcmVmZXJlbmNlIGNvdW50IHdp
bGwgY2F1c2UgdGhlIHBvaW50ZXIgdG8gYmUgc2V0IHRvIE5VTEwgaWYKKyAgICAvLyB0aGUgY291
bnQgZHJvcHMgdG8gemVybywgYnV0IHdpbGwgbm90IGNhdXNlIGRlbGV0aW9uIG9mIHRoZSBSZW5k
ZXJidWZmZXIuCisgICAgUmVuZGVyYnVmZmVyICptQ29sb3JidWZmZXJQcm94eTsKKyAgICB1bnNp
Z25lZCBpbnQgbVByb3h5UmVmczsKK307CisKK2NsYXNzIFRleHR1cmVDdWJlTWFwIDogcHVibGlj
IFRleHR1cmUKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVDdWJlTWFwKHJ4OjpSZW5kZXJlciAq
cmVuZGVyZXIsIEdMdWludCBpZCk7CisKKyAgICB+VGV4dHVyZUN1YmVNYXAoKTsKKworICAgIHZv
aWQgYWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7CisgICAgdm9pZCByZWxl
YXNlUHJveHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7CisKKyAgICB2aXJ0dWFsIEdMZW51
bSBnZXRUYXJnZXQoKSBjb25zdDsKKyAgICAKKyAgICBHTHNpemVpIGdldFdpZHRoKEdMZW51bSB0
YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBHTHNpemVpIGdldEhlaWdodChHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCkgY29uc3Q7CisgICAgR0xlbnVtIGdldEludGVybmFsRm9ybWF0
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBHTGVudW0gZ2V0QWN0dWFs
Rm9ybWF0KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKSBjb25zdDsKKyAgICBib29sIGlzQ29t
cHJlc3NlZChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkgY29uc3Q7CisKKyAgICB2b2lkIHNl
dEltYWdlUG9zWChHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZv
aWQgKnBpeGVscyk7CisgICAgdm9pZCBzZXRJbWFnZU5lZ1goR0xpbnQgbGV2ZWwsIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnQg
dW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOworICAgIHZvaWQgc2V0SW1hZ2VQ
b3NZKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZv
cm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqcGl4
ZWxzKTsKKyAgICB2b2lkIHNldEltYWdlTmVnWShHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tB
bGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBpeGVscyk7CisgICAgdm9pZCBzZXRJbWFnZVBvc1ooR0xp
bnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgR0xpbnQgdW5wYWNrQWxpZ25tZW50LCBjb25zdCB2b2lkICpwaXhlbHMpOwor
ICAgIHZvaWQgc2V0SW1hZ2VOZWdaKEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVu
dCwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKKworICAgIHZvaWQgc2V0Q29tcHJlc3NlZEltYWdlKEdM
ZW51bSBmYWNlLCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpOworCisg
ICAgdm9pZCBzdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBm
b3JtYXQsIEdMZW51bSB0eXBlLCBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKnBp
eGVscyk7CisgICAgdm9pZCBzdWJJbWFnZUNvbXByZXNzZWQoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAq
cGl4ZWxzKTsKKyAgICB2b2lkIGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwg
R0xlbnVtIGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEZyYW1lYnVmZmVyICpzb3VyY2UpOworICAgIHZpcnR1YWwgdm9pZCBjb3B5U3ViSW1h
Z2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZz
ZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBGcmFt
ZWJ1ZmZlciAqc291cmNlKTsKKyAgICB2b2lkIHN0b3JhZ2UoR0xzaXplaSBsZXZlbHMsIEdMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSBzaXplKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1Nh
bXBsZXJDb21wbGV0ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFw
cygpOworCisgICAgdmlydHVhbCBSZW5kZXJidWZmZXIgKmdldFJlbmRlcmJ1ZmZlcihHTGVudW0g
dGFyZ2V0KTsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgZmFjZUluZGV4KEdMZW51bSBmYWNl
KTsKKworICBwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFJlbmRlcmJ1ZmZlclRleHR1cmVD
dWJlTWFwOworICAgIHZpcnR1YWwgcng6OlJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KEdM
ZW51bSB0YXJnZXQpOworICAgIHZpcnR1YWwgaW50IGxldmVsQ291bnQoKTsKKworICBwcml2YXRl
OgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUZXh0dXJlQ3ViZU1hcCk7CisKKyAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0
dXJlKCk7CisgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb1JlbmRlclRhcmdldCgpOworICAgIHZp
cnR1YWwgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlICpnZXRTdG9yYWdlKGJvb2wgcmVuZGVy
VGFyZ2V0KTsKKworICAgIGJvb2wgaXNDdWJlQ29tcGxldGUoKSBjb25zdDsKKyAgICBib29sIGlz
TWlwbWFwQ3ViZUNvbXBsZXRlKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEltYWdlKGludCBmYWNl
SW5kZXgsIEdMaW50IGxldmVsLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAq
cGl4ZWxzKTsKKyAgICB2b2lkIGNvbW1pdFJlY3QoaW50IGZhY2VJbmRleCwgR0xpbnQgbGV2ZWws
IEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0KTsKKyAgICB2b2lkIHJlZGVmaW5lSW1hZ2UoaW50IGZhY2VJbmRleCwgR0xpbnQgbGV2ZWws
IEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisK
KyAgICByeDo6SW1hZ2UgKm1JbWFnZUFycmF5WzZdW0lNUExFTUVOVEFUSU9OX01BWF9URVhUVVJF
X0xFVkVMU107CisKKyAgICByeDo6VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICptVGV4U3Rv
cmFnZTsKKworICAgIC8vIEEgc3BlY2lmaWMgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IGlzIGtl
cHQgZm9yIGNvbG9yYnVmZmVyIHByb3h5IHJlZmVyZW5jZXMsCisgICAgLy8gYmVjYXVzZSwgYXMg
dGhlIHJlbmRlcmJ1ZmZlciBhY3RpbmcgYXMgcHJveHkgd2lsbCBtYWludGFpbiBhIGJpbmRpbmcg
cG9pbnRlcgorICAgIC8vIGJhY2sgdG8gdGhpcyB0ZXh0dXJlLCB0aGVyZSB3b3VsZCBiZSBhIGNp
cmN1bGFyIHJlZmVyZW5jZSBpZiB3ZSB1c2VkIGEgYmluZGluZworICAgIC8vIHBvaW50ZXIgaGVy
ZS4gVGhpcyByZWZlcmVuY2UgY291bnQgd2lsbCBjYXVzZSB0aGUgcG9pbnRlciB0byBiZSBzZXQg
dG8gTlVMTCBpZgorICAgIC8vIHRoZSBjb3VudCBkcm9wcyB0byB6ZXJvLCBidXQgd2lsbCBub3Qg
Y2F1c2UgZGVsZXRpb24gb2YgdGhlIFJlbmRlcmJ1ZmZlci4KKyAgICBSZW5kZXJidWZmZXIgKm1G
YWNlUHJveGllc1s2XTsKKyAgICB1bnNpZ25lZCBpbnQgKm1GYWNlUHJveHlSZWZzWzZdOworfTsK
K30KKworI2VuZGlmICAgLy8gTElCR0xFU1YyX1RFWFRVUkVfSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVW5pZm9ybS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Vbmlmb3JtLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVW5pZm9ybS5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgor
Ly8NCisvLyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUNCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLg0KKy8vDQorDQorI2luY2x1ZGUgImxpYkdMRVN2Mi9Vbmlmb3JtLmgi
DQorDQorI2luY2x1ZGUgImxpYkdMRVN2Mi91dGlsaXRpZXMuaCINCisNCituYW1lc3BhY2UgZ2wN
Cit7DQorDQorVW5pZm9ybTo6VW5pZm9ybShHTGVudW0gdHlwZSwgR0xlbnVtIHByZWNpc2lvbiwg
Y29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHVuc2lnbmVkIGludCBhcnJheVNpemUpDQorICAgIDog
dHlwZSh0eXBlKSwgcHJlY2lzaW9uKHByZWNpc2lvbiksIG5hbWUobmFtZSksIGFycmF5U2l6ZShh
cnJheVNpemUpDQorew0KKyAgICBpbnQgYnl0ZXMgPSBnbDo6VW5pZm9ybUludGVybmFsU2l6ZSh0
eXBlKSAqIGVsZW1lbnRDb3VudCgpOw0KKyAgICBkYXRhID0gbmV3IHVuc2lnbmVkIGNoYXJbYnl0
ZXNdOw0KKyAgICBtZW1zZXQoZGF0YSwgMCwgYnl0ZXMpOw0KKyAgICBkaXJ0eSA9IHRydWU7DQor
DQorICAgIHBzUmVnaXN0ZXJJbmRleCA9IC0xOw0KKyAgICB2c1JlZ2lzdGVySW5kZXggPSAtMTsN
CisgICAgcmVnaXN0ZXJDb3VudCA9IFZhcmlhYmxlUm93Q291bnQodHlwZSkgKiBlbGVtZW50Q291
bnQoKTsNCit9DQorDQorVW5pZm9ybTo6flVuaWZvcm0oKQ0KK3sNCisgICAgZGVsZXRlW10gZGF0
YTsNCit9DQorDQorYm9vbCBVbmlmb3JtOjppc0FycmF5KCkgY29uc3QNCit7DQorICAgIHJldHVy
biBhcnJheVNpemUgPiAwOw0KK30NCisNCit1bnNpZ25lZCBpbnQgVW5pZm9ybTo6ZWxlbWVudENv
dW50KCkgY29uc3QNCit7DQorICAgIHJldHVybiBhcnJheVNpemUgPiAwID8gYXJyYXlTaXplIDog
MTsNCit9DQorDQorfQ0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvVW5pZm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvVW5pZm9ybS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9Vbmlmb3JtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAK
Ky8vDQorLy8gQ29weXJpZ2h0IChjKSAyMDEwLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4NCisvLw0KKw0KKyNpZm5kZWYgTElCR0xFU1YyX1VOSUZPUk1fSF8N
CisjZGVmaW5lIExJQkdMRVNWMl9VTklGT1JNX0hfDQorDQorI2luY2x1ZGUgPHN0cmluZz4NCisj
aW5jbHVkZSA8dmVjdG9yPg0KKw0KKyNkZWZpbmUgR0xfQVBJQ0FMTA0KKyNpbmNsdWRlIDxHTEVT
Mi9nbDIuaD4NCisNCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiDQorDQorbmFtZXNwYWNlIGds
DQorew0KKw0KKy8vIEhlbHBlciBzdHJ1Y3QgcmVwcmVzZW50aW5nIGEgc2luZ2xlIHNoYWRlciB1
bmlmb3JtDQorc3RydWN0IFVuaWZvcm0NCit7DQorICAgIFVuaWZvcm0oR0xlbnVtIHR5cGUsIEdM
ZW51bSBwcmVjaXNpb24sIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCB1bnNpZ25lZCBpbnQgYXJy
YXlTaXplKTsNCisNCisgICAgflVuaWZvcm0oKTsNCisNCisgICAgYm9vbCBpc0FycmF5KCkgY29u
c3Q7DQorICAgIHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQoKSBjb25zdDsNCisNCisgICAgY29u
c3QgR0xlbnVtIHR5cGU7DQorICAgIGNvbnN0IEdMZW51bSBwcmVjaXNpb247DQorICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIG5hbWU7DQorICAgIGNvbnN0IHVuc2lnbmVkIGludCBhcnJheVNpemU7DQor
DQorICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7DQorICAgIGJvb2wgZGlydHk7DQorDQorICAgIGlu
dCBwc1JlZ2lzdGVySW5kZXg7DQorICAgIGludCB2c1JlZ2lzdGVySW5kZXg7DQorICAgIHVuc2ln
bmVkIGludCByZWdpc3RlckNvdW50Ow0KK307DQorDQordHlwZWRlZiBzdGQ6OnZlY3RvcjxVbmlm
b3JtKj4gVW5pZm9ybUFycmF5Ow0KKw0KK30NCisNCisjZW5kaWYgICAvLyBMSUJHTEVTVjJfVU5J
Rk9STV9IXw0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvYW5n
bGV0eXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvYW5nbGV0eXBlcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9hbmdsZXR5cGVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI5
IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBhbmdsZXR5cGVzLmggOiBEZWZpbmVzIGEgdmFy
aWV0eSBvZiBzdHJ1Y3R1cmVzIGFuZCBlbnVtIHR5cGVzIHRoYXQgYXJlIHVzZWQgdGhyb3VnaG91
dCBsaWJHTEVTdjIKKworI2lmbmRlZiBMSUJHTEVTVjJfQU5HTEVUWVBFU19IXworI2RlZmluZSBM
SUJHTEVTVjJfQU5HTEVUWVBFU19IXworCituYW1lc3BhY2UgZ2wKK3sKKworZW51bSBUZXh0dXJl
VHlwZQoreworICAgIFRFWFRVUkVfMkQsCisgICAgVEVYVFVSRV9DVUJFLAorCisgICAgVEVYVFVS
RV9UWVBFX0NPVU5ULAorICAgIFRFWFRVUkVfVU5LTk9XTgorfTsKKworZW51bSBTYW1wbGVyVHlw
ZQoreworICAgIFNBTVBMRVJfUElYRUwsCisgICAgU0FNUExFUl9WRVJURVgKK307CisKK3N0cnVj
dCBDb2xvcgoreworICAgIGZsb2F0IHJlZDsKKyAgICBmbG9hdCBncmVlbjsKKyAgICBmbG9hdCBi
bHVlOworICAgIGZsb2F0IGFscGhhOworfTsKKworc3RydWN0IFJlY3RhbmdsZQoreworICAgIGlu
dCB4OworICAgIGludCB5OworICAgIGludCB3aWR0aDsKKyAgICBpbnQgaGVpZ2h0OworfTsKKwor
c3RydWN0IFJhc3Rlcml6ZXJTdGF0ZQoreworICAgIGJvb2wgY3VsbEZhY2U7CisgICAgR0xlbnVt
IGN1bGxNb2RlOworICAgIEdMZW51bSBmcm9udEZhY2U7CisKKyAgICBib29sIHBvbHlnb25PZmZz
ZXRGaWxsOworICAgIEdMZmxvYXQgcG9seWdvbk9mZnNldEZhY3RvcjsKKyAgICBHTGZsb2F0IHBv
bHlnb25PZmZzZXRVbml0czsKKworICAgIGJvb2wgcG9pbnREcmF3TW9kZTsKKyAgICBib29sIG11
bHRpU2FtcGxlOworfTsKKworc3RydWN0IEJsZW5kU3RhdGUKK3sKKyAgICBib29sIGJsZW5kOwor
ICAgIEdMZW51bSBzb3VyY2VCbGVuZFJHQjsKKyAgICBHTGVudW0gZGVzdEJsZW5kUkdCOworICAg
IEdMZW51bSBzb3VyY2VCbGVuZEFscGhhOworICAgIEdMZW51bSBkZXN0QmxlbmRBbHBoYTsKKyAg
ICBHTGVudW0gYmxlbmRFcXVhdGlvblJHQjsKKyAgICBHTGVudW0gYmxlbmRFcXVhdGlvbkFscGhh
OworCisgICAgYm9vbCBjb2xvck1hc2tSZWQ7CisgICAgYm9vbCBjb2xvck1hc2tHcmVlbjsKKyAg
ICBib29sIGNvbG9yTWFza0JsdWU7CisgICAgYm9vbCBjb2xvck1hc2tBbHBoYTsKKworICAgIGJv
b2wgc2FtcGxlQWxwaGFUb0NvdmVyYWdlOworCisgICAgYm9vbCBkaXRoZXI7Cit9OworCitzdHJ1
Y3QgRGVwdGhTdGVuY2lsU3RhdGUKK3sKKyAgICBib29sIGRlcHRoVGVzdDsKKyAgICBHTGVudW0g
ZGVwdGhGdW5jOworICAgIGJvb2wgZGVwdGhNYXNrOworCisgICAgYm9vbCBzdGVuY2lsVGVzdDsK
KyAgICBHTGVudW0gc3RlbmNpbEZ1bmM7CisgICAgR0x1aW50IHN0ZW5jaWxNYXNrOworICAgIEdM
ZW51bSBzdGVuY2lsRmFpbDsKKyAgICBHTGVudW0gc3RlbmNpbFBhc3NEZXB0aEZhaWw7CisgICAg
R0xlbnVtIHN0ZW5jaWxQYXNzRGVwdGhQYXNzOworICAgIEdMdWludCBzdGVuY2lsV3JpdGVtYXNr
OworICAgIEdMZW51bSBzdGVuY2lsQmFja0Z1bmM7CisgICAgR0x1aW50IHN0ZW5jaWxCYWNrTWFz
azsKKyAgICBHTGVudW0gc3RlbmNpbEJhY2tGYWlsOworICAgIEdMZW51bSBzdGVuY2lsQmFja1Bh
c3NEZXB0aEZhaWw7CisgICAgR0xlbnVtIHN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzczsKKyAgICBH
THVpbnQgc3RlbmNpbEJhY2tXcml0ZW1hc2s7Cit9OworCitzdHJ1Y3QgU2FtcGxlclN0YXRlCit7
CisgICAgR0xlbnVtIG1pbkZpbHRlcjsKKyAgICBHTGVudW0gbWFnRmlsdGVyOworICAgIEdMZW51
bSB3cmFwUzsKKyAgICBHTGVudW0gd3JhcFQ7CisgICAgZmxvYXQgbWF4QW5pc290cm9weTsKKyAg
ICBpbnQgbG9kT2Zmc2V0OworfTsKKworc3RydWN0IENsZWFyUGFyYW1ldGVycworeworICAgIEdM
Yml0ZmllbGQgbWFzazsKKworICAgIENvbG9yIGNvbG9yQ2xlYXJWYWx1ZTsKKyAgICBib29sIGNv
bG9yTWFza1JlZDsKKyAgICBib29sIGNvbG9yTWFza0dyZWVuOworICAgIGJvb2wgY29sb3JNYXNr
Qmx1ZTsKKyAgICBib29sIGNvbG9yTWFza0FscGhhOworCisgICAgZmxvYXQgZGVwdGhDbGVhclZh
bHVlOworCisgICAgR0xpbnQgc3RlbmNpbENsZWFyVmFsdWU7CisgICAgR0x1aW50IHN0ZW5jaWxX
cml0ZU1hc2s7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfQU5HTEVUWVBFU19IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9jb25zdGFudHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2NvbnN0
YW50cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9jb25zdGFudHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIENvbnRhbnRzLmg6IERlZmluZXMgc29tZSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZp
YyBhbmQgZ2wgY29uc3RhbnRzCisKKyNpZm5kZWYgTElCR0xFU1YyX0NPTlNUQU5UU19IXworI2Rl
ZmluZSBMSUJHTEVTVjJfQ09OU1RBTlRTX0hfCisKK25hbWVzcGFjZSBnbAoreworCitlbnVtCit7
CisgICAgTUFYX1ZFUlRFWF9BVFRSSUJTID0gMTYsCisgICAgTUFYX1RFWFRVUkVfSU1BR0VfVU5J
VFMgPSAxNiwKKworICAgIC8vIEltcGxlbWVudGF0aW9uIHVwcGVyIGxpbWl0cywgcmVhbCBtYXhp
bXVtcyBkZXBlbmQgb24gdGhlIGhhcmR3YXJlCisgICAgSU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRF
WF9URVhUVVJFX0lNQUdFX1VOSVRTID0gMTYsCisgICAgSU1QTEVNRU5UQVRJT05fTUFYX0NPTUJJ
TkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyArIElNUExF
TUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUywgICAgCisKKyAgICBJTVBM
RU1FTlRBVElPTl9NQVhfVkFSWUlOR19WRUNUT1JTID0gMzIsCisgICAgSU1QTEVNRU5UQVRJT05f
TUFYX0RSQVdfQlVGRkVSUyA9IDgKK307CisKK2NvbnN0IGZsb2F0IEFMSUFTRURfTElORV9XSURU
SF9SQU5HRV9NSU4gPSAxLjBmOworY29uc3QgZmxvYXQgQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdF
X01BWCA9IDEuMGY7Citjb25zdCBmbG9hdCBBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0VfTUlOID0g
MS4wZjsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX0NPTlNUQU5UU19IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
bGliR0xFU3YyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MTA2IEBACisjaW5jbHVkZSAi
cHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIGxpYkdMRVN2Mi5jcHA6IElt
cGxlbWVudHMgdGhlIGV4cG9ydGVkIE9wZW5HTCBFUyAyLjAgZnVuY3Rpb25zLgorCisjaW5jbHVk
ZSAiY29tbW9uL3ZlcnNpb24uaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5j
bHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9CdWZmZXIu
aCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvRmVuY2UuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvRnJh
bWVidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL1Byb2dyYW0uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbUJpbmFy
eS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L1F1ZXJ5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKworYm9vbCB2YWxpZElt
YWdlU2l6ZShHTGludCBsZXZlbCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7Cisg
ICAgaWYgKGxldmVsIDwgMCB8fCB3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoZ2w6OmdldENvbnRleHQoKSAmJiBn
bDo6Z2V0Q29udGV4dCgpLT5zdXBwb3J0c05vblBvd2VyMlRleHR1cmUoKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChsZXZlbCA9PSAwKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGdsOjppc1BvdzIod2lkdGgpICYm
IGdsOjppc1BvdzIoaGVpZ2h0KSkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gVmVyaWZ5IHRoYXQgZm9ybWF0L3R5cGUgYXJl
IG9uZSBvZiB0aGUgY29tYmluYXRpb25zIGZyb20gdGFibGUgMy40LgorYm9vbCBjaGVja1RleHR1
cmVGb3JtYXRUeXBlKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKQoreworICAgIC8vIHZhbGlk
YXRlIDxmb3JtYXQ+IGJ5IGl0c2VsZiAodXNlZCBhcyBzZWNvbmRhcnkga2V5IGJlbG93KQorICAg
IHN3aXRjaCAoZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgIGNhc2Ug
R0xfQkdSQV9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgIGNhc2UgR0xfQUxQSEE6Cisg
ICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOgor
ICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6CisgICAgICBjYXNlIEdMX0RFUFRIX1NURU5D
SUxfT0VTOgorICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBmYWxzZSk7CisgICAgfQorCisgICAgLy8gaW52YWxp
ZCA8dHlwZT4gLT4gc2V0cyBJTlZBTElEX0VOVU0KKyAgICAvLyBpbnZhbGlkIDxmb3JtYXQ+Kzx0
eXBlPiBjb21iaW5hdGlvbiAtPiBzZXRzIElOVkFMSURfT1BFUkFUSU9OCisgICAgc3dpdGNoICh0
eXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgc3dpdGNo
IChmb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAg
Y2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICBjYXNl
IEdMX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOgorICAgICAgICAgIGNhc2Ug
R0xfTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sIGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgY2Fz
ZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgc3dpdGNoIChmb3JtYXQpCisgICAgICAgIHsK
KyAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAg
ICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAg
ICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgY2FzZSBHTF9VTlNJR05FRF9T
SE9SVF80XzRfNF80OgorICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xOgorICAg
ICAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfUkdCQToK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgICAg
IH0KKworICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNToKKyAgICAgICAgc3dpdGNo
IChmb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAg
ICAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfREVQVEhf
Q09NUE9ORU5UOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGZhbHNl
KTsKKyAgICAgICAgfQorCisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yNF84X09FUzoKKyAg
ICAgICAgc3dpdGNoIChmb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0RFUFRI
X1NURU5DSUxfT0VTOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGZh
bHNlKTsKKyAgICAgICAgfQorCisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgZmFsc2UpOworICAgIH0KK30KKworYm9vbCB2YWxpZGF0ZVN1
YkltYWdlUGFyYW1zMkQoYm9vbCBjb21wcmVzc2VkLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50
IHlvZmZzZXQsIEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlMkQgKnRleHR1cmUpCit7CisgICAg
aWYgKCF0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgZmFsc2UpOworICAgIH0KKworICAgIGlmIChjb21wcmVzc2VkICE9IHRleHR1
cmUtPmlzQ29tcHJlc3NlZChsZXZlbCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgfQorCisgICAgaWYgKGZvcm1hdCAh
PSBHTF9OT05FKQorICAgIHsKKyAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gZ2w6OkNv
bnZlcnRTaXplZEludGVybmFsRm9ybWF0KGZvcm1hdCwgdHlwZSk7CisgICAgICAgIGlmIChpbnRl
cm5hbGZvcm1hdCAhPSB0ZXh0dXJlLT5nZXRJbnRlcm5hbEZvcm1hdChsZXZlbCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGZh
bHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjb21wcmVzc2VkKQorICAgIHsKKyAg
ICAgICAgaWYgKCh3aWR0aCAlIDQgIT0gMCAmJiB3aWR0aCAhPSB0ZXh0dXJlLT5nZXRXaWR0aCgw
KSkgfHwKKyAgICAgICAgICAgIChoZWlnaHQgJSA0ICE9IDAgJiYgaGVpZ2h0ICE9IHRleHR1cmUt
PmdldEhlaWdodCgwKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICh4b2Zmc2V0ICsgd2lkdGggPiB0ZXh0dXJlLT5nZXRXaWR0aChsZXZlbCkgfHwKKyAgICAgICAg
eW9mZnNldCArIGhlaWdodCA+IHRleHR1cmUtPmdldEhlaWdodChsZXZlbCkpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGZhbHNlKTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCB2YWxpZGF0ZVN1YkltYWdlUGFyYW1zQ3ViZShi
b29sIGNvbXByZXNzZWQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGVu
dW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1hcCAqdGV4dHVyZSkK
K3sKKyAgICBpZiAoIXRleHR1cmUpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCBmYWxzZSk7CisgICAgfQorCisgICAgaWYgKGNvbXByZXNzZWQg
IT0gdGV4dHVyZS0+aXNDb21wcmVzc2VkKHRhcmdldCwgbGV2ZWwpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgZmFsc2UpOworICAgIH0KKwor
ICAgIGlmIChmb3JtYXQgIT0gR0xfTk9ORSkKKyAgICB7CisgICAgICAgIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCA9IGdsOjpDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQsIHR5cGUpOwor
ICAgICAgICBpZiAoaW50ZXJuYWxmb3JtYXQgIT0gdGV4dHVyZS0+Z2V0SW50ZXJuYWxGb3JtYXQo
dGFyZ2V0LCBsZXZlbCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChjb21wcmVzc2VkKQorICAgIHsKKyAgICAgICAgaWYgKCh3aWR0aCAlIDQgIT0gMCAmJiB3aWR0
aCAhPSB0ZXh0dXJlLT5nZXRXaWR0aCh0YXJnZXQsIDApKSB8fAorICAgICAgICAgICAgKGhlaWdo
dCAlIDQgIT0gMCAmJiBoZWlnaHQgIT0gdGV4dHVyZS0+Z2V0SGVpZ2h0KHRhcmdldCwgMCkpKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoeG9mZnNldCArIHdpZHRo
ID4gdGV4dHVyZS0+Z2V0V2lkdGgodGFyZ2V0LCBsZXZlbCkgfHwKKyAgICAgICAgeW9mZnNldCAr
IGhlaWdodCA+IHRleHR1cmUtPmdldEhlaWdodCh0YXJnZXQsIGxldmVsKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgZmFsc2UpOworICAgIH0KKwor
ICAgIHJldHVybiB0cnVlOworfQorCisvLyBjaGVjayBmb3IgY29tYmluYXRpb25zIG9mIGZvcm1h
dCBhbmQgdHlwZSB0aGF0IGFyZSB2YWxpZCBmb3IgUmVhZFBpeGVscworYm9vbCB2YWxpZFJlYWRG
b3JtYXRUeXBlKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAoZm9y
bWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgc3dpdGNoICh0eXBlKQor
ICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6CisgICAgICAg
IHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllU
RToKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVDoKKyAg
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVDoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitleHRlcm4gIkMiCit7CisK
K3ZvaWQgX19zdGRjYWxsIGdsQWN0aXZlVGV4dHVyZShHTGVudW0gdGV4dHVyZSkKK3sKKyAgICBF
VkVOVCgiKEdMZW51bSB0ZXh0dXJlID0gMHglWCkiLCB0ZXh0dXJlKTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRl
eHR1cmUgPCBHTF9URVhUVVJFMCB8fCB0ZXh0dXJlID4gR0xfVEVYVFVSRTAgKyBjb250ZXh0LT5n
ZXRNYXhpbXVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIC0gMSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnRleHQtPnNldEFjdGl2ZVNhbXBsZXIodGV4dHVy
ZSAtIEdMX1RFWFRVUkUwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xBdHRhY2hTaGFkZXIoR0x1aW50IHByb2dy
YW0sIEdMdWludCBzaGFkZXIpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBH
THVpbnQgc2hhZGVyID0gJWQpIiwgcHJvZ3JhbSwgc2hhZGVyKTsKKworICAgIHRyeQorICAgIHsK
KyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsK
KworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlByb2dy
YW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAg
ICAgICAgZ2w6OlNoYWRlciAqc2hhZGVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U2hhZGVyKHNoYWRl
cik7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoIXNoYWRlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAoY29udGV4dC0+Z2V0UHJvZ3JhbShzaGFkZXIpKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
IXByb2dyYW1PYmplY3QtPmF0dGFjaFNoYWRlcihzaGFkZXJPYmplY3QpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEJlZ2luUXVlcnlFWFQoR0xlbnVtIHRhcmdl
dCwgR0x1aW50IGlkKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMdWlu
dCAlZCkiLCB0YXJnZXQsIGlkKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0
YXJnZXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9F
WFQ6IAorICAgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9F
WFQ6CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6IAorICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoaWQgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5iZWdpblF1ZXJ5KHRhcmdldCwg
aWQpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7
CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQor
Cit2b2lkIF9fc3RkY2FsbCBnbEJpbmRBdHRyaWJMb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwgR0x1
aW50IGluZGV4LCBjb25zdCBHTGNoYXIqIG5hbWUpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJv
Z3JhbSA9ICVkLCBHTHVpbnQgaW5kZXggPSAlZCwgY29uc3QgR0xjaGFyKiBuYW1lID0gMHglMC44
cCkiLCBwcm9ncmFtLCBpbmRleCwgbmFtZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlm
IChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnBy
b2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgICAg
ICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmdldFNoYWRlcihwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHN0cm5j
bXAobmFtZSwgImdsXyIsIDMpID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHByb2dyYW1PYmplY3QtPmJpbmRBdHRyaWJ1dGVMb2NhdGlvbihpbmRleCwg
bmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9
CisKK3ZvaWQgX19zdGRjYWxsIGdsQmluZEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVm
ZmVyKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMdWludCBidWZmZXIg
PSAlZCkiLCB0YXJnZXQsIGJ1ZmZlcik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYg
KGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0FSUkFZX0JVRkZFUjoKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5iaW5kQXJyYXlCdWZmZXIoYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVI6CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+YmluZEVsZW1lbnRBcnJheUJ1ZmZlcihidWZmZXIpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsQmluZEZyYW1lYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdMdWludCBmcmFtZWJ1
ZmZlcikKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHVpbnQgZnJhbWVi
dWZmZXIgPSAlZCkiLCB0YXJnZXQsIGZyYW1lYnVmZmVyKTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgaWYgKHRhcmdldCAhPSBHTF9GUkFNRUJVRkZFUiAmJiB0YXJnZXQgIT0gR0xfRFJBV19G
UkFNRUJVRkZFUl9BTkdMRSAmJiB0YXJnZXQgIT0gR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0p
OworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9u
TG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHRhcmdldCA9PSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFIHx8IHRhcmdldCA9
PSBHTF9GUkFNRUJVRkZFUikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5iaW5kUmVhZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9EUkFXX0ZSQU1FQlVGRkVSX0FO
R0xFIHx8IHRhcmdldCA9PSBHTF9GUkFNRUJVRkZFUikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5iaW5kRHJhd0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0K
K30KKwordm9pZCBfX3N0ZGNhbGwgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdM
dWludCByZW5kZXJidWZmZXIpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwg
R0x1aW50IHJlbmRlcmJ1ZmZlciA9ICVkKSIsIHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKworICAg
IHRyeQorICAgIHsKKyAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9SRU5ERVJCVUZGRVIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnRleHQtPmJpbmRSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xC
aW5kVGV4dHVyZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSkKK3sKKyAgICBFVkVOVCgi
KEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHVpbnQgdGV4dHVyZSA9ICVkKSIsIHRhcmdldCwgdGV4
dHVyZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlT2JqZWN0ID0gY29udGV4dC0+Z2V0
VGV4dHVyZSh0ZXh0dXJlKTsKKworICAgICAgICAgICAgaWYgKHRleHR1cmVPYmplY3QgJiYgdGV4
dHVyZU9iamVjdC0+Z2V0VGFyZ2V0KCkgIT0gdGFyZ2V0ICYmIHRleHR1cmUgIT0gMCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZTJEKHRleHR1cmUpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgorICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlQ3ViZU1hcCh0ZXh0dXJlKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbEJsZW5kQ29sb3IoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYg
Ymx1ZSwgR0xjbGFtcGYgYWxwaGEpCit7CisgICAgRVZFTlQoIihHTGNsYW1wZiByZWQgPSAlZiwg
R0xjbGFtcGYgZ3JlZW4gPSAlZiwgR0xjbGFtcGYgYmx1ZSA9ICVmLCBHTGNsYW1wZiBhbHBoYSA9
ICVmKSIsCisgICAgICAgICAgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBnbDo6Q29udGV4dCogY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250
ZXh0LT5zZXRCbGVuZENvbG9yKGdsOjpjbGFtcDAxKHJlZCksIGdsOjpjbGFtcDAxKGdyZWVuKSwg
Z2w6OmNsYW1wMDEoYmx1ZSksIGdsOjpjbGFtcDAxKGFscGhhKSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQmxl
bmRFcXVhdGlvbihHTGVudW0gbW9kZSkKK3sKKyAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSht
b2RlLCBtb2RlKTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUo
R0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpCit7CisgICAgRVZFTlQoIihHTGVudW0g
bW9kZVJHQiA9IDB4JVgsIEdMZW51bSBtb2RlQWxwaGEgPSAweCVYKSIsIG1vZGVSR0IsIG1vZGVB
bHBoYSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobW9kZVJHQikKKyAgICAg
ICAgeworICAgICAgICAgIGNhc2UgR0xfRlVOQ19BREQ6CisgICAgICAgICAgY2FzZSBHTF9GVU5D
X1NVQlRSQUNUOgorICAgICAgICAgIGNhc2UgR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUOgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAo
bW9kZUFscGhhKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9GVU5DX0FERDoKKyAgICAg
ICAgICBjYXNlIEdMX0ZVTkNfU1VCVFJBQ1Q6CisgICAgICAgICAgY2FzZSBHTF9GVU5DX1JFVkVS
U0VfU1VCVFJBQ1Q6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisK
KyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsK
KworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+
c2V0QmxlbmRFcXVhdGlvbihtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgICAgICB9CisgICAgfQor
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEJsZW5k
RnVuYyhHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpCit7CisgICAgZ2xCbGVuZEZ1bmNT
ZXBhcmF0ZShzZmFjdG9yLCBkZmFjdG9yLCBzZmFjdG9yLCBkZmFjdG9yKTsKK30KKwordm9pZCBf
X3N0ZGNhbGwgZ2xCbGVuZEZ1bmNTZXBhcmF0ZShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdC
LCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkKK3sKKyAgICBFVkVOVCgiKEdMZW51
bSBzcmNSR0IgPSAweCVYLCBHTGVudW0gZHN0UkdCID0gMHglWCwgR0xlbnVtIHNyY0FscGhhID0g
MHglWCwgR0xlbnVtIGRzdEFscGhhID0gMHglWCkiLAorICAgICAgICAgIHNyY1JHQiwgZHN0UkdC
LCBzcmNBbHBoYSwgZHN0QWxwaGEpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBzd2l0Y2gg
KHNyY1JHQikKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfWkVSTzoKKyAgICAgICAgICBj
YXNlIEdMX09ORToKKyAgICAgICAgICBjYXNlIEdMX1NSQ19DT0xPUjoKKyAgICAgICAgICBjYXNl
IEdMX09ORV9NSU5VU19TUkNfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6Cisg
ICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNUX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xf
U1JDX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQToKKyAgICAg
ICAgICBjYXNlIEdMX0RTVF9BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1Rf
QUxQSEE6CisgICAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgICBjYXNl
IEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX0NPTlNUQU5U
X0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOgorICAg
ICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBX1NBVFVSQVRFOgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoZHN0UkdCKQorICAgICAgICB7
CisgICAgICAgICAgY2FzZSBHTF9aRVJPOgorICAgICAgICAgIGNhc2UgR0xfT05FOgorICAgICAg
ICAgIGNhc2UgR0xfU1JDX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19D
T0xPUjoKKyAgICAgICAgICBjYXNlIEdMX0RTVF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX09O
RV9NSU5VU19EU1RfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9TUkNfQUxQSEE6CisgICAgICAg
ICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfRFNUX0FM
UEhBOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9BTFBIQToKKyAgICAgICAgICBj
YXNlIEdMX0NPTlNUQU5UX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNU
QU5UX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQUxQSEE6CisgICAgICAgICAg
Y2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChzcmNBbHBoYSkKKyAgICAgICAg
eworICAgICAgICAgIGNhc2UgR0xfWkVSTzoKKyAgICAgICAgICBjYXNlIEdMX09ORToKKyAgICAg
ICAgICBjYXNlIEdMX1NSQ19DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNf
Q09MT1I6CisgICAgICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6CisgICAgICAgICAgY2FzZSBHTF9P
TkVfTUlOVVNfRFNUX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBOgorICAgICAg
ICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX0RTVF9B
TFBIQToKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQUxQSEE6CisgICAgICAgICAg
Y2FzZSBHTF9DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05T
VEFOVF9DT0xPUjoKKyAgICAgICAgICBjYXNlIEdMX0NPTlNUQU5UX0FMUEhBOgorICAgICAgICAg
IGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfU1JD
X0FMUEhBX1NBVFVSQVRFOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
fQorCisgICAgICAgIHN3aXRjaCAoZHN0QWxwaGEpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNl
IEdMX1pFUk86CisgICAgICAgICAgY2FzZSBHTF9PTkU6CisgICAgICAgICAgY2FzZSBHTF9TUkNf
Q09MT1I6CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0NPTE9SOgorICAgICAgICAg
IGNhc2UgR0xfRFNUX0NPTE9SOgorICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9DT0xP
UjoKKyAgICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX09ORV9N
SU5VU19TUkNfQUxQSEE6CisgICAgICAgICAgY2FzZSBHTF9EU1RfQUxQSEE6CisgICAgICAgICAg
Y2FzZSBHTF9PTkVfTUlOVVNfRFNUX0FMUEhBOgorICAgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRf
Q09MT1I6CisgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6CisgICAg
ICAgICAgY2FzZSBHTF9DT05TVEFOVF9BTFBIQToKKyAgICAgICAgICBjYXNlIEdMX09ORV9NSU5V
U19DT05TVEFOVF9BTFBIQToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAg
IH0KKworICAgICAgICBib29sIGNvbnN0YW50Q29sb3JVc2VkID0gKHNyY1JHQiA9PSBHTF9DT05T
VEFOVF9DT0xPUiB8fCBzcmNSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0UkdCID09IEdMX0NPTlNUQU5UX0NP
TE9SIHx8IGRzdFJHQiA9PSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IpOworCisgICAgICAg
IGJvb2wgY29uc3RhbnRBbHBoYVVzZWQgPSAoc3JjUkdCID09IEdMX0NPTlNUQU5UX0FMUEhBIHx8
IHNyY1JHQiA9PSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkc3RSR0IgPT0gR0xfQ09OU1RBTlRfQUxQSEEgfHwgZHN0UkdC
ID09IEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSk7CisKKyAgICAgICAgaWYgKGNvbnN0YW50
Q29sb3JVc2VkICYmIGNvbnN0YW50QWxwaGFVc2VkKQorICAgICAgICB7CisgICAgICAgICAgICBF
UlIoIlNpbXVsdGFuZW91cyB1c2Ugb2YgR0xfQ09OU1RBTlRfQUxQSEEvR0xfT05FX01JTlVTX0NP
TlNUQU5UX0FMUEhBIGFuZCBHTF9DT05TVEFOVF9DT0xPUi9HTF9PTkVfTUlOVVNfQ09OU1RBTlRf
Q09MT1IgaW52YWxpZCB1bmRlciBXZWJHTCIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRCbGVuZEZhY3RvcnMoc3Jj
UkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQnVmZmVyRGF0
YShHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSwgR0xl
bnVtIHVzYWdlKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMc2l6ZWlw
dHIgc2l6ZSA9ICVkLCBjb25zdCBHTHZvaWQqIGRhdGEgPSAweCUwLjhwLCBHTGVudW0gdXNhZ2Ug
PSAlZCkiLAorICAgICAgICAgIHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBz
d2l0Y2ggKHVzYWdlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9TVFJFQU1fRFJBVzoK
KyAgICAgICAgICBjYXNlIEdMX1NUQVRJQ19EUkFXOgorICAgICAgICAgIGNhc2UgR0xfRFlOQU1J
Q19EUkFXOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAg
ICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1
ZmZlcjsKKworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfQVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgICAgIGJ1ZmZlciA9
IGNvbnRleHQtPmdldEFycmF5QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVI6CisgICAgICAgICAgICAgICAg
YnVmZmVyID0gY29udGV4dC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgYnVmZmVyLT5idWZmZXJEYXRhKGRhdGEsIHNpemUsIHVzYWdlKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xC
dWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBz
aXplLCBjb25zdCBHTHZvaWQqIGRhdGEpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0g
MHglWCwgR0xpbnRwdHIgb2Zmc2V0ID0gJWQsIEdMc2l6ZWlwdHIgc2l6ZSA9ICVkLCBjb25zdCBH
THZvaWQqIGRhdGEgPSAweCUwLjhwKSIsCisgICAgICAgICAgdGFyZ2V0LCBvZmZzZXQsIHNpemUs
IGRhdGEpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoc2l6ZSA8IDAgfHwgb2Zmc2V0
IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkYXRhID09IE5VTEwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlcjsKKworICAgICAg
ICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfQVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQtPmdldEFy
cmF5QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfRUxFTUVOVF9BUlJBWV9CVUZGRVI6CisgICAgICAgICAgICAgICAgYnVmZmVyID0gY29udGV4
dC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWJ1ZmZlcikK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKChzaXplX3Qp
c2l6ZSArIG9mZnNldCA+IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGJ1ZmZlci0+YnVmZmVyU3ViRGF0YShkYXRhLCBzaXplLCBvZmZzZXQp
OworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCitH
TGVudW0gX19zdGRjYWxsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTGVudW0gdGFyZ2V0KQor
eworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgpIiwgdGFyZ2V0KTsKKworICAgIHRy
eQorICAgIHsKKyAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9GUkFNRUJVRkZFUiAmJiB0YXJnZXQg
IT0gR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSAmJiB0YXJnZXQgIT0gR0xfUkVBRF9GUkFNRUJV
RkZFUl9BTkdMRSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX0VOVU0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IE5VTEw7
CisgICAgICAgICAgICBpZiAodGFyZ2V0ID09IEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRS
ZWFkRnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldERyYXdG
cmFtZWJ1ZmZlcigpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZnJhbWVi
dWZmZXItPmNvbXBsZXRlbmVzcygpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSwgMCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
Q2xlYXIoR0xiaXRmaWVsZCBtYXNrKQoreworICAgIEVWRU5UKCIoR0xiaXRmaWVsZCBtYXNrID0g
JVgpIiwgbWFzayk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmNsZWFyKG1hc2spOworICAgICAgICB9Cisg
ICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBn
bENsZWFyQ29sb3IoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwg
R0xjbGFtcGYgYWxwaGEpCit7CisgICAgRVZFTlQoIihHTGNsYW1wZiByZWQgPSAlZiwgR0xjbGFt
cGYgZ3JlZW4gPSAlZiwgR0xjbGFtcGYgYmx1ZSA9ICVmLCBHTGNsYW1wZiBhbHBoYSA9ICVmKSIs
CisgICAgICAgICAgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOwor
CisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5z
ZXRDbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xDbGVh
ckRlcHRoZihHTGNsYW1wZiBkZXB0aCkKK3sKKyAgICBFVkVOVCgiKEdMY2xhbXBmIGRlcHRoID0g
JWYpIiwgZGVwdGgpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRDbGVhckRlcHRoKGRlcHRoKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBf
X3N0ZGNhbGwgZ2xDbGVhclN0ZW5jaWwoR0xpbnQgcykKK3sKKyAgICBFVkVOVCgiKEdMaW50IHMg
PSAlZCkiLCBzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+c2V0Q2xlYXJTdGVuY2lsKHMpOworICAgICAg
ICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbENvbG9yTWFzayhHTGJvb2xlYW4gcmVkLCBHTGJvb2xlYW4gZ3JlZW4sIEdMYm9vbGVh
biBibHVlLCBHTGJvb2xlYW4gYWxwaGEpCit7CisgICAgRVZFTlQoIihHTGJvb2xlYW4gcmVkID0g
JWQsIEdMYm9vbGVhbiBncmVlbiA9ICVkLCBHTGJvb2xlYW4gYmx1ZSA9ICVkLCBHTGJvb2xlYW4g
YWxwaGEgPSAlZCkiLAorICAgICAgICAgIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKworICAg
IHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAg
ICAgY29udGV4dC0+c2V0Q29sb3JNYXNrKHJlZCA9PSBHTF9UUlVFLCBncmVlbiA9PSBHTF9UUlVF
LCBibHVlID09IEdMX1RSVUUsIGFscGhhID09IEdMX1RSVUUpOworICAgICAgICB9CisgICAgfQor
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbENvbXBp
bGVTaGFkZXIoR0x1aW50IHNoYWRlcikKK3sKKyAgICBFVkVOVCgiKEdMdWludCBzaGFkZXIgPSAl
ZCkiLCBzaGFkZXIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBnbDo6U2hhZGVyICpzaGFkZXJPYmplY3QgPSBjb250ZXh0
LT5nZXRTaGFkZXIoc2hhZGVyKTsKKworICAgICAgICAgICAgaWYgKCFzaGFkZXJPYmplY3QpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFByb2dyYW0oc2hh
ZGVyKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgc2hhZGVyT2JqZWN0LT5jb21waWxlKCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRj
YWxsIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsIEdMc2l6ZWkg
aW1hZ2VTaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFy
Z2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gMHgl
WCwgR0xzaXplaSB3aWR0aCA9ICVkLCAiIAorICAgICAgICAgICJHTHNpemVpIGhlaWdodCA9ICVk
LCBHTGludCBib3JkZXIgPSAlZCwgR0xzaXplaSBpbWFnZVNpemUgPSAlZCwgY29uc3QgR0x2b2lk
KiBkYXRhID0gMHglMC44cCkiLAorICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7CisKKyAgICB0cnkK
KyAgICB7CisgICAgICAgIGlmICghdmFsaWRJbWFnZVNpemUobGV2ZWwsIHdpZHRoLCBoZWlnaHQp
IHx8IGJvcmRlciAhPSAwIHx8IGltYWdlU2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAg
ICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUNV9BTkdMRToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoYm9yZGVyICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHdpZHRoICE9IDEgJiYgd2lkdGggIT0gMiAmJiB3aWR0aCAlIDQgIT0gMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoaGVpZ2h0ICE9IDEgJiYgaGVpZ2h0ICE9IDIgJiYgaGVpZ2h0
ICUgNCAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChsZXZlbCA+IGNvbnRleHQtPmdldE1heGltdW1UZXh0
dXJlTGV2ZWwoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0
Y2ggKHRhcmdldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJF
XzJEOgorICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IChjb250ZXh0LT5nZXRNYXhpbXVtVGV4
dHVyZURpbWVuc2lvbigpID4+IGxldmVsKSB8fAorICAgICAgICAgICAgICAgICAgICBoZWlnaHQg
PiAoY29udGV4dC0+Z2V0TWF4aW11bVRleHR1cmVEaW1lbnNpb24oKSA+PiBsZXZlbCkpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6CisgICAg
ICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgorICAgICAgICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKKyAgICAgICAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6CisgICAgICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgorICAgICAgICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggIT0g
aGVpZ2h0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBpZiAod2lkdGggPiAoY29udGV4dC0+Z2V0TWF4aW11bUN1YmVUZXh0dXJlRGltZW5z
aW9uKCkgPj4gbGV2ZWwpIHx8CisgICAgICAgICAgICAgICAgICAgIGhlaWdodCA+IChjb250ZXh0
LT5nZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNpb24oKSA+PiBsZXZlbCkpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJu
YWxmb3JtYXQpIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFf
RVhUOgorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQxVGV4dHVyZXMo
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsgLy8gaW4gdGhpcyBjYXNlLCBpdCdzIGFzIHRob3VnaCB0aGUg
aW50ZXJuYWwgZm9ybWF0IHN3aXRjaCBmYWlsZWQKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUM19BTkdMRToKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhU
M1RleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7IC8vIGluIHRoaXMgY2FzZSwgaXQncyBhcyB0
aG91Z2ggdGhlIGludGVybmFsIGZvcm1hdCBzd2l0Y2ggZmFpbGVkCisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5z
dXBwb3J0c0RYVDVUZXh0dXJlcygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOyAvLyBpbiB0aGlzIGNhc2Us
IGl0J3MgYXMgdGhvdWdoIHRoZSBpbnRlcm5hbCBmb3JtYXQgc3dpdGNoIGZhaWxlZAorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVs
dDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGltYWdl
U2l6ZSAhPSBnbDo6Q29tcHV0ZUNvbXByZXNzZWRTaXplKHdpZHRoLCBoZWlnaHQsIGludGVybmFs
Zm9ybWF0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGFy
Z2V0ID09IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2w6
OlRleHR1cmUyRCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgpOworCisgICAgICAg
ICAgICAgICAgaWYgKCF0ZXh0dXJlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICB0ZXh0dXJlLT5zZXRDb21wcmVzc2VkSW1hZ2UobGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBpbWFnZVNpemUsIGRhdGEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1hcCAq
dGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmVDdWJlTWFwKCk7CisKKyAgICAgICAgICAgICAg
ICBpZiAoIXRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHN3aXRj
aCAodGFyZ2V0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgorICAgICAgICAgICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgorICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhU
VVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0
Q29tcHJlc3NlZEltYWdlKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBpbWFnZVNpemUsIGRhdGEpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
KyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2
b2lkKiBkYXRhKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50IGxl
dmVsID0gJWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQgeW9mZnNldCA9ICVkLCAiCisgICAg
ICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xlbnVtIGZv
cm1hdCA9IDB4JVgsICIKKyAgICAgICAgICAiR0xzaXplaSBpbWFnZVNpemUgPSAlZCwgY29uc3Qg
R0x2b2lkKiBkYXRhID0gMHglMC44cCkiLAorICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKCFnbDo6SXNJbnRlcm5hbFRleHR1cmVUYXJnZXQo
dGFyZ2V0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHhvZmZzZXQgPCAwIHx8IHlvZmZz
ZXQgPCAwIHx8ICF2YWxpZEltYWdlU2l6ZShsZXZlbCwgd2lkdGgsIGhlaWdodCkgfHwgaW1hZ2VT
aXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoZm9ybWF0KQorICAgICAg
ICB7CisgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQg
PT0gMCB8fCBkYXRhID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChsZXZlbCA+IGNvbnRleHQtPmdldE1heGltdW1UZXh0dXJlTGV2ZWwoKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAg
ICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgICAg
ICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0RYVDFUZXh0dXJlcygpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0p
OyAvLyBpbiB0aGlzIGNhc2UsIGl0J3MgYXMgdGhvdWdoIHRoZSBpbnRlcm5hbCBmb3JtYXQgc3dp
dGNoIGZhaWxlZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAg
ICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQzVGV4dHVyZXMoKSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsgLy8gaW4gdGhpcyBjYXNlLCBpdCdzIGFzIHRob3VnaCB0aGUgaW50ZXJuYWwg
Zm9ybWF0IHN3aXRjaCBmYWlsZWQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9B
TkdMRToKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUNVRleHR1cmVz
KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfRU5VTSk7IC8vIGluIHRoaXMgY2FzZSwgaXQncyBhcyB0aG91Z2ggdGhl
IGludGVybmFsIGZvcm1hdCBzd2l0Y2ggZmFpbGVkCisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaW1hZ2VTaXplICE9IGdsOjpDb21wdXRl
Q29tcHJlc3NlZFNpemUod2lkdGgsIGhlaWdodCwgZm9ybWF0KSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoeG9mZnNldCAlIDQgIT0gMCB8fCB5b2Zmc2V0ICUg
NCAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOyAvLyB3ZSB3YWl0IHRvIGNoZWNrIHRoZSBvZmZzZXRzIHVu
dGlsIHRoaXMgcG9pbnQsIGJlY2F1c2UgdGhlIG11bHRpcGxlLW9mLWZvdXIgcmVzdHJpY3Rpb24K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBk
b2VzIG5vdCBleGlzdCB1bmxlc3MgRFhUIHRleHR1cmVzIGFyZSBzdXBwb3J0ZWQuCisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJlID0gY29udGV4
dC0+Z2V0VGV4dHVyZTJEKCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlU3ViSW1hZ2VQ
YXJhbXMyRCh0cnVlLCB3aWR0aCwgaGVpZ2h0LCB4b2Zmc2V0LCB5b2Zmc2V0LCBsZXZlbCwgZm9y
bWF0LCBHTF9OT05FLCB0ZXh0dXJlKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHRleHR1cmUtPnN1YkltYWdlQ29tcHJlc3NlZChsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGdsOjpJc0N1YmVtYXBU
ZXh0dXJlVGFyZ2V0KHRhcmdldCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2w6
OlRleHR1cmVDdWJlTWFwICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsK
KyAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGVTdWJJbWFnZVBhcmFtc0N1YmUodHJ1ZSwgd2lk
dGgsIGhlaWdodCwgeG9mZnNldCwgeW9mZnNldCwgdGFyZ2V0LCBsZXZlbCwgZm9ybWF0LCBHTF9O
T05FLCB0ZXh0dXJlKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHRl
eHR1cmUtPnN1YkltYWdlQ29tcHJlc3NlZCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
Q29weVRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEdMaW50IGJvcmRlcikKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGlu
dCBsZXZlbCA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAweCVYLCAiCisgICAgICAgICAg
IkdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkg
aGVpZ2h0ID0gJWQsIEdMaW50IGJvcmRlciA9ICVkKSIsCisgICAgICAgICAgdGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIGlmICghdmFsaWRJbWFnZVNpemUobGV2ZWwsIHdpZHRoLCBoZWln
aHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
VkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJvcmRlciAhPSAwKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAg
ICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRl
eHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KGxldmVsID4gY29udGV4dC0+Z2V0TWF4aW11bVRleHR1cmVMZXZlbCgpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAgICAgICAgICAgICAgaWYg
KHdpZHRoID4gKGNvbnRleHQtPmdldE1heGltdW1UZXh0dXJlRGltZW5zaW9uKCkgPj4gbGV2ZWwp
IHx8CisgICAgICAgICAgICAgICAgICAgIGhlaWdodCA+IChjb250ZXh0LT5nZXRNYXhpbXVtVGV4
dHVyZURpbWVuc2lvbigpID4+IGxldmVsKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJF
X0NVQkVfTUFQX05FR0FUSVZFX1g6CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9ZOgorICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWToKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1o6CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9a
OgorICAgICAgICAgICAgICAgIGlmICh3aWR0aCAhPSBoZWlnaHQpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IChjb250
ZXh0LT5nZXRNYXhpbXVtQ3ViZVRleHR1cmVEaW1lbnNpb24oKSA+PiBsZXZlbCkgfHwKKyAgICAg
ICAgICAgICAgICAgICAgaGVpZ2h0ID4gKGNvbnRleHQtPmdldE1heGltdW1DdWJlVGV4dHVyZURp
bWVuc2lvbigpID4+IGxldmVsKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQt
PmdldFJlYWRGcmFtZWJ1ZmZlcigpOworCisgICAgICAgICAgICBpZiAoZnJhbWVidWZmZXItPmNv
bXBsZXRlbmVzcygpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9P
UEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0
UmVhZEZyYW1lYnVmZmVySGFuZGxlKCkgIT0gMCAmJiBmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcygp
ICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpS
ZW5kZXJidWZmZXIgKnNvdXJjZSA9IGZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKTsK
KyAgICAgICAgICAgIEdMZW51bSBjb2xvcmJ1ZmZlckZvcm1hdCA9IHNvdXJjZS0+Z2V0SW50ZXJu
YWxGb3JtYXQoKTsKKworICAgICAgICAgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRdIHRhYmxlIDMu
OQorICAgICAgICAgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgICAgICAgICBpZiAoY29sb3JidWZm
ZXJGb3JtYXQgIT0gR0xfQUxQSEE4X0VYVCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1
ZmZlckZvcm1hdCAhPSBHTF9SR0JBNCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZl
ckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVy
Rm9ybWF0ICE9IEdMX0JHUkE4X0VYVCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZl
ckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xf
TFVNSU5BTkNFOgorICAgICAgICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICAgICAgICBp
ZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNTY1ICYmCisgICAgICAgICAgICAgICAgICAg
IGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjhfT0VTICYmCisgICAgICAgICAgICAgICAgICAg
IGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCisgICAgICAgICAgICAgICAgICAgIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKKyAgICAgICAgICAgICAgICAgICAgY29s
b3JidWZmZXJGb3JtYXQgIT0gR0xfQkdSQThfRVhUICYmCisgICAgICAgICAgICAgICAgICAgIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUykKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQToKKyAg
ICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYKKyAgICAg
ICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgorICAgICAg
ICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9CR1JBOF9FWFQgJiYKKyAgICAg
ICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTKQorICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhU
OgorICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgor
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdXBwb3J0c0RYVDFUZXh0dXJlcygpKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19B
TkdMRToKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+c3VwcG9ydHNEWFQzVGV4dHVyZXMo
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDVfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRFhUNVRl
eHR1cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05F
TlQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6CisgICAgICAgICAg
ICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTOgorICAgICAgICAgICAgICBjYXNlIEdM
X0RFUFRIX1NURU5DSUxfT0VTOgorICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJ
TDhfT0VTOgorICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRGVwdGhUZXh0
dXJlcygpKQorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisK
KyAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFi
bGUoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIHRleHR1cmUtPmNvcHlJbWFnZShsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHks
IHdpZHRoLCBoZWlnaHQsIGZyYW1lYnVmZmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UgaWYgKGdsOjpJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDdWJlTWFwICp0ZXh0dXJlID0gY29udGV4
dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKKworICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZSkK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGlmICh0ZXh0dXJlLT5pc0ltbXV0YWJsZSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGV4dHVyZS0+Y29weUltYWdlKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmcmFtZWJ1
ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsQ29weVRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4
JVgsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQgeW9mZnNldCA9
ICVkLCAiCisgICAgICAgICAgIkdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdp
ZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQpIiwKKyAgICAgICAgICB0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgaWYgKCFnbDo6SXNJbnRlcm5hbFRleHR1cmVUYXJnZXQodGFyZ2V0KSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGxldmVsIDwgMCB8fCB4b2Zmc2V0IDwgMCB8fCB5b2Zm
c2V0IDwgMCB8fCB3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHhvZmZzZXQgPCB3
aWR0aCB8fCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHlvZmZzZXQgPCBo
ZWlnaHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQg
PT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGxldmVsID4gY29u
dGV4dC0+Z2V0TWF4aW11bVRleHR1cmVMZXZlbCgpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5n
ZXRSZWFkRnJhbWVidWZmZXIoKTsKKworICAgICAgICAgICAgaWYgKGZyYW1lYnVmZmVyLT5jb21w
bGV0ZW5lc3MoKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BF
UkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFJl
YWRGcmFtZWJ1ZmZlckhhbmRsZSgpICE9IDAgJiYgZnJhbWVidWZmZXItPmdldFNhbXBsZXMoKSAh
PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnbDo6UmVu
ZGVyYnVmZmVyICpzb3VyY2UgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7Cisg
ICAgICAgICAgICBHTGVudW0gY29sb3JidWZmZXJGb3JtYXQgPSBzb3VyY2UtPmdldEludGVybmFs
Rm9ybWF0KCk7CisgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IE5VTEw7CisgICAg
ICAgICAgICBHTGVudW0gdGV4dHVyZUZvcm1hdCA9IEdMX1JHQkE7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBnbDo6VGV4dHVyZTJEICp0ZXgyZCA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgpOworCisgICAg
ICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZVN1YkltYWdlUGFyYW1zMkQoZmFsc2UsIHdpZHRoLCBo
ZWlnaHQsIHhvZmZzZXQsIHlvZmZzZXQsIGxldmVsLCBHTF9OT05FLCBHTF9OT05FLCB0ZXgyZCkp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGVycm9y
IGFscmVhZHkgcmVnaXN0ZXJlZCBieSB2YWxpZGF0ZVN1YkltYWdlUGFyYW1zCisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHRleHR1cmVGb3JtYXQgPSBnbDo6RXh0cmFjdEZvcm1h
dCh0ZXgyZC0+Z2V0SW50ZXJuYWxGb3JtYXQobGV2ZWwpKTsKKyAgICAgICAgICAgICAgICB0ZXh0
dXJlID0gdGV4MmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChnbDo6SXND
dWJlbWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGdsOjpUZXh0dXJlQ3ViZU1hcCAqdGV4Y3ViZSA9IGNvbnRleHQtPmdldFRleHR1cmVDdWJl
TWFwKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXZhbGlkYXRlU3ViSW1hZ2VQYXJhbXNDdWJl
KGZhbHNlLCB3aWR0aCwgaGVpZ2h0LCB4b2Zmc2V0LCB5b2Zmc2V0LCB0YXJnZXQsIGxldmVsLCBH
TF9OT05FLCBHTF9OT05FLCB0ZXhjdWJlKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsgLy8gZXJyb3IgYWxyZWFkeSByZWdpc3RlcmVkIGJ5IHZhbGlkYXRl
U3ViSW1hZ2VQYXJhbXMKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGV4dHVy
ZUZvcm1hdCA9IGdsOjpFeHRyYWN0Rm9ybWF0KHRleGN1YmUtPmdldEludGVybmFsRm9ybWF0KHRh
cmdldCwgbGV2ZWwpKTsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlID0gdGV4Y3ViZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKworICAgICAgICAgICAg
Ly8gW09wZW5HTCBFUyAyLjAuMjRdIHRhYmxlIDMuOQorICAgICAgICAgICAgc3dpdGNoICh0ZXh0
dXJlRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0FMUEhBOgor
ICAgICAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9BTFBIQThfRVhUICYm
CisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCisg
ICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKKyAg
ICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9SR0I6CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JH
QjU2NSAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I4
X09FUyAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JB
NCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0Ex
ICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09F
UykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAg
ICAgICAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXJG
b3JtYXQgIT0gR0xfUkdCQTQgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3Jt
YXQgIT0gR0xfUkdCNV9BMSAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1h
dCAhPSBHTF9SR0JBOF9PRVMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJF
U1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5U
OgorICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX1NURU5DSUxfT0VTOgorICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXh0dXJlLT5jb3B5U3Vi
SW1hZ2UodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZnJhbWVidWZmZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9Cit9CisKK0dMdWludCBfX3N0ZGNhbGwgZ2xDcmVhdGVQcm9ncmFtKHZvaWQpCit7
CisgICAgRVZFTlQoIigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5jcmVhdGVQcm9ncmFt
KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAwKTsKKyAgICB9CisK
KyAgICByZXR1cm4gMDsKK30KKworR0x1aW50IF9fc3RkY2FsbCBnbENyZWF0ZVNoYWRlcihHTGVu
dW0gdHlwZSkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0eXBlID0gMHglWCkiLCB0eXBlKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9u
TG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdM
X0ZSQUdNRU5UX1NIQURFUjoKKyAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgor
ICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5jcmVhdGVTaGFkZXIodHlwZSk7CisgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX0VOVU0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSwgMCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgX19z
dGRjYWxsIGdsQ3VsbEZhY2UoR0xlbnVtIG1vZGUpCit7CisgICAgRVZFTlQoIihHTGVudW0gbW9k
ZSA9IDB4JVgpIiwgbW9kZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobW9k
ZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfRlJPTlQ6CisgICAgICAgICAgY2FzZSBH
TF9CQUNLOgorICAgICAgICAgIGNhc2UgR0xfRlJPTlRfQU5EX0JBQ0s6CisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKKworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0Q3VsbE1vZGUobW9kZSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVN
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwor
dm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVCdWZmZXJzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiBi
dWZmZXJzKQoreworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCogYnVm
ZmVycyA9IDB4JTAuOHApIiwgbiwgYnVmZmVycyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAg
IGlmIChuIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZUJ1ZmZlcihidWZmZXJzW2ldKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxv
YyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwor
ICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVGZW5jZXNOVihHTHNpemVpIG4sIGNv
bnN0IEdMdWludCogZmVuY2VzKQoreworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIGNvbnN0
IEdMdWludCogZmVuY2VzID0gMHglMC44cCkiLCBuLCBmZW5jZXMpOworCisgICAgdHJ5CisgICAg
eworICAgICAgICBpZiAobiA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kZWxldGVGZW5jZShmZW5j
ZXNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbERlbGV0ZUZyYW1lYnVmZmVycyhH
THNpemVpIG4sIGNvbnN0IEdMdWludCogZnJhbWVidWZmZXJzKQoreworICAgIEVWRU5UKCIoR0xz
aXplaSBuID0gJWQsIGNvbnN0IEdMdWludCogZnJhbWVidWZmZXJzID0gMHglMC44cCkiLCBuLCBm
cmFtZWJ1ZmZlcnMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAobiA8IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0
Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoZnJhbWVidWZmZXJzW2ldICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcnNbaV0p
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVQ
cm9ncmFtKEdMdWludCBwcm9ncmFtKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAl
ZCkiLCBwcm9ncmFtKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHByb2dyYW0gPT0g
MCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAg
ICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRQ
cm9ncmFtKHByb2dyYW0pKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmKGNvbnRl
eHQtPmdldFNoYWRlcihwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRl
UHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEZWxldGVRdWVyaWVzRVhUKEdMc2l6ZWkg
biwgY29uc3QgR0x1aW50ICppZHMpCit7CisgICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgY29u
c3QgR0x1aW50ICppZHMgPSAweCUwLjhwKSIsIG4sIGlkcyk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVF1ZXJ5KGlkc1tpXSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
KyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRGVsZXRlUmVuZGVyYnVmZmVycyhHTHNpemVp
IG4sIGNvbnN0IEdMdWludCogcmVuZGVyYnVmZmVycykKK3sKKyAgICBFVkVOVCgiKEdMc2l6ZWkg
biA9ICVkLCBjb25zdCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMgPSAweCUwLjhwKSIsIG4sIHJlbmRl
cmJ1ZmZlcnMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAobiA8IDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAg
ICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5kZWxldGVSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyc1tpXSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9
CisKK3ZvaWQgX19zdGRjYWxsIGdsRGVsZXRlU2hhZGVyKEdMdWludCBzaGFkZXIpCit7CisgICAg
RVZFTlQoIihHTHVpbnQgc2hhZGVyID0gJWQpIiwgc2hhZGVyKTsKKworICAgIHRyeQorICAgIHsK
KyAgICAgICAgaWYgKHNoYWRlciA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIWNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmKGNvbnRleHQtPmdldFByb2dyYW0oc2hhZGVyKSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgY29udGV4dC0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRGVsZXRl
VGV4dHVyZXMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHRleHR1cmVzKQoreworICAgIEVWRU5U
KCIoR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCogdGV4dHVyZXMgPSAweCUwLjhwKSIsIG4s
IHRleHR1cmVzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKHRleHR1cmVzW2ldICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kZWxldGVUZXh0dXJlKHRleHR1cmVzW2ldKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRGVwdGhGdW5jKEdMZW51bSBmdW5j
KQoreworICAgIEVWRU5UKCIoR0xlbnVtIGZ1bmMgPSAweCVYKSIsIGZ1bmMpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBzd2l0Y2ggKGZ1bmMpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNl
IEdMX05FVkVSOgorICAgICAgICAgIGNhc2UgR0xfQUxXQVlTOgorICAgICAgICAgIGNhc2UgR0xf
TEVTUzoKKyAgICAgICAgICBjYXNlIEdMX0xFUVVBTDoKKyAgICAgICAgICBjYXNlIEdMX0VRVUFM
OgorICAgICAgICAgIGNhc2UgR0xfR1JFQVRFUjoKKyAgICAgICAgICBjYXNlIEdMX0dFUVVBTDoK
KyAgICAgICAgICBjYXNlIEdMX05PVEVRVUFMOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVN
KTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5v
bkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnNldERlcHRoRnVuYyhmdW5jKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEZXB0aE1h
c2soR0xib29sZWFuIGZsYWcpCit7CisgICAgRVZFTlQoIihHTGJvb2xlYW4gZmxhZyA9ICVkKSIs
IGZsYWcpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXREZXB0aE1hc2soZmxhZyAhPSBHTF9GQUxTRSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3Zv
aWQgX19zdGRjYWxsIGdsRGVwdGhSYW5nZWYoR0xjbGFtcGYgek5lYXIsIEdMY2xhbXBmIHpGYXIp
Cit7CisgICAgRVZFTlQoIihHTGNsYW1wZiB6TmVhciA9ICVmLCBHTGNsYW1wZiB6RmFyID0gJWYp
Iiwgek5lYXIsIHpGYXIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXREZXB0aFJhbmdlKHpOZWFyLCB6
RmFyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAg
eworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30K
Kwordm9pZCBfX3N0ZGNhbGwgZ2xEZXRhY2hTaGFkZXIoR0x1aW50IHByb2dyYW0sIEdMdWludCBz
aGFkZXIpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTHVpbnQgc2hhZGVy
ID0gJWQpIiwgcHJvZ3JhbSwgc2hhZGVyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBp
ZiAoY29udGV4dCkKKyAgICAgICAgeworCisgICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3Jh
bU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgICAgICBnbDo6
U2hhZGVyICpzaGFkZXJPYmplY3QgPSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGdsOjpTaGFkZXIgKnNoYWRlckJ5UHJvZ3JhbUhhbmRsZTsKKyAgICAg
ICAgICAgICAgICBzaGFkZXJCeVByb2dyYW1IYW5kbGUgPSBjb250ZXh0LT5nZXRTaGFkZXIocHJv
Z3JhbSk7CisgICAgICAgICAgICAgICAgaWYgKCFzaGFkZXJCeVByb2dyYW1IYW5kbGUpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmICghc2hhZGVyT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtQnlTaGFkZXJIYW5kbGUgPSBjb250ZXh0LT5nZXRQ
cm9ncmFtKHNoYWRlcik7CisgICAgICAgICAgICAgICAgaWYgKCFwcm9ncmFtQnlTaGFkZXJIYW5k
bGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+ZGV0YWNoU2hhZGVyKHNo
YWRlck9iamVjdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
RGlzYWJsZShHTGVudW0gY2FwKQoreworICAgIEVWRU5UKCIoR0xlbnVtIGNhcCA9IDB4JVgpIiwg
Y2FwKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgc3dpdGNoIChjYXApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
IGNhc2UgR0xfQ1VMTF9GQUNFOiAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRDdWxsRmFjZShm
YWxzZSk7ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9QT0xZR09O
X09GRlNFVF9GSUxMOiAgICAgIGNvbnRleHQtPnNldFBvbHlnb25PZmZzZXRGaWxsKGZhbHNlKTsg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFH
RTogY29udGV4dC0+c2V0U2FtcGxlQWxwaGFUb0NvdmVyYWdlKGZhbHNlKTsgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFOiAgICAgICAgICBjb250ZXh0LT5zZXRT
YW1wbGVDb3ZlcmFnZShmYWxzZSk7ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBH
TF9TQ0lTU09SX1RFU1Q6ICAgICAgICAgICAgIGNvbnRleHQtPnNldFNjaXNzb3JUZXN0KGZhbHNl
KTsgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfVEVTVDog
ICAgICAgICAgICAgY29udGV4dC0+c2V0U3RlbmNpbFRlc3QoZmFsc2UpOyAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfVEVTVDogICAgICAgICAgICAgICBjb250
ZXh0LT5zZXREZXB0aFRlc3QoZmFsc2UpOyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgY2FzZSBHTF9CTEVORDogICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEJsZW5kKGZh
bHNlKTsgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0RJVEhF
UjogICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RGl0aGVyKGZhbHNlKTsgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2Fs
bCBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpCit7CisgICAgRVZFTlQo
IihHTHVpbnQgaW5kZXggPSAlZCkiLCBpbmRleCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAg
IGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKwor
ICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+c2V0
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgsIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEcmF3
QXJyYXlzKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkKK3sKKyAgICBF
VkVOVCgiKEdMZW51bSBtb2RlID0gMHglWCwgR0xpbnQgZmlyc3QgPSAlZCwgR0xzaXplaSBjb3Vu
dCA9ICVkKSIsIG1vZGUsIGZpcnN0LCBjb3VudCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAg
IGlmIChjb3VudCA8IDAgfHwgZmlyc3QgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBp
ZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+ZHJhd0FycmF5cyht
b2RlLCBmaXJzdCwgY291bnQsIDApOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbERyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRShHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgcHJp
bWNvdW50KQoreworICAgIEVWRU5UKCIoR0xlbnVtIG1vZGUgPSAweCVYLCBHTGludCBmaXJzdCA9
ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMc2l6ZWkgcHJpbWNvdW50ID0gJWQpIiwgbW9kZSwg
Zmlyc3QsIGNvdW50LCBwcmltY291bnQpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAo
Y291bnQgPCAwIHx8IGZpcnN0IDwgMCB8fCBwcmltY291bnQgPCAwKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHByaW1jb3VudCA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgICAg
IGlmIChjb250ZXh0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRy
YXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lk
IF9fc3RkY2FsbCBnbERyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xl
bnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogaW5kaWNlcykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSBt
b2RlID0gMHglWCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9IDB4JVgsIGNvbnN0
IEdMdm9pZCogaW5kaWNlcyA9IDB4JTAuOHApIiwKKyAgICAgICAgICBtb2RlLCBjb3VudCwgdHlw
ZSwgaW5kaWNlcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA8IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6
CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0czMyYml0SW5kaWNlcygpKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX0VOVU0pOyAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywg
MCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisK
K3ZvaWQgX19zdGRjYWxsIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0xlbnVtIG1vZGUs
IEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIEdMc2l6
ZWkgcHJpbWNvdW50KQoreworICAgIEVWRU5UKCIoR0xlbnVtIG1vZGUgPSAweCVYLCBHTHNpemVp
IGNvdW50ID0gJWQsIEdMZW51bSB0eXBlID0gMHglWCwgY29uc3QgR0x2b2lkKiBpbmRpY2VzID0g
MHglMC44cCwgR0xzaXplaSBwcmltY291bnQgPSAlZCkiLAorICAgICAgICAgIG1vZGUsIGNvdW50
LCB0eXBlLCBpbmRpY2VzLCBwcmltY291bnQpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBp
ZiAoY291bnQgPCAwIHx8IHByaW1jb3VudCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAocHJpbWNvdW50ID4gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAg
ICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAg
ICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHMzMmJpdEluZGljZXMoKSkKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX0VOVU0pOyAgICAKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxl
bWVudHMobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIHByaW1jb3VudCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisK
K3ZvaWQgX19zdGRjYWxsIGdsRW5hYmxlKEdMZW51bSBjYXApCit7CisgICAgRVZFTlQoIihHTGVu
dW0gY2FwID0gMHglWCkiLCBjYXApOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGNhcCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnNldEN1bGxGYWNlKHRydWUpOyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgR0xfUE9MWUdPTl9PRkZTRVRfRklMTDogICAgICBjb250ZXh0LT5zZXRQb2x5Z29uT2Zm
c2V0RmlsbCh0cnVlKTsgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRV9B
TFBIQV9UT19DT1ZFUkFHRTogY29udGV4dC0+c2V0U2FtcGxlQWxwaGFUb0NvdmVyYWdlKHRydWUp
OyBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TQU1QTEVfQ09WRVJBR0U6ICAgICAgICAg
IGNvbnRleHQtPnNldFNhbXBsZUNvdmVyYWdlKHRydWUpOyAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgR0xfU0NJU1NPUl9URVNUOiAgICAgICAgICAgICBjb250ZXh0LT5zZXRTY2lz
c29yVGVzdCh0cnVlKTsgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1NU
RU5DSUxfVEVTVDogICAgICAgICAgICAgY29udGV4dC0+c2V0U3RlbmNpbFRlc3QodHJ1ZSk7ICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9URVNUOiAgICAgICAg
ICAgICAgIGNvbnRleHQtPnNldERlcHRoVGVzdCh0cnVlKTsgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfQkxFTkQ6ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5z
ZXRCbGVuZCh0cnVlKTsgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IEdMX0RJVEhFUjogICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RGl0aGVyKHRydWUpOyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0x1aW50IGluZGV4KQoreworICAg
IEVWRU5UKCIoR0x1aW50IGluZGV4ID0gJWQpIiwgaW5kZXgpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
fQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnNldEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4LCB0cnVlKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwg
Z2xFbmRRdWVyeUVYVChHTGVudW0gdGFyZ2V0KQoreworICAgIEVWRU5UKCJHTGVudW0gdGFyZ2V0
ID0gMHglWCkiLCB0YXJnZXQpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKHRh
cmdldCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VY
VDogCisgICAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VY
VDoKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDogCisgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAg
ICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmVuZFF1
ZXJ5KHRhcmdldCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2Mm
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAg
ICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRmluaXNoRmVuY2VOVihHTHVpbnQgZmVuY2UpCit7
CisgICAgRVZFTlQoIihHTHVpbnQgZmVuY2UgPSAlZCkiLCBmZW5jZSk7CisKKyAgICB0cnkKKyAg
ICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpG
ZW5jZSogZmVuY2VPYmplY3QgPSBjb250ZXh0LT5nZXRGZW5jZShmZW5jZSk7CisKKyAgICAgICAg
ICAgIGlmIChmZW5jZU9iamVjdCA9PSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmZW5jZU9iamVjdC0+ZmluaXNoRmVuY2UoKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwg
Z2xGaW5pc2godm9pZCkKK3sKKyAgICBFVkVOVCgiKCkiKTsKKworICAgIHRyeQorICAgIHsKKyAg
ICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKwor
ICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+c3lu
Yyh0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0K
K30KKwordm9pZCBfX3N0ZGNhbGwgZ2xGbHVzaCh2b2lkKQoreworICAgIEVWRU5UKCIoKSIpOwor
CisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRO
b25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICBjb250ZXh0LT5zeW5jKGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xGcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHJlbmRl
cmJ1ZmZlcnRhcmdldCwgR0x1aW50IHJlbmRlcmJ1ZmZlcikKK3sKKyAgICBFVkVOVCgiKEdMZW51
bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gYXR0YWNobWVudCA9IDB4JVgsIEdMZW51bSByZW5kZXJi
dWZmZXJ0YXJnZXQgPSAweCVYLCAiCisgICAgICAgICAgIkdMdWludCByZW5kZXJidWZmZXIgPSAl
ZCkiLCB0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVy
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKCh0YXJnZXQgIT0gR0xfRlJBTUVCVUZG
RVIgJiYgdGFyZ2V0ICE9IEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUgJiYgdGFyZ2V0ICE9IEdM
X1JFQURfRlJBTUVCVUZGRVJfQU5HTEUpCisgICAgICAgICAgICB8fCAocmVuZGVyYnVmZmVydGFy
Z2V0ICE9IEdMX1JFTkRFUkJVRkZFUiAmJiByZW5kZXJidWZmZXIgIT0gMCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
fQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpG
cmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBOVUxMOworICAgICAgICAgICAgR0x1aW50IGZyYW1l
YnVmZmVySGFuZGxlID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfUkVBRF9GUkFN
RUJVRkZFUl9BTkdMRSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZl
ciA9IGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGZyYW1l
YnVmZmVySGFuZGxlID0gY29udGV4dC0+Z2V0UmVhZEZyYW1lYnVmZmVySGFuZGxlKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICAgICAg
ICAgICAgICBmcmFtZWJ1ZmZlckhhbmRsZSA9IGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZlckhh
bmRsZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWZyYW1lYnVmZmVyIHx8
IChmcmFtZWJ1ZmZlckhhbmRsZSA9PSAwICYmIHJlbmRlcmJ1ZmZlciAhPSAwKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQgPj0gR0xf
Q09MT1JfQVRUQUNITUVOVDBfRVhUICYmIGF0dGFjaG1lbnQgPD0gR0xfQ09MT1JfQVRUQUNITUVO
VDE1X0VYVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBp
bnQgY29sb3JBdHRhY2htZW50ID0gKGF0dGFjaG1lbnQgLSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9F
WFQpOworCisgICAgICAgICAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudCA+PSBjb250ZXh0LT5n
ZXRNYXhpbXVtUmVuZGVyVGFyZ2V0cygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlci0+c2V0Q29sb3JidWZmZXIoY29s
b3JBdHRhY2htZW50LCBHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dp
dGNoIChhdHRhY2htZW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNh
c2UgR0xfREVQVEhfQVRUQUNITUVOVDoKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXIt
PnNldERlcHRoYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfQVRU
QUNITUVOVDoKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXItPnNldFN0ZW5jaWxidWZm
ZXIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9
Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBH
TGludCBsZXZlbCkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0g
YXR0YWNobWVudCA9IDB4JVgsIEdMZW51bSB0ZXh0YXJnZXQgPSAweCVYLCAiCisgICAgICAgICAg
IkdMdWludCB0ZXh0dXJlID0gJWQsIEdMaW50IGxldmVsID0gJWQpIiwgdGFyZ2V0LCBhdHRhY2ht
ZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgaWYgKHRhcmdldCAhPSBHTF9GUkFNRUJVRkZFUiAmJiB0YXJnZXQgIT0gR0xfRFJBV19GUkFN
RUJVRkZFUl9BTkdMRSAmJiB0YXJnZXQgIT0gR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGF0dGFjaG1lbnQgPj0gR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUICYmIGF0dGFjaG1l
bnQgPD0gR0xfQ09MT1JfQVRUQUNITUVOVDE1X0VYVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50ID0gKGF0dGFjaG1lbnQg
LSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQpOworCisgICAgICAgICAgICAgICAgaWYgKGNvbG9y
QXR0YWNobWVudCA+PSBjb250ZXh0LT5nZXRNYXhpbXVtUmVuZGVyVGFyZ2V0cygpKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChhdHRhY2htZW50
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQVRU
QUNITUVOVDoKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0ZXh0dXJl
ID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGV4dGFyZ2V0ID0gR0xfTk9O
RTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4ID0gY29udGV4dC0+Z2V0VGV4dHVyZSh0ZXh0dXJl
KTsKKworICAgICAgICAgICAgICAgIGlmICh0ZXggPT0gTlVMTCkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHN3aXRjaCAodGV4dGFy
Z2V0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV8yRDoKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHRleC0+Z2V0VGFyZ2V0KCkgIT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpUZXh0dXJlMkQgKnRleDJkID0gc3RhdGljX2Nhc3Q8Z2w6OlRleHR1
cmUyRCAqPih0ZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleDJkLT5pc0NvbXBy
ZXNzZWQoMCkpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWDoKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9YOgorICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1k6CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWToKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9aOgorICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1o6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh0ZXgtPmdldFRhcmdldCgpICE9IEdMX1RFWFRVUkVfQ1VCRV9NQVApCisgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZUN1YmVNYXAgKnRleGN1YmUgPSBz
dGF0aWNfY2FzdDxnbDo6VGV4dHVyZUN1YmVNYXAgKj4odGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0ZXhjdWJlLT5pc0NvbXByZXNzZWQodGV4dGFyZ2V0LCBsZXZlbCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKGxldmVsICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2w6OkZyYW1lYnVmZmVyICpm
cmFtZWJ1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICBHTHVpbnQgZnJhbWVidWZmZXJIYW5kbGUg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xF
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyID0gY29udGV4dC0+
Z2V0UmVhZEZyYW1lYnVmZmVyKCk7CisgICAgICAgICAgICAgICAgZnJhbWVidWZmZXJIYW5kbGUg
PSBjb250ZXh0LT5nZXRSZWFkRnJhbWVidWZmZXJIYW5kbGUoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZl
ciA9IGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgICAgICAgICAgICAgIGZyYW1l
YnVmZmVySGFuZGxlID0gY29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlckhhbmRsZSA9PSAwIHx8ICFm
cmFtZWJ1ZmZlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGF0dGFjaG1lbnQgPj0gR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUICYmIGF0dGFjaG1lbnQg
PD0gR0xfQ09MT1JfQVRUQUNITUVOVDE1X0VYVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjb25zdCB1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50ID0gKGF0dGFjaG1lbnQgLSBH
TF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQpOworCisgICAgICAgICAgICAgICAgaWYgKGNvbG9yQXR0
YWNobWVudCA+PSBjb250ZXh0LT5nZXRNYXhpbXVtUmVuZGVyVGFyZ2V0cygpKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZl
ci0+c2V0Q29sb3JidWZmZXIoY29sb3JBdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHN3aXRjaCAoYXR0YWNobWVudCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1FTlQ6ICAgZnJhbWVidWZmZXItPnNldERlcHRo
YnVmZmVyKHRleHRhcmdldCwgdGV4dHVyZSk7ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBj
YXNlIEdMX1NURU5DSUxfQVRUQUNITUVOVDogZnJhbWVidWZmZXItPnNldFN0ZW5jaWxidWZmZXIo
dGV4dGFyZ2V0LCB0ZXh0dXJlKTsgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7
CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQor
Cit2b2lkIF9fc3RkY2FsbCBnbEZyb250RmFjZShHTGVudW0gbW9kZSkKK3sKKyAgICBFVkVOVCgi
KEdMZW51bSBtb2RlID0gMHglWCkiLCBtb2RlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChtb2RlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9DVzoKKyAgICAgICAg
ICBjYXNlIEdMX0NDVzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgICAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5zZXRGcm9udEZhY2UobW9kZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZW5CdWZmZXJz
KEdMc2l6ZWkgbiwgR0x1aW50KiBidWZmZXJzKQoreworICAgIEVWRU5UKCIoR0xzaXplaSBuID0g
JWQsIEdMdWludCogYnVmZmVycyA9IDB4JTAuOHApIiwgbiwgYnVmZmVycyk7CisKKyAgICB0cnkK
KyAgICB7CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYg
KGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsg
aSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJ1ZmZlcnNbaV0gPSBjb250ZXh0
LT5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZW5lcmF0ZU1p
cG1hcChHTGVudW0gdGFyZ2V0KQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgp
IiwgdGFyZ2V0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIGdsOjpUZXh0dXJlMkQgKnRleDJkID0gY29udGV4dC0+Z2V0VGV4dHVyZTJE
KCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRleDJkLT5pc0NvbXByZXNzZWQoMCkpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGlmICh0ZXgyZC0+aXNEZXB0aCgwKSkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICB0ZXgyZC0+Z2VuZXJhdGVNaXBtYXBzKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9N
QVA6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZUN1
YmVNYXAgKnRleGN1YmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ3ViZU1hcCgpOworCisgICAgICAg
ICAgICAgICAgICAgIGlmICh0ZXhjdWJlLT5pc0NvbXByZXNzZWQoR0xfVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9YLCAwKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0ZXhjdWJlLT5nZW5lcmF0ZU1p
cG1hcHMoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAg
IGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdlbkZlbmNl
c05WKEdMc2l6ZWkgbiwgR0x1aW50KiBmZW5jZXMpCit7CisgICAgRVZFTlQoIihHTHNpemVpIG4g
PSAlZCwgR0x1aW50KiBmZW5jZXMgPSAweCUwLjhwKSIsIG4sIGZlbmNlcyk7CisKKyAgICB0cnkK
KyAgICB7CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYg
KGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsg
aSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZlbmNlc1tpXSA9IGNvbnRleHQt
PmNyZWF0ZUZlbmNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2VuRnJhbWVidWZm
ZXJzKEdMc2l6ZWkgbiwgR0x1aW50KiBmcmFtZWJ1ZmZlcnMpCit7CisgICAgRVZFTlQoIihHTHNp
emVpIG4gPSAlZCwgR0x1aW50KiBmcmFtZWJ1ZmZlcnMgPSAweCUwLjhwKSIsIG4sIGZyYW1lYnVm
ZmVycyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
fQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZy
YW1lYnVmZmVyc1tpXSA9IGNvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisK
K3ZvaWQgX19zdGRjYWxsIGdsR2VuUXVlcmllc0VYVChHTHNpemVpIG4sIEdMdWludCogaWRzKQor
eworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIEdMdWludCogaWRzID0gMHglMC44cCkiLCBu
LCBpZHMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAobiA8IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAg
IH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
ZHNbaV0gPSBjb250ZXh0LT5jcmVhdGVRdWVyeSgpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2Fs
bCBnbEdlblJlbmRlcmJ1ZmZlcnMoR0xzaXplaSBuLCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMpCit7
CisgICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgR0x1aW50KiByZW5kZXJidWZmZXJzID0gMHgl
MC44cCkiLCBuLCByZW5kZXJidWZmZXJzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYg
KG4gPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVyc1tpXSA9IGNvbnRleHQtPmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0
ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdlblRleHR1cmVzKEdMc2l6
ZWkgbiwgR0x1aW50KiB0ZXh0dXJlcykKK3sKKyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBH
THVpbnQqIHRleHR1cmVzID0gIDB4JTAuOHApIiwgbiwgdGV4dHVyZXMpOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBpZiAobiA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkr
KykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlc1tpXSA9IGNvbnRleHQt
PmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRBY3RpdmVB
dHRyaWIoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSkKK3sK
KyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMdWludCBpbmRleCA9ICVkLCBHTHNp
emVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMC44cCwgIgorICAgICAgICAg
ICJHTGludCAqc2l6ZSA9IDB4JTAuOHAsIEdMZW51bSAqdHlwZSA9ICUwLjhwLCBHTGNoYXIgKm5h
bWUgPSAlMC44cCkiLAorICAgICAgICAgIHByb2dyYW0sIGluZGV4LCBidWZzaXplLCBsZW5ndGgs
IHNpemUsIHR5cGUsIG5hbWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoYnVmc2l6
ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGds
OjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7
CisgICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFBy
b2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0p
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoaW5kZXggPj0gKEdMdWludClwcm9ncmFtT2JqZWN0LT5n
ZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZUF0dHJpYnV0ZShpbmRleCwgYnVmc2l6
ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRBY3RpdmVVbmlm
b3JtKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXpl
aSogbGVuZ3RoLCBHTGludCogc2l6ZSwgR0xlbnVtKiB0eXBlLCBHTGNoYXIqIG5hbWUpCit7Cisg
ICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTHVpbnQgaW5kZXggPSAlZCwgR0xzaXpl
aSBidWZzaXplID0gJWQsICIKKyAgICAgICAgICAiR0xzaXplaSogbGVuZ3RoID0gMHglMC44cCwg
R0xpbnQqIHNpemUgPSAweCUwLjhwLCBHTGVudW0qIHR5cGUgPSAweCUwLjhwLCBHTGNoYXIqIG5h
bWUgPSAweCUwLjhwKSIsCisgICAgICAgICAgcHJvZ3JhbSwgaW5kZXgsIGJ1ZnNpemUsIGxlbmd0
aCwgc2l6ZSwgdHlwZSwgbmFtZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChidWZz
aXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0
UHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3Jh
bSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSAoR0x1aW50KXByb2dyYW1PYmplY3Qt
PmdldEFjdGl2ZVVuaWZvcm1Db3VudCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm0oaW5kZXgsIGJ1ZnNpemUs
IGxlbmd0aCwgc2l6ZSwgdHlwZSwgbmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0QXR0YWNoZWRTaGFk
ZXJzKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIG1heGNvdW50LCBHTHNpemVpKiBjb3VudCwgR0x1
aW50KiBzaGFkZXJzKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xzaXpl
aSBtYXhjb3VudCA9ICVkLCBHTHNpemVpKiBjb3VudCA9IDB4JTAuOHAsIEdMdWludCogc2hhZGVy
cyA9IDB4JTAuOHApIiwKKyAgICAgICAgICBwcm9ncmFtLCBtYXhjb3VudCwgY291bnQsIHNoYWRl
cnMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAobWF4Y291bnQgPCAwKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
Z2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0p
OworCisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlcihwcm9ncmFtKSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHByb2dyYW1PYmplY3QtPmdldEF0dGFjaGVkU2hhZGVycyhtYXhjb3VudCwg
Y291bnQsIHNoYWRlcnMpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
CisgICAgfQorfQorCitpbnQgX19zdGRjYWxsIGdsR2V0QXR0cmliTG9jYXRpb24oR0x1aW50IHBy
b2dyYW0sIGNvbnN0IEdMY2hhciogbmFtZSkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFt
ID0gJWQsIGNvbnN0IEdMY2hhciogbmFtZSA9ICVzKSIsIHByb2dyYW0sIG5hbWUpOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0
Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisKKyAgICAgICAg
ICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9n
cmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAtMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSwgLTEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBwcm9n
cmFtT2JqZWN0LT5nZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1P
YmplY3QtPmlzTGlua2VkKCkgfHwgIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgLTEpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0QXR0
cmlidXRlTG9jYXRpb24obmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZLCAtMSk7CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCit2b2lkIF9fc3RkY2FsbCBn
bEdldEJvb2xlYW52KEdMZW51bSBwbmFtZSwgR0xib29sZWFuKiBwYXJhbXMpCit7CisgICAgRVZF
TlQoIihHTGVudW0gcG5hbWUgPSAweCVYLCBHTGJvb2xlYW4qIHBhcmFtcyA9IDB4JTAuOHApIiwg
IHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIShjb250ZXh0LT5nZXRCb29sZWFudihwbmFt
ZSwgcGFyYW1zKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgR0xlbnVtIG5hdGl2
ZVR5cGU7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG51bVBhcmFtcyA9IDA7CisgICAg
ICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRRdWVyeVBhcmFtZXRlckluZm8ocG5hbWUsICZu
YXRpdmVUeXBlLCAmbnVtUGFyYW1zKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX0VOVU0pOworCisgICAgICAgICAgICAgICAgaWYgKG51bVBhcmFtcyA9
PSAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGl0IGlzIGtub3duIHRoYXQgdGhl
IHBuYW1lIGlzIHZhbGlkLCBidXQgdGhlcmUgYXJlIG5vIHBhcmFtZXRlcnMgdG8gcmV0dXJuCisK
KyAgICAgICAgICAgICAgICBpZiAobmF0aXZlVHlwZSA9PSBHTF9GTE9BVCkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKmZsb2F0UGFyYW1zID0gTlVMTDsK
KyAgICAgICAgICAgICAgICAgICAgZmxvYXRQYXJhbXMgPSBuZXcgR0xmbG9hdFtudW1QYXJhbXNd
OworCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgZmxvYXRQ
YXJhbXMpOworCisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgbnVtUGFyYW1zOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChmbG9hdFBhcmFtc1tpXSA9PSAwLjBmKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtc1tpXSA9IEdMX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IEdMX1RSVUU7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBkZWxldGUgW10gZmxv
YXRQYXJhbXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5h
dGl2ZVR5cGUgPT0gR0xfSU5UKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgKmludFBhcmFtcyA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGludFBhcmFt
cyA9IG5ldyBHTGludFtudW1QYXJhbXNdOworCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmdldEludGVnZXJ2KHBuYW1lLCBpbnRQYXJhbXMpOworCisgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1zOyArK2kpCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnRQYXJhbXNbaV0gPT0gMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbaV0gPSBHTF9GQUxTRTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJh
bXNbaV0gPSBHTF9UUlVFOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgZGVsZXRlIFtdIGludFBhcmFtczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisK
K3ZvaWQgX19zdGRjYWxsIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9
IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHRh
cmdldCwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNv
bnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlcjsKKworICAg
ICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNh
c2UgR0xfQVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQtPmdl
dEFycmF5QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNh
c2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVI6CisgICAgICAgICAgICAgICAgYnVmZmVyID0gY29u
dGV4dC0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgLy8gQSBudWxsIGJ1ZmZlciBtZWFucyB0aGF0ICIwIiBpcyBib3Vu
ZCB0byB0aGUgcmVxdWVzdGVkIGJ1ZmZlciB0YXJnZXQKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBH
TF9CVUZGRVJfVVNBR0U6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGJ1ZmZlci0+dXNhZ2Uo
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9CVUZGRVJf
U0laRToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gYnVmZmVyLT5zaXplKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKworR0xlbnVtIF9fc3RkY2FsbCBnbEdldEVycm9y
KHZvaWQpCit7CisgICAgRVZFTlQoIigpIik7CisKKyAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXRDb250ZXh0KCk7CisKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBjb250ZXh0LT5nZXRFcnJvcigpOworICAgIH0KKworICAgIHJldHVybiBHTF9OT19FUlJP
UjsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRGZW5jZWl2TlYoR0x1aW50IGZlbmNlLCBHTGVu
dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTHVpbnQgZmVuY2UgPSAl
ZCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQgKnBhcmFtcyA9IDB4JTAuOHApIiwgZmVuY2Us
IHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgIAorICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6RmVuY2UgKmZlbmNlT2JqZWN0ID0g
Y29udGV4dC0+Z2V0RmVuY2UoZmVuY2UpOworCisgICAgICAgICAgICBpZiAoZmVuY2VPYmplY3Qg
PT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmVu
Y2VPYmplY3QtPmdldEZlbmNlaXYocG5hbWUsIHBhcmFtcyk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0Rmxv
YXR2KEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0xlbnVt
IHBuYW1lID0gMHglWCwgR0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLCBwbmFtZSwgcGFyYW1z
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKCEoY29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCBwYXJhbXMpKSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBHTGVudW0gbmF0aXZlVHlwZTsKKyAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKKyAgICAgICAgICAgICAgICBpZiAo
IWNvbnRleHQtPmdldFF1ZXJ5UGFyYW1ldGVySW5mbyhwbmFtZSwgJm5hdGl2ZVR5cGUsICZudW1Q
YXJhbXMpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
RU5VTSk7CisKKyAgICAgICAgICAgICAgICBpZiAobnVtUGFyYW1zID09IDApCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsgLy8gaXQgaXMga25vd24gdGhhdCB0aGUgcG5hbWUgaXMgdmFsaWQs
IGJ1dCB0aGF0IHRoZXJlIGFyZSBubyBwYXJhbWV0ZXJzIHRvIHJldHVybi4KKworICAgICAgICAg
ICAgICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0JPT0wpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gKmJvb2xQYXJhbXMgPSBOVUxMOworICAgICAgICAg
ICAgICAgICAgICBib29sUGFyYW1zID0gbmV3IEdMYm9vbGVhbltudW1QYXJhbXNdOworCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCBib29sUGFyYW1zKTsK
KworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVBh
cmFtczsgKytpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYm9vbFBhcmFtc1tpXSA9PSBHTF9GQUxTRSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbXNbaV0gPSAwLjBmOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IDEuMGY7CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBkZWxldGUgW10gYm9vbFBhcmFtczsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobmF0aXZlVHlwZSA9PSBH
TF9JTlQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBHTGludCAqaW50
UGFyYW1zID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgaW50UGFyYW1zID0gbmV3IEdMaW50
W251bVBhcmFtc107CisKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcnYo
cG5hbWUsIGludFBhcmFtcyk7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gKEdMZmxvYXQpaW50UGFyYW1zW2ldOwor
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFtdIGlu
dFBhcmFtczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IGF0dGFjaG1lbnQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKK3sKKyAgICBFVkVOVCgi
KEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gYXR0YWNobWVudCA9IDB4JVgsIEdMZW51bSBw
bmFtZSA9IDB4JVgsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgICAgdGFyZ2V0
LCBhdHRhY2htZW50LCBwbmFtZSwgcGFyYW1zKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAg
ICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9G
UkFNRUJVRkZFUiAmJiB0YXJnZXQgIT0gR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSAmJiB0YXJn
ZXQgIT0gR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBOVUxMOworICAg
ICAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGlmKGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1ZmZlckhh
bmRsZSgpID09IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFJlYWRGcmFtZWJ1ZmZl
cigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKCkgPT0g
MCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50VHlwZTsKKyAgICAgICAg
ICAgIEdMdWludCBhdHRhY2htZW50SGFuZGxlOworCisgICAgICAgICAgICBpZiAoYXR0YWNobWVu
dCA+PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQgJiYgYXR0YWNobWVudCA8PSBHTF9DT0xPUl9B
VFRBQ0hNRU5UMTVfRVhUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAoYXR0YWNobWVudCAtIEdMX0NPTE9SX0FUVEFD
SE1FTlQwX0VYVCk7CisKKyAgICAgICAgICAgICAgICBpZiAoY29sb3JBdHRhY2htZW50ID49IGNv
bnRleHQtPmdldE1heGltdW1SZW5kZXJUYXJnZXRzKCkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYXR0YWNobWVudFR5cGUgPSBmcmFtZWJ1
ZmZlci0+Z2V0Q29sb3JidWZmZXJUeXBlKGNvbG9yQXR0YWNobWVudCk7CisgICAgICAgICAgICAg
ICAgYXR0YWNobWVudEhhbmRsZSA9IGZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlckhhbmRsZShj
b2xvckF0dGFjaG1lbnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoYXR0YWNobWVudCkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1FTlQ6CisgICAg
ICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRUeXBlID0gZnJhbWVidWZmZXItPmdldERlcHRoYnVm
ZmVyVHlwZSgpOworICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50SGFuZGxlID0gZnJhbWVi
dWZmZXItPmdldERlcHRoYnVmZmVySGFuZGxlKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAg
ICAgICAgICAgICAgIGF0dGFjaG1lbnRUeXBlID0gZnJhbWVidWZmZXItPmdldFN0ZW5jaWxidWZm
ZXJUeXBlKCk7CisgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRIYW5kbGUgPSBmcmFtZWJ1
ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlckhhbmRsZSgpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IEdMZW51bSBhdHRhY2htZW50T2JqZWN0VHlwZTsgICAvLyBUeXBlIGNhdGVnb3J5CisgICAgICAg
ICAgICBpZiAoYXR0YWNobWVudFR5cGUgPT0gR0xfTk9ORSB8fCBhdHRhY2htZW50VHlwZSA9PSBH
TF9SRU5ERVJCVUZGRVIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXR0YWNobWVu
dE9iamVjdFR5cGUgPSBhdHRhY2htZW50VHlwZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UgaWYgKGdsOjpJc0ludGVybmFsVGV4dHVyZVRhcmdldChhdHRhY2htZW50VHlwZSkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXR0YWNobWVudE9iamVjdFR5cGUgPSBHTF9U
RVhUVVJFOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZ
UEU6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGF0dGFjaG1lbnRPYmplY3RUeXBlOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfT0JKRUNUX05BTUU6CisgICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRPYmpl
Y3RUeXBlID09IEdMX1JFTkRFUkJVRkZFUiB8fCBhdHRhY2htZW50T2JqZWN0VHlwZSA9PSBHTF9U
RVhUVVJFKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9
IGF0dGFjaG1lbnRIYW5kbGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhU
VVJFX0xFVkVMOgorICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50T2JqZWN0VHlwZSA9PSBH
TF9URVhUVVJFKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IDA7IC8vIEZyYW1lYnVmZmVyVGV4dHVyZTJEIHdpbGwgbm90IGFsbG93IGxldmVsIHRvIGJl
IHNldCB0byBhbnl0aGluZyBlbHNlIGluIEdMIEVTIDIuMAorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFOgorICAgICAgICAgICAgICAgIGlmIChh
dHRhY2htZW50T2JqZWN0VHlwZSA9PSBHTF9URVhUVVJFKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGdsOjpJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0KGF0dGFjaG1l
bnRUeXBlKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
KnBhcmFtcyA9IGF0dGFjaG1lbnRUeXBlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgKnBhcmFtcyA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9
Cit9CisKK0dMZW51bSBfX3N0ZGNhbGwgZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKHZvaWQp
Cit7CisgICAgRVZFTlQoIigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gZ2w6OmdldENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdldFJlc2V0U3RhdHVzKCk7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gR0xfTk9fRVJST1I7CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVN
T1JZOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRJbnRlZ2VydihHTGVudW0gcG5h
bWUsIEdMaW50KiBwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTGVudW0gcG5hbWUgPSAweCVYLCBH
TGludCogcGFyYW1zID0gMHglMC44cCkiLCBwbmFtZSwgcGFyYW1zKTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCEo
Y29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIHBhcmFtcykpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIEdMZW51bSBuYXRpdmVUeXBlOworICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBudW1QYXJhbXMgPSAwOworICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0UXVl
cnlQYXJhbWV0ZXJJbmZvKHBuYW1lLCAmbmF0aXZlVHlwZSwgJm51bVBhcmFtcykpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKworICAgICAg
ICAgICAgICAgIGlmIChudW1QYXJhbXMgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OyAvLyBpdCBpcyBrbm93biB0aGF0IHBuYW1lIGlzIHZhbGlkLCBidXQgdGhlcmUgYXJlIG5vIHBh
cmFtZXRlcnMgdG8gcmV0dXJuCisKKyAgICAgICAgICAgICAgICBpZiAobmF0aXZlVHlwZSA9PSBH
TF9CT09MKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
ICpib29sUGFyYW1zID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgYm9vbFBhcmFtcyA9IG5l
dyBHTGJvb2xlYW5bbnVtUGFyYW1zXTsKKworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5n
ZXRCb29sZWFudihwbmFtZSwgYm9vbFBhcmFtcyk7CisKKyAgICAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvb2xQYXJhbXNbaV0gPT0gR0xf
RkFMU0UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gMDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJh
bXNbaV0gPSAxOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlIFtdIGJvb2xQYXJhbXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfRkxPQVQpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0ICpmbG9hdFBhcmFtcyA9IE5VTEw7CisgICAgICAgICAg
ICAgICAgICAgIGZsb2F0UGFyYW1zID0gbmV3IEdMZmxvYXRbbnVtUGFyYW1zXTsKKworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIGZsb2F0UGFyYW1zKTsKKwor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVBhcmFt
czsgKytpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocG5hbWUgPT0gR0xfREVQVEhfUkFOR0UgfHwgcG5hbWUgPT0gR0xfQ09MT1JfQ0xFQVJfVkFM
VUUgfHwgcG5hbWUgPT0gR0xfREVQVEhfQ0xFQVJfVkFMVUUgfHwgcG5hbWUgPT0gR0xfQkxFTkRf
Q09MT1IpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zW2ldID0gKEdMaW50KSgoKEdMZmxvYXQpKDB4RkZGRkZGRkYpICogZmxvYXRQ
YXJhbXNbaV0gLSAxLjBmKSAvIDIuMGYpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtc1tpXSA9IChHTGludCkoZmxvYXRQYXJhbXNbaV0gPiAwLjBmID8gZmxvb3IoZmxvYXRQYXJh
bXNbaV0gKyAwLjUpIDogY2VpbChmbG9hdFBhcmFtc1tpXSAtIDAuNSkpOworICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIFtdIGZsb2F0UGFyYW1zOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRQcm9ncmFt
aXYoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKK3sKKyAgICBF
VkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMZW51bSBwbmFtZSA9ICVkLCBHTGludCogcGFy
YW1zID0gMHglMC44cCkiLCBwcm9ncmFtLCBwbmFtZSwgcGFyYW1zKTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlBy
b2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisg
ICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgY2FzZSBHTF9ERUxFVEVfU1RBVFVTOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSBwcm9n
cmFtT2JqZWN0LT5pc0ZsYWdnZWRGb3JEZWxldGlvbigpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9MSU5LX1NUQVRVUzoKKyAgICAgICAgICAgICAgICAq
cGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgIGNhc2UgR0xfVkFMSURBVEVfU1RBVFVTOgorICAgICAgICAgICAg
ICAgICpwYXJhbXMgPSBwcm9ncmFtT2JqZWN0LT5pc1ZhbGlkYXRlZCgpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9JTkZPX0xPR19MRU5HVEg6CisgICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdldEluZm9Mb2dMZW5ndGgoKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNhc2UgR0xfQVRUQUNIRURf
U0hBREVSUzoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+Z2V0QXR0
YWNoZWRTaGFkZXJzQ291bnQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgIGNhc2UgR0xfQUNUSVZFX0FUVFJJQlVURVM6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9
IHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xF
TkdUSDoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZl
QXR0cmlidXRlTWF4TGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICBjYXNlIEdMX0FDVElWRV9VTklGT1JNUzoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0g
cHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlVW5pZm9ybUNvdW50KCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICBjYXNlIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEg6
CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZv
cm1NYXhMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgIGNh
c2UgR0xfUFJPR1JBTV9CSU5BUllfTEVOR1RIX09FUzoKKyAgICAgICAgICAgICAgICAqcGFyYW1z
ID0gcHJvZ3JhbU9iamVjdC0+Z2V0UHJvZ3JhbUJpbmFyeUxlbmd0aCgpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxs
IGdsR2V0UHJvZ3JhbUluZm9Mb2coR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmc2l6ZSwgR0xz
aXplaSogbGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJv
Z3JhbSA9ICVkLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gMHglMC44
cCwgR0xjaGFyKiBpbmZvbG9nID0gMHglMC44cCkiLAorICAgICAgICAgIHByb2dyYW0sIGJ1ZnNp
emUsIGxlbmd0aCwgaW5mb2xvZyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChidWZz
aXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0
UHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHByb2dyYW1PYmplY3QtPmdldElu
Zm9Mb2coYnVmc2l6ZSwgbGVuZ3RoLCBpbmZvbG9nKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRRdWVyeWl2
RVhUKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBF
VkVOVCgiR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50ICpw
YXJhbXMgPSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdM
X0NVUlJFTlRfUVVFUllfRVhUOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBh
cmFtc1swXSA9IGNvbnRleHQtPmdldEFjdGl2ZVF1ZXJ5KHRhcmdldCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
R2V0UXVlcnlPYmplY3R1aXZFWFQoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFy
YW1zKQoreworICAgIEVWRU5UKCIoR0x1aW50IGlkID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4JVgs
IEdMdWludCAqcGFyYW1zID0gMHglMC44cCkiLCBpZCwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICBj
YXNlIEdMX1FVRVJZX1JFU1VMVF9FWFQ6CisgICAgICAgICAgY2FzZSBHTF9RVUVSWV9SRVNVTFRf
QVZBSUxBQkxFX0VYVDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0K
KyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsK
KworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlF1ZXJ5
ICpxdWVyeU9iamVjdCA9IGNvbnRleHQtPmdldFF1ZXJ5KGlkLCBmYWxzZSwgR0xfTk9ORSk7CisK
KyAgICAgICAgICAgIGlmICghcXVlcnlPYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRBY3RpdmVRdWVyeShxdWVyeU9iamVj
dC0+Z2V0VHlwZSgpKSA9PSBpZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgc3dpdGNoKHBuYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNl
IEdMX1FVRVJZX1JFU1VMVF9FWFQ6CisgICAgICAgICAgICAgICAgcGFyYW1zWzBdID0gcXVlcnlP
YmplY3QtPmdldFJlc3VsdCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhUOgorICAgICAgICAgICAgICAgIHBh
cmFtc1swXSA9IHF1ZXJ5T2JqZWN0LT5pc1Jlc3VsdEF2YWlsYWJsZSgpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VS
VChmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQorewor
ICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdM
aW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh0YXJnZXQgIT0gR0xfUkVOREVSQlVGRkVSKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlckhhbmRsZSgpID09IDAp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpSZW5kZXJi
dWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlcihjb250ZXh0LT5n
ZXRSZW5kZXJidWZmZXJIYW5kbGUoKSk7CisKKyAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1dJRFRIOiAg
ICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0V2lkdGgoKTsgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0hFSUdIVDogICAgICAgICAg
KnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0SGVpZ2h0KCk7ICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDogKnBhcmFtcyA9
IHJlbmRlcmJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgR0xfUkVOREVSQlVGRkVSX1JFRF9TSVpFOiAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1
ZmZlci0+Z2V0UmVkU2l6ZSgpOyAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xf
UkVOREVSQlVGRkVSX0dSRUVOX1NJWkU6ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0
R3JlZW5TaXplKCk7ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVG
RkVSX0JMVUVfU0laRTogICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0Qmx1ZVNpemUo
KTsgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0FMUEhB
X1NJWkU6ICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0QWxwaGFTaXplKCk7ICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6ICAg
ICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0RGVwdGhTaXplKCk7ICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRTogICAgKnBhcmFt
cyA9IHJlbmRlcmJ1ZmZlci0+Z2V0U3RlbmNpbFNpemUoKTsgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1NBTVBMRVNfQU5HTEU6CisgICAgICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSAhPSAwKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0U2Ft
cGxlcygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRTaGFkZXJpdihH
THVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCit7CisgICAgRVZFTlQo
IihHTHVpbnQgc2hhZGVyID0gJWQsIEdMZW51bSBwbmFtZSA9ICVkLCBHTGludCogcGFyYW1zID0g
MHglMC44cCkiLCBzaGFkZXIsIHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAg
ICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisg
ICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6U2hhZGVyICpz
aGFkZXJPYmplY3QgPSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKworICAgICAgICAgICAg
aWYgKCFzaGFkZXJPYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9T
SEFERVJfVFlQRToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyT2JqZWN0LT5nZXRU
eXBlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBjYXNlIEdMX0RF
TEVURV9TVEFUVVM6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHNoYWRlck9iamVjdC0+aXNG
bGFnZ2VkRm9yRGVsZXRpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgIGNhc2UgR0xfQ09NUElMRV9TVEFUVVM6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHNo
YWRlck9iamVjdC0+aXNDb21waWxlZCgpID8gR0xfVFJVRSA6IEdMX0ZBTFNFOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9JTkZPX0xPR19MRU5HVEg6Cisg
ICAgICAgICAgICAgICAgKnBhcmFtcyA9IHNoYWRlck9iamVjdC0+Z2V0SW5mb0xvZ0xlbmd0aCgp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TSEFERVJf
U09VUkNFX0xFTkdUSDoKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gc2hhZGVyT2JqZWN0LT5n
ZXRTb3VyY2VMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
IGNhc2UgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRToKKyAgICAgICAg
ICAgICAgICAqcGFyYW1zID0gc2hhZGVyT2JqZWN0LT5nZXRUcmFuc2xhdGVkU291cmNlTGVuZ3Ro
KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAg
eworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30K
Kwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRTaGFkZXJJbmZvTG9nKEdMdWludCBzaGFkZXIsIEdMc2l6
ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpCit7CisgICAgRVZF
TlQoIihHTHVpbnQgc2hhZGVyID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBs
ZW5ndGggPSAweCUwLjhwLCBHTGNoYXIqIGluZm9sb2cgPSAweCUwLjhwKSIsCisgICAgICAgICAg
c2hhZGVyLCBidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpOworCisgICAgdHJ5CisgICAgeworICAg
ICAgICBpZiAoYnVmc2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6U2hhZGVyICpzaGFkZXJPYmplY3QgPSBj
b250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKworICAgICAgICAgICAgaWYgKCFzaGFkZXJPYmpl
Y3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hhZGVyT2JqZWN0
LT5nZXRJbmZvTG9nKGJ1ZnNpemUsIGxlbmd0aCwgaW5mb2xvZyk7CisgICAgICAgIH0KKyAgICB9
CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0
U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdMZW51bSBzaGFkZXJ0eXBlLCBHTGVudW0gcHJlY2lzaW9u
dHlwZSwgR0xpbnQqIHJhbmdlLCBHTGludCogcHJlY2lzaW9uKQoreworICAgIEVWRU5UKCIoR0xl
bnVtIHNoYWRlcnR5cGUgPSAweCVYLCBHTGVudW0gcHJlY2lzaW9udHlwZSA9IDB4JVgsIEdMaW50
KiByYW5nZSA9IDB4JTAuOHAsIEdMaW50KiBwcmVjaXNpb24gPSAweCUwLjhwKSIsCisgICAgICAg
ICAgc2hhZGVydHlwZSwgcHJlY2lzaW9udHlwZSwgcmFuZ2UsIHByZWNpc2lvbik7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoc2hhZGVydHlwZSkKKyAgICAgICAgeworICAgICAg
ICAgIGNhc2UgR0xfVkVSVEVYX1NIQURFUjoKKyAgICAgICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NI
QURFUjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAg
ICBzd2l0Y2ggKHByZWNpc2lvbnR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0xP
V19GTE9BVDoKKyAgICAgICAgICBjYXNlIEdMX01FRElVTV9GTE9BVDoKKyAgICAgICAgICBjYXNl
IEdMX0hJR0hfRkxPQVQ6CisgICAgICAgICAgICAvLyBBc3N1bWUgSUVFRSA3NTQgcHJlY2lzaW9u
CisgICAgICAgICAgICByYW5nZVswXSA9IDEyNzsKKyAgICAgICAgICAgIHJhbmdlWzFdID0gMTI3
OworICAgICAgICAgICAgKnByZWNpc2lvbiA9IDIzOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgY2FzZSBHTF9MT1dfSU5UOgorICAgICAgICAgIGNhc2UgR0xfTUVESVVNX0lOVDoKKyAg
ICAgICAgICBjYXNlIEdMX0hJR0hfSU5UOgorICAgICAgICAgICAgLy8gU29tZSAobW9zdCkgaGFy
ZHdhcmUgb25seSBzdXBwb3J0cyBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IG51bWJl
cnMsCisgICAgICAgICAgICAvLyB3aGljaCBjYW4gYWNjdXJhdGVseSByZXByZXNlbnQgaW50ZWdl
cnMgdXAgdG8gKy8tMTY3NzcyMTYKKyAgICAgICAgICAgIHJhbmdlWzBdID0gMjQ7CisgICAgICAg
ICAgICByYW5nZVsxXSA9IDI0OworICAgICAgICAgICAgKnByZWNpc2lvbiA9IDA7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldFNoYWRlclNvdXJjZShHTHVp
bnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBzb3Vy
Y2UpCit7CisgICAgRVZFTlQoIihHTHVpbnQgc2hhZGVyID0gJWQsIEdMc2l6ZWkgYnVmc2l6ZSA9
ICVkLCBHTHNpemVpKiBsZW5ndGggPSAweCUwLjhwLCBHTGNoYXIqIHNvdXJjZSA9IDB4JTAuOHAp
IiwKKyAgICAgICAgICBzaGFkZXIsIGJ1ZnNpemUsIGxlbmd0aCwgc291cmNlKTsKKworICAgIHRy
eQorICAgIHsKKyAgICAgICAgaWYgKGJ1ZnNpemUgPCAwKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlNoYWRlciAqc2hh
ZGVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U2hhZGVyKHNoYWRlcik7CisKKyAgICAgICAgICAgIGlm
ICghc2hhZGVyT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBzaGFkZXJPYmplY3QtPmdldFNvdXJjZShidWZzaXplLCBsZW5ndGgsIHNvdXJjZSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKEdMdWludCBzaGFkZXIs
IEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIHNvdXJjZSkKK3sKKyAg
ICBFVkVOVCgiKEdMdWludCBzaGFkZXIgPSAlZCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdMc2l6
ZWkqIGxlbmd0aCA9IDB4JTAuOHAsIEdMY2hhciogc291cmNlID0gMHglMC44cCkiLAorICAgICAg
ICAgIHNoYWRlciwgYnVmc2l6ZSwgbGVuZ3RoLCBzb3VyY2UpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBpZiAoYnVmc2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6U2hhZGVyICpzaGFkZXJPYmplY3Qg
PSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKKworICAgICAgICAgICAgaWYgKCFzaGFkZXJP
YmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNoYWRl
ck9iamVjdC0+Z2V0VHJhbnNsYXRlZFNvdXJjZShidWZzaXplLCBsZW5ndGgsIHNvdXJjZSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK2NvbnN0
IEdMdWJ5dGUqIF9fc3RkY2FsbCBnbEdldFN0cmluZyhHTGVudW0gbmFtZSkKK3sKKyAgICBFVkVO
VCgiKEdMZW51bSBuYW1lID0gMHglWCkiLCBuYW1lKTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBzd2l0Y2ggKG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1ZFTkRPUjoK
KyAgICAgICAgICAgIHJldHVybiAoR0x1Ynl0ZSopIkdvb2dsZSBJbmMuIjsKKyAgICAgICAgICBj
YXNlIEdMX1JFTkRFUkVSOgorICAgICAgICAgICAgcmV0dXJuIChHTHVieXRlKikoKGNvbnRleHQg
IT0gTlVMTCkgPyBjb250ZXh0LT5nZXRSZW5kZXJlclN0cmluZygpIDogIkFOR0xFIik7CisgICAg
ICAgICAgY2FzZSBHTF9WRVJTSU9OOgorICAgICAgICAgICAgcmV0dXJuIChHTHVieXRlKikiT3Bl
bkdMIEVTIDIuMCAoQU5HTEUgIiBWRVJTSU9OX1NUUklORyAiKSI7CisgICAgICAgICAgY2FzZSBH
TF9TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT046CisgICAgICAgICAgICByZXR1cm4gKEdMdWJ5dGUq
KSJPcGVuR0wgRVMgR0xTTCBFUyAxLjAwIChBTkdMRSAiIFZFUlNJT05fU1RSSU5HICIpIjsKKyAg
ICAgICAgICBjYXNlIEdMX0VYVEVOU0lPTlM6CisgICAgICAgICAgICByZXR1cm4gKEdMdWJ5dGUq
KSgoY29udGV4dCAhPSBOVUxMKSA/IGNvbnRleHQtPmdldEV4dGVuc2lvblN0cmluZygpIDogIiIp
OworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfRU5VTSwgKEdMdWJ5dGUqKU5VTEwpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSwgKEdMdWJ5dGUqKU5VTEwpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwg
Z2xHZXRUZXhQYXJhbWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQq
IHBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5h
bWUgPSAweCVYLCBHTGZsb2F0KiBwYXJhbXMgPSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUsIHBh
cmFtcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlOworCisgICAgICAgICAgICBzd2l0
Y2ggKHRhcmdldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJF
XzJEOgorICAgICAgICAgICAgICAgIHRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlMkQoKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NV
QkVfTUFQOgorICAgICAgICAgICAgICAgIHRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ3Vi
ZU1hcCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6CisgICAgICAgICAgICAgICAg
KnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldE1hZ0ZpbHRlcigpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjoKKyAg
ICAgICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0TWluRmlsdGVyKCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9X
UkFQX1M6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldFdy
YXBTKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9XUkFQX1Q6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUt
PmdldFdyYXBUKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUX0VYVDoKKyAgICAgICAgICAgICAgICAqcGFyYW1z
ID0gKEdMZmxvYXQpKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkgPyBHTF9UUlVFIDogR0xfRkFMU0Up
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
VVNBR0VfQU5HTEU6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUt
PmdldFVzYWdlKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6CisgICAgICAgICAgICAgICAgaWYgKCFjb250
ZXh0LT5zdXBwb3J0c1RleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5KCkpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0
ZXh0dXJlLT5nZXRNYXhBbmlzb3Ryb3B5KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldFRleFBhcmFtZXRl
cml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKK3sKKyAgICBF
VkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCog
cGFyYW1zID0gMHglMC44cCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6
VGV4dHVyZSAqdGV4dHVyZTsKKworICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAg
ICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUDoKKyAgICAgICAgICAg
ICAgICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9NQUdfRklMVEVSOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5n
ZXRNYWdGaWx0ZXIoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX01JTl9GSUxURVI6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHRleHR1
cmUtPmdldE1pbkZpbHRlcigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0
dXJlLT5nZXRXcmFwUygpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfV1JBUF9UOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJl
LT5nZXRXcmFwVCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVF9FWFQ6CisgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IHRleHR1cmUtPmlzSW1tdXRhYmxlKCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FHRV9BTkdM
RToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+Z2V0VXNhZ2UoKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9BTklT
T1RST1BZX0VYVDoKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcHkoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGludCl0ZXh0dXJlLT5nZXRNYXhBbmlzb3Ry
b3B5KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAg
ICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQor
fQorCit2b2lkIF9fc3RkY2FsbCBnbEdldG5Vbmlmb3JtZnZFWFQoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMZmxvYXQqIHBhcmFtcykKK3sKKyAgICBF
VkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkg
YnVmU2l6ZSA9ICVkLCBHTGZsb2F0KiBwYXJhbXMgPSAweCUwLjhwKSIsCisgICAgICAgICAgcHJv
Z3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAg
ICAgIGlmIChidWZTaXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwcm9ncmFtID09IDApCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3Qg
PSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgICAgICBpZiAoIXByb2dy
YW1PYmplY3QgfHwgIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmlu
YXJ5ID0gcHJvZ3JhbU9iamVjdC0+Z2V0UHJvZ3JhbUJpbmFyeSgpOworICAgICAgICAgICAgaWYg
KCFwcm9ncmFtQmluYXJ5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoIXByb2dyYW1CaW5hcnktPmdldFVuaWZvcm1mdihsb2NhdGlvbiwgJmJ1ZlNpemUs
IHBhcmFtcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0
VW5pZm9ybWZ2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCogcGFyYW1z
KQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAl
ZCwgR0xmbG9hdCogcGFyYW1zID0gMHglMC44cCkiLCBwcm9ncmFtLCBsb2NhdGlvbiwgcGFyYW1z
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHByb2dyYW0gPT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFBy
b2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCB8fCAhcHJv
Z3JhbU9iamVjdC0+aXNMaW5rZWQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBwcm9ncmFtT2Jq
ZWN0LT5nZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3Jh
bUJpbmFyeS0+Z2V0VW5pZm9ybWZ2KGxvY2F0aW9uLCBOVUxMLCBwYXJhbXMpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEdldG5Vbmlmb3JtaXZFWFQoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMaW50KiBwYXJhbXMp
Cit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVk
LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwgCisgICAg
ICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAg
ICB7CisgICAgICAgIGlmIChidWZTaXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGds
OjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwcm9ncmFtID09IDApCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dy
YW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgICAgICBp
ZiAoIXByb2dyYW1PYmplY3QgfHwgIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpw
cm9ncmFtQmluYXJ5ID0gcHJvZ3JhbU9iamVjdC0+Z2V0UHJvZ3JhbUJpbmFyeSgpOworICAgICAg
ICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnktPmdldFVuaWZvcm1pdihsb2NhdGlvbiwg
JmJ1ZlNpemUsIHBhcmFtcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRj
YWxsIGdsR2V0VW5pZm9ybWl2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQq
IHBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMaW50KiBwYXJhbXMgPSAweCUwLjhwKSIsIHByb2dyYW0sIGxvY2F0aW9uLCBw
YXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAocHJvZ3JhbSA9PSAwKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+
Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0IHx8
ICFwcm9ncmFtT2JqZWN0LT5pc0xpbmtlZCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IHByb2dy
YW1PYmplY3QtPmdldFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJp
bmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFw
cm9ncmFtQmluYXJ5LT5nZXRVbmlmb3JtaXYobG9jYXRpb24sIE5VTEwsIHBhcmFtcykpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKKyAgICB9Cit9CisKK2ludCBfX3N0ZGNhbGwgZ2xHZXRVbmlmb3JtTG9jYXRpb24o
R0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciogbmFtZSkKK3sKKyAgICBFVkVOVCgiKEdMdWlu
dCBwcm9ncmFtID0gJWQsIGNvbnN0IEdMY2hhciogbmFtZSA9IDB4JTAuOHApIiwgcHJvZ3JhbSwg
bmFtZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
Z2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKHN0cnN0cihuYW1lLCAiZ2xf
IikgPT0gbmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9n
cmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKworICAg
ICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAtMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSwgLTEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBwcm9ncmFtT2JqZWN0LT5n
ZXRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QtPmlzTGlu
a2VkKCkgfHwgIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgLTEpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcHJvZ3JhbUJpbmFyeS0+Z2V0VW5pZm9ybUxvY2F0aW9u
KG5hbWUpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAg
ICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgLTEpOworICAg
IH0KKworICAgIHJldHVybiAtMTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRWZXJ0ZXhBdHRy
aWJmdihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKQoreworICAg
IEVWRU5UKCIoR0x1aW50IGluZGV4ID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMZmxvYXQq
IHBhcmFtcyA9IDB4JTAuOHApIiwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
aW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWJTdGF0ZSA9
IGNvbnRleHQtPmdldFZlcnRleEF0dHJpYlN0YXRlKGluZGV4KTsKKworICAgICAgICAgICAgc3dp
dGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhf
QVRUUklCX0FSUkFZX0VOQUJMRUQ6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0
KShhdHRyaWJTdGF0ZS5tQXJyYXlFbmFibGVkID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FS
UkFZX1NJWkU6CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KWF0dHJpYlN0YXRl
Lm1TaXplOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1ZF
UlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xm
bG9hdClhdHRyaWJTdGF0ZS5tU3RyaWRlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRToKKyAgICAgICAgICAgICAg
ICAqcGFyYW1zID0gKEdMZmxvYXQpYXR0cmliU3RhdGUubVR5cGU7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJ
WkVEOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCkoYXR0cmliU3RhdGUubU5v
cm1hbGl6ZWQgPyBHTF9UUlVFIDogR0xfRkFMU0UpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkc6
CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KWF0dHJpYlN0YXRlLm1Cb3VuZEJ1
ZmZlci5pZCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdM
X0NVUlJFTlRfVkVSVEVYX0FUVFJJQjoKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IDQ7ICsraSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHBhcmFt
c1tpXSA9IGF0dHJpYlN0YXRlLm1DdXJyZW50VmFsdWVbaV07CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRS
SUJfQVJSQVlfRElWSVNPUl9BTkdMRToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxv
YXQpYXR0cmliU3RhdGUubURpdmlzb3I7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGRlZmF1bHQ6IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0K
K30KKwordm9pZCBfX3N0ZGNhbGwgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihHTHVpbnQgaW5kZXgsIEdM
ZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9
ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCogcGFyYW1zID0gMHglMC44cCkiLCBpbmRl
eCwgcG5hbWUsIHBhcmFtcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9B
VFRSSUJTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IGds
OjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYlN0YXRlID0gY29udGV4dC0+Z2V0VmVydGV4QXR0cmli
U3RhdGUoaW5kZXgpOworCisgICAgICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRDoKKyAg
ICAgICAgICAgICAgICAqcGFyYW1zID0gKGF0dHJpYlN0YXRlLm1BcnJheUVuYWJsZWQgPyBHTF9U
UlVFIDogR0xfRkFMU0UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBj
YXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRToKKyAgICAgICAgICAgICAgICAqcGFyYW1z
ID0gYXR0cmliU3RhdGUubVNpemU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREU6CisgICAgICAgICAgICAgICAg
KnBhcmFtcyA9IGF0dHJpYlN0YXRlLm1TdHJpZGU7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFOgorICAgICAgICAg
ICAgICAgICpwYXJhbXMgPSBhdHRyaWJTdGF0ZS5tVHlwZTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQ6
CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IChhdHRyaWJTdGF0ZS5tTm9ybWFsaXplZCA/IEdM
X1RSVUUgOiBHTF9GQUxTRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORzoKKyAgICAgICAgICAg
ICAgICAqcGFyYW1zID0gYXR0cmliU3RhdGUubUJvdW5kQnVmZmVyLmlkKCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklC
OgorICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgY3VycmVudFZhbHVlID0gYXR0cmli
U3RhdGUubUN1cnJlbnRWYWx1ZVtpXTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0g
KEdMaW50KShjdXJyZW50VmFsdWUgPiAwLjBmID8gZmxvb3IoY3VycmVudFZhbHVlICsgMC41Zikg
OiBjZWlsKGN1cnJlbnRWYWx1ZSAtIDAuNWYpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJB
WV9ESVZJU09SX0FOR0xFOgorICAgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xpbnQpYXR0cmli
U3RhdGUubURpdmlzb3I7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRl
ZmF1bHQ6IHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9p
ZCBfX3N0ZGNhbGwgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihHTHVpbnQgaW5kZXgsIEdMZW51
bSBwbmFtZSwgR0x2b2lkKiogcG9pbnRlcikKK3sKKyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9
ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHZvaWQqKiBwb2ludGVyID0gMHglMC44cCkiLCBp
bmRleCwgcG5hbWUsIHBvaW50ZXIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChj
b250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJU
RVhfQVRUUklCUykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
cG5hbWUgIT0gR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgKnBvaW50ZXIgPSBjb25zdF9jYXN0PEdMdm9pZCo+KGNv
bnRleHQtPmdldFZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgpKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xIaW50
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdl
dCA9IDB4JVgsIEdMZW51bSBtb2RlID0gMHglWCkiLCB0YXJnZXQsIG1vZGUpOworCisgICAgdHJ5
CisgICAgeworICAgICAgICBzd2l0Y2ggKG1vZGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNl
IEdMX0ZBU1RFU1Q6CisgICAgICAgICAgY2FzZSBHTF9OSUNFU1Q6CisgICAgICAgICAgY2FzZSBH
TF9ET05UX0NBUkU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOyAKKyAgICAgICAgfQor
CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7
CisgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9H
RU5FUkFURV9NSVBNQVBfSElOVDoKKyAgICAgICAgICAgIGlmIChjb250ZXh0KSBjb250ZXh0LT5z
ZXRHZW5lcmF0ZU1pcG1hcEhpbnQobW9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICBjYXNlIEdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlRfT0VTOgorICAgICAgICAg
ICAgaWYgKGNvbnRleHQpIGNvbnRleHQtPnNldEZyYWdtZW50U2hhZGVyRGVyaXZhdGl2ZUhpbnQo
bW9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisgICAgfQor
ICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCitHTGJvb2xlYW4gX19zdGRjYWxsIGds
SXNCdWZmZXIoR0x1aW50IGJ1ZmZlcikKK3sKKyAgICBFVkVOVCgiKEdMdWludCBidWZmZXIgPSAl
ZCkiLCBidWZmZXIpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0ICYm
IGJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyT2JqZWN0
ID0gY29udGV4dC0+Z2V0QnVmZmVyKGJ1ZmZlcik7CisKKyAgICAgICAgICAgIGlmIChidWZmZXJP
YmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1RSVUU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2Mm
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBHTF9G
QUxTRSk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX0ZBTFNFOworfQorCitHTGJvb2xlYW4gX19z
dGRjYWxsIGdsSXNFbmFibGVkKEdMZW51bSBjYXApCit7CisgICAgRVZFTlQoIihHTGVudW0gY2Fw
ID0gMHglWCkiLCBjYXApOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGNhcCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAgICAgICAgICAgIHJldHVybiBjb250
ZXh0LT5pc0N1bGxGYWNlRW5hYmxlZCgpOworICAgICAgICAgICAgICBjYXNlIEdMX1BPTFlHT05f
T0ZGU0VUX0ZJTEw6ICAgICAgcmV0dXJuIGNvbnRleHQtPmlzUG9seWdvbk9mZnNldEZpbGxFbmFi
bGVkKCk7CisgICAgICAgICAgICAgIGNhc2UgR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOiBy
ZXR1cm4gY29udGV4dC0+aXNTYW1wbGVBbHBoYVRvQ292ZXJhZ2VFbmFibGVkKCk7CisgICAgICAg
ICAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFOiAgICAgICAgICByZXR1cm4gY29udGV4dC0+
aXNTYW1wbGVDb3ZlcmFnZUVuYWJsZWQoKTsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TQ0lTU09S
X1RFU1Q6ICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5pc1NjaXNzb3JUZXN0RW5hYmxlZCgp
OworICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfVEVTVDogICAgICAgICAgICAgcmV0dXJu
IGNvbnRleHQtPmlzU3RlbmNpbFRlc3RFbmFibGVkKCk7CisgICAgICAgICAgICAgIGNhc2UgR0xf
REVQVEhfVEVTVDogICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC0+aXNEZXB0aFRlc3RFbmFi
bGVkKCk7CisgICAgICAgICAgICAgIGNhc2UgR0xfQkxFTkQ6ICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY29udGV4dC0+aXNCbGVuZEVuYWJsZWQoKTsKKyAgICAgICAgICAgICAgY2FzZSBHTF9E
SVRIRVI6ICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5pc0RpdGhlckVuYWJsZWQo
KTsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiBm
YWxzZTsKK30KKworR0xib29sZWFuIF9fc3RkY2FsbCBnbElzRmVuY2VOVihHTHVpbnQgZmVuY2Up
Cit7CisgICAgRVZFTlQoIihHTHVpbnQgZmVuY2UgPSAlZCkiLCBmZW5jZSk7CisKKyAgICB0cnkK
KyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250
ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
OjpGZW5jZSAqZmVuY2VPYmplY3QgPSBjb250ZXh0LT5nZXRGZW5jZShmZW5jZSk7CisKKyAgICAg
ICAgICAgIGlmIChmZW5jZU9iamVjdCA9PSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9GQUxTRTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIGZlbmNlT2JqZWN0LT5pc0ZlbmNlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLCBHTF9GQUxTRSk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX0ZBTFNFOworfQor
CitHTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXIp
Cit7CisgICAgRVZFTlQoIihHTHVpbnQgZnJhbWVidWZmZXIgPSAlZCkiLCBmcmFtZWJ1ZmZlcik7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQgJiYgZnJhbWVidWZmZXIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmpl
Y3QgPSBjb250ZXh0LT5nZXRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisKKyAgICAgICAgICAg
IGlmIChmcmFtZWJ1ZmZlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfVFJVRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlksIEdMX0ZBTFNFKTsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfRkFMU0U7Cit9
CisKK0dMYm9vbGVhbiBfX3N0ZGNhbGwgZ2xJc1Byb2dyYW0oR0x1aW50IHByb2dyYW0pCit7Cisg
ICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkKSIsIHByb2dyYW0pOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOworCisgICAgICAgIGlmIChjb250ZXh0ICYmIHByb2dyYW0pCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShw
cm9ncmFtKTsKKworICAgICAgICAgICAgaWYgKHByb2dyYW1PYmplY3QpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1RSVUU7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBHTF9GQUxTRSk7CisgICAgfQorCisgICAg
cmV0dXJuIEdMX0ZBTFNFOworfQorCitHTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNRdWVyeUVYVChH
THVpbnQgaWQpCit7CisgICAgRVZFTlQoIihHTHVpbnQgaWQgPSAlZCkiLCBpZCk7CisKKyAgICB0
cnkKKyAgICB7CisgICAgICAgIGlmIChpZCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gR0xfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4
dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICBnbDo6UXVlcnkgKnF1ZXJ5T2JqZWN0ID0gY29udGV4dC0+Z2V0
UXVlcnkoaWQsIGZhbHNlLCBHTF9OT05FKTsKKworICAgICAgICAgICAgaWYgKHF1ZXJ5T2JqZWN0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9UUlVFOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAg
ICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgR0xfRkFMU0Up
OworICAgIH0KKworICAgIHJldHVybiBHTF9GQUxTRTsKK30KKworR0xib29sZWFuIF9fc3RkY2Fs
bCBnbElzUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpCit7CisgICAgRVZFTlQoIihH
THVpbnQgcmVuZGVyYnVmZmVyID0gJWQpIiwgcmVuZGVyYnVmZmVyKTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQo
KTsKKworICAgICAgICBpZiAoY29udGV4dCAmJiByZW5kZXJidWZmZXIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlck9iamVjdCA9IGNvbnRleHQt
PmdldFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworCisgICAgICAgICAgICBpZiAocmVuZGVy
YnVmZmVyT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9U
UlVFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSwgR0xfRkFMU0UpOworICAgIH0KKworICAgIHJldHVybiBHTF9GQUxTRTsKK30KKworR0xib29s
ZWFuIF9fc3RkY2FsbCBnbElzU2hhZGVyKEdMdWludCBzaGFkZXIpCit7CisgICAgRVZFTlQoIihH
THVpbnQgc2hhZGVyID0gJWQpIiwgc2hhZGVyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAg
ICBpZiAoY29udGV4dCAmJiBzaGFkZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpTaGFk
ZXIgKnNoYWRlck9iamVjdCA9IGNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpOworCisgICAgICAg
ICAgICBpZiAoc2hhZGVyT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBHTF9UUlVFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSwgR0xfRkFMU0UpOworICAgIH0KKworICAgIHJldHVybiBHTF9GQUxTRTsKK30K
KworR0xib29sZWFuIF9fc3RkY2FsbCBnbElzVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKK3sKKyAg
ICBFVkVOVCgiKEdMdWludCB0ZXh0dXJlID0gJWQpIiwgdGV4dHVyZSk7CisKKyAgICB0cnkKKyAg
ICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQgJiYgdGV4dHVyZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmVPYmplY3QgPSBjb250ZXh0LT5nZXRUZXh0dXJlKHRl
eHR1cmUpOworCisgICAgICAgICAgICBpZiAodGV4dHVyZU9iamVjdCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gR0xfVFJVRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIEdMX0ZBTFNFKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gR0xfRkFMU0U7Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsTGluZVdpZHRoKEdMZmxvYXQg
d2lkdGgpCit7CisgICAgRVZFTlQoIihHTGZsb2F0IHdpZHRoID0gJWYpIiwgd2lkdGgpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBpZiAod2lkdGggPD0gMC4wZikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQor
CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7
CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQt
PnNldExpbmVXaWR0aCh3aWR0aCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsTGlua1Byb2dyYW0oR0x1aW50IHBy
b2dyYW0pCit7CisgICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICVkKSIsIHByb2dyYW0pOwor
CisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRO
b25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0o
cHJvZ3JhbSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjb250ZXh0LT5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwg
Z2xQaXhlbFN0b3JlaShHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQoreworICAgIEVWRU5UKCIo
R0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQgcGFyYW0gPSAlZCkiLCBwbmFtZSwgcGFyYW0pOwor
CisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXRO
b25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNl
IEdMX1VOUEFDS19BTElHTk1FTlQ6CisgICAgICAgICAgICAgICAgaWYgKHBhcmFtICE9IDEgJiYg
cGFyYW0gIT0gMiAmJiBwYXJhbSAhPSA0ICYmIHBhcmFtICE9IDgpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFVucGFj
a0FsaWdubWVudChwYXJhbSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgY2FzZSBHTF9QQUNLX0FMSUdOTUVOVDoKKyAgICAgICAgICAgICAgICBpZiAocGFyYW0gIT0g
MSAmJiBwYXJhbSAhPSAyICYmIHBhcmFtICE9IDQgJiYgcGFyYW0gIT0gOCkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0
UGFja0FsaWdubWVudChwYXJhbSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9QQUNLX1JFVkVSU0VfUk9XX09SREVSX0FOR0xFOgorICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnNldFBhY2tSZXZlcnNlUm93T3JkZXIocGFyYW0gIT0gMCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19z
dGRjYWxsIGdsUG9seWdvbk9mZnNldChHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cykKK3sK
KyAgICBFVkVOVCgiKEdMZmxvYXQgZmFjdG9yID0gJWYsIEdMZmxvYXQgdW5pdHMgPSAlZikiLCBm
YWN0b3IsIHVuaXRzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkK
KyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+c2V0UG9seWdvbk9mZnNldFBhcmFtcyhm
YWN0b3IsIHVuaXRzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxv
YyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOwor
ICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xSZWFkblBpeGVsc0VYVChHTGludCB4LCBHTGlu
dCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpkYXRhKQoreworICAgIEVW
RU5UKCIoR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xz
aXplaSBoZWlnaHQgPSAlZCwgIgorICAgICAgICAgICJHTGVudW0gZm9ybWF0ID0gMHglWCwgR0xl
bnVtIHR5cGUgPSAweCVYLCBHTHNpemVpIGJ1ZlNpemUgPSAweCVkLCBHTHZvaWQgKmRhdGEgPSAw
eCUwLjhwKSIsCisgICAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBi
dWZTaXplLCBkYXRhKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHdpZHRoIDwgMCB8
fCBoZWlnaHQgPCAwIHx8IGJ1ZlNpemUgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBp
ZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgR0xlbnVtIGN1cnJlbnRGb3JtYXQs
IGN1cnJlbnRUeXBlOworICAgIAorICAgICAgICAgICAgLy8gRmFpbHVyZSBpbiBnZXRDdXJyZW50
UmVhZEZvcm1hdFR5cGUgaW5kaWNhdGVzIHRoYXQgbm8gY29sb3IgYXR0YWNobWVudCBpcyBjdXJy
ZW50bHkgYm91bmQsCisgICAgICAgICAgICAvLyBhbmQgYXR0ZW1wdGluZyB0byByZWFkIGJhY2sg
aWYgdGhhdCdzIHRoZSBjYXNlIGlzIGFuIGVycm9yLiBUaGUgZXJyb3Igd2lsbCBiZSByZWdpc3Rl
cmVkCisgICAgICAgICAgICAvLyBieSBnZXRDdXJyZW50UmVhZEZvcm1hdC4KKyAgICAgICAgICAg
IGlmICghY29udGV4dC0+Z2V0Q3VycmVudFJlYWRGb3JtYXRUeXBlKCZjdXJyZW50Rm9ybWF0LCAm
Y3VycmVudFR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYg
KCEoY3VycmVudEZvcm1hdCA9PSBmb3JtYXQgJiYgY3VycmVudFR5cGUgPT0gdHlwZSkgJiYgIXZh
bGlkUmVhZEZvcm1hdFR5cGUoZm9ybWF0LCB0eXBlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgY29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsICZidWZTaXplLCBkYXRhKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xSZWFkUGl4
ZWxzKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZv
aWQqIHBpeGVscykKK3sKKyAgICBFVkVOVCgiKEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBH
THNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsICIKKyAgICAgICAgICAiR0xl
bnVtIGZvcm1hdCA9IDB4JVgsIEdMZW51bSB0eXBlID0gMHglWCwgR0x2b2lkKiBwaXhlbHMgPSAw
eCUwLjhwKSIsCisgICAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCAg
cGl4ZWxzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWln
aHQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgR0xlbnVtIGN1cnJlbnRGb3JtYXQsIGN1cnJlbnRUeXBlOworICAgIAor
ICAgICAgICAgICAgLy8gRmFpbHVyZSBpbiBnZXRDdXJyZW50UmVhZEZvcm1hdFR5cGUgaW5kaWNh
dGVzIHRoYXQgbm8gY29sb3IgYXR0YWNobWVudCBpcyBjdXJyZW50bHkgYm91bmQsCisgICAgICAg
ICAgICAvLyBhbmQgYXR0ZW1wdGluZyB0byByZWFkIGJhY2sgaWYgdGhhdCdzIHRoZSBjYXNlIGlz
IGFuIGVycm9yLiBUaGUgZXJyb3Igd2lsbCBiZSByZWdpc3RlcmVkCisgICAgICAgICAgICAvLyBi
eSBnZXRDdXJyZW50UmVhZEZvcm1hdC4KKyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0Q3Vy
cmVudFJlYWRGb3JtYXRUeXBlKCZjdXJyZW50Rm9ybWF0LCAmY3VycmVudFR5cGUpKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKCEoY3VycmVudEZvcm1hdCA9PSBm
b3JtYXQgJiYgY3VycmVudFR5cGUgPT0gdHlwZSkgJiYgIXZhbGlkUmVhZEZvcm1hdFR5cGUoZm9y
bWF0LCB0eXBlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Y29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIE5V
TEwsIHBpeGVscyk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2Mm
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAg
ICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsUmVsZWFzZVNoYWRlckNvbXBpbGVyKHZvaWQpCit7
CisgICAgRVZFTlQoIigpIik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpTaGFkZXI6
OnJlbGVhc2VDb21waWxlcigpOworICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0K
K30KKwordm9pZCBfX3N0ZGNhbGwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFy
Z2V0ID0gMHglWCwgR0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9
IDB4JVgsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCkiLAorICAgICAg
ICAgIHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICAgICAgeworICAgICAg
ICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghZ2w6OklzQ29sb3JSZW5kZXJhYmxlKGludGVybmFs
Zm9ybWF0KSAmJiAhZ2w6OklzRGVwdGhSZW5kZXJhYmxlKGludGVybmFsZm9ybWF0KSAmJiAhZ2w6
OklzU3RlbmNpbFJlbmRlcmFibGUoaW50ZXJuYWxmb3JtYXQpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDAgfHwgc2FtcGxlcyA8IDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAg
ICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29u
dGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAod2lkdGggPiBjb250ZXh0LT5nZXRNYXhpbXVtUmVuZGVyYnVmZmVyRGltZW5zaW9uKCkgfHwg
CisgICAgICAgICAgICAgICAgaGVpZ2h0ID4gY29udGV4dC0+Z2V0TWF4aW11bVJlbmRlcmJ1ZmZl
ckRpbWVuc2lvbigpIHx8CisgICAgICAgICAgICAgICAgc2FtcGxlcyA+IGNvbnRleHQtPmdldE1h
eFN1cHBvcnRlZFNhbXBsZXMoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBHTHVpbnQgaGFuZGxlID0gY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVySGFuZGxlKCk7Cisg
ICAgICAgICAgICBpZiAoaGFuZGxlID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6CisgICAgICAgICAgICAgIGNh
c2UgR0xfUkdCQTQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfUkdCNV9BMToKKyAgICAgICAgICAg
ICAgY2FzZSBHTF9SR0I1NjU6CisgICAgICAgICAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAg
ICAgICAgICAgIGNhc2UgR0xfUkdCQThfT0VTOgorICAgICAgICAgICAgICBjYXNlIEdMX1NURU5D
SUxfSU5ERVg4OgorICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOgor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFJlbmRlcmJ1ZmZlclN0b3JhZ2Uod2lkdGgsIGhl
aWdodCwgaW50ZXJuYWxmb3JtYXQsIHNhbXBsZXMpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xSZW5kZXJidWZm
ZXJTdG9yYWdlKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVBTkdMRSh0YXJnZXQsIDAsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKK30K
Kwordm9pZCBfX3N0ZGNhbGwgZ2xTYW1wbGVDb3ZlcmFnZShHTGNsYW1wZiB2YWx1ZSwgR0xib29s
ZWFuIGludmVydCkKK3sKKyAgICBFVkVOVCgiKEdMY2xhbXBmIHZhbHVlID0gJWYsIEdMYm9vbGVh
biBpbnZlcnQgPSAlZCkiLCB2YWx1ZSwgaW52ZXJ0KTsKKworICAgIHRyeQorICAgIHsKKyAgICAg
ICAgZ2w6OkNvbnRleHQqIGNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+c2V0U2Ft
cGxlQ292ZXJhZ2VQYXJhbXMoZ2w6OmNsYW1wMDEodmFsdWUpLCBpbnZlcnQgPT0gR0xfVFJVRSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3Zv
aWQgX19zdGRjYWxsIGdsU2V0RmVuY2VOVihHTHVpbnQgZmVuY2UsIEdMZW51bSBjb25kaXRpb24p
Cit7CisgICAgRVZFTlQoIihHTHVpbnQgZmVuY2UgPSAlZCwgR0xlbnVtIGNvbmRpdGlvbiA9IDB4
JVgpIiwgZmVuY2UsIGNvbmRpdGlvbik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChj
b25kaXRpb24gIT0gR0xfQUxMX0NPTVBMRVRFRF9OVikKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAg
ICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkZlbmNlICpmZW5jZU9i
amVjdCA9IGNvbnRleHQtPmdldEZlbmNlKGZlbmNlKTsKKworICAgICAgICAgICAgaWYgKGZlbmNl
T2JqZWN0ID09IE5VTEwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZlbmNlT2JqZWN0LT5zZXRGZW5jZShjb25kaXRpb24pOyAgICAKKyAgICAgICAgfQorICAg
IH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xT
Y2lzc29yKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQor
eworICAgIEVWRU5UKCIoR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGgg
PSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCkiLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKworICAg
IHRyeQorICAgIHsKKyAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQqIGNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
Y29udGV4dC0+c2V0U2Npc3NvclBhcmFtcyh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNh
bGwgZ2xTaGFkZXJCaW5hcnkoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHNoYWRlcnMsIEdMZW51
bSBiaW5hcnlmb3JtYXQsIGNvbnN0IEdMdm9pZCogYmluYXJ5LCBHTHNpemVpIGxlbmd0aCkKK3sK
KyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQqIHNoYWRlcnMgPSAweCUw
LjhwLCBHTGVudW0gYmluYXJ5Zm9ybWF0ID0gMHglWCwgIgorICAgICAgICAgICJjb25zdCBHTHZv
aWQqIGJpbmFyeSA9IDB4JTAuOHAsIEdMc2l6ZWkgbGVuZ3RoID0gJWQpIiwKKyAgICAgICAgICBu
LCBzaGFkZXJzLCBiaW5hcnlmb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKTsKKworICAgIHRyeQorICAg
IHsKKyAgICAgICAgLy8gTm8gYmluYXJ5IHNoYWRlciBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICB9CisgICAgY2F0
Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsU2hhZGVyU291cmNl
KEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMY2hhcioqIHN0cmluZywgY29u
c3QgR0xpbnQqIGxlbmd0aCkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBzaGFkZXIgPSAlZCwgR0xz
aXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGNoYXIqKiBzdHJpbmcgPSAweCUwLjhwLCBjb25zdCBH
TGludCogbGVuZ3RoID0gMHglMC44cCkiLAorICAgICAgICAgIHNoYWRlciwgY291bnQsIHN0cmlu
ZywgbGVuZ3RoKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50IDwgMCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsK
KyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGdsOjpTaGFkZXIgKnNoYWRlck9iamVjdCA9IGNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIp
OworCisgICAgICAgICAgICBpZiAoIXNoYWRlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0UHJvZ3JhbShzaGFkZXIpKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBzaGFkZXJPYmplY3QtPnNldFNvdXJjZShjb3VudCwgc3RyaW5nLCBsZW5ndGgpOworICAg
ICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9f
c3RkY2FsbCBnbFN0ZW5jaWxGdW5jKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNr
KQoreworICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZShHTF9GUk9OVF9BTkRfQkFDSywgZnVuYywg
cmVmLCBtYXNrKTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKEdM
ZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKK3sKKyAgICBF
VkVOVCgiKEdMZW51bSBmYWNlID0gMHglWCwgR0xlbnVtIGZ1bmMgPSAweCVYLCBHTGludCByZWYg
PSAlZCwgR0x1aW50IG1hc2sgPSAlZCkiLCBmYWNlLCBmdW5jLCByZWYsIG1hc2spOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKGZhY2UpCisgICAgICAgIHsKKyAgICAgICAgICBj
YXNlIEdMX0ZST05UOgorICAgICAgICAgIGNhc2UgR0xfQkFDSzoKKyAgICAgICAgICBjYXNlIEdM
X0ZST05UX0FORF9CQUNLOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
fQorCisgICAgICAgIHN3aXRjaCAoZnVuYykKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xf
TkVWRVI6CisgICAgICAgICAgY2FzZSBHTF9BTFdBWVM6CisgICAgICAgICAgY2FzZSBHTF9MRVNT
OgorICAgICAgICAgIGNhc2UgR0xfTEVRVUFMOgorICAgICAgICAgIGNhc2UgR0xfRVFVQUw6Cisg
ICAgICAgICAgY2FzZSBHTF9HRVFVQUw6CisgICAgICAgICAgY2FzZSBHTF9HUkVBVEVSOgorICAg
ICAgICAgIGNhc2UgR0xfTk9URVFVQUw6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9z
dENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGZhY2UgPT0gR0xfRlJPTlQgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdGVuY2lsUGFyYW1zKGZ1
bmMsIHJlZiwgbWFzayk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmYWNlID09
IEdMX0JBQ0sgfHwgZmFjZSA9PSBHTF9GUk9OVF9BTkRfQkFDSykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdGVuY2lsQmFja1BhcmFtcyhmdW5jLCByZWYsIG1h
c2spOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFN0ZW5jaWxNYXNrKEdMdWludCBtYXNr
KQoreworICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShHTF9GUk9OVF9BTkRfQkFDSywgbWFzayk7
Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShHTGVudW0gZmFjZSwg
R0x1aW50IG1hc2spCit7CisgICAgRVZFTlQoIihHTGVudW0gZmFjZSA9IDB4JVgsIEdMdWludCBt
YXNrID0gJWQpIiwgZmFjZSwgbWFzayk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRj
aCAoZmFjZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfRlJPTlQ6CisgICAgICAgICAg
Y2FzZSBHTF9CQUNLOgorICAgICAgICAgIGNhc2UgR0xfRlJPTlRfQU5EX0JBQ0s6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGZhY2UgPT0gR0xfRlJPTlQgfHwgZmFjZSA9
PSBHTF9GUk9OVF9BTkRfQkFDSykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LT5zZXRTdGVuY2lsV3JpdGVtYXNrKG1hc2spOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoZmFjZSA9PSBHTF9CQUNLIHx8IGZhY2UgPT0gR0xfRlJPTlRfQU5EX0JBQ0spCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3RlbmNpbEJhY2tXcml0
ZW1hc2sobWFzayk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2go
c3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRf
T0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsU3RlbmNpbE9wKEdMZW51
bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcykKK3sKKyAgICBnbFN0ZW5jaWxPcFNl
cGFyYXRlKEdMX0ZST05UX0FORF9CQUNLLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworfQorCit2b2lk
IF9fc3RkY2FsbCBnbFN0ZW5jaWxPcFNlcGFyYXRlKEdMZW51bSBmYWNlLCBHTGVudW0gZmFpbCwg
R0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpCit7CisgICAgRVZFTlQoIihHTGVudW0gZmFjZSA9
IDB4JVgsIEdMZW51bSBmYWlsID0gMHglWCwgR0xlbnVtIHpmYWlsID0gMHglWCwgR0xlbnVtIHpw
YXMgPSAweCVYcykiLAorICAgICAgICAgIGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisKKyAg
ICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoZmFjZSkKKyAgICAgICAgeworICAgICAgICAg
IGNhc2UgR0xfRlJPTlQ6CisgICAgICAgICAgY2FzZSBHTF9CQUNLOgorICAgICAgICAgIGNhc2Ug
R0xfRlJPTlRfQU5EX0JBQ0s6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAg
ICB9CisKKyAgICAgICAgc3dpdGNoIChmYWlsKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBH
TF9aRVJPOgorICAgICAgICAgIGNhc2UgR0xfS0VFUDoKKyAgICAgICAgICBjYXNlIEdMX1JFUExB
Q0U6CisgICAgICAgICAgY2FzZSBHTF9JTkNSOgorICAgICAgICAgIGNhc2UgR0xfREVDUjoKKyAg
ICAgICAgICBjYXNlIEdMX0lOVkVSVDoKKyAgICAgICAgICBjYXNlIEdMX0lOQ1JfV1JBUDoKKyAg
ICAgICAgICBjYXNlIEdMX0RFQ1JfV1JBUDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7
CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHpmYWlsKQorICAgICAgICB7CisgICAgICAg
ICAgY2FzZSBHTF9aRVJPOgorICAgICAgICAgIGNhc2UgR0xfS0VFUDoKKyAgICAgICAgICBjYXNl
IEdMX1JFUExBQ0U6CisgICAgICAgICAgY2FzZSBHTF9JTkNSOgorICAgICAgICAgIGNhc2UgR0xf
REVDUjoKKyAgICAgICAgICBjYXNlIEdMX0lOVkVSVDoKKyAgICAgICAgICBjYXNlIEdMX0lOQ1Jf
V1JBUDoKKyAgICAgICAgICBjYXNlIEdMX0RFQ1JfV1JBUDoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHpwYXNzKQorICAgICAgICB7
CisgICAgICAgICAgY2FzZSBHTF9aRVJPOgorICAgICAgICAgIGNhc2UgR0xfS0VFUDoKKyAgICAg
ICAgICBjYXNlIEdMX1JFUExBQ0U6CisgICAgICAgICAgY2FzZSBHTF9JTkNSOgorICAgICAgICAg
IGNhc2UgR0xfREVDUjoKKyAgICAgICAgICBjYXNlIEdMX0lOVkVSVDoKKyAgICAgICAgICBjYXNl
IEdMX0lOQ1JfV1JBUDoKKyAgICAgICAgICBjYXNlIEdMX0RFQ1JfV1JBUDoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoZmFjZSA9PSBHTF9GUk9OVCB8fCBmYWNlID09IEdM
X0ZST05UX0FORF9CQUNLKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQt
PnNldFN0ZW5jaWxPcGVyYXRpb25zKGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChmYWNlID09IEdMX0JBQ0sgfHwgZmFjZSA9PSBHTF9GUk9OVF9B
TkRfQkFDSykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdGVu
Y2lsQmFja09wZXJhdGlvbnMoZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKworR0xib29s
ZWFuIF9fc3RkY2FsbCBnbFRlc3RGZW5jZU5WKEdMdWludCBmZW5jZSkKK3sKKyAgICBFVkVOVCgi
KEdMdWludCBmZW5jZSA9ICVkKSIsIGZlbmNlKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAg
Z2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAg
ICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkZlbmNlICpmZW5jZU9i
amVjdCA9IGNvbnRleHQtPmdldEZlbmNlKGZlbmNlKTsKKworICAgICAgICAgICAgaWYgKGZlbmNl
T2JqZWN0ID09IE5VTEwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgR0xfVFJVRSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBmZW5jZU9iamVjdC0+dGVzdEZlbmNlKCk7CisgICAgICAgIH0K
KyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gR0xfVFJVRTsK
K30KKwordm9pZCBfX3N0ZGNhbGwgZ2xUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxl
dmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpCit7CisgICAgRVZFTlQoIihHTGVu
dW0gdGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQg
PSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCAiCisgICAgICAg
ICAgIkdMaW50IGJvcmRlciA9ICVkLCBHTGVudW0gZm9ybWF0ID0gMHglWCwgR0xlbnVtIHR5cGUg
PSAweCVYLCBjb25zdCBHTHZvaWQqIHBpeGVscyA9ICAweCUwLjhwKSIsCisgICAgICAgICAgdGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoIXZhbGlkSW1h
Z2VTaXplKGxldmVsLCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChpbnRlcm5hbGZvcm1hdCAhPSBHTGludChmb3JtYXQpKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIHZhbGlkYXRlIDx0eXBlPiBieSBpdHNlbGYgKHVzZWQgYXMgc2Vjb25kYXJ5IGtl
eSBiZWxvdykKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82
XzU6CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80OgorICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMToKKyAgICAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX1NIT1JUOgorICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfSU5UXzI0XzhfT0VTOgorICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9B
VF9PRVM6CisgICAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
RU5VTSk7CisgICAgICAgIH0KKworICAgICAgICAvLyB2YWxpZGF0ZSA8Zm9ybWF0PiArIDx0eXBl
PiBjb21iaW5hdGlvbnMKKyAgICAgICAgLy8gLSBpbnZhbGlkIDxmb3JtYXQ+IC0+IHNldHMgSU5W
QUxJRF9FTlVNCisgICAgICAgIC8vIC0gaW52YWxpZCA8Zm9ybWF0Pis8dHlwZT4gY29tYmluYXRp
b24gLT4gc2V0cyBJTlZBTElEX09QRVJBVElPTgorICAgICAgICBzd2l0Y2ggKGZvcm1hdCkKKyAg
ICAgICAgeworICAgICAgICAgIGNhc2UgR0xfQUxQSEE6CisgICAgICAgICAgY2FzZSBHTF9MVU1J
TkFOQ0U6CisgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICAgICBz
d2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfQllURToKKyAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgICAgY2Fz
ZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
IGNhc2UgR0xfUkdCOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfU0hPUlRfNV82XzU6CisgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6Cisg
ICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80OgorICAgICAgICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzE6CisgICAgICAgICAgICAgIGNhc2UgR0xf
RkxPQVQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAgICAgICAgICAg
c3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX0JZVEU6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6ICAvLyBlcnJvciBjYXNlcyBmb3IgY29tcHJlc3Nl
ZCB0ZXh0dXJlcyBhcmUgaGFuZGxlZCBiZWxvdworICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUNV9BTkdMRToKKyAgICAgICAgICAgIGJyZWFrOyAKKyAgICAgICAgICBjYXNlIEdMX0RFUFRI
X0NPTVBPTkVOVDoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNl
IEdMX0RFUFRIX1NURU5DSUxfT0VTOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yNF84X09FUzoKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoYm9yZGVyICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobGV2ZWwgPiBjb250ZXh0LT5nZXRNYXhpbXVtVGV4
dHVyZUxldmVsKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dp
dGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV8yRDoKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPiAoY29udGV4dC0+Z2V0TWF4aW11bVRl
eHR1cmVEaW1lbnNpb24oKSA+PiBsZXZlbCkgfHwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
ID4gKGNvbnRleHQtPmdldE1heGltdW1UZXh0dXJlRGltZW5zaW9uKCkgPj4gbGV2ZWwpKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgorICAg
ICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDoKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6CisgICAgICAgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgorICAgICAgICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWjoKKyAgICAgICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o6CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoICE9
IGhlaWdodCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgaWYgKHdpZHRoID4gKGNvbnRleHQtPmdldE1heGltdW1DdWJlVGV4dHVyZURpbWVu
c2lvbigpID4+IGxldmVsKSB8fAorICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPiAoY29udGV4
dC0+Z2V0TWF4aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKCkgPj4gbGV2ZWwpKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1h
dCkgeworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6
CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Cisg
ICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPnN1cHBvcnRzRFhUMVRleHR1cmVzKCkpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FO
R0xFOgorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5zdXBwb3J0c0RYVDNUZXh0dXJlcygp
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUNV9BTkdMRToKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+c3VwcG9ydHNEWFQ1VGV4
dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVO
VDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKKyAgICAgICAgICAg
ICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRGVwdGhUZXh0dXJlcygpKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPSBH
TF9URVhUVVJFXzJEKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIC8vIE9FU19kZXB0aF90ZXh0dXJlIHN1cHBvcnRzIGxvYWRpbmcgZGVw
dGggZGF0YSBhbmQgbXVsdGlwbGUgbGV2ZWxzLAorICAgICAgICAgICAgICAgIC8vIGJ1dCBBTkdM
RV9kZXB0aF90ZXh0dXJlIGRvZXMgbm90CisgICAgICAgICAgICAgICAgaWYgKHBpeGVscyAhPSBO
VUxMIHx8IGxldmVsICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0eXBl
ID09IEdMX0ZMT0FUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghY29udGV4
dC0+c3VwcG9ydHNGbG9hdDMyVGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IEdM
X0hBTEZfRkxPQVRfT0VTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghY29u
dGV4dC0+c3VwcG9ydHNGbG9hdDE2VGV4dHVyZXMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPT0g
R0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6VGV4dHVy
ZTJEICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisKKyAgICAgICAgICAgICAg
ICBpZiAoIXRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRleHR1
cmUtPnNldEltYWdlKGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGNvbnRleHQt
PmdldFVucGFja0FsaWdubWVudCgpLCBwaXhlbHMpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1h
cCAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmVDdWJlTWFwKCk7CisKKyAgICAgICAgICAg
ICAgICBpZiAoIXRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHN3
aXRjaCAodGFyZ2V0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgorICAgICAgICAgICAgICAgICAgICB0ZXh0
dXJlLT5zZXRJbWFnZVBvc1gobGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgY29u
dGV4dC0+Z2V0VW5wYWNrQWxpZ25tZW50KCksIHBpeGVscyk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1g6CisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnNldEltYWdlTmVnWChsZXZlbCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQo
KSwgcGl4ZWxzKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKKyAgICAgICAgICAgICAgICAg
ICAgdGV4dHVyZS0+c2V0SW1hZ2VQb3NZKGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGNvbnRleHQtPmdldFVucGFja0FsaWdubWVudCgpLCBwaXhlbHMpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9ZOgorICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRJbWFnZU5lZ1ko
bGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgY29udGV4dC0+Z2V0VW5wYWNrQWxp
Z25tZW50KCksIHBpeGVscyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6CisgICAgICAgICAg
ICAgICAgICAgIHRleHR1cmUtPnNldEltYWdlUG9zWihsZXZlbCwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWjoKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0SW1h
Z2VOZWdaKGxldmVsLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGNvbnRleHQtPmdldFVu
cGFja0FsaWdubWVudCgpLCBwaXhlbHMpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2Fs
bG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFRleFBhcmFtZXRlcmYoR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRh
cmdldCA9IDB4JVgsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMaW50IHBhcmFtID0gJWYpIiwgdGFy
Z2V0LCBwbmFtZSwgcGFyYW0pOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZTsKKworICAg
ICAgICAgICAgc3dpdGNoICh0YXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAgICB0ZXh0dXJlID0gY29udGV4dC0+Z2V0
VGV4dHVyZTJEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DVUJFX01BUDoKKyAgICAgICAgICAgICAgICB0ZXh0dXJlID0gY29udGV4dC0+
Z2V0VGV4dHVyZUN1YmVNYXAoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
RU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6CisgICAgICAg
ICAgICAgICAgaWYgKCF0ZXh0dXJlLT5zZXRXcmFwUygoR0xlbnVtKXBhcmFtKSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1Q6CisgICAgICAgICAgICAgICAgaWYgKCF0
ZXh0dXJlLT5zZXRXcmFwVCgoR0xlbnVtKXBhcmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9NSU5fRklMVEVSOgorICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZS0+c2V0
TWluRmlsdGVyKChHTGVudW0pcGFyYW0pKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhU
VVJFX01BR19GSUxURVI6CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5zZXRNYWdGaWx0
ZXIoKEdMZW51bSlwYXJhbSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfVVNB
R0VfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5zZXRVc2FnZSgoR0xlbnVt
KXBhcmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9Q
WV9FWFQ6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c1RleHR1cmVGaWx0
ZXJBbmlzb3Ryb3B5KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGlmICghdGV4dHVyZS0+c2V0TWF4QW5pc290cm9weSgoZmxvYXQpcGFyYW0s
IGNvbnRleHQtPmdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KCkpKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VO
VU0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFRleFBhcmFtZXRlcmZ2KEdMZW51bSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCogcGFyYW1zKQoreworICAgIGdsVGV4
UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCAoR0xmbG9hdCkqcGFyYW1zKTsKK30KKwordm9pZCBf
X3N0ZGNhbGwgZ2xUZXhQYXJhbWV0ZXJpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xp
bnQgcGFyYW0pCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBu
YW1lID0gMHglWCwgR0xpbnQgcGFyYW0gPSAlZCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbSk7CisK
KyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5v
bkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlOworCisgICAgICAgICAgICBzd2l0Y2ggKHRhcmdl
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgorICAg
ICAgICAgICAgICAgIHRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlMkQoKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgor
ICAgICAgICAgICAgICAgIHRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ3ViZU1hcCgpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfUzoKKyAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUt
PnNldFdyYXBTKChHTGVudW0pcGFyYW0pKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhU
VVJFX1dSQVBfVDoKKyAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUtPnNldFdyYXBUKChHTGVu
dW0pcGFyYW0pKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6
CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLT5zZXRNaW5GaWx0ZXIoKEdMZW51bSlwYXJh
bSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUjoKKyAgICAg
ICAgICAgICAgICBpZiAoIXRleHR1cmUtPnNldE1hZ0ZpbHRlcigoR0xlbnVtKXBhcmFtKSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FHRV9BTkdMRToKKyAgICAgICAgICAg
ICAgICBpZiAoIXRleHR1cmUtPnNldFVzYWdlKChHTGVudW0pcGFyYW0pKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VO
VU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDoKKyAgICAgICAgICAgICAg
ICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHkoKSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0
dXJlLT5zZXRNYXhBbmlzb3Ryb3B5KChmbG9hdClwYXJhbSwgY29udGV4dC0+Z2V0VGV4dHVyZU1h
eEFuaXNvdHJvcHkoKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQg
X19zdGRjYWxsIGdsVGV4UGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBj
b25zdCBHTGludCogcGFyYW1zKQoreworICAgIGdsVGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1l
LCAqcGFyYW1zKTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xUZXhTdG9yYWdlMkRFWFQoR0xlbnVt
IHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHgl
WCwgR0xzaXplaSBsZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gMHglWCwgR0xz
aXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkKSIsCisgICAgICAgICAgIHRhcmdl
dCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisKKyAgICB0cnkKKyAg
ICB7CisgICAgICAgIGlmICh0YXJnZXQgIT0gR0xfVEVYVFVSRV8yRCAmJiB0YXJnZXQgIT0gR0xf
VEVYVFVSRV9DVUJFX01BUCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdpZHRoIDwgMSB8
fCBoZWlnaHQgPCAxIHx8IGxldmVscyA8IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
dGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgd2lkdGggIT0gaGVpZ2h0KQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGxldmVscyAhPSAxICYmIGxldmVscyAhPSBnbDo6bG9nMihz
dGQ6Om1heCh3aWR0aCwgaGVpZ2h0KSkgKyAxKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgfQorCisgICAgICAg
IEdMZW51bSBmb3JtYXQgPSBnbDo6RXh0cmFjdEZvcm1hdChpbnRlcm5hbGZvcm1hdCk7CisgICAg
ICAgIEdMZW51bSB0eXBlID0gZ2w6OkV4dHJhY3RUeXBlKGludGVybmFsZm9ybWF0KTsKKworICAg
ICAgICBpZiAoZm9ybWF0ID09IEdMX05PTkUgfHwgdHlwZSA9PSBHTF9OT05FKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAg
IH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0
Y2ggKHRhcmdldCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJF
XzJEOgorICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGNvbnRleHQtPmdldE1heGltdW1UZXh0
dXJlRGltZW5zaW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID4gY29udGV4dC0+
Z2V0TWF4aW11bVRleHR1cmVEaW1lbnNpb24oKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfQ1VCRV9NQVA6CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gY29udGV4dC0+
Z2V0TWF4aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAg
aGVpZ2h0ID4gY29udGV4dC0+Z2V0TWF4aW11bUN1YmVUZXh0dXJlRGltZW5zaW9uKCkpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lO
VkFMSURfVkFMVUUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChsZXZl
bHMgIT0gMSAmJiAhY29udGV4dC0+c3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlKCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFnbDo6aXNQb3cyKHdpZHRoKSB8fCAhZ2w6Omlz
UG93MihoZWlnaHQpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhU
MV9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9F
WFQ6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0RYVDFUZXh0dXJlcygp
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FO
R0xFOgorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNEWFQzVGV4dHVyZXMo
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9B
TkdMRToKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRFhUNVRleHR1cmVz
KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1JHQkEzMkZfRVhUOgorICAgICAgICAgICAg
ICBjYXNlIEdMX1JHQjMyRl9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhU
OgorICAgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRTMyRl9FWFQ6CisgICAgICAgICAgICAg
IGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVDoKKyAgICAgICAgICAgICAgICBpZiAoIWNv
bnRleHQtPnN1cHBvcnRzRmxvYXQzMlRleHR1cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNl
IEdMX1JHQkExNkZfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6CisgICAg
ICAgICAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX0xV
TUlOQU5DRTE2Rl9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZG
X0VYVDoKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRmxvYXQxNlRleHR1
cmVzKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2OgorICAg
ICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzoKKyAgICAgICAgICAgICAg
Y2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzoKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRl
eHQtPnN1cHBvcnRzRGVwdGhUZXh0dXJlcygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9IEdMX1RFWFRVUkVfMkQpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Ly8gQU5HTEVfZGVwdGhfdGV4dHVyZSBvbmx5IHN1cHBvcnRzIDEtbGV2ZWwgdGV4dHVyZXMKKyAg
ICAgICAgICAgICAgICBpZiAobGV2ZWxzICE9IDEpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBnbDo6VGV4dHVyZTJEICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7
CisKKyAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmUgfHwgdGV4dHVyZS0+aWQoKSA9PSAwKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgaWYgKHRleHR1cmUtPmlzSW1tdXRhYmxlKCkpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zdG9yYWdlKGxldmVs
cywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVApCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDdWJlTWFwICp0ZXh0dXJlID0gY29udGV4
dC0+Z2V0VGV4dHVyZUN1YmVNYXAoKTsKKworICAgICAgICAgICAgICAgIGlmICghdGV4dHVyZSB8
fCB0ZXh0dXJlLT5pZCgpID09IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNJbW11dGFibGUoKSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IHRleHR1cmUtPnN0b3JhZ2UobGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAg
fQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFRl
eFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv
aWQqIHBpeGVscykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGludCBs
ZXZlbCA9ICVkLCBHTGludCB4b2Zmc2V0ID0gJWQsIEdMaW50IHlvZmZzZXQgPSAlZCwgIgorICAg
ICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMZW51bSBm
b3JtYXQgPSAweCVYLCBHTGVudW0gdHlwZSA9IDB4JVgsICIKKyAgICAgICAgICAiY29uc3QgR0x2
b2lkKiBwaXhlbHMgPSAweCUwLjhwKSIsCisgICAgICAgICAgIHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKworICAg
IHRyeQorICAgIHsKKyAgICAgICAgaWYgKCFnbDo6SXNJbnRlcm5hbFRleHR1cmVUYXJnZXQodGFy
Z2V0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X0VOVU0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxldmVsIDwgMCB8fCB4b2Zmc2V0IDwg
MCB8fCB5b2Zmc2V0IDwgMCB8fCB3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHhv
ZmZzZXQgPCB3aWR0aCB8fCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHlv
ZmZzZXQgPCBoZWlnaHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWNoZWNrVGV4dHVy
ZUZvcm1hdFR5cGUoZm9ybWF0LCB0eXBlKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
OyAvLyBlcnJvciBpcyBzZXQgYnkgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgIH0KKworICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAg
ICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobGV2ZWwgPiBjb250
ZXh0LT5nZXRNYXhpbXVtVGV4dHVyZUxldmVsKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKGZvcm1hdCA9PSBHTF9GTE9BVCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRmxvYXQzMlRleHR1cmVzKCkpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfRU5VTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSBpZiAoZm9ybWF0ID09IEdMX0hBTEZfRkxPQVRfT0VTKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNGbG9hdDE2VGV4dHVyZXMo
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIGlmIChnbDo6SXNEZXB0aFRleHR1cmUoZm9ybWF0KSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBvcnRzRGVwdGhUZXh0dXJl
cygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBpZiAodGFyZ2V0ICE9IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gT0VTX2RlcHRoX3RleHR1cmUgc3Vw
cG9ydHMgbG9hZGluZyBkZXB0aCBkYXRhLCBidXQgQU5HTEVfZGVwdGhfdGV4dHVyZSBkb2VzIG5v
dAorICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQg
PT0gMCB8fCBwaXhlbHMgPT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfVEVY
VFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZTJEICp0
ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZTJEKCk7CisgICAgICAgICAgICAgICAgaWYgKHZh
bGlkYXRlU3ViSW1hZ2VQYXJhbXMyRChmYWxzZSwgd2lkdGgsIGhlaWdodCwgeG9mZnNldCwgeW9m
ZnNldCwgbGV2ZWwsIGZvcm1hdCwgdHlwZSwgdGV4dHVyZSkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zdWJJbWFnZShsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRVbnBhY2tBbGln
bm1lbnQoKSwgcGl4ZWxzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBlbHNlIGlmIChnbDo6SXNDdWJlbWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ3ViZU1hcCAqdGV4dHVyZSA9
IGNvbnRleHQtPmdldFRleHR1cmVDdWJlTWFwKCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbGlk
YXRlU3ViSW1hZ2VQYXJhbXNDdWJlKGZhbHNlLCB3aWR0aCwgaGVpZ2h0LCB4b2Zmc2V0LCB5b2Zm
c2V0LCB0YXJnZXQsIGxldmVsLCBmb3JtYXQsIHR5cGUsIHRleHR1cmUpKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c3ViSW1hZ2UodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBjb250ZXh0
LT5nZXRVbnBhY2tBbGlnbm1lbnQoKSwgcGl4ZWxzKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBj
YXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMWYo
R0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCkKK3sKKyAgICBnbFVuaWZvcm0xZnYobG9jYXRpb24s
IDEsICZ4KTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KQoreworICAgIEVWRU5UKCIoR0xpbnQg
bG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2ID0gMHgl
MC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBp
ZiAoY291bnQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdM
X0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxvY2F0aW9uID09IC0x
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAg
IGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAq
cHJvZ3JhbUJpbmFyeSA9IGNvbnRleHQtPmdldEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7CisgICAg
ICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeS0+c2V0VW5pZm9ybTFmdihsb2NhdGlv
biwgY291bnQsIHYpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBn
bFVuaWZvcm0xaShHTGludCBsb2NhdGlvbiwgR0xpbnQgeCkKK3sKKyAgICBnbFVuaWZvcm0xaXYo
bG9jYXRpb24sIDEsICZ4KTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMWl2KEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCogdikKK3sKKyAgICBFVkVOVCgi
KEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQqIHYg
PSAweCUwLjhwKSIsIGxvY2F0aW9uLCBjb3VudCwgdik7CisKKyAgICB0cnkKKyAgICB7CisgICAg
ICAgIGlmIChjb3VudCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9jYXRpb24g
PT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAg
ICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmlu
YXJ5ICpwcm9ncmFtQmluYXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsK
KyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtMWl2KGxv
Y2F0aW9uLCBjb3VudCwgdikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRj
YWxsIGdsVW5pZm9ybTJmKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSkKK3sK
KyAgICBHTGZsb2F0IHh5WzJdID0ge3gsIHl9OworCisgICAgZ2xVbmlmb3JtMmZ2KGxvY2F0aW9u
LCAxLCAoR0xmbG9hdCopJnh5KTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtMmZ2KEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KQoreworICAgIEVW
RU5UKCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGZs
b2F0KiB2ID0gMHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOworCisgICAgdHJ5CisgICAg
eworICAgICAgICBpZiAoY291bnQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RD
b250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVudFBy
b2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5z
ZXRVbmlmb3JtMmZ2KGxvY2F0aW9uLCBjb3VudCwgdikpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9
CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTJpKEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBH
TGludCB5KQoreworICAgIEdMaW50IHh5WzRdID0ge3gsIHl9OworCisgICAgZ2xVbmlmb3JtMml2
KGxvY2F0aW9uLCAxLCAoR0xpbnQqKSZ4eSk7Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9y
bTJpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpCit7Cisg
ICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0
IEdMaW50KiB2ID0gMHglMC44cCkiLCBsb2NhdGlvbiwgY291bnQsIHYpOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBpZiAoY291bnQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KGxvY2F0aW9uID09IC0xKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6
UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGNvbnRleHQtPmdldEN1cnJlbnRQcm9ncmFt
QmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeS0+c2V0VW5p
Zm9ybTJpdihsb2NhdGlvbiwgY291bnQsIHYpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2
b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm0zZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZs
b2F0IHksIEdMZmxvYXQgeikKK3sKKyAgICBHTGZsb2F0IHh5elszXSA9IHt4LCB5LCB6fTsKKwor
ICAgIGdsVW5pZm9ybTNmdihsb2NhdGlvbiwgMSwgKEdMZmxvYXQqKSZ4eXopOworfQorCit2b2lk
IF9fc3RkY2FsbCBnbFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMZmxvYXQqIHYpCit7CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNp
emVpIGNvdW50ID0gJWQsIGNvbnN0IEdMZmxvYXQqIHYgPSAweCUwLjhwKSIsIGxvY2F0aW9uLCBj
b3VudCwgdik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA8IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gY29u
dGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3Jh
bUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtM2Z2KGxvY2F0aW9uLCBjb3VudCwgdikpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3Rk
OjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTNpKEdMaW50IGxv
Y2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KQoreworICAgIEdMaW50IHh5elszXSA9
IHt4LCB5LCB6fTsKKworICAgIGdsVW5pZm9ybTNpdihsb2NhdGlvbiwgMSwgKEdMaW50KikmeHl6
KTsKK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGludCogdikKK3sKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9u
ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQqIHYgPSAweCUwLjhwKSIsIGxv
Y2F0aW9uLCBjb3VudCwgdik7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA8
IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmlu
YXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlm
ICghcHJvZ3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtM2l2KGxvY2F0aW9uLCBjb3VudCwg
dikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTRm
KEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0
IHcpCit7CisgICAgR0xmbG9hdCB4eXp3WzRdID0ge3gsIHksIHosIHd9OworCisgICAgZ2xVbmlm
b3JtNGZ2KGxvY2F0aW9uLCAxLCAoR0xmbG9hdCopJnh5encpOworfQorCit2b2lkIF9fc3RkY2Fs
bCBnbFVuaWZvcm00ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxv
YXQqIHYpCit7CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50
ID0gJWQsIGNvbnN0IEdMZmxvYXQqIHYgPSAweCUwLjhwKSIsIGxvY2F0aW9uLCBjb3VudCwgdik7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA8IDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Omdl
dE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5ID0gY29udGV4dC0+Z2V0
Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbUJpbmFyeSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFwcm9ncmFt
QmluYXJ5LT5zZXRVbmlmb3JtNGZ2KGxvY2F0aW9uLCBjb3VudCwgdikpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
KyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybTRpKEdMaW50IGxvY2F0aW9uLCBH
TGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KQoreworICAgIEdMaW50IHh5endbNF0g
PSB7eCwgeSwgeiwgd307CisKKyAgICBnbFVuaWZvcm00aXYobG9jYXRpb24sIDEsIChHTGludCop
Jnh5encpOworfQorCit2b2lkIF9fc3RkY2FsbCBnbFVuaWZvcm00aXYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KQoreworICAgIEVWRU5UKCIoR0xpbnQgbG9j
YXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGludCogdiA9IDB4JTAuOHAp
IiwgbG9jYXRpb24sIGNvdW50LCB2KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGNv
dW50IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsb2NhdGlvbiA9PSAtMSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAo
Y29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dy
YW1CaW5hcnkgPSBjb250ZXh0LT5nZXRDdXJyZW50UHJvZ3JhbUJpbmFyeSgpOworICAgICAgICAg
ICAgaWYgKCFwcm9ncmFtQmluYXJ5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnktPnNldFVuaWZvcm00aXYobG9jYXRpb24sIGNv
dW50LCB2KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVbmlm
b3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHTGZsb2F0KiB2YWx1ZSkKK3sKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICVkLCBj
b25zdCBHTGZsb2F0KiB2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoY291
bnQgPCAwIHx8IHRyYW5zcG9zZSAhPSBHTF9GQUxTRSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChsb2NhdGlvbiA9PSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
Z2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBjb250ZXh0LT5nZXRDdXJyZW50UHJv
Z3JhbUJpbmFyeSgpOworICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnktPnNl
dFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxs
b2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
KyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVW5pZm9ybU1hdHJpeDNmdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCog
dmFsdWUpCit7CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50
ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UgPSAlZCwgY29uc3QgR0xmbG9hdCogdmFsdWUgPSAw
eCUwLjhwKSIsCisgICAgICAgICAgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsK
KworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50IDwgMCB8fCB0cmFuc3Bvc2UgIT0g
R0xfRkFMU0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobG9jYXRpb24gPT0gLTEpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYg
KGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9n
cmFtQmluYXJ5ID0gY29udGV4dC0+Z2V0Q3VycmVudFByb2dyYW1CaW5hcnkoKTsKKyAgICAgICAg
ICAgIGlmICghcHJvZ3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKCFwcm9ncmFtQmluYXJ5LT5zZXRVbmlmb3JtTWF0cml4M2Z2KGxvY2F0
aW9uLCBjb3VudCwgdmFsdWUpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbFVuaWZvcm1NYXRyaXg0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKQoreworICAgIEVWRU5UKCIo
R0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJhbnNw
b3NlID0gJWQsIGNvbnN0IEdMZmxvYXQqIHZhbHVlID0gMHglMC44cCkiLAorICAgICAgICAgIGxv
Y2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisKKyAgICB0cnkKKyAgICB7CisgICAg
ICAgIGlmIChjb3VudCA8IDAgfHwgdHJhbnNwb3NlICE9IEdMX0ZBTFNFKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGxvY2F0aW9uID09IC0xKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSA9IGNvbnRleHQtPmdl
dEN1cnJlbnRQcm9ncmFtQmluYXJ5KCk7CisgICAgICAgICAgICBpZiAoIXByb2dyYW1CaW5hcnkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvZ3Jh
bUJpbmFyeS0+c2V0VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xVc2VQcm9ncmFtKEdMdWlu
dCBwcm9ncmFtKQoreworICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAlZCkiLCBwcm9ncmFt
KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6
Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9n
cmFtKHByb2dyYW0pOworCisgICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QgJiYgcHJvZ3Jh
bSAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRT
aGFkZXIocHJvZ3JhbSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwcm9ncmFtICE9IDAgJiYgIXBy
b2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGNvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGds
VmFsaWRhdGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQoreworICAgIEVWRU5UKCIoR0x1aW50IHBy
b2dyYW0gPSAlZCkiLCBwcm9ncmFtKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAo
Y29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmpl
Y3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworCisgICAgICAgICAgICBpZiAoIXBy
b2dyYW1PYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmdldFNoYWRlcihwcm9ncmFtKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHJvZ3JhbU9iamVjdC0+dmFs
aWRhdGUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0K
K30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWIxZihHTHVpbnQgaW5kZXgsIEdMZmxv
YXQgeCkKK3sKKyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBHTGZsb2F0IHggPSAlZiki
LCBpbmRleCwgeCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBnbDo6
TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgR0xmbG9hdCB2YWxzWzRdID0geyB4LCAwLCAwLCAx
IH07CisgICAgICAgICAgICBjb250ZXh0LT5zZXRWZXJ0ZXhBdHRyaWIoaW5kZXgsIHZhbHMpOwor
ICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lk
IF9fc3RkY2FsbCBnbFZlcnRleEF0dHJpYjFmdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQq
IHZhbHVlcykKK3sKKyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBjb25zdCBHTGZsb2F0
KiB2YWx1ZXMgPSAweCUwLjhwKSIsIGluZGV4LCB2YWx1ZXMpOworCisgICAgdHJ5CisgICAgewor
ICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
fQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0
KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMZmxv
YXQgdmFsc1s0XSA9IHsgdmFsdWVzWzBdLCAwLCAwLCAxIH07CisgICAgICAgICAgICBjb250ZXh0
LT5zZXRWZXJ0ZXhBdHRyaWIoaW5kZXgsIHZhbHMpOworICAgICAgICB9CisgICAgfQorICAgIGNh
dGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0dHJp
YjJmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCit7CisgICAgRVZFTlQoIihH
THVpbnQgaW5kZXggPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQgeSA9ICVmKSIsIGluZGV4
LCB4LCB5KTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4ID49IGdsOjpNQVhf
VkVSVEVYX0FUVFJJQlMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBHTGZsb2F0IHZhbHNbNF0gPSB7IHgsIHksIDAsIDEgfTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnNldFZlcnRleEF0dHJpYihpbmRleCwgdmFscyk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19z
dGRjYWxsIGdsVmVydGV4QXR0cmliMmZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCogdmFs
dWVzKQoreworICAgIEVWRU5UKCIoR0x1aW50IGluZGV4ID0gJWQsIGNvbnN0IEdMZmxvYXQqIHZh
bHVlcyA9IDB4JTAuOHApIiwgaW5kZXgsIHZhbHVlcyk7CisKKyAgICB0cnkKKyAgICB7CisgICAg
ICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAgICAgICB9CisK
KyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsK
KworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgR0xmbG9hdCB2
YWxzWzRdID0geyB2YWx1ZXNbMF0sIHZhbHVlc1sxXSwgMCwgMSB9OworICAgICAgICAgICAgY29u
dGV4dC0+c2V0VmVydGV4QXR0cmliKGluZGV4LCB2YWxzKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhB
dHRyaWIzZihHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCit7
CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQg
eSA9ICVmLCBHTGZsb2F0IHogPSAlZikiLCBpbmRleCwgeCwgeSwgeik7CisKKyAgICB0cnkKKyAg
ICB7CisgICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfVkFMVUUpOworICAg
ICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
R0xmbG9hdCB2YWxzWzRdID0geyB4LCB5LCB6LCAxIH07CisgICAgICAgICAgICBjb250ZXh0LT5z
ZXRWZXJ0ZXhBdHRyaWIoaW5kZXgsIHZhbHMpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNo
KHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFZlcnRleEF0dHJpYjNm
dihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcykKK3sKKyAgICBFVkVOVCgiKEdM
dWludCBpbmRleCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMgPSAweCUwLjhwKSIsIGluZGV4
LCB2YWx1ZXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAoaW5kZXggPj0gZ2w6Ok1B
WF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEdMZmxvYXQgdmFsc1s0XSA9IHsgdmFsdWVzWzBdLCB2
YWx1ZXNbMV0sIHZhbHVlc1syXSwgMSB9OworICAgICAgICAgICAgY29udGV4dC0+c2V0VmVydGV4
QXR0cmliKGluZGV4LCB2YWxzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJh
ZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWI0ZihHTHVpbnQg
aW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdykKK3sKKyAg
ICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBHTGZsb2F0IHggPSAlZiwgR0xmbG9hdCB5ID0g
JWYsIEdMZmxvYXQgeiA9ICVmLCBHTGZsb2F0IHcgPSAlZikiLCBpbmRleCwgeCwgeSwgeiwgdyk7
CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBnbDo6TUFYX1ZFUlRFWF9B
VFRSSUJTKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfVkFMVUUpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgR0xmbG9hdCB2YWxzWzRdID0geyB4LCB5LCB6LCB3IH07CisgICAgICAg
ICAgICBjb250ZXh0LT5zZXRWZXJ0ZXhBdHRyaWIoaW5kZXgsIHZhbHMpOworICAgICAgICB9Cisg
ICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBn
bFZlcnRleEF0dHJpYjRmdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcykKK3sK
KyAgICBFVkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMgPSAw
eCUwLjhwKSIsIGluZGV4LCB2YWx1ZXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBpZiAo
aW5kZXggPj0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAg
ICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFZlcnRl
eEF0dHJpYihpbmRleCwgdmFsdWVzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6
OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWJEaXZpc29y
QU5HTEUoR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBFVkVOVCgiKEdMdWlu
dCBpbmRleCA9ICVkLCBHTHVpbnQgZGl2aXNvciA9ICVkKSIsIGluZGV4LCBkaXZpc29yKTsKKwor
ICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4ID49IGdsOjpNQVhfVkVSVEVYX0FUVFJJ
QlMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpn
ZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb250ZXh0LT5zZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29y
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgewor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwor
dm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKEdMdWludCBpbmRleCwgR0xpbnQg
c2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwg
Y29uc3QgR0x2b2lkKiBwdHIpCit7CisgICAgRVZFTlQoIihHTHVpbnQgaW5kZXggPSAlZCwgR0xp
bnQgc2l6ZSA9ICVkLCBHTGVudW0gdHlwZSA9IDB4JVgsICIKKyAgICAgICAgICAiR0xib29sZWFu
IG5vcm1hbGl6ZWQgPSAlZCwgR0xzaXplaSBzdHJpZGUgPSAlZCwgY29uc3QgR0x2b2lkKiBwdHIg
PSAweCUwLjhwKSIsCisgICAgICAgICAgaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0
cmlkZSwgcHRyKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4ID49IGdsOjpN
QVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2l6ZSA8IDEg
fHwgc2l6ZSA+IDQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAg
ICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0JZVEU6CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9CWVRFOgorICAgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9TSE9SVDoKKyAgICAgICAgICBjYXNlIEdMX0ZJWEVEOgorICAgICAgICAgIGNhc2UgR0xf
RkxPQVQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHN0cmlkZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRWZXJ0ZXhBdHRyaWJTdGF0ZShp
bmRleCwgY29udGV4dC0+Z2V0QXJyYXlCdWZmZXIoKSwgc2l6ZSwgdHlwZSwgKG5vcm1hbGl6ZWQg
PT0gR0xfVFJVRSksIHN0cmlkZSwgcHRyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChz
dGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xWaWV3cG9ydChHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBFVkVOVCgi
KEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkg
aGVpZ2h0ID0gJWQpIiwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisKKyAgICB0cnkKKyAgICB7Cisg
ICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAg
ICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFZp
ZXdwb3J0UGFyYW1zKHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgICAgICB9CisgICAgfQorICAg
IGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbEJsaXRGcmFt
ZWJ1ZmZlckFOR0xFKEdMaW50IHNyY1gwLCBHTGludCBzcmNZMCwgR0xpbnQgc3JjWDEsIEdMaW50
IHNyY1kxLCBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRzdFgxLCBHTGludCBkc3RZ
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNr
LCBHTGVudW0gZmlsdGVyKQoreworICAgIEVWRU5UKCIoR0xpbnQgc3JjWDAgPSAlZCwgR0xpbnQg
c3JjWTAgPSAlZCwgR0xpbnQgc3JjWDEgPSAlZCwgR0xpbnQgc3JjWTEgPSAlZCwgIgorICAgICAg
ICAgICJHTGludCBkc3RYMCA9ICVkLCBHTGludCBkc3RZMCA9ICVkLCBHTGludCBkc3RYMSA9ICVk
LCBHTGludCBkc3RZMSA9ICVkLCAiCisgICAgICAgICAgIkdMYml0ZmllbGQgbWFzayA9IDB4JVgs
IEdMZW51bSBmaWx0ZXIgPSAweCVYKSIsCisgICAgICAgICAgc3JjWDAsIHNyY1kwLCBzcmNYMSwg
c3JjWDEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOworCisgICAg
dHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKGZpbHRlcikKKyAgICAgICAgeworICAgICAgICAg
IGNhc2UgR0xfTkVBUkVTVDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoKG1hc2sgJiB+KEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9TVEVO
Q0lMX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKSkgIT0gMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChzcmNYMSAtIHNyY1gwICE9IGRzdFgxIC0gZHN0WDAgfHwgc3JjWTEg
LSBzcmNZMCAhPSBkc3RZMSAtIGRzdFkwKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIlNj
YWxpbmcgYW5kIGZsaXBwaW5nIGluIEJsaXRGcmFtZWJ1ZmZlckFOR0xFIG5vdCBzdXBwb3J0ZWQg
YnkgdGhpcyBpbXBsZW1lbnRhdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0UmVhZEZyYW1lYnVmZmVy
SGFuZGxlKCkgPT0gY29udGV4dC0+Z2V0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgRVJSKCJCbGl0cyB3aXRoIHRoZSBzYW1lIHNvdXJjZSBh
bmQgZGVzdGluYXRpb24gZnJhbWVidWZmZXIgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBpbXBs
ZW1lbnRhdGlvbi4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29udGV4dC0+Ymxp
dEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRz
dFgxLCBkc3RZMSwgbWFzayk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsVGV4SW1hZ2UzRE9FUyhHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv
aWQqIHBpeGVscykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGludCBs
ZXZlbCA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAweCVYLCAiCisgICAgICAgICAgIkdM
c2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xzaXplaSBkZXB0aCA9ICVk
LCBHTGludCBib3JkZXIgPSAlZCwgIgorICAgICAgICAgICJHTGVudW0gZm9ybWF0ID0gMHglWCwg
R0xlbnVtIHR5cGUgPSAweCV4LCBjb25zdCBHTHZvaWQqIHBpeGVscyA9IDB4JTAuOHApIiwKKyAg
ICAgICAgICB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworCisgICAgdHJ5CisgICAgeworICAg
ICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICB9CisgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZKTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsR2V0UHJvZ3JhbUJpbmFyeU9FUyhH
THVpbnQgcHJvZ3JhbSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqYmluYXJ5Rm9ybWF0LCB2b2lk
ICpiaW5hcnkpCit7CisgICAgRVZFTlQoIihHTGVudW0gcHJvZ3JhbSA9IDB4JVgsIGJ1ZlNpemUg
PSAlZCwgbGVuZ3RoID0gMHglMC44cCwgYmluYXJ5Rm9ybWF0ID0gMHglMC44cCwgYmluYXJ5ID0g
MHglMC44cCkiLAorICAgICAgICAgIHByb2dyYW0sIGJ1ZlNpemUsIGxlbmd0aCwgYmluYXJ5Rm9y
bWF0LCBiaW5hcnkpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBnbDo6Q29udGV4dCAqY29u
dGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRl
eHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVj
dCB8fCAhcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkgPSBw
cm9ncmFtT2JqZWN0LT5nZXRQcm9ncmFtQmluYXJ5KCk7CisKKyAgICAgICAgICAgIGlmICghcHJv
Z3JhbUJpbmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCFwcm9ncmFtQmluYXJ5LT5zYXZlKGJpbmFyeSwgYnVmU2l6ZSwgbGVuZ3RoKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgKmJpbmFyeUZvcm1hdCA9IEdM
X1BST0dSQU1fQklOQVJZX0FOR0xFOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6
YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01F
TU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3RkY2FsbCBnbFByb2dyYW1CaW5hcnlPRVMoR0x1
aW50IHByb2dyYW0sIEdMZW51bSBiaW5hcnlGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTGludCBsZW5ndGgpCit7CisgICAgRVZF
TlQoIihHTGVudW0gcHJvZ3JhbSA9IDB4JVgsIGJpbmFyeUZvcm1hdCA9IDB4JXgsIGJpbmFyeSA9
IDB4JTAuOHAsIGxlbmd0aCA9ICVkKSIsCisgICAgICAgICAgcHJvZ3JhbSwgYmluYXJ5Rm9ybWF0
LCBiaW5hcnksIGxlbmd0aCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChiaW5hcnlGb3JtYXQgIT0gR0xfUFJPR1JB
TV9CSU5BUllfQU5HTEUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGds
OjplcnJvcihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBn
bDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7
CisKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgY29udGV4dC0+c2V0UHJvZ3JhbUJpbmFyeShwcm9ncmFt
LCBiaW5hcnksIGxlbmd0aCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRf
YWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGdsRHJhd0J1ZmZlcnNFWFQoR0xzaXplaSBu
LCBjb25zdCBHTGVudW0gKmJ1ZnMpCit7CisgICAgRVZFTlQoIihHTGVudW0gbiA9ICVkLCBidWZz
ID0gMHglMC44cCkiLCBuLCBidWZzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENvbnRleHQoKTsKKworICAgICAgICBpZiAo
Y29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG4gPCAwIHx8ICh1bnNpZ25lZCBp
bnQpbiA+IGNvbnRleHQtPmdldE1heGltdW1SZW5kZXJUYXJnZXRzKCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldERyYXdGcmFtZWJ1ZmZl
ckhhbmRsZSgpID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKG4gIT0g
MSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGlmIChidWZzWzBdICE9IEdMX05PTkUgJiYgYnVmc1swXSAhPSBHTF9CQUNLKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGNv
bG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IG47IGNvbG9yQXR0YWNobWVudCsr
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtIGF0
dGFjaG1lbnQgPSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQgKyBjb2xvckF0dGFjaG1lbnQ7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChidWZzW2NvbG9yQXR0YWNobWVudF0gIT0gR0xfTk9ORSAm
JiBidWZzW2NvbG9yQXR0YWNobWVudF0gIT0gYXR0YWNobWVudCkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIg
PSBjb250ZXh0LT5nZXREcmF3RnJhbWVidWZmZXIoKTsKKworICAgICAgICAgICAgZm9yIChpbnQg
Y29sb3JBdHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgbjsgY29sb3JBdHRhY2htZW50
KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZnJhbWVidWZmZXItPnNldERyYXdC
dWZmZXJTdGF0ZShjb2xvckF0dGFjaG1lbnQsIGJ1ZnNbY29sb3JBdHRhY2htZW50XSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoaW50IGNvbG9yQXR0YWNobWVudCA9IG47IGNv
bG9yQXR0YWNobWVudCA8IChpbnQpY29udGV4dC0+Z2V0TWF4aW11bVJlbmRlclRhcmdldHMoKTsg
Y29sb3JBdHRhY2htZW50KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZnJhbWVi
dWZmZXItPnNldERyYXdCdWZmZXJTdGF0ZShjb2xvckF0dGFjaG1lbnQsIEdMX05PTkUpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNhdGNoIChzdGQ6OmJhZF9hbGxvYyYp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
IH0KK30KKworX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSBfX3N0ZGNh
bGwgZ2xHZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyICpwcm9jbmFtZSkKK3sKKyAgICBzdHJ1Y3Qg
RXh0ZW5zaW9uCisgICAgeworICAgICAgICBjb25zdCBjaGFyICpuYW1lOworICAgICAgICBfX2Vn
bE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlIGFkZHJlc3M7CisgICAgfTsKKwor
ICAgIHN0YXRpYyBjb25zdCBFeHRlbnNpb24gZ2xFeHRlbnNpb25zW10gPQorICAgIHsKKyAgICAg
ICAgeyJnbFRleEltYWdlM0RPRVMiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2lu
dGVyVHlwZSlnbFRleEltYWdlM0RPRVN9LAorICAgICAgICB7ImdsQmxpdEZyYW1lYnVmZmVyQU5H
TEUiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEJsaXRGcmFt
ZWJ1ZmZlckFOR0xFfSwKKyAgICAgICAgeyJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xSZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRX0sCisgICAgICAgIHsiZ2xEZWxldGVGZW5j
ZXNOViIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsRGVsZXRl
RmVuY2VzTlZ9LAorICAgICAgICB7ImdsR2VuRmVuY2VzTlYiLCAoX19lZ2xNdXN0Q2FzdFRvUHJv
cGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEdlbkZlbmNlc05WfSwKKyAgICAgICAgeyJnbElzRmVu
Y2VOViIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsSXNGZW5j
ZU5WfSwKKyAgICAgICAgeyJnbFRlc3RGZW5jZU5WIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1
bmN0aW9uUG9pbnRlclR5cGUpZ2xUZXN0RmVuY2VOVn0sCisgICAgICAgIHsiZ2xHZXRGZW5jZWl2
TlYiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEdldEZlbmNl
aXZOVn0sCisgICAgICAgIHsiZ2xGaW5pc2hGZW5jZU5WIiwgKF9fZWdsTXVzdENhc3RUb1Byb3Bl
ckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xGaW5pc2hGZW5jZU5WfSwKKyAgICAgICAgeyJnbFNldEZl
bmNlTlYiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbFNldEZl
bmNlTlZ9LAorICAgICAgICB7ImdsR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFIiwgKF9f
ZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xHZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlQU5HTEV9LAorICAgICAgICB7ImdsVGV4U3RvcmFnZTJERVhUIiwgKF9fZWdsTXVz
dENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xUZXhTdG9yYWdlMkRFWFR9LAorICAg
ICAgICB7ImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9w
ZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVH0sCisgICAg
ICAgIHsiZ2xSZWFkblBpeGVsc0VYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBv
aW50ZXJUeXBlKWdsUmVhZG5QaXhlbHNFWFR9LAorICAgICAgICB7ImdsR2V0blVuaWZvcm1mdkVY
VCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsR2V0blVuaWZv
cm1mdkVYVH0sCisgICAgICAgIHsiZ2xHZXRuVW5pZm9ybWl2RVhUIiwgKF9fZWdsTXVzdENhc3RU
b1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xHZXRuVW5pZm9ybWl2RVhUfSwKKyAgICAgICAg
eyJnbEdlblF1ZXJpZXNFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVy
VHlwZSlnbEdlblF1ZXJpZXNFWFR9LAorICAgICAgICB7ImdsRGVsZXRlUXVlcmllc0VYVCIsIChf
X2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsRGVsZXRlUXVlcmllc0VY
VH0sCisgICAgICAgIHsiZ2xJc1F1ZXJ5RVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0
aW9uUG9pbnRlclR5cGUpZ2xJc1F1ZXJ5RVhUfSwKKyAgICAgICAgeyJnbEJlZ2luUXVlcnlFWFQi
LCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEJlZ2luUXVlcnlF
WFR9LAorICAgICAgICB7ImdsRW5kUXVlcnlFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVu
Y3Rpb25Qb2ludGVyVHlwZSlnbEVuZFF1ZXJ5RVhUfSwKKyAgICAgICAgeyJnbEdldFF1ZXJ5aXZF
WFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEdldFF1ZXJ5
aXZFWFR9LAorICAgICAgICB7ImdsR2V0UXVlcnlPYmplY3R1aXZFWFQiLCAoX19lZ2xNdXN0Q2Fz
dFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUfSwKKyAg
ICAgICAgeyJnbERyYXdCdWZmZXJzRVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9u
UG9pbnRlclR5cGUpZ2xEcmF3QnVmZmVyc0VYVH0sCisgICAgICAgIHsiZ2xWZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSln
bFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRX0sCisgICAgICAgIHsiZ2xEcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbERy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRX0sCisgICAgICAgIHsiZ2xEcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRSIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsRHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEV9LAorICAgICAgICB7ImdsR2V0UHJvZ3JhbUJpbmFyeU9F
UyIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsR2V0UHJvZ3Jh
bUJpbmFyeU9FU30sCisgICAgICAgIHsiZ2xQcm9ncmFtQmluYXJ5T0VTIiwgKF9fZWdsTXVzdENh
c3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xQcm9ncmFtQmluYXJ5T0VTfSwgICAgfTsK
KworICAgIGZvciAodW5zaWduZWQgaW50IGV4dCA9IDA7IGV4dCA8IEFycmF5U2l6ZShnbEV4dGVu
c2lvbnMpOyBleHQrKykKKyAgICB7CisgICAgICAgIGlmIChzdHJjbXAocHJvY25hbWUsIGdsRXh0
ZW5zaW9uc1tleHRdLm5hbWUpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAo
X19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbEV4dGVuc2lvbnNbZXh0
XS5hZGRyZXNzOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8v
IE5vbi1wdWJsaWMgZnVuY3Rpb25zIHVzZWQgYnkgRUdMCisKK2Jvb2wgX19zdGRjYWxsIGdsQmlu
ZFRleEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKK3sKKyAgICBFVkVOVCgiKGVnbDo6U3Vy
ZmFjZSogc3VyZmFjZSA9IDB4JTAuOHApIiwKKyAgICAgICAgICBzdXJmYWNlKTsKKworICAgIHRy
eQorICAgIHsKKyAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKKworICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
Z2w6OlRleHR1cmUyRCAqdGV4dHVyZU9iamVjdCA9IGNvbnRleHQtPmdldFRleHR1cmUyRCgpOwor
CisgICAgICAgICAgICBpZiAodGV4dHVyZU9iamVjdC0+aXNJbW11dGFibGUoKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICh0ZXh0dXJlT2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHRleHR1cmVPYmplY3QtPmJpbmRUZXhJbWFnZShzdXJmYWNlKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxODUgQEAKK0xJQlJBUlkgbGliR0xFU3YyCitFWFBPUlRTCisgICAg
Z2xBY3RpdmVUZXh0dXJlICAgICAgICAgICAgICAgICBAMQorICAgIGdsQXR0YWNoU2hhZGVyICAg
ICAgICAgICAgICAgICAgQDIKKyAgICBnbEJpbmRBdHRyaWJMb2NhdGlvbiAgICAgICAgICAgIEAz
CisgICAgZ2xCaW5kQnVmZmVyICAgICAgICAgICAgICAgICAgICBANAorICAgIGdsQmluZEZyYW1l
YnVmZmVyICAgICAgICAgICAgICAgQDUKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIgICAgICAgICAg
ICAgIEA2CisgICAgZ2xCaW5kVGV4dHVyZSAgICAgICAgICAgICAgICAgICBANworICAgIGdsQmxl
bmRDb2xvciAgICAgICAgICAgICAgICAgICAgQDgKKyAgICBnbEJsZW5kRXF1YXRpb24gICAgICAg
ICAgICAgICAgIEA5CisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUgICAgICAgICBAMTAKKyAg
ICBnbEJsZW5kRnVuYyAgICAgICAgICAgICAgICAgICAgIEAxMQorICAgIGdsQmxlbmRGdW5jU2Vw
YXJhdGUgICAgICAgICAgICAgQDEyCisgICAgZ2xCdWZmZXJEYXRhICAgICAgICAgICAgICAgICAg
ICBAMTMKKyAgICBnbEJ1ZmZlclN1YkRhdGEgICAgICAgICAgICAgICAgIEAxNAorICAgIGdsQ2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyAgICAgICAgQDE1CisgICAgZ2xDbGVhciAgICAgICAgICAgICAg
ICAgICAgICAgICBAMTYKKyAgICBnbENsZWFyQ29sb3IgICAgICAgICAgICAgICAgICAgIEAxNwor
ICAgIGdsQ2xlYXJEZXB0aGYgICAgICAgICAgICAgICAgICAgQDE4CisgICAgZ2xDbGVhclN0ZW5j
aWwgICAgICAgICAgICAgICAgICBAMTkKKyAgICBnbENvbG9yTWFzayAgICAgICAgICAgICAgICAg
ICAgIEAyMAorICAgIGdsQ29tcGlsZVNoYWRlciAgICAgICAgICAgICAgICAgQDIxCisgICAgZ2xD
b21wcmVzc2VkVGV4SW1hZ2UyRCAgICAgICAgICBAMjIKKyAgICBnbENvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEICAgICAgIEAyMworICAgIGdsQ29weVRleEltYWdlMkQgICAgICAgICAgICAgICAgQDI0
CisgICAgZ2xDb3B5VGV4U3ViSW1hZ2UyRCAgICAgICAgICAgICBAMjUKKyAgICBnbENyZWF0ZVBy
b2dyYW0gICAgICAgICAgICAgICAgIEAyNgorICAgIGdsQ3JlYXRlU2hhZGVyICAgICAgICAgICAg
ICAgICAgQDI3CisgICAgZ2xDdWxsRmFjZSAgICAgICAgICAgICAgICAgICAgICBAMjgKKyAgICBn
bERlbGV0ZUJ1ZmZlcnMgICAgICAgICAgICAgICAgIEAyOQorICAgIGdsRGVsZXRlRnJhbWVidWZm
ZXJzICAgICAgICAgICAgQDMwCisgICAgZ2xEZWxldGVQcm9ncmFtICAgICAgICAgICAgICAgICBA
MzIKKyAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMgICAgICAgICAgIEAzMworICAgIGdsRGVsZXRl
U2hhZGVyICAgICAgICAgICAgICAgICAgQDM0CisgICAgZ2xEZWxldGVUZXh0dXJlcyAgICAgICAg
ICAgICAgICBAMzEKKyAgICBnbERlcHRoRnVuYyAgICAgICAgICAgICAgICAgICAgIEAzNgorICAg
IGdsRGVwdGhNYXNrICAgICAgICAgICAgICAgICAgICAgQDM3CisgICAgZ2xEZXB0aFJhbmdlZiAg
ICAgICAgICAgICAgICAgICBAMzgKKyAgICBnbERldGFjaFNoYWRlciAgICAgICAgICAgICAgICAg
IEAzNQorICAgIGdsRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgQDM5CisgICAgZ2xEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkgICAgICBANDAKKyAgICBnbERyYXdBcnJheXMgICAgICAgICAg
ICAgICAgICAgIEA0MQorICAgIGdsRHJhd0VsZW1lbnRzICAgICAgICAgICAgICAgICAgQDQyCisg
ICAgZ2xFbmFibGUgICAgICAgICAgICAgICAgICAgICAgICBANDMKKyAgICBnbEVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5ICAgICAgIEA0NAorICAgIGdsRmluaXNoICAgICAgICAgICAgICAgICAgICAg
ICAgQDQ1CisgICAgZ2xGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICBANDYKKyAgICBnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyICAgICAgIEA0NworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJl
MkQgICAgICAgICAgQDQ4CisgICAgZ2xGcm9udEZhY2UgICAgICAgICAgICAgICAgICAgICBANDkK
KyAgICBnbEdlbkJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgIEA1MAorICAgIGdsR2VuRnJhbWVi
dWZmZXJzICAgICAgICAgICAgICAgQDUyCisgICAgZ2xHZW5SZW5kZXJidWZmZXJzICAgICAgICAg
ICAgICBANTMKKyAgICBnbEdlblRleHR1cmVzICAgICAgICAgICAgICAgICAgIEA1NAorICAgIGds
R2VuZXJhdGVNaXBtYXAgICAgICAgICAgICAgICAgQDUxCisgICAgZ2xHZXRBY3RpdmVBdHRyaWIg
ICAgICAgICAgICAgICBANTUKKyAgICBnbEdldEFjdGl2ZVVuaWZvcm0gICAgICAgICAgICAgIEA1
NgorICAgIGdsR2V0QXR0YWNoZWRTaGFkZXJzICAgICAgICAgICAgQDU3CisgICAgZ2xHZXRBdHRy
aWJMb2NhdGlvbiAgICAgICAgICAgICBANTgKKyAgICBnbEdldEJvb2xlYW52ICAgICAgICAgICAg
ICAgICAgIEA1OQorICAgIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYgICAgICAgICAgQDYwCisgICAg
Z2xHZXRFcnJvciAgICAgICAgICAgICAgICAgICAgICBANjEKKyAgICBnbEdldEZsb2F0diAgICAg
ICAgICAgICAgICAgICAgIEA2MgorICAgIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXYgICBANjMKKyAgICBnbEdldEludGVnZXJ2ICAgICAgICAgICAgICAgICAgIEA2NAorICAg
IGdsR2V0UHJvZ3JhbUluZm9Mb2cgICAgICAgICAgICAgQDY2CisgICAgZ2xHZXRQcm9ncmFtaXYg
ICAgICAgICAgICAgICAgICBANjUKKyAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2ICAg
IEA2NworICAgIGdsR2V0U2hhZGVySW5mb0xvZyAgICAgICAgICAgICAgQDY5CisgICAgZ2xHZXRT
aGFkZXJQcmVjaXNpb25Gb3JtYXQgICAgICBANzAKKyAgICBnbEdldFNoYWRlclNvdXJjZSAgICAg
ICAgICAgICAgIEA3MQorICAgIGdsR2V0U2hhZGVyaXYgICAgICAgICAgICAgICAgICAgQDY4Cisg
ICAgZ2xHZXRTdHJpbmcgICAgICAgICAgICAgICAgICAgICBANzIKKyAgICBnbEdldFRleFBhcmFt
ZXRlcmZ2ICAgICAgICAgICAgIEA3MworICAgIGdsR2V0VGV4UGFyYW1ldGVyaXYgICAgICAgICAg
ICAgQDc0CisgICAgZ2xHZXRVbmlmb3JtTG9jYXRpb24gICAgICAgICAgICBANzcKKyAgICBnbEdl
dFVuaWZvcm1mdiAgICAgICAgICAgICAgICAgIEA3NQorICAgIGdsR2V0VW5pZm9ybWl2ICAgICAg
ICAgICAgICAgICAgQDc2CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiAgICAgICBAODAK
KyAgICBnbEdldFZlcnRleEF0dHJpYmZ2ICAgICAgICAgICAgIEA3OAorICAgIGdsR2V0VmVydGV4
QXR0cmliaXYgICAgICAgICAgICAgQDc5CisgICAgZ2xIaW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICBAODEKKyAgICBnbElzQnVmZmVyICAgICAgICAgICAgICAgICAgICAgIEA4MgorICAgIGds
SXNFbmFibGVkICAgICAgICAgICAgICAgICAgICAgQDgzCisgICAgZ2xJc0ZyYW1lYnVmZmVyICAg
ICAgICAgICAgICAgICBAODQKKyAgICBnbElzUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAgIEA4
NQorICAgIGdsSXNSZW5kZXJidWZmZXIgICAgICAgICAgICAgICAgQDg2CisgICAgZ2xJc1NoYWRl
ciAgICAgICAgICAgICAgICAgICAgICBAODcKKyAgICBnbElzVGV4dHVyZSAgICAgICAgICAgICAg
ICAgICAgIEA4OAorICAgIGdsTGluZVdpZHRoICAgICAgICAgICAgICAgICAgICAgQDg5CisgICAg
Z2xMaW5rUHJvZ3JhbSAgICAgICAgICAgICAgICAgICBAOTAKKyAgICBnbFBpeGVsU3RvcmVpICAg
ICAgICAgICAgICAgICAgIEA5MQorICAgIGdsUG9seWdvbk9mZnNldCAgICAgICAgICAgICAgICAg
QDkyCisgICAgZ2xSZWFkUGl4ZWxzICAgICAgICAgICAgICAgICAgICBAOTMKKyAgICBnbFJlbGVh
c2VTaGFkZXJDb21waWxlciAgICAgICAgIEA5NAorICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZSAg
ICAgICAgICAgQDk1CisgICAgZ2xTYW1wbGVDb3ZlcmFnZSAgICAgICAgICAgICAgICBAOTYKKyAg
ICBnbFNjaXNzb3IgICAgICAgICAgICAgICAgICAgICAgIEA5NworICAgIGdsU2hhZGVyQmluYXJ5
ICAgICAgICAgICAgICAgICAgQDk4CisgICAgZ2xTaGFkZXJTb3VyY2UgICAgICAgICAgICAgICAg
ICBAOTkKKyAgICBnbFN0ZW5jaWxGdW5jICAgICAgICAgICAgICAgICAgIEAxMDAKKyAgICBnbFN0
ZW5jaWxGdW5jU2VwYXJhdGUgICAgICAgICAgIEAxMDEKKyAgICBnbFN0ZW5jaWxNYXNrICAgICAg
ICAgICAgICAgICAgIEAxMDIKKyAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUgICAgICAgICAgIEAx
MDMKKyAgICBnbFN0ZW5jaWxPcCAgICAgICAgICAgICAgICAgICAgIEAxMDQKKyAgICBnbFN0ZW5j
aWxPcFNlcGFyYXRlICAgICAgICAgICAgIEAxMDUKKyAgICBnbFRleEltYWdlMkQgICAgICAgICAg
ICAgICAgICAgIEAxMDYKKyAgICBnbFRleFBhcmFtZXRlcmYgICAgICAgICAgICAgICAgIEAxMDcK
KyAgICBnbFRleFBhcmFtZXRlcmZ2ICAgICAgICAgICAgICAgIEAxMDgKKyAgICBnbFRleFBhcmFt
ZXRlcmkgICAgICAgICAgICAgICAgIEAxMDkKKyAgICBnbFRleFBhcmFtZXRlcml2ICAgICAgICAg
ICAgICAgIEAxMTAKKyAgICBnbFRleFN1YkltYWdlMkQgICAgICAgICAgICAgICAgIEAxMTEKKyAg
ICBnbFVuaWZvcm0xZiAgICAgICAgICAgICAgICAgICAgIEAxMTIKKyAgICBnbFVuaWZvcm0xZnYg
ICAgICAgICAgICAgICAgICAgIEAxMTMKKyAgICBnbFVuaWZvcm0xaSAgICAgICAgICAgICAgICAg
ICAgIEAxMTQKKyAgICBnbFVuaWZvcm0xaXYgICAgICAgICAgICAgICAgICAgIEAxMTUKKyAgICBn
bFVuaWZvcm0yZiAgICAgICAgICAgICAgICAgICAgIEAxMTYKKyAgICBnbFVuaWZvcm0yZnYgICAg
ICAgICAgICAgICAgICAgIEAxMTcKKyAgICBnbFVuaWZvcm0yaSAgICAgICAgICAgICAgICAgICAg
IEAxMTgKKyAgICBnbFVuaWZvcm0yaXYgICAgICAgICAgICAgICAgICAgIEAxMTkKKyAgICBnbFVu
aWZvcm0zZiAgICAgICAgICAgICAgICAgICAgIEAxMjAKKyAgICBnbFVuaWZvcm0zZnYgICAgICAg
ICAgICAgICAgICAgIEAxMjEKKyAgICBnbFVuaWZvcm0zaSAgICAgICAgICAgICAgICAgICAgIEAx
MjIKKyAgICBnbFVuaWZvcm0zaXYgICAgICAgICAgICAgICAgICAgIEAxMjMKKyAgICBnbFVuaWZv
cm00ZiAgICAgICAgICAgICAgICAgICAgIEAxMjQKKyAgICBnbFVuaWZvcm00ZnYgICAgICAgICAg
ICAgICAgICAgIEAxMjUKKyAgICBnbFVuaWZvcm00aSAgICAgICAgICAgICAgICAgICAgIEAxMjYK
KyAgICBnbFVuaWZvcm00aXYgICAgICAgICAgICAgICAgICAgIEAxMjcKKyAgICBnbFVuaWZvcm1N
YXRyaXgyZnYgICAgICAgICAgICAgIEAxMjgKKyAgICBnbFVuaWZvcm1NYXRyaXgzZnYgICAgICAg
ICAgICAgIEAxMjkKKyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYgICAgICAgICAgICAgIEAxMzAKKyAg
ICBnbFVzZVByb2dyYW0gICAgICAgICAgICAgICAgICAgIEAxMzEKKyAgICBnbFZhbGlkYXRlUHJv
Z3JhbSAgICAgICAgICAgICAgIEAxMzIKKyAgICBnbFZlcnRleEF0dHJpYjFmICAgICAgICAgICAg
ICAgIEAxMzMKKyAgICBnbFZlcnRleEF0dHJpYjFmdiAgICAgICAgICAgICAgIEAxMzQKKyAgICBn
bFZlcnRleEF0dHJpYjJmICAgICAgICAgICAgICAgIEAxMzUKKyAgICBnbFZlcnRleEF0dHJpYjJm
diAgICAgICAgICAgICAgIEAxMzYKKyAgICBnbFZlcnRleEF0dHJpYjNmICAgICAgICAgICAgICAg
IEAxMzcKKyAgICBnbFZlcnRleEF0dHJpYjNmdiAgICAgICAgICAgICAgIEAxMzgKKyAgICBnbFZl
cnRleEF0dHJpYjRmICAgICAgICAgICAgICAgIEAxMzkKKyAgICBnbFZlcnRleEF0dHJpYjRmdiAg
ICAgICAgICAgICAgIEAxNDAKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIgICAgICAgICAgIEAx
NDEKKyAgICBnbFZpZXdwb3J0ICAgICAgICAgICAgICAgICAgICAgIEAxNDIKKworICAgIDsgRXh0
ZW5zaW9ucworICAgIGdsVGV4SW1hZ2UzRE9FUyAgICAgICAgICAgICAgICAgQDE0MworICAgIGds
QmxpdEZyYW1lYnVmZmVyQU5HTEUgICAgICAgICAgQDE0OQorICAgIGdsUmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUgQDE1MAorICAgIGdsRGVsZXRlRmVuY2VzTlYgICAgICAgICAg
ICAgICAgQDE1MQorICAgIGdsRmluaXNoRmVuY2VOViAgICAgICAgICAgICAgICAgQDE1MgorICAg
IGdsR2VuRmVuY2VzTlYgICAgICAgICAgICAgICAgICAgQDE1MworICAgIGdsR2V0RmVuY2Vpdk5W
ICAgICAgICAgICAgICAgICAgQDE1NAorICAgIGdsSXNGZW5jZU5WICAgICAgICAgICAgICAgICAg
ICAgQDE1NQorICAgIGdsU2V0RmVuY2VOViAgICAgICAgICAgICAgICAgICAgQDE1NgorICAgIGds
VGVzdEZlbmNlTlYgICAgICAgICAgICAgICAgICAgQDE1NworICAgIGdsR2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFIEAxNTkKKyAgICBnbFRleFN0b3JhZ2UyREVYVCAgICAgICAgICAgICAg
IEAxNjAKKyAgICBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQgICAgIEAxNjEKKyAgICBnbFJl
YWRuUGl4ZWxzRVhUICAgICAgICAgICAgICAgIEAxNjIKKyAgICBnbEdldG5Vbmlmb3JtZnZFWFQg
ICAgICAgICAgICAgIEAxNjMKKyAgICBnbEdldG5Vbmlmb3JtaXZFWFQgICAgICAgICAgICAgIEAx
NjQKKyAgICBnbEdlblF1ZXJpZXNFWFQgICAgICAgICAgICAgICAgIEAxNjUKKyAgICBnbERlbGV0
ZVF1ZXJpZXNFWFQgICAgICAgICAgICAgIEAxNjYKKyAgICBnbElzUXVlcnlFWFQgICAgICAgICAg
ICAgICAgICAgIEAxNjcKKyAgICBnbEJlZ2luUXVlcnlFWFQgICAgICAgICAgICAgICAgIEAxNjgK
KyAgICBnbEVuZFF1ZXJ5RVhUICAgICAgICAgICAgICAgICAgIEAxNjkKKyAgICBnbEdldFF1ZXJ5
aXZFWFQgICAgICAgICAgICAgICAgIEAxNzAKKyAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUICAg
ICAgICAgIEAxNzEKKyAgICBnbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSAgICAgIEAxNzIKKyAg
ICBnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSAgICAgIEAxNzMKKyAgICBnbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFICAgIEAxNzQKKyAgICBnbFByb2dyYW1CaW5hcnlPRVMgICAgICAgICAg
ICAgIEAxNzUKKyAgICBnbEdldFByb2dyYW1CaW5hcnlPRVMgICAgICAgICAgIEAxNzYKKyAgICBn
bERyYXdCdWZmZXJzRVhUICAgICAgICAgICAgICAgIEAxNzkKKworICAgIDsgRUdMIGRlcGVuZGVu
Y2llcworICAgIGdsQ3JlYXRlQ29udGV4dCAgICAgICAgICAgICAgICAgQDE0NCBOT05BTUUKKyAg
ICBnbERlc3Ryb3lDb250ZXh0ICAgICAgICAgICAgICAgIEAxNDUgTk9OQU1FCisgICAgZ2xNYWtl
Q3VycmVudCAgICAgICAgICAgICAgICAgICBAMTQ2IE5PTkFNRQorICAgIGdsR2V0Q3VycmVudENv
bnRleHQgICAgICAgICAgICAgQDE0NyBOT05BTUUKKyAgICBnbEdldFByb2NBZGRyZXNzICAgICAg
ICAgICAgICAgIEAxNDggTk9OQU1FCisgICAgZ2xCaW5kVGV4SW1hZ2UgICAgICAgICAgICAgICAg
ICBAMTU4IE5PTkFNRQorICAgIGdsQ3JlYXRlUmVuZGVyZXIgICAgICAgICAgICAgICAgQDE3NyBO
T05BTUUKKyAgICBnbERlc3Ryb3lSZW5kZXJlciAgICAgICAgICAgICAgIEAxNzggTk9OQU1FClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIucmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIucmMJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYwkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMDIgQEAKKy8vIE1pY3Jvc29mdCBWaXN1YWwgQysrIGdlbmVyYXRlZCBy
ZXNvdXJjZSBzY3JpcHQuCisvLworI2luY2x1ZGUgInJlc291cmNlLmgiCisKKyNkZWZpbmUgQVBT
VFVESU9fUkVBRE9OTFlfU1lNQk9MUworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBHZW5l
cmF0ZWQgZnJvbSB0aGUgVEVYVElOQ0xVREUgMiByZXNvdXJjZS4KKy8vCisjaW5jbHVkZSA8d2lu
ZG93cy5oPgorI2luY2x1ZGUgIi4uL2NvbW1vbi92ZXJzaW9uLmgiCisKKy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCisjdW5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUworCisvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLworLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzCisKKyNpZiAhZGVmaW5lZChBRlhf
UkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX0VOVSkKKyNpZmRlZiBfV0lOMzIKK0xB
TkdVQUdFIExBTkdfRU5HTElTSCwgU1VCTEFOR19FTkdMSVNIX1VTCisjcHJhZ21hIGNvZGVfcGFn
ZSgxMjUyKQorI2VuZGlmIC8vX1dJTjMyCisKKyNpZmRlZiBBUFNUVURJT19JTlZPS0VECisvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLworLy8KKy8vIFRFWFRJTkNMVURFCisvLworCisxIFRFWFRJTkNMVURF
IAorQkVHSU4KKyAgICAicmVzb3VyY2UuaFwwIgorRU5ECisKKzIgVEVYVElOQ0xVREUgCitCRUdJ
TgorICAgICIjaW5jbHVkZSAiImFmeHJlcy5oIiJcclxuIgorICAgICIjaW5jbHVkZSAiIi4uL2Nv
bW1vbi92ZXJzaW9uLmgiIlwwIgorRU5ECisKKzMgVEVYVElOQ0xVREUgCitCRUdJTgorICAgICJc
clxuIgorICAgICJcMCIKK0VORAorCisjZW5kaWYgICAgLy8gQVBTVFVESU9fSU5WT0tFRAorCisK
Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gVmVyc2lvbgorLy8KKworVlNfVkVSU0lPTl9J
TkZPIFZFUlNJT05JTkZPCisgRklMRVZFUlNJT04gTUFKT1JfVkVSU0lPTixNSU5PUl9WRVJTSU9O
LEJVSUxEX1ZFUlNJT04sQlVJTERfUkVWSVNJT04KKyBQUk9EVUNUVkVSU0lPTiBNQUpPUl9WRVJT
SU9OLE1JTk9SX1ZFUlNJT04sQlVJTERfVkVSU0lPTixCVUlMRF9SRVZJU0lPTgorIEZJTEVGTEFH
U01BU0sgMHgxN0wKKyNpZmRlZiBfREVCVUcKKyBGSUxFRkxBR1MgMHgxTAorI2Vsc2UKKyBGSUxF
RkxBR1MgMHgwTAorI2VuZGlmCisgRklMRU9TIDB4NEwKKyBGSUxFVFlQRSAweDJMCisgRklMRVNV
QlRZUEUgMHgwTAorQkVHSU4KKyAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCisgICAgQkVHSU4K
KyAgICAgICAgQkxPQ0sgIjA0MDkwNGIwIgorICAgICAgICBCRUdJTgorICAgICAgICAgICAgVkFM
VUUgIkZpbGVEZXNjcmlwdGlvbiIsICJBTkdMRSBsaWJHTEVTdjIgRHluYW1pYyBMaW5rIExpYnJh
cnkiCisgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBWRVJTSU9OX1NUUklORworICAg
ICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJsaWJHTEVTdjIiCisgICAgICAgICAgICBW
QUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIgor
ICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAibGliR0xFU3YyLmRsbCIKKyAg
ICAgICAgICAgIFZBTFVFICJQcml2YXRlQnVpbGQiLCBWRVJTSU9OX1NUUklORworICAgICAgICAg
ICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIkFOR0xFIGxpYkdMRVN2MiBEeW5hbWljIExpbmsgTGli
cmFyeSIKKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsIFZFUlNJT05fU1RSSU5H
CisgICAgICAgIEVORAorICAgIEVORAorICAgIEJMT0NLICJWYXJGaWxlSW5mbyIKKyAgICBCRUdJ
TgorICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDQwOSwgMTIwMAorICAgIEVORAorRU5E
CisKKyNlbmRpZiAgICAvLyBFbmdsaXNoIChVLlMuKSByZXNvdXJjZXMKKy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCisKKworCisjaWZuZGVmIEFQU1RVRElPX0lOVk9LRUQKKy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCisvLworLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDMgcmVzb3VyY2UuCisv
LworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisjZW5kaWYgICAgLy8gbm90IEFQU1RVRElPX0lO
Vk9LRUQKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xF
U3YyLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9saWJHTEVTdjIudmN4cHJvagkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLnZjeHByb2oJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDIzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/
Pg0KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHht
bG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMi
Pg0KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCisgICAgPFBy
b2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCisgICAgICA8Q29uZmln
dXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+V2luMzI8L1Bs
YXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KKyAgICA8UHJvamVjdENvbmZp
Z3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1
ZzwvQ29uZmlndXJhdGlvbj4NCisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4NCisgICAg
PC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IlJlbGVhc2V8V2luMzIiPg0KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZp
Z3VyYXRpb24+DQorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCisgICAgPC9Qcm9q
ZWN0Q29uZmlndXJhdGlvbj4NCisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJl
bGVhc2V8eDY0Ij4NCisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9u
Pg0KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPg0KKyAgICA8L1Byb2plY3RDb25maWd1
cmF0aW9uPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFs
cyI+DQorICAgIDxQcm9qZWN0R3VpZD57QjU4NzFBN0EtOTY4Qy00MkUzLUEzM0ItOTgxRTZGNDQ4
RTc4fTwvUHJvamVjdEd1aWQ+DQorICAgIDxSb290TmFtZXNwYWNlPmxpYkdMRVN2MjwvUm9vdE5h
bWVzcGFjZT4NCisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KKyAgPC9Qcm9wZXJ0
eUdyb3VwPg0KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5D
cHAuRGVmYXVsdC5wcm9wcyIgLz4NCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1
cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1
cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQor
ICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0
aW9uPg0KKyAgPC9Qcm9wZXJ0eUdyb3VwPg0KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25m
aWd1cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25m
aWd1cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+
DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPg0KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3Vy
YXRpb25UeXBlPg0KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCisg
ICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRp
b24+DQorICA8L1Byb3BlcnR5R3JvdXA+DQorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1
cmF0aW9uIj4NCisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1
cmF0aW9uVHlwZT4NCisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQor
ICA8L1Byb3BlcnR5R3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
TWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4NCisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9u
U2V0dGluZ3MiPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0i
UHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1p
Y3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJl
bD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9y
dEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQorICA8L0ltcG9ydEdy
b3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KKyAgICA8SW1w
b3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAu
JChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+
DQorICA8L0ltcG9ydEdyb3VwPg0KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4NCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0
YVBsYXRmb3JtIiAvPg0KKyAgPC9JbXBvcnRHcm91cD4NCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVs
PSJVc2VyTWFjcm9zIiAvPg0KKyAgPFByb3BlcnR5R3JvdXA+DQorICAgIDxfUHJvamVjdEZpbGVW
ZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCisgICAgPE91dERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4k
KENvbmZpZ3VyYXRpb24pXDwvSW50RGlyPg0KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9M
aW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3Vy
YXRpb24pXDwvT3V0RGlyPg0KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoQ29uZmlndXJhdGlvbilcPC9JbnRE
aXI+DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisg
ICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091
dERpcj4NCisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPiQoUGxhdGZvcm0pXCQoQ29uZmlndXJhdGlvbilcPC9JbnREaXI+
DQorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9MaW5rSW5jcmVtZW50YWw+DQorICAgIDxPdXRE
aXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4N
CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+JChQbGF0Zm9ybSlcJChDb25maWd1cmF0aW9uKVw8L0ludERpcj4NCisg
ICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCisgICAgPEluY2x1
ZGVQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXx4NjQnIj4kKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBhdGg+DQorICAgIDxMaWJyYXJ5UGF0aCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+
JChMaWJyYXJ5UGF0aCk8L0xpYnJhcnlQYXRoPg0KKyAgICA8SW5jbHVkZVBhdGggQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKEluY2x1ZGVQ
YXRoKTwvSW5jbHVkZVBhdGg+DQorICAgIDxMaWJyYXJ5UGF0aCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTGlicmFyeVBhdGgpPC9MaWJy
YXJ5UGF0aD4NCisgICAgPEluY2x1ZGVQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBhdGg+
DQorICAgIDxJbmNsdWRlUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj4kKEluY2x1ZGVQYXRoKTwvSW5jbHVkZVBhdGg+DQorICAg
IDxMaWJyYXJ5UGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+JChMaWJyYXJ5UGF0aCk8L0xpYnJhcnlQYXRoPg0KKyAgICA8TGlicmFy
eVBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
fFdpbjMyJyI+JChMaWJyYXJ5UGF0aCk8L0xpYnJhcnlQYXRoPg0KKyAgPC9Qcm9wZXJ0eUdyb3Vw
Pg0KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxP
cHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpOyQoUHJvamVjdERpcikvLi47ICQoUHJvamVj
dERpcikvLi4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5XSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtMSUJHTEVTVjJfRVhQT1JUUztfQ1JUX1NF
Q1VSRV9OT19ERVBSRUNBVEU7Tk9NSU5NQVg7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1By
ZXByb2Nlc3NvckRlZmluaXRpb25zPg0KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5p
bWFsUmVidWlsZD4NCisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8
L0Jhc2ljUnVudGltZUNoZWNrcz4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRl
ZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9Q
cmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xl
dmVsPg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJy
b3I+DQorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAw
OzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7JShEaXNhYmxlU3BlY2lmaWNXYXJu
aW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRl
ckZpbGU+cHJlY29tcGlsZWQuaDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAgIDxBZGRp
dGlvbmFsT3B0aW9ucz4kKEV4dGVybmFsQ29tcGlsZXJPcHRpb25zKSAlKEFkZGl0aW9uYWxPcHRp
b25zKTwvQWRkaXRpb25hbE9wdGlvbnM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGluaz4N
CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5kM2Q5LmxpYjtkeGd1aWQubGliOyUoQWRk
aXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPE1v
ZHVsZURlZmluaXRpb25GaWxlPmxpYkdMRVN2Mi5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPg0K
KyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9y
bWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KKyAgICAgIDxE
YXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9u
Pg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+DQorICAg
IDwvTGluaz4NCisgICAgPFBvc3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxDb21tYW5kPiU0MGVjaG8g
b24NCitta2RpciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCitj
b3B5ICIkKE91dERpcilsaWJHTEVTdjIuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENv
bmZpZ3VyYXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJHTEVTdjIubGliIiAiJChQcm9qZWN0
RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCislNDBlY2hvIG9mZg0KKzwvQ29tbWFu
ZD4NCisgICAgPC9Qb3N0QnVpbGRFdmVudD4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCisg
IDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KKyAgICA8Q2xDb21waWxlPg0KKyAgICAgIDxPcHRp
bWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8SW5saW5lRnVuY3Rpb25F
eHBhbnNpb24+QW55U3VpdGFibGU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KKyAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHJvamVjdERpcik7JChQcm9qZWN0RGlyKS8u
LjsgJChQcm9qZWN0RGlyKS8uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQorICAgICAgPFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPkFOR0xFX0RJU0FCTEVfVFJBQ0U7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19V
U1JETEw7TElCR0xFU1YyX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFY
O19TRUNVUkVfU0NMPTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRl
ZmluaXRpb25zPg0KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1l
TGlicmFyeT4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRl
cj4NCisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxU
cmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+DQorICAgICAgPERl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0Pg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5
OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDcxODslKERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlz
YWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyRmlsZT5wcmVj
b21waWxlZC5oPC9QcmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPEFkZGl0aW9uYWxPcHRp
b25zPiQoRXh0ZXJuYWxDb21waWxlck9wdGlvbnMpICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRp
dGlvbmFsT3B0aW9ucz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxB
ZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmQzZDkubGliO2R4Z3VpZC5saWI7JShBZGRpdGlvbmFsRGVw
ZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8SWdub3JlQWxsRGVm
YXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4NCisgICAgICA8
TW9kdWxlRGVmaW5pdGlvbkZpbGU+bGliR0xFU3YyLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+
DQorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5m
b3JtYXRpb24+DQorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAg
PE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVu
YWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0
YUV4ZWN1dGlvblByZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4N
CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8
L0xpbms+DQorICAgIDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9u
DQorbWtkaXIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29w
eSAiJChPdXREaXIpbGliR0xFU3YyLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25m
aWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmxpYiIgIiQoUHJvamVjdERp
cikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+
DQorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8
SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPg0KKyAgICA8TWlkbD4NCisgICAgICA8VGFyZ2V0RW52aXJvbm1l
bnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4NCisgICAgPC9NaWRsPg0KKyAgICA8Q2xDb21waWxl
Pg0KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCisgICAgICA8
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2plY3REaXIpLy4uOyAkKFByb2plY3RE
aXIpLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEw7TElCR0xFU1YyX0VYUE9SVFM7X0NSVF9TRUNV
UkVfTk9fREVQUkVDQVRFO05PTUlOTUFYOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1h
bFJlYnVpbGQ+DQorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9C
YXNpY1J1bnRpbWVDaGVja3M+DQorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRE
ZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJl
Y29tcGlsZWRIZWFkZXI+DQorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZl
bD4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDEwMDs0MTI3OzQxODk7NDIzOTs0
MjQ0OzQyNDU7NDUxMjs0NzAyOzQ3MTg7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2Fi
bGVTcGVjaWZpY1dhcm5pbmdzPg0KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dy
YW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCisgICAgICA8VHJlYXRXYXJuaW5n
QXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPg0KKyAgICAgIDxQcmVjb21waWxlZEhl
YWRlckZpbGU+cHJlY29tcGlsZWQuaDwvUHJlY29tcGlsZWRIZWFkZXJGaWxlPg0KKyAgICAgIDxB
ZGRpdGlvbmFsT3B0aW9ucz4kKEV4dGVybmFsQ29tcGlsZXJPcHRpb25zKSAlKEFkZGl0aW9uYWxP
cHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8TGlu
az4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5kM2Q5LmxpYjtkeGd1aWQubGliOyUo
QWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAg
PE1vZHVsZURlZmluaXRpb25GaWxlPmxpYkdMRVN2Mi5kZWY8L01vZHVsZURlZmluaXRpb25GaWxl
Pg0KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0lu
Zm9ybWF0aW9uPg0KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPg0KKyAgICAg
IDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50
aW9uPg0KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+DQor
ICAgIDwvTGluaz4NCisgICAgPFBvc3RCdWlsZEV2ZW50Pg0KKyAgICAgIDxDb21tYW5kPiU0MGVj
aG8gb24NCitta2RpciAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCIN
Citjb3B5ICIkKE91dERpcilsaWJHTEVTdjIuZGxsIiAiJChQcm9qZWN0RGlyKS4uXC4uXGxpYlwk
KENvbmZpZ3VyYXRpb24pXCINCitjb3B5ICIkKE91dERpcilsaWJHTEVTdjIubGliIiAiJChQcm9q
ZWN0RGlyKS4uXC4uXGxpYlwkKENvbmZpZ3VyYXRpb24pXCINCislNDBlY2hvIG9mZg0KKzwvQ29t
bWFuZD4NCisgICAgPC9Qb3N0QnVpbGRFdmVudD4NCisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4N
CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4NCisgICAgPE1pZGw+DQorICAgICAgPFRhcmdldEVu
dmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+DQorICAgIDwvTWlkbD4NCisgICAgPENs
Q29tcGlsZT4NCisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+DQor
ICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkFueVN1aXRhYmxlPC9JbmxpbmVGdW5jdGlv
bkV4cGFuc2lvbj4NCisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFByb2pl
Y3REaXIpLy4uOyAkKFByb2plY3REaXIpLy4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCisgICAgICA8UHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7TElCR0xF
U1YyX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlOTUFYO19TRUNVUkVfU0NM
PTA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0K
KyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4NCisg
ICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8
V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxEaXNhYmxlU3BlY2lm
aWNXYXJuaW5ncz40MTAwOzQxMjc7NDE4OTs0MjM5OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDcxODsl
KERpc2FibGVTcGVjaWZpY1dhcm5pbmdzKTwvRGlzYWJsZVNwZWNpZmljV2FybmluZ3M+DQorICAg
ICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0Pg0KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2Fybmlu
Z0FzRXJyb3I+DQorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyRmlsZT5wcmVjb21waWxlZC5oPC9Q
cmVjb21waWxlZEhlYWRlckZpbGU+DQorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPiQoRXh0ZXJu
YWxDb21waWxlck9wdGlvbnMpICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9u
cz4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxMaW5rPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVw
ZW5kZW5jaWVzPmQzZDkubGliO2R4Z3VpZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwv
QWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmll
cz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4NCisgICAgICA8TW9kdWxlRGVmaW5p
dGlvbkZpbGU+bGliR0xFU3YyLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQorICAgICAgPEdl
bmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQor
ICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+DQorICAgICAgPE9wdGltaXplUmVm
ZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQorICAgICAgPEVuYWJsZUNPTURBVEZv
bGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCisgICAgICA8RGF0YUV4ZWN1dGlvblBy
ZXZlbnRpb24+DQorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4NCisgICAgICA8VGFy
Z2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPg0KKyAgICA8L0xpbms+DQorICAg
IDxQb3N0QnVpbGRFdmVudD4NCisgICAgICA8Q29tbWFuZD4lNDBlY2hvIG9uDQorbWtkaXIgIiQo
UHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwiDQorY29weSAiJChPdXREaXIp
bGliR0xFU3YyLmRsbCIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJcJChDb25maWd1cmF0aW9uKVwi
DQorY29weSAiJChPdXREaXIpbGliR0xFU3YyLmxpYiIgIiQoUHJvamVjdERpcikuLlwuLlxsaWJc
JChDb25maWd1cmF0aW9uKVwiDQorJTQwZWNobyBvZmYNCis8L0NvbW1hbmQ+DQorICAgIDwvUG9z
dEJ1aWxkRXZlbnQ+DQorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQorICA8SXRlbUdyb3VwPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRoaXJkX3BhcnR5XG11cm11cmhhc2hcTXVybXVy
SGFzaDMuY3BwIj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPk5vdFVzaW5nPC9QcmVjb21w
aWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8L1ByZWNv
bXBpbGVkSGVhZGVyPg0KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPk5vdFVzaW5nPC9QcmVjb21w
aWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPk5vdFVzaW5nPC9QcmVjb21w
aWxlZEhlYWRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
QnVmZmVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJDb250ZXh0LmNwcCIgLz4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25cZGVidWcuY3BwIj4NCisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfFdpbjMyJyI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPg0KKyAgICAg
IDxQcmVjb21waWxlZEhlYWRlciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfHg2NCciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8
UHJlY29tcGlsZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdSZWxlYXNlfHg2NCciPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgPC9D
bENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRmVuY2UuY3BwIiAvPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IkZsb2F0MTZUb0Zsb2F0MzIuY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9IkZyYW1lYnVmZmVyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSJIYW5kbGVBbGxvY2F0b3IuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImxpYkdM
RVN2Mi5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFpbi5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0icHJlY29tcGlsZWQuY3BwIj4NCisgICAgICA8UHJlY29tcGls
ZWRIZWFkZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPkNyZWF0ZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPkNyZWF0ZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgICAgPFByZWNvbXBpbGVk
SGVhZGVyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
eDY0JyI+Q3JlYXRlPC9QcmVjb21waWxlZEhlYWRlcj4NCisgICAgICA8UHJlY29tcGlsZWRIZWFk
ZXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2
NCciPkNyZWF0ZTwvUHJlY29tcGlsZWRIZWFkZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IlByb2dyYW0uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IlByb2dyYW1CaW5hcnkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlF1ZXJ5
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjb21tb25cUmVmQ291bnRPYmpl
Y3QuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlJlbmRlcmJ1ZmZlci5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcQmxpdC5jcHAiIC8+DQorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2UxMS5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0icmVuZGVyZXJcRmVuY2U5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdlMTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2U5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSJyZW5kZXJlclxJbWFnZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
cmVuZGVyZXJcSW1hZ2U5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJl
clxJbmRleEJ1ZmZlci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJc
SW5kZXhCdWZmZXIxMS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJc
SW5kZXhCdWZmZXI5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJ
bmRleERhdGFNYW5hZ2VyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJl
clxJbWFnZVNTRTIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXElt
YWdlMTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXElucHV0TGF5
b3V0Q2FjaGUuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5
MTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5OS5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXIuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyMTEuY3BwIiAvPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyMTFfdXRpbHMuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyOS5jcHAiIC8+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXI5X3V0aWxzLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQxMS5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0OS5jcHAiIC8+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyU3RhdGVDYWNoZS5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTExLmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVjdXRhYmxl
OS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcU3dhcENoYWluMTEu
Y3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjkuY3Bw
IiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFRleHR1cmVTdG9yYWdlLmNw
cCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJlU3RvcmFnZTEx
LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxUZXh0dXJlU3RvcmFn
ZTkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZl
ci5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVy
MTEuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZl
cjkuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleERhdGFN
YW5hZ2VyLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxWZXJ0ZXhE
ZWNsYXJhdGlvbkNhY2hlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJSZXNvdXJj
ZU1hbmFnZXIuY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlNoYWRlci5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iVGV4dHVyZS5jcHAiIC8+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iVW5pZm9ybS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0idXRp
bGl0aWVzLmNwcCIgLz4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cZGVidWcuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxjb21tb25cc3lzdGVtLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cdGhpcmRfcGFydHlcbXVybXVyaGFzaFxNdXJtdXJIYXNoMy5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9ImFuZ2xldHlwZXMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJC
aW5hcnlTdHJlYW0uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJCdWZmZXIuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJjb25zdGFudHMuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJDb250ZXh0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iRmVuY2Uu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJGcmFtZWJ1ZmZlci5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wyLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5caW5jbHVkZVxHTEVTMlxnbDJleHQuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxpbmNsdWRlXEdMRVMyXGdsMnBsYXRmb3JtLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iSGFuZGxlQWxsb2NhdG9yLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0ibWFpbi5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Im1h
dGh1dGlsLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icHJlY29tcGlsZWQuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJQcm9ncmFtLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iUHJvZ3JhbUJpbmFyeS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlF1
ZXJ5LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY29tbW9uXFJlZkNvdW50T2Jq
ZWN0LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVuZGVyYnVmZmVyLmgiIC8+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcQmxpdC5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXEZlbmNlMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZW5kZXJlclxGZW5jZTkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxGZW5jZUltcGwuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxC
dWZmZXJTdG9yYWdlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcQnVm
ZmVyU3RvcmFnZTExLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcQnVm
ZmVyU3RvcmFnZTkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxnZW5l
cmF0ZW1pcC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlLmgi
IC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2UxMS5oIiAvPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlOS5oIiAvPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXIxMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyOS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9InJlbmRlcmVyXEluZGV4RGF0YU1hbmFnZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZW5kZXJlclxJbnB1dExheW91dENhY2hlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0icmVuZGVyZXJcUXVlcnkxMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJl
bmRlcmVyXFF1ZXJ5SW1wbC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XFF1ZXJ5OS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVy
LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXIxMS5oIiAv
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyMTFfdXRpbHMuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlcjkuaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxyZW5kZXJlcjlfdXRpbHMuaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQxMS5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlclRhcmdldDkuaCIgLz4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJTdGF0ZUNhY2hlLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyQ2FjaGUuaCIgLz4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVjdXRhYmxlLmgiIC8+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTExLmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZTkuaCIgLz4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNsZWFyMTF2cy5o
IiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRc
Y2xlYXJtdWx0aXBsZTExcHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxzaGFkZXJzXGNvbXBpbGVkXGNsZWFyc2luZ2xlMTFwcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcY29tcG9uZW50bWFza3BzLmgiIC8+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxmbGlw
eXZzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21w
aWxlZFxsdW1pbmFuY2Vwcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2gxMXZzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaGx1bTExcHMuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXHBh
c3N0aHJvdWdobHVtYWxwaGExMXBzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVu
ZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaHBzLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaHJnYjExcHMu
aCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVk
XHBhc3N0aHJvdWdocmdiYTExcHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5k
ZXJlclxzaGFkZXJzXGNvbXBpbGVkXHN0YW5kYXJkdnMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxTd2FwQ2hhaW4uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJyZW5kZXJlclxTd2FwQ2hhaW4xMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJl
bmRlcmVyXFN3YXBDaGFpbjkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxUZXh0dXJlU3RvcmFnZS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XFRleHR1cmVTdG9yYWdlMTEuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxUZXh0dXJlU3RvcmFnZTkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxWZXJ0ZXhCdWZmZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxW
ZXJ0ZXhCdWZmZXIxMS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFZl
cnRleEJ1ZmZlcjkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclx2ZXJ0
ZXhjb252ZXJzaW9uLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVy
dGV4RGF0YU1hbmFnZXIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxW
ZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVz
b3VyY2UuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJSZXNvdXJjZU1hbmFnZXIuaCIg
Lz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJTaGFkZXIuaCIgLz4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJUZXh0dXJlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVW5pZm9y
bS5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InV0aWxpdGllcy5oIiAvPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblx2ZXJzaW9uLmgiIC8+DQorICA8L0l0ZW1Hcm91
cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxOb25lIEluY2x1ZGU9ImxpYkdMRVN2Mi5kZWYiIC8+
DQorICAgIDxOb25lIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcQmxpdC5wcyIgLz4NCisgICAg
PE5vbmUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xCbGl0LnZzIiAvPg0KKyAgICA8Tm9uZSBJ
bmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXENsZWFyMTEuaGxzbCIgLz4NCisgICAgPE5vbmUgSW5j
bHVkZT0icmVuZGVyZXJcc2hhZGVyc1xnZW5lcmF0ZV9zaGFkZXJzLmJhdCIgLz4NCisgICAgPE5v
bmUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xQYXNzdGhyb3VnaDExLmhsc2wiIC8+DQorICA8
L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVk
ZT0ibGliR0xFU3YyLnJjIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAg
ICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlxjb21waWxlclxwcmVwcm9jZXNzb3JccHJl
cHJvY2Vzc29yLnZjeHByb2oiPg0KKyAgICAgIDxQcm9qZWN0PntmYmUzMmRmMy0wZmIwLTRmMmYt
YTQyNC0yYzIxYmQ3YmMzMjV9PC9Qcm9qZWN0Pg0KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+DQor
ICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXGNvbXBpbGVyXHRyYW5zbGF0b3JfY29t
bW9uLnZjeHByb2oiPg0KKyAgICAgIDxQcm9qZWN0Pns1YjNhNmRiOC0xZTdlLTQwZDctOTJiOS1k
YThhYWU2MTlmYWR9PC9Qcm9qZWN0Pg0KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+DQorICAgIDxQ
cm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXGNvbXBpbGVyXHRyYW5zbGF0b3JfaGxzbC52Y3hw
cm9qIj4NCisgICAgICA8UHJvamVjdD57NTYyMGYwZTQtNmM0My00OWJjLWExNzgtYjgwNGUxYTBj
M2E3fTwvUHJvamVjdD4NCisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1Jl
ZmVyZW5jZU91dHB1dEFzc2VtYmx5Pg0KKyAgICAgIDxQcml2YXRlPnRydWU8L1ByaXZhdGU+DQor
ICAgICAgPENvcHlMb2NhbFNhdGVsbGl0ZUFzc2VtYmxpZXM+ZmFsc2U8L0NvcHlMb2NhbFNhdGVs
bGl0ZUFzc2VtYmxpZXM+DQorICAgICAgPExpbmtMaWJyYXJ5RGVwZW5kZW5jaWVzPnRydWU8L0xp
bmtMaWJyYXJ5RGVwZW5kZW5jaWVzPg0KKyAgICAgIDxVc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0
cz50cnVlPC9Vc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0cz4NCisgICAgPC9Qcm9qZWN0UmVmZXJl
bmNlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0
aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRl
bnNpb25UYXJnZXRzIj4NCisgIDwvSW1wb3J0R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvbGliR0xFU3YyLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi52Y3hwcm9qLmZpbHRlcnMJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdM
RVN2Mi52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTA5IEBACivvu788
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzxQcm9qZWN0IFRvb2xzVmVy
c2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIv
bXNidWlsZC8yMDAzIj4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291
cmNlIEZpbGVzIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2
LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5zaW9u
cz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4N
CisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4NCisg
ICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJF
QkZCfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07
aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIElu
Y2x1ZGU9IlRoaXJkIFBhcnR5Ij4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZGMxZGFjNDAt
MzU2My00MWJlLTllMmQtYzI1ODhkODY3MGZifTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9G
aWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iVGhpcmQgUGFydHlcTXVybXVySGFzaCI+DQor
ICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2IwMDA1ZDJmLTliNGEtNDY1OS1hMjcwLTEzODgxMTE3
NGY3M308L1VuaXF1ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIElu
Y2x1ZGU9IkhlYWRlciBGaWxlc1xSZW5kZXJlciI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+
ezU2MmU0NjlkLTFhYmItNDRiYy1iN2ZhLTU1ZWVmYmY3NWFjY308L1VuaXF1ZUlkZW50aWZpZXI+
DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNoYWRlcnMiPg0KKyAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPns2ZGMwMzA2Zi02Mzk2LTRlODAtOWVmOS0wOWI1OGFhNTNjNGR9
PC9VbmlxdWVJZGVudGlmaWVyPg0KKyAgICA8L0ZpbHRlcj4NCisgICAgPEZpbHRlciBJbmNsdWRl
PSJTaGFkZXJzXENvbXBpbGVkIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjMzMjcwNWIt
MTk5OS00MjkyLWEzOGItZGQ0NzMyOTczNGFhfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9G
aWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzXFJlbmRlcmVyIj4NCisg
ICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTNhNzY5NjQtNzdhMy00YjIwLWE2ZjUtZTE0ZTc2MmQ0
ZTE0fTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5j
bHVkZT0iSGVhZGVyIEZpbGVzXFJlbmRlcmVyOSI+DQorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+
ezM4NzdmMzVlLTg0NWMtNGU5NS1iOWE1LWM3ZDhiOWYzMDdjNX08L1VuaXF1ZUlkZW50aWZpZXI+
DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlc1xSZW5k
ZXJlcjExIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MmQ3MGZkNjAtNmRlYS00ODlmLWFj
MDktMTY4OTBkMzI1NjY5fTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+DQorICAg
IDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzXFJlbmRlcmVyOSI+DQorICAgICAgPFVuaXF1
ZUlkZW50aWZpZXI+ezYwZTE0ZjA0LTJjZjItNGEwNy1iM2VmLTdjNjhhODJiYTJkOX08L1VuaXF1
ZUlkZW50aWZpZXI+DQorICAgIDwvRmlsdGVyPg0KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJj
ZSBGaWxlc1xSZW5kZXJlcjExIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NzJkYjYxZDMt
ZTA4MS00YjU4LWJjNjMtYTA0YThhNzA1ODVmfTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9G
aWx0ZXI+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iQnVmZmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iQ29udGV4dC5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNvbW1vblxkZWJ1Zy5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IkZlbmNlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2Ug
RmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iRmxvYXQxNlRvRmxvYXQzMi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IkZyYW1l
YnVmZmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iSGFuZGxlQWxsb2NhdG9yLmNw
cCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBp
bGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibGliR0xFU3YyLmNwcCI+DQorICAgICAgPEZp
bHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0ibWFpbi5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlByb2dy
YW0uY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
Q29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJQcm9ncmFtQmluYXJ5LmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUXVlcnkuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJj
ZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxjb21tb25cUmVmQ291bnRPYmplY3QuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJj
ZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJSZW5kZXJidWZmZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmls
dGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJSZXNvdXJj
ZU1hbmFnZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAg
ICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJTaGFkZXIuY3BwIj4NCisg
ICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJUZXh0dXJlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0idXRpbGl0aWVzLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJc
SW1hZ2UuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmlsdGVy
Pg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxU
ZXh0dXJlU3RvcmFnZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVy
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJl
bmRlcmVyXFJlbmRlcmVyLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVy
ZXI8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cdGhpcmRfcGFydHlcbXVybXVyaGFzaFxNdXJtdXJIYXNoMy5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+VGhpcmQgUGFydHlcTXVybXVySGFzaDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleERhdGFNYW5hZ2VyLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4RGF0YU1hbmFn
ZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFn
ZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+UmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBp
bGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2VTU0UyLmNwcCI+DQor
ICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4QnVmZmVyLmNw
cCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZm
ZXIuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJVbmlmb3JtLmNwcCI+
DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcQnVmZmVyU3RvcmFnZS5jcHAiPg0K
KyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xD
b21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2Ux
MS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcRmVu
Y2UxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJc
SW1hZ2UxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0Zp
bHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVy
ZXJcSW5kZXhCdWZmZXIxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRl
cmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0icmVuZGVyZXJcUXVlcnkxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJl
bmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0icmVuZGVyZXJcUmVuZGVyZXIxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZp
bGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXIxMV91dGlscy5jcHAiPg0KKyAgICAgIDxGaWx0
ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0MTEuY3BwIj4NCisg
ICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xD
b21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFi
bGUxMS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRl
cj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJc
U3dhcENoYWluMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjEx
PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJl
bmRlcmVyXFRleHR1cmVTdG9yYWdlMTEuY3BwIj4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxl
c1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjExLmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdlOS5jcHAiPg0KKyAgICAg
IDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGls
ZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZTkuY3BwIj4NCisgICAg
ICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBp
bGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcSW1hZ2U5LmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXEluZGV4QnVmZmVyOS5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTkuY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyZXI5
LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQor
ICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXHJlbmRl
cmVyOV91dGlscy5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwv
RmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5k
ZXJlclxSZW5kZXJUYXJnZXQ5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVu
ZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9InJlbmRlcmVyXFNoYWRlckV4ZWN1dGFibGU5LmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3Vy
Y2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFN3YXBDaGFpbjkuY3BwIj4NCisgICAgICA8RmlsdGVy
PlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3JhZ2U5LmNwcCI+DQorICAg
ICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21w
aWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9InJlbmRlcmVyXFZlcnRleEJ1ZmZlcjkuY3Bw
Ij4NCisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAg
PC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icmVuZGVyZXJcQmxpdC5jcHAi
Pg0KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8
L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJlclxJbnB1dExheW91
dENhY2hlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXIxMTwvRmls
dGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJyZW5kZXJl
clxSZW5kZXJTdGF0ZUNhY2hlLmNwcCI+DQorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcUmVu
ZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSJyZW5kZXJlclxWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmNwcCI+DQorICAgICAgPEZpbHRl
cj5Tb3VyY2UgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9InByZWNvbXBpbGVkLmNwcCI+DQorICAgICAgPEZpbHRlcj5T
b3VyY2UgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICA8L0l0ZW1Hcm91cD4N
CisgIDxJdGVtR3JvdXA+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQmluYXJ5U3RyZWFtLmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkJ1ZmZlci5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJDb250ZXh0LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkZlbmNlLmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkZyYW1lYnVmZmVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wyZXh0LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXC4uXGluY2x1ZGVcR0xFUzJcZ2wycGxhdGZvcm0uaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iSGFuZGxlQWxsb2NhdG9yLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Im1haW4uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0ibWF0aHV0aWwuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iUHJvZ3JhbS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
czwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJQ
cm9ncmFtQmluYXJ5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQor
ICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlF1ZXJ5LmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblxSZWZDb3VudE9iamVjdC5oIj4NCisgICAg
ICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJSZW5kZXJidWZmZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFk
ZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0icmVzb3VyY2UuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iUmVzb3VyY2VNYW5h
Z2VyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlNoYWRlci5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJUZXh0dXJlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InV0aWxp
dGllcy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cdmVyc2lvbi5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJhbmdsZXR5cGVzLmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHRoaXJkX3BhcnR5XG11cm11cmhhc2hcTXVybXVySGFzaDMuaCI+DQorICAg
ICAgPEZpbHRlcj5UaGlyZCBQYXJ0eVxNdXJtdXJIYXNoPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlVuaWZvcm0uaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaDExdnMuaCI+
DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNs
dWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRc
cGFzc3Rocm91Z2hwcy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
c2hhZGVyc1xjb21waWxlZFxzdGFuZGFyZHZzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xD
b21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBpbGVkXGNvbXBvbmVudG1hc2twcy5oIj4NCisgICAg
ICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxmbGlweXZz
LmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNvbXBp
bGVkXGx1bWluYW5jZXBzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmls
dGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJl
clxzaGFkZXJzXGNvbXBpbGVkXHBhc3N0aHJvdWdocmdiYTExcHMuaCI+DQorICAgICAgPEZpbHRl
cj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRccGFzc3Rocm91Z2hyZ2Ix
MXBzLmgiPg0KKyAgICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGNv
bXBpbGVkXHBhc3N0aHJvdWdobHVtMTFwcy5oIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29t
cGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxwYXNzdGhyb3VnaGx1bWFscGhhMTFwcy5oIj4N
CisgICAgICA8RmlsdGVyPlNoYWRlcnNcQ29tcGlsZWQ8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1
ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xjb21waWxlZFxj
bGVhcjExdnMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzXENvbXBpbGVkPC9GaWx0ZXI+DQor
ICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRl
cnNcY29tcGlsZWRcY2xlYXJtdWx0aXBsZTExcHMuaCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJz
XENvbXBpbGVkPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcY29tcGlsZWRcY2xlYXJzaW5nbGUxMXBzLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+U2hhZGVyc1xDb21waWxlZDwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjb21tb25cc3lzdGVtLmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGNvbW1vblxkZWJ1Zy5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlczwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZW5kZXJlclxCdWZmZXJTdG9yYWdlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZp
bGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9InJlbmRlcmVyXEZlbmNlSW1wbC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclxnZW5lcmF0ZW1pcC5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbWFnZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleEJ1ZmZlci5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRl
ciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSJyZW5kZXJlclxJbmRleERhdGFNYW5hZ2VyLmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5SW1wbC5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlci5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcU2hhZGVyRXhlY3V0YWJsZS5oIj4N
CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTd2FwQ2hhaW4uaCI+
DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9D
bEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVGV4dHVyZVN0b3Jh
Z2UuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcVmVydGV4
QnVmZmVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyPC9GaWx0ZXI+
DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXHZl
cnRleGNvbnZlcnNpb24uaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI8
L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVu
ZGVyZXJcVmVydGV4RGF0YU1hbmFnZXIuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNc
UmVuZGVyZXI8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0icmVuZGVyZXJcQnVmZmVyU3RvcmFnZTExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVy
IEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXIxMS5oIj4NCisgICAgICA8RmlsdGVy
PkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5MTEuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJlcjExLmgiPg0KKyAgICAgIDxG
aWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+
DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcUmVuZGVyVGFyZ2V0MTEuaCI+DQor
ICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVjdXRh
YmxlMTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVy
Pg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxT
d2FwQ2hhaW4xMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9G
aWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRl
cmVyXFRleHR1cmVTdG9yYWdlMTEuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVu
ZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXIxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBG
aWxlc1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9InJlbmRlcmVyXEJ1ZmZlclN0b3JhZ2U5LmgiPg0KKyAgICAgIDxGaWx0ZXI+
SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZTkuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXEltYWdlOS5oIj4NCisgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5kZXhCdWZmZXI5LmgiPg0KKyAgICAgIDxGaWx0
ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxRdWVyeTkuaCI+DQorICAgICAgPEZpbHRl
cj5IZWFkZXIgRmlsZXNcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFJlbmRlcmVyOS5oIj4NCisgICAgICA8Rmls
dGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJccmVuZGVyZXI5X3V0aWxzLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxSZW5kZXJUYXJnZXQ5Lmgi
Pg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJFeGVj
dXRhYmxlOS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRl
cj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJc
U3dhcENoYWluOS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0Zp
bHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVy
ZXJcVGV4dHVyZVN0b3JhZ2U5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRl
cmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJyZW5kZXJlclxWZXJ0ZXhCdWZmZXI5LmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
XFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSJyZW5kZXJlclxGZW5jZTExLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVz
XFJlbmRlcmVyMTE8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0icmVuZGVyZXJcSW1hZ2UxMS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxl
c1xSZW5kZXJlcjExPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9InJlbmRlcmVyXHJlbmRlcmVyMTFfdXRpbHMuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXNcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxGZW5jZTkuaCI+DQorICAgICAgPEZpbHRlcj5I
ZWFkZXIgRmlsZXNcUmVuZGVyZXJcUmVuZGVyZXI5PC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRl
Pg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVyXFF1ZXJ5MTEuaCI+DQorICAgICAg
PEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVyZXJcUmVuZGVyZXIxMTwvRmlsdGVyPg0KKyAgICA8
L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxCbGl0LmgiPg0K
KyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0Ns
SW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJyZW5kZXJlclxTaGFkZXJDYWNoZS5o
Ij4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjk8L0ZpbHRlcj4NCisgICAg
PC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0icmVuZGVyZXJcSW5wdXRMYXlv
dXRDYWNoZS5oIj4NCisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlc1xSZW5kZXJlcjExPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlbmRlcmVy
XFJlbmRlclN0YXRlQ2FjaGUuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXNcUmVuZGVy
ZXIxMTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSJyZW5kZXJlclxWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmgiPg0KKyAgICAgIDxGaWx0ZXI+SGVh
ZGVyIEZpbGVzXFJlbmRlcmVyOTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSJjb25zdGFudHMuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmls
ZXM8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
cHJlY29tcGlsZWQuaCI+DQorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4NCisg
ICAgPC9DbEluY2x1ZGU+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxO
b25lIEluY2x1ZGU9InJlbmRlcmVyXHNoYWRlcnNcQmxpdC5wcyI+DQorICAgICAgPEZpbHRlcj5T
aGFkZXJzPC9GaWx0ZXI+DQorICAgIDwvTm9uZT4NCisgICAgPE5vbmUgSW5jbHVkZT0icmVuZGVy
ZXJcc2hhZGVyc1xCbGl0LnZzIj4NCisgICAgICA8RmlsdGVyPlNoYWRlcnM8L0ZpbHRlcj4NCisg
ICAgPC9Ob25lPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXGdlbmVyYXRl
X3NoYWRlcnMuYmF0Ij4NCisgICAgICA8RmlsdGVyPlNoYWRlcnM8L0ZpbHRlcj4NCisgICAgPC9O
b25lPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJyZW5kZXJlclxzaGFkZXJzXFBhc3N0aHJvdWdoMTEu
aGxzbCI+DQorICAgICAgPEZpbHRlcj5TaGFkZXJzPC9GaWx0ZXI+DQorICAgIDwvTm9uZT4NCisg
ICAgPE5vbmUgSW5jbHVkZT0icmVuZGVyZXJcc2hhZGVyc1xDbGVhcjExLmhsc2wiPg0KKyAgICAg
IDxGaWx0ZXI+U2hhZGVyczwvRmlsdGVyPg0KKyAgICA8L05vbmU+DQorICAgIDxOb25lIEluY2x1
ZGU9ImxpYkdMRVN2Mi5kZWYiIC8+DQorICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQor
ICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0ibGliR0xFU3YyLnJjIiAvPg0KKyAgPC9JdGVt
R3JvdXA+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9tYWluLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU1IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIG1haW4uY3BwOiBETEwgZW50cnkgcG9pbnQgYW5kIG1h
bmFnZW1lbnQgb2YgdGhyZWFkLWxvY2FsIGRhdGEuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFp
bi5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKworc3RhdGljIERXT1JEIGN1
cnJlbnRUTFMgPSBUTFNfT1VUX09GX0lOREVYRVM7CisKK2V4dGVybiAiQyIgQk9PTCBXSU5BUEkg
RGxsTWFpbihISU5TVEFOQ0UgaW5zdGFuY2UsIERXT1JEIHJlYXNvbiwgTFBWT0lEIHJlc2VydmVk
KQoreworICAgIHN3aXRjaCAocmVhc29uKQorICAgIHsKKyAgICAgIGNhc2UgRExMX1BST0NFU1Nf
QVRUQUNIOgorICAgICAgICB7CisgICAgICAgICAgICBjdXJyZW50VExTID0gVGxzQWxsb2MoKTsK
KworICAgICAgICAgICAgaWYgKGN1cnJlbnRUTFMgPT0gVExTX09VVF9PRl9JTkRFWEVTKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICAvLyBGYWxsIHRocm91Z2h0IHRvIGluaXRpYWxpemUgaW5kZXgK
KyAgICAgIGNhc2UgRExMX1RIUkVBRF9BVFRBQ0g6CisgICAgICAgIHsKKyAgICAgICAgICAgIGds
OjpDdXJyZW50ICpjdXJyZW50ID0gKGdsOjpDdXJyZW50KilMb2NhbEFsbG9jKExQVFIsIHNpemVv
ZihnbDo6Q3VycmVudCkpOworCisgICAgICAgICAgICBpZiAoY3VycmVudCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBUbHNTZXRWYWx1ZShjdXJyZW50VExTLCBjdXJyZW50KTsKKwor
ICAgICAgICAgICAgICAgIGN1cnJlbnQtPmNvbnRleHQgPSBOVUxMOworICAgICAgICAgICAgICAg
IGN1cnJlbnQtPmRpc3BsYXkgPSBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBETExfVEhSRUFEX0RFVEFDSDoKKyAgICAgICAgeworICAg
ICAgICAgICAgdm9pZCAqY3VycmVudCA9IFRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAg
ICAgICAgICBpZiAoY3VycmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMb2Nh
bEZyZWUoKEhMT0NBTCljdXJyZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgRExMX1BST0NFU1NfREVUQUNIOgorICAgICAgICB7CisgICAg
ICAgICAgICB2b2lkICpjdXJyZW50ID0gVGxzR2V0VmFsdWUoY3VycmVudFRMUyk7CisKKyAgICAg
ICAgICAgIGlmIChjdXJyZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIExvY2Fs
RnJlZSgoSExPQ0FMKWN1cnJlbnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBUbHNG
cmVlKGN1cnJlbnRUTFMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVs
dDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK25hbWVz
cGFjZSBnbAorewordm9pZCBtYWtlQ3VycmVudChDb250ZXh0ICpjb250ZXh0LCBlZ2w6OkRpc3Bs
YXkgKmRpc3BsYXksIGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKK3sKKyAgICBDdXJyZW50ICpjdXJy
ZW50ID0gKEN1cnJlbnQqKVRsc0dldFZhbHVlKGN1cnJlbnRUTFMpOworCisgICAgY3VycmVudC0+
Y29udGV4dCA9IGNvbnRleHQ7CisgICAgY3VycmVudC0+ZGlzcGxheSA9IGRpc3BsYXk7CisKKyAg
ICBpZiAoY29udGV4dCAmJiBkaXNwbGF5ICYmIHN1cmZhY2UpCisgICAgeworICAgICAgICBjb250
ZXh0LT5tYWtlQ3VycmVudChzdXJmYWNlKTsKKyAgICB9Cit9CisKK0NvbnRleHQgKmdldENvbnRl
eHQoKQoreworICAgIEN1cnJlbnQgKmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3Vy
cmVudFRMUyk7CisKKyAgICByZXR1cm4gY3VycmVudC0+Y29udGV4dDsKK30KKworQ29udGV4dCAq
Z2V0Tm9uTG9zdENvbnRleHQoKQoreworICAgIENvbnRleHQgKmNvbnRleHQgPSBnZXRDb250ZXh0
KCk7CisgICAgCisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoY29udGV4dC0+
aXNDb250ZXh0TG9zdCgpKQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0OworICAgICAgICB9
CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCitlZ2w6OkRpc3BsYXkgKmdldERpc3BsYXko
KQoreworICAgIEN1cnJlbnQgKmN1cnJlbnQgPSAoQ3VycmVudCopVGxzR2V0VmFsdWUoY3VycmVu
dFRMUyk7CisKKyAgICByZXR1cm4gY3VycmVudC0+ZGlzcGxheTsKK30KKworLy8gUmVjb3JkcyBh
biBlcnJvciBjb2RlCit2b2lkIGVycm9yKEdMZW51bSBlcnJvckNvZGUpCit7CisgICAgZ2w6OkNv
bnRleHQgKmNvbnRleHQgPSBnbEdldEN1cnJlbnRDb250ZXh0KCk7CisKKyAgICBpZiAoY29udGV4
dCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoZXJyb3JDb2RlKQorICAgICAgICB7CisgICAgICAg
ICAgY2FzZSBHTF9JTlZBTElEX0VOVU06CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRJbnZh
bGlkRW51bSgpOworICAgICAgICAgICAgVFJBQ0UoIlx0ISBFcnJvciBnZW5lcmF0ZWQ6IGludmFs
aWQgZW51bVxuIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0lOVkFM
SURfVkFMVUU6CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRJbnZhbGlkVmFsdWUoKTsKKyAg
ICAgICAgICAgIFRSQUNFKCJcdCEgRXJyb3IgZ2VuZXJhdGVkOiBpbnZhbGlkIHZhbHVlXG4iKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfSU5WQUxJRF9PUEVSQVRJT046
CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRJbnZhbGlkT3BlcmF0aW9uKCk7CisgICAgICAg
ICAgICBUUkFDRSgiXHQhIEVycm9yIGdlbmVyYXRlZDogaW52YWxpZCBvcGVyYXRpb25cbiIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9PVVRfT0ZfTUVNT1JZOgorICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkT3V0T2ZNZW1vcnkoKTsKKyAgICAgICAgICAgIFRSQUNF
KCJcdCEgRXJyb3IgZ2VuZXJhdGVkOiBvdXQgb2YgbWVtb3J5XG4iKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgIGNhc2UgR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT046Cisg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRJbnZhbGlkRnJhbWVidWZmZXJPcGVyYXRpb24oKTsK
KyAgICAgICAgICAgIFRSQUNFKCJcdCEgRXJyb3IgZ2VuZXJhdGVkOiBpbnZhbGlkIGZyYW1lYnVm
ZmVyIG9wZXJhdGlvblxuIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQorfQorCit9CisKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbWFpbi5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9tYWluLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIG1haW4uaDogTWFu
YWdlbWVudCBvZiB0aHJlYWQtbG9jYWwgZGF0YS4KKworI2lmbmRlZiBMSUJHTEVTVjJfTUFJTl9I
XworI2RlZmluZSBMSUJHTEVTVjJfTUFJTl9IXworCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgi
CisjaW5jbHVkZSAiY29tbW9uL3N5c3RlbS5oIgorCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBE
aXNwbGF5OworY2xhc3MgU3VyZmFjZTsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBDb250
ZXh0OworICAgIAorc3RydWN0IEN1cnJlbnQKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0OworICAg
IGVnbDo6RGlzcGxheSAqZGlzcGxheTsKK307CisKK3ZvaWQgbWFrZUN1cnJlbnQoQ29udGV4dCAq
Y29udGV4dCwgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOwor
CitDb250ZXh0ICpnZXRDb250ZXh0KCk7CitDb250ZXh0ICpnZXROb25Mb3N0Q29udGV4dCgpOwor
ZWdsOjpEaXNwbGF5ICpnZXREaXNwbGF5KCk7CisKK3ZvaWQgZXJyb3IoR0xlbnVtIGVycm9yQ29k
ZSk7CisKK3RlbXBsYXRlPGNsYXNzIFQ+Citjb25zdCBUICZlcnJvcihHTGVudW0gZXJyb3JDb2Rl
LCBjb25zdCBUICZyZXR1cm5WYWx1ZSkKK3sKKyAgICBlcnJvcihlcnJvckNvZGUpOworCisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCit9CisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVu
ZGVyZXI7Cit9CisKK2V4dGVybiAiQyIKK3sKKy8vIEV4cG9ydGVkIGZ1bmN0aW9ucyBmb3IgdXNl
IGJ5IEVHTAorZ2w6OkNvbnRleHQgKmdsQ3JlYXRlQ29udGV4dChjb25zdCBnbDo6Q29udGV4dCAq
c2hhcmVDb250ZXh0LCByeDo6UmVuZGVyZXIgKnJlbmRlcmVyLCBib29sIG5vdGlmeVJlc2V0cywg
Ym9vbCByb2J1c3RBY2Nlc3MpOwordm9pZCBnbERlc3Ryb3lDb250ZXh0KGdsOjpDb250ZXh0ICpj
b250ZXh0KTsKK3ZvaWQgZ2xNYWtlQ3VycmVudChnbDo6Q29udGV4dCAqY29udGV4dCwgZWdsOjpE
aXNwbGF5ICpkaXNwbGF5LCBlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOworZ2w6OkNvbnRleHQgKmds
R2V0Q3VycmVudENvbnRleHQoKTsKK3J4OjpSZW5kZXJlciAqZ2xDcmVhdGVSZW5kZXJlcihlZ2w6
OkRpc3BsYXkgKmRpc3BsYXksIEhEQyBoRGMsIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlJ
ZCk7Cit2b2lkIGdsRGVzdHJveVJlbmRlcmVyKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIpOworCitf
X2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlIF9fc3RkY2FsbCBnbEdldFBy
b2NBZGRyZXNzKGNvbnN0IGNoYXIgKnByb2NuYW1lKTsKK2Jvb2wgX19zdGRjYWxsIGdsQmluZFRl
eEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSk7Cit9CisKKyNlbmRpZiAgIC8vIExJQkdMRVNW
Ml9NQUlOX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL21h
dGh1dGlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9tYXRodXRpbC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9tYXRodXRpbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2MSBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworLy8gbWF0aHV0aWwuaDogTWF0aCBhbmQgYml0IG1hbmlwdWxh
dGlvbiBmdW5jdGlvbnMuCisKKyNpZm5kZWYgTElCR0xFU1YyX01BVEhVVElMX0hfCisjZGVmaW5l
IExJQkdMRVNWMl9NQVRIVVRJTF9IXworCisjaW5jbHVkZSA8aW50cmluLmg+CisKKyNpbmNsdWRl
ICJjb21tb24vc3lzdGVtLmgiCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFj
ZSBnbAoreworc3RydWN0IFZlY3RvcjQKK3sKKyAgICBWZWN0b3I0KCkge30KKyAgICBWZWN0b3I0
KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpIDogeCh4KSwgeSh5KSwgeih6KSwg
dyh3KSB7fQorCisgICAgZmxvYXQgeDsKKyAgICBmbG9hdCB5OworICAgIGZsb2F0IHo7CisgICAg
ZmxvYXQgdzsKK307CisKK2lubGluZSBib29sIGlzUG93MihpbnQgeCkKK3sKKyAgICByZXR1cm4g
KHggJiAoeCAtIDEpKSA9PSAwICYmICh4ICE9IDApOworfQorCitpbmxpbmUgaW50IGxvZzIoaW50
IHgpCit7CisgICAgaW50IHIgPSAwOworICAgIHdoaWxlICgoeCA+PiByKSA+IDEpIHIrKzsKKyAg
ICByZXR1cm4gcjsKK30KKworaW5saW5lIHVuc2lnbmVkIGludCBjZWlsUG93Mih1bnNpZ25lZCBp
bnQgeCkKK3sKKyAgICBpZiAoeCAhPSAwKSB4LS07CisgICAgeCB8PSB4ID4+IDE7CisgICAgeCB8
PSB4ID4+IDI7CisgICAgeCB8PSB4ID4+IDQ7CisgICAgeCB8PSB4ID4+IDg7CisgICAgeCB8PSB4
ID4+IDE2OworICAgIHgrKzsKKworICAgIHJldHVybiB4OworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBNSU4sIHR5cGVuYW1lIE1BWD4KK2lubGluZSBUIGNsYW1wKFQgeCwgTUlO
IG1pbiwgTUFYIG1heCkKK3sKKyAgICAvLyBTaW5jZSBOYU5zIGZhaWwgYWxsIGNvbXBhcmlzb24g
dGVzdHMsIGEgTmFOIHZhbHVlIHdpbGwgZGVmYXVsdCB0byBtaW4KKyAgICByZXR1cm4geCA+IG1p
biA/ICh4ID4gbWF4ID8gbWF4IDogeCkgOiBtaW47Cit9CisKK2lubGluZSBmbG9hdCBjbGFtcDAx
KGZsb2F0IHgpCit7CisgICAgcmV0dXJuIGNsYW1wKHgsIDAuMGYsIDEuMGYpOworfQorCit0ZW1w
bGF0ZTxjb25zdCBpbnQgbj4KK2lubGluZSB1bnNpZ25lZCBpbnQgdW5vcm0oZmxvYXQgeCkKK3sK
KyAgICBjb25zdCB1bnNpZ25lZCBpbnQgbWF4ID0gMHhGRkZGRkZGRiA+PiAoMzIgLSBuKTsKKwor
ICAgIGlmICh4ID4gMSkKKyAgICB7CisgICAgICAgIHJldHVybiBtYXg7CisgICAgfQorICAgIGVs
c2UgaWYgKHggPCAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgaW50KShtYXggKiB4ICsgMC41Zik7Cisg
ICAgfQorfQorCitpbmxpbmUgYm9vbCBzdXBwb3J0c1NTRTIoKQoreworICAgIHN0YXRpYyBib29s
IGNoZWNrZWQgPSBmYWxzZTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0cyA9IGZhbHNlOworCisg
ICAgaWYgKGNoZWNrZWQpCisgICAgeworICAgICAgICByZXR1cm4gc3VwcG9ydHM7CisgICAgfQor
CisgICAgaW50IGluZm9bNF07CisgICAgX19jcHVpZChpbmZvLCAwKTsKKyAgICAKKyAgICBpZiAo
aW5mb1swXSA+PSAxKQorICAgIHsKKyAgICAgICAgX19jcHVpZChpbmZvLCAxKTsKKworICAgICAg
ICBzdXBwb3J0cyA9IChpbmZvWzNdID4+IDI2KSAmIDE7CisgICAgfQorCisgICAgY2hlY2tlZCA9
IHRydWU7CisKKyAgICByZXR1cm4gc3VwcG9ydHM7Cit9CisKK2lubGluZSB1bnNpZ25lZCBzaG9y
dCBmbG9hdDMyVG9GbG9hdDE2KGZsb2F0IGZwMzIpCit7CisgICAgdW5zaWduZWQgaW50IGZwMzJp
ID0gKHVuc2lnbmVkIGludCYpZnAzMjsKKyAgICB1bnNpZ25lZCBpbnQgc2lnbiA9IChmcDMyaSAm
IDB4ODAwMDAwMDApID4+IDE2OworICAgIHVuc2lnbmVkIGludCBhYnMgPSBmcDMyaSAmIDB4N0ZG
RkZGRkY7CisKKyAgICBpZihhYnMgPiAweDQ3RkZFRkZGKSAgIC8vIEluZmluaXR5CisgICAgewor
ICAgICAgICByZXR1cm4gc2lnbiB8IDB4N0ZGRjsKKyAgICB9CisgICAgZWxzZSBpZihhYnMgPCAw
eDM4ODAwMDAwKSAgIC8vIERlbm9ybWFsCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgbWFu
dGlzc2EgPSAoYWJzICYgMHgwMDdGRkZGRikgfCAweDAwODAwMDAwOyAgIAorICAgICAgICBpbnQg
ZSA9IDExMyAtIChhYnMgPj4gMjMpOworCisgICAgICAgIGlmKGUgPCAyNCkKKyAgICAgICAgewor
ICAgICAgICAgICAgYWJzID0gbWFudGlzc2EgPj4gZTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIGFicyA9IDA7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gc2lnbiB8IChhYnMgKyAweDAwMDAwRkZGICsgKChhYnMgPj4gMTMpICYgMSkpID4+IDEz
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gc2lnbiB8IChhYnMgKyAw
eEM4MDAwMDAwICsgMHgwMDAwMEZGRiArICgoYWJzID4+IDEzKSAmIDEpKSA+PiAxMzsKKyAgICB9
Cit9CisKK2Zsb2F0IGZsb2F0MTZUb0Zsb2F0MzIodW5zaWduZWQgc2hvcnQgaCk7CisKK30KKwor
bmFtZXNwYWNlIHJ4Cit7CisKK3N0cnVjdCBSYW5nZQoreworICAgIFJhbmdlKCkge30KKyAgICBS
YW5nZShpbnQgbG8sIGludCBoaSkgOiBzdGFydChsbyksIGVuZChoaSkgeyBBU1NFUlQobG8gPD0g
aGkpOyB9CisKKyAgICBpbnQgc3RhcnQ7CisgICAgaW50IGVuZDsKK307CisKK30KKworI2VuZGlm
ICAgLy8gTElCR0xFU1YyX01BVEhVVElMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcHJlY29tcGlsZWQuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBwcmVjb21w
aWxlZC5jcHA6IFByZWNvbXBpbGVkIGhlYWRlciBzb3VyY2UgZmlsZSBmb3IgbGliR0xFU3YyLgor
CisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcHJlY29tcGlsZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3ByZWNvbXBpbGVkLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBwcmVjb21waWxlZC5o
OiBQcmVjb21waWxlZCBoZWFkZXIgZmlsZSBmb3IgbGliR0xFU3YyLgorCisjZGVmaW5lIEdMX0FQ
SUNBTEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxHTEVTMi9nbDJleHQuaD4K
KworI2RlZmluZSBFR0xBUEkKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisKKyNpbmNsdWRlIDxhc3Nl
cnQuaD4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGZsb2F0Lmg+CisjaW5jbHVkZSA8
aW50cmluLmg+CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1
ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisK
KyNpbmNsdWRlIDxhbGdvcml0aG0+IC8vIGZvciBzdGQ6Om1pbiBhbmQgc3RkOjptYXgKKyNpbmNs
dWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHNldD4KKyNpbmNsdWRlIDxz
c3RyZWFtPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgorI2lu
Y2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgPGQzZDkuaD4KKyNpbmNsdWRlIDxEM0QxMS5oPgor
I2luY2x1ZGUgPGR4Z2kuaD4KKyNpbmNsdWRlIDxEM0Rjb21waWxlci5oPgorCisjaWZkZWYgX01T
Q19WRVIKKyNpbmNsdWRlIDxoYXNoX21hcD4KKyNlbmRpZgpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVzb3VyY2UuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVzb3VyY2UuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNCBAQAorLy97e05PX0RFUEVOREVOQ0lFU319CisvLyBNaWNyb3Nv
ZnQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgaW5jbHVkZSBmaWxlLgorLy8gVXNlZCBieSBsaWJHTEVT
djIucmMKKworLy8gTmV4dCBkZWZhdWx0IHZhbHVlcyBmb3IgbmV3IG9iamVjdHMKKy8vIAorI2lm
ZGVmIEFQU1RVRElPX0lOVk9LRUQKKyNpZm5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUwor
I2RlZmluZSBfQVBTX05FWFRfUkVTT1VSQ0VfVkFMVUUgICAgICAgIDEwMQorI2RlZmluZSBfQVBT
X05FWFRfQ09NTUFORF9WQUxVRSAgICAgICAgIDQwMDAxCisjZGVmaW5lIF9BUFNfTkVYVF9DT05U
Uk9MX1ZBTFVFICAgICAgICAgMTAwMQorI2RlZmluZSBfQVBTX05FWFRfU1lNRURfVkFMVUUgICAg
ICAgICAgIDEwMQorI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvdXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzQ2IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIHV0aWxpdGllcy5jcHA6IENvbnZlcnNpb24gZnVuY3Rpb25zIGFu
ZCBvdGhlciB1dGlsaXR5IHJvdXRpbmVzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGll
cy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorCituYW1lc3BhY2UgZ2wKK3sK
KworaW50IFVuaWZvcm1Db21wb25lbnRDb3VudChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9CT09MOgorICAgICAgY2FzZSBHTF9GTE9BVDoK
KyAgICAgIGNhc2UgR0xfSU5UOgorICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEOgorICAgICAgY2Fz
ZSBHTF9TQU1QTEVSX0NVQkU6CisgICAgICAgICAgcmV0dXJuIDE7CisgICAgICBjYXNlIEdMX0JP
T0xfVkVDMjoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKKyAgICAgIGNhc2UgR0xfSU5UX1ZF
QzI6CisgICAgICAgICAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX0lOVF9WRUMzOgorICAgICAg
Y2FzZSBHTF9GTE9BVF9WRUMzOgorICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6CisgICAgICAgICAg
cmV0dXJuIDM7CisgICAgICBjYXNlIEdMX0JPT0xfVkVDNDoKKyAgICAgIGNhc2UgR0xfRkxPQVRf
VkVDNDoKKyAgICAgIGNhc2UgR0xfSU5UX1ZFQzQ6CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6
CisgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6CisgICAgICAg
ICAgcmV0dXJuIDk7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgICAgcmV0dXJu
IDE2OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKwor
ICAgIHJldHVybiAwOworfQorCitHTGVudW0gVW5pZm9ybUNvbXBvbmVudFR5cGUoR0xlbnVtIHR5
cGUpCit7CisgICAgc3dpdGNoKHR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9CT09MOgorICAg
ICAgY2FzZSBHTF9CT09MX1ZFQzI6CisgICAgICBjYXNlIEdMX0JPT0xfVkVDMzoKKyAgICAgIGNh
c2UgR0xfQk9PTF9WRUM0OgorICAgICAgICAgIHJldHVybiBHTF9CT09MOworICAgICAgY2FzZSBH
TF9GTE9BVDoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKKyAgICAgIGNhc2UgR0xfRkxPQVRf
VkVDMzoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFU
MjoKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzoKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNDoK
KyAgICAgICAgICByZXR1cm4gR0xfRkxPQVQ7CisgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgIGNh
c2UgR0xfU0FNUExFUl8yRDoKKyAgICAgIGNhc2UgR0xfU0FNUExFUl9DVUJFOgorICAgICAgY2Fz
ZSBHTF9JTlRfVkVDMjoKKyAgICAgIGNhc2UgR0xfSU5UX1ZFQzM6CisgICAgICBjYXNlIEdMX0lO
VF9WRUM0OgorICAgICAgICAgIHJldHVybiBHTF9JTlQ7CisgICAgICBkZWZhdWx0OgorICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX05PTkU7Cit9CisKK3Np
emVfdCBVbmlmb3JtQ29tcG9uZW50U2l6ZShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2godHlw
ZSkKKyAgICB7CisgICAgICBjYXNlIEdMX0JPT0w6ICByZXR1cm4gc2l6ZW9mKEdMaW50KTsKKyAg
ICAgIGNhc2UgR0xfRkxPQVQ6IHJldHVybiBzaXplb2YoR0xmbG9hdCk7CisgICAgICBjYXNlIEdM
X0lOVDogICByZXR1cm4gc2l6ZW9mKEdMaW50KTsKKyAgICAgIGRlZmF1bHQ6ICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3NpemVfdCBVbmlmb3JtSW50
ZXJuYWxTaXplKEdMZW51bSB0eXBlKQoreworICAgIC8vIEV4cGFuZGVkIHRvIDQtZWxlbWVudCB2
ZWN0b3JzCisgICAgcmV0dXJuIFVuaWZvcm1Db21wb25lbnRTaXplKFVuaWZvcm1Db21wb25lbnRU
eXBlKHR5cGUpKSAqIFZhcmlhYmxlUm93Q291bnQodHlwZSkgKiA0OworfQorCitzaXplX3QgVW5p
Zm9ybUV4dGVybmFsU2l6ZShHTGVudW0gdHlwZSkKK3sKKyAgICByZXR1cm4gVW5pZm9ybUNvbXBv
bmVudFNpemUoVW5pZm9ybUNvbXBvbmVudFR5cGUodHlwZSkpICogVW5pZm9ybUNvbXBvbmVudENv
dW50KHR5cGUpOworfQorCitpbnQgVmFyaWFibGVSb3dDb3VudChHTGVudW0gdHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgICByZXR1
cm4gMDsKKyAgICAgIGNhc2UgR0xfQk9PTDoKKyAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICBj
YXNlIEdMX0lOVDoKKyAgICAgIGNhc2UgR0xfQk9PTF9WRUMyOgorICAgICAgY2FzZSBHTF9GTE9B
VF9WRUMyOgorICAgICAgY2FzZSBHTF9JTlRfVkVDMjoKKyAgICAgIGNhc2UgR0xfSU5UX1ZFQzM6
CisgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6CisgICAgICBjYXNlIEdMX0JPT0xfVkVDMzoKKyAg
ICAgIGNhc2UgR0xfQk9PTF9WRUM0OgorICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0OgorICAgICAg
Y2FzZSBHTF9JTlRfVkVDNDoKKyAgICAgIGNhc2UgR0xfU0FNUExFUl8yRDoKKyAgICAgIGNhc2Ug
R0xfU0FNUExFUl9DVUJFOgorICAgICAgICByZXR1cm4gMTsKKyAgICAgIGNhc2UgR0xfRkxPQVRf
TUFUMjoKKyAgICAgICAgcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6CisgICAg
ICAgIHJldHVybiAzOworICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OgorICAgICAgICByZXR1cm4g
NDsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAg
cmV0dXJuIDA7Cit9CisKK2ludCBWYXJpYWJsZUNvbHVtbkNvdW50KEdMZW51bSB0eXBlKQorewor
ICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX05PTkU6CisgICAgICAgIHJl
dHVybiAwOworICAgICAgY2FzZSBHTF9CT09MOgorICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAg
IGNhc2UgR0xfSU5UOgorICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEOgorICAgICAgY2FzZSBHTF9T
QU1QTEVSX0NVQkU6CisgICAgICAgIHJldHVybiAxOworICAgICAgY2FzZSBHTF9CT09MX1ZFQzI6
CisgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6CisgICAgICBjYXNlIEdMX0lOVF9WRUMyOgorICAg
ICAgY2FzZSBHTF9GTE9BVF9NQVQyOgorICAgICAgICByZXR1cm4gMjsKKyAgICAgIGNhc2UgR0xf
SU5UX1ZFQzM6CisgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6CisgICAgICBjYXNlIEdMX0JPT0xf
VkVDMzoKKyAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzoKKyAgICAgICAgcmV0dXJuIDM7CisgICAg
ICBjYXNlIEdMX0JPT0xfVkVDNDoKKyAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKKyAgICAgIGNh
c2UgR0xfSU5UX1ZFQzQ6CisgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgIHJldHVy
biA0OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gMDsKK30KKworaW50IEFsbG9jYXRlRmlyc3RGcmVlQml0cyh1bnNpZ25lZCBpbnQg
KmJpdHMsIHVuc2lnbmVkIGludCBhbGxvY2F0aW9uU2l6ZSwgdW5zaWduZWQgaW50IGJpdHNTaXpl
KQoreworICAgIEFTU0VSVChhbGxvY2F0aW9uU2l6ZSA8PSBiaXRzU2l6ZSk7CisKKyAgICB1bnNp
Z25lZCBpbnQgbWFzayA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkg
Pj4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6ZGlnaXRzIC0gYWxsb2NhdGlv
blNpemUpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBiaXRzU2l6ZSAtIGFs
bG9jYXRpb25TaXplICsgMTsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKCgqYml0cyAmIG1hc2sp
ID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgICpiaXRzIHw9IG1hc2s7CisgICAgICAgICAg
ICByZXR1cm4gaTsKKyAgICAgICAgfQorCisgICAgICAgIG1hc2sgPDw9IDE7CisgICAgfQorCisg
ICAgcmV0dXJuIC0xOworfQorCitHTHNpemVpIENvbXB1dGVQaXRjaChHTHNpemVpIHdpZHRoLCBH
TGludCBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgYWxpZ25tZW50KQoreworICAgIEFTU0VSVChhbGln
bm1lbnQgPiAwICYmIGlzUG93MihhbGlnbm1lbnQpKTsKKworICAgIEdMc2l6ZWkgcmF3UGl0Y2gg
PSBDb21wdXRlUGl4ZWxTaXplKGludGVybmFsZm9ybWF0KSAqIHdpZHRoOworICAgIHJldHVybiAo
cmF3UGl0Y2ggKyBhbGlnbm1lbnQgLSAxKSAmIH4oYWxpZ25tZW50IC0gMSk7Cit9CisKK0dMc2l6
ZWkgQ29tcHV0ZUNvbXByZXNzZWRQaXRjaChHTHNpemVpIHdpZHRoLCBHTGVudW0gaW50ZXJuYWxm
b3JtYXQpCit7CisgICAgcmV0dXJuIENvbXB1dGVDb21wcmVzc2VkU2l6ZSh3aWR0aCwgMSwgaW50
ZXJuYWxmb3JtYXQpOworfQorCitHTHNpemVpIENvbXB1dGVDb21wcmVzc2VkU2l6ZShHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGludGVybmFsZm9ybWF0KQoreworICAgIHN3
aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhUOgorICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVDoKKyAgICAgICAgcmV0dXJuIDggKiAoKHdpZHRoICsgMykgLyA0KSAqICgoaGVpZ2h0ICsg
MykgLyA0KTsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToK
KyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAgICAgICAg
cmV0dXJuIDE2ICogKCh3aWR0aCArIDMpIC8gNCkgKiAoKGhlaWdodCArIDMpIC8gNCk7CisgICAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2Jvb2wgSXNDb21wcmVz
c2VkKEdMZW51bSBmb3JtYXQpCit7CisgICAgaWYoZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdC
X1MzVENfRFhUMV9FWFQgfHwKKyAgICAgICBmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUMV9FWFQgfHwKKyAgICAgICBmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUM19BTkdMRSB8fAorICAgICAgIGZvcm1hdCA9PSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQ1X0FOR0xFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgSXNEZXB0aFRl
eHR1cmUoR0xlbnVtIGZvcm1hdCkKK3sKKyAgICBpZiAoZm9ybWF0ID09IEdMX0RFUFRIX0NPTVBP
TkVOVCB8fAorICAgICAgICBmb3JtYXQgPT0gR0xfREVQVEhfU1RFTkNJTF9PRVMgfHwKKyAgICAg
ICAgZm9ybWF0ID09IEdMX0RFUFRIX0NPTVBPTkVOVDE2IHx8CisgICAgICAgIGZvcm1hdCA9PSBH
TF9ERVBUSF9DT01QT05FTlQzMl9PRVMgfHwKKyAgICAgICAgZm9ybWF0ID09IEdMX0RFUFRIMjRf
U1RFTkNJTDhfT0VTKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIElzU3RlbmNpbFRleHR1cmUoR0xlbnVtIGZvcm1hdCkK
K3sKKyAgICBpZiAoZm9ybWF0ID09IEdMX0RFUFRIX1NURU5DSUxfT0VTIHx8CisgICAgICAgIGZv
cm1hdCA9PSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUykKKyAgICB7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNYWtlVmFsaWRTaXpl
KGJvb2wgaXNJbWFnZSwgYm9vbCBpc0NvbXByZXNzZWQsIEdMc2l6ZWkgKnJlcXVlc3RXaWR0aCwg
R0xzaXplaSAqcmVxdWVzdEhlaWdodCwgaW50ICpsZXZlbE9mZnNldCkKK3sKKyAgICBpbnQgdXBz
YW1wbGVDb3VudCA9IDA7CisKKyAgICBpZiAoaXNDb21wcmVzc2VkKQorICAgIHsKKyAgICAgICAg
Ly8gRG9uJ3QgZXhwYW5kIHRoZSBzaXplIG9mIGZ1bGwgdGV4dHVyZXMgdGhhdCBhcmUgYXQgbGVh
c3QgNHg0CisgICAgICAgIC8vIGFscmVhZHkuCisgICAgICAgIGlmIChpc0ltYWdlIHx8ICpyZXF1
ZXN0V2lkdGggPCA0IHx8ICpyZXF1ZXN0SGVpZ2h0IDwgNCkKKyAgICAgICAgeworICAgICAgICAg
ICAgd2hpbGUgKCpyZXF1ZXN0V2lkdGggJSA0ICE9IDAgfHwgKnJlcXVlc3RIZWlnaHQgJSA0ICE9
IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKnJlcXVlc3RXaWR0aCA8PD0gMTsK
KyAgICAgICAgICAgICAgICAqcmVxdWVzdEhlaWdodCA8PD0gMTsKKyAgICAgICAgICAgICAgICB1
cHNhbXBsZUNvdW50Kys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgKmxl
dmVsT2Zmc2V0ID0gdXBzYW1wbGVDb3VudDsKK30KKworLy8gUmV0dXJucyB0aGUgc2l6ZSwgaW4g
Ynl0ZXMsIG9mIGEgc2luZ2xlIHRleGVsIGluIGFuIEltYWdlCitpbnQgQ29tcHV0ZVBpeGVsU2l6
ZShHTGludCBpbnRlcm5hbGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQor
ICAgIHsKKyAgICAgIGNhc2UgR0xfQUxQSEE4X0VYVDogICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBzaXplb2YodW5zaWduZWQgY2hhcik7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhU
OiAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpOworICAgICAg
Y2FzZSBHTF9BTFBIQTMyRl9FWFQ6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZihm
bG9hdCk7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTMyRl9FWFQ6ICAgICAgICAgICAgICAgICBy
ZXR1cm4gc2l6ZW9mKGZsb2F0KTsKKyAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgc2hvcnQpOworICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0UxNkZfRVhUOiAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1bnNpZ25l
ZCBzaG9ydCk7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDogICAgICAgICAg
ICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogMjsKKyAgICAgIGNhc2UgR0xfTFVNSU5B
TkNFX0FMUEhBMzJGX0VYVDogICAgICAgICAgIHJldHVybiBzaXplb2YoZmxvYXQpICogMjsKKyAg
ICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDogICAgICAgICAgIHJldHVybiBzaXpl
b2YodW5zaWduZWQgc2hvcnQpICogMjsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6ICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgY2hhcikgKiAzOworICAgICAg
Y2FzZSBHTF9SR0I1NjU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVvZih1
bnNpZ25lZCBzaG9ydCk7CisgICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6ICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc2l6ZW9mKGZsb2F0KSAqIDM7CisgICAgICBjYXNlIEdMX1JHQjE2Rl9F
WFQ6ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSAq
IDM7CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogNDsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgc2hvcnQpOworICAg
ICAgY2FzZSBHTF9SR0I1X0ExOiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpemVv
Zih1bnNpZ25lZCBzaG9ydCk7CisgICAgICBjYXNlIEdMX1JHQkEzMkZfRVhUOiAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gc2l6ZW9mKGZsb2F0KSAqIDQ7CisgICAgICBjYXNlIEdMX1JHQkEx
NkZfRVhUOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIHNob3J0
KSAqIDQ7CisgICAgICBjYXNlIEdMX0JHUkE4X0VYVDogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogNDsKKyAgICAgIGNhc2UgR0xfQkdSQTRfQU5H
TEVYOiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzaXplb2YodW5zaWduZWQgc2hvcnQpOwor
ICAgICAgY2FzZSBHTF9CR1I1X0ExX0FOR0xFWDogICAgICAgICAgICAgICAgICAgcmV0dXJuIHNp
emVvZih1bnNpZ25lZCBzaG9ydCk7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAg
IH0KKworICAgIHJldHVybiAwOworfQorCitib29sIElzQ3ViZW1hcFRleHR1cmVUYXJnZXQoR0xl
bnVtIHRhcmdldCkKK3sKKyAgICByZXR1cm4gKHRhcmdldCA+PSBHTF9URVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1ggJiYgdGFyZ2V0IDw9IEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWik7
Cit9CisKK2Jvb2wgSXNJbnRlcm5hbFRleHR1cmVUYXJnZXQoR0xlbnVtIHRhcmdldCkKK3sKKyAg
ICByZXR1cm4gdGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgfHwgSXNDdWJlbWFwVGV4dHVyZVRhcmdl
dCh0YXJnZXQpOworfQorCitHTGludCBDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1hdChHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAg
ICBjYXNlIEdMX0FMUEhBOgorICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6ICAgIHJldHVybiBHTF9BTFBIQThfRVhUOworICAg
ICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgICAgICAgcmV0dXJuIEdMX0FMUEhBMzJGX0VYVDsK
KyAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOiAgIHJldHVybiBHTF9BTFBIQTE2Rl9F
WFQ7CisgICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAg
ICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9CWVRFOiAgICByZXR1cm4gR0xfTFVNSU5BTkNFOF9FWFQ7CisgICAgICAgICAgY2FzZSBHTF9G
TE9BVDogICAgICAgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFMzJGX0VYVDsKKyAgICAgICAgICBj
YXNlIEdMX0hBTEZfRkxPQVRfT0VTOiAgIHJldHVybiBHTF9MVU1JTkFOQ0UxNkZfRVhUOworICAg
ICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAg
ICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
QllURTogICAgcmV0dXJuIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDsKKyAgICAgICAgICBjYXNl
IEdMX0ZMT0FUOiAgICAgICAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUOwor
ICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6ICAgcmV0dXJuIEdMX0xVTUlOQU5DRV9B
TFBIQTE2Rl9FWFQ7CisgICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICBVTklNUExF
TUVOVEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjoK
KyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9CWVRFOiAgICAgICAgICAgIHJldHVybiBHTF9SR0I4X09FUzsKKyAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OiAgICAgcmV0dXJuIEdMX1JHQjU2NTsKKyAgICAgICAg
ICBjYXNlIEdMX0ZMT0FUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjMyRl9FWFQ7
CisgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzogICAgICAgICAgIHJldHVybiBHTF9S
R0IxNkZfRVhUOworICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X1JHQkE6CisgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfQllURTogICAgICAgICAgICByZXR1cm4gR0xfUkdCQThfT0VTOworICAgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDogICByZXR1cm4gR0xfUkdCQTQ7Cisg
ICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xOiAgIHJldHVybiBHTF9SR0I1
X0ExOworICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6ICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R0xfUkdCQTMyRl9FWFQ7CisgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzogICAgICAg
ICAgIHJldHVybiBHTF9SR0JBMTZGX0VYVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
IGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAgICAgICBz
d2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQkdSQThfRVhUOworICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUOiAgIHJldHVybiBHTF9CR1JBNF9BTkdM
RVg7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFQ6ICAg
cmV0dXJuIEdMX0JHUjVfQTFfQU5HTEVYOworICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6CisgICAgICBjYXNlIEdMX0NPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAgICBj
YXNlIEdMX0RFUFRIX0NPTVBPTkVOVDoKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7
CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDogICAgICAgICAgIHJldHVybiBHTF9E
RVBUSF9DT01QT05FTlQxNjsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDogICAgICAg
ICAgICAgcmV0dXJuIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzsKKyAgICAgICAgICBkZWZhdWx0
OiAgICAgICAgICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKKyAgICAgICAg
c3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRf
MjRfOF9PRVM6ICAgIHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAgICAgICAgICBk
ZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIH0KKworICAgIHJldHVybiBHTF9OT05FOworfQorCitHTGVudW0gRXh0cmFjdEZv
cm1hdChHTGVudW0gaW50ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1h
dCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQjU2NTogICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBHTF9SR0I7CisgICAgICBjYXNlIEdMX1JHQkE0OiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9SR0JBOworICAgICAgY2FzZSBHTF9SR0I1X0ExOiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6ICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjsKKyAgICAgIGNhc2UgR0xfUkdCQThf
T0VTOiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkE7CisgICAgICBjYXNlIEdM
X0xVTUlOQU5DRThfQUxQSEE4X0VYVDogICAgICAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0VfQUxQ
SEE7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhUOiAgICAgICAgICAgICAgICAgIHJldHVy
biBHTF9MVU1JTkFOQ0U7CisgICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6ICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9BTFBIQTsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNU
Q19EWFQxX0VYVDogICAgcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ7Cisg
ICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOiAgIHJldHVybiBHTF9D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUM19BTkdMRTogcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNf
QU5HTEU7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6IHJl
dHVybiBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOworICAgICAgY2FzZSBHTF9S
R0JBMzJGX0VYVDogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTsKKyAgICAgIGNh
c2UgR0xfUkdCMzJGX0VYVDogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjsKKyAg
ICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0FM
UEhBOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOiAgICAgICAgICAgICAgICByZXR1
cm4gR0xfTFVNSU5BTkNFOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUOiAg
ICAgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFX0FMUEhBOworICAgICAgY2FzZSBHTF9SR0JBMTZG
X0VYVDogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfUkdCQTsKKyAgICAgIGNhc2UgR0xf
UkdCMTZGX0VYVDogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjsKKyAgICAgIGNh
c2UgR0xfQUxQSEExNkZfRVhUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0FMUEhBOwor
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UxNkZfRVhUOiAgICAgICAgICAgICAgICByZXR1cm4gR0xf
TFVNSU5BTkNFOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOiAgICAgICAg
ICByZXR1cm4gR0xfTFVNSU5BTkNFX0FMUEhBOworICAgICAgY2FzZSBHTF9CR1JBOF9FWFQ6ICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQkdSQV9FWFQ7CisgICAgICBjYXNlIEdMX0RF
UFRIX0NPTVBPTkVOVDE2OiAgICAgICAgICAgICAgIHJldHVybiBHTF9ERVBUSF9DT01QT05FTlQ7
CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzogICAgICAgICAgIHJldHVybiBH
TF9ERVBUSF9DT01QT05FTlQ7CisgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOiAg
ICAgICAgICAgIHJldHVybiBHTF9ERVBUSF9TVEVOQ0lMX09FUzsKKyAgICAgIGRlZmF1bHQ6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX05PTkU7ICAgLy8gVW5zdXBw
b3J0ZWQKKyAgICB9Cit9CisKK0dMZW51bSBFeHRyYWN0VHlwZShHTGVudW0gaW50ZXJuYWxmb3Jt
YXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdM
X1JHQjU2NTogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9TSE9S
VF81XzZfNTsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQ7CisgICAgICBjYXNlIEdMX1JHQjVfQTE6
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8x
OworICAgICAgY2FzZSBHTF9SR0I4X09FUzogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R0xfVU5TSUdORURfQllURTsKKyAgICAgIGNhc2UgR0xfUkdCQThfT0VTOiAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0JZVEU7CisgICAgICBjYXNlIEdMX0xVTUlOQU5D
RThfQUxQSEE4X0VYVDogICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9CWVRFOworICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0U4X0VYVDogICAgICAgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdO
RURfQllURTsKKyAgICAgIGNhc2UgR0xfQUxQSEE4X0VYVDogICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdMX1VOU0lHTkVEX0JZVEU7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1Mz
VENfRFhUMV9FWFQ6ICAgIHJldHVybiBHTF9VTlNJR05FRF9CWVRFOworICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDogICByZXR1cm4gR0xfVU5TSUdORURfQllURTsK
KyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRTogcmV0dXJuIEdM
X1VOU0lHTkVEX0JZVEU7CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVf
QU5HTEU6IHJldHVybiBHTF9VTlNJR05FRF9CWVRFOworICAgICAgY2FzZSBHTF9SR0JBMzJGX0VY
VDogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRkxPQVQ7CisgICAgICBjYXNlIEdMX1JH
QjMyRl9FWFQ6ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9GTE9BVDsKKyAgICAgIGNh
c2UgR0xfQUxQSEEzMkZfRVhUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUOwor
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOiAgICAgICAgICAgICAgICByZXR1cm4gR0xf
RkxPQVQ7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6ICAgICAgICAgIHJl
dHVybiBHTF9GTE9BVDsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6ICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdMX0hBTEZfRkxPQVRfT0VTOworICAgICAgY2FzZSBHTF9SR0IxNkZfRVhU
OiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfSEFMRl9GTE9BVF9PRVM7CisgICAgICBj
YXNlIEdMX0FMUEhBMTZGX0VYVDogICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9IQUxGX0ZM
T0FUX09FUzsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMTZGX0VYVDogICAgICAgICAgICAgICAg
cmV0dXJuIEdMX0hBTEZfRkxPQVRfT0VTOworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEx
NkZfRVhUOiAgICAgICAgICByZXR1cm4gR0xfSEFMRl9GTE9BVF9PRVM7CisgICAgICBjYXNlIEdM
X0JHUkE4X0VYVDogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9CWVRF
OworICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQxNjogICAgICAgICAgICAgICByZXR1cm4g
R0xfVU5TSUdORURfU0hPUlQ7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzog
ICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlQ7CisgICAgICBjYXNlIEdMX0RFUFRIMjRf
U1RFTkNJTDhfT0VTOiAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlRfMjRfOF9PRVM7
CisgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBH
TF9OT05FOyAgIC8vIFVuc3VwcG9ydGVkCisgICAgfQorfQorCitib29sIElzQ29sb3JSZW5kZXJh
YmxlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0
KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICBjYXNlIEdMX1JHQjVfQTE6Cisg
ICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICBjYXNl
IEdMX1JHQkE4X09FUzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICBjYXNlIEdMX0RFUFRI
X0NPTVBPTkVOVDE2OgorICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKKyAgICAgIGNhc2Ug
R0xfREVQVEgyNF9TVEVOQ0lMOF9PRVM6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIGNh
c2UgR0xfQkdSQThfRVhUOgorICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgZGVmYXVsdDoK
KyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBJc0RlcHRoUmVuZGVyYWJsZShHTGVudW0gaW50ZXJuYWxmb3JtYXQpCit7CisgICAg
c3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBP
TkVOVDE2OgorICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzoKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICBjYXNlIEdMX1NURU5DSUxfSU5ERVg4OgorICAgICAgY2FzZSBHTF9S
R0JBNDoKKyAgICAgIGNhc2UgR0xfUkdCNV9BMToKKyAgICAgIGNhc2UgR0xfUkdCNTY1OgorICAg
ICAgY2FzZSBHTF9SR0I4X09FUzoKKyAgICAgIGNhc2UgR0xfUkdCQThfT0VTOgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIElzU3RlbmNpbFJlbmRlcmFibGUo
R0xlbnVtIGludGVybmFsZm9ybWF0KQoreworICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisg
ICAgeworICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKKyAgICAgIGNhc2UgR0xfREVQVEgy
NF9TVEVOQ0lMOF9PRVM6CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgY2FzZSBHTF9SR0JB
NDoKKyAgICAgIGNhc2UgR0xfUkdCNV9BMToKKyAgICAgIGNhc2UgR0xfUkdCNTY1OgorICAgICAg
Y2FzZSBHTF9SR0I4X09FUzoKKyAgICAgIGNhc2UgR0xfUkdCQThfT0VTOgorICAgICAgY2FzZSBH
TF9ERVBUSF9DT01QT05FTlQxNjoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZGVmYXVs
dDoKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBJc0Zsb2F0MzJGb3JtYXQoR0xpbnQgaW50ZXJuYWxmb3JtYXQpCit7CisgICAg
c3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQkEzMkZfRVhU
OgorICAgICAgY2FzZSBHTF9SR0IzMkZfRVhUOgorICAgICAgY2FzZSBHTF9BTFBIQTMyRl9FWFQ6
CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTMyRl9FWFQ6CisgICAgICBjYXNlIEdMX0xVTUlOQU5D
RV9BTFBIQTMyRl9FWFQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBJc0Zsb2F0MTZGb3JtYXQoR0xp
bnQgaW50ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICB7
CisgICAgICBjYXNlIEdMX1JHQkExNkZfRVhUOgorICAgICAgY2FzZSBHTF9SR0IxNkZfRVhUOgor
ICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9F
WFQ6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQ6CisgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
KwordW5zaWduZWQgaW50IEdldEFscGhhU2l6ZShHTGVudW0gY29sb3JGb3JtYXQpCit7CisgICAg
c3dpdGNoIChjb2xvckZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQkExNkZfRVhUOgor
ICAgICAgICByZXR1cm4gMTY7CisgICAgICBjYXNlIEdMX1JHQkEzMkZfRVhUOgorICAgICAgICBy
ZXR1cm4gMzI7CisgICAgICBjYXNlIEdMX1JHQkE0OgorICAgICAgICByZXR1cm4gNDsKKyAgICAg
IGNhc2UgR0xfUkdCQThfT0VTOgorICAgICAgY2FzZSBHTF9CR1JBOF9FWFQ6CisgICAgICAgIHJl
dHVybiA4OworICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgICByZXR1cm4gMTsKKyAgICAg
IGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2UgR0xf
UkdCMzJGX0VYVDoKKyAgICAgIGNhc2UgR0xfUkdCMTZGX0VYVDoKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3Vuc2lnbmVk
IGludCBHZXRSZWRTaXplKEdMZW51bSBjb2xvckZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGNvbG9y
Rm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6CisgICAgICBjYXNlIEdM
X1JHQjE2Rl9FWFQ6CisgICAgICAgIHJldHVybiAxNjsKKyAgICAgIGNhc2UgR0xfUkdCQTMyRl9F
WFQ6CisgICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6CisgICAgICAgIHJldHVybiAzMjsKKyAgICAg
IGNhc2UgR0xfUkdCQTQ6CisgICAgICAgIHJldHVybiA0OworICAgICAgY2FzZSBHTF9SR0JBOF9P
RVM6CisgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6Cisg
ICAgICAgIHJldHVybiA4OworICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgY2FzZSBHTF9S
R0I1NjU6CisgICAgICAgIHJldHVybiA1OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgR2V0R3JlZW5TaXplKEdMZW51bSBjb2xvckZv
cm1hdCkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yRm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xf
UkdCQTE2Rl9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6CisgICAgICAgIHJldHVybiAx
NjsKKyAgICAgIGNhc2UgR0xfUkdCQTMyRl9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6
CisgICAgICAgIHJldHVybiAzMjsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICAgIHJldHVy
biA0OworICAgICAgY2FzZSBHTF9SR0JBOF9PRVM6CisgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoK
KyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICAgIHJldHVybiA4OworICAgICAgY2FzZSBH
TF9SR0I1X0ExOgorICAgICAgICByZXR1cm4gNTsKKyAgICAgIGNhc2UgR0xfUkdCNTY1OgorICAg
ICAgICByZXR1cm4gNjsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0K
K30KKwordW5zaWduZWQgaW50IEdldEJsdWVTaXplKEdMZW51bSBjb2xvckZvcm1hdCkKK3sKKyAg
ICBzd2l0Y2ggKGNvbG9yRm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6
CisgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6CisgICAgICAgIHJldHVybiAxNjsKKyAgICAgIGNh
c2UgR0xfUkdCQTMyRl9FWFQ6CisgICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6CisgICAgICAgIHJl
dHVybiAzMjsKKyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICAgIHJldHVybiA0OworICAgICAg
Y2FzZSBHTF9SR0JBOF9PRVM6CisgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgIGNhc2Ug
R0xfUkdCOF9PRVM6CisgICAgICAgIHJldHVybiA4OworICAgICAgY2FzZSBHTF9SR0I1X0ExOgor
ICAgICAgY2FzZSBHTF9SR0I1NjU6CisgICAgICAgIHJldHVybiA1OworICAgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgR2V0RGVwdGhTaXpl
KEdMZW51bSBkZXB0aEZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGRlcHRoRm9ybWF0KQorICAgIHsK
KyAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6ICAgICAgICByZXR1cm4gMTY7CisgICAg
ICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzogICAgcmV0dXJuIDMyOworICAgICAgY2Fz
ZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzogICAgIHJldHVybiAyNDsKKyAgICAgIGRlZmF1bHQ6
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3Vuc2lnbmVk
IGludCBHZXRTdGVuY2lsU2l6ZShHTGVudW0gc3RlbmNpbEZvcm1hdCkKK3sKKyAgICBzd2l0Y2gg
KHN0ZW5jaWxGb3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09F
UzogICAgIHJldHVybiA4OworICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAwOworICAgIH0KK30KKworYm9vbCBJc1RyaWFuZ2xlTW9kZShHTGVudW0gZHJhd01v
ZGUpCit7CisgICAgc3dpdGNoIChkcmF3TW9kZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1RSSUFO
R0xFUzoKKyAgICAgIGNhc2UgR0xfVFJJQU5HTEVfRkFOOgorICAgICAgY2FzZSBHTF9UUklBTkdM
RV9TVFJJUDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICBjYXNlIEdMX1BPSU5UUzoKKyAg
ICAgIGNhc2UgR0xfTElORVM6CisgICAgICBjYXNlIEdMX0xJTkVfTE9PUDoKKyAgICAgIGNhc2Ug
R0xfTElORV9TVFJJUDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30KKworc3RkOjpz
dHJpbmcgZ2V0VGVtcFBhdGgoKQoreworICAgIGNoYXIgcGF0aFtNQVhfUEFUSF07CisgICAgRFdP
UkQgcGF0aExlbiA9IEdldFRlbXBQYXRoQShzaXplb2YocGF0aCkgLyBzaXplb2YocGF0aFswXSks
IHBhdGgpOworICAgIGlmIChwYXRoTGVuID09IDApCisgICAgeworICAgICAgICBVTlJFQUNIQUJM
RSgpOworICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKKyAgICB9CisKKyAgICBVSU5UIHVu
aXF1ZSA9IEdldFRlbXBGaWxlTmFtZUEocGF0aCwgInNoIiwgMCwgcGF0aCk7CisgICAgaWYgKHVu
aXF1ZSA9PSAwKQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6c3RyaW5nKCk7CisgICAgfQorICAgIAorICAgIHJldHVybiBwYXRoOworfQorCit2b2lk
IHdyaXRlRmlsZShjb25zdCBjaGFyKiBwYXRoLCBjb25zdCB2b2lkKiBjb250ZW50LCBzaXplX3Qg
c2l6ZSkKK3sKKyAgICBGSUxFKiBmaWxlID0gZm9wZW4ocGF0aCwgInciKTsKKyAgICBpZiAoIWZp
bGUpCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZndyaXRlKGNvbnRlbnQsIHNpemVvZihjaGFyKSwgc2l6ZSwgZmlsZSk7CisgICAg
ZmNsb3NlKGZpbGUpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi91dGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3V0aWxpdGllcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2NiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gdXRpbGl0aWVzLmg6IENvbnZlcnNpb24g
ZnVuY3Rpb25zIGFuZCBvdGhlciB1dGlsaXR5IHJvdXRpbmVzLgorCisjaWZuZGVmIExJQkdMRVNW
Ml9VVElMSVRJRVNfSAorI2RlZmluZSBMSUJHTEVTVjJfVVRJTElUSUVTX0gKKworI2RlZmluZSBH
TF9BUElDQUxMCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0
Lmg+CisKKyNpbmNsdWRlIDxzdHJpbmc+CisKK25hbWVzcGFjZSBnbAoreworCitzdHJ1Y3QgQ29s
b3I7CisKK2ludCBVbmlmb3JtQ29tcG9uZW50Q291bnQoR0xlbnVtIHR5cGUpOworR0xlbnVtIFVu
aWZvcm1Db21wb25lbnRUeXBlKEdMZW51bSB0eXBlKTsKK3NpemVfdCBVbmlmb3JtSW50ZXJuYWxT
aXplKEdMZW51bSB0eXBlKTsKK3NpemVfdCBVbmlmb3JtRXh0ZXJuYWxTaXplKEdMZW51bSB0eXBl
KTsKK2ludCBWYXJpYWJsZVJvd0NvdW50KEdMZW51bSB0eXBlKTsKK2ludCBWYXJpYWJsZUNvbHVt
bkNvdW50KEdMZW51bSB0eXBlKTsKKworaW50IEFsbG9jYXRlRmlyc3RGcmVlQml0cyh1bnNpZ25l
ZCBpbnQgKmJpdHMsIHVuc2lnbmVkIGludCBhbGxvY2F0aW9uU2l6ZSwgdW5zaWduZWQgaW50IGJp
dHNTaXplKTsKKwordm9pZCBNYWtlVmFsaWRTaXplKGJvb2wgaXNJbWFnZSwgYm9vbCBpc0NvbXBy
ZXNzZWQsIEdMc2l6ZWkgKnJlcXVlc3RXaWR0aCwgR0xzaXplaSAqcmVxdWVzdEhlaWdodCwgaW50
ICpsZXZlbE9mZnNldCk7CitpbnQgQ29tcHV0ZVBpeGVsU2l6ZShHTGludCBpbnRlcm5hbGZvcm1h
dCk7CitHTHNpemVpIENvbXB1dGVQaXRjaChHTHNpemVpIHdpZHRoLCBHTGludCBpbnRlcm5hbGZv
cm1hdCwgR0xpbnQgYWxpZ25tZW50KTsKK0dMc2l6ZWkgQ29tcHV0ZUNvbXByZXNzZWRQaXRjaChH
THNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0KTsKK0dMc2l6ZWkgQ29tcHV0ZUNvbXByZXNzZWRT
aXplKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0KTsKK2Jvb2wg
SXNDb21wcmVzc2VkKEdMZW51bSBmb3JtYXQpOworYm9vbCBJc0RlcHRoVGV4dHVyZShHTGVudW0g
Zm9ybWF0KTsKK2Jvb2wgSXNTdGVuY2lsVGV4dHVyZShHTGVudW0gZm9ybWF0KTsKK2Jvb2wgSXND
dWJlbWFwVGV4dHVyZVRhcmdldChHTGVudW0gdGFyZ2V0KTsKK2Jvb2wgSXNJbnRlcm5hbFRleHR1
cmVUYXJnZXQoR0xlbnVtIHRhcmdldCk7CitHTGludCBDb252ZXJ0U2l6ZWRJbnRlcm5hbEZvcm1h
dChHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSk7CitHTGVudW0gRXh0cmFjdEZvcm1hdChHTGVu
dW0gaW50ZXJuYWxmb3JtYXQpOworR0xlbnVtIEV4dHJhY3RUeXBlKEdMZW51bSBpbnRlcm5hbGZv
cm1hdCk7CisKK2Jvb2wgSXNDb2xvclJlbmRlcmFibGUoR0xlbnVtIGludGVybmFsZm9ybWF0KTsK
K2Jvb2wgSXNEZXB0aFJlbmRlcmFibGUoR0xlbnVtIGludGVybmFsZm9ybWF0KTsKK2Jvb2wgSXNT
dGVuY2lsUmVuZGVyYWJsZShHTGVudW0gaW50ZXJuYWxmb3JtYXQpOworCitib29sIElzRmxvYXQz
MkZvcm1hdChHTGludCBpbnRlcm5hbGZvcm1hdCk7Citib29sIElzRmxvYXQxNkZvcm1hdChHTGlu
dCBpbnRlcm5hbGZvcm1hdCk7CisKK0dMdWludCBHZXRBbHBoYVNpemUoR0xlbnVtIGNvbG9yRm9y
bWF0KTsKK0dMdWludCBHZXRSZWRTaXplKEdMZW51bSBjb2xvckZvcm1hdCk7CitHTHVpbnQgR2V0
R3JlZW5TaXplKEdMZW51bSBjb2xvckZvcm1hdCk7CitHTHVpbnQgR2V0Qmx1ZVNpemUoR0xlbnVt
IGNvbG9yRm9ybWF0KTsKK0dMdWludCBHZXREZXB0aFNpemUoR0xlbnVtIGRlcHRoRm9ybWF0KTsK
K0dMdWludCBHZXRTdGVuY2lsU2l6ZShHTGVudW0gc3RlbmNpbEZvcm1hdCk7Citib29sIElzVHJp
YW5nbGVNb2RlKEdMZW51bSBkcmF3TW9kZSk7CisKK30KKworc3RkOjpzdHJpbmcgZ2V0VGVtcFBh
dGgoKTsKK3ZvaWQgd3JpdGVGaWxlKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCBzaXplKTsKKworI2VuZGlmICAvLyBMSUJHTEVTVjJfVVRJTElUSUVTX0gKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQmxpdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9CbGl0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvQmxpdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTk1
IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDIt
MjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJs
aXQuY3BwOiBTdXJmYWNlIGNvcHkgdXRpbGl0eSBjbGFzcy4KKworI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9CbGl0LmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3Jl
bmRlcmVyL1JlbmRlclRhcmdldDkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVu
ZGVyZXI5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0ZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAi
bGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgorCituYW1lc3BhY2UKK3sKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmgiCisjaW5jbHVkZSAi
bGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvZmxpcHl2cy5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocHMuaCIKKyNp
bmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVu
dG1hc2twcy5oIgorCitjb25zdCBCWVRFKiBjb25zdCBnX3NoYWRlckNvZGVbXSA9Cit7CisgICAg
Z192czIwX3N0YW5kYXJkdnMsCisgICAgZ192czIwX2ZsaXB5dnMsCisgICAgZ19wczIwX3Bhc3N0
aHJvdWdocHMsCisgICAgZ19wczIwX2x1bWluYW5jZXBzLAorICAgIGdfcHMyMF9jb21wb25lbnRt
YXNrcHMKK307CisKK2NvbnN0IHNpemVfdCBnX3NoYWRlclNpemVbXSA9Cit7CisgICAgc2l6ZW9m
KGdfdnMyMF9zdGFuZGFyZHZzKSwKKyAgICBzaXplb2YoZ192czIwX2ZsaXB5dnMpLAorICAgIHNp
emVvZihnX3BzMjBfcGFzc3Rocm91Z2hwcyksCisgICAgc2l6ZW9mKGdfcHMyMF9sdW1pbmFuY2Vw
cyksCisgICAgc2l6ZW9mKGdfcHMyMF9jb21wb25lbnRtYXNrcHMpCit9OworfQorCituYW1lc3Bh
Y2UgcngKK3sKK0JsaXQ6OkJsaXQocng6OlJlbmRlcmVyOSAqcmVuZGVyZXIpCisgIDogbVJlbmRl
cmVyKHJlbmRlcmVyKSwgbVF1YWRWZXJ0ZXhCdWZmZXIoTlVMTCksIG1RdWFkVmVydGV4RGVjbGFy
YXRpb24oTlVMTCksIG1TYXZlZFN0YXRlQmxvY2soTlVMTCksIG1TYXZlZFJlbmRlclRhcmdldChO
VUxMKSwgbVNhdmVkRGVwdGhTdGVuY2lsKE5VTEwpCit7CisgICAgaW5pdEdlb21ldHJ5KCk7Cisg
ICAgbWVtc2V0KG1Db21waWxlZFNoYWRlcnMsIDAsIHNpemVvZihtQ29tcGlsZWRTaGFkZXJzKSk7
Cit9CisKK0JsaXQ6On5CbGl0KCkKK3sKKyAgICBpZiAobVNhdmVkU3RhdGVCbG9jaykgbVNhdmVk
U3RhdGVCbG9jay0+UmVsZWFzZSgpOworICAgIGlmIChtUXVhZFZlcnRleEJ1ZmZlcikgbVF1YWRW
ZXJ0ZXhCdWZmZXItPlJlbGVhc2UoKTsKKyAgICBpZiAobVF1YWRWZXJ0ZXhEZWNsYXJhdGlvbikg
bVF1YWRWZXJ0ZXhEZWNsYXJhdGlvbi0+UmVsZWFzZSgpOworCisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBTSEFERVJfQ09VTlQ7IGkrKykKKyAgICB7CisgICAgICAgIGlmIChtQ29tcGlsZWRTaGFk
ZXJzW2ldKQorICAgICAgICB7CisgICAgICAgICAgICBtQ29tcGlsZWRTaGFkZXJzW2ldLT5SZWxl
YXNlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQmxpdDo6aW5pdEdlb21ldHJ5KCkK
K3sKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgcXVhZFtdID0KKyAgICB7CisgICAgICAgIC0xLCAt
MSwKKyAgICAgICAgLTEsICAxLAorICAgICAgICAgMSwgLTEsCisgICAgICAgICAxLCAgMQorICAg
IH07CisKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmlj
ZSgpOworCisgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVZlcnRleEJ1ZmZlcihz
aXplb2YocXVhZCksIEQzRFVTQUdFX1dSSVRFT05MWSwgMCwgRDNEUE9PTF9ERUZBVUxULCAmbVF1
YWRWZXJ0ZXhCdWZmZXIsIE5VTEwpOworCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1
bHQgPT0gRV9PVVRPRk1FTU9SWSk7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7CisgICAgfQorCisgICAgdm9pZCAqbG9ja1B0ciA9IE5VTEw7CisgICAgcmVzdWx0
ID0gbVF1YWRWZXJ0ZXhCdWZmZXItPkxvY2soMCwgMCwgJmxvY2tQdHIsIDApOworCisgICAgaWYg
KEZBSUxFRChyZXN1bHQpIHx8IGxvY2tQdHIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZN
RU1PUlkpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
IH0KKworICAgIG1lbWNweShsb2NrUHRyLCBxdWFkLCBzaXplb2YocXVhZCkpOworICAgIG1RdWFk
VmVydGV4QnVmZmVyLT5VbmxvY2soKTsKKworICAgIHN0YXRpYyBjb25zdCBEM0RWRVJURVhFTEVN
RU5UOSBlbGVtZW50c1tdID0KKyAgICB7CisgICAgICAgIHsgMCwgMCwgRDNEREVDTFRZUEVfRkxP
QVQyLCBEM0RERUNMTUVUSE9EX0RFRkFVTFQsIEQzRERFQ0xVU0FHRV9QT1NJVElPTiwgMCB9LAor
ICAgICAgICBEM0RERUNMX0VORCgpCisgICAgfTsKKworICAgIHJlc3VsdCA9IGRldmljZS0+Q3Jl
YXRlVmVydGV4RGVjbGFyYXRpb24oZWxlbWVudHMsICZtUXVhZFZlcnRleERlY2xhcmF0aW9uKTsK
KworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIEFTU0VSVChyZXN1bHQg
PT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOwor
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwor
dGVtcGxhdGUgPGNsYXNzIEQzRFNoYWRlclR5cGU+Citib29sIEJsaXQ6OnNldFNoYWRlcihTaGFk
ZXJJZCBzb3VyY2UsIGNvbnN0IGNoYXIgKnByb2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICBE
M0RTaGFkZXJUeXBlICoocng6OlJlbmRlcmVyOTo6KmNyZWF0ZVNoYWRlcikoY29uc3QgRFdPUkQg
Kiwgc2l6ZV90IGxlbmd0aCksCisgICAgICAgICAgICAgICAgICAgICBIUkVTVUxUIChXSU5BUEkg
SURpcmVjdDNERGV2aWNlOTo6KnNldFNoYWRlcikoRDNEU2hhZGVyVHlwZSopKQoreworICAgIElE
aXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICBE
M0RTaGFkZXJUeXBlICpzaGFkZXI7CisKKyAgICBpZiAobUNvbXBpbGVkU2hhZGVyc1tzb3VyY2Vd
ICE9IE5VTEwpCisgICAgeworICAgICAgICBzaGFkZXIgPSBzdGF0aWNfY2FzdDxEM0RTaGFkZXJU
eXBlKj4obUNvbXBpbGVkU2hhZGVyc1tzb3VyY2VdKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgY29uc3QgQllURSogc2hhZGVyQ29kZSA9IGdfc2hhZGVyQ29kZVtzb3VyY2VdOwor
ICAgICAgICBzaXplX3Qgc2hhZGVyU2l6ZSA9IGdfc2hhZGVyU2l6ZVtzb3VyY2VdOworCisgICAg
ICAgIHNoYWRlciA9IChtUmVuZGVyZXItPipjcmVhdGVTaGFkZXIpKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgRFdPUkQqPihzaGFkZXJDb2RlKSwgc2hhZGVyU2l6ZSk7CisgICAgICAgIGlmICghc2hh
ZGVyKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBjcmVhdGUgc2hhZGVy
IGZvciBibGl0IG9wZXJhdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisKKyAgICAgICAgbUNvbXBpbGVkU2hhZGVyc1tzb3VyY2VdID0gc2hhZGVyOworICAgIH0K
KworICAgIEhSRVNVTFQgaHIgPSAoZGV2aWNlLT4qc2V0U2hhZGVyKShzaGFkZXIpOworCisgICAg
aWYgKEZBSUxFRChocikpCisgICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byBzZXQgc2hhZGVy
IGZvciBibGl0IG9wZXJhdGlvbiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQmxpdDo6c2V0VmVydGV4U2hhZGVyKFNoYWRlcklk
IHNoYWRlcikKK3sKKyAgICByZXR1cm4gc2V0U2hhZGVyPElEaXJlY3QzRFZlcnRleFNoYWRlcjk+
KHNoYWRlciwgInZzXzJfMCIsICZyeDo6UmVuZGVyZXI5OjpjcmVhdGVWZXJ0ZXhTaGFkZXIsICZJ
RGlyZWN0M0REZXZpY2U5OjpTZXRWZXJ0ZXhTaGFkZXIpOworfQorCitib29sIEJsaXQ6OnNldFBp
eGVsU2hhZGVyKFNoYWRlcklkIHNoYWRlcikKK3sKKyAgICByZXR1cm4gc2V0U2hhZGVyPElEaXJl
Y3QzRFBpeGVsU2hhZGVyOT4oc2hhZGVyLCAicHNfMl8wIiwgJnJ4OjpSZW5kZXJlcjk6OmNyZWF0
ZVBpeGVsU2hhZGVyLCAmSURpcmVjdDNERGV2aWNlOTo6U2V0UGl4ZWxTaGFkZXIpOworfQorCitS
RUNUIEJsaXQ6OmdldFN1cmZhY2VSZWN0KElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlKSBjb25z
dAoreworICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOworICAgIHN1cmZhY2UtPkdldERlc2MoJmRl
c2MpOworCisgICAgUkVDVCByZWN0OworICAgIHJlY3QubGVmdCA9IDA7CisgICAgcmVjdC50b3Ag
PSAwOworICAgIHJlY3QucmlnaHQgPSBkZXNjLldpZHRoOworICAgIHJlY3QuYm90dG9tID0gZGVz
Yy5IZWlnaHQ7CisKKyAgICByZXR1cm4gcmVjdDsKK30KKworYm9vbCBCbGl0Ojpib3hGaWx0ZXIo
SURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpCit7Cisg
ICAgSURpcmVjdDNEVGV4dHVyZTkgKnRleHR1cmUgPSBjb3B5U3VyZmFjZVRvVGV4dHVyZShzb3Vy
Y2UsIGdldFN1cmZhY2VSZWN0KHNvdXJjZSkpOworICAgIGlmICghdGV4dHVyZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZp
Y2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgc2F2ZVN0YXRlKCk7CisKKyAgICBk
ZXZpY2UtPlNldFRleHR1cmUoMCwgdGV4dHVyZSk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJUYXJn
ZXQoMCwgZGVzdCk7CisKKyAgICBzZXRWZXJ0ZXhTaGFkZXIoU0hBREVSX1ZTX1NUQU5EQVJEKTsK
KyAgICBzZXRQaXhlbFNoYWRlcihTSEFERVJfUFNfUEFTU1RIUk9VR0gpOworCisgICAgc2V0Q29t
bW9uQmxpdFN0YXRlKCk7CisgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNEU0FNUF9N
SU5GSUxURVIsIEQzRFRFWEZfTElORUFSKTsKKyAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZSgw
LCBEM0RTQU1QX01BR0ZJTFRFUiwgRDNEVEVYRl9MSU5FQVIpOworCisgICAgc2V0Vmlld3BvcnQo
Z2V0U3VyZmFjZVJlY3QoZGVzdCksIDAsIDApOworCisgICAgcmVuZGVyKCk7CisKKyAgICB0ZXh0
dXJlLT5SZWxlYXNlKCk7CisKKyAgICByZXN0b3JlU3RhdGUoKTsKKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIEJsaXQ6OmNvcHkoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29u
c3QgUkVDVCAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIEdMaW50IGxl
dmVsKQoreworICAgIFJlbmRlclRhcmdldDkgKnJlbmRlclRhcmdldCA9IE5VTEw7CisgICAgSURp
cmVjdDNEU3VyZmFjZTkgKnNvdXJjZSA9IE5VTEw7CisgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqY29s
b3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoMCk7CisKKyAgICBpZiAoY29s
b3JidWZmZXIpCisgICAgeworICAgICAgICByZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQ5Ojpt
YWtlUmVuZGVyVGFyZ2V0OShjb2xvcmJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAgIH0K
KyAgICAKKyAgICBpZiAocmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVu
ZGVyVGFyZ2V0LT5nZXRTdXJmYWNlKCk7CisgICAgfQorCisgICAgaWYgKCFzb3VyY2UpCisgICAg
eworICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRhcmdldC4iKTsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAg
fQorCisgICAgVGV4dHVyZVN0b3JhZ2U5XzJEICpzdG9yYWdlOSA9IFRleHR1cmVTdG9yYWdlOV8y
RDo6bWFrZVRleHR1cmVTdG9yYWdlOV8yRChzdG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7
CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3RTdXJmYWNlID0gc3RvcmFnZTktPmdldFN1cmZh
Y2VMZXZlbChsZXZlbCwgdHJ1ZSk7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAg
CisgICAgaWYgKGRlc3RTdXJmYWNlKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gY29weShzb3Vy
Y2UsIHNvdXJjZVJlY3QsIGRlc3RGb3JtYXQsIHhvZmZzZXQsIHlvZmZzZXQsIGRlc3RTdXJmYWNl
KTsKKyAgICAgICAgZGVzdFN1cmZhY2UtPlJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBzb3VyY2Ut
PlJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIEJsaXQ6OmNvcHkoZ2w6
OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgUkVDVCAmc291cmNlUmVjdCwgR0xlbnVt
IGRlc3RGb3JtYXQsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIFRleHR1cmVTdG9yYWdl
SW50ZXJmYWNlQ3ViZSAqc3RvcmFnZSwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpCit7Cisg
ICAgUmVuZGVyVGFyZ2V0OSAqcmVuZGVyVGFyZ2V0ID0gTlVMTDsKKyAgICBJRGlyZWN0M0RTdXJm
YWNlOSAqc291cmNlID0gTlVMTDsKKyAgICBnbDo6UmVuZGVyYnVmZmVyICpjb2xvcmJ1ZmZlciA9
IGZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcigwKTsKKworICAgIGlmIChjb2xvcmJ1ZmZlcikK
KyAgICB7CisgICAgICAgIHJlbmRlclRhcmdldCA9IFJlbmRlclRhcmdldDk6Om1ha2VSZW5kZXJU
YXJnZXQ5KGNvbG9yYnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKSk7CisgICAgfQorICAgIAorICAg
IGlmIChyZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICBzb3VyY2UgPSByZW5kZXJUYXJnZXQt
PmdldFN1cmZhY2UoKTsKKyAgICB9CisKKyAgICBpZiAoIXNvdXJjZSkKKyAgICB7CisgICAgICAg
IEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0LiIpOworICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICB9CisKKyAgICBU
ZXh0dXJlU3RvcmFnZTlfQ3ViZSAqc3RvcmFnZTkgPSBUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6bWFr
ZVRleHR1cmVTdG9yYWdlOV9DdWJlKHN0b3JhZ2UtPmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsKKyAg
ICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdFN1cmZhY2UgPSBzdG9yYWdlOS0+Z2V0Q3ViZU1hcFN1
cmZhY2UodGFyZ2V0LCBsZXZlbCwgdHJ1ZSk7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKwor
ICAgIGlmIChkZXN0U3VyZmFjZSkKKyAgICB7CisgICAgICAgIHJlc3VsdCA9IGNvcHkoc291cmNl
LCBzb3VyY2VSZWN0LCBkZXN0Rm9ybWF0LCB4b2Zmc2V0LCB5b2Zmc2V0LCBkZXN0U3VyZmFjZSk7
CisgICAgICAgIGRlc3RTdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgfQorCisgICAgc291cmNlLT5S
ZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBCbGl0Ojpjb3B5KElEaXJl
Y3QzRFN1cmZhY2U5ICpzb3VyY2UsIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0
Rm9ybWF0LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBJRGlyZWN0M0RTdXJmYWNlOSAq
ZGVzdCkKK3sKKyAgICBpZiAoIWRlc3QpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZp
Y2UoKTsKKworICAgIEQzRFNVUkZBQ0VfREVTQyBzb3VyY2VEZXNjOworICAgIEQzRFNVUkZBQ0Vf
REVTQyBkZXN0RGVzYzsKKyAgICBzb3VyY2UtPkdldERlc2MoJnNvdXJjZURlc2MpOworICAgIGRl
c3QtPkdldERlc2MoJmRlc3REZXNjKTsKKworICAgIGlmIChzb3VyY2VEZXNjLkZvcm1hdCA9PSBk
ZXN0RGVzYy5Gb3JtYXQgJiYgZGVzdERlc2MuVXNhZ2UgJiBEM0RVU0FHRV9SRU5ERVJUQVJHRVQg
JiYKKyAgICAgICAgZDNkOV9nbDo6SXNGb3JtYXRDaGFubmVsRXF1aXZhbGVudChkZXN0RGVzYy5G
b3JtYXQsIGRlc3RGb3JtYXQpKSAgIC8vIENhbiB1c2UgU3RyZXRjaFJlY3QKKyAgICB7CisgICAg
ICAgIFJFQ1QgZGVzdFJlY3QgPSB7eG9mZnNldCwgeW9mZnNldCwgeG9mZnNldCArIChzb3VyY2VS
ZWN0LnJpZ2h0IC0gc291cmNlUmVjdC5sZWZ0KSwgeW9mZnNldCArIChzb3VyY2VSZWN0LmJvdHRv
bSAtIHNvdXJjZVJlY3QudG9wKX07CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5T
dHJldGNoUmVjdChzb3VyY2UsICZzb3VyY2VSZWN0LCBkZXN0LCAmZGVzdFJlY3QsIEQzRFRFWEZf
UE9JTlQpOworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQg
PT0gRV9PVVRPRk1FTU9SWSk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlksIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICByZXR1cm4gZm9ybWF0Q29udmVydChzb3VyY2UsIHNvdXJjZVJlY3QsIGRlc3RGb3JtYXQs
IHhvZmZzZXQsIHlvZmZzZXQsIGRlc3QpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBCbGl0Ojpmb3JtYXRDb252ZXJ0KElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIGNvbnN0
IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LCBHTGludCB4b2Zmc2V0LCBHTGlu
dCB5b2Zmc2V0LCBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCkKK3sKKyAgICBJRGlyZWN0M0RUZXh0
dXJlOSAqdGV4dHVyZSA9IGNvcHlTdXJmYWNlVG9UZXh0dXJlKHNvdXJjZSwgc291cmNlUmVjdCk7
CisgICAgaWYgKCF0ZXh0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7
CisKKyAgICBzYXZlU3RhdGUoKTsKKworICAgIGRldmljZS0+U2V0VGV4dHVyZSgwLCB0ZXh0dXJl
KTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclRhcmdldCgwLCBkZXN0KTsKKworICAgIHNldFZpZXdw
b3J0KHNvdXJjZVJlY3QsIHhvZmZzZXQsIHlvZmZzZXQpOworCisgICAgc2V0Q29tbW9uQmxpdFN0
YXRlKCk7CisgICAgaWYgKHNldEZvcm1hdENvbnZlcnRTaGFkZXJzKGRlc3RGb3JtYXQpKQorICAg
IHsKKyAgICAgICAgcmVuZGVyKCk7CisgICAgfQorCisgICAgdGV4dHVyZS0+UmVsZWFzZSgpOwor
CisgICAgcmVzdG9yZVN0YXRlKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCbGl0
OjpzZXRGb3JtYXRDb252ZXJ0U2hhZGVycyhHTGVudW0gZGVzdEZvcm1hdCkKK3sKKyAgICBib29s
IG9rYXkgPSBzZXRWZXJ0ZXhTaGFkZXIoU0hBREVSX1ZTX1NUQU5EQVJEKTsKKworICAgIHN3aXRj
aCAoZGVzdEZvcm1hdCkKKyAgICB7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAg
ICAgY2FzZSBHTF9SR0JBOgorICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgIGNhc2UgR0xf
UkdCOgorICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgb2theSA9IG9rYXkgJiYgc2V0UGl4
ZWxTaGFkZXIoU0hBREVSX1BTX0NPTVBPTkVOVE1BU0spOworICAgICAgICBicmVhazsKKworICAg
ICAgY2FzZSBHTF9MVU1JTkFOQ0U6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKKyAg
ICAgICAgb2theSA9IG9rYXkgJiYgc2V0UGl4ZWxTaGFkZXIoU0hBREVSX1BTX0xVTUlOQU5DRSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICghb2theSkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBlbnVtIHsgWCA9IDAsIFkgPSAxLCBaID0gMiwg
VyA9IDMgfTsKKworICAgIC8vIFRoZSBtZWFuaW5nIG9mIHRoaXMgY29uc3RhbnQgZGVwZW5kcyBv
biB0aGUgc2hhZGVyIHRoYXQgd2FzIHNlbGVjdGVkLgorICAgIC8vIFNlZSB0aGUgc2hhZGVyIGFz
c2VtYmx5IGNvZGUgYWJvdmUgZm9yIGRldGFpbHMuCisgICAgZmxvYXQgcHNDb25zdDBbNF0gPSB7
IDAsIDAsIDAsIDAgfTsKKworICAgIHN3aXRjaCAoZGVzdEZvcm1hdCkKKyAgICB7CisgICAgICBk
ZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgY2FzZSBH
TF9CR1JBX0VYVDoKKyAgICAgICAgcHNDb25zdDBbWF0gPSAxOworICAgICAgICBwc0NvbnN0MFta
XSA9IDE7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgcHND
b25zdDBbWF0gPSAxOworICAgICAgICBwc0NvbnN0MFtXXSA9IDE7CisgICAgICAgIGJyZWFrOwor
CisgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgICBwc0NvbnN0MFtaXSA9IDE7CisgICAgICAg
IGJyZWFrOworCisgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgcHNDb25zdDBbWV0g
PSAxOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6Cisg
ICAgICAgIHBzQ29uc3QwW1hdID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbVJl
bmRlcmVyLT5nZXREZXZpY2UoKS0+U2V0UGl4ZWxTaGFkZXJDb25zdGFudEYoMCwgcHNDb25zdDAs
IDEpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0lEaXJlY3QzRFRleHR1cmU5ICpCbGl0Ojpj
b3B5U3VyZmFjZVRvVGV4dHVyZShJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSwgY29uc3QgUkVD
VCAmc291cmNlUmVjdCkKK3sKKyAgICBpZiAoIXN1cmZhY2UpCisgICAgeworICAgICAgICByZXR1
cm4gTlVMTDsKKyAgICB9CisKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVy
ZXItPmdldERldmljZSgpOworCisgICAgRDNEU1VSRkFDRV9ERVNDIHNvdXJjZURlc2M7CisgICAg
c3VyZmFjZS0+R2V0RGVzYygmc291cmNlRGVzYyk7CisKKyAgICAvLyBDb3B5IHRoZSByZW5kZXIg
dGFyZ2V0IGludG8gYSB0ZXh0dXJlCisgICAgSURpcmVjdDNEVGV4dHVyZTkgKnRleHR1cmU7Cisg
ICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUoc291cmNlUmVjdC5yaWdo
dCAtIHNvdXJjZVJlY3QubGVmdCwgc291cmNlUmVjdC5ib3R0b20gLSBzb3VyY2VSZWN0LnRvcCwg
MSwgRDNEVVNBR0VfUkVOREVSVEFSR0VULCBzb3VyY2VEZXNjLkZvcm1hdCwgRDNEUE9PTF9ERUZB
VUxULCAmdGV4dHVyZSwgTlVMTCk7CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgewor
ICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3Vs
dCA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCAoSURpcmVjdDNEVGV4dHVyZTkqKU5VTEwpOworICAgIH0KKworICAgIElEaXJlY3Qz
RFN1cmZhY2U5ICp0ZXh0dXJlU3VyZmFjZTsKKyAgICByZXN1bHQgPSB0ZXh0dXJlLT5HZXRTdXJm
YWNlTGV2ZWwoMCwgJnRleHR1cmVTdXJmYWNlKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkg
fHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOworICAgICAgICB0ZXh0dXJlLT5SZWxlYXNlKCk7
CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgKElEaXJlY3QzRFRl
eHR1cmU5KilOVUxMKTsKKyAgICB9CisKKyAgICBtUmVuZGVyZXItPmVuZFNjZW5lKCk7CisgICAg
cmVzdWx0ID0gZGV2aWNlLT5TdHJldGNoUmVjdChzdXJmYWNlLCAmc291cmNlUmVjdCwgdGV4dHVy
ZVN1cmZhY2UsIE5VTEwsIEQzRFRFWEZfTk9ORSk7CisKKyAgICB0ZXh0dXJlU3VyZmFjZS0+UmVs
ZWFzZSgpOworCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1F
TU9SWSk7CisgICAgICAgIHRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAoSURpcmVjdDNEVGV4dHVyZTkqKU5VTEwpOworICAgIH0K
KworICAgIHJldHVybiB0ZXh0dXJlOworfQorCit2b2lkIEJsaXQ6OnNldFZpZXdwb3J0KGNvbnN0
IFJFQ1QgJnNvdXJjZVJlY3QsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQpCit7CisgICAg
SURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAg
IEQzRFZJRVdQT1JUOSB2cDsKKyAgICB2cC5YICAgICAgPSB4b2Zmc2V0OworICAgIHZwLlkgICAg
ICA9IHlvZmZzZXQ7CisgICAgdnAuV2lkdGggID0gc291cmNlUmVjdC5yaWdodCAtIHNvdXJjZVJl
Y3QubGVmdDsKKyAgICB2cC5IZWlnaHQgPSBzb3VyY2VSZWN0LmJvdHRvbSAtIHNvdXJjZVJlY3Qu
dG9wOworICAgIHZwLk1pblogICA9IDAuMGY7CisgICAgdnAuTWF4WiAgID0gMS4wZjsKKyAgICBk
ZXZpY2UtPlNldFZpZXdwb3J0KCZ2cCk7CisKKyAgICBmbG9hdCBoYWxmUGl4ZWxBZGp1c3RbNF0g
PSB7IC0xLjBmL3ZwLldpZHRoLCAxLjBmL3ZwLkhlaWdodCwgMCwgMCB9OworICAgIGRldmljZS0+
U2V0VmVydGV4U2hhZGVyQ29uc3RhbnRGKDAsIGhhbGZQaXhlbEFkanVzdCwgMSk7Cit9CisKK3Zv
aWQgQmxpdDo6c2V0Q29tbW9uQmxpdFN0YXRlKCkKK3sKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpk
ZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgZGV2aWNlLT5TZXREZXB0aFN0
ZW5jaWxTdXJmYWNlKE5VTEwpOworCisgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19G
SUxMTU9ERSwgRDNERklMTF9TT0xJRCk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RS
U19BTFBIQVRFU1RFTkFCTEUsIEZBTFNFKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQz
RFJTX0FMUEhBQkxFTkRFTkFCTEUsIEZBTFNFKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRl
KEQzRFJTX0NVTExNT0RFLCBEM0RDVUxMX05PTkUpOworICAgIGRldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfQ0xJUFBMQU5FRU5BQkxFLCAwKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRl
KEQzRFJTX0NPTE9SV1JJVEVFTkFCTEUsIEQzRENPTE9SV1JJVEVFTkFCTEVfQUxQSEEgfCBEM0RD
T0xPUldSSVRFRU5BQkxFX0JMVUUgfCBEM0RDT0xPUldSSVRFRU5BQkxFX0dSRUVOIHwgRDNEQ09M
T1JXUklURUVOQUJMRV9SRUQpOworICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1JH
QldSSVRFRU5BQkxFLCBGQUxTRSk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19T
Q0lTU09SVEVTVEVOQUJMRSwgRkFMU0UpOworCisgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUo
MCwgRDNEU0FNUF9NQUdGSUxURVIsIEQzRFRFWEZfUE9JTlQpOworICAgIGRldmljZS0+U2V0U2Ft
cGxlclN0YXRlKDAsIEQzRFNBTVBfTUlORklMVEVSLCBEM0RURVhGX1BPSU5UKTsKKyAgICBkZXZp
Y2UtPlNldFNhbXBsZXJTdGF0ZSgwLCBEM0RTQU1QX1NSR0JURVhUVVJFLCBGQUxTRSk7CisgICAg
ZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNEU0FNUF9BRERSRVNTVSwgRDNEVEFERFJFU1Nf
Q0xBTVApOworICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfQUREUkVTU1Ys
IEQzRFRBRERSRVNTX0NMQU1QKTsKKworICAgIFJFQ1Qgc2Npc3NvclJlY3QgPSB7MH07ICAgLy8g
U2Npc3NvcmluZyBpcyBkaXNhYmxlZCBmb3IgZmxpcHBpbmcsIGJ1dCB3ZSBuZWVkIHRoaXMgdG8g
Y2FwdHVyZSBhbmQgcmVzdG9yZSB0aGUgb2xkIHJlY3RhbmdsZQorICAgIGRldmljZS0+U2V0U2Np
c3NvclJlY3QoJnNjaXNzb3JSZWN0KTsKKworICAgIGZvcihpbnQgaSA9IDA7IGkgPCBnbDo6TUFY
X1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBkZXZpY2UtPlNldFN0cmVhbVNv
dXJjZUZyZXEoaSwgMSk7CisgICAgfQorfQorCit2b2lkIEJsaXQ6OnJlbmRlcigpCit7CisgICAg
SURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAg
IEhSRVNVTFQgaHIgPSBkZXZpY2UtPlNldFN0cmVhbVNvdXJjZSgwLCBtUXVhZFZlcnRleEJ1ZmZl
ciwgMCwgMiAqIHNpemVvZihmbG9hdCkpOworICAgIGhyID0gZGV2aWNlLT5TZXRWZXJ0ZXhEZWNs
YXJhdGlvbihtUXVhZFZlcnRleERlY2xhcmF0aW9uKTsKKworICAgIG1SZW5kZXJlci0+c3RhcnRT
Y2VuZSgpOworICAgIGhyID0gZGV2aWNlLT5EcmF3UHJpbWl0aXZlKEQzRFBUX1RSSUFOR0xFU1RS
SVAsIDAsIDIpOworfQorCit2b2lkIEJsaXQ6OnNhdmVTdGF0ZSgpCit7CisgICAgSURpcmVjdDNE
RGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIEhSRVNVTFQg
aHI7CisKKyAgICBkZXZpY2UtPkdldERlcHRoU3RlbmNpbFN1cmZhY2UoJm1TYXZlZERlcHRoU3Rl
bmNpbCk7CisgICAgZGV2aWNlLT5HZXRSZW5kZXJUYXJnZXQoMCwgJm1TYXZlZFJlbmRlclRhcmdl
dCk7CisKKyAgICBpZiAobVNhdmVkU3RhdGVCbG9jayA9PSBOVUxMKQorICAgIHsKKyAgICAgICAg
aHIgPSBkZXZpY2UtPkJlZ2luU3RhdGVCbG9jaygpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVE
KGhyKSB8fCBociA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBociA9PSBFX09VVE9GTUVN
T1JZKTsKKworICAgICAgICBzZXRDb21tb25CbGl0U3RhdGUoKTsKKworICAgICAgICBzdGF0aWMg
Y29uc3QgZmxvYXQgZHVtbXlDb25zdFs0XSA9IHsgMCwgMCwgMCwgMCB9OworCisgICAgICAgIGRl
dmljZS0+U2V0VmVydGV4U2hhZGVyKE5VTEwpOworICAgICAgICBkZXZpY2UtPlNldFZlcnRleFNo
YWRlckNvbnN0YW50RigwLCBkdW1teUNvbnN0LCAxKTsKKyAgICAgICAgZGV2aWNlLT5TZXRQaXhl
bFNoYWRlcihOVUxMKTsKKyAgICAgICAgZGV2aWNlLT5TZXRQaXhlbFNoYWRlckNvbnN0YW50Rigw
LCBkdW1teUNvbnN0LCAxKTsKKworICAgICAgICBEM0RWSUVXUE9SVDkgZHVtbXlWcDsKKyAgICAg
ICAgZHVtbXlWcC5YID0gMDsKKyAgICAgICAgZHVtbXlWcC5ZID0gMDsKKyAgICAgICAgZHVtbXlW
cC5XaWR0aCA9IDE7CisgICAgICAgIGR1bW15VnAuSGVpZ2h0ID0gMTsKKyAgICAgICAgZHVtbXlW
cC5NaW5aID0gMDsKKyAgICAgICAgZHVtbXlWcC5NYXhaID0gMTsKKworICAgICAgICBkZXZpY2Ut
PlNldFZpZXdwb3J0KCZkdW1teVZwKTsKKworICAgICAgICBkZXZpY2UtPlNldFRleHR1cmUoMCwg
TlVMTCk7CisKKyAgICAgICAgZGV2aWNlLT5TZXRTdHJlYW1Tb3VyY2UoMCwgbVF1YWRWZXJ0ZXhC
dWZmZXIsIDAsIDApOworCisgICAgICAgIGRldmljZS0+U2V0VmVydGV4RGVjbGFyYXRpb24obVF1
YWRWZXJ0ZXhEZWNsYXJhdGlvbik7CisKKyAgICAgICAgaHIgPSBkZXZpY2UtPkVuZFN0YXRlQmxv
Y2soJm1TYXZlZFN0YXRlQmxvY2spOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSB8fCBo
ciA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBociA9PSBFX09VVE9GTUVNT1JZKTsKKyAg
ICB9CisKKyAgICBBU1NFUlQobVNhdmVkU3RhdGVCbG9jayAhPSBOVUxMKTsKKworICAgIGlmICht
U2F2ZWRTdGF0ZUJsb2NrICE9IE5VTEwpCisgICAgeworICAgICAgICBociA9IG1TYXZlZFN0YXRl
QmxvY2stPkNhcHR1cmUoKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOworICAgIH0K
K30KKwordm9pZCBCbGl0OjpyZXN0b3JlU3RhdGUoKQoreworICAgIElEaXJlY3QzRERldmljZTkg
KmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICBkZXZpY2UtPlNldERlcHRo
U3RlbmNpbFN1cmZhY2UobVNhdmVkRGVwdGhTdGVuY2lsKTsKKyAgICBpZiAobVNhdmVkRGVwdGhT
dGVuY2lsICE9IE5VTEwpCisgICAgeworICAgICAgICBtU2F2ZWREZXB0aFN0ZW5jaWwtPlJlbGVh
c2UoKTsKKyAgICAgICAgbVNhdmVkRGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICB9CisKKyAgICBk
ZXZpY2UtPlNldFJlbmRlclRhcmdldCgwLCBtU2F2ZWRSZW5kZXJUYXJnZXQpOworICAgIGlmICht
U2F2ZWRSZW5kZXJUYXJnZXQgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIG1TYXZlZFJlbmRlclRh
cmdldC0+UmVsZWFzZSgpOworICAgICAgICBtU2F2ZWRSZW5kZXJUYXJnZXQgPSBOVUxMOworICAg
IH0KKworICAgIEFTU0VSVChtU2F2ZWRTdGF0ZUJsb2NrICE9IE5VTEwpOworCisgICAgaWYgKG1T
YXZlZFN0YXRlQmxvY2sgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIG1TYXZlZFN0YXRlQmxvY2st
PkFwcGx5KCk7CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQmxpdC5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBCbGl0
LmNwcDogU3VyZmFjZSBjb3B5IHV0aWxpdHkgY2xhc3MuCisKKyNpZm5kZWYgTElCR0xFU1YyX0JM
SVRfSF8KKyNkZWZpbmUgTElCR0xFU1YyX0JMSVRfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmds
ZXV0aWxzLmgiCisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgRnJhbWVidWZmZXI7Cit9CisKK25h
bWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI5OworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRl
cmZhY2UyRDsKK2NsYXNzIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTsKKworY2xhc3MgQmxp
dAoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgQmxpdChSZW5kZXJlcjkgKnJlbmRlcmVyKTsK
KyAgICB+QmxpdCgpOworCisgICAgLy8gQ29weSBmcm9tIHNvdXJjZSBzdXJmYWNlIHRvIGRlc3Qg
c3VyZmFjZS4KKyAgICAvLyBzb3VyY2VSZWN0LCB4b2Zmc2V0LCB5b2Zmc2V0IGFyZSBpbiBEM0Qg
Y29vcmRpbmF0ZXMgKDAsMCBpbiB1cHBlci1sZWZ0KQorICAgIGJvb2wgY29weShnbDo6RnJhbWVi
dWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZv
cm1hdCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZh
Y2UyRCAqc3RvcmFnZSwgR0xpbnQgbGV2ZWwpOworICAgIGJvb2wgY29weShnbDo6RnJhbWVidWZm
ZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1h
dCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VD
dWJlICpzdG9yYWdlLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCk7CisKKyAgICAvLyBDb3B5
IGZyb20gc291cmNlIHN1cmZhY2UgdG8gZGVzdCBzdXJmYWNlLgorICAgIC8vIHNvdXJjZVJlY3Qs
IHhvZmZzZXQsIHlvZmZzZXQgYXJlIGluIEQzRCBjb29yZGluYXRlcyAoMCwwIGluIHVwcGVyLWxl
ZnQpCisgICAgLy8gc291cmNlIGlzIGludGVycHJldGVkIGFzIFJHQkEgYW5kIGRlc3RGb3JtYXQg
c3BlY2lmaWVzIHRoZSBkZXNpcmVkIHJlc3VsdCBmb3JtYXQuIEZvciBleGFtcGxlLCBpZiBkZXN0
Rm9ybWF0ID0gR0xfUkdCLCB0aGUgYWxwaGEgY2hhbm5lbCB3aWxsIGJlIGZvcmNlZCB0byAwLgor
ICAgIGJvb2wgZm9ybWF0Q29udmVydChJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlLCBjb25zdCBS
RUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwgR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpOworCisgICAgLy8gMngyIGJveCBmaWx0
ZXIgc2FtcGxlIGZyb20gc291cmNlIHRvIGRlc3QuCisgICAgLy8gUmVxdWlyZXMgdGhhdCBzb3Vy
Y2UgaXMgUkdCKEEpIGFuZCBkZXN0IGhhcyB0aGUgc2FtZSBmb3JtYXQgYXMgc291cmNlLgorICAg
IGJvb2wgYm94RmlsdGVyKElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIElEaXJlY3QzRFN1cmZh
Y2U5ICpkZXN0KTsKKworICBwcml2YXRlOgorICAgIHJ4OjpSZW5kZXJlcjkgKm1SZW5kZXJlcjsK
KworICAgIElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKm1RdWFkVmVydGV4QnVmZmVyOworICAgIElE
aXJlY3QzRFZlcnRleERlY2xhcmF0aW9uOSAqbVF1YWRWZXJ0ZXhEZWNsYXJhdGlvbjsKKworICAg
IHZvaWQgaW5pdEdlb21ldHJ5KCk7CisKKyAgICBib29sIHNldEZvcm1hdENvbnZlcnRTaGFkZXJz
KEdMZW51bSBkZXN0Rm9ybWF0KTsKKworICAgIGJvb2wgY29weShJRGlyZWN0M0RTdXJmYWNlOSAq
c291cmNlLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwgR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpOworICAgIElE
aXJlY3QzRFRleHR1cmU5ICpjb3B5U3VyZmFjZVRvVGV4dHVyZShJRGlyZWN0M0RTdXJmYWNlOSAq
c3VyZmFjZSwgY29uc3QgUkVDVCAmc291cmNlUmVjdCk7CisgICAgdm9pZCBzZXRWaWV3cG9ydChj
b25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0KTsKKyAg
ICB2b2lkIHNldENvbW1vbkJsaXRTdGF0ZSgpOworICAgIFJFQ1QgZ2V0U3VyZmFjZVJlY3QoSURp
cmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UpIGNvbnN0OworCisgICAgLy8gVGhpcyBlbnVtIGlzIHVz
ZWQgdG8gaW5kZXggbUNvbXBpbGVkU2hhZGVycyBhbmQgbVNoYWRlclNvdXJjZS4KKyAgICBlbnVt
IFNoYWRlcklkCisgICAgeworICAgICAgICBTSEFERVJfVlNfU1RBTkRBUkQsCisgICAgICAgIFNI
QURFUl9WU19GTElQWSwKKyAgICAgICAgU0hBREVSX1BTX1BBU1NUSFJPVUdILAorICAgICAgICBT
SEFERVJfUFNfTFVNSU5BTkNFLAorICAgICAgICBTSEFERVJfUFNfQ09NUE9ORU5UTUFTSywKKyAg
ICAgICAgU0hBREVSX0NPVU5UCisgICAgfTsKKworICAgIC8vIFRoaXMgYWN0dWFsbHkgY29udGFp
bnMgSURpcmVjdDNEVmVydGV4U2hhZGVyOSBvciBJRGlyZWN0M0RQaXhlbFNoYWRlcjkgY2FzdGVk
IHRvIElVbmtub3duLgorICAgIElVbmtub3duICptQ29tcGlsZWRTaGFkZXJzW1NIQURFUl9DT1VO
VF07CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgRDNEU2hhZGVyVHlwZT4KKyAgICBib29sIHNldFNo
YWRlcihTaGFkZXJJZCBzb3VyY2UsIGNvbnN0IGNoYXIgKnByb2ZpbGUsCisgICAgICAgICAgICAg
ICAgICAgRDNEU2hhZGVyVHlwZSAqKFJlbmRlcmVyOTo6KmNyZWF0ZVNoYWRlcikoY29uc3QgRFdP
UkQgKiwgc2l6ZV90IGxlbmd0aCksCisgICAgICAgICAgICAgICAgICAgSFJFU1VMVCAoV0lOQVBJ
IElEaXJlY3QzRERldmljZTk6OipzZXRTaGFkZXIpKEQzRFNoYWRlclR5cGUqKSk7CisKKyAgICBi
b29sIHNldFZlcnRleFNoYWRlcihTaGFkZXJJZCBzaGFkZXIpOworICAgIGJvb2wgc2V0UGl4ZWxT
aGFkZXIoU2hhZGVySWQgc2hhZGVyKTsKKyAgICB2b2lkIHJlbmRlcigpOworCisgICAgdm9pZCBz
YXZlU3RhdGUoKTsKKyAgICB2b2lkIHJlc3RvcmVTdGF0ZSgpOworICAgIElEaXJlY3QzRFN0YXRl
QmxvY2s5ICptU2F2ZWRTdGF0ZUJsb2NrOworICAgIElEaXJlY3QzRFN1cmZhY2U5ICptU2F2ZWRS
ZW5kZXJUYXJnZXQ7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKm1TYXZlZERlcHRoU3RlbmNpbDsK
KworICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihCbGl0KTsKK307Cit9CisKKyNlbmRpZiAg
IC8vIExJQkdMRVNWMl9CTElUX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2U5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2U5
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4
IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBCdWZmZXJT
dG9yYWdlOS5jcHAgRGVmaW5lcyB0aGUgQnVmZmVyU3RvcmFnZTkgY2xhc3MuCisKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTkuaCIKKyNpbmNsdWRlICJjb21tb24v
ZGVidWcuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0J1ZmZlclN0b3JhZ2U5OjpCdWZmZXJTdG9y
YWdlOSgpCit7CisgICAgbU1lbW9yeSA9IE5VTEw7CisgICAgbUFsbG9jYXRlZFNpemUgPSAwOwor
ICAgIG1TaXplID0gMDsKK30KKworQnVmZmVyU3RvcmFnZTk6On5CdWZmZXJTdG9yYWdlOSgpCit7
CisgICAgZGVsZXRlW10gbU1lbW9yeTsKK30KKworQnVmZmVyU3RvcmFnZTkgKkJ1ZmZlclN0b3Jh
Z2U5OjptYWtlQnVmZmVyU3RvcmFnZTkoQnVmZmVyU3RvcmFnZSAqYnVmZmVyU3RvcmFnZSkKK3sK
KyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShCdWZmZXJTdG9yYWdlOSosIGJ1ZmZlclN0b3Jh
Z2UpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QnVmZmVyU3RvcmFnZTkqPihidWZmZXJTdG9y
YWdlKTsKK30KKwordm9pZCAqQnVmZmVyU3RvcmFnZTk6OmdldERhdGEoKQoreworICAgIHJldHVy
biBtTWVtb3J5OworfQorCit2b2lkIEJ1ZmZlclN0b3JhZ2U5OjpzZXREYXRhKGNvbnN0IHZvaWQq
IGRhdGEsIHVuc2lnbmVkIGludCBzaXplLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworICAgIGlm
ICghbU1lbW9yeSB8fCBvZmZzZXQgKyBzaXplID4gbUFsbG9jYXRlZFNpemUpCisgICAgeworICAg
ICAgICB1bnNpZ25lZCBpbnQgbmV3QWxsb2NhdGVkU2l6ZSA9IG9mZnNldCArIHNpemU7CisgICAg
ICAgIHZvaWQgKm5ld01lbW9yeSA9IG5ldyBjaGFyW25ld0FsbG9jYXRlZFNpemVdOworCisgICAg
ICAgIGlmIChvZmZzZXQgPiAwICYmIG1NZW1vcnkgJiYgbUFsbG9jYXRlZFNpemUgPiAwKQorICAg
ICAgICB7CisgICAgICAgICAgICBtZW1jcHkobmV3TWVtb3J5LCBtTWVtb3J5LCBzdGQ6Om1pbihv
ZmZzZXQsIG1BbGxvY2F0ZWRTaXplKSk7CisgICAgICAgIH0KKworICAgICAgICBkZWxldGVbXSBt
TWVtb3J5OworICAgICAgICBtTWVtb3J5ID0gbmV3TWVtb3J5OworICAgICAgICBtQWxsb2NhdGVk
U2l6ZSA9IG5ld0FsbG9jYXRlZFNpemU7CisgICAgfQorCisgICAgbVNpemUgPSBzdGQ6Om1heCht
U2l6ZSwgb2Zmc2V0ICsgc2l6ZSk7CisgICAgaWYgKGRhdGEpCisgICAgeworICAgICAgICBtZW1j
cHkocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obU1lbW9yeSkgKyBvZmZzZXQsIGRhdGEsIHNpemUp
OworICAgIH0KK30KKwordm9pZCBCdWZmZXJTdG9yYWdlOTo6Y2xlYXIoKQoreworICAgIG1TaXpl
ID0gMDsKK30KKwordW5zaWduZWQgaW50IEJ1ZmZlclN0b3JhZ2U5OjpnZXRTaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVNpemU7Cit9CisKK2Jvb2wgQnVmZmVyU3RvcmFnZTk6OnN1cHBvcnRz
RGlyZWN0QmluZGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0
b3JhZ2U5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gQnVmZmVyU3Rv
cmFnZTkuaCBEZWZpbmVzIHRoZSBCdWZmZXJTdG9yYWdlOSBjbGFzcy4KKworI2lmbmRlZiBMSUJH
TEVTVjJfUkVOREVSRVJfQlVGRkVSU1RPUkFHRTlfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRF
UkVSX0JVRkZFUlNUT1JBR0U5X0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvQnVm
ZmVyU3RvcmFnZS5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgQnVmZmVyU3RvcmFnZTkg
OiBwdWJsaWMgQnVmZmVyU3RvcmFnZQoreworICBwdWJsaWM6CisgICAgQnVmZmVyU3RvcmFnZTko
KTsKKyAgICB2aXJ0dWFsIH5CdWZmZXJTdG9yYWdlOSgpOworCisgICAgc3RhdGljIEJ1ZmZlclN0
b3JhZ2U5ICptYWtlQnVmZmVyU3RvcmFnZTkoQnVmZmVyU3RvcmFnZSAqYnVmZmVyU3RvcmFnZSk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgKmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0
YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50IG9mZnNl
dCk7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKCk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQg
Z2V0U2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RpcmVjdEJpbmRpbmco
KSBjb25zdDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihCdWZm
ZXJTdG9yYWdlOSk7CisKKyAgICB2b2lkICptTWVtb3J5OworICAgIHVuc2lnbmVkIGludCBtQWxs
b2NhdGVkU2l6ZTsKKworICAgIHVuc2lnbmVkIGludCBtU2l6ZTsKK307CisKK30KKworI2VuZGlm
IC8vIExJQkdMRVNWMl9SRU5ERVJFUl9CVUZGRVJTVE9SQUdFOV9IXwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvQnVmZmVyU3RvcmFnZTExLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzNTggQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKy8vIEJ1ZmZlclN0b3JhZ2UxMS5jcHAgRGVmaW5lcyB0aGUgQnVmZmVyU3Rv
cmFnZTExIGNsYXNzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3Jh
Z2UxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0J1ZmZlclN0b3Jh
Z2UxMTo6QnVmZmVyU3RvcmFnZTExKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQoreworICAgIG1SZW5k
ZXJlciA9IHJlbmRlcmVyOworCisgICAgbVN0YWdpbmdCdWZmZXIgPSBOVUxMOworICAgIG1TdGFn
aW5nQnVmZmVyU2l6ZSA9IDA7CisKKyAgICBtQnVmZmVyID0gTlVMTDsKKyAgICBtQnVmZmVyU2l6
ZSA9IDA7CisKKyAgICBtU2l6ZSA9IDA7CisKKyAgICBtUmVzb2x2ZWREYXRhID0gTlVMTDsKKyAg
ICBtUmVzb2x2ZWREYXRhU2l6ZSA9IDA7CisgICAgbVJlc29sdmVkRGF0YVZhbGlkID0gZmFsc2U7
CisKKyAgICBtUmVhZFVzYWdlQ291bnQgPSAwOworICAgIG1Xcml0ZVVzYWdlQ291bnQgPSAwOwor
fQorCitCdWZmZXJTdG9yYWdlMTE6On5CdWZmZXJTdG9yYWdlMTEoKQoreworICAgIGlmIChtU3Rh
Z2luZ0J1ZmZlcikKKyAgICB7CisgICAgICAgIG1TdGFnaW5nQnVmZmVyLT5SZWxlYXNlKCk7Cisg
ICAgICAgIG1TdGFnaW5nQnVmZmVyID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobUJ1ZmZlcikK
KyAgICB7CisgICAgICAgIG1CdWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAgbUJ1ZmZlciA9IE5V
TEw7CisgICAgfQorCisgICAgaWYgKG1SZXNvbHZlZERhdGEpCisgICAgeworICAgICAgICBmcmVl
KG1SZXNvbHZlZERhdGEpOworICAgICAgICBtUmVzb2x2ZWREYXRhID0gTlVMTDsKKyAgICB9Cit9
CisKK0J1ZmZlclN0b3JhZ2UxMSAqQnVmZmVyU3RvcmFnZTExOjptYWtlQnVmZmVyU3RvcmFnZTEx
KEJ1ZmZlclN0b3JhZ2UgKmJ1ZmZlclN0b3JhZ2UpCit7CisgICAgQVNTRVJUKEhBU19EWU5BTUlD
X1RZUEUoQnVmZmVyU3RvcmFnZTExKiwgYnVmZmVyU3RvcmFnZSkpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxCdWZmZXJTdG9yYWdlMTEqPihidWZmZXJTdG9yYWdlKTsKK30KKwordm9pZCAqQnVm
ZmVyU3RvcmFnZTExOjpnZXREYXRhKCkKK3sKKyAgICBpZiAoIW1SZXNvbHZlZERhdGFWYWxpZCkK
KyAgICB7CisgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZp
Y2UoKTsKKyAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4dCA9IG1SZW5kZXJlci0+
Z2V0RGV2aWNlQ29udGV4dCgpOworICAgICAgICBIUkVTVUxUIHJlc3VsdDsKKworICAgICAgICBp
ZiAoIW1TdGFnaW5nQnVmZmVyIHx8IG1TdGFnaW5nQnVmZmVyU2l6ZSA8IG1CdWZmZXJTaXplKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobVN0YWdpbmdCdWZmZXIpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgbVN0YWdpbmdCdWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAgICAg
ICAgICBtU3RhZ2luZ0J1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICAgICAgbVN0YWdpbmdCdWZm
ZXJTaXplID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRDNEMTFfQlVGRkVSX0RF
U0MgYnVmZmVyRGVzYzsKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MuQnl0ZVdpZHRoID0gbVNpemU7
CisgICAgICAgICAgICBidWZmZXJEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfU1RBR0lORzsKKyAg
ICAgICAgICAgIGJ1ZmZlckRlc2MuQmluZEZsYWdzID0gMDsKKyAgICAgICAgICAgIGJ1ZmZlckRl
c2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1JFQUQgfCBEM0QxMV9DUFVfQUND
RVNTX1dSSVRFOworICAgICAgICAgICAgYnVmZmVyRGVzYy5NaXNjRmxhZ3MgPSAwOworICAgICAg
ICAgICAgYnVmZmVyRGVzYy5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0gMDsKKworICAgICAgICAgICAg
cmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVCdWZmZXIoJmJ1ZmZlckRlc2MsIE5VTEwsICZtU3RhZ2lu
Z0J1ZmZlcik7CisgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAodm9p
ZCopTlVMTCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1TdGFnaW5nQnVmZmVyU2l6
ZSA9IGJ1ZmZlckRlc2MuQnl0ZVdpZHRoOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtUmVz
b2x2ZWREYXRhIHx8IG1SZXNvbHZlZERhdGFTaXplIDwgbUJ1ZmZlclNpemUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGZyZWUobVJlc29sdmVkRGF0YSk7CisgICAgICAgICAgICBtUmVzb2x2ZWRE
YXRhID0gbWFsbG9jKG1TaXplKTsKKyAgICAgICAgICAgIG1SZXNvbHZlZERhdGFTaXplID0gbVNp
emU7CisgICAgICAgIH0KKworICAgICAgICBEM0QxMV9CT1ggc3JjQm94OworICAgICAgICBzcmNC
b3gubGVmdCA9IDA7CisgICAgICAgIHNyY0JveC5yaWdodCA9IG1TaXplOworICAgICAgICBzcmNC
b3gudG9wID0gMDsKKyAgICAgICAgc3JjQm94LmJvdHRvbSA9IDE7CisgICAgICAgIHNyY0JveC5m
cm9udCA9IDA7CisgICAgICAgIHNyY0JveC5iYWNrID0gMTsKKworICAgICAgICBjb250ZXh0LT5D
b3B5U3VicmVzb3VyY2VSZWdpb24obVN0YWdpbmdCdWZmZXIsIDAsIDAsIDAsIDAsIG1CdWZmZXIs
IDAsICZzcmNCb3gpOworCisgICAgICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRS
ZXNvdXJjZTsKKyAgICAgICAgcmVzdWx0ID0gY29udGV4dC0+TWFwKG1TdGFnaW5nQnVmZmVyLCAw
LCBEM0QxMV9NQVBfUkVBRCwgMCwgJm1hcHBlZFJlc291cmNlKTsKKyAgICAgICAgaWYgKEZBSUxF
RChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlksICh2b2lkKilOVUxMKTsKKyAgICAgICAgfQorCisgICAgICAgIG1lbWNweSht
UmVzb2x2ZWREYXRhLCBtYXBwZWRSZXNvdXJjZS5wRGF0YSwgbVNpemUpOworCisgICAgICAgIGNv
bnRleHQtPlVubWFwKG1TdGFnaW5nQnVmZmVyLCAwKTsKKworICAgICAgICBtUmVzb2x2ZWREYXRh
VmFsaWQgPSB0cnVlOworICAgIH0KKworICAgIG1SZWFkVXNhZ2VDb3VudCA9IDA7CisKKyAgICBy
ZXR1cm4gbVJlc29sdmVkRGF0YTsKK30KKwordm9pZCBCdWZmZXJTdG9yYWdlMTE6OnNldERhdGEo
Y29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGludCBvZmZzZXQp
Cit7CisgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwor
ICAgIElEM0QxMURldmljZUNvbnRleHQgKmNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNv
bnRleHQoKTsKKyAgICBIUkVTVUxUIHJlc3VsdDsKKworICAgIHVuc2lnbmVkIGludCByZXF1aXJl
ZEJ1ZmZlclNpemUgPSBzaXplICsgb2Zmc2V0OworICAgIHVuc2lnbmVkIGludCByZXF1aXJlZFN0
YWdpbmdTaXplID0gc2l6ZTsKKyAgICBib29sIGRpcmVjdEluaXRpYWxpemF0aW9uID0gb2Zmc2V0
ID09IDAgJiYgKCFtQnVmZmVyIHx8IG1CdWZmZXJTaXplIDwgc2l6ZSArIG9mZnNldCk7CisKKyAg
ICBpZiAoIWRpcmVjdEluaXRpYWxpemF0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKCFtU3RhZ2lu
Z0J1ZmZlciB8fCBtU3RhZ2luZ0J1ZmZlclNpemUgPCByZXF1aXJlZFN0YWdpbmdTaXplKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAobVN0YWdpbmdCdWZmZXIpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgbVN0YWdpbmdCdWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAgICAgICAg
ICBtU3RhZ2luZ0J1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICAgICAgbVN0YWdpbmdCdWZmZXJT
aXplID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0Mg
YnVmZmVyRGVzYzsKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MuQnl0ZVdpZHRoID0gc2l6ZTsKKyAg
ICAgICAgICAgIGJ1ZmZlckRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOworICAgICAg
ICAgICAgYnVmZmVyRGVzYy5CaW5kRmxhZ3MgPSAwOworICAgICAgICAgICAgYnVmZmVyRGVzYy5D
UFVBY2Nlc3NGbGFncyA9IEQzRDExX0NQVV9BQ0NFU1NfUkVBRCB8IEQzRDExX0NQVV9BQ0NFU1Nf
V1JJVEU7CisgICAgICAgICAgICBidWZmZXJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgICAg
ICBidWZmZXJEZXNjLlN0cnVjdHVyZUJ5dGVTdHJpZGUgPSAwOworCisgICAgICAgICAgICBpZiAo
ZGF0YSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBEM0QxMV9TVUJSRVNPVVJDRV9E
QVRBIGluaXRpYWxEYXRhOworICAgICAgICAgICAgICAgIGluaXRpYWxEYXRhLnBTeXNNZW0gPSBk
YXRhOworICAgICAgICAgICAgICAgIGluaXRpYWxEYXRhLlN5c01lbVBpdGNoID0gc2l6ZTsKKyAg
ICAgICAgICAgICAgICBpbml0aWFsRGF0YS5TeXNNZW1TbGljZVBpdGNoID0gMDsKKworICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZidWZmZXJEZXNjLCAmaW5p
dGlhbERhdGEsICZtU3RhZ2luZ0J1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVh
dGVCdWZmZXIoJmJ1ZmZlckRlc2MsIE5VTEwsICZtU3RhZ2luZ0J1ZmZlcik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBtU3RhZ2luZ0J1ZmZlclNpemUgPSBzaXplOworICAgICAg
ICB9CisgICAgICAgIGVsc2UgaWYgKGRhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIEQzRDEx
X01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IGNvbnRleHQtPk1hcChtU3RhZ2luZ0J1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRFLCAwLCAmbWFw
cGVkUmVzb3VyY2UpOworICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1lbWNweShtYXBwZWRSZXNvdXJjZS5wRGF0
YSwgZGF0YSwgc2l6ZSk7CisKKyAgICAgICAgICAgIGNvbnRleHQtPlVubWFwKG1TdGFnaW5nQnVm
ZmVyLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbUJ1ZmZlciB8fCBtQnVmZmVy
U2l6ZSA8IHNpemUgKyBvZmZzZXQpCisgICAgeworICAgICAgICBEM0QxMV9CVUZGRVJfREVTQyBi
dWZmZXJEZXNjOworICAgICAgICBidWZmZXJEZXNjLkJ5dGVXaWR0aCA9IHJlcXVpcmVkQnVmZmVy
U2l6ZTsKKyAgICAgICAgYnVmZmVyRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7Cisg
ICAgICAgIGJ1ZmZlckRlc2MuQmluZEZsYWdzID0gRDNEMTFfQklORF9WRVJURVhfQlVGRkVSIHwg
RDNEMTFfQklORF9JTkRFWF9CVUZGRVI7CisgICAgICAgIGJ1ZmZlckRlc2MuQ1BVQWNjZXNzRmxh
Z3MgPSAwOworICAgICAgICBidWZmZXJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgIGJ1ZmZl
ckRlc2MuU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7CisKKyAgICAgICAgaWYgKGRpcmVjdEluaXRp
YWxpemF0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBTaW5jZSB0aGUgZGF0YSB3aWxs
IGZpbGwgdGhlIGVudGlyZSBidWZmZXIgKGJlaW5nIGxhcmdlciB0aGFuIHRoZSBpbml0aWFsIHNp
emUgYW5kIGhhdmluZworICAgICAgICAgICAgLy8gbm8gb2Zmc2V0KSwgdGhlIGJ1ZmZlciBjYW4g
YmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgZGF0YSBzbyBubyBzdGFnaW5nIGJ1ZmZlciBpcyByZXF1
aXJlZAorCisgICAgICAgICAgICAvLyBObyBsb25nZXIgbmVlZCB0aGUgb2xkIGJ1ZmZlcgorICAg
ICAgICAgICAgaWYgKG1CdWZmZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbUJ1
ZmZlci0+UmVsZWFzZSgpOworICAgICAgICAgICAgICAgIG1CdWZmZXIgPSBOVUxMOworICAgICAg
ICAgICAgICAgIG1CdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGRhdGEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRDNEMTFfU1VCUkVTT1VS
Q0VfREFUQSBpbml0aWFsRGF0YTsKKyAgICAgICAgICAgICAgICBpbml0aWFsRGF0YS5wU3lzTWVt
ID0gZGF0YTsKKyAgICAgICAgICAgICAgICBpbml0aWFsRGF0YS5TeXNNZW1QaXRjaCA9IHNpemU7
CisgICAgICAgICAgICAgICAgaW5pdGlhbERhdGEuU3lzTWVtU2xpY2VQaXRjaCA9IDA7CisKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmYnVmZmVyRGVzYywg
JmluaXRpYWxEYXRhLCAmbUJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVC
dWZmZXIoJmJ1ZmZlckRlc2MsIE5VTEwsICZtQnVmZmVyKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobUJ1ZmZlciAmJiBvZmZzZXQgPiAwKQorICAgICAg
ICB7CisgICAgICAgICAgICAvLyBJZiBvZmZzZXQgaXMgZ3JlYXRlciB0aGFuIHplcm8gYW5kIHRo
ZSBidWZmZXIgaXMgbm9uLW51bGwsIG5lZWQgdG8gcHJlc2VydmUgdGhlIGRhdGEgZnJvbQorICAg
ICAgICAgICAgLy8gdGhlIG9sZCBidWZmZXIgdXAgdG8gb2Zmc2V0CisgICAgICAgICAgICBJRDNE
MTFCdWZmZXIgKm5ld0J1ZmZlciA9IE5VTEw7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IGRldmlj
ZS0+Q3JlYXRlQnVmZmVyKCZidWZmZXJEZXNjLCBOVUxMLCAmbmV3QnVmZmVyKTsKKyAgICAgICAg
ICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBEM0QxMV9CT1ggc3JjQm94OworICAgICAgICAgICAgc3JjQm94LmxlZnQgPSAwOwor
ICAgICAgICAgICAgc3JjQm94LnJpZ2h0ID0gc3RkOjptaW4ob2Zmc2V0LCBtQnVmZmVyU2l6ZSk7
CisgICAgICAgICAgICBzcmNCb3gudG9wID0gMDsKKyAgICAgICAgICAgIHNyY0JveC5ib3R0b20g
PSAxOworICAgICAgICAgICAgc3JjQm94LmZyb250ID0gMDsKKyAgICAgICAgICAgIHNyY0JveC5i
YWNrID0gMTsKKworICAgICAgICAgICAgY29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKG5l
d0J1ZmZlciwgMCwgMCwgMCwgMCwgbUJ1ZmZlciwgMCwgJnNyY0JveCk7CisKKyAgICAgICAgICAg
IG1CdWZmZXItPlJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1CdWZmZXIgPSBuZXdCdWZmZXI7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBTaW1wbGUg
Y2FzZSwgbm90aGluZyBuZWVkcyB0byBiZSBjb3BpZWQgZnJvbSB0aGUgb2xkIGJ1ZmZlciB0byB0
aGUgbmV3IG9uZSwganVzdCBjcmVhdGUKKyAgICAgICAgICAgIC8vIGEgbmV3IGJ1ZmZlcgorCisg
ICAgICAgICAgICAvLyBObyBsb25nZXIgbmVlZCB0aGUgb2xkIGJ1ZmZlcgorICAgICAgICAgICAg
aWYgKG1CdWZmZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbUJ1ZmZlci0+UmVs
ZWFzZSgpOworICAgICAgICAgICAgICAgIG1CdWZmZXIgPSBOVUxMOworICAgICAgICAgICAgICAg
IG1CdWZmZXJTaXplID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQ3JlYXRl
IGEgbmV3IGJ1ZmZlciBmb3IgZGF0YSBzdG9yYWdlCisgICAgICAgICAgICByZXN1bHQgPSBkZXZp
Y2UtPkNyZWF0ZUJ1ZmZlcigmYnVmZmVyRGVzYywgTlVMTCwgJm1CdWZmZXIpOworICAgICAgICAg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICB1cGRhdGVTZXJpYWwoKTsKKyAgICAgICAgbUJ1ZmZlclNpemUgPSBidWZm
ZXJEZXNjLkJ5dGVXaWR0aDsKKyAgICB9CisKKyAgICBpZiAoIWRpcmVjdEluaXRpYWxpemF0aW9u
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1TdGFnaW5nQnVmZmVyICYmIG1TdGFnaW5nQnVmZmVy
U2l6ZSA+PSByZXF1aXJlZFN0YWdpbmdTaXplKTsKKworICAgICAgICAvLyBEYXRhIGlzIGFscmVh
ZHkgcHV0IGludG8gdGhlIHN0YWdpbmcgYnVmZmVyLCBjb3B5IGl0IG92ZXIgdG8gdGhlIGRhdGEg
YnVmZmVyCisgICAgICAgIEQzRDExX0JPWCBzcmNCb3g7CisgICAgICAgIHNyY0JveC5sZWZ0ID0g
MDsKKyAgICAgICAgc3JjQm94LnJpZ2h0ID0gc2l6ZTsKKyAgICAgICAgc3JjQm94LnRvcCA9IDA7
CisgICAgICAgIHNyY0JveC5ib3R0b20gPSAxOworICAgICAgICBzcmNCb3guZnJvbnQgPSAwOwor
ICAgICAgICBzcmNCb3guYmFjayA9IDE7CisKKyAgICAgICAgY29udGV4dC0+Q29weVN1YnJlc291
cmNlUmVnaW9uKG1CdWZmZXIsIDAsIG9mZnNldCwgMCwgMCwgbVN0YWdpbmdCdWZmZXIsIDAsICZz
cmNCb3gpOworICAgIH0KKworICAgIG1TaXplID0gc3RkOjptYXgobVNpemUsIG9mZnNldCArIHNp
emUpOworCisgICAgbVdyaXRlVXNhZ2VDb3VudCA9IDA7CisKKyAgICBtUmVzb2x2ZWREYXRhVmFs
aWQgPSBmYWxzZTsKK30KKwordm9pZCBCdWZmZXJTdG9yYWdlMTE6OmNsZWFyKCkKK3sKKyAgICBt
UmVzb2x2ZWREYXRhVmFsaWQgPSBmYWxzZTsKKyAgICBtU2l6ZSA9IDA7Cit9CisKK3Vuc2lnbmVk
IGludCBCdWZmZXJTdG9yYWdlMTE6OmdldFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtU2l6
ZTsKK30KKworYm9vbCBCdWZmZXJTdG9yYWdlMTE6OnN1cHBvcnRzRGlyZWN0QmluZGluZygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQnVmZmVyU3RvcmFnZTExOjptYXJr
QnVmZmVyVXNhZ2UoKQoreworICAgIG1SZWFkVXNhZ2VDb3VudCsrOworICAgIG1Xcml0ZVVzYWdl
Q291bnQrKzsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgdXNhZ2VMaW1pdCA9IDU7
CisKKyAgICBpZiAobVJlYWRVc2FnZUNvdW50ID4gdXNhZ2VMaW1pdCAmJiBtUmVzb2x2ZWREYXRh
KQorICAgIHsKKyAgICAgICAgZnJlZShtUmVzb2x2ZWREYXRhKTsKKyAgICAgICAgbVJlc29sdmVk
RGF0YSA9IE5VTEw7CisgICAgICAgIG1SZXNvbHZlZERhdGFTaXplID0gMDsKKyAgICAgICAgbVJl
c29sdmVkRGF0YVZhbGlkID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1SZWFkVXNhZ2VDb3Vu
dCA+IHVzYWdlTGltaXQgJiYgbVdyaXRlVXNhZ2VDb3VudCA+IHVzYWdlTGltaXQgJiYgbVN0YWdp
bmdCdWZmZXIpCisgICAgeworICAgICAgICBtU3RhZ2luZ0J1ZmZlci0+UmVsZWFzZSgpOworICAg
ICAgICBtU3RhZ2luZ0J1ZmZlciA9IE5VTEw7CisgICAgICAgIG1TdGFnaW5nQnVmZmVyU2l6ZSA9
IDA7CisgICAgfQorfQorCitJRDNEMTFCdWZmZXIgKkJ1ZmZlclN0b3JhZ2UxMTo6Z2V0QnVmZmVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUJ1ZmZlcjsKK30KKworfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL0J1ZmZlclN0b3JhZ2UxMS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlMTEuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJ1ZmZlclN0b3JhZ2UxMS5o
IERlZmluZXMgdGhlIEJ1ZmZlclN0b3JhZ2UxMSBjbGFzcy4KKworI2lmbmRlZiBMSUJHTEVTVjJf
UkVOREVSRVJfQlVGRkVSU1RPUkFHRTExX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9C
VUZGRVJTVE9SQUdFMTFfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJT
dG9yYWdlLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXIxMTsKKworY2xhc3Mg
QnVmZmVyU3RvcmFnZTExIDogcHVibGljIEJ1ZmZlclN0b3JhZ2UKK3sKKyAgcHVibGljOgorICAg
IGV4cGxpY2l0IEJ1ZmZlclN0b3JhZ2UxMShSZW5kZXJlcjExICpyZW5kZXJlcik7CisgICAgdmly
dHVhbCB+QnVmZmVyU3RvcmFnZTExKCk7CisKKyAgICBzdGF0aWMgQnVmZmVyU3RvcmFnZTExICpt
YWtlQnVmZmVyU3RvcmFnZTExKEJ1ZmZlclN0b3JhZ2UgKmJ1ZmZlclN0b3JhZ2UpOworCisgICAg
dmlydHVhbCB2b2lkICpnZXREYXRhKCk7CisgICAgdmlydHVhbCB2b2lkIHNldERhdGEoY29uc3Qg
dm9pZCogZGF0YSwgdW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGludCBvZmZzZXQpOworICAg
IHZpcnR1YWwgdm9pZCBjbGVhcigpOworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNpemUo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEaXJlY3RCaW5kaW5nKCkgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIG1hcmtCdWZmZXJVc2FnZSgpOworCisgICAgSUQzRDExQnVmZmVy
ICpnZXRCdWZmZXIoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIFJlbmRlcmVyMTEgKm1SZW5k
ZXJlcjsKKworICAgIElEM0QxMUJ1ZmZlciAqbVN0YWdpbmdCdWZmZXI7CisgICAgdW5zaWduZWQg
aW50IG1TdGFnaW5nQnVmZmVyU2l6ZTsKKworICAgIElEM0QxMUJ1ZmZlciAqbUJ1ZmZlcjsKKyAg
ICB1bnNpZ25lZCBpbnQgbUJ1ZmZlclNpemU7CisKKyAgICB1bnNpZ25lZCBpbnQgbVNpemU7CisK
KyAgICB2b2lkICptUmVzb2x2ZWREYXRhOworICAgIHVuc2lnbmVkIGludCBtUmVzb2x2ZWREYXRh
U2l6ZTsKKyAgICBib29sIG1SZXNvbHZlZERhdGFWYWxpZDsKKworICAgIHVuc2lnbmVkIGludCBt
UmVhZFVzYWdlQ291bnQ7CisgICAgdW5zaWduZWQgaW50IG1Xcml0ZVVzYWdlQ291bnQ7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfQlVGRkVSU1RPUkFHRTExX0hfCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZl
clN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2Uu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQu
aCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBCdWZmZXJTdG9yYWdlLmNwcCBEZWZpbmVzIHRoZSBhYnN0
cmFjdCBCdWZmZXJTdG9yYWdlIGNsYXNzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L0J1ZmZlclN0b3JhZ2UuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK3Vuc2lnbmVkIGludCBCdWZm
ZXJTdG9yYWdlOjptTmV4dFNlcmlhbCA9IDE7CisKK0J1ZmZlclN0b3JhZ2U6OkJ1ZmZlclN0b3Jh
Z2UoKQoreworICAgIHVwZGF0ZVNlcmlhbCgpOworfQorCitCdWZmZXJTdG9yYWdlOjp+QnVmZmVy
U3RvcmFnZSgpCit7Cit9CisKK3Vuc2lnbmVkIGludCBCdWZmZXJTdG9yYWdlOjpnZXRTZXJpYWwo
KSBjb25zdAoreworICAgIHJldHVybiBtU2VyaWFsOworfQorCit2b2lkIEJ1ZmZlclN0b3JhZ2U6
OnVwZGF0ZVNlcmlhbCgpCit7CisgICAgbVNlcmlhbCA9IG1OZXh0U2VyaWFsKys7Cit9CisKK3Zv
aWQgQnVmZmVyU3RvcmFnZTo6bWFya0J1ZmZlclVzYWdlKCkKK3sKK30KKworfQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9CdWZmZXJTdG9yYWdlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2UuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJ1ZmZlclN0b3JhZ2UuaCBE
ZWZpbmVzIHRoZSBhYnN0cmFjdCBCdWZmZXJTdG9yYWdlIGNsYXNzLgorCisjaWZuZGVmIExJQkdM
RVNWMl9SRU5ERVJFUl9CVUZGRVJTVE9SQUdFX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJF
Ul9CVUZGRVJTVE9SQUdFX0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorCitu
YW1lc3BhY2UgcngKK3sKKworY2xhc3MgQnVmZmVyU3RvcmFnZQoreworICBwdWJsaWM6CisgICAg
QnVmZmVyU3RvcmFnZSgpOworICAgIHZpcnR1YWwgfkJ1ZmZlclN0b3JhZ2UoKTsKKworICAgIC8v
IFRoZSBkYXRhIHJldHVybmVkIGlzIG9ubHkgZ3VhcmFudGVlZCB2YWxpZCB1bnRpbCBuZXh0IG5v
bi1jb25zdCBtZXRob2QuCisgICAgdmlydHVhbCB2b2lkICpnZXREYXRhKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGludCBzaXplLCB1
bnNpZ25lZCBpbnQgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKCkgPSAwOwor
ICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzRGlyZWN0QmluZGluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgbWFya0J1ZmZlclVzYWdlKCk7CisgICAgdW5zaWduZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0
OworCisgIHByb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZVNlcmlhbCgpOworCisgIHByaXZhdGU6
CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEJ1ZmZlclN0b3JhZ2UpOworCisgICAgdW5z
aWduZWQgaW50IG1TZXJpYWw7CisgICAgc3RhdGljIHVuc2lnbmVkIGludCBtTmV4dFNlcmlhbDsK
K307CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9CVUZGRVJTVE9SQUdFX0hf
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0Zl
bmNlOS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9GZW5jZTkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEzNSBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gRmVuY2U5LmNwcDogRGVmaW5lcyB0aGUgcng6OkZlbmNlOSBjbGFzcy4KKworI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFp
bi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaCIKKyNp
bmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmgiCisKK25hbWVzcGFjZSByeAor
eworCitGZW5jZTk6OkZlbmNlOShyeDo6UmVuZGVyZXI5ICpyZW5kZXJlcikKK3sKKyAgICBtUmVu
ZGVyZXIgPSByZW5kZXJlcjsKKyAgICBtUXVlcnkgPSBOVUxMOworfQorCitGZW5jZTk6On5GZW5j
ZTkoKQoreworICAgIGlmIChtUXVlcnkpCisgICAgeworICAgICAgICBtUmVuZGVyZXItPmZyZWVF
dmVudFF1ZXJ5KG1RdWVyeSk7CisgICAgICAgIG1RdWVyeSA9IE5VTEw7CisgICAgfQorfQorCitH
TGJvb2xlYW4gRmVuY2U5Ojppc0ZlbmNlKCkKK3sKKyAgICAvLyBHTF9OVl9mZW5jZSBzcGVjOgor
ICAgIC8vIEEgbmFtZSByZXR1cm5lZCBieSBHZW5GZW5jZXNOViwgYnV0IG5vdCB5ZXQgc2V0IHZp
YSBTZXRGZW5jZU5WLCBpcyBub3QgdGhlIG5hbWUgb2YgYW4gZXhpc3RpbmcgZmVuY2UuCisgICAg
cmV0dXJuIG1RdWVyeSAhPSBOVUxMOworfQorCit2b2lkIEZlbmNlOTo6c2V0RmVuY2UoR0xlbnVt
IGNvbmRpdGlvbikKK3sKKyAgICBpZiAoIW1RdWVyeSkKKyAgICB7CisgICAgICAgIG1RdWVyeSA9
IG1SZW5kZXJlci0+YWxsb2NhdGVFdmVudFF1ZXJ5KCk7CisgICAgICAgIGlmICghbVF1ZXJ5KQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OworICAgICAgICB9CisgICAgfQorCisgICAgSFJFU1VMVCByZXN1bHQgPSBtUXVlcnktPklzc3Vl
KEQzRElTU1VFX0VORCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgIHNl
dENvbmRpdGlvbihjb25kaXRpb24pOworICAgIHNldFN0YXR1cyhHTF9GQUxTRSk7Cit9CisKK0dM
Ym9vbGVhbiBGZW5jZTk6OnRlc3RGZW5jZSgpCit7CisgICAgaWYgKG1RdWVyeSA9PSBOVUxMKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgR0xf
VFJVRSk7CisgICAgfQorCisgICAgSFJFU1VMVCByZXN1bHQgPSBtUXVlcnktPkdldERhdGEoTlVM
TCwgMCwgRDNER0VUREFUQV9GTFVTSCk7CisKKyAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJy
b3IocmVzdWx0KSkKKyAgICB7CisgICAgICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNlTG9zdCgp
OworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIEdMX1RSVUUpOwor
ICAgIH0KKworICAgIEFTU0VSVChyZXN1bHQgPT0gU19PSyB8fCByZXN1bHQgPT0gU19GQUxTRSk7
CisgICAgc2V0U3RhdHVzKHJlc3VsdCA9PSBTX09LKTsKKyAgICByZXR1cm4gZ2V0U3RhdHVzKCk7
Cit9CisKK3ZvaWQgRmVuY2U5OjpmaW5pc2hGZW5jZSgpCit7CisgICAgaWYgKG1RdWVyeSA9PSBO
VUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgfQorCisgICAgd2hpbGUgKCF0ZXN0RmVuY2UoKSkKKyAgICB7CisgICAgICAgIFNs
ZWVwKDApOworICAgIH0KK30KKwordm9pZCBGZW5jZTk6OmdldEZlbmNlaXYoR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYW1zKQoreworICAgIGlmIChtUXVlcnkgPT0gTlVMTCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAg
IHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZFTkNFX1NUQVRVU19OVjoK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gR0xfTlZfZmVuY2Ugc3BlYzoKKyAgICAgICAgICAg
IC8vIE9uY2UgdGhlIHN0YXR1cyBvZiBhIGZlbmNlIGhhcyBiZWVuIGZpbmlzaGVkICh2aWEgRmlu
aXNoRmVuY2VOVikgb3IgdGVzdGVkIGFuZCB0aGUgcmV0dXJuZWQgc3RhdHVzIGlzIFRSVUUgKHZp
YSBlaXRoZXIgVGVzdEZlbmNlTlYKKyAgICAgICAgICAgIC8vIG9yIEdldEZlbmNlaXZOViBxdWVy
eWluZyB0aGUgRkVOQ0VfU1RBVFVTX05WKSwgdGhlIHN0YXR1cyByZW1haW5zIFRSVUUgdW50aWwg
dGhlIG5leHQgU2V0RmVuY2VOViBvZiB0aGUgZmVuY2UuCisgICAgICAgICAgICBpZiAoZ2V0U3Rh
dHVzKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcGFyYW1zWzBdID0gR0xfVFJV
RTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVF1ZXJ5LT5HZXREYXRhKE5VTEwsIDAsIDAp
OworCisgICAgICAgICAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwYXJhbXNbMF0gPSBHTF9UUlVFOworICAgICAg
ICAgICAgICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNlTG9zdCgpOworICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gU19PSyB8fCByZXN1bHQgPT0gU19GQUxTRSk7Cisg
ICAgICAgICAgICBzZXRTdGF0dXMocmVzdWx0ID09IFNfT0spOworICAgICAgICAgICAgcGFyYW1z
WzBdID0gZ2V0U3RhdHVzKCk7CisKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfRkVOQ0VfQ09ORElUSU9OX05WOgorICAgICAgICAgICAgcGFyYW1zWzBdID0g
Z2V0Q29uZGl0aW9uKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlOS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTku
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAx
MyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEZlbmNl
OS5oOiBEZWZpbmVzIHRoZSByeDo6RmVuY2U5IGNsYXNzIHdoaWNoIGltcGxlbWVudHMgcng6OkZl
bmNlSW1wbC4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfRkVOQ0U5X0hfCisjZGVmaW5l
IExJQkdMRVNWMl9SRU5ERVJFUl9GRU5DRTlfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5k
ZXJlci9GZW5jZUltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjk7CisK
K2NsYXNzIEZlbmNlOSA6IHB1YmxpYyBGZW5jZUltcGwKK3sKKyAgcHVibGljOgorICAgIGV4cGxp
Y2l0IEZlbmNlOShyeDo6UmVuZGVyZXI5ICpyZW5kZXJlcik7CisgICAgdmlydHVhbCB+RmVuY2U5
KCk7CisKKyAgICBHTGJvb2xlYW4gaXNGZW5jZSgpOworICAgIHZvaWQgc2V0RmVuY2UoR0xlbnVt
IGNvbmRpdGlvbik7CisgICAgR0xib29sZWFuIHRlc3RGZW5jZSgpOworICAgIHZvaWQgZmluaXNo
RmVuY2UoKTsKKyAgICB2b2lkIGdldEZlbmNlaXYoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1z
KTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihGZW5jZTkpOwor
CisgICAgcng6OlJlbmRlcmVyOSAqbVJlbmRlcmVyOworICAgIElEaXJlY3QzRFF1ZXJ5OSAqbVF1
ZXJ5OworfTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0ZFTkNFOV9IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5j
ZTExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL0ZlbmNlMTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZTExLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMzQgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHly
aWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKy8vIEZlbmNlMTEuY3BwOiBEZWZpbmVzIHRoZSByeDo6RmVuY2UxMSBjbGFzcyB3aGljaCBp
bXBsZW1lbnRzIHJ4OjpGZW5jZUltcGwuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
RmVuY2UxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK0ZlbmNlMTE6
OkZlbmNlMTEocng6OlJlbmRlcmVyMTEgKnJlbmRlcmVyKQoreworICAgIG1SZW5kZXJlciA9IHJl
bmRlcmVyOworICAgIG1RdWVyeSA9IE5VTEw7Cit9CisKK0ZlbmNlMTE6On5GZW5jZTExKCkKK3sK
KyAgICBpZiAobVF1ZXJ5KQorICAgIHsKKyAgICAgICAgbVF1ZXJ5LT5SZWxlYXNlKCk7CisgICAg
ICAgIG1RdWVyeSA9IE5VTEw7CisgICAgfQorfQorCitHTGJvb2xlYW4gRmVuY2UxMTo6aXNGZW5j
ZSgpCit7CisgICAgLy8gR0xfTlZfZmVuY2Ugc3BlYzoKKyAgICAvLyBBIG5hbWUgcmV0dXJuZWQg
YnkgR2VuRmVuY2VzTlYsIGJ1dCBub3QgeWV0IHNldCB2aWEgU2V0RmVuY2VOViwgaXMgbm90IHRo
ZSBuYW1lIG9mIGFuIGV4aXN0aW5nIGZlbmNlLgorICAgIHJldHVybiBtUXVlcnkgIT0gTlVMTDsK
K30KKwordm9pZCBGZW5jZTExOjpzZXRGZW5jZShHTGVudW0gY29uZGl0aW9uKQoreworICAgIGlm
ICghbVF1ZXJ5KQorICAgIHsKKyAgICAgICAgRDNEMTFfUVVFUllfREVTQyBxdWVyeURlc2M7Cisg
ICAgICAgIHF1ZXJ5RGVzYy5RdWVyeSA9IEQzRDExX1FVRVJZX0VWRU5UOworICAgICAgICBxdWVy
eURlc2MuTWlzY0ZsYWdzID0gMDsKKworICAgICAgICBpZiAoRkFJTEVEKG1SZW5kZXJlci0+Z2V0
RGV2aWNlKCktPkNyZWF0ZVF1ZXJ5KCZxdWVyeURlc2MsICZtUXVlcnkpKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5FbmQobVF1ZXJ5
KTsKKworICAgIHNldENvbmRpdGlvbihjb25kaXRpb24pOworICAgIHNldFN0YXR1cyhHTF9GQUxT
RSk7Cit9CisKK0dMYm9vbGVhbiBGZW5jZTExOjp0ZXN0RmVuY2UoKQoreworICAgIGlmIChtUXVl
cnkgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sIEdMX1RSVUUpOworICAgIH0KKworICAgIEhSRVNVTFQgcmVzdWx0ID0gbVJlbmRl
cmVyLT5nZXREZXZpY2VDb250ZXh0KCktPkdldERhdGEobVF1ZXJ5LCBOVUxMLCAwLCAwKTsKKwor
ICAgIGlmIChtUmVuZGVyZXItPmlzRGV2aWNlTG9zdCgpKQorICAgIHsKKyAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIEdMX1RSVUUpOworICAgIH0KKworICAgIEFTU0VS
VChyZXN1bHQgPT0gU19PSyB8fCByZXN1bHQgPT0gU19GQUxTRSk7CisgICAgc2V0U3RhdHVzKHJl
c3VsdCA9PSBTX09LKTsKKyAgICByZXR1cm4gZ2V0U3RhdHVzKCk7Cit9CisKK3ZvaWQgRmVuY2Ux
MTo6ZmluaXNoRmVuY2UoKQoreworICAgIGlmIChtUXVlcnkgPT0gTlVMTCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAg
IHdoaWxlICghdGVzdEZlbmNlKCkpCisgICAgeworICAgICAgICBTbGVlcCgwKTsKKyAgICB9Cit9
CisKK3ZvaWQgRmVuY2UxMTo6Z2V0RmVuY2VpdihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMp
Cit7CisgICAgaWYgKG1RdWVyeSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisgICAgc3dpdGNoIChwbmFtZSkK
KyAgICB7CisgICAgICBjYXNlIEdMX0ZFTkNFX1NUQVRVU19OVjoKKyAgICAgICAgeworICAgICAg
ICAgICAgLy8gR0xfTlZfZmVuY2Ugc3BlYzoKKyAgICAgICAgICAgIC8vIE9uY2UgdGhlIHN0YXR1
cyBvZiBhIGZlbmNlIGhhcyBiZWVuIGZpbmlzaGVkICh2aWEgRmluaXNoRmVuY2VOVikgb3IgdGVz
dGVkIGFuZCB0aGUgcmV0dXJuZWQgc3RhdHVzIGlzIFRSVUUgKHZpYSBlaXRoZXIgVGVzdEZlbmNl
TlYKKyAgICAgICAgICAgIC8vIG9yIEdldEZlbmNlaXZOViBxdWVyeWluZyB0aGUgRkVOQ0VfU1RB
VFVTX05WKSwgdGhlIHN0YXR1cyByZW1haW5zIFRSVUUgdW50aWwgdGhlIG5leHQgU2V0RmVuY2VO
ViBvZiB0aGUgZmVuY2UuCisgICAgICAgICAgICBpZiAoZ2V0U3RhdHVzKCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcGFyYW1zWzBdID0gR0xfVFJVRTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0g
bVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCktPkdldERhdGEobVF1ZXJ5LCBOVUxMLCAwLCBE
M0QxMV9BU1lOQ19HRVREQVRBX0RPTk9URkxVU0gpOworCisgICAgICAgICAgICBpZiAobVJlbmRl
cmVyLT5pc0RldmljZUxvc3QoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwYXJh
bXNbMF0gPSBHTF9UUlVFOworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VU
X09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQg
PT0gU19PSyB8fCByZXN1bHQgPT0gU19GQUxTRSk7CisgICAgICAgICAgICBzZXRTdGF0dXMocmVz
dWx0ID09IFNfT0spOworICAgICAgICAgICAgcGFyYW1zWzBdID0gZ2V0U3RhdHVzKCk7CisKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICBjYXNlIEdMX0ZFTkNFX0NPTkRJVElP
Tl9OVjoKKyAgICAgICAgcGFyYW1zWzBdID0gZ2V0Q29uZGl0aW9uKCk7CisgICAgICAgIGJyZWFr
OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElEX0VO
VU0pOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2UxMS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvRmVuY2UxMS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9GZW5jZTExLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBGZW5jZTExLmg6IERlZmluZXMgdGhlIHJ4OjpGZW5jZTExIGNsYXNzIHdoaWNo
IGltcGxlbWVudHMgcng6OkZlbmNlSW1wbC4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJf
RmVuY2UxMV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJfRmVuY2UxMV9IXworCisjaW5j
bHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlSW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sK
K2NsYXNzIFJlbmRlcmVyMTE7CisKK2NsYXNzIEZlbmNlMTEgOiBwdWJsaWMgRmVuY2VJbXBsCit7
CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBGZW5jZTExKHJ4OjpSZW5kZXJlcjExICpyZW5kZXJl
cik7CisgICAgdmlydHVhbCB+RmVuY2UxMSgpOworCisgICAgR0xib29sZWFuIGlzRmVuY2UoKTsK
KyAgICB2b2lkIHNldEZlbmNlKEdMZW51bSBjb25kaXRpb24pOworICAgIEdMYm9vbGVhbiB0ZXN0
RmVuY2UoKTsKKyAgICB2b2lkIGZpbmlzaEZlbmNlKCk7CisgICAgdm9pZCBnZXRGZW5jZWl2KEdM
ZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19D
T1BZX0FORF9BU1NJR04oRmVuY2UxMSk7CisKKyAgICByeDo6UmVuZGVyZXIxMSAqbVJlbmRlcmVy
OworICAgIElEM0QxMVF1ZXJ5ICptUXVlcnk7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVT
VjJfUkVOREVSRVJfRkVOQ0UxMV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9GZW5jZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlSW1wbC5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9G
ZW5jZUltcGwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIEZlbmNlSW1wbC5oOiBEZWZpbmVzIHRoZSByeDo6RmVuY2VJbXBsIGNsYXNzLgorCisjaWZu
ZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9GRU5DRUlNUExfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JF
TkRFUkVSX0ZFTkNFSU1QTF9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKwor
bmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEZlbmNlSW1wbAoreworICBwdWJsaWM6CisgICAgRmVu
Y2VJbXBsKCkgOiBtU3RhdHVzKEdMX0ZBTFNFKSwgbUNvbmRpdGlvbihHTF9OT05FKSB7IH07Cisg
ICAgdmlydHVhbCB+RmVuY2VJbXBsKCkgeyB9OworCisgICAgdmlydHVhbCBHTGJvb2xlYW4gaXNG
ZW5jZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmVuY2UoR0xlbnVtIGNvbmRpdGlvbikg
PSAwOworICAgIHZpcnR1YWwgR0xib29sZWFuIHRlc3RGZW5jZSgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoRmVuY2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldEZlbmNlaXYoR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKSA9IDA7CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQg
c2V0U3RhdHVzKEdMYm9vbGVhbiBzdGF0dXMpIHsgbVN0YXR1cyA9IHN0YXR1czsgfQorICAgIEdM
Ym9vbGVhbiBnZXRTdGF0dXMoKSBjb25zdCB7IHJldHVybiBtU3RhdHVzOyB9CisKKyAgICB2b2lk
IHNldENvbmRpdGlvbihHTHVpbnQgY29uZGl0aW9uKSB7IG1Db25kaXRpb24gPSBjb25kaXRpb247
IH0KKyAgICBHTHVpbnQgZ2V0Q29uZGl0aW9uKCkgY29uc3QgeyByZXR1cm4gbUNvbmRpdGlvbjsg
fQorCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEZlbmNlSW1wbCk7
CisKKyAgICBHTGJvb2xlYW4gbVN0YXR1czsKKyAgICBHTGVudW0gbUNvbmRpdGlvbjsKK307CisK
K30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9GRU5DRUlNUExfSF8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2U5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL0ltYWdlOS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlOS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzMyIEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IEltYWdlOS5jcHA6IEltcGxlbWVudHMgdGhlIHJ4OjpJbWFnZTkgY2xhc3MsIHdoaWNoIGFjdHMg
YXMgdGhlIGludGVyZmFjZSB0bworLy8gdGhlIGFjdHVhbCB1bmRlcmx5aW5nIHN1cmZhY2VzIG9m
IGEgVGV4dHVyZS4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTkuaCIKKwor
I2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0ZyYW1lYnVm
ZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvUmVuZGVyVGFyZ2V0OS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJl
U3RvcmFnZTkuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRp
bHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvZ2VuZXJhdGVtaXAuaCIKKworbmFt
ZXNwYWNlIHJ4Cit7CisKK0ltYWdlOTo6SW1hZ2U5KCkKK3sKKyAgICBtU3VyZmFjZSA9IE5VTEw7
CisgICAgbVJlbmRlcmVyID0gTlVMTDsKKworICAgIG1EM0RQb29sID0gRDNEUE9PTF9TWVNURU1N
RU07CisgICAgbUQzREZvcm1hdCA9IEQzREZNVF9VTktOT1dOOworfQorCitJbWFnZTk6On5JbWFn
ZTkoKQoreworICAgIGlmIChtU3VyZmFjZSkKKyAgICB7CisgICAgICAgIG1TdXJmYWNlLT5SZWxl
YXNlKCk7CisgICAgfQorfQorCit2b2lkIEltYWdlOTo6Z2VuZXJhdGVNaXAoSURpcmVjdDNEU3Vy
ZmFjZTkgKmRlc3RTdXJmYWNlLCBJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlU3VyZmFjZSkKK3sK
KyAgICBEM0RTVVJGQUNFX0RFU0MgZGVzdERlc2M7CisgICAgSFJFU1VMVCByZXN1bHQgPSBkZXN0
U3VyZmFjZS0+R2V0RGVzYygmZGVzdERlc2MpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0
KSk7CisKKyAgICBEM0RTVVJGQUNFX0RFU0Mgc291cmNlRGVzYzsKKyAgICByZXN1bHQgPSBzb3Vy
Y2VTdXJmYWNlLT5HZXREZXNjKCZzb3VyY2VEZXNjKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKHJl
c3VsdCkpOworCisgICAgQVNTRVJUKHNvdXJjZURlc2MuRm9ybWF0ID09IGRlc3REZXNjLkZvcm1h
dCk7CisgICAgQVNTRVJUKHNvdXJjZURlc2MuV2lkdGggPT0gMSB8fCBzb3VyY2VEZXNjLldpZHRo
IC8gMiA9PSBkZXN0RGVzYy5XaWR0aCk7CisgICAgQVNTRVJUKHNvdXJjZURlc2MuSGVpZ2h0ID09
IDEgfHwgc291cmNlRGVzYy5IZWlnaHQgLyAyID09IGRlc3REZXNjLkhlaWdodCk7CisKKyAgICBE
M0RMT0NLRURfUkVDVCBzb3VyY2VMb2NrZWQgPSB7MH07CisgICAgcmVzdWx0ID0gc291cmNlU3Vy
ZmFjZS0+TG9ja1JlY3QoJnNvdXJjZUxvY2tlZCwgTlVMTCwgRDNETE9DS19SRUFET05MWSk7Cisg
ICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgIEQzRExPQ0tFRF9SRUNUIGRlc3RM
b2NrZWQgPSB7MH07CisgICAgcmVzdWx0ID0gZGVzdFN1cmZhY2UtPkxvY2tSZWN0KCZkZXN0TG9j
a2VkLCBOVUxMLCAwKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgY29u
c3QgdW5zaWduZWQgY2hhciAqc291cmNlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KHNvdXJjZUxvY2tlZC5wQml0cyk7CisgICAgdW5zaWduZWQgY2hhciAqZGVz
dERhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihkZXN0TG9ja2VkLnBCaXRz
KTsKKworICAgIGlmIChzb3VyY2VEYXRhICYmIGRlc3REYXRhKQorICAgIHsKKyAgICAgICAgc3dp
dGNoIChzb3VyY2VEZXNjLkZvcm1hdCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2UgRDNERk1U
X0w4OgorICAgICAgICAgICAgR2VuZXJhdGVNaXA8TDg+KHNvdXJjZURlc2MuV2lkdGgsIHNvdXJj
ZURlc2MuSGVpZ2h0LCBzb3VyY2VEYXRhLCBzb3VyY2VMb2NrZWQuUGl0Y2gsIGRlc3REYXRhLCBk
ZXN0TG9ja2VkLlBpdGNoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRDNE
Rk1UX0E4TDg6CisgICAgICAgICAgICBHZW5lcmF0ZU1pcDxBOEw4Pihzb3VyY2VEZXNjLldpZHRo
LCBzb3VyY2VEZXNjLkhlaWdodCwgc291cmNlRGF0YSwgc291cmNlTG9ja2VkLlBpdGNoLCBkZXN0
RGF0YSwgZGVzdExvY2tlZC5QaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBj
YXNlIEQzREZNVF9BOFI4RzhCODoKKyAgICAgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKKyAg
ICAgICAgICAgIEdlbmVyYXRlTWlwPEE4UjhHOEI4Pihzb3VyY2VEZXNjLldpZHRoLCBzb3VyY2VE
ZXNjLkhlaWdodCwgc291cmNlRGF0YSwgc291cmNlTG9ja2VkLlBpdGNoLCBkZXN0RGF0YSwgZGVz
dExvY2tlZC5QaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEQzREZN
VF9BMTZCMTZHMTZSMTZGOgorICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTE2QjE2RzE2UjE2Rj4o
c291cmNlRGVzYy5XaWR0aCwgc291cmNlRGVzYy5IZWlnaHQsIHNvdXJjZURhdGEsIHNvdXJjZUxv
Y2tlZC5QaXRjaCwgZGVzdERhdGEsIGRlc3RMb2NrZWQuUGl0Y2gpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgY2FzZSBEM0RGTVRfQTMyQjMyRzMyUjMyRjoKKyAgICAgICAgICAgIEdl
bmVyYXRlTWlwPEEzMkIzMkczMlIzMkY+KHNvdXJjZURlc2MuV2lkdGgsIHNvdXJjZURlc2MuSGVp
Z2h0LCBzb3VyY2VEYXRhLCBzb3VyY2VMb2NrZWQuUGl0Y2gsIGRlc3REYXRhLCBkZXN0TG9ja2Vk
LlBpdGNoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBkZXN0U3VyZmFjZS0+VW5sb2NrUmVjdCgpOworICAgICAgICBzb3VyY2VTdXJmYWNlLT5V
bmxvY2tSZWN0KCk7CisgICAgfQorfQorCitJbWFnZTkgKkltYWdlOTo6bWFrZUltYWdlOShJbWFn
ZSAqaW1nKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpJbWFnZTkqLCBpbWcp
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cng6OkltYWdlOSo+KGltZyk7Cit9CisKK3ZvaWQg
SW1hZ2U5OjpnZW5lcmF0ZU1pcG1hcChJbWFnZTkgKmRlc3QsIEltYWdlOSAqc291cmNlKQorewor
ICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2VTdXJmYWNlID0gc291cmNlLT5nZXRTdXJmYWNl
KCk7CisgICAgaWYgKHNvdXJjZVN1cmZhY2UgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0U3Vy
ZmFjZSA9IGRlc3QtPmdldFN1cmZhY2UoKTsKKyAgICBnZW5lcmF0ZU1pcChkZXN0U3VyZmFjZSwg
c291cmNlU3VyZmFjZSk7CisKKyAgICBkZXN0LT5tYXJrRGlydHkoKTsKK30KKwordm9pZCBJbWFn
ZTk6OmNvcHlMb2NrYWJsZVN1cmZhY2VzKElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0LCBJRGlyZWN0
M0RTdXJmYWNlOSAqc291cmNlKQoreworICAgIEQzRExPQ0tFRF9SRUNUIHNvdXJjZUxvY2sgPSB7
MH07CisgICAgRDNETE9DS0VEX1JFQ1QgZGVzdExvY2sgPSB7MH07CisgICAgCisgICAgc291cmNl
LT5Mb2NrUmVjdCgmc291cmNlTG9jaywgTlVMTCwgMCk7CisgICAgZGVzdC0+TG9ja1JlY3QoJmRl
c3RMb2NrLCBOVUxMLCAwKTsKKyAgICAKKyAgICBpZiAoc291cmNlTG9jay5wQml0cyAmJiBkZXN0
TG9jay5wQml0cykKKyAgICB7CisgICAgICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOworICAgICAg
ICBzb3VyY2UtPkdldERlc2MoJmRlc2MpOworCisgICAgICAgIGludCByb3dzID0gZDNkOTo6SXND
b21wcmVzc2VkRm9ybWF0KGRlc2MuRm9ybWF0KSA/IGRlc2MuSGVpZ2h0IC8gNCA6IGRlc2MuSGVp
Z2h0OworICAgICAgICBpbnQgYnl0ZXMgPSBkM2Q5OjpDb21wdXRlUm93U2l6ZShkZXNjLkZvcm1h
dCwgZGVzYy5XaWR0aCk7CisgICAgICAgIEFTU0VSVChieXRlcyA8PSBzb3VyY2VMb2NrLlBpdGNo
ICYmIGJ5dGVzIDw9IGRlc3RMb2NrLlBpdGNoKTsKKworICAgICAgICBmb3IoaW50IGkgPSAwOyBp
IDwgcm93czsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBtZW1jcHkoKGNoYXIqKWRlc3RM
b2NrLnBCaXRzICsgZGVzdExvY2suUGl0Y2ggKiBpLCAoY2hhciopc291cmNlTG9jay5wQml0cyAr
IHNvdXJjZUxvY2suUGl0Y2ggKiBpLCBieXRlcyk7CisgICAgICAgIH0KKworICAgICAgICBzb3Vy
Y2UtPlVubG9ja1JlY3QoKTsKKyAgICAgICAgZGVzdC0+VW5sb2NrUmVjdCgpOworICAgIH0KKyAg
ICBlbHNlIFVOUkVBQ0hBQkxFKCk7Cit9CisKK2Jvb2wgSW1hZ2U5OjpyZWRlZmluZShyeDo6UmVu
ZGVyZXIgKnJlbmRlcmVyLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIGJvb2wgZm9yY2VSZWxlYXNlKQoreworICAgIGlmIChtV2lkdGggIT0gd2lk
dGggfHwKKyAgICAgICAgbUhlaWdodCAhPSBoZWlnaHQgfHwKKyAgICAgICAgbUludGVybmFsRm9y
bWF0ICE9IGludGVybmFsZm9ybWF0IHx8CisgICAgICAgIGZvcmNlUmVsZWFzZSkKKyAgICB7Cisg
ICAgICAgIG1SZW5kZXJlciA9IFJlbmRlcmVyOTo6bWFrZVJlbmRlcmVyOShyZW5kZXJlcik7CisK
KyAgICAgICAgbVdpZHRoID0gd2lkdGg7CisgICAgICAgIG1IZWlnaHQgPSBoZWlnaHQ7CisgICAg
ICAgIG1JbnRlcm5hbEZvcm1hdCA9IGludGVybmFsZm9ybWF0OworICAgICAgICAvLyBjb21wdXRl
IHRoZSBkM2QgZm9ybWF0IHRoYXQgd2lsbCBiZSB1c2VkCisgICAgICAgIG1EM0RGb3JtYXQgPSBt
UmVuZGVyZXItPkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQpOwor
ICAgICAgICBtQWN0dWFsRm9ybWF0ID0gZDNkOV9nbDo6R2V0RXF1aXZhbGVudEZvcm1hdChtRDNE
Rm9ybWF0KTsKKworICAgICAgICBpZiAobVN1cmZhY2UpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1TdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgICAgICAgICBtU3VyZmFjZSA9IE5VTEw7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgSW1hZ2U5OjpjcmVhdGVTdXJmYWNlKCkKK3sKKyAgICBpZihtU3VyZmFjZSkK
KyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBJRGlyZWN0M0RUZXh0dXJlOSAq
bmV3VGV4dHVyZSA9IE5VTEw7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKm5ld1N1cmZhY2UgPSBO
VUxMOworICAgIGNvbnN0IEQzRFBPT0wgcG9vbFRvVXNlID0gRDNEUE9PTF9TWVNURU1NRU07Cisg
ICAgY29uc3QgRDNERk9STUFUIGQzZEZvcm1hdCA9IGdldEQzREZvcm1hdCgpOworICAgIEFTU0VS
VChkM2RGb3JtYXQgIT0gRDNERk1UX0lOVFopOyAvLyBXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUg
Zm9yIGRlcHRoIHRleHR1cmVzCisKKyAgICBpZiAobVdpZHRoICE9IDAgJiYgbUhlaWdodCAhPSAw
KQorICAgIHsKKyAgICAgICAgaW50IGxldmVsVG9GZXRjaCA9IDA7CisgICAgICAgIEdMc2l6ZWkg
cmVxdWVzdFdpZHRoID0gbVdpZHRoOworICAgICAgICBHTHNpemVpIHJlcXVlc3RIZWlnaHQgPSBt
SGVpZ2h0OworICAgICAgICBnbDo6TWFrZVZhbGlkU2l6ZSh0cnVlLCBnbDo6SXNDb21wcmVzc2Vk
KG1JbnRlcm5hbEZvcm1hdCksICZyZXF1ZXN0V2lkdGgsICZyZXF1ZXN0SGVpZ2h0LCAmbGV2ZWxU
b0ZldGNoKTsKKworICAgICAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXIt
PmdldERldmljZSgpOworCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVU
ZXh0dXJlKHJlcXVlc3RXaWR0aCwgcmVxdWVzdEhlaWdodCwgbGV2ZWxUb0ZldGNoICsgMSwgMCwg
ZDNkRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBvb2xUb1VzZSwgJm5ld1RleHR1cmUsIE5VTEwpOworCisgICAgICAgIGlmIChGQUlM
RUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RF
UlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7CisgICAgICAg
ICAgICBFUlIoIkNyZWF0aW5nIGltYWdlIHN1cmZhY2UgZmFpbGVkLiIpOworICAgICAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorCisgICAgICAg
IG5ld1RleHR1cmUtPkdldFN1cmZhY2VMZXZlbChsZXZlbFRvRmV0Y2gsICZuZXdTdXJmYWNlKTsK
KyAgICAgICAgbmV3VGV4dHVyZS0+UmVsZWFzZSgpOworICAgIH0KKworICAgIG1TdXJmYWNlID0g
bmV3U3VyZmFjZTsKKyAgICBtRGlydHkgPSBmYWxzZTsKKyAgICBtRDNEUG9vbCA9IHBvb2xUb1Vz
ZTsKK30KKworSFJFU1VMVCBJbWFnZTk6OmxvY2soRDNETE9DS0VEX1JFQ1QgKmxvY2tlZFJlY3Qs
IGNvbnN0IFJFQ1QgKnJlY3QpCit7CisgICAgY3JlYXRlU3VyZmFjZSgpOworCisgICAgSFJFU1VM
VCByZXN1bHQgPSBEM0RFUlJfSU5WQUxJRENBTEw7CisKKyAgICBpZiAobVN1cmZhY2UpCisgICAg
eworICAgICAgICByZXN1bHQgPSBtU3VyZmFjZS0+TG9ja1JlY3QobG9ja2VkUmVjdCwgcmVjdCwg
MCk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgbURpcnR5
ID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEltYWdlOTo6
dW5sb2NrKCkKK3sKKyAgICBpZiAobVN1cmZhY2UpCisgICAgeworICAgICAgICBIUkVTVUxUIHJl
c3VsdCA9IG1TdXJmYWNlLT5VbmxvY2tSZWN0KCk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQo
cmVzdWx0KSk7CisgICAgfQorfQorCitib29sIEltYWdlOTo6aXNSZW5kZXJhYmxlRm9ybWF0KCkg
Y29uc3QKK3sgICAgCisgICAgcmV0dXJuIFRleHR1cmVTdG9yYWdlOTo6SXNUZXh0dXJlRm9ybWF0
UmVuZGVyYWJsZShnZXREM0RGb3JtYXQoKSk7Cit9CisKK0QzREZPUk1BVCBJbWFnZTk6OmdldEQz
REZvcm1hdCgpIGNvbnN0Cit7CisgICAgLy8gdGhpcyBzaG91bGQgb25seSBoYXBwZW4gaWYgdGhl
IGltYWdlIGhhc24ndCBiZWVuIHJlZGVmaW5lZCBmaXJzdAorICAgIC8vIHdoaWNoIHdvdWxkIGJl
IGEgYnVnIGJ5IHRoZSBjYWxsZXIKKyAgICBBU1NFUlQobUQzREZvcm1hdCAhPSBEM0RGTVRfVU5L
Tk9XTik7CisKKyAgICByZXR1cm4gbUQzREZvcm1hdDsKK30KKworSURpcmVjdDNEU3VyZmFjZTkg
KkltYWdlOTo6Z2V0U3VyZmFjZSgpCit7CisgICAgY3JlYXRlU3VyZmFjZSgpOworCisgICAgcmV0
dXJuIG1TdXJmYWNlOworfQorCit2b2lkIEltYWdlOTo6c2V0TWFuYWdlZFN1cmZhY2UoVGV4dHVy
ZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc3RvcmFnZSwgaW50IGxldmVsKQoreworICAgIFRleHR1cmVT
dG9yYWdlOV8yRCAqc3RvcmFnZTkgPSBUZXh0dXJlU3RvcmFnZTlfMkQ6Om1ha2VUZXh0dXJlU3Rv
cmFnZTlfMkQoc3RvcmFnZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgIHNldE1hbmFnZWRT
dXJmYWNlKHN0b3JhZ2U5LT5nZXRTdXJmYWNlTGV2ZWwobGV2ZWwsIGZhbHNlKSk7Cit9CisKK3Zv
aWQgSW1hZ2U5OjpzZXRNYW5hZ2VkU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUg
KnN0b3JhZ2UsIGludCBmYWNlLCBpbnQgbGV2ZWwpCit7CisgICAgVGV4dHVyZVN0b3JhZ2U5X0N1
YmUgKnN0b3JhZ2U5ID0gVGV4dHVyZVN0b3JhZ2U5X0N1YmU6Om1ha2VUZXh0dXJlU3RvcmFnZTlf
Q3ViZShzdG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7CisgICAgc2V0TWFuYWdlZFN1cmZh
Y2Uoc3RvcmFnZTktPmdldEN1YmVNYXBTdXJmYWNlKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWCArIGZhY2UsIGxldmVsLCBmYWxzZSkpOworfQorCit2b2lkIEltYWdlOTo6c2V0TWFuYWdl
ZFN1cmZhY2UoSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UpCit7CisgICAgRDNEU1VSRkFDRV9E
RVNDIGRlc2M7CisgICAgc3VyZmFjZS0+R2V0RGVzYygmZGVzYyk7CisgICAgQVNTRVJUKGRlc2Mu
UG9vbCA9PSBEM0RQT09MX01BTkFHRUQpOworCisgICAgaWYgKChHTHNpemVpKWRlc2MuV2lkdGgg
PT0gbVdpZHRoICYmIChHTHNpemVpKWRlc2MuSGVpZ2h0ID09IG1IZWlnaHQpCisgICAgeworICAg
ICAgICBpZiAobVN1cmZhY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvcHlMb2NrYWJsZVN1
cmZhY2VzKHN1cmZhY2UsIG1TdXJmYWNlKTsKKyAgICAgICAgICAgIG1TdXJmYWNlLT5SZWxlYXNl
KCk7CisgICAgICAgIH0KKworICAgICAgICBtU3VyZmFjZSA9IHN1cmZhY2U7CisgICAgICAgIG1E
M0RQb29sID0gZGVzYy5Qb29sOworICAgIH0KK30KKworYm9vbCBJbWFnZTk6OnVwZGF0ZVN1cmZh
Y2UoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc3RvcmFnZSwgaW50IGxldmVsLCBHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sK
KyAgICBBU1NFUlQoZ2V0U3VyZmFjZSgpICE9IE5VTEwpOworICAgIFRleHR1cmVTdG9yYWdlOV8y
RCAqc3RvcmFnZTkgPSBUZXh0dXJlU3RvcmFnZTlfMkQ6Om1ha2VUZXh0dXJlU3RvcmFnZTlfMkQo
c3RvcmFnZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgIHJldHVybiB1cGRhdGVTdXJmYWNl
KHN0b3JhZ2U5LT5nZXRTdXJmYWNlTGV2ZWwobGV2ZWwsIHRydWUpLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0KTsKK30KKworYm9vbCBJbWFnZTk6OnVwZGF0ZVN1cmZhY2UoVGV4dHVy
ZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBpbnQgZmFjZSwgaW50IGxldmVsLCBHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkK
K3sKKyAgICBBU1NFUlQoZ2V0U3VyZmFjZSgpICE9IE5VTEwpOworICAgIFRleHR1cmVTdG9yYWdl
OV9DdWJlICpzdG9yYWdlOSA9IFRleHR1cmVTdG9yYWdlOV9DdWJlOjptYWtlVGV4dHVyZVN0b3Jh
Z2U5X0N1YmUoc3RvcmFnZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgIHJldHVybiB1cGRh
dGVTdXJmYWNlKHN0b3JhZ2U5LT5nZXRDdWJlTWFwU3VyZmFjZShHTF9URVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1ggKyBmYWNlLCBsZXZlbCwgdHJ1ZSksIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQpOworfQorCitib29sIEltYWdlOTo6dXBkYXRlU3VyZmFjZShJRGlyZWN0M0RTdXJm
YWNlOSAqZGVzdFN1cmZhY2UsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIGlmICghZGVzdFN1cmZhY2UpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2VTdXJmYWNlID0g
Z2V0U3VyZmFjZSgpOworCisgICAgaWYgKHNvdXJjZVN1cmZhY2UgJiYgc291cmNlU3VyZmFjZSAh
PSBkZXN0U3VyZmFjZSkKKyAgICB7CisgICAgICAgIFJFQ1QgcmVjdDsKKyAgICAgICAgcmVjdC5s
ZWZ0ID0geG9mZnNldDsKKyAgICAgICAgcmVjdC50b3AgPSB5b2Zmc2V0OworICAgICAgICByZWN0
LnJpZ2h0ID0geG9mZnNldCArIHdpZHRoOworICAgICAgICByZWN0LmJvdHRvbSA9IHlvZmZzZXQg
KyBoZWlnaHQ7CisKKyAgICAgICAgUE9JTlQgcG9pbnQgPSB7cmVjdC5sZWZ0LCByZWN0LnRvcH07
CisKKyAgICAgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZp
Y2UoKTsKKworICAgICAgICBpZiAobUQzRFBvb2wgPT0gRDNEUE9PTF9NQU5BR0VEKQorICAgICAg
ICB7CisgICAgICAgICAgICBEM0RTVVJGQUNFX0RFU0MgZGVzYzsKKyAgICAgICAgICAgIHNvdXJj
ZVN1cmZhY2UtPkdldERlc2MoJmRlc2MpOworCisgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNl
OSAqc3VyZiA9IDA7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRl
T2Zmc2NyZWVuUGxhaW5TdXJmYWNlKGRlc2MuV2lkdGgsIGRlc2MuSGVpZ2h0LCBkZXNjLkZvcm1h
dCwgRDNEUE9PTF9TWVNURU1NRU0sICZzdXJmLCBOVUxMKTsKKworICAgICAgICAgICAgaWYgKFNV
Q0NFRURFRChyZXN1bHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvcHlMb2Nr
YWJsZVN1cmZhY2VzKHN1cmYsIHNvdXJjZVN1cmZhY2UpOworICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IGRldmljZS0+VXBkYXRlU3VyZmFjZShzdXJmLCAmcmVjdCwgZGVzdFN1cmZhY2UsICZwb2lu
dCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAg
ICAgICAgICBzdXJmLT5SZWxlYXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBVcGRhdGVTdXJmYWNlOiBzb3VyY2Ug
bXVzdCBiZSBTWVNURU1NRU0sIGRlc3QgbXVzdCBiZSBERUZBVUxUIHBvb2xzIAorICAgICAgICAg
ICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPlVwZGF0ZVN1cmZhY2Uoc291cmNlU3VyZmFjZSwg
JnJlY3QsIGRlc3RTdXJmYWNlLCAmcG9pbnQpOworICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURF
RChyZXN1bHQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRlc3RTdXJmYWNlLT5SZWxlYXNl
KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFN0b3JlIHRoZSBwaXhlbCByZWN0YW5nbGUg
ZGVzaWduYXRlZCBieSB4b2Zmc2V0LHlvZmZzZXQsd2lkdGgsaGVpZ2h0IHdpdGggcGl4ZWxzIHN0
b3JlZCBhcyBmb3JtYXQvdHlwZSBhdCBpbnB1dAorLy8gaW50byB0aGUgdGFyZ2V0IHBpeGVsIHJl
Y3RhbmdsZS4KK3ZvaWQgSW1hZ2U5Ojpsb2FkRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB1bnBhY2tBbGlnbm1lbnQsIGNvbnN0IHZvaWQgKmlucHV0KQoreworICAgIFJFQ1Qg
bG9ja1JlY3QgPQorICAgIHsKKyAgICAgICAgeG9mZnNldCwgeW9mZnNldCwKKyAgICAgICAgeG9m
ZnNldCArIHdpZHRoLCB5b2Zmc2V0ICsgaGVpZ2h0CisgICAgfTsKKworICAgIEQzRExPQ0tFRF9S
RUNUIGxvY2tlZDsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IGxvY2soJmxvY2tlZCwgJmxvY2tSZWN0
KTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAg
fQorCisKKyAgICBHTHNpemVpIGlucHV0UGl0Y2ggPSBnbDo6Q29tcHV0ZVBpdGNoKHdpZHRoLCBt
SW50ZXJuYWxGb3JtYXQsIHVucGFja0FsaWdubWVudCk7CisKKyAgICBzd2l0Y2ggKG1JbnRlcm5h
bEZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6CisgICAgICAgIGlmIChn
bDo6c3VwcG9ydHNTU0UyKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRBbHBoYURhdGFU
b0JHUkFTU0UyKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0Y2gs
IGxvY2tlZC5wQml0cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgICBsb2FkQWxwaGFEYXRhVG9CR1JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlu
cHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhUOgorICAgICAgICBsb2FkTHVtaW5hbmNl
RGF0YVRvTmF0aXZlT3JCR1JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2Nr
ZWQuUGl0Y2gsIGxvY2tlZC5wQml0cywgZ2V0RDNERm9ybWF0KCkgPT0gRDNERk1UX0w4KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FMUEhBMzJGX0VYVDoKKyAgICAgICAgbG9hZEFs
cGhhRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2Nr
ZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9M
VU1JTkFOQ0UzMkZfRVhUOgorICAgICAgICBsb2FkTHVtaW5hbmNlRmxvYXREYXRhVG9SR0JBKHdp
ZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0
cyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CisgICAgICAg
IGxvYWRBbHBoYUhhbGZGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwg
aW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VIYWxmRmxv
YXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBsb2NrZWQuUGl0
Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MVU1JTkFO
Q0U4X0FMUEhBOF9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VBbHBoYURhdGFUb05hdGl2ZU9y
QkdSQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2Nr
ZWQucEJpdHMsIGdldEQzREZvcm1hdCgpID09IEQzREZNVF9BOEw4KTsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6CisgICAgICAgIGxvYWRMdW1p
bmFuY2VBbHBoYUZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1
dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoKKyAgICAgICAgbG9hZEx1bWluYW5jZUFscGhh
SGFsZkZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9j
a2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
UkdCOF9PRVM6CisgICAgICAgIGxvYWRSR0JVQnl0ZURhdGFUb0JHUlgod2lkdGgsIGhlaWdodCwg
aW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgICAgbG9hZFJHQjU2NURhdGFUb0JH
UkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2Vk
LnBCaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzoKKyAgICAg
ICAgaWYgKGdsOjpzdXBwb3J0c1NTRTIoKSkKKyAgICAgICAgeworICAgICAgICAgICAgbG9hZFJH
QkFVQnl0ZURhdGFUb0JHUkFTU0UyKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBs
b2NrZWQuUGl0Y2gsIGxvY2tlZC5wQml0cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICBsb2FkUkdCQVVCeXRlRGF0YVRvQkdSQSh3aWR0aCwgaGVpZ2h0
LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0JBNDoKKyAgICAgICAgbG9hZFJH
QkE0NDQ0RGF0YVRvQkdSQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2Vk
LlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdC
NV9BMToKKyAgICAgICAgbG9hZFJHQkE1NTUxRGF0YVRvQkdSQSh3aWR0aCwgaGVpZ2h0LCBpbnB1
dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfQkdSQThfRVhUOgorICAgICAgICBsb2FkQkdSQURhdGFUb0JHUkEo
d2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBC
aXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAvLyBmbG9hdCB0ZXh0dXJlcyBhcmUgY29udmVy
dGVkIHRvIFJHQkEsIG5vdCBCR1JBLCBhcyB0aGV5J3JlIHN0b3JlZCB0aGF0IHdheSBpbiBEM0QK
KyAgICAgIGNhc2UgR0xfUkdCMzJGX0VYVDoKKyAgICAgICAgbG9hZFJHQkZsb2F0RGF0YVRvUkdC
QSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQu
cEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCMTZGX0VYVDoKKyAgICAg
ICAgbG9hZFJHQkhhbGZGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwg
aW5wdXQsIGxvY2tlZC5QaXRjaCwgbG9ja2VkLnBCaXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX1JHQkEzMkZfRVhUOgorICAgICAgICBsb2FkUkdCQUZsb2F0RGF0YVRvUkdCQSh3
aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJp
dHMpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6CisgICAgICAg
IGxvYWRSR0JBSGFsZkZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBp
bnB1dCwgbG9ja2VkLlBpdGNoLCBsb2NrZWQucEJpdHMpOworICAgICAgICBicmVhazsKKyAgICAg
IGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IAorICAgIH0KKworICAgIHVubG9jaygpOworfQorCit2
b2lkIEltYWdlOTo6bG9hZENvbXByZXNzZWREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZz
ZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICppbnB1dCkKK3sKKyAgICBBU1NFUlQoeG9mZnNldCAlIDQg
PT0gMCk7CisgICAgQVNTRVJUKHlvZmZzZXQgJSA0ID09IDApOworCisgICAgUkVDVCBsb2NrUmVj
dCA9IHsKKyAgICAgICAgeG9mZnNldCwgeW9mZnNldCwKKyAgICAgICAgeG9mZnNldCArIHdpZHRo
LCB5b2Zmc2V0ICsgaGVpZ2h0CisgICAgfTsKKworICAgIEQzRExPQ0tFRF9SRUNUIGxvY2tlZDsK
KyAgICBIUkVTVUxUIHJlc3VsdCA9IGxvY2soJmxvY2tlZCwgJmxvY2tSZWN0KTsKKyAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xz
aXplaSBpbnB1dFNpemUgPSBnbDo6Q29tcHV0ZUNvbXByZXNzZWRTaXplKHdpZHRoLCBoZWlnaHQs
IG1JbnRlcm5hbEZvcm1hdCk7CisgICAgR0xzaXplaSBpbnB1dFBpdGNoID0gZ2w6OkNvbXB1dGVD
b21wcmVzc2VkUGl0Y2god2lkdGgsIG1JbnRlcm5hbEZvcm1hdCk7CisgICAgaW50IHJvd3MgPSBp
bnB1dFNpemUgLyBpbnB1dFBpdGNoOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgKytp
KQorICAgIHsKKyAgICAgICAgbWVtY3B5KCh2b2lkKikoKEJZVEUqKWxvY2tlZC5wQml0cyArIGkg
KiBsb2NrZWQuUGl0Y2gpLCAodm9pZCopKChCWVRFKilpbnB1dCArIGkgKiBpbnB1dFBpdGNoKSwg
aW5wdXRQaXRjaCk7CisgICAgfQorCisgICAgdW5sb2NrKCk7Cit9CisKKy8vIFRoaXMgaW1wbGVt
ZW50cyBnbENvcHlUZXhbU3ViXUltYWdlMkQgZm9yIG5vbi1yZW5kZXJhYmxlIGludGVybmFsIHRl
eHR1cmUgZm9ybWF0cyBhbmQgaW5jb21wbGV0ZSB0ZXh0dXJlcwordm9pZCBJbWFnZTk6OmNvcHko
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKQoreworICAgIFJl
bmRlclRhcmdldDkgKnJlbmRlclRhcmdldCA9IE5VTEw7CisgICAgSURpcmVjdDNEU3VyZmFjZTkg
KnN1cmZhY2UgPSBOVUxMOworICAgIGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVyID0gc291
cmNlLT5nZXRDb2xvcmJ1ZmZlcigwKTsKKworICAgIGlmIChjb2xvcmJ1ZmZlcikKKyAgICB7Cisg
ICAgICAgIHJlbmRlclRhcmdldCA9IFJlbmRlclRhcmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5KGNv
bG9yYnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKSk7CisgICAgfQorICAgIAorICAgIGlmIChyZW5k
ZXJUYXJnZXQpCisgICAgeworICAgICAgICBzdXJmYWNlID0gcmVuZGVyVGFyZ2V0LT5nZXRTdXJm
YWNlKCk7CisgICAgfQorCisgICAgaWYgKCFzdXJmYWNlKQorICAgIHsKKyAgICAgICAgRVJSKCJG
YWlsZWQgdG8gcmV0cmlldmUgdGhlIHJlbmRlciB0YXJnZXQuIik7CisgICAgICAgIHJldHVybiBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgSURpcmVjdDNERGV2aWNl
OSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIElEaXJlY3QzRFN1cmZh
Y2U5ICpyZW5kZXJUYXJnZXREYXRhID0gTlVMTDsKKyAgICBEM0RTVVJGQUNFX0RFU0MgZGVzY3Jp
cHRpb247CisgICAgc3VyZmFjZS0+R2V0RGVzYygmZGVzY3JpcHRpb24pOworICAgIAorICAgIEhS
RVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVPZmZzY3JlZW5QbGFpblN1cmZhY2UoZGVzY3Jp
cHRpb24uV2lkdGgsIGRlc2NyaXB0aW9uLkhlaWdodCwgZGVzY3JpcHRpb24uRm9ybWF0LCBEM0RQ
T09MX1NZU1RFTU1FTSwgJnJlbmRlclRhcmdldERhdGEsIE5VTEwpOworCisgICAgaWYgKEZBSUxF
RChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIG1hdGNoaW5n
IGRlc3RpbmF0aW9uIHN1cmZhY2UuIik7CisgICAgICAgIHN1cmZhY2UtPlJlbGVhc2UoKTsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9CisKKyAgICBy
ZXN1bHQgPSBkZXZpY2UtPkdldFJlbmRlclRhcmdldERhdGEoc3VyZmFjZSwgcmVuZGVyVGFyZ2V0
RGF0YSk7CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICBFUlIoIkdl
dFJlbmRlclRhcmdldERhdGEgdW5leHBlY3RlZGx5IGZhaWxlZC4iKTsKKyAgICAgICAgcmVuZGVy
VGFyZ2V0RGF0YS0+UmVsZWFzZSgpOworICAgICAgICBzdXJmYWNlLT5SZWxlYXNlKCk7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgUkVD
VCBzb3VyY2VSZWN0ID0ge3gsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodH07CisgICAgUkVDVCBk
ZXN0UmVjdCA9IHt4b2Zmc2V0LCB5b2Zmc2V0LCB4b2Zmc2V0ICsgd2lkdGgsIHlvZmZzZXQgKyBo
ZWlnaHR9OworCisgICAgRDNETE9DS0VEX1JFQ1Qgc291cmNlTG9jayA9IHswfTsKKyAgICByZXN1
bHQgPSByZW5kZXJUYXJnZXREYXRhLT5Mb2NrUmVjdCgmc291cmNlTG9jaywgJnNvdXJjZVJlY3Qs
IDApOworCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWls
ZWQgdG8gbG9jayB0aGUgc291cmNlIHN1cmZhY2UgKHJlY3RhbmdsZSBtaWdodCBiZSBpbnZhbGlk
KS4iKTsKKyAgICAgICAgcmVuZGVyVGFyZ2V0RGF0YS0+UmVsZWFzZSgpOworICAgICAgICBzdXJm
YWNlLT5SZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSk7CisgICAgfQorCisgICAgRDNETE9DS0VEX1JFQ1QgZGVzdExvY2sgPSB7MH07CisgICAgcmVz
dWx0ID0gbG9jaygmZGVzdExvY2ssICZkZXN0UmVjdCk7CisgICAgCisgICAgaWYgKEZBSUxFRChy
ZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gbG9jayB0aGUgZGVzdGluYXRp
b24gc3VyZmFjZSAocmVjdGFuZ2xlIG1pZ2h0IGJlIGludmFsaWQpLiIpOworICAgICAgICByZW5k
ZXJUYXJnZXREYXRhLT5VbmxvY2tSZWN0KCk7CisgICAgICAgIHJlbmRlclRhcmdldERhdGEtPlJl
bGVhc2UoKTsKKyAgICAgICAgc3VyZmFjZS0+UmVsZWFzZSgpOworICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIGlmIChkZXN0TG9jay5wQml0
cyAmJiBzb3VyY2VMb2NrLnBCaXRzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqc291
cmNlID0gKHVuc2lnbmVkIGNoYXIqKXNvdXJjZUxvY2sucEJpdHM7CisgICAgICAgIHVuc2lnbmVk
IGNoYXIgKmRlc3QgPSAodW5zaWduZWQgY2hhciopZGVzdExvY2sucEJpdHM7CisKKyAgICAgICAg
c3dpdGNoIChkZXNjcmlwdGlvbi5Gb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEQz
REZNVF9YOFI4RzhCODoKKyAgICAgICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKKyAgICAgICAg
ICAgIHN3aXRjaChnZXREM0RGb3JtYXQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
Y2FzZSBEM0RGTVRfWDhSOEc4Qjg6CisgICAgICAgICAgICAgIGNhc2UgRDNERk1UX0E4UjhHOEI4
OgorICAgICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweShkZXN0LCBzb3VyY2UsIDQg
KiB3aWR0aCk7CisKKyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0
Y2g7CisgICAgICAgICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEQz
REZNVF9MODoKKyAgICAgICAgICAgICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5Kysp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHggPSAwOyB4
IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdFt4XSA9IHNvdXJjZVt4ICogNCArIDJdOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7CisgICAg
ICAgICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9BOEw4
OgorICAgICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7IHggPCB3aWR0
aDsgeCsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBk
ZXN0W3ggKiAyICsgMF0gPSBzb3VyY2VbeCAqIDQgKyAyXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRlc3RbeCAqIDIgKyAxXSA9IHNvdXJjZVt4ICogNCArIDNdOworICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7
CisgICAgICAgICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICBjYXNlIEQzREZNVF9SNUc2QjU6CisgICAgICAgICAgICBzd2l0
Y2goZ2V0RDNERm9ybWF0KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgRDNE
Rk1UX1g4UjhHOEI4OgorICAgICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7
IHkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9
IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCByZ2IgPSAoKHVuc2lnbmVkIHNob3J0Kilzb3VyY2Up
W3hdOworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciByZWQgPSAocmdiICYg
MHhGODAwKSA+PiA4OworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBncmVl
biA9IChyZ2IgJiAweDA3RTApID4+IDM7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIGJsdWUgPSAocmdiICYgMHgwMDFGKSA8PCAzOworICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdFt4ICsgMF0gPSBibHVlIHwgKGJsdWUgPj4gNSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkZXN0W3ggKyAxXSA9IGdyZWVuIHwgKGdyZWVuID4+IDYpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzdFt4ICsgMl0gPSByZWQgfCAocmVkID4+IDUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzdFt4ICsgM10gPSAweEZGOworICAgICAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7CisgICAgICAgICAg
ICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9MODoKKyAgICAg
ICAgICAgICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciByZWQgPSBzb3VyY2VbeCAqIDIgKyAxXSAmIDB4Rjg7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkZXN0W3hdID0gcmVkIHwgKHJlZCA+PiA1KTsKKyAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOworICAgICAg
ICAgICAgICAgICAgICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgY2FzZSBEM0RGTVRfQTFSNUc1QjU6CisgICAgICAgICAgICBzd2l0Y2goZ2V0
RDNERm9ybWF0KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGNhc2UgRDNERk1UX1g4
UjhHOEI4OgorICAgICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7IHgg
PCB3aWR0aDsgeCsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBhcmdiID0gKCh1bnNpZ25lZCBzaG9ydCopc291cmNlKVt4XTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcmVkID0gKGFyZ2IgJiAweDdD
MDApID4+IDc7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGdyZWVuID0g
KGFyZ2IgJiAweDAzRTApID4+IDI7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIGJsdWUgPSAoYXJnYiAmIDB4MDAxRikgPDwgMzsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlc3RbeCArIDBdID0gYmx1ZSB8IChibHVlID4+IDUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdFt4ICsgMV0gPSBncmVlbiB8IChncmVlbiA+PiA1KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RbeCArIDJdID0gcmVkIHwgKHJlZCA+PiA1KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RbeCArIDNdID0gMHhGRjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBpdGNoOworICAgICAgICAgICAg
ICAgICAgICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6Cisg
ICAgICAgICAgICAgICAgZm9yKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4
KyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHNob3J0IGFyZ2IgPSAoKHVuc2lnbmVkIHNob3J0Kilzb3VyY2UpW3hdOworICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciByZWQgPSAoYXJnYiAmIDB4N0MwMCkgPj4gNzsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZ3JlZW4gPSAoYXJnYiAmIDB4
MDNFMCkgPj4gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYmx1ZSA9
IChhcmdiICYgMHgwMDFGKSA8PCAzOworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciBhbHBoYSA9IChzaWduZWQgc2hvcnQpYXJnYiA+PiAxNTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RbeCArIDBdID0gYmx1ZSB8IChibHVlID4+IDUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzdFt4ICsgMV0gPSBncmVlbiB8IChncmVlbiA+PiA1KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRlc3RbeCArIDJdID0gcmVkIHwgKHJlZCA+PiA1KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRlc3RbeCArIDNdID0gYWxwaGE7CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgKz0gc291cmNlTG9jay5QaXRjaDsKKyAgICAg
ICAgICAgICAgICAgICAgZGVzdCArPSBkZXN0TG9jay5QaXRjaDsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRDNERk1UX0w4Ogor
ICAgICAgICAgICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeCA9IDA7IHggPCB3aWR0aDsg
eCsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIHJlZCA9IHNvdXJjZVt4ICogMiArIDFdICYgMHg3QzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RbeF0gPSAocmVkIDw8IDEpIHwgKHJlZCA+PiA0KTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VMb2NrLlBp
dGNoOworICAgICAgICAgICAgICAgICAgICBkZXN0ICs9IGRlc3RMb2NrLlBpdGNoOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBE
M0RGTVRfQThMODoKKyAgICAgICAgICAgICAgICBmb3IoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5
KyspCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHggPSAw
OyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciByZWQgPSBzb3VyY2VbeCAqIDIgKyAxXSAmIDB4N0M7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3ggKiAyICsgMF0gPSAocmVkIDw8IDEpIHwgKHJl
ZCA+PiA0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbeCAqIDIgKyAxXSA9IChzaWdu
ZWQgY2hhcilzb3VyY2VbeCAqIDIgKyAxXSA+PiA3OworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUxvY2suUGl0Y2g7CisgICAgICAg
ICAgICAgICAgICAgIGRlc3QgKz0gZGVzdExvY2suUGl0Y2g7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHVubG9jaygpOworICAgIHJlbmRlclRhcmdldERhdGEtPlVubG9ja1Jl
Y3QoKTsKKworICAgIHJlbmRlclRhcmdldERhdGEtPlJlbGVhc2UoKTsKKyAgICBzdXJmYWNlLT5S
ZWxlYXNlKCk7CisKKyAgICBtRGlydHkgPSB0cnVlOworfQorCit9ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9JbWFnZTkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlOS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTkuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3OSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW1hZ2U5Lmg6IERl
ZmluZXMgdGhlIHJ4OjpJbWFnZTkgY2xhc3MsIHdoaWNoIGFjdHMgYXMgdGhlIGludGVyZmFjZSB0
bworLy8gdGhlIGFjdHVhbCB1bmRlcmx5aW5nIHN1cmZhY2VzIG9mIGEgVGV4dHVyZS4KKworI2lm
bmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfSU1BR0U5X0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5E
RVJFUl9JTUFHRTlfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5oIgor
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIEZyYW1l
YnVmZmVyOworfQorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOworY2xhc3MgUmVu
ZGVyZXI5OworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDsKK2NsYXNzIFRleHR1cmVT
dG9yYWdlSW50ZXJmYWNlQ3ViZTsKKworY2xhc3MgSW1hZ2U5IDogcHVibGljIEltYWdlCit7Cisg
IHB1YmxpYzoKKyAgICBJbWFnZTkoKTsKKyAgICB+SW1hZ2U5KCk7CisKKyAgICBzdGF0aWMgSW1h
Z2U5ICptYWtlSW1hZ2U5KEltYWdlICppbWcpOworCisgICAgc3RhdGljIHZvaWQgZ2VuZXJhdGVN
aXBtYXAoSW1hZ2U5ICpkZXN0LCBJbWFnZTkgKnNvdXJjZSk7CisgICAgc3RhdGljIHZvaWQgZ2Vu
ZXJhdGVNaXAoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3RTdXJmYWNlLCBJRGlyZWN0M0RTdXJmYWNl
OSAqc291cmNlU3VyZmFjZSk7CisgICAgc3RhdGljIHZvaWQgY29weUxvY2thYmxlU3VyZmFjZXMo
SURpcmVjdDNEU3VyZmFjZTkgKmRlc3QsIElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UpOworCisg
ICAgdmlydHVhbCBib29sIHJlZGVmaW5lKFJlbmRlcmVyICpyZW5kZXJlciwgR0xpbnQgaW50ZXJu
YWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBib29sIGZvcmNlUmVsZWFz
ZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJhYmxlRm9ybWF0KCkgY29uc3Q7CisgICAg
RDNERk9STUFUIGdldEQzREZvcm1hdCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzRGly
dHkoKSBjb25zdCB7cmV0dXJuIG1TdXJmYWNlICYmIG1EaXJ0eTt9CisgICAgSURpcmVjdDNEU3Vy
ZmFjZTkgKmdldFN1cmZhY2UoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRNYW5hZ2VkU3VyZmFj
ZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpzdG9yYWdlLCBpbnQgbGV2ZWwpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRNYW5hZ2VkU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUg
KnN0b3JhZ2UsIGludCBmYWNlLCBpbnQgbGV2ZWwpOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVT
dXJmYWNlKFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIGludCBsZXZlbCwgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
OworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVTdXJmYWNlKFRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
Q3ViZSAqc3RvcmFnZSwgaW50IGZhY2UsIGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworCisgICAgdmlydHVhbCB2
b2lkIGxvYWREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgR0xpbnQgdW5wYWNrQWxpZ25tZW50
LCBjb25zdCB2b2lkICppbnB1dCk7CisgICAgdmlydHVhbCB2b2lkIGxvYWRDb21wcmVzc2VkRGF0
YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmlu
cHV0KTsKKworICAgIHZpcnR1YWwgdm9pZCBjb3B5KEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZz
ZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBnbDo6
RnJhbWVidWZmZXIgKnNvdXJjZSk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FO
RF9BU1NJR04oSW1hZ2U5KTsKKworICAgIHZvaWQgY3JlYXRlU3VyZmFjZSgpOworICAgIHZvaWQg
c2V0TWFuYWdlZFN1cmZhY2UoSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UpOworICAgIGJvb2wg
dXBkYXRlU3VyZmFjZShJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCwgR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworCisgICAgSFJFU1VM
VCBsb2NrKEQzRExPQ0tFRF9SRUNUICpsb2NrZWRSZWN0LCBjb25zdCBSRUNUICpyZWN0KTsKKyAg
ICB2b2lkIHVubG9jaygpOworICAgIAorICAgIFJlbmRlcmVyOSAqbVJlbmRlcmVyOworCisgICAg
RDNEUE9PTCBtRDNEUG9vbDsgICAvLyBjYW4gb25seSBiZSBEM0RQT09MX1NZU1RFTU1FTSBvciBE
M0RQT09MX01BTkFHRUQgc2luY2UgaXQgbmVlZHMgdG8gYmUgbG9ja2FibGUuCisgICAgRDNERk9S
TUFUIG1EM0RGb3JtYXQ7CisKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqbVN1cmZhY2U7Cit9Owor
fQorCisjZW5kaWYgICAvLyBMSUJHTEVTVjJfUkVOREVSRVJfSU1BR0U5X0hfCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvSW1hZ2UxMS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlMTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ1NyBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW1h
Z2UxMS5oOiBJbXBsZW1lbnRzIHRoZSByeDo6SW1hZ2UxMSBjbGFzcywgd2hpY2ggYWN0cyBhcyB0
aGUgaW50ZXJmYWNlIHRvCisvLyB0aGUgYWN0dWFsIHVuZGVybHlpbmcgcmVzb3VyY2VzIG9mIGEg
VGV4dHVyZQorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKyNp
bmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0ZyYW1l
YnVmZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIgorCisjaW5jbHVk
ZSAibGliR0xFU3YyL21haW4uaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvZ2VuZXJhdGVtaXAuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisK
K0ltYWdlMTE6OkltYWdlMTEoKQoreworICAgIG1TdGFnaW5nVGV4dHVyZSA9IE5VTEw7CisgICAg
bVJlbmRlcmVyID0gTlVMTDsKKyAgICBtRFhHSUZvcm1hdCA9IERYR0lfRk9STUFUX1VOS05PV047
Cit9CisKK0ltYWdlMTE6On5JbWFnZTExKCkKK3sKKyAgICBpZiAobVN0YWdpbmdUZXh0dXJlKQor
ICAgIHsKKyAgICAgICAgbVN0YWdpbmdUZXh0dXJlLT5SZWxlYXNlKCk7CisgICAgfQorfQorCitJ
bWFnZTExICpJbWFnZTExOjptYWtlSW1hZ2UxMShJbWFnZSAqaW1nKQoreworICAgIEFTU0VSVChI
QVNfRFlOQU1JQ19UWVBFKHJ4OjpJbWFnZTExKiwgaW1nKSk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHJ4OjpJbWFnZTExKj4oaW1nKTsKK30KKwordm9pZCBJbWFnZTExOjpnZW5lcmF0ZU1pcG1h
cChJbWFnZTExICpkZXN0LCBJbWFnZTExICpzcmMpCit7CisgICAgQVNTRVJUKHNyYy0+Z2V0RFhH
SUZvcm1hdCgpID09IGRlc3QtPmdldERYR0lGb3JtYXQoKSk7CisgICAgQVNTRVJUKHNyYy0+Z2V0
V2lkdGgoKSA9PSAxIHx8IHNyYy0+Z2V0V2lkdGgoKSAvIDIgPT0gZGVzdC0+Z2V0V2lkdGgoKSk7
CisgICAgQVNTRVJUKHNyYy0+Z2V0SGVpZ2h0KCkgPT0gMSB8fCBzcmMtPmdldEhlaWdodCgpIC8g
MiA9PSBkZXN0LT5nZXRIZWlnaHQoKSk7CisKKyAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0Ug
ZGVzdE1hcHBlZCwgc3JjTWFwcGVkOworICAgIGRlc3QtPm1hcCgmZGVzdE1hcHBlZCk7CisgICAg
c3JjLT5tYXAoJnNyY01hcHBlZCk7CisKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzb3VyY2VE
YXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oc3JjTWFwcGVkLnBE
YXRhKTsKKyAgICB1bnNpZ25lZCBjaGFyICpkZXN0RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5z
aWduZWQgY2hhcio+KGRlc3RNYXBwZWQucERhdGEpOworCisgICAgaWYgKHNvdXJjZURhdGEgJiYg
ZGVzdERhdGEpCisgICAgeworICAgICAgICBzd2l0Y2ggKHNyYy0+Z2V0RFhHSUZvcm1hdCgpKQor
ICAgICAgICB7CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAg
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOgorICAgICAgICAgICAgR2Vu
ZXJhdGVNaXA8UjhHOEI4QTg+KHNyYy0+Z2V0V2lkdGgoKSwgc3JjLT5nZXRIZWlnaHQoKSwgc291
cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1BpdGNoLCBkZXN0RGF0YSwgZGVzdE1hcHBlZC5Sb3dQaXRj
aCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX0E4X1VO
T1JNOgorICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTg+KHNyYy0+Z2V0V2lkdGgoKSwgc3JjLT5n
ZXRIZWlnaHQoKSwgc291cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1BpdGNoLCBkZXN0RGF0YSwgZGVz
dE1hcHBlZC5Sb3dQaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1I4X1VOT1JNOgorICAgICAgICAgICAgR2VuZXJhdGVNaXA8Ujg+KHNyYy0+Z2V0
V2lkdGgoKSwgc3JjLT5nZXRIZWlnaHQoKSwgc291cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1BpdGNo
LCBkZXN0RGF0YSwgZGVzdE1hcHBlZC5Sb3dQaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAgICAg
IEdlbmVyYXRlTWlwPEEzMkIzMkczMlIzMkY+KHNyYy0+Z2V0V2lkdGgoKSwgc3JjLT5nZXRIZWln
aHQoKSwgc291cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1BpdGNoLCBkZXN0RGF0YSwgZGVzdE1hcHBl
ZC5Sb3dQaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IzMkczMkIzMl9GTE9BVDoKKyAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMkIzMkY+
KHNyYy0+Z2V0V2lkdGgoKSwgc3JjLT5nZXRIZWlnaHQoKSwgc291cmNlRGF0YSwgc3JjTWFwcGVk
LlJvd1BpdGNoLCBkZXN0RGF0YSwgZGVzdE1hcHBlZC5Sb3dQaXRjaCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoKKyAg
ICAgICAgICAgIEdlbmVyYXRlTWlwPEExNkIxNkcxNlIxNkY+KHNyYy0+Z2V0V2lkdGgoKSwgc3Jj
LT5nZXRIZWlnaHQoKSwgc291cmNlRGF0YSwgc3JjTWFwcGVkLlJvd1BpdGNoLCBkZXN0RGF0YSwg
ZGVzdE1hcHBlZC5Sb3dQaXRjaCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1I4RzhfVU5PUk06CisgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4Pihz
cmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCksIHNvdXJjZURhdGEsIHNyY01hcHBlZC5S
b3dQaXRjaCwgZGVzdERhdGEsIGRlc3RNYXBwZWQuUm93UGl0Y2gpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6CisgICAgICAgICAgICBH
ZW5lcmF0ZU1pcDxSMTZGPihzcmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCksIHNvdXJj
ZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRjaCwgZGVzdERhdGEsIGRlc3RNYXBwZWQuUm93UGl0Y2gp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZf
RkxPQVQ6CisgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZGPihzcmMtPmdldFdpZHRoKCks
IHNyYy0+Z2V0SGVpZ2h0KCksIHNvdXJjZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRjaCwgZGVzdERh
dGEsIGRlc3RNYXBwZWQuUm93UGl0Y2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQ6CisgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzJG
PihzcmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCksIHNvdXJjZURhdGEsIHNyY01hcHBl
ZC5Sb3dQaXRjaCwgZGVzdERhdGEsIGRlc3RNYXBwZWQuUm93UGl0Y2gpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQ6CisgICAgICAg
ICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJGPihzcmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0
KCksIHNvdXJjZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRjaCwgZGVzdERhdGEsIGRlc3RNYXBwZWQu
Um93UGl0Y2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGRlc3QtPnVubWFwKCk7CisgICAgICAgIHNyYy0+dW5tYXAoKTsKKyAgICB9CisKKyAg
ICBkZXN0LT5tYXJrRGlydHkoKTsKK30KKworYm9vbCBJbWFnZTExOjppc0RpcnR5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gKG1TdGFnaW5nVGV4dHVyZSAmJiBtRGlydHkpOworfQorCitib29sIElt
YWdlMTE6OnVwZGF0ZVN1cmZhY2UoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc3RvcmFnZSwg
aW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCkKK3sKKyAgICBUZXh0dXJlU3RvcmFnZTExXzJEICpzdG9yYWdlMTEgPSBU
ZXh0dXJlU3RvcmFnZTExXzJEOjptYWtlVGV4dHVyZVN0b3JhZ2UxMV8yRChzdG9yYWdlLT5nZXRT
dG9yYWdlSW5zdGFuY2UoKSk7CisgICAgcmV0dXJuIHN0b3JhZ2UxMS0+dXBkYXRlU3VicmVzb3Vy
Y2VMZXZlbChnZXRTdGFnaW5nVGV4dHVyZSgpLCBnZXRTdGFnaW5nU3VicmVzb3VyY2UoKSwgbGV2
ZWwsIDAsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQpOworfQorCitib29sIEltYWdl
MTE6OnVwZGF0ZVN1cmZhY2UoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBp
bnQgZmFjZSwgaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBUZXh0dXJlU3RvcmFnZTExX0N1YmUgKnN0
b3JhZ2UxMSA9IFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6bWFrZVRleHR1cmVTdG9yYWdlMTFfQ3Vi
ZShzdG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7CisgICAgcmV0dXJuIHN0b3JhZ2UxMS0+
dXBkYXRlU3VicmVzb3VyY2VMZXZlbChnZXRTdGFnaW5nVGV4dHVyZSgpLCBnZXRTdGFnaW5nU3Vi
cmVzb3VyY2UoKSwgbGV2ZWwsIGZhY2UsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQp
OworfQorCitib29sIEltYWdlMTE6OnJlZGVmaW5lKFJlbmRlcmVyICpyZW5kZXJlciwgR0xpbnQg
aW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBib29sIGZvcmNl
UmVsZWFzZSkKK3sKKyAgICBpZiAobVdpZHRoICE9IHdpZHRoIHx8CisgICAgICAgIG1IZWlnaHQg
IT0gaGVpZ2h0IHx8CisgICAgICAgIG1JbnRlcm5hbEZvcm1hdCAhPSBpbnRlcm5hbGZvcm1hdCB8
fAorICAgICAgICBmb3JjZVJlbGVhc2UpCisgICAgeworICAgICAgICBtUmVuZGVyZXIgPSBSZW5k
ZXJlcjExOjptYWtlUmVuZGVyZXIxMShyZW5kZXJlcik7CisKKyAgICAgICAgbVdpZHRoID0gd2lk
dGg7CisgICAgICAgIG1IZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIG1JbnRlcm5hbEZvcm1hdCA9
IGludGVybmFsZm9ybWF0OworICAgICAgICAvLyBjb21wdXRlIHRoZSBkM2QgZm9ybWF0IHRoYXQg
d2lsbCBiZSB1c2VkCisgICAgICAgIG1EWEdJRm9ybWF0ID0gZ2xfZDNkMTE6OkNvbnZlcnRUZXh0
dXJlRm9ybWF0KGludGVybmFsZm9ybWF0KTsKKyAgICAgICAgbUFjdHVhbEZvcm1hdCA9IGQzZDEx
X2dsOjpDb252ZXJ0VGV4dHVyZUludGVybmFsRm9ybWF0KG1EWEdJRm9ybWF0KTsKKworICAgICAg
ICBpZiAobVN0YWdpbmdUZXh0dXJlKQorICAgICAgICB7CisgICAgICAgICAgICBtU3RhZ2luZ1Rl
eHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1TdGFnaW5nVGV4dHVyZSA9IE5VTEw7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBJbWFnZTExOjppc1JlbmRlcmFibGVGb3JtYXQoKSBjb25z
dAoreworICAgIHJldHVybiBUZXh0dXJlU3RvcmFnZTExOjpJc1RleHR1cmVGb3JtYXRSZW5kZXJh
YmxlKG1EWEdJRm9ybWF0KTsKK30KKworRFhHSV9GT1JNQVQgSW1hZ2UxMTo6Z2V0RFhHSUZvcm1h
dCgpIGNvbnN0Cit7CisgICAgLy8gdGhpcyBzaG91bGQgb25seSBoYXBwZW4gaWYgdGhlIGltYWdl
IGhhc24ndCBiZWVuIHJlZGVmaW5lZCBmaXJzdAorICAgIC8vIHdoaWNoIHdvdWxkIGJlIGEgYnVn
IGJ5IHRoZSBjYWxsZXIKKyAgICBBU1NFUlQobURYR0lGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5L
Tk9XTik7CisKKyAgICByZXR1cm4gbURYR0lGb3JtYXQ7Cit9CisKKy8vIFN0b3JlIHRoZSBwaXhl
bCByZWN0YW5nbGUgZGVzaWduYXRlZCBieSB4b2Zmc2V0LHlvZmZzZXQsd2lkdGgsaGVpZ2h0IHdp
dGggcGl4ZWxzIHN0b3JlZCBhcyBmb3JtYXQvdHlwZSBhdCBpbnB1dAorLy8gaW50byB0aGUgdGFy
Z2V0IHBpeGVsIHJlY3RhbmdsZS4KK3ZvaWQgSW1hZ2UxMTo6bG9hZERhdGEoR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqaW5wdXQp
Cit7CisgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZEltYWdlOworICAgIEhSRVNV
TFQgcmVzdWx0ID0gbWFwKCZtYXBwZWRJbWFnZSk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQor
ICAgIHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgbWFwIGltYWdlIGZvciBsb2FkaW5nLiIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIEdMc2l6ZWkgaW5wdXRQaXRjaCA9IGds
OjpDb21wdXRlUGl0Y2god2lkdGgsIG1JbnRlcm5hbEZvcm1hdCwgdW5wYWNrQWxpZ25tZW50KTsK
KyAgICBzaXplX3QgcGl4ZWxTaXplID0gZDNkMTE6OkNvbXB1dGVQaXhlbFNpemVCaXRzKG1EWEdJ
Rm9ybWF0KSAvIDg7CisgICAgdm9pZCogb2Zmc2V0TWFwcGVkRGF0YSA9ICh2b2lkKikoKEJZVEUg
KiltYXBwZWRJbWFnZS5wRGF0YSArICh5b2Zmc2V0ICogbWFwcGVkSW1hZ2UuUm93UGl0Y2ggKyB4
b2Zmc2V0ICogcGl4ZWxTaXplKSk7CisKKyAgICBzd2l0Y2ggKG1JbnRlcm5hbEZvcm1hdCkKKyAg
ICB7CisgICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6CisgICAgICAgIGxvYWRBbHBoYURhdGFUb05h
dGl2ZSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0
Y2gsIG9mZnNldE1hcHBlZERhdGEpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTFVN
SU5BTkNFOF9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VEYXRhVG9OYXRpdmVPckJHUkEod2lk
dGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZz
ZXRNYXBwZWREYXRhLCBmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTFBI
QTMyRl9FWFQ6CisgICAgICAgIGxvYWRBbHBoYUZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0
LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERh
dGEpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMzJGX0VYVDoKKyAg
ICAgICAgbG9hZEx1bWluYW5jZUZsb2F0RGF0YVRvUkdCKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0
Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CisgICAgICAgIGxvYWRBbHBo
YUhhbGZGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1h
cHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VIYWxm
RmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBtYXBwZWRJ
bWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQ6CisgICAgICAgIGxvYWRMdW1pbmFuY2VBbHBo
YURhdGFUb05hdGl2ZU9yQkdSQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwgbWFw
cGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEsIGZhbHNlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6CisgICAgICAgIGxvYWRM
dW1pbmFuY2VBbHBoYUZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBp
bnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoKKyAgICAgICAgbG9h
ZEx1bWluYW5jZUFscGhhSGFsZkZsb2F0RGF0YVRvUkdCQSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBp
dGNoLCBpbnB1dCwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICAgIGxvYWRSR0JVQnl0
ZURhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdl
LlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX1JHQjU2NToKKyAgICAgICAgbG9hZFJHQjU2NURhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwg
aW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRh
KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQkE4X09FUzoKKyAgICAgICAgbG9h
ZFJHQkFVQnl0ZURhdGFUb05hdGl2ZSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFBpdGNoLCBpbnB1dCwg
bWFwcGVkSW1hZ2UuUm93UGl0Y2gsIG9mZnNldE1hcHBlZERhdGEpOworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICAgIGxvYWRSR0JBNDQ0NERhdGFUb1JHQkEod2lk
dGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZz
ZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjVfQTE6Cisg
ICAgICAgIGxvYWRSR0JBNTU1MURhdGFUb1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwg
aW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgICAgbG9hZEJHUkFEYXRhVG9C
R1JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0LCBtYXBwZWRJbWFnZS5Sb3dQaXRj
aCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9SR0Iz
MkZfRVhUOgorICAgICAgICBsb2FkUkdCRmxvYXREYXRhVG9OYXRpdmUod2lkdGgsIGhlaWdodCwg
aW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBwZWREYXRh
KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JHQjE2Rl9FWFQ6CisgICAgICAgIGxv
YWRSR0JIYWxmRmxvYXREYXRhVG9SR0JBKHdpZHRoLCBoZWlnaHQsIGlucHV0UGl0Y2gsIGlucHV0
LCBtYXBwZWRJbWFnZS5Sb3dQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0YSk7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoKKyAgICAgICAgbG9hZFJHQkFGbG9hdERhdGFU
b1JHQkEod2lkdGgsIGhlaWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1Bp
dGNoLCBvZmZzZXRNYXBwZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JH
QkExNkZfRVhUOgorICAgICAgICBsb2FkUkdCQUhhbGZGbG9hdERhdGFUb1JHQkEod2lkdGgsIGhl
aWdodCwgaW5wdXRQaXRjaCwgaW5wdXQsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBvZmZzZXRNYXBw
ZWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAK
KyAgICB9CisKKyAgICB1bm1hcCgpOworfQorCit2b2lkIEltYWdlMTE6OmxvYWRDb21wcmVzc2Vk
RGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5w
dXQpCit7CisgICAgQVNTRVJUKHhvZmZzZXQgJSA0ID09IDApOworICAgIEFTU0VSVCh5b2Zmc2V0
ICUgNCA9PSAwKTsKKworICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRJbWFnZTsK
KyAgICBIUkVTVUxUIHJlc3VsdCA9IG1hcCgmbWFwcGVkSW1hZ2UpOworICAgIGlmIChGQUlMRUQo
cmVzdWx0KSkKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IG1hcCBpbWFnZSBmb3IgbG9h
ZGluZy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFNpemUgY29tcHV0YXRp
b24gYXNzdW1lcyBhIDR4NCBibG9jayBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0CisgICAgc2l6
ZV90IGJsb2NrU2l6ZSA9IGQzZDExOjpDb21wdXRlQmxvY2tTaXplQml0cyhtRFhHSUZvcm1hdCkg
LyA4OworICAgIHZvaWQqIG9mZnNldE1hcHBlZERhdGEgPSAodm9pZCopKChCWVRFICopbWFwcGVk
SW1hZ2UucERhdGEgKyAoKHlvZmZzZXQgLyA0KSAqIG1hcHBlZEltYWdlLlJvd1BpdGNoICsgKHhv
ZmZzZXQgLyA0KSAqIGJsb2NrU2l6ZSkpOworCisgICAgR0xzaXplaSBpbnB1dFNpemUgPSBnbDo6
Q29tcHV0ZUNvbXByZXNzZWRTaXplKHdpZHRoLCBoZWlnaHQsIG1JbnRlcm5hbEZvcm1hdCk7Cisg
ICAgR0xzaXplaSBpbnB1dFBpdGNoID0gZ2w6OkNvbXB1dGVDb21wcmVzc2VkUGl0Y2god2lkdGgs
IG1JbnRlcm5hbEZvcm1hdCk7CisgICAgaW50IHJvd3MgPSBpbnB1dFNpemUgLyBpbnB1dFBpdGNo
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgKytpKQorICAgIHsKKyAgICAgICAgbWVt
Y3B5KCh2b2lkKikoKEJZVEUqKW9mZnNldE1hcHBlZERhdGEgKyBpICogbWFwcGVkSW1hZ2UuUm93
UGl0Y2gpLCAodm9pZCopKChCWVRFKilpbnB1dCArIGkgKiBpbnB1dFBpdGNoKSwgaW5wdXRQaXRj
aCk7CisgICAgfQorCisgICAgdW5tYXAoKTsKK30KKwordm9pZCBJbWFnZTExOjpjb3B5KEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkKK3sKKyAgICBnbDo6UmVu
ZGVyYnVmZmVyICpjb2xvcmJ1ZmZlciA9IHNvdXJjZS0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7CisK
KyAgICBpZiAoY29sb3JidWZmZXIgJiYgY29sb3JidWZmZXItPmdldEFjdHVhbEZvcm1hdCgpID09
IChHTHVpbnQpbUFjdHVhbEZvcm1hdCkKKyAgICB7CisgICAgICAgIC8vIE5vIGNvbnZlcnNpb24g
bmVlZGVkLS0gdXNlIGNvcHliYWNrIGZhc3RwYXRoCisgICAgICAgIElEM0QxMVRleHR1cmUyRCAq
Y29sb3JCdWZmZXJUZXh0dXJlID0gTlVMTDsKKyAgICAgICAgdW5zaWduZWQgaW50IHN1YnJlc291
cmNlSW5kZXggPSAwOworCisgICAgICAgIGlmIChtUmVuZGVyZXItPmdldFJlbmRlclRhcmdldFJl
c291cmNlKGNvbG9yYnVmZmVyLCAmc3VicmVzb3VyY2VJbmRleCwgJmNvbG9yQnVmZmVyVGV4dHVy
ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleHR1cmVE
ZXNjOworICAgICAgICAgICAgY29sb3JCdWZmZXJUZXh0dXJlLT5HZXREZXNjKCZ0ZXh0dXJlRGVz
Yyk7CisKKyAgICAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXRE
ZXZpY2UoKTsKKyAgICAgICAgICAgIElEM0QxMURldmljZUNvbnRleHQgKmRldmljZUNvbnRleHQg
PSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKKworICAgICAgICAgICAgSUQzRDExVGV4
dHVyZTJEKiBzcmNUZXggPSBOVUxMOworICAgICAgICAgICAgaWYgKHRleHR1cmVEZXNjLlNhbXBs
ZURlc2MuQ291bnQgPiAxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEQzRDExX1RF
WFRVUkUyRF9ERVNDIHJlc29sdmVEZXNjOworICAgICAgICAgICAgICAgIHJlc29sdmVEZXNjLldp
ZHRoID0gdGV4dHVyZURlc2MuV2lkdGg7CisgICAgICAgICAgICAgICAgcmVzb2x2ZURlc2MuSGVp
Z2h0ID0gdGV4dHVyZURlc2MuSGVpZ2h0OworICAgICAgICAgICAgICAgIHJlc29sdmVEZXNjLk1p
cExldmVscyA9IDE7CisgICAgICAgICAgICAgICAgcmVzb2x2ZURlc2MuQXJyYXlTaXplID0gMTsK
KyAgICAgICAgICAgICAgICByZXNvbHZlRGVzYy5Gb3JtYXQgPSB0ZXh0dXJlRGVzYy5Gb3JtYXQ7
CisgICAgICAgICAgICAgICAgcmVzb2x2ZURlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7CisgICAg
ICAgICAgICAgICAgcmVzb2x2ZURlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKKyAgICAgICAg
ICAgICAgICByZXNvbHZlRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAgICAg
ICAgICAgICAgcmVzb2x2ZURlc2MuQmluZEZsYWdzID0gMDsKKyAgICAgICAgICAgICAgICByZXNv
bHZlRGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7CisgICAgICAgICAgICAgICAgcmVzb2x2ZURlc2Mu
TWlzY0ZsYWdzID0gMDsKKworICAgICAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNl
LT5DcmVhdGVUZXh0dXJlMkQoJnJlc29sdmVEZXNjLCBOVUxMLCAmc3JjVGV4KTsKKyAgICAgICAg
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBjcmVhdGUgcmVzb2x2ZSB0ZXh0dXJlIGZvciBJbWFn
ZTExOjpjb3B5LCBIUkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkZXZpY2VDb250
ZXh0LT5SZXNvbHZlU3VicmVzb3VyY2Uoc3JjVGV4LCAwLCBjb2xvckJ1ZmZlclRleHR1cmUsIHN1
YnJlc291cmNlSW5kZXgsIHRleHR1cmVEZXNjLkZvcm1hdCk7CisgICAgICAgICAgICAgICAgc3Vi
cmVzb3VyY2VJbmRleCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgc3JjVGV4ID0gY29sb3JCdWZmZXJUZXh0dXJlOwor
ICAgICAgICAgICAgICAgIHNyY1RleC0+QWRkUmVmKCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIEQzRDExX0JPWCBzcmNCb3g7CisgICAgICAgICAgICBzcmNCb3gubGVmdCA9IHg7Cisg
ICAgICAgICAgICBzcmNCb3gucmlnaHQgPSB4ICsgd2lkdGg7CisgICAgICAgICAgICBzcmNCb3gu
dG9wID0geTsKKyAgICAgICAgICAgIHNyY0JveC5ib3R0b20gPSB5ICsgaGVpZ2h0OworICAgICAg
ICAgICAgc3JjQm94LmZyb250ID0gMDsKKyAgICAgICAgICAgIHNyY0JveC5iYWNrID0gMTsKKwor
ICAgICAgICAgICAgZGV2aWNlQ29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKG1TdGFnaW5n
VGV4dHVyZSwgMCwgeG9mZnNldCwgeW9mZnNldCwgMCwgc3JjVGV4LCBzdWJyZXNvdXJjZUluZGV4
LCAmc3JjQm94KTsKKworICAgICAgICAgICAgc3JjVGV4LT5SZWxlYXNlKCk7CisgICAgICAgICAg
ICBjb2xvckJ1ZmZlclRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICAvLyBUaGlzIGZvcm1hdCByZXF1aXJlcyBjb252ZXJzaW9uLCBz
byB3ZSBtdXN0IGNvcHkgdGhlIHRleHR1cmUgdG8gc3RhZ2luZyBhbmQgbWFudWFsbHkgY29udmVy
dCB2aWEgcmVhZFBpeGVscworICAgICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVk
SW1hZ2U7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbWFwKCZtYXBwZWRJbWFnZSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgLy8gZGV0ZXJtaW5lIHRoZSBvZmZzZXQgY29vcmRpbmF0ZSBpbnRv
IHRoZSBkZXN0aW5hdGlvbiBidWZmZXIKKyAgICAgICAgR0xzaXplaSByb3dPZmZzZXQgPSBnbDo6
Q29tcHV0ZVBpeGVsU2l6ZShtQWN0dWFsRm9ybWF0KSAqIHhvZmZzZXQ7CisgICAgICAgIHZvaWQg
KmRhdGFPZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4obWFwcGVkSW1hZ2UucERh
dGEpICsgbWFwcGVkSW1hZ2UuUm93UGl0Y2ggKiB5b2Zmc2V0ICsgcm93T2Zmc2V0OworCisgICAg
ICAgIG1SZW5kZXJlci0+cmVhZFBpeGVscyhzb3VyY2UsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGds
OjpFeHRyYWN0Rm9ybWF0KG1JbnRlcm5hbEZvcm1hdCksIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2w6OkV4dHJhY3RUeXBlKG1JbnRlcm5hbEZvcm1hdCksIG1hcHBlZEltYWdlLlJv
d1BpdGNoLCBmYWxzZSwgNCwgZGF0YU9mZnNldCk7CisKKyAgICAgICAgdW5tYXAoKTsKKyAgICB9
Cit9CisKK0lEM0QxMVRleHR1cmUyRCAqSW1hZ2UxMTo6Z2V0U3RhZ2luZ1RleHR1cmUoKQorewor
ICAgIGNyZWF0ZVN0YWdpbmdUZXh0dXJlKCk7CisKKyAgICByZXR1cm4gbVN0YWdpbmdUZXh0dXJl
OworfQorCit1bnNpZ25lZCBpbnQgSW1hZ2UxMTo6Z2V0U3RhZ2luZ1N1YnJlc291cmNlKCkKK3sK
KyAgICBjcmVhdGVTdGFnaW5nVGV4dHVyZSgpOworCisgICAgcmV0dXJuIG1TdGFnaW5nU3VicmVz
b3VyY2U7Cit9CisKK3ZvaWQgSW1hZ2UxMTo6Y3JlYXRlU3RhZ2luZ1RleHR1cmUoKQoreworICAg
IGlmIChtU3RhZ2luZ1RleHR1cmUpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgSUQzRDExVGV4dHVyZTJEICpuZXdUZXh0dXJlID0gTlVMTDsKKyAgICBpbnQgbG9kT2Zmc2V0
ID0gMTsKKyAgICBjb25zdCBEWEdJX0ZPUk1BVCBkeGdpRm9ybWF0ID0gZ2V0RFhHSUZvcm1hdCgp
OworICAgIEFTU0VSVCghZDNkMTE6OklzRGVwdGhTdGVuY2lsRm9ybWF0KGR4Z2lGb3JtYXQpKTsg
Ly8gV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlIGZvciBkZXB0aCB0ZXh0dXJlcworCisgICAgaWYg
KG1XaWR0aCAhPSAwICYmIG1IZWlnaHQgIT0gMCkKKyAgICB7CisgICAgICAgIEdMc2l6ZWkgd2lk
dGggPSBtV2lkdGg7CisgICAgICAgIEdMc2l6ZWkgaGVpZ2h0ID0gbUhlaWdodDsKKworICAgICAg
ICAvLyBhZGp1c3Qgc2l6ZSBpZiBuZWVkZWQgZm9yIGNvbXByZXNzZWQgdGV4dHVyZXMKKyAgICAg
ICAgZ2w6Ok1ha2VWYWxpZFNpemUoZmFsc2UsIGQzZDExOjpJc0NvbXByZXNzZWQoZHhnaUZvcm1h
dCksICZ3aWR0aCwgJmhlaWdodCwgJmxvZE9mZnNldCk7CisgICAgICAgIElEM0QxMURldmljZSAq
ZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgICAgICBEM0QxMV9URVhUVVJF
MkRfREVTQyBkZXNjOworICAgICAgICBkZXNjLldpZHRoID0gd2lkdGg7CisgICAgICAgIGRlc2Mu
SGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBkZXNjLk1pcExldmVscyA9IGxvZE9mZnNldCArIDE7
CisgICAgICAgIGRlc2MuQXJyYXlTaXplID0gMTsKKyAgICAgICAgZGVzYy5Gb3JtYXQgPSBkeGdp
Rm9ybWF0OworICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICBkZXNj
LlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIGRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FH
RV9TVEFHSU5HOworICAgICAgICBkZXNjLkJpbmRGbGFncyA9IDA7CisgICAgICAgIGRlc2MuQ1BV
QWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOworICAgICAgICBkZXNjLk1pc2NG
bGFncyA9IDA7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1
cmUyRCgmZGVzYywgTlVMTCwgJm5ld1RleHR1cmUpOworCisgICAgICAgIGlmIChGQUlMRUQocmVz
dWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVN
T1JZKTsKKyAgICAgICAgICAgIEVSUigiQ3JlYXRpbmcgaW1hZ2UgZmFpbGVkLiIpOworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIG1TdGFnaW5nVGV4dHVyZSA9IG5ld1RleHR1cmU7CisgICAgbVN0YWdpbmdTdWJy
ZXNvdXJjZSA9IEQzRDExQ2FsY1N1YnJlc291cmNlKGxvZE9mZnNldCwgMCwgbG9kT2Zmc2V0ICsg
MSk7CisgICAgbURpcnR5ID0gZmFsc2U7Cit9CisKK0hSRVNVTFQgSW1hZ2UxMTo6bWFwKEQzRDEx
X01BUFBFRF9TVUJSRVNPVVJDRSAqbWFwKQoreworICAgIGNyZWF0ZVN0YWdpbmdUZXh0dXJlKCk7
CisKKyAgICBIUkVTVUxUIHJlc3VsdCA9IEVfRkFJTDsKKworICAgIGlmIChtU3RhZ2luZ1RleHR1
cmUpCisgICAgeworICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0ID0g
bVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CisgICAgICAgIHJlc3VsdCA9IGRldmljZUNv
bnRleHQtPk1hcChtU3RhZ2luZ1RleHR1cmUsIG1TdGFnaW5nU3VicmVzb3VyY2UsIEQzRDExX01B
UF9XUklURSwgMCwgbWFwKTsKKworICAgICAgICAvLyB0aGlzIGNhbiBmYWlsIGlmIHRoZSBkZXZp
Y2UgaXMgcmVtb3ZlZCAoZnJvbSBURFIpCisgICAgICAgIGlmIChkM2QxMTo6aXNEZXZpY2VMb3N0
RXJyb3IocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgbVJlbmRlcmVyLT5ub3RpZnlE
ZXZpY2VMb3N0KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoU1VDQ0VFREVEKHJlc3Vs
dCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EaXJ0eSA9IHRydWU7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEltYWdlMTE6OnVubWFwKCkKK3sK
KyAgICBpZiAobVN0YWdpbmdUZXh0dXJlKQorICAgIHsKKyAgICAgICAgSUQzRDExRGV2aWNlQ29u
dGV4dCAqZGV2aWNlQ29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOworICAg
ICAgICBkZXZpY2VDb250ZXh0LT5Vbm1hcChtU3RhZ2luZ1RleHR1cmUsIG1TdGFnaW5nU3VicmVz
b3VyY2UpOworICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZTExLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdl
MTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIElt
YWdlMTEuaDogRGVmaW5lcyB0aGUgcng6OkltYWdlMTEgY2xhc3MsIHdoaWNoIGFjdHMgYXMgdGhl
IGludGVyZmFjZSB0bworLy8gdGhlIGFjdHVhbCB1bmRlcmx5aW5nIHJlc291cmNlcyBvZiBhIFRl
eHR1cmUKKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfSU1BR0UxMV9IXworI2RlZmluZSBM
SUJHTEVTVjJfUkVOREVSRVJfSU1BR0UxMV9IXworCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRl
cmVyL0ltYWdlLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIGds
Cit7CitjbGFzcyBGcmFtZWJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5k
ZXJlcjsKK2NsYXNzIFJlbmRlcmVyMTE7CitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJE
OworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlOworCitjbGFzcyBJbWFnZTExIDog
cHVibGljIEltYWdlCit7CisgIHB1YmxpYzoKKyAgICBJbWFnZTExKCk7CisgICAgdmlydHVhbCB+
SW1hZ2UxMSgpOworCisgICAgc3RhdGljIEltYWdlMTEgKm1ha2VJbWFnZTExKEltYWdlICppbWcp
OworCisgICAgc3RhdGljIHZvaWQgZ2VuZXJhdGVNaXBtYXAoSW1hZ2UxMSAqZGVzdCwgSW1hZ2Ux
MSAqc3JjKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0RpcnR5KCkgY29uc3Q7CisKKyAgICB2aXJ0
dWFsIGJvb2wgdXBkYXRlU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpzdG9yYWdl
LCBpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0KTsKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlU3VyZmFjZShUZXh0dXJl
U3RvcmFnZUludGVyZmFjZUN1YmUgKnN0b3JhZ2UsIGludCBmYWNlLCBpbnQgbGV2ZWwsIEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsK
KworICAgIHZpcnR1YWwgYm9vbCByZWRlZmluZShSZW5kZXJlciAqcmVuZGVyZXIsIEdMaW50IGlu
dGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgYm9vbCBmb3JjZVJl
bGVhc2UpOworCisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyYWJsZUZvcm1hdCgpIGNvbnN0Owor
ICAgIERYR0lfRk9STUFUIGdldERYR0lGb3JtYXQoKSBjb25zdDsKKyAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgbG9hZERhdGEoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICBHTGludCB1bnBhY2tBbGlnbm1l
bnQsIGNvbnN0IHZvaWQgKmlucHV0KTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZENvbXByZXNzZWRE
YXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
aW5wdXQpOworCisgICAgdmlydHVhbCB2b2lkIGNvcHkoR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIGds
OjpGcmFtZWJ1ZmZlciAqc291cmNlKTsKKworICBwcm90ZWN0ZWQ6CisgICAgSFJFU1VMVCBtYXAo
RDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFICptYXApOworICAgIHZvaWQgdW5tYXAoKTsKKworICBw
cml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihJbWFnZTExKTsKKworICAgIElE
M0QxMVRleHR1cmUyRCAqZ2V0U3RhZ2luZ1RleHR1cmUoKTsKKyAgICB1bnNpZ25lZCBpbnQgZ2V0
U3RhZ2luZ1N1YnJlc291cmNlKCk7CisgICAgdm9pZCBjcmVhdGVTdGFnaW5nVGV4dHVyZSgpOwor
CisgICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVyOworCisgICAgRFhHSV9GT1JNQVQgbURYR0lGb3Jt
YXQ7CisgICAgSUQzRDExVGV4dHVyZTJEICptU3RhZ2luZ1RleHR1cmU7CisgICAgdW5zaWduZWQg
aW50IG1TdGFnaW5nU3VicmVzb3VyY2U7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJf
UkVOREVSRVJfSU1BR0UxMV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NDggQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5o
IgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW1hZ2UuaDogSW1wbGVtZW50cyB0aGUgcng6Oklt
YWdlIGNsYXNzLCBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0aGUgCisvLyByZW5kZXJlci1z
cGVjaWZpYyBjbGFzc2VzIHdoaWNoIHdpbGwgZGVmaW5lIHRoZSBpbnRlcmZhY2UgdG8gdGhlIHVu
ZGVybHlpbmcKKy8vIHN1cmZhY2VzIG9yIHJlc291cmNlcy4KKworI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9JbWFnZS5oIgorCituYW1lc3BhY2UgcngKK3sKKworSW1hZ2U6OkltYWdlKCkK
K3sKKyAgICBtV2lkdGggPSAwOyAKKyAgICBtSGVpZ2h0ID0gMDsKKyAgICBtSW50ZXJuYWxGb3Jt
YXQgPSBHTF9OT05FOworICAgIG1BY3R1YWxGb3JtYXQgPSBHTF9OT05FOworfQorCit2b2lkIElt
YWdlOjpsb2FkQWxwaGFEYXRhVG9CR1JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9p
ZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0
IHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9
IE5VTEw7CisgICAgCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7
CisgICAgICAgIHNvdXJjZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1
dCkgKyB5ICogaW5wdXRQaXRjaDsKKyAgICAgICAgZGVzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoOworICAgICAgICBmb3IgKGludCB4ID0g
MDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAw
XSA9IDA7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSAwOworICAgICAgICAgICAgZGVz
dFs0ICogeCArIDJdID0gMDsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHNvdXJjZVt4
XTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9hZEFscGhhRGF0YVRvTmF0
aXZlKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91
dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291
cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gTlVMTDsKKworICAgIGZvciAo
aW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSBzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2g7Cisg
ICAgICAgIGRlc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBv
dXRwdXRQaXRjaDsKKyAgICAgICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lkdGgpOworICAgIH0K
K30KKwordm9pZCBJbWFnZTo6bG9hZEFscGhhRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lk
ICpvdXRwdXQpCit7CisgICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9IE5VTEw7CisgICAgZmxvYXQg
KmRlc3QgPSBOVUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAg
ICB7CisgICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOwor
ICAgICAgICBkZXN0ID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgZm9yIChpbnQg
eCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0WzQgKiB4
ICsgMF0gPSAwOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gMDsKKyAgICAgICAgICAg
IGRlc3RbNCAqIHggKyAyXSA9IDA7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSBzb3Vy
Y2VbeF07CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRBbHBoYUhhbGZG
bG9hdERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lk
ICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgc2hvcnQgKmRlc3Qg
PSBOVUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7Cisg
ICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihz
dGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gp
OworICAgICAgICBkZXN0ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAg
ICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZXN0WzQgKiB4ICsgMF0gPSAwOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gMDsK
KyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IDA7CisgICAgICAgICAgICBkZXN0WzQgKiB4
ICsgM10gPSBzb3VyY2VbeF07CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6Omxv
YWRMdW1pbmFuY2VEYXRhVG9OYXRpdmVPckJHUkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1
dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRw
dXQsIGJvb2wgbmF0aXZlKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJjZSA9IE5V
TEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0g
MDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoOworICAgICAgICBk
ZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0
Y2g7CisKKyAgICAgICAgaWYgKCFuYXRpdmUpICAgLy8gQkdSQTggZGVzdGluYXRpb24gZm9ybWF0
CisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3VyY2Vb
eF07CisgICAgICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNlW3hdOworICAgICAg
ICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgICAgICBk
ZXN0WzQgKiB4ICsgM10gPSAweEZGOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGVsc2UgICAvLyBMOCBkZXN0aW5hdGlvbiBmb3JtYXQKKyAgICAgICAgeworICAgICAgICAgICAg
bWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lkdGgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IEltYWdlOjpsb2FkTHVtaW5hbmNlRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
aW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAq
b3V0cHV0KQoreworICAgIGNvbnN0IGZsb2F0ICpzb3VyY2UgPSBOVUxMOworICAgIGZsb2F0ICpk
ZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAg
eworICAgICAgICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oc3RhdGlj
X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKKyAg
ICAgICAgZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7CisgICAgICAgIGZvciAoaW50IHgg
PSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGVzdFs0ICogeCAr
IDBdID0gc291cmNlW3hdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gc291cmNlW3hd
OworICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc291cmNlW3hdOworICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDNdID0gMS4wZjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbWFn
ZTo6bG9hZEx1bWluYW5jZUZsb2F0RGF0YVRvUkdCKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBp
dGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQp
Cit7CisgICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9IE5VTEw7CisgICAgZmxvYXQgKmRlc3QgPSBO
VUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAg
ICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihzdGF0aWNfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBk
ZXN0ID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIq
PihvdXRwdXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHgg
PCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0WzMgKiB4ICsgMF0gPSBz
b3VyY2VbeF07CisgICAgICAgICAgICBkZXN0WzMgKiB4ICsgMV0gPSBzb3VyY2VbeF07CisgICAg
ICAgICAgICBkZXN0WzMgKiB4ICsgMl0gPSBzb3VyY2VbeF07CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgSW1hZ2U6OmxvYWRMdW1pbmFuY2VIYWxmRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0
cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCAqc291
cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBzaG9ydCAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3Ig
KGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRlc3QgPSBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9
IHNvdXJjZVt4XTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4XTsKKyAg
ICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgIGRlc3Rb
NCAqIHggKyAzXSA9IDB4M0MwMDsgLy8gU0VFRUVFTU1NTU1NTU1NTSwgUyA9IDAsIEUgPSAxNSwg
TSA9IDA6IDE2Yml0IGZscHQgcmVwcmVzZW50YXRpb24gb2YgMQorICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIEltYWdlOjpsb2FkTHVtaW5hbmNlQWxwaGFEYXRhVG9OYXRpdmVPckJHUkEoR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBz
aXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCwgYm9vbCBuYXRpdmUpCit7CisgICAgY29u
c3QgdW5zaWduZWQgY2hhciAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBjaGFyICpkZXN0
ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgewor
ICAgICAgICBzb3VyY2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQp
ICsgeSAqIGlucHV0UGl0Y2g7CisgICAgICAgIGRlc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAgICAgICAgCisgICAgICAgIGlmICgh
bmF0aXZlKSAgIC8vIEJHUkE4IGRlc3RpbmF0aW9uIGZvcm1hdAorICAgICAgICB7CisgICAgICAg
ICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlWzIqeCswXTsKKyAgICAgICAgICAg
ICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbMip4KzBdOworICAgICAgICAgICAgICAgIGRl
c3RbNCAqIHggKyAyXSA9IHNvdXJjZVsyKngrMF07CisgICAgICAgICAgICAgICAgZGVzdFs0ICog
eCArIDNdID0gc291cmNlWzIqeCsxXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1lbWNweShkZXN0LCBzb3VyY2UsIHdpZHRo
ICogMik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRMdW1pbmFuY2VB
bHBoYUZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwg
Y29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQorewor
ICAgIGNvbnN0IGZsb2F0ICpzb3VyY2UgPSBOVUxMOworICAgIGZsb2F0ICpkZXN0ID0gTlVMTDsK
KworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBz
b3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oc3RhdGljX2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsKKyAgICAgICAgZGVzdCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0
cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lk
dGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNl
WzIqeCswXTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVsyKngrMF07Cisg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSBzb3VyY2VbMip4KzBdOworICAgICAgICAgICAg
ZGVzdFs0ICogeCArIDNdID0gc291cmNlWzIqeCsxXTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBJbWFnZTo6bG9hZEx1bWluYW5jZUFscGhhSGFsZkZsb2F0RGF0YVRvUkdCQShHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXpl
X3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBzaG9ydCAqZGVzdCA9IE5VTEw7CisKKyAg
ICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNl
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PGNv
bnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRl
c3QgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4oc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworICAgICAgICBmb3IgKGludCB4
ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAwXSA9IHNvdXJjZVsyKngrMF07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3Vy
Y2VbMip4KzBdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc291cmNlWzIqeCswXTsK
KyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IHNvdXJjZVsyKngrMV07CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRSR0JVQnl0ZURhdGFUb0JHUlgoR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2
b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlID0gTlVMTDsK
KyAgICB1bnNpZ25lZCBjaGFyICpkZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5
IDwgaGVpZ2h0OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSBzdGF0aWNfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2g7CisgICAgICAgIGRlc3Qg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsK
KyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3VyY2VbeCAqIDMgKyAyXTsKKyAgICAgICAgICAg
IGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4ICogMyArIDFdOworICAgICAgICAgICAgZGVzdFs0
ICogeCArIDJdID0gc291cmNlW3ggKiAzICsgMF07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsg
M10gPSAweEZGOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdCVUJ5
dGVEYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQs
IHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CisK
KyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291
cmNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1
dFBpdGNoOworICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1
dCkgKyB5ICogb3V0cHV0UGl0Y2g7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7
IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gc291cmNlW3gg
KiAzICsgMF07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSBzb3VyY2VbeCAqIDMgKyAx
XTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9IHNvdXJjZVt4ICogMyArIDJdOworICAg
ICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gMHhGRjsKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBJbWFnZTo6bG9hZFJHQjU2NURhdGFUb0JHUkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwg
Y29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQorewor
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOworICAgIHVuc2lnbmVkIGNo
YXIgKmRlc3QgPSBOVUxMOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykK
KyAgICB7CisgICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQg
c2hvcnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlu
cHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91
dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2g7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lk
dGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcmdiYSA9IHNv
dXJjZVt4XTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAwXSA9ICgocmdiYSAmIDB4MDAxRikg
PDwgMykgfCAoKHJnYmEgJiAweDAwMUYpID4+IDIpOworICAgICAgICAgICAgZGVzdFs0ICogeCAr
IDFdID0gKChyZ2JhICYgMHgwN0UwKSA+PiAzKSB8ICgocmdiYSAmIDB4MDdFMCkgPj4gOSk7Cisg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSAoKHJnYmEgJiAweEY4MDApID4+IDgpIHwgKChy
Z2JhICYgMHhGODAwKSA+PiAxMyk7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAweEZG
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdCNTY1RGF0YVRvUkdC
QShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1
dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKnNvdXJj
ZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3IgKGlu
dCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRlc3QgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAgICAg
ICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAg
ICB1bnNpZ25lZCBzaG9ydCByZ2JhID0gc291cmNlW3hdOworICAgICAgICAgICAgZGVzdFs0ICog
eCArIDBdID0gKChyZ2JhICYgMHhGODAwKSA+PiA4KSB8ICgocmdiYSAmIDB4RjgwMCkgPj4gMTMp
OworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFdID0gKChyZ2JhICYgMHgwN0UwKSA+PiAzKSB8
ICgocmdiYSAmIDB4MDdFMCkgPj4gOSk7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSAo
KHJnYmEgJiAweDAwMUYpIDw8IDMpIHwgKChyZ2JhICYgMHgwMDFGKSA+PiAyKTsKKyAgICAgICAg
ICAgIGRlc3RbNCAqIHggKyAzXSA9IDB4RkY7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
SW1hZ2U6OmxvYWRSR0JGbG9hdERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBj
b25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7Cisg
ICAgY29uc3QgZmxvYXQgKnNvdXJjZSA9IE5VTEw7CisgICAgZmxvYXQgKmRlc3QgPSBOVUxMOwor
CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNv
dXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0g
cmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRw
dXQpICsgeSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0
aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSBzb3VyY2Vb
eCAqIDMgKyAwXTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9IHNvdXJjZVt4ICogMyAr
IDFdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gc291cmNlW3ggKiAzICsgMl07Cisg
ICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAxLjBmOworICAgICAgICB9CisgICAgfQorfQor
Cit2b2lkIEltYWdlOjpsb2FkUkdCRmxvYXREYXRhVG9OYXRpdmUoR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlu
cHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91
dHB1dCkKK3sKKyAgICBjb25zdCBmbG9hdCAqc291cmNlID0gTlVMTDsKKyAgICBmbG9hdCAqZGVz
dCA9IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsK
KyAgICAgICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHN0YXRpY19j
YXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAg
ICAgIGRlc3QgPSByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworICAgICAgICBtZW1jcHkoZGVzdCwg
c291cmNlLCB3aWR0aCAqIDEyKTsKKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRSR0JIYWxm
RmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQg
KmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBzaG9ydCAqZGVzdCA9
IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAg
ICAgICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0
YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7
CisgICAgICAgIGRlc3QgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4oc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworICAgICAg
ICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlc3RbNCAqIHggKyAwXSA9IHNvdXJjZVt4ICogMyArIDBdOworICAgICAgICAgICAgZGVzdFs0
ICogeCArIDFdID0gc291cmNlW3ggKiAzICsgMV07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsg
Ml0gPSBzb3VyY2VbeCAqIDMgKyAyXTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IDB4
M0MwMDsgLy8gU0VFRUVFTU1NTU1NTU1NTSwgUyA9IDAsIEUgPSAxNSwgTSA9IDA6IDE2Yml0IGZs
cHQgcmVwcmVzZW50YXRpb24gb2YgMQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdl
Ojpsb2FkUkdCQVVCeXRlRGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25z
dCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAg
Y29uc3QgdW5zaWduZWQgaW50ICpzb3VyY2UgPSBOVUxMOworICAgIHVuc2lnbmVkIGludCAqZGVz
dCA9IE5VTEw7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7Cisg
ICAgICAgIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgaW50Kj4oc3Rh
dGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBpbnB1dFBpdGNoKTsK
KyAgICAgICAgZGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4oc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworCisgICAgICAg
IGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAgICAg
dW5zaWduZWQgaW50IHJnYmEgPSBzb3VyY2VbeF07CisgICAgICAgICAgICBkZXN0W3hdID0gKF9y
b3RsKHJnYmEsIDE2KSAmIDB4MDBmZjAwZmYpIHwgKHJnYmEgJiAweGZmMDBmZjAwKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9hZFJHQkFVQnl0ZURhdGFUb05hdGl2ZShH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0
cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgKnNvdXJj
ZSA9IE5VTEw7CisgICAgdW5zaWduZWQgaW50ICpkZXN0ID0gTlVMTDsKKyAgICBmb3IgKGludCB5
ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBpbnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0gcmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0
KSArIHkgKiBvdXRwdXRQaXRjaCk7CisKKyAgICAgICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lk
dGggKiA0KTsKKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2U6OmxvYWRSR0JBNDQ0NERhdGFUb0JHUkEo
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1
dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKnNvdXJj
ZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAqZGVzdCA9IE5VTEw7CisKKyAgICBmb3IgKGlu
dCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgc291cmNlID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgIGRlc3QgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAgICAg
ICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAg
ICB1bnNpZ25lZCBzaG9ydCByZ2JhID0gc291cmNlW3hdOworICAgICAgICAgICAgZGVzdFs0ICog
eCArIDBdID0gKChyZ2JhICYgMHgwMEYwKSA8PCAwKSB8ICgocmdiYSAmIDB4MDBGMCkgPj4gNCk7
CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMV0gPSAoKHJnYmEgJiAweDBGMDApID4+IDQpIHwg
KChyZ2JhICYgMHgwRjAwKSA+PiA4KTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAyXSA9ICgo
cmdiYSAmIDB4RjAwMCkgPj4gOCkgfCAoKHJnYmEgJiAweEYwMDApID4+IDEyKTsKKyAgICAgICAg
ICAgIGRlc3RbNCAqIHggKyAzXSA9ICgocmdiYSAmIDB4MDAwRikgPDwgNCkgfCAoKHJnYmEgJiAw
eDAwMEYpID4+IDApOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdC
QTQ0NDREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5w
dXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KQoreworICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0ICpzb3VyY2UgPSBOVUxMOworICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxM
OworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAg
IHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihzdGF0aWNf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAg
ICAgICBkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91dHB1dCkgKyB5ICogb3V0
cHV0UGl0Y2g7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykKKyAgICAg
ICAgeworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcmdiYSA9IHNvdXJjZVt4XTsKKyAgICAg
ICAgICAgIGRlc3RbNCAqIHggKyAwXSA9ICgocmdiYSAmIDB4RjAwMCkgPj4gOCkgfCAoKHJnYmEg
JiAweEYwMDApID4+IDEyKTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAxXSA9ICgocmdiYSAm
IDB4MEYwMCkgPj4gNCkgfCAoKHJnYmEgJiAweDBGMDApID4+IDgpOworICAgICAgICAgICAgZGVz
dFs0ICogeCArIDJdID0gKChyZ2JhICYgMHgwMEYwKSA8PCAwKSB8ICgocmdiYSAmIDB4MDBGMCkg
Pj4gNCk7CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgM10gPSAoKHJnYmEgJiAweDAwMEYpIDw8
IDQpIHwgKChyZ2JhICYgMHgwMDBGKSA+PiAwKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBJbWFnZTo6bG9hZFJHQkE1NTUxRGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gs
IGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sK
KyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCAqc291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBj
aGFyICpkZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5Kysp
CisgICAgeworICAgICAgICBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVk
IHNob3J0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGlucHV0KSArIHkgKiBp
bnB1dFBpdGNoKTsKKyAgICAgICAgZGVzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihv
dXRwdXQpICsgeSAqIG91dHB1dFBpdGNoOworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdp
ZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHJnYmEgPSBz
b3VyY2VbeF07CisgICAgICAgICAgICBkZXN0WzQgKiB4ICsgMF0gPSAoKHJnYmEgJiAweDAwM0Up
IDw8IDIpIHwgKChyZ2JhICYgMHgwMDNFKSA+PiAzKTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHgg
KyAxXSA9ICgocmdiYSAmIDB4MDdDMCkgPj4gMykgfCAoKHJnYmEgJiAweDA3QzApID4+IDgpOwor
ICAgICAgICAgICAgZGVzdFs0ICogeCArIDJdID0gKChyZ2JhICYgMHhGODAwKSA+PiA4KSB8ICgo
cmdiYSAmIDB4RjgwMCkgPj4gMTMpOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDNdID0gKHJn
YmEgJiAweDAwMDEpID8gMHhGRiA6IDA7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW1h
Z2U6OmxvYWRSR0JBNTU1MURhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25z
dCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgKnNvdXJjZSA9IE5VTEw7CisgICAgdW5zaWduZWQgY2hhciAq
ZGVzdCA9IE5VTEw7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQorICAg
IHsKKyAgICAgICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9y
dCo+KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQ
aXRjaCk7CisgICAgICAgIGRlc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0
KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsg
eCsrKQorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCByZ2JhID0gc291cmNl
W3hdOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDBdID0gKChyZ2JhICYgMHhGODAwKSA+PiA4
KSB8ICgocmdiYSAmIDB4RjgwMCkgPj4gMTMpOworICAgICAgICAgICAgZGVzdFs0ICogeCArIDFd
ID0gKChyZ2JhICYgMHgwN0MwKSA+PiAzKSB8ICgocmdiYSAmIDB4MDdDMCkgPj4gOCk7CisgICAg
ICAgICAgICBkZXN0WzQgKiB4ICsgMl0gPSAoKHJnYmEgJiAweDAwM0UpIDw8IDIpIHwgKChyZ2Jh
ICYgMHgwMDNFKSA+PiAzKTsKKyAgICAgICAgICAgIGRlc3RbNCAqIHggKyAzXSA9IChyZ2JhICYg
MHgwMDAxKSA/IDB4RkYgOiAwOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjps
b2FkUkdCQUZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2
b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29u
c3QgZmxvYXQgKnNvdXJjZSA9IE5VTEw7CisgICAgZmxvYXQgKmRlc3QgPSBOVUxMOworCisgICAg
Zm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2gpOworICAgICAgICBkZXN0ID0gcmVpbnRl
cnByZXRfY2FzdDxmbG9hdCo+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsg
eSAqIG91dHB1dFBpdGNoKTsKKyAgICAgICAgbWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lkdGggKiAx
Nik7CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkUkdCQUhhbGZGbG9hdERhdGFUb1JHQkEo
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qg
b3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpz
b3VyY2UgPSBOVUxMOworICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBOVUxMOworCisgICAgZm9y
IChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHN0
YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaDsK
KyAgICAgICAgZGVzdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQpICsgeSAq
IG91dHB1dFBpdGNoOworICAgICAgICBtZW1jcHkoZGVzdCwgc291cmNlLCB3aWR0aCAqIDgpOwor
ICAgIH0KK30KKwordm9pZCBJbWFnZTo6bG9hZEJHUkFEYXRhVG9CR1JBKEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1
dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRw
dXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlID0gTlVMTDsKKyAgICB1bnNp
Z25lZCBjaGFyICpkZXN0ID0gTlVMTDsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0
OyB5KyspCisgICAgeworICAgICAgICBzb3VyY2UgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0UGl0Y2g7CisgICAgICAgIGRlc3QgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaDsKKyAgICAgICAg
bWVtY3B5KGRlc3QsIHNvdXJjZSwgd2lkdGgqNCk7CisgICAgfQorfQorCit9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0ltYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9J
bWFnZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9JbWFnZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzMSBAQAorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworLy8gSW1hZ2UuaDogRGVmaW5lcyB0aGUgcng6OkltYWdlIGNsYXNz
LCBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0aGUgCisvLyByZW5kZXJlci1zcGVjaWZpYyBj
bGFzc2VzIHdoaWNoIHdpbGwgZGVmaW5lIHRoZSBpbnRlcmZhY2UgdG8gdGhlIHVuZGVybHlpbmcK
Ky8vIHN1cmZhY2VzIG9yIHJlc291cmNlcy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJf
SU1BR0VfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX0lNQUdFX0hfCisKKyNpbmNsdWRl
ICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBGcmFtZWJ1ZmZlcjsK
K30KKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKK2NsYXNzIFRleHR1cmVTdG9y
YWdlSW50ZXJmYWNlMkQ7CitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmU7CisKK2Ns
YXNzIEltYWdlCit7CisgIHB1YmxpYzoKKyAgICBJbWFnZSgpOworICAgIHZpcnR1YWwgfkltYWdl
KCkge307CisKKyAgICBHTHNpemVpIGdldFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbVdpZHRoOyB9
CisgICAgR0xzaXplaSBnZXRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtSGVpZ2h0OyB9CisgICAg
R0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbUludGVybmFsRm9ybWF0
OyB9CisgICAgR0xlbnVtIGdldEFjdHVhbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1BY3R1YWxG
b3JtYXQ7IH0KKworICAgIHZvaWQgbWFya0RpcnR5KCkge21EaXJ0eSA9IHRydWU7fQorICAgIHZv
aWQgbWFya0NsZWFuKCkge21EaXJ0eSA9IGZhbHNlO30KKyAgICB2aXJ0dWFsIGJvb2wgaXNEaXJ0
eSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRNYW5hZ2VkU3VyZmFjZShUZXh0
dXJlU3RvcmFnZUludGVyZmFjZTJEICpzdG9yYWdlLCBpbnQgbGV2ZWwpIHt9OworICAgIHZpcnR1
YWwgdm9pZCBzZXRNYW5hZ2VkU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKnN0
b3JhZ2UsIGludCBmYWNlLCBpbnQgbGV2ZWwpIHt9OworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVT
dXJmYWNlKFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIGludCBsZXZlbCwgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlU3VyZmFjZShUZXh0dXJlU3RvcmFnZUludGVy
ZmFjZUN1YmUgKnN0b3JhZ2UsIGludCBmYWNlLCBpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSA9IDA7CisKKyAgICB2
aXJ0dWFsIGJvb2wgcmVkZWZpbmUoUmVuZGVyZXIgKnJlbmRlcmVyLCBHTGludCBpbnRlcm5hbGZv
cm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIGJvb2wgZm9yY2VSZWxlYXNlKSA9
IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJhYmxlRm9ybWF0KCkgY29uc3QgPSAwOwor
ICAgIAorICAgIHZpcnR1YWwgdm9pZCBsb2FkRGF0YShHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm
c2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgIEdM
aW50IHVucGFja0FsaWdubWVudCwgY29uc3Qgdm9pZCAqaW5wdXQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgbG9hZENvbXByZXNzZWREYXRhKEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqaW5wdXQpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBjb3B5
KEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkgPSAwOworCisg
ICAgc3RhdGljIHZvaWQgbG9hZEFscGhhRGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBp
dGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQp
OworICAgIHN0YXRpYyB2b2lkIGxvYWRBbHBoYURhdGFUb05hdGl2ZShHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQg
Km91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEFscGhhRGF0YVRvQkdSQVNTRTIoR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0
UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEFscGhhRmxvYXREYXRh
VG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQs
IHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBsb2Fk
QWxwaGFIYWxmRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0
Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7
CisgICAgc3RhdGljIHZvaWQgbG9hZEx1bWluYW5jZURhdGFUb05hdGl2ZU9yQkdSQShHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQ
aXRjaCwgdm9pZCAqb3V0cHV0LCBib29sIG5hdGl2ZSk7CisgICAgc3RhdGljIHZvaWQgbG9hZEx1
bWluYW5jZUZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNo
LCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOwor
ICAgIHN0YXRpYyB2b2lkIGxvYWRMdW1pbmFuY2VGbG9hdERhdGFUb1JHQihHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0
Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEx1bWluYW5jZUhhbGZGbG9h
dERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0
IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3Rh
dGljIHZvaWQgbG9hZEx1bWluYW5jZUFscGhhRGF0YVRvTmF0aXZlT3JCR1JBKEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0
UGl0Y2gsIHZvaWQgKm91dHB1dCwgYm9vbCBuYXRpdmUpOworICAgIHN0YXRpYyB2b2lkIGxvYWRM
dW1pbmFuY2VBbHBoYUZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQg
Km91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEx1bWluYW5jZUFscGhhSGFsZkZsb2F0RGF0
YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25z
dCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0
YXRpYyB2b2lkIGxvYWRSR0JVQnl0ZURhdGFUb0JHUlgoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQ
aXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0
KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkUkdCVUJ5dGVEYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZv
aWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQjU2NURhdGFUb0JHUkEoR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0
Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQjU2NURhdGFUb1JHQkEo
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0
cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQkZsb2F0RGF0
YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwg
c2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0YXRpYyB2b2lkIGxvYWRS
R0JGbG9hdERhdGFUb05hdGl2ZShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0
IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3Rh
dGljIHZvaWQgbG9hZFJHQkhhbGZGbG9hdERhdGFUb1JHQkEoR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQg
Km91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQkFVQnl0ZURhdGFUb0JHUkFTU0UyKEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVf
dCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkUkdCQVVC
eXRlRGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAq
aW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9p
ZCBsb2FkUkdCQVVCeXRlRGF0YVRvTmF0aXZlKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0
Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7
CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQkE0NDQ0RGF0YVRvQkdSQShHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lk
ICpvdXRwdXQpOworICAgIHN0YXRpYyB2b2lkIGxvYWRSR0JBNDQ0NERhdGFUb1JHQkEoR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQ
aXRjaCwgdm9pZCAqb3V0cHV0KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkUkdCQTU1NTFEYXRhVG9C
R1JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXpl
X3Qgb3V0cHV0UGl0Y2gsIHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJHQkE1
NTUxRGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICpp
bnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAgIHN0YXRpYyB2b2lk
IGxvYWRSR0JBRmxvYXREYXRhVG9SR0JBKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBj
b25zdCB2b2lkICppbnB1dCwgc2l6ZV90IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpOworICAg
IHN0YXRpYyB2b2lkIGxvYWRSR0JBSGFsZkZsb2F0RGF0YVRvUkdCQShHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGlucHV0UGl0Y2gsIGNvbnN0IHZvaWQgKmlucHV0LCBzaXplX3Qgb3V0cHV0UGl0Y2gs
IHZvaWQgKm91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEJHUkFEYXRhVG9CR1JBKEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgaW5wdXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRj
aCwgdm9pZCAqb3V0cHV0KTsKKworICBwcm90ZWN0ZWQ6CisgICAgR0xzaXplaSBtV2lkdGg7Cisg
ICAgR0xzaXplaSBtSGVpZ2h0OworICAgIEdMaW50IG1JbnRlcm5hbEZvcm1hdDsKKyAgICBHTGVu
dW0gbUFjdHVhbEZvcm1hdDsKKworICAgIGJvb2wgbURpcnR5OworCisgIHByaXZhdGU6CisgICAg
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEltYWdlKTsKK307CisKK30KKworI2VuZGlmIC8vIExJ
QkdMRVNWMl9SRU5ERVJFUl9JTUFHRV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbWFnZVNTRTIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2VTU0UyLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvSW1hZ2VTU0UyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDAgQEAKKyNpbmNs
dWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW1hZ2VTU0UyLmNw
cDogSW1wbGVtZW50cyBTU0UyLWJhc2VkIGZ1bmN0aW9ucyBvZiByeDo6SW1hZ2UgY2xhc3MuIEl0
J3MKKy8vIGluIGEgc2VwYXJhdGVkIGZpbGUgZm9yIEdDQywgd2hpY2ggY2FuIGVuYWJsZSBTU0Ug
dXNhZ2Ugb25seSBwZXItZmlsZSwKKy8vIG5vdCBmb3IgY29kZSBibG9ja3MgdGhhdCB1c2UgU1NF
MiBleHBsaWNpdGx5LgorCisjaW5jbHVkZSAibGliR0xFU3YyL1RleHR1cmUuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2UuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK3ZvaWQg
SW1hZ2U6OmxvYWRSR0JBVUJ5dGVEYXRhVG9CR1JBU1NFMihHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5w
dXRQaXRjaCwgY29uc3Qgdm9pZCAqaW5wdXQsIHNpemVfdCBvdXRwdXRQaXRjaCwgdm9pZCAqb3V0
cHV0KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGludCAqc291cmNlID0gTlVMTDsKKyAgICB1bnNp
Z25lZCBpbnQgKmRlc3QgPSBOVUxMOworICAgIF9fbTEyOGkgYnJNYXNrID0gX21tX3NldDFfZXBp
MzIoMHgwMGZmMDBmZik7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKQor
ICAgIHsKKyAgICAgICAgc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBp
bnQqPihzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW5wdXQpICsgeSAqIGlucHV0
UGl0Y2gpOworICAgICAgICBkZXN0ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0KSArIHkgKiBvdXRwdXRQaXRjaCk7Cisg
ICAgICAgIGludCB4ID0gMDsKKworICAgICAgICAvLyBNYWtlIG91dHB1dCB3cml0ZXMgYWxpZ25l
ZAorICAgICAgICBmb3IgKHggPSAwOyAoKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KCZkZXN0
W3hdKSAmIDE1KSAhPSAwKSAmJiB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHJnYmEgPSBzb3VyY2VbeF07CisgICAgICAgICAgICBkZXN0W3hdID0g
KF9yb3RsKHJnYmEsIDE2KSAmIDB4MDBmZjAwZmYpIHwgKHJnYmEgJiAweGZmMDBmZjAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZvciAoOyB4ICsgMyA8IHdpZHRoOyB4ICs9IDQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIF9fbTEyOGkgc291cmNlRGF0YSA9IF9tbV9sb2FkdV9zaTEyOChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IF9fbTEyOGkqPigmc291cmNlW3hdKSk7CisgICAgICAgICAgICAv
LyBNYXNrIG91dCBnIGFuZCBhLCB3aGljaCBkb24ndCBjaGFuZ2UKKyAgICAgICAgICAgIF9fbTEy
OGkgZ2FDb21wb25lbnRzID0gX21tX2FuZG5vdF9zaTEyOChick1hc2ssIHNvdXJjZURhdGEpOwor
ICAgICAgICAgICAgLy8gTWFzayBvdXQgYiBhbmQgcgorICAgICAgICAgICAgX19tMTI4aSBickNv
bXBvbmVudHMgPSBfbW1fYW5kX3NpMTI4KHNvdXJjZURhdGEsIGJyTWFzayk7CisgICAgICAgICAg
ICAvLyBTd2FwIGIgYW5kIHIKKyAgICAgICAgICAgIF9fbTEyOGkgYnJTd2FwcGVkID0gX21tX3No
dWZmbGVoaV9lcGkxNihfbW1fc2h1ZmZsZWxvX2VwaTE2KGJyQ29tcG9uZW50cywgX01NX1NIVUZG
TEUoMiwgMywgMCwgMSkpLCBfTU1fU0hVRkZMRSgyLCAzLCAwLCAxKSk7CisgICAgICAgICAgICBf
X20xMjhpIHJlc3VsdCA9IF9tbV9vcl9zaTEyOChnYUNvbXBvbmVudHMsIGJyU3dhcHBlZCk7Cisg
ICAgICAgICAgICBfbW1fc3RvcmVfc2kxMjgocmVpbnRlcnByZXRfY2FzdDxfX20xMjhpKj4oJmRl
c3RbeF0pLCByZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUGVyZm9ybSBsZWZ0b3Zl
ciB3cml0ZXMKKyAgICAgICAgZm9yICg7IHggPCB3aWR0aDsgeCsrKQorICAgICAgICB7CisgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgcmdiYSA9IHNvdXJjZVt4XTsKKyAgICAgICAgICAgIGRlc3Rb
eF0gPSAoX3JvdGwocmdiYSwgMTYpICYgMHgwMGZmMDBmZikgfCAocmdiYSAmIDB4ZmYwMGZmMDAp
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEltYWdlOjpsb2FkQWxwaGFEYXRhVG9CR1JB
U1NFMihHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBpbnB1dFBpdGNoLCBjb25zdCB2b2lkICppbnB1dCwgc2l6ZV90
IG91dHB1dFBpdGNoLCB2b2lkICpvdXRwdXQpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAq
c291cmNlID0gTlVMTDsKKyAgICB1bnNpZ25lZCBpbnQgKmRlc3QgPSBOVUxMOworICAgIF9fbTEy
OGkgemVyb1dpZGUgPSBfbW1fc2V0emVyb19zaTEyOCgpOworCisgICAgZm9yIChpbnQgeSA9IDA7
IHkgPCBoZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHN0YXRpY19jYXN0PGNv
bnN0IHVuc2lnbmVkIGNoYXIqPihpbnB1dCkgKyB5ICogaW5wdXRQaXRjaDsKKyAgICAgICAgZGVz
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcio+KG91dHB1dCkgKyB5ICogb3V0cHV0UGl0Y2gpOworCisgICAgICAgIGludCB4OworICAg
ICAgICAvLyBNYWtlIG91dHB1dCB3cml0ZXMgYWxpZ25lZAorICAgICAgICBmb3IgKHggPSAwOyAo
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KCZkZXN0W3hdKSAmIDB4RikgIT0gMCAmJiB4IDwg
d2lkdGgpOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc3RbeF0gPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KHNvdXJjZVt4XSkgPDwgMjQ7CisgICAgICAgIH0KKworICAgICAgICBm
b3IgKDsgeCArIDcgPCB3aWR0aDsgeCArPSA4KQorICAgICAgICB7CisgICAgICAgICAgICBfX20x
MjhpIHNvdXJjZURhdGEgPSBfbW1fbG9hZGxfZXBpNjQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBf
X20xMjhpKj4oJnNvdXJjZVt4XSkpOworICAgICAgICAgICAgLy8gSW50ZXJsZWF2ZSBlYWNoIGJ5
dGUgdG8gMTZiaXQsIG1ha2UgdGhlIGxvd2VyIGJ5dGUgdG8gemVybworICAgICAgICAgICAgc291
cmNlRGF0YSA9IF9tbV91bnBhY2tsb19lcGk4KHplcm9XaWRlLCBzb3VyY2VEYXRhKTsKKyAgICAg
ICAgICAgIC8vIEludGVybGVhdmUgZWFjaCAxNmJpdCB0byAzMmJpdCwgbWFrZSB0aGUgbG93ZXIg
MTZiaXQgdG8gemVybworICAgICAgICAgICAgX19tMTI4aSBsbyA9IF9tbV91bnBhY2tsb19lcGkx
Nih6ZXJvV2lkZSwgc291cmNlRGF0YSk7CisgICAgICAgICAgICBfX20xMjhpIGhpID0gX21tX3Vu
cGFja2hpX2VwaTE2KHplcm9XaWRlLCBzb3VyY2VEYXRhKTsKKworICAgICAgICAgICAgX21tX3N0
b3JlX3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KCZkZXN0W3hdKSwgbG8pOworICAg
ICAgICAgICAgX21tX3N0b3JlX3NpMTI4KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KCZkZXN0
W3ggKyA0XSksIGhpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEhhbmRsZSB0aGUgcmVtYWlu
ZGVyCisgICAgICAgIGZvciAoOyB4IDwgd2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVzdFt4XSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc291cmNlW3hdKSA8PCAyNDsK
KyAgICAgICAgfQorICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXI5
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvSW5kZXhCdWZmZXI5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMDcg
QEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW5k
ZXhmZmVyOS5jcHA6IERlZmluZXMgdGhlIEQzRDkgSW5kZXhCdWZmZXIgaW1wbGVtZW50YXRpb24u
CisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXI5LmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgorCituYW1lc3BhY2UgcngKK3sKKwor
SW5kZXhCdWZmZXI5OjpJbmRleEJ1ZmZlcjkoUmVuZGVyZXI5ICpjb25zdCByZW5kZXJlcikgOiBt
UmVuZGVyZXIocmVuZGVyZXIpCit7CisgICAgbUluZGV4QnVmZmVyID0gTlVMTDsKKyAgICBtQnVm
ZmVyU2l6ZSA9IDA7CisgICAgbUluZGV4VHlwZSA9IDA7CisgICAgbUR5bmFtaWMgPSBmYWxzZTsK
K30KKworSW5kZXhCdWZmZXI5Ojp+SW5kZXhCdWZmZXI5KCkKK3sKKyAgICBpZiAobUluZGV4QnVm
ZmVyKQorICAgIHsKKyAgICAgICAgbUluZGV4QnVmZmVyLT5SZWxlYXNlKCk7CisgICAgICAgIG1J
bmRleEJ1ZmZlciA9IE5VTEw7CisgICAgfQorfQorCitib29sIEluZGV4QnVmZmVyOTo6aW5pdGlh
bGl6ZSh1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSwgR0xlbnVtIGluZGV4VHlwZSwgYm9vbCBkeW5h
bWljKQoreworICAgIGlmIChtSW5kZXhCdWZmZXIpCisgICAgeworICAgICAgICBtSW5kZXhCdWZm
ZXItPlJlbGVhc2UoKTsKKyAgICAgICAgbUluZGV4QnVmZmVyID0gTlVMTDsKKyAgICB9CisKKyAg
ICB1cGRhdGVTZXJpYWwoKTsKKworICAgIGlmIChidWZmZXJTaXplID4gMCkKKyAgICB7CisgICAg
ICAgIEQzREZPUk1BVCBmb3JtYXQ7CisgICAgICAgIGlmIChpbmRleFR5cGUgPT0gR0xfVU5TSUdO
RURfU0hPUlQgfHwgaW5kZXhUeXBlID09IEdMX1VOU0lHTkVEX0JZVEUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZvcm1hdCA9IEQzREZNVF9JTkRFWDE2OworICAgICAgICB9CisgICAgICAgIGVs
c2UgaWYgKGluZGV4VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChtUmVuZGVyZXItPmdldDMyQml0SW5kZXhTdXBwb3J0KCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZm9ybWF0ID0gRDNERk1UX0lOREVYMzI7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRVJSKCJB
dHRlbXB0ZWQgdG8gY3JlYXRlIGEgMzItYml0IGluZGV4IGJ1ZmZlciBidXQgcmVuZGVyZXIgZG9l
cyBub3Qgc3VwcG9ydCAzMi1iaXQgaW5kaWNlcy4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7
CisgICAgICAgICAgICBFUlIoIkludmFsaWQgaW5kZXggdHlwZSAldS4iLCBpbmRleFR5cGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgRFdPUkQgdXNh
Z2VGbGFncyA9IEQzRFVTQUdFX1dSSVRFT05MWTsKKyAgICAgICAgaWYgKGR5bmFtaWMpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHVzYWdlRmxhZ3MgfD0gRDNEVVNBR0VfRFlOQU1JQzsKKyAgICAg
ICAgfQorCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVJlbmRlcmVyLT5jcmVhdGVJbmRleEJ1
ZmZlcihidWZmZXJTaXplLCB1c2FnZUZsYWdzLCBmb3JtYXQsICZtSW5kZXhCdWZmZXIpOworICAg
ICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFp
bGVkIHRvIGNyZWF0ZSBhbiBpbmRleCBidWZmZXIgb2Ygc2l6ZSAldSwgcmVzdWx0OiAweCUwOHgu
IiwgbUJ1ZmZlclNpemUsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBtQnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAgbUluZGV4
VHlwZSA9IGluZGV4VHlwZTsKKyAgICBtRHluYW1pYyA9IGR5bmFtaWM7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworSW5kZXhCdWZmZXI5ICpJbmRleEJ1ZmZlcjk6Om1ha2VJbmRleEJ1ZmZlcjko
SW5kZXhCdWZmZXIgKmluZGV4QnVmZmVyKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBF
KEluZGV4QnVmZmVyOSosIGluZGV4QnVmZmVyKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PElu
ZGV4QnVmZmVyOSo+KGluZGV4QnVmZmVyKTsKK30KKworYm9vbCBJbmRleEJ1ZmZlcjk6Om1hcEJ1
ZmZlcih1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSwgdm9pZCoqIG91dE1h
cHBlZE1lbW9yeSkKK3sKKyAgICBpZiAobUluZGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgRFdP
UkQgbG9ja0ZsYWdzID0gbUR5bmFtaWMgPyBEM0RMT0NLX05PT1ZFUldSSVRFIDogMDsKKworICAg
ICAgICB2b2lkICptYXBQdHIgPSBOVUxMOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1JbmRl
eEJ1ZmZlci0+TG9jayhvZmZzZXQsIHNpemUsICZtYXBQdHIsIGxvY2tGbGFncyk7CisgICAgICAg
IGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJJbmRleCBi
dWZmZXIgbG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgKm91dE1hcHBlZE1lbW9yeSA9
IG1hcFB0cjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIEVSUigiSW5kZXggYnVmZmVyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBJbmRleEJ1ZmZlcjk6OnVubWFwQnVmZmVyKCkK
K3sKKyAgICBpZiAobUluZGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQg
PSBtSW5kZXhCdWZmZXItPlVubG9jaygpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiSW5kZXggYnVmZmVyIHVubG9jayBmYWlsZWQgd2l0
aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIEVSUigiSW5kZXggYnVmZmVyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworR0xlbnVtIEluZGV4QnVmZmVyOTo6Z2V0SW5kZXhUeXBl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUluZGV4VHlwZTsKK30KKwordW5zaWduZWQgaW50IElu
ZGV4QnVmZmVyOTo6Z2V0QnVmZmVyU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1CdWZmZXJT
aXplOworfQorCitib29sIEluZGV4QnVmZmVyOTo6c2V0U2l6ZSh1bnNpZ25lZCBpbnQgYnVmZmVy
U2l6ZSwgR0xlbnVtIGluZGV4VHlwZSkKK3sKKyAgICBpZiAoYnVmZmVyU2l6ZSA+IG1CdWZmZXJT
aXplIHx8IGluZGV4VHlwZSAhPSBtSW5kZXhUeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlu
aXRpYWxpemUoYnVmZmVyU2l6ZSwgaW5kZXhUeXBlLCBtRHluYW1pYyk7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKworYm9vbCBJbmRleEJ1
ZmZlcjk6OmRpc2NhcmQoKQoreworICAgIGlmIChtSW5kZXhCdWZmZXIpCisgICAgeworICAgICAg
ICB2b2lkICpkdW1teTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQ7CisKKyAgICAgICAgcmVzdWx0
ID0gbUluZGV4QnVmZmVyLT5Mb2NrKDAsIDEsICZkdW1teSwgRDNETE9DS19ESVNDQVJEKTsKKyAg
ICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkRp
c2NhcmQgbG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gbUluZGV4QnVm
ZmVyLT5VbmxvY2soKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBFUlIoIkRpc2NhcmQgdW5sb2NrIGZhaWxlZCB3aXRoIGVycm9yIDB4JTA4eCIs
IHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgRVJSKCJJbmRl
eCBidWZmZXIgbm90IGluaXRpYWxpemVkLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitEM0RGT1JNQVQgSW5kZXhCdWZmZXI5OjpnZXRJbmRleEZvcm1hdCgpIGNvbnN0Cit7
CisgICAgc3dpdGNoIChtSW5kZXhUeXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURf
QllURTogICAgcmV0dXJuIEQzREZNVF9JTkRFWDE2OworICAgICAgY2FzZSBHTF9VTlNJR05FRF9T
SE9SVDogICByZXR1cm4gRDNERk1UX0lOREVYMTY7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lO
VDogICAgIHJldHVybiBEM0RGTVRfSU5ERVgzMjsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxF
KCk7ICAgcmV0dXJuIEQzREZNVF9VTktOT1dOOworICAgIH0KK30KKworSURpcmVjdDNESW5kZXhC
dWZmZXI5ICogSW5kZXhCdWZmZXI5OjpnZXRCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBt
SW5kZXhCdWZmZXI7Cit9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVy
OS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvSW5kZXhCdWZmZXI5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyOS5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDUzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbmRleGZmZXI5Lmg6
IERlZmluZXMgdGhlIEQzRDkgSW5kZXhCdWZmZXIgaW1wbGVtZW50YXRpb24uCisKKyNpZm5kZWYg
TElCR0xFU1YyX1JFTkRFUkVSX0lOREVYQlVGRkVSOV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVO
REVSRVJfSU5ERVhCVUZGRVI5X0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW5k
ZXhCdWZmZXIuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjk7CisKK2NsYXNz
IEluZGV4QnVmZmVyOSA6IHB1YmxpYyBJbmRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgZXhw
bGljaXQgSW5kZXhCdWZmZXI5KFJlbmRlcmVyOSAqY29uc3QgcmVuZGVyZXIpOworICAgIHZpcnR1
YWwgfkluZGV4QnVmZmVyOSgpOworCisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUodW5zaWdu
ZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUsIGJvb2wgZHluYW1pYyk7CisKKyAg
ICBzdGF0aWMgSW5kZXhCdWZmZXI5ICptYWtlSW5kZXhCdWZmZXI5KEluZGV4QnVmZmVyICppbmRl
eEJ1ZmZlcik7CisKKyAgICB2aXJ0dWFsIGJvb2wgbWFwQnVmZmVyKHVuc2lnbmVkIGludCBvZmZz
ZXQsIHVuc2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFwcGVkTWVtb3J5KTsKKyAgICB2aXJ0
dWFsIGJvb2wgdW5tYXBCdWZmZXIoKTsKKworICAgIHZpcnR1YWwgR0xlbnVtIGdldEluZGV4VHlw
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldEJ1ZmZlclNpemUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSwgR0xl
bnVtIGluZGV4VHlwZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgZGlzY2FyZCgpOworCisgICAgRDNE
Rk9STUFUIGdldEluZGV4Rm9ybWF0KCkgY29uc3Q7CisgICAgSURpcmVjdDNESW5kZXhCdWZmZXI5
ICpnZXRCdWZmZXIoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTihJbmRleEJ1ZmZlcjkpOworCisgICAgcng6OlJlbmRlcmVyOSAqY29uc3QgbVJlbmRl
cmVyOworCisgICAgSURpcmVjdDNESW5kZXhCdWZmZXI5ICptSW5kZXhCdWZmZXI7CisgICAgdW5z
aWduZWQgaW50IG1CdWZmZXJTaXplOworICAgIEdMZW51bSBtSW5kZXhUeXBlOworICAgIGJvb2wg
bUR5bmFtaWM7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfSU5ERVhC
VUZGRVI5X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL0luZGV4QnVmZmVyMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXIxMS5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lu
ZGV4QnVmZmVyMTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4MiBAQAorI2luY2x1ZGUg
InByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gSW5kZXhCdWZmZXIxMS5jcHA6IERl
ZmluZXMgdGhlIEQzRDExIEluZGV4QnVmZmVyIGltcGxlbWVudGF0aW9uLgorCisjaW5jbHVkZSAi
bGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvUmVuZGVyZXIxMS5oIgorCituYW1lc3BhY2UgcngKK3sKKworSW5kZXhCdWZmZXIx
MTo6SW5kZXhCdWZmZXIxMShSZW5kZXJlcjExICpjb25zdCByZW5kZXJlcikgOiBtUmVuZGVyZXIo
cmVuZGVyZXIpCit7CisgICAgbUJ1ZmZlciA9IE5VTEw7CisgICAgbUJ1ZmZlclNpemUgPSAwOwor
ICAgIG1EeW5hbWljVXNhZ2UgPSBmYWxzZTsKK30KKworSW5kZXhCdWZmZXIxMTo6fkluZGV4QnVm
ZmVyMTEoKQoreworICAgIGlmIChtQnVmZmVyKQorICAgIHsKKyAgICAgICAgbUJ1ZmZlci0+UmVs
ZWFzZSgpOworICAgICAgICBtQnVmZmVyID0gTlVMTDsKKyAgICB9Cit9CisKK2Jvb2wgSW5kZXhC
dWZmZXIxMTo6aW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSwgR0xlbnVtIGluZGV4
VHlwZSwgYm9vbCBkeW5hbWljKQoreworICAgIGlmIChtQnVmZmVyKQorICAgIHsKKyAgICAgICAg
bUJ1ZmZlci0+UmVsZWFzZSgpOworICAgICAgICBtQnVmZmVyID0gTlVMTDsKKyAgICB9CisKKyAg
ICB1cGRhdGVTZXJpYWwoKTsKKworICAgIGlmIChidWZmZXJTaXplID4gMCkKKyAgICB7CisgICAg
ICAgIElEM0QxMURldmljZSogZHhEZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisg
ICAgICAgIEQzRDExX0JVRkZFUl9ERVNDIGJ1ZmZlckRlc2M7CisgICAgICAgIGJ1ZmZlckRlc2Mu
Qnl0ZVdpZHRoID0gYnVmZmVyU2l6ZTsKKyAgICAgICAgYnVmZmVyRGVzYy5Vc2FnZSA9IEQzRDEx
X1VTQUdFX0RZTkFNSUM7CisgICAgICAgIGJ1ZmZlckRlc2MuQmluZEZsYWdzID0gRDNEMTFfQklO
RF9JTkRFWF9CVUZGRVI7CisgICAgICAgIGJ1ZmZlckRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0Qx
MV9DUFVfQUNDRVNTX1dSSVRFOworICAgICAgICBidWZmZXJEZXNjLk1pc2NGbGFncyA9IDA7Cisg
ICAgICAgIGJ1ZmZlckRlc2MuU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7CisKKyAgICAgICAgSFJF
U1VMVCByZXN1bHQgPSBkeERldmljZS0+Q3JlYXRlQnVmZmVyKCZidWZmZXJEZXNjLCBOVUxMLCAm
bUJ1ZmZlcik7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgbUJ1ZmZlclNpemUg
PSBidWZmZXJTaXplOworICAgIG1JbmRleFR5cGUgPSBpbmRleFR5cGU7CisgICAgbUR5bmFtaWNV
c2FnZSA9IGR5bmFtaWM7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSW5kZXhCdWZmZXIxMSAq
SW5kZXhCdWZmZXIxMTo6bWFrZUluZGV4QnVmZmVyMTEoSW5kZXhCdWZmZXIgKmluZGV4QnVmZmVy
KQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKEluZGV4QnVmZmVyMTEqLCBpbmRleEJ1
ZmZlcikpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbmRleEJ1ZmZlcjExKj4oaW5kZXhCdWZm
ZXIpOworfQorCitib29sIEluZGV4QnVmZmVyMTE6Om1hcEJ1ZmZlcih1bnNpZ25lZCBpbnQgb2Zm
c2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSwgdm9pZCoqIG91dE1hcHBlZE1lbW9yeSkKK3sKKyAgICBp
ZiAobUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmIChvZmZzZXQgKyBzaXplID4gbUJ1ZmZlclNp
emUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiSW5kZXggYnVmZmVyIG1hcCByYW5nZSBp
cyBub3QgaW5zaWRlIHRoZSBidWZmZXIuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKworICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkeENvbnRleHQgPSBtUmVu
ZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKKworICAgICAgICBEM0QxMV9NQVBQRURfU1VCUkVT
T1VSQ0UgbWFwcGVkUmVzb3VyY2U7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZHhDb250ZXh0
LT5NYXAobUJ1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRFX05PX09WRVJXUklURSwgMCwgJm1hcHBl
ZFJlc291cmNlKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAg
ICAgICAgICBFUlIoIkluZGV4IGJ1ZmZlciBtYXAgZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4Iiwg
cmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAg
ICpvdXRNYXBwZWRNZW1vcnkgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihtYXBwZWRSZXNvdXJj
ZS5wRGF0YSkgKyBvZmZzZXQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBFUlIoIkluZGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgSW5kZXhCdWZmZXIxMTo6dW5t
YXBCdWZmZXIoKQoreworICAgIGlmIChtQnVmZmVyKQorICAgIHsKKyAgICAgICAgSUQzRDExRGV2
aWNlQ29udGV4dCAqZHhDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7Cisg
ICAgICAgIGR4Q29udGV4dC0+VW5tYXAobUJ1ZmZlciwgMCk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBFUlIoIkluZGV4IGJ1ZmZlciBub3Qg
aW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK0dMZW51
bSBJbmRleEJ1ZmZlcjExOjpnZXRJbmRleFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBtSW5k
ZXhUeXBlOworfQorCit1bnNpZ25lZCBpbnQgSW5kZXhCdWZmZXIxMTo6Z2V0QnVmZmVyU2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1CdWZmZXJTaXplOworfQorCitib29sIEluZGV4QnVmZmVy
MTE6OnNldFNpemUodW5zaWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUpCit7
CisgICAgaWYgKGJ1ZmZlclNpemUgPiBtQnVmZmVyU2l6ZSB8fCBpbmRleFR5cGUgIT0gbUluZGV4
VHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBpbml0aWFsaXplKGJ1ZmZlclNpemUsIGluZGV4
VHlwZSwgbUR5bmFtaWNVc2FnZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KK30KKworYm9vbCBJbmRleEJ1ZmZlcjExOjpkaXNjYXJkKCkKK3sK
KyAgICBpZiAobUJ1ZmZlcikKKyAgICB7CisgICAgICAgIElEM0QxMURldmljZUNvbnRleHQgKmR4
Q29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOworCisgICAgICAgIEQzRDEx
X01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKKyAgICAgICAgSFJFU1VMVCByZXN1
bHQgPSBkeENvbnRleHQtPk1hcChtQnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwg
MCwgJm1hcHBlZFJlc291cmNlKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAg
ICB7CisgICAgICAgICAgICBFUlIoIkluZGV4IGJ1ZmZlciBtYXAgZmFpbGVkIHdpdGggZXJyb3Ig
MHglMDh4IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
CisgICAgICAgIGR4Q29udGV4dC0+VW5tYXAobUJ1ZmZlciwgMCk7CisKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEVSUigiSW5kZXggYnVmZmVy
IG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwor
RFhHSV9GT1JNQVQgSW5kZXhCdWZmZXIxMTo6Z2V0SW5kZXhGb3JtYXQoKSBjb25zdAoreworICAg
IHN3aXRjaCAobUluZGV4VHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6
ICAgIHJldHVybiBEWEdJX0ZPUk1BVF9SMTZfVUlOVDsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURf
U0hPUlQ6ICAgcmV0dXJuIERYR0lfRk9STUFUX1IxNl9VSU5UOworICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9JTlQ6ICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjMyX1VJTlQ7CisgICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOyAgIHJldHVybiBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAgIH0KK30K
KworSUQzRDExQnVmZmVyICpJbmRleEJ1ZmZlcjExOjpnZXRCdWZmZXIoKSBjb25zdAoreworICAg
IHJldHVybiBtQnVmZmVyOworfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbmRleEJ1
ZmZlcjExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9JbmRleEJ1ZmZlcjExLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEluZGV4QnVmZmVy
MTEuaDogRGVmaW5lcyB0aGUgRDNEMTEgSW5kZXhCdWZmZXIgaW1wbGVtZW50YXRpb24uCisKKyNp
Zm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX0lOREVYQlVGRkVSMTFfSF8KKyNkZWZpbmUgTElCR0xF
U1YyX1JFTkRFUkVSX0lOREVYQlVGRkVSMTFfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5k
ZXJlci9JbmRleEJ1ZmZlci5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyMTE7
CisKK2NsYXNzIEluZGV4QnVmZmVyMTEgOiBwdWJsaWMgSW5kZXhCdWZmZXIKK3sKKyAgcHVibGlj
OgorICAgIGV4cGxpY2l0IEluZGV4QnVmZmVyMTEoUmVuZGVyZXIxMSAqY29uc3QgcmVuZGVyZXIp
OworICAgIHZpcnR1YWwgfkluZGV4QnVmZmVyMTEoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpbml0
aWFsaXplKHVuc2lnbmVkIGludCBidWZmZXJTaXplLCBHTGVudW0gaW5kZXhUeXBlLCBib29sIGR5
bmFtaWMpOworCisgICAgc3RhdGljIEluZGV4QnVmZmVyMTEgKm1ha2VJbmRleEJ1ZmZlcjExKElu
ZGV4QnVmZmVyICppbmRleEJ1ZmZlcik7CisKKyAgICB2aXJ0dWFsIGJvb2wgbWFwQnVmZmVyKHVu
c2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFwcGVkTWVt
b3J5KTsKKyAgICB2aXJ0dWFsIGJvb2wgdW5tYXBCdWZmZXIoKTsKKworICAgIHZpcnR1YWwgR0xl
bnVtIGdldEluZGV4VHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldEJ1
ZmZlclNpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCBpbnQg
YnVmZmVyU2l6ZSwgR0xlbnVtIGluZGV4VHlwZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgZGlzY2Fy
ZCgpOworCisgICAgRFhHSV9GT1JNQVQgZ2V0SW5kZXhGb3JtYXQoKSBjb25zdDsKKyAgICBJRDNE
MTFCdWZmZXIgKmdldEJ1ZmZlcigpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOKEluZGV4QnVmZmVyMTEpOworCisgICAgcng6OlJlbmRlcmVyMTEgKmNv
bnN0IG1SZW5kZXJlcjsKKworICAgIElEM0QxMUJ1ZmZlciAqbUJ1ZmZlcjsKKyAgICB1bnNpZ25l
ZCBpbnQgbUJ1ZmZlclNpemU7CisgICAgR0xlbnVtIG1JbmRleFR5cGU7CisgICAgYm9vbCBtRHlu
YW1pY1VzYWdlOworfTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0lOREVY
QlVGRkVSMTFfSF8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L0luZGV4QnVmZmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhCdWZmZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIwMyBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworCisvLyBJbmRleEJ1ZmZlci5jcHA6IERlZmluZXMgdGhlIGFic3RyYWN0IEluZGV4QnVmZmVy
IGNsYXNzIGFuZCBJbmRleEJ1ZmZlckludGVyZmFjZQorLy8gY2xhc3Mgd2l0aCBkZXJpdmF0aW9u
cywgY2xhc3NlcyB0aGF0IHBlcmZvcm0gZ3JhcGhpY3MgQVBJIGFnbm9zdGljIGluZGV4IGJ1ZmZl
ciBvcGVyYXRpb25zLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVy
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgiCisKK25hbWVzcGFj
ZSByeAoreworCit1bnNpZ25lZCBpbnQgSW5kZXhCdWZmZXI6Om1OZXh0U2VyaWFsID0gMTsKKwor
SW5kZXhCdWZmZXI6OkluZGV4QnVmZmVyKCkKK3sKKyAgICB1cGRhdGVTZXJpYWwoKTsKK30KKwor
SW5kZXhCdWZmZXI6On5JbmRleEJ1ZmZlcigpCit7Cit9CisKK3Vuc2lnbmVkIGludCBJbmRleEJ1
ZmZlcjo6Z2V0U2VyaWFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNlcmlhbDsKK30KKwordm9p
ZCBJbmRleEJ1ZmZlcjo6dXBkYXRlU2VyaWFsKCkKK3sKKyAgICBtU2VyaWFsID0gbU5leHRTZXJp
YWwrKzsKK30KKworCitJbmRleEJ1ZmZlckludGVyZmFjZTo6SW5kZXhCdWZmZXJJbnRlcmZhY2Uo
UmVuZGVyZXIgKnJlbmRlcmVyLCBib29sIGR5bmFtaWMpIDogbVJlbmRlcmVyKHJlbmRlcmVyKQor
eworICAgIG1JbmRleEJ1ZmZlciA9IHJlbmRlcmVyLT5jcmVhdGVJbmRleEJ1ZmZlcigpOworCisg
ICAgbUR5bmFtaWMgPSBkeW5hbWljOworICAgIG1Xcml0ZVBvc2l0aW9uID0gMDsKK30KKworSW5k
ZXhCdWZmZXJJbnRlcmZhY2U6On5JbmRleEJ1ZmZlckludGVyZmFjZSgpCit7CisgICAgaWYgKG1J
bmRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtSW5kZXhCdWZmZXI7CisgICAgfQor
fQorCitHTGVudW0gSW5kZXhCdWZmZXJJbnRlcmZhY2U6OmdldEluZGV4VHlwZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1JbmRleEJ1ZmZlci0+Z2V0SW5kZXhUeXBlKCk7Cit9CisKK3Vuc2lnbmVk
IGludCBJbmRleEJ1ZmZlckludGVyZmFjZTo6Z2V0QnVmZmVyU2l6ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1JbmRleEJ1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpOworfQorCit1bnNpZ25lZCBpbnQg
SW5kZXhCdWZmZXJJbnRlcmZhY2U6OmdldFNlcmlhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1J
bmRleEJ1ZmZlci0+Z2V0U2VyaWFsKCk7Cit9CisKK2ludCBJbmRleEJ1ZmZlckludGVyZmFjZTo6
bWFwQnVmZmVyKHVuc2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFwcGVkTWVtb3J5KQorewor
ICAgIGlmICghbUluZGV4QnVmZmVyLT5tYXBCdWZmZXIobVdyaXRlUG9zaXRpb24sIHNpemUsIG91
dE1hcHBlZE1lbW9yeSkpCisgICAgeworICAgICAgICAqb3V0TWFwcGVkTWVtb3J5ID0gTlVMTDsK
KyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGludCBvbGRXcml0ZVBvcyA9IHN0YXRp
Y19jYXN0PGludD4obVdyaXRlUG9zaXRpb24pOworICAgIG1Xcml0ZVBvc2l0aW9uICs9IHNpemU7
CisKKyAgICByZXR1cm4gb2xkV3JpdGVQb3M7Cit9CisKK2Jvb2wgSW5kZXhCdWZmZXJJbnRlcmZh
Y2U6OnVubWFwQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbUluZGV4QnVmZmVyLT51bm1hcEJ1ZmZl
cigpOworfQorCitJbmRleEJ1ZmZlciAqIEluZGV4QnVmZmVySW50ZXJmYWNlOjpnZXRJbmRleEJ1
ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbmRleEJ1ZmZlcjsKK30KKwordW5zaWduZWQg
aW50IEluZGV4QnVmZmVySW50ZXJmYWNlOjpnZXRXcml0ZVBvc2l0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVdyaXRlUG9zaXRpb247Cit9CisKK3ZvaWQgSW5kZXhCdWZmZXJJbnRlcmZhY2U6
OnNldFdyaXRlUG9zaXRpb24odW5zaWduZWQgaW50IHdyaXRlUG9zaXRpb24pCit7CisgICAgbVdy
aXRlUG9zaXRpb24gPSB3cml0ZVBvc2l0aW9uOworfQorCitib29sIEluZGV4QnVmZmVySW50ZXJm
YWNlOjpkaXNjYXJkKCkKK3sKKyAgICByZXR1cm4gbUluZGV4QnVmZmVyLT5kaXNjYXJkKCk7Cit9
CisKK2Jvb2wgSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnNldEJ1ZmZlclNpemUodW5zaWduZWQgaW50
IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUpCit7CisgICAgaWYgKG1JbmRleEJ1ZmZlci0+
Z2V0QnVmZmVyU2l6ZSgpID09IDApCisgICAgeworICAgICAgICByZXR1cm4gbUluZGV4QnVmZmVy
LT5pbml0aWFsaXplKGJ1ZmZlclNpemUsIGluZGV4VHlwZSwgbUR5bmFtaWMpOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gbUluZGV4QnVmZmVyLT5zZXRTaXplKGJ1ZmZl
clNpemUsIGluZGV4VHlwZSk7CisgICAgfQorfQorCitTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVy
ZmFjZTo6U3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2UoUmVuZGVyZXIgKnJlbmRlcmVyKSA6
IEluZGV4QnVmZmVySW50ZXJmYWNlKHJlbmRlcmVyLCB0cnVlKQoreworfQorCitTdHJlYW1pbmdJ
bmRleEJ1ZmZlckludGVyZmFjZTo6flN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlKCkKK3sK
K30KKworYm9vbCBTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2ZUJ1ZmZlclNw
YWNlKHVuc2lnbmVkIGludCBzaXplLCBHTGVudW0gaW5kZXhUeXBlKQoreworICAgIGJvb2wgcmVz
dWx0ID0gdHJ1ZTsKKyAgICB1bnNpZ25lZCBpbnQgY3VyQnVmZmVyU2l6ZSA9IGdldEJ1ZmZlclNp
emUoKTsKKyAgICB1bnNpZ25lZCBpbnQgd3JpdGVQb3MgPSBnZXRXcml0ZVBvc2l0aW9uKCk7Cisg
ICAgaWYgKHNpemUgPiBjdXJCdWZmZXJTaXplKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gc2V0
QnVmZmVyU2l6ZShzdGQ6Om1heChzaXplLCAyICogY3VyQnVmZmVyU2l6ZSksIGluZGV4VHlwZSk7
CisgICAgICAgIHNldFdyaXRlUG9zaXRpb24oMCk7CisgICAgfQorICAgIGVsc2UgaWYgKHdyaXRl
UG9zICsgc2l6ZSA+IGN1ckJ1ZmZlclNpemUgfHwgd3JpdGVQb3MgKyBzaXplIDwgd3JpdGVQb3Mp
CisgICAgeworICAgICAgICBpZiAoIWRpc2NhcmQoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHNldFdyaXRlUG9zaXRpb24oMCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitTdGF0aWNJbmRleEJ1ZmZlckludGVy
ZmFjZTo6U3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UoUmVuZGVyZXIgKnJlbmRlcmVyKSA6IElu
ZGV4QnVmZmVySW50ZXJmYWNlKHJlbmRlcmVyLCBmYWxzZSkKK3sKK30KKworU3RhdGljSW5kZXhC
dWZmZXJJbnRlcmZhY2U6On5TdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSgpCit7Cit9CisKK2Jv
b2wgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2VydmVCdWZmZXJTcGFjZSh1bnNpZ25l
ZCBpbnQgc2l6ZSwgR0xlbnVtIGluZGV4VHlwZSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgY3VyU2l6
ZSA9IGdldEJ1ZmZlclNpemUoKTsKKyAgICBpZiAoY3VyU2l6ZSA9PSAwKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHNldEJ1ZmZlclNpemUoc2l6ZSwgaW5kZXhUeXBlKTsKKyAgICB9CisgICAgZWxz
ZSBpZiAoY3VyU2l6ZSA+PSBzaXplICYmIGluZGV4VHlwZSA9PSBnZXRJbmRleFR5cGUoKSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBFUlIoIlN0YXRpYyBpbmRleCBidWZmZXJzIGNhbid0IGJlIHJlc2l6ZWQiKTsKKyAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordW5zaWdu
ZWQgaW50IFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlOjpsb29rdXBSYW5nZShpbnRwdHJfdCBv
ZmZzZXQsIEdMc2l6ZWkgY291bnQsIHVuc2lnbmVkIGludCAqbWluSW5kZXgsIHVuc2lnbmVkIGlu
dCAqbWF4SW5kZXgpCit7CisgICAgSW5kZXhSYW5nZSByYW5nZSA9IHtvZmZzZXQsIGNvdW50fTsK
KworICAgIHN0ZDo6bWFwPEluZGV4UmFuZ2UsIEluZGV4UmVzdWx0Pjo6aXRlcmF0b3IgcmVzID0g
bUNhY2hlLmZpbmQocmFuZ2UpOworCisgICAgaWYgKHJlcyA9PSBtQ2FjaGUuZW5kKCkpCisgICAg
eworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgKm1pbkluZGV4ID0gcmVzLT5zZWNv
bmQubWluSW5kZXg7CisgICAgKm1heEluZGV4ID0gcmVzLT5zZWNvbmQubWF4SW5kZXg7CisgICAg
cmV0dXJuIHJlcy0+c2Vjb25kLnN0cmVhbU9mZnNldDsKK30KKwordm9pZCBTdGF0aWNJbmRleEJ1
ZmZlckludGVyZmFjZTo6YWRkUmFuZ2UoaW50cHRyX3Qgb2Zmc2V0LCBHTHNpemVpIGNvdW50LCB1
bnNpZ25lZCBpbnQgbWluSW5kZXgsIHVuc2lnbmVkIGludCBtYXhJbmRleCwgdW5zaWduZWQgaW50
IHN0cmVhbU9mZnNldCkKK3sKKyAgICBJbmRleFJhbmdlIGluZGV4UmFuZ2UgPSB7b2Zmc2V0LCBj
b3VudH07CisgICAgSW5kZXhSZXN1bHQgaW5kZXhSZXN1bHQgPSB7bWluSW5kZXgsIG1heEluZGV4
LCBzdHJlYW1PZmZzZXR9OworICAgIG1DYWNoZVtpbmRleFJhbmdlXSA9IGluZGV4UmVzdWx0Owor
fQorCit9CisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvSW5kZXhCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVy
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM3IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisv
LyBJbmRleEJ1ZmZlci5oOiBEZWZpbmVzIHRoZSBhYnN0cmFjdCBJbmRleEJ1ZmZlciBjbGFzcyBh
bmQgSW5kZXhCdWZmZXJJbnRlcmZhY2UKKy8vIGNsYXNzIHdpdGggZGVyaXZhdGlvbnMsIGNsYXNz
ZXMgdGhhdCBwZXJmb3JtIGdyYXBoaWNzIEFQSSBhZ25vc3RpYyBpbmRleCBidWZmZXIgb3BlcmF0
aW9ucy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfSU5ERVhCVUZGRVJfSF8KKyNkZWZp
bmUgTElCR0xFU1YyX1JFTkRFUkVSX0lOREVYQlVGRkVSX0hfCisKKyNpbmNsdWRlICJjb21tb24v
YW5nbGV1dGlscy5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOworCitjbGFz
cyBJbmRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgSW5kZXhCdWZmZXIoKTsKKyAgICB2aXJ0
dWFsIH5JbmRleEJ1ZmZlcigpOworCisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUodW5zaWdu
ZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUsIGJvb2wgZHluYW1pYykgPSAwOwor
CisgICAgdmlydHVhbCBib29sIG1hcEJ1ZmZlcih1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25l
ZCBpbnQgc2l6ZSwgdm9pZCoqIG91dE1hcHBlZE1lbW9yeSkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCB1bm1hcEJ1ZmZlcigpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBkaXNjYXJkKCkgPSAwOwor
CisgICAgdmlydHVhbCBHTGVudW0gZ2V0SW5kZXhUeXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgdW5zaWduZWQgaW50IGdldEJ1ZmZlclNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIHNldFNpemUodW5zaWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUpID0g
MDsKKworICAgIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKKworICBwcm90ZWN0ZWQ6
CisgICAgdm9pZCB1cGRhdGVTZXJpYWwoKTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTihJbmRleEJ1ZmZlcik7CisKKyAgICB1bnNpZ25lZCBpbnQgbVNlcmlhbDsK
KyAgICBzdGF0aWMgdW5zaWduZWQgaW50IG1OZXh0U2VyaWFsOworfTsKKworY2xhc3MgSW5kZXhC
dWZmZXJJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIEluZGV4QnVmZmVySW50ZXJmYWNlKFJl
bmRlcmVyICpyZW5kZXJlciwgYm9vbCBkeW5hbWljKTsKKyAgICB2aXJ0dWFsIH5JbmRleEJ1ZmZl
ckludGVyZmFjZSgpOworCisgICAgdmlydHVhbCBib29sIHJlc2VydmVCdWZmZXJTcGFjZSh1bnNp
Z25lZCBpbnQgc2l6ZSwgR0xlbnVtIGluZGV4VHlwZSkgPSAwOworCisgICAgR0xlbnVtIGdldElu
ZGV4VHlwZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGludCBnZXRCdWZmZXJTaXplKCkgY29uc3Q7
CisKKyAgICB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CisKKyAgICBpbnQgbWFwQnVm
ZmVyKHVuc2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFwcGVkTWVtb3J5KTsKKyAgICBib29s
IHVubWFwQnVmZmVyKCk7CisKKyAgICBJbmRleEJ1ZmZlciAqZ2V0SW5kZXhCdWZmZXIoKSBjb25z
dDsKKworICBwcm90ZWN0ZWQ6CisgICAgdW5zaWduZWQgaW50IGdldFdyaXRlUG9zaXRpb24oKSBj
b25zdDsKKyAgICB2b2lkIHNldFdyaXRlUG9zaXRpb24odW5zaWduZWQgaW50IHdyaXRlUG9zaXRp
b24pOworCisgICAgYm9vbCBkaXNjYXJkKCk7CisKKyAgICBib29sIHNldEJ1ZmZlclNpemUodW5z
aWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUpOworCisgIHByaXZhdGU6Cisg
ICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEluZGV4QnVmZmVySW50ZXJmYWNlKTsKKworICAg
IHJ4OjpSZW5kZXJlciAqY29uc3QgbVJlbmRlcmVyOworCisgICAgSW5kZXhCdWZmZXIqIG1JbmRl
eEJ1ZmZlcjsKKworICAgIHVuc2lnbmVkIGludCBtV3JpdGVQb3NpdGlvbjsKKyAgICBib29sIG1E
eW5hbWljOworfTsKKworY2xhc3MgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2UgOiBwdWJs
aWMgSW5kZXhCdWZmZXJJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIFN0cmVhbWluZ0luZGV4
QnVmZmVySW50ZXJmYWNlKFJlbmRlcmVyICpyZW5kZXJlcik7CisgICAgflN0cmVhbWluZ0luZGV4
QnVmZmVySW50ZXJmYWNlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgcmVzZXJ2ZUJ1ZmZlclNwYWNl
KHVuc2lnbmVkIGludCBzaXplLCBHTGVudW0gaW5kZXhUeXBlKTsKK307CisKK2NsYXNzIFN0YXRp
Y0luZGV4QnVmZmVySW50ZXJmYWNlIDogcHVibGljIEluZGV4QnVmZmVySW50ZXJmYWNlCit7Cisg
IHB1YmxpYzoKKyAgICBleHBsaWNpdCBTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZShSZW5kZXJl
ciAqcmVuZGVyZXIpOworICAgIH5TdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSgpOworCisgICAg
dmlydHVhbCBib29sIHJlc2VydmVCdWZmZXJTcGFjZSh1bnNpZ25lZCBpbnQgc2l6ZSwgR0xlbnVt
IGluZGV4VHlwZSk7CisKKyAgICB1bnNpZ25lZCBpbnQgbG9va3VwUmFuZ2UoaW50cHRyX3Qgb2Zm
c2V0LCBHTHNpemVpIGNvdW50LCB1bnNpZ25lZCBpbnQgKm1pbkluZGV4LCB1bnNpZ25lZCBpbnQg
Km1heEluZGV4KTsgICAvLyBSZXR1cm5zIHRoZSBvZmZzZXQgaW50byB0aGUgaW5kZXggYnVmZmVy
LCBvciAtMSBpZiBub3QgZm91bmQKKyAgICB2b2lkIGFkZFJhbmdlKGludHB0cl90IG9mZnNldCwg
R0xzaXplaSBjb3VudCwgdW5zaWduZWQgaW50IG1pbkluZGV4LCB1bnNpZ25lZCBpbnQgbWF4SW5k
ZXgsIHVuc2lnbmVkIGludCBzdHJlYW1PZmZzZXQpOworCisgIHByaXZhdGU6CisgICAgc3RydWN0
IEluZGV4UmFuZ2UKKyAgICB7CisgICAgICAgIGludHB0cl90IG9mZnNldDsKKyAgICAgICAgR0xz
aXplaSBjb3VudDsKKworICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBJbmRleFJhbmdlJiBy
aHMpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChvZmZzZXQgIT0gcmhzLm9mZnNl
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0IDwgcmhzLm9m
ZnNldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb3VudCAhPSByaHMuY291bnQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50IDwgcmhzLmNvdW50
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfTsKKworICAgIHN0cnVjdCBJbmRleFJlc3VsdAorICAgIHsKKyAgICAgICAgdW5zaWduZWQg
aW50IG1pbkluZGV4OworICAgICAgICB1bnNpZ25lZCBpbnQgbWF4SW5kZXg7CisgICAgICAgIHVu
c2lnbmVkIGludCBzdHJlYW1PZmZzZXQ7CisgICAgfTsKKworICAgIHN0ZDo6bWFwPEluZGV4UmFu
Z2UsIEluZGV4UmVzdWx0PiBtQ2FjaGU7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJf
UkVOREVSRVJfSU5ERVhCVUZGRVJfSF8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0
YU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0luZGV4RGF0YU1h
bmFnZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxNiBAQAorI2luY2x1ZGUgInByZWNv
bXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbmRleERhdGFNYW5hZ2VyLmNwcDog
RGVmaW5lcyB0aGUgSW5kZXhEYXRhTWFuYWdlciwgYSBjbGFzcyB0aGF0CisvLyBydW5zIHRoZSBC
dWZmZXIgdHJhbnNsYXRpb24gcHJvY2VzcyBmb3IgaW5kZXggYnVmZmVycy4KKworI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL3JlbmRlcmVyL0J1ZmZlclN0b3JhZ2UuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9CdWZm
ZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9y
ZW5kZXJlci9JbmRleEJ1ZmZlci5oIgorCituYW1lc3BhY2UgcngKK3sKKworSW5kZXhEYXRhTWFu
YWdlcjo6SW5kZXhEYXRhTWFuYWdlcihSZW5kZXJlciAqcmVuZGVyZXIpIDogbVJlbmRlcmVyKHJl
bmRlcmVyKQoreworICAgIG1TdHJlYW1pbmdCdWZmZXJTaG9ydCA9IG5ldyBTdHJlYW1pbmdJbmRl
eEJ1ZmZlckludGVyZmFjZShtUmVuZGVyZXIpOworICAgIGlmICghbVN0cmVhbWluZ0J1ZmZlclNo
b3J0LT5yZXNlcnZlQnVmZmVyU3BhY2UoSU5JVElBTF9JTkRFWF9CVUZGRVJfU0laRSwgR0xfVU5T
SUdORURfU0hPUlQpKQorICAgIHsKKyAgICAgICAgZGVsZXRlIG1TdHJlYW1pbmdCdWZmZXJTaG9y
dDsKKyAgICAgICAgbVN0cmVhbWluZ0J1ZmZlclNob3J0ID0gTlVMTDsKKyAgICB9CisKKyAgICBt
U3RyZWFtaW5nQnVmZmVySW50ID0gbmV3IFN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlKG1S
ZW5kZXJlcik7CisgICAgaWYgKCFtU3RyZWFtaW5nQnVmZmVySW50LT5yZXNlcnZlQnVmZmVyU3Bh
Y2UoSU5JVElBTF9JTkRFWF9CVUZGRVJfU0laRSwgR0xfVU5TSUdORURfSU5UKSkKKyAgICB7Cisg
ICAgICAgIGRlbGV0ZSBtU3RyZWFtaW5nQnVmZmVySW50OworICAgICAgICBtU3RyZWFtaW5nQnVm
ZmVySW50ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIW1TdHJlYW1pbmdCdWZmZXJTaG9ydCkK
KyAgICB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSBib3RoIGJ1ZmZlcnMgYXJlIGRlbGV0ZWQuCisg
ICAgICAgIGRlbGV0ZSBtU3RyZWFtaW5nQnVmZmVySW50OworICAgICAgICBtU3RyZWFtaW5nQnVm
ZmVySW50ID0gTlVMTDsKKworICAgICAgICBFUlIoIkZhaWxlZCB0byBhbGxvY2F0ZSB0aGUgc3Ry
ZWFtaW5nIGluZGV4IGJ1ZmZlcihzKS4iKTsKKyAgICB9CisKKyAgICBtQ291bnRpbmdCdWZmZXIg
PSBOVUxMOworfQorCitJbmRleERhdGFNYW5hZ2VyOjp+SW5kZXhEYXRhTWFuYWdlcigpCit7Cisg
ICAgZGVsZXRlIG1TdHJlYW1pbmdCdWZmZXJTaG9ydDsKKyAgICBkZWxldGUgbVN0cmVhbWluZ0J1
ZmZlckludDsKKyAgICBkZWxldGUgbUNvdW50aW5nQnVmZmVyOworfQorCitzdGF0aWMgdW5zaWdu
ZWQgaW50IGluZGV4VHlwZVNpemUoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQor
ICAgIHsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOiAgIHJldHVybiBzaXplb2YoR0x1aW50
KTsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6IHJldHVybiBzaXplb2YoR0x1c2hvcnQp
OworICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAgcmV0dXJuIHNpemVvZihHTHVieXRlKTsK
KyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IHJldHVybiBzaXplb2YoR0x1c2hvcnQpOwor
ICAgIH0KK30KKworc3RhdGljIHZvaWQgY29udmVydEluZGljZXMoR0xlbnVtIHR5cGUsIGNvbnN0
IHZvaWQgKmlucHV0LCBHTHNpemVpIGNvdW50LCB2b2lkICpvdXRwdXQpCit7CisgICAgaWYgKHR5
cGUgPT0gR0xfVU5TSUdORURfQllURSkKKyAgICB7CisgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmlu
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KGlucHV0KTsKKyAgICAgICAgR0x1c2hvcnQg
Km91dCA9IHN0YXRpY19jYXN0PEdMdXNob3J0Kj4ob3V0cHV0KTsKKworICAgICAgICBmb3IgKEdM
c2l6ZWkgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBvdXRb
aV0gPSBpbltpXTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh0eXBlID09IEdMX1VO
U0lHTkVEX0lOVCkKKyAgICB7CisgICAgICAgIG1lbWNweShvdXRwdXQsIGlucHV0LCBjb3VudCAq
IHNpemVvZihHTHVpbnQpKTsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSBHTF9VTlNJR05F
RF9TSE9SVCkKKyAgICB7CisgICAgICAgIG1lbWNweShvdXRwdXQsIGlucHV0LCBjb3VudCAqIHNp
emVvZihHTHVzaG9ydCkpOworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBJbmRleFR5cGU+CitzdGF0aWMgdm9pZCBjb21wdXRlUmFuZ2UoY29uc3Qg
SW5kZXhUeXBlICppbmRpY2VzLCBHTHNpemVpIGNvdW50LCBHTHVpbnQgKm1pbkluZGV4LCBHTHVp
bnQgKm1heEluZGV4KQoreworICAgICptaW5JbmRleCA9IGluZGljZXNbMF07CisgICAgKm1heElu
ZGV4ID0gaW5kaWNlc1swXTsKKworICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IGNvdW50OyBp
KyspCisgICAgeworICAgICAgICBpZiAoKm1pbkluZGV4ID4gaW5kaWNlc1tpXSkgKm1pbkluZGV4
ID0gaW5kaWNlc1tpXTsKKyAgICAgICAgaWYgKCptYXhJbmRleCA8IGluZGljZXNbaV0pICptYXhJ
bmRleCA9IGluZGljZXNbaV07CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBjb21wdXRlUmFuZ2Uo
R0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgR0xzaXplaSBjb3VudCwgR0x1aW50
ICptaW5JbmRleCwgR0x1aW50ICptYXhJbmRleCkKK3sKKyAgICBpZiAodHlwZSA9PSBHTF9VTlNJ
R05FRF9CWVRFKQorICAgIHsKKyAgICAgICAgY29tcHV0ZVJhbmdlKHN0YXRpY19jYXN0PGNvbnN0
IEdMdWJ5dGUqPihpbmRpY2VzKSwgY291bnQsIG1pbkluZGV4LCBtYXhJbmRleCk7CisgICAgfQor
ICAgIGVsc2UgaWYgKHR5cGUgPT0gR0xfVU5TSUdORURfSU5UKQorICAgIHsKKyAgICAgICAgY29t
cHV0ZVJhbmdlKHN0YXRpY19jYXN0PGNvbnN0IEdMdWludCo+KGluZGljZXMpLCBjb3VudCwgbWlu
SW5kZXgsIG1heEluZGV4KTsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZSA9PSBHTF9VTlNJR05F
RF9TSE9SVCkKKyAgICB7CisgICAgICAgIGNvbXB1dGVSYW5nZShzdGF0aWNfY2FzdDxjb25zdCBH
THVzaG9ydCo+KGluZGljZXMpLCBjb3VudCwgbWluSW5kZXgsIG1heEluZGV4KTsKKyAgICB9Cisg
ICAgZWxzZSBVTlJFQUNIQUJMRSgpOworfQorCitHTGVudW0gSW5kZXhEYXRhTWFuYWdlcjo6cHJl
cGFyZUluZGV4RGF0YShHTGVudW0gdHlwZSwgR0xzaXplaSBjb3VudCwgZ2w6OkJ1ZmZlciAqYnVm
ZmVyLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIFRyYW5zbGF0ZWRJbmRleERhdGEgKnRyYW5zbGF0
ZWQpCit7CisgICAgaWYgKCFtU3RyZWFtaW5nQnVmZmVyU2hvcnQpCisgICAgeworICAgICAgICBy
ZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICB9CisKKyAgICBHTGVudW0gZGVzdGluYXRpb25J
bmRleFR5cGUgPSAodHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpID8gR0xfVU5TSUdORURfSU5UIDog
R0xfVU5TSUdORURfU0hPUlQ7CisgICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4oaW5kaWNlcyk7CisgICAgYm9vbCBhbGlnbmVkT2Zmc2V0ID0gZmFsc2U7CisK
KyAgICBCdWZmZXJTdG9yYWdlICpzdG9yYWdlID0gTlVMTDsKKworICAgIGlmIChidWZmZXIgIT0g
TlVMTCkKKyAgICB7CisgICAgICAgIHN0b3JhZ2UgPSBidWZmZXItPmdldFN0b3JhZ2UoKTsKKwor
ICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX0JZVEU6ICBhbGlnbmVkT2Zmc2V0ID0gKG9mZnNldCAlIHNpemVvZihHTHVieXRlKSA9PSAw
KTsgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6IGFsaWduZWRPZmZz
ZXQgPSAob2Zmc2V0ICUgc2l6ZW9mKEdMdXNob3J0KSA9PSAwKTsgYnJlYWs7CisgICAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9JTlQ6ICAgYWxpZ25lZE9mZnNldCA9IChvZmZzZXQgJSBzaXplb2Yo
R0x1aW50KSA9PSAwKTsgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OyBhbGlnbmVkT2Zmc2V0ID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW5kZXhU
eXBlU2l6ZSh0eXBlKSAqIGNvdW50ICsgb2Zmc2V0ID4gc3RvcmFnZS0+Z2V0U2l6ZSgpKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAg
IH0KKworICAgICAgICBpbmRpY2VzID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KHN0b3Jh
Z2UtPmdldERhdGEoKSkgKyBvZmZzZXQ7CisgICAgfQorCisgICAgU3RyZWFtaW5nSW5kZXhCdWZm
ZXJJbnRlcmZhY2UgKnN0cmVhbWluZ0J1ZmZlciA9ICh0eXBlID09IEdMX1VOU0lHTkVEX0lOVCkg
PyBtU3RyZWFtaW5nQnVmZmVySW50IDogbVN0cmVhbWluZ0J1ZmZlclNob3J0OworCisgICAgU3Rh
dGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+
Z2V0U3RhdGljSW5kZXhCdWZmZXIoKSA6IE5VTEw7CisgICAgSW5kZXhCdWZmZXJJbnRlcmZhY2Ug
KmluZGV4QnVmZmVyID0gc3RyZWFtaW5nQnVmZmVyOworICAgIGJvb2wgZGlyZWN0U3RvcmFnZSA9
IGFsaWduZWRPZmZzZXQgJiYgc3RvcmFnZSAmJiBzdG9yYWdlLT5zdXBwb3J0c0RpcmVjdEJpbmRp
bmcoKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uSW5kZXhUeXBlID09
IHR5cGU7CisgICAgVUlOVCBzdHJlYW1PZmZzZXQgPSAwOworCisgICAgaWYgKGRpcmVjdFN0b3Jh
Z2UpCisgICAgeworICAgICAgICBpbmRleEJ1ZmZlciA9IHN0cmVhbWluZ0J1ZmZlcjsKKyAgICAg
ICAgc3RyZWFtT2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICBzdG9yYWdlLT5tYXJrQnVmZmVyVXNh
Z2UoKTsKKyAgICAgICAgY29tcHV0ZVJhbmdlKHR5cGUsIGluZGljZXMsIGNvdW50LCAmdHJhbnNs
YXRlZC0+bWluSW5kZXgsICZ0cmFuc2xhdGVkLT5tYXhJbmRleCk7CisgICAgfQorICAgIGVsc2Ug
aWYgKHN0YXRpY0J1ZmZlciAmJiBzdGF0aWNCdWZmZXItPmdldEJ1ZmZlclNpemUoKSAhPSAwICYm
IHN0YXRpY0J1ZmZlci0+Z2V0SW5kZXhUeXBlKCkgPT0gdHlwZSAmJiBhbGlnbmVkT2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgaW5kZXhCdWZmZXIgPSBzdGF0aWNCdWZmZXI7CisgICAgICAgIHN0cmVh
bU9mZnNldCA9IHN0YXRpY0J1ZmZlci0+bG9va3VwUmFuZ2Uob2Zmc2V0LCBjb3VudCwgJnRyYW5z
bGF0ZWQtPm1pbkluZGV4LCAmdHJhbnNsYXRlZC0+bWF4SW5kZXgpOworCisgICAgICAgIGlmIChz
dHJlYW1PZmZzZXQgPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9
IChvZmZzZXQgLyBpbmRleFR5cGVTaXplKHR5cGUpKSAqIGluZGV4VHlwZVNpemUoZGVzdGluYXRp
b25JbmRleFR5cGUpOworICAgICAgICAgICAgY29tcHV0ZVJhbmdlKHR5cGUsIGluZGljZXMsIGNv
dW50LCAmdHJhbnNsYXRlZC0+bWluSW5kZXgsICZ0cmFuc2xhdGVkLT5tYXhJbmRleCk7CisgICAg
ICAgICAgICBzdGF0aWNCdWZmZXItPmFkZFJhbmdlKG9mZnNldCwgY291bnQsIHRyYW5zbGF0ZWQt
Pm1pbkluZGV4LCB0cmFuc2xhdGVkLT5tYXhJbmRleCwgc3RyZWFtT2Zmc2V0KTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpbnQgY29udmVydENvdW50ID0gY291
bnQ7CisKKyAgICAgICAgaWYgKHN0YXRpY0J1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHN0YXRpY0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpID09IDAgJiYgYWxpZ25lZE9mZnNldCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbmRleEJ1ZmZlciA9IHN0YXRpY0J1ZmZl
cjsKKyAgICAgICAgICAgICAgICBjb252ZXJ0Q291bnQgPSBzdG9yYWdlLT5nZXRTaXplKCkgLyBp
bmRleFR5cGVTaXplKHR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGJ1ZmZlci0+aW52YWxpZGF0ZVN0YXRpY0RhdGEo
KTsKKyAgICAgICAgICAgICAgICBzdGF0aWNCdWZmZXIgPSBOVUxMOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpbmRleEJ1ZmZlcikKKyAgICAgICAgeworICAgICAg
ICAgICAgRVJSKCJObyB2YWxpZCBpbmRleCBidWZmZXIuIik7CisgICAgICAgICAgICByZXR1cm4g
R0xfSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBpbnQg
YnVmZmVyU2l6ZVJlcXVpcmVkID0gY29udmVydENvdW50ICogaW5kZXhUeXBlU2l6ZShkZXN0aW5h
dGlvbkluZGV4VHlwZSk7CisgICAgICAgIGluZGV4QnVmZmVyLT5yZXNlcnZlQnVmZmVyU3BhY2Uo
YnVmZmVyU2l6ZVJlcXVpcmVkLCB0eXBlKTsKKworICAgICAgICB2b2lkKiBvdXRwdXQgPSBOVUxM
OworICAgICAgICBzdHJlYW1PZmZzZXQgPSBpbmRleEJ1ZmZlci0+bWFwQnVmZmVyKGJ1ZmZlclNp
emVSZXF1aXJlZCwgJm91dHB1dCk7CisgICAgICAgIGlmIChzdHJlYW1PZmZzZXQgPT0gLTEgfHwg
b3V0cHV0ID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIG1h
cCBpbmRleCBidWZmZXIuIik7CisgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsK
KyAgICAgICAgfQorCisgICAgICAgIGNvbnZlcnRJbmRpY2VzKHR5cGUsIHN0YXRpY0J1ZmZlciA/
IHN0b3JhZ2UtPmdldERhdGEoKSA6IGluZGljZXMsIGNvbnZlcnRDb3VudCwgb3V0cHV0KTsKKwor
ICAgICAgICBpZiAoIWluZGV4QnVmZmVyLT51bm1hcEJ1ZmZlcigpKQorICAgICAgICB7CisgICAg
ICAgICAgICBFUlIoIkZhaWxlZCB0byB1bm1hcCBpbmRleCBidWZmZXIuIik7CisgICAgICAgICAg
ICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXB1dGVS
YW5nZSh0eXBlLCBpbmRpY2VzLCBjb3VudCwgJnRyYW5zbGF0ZWQtPm1pbkluZGV4LCAmdHJhbnNs
YXRlZC0+bWF4SW5kZXgpOworCisgICAgICAgIGlmIChzdGF0aWNCdWZmZXIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9IChvZmZzZXQgLyBpbmRleFR5cGVTaXplKHR5cGUp
KSAqIGluZGV4VHlwZVNpemUoZGVzdGluYXRpb25JbmRleFR5cGUpOworICAgICAgICAgICAgc3Rh
dGljQnVmZmVyLT5hZGRSYW5nZShvZmZzZXQsIGNvdW50LCB0cmFuc2xhdGVkLT5taW5JbmRleCwg
dHJhbnNsYXRlZC0+bWF4SW5kZXgsIHN0cmVhbU9mZnNldCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB0cmFuc2xhdGVkLT5zdG9yYWdlID0gZGlyZWN0U3RvcmFnZSA/IHN0b3JhZ2UgOiBOVUxM
OworICAgIHRyYW5zbGF0ZWQtPmluZGV4QnVmZmVyID0gaW5kZXhCdWZmZXItPmdldEluZGV4QnVm
ZmVyKCk7CisgICAgdHJhbnNsYXRlZC0+c2VyaWFsID0gZGlyZWN0U3RvcmFnZSA/IHN0b3JhZ2Ut
PmdldFNlcmlhbCgpIDogaW5kZXhCdWZmZXItPmdldFNlcmlhbCgpOworICAgIHRyYW5zbGF0ZWQt
PnN0YXJ0SW5kZXggPSBzdHJlYW1PZmZzZXQgLyBpbmRleFR5cGVTaXplKGRlc3RpbmF0aW9uSW5k
ZXhUeXBlKTsKKyAgICB0cmFuc2xhdGVkLT5zdGFydE9mZnNldCA9IHN0cmVhbU9mZnNldDsKKwor
ICAgIGlmIChidWZmZXIpCisgICAgeworICAgICAgICBidWZmZXItPnByb21vdGVTdGF0aWNVc2Fn
ZShjb3VudCAqIGluZGV4VHlwZVNpemUodHlwZSkpOworICAgIH0KKworICAgIHJldHVybiBHTF9O
T19FUlJPUjsKK30KKworU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKkluZGV4RGF0YU1hbmFn
ZXI6OmdldENvdW50aW5nSW5kaWNlcyhHTHNpemVpIGNvdW50KQoreworICAgIGlmIChjb3VudCA8
PSA2NTUzNikgICAvLyAxNi1iaXQgaW5kaWNlcworICAgIHsKKyAgICAgICAgY29uc3QgdW5zaWdu
ZWQgaW50IHNwYWNlTmVlZGVkID0gY291bnQgKiBzaXplb2YodW5zaWduZWQgc2hvcnQpOworCisg
ICAgICAgIGlmICghbUNvdW50aW5nQnVmZmVyIHx8IG1Db3VudGluZ0J1ZmZlci0+Z2V0QnVmZmVy
U2l6ZSgpIDwgc3BhY2VOZWVkZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSBtQ291
bnRpbmdCdWZmZXI7CisgICAgICAgICAgICBtQ291bnRpbmdCdWZmZXIgPSBuZXcgU3RhdGljSW5k
ZXhCdWZmZXJJbnRlcmZhY2UobVJlbmRlcmVyKTsKKyAgICAgICAgICAgIG1Db3VudGluZ0J1ZmZl
ci0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKHNwYWNlTmVlZGVkLCBHTF9VTlNJR05FRF9TSE9SVCk7CisK
KyAgICAgICAgICAgIHZvaWQqIG1hcHBlZE1lbW9yeSA9IE5VTEw7CisgICAgICAgICAgICBpZiAo
bUNvdW50aW5nQnVmZmVyLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnkpID09
IC0xIHx8IG1hcHBlZE1lbW9yeSA9PSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIEVSUigiRmFpbGVkIHRvIG1hcCBjb3VudGluZyBidWZmZXIuIik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHVuc2lnbmVkIHNo
b3J0ICpkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBzaG9ydCo+KG1hcHBlZE1lbW9y
eSk7CisgICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBkYXRhW2ldID0gaTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCFtQ291bnRpbmdCdWZmZXItPnVubWFwQnVmZmVyKCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gdW5tYXAgY291bnRpbmcgYnVmZmVy
LiIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIGVsc2UgaWYgKG1TdHJlYW1pbmdCdWZmZXJJbnQpICAgLy8gMzItYml0
IGluZGljZXMgc3VwcG9ydGVkCisgICAgeworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgc3Bh
Y2VOZWVkZWQgPSBjb3VudCAqIHNpemVvZih1bnNpZ25lZCBpbnQpOworCisgICAgICAgIGlmICgh
bUNvdW50aW5nQnVmZmVyIHx8IG1Db3VudGluZ0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpIDwgc3Bh
Y2VOZWVkZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSBtQ291bnRpbmdCdWZmZXI7
CisgICAgICAgICAgICBtQ291bnRpbmdCdWZmZXIgPSBuZXcgU3RhdGljSW5kZXhCdWZmZXJJbnRl
cmZhY2UobVJlbmRlcmVyKTsKKyAgICAgICAgICAgIG1Db3VudGluZ0J1ZmZlci0+cmVzZXJ2ZUJ1
ZmZlclNwYWNlKHNwYWNlTmVlZGVkLCBHTF9VTlNJR05FRF9JTlQpOworCisgICAgICAgICAgICB2
b2lkKiBtYXBwZWRNZW1vcnkgPSBOVUxMOworICAgICAgICAgICAgaWYgKG1Db3VudGluZ0J1ZmZl
ci0+bWFwQnVmZmVyKHNwYWNlTmVlZGVkLCAmbWFwcGVkTWVtb3J5KSA9PSAtMSB8fCBtYXBwZWRN
ZW1vcnkgPT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFUlIoIkZhaWxl
ZCB0byBtYXAgY291bnRpbmcgYnVmZmVyLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxM
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmRhdGEgPSByZWlu
dGVycHJldF9jYXN0PHVuc2lnbmVkIGludCo+KG1hcHBlZE1lbW9yeSk7CisgICAgICAgICAgICBm
b3IoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBkYXRhW2ldID0gaTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFtQ291
bnRpbmdCdWZmZXItPnVubWFwQnVmZmVyKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgRVJSKCJGYWlsZWQgdG8gdW5tYXAgY291bnRpbmcgYnVmZmVyLiIpOworICAgICAgICAgICAg
ICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBtQ291
bnRpbmdCdWZmZXI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5kZXhEYXRhTWFuYWdl
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEluZGV4RGF0YU1hbmFnZXIuaDogRGVmaW5lcyB0
aGUgSW5kZXhEYXRhTWFuYWdlciwgYSBjbGFzcyB0aGF0CisvLyBydW5zIHRoZSBCdWZmZXIgdHJh
bnNsYXRpb24gcHJvY2VzcyBmb3IgaW5kZXggYnVmZmVycy4KKworI2lmbmRlZiBMSUJHTEVTVjJf
SU5ERVhEQVRBTUFOQUdFUl9IXworI2RlZmluZSBMSUJHTEVTVjJfSU5ERVhEQVRBTUFOQUdFUl9I
XworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlCit7CisgICAg
ZW51bSB7IElOSVRJQUxfSU5ERVhfQlVGRkVSX1NJWkUgPSA0MDk2ICogc2l6ZW9mKEdMdWludCkg
fTsKK30KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBCdWZmZXI7Cit9CisKK25hbWVzcGFjZSBy
eAoreworY2xhc3MgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U7CitjbGFzcyBTdHJlYW1pbmdJ
bmRleEJ1ZmZlckludGVyZmFjZTsKK2NsYXNzIEluZGV4QnVmZmVyOworY2xhc3MgQnVmZmVyU3Rv
cmFnZTsKK2NsYXNzIFJlbmRlcmVyOworCitzdHJ1Y3QgVHJhbnNsYXRlZEluZGV4RGF0YQorewor
ICAgIHVuc2lnbmVkIGludCBtaW5JbmRleDsKKyAgICB1bnNpZ25lZCBpbnQgbWF4SW5kZXg7Cisg
ICAgdW5zaWduZWQgaW50IHN0YXJ0SW5kZXg7CisgICAgdW5zaWduZWQgaW50IHN0YXJ0T2Zmc2V0
OyAgIC8vIEluIGJ5dGVzCisKKyAgICBJbmRleEJ1ZmZlciAqaW5kZXhCdWZmZXI7CisgICAgQnVm
ZmVyU3RvcmFnZSAqc3RvcmFnZTsKKyAgICB1bnNpZ25lZCBpbnQgc2VyaWFsOworfTsKKworY2xh
c3MgSW5kZXhEYXRhTWFuYWdlcgoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgSW5kZXhEYXRh
TWFuYWdlcihSZW5kZXJlciAqcmVuZGVyZXIpOworICAgIHZpcnR1YWwgfkluZGV4RGF0YU1hbmFn
ZXIoKTsKKworICAgIEdMZW51bSBwcmVwYXJlSW5kZXhEYXRhKEdMZW51bSB0eXBlLCBHTHNpemVp
IGNvdW50LCBnbDo6QnVmZmVyICphcnJheUVsZW1lbnRCdWZmZXIsIGNvbnN0IEdMdm9pZCAqaW5k
aWNlcywgVHJhbnNsYXRlZEluZGV4RGF0YSAqdHJhbnNsYXRlZCk7CisgICAgU3RhdGljSW5kZXhC
dWZmZXJJbnRlcmZhY2UgKmdldENvdW50aW5nSW5kaWNlcyhHTHNpemVpIGNvdW50KTsKKworICBw
cml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihJbmRleERhdGFNYW5hZ2VyKTsK
KworICAgIFJlbmRlcmVyICpjb25zdCBtUmVuZGVyZXI7CisKKyAgICBTdHJlYW1pbmdJbmRleEJ1
ZmZlckludGVyZmFjZSAqbVN0cmVhbWluZ0J1ZmZlclNob3J0OworICAgIFN0cmVhbWluZ0luZGV4
QnVmZmVySW50ZXJmYWNlICptU3RyZWFtaW5nQnVmZmVySW50OworICAgIFN0YXRpY0luZGV4QnVm
ZmVySW50ZXJmYWNlICptQ291bnRpbmdCdWZmZXI7Cit9OworCit9CisKKyNlbmRpZiAgIC8vIExJ
QkdMRVNWMl9JTkRFWERBVEFNQU5BR0VSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRM
YXlvdXRDYWNoZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE2NiBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gSW5wdXRMYXlvdXRDYWNoZS5jcHA6IERlZmluZXMgSW5wdXRMYXlvdXRDYWNoZSwgYSBj
bGFzcyB0aGF0IGJ1aWxkcyBhbmQgY2FjaGVzCisvLyBEM0QxMSBpbnB1dCBsYXlvdXRzLgorCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRl
cmVyL1NoYWRlckV4ZWN1dGFibGUxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9Qcm9ncmFtQmlu
YXJ5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIuaCIKKworI2luY2x1ZGUgInRoaXJkX3BhcnR5
L211cm11cmhhc2gvTXVybXVySGFzaDMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NvbnN0IHVu
c2lnbmVkIGludCBJbnB1dExheW91dENhY2hlOjprTWF4SW5wdXRMYXlvdXRzID0gMTAyNDsKKwor
SW5wdXRMYXlvdXRDYWNoZTo6SW5wdXRMYXlvdXRDYWNoZSgpIDogbUlucHV0TGF5b3V0TWFwKGtN
YXhJbnB1dExheW91dHMsIGhhc2hJbnB1dExheW91dCwgY29tcGFyZUlucHV0TGF5b3V0cykKK3sK
KyAgICBtQ291bnRlciA9IDA7CisgICAgbURldmljZSA9IE5VTEw7CisgICAgbURldmljZUNvbnRl
eHQgPSBOVUxMOworfQorCitJbnB1dExheW91dENhY2hlOjp+SW5wdXRMYXlvdXRDYWNoZSgpCit7
CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBJbnB1dExheW91dENhY2hlOjppbml0aWFsaXplKElE
M0QxMURldmljZSAqZGV2aWNlLCBJRDNEMTFEZXZpY2VDb250ZXh0ICpjb250ZXh0KQoreworICAg
IGNsZWFyKCk7CisgICAgbURldmljZSA9IGRldmljZTsKKyAgICBtRGV2aWNlQ29udGV4dCA9IGNv
bnRleHQ7Cit9CisKK3ZvaWQgSW5wdXRMYXlvdXRDYWNoZTo6Y2xlYXIoKQoreworICAgIGZvciAo
SW5wdXRMYXlvdXRNYXA6Oml0ZXJhdG9yIGkgPSBtSW5wdXRMYXlvdXRNYXAuYmVnaW4oKTsgaSAh
PSBtSW5wdXRMYXlvdXRNYXAuZW5kKCk7IGkrKykKKyAgICB7CisgICAgICAgIGktPnNlY29uZC5p
bnB1dExheW91dC0+UmVsZWFzZSgpOworICAgIH0KKyAgICBtSW5wdXRMYXlvdXRNYXAuY2xlYXIo
KTsKK30KKworR0xlbnVtIElucHV0TGF5b3V0Q2FjaGU6OmFwcGx5VmVydGV4QnVmZmVycyhUcmFu
c2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU10sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpQcm9ncmFtQmluYXJ5
ICpwcm9ncmFtQmluYXJ5KQoreworICAgIGludCBzb3J0ZWRTZW1hbnRpY0luZGljZXNbZ2w6Ok1B
WF9WRVJURVhfQVRUUklCU107CisgICAgcHJvZ3JhbUJpbmFyeS0+c29ydEF0dHJpYnV0ZXNCeUxh
eW91dChhdHRyaWJ1dGVzLCBzb3J0ZWRTZW1hbnRpY0luZGljZXMpOworCisgICAgaWYgKCFtRGV2
aWNlIHx8ICFtRGV2aWNlQ29udGV4dCkKKyAgICB7CisgICAgICAgIEVSUigiSW5wdXRMYXlvdXRD
YWNoZSBpcyBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBHTF9JTlZBTElEX09Q
RVJBVElPTjsKKyAgICB9CisKKyAgICBJbnB1dExheW91dEtleSBpbEtleSA9IHsgMCB9OworCisg
ICAgSUQzRDExQnVmZmVyICp2ZXJ0ZXhCdWZmZXJzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdID0g
eyBOVUxMIH07CisgICAgVUlOVCB2ZXJ0ZXhTdHJpZGVzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNd
ID0geyAwIH07CisgICAgVUlOVCB2ZXJ0ZXhPZmZzZXRzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNd
ID0geyAwIH07CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc2VtYW50aWNOYW1lID0gIlRFWENP
T1JEIjsKKworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhf
QVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXNbaV0uYWN0aXZlKQor
ICAgICAgICB7CisgICAgICAgICAgICBWZXJ0ZXhCdWZmZXIxMSAqdmVydGV4QnVmZmVyID0gVmVy
dGV4QnVmZmVyMTE6Om1ha2VWZXJ0ZXhCdWZmZXIxMShhdHRyaWJ1dGVzW2ldLnZlcnRleEJ1ZmZl
cik7CisgICAgICAgICAgICBCdWZmZXJTdG9yYWdlMTEgKmJ1ZmZlclN0b3JhZ2UgPSBhdHRyaWJ1
dGVzW2ldLnN0b3JhZ2UgPyBCdWZmZXJTdG9yYWdlMTE6Om1ha2VCdWZmZXJTdG9yYWdlMTEoYXR0
cmlidXRlc1tpXS5zdG9yYWdlKSA6IE5VTEw7CisKKyAgICAgICAgICAgIEQzRDExX0lOUFVUX0NM
QVNTSUZJQ0FUSU9OIGlucHV0Q2xhc3MgPSBhdHRyaWJ1dGVzW2ldLmRpdmlzb3IgPiAwID8gRDNE
MTFfSU5QVVRfUEVSX0lOU1RBTkNFX0RBVEEgOiBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEE7
CisKKyAgICAgICAgICAgIC8vIFJlY29yZCB0aGUgdHlwZSBvZiB0aGUgYXNzb2NpYXRlZCB2ZXJ0
ZXggc2hhZGVyIHZlY3RvciBpbiBvdXIga2V5CisgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcHJl
dmVudCBtaXNtYXRjaGVkIHZlcnRleCBzaGFkZXJzIGZyb20gdXNpbmcgdGhlIHNhbWUgaW5wdXQg
bGF5b3V0CisgICAgICAgICAgICBHTGludCBhdHRyaWJ1dGVTaXplOworICAgICAgICAgICAgcHJv
Z3JhbUJpbmFyeS0+Z2V0QWN0aXZlQXR0cmlidXRlKGlsS2V5LmVsZW1lbnRDb3VudCwgMCwgTlVM
TCwgJmF0dHJpYnV0ZVNpemUsICZpbEtleS5nbHNsRWxlbWVudFR5cGVbaWxLZXkuZWxlbWVudENv
dW50XSwgTlVMTCk7CisKKyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRD
b3VudF0uU2VtYW50aWNOYW1lID0gc2VtYW50aWNOYW1lOworICAgICAgICAgICAgaWxLZXkuZWxl
bWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5TZW1hbnRpY0luZGV4ID0gc29ydGVkU2VtYW50aWNJ
bmRpY2VzW2ldOworICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxLZXkuZWxlbWVudENvdW50
XS5Gb3JtYXQgPSBhdHRyaWJ1dGVzW2ldLmF0dHJpYnV0ZS0+bUFycmF5RW5hYmxlZCA/IHZlcnRl
eEJ1ZmZlci0+Z2V0RFhHSUZvcm1hdCgqYXR0cmlidXRlc1tpXS5hdHRyaWJ1dGUpIDogRFhHSV9G
T1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOworICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxL
ZXkuZWxlbWVudENvdW50XS5JbnB1dFNsb3QgPSBpOworICAgICAgICAgICAgaWxLZXkuZWxlbWVu
dHNbaWxLZXkuZWxlbWVudENvdW50XS5BbGlnbmVkQnl0ZU9mZnNldCA9IDA7CisgICAgICAgICAg
ICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLklucHV0U2xvdENsYXNzID0gaW5w
dXRDbGFzczsKKyAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0u
SW5zdGFuY2VEYXRhU3RlcFJhdGUgPSBhdHRyaWJ1dGVzW2ldLmRpdmlzb3I7CisgICAgICAgICAg
ICBpbEtleS5lbGVtZW50Q291bnQrKzsKKworICAgICAgICAgICAgdmVydGV4QnVmZmVyc1tpXSA9
IGJ1ZmZlclN0b3JhZ2UgPyBidWZmZXJTdG9yYWdlLT5nZXRCdWZmZXIoKSA6IHZlcnRleEJ1ZmZl
ci0+Z2V0QnVmZmVyKCk7CisgICAgICAgICAgICB2ZXJ0ZXhTdHJpZGVzW2ldID0gYXR0cmlidXRl
c1tpXS5zdHJpZGU7CisgICAgICAgICAgICB2ZXJ0ZXhPZmZzZXRzW2ldID0gYXR0cmlidXRlc1tp
XS5vZmZzZXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBJRDNEMTFJbnB1dExheW91dCAqaW5w
dXRMYXlvdXQgPSBOVUxMOworCisgICAgSW5wdXRMYXlvdXRNYXA6Oml0ZXJhdG9yIGkgPSBtSW5w
dXRMYXlvdXRNYXAuZmluZChpbEtleSk7CisgICAgaWYgKGkgIT0gbUlucHV0TGF5b3V0TWFwLmVu
ZCgpKQorICAgIHsKKyAgICAgICAgaW5wdXRMYXlvdXQgPSBpLT5zZWNvbmQuaW5wdXRMYXlvdXQ7
CisgICAgICAgIGktPnNlY29uZC5sYXN0VXNlZFRpbWUgPSBtQ291bnRlcisrOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBTaGFkZXJFeGVjdXRhYmxlMTEgKnNoYWRlciA9IFNoYWRl
ckV4ZWN1dGFibGUxMTo6bWFrZVNoYWRlckV4ZWN1dGFibGUxMShwcm9ncmFtQmluYXJ5LT5nZXRW
ZXJ0ZXhFeGVjdXRhYmxlKCkpOworCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+
Q3JlYXRlSW5wdXRMYXlvdXQoaWxLZXkuZWxlbWVudHMsIGlsS2V5LmVsZW1lbnRDb3VudCwgc2hh
ZGVyLT5nZXRGdW5jdGlvbigpLCBzaGFkZXItPmdldExlbmd0aCgpLCAmaW5wdXRMYXlvdXQpOwor
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigi
RmFpbGVkIHRvIGNyYXRlIGlucHV0IGxheW91dCwgcmVzdWx0OiAweCUwOHgiLCByZXN1bHQpOwor
ICAgICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfT1BFUkFUSU9OOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKG1JbnB1dExheW91dE1hcC5zaXplKCkgPj0ga01heElucHV0TGF5b3V0cykKKyAg
ICAgICAgeworICAgICAgICAgICAgVFJBQ0UoIk92ZXJmbG93ZWQgdGhlIGxpbWl0IG9mICV1IGlu
cHV0IGxheW91dHMsIHJlbW92aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkICIKKyAgICAgICAg
ICAgICAgICAgICJ0byBtYWtlIHJvb20uIiwga01heElucHV0TGF5b3V0cyk7CisKKyAgICAgICAg
ICAgIElucHV0TGF5b3V0TWFwOjppdGVyYXRvciBsZWFzdFJlY2VudGx5VXNlZCA9IG1JbnB1dExh
eW91dE1hcC5iZWdpbigpOworICAgICAgICAgICAgZm9yIChJbnB1dExheW91dE1hcDo6aXRlcmF0
b3IgaSA9IG1JbnB1dExheW91dE1hcC5iZWdpbigpOyBpICE9IG1JbnB1dExheW91dE1hcC5lbmQo
KTsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpLT5zZWNvbmQubGFz
dFVzZWRUaW1lIDwgbGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5sYXN0VXNlZFRpbWUpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNlZCA9IGk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVhc3RSZWNl
bnRseVVzZWQtPnNlY29uZC5pbnB1dExheW91dC0+UmVsZWFzZSgpOworICAgICAgICAgICAgbUlu
cHV0TGF5b3V0TWFwLmVyYXNlKGxlYXN0UmVjZW50bHlVc2VkKTsKKyAgICAgICAgfQorCisgICAg
ICAgIElucHV0TGF5b3V0Q291bnRlclBhaXIgaW5wdXRDb3VudGVyUGFpcjsKKyAgICAgICAgaW5w
dXRDb3VudGVyUGFpci5pbnB1dExheW91dCA9IGlucHV0TGF5b3V0OworICAgICAgICBpbnB1dENv
dW50ZXJQYWlyLmxhc3RVc2VkVGltZSA9IG1Db3VudGVyKys7CisKKyAgICAgICAgbUlucHV0TGF5
b3V0TWFwLmluc2VydChzdGQ6Om1ha2VfcGFpcihpbEtleSwgaW5wdXRDb3VudGVyUGFpcikpOwor
ICAgIH0KKworICAgIG1EZXZpY2VDb250ZXh0LT5JQVNldElucHV0TGF5b3V0KGlucHV0TGF5b3V0
KTsKKyAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIGdsOjpNQVhfVkVS
VEVYX0FUVFJJQlMsIHZlcnRleEJ1ZmZlcnMsIHZlcnRleFN0cmlkZXMsIHZlcnRleE9mZnNldHMp
OworCisgICAgcmV0dXJuIEdMX05PX0VSUk9SOworfQorCitzdGQ6OnNpemVfdCBJbnB1dExheW91
dENhY2hlOjpoYXNoSW5wdXRMYXlvdXQoY29uc3QgSW5wdXRMYXlvdXRLZXkgJmlucHV0TGF5b3V0
KQoreworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgc2VlZCA9IDB4REVBREJFRUY7CisK
KyAgICBzdGQ6OnNpemVfdCBoYXNoID0gMDsKKyAgICBNdXJtdXJIYXNoM194ODZfMzIoJmlucHV0
TGF5b3V0LCBzaXplb2YoSW5wdXRMYXlvdXRLZXkpLCBzZWVkLCAmaGFzaCk7CisgICAgcmV0dXJu
IGhhc2g7Cit9CisKK2Jvb2wgSW5wdXRMYXlvdXRDYWNoZTo6Y29tcGFyZUlucHV0TGF5b3V0cyhj
b25zdCBJbnB1dExheW91dEtleSAmYSwgY29uc3QgSW5wdXRMYXlvdXRLZXkgJmIpCit7CisgICAg
cmV0dXJuIG1lbWNtcCgmYSwgJmIsIHNpemVvZihJbnB1dExheW91dEtleSkpID09IDA7Cit9CisK
K30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
SW5wdXRMYXlvdXRDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvSW5wdXRMYXlvdXRDYWNoZS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9JbnB1dExh
eW91dENhY2hlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBJbnB1dExheW91dENhY2hlLmg6IERlZmluZXMgSW5wdXRMYXlvdXRDYWNoZSwgYSBjbGFz
cyB0aGF0IGJ1aWxkcyBhbmQgY2FjaGVzCisvLyBEM0QxMSBpbnB1dCBsYXlvdXRzLgorCisjaWZu
ZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9JTlBVVExBWU9VVENBQ0hFX0hfCisjZGVmaW5lIExJQkdM
RVNWMl9SRU5ERVJFUl9JTlBVVExBWU9VVENBQ0hFX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIv
Q29uc3RhbnRzLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNl
IGdsCit7CitjbGFzcyBQcm9ncmFtQmluYXJ5OworfQorCituYW1lc3BhY2UgcngKK3sKK3N0cnVj
dCBUcmFuc2xhdGVkQXR0cmlidXRlOworCitjbGFzcyBJbnB1dExheW91dENhY2hlCit7CisgIHB1
YmxpYzoKKyAgICBJbnB1dExheW91dENhY2hlKCk7CisgICAgdmlydHVhbCB+SW5wdXRMYXlvdXRD
YWNoZSgpOworCisgICAgdm9pZCBpbml0aWFsaXplKElEM0QxMURldmljZSAqZGV2aWNlLCBJRDNE
MTFEZXZpY2VDb250ZXh0ICpjb250ZXh0KTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICBHTGVu
dW0gYXBwbHlWZXJ0ZXhCdWZmZXJzKFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tnbDo6
TUFYX1ZFUlRFWF9BVFRSSUJTXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpQ
cm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5KTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTihJbnB1dExheW91dENhY2hlKTsKKworICAgIHN0cnVjdCBJbnB1dExh
eW91dEtleQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGVsZW1lbnRDb3VudDsKKyAgICAg
ICAgRDNEMTFfSU5QVVRfRUxFTUVOVF9ERVNDIGVsZW1lbnRzW2dsOjpNQVhfVkVSVEVYX0FUVFJJ
QlNdOworICAgICAgICBHTGVudW0gZ2xzbEVsZW1lbnRUeXBlW2dsOjpNQVhfVkVSVEVYX0FUVFJJ
QlNdOworICAgIH07CisKKyAgICBzdHJ1Y3QgSW5wdXRMYXlvdXRDb3VudGVyUGFpcgorICAgIHsK
KyAgICAgICAgSUQzRDExSW5wdXRMYXlvdXQgKmlucHV0TGF5b3V0OworICAgICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgbGFzdFVzZWRUaW1lOworICAgIH07CisKKyAgICBzdGF0aWMgc3RkOjpzaXpl
X3QgaGFzaElucHV0TGF5b3V0KGNvbnN0IElucHV0TGF5b3V0S2V5ICZpbnB1dExheW91dCk7Cisg
ICAgc3RhdGljIGJvb2wgY29tcGFyZUlucHV0TGF5b3V0cyhjb25zdCBJbnB1dExheW91dEtleSAm
YSwgY29uc3QgSW5wdXRMYXlvdXRLZXkgJmIpOworCisgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAo
KklucHV0TGF5b3V0SGFzaEZ1bmN0aW9uKShjb25zdCBJbnB1dExheW91dEtleSAmKTsKKyAgICB0
eXBlZGVmIGJvb2wgKCpJbnB1dExheW91dEVxdWFsaXR5RnVuY3Rpb24pKGNvbnN0IElucHV0TGF5
b3V0S2V5ICYsIGNvbnN0IElucHV0TGF5b3V0S2V5ICYpOworICAgIHR5cGVkZWYgc3RkOjp1bm9y
ZGVyZWRfbWFwPElucHV0TGF5b3V0S2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElucHV0TGF5b3V0Q291bnRlclBhaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW5wdXRMYXlvdXRIYXNoRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW5wdXRMYXlvdXRFcXVhbGl0eUZ1bmN0aW9uPiBJbnB1dExheW91dE1hcDsKKyAgICBJbnB1dExh
eW91dE1hcCBtSW5wdXRMYXlvdXRNYXA7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50
IGtNYXhJbnB1dExheW91dHM7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbUNvdW50ZXI7CisK
KyAgICBJRDNEMTFEZXZpY2UgKm1EZXZpY2U7CisgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqbURl
dmljZUNvbnRleHQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfSU5Q
VVRMQVlPVVRDQUNIRV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9RdWVyeTkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnk5LmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnk5LmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjUgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5o
IgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIFF1ZXJ5OS5jcHA6IERlZmluZXMgdGhlIHJ4OjpRdWVyeTkg
Y2xhc3Mgd2hpY2ggaW1wbGVtZW50cyByeDo6UXVlcnlJbXBsLgorCisKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvUXVlcnk5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKyNp
bmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmgiCisjaW5jbHVkZSAi
bGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgorCituYW1lc3BhY2UgcngKK3sKKworUXVl
cnk5OjpRdWVyeTkocng6OlJlbmRlcmVyOSAqcmVuZGVyZXIsIEdMZW51bSB0eXBlKSA6IFF1ZXJ5
SW1wbCh0eXBlKQoreworICAgIG1SZW5kZXJlciA9IHJlbmRlcmVyOworICAgIG1RdWVyeSA9IE5V
TEw7Cit9CisKK1F1ZXJ5OTo6flF1ZXJ5OSgpCit7CisgICAgaWYgKG1RdWVyeSkKKyAgICB7Cisg
ICAgICAgIG1RdWVyeS0+UmVsZWFzZSgpOworICAgICAgICBtUXVlcnkgPSBOVUxMOworICAgIH0K
K30KKwordm9pZCBRdWVyeTk6OmJlZ2luKCkKK3sKKyAgICBpZiAobVF1ZXJ5ID09IE5VTEwpCisg
ICAgeworICAgICAgICBpZiAoRkFJTEVEKG1SZW5kZXJlci0+Z2V0RGV2aWNlKCktPkNyZWF0ZVF1
ZXJ5KEQzRFFVRVJZVFlQRV9PQ0NMVVNJT04sICZtUXVlcnkpKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIEhSRVNVTFQgcmVzdWx0ID0gbVF1ZXJ5LT5Jc3N1ZShEM0RJU1NVRV9CRUdJTik7
CisgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKK30KKwordm9pZCBRdWVyeTk6OmVuZCgp
Cit7CisgICAgaWYgKG1RdWVyeSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisgICAgSFJFU1VMVCByZXN1bHQg
PSBtUXVlcnktPklzc3VlKEQzRElTU1VFX0VORCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1
bHQpKTsKKworICAgIG1TdGF0dXMgPSBHTF9GQUxTRTsKKyAgICBtUmVzdWx0ID0gR0xfRkFMU0U7
Cit9CisKK0dMdWludCBRdWVyeTk6OmdldFJlc3VsdCgpCit7CisgICAgaWYgKG1RdWVyeSAhPSBO
VUxMKQorICAgIHsKKyAgICAgICAgd2hpbGUgKCF0ZXN0UXVlcnkoKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgU2xlZXAoMCk7CisgICAgICAgICAgICAvLyBleHBsaWNpdGx5IGNoZWNrIGZvciBk
ZXZpY2UgbG9zcworICAgICAgICAgICAgLy8gc29tZSBkcml2ZXJzIHNlZW0gdG8gcmV0dXJuIFNf
RkFMU0UgZXZlbiBpZiB0aGUgZGV2aWNlIGlzIGxvc3QKKyAgICAgICAgICAgIC8vIGluc3RlYWQg
b2YgRDNERVJSX0RFVklDRUxPU1QgbGlrZSB0aGV5IHNob3VsZAorICAgICAgICAgICAgaWYgKG1S
ZW5kZXJlci0+dGVzdERldmljZUxvc3QodHJ1ZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtUmVzdWx0OworfQorCitHTGJvb2xl
YW4gUXVlcnk5Ojppc1Jlc3VsdEF2YWlsYWJsZSgpCit7CisgICAgaWYgKG1RdWVyeSAhPSBOVUxM
KQorICAgIHsKKyAgICAgICAgdGVzdFF1ZXJ5KCk7CisgICAgfQorCisgICAgcmV0dXJuIG1TdGF0
dXM7Cit9CisKK0dMYm9vbGVhbiBRdWVyeTk6OnRlc3RRdWVyeSgpCit7CisgICAgaWYgKG1RdWVy
eSAhPSBOVUxMICYmIG1TdGF0dXMgIT0gR0xfVFJVRSkKKyAgICB7CisgICAgICAgIERXT1JEIG51
bVBpeGVscyA9IDA7CisKKyAgICAgICAgSFJFU1VMVCBocmVzID0gbVF1ZXJ5LT5HZXREYXRhKCZu
dW1QaXhlbHMsIHNpemVvZihEV09SRCksIEQzREdFVERBVEFfRkxVU0gpOworICAgICAgICBpZiAo
aHJlcyA9PSBTX09LKQorICAgICAgICB7CisgICAgICAgICAgICBtU3RhdHVzID0gIEdMX1RSVUU7
CisKKyAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQ6CisgICAgICAgICAgICAgIGNh
c2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQ6CisgICAgICAgICAgICAg
ICAgbVJlc3VsdCA9IChudW1QaXhlbHMgPiAwKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBBU1NFUlQoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2Ug
aWYgKGQzZDk6OmlzRGV2aWNlTG9zdEVycm9yKGhyZXMpKQorICAgICAgICB7CisgICAgICAgICAg
ICBtUmVuZGVyZXItPm5vdGlmeURldmljZUxvc3QoKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgR0xfVFJVRSk7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gbVN0YXR1czsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfVFJVRTsgLy8gcHJldmVudCBi
bG9ja2luZyB3aGVuIHF1ZXJ5IGlzIG51bGwKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5OS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5k
ZXJlci9RdWVyeTkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLy8KKy8vIENvcHly
aWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKy8vIFF1ZXJ5OS5oOiBEZWZpbmVzIHRoZSByeDo6UXVlcnk5IGNsYXNzIHdoaWNoIGltcGxl
bWVudHMgcng6OlF1ZXJ5SW1wbC4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfUVVFUlk5
X0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9RVUVSWTlfSF8KKworI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9RdWVyeUltcGwuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBS
ZW5kZXJlcjk7CisKK2NsYXNzIFF1ZXJ5OSA6IHB1YmxpYyBRdWVyeUltcGwKK3sKKyAgcHVibGlj
OgorICAgIFF1ZXJ5OShyeDo6UmVuZGVyZXI5ICpyZW5kZXJlciwgR0xlbnVtIHR5cGUpOworICAg
IHZpcnR1YWwgflF1ZXJ5OSgpOworCisgICAgdm9pZCBiZWdpbigpOworICAgIHZvaWQgZW5kKCk7
CisgICAgR0x1aW50IGdldFJlc3VsdCgpOworICAgIEdMYm9vbGVhbiBpc1Jlc3VsdEF2YWlsYWJs
ZSgpOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFF1ZXJ5OSk7
CisKKyAgICBHTGJvb2xlYW4gdGVzdFF1ZXJ5KCk7CisKKyAgICByeDo6UmVuZGVyZXI5ICptUmVu
ZGVyZXI7CisgICAgSURpcmVjdDNEUXVlcnk5ICptUXVlcnk7Cit9OworCit9CisKKyNlbmRpZiAv
LyBMSUJHTEVTVjJfUkVOREVSRVJfUVVFUlk5X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1F1ZXJ5MTEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnkxMS5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1F1ZXJ5MTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMiBAQAorI2luY2x1
ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUXVlcnkxMS5jcHA6IERlZmlu
ZXMgdGhlIHJ4OjpRdWVyeTExIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgcng6OlF1ZXJ5SW1wbC4K
KworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5o
IgorCituYW1lc3BhY2UgcngKK3sKKworUXVlcnkxMTo6UXVlcnkxMShyeDo6UmVuZGVyZXIxMSAq
cmVuZGVyZXIsIEdMZW51bSB0eXBlKSA6IFF1ZXJ5SW1wbCh0eXBlKQoreworICAgIG1SZW5kZXJl
ciA9IHJlbmRlcmVyOworICAgIG1RdWVyeSA9IE5VTEw7Cit9CisKK1F1ZXJ5MTE6On5RdWVyeTEx
KCkKK3sKKyAgICBpZiAobVF1ZXJ5KQorICAgIHsKKyAgICAgICAgbVF1ZXJ5LT5SZWxlYXNlKCk7
CisgICAgICAgIG1RdWVyeSA9IE5VTEw7CisgICAgfQorfQorCit2b2lkIFF1ZXJ5MTE6OmJlZ2lu
KCkKK3sKKyAgICBpZiAobVF1ZXJ5ID09IE5VTEwpCisgICAgeworICAgICAgICBEM0QxMV9RVUVS
WV9ERVNDIHF1ZXJ5RGVzYzsKKyAgICAgICAgcXVlcnlEZXNjLlF1ZXJ5ID0gRDNEMTFfUVVFUllf
T0NDTFVTSU9OOworICAgICAgICBxdWVyeURlc2MuTWlzY0ZsYWdzID0gMDsKKworICAgICAgICBp
ZiAoRkFJTEVEKG1SZW5kZXJlci0+Z2V0RGV2aWNlKCktPkNyZWF0ZVF1ZXJ5KCZxdWVyeURlc2Ms
ICZtUXVlcnkpKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1SZW5kZXJlci0+Z2V0RGV2
aWNlQ29udGV4dCgpLT5CZWdpbihtUXVlcnkpOworfQorCit2b2lkIFF1ZXJ5MTE6OmVuZCgpCit7
CisgICAgaWYgKG1RdWVyeSA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisgICAgbVJlbmRlcmVyLT5nZXREZXZp
Y2VDb250ZXh0KCktPkVuZChtUXVlcnkpOworCisgICAgbVN0YXR1cyA9IEdMX0ZBTFNFOworICAg
IG1SZXN1bHQgPSBHTF9GQUxTRTsKK30KKworR0x1aW50IFF1ZXJ5MTE6OmdldFJlc3VsdCgpCit7
CisgICAgaWYgKG1RdWVyeSAhPSBOVUxMKQorICAgIHsKKyAgICAgICAgd2hpbGUgKCF0ZXN0UXVl
cnkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgU2xlZXAoMCk7CisgICAgICAgICAgICAvLyBl
eHBsaWNpdGx5IGNoZWNrIGZvciBkZXZpY2UgbG9zcywgc29tZSBkcml2ZXJzIHNlZW0gdG8gcmV0
dXJuIFNfRkFMU0UKKyAgICAgICAgICAgIC8vIGlmIHRoZSBkZXZpY2UgaXMgbG9zdAorICAgICAg
ICAgICAgaWYgKG1SZW5kZXJlci0+dGVzdERldmljZUxvc3QodHJ1ZSkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtUmVzdWx0Owor
fQorCitHTGJvb2xlYW4gUXVlcnkxMTo6aXNSZXN1bHRBdmFpbGFibGUoKQoreworICAgIGlmICht
UXVlcnkgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIHRlc3RRdWVyeSgpOworICAgIH0KKworICAg
IHJldHVybiBtU3RhdHVzOworfQorCitHTGJvb2xlYW4gUXVlcnkxMTo6dGVzdFF1ZXJ5KCkKK3sK
KyAgICBpZiAobVF1ZXJ5ICE9IE5VTEwgJiYgbVN0YXR1cyAhPSBHTF9UUlVFKQorICAgIHsKKyAg
ICAgICAgVUlOVDY0IG51bVBpeGVscyA9IDA7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbVJl
bmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCktPkdldERhdGEobVF1ZXJ5LCAmbnVtUGl4ZWxzLCBz
aXplb2YoVUlOVDY0KSwgMCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gU19PSykKKyAgICAgICAg
eworICAgICAgICAgICAgbVN0YXR1cyA9IEdMX1RSVUU7CisKKyAgICAgICAgICAgIHN3aXRjaCAo
Z2V0VHlwZSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEdMX0FOWV9TQU1Q
TEVTX1BBU1NFRF9FWFQ6CisgICAgICAgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VE
X0NPTlNFUlZBVElWRV9FWFQ6CisgICAgICAgICAgICAgICAgbVJlc3VsdCA9IChudW1QaXhlbHMg
PiAwKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1SZW5kZXJlci0+dGVzdERldmlj
ZUxvc3QodHJ1ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSwgR0xfVFJVRSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbVN0
YXR1czsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfVFJVRTsgLy8gcHJldmVudCBibG9ja2luZyB3
aGVuIHF1ZXJ5IGlzIG51bGwKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTExLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1F1
ZXJ5MTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IFF1ZXJ5MTEuaDogRGVmaW5lcyB0aGUgcng6OlF1ZXJ5MTEgY2xhc3Mgd2hpY2ggaW1wbGVtZW50
cyByeDo6UXVlcnlJbXBsLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9RVUVSWTExX0hf
CisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9RVUVSWTExX0hfCisKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvUXVlcnlJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVu
ZGVyZXIxMTsKKworY2xhc3MgUXVlcnkxMSA6IHB1YmxpYyBRdWVyeUltcGwKK3sKKyAgcHVibGlj
OgorICAgIFF1ZXJ5MTEocng6OlJlbmRlcmVyMTEgKnJlbmRlcmVyLCBHTGVudW0gdHlwZSk7Cisg
ICAgdmlydHVhbCB+UXVlcnkxMSgpOworCisgICAgdm9pZCBiZWdpbigpOworICAgIHZvaWQgZW5k
KCk7CisgICAgR0x1aW50IGdldFJlc3VsdCgpOworICAgIEdMYm9vbGVhbiBpc1Jlc3VsdEF2YWls
YWJsZSgpOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFF1ZXJ5
MTEpOworCisgICAgR0xib29sZWFuIHRlc3RRdWVyeSgpOworCisgICAgcng6OlJlbmRlcmVyMTEg
Km1SZW5kZXJlcjsKKyAgICBJRDNEMTFRdWVyeSAqbVF1ZXJ5OworfTsKKworfQorCisjZW5kaWYg
Ly8gTElCR0xFU1YyX1JFTkRFUkVSX1FVRVJZMTFfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUXVlcnlJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeUltcGwu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvUXVlcnlJbXBsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisvLyBRdWVyeUltcGwuaDogRGVmaW5lcyB0aGUgYWJzdHJhY3Qgcng6OlF1ZXJ5
SW1wbCBjbGFzcy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfUVVFUllJTVBMX0hfCisj
ZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9RVUVSWUlNUExfSF8KKworI2luY2x1ZGUgImNvbW1v
bi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBRdWVyeUltcGwKK3sK
KyAgcHVibGljOgorICAgIGV4cGxpY2l0IFF1ZXJ5SW1wbChHTGVudW0gdHlwZSkgOiBtVHlwZSh0
eXBlKSwgbVN0YXR1cyhHTF9GQUxTRSksIG1SZXN1bHQoMCkgeyB9CisgICAgdmlydHVhbCB+UXVl
cnlJbXBsKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW4oKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGVuZCgpID0gMDsKKyAgICB2aXJ0dWFsIEdMdWludCBnZXRSZXN1bHQoKSA9IDA7Cisg
ICAgdmlydHVhbCBHTGJvb2xlYW4gaXNSZXN1bHRBdmFpbGFibGUoKSA9IDA7CisKKyAgICBHTGVu
dW0gZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlOyB9CisKKyAgcHJvdGVjdGVkOgorICAg
IEdMdWludCBtUmVzdWx0OworICAgIEdMYm9vbGVhbiBtU3RhdHVzOworCisgIHByaXZhdGU6Cisg
ICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFF1ZXJ5SW1wbCk7CisKKyAgICBHTGVudW0gbVR5
cGU7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfUVVFUllJTVBMX0hf
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlclN0YXRlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyU3RhdGVDYWNoZS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRl
clN0YXRlQ2FjaGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwNiBAQAorI2luY2x1ZGUg
InByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBSZW5kZXJTdGF0ZUNhY2hl
LmNwcDogRGVmaW5lcyByeDo6UmVuZGVyU3RhdGVDYWNoZSwgYSBjYWNoZSBvZiBEaXJlY3QzRCBy
ZW5kZXIKKy8vIHN0YXRlIG9iamVjdHMuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyU3RhdGVDYWNoZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJl
cjExX3V0aWxzLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJ0aGly
ZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmgiCisKK25hbWVzcGFjZSByeAoreworCisv
LyBNU0ROJ3MgZG9jdW1lbnRhdGlvbiBvZiBJRDNEMTFEZXZpY2U6OkNyZWF0ZUJsZW5kU3RhdGUs
IElEM0QxMURldmljZTo6Q3JlYXRlUmFzdGVyaXplclN0YXRlLAorLy8gSUQzRDExRGV2aWNlOjpD
cmVhdGVEZXB0aFN0ZW5jaWxTdGF0ZSBhbmQgSUQzRDExRGV2aWNlOjpDcmVhdGVTYW1wbGVyU3Rh
dGUgY2xhaW1zIHRoZSBtYXhpbXVtCisvLyBudW1iZXIgb2YgdW5pcXVlIHN0YXRlcyBvZiBlYWNo
IHR5cGUgYW4gYXBwbGljYXRpb24gY2FuIGNyZWF0ZSBpcyA0MDk2Citjb25zdCB1bnNpZ25lZCBp
bnQgUmVuZGVyU3RhdGVDYWNoZTo6a01heEJsZW5kU3RhdGVzID0gNDA5NjsKK2NvbnN0IHVuc2ln
bmVkIGludCBSZW5kZXJTdGF0ZUNhY2hlOjprTWF4UmFzdGVyaXplclN0YXRlcyA9IDQwOTY7Citj
b25zdCB1bnNpZ25lZCBpbnQgUmVuZGVyU3RhdGVDYWNoZTo6a01heERlcHRoU3RlbmNpbFN0YXRl
cyA9IDQwOTY7Citjb25zdCB1bnNpZ25lZCBpbnQgUmVuZGVyU3RhdGVDYWNoZTo6a01heFNhbXBs
ZXJTdGF0ZXMgPSA0MDk2OworCitSZW5kZXJTdGF0ZUNhY2hlOjpSZW5kZXJTdGF0ZUNhY2hlKCkg
OiBtRGV2aWNlKE5VTEwpLCBtQ291bnRlcigwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1CbGVuZFN0YXRlQ2FjaGUoa01heEJsZW5kU3RhdGVzLCBoYXNoQmxlbmRT
dGF0ZSwgY29tcGFyZUJsZW5kU3RhdGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1SYXN0ZXJpemVyU3RhdGVDYWNoZShrTWF4UmFzdGVyaXplclN0YXRlcywgaGFz
aFJhc3Rlcml6ZXJTdGF0ZSwgY29tcGFyZVJhc3Rlcml6ZXJTdGF0ZXMpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUoa01heERl
cHRoU3RlbmNpbFN0YXRlcywgaGFzaERlcHRoU3RlbmNpbFN0YXRlLCBjb21wYXJlRGVwdGhTdGVu
Y2lsU3RhdGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TYW1w
bGVyU3RhdGVDYWNoZShrTWF4U2FtcGxlclN0YXRlcywgaGFzaFNhbXBsZXJTdGF0ZSwgY29tcGFy
ZVNhbXBsZXJTdGF0ZXMpCit7Cit9CisKK1JlbmRlclN0YXRlQ2FjaGU6On5SZW5kZXJTdGF0ZUNh
Y2hlKCkKK3sKKyAgICBjbGVhcigpOworfQorCit2b2lkIFJlbmRlclN0YXRlQ2FjaGU6OmluaXRp
YWxpemUoSUQzRDExRGV2aWNlICpkZXZpY2UpCit7CisgICAgY2xlYXIoKTsKKyAgICBtRGV2aWNl
ID0gZGV2aWNlOworfQorCit2b2lkIFJlbmRlclN0YXRlQ2FjaGU6OmNsZWFyKCkKK3sKKyAgICBm
b3IgKEJsZW5kU3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBtQmxlbmRTdGF0ZUNhY2hlLmJlZ2luKCk7
IGkgIT0gbUJsZW5kU3RhdGVDYWNoZS5lbmQoKTsgaSsrKQorICAgIHsKKyAgICAgICAgaS0+c2Vj
b25kLmZpcnN0LT5SZWxlYXNlKCk7CisgICAgfQorICAgIG1CbGVuZFN0YXRlQ2FjaGUuY2xlYXIo
KTsKKworICAgIGZvciAoUmFzdGVyaXplclN0YXRlTWFwOjppdGVyYXRvciBpID0gbVJhc3Rlcml6
ZXJTdGF0ZUNhY2hlLmJlZ2luKCk7IGkgIT0gbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlLmVuZCgpOyBp
KyspCisgICAgeworICAgICAgICBpLT5zZWNvbmQuZmlyc3QtPlJlbGVhc2UoKTsKKyAgICB9Cisg
ICAgbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlLmNsZWFyKCk7CisKKyAgICBmb3IgKERlcHRoU3RlbmNp
bFN0YXRlTWFwOjppdGVyYXRvciBpID0gbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUuYmVnaW4oKTsg
aSAhPSBtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5lbmQoKTsgaSsrKQorICAgIHsKKyAgICAgICAg
aS0+c2Vjb25kLmZpcnN0LT5SZWxlYXNlKCk7CisgICAgfQorICAgIG1EZXB0aFN0ZW5jaWxTdGF0
ZUNhY2hlLmNsZWFyKCk7CisKKyAgICBmb3IgKFNhbXBsZXJTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9
IG1TYW1wbGVyU3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1TYW1wbGVyU3RhdGVDYWNoZS5lbmQo
KTsgaSsrKQorICAgIHsKKyAgICAgICAgaS0+c2Vjb25kLmZpcnN0LT5SZWxlYXNlKCk7CisgICAg
fQorICAgIG1TYW1wbGVyU3RhdGVDYWNoZS5jbGVhcigpOworfQorCitzdGQ6OnNpemVfdCBSZW5k
ZXJTdGF0ZUNhY2hlOjpoYXNoQmxlbmRTdGF0ZShjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRT
dGF0ZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHNlZWQgPSAweEFCQ0RFRjk4
OworCisgICAgc3RkOjpzaXplX3QgaGFzaCA9IDA7CisgICAgTXVybXVySGFzaDNfeDg2XzMyKCZi
bGVuZFN0YXRlLCBzaXplb2YoZ2w6OkJsZW5kU3RhdGUpLCBzZWVkLCAmaGFzaCk7CisgICAgcmV0
dXJuIGhhc2g7Cit9CisKK2Jvb2wgUmVuZGVyU3RhdGVDYWNoZTo6Y29tcGFyZUJsZW5kU3RhdGVz
KGNvbnN0IGdsOjpCbGVuZFN0YXRlICZhLCBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYikKK3sKKyAg
ICByZXR1cm4gbWVtY21wKCZhLCAmYiwgc2l6ZW9mKGdsOjpCbGVuZFN0YXRlKSkgPT0gMDsKK30K
KworSUQzRDExQmxlbmRTdGF0ZSAqUmVuZGVyU3RhdGVDYWNoZTo6Z2V0QmxlbmRTdGF0ZShjb25z
dCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSkKK3sKKyAgICBpZiAoIW1EZXZpY2UpCisgICAg
eworICAgICAgICBFUlIoIlJlbmRlclN0YXRlQ2FjaGUgaXMgbm90IGluaXRpYWxpemVkLiIpOwor
ICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBCbGVuZFN0YXRlTWFwOjppdGVyYXRv
ciBpID0gbUJsZW5kU3RhdGVDYWNoZS5maW5kKGJsZW5kU3RhdGUpOworICAgIGlmIChpICE9IG1C
bGVuZFN0YXRlQ2FjaGUuZW5kKCkpCisgICAgeworICAgICAgICBCbGVuZFN0YXRlQ291bnRlclBh
aXIgJnN0YXRlID0gaS0+c2Vjb25kOworICAgICAgICBzdGF0ZS5zZWNvbmQgPSBtQ291bnRlcisr
OworICAgICAgICByZXR1cm4gc3RhdGUuZmlyc3Q7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIGlmIChtQmxlbmRTdGF0ZUNhY2hlLnNpemUoKSA+PSBrTWF4QmxlbmRTdGF0ZXMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIFRSQUNFKCJPdmVyZmxvd2VkIHRoZSBsaW1pdCBvZiAldSBi
bGVuZCBzdGF0ZXMsIHJlbW92aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkICIKKyAgICAgICAg
ICAgICAgICAgICJ0byBtYWtlIHJvb20uIiwga01heEJsZW5kU3RhdGVzKTsKKworICAgICAgICAg
ICAgQmxlbmRTdGF0ZU1hcDo6aXRlcmF0b3IgbGVhc3RSZWNlbnRseVVzZWQgPSBtQmxlbmRTdGF0
ZUNhY2hlLmJlZ2luKCk7CisgICAgICAgICAgICBmb3IgKEJsZW5kU3RhdGVNYXA6Oml0ZXJhdG9y
IGkgPSBtQmxlbmRTdGF0ZUNhY2hlLmJlZ2luKCk7IGkgIT0gbUJsZW5kU3RhdGVDYWNoZS5lbmQo
KTsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpLT5zZWNvbmQuc2Vj
b25kIDwgbGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5zZWNvbmQpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNlZCA9IGk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVhc3RSZWNlbnRseVVzZWQtPnNl
Y29uZC5maXJzdC0+UmVsZWFzZSgpOworICAgICAgICAgICAgbUJsZW5kU3RhdGVDYWNoZS5lcmFz
ZShsZWFzdFJlY2VudGx5VXNlZCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDcmVhdGUgYSBu
ZXcgYmxlbmQgc3RhdGUgYW5kIGluc2VydCBpdCBpbnRvIHRoZSBjYWNoZQorICAgICAgICBEM0Qx
MV9CTEVORF9ERVNDIGJsZW5kRGVzYyA9IHsgMCB9OworICAgICAgICBibGVuZERlc2MuQWxwaGFU
b0NvdmVyYWdlRW5hYmxlID0gYmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJhZ2U7CisgICAg
ICAgIGJsZW5kRGVzYy5JbmRlcGVuZGVudEJsZW5kRW5hYmxlID0gRkFMU0U7CisKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBEM0QxMV9TSU1VTFRBTkVPVVNfUkVOREVSX1RB
UkdFVF9DT1VOVDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBEM0QxMV9SRU5ERVJfVEFS
R0VUX0JMRU5EX0RFU0MgJnJ0QmxlbmQgPSBibGVuZERlc2MuUmVuZGVyVGFyZ2V0W2ldOworCisg
ICAgICAgICAgICBydEJsZW5kLkJsZW5kRW5hYmxlID0gYmxlbmRTdGF0ZS5ibGVuZDsKKyAgICAg
ICAgICAgIGlmIChibGVuZFN0YXRlLmJsZW5kKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJ0QmxlbmQuU3JjQmxlbmQgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kRnVuYyhibGVuZFN0
YXRlLnNvdXJjZUJsZW5kUkdCLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgcnRCbGVuZC5EZXN0
QmxlbmQgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kRnVuYyhibGVuZFN0YXRlLmRlc3RCbGVuZFJH
QiwgZmFsc2UpOworICAgICAgICAgICAgICAgIHJ0QmxlbmQuQmxlbmRPcCA9IGdsX2QzZDExOjpD
b252ZXJ0QmxlbmRPcChibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IpOworCisgICAgICAgICAg
ICAgICAgcnRCbGVuZC5TcmNCbGVuZEFscGhhID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMo
YmxlbmRTdGF0ZS5zb3VyY2VCbGVuZEFscGhhLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBydEJs
ZW5kLkRlc3RCbGVuZEFscGhhID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0
ZS5kZXN0QmxlbmRBbHBoYSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgcnRCbGVuZC5CbGVuZE9w
QWxwaGEgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kT3AoYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9u
QWxwaGEpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBydEJsZW5kLlJlbmRlclRhcmdl
dFdyaXRlTWFzayA9IGdsX2QzZDExOjpDb252ZXJ0Q29sb3JNYXNrKGJsZW5kU3RhdGUuY29sb3JN
YXNrUmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0JsdWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kU3Rh
dGUuY29sb3JNYXNrQWxwaGEpOworICAgICAgICB9CisKKyAgICAgICAgSUQzRDExQmxlbmRTdGF0
ZSAqZHgxMUJsZW5kU3RhdGUgPSBOVUxMOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZp
Y2UtPkNyZWF0ZUJsZW5kU3RhdGUoJmJsZW5kRGVzYywgJmR4MTFCbGVuZFN0YXRlKTsKKyAgICAg
ICAgaWYgKEZBSUxFRChyZXN1bHQpIHx8ICFkeDExQmxlbmRTdGF0ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgRVJSKCJVbmFibGUgdG8gY3JlYXRlIGEgSUQzRDExQmxlbmRTdGF0ZSwgSFJFU1VM
VDogMHglWC4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0K
KworICAgICAgICBtQmxlbmRTdGF0ZUNhY2hlLmluc2VydChzdGQ6Om1ha2VfcGFpcihibGVuZFN0
YXRlLCBzdGQ6Om1ha2VfcGFpcihkeDExQmxlbmRTdGF0ZSwgbUNvdW50ZXIrKykpKTsKKworICAg
ICAgICByZXR1cm4gZHgxMUJsZW5kU3RhdGU7CisgICAgfQorfQorCitzdGQ6OnNpemVfdCBSZW5k
ZXJTdGF0ZUNhY2hlOjpoYXNoUmFzdGVyaXplclN0YXRlKGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtl
eSAmcmFzdGVyU3RhdGUpCit7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBzZWVkID0g
MHhBQkNERUY5ODsKKworICAgIHN0ZDo6c2l6ZV90IGhhc2ggPSAwOworICAgIE11cm11ckhhc2gz
X3g4Nl8zMigmcmFzdGVyU3RhdGUsIHNpemVvZihSYXN0ZXJpemVyU3RhdGVLZXkpLCBzZWVkLCAm
aGFzaCk7CisgICAgcmV0dXJuIGhhc2g7Cit9CisKK2Jvb2wgUmVuZGVyU3RhdGVDYWNoZTo6Y29t
cGFyZVJhc3Rlcml6ZXJTdGF0ZXMoY29uc3QgUmFzdGVyaXplclN0YXRlS2V5ICZhLCBjb25zdCBS
YXN0ZXJpemVyU3RhdGVLZXkgJmIpCit7CisgICAgcmV0dXJuIG1lbWNtcCgmYSwgJmIsIHNpemVv
ZihSYXN0ZXJpemVyU3RhdGVLZXkpKSA9PSAwOworfQorCitJRDNEMTFSYXN0ZXJpemVyU3RhdGUg
KlJlbmRlclN0YXRlQ2FjaGU6OmdldFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVyaXpl
clN0YXRlICZyYXN0ZXJTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2Npc3NvckVuYWJsZWQsIHVuc2lnbmVkIGlu
dCBkZXB0aFNpemUpCit7CisgICAgaWYgKCFtRGV2aWNlKQorICAgIHsKKyAgICAgICAgRVJSKCJS
ZW5kZXJTdGF0ZUNhY2hlIGlzIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgfQorCisgICAgUmFzdGVyaXplclN0YXRlS2V5IGtleTsKKyAgICBrZXkucmFzdGVy
aXplclN0YXRlID0gcmFzdGVyU3RhdGU7CisgICAga2V5LnNjaXNzb3JFbmFibGVkID0gc2Npc3Nv
ckVuYWJsZWQ7CisgICAga2V5LmRlcHRoU2l6ZSA9IGRlcHRoU2l6ZTsKKworICAgIFJhc3Rlcml6
ZXJTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9IG1SYXN0ZXJpemVyU3RhdGVDYWNoZS5maW5kKGtleSk7
CisgICAgaWYgKGkgIT0gbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlLmVuZCgpKQorICAgIHsKKyAgICAg
ICAgUmFzdGVyaXplclN0YXRlQ291bnRlclBhaXIgJnN0YXRlID0gaS0+c2Vjb25kOworICAgICAg
ICBzdGF0ZS5zZWNvbmQgPSBtQ291bnRlcisrOworICAgICAgICByZXR1cm4gc3RhdGUuZmlyc3Q7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmIChtUmFzdGVyaXplclN0YXRlQ2Fj
aGUuc2l6ZSgpID49IGtNYXhSYXN0ZXJpemVyU3RhdGVzKQorICAgICAgICB7CisgICAgICAgICAg
ICBUUkFDRSgiT3ZlcmZsb3dlZCB0aGUgbGltaXQgb2YgJXUgcmFzdGVyaXplciBzdGF0ZXMsIHJl
bW92aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkICIKKyAgICAgICAgICAgICAgICAgICJ0byBt
YWtlIHJvb20uIiwga01heFJhc3Rlcml6ZXJTdGF0ZXMpOworCisgICAgICAgICAgICBSYXN0ZXJp
emVyU3RhdGVNYXA6Oml0ZXJhdG9yIGxlYXN0UmVjZW50bHlVc2VkID0gbVJhc3Rlcml6ZXJTdGF0
ZUNhY2hlLmJlZ2luKCk7CisgICAgICAgICAgICBmb3IgKFJhc3Rlcml6ZXJTdGF0ZU1hcDo6aXRl
cmF0b3IgaSA9IG1SYXN0ZXJpemVyU3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1SYXN0ZXJpemVy
U3RhdGVDYWNoZS5lbmQoKTsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
IChpLT5zZWNvbmQuc2Vjb25kIDwgbGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5zZWNvbmQpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNlZCA9
IGk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVhc3RS
ZWNlbnRseVVzZWQtPnNlY29uZC5maXJzdC0+UmVsZWFzZSgpOworICAgICAgICAgICAgbVJhc3Rl
cml6ZXJTdGF0ZUNhY2hlLmVyYXNlKGxlYXN0UmVjZW50bHlVc2VkKTsKKyAgICAgICAgfQorCisg
ICAgICAgIEQzRDExX0NVTExfTU9ERSBjdWxsTW9kZSA9IGdsX2QzZDExOjpDb252ZXJ0Q3VsbE1v
ZGUocmFzdGVyU3RhdGUuY3VsbEZhY2UsIHJhc3RlclN0YXRlLmN1bGxNb2RlKTsKKworICAgICAg
ICAvLyBEaXNhYmxlIGN1bGxpbmcgaWYgZHJhd2luZyBwb2ludHMKKyAgICAgICAgaWYgKHJhc3Rl
clN0YXRlLnBvaW50RHJhd01vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGN1bGxNb2RlID0g
RDNEMTFfQ1VMTF9OT05FOworICAgICAgICB9CisKKyAgICAgICAgRDNEMTFfUkFTVEVSSVpFUl9E
RVNDIHJhc3RlckRlc2M7CisgICAgICAgIHJhc3RlckRlc2MuRmlsbE1vZGUgPSBEM0QxMV9GSUxM
X1NPTElEOworICAgICAgICByYXN0ZXJEZXNjLkN1bGxNb2RlID0gY3VsbE1vZGU7CisgICAgICAg
IHJhc3RlckRlc2MuRnJvbnRDb3VudGVyQ2xvY2t3aXNlID0gKHJhc3RlclN0YXRlLmZyb250RmFj
ZSA9PSBHTF9DQ1cpID8gRkFMU0U6IFRSVUU7CisgICAgICAgIHJhc3RlckRlc2MuRGVwdGhCaWFz
ID0gbGRleHAocmFzdGVyU3RhdGUucG9seWdvbk9mZnNldFVuaXRzLCAtc3RhdGljX2Nhc3Q8aW50
PihkZXB0aFNpemUpKTsKKyAgICAgICAgcmFzdGVyRGVzYy5EZXB0aEJpYXNDbGFtcCA9IDAuMGY7
IC8vIE1TRE4gZG9jdW1lbnRhdGlvbiBvZiBEZXB0aEJpYXNDbGFtcCBpbXBsaWVzIGEgdmFsdWUg
b2YgemVybyB3aWxsIHByZWZvcm0gbm8gY2xhbXBpbmcsIG11c3QgYmUgdGVzdGVkIHRob3VnaC4K
KyAgICAgICAgcmFzdGVyRGVzYy5TbG9wZVNjYWxlZERlcHRoQmlhcyA9IHJhc3RlclN0YXRlLnBv
bHlnb25PZmZzZXRGYWN0b3I7CisgICAgICAgIHJhc3RlckRlc2MuRGVwdGhDbGlwRW5hYmxlID0g
VFJVRTsKKyAgICAgICAgcmFzdGVyRGVzYy5TY2lzc29yRW5hYmxlID0gc2Npc3NvckVuYWJsZWQg
PyBUUlVFIDogRkFMU0U7CisgICAgICAgIHJhc3RlckRlc2MuTXVsdGlzYW1wbGVFbmFibGUgPSBy
YXN0ZXJTdGF0ZS5tdWx0aVNhbXBsZTsKKyAgICAgICAgcmFzdGVyRGVzYy5BbnRpYWxpYXNlZExp
bmVFbmFibGUgPSBGQUxTRTsKKworICAgICAgICBJRDNEMTFSYXN0ZXJpemVyU3RhdGUgKmR4MTFS
YXN0ZXJpemVyU3RhdGUgPSBOVUxMOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2Ut
PkNyZWF0ZVJhc3Rlcml6ZXJTdGF0ZSgmcmFzdGVyRGVzYywgJmR4MTFSYXN0ZXJpemVyU3RhdGUp
OworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkgfHwgIWR4MTFSYXN0ZXJpemVyU3RhdGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiVW5hYmxlIHRvIGNyZWF0ZSBhIElEM0QxMVJhc3Rl
cml6ZXJTdGF0ZSwgSFJFU1VMVDogMHglWC4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJu
IE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBtUmFzdGVyaXplclN0YXRlQ2FjaGUuaW5zZXJ0
KHN0ZDo6bWFrZV9wYWlyKGtleSwgc3RkOjptYWtlX3BhaXIoZHgxMVJhc3Rlcml6ZXJTdGF0ZSwg
bUNvdW50ZXIrKykpKTsKKworICAgICAgICByZXR1cm4gZHgxMVJhc3Rlcml6ZXJTdGF0ZTsKKyAg
ICB9Cit9CisKK3N0ZDo6c2l6ZV90IFJlbmRlclN0YXRlQ2FjaGU6Omhhc2hEZXB0aFN0ZW5jaWxT
dGF0ZShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmRzU3RhdGUpCit7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGludCBzZWVkID0gMHhBQkNERUY5ODsKKworICAgIHN0ZDo6c2l6ZV90
IGhhc2ggPSAwOworICAgIE11cm11ckhhc2gzX3g4Nl8zMigmZHNTdGF0ZSwgc2l6ZW9mKGdsOjpE
ZXB0aFN0ZW5jaWxTdGF0ZSksIHNlZWQsICZoYXNoKTsKKyAgICByZXR1cm4gaGFzaDsKK30KKwor
Ym9vbCBSZW5kZXJTdGF0ZUNhY2hlOjpjb21wYXJlRGVwdGhTdGVuY2lsU3RhdGVzKGNvbnN0IGds
OjpEZXB0aFN0ZW5jaWxTdGF0ZSAmYSwgY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZiKQor
eworICAgIHJldHVybiBtZW1jbXAoJmEsICZiLCBzaXplb2YoZ2w6OkRlcHRoU3RlbmNpbFN0YXRl
KSkgPT0gMDsKK30KKworSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKlJlbmRlclN0YXRlQ2FjaGU6
OmdldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZHNTdGF0
ZSkKK3sKKyAgICBpZiAoIW1EZXZpY2UpCisgICAgeworICAgICAgICBFUlIoIlJlbmRlclN0YXRl
Q2FjaGUgaXMgbm90IGluaXRpYWxpemVkLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9
CisKKyAgICBEZXB0aFN0ZW5jaWxTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9IG1EZXB0aFN0ZW5jaWxT
dGF0ZUNhY2hlLmZpbmQoZHNTdGF0ZSk7CisgICAgaWYgKGkgIT0gbURlcHRoU3RlbmNpbFN0YXRl
Q2FjaGUuZW5kKCkpCisgICAgeworICAgICAgICBEZXB0aFN0ZW5jaWxTdGF0ZUNvdW50ZXJQYWly
ICZzdGF0ZSA9IGktPnNlY29uZDsKKyAgICAgICAgc3RhdGUuc2Vjb25kID0gbUNvdW50ZXIrKzsK
KyAgICAgICAgcmV0dXJuIHN0YXRlLmZpcnN0OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBpZiAobURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUuc2l6ZSgpID49IGtNYXhEZXB0aFN0ZW5j
aWxTdGF0ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRSQUNFKCJPdmVyZmxvd2VkIHRoZSBs
aW1pdCBvZiAldSBkZXB0aCBzdGVuY2lsIHN0YXRlcywgcmVtb3ZpbmcgdGhlIGxlYXN0IHJlY2Vu
dGx5IHVzZWQgIgorICAgICAgICAgICAgICAgICAgInRvIG1ha2Ugcm9vbS4iLCBrTWF4RGVwdGhT
dGVuY2lsU3RhdGVzKTsKKworICAgICAgICAgICAgRGVwdGhTdGVuY2lsU3RhdGVNYXA6Oml0ZXJh
dG9yIGxlYXN0UmVjZW50bHlVc2VkID0gbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUuYmVnaW4oKTsK
KyAgICAgICAgICAgIGZvciAoRGVwdGhTdGVuY2lsU3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBtRGVw
dGhTdGVuY2lsU3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1EZXB0aFN0ZW5jaWxTdGF0ZUNhY2hl
LmVuZCgpOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGktPnNlY29u
ZC5zZWNvbmQgPCBsZWFzdFJlY2VudGx5VXNlZC0+c2Vjb25kLnNlY29uZCkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIGxlYXN0UmVjZW50bHlVc2VkID0gaTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNl
ZC0+c2Vjb25kLmZpcnN0LT5SZWxlYXNlKCk7CisgICAgICAgICAgICBtRGVwdGhTdGVuY2lsU3Rh
dGVDYWNoZS5lcmFzZShsZWFzdFJlY2VudGx5VXNlZCk7CisgICAgICAgIH0KKworICAgICAgICBE
M0QxMV9ERVBUSF9TVEVOQ0lMX0RFU0MgZHNEZXNjID0geyAwIH07CisgICAgICAgIGRzRGVzYy5E
ZXB0aEVuYWJsZSA9IGRzU3RhdGUuZGVwdGhUZXN0ID8gVFJVRSA6IEZBTFNFOworICAgICAgICBk
c0Rlc2MuRGVwdGhXcml0ZU1hc2sgPSBnbF9kM2QxMTo6Q29udmVydERlcHRoTWFzayhkc1N0YXRl
LmRlcHRoTWFzayk7CisgICAgICAgIGRzRGVzYy5EZXB0aEZ1bmMgPSBnbF9kM2QxMTo6Q29udmVy
dENvbXBhcmlzb24oZHNTdGF0ZS5kZXB0aEZ1bmMpOworICAgICAgICBkc0Rlc2MuU3RlbmNpbEVu
YWJsZSA9IGRzU3RhdGUuc3RlbmNpbFRlc3QgPyBUUlVFIDogRkFMU0U7CisgICAgICAgIGRzRGVz
Yy5TdGVuY2lsUmVhZE1hc2sgPSBnbF9kM2QxMTo6Q29udmVydFN0ZW5jaWxNYXNrKGRzU3RhdGUu
c3RlbmNpbE1hc2spOworICAgICAgICBkc0Rlc2MuU3RlbmNpbFdyaXRlTWFzayA9IGdsX2QzZDEx
OjpDb252ZXJ0U3RlbmNpbE1hc2soZHNTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrKTsKKyAgICAgICAg
ZHNEZXNjLkZyb250RmFjZS5TdGVuY2lsRmFpbE9wID0gZ2xfZDNkMTE6OkNvbnZlcnRTdGVuY2ls
T3AoZHNTdGF0ZS5zdGVuY2lsRmFpbCk7CisgICAgICAgIGRzRGVzYy5Gcm9udEZhY2UuU3RlbmNp
bERlcHRoRmFpbE9wID0gZ2xfZDNkMTE6OkNvbnZlcnRTdGVuY2lsT3AoZHNTdGF0ZS5zdGVuY2ls
UGFzc0RlcHRoRmFpbCk7CisgICAgICAgIGRzRGVzYy5Gcm9udEZhY2UuU3RlbmNpbFBhc3NPcCA9
IGdsX2QzZDExOjpDb252ZXJ0U3RlbmNpbE9wKGRzU3RhdGUuc3RlbmNpbFBhc3NEZXB0aFBhc3Mp
OworICAgICAgICBkc0Rlc2MuRnJvbnRGYWNlLlN0ZW5jaWxGdW5jID0gZ2xfZDNkMTE6OkNvbnZl
cnRDb21wYXJpc29uKGRzU3RhdGUuc3RlbmNpbEZ1bmMpOworICAgICAgICBkc0Rlc2MuQmFja0Zh
Y2UuU3RlbmNpbEZhaWxPcCA9IGdsX2QzZDExOjpDb252ZXJ0U3RlbmNpbE9wKGRzU3RhdGUuc3Rl
bmNpbEJhY2tGYWlsKTsKKyAgICAgICAgZHNEZXNjLkJhY2tGYWNlLlN0ZW5jaWxEZXB0aEZhaWxP
cCA9IGdsX2QzZDExOjpDb252ZXJ0U3RlbmNpbE9wKGRzU3RhdGUuc3RlbmNpbEJhY2tQYXNzRGVw
dGhGYWlsKTsKKyAgICAgICAgZHNEZXNjLkJhY2tGYWNlLlN0ZW5jaWxQYXNzT3AgPSBnbF9kM2Qx
MTo6Q29udmVydFN0ZW5jaWxPcChkc1N0YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzcyk7Cisg
ICAgICAgIGRzRGVzYy5CYWNrRmFjZS5TdGVuY2lsRnVuYyA9IGdsX2QzZDExOjpDb252ZXJ0Q29t
cGFyaXNvbihkc1N0YXRlLnN0ZW5jaWxCYWNrRnVuYyk7CisKKyAgICAgICAgSUQzRDExRGVwdGhT
dGVuY2lsU3RhdGUgKmR4MTFEZXB0aFN0ZW5jaWxTdGF0ZSA9IE5VTEw7CisgICAgICAgIEhSRVNV
TFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlRGVwdGhTdGVuY2lsU3RhdGUoJmRzRGVzYywgJmR4
MTFEZXB0aFN0ZW5jaWxTdGF0ZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSB8fCAhZHgx
MURlcHRoU3RlbmNpbFN0YXRlKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIlVuYWJsZSB0
byBjcmVhdGUgYSBJRDNEMTFEZXB0aFN0ZW5jaWxTdGF0ZSwgSFJFU1VMVDogMHglWC4iLCByZXN1
bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBtRGVw
dGhTdGVuY2lsU3RhdGVDYWNoZS5pbnNlcnQoc3RkOjptYWtlX3BhaXIoZHNTdGF0ZSwgc3RkOjpt
YWtlX3BhaXIoZHgxMURlcHRoU3RlbmNpbFN0YXRlLCBtQ291bnRlcisrKSkpOworCisgICAgICAg
IHJldHVybiBkeDExRGVwdGhTdGVuY2lsU3RhdGU7CisgICAgfQorfQorCitzdGQ6OnNpemVfdCBS
ZW5kZXJTdGF0ZUNhY2hlOjpoYXNoU2FtcGxlclN0YXRlKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUg
JnNhbXBsZXJTdGF0ZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHNlZWQgPSAw
eEFCQ0RFRjk4OworCisgICAgc3RkOjpzaXplX3QgaGFzaCA9IDA7CisgICAgTXVybXVySGFzaDNf
eDg2XzMyKCZzYW1wbGVyU3RhdGUsIHNpemVvZihnbDo6U2FtcGxlclN0YXRlKSwgc2VlZCwgJmhh
c2gpOworICAgIHJldHVybiBoYXNoOworfQorCitib29sIFJlbmRlclN0YXRlQ2FjaGU6OmNvbXBh
cmVTYW1wbGVyU3RhdGVzKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJmEsIGNvbnN0IGdsOjpTYW1w
bGVyU3RhdGUgJmIpCit7CisgICAgcmV0dXJuIG1lbWNtcCgmYSwgJmIsIHNpemVvZihnbDo6U2Ft
cGxlclN0YXRlKSkgPT0gMDsKK30KKworSUQzRDExU2FtcGxlclN0YXRlICpSZW5kZXJTdGF0ZUNh
Y2hlOjpnZXRTYW1wbGVyU3RhdGUoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRl
KQoreworICAgIGlmICghbURldmljZSkKKyAgICB7CisgICAgICAgIEVSUigiUmVuZGVyU3RhdGVD
YWNoZSBpcyBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0K
KworICAgIFNhbXBsZXJTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9IG1TYW1wbGVyU3RhdGVDYWNoZS5m
aW5kKHNhbXBsZXJTdGF0ZSk7CisgICAgaWYgKGkgIT0gbVNhbXBsZXJTdGF0ZUNhY2hlLmVuZCgp
KQorICAgIHsKKyAgICAgICAgU2FtcGxlclN0YXRlQ291bnRlclBhaXIgJnN0YXRlID0gaS0+c2Vj
b25kOworICAgICAgICBzdGF0ZS5zZWNvbmQgPSBtQ291bnRlcisrOworICAgICAgICByZXR1cm4g
c3RhdGUuZmlyc3Q7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmIChtU2FtcGxl
clN0YXRlQ2FjaGUuc2l6ZSgpID49IGtNYXhTYW1wbGVyU3RhdGVzKQorICAgICAgICB7CisgICAg
ICAgICAgICBUUkFDRSgiT3ZlcmZsb3dlZCB0aGUgbGltaXQgb2YgJXUgc2FtcGxlciBzdGF0ZXMs
IHJlbW92aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkICIKKyAgICAgICAgICAgICAgICAgICJ0
byBtYWtlIHJvb20uIiwga01heFNhbXBsZXJTdGF0ZXMpOworCisgICAgICAgICAgICBTYW1wbGVy
U3RhdGVNYXA6Oml0ZXJhdG9yIGxlYXN0UmVjZW50bHlVc2VkID0gbVNhbXBsZXJTdGF0ZUNhY2hl
LmJlZ2luKCk7CisgICAgICAgICAgICBmb3IgKFNhbXBsZXJTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9
IG1TYW1wbGVyU3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1TYW1wbGVyU3RhdGVDYWNoZS5lbmQo
KTsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpLT5zZWNvbmQuc2Vj
b25kIDwgbGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5zZWNvbmQpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBsZWFzdFJlY2VudGx5VXNlZCA9IGk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVhc3RSZWNlbnRseVVzZWQtPnNl
Y29uZC5maXJzdC0+UmVsZWFzZSgpOworICAgICAgICAgICAgbVNhbXBsZXJTdGF0ZUNhY2hlLmVy
YXNlKGxlYXN0UmVjZW50bHlVc2VkKTsKKyAgICAgICAgfQorCisgICAgICAgIEQzRDExX1NBTVBM
RVJfREVTQyBzYW1wbGVyRGVzYzsKKyAgICAgICAgc2FtcGxlckRlc2MuRmlsdGVyID0gZ2xfZDNk
MTE6OkNvbnZlcnRGaWx0ZXIoc2FtcGxlclN0YXRlLm1pbkZpbHRlciwgc2FtcGxlclN0YXRlLm1h
Z0ZpbHRlciwgc2FtcGxlclN0YXRlLm1heEFuaXNvdHJvcHkpOworICAgICAgICBzYW1wbGVyRGVz
Yy5BZGRyZXNzVSA9IGdsX2QzZDExOjpDb252ZXJ0VGV4dHVyZVdyYXAoc2FtcGxlclN0YXRlLndy
YXBTKTsKKyAgICAgICAgc2FtcGxlckRlc2MuQWRkcmVzc1YgPSBnbF9kM2QxMTo6Q29udmVydFRl
eHR1cmVXcmFwKHNhbXBsZXJTdGF0ZS53cmFwVCk7CisgICAgICAgIHNhbXBsZXJEZXNjLkFkZHJl
c3NXID0gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgICAgICBzYW1wbGVyRGVzYy5N
aXBMT0RCaWFzID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNhbXBsZXJTdGF0ZS5sb2RPZmZzZXQpOwor
ICAgICAgICBzYW1wbGVyRGVzYy5NYXhBbmlzb3Ryb3B5ID0gc2FtcGxlclN0YXRlLm1heEFuaXNv
dHJvcHk7CisgICAgICAgIHNhbXBsZXJEZXNjLkNvbXBhcmlzb25GdW5jID0gRDNEMTFfQ09NUEFS
SVNPTl9ORVZFUjsKKyAgICAgICAgc2FtcGxlckRlc2MuQm9yZGVyQ29sb3JbMF0gPSAwLjBmOwor
ICAgICAgICBzYW1wbGVyRGVzYy5Cb3JkZXJDb2xvclsxXSA9IDAuMGY7CisgICAgICAgIHNhbXBs
ZXJEZXNjLkJvcmRlckNvbG9yWzJdID0gMC4wZjsKKyAgICAgICAgc2FtcGxlckRlc2MuQm9yZGVy
Q29sb3JbM10gPSAwLjBmOworICAgICAgICBzYW1wbGVyRGVzYy5NaW5MT0QgPSBnbF9kM2QxMTo6
Q29udmVydE1pbkxPRChzYW1wbGVyU3RhdGUubWluRmlsdGVyLCBzYW1wbGVyU3RhdGUubG9kT2Zm
c2V0KTsKKyAgICAgICAgc2FtcGxlckRlc2MuTWF4TE9EID0gZ2xfZDNkMTE6OkNvbnZlcnRNYXhM
T0Qoc2FtcGxlclN0YXRlLm1pbkZpbHRlciwgc2FtcGxlclN0YXRlLmxvZE9mZnNldCk7CisKKyAg
ICAgICAgSUQzRDExU2FtcGxlclN0YXRlICpkeDExU2FtcGxlclN0YXRlID0gTlVMTDsKKyAgICAg
ICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVTYW1wbGVyU3RhdGUoJnNhbXBsZXJE
ZXNjLCAmZHgxMVNhbXBsZXJTdGF0ZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSB8fCAh
ZHgxMVNhbXBsZXJTdGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJVbmFibGUgdG8g
Y3JlYXRlIGEgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0
KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgbVNhbXBs
ZXJTdGF0ZUNhY2hlLmluc2VydChzdGQ6Om1ha2VfcGFpcihzYW1wbGVyU3RhdGUsIHN0ZDo6bWFr
ZV9wYWlyKGR4MTFTYW1wbGVyU3RhdGUsIG1Db3VudGVyKyspKSk7CisKKyAgICAgICAgcmV0dXJu
IGR4MTFTYW1wbGVyU3RhdGU7CisgICAgfQorfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9SZW5kZXJTdGF0ZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJTdGF0ZUNhY2hlLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRl
clN0YXRlQ2FjaGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDEgQEAKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIFJlbmRlclN0YXRlQ2FjaGUuaDogRGVmaW5lcyByeDo6UmVuZGVyU3RhdGVD
YWNoZSwgYSBjYWNoZSBvZiBEaXJlY3QzRCByZW5kZXIKKy8vIHN0YXRlIG9iamVjdHMuCisKKyNp
Zm5kZWYgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUlNUQVRFQ0FDSEVfSF8KKyNkZWZpbmUgTElC
R0xFU1YyX1JFTkRFUkVSX1JFTkRFUlNUQVRFQ0FDSEVfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2
Mi9hbmdsZXR5cGVzLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNw
YWNlIHJ4Cit7CisKK2NsYXNzIFJlbmRlclN0YXRlQ2FjaGUKK3sKKyAgcHVibGljOgorICAgIFJl
bmRlclN0YXRlQ2FjaGUoKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJTdGF0ZUNhY2hlKCk7CisKKyAg
ICB2b2lkIGluaXRpYWxpemUoSUQzRDExRGV2aWNlICpkZXZpY2UpOworICAgIHZvaWQgY2xlYXIo
KTsKKworICAgIC8vIEluY3JlbWVudHMgcmVmY291bnQgb24gdGhlIHJldHVybmVkIGJsZW5kIHN0
YXRlLCBSZWxlYXNlKCkgbXVzdCBiZSBjYWxsZWQuCisgICAgSUQzRDExQmxlbmRTdGF0ZSAqZ2V0
QmxlbmRTdGF0ZShjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSk7CisgICAgSUQzRDEx
UmFzdGVyaXplclN0YXRlICpnZXRSYXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6OlJhc3Rlcml6ZXJT
dGF0ZSAmcmFzdGVyU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBzY2lzc29yRW5hYmxlZCwgdW5zaWduZWQgaW50IGRlcHRoU2l6ZSk7Cisg
ICAgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKmdldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGds
OjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZHNTdGF0ZSk7CisgICAgSUQzRDExU2FtcGxlclN0YXRlICpn
ZXRTYW1wbGVyU3RhdGUoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKTsKKwor
ICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJTdGF0ZUNhY2hl
KTsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtQ291bnRlcjsKKworICAgIC8vIEJsZW5kIHN0
YXRlIGNhY2hlCisgICAgc3RhdGljIHN0ZDo6c2l6ZV90IGhhc2hCbGVuZFN0YXRlKGNvbnN0IGds
OjpCbGVuZFN0YXRlICZibGVuZFN0YXRlKTsKKyAgICBzdGF0aWMgYm9vbCBjb21wYXJlQmxlbmRT
dGF0ZXMoY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmEsIGNvbnN0IGdsOjpCbGVuZFN0YXRlICZiKTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGtNYXhCbGVuZFN0YXRlczsKKworICAgIHR5
cGVkZWYgc3RkOjpzaXplX3QgKCpCbGVuZFN0YXRlSGFzaEZ1bmN0aW9uKShjb25zdCBnbDo6Qmxl
bmRTdGF0ZSAmKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpCbGVuZFN0YXRlRXF1YWxpdHlGdW5jdGlv
bikoY29uc3QgZ2w6OkJsZW5kU3RhdGUgJiwgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJik7CisgICAg
dHlwZWRlZiBzdGQ6OnBhaXI8SUQzRDExQmxlbmRTdGF0ZSosIHVuc2lnbmVkIGxvbmcgbG9uZz4g
QmxlbmRTdGF0ZUNvdW50ZXJQYWlyOworICAgIHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPGds
OjpCbGVuZFN0YXRlLCBCbGVuZFN0YXRlQ291bnRlclBhaXIsIEJsZW5kU3RhdGVIYXNoRnVuY3Rp
b24sIEJsZW5kU3RhdGVFcXVhbGl0eUZ1bmN0aW9uPiBCbGVuZFN0YXRlTWFwOworICAgIEJsZW5k
U3RhdGVNYXAgbUJsZW5kU3RhdGVDYWNoZTsKKworICAgIC8vIFJhc3Rlcml6ZXIgc3RhdGUgY2Fj
aGUKKyAgICBzdHJ1Y3QgUmFzdGVyaXplclN0YXRlS2V5CisgICAgeworICAgICAgICBnbDo6UmFz
dGVyaXplclN0YXRlIHJhc3Rlcml6ZXJTdGF0ZTsKKyAgICAgICAgYm9vbCBzY2lzc29yRW5hYmxl
ZDsKKyAgICAgICAgdW5zaWduZWQgaW50IGRlcHRoU2l6ZTsKKyAgICB9OworICAgIHN0YXRpYyBz
dGQ6OnNpemVfdCBoYXNoUmFzdGVyaXplclN0YXRlKGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAm
cmFzdGVyU3RhdGUpOworICAgIHN0YXRpYyBib29sIGNvbXBhcmVSYXN0ZXJpemVyU3RhdGVzKGNv
bnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAmYSwgY29uc3QgUmFzdGVyaXplclN0YXRlS2V5ICZiKTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGtNYXhSYXN0ZXJpemVyU3RhdGVzOworCisg
ICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAoKlJhc3Rlcml6ZXJTdGF0ZUhhc2hGdW5jdGlvbikoY29u
c3QgUmFzdGVyaXplclN0YXRlS2V5ICYpOworICAgIHR5cGVkZWYgYm9vbCAoKlJhc3Rlcml6ZXJT
dGF0ZUVxdWFsaXR5RnVuY3Rpb24pKGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAmLCBjb25zdCBS
YXN0ZXJpemVyU3RhdGVLZXkgJik7CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8SUQzRDExUmFzdGVy
aXplclN0YXRlKiwgdW5zaWduZWQgbG9uZyBsb25nPiBSYXN0ZXJpemVyU3RhdGVDb3VudGVyUGFp
cjsKKyAgICB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxSYXN0ZXJpemVyU3RhdGVLZXksIFJh
c3Rlcml6ZXJTdGF0ZUNvdW50ZXJQYWlyLCBSYXN0ZXJpemVyU3RhdGVIYXNoRnVuY3Rpb24sIFJh
c3Rlcml6ZXJTdGF0ZUVxdWFsaXR5RnVuY3Rpb24+IFJhc3Rlcml6ZXJTdGF0ZU1hcDsKKyAgICBS
YXN0ZXJpemVyU3RhdGVNYXAgbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlOworCisgICAgLy8gRGVwdGgg
c3RlbmNpbCBzdGF0ZSBjYWNoZQorICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBoYXNoRGVwdGhTdGVu
Y2lsU3RhdGUoY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZkc1N0YXRlKTsKKyAgICBzdGF0
aWMgYm9vbCBjb21wYXJlRGVwdGhTdGVuY2lsU3RhdGVzKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxT
dGF0ZSAmYSwgY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZiKTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgaW50IGtNYXhEZXB0aFN0ZW5jaWxTdGF0ZXM7CisKKyAgICB0eXBlZGVmIHN0
ZDo6c2l6ZV90ICgqRGVwdGhTdGVuY2lsU3RhdGVIYXNoRnVuY3Rpb24pKGNvbnN0IGdsOjpEZXB0
aFN0ZW5jaWxTdGF0ZSAmKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpEZXB0aFN0ZW5jaWxTdGF0ZUVx
dWFsaXR5RnVuY3Rpb24pKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmLCBjb25zdCBnbDo6
RGVwdGhTdGVuY2lsU3RhdGUgJik7CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8SUQzRDExRGVwdGhT
dGVuY2lsU3RhdGUqLCB1bnNpZ25lZCBsb25nIGxvbmc+IERlcHRoU3RlbmNpbFN0YXRlQ291bnRl
clBhaXI7CisgICAgdHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8Z2w6OkRlcHRoU3RlbmNpbFN0
YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHRoU3RlbmNpbFN0YXRlQ291
bnRlclBhaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwdGhTdGVuY2lsU3Rh
dGVIYXNoRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwdGhTdGVu
Y2lsU3RhdGVFcXVhbGl0eUZ1bmN0aW9uPiBEZXB0aFN0ZW5jaWxTdGF0ZU1hcDsKKyAgICBEZXB0
aFN0ZW5jaWxTdGF0ZU1hcCBtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZTsKKworICAgIC8vIFNhbXBs
ZSBzdGF0ZSBjYWNoZQorICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBoYXNoU2FtcGxlclN0YXRlKGNv
bnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSk7CisgICAgc3RhdGljIGJvb2wgY29t
cGFyZVNhbXBsZXJTdGF0ZXMoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmYSwgY29uc3QgZ2w6OlNh
bXBsZXJTdGF0ZSAmYik7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBrTWF4U2FtcGxl
clN0YXRlczsKKworICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgKCpTYW1wbGVyU3RhdGVIYXNoRnVu
Y3Rpb24pKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJik7CisgICAgdHlwZWRlZiBib29sICgqU2Ft
cGxlclN0YXRlRXF1YWxpdHlGdW5jdGlvbikoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmLCBjb25z
dCBnbDo6U2FtcGxlclN0YXRlICYpOworICAgIHR5cGVkZWYgc3RkOjpwYWlyPElEM0QxMVNhbXBs
ZXJTdGF0ZSosIHVuc2lnbmVkIGxvbmcgbG9uZz4gU2FtcGxlclN0YXRlQ291bnRlclBhaXI7Cisg
ICAgdHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8Z2w6OlNhbXBsZXJTdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVyU3RhdGVDb3VudGVyUGFpciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVyU3RhdGVIYXNoRnVuY3Rpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlclN0YXRlRXF1YWxpdHlGdW5jdGlvbj4gU2Ft
cGxlclN0YXRlTWFwOworICAgIFNhbXBsZXJTdGF0ZU1hcCBtU2FtcGxlclN0YXRlQ2FjaGU7CisK
KyAgICBJRDNEMTFEZXZpY2UgKm1EZXZpY2U7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVT
VjJfUkVOREVSRVJfUkVOREVSU1RBVEVDQUNIRV9IXwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyVGFyZ2V0OS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQ5LmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFy
Z2V0OS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEzIEBACisjaW5jbHVkZSAicHJlY29t
cGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBSZW5kZXJUYXJnZXQ5LmNwcDogSW1wbGVtZW50
cyBhIEQzRDktc3BlY2lmaWMgd3JhcHBlciBmb3IgSURpcmVjdDNEU3VyZmFjZTkKKy8vIHBvaW50
ZXJzIHJldGFpbmVkIGJ5IHJlbmRlcmJ1ZmZlcnMuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyVGFyZ2V0OS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5k
ZXJlcjkuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMu
aCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorCituYW1lc3BhY2UgcngKK3sKKworUmVu
ZGVyVGFyZ2V0OTo6UmVuZGVyVGFyZ2V0OShSZW5kZXJlciAqcmVuZGVyZXIsIElEaXJlY3QzRFN1
cmZhY2U5ICpzdXJmYWNlKQoreworICAgIG1SZW5kZXJlciA9IFJlbmRlcmVyOTo6bWFrZVJlbmRl
cmVyOShyZW5kZXJlcik7CisgICAgbVJlbmRlclRhcmdldCA9IHN1cmZhY2U7CisKKyAgICBpZiAo
bVJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjcmlwdGlv
bjsKKyAgICAgICAgbVJlbmRlclRhcmdldC0+R2V0RGVzYygmZGVzY3JpcHRpb24pOworCisgICAg
ICAgIG1XaWR0aCA9IGRlc2NyaXB0aW9uLldpZHRoOworICAgICAgICBtSGVpZ2h0ID0gZGVzY3Jp
cHRpb24uSGVpZ2h0OworICAgICAgICAKKyAgICAgICAgbUludGVybmFsRm9ybWF0ID0gZDNkOV9n
bDo6R2V0RXF1aXZhbGVudEZvcm1hdChkZXNjcmlwdGlvbi5Gb3JtYXQpOworICAgICAgICBtQWN0
dWFsRm9ybWF0ID0gZDNkOV9nbDo6R2V0RXF1aXZhbGVudEZvcm1hdChkZXNjcmlwdGlvbi5Gb3Jt
YXQpOworICAgICAgICBtU2FtcGxlcyA9IGQzZDlfZ2w6OkdldFNhbXBsZXNGcm9tTXVsdGlzYW1w
bGVUeXBlKGRlc2NyaXB0aW9uLk11bHRpU2FtcGxlVHlwZSk7CisgICAgfQorfQorCitSZW5kZXJU
YXJnZXQ5OjpSZW5kZXJUYXJnZXQ5KFJlbmRlcmVyICpyZW5kZXJlciwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcykKK3sKKyAgICBt
UmVuZGVyZXIgPSBSZW5kZXJlcjk6Om1ha2VSZW5kZXJlcjkocmVuZGVyZXIpOworICAgIG1SZW5k
ZXJUYXJnZXQgPSBOVUxMOworCisgICAgRDNERk9STUFUIHJlcXVlc3RlZEZvcm1hdCA9IGdsX2Qz
ZDk6OkNvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQoZm9ybWF0KTsKKyAgICBpbnQgc3VwcG9ydGVk
U2FtcGxlcyA9IG1SZW5kZXJlci0+Z2V0TmVhcmVzdFN1cHBvcnRlZFNhbXBsZXMocmVxdWVzdGVk
Rm9ybWF0LCBzYW1wbGVzKTsKKworICAgIGlmIChzdXBwb3J0ZWRTYW1wbGVzID09IC0xKQorICAg
IHsKKyAgICAgICAgZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworCisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBIUkVTVUxUIHJlc3VsdCA9IEQzREVSUl9JTlZBTElEQ0FMTDsKKyAg
ICAKKyAgICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApCisgICAgeworICAgICAgICBpZiAo
cmVxdWVzdGVkRm9ybWF0ID09IEQzREZNVF9EMjRTOCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmVzdWx0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKS0+Q3JlYXRlRGVwdGhTdGVuY2lsU3VyZmFj
ZSh3aWR0aCwgaGVpZ2h0LCByZXF1ZXN0ZWRGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6
OkdldE11bHRpc2FtcGxlVHlwZUZyb21TYW1wbGVzKHN1cHBvcnRlZFNhbXBsZXMpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCBGQUxTRSwgJm1SZW5kZXJUYXJnZXQsIE5VTEwpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0ID0gbVJlbmRlcmVyLT5nZXRE
ZXZpY2UoKS0+Q3JlYXRlUmVuZGVyVGFyZ2V0KHdpZHRoLCBoZWlnaHQsIHJlcXVlc3RlZEZvcm1h
dCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2xfZDNkOTo6R2V0TXVsdGlzYW1wbGVUeXBlRnJvbVNhbXBsZXMoc3VwcG9y
dGVkU2FtcGxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgRkFMU0UsICZtUmVuZGVyVGFyZ2V0LCBOVUxMKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkg
fHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICB9CisKKyAgICBtV2lk
dGggPSB3aWR0aDsKKyAgICBtSGVpZ2h0ID0gaGVpZ2h0OworICAgIG1JbnRlcm5hbEZvcm1hdCA9
IGZvcm1hdDsKKyAgICBtU2FtcGxlcyA9IHN1cHBvcnRlZFNhbXBsZXM7CisgICAgbUFjdHVhbEZv
cm1hdCA9IGQzZDlfZ2w6OkdldEVxdWl2YWxlbnRGb3JtYXQocmVxdWVzdGVkRm9ybWF0KTsKK30K
KworUmVuZGVyVGFyZ2V0OTo6flJlbmRlclRhcmdldDkoKQoreworICAgIGlmIChtUmVuZGVyVGFy
Z2V0KQorICAgIHsKKyAgICAgICAgbVJlbmRlclRhcmdldC0+UmVsZWFzZSgpOworICAgIH0KK30K
KworUmVuZGVyVGFyZ2V0OSAqUmVuZGVyVGFyZ2V0OTo6bWFrZVJlbmRlclRhcmdldDkoUmVuZGVy
VGFyZ2V0ICp0YXJnZXQpCit7CisgICAgQVNTRVJUKEhBU19EWU5BTUlDX1RZUEUocng6OlJlbmRl
clRhcmdldDkqLCB0YXJnZXQpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cng6OlJlbmRlclRh
cmdldDkqPih0YXJnZXQpOworfQorCitJRGlyZWN0M0RTdXJmYWNlOSAqUmVuZGVyVGFyZ2V0OTo6
Z2V0U3VyZmFjZSgpCit7CisgICAgLy8gQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciByZWxlYXNp
bmcgdGhlIHJldHVybmVkIHN1cmZhY2UgcmVmZXJlbmNlLgorICAgIGlmIChtUmVuZGVyVGFyZ2V0
KQorICAgIHsKKyAgICAgICAgbVJlbmRlclRhcmdldC0+QWRkUmVmKCk7CisgICAgfQorCisgICAg
cmV0dXJuIG1SZW5kZXJUYXJnZXQ7Cit9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlclRhcmdldDkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0OS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEy
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVy
VGFyZ2V0OS5oOiBEZWZpbmVzIGEgRDNEOS1zcGVjaWZpYyB3cmFwcGVyIGZvciBJRGlyZWN0M0RT
dXJmYWNlOSBwb2ludGVycworLy8gcmV0YWluZWQgYnkgUmVuZGVyYnVmZmVycy4KKworI2lmbmRl
ZiBMSUJHTEVTVjJfUkVOREVSRVJfUkVOREVSVEFSR0VUOV9IXworI2RlZmluZSBMSUJHTEVTVjJf
UkVOREVSRVJfUkVOREVSVEFSR0VUOV9IXworCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVy
L1JlbmRlclRhcmdldC5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyOworY2xh
c3MgUmVuZGVyZXI5OworCitjbGFzcyBSZW5kZXJUYXJnZXQ5IDogcHVibGljIFJlbmRlclRhcmdl
dAoreworICBwdWJsaWM6CisgICAgUmVuZGVyVGFyZ2V0OShSZW5kZXJlciAqcmVuZGVyZXIsIElE
aXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlKTsKKyAgICBSZW5kZXJUYXJnZXQ5KFJlbmRlcmVyICpy
ZW5kZXJlciwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdM
c2l6ZWkgc2FtcGxlcyk7CisgICAgdmlydHVhbCB+UmVuZGVyVGFyZ2V0OSgpOworCisgICAgc3Rh
dGljIFJlbmRlclRhcmdldDkgKm1ha2VSZW5kZXJUYXJnZXQ5KFJlbmRlclRhcmdldCAqcmVuZGVy
VGFyZ2V0KTsKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0U3VyZmFjZSgpOworCisgIHByaXZh
dGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlclRhcmdldDkpOworCisgICAg
SURpcmVjdDNEU3VyZmFjZTkgKm1SZW5kZXJUYXJnZXQ7CisKKyAgICBSZW5kZXJlcjkgKm1SZW5k
ZXJlcjsKK307CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJUQVJH
RVQ5X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL1JlbmRlclRhcmdldDExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDExLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVu
ZGVyVGFyZ2V0MTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3OCBAQAorI2luY2x1ZGUg
InByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVyVGFyZ2V0MTEuY3BwOiBJ
bXBsZW1lbnRzIGEgRFgxMS1zcGVjaWZpYyB3cmFwcGVyIGZvciBJRDNEMTFWaWV3IHBvaW50ZXJz
CisvLyByZXRhaW5lZCBieSBSZW5kZXJidWZmZXJzLgorCisjaW5jbHVkZSAibGliR0xFU3YyL3Jl
bmRlcmVyL1JlbmRlclRhcmdldDExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1Jl
bmRlcmVyMTEuaCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0
aWxzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKworbmFtZXNwYWNlIHJ4Cit7CisK
K3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0UlRWU3VicmVzb3VyY2VJbmRleChJRDNEMTFUZXh0dXJl
MkQgKnRleHR1cmUsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnZpZXcpCit7CisgICAgRDNEMTFf
UkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKKyAgICB2aWV3LT5HZXREZXNjKCZydHZE
ZXNjKTsKKworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleERlc2M7CisgICAgdGV4dHVyZS0+
R2V0RGVzYygmdGV4RGVzYyk7CisKKyAgICB1bnNpZ25lZCBpbnQgbWlwU2xpY2UgPSAwOworICAg
IHVuc2lnbmVkIGludCBhcnJheVNsaWNlID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgbWlwTGV2ZWxz
ID0gdGV4RGVzYy5NaXBMZXZlbHM7CisKKyAgICBzd2l0Y2ggKHJ0dkRlc2MuVmlld0RpbWVuc2lv
bikKKyAgICB7CisgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTFEOgorICAg
ICAgICBtaXBTbGljZSA9IHJ0dkRlc2MuVGV4dHVyZTFELk1pcFNsaWNlOworICAgICAgICBhcnJh
eVNsaWNlID0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVO
U0lPTl9URVhUVVJFMURBUlJBWToKKyAgICAgICAgbWlwU2xpY2UgPSBydHZEZXNjLlRleHR1cmUx
REFycmF5Lk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNlID0gcnR2RGVzYy5UZXh0dXJlMURB
cnJheS5GaXJzdEFycmF5U2xpY2U7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEQzRDEx
X1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEOgorICAgICAgICBtaXBTbGljZSA9IHJ0dkRlc2MuVGV4
dHVyZTJELk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNlID0gMDsKKyAgICAgICAgYnJlYWs7
CisKKyAgICAgIGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWToKKyAgICAg
ICAgbWlwU2xpY2UgPSBydHZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlOworICAgICAgICBh
cnJheVNsaWNlID0gcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2U7CisgICAg
ICAgIGJyZWFrOworCisgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJETVM6
CisgICAgICAgIG1pcFNsaWNlID0gMDsKKyAgICAgICAgYXJyYXlTbGljZSA9IDA7CisgICAgICAg
IGJyZWFrOworCisgICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJETVNBUlJB
WToKKyAgICAgICAgbWlwU2xpY2UgPSAwOworICAgICAgICBhcnJheVNsaWNlID0gcnR2RGVzYy5U
ZXh0dXJlMkRNU0FycmF5LkZpcnN0QXJyYXlTbGljZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAg
IGNhc2UgRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFM0Q6CisgICAgICAgIG1pcFNsaWNlID0g
cnR2RGVzYy5UZXh0dXJlM0QuTWlwU2xpY2U7CisgICAgICAgIGFycmF5U2xpY2UgPSAwOworICAg
ICAgICBicmVhazsKKworICAgICAgY2FzZSBEM0QxMV9SVFZfRElNRU5TSU9OX1VOS05PV046Cisg
ICAgICBjYXNlIEQzRDExX1JUVl9ESU1FTlNJT05fQlVGRkVSOgorICAgICAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gRDNEMTFDYWxjU3Vi
cmVzb3VyY2UobWlwU2xpY2UsIGFycmF5U2xpY2UsIG1pcExldmVscyk7Cit9CisKK3N0YXRpYyB1
bnNpZ25lZCBpbnQgZ2V0RFNWU3VicmVzb3VyY2VJbmRleChJRDNEMTFUZXh0dXJlMkQgKnRleHR1
cmUsIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKnZpZXcpCit7CisgICAgRDNEMTFfREVQVEhfU1RF
TkNJTF9WSUVXX0RFU0MgZHN2RGVzYzsKKyAgICB2aWV3LT5HZXREZXNjKCZkc3ZEZXNjKTsKKwor
ICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleERlc2M7CisgICAgdGV4dHVyZS0+R2V0RGVzYygm
dGV4RGVzYyk7CisKKyAgICB1bnNpZ25lZCBpbnQgbWlwU2xpY2UgPSAwOworICAgIHVuc2lnbmVk
IGludCBhcnJheVNsaWNlID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgbWlwTGV2ZWxzID0gdGV4RGVz
Yy5NaXBMZXZlbHM7CisKKyAgICBzd2l0Y2ggKGRzdkRlc2MuVmlld0RpbWVuc2lvbikKKyAgICB7
CisgICAgICBjYXNlIEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTFEOgorICAgICAgICBtaXBT
bGljZSA9IGRzdkRlc2MuVGV4dHVyZTFELk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNlID0g
MDsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhU
VVJFMURBUlJBWToKKyAgICAgICAgbWlwU2xpY2UgPSBkc3ZEZXNjLlRleHR1cmUxREFycmF5Lk1p
cFNsaWNlOworICAgICAgICBhcnJheVNsaWNlID0gZHN2RGVzYy5UZXh0dXJlMURBcnJheS5GaXJz
dEFycmF5U2xpY2U7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEQzRDExX0RTVl9ESU1F
TlNJT05fVEVYVFVSRTJEOgorICAgICAgICBtaXBTbGljZSA9IGRzdkRlc2MuVGV4dHVyZTJELk1p
cFNsaWNlOworICAgICAgICBhcnJheVNsaWNlID0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAgICAg
IGNhc2UgRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWToKKyAgICAgICAgbWlwU2xp
Y2UgPSBkc3ZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlOworICAgICAgICBhcnJheVNsaWNl
ID0gZHN2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2U7CisgICAgICAgIGJyZWFr
OworCisgICAgICBjYXNlIEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJETVM6CisgICAgICAg
IG1pcFNsaWNlID0gMDsKKyAgICAgICAgYXJyYXlTbGljZSA9IDA7CisgICAgICAgIGJyZWFrOwor
CisgICAgICBjYXNlIEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJETVNBUlJBWToKKyAgICAg
ICAgbWlwU2xpY2UgPSAwOworICAgICAgICBhcnJheVNsaWNlID0gZHN2RGVzYy5UZXh0dXJlMkRN
U0FycmF5LkZpcnN0QXJyYXlTbGljZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRDNE
MTFfUlRWX0RJTUVOU0lPTl9VTktOT1dOOgorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
ICAgIGJyZWFrOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gRDNEMTFDYWxjU3VicmVzb3VyY2UobWlw
U2xpY2UsIGFycmF5U2xpY2UsIG1pcExldmVscyk7Cit9CisKK1JlbmRlclRhcmdldDExOjpSZW5k
ZXJUYXJnZXQxMShSZW5kZXJlciAqcmVuZGVyZXIsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnJ0
diwgSUQzRDExVGV4dHVyZTJEICp0ZXgsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBtUmVuZGVyZXIgPSBSZW5kZXJl
cjExOjptYWtlUmVuZGVyZXIxMShyZW5kZXJlcik7CisgICAgbVRleHR1cmUgPSB0ZXg7CisgICAg
bVJlbmRlclRhcmdldCA9IHJ0djsKKyAgICBtRGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICBtU2hh
ZGVyUmVzb3VyY2UgPSBzcnY7CisgICAgbVN1YnJlc291cmNlSW5kZXggPSAwOworCisgICAgaWYg
KG1SZW5kZXJUYXJnZXQgJiYgbVRleHR1cmUpCisgICAgeworICAgICAgICBEM0QxMV9SRU5ERVJf
VEFSR0VUX1ZJRVdfREVTQyBkZXNjOworICAgICAgICBtUmVuZGVyVGFyZ2V0LT5HZXREZXNjKCZk
ZXNjKTsKKworICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyB0ZXhEZXNjOworICAgICAgICBt
VGV4dHVyZS0+R2V0RGVzYygmdGV4RGVzYyk7CisKKyAgICAgICAgbVN1YnJlc291cmNlSW5kZXgg
PSBnZXRSVFZTdWJyZXNvdXJjZUluZGV4KG1UZXh0dXJlLCBtUmVuZGVyVGFyZ2V0KTsKKyAgICAg
ICAgbVdpZHRoID0gd2lkdGg7CisgICAgICAgIG1IZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIG1T
YW1wbGVzID0gKHRleERlc2MuU2FtcGxlRGVzYy5Db3VudCA+IDEpID8gdGV4RGVzYy5TYW1wbGVE
ZXNjLkNvdW50IDogMDsKKworICAgICAgICBtSW50ZXJuYWxGb3JtYXQgPSBkM2QxMV9nbDo6Q29u
dmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdChkZXNjLkZvcm1hdCk7CisgICAgICAgIG1BY3R1YWxG
b3JtYXQgPSBkM2QxMV9nbDo6Q29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdChkZXNjLkZvcm1h
dCk7CisgICAgfQorfQorCitSZW5kZXJUYXJnZXQxMTo6UmVuZGVyVGFyZ2V0MTEoUmVuZGVyZXIg
KnJlbmRlcmVyLCBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkc3YsIElEM0QxMVRleHR1cmUyRCAq
dGV4LCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQpCit7CisgICAgbVJlbmRlcmVyID0gUmVuZGVyZXIxMTo6bWFrZVJlbmRlcmVyMTEo
cmVuZGVyZXIpOworICAgIG1UZXh0dXJlID0gdGV4OworICAgIG1SZW5kZXJUYXJnZXQgPSBOVUxM
OworICAgIG1EZXB0aFN0ZW5jaWwgPSBkc3Y7CisgICAgbVNoYWRlclJlc291cmNlID0gc3J2Owor
ICAgIG1TdWJyZXNvdXJjZUluZGV4ID0gMDsKKworICAgIGlmIChtRGVwdGhTdGVuY2lsICYmIG1U
ZXh0dXJlKQorICAgIHsKKyAgICAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9WSUVXX0RFU0MgZGVz
YzsKKyAgICAgICAgbURlcHRoU3RlbmNpbC0+R2V0RGVzYygmZGVzYyk7CisKKyAgICAgICAgRDNE
MTFfVEVYVFVSRTJEX0RFU0MgdGV4RGVzYzsKKyAgICAgICAgbVRleHR1cmUtPkdldERlc2MoJnRl
eERlc2MpOworCisgICAgICAgIG1TdWJyZXNvdXJjZUluZGV4ID0gZ2V0RFNWU3VicmVzb3VyY2VJ
bmRleChtVGV4dHVyZSwgbURlcHRoU3RlbmNpbCk7CisgICAgICAgIG1XaWR0aCA9IHdpZHRoOwor
ICAgICAgICBtSGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICBtU2FtcGxlcyA9ICh0ZXhEZXNjLlNh
bXBsZURlc2MuQ291bnQgPiAxKSA/IHRleERlc2MuU2FtcGxlRGVzYy5Db3VudCA6IDA7CisKKyAg
ICAgICAgbUludGVybmFsRm9ybWF0ID0gZDNkMTFfZ2w6OkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxG
b3JtYXQoZGVzYy5Gb3JtYXQpOworICAgICAgICBtQWN0dWFsRm9ybWF0ID0gZDNkMTFfZ2w6OkNv
bnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoZGVzYy5Gb3JtYXQpOworICAgIH0KK30KKworUmVu
ZGVyVGFyZ2V0MTE6OlJlbmRlclRhcmdldDExKFJlbmRlcmVyICpyZW5kZXJlciwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywgYm9v
bCBkZXB0aCkKK3sKKyAgICBtUmVuZGVyZXIgPSBSZW5kZXJlcjExOjptYWtlUmVuZGVyZXIxMShy
ZW5kZXJlcik7CisgICAgbVRleHR1cmUgPSBOVUxMOworICAgIG1SZW5kZXJUYXJnZXQgPSBOVUxM
OworICAgIG1EZXB0aFN0ZW5jaWwgPSBOVUxMOworICAgIG1TaGFkZXJSZXNvdXJjZSA9IE5VTEw7
CisKKyAgICBEWEdJX0ZPUk1BVCByZXF1ZXN0ZWRGb3JtYXQgPSBnbF9kM2QxMTo6Q29udmVydFJl
bmRlcmJ1ZmZlckZvcm1hdChmb3JtYXQpOworCisgICAgaW50IHN1cHBvcnRlZFNhbXBsZXMgPSBt
UmVuZGVyZXItPmdldE5lYXJlc3RTdXBwb3J0ZWRTYW1wbGVzKHJlcXVlc3RlZEZvcm1hdCwgc2Ft
cGxlcyk7CisgICAgaWYgKHN1cHBvcnRlZFNhbXBsZXMgPCAwKQorICAgIHsKKyAgICAgICAgZ2w6
OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRlIHRl
eHR1cmUgcmVzb3VyY2UKKyAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVzYzsKKyAgICAg
ICAgZGVzYy5XaWR0aCA9IHdpZHRoOyAKKyAgICAgICAgZGVzYy5IZWlnaHQgPSBoZWlnaHQ7Cisg
ICAgICAgIGRlc2MuTWlwTGV2ZWxzID0gMTsKKyAgICAgICAgZGVzYy5BcnJheVNpemUgPSAxOwor
ICAgICAgICBkZXNjLkZvcm1hdCA9IHJlcXVlc3RlZEZvcm1hdDsKKyAgICAgICAgZGVzYy5TYW1w
bGVEZXNjLkNvdW50ID0gKHN1cHBvcnRlZFNhbXBsZXMgPT0gMCkgPyAxIDogc3VwcG9ydGVkU2Ft
cGxlczsKKyAgICAgICAgZGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAgICBkZXNj
LlVzYWdlID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKKyAgICAgICAgZGVzYy5DUFVBY2Nlc3NGbGFn
cyA9IDA7CisgICAgICAgIGRlc2MuTWlzY0ZsYWdzID0gMDsKKyAgICAgICAgZGVzYy5CaW5kRmxh
Z3MgPSAoZGVwdGggPyBEM0QxMV9CSU5EX0RFUFRIX1NURU5DSUwgOiAoRDNEMTFfQklORF9SRU5E
RVJfVEFSR0VUIHwgRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0UpKTsKKworICAgICAgICBJRDNE
MTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgICAgIEhSRVNV
TFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlc2MsIE5VTEwsICZtVGV4dHVy
ZSk7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKQorICAgICAgICB7Cisg
ICAgICAgICAgICBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAg
ICAgICBpZiAoZGVwdGgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEQzRDExX0RFUFRIX1NURU5D
SUxfVklFV19ERVNDIGRzdkRlc2M7CisgICAgICAgICAgICBkc3ZEZXNjLkZvcm1hdCA9IHJlcXVl
c3RlZEZvcm1hdDsKKyAgICAgICAgICAgIGRzdkRlc2MuVmlld0RpbWVuc2lvbiA9IChzdXBwb3J0
ZWRTYW1wbGVzID09IDApID8gRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkQgOiBEM0QxMV9E
U1ZfRElNRU5TSU9OX1RFWFRVUkUyRE1TOworICAgICAgICAgICAgZHN2RGVzYy5UZXh0dXJlMkQu
TWlwU2xpY2UgPSAwOworICAgICAgICAgICAgZHN2RGVzYy5GbGFncyA9IDA7CisgICAgICAgICAg
ICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFZpZXcobVRleHR1cmUsICZkc3ZE
ZXNjLCAmbURlcHRoU3RlbmNpbCk7CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9PVVRP
Rk1FTU9SWSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtVGV4dHVyZS0+UmVsZWFz
ZSgpOworICAgICAgICAgICAgICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICAgICAgICAgICAgICBn
bDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBB
U1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsK
KyAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ID0gcmVxdWVzdGVkRm9ybWF0OworICAgICAgICAg
ICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uID0gKHN1cHBvcnRlZFNhbXBsZXMgPT0gMCkgPyBEM0Qx
MV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyRCA6IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJE
TVM7CisgICAgICAgICAgICBydHZEZXNjLlRleHR1cmUyRC5NaXBTbGljZSA9IDA7CisgICAgICAg
ICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcobVRleHR1cmUsICZy
dHZEZXNjLCAmbVJlbmRlclRhcmdldCk7CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9P
VVRPRk1FTU9SWSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtVGV4dHVyZS0+UmVs
ZWFzZSgpOworICAgICAgICAgICAgICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICAgICAgICAgICAg
ICBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKwor
ICAgICAgICAgICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZEZXNjOworICAg
ICAgICAgICAgc3J2RGVzYy5Gb3JtYXQgPSByZXF1ZXN0ZWRGb3JtYXQ7CisgICAgICAgICAgICBz
cnZEZXNjLlZpZXdEaW1lbnNpb24gPSAoc3VwcG9ydGVkU2FtcGxlcyA9PSAwKSA/IEQzRDExX1NS
Vl9ESU1FTlNJT05fVEVYVFVSRTJEIDogRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkRNUzsK
KyAgICAgICAgICAgIHNydkRlc2MuVGV4dHVyZTJELk1vc3REZXRhaWxlZE1pcCA9IDA7CisgICAg
ICAgICAgICBzcnZEZXNjLlRleHR1cmUyRC5NaXBMZXZlbHMgPSAxOworICAgICAgICAgICAgcmVz
dWx0ID0gZGV2aWNlLT5DcmVhdGVTaGFkZXJSZXNvdXJjZVZpZXcobVRleHR1cmUsICZzcnZEZXNj
LCAmbVNoYWRlclJlc291cmNlKTsKKworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFX09VVE9G
TUVNT1JZKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1UZXh0dXJlLT5SZWxlYXNl
KCk7CisgICAgICAgICAgICAgICAgbVRleHR1cmUgPSBOVUxMOworICAgICAgICAgICAgICAgIG1S
ZW5kZXJUYXJnZXQtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0ID0g
TlVMTDsKKyAgICAgICAgICAgICAgICBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKFNV
Q0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1XaWR0aCA9IHdpZHRo
OworICAgIG1IZWlnaHQgPSBoZWlnaHQ7CisgICAgbUludGVybmFsRm9ybWF0ID0gZm9ybWF0Owor
ICAgIG1TYW1wbGVzID0gc3VwcG9ydGVkU2FtcGxlczsKKyAgICBtQWN0dWFsRm9ybWF0ID0gZDNk
MTFfZ2w6OkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQocmVxdWVzdGVkRm9ybWF0KTsKKyAg
ICBtU3VicmVzb3VyY2VJbmRleCA9IEQzRDExQ2FsY1N1YnJlc291cmNlKDAsIDAsIDEpOworfQor
CitSZW5kZXJUYXJnZXQxMTo6flJlbmRlclRhcmdldDExKCkKK3sKKyAgICBpZiAobVRleHR1cmUp
CisgICAgeworICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOworICAgICAgICBtVGV4dHVyZSA9
IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1SZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICBt
UmVuZGVyVGFyZ2V0LT5SZWxlYXNlKCk7CisgICAgICAgIG1SZW5kZXJUYXJnZXQgPSBOVUxMOwor
ICAgIH0KKworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAgbURlcHRoU3Rl
bmNpbC0+UmVsZWFzZSgpOworICAgICAgICBtRGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICB9CisK
KyAgICBpZiAobVNoYWRlclJlc291cmNlKQorICAgIHsKKyAgICAgICAgbVNoYWRlclJlc291cmNl
LT5SZWxlYXNlKCk7CisgICAgICAgIG1TaGFkZXJSZXNvdXJjZSA9IE5VTEw7CisgICAgfQorfQor
CitSZW5kZXJUYXJnZXQxMSAqUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShSZW5k
ZXJUYXJnZXQgKnRhcmdldCkKK3sKKyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShyeDo6UmVu
ZGVyVGFyZ2V0MTEqLCB0YXJnZXQpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cng6OlJlbmRl
clRhcmdldDExKj4odGFyZ2V0KTsKK30KKworSUQzRDExVGV4dHVyZTJEICpSZW5kZXJUYXJnZXQx
MTo6Z2V0VGV4dHVyZSgpIGNvbnN0Cit7CisgICAgaWYgKG1UZXh0dXJlKQorICAgIHsKKyAgICAg
ICAgbVRleHR1cmUtPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtVGV4dHVyZTsKK30K
KworLy8gQWRkcyByZWZlcmVuY2UsIGNhbGxlciBtdXN0IGNhbGwgUmVsZWFzZQorSUQzRDExUmVu
ZGVyVGFyZ2V0VmlldyAqUmVuZGVyVGFyZ2V0MTE6OmdldFJlbmRlclRhcmdldFZpZXcoKSBjb25z
dAoreworICAgIGlmIChtUmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgbVJlbmRlclRhcmdl
dC0+QWRkUmVmKCk7CisgICAgfQorCisgICAgcmV0dXJuIG1SZW5kZXJUYXJnZXQ7Cit9CisKKy8v
IEFkZHMgcmVmZXJlbmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVhc2UKK0lEM0QxMURlcHRoU3Rl
bmNpbFZpZXcgKlJlbmRlclRhcmdldDExOjpnZXREZXB0aFN0ZW5jaWxWaWV3KCkgY29uc3QKK3sK
KyAgICBpZiAobURlcHRoU3RlbmNpbCkKKyAgICB7CisgICAgICAgIG1EZXB0aFN0ZW5jaWwtPkFk
ZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtRGVwdGhTdGVuY2lsOworfQorCisvLyBBZGRz
IHJlZmVyZW5jZSwgY2FsbGVyIG11c3QgY2FsbCBSZWxlYXNlCitJRDNEMTFTaGFkZXJSZXNvdXJj
ZVZpZXcgKlJlbmRlclRhcmdldDExOjpnZXRTaGFkZXJSZXNvdXJjZVZpZXcoKSBjb25zdAorewor
ICAgIGlmIChtU2hhZGVyUmVzb3VyY2UpCisgICAgeworICAgICAgICBtU2hhZGVyUmVzb3VyY2Ut
PkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtU2hhZGVyUmVzb3VyY2U7Cit9CisKK3Vu
c2lnbmVkIGludCBSZW5kZXJUYXJnZXQxMTo6Z2V0U3VicmVzb3VyY2VJbmRleCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1TdWJyZXNvdXJjZUluZGV4OworfQorCit9CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldDExLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9SZW5kZXJUYXJnZXQxMS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDU4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUmVuZGVyVGFyZ2V0MTEuaDogRGVm
aW5lcyBhIERYMTEtc3BlY2lmaWMgd3JhcHBlciBmb3IgSUQzRDExVmlldyBwb2ludGVycworLy8g
cmV0YWluZWQgYnkgUmVuZGVyYnVmZmVycy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJf
UkVOREVSVEFSR0VUMTFfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUlRBUkdF
VDExX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0LmgiCisK
K25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBSZW5kZXJlcjExOworCitj
bGFzcyBSZW5kZXJUYXJnZXQxMSA6IHB1YmxpYyBSZW5kZXJUYXJnZXQKK3sKKyAgcHVibGljOgor
ICAgIFJlbmRlclRhcmdldDExKFJlbmRlcmVyICpyZW5kZXJlciwgSUQzRDExUmVuZGVyVGFyZ2V0
VmlldyAqcnR2LCBJRDNEMTFUZXh0dXJlMkQgKnRleCwgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3
ICpzcnYsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKyAgICBSZW5kZXJUYXJnZXQx
MShSZW5kZXJlciAqcmVuZGVyZXIsIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRzdiwgSUQzRDEx
VGV4dHVyZTJEICp0ZXgsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCk7CisgICAgUmVuZGVyVGFyZ2V0MTEoUmVuZGVyZXIgKnJlbmRl
cmVyLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXpl
aSBzYW1wbGVzLCBib29sIGRlcHRoKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJUYXJnZXQxMSgpOwor
CisgICAgc3RhdGljIFJlbmRlclRhcmdldDExICptYWtlUmVuZGVyVGFyZ2V0MTEoUmVuZGVyVGFy
Z2V0ICpyZW5kZXJUYXJnZXQpOworCisgICAgLy8gQWRkcyByZWZlcmVuY2UsIGNhbGxlciBtdXN0
IGNhbGwgUmVsZWFzZQorICAgIElEM0QxMVRleHR1cmUyRCAqZ2V0VGV4dHVyZSgpIGNvbnN0Owor
CisgICAgLy8gQWRkcyByZWZlcmVuY2UsIGNhbGxlciBtdXN0IGNhbGwgUmVsZWFzZQorICAgIElE
M0QxMVJlbmRlclRhcmdldFZpZXcgKmdldFJlbmRlclRhcmdldFZpZXcoKSBjb25zdDsKKworICAg
IC8vIEFkZHMgcmVmZXJlbmNlLCBjYWxsZXIgbXVzdCBjYWxsIFJlbGVhc2UKKyAgICBJRDNEMTFE
ZXB0aFN0ZW5jaWxWaWV3ICpnZXREZXB0aFN0ZW5jaWxWaWV3KCkgY29uc3Q7CisKKyAgICAvLyBB
ZGRzIHJlZmVyZW5jZSwgY2FsbGVyIG11c3QgY2FsbCBSZWxlYXNlCisgICAgSUQzRDExU2hhZGVy
UmVzb3VyY2VWaWV3ICpnZXRTaGFkZXJSZXNvdXJjZVZpZXcoKSBjb25zdDsKKworICAgIHVuc2ln
bmVkIGludCBnZXRTdWJyZXNvdXJjZUluZGV4KCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBE
SVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVuZGVyVGFyZ2V0MTEpOworCisgICAgdW5zaWduZWQg
aW50IG1TdWJyZXNvdXJjZUluZGV4OworICAgIElEM0QxMVRleHR1cmUyRCAqbVRleHR1cmU7Cisg
ICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqbVJlbmRlclRhcmdldDsKKyAgICBJRDNEMTFEZXB0
aFN0ZW5jaWxWaWV3ICptRGVwdGhTdGVuY2lsOworICAgIElEM0QxMVNoYWRlclJlc291cmNlVmll
dyAqbVNoYWRlclJlc291cmNlOworCisgICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVyOworfTsKKwor
fQorCisjZW5kaWYgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUlRBUkdFVDExX0hfClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlclRhcmdldC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9SZW5kZXJUYXJnZXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIFJlbmRlclRhcmdldC5oOiBEZWZpbmVzIGFuIGFic3RyYWN0IHdyYXBwZXIgY2xh
c3MgdG8gbWFuYWdlIElEaXJlY3QzRFN1cmZhY2U5CisvLyBhbmQgSUQzRDExVmlldyBvYmplY3Rz
IGJlbG9uZ2luZyB0byByZW5kZXJidWZmZXJzLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJF
Ul9SRU5ERVJUQVJHRVRfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUlRBUkdF
VF9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7
CitjbGFzcyBSZW5kZXJUYXJnZXQKK3sKKyAgcHVibGljOgorICAgIFJlbmRlclRhcmdldCgpCisg
ICAgeworICAgICAgICBtV2lkdGggPSAwOworICAgICAgICBtSGVpZ2h0ID0gMDsKKyAgICAgICAg
bUludGVybmFsRm9ybWF0ID0gR0xfTk9ORTsKKyAgICAgICAgbUFjdHVhbEZvcm1hdCA9IEdMX05P
TkU7CisgICAgICAgIG1TYW1wbGVzID0gMDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5SZW5kZXJU
YXJnZXQoKSB7fTsKKworICAgIEdMc2l6ZWkgZ2V0V2lkdGgoKSB7IHJldHVybiBtV2lkdGg7IH0K
KyAgICBHTHNpemVpIGdldEhlaWdodCgpIHsgcmV0dXJuIG1IZWlnaHQ7IH0KKyAgICBHTGVudW0g
Z2V0SW50ZXJuYWxGb3JtYXQoKSB7IHJldHVybiBtSW50ZXJuYWxGb3JtYXQ7IH0KKyAgICBHTGVu
dW0gZ2V0QWN0dWFsRm9ybWF0KCkgeyByZXR1cm4gbUFjdHVhbEZvcm1hdDsgfQorICAgIEdMc2l6
ZWkgZ2V0U2FtcGxlcygpIHsgcmV0dXJuIG1TYW1wbGVzOyB9CisgICAgCisgICAgc3RydWN0IERl
c2MgeworICAgICAgICBHTHNpemVpIHdpZHRoOworICAgICAgICBHTHNpemVpIGhlaWdodDsKKyAg
ICAgICAgR0xlbnVtICBmb3JtYXQ7CisgICAgfTsKKworICBwcm90ZWN0ZWQ6CisgICAgR0xzaXpl
aSBtV2lkdGg7CisgICAgR0xzaXplaSBtSGVpZ2h0OworICAgIEdMZW51bSBtSW50ZXJuYWxGb3Jt
YXQ7CisgICAgR0xlbnVtIG1BY3R1YWxGb3JtYXQ7CisgICAgR0xzaXplaSBtU2FtcGxlczsKKwor
ICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZW5kZXJUYXJnZXQpOwor
fTsKKworfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUlRBUkdFVF9IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyZXI5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzMjE2IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIFJlbmRlcmVyOS5jcHA6IEltcGxlbWVudHMgYSBiYWNrLWVuZCBzcGVjaWZpYyBj
bGFzcyBmb3IgdGhlIEQzRDkgcmVuZGVyZXIuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9CdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvVGV4
dHVyZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbUJpbmFy
eS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9JbmRleERhdGFNYW5hZ2VyLmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
U3dhcENoYWluOS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFn
ZTkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvSW1hZ2U5LmgiCisjaW5jbHVkZSAi
bGliR0xFU3YyL3JlbmRlcmVyL0JsaXQuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyVGFyZ2V0OS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZm
ZXI5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyOS5oIgorI2lu
Y2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlOS5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9RdWVyeTkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
RmVuY2U5LmgiCisKKyNpbmNsdWRlICJsaWJFR0wvRGlzcGxheS5oIgorCisvLyBDYW4gYWxzbyBi
ZSBlbmFibGVkIGJ5IGRlZmluaW5nIEZPUkNFX1JFRl9SQVNUIGluIHRoZSBwcm9qZWN0J3MgcHJl
ZGVmaW5lZCBtYWNyb3MKKyNkZWZpbmUgUkVGX1JBU1QgMAorCisvLyBUaGUgIkRlYnVnIFRoaXMg
UGl4ZWwuLi4iIGZlYXR1cmUgaW4gUElYIG9mdGVuIGZhaWxzIHdoZW4gdXNpbmcgdGhlCisvLyBE
M0Q5RXggaW50ZXJmYWNlcy4gIEluIG9yZGVyIHRvIGdldCBkZWJ1ZyBwaXhlbCB0byB3b3JrIG9u
IGEgVmlzdGEvV2luIDcKKy8vIG1hY2hpbmUsIGRlZmluZSAiQU5HTEVfRU5BQkxFX0QzRDlFWD0w
IiBpbiB5b3VyIHByb2plY3QgZmlsZS4KKyNpZiAhZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEOUVY
KQorLy8gRW5hYmxlcyB1c2Ugb2YgdGhlIElEaXJlY3QzRDlFeCBpbnRlcmZhY2UsIHdoZW4gYXZh
aWxhYmxlCisjZGVmaW5lIEFOR0xFX0VOQUJMRV9EM0Q5RVggMQorI2VuZGlmIC8vICFkZWZpbmVk
KEFOR0xFX0VOQUJMRV9EM0Q5RVgpCisKK25hbWVzcGFjZSByeAoreworc3RhdGljIGNvbnN0IEQz
REZPUk1BVCBSZW5kZXJUYXJnZXRGb3JtYXRzW10gPQorICAgIHsKKyAgICAgICAgRDNERk1UX0Ex
UjVHNUI1LAorICAgIC8vICBEM0RGTVRfQTJSMTBHMTBCMTAsICAgLy8gVGhlIGNvbG9yX3JhbXAg
Y29uZm9ybWFuY2UgdGVzdCB1c2VzIFJlYWRQaXhlbHMgd2l0aCBVTlNJR05FRF9CWVRFIGNhdXNp
bmcgaXQgdG8gdGhpbmsgdGhhdCByZW5kZXJpbmcgc2tpcHBlZCBhIGNvbG91ciB2YWx1ZS4KKyAg
ICAgICAgRDNERk1UX0E4UjhHOEI4LAorICAgICAgICBEM0RGTVRfUjVHNkI1LAorICAgIC8vICBE
M0RGTVRfWDFSNUc1QjUsICAgICAgLy8gSGFzIG5vIGNvbXBhdGlibGUgT3BlbkdMIEVTIHJlbmRl
cmJ1ZmZlciBmb3JtYXQKKyAgICAgICAgRDNERk1UX1g4UjhHOEI4CisgICAgfTsKKworc3RhdGlj
IGNvbnN0IEQzREZPUk1BVCBEZXB0aFN0ZW5jaWxGb3JtYXRzW10gPQorICAgIHsKKyAgICAgICAg
RDNERk1UX1VOS05PV04sCisgICAgLy8gIEQzREZNVF9EMTZfTE9DS0FCTEUsCisgICAgICAgIEQz
REZNVF9EMzIsCisgICAgLy8gIEQzREZNVF9EMTVTMSwKKyAgICAgICAgRDNERk1UX0QyNFM4LAor
ICAgICAgICBEM0RGTVRfRDI0WDgsCisgICAgLy8gIEQzREZNVF9EMjRYNFM0LAorICAgICAgICBE
M0RGTVRfRDE2LAorICAgIC8vICBEM0RGTVRfRDMyRl9MT0NLQUJMRSwKKyAgICAvLyAgRDNERk1U
X0QyNEZTOAorICAgIH07CisKK2VudW0KK3sKKyAgICBNQVhfVkVSVEVYX0NPTlNUQU5UX1ZFQ1RP
UlNfRDNEOSA9IDI1NiwKKyAgICBNQVhfUElYRUxfQ09OU1RBTlRfVkVDVE9SU19TTTIgPSAzMiwK
KyAgICBNQVhfUElYRUxfQ09OU1RBTlRfVkVDVE9SU19TTTMgPSAyMjQsCisgICAgTUFYX1ZBUllJ
TkdfVkVDVE9SU19TTTIgPSA4LAorICAgIE1BWF9WQVJZSU5HX1ZFQ1RPUlNfU00zID0gMTAsCisK
KyAgICBNQVhfVEVYVFVSRV9JTUFHRV9VTklUU19WVEZfU00zID0gNAorfTsKKworUmVuZGVyZXI5
OjpSZW5kZXJlcjkoZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBIREMgaERjLCBib29sIHNvZnR3YXJl
RGV2aWNlKSA6IFJlbmRlcmVyKGRpc3BsYXkpLCBtRGMoaERjKSwgbVNvZnR3YXJlRGV2aWNlKHNv
ZnR3YXJlRGV2aWNlKQoreworICAgIG1EM2Q5TW9kdWxlID0gTlVMTDsKKworICAgIG1EM2Q5ID0g
TlVMTDsKKyAgICBtRDNkOUV4ID0gTlVMTDsKKyAgICBtRGV2aWNlID0gTlVMTDsKKyAgICBtRGV2
aWNlRXggPSBOVUxMOworICAgIG1EZXZpY2VXaW5kb3cgPSBOVUxMOworICAgIG1CbGl0ID0gTlVM
TDsKKworICAgIG1BZGFwdGVyID0gRDNEQURBUFRFUl9ERUZBVUxUOworCisgICAgI2lmIFJFRl9S
QVNUID09IDEgfHwgZGVmaW5lZChGT1JDRV9SRUZfUkFTVCkKKyAgICAgICAgbURldmljZVR5cGUg
PSBEM0RERVZUWVBFX1JFRjsKKyAgICAjZWxzZQorICAgICAgICBtRGV2aWNlVHlwZSA9IEQzRERF
VlRZUEVfSEFMOworICAgICNlbmRpZgorCisgICAgbURldmljZUxvc3QgPSBmYWxzZTsKKworICAg
IG1NYXhTdXBwb3J0ZWRTYW1wbGVzID0gMDsKKworICAgIG1NYXNrZWRDbGVhclNhdmVkU3RhdGUg
PSBOVUxMOworCisgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gTlVMTDsKKyAgICBtSW5kZXhEYXRh
TWFuYWdlciA9IE5VTEw7CisgICAgbUxpbmVMb29wSUIgPSBOVUxMOworCisgICAgbU1heE51bGxD
b2xvcmJ1ZmZlckxSVSA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fTlVMTF9DT0xP
UkJVRkZFUl9DQUNIRV9FTlRSSUVTOyBpKyspCisgICAgeworICAgICAgICBtTnVsbENvbG9yYnVm
ZmVyQ2FjaGVbaV0ubHJ1Q291bnQgPSAwOworICAgICAgICBtTnVsbENvbG9yYnVmZmVyQ2FjaGVb
aV0ud2lkdGggPSAwOworICAgICAgICBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uaGVpZ2h0ID0g
MDsKKyAgICAgICAgbU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ldLmJ1ZmZlciA9IE5VTEw7CisgICAg
fQorfQorCitSZW5kZXJlcjk6On5SZW5kZXJlcjkoKQoreworICAgIHJlbGVhc2VEZXZpY2VSZXNv
dXJjZXMoKTsKKworICAgIGlmIChtRGV2aWNlKQorICAgIHsKKyAgICAgICAgLy8gSWYgdGhlIGRl
dmljZSBpcyBsb3N0LCByZXNldCBpdCBmaXJzdCB0byBwcmV2ZW50IGxlYXZpbmcgdGhlIGRyaXZl
ciBpbiBhbiB1bnN0YWJsZSBzdGF0ZQorICAgICAgICBpZiAodGVzdERldmljZUxvc3QoZmFsc2Up
KQorICAgICAgICB7CisgICAgICAgICAgICByZXNldERldmljZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgbURldmljZS0+UmVsZWFzZSgpOworICAgICAgICBtRGV2aWNlID0gTlVMTDsKKyAgICB9
CisKKyAgICBpZiAobURldmljZUV4KQorICAgIHsKKyAgICAgICAgbURldmljZUV4LT5SZWxlYXNl
KCk7CisgICAgICAgIG1EZXZpY2VFeCA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1EM2Q5KQor
ICAgIHsKKyAgICAgICAgbUQzZDktPlJlbGVhc2UoKTsKKyAgICAgICAgbUQzZDkgPSBOVUxMOwor
ICAgIH0KKworICAgIGlmIChtRGV2aWNlV2luZG93KQorICAgIHsKKyAgICAgICAgRGVzdHJveVdp
bmRvdyhtRGV2aWNlV2luZG93KTsKKyAgICAgICAgbURldmljZVdpbmRvdyA9IE5VTEw7CisgICAg
fQorCisgICAgaWYgKG1EM2Q5RXgpCisgICAgeworICAgICAgICBtRDNkOUV4LT5SZWxlYXNlKCk7
CisgICAgICAgIG1EM2Q5RXggPSBOVUxMOworICAgIH0KKworICAgIGlmIChtRDNkOU1vZHVsZSkK
KyAgICB7CisgICAgICAgIG1EM2Q5TW9kdWxlID0gTlVMTDsKKyAgICB9CisKKyAgICB3aGlsZSAo
IW1NdWx0aVNhbXBsZVN1cHBvcnQuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBbXSBt
TXVsdGlTYW1wbGVTdXBwb3J0LmJlZ2luKCktPnNlY29uZDsKKyAgICAgICAgbU11bHRpU2FtcGxl
U3VwcG9ydC5lcmFzZShtTXVsdGlTYW1wbGVTdXBwb3J0LmJlZ2luKCkpOworICAgIH0KK30KKwor
UmVuZGVyZXI5ICpSZW5kZXJlcjk6Om1ha2VSZW5kZXJlcjkoUmVuZGVyZXIgKnJlbmRlcmVyKQor
eworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpSZW5kZXJlcjkqLCByZW5kZXJlcikp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxyeDo6UmVuZGVyZXI5Kj4ocmVuZGVyZXIpOworfQor
CitFR0xpbnQgUmVuZGVyZXI5Ojppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIWluaXRpYWxpemVD
b21waWxlcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7Cisg
ICAgfQorCisgICAgaWYgKG1Tb2Z0d2FyZURldmljZSkKKyAgICB7CisgICAgICAgIG1EM2Q5TW9k
dWxlID0gR2V0TW9kdWxlSGFuZGxlKFRFWFQoInN3aWZ0c2hhZGVyX2QzZDkuZGxsIikpOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtRDNkOU1vZHVsZSA9IEdldE1vZHVsZUhhbmRs
ZShURVhUKCJkM2Q5LmRsbCIpKTsKKyAgICB9CisKKyAgICBpZiAobUQzZDlNb2R1bGUgPT0gTlVM
TCkKKyAgICB7CisgICAgICAgIEVSUigiTm8gRDNEOSBtb2R1bGUgZm91bmQgLSBhYm9ydGluZyFc
biIpOworICAgICAgICByZXR1cm4gRUdMX05PVF9JTklUSUFMSVpFRDsKKyAgICB9CisKKyAgICB0
eXBlZGVmIEhSRVNVTFQgKFdJTkFQSSAqRGlyZWN0M0RDcmVhdGU5RXhGdW5jKShVSU5ULCBJRGly
ZWN0M0Q5RXgqKik7CisgICAgRGlyZWN0M0RDcmVhdGU5RXhGdW5jIERpcmVjdDNEQ3JlYXRlOUV4
UHRyID0gcmVpbnRlcnByZXRfY2FzdDxEaXJlY3QzRENyZWF0ZTlFeEZ1bmM+KEdldFByb2NBZGRy
ZXNzKG1EM2Q5TW9kdWxlLCAiRGlyZWN0M0RDcmVhdGU5RXgiKSk7CisKKyAgICAvLyBVc2UgRGly
ZWN0M0Q5RXggaWYgYXZhaWxhYmxlLiBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgdmVyc2lvbiBp
cyBsZXNzCisgICAgLy8gaW5jbGluZWQgdG8gcmVwb3J0IGEgbG9zdCBjb250ZXh0LCBmb3IgZXhh
bXBsZSB3aGVuIHRoZSB1c2VyIHN3aXRjaGVzCisgICAgLy8gZGVza3RvcC4gRGlyZWN0M0Q5RXgg
aXMgYXZhaWxhYmxlIGluIFdpbmRvd3MgVmlzdGEgYW5kIGxhdGVyIGlmIHN1aXRhYmxlIGRyaXZl
cnMgYXJlIGF2YWlsYWJsZS4KKyAgICBpZiAoQU5HTEVfRU5BQkxFX0QzRDlFWCAmJiBEaXJlY3Qz
RENyZWF0ZTlFeFB0ciAmJiBTVUNDRUVERUQoRGlyZWN0M0RDcmVhdGU5RXhQdHIoRDNEX1NES19W
RVJTSU9OLCAmbUQzZDlFeCkpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1EM2Q5RXgpOworICAg
ICAgICBtRDNkOUV4LT5RdWVyeUludGVyZmFjZShJSURfSURpcmVjdDNEOSwgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKio+KCZtRDNkOSkpOworICAgICAgICBBU1NFUlQobUQzZDkpOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBtRDNkOSA9IERpcmVjdDNEQ3JlYXRlOShEM0RfU0RLX1ZF
UlNJT04pOworICAgIH0KKworICAgIGlmICghbUQzZDkpCisgICAgeworICAgICAgICBFUlIoIkNv
dWxkIG5vdCBjcmVhdGUgRDNEOSBkZXZpY2UgLSBhYm9ydGluZyFcbiIpOworICAgICAgICByZXR1
cm4gRUdMX05PVF9JTklUSUFMSVpFRDsKKyAgICB9CisKKyAgICBpZiAobURjICE9IE5VTEwpCisg
ICAgeworICAgIC8vICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUU6IERldGVybWluZSB3aGlj
aCBhZGFwdGVyIGluZGV4IHRoZSBkZXZpY2UgY29udGV4dCBjb3JyZXNwb25kcyB0bworICAgIH0K
KworICAgIEhSRVNVTFQgcmVzdWx0OworCisgICAgLy8gR2l2ZSB1cCBvbiBnZXR0aW5nIGRldmlj
ZSBjYXBzIGFmdGVyIGFib3V0IG9uZSBzZWNvbmQuCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAx
MDsgKytpKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gbUQzZDktPkdldERldmljZUNhcHMobUFk
YXB0ZXIsIG1EZXZpY2VUeXBlLCAmbURldmljZUNhcHMpOworICAgICAgICBpZiAoU1VDQ0VFREVE
KHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgaWYgKHJlc3VsdCA9PSBEM0RFUlJfTk9UQVZBSUxBQkxFKQorICAgICAgICB7Cisg
ICAgICAgICAgICBTbGVlcCgxMDApOyAgIC8vIEdpdmUgdGhlIGRyaXZlciBzb21lIHRpbWUgdG8g
aW5pdGlhbGl6ZS9yZWNvdmVyCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoRkFJTEVEKHJl
c3VsdCkpICAgLy8gRDNERVJSX09VVE9GVklERU9NRU1PUlksIEVfT1VUT0ZNRU1PUlksIEQzREVS
Ul9JTlZBTElEREVWSUNFLCBvciBhbm90aGVyIGVycm9yIHdlIGNhbid0IHJlY292ZXIgZnJvbQor
ICAgICAgICB7CisgICAgICAgICAgICBFUlIoImZhaWxlZCB0byBnZXQgZGV2aWNlIGNhcHMgKDB4
JXgpXG4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobURldmljZUNhcHMuUGl4ZWxTaGFkZXJWZXJz
aW9uIDwgRDNEUFNfVkVSU0lPTigyLCAwKSkKKyAgICB7CisgICAgICAgIEVSUigiUmVuZGVyZXIg
ZG9lcyBub3Qgc3VwcG9ydCBQUyAyLjAuIGFib3J0aW5nIVxuIik7CisgICAgICAgIHJldHVybiBF
R0xfTk9UX0lOSVRJQUxJWkVEOworICAgIH0KKworICAgIC8vIFdoZW4gRGlyZWN0WDkgaXMgcnVu
bmluZyB3aXRoIGFuIG9sZGVyIERpcmVjdFg4IGRyaXZlciwgYSBTdHJldGNoUmVjdCBmcm9tIGEg
cmVndWxhciB0ZXh0dXJlIHRvIGEgcmVuZGVyIHRhcmdldCB0ZXh0dXJlIGlzIG5vdCBzdXBwb3J0
ZWQuCisgICAgLy8gVGhpcyBpcyByZXF1aXJlZCBieSBUZXh0dXJlMkQ6OmNvbnZlcnRUb1JlbmRl
clRhcmdldC4KKyAgICBpZiAoKG1EZXZpY2VDYXBzLkRldkNhcHMyICYgRDNEREVWQ0FQUzJfQ0FO
X1NUUkVUQ0hSRUNUX0ZST01fVEVYVFVSRVMpID09IDApCisgICAgeworICAgICAgICBFUlIoIlJl
bmRlcmVyIGRvZXMgbm90IHN1cHBvcnQgc3RyZXRjdHJlY3QgZnJvbSB0ZXh0dXJlcyFcbiIpOwor
ICAgICAgICByZXR1cm4gRUdMX05PVF9JTklUSUFMSVpFRDsKKyAgICB9CisKKyAgICBtRDNkOS0+
R2V0QWRhcHRlcklkZW50aWZpZXIobUFkYXB0ZXIsIDAsICZtQWRhcHRlcklkZW50aWZpZXIpOwor
CisgICAgLy8gQVRJIGNhcmRzIG9uIFhQIGhhdmUgcHJvYmxlbXMgd2l0aCBub24tcG93ZXItb2Yt
dHdvIHRleHR1cmVzLgorICAgIG1TdXBwb3J0c05vblBvd2VyMlRleHR1cmVzID0gIShtRGV2aWNl
Q2Fwcy5UZXh0dXJlQ2FwcyAmIEQzRFBURVhUVVJFQ0FQU19QT1cyKSAmJgorICAgICAgICAhKG1E
ZXZpY2VDYXBzLlRleHR1cmVDYXBzICYgRDNEUFRFWFRVUkVDQVBTX0NVQkVNQVBfUE9XMikgJiYK
KyAgICAgICAgIShtRGV2aWNlQ2Fwcy5UZXh0dXJlQ2FwcyAmIEQzRFBURVhUVVJFQ0FQU19OT05Q
T1cyQ09ORElUSU9OQUwpICYmCisgICAgICAgICEoZ2V0Q29tcGFyYWJsZU9TVmVyc2lvbigpIDwg
dmVyc2lvbldpbmRvd3NWaXN0YSAmJiBtQWRhcHRlcklkZW50aWZpZXIuVmVuZG9ySWQgPT0gVkVO
RE9SX0lEX0FNRCk7CisKKyAgICAvLyBNdXN0IHN1cHBvcnQgYSBtaW5pbXVtIG9mIDI6MSBhbmlz
b3Ryb3B5IGZvciBtYXggYW5pc290cm9weSB0byBiZSBjb25zaWRlcmVkIHN1cHBvcnRlZCwgcGVy
IHRoZSBzcGVjCisgICAgbVN1cHBvcnRzVGV4dHVyZUZpbHRlckFuaXNvdHJvcHkgPSAoKG1EZXZp
Y2VDYXBzLlJhc3RlckNhcHMgJiBEM0RQUkFTVEVSQ0FQU19BTklTT1RST1BZKSAmJiAobURldmlj
ZUNhcHMuTWF4QW5pc290cm9weSA+PSAyKSk7CisKKyAgICBtTWluU3dhcEludGVydmFsID0gNDsK
KyAgICBtTWF4U3dhcEludGVydmFsID0gMDsKKworICAgIGlmIChtRGV2aWNlQ2Fwcy5QcmVzZW50
YXRpb25JbnRlcnZhbHMgJiBEM0RQUkVTRU5UX0lOVEVSVkFMX0lNTUVESUFURSkKKyAgICB7Cisg
ICAgICAgIG1NaW5Td2FwSW50ZXJ2YWwgPSBzdGQ6Om1pbihtTWluU3dhcEludGVydmFsLCAwKTsK
KyAgICAgICAgbU1heFN3YXBJbnRlcnZhbCA9IHN0ZDo6bWF4KG1NYXhTd2FwSW50ZXJ2YWwsIDAp
OworICAgIH0KKyAgICBpZiAobURldmljZUNhcHMuUHJlc2VudGF0aW9uSW50ZXJ2YWxzICYgRDNE
UFJFU0VOVF9JTlRFUlZBTF9PTkUpCisgICAgeworICAgICAgICBtTWluU3dhcEludGVydmFsID0g
c3RkOjptaW4obU1pblN3YXBJbnRlcnZhbCwgMSk7CisgICAgICAgIG1NYXhTd2FwSW50ZXJ2YWwg
PSBzdGQ6Om1heChtTWF4U3dhcEludGVydmFsLCAxKTsKKyAgICB9CisgICAgaWYgKG1EZXZpY2VD
YXBzLlByZXNlbnRhdGlvbkludGVydmFscyAmIEQzRFBSRVNFTlRfSU5URVJWQUxfVFdPKQorICAg
IHsKKyAgICAgICAgbU1pblN3YXBJbnRlcnZhbCA9IHN0ZDo6bWluKG1NaW5Td2FwSW50ZXJ2YWws
IDIpOworICAgICAgICBtTWF4U3dhcEludGVydmFsID0gc3RkOjptYXgobU1heFN3YXBJbnRlcnZh
bCwgMik7CisgICAgfQorICAgIGlmIChtRGV2aWNlQ2Fwcy5QcmVzZW50YXRpb25JbnRlcnZhbHMg
JiBEM0RQUkVTRU5UX0lOVEVSVkFMX1RIUkVFKQorICAgIHsKKyAgICAgICAgbU1pblN3YXBJbnRl
cnZhbCA9IHN0ZDo6bWluKG1NaW5Td2FwSW50ZXJ2YWwsIDMpOworICAgICAgICBtTWF4U3dhcElu
dGVydmFsID0gc3RkOjptYXgobU1heFN3YXBJbnRlcnZhbCwgMyk7CisgICAgfQorICAgIGlmICht
RGV2aWNlQ2Fwcy5QcmVzZW50YXRpb25JbnRlcnZhbHMgJiBEM0RQUkVTRU5UX0lOVEVSVkFMX0ZP
VVIpCisgICAgeworICAgICAgICBtTWluU3dhcEludGVydmFsID0gc3RkOjptaW4obU1pblN3YXBJ
bnRlcnZhbCwgNCk7CisgICAgICAgIG1NYXhTd2FwSW50ZXJ2YWwgPSBzdGQ6Om1heChtTWF4U3dh
cEludGVydmFsLCA0KTsKKyAgICB9CisKKyAgICBpbnQgbWF4ID0gMDsKKyAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IEFycmF5U2l6ZShSZW5kZXJUYXJnZXRGb3JtYXRzKTsgKytpKQor
ICAgIHsKKyAgICAgICAgYm9vbCAqbXVsdGlzYW1wbGVBcnJheSA9IG5ldyBib29sW0QzRE1VTFRJ
U0FNUExFXzE2X1NBTVBMRVMgKyAxXTsKKyAgICAgICAgZ2V0TXVsdGlTYW1wbGVTdXBwb3J0KFJl
bmRlclRhcmdldEZvcm1hdHNbaV0sIG11bHRpc2FtcGxlQXJyYXkpOworICAgICAgICBtTXVsdGlT
YW1wbGVTdXBwb3J0W1JlbmRlclRhcmdldEZvcm1hdHNbaV1dID0gbXVsdGlzYW1wbGVBcnJheTsK
KworICAgICAgICBmb3IgKGludCBqID0gRDNETVVMVElTQU1QTEVfMTZfU0FNUExFUzsgaiA+PSAw
OyAtLWopCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtdWx0aXNhbXBsZUFycmF5W2pdICYm
IGogIT0gRDNETVVMVElTQU1QTEVfTk9OTUFTS0FCTEUgJiYgaiA+IG1heCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBtYXggPSBqOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBBcnJheVNpemUoRGVwdGhT
dGVuY2lsRm9ybWF0cyk7ICsraSkKKyAgICB7CisgICAgICAgIGlmIChEZXB0aFN0ZW5jaWxGb3Jt
YXRzW2ldID09IEQzREZNVF9VTktOT1dOKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgYm9vbCAqbXVsdGlzYW1wbGVBcnJheSA9IG5ldyBib29sW0QzRE1VTFRJU0FNUExFXzE2X1NB
TVBMRVMgKyAxXTsKKyAgICAgICAgZ2V0TXVsdGlTYW1wbGVTdXBwb3J0KERlcHRoU3RlbmNpbEZv
cm1hdHNbaV0sIG11bHRpc2FtcGxlQXJyYXkpOworICAgICAgICBtTXVsdGlTYW1wbGVTdXBwb3J0
W0RlcHRoU3RlbmNpbEZvcm1hdHNbaV1dID0gbXVsdGlzYW1wbGVBcnJheTsKKworICAgICAgICBm
b3IgKGludCBqID0gRDNETVVMVElTQU1QTEVfMTZfU0FNUExFUzsgaiA+PSAwOyAtLWopCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChtdWx0aXNhbXBsZUFycmF5W2pdICYmIGogIT0gRDNETVVM
VElTQU1QTEVfTk9OTUFTS0FCTEUgJiYgaiA+IG1heCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBtYXggPSBqOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
bU1heFN1cHBvcnRlZFNhbXBsZXMgPSBtYXg7CisKKyAgICBzdGF0aWMgY29uc3QgVENIQVIgd2lu
ZG93TmFtZVtdID0gVEVYVCgiQW5nbGVIaWRkZW5XaW5kb3ciKTsKKyAgICBzdGF0aWMgY29uc3Qg
VENIQVIgY2xhc3NOYW1lW10gPSBURVhUKCJTVEFUSUMiKTsKKworICAgIG1EZXZpY2VXaW5kb3cg
PSBDcmVhdGVXaW5kb3dFeChXU19FWF9OT0FDVElWQVRFLCBjbGFzc05hbWUsIHdpbmRvd05hbWUs
IFdTX0RJU0FCTEVEIHwgV1NfUE9QVVAsIDAsIDAsIDEsIDEsIEhXTkRfTUVTU0FHRSwgTlVMTCwg
R2V0TW9kdWxlSGFuZGxlKE5VTEwpLCBOVUxMKTsKKworICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVS
UyBwcmVzZW50UGFyYW1ldGVycyA9IGdldERlZmF1bHRQcmVzZW50UGFyYW1ldGVycygpOworICAg
IERXT1JEIGJlaGF2aW9yRmxhZ3MgPSBEM0RDUkVBVEVfRlBVX1BSRVNFUlZFIHwgRDNEQ1JFQVRF
X05PV0lORE9XQ0hBTkdFUzsKKworICAgIHJlc3VsdCA9IG1EM2Q5LT5DcmVhdGVEZXZpY2UobUFk
YXB0ZXIsIG1EZXZpY2VUeXBlLCBtRGV2aWNlV2luZG93LCBiZWhhdmlvckZsYWdzIHwgRDNEQ1JF
QVRFX0hBUkRXQVJFX1ZFUlRFWFBST0NFU1NJTkcgfCBEM0RDUkVBVEVfUFVSRURFVklDRSwgJnBy
ZXNlbnRQYXJhbWV0ZXJzLCAmbURldmljZSk7CisgICAgaWYgKHJlc3VsdCA9PSBEM0RFUlJfT1VU
T0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCByZXN1bHQgPT0gRDNE
RVJSX0RFVklDRUxPU1QpCisgICAgeworICAgICAgICByZXR1cm4gRUdMX0JBRF9BTExPQzsKKyAg
ICB9CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXN1bHQgPSBt
RDNkOS0+Q3JlYXRlRGV2aWNlKG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgbURldmljZVdpbmRvdywg
YmVoYXZpb3JGbGFncyB8IEQzRENSRUFURV9TT0ZUV0FSRV9WRVJURVhQUk9DRVNTSU5HLCAmcHJl
c2VudFBhcmFtZXRlcnMsICZtRGV2aWNlKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklE
RU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkgfHwgcmVzdWx0ID09IEQzREVSUl9O
T1RBVkFJTEFCTEUgfHwgcmVzdWx0ID09IEQzREVSUl9ERVZJQ0VMT1NUKTsKKyAgICAgICAgICAg
IHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1EM2Q5
RXgpCisgICAgeworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5RdWVyeUludGVyZmFjZShJSURf
SURpcmVjdDNERGV2aWNlOUV4LCAodm9pZCoqKSAmbURldmljZUV4KTsKKyAgICAgICAgQVNTRVJU
KFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICB9CisKKyAgICBtVmVydGV4U2hhZGVyQ2FjaGUuaW5p
dGlhbGl6ZShtRGV2aWNlKTsKKyAgICBtUGl4ZWxTaGFkZXJDYWNoZS5pbml0aWFsaXplKG1EZXZp
Y2UpOworCisgICAgLy8gQ2hlY2sgb2NjbHVzaW9uIHF1ZXJ5IHN1cHBvcnQKKyAgICBJRGlyZWN0
M0RRdWVyeTkgKm9jY2x1c2lvblF1ZXJ5ID0gTlVMTDsKKyAgICBpZiAoU1VDQ0VFREVEKG1EZXZp
Y2UtPkNyZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9PQ0NMVVNJT04sICZvY2NsdXNpb25RdWVyeSkp
ICYmIG9jY2x1c2lvblF1ZXJ5KQorICAgIHsKKyAgICAgICAgb2NjbHVzaW9uUXVlcnktPlJlbGVh
c2UoKTsKKyAgICAgICAgbU9jY2x1c2lvblF1ZXJ5U3VwcG9ydCA9IHRydWU7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIG1PY2NsdXNpb25RdWVyeVN1cHBvcnQgPSBmYWxzZTsKKyAg
ICB9CisKKyAgICAvLyBDaGVjayBldmVudCBxdWVyeSBzdXBwb3J0CisgICAgSURpcmVjdDNEUXVl
cnk5ICpldmVudFF1ZXJ5ID0gTlVMTDsKKyAgICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNyZWF0
ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9FVkVOVCwgJmV2ZW50UXVlcnkpKSAmJiBldmVudFF1ZXJ5KQor
ICAgIHsKKyAgICAgICAgZXZlbnRRdWVyeS0+UmVsZWFzZSgpOworICAgICAgICBtRXZlbnRRdWVy
eVN1cHBvcnQgPSB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtRXZlbnRR
dWVyeVN1cHBvcnQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBEM0RESVNQTEFZTU9ERSBjdXJyZW50
RGlzcGxheU1vZGU7CisgICAgbUQzZDktPkdldEFkYXB0ZXJEaXNwbGF5TW9kZShtQWRhcHRlciwg
JmN1cnJlbnREaXNwbGF5TW9kZSk7CisKKyAgICAvLyBDaGVjayB2ZXJ0ZXggdGV4dHVyZSBzdXBw
b3J0CisgICAgLy8gT25seSBEaXJlY3QzRCAxMCByZWFkeSBkZXZpY2VzIHN1cHBvcnQgYWxsIHRo
ZSBuZWNlc3NhcnkgdmVydGV4IHRleHR1cmUgZm9ybWF0cy4KKyAgICAvLyBXZSB0ZXN0IHRoaXMg
dXNpbmcgRDNEOSBieSBjaGVja2luZyBzdXBwb3J0IGZvciB0aGUgUjE2RiBmb3JtYXQuCisgICAg
bVZlcnRleFRleHR1cmVTdXBwb3J0ID0gbURldmljZUNhcHMuUGl4ZWxTaGFkZXJWZXJzaW9uID49
IEQzRFBTX1ZFUlNJT04oMywgMCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVUND
RUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3Vy
cmVudERpc3BsYXlNb2RlLkZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFVTQUdFX1FVRVJZX1ZFUlRFWFRFWFRV
UkUsIEQzRFJUWVBFX1RFWFRVUkUsIEQzREZNVF9SMTZGKSk7CisKKyAgICAvLyBDaGVjayBkZXB0
aCB0ZXh0dXJlIHN1cHBvcnQKKyAgICAvLyB3ZSB1c2UgSU5UWiBmb3IgZGVwdGggdGV4dHVyZXMg
aW4gRGlyZWN0M0Q5CisgICAgLy8gd2UgYWxzbyB3YW50IE5VTEwgdGV4dHVyZSBzdXBwb3J0IHRv
IGVuc3VyZSB0aGUgd2UgY2FuIG1ha2UgZGVwdGgtb25seSBGQk9zCisgICAgLy8gc2VlIGh0dHA6
Ly9hcmFzLXAuaW5mby90ZXh0cy9EM0Q5R1BVSGFja3MuaHRtbAorICAgIG1EZXB0aFRleHR1cmVT
dXBwb3J0ID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURl
dmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFVTQUdFX0RFUFRI
U1RFTkNJTCwgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0lOVFopKSAmJgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRl
ciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFVTQUdF
X1JFTkRFUlRBUkdFVCwgRDNEUlRZUEVfU1VSRkFDRSwgRDNERk1UX05VTEwpKTsKKworICAgIC8v
IENoZWNrIDMyIGJpdCBmbG9hdGluZyBwb2ludCB0ZXh0dXJlIHN1cHBvcnQKKyAgICBtRmxvYXQz
MkZpbHRlclN1cHBvcnQgPSBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFw
dGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgRDNEVVNBR0VfUVVF
UllfRklMVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0EzMkIzMkczMlIzMkYp
KSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tE
ZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBjdXJyZW50RGlzcGxheU1vZGUuRm9y
bWF0LCBEM0RVU0FHRV9RVUVSWV9GSUxURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RSVFlQRV9DVUJFVEVYVFVSRSwg
RDNERk1UX0EzMkIzMkczMlIzMkYpKTsKKworICAgIG1GbG9hdDMyUmVuZGVyU3VwcG9ydCA9IFNV
Q0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBj
dXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9SRU5ERVJUQVJHRVQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
M0RSVFlQRV9URVhUVVJFLCBEM0RGTVRfQTMyQjMyRzMyUjMyRikpICYmCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRl
ciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIEQzRFVTQUdFX1JFTkRF
UlRBUkdFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEQzRFJUWVBFX0NVQkVURVhUVVJFLCBEM0RGTVRfQTMyQjMyRzMyUjMy
RikpOworCisgICAgaWYgKCFtRmxvYXQzMkZpbHRlclN1cHBvcnQgJiYgIW1GbG9hdDMyUmVuZGVy
U3VwcG9ydCkKKyAgICB7CisgICAgICAgIG1GbG9hdDMyVGV4dHVyZVN1cHBvcnQgPSBTVUNDRUVE
RUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVu
dERpc3BsYXlNb2RlLkZvcm1hdCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEUlRZUEVfVEVYVFVSRSwgRDNE
Rk1UX0EzMkIzMkczMlIzMkYpKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUs
IGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFJUWVBFX0NVQkVU
RVhUVVJFLCBEM0RGTVRfQTMyQjMyRzMyUjMyRikpOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBtRmxvYXQzMlRleHR1cmVTdXBwb3J0ID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBD
aGVjayAxNiBiaXQgZmxvYXRpbmcgcG9pbnQgdGV4dHVyZSBzdXBwb3J0CisgICAgbUZsb2F0MTZG
aWx0ZXJTdXBwb3J0ID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRl
ciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIEQzRFVTQUdFX1FVRVJZ
X0ZJTFRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEQzRFJUWVBFX1RFWFRVUkUsIEQzREZNVF9BMTZCMTZHMTZSMTZGKSkg
JiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2
aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1h
dCwgRDNEVVNBR0VfUVVFUllfRklMVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEUlRZUEVfQ1VCRVRFWFRVUkUsIEQz
REZNVF9BMTZCMTZHMTZSMTZGKSk7CisKKyAgICBtRmxvYXQxNlJlbmRlclN1cHBvcnQgPSBTVUND
RUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3Vy
cmVudERpc3BsYXlNb2RlLkZvcm1hdCwgRDNEVVNBR0VfUkVOREVSVEFSR0VULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNE
UlRZUEVfVEVYVFVSRSwgRDNERk1UX0ExNkIxNkcxNlIxNkYpKSAmJgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIs
IG1EZXZpY2VUeXBlLCBjdXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9SRU5ERVJU
QVJHRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEM0RSVFlQRV9DVUJFVEVYVFVSRSwgRDNERk1UX0ExNkIxNkcxNlIxNkYp
KTsKKworICAgIGlmICghbUZsb2F0MTZGaWx0ZXJTdXBwb3J0ICYmICFtRmxvYXQxNlJlbmRlclN1
cHBvcnQpCisgICAgeworICAgICAgICBtRmxvYXQxNlRleHR1cmVTdXBwb3J0ID0gU1VDQ0VFREVE
KG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJlbnRE
aXNwbGF5TW9kZS5Gb3JtYXQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFJUWVBFX1RFWFRVUkUsIEQzREZN
VF9BMTZCMTZHMTZSMTZGKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNV
Q0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBj
dXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RSVFlQRV9DVUJFVEVY
VFVSRSwgRDNERk1UX0ExNkIxNkcxNlIxNkYpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgbUZsb2F0MTZUZXh0dXJlU3VwcG9ydCA9IHRydWU7CisgICAgfQorCisgICAgLy8gQ2hl
Y2sgRFhUIHRleHR1cmUgc3VwcG9ydAorICAgIG1EWFQxVGV4dHVyZVN1cHBvcnQgPSBTVUNDRUVE
RUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVu
dERpc3BsYXlNb2RlLkZvcm1hdCwgMCwgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0RYVDEpKTsK
KyAgICBtRFhUM1RleHR1cmVTdXBwb3J0ID0gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZv
cm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIDAs
IEQzRFJUWVBFX1RFWFRVUkUsIEQzREZNVF9EWFQzKSk7CisgICAgbURYVDVUZXh0dXJlU3VwcG9y
dCA9IFNVQ0NFRURFRChtRDNkOS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VU
eXBlLCBjdXJyZW50RGlzcGxheU1vZGUuRm9ybWF0LCAwLCBEM0RSVFlQRV9URVhUVVJFLCBEM0RG
TVRfRFhUNSkpOworCisgICAgLy8gQ2hlY2sgbHVtaW5hbmNlW2FscGhhXSB0ZXh0dXJlIHN1cHBv
cnQKKyAgICBtTHVtaW5hbmNlVGV4dHVyZVN1cHBvcnQgPSBTVUNDRUVERUQobUQzZDktPkNoZWNr
RGV2aWNlRm9ybWF0KG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZv
cm1hdCwgMCwgRDNEUlRZUEVfVEVYVFVSRSwgRDNERk1UX0w4KSk7CisgICAgbUx1bWluYW5jZUFs
cGhhVGV4dHVyZVN1cHBvcnQgPSBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1B
ZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgMCwgRDNEUlRZ
UEVfVEVYVFVSRSwgRDNERk1UX0E4TDgpKTsKKworICAgIGluaXRpYWxpemVEZXZpY2UoKTsKKwor
ICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKK30KKworLy8gZG8gYW55IG9uZS10aW1lIGRldmljZSBp
bml0aWFsaXphdGlvbgorLy8gTk9URTogdGhpcyBpcyBhbHNvIG5lZWRlZCBhZnRlciBhIGRldmlj
ZSBsb3N0L3Jlc2V0CisvLyB0byByZXNldCB0aGUgc2NlbmUgc3RhdHVzIGFuZCBlbnN1cmUgdGhl
IGRlZmF1bHQgc3RhdGVzIGFyZSByZXNldC4KK3ZvaWQgUmVuZGVyZXI5Ojppbml0aWFsaXplRGV2
aWNlKCkKK3sKKyAgICAvLyBQZXJtYW5lbnQgbm9uLWRlZmF1bHQgc3RhdGVzCisgICAgbURldmlj
ZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfUE9JTlRTUFJJVEVFTkFCTEUsIFRSVUUpOworICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0xBU1RQSVhFTCwgRkFMU0UpOworCisgICAgaWYg
KG1EZXZpY2VDYXBzLlBpeGVsU2hhZGVyVmVyc2lvbiA+PSBEM0RQU19WRVJTSU9OKDMsIDApKQor
ICAgIHsKKyAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfUE9JTlRTSVpFX01B
WCwgKERXT1JEJiltRGV2aWNlQ2Fwcy5NYXhQb2ludFNpemUpOworICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19QT0lOVFNJWkVfTUFY
LCAweDNGODAwMDAwKTsgICAvLyAxLjBmCisgICAgfQorCisgICAgbWFya0FsbFN0YXRlRGlydHko
KTsKKworICAgIG1TY2VuZVN0YXJ0ZWQgPSBmYWxzZTsKKworICAgIEFTU0VSVCghbUJsaXQgJiYg
IW1WZXJ0ZXhEYXRhTWFuYWdlciAmJiAhbUluZGV4RGF0YU1hbmFnZXIpOworICAgIG1CbGl0ID0g
bmV3IEJsaXQodGhpcyk7CisgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gbmV3IHJ4OjpWZXJ0ZXhE
YXRhTWFuYWdlcih0aGlzKTsKKyAgICBtSW5kZXhEYXRhTWFuYWdlciA9IG5ldyByeDo6SW5kZXhE
YXRhTWFuYWdlcih0aGlzKTsKK30KKworRDNEUFJFU0VOVF9QQVJBTUVURVJTIFJlbmRlcmVyOTo6
Z2V0RGVmYXVsdFByZXNlbnRQYXJhbWV0ZXJzKCkKK3sKKyAgICBEM0RQUkVTRU5UX1BBUkFNRVRF
UlMgcHJlc2VudFBhcmFtZXRlcnMgPSB7MH07CisKKyAgICAvLyBUaGUgZGVmYXVsdCBzd2FwIGNo
YWluIGlzIG5ldmVyIGFjdHVhbGx5IHVzZWQuIFN1cmZhY2Ugd2lsbCBjcmVhdGUgYSBuZXcgc3dh
cCBjaGFpbiB3aXRoIHRoZSBwcm9wZXIgcGFyYW1ldGVycy4KKyAgICBwcmVzZW50UGFyYW1ldGVy
cy5BdXRvRGVwdGhTdGVuY2lsRm9ybWF0ID0gRDNERk1UX1VOS05PV047CisgICAgcHJlc2VudFBh
cmFtZXRlcnMuQmFja0J1ZmZlckNvdW50ID0gMTsKKyAgICBwcmVzZW50UGFyYW1ldGVycy5CYWNr
QnVmZmVyRm9ybWF0ID0gRDNERk1UX1VOS05PV047CisgICAgcHJlc2VudFBhcmFtZXRlcnMuQmFj
a0J1ZmZlcldpZHRoID0gMTsKKyAgICBwcmVzZW50UGFyYW1ldGVycy5CYWNrQnVmZmVySGVpZ2h0
ID0gMTsKKyAgICBwcmVzZW50UGFyYW1ldGVycy5FbmFibGVBdXRvRGVwdGhTdGVuY2lsID0gRkFM
U0U7CisgICAgcHJlc2VudFBhcmFtZXRlcnMuRmxhZ3MgPSAwOworICAgIHByZXNlbnRQYXJhbWV0
ZXJzLmhEZXZpY2VXaW5kb3cgPSBtRGV2aWNlV2luZG93OworICAgIHByZXNlbnRQYXJhbWV0ZXJz
Lk11bHRpU2FtcGxlUXVhbGl0eSA9IDA7CisgICAgcHJlc2VudFBhcmFtZXRlcnMuTXVsdGlTYW1w
bGVUeXBlID0gRDNETVVMVElTQU1QTEVfTk9ORTsKKyAgICBwcmVzZW50UGFyYW1ldGVycy5QcmVz
ZW50YXRpb25JbnRlcnZhbCA9IEQzRFBSRVNFTlRfSU5URVJWQUxfREVGQVVMVDsKKyAgICBwcmVz
ZW50UGFyYW1ldGVycy5Td2FwRWZmZWN0ID0gRDNEU1dBUEVGRkVDVF9ESVNDQVJEOworICAgIHBy
ZXNlbnRQYXJhbWV0ZXJzLldpbmRvd2VkID0gVFJVRTsKKworICAgIHJldHVybiBwcmVzZW50UGFy
YW1ldGVyczsKK30KKworaW50IFJlbmRlcmVyOTo6Z2VuZXJhdGVDb25maWdzKENvbmZpZ0Rlc2Mg
Kipjb25maWdEZXNjTGlzdCkKK3sKKyAgICBEM0RESVNQTEFZTU9ERSBjdXJyZW50RGlzcGxheU1v
ZGU7CisgICAgbUQzZDktPkdldEFkYXB0ZXJEaXNwbGF5TW9kZShtQWRhcHRlciwgJmN1cnJlbnRE
aXNwbGF5TW9kZSk7CisKKyAgICB1bnNpZ25lZCBpbnQgbnVtUmVuZGVyRm9ybWF0cyA9IEFycmF5
U2l6ZShSZW5kZXJUYXJnZXRGb3JtYXRzKTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtRGVwdGhGb3Jt
YXRzID0gQXJyYXlTaXplKERlcHRoU3RlbmNpbEZvcm1hdHMpOworICAgICgqY29uZmlnRGVzY0xp
c3QpID0gbmV3IENvbmZpZ0Rlc2NbbnVtUmVuZGVyRm9ybWF0cyAqIG51bURlcHRoRm9ybWF0c107
CisgICAgaW50IG51bUNvbmZpZ3MgPSAwOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgZm9ybWF0
SW5kZXggPSAwOyBmb3JtYXRJbmRleCA8IG51bVJlbmRlckZvcm1hdHM7IGZvcm1hdEluZGV4Kysp
CisgICAgeworICAgICAgICBEM0RGT1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0ID0gUmVuZGVyVGFy
Z2V0Rm9ybWF0c1tmb3JtYXRJbmRleF07CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRDNk
OS0+Q2hlY2tEZXZpY2VGb3JtYXQobUFkYXB0ZXIsIG1EZXZpY2VUeXBlLCBjdXJyZW50RGlzcGxh
eU1vZGUuRm9ybWF0LCBEM0RVU0FHRV9SRU5ERVJUQVJHRVQsIEQzRFJUWVBFX1NVUkZBQ0UsIHJl
bmRlclRhcmdldEZvcm1hdCk7CisKKyAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAg
ICAgICB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBkZXB0aFN0ZW5jaWxJbmRleCA9
IDA7IGRlcHRoU3RlbmNpbEluZGV4IDwgbnVtRGVwdGhGb3JtYXRzOyBkZXB0aFN0ZW5jaWxJbmRl
eCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEQzREZPUk1BVCBkZXB0aFN0ZW5j
aWxGb3JtYXQgPSBEZXB0aFN0ZW5jaWxGb3JtYXRzW2RlcHRoU3RlbmNpbEluZGV4XTsKKyAgICAg
ICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IEQzRF9PSzsKKworICAgICAgICAgICAgICAgIGlm
KGRlcHRoU3RlbmNpbEZvcm1hdCAhPSBEM0RGTVRfVU5LTk9XTikKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdCht
QWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIEQzRFVTQUdF
X0RFUFRIU1RFTkNJTCwgRDNEUlRZUEVfU1VSRkFDRSwgZGVwdGhTdGVuY2lsRm9ybWF0KTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZihkZXB0aFN0ZW5jaWxG
b3JtYXQgIT0gRDNERk1UX1VOS05PV04pCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1EM2Q5LT5DaGVja0RlcHRoU3RlbmNpbE1hdGNoKG1B
ZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgcmVuZGVyVGFy
Z2V0Rm9ybWF0LCBkZXB0aFN0ZW5jaWxGb3JtYXQpOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdEZXNjIG5ld0NvbmZpZzsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQgPSBk
M2Q5X2dsOjpDb252ZXJ0QmFja0J1ZmZlckZvcm1hdChyZW5kZXJUYXJnZXRGb3JtYXQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3Q29uZmlnLmRlcHRoU3RlbmNpbEZvcm1hdCA9IGQzZDlf
Z2w6OkNvbnZlcnREZXB0aFN0ZW5jaWxGb3JtYXQoZGVwdGhTdGVuY2lsRm9ybWF0KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld0NvbmZpZy5tdWx0aVNhbXBsZSA9IDA7IC8vIEZJWE1FOiBl
bnVtZXJhdGUgbXVsdGktc2FtcGxpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbmZp
Zy5mYXN0Q29uZmlnID0gKGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQgPT0gcmVuZGVyVGFyZ2V0
Rm9ybWF0KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgKCpjb25maWdEZXNjTGlzdClbbnVt
Q29uZmlncysrXSA9IG5ld0NvbmZpZzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBu
dW1Db25maWdzOworfQorCit2b2lkIFJlbmRlcmVyOTo6ZGVsZXRlQ29uZmlncyhDb25maWdEZXNj
ICpjb25maWdEZXNjTGlzdCkKK3sKKyAgICBkZWxldGUgW10gKGNvbmZpZ0Rlc2NMaXN0KTsKK30K
Kwordm9pZCBSZW5kZXJlcjk6OnN0YXJ0U2NlbmUoKQoreworICAgIGlmICghbVNjZW5lU3RhcnRl
ZCkKKyAgICB7CisgICAgICAgIGxvbmcgcmVzdWx0ID0gbURldmljZS0+QmVnaW5TY2VuZSgpOwor
ICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMg
ZGVmZW5zaXZlIGNoZWNraW5nIGFnYWluc3QgdGhlIGRldmljZSBiZWluZworICAgICAgICAgICAg
Ly8gbG9zdCBhdCB1bmV4cGVjdGVkIHRpbWVzLgorICAgICAgICAgICAgbVNjZW5lU3RhcnRlZCA9
IHRydWU7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjplbmRTY2VuZSgp
Cit7CisgICAgaWYgKG1TY2VuZVN0YXJ0ZWQpCisgICAgeworICAgICAgICAvLyBFbmRTY2VuZSBj
YW4gZmFpbCBpZiB0aGUgZGV2aWNlIHdhcyBsb3N0LCBmb3IgZXhhbXBsZSBkdWUKKyAgICAgICAg
Ly8gdG8gYSBURFIgZHVyaW5nIGEgZHJhdyBjYWxsLgorICAgICAgICBtRGV2aWNlLT5FbmRTY2Vu
ZSgpOworICAgICAgICBtU2NlbmVTdGFydGVkID0gZmFsc2U7CisgICAgfQorfQorCit2b2lkIFJl
bmRlcmVyOTo6c3luYyhib29sIGJsb2NrKQoreworICAgIEhSRVNVTFQgcmVzdWx0OworCisgICAg
SURpcmVjdDNEUXVlcnk5KiBxdWVyeSA9IGFsbG9jYXRlRXZlbnRRdWVyeSgpOworICAgIGlmICgh
cXVlcnkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVzdWx0ID0gcXVl
cnktPklzc3VlKEQzRElTU1VFX0VORCk7CisgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsK
KworICAgIGRvCisgICAgeworICAgICAgICByZXN1bHQgPSBxdWVyeS0+R2V0RGF0YShOVUxMLCAw
LCBEM0RHRVREQVRBX0ZMVVNIKTsKKworICAgICAgICBpZihibG9jayAmJiByZXN1bHQgPT0gU19G
QUxTRSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gS2VlcCBwb2xsaW5nLCBidXQgYWxsb3cg
b3RoZXIgdGhyZWFkcyB0byBkbyBzb21ldGhpbmcgdXNlZnVsIGZpcnN0CisgICAgICAgICAgICBT
bGVlcCgwKTsKKyAgICAgICAgICAgIC8vIGV4cGxpY2l0bHkgY2hlY2sgZm9yIGRldmljZSBsb3Nz
CisgICAgICAgICAgICAvLyBzb21lIGRyaXZlcnMgc2VlbSB0byByZXR1cm4gU19GQUxTRSBldmVu
IGlmIHRoZSBkZXZpY2UgaXMgbG9zdAorICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiBEM0RFUlJf
REVWSUNFTE9TVCBsaWtlIHRoZXkgc2hvdWxkCisgICAgICAgICAgICBpZiAodGVzdERldmljZUxv
c3QoZmFsc2UpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IEQzREVS
Ul9ERVZJQ0VMT1NUOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHdoaWxl
KGJsb2NrICYmIHJlc3VsdCA9PSBTX0ZBTFNFKTsKKworICAgIGZyZWVFdmVudFF1ZXJ5KHF1ZXJ5
KTsKKworICAgIGlmIChkM2Q5Ojppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgIHsKKyAg
ICAgICAgbm90aWZ5RGV2aWNlTG9zdCgpOworICAgIH0KK30KKworU3dhcENoYWluICpSZW5kZXJl
cjk6OmNyZWF0ZVN3YXBDaGFpbihIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBHTGVu
dW0gYmFja0J1ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KQoreworICAgIHJl
dHVybiBuZXcgcng6OlN3YXBDaGFpbjkodGhpcywgd2luZG93LCBzaGFyZUhhbmRsZSwgYmFja0J1
ZmZlckZvcm1hdCwgZGVwdGhCdWZmZXJGb3JtYXQpOworfQorCitJRGlyZWN0M0RRdWVyeTkqIFJl
bmRlcmVyOTo6YWxsb2NhdGVFdmVudFF1ZXJ5KCkKK3sKKyAgICBJRGlyZWN0M0RRdWVyeTkgKnF1
ZXJ5ID0gTlVMTDsKKworICAgIGlmIChtRXZlbnRRdWVyeVBvb2wuZW1wdHkoKSkKKyAgICB7Cisg
ICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUXVlcnkoRDNEUVVFUllUWVBF
X0VWRU5ULCAmcXVlcnkpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBxdWVyeSA9IG1FdmVudFF1ZXJ5UG9vbC5iYWNr
KCk7CisgICAgICAgIG1FdmVudFF1ZXJ5UG9vbC5wb3BfYmFjaygpOworICAgIH0KKworICAgIHJl
dHVybiBxdWVyeTsKK30KKwordm9pZCBSZW5kZXJlcjk6OmZyZWVFdmVudFF1ZXJ5KElEaXJlY3Qz
RFF1ZXJ5OSogcXVlcnkpCit7CisgICAgaWYgKG1FdmVudFF1ZXJ5UG9vbC5zaXplKCkgPiAxMDAw
KQorICAgIHsKKyAgICAgICAgcXVlcnktPlJlbGVhc2UoKTsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgbUV2ZW50UXVlcnlQb29sLnB1c2hfYmFjayhxdWVyeSk7CisgICAgfQorfQor
CitJRGlyZWN0M0RWZXJ0ZXhTaGFkZXI5ICpSZW5kZXJlcjk6OmNyZWF0ZVZlcnRleFNoYWRlcihj
b25zdCBEV09SRCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgpCit7CisgICAgcmV0dXJuIG1WZXJ0
ZXhTaGFkZXJDYWNoZS5jcmVhdGUoZnVuY3Rpb24sIGxlbmd0aCk7Cit9CisKK0lEaXJlY3QzRFBp
eGVsU2hhZGVyOSAqUmVuZGVyZXI5OjpjcmVhdGVQaXhlbFNoYWRlcihjb25zdCBEV09SRCAqZnVu
Y3Rpb24sIHNpemVfdCBsZW5ndGgpCit7CisgICAgcmV0dXJuIG1QaXhlbFNoYWRlckNhY2hlLmNy
ZWF0ZShmdW5jdGlvbiwgbGVuZ3RoKTsKK30KKworSFJFU1VMVCBSZW5kZXJlcjk6OmNyZWF0ZVZl
cnRleEJ1ZmZlcihVSU5UIExlbmd0aCwgRFdPUkQgVXNhZ2UsIElEaXJlY3QzRFZlcnRleEJ1ZmZl
cjkgKipwcFZlcnRleEJ1ZmZlcikKK3sKKyAgICBEM0RQT09MIFBvb2wgPSBnZXRCdWZmZXJQb29s
KFVzYWdlKTsKKyAgICByZXR1cm4gbURldmljZS0+Q3JlYXRlVmVydGV4QnVmZmVyKExlbmd0aCwg
VXNhZ2UsIDAsIFBvb2wsIHBwVmVydGV4QnVmZmVyLCBOVUxMKTsKK30KKworVmVydGV4QnVmZmVy
ICpSZW5kZXJlcjk6OmNyZWF0ZVZlcnRleEJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG5ldyBWZXJ0
ZXhCdWZmZXI5KHRoaXMpOworfQorCitIUkVTVUxUIFJlbmRlcmVyOTo6Y3JlYXRlSW5kZXhCdWZm
ZXIoVUlOVCBMZW5ndGgsIERXT1JEIFVzYWdlLCBEM0RGT1JNQVQgRm9ybWF0LCBJRGlyZWN0M0RJ
bmRleEJ1ZmZlcjkgKipwcEluZGV4QnVmZmVyKQoreworICAgIEQzRFBPT0wgUG9vbCA9IGdldEJ1
ZmZlclBvb2woVXNhZ2UpOworICAgIHJldHVybiBtRGV2aWNlLT5DcmVhdGVJbmRleEJ1ZmZlcihM
ZW5ndGgsIFVzYWdlLCBGb3JtYXQsIFBvb2wsIHBwSW5kZXhCdWZmZXIsIE5VTEwpOworfQorCitJ
bmRleEJ1ZmZlciAqUmVuZGVyZXI5OjpjcmVhdGVJbmRleEJ1ZmZlcigpCit7CisgICAgcmV0dXJu
IG5ldyBJbmRleEJ1ZmZlcjkodGhpcyk7Cit9CisKK0J1ZmZlclN0b3JhZ2UgKlJlbmRlcmVyOTo6
Y3JlYXRlQnVmZmVyU3RvcmFnZSgpCit7CisgICAgcmV0dXJuIG5ldyBCdWZmZXJTdG9yYWdlOSgp
OworfQorCitRdWVyeUltcGwgKlJlbmRlcmVyOTo6Y3JlYXRlUXVlcnkoR0xlbnVtIHR5cGUpCit7
CisgICAgcmV0dXJuIG5ldyBRdWVyeTkodGhpcywgdHlwZSk7Cit9CisKK0ZlbmNlSW1wbCAqUmVu
ZGVyZXI5OjpjcmVhdGVGZW5jZSgpCit7CisgICAgcmV0dXJuIG5ldyBGZW5jZTkodGhpcyk7Cit9
CisKK3ZvaWQgUmVuZGVyZXI5OjpzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUs
IGludCBpbmRleCwgY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKQoreworICAg
IGJvb2wgKmZvcmNlU2V0U2FtcGxlcnMgPSAodHlwZSA9PSBnbDo6U0FNUExFUl9QSVhFTCkgPyBt
Rm9yY2VTZXRQaXhlbFNhbXBsZXJTdGF0ZXMgOiBtRm9yY2VTZXRWZXJ0ZXhTYW1wbGVyU3RhdGVz
OworICAgIGdsOjpTYW1wbGVyU3RhdGUgKmFwcGxpZWRTYW1wbGVycyA9ICh0eXBlID09IGdsOjpT
QU1QTEVSX1BJWEVMKSA/IG1DdXJQaXhlbFNhbXBsZXJTdGF0ZXM6IG1DdXJWZXJ0ZXhTYW1wbGVy
U3RhdGVzOworCisgICAgaWYgKGZvcmNlU2V0U2FtcGxlcnNbaW5kZXhdIHx8IG1lbWNtcCgmc2Ft
cGxlclN0YXRlLCAmYXBwbGllZFNhbXBsZXJzW2luZGV4XSwgc2l6ZW9mKGdsOjpTYW1wbGVyU3Rh
dGUpKSAhPSAwKQorICAgIHsKKyAgICAgICAgaW50IGQzZFNhbXBsZXJPZmZzZXQgPSAodHlwZSA9
PSBnbDo6U0FNUExFUl9QSVhFTCkgPyAwIDogRDNEVkVSVEVYVEVYVFVSRVNBTVBMRVIwOworICAg
ICAgICBpbnQgZDNkU2FtcGxlciA9IGluZGV4ICsgZDNkU2FtcGxlck9mZnNldDsKKworICAgICAg
ICBtRGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9BRERSRVNTVSwg
Z2xfZDNkOTo6Q29udmVydFRleHR1cmVXcmFwKHNhbXBsZXJTdGF0ZS53cmFwUykpOworICAgICAg
ICBtRGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9BRERSRVNTViwg
Z2xfZDNkOTo6Q29udmVydFRleHR1cmVXcmFwKHNhbXBsZXJTdGF0ZS53cmFwVCkpOworCisgICAg
ICAgIG1EZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01BR0ZJTFRF
UiwgZ2xfZDNkOTo6Q29udmVydE1hZ0ZpbHRlcihzYW1wbGVyU3RhdGUubWFnRmlsdGVyLCBzYW1w
bGVyU3RhdGUubWF4QW5pc290cm9weSkpOworICAgICAgICBEM0RURVhUVVJFRklMVEVSVFlQRSBk
M2RNaW5GaWx0ZXIsIGQzZE1pcEZpbHRlcjsKKyAgICAgICAgZ2xfZDNkOTo6Q29udmVydE1pbkZp
bHRlcihzYW1wbGVyU3RhdGUubWluRmlsdGVyLCAmZDNkTWluRmlsdGVyLCAmZDNkTWlwRmlsdGVy
LCBzYW1wbGVyU3RhdGUubWF4QW5pc290cm9weSk7CisgICAgICAgIG1EZXZpY2UtPlNldFNhbXBs
ZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX01JTkZJTFRFUiwgZDNkTWluRmlsdGVyKTsKKyAg
ICAgICAgbURldmljZS0+U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQzRFNBTVBfTUlQRklM
VEVSLCBkM2RNaXBGaWx0ZXIpOworICAgICAgICBtRGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNk
U2FtcGxlciwgRDNEU0FNUF9NQVhNSVBMRVZFTCwgc2FtcGxlclN0YXRlLmxvZE9mZnNldCk7Cisg
ICAgICAgIGlmIChtU3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290cm9weSkKKyAgICAgICAgewor
ICAgICAgICAgICAgbURldmljZS0+U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQzRFNBTVBf
TUFYQU5JU09UUk9QWSwgKERXT1JEKXNhbXBsZXJTdGF0ZS5tYXhBbmlzb3Ryb3B5KTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGZvcmNlU2V0U2FtcGxlcnNbaW5kZXhdID0gZmFsc2U7CisgICAg
YXBwbGllZFNhbXBsZXJzW2luZGV4XSA9IHNhbXBsZXJTdGF0ZTsKK30KKwordm9pZCBSZW5kZXJl
cjk6OnNldFRleHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1
cmUgKnRleHR1cmUpCit7CisgICAgaW50IGQzZFNhbXBsZXJPZmZzZXQgPSAodHlwZSA9PSBnbDo6
U0FNUExFUl9QSVhFTCkgPyAwIDogRDNEVkVSVEVYVEVYVFVSRVNBTVBMRVIwOworICAgIGludCBk
M2RTYW1wbGVyID0gaW5kZXggKyBkM2RTYW1wbGVyT2Zmc2V0OworICAgIElEaXJlY3QzREJhc2VU
ZXh0dXJlOSAqZDNkVGV4dHVyZSA9IE5VTEw7CisgICAgdW5zaWduZWQgaW50IHNlcmlhbCA9IDA7
CisgICAgYm9vbCBmb3JjZVNldFRleHR1cmUgPSBmYWxzZTsKKworICAgIHVuc2lnbmVkIGludCAq
YXBwbGllZFNlcmlhbHMgPSAodHlwZSA9PSBnbDo6U0FNUExFUl9QSVhFTCkgPyBtQ3VyUGl4ZWxU
ZXh0dXJlU2VyaWFscyA6IG1DdXJWZXJ0ZXhUZXh0dXJlU2VyaWFsczsKKworICAgIGlmICh0ZXh0
dXJlKQorICAgIHsKKyAgICAgICAgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UgKnRleFN0b3JhZ2Ug
PSB0ZXh0dXJlLT5nZXROYXRpdmVUZXh0dXJlKCk7CisgICAgICAgIGlmICh0ZXhTdG9yYWdlKQor
ICAgICAgICB7CisgICAgICAgICAgICBUZXh0dXJlU3RvcmFnZTkgKnN0b3JhZ2U5ID0gVGV4dHVy
ZVN0b3JhZ2U5OjptYWtlVGV4dHVyZVN0b3JhZ2U5KHRleFN0b3JhZ2UtPmdldFN0b3JhZ2VJbnN0
YW5jZSgpKTsKKyAgICAgICAgICAgIGQzZFRleHR1cmUgPSBzdG9yYWdlOS0+Z2V0QmFzZVRleHR1
cmUoKTsKKyAgICAgICAgfQorICAgICAgICAvLyBJZiB3ZSBnZXQgTlVMTCBiYWNrIGZyb20gZ2V0
QmFzZVRleHR1cmUgaGVyZSwgc29tZXRoaW5nIHdlbnQgd3JvbmcKKyAgICAgICAgLy8gaW4gdGhl
IHRleHR1cmUgY2xhc3MgYW5kIHdlJ3JlIHVuZXhwZWN0ZWRseSBtaXNzaW5nIHRoZSBkM2QgdGV4
dHVyZQorICAgICAgICBBU1NFUlQoZDNkVGV4dHVyZSAhPSBOVUxMKTsKKworICAgICAgICBzZXJp
YWwgPSB0ZXh0dXJlLT5nZXRUZXh0dXJlU2VyaWFsKCk7CisgICAgICAgIGZvcmNlU2V0VGV4dHVy
ZSA9IHRleHR1cmUtPmhhc0RpcnR5SW1hZ2VzKCk7CisgICAgfQorCisgICAgaWYgKGZvcmNlU2V0
VGV4dHVyZSB8fCBhcHBsaWVkU2VyaWFsc1tpbmRleF0gIT0gc2VyaWFsKQorICAgIHsKKyAgICAg
ICAgbURldmljZS0+U2V0VGV4dHVyZShkM2RTYW1wbGVyLCBkM2RUZXh0dXJlKTsKKyAgICB9CisK
KyAgICBhcHBsaWVkU2VyaWFsc1tpbmRleF0gPSBzZXJpYWw7Cit9CisKK3ZvaWQgUmVuZGVyZXI5
OjpzZXRSYXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSAmcmFzdGVyU3Rh
dGUpCit7CisgICAgYm9vbCByYXN0ZXJTdGF0ZUNoYW5nZWQgPSBtRm9yY2VTZXRSYXN0ZXJTdGF0
ZSB8fCBtZW1jbXAoJnJhc3RlclN0YXRlLCAmbUN1clJhc3RlclN0YXRlLCBzaXplb2YoZ2w6OlJh
c3Rlcml6ZXJTdGF0ZSkpICE9IDA7CisKKyAgICBpZiAocmFzdGVyU3RhdGVDaGFuZ2VkKQorICAg
IHsKKyAgICAgICAgLy8gU2V0IHRoZSBjdWxsIG1vZGUKKyAgICAgICAgaWYgKHJhc3RlclN0YXRl
LmN1bGxGYWNlKQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShEM0RSU19DVUxMTU9ERSwgZ2xfZDNkOTo6Q29udmVydEN1bGxNb2RlKHJhc3RlclN0YXRlLmN1
bGxNb2RlLCByYXN0ZXJTdGF0ZS5mcm9udEZhY2UpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NV
TExNT0RFLCBEM0RDVUxMX05PTkUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJhc3RlclN0
YXRlLnBvbHlnb25PZmZzZXRGaWxsKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobUN1ckRl
cHRoU2l6ZSA+IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbURldmljZS0+U2V0
UmVuZGVyU3RhdGUoRDNEUlNfU0xPUEVTQ0FMRURFUFRIQklBUywgKihEV09SRCopJnJhc3RlclN0
YXRlLnBvbHlnb25PZmZzZXRGYWN0b3IpOworCisgICAgICAgICAgICAgICAgZmxvYXQgZGVwdGhC
aWFzID0gbGRleHAocmFzdGVyU3RhdGUucG9seWdvbk9mZnNldFVuaXRzLCAtc3RhdGljX2Nhc3Q8
aW50PihtQ3VyRGVwdGhTaXplKSk7CisgICAgICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfREVQVEhCSUFTLCAqKERXT1JEKikmZGVwdGhCaWFzKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NMT1BFU0NBTEVERVBUSEJJQVMsIDApOworICAgICAg
ICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVQVEhCSUFTLCAwKTsKKyAgICAg
ICAgfQorCisgICAgICAgIG1DdXJSYXN0ZXJTdGF0ZSA9IHJhc3RlclN0YXRlOworICAgIH0KKwor
ICAgIG1Gb3JjZVNldFJhc3RlclN0YXRlID0gZmFsc2U7Cit9CisKK3ZvaWQgUmVuZGVyZXI5Ojpz
ZXRCbGVuZFN0YXRlKGNvbnN0IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0YXRlLCBjb25zdCBnbDo6
Q29sb3IgJmJsZW5kQ29sb3IsIHVuc2lnbmVkIGludCBzYW1wbGVNYXNrKQoreworICAgIGJvb2wg
YmxlbmRTdGF0ZUNoYW5nZWQgPSBtRm9yY2VTZXRCbGVuZFN0YXRlIHx8IG1lbWNtcCgmYmxlbmRT
dGF0ZSwgJm1DdXJCbGVuZFN0YXRlLCBzaXplb2YoZ2w6OkJsZW5kU3RhdGUpKSAhPSAwOworICAg
IGJvb2wgYmxlbmRDb2xvckNoYW5nZWQgPSBtRm9yY2VTZXRCbGVuZFN0YXRlIHx8IG1lbWNtcCgm
YmxlbmRDb2xvciwgJm1DdXJCbGVuZENvbG9yLCBzaXplb2YoZ2w6OkNvbG9yKSkgIT0gMDsKKyAg
ICBib29sIHNhbXBsZU1hc2tDaGFuZ2VkID0gbUZvcmNlU2V0QmxlbmRTdGF0ZSB8fCBzYW1wbGVN
YXNrICE9IG1DdXJTYW1wbGVNYXNrOworCisgICAgaWYgKGJsZW5kU3RhdGVDaGFuZ2VkIHx8IGJs
ZW5kQ29sb3JDaGFuZ2VkKQorICAgIHsKKyAgICAgICAgaWYgKGJsZW5kU3RhdGUuYmxlbmQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0FMUEhB
QkxFTkRFTkFCTEUsIFRSVUUpOworCisgICAgICAgICAgICBpZiAoYmxlbmRTdGF0ZS5zb3VyY2VC
bGVuZFJHQiAhPSBHTF9DT05TVEFOVF9BTFBIQSAmJiBibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdC
ICE9IEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSAmJgorICAgICAgICAgICAgICAgIGJsZW5k
U3RhdGUuZGVzdEJsZW5kUkdCICE9IEdMX0NPTlNUQU5UX0FMUEhBICYmIGJsZW5kU3RhdGUuZGVz
dEJsZW5kUkdCICE9IEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19CTEVOREZBQ1RP
UiwgZ2xfZDNkOTo6Q29udmVydENvbG9yKGJsZW5kQ29sb3IpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19CTEVOREZBQ1RPUiwgRDNEQ09MT1JfUkdCQShnbDo6dW5vcm08
OD4oYmxlbmRDb2xvci5hbHBoYSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OnVub3JtPDg+KGJsZW5k
Q29sb3IuYWxwaGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjp1bm9ybTw4PihibGVuZENvbG9yLmFs
cGhhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oYmxlbmRDb2xvci5hbHBoYSkpKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfU1JDQkxFTkQsIGdsX2QzZDk6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5zb3VyY2VC
bGVuZFJHQikpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVT
VEJMRU5ELCBnbF9kM2Q5OjpDb252ZXJ0QmxlbmRGdW5jKGJsZW5kU3RhdGUuZGVzdEJsZW5kUkdC
KSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19CTEVORE9QLCBn
bF9kM2Q5OjpDb252ZXJ0QmxlbmRPcChibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IpKTsKKwor
ICAgICAgICAgICAgaWYgKGJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0IgIT0gYmxlbmRTdGF0ZS5z
b3VyY2VCbGVuZEFscGhhIHx8CisgICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5kZXN0QmxlbmRS
R0IgIT0gYmxlbmRTdGF0ZS5kZXN0QmxlbmRBbHBoYSB8fAorICAgICAgICAgICAgICAgIGJsZW5k
U3RhdGUuYmxlbmRFcXVhdGlvblJHQiAhPSBibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25BbHBoYSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19TRVBBUkFURUFMUEhBQkxFTkRFTkFCTEUsIFRSVUUpOworCisgICAgICAgICAgICAgICAg
bURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1JDQkxFTkRBTFBIQSwgZ2xfZDNkOTo6Q29u
dmVydEJsZW5kRnVuYyhibGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEpKTsKKyAgICAgICAgICAg
ICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19ERVNUQkxFTkRBTFBIQSwgZ2xfZDNk
OTo6Q29udmVydEJsZW5kRnVuYyhibGVuZFN0YXRlLmRlc3RCbGVuZEFscGhhKSk7CisgICAgICAg
ICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQkxFTkRPUEFMUEhBLCBnbF9k
M2Q5OjpDb252ZXJ0QmxlbmRPcChibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25BbHBoYSkpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NFUEFSQVRFQUxQSEFCTEVOREVOQUJM
RSwgRkFMU0UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFCTEVO
REVOQUJMRSwgRkFMU0UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJsZW5kU3RhdGUuc2Ft
cGxlQWxwaGFUb0NvdmVyYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBGSVhNRSgiU2FtcGxl
IGFscGhhIHRvIGNvdmVyYWdlIGlzIHVuaW1wbGVtZW50ZWQuIik7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBTZXQgdGhlIGNvbG9yIG1hc2sKKyAgICAgICAgYm9vbCB6ZXJvQ29sb3JNYXNrQWxs
b3dlZCA9IGdldEFkYXB0ZXJWZW5kb3IoKSAhPSBWRU5ET1JfSURfQU1EOworICAgICAgICAvLyBB
cHBhcmVudGx5IHNvbWUgQVRJIGNhcmRzIGhhdmUgYSBidWcgd2hlcmUgYSBkcmF3IHdpdGggYSB6
ZXJvIGNvbG9yCisgICAgICAgIC8vIHdyaXRlIG1hc2sgY2FuIGNhdXNlIGxhdGVyIGRyYXdzIHRv
IGhhdmUgaW5jb3JyZWN0IHJlc3VsdHMuIEluc3RlYWQsCisgICAgICAgIC8vIHNldCBhIG5vbnpl
cm8gY29sb3Igd3JpdGUgbWFzayBidXQgbW9kaWZ5IHRoZSBibGVuZCBzdGF0ZSBzbyB0aGF0IG5v
CisgICAgICAgIC8vIGRyYXdpbmcgaXMgZG9uZS4KKyAgICAgICAgLy8gaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2FuZ2xlcHJvamVjdC9pc3N1ZXMvZGV0YWlsP2lkPTE2OQorCisgICAgICAgIERX
T1JEIGNvbG9yTWFzayA9IGdsX2QzZDk6OkNvbnZlcnRDb2xvck1hc2soYmxlbmRTdGF0ZS5jb2xv
ck1hc2tSZWQsIGJsZW5kU3RhdGUuY29sb3JNYXNrR3JlZW4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVl
LCBibGVuZFN0YXRlLmNvbG9yTWFza0FscGhhKTsKKyAgICAgICAgaWYgKGNvbG9yTWFzayA9PSAw
ICYmICF6ZXJvQ29sb3JNYXNrQWxsb3dlZCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRW5h
YmxlIGdyZWVuIGNoYW5uZWwsIGJ1dCBzZXQgYmxlbmRpbmcgc28gbm90aGluZyB3aWxsIGJlIGRy
YXduLgorICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklU
RUVOQUJMRSwgRDNEQ09MT1JXUklURUVOQUJMRV9HUkVFTik7CisgICAgICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBUUlVFKTsKKworICAgICAg
ICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1JDQkxFTkQsIEQzREJMRU5EX1pF
Uk8pOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVTVEJMRU5E
LCBEM0RCTEVORF9PTkUpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfQkxFTkRPUCwgRDNEQkxFTkRPUF9BREQpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JX
UklURUVOQUJMRSwgY29sb3JNYXNrKTsKKyAgICAgICAgfQorCisgICAgICAgIG1EZXZpY2UtPlNl
dFJlbmRlclN0YXRlKEQzRFJTX0RJVEhFUkVOQUJMRSwgYmxlbmRTdGF0ZS5kaXRoZXIgPyBUUlVF
IDogRkFMU0UpOworCisgICAgICAgIG1DdXJCbGVuZFN0YXRlID0gYmxlbmRTdGF0ZTsKKyAgICAg
ICAgbUN1ckJsZW5kQ29sb3IgPSBibGVuZENvbG9yOworICAgIH0KKworICAgIGlmIChzYW1wbGVN
YXNrQ2hhbmdlZCkKKyAgICB7CisgICAgICAgIC8vIFNldCB0aGUgbXVsdGlzYW1wbGUgbWFzawor
ICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19NVUxUSVNBTVBMRUFOVElBTElB
UywgVFJVRSk7CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX01VTFRJU0FN
UExFTUFTSywgc3RhdGljX2Nhc3Q8RFdPUkQ+KHNhbXBsZU1hc2spKTsKKworICAgICAgICBtQ3Vy
U2FtcGxlTWFzayA9IHNhbXBsZU1hc2s7CisgICAgfQorCisgICAgbUZvcmNlU2V0QmxlbmRTdGF0
ZSA9IGZhbHNlOworfQorCit2b2lkIFJlbmRlcmVyOTo6c2V0RGVwdGhTdGVuY2lsU3RhdGUoY29u
c3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZkZXB0aFN0ZW5jaWxTdGF0ZSwgaW50IHN0ZW5jaWxS
ZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0ZW5jaWxCYWNr
UmVmLCBib29sIGZyb250RmFjZUNDVykKK3sKKyAgICBib29sIGRlcHRoU3RlbmNpbFN0YXRlQ2hh
bmdlZCA9IG1Gb3JjZVNldERlcHRoU3RlbmNpbFN0YXRlIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtZW1jbXAoJmRlcHRoU3RlbmNpbFN0YXRlLCAmbUN1ckRlcHRoU3Rl
bmNpbFN0YXRlLCBzaXplb2YoZ2w6OkRlcHRoU3RlbmNpbFN0YXRlKSkgIT0gMDsKKyAgICBib29s
IHN0ZW5jaWxSZWZDaGFuZ2VkID0gbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgfHwgc3RlbmNp
bFJlZiAhPSBtQ3VyU3RlbmNpbFJlZiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGVuY2lsQmFja1JlZiAhPSBtQ3VyU3RlbmNpbEJhY2tSZWY7CisgICAgYm9vbCBmcm9udEZhY2VD
Q1dDaGFuZ2VkID0gbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgfHwgZnJvbnRGYWNlQ0NXICE9
IG1DdXJGcm9udEZhY2VDQ1c7CisKKyAgICBpZiAoZGVwdGhTdGVuY2lsU3RhdGVDaGFuZ2VkKQor
ICAgIHsKKyAgICAgICAgaWYgKGRlcHRoU3RlbmNpbFN0YXRlLmRlcHRoVGVzdCkKKyAgICAgICAg
eworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkVOQUJMRSwgRDNE
WkJfVFJVRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aRlVO
QywgZ2xfZDNkOTo6Q29udmVydENvbXBhcmlzb24oZGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhGdW5j
KSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2
aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aRU5BQkxFLCBEM0RaQl9GQUxTRSk7CisgICAgICAg
IH0KKworICAgICAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUgPSBkZXB0aFN0ZW5jaWxTdGF0ZTsK
KyAgICB9CisKKyAgICBpZiAoZGVwdGhTdGVuY2lsU3RhdGVDaGFuZ2VkIHx8IHN0ZW5jaWxSZWZD
aGFuZ2VkIHx8IGZyb250RmFjZUNDV0NoYW5nZWQpCisgICAgeworICAgICAgICBpZiAoZGVwdGhT
dGVuY2lsU3RhdGUuc3RlbmNpbFRlc3QgJiYgbUN1clN0ZW5jaWxTaXplID4gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTEVOQUJM
RSwgVFJVRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19UV09T
SURFRFNURU5DSUxNT0RFLCBUUlVFKTsKKworICAgICAgICAgICAgLy8gRklYTUU6IFVuc3VwcG9y
dGVkIGJ5IEQzRDkKKyAgICAgICAgICAgIGNvbnN0IEQzRFJFTkRFUlNUQVRFVFlQRSBEM0RSU19D
Q1dfU1RFTkNJTFJFRiA9IEQzRFJTX1NURU5DSUxSRUY7CisgICAgICAgICAgICBjb25zdCBEM0RS
RU5ERVJTVEFURVRZUEUgRDNEUlNfQ0NXX1NURU5DSUxNQVNLID0gRDNEUlNfU1RFTkNJTE1BU0s7
CisgICAgICAgICAgICBjb25zdCBEM0RSRU5ERVJTVEFURVRZUEUgRDNEUlNfQ0NXX1NURU5DSUxX
UklURU1BU0sgPSBEM0RSU19TVEVOQ0lMV1JJVEVNQVNLOworICAgICAgICAgICAgaWYgKGRlcHRo
U3RlbmNpbFN0YXRlLnN0ZW5jaWxXcml0ZW1hc2sgIT0gZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNp
bEJhY2tXcml0ZW1hc2sgfHwKKyAgICAgICAgICAgICAgICBzdGVuY2lsUmVmICE9IHN0ZW5jaWxC
YWNrUmVmIHx8CisgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbE1hc2sg
IT0gZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tNYXNrKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIEVSUigiU2VwYXJhdGUgZnJvbnQvYmFjayBzdGVuY2lsIHdyaXRlbWFza3Ms
IHJlZmVyZW5jZSB2YWx1ZXMsIG9yIHN0ZW5jaWwgbWFzayB2YWx1ZXMgYXJlIGludmFsaWQgdW5k
ZXIgV2ViR0wuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGdldCB0aGUgbWF4
aW11bSBzaXplIG9mIHRoZSBzdGVuY2lsIHJlZgorICAgICAgICAgICAgdW5zaWduZWQgaW50IG1h
eFN0ZW5jaWwgPSAoMSA8PCBtQ3VyU3RlbmNpbFNpemUpIC0gMTsKKworICAgICAgICAgICAgbURl
dmljZS0+U2V0UmVuZGVyU3RhdGUoZnJvbnRGYWNlQ0NXID8gRDNEUlNfU1RFTkNJTFdSSVRFTUFT
SyA6IEQzRFJTX0NDV19TVEVOQ0lMV1JJVEVNQVNLLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFdyaXRlbWFzayk7CisgICAgICAg
ICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lM
RlVOQyA6IEQzRFJTX0NDV19TVEVOQ0lMRlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsX2QzZDk6OkNvbnZlcnRDb21wYXJpc29uKGRlcHRoU3RlbmNpbFN0YXRlLnN0
ZW5jaWxGdW5jKSk7CisKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKGZyb250
RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxSRUYgOiBEM0RSU19DQ1dfU1RFTkNJTFJFRiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGVuY2lsUmVmIDwgKGludCltYXhTdGVu
Y2lsKSA/IHN0ZW5jaWxSZWYgOiBtYXhTdGVuY2lsKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNl
dFJlbmRlclN0YXRlKGZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxNQVNLIDogRDNEUlNfQ0NX
X1NURU5DSUxNQVNLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhT
dGVuY2lsU3RhdGUuc3RlbmNpbE1hc2spOworCisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMRkFJTCA6IEQzRFJTX0NDV19TVEVO
Q0lMRkFJTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkNv
bnZlcnRTdGVuY2lsT3AoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEZhaWwpKTsKKyAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKGZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxa
RkFJTCA6IEQzRFJTX0NDV19TVEVOQ0lMWkZBSUwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbF9kM2Q5OjpDb252ZXJ0U3RlbmNpbE9wKGRlcHRoU3RlbmNpbFN0YXRlLnN0
ZW5jaWxQYXNzRGVwdGhGYWlsKSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0
ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMUEFTUyA6IEQzRFJTX0NDV19TVEVOQ0lMUEFT
UywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkNvbnZlcnRT
dGVuY2lsT3AoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFBhc3NEZXB0aFBhc3MpKTsKKworICAg
ICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoIWZyb250RmFjZUNDVyA/IEQzRFJTX1NU
RU5DSUxXUklURU1BU0sgOiBEM0RSU19DQ1dfU1RFTkNJTFdSSVRFTUFTSywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrV3Jp
dGVtYXNrKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKCFmcm9udEZhY2VD
Q1cgPyBEM0RSU19TVEVOQ0lMRlVOQyA6IEQzRFJTX0NDV19TVEVOQ0lMRlVOQywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkNvbnZlcnRDb21wYXJpc29uKGRl
cHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrRnVuYykpOworCisgICAgICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZSghZnJvbnRGYWNlQ0NXID8gRDNEUlNfU1RFTkNJTFJFRiA6IEQzRFJT
X0NDV19TVEVOQ0lMUkVGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0
ZW5jaWxCYWNrUmVmIDwgKGludCltYXhTdGVuY2lsKSA/IHN0ZW5jaWxCYWNrUmVmIDogbWF4U3Rl
bmNpbCk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZSghZnJvbnRGYWNlQ0NX
ID8gRDNEUlNfU1RFTkNJTE1BU0sgOiBEM0RSU19DQ1dfU1RFTkNJTE1BU0ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja01h
c2spOworCisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZSghZnJvbnRGYWNlQ0NX
ID8gRDNEUlNfU1RFTkNJTEZBSUwgOiBEM0RSU19DQ1dfU1RFTkNJTEZBSUwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kM2Q5OjpDb252ZXJ0U3RlbmNpbE9wKGRlcHRo
U3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrRmFpbCkpOworICAgICAgICAgICAgbURldmljZS0+U2V0
UmVuZGVyU3RhdGUoIWZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxaRkFJTCA6IEQzRFJTX0ND
V19TVEVOQ0lMWkZBSUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9k
M2Q5OjpDb252ZXJ0U3RlbmNpbE9wKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrUGFzc0Rl
cHRoRmFpbCkpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoIWZyb250RmFj
ZUNDVyA/IEQzRFJTX1NURU5DSUxQQVNTIDogRDNEUlNfQ0NXX1NURU5DSUxQQVNTLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfZDNkOTo6Q29udmVydFN0ZW5jaWxPcChk
ZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MpKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0
YXRlKEQzRFJTX1NURU5DSUxFTkFCTEUsIEZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pXUklURUVOQUJMRSwgZGVwdGhTdGVuY2lsU3Rh
dGUuZGVwdGhNYXNrID8gVFJVRSA6IEZBTFNFKTsKKworICAgICAgICBtQ3VyU3RlbmNpbFJlZiA9
IHN0ZW5jaWxSZWY7CisgICAgICAgIG1DdXJTdGVuY2lsQmFja1JlZiA9IHN0ZW5jaWxCYWNrUmVm
OworICAgICAgICBtQ3VyRnJvbnRGYWNlQ0NXID0gZnJvbnRGYWNlQ0NXOworICAgIH0KKworICAg
IG1Gb3JjZVNldERlcHRoU3RlbmNpbFN0YXRlID0gZmFsc2U7Cit9CisKK3ZvaWQgUmVuZGVyZXI5
OjpzZXRTY2lzc29yUmVjdGFuZ2xlKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNjaXNzb3IsIGJvb2wg
ZW5hYmxlZCkKK3sKKyAgICBib29sIHNjaXNzb3JDaGFuZ2VkID0gbUZvcmNlU2V0U2Npc3NvciB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1jbXAoJnNjaXNzb3IsICZtQ3VyU2Npc3Nv
ciwgc2l6ZW9mKGdsOjpSZWN0YW5nbGUpKSAhPSAwIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVuYWJsZWQgIT0gbVNjaXNzb3JFbmFibGVkOworCisgICAgaWYgKHNjaXNzb3JDaGFuZ2Vk
KQorICAgIHsKKyAgICAgICAgaWYgKGVuYWJsZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJF
Q1QgcmVjdDsKKyAgICAgICAgICAgIHJlY3QubGVmdCA9IGdsOjpjbGFtcChzY2lzc29yLngsIDAs
IHN0YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldERlc2Mud2lkdGgpKTsKKyAgICAgICAgICAg
IHJlY3QudG9wID0gZ2w6OmNsYW1wKHNjaXNzb3IueSwgMCwgc3RhdGljX2Nhc3Q8aW50PihtUmVu
ZGVyVGFyZ2V0RGVzYy5oZWlnaHQpKTsKKyAgICAgICAgICAgIHJlY3QucmlnaHQgPSBnbDo6Y2xh
bXAoc2Npc3Nvci54ICsgc2Npc3Nvci53aWR0aCwgMCwgc3RhdGljX2Nhc3Q8aW50PihtUmVuZGVy
VGFyZ2V0RGVzYy53aWR0aCkpOworICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBnbDo6Y2xhbXAo
c2Npc3Nvci55ICsgc2Npc3Nvci5oZWlnaHQsIDAsIHN0YXRpY19jYXN0PGludD4obVJlbmRlclRh
cmdldERlc2MuaGVpZ2h0KSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRTY2lzc29yUmVjdCgm
cmVjdCk7CisgICAgICAgIH0KKworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RS
U19TQ0lTU09SVEVTVEVOQUJMRSwgZW5hYmxlZCA/IFRSVUUgOiBGQUxTRSk7CisKKyAgICAgICAg
bVNjaXNzb3JFbmFibGVkID0gZW5hYmxlZDsKKyAgICAgICAgbUN1clNjaXNzb3IgPSBzY2lzc29y
OworICAgIH0KKworICAgIG1Gb3JjZVNldFNjaXNzb3IgPSBmYWxzZTsKK30KKworYm9vbCBSZW5k
ZXJlcjk6OnNldFZpZXdwb3J0KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnZpZXdwb3J0LCBmbG9hdCB6
TmVhciwgZmxvYXQgekZhciwgR0xlbnVtIGRyYXdNb2RlLCBHTGVudW0gZnJvbnRGYWNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlVmlld3BvcnQpCit7CisgICAgZ2w6
OlJlY3RhbmdsZSBhY3R1YWxWaWV3cG9ydCA9IHZpZXdwb3J0OworICAgIGZsb2F0IGFjdHVhbFpO
ZWFyID0gZ2w6OmNsYW1wMDEoek5lYXIpOworICAgIGZsb2F0IGFjdHVhbFpGYXIgPSBnbDo6Y2xh
bXAwMSh6RmFyKTsKKyAgICBpZiAoaWdub3JlVmlld3BvcnQpCisgICAgeworICAgICAgICBhY3R1
YWxWaWV3cG9ydC54ID0gMDsKKyAgICAgICAgYWN0dWFsVmlld3BvcnQueSA9IDA7CisgICAgICAg
IGFjdHVhbFZpZXdwb3J0LndpZHRoID0gbVJlbmRlclRhcmdldERlc2Mud2lkdGg7CisgICAgICAg
IGFjdHVhbFZpZXdwb3J0LmhlaWdodCA9IG1SZW5kZXJUYXJnZXREZXNjLmhlaWdodDsKKyAgICAg
ICAgYWN0dWFsWk5lYXIgPSAwLjBmOworICAgICAgICBhY3R1YWxaRmFyID0gMS4wZjsKKyAgICB9
CisKKyAgICBEM0RWSUVXUE9SVDkgZHhWaWV3cG9ydDsKKyAgICBkeFZpZXdwb3J0LlggPSBnbDo6
Y2xhbXAoYWN0dWFsVmlld3BvcnQueCwgMCwgc3RhdGljX2Nhc3Q8aW50PihtUmVuZGVyVGFyZ2V0
RGVzYy53aWR0aCkpOworICAgIGR4Vmlld3BvcnQuWSA9IGdsOjpjbGFtcChhY3R1YWxWaWV3cG9y
dC55LCAwLCBzdGF0aWNfY2FzdDxpbnQ+KG1SZW5kZXJUYXJnZXREZXNjLmhlaWdodCkpOworICAg
IGR4Vmlld3BvcnQuV2lkdGggPSBnbDo6Y2xhbXAoYWN0dWFsVmlld3BvcnQud2lkdGgsIDAsIHN0
YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldERlc2Mud2lkdGgpIC0gc3RhdGljX2Nhc3Q8aW50
PihkeFZpZXdwb3J0LlgpKTsKKyAgICBkeFZpZXdwb3J0LkhlaWdodCA9IGdsOjpjbGFtcChhY3R1
YWxWaWV3cG9ydC5oZWlnaHQsIDAsIHN0YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldERlc2Mu
aGVpZ2h0KSAtIHN0YXRpY19jYXN0PGludD4oZHhWaWV3cG9ydC5ZKSk7CisgICAgZHhWaWV3cG9y
dC5NaW5aID0gYWN0dWFsWk5lYXI7CisgICAgZHhWaWV3cG9ydC5NYXhaID0gYWN0dWFsWkZhcjsK
KworICAgIGlmIChkeFZpZXdwb3J0LldpZHRoIDw9IDAgfHwgZHhWaWV3cG9ydC5IZWlnaHQgPD0g
MCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsgICAvLyBOb3RoaW5nIHRvIHJlbmRlcgor
ICAgIH0KKworICAgIGJvb2wgdmlld3BvcnRDaGFuZ2VkID0gbUZvcmNlU2V0Vmlld3BvcnQgfHwg
bWVtY21wKCZhY3R1YWxWaWV3cG9ydCwgJm1DdXJWaWV3cG9ydCwgc2l6ZW9mKGdsOjpSZWN0YW5n
bGUpKSAhPSAwIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxaTmVhciAhPSBt
Q3VyTmVhciB8fCBhY3R1YWxaRmFyICE9IG1DdXJGYXI7CisgICAgaWYgKHZpZXdwb3J0Q2hhbmdl
ZCkKKyAgICB7CisgICAgICAgIG1EZXZpY2UtPlNldFZpZXdwb3J0KCZkeFZpZXdwb3J0KTsKKwor
ICAgICAgICBtQ3VyVmlld3BvcnQgPSBhY3R1YWxWaWV3cG9ydDsKKyAgICAgICAgbUN1ck5lYXIg
PSBhY3R1YWxaTmVhcjsKKyAgICAgICAgbUN1ckZhciA9IGFjdHVhbFpGYXI7CisKKyAgICAgICAg
ZHhfVmVydGV4Q29uc3RhbnRzIHZjID0gezB9OworICAgICAgICBkeF9QaXhlbENvbnN0YW50cyBw
YyA9IHswfTsKKworICAgICAgICB2Yy52aWV3QWRqdXN0WzBdID0gKGZsb2F0KSgoYWN0dWFsVmll
d3BvcnQud2lkdGggLSAoaW50KWR4Vmlld3BvcnQuV2lkdGgpICsgMiAqIChhY3R1YWxWaWV3cG9y
dC54IC0gKGludClkeFZpZXdwb3J0LlgpIC0gMSkgLyBkeFZpZXdwb3J0LldpZHRoOworICAgICAg
ICB2Yy52aWV3QWRqdXN0WzFdID0gKGZsb2F0KSgoYWN0dWFsVmlld3BvcnQuaGVpZ2h0IC0gKGlu
dClkeFZpZXdwb3J0LkhlaWdodCkgKyAyICogKGFjdHVhbFZpZXdwb3J0LnkgLSAoaW50KWR4Vmll
d3BvcnQuWSkgLSAxKSAvIGR4Vmlld3BvcnQuSGVpZ2h0OworICAgICAgICB2Yy52aWV3QWRqdXN0
WzJdID0gKGZsb2F0KWFjdHVhbFZpZXdwb3J0LndpZHRoIC8gZHhWaWV3cG9ydC5XaWR0aDsKKyAg
ICAgICAgdmMudmlld0FkanVzdFszXSA9IChmbG9hdClhY3R1YWxWaWV3cG9ydC5oZWlnaHQgLyBk
eFZpZXdwb3J0LkhlaWdodDsKKworICAgICAgICBwYy52aWV3Q29vcmRzWzBdID0gYWN0dWFsVmll
d3BvcnQud2lkdGggICogMC41ZjsKKyAgICAgICAgcGMudmlld0Nvb3Jkc1sxXSA9IGFjdHVhbFZp
ZXdwb3J0LmhlaWdodCAqIDAuNWY7CisgICAgICAgIHBjLnZpZXdDb29yZHNbMl0gPSBhY3R1YWxW
aWV3cG9ydC54ICsgKGFjdHVhbFZpZXdwb3J0LndpZHRoICAqIDAuNWYpOworICAgICAgICBwYy52
aWV3Q29vcmRzWzNdID0gYWN0dWFsVmlld3BvcnQueSArIChhY3R1YWxWaWV3cG9ydC5oZWlnaHQg
KiAwLjVmKTsKKworICAgICAgICBwYy5kZXB0aEZyb250WzBdID0gKGFjdHVhbFpGYXIgLSBhY3R1
YWxaTmVhcikgKiAwLjVmOworICAgICAgICBwYy5kZXB0aEZyb250WzFdID0gKGFjdHVhbFpOZWFy
ICsgYWN0dWFsWkZhcikgKiAwLjVmOworICAgICAgICBwYy5kZXB0aEZyb250WzJdID0gIWdsOjpJ
c1RyaWFuZ2xlTW9kZShkcmF3TW9kZSkgPyAwLjBmIDogKGZyb250RmFjZSA9PSBHTF9DQ1cgPyAx
LjBmIDogLTEuMGYpOzsKKworICAgICAgICB2Yy5kZXB0aFJhbmdlWzBdID0gYWN0dWFsWk5lYXI7
CisgICAgICAgIHZjLmRlcHRoUmFuZ2VbMV0gPSBhY3R1YWxaRmFyOworICAgICAgICB2Yy5kZXB0
aFJhbmdlWzJdID0gYWN0dWFsWkZhciAtIGFjdHVhbFpOZWFyOworCisgICAgICAgIHBjLmRlcHRo
UmFuZ2VbMF0gPSBhY3R1YWxaTmVhcjsKKyAgICAgICAgcGMuZGVwdGhSYW5nZVsxXSA9IGFjdHVh
bFpGYXI7CisgICAgICAgIHBjLmRlcHRoUmFuZ2VbMl0gPSBhY3R1YWxaRmFyIC0gYWN0dWFsWk5l
YXI7CisKKyAgICAgICAgaWYgKG1lbWNtcCgmdmMsICZtVmVydGV4Q29uc3RhbnRzLCBzaXplb2Yo
ZHhfVmVydGV4Q29uc3RhbnRzKSkgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgbVZlcnRl
eENvbnN0YW50cyA9IHZjOworICAgICAgICAgICAgbUR4VW5pZm9ybXNEaXJ0eSA9IHRydWU7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAobWVtY21wKCZwYywgJm1QaXhlbENvbnN0YW50cywgc2l6
ZW9mKGR4X1BpeGVsQ29uc3RhbnRzKSkgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgbVBp
eGVsQ29uc3RhbnRzID0gcGM7CisgICAgICAgICAgICBtRHhVbmlmb3Jtc0RpcnR5ID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIG1Gb3JjZVNldFZpZXdwb3J0ID0gZmFsc2U7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUmVuZGVyZXI5OjphcHBseVByaW1pdGl2ZVR5cGUoR0xl
bnVtIG1vZGUsIEdMc2l6ZWkgY291bnQpCit7CisgICAgc3dpdGNoIChtb2RlKQorICAgIHsKKyAg
ICAgIGNhc2UgR0xfUE9JTlRTOgorICAgICAgICBtUHJpbWl0aXZlVHlwZSA9IEQzRFBUX1BPSU5U
TElTVDsKKyAgICAgICAgbVByaW1pdGl2ZUNvdW50ID0gY291bnQ7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9MSU5FUzoKKyAgICAgICAgbVByaW1pdGl2ZVR5cGUgPSBEM0RQVF9MSU5F
TElTVDsKKyAgICAgICAgbVByaW1pdGl2ZUNvdW50ID0gY291bnQgLyAyOworICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfTElORV9MT09QOgorICAgICAgICBtUHJpbWl0aXZlVHlwZSA9IEQz
RFBUX0xJTkVTVFJJUDsKKyAgICAgICAgbVByaW1pdGl2ZUNvdW50ID0gY291bnQgLSAxOyAgIC8v
IEQzRCBkb2Vzbid0IHN1cHBvcnQgbGluZSBsb29wcywgc28gd2UgZHJhdyB0aGUgbGFzdCBsaW5l
IHNlcGFyYXRlbHkKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJTkVfU1RSSVA6Cisg
ICAgICAgIG1QcmltaXRpdmVUeXBlID0gRDNEUFRfTElORVNUUklQOworICAgICAgICBtUHJpbWl0
aXZlQ291bnQgPSBjb3VudCAtIDE7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9UUklB
TkdMRVM6CisgICAgICAgIG1QcmltaXRpdmVUeXBlID0gRDNEUFRfVFJJQU5HTEVMSVNUOworICAg
ICAgICBtUHJpbWl0aXZlQ291bnQgPSBjb3VudCAvIDM7CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBHTF9UUklBTkdMRV9TVFJJUDoKKyAgICAgICAgbVByaW1pdGl2ZVR5cGUgPSBEM0RQVF9U
UklBTkdMRVNUUklQOworICAgICAgICBtUHJpbWl0aXZlQ291bnQgPSBjb3VudCAtIDI7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9UUklBTkdMRV9GQU46CisgICAgICAgIG1QcmltaXRp
dmVUeXBlID0gRDNEUFRfVFJJQU5HTEVGQU47CisgICAgICAgIG1QcmltaXRpdmVDb3VudCA9IGNv
dW50IC0gMjsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX0lOVkFMSURfRU5VTSwgZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiBt
UHJpbWl0aXZlQ291bnQgPiAwOworfQorCisKK2dsOjpSZW5kZXJidWZmZXIgKlJlbmRlcmVyOTo6
Z2V0TnVsbENvbG9yYnVmZmVyKGdsOjpSZW5kZXJidWZmZXIgKmRlcHRoYnVmZmVyKQoreworICAg
IGlmICghZGVwdGhidWZmZXIpCisgICAgeworICAgICAgICBFUlIoIlVuZXhwZWN0ZWQgbnVsbCBk
ZXB0aGJ1ZmZlciBmb3IgZGVwdGgtb25seSBGQk8uIik7CisgICAgICAgIHJldHVybiBOVUxMOwor
ICAgIH0KKworICAgIEdMc2l6ZWkgd2lkdGggID0gZGVwdGhidWZmZXItPmdldFdpZHRoKCk7Cisg
ICAgR0xzaXplaSBoZWlnaHQgPSBkZXB0aGJ1ZmZlci0+Z2V0SGVpZ2h0KCk7CisKKyAgICAvLyBz
ZWFyY2ggY2FjaGVkIG51bGxjb2xvcmJ1ZmZlcnMKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE5V
TV9OVUxMX0NPTE9SQlVGRkVSX0NBQ0hFX0VOVFJJRVM7IGkrKykKKyAgICB7CisgICAgICAgIGlm
IChtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uYnVmZmVyICE9IE5VTEwgJiYKKyAgICAgICAgICAg
IG1OdWxsQ29sb3JidWZmZXJDYWNoZVtpXS53aWR0aCA9PSB3aWR0aCAmJgorICAgICAgICAgICAg
bU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ldLmhlaWdodCA9PSBoZWlnaHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1OdWxsQ29sb3JidWZmZXJDYWNoZVtpXS5scnVDb3VudCA9ICsrbU1heE51bGxD
b2xvcmJ1ZmZlckxSVTsKKyAgICAgICAgICAgIHJldHVybiBtTnVsbENvbG9yYnVmZmVyQ2FjaGVb
aV0uYnVmZmVyOworICAgICAgICB9CisgICAgfQorCisgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqbnVs
bGJ1ZmZlciA9IG5ldyBnbDo6UmVuZGVyYnVmZmVyKHRoaXMsIDAsIG5ldyBnbDo6Q29sb3JidWZm
ZXIodGhpcywgd2lkdGgsIGhlaWdodCwgR0xfTk9ORSwgMCkpOworCisgICAgLy8gYWRkIG51bGxi
dWZmZXIgdG8gdGhlIGNhY2hlCisgICAgTnVsbENvbG9yYnVmZmVyQ2FjaGVFbnRyeSAqb2xkZXN0
ID0gJm1OdWxsQ29sb3JidWZmZXJDYWNoZVswXTsKKyAgICBmb3IgKGludCBpID0gMTsgaSA8IE5V
TV9OVUxMX0NPTE9SQlVGRkVSX0NBQ0hFX0VOVFJJRVM7IGkrKykKKyAgICB7CisgICAgICAgIGlm
IChtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0ubHJ1Q291bnQgPCBvbGRlc3QtPmxydUNvdW50KQor
ICAgICAgICB7CisgICAgICAgICAgICBvbGRlc3QgPSAmbU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ld
OworICAgICAgICB9CisgICAgfQorCisgICAgZGVsZXRlIG9sZGVzdC0+YnVmZmVyOworICAgIG9s
ZGVzdC0+YnVmZmVyID0gbnVsbGJ1ZmZlcjsKKyAgICBvbGRlc3QtPmxydUNvdW50ID0gKyttTWF4
TnVsbENvbG9yYnVmZmVyTFJVOworICAgIG9sZGVzdC0+d2lkdGggPSB3aWR0aDsKKyAgICBvbGRl
c3QtPmhlaWdodCA9IGhlaWdodDsKKworICAgIHJldHVybiBudWxsYnVmZmVyOworfQorCitib29s
IFJlbmRlcmVyOTo6YXBwbHlSZW5kZXJUYXJnZXQoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZl
cikKK3sKKyAgICAvLyBpZiB0aGVyZSBpcyBubyBjb2xvciBhdHRhY2htZW50IHdlIG11c3Qgc3lu
dGhlc2l6ZSBhIE5VTEwgY29sb3JhdHRhY2htZW50CisgICAgLy8gdG8ga2VlcCB0aGUgRDNEIHJ1
bnRpbWUgaGFwcHkuICBUaGlzIHNob3VsZCBvbmx5IGJlIHBvc3NpYmxlIGlmIGRlcHRoIHRleHR1
cmluZy4KKyAgICBnbDo6UmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXJPYmplY3QgPSBOVUxMOwor
ICAgIGlmIChmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXJUeXBlKDApICE9IEdMX05PTkUpCisg
ICAgeworICAgICAgICByZW5kZXJidWZmZXJPYmplY3QgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3Ji
dWZmZXIoMCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJlbmRlcmJ1ZmZlck9i
amVjdCA9IGdldE51bGxDb2xvcmJ1ZmZlcihmcmFtZWJ1ZmZlci0+Z2V0RGVwdGhidWZmZXIoKSk7
CisgICAgfQorICAgIGlmICghcmVuZGVyYnVmZmVyT2JqZWN0KQorICAgIHsKKyAgICAgICAgRVJS
KCJ1bmFibGUgdG8gbG9jYXRlIHJlbmRlcmJ1ZmZlciBmb3IgRkJPLiIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCByZW5kZXJUYXJnZXRDaGFuZ2VkID0gZmFsc2U7
CisgICAgdW5zaWduZWQgaW50IHJlbmRlclRhcmdldFNlcmlhbCA9IHJlbmRlcmJ1ZmZlck9iamVj
dC0+Z2V0U2VyaWFsKCk7CisgICAgaWYgKHJlbmRlclRhcmdldFNlcmlhbCAhPSBtQXBwbGllZFJl
bmRlclRhcmdldFNlcmlhbCkKKyAgICB7CisgICAgICAgIC8vIEFwcGx5IHRoZSByZW5kZXIgdGFy
Z2V0IG9uIHRoZSBkZXZpY2UKKyAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRlclRhcmdl
dFN1cmZhY2UgPSBOVUxMOworCisgICAgICAgIFJlbmRlclRhcmdldCAqcmVuZGVyVGFyZ2V0ID0g
cmVuZGVyYnVmZmVyT2JqZWN0LT5nZXRSZW5kZXJUYXJnZXQoKTsKKyAgICAgICAgaWYgKHJlbmRl
clRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgICAgcmVuZGVyVGFyZ2V0U3VyZmFjZSA9IFJl
bmRlclRhcmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5KHJlbmRlclRhcmdldCktPmdldFN1cmZhY2Uo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghcmVuZGVyVGFyZ2V0U3VyZmFjZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgRVJSKCJyZW5kZXIgdGFyZ2V0IHBvaW50ZXIgdW5leHBlY3RlZGx5
IG51bGwuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgLy8gQ29udGV4dCBtdXN0IGJl
IGxvc3QKKyAgICAgICAgfQorCisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclRhcmdldCgwLCBy
ZW5kZXJUYXJnZXRTdXJmYWNlKTsKKyAgICAgICAgcmVuZGVyVGFyZ2V0U3VyZmFjZS0+UmVsZWFz
ZSgpOworCisgICAgICAgIG1BcHBsaWVkUmVuZGVyVGFyZ2V0U2VyaWFsID0gcmVuZGVyVGFyZ2V0
U2VyaWFsOworICAgICAgICByZW5kZXJUYXJnZXRDaGFuZ2VkID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICBnbDo6UmVuZGVyYnVmZmVyICpkZXB0aFN0ZW5jaWwgPSBOVUxMOworICAgIHVuc2lnbmVkIGlu
dCBkZXB0aGJ1ZmZlclNlcmlhbCA9IDA7CisgICAgdW5zaWduZWQgaW50IHN0ZW5jaWxidWZmZXJT
ZXJpYWwgPSAwOworICAgIGlmIChmcmFtZWJ1ZmZlci0+Z2V0RGVwdGhidWZmZXJUeXBlKCkgIT0g
R0xfTk9ORSkKKyAgICB7CisgICAgICAgIGRlcHRoU3RlbmNpbCA9IGZyYW1lYnVmZmVyLT5nZXRE
ZXB0aGJ1ZmZlcigpOworICAgICAgICBpZiAoIWRlcHRoU3RlbmNpbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgRVJSKCJEZXB0aCBzdGVuY2lsIHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBkZXB0aGJ1
ZmZlclNlcmlhbCA9IGRlcHRoU3RlbmNpbC0+Z2V0U2VyaWFsKCk7CisgICAgfQorICAgIGVsc2Ug
aWYgKGZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyVHlwZSgpICE9IEdMX05PTkUpCisgICAg
eworICAgICAgICBkZXB0aFN0ZW5jaWwgPSBmcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZlcigp
OworICAgICAgICBpZiAoIWRlcHRoU3RlbmNpbCkKKyAgICAgICAgeworICAgICAgICAgICAgRVJS
KCJEZXB0aCBzdGVuY2lsIHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBzdGVuY2lsYnVmZmVyU2VyaWFs
ID0gZGVwdGhTdGVuY2lsLT5nZXRTZXJpYWwoKTsKKyAgICB9CisKKyAgICBpZiAoZGVwdGhidWZm
ZXJTZXJpYWwgIT0gbUFwcGxpZWREZXB0aGJ1ZmZlclNlcmlhbCB8fAorICAgICAgICBzdGVuY2ls
YnVmZmVyU2VyaWFsICE9IG1BcHBsaWVkU3RlbmNpbGJ1ZmZlclNlcmlhbCB8fAorICAgICAgICAh
bURlcHRoU3RlbmNpbEluaXRpYWxpemVkKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGRl
cHRoU2l6ZSA9IDA7CisgICAgICAgIHVuc2lnbmVkIGludCBzdGVuY2lsU2l6ZSA9IDA7CisKKyAg
ICAgICAgLy8gQXBwbHkgdGhlIGRlcHRoIHN0ZW5jaWwgb24gdGhlIGRldmljZQorICAgICAgICBp
ZiAoZGVwdGhTdGVuY2lsKQorICAgICAgICB7CisgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNl
OSAqZGVwdGhTdGVuY2lsU3VyZmFjZSA9IE5VTEw7CisgICAgICAgICAgICBSZW5kZXJUYXJnZXQg
KmRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCA9IGRlcHRoU3RlbmNpbC0+Z2V0RGVwdGhTdGVuY2ls
KCk7CisKKyAgICAgICAgICAgIGlmIChkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3VyZmFjZSA9IFJlbmRlclRhcmdl
dDk6Om1ha2VSZW5kZXJUYXJnZXQ5KGRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCktPmdldFN1cmZh
Y2UoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFkZXB0aFN0ZW5jaWxTdXJm
YWNlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVSUigiZGVwdGggc3RlbmNpbCBw
b2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsgICAvLyBDb250ZXh0IG11c3QgYmUgbG9zdAorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBtRGV2aWNlLT5TZXREZXB0aFN0ZW5jaWxTdXJmYWNlKGRlcHRoU3RlbmNpbFN1cmZhY2UpOwor
ICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3VyZmFjZS0+UmVsZWFzZSgpOworCisgICAgICAgICAg
ICBkZXB0aFNpemUgPSBkZXB0aFN0ZW5jaWwtPmdldERlcHRoU2l6ZSgpOworICAgICAgICAgICAg
c3RlbmNpbFNpemUgPSBkZXB0aFN0ZW5jaWwtPmdldFN0ZW5jaWxTaXplKCk7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXREZXB0aFN0
ZW5jaWxTdXJmYWNlKE5VTEwpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtRGVwdGhTdGVu
Y2lsSW5pdGlhbGl6ZWQgfHwgZGVwdGhTaXplICE9IG1DdXJEZXB0aFNpemUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1DdXJEZXB0aFNpemUgPSBkZXB0aFNpemU7CisgICAgICAgICAgICBtRm9y
Y2VTZXRSYXN0ZXJTdGF0ZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1EZXB0
aFN0ZW5jaWxJbml0aWFsaXplZCB8fCBzdGVuY2lsU2l6ZSAhPSBtQ3VyU3RlbmNpbFNpemUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1DdXJTdGVuY2lsU2l6ZSA9IHN0ZW5jaWxTaXplOworICAg
ICAgICAgICAgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgPSB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgbUFwcGxpZWREZXB0aGJ1ZmZlclNlcmlhbCA9IGRlcHRoYnVmZmVyU2VyaWFsOwor
ICAgICAgICBtQXBwbGllZFN0ZW5jaWxidWZmZXJTZXJpYWwgPSBzdGVuY2lsYnVmZmVyU2VyaWFs
OworICAgICAgICBtRGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KKworICAg
IGlmIChyZW5kZXJUYXJnZXRDaGFuZ2VkIHx8ICFtUmVuZGVyVGFyZ2V0RGVzY0luaXRpYWxpemVk
KQorICAgIHsKKyAgICAgICAgbUZvcmNlU2V0U2Npc3NvciA9IHRydWU7CisgICAgICAgIG1Gb3Jj
ZVNldFZpZXdwb3J0ID0gdHJ1ZTsKKworICAgICAgICBtUmVuZGVyVGFyZ2V0RGVzYy53aWR0aCA9
IHJlbmRlcmJ1ZmZlck9iamVjdC0+Z2V0V2lkdGgoKTsKKyAgICAgICAgbVJlbmRlclRhcmdldERl
c2MuaGVpZ2h0ID0gcmVuZGVyYnVmZmVyT2JqZWN0LT5nZXRIZWlnaHQoKTsKKyAgICAgICAgbVJl
bmRlclRhcmdldERlc2MuZm9ybWF0ID0gcmVuZGVyYnVmZmVyT2JqZWN0LT5nZXRBY3R1YWxGb3Jt
YXQoKTsKKyAgICAgICAgbVJlbmRlclRhcmdldERlc2NJbml0aWFsaXplZCA9IHRydWU7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0dMZW51bSBSZW5kZXJlcjk6OmFwcGx5VmVydGV4
QnVmZmVyKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5LCBnbDo6VmVydGV4QXR0cmli
dXRlIHZlcnRleEF0dHJpYnV0ZXNbXSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6
ZWkgaW5zdGFuY2VzKQoreworICAgIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tnbDo6
TUFYX1ZFUlRFWF9BVFRSSUJTXTsKKyAgICBHTGVudW0gZXJyID0gbVZlcnRleERhdGFNYW5hZ2Vy
LT5wcmVwYXJlVmVydGV4RGF0YSh2ZXJ0ZXhBdHRyaWJ1dGVzLCBwcm9ncmFtQmluYXJ5LCBmaXJz
dCwgY291bnQsIGF0dHJpYnV0ZXMsIGluc3RhbmNlcyk7CisgICAgaWYgKGVyciAhPSBHTF9OT19F
UlJPUikKKyAgICB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorICAgIAorICAgIHJldHVy
biBtVmVydGV4RGVjbGFyYXRpb25DYWNoZS5hcHBseURlY2xhcmF0aW9uKG1EZXZpY2UsIGF0dHJp
YnV0ZXMsIHByb2dyYW1CaW5hcnksIGluc3RhbmNlcywgJm1SZXBlYXREcmF3KTsKK30KKworLy8g
QXBwbGllcyB0aGUgaW5kaWNlcyBhbmQgZWxlbWVudCBhcnJheSBiaW5kaW5ncyB0byB0aGUgRGly
ZWN0M0QgOSBkZXZpY2UKK0dMZW51bSBSZW5kZXJlcjk6OmFwcGx5SW5kZXhCdWZmZXIoY29uc3Qg
R0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIsIEdMc2l6ZWkg
Y291bnQsIEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5k
ZXhJbmZvKQoreworICAgIEdMZW51bSBlcnIgPSBtSW5kZXhEYXRhTWFuYWdlci0+cHJlcGFyZUlu
ZGV4RGF0YSh0eXBlLCBjb3VudCwgZWxlbWVudEFycmF5QnVmZmVyLCBpbmRpY2VzLCBpbmRleElu
Zm8pOworCisgICAgaWYgKGVyciA9PSBHTF9OT19FUlJPUikKKyAgICB7CisgICAgICAgIC8vIERp
cmVjdGx5IGJpbmRpbmcgdGhlIHN0b3JhZ2UgYnVmZmVyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGQz
ZDkKKyAgICAgICAgQVNTRVJUKGluZGV4SW5mby0+c3RvcmFnZSA9PSBOVUxMKTsKKworICAgICAg
ICBpZiAoaW5kZXhJbmZvLT5zZXJpYWwgIT0gbUFwcGxpZWRJQlNlcmlhbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgSW5kZXhCdWZmZXI5KiBpbmRleEJ1ZmZlciA9IEluZGV4QnVmZmVyOTo6bWFr
ZUluZGV4QnVmZmVyOShpbmRleEluZm8tPmluZGV4QnVmZmVyKTsKKworICAgICAgICAgICAgbURl
dmljZS0+U2V0SW5kaWNlcyhpbmRleEJ1ZmZlci0+Z2V0QnVmZmVyKCkpOworICAgICAgICAgICAg
bUFwcGxpZWRJQlNlcmlhbCA9IGluZGV4SW5mby0+c2VyaWFsOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIGVycjsKK30KKwordm9pZCBSZW5kZXJlcjk6OmRyYXdBcnJheXMoR0xlbnVt
IG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKQoreworICAgIHN0YXJ0U2Nl
bmUoKTsKKyAgICAgICAgCisgICAgaWYgKG1vZGUgPT0gR0xfTElORV9MT09QKQorICAgIHsKKyAg
ICAgICAgZHJhd0xpbmVMb29wKGNvdW50LCBHTF9OT05FLCBOVUxMLCAwLCBOVUxMKTsKKyAgICB9
CisgICAgZWxzZSBpZiAoaW5zdGFuY2VzID4gMCkKKyAgICB7CisgICAgICAgIFN0YXRpY0luZGV4
QnVmZmVySW50ZXJmYWNlICpjb3VudGluZ0lCID0gbUluZGV4RGF0YU1hbmFnZXItPmdldENvdW50
aW5nSW5kaWNlcyhjb3VudCk7CisgICAgICAgIGlmIChjb3VudGluZ0lCKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAobUFwcGxpZWRJQlNlcmlhbCAhPSBjb3VudGluZ0lCLT5nZXRTZXJpYWwo
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbmRleEJ1ZmZlcjkgKmluZGV4QnVm
ZmVyID0gSW5kZXhCdWZmZXI5OjptYWtlSW5kZXhCdWZmZXI5KGNvdW50aW5nSUItPmdldEluZGV4
QnVmZmVyKCkpOworCisgICAgICAgICAgICAgICAgbURldmljZS0+U2V0SW5kaWNlcyhpbmRleEJ1
ZmZlci0+Z2V0QnVmZmVyKCkpOworICAgICAgICAgICAgICAgIG1BcHBsaWVkSUJTZXJpYWwgPSBj
b3VudGluZ0lCLT5nZXRTZXJpYWwoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBtUmVwZWF0RHJhdzsgaSsrKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIG1EZXZpY2UtPkRyYXdJbmRleGVkUHJpbWl0aXZlKG1QcmltaXRpdmVUeXBlLCAw
LCAwLCBjb3VudCwgMCwgbVByaW1pdGl2ZUNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGNy
ZWF0ZSBhIGNvdW50aW5nIGluZGV4IGJ1ZmZlciBmb3IgZ2xEcmF3QXJyYXlzSW5zdGFuY2VkLiIp
OworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBlbHNlICAgLy8gUmVndWxhciBjYXNlCisgICAgeworICAgICAgICBt
RGV2aWNlLT5EcmF3UHJpbWl0aXZlKG1QcmltaXRpdmVUeXBlLCAwLCBtUHJpbWl0aXZlQ291bnQp
OworICAgIH0KK30KKwordm9pZCBSZW5kZXJlcjk6OmRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwg
R0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1
ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyLCBjb25zdCBUcmFuc2xhdGVkSW5kZXhEYXRhICZpbmRl
eEluZm8sIEdMc2l6ZWkgLyppbnN0YW5jZXMqLykKK3sKKyAgICBzdGFydFNjZW5lKCk7CisKKyAg
ICBpZiAobW9kZSA9PSBHTF9QT0lOVFMpCisgICAgeworICAgICAgICBkcmF3SW5kZXhlZFBvaW50
cyhjb3VudCwgdHlwZSwgaW5kaWNlcywgZWxlbWVudEFycmF5QnVmZmVyKTsKKyAgICB9CisgICAg
ZWxzZSBpZiAobW9kZSA9PSBHTF9MSU5FX0xPT1ApCisgICAgeworICAgICAgICBkcmF3TGluZUxv
b3AoY291bnQsIHR5cGUsIGluZGljZXMsIGluZGV4SW5mby5taW5JbmRleCwgZWxlbWVudEFycmF5
QnVmZmVyKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBtUmVwZWF0RHJhdzsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBHTHNpemVpIHZl
cnRleENvdW50ID0gaW5kZXhJbmZvLm1heEluZGV4IC0gaW5kZXhJbmZvLm1pbkluZGV4ICsgMTsK
KyAgICAgICAgICAgIG1EZXZpY2UtPkRyYXdJbmRleGVkUHJpbWl0aXZlKG1QcmltaXRpdmVUeXBl
LCAtKElOVClpbmRleEluZm8ubWluSW5kZXgsIGluZGV4SW5mby5taW5JbmRleCwgdmVydGV4Q291
bnQsIGluZGV4SW5mby5zdGFydEluZGV4LCBtUHJpbWl0aXZlQ291bnQpOworICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIFJlbmRlcmVyOTo6ZHJhd0xpbmVMb29wKEdMc2l6ZWkgY291bnQsIEdM
ZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGludCBtaW5JbmRleCwgZ2w6OkJ1ZmZl
ciAqZWxlbWVudEFycmF5QnVmZmVyKQoreworICAgIC8vIEdldCB0aGUgcmF3IGluZGljZXMgZm9y
IGFuIGluZGV4ZWQgZHJhdworICAgIGlmICh0eXBlICE9IEdMX05PTkUgJiYgZWxlbWVudEFycmF5
QnVmZmVyKQorICAgIHsKKyAgICAgICAgZ2w6OkJ1ZmZlciAqaW5kZXhCdWZmZXIgPSBlbGVtZW50
QXJyYXlCdWZmZXI7CisgICAgICAgIEJ1ZmZlclN0b3JhZ2UgKnN0b3JhZ2UgPSBpbmRleEJ1ZmZl
ci0+Z2V0U3RvcmFnZSgpOworICAgICAgICBpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9j
YXN0PGludHB0cl90PihpbmRpY2VzKTsKKyAgICAgICAgaW5kaWNlcyA9IHN0YXRpY19jYXN0PGNv
bnN0IEdMdWJ5dGUqPihzdG9yYWdlLT5nZXREYXRhKCkpICsgb2Zmc2V0OworICAgIH0KKworICAg
IFVJTlQgc3RhcnRJbmRleCA9IDA7CisKKyAgICBpZiAoZ2V0MzJCaXRJbmRleFN1cHBvcnQoKSkK
KyAgICB7CisgICAgICAgIGlmICghbUxpbmVMb29wSUIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1MaW5lTG9vcElCID0gbmV3IFN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlKHRoaXMpOwor
ICAgICAgICAgICAgaWYgKCFtTGluZUxvb3BJQi0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKElOSVRJQUxf
SU5ERVhfQlVGRkVSX1NJWkUsIEdMX1VOU0lHTkVEX0lOVCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZGVsZXRlIG1MaW5lTG9vcElCOworICAgICAgICAgICAgICAgIG1MaW5lTG9v
cElCID0gTlVMTDsKKworICAgICAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBhIDMy
LWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOworICAgICAgICAg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb3Vu
dCArIDEpID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgLyBzaXpl
b2YodW5zaWduZWQgaW50KSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiQ291bGQgbm90
IGNyZWF0ZSBhIDMyLWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLCB0
b28gbWFueSBpbmRpY2VzIHJlcXVpcmVkLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGludCBzcGFjZU5lZWRlZCA9IChjb3VudCArIDEpICogc2l6ZW9mKHVuc2lnbmVkIGludCk7Cisg
ICAgICAgIGlmICghbUxpbmVMb29wSUItPnJlc2VydmVCdWZmZXJTcGFjZShzcGFjZU5lZWRlZCwg
R0xfVU5TSUdORURfSU5UKSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJDb3VsZCBub3Qg
cmVzZXJ2ZSBlbm91Z2ggc3BhY2UgaW4gbG9vcGluZyBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVf
TE9PUC4iKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
CisgICAgICAgIH0KKworICAgICAgICB2b2lkKiBtYXBwZWRNZW1vcnkgPSBOVUxMOworICAgICAg
ICBpbnQgb2Zmc2V0ID0gbUxpbmVMb29wSUItPm1hcEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBl
ZE1lbW9yeSk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gLTEgfHwgbWFwcGVkTWVtb3J5ID09IE5V
TEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiQ291bGQgbm90IG1hcCBpbmRleCBidWZm
ZXIgZm9yIEdMX0xJTkVfTE9PUC4iKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSk7CisgICAgICAgIH0KKworICAgICAgICBzdGFydEluZGV4ID0gc3RhdGlj
X2Nhc3Q8VUlOVD4ob2Zmc2V0KSAvIDQ7CisgICAgICAgIHVuc2lnbmVkIGludCAqZGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4obWFwcGVkTWVtb3J5KTsKKworICAgICAgICBz
d2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX05PTkU6ICAgLy8gTm9u
LWluZGV4ZWQgZHJhdworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZGF0YVtjb3VudF0gPSAwOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRhdGFb
aV0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5kaWNlcylbaV07CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUq
PihpbmRpY2VzKVswXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfU0hPUlQ6CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKysp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0PGNv
bnN0IEdMdXNob3J0Kj4oaW5kaWNlcylbaV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBk
YXRhW2NvdW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNlcylbMF07Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNl
cylbaV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRpY19j
YXN0PGNvbnN0IEdMdWludCo+KGluZGljZXMpWzBdOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
bUxpbmVMb29wSUItPnVubWFwQnVmZmVyKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigi
Q291bGQgbm90IHVubWFwIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoIW1MaW5lTG9vcElCKQorICAgICAgICB7
CisgICAgICAgICAgICBtTGluZUxvb3BJQiA9IG5ldyBTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVy
ZmFjZSh0aGlzKTsKKyAgICAgICAgICAgIGlmICghbUxpbmVMb29wSUItPnJlc2VydmVCdWZmZXJT
cGFjZShJTklUSUFMX0lOREVYX0JVRkZFUl9TSVpFLCBHTF9VTlNJR05FRF9TSE9SVCkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVsZXRlIG1MaW5lTG9vcElCOworICAgICAgICAg
ICAgICAgIG1MaW5lTG9vcElCID0gTlVMTDsKKworICAgICAgICAgICAgICAgIEVSUigiQ291bGQg
bm90IGNyZWF0ZSBhIDE2LWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09Q
LiIpOworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50Pihjb3VudCArIDEpID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgc2hv
cnQ+OjptYXgoKSAvIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpKQorICAgICAgICB7CisgICAgICAg
ICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgYSAxNi1iaXQgbG9vcGluZyBpbmRleCBidWZmZXIg
Zm9yIEdMX0xJTkVfTE9PUCwgdG9vIG1hbnkgaW5kaWNlcyByZXF1aXJlZC4iKTsKKyAgICAgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIH0KKworICAg
ICAgICBjb25zdCBpbnQgc3BhY2VOZWVkZWQgPSAoY291bnQgKyAxKSAqIHNpemVvZih1bnNpZ25l
ZCBzaG9ydCk7CisgICAgICAgIGlmICghbUxpbmVMb29wSUItPnJlc2VydmVCdWZmZXJTcGFjZShz
cGFjZU5lZWRlZCwgR0xfVU5TSUdORURfU0hPUlQpKQorICAgICAgICB7CisgICAgICAgICAgICBF
UlIoIkNvdWxkIG5vdCByZXNlcnZlIGVub3VnaCBzcGFjZSBpbiBsb29waW5nIGluZGV4IGJ1ZmZl
ciBmb3IgR0xfTElORV9MT09QLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQqIG1hcHBlZE1lbW9yeSA9
IE5VTEw7CisgICAgICAgIGludCBvZmZzZXQgPSBtTGluZUxvb3BJQi0+bWFwQnVmZmVyKHNwYWNl
TmVlZGVkLCAmbWFwcGVkTWVtb3J5KTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSAtMSB8fCBtYXBw
ZWRNZW1vcnkgPT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJDb3VsZCBub3Qg
bWFwIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLiIpOworICAgICAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXJ0
SW5kZXggPSBzdGF0aWNfY2FzdDxVSU5UPihvZmZzZXQpIC8gMjsKKyAgICAgICAgdW5zaWduZWQg
c2hvcnQgKmRhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIHNob3J0Kj4obWFwcGVkTWVt
b3J5KTsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNl
IEdMX05PTkU6ICAgLy8gTm9uLWluZGV4ZWQgZHJhdworICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRhdGFb
aV0gPSBpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGF0YVtjb3VudF0gPSAwOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5kaWNl
cylbaV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRpY19j
YXN0PGNvbnN0IEdMdWJ5dGUqPihpbmRpY2VzKVswXTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGF0YVtp
XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNlcylbaV07CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0
Kj4oaW5kaWNlcylbMF07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX0lOVDoKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8Y29u
c3QgR0x1aW50Kj4oaW5kaWNlcylbaV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkYXRh
W2NvdW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWludCo+KGluZGljZXMpWzBdOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghbUxpbmVMb29wSUItPnVubWFwQnVmZmVyKCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEVSUigiQ291bGQgbm90IHVubWFwIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElO
RV9MT09QLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtQXBwbGllZElCU2VyaWFsICE9IG1MaW5l
TG9vcElCLT5nZXRTZXJpYWwoKSkKKyAgICB7CisgICAgICAgIEluZGV4QnVmZmVyOSAqaW5kZXhC
dWZmZXIgPSBJbmRleEJ1ZmZlcjk6Om1ha2VJbmRleEJ1ZmZlcjkobUxpbmVMb29wSUItPmdldElu
ZGV4QnVmZmVyKCkpOworCisgICAgICAgIG1EZXZpY2UtPlNldEluZGljZXMoaW5kZXhCdWZmZXIt
PmdldEJ1ZmZlcigpKTsKKyAgICAgICAgbUFwcGxpZWRJQlNlcmlhbCA9IG1MaW5lTG9vcElCLT5n
ZXRTZXJpYWwoKTsKKyAgICB9CisKKyAgICBtRGV2aWNlLT5EcmF3SW5kZXhlZFByaW1pdGl2ZShE
M0RQVF9MSU5FU1RSSVAsIC1taW5JbmRleCwgbWluSW5kZXgsIGNvdW50LCBzdGFydEluZGV4LCBj
b3VudCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIHZvaWQgZHJhd1BvaW50
cyhJRGlyZWN0M0REZXZpY2U5KiBkZXZpY2UsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdm9pZCAq
aW5kaWNlcykKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgewor
ICAgICAgICB1bnNpZ25lZCBpbnQgaW5kZXhWYWx1ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu
dD4oc3RhdGljX2Nhc3Q8Y29uc3QgVCo+KGluZGljZXMpW2ldKTsKKyAgICAgICAgZGV2aWNlLT5E
cmF3UHJpbWl0aXZlKEQzRFBUX1BPSU5UTElTVCwgaW5kZXhWYWx1ZSwgMSk7CisgICAgfQorfQor
Cit2b2lkIFJlbmRlcmVyOTo6ZHJhd0luZGV4ZWRQb2ludHMoR0xzaXplaSBjb3VudCwgR0xlbnVt
IHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVm
ZmVyKQoreworICAgIC8vIERyYXdpbmcgaW5kZXggcG9pbnQgbGlzdHMgaXMgdW5zdXBwb3J0ZWQg
aW4gZDNkOSwgZmFsbCBiYWNrIHRvIGEgcmVndWxhciBEcmF3UHJpbWl0aXZlIGNhbGwKKyAgICAv
LyBmb3IgZWFjaCBpbmRpdmlkdWFsIHBvaW50LiBUaGlzIGNhbGwgaXMgbm90IGV4cGVjdGVkIHRv
IGhhcHBlbiBvZnRlbi4KKworICAgIGlmIChlbGVtZW50QXJyYXlCdWZmZXIpCisgICAgeworICAg
ICAgICBCdWZmZXJTdG9yYWdlICpzdG9yYWdlID0gZWxlbWVudEFycmF5QnVmZmVyLT5nZXRTdG9y
YWdlKCk7CisgICAgICAgIGludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGluZGljZXMpOworICAgICAgICBpbmRpY2VzID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0
ZSo+KHN0b3JhZ2UtPmdldERhdGEoKSkgKyBvZmZzZXQ7CisgICAgfQorCisgICAgc3dpdGNoICh0
eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAgZHJhd1BvaW50czxH
THVieXRlPihtRGV2aWNlLCBjb3VudCwgaW5kaWNlcyk7ICBicmVhazsKKyAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9TSE9SVDogZHJhd1BvaW50czxHTHVzaG9ydD4obURldmljZSwgY291bnQsIGlu
ZGljZXMpOyBicmVhazsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6ICAgZHJhd1BvaW50
czxHTHVpbnQ+KG1EZXZpY2UsIGNvdW50LCBpbmRpY2VzKTsgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjphcHBseVNo
YWRlcnMoZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnkpCit7CisgICAgdW5zaWduZWQg
aW50IHByb2dyYW1CaW5hcnlTZXJpYWwgPSBwcm9ncmFtQmluYXJ5LT5nZXRTZXJpYWwoKTsKKyAg
ICBpZiAocHJvZ3JhbUJpbmFyeVNlcmlhbCAhPSBtQXBwbGllZFByb2dyYW1CaW5hcnlTZXJpYWwp
CisgICAgeworICAgICAgICBTaGFkZXJFeGVjdXRhYmxlICp2ZXJ0ZXhFeGUgPSBwcm9ncmFtQmlu
YXJ5LT5nZXRWZXJ0ZXhFeGVjdXRhYmxlKCk7CisgICAgICAgIFNoYWRlckV4ZWN1dGFibGUgKnBp
eGVsRXhlID0gcHJvZ3JhbUJpbmFyeS0+Z2V0UGl4ZWxFeGVjdXRhYmxlKCk7CisKKyAgICAgICAg
SURpcmVjdDNEVmVydGV4U2hhZGVyOSAqdmVydGV4U2hhZGVyID0gTlVMTDsKKyAgICAgICAgaWYg
KHZlcnRleEV4ZSkgdmVydGV4U2hhZGVyID0gU2hhZGVyRXhlY3V0YWJsZTk6Om1ha2VTaGFkZXJF
eGVjdXRhYmxlOSh2ZXJ0ZXhFeGUpLT5nZXRWZXJ0ZXhTaGFkZXIoKTsKKworICAgICAgICBJRGly
ZWN0M0RQaXhlbFNoYWRlcjkgKnBpeGVsU2hhZGVyID0gTlVMTDsKKyAgICAgICAgaWYgKHBpeGVs
RXhlKSBwaXhlbFNoYWRlciA9IFNoYWRlckV4ZWN1dGFibGU5OjptYWtlU2hhZGVyRXhlY3V0YWJs
ZTkocGl4ZWxFeGUpLT5nZXRQaXhlbFNoYWRlcigpOworCisgICAgICAgIG1EZXZpY2UtPlNldFBp
eGVsU2hhZGVyKHBpeGVsU2hhZGVyKTsKKyAgICAgICAgbURldmljZS0+U2V0VmVydGV4U2hhZGVy
KHZlcnRleFNoYWRlcik7CisgICAgICAgIHByb2dyYW1CaW5hcnktPmRpcnR5QWxsVW5pZm9ybXMo
KTsKKyAgICAgICAgbUR4VW5pZm9ybXNEaXJ0eSA9IHRydWU7CisKKyAgICAgICAgbUFwcGxpZWRQ
cm9ncmFtQmluYXJ5U2VyaWFsID0gcHJvZ3JhbUJpbmFyeVNlcmlhbDsKKyAgICB9Cit9CisKK3Zv
aWQgUmVuZGVyZXI5OjphcHBseVVuaWZvcm1zKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmlu
YXJ5LCBnbDo6VW5pZm9ybUFycmF5ICp1bmlmb3JtQXJyYXkpCit7CisgICAgZm9yIChzdGQ6OnZl
Y3RvcjxnbDo6VW5pZm9ybSo+Ojpjb25zdF9pdGVyYXRvciB1YiA9IHVuaWZvcm1BcnJheS0+YmVn
aW4oKSwgdWUgPSB1bmlmb3JtQXJyYXktPmVuZCgpOyB1YiAhPSB1ZTsgKyt1YikKKyAgICB7Cisg
ICAgICAgIGdsOjpVbmlmb3JtICp0YXJnZXRVbmlmb3JtID0gKnViOworCisgICAgICAgIGlmICh0
YXJnZXRVbmlmb3JtLT5kaXJ0eSkKKyAgICAgICAgeworICAgICAgICAgICAgR0xmbG9hdCAqZiA9
IChHTGZsb2F0Kil0YXJnZXRVbmlmb3JtLT5kYXRhOworICAgICAgICAgICAgR0xpbnQgKmkgPSAo
R0xpbnQqKXRhcmdldFVuaWZvcm0tPmRhdGE7CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0
VW5pZm9ybS0+dHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9TQU1Q
TEVSXzJEOgorICAgICAgICAgICAgICBjYXNlIEdMX1NBTVBMRVJfQ1VCRToKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9CT09MOgorICAgICAgICAgICAgICBj
YXNlIEdMX0JPT0xfVkVDMjoKKyAgICAgICAgICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6CisgICAg
ICAgICAgICAgIGNhc2UgR0xfQk9PTF9WRUM0OgorICAgICAgICAgICAgICAgIGFwcGx5VW5pZm9y
bW5idih0YXJnZXRVbmlmb3JtLCBpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMyOgor
ICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6CisgICAgICAgICAgICAgIGNhc2UgR0xf
RkxPQVRfVkVDNDoKKyAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOgorICAgICAgICAg
ICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6CisgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFU
NDoKKyAgICAgICAgICAgICAgICBhcHBseVVuaWZvcm1uZnYodGFyZ2V0VW5pZm9ybSwgZik7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgR0xfSU5UOgorICAgICAg
ICAgICAgICBjYXNlIEdMX0lOVF9WRUMyOgorICAgICAgICAgICAgICBjYXNlIEdMX0lOVF9WRUMz
OgorICAgICAgICAgICAgICBjYXNlIEdMX0lOVF9WRUM0OgorICAgICAgICAgICAgICAgIGFwcGx5
VW5pZm9ybW5pdih0YXJnZXRVbmlmb3JtLCBpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IGZhbHNlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gRHJpdmVyIHVuaWZvcm1zCisgICAgaWYgKG1EeFVu
aWZvcm1zRGlydHkpCisgICAgeworICAgICAgICBtRGV2aWNlLT5TZXRWZXJ0ZXhTaGFkZXJDb25z
dGFudEYoMCwgKGZsb2F0KikmbVZlcnRleENvbnN0YW50cywgc2l6ZW9mKGR4X1ZlcnRleENvbnN0
YW50cykgLyBzaXplb2YoZmxvYXRbNF0pKTsKKyAgICAgICAgbURldmljZS0+U2V0UGl4ZWxTaGFk
ZXJDb25zdGFudEYoMCwgKGZsb2F0KikmbVBpeGVsQ29uc3RhbnRzLCBzaXplb2YoZHhfUGl4ZWxD
b25zdGFudHMpIC8gc2l6ZW9mKGZsb2F0WzRdKSk7CisgICAgICAgIG1EeFVuaWZvcm1zRGlydHkg
PSBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjphcHBseVVuaWZvcm1uZnYoZ2w6
OlVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNvbnN0IEdMZmxvYXQgKnYpCit7CisgICAgaWYgKHRh
cmdldFVuaWZvcm0tPnBzUmVnaXN0ZXJJbmRleCA+PSAwKQorICAgIHsKKyAgICAgICAgbURldmlj
ZS0+U2V0UGl4ZWxTaGFkZXJDb25zdGFudEYodGFyZ2V0VW5pZm9ybS0+cHNSZWdpc3RlckluZGV4
LCB2LCB0YXJnZXRVbmlmb3JtLT5yZWdpc3RlckNvdW50KTsKKyAgICB9CisKKyAgICBpZiAodGFy
Z2V0VW5pZm9ybS0+dnNSZWdpc3RlckluZGV4ID49IDApCisgICAgeworICAgICAgICBtRGV2aWNl
LT5TZXRWZXJ0ZXhTaGFkZXJDb25zdGFudEYodGFyZ2V0VW5pZm9ybS0+dnNSZWdpc3RlckluZGV4
LCB2LCB0YXJnZXRVbmlmb3JtLT5yZWdpc3RlckNvdW50KTsKKyAgICB9Cit9CisKK3ZvaWQgUmVu
ZGVyZXI5OjphcHBseVVuaWZvcm1uaXYoZ2w6OlVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNvbnN0
IEdMaW50ICp2KQoreworICAgIEFTU0VSVCh0YXJnZXRVbmlmb3JtLT5yZWdpc3RlckNvdW50IDw9
IE1BWF9WRVJURVhfQ09OU1RBTlRfVkVDVE9SU19EM0Q5KTsKKyAgICBHTGZsb2F0IHZlY3RvcltN
QVhfVkVSVEVYX0NPTlNUQU5UX1ZFQ1RPUlNfRDNEOV1bNF07CisKKyAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHRhcmdldFVuaWZvcm0tPnJlZ2lzdGVyQ291bnQ7IGkrKykKKyAgICB7
CisgICAgICAgIHZlY3RvcltpXVswXSA9IChHTGZsb2F0KXZbNCAqIGkgKyAwXTsKKyAgICAgICAg
dmVjdG9yW2ldWzFdID0gKEdMZmxvYXQpdls0ICogaSArIDFdOworICAgICAgICB2ZWN0b3JbaV1b
Ml0gPSAoR0xmbG9hdCl2WzQgKiBpICsgMl07CisgICAgICAgIHZlY3RvcltpXVszXSA9IChHTGZs
b2F0KXZbNCAqIGkgKyAzXTsKKyAgICB9CisKKyAgICBhcHBseVVuaWZvcm1uZnYodGFyZ2V0VW5p
Zm9ybSwgKEdMZmxvYXQqKXZlY3Rvcik7Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjphcHBseVVuaWZv
cm1uYnYoZ2w6OlVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNvbnN0IEdMaW50ICp2KQoreworICAg
IEFTU0VSVCh0YXJnZXRVbmlmb3JtLT5yZWdpc3RlckNvdW50IDw9IE1BWF9WRVJURVhfQ09OU1RB
TlRfVkVDVE9SU19EM0Q5KTsKKyAgICBHTGZsb2F0IHZlY3RvcltNQVhfVkVSVEVYX0NPTlNUQU5U
X1ZFQ1RPUlNfRDNEOV1bNF07CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHRh
cmdldFVuaWZvcm0tPnJlZ2lzdGVyQ291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIHZlY3Rvcltp
XVswXSA9ICh2WzQgKiBpICsgMF0gPT0gR0xfRkFMU0UpID8gMC4wZiA6IDEuMGY7CisgICAgICAg
IHZlY3RvcltpXVsxXSA9ICh2WzQgKiBpICsgMV0gPT0gR0xfRkFMU0UpID8gMC4wZiA6IDEuMGY7
CisgICAgICAgIHZlY3RvcltpXVsyXSA9ICh2WzQgKiBpICsgMl0gPT0gR0xfRkFMU0UpID8gMC4w
ZiA6IDEuMGY7CisgICAgICAgIHZlY3RvcltpXVszXSA9ICh2WzQgKiBpICsgM10gPT0gR0xfRkFM
U0UpID8gMC4wZiA6IDEuMGY7CisgICAgfQorCisgICAgYXBwbHlVbmlmb3JtbmZ2KHRhcmdldFVu
aWZvcm0sIChHTGZsb2F0Kil2ZWN0b3IpOworfQorCit2b2lkIFJlbmRlcmVyOTo6Y2xlYXIoY29u
c3QgZ2w6OkNsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMsIGdsOjpGcmFtZWJ1ZmZlciAqZnJh
bWVCdWZmZXIpCit7CisgICAgRDNEQ09MT1IgY29sb3IgPSBEM0RDT0xPUl9BUkdCKGdsOjp1bm9y
bTw4PihjbGVhclBhcmFtcy5jb2xvckNsZWFyVmFsdWUuYWxwaGEpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oY2xlYXJQYXJhbXMuY29sb3JDbGVhclZh
bHVlLnJlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjp1bm9ybTw4
PihjbGVhclBhcmFtcy5jb2xvckNsZWFyVmFsdWUuZ3JlZW4pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4oY2xlYXJQYXJhbXMuY29sb3JDbGVhclZhbHVl
LmJsdWUpKTsKKyAgICBmbG9hdCBkZXB0aCA9IGdsOjpjbGFtcDAxKGNsZWFyUGFyYW1zLmRlcHRo
Q2xlYXJWYWx1ZSk7CisgICAgaW50IHN0ZW5jaWwgPSBjbGVhclBhcmFtcy5zdGVuY2lsQ2xlYXJW
YWx1ZSAmIDB4MDAwMDAwRkY7CisKKyAgICB1bnNpZ25lZCBpbnQgc3RlbmNpbFVubWFza2VkID0g
MHgwOworICAgIGlmICgoY2xlYXJQYXJhbXMubWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkg
JiYgZnJhbWVCdWZmZXItPmhhc1N0ZW5jaWwoKSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGlu
dCBzdGVuY2lsU2l6ZSA9IGdsOjpHZXRTdGVuY2lsU2l6ZShmcmFtZUJ1ZmZlci0+Z2V0U3RlbmNp
bGJ1ZmZlcigpLT5nZXRBY3R1YWxGb3JtYXQoKSk7CisgICAgICAgIHN0ZW5jaWxVbm1hc2tlZCA9
ICgweDEgPDwgc3RlbmNpbFNpemUpIC0gMTsKKyAgICB9CisKKyAgICBib29sIGFscGhhVW5tYXNr
ZWQgPSAoZ2w6OkdldEFscGhhU2l6ZShtUmVuZGVyVGFyZ2V0RGVzYy5mb3JtYXQpID09IDApIHx8
IGNsZWFyUGFyYW1zLmNvbG9yTWFza0FscGhhOworCisgICAgY29uc3QgYm9vbCBuZWVkTWFza2Vk
U3RlbmNpbENsZWFyID0gKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQp
ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsZWFyUGFyYW1z
LnN0ZW5jaWxXcml0ZU1hc2sgJiBzdGVuY2lsVW5tYXNrZWQpICE9IHN0ZW5jaWxVbm1hc2tlZDsK
KyAgICBjb25zdCBib29sIG5lZWRNYXNrZWRDb2xvckNsZWFyID0gKGNsZWFyUGFyYW1zLm1hc2sg
JiBHTF9DT0xPUl9CVUZGRVJfQklUKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAhKGNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCAmJiBjbGVhclBhcmFtcy5jb2xvck1h
c2tHcmVlbiAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFy
UGFyYW1zLmNvbG9yTWFza0JsdWUgJiYgYWxwaGFVbm1hc2tlZCk7CisKKyAgICBpZiAobmVlZE1h
c2tlZENvbG9yQ2xlYXIgfHwgbmVlZE1hc2tlZFN0ZW5jaWxDbGVhcikKKyAgICB7CisgICAgICAg
IC8vIFN0YXRlIHdoaWNoIGlzIGFsdGVyZWQgaW4gYWxsIHBhdGhzIGZyb20gdGhpcyBwb2ludCB0
byB0aGUgY2xlYXIgY2FsbCBpcyBzYXZlZC4KKyAgICAgICAgLy8gU3RhdGUgd2hpY2ggaXMgYWx0
ZXJlZCBpbiBvbmx5IHNvbWUgcGF0aHMgd2lsbCBiZSBmbGFnZ2VkIGRpcnR5IGluIHRoZSBjYXNl
IHRoYXQKKyAgICAgICAgLy8gIHRoYXQgcGF0aCBpcyB0YWtlbi4KKyAgICAgICAgSFJFU1VMVCBo
cjsKKyAgICAgICAgaWYgKG1NYXNrZWRDbGVhclNhdmVkU3RhdGUgPT0gTlVMTCkKKyAgICAgICAg
eworICAgICAgICAgICAgaHIgPSBtRGV2aWNlLT5CZWdpblN0YXRlQmxvY2soKTsKKyAgICAgICAg
ICAgIEFTU0VSVChTVUNDRUVERUQoaHIpIHx8IGhyID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZ
IHx8IGhyID09IEVfT1VUT0ZNRU1PUlkpOworCisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19aV1JJVEVFTkFCTEUsIEZBTFNFKTsKKyAgICAgICAgICAgIG1EZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX1pGVU5DLCBEM0RDTVBfQUxXQVlTKTsKKyAgICAgICAgICAg
IG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pFTkFCTEUsIEZBTFNFKTsKKyAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NVTExNT0RFLCBEM0RDVUxMX05PTkUp
OworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfRklMTE1PREUsIEQz
REZJTExfU09MSUQpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNf
QUxQSEFURVNURU5BQkxFLCBGQUxTRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBGQUxTRSk7CisgICAgICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DTElQUExBTkVFTkFCTEUsIDApOworICAgICAgICAgICAg
bURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklURUVOQUJMRSwgMCk7CisgICAg
ICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMRU5BQkxFLCBGQUxT
RSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRQaXhlbFNoYWRlcihOVUxMKTsKKyAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFZlcnRleFNoYWRlcihOVUxMKTsKKyAgICAgICAgICAgIG1EZXZpY2Ut
PlNldEZWRihEM0RGVkZfWFlaUkhXIHwgRDNERlZGX0RJRkZVU0UpOworICAgICAgICAgICAgbURl
dmljZS0+U2V0U3RyZWFtU291cmNlKDAsIE5VTEwsIDAsIDApOworICAgICAgICAgICAgbURldmlj
ZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0VQQVJBVEVBTFBIQUJMRU5ERU5BQkxFLCBUUlVFKTsK
KyAgICAgICAgICAgIG1EZXZpY2UtPlNldFRleHR1cmVTdGFnZVN0YXRlKDAsIEQzRFRTU19DT0xP
Uk9QLCBEM0RUT1BfU0VMRUNUQVJHMSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJl
U3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQ09MT1JBUkcxLCBEM0RUQV9URkFDVE9SKTsKKyAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFRleHR1cmVTdGFnZVN0YXRlKDAsIEQzRFRTU19BTFBIQU9QLCBEM0RU
T1BfU0VMRUNUQVJHMSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0
ZSgwLCBEM0RUU1NfQUxQSEFBUkcxLCBEM0RUQV9URkFDVE9SKTsKKyAgICAgICAgICAgIG1EZXZp
Y2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1RFWFRVUkVGQUNUT1IsIGNvbG9yKTsKKyAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX01VTFRJU0FNUExFTUFTSywgMHhGRkZG
RkZGRik7CisKKyAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9B
VFRSSUJTOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbURldmljZS0+U2V0
U3RyZWFtU291cmNlRnJlcShpLCAxKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaHIg
PSBtRGV2aWNlLT5FbmRTdGF0ZUJsb2NrKCZtTWFza2VkQ2xlYXJTYXZlZFN0YXRlKTsKKyAgICAg
ICAgICAgIEFTU0VSVChTVUNDRUVERUQoaHIpIHx8IGhyID09IEQzREVSUl9PVVRPRlZJREVPTUVN
T1JZIHx8IGhyID09IEVfT1VUT0ZNRU1PUlkpOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJU
KG1NYXNrZWRDbGVhclNhdmVkU3RhdGUgIT0gTlVMTCk7CisKKyAgICAgICAgaWYgKG1NYXNrZWRD
bGVhclNhdmVkU3RhdGUgIT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgaHIgPSBtTWFz
a2VkQ2xlYXJTYXZlZFN0YXRlLT5DYXB0dXJlKCk7CisgICAgICAgICAgICBBU1NFUlQoU1VDQ0VF
REVEKGhyKSk7CisgICAgICAgIH0KKworICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19aV1JJVEVFTkFCTEUsIEZBTFNFKTsKKyAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfWkZVTkMsIEQzRENNUF9BTFdBWVMpOworICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19aRU5BQkxFLCBGQUxTRSk7CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRl
clN0YXRlKEQzRFJTX0NVTExNT0RFLCBEM0RDVUxMX05PTkUpOworICAgICAgICBtRGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19GSUxMTU9ERSwgRDNERklMTF9TT0xJRCk7CisgICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0FMUEhBVEVTVEVOQUJMRSwgRkFMU0UpOworICAg
ICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBGQUxT
RSk7CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NMSVBQTEFORUVOQUJM
RSwgMCk7CisKKyAgICAgICAgaWYgKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9DT0xPUl9CVUZGRVJf
QklUKQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RS
U19DT0xPUldSSVRFRU5BQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2xfZDNkOTo6Q29udmVydENvbG9yTWFzayhjbGVhclBhcmFtcy5jb2xvck1hc2tSZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsZWFyUGFyYW1zLmNvbG9yTWFza0dyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvck1hc2tC
bHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvck1hc2tBbHBoYSkpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUo
RDNEUlNfQ09MT1JXUklURUVOQUJMRSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3Rl
bmNpbFVubWFza2VkICE9IDB4MCAmJiAoY2xlYXJQYXJhbXMubWFzayAmIEdMX1NURU5DSUxfQlVG
RkVSX0JJVCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRl
KEQzRFJTX1NURU5DSUxFTkFCTEUsIFRSVUUpOworICAgICAgICAgICAgbURldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfVFdPU0lERURTVEVOQ0lMTU9ERSwgRkFMU0UpOworICAgICAgICAgICAg
bURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTEZVTkMsIEQzRENNUF9BTFdBWVMp
OworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU1RFTkNJTFJFRiwg
c3RlbmNpbCk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVO
Q0lMV1JJVEVNQVNLLCBjbGVhclBhcmFtcy5zdGVuY2lsV3JpdGVNYXNrKTsKKyAgICAgICAgICAg
IG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxGQUlMLCBEM0RTVEVOQ0lMT1Bf
UkVQTEFDRSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVO
Q0lMWkZBSUwsIEQzRFNURU5DSUxPUF9SRVBMQUNFKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNl
dFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxQQVNTLCBEM0RTVEVOQ0lMT1BfUkVQTEFDRSk7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMRU5BQkxFLCBGQUxTRSk7CisgICAgICAgIH0KKwor
ICAgICAgICBtRGV2aWNlLT5TZXRQaXhlbFNoYWRlcihOVUxMKTsKKyAgICAgICAgbURldmljZS0+
U2V0VmVydGV4U2hhZGVyKE5VTEwpOworICAgICAgICBtRGV2aWNlLT5TZXRGVkYoRDNERlZGX1hZ
WlJIVyk7CisgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NFUEFSQVRFQUxQ
SEFCTEVOREVOQUJMRSwgVFJVRSk7CisgICAgICAgIG1EZXZpY2UtPlNldFRleHR1cmVTdGFnZVN0
YXRlKDAsIEQzRFRTU19DT0xPUk9QLCBEM0RUT1BfU0VMRUNUQVJHMSk7CisgICAgICAgIG1EZXZp
Y2UtPlNldFRleHR1cmVTdGFnZVN0YXRlKDAsIEQzRFRTU19DT0xPUkFSRzEsIEQzRFRBX1RGQUNU
T1IpOworICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgwLCBEM0RUU1NfQUxQ
SEFPUCwgRDNEVE9QX1NFTEVDVEFSRzEpOworICAgICAgICBtRGV2aWNlLT5TZXRUZXh0dXJlU3Rh
Z2VTdGF0ZSgwLCBEM0RUU1NfQUxQSEFBUkcxLCBEM0RUQV9URkFDVE9SKTsKKyAgICAgICAgbURl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfVEVYVFVSRUZBQ1RPUiwgY29sb3IpOworICAgICAg
ICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19NVUxUSVNBTVBMRU1BU0ssIDB4RkZGRkZG
RkYpOworCisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJT
OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldFN0cmVhbVNvdXJjZUZy
ZXEoaSwgMSk7CisgICAgICAgIH0KKworICAgICAgICBmbG9hdCBxdWFkWzRdWzRdOyAgIC8vIEEg
cXVhZHJpbGF0ZXJhbCBjb3ZlcmluZyB0aGUgdGFyZ2V0LCBhbGlnbmVkIHRvIG1hdGNoIHRoZSBl
ZGdlcworICAgICAgICBxdWFkWzBdWzBdID0gLTAuNWY7CisgICAgICAgIHF1YWRbMF1bMV0gPSBt
UmVuZGVyVGFyZ2V0RGVzYy5oZWlnaHQgLSAwLjVmOworICAgICAgICBxdWFkWzBdWzJdID0gMC4w
ZjsKKyAgICAgICAgcXVhZFswXVszXSA9IDEuMGY7CisKKyAgICAgICAgcXVhZFsxXVswXSA9IG1S
ZW5kZXJUYXJnZXREZXNjLndpZHRoIC0gMC41ZjsKKyAgICAgICAgcXVhZFsxXVsxXSA9IG1SZW5k
ZXJUYXJnZXREZXNjLmhlaWdodCAtIDAuNWY7CisgICAgICAgIHF1YWRbMV1bMl0gPSAwLjBmOwor
ICAgICAgICBxdWFkWzFdWzNdID0gMS4wZjsKKworICAgICAgICBxdWFkWzJdWzBdID0gLTAuNWY7
CisgICAgICAgIHF1YWRbMl1bMV0gPSAtMC41ZjsKKyAgICAgICAgcXVhZFsyXVsyXSA9IDAuMGY7
CisgICAgICAgIHF1YWRbMl1bM10gPSAxLjBmOworCisgICAgICAgIHF1YWRbM11bMF0gPSBtUmVu
ZGVyVGFyZ2V0RGVzYy53aWR0aCAtIDAuNWY7CisgICAgICAgIHF1YWRbM11bMV0gPSAtMC41ZjsK
KyAgICAgICAgcXVhZFszXVsyXSA9IDAuMGY7CisgICAgICAgIHF1YWRbM11bM10gPSAxLjBmOwor
CisgICAgICAgIHN0YXJ0U2NlbmUoKTsKKyAgICAgICAgbURldmljZS0+RHJhd1ByaW1pdGl2ZVVQ
KEQzRFBUX1RSSUFOR0xFU1RSSVAsIDIsIHF1YWQsIHNpemVvZihmbG9hdFs0XSkpOworCisgICAg
ICAgIGlmIChjbGVhclBhcmFtcy5tYXNrICYgR0xfREVQVEhfQlVGRkVSX0JJVCkKKyAgICAgICAg
eworICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkVOQUJMRSwgVFJV
RSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aV1JJVEVFTkFC
TEUsIFRSVUUpOworICAgICAgICAgICAgbURldmljZS0+Q2xlYXIoMCwgTlVMTCwgRDNEQ0xFQVJf
WkJVRkZFUiwgY29sb3IsIGRlcHRoLCBzdGVuY2lsKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChtTWFza2VkQ2xlYXJTYXZlZFN0YXRlICE9IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1NYXNrZWRDbGVhclNhdmVkU3RhdGUtPkFwcGx5KCk7CisgICAgICAgIH0KKyAgICB9CisgICAg
ZWxzZSBpZiAoY2xlYXJQYXJhbXMubWFzaykKKyAgICB7CisgICAgICAgIERXT1JEIGR4Q2xlYXJG
bGFncyA9IDA7CisgICAgICAgIGlmIChjbGVhclBhcmFtcy5tYXNrICYgR0xfQ09MT1JfQlVGRkVS
X0JJVCkKKyAgICAgICAgeworICAgICAgICAgICAgZHhDbGVhckZsYWdzIHw9IEQzRENMRUFSX1RB
UkdFVDsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2xlYXJQYXJhbXMubWFzayAmIEdMX0RFUFRI
X0JVRkZFUl9CSVQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGR4Q2xlYXJGbGFncyB8PSBEM0RD
TEVBUl9aQlVGRkVSOworICAgICAgICB9CisgICAgICAgIGlmIChjbGVhclBhcmFtcy5tYXNrICYg
R0xfU1RFTkNJTF9CVUZGRVJfQklUKQorICAgICAgICB7CisgICAgICAgICAgICBkeENsZWFyRmxh
Z3MgfD0gRDNEQ0xFQVJfU1RFTkNJTDsKKyAgICAgICAgfQorCisgICAgICAgIG1EZXZpY2UtPkNs
ZWFyKDAsIE5VTEwsIGR4Q2xlYXJGbGFncywgY29sb3IsIGRlcHRoLCBzdGVuY2lsKTsKKyAgICB9
Cit9CisKK3ZvaWQgUmVuZGVyZXI5OjptYXJrQWxsU3RhdGVEaXJ0eSgpCit7CisgICAgbUFwcGxp
ZWRSZW5kZXJUYXJnZXRTZXJpYWwgPSAwOworICAgIG1BcHBsaWVkRGVwdGhidWZmZXJTZXJpYWwg
PSAwOworICAgIG1BcHBsaWVkU3RlbmNpbGJ1ZmZlclNlcmlhbCA9IDA7CisgICAgbURlcHRoU3Rl
bmNpbEluaXRpYWxpemVkID0gZmFsc2U7CisgICAgbVJlbmRlclRhcmdldERlc2NJbml0aWFsaXpl
ZCA9IGZhbHNlOworCisgICAgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgPSB0cnVlOworICAg
IG1Gb3JjZVNldFJhc3RlclN0YXRlID0gdHJ1ZTsKKyAgICBtRm9yY2VTZXRTY2lzc29yID0gdHJ1
ZTsKKyAgICBtRm9yY2VTZXRWaWV3cG9ydCA9IHRydWU7CisgICAgbUZvcmNlU2V0QmxlbmRTdGF0
ZSA9IHRydWU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpJTVBMRU1F
TlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFM7IGkrKykKKyAgICB7CisgICAg
ICAgIG1Gb3JjZVNldFZlcnRleFNhbXBsZXJTdGF0ZXNbaV0gPSB0cnVlOworICAgICAgICBtQ3Vy
VmVydGV4VGV4dHVyZVNlcmlhbHNbaV0gPSAwOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IGdsOjpNQVhfVEVYVFVSRV9JTUFHRV9VTklUUzsgaSsrKQorICAgIHsKKyAg
ICAgICAgbUZvcmNlU2V0UGl4ZWxTYW1wbGVyU3RhdGVzW2ldID0gdHJ1ZTsKKyAgICAgICAgbUN1
clBpeGVsVGV4dHVyZVNlcmlhbHNbaV0gPSAwOworICAgIH0KKworICAgIG1BcHBsaWVkSUJTZXJp
YWwgPSAwOworICAgIG1BcHBsaWVkUHJvZ3JhbUJpbmFyeVNlcmlhbCA9IDA7CisgICAgbUR4VW5p
Zm9ybXNEaXJ0eSA9IHRydWU7CisKKyAgICBtVmVydGV4RGVjbGFyYXRpb25DYWNoZS5tYXJrU3Rh
dGVEaXJ0eSgpOworfQorCit2b2lkIFJlbmRlcmVyOTo6cmVsZWFzZURldmljZVJlc291cmNlcygp
Cit7CisgICAgd2hpbGUgKCFtRXZlbnRRdWVyeVBvb2wuZW1wdHkoKSkKKyAgICB7CisgICAgICAg
IG1FdmVudFF1ZXJ5UG9vbC5iYWNrKCktPlJlbGVhc2UoKTsKKyAgICAgICAgbUV2ZW50UXVlcnlQ
b29sLnBvcF9iYWNrKCk7CisgICAgfQorCisgICAgaWYgKG1NYXNrZWRDbGVhclNhdmVkU3RhdGUp
CisgICAgeworICAgICAgICBtTWFza2VkQ2xlYXJTYXZlZFN0YXRlLT5SZWxlYXNlKCk7CisgICAg
ICAgIG1NYXNrZWRDbGVhclNhdmVkU3RhdGUgPSBOVUxMOworICAgIH0KKworICAgIG1WZXJ0ZXhT
aGFkZXJDYWNoZS5jbGVhcigpOworICAgIG1QaXhlbFNoYWRlckNhY2hlLmNsZWFyKCk7CisKKyAg
ICBkZWxldGUgbUJsaXQ7CisgICAgbUJsaXQgPSBOVUxMOworCisgICAgZGVsZXRlIG1WZXJ0ZXhE
YXRhTWFuYWdlcjsKKyAgICBtVmVydGV4RGF0YU1hbmFnZXIgPSBOVUxMOworCisgICAgZGVsZXRl
IG1JbmRleERhdGFNYW5hZ2VyOworICAgIG1JbmRleERhdGFNYW5hZ2VyID0gTlVMTDsKKworICAg
IGRlbGV0ZSBtTGluZUxvb3BJQjsKKyAgICBtTGluZUxvb3BJQiA9IE5VTEw7CisKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IE5VTV9OVUxMX0NPTE9SQlVGRkVSX0NBQ0hFX0VOVFJJRVM7IGkrKykK
KyAgICB7CisgICAgICAgIGRlbGV0ZSBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uYnVmZmVyOwor
ICAgICAgICBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uYnVmZmVyID0gTlVMTDsKKyAgICB9CisK
K30KKworCit2b2lkIFJlbmRlcmVyOTo6bm90aWZ5RGV2aWNlTG9zdCgpCit7CisgICAgbURldmlj
ZUxvc3QgPSB0cnVlOworICAgIG1EaXNwbGF5LT5ub3RpZnlEZXZpY2VMb3N0KCk7Cit9CisKK2Jv
b2wgUmVuZGVyZXI5Ojppc0RldmljZUxvc3QoKQoreworICAgIHJldHVybiBtRGV2aWNlTG9zdDsK
K30KKworLy8gc2V0IG5vdGlmeSB0byB0cnVlIHRvIGJyb2FkY2FzdCBhIG1lc3NhZ2UgdG8gYWxs
IGNvbnRleHRzIG9mIHRoZSBkZXZpY2UgbG9zcworYm9vbCBSZW5kZXJlcjk6OnRlc3REZXZpY2VM
b3N0KGJvb2wgbm90aWZ5KQoreworICAgIEhSRVNVTFQgc3RhdHVzID0gU19PSzsKKworICAgIGlm
IChtRGV2aWNlRXgpCisgICAgeworICAgICAgICBzdGF0dXMgPSBtRGV2aWNlRXgtPkNoZWNrRGV2
aWNlU3RhdGUoTlVMTCk7CisgICAgfQorICAgIGVsc2UgaWYgKG1EZXZpY2UpCisgICAgeworICAg
ICAgICBzdGF0dXMgPSBtRGV2aWNlLT5UZXN0Q29vcGVyYXRpdmVMZXZlbCgpOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICAvLyBObyBkZXZpY2UgeWV0LCBzbyBubyByZXNldCByZXF1
aXJlZAorICAgIH0KKworICAgIGJvb2wgaXNMb3N0ID0gRkFJTEVEKHN0YXR1cykgfHwgZDNkOTo6
aXNEZXZpY2VMb3N0RXJyb3Ioc3RhdHVzKTsKKworICAgIGlmIChpc0xvc3QpCisgICAgeworICAg
ICAgICAvLyBlbnN1cmUgd2Ugbm90ZSB0aGUgZGV2aWNlIGxvc3MgLS0KKyAgICAgICAgLy8gd2Un
bGwgcHJvYmFibHkgZ2V0IHRoaXMgZG9uZSBhZ2FpbiBieSBub3RpZnlEZXZpY2VMb3N0CisgICAg
ICAgIC8vIGJ1dCBiZXN0IHRvIHJlbWVtYmVyIGl0IQorICAgICAgICAvLyBOb3RlIHRoYXQgd2Ug
ZG9uJ3Qgd2FudCB0byBjbGVhciB0aGUgZGV2aWNlIGxvc3Mgc3RhdHVzIGhlcmUKKyAgICAgICAg
Ly8gLS0gdGhpcyBuZWVkcyB0byBiZSBkb25lIGJ5IHJlc2V0RGV2aWNlCisgICAgICAgIG1EZXZp
Y2VMb3N0ID0gdHJ1ZTsKKyAgICAgICAgaWYgKG5vdGlmeSkKKyAgICAgICAgeworICAgICAgICAg
ICAgbm90aWZ5RGV2aWNlTG9zdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGlz
TG9zdDsKK30KKworYm9vbCBSZW5kZXJlcjk6OnRlc3REZXZpY2VSZXNldHRhYmxlKCkKK3sKKyAg
ICBIUkVTVUxUIHN0YXR1cyA9IEQzRF9PSzsKKworICAgIGlmIChtRGV2aWNlRXgpCisgICAgewor
ICAgICAgICBzdGF0dXMgPSBtRGV2aWNlRXgtPkNoZWNrRGV2aWNlU3RhdGUoTlVMTCk7CisgICAg
fQorICAgIGVsc2UgaWYgKG1EZXZpY2UpCisgICAgeworICAgICAgICBzdGF0dXMgPSBtRGV2aWNl
LT5UZXN0Q29vcGVyYXRpdmVMZXZlbCgpOworICAgIH0KKworICAgIC8vIE9uIEQzRDlFeCwgREVW
SUNFTE9TVCByZXByZXNlbnRzIGEgaHVuZyBkZXZpY2UgdGhhdCBuZWVkcyB0byBiZSByZXN0YXJ0
ZWQKKyAgICAvLyBERVZJQ0VSRU1PVkVEIGluZGljYXRlcyB0aGUgZGV2aWNlIGhhcyBiZWVuIHN0
b3BwZWQgYW5kIG11c3QgYmUgcmVjcmVhdGVkCisgICAgc3dpdGNoIChzdGF0dXMpCisgICAgewor
ICAgICAgY2FzZSBEM0RFUlJfREVWSUNFTk9UUkVTRVQ6CisgICAgICBjYXNlIEQzREVSUl9ERVZJ
Q0VIVU5HOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGNhc2UgRDNERVJSX0RFVklDRUxP
U1Q6CisgICAgICAgIHJldHVybiAobURldmljZUV4ICE9IE5VTEwpOworICAgICAgY2FzZSBEM0RF
UlJfREVWSUNFUkVNT1ZFRDoKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
fQorCitib29sIFJlbmRlcmVyOTo6cmVzZXREZXZpY2UoKQoreworICAgIHJlbGVhc2VEZXZpY2VS
ZXNvdXJjZXMoKTsKKworICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBwcmVzZW50UGFyYW1ldGVy
cyA9IGdldERlZmF1bHRQcmVzZW50UGFyYW1ldGVycygpOworCisgICAgSFJFU1VMVCByZXN1bHQg
PSBEM0RfT0s7CisgICAgYm9vbCBsb3N0ID0gdGVzdERldmljZUxvc3QoZmFsc2UpOworICAgIGlu
dCBhdHRlbXB0cyA9IDM7CisKKyAgICB3aGlsZSAobG9zdCAmJiBhdHRlbXB0cyA+IDApCisgICAg
eworICAgICAgICBpZiAobURldmljZUV4KQorICAgICAgICB7CisgICAgICAgICAgICBTbGVlcCg1
MDApOyAgIC8vIEdpdmUgdGhlIGdyYXBoaWNzIGRyaXZlciBzb21lIENQVSB0aW1lCisgICAgICAg
ICAgICByZXN1bHQgPSBtRGV2aWNlRXgtPlJlc2V0RXgoJnByZXNlbnRQYXJhbWV0ZXJzLCBOVUxM
KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1EZXZpY2UtPlRlc3RDb29wZXJhdGl2ZUxldmVsKCk7CisgICAgICAgICAgICB3aGlsZSAo
cmVzdWx0ID09IEQzREVSUl9ERVZJQ0VMT1NUKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIFNsZWVwKDEwMCk7ICAgLy8gR2l2ZSB0aGUgZ3JhcGhpY3MgZHJpdmVyIHNvbWUgQ1BVIHRp
bWUKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5UZXN0Q29vcGVyYXRpdmVMZXZl
bCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmVzdWx0ID09IEQzREVSUl9E
RVZJQ0VOT1RSRVNFVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBt
RGV2aWNlLT5SZXNldCgmcHJlc2VudFBhcmFtZXRlcnMpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgbG9zdCA9IHRlc3REZXZpY2VMb3N0KGZhbHNlKTsKKyAgICAgICAgYXR0
ZW1wdHMgLS07CisgICAgfQorCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAg
ICAgRVJSKCJSZXNldC9SZXNldEV4IGZhaWxlZCBtdWx0aXBsZSB0aW1lczogMHglMDhYIiwgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIHJlc2V0IGRldmlj
ZSBkZWZhdWx0cworICAgIGluaXRpYWxpemVEZXZpY2UoKTsKKyAgICBtRGV2aWNlTG9zdCA9IGZh
bHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0RXT1JEIFJlbmRlcmVyOTo6Z2V0QWRhcHRl
clZlbmRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1BZGFwdGVySWRlbnRpZmllci5WZW5kb3JJ
ZDsKK30KKworc3RkOjpzdHJpbmcgUmVuZGVyZXI5OjpnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkg
Y29uc3QKK3sKKyAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gcmVuZGVyZXJTdHJpbmc7CisKKyAgICBy
ZW5kZXJlclN0cmluZyA8PCBtQWRhcHRlcklkZW50aWZpZXIuRGVzY3JpcHRpb247CisgICAgaWYg
KGdldFNoYXJlSGFuZGxlU3VwcG9ydCgpKQorICAgIHsKKyAgICAgICAgcmVuZGVyZXJTdHJpbmcg
PDwgIiBEaXJlY3QzRDlFeCI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJlbmRl
cmVyU3RyaW5nIDw8ICIgRGlyZWN0M0Q5IjsKKyAgICB9CisKKyAgICByZW5kZXJlclN0cmluZyA8
PCAiIHZzXyIgPDwgRDNEU0hBREVSX1ZFUlNJT05fTUFKT1IobURldmljZUNhcHMuVmVydGV4U2hh
ZGVyVmVyc2lvbikgPDwgIl8iIDw8IEQzRFNIQURFUl9WRVJTSU9OX01JTk9SKG1EZXZpY2VDYXBz
LlZlcnRleFNoYWRlclZlcnNpb24pOworICAgIHJlbmRlcmVyU3RyaW5nIDw8ICIgcHNfIiA8PCBE
M0RTSEFERVJfVkVSU0lPTl9NQUpPUihtRGV2aWNlQ2Fwcy5QaXhlbFNoYWRlclZlcnNpb24pIDw8
ICJfIiA8PCBEM0RTSEFERVJfVkVSU0lPTl9NSU5PUihtRGV2aWNlQ2Fwcy5QaXhlbFNoYWRlclZl
cnNpb24pOworCisgICAgcmV0dXJuIHJlbmRlcmVyU3RyaW5nLnN0cigpOworfQorCitHVUlEIFJl
bmRlcmVyOTo6Z2V0QWRhcHRlcklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtQWRh
cHRlcklkZW50aWZpZXIuRGV2aWNlSWRlbnRpZmllcjsKK30KKwordm9pZCBSZW5kZXJlcjk6Omdl
dE11bHRpU2FtcGxlU3VwcG9ydChEM0RGT1JNQVQgZm9ybWF0LCBib29sICptdWx0aVNhbXBsZUFy
cmF5KQoreworICAgIGZvciAoaW50IG11bHRpU2FtcGxlSW5kZXggPSAwOyBtdWx0aVNhbXBsZUlu
ZGV4IDw9IEQzRE1VTFRJU0FNUExFXzE2X1NBTVBMRVM7IG11bHRpU2FtcGxlSW5kZXgrKykKKyAg
ICB7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbUQzZDktPkNoZWNrRGV2aWNlTXVsdGlTYW1w
bGVUeXBlKG1BZGFwdGVyLCBtRGV2aWNlVHlwZSwgZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLCAoRDNETVVMVElT
QU1QTEVfVFlQRSltdWx0aVNhbXBsZUluZGV4LCBOVUxMKTsKKworICAgICAgICBtdWx0aVNhbXBs
ZUFycmF5W211bHRpU2FtcGxlSW5kZXhdID0gU1VDQ0VFREVEKHJlc3VsdCk7CisgICAgfQorfQor
Citib29sIFJlbmRlcmVyOTo6Z2V0QkdSQVRleHR1cmVTdXBwb3J0KCkgY29uc3QKK3sKKyAgICAv
LyBEaXJlY3RYIDkgYWx3YXlzIHN1cHBvcnRzIEJHUkEKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBSZW5kZXJlcjk6OmdldERYVDFUZXh0dXJlU3VwcG9ydCgpCit7CisgICAgcmV0dXJuIG1E
WFQxVGV4dHVyZVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXI5OjpnZXREWFQzVGV4dHVyZVN1
cHBvcnQoKQoreworICAgIHJldHVybiBtRFhUM1RleHR1cmVTdXBwb3J0OworfQorCitib29sIFJl
bmRlcmVyOTo6Z2V0RFhUNVRleHR1cmVTdXBwb3J0KCkKK3sKKyAgICByZXR1cm4gbURYVDVUZXh0
dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJlcjk6OmdldERlcHRoVGV4dHVyZVN1cHBvcnQo
KSBjb25zdAoreworICAgIHJldHVybiBtRGVwdGhUZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBS
ZW5kZXJlcjk6OmdldEZsb2F0MzJUZXh0dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wg
KnJlbmRlcmFibGUpCit7CisgICAgKmZpbHRlcmluZyA9IG1GbG9hdDMyRmlsdGVyU3VwcG9ydDsK
KyAgICAqcmVuZGVyYWJsZSA9IG1GbG9hdDMyUmVuZGVyU3VwcG9ydDsKKyAgICByZXR1cm4gbUZs
b2F0MzJUZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJlcjk6OmdldEZsb2F0MTZUZXh0
dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wgKnJlbmRlcmFibGUpCit7CisgICAgKmZp
bHRlcmluZyA9IG1GbG9hdDE2RmlsdGVyU3VwcG9ydDsKKyAgICAqcmVuZGVyYWJsZSA9IG1GbG9h
dDE2UmVuZGVyU3VwcG9ydDsKKyAgICByZXR1cm4gbUZsb2F0MTZUZXh0dXJlU3VwcG9ydDsKK30K
KworYm9vbCBSZW5kZXJlcjk6OmdldEx1bWluYW5jZVRleHR1cmVTdXBwb3J0KCkKK3sKKyAgICBy
ZXR1cm4gbUx1bWluYW5jZVRleHR1cmVTdXBwb3J0OworfQorCitib29sIFJlbmRlcmVyOTo6Z2V0
THVtaW5hbmNlQWxwaGFUZXh0dXJlU3VwcG9ydCgpCit7CisgICAgcmV0dXJuIG1MdW1pbmFuY2VB
bHBoYVRleHR1cmVTdXBwb3J0OworfQorCitib29sIFJlbmRlcmVyOTo6Z2V0VGV4dHVyZUZpbHRl
ckFuaXNvdHJvcHlTdXBwb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN1cHBvcnRzVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcHk7Cit9CisKK2Zsb2F0IFJlbmRlcmVyOTo6Z2V0VGV4dHVyZU1heEFu
aXNvdHJvcHkoKSBjb25zdAoreworICAgIGlmIChtU3VwcG9ydHNUZXh0dXJlRmlsdGVyQW5pc290
cm9weSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obURldmljZUNh
cHMuTWF4QW5pc290cm9weSk7CisgICAgfQorICAgIHJldHVybiAxLjBmOworfQorCitib29sIFJl
bmRlcmVyOTo6Z2V0RXZlbnRRdWVyeVN1cHBvcnQoKQoreworICAgIHJldHVybiBtRXZlbnRRdWVy
eVN1cHBvcnQ7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldE1heFZlcnRleFRleHR1
cmVJbWFnZVVuaXRzKCkgY29uc3QKK3sKKyAgICBNRVRBX0FTU0VSVChNQVhfVEVYVFVSRV9JTUFH
RV9VTklUU19WVEZfU00zIDw9IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVf
SU1BR0VfVU5JVFMpOworICAgIHJldHVybiBtVmVydGV4VGV4dHVyZVN1cHBvcnQgPyBNQVhfVEVY
VFVSRV9JTUFHRV9VTklUU19WVEZfU00zIDogMDsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVy
OTo6Z2V0TWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGdsOjpNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyArIGdldE1heFZlcnRleFRleHR1cmVJbWFnZVVu
aXRzKCk7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldFJlc2VydmVkVmVydGV4VW5p
Zm9ybVZlY3RvcnMoKSBjb25zdAoreworICAgIHJldHVybiAyOyAgIC8vIGR4X1ZpZXdBZGp1c3Qg
YW5kIGR4X0RlcHRoUmFuZ2UuCit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldFJlc2Vy
dmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIDM7ICAgLy8g
ZHhfVmlld0Nvb3JkcywgZHhfRGVwdGhGcm9udCBhbmQgZHhfRGVwdGhSYW5nZS4KK30KKwordW5z
aWduZWQgaW50IFJlbmRlcmVyOTo6Z2V0TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMoKSBjb25zdAor
eworICAgIHJldHVybiBNQVhfVkVSVEVYX0NPTlNUQU5UX1ZFQ1RPUlNfRDNEOSAtIGdldFJlc2Vy
dmVkVmVydGV4VW5pZm9ybVZlY3RvcnMoKTsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyOTo6
Z2V0TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0Cit7CisgICAgY29uc3QgaW50IG1h
eFBpeGVsQ29uc3RhbnRWZWN0b3JzID0gKGdldE1ham9yU2hhZGVyTW9kZWwoKSA+PSAzKSA/IE1B
WF9QSVhFTF9DT05TVEFOVF9WRUNUT1JTX1NNMyA6IE1BWF9QSVhFTF9DT05TVEFOVF9WRUNUT1JT
X1NNMjsKKworICAgIHJldHVybiBtYXhQaXhlbENvbnN0YW50VmVjdG9ycyAtIGdldFJlc2VydmVk
RnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpOworfQorCit1bnNpZ25lZCBpbnQgUmVuZGVyZXI5Ojpn
ZXRNYXhWYXJ5aW5nVmVjdG9ycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIChnZXRNYWpvclNoYWRl
ck1vZGVsKCkgPj0gMykgPyBNQVhfVkFSWUlOR19WRUNUT1JTX1NNMyA6IE1BWF9WQVJZSU5HX1ZF
Q1RPUlNfU00yOworfQorCitib29sIFJlbmRlcmVyOTo6Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBv
cnQoKSBjb25zdAoreworICAgIHJldHVybiBtU3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlczsKK30K
KworYm9vbCBSZW5kZXJlcjk6OmdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1PY2NsdXNpb25RdWVyeVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXI5Ojpn
ZXRJbnN0YW5jaW5nU3VwcG9ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EZXZpY2VDYXBzLlBp
eGVsU2hhZGVyVmVyc2lvbiA+PSBEM0RQU19WRVJTSU9OKDMsIDApOworfQorCitib29sIFJlbmRl
cmVyOTo6Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KCkgY29uc3QKK3sKKyAgICAvLyBQSVggZG9lc24n
dCBzZWVtIHRvIHN1cHBvcnQgdXNpbmcgc2hhcmUgaGFuZGxlcywgc28gZGlzYWJsZSB0aGVtLgor
ICAgIHJldHVybiAobUQzZDlFeCAhPSBOVUxMKSAmJiAhZ2w6OnBlcmZBY3RpdmUoKTsKK30KKwor
Ym9vbCBSZW5kZXJlcjk6OmdldERlcml2YXRpdmVJbnN0cnVjdGlvblN1cHBvcnQoKSBjb25zdAor
eworICAgIHJldHVybiAobURldmljZUNhcHMuUFMyMENhcHMuQ2FwcyAmIEQzRFBTMjBDQVBTX0dS
QURJRU5USU5TVFJVQ1RJT05TKSAhPSAwOworfQorCitib29sIFJlbmRlcmVyOTo6Z2V0UG9zdFN1
YkJ1ZmZlclN1cHBvcnQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCitpbnQgUmVu
ZGVyZXI5OjpnZXRNYWpvclNoYWRlck1vZGVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRDNEU0hB
REVSX1ZFUlNJT05fTUFKT1IobURldmljZUNhcHMuUGl4ZWxTaGFkZXJWZXJzaW9uKTsKK30KKwor
ZmxvYXQgUmVuZGVyZXI5OjpnZXRNYXhQb2ludFNpemUoKSBjb25zdAoreworICAgIC8vIFBvaW50
IHNpemUgY2xhbXBlZCBhdCAxLjBmIGZvciBTTTIKKyAgICByZXR1cm4gZ2V0TWFqb3JTaGFkZXJN
b2RlbCgpID09IDMgPyBtRGV2aWNlQ2Fwcy5NYXhQb2ludFNpemUgOiAxLjBmOworfQorCitpbnQg
UmVuZGVyZXI5OjpnZXRNYXhWaWV3cG9ydERpbWVuc2lvbigpIGNvbnN0Cit7CisgICAgaW50IG1h
eFRleHR1cmVEaW1lbnNpb24gPSBzdGQ6Om1pbihzdGQ6Om1pbihnZXRNYXhUZXh0dXJlV2lkdGgo
KSwgZ2V0TWF4VGV4dHVyZUhlaWdodCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChpbnQpZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX1NJWkUpOworICAg
IHJldHVybiBtYXhUZXh0dXJlRGltZW5zaW9uOworfQorCitpbnQgUmVuZGVyZXI5OjpnZXRNYXhU
ZXh0dXJlV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiAoaW50KW1EZXZpY2VDYXBzLk1heFRl
eHR1cmVXaWR0aDsKK30KKworaW50IFJlbmRlcmVyOTo6Z2V0TWF4VGV4dHVyZUhlaWdodCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIChpbnQpbURldmljZUNhcHMuTWF4VGV4dHVyZUhlaWdodDsKK30K
KworYm9vbCBSZW5kZXJlcjk6OmdldDMyQml0SW5kZXhTdXBwb3J0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbURldmljZUNhcHMuTWF4VmVydGV4SW5kZXggPj0gKDEgPDwgMTYpOworfQorCitEV09S
RCBSZW5kZXJlcjk6OmdldENhcHNEZWNsVHlwZXMoKSBjb25zdAoreworICAgIHJldHVybiBtRGV2
aWNlQ2Fwcy5EZWNsVHlwZXM7Cit9CisKK2ludCBSZW5kZXJlcjk6OmdldE1pblN3YXBJbnRlcnZh
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1NaW5Td2FwSW50ZXJ2YWw7Cit9CisKK2ludCBSZW5k
ZXJlcjk6OmdldE1heFN3YXBJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1NYXhTd2Fw
SW50ZXJ2YWw7Cit9CisKK2ludCBSZW5kZXJlcjk6OmdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSBj
b25zdAoreworICAgIHJldHVybiBtTWF4U3VwcG9ydGVkU2FtcGxlczsKK30KKworaW50IFJlbmRl
cmVyOTo6Z2V0TmVhcmVzdFN1cHBvcnRlZFNhbXBsZXMoRDNERk9STUFUIGZvcm1hdCwgaW50IHJl
cXVlc3RlZCkgY29uc3QKK3sKKyAgICBpZiAocmVxdWVzdGVkID09IDApCisgICAgeworICAgICAg
ICByZXR1cm4gcmVxdWVzdGVkOworICAgIH0KKworICAgIHN0ZDo6bWFwPEQzREZPUk1BVCwgYm9v
bCAqPjo6Y29uc3RfaXRlcmF0b3IgaXRyID0gbU11bHRpU2FtcGxlU3VwcG9ydC5maW5kKGZvcm1h
dCk7CisgICAgaWYgKGl0ciA9PSBtTXVsdGlTYW1wbGVTdXBwb3J0LmVuZCgpKQorICAgIHsKKyAg
ICAgICAgaWYgKGZvcm1hdCA9PSBEM0RGTVRfVU5LTk9XTikKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZm9yIChpbnQgaSA9IHJlcXVlc3Rl
ZDsgaSA8PSBEM0RNVUxUSVNBTVBMRV8xNl9TQU1QTEVTOyArK2kpCisgICAgeworICAgICAgICBp
ZiAoaXRyLT5zZWNvbmRbaV0gJiYgaSAhPSBEM0RNVUxUSVNBTVBMRV9OT05NQVNLQUJMRSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gLTE7Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldE1heFJlbmRlclRhcmdl
dHMoKSBjb25zdAoreworICAgIC8vIHdlIGRvIG5vdCBzdXBwb3J0IE1SVCBpbiBkM2Q5CisgICAg
cmV0dXJuIDE7Cit9CisKK0QzREZPUk1BVCBSZW5kZXJlcjk6OkNvbnZlcnRUZXh0dXJlSW50ZXJu
YWxGb3JtYXQoR0xpbnQgaW50ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNoIChpbnRlcm5hbGZv
cm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2OgorICAgICAgY2Fz
ZSBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVM6CisgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJ
TDhfT0VTOgorICAgICAgICByZXR1cm4gRDNERk1UX0lOVFo7CisgICAgICBjYXNlIEdMX0NPTVBS
RVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9T
M1RDX0RYVDFfRVhUOgorICAgICAgICByZXR1cm4gRDNERk1UX0RYVDE7CisgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6CisgICAgICAgIHJldHVybiBEM0RGTVRf
RFhUMzsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAg
ICAgICAgcmV0dXJuIEQzREZNVF9EWFQ1OworICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoKKyAg
ICAgIGNhc2UgR0xfUkdCMzJGX0VYVDoKKyAgICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhUOgorICAg
ICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgorICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQ
SEEzMkZfRVhUOgorICAgICAgICByZXR1cm4gRDNERk1UX0EzMkIzMkczMlIzMkY7CisgICAgICBj
YXNlIEdMX1JHQkExNkZfRVhUOgorICAgICAgY2FzZSBHTF9SR0IxNkZfRVhUOgorICAgICAgY2Fz
ZSBHTF9BTFBIQTE2Rl9FWFQ6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6CisgICAg
ICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQ6CisgICAgICAgIHJldHVybiBEM0RGTVRf
QTE2QjE2RzE2UjE2RjsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOF9FWFQ6CisgICAgICAgIGlm
IChnZXRMdW1pbmFuY2VUZXh0dXJlU3VwcG9ydCgpKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gRDNERk1UX0w4OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQ6CisgICAgICAgIGlmIChnZXRMdW1pbmFuY2VBbHBoYVRl
eHR1cmVTdXBwb3J0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBEM0RGTVRfQThM
ODsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6Cisg
ICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgICAgcmV0dXJuIEQzREZNVF9YOFI4RzhCODsKKyAg
ICB9CisKKyAgICByZXR1cm4gRDNERk1UX0E4UjhHOEI4OworfQorCitib29sIFJlbmRlcmVyOTo6
Y29weVRvUmVuZGVyVGFyZ2V0KFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKmRlc3QsIFRleHR1
cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnNvdXJjZSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGZhbHNl
OworCisgICAgaWYgKHNvdXJjZSAmJiBkZXN0KQorICAgIHsKKyAgICAgICAgVGV4dHVyZVN0b3Jh
Z2U5XzJEICpzb3VyY2U5ID0gVGV4dHVyZVN0b3JhZ2U5XzJEOjptYWtlVGV4dHVyZVN0b3JhZ2U5
XzJEKHNvdXJjZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgICAgICBUZXh0dXJlU3RvcmFn
ZTlfMkQgKmRlc3Q5ID0gVGV4dHVyZVN0b3JhZ2U5XzJEOjptYWtlVGV4dHVyZVN0b3JhZ2U5XzJE
KGRlc3QtPmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsKKworICAgICAgICBpbnQgbGV2ZWxzID0gc291
cmNlOS0+bGV2ZWxDb3VudCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxldmVsczsg
KytpKQorICAgICAgICB7CisgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3JjU3VyZiA9
IHNvdXJjZTktPmdldFN1cmZhY2VMZXZlbChpLCBmYWxzZSk7CisgICAgICAgICAgICBJRGlyZWN0
M0RTdXJmYWNlOSAqZHN0U3VyZiA9IGRlc3Q5LT5nZXRTdXJmYWNlTGV2ZWwoaSwgZmFsc2UpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICByZXN1bHQgPSBjb3B5VG9SZW5kZXJUYXJnZXQoZHN0
U3VyZiwgc3JjU3VyZiwgc291cmNlOS0+aXNNYW5hZ2VkKCkpOworCisgICAgICAgICAgICBpZiAo
c3JjU3VyZikgc3JjU3VyZi0+UmVsZWFzZSgpOworICAgICAgICAgICAgaWYgKGRzdFN1cmYpIGRz
dFN1cmYtPlJlbGVhc2UoKTsKKworICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworYm9vbCBSZW5kZXJlcjk6OmNvcHlUb1JlbmRlclRhcmdldChUZXh0dXJlU3RvcmFn
ZUludGVyZmFjZUN1YmUgKmRlc3QsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSAqc291cmNl
KQoreworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisKKyAgICBpZiAoc291cmNlICYmIGRlc3Qp
CisgICAgeworICAgICAgICBUZXh0dXJlU3RvcmFnZTlfQ3ViZSAqc291cmNlOSA9IFRleHR1cmVT
dG9yYWdlOV9DdWJlOjptYWtlVGV4dHVyZVN0b3JhZ2U5X0N1YmUoc291cmNlLT5nZXRTdG9yYWdl
SW5zdGFuY2UoKSk7CisgICAgICAgIFRleHR1cmVTdG9yYWdlOV9DdWJlICpkZXN0OSA9IFRleHR1
cmVTdG9yYWdlOV9DdWJlOjptYWtlVGV4dHVyZVN0b3JhZ2U5X0N1YmUoZGVzdC0+Z2V0U3RvcmFn
ZUluc3RhbmNlKCkpOworICAgICAgICBpbnQgbGV2ZWxzID0gc291cmNlOS0+bGV2ZWxDb3VudCgp
OworICAgICAgICBmb3IgKGludCBmID0gMDsgZiA8IDY7IGYrKykKKyAgICAgICAgeworICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZXZlbHM7IGkrKykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3JjU3VyZiA9IHNvdXJjZTktPmdldEN1
YmVNYXBTdXJmYWNlKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGYsIGksIGZhbHNl
KTsKKyAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZHN0U3VyZiA9IGRlc3Q5LT5n
ZXRDdWJlTWFwU3VyZmFjZShHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmLCBpLCB0
cnVlKTsKKworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvcHlUb1JlbmRlclRhcmdldChkc3RT
dXJmLCBzcmNTdXJmLCBzb3VyY2U5LT5pc01hbmFnZWQoKSk7CisKKyAgICAgICAgICAgICAgICBp
ZiAoc3JjU3VyZikgc3JjU3VyZi0+UmVsZWFzZSgpOworICAgICAgICAgICAgICAgIGlmIChkc3RT
dXJmKSBkc3RTdXJmLT5SZWxlYXNlKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRDNEUE9PTCBSZW5kZXJlcjk6
OmdldEJ1ZmZlclBvb2woRFdPUkQgdXNhZ2UpIGNvbnN0Cit7CisgICAgaWYgKG1EM2Q5RXggIT0g
TlVMTCkKKyAgICB7CisgICAgICAgIHJldHVybiBEM0RQT09MX0RFRkFVTFQ7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIGlmICghKHVzYWdlICYgRDNEVVNBR0VfRFlOQU1JQykpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBEM0RQT09MX01BTkFHRUQ7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gRDNEUE9PTF9ERUZBVUxUOworfQorCitib29sIFJlbmRlcmVy
OTo6Y29weUltYWdlKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBUZXh0dXJlU3RvcmFnZUludGVy
ZmFjZTJEICpzdG9yYWdlLCBHTGludCBsZXZlbCkKK3sKKyAgICBSRUNUIHJlY3Q7CisgICAgcmVj
dC5sZWZ0ID0gc291cmNlUmVjdC54OworICAgIHJlY3QudG9wID0gc291cmNlUmVjdC55OworICAg
IHJlY3QucmlnaHQgPSBzb3VyY2VSZWN0LnggKyBzb3VyY2VSZWN0LndpZHRoOworICAgIHJlY3Qu
Ym90dG9tID0gc291cmNlUmVjdC55ICsgc291cmNlUmVjdC5oZWlnaHQ7CisKKyAgICByZXR1cm4g
bUJsaXQtPmNvcHkoZnJhbWVidWZmZXIsIHJlY3QsIGRlc3RGb3JtYXQsIHhvZmZzZXQsIHlvZmZz
ZXQsIHN0b3JhZ2UsIGxldmVsKTsKK30KKworYm9vbCBSZW5kZXJlcjk6OmNvcHlJbWFnZShnbDo6
RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0
LCBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdl
LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkKK3sKKyAgICBSRUNUIHJlY3Q7CisgICAgcmVj
dC5sZWZ0ID0gc291cmNlUmVjdC54OworICAgIHJlY3QudG9wID0gc291cmNlUmVjdC55OworICAg
IHJlY3QucmlnaHQgPSBzb3VyY2VSZWN0LnggKyBzb3VyY2VSZWN0LndpZHRoOworICAgIHJlY3Qu
Ym90dG9tID0gc291cmNlUmVjdC55ICsgc291cmNlUmVjdC5oZWlnaHQ7CisKKyAgICByZXR1cm4g
bUJsaXQtPmNvcHkoZnJhbWVidWZmZXIsIHJlY3QsIGRlc3RGb3JtYXQsIHhvZmZzZXQsIHlvZmZz
ZXQsIHN0b3JhZ2UsIHRhcmdldCwgbGV2ZWwpOworfQorCitib29sIFJlbmRlcmVyOTo6YmxpdFJl
Y3QoZ2w6OkZyYW1lYnVmZmVyICpyZWFkRnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnJlYWRSZWN0LCBnbDo6RnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJl
Y3RhbmdsZSAmZHJhd1JlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBibGl0UmVu
ZGVyVGFyZ2V0LCBib29sIGJsaXREZXB0aFN0ZW5jaWwpCit7CisgICAgZW5kU2NlbmUoKTsKKwor
ICAgIGlmIChibGl0UmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZl
ciAqcmVhZEJ1ZmZlciA9IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoMCk7CisgICAg
ICAgIGdsOjpSZW5kZXJidWZmZXIgKmRyYXdCdWZmZXIgPSBkcmF3RnJhbWVidWZmZXItPmdldENv
bG9yYnVmZmVyKDApOworICAgICAgICBSZW5kZXJUYXJnZXQ5ICpyZWFkUmVuZGVyVGFyZ2V0ID0g
TlVMTDsKKyAgICAgICAgUmVuZGVyVGFyZ2V0OSAqZHJhd1JlbmRlclRhcmdldCA9IE5VTEw7Cisg
ICAgICAgIElEaXJlY3QzRFN1cmZhY2U5KiByZWFkU3VyZmFjZSA9IE5VTEw7CisgICAgICAgIElE
aXJlY3QzRFN1cmZhY2U5KiBkcmF3U3VyZmFjZSA9IE5VTEw7CisKKyAgICAgICAgaWYgKHJlYWRC
dWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlYWRSZW5kZXJUYXJnZXQgPSBSZW5kZXJU
YXJnZXQ5OjptYWtlUmVuZGVyVGFyZ2V0OShyZWFkQnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKSk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRyYXdCdWZmZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRyYXdSZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQ5OjptYWtlUmVuZGVyVGFyZ2V0OShk
cmF3QnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
cmVhZFJlbmRlclRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgICAgcmVhZFN1cmZhY2UgPSBy
ZWFkUmVuZGVyVGFyZ2V0LT5nZXRTdXJmYWNlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRy
YXdSZW5kZXJUYXJnZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRyYXdTdXJmYWNlID0gZHJh
d1JlbmRlclRhcmdldC0+Z2V0U3VyZmFjZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFy
ZWFkU3VyZmFjZSB8fCAhZHJhd1N1cmZhY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigi
RmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0LiIpOworICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgICAgIH0KKworICAg
ICAgICBSRUNUIHNyY1JlY3Q7CisgICAgICAgIHNyY1JlY3QubGVmdCA9IHJlYWRSZWN0Lng7Cisg
ICAgICAgIHNyY1JlY3QucmlnaHQgPSByZWFkUmVjdC54ICsgcmVhZFJlY3Qud2lkdGg7CisgICAg
ICAgIHNyY1JlY3QudG9wID0gcmVhZFJlY3QueTsKKyAgICAgICAgc3JjUmVjdC5ib3R0b20gPSBy
ZWFkUmVjdC55ICsgcmVhZFJlY3QuaGVpZ2h0OworCisgICAgICAgIFJFQ1QgZHN0UmVjdDsKKyAg
ICAgICAgZHN0UmVjdC5sZWZ0ID0gZHJhd1JlY3QueDsKKyAgICAgICAgZHN0UmVjdC5yaWdodCA9
IGRyYXdSZWN0LnggKyBkcmF3UmVjdC53aWR0aDsKKyAgICAgICAgZHN0UmVjdC50b3AgPSBkcmF3
UmVjdC55OworICAgICAgICBkc3RSZWN0LmJvdHRvbSA9IGRyYXdSZWN0LnkgKyBkcmF3UmVjdC5o
ZWlnaHQ7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5TdHJldGNoUmVjdChy
ZWFkU3VyZmFjZSwgJnNyY1JlY3QsIGRyYXdTdXJmYWNlLCAmZHN0UmVjdCwgRDNEVEVYRl9OT05F
KTsKKworICAgICAgICByZWFkU3VyZmFjZS0+UmVsZWFzZSgpOworICAgICAgICBkcmF3U3VyZmFj
ZS0+UmVsZWFzZSgpOworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgewor
ICAgICAgICAgICAgRVJSKCJCbGl0RnJhbWVidWZmZXJBTkdMRSBmYWlsZWQ6IFN0cmV0Y2hSZWN0
IHJldHVybmVkICV4LiIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoYmxpdERlcHRoU3RlbmNpbCkKKyAgICB7CisgICAgICAg
IGdsOjpSZW5kZXJidWZmZXIgKnJlYWRCdWZmZXIgPSByZWFkRnJhbWVidWZmZXItPmdldERlcHRo
T3JTdGVuY2lsYnVmZmVyKCk7CisgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKmRyYXdCdWZmZXIg
PSBkcmF3RnJhbWVidWZmZXItPmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKCk7CisgICAgICAgIFJl
bmRlclRhcmdldDkgKnJlYWREZXB0aFN0ZW5jaWwgPSBOVUxMOworICAgICAgICBSZW5kZXJUYXJn
ZXQ5ICpkcmF3RGVwdGhTdGVuY2lsID0gTlVMTDsKKyAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkq
IHJlYWRTdXJmYWNlID0gTlVMTDsKKyAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkqIGRyYXdTdXJm
YWNlID0gTlVMTDsKKworICAgICAgICBpZiAocmVhZEJ1ZmZlcikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmVhZERlcHRoU3RlbmNpbCA9IFJlbmRlclRhcmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5
KHJlYWRCdWZmZXItPmdldERlcHRoU3RlbmNpbCgpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
ZHJhd0J1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgZHJhd0RlcHRoU3RlbmNpbCA9IFJl
bmRlclRhcmdldDk6Om1ha2VSZW5kZXJUYXJnZXQ5KGRyYXdCdWZmZXItPmdldERlcHRoU3RlbmNp
bCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZWFkRGVwdGhTdGVuY2lsKQorICAgICAg
ICB7CisgICAgICAgICAgICByZWFkU3VyZmFjZSA9IHJlYWREZXB0aFN0ZW5jaWwtPmdldFN1cmZh
Y2UoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZHJhd0RlcHRoU3RlbmNpbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZHJhd1N1cmZhY2UgPSBkcmF3RGVwdGhTdGVuY2lsLT5nZXRTdXJmYWNl
KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXJlYWRTdXJmYWNlIHx8ICFkcmF3U3VyZmFj
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIHJl
bmRlciB0YXJnZXQuIik7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9N
RU1PUlksIGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURl
dmljZS0+U3RyZXRjaFJlY3QocmVhZFN1cmZhY2UsIE5VTEwsIGRyYXdTdXJmYWNlLCBOVUxMLCBE
M0RURVhGX05PTkUpOworCisgICAgICAgIHJlYWRTdXJmYWNlLT5SZWxlYXNlKCk7CisgICAgICAg
IGRyYXdTdXJmYWNlLT5SZWxlYXNlKCk7CisKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQor
ICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkJsaXRGcmFtZWJ1ZmZlckFOR0xFIGZhaWxlZDog
U3RyZXRjaFJlY3QgcmV0dXJuZWQgJXguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJl
bmRlcmVyOTo6cmVhZFBpeGVscyhnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBvdXRwdXRQ
aXRjaCwgYm9vbCBwYWNrUmV2ZXJzZVJvd09yZGVyLCBHTGludCBwYWNrQWxpZ25tZW50LCB2b2lk
KiBwaXhlbHMpCit7CisgICAgUmVuZGVyVGFyZ2V0OSAqcmVuZGVyVGFyZ2V0ID0gTlVMTDsKKyAg
ICBJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSA9IE5VTEw7CisgICAgZ2w6OlJlbmRlcmJ1ZmZl
ciAqY29sb3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoMCk7CisKKyAgICBp
ZiAoY29sb3JidWZmZXIpCisgICAgeworICAgICAgICByZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJn
ZXQ5OjptYWtlUmVuZGVyVGFyZ2V0OShjb2xvcmJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCkpOwor
ICAgIH0KKyAgICAKKyAgICBpZiAocmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgc3VyZmFj
ZSA9IHJlbmRlclRhcmdldC0+Z2V0U3VyZmFjZSgpOworICAgIH0KKworICAgIGlmICghc3VyZmFj
ZSkKKyAgICB7CisgICAgICAgIC8vIGNvbnRleHQgbXVzdCBiZSBsb3N0CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBEM0RTVVJGQUNFX0RFU0MgZGVzYzsKKyAgICBzdXJmYWNlLT5HZXRE
ZXNjKCZkZXNjKTsKKworICAgIGlmIChkZXNjLk11bHRpU2FtcGxlVHlwZSAhPSBEM0RNVUxUSVNB
TVBMRV9OT05FKQorICAgIHsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FOiBS
ZXF1aXJlcyByZXNvbHZlIHVzaW5nIFN0cmV0Y2hSZWN0IGludG8gbm9uLW11bHRpc2FtcGxlZCBy
ZW5kZXIgdGFyZ2V0CisgICAgICAgIHN1cmZhY2UtPlJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJu
IGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9CisKKyAgICBIUkVTVUxUIHJlc3Vs
dDsKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3lzdGVtU3VyZmFjZSA9IE5VTEw7CisgICAgYm9v
bCBkaXJlY3RUb1BpeGVscyA9ICFwYWNrUmV2ZXJzZVJvd09yZGVyICYmIHBhY2tBbGlnbm1lbnQg
PD0gNCAmJiBnZXRTaGFyZUhhbmRsZVN1cHBvcnQoKSAmJgorICAgICAgICAgICAgICAgICAgICAg
ICAgICB4ID09IDAgJiYgeSA9PSAwICYmIFVJTlQod2lkdGgpID09IGRlc2MuV2lkdGggJiYgVUlO
VChoZWlnaHQpID09IGRlc2MuSGVpZ2h0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
c2MuRm9ybWF0ID09IEQzREZNVF9BOFI4RzhCOCAmJiBmb3JtYXQgPT0gR0xfQkdSQV9FWFQgJiYg
dHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFOworICAgIGlmIChkaXJlY3RUb1BpeGVscykKKyAgICB7
CisgICAgICAgIC8vIFVzZSB0aGUgcGl4ZWxzIHB0ciBhcyBhIHNoYXJlZCBoYW5kbGUgdG8gd3Jp
dGUgZGlyZWN0bHkgaW50byBjbGllbnQncyBtZW1vcnkKKyAgICAgICAgcmVzdWx0ID0gbURldmlj
ZS0+Q3JlYXRlT2Zmc2NyZWVuUGxhaW5TdXJmYWNlKGRlc2MuV2lkdGgsIGRlc2MuSGVpZ2h0LCBk
ZXNjLkZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEQzRFBPT0xfU1lTVEVNTUVNLCAmc3lzdGVtU3VyZmFjZSwgJnBpeGVscyk7Cisg
ICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVHJ5
IGFnYWluIHdpdGhvdXQgdGhlIHNoYXJlZCBoYW5kbGUKKyAgICAgICAgICAgIGRpcmVjdFRvUGl4
ZWxzID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWRpcmVjdFRvUGl4ZWxz
KQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlT2Zmc2NyZWVuUGxhaW5T
dXJmYWNlKGRlc2MuV2lkdGgsIGRlc2MuSGVpZ2h0LCBkZXNjLkZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFBPT0xfU1lTVEVN
TUVNLCAmc3lzdGVtU3VyZmFjZSwgTlVMTCk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURF
T01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7CisgICAgICAgICAgICBzdXJmYWNl
LT5SZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0ID0gbURldmljZS0+R2V0UmVuZGVy
VGFyZ2V0RGF0YShzdXJmYWNlLCBzeXN0ZW1TdXJmYWNlKTsKKyAgICBzdXJmYWNlLT5SZWxlYXNl
KCk7CisgICAgc3VyZmFjZSA9IE5VTEw7CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAg
eworICAgICAgICBzeXN0ZW1TdXJmYWNlLT5SZWxlYXNlKCk7CisKKyAgICAgICAgLy8gSXQgdHVy
bnMgb3V0IHRoYXQgRDNEIHdpbGwgc29tZXRpbWVzIHByb2R1Y2UgbW9yZSBlcnJvcgorICAgICAg
ICAvLyBjb2RlcyB0aGFuIHRob3NlIGRvY3VtZW50ZWQuCisgICAgICAgIGlmIChkM2Q5Ojppc0Rl
dmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBub3RpZnlEZXZp
Y2VMb3N0KCk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgfQorCisgICAg
aWYgKGRpcmVjdFRvUGl4ZWxzKQorICAgIHsKKyAgICAgICAgc3lzdGVtU3VyZmFjZS0+UmVsZWFz
ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUkVDVCByZWN0OworICAgIHJlY3Qu
bGVmdCA9IGdsOjpjbGFtcCh4LCAwTCwgc3RhdGljX2Nhc3Q8TE9ORz4oZGVzYy5XaWR0aCkpOwor
ICAgIHJlY3QudG9wID0gZ2w6OmNsYW1wKHksIDBMLCBzdGF0aWNfY2FzdDxMT05HPihkZXNjLkhl
aWdodCkpOworICAgIHJlY3QucmlnaHQgPSBnbDo6Y2xhbXAoeCArIHdpZHRoLCAwTCwgc3RhdGlj
X2Nhc3Q8TE9ORz4oZGVzYy5XaWR0aCkpOworICAgIHJlY3QuYm90dG9tID0gZ2w6OmNsYW1wKHkg
KyBoZWlnaHQsIDBMLCBzdGF0aWNfY2FzdDxMT05HPihkZXNjLkhlaWdodCkpOworCisgICAgRDNE
TE9DS0VEX1JFQ1QgbG9jazsKKyAgICByZXN1bHQgPSBzeXN0ZW1TdXJmYWNlLT5Mb2NrUmVjdCgm
bG9jaywgJnJlY3QsIEQzRExPQ0tfUkVBRE9OTFkpOworCisgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgc3lzdGVtU3VyZmFjZS0+
UmVsZWFzZSgpOworCisgICAgICAgIHJldHVybjsgICAvLyBObyBzZW5zaWJsZSBlcnJvciB0byBn
ZW5lcmF0ZQorICAgIH0KKworICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSAodW5zaWduZWQgY2hh
ciopcGl4ZWxzOworICAgIHVuc2lnbmVkIHNob3J0ICpkZXN0MTYgPSAodW5zaWduZWQgc2hvcnQq
KXBpeGVsczsKKworICAgIHVuc2lnbmVkIGNoYXIgKnNvdXJjZTsKKyAgICBpbnQgaW5wdXRQaXRj
aDsKKyAgICBpZiAocGFja1JldmVyc2VSb3dPcmRlcikKKyAgICB7CisgICAgICAgIHNvdXJjZSA9
ICgodW5zaWduZWQgY2hhciopbG9jay5wQml0cykgKyBsb2NrLlBpdGNoICogKHJlY3QuYm90dG9t
IC0gcmVjdC50b3AgLSAxKTsKKyAgICAgICAgaW5wdXRQaXRjaCA9IC1sb2NrLlBpdGNoOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBzb3VyY2UgPSAodW5zaWduZWQgY2hhciopbG9j
ay5wQml0czsKKyAgICAgICAgaW5wdXRQaXRjaCA9IGxvY2suUGl0Y2g7CisgICAgfQorCisgICAg
dW5zaWduZWQgaW50IGZhc3RQaXhlbFNpemUgPSAwOworCisgICAgaWYgKGRlc2MuRm9ybWF0ID09
IEQzREZNVF9BOFI4RzhCOCAmJgorICAgICAgICBmb3JtYXQgPT0gR0xfQkdSQV9FWFQgJiYKKyAg
ICAgICAgdHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFKQorICAgIHsKKyAgICAgICAgZmFzdFBpeGVs
U2l6ZSA9IDQ7CisgICAgfQorICAgIGVsc2UgaWYgKChkZXNjLkZvcm1hdCA9PSBEM0RGTVRfQTRS
NEc0QjQgJiYKKyAgICAgICAgICAgICBmb3JtYXQgPT0gR0xfQkdSQV9FWFQgJiYKKyAgICAgICAg
ICAgICB0eXBlID09IEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVCkgfHwKKyAgICAg
ICAgICAgICAoZGVzYy5Gb3JtYXQgPT0gRDNERk1UX0ExUjVHNUI1ICYmCisgICAgICAgICAgICAg
Zm9ybWF0ID09IEdMX0JHUkFfRVhUICYmCisgICAgICAgICAgICAgdHlwZSA9PSBHTF9VTlNJR05F
RF9TSE9SVF8xXzVfNV81X1JFVl9FWFQpKQorICAgIHsKKyAgICAgICAgZmFzdFBpeGVsU2l6ZSA9
IDI7CisgICAgfQorICAgIGVsc2UgaWYgKGRlc2MuRm9ybWF0ID09IEQzREZNVF9BMTZCMTZHMTZS
MTZGICYmCisgICAgICAgICAgICAgZm9ybWF0ID09IEdMX1JHQkEgJiYKKyAgICAgICAgICAgICB0
eXBlID09IEdMX0hBTEZfRkxPQVRfT0VTKQorICAgIHsKKyAgICAgICAgZmFzdFBpeGVsU2l6ZSA9
IDg7CisgICAgfQorICAgIGVsc2UgaWYgKGRlc2MuRm9ybWF0ID09IEQzREZNVF9BMzJCMzJHMzJS
MzJGICYmCisgICAgICAgICAgICAgZm9ybWF0ID09IEdMX1JHQkEgJiYKKyAgICAgICAgICAgICB0
eXBlID09IEdMX0ZMT0FUKQorICAgIHsKKyAgICAgICAgZmFzdFBpeGVsU2l6ZSA9IDE2OworICAg
IH0KKworICAgIGZvciAoaW50IGogPSAwOyBqIDwgcmVjdC5ib3R0b20gLSByZWN0LnRvcDsgaisr
KQorICAgIHsKKyAgICAgICAgaWYgKGZhc3RQaXhlbFNpemUgIT0gMCkKKyAgICAgICAgeworICAg
ICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBmb3JtYXRzIHdoaWNoIHJlcXVpcmUgbm8gdHJhbnNs
YXRpb246CisgICAgICAgICAgICAvLyBEM0RGTVRfQThSOEc4QjggdG8gQkdSQS9VTlNJR05FRF9C
WVRFCisgICAgICAgICAgICAvLyBEM0RGTVRfQTRSNEc0QjQgdG8gQkdSQS9VTlNJR05FRF9TSE9S
VF80XzRfNF80X1JFVl9FWFQKKyAgICAgICAgICAgIC8vIEQzREZNVF9BMVI1RzVCNSB0byBCR1JB
L1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVAorICAgICAgICAgICAgLy8gRDNERk1UX0Ex
NkIxNkcxNlIxNkYgdG8gUkdCQS9IQUxGX0ZMT0FUX09FUworICAgICAgICAgICAgLy8gRDNERk1U
X0EzMkIzMkczMlIzMkYgdG8gUkdCQS9GTE9BVAorICAgICAgICAgICAgLy8gCisgICAgICAgICAg
ICAvLyBOb3RlIHRoYXQgYnVmZmVycyB3aXRoIG5vIGFscGhhIGdvIHRocm91Z2ggdGhlIHNsb3cg
cGF0aCBiZWxvdy4KKyAgICAgICAgICAgIG1lbWNweShkZXN0ICsgaiAqIG91dHB1dFBpdGNoLAor
ICAgICAgICAgICAgICAgICAgIHNvdXJjZSArIGogKiBpbnB1dFBpdGNoLAorICAgICAgICAgICAg
ICAgICAgIChyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0KSAqIGZhc3RQaXhlbFNpemUpOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZGVzYy5Gb3JtYXQg
PT0gRDNERk1UX0E4UjhHOEI4ICYmCisgICAgICAgICAgICAgICAgIGZvcm1hdCA9PSBHTF9SR0JB
ICYmCisgICAgICAgICAgICAgICAgIHR5cGUgPT0gR0xfVU5TSUdORURfQllURSkKKyAgICAgICAg
eworICAgICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBzd2FwcGluZyByZWQgd2l0aCBibHVlCisg
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3QucmlnaHQgLSByZWN0LmxlZnQ7IGkr
KykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJnYiA9ICoo
dW5zaWduZWQgaW50Kikoc291cmNlICsgNCAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisgICAgICAg
ICAgICAgICAgKih1bnNpZ25lZCBpbnQqKShkZXN0ICsgNCAqIGkgKyBqICogb3V0cHV0UGl0Y2gp
ID0KKyAgICAgICAgICAgICAgICAgICAgKGFyZ2IgJiAweEZGMDBGRjAwKSB8ICAgICAgIC8vIEtl
ZXAgYWxwaGEgYW5kIGdyZWVuCisgICAgICAgICAgICAgICAgICAgIChhcmdiICYgMHgwMEZGMDAw
MCkgPj4gMTYgfCAvLyBNb3ZlIHJlZCB0byBibHVlCisgICAgICAgICAgICAgICAgICAgIChhcmdi
ICYgMHgwMDAwMDBGRikgPDwgMTY7ICAvLyBNb3ZlIGJsdWUgdG8gcmVkCisgICAgICAgICAgICB9
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgcmVjdC5yaWdodCAtIHJlY3QubGVmdDsgaSsrKQorICAgICAgICB7CisgICAgICAg
ICAgICBmbG9hdCByOworICAgICAgICAgICAgZmxvYXQgZzsKKyAgICAgICAgICAgIGZsb2F0IGI7
CisgICAgICAgICAgICBmbG9hdCBhOworCisgICAgICAgICAgICBzd2l0Y2ggKGRlc2MuRm9ybWF0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9SNUc2QjU6CisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCByZ2IgPSAq
KHVuc2lnbmVkIHNob3J0Kikoc291cmNlICsgMiAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgYSA9IDEuMGY7CisgICAgICAgICAgICAgICAgICAgIGIgPSAocmdi
ICYgMHgwMDFGKSAqICgxLjBmIC8gMHgwMDFGKTsKKyAgICAgICAgICAgICAgICAgICAgZyA9IChy
Z2IgJiAweDA3RTApICogKDEuMGYgLyAweDA3RTApOworICAgICAgICAgICAgICAgICAgICByID0g
KHJnYiAmIDB4RjgwMCkgKiAoMS4wZiAvIDB4RjgwMCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEQzREZNVF9BMVI1RzVCNToK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IGFy
Z2IgPSAqKHVuc2lnbmVkIHNob3J0Kikoc291cmNlICsgMiAqIGkgKyBqICogaW5wdXRQaXRjaCk7
CisKKyAgICAgICAgICAgICAgICAgICAgYSA9IChhcmdiICYgMHg4MDAwKSA/IDEuMGYgOiAwLjBm
OworICAgICAgICAgICAgICAgICAgICBiID0gKGFyZ2IgJiAweDAwMUYpICogKDEuMGYgLyAweDAw
MUYpOworICAgICAgICAgICAgICAgICAgICBnID0gKGFyZ2IgJiAweDAzRTApICogKDEuMGYgLyAw
eDAzRTApOworICAgICAgICAgICAgICAgICAgICByID0gKGFyZ2IgJiAweDdDMDApICogKDEuMGYg
LyAweDdDMDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6CisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJnYiA9ICoodW5zaWduZWQgaW50Kikoc291
cmNlICsgNCAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisKKyAgICAgICAgICAgICAgICAgICAgYSA9
IChhcmdiICYgMHhGRjAwMDAwMCkgKiAoMS4wZiAvIDB4RkYwMDAwMDApOworICAgICAgICAgICAg
ICAgICAgICBiID0gKGFyZ2IgJiAweDAwMDAwMEZGKSAqICgxLjBmIC8gMHgwMDAwMDBGRik7Cisg
ICAgICAgICAgICAgICAgICAgIGcgPSAoYXJnYiAmIDB4MDAwMEZGMDApICogKDEuMGYgLyAweDAw
MDBGRjAwKTsKKyAgICAgICAgICAgICAgICAgICAgciA9IChhcmdiICYgMHgwMEZGMDAwMCkgKiAo
MS4wZiAvIDB4MDBGRjAwMDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6CisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgeHJnYiA9ICoodW5zaWduZWQg
aW50Kikoc291cmNlICsgNCAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgYSA9IDEuMGY7CisgICAgICAgICAgICAgICAgICAgIGIgPSAoeHJnYiAmIDB4MDAwMDAw
RkYpICogKDEuMGYgLyAweDAwMDAwMEZGKTsKKyAgICAgICAgICAgICAgICAgICAgZyA9ICh4cmdi
ICYgMHgwMDAwRkYwMCkgKiAoMS4wZiAvIDB4MDAwMEZGMDApOworICAgICAgICAgICAgICAgICAg
ICByID0gKHhyZ2IgJiAweDAwRkYwMDAwKSAqICgxLjBmIC8gMHgwMEZGMDAwMCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEQz
REZNVF9BMlIxMEcxMEIxMDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBhcmdiID0gKih1bnNpZ25lZCBpbnQqKShzb3VyY2UgKyA0ICogaSArIGog
KiBpbnB1dFBpdGNoKTsKKworICAgICAgICAgICAgICAgICAgICBhID0gKGFyZ2IgJiAweEMwMDAw
MDAwKSAqICgxLjBmIC8gMHhDMDAwMDAwMCk7CisgICAgICAgICAgICAgICAgICAgIGIgPSAoYXJn
YiAmIDB4MDAwMDAzRkYpICogKDEuMGYgLyAweDAwMDAwM0ZGKTsKKyAgICAgICAgICAgICAgICAg
ICAgZyA9IChhcmdiICYgMHgwMDBGRkMwMCkgKiAoMS4wZiAvIDB4MDAwRkZDMDApOworICAgICAg
ICAgICAgICAgICAgICByID0gKGFyZ2IgJiAweDNGRjAwMDAwKSAqICgxLjBmIC8gMHgzRkYwMDAw
MCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOgorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gZmxvYXQgZm9ybWF0cyBpbiBEM0QgYXJlIHN0b3JlZCByZ2JhLCBy
YXRoZXIgdGhhbiB0aGUgb3RoZXIgd2F5IHJvdW5kCisgICAgICAgICAgICAgICAgICAgIHIgPSAq
KChmbG9hdCopKHNvdXJjZSArIDE2ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDApOworICAgICAg
ICAgICAgICAgICAgICBnID0gKigoZmxvYXQqKShzb3VyY2UgKyAxNiAqIGkgKyBqICogaW5wdXRQ
aXRjaCkgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgYiA9ICooKGZsb2F0Kikoc291cmNlICsg
MTYgKiBpICsgaiAqIGlucHV0UGl0Y2gpICsgMik7CisgICAgICAgICAgICAgICAgICAgIGEgPSAq
KChmbG9hdCopKHNvdXJjZSArIDE2ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDMpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBE
M0RGTVRfQTE2QjE2RzE2UjE2RjoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIGZsb2F0IGZvcm1hdHMgaW4gRDNEIGFyZSBzdG9yZWQgcmdiYSwgcmF0aGVyIHRoYW4g
dGhlIG90aGVyIHdheSByb3VuZAorICAgICAgICAgICAgICAgICAgICByID0gZ2w6OmZsb2F0MTZU
b0Zsb2F0MzIoKigodW5zaWduZWQgc2hvcnQqKShzb3VyY2UgKyA4ICogaSArIGogKiBpbnB1dFBp
dGNoKSArIDApKTsKKyAgICAgICAgICAgICAgICAgICAgZyA9IGdsOjpmbG9hdDE2VG9GbG9hdDMy
KCooKHVuc2lnbmVkIHNob3J0Kikoc291cmNlICsgOCAqIGkgKyBqICogaW5wdXRQaXRjaCkgKyAx
KSk7CisgICAgICAgICAgICAgICAgICAgIGIgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMigqKCh1bnNp
Z25lZCBzaG9ydCopKHNvdXJjZSArIDggKiBpICsgaiAqIGlucHV0UGl0Y2gpICsgMikpOworICAg
ICAgICAgICAgICAgICAgICBhID0gZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoKigodW5zaWduZWQgc2hv
cnQqKShzb3VyY2UgKyA4ICogaSArIGogKiBpbnB1dFBpdGNoKSArIDMpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCisgICAgICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHN3aXRjaCAoZm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAg
ICAgICAgICAgICAgICAgICAgZGVzdFs0ICogaSArIGogKiBvdXRwdXRQaXRjaCArIDBdID0gKHVu
c2lnbmVkIGNoYXIpKDI1NSAqIHIgKyAwLjVmKTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFs0
ICogaSArIGogKiBvdXRwdXRQaXRjaCArIDFdID0gKHVuc2lnbmVkIGNoYXIpKDI1NSAqIGcgKyAw
LjVmKTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFs0ICogaSArIGogKiBvdXRwdXRQaXRjaCAr
IDJdID0gKHVuc2lnbmVkIGNoYXIpKDI1NSAqIGIgKyAwLjVmKTsKKyAgICAgICAgICAgICAgICAg
ICAgZGVzdFs0ICogaSArIGogKiBvdXRwdXRQaXRjaCArIDNdID0gKHVuc2lnbmVkIGNoYXIpKDI1
NSAqIGEgKyAwLjVmKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAg
ICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgICAgICBkZXN0WzQgKiBp
ICsgaiAqIG91dHB1dFBpdGNoICsgMF0gPSAodW5zaWduZWQgY2hhcikoMjU1ICogYiArIDAuNWYp
OworICAgICAgICAgICAgICAgICAgICBkZXN0WzQgKiBpICsgaiAqIG91dHB1dFBpdGNoICsgMV0g
PSAodW5zaWduZWQgY2hhcikoMjU1ICogZyArIDAuNWYpOworICAgICAgICAgICAgICAgICAgICBk
ZXN0WzQgKiBpICsgaiAqIG91dHB1dFBpdGNoICsgMl0gPSAodW5zaWduZWQgY2hhcikoMjU1ICog
ciArIDAuNWYpOworICAgICAgICAgICAgICAgICAgICBkZXN0WzQgKiBpICsgaiAqIG91dHB1dFBp
dGNoICsgM10gPSAodW5zaWduZWQgY2hhcikoMjU1ICogYSArIDAuNWYpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRf
NF80XzRfNF9SRVZfRVhUOgorICAgICAgICAgICAgICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhl
IGRlc2t0b3AgR0wgc3BlYyBpbiB0aGUgIlRyYW5zZmVyIG9mIFBpeGVsIFJlY3RhbmdsZXMiIHNl
Y3Rpb24KKyAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyB0eXBlIGlzIHBhY2tlZCBhcyBmb2xs
b3dzOgorICAgICAgICAgICAgICAgICAgICAvLyAgIDE1ICAgMTQgICAxMyAgIDEyICAgMTEgICAx
MCAgICA5ICAgIDggICAgNyAgICA2ICAgIDUgICAgNCAgICAzICAgIDIgICAgMSAgICAwCisgICAg
ICAgICAgICAgICAgICAgIC8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAg
ICAgICAgICAvLyB8ICAgICAgIDR0aCAgICAgICAgIHwgICAgICAgIDNyZCAgICAgICAgIHwgICAg
ICAgIDJuZCAgICAgICAgfCAgIDFzdCBjb21wb25lbnQgICB8CisgICAgICAgICAgICAgICAgICAg
IC8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAvLyBpbiB0
aGUgY2FzZSBvZiBCR1JBX0VYVCwgQiBpcyB0aGUgZmlyc3QgY29tcG9uZW50LCBHIHRoZSBzZWNv
bmQsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgZGVzdDE2W2kgKyBqICogb3V0
cHV0UGl0Y2ggLyBzaXplb2YodW5zaWduZWQgc2hvcnQpXSA9CisgICAgICAgICAgICAgICAgICAg
ICAgICAoKHVuc2lnbmVkIHNob3J0KSgxNSAqIGEgKyAwLjVmKSA8PCAxMil8CisgICAgICAgICAg
ICAgICAgICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgxNSAqIHIgKyAwLjVmKSA8PCA4KSB8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgxNSAqIGcgKyAwLjVmKSA8
PCA0KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSgxNSAqIGIg
KyAwLjVmKSA8PCAwKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVDoKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBkZXNrdG9wIEdMIHNwZWMgaW4gdGhlICJUcmFu
c2ZlciBvZiBQaXhlbCBSZWN0YW5nbGVzIiBzZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIC8v
IHRoaXMgdHlwZSBpcyBwYWNrZWQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgLy8g
ICAxNSAgIDE0ICAgMTMgICAxMiAgIDExICAgMTAgICAgOSAgICA4ICAgIDcgICAgNiAgICA1ICAg
IDQgICAgMyAgICAyICAgIDEgICAgMAorICAgICAgICAgICAgICAgICAgICAvLyAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgLy8gfCA0dGggfCAgICAgICAgICAz
cmQgICAgICAgICAgIHwgICAgICAgICAgIDJuZCAgICAgICAgICB8ICAgICAgMXN0IGNvbXBvbmVu
dCAgICAgfAorICAgICAgICAgICAgICAgICAgICAvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgQkdSQV9FWFQsIEIgaXMgdGhl
IGZpcnN0IGNvbXBvbmVudCwgRyB0aGUgc2Vjb25kLCBhbmQgc28gZm9ydGguCisgICAgICAgICAg
ICAgICAgICAgIGRlc3QxNltpICsgaiAqIG91dHB1dFBpdGNoIC8gc2l6ZW9mKHVuc2lnbmVkIHNo
b3J0KV0gPQorICAgICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBzaG9ydCkoICAgICBh
ICsgMC41ZikgPDwgMTUpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgc2hv
cnQpKDMxICogciArIDAuNWYpIDw8IDEwKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAoKHVu
c2lnbmVkIHNob3J0KSgzMSAqIGcgKyAwLjVmKSA8PCA1KSB8CisgICAgICAgICAgICAgICAgICAg
ICAgICAoKHVuc2lnbmVkIHNob3J0KSgzMSAqIGIgKyAwLjVmKSA8PCAwKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82XzU6
CisgICAgICAgICAgICAgICAgICAgIGRlc3QxNltpICsgaiAqIG91dHB1dFBpdGNoIC8gc2l6ZW9m
KHVuc2lnbmVkIHNob3J0KV0gPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQg
c2hvcnQpKDMxICogYiArIDAuNWYpIDw8IDApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICgo
dW5zaWduZWQgc2hvcnQpKDYzICogZyArIDAuNWYpIDw8IDUpIHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICgodW5zaWduZWQgc2hvcnQpKDMxICogciArIDAuNWYpIDw8IDExKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6CisgICAgICAgICAgICAgICAgICAgIGRlc3RbMyAqIGkgKyBqICogb3V0cHV0UGl0Y2ggKyAw
XSA9ICh1bnNpZ25lZCBjaGFyKSgyNTUgKiByICsgMC41Zik7CisgICAgICAgICAgICAgICAgICAg
IGRlc3RbMyAqIGkgKyBqICogb3V0cHV0UGl0Y2ggKyAxXSA9ICh1bnNpZ25lZCBjaGFyKSgyNTUg
KiBnICsgMC41Zik7CisgICAgICAgICAgICAgICAgICAgIGRlc3RbMyAqIGkgKyBqICogb3V0cHV0
UGl0Y2ggKyAyXSA9ICh1bnNpZ25lZCBjaGFyKSgyNTUgKiBiICsgMC41Zik7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBzeXN0ZW1TdXJmYWNlLT5VbmxvY2tSZWN0KCk7CisKKyAgICBzeXN0ZW1TdXJm
YWNlLT5SZWxlYXNlKCk7Cit9CisKK1JlbmRlclRhcmdldCAqUmVuZGVyZXI5OjpjcmVhdGVSZW5k
ZXJUYXJnZXQoU3dhcENoYWluICpzd2FwQ2hhaW4sIGJvb2wgZGVwdGgpCit7CisgICAgU3dhcENo
YWluOSAqc3dhcENoYWluOSA9IFN3YXBDaGFpbjk6Om1ha2VTd2FwQ2hhaW45KHN3YXBDaGFpbik7
CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UgPSBOVUxMOworICAgIGlmIChkZXB0aCkK
KyAgICB7CisgICAgICAgIHN1cmZhY2UgPSBzd2FwQ2hhaW45LT5nZXREZXB0aFN0ZW5jaWwoKTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc3VyZmFjZSA9IHN3YXBDaGFpbjktPmdl
dFJlbmRlclRhcmdldCgpOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDkgKnJlbmRlclRhcmdl
dCA9IG5ldyBSZW5kZXJUYXJnZXQ5KHRoaXMsIHN1cmZhY2UpOworCisgICAgcmV0dXJuIHJlbmRl
clRhcmdldDsKK30KKworUmVuZGVyVGFyZ2V0ICpSZW5kZXJlcjk6OmNyZWF0ZVJlbmRlclRhcmdl
dChpbnQgd2lkdGgsIGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywg
Ym9vbCBkZXB0aCkKK3sKKyAgICBSZW5kZXJUYXJnZXQ5ICpyZW5kZXJUYXJnZXQgPSBuZXcgUmVu
ZGVyVGFyZ2V0OSh0aGlzLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHNhbXBsZXMpOworICAgIHJl
dHVybiByZW5kZXJUYXJnZXQ7Cit9CisKK1NoYWRlckV4ZWN1dGFibGUgKlJlbmRlcmVyOTo6bG9h
ZEV4ZWN1dGFibGUoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIHJ4OjpTaGFk
ZXJUeXBlIHR5cGUpCit7CisgICAgU2hhZGVyRXhlY3V0YWJsZTkgKmV4ZWN1dGFibGUgPSBOVUxM
OworCisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgIGNhc2Ugcng6OlNIQURFUl9WRVJU
RVg6CisgICAgICAgIHsKKyAgICAgICAgICAgIElEaXJlY3QzRFZlcnRleFNoYWRlcjkgKnZzaGFk
ZXIgPSBjcmVhdGVWZXJ0ZXhTaGFkZXIoKERXT1JEKilmdW5jdGlvbiwgbGVuZ3RoKTsKKyAgICAg
ICAgICAgIGlmICh2c2hhZGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4ZWN1
dGFibGUgPSBuZXcgU2hhZGVyRXhlY3V0YWJsZTkoZnVuY3Rpb24sIGxlbmd0aCwgdnNoYWRlcik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIHJ4
OjpTSEFERVJfUElYRUw6CisgICAgICAgIHsKKyAgICAgICAgICAgIElEaXJlY3QzRFBpeGVsU2hh
ZGVyOSAqcHNoYWRlciA9IGNyZWF0ZVBpeGVsU2hhZGVyKChEV09SRCopZnVuY3Rpb24sIGxlbmd0
aCk7CisgICAgICAgICAgICBpZiAocHNoYWRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBleGVjdXRhYmxlID0gbmV3IFNoYWRlckV4ZWN1dGFibGU5KGZ1bmN0aW9uLCBsZW5ndGgs
IHBzaGFkZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgcmV0dXJuIGV4ZWN1dGFibGU7Cit9CisKK1NoYWRlckV4ZWN1dGFibGUgKlJlbmRl
cmVyOTo6Y29tcGlsZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgY2hh
ciAqc2hhZGVySExTTCwgcng6OlNoYWRlclR5cGUgdHlwZSkKK3sKKyAgICBjb25zdCBjaGFyICpw
cm9maWxlID0gTlVMTDsKKworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIHJ4
OjpTSEFERVJfVkVSVEVYOgorICAgICAgICBwcm9maWxlID0gZ2V0TWFqb3JTaGFkZXJNb2RlbCgp
ID49IDMgPyAidnNfM18wIiA6ICJ2c18yXzAiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
cng6OlNIQURFUl9QSVhFTDoKKyAgICAgICAgcHJvZmlsZSA9IGdldE1ham9yU2hhZGVyTW9kZWwo
KSA+PSAzID8gInBzXzNfMCIgOiAicHNfMl8wIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZh
dWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9
CisKKyAgICBJRDNEQmxvYiAqYmluYXJ5ID0gKElEM0RCbG9iKiljb21waWxlVG9CaW5hcnkoaW5m
b0xvZywgc2hhZGVySExTTCwgcHJvZmlsZSwgQU5HTEVfQ09NUElMRV9PUFRJTUlaQVRJT05fTEVW
RUwsIHRydWUpOworICAgIGlmICghYmluYXJ5KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAg
IFNoYWRlckV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBsb2FkRXhlY3V0YWJsZShiaW5hcnktPkdl
dEJ1ZmZlclBvaW50ZXIoKSwgYmluYXJ5LT5HZXRCdWZmZXJTaXplKCksIHR5cGUpOworICAgIGJp
bmFyeS0+UmVsZWFzZSgpOworCisgICAgcmV0dXJuIGV4ZWN1dGFibGU7Cit9CisKK2Jvb2wgUmVu
ZGVyZXI5Ojpib3hGaWx0ZXIoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgSURpcmVjdDNEU3Vy
ZmFjZTkgKmRlc3QpCit7CisgICAgcmV0dXJuIG1CbGl0LT5ib3hGaWx0ZXIoc291cmNlLCBkZXN0
KTsKK30KKworRDNEUE9PTCBSZW5kZXJlcjk6OmdldFRleHR1cmVQb29sKERXT1JEIHVzYWdlKSBj
b25zdAoreworICAgIGlmIChtRDNkOUV4ICE9IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4g
RDNEUE9PTF9ERUZBVUxUOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoISh1
c2FnZSAmIChEM0RVU0FHRV9ERVBUSFNURU5DSUwgfCBEM0RVU0FHRV9SRU5ERVJUQVJHRVQpKSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEQzRFBPT0xfTUFOQUdFRDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBEM0RQT09MX0RFRkFVTFQ7Cit9CisKK2Jvb2wgUmVuZGVy
ZXI5Ojpjb3B5VG9SZW5kZXJUYXJnZXQoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QsIElEaXJlY3Qz
RFN1cmZhY2U5ICpzb3VyY2UsIGJvb2wgZnJvbU1hbmFnZWQpCit7CisgICAgaWYgKHNvdXJjZSAm
JiBkZXN0KQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBEM0RFUlJfT1VUT0ZWSURF
T01FTU9SWTsKKworICAgICAgICBpZiAoZnJvbU1hbmFnZWQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOworICAgICAgICAgICAgc291cmNlLT5HZXREZXNjKCZk
ZXNjKTsKKworICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmYgPSAwOworICAgICAg
ICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlT2Zmc2NyZWVuUGxhaW5TdXJmYWNlKGRlc2Mu
V2lkdGgsIGRlc2MuSGVpZ2h0LCBkZXNjLkZvcm1hdCwgRDNEUE9PTF9TWVNURU1NRU0sICZzdXJm
LCBOVUxMKTsKKworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEltYWdlOTo6Y29weUxvY2thYmxlU3VyZmFjZXMoc3VyZiwg
c291cmNlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5VcGRhdGVTdXJmYWNl
KHN1cmYsIE5VTEwsIGRlc3QsIE5VTEwpOworICAgICAgICAgICAgICAgIHN1cmYtPlJlbGVhc2Uo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGVuZFNjZW5lKCk7CisgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5TdHJl
dGNoUmVjdChzb3VyY2UsIE5VTEwsIGRlc3QsIE5VTEwsIEQzRFRFWEZfTk9ORSk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVf
T1VUT0ZNRU1PUlkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0ltYWdlICpSZW5kZXJlcjk6OmNyZWF0ZUltYWdl
KCkKK3sKKyAgICByZXR1cm4gbmV3IEltYWdlOSgpOworfQorCit2b2lkIFJlbmRlcmVyOTo6Z2Vu
ZXJhdGVNaXBtYXAoSW1hZ2UgKmRlc3QsIEltYWdlICpzcmMpCit7CisgICAgSW1hZ2U5ICpzcmM5
ID0gSW1hZ2U5OjptYWtlSW1hZ2U5KHNyYyk7CisgICAgSW1hZ2U5ICpkc3Q5ID0gSW1hZ2U5Ojpt
YWtlSW1hZ2U5KGRlc3QpOworICAgIEltYWdlOTo6Z2VuZXJhdGVNaXBtYXAoZHN0OSwgc3JjOSk7
Cit9CisKK1RleHR1cmVTdG9yYWdlICpSZW5kZXJlcjk6OmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQo
U3dhcENoYWluICpzd2FwQ2hhaW4pCit7CisgICAgU3dhcENoYWluOSAqc3dhcENoYWluOSA9IFN3
YXBDaGFpbjk6Om1ha2VTd2FwQ2hhaW45KHN3YXBDaGFpbik7CisgICAgcmV0dXJuIG5ldyBUZXh0
dXJlU3RvcmFnZTlfMkQodGhpcywgc3dhcENoYWluOSk7Cit9CisKK1RleHR1cmVTdG9yYWdlICpS
ZW5kZXJlcjk6OmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoaW50IGxldmVscywgR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHTGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlOV8y
RCh0aGlzLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxlLCB3
aWR0aCwgaGVpZ2h0KTsKK30KKworVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyOTo6Y3JlYXRlVGV4
dHVyZVN0b3JhZ2VDdWJlKGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVt
IHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgaW50IHNpemUpCit7CisgICAgcmV0dXJuIG5l
dyBUZXh0dXJlU3RvcmFnZTlfQ3ViZSh0aGlzLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB1c2Fn
ZSwgZm9yY2VSZW5kZXJhYmxlLCBzaXplKTsKK30KKworYm9vbCBSZW5kZXJlcjk6OmdldExVSUQo
TFVJRCAqYWRhcHRlckx1aWQpIGNvbnN0Cit7CisgICAgYWRhcHRlckx1aWQtPkhpZ2hQYXJ0ID0g
MDsKKyAgICBhZGFwdGVyTHVpZC0+TG93UGFydCA9IDA7CisKKyAgICBpZiAobUQzZDlFeCkKKyAg
ICB7CisgICAgICAgIG1EM2Q5RXgtPkdldEFkYXB0ZXJMVUlEKG1BZGFwdGVyLCBhZGFwdGVyTHVp
ZCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
KworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9SZW5kZXJlcjkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzNDkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFJlbmRlcmVy
OS5oOiBEZWZpbmVzIGEgYmFjay1lbmQgc3BlY2lmaWMgY2xhc3MgZm9yIHRoZSBEM0Q5IHJlbmRl
cmVyLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUjlfSF8KKyNkZWZpbmUg
TElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUkVSOV9IXworCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xl
dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWF0aHV0aWwuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvU2hhZGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVy
ZXIvVmVydGV4RGVjbGFyYXRpb25DYWNoZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9SZW5kZXJlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQu
aCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBSZW5kZXJidWZmZXI7Cit9CisKK25hbWVzcGFj
ZSByeAoreworY2xhc3MgVmVydGV4RGF0YU1hbmFnZXI7CitjbGFzcyBJbmRleERhdGFNYW5hZ2Vy
OworY2xhc3MgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2U7CitzdHJ1Y3QgVHJhbnNsYXRl
ZEF0dHJpYnV0ZTsKKworY2xhc3MgUmVuZGVyZXI5IDogcHVibGljIFJlbmRlcmVyCit7CisgIHB1
YmxpYzoKKyAgICBSZW5kZXJlcjkoZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBIREMgaERjLCBib29s
IHNvZnR3YXJlRGV2aWNlKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJlcjkoKTsKKworICAgIHN0YXRp
YyBSZW5kZXJlcjkgKm1ha2VSZW5kZXJlcjkoUmVuZGVyZXIgKnJlbmRlcmVyKTsKKworICAgIHZp
cnR1YWwgRUdMaW50IGluaXRpYWxpemUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVzZXREZXZpY2Uo
KTsKKworICAgIHZpcnR1YWwgaW50IGdlbmVyYXRlQ29uZmlncyhDb25maWdEZXNjICoqY29uZmln
RGVzY0xpc3QpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb25maWdzKENvbmZpZ0Rlc2MgKmNv
bmZpZ0Rlc2NMaXN0KTsKKworICAgIHZvaWQgc3RhcnRTY2VuZSgpOworICAgIHZvaWQgZW5kU2Nl
bmUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzeW5jKGJvb2wgYmxvY2spOworCisgICAgdmlydHVh
bCBTd2FwQ2hhaW4gKmNyZWF0ZVN3YXBDaGFpbihIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFu
ZGxlLCBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KTsK
KworICAgIElEaXJlY3QzRFF1ZXJ5OSogYWxsb2NhdGVFdmVudFF1ZXJ5KCk7CisgICAgdm9pZCBm
cmVlRXZlbnRRdWVyeShJRGlyZWN0M0RRdWVyeTkqIHF1ZXJ5KTsKKworICAgIC8vIHJlc291cmNl
IGNyZWF0aW9uCisgICAgSURpcmVjdDNEVmVydGV4U2hhZGVyOSAqY3JlYXRlVmVydGV4U2hhZGVy
KGNvbnN0IERXT1JEICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCk7CisgICAgSURpcmVjdDNEUGl4
ZWxTaGFkZXI5ICpjcmVhdGVQaXhlbFNoYWRlcihjb25zdCBEV09SRCAqZnVuY3Rpb24sIHNpemVf
dCBsZW5ndGgpOworICAgIEhSRVNVTFQgY3JlYXRlVmVydGV4QnVmZmVyKFVJTlQgTGVuZ3RoLCBE
V09SRCBVc2FnZSwgSURpcmVjdDNEVmVydGV4QnVmZmVyOSAqKnBwVmVydGV4QnVmZmVyKTsKKyAg
ICBIUkVTVUxUIGNyZWF0ZUluZGV4QnVmZmVyKFVJTlQgTGVuZ3RoLCBEV09SRCBVc2FnZSwgRDNE
Rk9STUFUIEZvcm1hdCwgSURpcmVjdDNESW5kZXhCdWZmZXI5ICoqcHBJbmRleEJ1ZmZlcik7Cisj
aWYgMAorICAgIHZvaWQgKmNyZWF0ZVRleHR1cmUyRCgpOworICAgIHZvaWQgKmNyZWF0ZVRleHR1
cmVDdWJlKCk7CisgICAgdm9pZCAqY3JlYXRlUXVlcnkoKTsKKyAgICB2b2lkICpjcmVhdGVJbmRl
eEJ1ZmZlcigpOworICAgIHZvaWQgKmNyZWF0ZVZlcnRleGJ1ZmZlcigpOworCisgICAgLy8gc3Rh
dGUgc2V0dXAKKyAgICB2b2lkIGFwcGx5U2hhZGVycygpOworICAgIHZvaWQgYXBwbHlDb25zdGFu
dHMoKTsKKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBs
ZXJUeXBlIHR5cGUsIGludCBpbmRleCwgY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlcik7
CisgICAgdmlydHVhbCB2b2lkIHNldFRleHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBp
bmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUpOworCisgICAgdmlydHVhbCB2b2lkIHNldFJhc3Rl
cml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVyaXplclN0YXRlICZyYXN0ZXJTdGF0ZSk7CisgICAg
dmlydHVhbCB2b2lkIHNldEJsZW5kU3RhdGUoY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3Rh
dGUsIGNvbnN0IGdsOjpDb2xvciAmYmxlbmRDb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlTWFzayk7CisgICAgdmlydHVhbCB2b2lkIHNldERl
cHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZGVwdGhTdGVuY2ls
U3RhdGUsIGludCBzdGVuY2lsUmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgc3RlbmNpbEJhY2tSZWYsIGJvb2wgZnJvbnRGYWNlQ0NXKTsKKworICAgIHZpcnR1
YWwgdm9pZCBzZXRTY2lzc29yUmVjdGFuZ2xlKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNjaXNzb3Is
IGJvb2wgZW5hYmxlZCk7CisgICAgdmlydHVhbCBib29sIHNldFZpZXdwb3J0KGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJnZpZXdwb3J0LCBmbG9hdCB6TmVhciwgZmxvYXQgekZhciwgR0xlbnVtIGRyYXdN
b2RlLCBHTGVudW0gZnJvbnRGYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlnbm9yZVZpZXdwb3J0KTsKKworICAgIHZpcnR1YWwgYm9vbCBhcHBseVJlbmRlclRhcmdldChn
bDo6RnJhbWVidWZmZXIgKmZyYW1lQnVmZmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTaGFk
ZXJzKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5KTsKKyAgICB2aXJ0dWFsIHZvaWQg
YXBwbHlVbmlmb3JtcyhnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSwgZ2w6OlVuaWZv
cm1BcnJheSAqdW5pZm9ybUFycmF5KTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHlQcmltaXRpdmVU
eXBlKEdMZW51bSBwcmltaXRpdmVUeXBlLCBHTHNpemVpIGVsZW1lbnRDb3VudCk7CisgICAgdmly
dHVhbCBHTGVudW0gYXBwbHlWZXJ0ZXhCdWZmZXIoZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1C
aW5hcnksIGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgdmVydGV4QXR0cmlidXRlc1tdLCBHTGludCBmaXJz
dCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworICAgIHZpcnR1YWwgR0xlbnVt
IGFwcGx5SW5kZXhCdWZmZXIoY29uc3QgR0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICplbGVt
ZW50QXJyYXlCdWZmZXIsIEdMc2l6ZWkgY291bnQsIEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwg
VHJhbnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZvKTsKKworICAgIHZpcnR1YWwgdm9pZCBkcmF3
QXJyYXlzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcyk7Cisg
ICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwg
R0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVudEFy
cmF5QnVmZmVyLCBjb25zdCBUcmFuc2xhdGVkSW5kZXhEYXRhICZpbmRleEluZm8sIEdMc2l6ZWkg
aW5zdGFuY2VzKTsKKworICAgIHZpcnR1YWwgdm9pZCBjbGVhcihjb25zdCBnbDo6Q2xlYXJQYXJh
bWV0ZXJzICZjbGVhclBhcmFtcywgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZUJ1ZmZlcik7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgbWFya0FsbFN0YXRlRGlydHkoKTsKKworICAgIC8vIGxvc3QgZGV2aWNl
CisgICAgdm9pZCBub3RpZnlEZXZpY2VMb3N0KCk7CisgICAgdmlydHVhbCBib29sIGlzRGV2aWNl
TG9zdCgpOworICAgIHZpcnR1YWwgYm9vbCB0ZXN0RGV2aWNlTG9zdChib29sIG5vdGlmeSk7Cisg
ICAgdmlydHVhbCBib29sIHRlc3REZXZpY2VSZXNldHRhYmxlKCk7CisKKyAgICAvLyBSZW5kZXJl
ciBjYXBhYmlsaXRpZXMKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpnZXREZXZpY2UoKSB7IHJldHVy
biBtRGV2aWNlOyB9CisgICAgdmlydHVhbCBEV09SRCBnZXRBZGFwdGVyVmVuZG9yKCkgY29uc3Q7
CisgICAgdmlydHVhbCBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3Q7
CisgICAgdmlydHVhbCBHVUlEIGdldEFkYXB0ZXJJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0QkdSQVRleHR1cmVTdXBwb3J0KCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGdldERYVDFUZXh0dXJlU3VwcG9ydCgpOworICAgIHZpcnR1YWwgYm9vbCBnZXREWFQzVGV4
dHVyZVN1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RFhUNVRleHR1cmVTdXBwb3J0KCk7
CisgICAgdmlydHVhbCBib29sIGdldEV2ZW50UXVlcnlTdXBwb3J0KCk7CisgICAgdmlydHVhbCBi
b29sIGdldEZsb2F0MzJUZXh0dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wgKnJlbmRl
cmFibGUpOworICAgIHZpcnR1YWwgYm9vbCBnZXRGbG9hdDE2VGV4dHVyZVN1cHBvcnQoYm9vbCAq
ZmlsdGVyaW5nLCBib29sICpyZW5kZXJhYmxlKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0THVtaW5h
bmNlVGV4dHVyZVN1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0THVtaW5hbmNlQWxwaGFU
ZXh0dXJlU3VwcG9ydCgpOworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldE1heFZlcnRleFRl
eHR1cmVJbWFnZVVuaXRzKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4
Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQg
aW50IGdldFJlc2VydmVkVmVydGV4VW5pZm9ybVZlY3RvcnMoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpIGNv
bnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldE1heEZyYWdtZW50VW5pZm9ybVZlY3Rv
cnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhWYXJ5aW5nVmVjdG9y
cygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXROb25Qb3dlcjJUZXh0dXJlU3VwcG9ydCgp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXREZXB0aFRleHR1cmVTdXBwb3J0KCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydCgpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBnZXRJbnN0YW5jaW5nU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBnZXRUZXh0dXJlRmlsdGVyQW5pc290cm9weVN1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGZsb2F0IGdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGdldFNoYXJlSGFuZGxlU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRE
ZXJpdmF0aXZlSW5zdHJ1Y3Rpb25TdXBwb3J0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdl
dFBvc3RTdWJCdWZmZXJTdXBwb3J0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGludCBnZXRNYWpv
clNoYWRlck1vZGVsKCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCBnZXRNYXhQb2ludFNpemUo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBnZXRNYXhWaWV3cG9ydERpbWVuc2lvbigpIGNvbnN0
OworICAgIHZpcnR1YWwgaW50IGdldE1heFRleHR1cmVXaWR0aCgpIGNvbnN0OworICAgIHZpcnR1
YWwgaW50IGdldE1heFRleHR1cmVIZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
MzJCaXRJbmRleFN1cHBvcnQoKSBjb25zdDsKKyAgICBEV09SRCBnZXRDYXBzRGVjbFR5cGVzKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBpbnQgZ2V0TWluU3dhcEludGVydmFsKCkgY29uc3Q7CisgICAg
dmlydHVhbCBpbnQgZ2V0TWF4U3dhcEludGVydmFsKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEdM
c2l6ZWkgZ2V0TWF4U3VwcG9ydGVkU2FtcGxlcygpIGNvbnN0OworICAgIGludCBnZXROZWFyZXN0
U3VwcG9ydGVkU2FtcGxlcyhEM0RGT1JNQVQgZm9ybWF0LCBpbnQgcmVxdWVzdGVkKSBjb25zdDsK
KyAgICAKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhSZW5kZXJUYXJnZXRzKCkgY29u
c3Q7CisKKyAgICBEM0RGT1JNQVQgQ29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdChHTGludCBp
bnRlcm5hbGZvcm1hdCk7CisKKyAgICAvLyBQaXhlbCBvcGVyYXRpb25zCisgICAgdmlydHVhbCBi
b29sIGNvcHlUb1JlbmRlclRhcmdldChUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpkZXN0LCBU
ZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpzb3VyY2UpOworICAgIHZpcnR1YWwgYm9vbCBjb3B5
VG9SZW5kZXJUYXJnZXQoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpkZXN0LCBUZXh0dXJl
U3RvcmFnZUludGVyZmFjZUN1YmUgKnNvdXJjZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgY29weUlt
YWdlKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNv
dXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAq
c3RvcmFnZSwgR0xpbnQgbGV2ZWwpOworICAgIHZpcnR1YWwgYm9vbCBjb3B5SW1hZ2UoZ2w6OkZy
YW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwg
R0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKnN0b3JhZ2Us
IEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKTsKKworICAgIHZpcnR1YWwgYm9vbCBibGl0UmVj
dChnbDo6RnJhbWVidWZmZXIgKnJlYWRUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlYWRS
ZWN0LCBnbDo6RnJhbWVidWZmZXIgKmRyYXdUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRy
YXdSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQs
IGJvb2wgYmxpdERlcHRoU3RlbmNpbCk7CisgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoZ2w6
OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgb3V0cHV0UGl0Y2gsIGJvb2wgcGFja1JldmVyc2VS
b3dPcmRlciwgR0xpbnQgcGFja0FsaWdubWVudCwgdm9pZCogcGl4ZWxzKTsKKworICAgIC8vIFJl
bmRlclRhcmdldCBjcmVhdGlvbgorICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpjcmVhdGVSZW5k
ZXJUYXJnZXQoU3dhcENoYWluICpzd2FwQ2hhaW4sIGJvb2wgZGVwdGgpOworICAgIHZpcnR1YWwg
UmVuZGVyVGFyZ2V0ICpjcmVhdGVSZW5kZXJUYXJnZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBH
TGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBsZXMsIGJvb2wgZGVwdGgpOworCisgICAgLy8gU2hh
ZGVyIG9wZXJhdGlvbnMKKyAgICB2aXJ0dWFsIFNoYWRlckV4ZWN1dGFibGUgKmxvYWRFeGVjdXRh
YmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCByeDo6U2hhZGVyVHlwZSB0
eXBlKTsKKyAgICB2aXJ0dWFsIFNoYWRlckV4ZWN1dGFibGUgKmNvbXBpbGVUb0V4ZWN1dGFibGUo
Z2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGNoYXIgKnNoYWRlckhMU0wsIHJ4OjpTaGFkZXJU
eXBlIHR5cGUpOworCisgICAgLy8gSW1hZ2Ugb3BlcmF0aW9ucworICAgIHZpcnR1YWwgSW1hZ2Ug
KmNyZWF0ZUltYWdlKCk7CisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwKEltYWdlICpk
ZXN0LCBJbWFnZSAqc291cmNlKTsKKyAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVU
ZXh0dXJlU3RvcmFnZTJEKFN3YXBDaGFpbiAqc3dhcENoYWluKTsKKyAgICB2aXJ0dWFsIFRleHR1
cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKGludCBsZXZlbHMsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQpOworICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0
ZVRleHR1cmVTdG9yYWdlQ3ViZShpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdM
ZW51bSB1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIGludCBzaXplKTsKKworICAgIC8vIEJ1
ZmZlciBjcmVhdGlvbgorICAgIHZpcnR1YWwgVmVydGV4QnVmZmVyICpjcmVhdGVWZXJ0ZXhCdWZm
ZXIoKTsKKyAgICB2aXJ0dWFsIEluZGV4QnVmZmVyICpjcmVhdGVJbmRleEJ1ZmZlcigpOworICAg
IHZpcnR1YWwgQnVmZmVyU3RvcmFnZSAqY3JlYXRlQnVmZmVyU3RvcmFnZSgpOworCisgICAgLy8g
UXVlcnkgYW5kIEZlbmNlIGNyZWF0aW9uCisgICAgdmlydHVhbCBRdWVyeUltcGwgKmNyZWF0ZVF1
ZXJ5KEdMZW51bSB0eXBlKTsKKyAgICB2aXJ0dWFsIEZlbmNlSW1wbCAqY3JlYXRlRmVuY2UoKTsK
KworICAgIC8vIEQzRDktcmVuZGVyZXIgc3BlY2lmaWMgbWV0aG9kcworICAgIGJvb2wgYm94Rmls
dGVyKElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0KTsK
KworICAgIEQzRFBPT0wgZ2V0VGV4dHVyZVBvb2woRFdPUkQgdXNhZ2UpIGNvbnN0OworCisgICAg
dmlydHVhbCBib29sIGdldExVSUQoTFVJRCAqYWRhcHRlckx1aWQpIGNvbnN0OworCisgIHByaXZh
dGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlcmVyOSk7CisKKyAgICB2b2lk
IGFwcGx5VW5pZm9ybW5mdihnbDo6VW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwgY29uc3QgR0xmbG9h
dCAqdik7CisgICAgdm9pZCBhcHBseVVuaWZvcm1uaXYoZ2w6OlVuaWZvcm0gKnRhcmdldFVuaWZv
cm0sIGNvbnN0IEdMaW50ICp2KTsKKyAgICB2b2lkIGFwcGx5VW5pZm9ybW5idihnbDo6VW5pZm9y
bSAqdGFyZ2V0VW5pZm9ybSwgY29uc3QgR0xpbnQgKnYpOworCisgICAgdm9pZCBkcmF3TGluZUxv
b3AoR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgaW50
IG1pbkluZGV4LCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIpOworICAgIHZvaWQgZHJh
d0luZGV4ZWRQb2ludHMoR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAq
aW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyKTsKKworICAgIHZvaWQgZ2V0
TXVsdGlTYW1wbGVTdXBwb3J0KEQzREZPUk1BVCBmb3JtYXQsIGJvb2wgKm11bHRpU2FtcGxlQXJy
YXkpOworICAgIGJvb2wgY29weVRvUmVuZGVyVGFyZ2V0KElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0
LCBJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlLCBib29sIGZyb21NYW5hZ2VkKTsKKyAgICBnbDo6
UmVuZGVyYnVmZmVyICpnZXROdWxsQ29sb3JidWZmZXIoZ2w6OlJlbmRlcmJ1ZmZlciAqZGVwdGhi
dWZmZXIpOworCisgICAgRDNEUE9PTCBnZXRCdWZmZXJQb29sKERXT1JEIHVzYWdlKSBjb25zdDsK
KworICAgIEhNT0RVTEUgbUQzZDlNb2R1bGU7CisgICAgSERDIG1EYzsKKworICAgIHZvaWQgaW5p
dGlhbGl6ZURldmljZSgpOworICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBnZXREZWZhdWx0UHJl
c2VudFBhcmFtZXRlcnMoKTsKKyAgICB2b2lkIHJlbGVhc2VEZXZpY2VSZXNvdXJjZXMoKTsKKwor
ICAgIFVJTlQgbUFkYXB0ZXI7CisgICAgRDNEREVWVFlQRSBtRGV2aWNlVHlwZTsKKyAgICBib29s
IG1Tb2Z0d2FyZURldmljZTsgICAvLyBGSVhNRTogRGVwcmVjYXRlCisgICAgSURpcmVjdDNEOSAq
bUQzZDk7ICAvLyBBbHdheXMgdmFsaWQgYWZ0ZXIgc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlvbi4K
KyAgICBJRGlyZWN0M0Q5RXggKm1EM2Q5RXg7ICAvLyBNaWdodCBiZSBudWxsIGlmIEQzRDlFeCBp
cyBub3Qgc3VwcG9ydGVkLgorICAgIElEaXJlY3QzRERldmljZTkgKm1EZXZpY2U7CisgICAgSURp
cmVjdDNERGV2aWNlOUV4ICptRGV2aWNlRXg7ICAvLyBNaWdodCBiZSBudWxsIGlmIEQzRDlFeCBp
cyBub3Qgc3VwcG9ydGVkLgorCisgICAgQmxpdCAqbUJsaXQ7CisKKyAgICBIV05EIG1EZXZpY2VX
aW5kb3c7CisKKyAgICBib29sIG1EZXZpY2VMb3N0OworICAgIEQzRENBUFM5IG1EZXZpY2VDYXBz
OworICAgIEQzREFEQVBURVJfSURFTlRJRklFUjkgbUFkYXB0ZXJJZGVudGlmaWVyOworCisgICAg
RDNEUFJJTUlUSVZFVFlQRSBtUHJpbWl0aXZlVHlwZTsKKyAgICBpbnQgbVByaW1pdGl2ZUNvdW50
OworICAgIEdMc2l6ZWkgbVJlcGVhdERyYXc7CisKKyAgICBib29sIG1TY2VuZVN0YXJ0ZWQ7Cisg
ICAgYm9vbCBtU3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlczsKKyAgICBib29sIG1TdXBwb3J0c1Rl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3B5OworICAgIGludCBtTWluU3dhcEludGVydmFsOworICAgIGlu
dCBtTWF4U3dhcEludGVydmFsOworCisgICAgYm9vbCBtT2NjbHVzaW9uUXVlcnlTdXBwb3J0Owor
ICAgIGJvb2wgbUV2ZW50UXVlcnlTdXBwb3J0OworICAgIGJvb2wgbVZlcnRleFRleHR1cmVTdXBw
b3J0OworCisgICAgYm9vbCBtRGVwdGhUZXh0dXJlU3VwcG9ydDsKKworICAgIGJvb2wgbUZsb2F0
MzJUZXh0dXJlU3VwcG9ydDsKKyAgICBib29sIG1GbG9hdDMyRmlsdGVyU3VwcG9ydDsKKyAgICBi
b29sIG1GbG9hdDMyUmVuZGVyU3VwcG9ydDsKKworICAgIGJvb2wgbUZsb2F0MTZUZXh0dXJlU3Vw
cG9ydDsKKyAgICBib29sIG1GbG9hdDE2RmlsdGVyU3VwcG9ydDsKKyAgICBib29sIG1GbG9hdDE2
UmVuZGVyU3VwcG9ydDsKKworICAgIGJvb2wgbURYVDFUZXh0dXJlU3VwcG9ydDsKKyAgICBib29s
IG1EWFQzVGV4dHVyZVN1cHBvcnQ7CisgICAgYm9vbCBtRFhUNVRleHR1cmVTdXBwb3J0OworCisg
ICAgYm9vbCBtTHVtaW5hbmNlVGV4dHVyZVN1cHBvcnQ7CisgICAgYm9vbCBtTHVtaW5hbmNlQWxw
aGFUZXh0dXJlU3VwcG9ydDsKKworICAgIHN0ZDo6bWFwPEQzREZPUk1BVCwgYm9vbCAqPiBtTXVs
dGlTYW1wbGVTdXBwb3J0OworICAgIEdMc2l6ZWkgbU1heFN1cHBvcnRlZFNhbXBsZXM7CisKKyAg
ICAvLyBjdXJyZW50IHJlbmRlciB0YXJnZXQgc3RhdGVzCisgICAgdW5zaWduZWQgaW50IG1BcHBs
aWVkUmVuZGVyVGFyZ2V0U2VyaWFsOworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZERlcHRoYnVm
ZmVyU2VyaWFsOworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZFN0ZW5jaWxidWZmZXJTZXJpYWw7
CisgICAgYm9vbCBtRGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQ7CisgICAgYm9vbCBtUmVuZGVyVGFy
Z2V0RGVzY0luaXRpYWxpemVkOworICAgIHJ4OjpSZW5kZXJUYXJnZXQ6OkRlc2MgbVJlbmRlclRh
cmdldERlc2M7CisgICAgdW5zaWduZWQgaW50IG1DdXJTdGVuY2lsU2l6ZTsKKyAgICB1bnNpZ25l
ZCBpbnQgbUN1ckRlcHRoU2l6ZTsKKworICAgIElEaXJlY3QzRFN0YXRlQmxvY2s5ICptTWFza2Vk
Q2xlYXJTYXZlZFN0YXRlOworCisgICAgLy8gcHJldmlvdXNseSBzZXQgcmVuZGVyIHN0YXRlcwor
ICAgIGJvb2wgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGU7CisgICAgZ2w6OkRlcHRoU3RlbmNp
bFN0YXRlIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICBpbnQgbUN1clN0ZW5jaWxSZWY7Cisg
ICAgaW50IG1DdXJTdGVuY2lsQmFja1JlZjsKKyAgICBib29sIG1DdXJGcm9udEZhY2VDQ1c7CisK
KyAgICBib29sIG1Gb3JjZVNldFJhc3RlclN0YXRlOworICAgIGdsOjpSYXN0ZXJpemVyU3RhdGUg
bUN1clJhc3RlclN0YXRlOworCisgICAgYm9vbCBtRm9yY2VTZXRTY2lzc29yOworICAgIGdsOjpS
ZWN0YW5nbGUgbUN1clNjaXNzb3I7CisgICAgYm9vbCBtU2Npc3NvckVuYWJsZWQ7CisKKyAgICBi
b29sIG1Gb3JjZVNldFZpZXdwb3J0OworICAgIGdsOjpSZWN0YW5nbGUgbUN1clZpZXdwb3J0Owor
ICAgIGZsb2F0IG1DdXJOZWFyOworICAgIGZsb2F0IG1DdXJGYXI7CisKKyAgICBib29sIG1Gb3Jj
ZVNldEJsZW5kU3RhdGU7CisgICAgZ2w6OkJsZW5kU3RhdGUgbUN1ckJsZW5kU3RhdGU7CisgICAg
Z2w6OkNvbG9yIG1DdXJCbGVuZENvbG9yOworICAgIEdMdWludCBtQ3VyU2FtcGxlTWFzazsKKwor
ICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIHNhbXBsZXIgc3RhdGVzCisgICAgYm9vbCBtRm9yY2VT
ZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRV
UkVfSU1BR0VfVU5JVFNdOworICAgIGdsOjpTYW1wbGVyU3RhdGUgbUN1clZlcnRleFNhbXBsZXJT
dGF0ZXNbZ2w6OklNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU107
CisKKyAgICBib29sIG1Gb3JjZVNldFBpeGVsU2FtcGxlclN0YXRlc1tnbDo6TUFYX1RFWFRVUkVf
SU1BR0VfVU5JVFNdOworICAgIGdsOjpTYW1wbGVyU3RhdGUgbUN1clBpeGVsU2FtcGxlclN0YXRl
c1tnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworCisgICAgLy8gQ3VycmVudGx5IGFwcGxp
ZWQgdGV4dHVyZXMKKyAgICB1bnNpZ25lZCBpbnQgbUN1clZlcnRleFRleHR1cmVTZXJpYWxzW2ds
OjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworICAgIHVu
c2lnbmVkIGludCBtQ3VyUGl4ZWxUZXh0dXJlU2VyaWFsc1tnbDo6TUFYX1RFWFRVUkVfSU1BR0Vf
VU5JVFNdOworCisgICAgdW5zaWduZWQgaW50IG1BcHBsaWVkSUJTZXJpYWw7CisgICAgdW5zaWdu
ZWQgaW50IG1BcHBsaWVkUHJvZ3JhbUJpbmFyeVNlcmlhbDsKKyAgICAKKyAgICByeDo6ZHhfVmVy
dGV4Q29uc3RhbnRzIG1WZXJ0ZXhDb25zdGFudHM7CisgICAgcng6OmR4X1BpeGVsQ29uc3RhbnRz
IG1QaXhlbENvbnN0YW50czsKKyAgICBib29sIG1EeFVuaWZvcm1zRGlydHk7CisKKyAgICAvLyBB
IHBvb2wgb2YgZXZlbnQgcXVlcmllcyB0aGF0IGFyZSBjdXJyZW50bHkgdW51c2VkLgorICAgIHN0
ZDo6dmVjdG9yPElEaXJlY3QzRFF1ZXJ5OSo+IG1FdmVudFF1ZXJ5UG9vbDsKKyAgICBWZXJ0ZXhT
aGFkZXJDYWNoZSBtVmVydGV4U2hhZGVyQ2FjaGU7CisgICAgUGl4ZWxTaGFkZXJDYWNoZSBtUGl4
ZWxTaGFkZXJDYWNoZTsKKworICAgIFZlcnRleERhdGFNYW5hZ2VyICptVmVydGV4RGF0YU1hbmFn
ZXI7CisgICAgVmVydGV4RGVjbGFyYXRpb25DYWNoZSBtVmVydGV4RGVjbGFyYXRpb25DYWNoZTsK
KworICAgIEluZGV4RGF0YU1hbmFnZXIgKm1JbmRleERhdGFNYW5hZ2VyOworICAgIFN0cmVhbWlu
Z0luZGV4QnVmZmVySW50ZXJmYWNlICptTGluZUxvb3BJQjsKKworICAgIGVudW0geyBOVU1fTlVM
TF9DT0xPUkJVRkZFUl9DQUNIRV9FTlRSSUVTID0gMTIgfTsKKyAgICBzdHJ1Y3QgTnVsbENvbG9y
YnVmZmVyQ2FjaGVFbnRyeQorICAgIHsKKyAgICAgICAgVUlOVCBscnVDb3VudDsKKyAgICAgICAg
aW50IHdpZHRoOworICAgICAgICBpbnQgaGVpZ2h0OworICAgICAgICBnbDo6UmVuZGVyYnVmZmVy
ICpidWZmZXI7CisgICAgfSBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbTlVNX05VTExfQ09MT1JCVUZG
RVJfQ0FDSEVfRU5UUklFU107CisgICAgVUlOVCBtTWF4TnVsbENvbG9yYnVmZmVyTFJVOworCit9
OworCit9CisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUkVSOV9IXwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjEx
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1JlbmRlcmVyMTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNTI3IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisKKy8vIFJlbmRlcmVyMTEuY3BwOiBJbXBsZW1lbnRzIGEgYmFjay1lbmQgc3Bl
Y2lmaWMgY2xhc3MgZm9yIHRoZSBEM0QxMSByZW5kZXJlci4KKworI2luY2x1ZGUgImxpYkdMRVN2
Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9CdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvUHJvZ3JhbUJpbmFyeS5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9S
ZW5kZXJCdWZmZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXIxMS5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQxMS5oIgorI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjExX3V0aWxzLmgiCisjaW5jbHVkZSAibGli
R0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2
Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9J
bWFnZTExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjExLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0luZGV4QnVmZmVyMTEuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvQnVmZmVyU3RvcmFnZTExLmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL3JlbmRlcmVyL1ZlcnRleERhdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3Jl
bmRlcmVyL0luZGV4RGF0YU1hbmFnZXIuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
VGV4dHVyZVN0b3JhZ2UxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9RdWVyeTEx
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL0ZlbmNlMTEuaCIKKworI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdoMTF2cy5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdo
cmdiYTExcHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxl
ZC9wYXNzdGhyb3VnaHJnYjExcHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvc2hh
ZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTExcHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
cmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bWFscGhhMTFwcy5oIgorCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXIxMXZzLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW5n
bGUxMXBzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQv
Y2xlYXJtdWx0aXBsZTExcHMuaCIKKworI2luY2x1ZGUgImxpYkVHTC9EaXNwbGF5LmgiCisKKyNp
ZmRlZiBfREVCVUcKKy8vIHRoaXMgZmxhZyBlbmFibGVzIHN1cHByZXNzaW5nIHNvbWUgc3B1cmlv
dXMgd2FybmluZ3MgdGhhdCBwb3AgdXAgaW4gY2VydGFpbiBXZWJHTCBzYW1wbGVzCisvLyBhbmQg
Y29uZm9ybWFuY2UgdGVzdHMuIHRvIGVuYWJsZSBhbGwgd2FybmluZ3MsIHJlbW92ZSB0aGlzIGRl
ZmluZS4KKyNkZWZpbmUgQU5HTEVfU1VQUFJFU1NfRDNEMTFfSEFaQVJEX1dBUk5JTkdTIDEKKyNl
bmRpZgorCituYW1lc3BhY2UgcngKK3sKK3N0YXRpYyBjb25zdCBEWEdJX0ZPUk1BVCBSZW5kZXJU
YXJnZXRGb3JtYXRzW10gPQorICAgIHsKKyAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5P
Uk0sCisgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNCisgICAgfTsKKworc3RhdGlj
IGNvbnN0IERYR0lfRk9STUFUIERlcHRoU3RlbmNpbEZvcm1hdHNbXSA9CisgICAgeworICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhf
VUlOVCwKKyAgICAgICAgRFhHSV9GT1JNQVRfRDE2X1VOT1JNCisgICAgfTsKKworZW51bQorewor
ICAgIE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTX1ZURl9TTTQgPSAxNgorfTsKKworUmVuZGVyZXIx
MTo6UmVuZGVyZXIxMShlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIEhEQyBoRGMpIDogUmVuZGVyZXIo
ZGlzcGxheSksIG1EYyhoRGMpCit7CisgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gTlVMTDsKKyAg
ICBtSW5kZXhEYXRhTWFuYWdlciA9IE5VTEw7CisKKyAgICBtTGluZUxvb3BJQiA9IE5VTEw7Cisg
ICAgbVRyaWFuZ2xlRmFuSUIgPSBOVUxMOworCisgICAgbUNvcHlSZXNvdXJjZXNJbml0aWFsaXpl
ZCA9IGZhbHNlOworICAgIG1Db3B5VkIgPSBOVUxMOworICAgIG1Db3B5U2FtcGxlciA9IE5VTEw7
CisgICAgbUNvcHlJTCA9IE5VTEw7CisgICAgbUNvcHlWUyA9IE5VTEw7CisgICAgbUNvcHlSR0JB
UFMgPSBOVUxMOworICAgIG1Db3B5UkdCUFMgPSBOVUxMOworICAgIG1Db3B5THVtUFMgPSBOVUxM
OworICAgIG1Db3B5THVtQWxwaGFQUyA9IE5VTEw7CisKKyAgICBtQ2xlYXJSZXNvdXJjZXNJbml0
aWFsaXplZCA9IGZhbHNlOworICAgIG1DbGVhclZCID0gTlVMTDsKKyAgICBtQ2xlYXJJTCA9IE5V
TEw7CisgICAgbUNsZWFyVlMgPSBOVUxMOworICAgIG1DbGVhclNpbmdsZVBTID0gTlVMTDsKKyAg
ICBtQ2xlYXJNdWx0aXBsZVBTID0gTlVMTDsKKyAgICBtQ2xlYXJTY2lzc29yUlMgPSBOVUxMOwor
ICAgIG1DbGVhck5vU2Npc3NvclJTID0gTlVMTDsKKworICAgIG1TeW5jUXVlcnkgPSBOVUxMOwor
CisgICAgbUQzZDExTW9kdWxlID0gTlVMTDsKKyAgICBtRHhnaU1vZHVsZSA9IE5VTEw7CisKKyAg
ICBtRGV2aWNlTG9zdCA9IGZhbHNlOworCisgICAgbU1heFN1cHBvcnRlZFNhbXBsZXMgPSAwOwor
CisgICAgbURldmljZSA9IE5VTEw7CisgICAgbURldmljZUNvbnRleHQgPSBOVUxMOworICAgIG1E
eGdpQWRhcHRlciA9IE5VTEw7CisgICAgbUR4Z2lGYWN0b3J5ID0gTlVMTDsKKworICAgIG1Ecml2
ZXJDb25zdGFudEJ1ZmZlclZTID0gTlVMTDsKKyAgICBtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUyA9
IE5VTEw7CisKKyAgICBtQkdSQVRleHR1cmVTdXBwb3J0ID0gZmFsc2U7CisKKyAgICBtSXNHZW9t
ZXRyeVNoYWRlckFjdGl2ZSA9IGZhbHNlOworfQorCitSZW5kZXJlcjExOjp+UmVuZGVyZXIxMSgp
Cit7CisgICAgcmVsZWFzZSgpOworfQorCitSZW5kZXJlcjExICpSZW5kZXJlcjExOjptYWtlUmVu
ZGVyZXIxMShSZW5kZXJlciAqcmVuZGVyZXIpCit7CisgICAgQVNTRVJUKEhBU19EWU5BTUlDX1RZ
UEUocng6OlJlbmRlcmVyMTEqLCByZW5kZXJlcikpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxy
eDo6UmVuZGVyZXIxMSo+KHJlbmRlcmVyKTsKK30KKworI2lmbmRlZiBfX2QzZDExXzFfaF9fCisj
ZGVmaW5lIEQzRDExX01FU1NBR0VfSURfREVWSUNFX0RSQVdfUkVOREVSVEFSR0VUVklFV19OT1Rf
U0VUICgoRDNEMTFfTUVTU0FHRV9JRCkzMTQ2MDgxKQorI2VuZGlmCisKK0VHTGludCBSZW5kZXJl
cjExOjppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIWluaXRpYWxpemVDb21waWxlcigpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAgfQorCisgICAgbUR4
Z2lNb2R1bGUgPSBMb2FkTGlicmFyeShURVhUKCJkeGdpLmRsbCIpKTsKKyAgICBtRDNkMTFNb2R1
bGUgPSBMb2FkTGlicmFyeShURVhUKCJkM2QxMS5kbGwiKSk7CisKKyAgICBpZiAobUQzZDExTW9k
dWxlID09IE5VTEwgfHwgbUR4Z2lNb2R1bGUgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIEVSUigi
Q291bGQgbm90IGxvYWQgRDNEMTEgb3IgRFhHSSBsaWJyYXJ5IC0gYWJvcnRpbmchXG4iKTsKKyAg
ICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAgfQorCisgICAgLy8gY3JlYXRl
IHRoZSBEM0QxMSBkZXZpY2UKKyAgICBBU1NFUlQobURldmljZSA9PSBOVUxMKTsKKyAgICBQRk5f
RDNEMTFfQ1JFQVRFX0RFVklDRSBEM0QxMUNyZWF0ZURldmljZSA9IChQRk5fRDNEMTFfQ1JFQVRF
X0RFVklDRSlHZXRQcm9jQWRkcmVzcyhtRDNkMTFNb2R1bGUsICJEM0QxMUNyZWF0ZURldmljZSIp
OworCisgICAgaWYgKEQzRDExQ3JlYXRlRGV2aWNlID09IE5VTEwpCisgICAgeworICAgICAgICBF
UlIoIkNvdWxkIG5vdCByZXRyaWV2ZSBEM0QxMUNyZWF0ZURldmljZSBhZGRyZXNzIC0gYWJvcnRp
bmchXG4iKTsKKyAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7CisgICAgfQorCisg
ICAgRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsc1tdID0KKyAgICB7CisgICAgICAgIEQz
RF9GRUFUVVJFX0xFVkVMXzExXzAsCisgICAgICAgIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzEsCisg
ICAgICAgIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzAsCisgICAgfTsKKworICAgIEhSRVNVTFQgcmVz
dWx0ID0gU19PSzsKKworI2lmZGVmIF9ERUJVRworICAgIHJlc3VsdCA9IEQzRDExQ3JlYXRlRGV2
aWNlKE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEX0RSSVZFUl9UWVBF
X0hBUkRXQVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfQ1JFQVRFX0RFVklDRV9ERUJVRywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlTGV2ZWxzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFycmF5U2l6ZShmZWF0dXJlTGV2ZWxzKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEM0QxMV9TREtfVkVSU0lPTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmbURldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbUZl
YXR1cmVMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbURldmljZUNvbnRl
eHQpOworCisgICAgaWYgKCFtRGV2aWNlIHx8IEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAg
ICAgRVJSKCJGYWlsZWQgY3JlYXRpbmcgRGVidWcgRDNEMTEgZGV2aWNlIC0gZmFsbGluZyBiYWNr
IHRvIHJlbGVhc2UgcnVudGltZS5cbiIpOworICAgIH0KKworICAgIGlmICghbURldmljZSB8fCBG
QUlMRUQocmVzdWx0KSkKKyNlbmRpZgorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gRDNEMTFDcmVh
dGVEZXZpY2UoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEX0RS
SVZFUl9UWVBFX0hBUkRXQVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
VUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlTGV2ZWxzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBcnJheVNpemUoZmVhdHVyZUxldmVscyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEQzRDExX1NES19WRVJTSU9OLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmbURldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJm1GZWF0dXJlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZtRGV2aWNlQ29udGV4dCk7CisKKyAgICAgICAgaWYgKCFtRGV2aWNlIHx8IEZBSUxFRChy
ZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgRDNE
MTEgZGV2aWNlIC0gYWJvcnRpbmchXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBFR0xfTk9UX0lO
SVRJQUxJWkVEOyAgIC8vIENsZWFudXAgZG9uZSBieSBkZXN0cnVjdG9yIHRocm91Z2ggZ2xEZXN0
cm95UmVuZGVyZXIKKyAgICAgICAgfQorICAgIH0KKworICAgIElEWEdJRGV2aWNlICpkeGdpRGV2
aWNlID0gTlVMTDsKKyAgICByZXN1bHQgPSBtRGV2aWNlLT5RdWVyeUludGVyZmFjZShfX3V1aWRv
ZihJRFhHSURldmljZSksICh2b2lkKiopJmR4Z2lEZXZpY2UpOworCisgICAgaWYgKEZBSUxFRChy
ZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJDb3VsZCBub3QgcXVlcnkgRFhHSSBkZXZpY2Ug
LSBhYm9ydGluZyFcbiIpOworICAgICAgICByZXR1cm4gRUdMX05PVF9JTklUSUFMSVpFRDsKKyAg
ICB9CisKKyAgICByZXN1bHQgPSBkeGdpRGV2aWNlLT5HZXRQYXJlbnQoX191dWlkb2YoSURYR0lB
ZGFwdGVyKSwgKHZvaWQqKikmbUR4Z2lBZGFwdGVyKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IHJldHJpZXZlIERYR0kgYWRhcHRlciAt
IGFib3J0aW5nIVxuIik7CisgICAgICAgIHJldHVybiBFR0xfTk9UX0lOSVRJQUxJWkVEOworICAg
IH0KKworICAgIGR4Z2lEZXZpY2UtPlJlbGVhc2UoKTsKKworICAgIG1EeGdpQWRhcHRlci0+R2V0
RGVzYygmbUFkYXB0ZXJEZXNjcmlwdGlvbik7CisgICAgbWVtc2V0KG1EZXNjcmlwdGlvbiwgMCwg
c2l6ZW9mKG1EZXNjcmlwdGlvbikpOworICAgIHdjc3RvbWJzKG1EZXNjcmlwdGlvbiwgbUFkYXB0
ZXJEZXNjcmlwdGlvbi5EZXNjcmlwdGlvbiwgc2l6ZW9mKG1EZXNjcmlwdGlvbikgLSAxKTsKKwor
ICAgIHJlc3VsdCA9IG1EeGdpQWRhcHRlci0+R2V0UGFyZW50KF9fdXVpZG9mKElEWEdJRmFjdG9y
eSksICh2b2lkKiopJm1EeGdpRmFjdG9yeSk7CisKKyAgICBpZiAoIW1EeGdpRmFjdG9yeSB8fCBG
QUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBEWEdJ
IGZhY3RvcnkgLSBhYm9ydGluZyFcbiIpOworICAgICAgICByZXR1cm4gRUdMX05PVF9JTklUSUFM
SVpFRDsKKyAgICB9CisKKyAgICAvLyBEaXNhYmxlIHNvbWUgc3B1cmlvdXMgRDNEMTEgZGVidWcg
d2FybmluZ3MgdG8gcHJldmVudCB0aGVtIGZyb20gZmxvb2RpbmcgdGhlIG91dHB1dCBsb2cKKyNp
ZiBkZWZpbmVkKEFOR0xFX1NVUFBSRVNTX0QzRDExX0hBWkFSRF9XQVJOSU5HUykgJiYgZGVmaW5l
ZChfREVCVUcpCisgICAgSUQzRDExSW5mb1F1ZXVlICppbmZvUXVldWU7CisgICAgcmVzdWx0ID0g
bURldmljZS0+UXVlcnlJbnRlcmZhY2UoX191dWlkb2YoSUQzRDExSW5mb1F1ZXVlKSwgICh2b2lk
ICoqKSZpbmZvUXVldWUpOworCisgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgIHsKKyAg
ICAgICAgRDNEMTFfTUVTU0FHRV9JRCBoaWRlTWVzc2FnZXNbXSA9CisgICAgICAgIHsKKyAgICAg
ICAgICAgIEQzRDExX01FU1NBR0VfSURfREVWSUNFX09NU0VUUkVOREVSVEFSR0VUU19IQVpBUkQs
CisgICAgICAgICAgICBEM0QxMV9NRVNTQUdFX0lEX0RFVklDRV9QU1NFVFNIQURFUlJFU09VUkNF
U19IQVpBUkQsCisgICAgICAgICAgICBEM0QxMV9NRVNTQUdFX0lEX0RFVklDRV9EUkFXX1JFTkRF
UlRBUkdFVFZJRVdfTk9UX1NFVAorICAgICAgICB9OworCisgICAgICAgIEQzRDExX0lORk9fUVVF
VUVfRklMVEVSIGZpbHRlciA9IHswfTsKKyAgICAgICAgZmlsdGVyLkRlbnlMaXN0Lk51bUlEcyA9
IEFycmF5U2l6ZShoaWRlTWVzc2FnZXMpOworICAgICAgICBmaWx0ZXIuRGVueUxpc3QucElETGlz
dCA9IGhpZGVNZXNzYWdlczsKKworICAgICAgICBpbmZvUXVldWUtPkFkZFN0b3JhZ2VGaWx0ZXJF
bnRyaWVzKCZmaWx0ZXIpOworCisgICAgICAgIGluZm9RdWV1ZS0+UmVsZWFzZSgpOworICAgIH0K
KyNlbmRpZgorCisgICAgdW5zaWduZWQgaW50IG1heFN1cHBvcnRlZFNhbXBsZXMgPSAwOworICAg
IHVuc2lnbmVkIGludCBydEZvcm1hdENvdW50ID0gQXJyYXlTaXplKFJlbmRlclRhcmdldEZvcm1h
dHMpOworICAgIHVuc2lnbmVkIGludCBkc0Zvcm1hdENvdW50ID0gQXJyYXlTaXplKERlcHRoU3Rl
bmNpbEZvcm1hdHMpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcnRGb3JtYXRD
b3VudCArIGRzRm9ybWF0Q291bnQ7ICsraSkKKyAgICB7CisgICAgICAgIERYR0lfRk9STUFUIGZv
cm1hdCA9IChpIDwgcnRGb3JtYXRDb3VudCkgPyBSZW5kZXJUYXJnZXRGb3JtYXRzW2ldIDogRGVw
dGhTdGVuY2lsRm9ybWF0c1tpIC0gcnRGb3JtYXRDb3VudF07CisgICAgICAgIGlmIChmb3JtYXQg
IT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKKyAgICAgICAgeworICAgICAgICAgICAgVUlOVCBmb3Jt
YXRTdXBwb3J0OworICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q2hlY2tGb3JtYXRTdXBw
b3J0KGZvcm1hdCwgJmZvcm1hdFN1cHBvcnQpOworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChy
ZXN1bHQpICYmIChmb3JtYXRTdXBwb3J0ICYgRDNEMTFfRk9STUFUX1NVUFBPUlRfTVVMVElTQU1Q
TEVfUkVOREVSVEFSR0VUKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBNdWx0aXNh
bXBsZVN1cHBvcnRJbmZvIHN1cHBvcnRJbmZvOworCisgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaiA9IDE7IGogPD0gRDNEMTFfTUFYX01VTFRJU0FNUExFX1NBTVBMRV9DT1VOVDsg
aisrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbURl
dmljZS0+Q2hlY2tNdWx0aXNhbXBsZVF1YWxpdHlMZXZlbHMoZm9ybWF0LCBqLCAmc3VwcG9ydElu
Zm8ucXVhbGl0eUxldmVsc1tqIC0gMV0pOworICAgICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VF
REVEKHJlc3VsdCkgJiYgc3VwcG9ydEluZm8ucXVhbGl0eUxldmVsc1tqIC0gMV0gPiAwKQorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhTdXBwb3J0ZWRT
YW1wbGVzID0gc3RkOjptYXgoaiwgbWF4U3VwcG9ydGVkU2FtcGxlcyk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0SW5mby5xdWFsaXR5TGV2ZWxzW2ogLSAx
XSA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBtTXVsdGlzYW1wbGVTdXBwb3J0TWFwLmluc2VydChzdGQ6Om1ha2VfcGFpcihm
b3JtYXQsIHN1cHBvcnRJbmZvKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisg
ICAgbU1heFN1cHBvcnRlZFNhbXBsZXMgPSBtYXhTdXBwb3J0ZWRTYW1wbGVzOworCisgICAgaW5p
dGlhbGl6ZURldmljZSgpOworCisgICAgLy8gQkdSQSB0ZXh0dXJlIHN1cHBvcnQgaXMgb3B0aW9u
YWwgaW4gZmVhdHVyZSBsZXZlbHMgMTAgYW5kIDEwXzEKKyAgICBVSU5UIGZvcm1hdFN1cHBvcnQ7
CisgICAgcmVzdWx0ID0gbURldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KERYR0lfRk9STUFUX0I4
RzhSOEE4X1VOT1JNLCAmZm9ybWF0U3VwcG9ydCk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQor
ICAgIHsKKyAgICAgICAgRVJSKCJFcnJvciBjaGVja2luZyBCR1JBIGZvcm1hdCBzdXBwb3J0OiAw
eCUwOFgiLCByZXN1bHQpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjb25zdCBp
bnQgZmxhZ3MgPSAoRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTJEIHwgRDNEMTFfRk9STUFU
X1NVUFBPUlRfUkVOREVSX1RBUkdFVCk7CisgICAgICAgIG1CR1JBVGV4dHVyZVN1cHBvcnQgPSAo
Zm9ybWF0U3VwcG9ydCAmIGZsYWdzKSA9PSBmbGFnczsKKyAgICB9CisKKyAgICAvLyBDaGVjayBm
bG9hdGluZyBwb2ludCB0ZXh0dXJlIHN1cHBvcnQKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
aW50IHJlcXVpcmVkVGV4dHVyZUZsYWdzID0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTJE
IHwgRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRUNVQkU7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGludCByZXF1aXJlZFJlbmRlcmFibGVGbGFncyA9IEQzRDExX0ZPUk1BVF9TVVBQT1JU
X1JFTkRFUl9UQVJHRVQ7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCByZXF1aXJlZEZp
bHRlckZsYWdzID0gRDNEMTFfRk9STUFUX1NVUFBPUlRfU0hBREVSX1NBTVBMRTsKKworICAgIERY
R0lfRk9STUFUIGZsb2F0MTZGb3JtYXRzW10gPQorICAgIHsKKyAgICAgICAgRFhHSV9GT1JNQVRf
UjE2X0ZMT0FULAorICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsCisgICAgICAgIERY
R0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICB9OworCisgICAgRFhHSV9GT1JNQVQg
ZmxvYXQzMkZvcm1hdHNbXSA9CisgICAgeworICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQs
CisgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwKKyAgICAgICAgRFhHSV9GT1JNQVRf
UjMyRzMyQjMyX0ZMT0FULAorICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQs
CisgICAgfTsKKworICAgIG1GbG9hdDE2VGV4dHVyZVN1cHBvcnQgPSB0cnVlOworICAgIG1GbG9h
dDE2RmlsdGVyU3VwcG9ydCA9IHRydWU7CisgICAgbUZsb2F0MTZSZW5kZXJTdXBwb3J0ID0gdHJ1
ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IEFycmF5U2l6ZShmbG9hdDE2Rm9y
bWF0cyk7IGkrKykKKyAgICB7CisgICAgICAgIGlmIChTVUNDRUVERUQobURldmljZS0+Q2hlY2tG
b3JtYXRTdXBwb3J0KGZsb2F0MTZGb3JtYXRzW2ldLCAmZm9ybWF0U3VwcG9ydCkpKQorICAgICAg
ICB7CisgICAgICAgICAgICBtRmxvYXQxNlRleHR1cmVTdXBwb3J0ID0gbUZsb2F0MTZUZXh0dXJl
U3VwcG9ydCAmJiAoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkVGV4dHVyZUZsYWdzKSA9PSByZXF1
aXJlZFRleHR1cmVGbGFnczsKKyAgICAgICAgICAgIG1GbG9hdDE2RmlsdGVyU3VwcG9ydCA9IG1G
bG9hdDE2RmlsdGVyU3VwcG9ydCAmJiAoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkRmlsdGVyRmxh
Z3MpID09IHJlcXVpcmVkRmlsdGVyRmxhZ3M7CisgICAgICAgICAgICBtRmxvYXQxNlJlbmRlclN1
cHBvcnQgPSBtRmxvYXQxNlJlbmRlclN1cHBvcnQgJiYgKGZvcm1hdFN1cHBvcnQgJiByZXF1aXJl
ZFJlbmRlcmFibGVGbGFncykgPT0gcmVxdWlyZWRSZW5kZXJhYmxlRmxhZ3M7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRmxvYXQxNlRleHR1cmVTdXBw
b3J0ID0gZmFsc2U7CisgICAgICAgICAgICBtRmxvYXQxNlJlbmRlclN1cHBvcnQgPSBmYWxzZTsK
KyAgICAgICAgICAgIG1GbG9hdDE2RmlsdGVyU3VwcG9ydCA9IGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbUZsb2F0MzJUZXh0dXJlU3VwcG9ydCA9IHRydWU7CisgICAgbUZsb2F0MzJG
aWx0ZXJTdXBwb3J0ID0gdHJ1ZTsKKyAgICBtRmxvYXQzMlJlbmRlclN1cHBvcnQgPSB0cnVlOwor
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKGZsb2F0MzJGb3JtYXRz
KTsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChtRGV2aWNlLT5DaGVja0Zvcm1h
dFN1cHBvcnQoZmxvYXQzMkZvcm1hdHNbaV0sICZmb3JtYXRTdXBwb3J0KSkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1GbG9hdDMyVGV4dHVyZVN1cHBvcnQgPSBtRmxvYXQzMlRleHR1cmVTdXBw
b3J0ICYmIChmb3JtYXRTdXBwb3J0ICYgcmVxdWlyZWRUZXh0dXJlRmxhZ3MpID09IHJlcXVpcmVk
VGV4dHVyZUZsYWdzOworICAgICAgICAgICAgbUZsb2F0MzJGaWx0ZXJTdXBwb3J0ID0gbUZsb2F0
MzJGaWx0ZXJTdXBwb3J0ICYmIChmb3JtYXRTdXBwb3J0ICYgcmVxdWlyZWRGaWx0ZXJGbGFncykg
PT0gcmVxdWlyZWRGaWx0ZXJGbGFnczsKKyAgICAgICAgICAgIG1GbG9hdDMyUmVuZGVyU3VwcG9y
dCA9IG1GbG9hdDMyUmVuZGVyU3VwcG9ydCAmJiAoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkUmVu
ZGVyYWJsZUZsYWdzKSA9PSByZXF1aXJlZFJlbmRlcmFibGVGbGFnczsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1GbG9hdDMyVGV4dHVyZVN1cHBvcnQg
PSBmYWxzZTsKKyAgICAgICAgICAgIG1GbG9hdDMyRmlsdGVyU3VwcG9ydCA9IGZhbHNlOworICAg
ICAgICAgICAgbUZsb2F0MzJSZW5kZXJTdXBwb3J0ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBDaGVjayBjb21wcmVzc2VkIHRleHR1cmUgc3VwcG9ydAorICAgIGNvbnN0IHVu
c2lnbmVkIGludCByZXF1aXJlZENvbXByZXNzZWRUZXh0dXJlRmxhZ3MgPSBEM0QxMV9GT1JNQVRf
U1VQUE9SVF9URVhUVVJFMkQ7CisKKyAgICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNoZWNrRm9y
bWF0U3VwcG9ydChEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sICZmb3JtYXRTdXBwb3J0KSkpCisgICAg
eworICAgICAgICBtRFhUMVRleHR1cmVTdXBwb3J0ID0gKGZvcm1hdFN1cHBvcnQgJiByZXF1aXJl
ZENvbXByZXNzZWRUZXh0dXJlRmxhZ3MpID09IHJlcXVpcmVkQ29tcHJlc3NlZFRleHR1cmVGbGFn
czsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbURYVDFUZXh0dXJlU3VwcG9ydCA9
IGZhbHNlOworICAgIH0KKworICAgIGlmIChTVUNDRUVERUQobURldmljZS0+Q2hlY2tGb3JtYXRT
dXBwb3J0KERYR0lfRk9STUFUX0JDM19VTk9STSwgJmZvcm1hdFN1cHBvcnQpKSkKKyAgICB7Cisg
ICAgICAgIG1EWFQzVGV4dHVyZVN1cHBvcnQgPSAoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkQ29t
cHJlc3NlZFRleHR1cmVGbGFncykgPT0gcmVxdWlyZWRDb21wcmVzc2VkVGV4dHVyZUZsYWdzOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtRFhUM1RleHR1cmVTdXBwb3J0ID0gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKFNVQ0NFRURFRChtRGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBv
cnQoRFhHSV9GT1JNQVRfQkM1X1VOT1JNLCAmZm9ybWF0U3VwcG9ydCkpKQorICAgIHsKKyAgICAg
ICAgbURYVDVUZXh0dXJlU3VwcG9ydCA9IChmb3JtYXRTdXBwb3J0ICYgcmVxdWlyZWRDb21wcmVz
c2VkVGV4dHVyZUZsYWdzKSA9PSByZXF1aXJlZENvbXByZXNzZWRUZXh0dXJlRmxhZ3M7CisgICAg
fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1EWFQ1VGV4dHVyZVN1cHBvcnQgPSBmYWxzZTsK
KyAgICB9CisKKyAgICAvLyBDaGVjayBkZXB0aCB0ZXh0dXJlIHN1cHBvcnQKKyAgICBEWEdJX0ZP
Uk1BVCBkZXB0aFRleHR1cmVGb3JtYXRzW10gPQorICAgIHsKKyAgICAgICAgRFhHSV9GT1JNQVRf
RDE2X1VOT1JNLAorICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAgICB9
OworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCByZXF1aXJlZERlcHRoVGV4dHVyZUZs
YWdzID0gRDNEMTFfRk9STUFUX1NVUFBPUlRfREVQVEhfU1RFTkNJTCB8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfRk9STUFU
X1NVUFBPUlRfVEVYVFVSRTJEOworCisgICAgbURlcHRoVGV4dHVyZVN1cHBvcnQgPSB0cnVlOwor
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKGRlcHRoVGV4dHVyZUZv
cm1hdHMpOyBpKyspCisgICAgeworICAgICAgICBpZiAoU1VDQ0VFREVEKG1EZXZpY2UtPkNoZWNr
Rm9ybWF0U3VwcG9ydChkZXB0aFRleHR1cmVGb3JtYXRzW2ldLCAmZm9ybWF0U3VwcG9ydCkpKQor
ICAgICAgICB7CisgICAgICAgICAgICBtRGVwdGhUZXh0dXJlU3VwcG9ydCA9IG1EZXB0aFRleHR1
cmVTdXBwb3J0ICYmICgoZm9ybWF0U3VwcG9ydCAmIHJlcXVpcmVkRGVwdGhUZXh0dXJlRmxhZ3Mp
ID09IHJlcXVpcmVkRGVwdGhUZXh0dXJlRmxhZ3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UK
KyAgICAgICAgeworICAgICAgICAgICAgbURlcHRoVGV4dHVyZVN1cHBvcnQgPSBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKK30KKworLy8gZG8gYW55
IG9uZS10aW1lIGRldmljZSBpbml0aWFsaXphdGlvbgorLy8gTk9URTogdGhpcyBpcyBhbHNvIG5l
ZWRlZCBhZnRlciBhIGRldmljZSBsb3N0L3Jlc2V0CisvLyB0byByZXNldCB0aGUgc2NlbmUgc3Rh
dHVzIGFuZCBlbnN1cmUgdGhlIGRlZmF1bHQgc3RhdGVzIGFyZSByZXNldC4KK3ZvaWQgUmVuZGVy
ZXIxMTo6aW5pdGlhbGl6ZURldmljZSgpCit7CisgICAgbVN0YXRlQ2FjaGUuaW5pdGlhbGl6ZSht
RGV2aWNlKTsKKyAgICBtSW5wdXRMYXlvdXRDYWNoZS5pbml0aWFsaXplKG1EZXZpY2UsIG1EZXZp
Y2VDb250ZXh0KTsKKworICAgIEFTU0VSVCghbVZlcnRleERhdGFNYW5hZ2VyICYmICFtSW5kZXhE
YXRhTWFuYWdlcik7CisgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gbmV3IFZlcnRleERhdGFNYW5h
Z2VyKHRoaXMpOworICAgIG1JbmRleERhdGFNYW5hZ2VyID0gbmV3IEluZGV4RGF0YU1hbmFnZXIo
dGhpcyk7CisKKyAgICBtYXJrQWxsU3RhdGVEaXJ0eSgpOworfQorCitpbnQgUmVuZGVyZXIxMTo6
Z2VuZXJhdGVDb25maWdzKENvbmZpZ0Rlc2MgKipjb25maWdEZXNjTGlzdCkKK3sKKyAgICB1bnNp
Z25lZCBpbnQgbnVtUmVuZGVyRm9ybWF0cyA9IEFycmF5U2l6ZShSZW5kZXJUYXJnZXRGb3JtYXRz
KTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtRGVwdGhGb3JtYXRzID0gQXJyYXlTaXplKERlcHRoU3Rl
bmNpbEZvcm1hdHMpOworICAgICgqY29uZmlnRGVzY0xpc3QpID0gbmV3IENvbmZpZ0Rlc2NbbnVt
UmVuZGVyRm9ybWF0cyAqIG51bURlcHRoRm9ybWF0c107CisgICAgaW50IG51bUNvbmZpZ3MgPSAw
OworICAgIAorICAgIGZvciAodW5zaWduZWQgaW50IGZvcm1hdEluZGV4ID0gMDsgZm9ybWF0SW5k
ZXggPCBudW1SZW5kZXJGb3JtYXRzOyBmb3JtYXRJbmRleCsrKQorICAgIHsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgZGVwdGhTdGVuY2lsSW5kZXggPSAwOyBkZXB0aFN0ZW5jaWxJbmRleCA8
IG51bURlcHRoRm9ybWF0czsgZGVwdGhTdGVuY2lsSW5kZXgrKykKKyAgICAgICAgeworICAgICAg
ICAgICAgRFhHSV9GT1JNQVQgcmVuZGVyVGFyZ2V0Rm9ybWF0ID0gUmVuZGVyVGFyZ2V0Rm9ybWF0
c1tmb3JtYXRJbmRleF07CisKKyAgICAgICAgICAgIFVJTlQgZm9ybWF0U3VwcG9ydCA9IDA7Cisg
ICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNoZWNrRm9ybWF0U3VwcG9ydChy
ZW5kZXJUYXJnZXRGb3JtYXQsICZmb3JtYXRTdXBwb3J0KTsKKworICAgICAgICAgICAgaWYgKFNV
Q0NFRURFRChyZXN1bHQpICYmIChmb3JtYXRTdXBwb3J0ICYgRDNEMTFfRk9STUFUX1NVUFBPUlRf
UkVOREVSX1RBUkdFVCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVQgZGVwdGhTdGVuY2lsRm9ybWF0ID0gRGVwdGhTdGVuY2lsRm9ybWF0c1tkZXB0aFN0ZW5jaWxJ
bmRleF07CisKKyAgICAgICAgICAgICAgICBib29sIGRlcHRoU3RlbmNpbEZvcm1hdE9LID0gdHJ1
ZTsKKworICAgICAgICAgICAgICAgIGlmIChkZXB0aFN0ZW5jaWxGb3JtYXQgIT0gRFhHSV9GT1JN
QVRfVU5LTk9XTikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFVJTlQg
Zm9ybWF0U3VwcG9ydCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2Ut
PkNoZWNrRm9ybWF0U3VwcG9ydChkZXB0aFN0ZW5jaWxGb3JtYXQsICZmb3JtYXRTdXBwb3J0KTsK
KyAgICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsRm9ybWF0T0sgPSBTVUNDRUVERUQocmVz
dWx0KSAmJiAoZm9ybWF0U3VwcG9ydCAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX0RFUFRIX1NURU5D
SUwpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChkZXB0aFN0ZW5j
aWxGb3JtYXRPSykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmZp
Z0Rlc2MgbmV3Q29uZmlnOworICAgICAgICAgICAgICAgICAgICBuZXdDb25maWcucmVuZGVyVGFy
Z2V0Rm9ybWF0ID0gZDNkMTFfZ2w6OkNvbnZlcnRCYWNrQnVmZmVyRm9ybWF0KHJlbmRlclRhcmdl
dEZvcm1hdCk7CisgICAgICAgICAgICAgICAgICAgIG5ld0NvbmZpZy5kZXB0aFN0ZW5jaWxGb3Jt
YXQgPSBkM2QxMV9nbDo6Q29udmVydERlcHRoU3RlbmNpbEZvcm1hdChkZXB0aFN0ZW5jaWxGb3Jt
YXQpOworICAgICAgICAgICAgICAgICAgICBuZXdDb25maWcubXVsdGlTYW1wbGUgPSAwOyAgICAg
Ly8gRklYTUU6IGVudW1lcmF0ZSBtdWx0aS1zYW1wbGluZworICAgICAgICAgICAgICAgICAgICBu
ZXdDb25maWcuZmFzdENvbmZpZyA9IHRydWU7ICAgLy8gQXNzdW1lIGFsbCBEWDExIGZvcm1hdCBj
b252ZXJzaW9ucyB0byBiZSBmYXN0CisKKyAgICAgICAgICAgICAgICAgICAgKCpjb25maWdEZXNj
TGlzdClbbnVtQ29uZmlncysrXSA9IG5ld0NvbmZpZzsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbnVtQ29uZmlnczsKK30K
Kwordm9pZCBSZW5kZXJlcjExOjpkZWxldGVDb25maWdzKENvbmZpZ0Rlc2MgKmNvbmZpZ0Rlc2NM
aXN0KQoreworICAgIGRlbGV0ZSBbXSAoY29uZmlnRGVzY0xpc3QpOworfQorCit2b2lkIFJlbmRl
cmVyMTE6OnN5bmMoYm9vbCBibG9jaykKK3sKKyAgICBpZiAoYmxvY2spCisgICAgeworICAgICAg
ICBIUkVTVUxUIHJlc3VsdDsKKworICAgICAgICBpZiAoIW1TeW5jUXVlcnkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEQzRDExX1FVRVJZX0RFU0MgcXVlcnlEZXNjOworICAgICAgICAgICAgcXVl
cnlEZXNjLlF1ZXJ5ID0gRDNEMTFfUVVFUllfRVZFTlQ7CisgICAgICAgICAgICBxdWVyeURlc2Mu
TWlzY0ZsYWdzID0gMDsKKworICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUXVl
cnkoJnF1ZXJ5RGVzYywgJm1TeW5jUXVlcnkpOworICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURF
RChyZXN1bHQpKTsKKyAgICAgICAgfQorCisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5FbmQobVN5
bmNRdWVyeSk7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5GbHVzaCgpOworCisgICAgICAgIGRv
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2VDb250ZXh0LT5HZXREYXRh
KG1TeW5jUXVlcnksIE5VTEwsIDAsIEQzRDExX0FTWU5DX0dFVERBVEFfRE9OT1RGTFVTSCk7CisK
KyAgICAgICAgICAgIC8vIEtlZXAgcG9sbGluZywgYnV0IGFsbG93IG90aGVyIHRocmVhZHMgdG8g
ZG8gc29tZXRoaW5nIHVzZWZ1bCBmaXJzdAorICAgICAgICAgICAgU2xlZXAoMCk7CisKKyAgICAg
ICAgICAgIGlmICh0ZXN0RGV2aWNlTG9zdCh0cnVlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUg
KHJlc3VsdCA9PSBTX0ZBTFNFKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbURl
dmljZUNvbnRleHQtPkZsdXNoKCk7CisgICAgfQorfQorCitTd2FwQ2hhaW4gKlJlbmRlcmVyMTE6
OmNyZWF0ZVN3YXBDaGFpbihIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBHTGVudW0g
YmFja0J1ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KQoreworICAgIHJldHVy
biBuZXcgcng6OlN3YXBDaGFpbjExKHRoaXMsIHdpbmRvdywgc2hhcmVIYW5kbGUsIGJhY2tCdWZm
ZXJGb3JtYXQsIGRlcHRoQnVmZmVyRm9ybWF0KTsKK30KKwordm9pZCBSZW5kZXJlcjExOjpzZXRT
YW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgY29uc3QgZ2w6OlNh
bXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKQoreworICAgIGlmICh0eXBlID09IGdsOjpTQU1QTEVS
X1BJWEVMKQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBnbDo6TUFY
X1RFWFRVUkVfSU1BR0VfVU5JVFMpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiUGl4ZWwg
c2hhZGVyIHNhbXBsZXIgaW5kZXggJWkgaXMgbm90IHZhbGlkLiIsIGluZGV4KTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtRm9yY2VTZXRQaXhlbFNhbXBs
ZXJTdGF0ZXNbaW5kZXhdIHx8IG1lbWNtcCgmc2FtcGxlclN0YXRlLCAmbUN1clBpeGVsU2FtcGxl
clN0YXRlc1tpbmRleF0sIHNpemVvZihnbDo6U2FtcGxlclN0YXRlKSkgIT0gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgSUQzRDExU2FtcGxlclN0YXRlICpkeFNhbXBsZXJTdGF0ZSA9IG1TdGF0
ZUNhY2hlLmdldFNhbXBsZXJTdGF0ZShzYW1wbGVyU3RhdGUpOworCisgICAgICAgICAgICBpZiAo
IWR4U2FtcGxlclN0YXRlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVSUigiTlVM
TCBzYW1wbGVyIHN0YXRlIHJldHVybmVkIGJ5IFJlbmRlclN0YXRlQ2FjaGU6OmdldFNhbXBsZXJT
dGF0ZSwgc2V0dGluZyB0aGUgZGVmYXVsdCIKKyAgICAgICAgICAgICAgICAgICAgInNhbXBsZXIg
c3RhdGUgZm9yIHBpeGVsIHNoYWRlcnMgYXQgc2xvdCAlaS4iLCBpbmRleCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldFNhbXBsZXJzKGluZGV4LCAx
LCAmZHhTYW1wbGVyU3RhdGUpOworCisgICAgICAgICAgICBtQ3VyUGl4ZWxTYW1wbGVyU3RhdGVz
W2luZGV4XSA9IHNhbXBsZXJTdGF0ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1Gb3JjZVNldFBp
eGVsU2FtcGxlclN0YXRlc1tpbmRleF0gPSBmYWxzZTsKKyAgICB9CisgICAgZWxzZSBpZiAodHlw
ZSA9PSBnbDo6U0FNUExFUl9WRVJURVgpCisgICAgeworICAgICAgICBpZiAoaW5kZXggPCAwIHx8
IGluZGV4ID49IChpbnQpZ2V0TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgRVJSKCJWZXJ0ZXggc2hhZGVyIHNhbXBsZXIgaW5kZXggJWkgaXMgbm90
IHZhbGlkLiIsIGluZGV4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChtRm9yY2VTZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzW2luZGV4XSB8fCBtZW1jbXAoJnNh
bXBsZXJTdGF0ZSwgJm1DdXJWZXJ0ZXhTYW1wbGVyU3RhdGVzW2luZGV4XSwgc2l6ZW9mKGdsOjpT
YW1wbGVyU3RhdGUpKSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBJRDNEMTFTYW1wbGVy
U3RhdGUgKmR4U2FtcGxlclN0YXRlID0gbVN0YXRlQ2FjaGUuZ2V0U2FtcGxlclN0YXRlKHNhbXBs
ZXJTdGF0ZSk7CisKKyAgICAgICAgICAgIGlmICghZHhTYW1wbGVyU3RhdGUpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgRVJSKCJOVUxMIHNhbXBsZXIgc3RhdGUgcmV0dXJuZWQgYnkg
UmVuZGVyU3RhdGVDYWNoZTo6Z2V0U2FtcGxlclN0YXRlLCBzZXR0aW5nIHRoZSBkZWZhdWx0Igor
ICAgICAgICAgICAgICAgICAgICAic2FtcGxlciBzdGF0ZSBmb3IgdmVydGV4IHNoYWRlcnMgYXQg
c2xvdCAlaS4iLCBpbmRleCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1EZXZpY2VD
b250ZXh0LT5WU1NldFNhbXBsZXJzKGluZGV4LCAxLCAmZHhTYW1wbGVyU3RhdGUpOworCisgICAg
ICAgICAgICBtQ3VyVmVydGV4U2FtcGxlclN0YXRlc1tpbmRleF0gPSBzYW1wbGVyU3RhdGU7Cisg
ICAgICAgIH0KKworICAgICAgICBtRm9yY2VTZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzW2luZGV4XSA9
IGZhbHNlOworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Cit9CisKK3ZvaWQgUmVuZGVy
ZXIxMTo6c2V0VGV4dHVyZShnbDo6U2FtcGxlclR5cGUgdHlwZSwgaW50IGluZGV4LCBnbDo6VGV4
dHVyZSAqdGV4dHVyZSkKK3sKKyAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnRleHR1cmVT
UlYgPSBOVUxMOworICAgIHVuc2lnbmVkIGludCBzZXJpYWwgPSAwOworICAgIGJvb2wgZm9yY2VT
ZXRUZXh0dXJlID0gZmFsc2U7CisKKyAgICBpZiAodGV4dHVyZSkKKyAgICB7CisgICAgICAgIFRl
eHR1cmVTdG9yYWdlSW50ZXJmYWNlICp0ZXhTdG9yYWdlID0gdGV4dHVyZS0+Z2V0TmF0aXZlVGV4
dHVyZSgpOworICAgICAgICBpZiAodGV4U3RvcmFnZSkKKyAgICAgICAgeworICAgICAgICAgICAg
VGV4dHVyZVN0b3JhZ2UxMSAqc3RvcmFnZTExID0gVGV4dHVyZVN0b3JhZ2UxMTo6bWFrZVRleHR1
cmVTdG9yYWdlMTEodGV4U3RvcmFnZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgICAgICAg
ICAgdGV4dHVyZVNSViA9IHN0b3JhZ2UxMS0+Z2V0U1JWKCk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBJZiB3ZSBnZXQgTlVMTCBiYWNrIGZyb20gZ2V0U1JWIGhlcmUsIHNvbWV0aGluZyB3ZW50
IHdyb25nIGluIHRoZSB0ZXh0dXJlIGNsYXNzIGFuZCB3ZSdyZSB1bmV4cGVjdGVkbHkKKyAgICAg
ICAgLy8gbWlzc2luZyB0aGUgc2hhZGVyIHJlc291cmNlIHZpZXcKKyAgICAgICAgQVNTRVJUKHRl
eHR1cmVTUlYgIT0gTlVMTCk7CisKKyAgICAgICAgc2VyaWFsID0gdGV4dHVyZS0+Z2V0VGV4dHVy
ZVNlcmlhbCgpOworICAgICAgICBmb3JjZVNldFRleHR1cmUgPSB0ZXh0dXJlLT5oYXNEaXJ0eUlt
YWdlcygpOworICAgIH0KKworICAgIGlmICh0eXBlID09IGdsOjpTQU1QTEVSX1BJWEVMKQorICAg
IHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBnbDo6TUFYX1RFWFRVUkVfSU1B
R0VfVU5JVFMpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiUGl4ZWwgc2hhZGVyIHNhbXBs
ZXIgaW5kZXggJWkgaXMgbm90IHZhbGlkLiIsIGluZGV4KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChmb3JjZVNldFRleHR1cmUgfHwgbUN1clBpeGVsVGV4
dHVyZVNlcmlhbHNbaW5kZXhdICE9IHNlcmlhbCkKKyAgICAgICAgeworICAgICAgICAgICAgbURl
dmljZUNvbnRleHQtPlBTU2V0U2hhZGVyUmVzb3VyY2VzKGluZGV4LCAxLCAmdGV4dHVyZVNSVik7
CisgICAgICAgIH0KKworICAgICAgICBtQ3VyUGl4ZWxUZXh0dXJlU2VyaWFsc1tpbmRleF0gPSBz
ZXJpYWw7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGUgPT0gZ2w6OlNBTVBMRVJfVkVSVEVYKQor
ICAgIHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSAoaW50KWdldE1heFZlcnRl
eFRleHR1cmVJbWFnZVVuaXRzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiVmVydGV4
IHNoYWRlciBzYW1wbGVyIGluZGV4ICVpIGlzIG5vdCB2YWxpZC4iLCBpbmRleCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZm9yY2VTZXRUZXh0dXJlIHx8
IG1DdXJWZXJ0ZXhUZXh0dXJlU2VyaWFsc1tpbmRleF0gIT0gc2VyaWFsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+VlNTZXRTaGFkZXJSZXNvdXJjZXMoaW5kZXgsIDEs
ICZ0ZXh0dXJlU1JWKTsKKyAgICAgICAgfQorCisgICAgICAgIG1DdXJWZXJ0ZXhUZXh0dXJlU2Vy
aWFsc1tpbmRleF0gPSBzZXJpYWw7CisgICAgfQorICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKK30K
Kwordm9pZCBSZW5kZXJlcjExOjpzZXRSYXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6OlJhc3Rlcml6
ZXJTdGF0ZSAmcmFzdGVyU3RhdGUpCit7CisgICAgaWYgKG1Gb3JjZVNldFJhc3RlclN0YXRlIHx8
IG1lbWNtcCgmcmFzdGVyU3RhdGUsICZtQ3VyUmFzdGVyU3RhdGUsIHNpemVvZihnbDo6UmFzdGVy
aXplclN0YXRlKSkgIT0gMCkKKyAgICB7CisgICAgICAgIElEM0QxMVJhc3Rlcml6ZXJTdGF0ZSAq
ZHhSYXN0ZXJTdGF0ZSA9IG1TdGF0ZUNhY2hlLmdldFJhc3Rlcml6ZXJTdGF0ZShyYXN0ZXJTdGF0
ZSwgbVNjaXNzb3JFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUN1ckRlcHRoU2l6ZSk7
CisgICAgICAgIGlmICghZHhSYXN0ZXJTdGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJS
KCJOVUxMIHJhc3Rlcml6ZXIgc3RhdGUgcmV0dXJuZWQgYnkgUmVuZGVyU3RhdGVDYWNoZTo6Z2V0
UmFzdGVyaXplclN0YXRlLCBzZXR0aW5nIHRoZSBkZWZhdWx0IgorICAgICAgICAgICAgICAgICJy
YXN0ZXJpemVyIHN0YXRlLiIpOworICAgICAgICB9CisKKyAgICAgICAgbURldmljZUNvbnRleHQt
PlJTU2V0U3RhdGUoZHhSYXN0ZXJTdGF0ZSk7CisKKyAgICAgICAgbUN1clJhc3RlclN0YXRlID0g
cmFzdGVyU3RhdGU7CisgICAgfQorCisgICAgbUZvcmNlU2V0UmFzdGVyU3RhdGUgPSBmYWxzZTsK
K30KKwordm9pZCBSZW5kZXJlcjExOjpzZXRCbGVuZFN0YXRlKGNvbnN0IGdsOjpCbGVuZFN0YXRl
ICZibGVuZFN0YXRlLCBjb25zdCBnbDo6Q29sb3IgJmJsZW5kQ29sb3IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZU1hc2spCit7CisgICAgaWYgKG1G
b3JjZVNldEJsZW5kU3RhdGUgfHwKKyAgICAgICAgbWVtY21wKCZibGVuZFN0YXRlLCAmbUN1ckJs
ZW5kU3RhdGUsIHNpemVvZihnbDo6QmxlbmRTdGF0ZSkpICE9IDAgfHwKKyAgICAgICAgbWVtY21w
KCZibGVuZENvbG9yLCAmbUN1ckJsZW5kQ29sb3IsIHNpemVvZihnbDo6Q29sb3IpKSAhPSAwIHx8
CisgICAgICAgIHNhbXBsZU1hc2sgIT0gbUN1clNhbXBsZU1hc2spCisgICAgeworICAgICAgICBJ
RDNEMTFCbGVuZFN0YXRlICpkeEJsZW5kU3RhdGUgPSBtU3RhdGVDYWNoZS5nZXRCbGVuZFN0YXRl
KGJsZW5kU3RhdGUpOworICAgICAgICBpZiAoIWR4QmxlbmRTdGF0ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgRVJSKCJOVUxMIGJsZW5kIHN0YXRlIHJldHVybmVkIGJ5IFJlbmRlclN0YXRlQ2Fj
aGU6OmdldEJsZW5kU3RhdGUsIHNldHRpbmcgdGhlIGRlZmF1bHQgIgorICAgICAgICAgICAgICAg
ICJibGVuZCBzdGF0ZS4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZsb2F0IGJsZW5kQ29sb3Jz
WzRdID0gezAuMGZ9OworICAgICAgICBpZiAoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJHQiAhPSBH
TF9DT05TVEFOVF9BTFBIQSAmJiBibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICE9IEdMX09ORV9N
SU5VU19DT05TVEFOVF9BTFBIQSAmJgorICAgICAgICAgICAgYmxlbmRTdGF0ZS5kZXN0QmxlbmRS
R0IgIT0gR0xfQ09OU1RBTlRfQUxQSEEgJiYgYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgIT0gR0xf
T05FX01JTlVTX0NPTlNUQU5UX0FMUEhBKQorICAgICAgICB7CisgICAgICAgICAgICBibGVuZENv
bG9yc1swXSA9IGJsZW5kQ29sb3IucmVkOworICAgICAgICAgICAgYmxlbmRDb2xvcnNbMV0gPSBi
bGVuZENvbG9yLmdyZWVuOworICAgICAgICAgICAgYmxlbmRDb2xvcnNbMl0gPSBibGVuZENvbG9y
LmJsdWU7CisgICAgICAgICAgICBibGVuZENvbG9yc1szXSA9IGJsZW5kQ29sb3IuYWxwaGE7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBibGVuZENvbG9y
c1swXSA9IGJsZW5kQ29sb3IuYWxwaGE7CisgICAgICAgICAgICBibGVuZENvbG9yc1sxXSA9IGJs
ZW5kQ29sb3IuYWxwaGE7CisgICAgICAgICAgICBibGVuZENvbG9yc1syXSA9IGJsZW5kQ29sb3Iu
YWxwaGE7CisgICAgICAgICAgICBibGVuZENvbG9yc1szXSA9IGJsZW5kQ29sb3IuYWxwaGE7Cisg
ICAgICAgIH0KKworICAgICAgICBtRGV2aWNlQ29udGV4dC0+T01TZXRCbGVuZFN0YXRlKGR4Qmxl
bmRTdGF0ZSwgYmxlbmRDb2xvcnMsIHNhbXBsZU1hc2spOworCisgICAgICAgIG1DdXJCbGVuZFN0
YXRlID0gYmxlbmRTdGF0ZTsKKyAgICAgICAgbUN1ckJsZW5kQ29sb3IgPSBibGVuZENvbG9yOwor
ICAgICAgICBtQ3VyU2FtcGxlTWFzayA9IHNhbXBsZU1hc2s7CisgICAgfQorCisgICAgbUZvcmNl
U2V0QmxlbmRTdGF0ZSA9IGZhbHNlOworfQorCit2b2lkIFJlbmRlcmVyMTE6OnNldERlcHRoU3Rl
bmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZGVwdGhTdGVuY2lsU3RhdGUs
IGludCBzdGVuY2lsUmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc3RlbmNpbEJhY2tSZWYsIGJvb2wgZnJvbnRGYWNlQ0NXKQoreworICAgIGlmIChtRm9yY2VT
ZXREZXB0aFN0ZW5jaWxTdGF0ZSB8fAorICAgICAgICBtZW1jbXAoJmRlcHRoU3RlbmNpbFN0YXRl
LCAmbUN1ckRlcHRoU3RlbmNpbFN0YXRlLCBzaXplb2YoZ2w6OkRlcHRoU3RlbmNpbFN0YXRlKSkg
IT0gMCB8fAorICAgICAgICBzdGVuY2lsUmVmICE9IG1DdXJTdGVuY2lsUmVmIHx8IHN0ZW5jaWxC
YWNrUmVmICE9IG1DdXJTdGVuY2lsQmFja1JlZikKKyAgICB7CisgICAgICAgIGlmIChkZXB0aFN0
ZW5jaWxTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrICE9IGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxC
YWNrV3JpdGVtYXNrIHx8CisgICAgICAgICAgICBzdGVuY2lsUmVmICE9IHN0ZW5jaWxCYWNrUmVm
IHx8CisgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsTWFzayAhPSBkZXB0aFN0
ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja01hc2spCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigi
U2VwYXJhdGUgZnJvbnQvYmFjayBzdGVuY2lsIHdyaXRlbWFza3MsIHJlZmVyZW5jZSB2YWx1ZXMs
IG9yIHN0ZW5jaWwgbWFzayB2YWx1ZXMgYXJlICIKKyAgICAgICAgICAgICAgICAiaW52YWxpZCB1
bmRlciBXZWJHTC4iKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgICAgICB9CisKKyAgICAgICAgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUg
KmR4RGVwdGhTdGVuY2lsU3RhdGUgPSBtU3RhdGVDYWNoZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZShk
ZXB0aFN0ZW5jaWxTdGF0ZSk7CisgICAgICAgIGlmICghZHhEZXB0aFN0ZW5jaWxTdGF0ZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgRVJSKCJOVUxMIGRlcHRoIHN0ZW5jaWwgc3RhdGUgcmV0dXJu
ZWQgYnkgUmVuZGVyU3RhdGVDYWNoZTo6Z2V0RGVwdGhTdGVuY2lsU3RhdGUsICIKKyAgICAgICAg
ICAgICAgICAic2V0dGluZyB0aGUgZGVmYXVsdCBkZXB0aCBzdGVuY2lsIHN0YXRlLiIpOworICAg
ICAgICB9CisKKyAgICAgICAgbURldmljZUNvbnRleHQtPk9NU2V0RGVwdGhTdGVuY2lsU3RhdGUo
ZHhEZXB0aFN0ZW5jaWxTdGF0ZSwgc3RhdGljX2Nhc3Q8VUlOVD4oc3RlbmNpbFJlZikpOworCisg
ICAgICAgIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZSA9IGRlcHRoU3RlbmNpbFN0YXRlOworICAgICAg
ICBtQ3VyU3RlbmNpbFJlZiA9IHN0ZW5jaWxSZWY7CisgICAgICAgIG1DdXJTdGVuY2lsQmFja1Jl
ZiA9IHN0ZW5jaWxCYWNrUmVmOworICAgIH0KKworICAgIG1Gb3JjZVNldERlcHRoU3RlbmNpbFN0
YXRlID0gZmFsc2U7Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6c2V0U2Npc3NvclJlY3RhbmdsZShj
b25zdCBnbDo6UmVjdGFuZ2xlICZzY2lzc29yLCBib29sIGVuYWJsZWQpCit7CisgICAgaWYgKG1G
b3JjZVNldFNjaXNzb3IgfHwgbWVtY21wKCZzY2lzc29yLCAmbUN1clNjaXNzb3IsIHNpemVvZihn
bDo6UmVjdGFuZ2xlKSkgIT0gMCB8fAorICAgICAgICBlbmFibGVkICE9IG1TY2lzc29yRW5hYmxl
ZCkKKyAgICB7CisgICAgICAgIGlmIChlbmFibGVkKQorICAgICAgICB7CisgICAgICAgICAgICBE
M0QxMV9SRUNUIHJlY3Q7CisgICAgICAgICAgICByZWN0LmxlZnQgPSBzdGQ6Om1heCgwLCBzY2lz
c29yLngpOworICAgICAgICAgICAgcmVjdC50b3AgPSBzdGQ6Om1heCgwLCBzY2lzc29yLnkpOwor
ICAgICAgICAgICAgcmVjdC5yaWdodCA9IHNjaXNzb3IueCArIHN0ZDo6bWF4KDAsIHNjaXNzb3Iu
d2lkdGgpOworICAgICAgICAgICAgcmVjdC5ib3R0b20gPSBzY2lzc29yLnkgKyBzdGQ6Om1heCgw
LCBzY2lzc29yLmhlaWdodCk7CisKKyAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5SU1NldFNj
aXNzb3JSZWN0cygxLCAmcmVjdCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZW5hYmxlZCAh
PSBtU2Npc3NvckVuYWJsZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1Gb3JjZVNldFJhc3Rl
clN0YXRlID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1DdXJTY2lzc29yID0gc2Npc3Nv
cjsKKyAgICAgICAgbVNjaXNzb3JFbmFibGVkID0gZW5hYmxlZDsKKyAgICB9CisKKyAgICBtRm9y
Y2VTZXRTY2lzc29yID0gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6c2V0Vmlld3BvcnQo
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmdmlld3BvcnQsIGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyLCBH
TGVudW0gZHJhd01vZGUsIEdMZW51bSBmcm9udEZhY2UsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlnbm9yZVZpZXdwb3J0KQoreworICAgIGdsOjpSZWN0YW5nbGUgYWN0dWFs
Vmlld3BvcnQgPSB2aWV3cG9ydDsKKyAgICBmbG9hdCBhY3R1YWxaTmVhciA9IGdsOjpjbGFtcDAx
KHpOZWFyKTsKKyAgICBmbG9hdCBhY3R1YWxaRmFyID0gZ2w6OmNsYW1wMDEoekZhcik7CisgICAg
aWYgKGlnbm9yZVZpZXdwb3J0KQorICAgIHsKKyAgICAgICAgYWN0dWFsVmlld3BvcnQueCA9IDA7
CisgICAgICAgIGFjdHVhbFZpZXdwb3J0LnkgPSAwOworICAgICAgICBhY3R1YWxWaWV3cG9ydC53
aWR0aCA9IG1SZW5kZXJUYXJnZXREZXNjLndpZHRoOworICAgICAgICBhY3R1YWxWaWV3cG9ydC5o
ZWlnaHQgPSBtUmVuZGVyVGFyZ2V0RGVzYy5oZWlnaHQ7CisgICAgICAgIGFjdHVhbFpOZWFyID0g
MC4wZjsKKyAgICAgICAgYWN0dWFsWkZhciA9IDEuMGY7CisgICAgfQorCisgICAgLy8gR2V0IEQz
RCB2aWV3cG9ydCBib3VuZHMsIHdoaWNoIGRlcGVuZHMgb24gdGhlIGZlYXR1cmUgbGV2ZWwKKyAg
ICBjb25zdCBSYW5nZSYgdmlld3BvcnRCb3VuZHMgPSBnZXRWaWV3cG9ydEJvdW5kcygpOworCisg
ICAgLy8gQ2xhbXAgd2lkdGggYW5kIGhlaWdodCBmaXJzdCB0byB0aGUgZ2wgbWF4aW11bSwgdGhl
biBjbGFtcCBmdXJ0aGVyIGlmIHdlIGV4dGVuZCBwYXN0IHRoZSBEM0QgbWF4aW11bSBib3VuZHMK
KyAgICBEM0QxMV9WSUVXUE9SVCBkeFZpZXdwb3J0OworICAgIGR4Vmlld3BvcnQuVG9wTGVmdFgg
PSBnbDo6Y2xhbXAoYWN0dWFsVmlld3BvcnQueCwgdmlld3BvcnRCb3VuZHMuc3RhcnQsIHZpZXdw
b3J0Qm91bmRzLmVuZCk7CisgICAgZHhWaWV3cG9ydC5Ub3BMZWZ0WSA9IGdsOjpjbGFtcChhY3R1
YWxWaWV3cG9ydC55LCB2aWV3cG9ydEJvdW5kcy5zdGFydCwgdmlld3BvcnRCb3VuZHMuZW5kKTsK
KyAgICBkeFZpZXdwb3J0LldpZHRoID0gZ2w6OmNsYW1wKGFjdHVhbFZpZXdwb3J0LndpZHRoLCAw
LCBnZXRNYXhWaWV3cG9ydERpbWVuc2lvbigpKTsKKyAgICBkeFZpZXdwb3J0LkhlaWdodCA9IGds
OjpjbGFtcChhY3R1YWxWaWV3cG9ydC5oZWlnaHQsIDAsIGdldE1heFZpZXdwb3J0RGltZW5zaW9u
KCkpOworICAgIGR4Vmlld3BvcnQuV2lkdGggPSBzdGQ6Om1pbigoaW50KWR4Vmlld3BvcnQuV2lk
dGgsIHZpZXdwb3J0Qm91bmRzLmVuZCAtIHN0YXRpY19jYXN0PGludD4oZHhWaWV3cG9ydC5Ub3BM
ZWZ0WCkpOworICAgIGR4Vmlld3BvcnQuSGVpZ2h0ID0gc3RkOjptaW4oKGludClkeFZpZXdwb3J0
LkhlaWdodCwgdmlld3BvcnRCb3VuZHMuZW5kIC0gc3RhdGljX2Nhc3Q8aW50PihkeFZpZXdwb3J0
LlRvcExlZnRZKSk7CisgICAgZHhWaWV3cG9ydC5NaW5EZXB0aCA9IGFjdHVhbFpOZWFyOworICAg
IGR4Vmlld3BvcnQuTWF4RGVwdGggPSBhY3R1YWxaRmFyOworCisgICAgaWYgKGR4Vmlld3BvcnQu
V2lkdGggPD0gMCB8fCBkeFZpZXdwb3J0LkhlaWdodCA8PSAwKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOyAgIC8vIE5vdGhpbmcgdG8gcmVuZGVyCisgICAgfQorCisgICAgYm9vbCB2aWV3
cG9ydENoYW5nZWQgPSBtRm9yY2VTZXRWaWV3cG9ydCB8fCBtZW1jbXAoJmFjdHVhbFZpZXdwb3J0
LCAmbUN1clZpZXdwb3J0LCBzaXplb2YoZ2w6OlJlY3RhbmdsZSkpICE9IDAgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFjdHVhbFpOZWFyICE9IG1DdXJOZWFyIHx8IGFjdHVhbFpGYXIg
IT0gbUN1ckZhcjsKKworICAgIGlmICh2aWV3cG9ydENoYW5nZWQpCisgICAgeworICAgICAgICBt
RGV2aWNlQ29udGV4dC0+UlNTZXRWaWV3cG9ydHMoMSwgJmR4Vmlld3BvcnQpOworCisgICAgICAg
IG1DdXJWaWV3cG9ydCA9IGFjdHVhbFZpZXdwb3J0OworICAgICAgICBtQ3VyTmVhciA9IGFjdHVh
bFpOZWFyOworICAgICAgICBtQ3VyRmFyID0gYWN0dWFsWkZhcjsKKworICAgICAgICBtUGl4ZWxD
b25zdGFudHMudmlld0Nvb3Jkc1swXSA9IGFjdHVhbFZpZXdwb3J0LndpZHRoICAqIDAuNWY7Cisg
ICAgICAgIG1QaXhlbENvbnN0YW50cy52aWV3Q29vcmRzWzFdID0gYWN0dWFsVmlld3BvcnQuaGVp
Z2h0ICogMC41ZjsKKyAgICAgICAgbVBpeGVsQ29uc3RhbnRzLnZpZXdDb29yZHNbMl0gPSBhY3R1
YWxWaWV3cG9ydC54ICsgKGFjdHVhbFZpZXdwb3J0LndpZHRoICAqIDAuNWYpOworICAgICAgICBt
UGl4ZWxDb25zdGFudHMudmlld0Nvb3Jkc1szXSA9IGFjdHVhbFZpZXdwb3J0LnkgKyAoYWN0dWFs
Vmlld3BvcnQuaGVpZ2h0ICogMC41Zik7CisKKyAgICAgICAgbVBpeGVsQ29uc3RhbnRzLmRlcHRo
RnJvbnRbMF0gPSAoYWN0dWFsWkZhciAtIGFjdHVhbFpOZWFyKSAqIDAuNWY7CisgICAgICAgIG1Q
aXhlbENvbnN0YW50cy5kZXB0aEZyb250WzFdID0gKGFjdHVhbFpOZWFyICsgYWN0dWFsWkZhcikg
KiAwLjVmOworCisgICAgICAgIG1WZXJ0ZXhDb25zdGFudHMuZGVwdGhSYW5nZVswXSA9IGFjdHVh
bFpOZWFyOworICAgICAgICBtVmVydGV4Q29uc3RhbnRzLmRlcHRoUmFuZ2VbMV0gPSBhY3R1YWxa
RmFyOworICAgICAgICBtVmVydGV4Q29uc3RhbnRzLmRlcHRoUmFuZ2VbMl0gPSBhY3R1YWxaRmFy
IC0gYWN0dWFsWk5lYXI7CisKKyAgICAgICAgbVBpeGVsQ29uc3RhbnRzLmRlcHRoUmFuZ2VbMF0g
PSBhY3R1YWxaTmVhcjsKKyAgICAgICAgbVBpeGVsQ29uc3RhbnRzLmRlcHRoUmFuZ2VbMV0gPSBh
Y3R1YWxaRmFyOworICAgICAgICBtUGl4ZWxDb25zdGFudHMuZGVwdGhSYW5nZVsyXSA9IGFjdHVh
bFpGYXIgLSBhY3R1YWxaTmVhcjsKKyAgICB9CisKKyAgICBtRm9yY2VTZXRWaWV3cG9ydCA9IGZh
bHNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlbmRlcmVyMTE6OmFwcGx5UHJpbWl0
aXZlVHlwZShHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCkKK3sKKyAgICBEM0QxMV9QUklNSVRJ
VkVfVE9QT0xPR1kgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX1VO
REVGSU5FRDsKKworICAgIHN3aXRjaCAobW9kZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1BPSU5U
UzogICAgICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRDExX1BSSU1JVElWRV9UT1BPTE9HWV9Q
T0lOVExJU1Q7ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJTkVTOiAgICAgICAgICBwcmltaXRp
dmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfTElORUxJU1Q7ICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX0xJTkVfTE9PUDogICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9Q
UklNSVRJVkVfVE9QT0xPR1lfTElORVNUUklQOyAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJ
TkVfU1RSSVA6ICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lf
TElORVNUUklQOyAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RSSUFOR0xFUzogICAgICBwcmlt
aXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVMSVNUOyAgYnJl
YWs7CisgICAgICBjYXNlIEdMX1RSSUFOR0xFX1NUUklQOiBwcmltaXRpdmVUb3BvbG9neSA9IEQz
RF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVTVFJJUDsgYnJlYWs7CisgICAgICAgICAgLy8g
ZW11bGF0ZSBmYW5zIHZpYSByZXdyaXRpbmcgaW5kZXggYnVmZmVyCisgICAgICBjYXNlIEdMX1RS
SUFOR0xFX0ZBTjogICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lf
VFJJQU5HTEVMSVNUOyAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZ2w6
OmVycm9yKEdMX0lOVkFMSURfRU5VTSwgZmFsc2UpOworICAgIH0KKworICAgIG1EZXZpY2VDb250
ZXh0LT5JQVNldFByaW1pdGl2ZVRvcG9sb2d5KHByaW1pdGl2ZVRvcG9sb2d5KTsKKworICAgIHJl
dHVybiBjb3VudCA+IDA7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6YXBwbHlSZW5kZXJUYXJnZXQo
Z2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlcikKK3sKKyAgICAvLyBHZXQgdGhlIGNvbG9yIHJl
bmRlciBidWZmZXIgYW5kIHNlcmlhbAorICAgIC8vIEFsc28gZXh0cmFjdCB0aGUgcmVuZGVyIHRh
cmdldCBkaW1lbnNpb25zIGFuZCB2aWV3CisgICAgdW5zaWduZWQgaW50IHJlbmRlclRhcmdldFdp
ZHRoID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgcmVuZGVyVGFyZ2V0SGVpZ2h0ID0gMDsKKyAgICBH
TGVudW0gcmVuZGVyVGFyZ2V0Rm9ybWF0ID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgcmVuZGVyVGFy
Z2V0U2VyaWFsc1tnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSU10gPSB7MH07Cisg
ICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyogZnJhbWVidWZmZXJSVFZzW2dsOjpJTVBMRU1FTlRB
VElPTl9NQVhfRFJBV19CVUZGRVJTXSA9IHtOVUxMfTsKKyAgICBib29sIG1pc3NpbmdDb2xvclJl
bmRlclRhcmdldCA9IHRydWU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBjb2xvckF0dGFjaG1l
bnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVG
RkVSUzsgY29sb3JBdHRhY2htZW50KyspCisgICAgeworICAgICAgICBjb25zdCBHTGVudW0gZHJh
d0J1ZmZlclN0YXRlID0gZnJhbWVidWZmZXItPmdldERyYXdCdWZmZXJTdGF0ZShjb2xvckF0dGFj
aG1lbnQpOworCisgICAgICAgIGlmIChmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXJUeXBlKGNv
bG9yQXR0YWNobWVudCkgIT0gR0xfTk9ORSAmJiBkcmF3QnVmZmVyU3RhdGUgIT0gR0xfTk9ORSkK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gdGhlIGRyYXcgYnVmZmVyIG11c3QgYmUgZWl0aGVy
ICJub25lIiwgImJhY2siIGZvciB0aGUgZGVmYXVsdCBidWZmZXIgb3IgdGhlIHNhbWUgaW5kZXgg
YXMgdGhpcyBjb2xvciAoaW4gb3JkZXIpCisgICAgICAgICAgICBBU1NFUlQoZHJhd0J1ZmZlclN0
YXRlID09IEdMX0JBQ0sgfHwgZHJhd0J1ZmZlclN0YXRlID09IChHTF9DT0xPUl9BVFRBQ0hNRU5U
MF9FWFQgKyBjb2xvckF0dGFjaG1lbnQpKTsKKworICAgICAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZl
ciAqY29sb3JidWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0Q29sb3JidWZmZXIoY29sb3JBdHRhY2ht
ZW50KTsKKworICAgICAgICAgICAgaWYgKCFjb2xvcmJ1ZmZlcikKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBFUlIoInJlbmRlciB0YXJnZXQgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVs
bC4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIGNoZWNrIGZvciB6ZXJvLXNpemVkIGRlZmF1bHQgZnJhbWVidWZmZXIsIHdo
aWNoIGlzIGEgc3BlY2lhbCBjYXNlLgorICAgICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIGRv
IG5vdCB3aXNoIHRvIG1vZGlmeSBhbnkgc3RhdGUgYW5kIGp1c3Qgc2lsZW50bHkgcmV0dXJuIGZh
bHNlLgorICAgICAgICAgICAgLy8gdGhpcyB3aWxsIG5vdCByZXBvcnQgYW55IGdsIGVycm9yIGJ1
dCB3aWxsIGNhdXNlIHRoZSBjYWxsaW5nIG1ldGhvZCB0byByZXR1cm4uCisgICAgICAgICAgICBp
ZiAoY29sb3JidWZmZXItPmdldFdpZHRoKCkgPT0gMCB8fCBjb2xvcmJ1ZmZlci0+Z2V0SGVpZ2h0
KCkgPT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJlbmRlclRhcmdldFNlcmlhbHNbY29sb3JBdHRh
Y2htZW50XSA9IGNvbG9yYnVmZmVyLT5nZXRTZXJpYWwoKTsKKworICAgICAgICAgICAgLy8gRXh0
cmFjdCB0aGUgcmVuZGVyIHRhcmdldCBkaW1lbnNpb25zIGFuZCB2aWV3CisgICAgICAgICAgICBS
ZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJU
YXJnZXQxMShjb2xvcmJ1ZmZlci0+Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAgICAgICAgICAgaWYg
KCFyZW5kZXJUYXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRVJSKCJyZW5k
ZXIgdGFyZ2V0IHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmcmFtZWJ1ZmZlclJU
VnNbY29sb3JBdHRhY2htZW50XSA9IHJlbmRlclRhcmdldC0+Z2V0UmVuZGVyVGFyZ2V0Vmlldygp
OworICAgICAgICAgICAgaWYgKCFmcmFtZWJ1ZmZlclJUVnNbY29sb3JBdHRhY2htZW50XSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBFUlIoInJlbmRlciB0YXJnZXQgdmlldyBwb2lu
dGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1pc3NpbmdDb2xvclJlbmRlclRhcmdl
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXRXaWR0aCA9IGNv
bG9yYnVmZmVyLT5nZXRXaWR0aCgpOworICAgICAgICAgICAgICAgIHJlbmRlclRhcmdldEhlaWdo
dCA9IGNvbG9yYnVmZmVyLT5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgICAgICByZW5kZXJUYXJn
ZXRGb3JtYXQgPSBjb2xvcmJ1ZmZlci0+Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAgICAgICAgICAg
ICAgbWlzc2luZ0NvbG9yUmVuZGVyVGFyZ2V0ID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBHZXQgdGhlIGRlcHRoIHN0ZW5jaWwgcmVuZGVyIGJ1ZmZl
ciBhbmQgc2VyaWFscworICAgIGdsOjpSZW5kZXJidWZmZXIgKmRlcHRoU3RlbmNpbCA9IE5VTEw7
CisgICAgdW5zaWduZWQgaW50IGRlcHRoYnVmZmVyU2VyaWFsID0gMDsKKyAgICB1bnNpZ25lZCBp
bnQgc3RlbmNpbGJ1ZmZlclNlcmlhbCA9IDA7CisgICAgaWYgKGZyYW1lYnVmZmVyLT5nZXREZXB0
aGJ1ZmZlclR5cGUoKSAhPSBHTF9OT05FKQorICAgIHsKKyAgICAgICAgZGVwdGhTdGVuY2lsID0g
ZnJhbWVidWZmZXItPmdldERlcHRoYnVmZmVyKCk7CisgICAgICAgIGlmICghZGVwdGhTdGVuY2ls
KQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkRlcHRoIHN0ZW5jaWwgcG9pbnRlciB1bmV4
cGVjdGVkbHkgbnVsbC4iKTsKKyAgICAgICAgICAgIFNhZmVSZWxlYXNlKGZyYW1lYnVmZmVyUlRW
cyk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBkZXB0
aGJ1ZmZlclNlcmlhbCA9IGRlcHRoU3RlbmNpbC0+Z2V0U2VyaWFsKCk7CisgICAgfQorICAgIGVs
c2UgaWYgKGZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyVHlwZSgpICE9IEdMX05PTkUpCisg
ICAgeworICAgICAgICBkZXB0aFN0ZW5jaWwgPSBmcmFtZWJ1ZmZlci0+Z2V0U3RlbmNpbGJ1ZmZl
cigpOworICAgICAgICBpZiAoIWRlcHRoU3RlbmNpbCkKKyAgICAgICAgeworICAgICAgICAgICAg
RVJSKCJEZXB0aCBzdGVuY2lsIHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAgICAg
ICAgICBTYWZlUmVsZWFzZShmcmFtZWJ1ZmZlclJUVnMpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisKKyAgICAgICAgc3RlbmNpbGJ1ZmZlclNlcmlhbCA9IGRlcHRoU3Rl
bmNpbC0+Z2V0U2VyaWFsKCk7CisgICAgfQorCisgICAgLy8gRXh0cmFjdCB0aGUgZGVwdGggc3Rl
bmNpbCBzaXplcyBhbmQgdmlldworICAgIHVuc2lnbmVkIGludCBkZXB0aFNpemUgPSAwOworICAg
IHVuc2lnbmVkIGludCBzdGVuY2lsU2l6ZSA9IDA7CisgICAgSUQzRDExRGVwdGhTdGVuY2lsVmll
dyogZnJhbWVidWZmZXJEU1YgPSBOVUxMOworICAgIGlmIChkZXB0aFN0ZW5jaWwpCisgICAgewor
ICAgICAgICBSZW5kZXJUYXJnZXQxMSAqZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0ID0gUmVuZGVy
VGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShkZXB0aFN0ZW5jaWwtPmdldERlcHRoU3RlbmNp
bCgpKTsKKyAgICAgICAgaWYgKCFkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEVSUigicmVuZGVyIHRhcmdldCBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxs
LiIpOworICAgICAgICAgICAgU2FmZVJlbGVhc2UoZnJhbWVidWZmZXJSVFZzKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGZyYW1lYnVmZmVyRFNWID0g
ZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0LT5nZXREZXB0aFN0ZW5jaWxWaWV3KCk7CisgICAgICAg
IGlmICghZnJhbWVidWZmZXJEU1YpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiZGVwdGgg
c3RlbmNpbCB2aWV3IHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CisgICAgICAgICAgICBT
YWZlUmVsZWFzZShmcmFtZWJ1ZmZlclJUVnMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmVuZGVyIGJ1ZmZlciwgdGhl
IHdpZHRoLCBoZWlnaHQgYW5kIGZvcm1hdCB2YWx1ZXMgY29tZSBmcm9tCisgICAgICAgIC8vIHRo
ZSBkZXB0aCBzdGVuY2lsCisgICAgICAgIGlmIChtaXNzaW5nQ29sb3JSZW5kZXJUYXJnZXQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJlbmRlclRhcmdldFdpZHRoID0gZGVwdGhTdGVuY2lsLT5n
ZXRXaWR0aCgpOworICAgICAgICAgICAgcmVuZGVyVGFyZ2V0SGVpZ2h0ID0gZGVwdGhTdGVuY2ls
LT5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIHJlbmRlclRhcmdldEZvcm1hdCA9IGRlcHRoU3Rl
bmNpbC0+Z2V0QWN0dWFsRm9ybWF0KCk7CisgICAgICAgIH0KKworICAgICAgICBkZXB0aFNpemUg
PSBkZXB0aFN0ZW5jaWwtPmdldERlcHRoU2l6ZSgpOworICAgICAgICBzdGVuY2lsU2l6ZSA9IGRl
cHRoU3RlbmNpbC0+Z2V0U3RlbmNpbFNpemUoKTsKKyAgICB9CisKKyAgICAvLyBBcHBseSB0aGUg
cmVuZGVyIHRhcmdldCBhbmQgZGVwdGggc3RlbmNpbAorICAgIGlmICghbVJlbmRlclRhcmdldERl
c2NJbml0aWFsaXplZCB8fCAhbURlcHRoU3RlbmNpbEluaXRpYWxpemVkIHx8CisgICAgICAgIG1l
bWNtcChyZW5kZXJUYXJnZXRTZXJpYWxzLCBtQXBwbGllZFJlbmRlclRhcmdldFNlcmlhbHMsIHNp
emVvZihyZW5kZXJUYXJnZXRTZXJpYWxzKSkgIT0gMCB8fAorICAgICAgICBkZXB0aGJ1ZmZlclNl
cmlhbCAhPSBtQXBwbGllZERlcHRoYnVmZmVyU2VyaWFsIHx8CisgICAgICAgIHN0ZW5jaWxidWZm
ZXJTZXJpYWwgIT0gbUFwcGxpZWRTdGVuY2lsYnVmZmVyU2VyaWFsKQorICAgIHsKKyAgICAgICAg
bURldmljZUNvbnRleHQtPk9NU2V0UmVuZGVyVGFyZ2V0cyhnZXRNYXhSZW5kZXJUYXJnZXRzKCks
IGZyYW1lYnVmZmVyUlRWcywgZnJhbWVidWZmZXJEU1YpOworCisgICAgICAgIG1SZW5kZXJUYXJn
ZXREZXNjLndpZHRoID0gcmVuZGVyVGFyZ2V0V2lkdGg7CisgICAgICAgIG1SZW5kZXJUYXJnZXRE
ZXNjLmhlaWdodCA9IHJlbmRlclRhcmdldEhlaWdodDsKKyAgICAgICAgbVJlbmRlclRhcmdldERl
c2MuZm9ybWF0ID0gcmVuZGVyVGFyZ2V0Rm9ybWF0OworICAgICAgICBtRm9yY2VTZXRWaWV3cG9y
dCA9IHRydWU7CisgICAgICAgIG1Gb3JjZVNldFNjaXNzb3IgPSB0cnVlOworCisgICAgICAgIGlm
ICghbURlcHRoU3RlbmNpbEluaXRpYWxpemVkIHx8IGRlcHRoU2l6ZSAhPSBtQ3VyRGVwdGhTaXpl
KQorICAgICAgICB7CisgICAgICAgICAgICBtQ3VyRGVwdGhTaXplID0gZGVwdGhTaXplOworICAg
ICAgICAgICAgbUZvcmNlU2V0UmFzdGVyU3RhdGUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAg
ICAgbUN1clN0ZW5jaWxTaXplID0gc3RlbmNpbFNpemU7CisKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgcnRJbmRleCA9IDA7IHJ0SW5kZXggPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdf
QlVGRkVSUzsgcnRJbmRleCsrKQorICAgICAgICB7CisgICAgICAgICAgICBtQXBwbGllZFJlbmRl
clRhcmdldFNlcmlhbHNbcnRJbmRleF0gPSByZW5kZXJUYXJnZXRTZXJpYWxzW3J0SW5kZXhdOwor
ICAgICAgICB9CisgICAgICAgIG1BcHBsaWVkRGVwdGhidWZmZXJTZXJpYWwgPSBkZXB0aGJ1ZmZl
clNlcmlhbDsKKyAgICAgICAgbUFwcGxpZWRTdGVuY2lsYnVmZmVyU2VyaWFsID0gc3RlbmNpbGJ1
ZmZlclNlcmlhbDsKKyAgICAgICAgbVJlbmRlclRhcmdldERlc2NJbml0aWFsaXplZCA9IHRydWU7
CisgICAgICAgIG1EZXB0aFN0ZW5jaWxJbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisgICAg
U2FmZVJlbGVhc2UoZnJhbWVidWZmZXJSVFZzKTsKKyAgICBTYWZlUmVsZWFzZShmcmFtZWJ1ZmZl
ckRTVik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworR0xlbnVtIFJlbmRlcmVyMTE6OmFwcGx5
VmVydGV4QnVmZmVyKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5LCBnbDo6VmVydGV4
QXR0cmlidXRlIHZlcnRleEF0dHJpYnV0ZXNbXSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQs
IEdMc2l6ZWkgaW5zdGFuY2VzKQoreworICAgIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRl
c1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsKKyAgICBHTGVudW0gZXJyID0gbVZlcnRleERhdGFN
YW5hZ2VyLT5wcmVwYXJlVmVydGV4RGF0YSh2ZXJ0ZXhBdHRyaWJ1dGVzLCBwcm9ncmFtQmluYXJ5
LCBmaXJzdCwgY291bnQsIGF0dHJpYnV0ZXMsIGluc3RhbmNlcyk7CisgICAgaWYgKGVyciAhPSBH
TF9OT19FUlJPUikKKyAgICB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorCisgICAgcmV0
dXJuIG1JbnB1dExheW91dENhY2hlLmFwcGx5VmVydGV4QnVmZmVycyhhdHRyaWJ1dGVzLCBwcm9n
cmFtQmluYXJ5KTsKK30KKworR0xlbnVtIFJlbmRlcmVyMTE6OmFwcGx5SW5kZXhCdWZmZXIoY29u
c3QgR0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIsIEdMc2l6
ZWkgY291bnQsIEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgVHJhbnNsYXRlZEluZGV4RGF0YSAq
aW5kZXhJbmZvKQoreworICAgIEdMZW51bSBlcnIgPSBtSW5kZXhEYXRhTWFuYWdlci0+cHJlcGFy
ZUluZGV4RGF0YSh0eXBlLCBjb3VudCwgZWxlbWVudEFycmF5QnVmZmVyLCBpbmRpY2VzLCBpbmRl
eEluZm8pOworCisgICAgaWYgKGVyciA9PSBHTF9OT19FUlJPUikKKyAgICB7CisgICAgICAgIGlm
IChpbmRleEluZm8tPnN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpbmRleElu
Zm8tPnNlcmlhbCAhPSBtQXBwbGllZFN0b3JhZ2VJQlNlcmlhbCB8fCBpbmRleEluZm8tPnN0YXJ0
T2Zmc2V0ICE9IG1BcHBsaWVkSUJPZmZzZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgQnVmZmVyU3RvcmFnZTExICpzdG9yYWdlID0gQnVmZmVyU3RvcmFnZTExOjptYWtlQnVmZmVy
U3RvcmFnZTExKGluZGV4SW5mby0+c3RvcmFnZSk7CisgICAgICAgICAgICAgICAgSW5kZXhCdWZm
ZXIxMSogaW5kZXhCdWZmZXIgPSBJbmRleEJ1ZmZlcjExOjptYWtlSW5kZXhCdWZmZXIxMShpbmRl
eEluZm8tPmluZGV4QnVmZmVyKTsKKworICAgICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5J
QVNldEluZGV4QnVmZmVyKHN0b3JhZ2UtPmdldEJ1ZmZlcigpLCBpbmRleEJ1ZmZlci0+Z2V0SW5k
ZXhGb3JtYXQoKSwgaW5kZXhJbmZvLT5zdGFydE9mZnNldCk7CisKKyAgICAgICAgICAgICAgICBt
QXBwbGllZElCU2VyaWFsID0gMDsKKyAgICAgICAgICAgICAgICBtQXBwbGllZFN0b3JhZ2VJQlNl
cmlhbCA9IHN0b3JhZ2UtPmdldFNlcmlhbCgpOworICAgICAgICAgICAgICAgIG1BcHBsaWVkSUJP
ZmZzZXQgPSBpbmRleEluZm8tPnN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGVsc2UgaWYgKGluZGV4SW5mby0+c2VyaWFsICE9IG1BcHBsaWVkSUJTZXJpYWwg
fHwgaW5kZXhJbmZvLT5zdGFydE9mZnNldCAhPSBtQXBwbGllZElCT2Zmc2V0KQorICAgICAgICB7
CisgICAgICAgICAgICBJbmRleEJ1ZmZlcjExKiBpbmRleEJ1ZmZlciA9IEluZGV4QnVmZmVyMTE6
Om1ha2VJbmRleEJ1ZmZlcjExKGluZGV4SW5mby0+aW5kZXhCdWZmZXIpOworCisgICAgICAgICAg
ICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbmRleEJ1ZmZlcihpbmRleEJ1ZmZlci0+Z2V0QnVmZmVy
KCksIGluZGV4QnVmZmVyLT5nZXRJbmRleEZvcm1hdCgpLCBpbmRleEluZm8tPnN0YXJ0T2Zmc2V0
KTsKKworICAgICAgICAgICAgbUFwcGxpZWRJQlNlcmlhbCA9IGluZGV4SW5mby0+c2VyaWFsOwor
ICAgICAgICAgICAgbUFwcGxpZWRTdG9yYWdlSUJTZXJpYWwgPSAwOworICAgICAgICAgICAgbUFw
cGxpZWRJQk9mZnNldCA9IGluZGV4SW5mby0+c3RhcnRPZmZzZXQ7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gZXJyOworfQorCit2b2lkIFJlbmRlcmVyMTE6OmRyYXdBcnJheXMoR0xl
bnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKQoreworICAgIGlmICht
b2RlID09IEdMX0xJTkVfTE9PUCkKKyAgICB7CisgICAgICAgIGRyYXdMaW5lTG9vcChjb3VudCwg
R0xfTk9ORSwgTlVMTCwgMCwgTlVMTCk7CisgICAgfQorICAgIGVsc2UgaWYgKG1vZGUgPT0gR0xf
VFJJQU5HTEVfRkFOKQorICAgIHsKKyAgICAgICAgZHJhd1RyaWFuZ2xlRmFuKGNvdW50LCBHTF9O
T05FLCBOVUxMLCAwLCBOVUxMLCBpbnN0YW5jZXMpOworICAgIH0KKyAgICBlbHNlIGlmIChpbnN0
YW5jZXMgPiAwKQorICAgIHsKKyAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbnN0YW5jZWQo
Y291bnQsIGluc3RhbmNlcywgMCwgMCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IG1EZXZpY2VDb250ZXh0LT5EcmF3KGNvdW50LCAwKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVy
ZXIxMTo6ZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlw
ZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIs
IGNvbnN0IFRyYW5zbGF0ZWRJbmRleERhdGEgJmluZGV4SW5mbywgR0xzaXplaSBpbnN0YW5jZXMp
Cit7CisgICAgaWYgKG1vZGUgPT0gR0xfTElORV9MT09QKQorICAgIHsKKyAgICAgICAgZHJhd0xp
bmVMb29wKGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbmRleEluZm8ubWluSW5kZXgsIGVsZW1lbnRB
cnJheUJ1ZmZlcik7CisgICAgfQorICAgIGVsc2UgaWYgKG1vZGUgPT0gR0xfVFJJQU5HTEVfRkFO
KQorICAgIHsKKyAgICAgICAgZHJhd1RyaWFuZ2xlRmFuKGNvdW50LCB0eXBlLCBpbmRpY2VzLCBp
bmRleEluZm8ubWluSW5kZXgsIGVsZW1lbnRBcnJheUJ1ZmZlciwgaW5zdGFuY2VzKTsKKyAgICB9
CisgICAgZWxzZSBpZiAoaW5zdGFuY2VzID4gMCkKKyAgICB7CisgICAgICAgIG1EZXZpY2VDb250
ZXh0LT5EcmF3SW5kZXhlZEluc3RhbmNlZChjb3VudCwgaW5zdGFuY2VzLCAwLCAtc3RhdGljX2Nh
c3Q8aW50PihpbmRleEluZm8ubWluSW5kZXgpLCAwKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbmRleGVkKGNvdW50LCAwLCAtc3RhdGljX2Nh
c3Q8aW50PihpbmRleEluZm8ubWluSW5kZXgpKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyZXIx
MTo6ZHJhd0xpbmVMb29wKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQg
KmluZGljZXMsIGludCBtaW5JbmRleCwgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyKQor
eworICAgIC8vIEdldCB0aGUgcmF3IGluZGljZXMgZm9yIGFuIGluZGV4ZWQgZHJhdworICAgIGlm
ICh0eXBlICE9IEdMX05PTkUgJiYgZWxlbWVudEFycmF5QnVmZmVyKQorICAgIHsKKyAgICAgICAg
Z2w6OkJ1ZmZlciAqaW5kZXhCdWZmZXIgPSBlbGVtZW50QXJyYXlCdWZmZXI7CisgICAgICAgIEJ1
ZmZlclN0b3JhZ2UgKnN0b3JhZ2UgPSBpbmRleEJ1ZmZlci0+Z2V0U3RvcmFnZSgpOworICAgICAg
ICBpbnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PGludHB0cl90PihpbmRpY2VzKTsK
KyAgICAgICAgaW5kaWNlcyA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihzdG9yYWdlLT5n
ZXREYXRhKCkpICsgb2Zmc2V0OworICAgIH0KKworICAgIGlmICghbUxpbmVMb29wSUIpCisgICAg
eworICAgICAgICBtTGluZUxvb3BJQiA9IG5ldyBTdHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFj
ZSh0aGlzKTsKKyAgICAgICAgaWYgKCFtTGluZUxvb3BJQi0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKElO
SVRJQUxfSU5ERVhfQlVGRkVSX1NJWkUsIEdMX1VOU0lHTkVEX0lOVCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlbGV0ZSBtTGluZUxvb3BJQjsKKyAgICAgICAgICAgIG1MaW5lTG9vcElCID0g
TlVMTDsKKworICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGEgMzItYml0IGxvb3Bp
bmcgaW5kZXggYnVmZmVyIGZvciBHTF9MSU5FX0xPT1AuIik7CisgICAgICAgICAgICByZXR1cm4g
Z2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQgKyAxKSA+IChzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkIGludD46Om1heCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGludCkpKQorICAgIHsK
KyAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGEgMzItYml0IGxvb3BpbmcgaW5kZXggYnVm
ZmVyIGZvciBHTF9MSU5FX0xPT1AsIHRvbyBtYW55IGluZGljZXMgcmVxdWlyZWQuIik7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgY29u
c3QgdW5zaWduZWQgaW50IHNwYWNlTmVlZGVkID0gKGNvdW50ICsgMSkgKiBzaXplb2YodW5zaWdu
ZWQgaW50KTsKKyAgICBpZiAoIW1MaW5lTG9vcElCLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VO
ZWVkZWQsIEdMX1VOU0lHTkVEX0lOVCkpCisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5vdCBy
ZXNlcnZlIGVub3VnaCBzcGFjZSBpbiBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9M
T09QLiIpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAg
IH0KKworICAgIHZvaWQqIG1hcHBlZE1lbW9yeSA9IE5VTEw7CisgICAgaW50IG9mZnNldCA9IG1M
aW5lTG9vcElCLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnkpOworICAgIGlm
IChvZmZzZXQgPT0gLTEgfHwgbWFwcGVkTWVtb3J5ID09IE5VTEwpCisgICAgeworICAgICAgICBF
UlIoIkNvdWxkIG5vdCBtYXAgaW5kZXggYnVmZmVyIGZvciBHTF9MSU5FX0xPT1AuIik7CisgICAg
ICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgdW5z
aWduZWQgaW50ICpkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihtYXBwZWRN
ZW1vcnkpOworICAgIHVuc2lnbmVkIGludCBpbmRleEJ1ZmZlck9mZnNldCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkIGludD4ob2Zmc2V0KTsKKworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAg
ICBjYXNlIEdMX05PTkU6ICAgLy8gTm9uLWluZGV4ZWQgZHJhdworICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFbaV0gPSBp
OworICAgICAgICB9CisgICAgICAgIGRhdGFbY291bnRdID0gMDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
Y291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0
PGNvbnN0IEdMdWJ5dGUqPihpbmRpY2VzKVtpXTsKKyAgICAgICAgfQorICAgICAgICBkYXRhW2Nv
dW50XSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihpbmRpY2VzKVswXTsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFbaV0gPSBz
dGF0aWNfY2FzdDxjb25zdCBHTHVzaG9ydCo+KGluZGljZXMpW2ldOworICAgICAgICB9CisgICAg
ICAgIGRhdGFbY291bnRdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1c2hvcnQqPihpbmRpY2VzKVsw
XTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBk
YXRhW2ldID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNlcylbaV07CisgICAgICAg
IH0KKyAgICAgICAgZGF0YVtjb3VudF0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVpbnQqPihpbmRp
Y2VzKVswXTsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwor
ICAgIH0KKworICAgIGlmICghbUxpbmVMb29wSUItPnVubWFwQnVmZmVyKCkpCisgICAgeworICAg
ICAgICBFUlIoIkNvdWxkIG5vdCB1bm1hcCBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9PUC4i
KTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9CisK
KyAgICBpZiAobUFwcGxpZWRJQlNlcmlhbCAhPSBtTGluZUxvb3BJQi0+Z2V0U2VyaWFsKCkgfHwg
bUFwcGxpZWRJQk9mZnNldCAhPSBpbmRleEJ1ZmZlck9mZnNldCkKKyAgICB7CisgICAgICAgIElu
ZGV4QnVmZmVyMTEgKmluZGV4QnVmZmVyID0gSW5kZXhCdWZmZXIxMTo6bWFrZUluZGV4QnVmZmVy
MTEobUxpbmVMb29wSUItPmdldEluZGV4QnVmZmVyKCkpOworCisgICAgICAgIG1EZXZpY2VDb250
ZXh0LT5JQVNldEluZGV4QnVmZmVyKGluZGV4QnVmZmVyLT5nZXRCdWZmZXIoKSwgaW5kZXhCdWZm
ZXItPmdldEluZGV4Rm9ybWF0KCksIGluZGV4QnVmZmVyT2Zmc2V0KTsKKyAgICAgICAgbUFwcGxp
ZWRJQlNlcmlhbCA9IG1MaW5lTG9vcElCLT5nZXRTZXJpYWwoKTsKKyAgICAgICAgbUFwcGxpZWRT
dG9yYWdlSUJTZXJpYWwgPSAwOworICAgICAgICBtQXBwbGllZElCT2Zmc2V0ID0gaW5kZXhCdWZm
ZXJPZmZzZXQ7CisgICAgfQorCisgICAgbURldmljZUNvbnRleHQtPkRyYXdJbmRleGVkKGNvdW50
ICsgMSwgMCwgLW1pbkluZGV4KTsKK30KKwordm9pZCBSZW5kZXJlcjExOjpkcmF3VHJpYW5nbGVG
YW4oR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgaW50
IG1pbkluZGV4LCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIsIGludCBpbnN0YW5jZXMp
Cit7CisgICAgLy8gR2V0IHRoZSByYXcgaW5kaWNlcyBmb3IgYW4gaW5kZXhlZCBkcmF3CisgICAg
aWYgKHR5cGUgIT0gR0xfTk9ORSAmJiBlbGVtZW50QXJyYXlCdWZmZXIpCisgICAgeworICAgICAg
ICBnbDo6QnVmZmVyICppbmRleEJ1ZmZlciA9IGVsZW1lbnRBcnJheUJ1ZmZlcjsKKyAgICAgICAg
QnVmZmVyU3RvcmFnZSAqc3RvcmFnZSA9IGluZGV4QnVmZmVyLT5nZXRTdG9yYWdlKCk7CisgICAg
ICAgIGludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluZGljZXMp
OworICAgICAgICBpbmRpY2VzID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KHN0b3JhZ2Ut
PmdldERhdGEoKSkgKyBvZmZzZXQ7CisgICAgfQorCisgICAgaWYgKCFtVHJpYW5nbGVGYW5JQikK
KyAgICB7CisgICAgICAgIG1UcmlhbmdsZUZhbklCID0gbmV3IFN0cmVhbWluZ0luZGV4QnVmZmVy
SW50ZXJmYWNlKHRoaXMpOworICAgICAgICBpZiAoIW1UcmlhbmdsZUZhbklCLT5yZXNlcnZlQnVm
ZmVyU3BhY2UoSU5JVElBTF9JTkRFWF9CVUZGRVJfU0laRSwgR0xfVU5TSUdORURfSU5UKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVsZXRlIG1UcmlhbmdsZUZhbklCOworICAgICAgICAgICAg
bVRyaWFuZ2xlRmFuSUIgPSBOVUxMOworCisgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVh
dGUgYSBzY3JhdGNoIGluZGV4IGJ1ZmZlciBmb3IgR0xfVFJJQU5HTEVfRkFOLiIpOworICAgICAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBudW1UcmlzID0gY291bnQgLSAyOworCisgICAg
aWYgKG51bVRyaXMgKiAzID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4
KCkgLyBzaXplb2YodW5zaWduZWQgaW50KSkpCisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5v
dCBjcmVhdGUgYSBzY3JhdGNoIGluZGV4IGJ1ZmZlciBmb3IgR0xfVFJJQU5HTEVfRkFOLCB0b28g
bWFueSBpbmRpY2VzIHJlcXVpcmVkLiIpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBzcGFjZU5lZWRl
ZCA9IChudW1UcmlzICogMykgKiBzaXplb2YodW5zaWduZWQgaW50KTsKKyAgICBpZiAoIW1Ucmlh
bmdsZUZhbklCLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lHTkVEX0lO
VCkpCisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5vdCByZXNlcnZlIGVub3VnaCBzcGFjZSBp
biBzY3JhdGNoIGluZGV4IGJ1ZmZlciBmb3IgR0xfVFJJQU5HTEVfRkFOLiIpOworICAgICAgICBy
ZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KKworICAgIHZvaWQqIG1h
cHBlZE1lbW9yeSA9IE5VTEw7CisgICAgaW50IG9mZnNldCA9IG1UcmlhbmdsZUZhbklCLT5tYXBC
dWZmZXIoc3BhY2VOZWVkZWQsICZtYXBwZWRNZW1vcnkpOworICAgIGlmIChvZmZzZXQgPT0gLTEg
fHwgbWFwcGVkTWVtb3J5ID09IE5VTEwpCisgICAgeworICAgICAgICBFUlIoIkNvdWxkIG5vdCBt
YXAgc2NyYXRjaCBpbmRleCBidWZmZXIgZm9yIEdMX1RSSUFOR0xFX0ZBTi4iKTsKKyAgICAgICAg
cmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9CisKKyAgICB1bnNpZ25l
ZCBpbnQgKmRhdGEgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGludCo+KG1hcHBlZE1lbW9y
eSk7CisgICAgdW5zaWduZWQgaW50IGluZGV4QnVmZmVyT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50PihvZmZzZXQpOworCisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgIGNh
c2UgR0xfTk9ORTogICAvLyBOb24taW5kZXhlZCBkcmF3CisgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgbnVtVHJpczsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBkYXRh
W2kqMyArIDBdID0gMDsKKyAgICAgICAgICAgIGRhdGFbaSozICsgMV0gPSBpICsgMTsKKyAgICAg
ICAgICAgIGRhdGFbaSozICsgMl0gPSBpICsgMjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBudW1UcmlzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFbaSoz
ICsgMF0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5kaWNlcylbMF07CisgICAgICAg
ICAgICBkYXRhW2kqMyArIDFdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KGluZGljZXMp
W2kgKyAxXTsKKyAgICAgICAgICAgIGRhdGFbaSozICsgMl0gPSBzdGF0aWNfY2FzdDxjb25zdCBH
THVieXRlKj4oaW5kaWNlcylbaSArIDJdOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBudW1UcmlzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRhdGFbaSozICsg
MF0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVzaG9ydCo+KGluZGljZXMpWzBdOworICAgICAgICAg
ICAgZGF0YVtpKjMgKyAxXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNlcylb
aSArIDFdOworICAgICAgICAgICAgZGF0YVtpKjMgKyAyXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdM
dXNob3J0Kj4oaW5kaWNlcylbaSArIDJdOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgbnVtVHJpczsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBkYXRhW2kqMyArIDBd
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNlcylbMF07CisgICAgICAgICAgICBk
YXRhW2kqMyArIDFdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNlcylbaSArIDFd
OworICAgICAgICAgICAgZGF0YVtpKjMgKyAyXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWludCo+
KGluZGljZXMpW2kgKyAyXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1
bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgaWYgKCFtVHJpYW5nbGVGYW5JQi0+dW5t
YXBCdWZmZXIoKSkKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IHVubWFwIHNjcmF0Y2gg
aW5kZXggYnVmZmVyIGZvciBHTF9UUklBTkdMRV9GQU4uIik7CisgICAgICAgIHJldHVybiBnbDo6
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorCisgICAgaWYgKG1BcHBsaWVkSUJTZXJp
YWwgIT0gbVRyaWFuZ2xlRmFuSUItPmdldFNlcmlhbCgpIHx8IG1BcHBsaWVkSUJPZmZzZXQgIT0g
aW5kZXhCdWZmZXJPZmZzZXQpCisgICAgeworICAgICAgICBJbmRleEJ1ZmZlcjExICppbmRleEJ1
ZmZlciA9IEluZGV4QnVmZmVyMTE6Om1ha2VJbmRleEJ1ZmZlcjExKG1UcmlhbmdsZUZhbklCLT5n
ZXRJbmRleEJ1ZmZlcigpKTsKKworICAgICAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbmRleEJ1
ZmZlcihpbmRleEJ1ZmZlci0+Z2V0QnVmZmVyKCksIGluZGV4QnVmZmVyLT5nZXRJbmRleEZvcm1h
dCgpLCBpbmRleEJ1ZmZlck9mZnNldCk7CisgICAgICAgIG1BcHBsaWVkSUJTZXJpYWwgPSBtVHJp
YW5nbGVGYW5JQi0+Z2V0U2VyaWFsKCk7CisgICAgICAgIG1BcHBsaWVkU3RvcmFnZUlCU2VyaWFs
ID0gMDsKKyAgICAgICAgbUFwcGxpZWRJQk9mZnNldCA9IGluZGV4QnVmZmVyT2Zmc2V0OworICAg
IH0KKworICAgIGlmIChpbnN0YW5jZXMgPiAwKQorICAgIHsKKyAgICAgICAgbURldmljZUNvbnRl
eHQtPkRyYXdJbmRleGVkSW5zdGFuY2VkKG51bVRyaXMgKiAzLCBpbnN0YW5jZXMsIDAsIC1taW5J
bmRleCwgMCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1EZXZpY2VDb250ZXh0
LT5EcmF3SW5kZXhlZChudW1UcmlzICogMywgMCwgLW1pbkluZGV4KTsKKyAgICB9Cit9CisKK3Zv
aWQgUmVuZGVyZXIxMTo6YXBwbHlTaGFkZXJzKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmlu
YXJ5KQoreworICAgIHVuc2lnbmVkIGludCBwcm9ncmFtQmluYXJ5U2VyaWFsID0gcHJvZ3JhbUJp
bmFyeS0+Z2V0U2VyaWFsKCk7CisgICAgY29uc3QgYm9vbCB1cGRhdGVQcm9ncmFtU3RhdGUgPSAo
cHJvZ3JhbUJpbmFyeVNlcmlhbCAhPSBtQXBwbGllZFByb2dyYW1CaW5hcnlTZXJpYWwpOworCisg
ICAgaWYgKHVwZGF0ZVByb2dyYW1TdGF0ZSkKKyAgICB7CisgICAgICAgIFNoYWRlckV4ZWN1dGFi
bGUgKnZlcnRleEV4ZSA9IHByb2dyYW1CaW5hcnktPmdldFZlcnRleEV4ZWN1dGFibGUoKTsKKyAg
ICAgICAgU2hhZGVyRXhlY3V0YWJsZSAqcGl4ZWxFeGUgPSBwcm9ncmFtQmluYXJ5LT5nZXRQaXhl
bEV4ZWN1dGFibGUoKTsKKworICAgICAgICBJRDNEMTFWZXJ0ZXhTaGFkZXIgKnZlcnRleFNoYWRl
ciA9IE5VTEw7CisgICAgICAgIGlmICh2ZXJ0ZXhFeGUpIHZlcnRleFNoYWRlciA9IFNoYWRlckV4
ZWN1dGFibGUxMTo6bWFrZVNoYWRlckV4ZWN1dGFibGUxMSh2ZXJ0ZXhFeGUpLT5nZXRWZXJ0ZXhT
aGFkZXIoKTsKKworICAgICAgICBJRDNEMTFQaXhlbFNoYWRlciAqcGl4ZWxTaGFkZXIgPSBOVUxM
OworICAgICAgICBpZiAocGl4ZWxFeGUpIHBpeGVsU2hhZGVyID0gU2hhZGVyRXhlY3V0YWJsZTEx
OjptYWtlU2hhZGVyRXhlY3V0YWJsZTExKHBpeGVsRXhlKS0+Z2V0UGl4ZWxTaGFkZXIoKTsKKwor
ICAgICAgICBtRGV2aWNlQ29udGV4dC0+UFNTZXRTaGFkZXIocGl4ZWxTaGFkZXIsIE5VTEwsIDAp
OworICAgICAgICBtRGV2aWNlQ29udGV4dC0+VlNTZXRTaGFkZXIodmVydGV4U2hhZGVyLCBOVUxM
LCAwKTsKKworICAgICAgICBwcm9ncmFtQmluYXJ5LT5kaXJ0eUFsbFVuaWZvcm1zKCk7CisKKyAg
ICAgICAgbUFwcGxpZWRQcm9ncmFtQmluYXJ5U2VyaWFsID0gcHJvZ3JhbUJpbmFyeVNlcmlhbDsK
KyAgICB9CisKKyAgICAvLyBPbmx5IHVzZSB0aGUgZ2VvbWV0cnkgc2hhZGVyIGN1cnJlbnRseSBm
b3IgcG9pbnQgc3ByaXRlIGRyYXdpbmcKKyAgICBjb25zdCBib29sIHVzZXNHZW9tZXRyeVNoYWRl
ciA9IChwcm9ncmFtQmluYXJ5LT51c2VzR2VvbWV0cnlTaGFkZXIoKSAmJiBtQ3VyUmFzdGVyU3Rh
dGUucG9pbnREcmF3TW9kZSk7CisKKyAgICBpZiAodXBkYXRlUHJvZ3JhbVN0YXRlIHx8IHVzZXNH
ZW9tZXRyeVNoYWRlciAhPSBtSXNHZW9tZXRyeVNoYWRlckFjdGl2ZSkKKyAgICB7CisgICAgICAg
IGlmICh1c2VzR2VvbWV0cnlTaGFkZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNoYWRlckV4
ZWN1dGFibGUgKmdlb21ldHJ5RXhlID0gcHJvZ3JhbUJpbmFyeS0+Z2V0R2VvbWV0cnlFeGVjdXRh
YmxlKCk7CisgICAgICAgICAgICBJRDNEMTFHZW9tZXRyeVNoYWRlciAqZ2VvbWV0cnlTaGFkZXIg
PSBTaGFkZXJFeGVjdXRhYmxlMTE6Om1ha2VTaGFkZXJFeGVjdXRhYmxlMTEoZ2VvbWV0cnlFeGUp
LT5nZXRHZW9tZXRyeVNoYWRlcigpOworICAgICAgICAgICAgbURldmljZUNvbnRleHQtPkdTU2V0
U2hhZGVyKGdlb21ldHJ5U2hhZGVyLCBOVUxMLCAwKTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5HU1NldFNoYWRlcihOVUxM
LCBOVUxMLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIG1Jc0dlb21ldHJ5U2hhZGVyQWN0aXZl
ID0gdXNlc0dlb21ldHJ5U2hhZGVyOworICAgIH0KK30KKwordm9pZCBSZW5kZXJlcjExOjphcHBs
eVVuaWZvcm1zKGdsOjpQcm9ncmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5LCBnbDo6VW5pZm9ybUFy
cmF5ICp1bmlmb3JtQXJyYXkpCit7CisgICAgU2hhZGVyRXhlY3V0YWJsZTExICp2ZXJ0ZXhFeGVj
dXRhYmxlID0gU2hhZGVyRXhlY3V0YWJsZTExOjptYWtlU2hhZGVyRXhlY3V0YWJsZTExKHByb2dy
YW1CaW5hcnktPmdldFZlcnRleEV4ZWN1dGFibGUoKSk7CisgICAgU2hhZGVyRXhlY3V0YWJsZTEx
ICpwaXhlbEV4ZWN1dGFibGUgPSBTaGFkZXJFeGVjdXRhYmxlMTE6Om1ha2VTaGFkZXJFeGVjdXRh
YmxlMTEocHJvZ3JhbUJpbmFyeS0+Z2V0UGl4ZWxFeGVjdXRhYmxlKCkpOworCisgICAgdW5zaWdu
ZWQgaW50IHRvdGFsUmVnaXN0ZXJDb3VudFZTID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgdG90YWxS
ZWdpc3RlckNvdW50UFMgPSAwOworCisgICAgYm9vbCB2ZXJ0ZXhVbmlmb3Jtc0RpcnR5ID0gZmFs
c2U7CisgICAgYm9vbCBwaXhlbFVuaWZvcm1zRGlydHkgPSBmYWxzZTsKKworICAgIGZvciAoZ2w6
OlVuaWZvcm1BcnJheTo6Y29uc3RfaXRlcmF0b3IgdW5pZm9ybV9pdGVyYXRvciA9IHVuaWZvcm1B
cnJheS0+YmVnaW4oKTsgdW5pZm9ybV9pdGVyYXRvciAhPSB1bmlmb3JtQXJyYXktPmVuZCgpOyB1
bmlmb3JtX2l0ZXJhdG9yKyspCisgICAgeworICAgICAgICBjb25zdCBnbDo6VW5pZm9ybSAqdW5p
Zm9ybSA9ICp1bmlmb3JtX2l0ZXJhdG9yOworCisgICAgICAgIGlmICh1bmlmb3JtLT52c1JlZ2lz
dGVySW5kZXggPj0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgdG90YWxSZWdpc3RlckNvdW50
VlMgKz0gdW5pZm9ybS0+cmVnaXN0ZXJDb3VudDsKKyAgICAgICAgICAgIHZlcnRleFVuaWZvcm1z
RGlydHkgPSB2ZXJ0ZXhVbmlmb3Jtc0RpcnR5IHx8IHVuaWZvcm0tPmRpcnR5OworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHVuaWZvcm0tPnBzUmVnaXN0ZXJJbmRleCA+PSAwKQorICAgICAgICB7
CisgICAgICAgICAgICB0b3RhbFJlZ2lzdGVyQ291bnRQUyArPSB1bmlmb3JtLT5yZWdpc3RlckNv
dW50OworICAgICAgICAgICAgcGl4ZWxVbmlmb3Jtc0RpcnR5ID0gcGl4ZWxVbmlmb3Jtc0RpcnR5
IHx8IHVuaWZvcm0tPmRpcnR5OworICAgICAgICB9CisgICAgfQorCisgICAgSUQzRDExQnVmZmVy
ICp2ZXJ0ZXhDb25zdGFudEJ1ZmZlciA9IHZlcnRleEV4ZWN1dGFibGUtPmdldENvbnN0YW50QnVm
ZmVyKG1EZXZpY2UsIHRvdGFsUmVnaXN0ZXJDb3VudFZTKTsKKyAgICBJRDNEMTFCdWZmZXIgKnBp
eGVsQ29uc3RhbnRCdWZmZXIgPSBwaXhlbEV4ZWN1dGFibGUtPmdldENvbnN0YW50QnVmZmVyKG1E
ZXZpY2UsIHRvdGFsUmVnaXN0ZXJDb3VudFBTKTsKKworICAgIGZsb2F0ICgqbWFwVlMpWzRdID0g
TlVMTDsKKyAgICBmbG9hdCAoKm1hcFBTKVs0XSA9IE5VTEw7CisKKyAgICBpZiAodG90YWxSZWdp
c3RlckNvdW50VlMgPiAwICYmIHZlcnRleFVuaWZvcm1zRGlydHkpCisgICAgeworICAgICAgICBE
M0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwID0gezB9OworICAgICAgICBIUkVTVUxUIHJlc3Vs
dCA9IG1EZXZpY2VDb250ZXh0LT5NYXAodmVydGV4Q29uc3RhbnRCdWZmZXIsIDAsIEQzRDExX01B
UF9XUklURV9ESVNDQVJELCAwLCAmbWFwKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1
bHQpKTsKKyAgICAgICAgbWFwVlMgPSAoZmxvYXQoKilbNF0pbWFwLnBEYXRhOworICAgIH0KKwor
ICAgIGlmICh0b3RhbFJlZ2lzdGVyQ291bnRQUyA+IDAgJiYgcGl4ZWxVbmlmb3Jtc0RpcnR5KQor
ICAgIHsKKyAgICAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcCA9IHswfTsKKyAgICAg
ICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlQ29udGV4dC0+TWFwKHBpeGVsQ29uc3RhbnRCdWZm
ZXIsIDAsIEQzRDExX01BUF9XUklURV9ESVNDQVJELCAwLCAmbWFwKTsKKyAgICAgICAgQVNTRVJU
KFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgbWFwUFMgPSAoZmxvYXQoKilbNF0pbWFwLnBE
YXRhOworICAgIH0KKworICAgIGZvciAoZ2w6OlVuaWZvcm1BcnJheTo6aXRlcmF0b3IgdW5pZm9y
bV9pdGVyYXRvciA9IHVuaWZvcm1BcnJheS0+YmVnaW4oKTsgdW5pZm9ybV9pdGVyYXRvciAhPSB1
bmlmb3JtQXJyYXktPmVuZCgpOyB1bmlmb3JtX2l0ZXJhdG9yKyspCisgICAgeworICAgICAgICBn
bDo6VW5pZm9ybSAqdW5pZm9ybSA9ICp1bmlmb3JtX2l0ZXJhdG9yOworCisgICAgICAgIGlmICh1
bmlmb3JtLT50eXBlICE9ICBHTF9TQU1QTEVSXzJEICYmIHVuaWZvcm0tPnR5cGUgIT0gR0xfU0FN
UExFUl9DVUJFKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodW5pZm9ybS0+dnNSZWdpc3Rl
ckluZGV4ID49IDAgJiYgbWFwVlMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWVt
Y3B5KG1hcFZTICsgdW5pZm9ybS0+dnNSZWdpc3RlckluZGV4LCB1bmlmb3JtLT5kYXRhLCB1bmlm
b3JtLT5yZWdpc3RlckNvdW50ICogc2l6ZW9mKGZsb2F0WzRdKSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmICh1bmlmb3JtLT5wc1JlZ2lzdGVySW5kZXggPj0gMCAmJiBtYXBQUykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtZW1jcHkobWFwUFMgKyB1bmlmb3JtLT5w
c1JlZ2lzdGVySW5kZXgsIHVuaWZvcm0tPmRhdGEsIHVuaWZvcm0tPnJlZ2lzdGVyQ291bnQgKiBz
aXplb2YoZmxvYXRbNF0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHVu
aWZvcm0tPmRpcnR5ID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1hcFZTKQorICAgIHsKKyAg
ICAgICAgbURldmljZUNvbnRleHQtPlVubWFwKHZlcnRleENvbnN0YW50QnVmZmVyLCAwKTsKKyAg
ICB9CisKKyAgICBpZiAobWFwUFMpCisgICAgeworICAgICAgICBtRGV2aWNlQ29udGV4dC0+VW5t
YXAocGl4ZWxDb25zdGFudEJ1ZmZlciwgMCk7CisgICAgfQorICAgIAorICAgIG1EZXZpY2VDb250
ZXh0LT5WU1NldENvbnN0YW50QnVmZmVycygwLCAxLCAmdmVydGV4Q29uc3RhbnRCdWZmZXIpOwor
ICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldENvbnN0YW50QnVmZmVycygwLCAxLCAmcGl4ZWxDb25z
dGFudEJ1ZmZlcik7CisKKyAgICAvLyBEcml2ZXIgdW5pZm9ybXMKKyAgICBpZiAoIW1Ecml2ZXJD
b25zdGFudEJ1ZmZlclZTKQorICAgIHsKKyAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgY29uc3Rh
bnRCdWZmZXJEZXNjcmlwdGlvbiA9IHswfTsKKyAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlw
dGlvbi5CeXRlV2lkdGggPSBzaXplb2YoZHhfVmVydGV4Q29uc3RhbnRzKTsKKyAgICAgICAgY29u
c3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAg
ICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uQmluZEZsYWdzID0gRDNEMTFfQklORF9DT05T
VEFOVF9CVUZGRVI7CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uQ1BVQWNjZXNz
RmxhZ3MgPSAwOworICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLk1pc2NGbGFncyA9
IDA7CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uU3RydWN0dXJlQnl0ZVN0cmlk
ZSA9IDA7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVCdWZmZXIo
JmNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24sIE5VTEwsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJW
Uyk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgbURldmlj
ZUNvbnRleHQtPlZTU2V0Q29uc3RhbnRCdWZmZXJzKDEsIDEsICZtRHJpdmVyQ29uc3RhbnRCdWZm
ZXJWUyk7CisgICAgfQorCisgICAgaWYgKCFtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUykKKyAgICB7
CisgICAgICAgIEQzRDExX0JVRkZFUl9ERVNDIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24gPSB7
MH07CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uQnl0ZVdpZHRoID0gc2l6ZW9m
KGR4X1BpeGVsQ29uc3RhbnRzKTsKKyAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5V
c2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3Jp
cHRpb24uQmluZEZsYWdzID0gRDNEMTFfQklORF9DT05TVEFOVF9CVUZGRVI7CisgICAgICAgIGNv
bnN0YW50QnVmZmVyRGVzY3JpcHRpb24uQ1BVQWNjZXNzRmxhZ3MgPSAwOworICAgICAgICBjb25z
dGFudEJ1ZmZlckRlc2NyaXB0aW9uLk1pc2NGbGFncyA9IDA7CisgICAgICAgIGNvbnN0YW50QnVm
ZmVyRGVzY3JpcHRpb24uU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7CisKKyAgICAgICAgSFJFU1VM
VCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVCdWZmZXIoJmNvbnN0YW50QnVmZmVyRGVzY3JpcHRp
b24sIE5VTEwsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUyk7CisgICAgICAgIEFTU0VSVChTVUND
RUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgbURldmljZUNvbnRleHQtPlBTU2V0Q29uc3RhbnRC
dWZmZXJzKDEsIDEsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUyk7CisgICAgfQorCisgICAgaWYg
KG1lbWNtcCgmbVZlcnRleENvbnN0YW50cywgJm1BcHBsaWVkVmVydGV4Q29uc3RhbnRzLCBzaXpl
b2YoZHhfVmVydGV4Q29uc3RhbnRzKSkgIT0gMCkKKyAgICB7CisgICAgICAgIG1EZXZpY2VDb250
ZXh0LT5VcGRhdGVTdWJyZXNvdXJjZShtRHJpdmVyQ29uc3RhbnRCdWZmZXJWUywgMCwgTlVMTCwg
Jm1WZXJ0ZXhDb25zdGFudHMsIDE2LCAwKTsKKyAgICAgICAgbWVtY3B5KCZtQXBwbGllZFZlcnRl
eENvbnN0YW50cywgJm1WZXJ0ZXhDb25zdGFudHMsIHNpemVvZihkeF9WZXJ0ZXhDb25zdGFudHMp
KTsKKyAgICB9CisKKyAgICBpZiAobWVtY21wKCZtUGl4ZWxDb25zdGFudHMsICZtQXBwbGllZFBp
eGVsQ29uc3RhbnRzLCBzaXplb2YoZHhfUGl4ZWxDb25zdGFudHMpKSAhPSAwKQorICAgIHsKKyAg
ICAgICAgbURldmljZUNvbnRleHQtPlVwZGF0ZVN1YnJlc291cmNlKG1Ecml2ZXJDb25zdGFudEJ1
ZmZlclBTLCAwLCBOVUxMLCAmbVBpeGVsQ29uc3RhbnRzLCAxNiwgMCk7CisgICAgICAgIG1lbWNw
eSgmbUFwcGxpZWRQaXhlbENvbnN0YW50cywgJm1QaXhlbENvbnN0YW50cywgc2l6ZW9mKGR4X1Bp
eGVsQ29uc3RhbnRzKSk7CisgICAgfQorCisgICAgLy8gbmVlZGVkIGZvciB0aGUgcG9pbnQgc3By
aXRlIGdlb21ldHJ5IHNoYWRlcgorICAgIG1EZXZpY2VDb250ZXh0LT5HU1NldENvbnN0YW50QnVm
ZmVycygwLCAxLCAmbURyaXZlckNvbnN0YW50QnVmZmVyUFMpOworfQorCit2b2lkIFJlbmRlcmVy
MTE6OmNsZWFyKGNvbnN0IGdsOjpDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLCBnbDo6RnJh
bWVidWZmZXIgKmZyYW1lQnVmZmVyKQoreworICAgICBib29sIGFscGhhVW5tYXNrZWQgPSAoZ2w6
OkdldEFscGhhU2l6ZShtUmVuZGVyVGFyZ2V0RGVzYy5mb3JtYXQpID09IDApIHx8IGNsZWFyUGFy
YW1zLmNvbG9yTWFza0FscGhhOworICAgICBib29sIG5lZWRNYXNrZWRDb2xvckNsZWFyID0gKGNs
ZWFyUGFyYW1zLm1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKSAmJgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIShjbGVhclBhcmFtcy5jb2xvck1hc2tSZWQgJiYgY2xlYXJQYXJh
bXMuY29sb3JNYXNrR3JlZW4gJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZSAmJiBhbHBoYVVubWFza2VkKTsKKworICAgICB1bnNp
Z25lZCBpbnQgc3RlbmNpbFVubWFza2VkID0gMHgwOworICAgICBpZiAoZnJhbWVCdWZmZXItPmhh
c1N0ZW5jaWwoKSkKKyAgICAgeworICAgICAgICAgdW5zaWduZWQgaW50IHN0ZW5jaWxTaXplID0g
Z2w6OkdldFN0ZW5jaWxTaXplKGZyYW1lQnVmZmVyLT5nZXRTdGVuY2lsYnVmZmVyKCktPmdldEFj
dHVhbEZvcm1hdCgpKTsKKyAgICAgICAgIHN0ZW5jaWxVbm1hc2tlZCA9ICgweDEgPDwgc3RlbmNp
bFNpemUpIC0gMTsKKyAgICAgfQorICAgICBib29sIG5lZWRNYXNrZWRTdGVuY2lsQ2xlYXIgPSAo
Y2xlYXJQYXJhbXMubWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkgJiYKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1hc2sgJiBz
dGVuY2lsVW5tYXNrZWQpICE9IHN0ZW5jaWxVbm1hc2tlZDsKKworICAgICBib29sIG5lZWRTY2lz
c29yZWRDbGVhciA9IG1TY2lzc29yRW5hYmxlZCAmJiAobUN1clNjaXNzb3IueCA+IDAgfHwgbUN1
clNjaXNzb3IueSA+IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1DdXJTY2lzc29yLnggKyBtQ3VyU2Npc3Nvci53aWR0aCA8IG1SZW5kZXJU
YXJnZXREZXNjLndpZHRoIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtQ3VyU2Npc3Nvci55ICsgbUN1clNjaXNzb3IuaGVpZ2h0IDwgbVJlbmRl
clRhcmdldERlc2MuaGVpZ2h0KTsKKworICAgICBpZiAobmVlZE1hc2tlZENvbG9yQ2xlYXIgfHwg
bmVlZE1hc2tlZFN0ZW5jaWxDbGVhciB8fCBuZWVkU2Npc3NvcmVkQ2xlYXIpCisgICAgIHsKKyAg
ICAgICAgIG1hc2tlZENsZWFyKGNsZWFyUGFyYW1zLCBmcmFtZUJ1ZmZlci0+dXNpbmdFeHRlbmRl
ZERyYXdCdWZmZXJzKCkpOworICAgICB9CisgICAgIGVsc2UKKyAgICAgeworICAgICAgICAgaWYg
KGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKQorICAgICAgICAgeworICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0
YWNobWVudCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTOyBjb2xvckF0dGFj
aG1lbnQrKykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGlmIChmcmFtZUJ1ZmZl
ci0+aXNFbmFibGVkQ29sb3JBdHRhY2htZW50KGNvbG9yQXR0YWNobWVudCkpCisgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKnJlbmRlcmJ1
ZmZlck9iamVjdCA9IGZyYW1lQnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcihjb2xvckF0dGFjaG1lbnQp
OworICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmJ1ZmZlck9iamVjdCkKKyAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldDExICpy
ZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKHJlbmRlcmJ1
ZmZlck9iamVjdC0+Z2V0UmVuZGVyVGFyZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFyZW5kZXJUYXJnZXQpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRVJSKCJyZW5kZXIgdGFyZ2V0IHBvaW50ZXIgdW5leHBlY3RlZGx5
IG51bGwuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFSZW5kZXJU
YXJnZXRWaWV3ICpmcmFtZWJ1ZmZlclJUViA9IHJlbmRlclRhcmdldC0+Z2V0UmVuZGVyVGFyZ2V0
VmlldygpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmcmFtZWJ1ZmZlclJUVikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUlIo
InJlbmRlciB0YXJnZXQgdmlldyBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgY2xlYXJWYWx1ZXNbNF0gPSB7
IGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZS5yZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJQYXJhbXMuY29sb3JDbGVhclZh
bHVlLmdyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZS5ibHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLmNv
bG9yQ2xlYXJWYWx1ZS5hbHBoYSB9OworICAgICAgICAgICAgICAgICAgICAgICAgbURldmljZUNv
bnRleHQtPkNsZWFyUmVuZGVyVGFyZ2V0VmlldyhmcmFtZWJ1ZmZlclJUViwgY2xlYXJWYWx1ZXMp
OworCisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlclJUVi0+UmVsZWFzZSgpOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9ERVBUSF9CVUZG
RVJfQklUIHx8IGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlck9iamVjdCA9
IGZyYW1lQnVmZmVyLT5nZXREZXB0aE9yU3RlbmNpbGJ1ZmZlcigpOworICAgICAgICAgICAgaWYg
KHJlbmRlcmJ1ZmZlck9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBSZW5k
ZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJn
ZXQxMShyZW5kZXJidWZmZXJPYmplY3QtPmdldERlcHRoU3RlbmNpbCgpKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIXJlbmRlclRhcmdldCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIEVSUigicmVuZGVyIHRhcmdldCBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZnJhbWVidWZmZXJEU1YgPSByZW5kZXJU
YXJnZXQtPmdldERlcHRoU3RlbmNpbFZpZXcoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWZyYW1l
YnVmZmVyRFNWKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgRVJSKCJk
ZXB0aCBzdGVuY2lsIHZpZXcgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IFVJTlQgY2xlYXJGbGFncyA9IDA7CisgICAgICAgICAgICAgICAgaWYgKGNsZWFyUGFyYW1zLm1h
c2sgJiBHTF9ERVBUSF9CVUZGRVJfQklUKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2xlYXJGbGFncyB8PSBEM0QxMV9DTEVBUl9ERVBUSDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKGNsZWFyUGFyYW1zLm1hc2sgJiBHTF9TVEVOQ0lMX0JV
RkZFUl9CSVQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjbGVhckZs
YWdzIHw9IEQzRDExX0NMRUFSX1NURU5DSUw7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgZmxvYXQgZGVwdGhDbGVhciA9IGdsOjpjbGFtcDAxKGNsZWFyUGFyYW1zLmRlcHRo
Q2xlYXJWYWx1ZSk7CisgICAgICAgICAgICAgICAgVUlOVDggc3RlbmNpbENsZWFyID0gY2xlYXJQ
YXJhbXMuc3RlbmNpbENsZWFyVmFsdWUgJiAweDAwMDAwMEZGOworCisgICAgICAgICAgICAgICAg
bURldmljZUNvbnRleHQtPkNsZWFyRGVwdGhTdGVuY2lsVmlldyhmcmFtZWJ1ZmZlckRTViwgY2xl
YXJGbGFncywgZGVwdGhDbGVhciwgc3RlbmNpbENsZWFyKTsKKworICAgICAgICAgICAgICAgIGZy
YW1lYnVmZmVyRFNWLT5SZWxlYXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6bWFza2VkQ2xlYXIoY29uc3QgZ2w6OkNsZWFyUGFyYW1l
dGVycyAmY2xlYXJQYXJhbXMsIGJvb2wgdXNpbmdFeHRlbmRlZERyYXdCdWZmZXJzKQoreworICAg
IEhSRVNVTFQgcmVzdWx0OworCisgICAgaWYgKCFtQ2xlYXJSZXNvdXJjZXNJbml0aWFsaXplZCkK
KyAgICB7CisgICAgICAgIEFTU0VSVCghbUNsZWFyVkIgJiYgIW1DbGVhclZTICYmICFtQ2xlYXJT
aW5nbGVQUyAmJiAhbUNsZWFyTXVsdGlwbGVQUyAmJiAhbUNsZWFyU2Npc3NvclJTICYmICFtQ2xl
YXJOb1NjaXNzb3JSUyk7CisKKyAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgdmJEZXNjOworICAg
ICAgICB2YkRlc2MuQnl0ZVdpZHRoID0gc2l6ZW9mKGQzZDExOjpQb3NpdGlvbkRlcHRoQ29sb3JW
ZXJ0ZXgpICogNDsKKyAgICAgICAgdmJEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfRFlOQU1JQzsK
KyAgICAgICAgdmJEZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfVkVSVEVYX0JVRkZFUjsKKyAg
ICAgICAgdmJEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsKKyAg
ICAgICAgdmJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgIHZiRGVzYy5TdHJ1Y3R1cmVCeXRl
U3RyaWRlID0gMDsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVCdWZmZXIoJnZi
RGVzYywgTlVMTCwgJm1DbGVhclZCKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQp
KTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ2xlYXJWQiwgIlJlbmRlcmVyMTEgbWFz
a2VkIGNsZWFyIHZlcnRleCBidWZmZXIiKTsKKworICAgICAgICBEM0QxMV9JTlBVVF9FTEVNRU5U
X0RFU0MgcXVhZExheW91dFtdID0KKyAgICAgICAgeworICAgICAgICAgICAgeyAiUE9TSVRJT04i
LCAwLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsICAgIDAsICAwLCBEM0QxMV9JTlBVVF9Q
RVJfVkVSVEVYX0RBVEEsIDAgfSwKKyAgICAgICAgICAgIHsgIkNPTE9SIiwgICAgMCwgRFhHSV9G
T1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAwLCAxMiwgRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9E
QVRBLCAwIH0sCisgICAgICAgIH07CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRl
SW5wdXRMYXlvdXQocXVhZExheW91dCwgMiwgZ19WU19DbGVhciwgc2l6ZW9mKGdfVlNfQ2xlYXIp
LCAmbUNsZWFySUwpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAg
ICBkM2QxMTo6U2V0RGVidWdOYW1lKG1DbGVhcklMLCAiUmVuZGVyZXIxMSBtYXNrZWQgY2xlYXIg
aW5wdXQgbGF5b3V0Iik7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlVmVydGV4
U2hhZGVyKGdfVlNfQ2xlYXIsIHNpemVvZihnX1ZTX0NsZWFyKSwgTlVMTCwgJm1DbGVhclZTKTsK
KyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERl
YnVnTmFtZShtQ2xlYXJWUywgIlJlbmRlcmVyMTEgbWFza2VkIGNsZWFyIHZlcnRleCBzaGFkZXIi
KTsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVQaXhlbFNoYWRlcihnX1BTX0Ns
ZWFyU2luZ2xlLCBzaXplb2YoZ19QU19DbGVhclNpbmdsZSksIE5VTEwsICZtQ2xlYXJTaW5nbGVQ
Uyk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgICAgIGQzZDExOjpT
ZXREZWJ1Z05hbWUobUNsZWFyU2luZ2xlUFMsICJSZW5kZXJlcjExIG1hc2tlZCBjbGVhciBwaXhl
bCBzaGFkZXIgKDEgUlQpIik7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUGl4
ZWxTaGFkZXIoZ19QU19DbGVhck11bHRpcGxlLCBzaXplb2YoZ19QU19DbGVhck11bHRpcGxlKSwg
TlVMTCwgJm1DbGVhck11bHRpcGxlUFMpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3Vs
dCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1DbGVhck11bHRpcGxlUFMsICJSZW5k
ZXJlcjExIG1hc2tlZCBjbGVhciBwaXhlbCBzaGFkZXIgKE1SVCkiKTsKKworICAgICAgICBEM0Qx
MV9SQVNURVJJWkVSX0RFU0MgcnNTY2lzc29yRGVzYzsKKyAgICAgICAgcnNTY2lzc29yRGVzYy5G
aWxsTW9kZSA9IEQzRDExX0ZJTExfU09MSUQ7CisgICAgICAgIHJzU2Npc3NvckRlc2MuQ3VsbE1v
ZGUgPSBEM0QxMV9DVUxMX05PTkU7CisgICAgICAgIHJzU2Npc3NvckRlc2MuRnJvbnRDb3VudGVy
Q2xvY2t3aXNlID0gRkFMU0U7CisgICAgICAgIHJzU2Npc3NvckRlc2MuRGVwdGhCaWFzID0gMDsK
KyAgICAgICAgcnNTY2lzc29yRGVzYy5EZXB0aEJpYXNDbGFtcCA9IDAuMGY7CisgICAgICAgIHJz
U2Npc3NvckRlc2MuU2xvcGVTY2FsZWREZXB0aEJpYXMgPSAwLjBmOworICAgICAgICByc1NjaXNz
b3JEZXNjLkRlcHRoQ2xpcEVuYWJsZSA9IEZBTFNFOworICAgICAgICByc1NjaXNzb3JEZXNjLlNj
aXNzb3JFbmFibGUgPSBUUlVFOworICAgICAgICByc1NjaXNzb3JEZXNjLk11bHRpc2FtcGxlRW5h
YmxlID0gRkFMU0U7CisgICAgICAgIHJzU2Npc3NvckRlc2MuQW50aWFsaWFzZWRMaW5lRW5hYmxl
ID0gRkFMU0U7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUmFzdGVyaXplclN0
YXRlKCZyc1NjaXNzb3JEZXNjLCAmbUNsZWFyU2Npc3NvclJTKTsKKyAgICAgICAgQVNTRVJUKFNV
Q0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ2xlYXJTY2lz
c29yUlMsICJSZW5kZXJlcjExIG1hc2tlZCBjbGVhciBzY2lzc29yIHJhc3Rlcml6ZXIgc3RhdGUi
KTsKKworICAgICAgICBEM0QxMV9SQVNURVJJWkVSX0RFU0MgcnNOb1NjaXNzb3JEZXNjOworICAg
ICAgICByc05vU2Npc3NvckRlc2MuRmlsbE1vZGUgPSBEM0QxMV9GSUxMX1NPTElEOworICAgICAg
ICByc05vU2Npc3NvckRlc2MuQ3VsbE1vZGUgPSBEM0QxMV9DVUxMX05PTkU7CisgICAgICAgIHJz
Tm9TY2lzc29yRGVzYy5Gcm9udENvdW50ZXJDbG9ja3dpc2UgPSBGQUxTRTsKKyAgICAgICAgcnNO
b1NjaXNzb3JEZXNjLkRlcHRoQmlhcyA9IDA7CisgICAgICAgIHJzTm9TY2lzc29yRGVzYy5EZXB0
aEJpYXNDbGFtcCA9IDAuMGY7CisgICAgICAgIHJzTm9TY2lzc29yRGVzYy5TbG9wZVNjYWxlZERl
cHRoQmlhcyA9IDAuMGY7CisgICAgICAgIHJzTm9TY2lzc29yRGVzYy5EZXB0aENsaXBFbmFibGUg
PSBGQUxTRTsKKyAgICAgICAgcnNOb1NjaXNzb3JEZXNjLlNjaXNzb3JFbmFibGUgPSBGQUxTRTsK
KyAgICAgICAgcnNOb1NjaXNzb3JEZXNjLk11bHRpc2FtcGxlRW5hYmxlID0gRkFMU0U7CisgICAg
ICAgIHJzTm9TY2lzc29yRGVzYy5BbnRpYWxpYXNlZExpbmVFbmFibGUgPSBGQUxTRTsKKworICAg
ICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVSYXN0ZXJpemVyU3RhdGUoJnJzTm9TY2lzc29y
RGVzYywgJm1DbGVhck5vU2Npc3NvclJTKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1
bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ2xlYXJOb1NjaXNzb3JSUywgIlJl
bmRlcmVyMTEgbWFza2VkIGNsZWFyIG5vIHNjaXNzb3IgcmFzdGVyaXplciBzdGF0ZSIpOworCisg
ICAgICAgIG1DbGVhclJlc291cmNlc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICAv
LyBQcmVwYXJlIHRoZSBkZXB0aCBzdGVuY2lsIHN0YXRlIHRvIHdyaXRlIGRlcHRoIHZhbHVlcyBp
ZiB0aGUgZGVwdGggc2hvdWxkIGJlIGNsZWFyZWQKKyAgICAvLyBhbmQgc3RlbmNpbCB2YWx1ZXMg
aWYgdGhlIHN0ZW5jaWwgc2hvdWxkIGJlIGNsZWFyZWQKKyAgICBnbDo6RGVwdGhTdGVuY2lsU3Rh
dGUgZ2xEU1N0YXRlOworICAgIGdsRFNTdGF0ZS5kZXB0aFRlc3QgPSAoY2xlYXJQYXJhbXMubWFz
ayAmIEdMX0RFUFRIX0JVRkZFUl9CSVQpICE9IDA7CisgICAgZ2xEU1N0YXRlLmRlcHRoRnVuYyA9
IEdMX0FMV0FZUzsKKyAgICBnbERTU3RhdGUuZGVwdGhNYXNrID0gKGNsZWFyUGFyYW1zLm1hc2sg
JiBHTF9ERVBUSF9CVUZGRVJfQklUKSAhPSAwOworICAgIGdsRFNTdGF0ZS5zdGVuY2lsVGVzdCA9
IChjbGVhclBhcmFtcy5tYXNrICYgR0xfU1RFTkNJTF9CVUZGRVJfQklUKSAhPSAwOworICAgIGds
RFNTdGF0ZS5zdGVuY2lsRnVuYyA9IEdMX0FMV0FZUzsKKyAgICBnbERTU3RhdGUuc3RlbmNpbE1h
c2sgPSAwOworICAgIGdsRFNTdGF0ZS5zdGVuY2lsRmFpbCA9IEdMX1JFUExBQ0U7CisgICAgZ2xE
U1N0YXRlLnN0ZW5jaWxQYXNzRGVwdGhGYWlsID0gR0xfUkVQTEFDRTsKKyAgICBnbERTU3RhdGUu
c3RlbmNpbFBhc3NEZXB0aFBhc3MgPSBHTF9SRVBMQUNFOworICAgIGdsRFNTdGF0ZS5zdGVuY2ls
V3JpdGVtYXNrID0gY2xlYXJQYXJhbXMuc3RlbmNpbFdyaXRlTWFzazsKKyAgICBnbERTU3RhdGUu
c3RlbmNpbEJhY2tGdW5jID0gR0xfQUxXQVlTOworICAgIGdsRFNTdGF0ZS5zdGVuY2lsQmFja01h
c2sgPSAwOworICAgIGdsRFNTdGF0ZS5zdGVuY2lsQmFja0ZhaWwgPSBHTF9SRVBMQUNFOworICAg
IGdsRFNTdGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwgPSBHTF9SRVBMQUNFOworICAgIGds
RFNTdGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MgPSBHTF9SRVBMQUNFOworICAgIGdsRFNT
dGF0ZS5zdGVuY2lsQmFja1dyaXRlbWFzayA9IGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1hc2s7
CisKKyAgICBpbnQgc3RlbmNpbENsZWFyID0gY2xlYXJQYXJhbXMuc3RlbmNpbENsZWFyVmFsdWUg
JiAweDAwMDAwMEZGOworCisgICAgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKmRzU3RhdGUgPSBt
U3RhdGVDYWNoZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZShnbERTU3RhdGUpOworCisgICAgLy8gUHJl
cGFyZSB0aGUgYmxlbmQgc3RhdGUgdG8gdXNlIGEgd3JpdGUgbWFzayBpZiB0aGUgY29sb3IgYnVm
ZmVyIHNob3VsZCBiZSBjbGVhcmVkCisgICAgZ2w6OkJsZW5kU3RhdGUgZ2xCbGVuZFN0YXRlOwor
ICAgIGdsQmxlbmRTdGF0ZS5ibGVuZCA9IGZhbHNlOworICAgIGdsQmxlbmRTdGF0ZS5zb3VyY2VC
bGVuZFJHQiA9IEdMX09ORTsKKyAgICBnbEJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCID0gR0xfWkVS
TzsKKyAgICBnbEJsZW5kU3RhdGUuc291cmNlQmxlbmRBbHBoYSA9IEdMX09ORTsKKyAgICBnbEJs
ZW5kU3RhdGUuZGVzdEJsZW5kQWxwaGEgPSBHTF9aRVJPOworICAgIGdsQmxlbmRTdGF0ZS5ibGVu
ZEVxdWF0aW9uUkdCID0gR0xfRlVOQ19BREQ7CisgICAgZ2xCbGVuZFN0YXRlLmJsZW5kRXF1YXRp
b25BbHBoYSA9IEdMX0ZVTkNfQUREOworICAgIGdsQmxlbmRTdGF0ZS5jb2xvck1hc2tSZWQgPSAo
Y2xlYXJQYXJhbXMubWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpID8gY2xlYXJQYXJhbXMuY29s
b3JNYXNrUmVkIDogZmFsc2U7CisgICAgZ2xCbGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuID0gKGNs
ZWFyUGFyYW1zLm1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKSA/IGNsZWFyUGFyYW1zLmNvbG9y
TWFza0dyZWVuIDogZmFsc2U7CisgICAgZ2xCbGVuZFN0YXRlLmNvbG9yTWFza0JsdWUgPSAoY2xl
YXJQYXJhbXMubWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpID8gY2xlYXJQYXJhbXMuY29sb3JN
YXNrQmx1ZSA6IGZhbHNlOworICAgIGdsQmxlbmRTdGF0ZS5jb2xvck1hc2tBbHBoYSA9IChjbGVh
clBhcmFtcy5tYXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJVCkgPyBjbGVhclBhcmFtcy5jb2xvck1h
c2tBbHBoYSA6IGZhbHNlOworICAgIGdsQmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJhZ2Ug
PSBmYWxzZTsKKyAgICBnbEJsZW5kU3RhdGUuZGl0aGVyID0gZmFsc2U7CisKKyAgICBzdGF0aWMg
Y29uc3QgZmxvYXQgYmxlbmRGYWN0b3JzWzRdID0geyAxLjBmLCAxLjBmLCAxLjBmLCAxLjBmIH07
CisgICAgc3RhdGljIGNvbnN0IFVJTlQgc2FtcGxlTWFzayA9IDB4RkZGRkZGRkY7CisKKyAgICBJ
RDNEMTFCbGVuZFN0YXRlICpibGVuZFN0YXRlID0gbVN0YXRlQ2FjaGUuZ2V0QmxlbmRTdGF0ZShn
bEJsZW5kU3RhdGUpOworCisgICAgLy8gU2V0IHRoZSB2ZXJ0aWNlcworICAgIEQzRDExX01BUFBF
RF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKKyAgICByZXN1bHQgPSBtRGV2aWNlQ29udGV4
dC0+TWFwKG1DbGVhclZCLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwgJm1hcHBlZFJl
c291cmNlKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICBFUlIoIkZh
aWxlZCB0byBtYXAgbWFza2VkIGNsZWFyIHZlcnRleCBidWZmZXIsIEhSRVNVTFQ6IDB4JVguIiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGQzZDExOjpQb3NpdGlvbkRl
cHRoQ29sb3JWZXJ0ZXggKnZlcnRpY2VzID0gcmVpbnRlcnByZXRfY2FzdDxkM2QxMTo6UG9zaXRp
b25EZXB0aENvbG9yVmVydGV4Kj4obWFwcGVkUmVzb3VyY2UucERhdGEpOworCisgICAgZmxvYXQg
ZGVwdGhDbGVhciA9IGdsOjpjbGFtcDAxKGNsZWFyUGFyYW1zLmRlcHRoQ2xlYXJWYWx1ZSk7Cisg
ICAgZDNkMTE6OlNldFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleCgmdmVydGljZXNbMF0sIC0xLjBm
LCAgMS4wZiwgZGVwdGhDbGVhciwgY2xlYXJQYXJhbXMuY29sb3JDbGVhclZhbHVlKTsKKyAgICBk
M2QxMTo6U2V0UG9zaXRpb25EZXB0aENvbG9yVmVydGV4KCZ2ZXJ0aWNlc1sxXSwgLTEuMGYsIC0x
LjBmLCBkZXB0aENsZWFyLCBjbGVhclBhcmFtcy5jb2xvckNsZWFyVmFsdWUpOworICAgIGQzZDEx
OjpTZXRQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXgoJnZlcnRpY2VzWzJdLCAgMS4wZiwgIDEuMGYs
IGRlcHRoQ2xlYXIsIGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJWYWx1ZSk7CisgICAgZDNkMTE6OlNl
dFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleCgmdmVydGljZXNbM10sICAxLjBmLCAtMS4wZiwgZGVw
dGhDbGVhciwgY2xlYXJQYXJhbXMuY29sb3JDbGVhclZhbHVlKTsKKworICAgIG1EZXZpY2VDb250
ZXh0LT5Vbm1hcChtQ2xlYXJWQiwgMCk7CisKKyAgICAvLyBBcHBseSBzdGF0ZQorICAgIG1EZXZp
Y2VDb250ZXh0LT5PTVNldEJsZW5kU3RhdGUoYmxlbmRTdGF0ZSwgYmxlbmRGYWN0b3JzLCBzYW1w
bGVNYXNrKTsKKyAgICBtRGV2aWNlQ29udGV4dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShkc1N0
YXRlLCBzdGVuY2lsQ2xlYXIpOworICAgIG1EZXZpY2VDb250ZXh0LT5SU1NldFN0YXRlKG1TY2lz
c29yRW5hYmxlZCA/IG1DbGVhclNjaXNzb3JSUyA6IG1DbGVhck5vU2Npc3NvclJTKTsKKworICAg
IC8vIEFwcGx5IHNoYWRlcnMKKyAgICBJRDNEMTFQaXhlbFNoYWRlciAqcGl4ZWxTaGFkZXIgPSB1
c2luZ0V4dGVuZGVkRHJhd0J1ZmZlcnMgPyBtQ2xlYXJNdWx0aXBsZVBTIDogbUNsZWFyU2luZ2xl
UFM7CisKKyAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbnB1dExheW91dChtQ2xlYXJJTCk7Cisg
ICAgbURldmljZUNvbnRleHQtPlZTU2V0U2hhZGVyKG1DbGVhclZTLCBOVUxMLCAwKTsKKyAgICBt
RGV2aWNlQ29udGV4dC0+UFNTZXRTaGFkZXIocGl4ZWxTaGFkZXIsIE5VTEwsIDApOworICAgIG1E
ZXZpY2VDb250ZXh0LT5HU1NldFNoYWRlcihOVUxMLCBOVUxMLCAwKTsKKworICAgIC8vIEFwcGx5
IHZlcnRleCBidWZmZXIKKyAgICBzdGF0aWMgVUlOVCBzdHJpZGUgPSBzaXplb2YoZDNkMTE6OlBv
c2l0aW9uRGVwdGhDb2xvclZlcnRleCk7CisgICAgc3RhdGljIFVJTlQgc3RhcnRJZHggPSAwOwor
ICAgIG1EZXZpY2VDb250ZXh0LT5JQVNldFZlcnRleEJ1ZmZlcnMoMCwgMSwgJm1DbGVhclZCLCAm
c3RyaWRlLCAmc3RhcnRJZHgpOworICAgIG1EZXZpY2VDb250ZXh0LT5JQVNldFByaW1pdGl2ZVRv
cG9sb2d5KEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVTVFJJUCk7CisKKyAgICAvLyBE
cmF3IHRoZSBjbGVhciBxdWFkCisgICAgbURldmljZUNvbnRleHQtPkRyYXcoNCwgMCk7CisKKyAg
ICAvLyBDbGVhbiB1cAorICAgIG1hcmtBbGxTdGF0ZURpcnR5KCk7Cit9CisKK3ZvaWQgUmVuZGVy
ZXIxMTo6bWFya0FsbFN0YXRlRGlydHkoKQoreworICAgIGZvciAodW5zaWduZWQgaW50IHJ0SW5k
ZXggPSAwOyBydEluZGV4IDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM7IHJ0
SW5kZXgrKykKKyAgICB7CisgICAgICAgIG1BcHBsaWVkUmVuZGVyVGFyZ2V0U2VyaWFsc1tydElu
ZGV4XSA9IDA7CisgICAgfQorICAgIG1BcHBsaWVkRGVwdGhidWZmZXJTZXJpYWwgPSAwOworICAg
IG1BcHBsaWVkU3RlbmNpbGJ1ZmZlclNlcmlhbCA9IDA7CisgICAgbURlcHRoU3RlbmNpbEluaXRp
YWxpemVkID0gZmFsc2U7CisgICAgbVJlbmRlclRhcmdldERlc2NJbml0aWFsaXplZCA9IGZhbHNl
OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRF
WF9URVhUVVJFX0lNQUdFX1VOSVRTOyBpKyspCisgICAgeworICAgICAgICBtRm9yY2VTZXRWZXJ0
ZXhTYW1wbGVyU3RhdGVzW2ldID0gdHJ1ZTsKKyAgICAgICAgbUN1clZlcnRleFRleHR1cmVTZXJp
YWxzW2ldID0gMDsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1RFWFRV
UkVfSU1BR0VfVU5JVFM7IGkrKykKKyAgICB7CisgICAgICAgIG1Gb3JjZVNldFBpeGVsU2FtcGxl
clN0YXRlc1tpXSA9IHRydWU7CisgICAgICAgIG1DdXJQaXhlbFRleHR1cmVTZXJpYWxzW2ldID0g
MDsKKyAgICB9CisKKyAgICBtRm9yY2VTZXRCbGVuZFN0YXRlID0gdHJ1ZTsKKyAgICBtRm9yY2VT
ZXRSYXN0ZXJTdGF0ZSA9IHRydWU7CisgICAgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgPSB0
cnVlOworICAgIG1Gb3JjZVNldFNjaXNzb3IgPSB0cnVlOworICAgIG1Gb3JjZVNldFZpZXdwb3J0
ID0gdHJ1ZTsKKworICAgIG1BcHBsaWVkSUJTZXJpYWwgPSAwOworICAgIG1BcHBsaWVkU3RvcmFn
ZUlCU2VyaWFsID0gMDsKKyAgICBtQXBwbGllZElCT2Zmc2V0ID0gMDsKKworICAgIG1BcHBsaWVk
UHJvZ3JhbUJpbmFyeVNlcmlhbCA9IDA7CisgICAgbWVtc2V0KCZtQXBwbGllZFZlcnRleENvbnN0
YW50cywgMCwgc2l6ZW9mKGR4X1ZlcnRleENvbnN0YW50cykpOworICAgIG1lbXNldCgmbUFwcGxp
ZWRQaXhlbENvbnN0YW50cywgMCwgc2l6ZW9mKGR4X1BpeGVsQ29uc3RhbnRzKSk7Cit9CisKK3Zv
aWQgUmVuZGVyZXIxMTo6cmVsZWFzZURldmljZVJlc291cmNlcygpCit7CisgICAgbVN0YXRlQ2Fj
aGUuY2xlYXIoKTsKKyAgICBtSW5wdXRMYXlvdXRDYWNoZS5jbGVhcigpOworCisgICAgZGVsZXRl
IG1WZXJ0ZXhEYXRhTWFuYWdlcjsKKyAgICBtVmVydGV4RGF0YU1hbmFnZXIgPSBOVUxMOworCisg
ICAgZGVsZXRlIG1JbmRleERhdGFNYW5hZ2VyOworICAgIG1JbmRleERhdGFNYW5hZ2VyID0gTlVM
TDsKKworICAgIGRlbGV0ZSBtTGluZUxvb3BJQjsKKyAgICBtTGluZUxvb3BJQiA9IE5VTEw7CisK
KyAgICBkZWxldGUgbVRyaWFuZ2xlRmFuSUI7CisgICAgbVRyaWFuZ2xlRmFuSUIgPSBOVUxMOwor
CisgICAgU2FmZVJlbGVhc2UobUNvcHlWQik7CisgICAgU2FmZVJlbGVhc2UobUNvcHlTYW1wbGVy
KTsKKyAgICBTYWZlUmVsZWFzZShtQ29weUlMKTsKKyAgICBTYWZlUmVsZWFzZShtQ29weUlMKTsK
KyAgICBTYWZlUmVsZWFzZShtQ29weVZTKTsKKyAgICBTYWZlUmVsZWFzZShtQ29weVJHQkFQUyk7
CisgICAgU2FmZVJlbGVhc2UobUNvcHlSR0JQUyk7CisgICAgU2FmZVJlbGVhc2UobUNvcHlMdW1Q
Uyk7CisgICAgU2FmZVJlbGVhc2UobUNvcHlMdW1BbHBoYVBTKTsKKworICAgIG1Db3B5UmVzb3Vy
Y2VzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIFNhZmVSZWxlYXNlKG1DbGVhclZCKTsKKyAg
ICBTYWZlUmVsZWFzZShtQ2xlYXJJTCk7CisgICAgU2FmZVJlbGVhc2UobUNsZWFyVlMpOworICAg
IFNhZmVSZWxlYXNlKG1DbGVhclNpbmdsZVBTKTsKKyAgICBTYWZlUmVsZWFzZShtQ2xlYXJNdWx0
aXBsZVBTKTsKKyAgICBTYWZlUmVsZWFzZShtQ2xlYXJTY2lzc29yUlMpOworICAgIFNhZmVSZWxl
YXNlKG1DbGVhck5vU2Npc3NvclJTKTsKKworICAgIG1DbGVhclJlc291cmNlc0luaXRpYWxpemVk
ID0gZmFsc2U7CisKKyAgICBTYWZlUmVsZWFzZShtRHJpdmVyQ29uc3RhbnRCdWZmZXJWUyk7Cisg
ICAgU2FmZVJlbGVhc2UobURyaXZlckNvbnN0YW50QnVmZmVyUFMpOworICAgIFNhZmVSZWxlYXNl
KG1TeW5jUXVlcnkpOworfQorCit2b2lkIFJlbmRlcmVyMTE6Om5vdGlmeURldmljZUxvc3QoKQor
eworICAgIG1EZXZpY2VMb3N0ID0gdHJ1ZTsKKyAgICBtRGlzcGxheS0+bm90aWZ5RGV2aWNlTG9z
dCgpOworfQorCitib29sIFJlbmRlcmVyMTE6OmlzRGV2aWNlTG9zdCgpCit7CisgICAgcmV0dXJu
IG1EZXZpY2VMb3N0OworfQorCisvLyBzZXQgbm90aWZ5IHRvIHRydWUgdG8gYnJvYWRjYXN0IGEg
bWVzc2FnZSB0byBhbGwgY29udGV4dHMgb2YgdGhlIGRldmljZSBsb3NzCitib29sIFJlbmRlcmVy
MTE6OnRlc3REZXZpY2VMb3N0KGJvb2wgbm90aWZ5KQoreworICAgIGJvb2wgaXNMb3N0ID0gZmFs
c2U7CisKKyAgICAvLyBHZXRSZW1vdmVkUmVhc29uIGlzIHVzZWQgdG8gdGVzdCBpZiB0aGUgZGV2
aWNlIGlzIHJlbW92ZWQKKyAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkdldERldmljZVJl
bW92ZWRSZWFzb24oKTsKKyAgICBpc0xvc3QgPSBkM2QxMTo6aXNEZXZpY2VMb3N0RXJyb3IocmVz
dWx0KTsKKworICAgIGlmIChpc0xvc3QpCisgICAgeworICAgICAgICAvLyBMb2cgZXJyb3IgaWYg
dGhpcyBpcyBhIG5ldyBkZXZpY2UgbG9zdCBldmVudAorICAgICAgICBpZiAobURldmljZUxvc3Qg
PT0gZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiVGhlIEQzRDExIGRldmljZSB3
YXMgcmVtb3ZlZDogMHglMDhYIiwgcmVzdWx0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGVu
c3VyZSB3ZSBub3RlIHRoZSBkZXZpY2UgbG9zcyAtLQorICAgICAgICAvLyB3ZSdsbCBwcm9iYWJs
eSBnZXQgdGhpcyBkb25lIGFnYWluIGJ5IG5vdGlmeURldmljZUxvc3QKKyAgICAgICAgLy8gYnV0
IGJlc3QgdG8gcmVtZW1iZXIgaXQhCisgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCB3YW50
IHRvIGNsZWFyIHRoZSBkZXZpY2UgbG9zcyBzdGF0dXMgaGVyZQorICAgICAgICAvLyAtLSB0aGlz
IG5lZWRzIHRvIGJlIGRvbmUgYnkgcmVzZXREZXZpY2UKKyAgICAgICAgbURldmljZUxvc3QgPSB0
cnVlOworICAgICAgICBpZiAobm90aWZ5KQorICAgICAgICB7CisgICAgICAgICAgICBub3RpZnlE
ZXZpY2VMb3N0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gaXNMb3N0OworfQor
Citib29sIFJlbmRlcmVyMTE6OnRlc3REZXZpY2VSZXNldHRhYmxlKCkKK3sKKyAgICAvLyBkZXRl
cm1pbmUgaWYgdGhlIGRldmljZSBpcyByZXNldHRhYmxlIGJ5IGNyZWF0aW5nIGEgZHVtbXkgZGV2
aWNlCisgICAgUEZOX0QzRDExX0NSRUFURV9ERVZJQ0UgRDNEMTFDcmVhdGVEZXZpY2UgPSAoUEZO
X0QzRDExX0NSRUFURV9ERVZJQ0UpR2V0UHJvY0FkZHJlc3MobUQzZDExTW9kdWxlLCAiRDNEMTFD
cmVhdGVEZXZpY2UiKTsKKworICAgIGlmIChEM0QxMUNyZWF0ZURldmljZSA9PSBOVUxMKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEQzRF9GRUFUVVJFX0xFVkVM
IGZlYXR1cmVMZXZlbHNbXSA9CisgICAgeworICAgICAgICBEM0RfRkVBVFVSRV9MRVZFTF8xMV8w
LAorICAgICAgICBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xLAorICAgICAgICBEM0RfRkVBVFVSRV9M
RVZFTF8xMF8wLAorICAgIH07CisKKyAgICBJRDNEMTFEZXZpY2UqIGR1bW15RGV2aWNlOworICAg
IEQzRF9GRUFUVVJFX0xFVkVMIGR1bW15RmVhdHVyZUxldmVsOworICAgIElEM0QxMURldmljZUNv
bnRleHQqIGR1bW15Q29udGV4dDsKKworICAgIEhSRVNVTFQgcmVzdWx0ID0gRDNEMTFDcmVhdGVE
ZXZpY2UoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRF9E
UklWRVJfVFlQRV9IQVJEV0FSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaWYgZGVm
aW5lZChfREVCVUcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0Qx
MV9DUkVBVEVfREVWSUNFX0RFQlVHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVMZXZlbHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVNpemUoZmVhdHVyZUxldmVscyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9TREtfVkVSU0lPTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdW1teURldmljZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdW1teUZlYXR1cmVMZXZlbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdW1teUNvbnRleHQpOworCisg
ICAgaWYgKCFtRGV2aWNlIHx8IEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGR1bW15Q29udGV4dC0+UmVsZWFzZSgpOworICAgIGR1bW15
RGV2aWNlLT5SZWxlYXNlKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZW5kZXJl
cjExOjpyZWxlYXNlKCkKK3sKKyAgICByZWxlYXNlRGV2aWNlUmVzb3VyY2VzKCk7CisKKyAgICBp
ZiAobUR4Z2lGYWN0b3J5KQorICAgIHsKKyAgICAgICAgbUR4Z2lGYWN0b3J5LT5SZWxlYXNlKCk7
CisgICAgICAgIG1EeGdpRmFjdG9yeSA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1EeGdpQWRh
cHRlcikKKyAgICB7CisgICAgICAgIG1EeGdpQWRhcHRlci0+UmVsZWFzZSgpOworICAgICAgICBt
RHhnaUFkYXB0ZXIgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtRGV2aWNlQ29udGV4dCkKKyAg
ICB7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5DbGVhclN0YXRlKCk7CisgICAgICAgIG1EZXZp
Y2VDb250ZXh0LT5GbHVzaCgpOworICAgICAgICBtRGV2aWNlQ29udGV4dC0+UmVsZWFzZSgpOwor
ICAgICAgICBtRGV2aWNlQ29udGV4dCA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1EZXZpY2Up
CisgICAgeworICAgICAgICBtRGV2aWNlLT5SZWxlYXNlKCk7CisgICAgICAgIG1EZXZpY2UgPSBO
VUxMOworICAgIH0KKworICAgIGlmIChtRDNkMTFNb2R1bGUpCisgICAgeworICAgICAgICBGcmVl
TGlicmFyeShtRDNkMTFNb2R1bGUpOworICAgICAgICBtRDNkMTFNb2R1bGUgPSBOVUxMOworICAg
IH0KKworICAgIGlmIChtRHhnaU1vZHVsZSkKKyAgICB7CisgICAgICAgIEZyZWVMaWJyYXJ5KG1E
eGdpTW9kdWxlKTsKKyAgICAgICAgbUR4Z2lNb2R1bGUgPSBOVUxMOworICAgIH0KK30KKworYm9v
bCBSZW5kZXJlcjExOjpyZXNldERldmljZSgpCit7CisgICAgLy8gcmVjcmVhdGUgZXZlcnl0aGlu
ZworICAgIHJlbGVhc2UoKTsKKyAgICBFR0xpbnQgcmVzdWx0ID0gaW5pdGlhbGl6ZSgpOworCisg
ICAgaWYgKHJlc3VsdCAhPSBFR0xfU1VDQ0VTUykKKyAgICB7CisgICAgICAgIEVSUigiQ291bGQg
bm90IHJlaW5pdGlhbGl6ZSBEM0QxMSBkZXZpY2U6ICUwOFgiLCByZXN1bHQpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbURldmljZUxvc3QgPSBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCitEV09SRCBSZW5kZXJlcjExOjpnZXRBZGFwdGVyVmVuZG9yKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbUFkYXB0ZXJEZXNjcmlwdGlvbi5WZW5kb3JJZDsKK30KKworc3Rk
OjpzdHJpbmcgUmVuZGVyZXIxMTo6Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0Cit7Cisg
ICAgc3RkOjpvc3RyaW5nc3RyZWFtIHJlbmRlcmVyU3RyaW5nOworCisgICAgcmVuZGVyZXJTdHJp
bmcgPDwgbURlc2NyaXB0aW9uOworICAgIHJlbmRlcmVyU3RyaW5nIDw8ICIgRGlyZWN0M0QxMSI7
CisKKyAgICByZW5kZXJlclN0cmluZyA8PCAiIHZzXyIgPDwgZ2V0TWFqb3JTaGFkZXJNb2RlbCgp
IDw8ICJfIiA8PCBnZXRNaW5vclNoYWRlck1vZGVsKCk7CisgICAgcmVuZGVyZXJTdHJpbmcgPDwg
IiBwc18iIDw8IGdldE1ham9yU2hhZGVyTW9kZWwoKSA8PCAiXyIgPDwgZ2V0TWlub3JTaGFkZXJN
b2RlbCgpOworCisgICAgcmV0dXJuIHJlbmRlcmVyU3RyaW5nLnN0cigpOworfQorCitHVUlEIFJl
bmRlcmVyMTE6OmdldEFkYXB0ZXJJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICAvLyBVc2UgdGhl
IGFkYXB0ZXIgTFVJRCBhcyBvdXIgYWRhcHRlciBJRAorICAgIC8vIFRoaXMgbnVtYmVyIGlzIGxv
Y2FsIHRvIGEgbWFjaGluZSBpcyBvbmx5IGd1YXJhbnRlZWQgdG8gYmUgdW5pcXVlIGJldHdlZW4g
cmVzdGFydHMKKyAgICBNRVRBX0FTU0VSVChzaXplb2YoTFVJRCkgPD0gc2l6ZW9mKEdVSUQpKTsK
KyAgICBHVUlEIGFkYXB0ZXJJZCA9IHswfTsKKyAgICBtZW1jcHkoJmFkYXB0ZXJJZCwgJm1BZGFw
dGVyRGVzY3JpcHRpb24uQWRhcHRlckx1aWQsIHNpemVvZihMVUlEKSk7CisgICAgcmV0dXJuIGFk
YXB0ZXJJZDsKK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRCR1JBVGV4dHVyZVN1cHBvcnQoKSBj
b25zdAoreworICAgIHJldHVybiBtQkdSQVRleHR1cmVTdXBwb3J0OworfQorCitib29sIFJlbmRl
cmVyMTE6OmdldERYVDFUZXh0dXJlU3VwcG9ydCgpCit7CisgICAgcmV0dXJuIG1EWFQxVGV4dHVy
ZVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0RFhUM1RleHR1cmVTdXBwb3J0KCkK
K3sKKyAgICByZXR1cm4gbURYVDNUZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJlcjEx
OjpnZXREWFQ1VGV4dHVyZVN1cHBvcnQoKQoreworICAgIHJldHVybiBtRFhUNVRleHR1cmVTdXBw
b3J0OworfQorCitib29sIFJlbmRlcmVyMTE6OmdldERlcHRoVGV4dHVyZVN1cHBvcnQoKSBjb25z
dAoreworICAgIHJldHVybiBtRGVwdGhUZXh0dXJlU3VwcG9ydDsKK30KKworYm9vbCBSZW5kZXJl
cjExOjpnZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5nLCBib29sICpyZW5k
ZXJhYmxlKQoreworICAgICpyZW5kZXJhYmxlID0gbUZsb2F0MzJSZW5kZXJTdXBwb3J0OworICAg
ICpmaWx0ZXJpbmcgPSBtRmxvYXQzMkZpbHRlclN1cHBvcnQ7CisgICAgcmV0dXJuIG1GbG9hdDMy
VGV4dHVyZVN1cHBvcnQ7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0RmxvYXQxNlRleHR1cmVT
dXBwb3J0KGJvb2wgKmZpbHRlcmluZywgYm9vbCAqcmVuZGVyYWJsZSkKK3sKKyAgICAqcmVuZGVy
YWJsZSA9IG1GbG9hdDE2UmVuZGVyU3VwcG9ydDsKKyAgICAqZmlsdGVyaW5nID0gbUZsb2F0MTZG
aWx0ZXJTdXBwb3J0OworICAgIHJldHVybiBtRmxvYXQxNlRleHR1cmVTdXBwb3J0OworfQorCiti
b29sIFJlbmRlcmVyMTE6OmdldEx1bWluYW5jZVRleHR1cmVTdXBwb3J0KCkKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0THVtaW5hbmNlQWxwaGFUZXh0dXJl
U3VwcG9ydCgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbmRlcmVyMTE6Omdl
dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3B5U3VwcG9ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Zsb2F0IFJlbmRlcmVyMTE6OmdldFRleHR1cmVNYXhBbmlzb3Ryb3B5KCkgY29u
c3QKK3sKKyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICByZXR1cm4gRDNEMTFfTUFYX01BWEFOSVNPVFJP
UFk7CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgIHJldHVybiBEM0QxMF9NQVhfTUFYQU5JU09UUk9Q
WTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRFdmVudFF1ZXJ5U3VwcG9ydCgpCit7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK1JhbmdlIFJlbmRlcmVyMTE6OmdldFZpZXdwb3J0Qm91bmRzKCkg
Y29uc3QKK3sKKyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICByZXR1cm4gUmFuZ2UoRDNEMTFfVklFV1BP
UlRfQk9VTkRTX01JTiwgRDNEMTFfVklFV1BPUlRfQk9VTkRTX01BWCk7CisgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6
CisgICAgICAgIHJldHVybiBSYW5nZShEM0QxMF9WSUVXUE9SVF9CT1VORFNfTUlOLCBEM0QxMF9W
SUVXUE9SVF9CT1VORFNfTUFYKTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgIHJldHVybiBSYW5nZSgwLCAwKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBSZW5kZXJl
cjExOjpnZXRNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0Cit7CisgICAgTUVUQV9B
U1NFUlQoTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGX1NNNCA8PSBnbDo6SU1QTEVNRU5UQVRJ
T05fTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTKTsKKyAgICBzd2l0Y2ggKG1GZWF0dXJl
TGV2ZWwpCisgICAgeworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMF8wOgorICAgICAgICByZXR1cm4gTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfVlRGX1NNNDsK
KyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
K30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyMTE6OmdldE1heENvbWJpbmVkVGV4dHVyZUltYWdl
VW5pdHMoKSBjb25zdAoreworICAgIHJldHVybiBnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMg
KyBnZXRNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpOworfQorCit1bnNpZ25lZCBpbnQgUmVu
ZGVyZXIxMTo6Z2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIDA7ICAgLy8gRHJpdmVyIHVuaWZvcm1zIGFyZSBzdG9yZWQgaW4gYSBzZXBhcmF0ZSBj
b25zdGFudCBidWZmZXIKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyMTE6OmdldFJlc2VydmVk
RnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7ICAgLy8gRHJp
dmVyIHVuaWZvcm1zIGFyZSBzdG9yZWQgaW4gYSBzZXBhcmF0ZSBjb25zdGFudCBidWZmZXIKK30K
KwordW5zaWduZWQgaW50IFJlbmRlcmVyMTE6OmdldE1heFZlcnRleFVuaWZvcm1WZWN0b3JzKCkg
Y29uc3QKK3sKKyAgICBNRVRBX0FTU0VSVChNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU19EM0Qx
MSA8PSBEM0QxMF9SRVFfQ09OU1RBTlRfQlVGRkVSX0VMRU1FTlRfQ09VTlQpOworICAgIEFTU0VS
VChtRmVhdHVyZUxldmVsID49IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzApOworICAgIHJldHVybiBN
QVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU19EM0QxMTsKK30KKwordW5zaWduZWQgaW50IFJlbmRl
cmVyMTE6OmdldE1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMoKSBjb25zdAoreworICAgIE1FVEFf
QVNTRVJUKE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNfRDNEMTEgPD0gRDNEMTBfUkVRX0NP
TlNUQU5UX0JVRkZFUl9FTEVNRU5UX0NPVU5UKTsKKyAgICBBU1NFUlQobUZlYXR1cmVMZXZlbCA+
PSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wKTsKKyAgICByZXR1cm4gTUFYX0ZSQUdNRU5UX1VOSUZP
Uk1fVkVDVE9SU19EM0QxMTsKK30KKwordW5zaWduZWQgaW50IFJlbmRlcmVyMTE6OmdldE1heFZh
cnlpbmdWZWN0b3JzKCkgY29uc3QKK3sKKyAgICBNRVRBX0FTU0VSVChnbDo6SU1QTEVNRU5UQVRJ
T05fTUFYX1ZBUllJTkdfVkVDVE9SUyA9PSBEM0QxMV9WU19PVVRQVVRfUkVHSVNURVJfQ09VTlQp
OworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzExXzA6CisgICAgICAgIHJldHVybiBEM0QxMV9WU19PVVRQVVRfUkVHSVNURVJf
Q09VTlQ7CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgIHJldHVybiBEM0QxMF9WU19PVVRQVVRfUkVH
SVNURVJfQ09VTlQ7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1
cHBvcnQoKSBjb25zdAoreworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRPY2NsdXNpb25RdWVyeVN1
cHBvcnQoKSBjb25zdAoreworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXRJbnN0YW5jaW5nU3VwcG9y
dCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtRmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTBfMToKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCitib29sIFJlbmRlcmVyMTE6OmdldFNoYXJlSGFuZGxlU3VwcG9ydCgp
IGNvbnN0Cit7CisgICAgLy8gV2Ugb25seSBjdXJyZW50bHkgc3VwcG9ydCBzaGFyZSBoYW5kbGVz
IHdpdGggQkdSQSBzdXJmYWNlcywgYmVjYXVzZQorICAgIC8vIGNocm9tZSBuZWVkcyBCR1JBLiBP
bmNlIGNocm9tZSBmaXhlcyB0aGlzLCB3ZSBzaG91bGQgYWx3YXlzIHN1cHBvcnQgdGhlbS4KKyAg
ICAvLyBQSVggZG9lc24ndCBzZWVtIHRvIHN1cHBvcnQgdXNpbmcgc2hhcmUgaGFuZGxlcywgc28g
ZGlzYWJsZSB0aGVtLgorICAgIHJldHVybiBnZXRCR1JBVGV4dHVyZVN1cHBvcnQoKSAmJiAhZ2w6
OnBlcmZBY3RpdmUoKTsKK30KKworYm9vbCBSZW5kZXJlcjExOjpnZXREZXJpdmF0aXZlSW5zdHJ1
Y3Rpb25TdXBwb3J0KCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAg
eworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMF8xOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0UG9zdFN1YkJ1
ZmZlclN1cHBvcnQoKSBjb25zdAoreworICAgIC8vIEQzRDExIGRvZXMgbm90IHN1cHBvcnQgcHJl
c2VudCB3aXRoIGRpcnR5IHJlY3RhbmdsZXMgdW50aWwgRDNEMTEuMSBhbmQgRFhHSSAxLjIuCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitpbnQgUmVuZGVyZXIxMTo6Z2V0TWFqb3JTaGFkZXJNb2Rl
bCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtRmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuIEQzRDExX1NIQURFUl9NQUpPUl9WRVJT
SU9OOyAgIC8vIDUKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMTogcmV0dXJuIEQz
RDEwXzFfU0hBREVSX01BSk9SX1ZFUlNJT047IC8vIDQKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTBfMDogcmV0dXJuIEQzRDEwX1NIQURFUl9NQUpPUl9WRVJTSU9OOyAgIC8vIDQKKyAg
ICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitp
bnQgUmVuZGVyZXIxMTo6Z2V0TWlub3JTaGFkZXJNb2RlbCgpIGNvbnN0Cit7CisgICAgc3dpdGNo
IChtRmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFf
MDogcmV0dXJuIEQzRDExX1NIQURFUl9NSU5PUl9WRVJTSU9OOyAgIC8vIDAKKyAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMTogcmV0dXJuIEQzRDEwXzFfU0hBREVSX01JTk9SX1ZFUlNJ
T047IC8vIDEKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIEQzRDEw
X1NIQURFUl9NSU5PUl9WRVJTSU9OOyAgIC8vIDAKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxF
KCk7ICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitmbG9hdCBSZW5kZXJlcjExOjpnZXRNYXhQ
b2ludFNpemUoKSBjb25zdAoreworICAgIC8vIGNob29zZSBhIHJlYXNvbmFibGUgbWF4aW11bS4g
d2UgZW5mb3JjZSB0aGlzIGluIHRoZSBzaGFkZXIuCisgICAgLy8gKG5iOiBvbiBhIFJhZGVvbiAy
NjAweHQsIERYOSByZXBvcnRzIGEgMjU2IG1heCBwb2ludCBzaXplKQorICAgIHJldHVybiAxMDI0
LjBmOworfQorCitpbnQgUmVuZGVyZXIxMTo6Z2V0TWF4Vmlld3BvcnREaW1lbnNpb24oKSBjb25z
dAoreworICAgIC8vIE1heGltdW0gdmlld3BvcnQgc2l6ZSBtdXN0IGJlIGF0IGxlYXN0IGFzIGxh
cmdlIGFzIHRoZSBsYXJnZXN0IHJlbmRlciBidWZmZXIgKG9yIGxhcmdlcikuCisgICAgLy8gSW4g
b3VyIGNhc2UgcmV0dXJuIHRoZSBtYXhpbXVtIHRleHR1cmUgc2l6ZSwgd2hpY2ggaXMgdGhlIG1h
eGltdW0gcmVuZGVyIGJ1ZmZlciBzaXplLgorICAgIE1FVEFfQVNTRVJUKEQzRDExX1JFUV9URVhU
VVJFMkRfVV9PUl9WX0RJTUVOU0lPTiAqIDIgLSAxIDw9IEQzRDExX1ZJRVdQT1JUX0JPVU5EU19N
QVgpOworICAgIE1FVEFfQVNTRVJUKEQzRDEwX1JFUV9URVhUVVJFMkRfVV9PUl9WX0RJTUVOU0lP
TiAqIDIgLSAxIDw9IEQzRDEwX1ZJRVdQT1JUX0JPVU5EU19NQVgpOworCisgICAgc3dpdGNoICht
RmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDog
CisgICAgICAgIHJldHVybiBEM0QxMV9SRVFfVEVYVFVSRTJEX1VfT1JfVl9ESU1FTlNJT047ICAg
Ly8gMTYzODQKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogCisgICAgICAgIHJldHVybiBEM0QxMF9SRVFfVEVYVFVS
RTJEX1VfT1JfVl9ESU1FTlNJT047ICAgLy8gODE5MgorICAgICAgZGVmYXVsdDogVU5SRUFDSEFC
TEUoKTsgICAgICAKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitpbnQgUmVuZGVyZXIx
MTo6Z2V0TWF4VGV4dHVyZVdpZHRoKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1GZWF0dXJlTGV2
ZWwpCisgICAgeworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOiByZXR1cm4gRDNE
MTFfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOyAgIC8vIDE2Mzg0CisgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEw
XzA6IHJldHVybiBEM0QxMF9SRVFfVEVYVFVSRTJEX1VfT1JfVl9ESU1FTlNJT047ICAgLy8gODE5
MgorICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1cm4gMDsKKyAgICB9Cit9
CisKK2ludCBSZW5kZXJlcjExOjpnZXRNYXhUZXh0dXJlSGVpZ2h0KCkgY29uc3QKK3sKKyAgICBz
d2l0Y2ggKG1GZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMV8wOiByZXR1cm4gRDNEMTFfUkVRX1RFWFRVUkUyRF9VX09SX1ZfRElNRU5TSU9OOyAgIC8v
IDE2Mzg0CisgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiBEM0QxMF9SRVFfVEVYVFVSRTJEX1VfT1JfVl9E
SU1FTlNJT047ICAgLy8gODE5MgorICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICBy
ZXR1cm4gMDsKKyAgICB9Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Z2V0MzJCaXRJbmRleFN1cHBv
cnQoKSBjb25zdAoreworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6IAorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMF8xOgorICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gRDNEMTBf
UkVRX0RSQVdJTkRFWEVEX0lOREVYX0NPVU5UXzJfVE9fRVhQID49IDMyOyAgIC8vIHRydWUKKyAg
ICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
KworaW50IFJlbmRlcmVyMTE6OmdldE1pblN3YXBJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIDA7Cit9CisKK2ludCBSZW5kZXJlcjExOjpnZXRNYXhTd2FwSW50ZXJ2YWwoKSBjb25zdAor
eworICAgIHJldHVybiA0OworfQorCitpbnQgUmVuZGVyZXIxMTo6Z2V0TWF4U3VwcG9ydGVkU2Ft
cGxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1NYXhTdXBwb3J0ZWRTYW1wbGVzOworfQorCitp
bnQgUmVuZGVyZXIxMTo6Z2V0TmVhcmVzdFN1cHBvcnRlZFNhbXBsZXMoRFhHSV9GT1JNQVQgZm9y
bWF0LCB1bnNpZ25lZCBpbnQgcmVxdWVzdGVkKSBjb25zdAoreworICAgIGlmIChyZXF1ZXN0ZWQg
PT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIE11bHRpc2FtcGxl
U3VwcG9ydE1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1NdWx0aXNhbXBsZVN1cHBvcnRNYXAu
ZmluZChmb3JtYXQpOworICAgIGlmIChpdGVyICE9IG1NdWx0aXNhbXBsZVN1cHBvcnRNYXAuZW5k
KCkpCisgICAgeworICAgICAgICBjb25zdCBNdWx0aXNhbXBsZVN1cHBvcnRJbmZvJiBpbmZvID0g
aXRlci0+c2Vjb25kOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gcmVxdWVzdGVkIC0g
MTsgaSA8IEQzRDExX01BWF9NVUxUSVNBTVBMRV9TQU1QTEVfQ09VTlQ7IGkrKykKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGluZm8ucXVhbGl0eUxldmVsc1tpXSA+IDApCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGkgKyAxOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCit1bnNpZ25lZCBpbnQgUmVuZGVyZXIx
MTo6Z2V0TWF4UmVuZGVyVGFyZ2V0cygpIGNvbnN0Cit7CisgICAgTUVUQV9BU1NFUlQoRDNEMTFf
U0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQgPD0gZ2w6OklNUExFTUVOVEFUSU9OX01B
WF9EUkFXX0JVRkZFUlMpOworICAgIE1FVEFfQVNTRVJUKEQzRDEwX1NJTVVMVEFORU9VU19SRU5E
RVJfVEFSR0VUX0NPVU5UIDw9IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTKTsK
KworICAgIHN3aXRjaCAobUZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzExXzA6CisgICAgICAgIHJldHVybiBEM0QxMV9TSU1VTFRBTkVPVVNfUkVOREVS
X1RBUkdFVF9DT1VOVDsgIC8vIDgKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToK
KyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgcmV0dXJuIEQzRDEw
X1NJTVVMVEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UOyAgLy8gOAorICAgICAgZGVmYXVsdDoK
KyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCiti
b29sIFJlbmRlcmVyMTE6OmNvcHlUb1JlbmRlclRhcmdldChUZXh0dXJlU3RvcmFnZUludGVyZmFj
ZTJEICpkZXN0LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJEICpzb3VyY2UpCit7CisgICAgaWYg
KHNvdXJjZSAmJiBkZXN0KQorICAgIHsKKyAgICAgICAgVGV4dHVyZVN0b3JhZ2UxMV8yRCAqc291
cmNlMTEgPSBUZXh0dXJlU3RvcmFnZTExXzJEOjptYWtlVGV4dHVyZVN0b3JhZ2UxMV8yRChzb3Vy
Y2UtPmdldFN0b3JhZ2VJbnN0YW5jZSgpKTsKKyAgICAgICAgVGV4dHVyZVN0b3JhZ2UxMV8yRCAq
ZGVzdDExID0gVGV4dHVyZVN0b3JhZ2UxMV8yRDo6bWFrZVRleHR1cmVTdG9yYWdlMTFfMkQoZGVz
dC0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworCisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5Db3B5
UmVzb3VyY2UoZGVzdDExLT5nZXRCYXNlVGV4dHVyZSgpLCBzb3VyY2UxMS0+Z2V0QmFzZVRleHR1
cmUoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBSZW5kZXJlcjExOjpjb3B5VG9SZW5kZXJUYXJnZXQoVGV4dHVyZVN0b3JhZ2VJ
bnRlcmZhY2VDdWJlICpkZXN0LCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKnNvdXJjZSkK
K3sKKyAgICBpZiAoc291cmNlICYmIGRlc3QpCisgICAgeworICAgICAgICBUZXh0dXJlU3RvcmFn
ZTExX0N1YmUgKnNvdXJjZTExID0gVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjptYWtlVGV4dHVyZVN0
b3JhZ2UxMV9DdWJlKHNvdXJjZS0+Z2V0U3RvcmFnZUluc3RhbmNlKCkpOworICAgICAgICBUZXh0
dXJlU3RvcmFnZTExX0N1YmUgKmRlc3QxMSA9IFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6bWFrZVRl
eHR1cmVTdG9yYWdlMTFfQ3ViZShkZXN0LT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7CisKKyAgICAg
ICAgbURldmljZUNvbnRleHQtPkNvcHlSZXNvdXJjZShkZXN0MTEtPmdldEJhc2VUZXh0dXJlKCks
IHNvdXJjZTExLT5nZXRCYXNlVGV4dHVyZSgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbmRlcmVyMTE6OmNvcHlJbWFnZShn
bDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VS
ZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3Jh
Z2UsIEdMaW50IGxldmVsKQoreworICAgIGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVyID0g
ZnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpOworICAgIGlmICghY29sb3JidWZmZXIp
CisgICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgY29sb3IgYnVmZmVy
IGZyb20gdGhlIGZyYW1lIGJ1ZmZlci4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgUmVuZGVyVGFyZ2V0MTEgKnNvdXJj
ZVJlbmRlclRhcmdldCA9IFJlbmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEoY29sb3Ji
dWZmZXItPmdldFJlbmRlclRhcmdldCgpKTsKKyAgICBpZiAoIXNvdXJjZVJlbmRlclRhcmdldCkK
KyAgICB7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0
IGZyb20gdGhlIGZyYW1lIGJ1ZmZlci4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9P
VVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VW
aWV3ICpzb3VyY2UgPSBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldFNoYWRlclJlc291cmNlVmlldygp
OworICAgIGlmICghc291cmNlKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmll
dmUgdGhlIHJlbmRlciB0YXJnZXQgdmlldyBmcm9tIHRoZSByZW5kZXIgdGFyZ2V0LiIpOworICAg
ICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICB9CisK
KyAgICBUZXh0dXJlU3RvcmFnZTExXzJEICpzdG9yYWdlMTEgPSBUZXh0dXJlU3RvcmFnZTExXzJE
OjptYWtlVGV4dHVyZVN0b3JhZ2UxMV8yRChzdG9yYWdlLT5nZXRTdG9yYWdlSW5zdGFuY2UoKSk7
CisgICAgaWYgKCFzdG9yYWdlMTEpCisgICAgeworICAgICAgICBzb3VyY2UtPlJlbGVhc2UoKTsK
KyAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIHRleHR1cmUgc3RvcmFnZSBmcm9t
IHRoZSBkZXN0aW5hdGlvbi4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgUmVuZGVyVGFyZ2V0MTEgKmRlc3RSZW5kZXJU
YXJnZXQgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKHN0b3JhZ2UxMS0+Z2V0
UmVuZGVyVGFyZ2V0KGxldmVsKSk7CisgICAgaWYgKCFkZXN0UmVuZGVyVGFyZ2V0KQorICAgIHsK
KyAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJp
ZXZlIHRoZSByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIGRlc3RpbmF0aW9uIHN0b3JhZ2UuIik7Cisg
ICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0K
KworICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3QgPSBkZXN0UmVuZGVyVGFyZ2V0LT5n
ZXRSZW5kZXJUYXJnZXRWaWV3KCk7CisgICAgaWYgKCFkZXN0KQorICAgIHsKKyAgICAgICAgc291
cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5k
ZXIgdGFyZ2V0IHZpZXcgZnJvbSB0aGUgZGVzdGluYXRpb24gcmVuZGVyIHRhcmdldC4iKTsKKyAg
ICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQor
CisgICAgZ2w6OlJlY3RhbmdsZSBkZXN0UmVjdDsKKyAgICBkZXN0UmVjdC54ID0geG9mZnNldDsK
KyAgICBkZXN0UmVjdC55ID0geW9mZnNldDsKKyAgICBkZXN0UmVjdC53aWR0aCA9IHNvdXJjZVJl
Y3Qud2lkdGg7CisgICAgZGVzdFJlY3QuaGVpZ2h0ID0gc291cmNlUmVjdC5oZWlnaHQ7CisKKyAg
ICBib29sIHJldCA9IGNvcHlUZXh0dXJlKHNvdXJjZSwgc291cmNlUmVjdCwgc291cmNlUmVuZGVy
VGFyZ2V0LT5nZXRXaWR0aCgpLCBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdFJlY3QsIGRlc3RSZW5kZXJUYXJnZXQt
PmdldFdpZHRoKCksIGRlc3RSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLCBkZXN0Rm9ybWF0KTsK
KworICAgIHNvdXJjZS0+UmVsZWFzZSgpOworICAgIGRlc3QtPlJlbGVhc2UoKTsKKworICAgIHJl
dHVybiByZXQ7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Y29weUltYWdlKGdsOjpGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51bSBk
ZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCkKK3sKKyAgICBnbDo6UmVuZGVyYnVmZmVyICpjb2xvcmJ1ZmZl
ciA9IGZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKTsKKyAgICBpZiAoIWNvbG9yYnVm
ZmVyKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIGNvbG9yIGJ1
ZmZlciBmcm9tIHRoZSBmcmFtZSBidWZmZXIuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDExICpz
b3VyY2VSZW5kZXJUYXJnZXQgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKGNv
bG9yYnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKSk7CisgICAgaWYgKCFzb3VyY2VSZW5kZXJUYXJn
ZXQpCisgICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgcmVuZGVyIHRh
cmdldCBmcm9tIHRoZSBmcmFtZSBidWZmZXIuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIElEM0QxMVNoYWRlclJlc291
cmNlVmlldyAqc291cmNlID0gc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRTaGFkZXJSZXNvdXJjZVZp
ZXcoKTsKKyAgICBpZiAoIXNvdXJjZSkKKyAgICB7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJl
dHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0IHZpZXcgZnJvbSB0aGUgcmVuZGVyIHRhcmdldC4iKTsK
KyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAg
fQorCisgICAgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlICpzdG9yYWdlMTEgPSBUZXh0dXJlU3RvcmFn
ZTExX0N1YmU6Om1ha2VUZXh0dXJlU3RvcmFnZTExX0N1YmUoc3RvcmFnZS0+Z2V0U3RvcmFnZUlu
c3RhbmNlKCkpOworICAgIGlmICghc3RvcmFnZTExKQorICAgIHsKKyAgICAgICAgc291cmNlLT5S
ZWxlYXNlKCk7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSB0ZXh0dXJlIHN0
b3JhZ2UgZnJvbSB0aGUgZGVzdGluYXRpb24uIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDExICpk
ZXN0UmVuZGVyVGFyZ2V0ID0gUmVuZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShzdG9y
YWdlMTEtPmdldFJlbmRlclRhcmdldCh0YXJnZXQsIGxldmVsKSk7CisgICAgaWYgKCFkZXN0UmVu
ZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIEVS
UigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIGRlc3RpbmF0
aW9uIHN0b3JhZ2UuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSwgZmFsc2UpOworICAgIH0KKworICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3QgPSBk
ZXN0UmVuZGVyVGFyZ2V0LT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7CisgICAgaWYgKCFkZXN0KQor
ICAgIHsKKyAgICAgICAgc291cmNlLT5SZWxlYXNlKCk7CisgICAgICAgIEVSUigiRmFpbGVkIHRv
IHJldHJpZXZlIHRoZSByZW5kZXIgdGFyZ2V0IHZpZXcgZnJvbSB0aGUgZGVzdGluYXRpb24gcmVu
ZGVyIHRhcmdldC4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
LCBmYWxzZSk7CisgICAgfQorCisgICAgZ2w6OlJlY3RhbmdsZSBkZXN0UmVjdDsKKyAgICBkZXN0
UmVjdC54ID0geG9mZnNldDsKKyAgICBkZXN0UmVjdC55ID0geW9mZnNldDsKKyAgICBkZXN0UmVj
dC53aWR0aCA9IHNvdXJjZVJlY3Qud2lkdGg7CisgICAgZGVzdFJlY3QuaGVpZ2h0ID0gc291cmNl
UmVjdC5oZWlnaHQ7CisKKyAgICBib29sIHJldCA9IGNvcHlUZXh0dXJlKHNvdXJjZSwgc291cmNl
UmVjdCwgc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpLCBzb3VyY2VSZW5kZXJUYXJnZXQt
PmdldEhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdFJlY3Qs
IGRlc3RSZW5kZXJUYXJnZXQtPmdldFdpZHRoKCksIGRlc3RSZW5kZXJUYXJnZXQtPmdldEhlaWdo
dCgpLCBkZXN0Rm9ybWF0KTsKKworICAgIHNvdXJjZS0+UmVsZWFzZSgpOworICAgIGRlc3QtPlJl
bGVhc2UoKTsKKworICAgIHJldHVybiByZXQ7Cit9CisKK2Jvb2wgUmVuZGVyZXIxMTo6Y29weVRl
eHR1cmUoSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UsIGNvbnN0IGdsOjpSZWN0YW5n
bGUgJnNvdXJjZUFyZWEsIHVuc2lnbmVkIGludCBzb3VyY2VXaWR0aCwgdW5zaWduZWQgaW50IHNv
dXJjZUhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExUmVuZGVyVGFy
Z2V0VmlldyAqZGVzdCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEsIHVuc2lnbmVkIGlu
dCBkZXN0V2lkdGgsIHVuc2lnbmVkIGludCBkZXN0SGVpZ2h0LCBHTGVudW0gZGVzdEZvcm1hdCkK
K3sKKyAgICBIUkVTVUxUIHJlc3VsdDsKKworICAgIGlmICghbUNvcHlSZXNvdXJjZXNJbml0aWFs
aXplZCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbUNvcHlWQiAmJiAhbUNvcHlTYW1wbGVyICYm
ICFtQ29weUlMICYmICFtQ29weVZTICYmICFtQ29weVJHQkFQUyAmJiAhbUNvcHlSR0JQUyAmJiAh
bUNvcHlMdW1QUyAmJiAhbUNvcHlMdW1BbHBoYVBTKTsKKworICAgICAgICBEM0QxMV9CVUZGRVJf
REVTQyB2YkRlc2M7CisgICAgICAgIHZiRGVzYy5CeXRlV2lkdGggPSBzaXplb2YoZDNkMTE6OlBv
c2l0aW9uVGV4Q29vcmRWZXJ0ZXgpICogNDsKKyAgICAgICAgdmJEZXNjLlVzYWdlID0gRDNEMTFf
VVNBR0VfRFlOQU1JQzsKKyAgICAgICAgdmJEZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfVkVS
VEVYX0JVRkZFUjsKKyAgICAgICAgdmJEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FD
Q0VTU19XUklURTsKKyAgICAgICAgdmJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgIHZiRGVz
Yy5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0gMDsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5D
cmVhdGVCdWZmZXIoJnZiRGVzYywgTlVMTCwgJm1Db3B5VkIpOworICAgICAgICBBU1NFUlQoU1VD
Q0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1Db3B5VkIsICJS
ZW5kZXJlcjExIGNvcHkgdGV4dHVyZSB2ZXJ0ZXggYnVmZmVyIik7CisKKyAgICAgICAgRDNEMTFf
U0FNUExFUl9ERVNDIHNhbXBsZXJEZXNjOworICAgICAgICBzYW1wbGVyRGVzYy5GaWx0ZXIgPSBE
M0QxMV9GSUxURVJfTUlOX01BR19NSVBfTElORUFSOworICAgICAgICBzYW1wbGVyRGVzYy5BZGRy
ZXNzVSA9IEQzRDExX1RFWFRVUkVfQUREUkVTU19DTEFNUDsKKyAgICAgICAgc2FtcGxlckRlc2Mu
QWRkcmVzc1YgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7CisgICAgICAgIHNhbXBsZXJE
ZXNjLkFkZHJlc3NXID0gRDNEMTFfVEVYVFVSRV9BRERSRVNTX0NMQU1QOworICAgICAgICBzYW1w
bGVyRGVzYy5NaXBMT0RCaWFzID0gMC4wZjsKKyAgICAgICAgc2FtcGxlckRlc2MuTWF4QW5pc290
cm9weSA9IDA7CisgICAgICAgIHNhbXBsZXJEZXNjLkNvbXBhcmlzb25GdW5jID0gRDNEMTFfQ09N
UEFSSVNPTl9ORVZFUjsKKyAgICAgICAgc2FtcGxlckRlc2MuQm9yZGVyQ29sb3JbMF0gPSAwLjBm
OworICAgICAgICBzYW1wbGVyRGVzYy5Cb3JkZXJDb2xvclsxXSA9IDAuMGY7CisgICAgICAgIHNh
bXBsZXJEZXNjLkJvcmRlckNvbG9yWzJdID0gMC4wZjsKKyAgICAgICAgc2FtcGxlckRlc2MuQm9y
ZGVyQ29sb3JbM10gPSAwLjBmOworICAgICAgICBzYW1wbGVyRGVzYy5NaW5MT0QgPSAwLjBmOwor
ICAgICAgICBzYW1wbGVyRGVzYy5NYXhMT0QgPSAwLjBmOworCisgICAgICAgIHJlc3VsdCA9IG1E
ZXZpY2UtPkNyZWF0ZVNhbXBsZXJTdGF0ZSgmc2FtcGxlckRlc2MsICZtQ29weVNhbXBsZXIpOwor
ICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVi
dWdOYW1lKG1Db3B5U2FtcGxlciwgIlJlbmRlcmVyMTEgY29weSBzYW1wbGVyIik7CisKKyAgICAg
ICAgRDNEMTFfSU5QVVRfRUxFTUVOVF9ERVNDIHF1YWRMYXlvdXRbXSA9CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHsgIlBPU0lUSU9OIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAwLCAw
LCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEsIDAgfSwKKyAgICAgICAgICAgIHsgIlRFWENP
T1JEIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAwLCA4LCBEM0QxMV9JTlBVVF9QRVJf
VkVSVEVYX0RBVEEsIDAgfSwKKyAgICAgICAgfTsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNl
LT5DcmVhdGVJbnB1dExheW91dChxdWFkTGF5b3V0LCAyLCBnX1ZTX1Bhc3N0aHJvdWdoLCBzaXpl
b2YoZ19WU19QYXNzdGhyb3VnaCksICZtQ29weUlMKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURF
RChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ29weUlMLCAiUmVuZGVy
ZXIxMSBjb3B5IHRleHR1cmUgaW5wdXQgbGF5b3V0Iik7CisKKyAgICAgICAgcmVzdWx0ID0gbURl
dmljZS0+Q3JlYXRlVmVydGV4U2hhZGVyKGdfVlNfUGFzc3Rocm91Z2gsIHNpemVvZihnX1ZTX1Bh
c3N0aHJvdWdoKSwgTlVMTCwgJm1Db3B5VlMpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJl
c3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1Db3B5VlMsICJSZW5kZXJlcjEx
IGNvcHkgdGV4dHVyZSB2ZXJ0ZXggc2hhZGVyIik7CisKKyAgICAgICAgcmVzdWx0ID0gbURldmlj
ZS0+Q3JlYXRlUGl4ZWxTaGFkZXIoZ19QU19QYXNzdGhyb3VnaFJHQkEsIHNpemVvZihnX1BTX1Bh
c3N0aHJvdWdoUkdCQSksIE5VTEwsICZtQ29weVJHQkFQUyk7CisgICAgICAgIEFTU0VSVChTVUND
RUVERUQocmVzdWx0KSk7CisgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUNvcHlSR0JBUFMs
ICJSZW5kZXJlcjExIGNvcHkgdGV4dHVyZSBSR0JBIHBpeGVsIHNoYWRlciIpOworCisgICAgICAg
IHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVBpeGVsU2hhZGVyKGdfUFNfUGFzc3Rocm91Z2hSR0Is
IHNpemVvZihnX1BTX1Bhc3N0aHJvdWdoUkdCKSwgTlVMTCwgJm1Db3B5UkdCUFMpOworICAgICAg
ICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1l
KG1Db3B5UkdCUFMsICJSZW5kZXJlcjExIGNvcHkgdGV4dHVyZSBSR0IgcGl4ZWwgc2hhZGVyIik7
CisKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUGl4ZWxTaGFkZXIoZ19QU19QYXNz
dGhyb3VnaEx1bSwgc2l6ZW9mKGdfUFNfUGFzc3Rocm91Z2hMdW0pLCBOVUxMLCAmbUNvcHlMdW1Q
Uyk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgICAgIGQzZDExOjpT
ZXREZWJ1Z05hbWUobUNvcHlMdW1QUywgIlJlbmRlcmVyMTEgY29weSB0ZXh0dXJlIGx1bWluYW5j
ZSBwaXhlbCBzaGFkZXIiKTsKKworICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVQaXhl
bFNoYWRlcihnX1BTX1Bhc3N0aHJvdWdoTHVtQWxwaGEsIHNpemVvZihnX1BTX1Bhc3N0aHJvdWdo
THVtQWxwaGEpLCBOVUxMLCAmbUNvcHlMdW1BbHBoYVBTKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtQ29weUx1bUFscGhh
UFMsICJSZW5kZXJlcjExIGNvcHkgdGV4dHVyZSBsdW1pbmFuY2UgYWxwaGEgcGl4ZWwgc2hhZGVy
Iik7CisKKyAgICAgICAgbUNvcHlSZXNvdXJjZXNJbml0aWFsaXplZCA9IHRydWU7CisgICAgfQor
CisgICAgLy8gVmVyaWZ5IHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZWEgc2l6ZXMKKyAg
ICBpZiAoc291cmNlQXJlYS54IDwgMCB8fCBzb3VyY2VBcmVhLnggKyBzb3VyY2VBcmVhLndpZHRo
ID4gc3RhdGljX2Nhc3Q8aW50Pihzb3VyY2VXaWR0aCkgfHwKKyAgICAgICAgc291cmNlQXJlYS55
IDwgMCB8fCBzb3VyY2VBcmVhLnkgKyBzb3VyY2VBcmVhLmhlaWdodCA+IHN0YXRpY19jYXN0PGlu
dD4oc291cmNlSGVpZ2h0KSB8fAorICAgICAgICBkZXN0QXJlYS54IDwgMCB8fCBkZXN0QXJlYS54
ICsgZGVzdEFyZWEud2lkdGggPiBzdGF0aWNfY2FzdDxpbnQ+KGRlc3RXaWR0aCkgfHwKKyAgICAg
ICAgZGVzdEFyZWEueSA8IDAgfHwgZGVzdEFyZWEueSArIGRlc3RBcmVhLmhlaWdodCA+IHN0YXRp
Y19jYXN0PGludD4oZGVzdEhlaWdodCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX0lOVkFMSURfVkFMVUUsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvLyBTZXQgdmVydGljZXMK
KyAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7CisgICAgcmVzdWx0
ID0gbURldmljZUNvbnRleHQtPk1hcChtQ29weVZCLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FS
RCwgMCwgJm1hcHBlZFJlc291cmNlKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgewor
ICAgICAgICBFUlIoIkZhaWxlZCB0byBtYXAgdmVydGV4IGJ1ZmZlciBmb3IgdGV4dHVyZSBjb3B5
LCBIUkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xf
T1VUX09GX01FTU9SWSwgZmFsc2UpOworICAgIH0KKworICAgIGQzZDExOjpQb3NpdGlvblRleENv
b3JkVmVydGV4ICp2ZXJ0aWNlcyA9IHN0YXRpY19jYXN0PGQzZDExOjpQb3NpdGlvblRleENvb3Jk
VmVydGV4Kj4obWFwcGVkUmVzb3VyY2UucERhdGEpOworCisgICAgLy8gQ3JlYXRlIGEgcXVhZCBp
biBob21vZ2VuZW91cyBjb29yZGluYXRlcworICAgIGZsb2F0IHgxID0gKGRlc3RBcmVhLnggLyBm
bG9hdChkZXN0V2lkdGgpKSAqIDIuMGYgLSAxLjBmOworICAgIGZsb2F0IHkxID0gKChkZXN0SGVp
Z2h0IC0gZGVzdEFyZWEueSAtIGRlc3RBcmVhLmhlaWdodCkgLyBmbG9hdChkZXN0SGVpZ2h0KSkg
KiAyLjBmIC0gMS4wZjsKKyAgICBmbG9hdCB4MiA9ICgoZGVzdEFyZWEueCArIGRlc3RBcmVhLndp
ZHRoKSAvIGZsb2F0KGRlc3RXaWR0aCkpICogMi4wZiAtIDEuMGY7CisgICAgZmxvYXQgeTIgPSAo
KGRlc3RIZWlnaHQgLSBkZXN0QXJlYS55KSAvIGZsb2F0KGRlc3RIZWlnaHQpKSAqIDIuMGYgLSAx
LjBmOworCisgICAgZmxvYXQgdTEgPSBzb3VyY2VBcmVhLnggLyBmbG9hdChzb3VyY2VXaWR0aCk7
CisgICAgZmxvYXQgdjEgPSBzb3VyY2VBcmVhLnkgLyBmbG9hdChzb3VyY2VIZWlnaHQpOworICAg
IGZsb2F0IHUyID0gKHNvdXJjZUFyZWEueCArIHNvdXJjZUFyZWEud2lkdGgpIC8gZmxvYXQoc291
cmNlV2lkdGgpOworICAgIGZsb2F0IHYyID0gKHNvdXJjZUFyZWEueSArIHNvdXJjZUFyZWEuaGVp
Z2h0KSAvIGZsb2F0KHNvdXJjZUhlaWdodCk7CisKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhD
b29yZFZlcnRleCgmdmVydGljZXNbMF0sIHgxLCB5MSwgdTEsIHYyKTsKKyAgICBkM2QxMTo6U2V0
UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbMV0sIHgxLCB5MiwgdTEsIHYxKTsKKyAg
ICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbMl0sIHgyLCB5MSwg
dTIsIHYyKTsKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNb
M10sIHgyLCB5MiwgdTIsIHYxKTsKKworICAgIG1EZXZpY2VDb250ZXh0LT5Vbm1hcChtQ29weVZC
LCAwKTsKKworICAgIHN0YXRpYyBVSU5UIHN0cmlkZSA9IHNpemVvZihkM2QxMTo6UG9zaXRpb25U
ZXhDb29yZFZlcnRleCk7CisgICAgc3RhdGljIFVJTlQgc3RhcnRJZHggPSAwOworICAgIG1EZXZp
Y2VDb250ZXh0LT5JQVNldFZlcnRleEJ1ZmZlcnMoMCwgMSwgJm1Db3B5VkIsICZzdHJpZGUsICZz
dGFydElkeCk7CisKKyAgICAvLyBBcHBseSBzdGF0ZQorICAgIG1EZXZpY2VDb250ZXh0LT5PTVNl
dEJsZW5kU3RhdGUoTlVMTCwgTlVMTCwgMHhGRkZGRkZGKTsKKyAgICBtRGV2aWNlQ29udGV4dC0+
T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShOVUxMLCAweEZGRkZGRkZGKTsKKyAgICBtRGV2aWNlQ29u
dGV4dC0+UlNTZXRTdGF0ZShOVUxMKTsKKworICAgIC8vIEFwcGx5IHNoYWRlcnMKKyAgICBtRGV2
aWNlQ29udGV4dC0+SUFTZXRJbnB1dExheW91dChtQ29weUlMKTsKKyAgICBtRGV2aWNlQ29udGV4
dC0+SUFTZXRQcmltaXRpdmVUb3BvbG9neShEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xF
U1RSSVApOworICAgIG1EZXZpY2VDb250ZXh0LT5WU1NldFNoYWRlcihtQ29weVZTLCBOVUxMLCAw
KTsKKworICAgIElEM0QxMVBpeGVsU2hhZGVyICpwcyA9IE5VTEw7CisgICAgc3dpdGNoKGRlc3RG
b3JtYXQpCisgICAgeworICAgICAgY2FzZSBHTF9SR0JBOiAgICAgICAgICAgIHBzID0gbUNvcHlS
R0JBUFM7ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfUkdCOiAgICAgICAgICAgICBwcyA9IG1D
b3B5UkdCUFM7ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FMUEhBOiAgICAgICAgICAgcHMg
PSBtQ29weVJHQkFQUzsgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9CR1JBX0VYVDogICAgICAg
IHBzID0gbUNvcHlSR0JBUFM7ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOiAg
ICAgICBwcyA9IG1Db3B5THVtUFM7ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xVTUlOQU5D
RV9BTFBIQTogcHMgPSBtQ29weUx1bUFscGhhUFM7IGJyZWFrOworICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsgIHBzID0gTlVMTDsgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBt
RGV2aWNlQ29udGV4dC0+UFNTZXRTaGFkZXIocHMsIE5VTEwsIDApOworICAgIG1EZXZpY2VDb250
ZXh0LT5HU1NldFNoYWRlcihOVUxMLCBOVUxMLCAwKTsKKworICAgIC8vIFVuc2V0IHRoZSBjdXJy
ZW50bHkgYm91bmQgc2hhZGVyIHJlc291cmNlIHRvIGF2b2lkIGNvbmZsaWN0cworICAgIHN0YXRp
YyBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmNvbnN0IG51bGxTUlYgPSBOVUxMOworICAgIG1E
ZXZpY2VDb250ZXh0LT5QU1NldFNoYWRlclJlc291cmNlcygwLCAxLCAmbnVsbFNSVik7CisKKyAg
ICAvLyBBcHBseSByZW5kZXIgdGFyZ2V0CisgICAgc2V0T25lVGltZVJlbmRlclRhcmdldChkZXN0
KTsKKworICAgIC8vIFNldCB0aGUgdmlld3BvcnQKKyAgICBEM0QxMV9WSUVXUE9SVCB2aWV3cG9y
dDsKKyAgICB2aWV3cG9ydC5Ub3BMZWZ0WCA9IDA7CisgICAgdmlld3BvcnQuVG9wTGVmdFkgPSAw
OworICAgIHZpZXdwb3J0LldpZHRoID0gZGVzdFdpZHRoOworICAgIHZpZXdwb3J0LkhlaWdodCA9
IGRlc3RIZWlnaHQ7CisgICAgdmlld3BvcnQuTWluRGVwdGggPSAwLjBmOworICAgIHZpZXdwb3J0
Lk1heERlcHRoID0gMS4wZjsKKyAgICBtRGV2aWNlQ29udGV4dC0+UlNTZXRWaWV3cG9ydHMoMSwg
JnZpZXdwb3J0KTsKKworICAgIC8vIEFwcGx5IHRleHR1cmVzCisgICAgbURldmljZUNvbnRleHQt
PlBTU2V0U2hhZGVyUmVzb3VyY2VzKDAsIDEsICZzb3VyY2UpOworICAgIG1EZXZpY2VDb250ZXh0
LT5QU1NldFNhbXBsZXJzKDAsIDEsICZtQ29weVNhbXBsZXIpOworCisgICAgLy8gRHJhdyB0aGUg
cXVhZAorICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3KDQsIDApOworCisgICAgLy8gVW5iaW5kIHRl
eHR1cmVzIGFuZCByZW5kZXIgdGFyZ2V0cyBhbmQgdmVydGV4IGJ1ZmZlcgorICAgIG1EZXZpY2VD
b250ZXh0LT5QU1NldFNoYWRlclJlc291cmNlcygwLCAxLCAmbnVsbFNSVik7CisKKyAgICB1bmFw
cGx5UmVuZGVyVGFyZ2V0cygpOworCisgICAgVUlOVCB6ZXJvID0gMDsKKyAgICBJRDNEMTFCdWZm
ZXIgKmNvbnN0IG51bGxCdWZmZXIgPSBOVUxMOworICAgIG1EZXZpY2VDb250ZXh0LT5JQVNldFZl
cnRleEJ1ZmZlcnMoMCwgMSwgJm51bGxCdWZmZXIsICZ6ZXJvLCAmemVybyk7CisKKyAgICBtYXJr
QWxsU3RhdGVEaXJ0eSgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVuZGVyZXIx
MTo6dW5hcHBseVJlbmRlclRhcmdldHMoKQoreworICAgIHNldE9uZVRpbWVSZW5kZXJUYXJnZXQo
TlVMTCk7Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6c2V0T25lVGltZVJlbmRlclRhcmdldChJRDNE
MTFSZW5kZXJUYXJnZXRWaWV3ICpyZW5kZXJUYXJnZXRWaWV3KQoreworICAgIElEM0QxMVJlbmRl
clRhcmdldFZpZXcgKnJ0dkFycmF5W2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJT
XSA9IHtOVUxMfTsKKworICAgIHJ0dkFycmF5WzBdID0gcmVuZGVyVGFyZ2V0VmlldzsKKworICAg
IG1EZXZpY2VDb250ZXh0LT5PTVNldFJlbmRlclRhcmdldHMoZ2V0TWF4UmVuZGVyVGFyZ2V0cygp
LCBydHZBcnJheSwgTlVMTCk7CisKKyAgICAvLyBEbyBub3QgcHJlc2VydmUgdGhlIHNlcmlhbCBm
b3IgdGhpcyBvbmUtdGltZS11c2UgcmVuZGVyIHRhcmdldAorICAgIGZvciAodW5zaWduZWQgaW50
IHJ0SW5kZXggPSAwOyBydEluZGV4IDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZF
UlM7IHJ0SW5kZXgrKykKKyAgICB7CisgICAgICAgIG1BcHBsaWVkUmVuZGVyVGFyZ2V0U2VyaWFs
c1tydEluZGV4XSA9IDA7CisgICAgfQorfQorCitSZW5kZXJUYXJnZXQgKlJlbmRlcmVyMTE6OmNy
ZWF0ZVJlbmRlclRhcmdldChTd2FwQ2hhaW4gKnN3YXBDaGFpbiwgYm9vbCBkZXB0aCkKK3sKKyAg
ICBTd2FwQ2hhaW4xMSAqc3dhcENoYWluMTEgPSBTd2FwQ2hhaW4xMTo6bWFrZVN3YXBDaGFpbjEx
KHN3YXBDaGFpbik7CisgICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldCA9IE5VTEw7CisK
KyAgICBpZiAoZGVwdGgpCisgICAgeworICAgICAgICAvLyBOb3RlOiBkZXB0aCBzdGVuY2lsIG1h
eSBiZSBOVUxMIGZvciAwIHNpemVkIHN1cmZhY2VzCisgICAgICAgIHJlbmRlclRhcmdldCA9IG5l
dyBSZW5kZXJUYXJnZXQxMSh0aGlzLCBzd2FwQ2hhaW4xMS0+Z2V0RGVwdGhTdGVuY2lsKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwQ2hhaW4xMS0+Z2V0
RGVwdGhTdGVuY2lsVGV4dHVyZSgpLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3dhcENoYWluMTEtPmdldFdpZHRoKCksIHN3YXBDaGFpbjExLT5nZXRI
ZWlnaHQoKSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8vIE5vdGU6IHJlbmRl
ciB0YXJnZXQgbWF5IGJlIE5VTEwgZm9yIDAgc2l6ZWQgc3VyZmFjZXMKKyAgICAgICAgcmVuZGVy
VGFyZ2V0ID0gbmV3IFJlbmRlclRhcmdldDExKHRoaXMsIHN3YXBDaGFpbjExLT5nZXRSZW5kZXJU
YXJnZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YXBD
aGFpbjExLT5nZXRPZmZzY3JlZW5UZXh0dXJlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzd2FwQ2hhaW4xMS0+Z2V0UmVuZGVyVGFyZ2V0U2hhZGVyUmVzb3Vy
Y2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YXBDaGFp
bjExLT5nZXRXaWR0aCgpLCBzd2FwQ2hhaW4xMS0+Z2V0SGVpZ2h0KCkpOworICAgIH0KKyAgICBy
ZXR1cm4gcmVuZGVyVGFyZ2V0OworfQorCitSZW5kZXJUYXJnZXQgKlJlbmRlcmVyMTE6OmNyZWF0
ZVJlbmRlclRhcmdldChpbnQgd2lkdGgsIGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6
ZWkgc2FtcGxlcywgYm9vbCBkZXB0aCkKK3sKKyAgICBSZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFy
Z2V0ID0gbmV3IFJlbmRlclRhcmdldDExKHRoaXMsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgc2Ft
cGxlcywgZGVwdGgpOworICAgIHJldHVybiByZW5kZXJUYXJnZXQ7Cit9CisKK1NoYWRlckV4ZWN1
dGFibGUgKlJlbmRlcmVyMTE6OmxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBz
aXplX3QgbGVuZ3RoLCByeDo6U2hhZGVyVHlwZSB0eXBlKQoreworICAgIFNoYWRlckV4ZWN1dGFi
bGUxMSAqZXhlY3V0YWJsZSA9IE5VTEw7CisKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAg
ICAgY2FzZSByeDo6U0hBREVSX1ZFUlRFWDoKKyAgICAgICAgeworICAgICAgICAgICAgSUQzRDEx
VmVydGV4U2hhZGVyICp2c2hhZGVyID0gTlVMTDsKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0
ID0gbURldmljZS0+Q3JlYXRlVmVydGV4U2hhZGVyKGZ1bmN0aW9uLCBsZW5ndGgsIE5VTEwsICZ2
c2hhZGVyKTsKKyAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAg
ICAgICAgIGlmICh2c2hhZGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4ZWN1
dGFibGUgPSBuZXcgU2hhZGVyRXhlY3V0YWJsZTExKGZ1bmN0aW9uLCBsZW5ndGgsIHZzaGFkZXIp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBy
eDo6U0hBREVSX1BJWEVMOgorICAgICAgICB7CisgICAgICAgICAgICBJRDNEMTFQaXhlbFNoYWRl
ciAqcHNoYWRlciA9IE5VTEw7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2Ut
PkNyZWF0ZVBpeGVsU2hhZGVyKGZ1bmN0aW9uLCBsZW5ndGgsIE5VTEwsICZwc2hhZGVyKTsKKyAg
ICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgICAgIGlmIChw
c2hhZGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBuZXcg
U2hhZGVyRXhlY3V0YWJsZTExKGZ1bmN0aW9uLCBsZW5ndGgsIHBzaGFkZXIpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSByeDo6U0hBREVSX0dF
T01FVFJZOgorICAgICAgICB7CisgICAgICAgICAgICBJRDNEMTFHZW9tZXRyeVNoYWRlciAqZ3No
YWRlciA9IE5VTEw7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0
ZUdlb21ldHJ5U2hhZGVyKGZ1bmN0aW9uLCBsZW5ndGgsIE5VTEwsICZnc2hhZGVyKTsKKyAgICAg
ICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgICAgIGlmIChnc2hh
ZGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBuZXcgU2hh
ZGVyRXhlY3V0YWJsZTExKGZ1bmN0aW9uLCBsZW5ndGgsIGdzaGFkZXIpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIGV4ZWN1dGFi
bGU7Cit9CisKK1NoYWRlckV4ZWN1dGFibGUgKlJlbmRlcmVyMTE6OmNvbXBpbGVUb0V4ZWN1dGFi
bGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGNoYXIgKnNoYWRlckhMU0wsIHJ4OjpTaGFk
ZXJUeXBlIHR5cGUpCit7CisgICAgY29uc3QgY2hhciAqcHJvZmlsZSA9IE5VTEw7CisKKyAgICBz
d2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgY2FzZSByeDo6U0hBREVSX1ZFUlRFWDoKKyAgICAg
ICAgcHJvZmlsZSA9ICJ2c180XzAiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ugcng6OlNI
QURFUl9QSVhFTDoKKyAgICAgICAgcHJvZmlsZSA9ICJwc180XzAiOworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2Ugcng6OlNIQURFUl9HRU9NRVRSWToKKyAgICAgICAgcHJvZmlsZSA9ICJnc180
XzAiOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIElEM0RCbG9iICpiaW5hcnkg
PSAoSUQzREJsb2IqKWNvbXBpbGVUb0JpbmFyeShpbmZvTG9nLCBzaGFkZXJITFNMLCBwcm9maWxl
LCBEM0RDT01QSUxFX09QVElNSVpBVElPTl9MRVZFTDAsIGZhbHNlKTsKKyAgICBpZiAoIWJpbmFy
eSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBTaGFkZXJFeGVjdXRhYmxlICpleGVjdXRh
YmxlID0gbG9hZEV4ZWN1dGFibGUoKERXT1JEICopYmluYXJ5LT5HZXRCdWZmZXJQb2ludGVyKCks
IGJpbmFyeS0+R2V0QnVmZmVyU2l6ZSgpLCB0eXBlKTsKKyAgICBiaW5hcnktPlJlbGVhc2UoKTsK
KworICAgIHJldHVybiBleGVjdXRhYmxlOworfQorCitWZXJ0ZXhCdWZmZXIgKlJlbmRlcmVyMTE6
OmNyZWF0ZVZlcnRleEJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG5ldyBWZXJ0ZXhCdWZmZXIxMSh0
aGlzKTsKK30KKworSW5kZXhCdWZmZXIgKlJlbmRlcmVyMTE6OmNyZWF0ZUluZGV4QnVmZmVyKCkK
K3sKKyAgICByZXR1cm4gbmV3IEluZGV4QnVmZmVyMTEodGhpcyk7Cit9CisKK0J1ZmZlclN0b3Jh
Z2UgKlJlbmRlcmVyMTE6OmNyZWF0ZUJ1ZmZlclN0b3JhZ2UoKQoreworICAgIHJldHVybiBuZXcg
QnVmZmVyU3RvcmFnZTExKHRoaXMpOworfQorCitRdWVyeUltcGwgKlJlbmRlcmVyMTE6OmNyZWF0
ZVF1ZXJ5KEdMZW51bSB0eXBlKQoreworICAgIHJldHVybiBuZXcgUXVlcnkxMSh0aGlzLCB0eXBl
KTsKK30KKworRmVuY2VJbXBsICpSZW5kZXJlcjExOjpjcmVhdGVGZW5jZSgpCit7CisgICAgcmV0
dXJuIG5ldyBGZW5jZTExKHRoaXMpOworfQorCitib29sIFJlbmRlcmVyMTE6OmdldFJlbmRlclRh
cmdldFJlc291cmNlKGdsOjpSZW5kZXJidWZmZXIgKmNvbG9yYnVmZmVyLCB1bnNpZ25lZCBpbnQg
KnN1YnJlc291cmNlSW5kZXgsIElEM0QxMVRleHR1cmUyRCAqKnJlc291cmNlKQoreworICAgIEFT
U0VSVChjb2xvcmJ1ZmZlciAhPSBOVUxMKTsKKworICAgIFJlbmRlclRhcmdldDExICpyZW5kZXJU
YXJnZXQgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKGNvbG9yYnVmZmVyLT5n
ZXRSZW5kZXJUYXJnZXQoKSk7CisgICAgaWYgKHJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAg
ICpzdWJyZXNvdXJjZUluZGV4ID0gcmVuZGVyVGFyZ2V0LT5nZXRTdWJyZXNvdXJjZUluZGV4KCk7
CisKKyAgICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqY29sb3JCdWZmZXJSVFYgPSByZW5k
ZXJUYXJnZXQtPmdldFJlbmRlclRhcmdldFZpZXcoKTsKKyAgICAgICAgaWYgKGNvbG9yQnVmZmVy
UlRWKQorICAgICAgICB7CisgICAgICAgICAgICBJRDNEMTFSZXNvdXJjZSAqdGV4dHVyZVJlc291
cmNlID0gTlVMTDsKKyAgICAgICAgICAgIGNvbG9yQnVmZmVyUlRWLT5HZXRSZXNvdXJjZSgmdGV4
dHVyZVJlc291cmNlKTsKKyAgICAgICAgICAgIGNvbG9yQnVmZmVyUlRWLT5SZWxlYXNlKCk7CisK
KyAgICAgICAgICAgIGlmICh0ZXh0dXJlUmVzb3VyY2UpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSB0ZXh0dXJlUmVzb3VyY2UtPlF1ZXJ5SW50ZXJmYWNl
KElJRF9JRDNEMTFUZXh0dXJlMkQsICh2b2lkKiopcmVzb3VyY2UpOworICAgICAgICAgICAgICAg
IHRleHR1cmVSZXNvdXJjZS0+UmVsZWFzZSgpOworCisgICAgICAgICAgICAgICAgaWYgKFNVQ0NF
RURFRChyZXN1bHQpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIGV4dHJhY3Qg
dGhlIElEM0QxMVRleHR1cmUyRCBmcm9tIHRoZSByZW5kZXIgdGFyZ2V0IHJlc291cmNlLCAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAiSFJFU1VMVDogMHglWC4iLCByZXN1bHQpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJlcjExOjpibGl0UmVjdChnbDo6RnJhbWVidWZmZXIg
KnJlYWRUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlYWRSZWN0LCBnbDo6RnJhbWVidWZm
ZXIgKmRyYXdUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRyYXdSZWN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQsIGJvb2wgYmxpdERlcHRoU3Rl
bmNpbCkKK3sKKyAgICBpZiAoYmxpdFJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIGdsOjpS
ZW5kZXJidWZmZXIgKnJlYWRCdWZmZXIgPSByZWFkVGFyZ2V0LT5nZXRSZWFkQ29sb3JidWZmZXIo
KTsKKworICAgICAgICBpZiAoIXJlYWRCdWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVS
UigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSByZWFkIGJ1ZmZlciBmcm9tIHRoZSByZWFkIGZyYW1l
YnVmZmVyLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
LCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBSZW5kZXJUYXJnZXQgKnJlYWRSZW5kZXJU
YXJnZXQgPSByZWFkQnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKTsKKworICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBnbDo6SU1Q
TEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUzsgY29sb3JBdHRhY2htZW50KyspCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChkcmF3VGFyZ2V0LT5pc0VuYWJsZWRDb2xvckF0dGFjaG1lbnQo
Y29sb3JBdHRhY2htZW50KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnbDo6UmVu
ZGVyYnVmZmVyICpkcmF3QnVmZmVyID0gZHJhd1RhcmdldC0+Z2V0Q29sb3JidWZmZXIoY29sb3JB
dHRhY2htZW50KTsKKworICAgICAgICAgICAgICAgIGlmICghZHJhd0J1ZmZlcikKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRo
ZSBkcmF3IGJ1ZmZlciBmcm9tIHRoZSBkcmF3IGZyYW1lYnVmZmVyLiIpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXQgKmRyYXdSZW5kZXJU
YXJnZXQgPSBkcmF3QnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoKTsKKworICAgICAgICAgICAgICAg
IGlmICghYmxpdFJlbmRlcmJ1ZmZlclJlY3QocmVhZFJlY3QsIGRyYXdSZWN0LCByZWFkUmVuZGVy
VGFyZ2V0LCBkcmF3UmVuZGVyVGFyZ2V0LCBmYWxzZSkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGJsaXREZXB0aFN0ZW5jaWwpCisg
ICAgeworICAgICAgICBnbDo6UmVuZGVyYnVmZmVyICpyZWFkQnVmZmVyID0gcmVhZFRhcmdldC0+
Z2V0RGVwdGhPclN0ZW5jaWxidWZmZXIoKTsKKyAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqZHJh
d0J1ZmZlciA9IGRyYXdUYXJnZXQtPmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKCk7CisKKyAgICAg
ICAgaWYgKCFyZWFkQnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkZhaWxlZCB0
byByZXRyaWV2ZSB0aGUgcmVhZCBkZXB0aC1zdGVuY2lsIGJ1ZmZlciBmcm9tIHRoZSByZWFkIGZy
YW1lYnVmZmVyLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVN
T1JZLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWRyYXdCdWZmZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSBkcmF3IGRlcHRo
LXN0ZW5jaWwgYnVmZmVyIGZyb20gdGhlIGRyYXcgZnJhbWVidWZmZXIuIik7CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNlKTsKKyAgICAgICAgfQor
CisgICAgICAgIFJlbmRlclRhcmdldCAqcmVhZFJlbmRlclRhcmdldCA9IHJlYWRCdWZmZXItPmdl
dERlcHRoU3RlbmNpbCgpOworICAgICAgICBSZW5kZXJUYXJnZXQgKmRyYXdSZW5kZXJUYXJnZXQg
PSBkcmF3QnVmZmVyLT5nZXREZXB0aFN0ZW5jaWwoKTsKKworICAgICAgICBpZiAoIWJsaXRSZW5k
ZXJidWZmZXJSZWN0KHJlYWRSZWN0LCBkcmF3UmVjdCwgcmVhZFJlbmRlclRhcmdldCwgZHJhd1Jl
bmRlclRhcmdldCwgdHJ1ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbmRlcmVy
MTE6OnJlYWRQaXhlbHMoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgR0xpbnQgeCwgR0xp
bnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgb3V0cHV0UGl0Y2gs
IGJvb2wgcGFja1JldmVyc2VSb3dPcmRlciwgR0xpbnQgcGFja0FsaWdubWVudCwgdm9pZCogcGl4
ZWxzKQoreworICAgIElEM0QxMVRleHR1cmUyRCAqY29sb3JCdWZmZXJUZXh0dXJlID0gTlVMTDsK
KyAgICB1bnNpZ25lZCBpbnQgc3VicmVzb3VyY2VJbmRleCA9IDA7CisKKyAgICBnbDo6UmVuZGVy
YnVmZmVyICpjb2xvcmJ1ZmZlciA9IGZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKTsK
KworICAgIGlmIChjb2xvcmJ1ZmZlciAmJiBnZXRSZW5kZXJUYXJnZXRSZXNvdXJjZShjb2xvcmJ1
ZmZlciwgJnN1YnJlc291cmNlSW5kZXgsICZjb2xvckJ1ZmZlclRleHR1cmUpKQorICAgIHsKKyAg
ICAgICAgZ2w6OlJlY3RhbmdsZSBhcmVhOworICAgICAgICBhcmVhLnggPSB4OworICAgICAgICBh
cmVhLnkgPSB5OworICAgICAgICBhcmVhLndpZHRoID0gd2lkdGg7CisgICAgICAgIGFyZWEuaGVp
Z2h0ID0gaGVpZ2h0OworCisgICAgICAgIHJlYWRUZXh0dXJlRGF0YShjb2xvckJ1ZmZlclRleHR1
cmUsIHN1YnJlc291cmNlSW5kZXgsIGFyZWEsIGZvcm1hdCwgdHlwZSwgb3V0cHV0UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICBwYWNrUmV2ZXJzZVJvd09yZGVyLCBwYWNrQWxpZ25tZW50
LCBwaXhlbHMpOworCisgICAgICAgIGNvbG9yQnVmZmVyVGV4dHVyZS0+UmVsZWFzZSgpOworICAg
ICAgICBjb2xvckJ1ZmZlclRleHR1cmUgPSBOVUxMOworICAgIH0KK30KKworSW1hZ2UgKlJlbmRl
cmVyMTE6OmNyZWF0ZUltYWdlKCkKK3sKKyAgICByZXR1cm4gbmV3IEltYWdlMTEoKTsKK30KKwor
dm9pZCBSZW5kZXJlcjExOjpnZW5lcmF0ZU1pcG1hcChJbWFnZSAqZGVzdCwgSW1hZ2UgKnNyYykK
K3sKKyAgICBJbWFnZTExICpkZXN0MTEgPSBJbWFnZTExOjptYWtlSW1hZ2UxMShkZXN0KTsKKyAg
ICBJbWFnZTExICpzcmMxMSA9IEltYWdlMTE6Om1ha2VJbWFnZTExKHNyYyk7CisgICAgSW1hZ2Ux
MTo6Z2VuZXJhdGVNaXBtYXAoZGVzdDExLCBzcmMxMSk7Cit9CisKK1RleHR1cmVTdG9yYWdlICpS
ZW5kZXJlcjExOjpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKFN3YXBDaGFpbiAqc3dhcENoYWluKQor
eworICAgIFN3YXBDaGFpbjExICpzd2FwQ2hhaW4xMSA9IFN3YXBDaGFpbjExOjptYWtlU3dhcENo
YWluMTEoc3dhcENoYWluKTsKKyAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlMTFfMkQodGhp
cywgc3dhcENoYWluMTEpOworfQorCitUZXh0dXJlU3RvcmFnZSAqUmVuZGVyZXIxMTo6Y3JlYXRl
VGV4dHVyZVN0b3JhZ2UyRChpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51
bSB1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0KQoreworICAgIHJldHVybiBuZXcgVGV4dHVyZVN0b3JhZ2UxMV8yRCh0aGlzLCBsZXZlbHMs
IGludGVybmFsZm9ybWF0LCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxlLCB3aWR0aCwgaGVpZ2h0KTsK
K30KKworVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyMTE6OmNyZWF0ZVRleHR1cmVTdG9yYWdlQ3Vi
ZShpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2FnZSwgYm9vbCBm
b3JjZVJlbmRlcmFibGUsIGludCBzaXplKQoreworICAgIHJldHVybiBuZXcgVGV4dHVyZVN0b3Jh
Z2UxMV9DdWJlKHRoaXMsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHVzYWdlLCBmb3JjZVJlbmRl
cmFibGUsIHNpemUpOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRGYXN0UGl4
ZWxDb3B5U2l6ZShEWEdJX0ZPUk1BVCBzb3VyY2VGb3JtYXQsIEdMZW51bSBkZXN0Rm9ybWF0LCBH
TGVudW0gZGVzdFR5cGUpCit7CisgICAgaWYgKHNvdXJjZUZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9B
OF9VTk9STSAmJgorICAgICAgICBkZXN0Rm9ybWF0ICAgPT0gR0xfQUxQSEEgJiYKKyAgICAgICAg
ZGVzdFR5cGUgICAgID09IEdMX1VOU0lHTkVEX0JZVEUpCisgICAgeworICAgICAgICByZXR1cm4g
MTsKKyAgICB9CisgICAgZWxzZSBpZiAoc291cmNlRm9ybWF0ID09IERYR0lfRk9STUFUX1I4RzhC
OEE4X1VOT1JNICYmCisgICAgICAgICAgICAgZGVzdEZvcm1hdCAgID09IEdMX1JHQkEgJiYKKyAg
ICAgICAgICAgICBkZXN0VHlwZSAgICAgPT0gR0xfVU5TSUdORURfQllURSkKKyAgICB7CisgICAg
ICAgIHJldHVybiA0OworICAgIH0KKyAgICBlbHNlIGlmIChzb3VyY2VGb3JtYXQgPT0gRFhHSV9G
T1JNQVRfQjhHOFI4QThfVU5PUk0gJiYKKyAgICAgICAgICAgICBkZXN0Rm9ybWF0ICAgPT0gR0xf
QkdSQV9FWFQgJiYKKyAgICAgICAgICAgICBkZXN0VHlwZSAgICAgPT0gR0xfVU5TSUdORURfQllU
RSkKKyAgICB7CisgICAgICAgIHJldHVybiA0OworICAgIH0KKyAgICBlbHNlIGlmIChzb3VyY2VG
b3JtYXQgPT0gRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUICYmCisgICAgICAgICAgICAg
ZGVzdEZvcm1hdCAgID09IEdMX1JHQkEgJiYKKyAgICAgICAgICAgICBkZXN0VHlwZSAgICAgPT0g
R0xfSEFMRl9GTE9BVF9PRVMpCisgICAgeworICAgICAgICByZXR1cm4gODsKKyAgICB9CisgICAg
ZWxzZSBpZiAoc291cmNlRm9ybWF0ID09IERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCAmJgor
ICAgICAgICAgICAgIGRlc3RGb3JtYXQgICA9PSBHTF9SR0IgJiYKKyAgICAgICAgICAgICBkZXN0
VHlwZSAgICAgPT0gR0xfRkxPQVQpCisgICAgeworICAgICAgICByZXR1cm4gMTI7CisgICAgfQor
ICAgIGVsc2UgaWYgKHNvdXJjZUZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxP
QVQgJiYKKyAgICAgICAgICAgICBkZXN0Rm9ybWF0ICAgPT0gR0xfUkdCQSAmJgorICAgICAgICAg
ICAgIGRlc3RUeXBlICAgICA9PSBHTF9GTE9BVCkKKyAgICB7CisgICAgICAgIHJldHVybiAxNjsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitz
dGF0aWMgaW5saW5lIHZvaWQgcmVhZFBpeGVsQ29sb3IoY29uc3QgdW5zaWduZWQgY2hhciAqZGF0
YSwgRFhHSV9GT1JNQVQgZm9ybWF0LCB1bnNpZ25lZCBpbnQgeCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgeSwgaW50IGlucHV0UGl0Y2gsIGdsOjpDb2xv
ciAqb3V0Q29sb3IpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IHJnYmEgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBpbnQqPihkYXRh
ICsgNCAqIHggKyB5ICogaW5wdXRQaXRjaCk7CisgICAgICAgICAgICBvdXRDb2xvci0+cmVkID0g
ICAocmdiYSAmIDB4MDAwMDAwRkYpICogKDEuMGYgLyAweDAwMDAwMEZGKTsKKyAgICAgICAgICAg
IG91dENvbG9yLT5ncmVlbiA9IChyZ2JhICYgMHgwMDAwRkYwMCkgKiAoMS4wZiAvIDB4MDAwMEZG
MDApOworICAgICAgICAgICAgb3V0Q29sb3ItPmJsdWUgPSAgKHJnYmEgJiAweDAwRkYwMDAwKSAq
ICgxLjBmIC8gMHgwMEZGMDAwMCk7CisgICAgICAgICAgICBvdXRDb2xvci0+YWxwaGEgPSAocmdi
YSAmIDB4RkYwMDAwMDApICogKDEuMGYgLyAweEZGMDAwMDAwKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOF9VTk9STToKKyAgICAgICAgewor
ICAgICAgICAgICAgb3V0Q29sb3ItPnJlZCA9ICAgMC4wZjsKKyAgICAgICAgICAgIG91dENvbG9y
LT5ncmVlbiA9IDAuMGY7CisgICAgICAgICAgICBvdXRDb2xvci0+Ymx1ZSA9ICAwLjBmOworICAg
ICAgICAgICAgb3V0Q29sb3ItPmFscGhhID0gKihkYXRhICsgeCArIHkgKiBpbnB1dFBpdGNoKSAv
IDI1NS4wZjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dENvbG9y
LT5yZWQgPSAgICoocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEgKyAxNiAqIHgg
KyB5ICogaW5wdXRQaXRjaCkgKyAwKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ncmVlbiA9ICoo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEgKyAxNiAqIHggKyB5ICogaW5wdXRQ
aXRjaCkgKyAxKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ibHVlID0gICoocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBmbG9hdCo+KGRhdGEgKyAxNiAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAyKTsK
KyAgICAgICAgICAgIG91dENvbG9yLT5hbHBoYSA9ICoocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KGRhdGEgKyAxNiAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAzKTsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQ6
CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dENvbG9yLT5yZWQgPSAgICoocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBmbG9hdCo+KGRhdGEgKyAxMiAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAwKTsK
KyAgICAgICAgICAgIG91dENvbG9yLT5ncmVlbiA9ICoocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KGRhdGEgKyAxMiAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAxKTsKKyAgICAgICAgICAg
IG91dENvbG9yLT5ibHVlID0gICoocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEg
KyAxMiAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAyKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5h
bHBoYSA9IDEuMGY7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBvdXRD
b2xvci0+cmVkID0gICBnbDo6ZmxvYXQxNlRvRmxvYXQzMigqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgc2hvcnQqPihkYXRhICsgOCAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAwKSk7
CisgICAgICAgICAgICBvdXRDb2xvci0+Z3JlZW4gPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMigqKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihkYXRhICsgOCAqIHggKyB5ICog
aW5wdXRQaXRjaCkgKyAxKSk7CisgICAgICAgICAgICBvdXRDb2xvci0+Ymx1ZSA9ICBnbDo6Zmxv
YXQxNlRvRmxvYXQzMigqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihk
YXRhICsgOCAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAyKSk7CisgICAgICAgICAgICBvdXRDb2xv
ci0+YWxwaGEgPSBnbDo6ZmxvYXQxNlRvRmxvYXQzMigqKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgc2hvcnQqPihkYXRhICsgOCAqIHggKyB5ICogaW5wdXRQaXRjaCkgKyAzKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4
QThfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBiZ3JhID0gKnJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgaW50Kj4oZGF0YSArIDQgKiB4ICsgeSAqIGlu
cHV0UGl0Y2gpOworICAgICAgICAgICAgb3V0Q29sb3ItPnJlZCA9ICAgKGJncmEgJiAweDAwRkYw
MDAwKSAqICgxLjBmIC8gMHgwMEZGMDAwMCk7CisgICAgICAgICAgICBvdXRDb2xvci0+Ymx1ZSA9
ICAoYmdyYSAmIDB4MDAwMDAwRkYpICogKDEuMGYgLyAweDAwMDAwMEZGKTsKKyAgICAgICAgICAg
IG91dENvbG9yLT5ncmVlbiA9IChiZ3JhICYgMHgwMDAwRkYwMCkgKiAoMS4wZiAvIDB4MDAwMEZG
MDApOworICAgICAgICAgICAgb3V0Q29sb3ItPmFscGhhID0gKGJncmEgJiAweEZGMDAwMDAwKSAq
ICgxLjBmIC8gMHhGRjAwMDAwMCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjhfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dENv
bG9yLT5yZWQgPSAgICooZGF0YSArIHggKyB5ICogaW5wdXRQaXRjaCkgLyAyNTUuMGY7CisgICAg
ICAgICAgICBvdXRDb2xvci0+Z3JlZW4gPSAwLjBmOworICAgICAgICAgICAgb3V0Q29sb3ItPmJs
dWUgPSAgMC4wZjsKKyAgICAgICAgICAgIG91dENvbG9yLT5hbHBoYSA9IDEuMGY7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VTk9STToK
KyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcmcgPSAqcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KGRhdGEgKyAyICogeCArIHkgKiBpbnB1dFBpdGNo
KTsKKworICAgICAgICAgICAgb3V0Q29sb3ItPnJlZCA9ICAgKHJnICYgMHhGRjAwKSAqICgxLjBm
IC8gMHhGRjAwKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ncmVlbiA9IChyZyAmIDB4MDBGRikg
KiAoMS4wZiAvIDB4MDBGRik7CisgICAgICAgICAgICBvdXRDb2xvci0+Ymx1ZSA9ICAwLjBmOwor
ICAgICAgICAgICAgb3V0Q29sb3ItPmFscGhhID0gMS4wZjsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIG91dENvbG9yLT5yZWQgPSAgIGdsOjpmbG9hdDE2VG9GbG9hdDMyKCpyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oZGF0YSArIDIgKiB4ICsgeSAqIGlucHV0
UGl0Y2gpKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ncmVlbiA9IDAuMGY7CisgICAgICAgICAg
ICBvdXRDb2xvci0+Ymx1ZSA9ICAwLjBmOworICAgICAgICAgICAgb3V0Q29sb3ItPmFscGhhID0g
MS4wZjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMTZHMTZfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dENvbG9yLT5yZWQgPSAg
IGdsOjpmbG9hdDE2VG9GbG9hdDMyKCoocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBz
aG9ydCo+KGRhdGEgKyA0ICogeCArIHkgKiBpbnB1dFBpdGNoKSArIDApKTsKKyAgICAgICAgICAg
IG91dENvbG9yLT5ncmVlbiA9IGdsOjpmbG9hdDE2VG9GbG9hdDMyKCoocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KGRhdGEgKyA0ICogeCArIHkgKiBpbnB1dFBpdGNoKSAr
IDEpKTsKKyAgICAgICAgICAgIG91dENvbG9yLT5ibHVlID0gIDAuMGY7CisgICAgICAgICAgICBv
dXRDb2xvci0+YWxwaGEgPSAxLjBmOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAg
ICBkZWZhdWx0OgorICAgICAgICBFUlIoIlJlYWRQaXhlbENvbG9yIG5vdCBpbXBsZW1lbnRlZCBm
b3IgRFhHSSBmb3JtYXQgJXUuIiwgZm9ybWF0KTsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZVBpeGVs
Q29sb3IoY29uc3QgZ2w6OkNvbG9yICZjb2xvciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs
IHVuc2lnbmVkIGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgeSwgaW50IG91dHB1dFBpdGNoLCB2b2lkICpvdXREYXRhKQoreworICAgIHVuc2ln
bmVkIGNoYXIqIGJ5dGVEYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0
RGF0YSk7CisgICAgdW5zaWduZWQgc2hvcnQqIHNob3J0RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQgc2hvcnQqPihvdXREYXRhKTsKKworICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsK
KyAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7Cisg
ICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgYnl0ZURhdGFbNCAq
IHggKyB5ICogb3V0cHV0UGl0Y2ggKyAwXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1
NSAqIGNvbG9yLnJlZCAgICsgMC41Zik7CisgICAgICAgICAgICBieXRlRGF0YVs0ICogeCArIHkg
KiBvdXRwdXRQaXRjaCArIDFdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMjU1ICogY29s
b3IuZ3JlZW4gKyAwLjVmKTsKKyAgICAgICAgICAgIGJ5dGVEYXRhWzQgKiB4ICsgeSAqIG91dHB1
dFBpdGNoICsgMl0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigyNTUgKiBjb2xvci5ibHVl
ICArIDAuNWYpOworICAgICAgICAgICAgYnl0ZURhdGFbNCAqIHggKyB5ICogb3V0cHV0UGl0Y2gg
KyAzXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNvbG9yLmFscGhhICsgMC41
Zik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBFUlIoIldyaXRlUGl4ZWxDb2xvciBub3QgaW1wbGVtZW50ZWQgZm9yIGZvcm1hdCBHTF9SR0JB
IGFuZCB0eXBlIDB4JVguIiwgdHlwZSk7CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgY2Fz
ZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICB7CisgICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgYnl0ZURhdGFbNCAqIHggKyB5
ICogb3V0cHV0UGl0Y2ggKyAwXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNv
bG9yLmJsdWUgICsgMC41Zik7CisgICAgICAgICAgICBieXRlRGF0YVs0ICogeCArIHkgKiBvdXRw
dXRQaXRjaCArIDFdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMjU1ICogY29sb3IuZ3Jl
ZW4gKyAwLjVmKTsKKyAgICAgICAgICAgIGJ5dGVEYXRhWzQgKiB4ICsgeSAqIG91dHB1dFBpdGNo
ICsgMl0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigyNTUgKiBjb2xvci5yZWQgICArIDAu
NWYpOworICAgICAgICAgICAgYnl0ZURhdGFbNCAqIHggKyB5ICogb3V0cHV0UGl0Y2ggKyAzXSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNvbG9yLmFscGhhICsgMC41Zik7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80
XzRfNF9SRVZfRVhUOgorICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBkZXNrdG9wIEdM
IHNwZWMgaW4gdGhlICJUcmFuc2ZlciBvZiBQaXhlbCBSZWN0YW5nbGVzIiBzZWN0aW9uCisgICAg
ICAgICAgICAvLyB0aGlzIHR5cGUgaXMgcGFja2VkIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAv
LyAgIDE1ICAgMTQgICAxMyAgIDEyICAgMTEgICAxMCAgICA5ICAgIDggICAgNyAgICA2ICAgIDUg
ICAgNCAgICAzICAgIDIgICAgMSAgICAwCisgICAgICAgICAgICAvLyAgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyAgICAgICAgICAgIC8vIHwgICAgICAgNHRoICAgICAgICAgfCAgICAgICAgM3Jk
ICAgICAgICAgfCAgICAgICAgMm5kICAgICAgICB8ICAgMXN0IGNvbXBvbmVudCAgIHwKKyAgICAg
ICAgICAgIC8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgLy8gaW4gdGhl
IGNhc2Ugb2YgQkdSQV9FWFQsIEIgaXMgdGhlIGZpcnN0IGNvbXBvbmVudCwgRyB0aGUgc2Vjb25k
LCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICBzaG9ydERhdGFbeCArIHkgKiBvdXRwdXRQaXRj
aCAvIHNpemVvZih1bnNpZ25lZCBzaG9ydCldID0KKyAgICAgICAgICAgICAgICAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgc2hvcnQ+KDE1ICogY29sb3IuYWxwaGEgKyAwLjVmKSA8PCAxMikgfAorICAg
ICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oMTUgKiBjb2xvci5yZWQg
ICArIDAuNWYpIDw8ICA4KSB8CisgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVk
IHNob3J0PigxNSAqIGNvbG9yLmdyZWVuICsgMC41ZikgPDwgIDQpIHwKKyAgICAgICAgICAgICAg
ICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDE1ICogY29sb3IuYmx1ZSAgKyAwLjVmKSA8
PCAgMCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
U0hPUlRfMV81XzVfNV9SRVZfRVhUOgorICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBk
ZXNrdG9wIEdMIHNwZWMgaW4gdGhlICJUcmFuc2ZlciBvZiBQaXhlbCBSZWN0YW5nbGVzIiBzZWN0
aW9uCisgICAgICAgICAgICAvLyB0aGlzIHR5cGUgaXMgcGFja2VkIGFzIGZvbGxvd3M6CisgICAg
ICAgICAgICAvLyAgIDE1ICAgMTQgICAxMyAgIDEyICAgMTEgICAxMCAgICA5ICAgIDggICAgNyAg
ICA2ICAgIDUgICAgNCAgICAzICAgIDIgICAgMSAgICAwCisgICAgICAgICAgICAvLyAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIC8vIHwgNHRoIHwgICAgICAgICAgM3JkICAg
ICAgICAgICB8ICAgICAgICAgICAybmQgICAgICAgICAgfCAgICAgIDFzdCBjb21wb25lbnQgICAg
IHwKKyAgICAgICAgICAgIC8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAg
Ly8gaW4gdGhlIGNhc2Ugb2YgQkdSQV9FWFQsIEIgaXMgdGhlIGZpcnN0IGNvbXBvbmVudCwgRyB0
aGUgc2Vjb25kLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICBzaG9ydERhdGFbeCArIHkgKiBv
dXRwdXRQaXRjaCAvIHNpemVvZih1bnNpZ25lZCBzaG9ydCldID0KKyAgICAgICAgICAgICAgICAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KCAgICAgY29sb3IuYWxwaGEgKyAwLjVmKSA8PCAx
NSkgfAorICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oMzEgKiBj
b2xvci5yZWQgICArIDAuNWYpIDw8IDEwKSB8CisgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0
PHVuc2lnbmVkIHNob3J0PigzMSAqIGNvbG9yLmdyZWVuICsgMC41ZikgPDwgIDUpIHwKKyAgICAg
ICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDMxICogY29sb3IuYmx1ZSAg
KyAwLjVmKSA8PCAgMCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBFUlIoIldyaXRlUGl4ZWxDb2xvciBub3QgaW1wbGVtZW50ZWQgZm9yIGZv
cm1hdCBHTF9CR1JBX0VYVCBhbmQgdHlwZSAweCVYLiIsIHR5cGUpOworICAgICAgICAgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisKKyAgICAgIGNhc2UgR0xfUkdCOgorICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAg
IHsKKyAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgorICAgICAgICAgICAg
c2hvcnREYXRhW3ggKyB5ICogb3V0cHV0UGl0Y2ggLyBzaXplb2YodW5zaWduZWQgc2hvcnQpXSA9
CisgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PigzMSAqIGNvbG9y
LmJsdWUgICsgMC41ZikgPDwgIDApIHwKKyAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgc2hvcnQ+KDYzICogY29sb3IuZ3JlZW4gKyAwLjVmKSA8PCAgNSkgfAorICAgICAgICAg
ICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oMzEgKiBjb2xvci5yZWQgICArIDAu
NWYpIDw8IDExKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9CWVRFOgorICAgICAgICAgICAgYnl0ZURhdGFbMyAqIHggKyB5ICogb3V0cHV0UGl0Y2gg
KyAwXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSAqIGNvbG9yLnJlZCArICAgMC41
Zik7CisgICAgICAgICAgICBieXRlRGF0YVszICogeCArIHkgKiBvdXRwdXRQaXRjaCArIDFdID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMjU1ICogY29sb3IuZ3JlZW4gKyAwLjVmKTsKKyAg
ICAgICAgICAgIGJ5dGVEYXRhWzMgKiB4ICsgeSAqIG91dHB1dFBpdGNoICsgMl0gPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPigyNTUgKiBjb2xvci5ibHVlICsgIDAuNWYpOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgRVJSKCJXcml0ZVBp
eGVsQ29sb3Igbm90IGltcGxlbWVudGVkIGZvciBmb3JtYXQgR0xfUkdCIGFuZCB0eXBlIDB4JVgu
IiwgdHlwZSk7CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAg
RVJSKCJXcml0ZVBpeGVsQ29sb3Igbm90IGltcGxlbWVudGVkIGZvciBmb3JtYXQgMHglWC4iLCBm
b3JtYXQpOworICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKwordm9pZCBSZW5kZXJlcjExOjpyZWFkVGV4dHVyZURhdGEoSUQzRDExVGV4dHVyZTJEICp0
ZXh0dXJlLCB1bnNpZ25lZCBpbnQgc3ViUmVzb3VyY2UsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFy
ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwgR0xzaXplaSBvdXRwdXRQaXRjaCwgYm9vbCBwYWNrUmV2ZXJzZVJvd09yZGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcGFja0FsaWdubWVudCwgdm9p
ZCAqcGl4ZWxzKQoreworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleHR1cmVEZXNjOworICAg
IHRleHR1cmUtPkdldERlc2MoJnRleHR1cmVEZXNjKTsKKworICAgIEQzRDExX1RFWFRVUkUyRF9E
RVNDIHN0YWdpbmdEZXNjOworICAgIHN0YWdpbmdEZXNjLldpZHRoID0gYXJlYS53aWR0aDsKKyAg
ICBzdGFnaW5nRGVzYy5IZWlnaHQgPSBhcmVhLmhlaWdodDsKKyAgICBzdGFnaW5nRGVzYy5NaXBM
ZXZlbHMgPSAxOworICAgIHN0YWdpbmdEZXNjLkFycmF5U2l6ZSA9IDE7CisgICAgc3RhZ2luZ0Rl
c2MuRm9ybWF0ID0gdGV4dHVyZURlc2MuRm9ybWF0OworICAgIHN0YWdpbmdEZXNjLlNhbXBsZURl
c2MuQ291bnQgPSAxOworICAgIHN0YWdpbmdEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7Cisg
ICAgc3RhZ2luZ0Rlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOworICAgIHN0YWdpbmdE
ZXNjLkJpbmRGbGFncyA9IDA7CisgICAgc3RhZ2luZ0Rlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0Qx
MV9DUFVfQUNDRVNTX1JFQUQ7CisgICAgc3RhZ2luZ0Rlc2MuTWlzY0ZsYWdzID0gMDsKKworICAg
IElEM0QxMVRleHR1cmUyRCogc3RhZ2luZ1RleCA9IE5VTEw7CisgICAgSFJFU1VMVCByZXN1bHQg
PSBtRGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnN0YWdpbmdEZXNjLCBOVUxMLCAmc3RhZ2luZ1Rl
eCk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQg
dG8gY3JlYXRlIHN0YWdpbmcgdGV4dHVyZSBmb3IgcmVhZFBpeGVscywgSFJFU1VMVDogMHglWC4i
LCByZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSUQzRDExVGV4dHVyZTJE
KiBzcmNUZXggPSBOVUxMOworICAgIGlmICh0ZXh0dXJlRGVzYy5TYW1wbGVEZXNjLkNvdW50ID4g
MSkKKyAgICB7CisgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHJlc29sdmVEZXNjOworICAg
ICAgICByZXNvbHZlRGVzYy5XaWR0aCA9IHRleHR1cmVEZXNjLldpZHRoOworICAgICAgICByZXNv
bHZlRGVzYy5IZWlnaHQgPSB0ZXh0dXJlRGVzYy5IZWlnaHQ7CisgICAgICAgIHJlc29sdmVEZXNj
Lk1pcExldmVscyA9IDE7CisgICAgICAgIHJlc29sdmVEZXNjLkFycmF5U2l6ZSA9IDE7CisgICAg
ICAgIHJlc29sdmVEZXNjLkZvcm1hdCA9IHRleHR1cmVEZXNjLkZvcm1hdDsKKyAgICAgICAgcmVz
b2x2ZURlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7CisgICAgICAgIHJlc29sdmVEZXNjLlNhbXBs
ZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIHJlc29sdmVEZXNjLlVzYWdlID0gRDNEMTFfVVNB
R0VfREVGQVVMVDsKKyAgICAgICAgcmVzb2x2ZURlc2MuQmluZEZsYWdzID0gMDsKKyAgICAgICAg
cmVzb2x2ZURlc2MuQ1BVQWNjZXNzRmxhZ3MgPSAwOworICAgICAgICByZXNvbHZlRGVzYy5NaXNj
RmxhZ3MgPSAwOworCisgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgm
cmVzb2x2ZURlc2MsIE5VTEwsICZzcmNUZXgpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIGNyZWF0ZSByZXNvbHZlIHRl
eHR1cmUgZm9yIHJlYWRQaXhlbHMsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAg
ICAgIHN0YWdpbmdUZXgtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5SZXNvbHZlU3VicmVzb3VyY2Uoc3JjVGV4LCAw
LCB0ZXh0dXJlLCBzdWJSZXNvdXJjZSwgdGV4dHVyZURlc2MuRm9ybWF0KTsKKyAgICAgICAgc3Vi
UmVzb3VyY2UgPSAwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBzcmNUZXggPSB0
ZXh0dXJlOworICAgICAgICBzcmNUZXgtPkFkZFJlZigpOworICAgIH0KKworICAgIEQzRDExX0JP
WCBzcmNCb3g7CisgICAgc3JjQm94LmxlZnQgPSBhcmVhLng7CisgICAgc3JjQm94LnJpZ2h0ID0g
YXJlYS54ICsgYXJlYS53aWR0aDsKKyAgICBzcmNCb3gudG9wID0gYXJlYS55OworICAgIHNyY0Jv
eC5ib3R0b20gPSBhcmVhLnkgKyBhcmVhLmhlaWdodDsKKyAgICBzcmNCb3guZnJvbnQgPSAwOwor
ICAgIHNyY0JveC5iYWNrID0gMTsKKworICAgIG1EZXZpY2VDb250ZXh0LT5Db3B5U3VicmVzb3Vy
Y2VSZWdpb24oc3RhZ2luZ1RleCwgMCwgMCwgMCwgMCwgc3JjVGV4LCBzdWJSZXNvdXJjZSwgJnNy
Y0JveCk7CisKKyAgICBzcmNUZXgtPlJlbGVhc2UoKTsKKyAgICBzcmNUZXggPSBOVUxMOworCisg
ICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBpbmc7CisgICAgbURldmljZUNvbnRleHQt
Pk1hcChzdGFnaW5nVGV4LCAwLCBEM0QxMV9NQVBfUkVBRCwgMCwgJm1hcHBpbmcpOworCisgICAg
dW5zaWduZWQgY2hhciAqc291cmNlOworICAgIGludCBpbnB1dFBpdGNoOworICAgIGlmIChwYWNr
UmV2ZXJzZVJvd09yZGVyKQorICAgIHsKKyAgICAgICAgc291cmNlID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcio+KG1hcHBpbmcucERhdGEpICsgbWFwcGluZy5Sb3dQaXRjaCAqIChhcmVhLmhl
aWdodCAtIDEpOworICAgICAgICBpbnB1dFBpdGNoID0gLXN0YXRpY19jYXN0PGludD4obWFwcGlu
Zy5Sb3dQaXRjaCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHNvdXJjZSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihtYXBwaW5nLnBEYXRhKTsKKyAgICAgICAgaW5wdXRQ
aXRjaCA9IHN0YXRpY19jYXN0PGludD4obWFwcGluZy5Sb3dQaXRjaCk7CisgICAgfQorCisgICAg
dW5zaWduZWQgaW50IGZhc3RQaXhlbFNpemUgPSBnZXRGYXN0UGl4ZWxDb3B5U2l6ZSh0ZXh0dXJl
RGVzYy5Gb3JtYXQsIGZvcm1hdCwgdHlwZSk7CisgICAgaWYgKGZhc3RQaXhlbFNpemUgIT0gMCkK
KyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKmRlc3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4ocGl4ZWxzKTsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBhcmVhLmhlaWdo
dDsgaisrKQorICAgICAgICB7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCArIGogKiBvdXRwdXRQ
aXRjaCwgc291cmNlICsgaiAqIGlucHV0UGl0Y2gsIGFyZWEud2lkdGggKiBmYXN0UGl4ZWxTaXpl
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmICh0ZXh0dXJlRGVzYy5Gb3JtYXQgPT0g
RFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0gJiYKKyAgICAgICAgICAgICBmb3JtYXQgPT0gR0xf
UkdCQSAmJgorICAgICAgICAgICAgIHR5cGUgPT0gR0xfVU5TSUdORURfQllURSkKKyAgICB7Cisg
ICAgICAgIC8vIEZhc3QgcGF0aCBmb3Igc3dhcHBpbmcgcmVkIHdpdGggYmx1ZQorICAgICAgICB1
bnNpZ25lZCBjaGFyICpkZXN0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHBpeGVscyk7
CisKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBhcmVhLmhlaWdodDsgaisrKQorICAgICAg
ICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZWEud2lkdGg7IGkrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJnYiA9ICoodW5zaWdu
ZWQgaW50Kikoc291cmNlICsgNCAqIGkgKyBqICogaW5wdXRQaXRjaCk7CisgICAgICAgICAgICAg
ICAgKih1bnNpZ25lZCBpbnQqKShkZXN0ICsgNCAqIGkgKyBqICogb3V0cHV0UGl0Y2gpID0KKyAg
ICAgICAgICAgICAgICAgICAgKGFyZ2IgJiAweEZGMDBGRjAwKSB8ICAgICAgIC8vIEtlZXAgYWxw
aGEgYW5kIGdyZWVuCisgICAgICAgICAgICAgICAgICAgIChhcmdiICYgMHgwMEZGMDAwMCkgPj4g
MTYgfCAvLyBNb3ZlIHJlZCB0byBibHVlCisgICAgICAgICAgICAgICAgICAgIChhcmdiICYgMHgw
MDAwMDBGRikgPDwgMTY7ICAvLyBNb3ZlIGJsdWUgdG8gcmVkCisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZ2w6OkNvbG9yIHBpeGVsQ29s
b3I7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgYXJlYS5oZWlnaHQ7IGorKykKKyAgICAg
ICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmVhLndpZHRoOyBpKyspCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVhZFBpeGVsQ29sb3Ioc291cmNlLCB0ZXh0
dXJlRGVzYy5Gb3JtYXQsIGksIGosIGlucHV0UGl0Y2gsICZwaXhlbENvbG9yKTsKKyAgICAgICAg
ICAgICAgICB3cml0ZVBpeGVsQ29sb3IocGl4ZWxDb2xvciwgZm9ybWF0LCB0eXBlLCBpLCBqLCBv
dXRwdXRQaXRjaCwgcGl4ZWxzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIG1EZXZpY2VDb250ZXh0LT5Vbm1hcChzdGFnaW5nVGV4LCAwKTsKKworICAgIHN0YWdpbmdU
ZXgtPlJlbGVhc2UoKTsKKyAgICBzdGFnaW5nVGV4ID0gTlVMTDsKK30KKworYm9vbCBSZW5kZXJl
cjExOjpibGl0UmVuZGVyYnVmZmVyUmVjdChjb25zdCBnbDo6UmVjdGFuZ2xlICZyZWFkUmVjdCwg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmZHJhd1JlY3QsIFJlbmRlclRhcmdldCAqcmVhZFJlbmRlclRh
cmdldCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdl
dCAqZHJhd1JlbmRlclRhcmdldCwgYm9vbCB3aG9sZUJ1ZmZlckNvcHkpCit7CisgICAgQVNTRVJU
KHJlYWRSZWN0LndpZHRoID09IGRyYXdSZWN0LndpZHRoICYmIHJlYWRSZWN0LmhlaWdodCA9PSBk
cmF3UmVjdC5oZWlnaHQpOworCisgICAgUmVuZGVyVGFyZ2V0MTEgKnJlYWRSZW5kZXJUYXJnZXQx
MSA9IFJlbmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFyZ2V0MTEocmVhZFJlbmRlclRhcmdldCk7
CisgICAgaWYgKCFyZWFkUmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgRVJSKCJGYWlsZWQg
dG8gcmV0cmlldmUgdGhlIHJlYWQgcmVuZGVyIHRhcmdldCBmcm9tIHRoZSByZWFkIGZyYW1lYnVm
ZmVyLiIpOworICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIGZhbHNl
KTsKKyAgICB9CisKKyAgICBJRDNEMTFUZXh0dXJlMkQgKnJlYWRUZXh0dXJlID0gTlVMTDsKKyAg
ICB1bnNpZ25lZCBpbnQgcmVhZFN1YnJlc291cmNlID0gMDsKKyAgICBpZiAocmVhZFJlbmRlclRh
cmdldC0+Z2V0U2FtcGxlcygpID4gMCkKKyAgICB7CisgICAgICAgIElEM0QxMVRleHR1cmUyRCAq
dW5yZXNvbHZlZFRleHR1cmUgPSByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFRleHR1cmUoKTsKKwor
ICAgICAgICByZWFkVGV4dHVyZSA9IHJlc29sdmVNdWx0aXNhbXBsZWRUZXh0dXJlKHVucmVzb2x2
ZWRUZXh0dXJlLCByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFN1YnJlc291cmNlSW5kZXgoKSk7Cisg
ICAgICAgIHJlYWRTdWJyZXNvdXJjZSA9IDA7CisKKyAgICAgICAgdW5yZXNvbHZlZFRleHR1cmUt
PlJlbGVhc2UoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmVhZFRleHR1cmUg
PSByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFRleHR1cmUoKTsKKyAgICAgICAgcmVhZFN1YnJlc291
cmNlID0gcmVhZFJlbmRlclRhcmdldDExLT5nZXRTdWJyZXNvdXJjZUluZGV4KCk7CisgICAgfQor
CisgICAgaWYgKCFyZWFkVGV4dHVyZSkKKyAgICB7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJl
dHJpZXZlIHRoZSByZWFkIHJlbmRlciB0YXJnZXQgdmlldyBmcm9tIHRoZSByZWFkIHJlbmRlciB0
YXJnZXQuIik7CisgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgZmFs
c2UpOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDExICpkcmF3UmVuZGVyVGFyZ2V0MTEgPSBS
ZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRlclRhcmdldDExKGRyYXdSZW5kZXJUYXJnZXQpOworICAg
IGlmICghZHJhd1JlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIHJlYWRUZXh0dXJlLT5SZWxl
YXNlKCk7CisgICAgICAgIEVSUigiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSBkcmF3IHJlbmRlciB0
YXJnZXQgZnJvbSB0aGUgZHJhdyBmcmFtZWJ1ZmZlci4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjpl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBmYWxzZSk7CisgICAgfQorCisgICAgSUQzRDExVGV4dHVy
ZTJEICpkcmF3VGV4dHVyZSA9IGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0VGV4dHVyZSgpOworICAg
IHVuc2lnbmVkIGludCBkcmF3U3VicmVzb3VyY2UgPSBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdldFN1
YnJlc291cmNlSW5kZXgoKTsKKworICAgIEQzRDExX0JPWCByZWFkQm94OworICAgIHJlYWRCb3gu
bGVmdCA9IHJlYWRSZWN0Lng7CisgICAgcmVhZEJveC5yaWdodCA9IHJlYWRSZWN0LnggKyByZWFk
UmVjdC53aWR0aDsKKyAgICByZWFkQm94LnRvcCA9IHJlYWRSZWN0Lnk7CisgICAgcmVhZEJveC5i
b3R0b20gPSByZWFkUmVjdC55ICsgcmVhZFJlY3QuaGVpZ2h0OworICAgIHJlYWRCb3guZnJvbnQg
PSAwOworICAgIHJlYWRCb3guYmFjayA9IDE7CisKKyAgICAvLyBEM0QxMSBuZWVkcyBkZXB0aC1z
dGVuY2lsIENvcHlTdWJyZXNvdXJjZVJlZ2lvbnMgdG8gaGF2ZSBhIE5VTEwgcFNyY0JveAorICAg
IC8vIFdlIGFsc28gcmVxdWlyZSBjb21wbGV0ZSBmcmFtZWJ1ZmZlciBjb3BpZXMgZm9yIGRlcHRo
LXN0ZW5jaWwgYmxpdC4KKyAgICBEM0QxMV9CT1ggKnBTcmNCb3ggPSB3aG9sZUJ1ZmZlckNvcHkg
PyBOVUxMIDogJnJlYWRCb3g7CisKKyAgICBtRGV2aWNlQ29udGV4dC0+Q29weVN1YnJlc291cmNl
UmVnaW9uKGRyYXdUZXh0dXJlLCBkcmF3U3VicmVzb3VyY2UsIGRyYXdSZWN0LngsIGRyYXdSZWN0
LnksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkVGV4
dHVyZSwgcmVhZFN1YnJlc291cmNlLCBwU3JjQm94KTsKKworICAgIHJlYWRUZXh0dXJlLT5SZWxl
YXNlKCk7CisgICAgZHJhd1RleHR1cmUtPlJlbGVhc2UoKTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCitJRDNEMTFUZXh0dXJlMkQgKlJlbmRlcmVyMTE6OnJlc29sdmVNdWx0aXNhbXBsZWRUZXh0
dXJlKElEM0QxMVRleHR1cmUyRCAqc291cmNlLCB1bnNpZ25lZCBpbnQgc3VicmVzb3VyY2UpCit7
CisgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgdGV4dHVyZURlc2M7CisgICAgc291cmNlLT5HZXRE
ZXNjKCZ0ZXh0dXJlRGVzYyk7CisKKyAgICBpZiAodGV4dHVyZURlc2MuU2FtcGxlRGVzYy5Db3Vu
dCA+IDEpCisgICAgeworICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyByZXNvbHZlRGVzYzsK
KyAgICAgICAgcmVzb2x2ZURlc2MuV2lkdGggPSB0ZXh0dXJlRGVzYy5XaWR0aDsKKyAgICAgICAg
cmVzb2x2ZURlc2MuSGVpZ2h0ID0gdGV4dHVyZURlc2MuSGVpZ2h0OworICAgICAgICByZXNvbHZl
RGVzYy5NaXBMZXZlbHMgPSAxOworICAgICAgICByZXNvbHZlRGVzYy5BcnJheVNpemUgPSAxOwor
ICAgICAgICByZXNvbHZlRGVzYy5Gb3JtYXQgPSB0ZXh0dXJlRGVzYy5Gb3JtYXQ7CisgICAgICAg
IHJlc29sdmVEZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICByZXNvbHZlRGVzYy5T
YW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAgICByZXNvbHZlRGVzYy5Vc2FnZSA9IHRleHR1
cmVEZXNjLlVzYWdlOworICAgICAgICByZXNvbHZlRGVzYy5CaW5kRmxhZ3MgPSB0ZXh0dXJlRGVz
Yy5CaW5kRmxhZ3M7CisgICAgICAgIHJlc29sdmVEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gMDsKKyAg
ICAgICAgcmVzb2x2ZURlc2MuTWlzY0ZsYWdzID0gMDsKKworICAgICAgICBJRDNEMTFUZXh0dXJl
MkQgKnJlc29sdmVUZXh0dXJlID0gTlVMTDsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2
aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnJlc29sdmVEZXNjLCBOVUxMLCAmcmVzb2x2ZVRleHR1cmUp
OworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVS
UigiRmFpbGVkIHRvIGNyZWF0ZSBhIG11bHRpc2FtcGxlIHJlc29sdmUgdGV4dHVyZSwgSFJFU1VM
VDogMHglWC4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0K
KworICAgICAgICBtRGV2aWNlQ29udGV4dC0+UmVzb2x2ZVN1YnJlc291cmNlKHJlc29sdmVUZXh0
dXJlLCAwLCBzb3VyY2UsIHN1YnJlc291cmNlLCB0ZXh0dXJlRGVzYy5Gb3JtYXQpOworICAgICAg
ICByZXR1cm4gcmVzb2x2ZVRleHR1cmU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IHNvdXJjZS0+QWRkUmVmKCk7CisgICAgICAgIHJldHVybiBzb3VyY2U7CisgICAgfQorfQorCiti
b29sIFJlbmRlcmVyMTE6OmdldExVSUQoTFVJRCAqYWRhcHRlckx1aWQpIGNvbnN0Cit7CisgICAg
YWRhcHRlckx1aWQtPkhpZ2hQYXJ0ID0gMDsKKyAgICBhZGFwdGVyTHVpZC0+TG93UGFydCA9IDA7
CisKKyAgICBpZiAoIW1EeGdpQWRhcHRlcikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBEWEdJX0FEQVBURVJfREVTQyBhZGFwdGVyRGVzYzsKKyAgICBpZiAoRkFJ
TEVEKG1EeGdpQWRhcHRlci0+R2V0RGVzYygmYWRhcHRlckRlc2MpKSkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAqYWRhcHRlckx1aWQgPSBhZGFwdGVyRGVzYy5B
ZGFwdGVyTHVpZDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5k
ZXJlcjExLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNTEg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFJlbmRlcmVyMTEuaDogRGVmaW5lcyBhIGJhY2st
ZW5kIHNwZWNpZmljIGNsYXNzIGZvciB0aGUgRDNEMTEgcmVuZGVyZXIuCisKKyNpZm5kZWYgTElC
R0xFU1YyX1JFTkRFUkVSX1JFTkRFUkVSMTFfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVS
X1JFTkRFUkVSMTFfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL2FuZ2xldHlwZXMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvbWF0aHV0aWwu
aCIKKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlci5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJTdGF0ZUNhY2hlLmgiCisjaW5jbHVkZSAibGliR0xF
U3YyL3JlbmRlcmVyL0lucHV0TGF5b3V0Q2FjaGUuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyVGFyZ2V0LmgiCisKK25hbWVzcGFjZSBnbAoreworY2xhc3MgUmVuZGVyYnVm
ZmVyOworfQorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgVmVydGV4RGF0YU1hbmFnZXI7Citj
bGFzcyBJbmRleERhdGFNYW5hZ2VyOworY2xhc3MgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZh
Y2U7CisKK2VudW0KK3sKKyAgICBNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU19EM0QxMSA9IDEw
MjQsCisgICAgTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SU19EM0QxMSA9IDEwMjQKK307CisK
K2NsYXNzIFJlbmRlcmVyMTEgOiBwdWJsaWMgUmVuZGVyZXIKK3sKKyAgcHVibGljOgorICAgIFJl
bmRlcmVyMTEoZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBIREMgaERjKTsKKyAgICB2aXJ0dWFsIH5S
ZW5kZXJlcjExKCk7CisKKyAgICBzdGF0aWMgUmVuZGVyZXIxMSAqbWFrZVJlbmRlcmVyMTEoUmVu
ZGVyZXIgKnJlbmRlcmVyKTsKKworICAgIHZpcnR1YWwgRUdMaW50IGluaXRpYWxpemUoKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcmVzZXREZXZpY2UoKTsKKworICAgIHZpcnR1YWwgaW50IGdlbmVyYXRl
Q29uZmlncyhDb25maWdEZXNjICoqY29uZmlnRGVzY0xpc3QpOworICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVDb25maWdzKENvbmZpZ0Rlc2MgKmNvbmZpZ0Rlc2NMaXN0KTsKKworICAgIHZpcnR1YWwg
dm9pZCBzeW5jKGJvb2wgYmxvY2spOworCisgICAgdmlydHVhbCBTd2FwQ2hhaW4gKmNyZWF0ZVN3
YXBDaGFpbihIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBHTGVudW0gYmFja0J1ZmZl
ckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KTsKKworICAgIHZpcnR1YWwgdm9pZCBz
ZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgY29uc3QgZ2w6
OlNhbXBsZXJTdGF0ZSAmc2FtcGxlcik7CisgICAgdmlydHVhbCB2b2lkIHNldFRleHR1cmUoZ2w6
OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUpOworCisg
ICAgdmlydHVhbCB2b2lkIHNldFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVyaXplclN0
YXRlICZyYXN0ZXJTdGF0ZSk7CisgICAgdmlydHVhbCB2b2lkIHNldEJsZW5kU3RhdGUoY29uc3Qg
Z2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUsIGNvbnN0IGdsOjpDb2xvciAmYmxlbmRDb2xvciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlTWFzayk7
CisgICAgdmlydHVhbCB2b2lkIHNldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0
ZW5jaWxTdGF0ZSAmZGVwdGhTdGVuY2lsU3RhdGUsIGludCBzdGVuY2lsUmVmLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RlbmNpbEJhY2tSZWYsIGJvb2wgZnJv
bnRGYWNlQ0NXKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTY2lzc29yUmVjdGFuZ2xlKGNvbnN0
IGdsOjpSZWN0YW5nbGUgJnNjaXNzb3IsIGJvb2wgZW5hYmxlZCk7CisgICAgdmlydHVhbCBib29s
IHNldFZpZXdwb3J0KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnZpZXdwb3J0LCBmbG9hdCB6TmVhciwg
ZmxvYXQgekZhciwgR0xlbnVtIGRyYXdNb2RlLCBHTGVudW0gZnJvbnRGYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZVZpZXdwb3J0KTsKKworICAgIHZpcnR1YWwg
Ym9vbCBhcHBseVByaW1pdGl2ZVR5cGUoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQpOworICAg
IHZpcnR1YWwgYm9vbCBhcHBseVJlbmRlclRhcmdldChnbDo6RnJhbWVidWZmZXIgKmZyYW1lQnVm
ZmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTaGFkZXJzKGdsOjpQcm9ncmFtQmluYXJ5ICpw
cm9ncmFtQmluYXJ5KTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlVbmlmb3JtcyhnbDo6UHJvZ3Jh
bUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSwgZ2w6OlVuaWZvcm1BcnJheSAqdW5pZm9ybUFycmF5KTsK
KyAgICB2aXJ0dWFsIEdMZW51bSBhcHBseVZlcnRleEJ1ZmZlcihnbDo6UHJvZ3JhbUJpbmFyeSAq
cHJvZ3JhbUJpbmFyeSwgZ2w6OlZlcnRleEF0dHJpYnV0ZSB2ZXJ0ZXhBdHRyaWJ1dGVzW10sIEdM
aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcyk7CisgICAgdmlydHVh
bCBHTGVudW0gYXBwbHlJbmRleEJ1ZmZlcihjb25zdCBHTHZvaWQgKmluZGljZXMsIGdsOjpCdWZm
ZXIgKmVsZW1lbnRBcnJheUJ1ZmZlciwgR0xzaXplaSBjb3VudCwgR0xlbnVtIG1vZGUsIEdMZW51
bSB0eXBlLCBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8pOworCisgICAgdmlydHVhbCB2
b2lkIGRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFu
Y2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVp
IGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICpl
bGVtZW50QXJyYXlCdWZmZXIsIGNvbnN0IFRyYW5zbGF0ZWRJbmRleERhdGEgJmluZGV4SW5mbywg
R0xzaXplaSBpbnN0YW5jZXMpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyKGNvbnN0IGdsOjpD
bGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lQnVmZmVy
KTsKKworICAgIHZpcnR1YWwgdm9pZCBtYXJrQWxsU3RhdGVEaXJ0eSgpOworCisgICAgLy8gbG9z
dCBkZXZpY2UKKyAgICB2b2lkIG5vdGlmeURldmljZUxvc3QoKTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNEZXZpY2VMb3N0KCk7CisgICAgdmlydHVhbCBib29sIHRlc3REZXZpY2VMb3N0KGJvb2wgbm90
aWZ5KTsKKyAgICB2aXJ0dWFsIGJvb2wgdGVzdERldmljZVJlc2V0dGFibGUoKTsKKworICAgIC8v
IFJlbmRlcmVyIGNhcGFiaWxpdGllcworICAgIHZpcnR1YWwgRFdPUkQgZ2V0QWRhcHRlclZlbmRv
cigpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNjcmlwdGlv
bigpIGNvbnN0OworICAgIHZpcnR1YWwgR1VJRCBnZXRBZGFwdGVySWRlbnRpZmllcigpIGNvbnN0
OworCisgICAgdmlydHVhbCBib29sIGdldEJHUkFUZXh0dXJlU3VwcG9ydCgpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBnZXREWFQxVGV4dHVyZVN1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wg
Z2V0RFhUM1RleHR1cmVTdXBwb3J0KCk7CisgICAgdmlydHVhbCBib29sIGdldERYVDVUZXh0dXJl
U3VwcG9ydCgpOworICAgIHZpcnR1YWwgYm9vbCBnZXRFdmVudFF1ZXJ5U3VwcG9ydCgpOworICAg
IHZpcnR1YWwgYm9vbCBnZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQoYm9vbCAqZmlsdGVyaW5nLCBi
b29sICpyZW5kZXJhYmxlKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RmxvYXQxNlRleHR1cmVTdXBw
b3J0KGJvb2wgKmZpbHRlcmluZywgYm9vbCAqcmVuZGVyYWJsZSk7CisgICAgdmlydHVhbCBib29s
IGdldEx1bWluYW5jZVRleHR1cmVTdXBwb3J0KCk7CisgICAgdmlydHVhbCBib29sIGdldEx1bWlu
YW5jZUFscGhhVGV4dHVyZVN1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRN
YXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQg
aW50IGdldE1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1WZWN0b3Jz
KCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4VmVydGV4VW5pZm9ybVZl
Y3RvcnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhGcmFnbWVudFVu
aWZvcm1WZWN0b3JzKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TWF4VmFy
eWluZ1ZlY3RvcnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0Tm9uUG93ZXIyVGV4dHVy
ZVN1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RGVwdGhUZXh0dXJlU3VwcG9y
dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRPY2NsdXNpb25RdWVyeVN1cHBvcnQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SW5zdGFuY2luZ1N1cHBvcnQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0VGV4dHVyZUZpbHRlckFuaXNvdHJvcHlTdXBwb3J0KCkgY29uc3Q7
CisgICAgdmlydHVhbCBmbG9hdCBnZXRUZXh0dXJlTWF4QW5pc290cm9weSgpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBnZXRTaGFyZUhhbmRsZVN1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0RGVyaXZhdGl2ZUluc3RydWN0aW9uU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBnZXRQb3N0U3ViQnVmZmVyU3VwcG9ydCgpIGNvbnN0OworCisgICAgdmlydHVhbCBp
bnQgZ2V0TWFqb3JTaGFkZXJNb2RlbCgpIGNvbnN0OworICAgIHZpcnR1YWwgZmxvYXQgZ2V0TWF4
UG9pbnRTaXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgZ2V0TWF4Vmlld3BvcnREaW1lbnNp
b24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBnZXRNYXhUZXh0dXJlV2lkdGgoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGludCBnZXRNYXhUZXh0dXJlSGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGdldDMyQml0SW5kZXhTdXBwb3J0KCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgZ2V0
TWluU3dhcEludGVydmFsKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgZ2V0TWF4U3dhcEludGVy
dmFsKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0TWF4U3VwcG9ydGVkU2FtcGxl
cygpIGNvbnN0OworICAgIGludCBnZXROZWFyZXN0U3VwcG9ydGVkU2FtcGxlcyhEWEdJX0ZPUk1B
VCBmb3JtYXQsIHVuc2lnbmVkIGludCByZXF1ZXN0ZWQpIGNvbnN0OworCisgICAgdmlydHVhbCB1
bnNpZ25lZCBpbnQgZ2V0TWF4UmVuZGVyVGFyZ2V0cygpIGNvbnN0OworCisgICAgLy8gUGl4ZWwg
b3BlcmF0aW9ucworICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9SZW5kZXJUYXJnZXQoVGV4dHVyZVN0
b3JhZ2VJbnRlcmZhY2UyRCAqZGVzdCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqc291cmNl
KTsKKyAgICB2aXJ0dWFsIGJvb2wgY29weVRvUmVuZGVyVGFyZ2V0KFRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlQ3ViZSAqZGVzdCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzb3VyY2UpOwor
CisgICAgdmlydHVhbCBib29sIGNvcHlJbWFnZShnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVy
LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIFRl
eHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgKnN0b3JhZ2UsIEdMaW50IGxldmVsKTsKKyAgICB2aXJ0
dWFsIGJvb2wgY29weUltYWdlKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGds
OjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3Jh
Z2VJbnRlcmZhY2VDdWJlICpzdG9yYWdlLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCk7CisK
KyAgICBib29sIGNvcHlUZXh0dXJlKElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291cmNlLCBj
b25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCB1bnNpZ25lZCBpbnQgc291cmNlV2lkdGgs
IHVuc2lnbmVkIGludCBzb3VyY2VIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICBJRDNEMTFS
ZW5kZXJUYXJnZXRWaWV3ICpkZXN0LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwgdW5z
aWduZWQgaW50IGRlc3RXaWR0aCwgdW5zaWduZWQgaW50IGRlc3RIZWlnaHQsIEdMZW51bSBkZXN0
Rm9ybWF0KTsKKworICAgIHZpcnR1YWwgYm9vbCBibGl0UmVjdChnbDo6RnJhbWVidWZmZXIgKnJl
YWRUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlYWRSZWN0LCBnbDo6RnJhbWVidWZmZXIg
KmRyYXdUYXJnZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRyYXdSZWN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQsIGJvb2wgYmxpdERlcHRoU3RlbmNp
bCk7CisgICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1
ZmZlciwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgb3V0cHV0UGl0Y2gsIGJvb2wgcGFja1JldmVyc2VSb3dPcmRlciwgR0xpbnQgcGFja0Fs
aWdubWVudCwgdm9pZCogcGl4ZWxzKTsKKworICAgIC8vIFJlbmRlclRhcmdldCBjcmVhdGlvbgor
ICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpjcmVhdGVSZW5kZXJUYXJnZXQoU3dhcENoYWluICpz
d2FwQ2hhaW4sIGJvb2wgZGVwdGgpOworICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpjcmVhdGVS
ZW5kZXJUYXJnZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVp
IHNhbXBsZXMsIGJvb2wgZGVwdGgpOworCisgICAgLy8gU2hhZGVyIG9wZXJhdGlvbnMKKyAgICB2
aXJ0dWFsIFNoYWRlckV4ZWN1dGFibGUgKmxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0
aW9uLCBzaXplX3QgbGVuZ3RoLCByeDo6U2hhZGVyVHlwZSB0eXBlKTsKKyAgICB2aXJ0dWFsIFNo
YWRlckV4ZWN1dGFibGUgKmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2cs
IGNvbnN0IGNoYXIgKnNoYWRlckhMU0wsIHJ4OjpTaGFkZXJUeXBlIHR5cGUpOworCisgICAgLy8g
SW1hZ2Ugb3BlcmF0aW9ucworICAgIHZpcnR1YWwgSW1hZ2UgKmNyZWF0ZUltYWdlKCk7CisgICAg
dmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwKEltYWdlICpkZXN0LCBJbWFnZSAqc291cmNlKTsK
KyAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKFN3YXBD
aGFpbiAqc3dhcENoYWluKTsKKyAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0
dXJlU3RvcmFnZTJEKGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVz
YWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
OworICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlQ3ViZShp
bnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2FnZSwgYm9vbCBmb3Jj
ZVJlbmRlcmFibGUsIGludCBzaXplKTsKKworICAgIC8vIEJ1ZmZlciBjcmVhdGlvbgorICAgIHZp
cnR1YWwgVmVydGV4QnVmZmVyICpjcmVhdGVWZXJ0ZXhCdWZmZXIoKTsKKyAgICB2aXJ0dWFsIElu
ZGV4QnVmZmVyICpjcmVhdGVJbmRleEJ1ZmZlcigpOworICAgIHZpcnR1YWwgQnVmZmVyU3RvcmFn
ZSAqY3JlYXRlQnVmZmVyU3RvcmFnZSgpOworCisgICAgLy8gUXVlcnkgYW5kIEZlbmNlIGNyZWF0
aW9uCisgICAgdmlydHVhbCBRdWVyeUltcGwgKmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKTsKKyAg
ICB2aXJ0dWFsIEZlbmNlSW1wbCAqY3JlYXRlRmVuY2UoKTsKKworICAgIC8vIEQzRDExLXJlbmRl
cmVyIHNwZWNpZmljIG1ldGhvZHMKKyAgICBJRDNEMTFEZXZpY2UgKmdldERldmljZSgpIHsgcmV0
dXJuIG1EZXZpY2U7IH0KKyAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpnZXREZXZpY2VDb250ZXh0
KCkgeyByZXR1cm4gbURldmljZUNvbnRleHQ7IH07CisgICAgSURYR0lGYWN0b3J5ICpnZXREeGdp
RmFjdG9yeSgpIHsgcmV0dXJuIG1EeGdpRmFjdG9yeTsgfTsKKworICAgIGJvb2wgZ2V0UmVuZGVy
VGFyZ2V0UmVzb3VyY2UoZ2w6OlJlbmRlcmJ1ZmZlciAqY29sb3JidWZmZXIsIHVuc2lnbmVkIGlu
dCAqc3VicmVzb3VyY2VJbmRleCwgSUQzRDExVGV4dHVyZTJEICoqcmVzb3VyY2UpOworICAgIHZv
aWQgdW5hcHBseVJlbmRlclRhcmdldHMoKTsKKyAgICB2b2lkIHNldE9uZVRpbWVSZW5kZXJUYXJn
ZXQoSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqcmVuZGVyVGFyZ2V0Vmlldyk7CisKKyAgICB2aXJ0
dWFsIGJvb2wgZ2V0TFVJRChMVUlEICphZGFwdGVyTHVpZCkgY29uc3Q7CisKKyAgcHJpdmF0ZToK
KyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVuZGVyZXIxMSk7CisKKyAgICB2b2lkIGRy
YXdMaW5lTG9vcChHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRp
Y2VzLCBpbnQgbWluSW5kZXgsIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlcik7CisgICAg
dm9pZCBkcmF3VHJpYW5nbGVGYW4oR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdM
dm9pZCAqaW5kaWNlcywgaW50IG1pbkluZGV4LCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZm
ZXIsIGludCBpbnN0YW5jZXMpOworCisgICAgdm9pZCByZWFkVGV4dHVyZURhdGEoSUQzRDExVGV4
dHVyZTJEICp0ZXh0dXJlLCB1bnNpZ25lZCBpbnQgc3ViUmVzb3VyY2UsIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsIEdMc2l6ZWkgb3V0cHV0UGl0Y2gsIGJvb2wgcGFja1JldmVyc2VSb3dPcmRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBwYWNrQWxpZ25tZW50LCB2b2lkICpwaXhl
bHMpOworCisgICAgdm9pZCBtYXNrZWRDbGVhcihjb25zdCBnbDo6Q2xlYXJQYXJhbWV0ZXJzICZj
bGVhclBhcmFtcywgYm9vbCB1c2luZ0V4dGVuZGVkRHJhd0J1ZmZlcnMpOworICAgIHJ4OjpSYW5n
ZSBnZXRWaWV3cG9ydEJvdW5kcygpIGNvbnN0OworCisgICAgYm9vbCBibGl0UmVuZGVyYnVmZmVy
UmVjdChjb25zdCBnbDo6UmVjdGFuZ2xlICZyZWFkUmVjdCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAm
ZHJhd1JlY3QsIFJlbmRlclRhcmdldCAqcmVhZFJlbmRlclRhcmdldCwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXQgKmRyYXdSZW5kZXJUYXJnZXQsIGJvb2wgd2hv
bGVCdWZmZXJDb3B5KTsKKyAgICBJRDNEMTFUZXh0dXJlMkQgKnJlc29sdmVNdWx0aXNhbXBsZWRU
ZXh0dXJlKElEM0QxMVRleHR1cmUyRCAqc291cmNlLCB1bnNpZ25lZCBpbnQgc3VicmVzb3VyY2Up
OworCisgICAgSE1PRFVMRSBtRDNkMTFNb2R1bGU7CisgICAgSE1PRFVMRSBtRHhnaU1vZHVsZTsK
KyAgICBIREMgbURjOworCisgICAgYm9vbCBtRGV2aWNlTG9zdDsKKworICAgIHZvaWQgaW5pdGlh
bGl6ZURldmljZSgpOworICAgIHZvaWQgcmVsZWFzZURldmljZVJlc291cmNlcygpOworICAgIGlu
dCBnZXRNaW5vclNoYWRlck1vZGVsKCkgY29uc3Q7CisgICAgdm9pZCByZWxlYXNlKCk7CisKKyAg
ICBSZW5kZXJTdGF0ZUNhY2hlIG1TdGF0ZUNhY2hlOworCisgICAgLy8gU3VwcG9ydCBmbGFncwor
ICAgIGJvb2wgbUZsb2F0MTZUZXh0dXJlU3VwcG9ydDsKKyAgICBib29sIG1GbG9hdDE2RmlsdGVy
U3VwcG9ydDsKKyAgICBib29sIG1GbG9hdDE2UmVuZGVyU3VwcG9ydDsKKworICAgIGJvb2wgbUZs
b2F0MzJUZXh0dXJlU3VwcG9ydDsKKyAgICBib29sIG1GbG9hdDMyRmlsdGVyU3VwcG9ydDsKKyAg
ICBib29sIG1GbG9hdDMyUmVuZGVyU3VwcG9ydDsKKworICAgIGJvb2wgbURYVDFUZXh0dXJlU3Vw
cG9ydDsKKyAgICBib29sIG1EWFQzVGV4dHVyZVN1cHBvcnQ7CisgICAgYm9vbCBtRFhUNVRleHR1
cmVTdXBwb3J0OworCisgICAgYm9vbCBtRGVwdGhUZXh0dXJlU3VwcG9ydDsKKworICAgIC8vIE11
bHRpc2FtcGxlIGZvcm1hdCBzdXBwb3J0CisgICAgc3RydWN0IE11bHRpc2FtcGxlU3VwcG9ydElu
Zm8KKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBxdWFsaXR5TGV2ZWxzW0QzRDExX01BWF9N
VUxUSVNBTVBMRV9TQU1QTEVfQ09VTlRdOworICAgIH07CisKKyAgICB0eXBlZGVmIHN0ZDo6dW5v
cmRlcmVkX21hcDxEWEdJX0ZPUk1BVCwgTXVsdGlzYW1wbGVTdXBwb3J0SW5mbz4gTXVsdGlzYW1w
bGVTdXBwb3J0TWFwOworICAgIE11bHRpc2FtcGxlU3VwcG9ydE1hcCBtTXVsdGlzYW1wbGVTdXBw
b3J0TWFwOworCisgICAgdW5zaWduZWQgaW50IG1NYXhTdXBwb3J0ZWRTYW1wbGVzOworCisgICAg
Ly8gY3VycmVudCByZW5kZXIgdGFyZ2V0IHN0YXRlcworICAgIHVuc2lnbmVkIGludCBtQXBwbGll
ZFJlbmRlclRhcmdldFNlcmlhbHNbZ2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlNd
OworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZERlcHRoYnVmZmVyU2VyaWFsOworICAgIHVuc2ln
bmVkIGludCBtQXBwbGllZFN0ZW5jaWxidWZmZXJTZXJpYWw7CisgICAgYm9vbCBtRGVwdGhTdGVu
Y2lsSW5pdGlhbGl6ZWQ7CisgICAgYm9vbCBtUmVuZGVyVGFyZ2V0RGVzY0luaXRpYWxpemVkOwor
ICAgIHJ4OjpSZW5kZXJUYXJnZXQ6OkRlc2MgbVJlbmRlclRhcmdldERlc2M7CisgICAgdW5zaWdu
ZWQgaW50IG1DdXJEZXB0aFNpemU7CisgICAgdW5zaWduZWQgaW50IG1DdXJTdGVuY2lsU2l6ZTsK
KworICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIHNhbXBsZXIgc3RhdGVzCisgICAgYm9vbCBtRm9y
Y2VTZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RF
WFRVUkVfSU1BR0VfVU5JVFNdOworICAgIGdsOjpTYW1wbGVyU3RhdGUgbUN1clZlcnRleFNhbXBs
ZXJTdGF0ZXNbZ2w6OklNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklU
U107CisKKyAgICBib29sIG1Gb3JjZVNldFBpeGVsU2FtcGxlclN0YXRlc1tnbDo6TUFYX1RFWFRV
UkVfSU1BR0VfVU5JVFNdOworICAgIGdsOjpTYW1wbGVyU3RhdGUgbUN1clBpeGVsU2FtcGxlclN0
YXRlc1tnbDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworCisgICAgLy8gQ3VycmVudGx5IGFw
cGxpZWQgdGV4dHVyZXMKKyAgICB1bnNpZ25lZCBpbnQgbUN1clZlcnRleFRleHR1cmVTZXJpYWxz
W2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNdOworICAg
IHVuc2lnbmVkIGludCBtQ3VyUGl4ZWxUZXh0dXJlU2VyaWFsc1tnbDo6TUFYX1RFWFRVUkVfSU1B
R0VfVU5JVFNdOworCisgICAgLy8gQ3VycmVudGx5IGFwcGxpZWQgYmxlbmQgc3RhdGUKKyAgICBi
b29sIG1Gb3JjZVNldEJsZW5kU3RhdGU7CisgICAgZ2w6OkJsZW5kU3RhdGUgbUN1ckJsZW5kU3Rh
dGU7CisgICAgZ2w6OkNvbG9yIG1DdXJCbGVuZENvbG9yOworICAgIHVuc2lnbmVkIGludCBtQ3Vy
U2FtcGxlTWFzazsKKworICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIHJhc3Rlcml6ZXIgc3RhdGUK
KyAgICBib29sIG1Gb3JjZVNldFJhc3RlclN0YXRlOworICAgIGdsOjpSYXN0ZXJpemVyU3RhdGUg
bUN1clJhc3RlclN0YXRlOworCisgICAgLy8gQ3VycmVudGx5IGFwcGxpZWQgZGVwdGggc3RlbmNp
bCBzdGF0ZQorICAgIGJvb2wgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGU7CisgICAgZ2w6OkRl
cHRoU3RlbmNpbFN0YXRlIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICBpbnQgbUN1clN0ZW5j
aWxSZWY7CisgICAgaW50IG1DdXJTdGVuY2lsQmFja1JlZjsKKworICAgIC8vIEN1cnJlbnRseSBh
cHBsaWVkIHNjaXNzb3IgcmVjdGFuZ2xlCisgICAgYm9vbCBtRm9yY2VTZXRTY2lzc29yOworICAg
IGJvb2wgbVNjaXNzb3JFbmFibGVkOworICAgIGdsOjpSZWN0YW5nbGUgbUN1clNjaXNzb3I7CisK
KyAgICAvLyBDdXJyZW50bHkgYXBwbGllZCB2aWV3cG9ydAorICAgIGJvb2wgbUZvcmNlU2V0Vmll
d3BvcnQ7CisgICAgZ2w6OlJlY3RhbmdsZSBtQ3VyVmlld3BvcnQ7CisgICAgZmxvYXQgbUN1ck5l
YXI7CisgICAgZmxvYXQgbUN1ckZhcjsKKworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZElCU2Vy
aWFsOworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZFN0b3JhZ2VJQlNlcmlhbDsKKyAgICB1bnNp
Z25lZCBpbnQgbUFwcGxpZWRJQk9mZnNldDsKKworICAgIHVuc2lnbmVkIGludCBtQXBwbGllZFBy
b2dyYW1CaW5hcnlTZXJpYWw7CisgICAgYm9vbCBtSXNHZW9tZXRyeVNoYWRlckFjdGl2ZTsKKwor
ICAgIGR4X1ZlcnRleENvbnN0YW50cyBtVmVydGV4Q29uc3RhbnRzOworICAgIGR4X1ZlcnRleENv
bnN0YW50cyBtQXBwbGllZFZlcnRleENvbnN0YW50czsKKyAgICBJRDNEMTFCdWZmZXIgKm1Ecml2
ZXJDb25zdGFudEJ1ZmZlclZTOworCisgICAgZHhfUGl4ZWxDb25zdGFudHMgbVBpeGVsQ29uc3Rh
bnRzOworICAgIGR4X1BpeGVsQ29uc3RhbnRzIG1BcHBsaWVkUGl4ZWxDb25zdGFudHM7CisgICAg
SUQzRDExQnVmZmVyICptRHJpdmVyQ29uc3RhbnRCdWZmZXJQUzsKKworICAgIC8vIFZlcnRleCwg
aW5kZXggYW5kIGlucHV0IGxheW91dHMKKyAgICBWZXJ0ZXhEYXRhTWFuYWdlciAqbVZlcnRleERh
dGFNYW5hZ2VyOworICAgIEluZGV4RGF0YU1hbmFnZXIgKm1JbmRleERhdGFNYW5hZ2VyOworICAg
IElucHV0TGF5b3V0Q2FjaGUgbUlucHV0TGF5b3V0Q2FjaGU7CisKKyAgICBTdHJlYW1pbmdJbmRl
eEJ1ZmZlckludGVyZmFjZSAqbUxpbmVMb29wSUI7CisgICAgU3RyZWFtaW5nSW5kZXhCdWZmZXJJ
bnRlcmZhY2UgKm1UcmlhbmdsZUZhbklCOworCisgICAgLy8gVGV4dHVyZSBjb3B5IHJlc291cmNl
cworICAgIGJvb2wgbUNvcHlSZXNvdXJjZXNJbml0aWFsaXplZDsKKyAgICBJRDNEMTFCdWZmZXIg
Km1Db3B5VkI7CisgICAgSUQzRDExU2FtcGxlclN0YXRlICptQ29weVNhbXBsZXI7CisgICAgSUQz
RDExSW5wdXRMYXlvdXQgKm1Db3B5SUw7CisgICAgSUQzRDExVmVydGV4U2hhZGVyICptQ29weVZT
OworICAgIElEM0QxMVBpeGVsU2hhZGVyICptQ29weVJHQkFQUzsKKyAgICBJRDNEMTFQaXhlbFNo
YWRlciAqbUNvcHlSR0JQUzsKKyAgICBJRDNEMTFQaXhlbFNoYWRlciAqbUNvcHlMdW1QUzsKKyAg
ICBJRDNEMTFQaXhlbFNoYWRlciAqbUNvcHlMdW1BbHBoYVBTOworCisgICAgLy8gTWFza2VkIGNs
ZWFyIHJlc291cmNlcworICAgIGJvb2wgbUNsZWFyUmVzb3VyY2VzSW5pdGlhbGl6ZWQ7CisgICAg
SUQzRDExQnVmZmVyICptQ2xlYXJWQjsKKyAgICBJRDNEMTFJbnB1dExheW91dCAqbUNsZWFySUw7
CisgICAgSUQzRDExVmVydGV4U2hhZGVyICptQ2xlYXJWUzsKKyAgICBJRDNEMTFQaXhlbFNoYWRl
ciAqbUNsZWFyU2luZ2xlUFM7CisgICAgSUQzRDExUGl4ZWxTaGFkZXIgKm1DbGVhck11bHRpcGxl
UFM7CisgICAgSUQzRDExUmFzdGVyaXplclN0YXRlICptQ2xlYXJTY2lzc29yUlM7CisgICAgSUQz
RDExUmFzdGVyaXplclN0YXRlICptQ2xlYXJOb1NjaXNzb3JSUzsKKworICAgIC8vIFN5bmMgcXVl
cnkKKyAgICBJRDNEMTFRdWVyeSAqbVN5bmNRdWVyeTsKKworICAgIElEM0QxMURldmljZSAqbURl
dmljZTsKKyAgICBEM0RfRkVBVFVSRV9MRVZFTCBtRmVhdHVyZUxldmVsOworICAgIElEM0QxMURl
dmljZUNvbnRleHQgKm1EZXZpY2VDb250ZXh0OworICAgIElEWEdJQWRhcHRlciAqbUR4Z2lBZGFw
dGVyOworICAgIERYR0lfQURBUFRFUl9ERVNDIG1BZGFwdGVyRGVzY3JpcHRpb247CisgICAgY2hh
ciBtRGVzY3JpcHRpb25bMTI4XTsKKyAgICBJRFhHSUZhY3RvcnkgKm1EeGdpRmFjdG9yeTsKKwor
ICAgIC8vIENhY2hlZCBkZXZpY2UgY2FwcworICAgIGJvb2wgbUJHUkFUZXh0dXJlU3VwcG9ydDsK
K307CisKK30KKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfUkVOREVSRVIxMV9IXwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9SZW5kZXJlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyMjAgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHly
aWdodCAoYykgMjAxMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gUmVuZGVyZXIuY3BwOiBJbXBsZW1lbnRzIEVHTCBkZXBlbmRlbmNpZXMgZm9y
IGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIFJlbmRlcmVyIGluc3RhbmNlcy4KKworI2luY2x1ZGUg
PEVHTC9lZ2xleHQuaD4KKyNpbmNsdWRlICJsaWJHTEVTdjIvbWFpbi5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9Qcm9ncmFtLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVy
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyOS5oIgorI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjExLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3V0
aWxpdGllcy5oIgorCisjaWYgIWRlZmluZWQoQU5HTEVfRU5BQkxFX0QzRDExKQorLy8gRW5hYmxl
cyB1c2Ugb2YgdGhlIERpcmVjdDNEIDExIEFQSSBmb3IgYSBkZWZhdWx0IGRpc3BsYXksIHdoZW4g
YXZhaWxhYmxlCisjZGVmaW5lIEFOR0xFX0VOQUJMRV9EM0QxMSAwCisjZW5kaWYKKworbmFtZXNw
YWNlIHJ4Cit7CisKK1JlbmRlcmVyOjpSZW5kZXJlcihlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIDog
bURpc3BsYXkoZGlzcGxheSkKK3sKKyAgICBtRDNkQ29tcGlsZXJNb2R1bGUgPSBOVUxMOworICAg
IG1EM0RDb21waWxlRnVuYyA9IE5VTEw7Cit9CisKK1JlbmRlcmVyOjp+UmVuZGVyZXIoKQorewor
ICAgIGlmIChtRDNkQ29tcGlsZXJNb2R1bGUpCisgICAgeworICAgICAgICBGcmVlTGlicmFyeSht
RDNkQ29tcGlsZXJNb2R1bGUpOworICAgICAgICBtRDNkQ29tcGlsZXJNb2R1bGUgPSBOVUxMOwor
ICAgIH0KK30KKworYm9vbCBSZW5kZXJlcjo6aW5pdGlhbGl6ZUNvbXBpbGVyKCkKK3sKKyNpZiBk
ZWZpbmVkKEFOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVMpCisgICAgLy8g
RmluZCBhIEQzRENvbXBpbGVyIG1vZHVsZSB0aGF0IGhhZCBhbHJlYWR5IGJlZW4gbG9hZGVkIGJh
c2VkIG9uIGEgcHJlZGVmaW5lZCBsaXN0IG9mIHZlcnNpb25zLgorICAgIHN0YXRpYyBUQ0hBUiog
ZDNkQ29tcGlsZXJOYW1lc1tdID0gQU5HTEVfUFJFTE9BREVEX0QzRENPTVBJTEVSX01PRFVMRV9O
QU1FUzsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQXJyYXlTaXplKGQzZENvbXBpbGVy
TmFtZXMpOyArK2kpCisgICAgeworICAgICAgICBpZiAoR2V0TW9kdWxlSGFuZGxlRXgoMCwgZDNk
Q29tcGlsZXJOYW1lc1tpXSwgJm1EM2RDb21waWxlck1vZHVsZSkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICAvLyBMb2FkIHRoZSB2
ZXJzaW9uIG9mIHRoZSBEM0RDb21waWxlciBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBEaXJlY3Qz
RCB2ZXJzaW9uIEFOR0xFIHdhcyBidWlsdCB3aXRoLgorICAgIG1EM2RDb21waWxlck1vZHVsZSA9
IExvYWRMaWJyYXJ5KEQzRENPTVBJTEVSX0RMTCk7CisjZW5kaWYgIC8vIEFOR0xFX1BSRUxPQURF
RF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVMKKworICAgIGlmICghbUQzZENvbXBpbGVyTW9kdWxl
KQorICAgIHsKKyAgICAgICAgRVJSKCJObyBEM0QgY29tcGlsZXIgbW9kdWxlIGZvdW5kIC0gYWJv
cnRpbmchXG4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1EM0RDb21w
aWxlRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cENvbXBpbGVGdW5jPihHZXRQcm9jQWRkcmVzcyht
RDNkQ29tcGlsZXJNb2R1bGUsICJEM0RDb21waWxlIikpOworICAgIEFTU0VSVChtRDNEQ29tcGls
ZUZ1bmMpOworCisgICAgcmV0dXJuIG1EM0RDb21waWxlRnVuYyAhPSBOVUxMOworfQorCisvLyBD
b21waWxlcyBITFNMIGNvZGUgaW50byBleGVjdXRhYmxlIGJpbmFyaWVzCitTaGFkZXJCbG9iICpS
ZW5kZXJlcjo6Y29tcGlsZVRvQmluYXJ5KGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBjaGFy
ICpobHNsLCBjb25zdCBjaGFyICpwcm9maWxlLCBVSU5UIG9wdGltaXphdGlvbkZsYWdzLCBib29s
IGFsdGVybmF0ZUZsYWdzKQoreworICAgIGlmICghaGxzbCkKKyAgICB7CisgICAgICAgIHJldHVy
biBOVUxMOworICAgIH0KKworICAgIEhSRVNVTFQgcmVzdWx0ID0gU19PSzsKKyAgICBVSU5UIGZs
YWdzID0gMDsKKyAgICBzdGQ6OnN0cmluZyBzb3VyY2VUZXh0OworICAgIGlmIChnbDo6cGVyZkFj
dGl2ZSgpKQorICAgIHsKKyAgICAgICAgZmxhZ3MgfD0gRDNEQ09NUElMRV9ERUJVRzsKKworI2lm
ZGVmIE5ERUJVRworICAgICAgICBmbGFncyB8PSBvcHRpbWl6YXRpb25GbGFnczsKKyNlbHNlCisg
ICAgICAgIGZsYWdzIHw9IEQzRENPTVBJTEVfU0tJUF9PUFRJTUlaQVRJT047CisjZW5kaWYKKwor
ICAgICAgICBzdGQ6OnN0cmluZyBzb3VyY2VQYXRoID0gZ2V0VGVtcFBhdGgoKTsKKyAgICAgICAg
c291cmNlVGV4dCA9IHN0ZDo6c3RyaW5nKCIjbGluZSAyIFwiIikgKyBzb3VyY2VQYXRoICsgc3Rk
OjpzdHJpbmcoIlwiXG5cbiIpICsgc3RkOjpzdHJpbmcoaGxzbCk7CisgICAgICAgIHdyaXRlRmls
ZShzb3VyY2VQYXRoLmNfc3RyKCksIHNvdXJjZVRleHQuY19zdHIoKSwgc291cmNlVGV4dC5zaXpl
KCkpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBmbGFncyB8PSBvcHRpbWl6YXRp
b25GbGFnczsKKyAgICAgICAgc291cmNlVGV4dCA9IGhsc2w7CisgICAgfQorCisgICAgLy8gU29t
ZXRpbWVzIEQzRENvbXBpbGUgd2lsbCBmYWlsIHdpdGggdGhlIGRlZmF1bHQgY29tcGlsYXRpb24g
ZmxhZ3MgZm9yIGNvbXBsaWNhdGVkIHNoYWRlcnMgd2hlbiBpdCB3b3VsZCBvdGhlcndpc2UgcGFz
cyB3aXRoIGFsdGVybmF0aXZlIG9wdGlvbnMuCisgICAgLy8gVHJ5IHRoZSBkZWZhdWx0IGZsYWdz
IGZpcnN0IGFuZCBpZiBjb21waWxhdGlvbiBmYWlscywgdHJ5IHNvbWUgYWx0ZXJuYXRpdmVzLgor
ICAgIGNvbnN0IHN0YXRpYyBVSU5UIGV4dHJhRmxhZ3NbXSA9CisgICAgeworICAgICAgICAwLAor
ICAgICAgICBEM0RDT01QSUxFX0FWT0lEX0ZMT1dfQ09OVFJPTCwKKyAgICAgICAgRDNEQ09NUElM
RV9QUkVGRVJfRkxPV19DT05UUk9MCisgICAgfTsKKworICAgIGNvbnN0IHN0YXRpYyBjaGFyICog
Y29uc3QgZXh0cmFGbGFnTmFtZXNbXSA9CisgICAgeworICAgICAgICAiZGVmYXVsdCIsCisgICAg
ICAgICJhdm9pZCBmbG93IGNvbnRyb2wiLAorICAgICAgICAicHJlZmVyIGZsb3cgY29udHJvbCIK
KyAgICB9OworCisgICAgaW50IGF0dGVtcHRzID0gYWx0ZXJuYXRlRmxhZ3MgPyBBcnJheVNpemUo
ZXh0cmFGbGFncykgOiAxOworICAgIHBEM0RDb21waWxlIGNvbXBpbGVGdW5jID0gcmVpbnRlcnBy
ZXRfY2FzdDxwRDNEQ29tcGlsZT4obUQzRENvbXBpbGVGdW5jKTsKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IGF0dGVtcHRzOyArK2kpCisgICAgeworICAgICAgICBJRDNEQmxvYiAqZXJyb3JNZXNz
YWdlID0gTlVMTDsKKyAgICAgICAgSUQzREJsb2IgKmJpbmFyeSA9IE5VTEw7CisKKyAgICAgICAg
cmVzdWx0ID0gY29tcGlsZUZ1bmMoaGxzbCwgc3RybGVuKGhsc2wpLCBnbDo6Z19mYWtlcGF0aCwg
TlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1haW4iLCBwcm9maWxl
LCBmbGFncyB8IGV4dHJhRmxhZ3NbaV0sIDAsICZiaW5hcnksICZlcnJvck1lc3NhZ2UpOworICAg
ICAgICBpZiAoZXJyb3JNZXNzYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBjaGFy
ICptZXNzYWdlID0gKGNvbnN0IGNoYXIqKWVycm9yTWVzc2FnZS0+R2V0QnVmZmVyUG9pbnRlcigp
OworCisgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZFNhbml0aXplZChtZXNzYWdlKTsKKyAgICAg
ICAgICAgIFRSQUNFKCJcbiVzIiwgaGxzbCk7CisgICAgICAgICAgICBUUkFDRSgiXG4lcyIsIG1l
c3NhZ2UpOworCisgICAgICAgICAgICBlcnJvck1lc3NhZ2UtPlJlbGVhc2UoKTsKKyAgICAgICAg
ICAgIGVycm9yTWVzc2FnZSA9IE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoU1VDQ0VF
REVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAoU2hhZGVyQmxvYiop
YmluYXJ5OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRP
Rk1FTU9SWSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9y
KEdMX09VVF9PRl9NRU1PUlksIChTaGFkZXJCbG9iKikgTlVMTCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJXYXJuaW5nOiBEM0Qgc2hhZGVyIGNvbXBpbGF0
aW9uIGZhaWxlZCB3aXRoICIpOworICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoZXh0cmFGbGFn
TmFtZXNbaV0pOworICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIiBmbGFncy4iKTsKKyAgICAg
ICAgICAgIGlmIChpICsgMSA8IGF0dGVtcHRzKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGluZm9Mb2cuYXBwZW5kKCIgUmV0cnlpbmcgd2l0aCAiKTsKKyAgICAgICAgICAgICAgICBp
bmZvTG9nLmFwcGVuZChleHRyYUZsYWdOYW1lc1tpICsgMV0pOworICAgICAgICAgICAgICAgIGlu
Zm9Mb2cuYXBwZW5kKCIuXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHJldHVybiBOVUxMOworfQorCit9CisKK2V4dGVybiAiQyIKK3sKKworcng6OlJlbmRlcmVy
ICpnbENyZWF0ZVJlbmRlcmVyKGVnbDo6RGlzcGxheSAqZGlzcGxheSwgSERDIGhEYywgRUdMTmF0
aXZlRGlzcGxheVR5cGUgZGlzcGxheUlkKQoreworICAgIHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIg
PSBOVUxMOworICAgIEVHTGludCBzdGF0dXMgPSBFR0xfQkFEX0FMTE9DOworICAgIAorICAgIGlm
IChBTkdMRV9FTkFCTEVfRDNEMTEgfHwKKyAgICAgICAgZGlzcGxheUlkID09IEVHTF9EM0QxMV9F
TFNFX0QzRDlfRElTUExBWV9BTkdMRSB8fAorICAgICAgICBkaXNwbGF5SWQgPT0gRUdMX0QzRDEx
X09OTFlfRElTUExBWV9BTkdMRSkKKyAgICB7CisgICAgICAgIHJlbmRlcmVyID0gbmV3IHJ4OjpS
ZW5kZXJlcjExKGRpc3BsYXksIGhEYyk7CisgICAgCisgICAgICAgIGlmIChyZW5kZXJlcikKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdHVzID0gcmVuZGVyZXItPmluaXRpYWxpemUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChzdGF0dXMgPT0gRUdMX1NVQ0NFU1MpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlm
IChkaXNwbGF5SWQgPT0gRUdMX0QzRDExX09OTFlfRElTUExBWV9BTkdMRSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICAvLyBGYWlsZWQg
dG8gY3JlYXRlIGEgRDNEMTEgcmVuZGVyZXIsIHRyeSBjcmVhdGluZyBhIEQzRDkgcmVuZGVyZXIK
KyAgICAgICAgZGVsZXRlIHJlbmRlcmVyOworICAgIH0KKworICAgIGJvb2wgc29mdHdhcmVEZXZp
Y2UgPSAoZGlzcGxheUlkID09IEVHTF9TT0ZUV0FSRV9ESVNQTEFZX0FOR0xFKTsKKyAgICByZW5k
ZXJlciA9IG5ldyByeDo6UmVuZGVyZXI5KGRpc3BsYXksIGhEYywgc29mdHdhcmVEZXZpY2UpOwor
ICAgIAorICAgIGlmIChyZW5kZXJlcikKKyAgICB7CisgICAgICAgIHN0YXR1cyA9IHJlbmRlcmVy
LT5pbml0aWFsaXplKCk7CisgICAgfQorCisgICAgaWYgKHN0YXR1cyA9PSBFR0xfU1VDQ0VTUykK
KyAgICB7CisgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICB9CisKKyAgICByZXR1cm4gTlVM
TDsKK30KKwordm9pZCBnbERlc3Ryb3lSZW5kZXJlcihyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKQor
eworICAgIGRlbGV0ZSByZW5kZXJlcjsKK30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
UmVuZGVyZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjQ0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBSZW5kZXJlci5oOiBE
ZWZpbmVzIGEgYmFjay1lbmQgc3BlY2lmaWMgY2xhc3MgdGhhdCBoaWRlcyB0aGUgZGV0YWlscyBv
ZiB0aGUKKy8vIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIHJlbmRlcmVyLgorCisjaWZuZGVmIExJ
QkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUl9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJf
UkVOREVSRVJfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9Vbmlmb3JtLmgiCisjaW5jbHVkZSAi
bGliR0xFU3YyL2FuZ2xldHlwZXMuaCIKKworI2lmICFkZWZpbmVkKEFOR0xFX0NPTVBJTEVfT1BU
SU1JWkFUSU9OX0xFVkVMKQorI2RlZmluZSBBTkdMRV9DT01QSUxFX09QVElNSVpBVElPTl9MRVZF
TCBEM0RDT01QSUxFX09QVElNSVpBVElPTl9MRVZFTDMKKyNlbmRpZgorCitjb25zdCBpbnQgdmVy
c2lvbldpbmRvd3NWaXN0YSA9IE1BS0VXT1JEKDB4MDAsIDB4MDYpOworY29uc3QgaW50IHZlcnNp
b25XaW5kb3dzNyA9IE1BS0VXT1JEKDB4MDEsIDB4MDYpOworCisvLyBSZXR1cm4gdGhlIHZlcnNp
b24gb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaW4gYSBmb3JtYXQgc3VpdGFibGUgZm9yIG9yZGVy
aW5nCisvLyBjb21wYXJpc29uLgoraW5saW5lIGludCBnZXRDb21wYXJhYmxlT1NWZXJzaW9uKCkK
K3sKKyAgICBEV09SRCB2ZXJzaW9uID0gR2V0VmVyc2lvbigpOworICAgIGludCBtYWpvclZlcnNp
b24gPSBMT0JZVEUoTE9XT1JEKHZlcnNpb24pKTsKKyAgICBpbnQgbWlub3JWZXJzaW9uID0gSElC
WVRFKExPV09SRCh2ZXJzaW9uKSk7CisgICAgcmV0dXJuIE1BS0VXT1JEKG1pbm9yVmVyc2lvbiwg
bWFqb3JWZXJzaW9uKTsKK30KKworbmFtZXNwYWNlIGVnbAoreworY2xhc3MgRGlzcGxheTsKK30K
KworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBJbmZvTG9nOworY2xhc3MgUHJvZ3JhbUJpbmFyeTsK
K2NsYXNzIFZlcnRleEF0dHJpYnV0ZTsKK2NsYXNzIEJ1ZmZlcjsKK2NsYXNzIFRleHR1cmU7Citj
bGFzcyBGcmFtZWJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBUZXh0dXJlU3Rv
cmFnZUludGVyZmFjZTJEOworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlOworY2xh
c3MgVmVydGV4QnVmZmVyOworY2xhc3MgSW5kZXhCdWZmZXI7CitjbGFzcyBRdWVyeUltcGw7Citj
bGFzcyBGZW5jZUltcGw7CitjbGFzcyBCdWZmZXJTdG9yYWdlOworY2xhc3MgQmxpdDsKK3N0cnVj
dCBUcmFuc2xhdGVkSW5kZXhEYXRhOworY2xhc3MgU2hhZGVyRXhlY3V0YWJsZTsKK2NsYXNzIFN3
YXBDaGFpbjsKK2NsYXNzIFJlbmRlclRhcmdldDsKK2NsYXNzIEltYWdlOworY2xhc3MgVGV4dHVy
ZVN0b3JhZ2U7CisKK3R5cGVkZWYgdm9pZCAqIFNoYWRlckJsb2I7Cit0eXBlZGVmIHZvaWQgKCpw
Q29tcGlsZUZ1bmMpKCk7CisKK3N0cnVjdCBDb25maWdEZXNjCit7CisgICAgR0xlbnVtICByZW5k
ZXJUYXJnZXRGb3JtYXQ7CisgICAgR0xlbnVtICBkZXB0aFN0ZW5jaWxGb3JtYXQ7CisgICAgR0xp
bnQgICBtdWx0aVNhbXBsZTsKKyAgICBib29sICAgIGZhc3RDb25maWc7Cit9OworCitzdHJ1Y3Qg
ZHhfVmVydGV4Q29uc3RhbnRzCit7CisgICAgZmxvYXQgZGVwdGhSYW5nZVs0XTsKKyAgICBmbG9h
dCB2aWV3QWRqdXN0WzRdOworfTsKKworc3RydWN0IGR4X1BpeGVsQ29uc3RhbnRzCit7CisgICAg
ZmxvYXQgZGVwdGhSYW5nZVs0XTsKKyAgICBmbG9hdCB2aWV3Q29vcmRzWzRdOworICAgIGZsb2F0
IGRlcHRoRnJvbnRbNF07Cit9OworCitlbnVtIFNoYWRlclR5cGUKK3sKKyAgICBTSEFERVJfVkVS
VEVYLAorICAgIFNIQURFUl9QSVhFTCwKKyAgICBTSEFERVJfR0VPTUVUUlkKK307CisKK2NsYXNz
IFJlbmRlcmVyCit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBSZW5kZXJlcihlZ2w6OkRpc3Bs
YXkgKmRpc3BsYXkpOworICAgIHZpcnR1YWwgflJlbmRlcmVyKCk7CisKKyAgICB2aXJ0dWFsIEVH
TGludCBpbml0aWFsaXplKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZXNldERldmljZSgpID0g
MDsKKworICAgIHZpcnR1YWwgaW50IGdlbmVyYXRlQ29uZmlncyhDb25maWdEZXNjICoqY29uZmln
RGVzY0xpc3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29uZmlncyhDb25maWdEZXNj
ICpjb25maWdEZXNjTGlzdCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN5bmMoYm9vbCBibG9j
aykgPSAwOworCisgICAgdmlydHVhbCBTd2FwQ2hhaW4gKmNyZWF0ZVN3YXBDaGFpbihIV05EIHdp
bmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwgR0xlbnVt
IGRlcHRoQnVmZmVyRm9ybWF0KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2FtcGxlclN0
YXRlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5kZXgsIGNvbnN0IGdsOjpTYW1wbGVyU3Rh
dGUgJnNhbXBsZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZShnbDo6U2FtcGxl
clR5cGUgdHlwZSwgaW50IGluZGV4LCBnbDo6VGV4dHVyZSAqdGV4dHVyZSkgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIHNldFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVyaXplclN0YXRl
ICZyYXN0ZXJTdGF0ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRCbGVuZFN0YXRlKGNvbnN0
IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0YXRlLCBjb25zdCBnbDo6Q29sb3IgJmJsZW5kQ29sb3Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZU1hc2sp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgZ2w6OkRl
cHRoU3RlbmNpbFN0YXRlICZkZXB0aFN0ZW5jaWxTdGF0ZSwgaW50IHN0ZW5jaWxSZWYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGVuY2lsQmFja1JlZiwgYm9v
bCBmcm9udEZhY2VDQ1cpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTY2lzc29yUmVjdGFu
Z2xlKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNjaXNzb3IsIGJvb2wgZW5hYmxlZCkgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBzZXRWaWV3cG9ydChjb25zdCBnbDo6UmVjdGFuZ2xlICZ2aWV3cG9ydCwg
ZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIsIEdMZW51bSBkcmF3TW9kZSwgR0xlbnVtIGZyb250RmFj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmVWaWV3cG9ydCkgPSAw
OworCisgICAgdmlydHVhbCBib29sIGFwcGx5UmVuZGVyVGFyZ2V0KGdsOjpGcmFtZWJ1ZmZlciAq
ZnJhbWVCdWZmZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTaGFkZXJzKGdsOjpQcm9n
cmFtQmluYXJ5ICpwcm9ncmFtQmluYXJ5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5VW5p
Zm9ybXMoZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnksIGdsOjpVbmlmb3JtQXJyYXkg
KnVuaWZvcm1BcnJheSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhcHBseVByaW1pdGl2ZVR5cGUo
R0xlbnVtIHByaW1pdGl2ZVR5cGUsIEdMc2l6ZWkgZWxlbWVudENvdW50KSA9IDA7CisgICAgdmly
dHVhbCBHTGVudW0gYXBwbHlWZXJ0ZXhCdWZmZXIoZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1C
aW5hcnksIGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgdmVydGV4QXR0cmlidXRlc1tdLCBHTGludCBmaXJz
dCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpID0gMDsKKyAgICB2aXJ0dWFsIEdM
ZW51bSBhcHBseUluZGV4QnVmZmVyKGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAq
ZWxlbWVudEFycmF5QnVmZmVyLCBHTHNpemVpIGNvdW50LCBHTGVudW0gbW9kZSwgR0xlbnVtIHR5
cGUsIFRyYW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbykgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIGRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFu
Y2VzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xz
aXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZl
ciAqZWxlbWVudEFycmF5QnVmZmVyLCBjb25zdCBUcmFuc2xhdGVkSW5kZXhEYXRhICZpbmRleElu
Zm8sIEdMc2l6ZWkgaW5zdGFuY2VzKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoY29u
c3QgZ2w6OkNsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMsIGdsOjpGcmFtZWJ1ZmZlciAqZnJh
bWVCdWZmZXIpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBtYXJrQWxsU3RhdGVEaXJ0eSgpID0g
MDsKKworICAgIC8vIGxvc3QgZGV2aWNlCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeURldmljZUxv
c3QoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRGV2aWNlTG9zdCgpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgdGVzdERldmljZUxvc3QoYm9vbCBub3RpZnkpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgdGVzdERldmljZVJlc2V0dGFibGUoKSA9IDA7CisKKyAgICAvLyBSZW5kZXJlciBjYXBhYmls
aXRpZXMKKyAgICB2aXJ0dWFsIERXT1JEIGdldEFkYXB0ZXJWZW5kb3IoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgR1VJRCBnZXRBZGFwdGVySWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBnZXRCR1JBVGV4dHVyZVN1cHBvcnQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGdldERYVDFUZXh0dXJlU3VwcG9ydCgpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0RFhUM1RleHR1cmVTdXBwb3J0KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXREWFQ1
VGV4dHVyZVN1cHBvcnQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIGdldEV2ZW50UXVlcnlTdXBw
b3J0KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRGbG9hdDMyVGV4dHVyZVN1cHBvcnQoYm9v
bCAqZmlsdGVyaW5nLCBib29sICpyZW5kZXJhYmxlKSA9IDA7CisgICAgdmlydHVhbCBib29sIGdl
dEZsb2F0MTZUZXh0dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wgKnJlbmRlcmFibGUp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0THVtaW5hbmNlVGV4dHVyZVN1cHBvcnQoKSA9IDA7
CisgICAgdmlydHVhbCBib29sIGdldEx1bWluYW5jZUFscGhhVGV4dHVyZVN1cHBvcnQoKSA9IDA7
CisgICAgYm9vbCBnZXRWZXJ0ZXhUZXh0dXJlU3VwcG9ydCgpIGNvbnN0IHsgcmV0dXJuIGdldE1h
eFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKCkgPiAwOyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBp
bnQgZ2V0TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB1bnNpZ25lZCBpbnQgZ2V0TWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0
b3JzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlc2VydmVkRnJh
Z21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGlu
dCBnZXRNYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVu
c2lnbmVkIGludCBnZXRNYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdW5zaWduZWQgaW50IGdldE1heFZhcnlpbmdWZWN0b3JzKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBnZXROb25Qb3dlcjJUZXh0dXJlU3VwcG9ydCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0RGVwdGhUZXh0dXJlU3VwcG9ydCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T2NjbHVzaW9uUXVlcnlTdXBwb3J0KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBnZXRJbnN0YW5jaW5nU3VwcG9ydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgZ2V0VGV4dHVyZUZpbHRlckFuaXNvdHJvcHlTdXBwb3J0KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgZmxvYXQgZ2V0VGV4dHVyZU1heEFuaXNvdHJvcHkoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGdldFNoYXJlSGFuZGxlU3VwcG9ydCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0RGVyaXZhdGl2ZUluc3RydWN0aW9uU3VwcG9ydCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0UG9zdFN1YkJ1ZmZlclN1cHBvcnQoKSBjb25zdCA9IDA7CisK
KyAgICB2aXJ0dWFsIGludCBnZXRNYWpvclNoYWRlck1vZGVsKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgZmxvYXQgZ2V0TWF4UG9pbnRTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50
IGdldE1heFZpZXdwb3J0RGltZW5zaW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGdl
dE1heFRleHR1cmVXaWR0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBnZXRNYXhUZXh0
dXJlSGVpZ2h0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXQzMkJpdEluZGV4U3Vw
cG9ydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBnZXRNaW5Td2FwSW50ZXJ2YWwoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgZ2V0TWF4U3dhcEludGVydmFsKCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCBHTHNpemVpIGdldE1heFN1cHBvcnRlZFNhbXBsZXMoKSBjb25zdCA9
IDA7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRNYXhSZW5kZXJUYXJnZXRzKCkgY29u
c3QgPSAwOworCisgICAgLy8gUGl4ZWwgb3BlcmF0aW9ucworICAgIHZpcnR1YWwgYm9vbCBjb3B5
VG9SZW5kZXJUYXJnZXQoVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAqZGVzdCwgVGV4dHVyZVN0
b3JhZ2VJbnRlcmZhY2UyRCAqc291cmNlKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNvcHlUb1Jl
bmRlclRhcmdldChUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgKmRlc3QsIFRleHR1cmVTdG9y
YWdlSW50ZXJmYWNlQ3ViZSAqc291cmNlKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY29weUlt
YWdlKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNv
dXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRCAq
c3RvcmFnZSwgR0xpbnQgbGV2ZWwpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29weUltYWdlKGds
OjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJl
Y3QsIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2VDdWJlICpzdG9y
YWdlLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkgPSAwOworCisgICAgdmlydHVhbCBib29s
IGJsaXRSZWN0KGdsOjpGcmFtZWJ1ZmZlciAqcmVhZFRhcmdldCwgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmcmVhZFJlY3QsIGdsOjpGcmFtZWJ1ZmZlciAqZHJhd1RhcmdldCwgY29uc3QgZ2w6OlJlY3Rh
bmdsZSAmZHJhd1JlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxpdFJlbmRl
clRhcmdldCwgYm9vbCBibGl0RGVwdGhTdGVuY2lsKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
YWRQaXhlbHMoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgR0xpbnQgeCwgR0xpbnQgeSwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgb3V0cHV0UGl0Y2gsIGJvb2wg
cGFja1JldmVyc2VSb3dPcmRlciwgR0xpbnQgcGFja0FsaWdubWVudCwgdm9pZCogcGl4ZWxzKSA9
IDA7CisKKyAgICAvLyBSZW5kZXJUYXJnZXQgY3JlYXRpb24KKyAgICB2aXJ0dWFsIFJlbmRlclRh
cmdldCAqY3JlYXRlUmVuZGVyVGFyZ2V0KFN3YXBDaGFpbiAqc3dhcENoYWluLCBib29sIGRlcHRo
KSA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmNyZWF0ZVJlbmRlclRhcmdldChpbnQg
d2lkdGgsIGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywgYm9vbCBk
ZXB0aCkgPSAwOworCisgICAgLy8gU2hhZGVyIG9wZXJhdGlvbnMKKyAgICB2aXJ0dWFsIFNoYWRl
ckV4ZWN1dGFibGUgKmxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3Qg
bGVuZ3RoLCByeDo6U2hhZGVyVHlwZSB0eXBlKSA9IDA7CisgICAgdmlydHVhbCBTaGFkZXJFeGVj
dXRhYmxlICpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBj
aGFyICpzaGFkZXJITFNMLCByeDo6U2hhZGVyVHlwZSB0eXBlKSA9IDA7CisKKyAgICAvLyBJbWFn
ZSBvcGVyYXRpb25zCisgICAgdmlydHVhbCBJbWFnZSAqY3JlYXRlSW1hZ2UoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwKEltYWdlICpkZXN0LCBJbWFnZSAqc291cmNlKSA9
IDA7CisgICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChT
d2FwQ2hhaW4gKnN3YXBDaGFpbikgPSAwOworICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNy
ZWF0ZVRleHR1cmVTdG9yYWdlMkQoaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
TGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCkgPSAwOworICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVT
dG9yYWdlQ3ViZShpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2Fn
ZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIGludCBzaXplKSA9IDA7CisKKyAgICAvLyBCdWZmZXIg
Y3JlYXRpb24KKyAgICB2aXJ0dWFsIFZlcnRleEJ1ZmZlciAqY3JlYXRlVmVydGV4QnVmZmVyKCkg
PSAwOworICAgIHZpcnR1YWwgSW5kZXhCdWZmZXIgKmNyZWF0ZUluZGV4QnVmZmVyKCkgPSAwOwor
ICAgIHZpcnR1YWwgQnVmZmVyU3RvcmFnZSAqY3JlYXRlQnVmZmVyU3RvcmFnZSgpID0gMDsKKwor
ICAgIC8vIFF1ZXJ5IGFuZCBGZW5jZSBjcmVhdGlvbgorICAgIHZpcnR1YWwgUXVlcnlJbXBsICpj
cmVhdGVRdWVyeShHTGVudW0gdHlwZSkgPSAwOworICAgIHZpcnR1YWwgRmVuY2VJbXBsICpjcmVh
dGVGZW5jZSgpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRMVUlEKExVSUQgKmFkYXB0ZXJM
dWlkKSBjb25zdCA9IDA7CisKKyAgcHJvdGVjdGVkOgorICAgIGJvb2wgaW5pdGlhbGl6ZUNvbXBp
bGVyKCk7CisgICAgU2hhZGVyQmxvYiAqY29tcGlsZVRvQmluYXJ5KGdsOjpJbmZvTG9nICZpbmZv
TG9nLCBjb25zdCBjaGFyICpobHNsLCBjb25zdCBjaGFyICpwcm9maWxlLCBVSU5UIG9wdGltaXph
dGlvbkZsYWdzLCBib29sIGFsdGVybmF0ZUZsYWdzKTsKKworICAgIGVnbDo6RGlzcGxheSAqbURp
c3BsYXk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVuZGVy
ZXIpOworCisgICAgSE1PRFVMRSBtRDNkQ29tcGlsZXJNb2R1bGU7CisgICAgcENvbXBpbGVGdW5j
IG1EM0RDb21waWxlRnVuYzsKK307CisKK30KKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJf
UkVOREVSRVJfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvU2hhZGVyQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckNhY2hlLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckNh
Y2hlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEwIEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
U2hhZGVyQ2FjaGU6IERlZmluZXMgcng6OlNoYWRlckNhY2hlLCBhIGNhY2hlIG9mIERpcmVjdDNE
IHNoYWRlciBvYmplY3RzCisvLyBrZXllZCBieSB0aGVpciBieXRlIGNvZGUuCisKKyNpZm5kZWYg
TElCR0xFU1YyX1JFTkRFUkVSX1NIQURFUl9DQUNIRV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVO
REVSRVJfU0hBREVSX0NBQ0hFX0hfCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFt
ZXNwYWNlIHJ4Cit7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgU2hhZGVyT2JqZWN0PgorY2xhc3MgU2hh
ZGVyQ2FjaGUKK3sKKyAgcHVibGljOgorICAgIFNoYWRlckNhY2hlKCkgOiBtRGV2aWNlKE5VTEwp
CisgICAgeworICAgIH0KKworICAgIH5TaGFkZXJDYWNoZSgpCisgICAgeworICAgICAgICAvLyBD
YWxsIGNsZWFyIHdoaWxlIHRoZSBkZXZpY2UgaXMgc3RpbGwgdmFsaWQuCisgICAgICAgIEFTU0VS
VChtTWFwLmVtcHR5KCkpOworICAgIH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZShJRGlyZWN0M0RE
ZXZpY2U5KiBkZXZpY2UpCisgICAgeworICAgICAgICBtRGV2aWNlID0gZGV2aWNlOworICAgIH0K
KworICAgIFNoYWRlck9iamVjdCAqY3JlYXRlKGNvbnN0IERXT1JEICpmdW5jdGlvbiwgc2l6ZV90
IGxlbmd0aCkKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nIGtleShyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihmdW5jdGlvbiksIGxlbmd0aCk7CisgICAgICAgIHR5cGVuYW1lIE1hcDo6
aXRlcmF0b3IgaXQgPSBtTWFwLmZpbmQoa2V5KTsKKyAgICAgICAgaWYgKGl0ICE9IG1NYXAuZW5k
KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPkFkZFJlZigpOworICAgICAg
ICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgICAgICAgIH0KKworICAgICAgICBTaGFkZXJPYmpl
Y3QgKnNoYWRlcjsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBjcmVhdGVTaGFkZXIoZnVuY3Rp
b24sICZzaGFkZXIpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmFuZG9tIGV2
aWN0aW9uIHBvbGljeS4KKyAgICAgICAgaWYgKG1NYXAuc2l6ZSgpID49IGtNYXhNYXBTaXplKQor
ICAgICAgICB7CisgICAgICAgICAgICBtTWFwLmJlZ2luKCktPnNlY29uZC0+UmVsZWFzZSgpOwor
ICAgICAgICAgICAgbU1hcC5lcmFzZShtTWFwLmJlZ2luKCkpOworICAgICAgICB9CisKKyAgICAg
ICAgc2hhZGVyLT5BZGRSZWYoKTsKKyAgICAgICAgbU1hcFtrZXldID0gc2hhZGVyOworCisgICAg
ICAgIHJldHVybiBzaGFkZXI7CisgICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAg
ICAgICBmb3IgKHR5cGVuYW1lIE1hcDo6aXRlcmF0b3IgaXQgPSBtTWFwLmJlZ2luKCk7IGl0ICE9
IG1NYXAuZW5kKCk7ICsraXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPlJl
bGVhc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1NYXAuY2xlYXIoKTsKKyAgICB9CisKKyAg
cHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oU2hhZGVyQ2FjaGUpOworCisg
ICAgY29uc3Qgc3RhdGljIHNpemVfdCBrTWF4TWFwU2l6ZSA9IDEwMDsKKworICAgIEhSRVNVTFQg
Y3JlYXRlU2hhZGVyKGNvbnN0IERXT1JEICpmdW5jdGlvbiwgSURpcmVjdDNEVmVydGV4U2hhZGVy
OSAqKnNoYWRlcikKKyAgICB7CisgICAgICAgIHJldHVybiBtRGV2aWNlLT5DcmVhdGVWZXJ0ZXhT
aGFkZXIoZnVuY3Rpb24sIHNoYWRlcik7CisgICAgfQorCisgICAgSFJFU1VMVCBjcmVhdGVTaGFk
ZXIoY29uc3QgRFdPUkQgKmZ1bmN0aW9uLCBJRGlyZWN0M0RQaXhlbFNoYWRlcjkgKipzaGFkZXIp
CisgICAgeworICAgICAgICByZXR1cm4gbURldmljZS0+Q3JlYXRlUGl4ZWxTaGFkZXIoZnVuY3Rp
b24sIHNoYWRlcik7CisgICAgfQorCisjaWZuZGVmIEhBU0hfTUFQCisjIGlmZGVmIF9NU0NfVkVS
CisjICBkZWZpbmUgSEFTSF9NQVAgc3RkZXh0OjpoYXNoX21hcAorIyBlbHNlCisjICBkZWZpbmUg
SEFTSF9NQVAgc3RkOjp1bm9yZGVyZWRfbWFwCisjIGVuZGlmCisjZW5kaWYKKworICAgIHR5cGVk
ZWYgSEFTSF9NQVA8c3RkOjpzdHJpbmcsIFNoYWRlck9iamVjdCo+IE1hcDsKKyAgICBNYXAgbU1h
cDsKKworICAgIElEaXJlY3QzRERldmljZTkgKm1EZXZpY2U7Cit9OworCit0eXBlZGVmIFNoYWRl
ckNhY2hlPElEaXJlY3QzRFZlcnRleFNoYWRlcjk+IFZlcnRleFNoYWRlckNhY2hlOwordHlwZWRl
ZiBTaGFkZXJDYWNoZTxJRGlyZWN0M0RQaXhlbFNoYWRlcjk+IFBpeGVsU2hhZGVyQ2FjaGU7CisK
K30KKworI2VuZGlmICAgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1NIQURFUl9DQUNIRV9IXwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJF
eGVjdXRhYmxlOS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlOS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4
ZWN1dGFibGU5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorI2luY2x1ZGUgInBy
ZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTaGFkZXJFeGVjdXRhYmxlOS5j
cHA6IEltcGxlbWVudHMgYSBEM0Q5LXNwZWNpZmljIGNsYXNzIHRvIGNvbnRhaW4gc2hhZGVyCisv
LyBleGVjdXRhYmxlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTkuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1
Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworU2hhZGVyRXhlY3V0YWJsZTk6OlNoYWRlckV4ZWN1
dGFibGU5KGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCBJRGlyZWN0M0RQaXhl
bFNoYWRlcjkgKmV4ZWN1dGFibGUpCisgICAgOiBTaGFkZXJFeGVjdXRhYmxlKGZ1bmN0aW9uLCBs
ZW5ndGgpCit7CisgICAgbVBpeGVsRXhlY3V0YWJsZSA9IGV4ZWN1dGFibGU7CisgICAgbVZlcnRl
eEV4ZWN1dGFibGUgPSBOVUxMOworfQorCitTaGFkZXJFeGVjdXRhYmxlOTo6U2hhZGVyRXhlY3V0
YWJsZTkoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIElEaXJlY3QzRFZlcnRl
eFNoYWRlcjkgKmV4ZWN1dGFibGUpCisgICAgOiBTaGFkZXJFeGVjdXRhYmxlKGZ1bmN0aW9uLCBs
ZW5ndGgpCit7CisgICAgbVZlcnRleEV4ZWN1dGFibGUgPSBleGVjdXRhYmxlOworICAgIG1QaXhl
bEV4ZWN1dGFibGUgPSBOVUxMOworfQorCitTaGFkZXJFeGVjdXRhYmxlOTo6flNoYWRlckV4ZWN1
dGFibGU5KCkKK3sKKyAgICBpZiAobVZlcnRleEV4ZWN1dGFibGUpCisgICAgeworICAgICAgICBt
VmVydGV4RXhlY3V0YWJsZS0+UmVsZWFzZSgpOworICAgIH0KKyAgICBpZiAobVBpeGVsRXhlY3V0
YWJsZSkKKyAgICB7CisgICAgICAgIG1QaXhlbEV4ZWN1dGFibGUtPlJlbGVhc2UoKTsKKyAgICB9
Cit9CisKK1NoYWRlckV4ZWN1dGFibGU5ICpTaGFkZXJFeGVjdXRhYmxlOTo6bWFrZVNoYWRlckV4
ZWN1dGFibGU5KFNoYWRlckV4ZWN1dGFibGUgKmV4ZWN1dGFibGUpCit7CisgICAgQVNTRVJUKEhB
U19EWU5BTUlDX1RZUEUoU2hhZGVyRXhlY3V0YWJsZTkqLCBleGVjdXRhYmxlKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFNoYWRlckV4ZWN1dGFibGU5Kj4oZXhlY3V0YWJsZSk7Cit9CisKK0lE
aXJlY3QzRFZlcnRleFNoYWRlcjkgKlNoYWRlckV4ZWN1dGFibGU5OjpnZXRWZXJ0ZXhTaGFkZXIo
KSBjb25zdAoreworICAgIHJldHVybiBtVmVydGV4RXhlY3V0YWJsZTsKK30KKworSURpcmVjdDNE
UGl4ZWxTaGFkZXI5ICpTaGFkZXJFeGVjdXRhYmxlOTo6Z2V0UGl4ZWxTaGFkZXIoKSBjb25zdAor
eworICAgIHJldHVybiBtUGl4ZWxFeGVjdXRhYmxlOworfQorCit9ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlOS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZTkuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvU2hhZGVyRXhlY3V0YWJsZTkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAxMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworLy8gU2hhZGVyRXhlY3V0YWJsZTkuaDogRGVmaW5lcyBhIEQzRDkt
c3BlY2lmaWMgY2xhc3MgdG8gY29udGFpbiBzaGFkZXIKKy8vIGV4ZWN1dGFibGUgaW1wbGVtZW50
YXRpb24gZGV0YWlscy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VU
QUJMRTlfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1NIQURFUkVYRUNVVEFCTEU5X0hf
CisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvU2hhZGVyRXhlY3V0YWJsZS5oIgorCitu
YW1lc3BhY2UgcngKK3sKKworY2xhc3MgU2hhZGVyRXhlY3V0YWJsZTkgOiBwdWJsaWMgU2hhZGVy
RXhlY3V0YWJsZQoreworICBwdWJsaWM6CisgICAgU2hhZGVyRXhlY3V0YWJsZTkoY29uc3Qgdm9p
ZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIElEaXJlY3QzRFBpeGVsU2hhZGVyOSAqZXhlY3V0
YWJsZSk7CisgICAgU2hhZGVyRXhlY3V0YWJsZTkoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVf
dCBsZW5ndGgsIElEaXJlY3QzRFZlcnRleFNoYWRlcjkgKmV4ZWN1dGFibGUpOworICAgIHZpcnR1
YWwgflNoYWRlckV4ZWN1dGFibGU5KCk7CisKKyAgICBzdGF0aWMgU2hhZGVyRXhlY3V0YWJsZTkg
Km1ha2VTaGFkZXJFeGVjdXRhYmxlOShTaGFkZXJFeGVjdXRhYmxlICpleGVjdXRhYmxlKTsKKwor
ICAgIElEaXJlY3QzRFBpeGVsU2hhZGVyOSAqZ2V0UGl4ZWxTaGFkZXIoKSBjb25zdDsKKyAgICBJ
RGlyZWN0M0RWZXJ0ZXhTaGFkZXI5ICpnZXRWZXJ0ZXhTaGFkZXIoKSBjb25zdDsKKworICBwcml2
YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTaGFkZXJFeGVjdXRhYmxlOSk7CisK
KyAgICBJRGlyZWN0M0RQaXhlbFNoYWRlcjkgKm1QaXhlbEV4ZWN1dGFibGU7CisgICAgSURpcmVj
dDNEVmVydGV4U2hhZGVyOSAqbVZlcnRleEV4ZWN1dGFibGU7Cit9OworCit9CisKKyNlbmRpZiAv
LyBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VUQUJMRTlfSF8KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEwOSBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDEyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisv
LyBTaGFkZXJFeGVjdXRhYmxlMTEuY3BwOiBJbXBsZW1lbnRzIGEgRDNEMTEtc3BlY2lmaWMgY2xh
c3MgdG8gY29udGFpbiBzaGFkZXIKKy8vIGV4ZWN1dGFibGUgaW1wbGVtZW50YXRpb24gZGV0YWls
cy4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJFeGVjdXRhYmxlMTEuaCIK
KworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgcngKK3sKKworU2hhZGVy
RXhlY3V0YWJsZTExOjpTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNp
emVfdCBsZW5ndGgsIElEM0QxMVBpeGVsU2hhZGVyICpleGVjdXRhYmxlKQorICAgIDogU2hhZGVy
RXhlY3V0YWJsZShmdW5jdGlvbiwgbGVuZ3RoKQoreworICAgIG1QaXhlbEV4ZWN1dGFibGUgPSBl
eGVjdXRhYmxlOworICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gTlVMTDsKKyAgICBtR2VvbWV0cnlF
eGVjdXRhYmxlID0gTlVMTDsKKworICAgIG1Db25zdGFudEJ1ZmZlciA9IE5VTEw7Cit9CisKK1No
YWRlckV4ZWN1dGFibGUxMTo6U2hhZGVyRXhlY3V0YWJsZTExKGNvbnN0IHZvaWQgKmZ1bmN0aW9u
LCBzaXplX3QgbGVuZ3RoLCBJRDNEMTFWZXJ0ZXhTaGFkZXIgKmV4ZWN1dGFibGUpCisgICAgOiBT
aGFkZXJFeGVjdXRhYmxlKGZ1bmN0aW9uLCBsZW5ndGgpCit7CisgICAgbVZlcnRleEV4ZWN1dGFi
bGUgPSBleGVjdXRhYmxlOworICAgIG1QaXhlbEV4ZWN1dGFibGUgPSBOVUxMOworICAgIG1HZW9t
ZXRyeUV4ZWN1dGFibGUgPSBOVUxMOworCisgICAgbUNvbnN0YW50QnVmZmVyID0gTlVMTDsKK30K
KworU2hhZGVyRXhlY3V0YWJsZTExOjpTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAqZnVu
Y3Rpb24sIHNpemVfdCBsZW5ndGgsIElEM0QxMUdlb21ldHJ5U2hhZGVyICpleGVjdXRhYmxlKQor
ICAgIDogU2hhZGVyRXhlY3V0YWJsZShmdW5jdGlvbiwgbGVuZ3RoKQoreworICAgIG1HZW9tZXRy
eUV4ZWN1dGFibGUgPSBleGVjdXRhYmxlOworICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gTlVMTDsK
KyAgICBtUGl4ZWxFeGVjdXRhYmxlID0gTlVMTDsKKworICAgIG1Db25zdGFudEJ1ZmZlciA9IE5V
TEw7Cit9CisKK1NoYWRlckV4ZWN1dGFibGUxMTo6flNoYWRlckV4ZWN1dGFibGUxMSgpCit7Cisg
ICAgaWYgKG1WZXJ0ZXhFeGVjdXRhYmxlKQorICAgIHsKKyAgICAgICAgbVZlcnRleEV4ZWN1dGFi
bGUtPlJlbGVhc2UoKTsKKyAgICB9CisgICAgaWYgKG1QaXhlbEV4ZWN1dGFibGUpCisgICAgewor
ICAgICAgICBtUGl4ZWxFeGVjdXRhYmxlLT5SZWxlYXNlKCk7CisgICAgfQorICAgIGlmIChtR2Vv
bWV0cnlFeGVjdXRhYmxlKQorICAgIHsKKyAgICAgICAgbUdlb21ldHJ5RXhlY3V0YWJsZS0+UmVs
ZWFzZSgpOworICAgIH0KKyAgICAKKyAgICBpZiAobUNvbnN0YW50QnVmZmVyKQorICAgIHsKKyAg
ICAgICAgbUNvbnN0YW50QnVmZmVyLT5SZWxlYXNlKCk7CisgICAgfQorfQorCitTaGFkZXJFeGVj
dXRhYmxlMTEgKlNoYWRlckV4ZWN1dGFibGUxMTo6bWFrZVNoYWRlckV4ZWN1dGFibGUxMShTaGFk
ZXJFeGVjdXRhYmxlICpleGVjdXRhYmxlKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBF
KFNoYWRlckV4ZWN1dGFibGUxMSosIGV4ZWN1dGFibGUpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8U2hhZGVyRXhlY3V0YWJsZTExKj4oZXhlY3V0YWJsZSk7Cit9CisKK0lEM0QxMVZlcnRleFNo
YWRlciAqU2hhZGVyRXhlY3V0YWJsZTExOjpnZXRWZXJ0ZXhTaGFkZXIoKSBjb25zdAoreworICAg
IHJldHVybiBtVmVydGV4RXhlY3V0YWJsZTsKK30KKworSUQzRDExUGl4ZWxTaGFkZXIgKlNoYWRl
ckV4ZWN1dGFibGUxMTo6Z2V0UGl4ZWxTaGFkZXIoKSBjb25zdAoreworICAgIHJldHVybiBtUGl4
ZWxFeGVjdXRhYmxlOworfQorCitJRDNEMTFHZW9tZXRyeVNoYWRlciAqU2hhZGVyRXhlY3V0YWJs
ZTExOjpnZXRHZW9tZXRyeVNoYWRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1HZW9tZXRyeUV4
ZWN1dGFibGU7Cit9CisKK0lEM0QxMUJ1ZmZlciAqU2hhZGVyRXhlY3V0YWJsZTExOjpnZXRDb25z
dGFudEJ1ZmZlcihJRDNEMTFEZXZpY2UgKmRldmljZSwgdW5zaWduZWQgaW50IHJlZ2lzdGVyQ291
bnQpCit7CisgICAgaWYgKCFtQ29uc3RhbnRCdWZmZXIgJiYgcmVnaXN0ZXJDb3VudCA+IDApCisg
ICAgeworICAgICAgICBEM0QxMV9CVUZGRVJfREVTQyBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9u
ID0gezB9OworICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLkJ5dGVXaWR0aCA9IHJl
Z2lzdGVyQ291bnQgKiBzaXplb2YoZmxvYXRbNF0pOworICAgICAgICBjb25zdGFudEJ1ZmZlckRl
c2NyaXB0aW9uLlVzYWdlID0gRDNEMTFfVVNBR0VfRFlOQU1JQzsKKyAgICAgICAgY29uc3RhbnRC
dWZmZXJEZXNjcmlwdGlvbi5CaW5kRmxhZ3MgPSBEM0QxMV9CSU5EX0NPTlNUQU5UX0JVRkZFUjsK
KyAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5DUFVBY2Nlc3NGbGFncyA9IEQzRDEx
X0NQVV9BQ0NFU1NfV1JJVEU7CisgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uTWlz
Y0ZsYWdzID0gMDsKKyAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5TdHJ1Y3R1cmVC
eXRlU3RyaWRlID0gMDsKKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRl
QnVmZmVyKCZjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLCBOVUxMLCAmbUNvbnN0YW50QnVmZmVy
KTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICB9CisKKyAgICByZXR1
cm4gbUNvbnN0YW50QnVmZmVyOworfQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFk
ZXJFeGVjdXRhYmxlMTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUxMS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9TaGFkZXJF
eGVjdXRhYmxlMTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLy8KKy8vIENvcHly
aWdodCAoYykgMjAxMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gU2hhZGVyRXhlY3V0YWJsZTExLmg6IERlZmluZXMgYSBEM0QxMS1zcGVjaWZp
YyBjbGFzcyB0byBjb250YWluIHNoYWRlcgorLy8gZXhlY3V0YWJsZSBpbXBsZW1lbnRhdGlvbiBk
ZXRhaWxzLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9TSEFERVJFWEVDVVRBQkxFMTFf
SF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1NIQURFUkVYRUNVVEFCTEUxMV9IXworCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUuaCIKKworbmFtZXNw
YWNlIHJ4Cit7CisKK2NsYXNzIFNoYWRlckV4ZWN1dGFibGUxMSA6IHB1YmxpYyBTaGFkZXJFeGVj
dXRhYmxlCit7CisgIHB1YmxpYzoKKyAgICBTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAq
ZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIElEM0QxMVBpeGVsU2hhZGVyICpleGVjdXRhYmxlKTsK
KyAgICBTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5n
dGgsIElEM0QxMVZlcnRleFNoYWRlciAqZXhlY3V0YWJsZSk7CisgICAgU2hhZGVyRXhlY3V0YWJs
ZTExKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCBJRDNEMTFHZW9tZXRyeVNo
YWRlciAqZXhlY3V0YWJsZSk7CisKKyAgICB2aXJ0dWFsIH5TaGFkZXJFeGVjdXRhYmxlMTEoKTsK
KworICAgIHN0YXRpYyBTaGFkZXJFeGVjdXRhYmxlMTEgKm1ha2VTaGFkZXJFeGVjdXRhYmxlMTEo
U2hhZGVyRXhlY3V0YWJsZSAqZXhlY3V0YWJsZSk7CisKKyAgICBJRDNEMTFQaXhlbFNoYWRlciAq
Z2V0UGl4ZWxTaGFkZXIoKSBjb25zdDsKKyAgICBJRDNEMTFWZXJ0ZXhTaGFkZXIgKmdldFZlcnRl
eFNoYWRlcigpIGNvbnN0OworICAgIElEM0QxMUdlb21ldHJ5U2hhZGVyICpnZXRHZW9tZXRyeVNo
YWRlcigpIGNvbnN0OworCisgICAgSUQzRDExQnVmZmVyICpnZXRDb25zdGFudEJ1ZmZlcihJRDNE
MTFEZXZpY2UgKmRldmljZSwgdW5zaWduZWQgaW50IHJlZ2lzdGVyQ291bnQpOworCisgIHByaXZh
dGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNoYWRlckV4ZWN1dGFibGUxMSk7CisK
KyAgICBJRDNEMTFQaXhlbFNoYWRlciAqbVBpeGVsRXhlY3V0YWJsZTsKKyAgICBJRDNEMTFWZXJ0
ZXhTaGFkZXIgKm1WZXJ0ZXhFeGVjdXRhYmxlOworICAgIElEM0QxMUdlb21ldHJ5U2hhZGVyICpt
R2VvbWV0cnlFeGVjdXRhYmxlOworCisgICAgSUQzRDExQnVmZmVyICptQ29uc3RhbnRCdWZmZXI7
Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VUQUJM
RTExX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL1NoYWRlckV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1NoYWRlckV4ZWN1dGFibGUuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU2hh
ZGVyRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gU2hhZGVyRXhlY3V0YWJsZS5oOiBEZWZpbmVzIGEgcmVuZGVyZXItYWdub3N0aWMg
Y2xhc3MgdG8gY29udGFpbiBzaGFkZXIKKy8vIGV4ZWN1dGFibGUgaW1wbGVtZW50YXRpb24gZGV0
YWlscy4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VUQUJMRV9IXwor
I2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJfU0hBREVSRVhFQ1VUQUJMRV9IXworCisjaW5jbHVk
ZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFNoYWRl
ckV4ZWN1dGFibGUKK3sKKyAgcHVibGljOgorICAgIFNoYWRlckV4ZWN1dGFibGUoY29uc3Qgdm9p
ZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgpIDogbUxlbmd0aChsZW5ndGgpCisgICAgeworICAg
ICAgICBtRnVuY3Rpb24gPSBuZXcgY2hhcltsZW5ndGhdOworICAgICAgICBtZW1jcHkobUZ1bmN0
aW9uLCBmdW5jdGlvbiwgbGVuZ3RoKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB+U2hhZGVy
RXhlY3V0YWJsZSgpCisgICAgeworICAgICAgICBkZWxldGVbXSBtRnVuY3Rpb247CisgICAgfQor
CisgICAgdm9pZCAqZ2V0RnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1G
dW5jdGlvbjsKKyAgICB9CisKKyAgICBzaXplX3QgZ2V0TGVuZ3RoKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtTGVuZ3RoOworICAgIH0KKworICBwcml2YXRlOgorICAgIERJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTihTaGFkZXJFeGVjdXRhYmxlKTsKKworICAgIHZvaWQgKm1GdW5jdGlv
bjsKKyAgICBjb25zdCBzaXplX3QgbUxlbmd0aDsKK307CisKK30KKworI2VuZGlmIC8vIExJQkdM
RVNWMl9SRU5ERVJFUl9TSEFERVJFWEVDVVRBQkxFOV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW45LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBD
aGFpbjkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW45LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
MzQgQEAKKyNpbmNsdWRlICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAx
Mi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
U3dhcENoYWluOS5jcHA6IEltcGxlbWVudHMgYSBiYWNrLWVuZCBzcGVjaWZpYyBjbGFzcyBmb3Ig
dGhlIEQzRDkgc3dhcCBjaGFpbi4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9Td2Fw
Q2hhaW45LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyOV91dGlscy5o
IgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJlcjkuaCIKKworbmFtZXNwYWNl
IHJ4Cit7CisKK1N3YXBDaGFpbjk6OlN3YXBDaGFpbjkoUmVuZGVyZXI5ICpyZW5kZXJlciwgSFdO
RCB3aW5kb3csIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCkKKyAgICA6IG1S
ZW5kZXJlcihyZW5kZXJlciksIFN3YXBDaGFpbih3aW5kb3csIHNoYXJlSGFuZGxlLCBiYWNrQnVm
ZmVyRm9ybWF0LCBkZXB0aEJ1ZmZlckZvcm1hdCkKK3sKKyAgICBtU3dhcENoYWluID0gTlVMTDsK
KyAgICBtQmFja0J1ZmZlciA9IE5VTEw7CisgICAgbURlcHRoU3RlbmNpbCA9IE5VTEw7CisgICAg
bVJlbmRlclRhcmdldCA9IE5VTEw7CisgICAgbU9mZnNjcmVlblRleHR1cmUgPSBOVUxMOworICAg
IG1XaWR0aCA9IC0xOworICAgIG1IZWlnaHQgPSAtMTsKKyAgICBtU3dhcEludGVydmFsID0gLTE7
Cit9CisKK1N3YXBDaGFpbjk6On5Td2FwQ2hhaW45KCkKK3sKKyAgICByZWxlYXNlKCk7Cit9CisK
K3ZvaWQgU3dhcENoYWluOTo6cmVsZWFzZSgpCit7CisgICAgaWYgKG1Td2FwQ2hhaW4pCisgICAg
eworICAgICAgICBtU3dhcENoYWluLT5SZWxlYXNlKCk7CisgICAgICAgIG1Td2FwQ2hhaW4gPSBO
VUxMOworICAgIH0KKworICAgIGlmIChtQmFja0J1ZmZlcikKKyAgICB7CisgICAgICAgIG1CYWNr
QnVmZmVyLT5SZWxlYXNlKCk7CisgICAgICAgIG1CYWNrQnVmZmVyID0gTlVMTDsKKyAgICB9CisK
KyAgICBpZiAobURlcHRoU3RlbmNpbCkKKyAgICB7CisgICAgICAgIG1EZXB0aFN0ZW5jaWwtPlJl
bGVhc2UoKTsKKyAgICAgICAgbURlcHRoU3RlbmNpbCA9IE5VTEw7CisgICAgfQorCisgICAgaWYg
KG1SZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICBtUmVuZGVyVGFyZ2V0LT5SZWxlYXNlKCk7
CisgICAgICAgIG1SZW5kZXJUYXJnZXQgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtT2Zmc2Ny
ZWVuVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlLT5SZWxlYXNlKCk7
CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobVdp
bmRvdykKKyAgICAgICAgbVNoYXJlSGFuZGxlID0gTlVMTDsKK30KKworc3RhdGljIERXT1JEIGNv
bnZlcnRJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpCit7CisgICAgc3dpdGNoKGludGVydmFsKQor
ICAgIHsKKyAgICAgIGNhc2UgMDogcmV0dXJuIEQzRFBSRVNFTlRfSU5URVJWQUxfSU1NRURJQVRF
OworICAgICAgY2FzZSAxOiByZXR1cm4gRDNEUFJFU0VOVF9JTlRFUlZBTF9PTkU7CisgICAgICBj
YXNlIDI6IHJldHVybiBEM0RQUkVTRU5UX0lOVEVSVkFMX1RXTzsKKyAgICAgIGNhc2UgMzogcmV0
dXJuIEQzRFBSRVNFTlRfSU5URVJWQUxfVEhSRUU7CisgICAgICBjYXNlIDQ6IHJldHVybiBEM0RQ
UkVTRU5UX0lOVEVSVkFMX0ZPVVI7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAg
IH0KKworICAgIHJldHVybiBEM0RQUkVTRU5UX0lOVEVSVkFMX0RFRkFVTFQ7Cit9CisKK0VHTGlu
dCBTd2FwQ2hhaW45OjpyZXNpemUoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJI
ZWlnaHQpCit7CisgICAgLy8gRDNEOSBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIHN3YXAgY2hh
aW5zIHdpdGhvdXQgcmVjcmVhdGluZyB0aGVtCisgICAgcmV0dXJuIHJlc2V0KGJhY2tidWZmZXJX
aWR0aCwgYmFja2J1ZmZlckhlaWdodCwgbVN3YXBJbnRlcnZhbCk7Cit9CisKK0VHTGludCBTd2Fw
Q2hhaW45OjpyZXNldChpbnQgYmFja2J1ZmZlcldpZHRoLCBpbnQgYmFja2J1ZmZlckhlaWdodCwg
RUdMaW50IHN3YXBJbnRlcnZhbCkKK3sKKyAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBt
UmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgaWYgKGRldmljZSA9PSBOVUxMKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEVHTF9CQURfQUNDRVNTOworICAgIH0KKworICAgIC8vIEV2aWN0IGFs
bCBub24tcmVuZGVyIHRhcmdldCB0ZXh0dXJlcyB0byBzeXN0ZW0gbWVtb3J5IGFuZCByZWxlYXNl
IGFsbCByZXNvdXJjZXMKKyAgICAvLyBiZWZvcmUgcmVhbGxvY2F0aW5nIHRoZW0gdG8gZnJlZSB1
cCBhcyBtdWNoIHZpZGVvIG1lbW9yeSBhcyBwb3NzaWJsZS4KKyAgICBkZXZpY2UtPkV2aWN0TWFu
YWdlZFJlc291cmNlcygpOworCisgICAgSFJFU1VMVCByZXN1bHQ7CisKKyAgICAvLyBSZWxlYXNl
IHNwZWNpZmljIHJlc291cmNlcyB0byBmcmVlIHVwIG1lbW9yeSBmb3IgdGhlIG5ldyByZW5kZXIg
dGFyZ2V0LCB3aGlsZSB0aGUKKyAgICAvLyBvbGQgcmVuZGVyIHRhcmdldCBzdGlsbCBleGlzdHMg
Zm9yIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZpbmcgaXRzIGNvbnRlbnRzLgorICAgIGlmIChtU3dh
cENoYWluKQorICAgIHsKKyAgICAgICAgbVN3YXBDaGFpbi0+UmVsZWFzZSgpOworICAgICAgICBt
U3dhcENoYWluID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobUJhY2tCdWZmZXIpCisgICAgewor
ICAgICAgICBtQmFja0J1ZmZlci0+UmVsZWFzZSgpOworICAgICAgICBtQmFja0J1ZmZlciA9IE5V
TEw7CisgICAgfQorCisgICAgaWYgKG1PZmZzY3JlZW5UZXh0dXJlKQorICAgIHsKKyAgICAgICAg
bU9mZnNjcmVlblRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbU9mZnNjcmVlblRleHR1cmUg
PSBOVUxMOworICAgIH0KKworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsKKyAgICAgICAg
bURlcHRoU3RlbmNpbC0+UmVsZWFzZSgpOworICAgICAgICBtRGVwdGhTdGVuY2lsID0gTlVMTDsK
KyAgICB9CisKKyAgICBIQU5ETEUgKnBTaGFyZUhhbmRsZSA9IE5VTEw7CisgICAgaWYgKCFtV2lu
ZG93ICYmIG1SZW5kZXJlci0+Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KCkpCisgICAgeworICAgICAg
ICBwU2hhcmVIYW5kbGUgPSAmbVNoYXJlSGFuZGxlOworICAgIH0KKworICAgIHJlc3VsdCA9IGRl
dmljZS0+Q3JlYXRlVGV4dHVyZShiYWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJIZWlnaHQsIDEs
IEQzRFVTQUdFX1JFTkRFUlRBUkdFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xfZDNkOTo6Q29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChtQmFja0J1ZmZlckZvcm1hdCks
IEQzRFBPT0xfREVGQVVMVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1P
ZmZzY3JlZW5UZXh0dXJlLCBwU2hhcmVIYW5kbGUpOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
KyAgICB7CisgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBvZmZzY3JlZW4gdGV4dHVyZTog
JTA4bFgiLCByZXN1bHQpOworICAgICAgICByZWxlYXNlKCk7CisKKyAgICAgICAgaWYgKGQzZDk6
OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBFR0xfQ09OVEVYVF9MT1NUOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIEVHTF9CQURfQUxMT0M7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBJRGlyZWN0M0RTdXJmYWNlOSAqb2xkUmVuZGVyVGFyZ2V0ID0gbVJlbmRlclRhcmdldDsKKwor
ICAgIHJlc3VsdCA9IG1PZmZzY3JlZW5UZXh0dXJlLT5HZXRTdXJmYWNlTGV2ZWwoMCwgJm1SZW5k
ZXJUYXJnZXQpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICBpZiAob2xk
UmVuZGVyVGFyZ2V0KQorICAgIHsKKyAgICAgICAgUkVDVCByZWN0ID0KKyAgICAgICAgeworICAg
ICAgICAgICAgMCwgMCwKKyAgICAgICAgICAgIG1XaWR0aCwgbUhlaWdodAorICAgICAgICB9Owor
CisgICAgICAgIGlmIChyZWN0LnJpZ2h0ID4gc3RhdGljX2Nhc3Q8TE9ORz4oYmFja2J1ZmZlcldp
ZHRoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmVjdC5yaWdodCA9IGJhY2tidWZmZXJXaWR0
aDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZWN0LmJvdHRvbSA+IHN0YXRpY19jYXN0PExP
Tkc+KGJhY2tidWZmZXJIZWlnaHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZWN0LmJvdHRv
bSA9IGJhY2tidWZmZXJIZWlnaHQ7CisgICAgICAgIH0KKworICAgICAgICBtUmVuZGVyZXItPmVu
ZFNjZW5lKCk7CisKKyAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5TdHJldGNoUmVjdChvbGRSZW5k
ZXJUYXJnZXQsICZyZWN0LCBtUmVuZGVyVGFyZ2V0LCAmcmVjdCwgRDNEVEVYRl9OT05FKTsKKyAg
ICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgICAgICBvbGRSZW5kZXJUYXJn
ZXQtPlJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBpZiAobVdpbmRvdykKKyAgICB7CisgICAgICAg
IEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBwcmVzZW50UGFyYW1ldGVycyA9IHswfTsKKyAgICAgICAg
cHJlc2VudFBhcmFtZXRlcnMuQXV0b0RlcHRoU3RlbmNpbEZvcm1hdCA9IGdsX2QzZDk6OkNvbnZl
cnRSZW5kZXJidWZmZXJGb3JtYXQobURlcHRoQnVmZmVyRm9ybWF0KTsKKyAgICAgICAgcHJlc2Vu
dFBhcmFtZXRlcnMuQmFja0J1ZmZlckNvdW50ID0gMTsKKyAgICAgICAgcHJlc2VudFBhcmFtZXRl
cnMuQmFja0J1ZmZlckZvcm1hdCA9IGdsX2QzZDk6OkNvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQo
bUJhY2tCdWZmZXJGb3JtYXQpOworICAgICAgICBwcmVzZW50UGFyYW1ldGVycy5FbmFibGVBdXRv
RGVwdGhTdGVuY2lsID0gRkFMU0U7CisgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLkZsYWdzID0g
MDsKKyAgICAgICAgcHJlc2VudFBhcmFtZXRlcnMuaERldmljZVdpbmRvdyA9IG1XaW5kb3c7Cisg
ICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLk11bHRpU2FtcGxlUXVhbGl0eSA9IDA7ICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQKKyAgICAgICAgcHJlc2VudFBhcmFtZXRl
cnMuTXVsdGlTYW1wbGVUeXBlID0gRDNETVVMVElTQU1QTEVfTk9ORTsgICAvLyBGSVhNRTogVW5p
bXBsZW1lbnRlZAorICAgICAgICBwcmVzZW50UGFyYW1ldGVycy5QcmVzZW50YXRpb25JbnRlcnZh
bCA9IGNvbnZlcnRJbnRlcnZhbChzd2FwSW50ZXJ2YWwpOworICAgICAgICBwcmVzZW50UGFyYW1l
dGVycy5Td2FwRWZmZWN0ID0gRDNEU1dBUEVGRkVDVF9ESVNDQVJEOworICAgICAgICBwcmVzZW50
UGFyYW1ldGVycy5XaW5kb3dlZCA9IFRSVUU7CisgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLkJh
Y2tCdWZmZXJXaWR0aCA9IGJhY2tidWZmZXJXaWR0aDsKKyAgICAgICAgcHJlc2VudFBhcmFtZXRl
cnMuQmFja0J1ZmZlckhlaWdodCA9IGJhY2tidWZmZXJIZWlnaHQ7CisKKyAgICAgICAgLy8gaHR0
cDovL2NyYnVnLmNvbS8xNDAyMzkKKyAgICAgICAgLy8gaHR0cDovL2NyYnVnLmNvbS8xNDM0MzQK
KyAgICAgICAgLy8KKyAgICAgICAgLy8gU29tZSBBTUQvSW50ZWwgc3dpdGNoYWJsZSBzeXN0ZW1z
IC8gZHJpdmVycyBhcHBlYXIgdG8gcm91bmQgc3dhcCBjaGFpbiBzdXJmYWNlcyB0byBhIG11bHRp
cGxlIG9mIDY0IHBpeGVscyBpbiB3aWR0aAorICAgICAgICAvLyB3aGVuIHVzaW5nIHRoZSBpbnRl
Z3JhdGVkIEludGVsLiBUaGlzIHJvdW5kcyB0aGUgd2lkdGggdXAgcmF0aGVyIHRoYW4gZG93bi4K
KyAgICAgICAgLy8KKyAgICAgICAgLy8gU29tZSBub24tc3dpdGNoYWJsZSBBTUQgR1BVcyAvIGRy
aXZlcnMgZG8gbm90IHJlc3BlY3QgdGhlIHNvdXJjZSByZWN0YW5nbGUgdG8gUHJlc2VudC4gVGhl
cmVmb3JlLCB3aGVuIHRoZSB2ZW5kb3IgSUQKKyAgICAgICAgLy8gaXMgbm90IEludGVsLCB0aGUg
YmFjayBidWZmZXIgd2lkdGggbXVzdCBiZSBleGFjdGx5IHRoZSBzYW1lIHdpZHRoIGFzIHRoZSB3
aW5kb3cgb3IgaG9yaXpvbnRhbCBzY2FsaW5nIHdpbGwgb2NjdXIuCisgICAgICAgIGlmIChtUmVu
ZGVyZXItPmdldEFkYXB0ZXJWZW5kb3IoKSA9PSBWRU5ET1JfSURfSU5URUwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJzLkJhY2tCdWZmZXJXaWR0aCA9IChwcmVzZW50
UGFyYW1ldGVycy5CYWNrQnVmZmVyV2lkdGggKyA2MykgLyA2NCAqIDY0OworICAgICAgICB9CisK
KyAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVBZGRpdGlvbmFsU3dhcENoYWluKCZwcmVz
ZW50UGFyYW1ldGVycywgJm1Td2FwQ2hhaW4pOworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RFUlJfT1VUT0ZW
SURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCByZXN1bHQgPT0gRDNERVJS
X0lOVkFMSURDQUxMIHx8IHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTE9TVCk7CisKKyAgICAgICAg
ICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBhZGRpdGlvbmFsIHN3YXAgY2hhaW5zIG9yIG9mZnNj
cmVlbiBzdXJmYWNlczogJTA4bFgiLCByZXN1bHQpOworICAgICAgICAgICAgcmVsZWFzZSgpOwor
CisgICAgICAgICAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRUdMX0NPTlRFWFRfTE9TVDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gRUdMX0JBRF9BTExPQzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIHJlc3VsdCA9IG1Td2FwQ2hhaW4tPkdldEJhY2tCdWZmZXIoMCwgRDNEQkFDS0JVRkZFUl9U
WVBFX01PTk8sICZtQmFja0J1ZmZlcik7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0
KSk7CisgICAgICAgIEludmFsaWRhdGVSZWN0KG1XaW5kb3csIE5VTEwsIEZBTFNFKTsKKyAgICB9
CisKKyAgICBpZiAobURlcHRoQnVmZmVyRm9ybWF0ICE9IEdMX05PTkUpCisgICAgeworICAgICAg
ICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFN1cmZhY2UoYmFja2J1ZmZlcldp
ZHRoLCBiYWNrYnVmZmVySGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xfZDNkOTo6Q29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChtRGVw
dGhCdWZmZXJGb3JtYXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRDNETVVMVElTQU1QTEVfTk9ORSwgMCwgRkFMU0UsICZtRGVwdGhTdGVuY2ls
LCBOVUxMKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0
ID09IEVfT1VUT0ZNRU1PUlkgfHwgcmVzdWx0ID09IEQzREVSUl9JTlZBTElEQ0FMTCk7CisKKyAg
ICAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBkZXB0aHN0ZW5jaWwgc3VyZmFjZSBmb3Ig
bmV3IHN3YXAgY2hhaW46IDB4JTA4WCIsIHJlc3VsdCk7CisgICAgICAgICAgICByZWxlYXNlKCk7
CisKKyAgICAgICAgICAgIGlmIChkM2Q5Ojppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NUOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgbVdpZHRoID0gYmFja2J1ZmZlcldpZHRoOworICAgIG1IZWlnaHQgPSBiYWNrYnVm
ZmVySGVpZ2h0OworICAgIG1Td2FwSW50ZXJ2YWwgPSBzd2FwSW50ZXJ2YWw7CisKKyAgICByZXR1
cm4gRUdMX1NVQ0NFU1M7Cit9CisKKy8vIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHZhbGlkYXRlZC9j
bGFtcGVkIGJ5IGNhbGxlcgorRUdMaW50IFN3YXBDaGFpbjk6OnN3YXBSZWN0KEVHTGludCB4LCBF
R0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KQoreworICAgIGlmICghbVN3YXBD
aGFpbikKKyAgICB7CisgICAgICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKKyAgICB9CisKKyAgICBJ
RGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworCisgICAg
Ly8gRGlzYWJsZSBhbGwgcGlwZWxpbmUgb3BlcmF0aW9ucworICAgIGRldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfWkVOQUJMRSwgRDNEWkJfRkFMU0UpOworICAgIGRldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfRklMTE1PREUsIEQzREZJTExfU09MSUQpOworICAgIGRldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfQUxQSEFURVNURU5BQkxFLCBGQUxTRSk7CisgICAgZGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZShEM0RSU19BTFBIQUJMRU5ERU5BQkxFLCBGQUxTRSk7CisgICAgZGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19DVUxMTU9ERSwgRDNEQ1VMTF9OT05FKTsKKyAgICBkZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX1NURU5DSUxFTkFCTEUsIEZBTFNFKTsKKyAgICBkZXZpY2Ut
PlNldFJlbmRlclN0YXRlKEQzRFJTX0NMSVBQTEFORUVOQUJMRSwgMCk7CisgICAgZGV2aWNlLT5T
ZXRSZW5kZXJTdGF0ZShEM0RSU19DT0xPUldSSVRFRU5BQkxFLCBEM0RDT0xPUldSSVRFRU5BQkxF
X0FMUEhBIHwgRDNEQ09MT1JXUklURUVOQUJMRV9CTFVFIHwgRDNEQ09MT1JXUklURUVOQUJMRV9H
UkVFTiB8IEQzRENPTE9SV1JJVEVFTkFCTEVfUkVEKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0
YXRlKEQzRFJTX1NSR0JXUklURUVOQUJMRSwgRkFMU0UpOworICAgIGRldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfU0NJU1NPUlRFU1RFTkFCTEUsIEZBTFNFKTsKKyAgICBkZXZpY2UtPlNldFBp
eGVsU2hhZGVyKE5VTEwpOworICAgIGRldmljZS0+U2V0VmVydGV4U2hhZGVyKE5VTEwpOworCisg
ICAgZGV2aWNlLT5TZXRSZW5kZXJUYXJnZXQoMCwgbUJhY2tCdWZmZXIpOworICAgIGRldmljZS0+
U2V0RGVwdGhTdGVuY2lsU3VyZmFjZShOVUxMKTsKKworICAgIGRldmljZS0+U2V0VGV4dHVyZSgw
LCBtT2Zmc2NyZWVuVGV4dHVyZSk7CisgICAgZGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgw
LCBEM0RUU1NfQ09MT1JPUCwgRDNEVE9QX1NFTEVDVEFSRzEpOworICAgIGRldmljZS0+U2V0VGV4
dHVyZVN0YWdlU3RhdGUoMCwgRDNEVFNTX0NPTE9SQVJHMSwgRDNEVEFfVEVYVFVSRSk7CisgICAg
ZGV2aWNlLT5TZXRUZXh0dXJlU3RhZ2VTdGF0ZSgxLCBEM0RUU1NfQ09MT1JPUCwgRDNEVE9QX0RJ
U0FCTEUpOworICAgIGRldmljZS0+U2V0U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfTUFHRklMVEVS
LCBEM0RURVhGX1BPSU5UKTsKKyAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZSgwLCBEM0RTQU1Q
X01JTkZJTFRFUiwgRDNEVEVYRl9QT0lOVCk7CisgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUo
MCwgRDNEU0FNUF9BRERSRVNTVSwgRDNEVEFERFJFU1NfQ0xBTVApOworICAgIGRldmljZS0+U2V0
U2FtcGxlclN0YXRlKDAsIEQzRFNBTVBfQUREUkVTU1YsIEQzRFRBRERSRVNTX0NMQU1QKTsKKyAg
ICBkZXZpY2UtPlNldEZWRihEM0RGVkZfWFlaUkhXIHwgRDNERlZGX1RFWDEpOworCisgICAgRDNE
VklFV1BPUlQ5IHZpZXdwb3J0ID0gezAsIDAsIG1XaWR0aCwgbUhlaWdodCwgMC4wZiwgMS4wZn07
CisgICAgZGV2aWNlLT5TZXRWaWV3cG9ydCgmdmlld3BvcnQpOworCisgICAgZmxvYXQgeDEgPSB4
IC0gMC41ZjsKKyAgICBmbG9hdCB5MSA9IChtSGVpZ2h0IC0geSAtIGhlaWdodCkgLSAwLjVmOwor
ICAgIGZsb2F0IHgyID0gKHggKyB3aWR0aCkgLSAwLjVmOworICAgIGZsb2F0IHkyID0gKG1IZWln
aHQgLSB5KSAtIDAuNWY7CisKKyAgICBmbG9hdCB1MSA9IHggLyBmbG9hdChtV2lkdGgpOworICAg
IGZsb2F0IHYxID0geSAvIGZsb2F0KG1IZWlnaHQpOworICAgIGZsb2F0IHUyID0gKHggKyB3aWR0
aCkgLyBmbG9hdChtV2lkdGgpOworICAgIGZsb2F0IHYyID0gKHkgKyBoZWlnaHQpIC8gZmxvYXQo
bUhlaWdodCk7CisKKyAgICBmbG9hdCBxdWFkWzRdWzZdID0ge3t4MSwgeTEsIDAuMGYsIDEuMGYs
IHUxLCB2Mn0sCisgICAgICAgICAgICAgICAgICAgICAgICB7eDIsIHkxLCAwLjBmLCAxLjBmLCB1
MiwgdjJ9LAorICAgICAgICAgICAgICAgICAgICAgICAge3gyLCB5MiwgMC4wZiwgMS4wZiwgdTIs
IHYxfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHt4MSwgeTIsIDAuMGYsIDEuMGYsIHUxLCB2
MX19OyAgIC8vIHgsIHksIHosIHJodywgdSwgdgorCisgICAgbVJlbmRlcmVyLT5zdGFydFNjZW5l
KCk7CisgICAgZGV2aWNlLT5EcmF3UHJpbWl0aXZlVVAoRDNEUFRfVFJJQU5HTEVGQU4sIDIsIHF1
YWQsIDYgKiBzaXplb2YoZmxvYXQpKTsKKyAgICBtUmVuZGVyZXItPmVuZFNjZW5lKCk7CisKKyAg
ICBkZXZpY2UtPlNldFRleHR1cmUoMCwgTlVMTCk7CisKKyAgICBSRUNUIHJlY3QgPQorICAgIHsK
KyAgICAgICAgeCwgbUhlaWdodCAtIHkgLSBoZWlnaHQsCisgICAgICAgIHggKyB3aWR0aCwgbUhl
aWdodCAtIHkKKyAgICB9OworCisgICAgSFJFU1VMVCByZXN1bHQgPSBtU3dhcENoYWluLT5QcmVz
ZW50KCZyZWN0LCAmcmVjdCwgTlVMTCwgTlVMTCwgMCk7CisKKyAgICBtUmVuZGVyZXItPm1hcmtB
bGxTdGF0ZURpcnR5KCk7CisKKyAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NUOworICAgIH0KKworICAg
IGlmIChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VU
T0ZNRU1PUlkgfHwgcmVzdWx0ID09IEQzREVSUl9EUklWRVJJTlRFUk5BTEVSUk9SKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEVHTF9CQURfQUxMT0M7CisgICAgfQorCisgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKworICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKK30KKworLy8gSW5jcmVt
ZW50cyByZWZjb3VudCBvbiBzdXJmYWNlLgorLy8gY2FsbGVyIG11c3QgUmVsZWFzZSgpIHRoZSBy
ZXR1cm5lZCBzdXJmYWNlCitJRGlyZWN0M0RTdXJmYWNlOSAqU3dhcENoYWluOTo6Z2V0UmVuZGVy
VGFyZ2V0KCkKK3sKKyAgICBpZiAobVJlbmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIG1SZW5k
ZXJUYXJnZXQtPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0Owor
fQorCisvLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHN1cmZhY2UuCisvLyBjYWxsZXIgbXVzdCBS
ZWxlYXNlKCkgdGhlIHJldHVybmVkIHN1cmZhY2UKK0lEaXJlY3QzRFN1cmZhY2U5ICpTd2FwQ2hh
aW45OjpnZXREZXB0aFN0ZW5jaWwoKQoreworICAgIGlmIChtRGVwdGhTdGVuY2lsKQorICAgIHsK
KyAgICAgICAgbURlcHRoU3RlbmNpbC0+QWRkUmVmKCk7CisgICAgfQorCisgICAgcmV0dXJuIG1E
ZXB0aFN0ZW5jaWw7Cit9CisKKy8vIEluY3JlbWVudHMgcmVmY291bnQgb24gdGV4dHVyZS4KKy8v
IGNhbGxlciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJuZWQgdGV4dHVyZQorSURpcmVjdDNEVGV4
dHVyZTkgKlN3YXBDaGFpbjk6OmdldE9mZnNjcmVlblRleHR1cmUoKQoreworICAgIGlmIChtT2Zm
c2NyZWVuVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlLT5BZGRSZWYo
KTsKKyAgICB9CisKKyAgICByZXR1cm4gbU9mZnNjcmVlblRleHR1cmU7Cit9CisKK1N3YXBDaGFp
bjkgKlN3YXBDaGFpbjk6Om1ha2VTd2FwQ2hhaW45KFN3YXBDaGFpbiAqc3dhcENoYWluKQorewor
ICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpTd2FwQ2hhaW45Kiwgc3dhcENoYWluKSk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHJ4OjpTd2FwQ2hhaW45Kj4oc3dhcENoYWluKTsKK30K
Kwordm9pZCBTd2FwQ2hhaW45OjpyZWNyZWF0ZSgpCit7CisgICAgaWYgKCFtU3dhcENoYWluKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIElEaXJlY3QzRERldmljZTkgKmRl
dmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgaWYgKGRldmljZSA9PSBOVUxMKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVS
UyBwcmVzZW50UGFyYW1ldGVyczsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IG1Td2FwQ2hhaW4tPkdl
dFByZXNlbnRQYXJhbWV0ZXJzKCZwcmVzZW50UGFyYW1ldGVycyk7CisgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKworICAgIElEaXJlY3QzRFN3YXBDaGFpbjkqIG5ld1N3YXBDaGFpbiA9
IE5VTEw7CisgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVBZGRpdGlvbmFsU3dhcENoYWluKCZw
cmVzZW50UGFyYW1ldGVycywgJm5ld1N3YXBDaGFpbik7CisgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1Td2FwQ2hhaW4tPlJlbGVh
c2UoKTsKKyAgICBtU3dhcENoYWluID0gbmV3U3dhcENoYWluOworCisgICAgbUJhY2tCdWZmZXIt
PlJlbGVhc2UoKTsKKyAgICByZXN1bHQgPSBtU3dhcENoYWluLT5HZXRCYWNrQnVmZmVyKDAsIEQz
REJBQ0tCVUZGRVJfVFlQRV9NT05PLCAmbUJhY2tCdWZmZXIpOworICAgIEFTU0VSVChTVUNDRUVE
RUQocmVzdWx0KSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9T
d2FwQ2hhaW45LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBTd2FwQ2hhaW45Lmg6IERlZmluZXMgYSBiYWNrLWVuZCBzcGVjaWZpYyBjbGFzcyBmb3Ig
dGhlIEQzRDkgc3dhcCBjaGFpbi4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfU1dBUENI
QUlOOV9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVOREVSRVJfU1dBUENIQUlOOV9IXworCisjaW5j
bHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
U3dhcENoYWluLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI5OworCitjbGFz
cyBTd2FwQ2hhaW45IDogcHVibGljIFN3YXBDaGFpbgoreworICBwdWJsaWM6CisgICAgU3dhcENo
YWluOShSZW5kZXJlcjkgKnJlbmRlcmVyLCBIV05EIHdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxl
LAorICAgICAgICAgICAgICAgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1
ZmZlckZvcm1hdCk7CisgICAgdmlydHVhbCB+U3dhcENoYWluOSgpOworCisgICAgRUdMaW50IHJl
c2l6ZShFR0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1ZmZlckhlaWdodCk7Cisg
ICAgdmlydHVhbCBFR0xpbnQgcmVzZXQoRUdMaW50IGJhY2tidWZmZXJXaWR0aCwgRUdMaW50IGJh
Y2tidWZmZXJIZWlnaHQsIEVHTGludCBzd2FwSW50ZXJ2YWwpOworICAgIHZpcnR1YWwgRUdMaW50
IHN3YXBSZWN0KEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGUoKTsKKworICAgIHZpcnR1YWwgSURpcmVjdDNE
U3VyZmFjZTkgKmdldFJlbmRlclRhcmdldCgpOworICAgIHZpcnR1YWwgSURpcmVjdDNEU3VyZmFj
ZTkgKmdldERlcHRoU3RlbmNpbCgpOworICAgIHZpcnR1YWwgSURpcmVjdDNEVGV4dHVyZTkgKmdl
dE9mZnNjcmVlblRleHR1cmUoKTsKKworICAgIHN0YXRpYyBTd2FwQ2hhaW45ICptYWtlU3dhcENo
YWluOShTd2FwQ2hhaW4gKnN3YXBDaGFpbik7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19D
T1BZX0FORF9BU1NJR04oU3dhcENoYWluOSk7CisKKyAgICB2b2lkIHJlbGVhc2UoKTsKKworICAg
IFJlbmRlcmVyOSAqbVJlbmRlcmVyOworICAgIEVHTGludCBtSGVpZ2h0OworICAgIEVHTGludCBt
V2lkdGg7CisgICAgRUdMaW50IG1Td2FwSW50ZXJ2YWw7CisKKyAgICBJRGlyZWN0M0RTd2FwQ2hh
aW45ICptU3dhcENoYWluOworICAgIElEaXJlY3QzRFN1cmZhY2U5ICptQmFja0J1ZmZlcjsKKyAg
ICBJRGlyZWN0M0RTdXJmYWNlOSAqbVJlbmRlclRhcmdldDsKKyAgICBJRGlyZWN0M0RTdXJmYWNl
OSAqbURlcHRoU3RlbmNpbDsKKyAgICBJRGlyZWN0M0RUZXh0dXJlOSogbU9mZnNjcmVlblRleHR1
cmU7Cit9OworCit9CisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1NXQVBDSEFJTjlfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dh
cENoYWluMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluMTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzY3IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN3YXBDaGFpbjExLmNwcDogSW1wbGVtZW50cyBhIGJh
Y2stZW5kIHNwZWNpZmljIGNsYXNzIGZvciB0aGUgRDNEMTEgc3dhcCBjaGFpbi4KKworI2luY2x1
ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9Td2FwQ2hhaW4xMS5oIgorCisjaW5jbHVkZSAibGliR0xF
U3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvUmVuZGVyZXIxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJz
L2NvbXBpbGVkL3Bhc3N0aHJvdWdoMTF2cy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTExcHMuaCIKKworbmFtZXNwYWNlIHJ4
Cit7CisKK1N3YXBDaGFpbjExOjpTd2FwQ2hhaW4xMShSZW5kZXJlcjExICpyZW5kZXJlciwgSFdO
RCB3aW5kb3csIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gYmFja0J1ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KQorICAgIDog
bVJlbmRlcmVyKHJlbmRlcmVyKSwgU3dhcENoYWluKHdpbmRvdywgc2hhcmVIYW5kbGUsIGJhY2tC
dWZmZXJGb3JtYXQsIGRlcHRoQnVmZmVyRm9ybWF0KQoreworICAgIG1Td2FwQ2hhaW4gPSBOVUxM
OworICAgIG1CYWNrQnVmZmVyVGV4dHVyZSA9IE5VTEw7CisgICAgbUJhY2tCdWZmZXJSVFZpZXcg
PSBOVUxMOworICAgIG1PZmZzY3JlZW5UZXh0dXJlID0gTlVMTDsKKyAgICBtT2Zmc2NyZWVuUlRW
aWV3ID0gTlVMTDsKKyAgICBtT2Zmc2NyZWVuU1JWaWV3ID0gTlVMTDsKKyAgICBtRGVwdGhTdGVu
Y2lsVGV4dHVyZSA9IE5VTEw7CisgICAgbURlcHRoU3RlbmNpbERTVmlldyA9IE5VTEw7CisgICAg
bVF1YWRWQiA9IE5VTEw7CisgICAgbVBhc3NUaHJvdWdoU2FtcGxlciA9IE5VTEw7CisgICAgbVBh
c3NUaHJvdWdoSUwgPSBOVUxMOworICAgIG1QYXNzVGhyb3VnaFZTID0gTlVMTDsKKyAgICBtUGFz
c1Rocm91Z2hQUyA9IE5VTEw7CisgICAgbVdpZHRoID0gLTE7CisgICAgbUhlaWdodCA9IC0xOwor
ICAgIG1Td2FwSW50ZXJ2YWwgPSAwOworICAgIG1BcHBDcmVhdGVkU2hhcmVIYW5kbGUgPSBtU2hh
cmVIYW5kbGUgIT0gTlVMTDsKKyAgICBtUGFzc1Rocm91Z2hSZXNvdXJjZXNJbml0ID0gZmFsc2U7
Cit9CisKK1N3YXBDaGFpbjExOjp+U3dhcENoYWluMTEoKQoreworICAgIHJlbGVhc2UoKTsKK30K
Kwordm9pZCBTd2FwQ2hhaW4xMTo6cmVsZWFzZSgpCit7CisgICAgaWYgKG1Td2FwQ2hhaW4pCisg
ICAgeworICAgICAgICBtU3dhcENoYWluLT5SZWxlYXNlKCk7CisgICAgICAgIG1Td2FwQ2hhaW4g
PSBOVUxMOworICAgIH0KKworICAgIGlmIChtQmFja0J1ZmZlclRleHR1cmUpCisgICAgeworICAg
ICAgICBtQmFja0J1ZmZlclRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbUJhY2tCdWZmZXJU
ZXh0dXJlID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobUJhY2tCdWZmZXJSVFZpZXcpCisgICAg
eworICAgICAgICBtQmFja0J1ZmZlclJUVmlldy0+UmVsZWFzZSgpOworICAgICAgICBtQmFja0J1
ZmZlclJUVmlldyA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1PZmZzY3JlZW5UZXh0dXJlKQor
ICAgIHsKKyAgICAgICAgbU9mZnNjcmVlblRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbU9m
ZnNjcmVlblRleHR1cmUgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtT2Zmc2NyZWVuUlRWaWV3
KQorICAgIHsKKyAgICAgICAgbU9mZnNjcmVlblJUVmlldy0+UmVsZWFzZSgpOworICAgICAgICBt
T2Zmc2NyZWVuUlRWaWV3ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobU9mZnNjcmVlblNSVmll
dykKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5TUlZpZXctPlJlbGVhc2UoKTsKKyAgICAgICAg
bU9mZnNjcmVlblNSVmlldyA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1EZXB0aFN0ZW5jaWxU
ZXh0dXJlKQorICAgIHsKKyAgICAgICAgbURlcHRoU3RlbmNpbFRleHR1cmUtPlJlbGVhc2UoKTsK
KyAgICAgICAgbURlcHRoU3RlbmNpbFRleHR1cmUgPSBOVUxMOworICAgIH0KKworICAgIGlmICht
RGVwdGhTdGVuY2lsRFNWaWV3KQorICAgIHsKKyAgICAgICAgbURlcHRoU3RlbmNpbERTVmlldy0+
UmVsZWFzZSgpOworICAgICAgICBtRGVwdGhTdGVuY2lsRFNWaWV3ID0gTlVMTDsKKyAgICB9CisK
KyAgICBpZiAobVF1YWRWQikKKyAgICB7CisgICAgICAgIG1RdWFkVkItPlJlbGVhc2UoKTsKKyAg
ICAgICAgbVF1YWRWQiA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1QYXNzVGhyb3VnaFNhbXBs
ZXIpCisgICAgeworICAgICAgICBtUGFzc1Rocm91Z2hTYW1wbGVyLT5SZWxlYXNlKCk7CisgICAg
ICAgIG1QYXNzVGhyb3VnaFNhbXBsZXIgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtUGFzc1Ro
cm91Z2hJTCkKKyAgICB7CisgICAgICAgIG1QYXNzVGhyb3VnaElMLT5SZWxlYXNlKCk7CisgICAg
ICAgIG1QYXNzVGhyb3VnaElMID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobVBhc3NUaHJvdWdo
VlMpCisgICAgeworICAgICAgICBtUGFzc1Rocm91Z2hWUy0+UmVsZWFzZSgpOworICAgICAgICBt
UGFzc1Rocm91Z2hWUyA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1QYXNzVGhyb3VnaFBTKQor
ICAgIHsKKyAgICAgICAgbVBhc3NUaHJvdWdoUFMtPlJlbGVhc2UoKTsKKyAgICAgICAgbVBhc3NU
aHJvdWdoUFMgPSBOVUxMOworICAgIH0KKworICAgIGlmICghbUFwcENyZWF0ZWRTaGFyZUhhbmRs
ZSkKKyAgICB7CisgICAgICAgIG1TaGFyZUhhbmRsZSA9IE5VTEw7CisgICAgfQorfQorCit2b2lk
IFN3YXBDaGFpbjExOjpyZWxlYXNlT2Zmc2NyZWVuVGV4dHVyZSgpCit7CisgICAgaWYgKG1PZmZz
Y3JlZW5UZXh0dXJlKQorICAgIHsKKyAgICAgICAgbU9mZnNjcmVlblRleHR1cmUtPlJlbGVhc2Uo
KTsKKyAgICAgICAgbU9mZnNjcmVlblRleHR1cmUgPSBOVUxMOworICAgIH0KKworICAgIGlmICht
T2Zmc2NyZWVuUlRWaWV3KQorICAgIHsKKyAgICAgICAgbU9mZnNjcmVlblJUVmlldy0+UmVsZWFz
ZSgpOworICAgICAgICBtT2Zmc2NyZWVuUlRWaWV3ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAo
bU9mZnNjcmVlblNSVmlldykKKyAgICB7CisgICAgICAgIG1PZmZzY3JlZW5TUlZpZXctPlJlbGVh
c2UoKTsKKyAgICAgICAgbU9mZnNjcmVlblNSVmlldyA9IE5VTEw7CisgICAgfQorCisgICAgaWYg
KG1EZXB0aFN0ZW5jaWxUZXh0dXJlKQorICAgIHsKKyAgICAgICAgbURlcHRoU3RlbmNpbFRleHR1
cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbURlcHRoU3RlbmNpbFRleHR1cmUgPSBOVUxMOworICAg
IH0KKworICAgIGlmIChtRGVwdGhTdGVuY2lsRFNWaWV3KQorICAgIHsKKyAgICAgICAgbURlcHRo
U3RlbmNpbERTVmlldy0+UmVsZWFzZSgpOworICAgICAgICBtRGVwdGhTdGVuY2lsRFNWaWV3ID0g
TlVMTDsKKyAgICB9Cit9CisKK0VHTGludCBTd2FwQ2hhaW4xMTo6cmVzZXRPZmZzY3JlZW5UZXh0
dXJlKGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmVySGVpZ2h0KQoreworICAgIElE
M0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIEFTU0VS
VChkZXZpY2UgIT0gTlVMTCk7CisKKyAgICAvLyBEM0QxMSBkb2VzIG5vdCBhbGxvdyB6ZXJvIHNp
emUgdGV4dHVyZXMKKyAgICBBU1NFUlQoYmFja2J1ZmZlcldpZHRoID49IDEpOworICAgIEFTU0VS
VChiYWNrYnVmZmVySGVpZ2h0ID49IDEpOworCisgICAgLy8gUHJlc2VydmUgdGhlIHJlbmRlciB0
YXJnZXQgY29udGVudAorICAgIElEM0QxMVRleHR1cmUyRCAqcHJldmlvdXNPZmZzY3JlZW5UZXh0
dXJlID0gbU9mZnNjcmVlblRleHR1cmU7CisgICAgaWYgKHByZXZpb3VzT2Zmc2NyZWVuVGV4dHVy
ZSkKKyAgICB7CisgICAgICAgIHByZXZpb3VzT2Zmc2NyZWVuVGV4dHVyZS0+QWRkUmVmKCk7Cisg
ICAgfQorICAgIGNvbnN0IGludCBwcmV2aW91c1dpZHRoID0gbVdpZHRoOworICAgIGNvbnN0IGlu
dCBwcmV2aW91c0hlaWdodCA9IG1IZWlnaHQ7CisKKyAgICByZWxlYXNlT2Zmc2NyZWVuVGV4dHVy
ZSgpOworCisgICAgLy8gSWYgdGhlIGFwcCBwYXNzZWQgaW4gYSBzaGFyZSBoYW5kbGUsIG9wZW4g
dGhlIHJlc291cmNlCisgICAgLy8gU2VlIEVHTF9BTkdMRV9kM2Rfc2hhcmVfaGFuZGxlX2NsaWVu
dF9idWZmZXIKKyAgICBpZiAobUFwcENyZWF0ZWRTaGFyZUhhbmRsZSkKKyAgICB7CisgICAgICAg
IElEM0QxMVJlc291cmNlICp0ZW1wUmVzb3VyY2UxMTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQg
PSBkZXZpY2UtPk9wZW5TaGFyZWRSZXNvdXJjZShtU2hhcmVIYW5kbGUsIF9fdXVpZG9mKElEM0Qx
MVJlc291cmNlKSwgKHZvaWQqKikmdGVtcFJlc291cmNlMTEpOworCisgICAgICAgIGlmIChGQUlM
RUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJGYWlsZWQgdG8gb3BlbiB0
aGUgc3dhcCBjaGFpbiBwYnVmZmVyIHNoYXJlIGhhbmRsZTogJTA4bFgiLCByZXN1bHQpOworICAg
ICAgICAgICAgcmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIEVHTF9CQURfUEFSQU1FVEVS
OworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gdGVtcFJlc291cmNlMTEtPlF1ZXJ5SW50
ZXJmYWNlKF9fdXVpZG9mKElEM0QxMVRleHR1cmUyRCksICh2b2lkKiopJm1PZmZzY3JlZW5UZXh0
dXJlKTsKKyAgICAgICAgdGVtcFJlc291cmNlMTEtPlJlbGVhc2UoKTsKKworICAgICAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIHF1
ZXJ5IHRleHR1cmUyZCBpbnRlcmZhY2UgaW4gcGJ1ZmZlciBzaGFyZSBoYW5kbGU6ICUwOGxYIiwg
cmVzdWx0KTsKKyAgICAgICAgICAgIHJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBFR0xf
QkFEX1BBUkFNRVRFUjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFZhbGlkYXRlIG9mZnNjcmVl
biB0ZXh0dXJlIHBhcmFtZXRlcnMKKyAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0Mgb2Zmc2Ny
ZWVuVGV4dHVyZURlc2MgPSB7MH07CisgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlLT5HZXREZXNj
KCZvZmZzY3JlZW5UZXh0dXJlRGVzYyk7CisKKyAgICAgICAgaWYgKG9mZnNjcmVlblRleHR1cmVE
ZXNjLldpZHRoICE9IChVSU5UKWJhY2tidWZmZXJXaWR0aAorICAgICAgICAgICAgfHwgb2Zmc2Ny
ZWVuVGV4dHVyZURlc2MuSGVpZ2h0ICE9IChVSU5UKWJhY2tidWZmZXJIZWlnaHQKKyAgICAgICAg
ICAgIHx8IG9mZnNjcmVlblRleHR1cmVEZXNjLkZvcm1hdCAhPSBnbF9kM2QxMTo6Q29udmVydFJl
bmRlcmJ1ZmZlckZvcm1hdChtQmFja0J1ZmZlckZvcm1hdCkKKyAgICAgICAgICAgIHx8IG9mZnNj
cmVlblRleHR1cmVEZXNjLk1pcExldmVscyAhPSAxCisgICAgICAgICAgICB8fCBvZmZzY3JlZW5U
ZXh0dXJlRGVzYy5BcnJheVNpemUgIT0gMSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJJ
bnZhbGlkIHRleHR1cmUgcGFyYW1ldGVycyBpbiB0aGUgc2hhcmVkIG9mZnNjcmVlbiB0ZXh0dXJl
IHBidWZmZXIiKTsKKyAgICAgICAgICAgIHJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBF
R0xfQkFEX1BBUkFNRVRFUjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBjb25zdCBib29sIHVzZVNoYXJlZFJlc291cmNlID0gIW1XaW5kb3cgJiYgbVJlbmRlcmVy
LT5nZXRTaGFyZUhhbmRsZVN1cHBvcnQoKTsKKworICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVT
QyBvZmZzY3JlZW5UZXh0dXJlRGVzYyA9IHswfTsKKyAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURl
c2MuV2lkdGggPSBiYWNrYnVmZmVyV2lkdGg7CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNj
LkhlaWdodCA9IGJhY2tidWZmZXJIZWlnaHQ7CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNj
LkZvcm1hdCA9IGdsX2QzZDExOjpDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KG1CYWNrQnVmZmVy
Rm9ybWF0KTsKKyAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuTWlwTGV2ZWxzID0gMTsKKyAg
ICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuQXJyYXlTaXplID0gMTsKKyAgICAgICAgb2Zmc2Ny
ZWVuVGV4dHVyZURlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7CisgICAgICAgIG9mZnNjcmVlblRl
eHR1cmVEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIG9mZnNjcmVlblRleHR1
cmVEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKKyAgICAgICAgb2Zmc2NyZWVuVGV4
dHVyZURlc2MuQmluZEZsYWdzID0gRDNEMTFfQklORF9SRU5ERVJfVEFSR0VUIHwgRDNEMTFfQklO
RF9TSEFERVJfUkVTT1VSQ0U7CisgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLkNQVUFjY2Vz
c0ZsYWdzID0gMDsKKyAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuTWlzY0ZsYWdzID0gdXNl
U2hhcmVkUmVzb3VyY2UgPyBEM0QxMV9SRVNPVVJDRV9NSVNDX1NIQVJFRCA6IDA7CisKKyAgICAg
ICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmb2Zmc2NyZWVuVGV4
dHVyZURlc2MsIE5VTEwsICZtT2Zmc2NyZWVuVGV4dHVyZSk7CisKKyAgICAgICAgaWYgKEZBSUxF
RChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUg
b2Zmc2NyZWVuIHRleHR1cmU6ICUwOGxYIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlbGVhc2Uo
KTsKKworICAgICAgICAgICAgaWYgKGQzZDExOjppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NUOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtT2Zmc2NyZWVuVGV4dHVyZSwgIk9mZnNjcmVl
biB0ZXh0dXJlIik7CisKKyAgICAgICAgLy8gRUdMX0FOR0xFX3N1cmZhY2VfZDNkX3RleHR1cmVf
MmRfc2hhcmVfaGFuZGxlIHJlcXVpcmVzIHRoYXQgd2Ugc3RvcmUgYSBzaGFyZSBoYW5kbGUgZm9y
IHRoZSBjbGllbnQKKyAgICAgICAgaWYgKHVzZVNoYXJlZFJlc291cmNlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBJRFhHSVJlc291cmNlICpvZmZzY3JlZW5UZXh0dXJlUmVzb3VyY2UgPSBOVUxM
OworICAgICAgICAgICAgcmVzdWx0ID0gbU9mZnNjcmVlblRleHR1cmUtPlF1ZXJ5SW50ZXJmYWNl
KF9fdXVpZG9mKElEWEdJUmVzb3VyY2UpLCAodm9pZCoqKSZvZmZzY3JlZW5UZXh0dXJlUmVzb3Vy
Y2UpOworCisgICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gbm8gc2hhcmUgaGFuZGxlIG9uIGZh
aWx1cmUKKyAgICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBxdWVyeSBvZmZzY3JlZW4gdGV4dHVyZSByZXNv
dXJjZTogJTA4bFgiLCByZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9mZnNjcmVlblRleHR1cmVS
ZXNvdXJjZS0+R2V0U2hhcmVkSGFuZGxlKCZtU2hhcmVIYW5kbGUpOworCisgICAgICAgICAgICAg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgbVNoYXJlSGFuZGxlID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgRVJSKCJDb3Vs
ZCBub3QgZ2V0IG9mZnNjcmVlbiB0ZXh0dXJlIHNoYXJlZCBoYW5kbGU6ICUwOGxYIiwgcmVzdWx0
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisg
ICAgICAgIAorICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJnZXRW
aWV3KG1PZmZzY3JlZW5UZXh0dXJlLCBOVUxMLCAmbU9mZnNjcmVlblJUVmlldyk7CisKKyAgICBB
U1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobU9mZnNj
cmVlblJUVmlldywgIk9mZnNjcmVlbiByZW5kZXIgdGFyZ2V0Iik7CisKKyAgICByZXN1bHQgPSBk
ZXZpY2UtPkNyZWF0ZVNoYWRlclJlc291cmNlVmlldyhtT2Zmc2NyZWVuVGV4dHVyZSwgTlVMTCwg
Jm1PZmZzY3JlZW5TUlZpZXcpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAg
ZDNkMTE6OlNldERlYnVnTmFtZShtT2Zmc2NyZWVuU1JWaWV3LCAiT2Zmc2NyZWVuIHNoYWRlciBy
ZXNvdXJjZSIpOworCisgICAgaWYgKG1EZXB0aEJ1ZmZlckZvcm1hdCAhPSBHTF9OT05FKQorICAg
IHsKKyAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVwdGhTdGVuY2lsRGVzYyA9IHswfTsK
KyAgICAgICAgZGVwdGhTdGVuY2lsRGVzYy5XaWR0aCA9IGJhY2tidWZmZXJXaWR0aDsKKyAgICAg
ICAgZGVwdGhTdGVuY2lsRGVzYy5IZWlnaHQgPSBiYWNrYnVmZmVySGVpZ2h0OworICAgICAgICBk
ZXB0aFN0ZW5jaWxEZXNjLkZvcm1hdCA9IGdsX2QzZDExOjpDb252ZXJ0UmVuZGVyYnVmZmVyRm9y
bWF0KG1EZXB0aEJ1ZmZlckZvcm1hdCk7CisgICAgICAgIGRlcHRoU3RlbmNpbERlc2MuTWlwTGV2
ZWxzID0gMTsKKyAgICAgICAgZGVwdGhTdGVuY2lsRGVzYy5BcnJheVNpemUgPSAxOworICAgICAg
ICBkZXB0aFN0ZW5jaWxEZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICBkZXB0aFN0
ZW5jaWxEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIGRlcHRoU3RlbmNpbERl
c2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOworICAgICAgICBkZXB0aFN0ZW5jaWxEZXNj
LkJpbmRGbGFncyA9IEQzRDExX0JJTkRfREVQVEhfU1RFTkNJTDsKKyAgICAgICAgZGVwdGhTdGVu
Y2lsRGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7CisgICAgICAgIGRlcHRoU3RlbmNpbERlc2MuTWlz
Y0ZsYWdzID0gMDsKKworICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgm
ZGVwdGhTdGVuY2lsRGVzYywgTlVMTCwgJm1EZXB0aFN0ZW5jaWxUZXh0dXJlKTsKKyAgICAgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNvdWxkIG5v
dCBjcmVhdGUgZGVwdGhzdGVuY2lsIHN1cmZhY2UgZm9yIG5ldyBzd2FwIGNoYWluOiAweCUwOFgi
LCByZXN1bHQpOworICAgICAgICAgICAgcmVsZWFzZSgpOworCisgICAgICAgICAgICBpZiAoZDNk
MTE6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEVHTF9DT05URVhUX0xPU1Q7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9CQURfQUxM
T0M7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFt
ZShtRGVwdGhTdGVuY2lsVGV4dHVyZSwgIkRlcHRoIHN0ZW5jaWwgdGV4dHVyZSIpOworCisgICAg
ICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlRGVwdGhTdGVuY2lsVmlldyhtRGVwdGhTdGVuY2ls
VGV4dHVyZSwgTlVMTCwgJm1EZXB0aFN0ZW5jaWxEU1ZpZXcpOworICAgICAgICBBU1NFUlQoU1VD
Q0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1EZXB0aFN0ZW5j
aWxEU1ZpZXcsICJEZXB0aCBzdGVuY2lsIHZpZXciKTsKKyAgICB9CisKKyAgICBtV2lkdGggPSBi
YWNrYnVmZmVyV2lkdGg7CisgICAgbUhlaWdodCA9IGJhY2tidWZmZXJIZWlnaHQ7CisKKyAgICBp
ZiAocHJldmlvdXNPZmZzY3JlZW5UZXh0dXJlICE9IE5VTEwpCisgICAgeworICAgICAgICBEM0Qx
MV9CT1ggc291cmNlQm94ID0gezB9OworICAgICAgICBzb3VyY2VCb3gubGVmdCA9IDA7CisgICAg
ICAgIHNvdXJjZUJveC5yaWdodCA9IHN0ZDo6bWluKHByZXZpb3VzV2lkdGgsIG1XaWR0aCk7Cisg
ICAgICAgIHNvdXJjZUJveC50b3AgPSBzdGQ6Om1heChwcmV2aW91c0hlaWdodCAtIG1IZWlnaHQs
IDApOworICAgICAgICBzb3VyY2VCb3guYm90dG9tID0gcHJldmlvdXNIZWlnaHQ7CisgICAgICAg
IHNvdXJjZUJveC5mcm9udCA9IDA7CisgICAgICAgIHNvdXJjZUJveC5iYWNrID0gMTsKKworICAg
ICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXRE
ZXZpY2VDb250ZXh0KCk7CisgICAgICAgIGNvbnN0IGludCB5b2Zmc2V0ID0gc3RkOjptYXgobUhl
aWdodCAtIHByZXZpb3VzSGVpZ2h0LCAwKTsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+Q29weVN1
YnJlc291cmNlUmVnaW9uKG1PZmZzY3JlZW5UZXh0dXJlLCAwLCAwLCB5b2Zmc2V0LCAwLCBwcmV2
aW91c09mZnNjcmVlblRleHR1cmUsIDAsICZzb3VyY2VCb3gpOworCisgICAgICAgIHByZXZpb3Vz
T2Zmc2NyZWVuVGV4dHVyZS0+UmVsZWFzZSgpOworCisgICAgICAgIGlmIChtU3dhcENoYWluKQor
ICAgICAgICB7CisgICAgICAgICAgICBzd2FwUmVjdCgwLCAwLCBtV2lkdGgsIG1IZWlnaHQpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEVHTF9TVUNDRVNTOworfQorCitFR0xpbnQg
U3dhcENoYWluMTE6OnJlc2l6ZShFR0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1
ZmZlckhlaWdodCkKK3sKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0
RGV2aWNlKCk7CisKKyAgICBpZiAoZGV2aWNlID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1
cm4gRUdMX0JBRF9BQ0NFU1M7CisgICAgfQorCisgICAgLy8gQ2FuIG9ubHkgY2FsbCByZXNpemUg
aWYgd2UgaGF2ZSBhbHJlYWR5IGNyZWF0ZWQgb3VyIHN3YXAgYnVmZmVyIGFuZCByZXNvdXJjZXMK
KyAgICBBU1NFUlQobVN3YXBDaGFpbiAmJiBtQmFja0J1ZmZlclRleHR1cmUgJiYgbUJhY2tCdWZm
ZXJSVFZpZXcpOworCisgICAgaWYgKG1CYWNrQnVmZmVyVGV4dHVyZSkKKyAgICB7CisgICAgICAg
IG1CYWNrQnVmZmVyVGV4dHVyZS0+UmVsZWFzZSgpOworICAgICAgICBtQmFja0J1ZmZlclRleHR1
cmUgPSBOVUxMOworICAgIH0KKworICAgIGlmIChtQmFja0J1ZmZlclJUVmlldykKKyAgICB7Cisg
ICAgICAgIG1CYWNrQnVmZmVyUlRWaWV3LT5SZWxlYXNlKCk7CisgICAgICAgIG1CYWNrQnVmZmVy
UlRWaWV3ID0gTlVMTDsKKyAgICB9CisKKyAgICAvLyBSZXNpemUgc3dhcCBjaGFpbgorICAgIERY
R0lfRk9STUFUIGJhY2tidWZmZXJEWEdJRm9ybWF0ID0gZ2xfZDNkMTE6OkNvbnZlcnRSZW5kZXJi
dWZmZXJGb3JtYXQobUJhY2tCdWZmZXJGb3JtYXQpOworICAgIEhSRVNVTFQgcmVzdWx0ID0gbVN3
YXBDaGFpbi0+UmVzaXplQnVmZmVycygyLCBiYWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJIZWln
aHQsIGJhY2tidWZmZXJEWEdJRm9ybWF0LCAwKTsKKworICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
KyAgICB7CisgICAgICAgIEVSUigiRXJyb3IgcmVzaXppbmcgc3dhcCBjaGFpbiBidWZmZXJzOiAw
eCUwOFgiLCByZXN1bHQpOworICAgICAgICByZWxlYXNlKCk7CisKKyAgICAgICAgaWYgKGQzZDEx
Ojppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gRUdMX0NPTlRFWFRfTE9TVDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmVzdWx0ID0gbVN3YXBDaGFpbi0+R2V0QnVmZmVyKDAsIF9fdXVpZG9mKElEM0QxMVRleHR1
cmUyRCksIChMUFZPSUQqKSZtQmFja0J1ZmZlclRleHR1cmUpOworICAgIEFTU0VSVChTVUNDRUVE
RUQocmVzdWx0KSk7CisgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAg
ZDNkMTE6OlNldERlYnVnTmFtZShtQmFja0J1ZmZlclRleHR1cmUsICJCYWNrIGJ1ZmZlciB0ZXh0
dXJlIik7CisgICAgfQorCisgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJnZXRW
aWV3KG1CYWNrQnVmZmVyVGV4dHVyZSwgTlVMTCwgJm1CYWNrQnVmZmVyUlRWaWV3KTsKKyAgICBB
U1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKKyAg
ICB7CisgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUJhY2tCdWZmZXJSVFZpZXcsICJCYWNr
IGJ1ZmZlciByZW5kZXIgdGFyZ2V0Iik7CisgICAgfQorCisgICAgcmV0dXJuIHJlc2V0T2Zmc2Ny
ZWVuVGV4dHVyZShiYWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJIZWlnaHQpOworfQorCitFR0xp
bnQgU3dhcENoYWluMTE6OnJlc2V0KGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmVy
SGVpZ2h0LCBFR0xpbnQgc3dhcEludGVydmFsKQoreworICAgIElEM0QxMURldmljZSAqZGV2aWNl
ID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIGlmIChkZXZpY2UgPT0gTlVMTCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBFR0xfQkFEX0FDQ0VTUzsKKyAgICB9CisKKyAgICAvLyBSZWxl
YXNlIHNwZWNpZmljIHJlc291cmNlcyB0byBmcmVlIHVwIG1lbW9yeSBmb3IgdGhlIG5ldyByZW5k
ZXIgdGFyZ2V0LCB3aGlsZSB0aGUKKyAgICAvLyBvbGQgcmVuZGVyIHRhcmdldCBzdGlsbCBleGlz
dHMgZm9yIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZpbmcgaXRzIGNvbnRlbnRzLgorICAgIGlmICht
U3dhcENoYWluKQorICAgIHsKKyAgICAgICAgbVN3YXBDaGFpbi0+UmVsZWFzZSgpOworICAgICAg
ICBtU3dhcENoYWluID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobUJhY2tCdWZmZXJUZXh0dXJl
KQorICAgIHsKKyAgICAgICAgbUJhY2tCdWZmZXJUZXh0dXJlLT5SZWxlYXNlKCk7CisgICAgICAg
IG1CYWNrQnVmZmVyVGV4dHVyZSA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1CYWNrQnVmZmVy
UlRWaWV3KQorICAgIHsKKyAgICAgICAgbUJhY2tCdWZmZXJSVFZpZXctPlJlbGVhc2UoKTsKKyAg
ICAgICAgbUJhY2tCdWZmZXJSVFZpZXcgPSBOVUxMOworICAgIH0KKworICAgIG1Td2FwSW50ZXJ2
YWwgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHN3YXBJbnRlcnZhbCk7CisgICAgaWYgKG1T
d2FwSW50ZXJ2YWwgPiA0KQorICAgIHsKKyAgICAgICAgLy8gSURYR0lTd2FwQ2hhaW46OlByZXNl
bnQgZG9jdW1lbnRhdGlvbiBzdGF0ZXMgdGhhdCB2YWxpZCBzeW5jIGludGVydmFscyBhcmUgaW4g
dGhlIFswLDRdIHJhbmdlCisgICAgICAgIHJldHVybiBFR0xfQkFEX1BBUkFNRVRFUjsKKyAgICB9
CisKKyAgICAvLyBFR0wgYWxsb3dzIGNyZWF0aW5nIGEgc3VyZmFjZSB3aXRoIDB4MCBkaW1lbnNp
b24sIGhvd2V2ZXIsIERYR0kgZG9lcyBub3QgbGlrZSAweDAgc3dhcGNoYWlucworICAgIGlmIChi
YWNrYnVmZmVyV2lkdGggPCAxIHx8IGJhY2tidWZmZXJIZWlnaHQgPCAxKQorICAgIHsKKyAgICAg
ICAgcmVsZWFzZU9mZnNjcmVlblRleHR1cmUoKTsKKyAgICAgICAgcmV0dXJuIEVHTF9TVUNDRVNT
OworICAgIH0KKworICAgIGlmIChtV2luZG93KQorICAgIHsKKyAgICAgICAgLy8gV2UgY2Fubm90
IGNyZWF0ZSBhIHN3YXAgY2hhaW4gZm9yIGFuIEhXTkQgdGhhdCBpcyBvd25lZCBieSBhIGRpZmZl
cmVudCBwcm9jZXNzCisgICAgICAgIERXT1JEIGN1cnJlbnRQcm9jZXNzSWQgPSBHZXRDdXJyZW50
UHJvY2Vzc0lkKCk7CisgICAgICAgIERXT1JEIHduZFByb2Nlc3NJZDsKKyAgICAgICAgR2V0V2lu
ZG93VGhyZWFkUHJvY2Vzc0lkKG1XaW5kb3csICZ3bmRQcm9jZXNzSWQpOworCisgICAgICAgIGlm
IChjdXJyZW50UHJvY2Vzc0lkICE9IHduZFByb2Nlc3NJZCkKKyAgICAgICAgeworICAgICAgICAg
ICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIHN3YXAgY2hhaW4sIHdpbmRvdyBvd25lZCBieSBkaWZm
ZXJlbnQgcHJvY2VzcyIpOworICAgICAgICAgICAgcmVsZWFzZSgpOworICAgICAgICAgICAgcmV0
dXJuIEVHTF9CQURfTkFUSVZFX1dJTkRPVzsKKyAgICAgICAgfQorCisgICAgICAgIElEWEdJRmFj
dG9yeSAqZmFjdG9yeSA9IG1SZW5kZXJlci0+Z2V0RHhnaUZhY3RvcnkoKTsKKworICAgICAgICBE
WEdJX1NXQVBfQ0hBSU5fREVTQyBzd2FwQ2hhaW5EZXNjID0gezB9OworICAgICAgICBzd2FwQ2hh
aW5EZXNjLkJ1ZmZlckNvdW50ID0gMjsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNj
LkZvcm1hdCA9IGdsX2QzZDExOjpDb252ZXJ0UmVuZGVyYnVmZmVyRm9ybWF0KG1CYWNrQnVmZmVy
Rm9ybWF0KTsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLldpZHRoID0gYmFja2J1
ZmZlcldpZHRoOworICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckRlc2MuSGVpZ2h0ID0gYmFj
a2J1ZmZlckhlaWdodDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLlNjYWxpbmcg
PSBEWEdJX01PREVfU0NBTElOR19VTlNQRUNJRklFRDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5C
dWZmZXJEZXNjLlNjYW5saW5lT3JkZXJpbmcgPSBEWEdJX01PREVfU0NBTkxJTkVfT1JERVJfVU5T
UEVDSUZJRUQ7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5SZWZyZXNoUmF0ZS5O
dW1lcmF0b3IgPSAwOworICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckRlc2MuUmVmcmVzaFJh
dGUuRGVub21pbmF0b3IgPSAxOworICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlclVzYWdlID0g
RFhHSV9VU0FHRV9SRU5ERVJfVEFSR0VUX09VVFBVVDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5G
bGFncyA9IDA7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuT3V0cHV0V2luZG93ID0gbVdpbmRvdzsK
KyAgICAgICAgc3dhcENoYWluRGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKKyAgICAgICAgc3dh
cENoYWluRGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAgICBzd2FwQ2hhaW5EZXNj
LldpbmRvd2VkID0gVFJVRTsKKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGZhY3RvcnktPkNy
ZWF0ZVN3YXBDaGFpbihkZXZpY2UsICZzd2FwQ2hhaW5EZXNjLCAmbVN3YXBDaGFpbik7CisKKyAg
ICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoIkNv
dWxkIG5vdCBjcmVhdGUgYWRkaXRpb25hbCBzd2FwIGNoYWlucyBvciBvZmZzY3JlZW4gc3VyZmFj
ZXM6ICUwOGxYIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlbGVhc2UoKTsKKworICAgICAgICAg
ICAgaWYgKGQzZDExOjppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NUOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBF
R0xfQkFEX0FMTE9DOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0
ID0gbVN3YXBDaGFpbi0+R2V0QnVmZmVyKDAsIF9fdXVpZG9mKElEM0QxMVRleHR1cmUyRCksIChM
UFZPSUQqKSZtQmFja0J1ZmZlclRleHR1cmUpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJl
c3VsdCkpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1CYWNrQnVmZmVyVGV4dHVyZSwg
IkJhY2sgYnVmZmVyIHRleHR1cmUiKTsKKworICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0
ZVJlbmRlclRhcmdldFZpZXcobUJhY2tCdWZmZXJUZXh0dXJlLCBOVUxMLCAmbUJhY2tCdWZmZXJS
VFZpZXcpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2Qx
MTo6U2V0RGVidWdOYW1lKG1CYWNrQnVmZmVyUlRWaWV3LCAiQmFjayBidWZmZXIgcmVuZGVyIHRh
cmdldCIpOworICAgIH0KKworICAgIC8vIElmIHdlIGFyZSByZXNpemluZyB0aGUgc3dhcCBjaGFp
biwgd2UgZG9uJ3Qgd2lzaCB0byByZWNyZWF0ZSBhbGwgdGhlIHN0YXRpYyByZXNvdXJjZXMKKyAg
ICBpZiAoIW1QYXNzVGhyb3VnaFJlc291cmNlc0luaXQpCisgICAgeworICAgICAgICBtUGFzc1Ro
cm91Z2hSZXNvdXJjZXNJbml0ID0gdHJ1ZTsKKyAgICAgICAgaW5pdFBhc3NUaHJvdWdoUmVzb3Vy
Y2VzKCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc2V0T2Zmc2NyZWVuVGV4dHVyZShiYWNrYnVm
ZmVyV2lkdGgsIGJhY2tidWZmZXJIZWlnaHQpOworfQorCit2b2lkIFN3YXBDaGFpbjExOjppbml0
UGFzc1Rocm91Z2hSZXNvdXJjZXMoKQoreworICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJl
bmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIEFTU0VSVChkZXZpY2UgIT0gTlVMTCk7CisKKyAg
ICAvLyBNYWtlIHN1cmUgb3VyIHJlc291cmNlcyBhcmUgYWxsIG5vdCBhbGxvY2F0ZWQsIHdoZW4g
d2UgY3JlYXRlCisgICAgQVNTRVJUKG1RdWFkVkIgPT0gTlVMTCAmJiBtUGFzc1Rocm91Z2hTYW1w
bGVyID09IE5VTEwpOworICAgIEFTU0VSVChtUGFzc1Rocm91Z2hJTCA9PSBOVUxMICYmIG1QYXNz
VGhyb3VnaFZTID09IE5VTEwgJiYgbVBhc3NUaHJvdWdoUFMgPT0gTlVMTCk7CisKKyAgICBEM0Qx
MV9CVUZGRVJfREVTQyB2YkRlc2M7CisgICAgdmJEZXNjLkJ5dGVXaWR0aCA9IHNpemVvZihkM2Qx
MTo6UG9zaXRpb25UZXhDb29yZFZlcnRleCkgKiA0OworICAgIHZiRGVzYy5Vc2FnZSA9IEQzRDEx
X1VTQUdFX0RZTkFNSUM7CisgICAgdmJEZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfVkVSVEVY
X0JVRkZFUjsKKyAgICB2YkRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1dS
SVRFOworICAgIHZiRGVzYy5NaXNjRmxhZ3MgPSAwOworICAgIHZiRGVzYy5TdHJ1Y3R1cmVCeXRl
U3RyaWRlID0gMDsKKworICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVCdWZmZXIo
JnZiRGVzYywgTlVMTCwgJm1RdWFkVkIpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7
CisgICAgZDNkMTE6OlNldERlYnVnTmFtZShtUXVhZFZCLCAiU3dhcCBjaGFpbiBxdWFkIHZlcnRl
eCBidWZmZXIiKTsKKworICAgIEQzRDExX1NBTVBMRVJfREVTQyBzYW1wbGVyRGVzYzsKKyAgICBz
YW1wbGVyRGVzYy5GaWx0ZXIgPSBEM0QxMV9GSUxURVJfTUlOX01BR19NSVBfUE9JTlQ7CisgICAg
c2FtcGxlckRlc2MuQWRkcmVzc1UgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7CisgICAg
c2FtcGxlckRlc2MuQWRkcmVzc1YgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7CisgICAg
c2FtcGxlckRlc2MuQWRkcmVzc1cgPSBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xBTVA7CisgICAg
c2FtcGxlckRlc2MuTWlwTE9EQmlhcyA9IDAuMGY7CisgICAgc2FtcGxlckRlc2MuTWF4QW5pc290
cm9weSA9IDA7CisgICAgc2FtcGxlckRlc2MuQ29tcGFyaXNvbkZ1bmMgPSBEM0QxMV9DT01QQVJJ
U09OX05FVkVSOworICAgIHNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzBdID0gMC4wZjsKKyAgICBz
YW1wbGVyRGVzYy5Cb3JkZXJDb2xvclsxXSA9IDAuMGY7CisgICAgc2FtcGxlckRlc2MuQm9yZGVy
Q29sb3JbMl0gPSAwLjBmOworICAgIHNhbXBsZXJEZXNjLkJvcmRlckNvbG9yWzNdID0gMC4wZjsK
KyAgICBzYW1wbGVyRGVzYy5NaW5MT0QgPSAwOworICAgIHNhbXBsZXJEZXNjLk1heExPRCA9IEQz
RDExX0ZMT0FUMzJfTUFYOworCisgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVTYW1wbGVyU3Rh
dGUoJnNhbXBsZXJEZXNjLCAmbVBhc3NUaHJvdWdoU2FtcGxlcik7CisgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKyAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1QYXNzVGhyb3VnaFNhbXBs
ZXIsICJTd2FwIGNoYWluIHBhc3MgdGhyb3VnaCBzYW1wbGVyIik7CisKKyAgICBEM0QxMV9JTlBV
VF9FTEVNRU5UX0RFU0MgcXVhZExheW91dFtdID0KKyAgICB7CisgICAgICAgIHsgIlBPU0lUSU9O
IiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAwLCAwLCBEM0QxMV9JTlBVVF9QRVJfVkVS
VEVYX0RBVEEsIDAgfSwKKyAgICAgICAgeyAiVEVYQ09PUkQiLCAwLCBEWEdJX0ZPUk1BVF9SMzJH
MzJfRkxPQVQsIDAsIDgsIEQzRDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMCB9LAorICAgIH07
CisKKyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUlucHV0TGF5b3V0KHF1YWRMYXlvdXQsIDIs
IGdfVlNfUGFzc3Rocm91Z2gsIHNpemVvZihnX1ZTX1Bhc3N0aHJvdWdoKSwgJm1QYXNzVGhyb3Vn
aElMKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGQzZDExOjpTZXREZWJ1
Z05hbWUobVBhc3NUaHJvdWdoSUwsICJTd2FwIGNoYWluIHBhc3MgdGhyb3VnaCBsYXlvdXQiKTsK
KworICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVmVydGV4U2hhZGVyKGdfVlNfUGFzc3Rocm91
Z2gsIHNpemVvZihnX1ZTX1Bhc3N0aHJvdWdoKSwgTlVMTCwgJm1QYXNzVGhyb3VnaFZTKTsKKyAg
ICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVBh
c3NUaHJvdWdoVlMsICJTd2FwIGNoYWluIHBhc3MgdGhyb3VnaCB2ZXJ0ZXggc2hhZGVyIik7CisK
KyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVBpeGVsU2hhZGVyKGdfUFNfUGFzc3Rocm91Z2hS
R0JBLCBzaXplb2YoZ19QU19QYXNzdGhyb3VnaFJHQkEpLCBOVUxMLCAmbVBhc3NUaHJvdWdoUFMp
OworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgZDNkMTE6OlNldERlYnVnTmFt
ZShtUGFzc1Rocm91Z2hQUywgIlN3YXAgY2hhaW4gcGFzcyB0aHJvdWdoIHBpeGVsIHNoYWRlciIp
OworfQorCisvLyBwYXJhbWV0ZXJzIHNob3VsZCBiZSB2YWxpZGF0ZWQvY2xhbXBlZCBieSBjYWxs
ZXIKK0VHTGludCBTd2FwQ2hhaW4xMTo6c3dhcFJlY3QoRUdMaW50IHgsIEVHTGludCB5LCBFR0xp
bnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCit7CisgICAgaWYgKCFtU3dhcENoYWluKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEVHTF9TVUNDRVNTOworICAgIH0KKworICAgIElEM0QxMURldmljZSAq
ZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKyAgICBJRDNEMTFEZXZpY2VDb250ZXh0
ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CisKKyAgICAv
LyBTZXQgdmVydGljZXMKKyAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3Vy
Y2U7CisgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2VDb250ZXh0LT5NYXAobVF1YWRWQiwgMCwg
RDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXBwZWRSZXNvdXJjZSk7CisgICAgaWYgKEZB
SUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVHTF9CQURfQUNDRVNTOworICAg
IH0KKworICAgIGQzZDExOjpQb3NpdGlvblRleENvb3JkVmVydGV4ICp2ZXJ0aWNlcyA9IHN0YXRp
Y19jYXN0PGQzZDExOjpQb3NpdGlvblRleENvb3JkVmVydGV4Kj4obWFwcGVkUmVzb3VyY2UucERh
dGEpOworCisgICAgLy8gQ3JlYXRlIGEgcXVhZCBpbiBob21vZ2VuZW91cyBjb29yZGluYXRlcwor
ICAgIGZsb2F0IHgxID0gKHggLyBmbG9hdChtV2lkdGgpKSAqIDIuMGYgLSAxLjBmOworICAgIGZs
b2F0IHkxID0gKHkgLyBmbG9hdChtSGVpZ2h0KSkgKiAyLjBmIC0gMS4wZjsKKyAgICBmbG9hdCB4
MiA9ICgoeCArIHdpZHRoKSAvIGZsb2F0KG1XaWR0aCkpICogMi4wZiAtIDEuMGY7CisgICAgZmxv
YXQgeTIgPSAoKHkgKyBoZWlnaHQpIC8gZmxvYXQobUhlaWdodCkpICogMi4wZiAtIDEuMGY7CisK
KyAgICBmbG9hdCB1MSA9IHggLyBmbG9hdChtV2lkdGgpOworICAgIGZsb2F0IHYxID0geSAvIGZs
b2F0KG1IZWlnaHQpOworICAgIGZsb2F0IHUyID0gKHggKyB3aWR0aCkgLyBmbG9hdChtV2lkdGgp
OworICAgIGZsb2F0IHYyID0gKHkgKyBoZWlnaHQpIC8gZmxvYXQobUhlaWdodCk7CisKKyAgICBk
M2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbMF0sIHgxLCB5MSwgdTEs
IHYxKTsKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbMV0s
IHgxLCB5MiwgdTEsIHYyKTsKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgm
dmVydGljZXNbMl0sIHgyLCB5MSwgdTIsIHYxKTsKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhD
b29yZFZlcnRleCgmdmVydGljZXNbM10sIHgyLCB5MiwgdTIsIHYyKTsKKworICAgIGRldmljZUNv
bnRleHQtPlVubWFwKG1RdWFkVkIsIDApOworCisgICAgc3RhdGljIFVJTlQgc3RyaWRlID0gc2l6
ZW9mKGQzZDExOjpQb3NpdGlvblRleENvb3JkVmVydGV4KTsKKyAgICBzdGF0aWMgVUlOVCBzdGFy
dElkeCA9IDA7CisgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIDEsICZt
UXVhZFZCLCAmc3RyaWRlLCAmc3RhcnRJZHgpOworCisgICAgLy8gQXBwbHkgc3RhdGUKKyAgICBk
ZXZpY2VDb250ZXh0LT5PTVNldERlcHRoU3RlbmNpbFN0YXRlKE5VTEwsIDB4RkZGRkZGRkYpOwor
CisgICAgc3RhdGljIGNvbnN0IGZsb2F0IGJsZW5kRmFjdG9yWzRdID0geyAxLjBmLCAxLjBmLCAx
LjBmLCAxLjBmIH07CisgICAgZGV2aWNlQ29udGV4dC0+T01TZXRCbGVuZFN0YXRlKE5VTEwsIGJs
ZW5kRmFjdG9yLCAweEZGRkZGRkYpOworCisgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRTdGF0ZShO
VUxMKTsKKworICAgIC8vIEFwcGx5IHNoYWRlcnMKKyAgICBkZXZpY2VDb250ZXh0LT5JQVNldElu
cHV0TGF5b3V0KG1QYXNzVGhyb3VnaElMKTsKKyAgICBkZXZpY2VDb250ZXh0LT5JQVNldFByaW1p
dGl2ZVRvcG9sb2d5KEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVTVFJJUCk7CisgICAg
ZGV2aWNlQ29udGV4dC0+VlNTZXRTaGFkZXIobVBhc3NUaHJvdWdoVlMsIE5VTEwsIDApOworICAg
IGRldmljZUNvbnRleHQtPlBTU2V0U2hhZGVyKG1QYXNzVGhyb3VnaFBTLCBOVUxMLCAwKTsKKyAg
ICBkZXZpY2VDb250ZXh0LT5HU1NldFNoYWRlcihOVUxMLCBOVUxMLCAwKTsKKworICAgIC8vIEFw
cGx5IHJlbmRlciB0YXJnZXRzCisgICAgbVJlbmRlcmVyLT5zZXRPbmVUaW1lUmVuZGVyVGFyZ2V0
KG1CYWNrQnVmZmVyUlRWaWV3KTsKKworICAgIC8vIFNldCB0aGUgdmlld3BvcnQKKyAgICBEM0Qx
MV9WSUVXUE9SVCB2aWV3cG9ydDsKKyAgICB2aWV3cG9ydC5Ub3BMZWZ0WCA9IDA7CisgICAgdmll
d3BvcnQuVG9wTGVmdFkgPSAwOworICAgIHZpZXdwb3J0LldpZHRoID0gbVdpZHRoOworICAgIHZp
ZXdwb3J0LkhlaWdodCA9IG1IZWlnaHQ7CisgICAgdmlld3BvcnQuTWluRGVwdGggPSAwLjBmOwor
ICAgIHZpZXdwb3J0Lk1heERlcHRoID0gMS4wZjsKKyAgICBkZXZpY2VDb250ZXh0LT5SU1NldFZp
ZXdwb3J0cygxLCAmdmlld3BvcnQpOworCisgICAgLy8gQXBwbHkgdGV4dHVyZXMKKyAgICBkZXZp
Y2VDb250ZXh0LT5QU1NldFNoYWRlclJlc291cmNlcygwLCAxLCAmbU9mZnNjcmVlblNSVmlldyk7
CisgICAgZGV2aWNlQ29udGV4dC0+UFNTZXRTYW1wbGVycygwLCAxLCAmbVBhc3NUaHJvdWdoU2Ft
cGxlcik7CisKKyAgICAvLyBEcmF3CisgICAgZGV2aWNlQ29udGV4dC0+RHJhdyg0LCAwKTsKKyAg
ICByZXN1bHQgPSBtU3dhcENoYWluLT5QcmVzZW50KG1Td2FwSW50ZXJ2YWwsIDApOworCisgICAg
aWYgKHJlc3VsdCA9PSBEWEdJX0VSUk9SX0RFVklDRV9SRU1PVkVEKQorICAgIHsKKyAgICAgICAg
SFJFU1VMVCByZW1vdmVkUmVhc29uID0gZGV2aWNlLT5HZXREZXZpY2VSZW1vdmVkUmVhc29uKCk7
CisgICAgICAgIEVSUigiUHJlc2VudCBmYWlsZWQ6IHRoZSBEM0QxMSBkZXZpY2Ugd2FzIHJlbW92
ZWQ6IDB4JTA4WCIsIHJlbW92ZWRSZWFzb24pOworICAgICAgICByZXR1cm4gRUdMX0NPTlRFWFRf
TE9TVDsKKyAgICB9CisgICAgZWxzZSBpZiAocmVzdWx0ID09IERYR0lfRVJST1JfREVWSUNFX1JF
U0VUKQorICAgIHsKKyAgICAgICAgRVJSKCJQcmVzZW50IGZhaWxlZDogdGhlIEQzRDExIGRldmlj
ZSB3YXMgcmVzZXQgZnJvbSBhIGJhZCBjb21tYW5kLiIpOworICAgICAgICByZXR1cm4gRUdMX0NP
TlRFWFRfTE9TVDsKKyAgICB9CisgICAgZWxzZSBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgewor
ICAgICAgICBFUlIoIlByZXNlbnQgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAweCUwOFgiLCByZXN1
bHQpOworICAgIH0KKworICAgIC8vIFVuYmluZAorICAgIHN0YXRpYyBJRDNEMTFTaGFkZXJSZXNv
dXJjZVZpZXcgKmNvbnN0IG51bGxTUlYgPSBOVUxMOworICAgIGRldmljZUNvbnRleHQtPlBTU2V0
U2hhZGVyUmVzb3VyY2VzKDAsIDEsICZudWxsU1JWKTsKKworICAgIG1SZW5kZXJlci0+dW5hcHBs
eVJlbmRlclRhcmdldHMoKTsKKyAgICBtUmVuZGVyZXItPm1hcmtBbGxTdGF0ZURpcnR5KCk7CisK
KyAgICByZXR1cm4gRUdMX1NVQ0NFU1M7Cit9CisKKy8vIEluY3JlbWVudHMgcmVmY291bnQgb24g
dGV4dHVyZS4KKy8vIGNhbGxlciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJuZWQgdGV4dHVyZQor
SUQzRDExVGV4dHVyZTJEICpTd2FwQ2hhaW4xMTo6Z2V0T2Zmc2NyZWVuVGV4dHVyZSgpCit7Cisg
ICAgaWYgKG1PZmZzY3JlZW5UZXh0dXJlKQorICAgIHsKKyAgICAgICAgbU9mZnNjcmVlblRleHR1
cmUtPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtT2Zmc2NyZWVuVGV4dHVyZTsKK30K
KworLy8gSW5jcmVtZW50cyByZWZjb3VudCBvbiB2aWV3LgorLy8gY2FsbGVyIG11c3QgUmVsZWFz
ZSgpIHRoZSByZXR1cm5lZCB2aWV3CitJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpTd2FwQ2hhaW4x
MTo6Z2V0UmVuZGVyVGFyZ2V0KCkKK3sKKyAgICBpZiAobU9mZnNjcmVlblJUVmlldykKKyAgICB7
CisgICAgICAgIG1PZmZzY3JlZW5SVFZpZXctPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVy
biBtT2Zmc2NyZWVuUlRWaWV3OworfQorCisvLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHZpZXcu
CisvLyBjYWxsZXIgbXVzdCBSZWxlYXNlKCkgdGhlIHJldHVybmVkIHZpZXcKK0lEM0QxMVNoYWRl
clJlc291cmNlVmlldyAqU3dhcENoYWluMTE6OmdldFJlbmRlclRhcmdldFNoYWRlclJlc291cmNl
KCkKK3sKKyAgICBpZiAobU9mZnNjcmVlblNSVmlldykKKyAgICB7CisgICAgICAgIG1PZmZzY3Jl
ZW5TUlZpZXctPkFkZFJlZigpOworICAgIH0KKworICAgIHJldHVybiBtT2Zmc2NyZWVuU1JWaWV3
OworfQorCisvLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHZpZXcuCisvLyBjYWxsZXIgbXVzdCBS
ZWxlYXNlKCkgdGhlIHJldHVybmVkIHZpZXcKK0lEM0QxMURlcHRoU3RlbmNpbFZpZXcgKlN3YXBD
aGFpbjExOjpnZXREZXB0aFN0ZW5jaWwoKQoreworICAgIGlmIChtRGVwdGhTdGVuY2lsRFNWaWV3
KQorICAgIHsKKyAgICAgICAgbURlcHRoU3RlbmNpbERTVmlldy0+QWRkUmVmKCk7CisgICAgfQor
CisgICAgcmV0dXJuIG1EZXB0aFN0ZW5jaWxEU1ZpZXc7Cit9CisKK0lEM0QxMVRleHR1cmUyRCAq
U3dhcENoYWluMTE6OmdldERlcHRoU3RlbmNpbFRleHR1cmUoKQoreworICAgIGlmIChtRGVwdGhT
dGVuY2lsVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1EZXB0aFN0ZW5jaWxUZXh0dXJlLT5BZGRS
ZWYoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbURlcHRoU3RlbmNpbFRleHR1cmU7Cit9CisKK1N3
YXBDaGFpbjExICpTd2FwQ2hhaW4xMTo6bWFrZVN3YXBDaGFpbjExKFN3YXBDaGFpbiAqc3dhcENo
YWluKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKHJ4OjpTd2FwQ2hhaW4xMSosIHN3
YXBDaGFpbikpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxyeDo6U3dhcENoYWluMTEqPihzd2Fw
Q2hhaW4pOworfQorCit2b2lkIFN3YXBDaGFpbjExOjpyZWNyZWF0ZSgpCit7CisgICAgLy8gcG9z
c2libHkgc2hvdWxkIHVzZSB0aGlzIG1ldGhvZCBpbnN0ZWFkIG9mIHJlc2V0Cit9CisKK30KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENo
YWluMTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL1N3YXBDaGFpbjExLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbjExLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTd2FwQ2hhaW4xMS5oOiBE
ZWZpbmVzIGEgYmFjay1lbmQgc3BlY2lmaWMgY2xhc3MgZm9yIHRoZSBEM0QxMSBzd2FwIGNoYWlu
LgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9TV0FQQ0hBSU4xMV9IXworI2RlZmluZSBM
SUJHTEVTVjJfUkVOREVSRVJfU1dBUENIQUlOMTFfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmds
ZXV0aWxzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oIgorCitu
YW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyMTE7CisKK2NsYXNzIFN3YXBDaGFpbjExIDog
cHVibGljIFN3YXBDaGFpbgoreworICBwdWJsaWM6CisgICAgU3dhcENoYWluMTEoUmVuZGVyZXIx
MSAqcmVuZGVyZXIsIEhXTkQgd2luZG93LCBIQU5ETEUgc2hhcmVIYW5kbGUsCisgICAgICAgICAg
ICAgICAgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCk7
CisgICAgdmlydHVhbCB+U3dhcENoYWluMTEoKTsKKworICAgIEVHTGludCByZXNpemUoRUdMaW50
IGJhY2tidWZmZXJXaWR0aCwgRUdMaW50IGJhY2tidWZmZXJIZWlnaHQpOworICAgIHZpcnR1YWwg
RUdMaW50IHJlc2V0KEVHTGludCBiYWNrYnVmZmVyV2lkdGgsIEVHTGludCBiYWNrYnVmZmVySGVp
Z2h0LCBFR0xpbnQgc3dhcEludGVydmFsKTsKKyAgICB2aXJ0dWFsIEVHTGludCBzd2FwUmVjdChF
R0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCk7CisgICAgdmly
dHVhbCB2b2lkIHJlY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIElEM0QxMVRleHR1cmUyRCAqZ2V0
T2Zmc2NyZWVuVGV4dHVyZSgpOworICAgIHZpcnR1YWwgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAq
Z2V0UmVuZGVyVGFyZ2V0KCk7CisgICAgdmlydHVhbCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcg
KmdldFJlbmRlclRhcmdldFNoYWRlclJlc291cmNlKCk7CisKKyAgICB2aXJ0dWFsIElEM0QxMVRl
eHR1cmUyRCAqZ2V0RGVwdGhTdGVuY2lsVGV4dHVyZSgpOworICAgIHZpcnR1YWwgSUQzRDExRGVw
dGhTdGVuY2lsVmlldyAqZ2V0RGVwdGhTdGVuY2lsKCk7CisKKyAgICBFR0xpbnQgZ2V0V2lkdGgo
KSBjb25zdCB7IHJldHVybiBtV2lkdGg7IH0KKyAgICBFR0xpbnQgZ2V0SGVpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbUhlaWdodDsgfQorCisgICAgc3RhdGljIFN3YXBDaGFpbjExICptYWtlU3dhcENo
YWluMTEoU3dhcENoYWluICpzd2FwQ2hhaW4pOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOKFN3YXBDaGFpbjExKTsKKworICAgIHZvaWQgcmVsZWFzZSgpOworICAg
IHZvaWQgaW5pdFBhc3NUaHJvdWdoUmVzb3VyY2VzKCk7CisgICAgdm9pZCByZWxlYXNlT2Zmc2Ny
ZWVuVGV4dHVyZSgpOworICAgIEVHTGludCByZXNldE9mZnNjcmVlblRleHR1cmUoaW50IGJhY2ti
dWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpOworCisgICAgUmVuZGVyZXIxMSAqbVJl
bmRlcmVyOworICAgIEVHTGludCBtSGVpZ2h0OworICAgIEVHTGludCBtV2lkdGg7CisgICAgYm9v
bCBtQXBwQ3JlYXRlZFNoYXJlSGFuZGxlOworICAgIHVuc2lnbmVkIGludCBtU3dhcEludGVydmFs
OworICAgIGJvb2wgbVBhc3NUaHJvdWdoUmVzb3VyY2VzSW5pdDsKKworICAgIElEWEdJU3dhcENo
YWluICptU3dhcENoYWluOworCisgICAgSUQzRDExVGV4dHVyZTJEICptQmFja0J1ZmZlclRleHR1
cmU7CisgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqbUJhY2tCdWZmZXJSVFZpZXc7CisKKyAg
ICBJRDNEMTFUZXh0dXJlMkQgKm1PZmZzY3JlZW5UZXh0dXJlOworICAgIElEM0QxMVJlbmRlclRh
cmdldFZpZXcgKm1PZmZzY3JlZW5SVFZpZXc7CisgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3
ICptT2Zmc2NyZWVuU1JWaWV3OworCisgICAgSUQzRDExVGV4dHVyZTJEICptRGVwdGhTdGVuY2ls
VGV4dHVyZTsKKyAgICBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICptRGVwdGhTdGVuY2lsRFNWaWV3
OworCisgICAgSUQzRDExQnVmZmVyICptUXVhZFZCOworICAgIElEM0QxMVNhbXBsZXJTdGF0ZSAq
bVBhc3NUaHJvdWdoU2FtcGxlcjsKKyAgICBJRDNEMTFJbnB1dExheW91dCAqbVBhc3NUaHJvdWdo
SUw7CisgICAgSUQzRDExVmVydGV4U2hhZGVyICptUGFzc1Rocm91Z2hWUzsKKyAgICBJRDNEMTFQ
aXhlbFNoYWRlciAqbVBhc3NUaHJvdWdoUFM7Cit9OworCit9CisjZW5kaWYgLy8gTElCR0xFU1Yy
X1JFTkRFUkVSX1NXQVBDSEFJTjExX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL1N3YXBDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L1N3YXBDaGFpbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gU3dhcENoYWluLmg6IERlZmluZXMgYSBiYWNrLWVuZCBzcGVjaWZpYyBjbGFzcyB0aGF0
IGhpZGVzIHRoZSBkZXRhaWxzIG9mIHRoZQorLy8gaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgc3dh
cGNoYWluLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9TV0FQQ0hBSU5fSF8KKyNkZWZp
bmUgTElCR0xFU1YyX1JFTkRFUkVSX1NXQVBDSEFJTl9IXworCisjaW5jbHVkZSAiY29tbW9uL2Fu
Z2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFN3YXBDaGFpbgoreworICBw
dWJsaWM6CisgICAgU3dhcENoYWluKEhXTkQgd2luZG93LCBIQU5ETEUgc2hhcmVIYW5kbGUsIEdM
ZW51bSBiYWNrQnVmZmVyRm9ybWF0LCBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQpCisgICAgICAg
IDogbVdpbmRvdyh3aW5kb3cpLCBtU2hhcmVIYW5kbGUoc2hhcmVIYW5kbGUpLCBtQmFja0J1ZmZl
ckZvcm1hdChiYWNrQnVmZmVyRm9ybWF0KSwgbURlcHRoQnVmZmVyRm9ybWF0KGRlcHRoQnVmZmVy
Rm9ybWF0KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5Td2FwQ2hhaW4oKSB7fTsKKwor
ICAgIHZpcnR1YWwgRUdMaW50IHJlc2l6ZShFR0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xpbnQg
YmFja2J1ZmZlclNpemUpID0gMDsKKyAgICB2aXJ0dWFsIEVHTGludCByZXNldChFR0xpbnQgYmFj
a2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1ZmZlckhlaWdodCwgRUdMaW50IHN3YXBJbnRlcnZh
bCkgPSAwOworICAgIHZpcnR1YWwgRUdMaW50IHN3YXBSZWN0KEVHTGludCB4LCBFR0xpbnQgeSwg
RUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY3Jl
YXRlKCkgPSAwOworCisgICAgdmlydHVhbCBIQU5ETEUgZ2V0U2hhcmVIYW5kbGUoKSB7cmV0dXJu
IG1TaGFyZUhhbmRsZTt9OworCisgIHByb3RlY3RlZDoKKyAgICBjb25zdCBIV05EIG1XaW5kb3c7
ICAgICAgICAgICAgLy8gV2luZG93IHRoYXQgdGhlIHN1cmZhY2UgaXMgY3JlYXRlZCBmb3IuCisg
ICAgY29uc3QgR0xlbnVtIG1CYWNrQnVmZmVyRm9ybWF0OworICAgIGNvbnN0IEdMZW51bSBtRGVw
dGhCdWZmZXJGb3JtYXQ7CisKKyAgICBIQU5ETEUgbVNoYXJlSGFuZGxlOworfTsKKworfQorI2Vu
ZGlmIC8vIExJQkdMRVNWMl9SRU5ERVJFUl9TV0FQQ0hBSU5fSF8KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL1RleHR1cmVTdG9yYWdlOS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlOS5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzI4IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQuaCIKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisvLyBUZXh0dXJlU3RvcmFnZTkuY3BwOiBJbXBsZW1lbnRzIHRoZSBhYnN0cmFj
dCByeDo6VGV4dHVyZVN0b3JhZ2U5IGNsYXNzIGFuZCBpdHMgY29uY3JldGUgZGVyaXZlZAorLy8g
Y2xhc3NlcyBUZXh0dXJlU3RvcmFnZTlfMkQgYW5kIFRleHR1cmVTdG9yYWdlOV9DdWJlLCB3aGlj
aCBhY3QgYXMgdGhlIGludGVyZmFjZSB0byB0aGUKKy8vIEQzRDkgdGV4dHVyZS4KKworI2luY2x1
ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRl
cmVyOS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTkuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvU3dhcENoYWluOS5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi9yZW5kZXJlci9SZW5kZXJUYXJnZXQ5LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL3Jl
bmRlcmVyL3JlbmRlcmVyOV91dGlscy5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9UZXh0dXJlLmgi
CisKK25hbWVzcGFjZSByeAoreworVGV4dHVyZVN0b3JhZ2U5OjpUZXh0dXJlU3RvcmFnZTkoUmVu
ZGVyZXIgKnJlbmRlcmVyLCBEV09SRCB1c2FnZSkKKyAgICA6IG1Mb2RPZmZzZXQoMCksCisgICAg
ICBtUmVuZGVyZXIoUmVuZGVyZXI5OjptYWtlUmVuZGVyZXI5KHJlbmRlcmVyKSksCisgICAgICBt
RDNEVXNhZ2UodXNhZ2UpLAorICAgICAgbUQzRFBvb2wobVJlbmRlcmVyLT5nZXRUZXh0dXJlUG9v
bCh1c2FnZSkpCit7Cit9CisKK1RleHR1cmVTdG9yYWdlOTo6flRleHR1cmVTdG9yYWdlOSgpCit7
Cit9CisKK1RleHR1cmVTdG9yYWdlOSAqVGV4dHVyZVN0b3JhZ2U5OjptYWtlVGV4dHVyZVN0b3Jh
Z2U5KFRleHR1cmVTdG9yYWdlICpzdG9yYWdlKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19U
WVBFKFRleHR1cmVTdG9yYWdlOSosIHN0b3JhZ2UpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VGV4dHVyZVN0b3JhZ2U5Kj4oc3RvcmFnZSk7Cit9CisKK0RXT1JEIFRleHR1cmVTdG9yYWdlOTo6
R2V0VGV4dHVyZVVzYWdlKEQzREZPUk1BVCBkM2RmbXQsIEdMZW51bSBnbHVzYWdlLCBib29sIGZv
cmNlUmVuZGVyYWJsZSkKK3sKKyAgICBEV09SRCBkM2R1c2FnZSA9IDA7CisKKyAgICBpZiAoZDNk
Zm10ID09IEQzREZNVF9JTlRaKQorICAgIHsKKyAgICAgICAgZDNkdXNhZ2UgfD0gRDNEVVNBR0Vf
REVQVEhTVEVOQ0lMOworICAgIH0KKyAgICBlbHNlIGlmKGZvcmNlUmVuZGVyYWJsZSB8fCAoVGV4
dHVyZVN0b3JhZ2U5OjpJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKGQzZGZtdCkgJiYgKGdsdXNh
Z2UgPT0gR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdMRSkpKQorICAgIHsKKyAgICAgICAg
ZDNkdXNhZ2UgfD0gRDNEVVNBR0VfUkVOREVSVEFSR0VUOworICAgIH0KKyAgICByZXR1cm4gZDNk
dXNhZ2U7Cit9CisKK2Jvb2wgVGV4dHVyZVN0b3JhZ2U5OjpJc1RleHR1cmVGb3JtYXRSZW5kZXJh
YmxlKEQzREZPUk1BVCBmb3JtYXQpCit7CisgICAgaWYgKGZvcm1hdCA9PSBEM0RGTVRfSU5UWikK
KyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBzd2l0Y2goZm9ybWF0KQor
ICAgIHsKKyAgICAgIGNhc2UgRDNERk1UX0w4OgorICAgICAgY2FzZSBEM0RGTVRfQThMODoKKyAg
ICAgIGNhc2UgRDNERk1UX0RYVDE6CisgICAgICBjYXNlIEQzREZNVF9EWFQzOgorICAgICAgY2Fz
ZSBEM0RGTVRfRFhUNToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgY2FzZSBEM0RGTVRf
QThSOEc4Qjg6CisgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKKyAgICAgIGNhc2UgRDNERk1U
X0ExNkIxNkcxNlIxNkY6CisgICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFRleHR1cmVTdG9yYWdlOTo6aXNS
ZW5kZXJUYXJnZXQoKSBjb25zdAoreworICAgIHJldHVybiAobUQzRFVzYWdlICYgKEQzRFVTQUdF
X1JFTkRFUlRBUkdFVCB8IEQzRFVTQUdFX0RFUFRIU1RFTkNJTCkpICE9IDA7Cit9CisKK2Jvb2wg
VGV4dHVyZVN0b3JhZ2U5Ojppc01hbmFnZWQoKSBjb25zdAoreworICAgIHJldHVybiAobUQzRFBv
b2wgPT0gRDNEUE9PTF9NQU5BR0VEKTsKK30KKworRDNEUE9PTCBUZXh0dXJlU3RvcmFnZTk6Omdl
dFBvb2woKSBjb25zdAoreworICAgIHJldHVybiBtRDNEUG9vbDsKK30KKworRFdPUkQgVGV4dHVy
ZVN0b3JhZ2U5OjpnZXRVc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EM0RVc2FnZTsKK30K
KworaW50IFRleHR1cmVTdG9yYWdlOTo6Z2V0TG9kT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbUxvZE9mZnNldDsKK30KKworaW50IFRleHR1cmVTdG9yYWdlOTo6bGV2ZWxDb3VudCgpCit7
CisgICAgcmV0dXJuIGdldEJhc2VUZXh0dXJlKCkgPyBnZXRCYXNlVGV4dHVyZSgpLT5HZXRMZXZl
bENvdW50KCkgLSBnZXRMb2RPZmZzZXQoKSA6IDA7Cit9CisKK1RleHR1cmVTdG9yYWdlOV8yRDo6
VGV4dHVyZVN0b3JhZ2U5XzJEKFJlbmRlcmVyICpyZW5kZXJlciwgU3dhcENoYWluOSAqc3dhcGNo
YWluKSA6IFRleHR1cmVTdG9yYWdlOShyZW5kZXJlciwgRDNEVVNBR0VfUkVOREVSVEFSR0VUKQor
eworICAgIElEaXJlY3QzRFRleHR1cmU5ICpzdXJmYWNlVGV4dHVyZSA9IHN3YXBjaGFpbi0+Z2V0
T2Zmc2NyZWVuVGV4dHVyZSgpOworICAgIG1UZXh0dXJlID0gc3VyZmFjZVRleHR1cmU7CisgICAg
bVJlbmRlclRhcmdldCA9IE5VTEw7CisKKyAgICBpbml0aWFsaXplUmVuZGVyVGFyZ2V0KCk7Cit9
CisKK1RleHR1cmVTdG9yYWdlOV8yRDo6VGV4dHVyZVN0b3JhZ2U5XzJEKFJlbmRlcmVyICpyZW5k
ZXJlciwgaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gdXNhZ2UsIGJv
b2wgZm9yY2VSZW5kZXJhYmxlLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKKyAgICA6
IFRleHR1cmVTdG9yYWdlOShyZW5kZXJlciwgR2V0VGV4dHVyZVVzYWdlKFJlbmRlcmVyOTo6bWFr
ZVJlbmRlcmVyOShyZW5kZXJlciktPkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJu
YWxmb3JtYXQpLCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxlKSkKK3sKKyAgICBtVGV4dHVyZSA9IE5V
TEw7CisgICAgbVJlbmRlclRhcmdldCA9IE5VTEw7CisgICAgLy8gaWYgdGhlIHdpZHRoIG9yIGhl
aWdodCBpcyBub3QgcG9zaXRpdmUgdGhpcyBzaG91bGQgYmUgdHJlYXRlZCBhcyBhbiBpbmNvbXBs
ZXRlIHRleHR1cmUKKyAgICAvLyB3ZSBoYW5kbGUgdGhhdCBoZXJlIGJ5IHNraXBwaW5nIHRoZSBk
M2QgdGV4dHVyZSBjcmVhdGlvbgorICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkKKyAg
ICB7CisgICAgICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2
aWNlKCk7CisgICAgICAgIGdsOjpNYWtlVmFsaWRTaXplKGZhbHNlLCBnbDo6SXNDb21wcmVzc2Vk
KGludGVybmFsZm9ybWF0KSwgJndpZHRoLCAmaGVpZ2h0LCAmbUxvZE9mZnNldCk7CisgICAgICAg
IEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlKHdpZHRoLCBoZWlnaHQsIGxl
dmVscyA/IGxldmVscyArIG1Mb2RPZmZzZXQgOiAwLCBnZXRVc2FnZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyZXItPkNvbnZlcnRUZXh0
dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQpLCBnZXRQb29sKCksICZtVGV4dHVyZSwg
TlVMTCk7CisKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAg
ICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9
PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgICAgIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGluaXRpYWxpemVSZW5kZXJUYXJnZXQoKTsKK30K
KworVGV4dHVyZVN0b3JhZ2U5XzJEOjp+VGV4dHVyZVN0b3JhZ2U5XzJEKCkKK3sKKyAgICBpZiAo
bVRleHR1cmUpCisgICAgeworICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOworICAgIH0KKwor
ICAgIGRlbGV0ZSBtUmVuZGVyVGFyZ2V0OworfQorCitUZXh0dXJlU3RvcmFnZTlfMkQgKlRleHR1
cmVTdG9yYWdlOV8yRDo6bWFrZVRleHR1cmVTdG9yYWdlOV8yRChUZXh0dXJlU3RvcmFnZSAqc3Rv
cmFnZSkKK3sKKyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShUZXh0dXJlU3RvcmFnZTlfMkQq
LCBzdG9yYWdlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHR1cmVTdG9yYWdlOV8yRCo+
KHN0b3JhZ2UpOworfQorCisvLyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHN1cmZhY2UuCisvLyBj
YWxsZXIgbXVzdCBSZWxlYXNlKCkgdGhlIHJldHVybmVkIHN1cmZhY2UKK0lEaXJlY3QzRFN1cmZh
Y2U5ICpUZXh0dXJlU3RvcmFnZTlfMkQ6OmdldFN1cmZhY2VMZXZlbChpbnQgbGV2ZWwsIGJvb2wg
ZGlydHkpCit7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UgPSBOVUxMOworCisgICAg
aWYgKG1UZXh0dXJlKQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtVGV4dHVyZS0+
R2V0U3VyZmFjZUxldmVsKGxldmVsICsgbUxvZE9mZnNldCwgJnN1cmZhY2UpOworICAgICAgICBB
U1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworCisgICAgICAgIC8vIFdpdGggbWFuYWdlZCB0ZXh0
dXJlcyB0aGUgZHJpdmVyIG5lZWRzIHRvIGJlIGluZm9ybWVkIG9mIHVwZGF0ZXMgdG8gdGhlIGxv
d2VyIG1pcG1hcCBsZXZlbHMKKyAgICAgICAgaWYgKGxldmVsICsgbUxvZE9mZnNldCAhPSAwICYm
IGlzTWFuYWdlZCgpICYmIGRpcnR5KQorICAgICAgICB7CisgICAgICAgICAgICBtVGV4dHVyZS0+
QWRkRGlydHlSZWN0KE5VTEwpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHN1cmZh
Y2U7Cit9CisKK1JlbmRlclRhcmdldCAqVGV4dHVyZVN0b3JhZ2U5XzJEOjpnZXRSZW5kZXJUYXJn
ZXQoKQoreworICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0OworfQorCit2b2lkIFRleHR1cmVTdG9y
YWdlOV8yRDo6Z2VuZXJhdGVNaXBtYXAoaW50IGxldmVsKQoreworICAgIElEaXJlY3QzRFN1cmZh
Y2U5ICp1cHBlciA9IGdldFN1cmZhY2VMZXZlbChsZXZlbCAtIDEsIGZhbHNlKTsKKyAgICBJRGly
ZWN0M0RTdXJmYWNlOSAqbG93ZXIgPSBnZXRTdXJmYWNlTGV2ZWwobGV2ZWwsIHRydWUpOworCisg
ICAgaWYgKHVwcGVyICE9IE5VTEwgJiYgbG93ZXIgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIG1S
ZW5kZXJlci0+Ym94RmlsdGVyKHVwcGVyLCBsb3dlcik7CisgICAgfQorCisgICAgaWYgKHVwcGVy
ICE9IE5VTEwpIHVwcGVyLT5SZWxlYXNlKCk7CisgICAgaWYgKGxvd2VyICE9IE5VTEwpIGxvd2Vy
LT5SZWxlYXNlKCk7Cit9CisKK0lEaXJlY3QzREJhc2VUZXh0dXJlOSAqVGV4dHVyZVN0b3JhZ2U5
XzJEOjpnZXRCYXNlVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlOworfQor
Cit2b2lkIFRleHR1cmVTdG9yYWdlOV8yRDo6aW5pdGlhbGl6ZVJlbmRlclRhcmdldCgpCit7Cisg
ICAgQVNTRVJUKG1SZW5kZXJUYXJnZXQgPT0gTlVMTCk7CisKKyAgICBpZiAobVRleHR1cmUgIT0g
TlVMTCAmJiBpc1JlbmRlclRhcmdldCgpKQorICAgIHsKKyAgICAgICAgSURpcmVjdDNEU3VyZmFj
ZTkgKnN1cmZhY2UgPSBnZXRTdXJmYWNlTGV2ZWwoMCwgZmFsc2UpOworCisgICAgICAgIG1SZW5k
ZXJUYXJnZXQgPSBuZXcgUmVuZGVyVGFyZ2V0OShtUmVuZGVyZXIsIHN1cmZhY2UpOworICAgIH0K
K30KKworVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OlRleHR1cmVTdG9yYWdlOV9DdWJlKFJlbmRlcmVy
ICpyZW5kZXJlciwgaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gdXNh
Z2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBpbnQgc2l6ZSkKKyAgICA6IFRleHR1cmVTdG9yYWdl
OShyZW5kZXJlciwgR2V0VGV4dHVyZVVzYWdlKFJlbmRlcmVyOTo6bWFrZVJlbmRlcmVyOShyZW5k
ZXJlciktPkNvbnZlcnRUZXh0dXJlSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxmb3JtYXQpLCB1c2Fn
ZSwgZm9yY2VSZW5kZXJhYmxlKSkKK3sKKyAgICBtVGV4dHVyZSA9IE5VTEw7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCA2OyArK2kpCisgICAgeworICAgICAgICBtUmVuZGVyVGFyZ2V0W2ldID0g
TlVMTDsKKyAgICB9CisKKyAgICAvLyBpZiB0aGUgc2l6ZSBpcyBub3QgcG9zaXRpdmUgdGhpcyBz
aG91bGQgYmUgdHJlYXRlZCBhcyBhbiBpbmNvbXBsZXRlIHRleHR1cmUKKyAgICAvLyB3ZSBoYW5k
bGUgdGhhdCBoZXJlIGJ5IHNraXBwaW5nIHRoZSBkM2QgdGV4dHVyZSBjcmVhdGlvbgorICAgIGlm
IChzaXplID4gMCkKKyAgICB7CisgICAgICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1S
ZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgICAgIGludCBoZWlnaHQgPSBzaXplOworICAgICAg
ICBnbDo6TWFrZVZhbGlkU2l6ZShmYWxzZSwgZ2w6OklzQ29tcHJlc3NlZChpbnRlcm5hbGZvcm1h
dCksICZzaXplLCAmaGVpZ2h0LCAmbUxvZE9mZnNldCk7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0
ID0gZGV2aWNlLT5DcmVhdGVDdWJlVGV4dHVyZShzaXplLCBsZXZlbHMgPyBsZXZlbHMgKyBtTG9k
T2Zmc2V0IDogMCwgZ2V0VXNhZ2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1SZW5kZXJlci0+Q29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1h
dChpbnRlcm5hbGZvcm1hdCksIGdldFBvb2woKSwgJm1UZXh0dXJlLCBOVUxMKTsKKworICAgICAg
ICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1
bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkp
OworICAgICAgICAgICAgZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgaW5pdGlhbGl6ZVJlbmRlclRhcmdldCgpOworfQorCitUZXh0dXJlU3RvcmFn
ZTlfQ3ViZTo6flRleHR1cmVTdG9yYWdlOV9DdWJlKCkKK3sKKyAgICBpZiAobVRleHR1cmUpCisg
ICAgeworICAgICAgICBtVGV4dHVyZS0+UmVsZWFzZSgpOworICAgIH0KKworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgNjsgKytpKQorICAgIHsKKyAgICAgICAgZGVsZXRlIG1SZW5kZXJUYXJnZXRb
aV07CisgICAgfQorfQorCitUZXh0dXJlU3RvcmFnZTlfQ3ViZSAqVGV4dHVyZVN0b3JhZ2U5X0N1
YmU6Om1ha2VUZXh0dXJlU3RvcmFnZTlfQ3ViZShUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSkKK3sK
KyAgICBBU1NFUlQoSEFTX0RZTkFNSUNfVFlQRShUZXh0dXJlU3RvcmFnZTlfQ3ViZSosIHN0b3Jh
Z2UpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dHVyZVN0b3JhZ2U5X0N1YmUqPihzdG9y
YWdlKTsKK30KKworLy8gSW5jcmVtZW50cyByZWZjb3VudCBvbiBzdXJmYWNlLgorLy8gY2FsbGVy
IG11c3QgUmVsZWFzZSgpIHRoZSByZXR1cm5lZCBzdXJmYWNlCitJRGlyZWN0M0RTdXJmYWNlOSAq
VGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmdldEN1YmVNYXBTdXJmYWNlKEdMZW51bSBmYWNlVGFyZ2V0
LCBpbnQgbGV2ZWwsIGJvb2wgZGlydHkpCit7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZh
Y2UgPSBOVUxMOworCisgICAgaWYgKG1UZXh0dXJlKQorICAgIHsKKyAgICAgICAgRDNEQ1VCRU1B
UF9GQUNFUyBmYWNlID0gZ2xfZDNkOTo6Q29udmVydEN1YmVGYWNlKGZhY2VUYXJnZXQpOworICAg
ICAgICBIUkVTVUxUIHJlc3VsdCA9IG1UZXh0dXJlLT5HZXRDdWJlTWFwU3VyZmFjZShmYWNlLCBs
ZXZlbCArIG1Mb2RPZmZzZXQsICZzdXJmYWNlKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChy
ZXN1bHQpKTsKKworICAgICAgICAvLyBXaXRoIG1hbmFnZWQgdGV4dHVyZXMgdGhlIGRyaXZlciBu
ZWVkcyB0byBiZSBpbmZvcm1lZCBvZiB1cGRhdGVzIHRvIHRoZSBsb3dlciBtaXBtYXAgbGV2ZWxz
CisgICAgICAgIGlmIChsZXZlbCAhPSAwICYmIGlzTWFuYWdlZCgpICYmIGRpcnR5KQorICAgICAg
ICB7CisgICAgICAgICAgICBtVGV4dHVyZS0+QWRkRGlydHlSZWN0KGZhY2UsIE5VTEwpOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHN1cmZhY2U7Cit9CisKK1JlbmRlclRhcmdldCAq
VGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmdldFJlbmRlclRhcmdldChHTGVudW0gZmFjZVRhcmdldCkK
K3sKKyAgICByZXR1cm4gbVJlbmRlclRhcmdldFtnbDo6VGV4dHVyZUN1YmVNYXA6OmZhY2VJbmRl
eChmYWNlVGFyZ2V0KV07Cit9CisKK3ZvaWQgVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmdlbmVyYXRl
TWlwbWFwKGludCBmYWNlLCBpbnQgbGV2ZWwpCit7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnVw
cGVyID0gZ2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsg
ZmFjZSwgbGV2ZWwgLSAxLCBmYWxzZSk7CisgICAgSURpcmVjdDNEU3VyZmFjZTkgKmxvd2VyID0g
Z2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgZmFjZSwg
bGV2ZWwsIHRydWUpOworCisgICAgaWYgKHVwcGVyICE9IE5VTEwgJiYgbG93ZXIgIT0gTlVMTCkK
KyAgICB7CisgICAgICAgIG1SZW5kZXJlci0+Ym94RmlsdGVyKHVwcGVyLCBsb3dlcik7CisgICAg
fQorCisgICAgaWYgKHVwcGVyICE9IE5VTEwpIHVwcGVyLT5SZWxlYXNlKCk7CisgICAgaWYgKGxv
d2VyICE9IE5VTEwpIGxvd2VyLT5SZWxlYXNlKCk7Cit9CisKK0lEaXJlY3QzREJhc2VUZXh0dXJl
OSAqVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmdldEJhc2VUZXh0dXJlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbVRleHR1cmU7Cit9CisKK3ZvaWQgVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmluaXRpYWxp
emVSZW5kZXJUYXJnZXQoKQoreworICAgIGlmIChtVGV4dHVyZSAhPSBOVUxMICYmIGlzUmVuZGVy
VGFyZ2V0KCkpCisgICAgeworICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSA9IE5V
TEw7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2OyArK2kpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVChtUmVuZGVyVGFyZ2V0W2ldID09IE5VTEwpOworCisgICAgICAgICAg
ICBzdXJmYWNlID0gZ2V0Q3ViZU1hcFN1cmZhY2UoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9YICsgaSwgMCwgZmFsc2UpOworCisgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0W2ldID0gbmV3
IFJlbmRlclRhcmdldDkobVJlbmRlcmVyLCBzdXJmYWNlKTsKKyAgICAgICAgfQorICAgIH0KK30K
KworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0
dXJlU3RvcmFnZTkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2U5LmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTA5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVGV4dHVyZVN0b3JhZ2U5Lmg6IERlZmlu
ZXMgdGhlIGFic3RyYWN0IHJ4OjpUZXh0dXJlU3RvcmFnZTkgY2xhc3MgYW5kIGl0cyBjb25jcmV0
ZSBkZXJpdmVkCisvLyBjbGFzc2VzIFRleHR1cmVTdG9yYWdlOV8yRCBhbmQgVGV4dHVyZVN0b3Jh
Z2U5X0N1YmUsIHdoaWNoIGFjdCBhcyB0aGUgaW50ZXJmYWNlIHRvIHRoZQorLy8gRDNEOSB0ZXh0
dXJlLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9URVhUVVJFU1RPUkFHRTlfSF8KKyNk
ZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1RFWFRVUkVTVE9SQUdFOV9IXworCisjaW5jbHVkZSAi
bGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlLmgiCisjaW5jbHVkZSAiY29tbW9uL2Rl
YnVnLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI5OworY2xhc3MgU3dhcENo
YWluOTsKK2NsYXNzIFJlbmRlclRhcmdldDsKK2NsYXNzIFJlbmRlclRhcmdldDk7CitjbGFzcyBC
bGl0OworCitjbGFzcyBUZXh0dXJlU3RvcmFnZTkgOiBwdWJsaWMgVGV4dHVyZVN0b3JhZ2UKK3sK
KyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlOShSZW5kZXJlciAqcmVuZGVyZXIsIERXT1JE
IHVzYWdlKTsKKyAgICB2aXJ0dWFsIH5UZXh0dXJlU3RvcmFnZTkoKTsKKworICAgIHN0YXRpYyBU
ZXh0dXJlU3RvcmFnZTkgKm1ha2VUZXh0dXJlU3RvcmFnZTkoVGV4dHVyZVN0b3JhZ2UgKnN0b3Jh
Z2UpOworCisgICAgc3RhdGljIERXT1JEIEdldFRleHR1cmVVc2FnZShEM0RGT1JNQVQgZDNkZm10
LCBHTGVudW0gZ2x1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUpOworICAgIHN0YXRpYyBib29s
IElzVGV4dHVyZUZvcm1hdFJlbmRlcmFibGUoRDNERk9STUFUIGZvcm1hdCk7CisKKyAgICBEM0RQ
T09MIGdldFBvb2woKSBjb25zdDsKKyAgICBEV09SRCBnZXRVc2FnZSgpIGNvbnN0OworCisgICAg
dmlydHVhbCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKmdldEJhc2VUZXh0dXJlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoKSB7IHJldHVybiBO
VUxMOyB9CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChHTGVudW0g
ZmFjZVRhcmdldCkgeyByZXR1cm4gTlVMTDsgfQorICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1p
cG1hcChpbnQgbGV2ZWwpIHt9OworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcChpbnQg
ZmFjZSwgaW50IGxldmVsKSB7fTsKKworICAgIHZpcnR1YWwgaW50IGdldExvZE9mZnNldCgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclRhcmdldCgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBpc01hbmFnZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBsZXZlbENvdW50KCk7
CisKKyAgcHJvdGVjdGVkOgorICAgIGludCBtTG9kT2Zmc2V0OworICAgIFJlbmRlcmVyOSAqbVJl
bmRlcmVyOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1
cmVTdG9yYWdlOSk7CisKKyAgICBjb25zdCBEV09SRCBtRDNEVXNhZ2U7CisgICAgY29uc3QgRDNE
UE9PTCBtRDNEUG9vbDsKK307CisKK2NsYXNzIFRleHR1cmVTdG9yYWdlOV8yRCA6IHB1YmxpYyBU
ZXh0dXJlU3RvcmFnZTkKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlOV8yRChSZW5k
ZXJlciAqcmVuZGVyZXIsIFN3YXBDaGFpbjkgKnN3YXBjaGFpbik7CisgICAgVGV4dHVyZVN0b3Jh
Z2U5XzJEKFJlbmRlcmVyICpyZW5kZXJlciwgaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHTGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCk7CisgICAgdmlydHVhbCB+VGV4dHVyZVN0b3JhZ2U5XzJEKCk7CisKKyAg
ICBzdGF0aWMgVGV4dHVyZVN0b3JhZ2U5XzJEICptYWtlVGV4dHVyZVN0b3JhZ2U5XzJEKFRleHR1
cmVTdG9yYWdlICpzdG9yYWdlKTsKKworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRTdXJmYWNl
TGV2ZWwoaW50IGxldmVsLCBib29sIGRpcnR5KTsKKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAq
Z2V0UmVuZGVyVGFyZ2V0KCk7CisgICAgdmlydHVhbCBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKmdl
dEJhc2VUZXh0dXJlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwKGlu
dCBsZXZlbCk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4
dHVyZVN0b3JhZ2U5XzJEKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZVJlbmRlclRhcmdldCgpOwor
CisgICAgSURpcmVjdDNEVGV4dHVyZTkgKm1UZXh0dXJlOworICAgIFJlbmRlclRhcmdldDkgKm1S
ZW5kZXJUYXJnZXQ7Cit9OworCitjbGFzcyBUZXh0dXJlU3RvcmFnZTlfQ3ViZSA6IHB1YmxpYyBU
ZXh0dXJlU3RvcmFnZTkKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlOV9DdWJlKFJl
bmRlcmVyICpyZW5kZXJlciwgaW50IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVu
dW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBpbnQgc2l6ZSk7CisgICAgdmlydHVhbCB+
VGV4dHVyZVN0b3JhZ2U5X0N1YmUoKTsKKworICAgIHN0YXRpYyBUZXh0dXJlU3RvcmFnZTlfQ3Vi
ZSAqbWFrZVRleHR1cmVTdG9yYWdlOV9DdWJlKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlKTsKKwor
ICAgIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRDdWJlTWFwU3VyZmFjZShHTGVudW0gZmFjZVRhcmdl
dCwgaW50IGxldmVsLCBib29sIGRpcnR5KTsKKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAqZ2V0
UmVuZGVyVGFyZ2V0KEdMZW51bSBmYWNlVGFyZ2V0KTsKKyAgICB2aXJ0dWFsIElEaXJlY3QzREJh
c2VUZXh0dXJlOSAqZ2V0QmFzZVRleHR1cmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2Vu
ZXJhdGVNaXBtYXAoaW50IGZhY2UsIGludCBsZXZlbCk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNB
TExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZVN0b3JhZ2U5X0N1YmUpOworCisgICAgdm9pZCBp
bml0aWFsaXplUmVuZGVyVGFyZ2V0KCk7CisKKyAgICBJRGlyZWN0M0RDdWJlVGV4dHVyZTkgKm1U
ZXh0dXJlOworICAgIFJlbmRlclRhcmdldDkgKm1SZW5kZXJUYXJnZXRbNl07Cit9OworCit9CisK
KyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfVEVYVFVSRVNUT1JBR0U5X0hfCisKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0
b3JhZ2UxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3Jh
Z2UxMS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjc2IEBACisjaW5jbHVkZSAicHJlY29t
cGlsZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBUZXh0dXJlU3RvcmFnZTExLmNwcDogSW1wbGVt
ZW50cyB0aGUgYWJzdHJhY3Qgcng6OlRleHR1cmVTdG9yYWdlMTEgY2xhc3MgYW5kIGl0cyBjb25j
cmV0ZSBkZXJpdmVkCisvLyBjbGFzc2VzIFRleHR1cmVTdG9yYWdlMTFfMkQgYW5kIFRleHR1cmVT
dG9yYWdlMTFfQ3ViZSwgd2hpY2ggYWN0IGFzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIEQzRDExIHRl
eHR1cmUuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UxMS5o
IgorCisjaW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0MTEuaCIKKyNpbmNsdWRlICJsaWJHTEVT
djIvcmVuZGVyZXIvU3dhcENoYWluMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIv
cmVuZGVyZXIxMV91dGlscy5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL3V0aWxpdGllcy5oIgor
I2luY2x1ZGUgImxpYkdMRVN2Mi9tYWluLmgiCisKK25hbWVzcGFjZSByeAoreworCitUZXh0dXJl
U3RvcmFnZTExOjpUZXh0dXJlU3RvcmFnZTExKFJlbmRlcmVyICpyZW5kZXJlciwgVUlOVCBiaW5k
RmxhZ3MpCisgICAgOiBtQmluZEZsYWdzKGJpbmRGbGFncyksCisgICAgICBtTG9kT2Zmc2V0KDAp
LAorICAgICAgbU1pcExldmVscygwKSwKKyAgICAgIG1UZXh0dXJlKE5VTEwpLAorICAgICAgbVRl
eHR1cmVGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBtU2hhZGVyUmVzb3VyY2VG
b3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBtUmVuZGVyVGFyZ2V0Rm9ybWF0KERY
R0lfRk9STUFUX1VOS05PV04pLAorICAgICAgbURlcHRoU3RlbmNpbEZvcm1hdChEWEdJX0ZPUk1B
VF9VTktOT1dOKSwKKyAgICAgIG1TUlYoTlVMTCksCisgICAgICBtVGV4dHVyZVdpZHRoKDApLAor
ICAgICAgbVRleHR1cmVIZWlnaHQoMCkKK3sKKyAgICBtUmVuZGVyZXIgPSBSZW5kZXJlcjExOjpt
YWtlUmVuZGVyZXIxMShyZW5kZXJlcik7Cit9CisKK1RleHR1cmVTdG9yYWdlMTE6On5UZXh0dXJl
U3RvcmFnZTExKCkKK3sKK30KKworVGV4dHVyZVN0b3JhZ2UxMSAqVGV4dHVyZVN0b3JhZ2UxMTo6
bWFrZVRleHR1cmVTdG9yYWdlMTEoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UpCit7CisgICAgQVNT
RVJUKEhBU19EWU5BTUlDX1RZUEUoVGV4dHVyZVN0b3JhZ2UxMSosIHN0b3JhZ2UpKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dHVyZVN0b3JhZ2UxMSo+KHN0b3JhZ2UpOworfQorCitEV09S
RCBUZXh0dXJlU3RvcmFnZTExOjpHZXRUZXh0dXJlQmluZEZsYWdzKERYR0lfRk9STUFUIGZvcm1h
dCwgR0xlbnVtIGdsdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlKQoreworICAgIFVJTlQgYmlu
ZEZsYWdzID0gRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0U7CisgICAgCisgICAgaWYgKGQzZDEx
OjpJc0RlcHRoU3RlbmNpbEZvcm1hdChmb3JtYXQpKQorICAgIHsKKyAgICAgICAgYmluZEZsYWdz
IHw9IEQzRDExX0JJTkRfREVQVEhfU1RFTkNJTDsKKyAgICB9CisgICAgZWxzZSBpZihmb3JjZVJl
bmRlcmFibGUgfHwgKFRleHR1cmVTdG9yYWdlMTE6OklzVGV4dHVyZUZvcm1hdFJlbmRlcmFibGUo
Zm9ybWF0KSAmJiAoZ2x1c2FnZSA9PSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFKSkp
CisgICAgeworICAgICAgICBiaW5kRmxhZ3MgfD0gRDNEMTFfQklORF9SRU5ERVJfVEFSR0VUOwor
ICAgIH0KKyAgICByZXR1cm4gYmluZEZsYWdzOworfQorCitib29sIFRleHR1cmVTdG9yYWdlMTE6
OklzVGV4dHVyZUZvcm1hdFJlbmRlcmFibGUoRFhHSV9GT1JNQVQgZm9ybWF0KQoreworICAgIHN3
aXRjaChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQThfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMy
X0ZMT0FUOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SOF9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VTk9STToKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjE2X0ZMT0FUOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZf
RkxPQVQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFf
VU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9STTogCisgICAgICBjYXNlIERY
R0lfRk9STUFUX0JDM19VTk9STToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZGVmYXVs
dDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKworVUlOVCBUZXh0dXJlU3RvcmFnZTExOjpnZXRCaW5kRmxhZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBtQmluZEZsYWdzOworfQorCitJRDNEMTFUZXh0dXJlMkQgKlRleHR1cmVTdG9yYWdl
MTE6OmdldEJhc2VUZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmU7Cit9CisK
K2ludCBUZXh0dXJlU3RvcmFnZTExOjpnZXRMb2RPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVy
biBtTG9kT2Zmc2V0OworfQorCitib29sIFRleHR1cmVTdG9yYWdlMTE6OmlzUmVuZGVyVGFyZ2V0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1CaW5kRmxhZ3MgJiAoRDNEMTFfQklORF9SRU5ERVJf
VEFSR0VUIHwgRDNEMTFfQklORF9ERVBUSF9TVEVOQ0lMKSkgIT0gMDsKK30KKyAgICAKK2Jvb2wg
VGV4dHVyZVN0b3JhZ2UxMTo6aXNNYW5hZ2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2ludCBUZXh0dXJlU3RvcmFnZTExOjpsZXZlbENvdW50KCkKK3sKKyAgICBpbnQgbGV2
ZWxzID0gMDsKKyAgICBpZiAoZ2V0QmFzZVRleHR1cmUoKSkKKyAgICB7CisgICAgICAgIGxldmVs
cyA9IG1NaXBMZXZlbHMgLSBnZXRMb2RPZmZzZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIGxldmVs
czsKK30KKworVUlOVCBUZXh0dXJlU3RvcmFnZTExOjpnZXRTdWJyZXNvdXJjZUluZGV4KGludCBs
ZXZlbCwgaW50IGZhY2VJbmRleCkKK3sKKyAgICBVSU5UIGluZGV4ID0gMDsKKyAgICBpZiAoZ2V0
QmFzZVRleHR1cmUoKSkKKyAgICB7CisgICAgICAgIGluZGV4ID0gRDNEMTFDYWxjU3VicmVzb3Vy
Y2UobGV2ZWwsIGZhY2VJbmRleCwgbU1pcExldmVscyk7CisgICAgfQorICAgIHJldHVybiBpbmRl
eDsKK30KKworYm9vbCBUZXh0dXJlU3RvcmFnZTExOjp1cGRhdGVTdWJyZXNvdXJjZUxldmVsKElE
M0QxMVRleHR1cmUyRCAqc3JjVGV4dHVyZSwgdW5zaWduZWQgaW50IHNvdXJjZVN1YnJlc291cmNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZl
bCwgaW50IGZhY2UsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQpCit7CisgICAgaWYgKHNyY1RleHR1cmUpCisgICAgeworICAgICAgICAvLyBSb3VuZCB1
cCB0aGUgd2lkdGggYW5kIGhlaWdodCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiBkaW1lbnNp
b24gYWxpZ25tZW50CisgICAgICAgIHVuc2lnbmVkIGludCBkaW1lbnNpb25BbGlnbm1lbnQgPSBk
M2QxMTo6R2V0VGV4dHVyZUZvcm1hdERpbWVuc2lvbkFsaWdubWVudChtVGV4dHVyZUZvcm1hdCk7
CisgICAgICAgIHdpZHRoID0gd2lkdGggKyBkaW1lbnNpb25BbGlnbm1lbnQgLSAxIC0gKHdpZHRo
IC0gMSkgJSBkaW1lbnNpb25BbGlnbm1lbnQ7CisgICAgICAgIGhlaWdodCA9IGhlaWdodCArIGRp
bWVuc2lvbkFsaWdubWVudCAtIDEgLSAoaGVpZ2h0IC0gMSkgJSBkaW1lbnNpb25BbGlnbm1lbnQ7
CisKKyAgICAgICAgRDNEMTFfQk9YIHNyY0JveDsKKyAgICAgICAgc3JjQm94LmxlZnQgPSB4b2Zm
c2V0OworICAgICAgICBzcmNCb3gudG9wID0geW9mZnNldDsKKyAgICAgICAgc3JjQm94LnJpZ2h0
ID0geG9mZnNldCArIHdpZHRoOworICAgICAgICBzcmNCb3guYm90dG9tID0geW9mZnNldCArIGhl
aWdodDsKKyAgICAgICAgc3JjQm94LmZyb250ID0gMDsKKyAgICAgICAgc3JjQm94LmJhY2sgPSAx
OworCisgICAgICAgIElEM0QxMURldmljZUNvbnRleHQgKmNvbnRleHQgPSBtUmVuZGVyZXItPmdl
dERldmljZUNvbnRleHQoKTsKKyAgICAgICAgCisgICAgICAgIEFTU0VSVChnZXRCYXNlVGV4dHVy
ZSgpKTsKKyAgICAgICAgY29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKGdldEJhc2VUZXh0
dXJlKCksIGdldFN1YnJlc291cmNlSW5kZXgobGV2ZWwgKyBtTG9kT2Zmc2V0LCBmYWNlKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvZmZzZXQsIHlvZmZzZXQsIDAs
IHNyY1RleHR1cmUsIHNvdXJjZVN1YnJlc291cmNlLCAmc3JjQm94KTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFRleHR1cmVTdG9y
YWdlMTE6OmdlbmVyYXRlTWlwbWFwTGF5ZXIoUmVuZGVyVGFyZ2V0MTEgKnNvdXJjZSwgUmVuZGVy
VGFyZ2V0MTEgKmRlc3QpCit7CisgICAgaWYgKHNvdXJjZSAmJiBkZXN0KQorICAgIHsKKyAgICAg
ICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2VTUlYgPSBzb3VyY2UtPmdldFNoYWRl
clJlc291cmNlVmlldygpOworICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0UlRW
ID0gZGVzdC0+Z2V0UmVuZGVyVGFyZ2V0VmlldygpOworCisgICAgICAgIGlmIChzb3VyY2VTUlYg
JiYgZGVzdFJUVikKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlJlY3RhbmdsZSBzb3VyY2VB
cmVhOworICAgICAgICAgICAgc291cmNlQXJlYS54ID0gMDsKKyAgICAgICAgICAgIHNvdXJjZUFy
ZWEueSA9IDA7CisgICAgICAgICAgICBzb3VyY2VBcmVhLndpZHRoID0gc291cmNlLT5nZXRXaWR0
aCgpOworICAgICAgICAgICAgc291cmNlQXJlYS5oZWlnaHQgPSBzb3VyY2UtPmdldEhlaWdodCgp
OworCisgICAgICAgICAgICBnbDo6UmVjdGFuZ2xlIGRlc3RBcmVhOworICAgICAgICAgICAgZGVz
dEFyZWEueCA9IDA7CisgICAgICAgICAgICBkZXN0QXJlYS55ID0gMDsKKyAgICAgICAgICAgIGRl
c3RBcmVhLndpZHRoID0gZGVzdC0+Z2V0V2lkdGgoKTsKKyAgICAgICAgICAgIGRlc3RBcmVhLmhl
aWdodCA9IGRlc3QtPmdldEhlaWdodCgpOworCisgICAgICAgICAgICBtUmVuZGVyZXItPmNvcHlU
ZXh0dXJlKHNvdXJjZVNSViwgc291cmNlQXJlYSwgc291cmNlLT5nZXRXaWR0aCgpLCBzb3VyY2Ut
PmdldEhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UlRW
LCBkZXN0QXJlYSwgZGVzdC0+Z2V0V2lkdGgoKSwgZGVzdC0+Z2V0SGVpZ2h0KCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHNvdXJjZVNSVikKKyAgICAgICAgeworICAgICAgICAgICAgc291cmNlU1JWLT5SZWxl
YXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlc3RSVFYpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlc3RSVFYtPlJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworVGV4dHVy
ZVN0b3JhZ2UxMV8yRDo6VGV4dHVyZVN0b3JhZ2UxMV8yRChSZW5kZXJlciAqcmVuZGVyZXIsIFN3
YXBDaGFpbjExICpzd2FwY2hhaW4pCisgICAgOiBUZXh0dXJlU3RvcmFnZTExKHJlbmRlcmVyLCBE
M0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQgfCBEM0QxMV9CSU5EX1NIQURFUl9SRVNPVVJDRSkKK3sK
KyAgICBtVGV4dHVyZSA9IHN3YXBjaGFpbi0+Z2V0T2Zmc2NyZWVuVGV4dHVyZSgpOworICAgIG1T
UlYgPSBzd2FwY2hhaW4tPmdldFJlbmRlclRhcmdldFNoYWRlclJlc291cmNlKCk7CisKKyAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVS
RV9MRVZFTFM7IGkrKykKKyAgICB7CisgICAgICAgIG1SZW5kZXJUYXJnZXRbaV0gPSBOVUxMOwor
ICAgIH0KKworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleERlc2M7CisgICAgbVRleHR1cmUt
PkdldERlc2MoJnRleERlc2MpOworICAgIG1NaXBMZXZlbHMgPSB0ZXhEZXNjLk1pcExldmVsczsK
KyAgICBtVGV4dHVyZUZvcm1hdCA9IHRleERlc2MuRm9ybWF0OworICAgIG1UZXh0dXJlV2lkdGgg
PSB0ZXhEZXNjLldpZHRoOworICAgIG1UZXh0dXJlSGVpZ2h0ID0gdGV4RGVzYy5IZWlnaHQ7CisK
KyAgICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHNydkRlc2M7CisgICAgbVNSVi0+
R2V0RGVzYygmc3J2RGVzYyk7CisgICAgbVNoYWRlclJlc291cmNlRm9ybWF0ID0gc3J2RGVzYy5G
b3JtYXQ7CisKKyAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3KiBvZmZzY3JlZW5SVFYgPSBzd2Fw
Y2hhaW4tPmdldFJlbmRlclRhcmdldCgpOworICAgIEQzRDExX1JFTkRFUl9UQVJHRVRfVklFV19E
RVNDIHJ0dkRlc2M7CisgICAgb2Zmc2NyZWVuUlRWLT5HZXREZXNjKCZydHZEZXNjKTsKKyAgICBt
UmVuZGVyVGFyZ2V0Rm9ybWF0ID0gcnR2RGVzYy5Gb3JtYXQ7CisgICAgb2Zmc2NyZWVuUlRWLT5S
ZWxlYXNlKCk7CisKKyAgICBtRGVwdGhTdGVuY2lsRm9ybWF0ID0gRFhHSV9GT1JNQVRfVU5LTk9X
TjsKK30KKworVGV4dHVyZVN0b3JhZ2UxMV8yRDo6VGV4dHVyZVN0b3JhZ2UxMV8yRChSZW5kZXJl
ciAqcmVuZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVz
YWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
CisgICAgOiBUZXh0dXJlU3RvcmFnZTExKHJlbmRlcmVyLCBHZXRUZXh0dXJlQmluZEZsYWdzKGds
X2QzZDExOjpDb252ZXJ0VGV4dHVyZUZvcm1hdChpbnRlcm5hbGZvcm1hdCksIHVzYWdlLCBmb3Jj
ZVJlbmRlcmFibGUpKQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2w6OklN
UExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQorICAgIHsKKyAgICAgICAgbVJl
bmRlclRhcmdldFtpXSA9IE5VTEw7CisgICAgfQorCisgICAgRFhHSV9GT1JNQVQgY29udmVydGVk
Rm9ybWF0ID0gZ2xfZDNkMTE6OkNvbnZlcnRUZXh0dXJlRm9ybWF0KGludGVybmFsZm9ybWF0KTsK
KyAgICBpZiAoZDNkMTE6OklzRGVwdGhTdGVuY2lsRm9ybWF0KGNvbnZlcnRlZEZvcm1hdCkpCisg
ICAgeworICAgICAgICBtVGV4dHVyZUZvcm1hdCA9IGQzZDExOjpHZXREZXB0aFRleHR1cmVGb3Jt
YXQoY29udmVydGVkRm9ybWF0KTsKKyAgICAgICAgbVNoYWRlclJlc291cmNlRm9ybWF0ID0gZDNk
MTE6OkdldERlcHRoU2hhZGVyUmVzb3VyY2VGb3JtYXQoY29udmVydGVkRm9ybWF0KTsKKyAgICAg
ICAgbURlcHRoU3RlbmNpbEZvcm1hdCA9IGNvbnZlcnRlZEZvcm1hdDsKKyAgICAgICAgbVJlbmRl
clRhcmdldEZvcm1hdCA9IERYR0lfRk9STUFUX1VOS05PV047CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIG1UZXh0dXJlRm9ybWF0ID0gY29udmVydGVkRm9ybWF0OworICAgICAgICBt
U2hhZGVyUmVzb3VyY2VGb3JtYXQgPSBjb252ZXJ0ZWRGb3JtYXQ7CisgICAgICAgIG1EZXB0aFN0
ZW5jaWxGb3JtYXQgPSBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAgICAgICBtUmVuZGVyVGFyZ2V0
Rm9ybWF0ID0gY29udmVydGVkRm9ybWF0OworICAgIH0KKworICAgIC8vIGlmIHRoZSB3aWR0aCBv
ciBoZWlnaHQgaXMgbm90IHBvc2l0aXZlIHRoaXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gaW5j
b21wbGV0ZSB0ZXh0dXJlCisgICAgLy8gd2UgaGFuZGxlIHRoYXQgaGVyZSBieSBza2lwcGluZyB0
aGUgZDNkIHRleHR1cmUgY3JlYXRpb24KKyAgICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDAp
CisgICAgeworICAgICAgICAvLyBhZGp1c3Qgc2l6ZSBpZiBuZWVkZWQgZm9yIGNvbXByZXNzZWQg
dGV4dHVyZXMKKyAgICAgICAgZ2w6Ok1ha2VWYWxpZFNpemUoZmFsc2UsIGdsOjpJc0NvbXByZXNz
ZWQoaW50ZXJuYWxmb3JtYXQpLCAmd2lkdGgsICZoZWlnaHQsICZtTG9kT2Zmc2V0KTsKKworICAg
ICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAg
ICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVzYzsKKyAgICAgICAgZGVzYy5XaWR0aCA9IHdp
ZHRoOyAgICAgIC8vIENvbXByZXNzZWQgdGV4dHVyZSBzaXplIGNvbnN0cmFpbnRzPworICAgICAg
ICBkZXNjLkhlaWdodCA9IGhlaWdodDsKKyAgICAgICAgZGVzYy5NaXBMZXZlbHMgPSAobGV2ZWxz
ID4gMCkgPyBsZXZlbHMgKyBtTG9kT2Zmc2V0IDogMDsKKyAgICAgICAgZGVzYy5BcnJheVNpemUg
PSAxOworICAgICAgICBkZXNjLkZvcm1hdCA9IG1UZXh0dXJlRm9ybWF0OworICAgICAgICBkZXNj
LlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICBkZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9
IDA7CisgICAgICAgIGRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOworICAgICAgICBk
ZXNjLkJpbmRGbGFncyA9IGdldEJpbmRGbGFncygpOworICAgICAgICBkZXNjLkNQVUFjY2Vzc0Zs
YWdzID0gMDsKKyAgICAgICAgZGVzYy5NaXNjRmxhZ3MgPSAwOworCisgICAgICAgIEhSRVNVTFQg
cmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlc2MsIE5VTEwsICZtVGV4dHVyZSk7
CisKKyAgICAgICAgLy8gdGhpcyBjYW4gaGFwcGVuIGZyb20gd2luZG93cyBURFIKKyAgICAgICAg
aWYgKGQzZDExOjppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQorICAgICAgICB7CisgICAgICAg
ICAgICBtUmVuZGVyZXItPm5vdGlmeURldmljZUxvc3QoKTsKKyAgICAgICAgICAgIGdsOjplcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChGQUlMRUQo
cmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9G
TUVNT1JZKTsKKyAgICAgICAgICAgIEVSUigiQ3JlYXRpbmcgaW1hZ2UgZmFpbGVkLiIpOworICAg
ICAgICAgICAgZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbVRleHR1cmUtPkdldERlc2MoJmRlc2MpOwor
ICAgICAgICAgICAgbU1pcExldmVscyA9IGRlc2MuTWlwTGV2ZWxzOworICAgICAgICAgICAgbVRl
eHR1cmVXaWR0aCA9IGRlc2MuV2lkdGg7CisgICAgICAgICAgICBtVGV4dHVyZUhlaWdodCA9IGRl
c2MuSGVpZ2h0OworICAgICAgICB9CisgICAgfQorfQorCitUZXh0dXJlU3RvcmFnZTExXzJEOjp+
VGV4dHVyZVN0b3JhZ2UxMV8yRCgpCit7CisgICAgaWYgKG1UZXh0dXJlKQorICAgIHsKKyAgICAg
ICAgbVRleHR1cmUtPlJlbGVhc2UoKTsKKyAgICAgICAgbVRleHR1cmUgPSBOVUxMOworICAgIH0K
KworICAgIGlmIChtU1JWKQorICAgIHsKKyAgICAgICAgbVNSVi0+UmVsZWFzZSgpOworICAgICAg
ICBtU1JWID0gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7IGkrKykKKyAgICB7CisgICAg
ICAgIGRlbGV0ZSBtUmVuZGVyVGFyZ2V0W2ldOworICAgICAgICBtUmVuZGVyVGFyZ2V0W2ldID0g
TlVMTDsKKyAgICB9Cit9CisKK1RleHR1cmVTdG9yYWdlMTFfMkQgKlRleHR1cmVTdG9yYWdlMTFf
MkQ6Om1ha2VUZXh0dXJlU3RvcmFnZTExXzJEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlKQorewor
ICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKFRleHR1cmVTdG9yYWdlMTFfMkQqLCBzdG9yYWdl
KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHR1cmVTdG9yYWdlMTFfMkQqPihzdG9yYWdl
KTsKK30KKworUmVuZGVyVGFyZ2V0ICpUZXh0dXJlU3RvcmFnZTExXzJEOjpnZXRSZW5kZXJUYXJn
ZXQoaW50IGxldmVsKQoreworICAgIGlmIChsZXZlbCA+PSAwICYmIGxldmVsIDwgc3RhdGljX2Nh
c3Q8aW50PihtTWlwTGV2ZWxzKSkKKyAgICB7CisgICAgICAgIGlmICghbVJlbmRlclRhcmdldFts
ZXZlbF0pCisgICAgICAgIHsKKyAgICAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJl
bmRlcmVyLT5nZXREZXZpY2UoKTsKKyAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0OworCisgICAg
ICAgICAgICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHNydkRlc2M7CisgICAgICAg
ICAgICBzcnZEZXNjLkZvcm1hdCA9IG1TaGFkZXJSZXNvdXJjZUZvcm1hdDsKKyAgICAgICAgICAg
IHNydkRlc2MuVmlld0RpbWVuc2lvbiA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJEOwor
ICAgICAgICAgICAgc3J2RGVzYy5UZXh0dXJlMkQuTW9zdERldGFpbGVkTWlwID0gbGV2ZWw7Cisg
ICAgICAgICAgICBzcnZEZXNjLlRleHR1cmUyRC5NaXBMZXZlbHMgPSAxOworCisgICAgICAgICAg
ICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydjsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRl
dmljZS0+Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KG1UZXh0dXJlLCAmc3J2RGVzYywgJnNydik7
CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIHN0
YXRpY19jYXN0PFJlbmRlclRhcmdldCo+KE5VTEwpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisKKyAgICAgICAgICAgIGlmIChtUmVuZGVy
VGFyZ2V0Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKKyAgICAg
ICAgICAgICAgICBydHZEZXNjLkZvcm1hdCA9IG1SZW5kZXJUYXJnZXRGb3JtYXQ7CisgICAgICAg
ICAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhU
VVJFMkQ7CisgICAgICAgICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkQuTWlwU2xpY2UgPSBsZXZl
bDsKKworICAgICAgICAgICAgICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnJ0djsKKyAgICAg
ICAgICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcobVRleHR1
cmUsICZydHZEZXNjLCAmcnR2KTsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9P
VVRPRk1FTU9SWSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNydi0+
UmVsZWFzZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9P
Rl9NRU1PUlksIHN0YXRpY19jYXN0PFJlbmRlclRhcmdldCo+KE5VTEwpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAg
ICAgICAgICAgICAgIC8vIFJlbmRlclRhcmdldDExIGV4cGVjdHMgdG8gYmUgdGhlIG93bmVyIG9m
IHRoZSByZXNvdXJjZXMgaXQgaXMgZ2l2ZW4gYnV0IFRleHR1cmVTdG9yYWdlMTEKKyAgICAgICAg
ICAgICAgICAvLyBhbHNvIG5lZWRzIHRvIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUu
CisgICAgICAgICAgICAgICAgbVRleHR1cmUtPkFkZFJlZigpOworCisgICAgICAgICAgICAgICAg
bVJlbmRlclRhcmdldFtsZXZlbF0gPSBuZXcgUmVuZGVyVGFyZ2V0MTEobVJlbmRlcmVyLCBydHYs
IG1UZXh0dXJlLCBzcnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptYXgobVRleHR1cmVXaWR0aCA+PiBsZXZlbCwgMVUpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bWF4KG1UZXh0dXJlSGVpZ2h0ID4+IGxldmVsLCAxVSkpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZSBpZiAobURlcHRoU3RlbmNpbEZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9V
TktOT1dOKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEQzRDExX0RFUFRIX1NURU5D
SUxfVklFV19ERVNDIGRzdkRlc2M7CisgICAgICAgICAgICAgICAgZHN2RGVzYy5Gb3JtYXQgPSBt
RGVwdGhTdGVuY2lsRm9ybWF0OworICAgICAgICAgICAgICAgIGRzdkRlc2MuVmlld0RpbWVuc2lv
biA9IEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJEOworICAgICAgICAgICAgICAgIGRzdkRl
c2MuVGV4dHVyZTJELk1pcFNsaWNlID0gbGV2ZWw7CisgICAgICAgICAgICAgICAgZHN2RGVzYy5G
bGFncyA9IDA7CisKKyAgICAgICAgICAgICAgICBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkc3Y7
CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVEZXB0aFN0ZW5jaWxWaWV3
KG1UZXh0dXJlLCAmZHN2RGVzYywgJmRzdik7CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0
ID09IEVfT1VUT0ZNRU1PUlkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBzcnYtPlJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjplcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCBzdGF0aWNfY2FzdDxSZW5kZXJUYXJnZXQqPihOVUxMKSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7
CisKKyAgICAgICAgICAgICAgICAvLyBSZW5kZXJUYXJnZXQxMSBleHBlY3RzIHRvIGJlIHRoZSBv
d25lciBvZiB0aGUgcmVzb3VyY2VzIGl0IGlzIGdpdmVuIGJ1dCBUZXh0dXJlU3RvcmFnZTExCisg
ICAgICAgICAgICAgICAgLy8gYWxzbyBuZWVkcyB0byBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSB0
ZXh0dXJlLgorICAgICAgICAgICAgICAgIG1UZXh0dXJlLT5BZGRSZWYoKTsKKworICAgICAgICAg
ICAgICAgIG1SZW5kZXJUYXJnZXRbbGV2ZWxdID0gbmV3IFJlbmRlclRhcmdldDExKG1SZW5kZXJl
ciwgZHN2LCBtVGV4dHVyZSwgc3J2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KG1UZXh0dXJlV2lkdGggPj4gbGV2ZWws
IDFVKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om1heChtVGV4dHVyZUhlaWdodCA+PiBsZXZlbCwgMVUpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IG1SZW5kZXJUYXJnZXRbbGV2ZWxdOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBy
ZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK0lEM0QxMVNoYWRlclJlc291cmNlVmlldyAqVGV4dHVy
ZVN0b3JhZ2UxMV8yRDo6Z2V0U1JWKCkKK3sKKyAgICBpZiAoIW1TUlYpCisgICAgeworICAgICAg
ICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICAg
ICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZEZXNjOworICAgICAgICBzcnZE
ZXNjLkZvcm1hdCA9IG1TaGFkZXJSZXNvdXJjZUZvcm1hdDsKKyAgICAgICAgc3J2RGVzYy5WaWV3
RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkQ7CisgICAgICAgIHNydkRl
c2MuVGV4dHVyZTJELk1pcExldmVscyA9IChtTWlwTGV2ZWxzID09IDAgPyAtMSA6IG1NaXBMZXZl
bHMpOworICAgICAgICBzcnZEZXNjLlRleHR1cmUyRC5Nb3N0RGV0YWlsZWRNaXAgPSAwOworCisg
ICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVTaGFkZXJSZXNvdXJjZVZpZXco
bVRleHR1cmUsICZzcnZEZXNjLCAmbVNSVik7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBFX09V
VE9GTUVNT1JZKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09V
VF9PRl9NRU1PUlksIHN0YXRpY19jYXN0PElEM0QxMVNoYWRlclJlc291cmNlVmlldyo+KE5VTEwp
KTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIH0K
KworICAgIHJldHVybiBtU1JWOworfQorCit2b2lkIFRleHR1cmVTdG9yYWdlMTFfMkQ6OmdlbmVy
YXRlTWlwbWFwKGludCBsZXZlbCkKK3sKKyAgICBSZW5kZXJUYXJnZXQxMSAqc291cmNlID0gUmVu
ZGVyVGFyZ2V0MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShnZXRSZW5kZXJUYXJnZXQobGV2ZWwgLSAx
KSk7CisgICAgUmVuZGVyVGFyZ2V0MTEgKmRlc3QgPSBSZW5kZXJUYXJnZXQxMTo6bWFrZVJlbmRl
clRhcmdldDExKGdldFJlbmRlclRhcmdldChsZXZlbCkpOworCisgICAgZ2VuZXJhdGVNaXBtYXBM
YXllcihzb3VyY2UsIGRlc3QpOworfQorCitUZXh0dXJlU3RvcmFnZTExX0N1YmU6OlRleHR1cmVT
dG9yYWdlMTFfQ3ViZShSZW5kZXJlciAqcmVuZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgaW50IHNpemUp
CisgICAgOiBUZXh0dXJlU3RvcmFnZTExKHJlbmRlcmVyLCBHZXRUZXh0dXJlQmluZEZsYWdzKGds
X2QzZDExOjpDb252ZXJ0VGV4dHVyZUZvcm1hdChpbnRlcm5hbGZvcm1hdCksIHVzYWdlLCBmb3Jj
ZVJlbmRlcmFibGUpKQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgNjsgaSsr
KQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCBnbDo6SU1QTEVN
RU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBqKyspCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1SZW5kZXJUYXJnZXRbaV1bal0gPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgRFhH
SV9GT1JNQVQgY29udmVydGVkRm9ybWF0ID0gZ2xfZDNkMTE6OkNvbnZlcnRUZXh0dXJlRm9ybWF0
KGludGVybmFsZm9ybWF0KTsKKyAgICBpZiAoZDNkMTE6OklzRGVwdGhTdGVuY2lsRm9ybWF0KGNv
bnZlcnRlZEZvcm1hdCkpCisgICAgeworICAgICAgICBtVGV4dHVyZUZvcm1hdCA9IGQzZDExOjpH
ZXREZXB0aFRleHR1cmVGb3JtYXQoY29udmVydGVkRm9ybWF0KTsKKyAgICAgICAgbVNoYWRlclJl
c291cmNlRm9ybWF0ID0gZDNkMTE6OkdldERlcHRoU2hhZGVyUmVzb3VyY2VGb3JtYXQoY29udmVy
dGVkRm9ybWF0KTsKKyAgICAgICAgbURlcHRoU3RlbmNpbEZvcm1hdCA9IGNvbnZlcnRlZEZvcm1h
dDsKKyAgICAgICAgbVJlbmRlclRhcmdldEZvcm1hdCA9IERYR0lfRk9STUFUX1VOS05PV047Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1UZXh0dXJlRm9ybWF0ID0gY29udmVydGVk
Rm9ybWF0OworICAgICAgICBtU2hhZGVyUmVzb3VyY2VGb3JtYXQgPSBjb252ZXJ0ZWRGb3JtYXQ7
CisgICAgICAgIG1EZXB0aFN0ZW5jaWxGb3JtYXQgPSBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAg
ICAgICBtUmVuZGVyVGFyZ2V0Rm9ybWF0ID0gY29udmVydGVkRm9ybWF0OworICAgIH0KKworICAg
IC8vIGlmIHRoZSBzaXplIGlzIG5vdCBwb3NpdGl2ZSB0aGlzIHNob3VsZCBiZSB0cmVhdGVkIGFz
IGFuIGluY29tcGxldGUgdGV4dHVyZQorICAgIC8vIHdlIGhhbmRsZSB0aGF0IGhlcmUgYnkgc2tp
cHBpbmcgdGhlIGQzZCB0ZXh0dXJlIGNyZWF0aW9uCisgICAgaWYgKHNpemUgPiAwKQorICAgIHsK
KyAgICAgICAgLy8gYWRqdXN0IHNpemUgaWYgbmVlZGVkIGZvciBjb21wcmVzc2VkIHRleHR1cmVz
CisgICAgICAgIGludCBoZWlnaHQgPSBzaXplOworICAgICAgICBnbDo6TWFrZVZhbGlkU2l6ZShm
YWxzZSwgZ2w6OklzQ29tcHJlc3NlZChpbnRlcm5hbGZvcm1hdCksICZzaXplLCAmaGVpZ2h0LCAm
bUxvZE9mZnNldCk7CisKKyAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXIt
PmdldERldmljZSgpOworCisgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIGRlc2M7CisgICAg
ICAgIGRlc2MuV2lkdGggPSBzaXplOworICAgICAgICBkZXNjLkhlaWdodCA9IHNpemU7CisgICAg
ICAgIGRlc2MuTWlwTGV2ZWxzID0gKGxldmVscyA+IDApID8gbGV2ZWxzICsgbUxvZE9mZnNldCA6
IDA7CisgICAgICAgIGRlc2MuQXJyYXlTaXplID0gNjsKKyAgICAgICAgZGVzYy5Gb3JtYXQgPSBt
VGV4dHVyZUZvcm1hdDsKKyAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKKyAgICAg
ICAgZGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAgICBkZXNjLlVzYWdlID0gRDNE
MTFfVVNBR0VfREVGQVVMVDsKKyAgICAgICAgZGVzYy5CaW5kRmxhZ3MgPSBnZXRCaW5kRmxhZ3Mo
KTsKKyAgICAgICAgZGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7CisgICAgICAgIGRlc2MuTWlzY0Zs
YWdzID0gRDNEMTFfUkVTT1VSQ0VfTUlTQ19URVhUVVJFQ1VCRTsKKworICAgICAgICBIUkVTVUxU
IHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZkZXNjLCBOVUxMLCAmbVRleHR1cmUp
OworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgICAgIEVSUigiQ3JlYXRp
bmcgaW1hZ2UgZmFpbGVkLiIpOworICAgICAgICAgICAgZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1P
UlkpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbVRl
eHR1cmUtPkdldERlc2MoJmRlc2MpOworICAgICAgICAgICAgbU1pcExldmVscyA9IGRlc2MuTWlw
TGV2ZWxzOworICAgICAgICAgICAgbVRleHR1cmVXaWR0aCA9IGRlc2MuV2lkdGg7CisgICAgICAg
ICAgICBtVGV4dHVyZUhlaWdodCA9IGRlc2MuSGVpZ2h0OworICAgICAgICB9CisgICAgfQorfQor
CitUZXh0dXJlU3RvcmFnZTExX0N1YmU6On5UZXh0dXJlU3RvcmFnZTExX0N1YmUoKQoreworICAg
IGlmIChtVGV4dHVyZSkKKyAgICB7CisgICAgICAgIG1UZXh0dXJlLT5SZWxlYXNlKCk7CisgICAg
ICAgIG1UZXh0dXJlID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobVNSVikKKyAgICB7CisgICAg
ICAgIG1TUlYtPlJlbGVhc2UoKTsKKyAgICAgICAgbVNSViA9IE5VTEw7CisgICAgfQorCisgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCA2OyBpKyspCisgICAgeworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBqID0gMDsgaiA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9M
RVZFTFM7IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgZGVsZXRlIG1SZW5kZXJUYXJnZXRb
aV1bal07CisgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0W2ldW2pdID0gTlVMTDsKKyAgICAgICAg
fQorICAgIH0KK30KKworVGV4dHVyZVN0b3JhZ2UxMV9DdWJlICpUZXh0dXJlU3RvcmFnZTExX0N1
YmU6Om1ha2VUZXh0dXJlU3RvcmFnZTExX0N1YmUoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UpCit7
CisgICAgQVNTRVJUKEhBU19EWU5BTUlDX1RZUEUoVGV4dHVyZVN0b3JhZ2UxMV9DdWJlKiwgc3Rv
cmFnZSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0dXJlU3RvcmFnZTExX0N1YmUqPihz
dG9yYWdlKTsKK30KKworUmVuZGVyVGFyZ2V0ICpUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmdldFJl
bmRlclRhcmdldChHTGVudW0gZmFjZVRhcmdldCwgaW50IGxldmVsKQoreworICAgIHVuc2lnbmVk
IGludCBmYWNlSWR4ID0gZ2w6OlRleHR1cmVDdWJlTWFwOjpmYWNlSW5kZXgoZmFjZVRhcmdldCk7
CisgICAgaWYgKGxldmVsID49IDAgJiYgbGV2ZWwgPCBzdGF0aWNfY2FzdDxpbnQ+KG1NaXBMZXZl
bHMpKQorICAgIHsKKyAgICAgICAgaWYgKCFtUmVuZGVyVGFyZ2V0W2ZhY2VJZHhdW2xldmVsXSkK
KyAgICAgICAgeworICAgICAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXIt
PmdldERldmljZSgpOworICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQ7CisKKyAgICAgICAgICAg
IEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc3J2RGVzYzsKKyAgICAgICAgICAgIHNy
dkRlc2MuRm9ybWF0ID0gbVNoYWRlclJlc291cmNlRm9ybWF0OworICAgICAgICAgICAgc3J2RGVz
Yy5WaWV3RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFQ1VCRTsKKyAgICAg
ICAgICAgIHNydkRlc2MuVGV4dHVyZTJEQXJyYXkuTW9zdERldGFpbGVkTWlwID0gbGV2ZWw7Cisg
ICAgICAgICAgICBzcnZEZXNjLlRleHR1cmUyREFycmF5Lk1pcExldmVscyA9IDE7CisgICAgICAg
ICAgICBzcnZEZXNjLlRleHR1cmUyREFycmF5LkZpcnN0QXJyYXlTbGljZSA9IGZhY2VJZHg7Cisg
ICAgICAgICAgICBzcnZEZXNjLlRleHR1cmUyREFycmF5LkFycmF5U2l6ZSA9IDE7CisKKyAgICAg
ICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2OworICAgICAgICAgICAgcmVzdWx0
ID0gZGV2aWNlLT5DcmVhdGVTaGFkZXJSZXNvdXJjZVZpZXcobVRleHR1cmUsICZzcnZEZXNjLCAm
c3J2KTsKKworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9S
WSwgc3RhdGljX2Nhc3Q8UmVuZGVyVGFyZ2V0Kj4oTlVMTCkpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgICAgICAgICAgaWYgKG1S
ZW5kZXJUYXJnZXRGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNjOwor
ICAgICAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ID0gbVJlbmRlclRhcmdldEZvcm1hdDsKKyAg
ICAgICAgICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gPSBEM0QxMV9SVFZfRElNRU5TSU9O
X1RFWFRVUkUyREFSUkFZOworICAgICAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJEQXJyYXku
TWlwU2xpY2UgPSBsZXZlbDsKKyAgICAgICAgICAgICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5
LkZpcnN0QXJyYXlTbGljZSA9IGZhY2VJZHg7CisgICAgICAgICAgICAgICAgcnR2RGVzYy5UZXh0
dXJlMkRBcnJheS5BcnJheVNpemUgPSAxOworCisgICAgICAgICAgICAgICAgSUQzRDExUmVuZGVy
VGFyZ2V0VmlldyAqcnR2OworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRl
UmVuZGVyVGFyZ2V0VmlldyhtVGV4dHVyZSwgJnJ0dkRlc2MsICZydHYpOworCisgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3J2LT5SZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6ZXJyb3IoR0xfT1VUX09GX01FTU9SWSwgc3RhdGljX2Nhc3Q8UmVuZGVyVGFyZ2V0
Kj4oTlVMTCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBBU1NFUlQoU1VD
Q0VFREVEKHJlc3VsdCkpOworCisgICAgICAgICAgICAgICAgLy8gUmVuZGVyVGFyZ2V0MTEgZXhw
ZWN0cyB0byBiZSB0aGUgb3duZXIgb2YgdGhlIHJlc291cmNlcyBpdCBpcyBnaXZlbiBidXQgVGV4
dHVyZVN0b3JhZ2UxMQorICAgICAgICAgICAgICAgIC8vIGFsc28gbmVlZHMgdG8ga2VlcCBhIHJl
ZmVyZW5jZSB0byB0aGUgdGV4dHVyZS4KKyAgICAgICAgICAgICAgICBtVGV4dHVyZS0+QWRkUmVm
KCk7CisKKyAgICAgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0W2ZhY2VJZHhdW2xldmVsXSA9IG5l
dyBSZW5kZXJUYXJnZXQxMShtUmVuZGVyZXIsIHJ0diwgbVRleHR1cmUsIHNydiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1heChtVGV4dHVyZVdpZHRoID4+IGxldmVsLCAxVSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
YXgobVRleHR1cmVIZWlnaHQgPj4gbGV2ZWwsIDFVKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIGlmIChtRGVwdGhTdGVuY2lsRm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04p
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9WSUVX
X0RFU0MgZHN2RGVzYzsKKyAgICAgICAgICAgICAgICBkc3ZEZXNjLkZvcm1hdCA9IG1SZW5kZXJU
YXJnZXRGb3JtYXQ7CisgICAgICAgICAgICAgICAgZHN2RGVzYy5WaWV3RGltZW5zaW9uID0gRDNE
MTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWTsKKyAgICAgICAgICAgICAgICBkc3ZEZXNj
LlRleHR1cmUyREFycmF5Lk1pcFNsaWNlID0gbGV2ZWw7CisgICAgICAgICAgICAgICAgZHN2RGVz
Yy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSBmYWNlSWR4OworICAgICAgICAgICAg
ICAgIGRzdkRlc2MuVGV4dHVyZTJEQXJyYXkuQXJyYXlTaXplID0gMTsKKworICAgICAgICAgICAg
ICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRzdjsKKyAgICAgICAgICAgICAgICByZXN1bHQg
PSBkZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFZpZXcobVRleHR1cmUsICZkc3ZEZXNjLCAmZHN2
KTsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNydi0+UmVsZWFzZSgpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OmVycm9yKEdMX09VVF9PRl9NRU1PUlksIHN0YXRpY19j
YXN0PFJlbmRlclRhcmdldCo+KE5VTEwpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKworICAgICAgICAgICAgICAgIC8vIFJl
bmRlclRhcmdldDExIGV4cGVjdHMgdG8gYmUgdGhlIG93bmVyIG9mIHRoZSByZXNvdXJjZXMgaXQg
aXMgZ2l2ZW4gYnV0IFRleHR1cmVTdG9yYWdlMTEKKyAgICAgICAgICAgICAgICAvLyBhbHNvIG5l
ZWRzIHRvIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUuCisgICAgICAgICAgICAgICAg
bVRleHR1cmUtPkFkZFJlZigpOworCisgICAgICAgICAgICAgICAgbVJlbmRlclRhcmdldFtmYWNl
SWR4XVtsZXZlbF0gPSBuZXcgUmVuZGVyVGFyZ2V0MTEobVJlbmRlcmVyLCBkc3YsIG1UZXh0dXJl
LCBzcnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjptYXgobVRleHR1cmVXaWR0aCA+PiBsZXZlbCwgMVUpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bWF4KG1UZXh0dXJlSGVpZ2h0ID4+IGxldmVsLCAxVSkpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gbVJlbmRlclRhcmdldFtmYWNlSWR4XVtsZXZlbF07CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworSUQzRDExU2hhZGVyUmVzb3VyY2VW
aWV3ICpUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmdldFNSVigpCit7CisgICAgaWYgKCFtU1JWKQor
ICAgIHsKKyAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmlj
ZSgpOworCisgICAgICAgIEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc3J2RGVzYzsK
KyAgICAgICAgc3J2RGVzYy5Gb3JtYXQgPSBtU2hhZGVyUmVzb3VyY2VGb3JtYXQ7CisgICAgICAg
IHNydkRlc2MuVmlld0RpbWVuc2lvbiA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRUNVQkU7
CisgICAgICAgIHNydkRlc2MuVGV4dHVyZUN1YmUuTWlwTGV2ZWxzID0gKG1NaXBMZXZlbHMgPT0g
MCA/IC0xIDogbU1pcExldmVscyk7CisgICAgICAgIHNydkRlc2MuVGV4dHVyZUN1YmUuTW9zdERl
dGFpbGVkTWlwID0gMDsKKworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRl
U2hhZGVyUmVzb3VyY2VWaWV3KG1UZXh0dXJlLCAmc3J2RGVzYywgJm1TUlYpOworCisgICAgICAg
IGlmIChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGdsOjplcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCBzdGF0aWNfY2FzdDxJRDNEMTFTaGFkZXJS
ZXNvdXJjZVZpZXcqPihOVUxMKSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKFNVQ0NFRURF
RChyZXN1bHQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbVNSVjsKK30KKwordm9pZCBUZXh0dXJl
U3RvcmFnZTExX0N1YmU6OmdlbmVyYXRlTWlwbWFwKGludCBmYWNlLCBpbnQgbGV2ZWwpCit7Cisg
ICAgUmVuZGVyVGFyZ2V0MTEgKnNvdXJjZSA9IFJlbmRlclRhcmdldDExOjptYWtlUmVuZGVyVGFy
Z2V0MTEoZ2V0UmVuZGVyVGFyZ2V0KEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGZh
Y2UsIGxldmVsIC0gMSkpOworICAgIFJlbmRlclRhcmdldDExICpkZXN0ID0gUmVuZGVyVGFyZ2V0
MTE6Om1ha2VSZW5kZXJUYXJnZXQxMShnZXRSZW5kZXJUYXJnZXQoR0xfVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9YICsgZmFjZSwgbGV2ZWwpKTsKKworICAgIGdlbmVyYXRlTWlwbWFwTGF5ZXIo
c291cmNlLCBkZXN0KTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZTExLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFn
ZTExLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL1RleHR1cmVTdG9yYWdlMTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MjAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBUZXh0dXJlU3RvcmFnZTExLmg6IERlZmluZXMgdGhl
IGFic3RyYWN0IHJ4OjpUZXh0dXJlU3RvcmFnZTExIGNsYXNzIGFuZCBpdHMgY29uY3JldGUgZGVy
aXZlZAorLy8gY2xhc3NlcyBUZXh0dXJlU3RvcmFnZTExXzJEIGFuZCBUZXh0dXJlU3RvcmFnZTEx
X0N1YmUsIHdoaWNoIGFjdCBhcyB0aGUgaW50ZXJmYWNlIHRvIHRoZSBEM0QxMSB0ZXh0dXJlLgor
CisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9URVhUVVJFU1RPUkFHRTExX0hfCisjZGVmaW5l
IExJQkdMRVNWMl9SRU5ERVJFUl9URVhUVVJFU1RPUkFHRTExX0hfCisKKyNpbmNsdWRlICJsaWJH
TEVTdjIvVGV4dHVyZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3Rv
cmFnZS5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlclRhcmdldDsKK2NsYXNzIFJl
bmRlclRhcmdldDExOworY2xhc3MgUmVuZGVyZXI7CitjbGFzcyBSZW5kZXJlcjExOworY2xhc3Mg
U3dhcENoYWluMTE7CisKK2NsYXNzIFRleHR1cmVTdG9yYWdlMTEgOiBwdWJsaWMgVGV4dHVyZVN0
b3JhZ2UKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlMTEoUmVuZGVyZXIgKnJlbmRl
cmVyLCBVSU5UIGJpbmRGbGFncyk7CisgICAgdmlydHVhbCB+VGV4dHVyZVN0b3JhZ2UxMSgpOwor
CisgICAgc3RhdGljIFRleHR1cmVTdG9yYWdlMTEgKm1ha2VUZXh0dXJlU3RvcmFnZTExKFRleHR1
cmVTdG9yYWdlICpzdG9yYWdlKTsKKworICAgIHN0YXRpYyBEV09SRCBHZXRUZXh0dXJlQmluZEZs
YWdzKERYR0lfRk9STUFUIGQzZGZtdCwgR0xlbnVtIGdsdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJh
YmxlKTsKKyAgICBzdGF0aWMgYm9vbCBJc1RleHR1cmVGb3JtYXRSZW5kZXJhYmxlKERYR0lfRk9S
TUFUIGZvcm1hdCk7CisKKyAgICBVSU5UIGdldEJpbmRGbGFncygpIGNvbnN0OworCisgICAgdmly
dHVhbCBJRDNEMTFUZXh0dXJlMkQgKmdldEJhc2VUZXh0dXJlKCkgY29uc3Q7CisgICAgdmlydHVh
bCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmdldFNSVigpID0gMDsKKyAgICB2aXJ0dWFsIFJl
bmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KCkgeyByZXR1cm4gZ2V0UmVuZGVyVGFyZ2V0KDAp
OyB9CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChpbnQgbGV2ZWwp
IHsgcmV0dXJuIE5VTEw7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFy
Z2V0KEdMZW51bSBmYWNlVGFyZ2V0KSB7IHJldHVybiBnZXRSZW5kZXJUYXJnZXQoZmFjZVRhcmdl
dCwgMCk7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclRhcmdldCAqZ2V0UmVuZGVyVGFyZ2V0KEdMZW51
bSBmYWNlVGFyZ2V0LCBpbnQgbGV2ZWwpIHsgcmV0dXJuIE5VTEw7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBnZW5lcmF0ZU1pcG1hcChpbnQgbGV2ZWwpIHt9OworICAgIHZpcnR1YWwgdm9pZCBnZW5l
cmF0ZU1pcG1hcChpbnQgZmFjZSwgaW50IGxldmVsKSB7fTsKKworICAgIHZpcnR1YWwgaW50IGdl
dExvZE9mZnNldCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclRhcmdldCgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBpc01hbmFnZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGlu
dCBsZXZlbENvdW50KCk7CisgICAgVUlOVCBnZXRTdWJyZXNvdXJjZUluZGV4KGludCBsZXZlbCwg
aW50IGZhY2VUYXJnZXQpOworCisgICAgYm9vbCB1cGRhdGVTdWJyZXNvdXJjZUxldmVsKElEM0Qx
MVRleHR1cmUyRCAqdGV4dHVyZSwgdW5zaWduZWQgaW50IHNvdXJjZVN1YnJlc291cmNlLCBpbnQg
bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmYWNlVGFyZ2V0LCBH
TGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCk7CisKKyAgcHJvdGVjdGVkOgorICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXBMYXllcihSZW5kZXJU
YXJnZXQxMSAqc291cmNlLCBSZW5kZXJUYXJnZXQxMSAqZGVzdCk7CisKKyAgICBSZW5kZXJlcjEx
ICptUmVuZGVyZXI7CisgICAgaW50IG1Mb2RPZmZzZXQ7CisgICAgdW5zaWduZWQgaW50IG1NaXBM
ZXZlbHM7CisKKyAgICBJRDNEMTFUZXh0dXJlMkQgKm1UZXh0dXJlOworICAgIERYR0lfRk9STUFU
IG1UZXh0dXJlRm9ybWF0OworICAgIERYR0lfRk9STUFUIG1TaGFkZXJSZXNvdXJjZUZvcm1hdDsK
KyAgICBEWEdJX0ZPUk1BVCBtUmVuZGVyVGFyZ2V0Rm9ybWF0OworICAgIERYR0lfRk9STUFUIG1E
ZXB0aFN0ZW5jaWxGb3JtYXQ7CisgICAgdW5zaWduZWQgaW50IG1UZXh0dXJlV2lkdGg7CisgICAg
dW5zaWduZWQgaW50IG1UZXh0dXJlSGVpZ2h0OworCisgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VW
aWV3ICptU1JWOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRl
eHR1cmVTdG9yYWdlMTEpOworCisgICAgY29uc3QgVUlOVCBtQmluZEZsYWdzOworfTsKKworY2xh
c3MgVGV4dHVyZVN0b3JhZ2UxMV8yRCA6IHB1YmxpYyBUZXh0dXJlU3RvcmFnZTExCit7CisgIHB1
YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZTExXzJEKFJlbmRlcmVyICpyZW5kZXJlciwgU3dhcENo
YWluMTEgKnN3YXBjaGFpbik7CisgICAgVGV4dHVyZVN0b3JhZ2UxMV8yRChSZW5kZXJlciAqcmVu
ZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBi
b29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworICAg
IHZpcnR1YWwgflRleHR1cmVTdG9yYWdlMTFfMkQoKTsKKworICAgIHN0YXRpYyBUZXh0dXJlU3Rv
cmFnZTExXzJEICptYWtlVGV4dHVyZVN0b3JhZ2UxMV8yRChUZXh0dXJlU3RvcmFnZSAqc3RvcmFn
ZSk7CisKKyAgICB2aXJ0dWFsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqZ2V0U1JWKCk7Cisg
ICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChpbnQgbGV2ZWwpOworCisg
ICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlwbWFwKGludCBsZXZlbCk7CisKKyAgcHJpdmF0ZToK
KyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZVN0b3JhZ2UxMV8yRCk7CisKKyAg
ICBSZW5kZXJUYXJnZXQxMSAqbVJlbmRlclRhcmdldFtnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RF
WFRVUkVfTEVWRUxTXTsKK307CisKK2NsYXNzIFRleHR1cmVTdG9yYWdlMTFfQ3ViZSA6IHB1Ymxp
YyBUZXh0dXJlU3RvcmFnZTExCit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZTExX0N1
YmUoUmVuZGVyZXIgKnJlbmRlcmVyLCBpbnQgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMZW51bSB1c2FnZSwgYm9vbCBmb3JjZVJlbmRlcmFibGUsIGludCBzaXplKTsKKyAgICB2aXJ0
dWFsIH5UZXh0dXJlU3RvcmFnZTExX0N1YmUoKTsKKworICAgIHN0YXRpYyBUZXh0dXJlU3RvcmFn
ZTExX0N1YmUgKm1ha2VUZXh0dXJlU3RvcmFnZTExX0N1YmUoVGV4dHVyZVN0b3JhZ2UgKnN0b3Jh
Z2UpOworCisgICAgdmlydHVhbCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmdldFNSVigpOwor
ICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJnZXQoR0xlbnVtIGZhY2VUYXJn
ZXQsIGludCBsZXZlbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVNaXBtYXAoaW50IGZh
Y2UsIGludCBsZXZlbCk7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oVGV4dHVyZVN0b3JhZ2UxMV9DdWJlKTsKKworICAgIFJlbmRlclRhcmdldDExICptUmVuZGVy
VGFyZ2V0WzZdW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFNdOworfTsKKwor
fQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1RFWFRVUkVTVE9SQUdFMTFfSF8KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVy
ZVN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvVGV4dHVyZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFn
ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIyIEBACisjaW5jbHVkZSAicHJlY29tcGls
ZWQuaCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFRleHR1cmVTdG9yYWdlLmNwcDogSW1wbGVt
ZW50cyB0aGUgYWJzdHJhY3Qgcng6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlIGNsYXNzIGFuZCBp
dHMgY29uY3JldGUgZGVyaXZlZAorLy8gY2xhc3NlcyBUZXh0dXJlU3RvcmFnZUludGVyZmFjZTJE
IGFuZCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUsIHdoaWNoIGFjdCBhcyB0aGUgaW50ZXJm
YWNlIHRvIHRoZQorLy8gR1BVLXNpZGUgdGV4dHVyZS4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9y
ZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9S
ZW5kZXJlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRl
ICJsaWJHTEVTdjIvVGV4dHVyZS5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25h
bWVzcGFjZSByeAorewordW5zaWduZWQgaW50IFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlOjptQ3Vy
cmVudFRleHR1cmVTZXJpYWwgPSAxOworCitUZXh0dXJlU3RvcmFnZUludGVyZmFjZTo6VGV4dHVy
ZVN0b3JhZ2VJbnRlcmZhY2UoKQorICAgIDogbVRleHR1cmVTZXJpYWwoaXNzdWVUZXh0dXJlU2Vy
aWFsKCkpLAorICAgICAgbUluc3RhbmNlKE5VTEwpCit7Cit9CisKK1RleHR1cmVTdG9yYWdlSW50
ZXJmYWNlOjp+VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UoKQoreworICAgIGRlbGV0ZSBtSW5zdGFu
Y2U7Cit9CisKK2Jvb2wgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OmlzUmVuZGVyVGFyZ2V0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbUluc3RhbmNlLT5pc1JlbmRlclRhcmdldCgpOworfQorCisK
K2Jvb2wgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OmlzTWFuYWdlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1JbnN0YW5jZS0+aXNNYW5hZ2VkKCk7Cit9CisKK3Vuc2lnbmVkIGludCBUZXh0dXJl
U3RvcmFnZUludGVyZmFjZTo6Z2V0VGV4dHVyZVNlcmlhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1UZXh0dXJlU2VyaWFsOworfQorCit1bnNpZ25lZCBpbnQgVGV4dHVyZVN0b3JhZ2VJbnRlcmZh
Y2U6Omlzc3VlVGV4dHVyZVNlcmlhbCgpCit7CisgICAgcmV0dXJuIG1DdXJyZW50VGV4dHVyZVNl
cmlhbCsrOworfQorCitpbnQgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2U6OmdldExvZE9mZnNldCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0TG9kT2Zmc2V0KCk7Cit9CisKKwor
aW50IFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlOjpsZXZlbENvdW50KCkKK3sKKyAgICByZXR1cm4g
bUluc3RhbmNlLT5sZXZlbENvdW50KCk7Cit9CisKK1RleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ6
OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQoUmVuZGVyZXIgKnJlbmRlcmVyLCBTd2FwQ2hhaW4g
KnN3YXBjaGFpbikgCisgICAgOiBtUmVuZGVyVGFyZ2V0U2VyaWFsKGdsOjpSZW5kZXJidWZmZXJT
dG9yYWdlOjppc3N1ZVNlcmlhbCgpKQoreworICAgIG1JbnN0YW5jZSA9IHJlbmRlcmVyLT5jcmVh
dGVUZXh0dXJlU3RvcmFnZTJEKHN3YXBjaGFpbik7Cit9CisKK1RleHR1cmVTdG9yYWdlSW50ZXJm
YWNlMkQ6OlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQoUmVuZGVyZXIgKnJlbmRlcmVyLCBpbnQg
bGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSB1c2FnZSwgYm9vbCBmb3JjZVJl
bmRlcmFibGUsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQorICAgIDogbVJlbmRlclRh
cmdldFNlcmlhbChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZTo6aXNzdWVTZXJpYWwoKSkKK3sKKyAg
ICBtSW5zdGFuY2UgPSByZW5kZXJlci0+Y3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChsZXZlbHMsIGlu
dGVybmFsZm9ybWF0LCB1c2FnZSwgZm9yY2VSZW5kZXJhYmxlLCB3aWR0aCwgaGVpZ2h0KTsKK30K
KworVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDo6flRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQo
KQoreworfQorCitSZW5kZXJUYXJnZXQgKlRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQ6OmdldFJl
bmRlclRhcmdldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0UmVuZGVyVGFy
Z2V0KCk7Cit9CisKK3ZvaWQgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDo6Z2VuZXJhdGVNaXBt
YXAoaW50IGxldmVsKQoreworICAgIG1JbnN0YW5jZS0+Z2VuZXJhdGVNaXBtYXAobGV2ZWwpOwor
fQorCit1bnNpZ25lZCBpbnQgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UyRDo6Z2V0UmVuZGVyVGFy
Z2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJUYXJn
ZXRTZXJpYWw7Cit9CisKK1RleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6VGV4dHVyZVN0b3Jh
Z2VJbnRlcmZhY2VDdWJlKFJlbmRlcmVyICpyZW5kZXJlciwgaW50IGxldmVscywgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHTGVudW0gdXNhZ2UsIGJvb2wgZm9yY2VSZW5kZXJhYmxlLCBpbnQgc2l6
ZSkKKyAgICA6IG1GaXJzdFJlbmRlclRhcmdldFNlcmlhbChnbDo6UmVuZGVyYnVmZmVyU3RvcmFn
ZTo6aXNzdWVDdWJlU2VyaWFscygpKQoreworICAgIG1JbnN0YW5jZSA9IHJlbmRlcmVyLT5jcmVh
dGVUZXh0dXJlU3RvcmFnZUN1YmUobGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgdXNhZ2UsIGZvcmNl
UmVuZGVyYWJsZSwgc2l6ZSk7Cit9CisKK1RleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6flRl
eHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSgpCit7Cit9CisKK1JlbmRlclRhcmdldCAqVGV4dHVy
ZVN0b3JhZ2VJbnRlcmZhY2VDdWJlOjpnZXRSZW5kZXJUYXJnZXQoR0xlbnVtIGZhY2VUYXJnZXQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0UmVuZGVyVGFyZ2V0KGZhY2VUYXJn
ZXQpOworfQorCit2b2lkIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZTo6Z2VuZXJhdGVNaXBt
YXAoaW50IGZhY2UsIGludCBsZXZlbCkKK3sKKyAgICBtSW5zdGFuY2UtPmdlbmVyYXRlTWlwbWFw
KGZhY2UsIGxldmVsKTsKK30KKwordW5zaWduZWQgaW50IFRleHR1cmVTdG9yYWdlSW50ZXJmYWNl
Q3ViZTo6Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1GaXJzdFJlbmRlclRhcmdldFNlcmlhbCArIGdsOjpUZXh0dXJlQ3ViZU1hcDo6ZmFj
ZUluZGV4KHRhcmdldCk7Cit9CisKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1RleHR1cmVT
dG9yYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9UZXh0dXJlU3RvcmFnZS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVGV4
dHVyZVN0b3JhZ2UuaDogRGVmaW5lcyB0aGUgYWJzdHJhY3Qgcng6OlRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlIGNsYXNzIGFuZCBpdHMgY29uY3JldGUgZGVyaXZlZAorLy8gY2xhc3NlcyBUZXh0dXJl
U3RvcmFnZUludGVyZmFjZTJEIGFuZCBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUsIHdoaWNo
IGFjdCBhcyB0aGUgaW50ZXJmYWNlIHRvIHRoZQorLy8gR1BVLXNpZGUgdGV4dHVyZS4KKworI2lm
bmRlZiBMSUJHTEVTVjJfUkVOREVSRVJfVEVYVFVSRVNUT1JBR0VfSF8KKyNkZWZpbmUgTElCR0xF
U1YyX1JFTkRFUkVSX1RFWFRVUkVTVE9SQUdFX0hfCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcu
aCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBSZW5kZXJlcjsKK2NsYXNzIFN3YXBDaGFpbjsK
K2NsYXNzIFJlbmRlclRhcmdldDsKK2NsYXNzIEJsaXQ7CisKK2NsYXNzIFRleHR1cmVTdG9yYWdl
Cit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlU3RvcmFnZSgpIHt9OworICAgIHZpcnR1YWwgflRl
eHR1cmVTdG9yYWdlKCkge307CisKKyAgICB2aXJ0dWFsIGludCBnZXRMb2RPZmZzZXQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyVGFyZ2V0KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc01hbmFnZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbGV2
ZWxDb3VudCgpID0gMDsKKworICAgIHZpcnR1YWwgUmVuZGVyVGFyZ2V0ICpnZXRSZW5kZXJUYXJn
ZXQoKSA9IDA7CisgICAgdmlydHVhbCBSZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldChHTGVu
dW0gZmFjZVRhcmdldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcChpbnQg
bGV2ZWwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVNaXBtYXAoaW50IGZhY2UsIGlu
dCBsZXZlbCkgPSAwOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
KFRleHR1cmVTdG9yYWdlKTsKKworfTsKKworY2xhc3MgVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UK
K3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlKCk7CisgICAgdmlydHVh
bCB+VGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UoKTsKKworICAgIFRleHR1cmVTdG9yYWdlICpnZXRT
dG9yYWdlSW5zdGFuY2UoKSB7IHJldHVybiBtSW5zdGFuY2U7IH0KKworICAgIHVuc2lnbmVkIGlu
dCBnZXRUZXh0dXJlU2VyaWFsKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0
UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1
YWwgaW50IGdldExvZE9mZnNldCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclRh
cmdldCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc01hbmFnZWQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGludCBsZXZlbENvdW50KCk7CisKKyAgcHJvdGVjdGVkOgorICAgIFRleHR1cmVTdG9y
YWdlICptSW5zdGFuY2U7CisKKyAgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJ
R04oVGV4dHVyZVN0b3JhZ2VJbnRlcmZhY2UpOworCisgICAgY29uc3QgdW5zaWduZWQgaW50IG1U
ZXh0dXJlU2VyaWFsOworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXNzdWVUZXh0dXJlU2VyaWFs
KCk7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IG1DdXJyZW50VGV4dHVyZVNlcmlhbDsKK307
CisKK2NsYXNzIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQgOiBwdWJsaWMgVGV4dHVyZVN0b3Jh
Z2VJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlSW50ZXJmYWNlMkQo
UmVuZGVyZXIgKnJlbmRlcmVyLCBTd2FwQ2hhaW4gKnN3YXBjaGFpbik7CisgICAgVGV4dHVyZVN0
b3JhZ2VJbnRlcmZhY2UyRChSZW5kZXJlciAqcmVuZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworICAgIHZpcnR1YWwgflRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlMkQoKTsKKworICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAoaW50IGxldmVsKTsKKyAgICBS
ZW5kZXJUYXJnZXQgKmdldFJlbmRlclRhcmdldCgpIGNvbnN0OworCisgICAgdmlydHVhbCB1bnNp
Z25lZCBpbnQgZ2V0UmVuZGVyVGFyZ2V0U2VyaWFsKEdMZW51bSB0YXJnZXQpIGNvbnN0OworCisg
IHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRleHR1cmVTdG9yYWdlSW50
ZXJmYWNlMkQpOworCisgICAgY29uc3QgdW5zaWduZWQgaW50IG1SZW5kZXJUYXJnZXRTZXJpYWw7
Cit9OworCitjbGFzcyBUZXh0dXJlU3RvcmFnZUludGVyZmFjZUN1YmUgOiBwdWJsaWMgVGV4dHVy
ZVN0b3JhZ2VJbnRlcmZhY2UKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVTdG9yYWdlSW50ZXJm
YWNlQ3ViZShSZW5kZXJlciAqcmVuZGVyZXIsIGludCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0xlbnVtIHVzYWdlLCBib29sIGZvcmNlUmVuZGVyYWJsZSwgaW50IHNpemUpOworICAg
IHZpcnR1YWwgflRleHR1cmVTdG9yYWdlSW50ZXJmYWNlQ3ViZSgpOworCisgICAgdm9pZCBnZW5l
cmF0ZU1pcG1hcChpbnQgZmFjZSwgaW50IGxldmVsKTsKKyAgICBSZW5kZXJUYXJnZXQgKmdldFJl
bmRlclRhcmdldChHTGVudW0gZmFjZVRhcmdldCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGludCBnZXRSZW5kZXJUYXJnZXRTZXJpYWwoR0xlbnVtIHRhcmdldCkgY29uc3Q7CisKKyAg
cHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVGV4dHVyZVN0b3JhZ2VJbnRl
cmZhY2VDdWJlKTsKKworICAgIGNvbnN0IHVuc2lnbmVkIGludCBtRmlyc3RSZW5kZXJUYXJnZXRT
ZXJpYWw7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJHTEVTVjJfUkVOREVSRVJfVEVYVFVSRVNU
T1JBR0VfSF8KKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9W
ZXJ0ZXhCdWZmZXI5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0ODYgQEAKKyNpbmNsdWRl
ICJwcmVjb21waWxlZC5oIgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVmVydGV4QnVmZmVyOS5j
cHA6IERlZmluZXMgdGhlIEQzRDkgVmVydGV4QnVmZmVyIGltcGxlbWVudGF0aW9uLgorCisjaW5j
bHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuaCIKKyNpbmNsdWRlICJsaWJH
TEVTdjIvcmVuZGVyZXIvdmVydGV4Y29udmVyc2lvbi5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9y
ZW5kZXJlci9CdWZmZXJTdG9yYWdlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIK
KyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvUmVuZGVyZXI5LmgiCisKKyNpbmNsdWRlICJs
aWJHTEVTdjIvQnVmZmVyLmgiCisKK25hbWVzcGFjZSByeAoreworCitib29sIFZlcnRleEJ1ZmZl
cjk6Om1UcmFuc2xhdGlvbnNJbml0aWFsaXplZCA9IGZhbHNlOworVmVydGV4QnVmZmVyOTo6Rm9y
bWF0Q29udmVydGVyIFZlcnRleEJ1ZmZlcjk6Om1Gb3JtYXRDb252ZXJ0ZXJzW05VTV9HTF9WRVJU
RVhfQVRUUklCX1RZUEVTXVsyXVs0XTsKKworVmVydGV4QnVmZmVyOTo6VmVydGV4QnVmZmVyOShy
eDo6UmVuZGVyZXI5ICpjb25zdCByZW5kZXJlcikgOiBtUmVuZGVyZXIocmVuZGVyZXIpCit7Cisg
ICAgbVZlcnRleEJ1ZmZlciA9IE5VTEw7CisgICAgbUJ1ZmZlclNpemUgPSAwOworICAgIG1EeW5h
bWljVXNhZ2UgPSBmYWxzZTsKKworICAgIGlmICghbVRyYW5zbGF0aW9uc0luaXRpYWxpemVkKQor
ICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZVRyYW5zbGF0aW9ucyhyZW5kZXJlci0+Z2V0Q2Fwc0Rl
Y2xUeXBlcygpKTsKKyAgICAgICAgbVRyYW5zbGF0aW9uc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAg
ICB9Cit9CisKK1ZlcnRleEJ1ZmZlcjk6On5WZXJ0ZXhCdWZmZXI5KCkKK3sKKyAgICBpZiAobVZl
cnRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIG1WZXJ0ZXhCdWZmZXItPlJlbGVhc2UoKTsKKyAg
ICAgICAgbVZlcnRleEJ1ZmZlciA9IE5VTEw7CisgICAgfQorfQorCitib29sIFZlcnRleEJ1ZmZl
cjk6OmluaXRpYWxpemUodW5zaWduZWQgaW50IHNpemUsIGJvb2wgZHluYW1pY1VzYWdlKQorewor
ICAgIGlmIChtVmVydGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgbVZlcnRleEJ1ZmZlci0+UmVs
ZWFzZSgpOworICAgICAgICBtVmVydGV4QnVmZmVyID0gTlVMTDsKKyAgICB9CisKKyAgICB1cGRh
dGVTZXJpYWwoKTsKKworICAgIGlmIChzaXplID4gMCkKKyAgICB7CisgICAgICAgIERXT1JEIGZs
YWdzID0gRDNEVVNBR0VfV1JJVEVPTkxZOworICAgICAgICBpZiAoZHluYW1pY1VzYWdlKQorICAg
ICAgICB7CisgICAgICAgICAgICBmbGFncyB8PSBEM0RVU0FHRV9EWU5BTUlDOworICAgICAgICB9
CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtUmVuZGVyZXItPmNyZWF0ZVZlcnRleEJ1ZmZl
cihzaXplLCBmbGFncywgJm1WZXJ0ZXhCdWZmZXIpOworCisgICAgICAgIGlmIChGQUlMRUQocmVz
dWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCJPdXQgb2YgbWVtb3J5IGFsbG9jYXRp
bmcgYSB2ZXJ0ZXggYnVmZmVyIG9mIHNpemUgJWx1LiIsIHNpemUpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgbUJ1ZmZlclNpemUgPSBzaXplOwor
ICAgIG1EeW5hbWljVXNhZ2UgPSBkeW5hbWljVXNhZ2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K1ZlcnRleEJ1ZmZlcjkgKlZlcnRleEJ1ZmZlcjk6Om1ha2VWZXJ0ZXhCdWZmZXI5KFZlcnRleEJ1
ZmZlciAqdmVydGV4QnVmZmVyKQoreworICAgIEFTU0VSVChIQVNfRFlOQU1JQ19UWVBFKFZlcnRl
eEJ1ZmZlcjkqLCB2ZXJ0ZXhCdWZmZXIpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmVydGV4
QnVmZmVyOSo+KHZlcnRleEJ1ZmZlcik7Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVyOTo6c3RvcmVW
ZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQg
c3RhcnQsIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAg
ICBpZiAobVZlcnRleEJ1ZmZlcikKKyAgICB7CisgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9
IGF0dHJpYi5tQm91bmRCdWZmZXIuZ2V0KCk7CisKKyAgICAgICAgaW50IGlucHV0U3RyaWRlID0g
YXR0cmliLnN0cmlkZSgpOworICAgICAgICBpbnQgZWxlbWVudFNpemUgPSBhdHRyaWIudHlwZVNp
emUoKTsKKyAgICAgICAgY29uc3QgRm9ybWF0Q29udmVydGVyICZjb252ZXJ0ZXIgPSBmb3JtYXRD
b252ZXJ0ZXIoYXR0cmliKTsKKworICAgICAgICBEV09SRCBsb2NrRmxhZ3MgPSBtRHluYW1pY1Vz
YWdlID8gRDNETE9DS19OT09WRVJXUklURSA6IDA7CisKKyAgICAgICAgdm9pZCAqbWFwUHRyID0g
TlVMTDsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtVmVydGV4QnVmZmVyLT5Mb2NrKG9mZnNl
dCwgc3BhY2VSZXF1aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMpLCAmbWFwUHRyLCBsb2Nr
RmxhZ3MpOworCisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAg
ICAgICAgRVJSKCJMb2NrIGZhaWxlZCB3aXRoIGVycm9yIDB4JTA4eCIsIHJlc3VsdCk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBjaGFyICpp
bnB1dCA9IE5VTEw7CisgICAgICAgIGlmIChidWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEJ1ZmZlclN0b3JhZ2UgKnN0b3JhZ2UgPSBidWZmZXItPmdldFN0b3JhZ2UoKTsKKyAgICAgICAg
ICAgIGlucHV0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHN0b3JhZ2UtPmdldERhdGEoKSkg
KyBzdGF0aWNfY2FzdDxpbnQ+KGF0dHJpYi5tT2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlucHV0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGF0dHJpYi5tUG9pbnRlcik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW5zdGFuY2Vz
ID09IDAgfHwgYXR0cmliLm1EaXZpc29yID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlu
cHV0ICs9IGlucHV0U3RyaWRlICogc3RhcnQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29u
dmVydGVyLmlkZW50aXR5ICYmIGlucHV0U3RyaWRlID09IGVsZW1lbnRTaXplKQorICAgICAgICB7
CisgICAgICAgICAgICBtZW1jcHkobWFwUHRyLCBpbnB1dCwgY291bnQgKiBpbnB1dFN0cmlkZSk7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBjb252ZXJ0
ZXIuY29udmVydEFycmF5KGlucHV0LCBpbnB1dFN0cmlkZSwgY291bnQsIG1hcFB0cik7CisgICAg
ICAgIH0KKworICAgICAgICBtVmVydGV4QnVmZmVyLT5VbmxvY2soKTsKKworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgRVJSKCJWZXJ0ZXggYnVm
ZmVyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
KworYm9vbCBWZXJ0ZXhCdWZmZXI5OjpzdG9yZVJhd0RhdGEoY29uc3Qgdm9pZCogZGF0YSwgdW5z
aWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGludCBvZmZzZXQpCit7CisgICAgaWYgKG1WZXJ0ZXhC
dWZmZXIpCisgICAgeworICAgICAgICBEV09SRCBsb2NrRmxhZ3MgPSBtRHluYW1pY1VzYWdlID8g
RDNETE9DS19OT09WRVJXUklURSA6IDA7CisKKyAgICAgICAgdm9pZCAqbWFwUHRyID0gTlVMTDsK
KyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtVmVydGV4QnVmZmVyLT5Mb2NrKG9mZnNldCwgc2l6
ZSwgJm1hcFB0ciwgbG9ja0ZsYWdzKTsKKworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiTG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgi
LCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAg
ICAgbWVtY3B5KG1hcFB0ciwgZGF0YSwgc2l6ZSk7CisKKyAgICAgICAgbVZlcnRleEJ1ZmZlci0+
VW5sb2NrKCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIEVSUigiVmVydGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXI5Ojpn
ZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xzaXpl
aSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNwYWNlUmVx
dWlyZWQoYXR0cmliLCBjb3VudCwgaW5zdGFuY2VzKTsKK30KKworYm9vbCBWZXJ0ZXhCdWZmZXI5
OjpyZXF1aXJlc0NvbnZlcnNpb24oY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBj
b25zdAoreworICAgIHJldHVybiBmb3JtYXRDb252ZXJ0ZXIoYXR0cmliKS5pZGVudGl0eTsKK30K
KwordW5zaWduZWQgaW50IFZlcnRleEJ1ZmZlcjk6OmdldFZlcnRleFNpemUoY29uc3QgZ2w6OlZl
cnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdAoreworICAgIHJldHVybiBzcGFjZVJlcXVpcmVk
KGF0dHJpYiwgMSwgMCk7Cit9CisKK0QzRERFQ0xUWVBFIFZlcnRleEJ1ZmZlcjk6OmdldERlY2xU
eXBlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3QKK3sKKyAgICByZXR1
cm4gZm9ybWF0Q29udmVydGVyKGF0dHJpYikuZDNkRGVjbFR5cGU7Cit9CisKK3Vuc2lnbmVkIGlu
dCBWZXJ0ZXhCdWZmZXI5OjpnZXRCdWZmZXJTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUJ1
ZmZlclNpemU7Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVyOTo6c2V0QnVmZmVyU2l6ZSh1bnNpZ25l
ZCBpbnQgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA+IG1CdWZmZXJTaXplKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGluaXRpYWxpemUoc2l6ZSwgbUR5bmFtaWNVc2FnZSk7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKworYm9vbCBWZXJ0ZXhC
dWZmZXI5OjpkaXNjYXJkKCkKK3sKKyAgICBpZiAobVZlcnRleEJ1ZmZlcikKKyAgICB7CisgICAg
ICAgIHZvaWQgKmR1bW15OworICAgICAgICBIUkVTVUxUIHJlc3VsdDsKKworICAgICAgICByZXN1
bHQgPSBtVmVydGV4QnVmZmVyLT5Mb2NrKDAsIDEsICZkdW1teSwgRDNETE9DS19ESVNDQVJEKTsK
KyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIo
IkRpc2NhcmQgbG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1bHQpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gbVZlcnRl
eEJ1ZmZlci0+VW5sb2NrKCk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAg
eworICAgICAgICAgICAgRVJSKCJEaXNjYXJkIHVubG9jayBmYWlsZWQgd2l0aCBlcnJvciAweCUw
OHgiLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEVSUigi
VmVydGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9Cit9CisKK0lEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKiBWZXJ0ZXhCdWZmZXI5OjpnZXRC
dWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBtVmVydGV4QnVmZmVyOworfQorCisvLyBNYXBw
aW5nIGZyb20gT3BlbkdMLUVTIHZlcnRleCBhdHRyaWIgdHlwZSB0byBEM0QgZGVjbCB0eXBlOgor
Ly8KKy8vIEJZVEUgICAgICAgICAgICAgICAgIFNIT1JUIChDYXN0KQorLy8gQllURS1ub3JtICAg
ICAgICAgICAgRkxPQVQgKE5vcm1hbGl6ZSkgKGNhbid0IGJlIGV4YWN0bHkgcmVwcmVzZW50ZWQg
YXMgU0hPUlQtbm9ybSkKKy8vIFVOU0lHTkVEX0JZVEUgICAgICAgIFVCWVRFNCAoSWRlbnRpdHkp
IG9yIFNIT1JUIChDYXN0KQorLy8gVU5TSUdORURfQllURS1ub3JtICAgVUJZVEU0TiAoSWRlbnRp
dHkpIG9yIEZMT0FUIChOb3JtYWxpemUpCisvLyBTSE9SVCAgICAgICAgICAgICAgICBTSE9SVCAo
SWRlbnRpdHkpCisvLyBTSE9SVC1ub3JtICAgICAgICAgICBTSE9SVC1ub3JtIChJZGVudGl0eSkg
b3IgRkxPQVQgKE5vcm1hbGl6ZSkKKy8vIFVOU0lHTkVEX1NIT1JUICAgICAgIEZMT0FUIChDYXN0
KQorLy8gVU5TSUdORURfU0hPUlQtbm9ybSAgVVNIT1JULW5vcm0gKElkZW50aXR5KSBvciBGTE9B
VCAoTm9ybWFsaXplKQorLy8gRklYRUQgKG5vdCBpbiBXZWJHTCkgRkxPQVQgKEZpeGVkVG9GbG9h
dCkKKy8vIEZMT0FUICAgICAgICAgICAgICAgIEZMT0FUIChJZGVudGl0eSkKKworLy8gR0xUb0NU
eXBlIG1hcHMgZnJvbSBHTCB0eXBlIChhcyBHTGVudW0pIHRvIHRoZSBDIHR5cGVkZWYuCit0ZW1w
bGF0ZSA8R0xlbnVtIEdMVHlwZT4gc3RydWN0IEdMVG9DVHlwZSB7IH07CisKK3RlbXBsYXRlIDw+
IHN0cnVjdCBHTFRvQ1R5cGU8R0xfQllURT4gICAgICAgICAgIHsgdHlwZWRlZiBHTGJ5dGUgdHlw
ZTsgICAgICB9OwordGVtcGxhdGUgPD4gc3RydWN0IEdMVG9DVHlwZTxHTF9VTlNJR05FRF9CWVRF
PiAgeyB0eXBlZGVmIEdMdWJ5dGUgdHlwZTsgICAgIH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgR0xU
b0NUeXBlPEdMX1NIT1JUPiAgICAgICAgICB7IHR5cGVkZWYgR0xzaG9ydCB0eXBlOyAgICAgfTsK
K3RlbXBsYXRlIDw+IHN0cnVjdCBHTFRvQ1R5cGU8R0xfVU5TSUdORURfU0hPUlQ+IHsgdHlwZWRl
ZiBHTHVzaG9ydCB0eXBlOyAgICB9OwordGVtcGxhdGUgPD4gc3RydWN0IEdMVG9DVHlwZTxHTF9G
SVhFRD4gICAgICAgICAgeyB0eXBlZGVmIEdMdWludCB0eXBlOyAgICAgIH07Cit0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgR0xUb0NUeXBlPEdMX0ZMT0FUPiAgICAgICAgICB7IHR5cGVkZWYgR0xmbG9hdCB0
eXBlOyAgICAgfTsKKworLy8gVGhpcyBkaWZmZXJzIGZyb20gRDNEREVDTFRZUEUgaW4gdGhhdCBp
dCBpcyB1bnNpemVkLiAoU2l6ZSBleHBhbnNpb24gaXMgYXBwbGllZCBsYXN0LikKK2VudW0gRDNE
VmVydGV4VHlwZQoreworICAgIEQzRFZUX0ZMT0FULAorICAgIEQzRFZUX1NIT1JULAorICAgIEQz
RFZUX1NIT1JUX05PUk0sCisgICAgRDNEVlRfVUJZVEUsCisgICAgRDNEVlRfVUJZVEVfTk9STSwK
KyAgICBEM0RWVF9VU0hPUlRfTk9STQorfTsKKworLy8gRDNEVG9DVHlwZSBtYXBzIGZyb20gRDNE
IHZlcnRleCB0eXBlIChhcyBlbnVtIEQzRFZlcnRleFR5cGUpIHRvIHRoZSBjb3JyZXNwb25kaW5n
IEMgdHlwZS4KK3RlbXBsYXRlIDx1bnNpZ25lZCBpbnQgRDNEVHlwZT4gc3RydWN0IEQzRFRvQ1R5
cGUgeyB9OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNEVG9DVHlwZTxEM0RWVF9GTE9BVD4geyB0
eXBlZGVmIGZsb2F0IHR5cGU7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNEVG9DVHlwZTxEM0RW
VF9TSE9SVD4geyB0eXBlZGVmIHNob3J0IHR5cGU7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRDNE
VG9DVHlwZTxEM0RWVF9TSE9SVF9OT1JNPiB7IHR5cGVkZWYgc2hvcnQgdHlwZTsgfTsKK3RlbXBs
YXRlIDw+IHN0cnVjdCBEM0RUb0NUeXBlPEQzRFZUX1VCWVRFPiB7IHR5cGVkZWYgdW5zaWduZWQg
Y2hhciB0eXBlOyB9OwordGVtcGxhdGUgPD4gc3RydWN0IEQzRFRvQ1R5cGU8RDNEVlRfVUJZVEVf
Tk9STT4geyB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdHlwZTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVj
dCBEM0RUb0NUeXBlPEQzRFZUX1VTSE9SVF9OT1JNPiB7IHR5cGVkZWYgdW5zaWduZWQgc2hvcnQg
dHlwZTsgfTsKKworLy8gRW5jb2RlIHRoZSB0eXBlL3NpemUgY29tYmluYXRpb25zIHRoYXQgRDNE
IHBlcm1pdHMuIEZvciBlYWNoIHR5cGUvc2l6ZSBpdCBleHBhbmRzIHRvIGEgd2lkZW5lciB0aGF0
IHdpbGwgcHJvdmlkZSB0aGUgYXBwcm9wcmlhdGUgZmluYWwgc2l6ZS4KK3RlbXBsYXRlIDx1bnNp
Z25lZCBpbnQgdHlwZSwgaW50IHNpemU+IHN0cnVjdCBXaWRlblJ1bGUgeyB9OworCit0ZW1wbGF0
ZSA8aW50IHNpemU+IHN0cnVjdCBXaWRlblJ1bGU8RDNEVlRfRkxPQVQsIHNpemU+ICAgICAgICAg
IDogTm9XaWRlbjxzaXplPiB7IH07Cit0ZW1wbGF0ZSA8aW50IHNpemU+IHN0cnVjdCBXaWRlblJ1
bGU8RDNEVlRfU0hPUlQsIHNpemU+ICAgICAgICAgIDogV2lkZW5Ub0V2ZW48c2l6ZT4geyB9Owor
dGVtcGxhdGUgPGludCBzaXplPiBzdHJ1Y3QgV2lkZW5SdWxlPEQzRFZUX1NIT1JUX05PUk0sIHNp
emU+ICAgICA6IFdpZGVuVG9FdmVuPHNpemU+IHsgfTsKK3RlbXBsYXRlIDxpbnQgc2l6ZT4gc3Ry
dWN0IFdpZGVuUnVsZTxEM0RWVF9VQllURSwgc2l6ZT4gICAgICAgICAgOiBXaWRlblRvRm91cjxz
aXplPiB7IH07Cit0ZW1wbGF0ZSA8aW50IHNpemU+IHN0cnVjdCBXaWRlblJ1bGU8RDNEVlRfVUJZ
VEVfTk9STSwgc2l6ZT4gICAgIDogV2lkZW5Ub0ZvdXI8c2l6ZT4geyB9OwordGVtcGxhdGUgPGlu
dCBzaXplPiBzdHJ1Y3QgV2lkZW5SdWxlPEQzRFZUX1VTSE9SVF9OT1JNLCBzaXplPiAgICA6IFdp
ZGVuVG9FdmVuPHNpemU+IHsgfTsKKworLy8gVmVydGV4VHlwZUZsYWdzIGVuY29kZXMgdGhlIEQz
RENBUFM5OjpEZWNsVHlwZSBmbGFnIGFuZCB2ZXJ0ZXggZGVjbGFyYXRpb24gZmxhZyBmb3IgZWFj
aCBEM0QgdmVydGV4IHR5cGUgJiBzaXplIGNvbWJpbmF0aW9uLgordGVtcGxhdGUgPHVuc2lnbmVk
IGludCBkM2R0eXBlLCBpbnQgc2l6ZT4gc3RydWN0IFZlcnRleFR5cGVGbGFncyB7IH07CisKK3Rl
bXBsYXRlIDx1bnNpZ25lZCBpbnQgX2NhcGZsYWcsIHVuc2lnbmVkIGludCBfZGVjbGZsYWc+Citz
dHJ1Y3QgVmVydGV4VHlwZUZsYWdzSGVscGVyCit7CisgICAgZW51bSB7IGNhcGZsYWcgPSBfY2Fw
ZmxhZyB9OworICAgIGVudW0geyBkZWNsZmxhZyA9IF9kZWNsZmxhZyB9OworfTsKKwordGVtcGxh
dGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9GTE9BVCwgMT4gOiBWZXJ0ZXhUeXBl
RmxhZ3NIZWxwZXI8MCwgRDNEREVDTFRZUEVfRkxPQVQxPiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX0ZMT0FULCAyPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBl
cjwwLCBEM0RERUNMVFlQRV9GTE9BVDI+IHsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhU
eXBlRmxhZ3M8RDNEVlRfRkxPQVQsIDM+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPDAsIEQzRERF
Q0xUWVBFX0ZMT0FUMz4geyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxE
M0RWVF9GTE9BVCwgND4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxwZXI8MCwgRDNEREVDTFRZUEVfRkxP
QVQ0PiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX1NIT1JU
LCAyPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjwwLCBEM0RERUNMVFlQRV9TSE9SVDI+IHsgfTsK
K3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlRmxhZ3M8RDNEVlRfU0hPUlQsIDQ+IDogVmVy
dGV4VHlwZUZsYWdzSGVscGVyPDAsIEQzRERFQ0xUWVBFX1NIT1JUND4geyB9OwordGVtcGxhdGUg
PD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9TSE9SVF9OT1JNLCAyPiA6IFZlcnRleFR5
cGVGbGFnc0hlbHBlcjxEM0REVENBUFNfU0hPUlQyTiwgRDNEREVDTFRZUEVfU0hPUlQyTj4geyB9
OwordGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9TSE9SVF9OT1JNLCA0
PiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjxEM0REVENBUFNfU0hPUlQ0TiwgRDNEREVDTFRZUEVf
U0hPUlQ0Tj4geyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFZlcnRleFR5cGVGbGFnczxEM0RWVF9V
QllURSwgND4gOiBWZXJ0ZXhUeXBlRmxhZ3NIZWxwZXI8RDNERFRDQVBTX1VCWVRFNCwgRDNEREVD
TFRZUEVfVUJZVEU0PiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQz
RFZUX1VCWVRFX05PUk0sIDQ+IDogVmVydGV4VHlwZUZsYWdzSGVscGVyPEQzRERUQ0FQU19VQllU
RTROLCBEM0RERUNMVFlQRV9VQllURTROPiB7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4
VHlwZUZsYWdzPEQzRFZUX1VTSE9SVF9OT1JNLCAyPiA6IFZlcnRleFR5cGVGbGFnc0hlbHBlcjxE
M0REVENBUFNfVVNIT1JUMk4sIEQzRERFQ0xUWVBFX1VTSE9SVDJOPiB7IH07Cit0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgVmVydGV4VHlwZUZsYWdzPEQzRFZUX1VTSE9SVF9OT1JNLCA0PiA6IFZlcnRleFR5
cGVGbGFnc0hlbHBlcjxEM0REVENBUFNfVVNIT1JUNE4sIEQzRERFQ0xUWVBFX1VTSE9SVDROPiB7
IH07CisKKworLy8gVmVydGV4VHlwZU1hcHBpbmcgbWFwcyBHTCB0eXBlICYgbm9ybWFsaXplZCBm
bGFnIHRvIHByZWZlcnJlZCBhbmQgZmFsbGJhY2sgRDNEIHZlcnRleCB0eXBlcyAoYXMgRDNEVmVy
dGV4VHlwZSBlbnVtcykuCit0ZW1wbGF0ZSA8R0xlbnVtIEdMdHlwZSwgYm9vbCBub3JtYWxpemVk
PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmcgeyB9OworCit0ZW1wbGF0ZSA8RDNEVmVydGV4VHlw
ZSBQcmVmZXJyZWQsIEQzRFZlcnRleFR5cGUgRmFsbGJhY2sgPSBQcmVmZXJyZWQ+CitzdHJ1Y3Qg
VmVydGV4VHlwZU1hcHBpbmdCYXNlCit7CisgICAgZW51bSB7IHByZWZlcnJlZCA9IFByZWZlcnJl
ZCB9OworICAgIGVudW0geyBmYWxsYmFjayA9IEZhbGxiYWNrIH07Cit9OworCit0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfQllURSwgZmFsc2U+ICAgICAgICAgICAgICAg
ICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfU0hPUlQ+IHsgfTsgICAgICAg
ICAgICAgICAgICAgICAgIC8vIENhc3QKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlTWFw
cGluZzxHTF9CWVRFLCB0cnVlPiAgICAgICAgICAgICAgICAgICAgICAgICA6IFZlcnRleFR5cGVN
YXBwaW5nQmFzZTxEM0RWVF9GTE9BVD4geyB9OyAgICAgICAgICAgICAgICAgICAgICAgLy8gTm9y
bWFsaXplCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfVU5TSUdORURf
QllURSwgZmFsc2U+ICAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRf
VUJZVEUsIEQzRFZUX0ZMT0FUPiB7IH07ICAgICAgICAgIC8vIElkZW50aXR5LCBDYXN0Cit0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfVU5TSUdORURfQllURSwgdHJ1ZT4g
ICAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfVUJZVEVfTk9STSwg
RDNEVlRfRkxPQVQ+IHsgfTsgICAgIC8vIElkZW50aXR5LCBOb3JtYWxpemUKK3RlbXBsYXRlIDw+
IHN0cnVjdCBWZXJ0ZXhUeXBlTWFwcGluZzxHTF9TSE9SVCwgZmFsc2U+ICAgICAgICAgICAgICAg
ICAgICAgICA6IFZlcnRleFR5cGVNYXBwaW5nQmFzZTxEM0RWVF9TSE9SVD4geyB9OyAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSWRlbnRpdHkKK3RlbXBsYXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBl
TWFwcGluZzxHTF9TSE9SVCwgdHJ1ZT4gICAgICAgICAgICAgICAgICAgICAgICA6IFZlcnRleFR5
cGVNYXBwaW5nQmFzZTxEM0RWVF9TSE9SVF9OT1JNLCBEM0RWVF9GTE9BVD4geyB9OyAgICAgLy8g
Q2FzdCwgTm9ybWFsaXplCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xf
VU5TSUdORURfU0hPUlQsIGZhbHNlPiAgICAgICAgICAgICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jh
c2U8RDNEVlRfRkxPQVQ+IHsgfTsgICAgICAgICAgICAgICAgICAgICAgIC8vIENhc3QKK3RlbXBs
YXRlIDw+IHN0cnVjdCBWZXJ0ZXhUeXBlTWFwcGluZzxHTF9VTlNJR05FRF9TSE9SVCwgdHJ1ZT4g
ICAgICAgICAgICAgICA6IFZlcnRleFR5cGVNYXBwaW5nQmFzZTxEM0RWVF9VU0hPUlRfTk9STSwg
RDNEVlRfRkxPQVQ+IHsgfTsgICAgLy8gQ2FzdCwgTm9ybWFsaXplCit0ZW1wbGF0ZSA8Ym9vbCBu
b3JtYWxpemVkPiBzdHJ1Y3QgVmVydGV4VHlwZU1hcHBpbmc8R0xfRklYRUQsIG5vcm1hbGl6ZWQ+
ICAgOiBWZXJ0ZXhUeXBlTWFwcGluZ0Jhc2U8RDNEVlRfRkxPQVQ+IHsgfTsgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEZpeGVkVG9GbG9hdAordGVtcGxhdGUgPGJvb2wgbm9ybWFsaXplZD4gc3Ry
dWN0IFZlcnRleFR5cGVNYXBwaW5nPEdMX0ZMT0FULCBub3JtYWxpemVkPiAgIDogVmVydGV4VHlw
ZU1hcHBpbmdCYXNlPEQzRFZUX0ZMT0FUPiB7IH07ICAgICAgICAgICAgICAgICAgICAgICAvLyBJ
ZGVudGl0eQorCisKKy8vIEdpdmVuIGEgR0wgdHlwZSAmIG5vcm0gZmxhZyBhbmQgYSBEM0QgdHlw
ZSwgQ29udmVyc2lvblJ1bGUgcHJvdmlkZXMgdGhlIHR5cGUgY29udmVyc2lvbiBydWxlIChDYXN0
LCBOb3JtYWxpemUsIElkZW50aXR5LCBGaXhlZFRvRmxvYXQpLgorLy8gVGhlIGNvbnZlcnNpb24g
cnVsZXMgdGhlbXNlbHZlcyBhcmUgZGVmaW5lZCBpbiB2ZXJ0ZXhjb252ZXJzaW9uLmguCisKKy8v
IEFsbW9zdCBhbGwgY2FzZXMgYXJlIGNvdmVyZWQgYnkgQ2FzdCAoaW5jbHVkaW5nIHRob3NlIHRo
YXQgYXJlIGFjdHVhbGx5IElkZW50aXR5IHNpbmNlIENhc3Q8VCxUPiBrbm93cyBpdCdzIGFuIGlk
ZW50aXR5IG1hcHBpbmcpLgordGVtcGxhdGUgPEdMZW51bSBmcm9tVHlwZSwgYm9vbCBub3JtYWxp
emVkLCB1bnNpZ25lZCBpbnQgdG9UeXBlPgorc3RydWN0IENvbnZlcnNpb25SdWxlIDogQ2FzdDx0
eXBlbmFtZSBHTFRvQ1R5cGU8ZnJvbVR5cGU+Ojp0eXBlLCB0eXBlbmFtZSBEM0RUb0NUeXBlPHRv
VHlwZT46OnR5cGU+IHsgfTsKKworLy8gQWxsIGNvbnZlcnNpb25zIGZyb20gbm9ybWFsaXplZCB0
eXBlcyB0byBmbG9hdCB1c2UgdGhlIE5vcm1hbGl6ZSBvcGVyYXRvci4KK3RlbXBsYXRlIDxHTGVu
dW0gZnJvbVR5cGU+IHN0cnVjdCBDb252ZXJzaW9uUnVsZTxmcm9tVHlwZSwgdHJ1ZSwgRDNEVlRf
RkxPQVQ+IDogTm9ybWFsaXplPHR5cGVuYW1lIEdMVG9DVHlwZTxmcm9tVHlwZT46OnR5cGU+IHsg
fTsKKworLy8gVXNlIGEgZnVsbCBzcGVjaWFsaXphdGlvbiBmb3IgdGhpcyBzbyB0aGF0IGl0IHBy
ZWZlcmVudGlhbGx5IG1hdGNoZXMgYWhlYWQgb2YgdGhlIGdlbmVyaWMgbm9ybWFsaXplLXRvLWZs
b2F0IHJ1bGVzLgordGVtcGxhdGUgPD4gc3RydWN0IENvbnZlcnNpb25SdWxlPEdMX0ZJWEVELCB0
cnVlLCBEM0RWVF9GTE9BVD4gIDogRml4ZWRUb0Zsb2F0PEdMaW50LCAxNj4geyB9OwordGVtcGxh
dGUgPD4gc3RydWN0IENvbnZlcnNpb25SdWxlPEdMX0ZJWEVELCBmYWxzZSwgRDNEVlRfRkxPQVQ+
IDogRml4ZWRUb0Zsb2F0PEdMaW50LCAxNj4geyB9OworCisvLyBBIDItc3RhZ2UgY29uc3RydWN0
aW9uIGlzIHVzZWQgZm9yIERlZmF1bHRWZXJ0ZXhWYWx1ZXMgYmVjYXVzZSBmbG9hdCBtdXN0IHVz
ZSBTaW1wbGVEZWZhdWx0VmFsdWVzIChpLmUuIDAvMSkKKy8vIHdoZXRoZXIgaXQgaXMgbm9ybWFs
aXplZCBvciBub3QuCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgYm9vbCBub3JtYWxpemVkPiBzdHJ1Y3Qg
RGVmYXVsdFZlcnRleFZhbHVlc1N0YWdlMiB7IH07CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1
Y3QgRGVmYXVsdFZlcnRleFZhbHVlc1N0YWdlMjxULCB0cnVlPiAgOiBOb3JtYWxpemVkRGVmYXVs
dFZhbHVlczxUPiB7IH07Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IERlZmF1bHRWZXJ0ZXhW
YWx1ZXNTdGFnZTI8VCwgZmFsc2U+IDogU2ltcGxlRGVmYXVsdFZhbHVlczxUPiB7IH07CisKKy8v
IFdvcmsgb3V0IHRoZSBkZWZhdWx0IHZhbHVlIHJ1bGUgZm9yIGEgRDNEIHR5cGUgKGV4cHJlc3Nl
ZCBhcyB0aGUgQyB0eXBlKSBhbmQKK3RlbXBsYXRlIDxjbGFzcyBULCBib29sIG5vcm1hbGl6ZWQ+
IHN0cnVjdCBEZWZhdWx0VmVydGV4VmFsdWVzIDogRGVmYXVsdFZlcnRleFZhbHVlc1N0YWdlMjxU
LCBub3JtYWxpemVkPiB7IH07Cit0ZW1wbGF0ZSA8Ym9vbCBub3JtYWxpemVkPiBzdHJ1Y3QgRGVm
YXVsdFZlcnRleFZhbHVlczxmbG9hdCwgbm9ybWFsaXplZD4gOiBTaW1wbGVEZWZhdWx0VmFsdWVz
PGZsb2F0PiB7IH07CisKKy8vIFBvbGljeSBydWxlcyBmb3IgdXNlIHdpdGggQ29udmVydGVyLCB0
byBjaG9vc2Ugd2hldGhlciB0byB1c2UgdGhlIHByZWZlcnJlZCBvciBmYWxsYmFjayBjb252ZXJz
aW9uLgorLy8gVGhlIGZhbGxiYWNrIGNvbnZlcnNpb24gcHJvZHVjZXMgYW4gb3V0cHV0IHRoYXQg
YWxsIEQzRDkgZGV2aWNlcyBtdXN0IHN1cHBvcnQuCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0
IFVzZVByZWZlcnJlZCB7IGVudW0geyB0eXBlID0gVDo6cHJlZmVycmVkIH07IH07Cit0ZW1wbGF0
ZSA8Y2xhc3MgVD4gc3RydWN0IFVzZUZhbGxiYWNrIHsgZW51bSB7IHR5cGUgPSBUOjpmYWxsYmFj
ayB9OyB9OworCisvLyBDb252ZXJ0ZXIgdGllcyBpdCBhbGwgdG9nZXRoZXIuIEdpdmVuIGFuIE9w
ZW5HTCB0eXBlL25vcm0vc2l6ZSBhbmQgY2hvaWNlIG9mIHByZWZlcnJlZC9mYWxsYmFjayBjb252
ZXJzaW9uLAorLy8gaXQgcHJvdmlkZXMgYWxsIHRoZSBtZW1iZXJzIG9mIHRoZSBhcHByb3ByaWF0
ZSBWZXJ0ZXhEYXRhQ29udmVydGVyLCB0aGUgRDNEQ0FQUzk6OkRlY2xUeXBlcyBmbGFnIGluIGNh
cCBmbGFnCisvLyBhbmQgdGhlIEQzRERFQ0xUWVBFIG1lbWJlciBuZWVkZWQgZm9yIHRoZSB2ZXJ0
ZXggZGVjbGFyYXRpb24gaW4gZGVjbGZsYWcuCit0ZW1wbGF0ZSA8R0xlbnVtIGZyb21UeXBlLCBi
b29sIG5vcm1hbGl6ZWQsIGludCBzaXplLCB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUHJlZmVy
ZW5jZVJ1bGU+CitzdHJ1Y3QgQ29udmVydGVyCisgICAgOiBWZXJ0ZXhEYXRhQ29udmVydGVyPHR5
cGVuYW1lIEdMVG9DVHlwZTxmcm9tVHlwZT46OnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdpZGVuUnVsZTxQcmVmZXJlbmNlUnVsZTwgVmVydGV4VHlwZU1hcHBpbmc8ZnJvbVR5cGUs
IG5vcm1hbGl6ZWQ+ID46OnR5cGUsIHNpemU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICBD
b252ZXJzaW9uUnVsZTxmcm9tVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUHJlZmVyZW5jZVJ1bGU8IFZlcnRleFR5cGVNYXBwaW5nPGZyb21UeXBlLCBub3JtYWxp
emVkPiA+Ojp0eXBlPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFZlcnRleFZh
bHVlczx0eXBlbmFtZSBEM0RUb0NUeXBlPFByZWZlcmVuY2VSdWxlPCBWZXJ0ZXhUeXBlTWFwcGlu
Zzxmcm9tVHlwZSwgbm9ybWFsaXplZD4gPjo6dHlwZT46OnR5cGUsIG5vcm1hbGl6ZWQgPiA+Cit7
Citwcml2YXRlOgorICAgIGVudW0geyBkM2R0eXBlID0gUHJlZmVyZW5jZVJ1bGU8IFZlcnRleFR5
cGVNYXBwaW5nPGZyb21UeXBlLCBub3JtYWxpemVkPiA+Ojp0eXBlIH07CisgICAgZW51bSB7IGQz
ZHNpemUgPSBXaWRlblJ1bGU8ZDNkdHlwZSwgc2l6ZT46OmZpbmFsV2lkdGggfTsKKworcHVibGlj
OgorICAgIGVudW0geyBjYXBmbGFnID0gVmVydGV4VHlwZUZsYWdzPGQzZHR5cGUsIGQzZHNpemU+
OjpjYXBmbGFnIH07CisgICAgZW51bSB7IGRlY2xmbGFnID0gVmVydGV4VHlwZUZsYWdzPGQzZHR5
cGUsIGQzZHNpemU+OjpkZWNsZmxhZyB9OworfTsKKworLy8gSW5pdGlhbGl6ZSBhIFRyYW5zbGF0
aW9uSW5mbworI2RlZmluZSBUUkFOU0xBVElPTih0eXBlLCBub3JtLCBzaXplLCBwcmVmZXJyZWQp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBDb252ZXJ0ZXI8dHlwZSwgbm9ybSwgc2l6ZSwgcHJlZmVycmVk
Pjo6aWRlbnRpdHksICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDb252ZXJ0
ZXI8dHlwZSwgbm9ybSwgc2l6ZSwgcHJlZmVycmVkPjo6ZmluYWxTaXplLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBDb252ZXJ0ZXI8dHlwZSwgbm9ybSwgc2l6ZSwgcHJlZmVy
cmVkPjo6Y29udmVydEFycmF5LCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGF0
aWNfY2FzdDxEM0RERUNMVFlQRT4oQ29udmVydGVyPHR5cGUsIG5vcm0sIHNpemUsIHByZWZlcnJl
ZD46OmRlY2xmbGFnKSAgXAorICAgIH0KKworI2RlZmluZSBUUkFOU0xBVElPTl9GT1JfVFlQRV9O
T1JNX1NJWkUodHlwZSwgbm9ybSwgc2l6ZSkgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDb252ZXJ0ZXI8
dHlwZSwgbm9ybSwgc2l6ZSwgVXNlUHJlZmVycmVkPjo6Y2FwZmxhZywgXAorICAgICAgICBUUkFO
U0xBVElPTih0eXBlLCBub3JtLCBzaXplLCBVc2VQcmVmZXJyZWQpLCAgICAgICAgXAorICAgICAg
ICBUUkFOU0xBVElPTih0eXBlLCBub3JtLCBzaXplLCBVc2VGYWxsYmFjaykgICAgICAgICAgXAor
ICAgIH0KKworI2RlZmluZSBUUkFOU0xBVElPTlNfRk9SX1RZUEUodHlwZSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB7IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05P
Uk1fU0laRSh0eXBlLCBmYWxzZSwgMSksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0
eXBlLCBmYWxzZSwgMiksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxz
ZSwgMyksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgNCkgfSwg
XAorICAgICAgICB7IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCB0cnVlLCAx
KSwgVFJBTlNMQVRJT05fRk9SX1RZUEVfTk9STV9TSVpFKHR5cGUsIHRydWUsIDIpLCBUUkFOU0xB
VElPTl9GT1JfVFlQRV9OT1JNX1NJWkUodHlwZSwgdHJ1ZSwgMyksIFRSQU5TTEFUSU9OX0ZPUl9U
WVBFX05PUk1fU0laRSh0eXBlLCB0cnVlLCA0KSB9LCAgICAgXAorICAgIH0KKworI2RlZmluZSBU
UkFOU0xBVElPTlNfRk9SX1RZUEVfTk9fTk9STSh0eXBlKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICB7IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxz
ZSwgMSksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMiksIFRS
QU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMyksIFRSQU5TTEFUSU9O
X0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgNCkgfSwgXAorICAgICAgICB7IFRSQU5T
TEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMSksIFRSQU5TTEFUSU9OX0ZP
Ul9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMiksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05P
Uk1fU0laRSh0eXBlLCBmYWxzZSwgMyksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0
eXBlLCBmYWxzZSwgNCkgfSwgXAorICAgIH0KKworY29uc3QgVmVydGV4QnVmZmVyOTo6VHJhbnNs
YXRpb25EZXNjcmlwdGlvbiBWZXJ0ZXhCdWZmZXI5OjptUG9zc2libGVUcmFuc2xhdGlvbnNbTlVN
X0dMX1ZFUlRFWF9BVFRSSUJfVFlQRVNdWzJdWzRdID0gLy8gW0dMIHR5cGVzIGFzIGVudW1lcmF0
ZWQgYnkgdHlwZUluZGV4KCldW25vcm1hbGl6ZWRdW3NpemUtMV0KK3sKKyAgICBUUkFOU0xBVElP
TlNfRk9SX1RZUEUoR0xfQllURSksCisgICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBFKEdMX1VOU0lH
TkVEX0JZVEUpLAorICAgIFRSQU5TTEFUSU9OU19GT1JfVFlQRShHTF9TSE9SVCksCisgICAgVFJB
TlNMQVRJT05TX0ZPUl9UWVBFKEdMX1VOU0lHTkVEX1NIT1JUKSwKKyAgICBUUkFOU0xBVElPTlNf
Rk9SX1RZUEVfTk9fTk9STShHTF9GSVhFRCksCisgICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBFX05P
X05PUk0oR0xfRkxPQVQpCit9OworCit2b2lkIFZlcnRleEJ1ZmZlcjk6OmluaXRpYWxpemVUcmFu
c2xhdGlvbnMoRFdPUkQgZGVjbFR5cGVzKQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgTlVNX0dMX1ZFUlRFWF9BVFRSSUJfVFlQRVM7IGkrKykKKyAgICB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgMjsgaisrKQorICAgICAgICB7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBrID0gMDsgayA8IDQ7IGsrKykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAobVBvc3NpYmxlVHJhbnNsYXRpb25zW2ldW2pdW2tdLmNhcHNGbGFn
ID09IDAgfHwgKGRlY2xUeXBlcyAmIG1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tpXVtqXVtrXS5jYXBz
RmxhZykgIT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1Gb3Jt
YXRDb252ZXJ0ZXJzW2ldW2pdW2tdID0gbVBvc3NpYmxlVHJhbnNsYXRpb25zW2ldW2pdW2tdLnBy
ZWZlcnJlZENvbnZlcnNpb247CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1Gb3JtYXRDb252ZXJ0
ZXJzW2ldW2pdW2tdID0gbVBvc3NpYmxlVHJhbnNsYXRpb25zW2ldW2pdW2tdLmZhbGxiYWNrQ29u
dmVyc2lvbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3Vuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXI5Ojp0eXBlSW5kZXgoR0xlbnVtIHR5
cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfQllURTogcmV0
dXJuIDA7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6IHJldHVybiAxOworICAgICAgY2Fz
ZSBHTF9TSE9SVDogcmV0dXJuIDI7CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOiByZXR1
cm4gMzsKKyAgICAgIGNhc2UgR0xfRklYRUQ6IHJldHVybiA0OworICAgICAgY2FzZSBHTF9GTE9B
VDogcmV0dXJuIDU7CisKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IHJldHVybiA1Owor
ICAgIH0KK30KKworY29uc3QgVmVydGV4QnVmZmVyOTo6Rm9ybWF0Q29udmVydGVyICZWZXJ0ZXhC
dWZmZXI5Ojpmb3JtYXRDb252ZXJ0ZXIoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmli
dXRlKQoreworICAgIHJldHVybiBtRm9ybWF0Q29udmVydGVyc1t0eXBlSW5kZXgoYXR0cmlidXRl
Lm1UeXBlKV1bYXR0cmlidXRlLm1Ob3JtYWxpemVkXVthdHRyaWJ1dGUubVNpemUgLSAxXTsKK30K
KwordW5zaWduZWQgaW50IFZlcnRleEJ1ZmZlcjk6OnNwYWNlUmVxdWlyZWQoY29uc3QgZ2w6OlZl
cnRleEF0dHJpYnV0ZSAmYXR0cmliLCBzdGQ6OnNpemVfdCBjb3VudCwgR0xzaXplaSBpbnN0YW5j
ZXMpCit7CisgICAgdW5zaWduZWQgaW50IGVsZW1lbnRTaXplID0gZm9ybWF0Q29udmVydGVyKGF0
dHJpYikub3V0cHV0RWxlbWVudFNpemU7CisKKyAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0
cmliLm1EaXZpc29yID09IDApCisgICAgeworICAgICAgICByZXR1cm4gZWxlbWVudFNpemUgKiBj
b3VudDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRTaXpl
ICogKChpbnN0YW5jZXMgKyBhdHRyaWIubURpdmlzb3IgLSAxKSAvIGF0dHJpYi5tRGl2aXNvcik7
CisgICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlcjkuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
VmVydGV4QnVmZmVyOS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkwIEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisvLyBWZXJ0ZXhCdWZmZXI5Lmg6IERlZmluZXMgdGhlIEQzRDkgVmVydGV4QnVm
ZmVyIGltcGxlbWVudGF0aW9uLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9WRVJURVhC
VUZGRVI5X0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVI5X0hfCisK
KyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmgiCisKK25hbWVzcGFj
ZSByeAoreworY2xhc3MgUmVuZGVyZXI5OworCitjbGFzcyBWZXJ0ZXhCdWZmZXI5IDogcHVibGlj
IFZlcnRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgVmVydGV4QnVmZmVyOShy
eDo6UmVuZGVyZXI5ICpjb25zdCByZW5kZXJlcik7CisgICAgdmlydHVhbCB+VmVydGV4QnVmZmVy
OSgpOworCisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUodW5zaWduZWQgaW50IHNpemUsIGJv
b2wgZHluYW1pY1VzYWdlKTsKKworICAgIHN0YXRpYyBWZXJ0ZXhCdWZmZXI5ICptYWtlVmVydGV4
QnVmZmVyOShWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlcik7CisKKyAgICB2aXJ0dWFsIGJvb2wg
c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwg
R0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9mZnNldCk7CisgICAg
dmlydHVhbCBib29sIHN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQg
c2l6ZSwgdW5zaWduZWQgaW50IG9mZnNldCk7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBn
ZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xzaXpl
aSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzQ29udmVyc2lvbihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0
OworCisgICAgdW5zaWduZWQgaW50IGdldFZlcnRleFNpemUoY29uc3QgZ2w6OlZlcnRleEF0dHJp
YnV0ZSAmYXR0cmliKSBjb25zdDsKKyAgICBEM0RERUNMVFlQRSBnZXREZWNsVHlwZShjb25zdCBn
bDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0OworCisgICAgdmlydHVhbCB1bnNpZ25l
ZCBpbnQgZ2V0QnVmZmVyU2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzZXRCdWZmZXJT
aXplKHVuc2lnbmVkIGludCBzaXplKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGlzY2FyZCgpOworCisg
ICAgSURpcmVjdDNEVmVydGV4QnVmZmVyOSAqZ2V0QnVmZmVyKCkgY29uc3Q7CisKKyAgcHJpdmF0
ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVmVydGV4QnVmZmVyOSk7CisKKyAgICBy
eDo6UmVuZGVyZXI5ICpjb25zdCBtUmVuZGVyZXI7CisKKyAgICBJRGlyZWN0M0RWZXJ0ZXhCdWZm
ZXI5ICptVmVydGV4QnVmZmVyOworICAgIHVuc2lnbmVkIGludCBtQnVmZmVyU2l6ZTsKKyAgICBi
b29sIG1EeW5hbWljVXNhZ2U7CisKKyAgICAvLyBBdHRyaWJ1dGUgZm9ybWF0IGNvbnZlcnNpb24K
KyAgICBlbnVtIHsgTlVNX0dMX1ZFUlRFWF9BVFRSSUJfVFlQRVMgPSA2IH07CisKKyAgICBzdHJ1
Y3QgRm9ybWF0Q29udmVydGVyCisgICAgeworICAgICAgICBib29sIGlkZW50aXR5OworICAgICAg
ICBzdGQ6OnNpemVfdCBvdXRwdXRFbGVtZW50U2l6ZTsKKyAgICAgICAgdm9pZCAoKmNvbnZlcnRB
cnJheSkoY29uc3Qgdm9pZCAqaW4sIHN0ZDo6c2l6ZV90IHN0cmlkZSwgc3RkOjpzaXplX3Qgbiwg
dm9pZCAqb3V0KTsKKyAgICAgICAgRDNEREVDTFRZUEUgZDNkRGVjbFR5cGU7CisgICAgfTsKKwor
ICAgIHN0YXRpYyBib29sIG1UcmFuc2xhdGlvbnNJbml0aWFsaXplZDsKKyAgICBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplVHJhbnNsYXRpb25zKERXT1JEIGRlY2xUeXBlcyk7CisKKyAgICAvLyBbR0wg
dHlwZXMgYXMgZW51bWVyYXRlZCBieSB0eXBlSW5kZXgoKV1bbm9ybWFsaXplZF1bc2l6ZSAtIDFd
CisgICAgc3RhdGljIEZvcm1hdENvbnZlcnRlciBtRm9ybWF0Q29udmVydGVyc1tOVU1fR0xfVkVS
VEVYX0FUVFJJQl9UWVBFU11bMl1bNF07CisKKyAgICBzdHJ1Y3QgVHJhbnNsYXRpb25EZXNjcmlw
dGlvbgorICAgIHsKKyAgICAgICAgRFdPUkQgY2Fwc0ZsYWc7CisgICAgICAgIEZvcm1hdENvbnZl
cnRlciBwcmVmZXJyZWRDb252ZXJzaW9uOworICAgICAgICBGb3JtYXRDb252ZXJ0ZXIgZmFsbGJh
Y2tDb252ZXJzaW9uOworICAgIH07CisKKyAgICAvLyBUaGlzIHRhYmxlIGlzIHVzZWQgdG8gZ2Vu
ZXJhdGUgbUZvcm1hdENvbnZlcnRlcnMuCisgICAgLy8gW0dMIHR5cGVzIGFzIGVudW1lcmF0ZWQg
YnkgdHlwZUluZGV4KCldW25vcm1hbGl6ZWRdW3NpemUgLSAxXQorICAgIHN0YXRpYyBjb25zdCBU
cmFuc2xhdGlvbkRlc2NyaXB0aW9uIG1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tOVU1fR0xfVkVSVEVY
X0FUVFJJQl9UWVBFU11bMl1bNF07CisKKyAgICBzdGF0aWMgdW5zaWduZWQgaW50IHR5cGVJbmRl
eChHTGVudW0gdHlwZSk7CisgICAgc3RhdGljIGNvbnN0IEZvcm1hdENvbnZlcnRlciAmZm9ybWF0
Q29udmVydGVyKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSk7CisKKyAgICBz
dGF0aWMgdW5zaWduZWQgaW50IHNwYWNlUmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0
ZSAmYXR0cmliLCBzdGQ6OnNpemVfdCBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworfTsKKwor
fQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1ZFUlRFWEJVRkZFUjlfSF8KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVm
ZmVyMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDE4IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQu
aCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBWZXJ0ZXhCdWZmZXIxMS5jcHA6IERlZmluZXMgdGhlIEQz
RDExIFZlcnRleEJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9y
ZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9C
dWZmZXJTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvQnVmZmVyLmgiCisjaW5jbHVk
ZSAibGliR0xFU3YyL3JlbmRlcmVyL1JlbmRlcmVyMTEuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
Q29udGV4dC5oIgorCituYW1lc3BhY2UgcngKK3sKKworVmVydGV4QnVmZmVyMTE6OlZlcnRleEJ1
ZmZlcjExKHJ4OjpSZW5kZXJlcjExICpjb25zdCByZW5kZXJlcikgOiBtUmVuZGVyZXIocmVuZGVy
ZXIpCit7CisgICAgbUJ1ZmZlciA9IE5VTEw7CisgICAgbUJ1ZmZlclNpemUgPSAwOworICAgIG1E
eW5hbWljVXNhZ2UgPSBmYWxzZTsKK30KKworVmVydGV4QnVmZmVyMTE6On5WZXJ0ZXhCdWZmZXIx
MSgpCit7CisgICAgaWYgKG1CdWZmZXIpCisgICAgeworICAgICAgICBtQnVmZmVyLT5SZWxlYXNl
KCk7CisgICAgICAgIG1CdWZmZXIgPSBOVUxMOworICAgIH0KK30KKworYm9vbCBWZXJ0ZXhCdWZm
ZXIxMTo6aW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQgc2l6ZSwgYm9vbCBkeW5hbWljVXNhZ2UpCit7
CisgICAgaWYgKG1CdWZmZXIpCisgICAgeworICAgICAgICBtQnVmZmVyLT5SZWxlYXNlKCk7Cisg
ICAgICAgIG1CdWZmZXIgPSBOVUxMOworICAgIH0KKworICAgIHVwZGF0ZVNlcmlhbCgpOworCisg
ICAgaWYgKHNpemUgPiAwKQorICAgIHsKKyAgICAgICAgSUQzRDExRGV2aWNlKiBkeERldmljZSA9
IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgYnVm
ZmVyRGVzYzsKKyAgICAgICAgYnVmZmVyRGVzYy5CeXRlV2lkdGggPSBzaXplOworICAgICAgICBi
dWZmZXJEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfRFlOQU1JQzsKKyAgICAgICAgYnVmZmVyRGVz
Yy5CaW5kRmxhZ3MgPSBEM0QxMV9CSU5EX1ZFUlRFWF9CVUZGRVI7CisgICAgICAgIGJ1ZmZlckRl
c2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOworICAgICAgICBidWZm
ZXJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgIGJ1ZmZlckRlc2MuU3RydWN0dXJlQnl0ZVN0
cmlkZSA9IDA7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkeERldmljZS0+Q3JlYXRlQnVm
ZmVyKCZidWZmZXJEZXNjLCBOVUxMLCAmbUJ1ZmZlcik7CisgICAgICAgIGlmIChGQUlMRUQocmVz
dWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbUJ1ZmZlclNpemUgPSBzaXplOworICAgIG1EeW5hbWljVXNhZ2UgPSBkeW5h
bWljVXNhZ2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1ZlcnRleEJ1ZmZlcjExICpWZXJ0ZXhC
dWZmZXIxMTo6bWFrZVZlcnRleEJ1ZmZlcjExKFZlcnRleEJ1ZmZlciAqdmV0ZXhCdWZmZXIpCit7
CisgICAgQVNTRVJUKEhBU19EWU5BTUlDX1RZUEUoVmVydGV4QnVmZmVyMTEqLCB2ZXRleEJ1ZmZl
cikpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxWZXJ0ZXhCdWZmZXIxMSo+KHZldGV4QnVmZmVy
KTsKK30KKworYm9vbCBWZXJ0ZXhCdWZmZXIxMTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0
IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0
YW5jZXMsIHVuc2lnbmVkIGludCBvZmZzZXQpCit7CisgICAgaWYgKG1CdWZmZXIpCisgICAgewor
ICAgICAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBhdHRyaWIubUJvdW5kQnVmZmVyLmdldCgpOwor
CisgICAgICAgIGludCBpbnB1dFN0cmlkZSA9IGF0dHJpYi5zdHJpZGUoKTsKKyAgICAgICAgY29u
c3QgVmVydGV4Q29udmVydGVyICZjb252ZXJ0ZXIgPSBnZXRWZXJ0ZXhDb252ZXJzaW9uKGF0dHJp
Yik7CisKKyAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqZHhDb250ZXh0ID0gbVJlbmRlcmVy
LT5nZXREZXZpY2VDb250ZXh0KCk7CisKKyAgICAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNF
IG1hcHBlZFJlc291cmNlOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGR4Q29udGV4dC0+TWFw
KG1CdWZmZXIsIDAsIEQzRDExX01BUF9XUklURV9OT19PVkVSV1JJVEUsIDAsICZtYXBwZWRSZXNv
dXJjZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAg
ICAgRVJSKCJWZXJ0ZXggYnVmZmVyIG1hcCBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCByZXN1
bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgY2hh
ciogb3V0cHV0ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFwcGVkUmVzb3VyY2UucERhdGEp
ICsgb2Zmc2V0OworCisgICAgICAgIGNvbnN0IGNoYXIgKmlucHV0ID0gTlVMTDsKKyAgICAgICAg
aWYgKGJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgQnVmZmVyU3RvcmFnZSAqc3RvcmFn
ZSA9IGJ1ZmZlci0+Z2V0U3RvcmFnZSgpOworICAgICAgICAgICAgaW5wdXQgPSBzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oc3RvcmFnZS0+Z2V0RGF0YSgpKSArIHN0YXRpY19jYXN0PGludD4oYXR0
cmliLm1PZmZzZXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAg
ICAgICAgaW5wdXQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXR0cmliLm1Qb2ludGVyKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChpbnN0YW5jZXMgPT0gMCB8fCBhdHRyaWIubURpdmlz
b3IgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgaW5wdXQgKz0gaW5wdXRTdHJpZGUgKiBz
dGFydDsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnZlcnRlci5jb252ZXJzaW9uRnVuYyhpbnB1
dCwgaW5wdXRTdHJpZGUsIGNvdW50LCBvdXRwdXQpOworCisgICAgICAgIGR4Q29udGV4dC0+VW5t
YXAobUJ1ZmZlciwgMCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIEVSUigiVmVydGV4IGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQuIik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVyMTE6OnN0
b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWduZWQg
aW50IG9mZnNldCkKK3sKKyAgICBpZiAobUJ1ZmZlcikKKyAgICB7CisgICAgICAgIElEM0QxMURl
dmljZUNvbnRleHQgKmR4Q29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOwor
CisgICAgICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKKyAgICAg
ICAgSFJFU1VMVCByZXN1bHQgPSBkeENvbnRleHQtPk1hcChtQnVmZmVyLCAwLCBEM0QxMV9NQVBf
V1JJVEVfTk9fT1ZFUldSSVRFLCAwLCAmbWFwcGVkUmVzb3VyY2UpOworICAgICAgICBpZiAoRkFJ
TEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiVmVydGV4IGJ1ZmZlciBt
YXAgZmFpbGVkIHdpdGggZXJyb3IgMHglMDh4IiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGNoYXIqIGJ1ZmZlckRhdGEgPSBzdGF0aWNf
Y2FzdDxjaGFyKj4obWFwcGVkUmVzb3VyY2UucERhdGEpOworICAgICAgICBtZW1jcHkoYnVmZmVy
RGF0YSArIG9mZnNldCwgZGF0YSwgc2l6ZSk7CisKKyAgICAgICAgZHhDb250ZXh0LT5Vbm1hcCht
QnVmZmVyLCAwKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgRVJSKCJWZXJ0ZXggYnVmZmVyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordW5zaWduZWQgaW50IFZlcnRleEJ1ZmZlcjEx
OjpnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGluc3RhbmNlcykgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBpbnQgZWxlbWVudFNp
emUgPSBnZXRWZXJ0ZXhDb252ZXJzaW9uKGF0dHJpYikub3V0cHV0RWxlbWVudFNpemU7CisKKyAg
ICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmliLm1EaXZpc29yID09IDApCisgICAgeworICAg
ICAgICByZXR1cm4gZWxlbWVudFNpemUgKiBjb3VudDsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGVsZW1lbnRTaXplICogKChpbnN0YW5jZXMgKyBhdHRyaWIubURpdmlz
b3IgLSAxKSAvIGF0dHJpYi5tRGl2aXNvcik7CisgICAgfQorfQorCitib29sIFZlcnRleEJ1ZmZl
cjExOjpyZXF1aXJlc0NvbnZlcnNpb24oY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmli
KSBjb25zdAoreworICAgIHJldHVybiAhZ2V0VmVydGV4Q29udmVyc2lvbihhdHRyaWIpLmlkZW50
aXR5OworfQorCit1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyMTE6OmdldEJ1ZmZlclNpemUoKSBj
b25zdAoreworICAgIHJldHVybiBtQnVmZmVyU2l6ZTsKK30KKworYm9vbCBWZXJ0ZXhCdWZmZXIx
MTo6c2V0QnVmZmVyU2l6ZSh1bnNpZ25lZCBpbnQgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA+IG1C
dWZmZXJTaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluaXRpYWxpemUoc2l6ZSwgbUR5bmFt
aWNVc2FnZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KK30KKworYm9vbCBWZXJ0ZXhCdWZmZXIxMTo6ZGlzY2FyZCgpCit7CisgICAgaWYgKG1C
dWZmZXIpCisgICAgeworICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkeENvbnRleHQgPSBt
UmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKKworICAgICAgICBEM0QxMV9NQVBQRURfU1VC
UkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZHhDb250
ZXh0LT5NYXAobUJ1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXBwZWRS
ZXNvdXJjZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAg
ICAgICAgRVJSKCJWZXJ0ZXggYnVmZmVyIG1hcCBmYWlsZWQgd2l0aCBlcnJvciAweCUwOHgiLCBy
ZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAg
ZHhDb250ZXh0LT5Vbm1hcChtQnVmZmVyLCAwKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgRVJSKCJWZXJ0ZXggYnVmZmVyIG5vdCBpbml0
aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordW5zaWduZWQg
aW50IFZlcnRleEJ1ZmZlcjExOjpnZXRWZXJ0ZXhTaXplKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1
dGUgJmF0dHJpYikgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0VmVydGV4Q29udmVyc2lvbihhdHRy
aWIpLm91dHB1dEVsZW1lbnRTaXplOworfQorCitEWEdJX0ZPUk1BVCBWZXJ0ZXhCdWZmZXIxMTo6
Z2V0RFhHSUZvcm1hdChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGdldFZlcnRleENvbnZlcnNpb24oYXR0cmliKS5keGdpRm9ybWF0OworfQor
CitJRDNEMTFCdWZmZXIgKlZlcnRleEJ1ZmZlcjExOjpnZXRCdWZmZXIoKSBjb25zdAoreworICAg
IHJldHVybiBtQnVmZmVyOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdW5zaWduZWQgaW50
IGNvbXBvbmVudENvdW50LCBib29sIHdpZGVuLCBib29sIG5vcm1hbGl6ZWQ+CitzdGF0aWMgdm9p
ZCBjb3B5VmVydGV4RGF0YShjb25zdCB2b2lkICppbnB1dCwgdW5zaWduZWQgaW50IHN0cmlkZSwg
dW5zaWduZWQgaW50IGNvdW50LCB2b2lkICpvdXRwdXQpCit7CisgICAgdW5zaWduZWQgaW50IGF0
dHJpYlNpemUgPSBzaXplb2YoVCkgKiBjb21wb25lbnRDb3VudDsKKworICAgIGlmIChhdHRyaWJT
aXplID09IHN0cmlkZSAmJiAhd2lkZW4pCisgICAgeworICAgICAgICBtZW1jcHkob3V0cHV0LCBp
bnB1dCwgY291bnQgKiBhdHRyaWJTaXplKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgdW5zaWduZWQgaW50IG91dHB1dFN0cmlkZSA9IHdpZGVuID8gNCA6IGNvbXBvbmVudENvdW50
OworICAgICAgICBUIGRlZmF1bHRWYWwgPSBub3JtYWxpemVkID8gc3RkOjpudW1lcmljX2xpbWl0
czxUPjo6bWF4KCkgOiBUKDEpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgVCAqb2Zmc2V0SW5w
dXQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihpbnB1dCkgKyBpICogc3RyaWRlKTsKKyAgICAgICAgICAgIFQgKm9mZnNldE91dHB1dCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KG91dHB1dCkgKyBpICogb3V0cHV0U3RyaWRlOworCisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8IGNvbXBvbmVudENvdW50OyBqKysp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb2Zmc2V0T3V0cHV0W2pdID0gb2Zmc2V0
SW5wdXRbal07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aWRlbikKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBvZmZzZXRPdXRwdXRbM10gPSBkZWZhdWx0VmFsOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dW5zaWduZWQg
aW50IGNvbXBvbmVudENvdW50Pgorc3RhdGljIHZvaWQgY29weUZpeGVkVmVydGV4RGF0YShjb25z
dCB2b2lkKiBpbnB1dCwgdW5zaWduZWQgaW50IHN0cmlkZSwgdW5zaWduZWQgaW50IGNvdW50LCB2
b2lkKiBvdXRwdXQpCit7CisgICAgc3RhdGljIGNvbnN0IGZsb2F0IGRpdmlzb3IgPSAxLjBmIC8g
KDEgPDwgMTYpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KQorICAgIHsKKyAgICAgICAgY29uc3QgR0xmaXhlZCogb2Zmc2V0SW5wdXQgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IEdMZml4ZWQqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihpbnB1
dCkgKyBzdHJpZGUgKiBpKTsKKyAgICAgICAgZmxvYXQqIG9mZnNldE91dHB1dCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8ZmxvYXQqPihvdXRwdXQpICsgaSAqIGNvbXBvbmVudENvdW50OworCisgICAgICAg
IGZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgY29tcG9uZW50Q291bnQ7IGorKykKKyAgICAg
ICAgeworICAgICAgICAgICAgb2Zmc2V0T3V0cHV0W2pdID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG9m
ZnNldElucHV0W2pdKSAqIGRpdmlzb3I7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCB1bnNpZ25lZCBpbnQgY29tcG9uZW50Q291bnQsIGJvb2wgbm9ybWFsaXpl
ZD4KK3N0YXRpYyB2b2lkIGNvcHlUb0Zsb2F0VmVydGV4RGF0YShjb25zdCB2b2lkKiBpbnB1dCwg
dW5zaWduZWQgaW50IHN0cmlkZSwgdW5zaWduZWQgaW50IGNvdW50LCB2b2lkKiBvdXRwdXQpCit7
CisgICAgdHlwZWRlZiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+IE5MOworCisgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgY29uc3QgVCAq
b2Zmc2V0SW5wdXQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihpbnB1dCkgKyBzdHJpZGUgKiBpKTsKKyAgICAgICAgZmxvYXQgKm9mZnNl
dE91dHB1dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihvdXRwdXQpICsgaSAqIGNvbXBvbmVu
dENvdW50OworCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgY29tcG9uZW50
Q291bnQ7IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKE5MOjppc19zaWduZWQpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBkaXZpc29yID0gMS4wZiAv
ICgyICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KE5MOjptYXgoKSkgKyAxKTsKKyAgICAgICAgICAgICAg
ICAgICAgb2Zmc2V0T3V0cHV0W2pdID0gKDIgKiBzdGF0aWNfY2FzdDxmbG9hdD4ob2Zmc2V0SW5w
dXRbal0pICsgMSkgKiBkaXZpc29yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBvZmZzZXRPdXRw
dXRbal0gPSAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG9mZnNldElucHV0W2pdKSAvIE5MOjptYXgoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgb2Zmc2V0T3V0cHV0W2pdID0gIHN0YXRpY19jYXN0
PGZsb2F0PihvZmZzZXRJbnB1dFtqXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
Cit9CisKK2NvbnN0IFZlcnRleEJ1ZmZlcjExOjpWZXJ0ZXhDb252ZXJ0ZXIgVmVydGV4QnVmZmVy
MTE6Om1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tOVU1fR0xfVkVSVEVYX0FUVFJJQl9UWVBFU11bMl1b
NF0gPQoreworICAgIHsgLy8gR0xfQllURQorICAgICAgICB7IC8vIHVubm9ybWFsaXplZAorICAg
ICAgICAgICAgeyAmY29weVRvRmxvYXRWZXJ0ZXhEYXRhPEdMYnl0ZSwgMSwgZmFsc2U+LCBmYWxz
ZSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCA0IH0sCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9h
dFZlcnRleERhdGE8R0xieXRlLCAyLCBmYWxzZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJHMzJf
RkxPQVQsIDggfSwKKyAgICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTGJ5dGUs
IDMsIGZhbHNlPiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgMTIgfSwKKyAg
ICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTGJ5dGUsIDQsIGZhbHNlPiwgZmFs
c2UsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgMTYgfSwKKyAgICAgICAgfSwKKyAg
ICAgICAgeyAvLyBub3JtYWxpemVkCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxHTGJ5
dGUsIDEsIGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjhfU05PUk0sIDEgfSwKKyAg
ICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMYnl0ZSwgMiwgZmFsc2UsIHRydWU+LCB0cnVl
LCBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNLCAyIH0sCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4
RGF0YTxHTGJ5dGUsIDMsIHRydWUsIHRydWU+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjhHOEI4QThf
U05PUk0sIDQgfSwKKyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMYnl0ZSwgNCwgZmFs
c2UsIHRydWU+LCB0cnVlLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwgNCB9LAorICAgICAg
ICB9LAorICAgIH0sCisgICAgeyAvLyBHTF9VTlNJR05FRF9CWVRFCisgICAgICAgIHsgLy8gdW5u
b3JtYWxpemVkCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9hdFZlcnRleERhdGE8R0x1Ynl0ZSwg
MSwgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCA0IH0sCisgICAgICAgICAg
ICB7ICZjb3B5VG9GbG9hdFZlcnRleERhdGE8R0x1Ynl0ZSwgMiwgZmFsc2U+LCBmYWxzZSwgRFhH
SV9GT1JNQVRfUjMyRzMyX0ZMT0FULCA4IH0sCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9hdFZl
cnRleERhdGE8R0x1Ynl0ZSwgMywgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMy
X0ZMT0FULCAxMiB9LAorICAgICAgICAgICAgeyAmY29weVRvRmxvYXRWZXJ0ZXhEYXRhPEdMdWJ5
dGUsIDQsIGZhbHNlPiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgMTYg
fSwKKyAgICAgICAgfSwKKyAgICAgICAgeyAvLyBub3JtYWxpemVkCisgICAgICAgICAgICB7ICZj
b3B5VmVydGV4RGF0YTxHTHVieXRlLCAxLCBmYWxzZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9STUFU
X1I4X1VOT1JNLCAxIH0sCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxHTHVieXRlLCAy
LCBmYWxzZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9STUFUX1I4RzhfVU5PUk0sIDIgfSwKKyAgICAg
ICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDMsIHRydWUsIHRydWU+LCBmYWxzZSwg
RFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sIDQgfSwKKyAgICAgICAgICAgIHsgJmNvcHlWZXJ0
ZXhEYXRhPEdMdWJ5dGUsIDQsIGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVU5PUk0sIDQgfSwKKyAgICAgICAgfSwKKyAgICB9LAorICAgIHsgLy8gR0xfU0hPUlQKKyAg
ICAgICAgeyAvLyB1bm5vcm1hbGl6ZWQKKyAgICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4
RGF0YTxHTHNob3J0LCAxLCBmYWxzZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsIDQg
fSwKKyAgICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTHNob3J0LCAyLCBmYWxz
ZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsIDggfSwKKyAgICAgICAgICAgIHsg
JmNvcHlUb0Zsb2F0VmVydGV4RGF0YTxHTHNob3J0LCAzLCBmYWxzZT4sIGZhbHNlLCBEWEdJX0ZP
Uk1BVF9SMzJHMzJCMzJfRkxPQVQsIDEyIH0sCisgICAgICAgICAgICB7ICZjb3B5VG9GbG9hdFZl
cnRleERhdGE8R0xzaG9ydCwgNCwgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMy
QTMyX0ZMT0FULCAxNiB9LAorICAgICAgICB9LAorICAgICAgICB7IC8vIG5vcm1hbGl6ZWQKKyAg
ICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMc2hvcnQsIDEsIGZhbHNlLCB0cnVlPiwgdHJ1
ZSwgRFhHSV9GT1JNQVRfUjE2X1NOT1JNLCAyIH0sCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4
RGF0YTxHTHNob3J0LCAyLCBmYWxzZSwgdHJ1ZT4sIHRydWUsIERYR0lfRk9STUFUX1IxNkcxNl9T
Tk9STSwgNCB9LAorICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8R0xzaG9ydCwgMywgdHJ1
ZSwgdHJ1ZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sIDggfSwKKyAg
ICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMc2hvcnQsIDQsIGZhbHNlLCB0cnVlPiwgdHJ1
ZSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNLCA4IH0sCisgICAgICAgIH0sCisgICAg
fSwKKyAgICB7IC8vIEdMX1VOU0lHTkVEX1NIT1JUCisgICAgICAgIHsgLy8gdW5ub3JtYWxpemVk
CisgICAgICAgICAgICB7ICZjb3B5VG9GbG9hdFZlcnRleERhdGE8R0x1c2hvcnQsIDEsIGZhbHNl
PiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMl9GTE9BVCwgNCB9LAorICAgICAgICAgICAgeyAmY29w
eVRvRmxvYXRWZXJ0ZXhEYXRhPEdMdXNob3J0LCAyLCBmYWxzZT4sIGZhbHNlLCBEWEdJX0ZPUk1B
VF9SMzJHMzJfRkxPQVQsIDggfSwKKyAgICAgICAgICAgIHsgJmNvcHlUb0Zsb2F0VmVydGV4RGF0
YTxHTHVzaG9ydCwgMywgZmFsc2U+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FU
LCAxMiB9LAorICAgICAgICAgICAgeyAmY29weVRvRmxvYXRWZXJ0ZXhEYXRhPEdMdXNob3J0LCA0
LCBmYWxzZT4sIGZhbHNlLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsIDE2IH0sCisg
ICAgICAgIH0sCisgICAgICAgIHsgLy8gbm9ybWFsaXplZAorICAgICAgICAgICAgeyAmY29weVZl
cnRleERhdGE8R0x1c2hvcnQsIDEsIGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjE2
X1VOT1JNLCAyIH0sCisgICAgICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxHTHVzaG9ydCwgMiwg
ZmFsc2UsIHRydWU+LCB0cnVlLCBEWEdJX0ZPUk1BVF9SMTZHMTZfVU5PUk0sIDQgfSwKKyAgICAg
ICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMdXNob3J0LCAzLCB0cnVlLCB0cnVlPiwgZmFsc2Us
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwgOCB9LAorICAgICAgICAgICAgeyAmY29w
eVZlcnRleERhdGE8R0x1c2hvcnQsIDQsIGZhbHNlLCB0cnVlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X1VOT1JNLCA4IH0sCisgICAgICAgIH0sCisgICAgfSwKKyAgICB7IC8vIEdM
X0ZJWEVECisgICAgICAgIHsgLy8gdW5ub3JtYWxpemVkCisgICAgICAgICAgICB7ICZjb3B5Rml4
ZWRWZXJ0ZXhEYXRhPDE+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCA0IH0sCisgICAg
ICAgICAgICB7ICZjb3B5Rml4ZWRWZXJ0ZXhEYXRhPDI+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMy
RzMyX0ZMT0FULCA4IH0sCisgICAgICAgICAgICB7ICZjb3B5Rml4ZWRWZXJ0ZXhEYXRhPDM+LCBm
YWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAxMiB9LAorICAgICAgICAgICAgeyAm
Y29weUZpeGVkVmVydGV4RGF0YTw0PiwgZmFsc2UsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9G
TE9BVCwgMTYgfSwKKyAgICAgICAgfSwKKyAgICAgICAgeyAvLyBub3JtYWxpemVkCisgICAgICAg
ICAgICB7ICZjb3B5Rml4ZWRWZXJ0ZXhEYXRhPDE+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyX0ZM
T0FULCA0IH0sCisgICAgICAgICAgICB7ICZjb3B5Rml4ZWRWZXJ0ZXhEYXRhPDI+LCBmYWxzZSwg
RFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCA4IH0sCisgICAgICAgICAgICB7ICZjb3B5Rml4ZWRW
ZXJ0ZXhEYXRhPDM+LCBmYWxzZSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAxMiB9LAor
ICAgICAgICAgICAgeyAmY29weUZpeGVkVmVydGV4RGF0YTw0PiwgZmFsc2UsIERYR0lfRk9STUFU
X1IzMkczMkIzMkEzMl9GTE9BVCwgMTYgfSwKKyAgICAgICAgfSwKKyAgICB9LAorICAgIHsgLy8g
R0xfRkxPQVQKKyAgICAgICAgeyAvLyB1bm5vcm1hbGl6ZWQKKyAgICAgICAgICAgIHsgJmNvcHlW
ZXJ0ZXhEYXRhPEdMZmxvYXQsIDEsIGZhbHNlLCBmYWxzZT4sIHRydWUsIERYR0lfRk9STUFUX1Iz
Ml9GTE9BVCwgNCB9LAorICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8R0xmbG9hdCwgMiwg
ZmFsc2UsIGZhbHNlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCA4IH0sCisgICAg
ICAgICAgICB7ICZjb3B5VmVydGV4RGF0YTxHTGZsb2F0LCAzLCBmYWxzZSwgZmFsc2U+LCB0cnVl
LCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsIDEyIH0sCisgICAgICAgICAgICB7ICZjb3B5
VmVydGV4RGF0YTxHTGZsb2F0LCA0LCBmYWxzZSwgZmFsc2U+LCB0cnVlLCBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfRkxPQVQsIDE2IH0sCisgICAgICAgIH0sCisgICAgICAgIHsgLy8gbm9ybWFs
aXplZAorICAgICAgICAgICAgeyAmY29weVZlcnRleERhdGE8R0xmbG9hdCwgMSwgZmFsc2UsIGZh
bHNlPiwgdHJ1ZSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCA0IH0sCisgICAgICAgICAgICB7ICZj
b3B5VmVydGV4RGF0YTxHTGZsb2F0LCAyLCBmYWxzZSwgZmFsc2U+LCB0cnVlLCBEWEdJX0ZPUk1B
VF9SMzJHMzJfRkxPQVQsIDggfSwKKyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMZmxv
YXQsIDMsIGZhbHNlLCBmYWxzZT4sIHRydWUsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwg
MTIgfSwKKyAgICAgICAgICAgIHsgJmNvcHlWZXJ0ZXhEYXRhPEdMZmxvYXQsIDQsIGZhbHNlLCBm
YWxzZT4sIHRydWUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgMTYgfSwKKyAgICAg
ICAgfSwKKyAgICB9LAorfTsKKworY29uc3QgVmVydGV4QnVmZmVyMTE6OlZlcnRleENvbnZlcnRl
ciAmVmVydGV4QnVmZmVyMTE6OmdldFZlcnRleENvbnZlcnNpb24oY29uc3QgZ2w6OlZlcnRleEF0
dHJpYnV0ZSAmYXR0cmlidXRlKQoreworICAgIHVuc2lnbmVkIGludCB0eXBlSW5kZXggPSAwOwor
ICAgIHN3aXRjaCAoYXR0cmlidXRlLm1UeXBlKQorICAgIHsKKyAgICAgIGNhc2UgR0xfQllURTog
ICAgICAgICAgICAgdHlwZUluZGV4ID0gMDsgYnJlYWs7CisgICAgICBjYXNlIEdMX1VOU0lHTkVE
X0JZVEU6ICAgIHR5cGVJbmRleCA9IDE7IGJyZWFrOworICAgICAgY2FzZSBHTF9TSE9SVDogICAg
ICAgICAgICB0eXBlSW5kZXggPSAyOyBicmVhazsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hP
UlQ6ICAgdHlwZUluZGV4ID0gMzsgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZJWEVEOiAgICAgICAg
ICAgIHR5cGVJbmRleCA9IDQ7IGJyZWFrOworICAgICAgY2FzZSBHTF9GTE9BVDogICAgICAgICAg
ICB0eXBlSW5kZXggPSA1OyBicmVhazsKKyAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIG1Qb3NzaWJsZVRyYW5z
bGF0aW9uc1t0eXBlSW5kZXhdW2F0dHJpYnV0ZS5tTm9ybWFsaXplZCA/IDEgOiAwXVthdHRyaWJ1
dGUubVNpemUgLSAxXTsKK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXIxMS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyMTEu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cmVuZGVyZXIvVmVydGV4QnVmZmVyMTEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIFZlcnRleEJ1ZmZlcjExLmg6IERlZmluZXMgdGhlIEQzRDExIFZl
cnRleEJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KKworI2lmbmRlZiBMSUJHTEVTVjJfUkVOREVSRVJf
VkVSVEVYQlVGRkVSMTFfSF8KKyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1ZFUlRFWEJVRkZF
UjExX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmgiCisK
K25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXIxMTsKKworY2xhc3MgVmVydGV4QnVmZmVy
MTEgOiBwdWJsaWMgVmVydGV4QnVmZmVyCit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBWZXJ0
ZXhCdWZmZXIxMShyeDo6UmVuZGVyZXIxMSAqY29uc3QgcmVuZGVyZXIpOworICAgIHZpcnR1YWwg
flZlcnRleEJ1ZmZlcjExKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZSh1bnNpZ25l
ZCBpbnQgc2l6ZSwgYm9vbCBkeW5hbWljVXNhZ2UpOworCisgICAgc3RhdGljIFZlcnRleEJ1ZmZl
cjExICptYWtlVmVydGV4QnVmZmVyMTEoVmVydGV4QnVmZmVyICp2ZXRleEJ1ZmZlcik7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgc3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFu
Y2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9mZnNl
dCk7CisgICAgdmlydHVhbCBib29sIHN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNp
Z25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50IG9mZnNldCk7CisKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGludCBnZXRTcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJp
YiwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0OworCisgICAgdmlydHVh
bCBib29sIHJlcXVpcmVzQ29udmVyc2lvbihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRy
aWIpIGNvbnN0OworCisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0QnVmZmVyU2l6ZSgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBzZXRCdWZmZXJTaXplKHVuc2lnbmVkIGludCBzaXplKTsK
KyAgICB2aXJ0dWFsIGJvb2wgZGlzY2FyZCgpOworCisgICAgdW5zaWduZWQgaW50IGdldFZlcnRl
eFNpemUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdDsKKyAgICBEWEdJ
X0ZPUk1BVCBnZXREWEdJRm9ybWF0KGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikg
Y29uc3Q7CisKKyAgICBJRDNEMTFCdWZmZXIgKmdldEJ1ZmZlcigpIGNvbnN0OworCisgIHByaXZh
dGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFZlcnRleEJ1ZmZlcjExKTsKKworICAg
IHJ4OjpSZW5kZXJlcjExICpjb25zdCBtUmVuZGVyZXI7CisKKyAgICBJRDNEMTFCdWZmZXIgKm1C
dWZmZXI7CisgICAgdW5zaWduZWQgaW50IG1CdWZmZXJTaXplOworICAgIGJvb2wgbUR5bmFtaWNV
c2FnZTsKKworICAgIHR5cGVkZWYgdm9pZCAoKlZlcnRleENvbnZlcnNpb25GdW5jdGlvbikoY29u
c3Qgdm9pZCAqLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgdm9pZCAqKTsKKyAgICBzdHJ1
Y3QgVmVydGV4Q29udmVydGVyCisgICAgeworICAgICAgICBWZXJ0ZXhDb252ZXJzaW9uRnVuY3Rp
b24gY29udmVyc2lvbkZ1bmM7CisgICAgICAgIGJvb2wgaWRlbnRpdHk7CisgICAgICAgIERYR0lf
Rk9STUFUIGR4Z2lGb3JtYXQ7CisgICAgICAgIHVuc2lnbmVkIGludCBvdXRwdXRFbGVtZW50U2l6
ZTsKKyAgICB9OworCisgICAgZW51bSB7IE5VTV9HTF9WRVJURVhfQVRUUklCX1RZUEVTID0gNiB9
OworCisgICAgLy8gVGhpcyB0YWJsZSBpcyB1c2VkIHRvIGdlbmVyYXRlIG1BdHRyaWJ1dGVUeXBl
cy4KKyAgICBzdGF0aWMgY29uc3QgVmVydGV4Q29udmVydGVyIG1Qb3NzaWJsZVRyYW5zbGF0aW9u
c1tOVU1fR0xfVkVSVEVYX0FUVFJJQl9UWVBFU11bMl1bNF07IC8vIFtHTCB0eXBlcyBhcyBlbnVt
ZXJhdGVkIGJ5IHR5cGVJbmRleCgpXVtub3JtYWxpemVkXVtzaXplIC0gMV0KKworICAgIHN0YXRp
YyBjb25zdCBWZXJ0ZXhDb252ZXJ0ZXIgJmdldFZlcnRleENvbnZlcnNpb24oY29uc3QgZ2w6OlZl
cnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlKTsKK307CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNW
Ml9SRU5ERVJFUl9WRVJURVhCVUZGRVIxMV9IXwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVy
dGV4QnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQ1IEBACisjaW5jbHVkZSAicHJlY29tcGlsZWQu
aCIKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFZlcnRleEJ1ZmZlci5jcHA6IERlZmluZXMgdGhl
IGFic3RyYWN0IFZlcnRleEJ1ZmZlciBjbGFzcyBhbmQgVmVydGV4QnVmZmVySW50ZXJmYWNlCisv
LyBjbGFzcyB3aXRoIGRlcml2YXRpb25zLCBjbGFzc2VzIHRoYXQgcGVyZm9ybSBncmFwaGljcyBB
UEkgYWdub3N0aWMgdmVydGV4IGJ1ZmZlciBvcGVyYXRpb25zLgorCisjaW5jbHVkZSAibGliR0xF
U3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJl
ci9SZW5kZXJlci5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9Db250ZXh0LmgiCisKK25hbWVzcGFj
ZSByeAoreworCit1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyOjptTmV4dFNlcmlhbCA9IDE7CisK
K1ZlcnRleEJ1ZmZlcjo6VmVydGV4QnVmZmVyKCkKK3sKKyAgICB1cGRhdGVTZXJpYWwoKTsKK30K
KworVmVydGV4QnVmZmVyOjp+VmVydGV4QnVmZmVyKCkKK3sKK30KKwordm9pZCBWZXJ0ZXhCdWZm
ZXI6OnVwZGF0ZVNlcmlhbCgpCit7CisgICAgbVNlcmlhbCA9IG1OZXh0U2VyaWFsKys7Cit9CisK
K3Vuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXI6OmdldFNlcmlhbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1TZXJpYWw7Cit9CisKK1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6VmVydGV4QnVmZmVySW50
ZXJmYWNlKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIGJvb2wgZHluYW1pYykgOiBtUmVuZGVyZXIo
cmVuZGVyZXIpCit7CisgICAgbUR5bmFtaWMgPSBkeW5hbWljOworICAgIG1Xcml0ZVBvc2l0aW9u
ID0gMDsKKyAgICBtUmVzZXJ2ZWRTcGFjZSA9IDA7CisKKyAgICBtVmVydGV4QnVmZmVyID0gcmVu
ZGVyZXItPmNyZWF0ZVZlcnRleEJ1ZmZlcigpOworfQorCitWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6
On5WZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoKQoreworICAgIGRlbGV0ZSBtVmVydGV4QnVmZmVyOwor
fQorCit1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVySW50ZXJmYWNlOjpnZXRTZXJpYWwoKSBjb25z
dAoreworICAgIHJldHVybiBtVmVydGV4QnVmZmVyLT5nZXRTZXJpYWwoKTsKK30KKwordW5zaWdu
ZWQgaW50IFZlcnRleEJ1ZmZlckludGVyZmFjZTo6Z2V0QnVmZmVyU2l6ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1WZXJ0ZXhCdWZmZXItPmdldEJ1ZmZlclNpemUoKTsKK30KKworYm9vbCBWZXJ0
ZXhCdWZmZXJJbnRlcmZhY2U6OnNldEJ1ZmZlclNpemUodW5zaWduZWQgaW50IHNpemUpCit7Cisg
ICAgaWYgKG1WZXJ0ZXhCdWZmZXItPmdldEJ1ZmZlclNpemUoKSA9PSAwKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1WZXJ0ZXhCdWZmZXItPmluaXRpYWxpemUoc2l6ZSwgbUR5bmFtaWMpOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gbVZlcnRleEJ1ZmZlci0+c2V0QnVm
ZmVyU2l6ZShzaXplKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXJJbnRl
cmZhY2U6OmdldFdyaXRlUG9zaXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtV3JpdGVQb3Np
dGlvbjsKK30KKwordm9pZCBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnNldFdyaXRlUG9zaXRpb24o
dW5zaWduZWQgaW50IHdyaXRlUG9zaXRpb24pCit7CisgICAgbVdyaXRlUG9zaXRpb24gPSB3cml0
ZVBvc2l0aW9uOworfQorCitib29sIFZlcnRleEJ1ZmZlckludGVyZmFjZTo6ZGlzY2FyZCgpCit7
CisgICAgcmV0dXJuIG1WZXJ0ZXhCdWZmZXItPmRpc2NhcmQoKTsKK30KKworaW50IFZlcnRleEJ1
ZmZlckludGVyZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFu
Y2VzKQoreworICAgIGlmICghcmVzZXJ2ZVNwYWNlKG1SZXNlcnZlZFNwYWNlKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbVJlc2VydmVkU3BhY2UgPSAwOworCisgICAg
aWYgKCFtVmVydGV4QnVmZmVyLT5zdG9yZVZlcnRleEF0dHJpYnV0ZXMoYXR0cmliLCBzdGFydCwg
Y291bnQsIGluc3RhbmNlcywgbVdyaXRlUG9zaXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IC0xOworICAgIH0KKworICAgIGludCBvbGRXcml0ZVBvcyA9IHN0YXRpY19jYXN0PGludD4obVdy
aXRlUG9zaXRpb24pOworICAgIG1Xcml0ZVBvc2l0aW9uICs9IG1WZXJ0ZXhCdWZmZXItPmdldFNw
YWNlUmVxdWlyZWQoYXR0cmliLCBjb3VudCwgaW5zdGFuY2VzKTsKKworICAgIHJldHVybiBvbGRX
cml0ZVBvczsKK30KKworaW50IFZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVSYXdEYXRhKGNv
bnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGludCBzaXplKQoreworICAgIGlmICghcmVzZXJ2ZVNw
YWNlKG1SZXNlcnZlZFNwYWNlKSkKKyAgICB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9Cisg
ICAgbVJlc2VydmVkU3BhY2UgPSAwOworCisgICAgaWYgKCFtVmVydGV4QnVmZmVyLT5zdG9yZVJh
d0RhdGEoZGF0YSwgc2l6ZSwgbVdyaXRlUG9zaXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IC0xOworICAgIH0KKworICAgIGludCBvbGRXcml0ZVBvcyA9IHN0YXRpY19jYXN0PGludD4obVdy
aXRlUG9zaXRpb24pOworICAgIG1Xcml0ZVBvc2l0aW9uICs9IHNpemU7CisKKyAgICByZXR1cm4g
b2xkV3JpdGVQb3M7Cit9CisKK2Jvb2wgVmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZlVmVy
dGV4U3BhY2UoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBHTHNpemVpIGNv
dW50LCBHTHNpemVpIGluc3RhbmNlcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgcmVxdWlyZWRTcGFj
ZSA9IG1WZXJ0ZXhCdWZmZXItPmdldFNwYWNlUmVxdWlyZWQoYXR0cmlidXRlLCBjb3VudCwgaW5z
dGFuY2VzKTsKKworICAgIC8vIFByb3RlY3QgYWdhaW5zdCBpbnRlZ2VyIG92ZXJmbG93CisgICAg
aWYgKG1SZXNlcnZlZFNwYWNlICsgcmVxdWlyZWRTcGFjZSA8IG1SZXNlcnZlZFNwYWNlKQorICAg
IHsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtUmVzZXJ2ZWRTcGFjZSAr
PSByZXF1aXJlZFNwYWNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZlcnRleEJ1ZmZl
ckludGVyZmFjZTo6cmVzZXJ2ZVJhd0RhdGFTcGFjZSh1bnNpZ25lZCBpbnQgc2l6ZSkKK3sKKyAg
ICAvLyBQcm90ZWN0IGFnYWluc3QgaW50ZWdlciBvdmVyZmxvdworICAgIGlmIChtUmVzZXJ2ZWRT
cGFjZSArIHNpemUgPCBtUmVzZXJ2ZWRTcGFjZSkKKyAgICB7CisgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgbVJlc2VydmVkU3BhY2UgKz0gc2l6ZTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworVmVydGV4QnVmZmVyKiBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OmdldFZlcnRleEJ1
ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1WZXJ0ZXhCdWZmZXI7Cit9CisKKworU3RyZWFt
aW5nVmVydGV4QnVmZmVySW50ZXJmYWNlOjpTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2Uo
cng6OlJlbmRlcmVyICpyZW5kZXJlciwgc3RkOjpzaXplX3QgaW5pdGlhbFNpemUpIDogVmVydGV4
QnVmZmVySW50ZXJmYWNlKHJlbmRlcmVyLCB0cnVlKQoreworICAgIHNldEJ1ZmZlclNpemUoaW5p
dGlhbFNpemUpOworfQorCitTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6On5TdHJlYW1p
bmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoKQoreworfQorCitib29sIFN0cmVhbWluZ1ZlcnRleEJ1
ZmZlckludGVyZmFjZTo6cmVzZXJ2ZVNwYWNlKHVuc2lnbmVkIGludCBzaXplKQoreworICAgIGJv
b2wgcmVzdWx0ID0gdHJ1ZTsKKyAgICB1bnNpZ25lZCBpbnQgY3VyQnVmZmVyU2l6ZSA9IGdldEJ1
ZmZlclNpemUoKTsKKyAgICBpZiAoc2l6ZSA+IGN1ckJ1ZmZlclNpemUpCisgICAgeworICAgICAg
ICByZXN1bHQgPSBzZXRCdWZmZXJTaXplKHN0ZDo6bWF4KHNpemUsIDMgKiBjdXJCdWZmZXJTaXpl
IC8gMikpOworICAgICAgICBzZXRXcml0ZVBvc2l0aW9uKDApOworICAgIH0KKyAgICBlbHNlIGlm
IChnZXRXcml0ZVBvc2l0aW9uKCkgKyBzaXplID4gY3VyQnVmZmVyU2l6ZSkKKyAgICB7CisgICAg
ICAgIGlmICghZGlzY2FyZCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgc2V0V3JpdGVQb3NpdGlvbigwKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OlN0YXRpY1Zl
cnRleEJ1ZmZlckludGVyZmFjZShyeDo6UmVuZGVyZXIgKnJlbmRlcmVyKSA6IFZlcnRleEJ1ZmZl
ckludGVyZmFjZShyZW5kZXJlciwgZmFsc2UpCit7Cit9CisKK1N0YXRpY1ZlcnRleEJ1ZmZlcklu
dGVyZmFjZTo6flN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSgpCit7Cit9CisKK2ludCBTdGF0
aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6Omxvb2t1cEF0dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4
QXR0cmlidXRlICZhdHRyaWJ1dGUpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgZWxlbWVudCA9
IDA7IGVsZW1lbnQgPCBtQ2FjaGUuc2l6ZSgpOyBlbGVtZW50KyspCisgICAgeworICAgICAgICBp
ZiAobUNhY2hlW2VsZW1lbnRdLnR5cGUgPT0gYXR0cmlidXRlLm1UeXBlICYmCisgICAgICAgICAg
ICBtQ2FjaGVbZWxlbWVudF0uc2l6ZSA9PSBhdHRyaWJ1dGUubVNpemUgJiYKKyAgICAgICAgICAg
IG1DYWNoZVtlbGVtZW50XS5zdHJpZGUgPT0gYXR0cmlidXRlLnN0cmlkZSgpICYmCisgICAgICAg
ICAgICBtQ2FjaGVbZWxlbWVudF0ubm9ybWFsaXplZCA9PSBhdHRyaWJ1dGUubU5vcm1hbGl6ZWQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtQ2FjaGVbZWxlbWVudF0uYXR0cmlidXRlT2Zm
c2V0ID09IGF0dHJpYnV0ZS5tT2Zmc2V0ICUgYXR0cmlidXRlLnN0cmlkZSgpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtQ2FjaGVbZWxlbWVudF0uc3RyZWFtT2Zmc2V0
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQor
Citib29sIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2ZVNwYWNlKHVuc2lnbmVk
IGludCBzaXplKQoreworICAgIHVuc2lnbmVkIGludCBjdXJTaXplID0gZ2V0QnVmZmVyU2l6ZSgp
OworICAgIGlmIChjdXJTaXplID09IDApCisgICAgeworICAgICAgICBzZXRCdWZmZXJTaXplKHNp
emUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZSBpZiAoY3VyU2l6ZSA+
PSBzaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7ICAgLy8gU3RhdGljIHZlcnRleCBidWZmZXJzIGNh
bid0IGJlIHJlc2l6ZWQKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW50IFN0
YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGds
OjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdM
c2l6ZWkgaW5zdGFuY2VzKQoreworICAgIGludCBhdHRyaWJ1dGVPZmZzZXQgPSBhdHRyaWIubU9m
ZnNldCAlIGF0dHJpYi5zdHJpZGUoKTsKKyAgICBWZXJ0ZXhFbGVtZW50IGVsZW1lbnQgPSB7IGF0
dHJpYi5tVHlwZSwgYXR0cmliLm1TaXplLCBhdHRyaWIuc3RyaWRlKCksIGF0dHJpYi5tTm9ybWFs
aXplZCwgYXR0cmlidXRlT2Zmc2V0LCBnZXRXcml0ZVBvc2l0aW9uKCkgfTsKKyAgICBtQ2FjaGUu
cHVzaF9iYWNrKGVsZW1lbnQpOworCisgICAgcmV0dXJuIFZlcnRleEJ1ZmZlckludGVyZmFjZTo6
c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGF0dHJpYiwgc3RhcnQsIGNvdW50LCBpbnN0YW5jZXMpOwor
fQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL1ZlcnRleEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4QnVmZmVyLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleEJ1ZmZl
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzOCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gVmVydGV4QnVmZmVyLmg6IERlZmluZXMgdGhlIGFic3RyYWN0IFZlcnRleEJ1ZmZlciBjbGFz
cyBhbmQgVmVydGV4QnVmZmVySW50ZXJmYWNlCisvLyBjbGFzcyB3aXRoIGRlcml2YXRpb25zLCBj
bGFzc2VzIHRoYXQgcGVyZm9ybSBncmFwaGljcyBBUEkgYWdub3N0aWMgdmVydGV4IGJ1ZmZlciBv
cGVyYXRpb25zLgorCisjaWZuZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVJfSF8K
KyNkZWZpbmUgTElCR0xFU1YyX1JFTkRFUkVSX1ZFUlRFWEJVRkZFUl9IXworCisjaW5jbHVkZSAi
Y29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBWZXJ0ZXhBdHRy
aWJ1dGU7Cit9CisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVuZGVyZXI7CisKK2NsYXNzIFZl
cnRleEJ1ZmZlcgoreworICBwdWJsaWM6CisgICAgVmVydGV4QnVmZmVyKCk7CisgICAgdmlydHVh
bCB+VmVydGV4QnVmZmVyKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZSh1bnNpZ25l
ZCBpbnQgc2l6ZSwgYm9vbCBkeW5hbWljVXNhZ2UpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBz
dG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBH
TGludCBzdGFydCwgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHN0b3JlUmF3RGF0YShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBp
bnQgc2l6ZSwgdW5zaWduZWQgaW50IG9mZnNldCkgPSAwOworCisgICAgdmlydHVhbCB1bnNpZ25l
ZCBpbnQgZ2V0U3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIs
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGluc3RhbmNlcykgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIHJlcXVp
cmVzQ29udmVyc2lvbihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0ID0g
MDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldEJ1ZmZlclNpemUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIHNldEJ1ZmZlclNpemUodW5zaWduZWQgaW50IHNpemUpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgZGlzY2FyZCgpID0gMDsKKworICAgIHVuc2lnbmVkIGludCBnZXRT
ZXJpYWwoKSBjb25zdDsKKworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVTZXJpYWwoKTsK
KworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihWZXJ0ZXhCdWZmZXIp
OworCisgICAgdW5zaWduZWQgaW50IG1TZXJpYWw7CisgICAgc3RhdGljIHVuc2lnbmVkIGludCBt
TmV4dFNlcmlhbDsKK307CisKK2NsYXNzIFZlcnRleEJ1ZmZlckludGVyZmFjZQoreworICBwdWJs
aWM6CisgICAgVmVydGV4QnVmZmVySW50ZXJmYWNlKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIGJv
b2wgZHluYW1pYyk7CisgICAgdmlydHVhbCB+VmVydGV4QnVmZmVySW50ZXJmYWNlKCk7CisKKyAg
ICBib29sIHJlc2VydmVWZXJ0ZXhTcGFjZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRy
aWJ1dGUsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKTsKKyAgICBib29sIHJlc2Vy
dmVSYXdEYXRhU3BhY2UodW5zaWduZWQgaW50IHNpemUpOworCisgICAgdW5zaWduZWQgaW50IGdl
dEJ1ZmZlclNpemUoKSBjb25zdDsKKworICAgIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25z
dDsKKworICAgIHZpcnR1YWwgaW50IHN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVy
dGV4QXR0cmlidXRlICZhdHRyaWIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBHTHNpemVp
IGluc3RhbmNlcyk7CisgICAgdmlydHVhbCBpbnQgc3RvcmVSYXdEYXRhKGNvbnN0IHZvaWQqIGRh
dGEsIHVuc2lnbmVkIGludCBzaXplKTsKKworICAgIFZlcnRleEJ1ZmZlciogZ2V0VmVydGV4QnVm
ZmVyKCkgY29uc3Q7CisKKyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgYm9vbCByZXNlcnZlU3Bh
Y2UodW5zaWduZWQgaW50IHNpemUpID0gMDsKKworICAgIHVuc2lnbmVkIGludCBnZXRXcml0ZVBv
c2l0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRXcml0ZVBvc2l0aW9uKHVuc2lnbmVkIGludCB3
cml0ZVBvc2l0aW9uKTsKKworICAgIGJvb2wgZGlzY2FyZCgpOworCisgICAgYm9vbCBzZXRCdWZm
ZXJTaXplKHVuc2lnbmVkIGludCBzaXplKTsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTihWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UpOworCisgICAgcng6OlJlbmRlcmVy
ICpjb25zdCBtUmVuZGVyZXI7CisKKyAgICBWZXJ0ZXhCdWZmZXIqIG1WZXJ0ZXhCdWZmZXI7CisK
KyAgICB1bnNpZ25lZCBpbnQgbVdyaXRlUG9zaXRpb247CisgICAgdW5zaWduZWQgaW50IG1SZXNl
cnZlZFNwYWNlOworICAgIGJvb2wgbUR5bmFtaWM7Cit9OworCitjbGFzcyBTdHJlYW1pbmdWZXJ0
ZXhCdWZmZXJJbnRlcmZhY2UgOiBwdWJsaWMgVmVydGV4QnVmZmVySW50ZXJmYWNlCit7CisgIHB1
YmxpYzoKKyAgICBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2Uocng6OlJlbmRlcmVyICpy
ZW5kZXJlciwgc3RkOjpzaXplX3QgaW5pdGlhbFNpemUpOworICAgIH5TdHJlYW1pbmdWZXJ0ZXhC
dWZmZXJJbnRlcmZhY2UoKTsKKworICBwcm90ZWN0ZWQ6CisgICAgYm9vbCByZXNlcnZlU3BhY2Uo
dW5zaWduZWQgaW50IHNpemUpOworfTsKKworY2xhc3MgU3RhdGljVmVydGV4QnVmZmVySW50ZXJm
YWNlIDogcHVibGljIFZlcnRleEJ1ZmZlckludGVyZmFjZQoreworICBwdWJsaWM6CisgICAgZXhw
bGljaXQgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlKHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIp
OworICAgIH5TdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoKTsKKworICAgIGludCBzdG9yZVZl
cnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGludCBz
dGFydCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpOworCisgICAgLy8gUmV0dXJu
cyB0aGUgb2Zmc2V0IGludG8gdGhlIHZlcnRleCBidWZmZXIsIG9yIC0xIGlmIG5vdCBmb3VuZAor
ICAgIGludCBsb29rdXBBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmli
dXRlKTsKKworICBwcm90ZWN0ZWQ6CisgICAgYm9vbCByZXNlcnZlU3BhY2UodW5zaWduZWQgaW50
IHNpemUpOworCisgIHByaXZhdGU6CisgICAgc3RydWN0IFZlcnRleEVsZW1lbnQKKyAgICB7Cisg
ICAgICAgIEdMZW51bSB0eXBlOworICAgICAgICBHTGludCBzaXplOworICAgICAgICBHTHNpemVp
IHN0cmlkZTsKKyAgICAgICAgYm9vbCBub3JtYWxpemVkOworICAgICAgICBpbnQgYXR0cmlidXRl
T2Zmc2V0OworCisgICAgICAgIHVuc2lnbmVkIGludCBzdHJlYW1PZmZzZXQ7CisgICAgfTsKKwor
ICAgIHN0ZDo6dmVjdG9yPFZlcnRleEVsZW1lbnQ+IG1DYWNoZTsKK307CisKK30KKworI2VuZGlm
IC8vIExJQkdMRVNWMl9SRU5ERVJFUl9WRVJURVhCVUZGRVJfSF8KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL1ZlcnRleERhdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERhdGFNYW5hZ2VyLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2NyBA
QAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBWZXJ0
ZXhEYXRhTWFuYWdlci5oOiBEZWZpbmVzIHRoZSBWZXJ0ZXhEYXRhTWFuYWdlciwgYSBjbGFzcyB0
aGF0CisvLyBydW5zIHRoZSBCdWZmZXIgdHJhbnNsYXRpb24gcHJvY2Vzcy4KKworI2luY2x1ZGUg
ImxpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgImxpYkdM
RVN2Mi9yZW5kZXJlci9CdWZmZXJTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvQnVm
ZmVyLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIKKyNpbmNsdWRlICJs
aWJHTEVTdjIvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhC
dWZmZXIuaCIKKworbmFtZXNwYWNlCit7CisgICAgZW51bSB7IElOSVRJQUxfU1RSRUFNX0JVRkZF
Ul9TSVpFID0gMTAyNCoxMDI0IH07CisgICAgLy8gVGhpcyBoYXMgdG8gYmUgYXQgbGVhc3QgNGsg
b3IgZWxzZSBpdCBmYWlscyBvbiBBVEkgY2FyZHMuCisgICAgZW51bSB7IENPTlNUQU5UX1ZFUlRF
WF9CVUZGRVJfU0laRSA9IDQwOTYgfTsKK30KKworbmFtZXNwYWNlIHJ4Cit7CisKK3N0YXRpYyBp
bnQgZWxlbWVudHNJbkJ1ZmZlcihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUs
IGludCBzaXplKQoreworICAgIGludCBzdHJpZGUgPSBhdHRyaWJ1dGUuc3RyaWRlKCk7CisgICAg
cmV0dXJuIChzaXplIC0gYXR0cmlidXRlLm1PZmZzZXQgJSBzdHJpZGUgKyAoc3RyaWRlIC0gYXR0
cmlidXRlLnR5cGVTaXplKCkpKSAvIHN0cmlkZTsKK30KKworVmVydGV4RGF0YU1hbmFnZXI6OlZl
cnRleERhdGFNYW5hZ2VyKFJlbmRlcmVyICpyZW5kZXJlcikgOiBtUmVuZGVyZXIocmVuZGVyZXIp
Cit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKysp
CisgICAgeworICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzBdID0gc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46OnF1aWV0X05hTigpOworICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzFdID0gc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpOworICAgICAgICBtQ3VycmVudFZh
bHVlW2ldWzJdID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpOworICAg
ICAgICBtQ3VycmVudFZhbHVlW2ldWzNdID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1
aWV0X05hTigpOworICAgICAgICBtQ3VycmVudFZhbHVlQnVmZmVyW2ldID0gTlVMTDsKKyAgICAg
ICAgbUN1cnJlbnRWYWx1ZU9mZnNldHNbaV0gPSAwOworICAgIH0KKworICAgIG1TdHJlYW1pbmdC
dWZmZXIgPSBuZXcgU3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlKHJlbmRlcmVyLCBJTklU
SUFMX1NUUkVBTV9CVUZGRVJfU0laRSk7CisKKyAgICBpZiAoIW1TdHJlYW1pbmdCdWZmZXIpCisg
ICAgeworICAgICAgICBFUlIoIkZhaWxlZCB0byBhbGxvY2F0ZSB0aGUgc3RyZWFtaW5nIHZlcnRl
eCBidWZmZXIuIik7CisgICAgfQorfQorCitWZXJ0ZXhEYXRhTWFuYWdlcjo6flZlcnRleERhdGFN
YW5hZ2VyKCkKK3sKKyAgICBkZWxldGUgbVN0cmVhbWluZ0J1ZmZlcjsKKworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAg
ZGVsZXRlIG1DdXJyZW50VmFsdWVCdWZmZXJbaV07CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBk
aXJlY3RTdG9yYWdlUG9zc2libGUoVmVydGV4QnVmZmVySW50ZXJmYWNlKiB2YiwgY29uc3QgZ2w6
OlZlcnRleEF0dHJpYnV0ZSYgYXR0cmliKQoreworICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGF0
dHJpYi5tQm91bmRCdWZmZXIuZ2V0KCk7CisgICAgQnVmZmVyU3RvcmFnZSAqc3RvcmFnZSA9IGJ1
ZmZlciA/IGJ1ZmZlci0+Z2V0U3RvcmFnZSgpIDogTlVMTDsKKworICAgIGNvbnN0IGJvb2wgaXNB
bGlnbmVkID0gKGF0dHJpYi5zdHJpZGUoKSAlIDQgPT0gMCkgJiYgKGF0dHJpYi5tT2Zmc2V0ICUg
NCA9PSAwKTsKKworICAgIHJldHVybiBzdG9yYWdlICYmIHN0b3JhZ2UtPnN1cHBvcnRzRGlyZWN0
QmluZGluZygpICYmICF2Yi0+Z2V0VmVydGV4QnVmZmVyKCktPnJlcXVpcmVzQ29udmVyc2lvbihh
dHRyaWIpICYmIGlzQWxpZ25lZDsKK30KKworR0xlbnVtIFZlcnRleERhdGFNYW5hZ2VyOjpwcmVw
YXJlVmVydGV4RGF0YShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlIGF0dHJpYnNbXSwgZ2w6OlBy
b2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnksIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBU
cmFuc2xhdGVkQXR0cmlidXRlICp0cmFuc2xhdGVkLCBHTHNpemVpIGluc3RhbmNlcykKK3sKKyAg
ICBpZiAoIW1TdHJlYW1pbmdCdWZmZXIpCisgICAgeworICAgICAgICByZXR1cm4gR0xfT1VUX09G
X01FTU9SWTsKKyAgICB9CisKKyAgICBmb3IgKGludCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0dHJp
YnV0ZUluZGV4IDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgYXR0cmlidXRlSW5kZXgrKykKKyAg
ICB7CisgICAgICAgIHRyYW5zbGF0ZWRbYXR0cmlidXRlSW5kZXhdLmFjdGl2ZSA9IChwcm9ncmFt
QmluYXJ5LT5nZXRTZW1hbnRpY0luZGV4KGF0dHJpYnV0ZUluZGV4KSAhPSAtMSk7CisgICAgfQor
CisgICAgLy8gSW52YWxpZGF0ZSBzdGF0aWMgYnVmZmVycyB0aGF0IGRvbid0IGNvbnRhaW4gbWF0
Y2hpbmcgYXR0cmlidXRlcworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhf
QVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKHRyYW5zbGF0ZWRbaV0uYWN0aXZlICYm
IGF0dHJpYnNbaV0ubUFycmF5RW5hYmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkJ1
ZmZlciAqYnVmZmVyID0gYXR0cmlic1tpXS5tQm91bmRCdWZmZXIuZ2V0KCk7CisgICAgICAgICAg
ICBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlciA/IGJ1
ZmZlci0+Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkgOiBOVUxMOworCisgICAgICAgICAgICBpZiAo
c3RhdGljQnVmZmVyICYmIHN0YXRpY0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpID4gMCAmJiBzdGF0
aWNCdWZmZXItPmxvb2t1cEF0dHJpYnV0ZShhdHRyaWJzW2ldKSA9PSAtMSAmJgorICAgICAgICAg
ICAgICAgICFkaXJlY3RTdG9yYWdlUG9zc2libGUoc3RhdGljQnVmZmVyLCBhdHRyaWJzW2ldKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBidWZmZXItPmludmFsaWRhdGVTdGF0aWNE
YXRhKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBSZXNlcnZl
IHRoZSByZXF1aXJlZCBzcGFjZSBpbiB0aGUgYnVmZmVycworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKHRyYW5z
bGF0ZWRbaV0uYWN0aXZlICYmIGF0dHJpYnNbaV0ubUFycmF5RW5hYmxlZCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0gYXR0cmlic1tpXS5tQm91bmRCdWZmZXIu
Z2V0KCk7CisgICAgICAgICAgICBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKnN0YXRpY0J1
ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkgOiBOVUxMOwor
ICAgICAgICAgICAgVmVydGV4QnVmZmVySW50ZXJmYWNlICp2ZXJ0ZXhCdWZmZXIgPSBzdGF0aWNC
dWZmZXIgPyBzdGF0aWNCdWZmZXIgOiBzdGF0aWNfY2FzdDxWZXJ0ZXhCdWZmZXJJbnRlcmZhY2Uq
PihtU3RyZWFtaW5nQnVmZmVyKTsKKworICAgICAgICAgICAgaWYgKCFkaXJlY3RTdG9yYWdlUG9z
c2libGUodmVydGV4QnVmZmVyLCBhdHRyaWJzW2ldKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAoc3RhdGljQnVmZmVyKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHN0YXRpY0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpID09IDApCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB0b3RhbENvdW50ID0g
ZWxlbWVudHNJbkJ1ZmZlcihhdHRyaWJzW2ldLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIXN0YXRpY0J1ZmZlci0+cmVzZXJ2ZVZlcnRleFNwYWNlKGF0dHJp
YnNbaV0sIHRvdGFsQ291bnQsIDApKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghbVN0cmVhbWluZ0J1ZmZlci0+cmVzZXJ2ZVZlcnRleFNwYWNlKGF0dHJpYnNb
aV0sIGNvdW50LCBpbnN0YW5jZXMpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIFBlcmZvcm0gdGhlIHZlcnRleCBkYXRhIHRyYW5zbGF0aW9ucworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAg
ICAgaWYgKHRyYW5zbGF0ZWRbaV0uYWN0aXZlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
YXR0cmlic1tpXS5tQXJyYXlFbmFibGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYnNbaV0ubUJvdW5kQnVmZmVyLmdldCgpOworCisg
ICAgICAgICAgICAgICAgaWYgKCFidWZmZXIgJiYgYXR0cmlic1tpXS5tUG9pbnRlciA9PSBOVUxM
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBh
cHBsaWNhdGlvbiBlcnJvciB0aGF0IHdvdWxkIG5vcm1hbGx5IHJlc3VsdCBpbiBhIGNyYXNoLCBi
dXQgd2UgY2F0Y2ggaXQgYW5kIHJldHVybiBhbiBlcnJvcgorICAgICAgICAgICAgICAgICAgICBF
UlIoIkFuIGVuYWJsZWQgdmVydGV4IGFycmF5IGhhcyBubyBidWZmZXIgYW5kIG5vIHBvaW50ZXIu
Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9JTlZBTElEX09QRVJBVElPTjsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRl
cmZhY2UgKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+Z2V0U3RhdGljVmVydGV4QnVm
ZmVyKCkgOiBOVUxMOworICAgICAgICAgICAgICAgIFZlcnRleEJ1ZmZlckludGVyZmFjZSAqdmVy
dGV4QnVmZmVyID0gc3RhdGljQnVmZmVyID8gc3RhdGljQnVmZmVyIDogc3RhdGljX2Nhc3Q8VmVy
dGV4QnVmZmVySW50ZXJmYWNlKj4obVN0cmVhbWluZ0J1ZmZlcik7CisKKyAgICAgICAgICAgICAg
ICBCdWZmZXJTdG9yYWdlICpzdG9yYWdlID0gYnVmZmVyID8gYnVmZmVyLT5nZXRTdG9yYWdlKCkg
OiBOVUxMOworICAgICAgICAgICAgICAgIGJvb2wgZGlyZWN0U3RvcmFnZSA9IGRpcmVjdFN0b3Jh
Z2VQb3NzaWJsZSh2ZXJ0ZXhCdWZmZXIsIGF0dHJpYnNbaV0pOworCisgICAgICAgICAgICAgICAg
c3RkOjpzaXplX3Qgc3RyZWFtT2Zmc2V0ID0gLTE7CisgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IG91dHB1dEVsZW1lbnRTaXplID0gMDsKKworICAgICAgICAgICAgICAgIGlmIChkaXJlY3RT
dG9yYWdlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0RWxl
bWVudFNpemUgPSBhdHRyaWJzW2ldLnN0cmlkZSgpOworICAgICAgICAgICAgICAgICAgICBzdHJl
YW1PZmZzZXQgPSBhdHRyaWJzW2ldLm1PZmZzZXQgKyBvdXRwdXRFbGVtZW50U2l6ZSAqIHN0YXJ0
OworICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLT5tYXJrQnVmZmVyVXNhZ2UoKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGljQnVmZmVyKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0gc3RhdGlj
QnVmZmVyLT5sb29rdXBBdHRyaWJ1dGUoYXR0cmlic1tpXSk7CisgICAgICAgICAgICAgICAgICAg
IG91dHB1dEVsZW1lbnRTaXplID0gc3RhdGljQnVmZmVyLT5nZXRWZXJ0ZXhCdWZmZXIoKS0+Z2V0
U3BhY2VSZXF1aXJlZChhdHRyaWJzW2ldLCAxLCAwKTsKKworICAgICAgICAgICAgICAgICAgICBp
ZiAoc3RyZWFtT2Zmc2V0ID09IC0xKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBlbnRpcmUgYnVmZmVyCisgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgdG90YWxDb3VudCA9IGVsZW1lbnRzSW5CdWZmZXIoYXR0cmlic1tpXSwg
c3RvcmFnZS0+Z2V0U2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydElu
ZGV4ID0gYXR0cmlic1tpXS5tT2Zmc2V0IC8gYXR0cmlic1tpXS5zdHJpZGUoKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0gc3RhdGljQnVmZmVyLT5zdG9yZVZlcnRl
eEF0dHJpYnV0ZXMoYXR0cmlic1tpXSwgLXN0YXJ0SW5kZXgsIHRvdGFsQ291bnQsIDApOworICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmVhbU9mZnNl
dCAhPSAtMSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
c3RyZWFtT2Zmc2V0ICs9IChhdHRyaWJzW2ldLm1PZmZzZXQgLyBhdHRyaWJzW2ldLnN0cmlkZSgp
KSAqIG91dHB1dEVsZW1lbnRTaXplOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5z
dGFuY2VzID09IDAgfHwgYXR0cmlic1tpXS5tRGl2aXNvciA9PSAwKQorICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbU9mZnNldCArPSBz
dGFydCAqIG91dHB1dEVsZW1lbnRTaXplOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dEVsZW1lbnRT
aXplID0gbVN0cmVhbWluZ0J1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCktPmdldFNwYWNlUmVxdWly
ZWQoYXR0cmlic1tpXSwgMSwgMCk7CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbU9mZnNldCA9
IG1TdHJlYW1pbmdCdWZmZXItPnN0b3JlVmVydGV4QXR0cmlidXRlcyhhdHRyaWJzW2ldLCBzdGFy
dCwgY291bnQsIGluc3RhbmNlcyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgaWYgKHN0cmVhbU9mZnNldCA9PSAtMSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0uc3RvcmFnZSA9IGRpcmVjdFN0b3JhZ2UgPyBz
dG9yYWdlIDogTlVMTDsKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnZlcnRleEJ1ZmZl
ciA9IHZlcnRleEJ1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgdHJh
bnNsYXRlZFtpXS5zZXJpYWwgPSBkaXJlY3RTdG9yYWdlID8gc3RvcmFnZS0+Z2V0U2VyaWFsKCkg
OiB2ZXJ0ZXhCdWZmZXItPmdldFNlcmlhbCgpOworICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRb
aV0uZGl2aXNvciA9IGF0dHJpYnNbaV0ubURpdmlzb3I7CisKKyAgICAgICAgICAgICAgICB0cmFu
c2xhdGVkW2ldLmF0dHJpYnV0ZSA9ICZhdHRyaWJzW2ldOworICAgICAgICAgICAgICAgIHRyYW5z
bGF0ZWRbaV0uc3RyaWRlID0gb3V0cHV0RWxlbWVudFNpemU7CisgICAgICAgICAgICAgICAgdHJh
bnNsYXRlZFtpXS5vZmZzZXQgPSBzdHJlYW1PZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFtQ3VycmVudFZh
bHVlQnVmZmVyW2ldKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbUN1
cnJlbnRWYWx1ZUJ1ZmZlcltpXSA9IG5ldyBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2Uo
bVJlbmRlcmVyLCBDT05TVEFOVF9WRVJURVhfQlVGRkVSX1NJWkUpOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIFN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZSAqYnVm
ZmVyID0gbUN1cnJlbnRWYWx1ZUJ1ZmZlcltpXTsKKworICAgICAgICAgICAgICAgIGlmIChtQ3Vy
cmVudFZhbHVlW2ldWzBdICE9IGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZVswXSB8fAorICAgICAg
ICAgICAgICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzFdICE9IGF0dHJpYnNbaV0ubUN1cnJlbnRW
YWx1ZVsxXSB8fAorICAgICAgICAgICAgICAgICAgICBtQ3VycmVudFZhbHVlW2ldWzJdICE9IGF0
dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZVsyXSB8fAorICAgICAgICAgICAgICAgICAgICBtQ3VycmVu
dFZhbHVlW2ldWzNdICE9IGF0dHJpYnNbaV0ubUN1cnJlbnRWYWx1ZVszXSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByZXF1aXJlZFNwYWNlID0g
c2l6ZW9mKGZsb2F0KSAqIDQ7CisgICAgICAgICAgICAgICAgICAgIGlmICghYnVmZmVyLT5yZXNl
cnZlUmF3RGF0YVNwYWNlKHJlcXVpcmVkU3BhY2UpKQorICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfT1VUX09GX01FTU9SWTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpbnQgc3RyZWFtT2Zmc2V0ID0gYnVm
ZmVyLT5zdG9yZVJhd0RhdGEoYXR0cmlic1tpXS5tQ3VycmVudFZhbHVlLCByZXF1aXJlZFNwYWNl
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmVhbU9mZnNldCA9PSAtMSkKKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9N
RU1PUlk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBtQ3Vy
cmVudFZhbHVlT2Zmc2V0c1tpXSA9IHN0cmVhbU9mZnNldDsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnN0b3JhZ2UgPSBOVUxMOworICAgICAgICAg
ICAgICAgIHRyYW5zbGF0ZWRbaV0udmVydGV4QnVmZmVyID0gbUN1cnJlbnRWYWx1ZUJ1ZmZlcltp
XS0+Z2V0VmVydGV4QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5zZXJp
YWwgPSBtQ3VycmVudFZhbHVlQnVmZmVyW2ldLT5nZXRTZXJpYWwoKTsKKyAgICAgICAgICAgICAg
ICB0cmFuc2xhdGVkW2ldLmRpdmlzb3IgPSAwOworCisgICAgICAgICAgICAgICAgdHJhbnNsYXRl
ZFtpXS5hdHRyaWJ1dGUgPSAmYXR0cmlic1tpXTsKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVk
W2ldLnN0cmlkZSA9IDA7CisgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5vZmZzZXQgPSBt
Q3VycmVudFZhbHVlT2Zmc2V0c1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQor
ICAgIHsKKyAgICAgICAgaWYgKHRyYW5zbGF0ZWRbaV0uYWN0aXZlICYmIGF0dHJpYnNbaV0ubUFy
cmF5RW5hYmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0g
YXR0cmlic1tpXS5tQm91bmRCdWZmZXIuZ2V0KCk7CisKKyAgICAgICAgICAgIGlmIChidWZmZXIp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5wcm9tb3RlU3RhdGljVXNh
Z2UoY291bnQgKiBhdHRyaWJzW2ldLnR5cGVTaXplKCkpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIEdMX05PX0VSUk9SOworfQorCit9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERhdGFNYW5h
Z2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEYXRhTWFuYWdlci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBW
ZXJ0ZXhEYXRhTWFuYWdlci5oOiBEZWZpbmVzIHRoZSBWZXJ0ZXhEYXRhTWFuYWdlciwgYSBjbGFz
cyB0aGF0CisvLyBydW5zIHRoZSBCdWZmZXIgdHJhbnNsYXRpb24gcHJvY2Vzcy4KKworI2lmbmRl
ZiBMSUJHTEVTVjJfUkVOREVSRVJfVkVSVEVYREFUQU1BTkFHRVJfSF8KKyNkZWZpbmUgTElCR0xF
U1YyX1JFTkRFUkVSX1ZFUlRFWERBVEFNQU5BR0VSX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIv
Q29uc3RhbnRzLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNl
IGdsCit7CitjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGU7CitjbGFzcyBQcm9ncmFtQmluYXJ5OworfQor
CituYW1lc3BhY2UgcngKK3sKK2NsYXNzIEJ1ZmZlclN0b3JhZ2U7CitjbGFzcyBTdHJlYW1pbmdW
ZXJ0ZXhCdWZmZXJJbnRlcmZhY2U7CitjbGFzcyBWZXJ0ZXhCdWZmZXI7CitjbGFzcyBSZW5kZXJl
cjsKKworc3RydWN0IFRyYW5zbGF0ZWRBdHRyaWJ1dGUKK3sKKyAgICBib29sIGFjdGl2ZTsKKwor
ICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgKmF0dHJpYnV0ZTsKKyAgICBVSU5UIG9mZnNl
dDsKKyAgICBVSU5UIHN0cmlkZTsgICAvLyAwIG1lYW5zIG5vdCB0byBhZHZhbmNlIHRoZSByZWFk
IHBvaW50ZXIgYXQgYWxsCisKKyAgICBWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlcjsKKyAgICBC
dWZmZXJTdG9yYWdlICpzdG9yYWdlOworICAgIHVuc2lnbmVkIGludCBzZXJpYWw7CisgICAgdW5z
aWduZWQgaW50IGRpdmlzb3I7Cit9OworCitjbGFzcyBWZXJ0ZXhEYXRhTWFuYWdlcgoreworICBw
dWJsaWM6CisgICAgVmVydGV4RGF0YU1hbmFnZXIocng6OlJlbmRlcmVyICpyZW5kZXJlcik7Cisg
ICAgdmlydHVhbCB+VmVydGV4RGF0YU1hbmFnZXIoKTsKKworICAgIEdMZW51bSBwcmVwYXJlVmVy
dGV4RGF0YShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlIGF0dHJpYnNbXSwgZ2w6OlByb2dyYW1C
aW5hcnkgKnByb2dyYW1CaW5hcnksIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBUcmFuc2xh
dGVkQXR0cmlidXRlICpvdXRBdHRyaWJzLCBHTHNpemVpIGluc3RhbmNlcyk7CisKKyAgcHJpdmF0
ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVmVydGV4RGF0YU1hbmFnZXIpOworCisg
ICAgcng6OlJlbmRlcmVyICpjb25zdCBtUmVuZGVyZXI7CisKKyAgICBTdHJlYW1pbmdWZXJ0ZXhC
dWZmZXJJbnRlcmZhY2UgKm1TdHJlYW1pbmdCdWZmZXI7CisKKyAgICBmbG9hdCBtQ3VycmVudFZh
bHVlW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdWzRdOworICAgIFN0cmVhbWluZ1ZlcnRleEJ1ZmZl
ckludGVyZmFjZSAqbUN1cnJlbnRWYWx1ZUJ1ZmZlcltnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsK
KyAgICBzdGQ6OnNpemVfdCBtQ3VycmVudFZhbHVlT2Zmc2V0c1tnbDo6TUFYX1ZFUlRFWF9BVFRS
SUJTXTsKK307CisKK30KKworI2VuZGlmICAgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1ZFUlRFWERB
VEFNQU5BR0VSX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGVjbGFyYXRp
b25DYWNoZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDIxNyBAQAorI2luY2x1ZGUgInByZWNvbXBpbGVkLmgiCisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gVmVydGV4RGVjbGFyYXRpb25DYWNoZS5jcHA6IEltcGxlbWVudHMgYSBoZWxwZXIg
Y2xhc3MgdG8gY29uc3RydWN0IGFuZCBjYWNoZSB2ZXJ0ZXggZGVjbGFyYXRpb25zLgorCisjaW5j
bHVkZSAibGliR0xFU3YyL1Byb2dyYW1CaW5hcnkuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIvQ29u
dGV4dC5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhCdWZmZXI5LmgiCisj
aW5jbHVkZSAibGliR0xFU3YyL3JlbmRlcmVyL1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuaCIKKwor
bmFtZXNwYWNlIHJ4Cit7CisKK1ZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OlZlcnRleERlY2xhcmF0
aW9uQ2FjaGUoKSA6IG1NYXhMcnUoMCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9W
RVJURVhfREVDTF9DQUNIRV9FTlRSSUVTOyBpKyspCisgICAgeworICAgICAgICBtVmVydGV4RGVj
bENhY2hlW2ldLnZlcnRleERlY2xhcmF0aW9uID0gTlVMTDsKKyAgICAgICAgbVZlcnRleERlY2xD
YWNoZVtpXS5scnVDb3VudCA9IDA7CisgICAgfQorCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBn
bDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgeworICAgICAgICBtQXBwbGllZFZCc1tp
XS5zZXJpYWwgPSAwOworICAgIH0KKworICAgIG1MYXN0U2V0VkRlY2wgPSBOVUxMOworICAgIG1J
bnN0YW5jaW5nRW5hYmxlZCA9IHRydWU7Cit9CisKK1ZlcnRleERlY2xhcmF0aW9uQ2FjaGU6On5W
ZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlKCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9W
RVJURVhfREVDTF9DQUNIRV9FTlRSSUVTOyBpKyspCisgICAgeworICAgICAgICBpZiAobVZlcnRl
eERlY2xDYWNoZVtpXS52ZXJ0ZXhEZWNsYXJhdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAg
bVZlcnRleERlY2xDYWNoZVtpXS52ZXJ0ZXhEZWNsYXJhdGlvbi0+UmVsZWFzZSgpOworICAgICAg
ICB9CisgICAgfQorfQorCitHTGVudW0gVmVydGV4RGVjbGFyYXRpb25DYWNoZTo6YXBwbHlEZWNs
YXJhdGlvbihJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UsIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0
cmlidXRlc1tdLCBnbDo6UHJvZ3JhbUJpbmFyeSAqcHJvZ3JhbUJpbmFyeSwgR0xzaXplaSBpbnN0
YW5jZXMsIEdMc2l6ZWkgKnJlcGVhdERyYXcpCit7CisgICAgKnJlcGVhdERyYXcgPSAxOworCisg
ICAgaW50IGluZGV4ZWRBdHRyaWJ1dGUgPSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOworICAgIGlu
dCBpbnN0YW5jZWRBdHRyaWJ1dGUgPSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOworCisgICAgaWYg
KGluc3RhbmNlcyA+IDApCisgICAgeworICAgICAgICAvLyBGaW5kIGFuIGluZGV4ZWQgYXR0cmli
dXRlIHRvIGJlIG1hcHBlZCB0byBEM0Qgc3RyZWFtIDAKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChhdHRyaWJ1dGVzW2ldLmFjdGl2ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAoaW5kZXhlZEF0dHJpYnV0ZSA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTICYmIGF0dHJp
YnV0ZXNbaV0uZGl2aXNvciA9PSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgaW5kZXhlZEF0dHJpYnV0ZSA9IGk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGluc3RhbmNlZEF0dHJpYnV0ZSA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRS
SUJTICYmIGF0dHJpYnV0ZXNbaV0uZGl2aXNvciAhPSAwKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgaW5zdGFuY2VkQXR0cmlidXRlID0gaTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ZWRBdHRyaWJ1dGUgIT0gZ2w6Ok1BWF9WRVJU
RVhfQVRUUklCUyAmJiBpbnN0YW5jZWRBdHRyaWJ1dGUgIT0gZ2w6Ok1BWF9WRVJURVhfQVRUUklC
UykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgLy8gRm91bmQgYm90aCBhbiBpbmRleGVk
IGFuZCBpbnN0YW5jZWQgYXR0cmlidXRlCisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoaW5kZXhlZEF0dHJpYnV0ZSA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBEM0RWRVJURVhFTEVNRU5UOSBlbGVtZW50c1tnbDo6TUFYX1ZFUlRF
WF9BVFRSSUJTICsgMV07CisgICAgRDNEVkVSVEVYRUxFTUVOVDkgKmVsZW1lbnQgPSAmZWxlbWVu
dHNbMF07CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7
IGkrKykKKyAgICB7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzW2ldLmFjdGl2ZSkKKyAgICAgICAg
eworICAgICAgICAgICAgLy8gRGlyZWN0bHkgYmluZGluZyB0aGUgc3RvcmFnZSBidWZmZXIgaXMg
bm90IHN1cHBvcnRlZCBmb3IgZDNkOQorICAgICAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZXNbaV0u
c3RvcmFnZSA9PSBOVUxMKTsKKworICAgICAgICAgICAgaW50IHN0cmVhbSA9IGk7CisKKyAgICAg
ICAgICAgIGlmIChpbnN0YW5jZXMgPiAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IC8vIER1ZSB0byBhIGJ1ZyBvbiBBVEkgY2FyZHMgd2UgY2FuJ3QgZW5hYmxlIGluc3RhbmNpbmcg
d2hlbiBub25lIG9mIHRoZSBhdHRyaWJ1dGVzIGFyZSBpbnN0YW5jZWQuCisgICAgICAgICAgICAg
ICAgaWYgKGluc3RhbmNlZEF0dHJpYnV0ZSA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgKnJlcGVhdERyYXcgPSBpbnN0YW5j
ZXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpID09IGluZGV4ZWRBdHRyaWJ1dGUpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSA9IDA7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaSA9
PSAwKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJl
YW0gPSBpbmRleGVkQXR0cmlidXRlOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAgICAgVUlOVCBmcmVxdWVuY3kgPSAxOworICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXNbaV0uZGl2aXNvciA9PSAwKQorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3kgPSBEM0RT
VFJFQU1TT1VSQ0VfSU5ERVhFRERBVEEgfCBpbnN0YW5jZXM7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3kgPSBEM0RTVFJFQU1TT1VSQ0VfSU5TVEFOQ0VE
QVRBIHwgYXR0cmlidXRlc1tpXS5kaXZpc29yOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPlNldFN0cmVhbVNv
dXJjZUZyZXEoc3RyZWFtLCBmcmVxdWVuY3kpOworICAgICAgICAgICAgICAgICAgICBtSW5zdGFu
Y2luZ0VuYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgVmVydGV4QnVmZmVyOSAqdmVydGV4QnVmZmVyID0gVmVydGV4QnVmZmVyOTo6
bWFrZVZlcnRleEJ1ZmZlcjkoYXR0cmlidXRlc1tpXS52ZXJ0ZXhCdWZmZXIpOworCisgICAgICAg
ICAgICBpZiAobUFwcGxpZWRWQnNbc3RyZWFtXS5zZXJpYWwgIT0gYXR0cmlidXRlc1tpXS5zZXJp
YWwgfHwKKyAgICAgICAgICAgICAgICBtQXBwbGllZFZCc1tzdHJlYW1dLnN0cmlkZSAhPSBhdHRy
aWJ1dGVzW2ldLnN0cmlkZSB8fAorICAgICAgICAgICAgICAgIG1BcHBsaWVkVkJzW3N0cmVhbV0u
b2Zmc2V0ICE9IGF0dHJpYnV0ZXNbaV0ub2Zmc2V0KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGRldmljZS0+U2V0U3RyZWFtU291cmNlKHN0cmVhbSwgdmVydGV4QnVmZmVyLT5nZXRC
dWZmZXIoKSwgYXR0cmlidXRlc1tpXS5vZmZzZXQsIGF0dHJpYnV0ZXNbaV0uc3RyaWRlKTsKKyAg
ICAgICAgICAgICAgICBtQXBwbGllZFZCc1tzdHJlYW1dLnNlcmlhbCA9IGF0dHJpYnV0ZXNbaV0u
c2VyaWFsOworICAgICAgICAgICAgICAgIG1BcHBsaWVkVkJzW3N0cmVhbV0uc3RyaWRlID0gYXR0
cmlidXRlc1tpXS5zdHJpZGU7CisgICAgICAgICAgICAgICAgbUFwcGxpZWRWQnNbc3RyZWFtXS5v
ZmZzZXQgPSBhdHRyaWJ1dGVzW2ldLm9mZnNldDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZWxlbWVudC0+U3RyZWFtID0gc3RyZWFtOworICAgICAgICAgICAgZWxlbWVudC0+T2Zmc2V0
ID0gMDsKKyAgICAgICAgICAgIGVsZW1lbnQtPlR5cGUgPSBhdHRyaWJ1dGVzW2ldLmF0dHJpYnV0
ZS0+bUFycmF5RW5hYmxlZCA/IHZlcnRleEJ1ZmZlci0+Z2V0RGVjbFR5cGUoKmF0dHJpYnV0ZXNb
aV0uYXR0cmlidXRlKSA6IEQzRERFQ0xUWVBFX0ZMT0FUNDsKKyAgICAgICAgICAgIGVsZW1lbnQt
Pk1ldGhvZCA9IEQzRERFQ0xNRVRIT0RfREVGQVVMVDsKKyAgICAgICAgICAgIGVsZW1lbnQtPlVz
YWdlID0gRDNEREVDTFVTQUdFX1RFWENPT1JEOworICAgICAgICAgICAgZWxlbWVudC0+VXNhZ2VJ
bmRleCA9IHByb2dyYW1CaW5hcnktPmdldFNlbWFudGljSW5kZXgoaSk7CisgICAgICAgICAgICBl
bGVtZW50Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwg
aW5zdGFuY2VkQXR0cmlidXRlID09IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgeworICAg
ICAgICBpZiAobUluc3RhbmNpbmdFbmFibGVkKQorICAgICAgICB7CisgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBkZXZpY2UtPlNldFN0cmVhbVNvdXJjZUZyZXEoaSwgMSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1JbnN0YW5jaW5nRW5hYmxlZCA9IGZhbHNlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IEQzRFZFUlRFWEVMRU1FTlQ5IGVu
ZCA9IEQzRERFQ0xfRU5EKCk7CisgICAgKihlbGVtZW50KyspID0gZW5kOworCisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBOVU1fVkVSVEVYX0RFQ0xfQ0FDSEVfRU5UUklFUzsgaSsrKQorICAgIHsK
KyAgICAgICAgVmVydGV4RGVjbENhY2hlRW50cnkgKmVudHJ5ID0gJm1WZXJ0ZXhEZWNsQ2FjaGVb
aV07CisgICAgICAgIGlmIChtZW1jbXAoZW50cnktPmNhY2hlZEVsZW1lbnRzLCBlbGVtZW50cywg
KGVsZW1lbnQgLSBlbGVtZW50cykgKiBzaXplb2YoRDNEVkVSVEVYRUxFTUVOVDkpKSA9PSAwICYm
IGVudHJ5LT52ZXJ0ZXhEZWNsYXJhdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgZW50cnkt
PmxydUNvdW50ID0gKyttTWF4THJ1OworICAgICAgICAgICAgaWYoZW50cnktPnZlcnRleERlY2xh
cmF0aW9uICE9IG1MYXN0U2V0VkRlY2wpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZGV2aWNlLT5TZXRWZXJ0ZXhEZWNsYXJhdGlvbihlbnRyeS0+dmVydGV4RGVjbGFyYXRpb24pOwor
ICAgICAgICAgICAgICAgIG1MYXN0U2V0VkRlY2wgPSBlbnRyeS0+dmVydGV4RGVjbGFyYXRpb247
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBHTF9OT19FUlJPUjsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIFZlcnRleERlY2xDYWNoZUVudHJ5ICpsYXN0Q2FjaGUgPSBtVmVy
dGV4RGVjbENhY2hlOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fVkVSVEVYX0RFQ0xf
Q0FDSEVfRU5UUklFUzsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKG1WZXJ0ZXhEZWNsQ2FjaGVb
aV0ubHJ1Q291bnQgPCBsYXN0Q2FjaGUtPmxydUNvdW50KQorICAgICAgICB7CisgICAgICAgICAg
ICBsYXN0Q2FjaGUgPSAmbVZlcnRleERlY2xDYWNoZVtpXTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmIChsYXN0Q2FjaGUtPnZlcnRleERlY2xhcmF0aW9uICE9IE5VTEwpCisgICAgeworICAg
ICAgICBsYXN0Q2FjaGUtPnZlcnRleERlY2xhcmF0aW9uLT5SZWxlYXNlKCk7CisgICAgICAgIGxh
c3RDYWNoZS0+dmVydGV4RGVjbGFyYXRpb24gPSBOVUxMOworICAgICAgICAvLyBtTGFzdFNldFZE
ZWNsIGlzIHNldCB0byB0aGUgcmVwbGFjZW1lbnQsIHNvIHdlIGRvbid0IGhhdmUgdG8gd29ycnkK
KyAgICAgICAgLy8gYWJvdXQgaXQuCisgICAgfQorCisgICAgbWVtY3B5KGxhc3RDYWNoZS0+Y2Fj
aGVkRWxlbWVudHMsIGVsZW1lbnRzLCAoZWxlbWVudCAtIGVsZW1lbnRzKSAqIHNpemVvZihEM0RW
RVJURVhFTEVNRU5UOSkpOworICAgIGRldmljZS0+Q3JlYXRlVmVydGV4RGVjbGFyYXRpb24oZWxl
bWVudHMsICZsYXN0Q2FjaGUtPnZlcnRleERlY2xhcmF0aW9uKTsKKyAgICBkZXZpY2UtPlNldFZl
cnRleERlY2xhcmF0aW9uKGxhc3RDYWNoZS0+dmVydGV4RGVjbGFyYXRpb24pOworICAgIG1MYXN0
U2V0VkRlY2wgPSBsYXN0Q2FjaGUtPnZlcnRleERlY2xhcmF0aW9uOworICAgIGxhc3RDYWNoZS0+
bHJ1Q291bnQgPSArK21NYXhMcnU7CisKKyAgICByZXR1cm4gR0xfTk9fRVJST1I7Cit9CisKK3Zv
aWQgVmVydGV4RGVjbGFyYXRpb25DYWNoZTo6bWFya1N0YXRlRGlydHkoKQoreworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHsKKyAgICAg
ICAgbUFwcGxpZWRWQnNbaV0uc2VyaWFsID0gMDsKKyAgICB9CisKKyAgICBtTGFzdFNldFZEZWNs
ID0gTlVMTDsKKyAgICBtSW5zdGFuY2luZ0VuYWJsZWQgPSB0cnVlOyAgIC8vIEZvcmNlcyBpdCB0
byBiZSBkaXNhYmxlZCB3aGVuIG5vdCB1c2VkCit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvVmVydGV4RGVjbGFyYXRpb25DYWNoZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvVmVydGV4RGVjbGFyYXRpb25DYWNoZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9WZXJ0ZXhEZWNsYXJhdGlvbkNh
Y2hlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBW
ZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmg6IERlZmluZXMgYSBoZWxwZXIgY2xhc3MgdG8gY29uc3Ry
dWN0IGFuZCBjYWNoZSB2ZXJ0ZXggZGVjbGFyYXRpb25zLgorCisjaWZuZGVmIExJQkdMRVNWMl9S
RU5ERVJFUl9WRVJURVhERUNMQVJBVElPTkNBQ0hFX0hfCisjZGVmaW5lIExJQkdMRVNWMl9SRU5E
RVJFUl9WRVJURVhERUNMQVJBVElPTkNBQ0hFX0hfCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvVmVydGV4RGF0YU1hbmFnZXIuaCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBWZXJ0
ZXhEYXRhTWFuYWdlcjsKK30KKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIFZlcnRleERlY2xh
cmF0aW9uQ2FjaGUKK3sKKyAgcHVibGljOgorICAgIFZlcnRleERlY2xhcmF0aW9uQ2FjaGUoKTsK
KyAgICB+VmVydGV4RGVjbGFyYXRpb25DYWNoZSgpOworCisgICAgR0xlbnVtIGFwcGx5RGVjbGFy
YXRpb24oSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJp
YnV0ZXNbXSwgZ2w6OlByb2dyYW1CaW5hcnkgKnByb2dyYW1CaW5hcnksIEdMc2l6ZWkgaW5zdGFu
Y2VzLCBHTHNpemVpICpyZXBlYXREcmF3KTsKKworICAgIHZvaWQgbWFya1N0YXRlRGlydHkoKTsK
KworICBwcml2YXRlOgorICAgIFVJTlQgbU1heExydTsKKworICAgIGVudW0geyBOVU1fVkVSVEVY
X0RFQ0xfQ0FDSEVfRU5UUklFUyA9IDMyIH07CisKKyAgICBzdHJ1Y3QgVkJEYXRhCisgICAgewor
ICAgICAgICB1bnNpZ25lZCBpbnQgc2VyaWFsOworICAgICAgICB1bnNpZ25lZCBpbnQgc3RyaWRl
OworICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0OworICAgIH07CisKKyAgICBWQkRhdGEgbUFw
cGxpZWRWQnNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU107CisgICAgSURpcmVjdDNEVmVydGV4RGVj
bGFyYXRpb245ICptTGFzdFNldFZEZWNsOworICAgIGJvb2wgbUluc3RhbmNpbmdFbmFibGVkOwor
CisgICAgc3RydWN0IFZlcnRleERlY2xDYWNoZUVudHJ5CisgICAgeworICAgICAgICBEM0RWRVJU
RVhFTEVNRU5UOSBjYWNoZWRFbGVtZW50c1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTICsgMV07Cisg
ICAgICAgIFVJTlQgbHJ1Q291bnQ7CisgICAgICAgIElEaXJlY3QzRFZlcnRleERlY2xhcmF0aW9u
OSAqdmVydGV4RGVjbGFyYXRpb247CisgICAgfSBtVmVydGV4RGVjbENhY2hlW05VTV9WRVJURVhf
REVDTF9DQUNIRV9FTlRSSUVTXTsKK307CisKK30KKworI2VuZGlmIC8vIExJQkdMRVNWMl9SRU5E
RVJFUl9WRVJURVhERUNMQVJBVElPTkNBQ0hFX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL2dlbmVyYXRlbWlwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9nZW5lcmF0ZW1p
cC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9nZW5lcmF0ZW1pcC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwMyBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKworLy8gZ2VuZXJhdGVtaXAuaDogRGVmaW5lcyB0aGUgR2VuZXJh
dGVNaXAgZnVuY3Rpb24sIHRlbXBsYXRlZCBvbiB0aGUgZm9ybWF0CisvLyB0eXBlIG9mIHRoZSBp
bWFnZSBmb3Igd2hpY2ggbWlwIGxldmVscyBhcmUgYmVpbmcgZ2VuZXJhdGVkLgorCisjaWZuZGVm
IExJQkdMRVNWMl9SRU5ERVJFUl9HRU5FUkFURU1JUF9IXworI2RlZmluZSBMSUJHTEVTVjJfUkVO
REVSRVJfR0VORVJBVEVNSVBfSF8KKworI2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgor
CituYW1lc3BhY2UgcngKK3sKK3N0cnVjdCBMOAoreworICAgIHVuc2lnbmVkIGNoYXIgTDsKKwor
ICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoTDggKmRzdCwgY29uc3QgTDggKnNyYzEsIGNvbnN0IEw4
ICpzcmMyKQorICAgIHsKKyAgICAgICAgZHN0LT5MID0gKChzcmMxLT5MIF4gc3JjMi0+TCkgPj4g
MSkgKyAoc3JjMS0+TCAmIHNyYzItPkwpOworICAgIH0KK307CisKK3R5cGVkZWYgTDggUjg7IC8v
IFI4IHR5cGUgaXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIG1pcCBwdXJwb3NlcwordHlw
ZWRlZiBMOCBBODsgLy8gQTggdHlwZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgbWlw
IHB1cnBvc2VzCisKK3N0cnVjdCBBOEw4Cit7CisgICAgdW5zaWduZWQgY2hhciBMOworICAgIHVu
c2lnbmVkIGNoYXIgQTsKKworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQThMOCAqZHN0LCBjb25z
dCBBOEw4ICpzcmMxLCBjb25zdCBBOEw4ICpzcmMyKQorICAgIHsKKyAgICAgICAgKih1bnNpZ25l
ZCBzaG9ydCopZHN0ID0gKCgoKih1bnNpZ25lZCBzaG9ydCopc3JjMSBeICoodW5zaWduZWQgc2hv
cnQqKXNyYzIpICYgMHhGRUZFKSA+PiAxKSArICgqKHVuc2lnbmVkIHNob3J0KilzcmMxICYgKih1
bnNpZ25lZCBzaG9ydCopc3JjMik7CisgICAgfQorfTsKKwordHlwZWRlZiBBOEw4IFI4Rzg7IC8v
IFI4RzggdHlwZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgbWlwIHB1cnBvc2VzCisK
K3N0cnVjdCBBOFI4RzhCOAoreworICAgIHVuc2lnbmVkIGNoYXIgQjsKKyAgICB1bnNpZ25lZCBj
aGFyIEc7CisgICAgdW5zaWduZWQgY2hhciBSOworICAgIHVuc2lnbmVkIGNoYXIgQTsKKworICAg
IHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQThSOEc4QjggKmRzdCwgY29uc3QgQThSOEc4QjggKnNyYzEs
IGNvbnN0IEE4UjhHOEI4ICpzcmMyKQorICAgIHsKKyAgICAgICAgKih1bnNpZ25lZCBpbnQqKWRz
dCA9ICgoKCoodW5zaWduZWQgaW50KilzcmMxIF4gKih1bnNpZ25lZCBpbnQqKXNyYzIpICYgMHhG
RUZFRkVGRSkgPj4gMSkgKyAoKih1bnNpZ25lZCBpbnQqKXNyYzEgJiAqKHVuc2lnbmVkIGludCop
c3JjMik7CisgICAgfQorfTsKKwordHlwZWRlZiBBOFI4RzhCOCBSOEc4QjhBODsgLy8gUjhHOEI4
QTggdHlwZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgbWlwIHB1cnBvc2VzCisKK3N0
cnVjdCBBMTZCMTZHMTZSMTZGCit7CisgICAgdW5zaWduZWQgc2hvcnQgUjsKKyAgICB1bnNpZ25l
ZCBzaG9ydCBHOworICAgIHVuc2lnbmVkIHNob3J0IEI7CisgICAgdW5zaWduZWQgc2hvcnQgQTsK
KworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQTE2QjE2RzE2UjE2RiAqZHN0LCBjb25zdCBBMTZC
MTZHMTZSMTZGICpzcmMxLCBjb25zdCBBMTZCMTZHMTZSMTZGICpzcmMyKQorICAgIHsKKyAgICAg
ICAgZHN0LT5SID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoKGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNy
YzEtPlIpICsgZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjMi0+UikpICogMC41Zik7CisgICAgICAg
IGRzdC0+RyA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KChnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMx
LT5HKSArIGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYzItPkcpKSAqIDAuNWYpOworICAgICAgICBk
c3QtPkIgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNigoZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjMS0+
QikgKyBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMyLT5CKSkgKiAwLjVmKTsKKyAgICAgICAgZHN0
LT5BID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoKGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYzEtPkEp
ICsgZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjMi0+QSkpICogMC41Zik7CisgICAgfQorfTsKKwor
c3RydWN0IFIxNkYKK3sKKyAgICB1bnNpZ25lZCBzaG9ydCBSOworCisgICAgc3RhdGljIHZvaWQg
YXZlcmFnZShSMTZGICpkc3QsIGNvbnN0IFIxNkYgKnNyYzEsIGNvbnN0IFIxNkYgKnNyYzIpCisg
ICAgeworICAgICAgICBkc3QtPlIgPSBnbDo6ZmxvYXQzMlRvRmxvYXQxNigoZ2w6OmZsb2F0MTZU
b0Zsb2F0MzIoc3JjMS0+UikgKyBnbDo6ZmxvYXQxNlRvRmxvYXQzMihzcmMyLT5SKSkgKiAwLjVm
KTsKKyAgICB9Cit9OworCitzdHJ1Y3QgUjE2RzE2RgoreworICAgIHVuc2lnbmVkIHNob3J0IFI7
CisgICAgdW5zaWduZWQgc2hvcnQgRzsKKworICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoUjE2RzE2
RiAqZHN0LCBjb25zdCBSMTZHMTZGICpzcmMxLCBjb25zdCBSMTZHMTZGICpzcmMyKQorICAgIHsK
KyAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0MzJUb0Zsb2F0MTYoKGdsOjpmbG9hdDE2VG9GbG9h
dDMyKHNyYzEtPlIpICsgZ2w6OmZsb2F0MTZUb0Zsb2F0MzIoc3JjMi0+UikpICogMC41Zik7Cisg
ICAgICAgIGRzdC0+RyA9IGdsOjpmbG9hdDMyVG9GbG9hdDE2KChnbDo6ZmxvYXQxNlRvRmxvYXQz
MihzcmMxLT5HKSArIGdsOjpmbG9hdDE2VG9GbG9hdDMyKHNyYzItPkcpKSAqIDAuNWYpOworICAg
IH0KK307CisKK3N0cnVjdCBBMzJCMzJHMzJSMzJGCit7CisgICAgZmxvYXQgUjsKKyAgICBmbG9h
dCBHOworICAgIGZsb2F0IEI7CisgICAgZmxvYXQgQTsKKworICAgIHN0YXRpYyB2b2lkIGF2ZXJh
Z2UoQTMyQjMyRzMyUjMyRiAqZHN0LCBjb25zdCBBMzJCMzJHMzJSMzJGICpzcmMxLCBjb25zdCBB
MzJCMzJHMzJSMzJGICpzcmMyKQorICAgIHsKKyAgICAgICAgZHN0LT5SID0gKHNyYzEtPlIgKyBz
cmMyLT5SKSAqIDAuNWY7CisgICAgICAgIGRzdC0+RyA9IChzcmMxLT5HICsgc3JjMi0+RykgKiAw
LjVmOworICAgICAgICBkc3QtPkIgPSAoc3JjMS0+QiArIHNyYzItPkIpICogMC41ZjsKKyAgICAg
ICAgZHN0LT5BID0gKHNyYzEtPkEgKyBzcmMyLT5BKSAqIDAuNWY7CisgICAgfQorfTsKKworc3Ry
dWN0IFIzMkYKK3sKKyAgICBmbG9hdCBSOworCisgICAgc3RhdGljIHZvaWQgYXZlcmFnZShSMzJG
ICpkc3QsIGNvbnN0IFIzMkYgKnNyYzEsIGNvbnN0IFIzMkYgKnNyYzIpCisgICAgeworICAgICAg
ICBkc3QtPlIgPSAoc3JjMS0+UiArIHNyYzItPlIpICogMC41ZjsKKyAgICB9Cit9OworCitzdHJ1
Y3QgUjMyRzMyRgoreworICAgIGZsb2F0IFI7CisgICAgZmxvYXQgRzsKKworICAgIHN0YXRpYyB2
b2lkIGF2ZXJhZ2UoUjMyRzMyRiAqZHN0LCBjb25zdCBSMzJHMzJGICpzcmMxLCBjb25zdCBSMzJH
MzJGICpzcmMyKQorICAgIHsKKyAgICAgICAgZHN0LT5SID0gKHNyYzEtPlIgKyBzcmMyLT5SKSAq
IDAuNWY7CisgICAgICAgIGRzdC0+RyA9IChzcmMxLT5HICsgc3JjMi0+RykgKiAwLjVmOworICAg
IH0KK307CisKK3N0cnVjdCBSMzJHMzJCMzJGCit7CisgICAgZmxvYXQgUjsKKyAgICBmbG9hdCBH
OworICAgIGZsb2F0IEI7CisKKyAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKFIzMkczMkIzMkYgKmRz
dCwgY29uc3QgUjMyRzMyQjMyRiAqc3JjMSwgY29uc3QgUjMyRzMyQjMyRiAqc3JjMikKKyAgICB7
CisgICAgICAgIGRzdC0+UiA9IChzcmMxLT5SICsgc3JjMi0+UikgKiAwLjVmOworICAgICAgICBk
c3QtPkcgPSAoc3JjMS0+RyArIHNyYzItPkcpICogMC41ZjsKKyAgICAgICAgZHN0LT5CID0gKHNy
YzEtPkIgKyBzcmMyLT5CKSAqIDAuNWY7CisgICAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitzdGF0aWMgdm9pZCBHZW5lcmF0ZU1pcCh1bnNpZ25lZCBpbnQgc291cmNlV2lkdGgsIHVu
c2lnbmVkIGludCBzb3VyY2VIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
bnNpZ25lZCBjaGFyICpzb3VyY2VEYXRhLCBpbnQgc291cmNlUGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpkZXN0RGF0YSwgaW50IGRlc3RQaXRjaCkKK3sKKyAg
ICB1bnNpZ25lZCBpbnQgbWlwV2lkdGggPSBzdGQ6Om1heCgxVSwgc291cmNlV2lkdGggPj4gMSk7
CisgICAgdW5zaWduZWQgaW50IG1pcEhlaWdodCA9IHN0ZDo6bWF4KDFVLCBzb3VyY2VIZWlnaHQg
Pj4gMSk7CisKKyAgICBpZiAoc291cmNlSGVpZ2h0ID09IDEpCisgICAgeworICAgICAgICBBU1NF
UlQoc291cmNlV2lkdGggIT0gMSk7CisKKyAgICAgICAgY29uc3QgVCAqc3JjID0gKGNvbnN0IFQq
KXNvdXJjZURhdGE7CisgICAgICAgIFQgKmRzdCA9IChUKilkZXN0RGF0YTsKKworICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCB4ID0gMDsgeCA8IG1pcFdpZHRoOyB4KyspCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFQ6OmF2ZXJhZ2UoJmRzdFt4XSwgJnNyY1t4ICogMl0sICZzcmNbeCAqIDIgKyAx
XSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoc291cmNlV2lkdGggPT0gMSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChzb3VyY2VIZWlnaHQgIT0gMSk7CisKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgeSA9IDA7IHkgPCBtaXBIZWlnaHQ7IHkrKykKKyAgICAgICAgeworICAgICAg
ICAgICAgY29uc3QgVCAqc3JjMCA9IChjb25zdCBUKikoc291cmNlRGF0YSArIHkgKiAyICogc291
cmNlUGl0Y2gpOworICAgICAgICAgICAgY29uc3QgVCAqc3JjMSA9IChjb25zdCBUKikoc291cmNl
RGF0YSArIHkgKiAyICogc291cmNlUGl0Y2ggKyBzb3VyY2VQaXRjaCk7CisgICAgICAgICAgICBU
ICpkc3QgPSAoVCopKGRlc3REYXRhICsgeSAqIGRlc3RQaXRjaCk7CisKKyAgICAgICAgICAgIFQ6
OmF2ZXJhZ2UoZHN0LCBzcmMwLCBzcmMxKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCB5ID0gMDsgeSA8IG1pcEhlaWdodDsgeSsr
KQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBUICpzcmMwID0gKGNvbnN0IFQqKShzb3Vy
Y2VEYXRhICsgeSAqIDIgKiBzb3VyY2VQaXRjaCk7CisgICAgICAgICAgICBjb25zdCBUICpzcmMx
ID0gKGNvbnN0IFQqKShzb3VyY2VEYXRhICsgeSAqIDIgKiBzb3VyY2VQaXRjaCArIHNvdXJjZVBp
dGNoKTsKKyAgICAgICAgICAgIFQgKmRzdCA9IChUKikoZGVzdERhdGEgKyB5ICogZGVzdFBpdGNo
KTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgeCA9IDA7IHggPCBtaXBXaWR0aDsg
eCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFQgdG1wMDsKKyAgICAgICAgICAg
ICAgICBUIHRtcDE7CisKKyAgICAgICAgICAgICAgICBUOjphdmVyYWdlKCZ0bXAwLCAmc3JjMFt4
ICogMl0sICZzcmMwW3ggKiAyICsgMV0pOworICAgICAgICAgICAgICAgIFQ6OmF2ZXJhZ2UoJnRt
cDEsICZzcmMxW3ggKiAyXSwgJnNyYzFbeCAqIDIgKyAxXSk7CisgICAgICAgICAgICAgICAgVDo6
YXZlcmFnZSgmZHN0W3hdLCAmdG1wMCwgJnRtcDEpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorfQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX0dFTkVSQVRFTUlQ
X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3JlbmRlcmVyOV91dGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5kZXJlcjlfdXRpbHMuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9yZW5k
ZXJlcjlfdXRpbHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwMCBAQAorI2luY2x1ZGUg
InByZWNvbXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyByZW5kZXJlcjlfdXRpbHMu
Y3BwOiBDb252ZXJzaW9uIGZ1bmN0aW9ucyBhbmQgb3RoZXIgdXRpbGl0eSByb3V0aW5lcworLy8g
c3BlY2lmaWMgdG8gdGhlIEQzRDkgcmVuZGVyZXIuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVu
ZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL21hdGh1dGlsLmgi
CisjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1
Zy5oIgorCituYW1lc3BhY2UgZ2xfZDNkOQoreworCitEM0RDTVBGVU5DIENvbnZlcnRDb21wYXJp
c29uKEdMZW51bSBjb21wYXJpc29uKQoreworICAgIEQzRENNUEZVTkMgZDNkQ29tcCA9IEQzRENN
UF9BTFdBWVM7CisgICAgc3dpdGNoIChjb21wYXJpc29uKQorICAgIHsKKyAgICAgIGNhc2UgR0xf
TkVWRVI6ICAgIGQzZENvbXAgPSBEM0RDTVBfTkVWRVI7ICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfQUxXQVlTOiAgIGQzZENvbXAgPSBEM0RDTVBfQUxXQVlTOyAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfTEVTUzogICAgIGQzZENvbXAgPSBEM0RDTVBfTEVTUzsgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfTEVRVUFMOiAgIGQzZENvbXAgPSBEM0RDTVBfTEVTU0VRVUFMOyAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfRVFVQUw6ICAgIGQzZENvbXAgPSBEM0RDTVBfRVFVQUw7
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfR1JFQVRFUjogIGQzZENvbXAgPSBEM0RDTVBf
R1JFQVRFUjsgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfR0VRVUFMOiAgIGQzZENvbXAgPSBE
M0RDTVBfR1JFQVRFUkVRVUFMOyBicmVhazsKKyAgICAgIGNhc2UgR0xfTk9URVFVQUw6IGQzZENv
bXAgPSBEM0RDTVBfTk9URVFVQUw7ICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hB
QkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIGQzZENvbXA7Cit9CisKK0QzRENPTE9SIENvbnZl
cnRDb2xvcihnbDo6Q29sb3IgY29sb3IpCit7CisgICAgcmV0dXJuIEQzRENPTE9SX1JHQkEoZ2w6
OnVub3JtPDg+KGNvbG9yLnJlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OnVub3Jt
PDg+KGNvbG9yLmdyZWVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6dW5vcm08OD4o
Y29sb3IuYmx1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OnVub3JtPDg+KGNvbG9y
LmFscGhhKSk7Cit9CisKK0QzREJMRU5EIENvbnZlcnRCbGVuZEZ1bmMoR0xlbnVtIGJsZW5kKQor
eworICAgIEQzREJMRU5EIGQzZEJsZW5kID0gRDNEQkxFTkRfWkVSTzsKKworICAgIHN3aXRjaCAo
YmxlbmQpCisgICAgeworICAgICAgY2FzZSBHTF9aRVJPOiAgICAgICAgICAgICAgICAgICAgIGQz
ZEJsZW5kID0gRDNEQkxFTkRfWkVSTzsgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9P
TkU6ICAgICAgICAgICAgICAgICAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfT05FOyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9TUkNfQ09MT1I6ICAgICAgICAgICAgICAgIGQzZEJs
ZW5kID0gRDNEQkxFTkRfU1JDQ09MT1I7ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVf
TUlOVVNfU1JDX0NPTE9SOiAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WU1JDQ09MT1I7ICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6ICAgICAgICAgICAgICAgIGQzZEJsZW5k
ID0gRDNEQkxFTkRfREVTVENPTE9SOyAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlO
VVNfRFNUX0NPTE9SOiAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WREVTVENPTE9SOyAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9TUkNfQUxQSEE6ICAgICAgICAgICAgICAgIGQzZEJsZW5kID0g
RDNEQkxFTkRfU1JDQUxQSEE7ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNf
U1JDX0FMUEhBOiAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WU1JDQUxQSEE7ICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9EU1RfQUxQSEE6ICAgICAgICAgICAgICAgIGQzZEJsZW5kID0gRDNE
QkxFTkRfREVTVEFMUEhBOyAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNU
X0FMUEhBOiAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WREVTVEFMUEhBOyAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjogICAgICAgICAgIGQzZEJsZW5kID0gRDNEQkxF
TkRfQkxFTkRGQUNUT1I7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RB
TlRfQ09MT1I6IGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WQkxFTkRGQUNUT1I7IGJyZWFrOworICAg
ICAgY2FzZSBHTF9DT05TVEFOVF9BTFBIQTogICAgICAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRf
QkxFTkRGQUNUT1I7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRf
QUxQSEE6IGQzZEJsZW5kID0gRDNEQkxFTkRfSU5WQkxFTkRGQUNUT1I7IGJyZWFrOworICAgICAg
Y2FzZSBHTF9TUkNfQUxQSEFfU0FUVVJBVEU6ICAgICAgIGQzZEJsZW5kID0gRDNEQkxFTkRfU1JD
QUxQSEFTQVQ7ICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gZDNkQmxlbmQ7Cit9CisKK0QzREJMRU5ET1AgQ29udmVydEJsZW5kT3Ao
R0xlbnVtIGJsZW5kT3ApCit7CisgICAgRDNEQkxFTkRPUCBkM2RCbGVuZE9wID0gRDNEQkxFTkRP
UF9BREQ7CisKKyAgICBzd2l0Y2ggKGJsZW5kT3ApCisgICAgeworICAgICAgY2FzZSBHTF9GVU5D
X0FERDogICAgICAgICAgICAgIGQzZEJsZW5kT3AgPSBEM0RCTEVORE9QX0FERDsgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgR0xfRlVOQ19TVUJUUkFDVDogICAgICAgICBkM2RCbGVuZE9wID0g
RDNEQkxFTkRPUF9TVUJUUkFDVDsgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZVTkNfUkVWRVJT
RV9TVUJUUkFDVDogZDNkQmxlbmRPcCA9IEQzREJMRU5ET1BfUkVWU1VCVFJBQ1Q7IGJyZWFrOwor
ICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZDNkQmxl
bmRPcDsKK30KKworRDNEU1RFTkNJTE9QIENvbnZlcnRTdGVuY2lsT3AoR0xlbnVtIHN0ZW5jaWxP
cCkKK3sKKyAgICBEM0RTVEVOQ0lMT1AgZDNkU3RlbmNpbE9wID0gRDNEU1RFTkNJTE9QX0tFRVA7
CisKKyAgICBzd2l0Y2ggKHN0ZW5jaWxPcCkKKyAgICB7CisgICAgICBjYXNlIEdMX1pFUk86ICAg
ICAgZDNkU3RlbmNpbE9wID0gRDNEU1RFTkNJTE9QX1pFUk87ICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9LRUVQOiAgICAgIGQzZFN0ZW5jaWxPcCA9IEQzRFNURU5DSUxPUF9LRUVQOyAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfUkVQTEFDRTogICBkM2RTdGVuY2lsT3AgPSBEM0RTVEVOQ0lMT1Bf
UkVQTEFDRTsgYnJlYWs7CisgICAgICBjYXNlIEdMX0lOQ1I6ICAgICAgZDNkU3RlbmNpbE9wID0g
RDNEU1RFTkNJTE9QX0lOQ1JTQVQ7IGJyZWFrOworICAgICAgY2FzZSBHTF9ERUNSOiAgICAgIGQz
ZFN0ZW5jaWxPcCA9IEQzRFNURU5DSUxPUF9ERUNSU0FUOyBicmVhazsKKyAgICAgIGNhc2UgR0xf
SU5WRVJUOiAgICBkM2RTdGVuY2lsT3AgPSBEM0RTVEVOQ0lMT1BfSU5WRVJUOyAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX0lOQ1JfV1JBUDogZDNkU3RlbmNpbE9wID0gRDNEU1RFTkNJTE9QX0lOQ1I7
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9ERUNSX1dSQVA6IGQzZFN0ZW5jaWxPcCA9IEQzRFNU
RU5DSUxPUF9ERUNSOyAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGQzZFN0ZW5jaWxPcDsKK30KKworRDNEVEVYVFVSRUFERFJFU1Mg
Q29udmVydFRleHR1cmVXcmFwKEdMZW51bSB3cmFwKQoreworICAgIEQzRFRFWFRVUkVBRERSRVNT
IGQzZFdyYXAgPSBEM0RUQUREUkVTU19XUkFQOworCisgICAgc3dpdGNoICh3cmFwKQorICAgIHsK
KyAgICAgIGNhc2UgR0xfUkVQRUFUOiAgICAgICAgICAgIGQzZFdyYXAgPSBEM0RUQUREUkVTU19X
UkFQOyAgIGJyZWFrOworICAgICAgY2FzZSBHTF9DTEFNUF9UT19FREdFOiAgICAgZDNkV3JhcCA9
IEQzRFRBRERSRVNTX0NMQU1QOyAgYnJlYWs7CisgICAgICBjYXNlIEdMX01JUlJPUkVEX1JFUEVB
VDogICBkM2RXcmFwID0gRDNEVEFERFJFU1NfTUlSUk9SOyBicmVhazsKKyAgICAgIGRlZmF1bHQ6
IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIGQzZFdyYXA7Cit9CisKK0QzRENV
TEwgQ29udmVydEN1bGxNb2RlKEdMZW51bSBjdWxsRmFjZSwgR0xlbnVtIGZyb250RmFjZSkKK3sK
KyAgICBEM0RDVUxMIGN1bGwgPSBEM0RDVUxMX0NDVzsKKyAgICBzd2l0Y2ggKGN1bGxGYWNlKQor
ICAgIHsKKyAgICAgIGNhc2UgR0xfRlJPTlQ6CisgICAgICAgIGN1bGwgPSAoZnJvbnRGYWNlID09
IEdMX0NDVyA/IEQzRENVTExfQ1cgOiBEM0RDVUxMX0NDVyk7CisgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9CQUNLOgorICAgICAgICBjdWxsID0gKGZyb250RmFjZSA9PSBHTF9DQ1cgPyBE
M0RDVUxMX0NDVyA6IEQzRENVTExfQ1cpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
RlJPTlRfQU5EX0JBQ0s6CisgICAgICAgIGN1bGwgPSBEM0RDVUxMX05PTkU7IC8vIGN1bGxpbmcg
d2lsbCBiZSBoYW5kbGVkIGR1cmluZyBkcmF3CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVs
dDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gY3VsbDsKK30KKworRDNEQ1VC
RU1BUF9GQUNFUyBDb252ZXJ0Q3ViZUZhY2UoR0xlbnVtIGN1YmVGYWNlKQoreworICAgIEQzRENV
QkVNQVBfRkFDRVMgZmFjZSA9IEQzRENVQkVNQVBfRkFDRV9QT1NJVElWRV9YOworCisgICAgc3dp
dGNoIChjdWJlRmFjZSkKKyAgICB7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWDoKKyAgICAgICAgZmFjZSA9IEQzRENVQkVNQVBfRkFDRV9QT1NJVElWRV9YOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgor
ICAgICAgICBmYWNlID0gRDNEQ1VCRU1BUF9GQUNFX05FR0FUSVZFX1g7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6CisgICAgICAgIGZh
Y2UgPSBEM0RDVUJFTUFQX0ZBQ0VfUE9TSVRJVkVfWTsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKKyAgICAgICAgZmFjZSA9IEQzRENV
QkVNQVBfRkFDRV9ORUdBVElWRV9ZOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgorICAgICAgICBmYWNlID0gRDNEQ1VCRU1BUF9GQUNF
X1BPU0lUSVZFX1o7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1o6CisgICAgICAgIGZhY2UgPSBEM0RDVUJFTUFQX0ZBQ0VfTkVHQVRJVkVf
WjsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgIH0K
KworICAgIHJldHVybiBmYWNlOworfQorCitEV09SRCBDb252ZXJ0Q29sb3JNYXNrKGJvb2wgcmVk
LCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpCit7CisgICAgcmV0dXJuIChyZWQg
ICA/IEQzRENPTE9SV1JJVEVFTkFCTEVfUkVEICAgOiAwKSB8CisgICAgICAgICAgIChncmVlbiA/
IEQzRENPTE9SV1JJVEVFTkFCTEVfR1JFRU4gOiAwKSB8CisgICAgICAgICAgIChibHVlICA/IEQz
RENPTE9SV1JJVEVFTkFCTEVfQkxVRSAgOiAwKSB8CisgICAgICAgICAgIChhbHBoYSA/IEQzRENP
TE9SV1JJVEVFTkFCTEVfQUxQSEEgOiAwKTsKK30KKworRDNEVEVYVFVSRUZJTFRFUlRZUEUgQ29u
dmVydE1hZ0ZpbHRlcihHTGVudW0gbWFnRmlsdGVyLCBmbG9hdCBtYXhBbmlzb3Ryb3B5KQorewor
ICAgIGlmIChtYXhBbmlzb3Ryb3B5ID4gMS4wZikKKyAgICB7CisgICAgICAgIHJldHVybiBEM0RU
RVhGX0FOSVNPVFJPUElDOworICAgIH0KKworICAgIEQzRFRFWFRVUkVGSUxURVJUWVBFIGQzZE1h
Z0ZpbHRlciA9IEQzRFRFWEZfUE9JTlQ7CisgICAgc3dpdGNoIChtYWdGaWx0ZXIpCisgICAgewor
ICAgICAgY2FzZSBHTF9ORUFSRVNUOiBkM2RNYWdGaWx0ZXIgPSBEM0RURVhGX1BPSU5UOyAgYnJl
YWs7CisgICAgICBjYXNlIEdMX0xJTkVBUjogIGQzZE1hZ0ZpbHRlciA9IEQzRFRFWEZfTElORUFS
OyBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0
dXJuIGQzZE1hZ0ZpbHRlcjsKK30KKwordm9pZCBDb252ZXJ0TWluRmlsdGVyKEdMZW51bSBtaW5G
aWx0ZXIsIEQzRFRFWFRVUkVGSUxURVJUWVBFICpkM2RNaW5GaWx0ZXIsIEQzRFRFWFRVUkVGSUxU
RVJUWVBFICpkM2RNaXBGaWx0ZXIsIGZsb2F0IG1heEFuaXNvdHJvcHkpCit7CisgICAgc3dpdGNo
IChtaW5GaWx0ZXIpCisgICAgeworICAgICAgY2FzZSBHTF9ORUFSRVNUOgorICAgICAgICAqZDNk
TWluRmlsdGVyID0gRDNEVEVYRl9QT0lOVDsKKyAgICAgICAgKmQzZE1pcEZpbHRlciA9IEQzRFRF
WEZfTk9ORTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0xJTkVBUjoKKyAgICAgICAg
KmQzZE1pbkZpbHRlciA9IEQzRFRFWEZfTElORUFSOworICAgICAgICAqZDNkTWlwRmlsdGVyID0g
RDNEVEVYRl9OT05FOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBN
QVBfTkVBUkVTVDoKKyAgICAgICAgKmQzZE1pbkZpbHRlciA9IEQzRFRFWEZfUE9JTlQ7CisgICAg
ICAgICpkM2RNaXBGaWx0ZXIgPSBEM0RURVhGX1BPSU5UOworICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUOgorICAgICAgICAqZDNkTWluRmlsdGVyID0g
RDNEVEVYRl9MSU5FQVI7CisgICAgICAgICpkM2RNaXBGaWx0ZXIgPSBEM0RURVhGX1BPSU5UOwor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSOgorICAg
ICAgICAqZDNkTWluRmlsdGVyID0gRDNEVEVYRl9QT0lOVDsKKyAgICAgICAgKmQzZE1pcEZpbHRl
ciA9IEQzRFRFWEZfTElORUFSOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTElORUFS
X01JUE1BUF9MSU5FQVI6CisgICAgICAgICpkM2RNaW5GaWx0ZXIgPSBEM0RURVhGX0xJTkVBUjsK
KyAgICAgICAgKmQzZE1pcEZpbHRlciA9IEQzRFRFWEZfTElORUFSOworICAgICAgICBicmVhazsK
KyAgICAgIGRlZmF1bHQ6CisgICAgICAgICpkM2RNaW5GaWx0ZXIgPSBEM0RURVhGX1BPSU5UOwor
ICAgICAgICAqZDNkTWlwRmlsdGVyID0gRDNEVEVYRl9OT05FOworICAgICAgICBVTlJFQUNIQUJM
RSgpOworICAgIH0KKworICAgIGlmIChtYXhBbmlzb3Ryb3B5ID4gMS4wZikKKyAgICB7CisgICAg
ICAgICpkM2RNaW5GaWx0ZXIgPSBEM0RURVhGX0FOSVNPVFJPUElDOworICAgIH0KK30KKworRDNE
Rk9STUFUIENvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQoR0xlbnVtIGZvcm1hdCkKK3sKKyAgICBz
d2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX05PTkU6ICAgICAgICAgICAgICAg
ICByZXR1cm4gRDNERk1UX05VTEw7CisgICAgICBjYXNlIEdMX1JHQkE0OgorICAgICAgY2FzZSBH
TF9SR0I1X0ExOgorICAgICAgY2FzZSBHTF9SR0JBOF9PRVM6ICAgICAgICAgICAgcmV0dXJuIEQz
REZNVF9BOFI4RzhCODsKKyAgICAgIGNhc2UgR0xfUkdCNTY1OiAgICAgICAgICAgICAgIHJldHVy
biBEM0RGTVRfUjVHNkI1OworICAgICAgY2FzZSBHTF9SR0I4X09FUzogICAgICAgICAgICAgcmV0
dXJuIEQzREZNVF9YOFI4RzhCODsKKyAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6Cisg
ICAgICBjYXNlIEdMX1NURU5DSUxfSU5ERVg4OiAgICAgICAKKyAgICAgIGNhc2UgR0xfREVQVEgy
NF9TVEVOQ0lMOF9PRVM6IHJldHVybiBEM0RGTVRfRDI0Uzg7CisgICAgICBkZWZhdWx0OiBVTlJF
QUNIQUJMRSgpOyAgICAgICByZXR1cm4gRDNERk1UX0E4UjhHOEI4OworICAgIH0KK30KKworRDNE
TVVMVElTQU1QTEVfVFlQRSBHZXRNdWx0aXNhbXBsZVR5cGVGcm9tU2FtcGxlcyhHTHNpemVpIHNh
bXBsZXMpCit7CisgICAgaWYgKHNhbXBsZXMgPD0gMSkKKyAgICAgICAgcmV0dXJuIEQzRE1VTFRJ
U0FNUExFX05PTkU7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gKEQzRE1VTFRJU0FNUExFX1RZ
UEUpc2FtcGxlczsKK30KKworfQorCituYW1lc3BhY2UgZDNkOV9nbAoreworCit1bnNpZ25lZCBp
bnQgR2V0U3RlbmNpbFNpemUoRDNERk9STUFUIHN0ZW5jaWxGb3JtYXQpCit7CisgICAgaWYgKHN0
ZW5jaWxGb3JtYXQgPT0gRDNERk1UX0lOVFopCisgICAgeworICAgICAgICByZXR1cm4gODsKKyAg
ICB9CisgICAgc3dpdGNoKHN0ZW5jaWxGb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEM0RGTVRf
RDI0RlM4OgorICAgICAgY2FzZSBEM0RGTVRfRDI0Uzg6CisgICAgICAgIHJldHVybiA4OworICAg
ICAgY2FzZSBEM0RGTVRfRDI0WDRTNDoKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgICBjYXNlIEQz
REZNVF9EMTVTMToKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICBjYXNlIEQzREZNVF9EMTZfTE9D
S0FCTEU6CisgICAgICBjYXNlIEQzREZNVF9EMzI6CisgICAgICBjYXNlIEQzREZNVF9EMjRYODoK
KyAgICAgIGNhc2UgRDNERk1UX0QzMkZfTE9DS0FCTEU6CisgICAgICBjYXNlIEQzREZNVF9EMTY6
CisgICAgICAgIHJldHVybiAwOworICAgIC8vY2FzZSBEM0RGTVRfRDMyX0xPQ0tBQkxFOiAgcmV0
dXJuIDA7ICAgLy8gRGlyZWN0WCA5RXggb25seQorICAgIC8vY2FzZSBEM0RGTVRfUzhfTE9DS0FC
TEU6ICAgcmV0dXJuIDg7ICAgLy8gRGlyZWN0WCA5RXggb25seQorICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQgR2V0QWxwaGFTaXplKEQz
REZPUk1BVCBjb2xvckZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yRm9ybWF0KQorICAgIHsK
KyAgICAgIGNhc2UgRDNERk1UX0ExNkIxNkcxNlIxNkY6CisgICAgICAgIHJldHVybiAxNjsKKyAg
ICAgIGNhc2UgRDNERk1UX0EzMkIzMkczMlIzMkY6CisgICAgICAgIHJldHVybiAzMjsKKyAgICAg
IGNhc2UgRDNERk1UX0EyUjEwRzEwQjEwOgorICAgICAgICByZXR1cm4gMjsKKyAgICAgIGNhc2Ug
RDNERk1UX0E4UjhHOEI4OgorICAgICAgICByZXR1cm4gODsKKyAgICAgIGNhc2UgRDNERk1UX0Ex
UjVHNUI1OgorICAgICAgICByZXR1cm4gMTsKKyAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4Ogor
ICAgICAgY2FzZSBEM0RGTVRfUjVHNkI1OgorICAgICAgICByZXR1cm4gMDsKKyAgICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworR0xzaXplaSBHZXRTYW1wbGVzRnJv
bU11bHRpc2FtcGxlVHlwZShEM0RNVUxUSVNBTVBMRV9UWVBFIHR5cGUpCit7CisgICAgaWYgKHR5
cGUgPT0gRDNETVVMVElTQU1QTEVfTk9OTUFTS0FCTEUpCisgICAgICAgIHJldHVybiAwOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIHR5cGU7Cit9CisKK2Jvb2wgSXNGb3JtYXRDaGFubmVsRXF1
aXZhbGVudChEM0RGT1JNQVQgZDNkZm9ybWF0LCBHTGVudW0gZm9ybWF0KQoreworICAgIHN3aXRj
aCAoZDNkZm9ybWF0KQorICAgIHsKKyAgICAgIGNhc2UgRDNERk1UX0w4OgorICAgICAgICByZXR1
cm4gKGZvcm1hdCA9PSBHTF9MVU1JTkFOQ0UpOworICAgICAgY2FzZSBEM0RGTVRfQThMODoKKyAg
ICAgICAgcmV0dXJuIChmb3JtYXQgPT0gR0xfTFVNSU5BTkNFX0FMUEhBKTsKKyAgICAgIGNhc2Ug
RDNERk1UX0RYVDE6CisgICAgICAgIHJldHVybiAoZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDFfRVhUIHx8IGZvcm1hdCA9PSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUKTsKKyAgICAgIGNhc2UgRDNERk1UX0RYVDM6CisgICAgICAgIHJldHVybiAoZm9ybWF0ID09
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUpOworICAgICAgY2FzZSBEM0RGTVRf
RFhUNToKKyAgICAgICAgcmV0dXJuIChmb3JtYXQgPT0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUNV9BTkdMRSk7CisgICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKKyAgICAgIGNhc2UgRDNE
Rk1UX0ExNkIxNkcxNlIxNkY6CisgICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOgorICAg
ICAgICByZXR1cm4gKGZvcm1hdCA9PSBHTF9SR0JBIHx8IGZvcm1hdCA9PSBHTF9CR1JBX0VYVCk7
CisgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKKyAgICAgICAgcmV0dXJuIChmb3JtYXQgPT0g
R0xfUkdCKTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChkM2Rmb3JtYXQgPT0gRDNERk1U
X0lOVFogJiYgZ2w6OklzRGVwdGhUZXh0dXJlKGZvcm1hdCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworR0xlbnVtIENvbnZlcnRC
YWNrQnVmZmVyRm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQp
CisgICAgeworICAgICAgY2FzZSBEM0RGTVRfQTRSNEc0QjQ6IHJldHVybiBHTF9SR0JBNDsKKyAg
ICAgIGNhc2UgRDNERk1UX0E4UjhHOEI4OiByZXR1cm4gR0xfUkdCQThfT0VTOworICAgICAgY2Fz
ZSBEM0RGTVRfQTFSNUc1QjU6IHJldHVybiBHTF9SR0I1X0ExOworICAgICAgY2FzZSBEM0RGTVRf
UjVHNkI1OiAgIHJldHVybiBHTF9SR0I1NjU7CisgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODog
cmV0dXJuIEdMX1JHQjhfT0VTOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfUkdCQTQ7Cit9CisKK0dMZW51bSBDb252ZXJ0RGVw
dGhTdGVuY2lsRm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpCit7CisgICAgaWYgKGZvcm1hdCA9PSBE
M0RGTVRfSU5UWikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09F
UzsKKyAgICB9CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEM0RGTVRf
RDE2OgorICAgICAgY2FzZSBEM0RGTVRfRDI0WDg6CisgICAgICAgIHJldHVybiBHTF9ERVBUSF9D
T01QT05FTlQxNjsKKyAgICAgIGNhc2UgRDNERk1UX0QyNFM4OgorICAgICAgICByZXR1cm4gR0xf
REVQVEgyNF9TVEVOQ0lMOF9PRVM7CisgICAgICBjYXNlIEQzREZNVF9VTktOT1dOOgorICAgICAg
ICByZXR1cm4gR0xfTk9ORTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgfQorCisgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOworfQorCitHTGVu
dW0gQ29udmVydFJlbmRlclRhcmdldEZvcm1hdChEM0RGT1JNQVQgZm9ybWF0KQoreworICAgIGlm
IChmb3JtYXQgPT0gRDNERk1UX0lOVFopCisgICAgeworICAgICAgICByZXR1cm4gR0xfREVQVEgy
NF9TVEVOQ0lMOF9PRVM7CisgICAgfQorICAgIAorICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsK
KyAgICAgIGNhc2UgRDNERk1UX0E0UjRHNEI0OiByZXR1cm4gR0xfUkdCQTQ7CisgICAgICBjYXNl
IEQzREZNVF9BOFI4RzhCODogcmV0dXJuIEdMX1JHQkE4X09FUzsKKyAgICAgIGNhc2UgRDNERk1U
X0ExUjVHNUI1OiByZXR1cm4gR0xfUkdCNV9BMTsKKyAgICAgIGNhc2UgRDNERk1UX1I1RzZCNTog
ICByZXR1cm4gR0xfUkdCNTY1OworICAgICAgY2FzZSBEM0RGTVRfWDhSOEc4Qjg6IHJldHVybiBH
TF9SR0I4X09FUzsKKyAgICAgIGNhc2UgRDNERk1UX0QxNjoKKyAgICAgIGNhc2UgRDNERk1UX0Qy
NFg4OgorICAgICAgICByZXR1cm4gR0xfREVQVEhfQ09NUE9ORU5UMTY7CisgICAgICBjYXNlIEQz
REZNVF9EMjRTODoKKyAgICAgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOworICAg
ICAgY2FzZSBEM0RGTVRfVU5LTk9XTjoKKyAgICAgICAgcmV0dXJuIEdMX05PTkU7CisgICAgICBk
ZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBHTF9S
R0JBNDsKK30KKworR0xlbnVtIEdldEVxdWl2YWxlbnRGb3JtYXQoRDNERk9STUFUIGZvcm1hdCkK
K3sKKyAgICBpZiAoZm9ybWF0ID09IEQzREZNVF9JTlRaKQorICAgICAgICByZXR1cm4gR0xfREVQ
VEgyNF9TVEVOQ0lMOF9PRVM7CisgICAgaWYgKGZvcm1hdCA9PSBEM0RGTVRfTlVMTCkKKyAgICAg
ICAgcmV0dXJuIEdMX05PTkU7CisKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBj
YXNlIEQzREZNVF9BNFI0RzRCNDogICAgICAgICAgICAgcmV0dXJuIEdMX1JHQkE0OworICAgICAg
Y2FzZSBEM0RGTVRfQThSOEc4Qjg6ICAgICAgICAgICAgIHJldHVybiBHTF9SR0JBOF9PRVM7Cisg
ICAgICBjYXNlIEQzREZNVF9BMVI1RzVCNTogICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjVfQTE7
CisgICAgICBjYXNlIEQzREZNVF9SNUc2QjU6ICAgICAgICAgICAgICAgcmV0dXJuIEdMX1JHQjU2
NTsKKyAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OiAgICAgICAgICAgICByZXR1cm4gR0xfUkdC
OF9PRVM7CisgICAgICBjYXNlIEQzREZNVF9EMTY6ICAgICAgICAgICAgICAgICAgcmV0dXJuIEdM
X0RFUFRIX0NPTVBPTkVOVDE2OworICAgICAgY2FzZSBEM0RGTVRfRDI0Uzg6ICAgICAgICAgICAg
ICAgIHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAgICAgIGNhc2UgRDNERk1UX1VO
S05PV046ICAgICAgICAgICAgICByZXR1cm4gR0xfTk9ORTsKKyAgICAgIGNhc2UgRDNERk1UX0RY
VDE6ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9F
WFQ7CisgICAgICBjYXNlIEQzREZNVF9EWFQzOiAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU7CisgICAgICBjYXNlIEQzREZNVF9EWFQ1OiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU7
CisgICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOiAgICAgICAgcmV0dXJuIEdMX1JHQkEz
MkZfRVhUOworICAgICAgY2FzZSBEM0RGTVRfQTE2QjE2RzE2UjE2RjogICAgICAgIHJldHVybiBH
TF9SR0JBMTZGX0VYVDsKKyAgICAgIGNhc2UgRDNERk1UX0w4OiAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfTFVNSU5BTkNFOF9FWFQ7CisgICAgICBjYXNlIEQzREZNVF9BOEw4OiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDsKKyAgICAgIGRlZmF1bHQ6
ICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gR0xfTk9ORTsKKyAg
ICB9Cit9CisKK30KKworbmFtZXNwYWNlIGQzZDkKK3sKKworYm9vbCBJc0NvbXByZXNzZWRGb3Jt
YXQoRDNERk9STUFUIHN1cmZhY2VGb3JtYXQpCit7CisgICAgc3dpdGNoKHN1cmZhY2VGb3JtYXQp
CisgICAgeworICAgICAgY2FzZSBEM0RGTVRfRFhUMToKKyAgICAgIGNhc2UgRDNERk1UX0RYVDI6
CisgICAgICBjYXNlIEQzREZNVF9EWFQzOgorICAgICAgY2FzZSBEM0RGTVRfRFhUNDoKKyAgICAg
IGNhc2UgRDNERk1UX0RYVDU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc2l6ZV90IENvbXB1dGVSb3dTaXpl
KEQzREZPUk1BVCBmb3JtYXQsIHVuc2lnbmVkIGludCB3aWR0aCkKK3sKKyAgICBpZiAoZm9ybWF0
ID09IEQzREZNVF9JTlRaKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDQgKiB3aWR0aDsKKyAgICB9
CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEM0RGTVRfTDg6CisgICAg
ICAgICAgcmV0dXJuIDEgKiB3aWR0aDsKKyAgICAgIGNhc2UgRDNERk1UX0E4TDg6CisgICAgICAg
ICAgcmV0dXJuIDIgKiB3aWR0aDsKKyAgICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OgorICAgICAg
Y2FzZSBEM0RGTVRfQThSOEc4Qjg6CisgICAgICAgIHJldHVybiA0ICogd2lkdGg7CisgICAgICBj
YXNlIEQzREZNVF9BMTZCMTZHMTZSMTZGOgorICAgICAgICByZXR1cm4gOCAqIHdpZHRoOworICAg
ICAgY2FzZSBEM0RGTVRfQTMyQjMyRzMyUjMyRjoKKyAgICAgICAgcmV0dXJuIDE2ICogd2lkdGg7
CisgICAgICBjYXNlIEQzREZNVF9EWFQxOgorICAgICAgICByZXR1cm4gOCAqICgod2lkdGggKyAz
KSAvIDQpOworICAgICAgY2FzZSBEM0RGTVRfRFhUMzoKKyAgICAgIGNhc2UgRDNERk1UX0RYVDU6
CisgICAgICAgIHJldHVybiAxNiAqICgod2lkdGggKyAzKSAvIDQpOworICAgICAgZGVmYXVsdDoK
KyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3Jl
bmRlcmVyOV91dGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXI5X3V0aWxzLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyOV91
dGlscy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyByZW5kZXJlcjlfdXRpbHMuaDogQ29udmVyc2lvbiBmdW5jdGlvbnMgYW5kIG90aGVyIHV0
aWxpdHkgcm91dGluZXMgCisvLyBzcGVjaWZpYyB0byB0aGUgRDNEOSByZW5kZXJlcgorCisjaWZu
ZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUjlfVVRJTFNfSAorI2RlZmluZSBMSUJHTEVT
VjJfUkVOREVSRVJfUkVOREVSRVI5X1VUSUxTX0gKKworI2luY2x1ZGUgImxpYkdMRVN2Mi91dGls
aXRpZXMuaCIKKworY29uc3QgRDNERk9STUFUIEQzREZNVF9JTlRaID0gKChEM0RGT1JNQVQpKE1B
S0VGT1VSQ0MoJ0knLCdOJywnVCcsJ1onKSkpOworY29uc3QgRDNERk9STUFUIEQzREZNVF9OVUxM
ID0gKChEM0RGT1JNQVQpKE1BS0VGT1VSQ0MoJ04nLCdVJywnTCcsJ0wnKSkpOworCituYW1lc3Bh
Y2UgZ2xfZDNkOQoreworCitEM0RDTVBGVU5DIENvbnZlcnRDb21wYXJpc29uKEdMZW51bSBjb21w
YXJpc29uKTsKK0QzRENPTE9SIENvbnZlcnRDb2xvcihnbDo6Q29sb3IgY29sb3IpOworRDNEQkxF
TkQgQ29udmVydEJsZW5kRnVuYyhHTGVudW0gYmxlbmQpOworRDNEQkxFTkRPUCBDb252ZXJ0Qmxl
bmRPcChHTGVudW0gYmxlbmRPcCk7CitEM0RTVEVOQ0lMT1AgQ29udmVydFN0ZW5jaWxPcChHTGVu
dW0gc3RlbmNpbE9wKTsKK0QzRFRFWFRVUkVBRERSRVNTIENvbnZlcnRUZXh0dXJlV3JhcChHTGVu
dW0gd3JhcCk7CitEM0RDVUxMIENvbnZlcnRDdWxsTW9kZShHTGVudW0gY3VsbEZhY2UsIEdMZW51
bSBmcm9udEZhY2UpOworRDNEQ1VCRU1BUF9GQUNFUyBDb252ZXJ0Q3ViZUZhY2UoR0xlbnVtIGN1
YmVGYWNlKTsKK0RXT1JEIENvbnZlcnRDb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJv
b2wgYmx1ZSwgYm9vbCBhbHBoYSk7CitEM0RURVhUVVJFRklMVEVSVFlQRSBDb252ZXJ0TWFnRmls
dGVyKEdMZW51bSBtYWdGaWx0ZXIsIGZsb2F0IG1heEFuaXNvdHJvcHkpOwordm9pZCBDb252ZXJ0
TWluRmlsdGVyKEdMZW51bSBtaW5GaWx0ZXIsIEQzRFRFWFRVUkVGSUxURVJUWVBFICpkM2RNaW5G
aWx0ZXIsIEQzRFRFWFRVUkVGSUxURVJUWVBFICpkM2RNaXBGaWx0ZXIsIGZsb2F0IG1heEFuaXNv
dHJvcHkpOworRDNERk9STUFUIENvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQoR0xlbnVtIGZvcm1h
dCk7CitEM0RNVUxUSVNBTVBMRV9UWVBFIEdldE11bHRpc2FtcGxlVHlwZUZyb21TYW1wbGVzKEdM
c2l6ZWkgc2FtcGxlcyk7CisKK30KKworbmFtZXNwYWNlIGQzZDlfZ2wKK3sKKworR0x1aW50IEdl
dEFscGhhU2l6ZShEM0RGT1JNQVQgY29sb3JGb3JtYXQpOworR0x1aW50IEdldFN0ZW5jaWxTaXpl
KEQzREZPUk1BVCBzdGVuY2lsRm9ybWF0KTsKKworR0xzaXplaSBHZXRTYW1wbGVzRnJvbU11bHRp
c2FtcGxlVHlwZShEM0RNVUxUSVNBTVBMRV9UWVBFIHR5cGUpOworCitib29sIElzRm9ybWF0Q2hh
bm5lbEVxdWl2YWxlbnQoRDNERk9STUFUIGQzZGZvcm1hdCwgR0xlbnVtIGZvcm1hdCk7CitHTGVu
dW0gQ29udmVydEJhY2tCdWZmZXJGb3JtYXQoRDNERk9STUFUIGZvcm1hdCk7CitHTGVudW0gQ29u
dmVydERlcHRoU3RlbmNpbEZvcm1hdChEM0RGT1JNQVQgZm9ybWF0KTsKK0dMZW51bSBDb252ZXJ0
UmVuZGVyVGFyZ2V0Rm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpOworR0xlbnVtIEdldEVxdWl2YWxl
bnRGb3JtYXQoRDNERk9STUFUIGZvcm1hdCk7CisKK30KKworbmFtZXNwYWNlIGQzZDkKK3sKK2Jv
b2wgSXNDb21wcmVzc2VkRm9ybWF0KEQzREZPUk1BVCBmb3JtYXQpOworc2l6ZV90IENvbXB1dGVS
b3dTaXplKEQzREZPUk1BVCBmb3JtYXQsIHVuc2lnbmVkIGludCB3aWR0aCk7CisKK2lubGluZSBi
b29sIGlzRGV2aWNlTG9zdEVycm9yKEhSRVNVTFQgZXJyb3JDb2RlKQoreworICAgIHN3aXRjaCAo
ZXJyb3JDb2RlKQorICAgIHsKKyAgICAgIGNhc2UgRDNERVJSX0RSSVZFUklOVEVSTkFMRVJST1I6
CisgICAgICBjYXNlIEQzREVSUl9ERVZJQ0VMT1NUOgorICAgICAgY2FzZSBEM0RFUlJfREVWSUNF
SFVORzoKKyAgICAgIGNhc2UgRDNERVJSX0RFVklDRVJFTU9WRUQ6CisgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwor
fQorCisjZW5kaWYgLy8gTElCR0xFU1YyX1JFTkRFUkVSX1JFTkRFUkVSOV9VVElMU19ICkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVy
MTFfdXRpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXIxMV91dGlscy5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFf
dXRpbHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4OCBAQAorI2luY2x1ZGUgInByZWNv
bXBpbGVkLmgiCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gcmVuZGVyZXIxMV91dGlscy5jcHA6IENvbnZl
cnNpb24gZnVuY3Rpb25zIGFuZCBvdGhlciB1dGlsaXR5IHJvdXRpbmVzCisvLyBzcGVjaWZpYyB0
byB0aGUgRDNEMTEgcmVuZGVyZXIuCisKKyNpbmNsdWRlICJsaWJHTEVTdjIvcmVuZGVyZXIvcmVu
ZGVyZXIxMV91dGlscy5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFj
ZSBnbF9kM2QxMQoreworCitEM0QxMV9CTEVORCBDb252ZXJ0QmxlbmRGdW5jKEdMZW51bSBnbEJs
ZW5kLCBib29sIGlzQWxwaGEpCit7CisgICAgRDNEMTFfQkxFTkQgZDNkQmxlbmQgPSBEM0QxMV9C
TEVORF9aRVJPOworCisgICAgc3dpdGNoIChnbEJsZW5kKQorICAgIHsKKyAgICAgIGNhc2UgR0xf
WkVSTzogICAgICAgICAgICAgICAgICAgICBkM2RCbGVuZCA9IEQzRDExX0JMRU5EX1pFUk87ICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkU6ICAgICAgICAgICAgICAgICAg
ICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfT05FOyAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX1NSQ19DT0xPUjogICAgICAgICAgICAgICAgZDNkQmxlbmQgPSAoaXNBbHBo
YSA/IEQzRDExX0JMRU5EX1NSQ19BTFBIQSA6IEQzRDExX0JMRU5EX1NSQ19DT0xPUik7ICAgICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19DT0xPUjogICAgICBkM2RC
bGVuZCA9IChpc0FscGhhID8gRDNEMTFfQkxFTkRfSU5WX1NSQ19BTFBIQSA6IEQzRDExX0JMRU5E
X0lOVl9TUkNfQ09MT1IpOyAgIGJyZWFrOworICAgICAgY2FzZSBHTF9EU1RfQ09MT1I6ICAgICAg
ICAgICAgICAgIGQzZEJsZW5kID0gKGlzQWxwaGEgPyBEM0QxMV9CTEVORF9ERVNUX0FMUEhBIDog
RDNEMTFfQkxFTkRfREVTVF9DT0xPUik7ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX09O
RV9NSU5VU19EU1RfQ09MT1I6ICAgICAgZDNkQmxlbmQgPSAoaXNBbHBoYSA/IEQzRDExX0JMRU5E
X0lOVl9ERVNUX0FMUEhBIDogRDNEMTFfQkxFTkRfSU5WX0RFU1RfQ09MT1IpOyBicmVhazsKKyAg
ICAgIGNhc2UgR0xfU1JDX0FMUEhBOiAgICAgICAgICAgICAgICBkM2RCbGVuZCA9IEQzRDExX0JM
RU5EX1NSQ19BTFBIQTsgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNf
U1JDX0FMUEhBOiAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfSU5WX1NSQ19BTFBIQTsgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0RTVF9BTFBIQTogICAgICAgICAgICAgICAgZDNkQmxl
bmQgPSBEM0QxMV9CTEVORF9ERVNUX0FMUEhBOyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfT05FX01JTlVTX0RTVF9BTFBIQTogICAgICBkM2RCbGVuZCA9IEQzRDExX0JMRU5EX0lOVl9E
RVNUX0FMUEhBOyAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjogICAg
ICAgICAgIGQzZEJsZW5kID0gRDNEMTFfQkxFTkRfQkxFTkRfRkFDVE9SOyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUjogZDNkQmxlbmQgPSBEM0Qx
MV9CTEVORF9JTlZfQkxFTkRfRkFDVE9SOyAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQ09OU1RB
TlRfQUxQSEE6ICAgICAgICAgICBkM2RCbGVuZCA9IEQzRDExX0JMRU5EX0JMRU5EX0ZBQ1RPUjsg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6IGQz
ZEJsZW5kID0gRDNEMTFfQkxFTkRfSU5WX0JMRU5EX0ZBQ1RPUjsgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1NSQ19BTFBIQV9TQVRVUkFURTogICAgICAgZDNkQmxlbmQgPSBEM0QxMV9CTEVORF9T
UkNfQUxQSEFfU0FUOyAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7
CisgICAgfQorCisgICAgcmV0dXJuIGQzZEJsZW5kOworfQorCitEM0QxMV9CTEVORF9PUCBDb252
ZXJ0QmxlbmRPcChHTGVudW0gZ2xCbGVuZE9wKQoreworICAgIEQzRDExX0JMRU5EX09QIGQzZEJs
ZW5kT3AgPSBEM0QxMV9CTEVORF9PUF9BREQ7CisKKyAgICBzd2l0Y2ggKGdsQmxlbmRPcCkKKyAg
ICB7CisgICAgICBjYXNlIEdMX0ZVTkNfQUREOiAgICAgICAgICAgICAgZDNkQmxlbmRPcCA9IEQz
RDExX0JMRU5EX09QX0FERDsgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9GVU5DX1NV
QlRSQUNUOiAgICAgICAgIGQzZEJsZW5kT3AgPSBEM0QxMV9CTEVORF9PUF9TVUJUUkFDVDsgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUOiBkM2RCbGVuZE9w
ID0gRDNEMTFfQkxFTkRfT1BfUkVWX1NVQlRSQUNUOyAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBV
TlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBkM2RCbGVuZE9wOworfQorCitVSU5U
OCBDb252ZXJ0Q29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wg
YWxwaGEpCit7CisgICAgVUlOVDggbWFzayA9IDA7CisgICAgaWYgKHJlZCkKKyAgICB7CisgICAg
ICAgIG1hc2sgfD0gRDNEMTFfQ09MT1JfV1JJVEVfRU5BQkxFX1JFRDsKKyAgICB9CisgICAgaWYg
KGdyZWVuKQorICAgIHsKKyAgICAgICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFCTEVf
R1JFRU47CisgICAgfQorICAgIGlmIChibHVlKQorICAgIHsKKyAgICAgICAgbWFzayB8PSBEM0Qx
MV9DT0xPUl9XUklURV9FTkFCTEVfQkxVRTsKKyAgICB9CisgICAgaWYgKGFscGhhKQorICAgIHsK
KyAgICAgICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFCTEVfQUxQSEE7CisgICAgfQor
ICAgIHJldHVybiBtYXNrOworfQorCitEM0QxMV9DVUxMX01PREUgQ29udmVydEN1bGxNb2RlKGJv
b2wgY3VsbEVuYWJsZWQsIEdMZW51bSBjdWxsTW9kZSkKK3sKKyAgICBEM0QxMV9DVUxMX01PREUg
Y3VsbCA9IEQzRDExX0NVTExfTk9ORTsKKworICAgIGlmIChjdWxsRW5hYmxlZCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAoY3VsbE1vZGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIEdMX0ZS
T05UOiAgICAgICAgICAgIGN1bGwgPSBEM0QxMV9DVUxMX0ZST05UOyAgICBicmVhazsKKyAgICAg
ICAgICBjYXNlIEdMX0JBQ0s6ICAgICAgICAgICAgIGN1bGwgPSBEM0QxMV9DVUxMX0JBQ0s7ICAg
ICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0ZST05UX0FORF9CQUNLOiAgIGN1bGwgPSBEM0Qx
MV9DVUxMX05PTkU7ICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGN1bGwgPSBEM0Qx
MV9DVUxMX05PTkU7CisgICAgfQorCisgICAgcmV0dXJuIGN1bGw7Cit9CisKK0QzRDExX0NPTVBB
UklTT05fRlVOQyBDb252ZXJ0Q29tcGFyaXNvbihHTGVudW0gY29tcGFyaXNvbikKK3sKKyAgICBE
M0QxMV9DT01QQVJJU09OX0ZVTkMgZDNkQ29tcCA9IEQzRDExX0NPTVBBUklTT05fTkVWRVI7Cisg
ICAgc3dpdGNoIChjb21wYXJpc29uKQorICAgIHsKKyAgICAgIGNhc2UgR0xfTkVWRVI6ICAgIGQz
ZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX05FVkVSOyAgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX0FMV0FZUzogICBkM2RDb21wID0gRDNEMTFfQ09NUEFSSVNPTl9BTFdBWVM7ICAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9MRVNTOiAgICAgZDNkQ29tcCA9IEQzRDExX0NPTVBB
UklTT05fTEVTUzsgICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTEVRVUFMOiAgIGQz
ZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX0xFU1NfRVFVQUw7ICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX0VRVUFMOiAgICBkM2RDb21wID0gRDNEMTFfQ09NUEFSSVNPTl9FUVVBTDsgICAgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9HUkVBVEVSOiAgZDNkQ29tcCA9IEQzRDExX0NPTVBB
UklTT05fR1JFQVRFUjsgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfR0VRVUFMOiAgIGQz
ZENvbXAgPSBEM0QxMV9DT01QQVJJU09OX0dSRUFURVJfRVFVQUw7ICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX05PVEVRVUFMOiBkM2RDb21wID0gRDNEMTFfQ09NUEFSSVNPTl9OT1RfRVFVQUw7ICAg
ICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZDNkQ29tcDsKK30KKworRDNEMTFfREVQVEhfV1JJVEVfTUFTSyBDb252ZXJ0RGVwdGhN
YXNrKGJvb2wgZGVwdGhXcml0ZUVuYWJsZWQpCit7CisgICAgcmV0dXJuIGRlcHRoV3JpdGVFbmFi
bGVkID8gRDNEMTFfREVQVEhfV1JJVEVfTUFTS19BTEwgOiBEM0QxMV9ERVBUSF9XUklURV9NQVNL
X1pFUk87Cit9CisKK1VJTlQ4IENvbnZlcnRTdGVuY2lsTWFzayhHTHVpbnQgc3RlbmNpbG1hc2sp
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVJTlQ4PihzdGVuY2lsbWFzayk7Cit9CisKK0Qz
RDExX1NURU5DSUxfT1AgQ29udmVydFN0ZW5jaWxPcChHTGVudW0gc3RlbmNpbE9wKQoreworICAg
IEQzRDExX1NURU5DSUxfT1AgZDNkU3RlbmNpbE9wID0gRDNEMTFfU1RFTkNJTF9PUF9LRUVQOwor
CisgICAgc3dpdGNoIChzdGVuY2lsT3ApCisgICAgeworICAgICAgY2FzZSBHTF9aRVJPOiAgICAg
IGQzZFN0ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfWkVSTzsgICAgICBicmVhazsKKyAgICAg
IGNhc2UgR0xfS0VFUDogICAgICBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0tFRVA7
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1JFUExBQ0U6ICAgZDNkU3RlbmNpbE9wID0gRDNE
MTFfU1RFTkNJTF9PUF9SRVBMQUNFOyAgIGJyZWFrOworICAgICAgY2FzZSBHTF9JTkNSOiAgICAg
IGQzZFN0ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfSU5DUl9TQVQ7ICBicmVhazsKKyAgICAg
IGNhc2UgR0xfREVDUjogICAgICBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0RFQ1Jf
U0FUOyAgYnJlYWs7CisgICAgICBjYXNlIEdMX0lOVkVSVDogICAgZDNkU3RlbmNpbE9wID0gRDNE
MTFfU1RFTkNJTF9PUF9JTlZFUlQ7ICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9JTkNSX1dSQVA6
IGQzZFN0ZW5jaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfSU5DUjsgICAgICBicmVhazsKKyAgICAg
IGNhc2UgR0xfREVDUl9XUkFQOiBkM2RTdGVuY2lsT3AgPSBEM0QxMV9TVEVOQ0lMX09QX0RFQ1I7
ICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAg
IHJldHVybiBkM2RTdGVuY2lsT3A7Cit9CisKK0QzRDExX0ZJTFRFUiBDb252ZXJ0RmlsdGVyKEdM
ZW51bSBtaW5GaWx0ZXIsIEdMZW51bSBtYWdGaWx0ZXIsIGZsb2F0IG1heEFuaXNvdHJvcHkpCit7
CisgICAgaWYgKG1heEFuaXNvdHJvcHkgPiAxLjBmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEQz
RDExX0VOQ09ERV9BTklTT1RST1BJQ19GSUxURVIoZmFsc2UpOworICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICBEM0QxMV9GSUxURVJfVFlQRSBkeE1pbiA9IEQzRDExX0ZJTFRFUl9UWVBF
X1BPSU5UOworICAgICAgICBEM0QxMV9GSUxURVJfVFlQRSBkeE1pcCA9IEQzRDExX0ZJTFRFUl9U
WVBFX1BPSU5UOworICAgICAgICBzd2l0Y2ggKG1pbkZpbHRlcikKKyAgICAgICAgeworICAgICAg
ICAgIGNhc2UgR0xfTkVBUkVTVDogICAgICAgICAgICAgICAgZHhNaW4gPSBEM0QxMV9GSUxURVJf
VFlQRV9QT0lOVDsgIGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7ICBicmVhazsKKyAg
ICAgICAgICBjYXNlIEdMX0xJTkVBUjogICAgICAgICAgICAgICAgIGR4TWluID0gRDNEMTFfRklM
VEVSX1RZUEVfTElORUFSOyBkeE1pcCA9IEQzRDExX0ZJTFRFUl9UWVBFX1BPSU5UOyAgYnJlYWs7
CisgICAgICAgICAgY2FzZSBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUOiBkeE1pbiA9IEQzRDEx
X0ZJTFRFUl9UWVBFX1BPSU5UOyAgZHhNaXAgPSBEM0QxMV9GSUxURVJfVFlQRV9QT0lOVDsgIGJy
ZWFrOworICAgICAgICAgIGNhc2UgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUOiAgZHhNaW4gPSBE
M0QxMV9GSUxURVJfVFlQRV9MSU5FQVI7IGR4TWlwID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7
ICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUjogIGR4TWlu
ID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7ICBkeE1pcCA9IEQzRDExX0ZJTFRFUl9UWVBFX0xJ
TkVBUjsgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUjogICBk
eE1pbiA9IEQzRDExX0ZJTFRFUl9UWVBFX0xJTkVBUjsgZHhNaXAgPSBEM0QxMV9GSUxURVJfVFlQ
RV9MSU5FQVI7IGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorCisgICAgICAgIEQzRDExX0ZJTFRFUl9UWVBF
IGR4TWFnID0gRDNEMTFfRklMVEVSX1RZUEVfUE9JTlQ7CisgICAgICAgIHN3aXRjaCAobWFnRmls
dGVyKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9ORUFSRVNUOiBkeE1hZyA9IEQzRDEx
X0ZJTFRFUl9UWVBFX1BPSU5UOyAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9MSU5FQVI6ICBk
eE1hZyA9IEQzRDExX0ZJTFRFUl9UWVBFX0xJTkVBUjsgYnJlYWs7CisgICAgICAgICAgZGVmYXVs
dDogICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEQz
RDExX0VOQ09ERV9CQVNJQ19GSUxURVIoZHhNaW4sIGR4TWFnLCBkeE1pcCwgZmFsc2UpOworICAg
IH0KK30KKworRDNEMTFfVEVYVFVSRV9BRERSRVNTX01PREUgQ29udmVydFRleHR1cmVXcmFwKEdM
ZW51bSB3cmFwKQoreworICAgIHN3aXRjaCAod3JhcCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JF
UEVBVDogICAgICAgICAgcmV0dXJuIEQzRDExX1RFWFRVUkVfQUREUkVTU19XUkFQOworICAgICAg
Y2FzZSBHTF9DTEFNUF9UT19FREdFOiAgIHJldHVybiBEM0QxMV9URVhUVVJFX0FERFJFU1NfQ0xB
TVA7CisgICAgICBjYXNlIEdMX01JUlJPUkVEX1JFUEVBVDogcmV0dXJuIEQzRDExX1RFWFRVUkVf
QUREUkVTU19NSVJST1I7CisgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gRDNEMTFfVEVYVFVSRV9BRERSRVNTX1dSQVA7Cit9
CisKK0ZMT0FUIENvbnZlcnRNaW5MT0QoR0xlbnVtIG1pbkZpbHRlciwgdW5zaWduZWQgaW50IGxv
ZE9mZnNldCkKK3sKKyAgICByZXR1cm4gKG1pbkZpbHRlciA9PSBHTF9ORUFSRVNUIHx8IG1pbkZp
bHRlciA9PSBHTF9MSU5FQVIpID8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGxvZE9mZnNldCkgOiAtRkxU
X01BWDsKK30KKworRkxPQVQgQ29udmVydE1heExPRChHTGVudW0gbWluRmlsdGVyLCB1bnNpZ25l
ZCBpbnQgbG9kT2Zmc2V0KQoreworICAgIHJldHVybiAobWluRmlsdGVyID09IEdMX05FQVJFU1Qg
fHwgbWluRmlsdGVyID09IEdMX0xJTkVBUikgPyBzdGF0aWNfY2FzdDxmbG9hdD4obG9kT2Zmc2V0
KSA6IEZMVF9NQVg7Cit9CisKK30KKworbmFtZXNwYWNlIGQzZDExX2dsCit7CisKK0dMZW51bSBD
b252ZXJ0QmFja0J1ZmZlckZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNo
IChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STTog
cmV0dXJuIEdMX1JHQkE4X09FUzsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5P
Uk06IHJldHVybiBHTF9CR1JBOF9FWFQ7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBHTF9SR0JBOF9PRVM7Cit9CisKK0dMZW51bSBD
b252ZXJ0RGVwdGhTdGVuY2lsRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCkKK3sKKyAgICBzd2l0
Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046IHJldHVy
biBHTF9OT05FOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06IHJldHVybiBHTF9E
RVBUSF9DT01QT05FTlQxNjsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJ
TlQ6IHJldHVybiBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzsKKyAgICAgIGRlZmF1bHQ6CisgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RFTkNJ
TDhfT0VTOworfQorCitHTGVudW0gQ29udmVydFJlbmRlcmJ1ZmZlckZvcm1hdChEWEdJX0ZPUk1B
VCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9COEc4UjhBOF9VTk9STToKKyAgICAgICAgcmV0dXJuIEdMX0JHUkE4X0VYVDsKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk06CisgICAgICAgIHJldHVybiBHTF9S
R0JBOF9PRVM7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QxNl9VTk9STToKKyAgICAgICAgcmV0
dXJuIEdMX0RFUFRIX0NPTVBPTkVOVDE2OworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRfVU5P
Uk1fUzhfVUlOVDoKKyAgICAgICAgcmV0dXJuIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOworICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
R0xfUkdCQThfT0VTOworfQorCitHTGVudW0gQ29udmVydFRleHR1cmVJbnRlcm5hbEZvcm1hdChE
WEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAgICAgICAgcmV0dXJuIEdMX1JHQkE4
X09FUzsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQThfVU5PUk06CisgICAgICAgIHJldHVybiBH
TF9BTFBIQThfRVhUOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk06CisgICAgICAg
IHJldHVybiBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDsKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQkMyX1VOT1JNOgorICAgICAgICByZXR1cm4gR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUM19BTkdMRTsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNOgorICAgICAg
ICByZXR1cm4gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRTsKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgorICAgICAgICByZXR1cm4gR0xfUkdCQTMy
Rl9FWFQ7CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVDoKKyAgICAgICAg
cmV0dXJuIEdMX1JHQjMyRl9FWFQ7CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9GTE9BVDoKKyAgICAgICAgcmV0dXJuIEdMX1JHQkExNkZfRVhUOworICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9COEc4UjhBOF9VTk9STToKKyAgICAgICAgcmV0dXJuIEdMX0JHUkE4X0VYVDsKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVU5PUk06CisgICAgICAgIHJldHVybiBHTF9SOF9FWFQ7
CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVU5PUk06CisgICAgICAgIHJldHVybiBHTF9S
RzhfRVhUOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6CisgICAgICAgIHJldHVy
biBHTF9SMTZGX0VYVDsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FUOgorICAg
ICAgICByZXR1cm4gR0xfUkcxNkZfRVhUOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5P
Uk06CisgICAgICAgIHJldHVybiBHTF9ERVBUSF9DT01QT05FTlQxNjsKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6CisgICAgICAgIHJldHVybiBHTF9ERVBUSDI0X1NU
RU5DSUw4X09FUzsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKKyAgICAgICAgcmV0
dXJuIEdMX05PTkU7CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
IH0KKworICAgIHJldHVybiBHTF9SR0JBOF9PRVM7Cit9CisKK30KKworbmFtZXNwYWNlIGdsX2Qz
ZDExCit7CisKK0RYR0lfRk9STUFUIENvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQoR0xlbnVtIGZv
cm1hdCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQkE0
OgorICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgY2FzZSBHTF9SR0JBOF9PRVM6CisgICAg
ICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2UgR0xfUkdCOF9PRVM6CisgICAgICAgIHJldHVy
biBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STTsKKyAgICAgIGNhc2UgR0xfQkdSQThfRVhUOgor
ICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk07CisgICAgICBjYXNlIEdM
X0RFUFRIX0NPTVBPTkVOVDE2OgorICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfRDE2X1VOT1JN
OworICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKKyAgICAgIGNhc2UgR0xfREVQVEgyNF9T
VEVOQ0lMOF9PRVM6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlO
VDsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorCisgICAg
cmV0dXJuIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOworfQorCitEWEdJX0ZPUk1BVCBDb252
ZXJ0VGV4dHVyZUZvcm1hdChHTGVudW0gaW50ZXJuYWxmb3JtYXQpCit7CisgICAgc3dpdGNoIChp
bnRlcm5hbGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgIGNhc2Ug
R0xfUkdCQTQ6CisgICAgICBjYXNlIEdMX1JHQjVfQTE6CisgICAgICBjYXNlIEdMX1JHQjhfT0VT
OgorICAgICAgY2FzZSBHTF9SR0JBOF9PRVM6CisgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfRVhU
OgorICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQ6CisgICAgICAgIHJldHVybiBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STTsKKyAgICAgIGNhc2UgR0xfQUxQSEE4X0VYVDoKKyAg
ICAgICAgcmV0dXJuIERYR0lfRk9STUFUX0E4X1VOT1JNOworICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQxX0VYVDoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX0JDMV9VTk9STTsKKyAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAgICAgcmV0dXJu
IERYR0lfRk9STUFUX0JDMl9VTk9STTsKKyAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUNV9BTkdMRToKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX0JDM19VTk9STTsKKyAg
ICAgIGNhc2UgR0xfUkdCQTMyRl9FWFQ6CisgICAgICBjYXNlIEdMX0FMUEhBMzJGX0VYVDoKKyAg
ICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVDoKKyAgICAgICAgcmV0dXJuIERYR0lf
Rk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDsKKyAgICAgIGNhc2UgR0xfUkdCMzJGX0VYVDoKKyAg
ICAgIGNhc2UgR0xfTFVNSU5BTkNFMzJGX0VYVDoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFU
X1IzMkczMkIzMl9GTE9BVDsKKyAgICAgIGNhc2UgR0xfUkdCQTE2Rl9FWFQ6CisgICAgICBjYXNl
IEdMX0FMUEhBMTZGX0VYVDoKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoK
KyAgICAgIGNhc2UgR0xfUkdCMTZGX0VYVDoKKyAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMTZGX0VY
VDoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDsKKyAgICAg
IGNhc2UgR0xfQkdSQThfRVhUOgorICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfQjhHOFI4QThf
VU5PUk07CisgICAgICBjYXNlIEdMX1I4X0VYVDoKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFU
X1I4X1VOT1JNOworICAgICAgY2FzZSBHTF9SRzhfRVhUOgorICAgICAgICByZXR1cm4gRFhHSV9G
T1JNQVRfUjhHOF9VTk9STTsKKyAgICAgIGNhc2UgR0xfUjE2Rl9FWFQ6CisgICAgICAgIHJldHVy
biBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ7CisgICAgICBjYXNlIEdMX1JHMTZGX0VYVDoKKyAgICAg
ICAgcmV0dXJuIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVDsKKyAgICAgIGNhc2UgR0xfREVQVEhf
Q09NUE9ORU5UMTY6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9EMTZfVU5PUk07CisgICAg
ICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzoKKyAgICAgIGNhc2UgR0xfREVQVEgyNF9T
VEVOQ0lMOF9PRVM6CisgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlO
VDsKKyAgICAgIGNhc2UgR0xfTk9ORToKKyAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1VOS05P
V047CisgICAgICBkZWZhdWx0OgorICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAg
IHJldHVybiBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STTsKK30KKworfQorCituYW1lc3BhY2Ug
ZDNkMTEKK3sKKwordm9pZCBTZXRQb3NpdGlvblRleENvb3JkVmVydGV4KFBvc2l0aW9uVGV4Q29v
cmRWZXJ0ZXgqIHZlcnRleCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgdSwgZmxvYXQgdikKK3sK
KyAgICB2ZXJ0ZXgtPnggPSB4OworICAgIHZlcnRleC0+eSA9IHk7CisgICAgdmVydGV4LT51ID0g
dTsKKyAgICB2ZXJ0ZXgtPnYgPSB2OworfQorCit2b2lkIFNldFBvc2l0aW9uRGVwdGhDb2xvclZl
cnRleChQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXgqIHZlcnRleCwgZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDb2xv
ciAmY29sb3IpCit7CisgICAgdmVydGV4LT54ID0geDsKKyAgICB2ZXJ0ZXgtPnkgPSB5OworICAg
IHZlcnRleC0+eiA9IHo7CisgICAgdmVydGV4LT5yID0gY29sb3IucmVkOworICAgIHZlcnRleC0+
ZyA9IGNvbG9yLmdyZWVuOworICAgIHZlcnRleC0+YiA9IGNvbG9yLmJsdWU7CisgICAgdmVydGV4
LT5hID0gY29sb3IuYWxwaGE7Cit9CisKK3NpemVfdCBDb21wdXRlUGl4ZWxTaXplQml0cyhEWEdJ
X0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMV9VTk9STToKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQThfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1NJTlQ6Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1NOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
OF9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVUlOVDoKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhfVU5PUk06CisgICAgICAgIHJldHVybiA4OworCisgICAgICBjYXNlIERY
R0lfRk9STUFUX0I1RzVSNUExX1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNUc2UjVf
VU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QxNl9VTk9STToKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjE2X0ZMT0FUOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfU0lOVDoKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1NOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MTZfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9VSU5UOgorICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMTZfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfU0lO
VDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjhHOF9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VSU5UOgor
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNOgorICAgICAgICByZXR1cm4gMTY7CisK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVFlQRUxFU1M6CisgICAgICBjYXNlIERY
R0lfRk9STUFUX0I4RzhSOFg4X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhY
OF9VTk9STV9TUkdCOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDoK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUOgorICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9EMzJfRkxPQVRfUzhYMjRfVUlOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRzhSOF9HOEI4
X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBfWFJfQklBU19BMl9VTk9S
TToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVFlQRUxFU1M6CisgICAgICBj
YXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQ6CisgICAgICBjYXNlIERYR0lfRk9STUFU
X1IxMEcxMEIxMEEyX1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxP
QVQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVDoKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjE2RzE2X1NJTlQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9TTk9S
TToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1RZUEVMRVNTOgorICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMTZHMTZfVUlOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1VO
T1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1M6CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMzJfRkxPQVQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9GTE9BVF9YOFgyNF9UWVBF
TEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1NJTlQ6CisgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IzMl9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1VJTlQ6Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfQjhHOF9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjhHOEI4QThfU0lOVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05P
Uk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1RZUEVMRVNTOgorICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQjoK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVFlQRUxFU1M6CisgICAgICBjYXNlIERY
R0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhB
OF9VTk9STV9TUkdCOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFA6
CisgICAgICBjYXNlIERYR0lfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5UOgorICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9YMzJfVFlQRUxFU1NfRzhYMjRfVUlOVDoKKyAgICAgICAgcmV0dXJuIDMy
OworCisgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQ6CisgICAgICBjYXNlIERYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2
X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVDoKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNOgorICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMzJHMzJfRkxPQVQ6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9TSU5U
OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfVFlQRUxFU1M6CisgICAgICBjYXNlIERY
R0lfRk9STUFUX1IzMkczMl9VSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHOFgyNF9U
WVBFTEVTUzoKKyAgICAgICAgcmV0dXJuIDY0OworCisgICAgICBjYXNlIERYR0lfRk9STUFUX1Iz
MkczMkIzMl9GTE9BVDoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1NJTlQ6Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjMyRzMyQjMyX1VJTlQ6CisgICAgICAgIHJldHVybiA5NjsKKworICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQ6CisgICAgICBjYXNlIERYR0lfRk9STUFU
X1IzMkczMkIzMkEzMl9TSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJf
VFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5UOgorICAg
ICAgICByZXR1cm4gMTI4OworCisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9UWVBFTEVTUzoK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9CQzFfVU5PUk1fU1JHQjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1NOT1JNOgorICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFU
X0JDNF9VTk9STToKKyAgICAgICAgcmV0dXJuIDQ7CisKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkMyX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk06CisgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDMl9VTk9STV9TUkdCOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzNfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STToKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNX1NSR0I6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
NV9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1RZUEVMRVNTOgorICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzVfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfU0Yx
NjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQkM2SF9VRjE2OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVFlQRUxFU1M6
CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM3X1VOT1JNX1NSR0I6CisgICAgICAgIHJldHVybiA4OworCisgICAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3NpemVfdCBDb21wdXRlQmxvY2tTaXplQml0
cyhEWEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFU
X0JDMV9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0I6CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX0JDNF9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0
X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVU5PUk06CisgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDMl9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1VO
T1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQjoKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQkMzX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5P
Uk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STV9TUkdCOgorICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CQzVfU05PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9UWVBFTEVT
UzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzZIX1NGMTY6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVFlQRUxFU1M6Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVUYxNjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkM3X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk06CisgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDN19VTk9STV9TUkdCOgorICAgICAgICByZXR1cm4gQ29tcHV0ZVBp
eGVsU2l6ZUJpdHMoZm9ybWF0KSAqIDE2OworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitib29sIElzQ29tcHJlc3Nl
ZChEWEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFU
X0JDMV9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0I6CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX0JDNF9TTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0
X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVU5PUk06CisgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDMl9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1VO
T1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQjoKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQkMzX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5P
Uk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STV9TUkdCOgorICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CQzVfU05PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9UWVBFTEVT
UzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzZIX1NGMTY6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVFlQRUxFU1M6Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVUYxNjoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkM3X1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk06CisgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDN19VTk9STV9TUkdCOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KK30KKwordW5zaWduZWQgaW50IEdldFRleHR1cmVGb3JtYXREaW1lbnNpb25BbGln
bm1lbnQoRFhHSV9GT1JNQVQgZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KQorICAgIHsK
KyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1RZUEVMRVNTOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzFfVU5PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9VTk9STV9TUkdCOgor
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfU05PUk06CisgICAgICBjYXNlIERYR0lfRk9STUFU
X0JDNF9UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1VOT1JNOgorICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzJfVFlQRUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
Ml9VTk9STToKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1VOT1JNX1NSR0I6CisgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDM19UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMz
X1VOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQjoKKyAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfQkM1X1NOT1JNOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVfVFlQ
RUxFU1M6CisgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9VTk9STToKKyAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQkM2SF9TRjE2OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1RZUEVMRVNT
OgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1VGMTY6CisgICAgICBjYXNlIERYR0lfRk9S
TUFUX0JDN19UWVBFTEVTUzoKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1VOT1JNOgorICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk1fU1JHQjoKKyAgICAgICAgcmV0dXJuIDQ7Cisg
ICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgIHJldHVybiAxOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDE7CisgICAg
fQorfQorCitib29sIElzRGVwdGhTdGVuY2lsRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCkKK3sK
KyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QzMl9G
TE9BVF9TOFgyNF9VSU5UOgorICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMzJfRkxPQVQ6CisgICAg
ICBjYXNlIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UOgorICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9EMTZfVU5PUk06CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworRFhHSV9GT1JNQVQgR2V0RGVwdGhUZXh0
dXJlRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAg
ICB7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QzMl9GTE9BVF9TOFgyNF9VSU5UOiByZXR1cm4g
RFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1M7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0Qz
Ml9GTE9BVDogICAgICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjMyX1RZUEVMRVNTOworICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDogICAgcmV0dXJuIERYR0lfRk9S
TUFUX1IyNEc4X1RZUEVMRVNTOworICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06ICAg
ICAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1IxNl9UWVBFTEVTUzsKKyAgICAgIGRlZmF1bHQ6
IFVOUkVBQ0hBQkxFKCk7ICAgICAgICAgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9VTktOT1dO
OworICAgIH0KK30KKworRFhHSV9GT1JNQVQgR2V0RGVwdGhTaGFkZXJSZXNvdXJjZUZvcm1hdChE
WEdJX0ZPUk1BVCBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpCisgICAgeworICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVDogcmV0dXJuIERYR0lfRk9STUFU
X1IzMl9GTE9BVF9YOFgyNF9UWVBFTEVTUzsKKyAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZM
T0FUOiAgICAgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9SMzJfVUlOVDsKKyAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6ICAgIHJldHVybiBEWEdJX0ZPUk1BVF9SMjRf
VU5PUk1fWDhfVFlQRUxFU1M7CisgICAgICBjYXNlIERYR0lfRk9STUFUX0QxNl9VTk9STTogICAg
ICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjE2X1VOT1JNOworICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsgICAgICAgICAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1VOS05PV047Cisg
ICAgfQorfQorCitIUkVTVUxUIFNldERlYnVnTmFtZShJRDNEMTFEZXZpY2VDaGlsZCAqcmVzb3Vy
Y2UsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisjaWYgZGVmaW5lZChfREVCVUcpCisgICAgcmV0dXJu
IHJlc291cmNlLT5TZXRQcml2YXRlRGF0YShXS1BESURfRDNERGVidWdPYmplY3ROYW1lLCBzdHJs
ZW4obmFtZSksIG5hbWUpOworI2Vsc2UKKyAgICByZXR1cm4gU19PSzsKKyNlbmRpZgorfQorCit9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3Jl
bmRlcmVyMTFfdXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL3JlbmRlcmVyL3JlbmRlcmVyMTFfdXRpbHMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvcmVuZGVyZXIx
MV91dGlscy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk1IEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gcmVuZGVyZXIxMV91dGlscy5oOiBDb252ZXJzaW9uIGZ1bmN0aW9ucyBhbmQgb3RoZXIgdXRp
bGl0eSByb3V0aW5lcworLy8gc3BlY2lmaWMgdG8gdGhlIEQzRDExIHJlbmRlcmVyLgorCisjaWZu
ZGVmIExJQkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUjExX1VUSUxTX0gKKyNkZWZpbmUgTElCR0xF
U1YyX1JFTkRFUkVSX1JFTkRFUkVSMTFfVVRJTFNfSAorCisjaW5jbHVkZSAibGliR0xFU3YyL2Fu
Z2xldHlwZXMuaCIKKworbmFtZXNwYWNlIGdsX2QzZDExCit7CisKK0QzRDExX0JMRU5EIENvbnZl
cnRCbGVuZEZ1bmMoR0xlbnVtIGdsQmxlbmQsIGJvb2wgaXNBbHBoYSk7CitEM0QxMV9CTEVORF9P
UCBDb252ZXJ0QmxlbmRPcChHTGVudW0gZ2xCbGVuZE9wKTsKK1VJTlQ4IENvbnZlcnRDb2xvck1h
c2soYm9vbCBtYXNrUmVkLCBib29sIG1hc2tHcmVlbiwgYm9vbCBtYXNrQmx1ZSwgYm9vbCBtYXNr
QWxwaGEpOworCitEM0QxMV9DVUxMX01PREUgQ29udmVydEN1bGxNb2RlKGJvb2wgY3VsbEVuYWJs
ZWQsIEdMZW51bSBjdWxsTW9kZSk7CisKK0QzRDExX0NPTVBBUklTT05fRlVOQyBDb252ZXJ0Q29t
cGFyaXNvbihHTGVudW0gY29tcGFyaXNvbik7CitEM0QxMV9ERVBUSF9XUklURV9NQVNLIENvbnZl
cnREZXB0aE1hc2soYm9vbCBkZXB0aFdyaXRlRW5hYmxlZCk7CitVSU5UOCBDb252ZXJ0U3RlbmNp
bE1hc2soR0x1aW50IHN0ZW5jaWxtYXNrKTsKK0QzRDExX1NURU5DSUxfT1AgQ29udmVydFN0ZW5j
aWxPcChHTGVudW0gc3RlbmNpbE9wKTsKKworRDNEMTFfRklMVEVSIENvbnZlcnRGaWx0ZXIoR0xl
bnVtIG1pbkZpbHRlciwgR0xlbnVtIG1hZ0ZpbHRlciwgZmxvYXQgbWF4QW5pc290cm9weSk7CitE
M0QxMV9URVhUVVJFX0FERFJFU1NfTU9ERSBDb252ZXJ0VGV4dHVyZVdyYXAoR0xlbnVtIHdyYXAp
OworRkxPQVQgQ29udmVydE1pbkxPRChHTGVudW0gbWluRmlsdGVyLCB1bnNpZ25lZCBpbnQgbG9k
T2Zmc2V0KTsKK0ZMT0FUIENvbnZlcnRNYXhMT0QoR0xlbnVtIG1pbkZpbHRlciwgdW5zaWduZWQg
aW50IGxvZE9mZnNldCk7CisKK0RYR0lfRk9STUFUIENvbnZlcnRSZW5kZXJidWZmZXJGb3JtYXQo
R0xlbnVtIGZvcm1hdCk7CitEWEdJX0ZPUk1BVCBDb252ZXJ0VGV4dHVyZUZvcm1hdChHTGVudW0g
Zm9ybWF0KTsKK30KKworbmFtZXNwYWNlIGQzZDExX2dsCit7CisKK0dMZW51bSBDb252ZXJ0QmFj
a0J1ZmZlckZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpOworR0xlbnVtIENvbnZlcnREZXB0aFN0
ZW5jaWxGb3JtYXQoRFhHSV9GT1JNQVQgZm9ybWF0KTsKK0dMZW51bSBDb252ZXJ0UmVuZGVyYnVm
ZmVyRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCk7CitHTGVudW0gQ29udmVydFRleHR1cmVJbnRl
cm5hbEZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpOworCit9CisKK25hbWVzcGFjZSBkM2QxMQor
eworCitzdHJ1Y3QgUG9zaXRpb25UZXhDb29yZFZlcnRleAoreworICAgIGZsb2F0IHgsIHk7Cisg
ICAgZmxvYXQgdSwgdjsKK307Cit2b2lkIFNldFBvc2l0aW9uVGV4Q29vcmRWZXJ0ZXgoUG9zaXRp
b25UZXhDb29yZFZlcnRleCogdmVydGV4LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB1LCBmbG9h
dCB2KTsKKworc3RydWN0IFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleAoreworICAgIGZsb2F0IHgs
IHksIHo7CisgICAgZmxvYXQgciwgZywgYiwgYTsKK307Cit2b2lkIFNldFBvc2l0aW9uRGVwdGhD
b2xvclZlcnRleChQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXgqIHZlcnRleCwgZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpDb2xvciAmY29sb3IpOworCitzaXplX3QgQ29tcHV0ZVBpeGVsU2l6ZUJpdHMoRFhHSV9GT1JN
QVQgZm9ybWF0KTsKK3NpemVfdCBDb21wdXRlQmxvY2tTaXplQml0cyhEWEdJX0ZPUk1BVCBmb3Jt
YXQpOworCitib29sIElzQ29tcHJlc3NlZChEWEdJX0ZPUk1BVCBmb3JtYXQpOwordW5zaWduZWQg
aW50IEdldFRleHR1cmVGb3JtYXREaW1lbnNpb25BbGlnbm1lbnQoRFhHSV9GT1JNQVQgZm9ybWF0
KTsKKworYm9vbCBJc0RlcHRoU3RlbmNpbEZvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQpOworRFhH
SV9GT1JNQVQgR2V0RGVwdGhUZXh0dXJlRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCk7CitEWEdJ
X0ZPUk1BVCBHZXREZXB0aFNoYWRlclJlc291cmNlRm9ybWF0KERYR0lfRk9STUFUIGZvcm1hdCk7
CisKK0hSRVNVTFQgU2V0RGVidWdOYW1lKElEM0QxMURldmljZUNoaWxkICpyZXNvdXJjZSwgY29u
c3QgY2hhciAqbmFtZSk7CisKK2lubGluZSBib29sIGlzRGV2aWNlTG9zdEVycm9yKEhSRVNVTFQg
ZXJyb3JDb2RlKQoreworICAgIHN3aXRjaCAoZXJyb3JDb2RlKQorICAgIHsKKyAgICAgIGNhc2Ug
RFhHSV9FUlJPUl9ERVZJQ0VfSFVORzoKKyAgICAgIGNhc2UgRFhHSV9FUlJPUl9ERVZJQ0VfUkVN
T1ZFRDoKKyAgICAgIGNhc2UgRFhHSV9FUlJPUl9ERVZJQ0VfUkVTRVQ6CisgICAgICBjYXNlIERY
R0lfRVJST1JfRFJJVkVSX0lOVEVSTkFMX0VSUk9SOgorICAgICAgY2FzZSBEWEdJX0VSUk9SX05P
VF9DVVJSRU5UTFlfQVZBSUxBQkxFOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK30KKworI2VuZGlmIC8vIExJ
QkdMRVNWMl9SRU5ERVJFUl9SRU5ERVJFUjExX1VUSUxTX0gKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvdmVydGV4Y29udmVyc2lvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIv
dmVydGV4Y29udmVyc2lvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci92ZXJ0ZXhjb252ZXJzaW9uLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjAzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyB2ZXJ0ZXhjb252ZXJz
aW9uLmg6IEEgbGlicmFyeSBvZiB2ZXJ0ZXggY29udmVyc2lvbiBjbGFzc2VzIHRoYXQgY2FuIGJl
IHVzZWQgdG8gYnVpbGQKKy8vIHRoZSBGb3JtYXRDb252ZXJ0ZXIgb2JqZWN0cyB1c2VkIGJ5IHRo
ZSBidWZmZXIgY29udmVyc2lvbiBzeXN0ZW0uCisKKyNpZm5kZWYgTElCR0xFU1YyX1ZFUlRFWENP
TlZFUlNJT05fSF8KKyNkZWZpbmUgTElCR0xFU1YyX1ZFUlRFWENPTlZFUlNJT05fSF8KKworbmFt
ZXNwYWNlIHJ4Cit7CisKKy8vIENvbnZlcnNpb24gdHlwZXM6CisvLyBzdGF0aWMgY29uc3QgYm9v
bCBpZGVudGl0eTogdHJ1ZSBpZiB0aGlzIGlzIGFuIGlkZW50aXR5IHRyYW5zZm9ybSwgZmFsc2Ug
b3RoZXJ3aXNlCisvLyBzdGF0aWMgVSBjb252ZXJ0KFQpOiBjb252ZXJ0IGEgc2luZ2xlIGVsZW1l
bnQgZnJvbSB0aGUgaW5wdXQgdHlwZSB0byB0aGUgb3V0cHV0IHR5cGUKKy8vIHR5cGVkZWYgLi4u
IE91dHB1dFR5cGU6IHRoZSB0eXBlIHByb2R1Y2VkIGJ5IHRoaXMgY29udmVyc2lvbgorCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBJZGVudGl0eQoreworICAgIHN0YXRpYyBjb25zdCBib29s
IGlkZW50aXR5ID0gdHJ1ZTsKKworICAgIHR5cGVkZWYgVCBPdXRwdXRUeXBlOworCisgICAgc3Rh
dGljIFQgY29udmVydChUIHgpCisgICAgeworICAgICAgICByZXR1cm4geDsKKyAgICB9Cit9Owor
Cit0ZW1wbGF0ZSA8Y2xhc3MgRnJvbVQsIGNsYXNzIFRvVD4KK3N0cnVjdCBDYXN0Cit7CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgaWRlbnRpdHkgPSBmYWxzZTsKKworICAgIHR5cGVkZWYgVG9UIE91
dHB1dFR5cGU7CisKKyAgICBzdGF0aWMgVG9UIGNvbnZlcnQoRnJvbVQgeCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUb1Q+KHgpOworICAgIH0KK307CisKK3RlbXBsYXRlIDxj
bGFzcyBUPgorc3RydWN0IENhc3Q8VCwgVD4KK3sKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpZGVu
dGl0eSA9IHRydWU7CisKKyAgICB0eXBlZGVmIFQgT3V0cHV0VHlwZTsKKworICAgIHN0YXRpYyBU
IGNvbnZlcnQoVCB4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHgpOwor
ICAgIH0KK307CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IE5vcm1hbGl6ZQoreworICAg
IHN0YXRpYyBjb25zdCBib29sIGlkZW50aXR5ID0gZmFsc2U7CisKKyAgICB0eXBlZGVmIGZsb2F0
IE91dHB1dFR5cGU7CisKKyAgICBzdGF0aWMgZmxvYXQgY29udmVydChUIHgpCisgICAgeworICAg
ICAgICB0eXBlZGVmIHN0ZDo6bnVtZXJpY19saW1pdHM8VD4gTkw7CisgICAgICAgIGZsb2F0IGYg
PSBzdGF0aWNfY2FzdDxmbG9hdD4oeCk7CisKKyAgICAgICAgaWYgKE5MOjppc19zaWduZWQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vIGNvbnN0IGZsb2F0ID0+IFZDMjAwOCBjb21wdXRlcyBp
dCBhdCBjb21waWxlIHRpbWUKKyAgICAgICAgICAgIC8vIHN0YXRpYyBjb25zdCBmbG9hdCA9PiBW
QzIwMDggY29tcHV0ZXMgaXQgdGhlIGZpcnN0IHRpbWUgd2UgZ2V0IGhlcmUsIHN0b3JlcyBpdCB0
byBtZW1vcnkgd2l0aCBzdGF0aWMgZ3VhcmQgYW5kIGFsbCB0aGF0LgorICAgICAgICAgICAgY29u
c3QgZmxvYXQgZGl2aXNvciA9IDEuMGYvKDIqc3RhdGljX2Nhc3Q8ZmxvYXQ+KE5MOjptYXgoKSkr
MSk7CisgICAgICAgICAgICByZXR1cm4gKDIqZisxKSpkaXZpc29yOworICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGYvTkw6Om1heCgpOworICAg
ICAgICB9CisgICAgfQorfTsKKwordGVtcGxhdGUgPGNsYXNzIEZyb21UeXBlLCBzdGQ6OnNpemVf
dCBTY2FsZUJpdHM+CitzdHJ1Y3QgRml4ZWRUb0Zsb2F0Cit7CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgaWRlbnRpdHkgPSBmYWxzZTsKKworICAgIHR5cGVkZWYgZmxvYXQgT3V0cHV0VHlwZTsKKwor
ICAgIHN0YXRpYyBmbG9hdCBjb252ZXJ0KEZyb21UeXBlIHgpCisgICAgeworICAgICAgICBjb25z
dCBmbG9hdCBkaXZpc29yID0gMS4wZiAvIHN0YXRpY19jYXN0PGZsb2F0PihzdGF0aWNfY2FzdDxG
cm9tVHlwZT4oMSkgPDwgU2NhbGVCaXRzKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0Pih4KSAqIGRpdmlzb3I7CisgICAgfQorfTsKKworLy8gV2lkZW4gdHlwZXM6CisvLyBzdGF0
aWMgY29uc3QgdW5zaWduZWQgaW50IGluaXRpYWxXaWR0aDogbnVtYmVyIG9mIGNvbXBvbmVudHMg
YmVmb3JlIGNvbnZlcnNpb24KKy8vIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgZmluYWxXaWR0
aDogbnVtYmVyIG9mIGNvbXBvbmVudHMgYWZ0ZXIgY29udmVyc2lvbgorCisvLyBGbG9hdCBpcyBz
dXBwb3J0ZWQgYXQgYW55IHNpemUuCit0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KK3N0cnVjdCBO
b1dpZGVuCit7CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGluaXRpYWxXaWR0aCA9IE47
CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGZpbmFsV2lkdGggPSBOOworfTsKKworLy8g
U0hPUlQsIG5vcm0tU0hPUlQsIG5vcm0tVU5TSUdORURfU0hPUlQgYXJlIHN1cHBvcnRlZCBidXQg
b25seSB3aXRoIDIgb3IgNCBjb21wb25lbnRzCit0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KK3N0
cnVjdCBXaWRlblRvRXZlbgoreworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBpbml0aWFs
V2lkdGggPSBOOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBmaW5hbFdpZHRoID0gTiso
TiYxKTsKK307CisKK3RlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgorc3RydWN0IFdpZGVuVG9Gb3Vy
Cit7CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGluaXRpYWxXaWR0aCA9IE47CisgICAg
c3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGZpbmFsV2lkdGggPSA0OworfTsKKworLy8gTW9zdCB0
eXBlcyBoYXZlIDAgYW5kIDEgdGhhdCBhcmUganVzdCB0aGF0LgordGVtcGxhdGUgPGNsYXNzIFQ+
CitzdHJ1Y3QgU2ltcGxlRGVmYXVsdFZhbHVlcworeworICAgIHN0YXRpYyBUIHplcm8oKSB7IHJl
dHVybiBzdGF0aWNfY2FzdDxUPigwKTsgfQorICAgIHN0YXRpYyBUIG9uZSgpIHsgcmV0dXJuIHN0
YXRpY19jYXN0PFQ+KDEpOyB9Cit9OworCisvLyBCdXQgbm9ybWFsaXNlZCB0eXBlcyBvbmx5IHN0
b3JlIFswLDFdIG9yIFstMSwxXSBzbyAxLjAgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIG1heCB2YWx1
ZS4KK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IE5vcm1hbGl6ZWREZWZhdWx0VmFsdWVzCit7
CisgICAgc3RhdGljIFQgemVybygpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KDApOyB9CisgICAg
c3RhdGljIFQgb25lKCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCk7IH0K
K307CisKKy8vIENvbnZlcnRlcjoKKy8vIHN0YXRpYyBjb25zdCBib29sIGlkZW50aXR5OiB0cnVl
IGlmIHRoaXMgaXMgYW4gaWRlbnRpdHkgdHJhbnNmb3JtICh3aXRoIG5vIHdpZGVuaW5nKQorLy8g
c3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGZpbmFsU2l6ZTogbnVtYmVyIG9mIGJ5dGVzIHBlciBv
dXRwdXQgdmVydGV4CisvLyBzdGF0aWMgdm9pZCBjb252ZXJ0QXJyYXkoY29uc3Qgdm9pZCAqaW4s
IHN0ZDo6c2l6ZV90IHN0cmlkZSwgc3RkOjpzaXplX3Qgbiwgdm9pZCAqb3V0KTogY29udmVydCBh
biBhcnJheSBvZiB2ZXJ0aWNlcy4gSW5wdXQgbWF5IGJlIHN0cmlkZWQsIGJ1dCBvdXRwdXQgd2ls
bCBiZSB1bnN0cmlkZWQuCisKK3RlbXBsYXRlIDxjbGFzcyBJblQsIGNsYXNzIFdpZGVuUnVsZSwg
Y2xhc3MgQ29udmVydGVyLCBjbGFzcyBEZWZhdWx0VmFsdWVSdWxlID0gU2ltcGxlRGVmYXVsdFZh
bHVlczxJblQ+ID4KK3N0cnVjdCBWZXJ0ZXhEYXRhQ29udmVydGVyCit7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBDb252ZXJ0ZXI6Ok91dHB1dFR5cGUgT3V0cHV0VHlwZTsKKyAgICB0eXBlZGVmIElu
VCBJbnB1dFR5cGU7CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpZGVudGl0eSA9IChXaWRlblJ1
bGU6OmluaXRpYWxXaWR0aCA9PSBXaWRlblJ1bGU6OmZpbmFsV2lkdGgpICYmIENvbnZlcnRlcjo6
aWRlbnRpdHk7CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IGZpbmFsU2l6ZSA9IFdpZGVu
UnVsZTo6ZmluYWxXaWR0aCAqIHNpemVvZihPdXRwdXRUeXBlKTsKKworICAgIHN0YXRpYyB2b2lk
IGNvbnZlcnRBcnJheShjb25zdCBJbnB1dFR5cGUgKmluLCBzdGQ6OnNpemVfdCBzdHJpZGUsIHN0
ZDo6c2l6ZV90IG4sIE91dHB1dFR5cGUgKm91dCkKKyAgICB7CisgICAgICAgIGZvciAoc3RkOjpz
aXplX3QgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IElu
cHV0VHlwZSAqZWluID0gcG9pbnRlckFkZEJ5dGVzKGluLCBpICogc3RyaWRlKTsKKworICAgICAg
ICAgICAgY29weUNvbXBvbmVudChvdXQsIGVpbiwgMCwgc3RhdGljX2Nhc3Q8T3V0cHV0VHlwZT4o
RGVmYXVsdFZhbHVlUnVsZTo6emVybygpKSk7CisgICAgICAgICAgICBjb3B5Q29tcG9uZW50KG91
dCwgZWluLCAxLCBzdGF0aWNfY2FzdDxPdXRwdXRUeXBlPihEZWZhdWx0VmFsdWVSdWxlOjp6ZXJv
KCkpKTsKKyAgICAgICAgICAgIGNvcHlDb21wb25lbnQob3V0LCBlaW4sIDIsIHN0YXRpY19jYXN0
PE91dHB1dFR5cGU+KERlZmF1bHRWYWx1ZVJ1bGU6Onplcm8oKSkpOworICAgICAgICAgICAgY29w
eUNvbXBvbmVudChvdXQsIGVpbiwgMywgc3RhdGljX2Nhc3Q8T3V0cHV0VHlwZT4oRGVmYXVsdFZh
bHVlUnVsZTo6b25lKCkpKTsKKworICAgICAgICAgICAgb3V0ICs9IFdpZGVuUnVsZTo6ZmluYWxX
aWR0aDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRBcnJheShj
b25zdCB2b2lkICppbiwgc3RkOjpzaXplX3Qgc3RyaWRlLCBzdGQ6OnNpemVfdCBuLCB2b2lkICpv
dXQpCisgICAgeworICAgICAgICByZXR1cm4gY29udmVydEFycmF5KHN0YXRpY19jYXN0PGNvbnN0
IElucHV0VHlwZSo+KGluKSwgc3RyaWRlLCBuLCBzdGF0aWNfY2FzdDxPdXRwdXRUeXBlKj4ob3V0
KSk7CisgICAgfQorCisgIHByaXZhdGU6CisgICAgLy8gQWR2YW5jZSB0aGUgZ2l2ZW4gcG9pbnRl
ciBieSBhIG51bWJlciBvZiBieXRlcyAobm90IHBvaW50ZWQtdG8gZWxlbWVudHMpLgorICAgIHRl
bXBsYXRlIDxjbGFzcyBUPgorICAgIHN0YXRpYyBUICpwb2ludGVyQWRkQnl0ZXMoVCAqYmFzZVB0
ciwgc3RkOjpzaXplX3QgbnVtQnl0ZXMpCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxUICo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihiYXNlUHRyKSArIG51bUJ5
dGVzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBjb3B5Q29tcG9uZW50KE91dHB1dFR5cGUg
Km91dCwgY29uc3QgSW5wdXRUeXBlICppbiwgc3RkOjpzaXplX3QgZWxlbWVudGluZGV4LCBPdXRw
dXRUeXBlIGRlZmF1bHR2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChXaWRlblJ1bGU6OmZpbmFs
V2lkdGggPiBlbGVtZW50aW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChXaWRlblJ1
bGU6OmluaXRpYWxXaWR0aCA+IGVsZW1lbnRpbmRleCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBvdXRbZWxlbWVudGluZGV4XSA9IENvbnZlcnRlcjo6Y29udmVydChpbltlbGVtZW50
aW5kZXhdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBvdXRbZWxlbWVudGluZGV4XSA9IGRlZmF1bHR2YWx1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK307CisKK30KKworI2VuZGlmICAgLy8gTElCR0xF
U1YyX1ZFUlRFWENPTlZFUlNJT05fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9CbGl0LnBzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9CbGl0LnBz
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9zaGFkZXJzL0JsaXQucHMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCitzYW1wbGVyMkQgdGV4IDogczA7CisKK3VuaWZvcm0gZmxvYXQ0IG1vZGUg
OiBjMDsKKworLy8gUGFzc3Rocm91Z2ggUGl4ZWwgU2hhZGVyCisvLyBPdXRwdXRzIHRleHR1cmUg
MCBzYW1wbGVkIGF0IHRleGNvb3JkIDAuCitmbG9hdDQgcGFzc3Rocm91Z2hwcyhmbG9hdDQgdGV4
Y29vcmQgOiBURVhDT09SRDApIDogQ09MT1IKK3sKKwlyZXR1cm4gdGV4MkQodGV4LCB0ZXhjb29y
ZC54eSk7Cit9OworCisvLyBMdW1pbmFuY2UgQ29udmVyc2lvbiBQaXhlbCBTaGFkZXIKKy8vIE91
dHB1dHMgc2FtcGxlKHRleDAsIHRjMCkucnJyYS4KKy8vIEZvciBMQSBvdXRwdXQgKHBhc3MgQSkg
c2V0IEMwLlggPSAxLCBDMC5ZID0gMC4KKy8vIEZvciBMIG91dHB1dCAoQSA9IDEpIHNldCBDMC5Y
ID0gMCwgQzAuWSA9IDEuCitmbG9hdDQgbHVtaW5hbmNlcHMoZmxvYXQ0IHRleGNvb3JkIDogVEVY
Q09PUkQwKSA6IENPTE9SCit7CisJZmxvYXQ0IHRtcCA9IHRleDJEKHRleCwgdGV4Y29vcmQueHkp
OworCXRtcC53ID0gdG1wLncgKiBtb2RlLnggKyBtb2RlLnk7CisJcmV0dXJuIHRtcC54eHh3Owor
fTsKKworLy8gUkdCL0EgQ29tcG9uZW50IE1hc2sgUGl4ZWwgU2hhZGVyCisvLyBPdXRwdXRzIHNh
bXBsZSh0ZXgwLCB0YzApIHdpdGggb3B0aW9ucyB0byBmb3JjZSBSR0IgPSAwIGFuZC9vciBBID0g
MS4KKy8vIFRvIGZvcmNlIFJHQiA9IDAsIHNldCBDMC5YID0gMCwgb3RoZXJ3aXNlIEMwLlggPSAx
LgorLy8gVG8gZm9yY2UgQSA9IDEsIHNldCBDMC5aID0gMCwgQzAuVyA9IDEsIG90aGVyd2lzZSBD
MC5aID0gMSwgQzAuVyA9IDAuCitmbG9hdDQgY29tcG9uZW50bWFza3BzKGZsb2F0NCB0ZXhjb29y
ZCA6IFRFWENPT1JEMCkgOiBDT0xPUgoreworCWZsb2F0NCB0bXAgPSB0ZXgyRCh0ZXgsIHRleGNv
b3JkLnh5KTsKKwl0bXAueHl6ID0gdG1wLnh5eiAqIG1vZGUueDsKKwl0bXAudyA9IHRtcC53ICog
bW9kZS56ICsgbW9kZS53OworCXJldHVybiB0bXA7Cit9OwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL0JsaXQudnMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFk
ZXJzL0JsaXQudnMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvQmxpdC52cwkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKK3N0cnVjdCBWU19PVVRQVVQKK3sKKyAgICBmbG9hdDQg
cG9zaXRpb24gOiBQT1NJVElPTjsKKyAgICBmbG9hdDQgdGV4Y29vcmQgOiBURVhDT09SRDA7Cit9
OworCit1bmlmb3JtIGZsb2F0NCBoYWxmUGl4ZWxTaXplIDogYzA7CisKKy8vIFN0YW5kYXJkIFZl
cnRleCBTaGFkZXIKKy8vIElucHV0IDAgaXMgdGhlIGhvbW9nZW5vdXMgcG9zaXRpb24uCisvLyBP
dXRwdXRzIHRoZSBob21vZ2Vub3VzIHBvc2l0aW9uIGFzLWlzLgorLy8gT3V0cHV0cyBhIHRleCBj
b29yZCB3aXRoICgwLDApIGluIHRoZSB1cHBlci1sZWZ0IGNvcm5lciBvZiB0aGUgc2NyZWVuIGFu
ZCAoMSwxKSBpbiB0aGUgYm90dG9tIHJpZ2h0LgorLy8gQzAuWCBtdXN0IGJlIG5lZ2F0aXZlIGhh
bGYtcGl4ZWwgd2lkdGgsIEMwLlkgbXVzdCBiZSBoYWxmLXBpeGVsIGhlaWdodC4gQzAuWlcgbXVz
dCBiZSAwLgorVlNfT1VUUFVUIHN0YW5kYXJkdnMoaW4gZmxvYXQ0IHBvc2l0aW9uIDogUE9TSVRJ
T04pCit7CisgICAgVlNfT1VUUFVUIE91dDsKKworICAgIE91dC5wb3NpdGlvbiA9IHBvc2l0aW9u
ICsgaGFsZlBpeGVsU2l6ZTsKKyAgICBPdXQudGV4Y29vcmQgPSBwb3NpdGlvbiAqIGZsb2F0NCgw
LjUsIC0wLjUsIDEuMCwgMS4wKSArIGZsb2F0NCgwLjUsIDAuNSwgMCwgMCk7CisKKyAgICByZXR1
cm4gT3V0OworfTsKKworLy8gRmxpcCBZIFZlcnRleCBTaGFkZXIKKy8vIElucHV0IDAgaXMgdGhl
IGhvbW9nZW5vdXMgcG9zaXRpb24uCisvLyBPdXRwdXRzIHRoZSBob21vZ2Vub3VzIHBvc2l0aW9u
IGFzLWlzLgorLy8gT3V0cHV0cyBhIHRleCBjb29yZCB3aXRoICgwLDEpIGluIHRoZSB1cHBlci1s
ZWZ0IGNvcm5lciBvZiB0aGUgc2NyZWVuIGFuZCAoMSwwKSBpbiB0aGUgYm90dG9tIHJpZ2h0Lgor
Ly8gQzAuWFkgbXVzdCBiZSB0aGUgaGFsZi1waXhlbCB3aWR0aCBhbmQgaGVpZ2h0LiBDMC5aVyBt
dXN0IGJlIDAuCitWU19PVVRQVVQgZmxpcHl2cyhpbiBmbG9hdDQgcG9zaXRpb24gOiBQT1NJVElP
TikKK3sKKyAgICBWU19PVVRQVVQgT3V0OworCisgICAgT3V0LnBvc2l0aW9uID0gcG9zaXRpb24g
KyBoYWxmUGl4ZWxTaXplOworICAgIE91dC50ZXhjb29yZCA9IHBvc2l0aW9uICogZmxvYXQ0KDAu
NSwgMC41LCAxLjAsIDEuMCkgKyBmbG9hdDQoMC41LCAwLjUsIDAsIDApOworCisgICAgcmV0dXJu
IE91dDsKK307CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Jl
bmRlcmVyL3NoYWRlcnMvQ2xlYXIxMS5obHNsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9DbGVhcjExLmhsc2wJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvQ2xlYXIxMS5obHNsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACit2
b2lkIFZTX0NsZWFyKCBpbiBmbG9hdDMgIGluUG9zaXRpb24gOiAgICBQT1NJVElPTiwgIGluIGZs
b2F0NCAgaW5Db2xvciA6IENPTE9SLAorICAgICAgICAgICAgICBvdXQgZmxvYXQ0IG91dFBvc2l0
aW9uIDogU1ZfUE9TSVRJT04sIG91dCBmbG9hdDQgb3V0Q29sb3IgOiBDT0xPUikKK3sKKyAgICBv
dXRQb3NpdGlvbiA9IGZsb2F0NChpblBvc2l0aW9uLCAxLjBmKTsKKyAgICBvdXRDb2xvciA9IGlu
Q29sb3I7Cit9CisKKy8vIEFzc3VtZSB3ZSBhcmUgaW4gU000Kywgd2hpY2ggaGFzIDggY29sb3Ig
b3V0cHV0cworc3RydWN0IFBTX091dHB1dE11bHRpcGxlCit7CisJZmxvYXQ0IGNvbG9yMCA6IFNW
X1RBUkdFVDA7CisJZmxvYXQ0IGNvbG9yMSA6IFNWX1RBUkdFVDE7CisJZmxvYXQ0IGNvbG9yMiA6
IFNWX1RBUkdFVDI7CisJZmxvYXQ0IGNvbG9yMyA6IFNWX1RBUkdFVDM7CisJZmxvYXQ0IGNvbG9y
NCA6IFNWX1RBUkdFVDQ7CisJZmxvYXQ0IGNvbG9yNSA6IFNWX1RBUkdFVDU7CisJZmxvYXQ0IGNv
bG9yNiA6IFNWX1RBUkdFVDY7CisJZmxvYXQ0IGNvbG9yNyA6IFNWX1RBUkdFVDc7Cit9OworCitQ
U19PdXRwdXRNdWx0aXBsZSBQU19DbGVhck11bHRpcGxlKGluIGZsb2F0NCBpblBvc2l0aW9uIDog
U1ZfUE9TSVRJT04sIGluIGZsb2F0NCBpbkNvbG9yIDogQ09MT1IpCit7CisJUFNfT3V0cHV0TXVs
dGlwbGUgb3V0Q29sb3I7CisJb3V0Q29sb3IuY29sb3IwID0gaW5Db2xvcjsKKwlvdXRDb2xvci5j
b2xvcjEgPSBpbkNvbG9yOworCW91dENvbG9yLmNvbG9yMiA9IGluQ29sb3I7CisJb3V0Q29sb3Iu
Y29sb3IzID0gaW5Db2xvcjsKKwlvdXRDb2xvci5jb2xvcjQgPSBpbkNvbG9yOworCW91dENvbG9y
LmNvbG9yNSA9IGluQ29sb3I7CisJb3V0Q29sb3IuY29sb3I2ID0gaW5Db2xvcjsKKwlvdXRDb2xv
ci5jb2xvcjcgPSBpbkNvbG9yOworCXJldHVybiBvdXRDb2xvcjsKK30KKworZmxvYXQ0IFBTX0Ns
ZWFyU2luZ2xlKGluIGZsb2F0NCBpblBvc2l0aW9uIDogU1ZfUG9zaXRpb24sIGluIGZsb2F0NCBp
bkNvbG9yIDogQ09MT1IpIDogU1ZfVGFyZ2V0MAoreworCXJldHVybiBpbkNvbG9yOworfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJz
L1Bhc3N0aHJvdWdoMTEuaGxzbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvUGFzc3Rocm91Z2gxMS5obHNsCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJl
ci9zaGFkZXJzL1Bhc3N0aHJvdWdoMTEuaGxzbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBA
QAorVGV4dHVyZTJEIFRleHR1cmUgOiByZWdpc3Rlcih0MCk7CitTYW1wbGVyU3RhdGUgU2FtcGxl
ciA6IHJlZ2lzdGVyKHMwKTsKKwordm9pZCBWU19QYXNzdGhyb3VnaCggaW4gZmxvYXQyICBpblBv
c2l0aW9uIDogICAgUE9TSVRJT04sICBpbiBmbG9hdDIgIGluVGV4Q29vcmQgOiBURVhDT09SRDAs
CisgICAgICAgICAgICAgICAgICAgIG91dCBmbG9hdDQgb3V0UG9zaXRpb24gOiBTVl9QT1NJVElP
Tiwgb3V0IGZsb2F0MiBvdXRUZXhDb29yZCA6IFRFWENPT1JEMCkKK3sKKyAgICBvdXRQb3NpdGlv
biA9IGZsb2F0NChpblBvc2l0aW9uLCAwLjBmLCAxLjBmKTsKKyAgICBvdXRUZXhDb29yZCA9IGlu
VGV4Q29vcmQ7Cit9CisKK2Zsb2F0NCBQU19QYXNzdGhyb3VnaFJHQkEoaW4gZmxvYXQ0IGluUG9z
aXRpb24gOiBTVl9QT1NJVElPTiwgaW4gZmxvYXQyIGluVGV4Q29vcmQgOiBURVhDT09SRDApIDog
U1ZfVEFSR0VUMAoreworICAgIHJldHVybiBUZXh0dXJlLlNhbXBsZShTYW1wbGVyLCBpblRleENv
b3JkKS5yZ2JhOworfQorCitmbG9hdDQgUFNfUGFzc3Rocm91Z2hSR0IoaW4gZmxvYXQ0IGluUG9z
aXRpb24gOiBTVl9QT1NJVElPTiwgaW4gZmxvYXQyIGluVGV4Q29vcmQgOiBURVhDT09SRDApIDog
U1ZfVEFSR0VUMAoreworICAgIHJldHVybiBmbG9hdDQoVGV4dHVyZS5TYW1wbGUoU2FtcGxlciwg
aW5UZXhDb29yZCkucmdiLCAxLjBmKTsKK30KKworZmxvYXQ0IFBTX1Bhc3N0aHJvdWdoTHVtKGlu
IGZsb2F0NCBpblBvc2l0aW9uIDogU1ZfUE9TSVRJT04sIGluIGZsb2F0MiBpblRleENvb3JkIDog
VEVYQ09PUkQwKSA6IFNWX1RBUkdFVDAKK3sKKyAgICByZXR1cm4gZmxvYXQ0KFRleHR1cmUuU2Ft
cGxlKFNhbXBsZXIsIGluVGV4Q29vcmQpLnJyciwgMS4wZik7Cit9CisKK2Zsb2F0NCBQU19QYXNz
dGhyb3VnaEx1bUFscGhhKGluIGZsb2F0NCBpblBvc2l0aW9uIDogU1ZfUE9TSVRJT04sIGluIGZs
b2F0MiBpblRleENvb3JkIDogVEVYQ09PUkQwKSA6IFNWX1RBUkdFVDAKK3sKKyAgICByZXR1cm4g
VGV4dHVyZS5TYW1wbGUoU2FtcGxlciwgaW5UZXhDb29yZCkucnJyYTsKK30KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9nZW5lcmF0
ZV9zaGFkZXJzLmJhdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5iYXQJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3No
YWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5iYXQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAK
K0BFQ0hPIE9GRg0KK1JFTQ0KK1JFTSBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCitSRU0gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KK1JF
TSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KK1JFTQ0KKw0KK1BBVEggJVBBVEglOyVEWFNE
S19ESVIlXFV0aWxpdGllc1xiaW5ceDg2DQorDQorZnhjIC9FIHN0YW5kYXJkdnMgL1QgdnNfMl8w
IC9GaCBjb21waWxlZC9zdGFuZGFyZHZzLmggQmxpdC52cw0KK2Z4YyAvRSBmbGlweXZzIC9UIHZz
XzJfMCAvRmggY29tcGlsZWQvZmxpcHl2cy5oIEJsaXQudnMNCitmeGMgL0UgcGFzc3Rocm91Z2hw
cyAvVCBwc18yXzAgL0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdocHMuaCBCbGl0LnBzDQorZnhjIC9F
IGx1bWluYW5jZXBzIC9UIHBzXzJfMCAvRmggY29tcGlsZWQvbHVtaW5hbmNlcHMuaCBCbGl0LnBz
DQorZnhjIC9FIGNvbXBvbmVudG1hc2twcyAvVCBwc18yXzAgL0ZoIGNvbXBpbGVkL2NvbXBvbmVu
dG1hc2twcy5oIEJsaXQucHMNCisNCitmeGMgL0UgVlNfUGFzc3Rocm91Z2ggL1QgdnNfNF8wIC9G
aCBjb21waWxlZC9wYXNzdGhyb3VnaDExdnMuaCBQYXNzdGhyb3VnaDExLmhsc2wNCitmeGMgL0Ug
UFNfUGFzc3Rocm91Z2hSR0JBIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2Jh
MTFwcy5oIFBhc3N0aHJvdWdoMTEuaGxzbA0KK2Z4YyAvRSBQU19QYXNzdGhyb3VnaFJHQiAvVCBw
c180XzAgL0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMTFwcy5oIFBhc3N0aHJvdWdoMTEuaGxz
bA0KK2Z4YyAvRSBQU19QYXNzdGhyb3VnaEx1bSAvVCBwc180XzAgL0ZoIGNvbXBpbGVkL3Bhc3N0
aHJvdWdobHVtMTFwcy5oIFBhc3N0aHJvdWdoMTEuaGxzbA0KK2Z4YyAvRSBQU19QYXNzdGhyb3Vn
aEx1bUFscGhhIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTExcHMu
aCBQYXNzdGhyb3VnaDExLmhsc2wNCisNCitmeGMgL0UgVlNfQ2xlYXIgL1QgdnNfNF8wIC9GaCBj
b21waWxlZC9jbGVhcjExdnMuaCBDbGVhcjExLmhsc2wNCitmeGMgL0UgUFNfQ2xlYXJTaW5nbGUg
L1QgcHNfNF8wIC9GaCBjb21waWxlZC9jbGVhcnNpbmdsZTExcHMuaCBDbGVhcjExLmhsc2wNCitm
eGMgL0UgUFNfQ2xlYXJNdWx0aXBsZSAvVCBwc180XzAgL0ZoIGNvbXBpbGVkL2NsZWFybXVsdGlw
bGUxMXBzLmggQ2xlYXIxMS5obHNsDQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyMTF2cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hh
ZGVycy9jb21waWxlZC9jbGVhcjExdnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jbGVhcjEx
dnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzMgQEAKKyNpZiAwDQorLy8NCisvLyBHZW5l
cmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTEx
DQorLy8NCisvLw0KKy8vICAgZnhjIC9FIFZTX0NsZWFyIC9UIHZzXzRfMCAvRmggY29tcGlsZWQv
Y2xlYXIxMXZzLmggQ2xlYXIxMS5obHNsDQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0
dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVy
IFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAt
LS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFBPU0lUSU9OICAgICAg
ICAgICAgICAgICAwICAgeHl6ICAgICAgICAgMCAgICAgTk9ORSAgZmxvYXQgICB4eXogDQorLy8g
Q09MT1IgICAgICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAxICAgICBOT05FICBmbG9h
dCAgIHh5encNCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUg
ICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBV
c2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0t
LS0tIC0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encg
ICAgICAgIDAgICAgICBQT1MgIGZsb2F0ICAgeHl6dw0KKy8vIENPTE9SICAgICAgICAgICAgICAg
ICAgICAwICAgeHl6dyAgICAgICAgMSAgICAgTk9ORSAgZmxvYXQgICB4eXp3DQorLy8NCit2c180
XzANCitkY2xfaW5wdXQgdjAueHl6DQorZGNsX2lucHV0IHYxLnh5encNCitkY2xfb3V0cHV0X3Np
diBvMC54eXp3LCBwb3NpdGlvbg0KK2RjbF9vdXRwdXQgbzEueHl6dw0KK21vdiBvMC54eXosIHYw
Lnh5engNCittb3YgbzAudywgbCgxLjAwMDAwMCkNCittb3YgbzEueHl6dywgdjEueHl6dw0KK3Jl
dCANCisvLyBBcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRpZg0K
Kw0KK2NvbnN0IEJZVEUgZ19WU19DbGVhcltdID0NCit7DQorICAgICA2OCwgIDg4LCAgNjYsICA2
NywgMTA5LCAxMzgsIA0KKyAgICAxMDUsICA4MywgIDg2LCAxOTAsICA4MywgMTI1LCANCisgICAg
IDcyLCAxMDIsIDE5NCwgMTM2LCAgNDYsICA2OSwgDQorICAgICAxNywgMTIxLCAgIDEsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgNDgsICAgMiwgICAwLCAgIDAsICAgNSwgICAwLCANCisgICAgICAw
LCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgIDE0MCwgICAwLCAgIDAsICAgMCwgMjIw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDQ4LCAgIDEsICAgMCwgICAwLCANCisgICAgMTgwLCAg
IDEsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwgIDcwLCAgODAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQs
IA0KKyAgICAyNTQsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAg
MCwgICAwLCAgNzcsIDEwNSwgDQorICAgICA5OSwgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIA0K
KyAgICAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCANCisgICAgIDcyLCAgNzYsICA4Mywg
IDc2LCAgMzIsICA4MywgDQorICAgIDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsIA0KKyAg
ICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCANCisgICAgMTAxLCAxMTQsICAzMiwgIDU3
LCAgNDYsICA1MCwgDQorICAgICA1NywgIDQ2LCAgNTcsICA1MywgIDUwLCAgNDYsIA0KKyAgICAg
NTEsICA0OSwgIDQ5LCAgNDksICAgMCwgMTcxLCANCisgICAgMTcxLCAxNzEsICA3MywgIDgzLCAg
NzEsICA3OCwgDQorICAgICA3MiwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgNywgICA3LCAgIDAsICAg
MCwgDQorICAgICA2NSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
DQorICAgICAgMCwgICAwLCAgMTUsICAxNSwgICAwLCAgIDAsIA0KKyAgICAgODAsICA3OSwgIDgz
LCAgNzMsICA4NCwgIDczLCANCisgICAgIDc5LCAgNzgsICAgMCwgIDY3LCAgNzksICA3NiwgDQor
ICAgICA3OSwgIDgyLCAgIDAsIDE3MSwgIDc5LCAgODMsIA0KKyAgICAgNzEsICA3OCwgIDc2LCAg
IDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDY4LCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAxNSwg
ICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4MCwgDQorICAgICA3OSwgIDgz
LCAgNzMsICA4NCwgIDczLCAgNzksIA0KKyAgICAgNzgsICAgMCwgIDY3LCAgNzksICA3NiwgIDc5
LCANCisgICAgIDgyLCAgIDAsIDE3MSwgMTcxLCAgODMsICA3MiwgDQorICAgICA2OCwgIDgyLCAx
MjQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjQsICAgMCwgICAxLCAgIDAsICAzMSwgICAwLCAN
CisgICAgICAwLCAgIDAsICA5NSwgICAwLCAgIDAsICAgMywgDQorICAgIDExNCwgIDE2LCAgMTYs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDk1LCAgIDAsICAgMCwgICAzLCANCisg
ICAgMjQyLCAgMTYsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAxMDMsICAg
MCwgICAwLCAgIDQsIA0KKyAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwMSwgICAwLCAgIDAsICAgMywg
MjQyLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0
LCAgIDAsICAgMCwgICA1LCAxMTQsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNzAsICAxOCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICA1NCwgICAwLCAgIDAsICAgNSwgDQorICAgIDEzMCwgIDMyLCAgMTYsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgNjQsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
IDEyOCwgIDYzLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAs
IA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICA3MCwgIDMwLCANCisgICAgIDE2LCAgIDAsICAg
MSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2MiwgICAwLCAgIDAsICAgMSwgIDgzLCAgODQsIA0K
KyAgICAgNjUsICA4NCwgMTE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJtdWx0aXBsZTExcHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3NoYWRlcnMvY29tcGlsZWQvY2xlYXJtdWx0aXBsZTExcHMuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21w
aWxlZC9jbGVhcm11bHRpcGxlMTFwcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5OSBAQAor
I2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENv
bXBpbGVyIDkuMjkuOTUyLjMxMTENCisvLw0KKy8vDQorLy8gICBmeGMgL0UgUFNfQ2xlYXJNdWx0
aXBsZSAvVCBwc180XzAgL0ZoIGNvbXBpbGVkL2NsZWFybXVsdGlwbGUxMXBzLmgNCisvLyAgICBD
bGVhcjExLmhsc2wNCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisv
LyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9y
bWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0tLSAtLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAg
ICB4eXp3ICAgICAgICAwICAgICAgUE9TICBmbG9hdCAgICAgICANCisvLyBDT0xPUiAgICAgICAg
ICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHl6dw0KKy8v
DQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAg
ICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0t
LS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRB
UkdFVCAgZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDEgICB4eXp3
ICAgICAgICAxICAgVEFSR0VUICBmbG9hdCAgIHh5encNCisvLyBTVl9UQVJHRVQgICAgICAgICAg
ICAgICAgMiAgIHh5encgICAgICAgIDIgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RB
UkdFVCAgICAgICAgICAgICAgICAzICAgeHl6dyAgICAgICAgMyAgIFRBUkdFVCAgZmxvYXQgICB4
eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDQgICB4eXp3ICAgICAgICA0ICAgVEFS
R0VUICBmbG9hdCAgIHh5encNCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgNSAgIHh5encg
ICAgICAgIDUgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAg
ICAgICA2ICAgeHl6dyAgICAgICAgNiAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQorLy8gU1ZfVEFS
R0VUICAgICAgICAgICAgICAgIDcgICB4eXp3ICAgICAgICA3ICAgVEFSR0VUICBmbG9hdCAgIHh5
encNCisvLw0KK3BzXzRfMA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHl6dw0KK2RjbF9vdXRw
dXQgbzAueHl6dw0KK2RjbF9vdXRwdXQgbzEueHl6dw0KK2RjbF9vdXRwdXQgbzIueHl6dw0KK2Rj
bF9vdXRwdXQgbzMueHl6dw0KK2RjbF9vdXRwdXQgbzQueHl6dw0KK2RjbF9vdXRwdXQgbzUueHl6
dw0KK2RjbF9vdXRwdXQgbzYueHl6dw0KK2RjbF9vdXRwdXQgbzcueHl6dw0KK21vdiBvMC54eXp3
LCB2MS54eXp3DQorbW92IG8xLnh5encsIHYxLnh5encNCittb3YgbzIueHl6dywgdjEueHl6dw0K
K21vdiBvMy54eXp3LCB2MS54eXp3DQorbW92IG80Lnh5encsIHYxLnh5encNCittb3YgbzUueHl6
dywgdjEueHl6dw0KK21vdiBvNi54eXp3LCB2MS54eXp3DQorbW92IG83Lnh5encsIHYxLnh5encN
CityZXQgDQorLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5k
aWYNCisNCitjb25zdCBCWVRFIGdfUFNfQ2xlYXJNdWx0aXBsZVtdID0NCit7DQorICAgICA2OCwg
IDg4LCAgNjYsICA2NywgMTQ2LCAyNDYsIA0KKyAgICAyMzYsIDI0MCwgIDUwLCAgNDAsICA4Nywg
IDU1LCANCisgICAgIDczLCAxNDAsIDI1MSwgMjAwLCAgIDgsICAyMiwgDQorICAgIDE3MywgMTE3
LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODgsICAgMywgICAwLCAgIDAsICAgNSwgICAw
LCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgIDE0MCwgICAwLCAg
IDAsICAgMCwgMjI0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTg4LCAgIDEsICAgMCwgICAwLCAN
CisgICAgMjIwLCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwgIDcwLCAgODAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAg
IDI4LCAgIDAsICAgMCwgICAwLCAgNzcsIDEwNSwgDQorICAgICA5OSwgMTE0LCAxMTEsIDExNSwg
MTExLCAxMDIsIA0KKyAgICAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCANCisgICAgIDcy
LCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgDQorICAgIDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0
LCAgMzIsIA0KKyAgICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCANCisgICAgMTAxLCAx
MTQsICAzMiwgIDU3LCAgNDYsICA1MCwgDQorICAgICA1NywgIDQ2LCAgNTcsICA1MywgIDUwLCAg
NDYsIA0KKyAgICAgNTEsICA0OSwgIDQ5LCAgNDksICAgMCwgMTcxLCANCisgICAgMTcxLCAxNzEs
ICA3MywgIDgzLCAgNzEsICA3OCwgDQorICAgICA3NiwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwg
ICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAw
LCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAxNSwgICAwLCAgIDAsIA0KKyAgICAg
ODMsICA4NiwgIDk1LCAgODAsICA3OSwgIDgzLCANCisgICAgIDczLCAgODQsICA3MywgIDc5LCAg
NzgsICAgMCwgDQorICAgICA2NywgIDc5LCAgNzYsICA3OSwgIDgyLCAgIDAsIA0KKyAgICAxNzEs
IDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCANCisgICAgMjEyLCAgIDAsICAgMCwgICAwLCAgIDgs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgMjAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAw
LCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQor
ICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMCwgICAwLCAgIDAs
ICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MywgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAg
MCwgICAwLCANCisgICAgMjAwLCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgNCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgIDIwMCwgICAw
LCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAg
MTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMCwgICAwLCAgIDAsICAgNiwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAs
ICAgMCwgICA2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisg
ICAgMjAwLCAgIDAsICAgMCwgICAwLCAgIDcsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgNywgICAwLCANCisgICAg
ICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4NCwg
IDY1LCAgODIsIA0KKyAgICAgNzEsICA2OSwgIDg0LCAgIDAsIDE3MSwgMTcxLCANCisgICAgIDgz
LCAgNzIsICA2OCwgIDgyLCAgMjQsICAgMSwgDQorICAgICAgMCwgICAwLCAgNjQsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNzAsICAgMCwgICAwLCAgIDAsICA5OCwgIDE2LCANCisgICAgICAwLCAg
IDMsIDI0MiwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAg
IDAsIA0KKyAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAs
IA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0
MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0K
KyAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwg
ICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAg
ICAgIDQsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0MiwgIDMy
LCAgMTYsICAgMCwgDQorICAgICAgNSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAgICAg
IDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICA2LCAgIDAsICAgMCwgICAwLCAx
MDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDcs
ICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDUsIDI0MiwgIDMyLCAgMTYs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgMzAsIA0KKyAgICAgMTYsICAg
MCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA1LCAyNDIsICAz
MiwgDQorICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAzMCwg
IDE2LCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNSwg
DQorICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcw
LCAgMzAsICAxNiwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQor
ICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAg
IDAsICA3MCwgIDMwLCANCisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAg
ICA1NCwgICAwLCAgIDAsICAgNSwgMjQyLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICA0LCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDcwLCAgMzAsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAgICAg
MCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDUsIA0KKyAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAg
NSwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgIDMwLCAgMTYsICAgMCwgDQorICAgICAgMSwg
ICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMjQyLCAgMzIsICAxNiwg
ICAwLCANCisgICAgICA2LCAgIDAsICAgMCwgICAwLCAgNzAsICAzMCwgDQorICAgICAxNiwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDI0MiwgIDMy
LCANCisgICAgIDE2LCAgIDAsICAgNywgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgIDMwLCAg
MTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDYyLCAgIDAsICAgMCwgICAxLCAN
CisgICAgIDgzLCAgODQsICA2NSwgIDg0LCAxMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDks
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgOSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9jbGVhcnNpbmdsZTEx
cHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW5nbGUxMXBzLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRl
cnMvY29tcGlsZWQvY2xlYXJzaW5nbGUxMXBzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEz
IEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFk
ZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KKy8vDQorLy8NCisvLyAgIGZ4YyAvRSBQU19DbGVh
clNpbmdsZSAvVCBwc180XzAgL0ZoIGNvbXBpbGVkL2NsZWFyc2luZ2xlMTFwcy5oDQorLy8gICAg
Q2xlYXIxMS5obHNsDQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQor
Ly8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZv
cm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0t
LS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1Bvc2l0aW9uICAgICAgICAgICAgICAw
ICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgZmxvYXQgICAgICAgDQorLy8gQ09MT1IgICAgICAg
ICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAxICAgICBOT05FICBmbG9hdCAgIHh5encNCisv
Lw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAg
ICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBGb3JtYXQgICBVc2VkDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLSAt
LS0tLS0NCisvLyBTVl9UYXJnZXQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBU
QVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vDQorcHNfNF8wDQorZGNsX2lucHV0X3BzIGxpbmVhciB2
MS54eXp3DQorZGNsX291dHB1dCBvMC54eXp3DQorbW92IG8wLnh5encsIHYxLnh5encNCityZXQg
DQorLy8gQXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisN
Citjb25zdCBCWVRFIGdfUFNfQ2xlYXJTaW5nbGVbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2
LCAgNjcsICAxMSwgIDQ5LCANCisgICAgMjIwLCAxNTcsICAzNSwgMTA2LCAxNzUsIDE2MSwgDQor
ICAgIDE4MCwgMTc4LCAxNDcsIDE1MCwgMTM0LCAxNjIsIA0KKyAgICAyMjIsICA3OSwgICAxLCAg
IDAsICAgMCwgICAwLCANCisgICAgMjA4LCAgIDEsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNDAsICAgMCwgICAwLCAgIDAs
IDIyNCwgICAwLCANCisgICAgICAwLCAgIDAsICAyMCwgICAxLCAgIDAsICAgMCwgDQorICAgICA4
NCwgICAxLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgIDgwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwg
ICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAw
LCAgIDAsICAgMCwgIDc3LCAxMDUsIA0KKyAgICAgOTksIDExNCwgMTExLCAxMTUsIDExMSwgMTAy
LCANCisgICAgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgDQorICAgICA3MiwgIDc2LCAg
ODMsICA3NiwgIDMyLCAgODMsIA0KKyAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCAN
CisgICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgDQorICAgIDEwMSwgMTE0LCAgMzIs
ICA1NywgIDQ2LCAgNTAsIA0KKyAgICAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgIDQ2LCANCisg
ICAgIDUxLCAgNDksICA0OSwgIDQ5LCAgIDAsIDE3MSwgDQorICAgIDE3MSwgMTcxLCAgNzMsICA4
MywgIDcxLCAgNzgsIA0KKyAgICAgNzYsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAz
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNjgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgMTUsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYs
ICA5NSwgIDgwLCAxMTEsIDExNSwgDQorICAgIDEwNSwgMTE2LCAxMDUsIDExMSwgMTEwLCAgIDAs
IA0KKyAgICAgNjcsICA3OSwgIDc2LCAgNzksICA4MiwgICAwLCANCisgICAgMTcxLCAxNzEsICA3
OSwgIDgzLCAgNzEsICA3OCwgDQorICAgICA0NCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDMyLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAw
LCAgIDAsICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4NCwgIDk3LCAxMTQsIA0KKyAgICAx
MDMsIDEwMSwgMTE2LCAgIDAsIDE3MSwgMTcxLCANCisgICAgIDgzLCAgNzIsICA2OCwgIDgyLCAg
NTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTQs
ICAgMCwgICAwLCAgIDAsICA5OCwgIDE2LCANCisgICAgICAwLCAgIDMsIDI0MiwgIDE2LCAgMTYs
ICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAgICAgIDAsICAg
MywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAg
MCwgDQorICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICA3MCwgIDMwLCANCisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
DQorICAgICA2MiwgICAwLCAgIDAsICAgMSwgIDgzLCAgODQsIA0KKyAgICAgNjUsICA4NCwgMTE2
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwDQorfTsN
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3No
YWRlcnMvY29tcGlsZWQvY29tcG9uZW50bWFza3BzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2Nv
bXBvbmVudG1hc2twcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2twcy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVk
IGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KKy8v
DQorLy8gICBmeGMgL0UgY29tcG9uZW50bWFza3BzIC9UIHBzXzJfMCAvRmggY29tcGlsZWQvY29t
cG9uZW50bWFza3BzLmggQmxpdC5wcw0KKy8vDQorLy8NCisvLyBQYXJhbWV0ZXJzOg0KKy8vDQor
Ly8gICBmbG9hdDQgbW9kZTsNCisvLyAgIHNhbXBsZXIyRCB0ZXg7DQorLy8NCisvLw0KKy8vIFJl
Z2lzdGVyczoNCisvLw0KKy8vICAgTmFtZSAgICAgICAgIFJlZyAgIFNpemUNCisvLyAgIC0tLS0t
LS0tLS0tLSAtLS0tLSAtLS0tDQorLy8gICBtb2RlICAgICAgICAgYzAgICAgICAgMQ0KKy8vICAg
dGV4ICAgICAgICAgIHMwICAgICAgIDENCisvLw0KKw0KKyAgICBwc18yXzANCisgICAgZGNsIHQw
Lnh5DQorICAgIGRjbF8yZCBzMA0KKyAgICB0ZXhsZCByMCwgdDAsIHMwDQorICAgIG11bCByMS54
eXosIHIwLCBjMC54DQorICAgIG1hZCByMS53LCByMC53LCBjMC56LCBjMC53DQorICAgIG1vdiBv
QzAsIHIxDQorDQorLy8gYXBwcm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEg
dGV4dHVyZSwgMyBhcml0aG1ldGljKQ0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19wczIwX2Nv
bXBvbmVudG1hc2twc1tdID0NCit7DQorICAgICAgMCwgICAyLCAyNTUsIDI1NSwgMjU0LCAyNTUs
IA0KKyAgICAgNDMsICAgMCwgIDY3LCAgODQsICA2NSwgIDY2LCANCisgICAgIDI4LCAgIDAsICAg
MCwgICAwLCAxMTksICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1LCAyNTUsIA0K
KyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAyOCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAxLCAgIDAsICAgMCwgDQorICAgIDExMiwgICAwLCAgIDAsICAgMCwgIDY4LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAw
LCAgNzYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
OTIsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgDQorICAgICA5NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgMTA5LCAxMTEsIDEwMCwgMTAxLCANCisgICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgIDEs
ICAgMCwgDQorICAgICAgMywgICAwLCAgIDEsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDEsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDExNiwgMTAxLCAxMjAsICAg
MCwgDQorICAgICAgNCwgICAwLCAgMTIsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDEsICAgMCwg
ICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAxMTIsIDExNSwg
DQorICAgICA5NSwgIDUwLCAgOTUsICA0OCwgICAwLCAgNzcsIA0KKyAgICAxMDUsICA5OSwgMTE0
LCAxMTEsIDExNSwgMTExLCANCisgICAgMTAyLCAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgDQor
ICAgICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsIA0KKyAgICAgODMsIDEwNCwgIDk3LCAx
MDAsIDEwMSwgMTE0LCANCisgICAgIDMyLCAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgDQorICAg
IDEwOCwgMTAxLCAxMTQsICAzMiwgIDU3LCAgNDYsIA0KKyAgICAgNTAsICA1NywgIDQ2LCAgNTcs
ICA1MywgIDUwLCANCisgICAgIDQ2LCAgNTEsICA0OSwgIDQ5LCAgNDksICAgMCwgDQorICAgICAz
MSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsIA0KKyAgICAgIDAsIDEyOCwgICAwLCAgIDAsICAg
MywgMTc2LCANCisgICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgDQorICAgICAgMCwg
MTQ0LCAgIDAsICAgOCwgIDE1LCAxNjAsIA0KKyAgICAgNjYsICAgMCwgICAwLCAgIDMsICAgMCwg
ICAwLCANCisgICAgIDE1LCAxMjgsICAgMCwgICAwLCAyMjgsIDE3NiwgDQorICAgICAgMCwgICA4
LCAyMjgsIDE2MCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMywgICAxLCAgIDAsICAgNywgMTI4
LCANCisgICAgICAwLCAgIDAsIDIyOCwgMTI4LCAgIDAsICAgMCwgDQorICAgICAgMCwgMTYwLCAg
IDQsICAgMCwgICAwLCAgIDQsIA0KKyAgICAgIDEsICAgMCwgICA4LCAxMjgsICAgMCwgICAwLCAN
CisgICAgMjU1LCAxMjgsICAgMCwgICAwLCAxNzAsIDE2MCwgDQorICAgICAgMCwgICAwLCAyNTUs
IDE2MCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAwLCAgIDgsICAxNSwgMTI4LCANCisg
ICAgICAxLCAgIDAsIDIyOCwgMTI4LCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAwDQorfTsNCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRl
cnMvY29tcGlsZWQvZmxpcHl2cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9mbGlweXZzLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRl
cmVyL3NoYWRlcnMvY29tcGlsZWQvZmxpcHl2cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5
IEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFk
ZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KKy8vDQorLy8gICBmeGMgL0UgZmxpcHl2cyAvVCB2
c18yXzAgL0ZoIGNvbXBpbGVkL2ZsaXB5dnMuaCBCbGl0LnZzDQorLy8NCisvLw0KKy8vIFBhcmFt
ZXRlcnM6DQorLy8NCisvLyAgIGZsb2F0NCBoYWxmUGl4ZWxTaXplOw0KKy8vDQorLy8NCisvLyBS
ZWdpc3RlcnM6DQorLy8NCisvLyAgIE5hbWUgICAgICAgICAgUmVnICAgU2l6ZQ0KKy8vICAgLS0t
LS0tLS0tLS0tLSAtLS0tLSAtLS0tDQorLy8gICBoYWxmUGl4ZWxTaXplIGMwICAgICAgIDENCisv
Lw0KKw0KKyAgICB2c18yXzANCisgICAgZGVmIGMxLCAwLjUsIDEsIDAsIDANCisgICAgZGNsX3Bv
c2l0aW9uIHYwDQorICAgIGFkZCBvUG9zLCB2MCwgYzANCisgICAgbWFkIG9UMCwgdjAsIGMxLnh4
eXksIGMxLnh4enoNCisNCisvLyBhcHByb3hpbWF0ZWx5IDIgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNl
ZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ192czIwX2ZsaXB5dnNbXSA9DQorew0KKyAgICAg
IDAsICAgMiwgMjU0LCAyNTUsIDI1NCwgMjU1LCANCisgICAgIDM1LCAgIDAsICA2NywgIDg0LCAg
NjUsICA2NiwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgIDg3LCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDIsIDI1NCwgMjU1LCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjgs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgODAsICAg
MCwgICAwLCAgIDAsICA0OCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDY0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgMTA0LCAgOTcsIDEwOCwgMTAyLCAgODAsIDEwNSwg
DQorICAgIDEyMCwgMTAxLCAxMDgsICA4MywgMTA1LCAxMjIsIA0KKyAgICAxMDEsICAgMCwgMTcx
LCAxNzEsICAgMSwgICAwLCANCisgICAgICAzLCAgIDAsICAgMSwgICAwLCAgIDQsICAgMCwgDQor
ICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTE4LCAx
MTUsICA5NSwgIDUwLCANCisgICAgIDk1LCAgNDgsICAgMCwgIDc3LCAxMDUsICA5OSwgDQorICAg
IDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCAxMTYsIA0KKyAgICAgMzIsICA0MCwgIDgyLCAgNDEs
ICAzMiwgIDcyLCANCisgICAgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwgDQorICAgICA5
NywgMTAwLCAxMDEsIDExNCwgIDMyLCAgNjcsIA0KKyAgICAxMTEsIDEwOSwgMTEyLCAxMDUsIDEw
OCwgMTAxLCANCisgICAgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTAsICA1NywgDQorICAgICA0Niwg
IDU3LCAgNTMsICA1MCwgIDQ2LCAgNTEsIA0KKyAgICAgNDksICA0OSwgIDQ5LCAgIDAsICA4MSwg
ICAwLCANCisgICAgICAwLCAgIDUsICAgMSwgICAwLCAgMTUsIDE2MCwgDQorICAgICAgMCwgICAw
LCAgIDAsICA2MywgICAwLCAgIDAsIA0KKyAgICAxMjgsICA2MywgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMzEsICAgMCwgDQorICAgICAgMCwgICAyLCAg
IDAsICAgMCwgICAwLCAxMjgsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAxNDQsICAgMiwgICAwLCAN
CisgICAgICAwLCAgIDMsICAgMCwgICAwLCAgMTUsIDE5MiwgDQorICAgICAgMCwgICAwLCAyMjgs
IDE0NCwgICAwLCAgIDAsIA0KKyAgICAyMjgsIDE2MCwgICA0LCAgIDAsICAgMCwgICA0LCANCisg
ICAgICAwLCAgIDAsICAxNSwgMjI0LCAgIDAsICAgMCwgDQorICAgIDIyOCwgMTQ0LCAgIDEsICAg
MCwgIDgwLCAxNjAsIA0KKyAgICAgIDEsICAgMCwgMTYwLCAxNjAsIDI1NSwgMjU1LCANCisgICAg
ICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9j
b21waWxlZC9sdW1pbmFuY2Vwcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL2x1bWluYW5jZXBz
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0
ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQor
Ly8NCisvLyAgIGZ4YyAvRSBsdW1pbmFuY2VwcyAvVCBwc18yXzAgL0ZoIGNvbXBpbGVkL2x1bWlu
YW5jZXBzLmggQmxpdC5wcw0KKy8vDQorLy8NCisvLyBQYXJhbWV0ZXJzOg0KKy8vDQorLy8gICBm
bG9hdDQgbW9kZTsNCisvLyAgIHNhbXBsZXIyRCB0ZXg7DQorLy8NCisvLw0KKy8vIFJlZ2lzdGVy
czoNCisvLw0KKy8vICAgTmFtZSAgICAgICAgIFJlZyAgIFNpemUNCisvLyAgIC0tLS0tLS0tLS0t
LSAtLS0tLSAtLS0tDQorLy8gICBtb2RlICAgICAgICAgYzAgICAgICAgMQ0KKy8vICAgdGV4ICAg
ICAgICAgIHMwICAgICAgIDENCisvLw0KKw0KKyAgICBwc18yXzANCisgICAgZGNsIHQwLnh5DQor
ICAgIGRjbF8yZCBzMA0KKyAgICB0ZXhsZCByMCwgdDAsIHMwDQorICAgIG1hZCByMS53LCByMC53
LCBjMC54LCBjMC55DQorICAgIG1vdiByMS54eXosIHIwLngNCisgICAgbW92IG9DMCwgcjENCisN
CisvLyBhcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZCAoMSB0ZXh0dXJlLCAz
IGFyaXRobWV0aWMpDQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX3BzMjBfbHVtaW5hbmNlcHNb
XSA9DQorew0KKyAgICAgIDAsICAgMiwgMjU1LCAyNTUsIDI1NCwgMjU1LCANCisgICAgIDQzLCAg
IDAsICA2NywgIDg0LCAgNjUsICA2NiwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgMTE5LCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NSwgMjU1LCANCisgICAgICAyLCAgIDAs
ICAgMCwgICAwLCAgMjgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAs
IA0KKyAgICAxMTIsICAgMCwgICAwLCAgIDAsICA2OCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDc2LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDkyLCAgIDAsICAgMCwg
ICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgOTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDEwOSwgMTEx
LCAxMDAsIDEwMSwgDQorICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgICAxLCAgIDAsIA0KKyAgICAg
IDMsICAgMCwgICAxLCAgIDAsICAgNCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAxMTYsIDEwMSwgMTIwLCAgIDAsIA0KKyAgICAgIDQs
ICAgMCwgIDEyLCAgIDAsICAgMSwgICAwLCANCisgICAgICAxLCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTEyLCAxMTUsIA0KKyAgICAgOTUsICA1
MCwgIDk1LCAgNDgsICAgMCwgIDc3LCANCisgICAgMTA1LCAgOTksIDExNCwgMTExLCAxMTUsIDEx
MSwgDQorICAgIDEwMiwgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsIA0KKyAgICAgMzIsICA3Miwg
IDc2LCAgODMsICA3NiwgIDMyLCANCisgICAgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwg
DQorICAgICAzMiwgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIA0KKyAgICAxMDgsIDEwMSwgMTE0
LCAgMzIsICA1NywgIDQ2LCANCisgICAgIDUwLCAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgDQor
ICAgICA0NiwgIDUxLCAgNDksICA0OSwgIDQ5LCAgIDAsIA0KKyAgICAgMzEsICAgMCwgICAwLCAg
IDIsICAgMCwgICAwLCANCisgICAgICAwLCAxMjgsICAgMCwgICAwLCAgIDMsIDE3NiwgDQorICAg
ICAzMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsIA0KKyAgICAgIDAsIDE0NCwgICAwLCAgIDgs
ICAxNSwgMTYwLCANCisgICAgIDY2LCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgDQorICAgICAx
NSwgMTI4LCAgIDAsICAgMCwgMjI4LCAxNzYsIA0KKyAgICAgIDAsICAgOCwgMjI4LCAxNjAsICAg
NCwgICAwLCANCisgICAgICAwLCAgIDQsICAgMSwgICAwLCAgIDgsIDEyOCwgDQorICAgICAgMCwg
ICAwLCAyNTUsIDEyOCwgICAwLCAgIDAsIA0KKyAgICAgIDAsIDE2MCwgICAwLCAgIDAsICA4NSwg
MTYwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAyLCAgIDEsICAgMCwgDQorICAgICAgNywgMTI4
LCAgIDAsICAgMCwgICAwLCAxMjgsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDIsICAgMCwgICA4
LCANCisgICAgIDE1LCAxMjgsICAgMSwgICAwLCAyMjgsIDEyOCwgDQorICAgIDI1NSwgMjU1LCAg
IDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdoMTF2cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVy
cy9jb21waWxlZC9wYXNzdGhyb3VnaDExdnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNz
dGhyb3VnaDExdnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzcgQEAKKyNpZiAwDQorLy8N
CisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI5
Ljk1Mi4zMTExDQorLy8NCisvLw0KKy8vICAgZnhjIC9FIFZTX1Bhc3N0aHJvdWdoIC9UIHZzXzRf
MCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2gxMXZzLmgNCisvLyAgICBQYXNzdGhyb3VnaDExLmhs
c2wNCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAg
ICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNl
ZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0gLS0tLS0tDQorLy8gUE9TSVRJT04gICAgICAgICAgICAgICAgIDAgICB4eSAgICAg
ICAgICAwICAgICBOT05FICBmbG9hdCAgIHh5ICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAg
ICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8NCisv
LyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXgg
ICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8v
IFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgZmxv
YXQgICB4eXp3DQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAx
ICAgICBOT05FICBmbG9hdCAgIHh5ICANCisvLw0KK3ZzXzRfMA0KK2RjbF9pbnB1dCB2MC54eQ0K
K2RjbF9pbnB1dCB2MS54eQ0KK2RjbF9vdXRwdXRfc2l2IG8wLnh5encsIHBvc2l0aW9uDQorZGNs
X291dHB1dCBvMS54eQ0KK21vdiBvMC54eSwgdjAueHl4eA0KK21vdiBvMC56dywgbCgwLDAsMCwx
LjAwMDAwMCkNCittb3YgbzEueHksIHYxLnh5eHgNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSA0
IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfVlNfUGFz
c3Rocm91Z2hbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDExNywgIDc0LCANCisg
ICAgIDM0LCAgNzksIDE3NCwgMjI2LCAxNzAsICA3NCwgDQorICAgIDExMCwgIDE2LCAyMzcsICAx
NCwgIDY3LCAxODUsIA0KKyAgICAxMTksIDE2NywgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAg
IDY4LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAxNDAsICAgMCwgICAwLCAgIDAsIDIyNCwgICAwLCANCisgICAgICAw
LCAgIDAsICA1NiwgICAxLCAgIDAsICAgMCwgDQorICAgIDIwMCwgICAxLCAgIDAsICAgMCwgIDgy
LCAgNjgsIA0KKyAgICAgNjksICA3MCwgIDgwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU0LCAyNTUs
ICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgIDc3LCAxMDUs
IA0KKyAgICAgOTksIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCANCisgICAgMTE2LCAgMzIsICA0
MCwgIDgyLCAgNDEsICAzMiwgDQorICAgICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIA0K
KyAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCANCisgICAgIDY3LCAxMTEsIDEwOSwg
MTEyLCAxMDUsIDEwOCwgDQorICAgIDEwMSwgMTE0LCAgMzIsICA1NywgIDQ2LCAgNTAsIA0KKyAg
ICAgNTcsICA0NiwgIDU3LCAgNTMsICA1MCwgIDQ2LCANCisgICAgIDUxLCAgNDksICA0OSwgIDQ5
LCAgIDAsIDE3MSwgDQorICAgIDE3MSwgMTcxLCAgNzMsICA4MywgIDcxLCAgNzgsIA0KKyAgICAg
NzYsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAg
IDAsICAgMCwgDQorICAgICA1NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMywgICAwLCAgIDAsIA0KKyAgICAgNjUsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAzLCAgIDMsICAgMCwgICAwLCANCisgICAgIDgwLCAgNzksICA4MywgIDczLCAgODQsICA3Mywg
DQorICAgICA3OSwgIDc4LCAgIDAsICA4NCwgIDY5LCAgODgsIA0KKyAgICAgNjcsICA3OSwgIDc5
LCAgODIsICA2OCwgICAwLCANCisgICAgMTcxLCAxNzEsICA3OSwgIDgzLCAgNzEsICA3OCwgDQor
ICAgICA4MCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA4LCAg
IDAsICAgMCwgICAwLCANCisgICAgIDU2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2
OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDMsICAxMiwgICAwLCAgIDAsIA0KKyAgICAgODMsICA4NiwgIDk1LCAgODAsICA3OSwg
IDgzLCANCisgICAgIDczLCAgODQsICA3MywgIDc5LCAgNzgsICAgMCwgDQorICAgICA4NCwgIDY5
LCAgODgsICA2NywgIDc5LCAgNzksIA0KKyAgICAgODIsICA2OCwgICAwLCAxNzEsIDE3MSwgMTcx
LCANCisgICAgIDgzLCAgNzIsICA2OCwgIDgyLCAxMzYsICAgMCwgDQorICAgICAgMCwgICAwLCAg
NjQsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgMzQsICAgMCwgICAwLCAgIDAsICA5NSwgICAwLCAN
CisgICAgICAwLCAgIDMsICA1MCwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgIDk1LCAgIDAsIA0KKyAgICAgIDAsICAgMywgIDUwLCAgMTYsICAxNiwgICAwLCANCisg
ICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDMsICAgMCwgDQorICAgICAgMCwgICA0LCAyNDIsICAz
MiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAg
ICAwLCAgIDAsIDEwMSwgICAwLCAgIDAsICAgMywgDQorICAgICA1MCwgIDMyLCAgMTYsICAgMCwg
ICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA1LCANCisgICAgIDUw
LCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAxNiwgIDE2
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAg
IDgsIDE5NCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAg
NjQsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTI4LCAgNjMs
IA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsICA1MCwgIDMyLCANCisgICAgIDE2LCAgIDAsICAg
MSwgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgIDYyLCAgIDAsICAgMCwgICAxLCANCisgICAgIDgzLCAgODQsICA2NSwg
IDg0LCAxMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgNCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVu
ZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTExcHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMv
Y29tcGlsZWQvcGFzc3Rocm91Z2hsdW0xMXBzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFz
c3Rocm91Z2hsdW0xMXBzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU1IEBACisjaWYgMA0K
Ky8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIg
OS4yOS45NTIuMzExMQ0KKy8vDQorLy8NCisvLyAgIGZ4YyAvRSBQU19QYXNzdGhyb3VnaEx1bSAv
VCBwc180XzAgL0ZoIGNvbXBpbGVkL3Bhc3N0aHJvdWdobHVtMTFwcy5oDQorLy8gICAgUGFzc3Ro
cm91Z2gxMS5obHNsDQorLy8NCisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdzOg0KKy8vDQorLy8g
TmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAg
IERpbSBTbG90IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQorLy8gU2FtcGxlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXIgICAgICBOQSAgICAgICAgICBOQSAgICAw
ICAgICAgICAxDQorLy8gVGV4dHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUg
IGZsb2F0NCAgICAgICAgICAyZCAgICAwICAgICAgICAxDQorLy8NCisvLw0KKy8vDQorLy8gSW5w
dXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNr
IFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BP
U0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgZmxvYXQgICAg
ICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBO
T05FICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0K
Ky8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSBG
b3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0t
LS0tIC0tLS0tLS0tIC0tLS0tLSAtLS0tLS0NCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAg
MCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgIGZsb2F0ICAgeHl6dw0KKy8vDQorcHNfNF8wDQor
ZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJlMmQgKGZs
b2F0LGZsb2F0LGZsb2F0LGZsb2F0KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHkNCitk
Y2xfb3V0cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMQ0KK3NhbXBsZSByMC54eXp3LCB2MS54eXh4
LCB0MC54eXp3LCBzMA0KK21vdiBvMC54eXosIHIwLnh4eHgNCittb3YgbzAudywgbCgxLjAwMDAw
MCkNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisj
ZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hMdW1bXSA9DQorew0KKyAgICAg
NjgsICA4OCwgIDY2LCAgNjcsICA5NywgIDQxLCANCisgICAgIDM3LCAxNTQsICAgMCwgMTc0LCAx
MzcsIDE1NywgDQorICAgICA3NiwgMjE5LCAyMzAsICAyNiwgMjI3LCAxNzQsIA0KKyAgICAxODcs
ICA2NiwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTI4LCAgIDIsICAgMCwgICAwLCAgIDUs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMjAsICAg
MCwgICAwLCAgIDAsICA1MiwgICAxLCANCisgICAgICAwLCAgIDAsIDEwNCwgICAxLCAgIDAsICAg
MCwgDQorICAgICAgNCwgICAyLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwg
MTYwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAw
LCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQor
ICAgIDEwOCwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEw
MCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA1LCAgIDAsICAg
MCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwgICAwLCAyNTUsIDI1NSwgDQorICAgIDI1NSwg
MjU1LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAxMywg
ICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDk3LCAxMDksIDExMiwgDQorICAgIDEwOCwgMTAx
LCAxMTQsICAgMCwgIDg0LCAxMDEsIA0KKyAgICAxMjAsIDExNiwgMTE3LCAxMTQsIDEwMSwgICAw
LCANCisgICAgIDc3LCAxMDUsICA5OSwgMTE0LCAxMTEsIDExNSwgDQorICAgIDExMSwgMTAyLCAx
MTYsICAzMiwgIDQwLCAgODIsIA0KKyAgICAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LCAN
CisgICAgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIDEwMSwgDQorICAgIDExNCwgIDMyLCAgNjcs
IDExMSwgMTA5LCAxMTIsIA0KKyAgICAxMDUsIDEwOCwgMTAxLCAxMTQsICAzMiwgIDU3LCANCisg
ICAgIDQ2LCAgNTAsICA1NywgIDQ2LCAgNTcsICA1MywgDQorICAgICA1MCwgIDQ2LCAgNTEsICA0
OSwgIDQ5LCAgNDksIA0KKyAgICAgIDAsIDE3MSwgMTcxLCAxNzEsICA3MywgIDgzLCANCisgICAg
IDcxLCAgNzgsICA4MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwg
ICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwgICAwLCANCisgICAgICAwLCAg
IDAsICA2OCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAs
ICAgMCwgICAwLCAgIDMsICAgMywgDQorICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODAs
IA0KKyAgICAgNzksICA4MywgIDczLCAgODQsICA3MywgIDc5LCANCisgICAgIDc4LCAgIDAsICA4
NCwgIDY5LCAgODgsICA2NywgDQorICAgICA3OSwgIDc5LCAgODIsICA2OCwgICAwLCAxNzEsIA0K
KyAgICAxNzEsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCANCisgICAgIDQ0LCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYsICA5NSwgIDg0LCAg
NjUsICA4MiwgDQorICAgICA3MSwgIDY5LCAgODQsICAgMCwgMTcxLCAxNzEsIA0KKyAgICAgODMs
ICA3MiwgIDY4LCAgODIsIDE0OCwgICAwLCANCisgICAgICAwLCAgIDAsICA2NCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAzNywgICAwLCAgIDAsICAgMCwgIDkwLCAgIDAsIA0KKyAgICAgIDAsICAg
MywgICAwLCAgOTYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgODgsICAy
NCwgDQorICAgICAgMCwgICA0LCAgIDAsIDExMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICA4NSwgIDg1LCANCisgICAgICAwLCAgIDAsICA5OCwgIDE2LCAgIDAsICAgMywg
DQorICAgICA1MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTAx
LCAgIDAsICAgMCwgICAzLCANCisgICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAxMDQsICAgMCwgICAwLCAgIDIsIA0KKyAgICAgIDEsICAgMCwgICAwLCAg
IDAsICA2OSwgICAwLCANCisgICAgICAwLCAgIDksIDI0MiwgICAwLCAgMTYsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgMTYsIA0KKyAgICAgMTYsICAgMCwgICAxLCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDcwLCAxMjYsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1
NCwgICAwLCANCisgICAgICAwLCAgIDUsIDExNCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICA2LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMzAsICAzMiwgDQorICAgICAxNiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICA2NCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgMTI4LCAgNjMsICA2MiwgICAwLCAgIDAsICAgMSwgDQorICAgICA4MywgIDg0LCAg
NjUsICA4NCwgMTE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L3JlbmRlcmVyL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVy
L3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTExcHMuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVy
cy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bWFscGhhMTFwcy5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE1MSBAQAorI2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhM
U0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTENCisvLw0KKy8vDQorLy8gICBmeGMgL0Ug
UFNfUGFzc3Rocm91Z2hMdW1BbHBoYSAvVCBwc180XzAgL0ZoDQorLy8gICAgY29tcGlsZWQvcGFz
c3Rocm91Z2hsdW1hbHBoYTExcHMuaCBQYXNzdGhyb3VnaDExLmhsc2wNCisvLw0KKy8vDQorLy8g
UmVzb3VyY2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0t
IC0tLS0gLS0tLS0tLS0NCisvLyBTYW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Ft
cGxlciAgICAgIE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgZmxvYXQ0ICAgICAgICAgIDJkICAgIDAgICAg
ICAgIDENCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1l
ICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAg
VXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3
ICAgICAgICAwICAgICAgUE9TICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAg
ICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8N
CisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5k
ZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0K
Ky8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAg
ZmxvYXQgICB4eXp3DQorLy8NCitwc180XzANCitkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0
DQorZGNsX3Jlc291cmNlX3RleHR1cmUyZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwDQor
ZGNsX2lucHV0X3BzIGxpbmVhciB2MS54eQ0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2RjbF90ZW1w
cyAxDQorc2FtcGxlIHIwLnh5encsIHYxLnh5eHgsIHQwLnh5encsIHMwDQorbW92IG8wLnh5encs
IHIwLnh4eHcNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSAzIGluc3RydWN0aW9uIHNsb3RzIHVz
ZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hMdW1BbHBoYVtdID0N
Cit7DQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgMTk3LCAgNzIsIA0KKyAgICAyNTEsIDIzNiwg
IDUzLCAxMDcsIDE4MiwgMTQ2LCANCisgICAgMTk2LCAyMTksIDEzMCwgMTg3LCAxNDAsIDE1OSwg
DQorICAgIDIxMSwgMTIzLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMDgsICAgMiwgICAw
LCAgIDAsICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQor
ICAgIDIyMCwgICAwLCAgIDAsICAgMCwgIDUyLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgMTA0LCAg
IDEsICAgMCwgICAwLCANCisgICAgMjQwLCAgIDEsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAg
ICA2OSwgIDcwLCAxNjAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAy
OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAg
MCwgICAwLCANCisgICAgMTA4LCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAw
LCANCisgICAgMTAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsIDI1NSwgMjU1LCAN
CisgICAgMjU1LCAyNTUsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAs
ICAgMCwgIDEzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgOTcsIDEwOSwgMTEyLCANCisg
ICAgMTA4LCAxMDEsIDExNCwgICAwLCAgODQsIDEwMSwgDQorICAgIDEyMCwgMTE2LCAxMTcsIDEx
NCwgMTAxLCAgIDAsIA0KKyAgICAgNzcsIDEwNSwgIDk5LCAxMTQsIDExMSwgMTE1LCANCisgICAg
MTExLCAxMDIsIDExNiwgIDMyLCAgNDAsICA4MiwgDQorICAgICA0MSwgIDMyLCAgNzIsICA3Niwg
IDgzLCAgNzYsIA0KKyAgICAgMzIsICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCANCisgICAgMTE0
LCAgMzIsICA2NywgMTExLCAxMDksIDExMiwgDQorICAgIDEwNSwgMTA4LCAxMDEsIDExNCwgIDMy
LCAgNTcsIA0KKyAgICAgNDYsICA1MCwgIDU3LCAgNDYsICA1NywgIDUzLCANCisgICAgIDUwLCAg
NDYsICA1MSwgIDQ5LCAgNDksICA0OSwgDQorICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgIDczLCAg
ODMsIA0KKyAgICAgNzEsICA3OCwgIDgwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAs
ICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgIDY4LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDEsICAgMCwgICAwLCAgIDAsICAgMywgICAzLCANCisgICAgICAwLCAgIDAsICA4MywgIDg2
LCAgOTUsICA4MCwgDQorICAgICA3OSwgIDgzLCAgNzMsICA4NCwgIDczLCAgNzksIA0KKyAgICAg
NzgsICAgMCwgIDg0LCAgNjksICA4OCwgIDY3LCANCisgICAgIDc5LCAgNzksICA4MiwgIDY4LCAg
IDAsIDE3MSwgDQorICAgIDE3MSwgMTcxLCAgNzksICA4MywgIDcxLCAgNzgsIA0KKyAgICAgNDQs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODMsICA4Niwg
IDk1LCAgODQsICA2NSwgIDgyLCANCisgICAgIDcxLCAgNjksICA4NCwgICAwLCAxNzEsIDE3MSwg
DQorICAgICA4MywgIDcyLCAgNjgsICA4MiwgMTI4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDY0
LCAgIDAsICAgMCwgICAwLCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgOTAsICAgMCwgDQor
ICAgICAgMCwgICAzLCAgIDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICA4OCwgIDI0LCANCisgICAgICAwLCAgIDQsICAgMCwgMTEyLCAgMTYsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDg1LCAgODUsIA0KKyAgICAgIDAsICAgMCwgIDk4LCAgMTYs
ICAgMCwgICAzLCANCisgICAgIDUwLCAgMTYsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAgICAg
MCwgICAwLCAxMDEsICAgMCwgICAwLCAgIDMsIA0KKyAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsIDEwNCwgICAwLCAgIDAsICAgMiwgDQorICAgICAgMSwg
ICAwLCAgIDAsICAgMCwgIDY5LCAgIDAsIA0KKyAgICAgIDAsICAgOSwgMjQyLCAgIDAsICAxNiwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAxNiwgDQorICAgICAxNiwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsIDEyNiwgIDE2LCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgIDk2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMjQyLCAgMzIsICAxNiwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDYsICAxMiwgDQorICAgICAxNiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjIsICAgMCwgICAwLCAgIDEsICA4MywgIDg0LCANCisg
ICAgIDY1LCAgODQsIDExNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2hwcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0
aHJvdWdocHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorI2lmIDANCisvLw0KKy8v
IEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUy
LjMxMTENCisvLw0KKy8vICAgZnhjIC9FIHBhc3N0aHJvdWdocHMgL1QgcHNfMl8wIC9GaCBjb21w
aWxlZC9wYXNzdGhyb3VnaHBzLmggQmxpdC5wcw0KKy8vDQorLy8NCisvLyBQYXJhbWV0ZXJzOg0K
Ky8vDQorLy8gICBzYW1wbGVyMkQgdGV4Ow0KKy8vDQorLy8NCisvLyBSZWdpc3RlcnM6DQorLy8N
CisvLyAgIE5hbWUgICAgICAgICBSZWcgICBTaXplDQorLy8gICAtLS0tLS0tLS0tLS0gLS0tLS0g
LS0tLQ0KKy8vICAgdGV4ICAgICAgICAgIHMwICAgICAgIDENCisvLw0KKw0KKyAgICBwc18yXzAN
CisgICAgZGNsIHQwLnh5DQorICAgIGRjbF8yZCBzMA0KKyAgICB0ZXhsZCByMCwgdDAsIHMwDQor
ICAgIG1vdiBvQzAsIHIwDQorDQorLy8gYXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3Rz
IHVzZWQgKDEgdGV4dHVyZSwgMSBhcml0aG1ldGljKQ0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUg
Z19wczIwX3Bhc3N0aHJvdWdocHNbXSA9DQorew0KKyAgICAgIDAsICAgMiwgMjU1LCAyNTUsIDI1
NCwgMjU1LCANCisgICAgIDMyLCAgIDAsICA2NywgIDg0LCAgNjUsICA2NiwgDQorICAgICAyOCwg
ICAwLCAgIDAsICAgMCwgIDc1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NSwg
MjU1LCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjgsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgNjgsICAgMCwgICAwLCAgIDAsICA0OCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAg
IDAsICAgMCwgIDUyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgMTE2LCAxMDEsIDEyMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAxMiwgICAwLCAgIDEs
ICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsIDExMiwgMTE1LCAgOTUsICA1MCwgDQorICAgICA5NSwgIDQ4LCAgIDAsICA3
NywgMTA1LCAgOTksIA0KKyAgICAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCANCisgICAg
IDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgDQorICAgICA3NiwgIDgzLCAgNzYsICAzMiwg
IDgzLCAxMDQsIA0KKyAgICAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3LCANCisgICAgMTEx
LCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgDQorICAgIDExNCwgIDMyLCAgNTcsICA0NiwgIDUw
LCAgNTcsIA0KKyAgICAgNDYsICA1NywgIDUzLCAgNTAsICA0NiwgIDUxLCANCisgICAgIDQ5LCAg
NDksICA0OSwgICAwLCAgMzEsICAgMCwgDQorICAgICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAx
MjgsIA0KKyAgICAgIDAsICAgMCwgICAzLCAxNzYsICAzMSwgICAwLCANCisgICAgICAwLCAgIDIs
ICAgMCwgICAwLCAgIDAsIDE0NCwgDQorICAgICAgMCwgICA4LCAgMTUsIDE2MCwgIDY2LCAgIDAs
IA0KKyAgICAgIDAsICAgMywgICAwLCAgIDAsICAxNSwgMTI4LCANCisgICAgICAwLCAgIDAsIDIy
OCwgMTc2LCAgIDAsICAgOCwgDQorICAgIDIyOCwgMTYwLCAgIDEsICAgMCwgICAwLCAgIDIsIA0K
KyAgICAgIDAsICAgOCwgIDE1LCAxMjgsICAgMCwgICAwLCANCisgICAgMjI4LCAxMjgsIDI1NSwg
MjU1LCAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMTFwcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVy
ZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjExcHMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9j
b21waWxlZC9wYXNzdGhyb3VnaHJnYjExcHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTUg
QEAKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRl
ciBDb21waWxlciA5LjI5Ljk1Mi4zMTExDQorLy8NCisvLw0KKy8vICAgZnhjIC9FIFBTX1Bhc3N0
aHJvdWdoUkdCIC9UIHBzXzRfMCAvRmggY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IxMXBzLmgNCisv
LyAgICBQYXNzdGhyb3VnaDExLmhsc2wNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGluZ3M6
DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9y
bWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0NCisv
LyBTYW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAgIE5BICAgICAg
ICAgIE5BICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGV4dHVyZSAgZmxvYXQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDENCisvLw0KKy8vDQor
Ly8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJ
bmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0gLS0tLS0t
DQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9T
ICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAg
ICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2lnbmF0
dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVy
IFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAt
LS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAg
ICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgZmxvYXQgICB4eXp3DQorLy8N
Citwc180XzANCitkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0DQorZGNsX3Jlc291cmNlX3Rl
eHR1cmUyZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwDQorZGNsX2lucHV0X3BzIGxpbmVh
ciB2MS54eQ0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2RjbF90ZW1wcyAxDQorc2FtcGxlIHIwLnh5
encsIHYxLnh5eHgsIHQwLnh5encsIHMwDQorbW92IG8wLnh5eiwgcjAueHl6eA0KK21vdiBvMC53
LCBsKDEuMDAwMDAwKQ0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xv
dHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQltdID0N
Cit7DQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgMjUzLCAgNDUsIA0KKyAgICAgMTMsICAzNCwg
MTI1LCAxOTQsICA5NSwgMTQ5LCANCisgICAgICAxLCAgOTUsIDE5NCwgMjUyLCAxMTgsIDIyOCwg
DQorICAgIDE3OCwgMjAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMjgsICAgMiwgICAw
LCAgIDAsICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQor
ICAgIDIyMCwgICAwLCAgIDAsICAgMCwgIDUyLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgMTA0LCAg
IDEsICAgMCwgICAwLCANCisgICAgICA0LCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAg
ICA2OSwgIDcwLCAxNjAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAy
OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAg
MCwgICAwLCANCisgICAgMTA4LCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAw
LCANCisgICAgMTAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsIDI1NSwgMjU1LCAN
CisgICAgMjU1LCAyNTUsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAs
ICAgMCwgIDEzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgOTcsIDEwOSwgMTEyLCANCisg
ICAgMTA4LCAxMDEsIDExNCwgICAwLCAgODQsIDEwMSwgDQorICAgIDEyMCwgMTE2LCAxMTcsIDEx
NCwgMTAxLCAgIDAsIA0KKyAgICAgNzcsIDEwNSwgIDk5LCAxMTQsIDExMSwgMTE1LCANCisgICAg
MTExLCAxMDIsIDExNiwgIDMyLCAgNDAsICA4MiwgDQorICAgICA0MSwgIDMyLCAgNzIsICA3Niwg
IDgzLCAgNzYsIA0KKyAgICAgMzIsICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCANCisgICAgMTE0
LCAgMzIsICA2NywgMTExLCAxMDksIDExMiwgDQorICAgIDEwNSwgMTA4LCAxMDEsIDExNCwgIDMy
LCAgNTcsIA0KKyAgICAgNDYsICA1MCwgIDU3LCAgNDYsICA1NywgIDUzLCANCisgICAgIDUwLCAg
NDYsICA1MSwgIDQ5LCAgNDksICA0OSwgDQorICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgIDczLCAg
ODMsIA0KKyAgICAgNzEsICA3OCwgIDgwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAs
ICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgIDY4LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDEsICAgMCwgICAwLCAgIDAsICAgMywgICAzLCANCisgICAgICAwLCAgIDAsICA4MywgIDg2
LCAgOTUsICA4MCwgDQorICAgICA3OSwgIDgzLCAgNzMsICA4NCwgIDczLCAgNzksIA0KKyAgICAg
NzgsICAgMCwgIDg0LCAgNjksICA4OCwgIDY3LCANCisgICAgIDc5LCAgNzksICA4MiwgIDY4LCAg
IDAsIDE3MSwgDQorICAgIDE3MSwgMTcxLCAgNzksICA4MywgIDcxLCAgNzgsIA0KKyAgICAgNDQs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODMsICA4Niwg
IDk1LCAgODQsICA2NSwgIDgyLCANCisgICAgIDcxLCAgNjksICA4NCwgICAwLCAxNzEsIDE3MSwg
DQorICAgICA4MywgIDcyLCAgNjgsICA4MiwgMTQ4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDY0
LCAgIDAsICAgMCwgICAwLCANCisgICAgIDM3LCAgIDAsICAgMCwgICAwLCAgOTAsICAgMCwgDQor
ICAgICAgMCwgICAzLCAgIDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICA4OCwgIDI0LCANCisgICAgICAwLCAgIDQsICAgMCwgMTEyLCAgMTYsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDg1LCAgODUsIA0KKyAgICAgIDAsICAgMCwgIDk4LCAgMTYs
ICAgMCwgICAzLCANCisgICAgIDUwLCAgMTYsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAgICAg
MCwgICAwLCAxMDEsICAgMCwgICAwLCAgIDMsIA0KKyAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsIDEwNCwgICAwLCAgIDAsICAgMiwgDQorICAgICAgMSwg
ICAwLCAgIDAsICAgMCwgIDY5LCAgIDAsIA0KKyAgICAgIDAsICAgOSwgMjQyLCAgIDAsICAxNiwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAxNiwgDQorICAgICAxNiwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsIDEyNiwgIDE2LCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgIDk2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMTE0LCAgMzIsICAxNiwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgDQorICAgICAxNiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDEzMCwgIDMyLCANCisg
ICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgIDY0LCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAxMjgsICA2MywgIDYyLCAgIDAsICAgMCwgICAxLCANCisgICAg
IDgzLCAgODQsICA2NSwgIDg0LCAxMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDQsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvcmVuZGVyZXIvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmExMXBz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9y
ZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTExcHMuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcmVuZGVyZXIvc2hh
ZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmExMXBzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTQ0IEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExT
TCBTaGFkZXIgQ29tcGlsZXIgOS4yOS45NTIuMzExMQ0KKy8vDQorLy8NCisvLyAgIGZ4YyAvRSBQ
U19QYXNzdGhyb3VnaFJHQkEgL1QgcHNfNF8wIC9GaCBjb21waWxlZC9wYXNzdGhyb3VnaHJnYmEx
MXBzLmgNCisvLyAgICBQYXNzdGhyb3VnaDExLmhsc2wNCisvLw0KKy8vDQorLy8gUmVzb3VyY2Ug
QmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0t
LS0tLS0NCisvLyBTYW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAg
IE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGV4dHVyZSAgZmxvYXQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDENCisv
Lw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAg
ICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgRm9ybWF0ICAgVXNlZA0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAw
ICAgICAgUE9TICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAg
IHh5ICAgICAgICAgIDEgICAgIE5PTkUgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8NCisvLyBPdXRw
dXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNr
IFJlZ2lzdGVyIFN5c1ZhbHVlIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RB
UkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgZmxvYXQgICB4
eXp3DQorLy8NCitwc180XzANCitkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0DQorZGNsX3Jl
c291cmNlX3RleHR1cmUyZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwDQorZGNsX2lucHV0
X3BzIGxpbmVhciB2MS54eQ0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK3NhbXBsZSBvMC54eXp3LCB2
MS54eXh4LCB0MC54eXp3LCBzMA0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDIgaW5zdHJ1Y3Rp
b24gc2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJH
QkFbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDE1MiwgIDg2LCANCisgICAgMjI1
LCAxMDcsIDE1NSwgIDgzLCAyMTYsICAxMywgDQorICAgIDE1NCwgMjEyLCAxNDQsICAgNSwgIDgy
LCAgNzQsIA0KKyAgICAgOTAsICA5OCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDgwLCAg
IDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAyMjAsICAgMCwgICAwLCAgIDAsICA1MiwgICAxLCANCisgICAgICAwLCAgIDAs
IDEwNCwgICAxLCAgIDAsICAgMCwgDQorICAgIDIxMiwgICAxLCAgIDAsICAgMCwgIDgyLCAgNjgs
IA0KKyAgICAgNjksICA3MCwgMTYwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwg
ICAxLCAgIDAsICAgMCwgDQorICAgIDEwOCwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgDQorICAgIDEwMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICA1LCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwgICAwLCAyNTUs
IDI1NSwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAg
MCwgICAwLCAgIDAsICAxMywgICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDk3LCAxMDksIDEx
MiwgDQorICAgIDEwOCwgMTAxLCAxMTQsICAgMCwgIDg0LCAxMDEsIA0KKyAgICAxMjAsIDExNiwg
MTE3LCAxMTQsIDEwMSwgICAwLCANCisgICAgIDc3LCAxMDUsICA5OSwgMTE0LCAxMTEsIDExNSwg
DQorICAgIDExMSwgMTAyLCAxMTYsICAzMiwgIDQwLCAgODIsIA0KKyAgICAgNDEsICAzMiwgIDcy
LCAgNzYsICA4MywgIDc2LCANCisgICAgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIDEwMSwgDQor
ICAgIDExNCwgIDMyLCAgNjcsIDExMSwgMTA5LCAxMTIsIA0KKyAgICAxMDUsIDEwOCwgMTAxLCAx
MTQsICAzMiwgIDU3LCANCisgICAgIDQ2LCAgNTAsICA1NywgIDQ2LCAgNTcsICA1MywgDQorICAg
ICA1MCwgIDQ2LCAgNTEsICA0OSwgIDQ5LCAgNDksIA0KKyAgICAgIDAsIDE3MSwgMTcxLCAxNzEs
ICA3MywgIDgzLCANCisgICAgIDcxLCAgNzgsICA4MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MiwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU2LCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwg
ICAwLCANCisgICAgICAwLCAgIDAsICA2OCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMywgDQorICAgICAgMCwgICAwLCAg
ODMsICA4NiwgIDk1LCAgODAsIA0KKyAgICAgNzksICA4MywgIDczLCAgODQsICA3MywgIDc5LCAN
CisgICAgIDc4LCAgIDAsICA4NCwgIDY5LCAgODgsICA2NywgDQorICAgICA3OSwgIDc5LCAgODIs
ICA2OCwgICAwLCAxNzEsIA0KKyAgICAxNzEsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCANCisg
ICAgIDQ0LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDgz
LCAgODYsICA5NSwgIDg0LCAgNjUsICA4MiwgDQorICAgICA3MSwgIDY5LCAgODQsICAgMCwgMTcx
LCAxNzEsIA0KKyAgICAgODMsICA3MiwgIDY4LCAgODIsIDEwMCwgICAwLCANCisgICAgICAwLCAg
IDAsICA2NCwgICAwLCAgIDAsICAgMCwgDQorICAgICAyNSwgICAwLCAgIDAsICAgMCwgIDkwLCAg
IDAsIA0KKyAgICAgIDAsICAgMywgICAwLCAgOTYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgODgsICAyNCwgDQorICAgICAgMCwgICA0LCAgIDAsIDExMiwgIDE2LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4NSwgIDg1LCANCisgICAgICAwLCAgIDAsICA5
OCwgIDE2LCAgIDAsICAgMywgDQorICAgICA1MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgMTAxLCAgIDAsICAgMCwgICAzLCANCisgICAgMjQyLCAgMzIsICAxNiwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjksICAgMCwgICAwLCAgIDksIA0KKyAg
ICAyNDIsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgIDE2
LCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDcwLCAxMjYsIA0KKyAgICAg
MTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgOTYsICAxNiwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjIsICAgMCwgICAwLCAgIDEsIA0KKyAgICAgODMs
ICA4NCwgIDY1LCAgODQsIDExNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3N0YW5kYXJkdnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3JlbmRlcmVyL3NoYWRl
cnMvY29tcGlsZWQvc3RhbmRhcmR2cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9yZW5kZXJlci9zaGFkZXJzL2NvbXBpbGVkL3N0YW5kYXJk
dnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorI2lmIDANCisvLw0KKy8vIEdlbmVy
YXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDkuMjkuOTUyLjMxMTEN
CisvLw0KKy8vICAgZnhjIC9FIHN0YW5kYXJkdnMgL1QgdnNfMl8wIC9GaCBjb21waWxlZC9zdGFu
ZGFyZHZzLmggQmxpdC52cw0KKy8vDQorLy8NCisvLyBQYXJhbWV0ZXJzOg0KKy8vDQorLy8gICBm
bG9hdDQgaGFsZlBpeGVsU2l6ZTsNCisvLw0KKy8vDQorLy8gUmVnaXN0ZXJzOg0KKy8vDQorLy8g
ICBOYW1lICAgICAgICAgIFJlZyAgIFNpemUNCisvLyAgIC0tLS0tLS0tLS0tLS0gLS0tLS0gLS0t
LQ0KKy8vICAgaGFsZlBpeGVsU2l6ZSBjMCAgICAgICAxDQorLy8NCisNCisgICAgdnNfMl8wDQor
ICAgIGRlZiBjMSwgMC41LCAtMC41LCAxLCAwDQorICAgIGRjbF9wb3NpdGlvbiB2MA0KKyAgICBh
ZGQgb1BvcywgdjAsIGMwDQorICAgIG1hZCBvVDAsIHYwLCBjMS54eXp6LCBjMS54eHd3DQorDQor
Ly8gYXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitj
b25zdCBCWVRFIGdfdnMyMF9zdGFuZGFyZHZzW10gPQ0KK3sNCisgICAgICAwLCAgIDIsIDI1NCwg
MjU1LCAyNTQsIDI1NSwgDQorICAgICAzNSwgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIA0KKyAg
ICAgMjgsICAgMCwgICAwLCAgIDAsICA4NywgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAy
LCAyNTQsIDI1NSwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI4LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgIDgwLCAgIDAsICAgMCwgICAwLCAg
NDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICA2NCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgIDEwNCwgIDk3LCAxMDgsIDEwMiwgIDgwLCAxMDUsIA0KKyAgICAxMjAsIDEw
MSwgMTA4LCAgODMsIDEwNSwgMTIyLCANCisgICAgMTAxLCAgIDAsIDE3MSwgMTcxLCAgIDEsICAg
MCwgDQorICAgICAgMywgICAwLCAgIDEsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDEsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDExOCwgMTE1LCAgOTUsICA1MCwg
DQorICAgICA5NSwgIDQ4LCAgIDAsICA3NywgMTA1LCAgOTksIA0KKyAgICAxMTQsIDExMSwgMTE1
LCAxMTEsIDEwMiwgMTE2LCANCisgICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgDQor
ICAgICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsIA0KKyAgICAgOTcsIDEwMCwgMTAxLCAx
MTQsICAzMiwgIDY3LCANCisgICAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgDQorICAg
IDExNCwgIDMyLCAgNTcsICA0NiwgIDUwLCAgNTcsIA0KKyAgICAgNDYsICA1NywgIDUzLCAgNTAs
ICA0NiwgIDUxLCANCisgICAgIDQ5LCAgNDksICA0OSwgICAwLCAgODEsICAgMCwgDQorICAgICAg
MCwgICA1LCAgIDEsICAgMCwgIDE1LCAxNjAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgNjMsICAg
MCwgICAwLCANCisgICAgICAwLCAxOTEsICAgMCwgICAwLCAxMjgsICA2MywgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDMxLCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwg
MTI4LCANCisgICAgICAwLCAgIDAsICAxNSwgMTQ0LCAgIDIsICAgMCwgDQorICAgICAgMCwgICAz
LCAgIDAsICAgMCwgIDE1LCAxOTIsIA0KKyAgICAgIDAsICAgMCwgMjI4LCAxNDQsICAgMCwgICAw
LCANCisgICAgMjI4LCAxNjAsICAgNCwgICAwLCAgIDAsICAgNCwgDQorICAgICAgMCwgICAwLCAg
MTUsIDIyNCwgICAwLCAgIDAsIA0KKyAgICAyMjgsIDE0NCwgICAxLCAgIDAsIDE2NCwgMTYwLCAN
CisgICAgICAxLCAgIDAsIDI0MCwgMTYwLCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAwDQorfTsN
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFz
aC9MSUNFTlNFCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGly
ZF9wYXJ0eS9tdXJtdXJoYXNoL0xJQ0VOU0UJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9MSUNFTlNFCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDIgQEAKKy8vIE11cm11ckhhc2gzIHdhcyB3cml0dGVuIGJ5IEF1c3RpbiBB
cHBsZWJ5LCBhbmQgaXMgcGxhY2VkIGluIHRoZSBwdWJsaWMKKy8vIGRvbWFpbi4gVGhlIGF1dGhv
ciBoZXJlYnkgZGlzY2xhaW1zIGNvcHlyaWdodCB0byB0aGlzIHNvdXJjZSBjb2RlLgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNo
My5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRf
cGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzM0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gTXVybXVySGFzaDMgd2FzIHdyaXR0
ZW4gYnkgQXVzdGluIEFwcGxlYnksIGFuZCBpcyBwbGFjZWQgaW4gdGhlIHB1YmxpYw0KKy8vIGRv
bWFpbi4gVGhlIGF1dGhvciBoZXJlYnkgZGlzY2xhaW1zIGNvcHlyaWdodCB0byB0aGlzIHNvdXJj
ZSBjb2RlLg0KKw0KKy8vIE5vdGUgLSBUaGUgeDg2IGFuZCB4NjQgdmVyc2lvbnMgZG8gX25vdF8g
cHJvZHVjZSB0aGUgc2FtZSByZXN1bHRzLCBhcyB0aGUNCisvLyBhbGdvcml0aG1zIGFyZSBvcHRp
bWl6ZWQgZm9yIHRoZWlyIHJlc3BlY3RpdmUgcGxhdGZvcm1zLiBZb3UgY2FuIHN0aWxsDQorLy8g
Y29tcGlsZSBhbmQgcnVuIGFueSBvZiB0aGVtIG9uIGFueSBwbGF0Zm9ybSwgYnV0IHlvdXIgcGVy
Zm9ybWFuY2Ugd2l0aCB0aGUNCisvLyBub24tbmF0aXZlIHZlcnNpb24gd2lsbCBiZSBsZXNzIHRo
YW4gb3B0aW1hbC4NCisNCisjaW5jbHVkZSAiTXVybXVySGFzaDMuaCINCisNCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQorLy8gUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb25zIGFuZCBtYWNyb3MN
CisNCisvLyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbw0KKw0KKyNpZiBkZWZpbmVkKF9NU0NfVkVS
KQ0KKw0KKyNkZWZpbmUgRk9SQ0VfSU5MSU5FCV9fZm9yY2VpbmxpbmUNCisNCisjaW5jbHVkZSA8
c3RkbGliLmg+DQorDQorI2RlZmluZSBST1RMMzIoeCx5KQlfcm90bCh4LHkpDQorI2RlZmluZSBS
T1RMNjQoeCx5KQlfcm90bDY0KHgseSkNCisNCisjZGVmaW5lIEJJR19DT05TVEFOVCh4KSAoeCkN
CisNCisvLyBPdGhlciBjb21waWxlcnMNCisNCisjZWxzZQkvLyBkZWZpbmVkKF9NU0NfVkVSKQ0K
Kw0KKyNkZWZpbmUJRk9SQ0VfSU5MSU5FIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQ0K
Kw0KK2lubGluZSB1aW50MzJfdCByb3RsMzIgKCB1aW50MzJfdCB4LCBpbnQ4X3QgciApDQorew0K
KyAgcmV0dXJuICh4IDw8IHIpIHwgKHggPj4gKDMyIC0gcikpOw0KK30NCisNCitpbmxpbmUgdWlu
dDY0X3Qgcm90bDY0ICggdWludDY0X3QgeCwgaW50OF90IHIgKQ0KK3sNCisgIHJldHVybiAoeCA8
PCByKSB8ICh4ID4+ICg2NCAtIHIpKTsNCit9DQorDQorI2RlZmluZQlST1RMMzIoeCx5KQlyb3Rs
MzIoeCx5KQ0KKyNkZWZpbmUgUk9UTDY0KHgseSkJcm90bDY0KHgseSkNCisNCisjZGVmaW5lIEJJ
R19DT05TVEFOVCh4KSAoeCMjTExVKQ0KKw0KKyNlbmRpZiAvLyAhZGVmaW5lZChfTVNDX1ZFUikN
CisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQmxvY2sgcmVhZCAtIGlmIHlvdXIgcGxh
dGZvcm0gbmVlZHMgdG8gZG8gZW5kaWFuLXN3YXBwaW5nIG9yIGNhbiBvbmx5DQorLy8gaGFuZGxl
IGFsaWduZWQgcmVhZHMsIGRvIHRoZSBjb252ZXJzaW9uIGhlcmUNCisNCitGT1JDRV9JTkxJTkUg
dWludDMyX3QgZ2V0YmxvY2sgKCBjb25zdCB1aW50MzJfdCAqIHAsIGludCBpICkNCit7DQorICBy
ZXR1cm4gcFtpXTsNCit9DQorDQorRk9SQ0VfSU5MSU5FIHVpbnQ2NF90IGdldGJsb2NrICggY29u
c3QgdWludDY0X3QgKiBwLCBpbnQgaSApDQorew0KKyAgcmV0dXJuIHBbaV07DQorfQ0KKw0KKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBGaW5hbGl6YXRpb24gbWl4IC0gZm9yY2UgYWxsIGJp
dHMgb2YgYSBoYXNoIGJsb2NrIHRvIGF2YWxhbmNoZQ0KKw0KK0ZPUkNFX0lOTElORSB1aW50MzJf
dCBmbWl4ICggdWludDMyX3QgaCApDQorew0KKyAgaCBePSBoID4+IDE2Ow0KKyAgaCAqPSAweDg1
ZWJjYTZiOw0KKyAgaCBePSBoID4+IDEzOw0KKyAgaCAqPSAweGMyYjJhZTM1Ow0KKyAgaCBePSBo
ID4+IDE2Ow0KKw0KKyAgcmV0dXJuIGg7DQorfQ0KKw0KKy8vLS0tLS0tLS0tLQ0KKw0KK0ZPUkNF
X0lOTElORSB1aW50NjRfdCBmbWl4ICggdWludDY0X3QgayApDQorew0KKyAgayBePSBrID4+IDMz
Ow0KKyAgayAqPSBCSUdfQ09OU1RBTlQoMHhmZjUxYWZkN2VkNTU4Y2NkKTsNCisgIGsgXj0gayA+
PiAzMzsNCisgIGsgKj0gQklHX0NPTlNUQU5UKDB4YzRjZWI5ZmUxYTg1ZWM1Myk7DQorICBrIF49
IGsgPj4gMzM7DQorDQorICByZXR1cm4gazsNCit9DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KKw0KK3ZvaWQgTXVybXVySGFzaDNfeDg2XzMyICggY29uc3Qgdm9pZCAqIGtleSwgaW50IGxl
biwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQg
KQ0KK3sNCisgIGNvbnN0IHVpbnQ4X3QgKiBkYXRhID0gKGNvbnN0IHVpbnQ4X3QqKWtleTsNCisg
IGNvbnN0IGludCBuYmxvY2tzID0gbGVuIC8gNDsNCisNCisgIHVpbnQzMl90IGgxID0gc2VlZDsN
CisNCisgIGNvbnN0IHVpbnQzMl90IGMxID0gMHhjYzllMmQ1MTsNCisgIGNvbnN0IHVpbnQzMl90
IGMyID0gMHgxYjg3MzU5MzsNCisNCisgIC8vLS0tLS0tLS0tLQ0KKyAgLy8gYm9keQ0KKw0KKyAg
Y29uc3QgdWludDMyX3QgKiBibG9ja3MgPSAoY29uc3QgdWludDMyX3QgKikoZGF0YSArIG5ibG9j
a3MqNCk7DQorDQorICBmb3IoaW50IGkgPSAtbmJsb2NrczsgaTsgaSsrKQ0KKyAgew0KKyAgICB1
aW50MzJfdCBrMSA9IGdldGJsb2NrKGJsb2NrcyxpKTsNCisNCisgICAgazEgKj0gYzE7DQorICAg
IGsxID0gUk9UTDMyKGsxLDE1KTsNCisgICAgazEgKj0gYzI7DQorICAgIA0KKyAgICBoMSBePSBr
MTsNCisgICAgaDEgPSBST1RMMzIoaDEsMTMpOyANCisgICAgaDEgPSBoMSo1KzB4ZTY1NDZiNjQ7
DQorICB9DQorDQorICAvLy0tLS0tLS0tLS0NCisgIC8vIHRhaWwNCisNCisgIGNvbnN0IHVpbnQ4
X3QgKiB0YWlsID0gKGNvbnN0IHVpbnQ4X3QqKShkYXRhICsgbmJsb2Nrcyo0KTsNCisNCisgIHVp
bnQzMl90IGsxID0gMDsNCisNCisgIHN3aXRjaChsZW4gJiAzKQ0KKyAgew0KKyAgY2FzZSAzOiBr
MSBePSB0YWlsWzJdIDw8IDE2Ow0KKyAgY2FzZSAyOiBrMSBePSB0YWlsWzFdIDw8IDg7DQorICBj
YXNlIDE6IGsxIF49IHRhaWxbMF07DQorICAgICAgICAgIGsxICo9IGMxOyBrMSA9IFJPVEwzMihr
MSwxNSk7IGsxICo9IGMyOyBoMSBePSBrMTsNCisgIH07DQorDQorICAvLy0tLS0tLS0tLS0NCisg
IC8vIGZpbmFsaXphdGlvbg0KKw0KKyAgaDEgXj0gbGVuOw0KKw0KKyAgaDEgPSBmbWl4KGgxKTsN
CisNCisgICoodWludDMyX3QqKW91dCA9IGgxOw0KK30gDQorDQorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KKw0KK3ZvaWQgTXVybXVySGFzaDNfeDg2XzEyOCAoIGNvbnN0IHZvaWQgKiBrZXksIGNv
bnN0IGludCBsZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2VlZCwg
dm9pZCAqIG91dCApDQorew0KKyAgY29uc3QgdWludDhfdCAqIGRhdGEgPSAoY29uc3QgdWludDhf
dCopa2V5Ow0KKyAgY29uc3QgaW50IG5ibG9ja3MgPSBsZW4gLyAxNjsNCisNCisgIHVpbnQzMl90
IGgxID0gc2VlZDsNCisgIHVpbnQzMl90IGgyID0gc2VlZDsNCisgIHVpbnQzMl90IGgzID0gc2Vl
ZDsNCisgIHVpbnQzMl90IGg0ID0gc2VlZDsNCisNCisgIGNvbnN0IHVpbnQzMl90IGMxID0gMHgy
MzliOTYxYjsgDQorICBjb25zdCB1aW50MzJfdCBjMiA9IDB4YWIwZTk3ODk7DQorICBjb25zdCB1
aW50MzJfdCBjMyA9IDB4MzhiMzRhZTU7IA0KKyAgY29uc3QgdWludDMyX3QgYzQgPSAweGExZTM4
YjkzOw0KKw0KKyAgLy8tLS0tLS0tLS0tDQorICAvLyBib2R5DQorDQorICBjb25zdCB1aW50MzJf
dCAqIGJsb2NrcyA9IChjb25zdCB1aW50MzJfdCAqKShkYXRhICsgbmJsb2NrcyoxNik7DQorDQor
ICBmb3IoaW50IGkgPSAtbmJsb2NrczsgaTsgaSsrKQ0KKyAgew0KKyAgICB1aW50MzJfdCBrMSA9
IGdldGJsb2NrKGJsb2NrcyxpKjQrMCk7DQorICAgIHVpbnQzMl90IGsyID0gZ2V0YmxvY2soYmxv
Y2tzLGkqNCsxKTsNCisgICAgdWludDMyX3QgazMgPSBnZXRibG9jayhibG9ja3MsaSo0KzIpOw0K
KyAgICB1aW50MzJfdCBrNCA9IGdldGJsb2NrKGJsb2NrcyxpKjQrMyk7DQorDQorICAgIGsxICo9
IGMxOyBrMSAgPSBST1RMMzIoazEsMTUpOyBrMSAqPSBjMjsgaDEgXj0gazE7DQorDQorICAgIGgx
ID0gUk9UTDMyKGgxLDE5KTsgaDEgKz0gaDI7IGgxID0gaDEqNSsweDU2MWNjZDFiOw0KKw0KKyAg
ICBrMiAqPSBjMjsgazIgID0gUk9UTDMyKGsyLDE2KTsgazIgKj0gYzM7IGgyIF49IGsyOw0KKw0K
KyAgICBoMiA9IFJPVEwzMihoMiwxNyk7IGgyICs9IGgzOyBoMiA9IGgyKjUrMHgwYmNhYTc0NzsN
CisNCisgICAgazMgKj0gYzM7IGszICA9IFJPVEwzMihrMywxNyk7IGszICo9IGM0OyBoMyBePSBr
MzsNCisNCisgICAgaDMgPSBST1RMMzIoaDMsMTUpOyBoMyArPSBoNDsgaDMgPSBoMyo1KzB4OTZj
ZDFjMzU7DQorDQorICAgIGs0ICo9IGM0OyBrNCAgPSBST1RMMzIoazQsMTgpOyBrNCAqPSBjMTsg
aDQgXj0gazQ7DQorDQorICAgIGg0ID0gUk9UTDMyKGg0LDEzKTsgaDQgKz0gaDE7IGg0ID0gaDQq
NSsweDMyYWMzYjE3Ow0KKyAgfQ0KKw0KKyAgLy8tLS0tLS0tLS0tDQorICAvLyB0YWlsDQorDQor
ICBjb25zdCB1aW50OF90ICogdGFpbCA9IChjb25zdCB1aW50OF90KikoZGF0YSArIG5ibG9ja3Mq
MTYpOw0KKw0KKyAgdWludDMyX3QgazEgPSAwOw0KKyAgdWludDMyX3QgazIgPSAwOw0KKyAgdWlu
dDMyX3QgazMgPSAwOw0KKyAgdWludDMyX3QgazQgPSAwOw0KKw0KKyAgc3dpdGNoKGxlbiAmIDE1
KQ0KKyAgew0KKyAgY2FzZSAxNTogazQgXj0gdGFpbFsxNF0gPDwgMTY7DQorICBjYXNlIDE0OiBr
NCBePSB0YWlsWzEzXSA8PCA4Ow0KKyAgY2FzZSAxMzogazQgXj0gdGFpbFsxMl0gPDwgMDsNCisg
ICAgICAgICAgIGs0ICo9IGM0OyBrNCAgPSBST1RMMzIoazQsMTgpOyBrNCAqPSBjMTsgaDQgXj0g
azQ7DQorDQorICBjYXNlIDEyOiBrMyBePSB0YWlsWzExXSA8PCAyNDsNCisgIGNhc2UgMTE6IGsz
IF49IHRhaWxbMTBdIDw8IDE2Ow0KKyAgY2FzZSAxMDogazMgXj0gdGFpbFsgOV0gPDwgODsNCisg
IGNhc2UgIDk6IGszIF49IHRhaWxbIDhdIDw8IDA7DQorICAgICAgICAgICBrMyAqPSBjMzsgazMg
ID0gUk9UTDMyKGszLDE3KTsgazMgKj0gYzQ7IGgzIF49IGszOw0KKw0KKyAgY2FzZSAgODogazIg
Xj0gdGFpbFsgN10gPDwgMjQ7DQorICBjYXNlICA3OiBrMiBePSB0YWlsWyA2XSA8PCAxNjsNCisg
IGNhc2UgIDY6IGsyIF49IHRhaWxbIDVdIDw8IDg7DQorICBjYXNlICA1OiBrMiBePSB0YWlsWyA0
XSA8PCAwOw0KKyAgICAgICAgICAgazIgKj0gYzI7IGsyICA9IFJPVEwzMihrMiwxNik7IGsyICo9
IGMzOyBoMiBePSBrMjsNCisNCisgIGNhc2UgIDQ6IGsxIF49IHRhaWxbIDNdIDw8IDI0Ow0KKyAg
Y2FzZSAgMzogazEgXj0gdGFpbFsgMl0gPDwgMTY7DQorICBjYXNlICAyOiBrMSBePSB0YWlsWyAx
XSA8PCA4Ow0KKyAgY2FzZSAgMTogazEgXj0gdGFpbFsgMF0gPDwgMDsNCisgICAgICAgICAgIGsx
ICo9IGMxOyBrMSAgPSBST1RMMzIoazEsMTUpOyBrMSAqPSBjMjsgaDEgXj0gazE7DQorICB9Ow0K
Kw0KKyAgLy8tLS0tLS0tLS0tDQorICAvLyBmaW5hbGl6YXRpb24NCisNCisgIGgxIF49IGxlbjsg
aDIgXj0gbGVuOyBoMyBePSBsZW47IGg0IF49IGxlbjsNCisNCisgIGgxICs9IGgyOyBoMSArPSBo
MzsgaDEgKz0gaDQ7DQorICBoMiArPSBoMTsgaDMgKz0gaDE7IGg0ICs9IGgxOw0KKw0KKyAgaDEg
PSBmbWl4KGgxKTsNCisgIGgyID0gZm1peChoMik7DQorICBoMyA9IGZtaXgoaDMpOw0KKyAgaDQg
PSBmbWl4KGg0KTsNCisNCisgIGgxICs9IGgyOyBoMSArPSBoMzsgaDEgKz0gaDQ7DQorICBoMiAr
PSBoMTsgaDMgKz0gaDE7IGg0ICs9IGgxOw0KKw0KKyAgKCh1aW50MzJfdCopb3V0KVswXSA9IGgx
Ow0KKyAgKCh1aW50MzJfdCopb3V0KVsxXSA9IGgyOw0KKyAgKCh1aW50MzJfdCopb3V0KVsyXSA9
IGgzOw0KKyAgKCh1aW50MzJfdCopb3V0KVszXSA9IGg0Ow0KK30NCisNCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQorDQordm9pZCBNdXJtdXJIYXNoM194NjRfMTI4ICggY29uc3Qgdm9pZCAqIGtl
eSwgY29uc3QgaW50IGxlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
MzJfdCBzZWVkLCB2b2lkICogb3V0ICkNCit7DQorICBjb25zdCB1aW50OF90ICogZGF0YSA9IChj
b25zdCB1aW50OF90KilrZXk7DQorICBjb25zdCBpbnQgbmJsb2NrcyA9IGxlbiAvIDE2Ow0KKw0K
KyAgdWludDY0X3QgaDEgPSBzZWVkOw0KKyAgdWludDY0X3QgaDIgPSBzZWVkOw0KKw0KKyAgY29u
c3QgdWludDY0X3QgYzEgPSBCSUdfQ09OU1RBTlQoMHg4N2MzN2I5MTExNDI1M2Q1KTsNCisgIGNv
bnN0IHVpbnQ2NF90IGMyID0gQklHX0NPTlNUQU5UKDB4NGNmNWFkNDMyNzQ1OTM3Zik7DQorDQor
ICAvLy0tLS0tLS0tLS0NCisgIC8vIGJvZHkNCisNCisgIGNvbnN0IHVpbnQ2NF90ICogYmxvY2tz
ID0gKGNvbnN0IHVpbnQ2NF90ICopKGRhdGEpOw0KKw0KKyAgZm9yKGludCBpID0gMDsgaSA8IG5i
bG9ja3M7IGkrKykNCisgIHsNCisgICAgdWludDY0X3QgazEgPSBnZXRibG9jayhibG9ja3MsaSoy
KzApOw0KKyAgICB1aW50NjRfdCBrMiA9IGdldGJsb2NrKGJsb2NrcyxpKjIrMSk7DQorDQorICAg
IGsxICo9IGMxOyBrMSAgPSBST1RMNjQoazEsMzEpOyBrMSAqPSBjMjsgaDEgXj0gazE7DQorDQor
ICAgIGgxID0gUk9UTDY0KGgxLDI3KTsgaDEgKz0gaDI7IGgxID0gaDEqNSsweDUyZGNlNzI5Ow0K
Kw0KKyAgICBrMiAqPSBjMjsgazIgID0gUk9UTDY0KGsyLDMzKTsgazIgKj0gYzE7IGgyIF49IGsy
Ow0KKw0KKyAgICBoMiA9IFJPVEw2NChoMiwzMSk7IGgyICs9IGgxOyBoMiA9IGgyKjUrMHgzODQ5
NWFiNTsNCisgIH0NCisNCisgIC8vLS0tLS0tLS0tLQ0KKyAgLy8gdGFpbA0KKw0KKyAgY29uc3Qg
dWludDhfdCAqIHRhaWwgPSAoY29uc3QgdWludDhfdCopKGRhdGEgKyBuYmxvY2tzKjE2KTsNCisN
CisgIHVpbnQ2NF90IGsxID0gMDsNCisgIHVpbnQ2NF90IGsyID0gMDsNCisNCisgIHN3aXRjaChs
ZW4gJiAxNSkNCisgIHsNCisgIGNhc2UgMTU6IGsyIF49IHVpbnQ2NF90KHRhaWxbMTRdKSA8PCA0
ODsNCisgIGNhc2UgMTQ6IGsyIF49IHVpbnQ2NF90KHRhaWxbMTNdKSA8PCA0MDsNCisgIGNhc2Ug
MTM6IGsyIF49IHVpbnQ2NF90KHRhaWxbMTJdKSA8PCAzMjsNCisgIGNhc2UgMTI6IGsyIF49IHVp
bnQ2NF90KHRhaWxbMTFdKSA8PCAyNDsNCisgIGNhc2UgMTE6IGsyIF49IHVpbnQ2NF90KHRhaWxb
MTBdKSA8PCAxNjsNCisgIGNhc2UgMTA6IGsyIF49IHVpbnQ2NF90KHRhaWxbIDldKSA8PCA4Ow0K
KyAgY2FzZSAgOTogazIgXj0gdWludDY0X3QodGFpbFsgOF0pIDw8IDA7DQorICAgICAgICAgICBr
MiAqPSBjMjsgazIgID0gUk9UTDY0KGsyLDMzKTsgazIgKj0gYzE7IGgyIF49IGsyOw0KKw0KKyAg
Y2FzZSAgODogazEgXj0gdWludDY0X3QodGFpbFsgN10pIDw8IDU2Ow0KKyAgY2FzZSAgNzogazEg
Xj0gdWludDY0X3QodGFpbFsgNl0pIDw8IDQ4Ow0KKyAgY2FzZSAgNjogazEgXj0gdWludDY0X3Qo
dGFpbFsgNV0pIDw8IDQwOw0KKyAgY2FzZSAgNTogazEgXj0gdWludDY0X3QodGFpbFsgNF0pIDw8
IDMyOw0KKyAgY2FzZSAgNDogazEgXj0gdWludDY0X3QodGFpbFsgM10pIDw8IDI0Ow0KKyAgY2Fz
ZSAgMzogazEgXj0gdWludDY0X3QodGFpbFsgMl0pIDw8IDE2Ow0KKyAgY2FzZSAgMjogazEgXj0g
dWludDY0X3QodGFpbFsgMV0pIDw8IDg7DQorICBjYXNlICAxOiBrMSBePSB1aW50NjRfdCh0YWls
WyAwXSkgPDwgMDsNCisgICAgICAgICAgIGsxICo9IGMxOyBrMSAgPSBST1RMNjQoazEsMzEpOyBr
MSAqPSBjMjsgaDEgXj0gazE7DQorICB9Ow0KKw0KKyAgLy8tLS0tLS0tLS0tDQorICAvLyBmaW5h
bGl6YXRpb24NCisNCisgIGgxIF49IGxlbjsgaDIgXj0gbGVuOw0KKw0KKyAgaDEgKz0gaDI7DQor
ICBoMiArPSBoMTsNCisNCisgIGgxID0gZm1peChoMSk7DQorICBoMiA9IGZtaXgoaDIpOw0KKw0K
KyAgaDEgKz0gaDI7DQorICBoMiArPSBoMTsNCisNCisgICgodWludDY0X3QqKW91dClbMF0gPSBo
MTsNCisgICgodWludDY0X3QqKW91dClbMV0gPSBoMjsNCit9DQorDQorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9t
dXJtdXJoYXNoL011cm11ckhhc2gzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNo
L011cm11ckhhc2gzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCisvLyBNdXJtdXJIYXNoMyB3YXMgd3JpdHRlbiBieSBBdXN0aW4gQXBwbGVi
eSwgYW5kIGlzIHBsYWNlZCBpbiB0aGUgcHVibGljDQorLy8gZG9tYWluLiBUaGUgYXV0aG9yIGhl
cmVieSBkaXNjbGFpbXMgY29weXJpZ2h0IHRvIHRoaXMgc291cmNlIGNvZGUuDQorDQorI2lmbmRl
ZiBfTVVSTVVSSEFTSDNfSF8NCisjZGVmaW5lIF9NVVJNVVJIQVNIM19IXw0KKw0KKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCisvLyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG1hY3Jv
cw0KKw0KKy8vIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvDQorDQorI2lmIGRlZmluZWQoX01TQ19W
RVIpDQorDQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7DQordHlwZWRlZiB1bnNpZ25l
ZCBsb25nIHVpbnQzMl90Ow0KK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50NjRfdDsNCisN
CisvLyBPdGhlciBjb21waWxlcnMNCisNCisjZWxzZQkvLyBkZWZpbmVkKF9NU0NfVkVSKQ0KKw0K
KyNpbmNsdWRlIDxzdGRpbnQuaD4NCisNCisjZW5kaWYgLy8gIWRlZmluZWQoX01TQ19WRVIpDQor
DQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK3ZvaWQgTXVybXVySGFzaDNfeDg2XzMyICAo
IGNvbnN0IHZvaWQgKiBrZXksIGludCBsZW4sIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQgKTsN
CisNCit2b2lkIE11cm11ckhhc2gzX3g4Nl8xMjggKCBjb25zdCB2b2lkICoga2V5LCBpbnQgbGVu
LCB1aW50MzJfdCBzZWVkLCB2b2lkICogb3V0ICk7DQorDQordm9pZCBNdXJtdXJIYXNoM194NjRf
MTI4ICggY29uc3Qgdm9pZCAqIGtleSwgaW50IGxlbiwgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91
dCApOw0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisjZW5kaWYgLy8gX01VUk1VUkhB
U0gzX0hfClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMTUzMDA4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTMtMDctMjIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgQU5HTEUgdG8gbGF0ZXN0IGdpdCBjb21t
aXQgKDA0NzM3M2FhM2ViNDA4YmU2MmJlNTJhZGU4NDBmYTVmMTFlNzIzMzcpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NTUwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDog
UmVuYW1lZCBEZXRlY3RSZWN1cnNpb24gdG8gRGV0ZWN0Q2FsbERlcHRoIGFuZCBhZGRlZCBVbmlm
b3JtLmNwcC4KKwogMjAxMy0wNy0yMiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRG8gbm90IGFsbG9jYXRlIDIgQXRvbWljU3RyaW5nIGp1c3QgdG8g
ZG8gYSBjb21wYXJpc29uIGluIEhUTUxBbmNob3JFbGVtZW50OjpzZXRSZWwoKQpJbmRleDogU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yODc5LDggKzI4NzksOCBAQCBpZiAoV1RGX1VT
RV8zRF9HUkFQSElDUykKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBp
bGVyL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuY3BwCiAgICAgICAgICR7VEhJUkRQ
QVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRw
dXQuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9kZXBn
cmFwaC9EZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZS5jcHAKKyAgICAgICAgJHtUSElSRFBBUlRZX0RJ
Un0vQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdENhbGxEZXB0aC5jcHAKICAgICAgICAgJHtUSElS
RFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL0RldGVjdERpc2NvbnRpbnVpdHkuY3BwCi0g
ICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9EZXRlY3RSZWN1cnNp
b24uY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9Gb3JM
b29wVW5yb2xsLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGls
ZXIvSW5mb1NpbmsuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21w
aWxlci9Jbml0aWFsaXplLmNwcApAQCAtMjkxOSw2ICsyOTE5LDcgQEAgaWYgKFdURl9VU0VfM0Rf
R1JBUEhJQ1MpCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9U
cmFuc2xhdG9yRVNTTC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2Nv
bXBpbGVyL1RyYW5zbGF0b3JHTFNMLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdM
RS9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuY3BwCisgICAgICAgICR7VEhJUkRQQVJUWV9E
SVJ9L0FOR0xFL3NyYy9jb21waWxlci9Vbmlmb3JtLmNwcAogICAgICAgICAke1RISVJEUEFSVFlf
RElSfS9BTkdMRS9zcmMvY29tcGlsZXIvVW5mb2xkU2hvcnRDaXJjdWl0LmNwcAogICAgICAgICAk
e1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdXRpbC5jcHAKICAgICAgICAgJHtU
SElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL1ZhbGlkYXRlTGltaXRhdGlvbnMuY3Bw
Cg==
</data>
<flag name="review"
          id="229128"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="229138"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>